[seam-commits] Seam SVN: r11686 - in branches/enterprise/JBPAPP_4_3_CP07/doc: Seam1_Reference_Guide and 45 other directories.

seam-commits at lists.jboss.org seam-commits at lists.jboss.org
Thu Nov 26 21:06:12 EST 2009


Author: laubai
Date: 2009-11-26 21:05:47 -0500 (Thu, 26 Nov 2009)
New Revision: 11686

Added:
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/Makefile
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Annotations.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Book_Info.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Cache.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Components.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Concepts.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Configuration.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Controls.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Conversations.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Drools.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Elenhancements.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Events.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Framework.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Gettingstarted.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/I18n.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Itext.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Jbpm.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Jms.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Mail.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Persistence.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Remoting.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Security.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Spring.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Testing.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Text.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Tools.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Tutorial.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Validation.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Xml.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Annotations.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Book_Info.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Cache.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Components.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Concepts.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Configuration.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Controls.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Conversations.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Drools.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Elenhancements.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Events.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Framework.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Gettingstarted.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/I18n.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Itext.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Jbpm.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Jms.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Mail.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Persistence.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Remoting.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Security.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Spring.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Testing.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Text.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Tools.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Tutorial.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Validation.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Xml.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Annotations.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Book_Info.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Cache.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Components.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Concepts.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Configuration.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Controls.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Conversations.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Drools.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Elenhancements.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Events.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Framework.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Gettingstarted.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/I18n.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Itext.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Jbpm.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Jms.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Mail.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Persistence.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Remoting.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Seam_Reference_Guide.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Security.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Spring.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Testing.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Text.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Tools.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Tutorial.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Validation.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Xml.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Annotations.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Author_Group.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Book_Info.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Cache.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Components.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Concepts.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Configuration.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Controls.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Conversations.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Drools.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Elenhancements.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Events.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Feedback.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Framework.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Gettingstarted.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/I18n.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Itext.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Jbpm.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Jms.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Mail.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Persistence.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Remoting.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Revision_History.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Seam_Reference_Guide_CP07.ent
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Seam_Reference_Guide_CP07.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Security.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Spring.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Testing.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Text.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Tools.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Tutorial.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Validation.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Xml.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/architecture.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/blog.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/booking.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/bpmd.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/bpmpfv.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/breadcrumbs.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/codegendropdown.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/codegenmaintab.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/codegenselectseam.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/consolecfgwizard.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/consoleoutline-before-reveng.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/controls-seamtext.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/controls-selectdate.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/controls-selectdatecss.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/debug.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/dvdsearch.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/dvdtasks.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/e-ejb3.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/ee5.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/hibernate-ee.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/hibernate-mc.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/hibernatecfgwizard.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/icon.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/issues.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/layoutForm-example.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/list.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/messages.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/numberguess-pageflow.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/numberguess.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/plugin-jbpm-numguess.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/plugin-jbpm-todo.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/plugin-testng.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/register.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/registration.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/switcher.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/testng.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/todo-process.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/todo.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Annotations.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Book_Info.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Cache.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Components.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Concepts.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Configuration.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Controls.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Conversations.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Drools.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Elenhancements.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Events.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Framework.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Gettingstarted.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/I18n.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Itext.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Jbpm.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Jms.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Mail.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Persistence.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Remoting.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Seam_Reference_Guide.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Security.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Spring.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Testing.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Text.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Tools.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Tutorial.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Validation.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Xml.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Annotations.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Book_Info.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Cache.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Components.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Concepts.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Configuration.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Controls.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Conversations.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Drools.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Elenhancements.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Events.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Framework.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Gettingstarted.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/I18n.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Itext.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Jbpm.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Jms.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Mail.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Persistence.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Remoting.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Seam_Reference_Guide.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Security.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Spring.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Testing.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Text.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Tools.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Tutorial.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Validation.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Xml.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Annotations.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Book_Info.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Cache.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Components.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Concepts.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Configuration.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Controls.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Conversations.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Drools.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Elenhancements.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Events.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Framework.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Gettingstarted.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/I18n.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Itext.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Jbpm.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Jms.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Mail.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Persistence.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Remoting.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Security.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Spring.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Testing.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Text.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Tools.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Tutorial.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Validation.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Xml.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Annotations.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Book_Info.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Cache.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Components.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Concepts.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Configuration.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Controls.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Conversations.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Drools.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Elenhancements.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Events.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Framework.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Gettingstarted.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/I18n.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Itext.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Jbpm.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Jms.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Mail.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Persistence.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Remoting.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Security.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Spring.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Testing.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Text.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Tools.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Tutorial.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Validation.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Xml.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Annotations.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Book_Info.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Cache.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Components.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Concepts.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Configuration.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Controls.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Conversations.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Drools.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Elenhancements.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Events.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Framework.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Gettingstarted.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/I18n.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Itext.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Jbpm.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Jms.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Mail.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Persistence.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Remoting.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Security.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Spring.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Testing.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Text.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Tools.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Tutorial.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Validation.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Xml.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Annotations.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Author_Group.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Book_Info.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Cache.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Components.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Concepts.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Configuration.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Controls.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Conversations.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Drools.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Elenhancements.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Events.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Feedback.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Framework.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Gettingstarted.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/I18n.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Itext.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Jbpm.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Jms.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Mail.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Persistence.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Remoting.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Seam_Reference_Guide.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Security.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Spring.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Testing.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Text.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Tools.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Tutorial.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Validation.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Xml.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Annotations.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Book_Info.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Cache.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Components.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Concepts.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Configuration.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Controls.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Conversations.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Drools.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Elenhancements.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Events.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Framework.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Gettingstarted.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/I18n.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Itext.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Jbpm.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Jms.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Mail.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Persistence.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Remoting.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Security.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Spring.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Testing.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Text.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Tools.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Tutorial.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Validation.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Xml.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Annotations.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Book_Info.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Cache.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Components.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Concepts.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Configuration.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Controls.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Conversations.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Drools.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Elenhancements.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Events.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Framework.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Gettingstarted.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/I18n.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Itext.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Jbpm.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Jms.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Mail.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Persistence.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Remoting.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Security.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Spring.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Testing.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Text.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Tools.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Tutorial.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Validation.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Xml.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Annotations.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Book_Info.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Cache.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Components.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Concepts.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Configuration.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Controls.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Conversations.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Drools.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Elenhancements.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Events.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Framework.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Gettingstarted.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/I18n.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Itext.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Jbpm.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Jms.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Mail.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Persistence.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Remoting.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Security.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Spring.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Testing.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Text.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Tools.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Tutorial.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Validation.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Xml.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Annotations.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Book_Info.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Cache.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Components.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Concepts.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Configuration.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Controls.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Conversations.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Drools.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Elenhancements.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Events.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Framework.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Gettingstarted.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/I18n.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Itext.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Jbpm.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Jms.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Mail.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Persistence.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Remoting.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Security.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Spring.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Testing.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Text.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Tools.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Tutorial.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Validation.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Xml.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Annotations.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Book_Info.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Cache.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Components.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Concepts.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Configuration.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Controls.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Conversations.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Drools.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Elenhancements.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Events.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Framework.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Gettingstarted.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/I18n.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Itext.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Jbpm.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Jms.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Mail.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Persistence.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Remoting.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Security.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Spring.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Testing.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Text.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Tools.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Tutorial.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Validation.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Xml.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Annotations.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Book_Info.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Cache.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Components.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Concepts.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Configuration.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Controls.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Conversations.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Drools.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Elenhancements.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Events.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Framework.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Gettingstarted.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/I18n.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Itext.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Jbpm.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Jms.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Mail.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Persistence.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Remoting.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Security.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Spring.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Testing.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Text.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Tools.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Tutorial.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Validation.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Xml.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Annotations.pot
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Author_Group.pot
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Book_Info.pot
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Cache.pot
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Components.pot
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Concepts.pot
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Configuration.pot
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Controls.pot
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Conversations.pot
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Drools.pot
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Elenhancements.pot
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Events.pot
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Feedback.pot
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Framework.pot
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Gettingstarted.pot
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/I18n.pot
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Itext.pot
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Jbpm.pot
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Jms.pot
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Mail.pot
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Persistence.pot
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Remoting.pot
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Revision_History.pot
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Seam_Reference_Guide_CP06.pot
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Security.pot
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Spring.pot
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Testing.pot
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Text.pot
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Tools.pot
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Tutorial.pot
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Validation.pot
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Xml.pot
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Annotations.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Author_Group.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Book_Info.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Cache.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Components.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Concepts.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Configuration.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Controls.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Conversations.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Drools.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Elenhancements.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Events.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Feedback.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Framework.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Gettingstarted.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/I18n.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Itext.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Jbpm.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Jms.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Mail.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Persistence.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Remoting.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Seam_Reference_Guide.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Security.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Spring.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Testing.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Text.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Tools.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Tutorial.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Validation.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Xml.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/publican.cfg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Annotations.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Book_Info.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Cache.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Components.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Concepts.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Configuration.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Controls.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Conversations.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Drools.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Elenhancements.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Events.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Framework.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Gettingstarted.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/I18n.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Itext.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Jbpm.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Jms.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Mail.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Persistence.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Remoting.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Security.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Spring.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Testing.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Text.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Tools.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Tutorial.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Validation.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Xml.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Annotations.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Book_Info.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Cache.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Components.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Concepts.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Configuration.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Controls.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Conversations.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Drools.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Elenhancements.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Events.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Framework.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Gettingstarted.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/I18n.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Itext.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Jbpm.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Jms.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Mail.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Persistence.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Remoting.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Security.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Spring.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Testing.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Text.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Tools.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Tutorial.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Validation.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Xml.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Annotations.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Book_Info.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Cache.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Components.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Concepts.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Configuration.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Controls.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Conversations.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Drools.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Elenhancements.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Events.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Framework.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Gettingstarted.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/I18n.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Itext.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Jbpm.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Jms.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Mail.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Persistence.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Remoting.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Security.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Spring.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Testing.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Text.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Tools.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Tutorial.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Validation.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Xml.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Annotations.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Book_Info.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Cache.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Components.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Concepts.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Configuration.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Controls.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Conversations.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Drools.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Elenhancements.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Events.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Framework.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Gettingstarted.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/I18n.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Itext.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Jbpm.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Jms.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Mail.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Persistence.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Remoting.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Security.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Spring.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Testing.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Text.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Tools.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Tutorial.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Validation.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Xml.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/css/
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/css/common.css
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/css/default.css
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/css/overrides.css
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/1.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/1.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/10.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/10.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/11.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/11.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/12.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/12.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/13.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/13.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/14.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/14.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/15.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/15.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/16.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/16.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/17.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/17.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/18.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/18.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/19.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/19.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/2.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/2.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/20.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/20.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/21.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/21.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/22.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/22.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/23.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/23.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/3.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/3.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/4.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/4.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/5.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/5.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/6.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/6.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/7.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/7.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/8.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/8.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/9.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/9.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/bkgrnd_greydots.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/bullet_arrowblue.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/documentation.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/dot.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/dot2.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/h1-bg.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/image_left.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/image_right.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/important.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/important.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/jboss-logo.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/note.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/note.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/redhat-logo.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/rhlogo.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/shade.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/shine.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/stock-go-back.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/stock-go-forward.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/stock-go-up.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/stock-home.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/title_logo.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/title_logo.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/warning.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/warning.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/watermark-draft.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/architecture.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/blog.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/booking.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/bpmd.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/bpmpfv.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/breadcrumbs.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/codegendropdown.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/codegenmaintab.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/codegenselectseam.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/consolecfgwizard.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/consoleoutline-before-reveng.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/controls-seamtext.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/controls-selectdate.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/controls-selectdatecss.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/debug.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/dvdsearch.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/dvdtasks.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/e-ejb3.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/ee5.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/hibernate-ee.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/hibernate-mc.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/hibernatecfgwizard.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/icon.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/issues.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/layoutForm-example.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/list.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/messages.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/numberguess-pageflow.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/numberguess.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/plugin-jbpm-numguess.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/plugin-jbpm-todo.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/plugin-testng.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/register.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/registration.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/switcher.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/testng.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/todo-process.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/todo.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/index.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/css/
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/css/common.css
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/css/default.css
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/css/overrides.css
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/1.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/1.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/10.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/10.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/11.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/11.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/12.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/12.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/13.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/13.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/14.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/14.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/15.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/15.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/16.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/16.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/17.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/17.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/18.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/18.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/19.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/19.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/2.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/2.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/20.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/20.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/21.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/21.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/22.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/22.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/23.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/23.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/3.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/3.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/4.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/4.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/5.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/5.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/6.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/6.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/7.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/7.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/8.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/8.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/9.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/9.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/bkgrnd_greydots.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/bullet_arrowblue.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/documentation.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/dot.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/dot2.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/h1-bg.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/image_left.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/image_right.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/important.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/important.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/jboss-logo.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/note.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/note.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/redhat-logo.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/rhlogo.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/shade.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/shine.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/stock-go-back.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/stock-go-forward.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/stock-go-up.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/stock-home.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/title_logo.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/title_logo.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/warning.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/warning.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/watermark-draft.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Feedback.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-A_RESTful_Seam_application_the_Blog_example-Bookmarkable_search_results_page.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-A_RESTful_Seam_application_the_Blog_example-Using_push_style_MVC_in_a_RESTful_application.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-Overview_of_the_booking_example.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-The_Seam_Debug_Page.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-The_Seam_UI_control_library.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-Understanding_Seam_conversations.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Asynchronicity_and_messaging-Messaging_in_Seam.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Asynchronicity_and_messaging.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Authentication-Advanced_Authentication_Features.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Authentication-Handling_Security_Exceptions.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Authentication-Login_Redirection.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Authentication-Simplified_Configuration___Summary.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Authentication-Writing_a_login_form.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Authentication-Writing_an_authentication_method.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Authorization-Securing_Entities.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Authorization-Securing_components.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Authorization-Securing_pages.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Authorization-Security_in_the_user_interface.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Basic_Text_Elements-panchor.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Basic_Text_Elements-pfont.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Basic_Text_Elements-pimage.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Basic_Text_Elements-pnewPage.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Basic_Text_Elements-ptext.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-CRUD_application_generator-Creating_a_Hibernate_Console_configuration.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-CRUD_application_generator-Reverse_engineering_and_code_generation.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Chapters_and_Sections-ptitle.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Clickable_lists_in_Seam_the_messages_example-How_it_works.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Collections-Maps.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_SFSB_and_Session_Timeouts_in_JBoss_AS.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_J2EE.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_EE_5.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_SE_with_the_JBoss_Microcontainer.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_a_Portal.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_jBPM_in_Seam.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_components-Configurable_property_types.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_components-Configuring_components_via_components.xml.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_components-Fine_grained_configuration_files.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_components-Using_XML_Namespaces.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_components.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_in_J2EE-Boostrapping_JPA_in_Seam.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_in_J2EE-Packaging.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container-Configuring_a_datasource_with_the_Embeddable_EJB3_container.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container-Packaging.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Microcontainer-Packaging.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Controlling_what_data_is_returned-Combining_Constraints.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Controlling_what_data_is_returned-Constraining_Maps_and_Collections.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Controlling_what_data_is_returned-Constraining_objects_of_a_specific_type.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Conversations_and_workspace_management-Conversational_components_and_JSF_component_bindings.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Conversations_and_workspace_management-Nested_conversations.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Conversations_and_workspace_management-Starting_conversations_with_GET_requests.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Conversations_and_workspace_management-Success_messages.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Conversations_and_workspace_management-Using_an_explicit_conversation_id.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Conversations_and_workspace_management-Using_slink_and_sbutton.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Conversations_and_workspace_management-Workspace_management.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Conversations_and_workspace_management.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Document_Constants-Alignment_Values.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Email-Configuration.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Email-Receiving_emails.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Email-Tags.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Email.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Events_interceptors_and_exception_handling-Managing_exceptions.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Events_interceptors_and_exception_handling-Seam_interceptors.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Events_interceptors_and_exception_handling.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Expression_language_enhancements-Limitations.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Expression_language_enhancements-Usage.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Expression_language_enhancements.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Headers_and_Footers-ppageNumber.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Implementing_a_Captcha_Test-Adding_a_Captcha_to_a_page.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Internationalization_and_themes-Labels.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Internationalization_and_themes-Persisting_locale_and_theme_preferences_via_cookies.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Internationalization_and_themes-Themes.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Internationalization_and_themes-Timezones.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Internationalization_and_themes.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Introduction_to_JBoss_Seam.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-JMS_Messaging-Subscribing_to_a_JMS_Topic.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-JMS_Messaging-Tuning_the_Polling_Process.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-JMS_Messaging-Unsubscribing_from_a_Topic.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-JSF_form_validation_in_Seam.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Labels-Displaying_labels.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Labels-Faces_messages.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Limitations-Calling_a_MethodExpression_from_Java_code.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Lists-plistItem.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Managing_exceptions-Enabling_Seam_exception_handling.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Managing_exceptions-Using_XML_for_exception_handling.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Managing_exceptions-Using_annotations_for_exception_handling.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Messaging_in_Seam-Receiving_messages_in_the_client.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Messaging_in_Seam-Receiving_messages_using_a_message_driven_bean.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Messaging_in_Seam-Sending_messages.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Pageflows_and_business_processes-Business_process_management_in_Seam.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Pageflows_and_business_processes-Using_jPDL_business_process_definitions.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Pageflows_and_business_processes-Using_jPDL_pageflows.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Pageflows_and_business_processes.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Remoting-Batch_Requests.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Remoting-Client_Interfaces.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Remoting-Controlling_what_data_is_returned.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Remoting-Debugging.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Remoting-JMS_Messaging.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Remoting-The_Context.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Remoting-The_Loading_Message.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Remoting-The_Seam_object.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Remoting-Working_with_Data_types.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Remoting.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Reverse_engineering_and_code_generation-Exporters.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Reverse_engineering_and_code_generation-Generating_and_using_the_code.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam.Component-Seam.Component.getComponentName.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam.Component-Seam.Component.getInstance.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam.Remoting-Seam.Remoting.getTypeName.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_JSF_controls.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_Text-Entering_HTML.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_Text-Entering_code_and_text_with_special_characters.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_Text-Links.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_Text.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_Tutorial-A_RESTful_Seam_application_the_Blog_example.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_Tutorial-A_complete_Seam_application_the_Hotel_Booking_example.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_Tutorial-A_complete_application_featuring_Seam_and_jBPM_the_DVD_Store_example.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_Tutorial-A_complete_application_featuring_Seam_workspace_management_the_Issue_Tracker_example.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_Tutorial-An_example_of_Seam_with_Hibernate_the_Hibernate_Booking_example.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_Tutorial-Clickable_lists_in_Seam_the_messages_example.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_Tutorial-Seam_and_jBPM_the_todo_list_example.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_Tutorial-Seam_pageflow_the_numberguess_example.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_Tutorial-Your_first_Seam_application_the_registration_example.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_Tutorial.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Seam_managed_persistence_contexts.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Seam_managed_transactions.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_EL_in_EJB_QLHQL.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_Hibernate_filters.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_the_JPA_delegate.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_annotations-Annotations_for_Seam_Remoting.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_annotations-Annotations_for_Seam_interceptors.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_annotations-Annotations_for_asynchronicity.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_annotations-Annotations_for_bijection.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_annotations-Annotations_for_component_lifecycle_methods.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_annotations-Annotations_for_context_demarcation.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_annotations-Annotations_for_exceptions.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_annotations-Annotations_for_packaging.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_annotations-Annotations_for_transaction_demarcation.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_annotations-Annotations_for_use_with_JSF_dataTable.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_annotations-Annotations_for_validation.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_annotations-Meta_annotations_for_databinding.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_annotations.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_components-Built_in_components.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_components-Component_names.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_components-Components_with_multiple_roles.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_components-Defining_the_component_scope.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_components-Entity_beans.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_components-Interception.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_components-JavaBeans.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_components-Message_driven_beans.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_components-Stateful_session_beans.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_managed_persistence_contexts-Seam_managed_persistence_contexts_and_atomic_conversations.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_managed_persistence_contexts-Using_a_Seam_managed_Hibernate_session.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_tools-CRUD_application_generator.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_tools.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Securing_Entities-Entity_security_with_Hibernate.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Securing_components-Inline_restrictions.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Security-Authentication.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Security-Authorization.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Security-Error_Messages.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Security-Implementing_a_Captcha_Test.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Security-Requirements.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Security-SSL_Security.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Security-Writing_Security_Rules.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Security.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Spring_Framework_integration-Injecting_Spring_beans_into_Seam_components.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Spring_Framework_integration-Making_a_Spring_bean_into_a_Seam_component.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Spring_Framework_integration-Seam_scoped_Spring_beans.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Spring_Framework_integration-Spring_Application_Context_as_a_Seam_Component.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Spring_Framework_integration.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Tables-pcell.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Testing_Seam_applications-Integration_testing_Seam_applications.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Testing_Seam_applications.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-The_Loading_Message-A_Custom_Loading_Indicator.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-The_Loading_Message-Hiding_the_loading_message.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-The_Seam_Application_Framework-Controller_objects.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-The_Seam_Application_Framework-Home_objects.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-The_Seam_Application_Framework-Query_objects.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-The_Seam_Application_Framework.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-The_Seam_object-Seam.Component.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-The_Seam_object-Seam.Remoting.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-The_contextual_component_model-Bijection.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-The_contextual_component_model-Conditional_installation.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-The_contextual_component_model-Factory_and_manager_components.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-The_contextual_component_model-Lifecycle_methods.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-The_contextual_component_model-Logging.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-The_contextual_component_model-Seam_components.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-The_contextual_component_model-The_Mutable_interface_and_ReadOnly.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-The_contextual_component_model.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Using_jPDL_business_process_definitions-Initializing_actor_ids.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Using_jPDL_business_process_definitions-Initiating_a_business_process.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Using_jPDL_business_process_definitions-Performing_a_task.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Using_jPDL_business_process_definitions-Task_assignment.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Using_jPDL_business_process_definitions-Task_lists.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Using_jPDL_pageflows-Controlling_the_flow.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Using_jPDL_pageflows-Ending_the_flow.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Using_jPDL_pageflows-Page_nodes_and_transitions.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Using_jPDL_pageflows-Starting_pageflows.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Working_with_Data_types-Collections.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Working_with_Data_types-Dates_and_Times.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Working_with_Data_types-Enums.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Working_with_Data_types-JavaBeans.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Workspace_management-Breadcrumbs.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Workspace_management-The_conversation_list.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Workspace_management-The_conversation_switcher.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Workspace_management-Workspace_management_and_jPDL_pageflow.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Writing_Security_Rules-Configuring_a_rules_file.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Writing_Security_Rules-Creating_a_security_rules_file.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Your_first_Seam_application_the_registration_example-How_it_works.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-iText_PDF_generation-Basic_Text_Elements.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-iText_PDF_generation-Chapters_and_Sections.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-iText_PDF_generation-Configuring_iText.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-iText_PDF_generation-Creating_a_document.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-iText_PDF_generation-Document_Constants.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-iText_PDF_generation-Headers_and_Footers.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-iText_PDF_generation-Lists.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-iText_PDF_generation-Tables.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-iText_PDF_generation-iText_links.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-iText_PDF_generation.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/appe-Publican-Revision_History.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/cache.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/ch11s02.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/ch11s03.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/ch18s02.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/ch23s02.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/ch23s03.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/ch23s04.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/ch23s05.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/ch23s06.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/ch23s07.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/ch23s09.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/ch23s10.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/ch23s11.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/components.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/components.mail.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/drools.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/architecture.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/blog.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/booking.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/bpmd.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/bpmpfv.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/breadcrumbs.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/codegendropdown.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/codegenmaintab.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/codegenselectseam.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/consolecfgwizard.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/consoleoutline-before-reveng.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/controls-seamtext.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/controls-selectdate.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/controls-selectdatecss.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/debug.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/dvdsearch.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/dvdtasks.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/e-ejb3.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/ee5.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/hibernate-ee.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/hibernate-mc.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/hibernatecfgwizard.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/icon.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/issues.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/layoutForm-example.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/list.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/messages.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/numberguess-pageflow.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/numberguess.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/plugin-jbpm-numguess.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/plugin-jbpm-todo.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/plugin-testng.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/register.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/registration.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/switcher.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/testng.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/todo-process.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/todo.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/index.html
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/pdf/
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/pdf/Seam_Reference_Guide_CP07.pdf
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Annotations.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Author_Group.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Book_Info.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Cache.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/Conventions.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/Feedback.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/Legal_Notice.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/css/
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/css/common.css
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/css/default.css
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/css/overrides.css
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/1.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/1.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/10.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/10.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/11.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/11.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/12.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/12.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/13.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/13.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/14.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/14.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/15.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/15.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/16.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/16.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/17.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/17.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/18.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/18.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/19.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/19.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/2.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/2.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/20.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/20.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/21.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/21.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/22.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/22.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/23.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/23.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/3.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/3.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/4.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/4.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/5.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/5.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/6.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/6.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/7.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/7.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/8.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/8.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/9.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/9.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/bkgrnd_greydots.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/bullet_arrowblue.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/documentation.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/dot.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/dot2.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/h1-bg.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/image_left.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/image_right.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/important.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/important.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/jboss-logo.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/note.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/note.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/redhat-logo.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/rhlogo.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/shade.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/shine.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/stock-go-back.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/stock-go-forward.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/stock-go-up.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/stock-home.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/title_logo.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/title_logo.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/warning.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/warning.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/watermark-draft.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Components.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Concepts.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Configuration.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Controls.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Conversations.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Drools.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Elenhancements.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Events.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Feedback.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Framework.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Gettingstarted.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/I18n.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Itext.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Jbpm.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Jms.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Mail.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Persistence.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Remoting.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Revision_History.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Seam_Reference_Guide_CP07.ent
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Seam_Reference_Guide_CP07.fo
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Seam_Reference_Guide_CP07.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Security.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Spring.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Testing.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Text.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Tools.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Tutorial.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Validation.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Xml.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/architecture.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/blog.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/booking.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/bpmd.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/bpmpfv.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/breadcrumbs.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/codegendropdown.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/codegenmaintab.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/codegenselectseam.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/consolecfgwizard.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/consoleoutline-before-reveng.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/controls-seamtext.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/controls-selectdate.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/controls-selectdatecss.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/debug.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/dvdsearch.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/dvdtasks.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/e-ejb3.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/ee5.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/hibernate-ee.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/hibernate-mc.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/hibernatecfgwizard.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/icon.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/issues.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/layoutForm-example.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/list.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/messages.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/numberguess-pageflow.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/numberguess.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/plugin-jbpm-numguess.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/plugin-jbpm-todo.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/plugin-testng.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/register.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/registration.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/switcher.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/testng.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/todo-process.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/todo.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Annotations.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Author_Group.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Book_Info.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Cache.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Components.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Concepts.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Configuration.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Controls.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Conversations.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Drools.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Elenhancements.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Events.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Feedback.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Framework.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Gettingstarted.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/I18n.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Itext.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Jbpm.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Jms.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Mail.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Persistence.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Remoting.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Revision_History.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Seam_Reference_Guide_CP07.ent
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Seam_Reference_Guide_CP07.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Security.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Spring.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Testing.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Text.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Tools.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Tutorial.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Validation.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Xml.xml
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/architecture.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/blog.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/booking.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/bpmd.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/bpmpfv.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/breadcrumbs.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/codegendropdown.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/codegenmaintab.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/codegenselectseam.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/consolecfgwizard.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/consoleoutline-before-reveng.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/controls-seamtext.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/controls-selectdate.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/controls-selectdatecss.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/debug.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/dvdsearch.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/dvdtasks.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/e-ejb3.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/ee5.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/hibernate-ee.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/hibernate-mc.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/hibernatecfgwizard.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/icon.svg
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/issues.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/layoutForm-example.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/list.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/messages.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/numberguess-pageflow.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/numberguess.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/plugin-jbpm-numguess.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/plugin-jbpm-todo.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/plugin-testng.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/register.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/registration.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/switcher.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/testng.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/todo-process.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/todo.png
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Annotations.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Book_Info.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Cache.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Components.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Concepts.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Configuration.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Controls.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Conversations.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Drools.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Elenhancements.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Events.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Framework.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Gettingstarted.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/I18n.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Itext.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Jbpm.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Jms.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Mail.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Persistence.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Remoting.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Seam_Reference_Guide.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Security.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Spring.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Testing.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Text.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Tools.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Tutorial.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Validation.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Xml.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Annotations.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Book_Info.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Cache.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Components.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Concepts.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Configuration.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Controls.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Conversations.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Drools.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Elenhancements.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Events.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Framework.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Gettingstarted.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/I18n.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Itext.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Jbpm.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Jms.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Mail.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Persistence.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Remoting.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Security.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Spring.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Testing.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Text.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Tools.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Tutorial.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Validation.po
   branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Xml.po
Log:
Added enterprise docs for EAP 4.3.7 Seam 1.2.

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/Makefile
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/Makefile	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/Makefile	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,11 @@
+#Makefile for Red Hat Documentation
+#Created by Jeff Fearn <jfearn at redhat.com>
+#Copyright Red Hat Inc. 2006
+
+XML_LANG	= en-US
+
+BRAND		= JBoss
+OTHER_LANGS	= de-DE es-ES fr-FR ja-JP pt-BR zh-CN
+
+COMMON_CONFIG  = /usr/share/publican
+include $(COMMON_CONFIG)/make/Makefile.common

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Annotations.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Annotations.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Annotations.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2030 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Annotations.xml:10
+#, no-c-format
+msgid "Seam annotations"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:11
+#, no-c-format
+msgid ""
+"When you write a Seam application, you'll use a lot of annotations. Seam "
+"lets you use annotations to achieve a declarative style of programming. Most "
+"of the annotations you'll use are defined by the EJB 3.0 specification. The "
+"annotations for data validation are defined by the Hibernate Validator "
+"package. Finally, Seam defines its own set of annotations, which we'll "
+"describe in this chapter."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:14
+#, no-c-format
+msgid ""
+"All of these annotations are defined in the package <literal>org.jboss.seam."
+"annotations</literal>."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:18
+#, no-c-format
+msgid "Annotations for component definition"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:19
+#, no-c-format
+msgid ""
+"The first group of annotations lets you define a Seam component. These "
+"annotations appear on the component class."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:24
+#, no-c-format
+msgid "@Name"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:26
+#, no-c-format
+msgid "@Name(\"componentName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:27
+#, no-c-format
+msgid ""
+"Defines the Seam component name for a class. This annotation is required for "
+"all Seam components."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:33
+#, no-c-format
+msgid "@Scope"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:35
+#, no-c-format
+msgid "@Scope(ScopeType.CONVERSATION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:36
+#, no-c-format
+msgid ""
+"Defines the default context of the component. The possible values are "
+"defined by the <literal>ScopeType</literal> enumeration: <literal>EVENT, "
+"PAGE, CONVERSATION, SESSION, BUSINESS_PROCESS, APPLICATION, STATELESS</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:39
+#, no-c-format
+msgid ""
+"When no scope is explicitly specified, the default depends upon the "
+"component type. For stateless session beans, the default is "
+"<literal>STATELESS</literal>. For entity beans and stateful session beans, "
+"the default is <literal>CONVERSATION</literal>. For JavaBeans, the default "
+"is <literal>EVENT</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:45
+#, no-c-format
+msgid "@Role"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:47
+#, no-c-format
+msgid "@Role(name=\"roleName\", scope=ScopeType.SESSION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:48
+#, no-c-format
+msgid ""
+"Allows a Seam component to be bound to multiple contexts variables. The "
+"<literal>@Name</literal>/<literal>@Scope</literal> annotations define a "
+"\"default role\". Each <literal>@Role</literal> annotation defines an "
+"additional role."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:53
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the context variable name."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:58
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; the context variable scope. When no scope "
+"is explicitly specified, the default depends upon the component type, as "
+"above."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:66
+#, no-c-format
+msgid "@Roles"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:68
+#, no-c-format
+msgid ""
+"@Roles({\n"
+"        @Role(name=\"user\", scope=ScopeType.CONVERSATION),\n"
+"        @Role(name=\"currentUser\", scope=ScopeType.SESSION)\n"
+"    })"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:69
+#, no-c-format
+msgid "Allows specification of multiple additional roles."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:75
+#, no-c-format
+msgid "@Intercept"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:77
+#, no-c-format
+msgid "@Intercept(InterceptionType.ALWAYS)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:78
+#, no-c-format
+msgid ""
+"Determines when Seam interceptors are active. The possible values are "
+"defined by the <literal>InterceptionType</literal> enumeration: "
+"<literal>ALWAYS, AFTER_RESTORE_VIEW, AFTER_UPDATE_MODEL_VALUES, "
+"INVOKE_APPLICATION, NEVER</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:81
+#, no-c-format
+msgid ""
+"When no interception type is explicitly specified, the default depends upon "
+"the component type. For entity beans, the default is <literal>NEVER</"
+"literal>. For session beans, message driven beans and JavaBeans, the default "
+"is <literal>ALWAYS</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:87
+#, no-c-format
+msgid "@JndiName"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:89
+#, no-c-format
+msgid "@JndiName(\"my/jndi/name\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:90
+#, no-c-format
+msgid ""
+"Specifies the JNDI name that Seam will use to look up the EJB component. If "
+"no JNDI name is explicitly specified, Seam will use the JNDI pattern "
+"specified by <literal>org.jboss.seam.core.init.jndiPattern</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:96
+#, no-c-format
+msgid "@Conversational"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:98
+#, no-c-format
+msgid "@Conversational(ifNotBegunOutcome=\"error\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:99
+#, no-c-format
+msgid ""
+"Specifies that a conversation scope component is conversational, meaning "
+"that no method of the component can be called unless a long-running "
+"conversation started by this component is active (unless the method would "
+"begin a new long-running conversation)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:105
+#, no-c-format
+msgid "<literal>@Startup</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:107
+#, no-c-format
+msgid "@Startup(depends={\"org.jboss.core.jndi\", \"org.jboss.core.jta\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:108
+#, no-c-format
+msgid ""
+"Specifies that an application scope component is started immediately at "
+"initialization time. This is mainly used for certain built-in components "
+"that bootstrap critical infrastructure such as JNDI, datasources, etc."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:111
+#, no-c-format
+msgid "<programlisting>@Startup</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:112
+#, no-c-format
+msgid ""
+"Specifies that a session scope component is started immediately at session "
+"creation time."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:117
+#, no-c-format
+msgid ""
+"<literal>depends</literal> &mdash; specifies that the named components must "
+"be started first, if they are installed."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:125
+#, no-c-format
+msgid "@Install"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:127
+#, no-c-format
+msgid "@Install(false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:128
+#, no-c-format
+msgid ""
+"Specifies whether or not a component should be installed by default. The "
+"lack of an @Install annotation indicates a component should be installed."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:131
+#, no-c-format
+msgid "@Install(dependencies=\"org.jboss.seam.core.jbpm\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:132
+#, no-c-format
+msgid ""
+"Specifies that a component should only be stalled if the components listed "
+"as dependencies are also installed."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:135
+#, no-c-format
+msgid "@Install(genericDependencies=ManagedQueueSender.class)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:136
+#, no-c-format
+msgid ""
+"Specifies that a component should only be installed if a component that is "
+"implemented by a certain class is installed. This is useful when the "
+"dependency doesn't have a single well-known name."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:139
+#, no-c-format
+msgid "@Install(classDependencies=\"org.hibernate.Session\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:140
+#, no-c-format
+msgid ""
+"Specifies that a component should only be installed if the named class is in "
+"the classpath."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:143
+#, no-c-format
+msgid "@Install(precedence=BUILT_IN)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:144
+#, no-c-format
+msgid ""
+"Specifies the precedence of the component. If multiple components with the "
+"same name exist, the one with the higher precedence will be installed. The "
+"defined precendence values are:"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:149
+#, no-c-format
+msgid ""
+"<literal>BUILT_IN</literal> &mdash; Precedence of all built-in Seam "
+"components"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:154
+#, no-c-format
+msgid ""
+"<literal>FRAMEWORK</literal> &mdash; Precedence to use for components of "
+"frameworks which extend Seam"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:159
+#, no-c-format
+msgid ""
+"<literal>APPLICATION</literal> &mdash; Predence of application components "
+"(the default precedence)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:164
+#, no-c-format
+msgid ""
+"<literal>DEPLOYMENT</literal> &mdash; Precedence to use for components which "
+"override application components in a particular deployment"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:172
+#, no-c-format
+msgid "@Synchronized"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:174
+#, no-c-format
+msgid "@Synchronized(timeout=1000)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:175
+#, no-c-format
+msgid ""
+"Specifies that a component is accessed concurrently by multiple clients, and "
+"that Seam should serialize requests. If a request is not able to obtain its "
+"lock on the component in the given timeout period, an exception will be "
+"raised."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:181
+#, no-c-format
+msgid "<literal>@ReadOnly</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:183
+#, no-c-format
+msgid "<programlisting>@ReadOnly</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:184
+#, no-c-format
+msgid ""
+"Specifies that a JavaBean component or component method does not require "
+"state replication at the end of the invocation."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:193
+#, no-c-format
+msgid "Annotations for bijection"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:194
+#, no-c-format
+msgid ""
+"The next two annotations control bijection. These attributes occur on "
+"component instance variables or property accessor methods."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:199
+#, no-c-format
+msgid "<literal>@In</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:201
+#, no-c-format
+msgid "<programlisting>@In</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:202
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. If the context "
+"variable is null, an exception will be thrown."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:205
+#, no-c-format
+msgid "@In(required=false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:206
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. The context variable "
+"may be null."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:209
+#, no-c-format
+msgid "@In(create=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:210
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. If the context "
+"variable is null, an instance of the component is instantiated by Seam."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:213
+#, no-c-format
+msgid "@In(value=\"contextVariableName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:214 Annotations.xml:259
+#, no-c-format
+msgid ""
+"Specifies the name of the context variable explicitly, instead of using the "
+"annotated instance variable name."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:217
+#, no-c-format
+msgid "@In(value=\"#{customer.addresses['shipping']}\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:218
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected by evaluating a JSF "
+"EL expression at the beginning of each component invocation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:223
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"Default to the name of the component attribute. Alternatively, specifies a "
+"JSF EL expression, surrounded by <literal>#{...}</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:228
+#, no-c-format
+msgid ""
+"<literal>create</literal> &mdash; specifies that Seam should instantiate the "
+"component with the same name as the context variable if the context variable "
+"is undefined (null) in all contexts. Default to false."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:233
+#, no-c-format
+msgid ""
+"<literal>required</literal> &mdash; specifies Seam should throw an exception "
+"if the context variable is undefined in all contexts."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:241
+#, no-c-format
+msgid "<literal>@Out</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:243
+#, no-c-format
+msgid "<programlisting>@Out</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:244
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is a Seam component is to be "
+"outjected to its context variable at the end of the invocation. If the "
+"attribute is null, an exception is thrown."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:247
+#, no-c-format
+msgid "@Out(required=false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:248
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is a Seam component is to be "
+"outjected to its context variable at the end of the invocation. The "
+"attribute may be null."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:251
+#, no-c-format
+msgid "@Out(scope=ScopeType.SESSION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:252
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is <emphasis>not</emphasis> a Seam "
+"component type is to be outjected to a specific scope at the end of the "
+"invocation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:255
+#, no-c-format
+msgid ""
+"Alternatively, if no scope is explicitly specified, the scope of the "
+"component with the <literal>@Out</literal> attribute is used (or the "
+"<literal>EVENT</literal> scope if the component is stateless)."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:258
+#, no-c-format
+msgid "@Out(value=\"contextVariableName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:264
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"Default to the name of the component attribute."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:269
+#, no-c-format
+msgid ""
+"<literal>required</literal> &mdash; specifies Seam should throw an exception "
+"if the component attribute is null during outjection."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:277
+#, no-c-format
+msgid ""
+"Note that it is quite common for these annotations to occur together, for "
+"example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:280
+#, no-c-format
+msgid "@In(create=true) @Out private User currentUser;"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:281
+#, no-c-format
+msgid ""
+"The next annotation supports the <emphasis>manager component</emphasis> "
+"pattern, where a Seam component that manages the lifecycle of an instance of "
+"some other class that is to be injected. It appears on a component getter "
+"method."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:286
+#, no-c-format
+msgid "<literal>@Unwrap</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:288
+#, no-c-format
+msgid "<programlisting>@Unwrap</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:289
+#, no-c-format
+msgid ""
+"Specifies that the object returned by the annotated getter method is the "
+"thing that is injected instead of the component instance itself."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:295
+#, no-c-format
+msgid ""
+"The next annotation supports the <emphasis>factory component</emphasis> "
+"pattern, where a Seam component is responsible for initializing the value of "
+"a context variable. This is especially useful for initializing any state "
+"needed for rendering the response to a non-faces request. It appears on a "
+"component method."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:300
+#, no-c-format
+msgid "@Factory"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:302
+#, no-c-format
+msgid "@Factory(\"processInstance\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:303
+#, no-c-format
+msgid ""
+"Specifies that the method of the component is used to initialize the value "
+"of the named context variable, when the context variable has no value. This "
+"style is used with methods that return <literal>void</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:306
+#, no-c-format
+msgid "@Factory(\"processInstance\", scope=CONVERSATION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:307
+#, no-c-format
+msgid ""
+"Specifies that the method returns a value that Seam should use to initialize "
+"the value of the named context variable, when the context variable has no "
+"value. This style is used with methods that return a value. If no scope is "
+"explicitly specified, the scope of the component with the <literal>@Factory</"
+"literal> method is used (unless the component is stateless, in which case "
+"the <literal>EVENT</literal> context is used)."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:312
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"If the method is a getter method, default to the JavaBeans property name."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:317
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; specifies the scope that Seam should bind "
+"the returned value to. Only meaningful for factory methods which return a "
+"value."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:325
+#, no-c-format
+msgid "This annotation lets you inject a <literal>Log</literal>:"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:330
+#, no-c-format
+msgid "@Logger"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:332
+#, no-c-format
+msgid "@Logger(\"categoryName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:333
+#, no-c-format
+msgid ""
+"Specifies that a component field is to be injected with an instance of "
+"<literal>org.jboss.seam.log.Log</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:338
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the log category. "
+"Default to the name of the component class."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:346
+#, no-c-format
+msgid "The last annotation lets you inject a request parameter value:"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:351
+#, no-c-format
+msgid "@RequestParameter"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:353
+#, no-c-format
+msgid "@RequestParameter(\"parameterName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:354
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected with the value of a "
+"request parameter. Basic type conversions are performed automatically."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:359
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the request "
+"parameter. Default to the name of the component attribute."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:370
+#, no-c-format
+msgid "Annotations for component lifecycle methods"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:371
+#, no-c-format
+msgid ""
+"These annotations allow a component to react to its own lifecycle events. "
+"They occur on methods of the component. There may be only one of each per "
+"component class."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:376
+#, no-c-format
+msgid "<literal>@Create</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:378
+#, no-c-format
+msgid "<programlisting>@Create</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:379
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when an instance of the component "
+"is instantiated by Seam. Note that create methods are only supported for "
+"JavaBeans and stateful session beans."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:385
+#, no-c-format
+msgid "<literal>@Destroy</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:387
+#, no-c-format
+msgid "<programlisting>@Destroy</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:388
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when the context ends and its "
+"context variables are destroyed. Note that create methods are only supported "
+"for JavaBeans and stateful session beans."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:391
+#, no-c-format
+msgid ""
+"Note that all stateful session bean components <emphasis>must</emphasis> "
+"define a method annotated <literal>@Destroy @Remove</literal> in order to "
+"guarantee destruction of the stateful bean when a context ends."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:394
+#, no-c-format
+msgid ""
+"Destroy methods should be used only for cleanup. <emphasis>Seam catches, "
+"logs and swallows any exception that propagates out of a destroy method.</"
+"emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:400
+#, no-c-format
+msgid "@Observer"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:402
+#, no-c-format
+msgid "@Observer(\"somethingChanged\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:403
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when a component-driven event of "
+"the specified type occurs."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:406
+#, no-c-format
+msgid "@Observer(value=\"somethingChanged\",create=false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:407
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when an event of the specified "
+"type occurs but that an instance should not be created if one doesn't exist. "
+"If an instance does not exist and create is false, the event will not be "
+"observed. The default value for create is true."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:416
+#, no-c-format
+msgid "Annotations for context demarcation"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:417
+#, no-c-format
+msgid ""
+"These annotations provide declarative conversation demarcation. They appear "
+"on methods of Seam components, usually action listener methods."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:420
+#, no-c-format
+msgid ""
+"Every web request has a conversation context associated with it. Most of "
+"these conversations end at the end of the request. If you want a "
+"conversation that span multiple requests, you must \"promote\" the current "
+"conversation to a <emphasis>long-running conversation</emphasis> by calling "
+"a method marked with <literal>@Begin</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:425
+#, no-c-format
+msgid "<literal>@Begin</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:427
+#, no-c-format
+msgid "<programlisting>@Begin</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:428
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation begins when this method returns a "
+"non-null outcome without exception."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:431
+#, no-c-format
+msgid "@Begin(ifOutcome={\"success\", \"continue\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:432
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation begins when this action listener "
+"method returns with one of the given outcomes."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:435
+#, no-c-format
+msgid "@Begin(join=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:436
+#, no-c-format
+msgid ""
+"Specifies that if a long-running conversation is already in progress, the "
+"conversation context is simply propagated."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:439
+#, no-c-format
+msgid "@Begin(nested=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:440
+#, no-c-format
+msgid ""
+"Specifies that if a long-running conversation is already in progress, a new "
+"<emphasis>nested</emphasis> conversation context begins. The nested "
+"conversation will end when the next <literal>@End</literal> is encountered, "
+"and the outer conversation will resume. It is perfectly legal for multiple "
+"nested conversations to exist concurrently in the same outer conversation."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:443
+#, no-c-format
+msgid "@Begin(pageflow=\"process definition name\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:444
+#, no-c-format
+msgid ""
+"Specifies a jBPM process definition name that defines the pageflow for this "
+"conversation."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:447
+#, no-c-format
+msgid "@Begin(flushMode=FlushModeType.MANUAL)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:448
+#, no-c-format
+msgid ""
+"Specify the flush mode of any Seam-managed persistence contexts. "
+"<literal>flushMode=FlushModeType.MANUAL</literal> supports the use of "
+"<emphasis>atomic conversations</emphasis> where all write operations are "
+"queued in the conversation context until an explicit call to <literal>flush()"
+"</literal> (which usually occurs at the end of the conversation)."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:454
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in a new long-running conversation context."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:459
+#, no-c-format
+msgid ""
+"<literal>join</literal> &mdash; determines the behavior when a long-running "
+"conversation is already in progress. If <literal>true</literal>, the context "
+"is propagated. If <literal>false</literal>, an exception is thrown. Default "
+"to <literal>false</literal>. This setting is ignored when "
+"<literal>nested=true</literal> is specified"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:464
+#, no-c-format
+msgid ""
+"<literal>nested</literal> &mdash; specifies that a nested conversation "
+"should be started if a long-running conversation is already in progress."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:469 Annotations.xml:526 Annotations.xml:550
+#, no-c-format
+msgid ""
+"<literal>flushMode</literal> &mdash; set the flush mode of any Seam-managed "
+"Hibernate sessions or JPA persistence contexts that are created during this "
+"conversation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:474
+#, no-c-format
+msgid ""
+"<literal>pageflow</literal> &mdash; a process definition name of a jBPM "
+"process definition deployed via <literal>org.jboss.seam.core.jbpm."
+"pageflowDefinitions.</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:483
+#, no-c-format
+msgid "<literal>@End</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:485
+#, no-c-format
+msgid "<programlisting>@End</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:486
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation ends when this method returns a "
+"non-null outcome without exception."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:489
+#, no-c-format
+msgid ""
+"@End(ifOutcome={\"success\", \"error\"}, evenIfException={SomeException."
+"class, OtherException.class})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:490
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation ends when this action listener "
+"method returns with one of the given outcomes or throws one of the specified "
+"classes of exception."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:496
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in the end of the current long-running conversation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:501 Annotations.xml:585
+#, no-c-format
+msgid ""
+"<literal>beforeRedirect</literal> &mdash; by default, the conversation will "
+"not actually be destroyed until after any redirect has occurred. Setting "
+"<literal>beforeRedirect=true</literal> specifies that the conversation "
+"should be destroyed at the end of the current request, and that the redirect "
+"will be processed in a new temporary conversation context."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:510
+#, no-c-format
+msgid "<literal>@StartTask</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:512
+#, no-c-format
+msgid "<programlisting>@StartTask</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:513
+#, no-c-format
+msgid ""
+"\"Starts\" a jBPM task. Specifies that a long-running conversation begins "
+"when this method returns a non-null outcome without exception. This "
+"conversation is associated with the jBPM task specified in the named request "
+"parameter. Within the context of this conversation, a business process "
+"context is also defined, for the business process instance of the task "
+"instance."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:516
+#, no-c-format
+msgid ""
+"The jBPM <literal>TaskInstance</literal> will be available in a request "
+"context variable named <literal>taskInstance</literal>. The jPBM "
+"<literal>ProcessInstance</literal> will be available in a request context "
+"variable named <literal>processInstance</literal>. (Of course, these objects "
+"are available for injection via <literal>@In</literal>.)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:521 Annotations.xml:545
+#, no-c-format
+msgid ""
+"<literal>taskIdParameter</literal> &mdash; the name of a request parameter "
+"which holds the id of the task. Default to <literal>\"taskId\"</literal>, "
+"which is also the default used by the Seam <literal>taskList</literal> JSF "
+"component."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:534
+#, no-c-format
+msgid "<literal>@BeginTask</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:536
+#, no-c-format
+msgid "<programlisting>@BeginTask</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:537
+#, no-c-format
+msgid ""
+"Resumes work on an incomplete jBPM task. Specifies that a long-running "
+"conversation begins when this method returns a non-null outcome without "
+"exception. This conversation is associated with the jBPM task specified in "
+"the named request parameter. Within the context of this conversation, a "
+"business process context is also defined, for the business process instance "
+"of the task instance."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:540
+#, no-c-format
+msgid ""
+"The jBPM <literal>TaskInstance</literal> will be available in a request "
+"context variable named <literal>taskInstance</literal>. The jPBM "
+"<literal>ProcessInstance</literal> will be available in a request context "
+"variable named <literal>processInstance</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:558
+#, no-c-format
+msgid "<literal>@EndTask</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:560
+#, no-c-format
+msgid "<programlisting>@EndTask</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:561
+#, no-c-format
+msgid ""
+"\"Ends\" a jBPM task. Specifies that a long-running conversation ends when "
+"this method returns a non-null outcome, and that the current task is "
+"complete. Triggers a jBPM transition. The actual transition triggered will "
+"be the default transition unless the application has called "
+"<literal>Transition.setName()</literal> on the built-in component named "
+"<literal>transition</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:564
+#, no-c-format
+msgid "@EndTask(transition=\"transitionName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:565
+#, no-c-format
+msgid "Triggers the given jBPM transition."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:568
+#, no-c-format
+msgid "@EndTask(ifOutcome={\"success\", \"continue\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:569
+#, no-c-format
+msgid ""
+"Specifies that the task ends when this method returns one of the listed "
+"outcomes."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:575
+#, no-c-format
+msgid ""
+"<literal>transition</literal> &mdash; the name of the jBPM transition to be "
+"triggered when ending the task. Defaults to the default transition."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:580
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in the end of the task."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:594
+#, no-c-format
+msgid "@CreateProcess"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:596
+#, no-c-format
+msgid "@CreateProcess(definition=\"process definition name\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:597
+#, no-c-format
+msgid ""
+"Creates a new jBPM process instance when the method returns a non-null "
+"outcome without exception. The <literal>ProcessInstance</literal> object "
+"will be available in a context variable named <literal>processInstance</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:602
+#, no-c-format
+msgid ""
+"<literal>definition</literal> &mdash; the name of the jBPM process "
+"definition deployed via <literal>org.jboss.seam.core.jbpm."
+"processDefinitions</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:610
+#, no-c-format
+msgid "@ResumeProcess"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:612
+#, no-c-format
+msgid "@ResumeProcess(processIdParameter=\"processId\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:613
+#, no-c-format
+msgid ""
+"Re-enters the scope of an existing jBPM process instance when the method "
+"returns a non-null outcome without exception. The <literal>ProcessInstance</"
+"literal> object will be available in a context variable named "
+"<literal>processInstance</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:618
+#, no-c-format
+msgid ""
+"<literal>processIdParameter</literal> &mdash; the name a request parameter "
+"holding the process id. Default to <literal>\"processId\"</literal>."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:629
+#, no-c-format
+msgid "Annotations for transaction demarcation"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:630
+#, no-c-format
+msgid ""
+"Seam provides an annotation that lets you force a rollback of the JTA "
+"transaction for certain action listener outcomes."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:635
+#, no-c-format
+msgid "@Rollback"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:637
+#, no-c-format
+msgid "@Rollback(ifOutcome={\"failure\", \"not-found\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:638
+#, no-c-format
+msgid ""
+"If the outcome of the method matches any of the listed outcomes, or if no "
+"outcomes are listed, set the transaction to rollback only when the method "
+"completes."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:643
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; the JSF outcomes that cause a "
+"transaction rollback (no outcomes is interpreted to mean any outcome)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:651
+#, no-c-format
+msgid "<literal>@Transactional</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:653
+#, no-c-format
+msgid "<programlisting>@Transactional</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:654
+#, no-c-format
+msgid ""
+"Specifies that a JavaBean component should have a similar transactional "
+"behavior to the default behavior of a session bean component. ie. method "
+"invocations should take place in a transaction, and if no transaction exists "
+"when the method is called, a transaction will be started just for that "
+"method. This annotation may be applied at either class or method level."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:660
+#, no-c-format
+msgid ""
+"Seam applications usually use the standard EJB3 annotations for all other "
+"transaction demarcation needs."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:666
+#, no-c-format
+msgid "Annotations for exceptions"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:667
+#, no-c-format
+msgid ""
+"These annotations let you specify how Seam should handle an exception that "
+"propagates out of a Seam component."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:672
+#, no-c-format
+msgid "@Redirect"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:674
+#, no-c-format
+msgid "@Redirect(viewId=\"error.jsp\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:675
+#, no-c-format
+msgid ""
+"Specifies that the annotated exception causes a browser redirect to a "
+"specified view id."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:680
+#, no-c-format
+msgid ""
+"<literal>viewId</literal> &mdash; specifies the JSF view id to redirect to."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:685
+#, no-c-format
+msgid ""
+"<literal>message</literal> &mdash; a message to be displayed, default to the "
+"exception message."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:690 Annotations.xml:716
+#, no-c-format
+msgid ""
+"<literal>end</literal> &mdash; specifies that the long-running conversation "
+"should end, default to <literal>false</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:698
+#, no-c-format
+msgid "@HttpError"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:700
+#, no-c-format
+msgid "@HttpError(errorCode=404)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:701
+#, no-c-format
+msgid "Specifies that the annotated exception causes a HTTP error to be sent."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:706
+#, no-c-format
+msgid ""
+"<literal>errorCode</literal> &mdash; the HTTP error code, default to "
+"<literal>500</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:711
+#, no-c-format
+msgid ""
+"<literal>message</literal> &mdash; a message to be sent with the HTTP error, "
+"default to the exception message."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:727
+#, no-c-format
+msgid "Annotations for validation"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:728
+#, no-c-format
+msgid ""
+"This annotation triggers Hibernate Validator. It appears on a method of a "
+"Seam component, almost always an action listener method."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:731
+#, no-c-format
+msgid ""
+"Please refer to the documentation for the Hibernate Annotations package for "
+"information about the annotations defined by the Hibernate Validator "
+"framework."
+msgstr ""
+
+#. Tag: emphasis
+#: Annotations.xml:735
+#, no-c-format
+msgid ""
+"Note that use of <literal>@IfInvalid</literal> is now semi-deprecated and "
+"<literal>&lt;s:validateAll&gt;</literal> is now preferred."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:739
+#, no-c-format
+msgid "@IfInvalid"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:741
+#, no-c-format
+msgid "@IfInvalid(outcome=\"invalid\", refreshEntities=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:742
+#, no-c-format
+msgid ""
+"Specifies that Hibernate Validator should validate the component before the "
+"method is invoked. If the invocation fails, the specified outcome will be "
+"returned, and the validation failure messages returned by Hibernate "
+"Validator will be added to the <literal>FacesContext</literal>. Otherwise, "
+"the invocation will proceed."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:747
+#, no-c-format
+msgid ""
+"<literal>outcome</literal> &mdash; the JSF outcome when validation fails."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:752
+#, no-c-format
+msgid ""
+"<literal>refreshEntities</literal> &mdash; specifies that any invalid entity "
+"in the managed state should be refreshed from the database when validation "
+"fails. Default to <literal>false</literal>. (Useful with extended "
+"persistence contexts.)"
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:763
+#, no-c-format
+msgid "Annotations for Seam Remoting"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:764
+#, no-c-format
+msgid ""
+"Seam Remoting requires that the local interface of a session bean be "
+"annotated with the following annotation:"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:769
+#, no-c-format
+msgid "@WebRemote"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:771
+#, no-c-format
+msgid "@WebRemote(exclude=\"path.to.exclude\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:772
+#, no-c-format
+msgid ""
+"Indicates that the annotated method may be called from client-side "
+"JavaScript. The <literal>exclude</literal> property is optional and allows "
+"objects to be excluded from the result's object graph (see the Remoting "
+"chapter for more details)."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:781
+#, no-c-format
+msgid "Annotations for Seam interceptors"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:782
+#, no-c-format
+msgid "The following annotations appear on Seam interceptor classes."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:785
+#, no-c-format
+msgid ""
+"Please refer to the documentation for the EJB 3.0 specification for "
+"information about the annotations required for EJB interceptor definition."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:790
+#, no-c-format
+msgid "@Interceptor"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:792
+#, no-c-format
+msgid "@Interceptor(stateless=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:793
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is stateless and Seam may optimize "
+"replication."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:796
+#, no-c-format
+msgid "@Interceptor(type=CLIENT)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:797
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is a \"client-side\" interceptor that is "
+"called before the EJB container."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:800
+#, no-c-format
+msgid "@Interceptor(around={SomeInterceptor.class, OtherInterceptor.class})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:801
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is positioned higher in the stack than the "
+"given interceptors."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:804
+#, no-c-format
+msgid "@Interceptor(within={SomeInterceptor.class, OtherInterceptor.class})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:805
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is positioned deeper in the stack than the "
+"given interceptors."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:814
+#, no-c-format
+msgid "Annotations for asynchronicity"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:815
+#, no-c-format
+msgid ""
+"The following annotations are used to declare an asynchronous method, for "
+"example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:818
+#, no-c-format
+msgid ""
+"@Asynchronous public void scheduleAlert(Alert alert, @Expiration Date date) "
+"{ ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:819
+#, no-c-format
+msgid ""
+"@Asynchronous public Timer scheduleAlerts(Alert alert, @Expiration Date "
+"date, \n"
+"    @IntervalDuration long interval) { ... }"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:822
+#, no-c-format
+msgid "<literal>@Asynchronous</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:824
+#, no-c-format
+msgid "<programlisting>@Asynchronous</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:825
+#, no-c-format
+msgid "Specifies that the method call is processed asynchronously."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:831
+#, no-c-format
+msgid "<literal>@Duration</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:833
+#, no-c-format
+msgid "<programlisting>@Duration</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:834
+#, no-c-format
+msgid ""
+"Specifies that a parameter of the asynchronous call is the duration before "
+"the call is processed (or first processed for recurring calls)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:840
+#, no-c-format
+msgid "<literal>@Expiration</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:842
+#, no-c-format
+msgid "<programlisting>@Expiration</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:843
+#, no-c-format
+msgid ""
+"Specifies that a parameter of the asynchronous call is the datetime at which "
+"the call is processed (or first processed for recurring calls)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:849
+#, no-c-format
+msgid "<literal>@IntervalDuration</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:851
+#, no-c-format
+msgid "<programlisting>@IntervalDuration</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:852
+#, no-c-format
+msgid ""
+"Specifies that an asynchronous method call recurs, and that the annotationed "
+"parameter is duration between recurrences."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:861
+#, no-c-format
+msgid "Annotations for use with JSF <literal>dataTable</literal>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:862
+#, no-c-format
+msgid ""
+"The following annotations make it easy to implement clickable lists backed "
+"by a stateful session bean. They appear on attributes."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:867
+#, no-c-format
+msgid "@DataModel"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:869
+#, no-c-format
+msgid "@DataModel(\"variableName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:870
+#, no-c-format
+msgid ""
+"Exposes an attribute of type <literal>List</literal>, <literal>Map</"
+"literal>, <literal>Set</literal> or <literal>Object[]</literal> as a JSF "
+"<literal>DataModel</literal> into the scope of the owning component (or the "
+"<literal>EVENT</literal> scope if the owning component is "
+"<literal>STATELESS</literal>). In the case of <literal>Map</literal>, each "
+"row of the <literal>DataModel</literal> is a <literal>Map.Entry</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:875
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; name of the conversation context variable. "
+"Default to the attribute name."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:880
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; if <literal>scope=ScopeType.PAGE</literal> "
+"is explicitly specified, the <literal>DataModel</literal> will be kept in "
+"the <literal>PAGE</literal> context."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:888
+#, no-c-format
+msgid "<literal>@DataModelSelection</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:890
+#, no-c-format
+msgid "<programlisting>@DataModelSelection</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:891
+#, no-c-format
+msgid ""
+"Injects the selected value from the JSF <literal>DataModel</literal> (this "
+"is the element of the underlying collection, or the map value)."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:896 Annotations.xml:912
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; name of the conversation context variable. "
+"Not needed if there is exactly one <literal>@DataModel</literal> in the "
+"component."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:904
+#, no-c-format
+msgid "<literal>@DataModelSelectionIndex</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:906
+#, no-c-format
+msgid "<programlisting>@DataModelSelectionIndex</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:907
+#, no-c-format
+msgid ""
+"Exposes the selection index of the JSF <literal>DataModel</literal> as an "
+"attribute of the component (this is the row number of the underlying "
+"collection, or the map key)."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:923
+#, no-c-format
+msgid "Meta-annotations for databinding"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:924
+#, no-c-format
+msgid ""
+"These meta-annotations make it possible to implement similar functionality "
+"to <literal>@DataModel</literal> and <literal>@DataModelSelection</literal> "
+"for other datastructures apart from lists."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:929
+#, no-c-format
+msgid "@DataBinderClass"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:931
+#, no-c-format
+msgid "@DataBinderClass(DataModelBinder.class)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:932
+#, no-c-format
+msgid "Specifies that an annotation is a databinding annotation."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:938
+#, no-c-format
+msgid "@DataSelectorClass"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:940
+#, no-c-format
+msgid "@DataSelectorClass(DataModelSelector.class)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:941
+#, no-c-format
+msgid "Specifies that an annotation is a dataselection annotation."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:950
+#, no-c-format
+msgid "Annotations for packaging"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:951
+#, no-c-format
+msgid ""
+"This annotation provides a mechanism for declaring information about a set "
+"of components that are packaged together. It can be applied to any Java "
+"package."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:956
+#, no-c-format
+msgid "@Namespace"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:958
+#, no-c-format
+msgid "@Namespace(value=\"http://jboss.com/products/seam/example/seampay\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:959
+#, no-c-format
+msgid ""
+"Specifies that components in the current package are associated with the "
+"given namespace. The declared namespace can be used as an XML namespace in a "
+"<literal>components.xml</literal> file to simplify application configuration."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:962
+#, no-c-format
+msgid ""
+"@Namespace(value=\"http://jboss.com/products/seam/core\", prefix=\"org.jboss."
+"seam.core\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:963
+#, no-c-format
+msgid ""
+"Specifies a namespace to associate with a given package. Additionally, it "
+"specifies a component name prefix to be applied to component names specified "
+"in the XML file. For example, an XML element named <literal>microcontainer</"
+"literal> that is associated with this namespace would be understood to "
+"actually refere to a component named <literal>org.jboss.seam.core."
+"microcontainer</literal>."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Book_Info.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Book_Info.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Book_Info.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,38 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Book_Info.xml:10
+#, no-c-format
+msgid "Seam - Contextual Components"
+msgstr ""
+
+#. Tag: subtitle
+#: Book_Info.xml:11
+#, no-c-format
+msgid "A Framework for Java EE 5"
+msgstr ""
+
+#. Tag: para
+#: Book_Info.xml:15
+#, no-c-format
+msgid "This book is a Reference Guide for Seam"
+msgstr ""
+
+#. Tag: holder
+#: Book_Info.xml:36
+#, no-c-format
+msgid "&FORMAL-RHI;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Cache.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Cache.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Cache.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,318 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Cache.xml:10
+#, no-c-format
+msgid "Caching"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:11
+#, no-c-format
+msgid ""
+"In almost all enterprise applications, the database is the primary "
+"bottleneck, and the least scalable tier of the runtime environment. People "
+"from a PHP/Ruby environment will try to tell you that so-called \"shared "
+"nothing\" architectures scale well. While that may be literally true, I "
+"don't know of many interesting multi-user applications which can be "
+"implemented with no sharing of resources between different nodes of the "
+"cluster. What these silly people are really thinking of is a \"share nothing "
+"except for the database\" architecture. Of course, sharing the database is "
+"the primary problem with scaling a multi-user application&mdash;so the claim "
+"that this architecture is highly scalable is absurd, and tells you a lot "
+"about the kind of applications that these folks spend most of their time "
+"working on."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:14
+#, no-c-format
+msgid ""
+"Almost anything we can possibly do to share the database <emphasis>less "
+"often</emphasis> is worth doing."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:17
+#, no-c-format
+msgid ""
+"This calls for a cache. Well, not just one cache. A well designed Seam "
+"application will feature a rich, multi-layered caching strategy that impacts "
+"every layer of the application:"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:22
+#, no-c-format
+msgid ""
+"The database, of course, has its own cache. This is super-important, but "
+"can't scale like a cache in the application tier."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:27
+#, no-c-format
+msgid ""
+"Your ORM solution (Hibernate, or some other JPA implementation) has a second-"
+"level cache of data from the database. This is a very powerful capability, "
+"but is often misused. In a clustered environment, keeping the data in the "
+"cache transactionally consistent across the whole cluster, and with the "
+"database, is quite expensive. It makes most sense for data which is shared "
+"between many users, and is updated rarely. In traditional stateless "
+"architectures, people often try to use the second-level cache for "
+"conversational state. This is always bad, and is especially wrong in Seam."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:32
+#, no-c-format
+msgid ""
+"The Seam conversation context is a cache of conversational state. Components "
+"you put into the conversation context can hold and cache state relating to "
+"the current user interaction."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:37
+#, no-c-format
+msgid ""
+"In particular, the Seam-managed persistence context (or an extended EJB "
+"container-managed persistence context associated with a conversation-scoped "
+"stateful session bean) acts as a cache of data that has been read in the "
+"current conversation. This cache tends to have a pretty high hitrate! Seam "
+"optimizes the replication of Seam-managed persistence contexts in a "
+"clustered environment, and there is no requirement for transactional "
+"consistency with the database (optimistic locking is sufficient) so you "
+"don't need to worry too much about the performance implications of this "
+"cache, unless you read thousands of objects into a single persistence "
+"context."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:42
+#, no-c-format
+msgid ""
+"The application can cache non-transactional state in the Seam application "
+"context. State kept in the application context is of course not visible to "
+"other nodes in the cluster."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:47
+#, no-c-format
+msgid ""
+"The application can cache transactional state using the Seam "
+"<literal>pojoCache</literal> component, which integrates JBossCache into the "
+"Seam environment. This state will be visible to other nodes if you run JBoss "
+"cache in a clustered mode."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:52
+#, no-c-format
+msgid ""
+"Finally, Seam lets you cache rendered fragments of a JSF page. Unlike the "
+"ORM second-level cache, this cache is not automatically invalidated when "
+"data changes, so you need to write application code to perform explicit "
+"invalidation, or set appropriate expiration policies."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:57
+#, no-c-format
+msgid ""
+"For more information about the second-level cache, you'll need to refer to "
+"the documentation of your ORM solution, since this is an extremely complex "
+"topic. In this section we'll discuss the use of JBossCache directly, via the "
+"<literal>pojoCache</literal> component, or as the page fragment cache, via "
+"the <literal>&lt;s:cache&gt;</literal> control."
+msgstr ""
+
+#. Tag: title
+#: Cache.xml:61
+#, no-c-format
+msgid "Using JBossCache in Seam"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:62
+#, no-c-format
+msgid ""
+"The built-in <literal>pojoCache</literal> component manages an instance of "
+"<literal>org.jboss.cache.aop.PojoCache</literal>. You can safely put any "
+"immutable Java object in the cache, and it will be replicated across the "
+"cluster (assuming that replication is enabled). If you want to keep mutable "
+"objects in the cache, you'll need to run the JBossCache bytecode "
+"preprocessor to ensure that changes to the objects will be automatically "
+"detected and replicated."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:65
+#, no-c-format
+msgid ""
+"To use <literal>pojoCache</literal>, all you need to do is put the "
+"JBossCache jars in the classpath, and provide a resource named "
+"<literal>treecache.xml</literal> with an appropriate cache configuration. "
+"JBossCache has many scary and confusing configuration settings, so we won't "
+"discuss them here. Please refer to the JBossCache documentation for more "
+"information."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:68
+#, no-c-format
+msgid ""
+"For an EAR depoyment of Seam, we recommend that the JBossCache jars and "
+"configuration go directly into the EAR. Make sure you declare the jars in "
+"<literal>application.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:71
+#, no-c-format
+msgid "Now you can inject the cache into any Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:74
+#, no-c-format
+msgid ""
+"@Name(\"chatroom\")\n"
+"public class Chatroom {\n"
+"    @In PojoCache pojoCache;\n"
+"    \n"
+"    public void join(String username) {\n"
+"      try\n"
+"      {\n"
+"         Set&lt;String&gt; userList = (Set&lt;String&gt;) pojoCache.get"
+"(\"chatroom\", \"userList\");\n"
+"         if (userList==null) \n"
+"         {\n"
+"            userList = new HashSet&lt;String&gt;();\n"
+"            pojoCache.put(\"chatroom\", \"userList\", userList);\n"
+"         }\n"
+"         userList.put(username);\n"
+"      }\n"
+"      catch (CacheException ce)\n"
+"      {\n"
+"         throw new RuntimeException(ce);\n"
+"      }\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:75
+#, no-c-format
+msgid ""
+"If you want to have multiple JBossCache configurations in your application, "
+"use <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:78
+#, no-c-format
+msgid ""
+"&lt;core:pojo-cache name=\"myCache\" cfg-resource-name=\"myown/cache.xml\"/"
+"&gt;"
+msgstr ""
+
+#. Tag: title
+#: Cache.xml:82
+#, no-c-format
+msgid "Page fragment caching"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:83
+#, no-c-format
+msgid ""
+"The most interesting user of JBossCache is the <literal>&lt;s:cache&gt;</"
+"literal> tag, Seam's solution to the problem of page fragment caching in "
+"JSF. <literal>&lt;s:cache&gt;</literal> uses <literal>pojoCache</literal> "
+"internally, so you need to follow the steps listed above before you can use "
+"it. (Put the jars in the EAR, wade through the scary configuration options, "
+"etc.)"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:86
+#, no-c-format
+msgid ""
+"<literal>&lt;s:cache&gt;</literal> is used for caching some rendered content "
+"which changes rarely. For example, the welcome page of our blog displays the "
+"recent blog entries:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:89
+#, no-c-format
+msgid ""
+"&lt;s:cache key=\"recentEntries-#{blog.id}\" region=\"welcomePageFragments"
+"\"&gt;\n"
+"   &lt;h:dataTable value=\"#{blog.recentEntries}\" var=\"blogEntry\"&gt;\n"
+"      &lt;h:column&gt;\n"
+"         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"         &lt;div&gt;\n"
+"            &lt;s:formattedText value=\"#{blogEntry.body}\"/&gt;\n"
+"         &lt;/div&gt;\n"
+"      &lt;/h:column&gt;\n"
+"   &lt;/h:dataTable&gt;\n"
+"&lt;/s:cache&gt;"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:90
+#, no-c-format
+msgid ""
+"The <literal>key</literal> let's you have multiple cached versions of each "
+"page fragment. In this case, there is one cached version per blog. The "
+"<literal>region</literal> determines the JBossCache node that all version "
+"will be stored in. Different nodes may have different expiry policies. "
+"(That's the stuff you set up using the aforementioned scary configuration "
+"options.)"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:93
+#, no-c-format
+msgid ""
+"Of course, the big problem with <literal>&lt;s:cache&gt;</literal> is that "
+"it is too stupid to know when the underlying data changes (for example, when "
+"the blogger posts a new entry). So you need to evict the cached fragment "
+"manually:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:96
+#, no-c-format
+msgid ""
+"public void post() {\n"
+"    ...\n"
+"    entityManager.persist(blogEntry);\n"
+"    pojoCache.remove(\"welcomePageFragments\", \"recentEntries-\" + blog."
+"getId() );\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:97
+#, no-c-format
+msgid ""
+"Alternatively, if it is not critical that changes are immediately visible to "
+"the user, you could set a short expiry time on the JbossCache node."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Components.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Components.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Components.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2007 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Components.xml:10
+#, no-c-format
+msgid "Built-in Seam components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:11
+#, no-c-format
+msgid ""
+"This chapter describes Seam's built-in components, and their configuration "
+"properties."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:14
+#, no-c-format
+msgid ""
+"Note that you can replace any of the built in components with your own "
+"implementations simply by specifying the name of one of the built in "
+"components on your own class using <literal>@Name</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:17
+#, no-c-format
+msgid ""
+"Note also that even though all the built in components use a qualified name, "
+"most of them are aliased to unqualified names by default. These aliases "
+"specify <literal>auto-create=\"true\"</literal>, so you do not need to use "
+"<literal>create=true</literal> when injecting built-in components by their "
+"unqualified name."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:21
+#, no-c-format
+msgid "Context injection components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:22
+#, no-c-format
+msgid ""
+"The first set of built in components exist purely to support injection of "
+"various contextual objects. For example, the following component instance "
+"variable would have the Seam session context object injected:"
+msgstr ""
+
+#. Tag: programlisting
+#: Components.xml:25
+#, no-c-format
+msgid "@In private Context sessionContext;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:28
+#, no-c-format
+msgid "org.jboss.seam.core.eventContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:30
+#, no-c-format
+msgid "Manager component for the event context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:36
+#, no-c-format
+msgid "org.jboss.seam.core.pageContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:38
+#, no-c-format
+msgid "Manager component for the page context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:44
+#, no-c-format
+msgid "org.jboss.seam.core.conversationContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:46
+#, no-c-format
+msgid "Manager component for the conversation context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:52
+#, no-c-format
+msgid "org.jboss.seam.core.sessionContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:54
+#, no-c-format
+msgid "Manager component for the session context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:60
+#, no-c-format
+msgid "org.jboss.seam.core.applicationContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:62
+#, no-c-format
+msgid "Manager component for the appication context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:68
+#, no-c-format
+msgid "org.jboss.seam.core.businessProcessContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:70
+#, no-c-format
+msgid "Manager component for the business process context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:76
+#, no-c-format
+msgid "org.jboss.seam.core.facesContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:78
+#, no-c-format
+msgid ""
+"Manager component for the <literal>FacesContext</literal> context object "
+"(not a true Seam context)"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:84 Components.xml:267 Components.xml:441 Components.xml:572
+#, no-c-format
+msgid "All of these components are always installed."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:90
+#, no-c-format
+msgid "Utility components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:91
+#, no-c-format
+msgid "These components are merely useful."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:96
+#, no-c-format
+msgid "org.jboss.seam.core.facesMessages"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:98
+#, no-c-format
+msgid "Allows faces success messages to propagate across a browser redirect."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:103
+#, no-c-format
+msgid ""
+"<literal>add(FacesMessage facesMessage)</literal> &mdash; add a faces "
+"message, which will be displayed during the next render response phase that "
+"occurs in the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:108
+#, no-c-format
+msgid ""
+"<literal>add(String messageTemplate)</literal> &mdash; add a faces message, "
+"rendered from the given message template which may contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:113
+#, no-c-format
+msgid ""
+"<literal>add(Severity severity, String messageTemplate)</literal> &mdash; "
+"add a faces message, rendered from the given message template which may "
+"contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:118
+#, no-c-format
+msgid ""
+"<literal>addFromResourceBundle(String key)</literal> &mdash; add a faces "
+"message, rendered from a message template defined in the Seam resource "
+"bundle which may contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:123
+#, no-c-format
+msgid ""
+"<literal>addFromResourceBundle(Severity severity, String key)</literal> "
+"&mdash; add a faces message, rendered from a message template defined in the "
+"Seam resource bundle which may contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:128
+#, no-c-format
+msgid "<literal>clear()</literal> &mdash; clear all messages."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:136
+#, no-c-format
+msgid "org.jboss.seam.core.redirect"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:138
+#, no-c-format
+msgid ""
+"A convenient API for performing redirects with parameters (this is "
+"especially useful for bookmarkable search results screens)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:143
+#, no-c-format
+msgid ""
+"<literal>redirect.viewId</literal> &mdash; the JSF view id to redirect to."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:148
+#, no-c-format
+msgid ""
+"<literal>redirect.conversationPropagationEnabled</literal> &mdash; "
+"determines whether the conversation will propagate across the redirect."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:153
+#, no-c-format
+msgid ""
+"<literal>redirect.parameters</literal> &mdash; a map of request parameter "
+"name to value, to be passed in the redirect request."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:158
+#, no-c-format
+msgid "<literal>execute()</literal> &mdash; perform the redirect immediately."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:163
+#, no-c-format
+msgid ""
+"<literal>captureCurrentRequest()</literal> &mdash; stores the view id and "
+"request parameters of the current GET request (in the conversation context), "
+"for later use by calling <literal>execute()</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:171
+#, no-c-format
+msgid "org.jboss.seam.core.httpError"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:173
+#, no-c-format
+msgid "A convenient API for sending HTTP errors."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:179
+#, no-c-format
+msgid "org.jboss.seam.core.events"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:181
+#, no-c-format
+msgid ""
+"An API for raising events that can be observed via <literal>@Observer</"
+"literal> methods, or method bindings in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:186
+#, no-c-format
+msgid ""
+"<literal>raiseEvent(String type)</literal> &mdash; raise an event of a "
+"particular type and distribute to all observers."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:191
+#, no-c-format
+msgid ""
+"<literal>raiseAsynchronousEvent(String type)</literal> &mdash; raise an "
+"event to be processed asynchronously by the EJB3 timer service."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:196
+#, no-c-format
+msgid ""
+"<literal>raiseTimedEvent(String type, ....)</literal> &mdash; schedule an "
+"event to be processed asynchronously by the EJB3 timer service."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:201
+#, no-c-format
+msgid ""
+"<literal>addListener(String type, String methodBinding)</literal> &mdash; "
+"add an observer for a particular event type."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:209
+#, no-c-format
+msgid "org.jboss.seam.core.interpolator"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:211
+#, no-c-format
+msgid "An API for interpolating the values of JSF EL expressions in Strings."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:216
+#, no-c-format
+msgid ""
+"<literal>interpolate(String template)</literal> &mdash; scan the template "
+"for JSF EL expressions of the form <literal>#{...}</literal> and replace "
+"them with their evaluated values."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:224
+#, no-c-format
+msgid "org.jboss.seam.core.expressions"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:226
+#, no-c-format
+msgid "An API for creating value and method bindings."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:231
+#, no-c-format
+msgid ""
+"<literal>createValueBinding(String expression)</literal> &mdash; create a "
+"value binding object."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:236
+#, no-c-format
+msgid ""
+"<literal>createMethodBinding(String expression)</literal> &mdash; create a "
+"method binding object."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:244
+#, no-c-format
+msgid "org.jboss.seam.core.pojoCache"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:246
+#, no-c-format
+msgid ""
+"Manager component for a JBoss Cache <literal>PojoCache</literal> instance."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:251
+#, no-c-format
+msgid ""
+"<literal>pojoCache.cfgResourceName</literal> &mdash; the name of the "
+"configuration file. Default to <literal>treecache.xml</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:259
+#, no-c-format
+msgid "org.jboss.seam.core.uiComponent"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:261
+#, no-c-format
+msgid ""
+"Allows access to a JSF <literal>UIComponent</literal> by its id from the EL. "
+"For example, we can write <literal>@In(\"#{uiComponent['myForm:address']."
+"value}\")</literal>."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:273
+#, no-c-format
+msgid "Components for internationalization and themes"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:274
+#, no-c-format
+msgid ""
+"The next group of components make it easy to build internationalized user "
+"interfaces using Seam."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:279
+#, no-c-format
+msgid "org.jboss.seam.core.locale"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:281
+#, no-c-format
+msgid "The Seam locale. The locale is session scoped."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:287
+#, no-c-format
+msgid "org.jboss.seam.core.timezone"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:289
+#, no-c-format
+msgid "The Seam timezone. The timezone is session scoped."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:295
+#, no-c-format
+msgid "org.jboss.seam.core.resourceBundle"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:297
+#, no-c-format
+msgid ""
+"The Seam resource bundle. The resource bundle is session scoped. The Seam "
+"resource bundle performs a depth-first search for keys in a list of Java "
+"resource bundles."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:302
+#, no-c-format
+msgid ""
+"<literal>resourceBundle.bundleNames</literal> &mdash; the names of the Java "
+"resource bundles to search. Default to <literal>messages</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:310
+#, no-c-format
+msgid "org.jboss.seam.core.localeSelector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:312
+#, no-c-format
+msgid ""
+"Supports selection of the locale either at configuration time, or by the "
+"user at runtime."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:317 Components.xml:367
+#, no-c-format
+msgid "<literal>select()</literal> &mdash; select the specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:322
+#, no-c-format
+msgid ""
+"<literal>localeSelector.locale</literal> &mdash; the actual <literal>java."
+"util.Locale</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:327
+#, no-c-format
+msgid ""
+"<literal>localeSelector.localeString</literal> &mdash; the stringified "
+"representation of the locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:332
+#, no-c-format
+msgid ""
+"<literal>localeSelector.language</literal> &mdash; the language for the "
+"specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:337
+#, no-c-format
+msgid ""
+"<literal>localeSelector.country</literal> &mdash; the country for the "
+"specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:342
+#, no-c-format
+msgid ""
+"<literal>localeSelector.variant</literal> &mdash; the variant for the "
+"specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:347
+#, no-c-format
+msgid ""
+"<literal>localeSelector.supportedLocales</literal> &mdash; a list of "
+"<literal>SelectItem</literal>s representing the supported locales listed in "
+"<literal>jsf-config.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:352
+#, no-c-format
+msgid ""
+"<literal>localeSelector.cookieEnabled</literal> &mdash; specifies that the "
+"locale selection should be persisted via a cookie."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:360
+#, no-c-format
+msgid "org.jboss.seam.core.timezoneSelector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:362
+#, no-c-format
+msgid ""
+"Supports selection of the timezone either at configuration time, or by the "
+"user at runtime."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:372
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.timezone</literal> &mdash; the actual "
+"<literal>java.util.TimeZone</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:377
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.timeZoneId</literal> &mdash; the stringified "
+"representation of the timezone."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:382
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.cookieEnabled</literal> &mdash; specifies that the "
+"timezone selection should be persisted via a cookie."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:390
+#, no-c-format
+msgid "org.jboss.seam.core.messages"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:392
+#, no-c-format
+msgid ""
+"A map containing internationalized messages rendered from message templates "
+"defined in the Seam resource bundle."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:398
+#, no-c-format
+msgid "org.jboss.seam.theme.themeSelector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:400
+#, no-c-format
+msgid ""
+"Supports selection of the theme either at configuration time, or by the user "
+"at runtime."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:405
+#, no-c-format
+msgid "<literal>select()</literal> &mdash; select the specified theme."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:410
+#, no-c-format
+msgid ""
+"<literal>theme.availableThemes</literal> &mdash; the list of defined themes."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:415
+#, no-c-format
+msgid "<literal>themeSelector.theme</literal> &mdash; the selected theme."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:420
+#, no-c-format
+msgid ""
+"<literal>themeSelector.themes</literal> &mdash; a list of "
+"<literal>SelectItem</literal>s representing the defined themes."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:425
+#, no-c-format
+msgid ""
+"<literal>themeSelector.cookieEnabled</literal> &mdash; specifies that the "
+"theme selection should be persisted via a cookie."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:433
+#, no-c-format
+msgid "org.jboss.seam.theme.theme"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:435
+#, no-c-format
+msgid "A map containing theme entries."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:447
+#, no-c-format
+msgid "Components for controlling conversations"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:448
+#, no-c-format
+msgid ""
+"The next group of components allow control of conversations by the "
+"application or user interface."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:453
+#, no-c-format
+msgid "org.jboss.seam.core.conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:455
+#, no-c-format
+msgid ""
+"API for application control of attributes of the current Seam conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:460 Components.xml:475
+#, no-c-format
+msgid "<literal>getId()</literal> &mdash; returns the current conversation id"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:465
+#, no-c-format
+msgid ""
+"<literal>isNested()</literal> &mdash; is the current conversation a nested "
+"conversation?"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:470
+#, no-c-format
+msgid ""
+"<literal>isLongRunning()</literal> &mdash; is the current conversation a "
+"long-running conversation?"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:480
+#, no-c-format
+msgid ""
+"<literal>getParentId()</literal> &mdash; returns the conversation id of the "
+"parent conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:485
+#, no-c-format
+msgid ""
+"<literal>getRootId()</literal> &mdash; returns the conversation id of the "
+"root conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:490
+#, no-c-format
+msgid ""
+"<literal>setTimeout(int timeout)</literal> &mdash; sets the timeout for the "
+"current conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:495
+#, no-c-format
+msgid ""
+"<literal>setViewId(String outcome)</literal> &mdash; sets the view id to be "
+"used when switching back to the current conversation from the conversation "
+"switcher, conversation list, or breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:500
+#, no-c-format
+msgid ""
+"<literal>setDescription(String description)</literal> &mdash; sets the "
+"description of the current conversation to be displayed in the conversation "
+"switcher, conversation list, or breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:505
+#, no-c-format
+msgid ""
+"<literal>redirect()</literal> &mdash; redirect to the last well-defined view "
+"id for this conversation (useful after login challenges)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:510
+#, no-c-format
+msgid ""
+"<literal>leave()</literal> &mdash; exit the scope of this conversation, "
+"without actually ending the conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:515
+#, no-c-format
+msgid ""
+"<literal>begin()</literal> &mdash; begin a long-running conversation "
+"(equivalent to <literal>@Begin</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:520
+#, no-c-format
+msgid ""
+"<literal>beginPageflow(String pageflowName)</literal> &mdash; begin a long-"
+"running conversation with a pageflow (equivalent to <literal>@Begin(pageflow="
+"\"...\")</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:525
+#, no-c-format
+msgid ""
+"<literal>end()</literal> &mdash; end a long-running conversation (equivalent "
+"to <literal>@End</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:530
+#, no-c-format
+msgid ""
+"<literal>pop()</literal> &mdash; pop the conversation stack, returning to "
+"the parent conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:535
+#, no-c-format
+msgid ""
+"<literal>root()</literal> &mdash; return to the root conversation of the "
+"conversation stack."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:540
+#, no-c-format
+msgid ""
+"<literal>changeFlushMode(FlushModeType flushMode)</literal> &mdash; change "
+"the flush mode of the conversation."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:548
+#, no-c-format
+msgid "org.jboss.seam.core.conversationList"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:550
+#, no-c-format
+msgid "Manager component for the conversation list."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:556
+#, no-c-format
+msgid "org.jboss.seam.core.conversationStack"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:558
+#, no-c-format
+msgid "Manager component for the conversation stack (breadcrumbs)."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:564
+#, no-c-format
+msgid "org.jboss.seam.core.switcher"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:566
+#, no-c-format
+msgid "The conversation switcher."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:578
+#, no-c-format
+msgid "jBPM-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:579
+#, no-c-format
+msgid "These components are for use with jBPM."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:584
+#, no-c-format
+msgid "org.jboss.seam.core.pageflow"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:586
+#, no-c-format
+msgid "API control of Seam pageflows."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:591
+#, no-c-format
+msgid ""
+"<literal>isInProcess()</literal> &mdash; returns <literal>true</literal> if "
+"there is currently a pageflow in process"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:596
+#, no-c-format
+msgid ""
+"<literal>getProcessInstance()</literal> &mdash; returns jBPM "
+"<literal>ProcessInstance</literal> for the current pageflow"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:601
+#, no-c-format
+msgid ""
+"<literal>begin(String pageflowName)</literal> &mdash; begin a pageflow in "
+"the context of the current conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:606
+#, no-c-format
+msgid ""
+"<literal>reposition(String nodeName)</literal> &mdash; reposition the "
+"current pageflow to a particular node"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:614
+#, no-c-format
+msgid "org.jboss.seam.core.actor"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:616
+#, no-c-format
+msgid ""
+"API for application control of attributes of the jBPM actor associated with "
+"the current session."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:621
+#, no-c-format
+msgid ""
+"<literal>setId(String actorId)</literal> &mdash; sets the jBPM actor id of "
+"the current user."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:626
+#, no-c-format
+msgid ""
+"<literal>getGroupActorIds()</literal> &mdash; returns a <literal>Set</"
+"literal> to which jBPM actor ids for the current users groups may be added."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:634
+#, no-c-format
+msgid "org.jboss.seam.core.transition"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:636
+#, no-c-format
+msgid ""
+"API for application control of the jBPM transition for the current task."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:641
+#, no-c-format
+msgid ""
+"<literal>setName(String transitionName)</literal> &mdash; sets the jBPM "
+"transition name to be used when the current task is ended via "
+"<literal>@EndTask</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:649
+#, no-c-format
+msgid "org.jboss.seam.core.businessProcess"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:651
+#, no-c-format
+msgid ""
+"API for programmatic control of the association between the conversation and "
+"business process."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:656
+#, no-c-format
+msgid ""
+"<literal>businessProcess.taskId</literal> &mdash; the id of the task "
+"associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:661
+#, no-c-format
+msgid ""
+"<literal>businessProcess.processId</literal> &mdash; the id of the process "
+"associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:666
+#, no-c-format
+msgid ""
+"<literal>businessProcess.hasCurrentTask()</literal> &mdash; is a task "
+"instance associated with the current conversation?"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:671
+#, no-c-format
+msgid ""
+"<literal>businessProcess.hasCurrentProcess()</literal> &mdash; is a process "
+"instance associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:676
+#, no-c-format
+msgid ""
+"<literal>createProcess(String name)</literal> &mdash; create an instance of "
+"the named process definition and associate it with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:681
+#, no-c-format
+msgid ""
+"<literal>startTask()</literal> &mdash; start the task associated with the "
+"current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:686
+#, no-c-format
+msgid ""
+"<literal>endTask(String transitionName)</literal> &mdash; end the task "
+"associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:691
+#, no-c-format
+msgid ""
+"<literal>resumeTask(Long id)</literal> &mdash; associate the task with the "
+"given id with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:696
+#, no-c-format
+msgid ""
+"<literal>resumeProcess(Long id)</literal> &mdash; associate the process with "
+"the given id with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:701
+#, no-c-format
+msgid ""
+"<literal>transition(String transitionName)</literal> &mdash; trigger the "
+"transition."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:709
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstance"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:711
+#, no-c-format
+msgid "Manager component for the jBPM <literal>TaskInstance</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:717
+#, no-c-format
+msgid "org.jboss.seam.core.processInstance"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:719
+#, no-c-format
+msgid "Manager component for the jBPM <literal>ProcessInstance</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:725
+#, no-c-format
+msgid "org.jboss.seam.core.jbpmContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:727
+#, no-c-format
+msgid "Manager component for an event-scoped <literal>JbpmContext</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:733
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstanceList"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:735
+#, no-c-format
+msgid "Manager component for the jBPM task list."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:741
+#, no-c-format
+msgid "org.jboss.seam.core.pooledTaskInstanceList"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:743
+#, no-c-format
+msgid "Manager component for the jBPM pooled task list."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:749
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstanceListForType"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:751
+#, no-c-format
+msgid "Manager component for the jBPM task lists."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:757
+#, no-c-format
+msgid "org.jboss.seam.core.pooledTask"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:759
+#, no-c-format
+msgid "Action handler for pooled task assignment."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:765
+#, no-c-format
+msgid ""
+"All of these components are installed whenever the component <literal>org."
+"jboss.seam.core.jbpm</literal> is installed."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:771
+#, no-c-format
+msgid "Security-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:772
+#, no-c-format
+msgid "These components relate to web-tier security."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:777
+#, no-c-format
+msgid "org.jboss.seam.core.userPrincipal"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:779
+#, no-c-format
+msgid "Manager component for the current user <literal>Principal</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:785
+#, no-c-format
+msgid "org.jboss.seam.core.isUserInRole"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:787
+#, no-c-format
+msgid ""
+"Allows JSF pages to choose to render a control, depending upon the roles "
+"available to the current principal. <literal>&lt;h:commandButton value=\"edit"
+"\" rendered=\"#{isUserInRole['admin']}\"/&gt;</literal>."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:796
+#, no-c-format
+msgid "JMS-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:797
+#, no-c-format
+msgid ""
+"These components are for use with managed <literal>TopicPublisher</literal>s "
+"and <literal>QueueSender</literal>s (see below)."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:802
+#, no-c-format
+msgid "org.jboss.seam.jms.queueSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:804
+#, no-c-format
+msgid "Manager component for a JMS <literal>QueueSession</literal> ."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:810
+#, no-c-format
+msgid "org.jboss.seam.jms.topicSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:812
+#, no-c-format
+msgid "Manager component for a JMS <literal>TopicSession</literal> ."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:821
+#, no-c-format
+msgid "Mail-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:822
+#, no-c-format
+msgid "These components are for use with Seam's Email support"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:827
+#, no-c-format
+msgid "org.jboss.seam.mail.mailSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:829
+#, no-c-format
+msgid "Manager component for a JavaMail <literal>Session</literal> ."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:834
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.host</literal> &mdash; the hostname "
+"of the SMTP server to use"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:839
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.port</literal> &mdash; the port of "
+"the SMTP server to use"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:844
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.username</literal> &mdash; the "
+"username to use to connect to the SMTP server."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:849
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.password</literal> &mdash; the "
+"password to use to connect to the SMTP server"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:854
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.debug</literal> &mdash; enable "
+"JavaMail debugging (very verbose)"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:859
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.sessionJndiName</literal> &mdash; "
+"name under which a javax.mail.Session is bound to JNDI"
+msgstr ""
+
+#. Tag: title
+#: Components.xml:870
+#, no-c-format
+msgid "Infrastructural components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:871
+#, no-c-format
+msgid ""
+"These components provide critical platform infrastructure. You can install a "
+"component by including its class name in the <literal>org.jboss.seam.core."
+"init.componentClasses</literal> configuration property."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:876
+#, no-c-format
+msgid "org.jboss.seam.core.init"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:878
+#, no-c-format
+msgid "Initialization settings for Seam. Always installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:883
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.jndiPattern</literal> &mdash; the JNDI "
+"pattern used for looking up session beans"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:888
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.debug</literal> &mdash; enable Seam debug "
+"mode"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:893
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.clientSideConversations</literal> &mdash; "
+"if set to <literal>true</literal>, Seam will save conversation context "
+"variables in the client instead of in the <literal>HttpSession</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:898
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.userTransactionName</literal> &mdash; the "
+"JNDI name to use when looking up the JTA <literal>UserTransaction</literal> "
+"object."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:906
+#, no-c-format
+msgid "org.jboss.seam.core.manager"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:908
+#, no-c-format
+msgid ""
+"Internal component for Seam page and conversation context management. Always "
+"installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:913
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationTimeout</literal> &mdash; "
+"the conversation context timeout in milliseconds."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:918
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.concurrentRequestTimeout</literal> "
+"&mdash; maximum wait time for a thread attempting to gain a lock on the long-"
+"running conversation context."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:923
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationIdParameter</literal> "
+"&mdash; the request parameter used to propagate the conversation id, default "
+"to <literal>conversationId</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:928
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationIsLongRunningParameter</"
+"literal> &mdash; the request parameter used to propagate information about "
+"whether the conversation is long-running, default to "
+"<literal>conversationIsLongRunning</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:936
+#, no-c-format
+msgid "org.jboss.seam.core.pages"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:938
+#, no-c-format
+msgid "Internal component for Seam workspace management. Always installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:943
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.pages.noConversationViewId</literal> &mdash; "
+"global setting for the view id to redirect to when a conversation entry is "
+"not found on the server side."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:951
+#, no-c-format
+msgid "org.jboss.seam.core.ejb"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:953
+#, no-c-format
+msgid ""
+"Bootstraps the JBoss Embeddable EJB3 container. Install as class "
+"<literal>org.jboss.seam.core.Ejb</literal>. This is useful when using Seam "
+"with EJB components outside the context of a Java EE 5 application server."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:956
+#, no-c-format
+msgid ""
+"The basic Embedded EJB configuration is defined in <literal>jboss-embedded-"
+"beans.xml</literal>. Additional microcontainer configuration (for example, "
+"extra datasources) may be specified by <literal>jboss-beans.xml</literal> or "
+"<literal>META-INF/jboss-beans.xml</literal> in the classpath."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:962
+#, no-c-format
+msgid "org.jboss.seam.core.microcontainer"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:964
+#, no-c-format
+msgid ""
+"Bootstraps the JBoss microcontainer. Install as class <literal>org.jboss."
+"seam.core.Microcontainer</literal>. This is useful when using Seam with "
+"Hibernate and no EJB components outside the context of a Java EE application "
+"server. The microcontainer can provide a partial EE environment with JNDI, "
+"JTA, a JCA datasource and Hibernate."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:967
+#, no-c-format
+msgid ""
+"The microcontainer configuration may be specified by <literal>jboss-beans."
+"xml</literal> or <literal>META-INF/jboss-beans.xml</literal> in the "
+"classpath."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:973
+#, no-c-format
+msgid "org.jboss.seam.core.jbpm"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:975
+#, no-c-format
+msgid ""
+"Bootstraps a <literal>JbpmConfiguration</literal>. Install as class "
+"<literal>org.jboss.seam.core.Jbpm</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:980
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.jbpm.processDefinitions</literal> &mdash; a "
+"list of resource names of jPDL files to be used for orchestration of "
+"business processes."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:985
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.jbpm.pageflowDefinitions</literal> &mdash; a "
+"list of resource names of jPDL files to be used for orchestration of "
+"conversation page flows."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:993
+#, no-c-format
+msgid "org.jboss.seam.core.conversationEntries"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:995
+#, no-c-format
+msgid ""
+"Internal session-scoped component recording the active long-running "
+"conversations between requests."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1001
+#, no-c-format
+msgid "org.jboss.seam.core.facesPage"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1003
+#, no-c-format
+msgid ""
+"Internal page-scoped component recording the conversation context associated "
+"with a page."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1009
+#, no-c-format
+msgid "org.jboss.seam.core.persistenceContexts"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1011
+#, no-c-format
+msgid ""
+"Internal component recording the persistence contexts which were used in the "
+"current conversation."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1017
+#, no-c-format
+msgid "org.jboss.seam.jms.queueConnection"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1019
+#, no-c-format
+msgid ""
+"Manages a JMS <literal>QueueConnection</literal>. Installed whenever managed "
+"managed <literal>QueueSender</literal> is installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1024
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.jms.queueConnection.queueConnectionFactoryJndiName</"
+"literal> &mdash; the JNDI name of a JMS <literal>QueueConnectionFactory</"
+"literal>. Default to <literal>UIL2ConnectionFactory</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1032
+#, no-c-format
+msgid "org.jboss.seam.jms.topicConnection"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1034
+#, no-c-format
+msgid ""
+"Manages a JMS <literal>TopicConnection</literal>. Installed whenever managed "
+"managed <literal>TopicPublisher</literal> is installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1039
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.jms.topicConnection.topicConnectionFactoryJndiName</"
+"literal> &mdash; the JNDI name of a JMS <literal>TopicConnectionFactory</"
+"literal>. Default to <literal>UIL2ConnectionFactory</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1047
+#, no-c-format
+msgid "org.jboss.seam.persistence.persistenceProvider"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1049
+#, no-c-format
+msgid "Abstraction layer for non-standardized features of JPA provider."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1055
+#, no-c-format
+msgid "org.jboss.seam.core.validation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1057
+#, no-c-format
+msgid "Internal component for Hibernate Validator support."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1063
+#, no-c-format
+msgid "org.jboss.seam.debug.introspector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1065 Components.xml:1073
+#, no-c-format
+msgid "Support for the Seam Debug Page."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1071
+#, no-c-format
+msgid "org.jboss.seam.debug.contexts"
+msgstr ""
+
+#. Tag: title
+#: Components.xml:1082
+#, no-c-format
+msgid "Special components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1083
+#, no-c-format
+msgid ""
+"Certain special Seam component classes are installable multiple times under "
+"names specified in the Seam configuration. For example, the following lines "
+"in <literal>components.xml</literal> install and configure two Seam "
+"components:"
+msgstr ""
+
+#. Tag: programlisting
+#: Components.xml:1086
+#, no-c-format
+msgid ""
+"&lt;component name=\"bookingDatabase\"\n"
+"          class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"    &lt;property name=\"persistenceUnitJndiName\"&gt;java:/comp/emf/"
+"bookingPersistence&lt;/property&gt;\n"
+"&lt;/component&gt;\n"
+"\n"
+"&lt;component name=\"userDatabase\"\n"
+"          class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"    &lt;property name=\"persistenceUnitJndiName\"&gt;java:/comp/emf/"
+"userPersistence&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1087
+#, no-c-format
+msgid ""
+"The Seam component names are <literal>bookingDatabase</literal> and "
+"<literal>userDatabase</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1092
+#, no-c-format
+msgid "&lt;entityManager&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1093
+#, no-c-format
+msgid "org.jboss.seam.core.ManagedPersistenceContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1095
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed <literal>EntityManager</"
+"literal> with an extended persistence context."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1100
+#, no-c-format
+msgid ""
+"<literal>&lt;entityManager&gt;.entityManagerFactory</literal> &mdash; a "
+"value binding expression that evaluates to an instance of "
+"<literal>EntityManagerFactory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1103
+#, no-c-format
+msgid ""
+"<literal>&lt;entityManager&gt;.persistenceUnitJndiName</literal> &mdash; the "
+"JNDI name of the entity manager factory, default to <literal>java:/&lt;"
+"managedPersistenceContext&gt;</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1111
+#, no-c-format
+msgid "&lt;entityManagerFactory&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1112
+#, no-c-format
+msgid "org.jboss.seam.core.EntityManagerFactory"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1114
+#, no-c-format
+msgid ""
+"Manages a JPA <literal>EntityManagerFactory</literal>. This is most useful "
+"when using JPA outside of an EJB 3.0 supporting environment."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1119
+#, no-c-format
+msgid ""
+"<literal>entityManagerFactory.persistenceUnitName</literal> &mdash; the name "
+"of the persistence unit."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1124 Components.xml:1162
+#, no-c-format
+msgid "See the API JavaDoc for further configuration properties."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1130
+#, no-c-format
+msgid "&lt;session&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1131
+#, no-c-format
+msgid "org.jboss.seam.core.ManagedSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1133
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed Hibernate "
+"<literal>Session</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1138
+#, no-c-format
+msgid ""
+"<literal>&lt;session&gt;.sessionFactory</literal> &mdash; a value binding "
+"expression that evaluates to an instance of <literal>SessionFactory</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1141
+#, no-c-format
+msgid ""
+"<literal>&lt;session&gt;.sessionFactoryJndiName</literal> &mdash; the JNDI "
+"name of the session factory, default to <literal>java:/&lt;managedSession&gt;"
+"</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1149
+#, no-c-format
+msgid "&lt;sessionFactory&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1150
+#, no-c-format
+msgid "org.jboss.seam.core.HibernateSessionFactory"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1152
+#, no-c-format
+msgid "Manages a Hibernate <literal>SessionFactory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1157
+#, no-c-format
+msgid ""
+"<literal>&lt;sessionFactory&gt;.cfgResourceName</literal> &mdash; the path "
+"to the configuration file. Default to <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1168
+#, no-c-format
+msgid "&lt;managedQueueSender&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1169
+#, no-c-format
+msgid "org.jboss.seam.jms.ManagedQueueSender"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1171
+#, no-c-format
+msgid ""
+"Manager component for an event scoped managed JMS <literal>QueueSender</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1176
+#, no-c-format
+msgid ""
+"<literal>&lt;managedQueueSender&gt;.queueJndiName</literal> &mdash; the JNDI "
+"name of the JMS queue."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1184
+#, no-c-format
+msgid "&lt;managedTopicPublisher&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1185
+#, no-c-format
+msgid "org.jboss.seam.jms.ManagedTopicPublisher"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1187
+#, no-c-format
+msgid ""
+"Manager component for an event scoped managed JMS <literal>TopicPublisher</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1192
+#, no-c-format
+msgid ""
+"<literal>&lt;managedTopicPublisher&gt;.topicJndiName</literal> &mdash; the "
+"JNDI name of the JMS topic."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1200
+#, no-c-format
+msgid "&lt;managedWorkingMemory&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1201
+#, no-c-format
+msgid "org.jboss.seam.drools.ManagedWorkingMemory"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1203
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed Drools "
+"<literal>WorkingMemory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1208
+#, no-c-format
+msgid ""
+"<literal>&lt;managedWorkingMemory&gt;.ruleBase</literal> &mdash; a value "
+"expression that evaluates to an instance of <literal>RuleBase</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1216
+#, no-c-format
+msgid "&lt;ruleBase&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1217
+#, no-c-format
+msgid "org.jboss.seam.drools.RuleBase"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1219
+#, no-c-format
+msgid ""
+"Manager component for an application scoped Drools <literal>RuleBase</"
+"literal>. <emphasis>Note that this is not really intended for production "
+"usage, since it does not support dynamic installation of new rules.</"
+"emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1224
+#, no-c-format
+msgid ""
+"<literal>&lt;ruleBase&gt;.ruleFiles</literal> &mdash; a list of files "
+"containing Drools rules."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1227
+#, no-c-format
+msgid ""
+"<literal>&lt;ruleBase&gt;.dslFile</literal> &mdash; a Drools DSL definition."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1235
+#, no-c-format
+msgid "&lt;entityHome&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1236
+#, no-c-format
+msgid "org.jboss.seam.framework.EntityHome"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1240
+#, no-c-format
+msgid "&lt;hibernateEntityHome&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1241
+#, no-c-format
+msgid "org.jboss.seam.framework.HibernateEntityHome"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1245
+#, no-c-format
+msgid "&lt;entityQuery&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1246
+#, no-c-format
+msgid "org.jboss.seam.framework.EntityQuery"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1250
+#, no-c-format
+msgid "&lt;hibernateEntityQuery&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1251
+#, no-c-format
+msgid "org.jboss.seam.framework.HibernateEntityQuery"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Concepts.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Concepts.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Concepts.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1922 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Concepts.xml:10
+#, no-c-format
+msgid "The contextual component model"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:11
+#, no-c-format
+msgid ""
+"The two core concepts in Seam are the notion of a <emphasis>context</"
+"emphasis> and the notion of a <emphasis>component</emphasis>. Components are "
+"stateful objects, usually EJBs, and an instance of a component is associated "
+"with a context, and given a name in that context. <emphasis>Bijection</"
+"emphasis> provides a mechanism for aliasing internal component names "
+"(instance variables) to contextual names, allowing component trees to be "
+"dynamically assembled, and reassembled by Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:14
+#, no-c-format
+msgid "Let's start by describing the contexts built in to Seam."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:17
+#, no-c-format
+msgid "Seam contexts"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:18
+#, no-c-format
+msgid ""
+"Seam contexts are created and destroyed by the framework. The application "
+"does not control context demarcation via explicit Java API calls. Context "
+"are usually implicit. In some cases, however, contexts are demarcated via "
+"annotations."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:21
+#, no-c-format
+msgid "The basic Seam contexts are:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:26
+#, no-c-format
+msgid "<para>Stateless context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:31
+#, no-c-format
+msgid "Event (or request) context"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:36 Concepts.xml:151
+#, no-c-format
+msgid "<para>Page context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:41 Concepts.xml:156
+#, no-c-format
+msgid "<para>Conversation context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:46 Concepts.xml:161
+#, no-c-format
+msgid "<para>Session context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:51 Concepts.xml:166
+#, no-c-format
+msgid "<para>Business process context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:56 Concepts.xml:171
+#, no-c-format
+msgid "<para>Application context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:61
+#, no-c-format
+msgid ""
+"You will recognize some of these contexts from servlet and related "
+"specifications. However, two of them might be new to you: "
+"<emphasis>conversation context</emphasis>, and <emphasis>business process "
+"context</emphasis>. One reason state management in web applications is so "
+"fragile and error-prone is that the three built-in contexts (request, "
+"session and application) are not especially meaningful from the point of "
+"view of the business logic. A user login session, for example, is a fairly "
+"arbitrary construct in terms of the actual application work flow. Therefore, "
+"most Seam components are scoped to the conversation or business process "
+"contexts, since they are the contexts which are most meaningful in terms of "
+"the application."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:64
+#, no-c-format
+msgid "Let's look at each context in turn."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:67
+#, no-c-format
+msgid "<title>Stateless context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:68
+#, no-c-format
+msgid ""
+"Components which are truly stateless (stateless session beans, primarily) "
+"always live in the stateless context (this is really a non-context). "
+"Stateless components are not very interesting, and are arguably not very "
+"object-oriented. Nevertheless, they are important and often useful."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:71
+#, no-c-format
+msgid "<title>Event context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:72
+#, no-c-format
+msgid ""
+"The event context is the \"narrowest\" stateful context, and is a "
+"generalization of the notion of the web request context to cover other kinds "
+"of events. Nevertheless, the event context associated with the lifecycle of "
+"a JSF request is the most important example of an event context, and the one "
+"you will work with most often. Components associated with the event context "
+"are destroyed at the end of the request, but their state is available and "
+"well-defined for at least the lifecycle of the request."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:75
+#, no-c-format
+msgid ""
+"When you invoke a Seam component via RMI, or Seam Remoting, the event "
+"context is created and destroyed just for the invocation."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:78
+#, no-c-format
+msgid "<title>Page context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:79
+#, no-c-format
+msgid ""
+"The page context allows you to associate state with a particular instance of "
+"a rendered page. You can initialize state in your event listener, or while "
+"actually rendering the page, and then have access to it from any event that "
+"originates from that page. This is especially useful for functionality like "
+"clickable lists, where the list is backed by changing data on the server "
+"side. The state is actually serialized to the client, so this construct is "
+"extremely robust with respect to multi-window operation and the back button."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:82
+#, no-c-format
+msgid "<title>Conversation context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:83
+#, no-c-format
+msgid ""
+"The conversation context is a truly central concept in Seam. A "
+"<emphasis>conversation</emphasis> is a unit of work from the point of view "
+"of the user. It might span several interactions with the user, several "
+"requests, and several database transactions. But to the user, a conversation "
+"solves a single problem. For example, \"book hotel\", \"approve contract\", "
+"\"create order\" are all conversations. You might like to think of a "
+"conversation implementing a single \"use case\" or \"user story\", but the "
+"relationship is not necessarily quite exact."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:86
+#, no-c-format
+msgid ""
+"A conversation holds state associated with \"what the user is doing now, in "
+"this window\". A single user may have multiple conversations in progress at "
+"any point in time, usually in multiple windows. The conversation context "
+"allows us to ensure that state from the different conversations does not "
+"collide and cause bugs."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:89
+#, no-c-format
+msgid ""
+"It might take you some time to get used to thinking of applications in terms "
+"of conversations. But once you get used to it, we think you'll love the "
+"notion, and never be able to not think in terms of conversations again!"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:92
+#, no-c-format
+msgid ""
+"Some conversations last for just a single request. Conversations that span "
+"multiple requests must be demarcated using annotations provided by Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:95
+#, no-c-format
+msgid ""
+"Some conversations are also <emphasis>tasks</emphasis>. A task is a "
+"conversation that is significant in terms of a long-running business "
+"process, and has the potential to trigger a business process state "
+"transition when it is successfully completed. Seam provides a special set of "
+"annotations for task demarcation."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:98
+#, no-c-format
+msgid ""
+"Conversations may be <emphasis>nested</emphasis>, with one conversation "
+"taking place \"inside\" a wider conversation. This is an advanced feature."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:101
+#, no-c-format
+msgid ""
+"Usually, conversation state is actually held by Seam in the servlet session "
+"between requests. Seam implements configurable <emphasis>conversation "
+"timeout</emphasis>, automatically destroying inactive conversations, and "
+"thus ensuring that the state held by a single user login session does not "
+"grow without bound if the user abandons conversations."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:104
+#, no-c-format
+msgid ""
+"Seam serializes processing of concurrent requests that take place in the "
+"same long-running conversation context, in the same process."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:107
+#, no-c-format
+msgid ""
+"Alternatively, Seam may be configured to keep conversational state in the "
+"client browser."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:110
+#, no-c-format
+msgid "<title>Session context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:111
+#, no-c-format
+msgid ""
+"A session context holds state associated with the user login session. While "
+"there are some cases where it is useful to share state between several "
+"conversations, we generally frown on the use of session context for holding "
+"components other than global information about the logged in user."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:114
+#, no-c-format
+msgid ""
+"In a JSR-168 portal environment, the session context represents the portlet "
+"session."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:117
+#, no-c-format
+msgid "<title>Business process context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:118
+#, no-c-format
+msgid ""
+"The business process context holds state associated with the long running "
+"business process. This state is managed and made persistent by the BPM "
+"engine (JBoss jBPM). The business process spans multiple interactions with "
+"multiple users, so this state is shared between multiple users, but in a "
+"well-defined manner. The current task determines the current business "
+"process instance, and the lifecycle of the business process is defined "
+"externally using a <emphasis>process definition language</emphasis>, so "
+"there are no special annotations for business process demarcation."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:121
+#, no-c-format
+msgid "<title>Application context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:122
+#, no-c-format
+msgid ""
+"The application context is the familiar servlet context from the servlet "
+"spec. Application context is mainly useful for holding static information "
+"such as configuration data, reference data or metamodels. For example, Seam "
+"stores its own configuration and metamodel in the application context."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:125
+#, no-c-format
+msgid "Context variables"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:126
+#, no-c-format
+msgid ""
+"A context defines a namespace, a set of <emphasis>context variables</"
+"emphasis>. These work much the same as session or request attributes in the "
+"servlet spec. You may bind any value you like to a context variable, but "
+"usually we bind Seam component instances to context variables."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:129
+#, no-c-format
+msgid ""
+"So, within a context, a component instance is identified by the context "
+"variable name (this is usually, but not always, the same as the component "
+"name). You may programatically access a named component instance in a "
+"particular scope via the <literal>Contexts</literal> class, which provides "
+"access to several thread-bound instances of the <literal>Context</literal> "
+"interface:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:132
+#, no-c-format
+msgid "User user = (User) Contexts.getSessionContext().get(\"user\");"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:133
+#, no-c-format
+msgid "You may also set or change the value associated with a name:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:136
+#, no-c-format
+msgid "Contexts.getSessionContext().set(\"user\", user);"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:137
+#, no-c-format
+msgid ""
+"Usually, however, we obtain components from a context via injection, and put "
+"component instances into a context via outjection."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:140
+#, no-c-format
+msgid "Context search priority"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:141
+#, no-c-format
+msgid ""
+"Sometimes, as above, component instances are obtained from a particular "
+"known scope. Other times, all stateful scopes are searched, in "
+"<emphasis>priority order</emphasis>. The order is as follows:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:146
+#, no-c-format
+msgid "<para>Event context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:176
+#, no-c-format
+msgid ""
+"You can perform a priority search by calling <literal>Contexts."
+"lookupInStatefulContexts()</literal>. Whenever you access a component by "
+"name from a JSF page, a priority search occurs."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:179
+#, no-c-format
+msgid "Concurrency model"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:180
+#, no-c-format
+msgid ""
+"Neither the servlet nor EJB specifications define any facilities for "
+"managing concurrent requests originating from the same client. The servlet "
+"container simply lets all threads run concurrently and leaves enforcing "
+"threadsafeness to application code. The EJB container allows stateless "
+"components to be accessed concurrently, and throws an exception if multiple "
+"threads access a stateful session bean."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:183
+#, no-c-format
+msgid ""
+"This behavior might have been okay in old-style web applications which were "
+"based around fine-grained, synchronous requests. But for modern applications "
+"which make heavy use of many fine-grained, asynchronous (AJAX) requests, "
+"concurrency is a fact of life, and must be supported by the programming "
+"model. Seam weaves a concurrency management layer into its context model."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:186
+#, no-c-format
+msgid ""
+"The Seam session and application contexts are multithreaded. Seam will allow "
+"concurrent requests in a context to be processed concurrently. The event and "
+"page contexts are by nature single threaded. The business process context is "
+"strictly speaking multi-threaded, but in practice concurrency is "
+"sufficiently rare that this fact may be disregarded most of the time. "
+"Finally, Seam enforces a <emphasis>single thread per conversation per "
+"process</emphasis> model for the conversation context by serializing "
+"concurrent requests in the same long-running conversation context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:189
+#, no-c-format
+msgid ""
+"Since the session context is multithreaded, and often contains volatile "
+"state, session scope components are always protected by Seam from concurrent "
+"access. Seam serializes requests to session scope session beans and "
+"JavaBeans by default (and detects and breaks any deadlocks that occur). This "
+"is not the default behaviour for application scoped components however, "
+"since application scoped components do not usually hold volatile state and "
+"because synchronization at the global level is <emphasis>extremely</"
+"emphasis> expensive. However, you can force a serialized threading model on "
+"any session bean or JavaBean component by adding the <literal>@Synchronized</"
+"literal> annotation."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:192
+#, no-c-format
+msgid ""
+"This concurrency model means that AJAX clients can safely use volatile "
+"session and conversational state, without the need for any special work on "
+"the part of the developer."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:195
+#, no-c-format
+msgid "Seam components"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:196
+#, no-c-format
+msgid ""
+"Seam components are POJOs (Plain Old Java Objects). In particular, they are "
+"JavaBeans or EJB 3.0 enterprise beans. While Seam does not require that "
+"components be EJBs and can even be used without an EJB 3.0 compliant "
+"container, Seam was designed with EJB 3.0 in mind and includes deep "
+"integration with EJB 3.0. Seam supports the following <emphasis>component "
+"types</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:201
+#, no-c-format
+msgid "EJB 3.0 stateless session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:206
+#, no-c-format
+msgid "EJB 3.0 stateful session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:211
+#, no-c-format
+msgid "EJB 3.0 entity beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:216
+#, no-c-format
+msgid "<para>JavaBeans</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:221
+#, no-c-format
+msgid "EJB 3.0 message-driven beans"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:226
+#, no-c-format
+msgid "Stateless session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:227
+#, no-c-format
+msgid ""
+"Stateless session bean components are not able to hold state across multiple "
+"invocations. Therefore, they usually work by operating upon the state of "
+"other components in the various Seam contexts. They may be used as JSF "
+"action listeners, but cannot provide properties to JSF components for "
+"display."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:230
+#, no-c-format
+msgid "Stateless session beans always live in the stateless context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:233
+#, no-c-format
+msgid ""
+"Stateless session beans are the least interesting kind of Seam component."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:236
+#, no-c-format
+msgid "Stateful session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:237
+#, no-c-format
+msgid ""
+"Stateful session bean components are able to hold state not only across "
+"multiple invocations of the bean, but also across multiple requests. "
+"Application state that does not belong in the database should usually be "
+"held by stateful session beans. This is a major difference between Seam and "
+"many other web application frameworks. Instead of sticking information about "
+"the current conversation directly in the <literal>HttpSession</literal>, you "
+"should keep it in instance variables of a stateful session bean that is "
+"bound to the conversation context. This allows Seam to manage the lifecycle "
+"of this state for you, and ensure that there are no collisions between state "
+"relating to different concurrent conversations."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:240
+#, no-c-format
+msgid ""
+"Stateful session beans are often used as JSF action listener, and as backing "
+"beans that provide properties to JSF components for display or form "
+"submission."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:243
+#, no-c-format
+msgid ""
+"By default, stateful session beans are bound to the conversation context. "
+"They may never be bound to the page or stateless contexts."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:246
+#, no-c-format
+msgid ""
+"Concurrent requests to session-scoped stateful session beans are always "
+"serialized by Seam."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:249
+#, no-c-format
+msgid "Entity beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:250
+#, no-c-format
+msgid ""
+"Entity beans may be bound to a context variable and function as a seam "
+"component. Because entities have a persistent identity in addition to their "
+"contextual identity, entity instances are usually bound explicitly in Java "
+"code, rather than being instantiated implicitly by Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:253
+#, no-c-format
+msgid ""
+"Entity bean components do not support bijection or context demarcation. Nor "
+"does invocation of an entity bean trigger validation."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:256
+#, no-c-format
+msgid ""
+"Entity beans are not usually used as JSF action listeners, but do often "
+"function as backing beans that provide properties to JSF components for "
+"display or form submission. In particular, it is common to use an entity as "
+"a backing bean, together with a stateless session bean action listener to "
+"implement create/update/delete type functionality."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:259
+#, no-c-format
+msgid ""
+"By default, entity beans are bound to the conversation context. They may "
+"never be bound to the stateless context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:262
+#, no-c-format
+msgid ""
+"Note that it in a clustered environment is somewhat less efficient to bind "
+"an entity bean directly to a conversation or session scoped Seam context "
+"variable than it would be to hold a reference to the entity bean in a "
+"stateful session bean. For this reason, not all Seam applications define "
+"entity beans to be Seam components."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:265
+#, no-c-format
+msgid "<title>JavaBeans</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:266
+#, no-c-format
+msgid ""
+"Javabeans may be used just like a stateless or stateful session bean. "
+"However, they do not provide the functionality of a session bean "
+"(declarative transaction demarcation, declarative security, efficient "
+"clustered state replication, EJB 3.0 persistence, timeout methods, etc)."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:269
+#, no-c-format
+msgid ""
+"In a later chapter, we show you how to use Seam and Hibernate without an EJB "
+"container. In this use case, components are JavaBeans instead of session "
+"beans. Note, however, that in many application servers it is somewhat less "
+"efficient to cluster conversation or session scoped Seam JavaBean components "
+"than it is to cluster stateful session bean components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:272
+#, no-c-format
+msgid "By default, JavaBeans are bound to the event context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:275
+#, no-c-format
+msgid ""
+"Concurrent requests to session-scoped JavaBeans are always serialized by "
+"Seam."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:278
+#, no-c-format
+msgid "Message-driven beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:279
+#, no-c-format
+msgid ""
+"Message-driven beans may function as a seam component. However, message-"
+"driven beans are called quite differently to other Seam components - instead "
+"of invoking them via the context variable, they listen for messages sent to "
+"a JMS queue or topic."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:282
+#, no-c-format
+msgid ""
+"Message-driven beans may not be bound to a Seam context. Nor do they have "
+"access to the session or conversation state of their \"caller\". However, "
+"they do support bijection and some other Seam functionality."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:285
+#, no-c-format
+msgid "Interception"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:286
+#, no-c-format
+msgid ""
+"In order to perform its magic (bijection, context demarcation, validation, "
+"etc), Seam must intercept component invocations. For JavaBeans, Seam is in "
+"full control of instantiation of the component, and no special configuration "
+"is needed. For entity beans, interception is not required since bijection "
+"and context demarcation are not defined. For session beans, we must register "
+"an EJB interceptor for the session bean component. We could use an "
+"annotation, as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:289
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:290
+#, no-c-format
+msgid ""
+"But a much better way is to define the interceptor in <literal>ejb-jar.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:293
+#, no-c-format
+msgid ""
+"&lt;interceptors&gt;\n"
+"   &lt;interceptor&gt;\n"
+"      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"   &lt;/interceptor&gt;\n"
+"&lt;/interceptors&gt;\n"
+"   \n"
+"&lt;assembly-descriptor&gt;\n"
+"   &lt;interceptor-binding&gt;\n"
+"      &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"   &lt;/interceptor-binding&gt;\n"
+"&lt;/assembly-descriptor&gt;"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:294
+#, no-c-format
+msgid "Component names"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:295
+#, no-c-format
+msgid ""
+"All seam components need a name. We can assign a name to a component using "
+"the <literal>@Name</literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:298
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:299
+#, no-c-format
+msgid ""
+"This name is the <emphasis>seam component name</emphasis> and is not related "
+"to any other name defined by the EJB specification. However, seam component "
+"names work just like JSF managed bean names and you can think of the two "
+"concepts as identical."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:302
+#, no-c-format
+msgid ""
+"<literal>@Name</literal> is not the only way to define a component name, but "
+"we always need to specify the name <emphasis>somewhere</emphasis>. If we "
+"don't, then none of the other Seam annotations will function."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:305
+#, no-c-format
+msgid ""
+"Just like in JSF, a seam component instance is usually bound to a context "
+"variable with the same name as the component name. So, for example, we would "
+"access the <literal>LoginAction</literal> using <literal>Contexts."
+"getStatelessContext().get(\"loginAction\")</literal>. In particular, "
+"whenever Seam itself instantiates a component, it binds the new instance to "
+"a variable with the component name. However, again like JSF, it is possible "
+"for the application to bind a component to some other context variable by "
+"programmatic API call. This is only useful if a particular component serves "
+"more than one role in the system. For example, the currently logged in "
+"<literal>User</literal> might be bound to the <literal>currentUser</literal> "
+"session context variable, while a <literal>User</literal> that is the "
+"subject of some administration functionality might be bound to the "
+"<literal>user</literal> conversation context variable."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:308
+#, no-c-format
+msgid ""
+"For very large applications, and for built-in seam components, qualified "
+"names are often used."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:311
+#, no-c-format
+msgid ""
+"@Name(\"com.jboss.myapp.loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:312
+#, no-c-format
+msgid ""
+"We may use the qualified component name both in Java code and in JSF's "
+"expression language:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:315
+#, no-c-format
+msgid ""
+"&lt;h:commandButton type=\"submit\" value=\"Login\"\n"
+"                 action=\"#{com.jboss.myapp.loginAction.login}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:316
+#, no-c-format
+msgid ""
+"Since this is noisy, Seam also provides a means of aliasing a qualified name "
+"to a simple name. Add a line like this to the <literal>components.xml</"
+"literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:319
+#, no-c-format
+msgid ""
+"&lt;factory name=\"loginAction\" scope=\"STATELESS\" value=\"#{com.jboss."
+"myapp.loginAction}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:320
+#, no-c-format
+msgid ""
+"All of the built-in Seam components have qualified names, but most of them "
+"are aliased to a simple name by the <literal>components.xml</literal> file "
+"included in the Seam jar."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:323
+#, no-c-format
+msgid "Defining the component scope"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:324
+#, no-c-format
+msgid ""
+"We can override the default scope (context) of a component using the "
+"<literal>@Scope</literal> annotation. This lets us define what context a "
+"component instance is bound to, when it is instantiated by Seam."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:327
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(SESSION)\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:328
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.ScopeType</literal> defines an enumeration of "
+"possible scopes."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:331
+#, no-c-format
+msgid "Components with multiple roles"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:332
+#, no-c-format
+msgid ""
+"Some Seam component classes can fulfill more than one role in the system. "
+"For example, we often have a <literal>User</literal> class which is usually "
+"used as a session-scoped component representing the current user but is used "
+"in user administration screens as a conversation-scoped component. The "
+"<literal>@Role</literal> annotation lets us define an additional named role "
+"for a component, with a different scope&mdash;it lets us bind the same "
+"component class to different context variables. (Any Seam component "
+"<emphasis>instance</emphasis> may be bound to multiple context variables, "
+"but this lets us do it at the class level, and take advantage of auto-"
+"instantiation.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:335
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(CONVERSATION)\n"
+"@Role(name=\"currentUser\", scope=SESSION)\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:336
+#, no-c-format
+msgid ""
+"The <literal>@Roles</literal> annotation lets us specify as many additional "
+"roles as we like."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:339
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(CONVERSATION)\n"
+"@Roles({@Role(name=\"currentUser\", scope=SESSION)\n"
+"        @Role(name=\"tempUser\", scope=EVENT)})\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:340
+#, no-c-format
+msgid "Built-in components"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:341
+#, no-c-format
+msgid ""
+"Like many good frameworks, Seam eats its own dogfood and is implemented "
+"mostly as a set of built-in Seam interceptors (see later) and Seam "
+"components. This makes it easy for applications to interact with built-in "
+"components at runtime or even customize the basic functionality of Seam by "
+"replacing the built-in components with custom implementations. The built-in "
+"components are defined in the Seam namespace <literal>org.jboss.seam.core</"
+"literal> and the Java package of the same name."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:344
+#, no-c-format
+msgid ""
+"The built-in components may be injected, just like any Seam components, but "
+"they also provide convenient static <literal>instance()</literal> methods:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:347
+#, no-c-format
+msgid "FacesMessages.instance().add(\"Welcome back, #{user.name}!\");"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:348
+#, no-c-format
+msgid ""
+"Seam was designed to integrate tightly in a Java EE 5 environment. However, "
+"we understand that there are many projects which are not running in a full "
+"EE environment. We also realize the critical importance of easy unit and "
+"integration testing using frameworks such as TestNG and JUnit. So, we've "
+"made it easy to run Seam in Java SE environments by allowing you to boostrap "
+"certain critical infrastructure normally only found in EE environments by "
+"installing built-in Seam components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:351
+#, no-c-format
+msgid ""
+"For example, you can run your EJB3 components in Tomcat or an integration "
+"test suite just by installing the built-in component <literal>org.jboss.seam."
+"core.ejb</literal>, which automatically bootstraps the JBoss Embeddable EJB3 "
+"container and deploys your EJB components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:354
+#, no-c-format
+msgid ""
+"Or, if you're not quite ready for the Brave New World of EJB 3.0, you can "
+"write a Seam application that uses only JavaBean components, together with "
+"Hibernate3 for persistence, by installing a built-in component that manages "
+"a Hibernate <literal>SessionFactory</literal>. When using Hibernate outside "
+"of a J2EE environment, you will also probably need a JTA transaction manager "
+"and JNDI server, which are available via the built-in component <literal>org."
+"jboss.seam.core.microcontainer</literal>. This lets you use the bulletproof "
+"JTA/JCA pooling datasource from JBoss application server in an SE "
+"environment like Tomcat!"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:357
+#, no-c-format
+msgid "Bijection"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:358
+#, no-c-format
+msgid ""
+"<emphasis>Dependency injection</emphasis> or <emphasis>inversion of control</"
+"emphasis> is by now a familiar concept to most Java developers. Dependency "
+"injection allows a component to obtain a reference to another component by "
+"having the container \"inject\" the other component to a setter method or "
+"instance variable. In all dependency injection implementations that we have "
+"seen, injection occurs when the component is constructed, and the reference "
+"does not subsequently change for the lifetime of the component instance. For "
+"stateless components, this is reasonable. From the point of view of a "
+"client, all instances of a particular stateless component are "
+"interchangeable. On the other hand, Seam emphasizes the use of stateful "
+"components. So traditional dependency injection is no longer a very useful "
+"construct. Seam introduces the notion of <emphasis>bijection</emphasis> as a "
+"generalization of injection. In contrast to injection, bijection is:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:363
+#, no-c-format
+msgid ""
+"<emphasis>contextual</emphasis> - bijection is used to assemble stateful "
+"components from various different contexts (a component from a \"wider\" "
+"context may even have a reference to a component from a \"narrower\" context)"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:368
+#, no-c-format
+msgid ""
+"<emphasis>bidirectional</emphasis> - values are injected from context "
+"variables into attributes of the component being invoked, and also "
+"<emphasis>outjected</emphasis> from the component attributes back out to the "
+"context, allowing the component being invoked to manipulate the values of "
+"contextual variables simply by setting its own instance variables"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:373
+#, no-c-format
+msgid ""
+"<emphasis>dynamic</emphasis> - since the value of contextual variables "
+"changes over time, and since Seam components are stateful, bijection takes "
+"place every time a component is invoked"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:378
+#, no-c-format
+msgid ""
+"In essence, bijection lets you alias a context variable to a component "
+"instance variable, by specifying that the value of the instance variable is "
+"injected, outjected, or both. Of course, we use annotations to enable "
+"bijection."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:381
+#, no-c-format
+msgid ""
+"The <literal>@In</literal> annotation specifies that a value should be "
+"injected, either into an instance variable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:384
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:385
+#, no-c-format
+msgid "or into a setter method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:388
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @In\n"
+"    public void setUser(User user) {\n"
+"        this.user=user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:389
+#, no-c-format
+msgid ""
+"By default, Seam will do a priority search of all contexts, using the name "
+"of the property or instance variable that is being injected. You may wish to "
+"specify the context variable name explicitly, using, for example, "
+"<literal>@In(\"currentUser\")</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:392
+#, no-c-format
+msgid ""
+"If you want Seam to create an instance of the component when there is no "
+"existing component instance bound to the named context variable, you should "
+"specify <literal>@In(create=true)</literal>. If the value is optional (it "
+"can be null), specify <literal>@In(required=false)</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:395
+#, no-c-format
+msgid ""
+"For some components, it can be repetitive to have to specify <literal>@In"
+"(create=true)</literal> everywhere they are used. In such cases, you can "
+"annotate the component <literal>@AutoCreate</literal>, and then it will "
+"always be created, whenever needed, even without the explicit use of "
+"<literal>create=true</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:398
+#, no-c-format
+msgid "You can even inject the value of an expression:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:401
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In(\"#{user.username}\") String username;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:402
+#, no-c-format
+msgid ""
+"(There is much more information about component lifecycle and injection in "
+"the next chapter.)"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:405
+#, no-c-format
+msgid ""
+"The <literal>@Out</literal> annotation specifies that an attribute should be "
+"outjected, either from an instance variable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:408
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @Out User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:409
+#, no-c-format
+msgid "or from a getter method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:412
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @Out\n"
+"    public User getUser() {\n"
+"        return user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:413
+#, no-c-format
+msgid "An attribute may be both injected and outjected:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:416
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In @Out User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:417
+#, no-c-format
+msgid "<para>or:</para>"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:420
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @In\n"
+"    public void setUser(User user) {\n"
+"        this.user=user;\n"
+"    }\n"
+"    \n"
+"    @Out\n"
+"    public User getUser() {\n"
+"        return user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:421
+#, no-c-format
+msgid "Lifecycle methods"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:422
+#, no-c-format
+msgid ""
+"Session bean and entity bean Seam components support all the usual EJB 3.0 "
+"lifecycle callback (<literal>@PostConstruct</literal>, <literal>@PreDestroy</"
+"literal>, etc). Seam extends all of these callbacks except "
+"<literal>@PreDestroy</literal> to JavaBean components. But Seam also defines "
+"its own component lifecycle callbacks."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:425
+#, no-c-format
+msgid ""
+"The <literal>@Create</literal> method is called every time Seam instantiates "
+"a component. Unlike the <literal>@PostConstruct</literal> method, this "
+"method is called after the component is fully constructed by the EJB "
+"container, and has access to all the usual Seam functionality (bijection, "
+"etc). Components may define only one <literal>@Create</literal> method."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:428
+#, no-c-format
+msgid ""
+"The <literal>@Destroy</literal> method is called when the context that the "
+"Seam component is bound to ends. Components may define only one "
+"<literal>@Destroy</literal> method. Stateful session bean components "
+"<emphasis>must</emphasis> define a method annotated <literal>@Destroy "
+"@Remove</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:431
+#, no-c-format
+msgid ""
+"Finally, a related annotation is the <literal>@Startup</literal> annotation, "
+"which may be applied to any application or session scoped component. The "
+"<literal>@Startup</literal> annotation tells Seam to instantiate the "
+"component immediately, when the context begins, instead of waiting until it "
+"is first referenced by a client. It is possible to control the order of "
+"instantiation of startup components by specifying <literal>@Startup(depends="
+"{....})</literal>."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:434
+#, no-c-format
+msgid "Conditional installation"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:435
+#, no-c-format
+msgid ""
+"The <literal>@Install</literal> annotation lets you control conditional "
+"installation of components that are required in some deployment scenarios "
+"and not in others. This is useful if:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:440
+#, no-c-format
+msgid "You want to mock out some infrastructural component in tests."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:445
+#, no-c-format
+msgid ""
+"You want change the implementation of a component in certain deployment "
+"scenarios."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:450
+#, no-c-format
+msgid ""
+"You want to install some components only if their dependencies are available "
+"(useful for framework authors)."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:455
+#, no-c-format
+msgid ""
+"<literal>@Install</literal> works by letting you specify "
+"<emphasis>precedence</emphasis> and <emphasis>dependencies</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:458
+#, no-c-format
+msgid ""
+"The precedence of a component is a number that Seam uses to decide which "
+"component to install when there are multiple classes with the same component "
+"name in the classpath. Seam will choose the component with the higher "
+"precendence. There are some predefined precedence values:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:463
+#, no-c-format
+msgid ""
+"<literal>BUILT_IN</literal> &mdash; the lowest precedece components are the "
+"components built in to Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:468
+#, no-c-format
+msgid ""
+"<literal>FRAMEWORK</literal> &mdash; components defined by third-party "
+"frameworks may override built-in components, but are overridden by "
+"application components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:473
+#, no-c-format
+msgid ""
+"<literal>APPLICATION</literal> &mdash; the default precedence. This is "
+"appropriate for most application components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:478
+#, no-c-format
+msgid ""
+"<literal>DEPLOYMENT</literal> &mdash; for application components which are "
+"deployment-specific."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:483
+#, no-c-format
+msgid "<literal>MOCK</literal> &mdash; for mock objects used in testing."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:488
+#, no-c-format
+msgid ""
+"Suppose we have a component named <literal>messageSender</literal> that "
+"talks to a JMS queue."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:491
+#, no-c-format
+msgid ""
+"@Name(\"messageSender\") \n"
+"public class MessageSender {\n"
+"    public void sendMessage() {\n"
+"        //do something with JMS\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:492
+#, no-c-format
+msgid ""
+"In our unit tests, we don't have a JMS queue available, so we would like to "
+"stub out this method. We'll create a <emphasis>mock</emphasis> component "
+"that exists in the classpath when unit tests are running, but is never "
+"deployed with the application:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:495
+#, no-c-format
+msgid ""
+"@Name(\"messageSender\") \n"
+"@Install(precedence=MOCK)\n"
+"public class MockMessageSender extends MessageSender {\n"
+"    public void sendMessage() {\n"
+"        //do nothing!\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:496
+#, no-c-format
+msgid ""
+"The <literal>precedence</literal> helps Seam decide which version to use "
+"when it finds both components in the classpath."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:499
+#, no-c-format
+msgid ""
+"This is nice if we are able to control exactly which classes are in the "
+"classpath. But if I'm writing a reusable framework with many dependecies, I "
+"don't want to have to break that framework across many jars. I want to be "
+"able to decide which components to install depending upon what other "
+"components are installed, and upon what classes are available in the "
+"classpath. The <literal>@Install</literal> annotation also controls this "
+"functionality. Seam uses this mechanism internally to enable conditional "
+"installation of many of the built-in components. However, you probably won't "
+"need to use it in your application."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:502
+#, no-c-format
+msgid "Logging"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:503
+#, no-c-format
+msgid "Who is not totally fed up with seeing noisy code like this?"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:506
+#, no-c-format
+msgid ""
+"private static final Log log = LogFactory.getLog(CreateOrderAction.class);\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    if ( log.isDebugEnabled() ) {\n"
+"        log.debug(\"Creating new order for user: \" + user.username() + \n"
+"            \" product: \" + product.name() \n"
+"            + \" quantity: \" + quantity);\n"
+"    }\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:507
+#, no-c-format
+msgid ""
+"It is difficult to imagine how the code for a simple log message could "
+"possibly be more verbose. There is more lines of code tied up in logging "
+"than in the actual business logic! I remain totally astonished that the Java "
+"community has not come up with anything better in 10 years."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:510
+#, no-c-format
+msgid ""
+"Seam provides a logging API built on top of Apache commons-logging that "
+"simplifies this code significantly:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:513
+#, no-c-format
+msgid ""
+"@Logger private Log log;\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    log.debug(\"Creating new order for user: #0 product: #1 quantity: #2\", "
+"user.username(), \n"
+"       product.name(), quantity);\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:514
+#, no-c-format
+msgid ""
+"It doesn't matter if you declare the <literal>log</literal> variable static "
+"or not&mdash;it will work either way."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:517
+#, no-c-format
+msgid ""
+"Note that we don't need the noisy <literal>if ( log.isDebugEnabled() )</"
+"literal> guard, since string concatenation happens <emphasis>inside</"
+"emphasis> the <literal>debug()</literal> method. Note also that we don't "
+"usually need to specify the log category explicitly, since Seam knows what "
+"component it is injecting the <literal>Log</literal> into."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:520
+#, no-c-format
+msgid ""
+"If <literal>User</literal> and <literal>Product</literal> are Seam "
+"components available in the current contexts, it gets even better:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:523
+#, no-c-format
+msgid ""
+"@Logger private Log log;\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    log.debug(\"Creating new order for user: #{user.username} product: #"
+"{product.name}\n"
+"       quantity: #0\", quantity);\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:524
+#, no-c-format
+msgid ""
+"The <literal>Mutable</literal> interface and <literal>@ReadOnly</literal>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:525
+#, no-c-format
+msgid ""
+"Many application servers feature an amazingly broken implementation of "
+"<literal>HttpSession</literal> clustering, where changes to the state of "
+"mutable objects bound to the session are only replicated when the "
+"application calls <literal>setAttribute()</literal> explicitly. This is a "
+"source of bugs that can not effectively be tested for at development time, "
+"since they will only manifest when failover occurs. Furthermore, the actual "
+"replication message contains the entire serialized object graph bound to the "
+"session attribute, which is inefficient."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:528
+#, no-c-format
+msgid ""
+"Of course, EJB stateful session beans must perform automatic dirty checking "
+"and replication of mutable state and a sophisticated EJB container can "
+"introduce optimizations such as attribute-level replication. Unfortunately, "
+"not all Seam users have the good fortune to be working in an environment "
+"that supports EJB 3.0. So, for session and conversation scoped JavaBean and "
+"entity bean components, Seam provides an extra layer of cluster-safe state "
+"management over the top of the web container session clustering."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:531
+#, no-c-format
+msgid ""
+"For session or conversation scoped JavaBean components, Seam automatically "
+"forces replication to occur by calling <literal>setAttribute()</literal> "
+"once in every request that the component was invoked by the application. Of "
+"course, this strategy is inefficient for read-mostly components. You can "
+"control this behavior by implementing the <literal>org.jboss.seam.core."
+"Mutable</literal> interface, or by extending <literal>org.jboss.seam.core."
+"AbstractMutable</literal>, and writing your own dirty-checking logic inside "
+"the component. For example,"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:534
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class Account extends AbstractMutable\n"
+"{\n"
+"    private BigDecimal balance;\n"
+"    \n"
+"    public void setBalance(BigDecimal balance)\n"
+"    {\n"
+"        setDirty(this.balance, balance);\n"
+"        this.balance = balance;\n"
+"    }\n"
+"    \n"
+"    public BigDecimal getBalance()\n"
+"    {\n"
+"        return balance;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:535
+#, no-c-format
+msgid ""
+"Or, you can use the <literal>@ReadOnly</literal> annotation to achieve a "
+"similar effect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:538
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class Account\n"
+"{\n"
+"    private BigDecimal balance;\n"
+"    \n"
+"    public void setBalance(BigDecimal balance)\n"
+"    {\n"
+"        this.balance = balance;\n"
+"    }\n"
+"    \n"
+"    @ReadOnly\n"
+"    public BigDecimal getBalance()\n"
+"    {\n"
+"        return balance;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:539
+#, no-c-format
+msgid ""
+"For session or conversation scoped entity bean components, Seam "
+"automatically forces replication to occur by calling <literal>setAttribute()"
+"</literal> once in every request, <emphasis>unless the (conversation-scoped) "
+"entity is currently associated with a Seam-managed persistence context, in "
+"which case no replication is needed</emphasis>. This strategy is not "
+"necessarily efficient, so session or conversation scope entity beans should "
+"be used with care. You can always write a stateful session bean or JavaBean "
+"component to \"manage\" the entity bean instance. For example,"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:542
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"account\")\n"
+"public class AccountManager extends AbstractMutable\n"
+"{\n"
+"    private Account account; // an entity bean\n"
+"    \n"
+"    @Unwrap\n"
+"    public void getAccount()\n"
+"    {\n"
+"        return account;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:543
+#, no-c-format
+msgid ""
+"Note that the <literal>EntityHome</literal> class in the Seam Application "
+"Framework provides a great example of this pattern."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:546
+#, no-c-format
+msgid "Factory and manager components"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:547
+#, no-c-format
+msgid ""
+"We often need to work with objects that are not Seam components. But we "
+"still want to be able to inject them into our components using <literal>@In</"
+"literal> and use them in value and method binding expressions, etc. "
+"Sometimes, we even need to tie them into the Seam context lifecycle "
+"(<literal>@Destroy</literal>, for example). So the Seam contexts can contain "
+"objects which are not Seam components, and Seam provides a couple of nice "
+"features that make it easier to work with non-component objects bound to "
+"contexts."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:550
+#, no-c-format
+msgid ""
+"The <emphasis>factory component pattern</emphasis> lets a Seam component act "
+"as the instantiator for a non-component object. A <emphasis>factory method</"
+"emphasis> will be called when a context variable is referenced but has no "
+"value bound to it. We define factory methods using the <literal>@Factory</"
+"literal> annotation. The factory method binds a value to the context "
+"variable, and determines the scope of the bound value. There are two styles "
+"of factory method. The first style returns a value, which is bound to the "
+"context by Seam:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:553
+#, no-c-format
+msgid ""
+"@Factory(scope=CONVERSATION)\n"
+"public List&lt;Customer&gt; getCustomerList() { \n"
+"    return ... ;\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:554
+#, no-c-format
+msgid ""
+"The second style is a method of type <literal>void</literal> which binds the "
+"value to the context variable itself:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:557
+#, no-c-format
+msgid ""
+"@DataModel List&lt;Customer&gt; customerList;\n"
+"\n"
+"@Factory(\"customerList\")\n"
+"public void initCustomerList() { \n"
+"    customerList = ...  ;\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:558
+#, no-c-format
+msgid ""
+"In both cases, the factory method is called when we reference the "
+"<literal>customerList</literal> context variable and its value is null, and "
+"then has no further part to play in the lifecycle of the value. An even more "
+"powerful pattern is the <emphasis>manager component pattern</emphasis>. In "
+"this case, we have a Seam component that is bound to a context variable, "
+"that manages the value of the context variable, while remaining invisible to "
+"clients."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:561
+#, no-c-format
+msgid ""
+"A manager component is any component with an <literal>@Unwrap</literal> "
+"method. This method returns the value that will be visable to clients, and "
+"is called <emphasis>every time</emphasis> a context variable is referenced."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:564
+#, no-c-format
+msgid ""
+"@Name(\"customerList\")\n"
+"@Scope(CONVERSATION)\n"
+"public class CustomerListManager\n"
+"{\n"
+"    ...\n"
+"    \n"
+"    @Unwrap\n"
+"    public List&lt;Customer&gt; getCustomerList() { \n"
+"        return ... ;\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:565
+#, no-c-format
+msgid ""
+"This pattern is especially useful if we have some heavyweight object that "
+"needs a cleanup operation when the context ends. In this case, the manager "
+"component may perform cleanup in the <literal>@Destroy</literal> method."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Configuration.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Configuration.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Configuration.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1435 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Configuration.xml:10
+#, no-c-format
+msgid "Configuring Seam and packaging Seam applications"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:11
+#, no-c-format
+msgid ""
+"Configuration is a very boring topic and an extremely tedious pastime. "
+"Unfortunately, several lines of XML are required to integrate Seam into your "
+"JSF implementation and servlet container. There's no need to be too put off "
+"by the following sections; you'll never need to type any of this stuff "
+"yourself, since you can just copy and paste from the example applications!"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:14
+#, no-c-format
+msgid "Basic Seam configuration"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:15
+#, no-c-format
+msgid ""
+"First, let's look at the basic configuration that is needed whenever we use "
+"Seam with JSF."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:18
+#, no-c-format
+msgid "Integrating Seam with JSF and your servlet container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:19
+#, no-c-format
+msgid ""
+"Seam requires the following entry in your <literal>web.xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:22
+#, no-c-format
+msgid ""
+"&lt;listener&gt;\n"
+"    &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/listener-"
+"class&gt;\n"
+"&lt;/listener&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:23
+#, no-c-format
+msgid ""
+"This listener is responsible for bootstrapping Seam, and for destroying "
+"session and application contexts."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:26
+#, no-c-format
+msgid ""
+"To integrate with the JSF request lifecycle, we also need a JSF "
+"<literal>PhaseListener</literal> registered in in the <literal>faces-config."
+"xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:29
+#, no-c-format
+msgid ""
+"&lt;lifecycle&gt;\n"
+"    &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-"
+"listener&gt;\n"
+"&lt;/lifecycle&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:30
+#, no-c-format
+msgid ""
+"The actual listener class here varies depending upon how you want to manage "
+"transaction demarcation (more on this below)."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:33
+#, no-c-format
+msgid ""
+"If you are using Sun's JSF 1.2 reference implementation, you should also add "
+"this to <literal>faces-config.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:36
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;el-resolver&gt;org.jboss.seam.jsf.SeamELResolver&lt;/el-"
+"resolver&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:37
+#, no-c-format
+msgid ""
+"(This line should not strictly speaking be necessary, but it works around a "
+"minor bug in the RI.)"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:40
+#, no-c-format
+msgid ""
+"Some JSF implementations have a broken implementation of server-side state "
+"saving that interferes with Seam's conversation propagation. If you have "
+"problems with conversation propagation during form submissions, try "
+"switching to client-side state saving. You'll need this in <literal>web.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:43
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;client&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:44
+#, no-c-format
+msgid "Seam servlet filters"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:45
+#, no-c-format
+msgid ""
+"Seam doesn't need any servlet filters for basic operation. However, there "
+"are several features which depend upon the use of filters. To make things "
+"easier for you guys, Seam lets you add and configure servlet filters just "
+"like you would configure other built-in Seam components. To take advantage "
+"of this feature, we must first install a master filter in <literal>web.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:48
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;/*&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:49
+#, no-c-format
+msgid "Adding the master filter enables the following built-in filters."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:52
+#, no-c-format
+msgid "Exception handling"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:53
+#, no-c-format
+msgid ""
+"This filter provides the exception mapping functionality in <literal>pages."
+"xml</literal> (almost all applications will need this). It also takes care "
+"of rolling back uncommitted transactions when uncaught exceptions occur. "
+"(According to the Java EE specification, the web container should do this "
+"automatically, but we've found that this behavior cannot be relied upon in "
+"all application servers. And it is certainly not required of plain servlet "
+"engines like Tomcat.)"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:56
+#, no-c-format
+msgid ""
+"By default, the exception handling filter will process all requests, however "
+"this behavior may be adjusted by adding a <literal>&lt;web:exception-"
+"filter&gt;</literal> entry to <literal>components.xml</literal>, as shown in "
+"this example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:59
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:web=\"http://jboss.com/products/seam/web\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                    http://jboss.com/products/seam/core-1.2.xsd\n"
+"                 http://jboss.com/products/seam/components \n"
+"                     http://jboss.com/products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/web \n"
+"                     http://jboss.com/products/seam/web-1.2.xsd\"&gt;\n"
+"\n"
+"    &lt;web:exception-filter url-pattern=\"*.seam\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:62 Configuration.xml:77 Configuration.xml:99
+#: Configuration.xml:124
+#, no-c-format
+msgid ""
+"<literal>url-pattern</literal> &mdash; Used to specify which requests are "
+"filtered, the default is all requests."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:67
+#, no-c-format
+msgid "Conversation propagation with redirects"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:68
+#, no-c-format
+msgid ""
+"This filter allows Seam to propagate the conversation context across browser "
+"redirects. It intercepts any browser redirects and adds a request parameter "
+"that specifies the Seam conversation identifier."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:71
+#, no-c-format
+msgid ""
+"The redirect filter will process all requests by default, but this behavior "
+"can also be adjusted in <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:74
+#, no-c-format
+msgid "&lt;web:redirect-filter url-pattern=\"*.seam\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:82
+#, no-c-format
+msgid "Multipart form submissions"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:83
+#, no-c-format
+msgid ""
+"This feature is necessary when using the Seam file upload JSF control. It "
+"detects multipart form requests and processes them according to the "
+"multipart/form-data specification (RFC-2388). To override the default "
+"settings, add the following entry to <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:86
+#, no-c-format
+msgid ""
+"&lt;web:multipart-filter create-temp-files=\"true\" \n"
+"        max-request-size=\"1000000\" \n"
+"        url-pattern=\"*.seam\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:89
+#, no-c-format
+msgid ""
+"<literal>create-temp-files</literal> &mdash; If set to <literal>true</"
+"literal>, uploaded files are written to a temporary file (instead of held in "
+"memory). This may be an important consideration if large file uploads are "
+"expected. The default setting is <literal>false</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:94
+#, no-c-format
+msgid ""
+"<literal>max-request-size</literal> &mdash; If the size of a file upload "
+"request (determined by reading the <literal>Content-Length</literal> header "
+"in the request) exceeds this value, the request will be aborted. The default "
+"setting is 0 (no size limit)."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:104
+#, no-c-format
+msgid "Character encoding"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:105
+#, no-c-format
+msgid "Sets the character encoding of submitted form data."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:108 Configuration.xml:136
+#, no-c-format
+msgid ""
+"This filter is not installed by default and requires an entry in "
+"<literal>components.xml</literal> to enable it:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:111
+#, no-c-format
+msgid ""
+"&lt;web:character-encoding-filter encoding=\"UTF-16\" \n"
+"        override-client=\"true\" \n"
+"        url-pattern=\"*.seam\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:114
+#, no-c-format
+msgid "<literal>encoding</literal> &mdash; The encoding to use."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:119
+#, no-c-format
+msgid ""
+"<literal>override-client</literal> &mdash; If this is set to <literal>true</"
+"literal>, the request encoding will be set to whatever is specified by "
+"<literal>encoding</literal> no matter whether the request already specifies "
+"an encoding or not. If set to <literal>false</literal>, the request encoding "
+"will only be set if the request doesn't already specify an encoding. The "
+"default setting is <literal>false</literal>."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:129
+#, no-c-format
+msgid "Context management for custom servlets"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:130
+#, no-c-format
+msgid ""
+"Requests sent direct to some servlet other than the JSF servlet are not "
+"processed through the JSF lifecycle, so Seam provides a servlet filter that "
+"can be applied to any other servlet that needs access to Seam components."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:133
+#, no-c-format
+msgid ""
+"This filter allows custom servlets to interact with the Seam contexts. It "
+"sets up the Seam contexts at the beginning of each request, and tears them "
+"down at the end of the request. You should make sure that this filter is "
+"<emphasis>never</emphasis> applied to the JSF <literal>FacesServlet</"
+"literal>. Seam uses the phase listener for context management in a JSF "
+"request."
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:139
+#, no-c-format
+msgid "&lt;web:context-filter url-pattern=\"/media/*\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:142
+#, no-c-format
+msgid ""
+"<literal>url-pattern</literal> &mdash; Used to specify which requests are "
+"filtered, the default is all requests. If the url-pattern is specified for "
+"the context filter, then the filter will be enabled (unless explicitly "
+"disabled)."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:147
+#, no-c-format
+msgid ""
+"The context filter expects to find the conversation id of any conversation "
+"context in a request parameter named <literal>conversationId</literal>. You "
+"are responsible for ensuring that it gets sent in the request."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:150
+#, no-c-format
+msgid ""
+"You are also responsible for ensuring propagation of any new conversation id "
+"back to the client. Seam exposes the conversation id as a property of the "
+"built in component <literal>conversation</literal>."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:153
+#, no-c-format
+msgid "Integrating Seam with your EJB container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:154
+#, no-c-format
+msgid ""
+"We need to apply the <literal>SeamInterceptor</literal> to our Seam "
+"components. The simplest way to do this is to add the following interceptor "
+"binding to the <literal>&lt;assembly-descriptor&gt;</literal> in "
+"<literal>ejb-jar.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:157
+#, no-c-format
+msgid ""
+"&lt;interceptor-binding&gt;\n"
+"    &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"    &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"&lt;/interceptor-binding&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:158
+#, no-c-format
+msgid ""
+"Seam needs to know where to go to find session beans in JNDI. One way to do "
+"this is specify the <literal>@JndiName</literal> annotation on every session "
+"bean Seam component. However, this is quite tedious. A better approach is to "
+"specify a pattern that Seam can use to calculate the JNDI name from the EJB "
+"name. Unfortunately, there is no standard mapping to global JNDI defined in "
+"the EJB3 specification, so this mapping is vendor-specific. We usually "
+"specify this option in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:161
+#, no-c-format
+msgid "For JBoss AS, the following pattern is correct:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:164
+#, no-c-format
+msgid "&lt;core:init jndi-name=\"myEarName/#{ejbName}/local\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:165
+#, no-c-format
+msgid ""
+"Where <literal>myEarName</literal> is the name of the EAR in which the bean "
+"is deployed."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:168
+#, no-c-format
+msgid ""
+"Outside the context of an EAR (when using the JBoss Embeddable EJB3 "
+"container), the following pattern is the one to use:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:171
+#, no-c-format
+msgid "&lt;core:init jndi-name=\"#{ejbName}/local\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:172
+#, no-c-format
+msgid ""
+"You'll have to experiment to find the right setting for other application "
+"servers. Note that some servers (such as GlassFish) require you to specify "
+"JNDI names for all EJB components explicitly (and tediously). In this case, "
+"you can pick your own pattern ;-)"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:175
+#, no-c-format
+msgid "Using facelets"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:176
+#, no-c-format
+msgid ""
+"If you want follow our advice and use facelets instead of JSP, add the "
+"following lines to <literal>faces-config.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:179
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;view-handler&gt;com.sun.facelets.FaceletViewHandler&lt;/view-"
+"handler&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:180
+#, no-c-format
+msgid "And the following lines to <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:183
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;javax.faces.DEFAULT_SUFFIX&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;.xhtml&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:184
+#, no-c-format
+msgid "Don't forget!"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:185
+#, no-c-format
+msgid ""
+"There is one final item you need to know about. You must place a "
+"<literal>seam.properties</literal>, <literal>META-INF/seam.properties</"
+"literal> or <literal>META-INF/components.xml</literal> file in any archive "
+"in which your Seam components are deployed (even an empty properties file "
+"will do). At startup, Seam will scan any archives with <literal>seam."
+"properties</literal> files for seam components."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:188
+#, no-c-format
+msgid ""
+"That's why all the Seam examples have an empty <literal>seam.properties</"
+"literal> file. You can't just delete this file and expect everything to "
+"still work!"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:191
+#, no-c-format
+msgid ""
+"You might think this is silly and what kind of idiot framework designers "
+"would make an empty file affect the behavior of their software?? Well, this "
+"is a workaround for a limitation of the JVM&mdash;if we didn't use this "
+"mechanism, our next best option would be to force you to list every "
+"component explicitly in <literal>components.xml</literal>, just like some "
+"other competing frameworks do! I think you'll like our way better."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:195
+#, no-c-format
+msgid "Configuring Seam in Java EE 5"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:204
+#, no-c-format
+msgid ""
+"If you're running in a Java EE 5 environment, this is all the configuration "
+"required to start using Seam!"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:207 Configuration.xml:270 Configuration.xml:318
+#: Configuration.xml:354 Configuration.xml:371
+#, no-c-format
+msgid "Packaging"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:208
+#, no-c-format
+msgid ""
+"Once you've packaged all this stuff together into an EAR, the archive "
+"structure will look something like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:211
+#, no-c-format
+msgid ""
+"my-application.ear/\n"
+"    jboss-seam.jar\n"
+"    el-api.jar\n"
+"    el-ri.jar\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"        application.xml\n"
+"    my-application.war/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"        WEB-INF/\n"
+"            web.xml\n"
+"            components.xml\n"
+"            faces-config.xml\n"
+"            lib/\n"
+"                jsf-facelets.jar\n"
+"                jboss-seam-ui.jar\n"
+"        login.jsp\n"
+"        register.jsp\n"
+"        ...\n"
+"    my-application.jar/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"            persistence.xml\n"
+"        seam.properties\n"
+"        org/\n"
+"            jboss/\n"
+"                myapplication/\n"
+"                    User.class\n"
+"                    Login.class\n"
+"                    LoginBean.class\n"
+"                    Register.class\n"
+"                    RegisterBean.class\n"
+"                    ..."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:212
+#, no-c-format
+msgid ""
+"You must include <literal>jboss-seam.jar</literal>, <literal>el-api.jar</"
+"literal> and <literal>el-ri.jar</literal> in the EAR classpath. Make sure "
+"you reference all of these jars from <literal>application.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:215
+#, no-c-format
+msgid ""
+"If you want to use jBPM or Drools, you must include the needed jars in the "
+"EAR classpath. Make sure you reference all of the jars from "
+"<literal>application.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:218
+#, no-c-format
+msgid ""
+"If you want to use facelets (our recommendation), you must include "
+"<literal>jsf-facelets.jar</literal> in the <literal>WEB-INF/lib</literal> "
+"directory of the WAR."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:221
+#, no-c-format
+msgid ""
+"If you want to use the Seam tag library (most Seam applications do), you "
+"must include <literal>jboss-seam-ui.jar</literal> in the <literal>WEB-INF/"
+"lib</literal> directory of the WAR. If you want to use the PDF or email tag "
+"libraries, you need to put <literal>jboss-seam-pdf.jar</literal> or "
+"<literal>jboss-seam-mail.jar</literal> in <literal>WEB-INF/lib</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:224
+#, no-c-format
+msgid ""
+"If you want to use the Seam debug page (only works for applications using "
+"facelets), you must include <literal>jboss-seam-debug.jar</literal> in the "
+"<literal>WEB-INF/lib</literal> directory of the WAR."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:227
+#, no-c-format
+msgid ""
+"Seam ships with several example applications that are deployable in any Java "
+"EE container that supports EJB 3.0."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:231
+#, no-c-format
+msgid "Configuring Seam in Java SE, with the JBoss Embeddable EJB3 container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:232
+#, no-c-format
+msgid ""
+"The JBoss Embeddable EJB3 container lets you run EJB3 components outside the "
+"context of the Java EE 5 application server. This is especially, but not "
+"only, useful for testing."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:235
+#, no-c-format
+msgid ""
+"The Seam booking example application includes a TestNG integration test "
+"suite that runs on the Embeddable EJB3 container."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:246
+#, no-c-format
+msgid "The booking example application may even be deployed to Tomcat."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:257
+#, no-c-format
+msgid "Installing the Embeddable EJB3 container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:258
+#, no-c-format
+msgid ""
+"Seam ships with a build of the Embeddable EJB3 container in the "
+"<literal>embedded-ejb</literal> directory. To use the Embeddable EJB3 "
+"container with Seam, add the <literal>embedded-ejb/conf</literal> directory, "
+"and all jars in the <literal>lib</literal> and <literal>embedded-ejb/lib</"
+"literal> directories to your classpath. Then, add the following line to "
+"<literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:261
+#, no-c-format
+msgid "&lt;core:ejb /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:262
+#, no-c-format
+msgid ""
+"This setting installs the built-in component named <literal>org.jboss.seam."
+"core.ejb</literal>. This component is responsible for bootstrapping the EJB "
+"container when Seam is started, and shutting it down when the web "
+"application is undeployed."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:265
+#, no-c-format
+msgid "Configuring a datasource with the Embeddable EJB3 container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:266
+#, no-c-format
+msgid ""
+"You should refer to the Embeddable EJB3 container documentation for more "
+"information about configuring the container. You'll probably at least need "
+"to set up your own datasource. Embeddable EJB3 is implemented using the "
+"JBoss Microcontainer, so it's very easy to add new services to the minimal "
+"set of services provided by default. For example, I can add a new datasource "
+"by putting this <literal>jboss-beans.xml</literal> file in my classpath:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:269
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"\n"
+"&lt;deployment xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"urn:jboss:bean-deployer bean-deployer_1_0."
+"xsd\"\n"
+"            xmlns=\"urn:jboss:bean-deployer\"&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasourceBootstrap\"\n"
+"        class=\"org.jboss.resource.adapter.jdbc.local.LocalTxDataSource"
+"\"&gt;\n"
+"      &lt;property name=\"driverClass\"&gt;org.hsqldb.jdbcDriver&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"connectionURL\"&gt;jdbc:hsqldb:.&lt;/property&gt;\n"
+"      &lt;property name=\"userName\"&gt;sa&lt;/property&gt;\n"
+"      &lt;property name=\"jndiName\"&gt;java:/bookingDatasource&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"minSize\"&gt;0&lt;/property&gt;\n"
+"      &lt;property name=\"maxSize\"&gt;10&lt;/property&gt;\n"
+"      &lt;property name=\"blockingTimeout\"&gt;1000&lt;/property&gt;\n"
+"      &lt;property name=\"idleTimeout\"&gt;100000&lt;/property&gt;\n"
+"      &lt;property name=\"transactionManager\"&gt;\n"
+"        &lt;inject bean=\"TransactionManager\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"      &lt;property name=\"cachedConnectionManager\"&gt;\n"
+"        &lt;inject bean=\"CachedConnectionManager\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"      &lt;property name=\"initialContextProperties\"&gt;\n"
+"        &lt;inject bean=\"InitialContextProperties\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasource\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getDatasource\"&gt;\n"
+"         &lt;factory bean=\"bookingDatasourceBootstrap\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"&lt;/deployment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:271
+#, no-c-format
+msgid ""
+"The archive structure of a WAR-based deployment on an servlet engine like "
+"Tomcat will look something like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:274
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            myfaces-api.jar\n"
+"            myfaces-impl.jar\n"
+"            jboss-ejb3.jar\n"
+"            jboss-jca.jar\n"
+"            jboss-j2ee.jar\n"
+"            ...\n"
+"            mc-conf.jar/\n"
+"                ejb3-interceptors-aop.xml\n"
+"                embedded-jboss-beans.xml\n"
+"                default.persistence.properties\n"
+"                jndi.properties\n"
+"                login-config.xml\n"
+"                security-beans.xml\n"
+"                log4j.xml\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                    MANIFEST.MF\n"
+"                    persistence.xml\n"
+"                    jboss-beans.xml\n"
+"                log4j.xml\n"
+"                seam.properties\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            LoginBean.class\n"
+"                            Register.class\n"
+"                            RegisterBean.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:275
+#, no-c-format
+msgid ""
+"The <literal>mc-conf.jar</literal> just contains the standard JBoss "
+"Microcontainer configuration files for Embeddable EJB3. You won't usually "
+"need to edit these files yourself."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:278
+#, no-c-format
+msgid ""
+"Most of the Seam example applications may be deployed to Tomcat by running "
+"<literal>ant deploy.tomcat</literal>."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:281
+#, no-c-format
+msgid "Configuring Seam in J2EE"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:282
+#, no-c-format
+msgid ""
+"Seam is useful even if you're not yet ready to take the plunge into EJB 3.0. "
+"In this case you would use Hibernate3 or JPA instead of EJB 3.0 persistence, "
+"and plain JavaBeans instead of session beans. You'll miss out on some of the "
+"nice features of session beans but it will be very easy to migrate to EJB "
+"3.0 when you're ready and, in the meantime, you'll be able to take advantage "
+"of Seam's unique declarative state management architecture."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:293
+#, no-c-format
+msgid ""
+"Seam JavaBean components do not provide declarative transaction demarcation "
+"like session beans do. You <emphasis>could</emphasis> manage your "
+"transactions manually using the JTA <literal>UserTransaction</literal> (you "
+"could even implement your own declarative transaction management in a Seam "
+"interceptor). But most applications will use Seam managed transactions when "
+"using Hibernate with JavaBeans. Follow the instructions in the persistence "
+"chapter to install <literal>TransactionalSeamPhaseListener</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:296
+#, no-c-format
+msgid ""
+"The Seam distribution includes a version of the booking example application "
+"that uses Hibernate3 and JavaBeans instead of EJB3, and another version that "
+"uses JPA and JavaBeans. These example applications are ready to deploy into "
+"any J2EE application server."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:299
+#, no-c-format
+msgid ""
+"If we want to deploy Hibernate in a non-J2EE environment like Tomcat or "
+"TestNG, we need to do a little bit more work."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:302
+#, no-c-format
+msgid "Boostrapping Hibernate in Seam"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:303
+#, no-c-format
+msgid ""
+"Seam will bootstrap a Hibernate <literal>SessionFactory</literal> from your "
+"<literal>hibernate.cfg.xml</literal> file if you install a built-in "
+"component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:306
+#, no-c-format
+msgid ""
+"&lt;core:hibernate-session-factory name=\"hibernateSessionFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:307
+#, no-c-format
+msgid ""
+"You will also need to configure a <emphasis>managed session</emphasis> if "
+"you want a Seam managed Hibernate <literal>Session</literal> to be available "
+"via injection."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:310
+#, no-c-format
+msgid "Boostrapping JPA in Seam"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:311
+#, no-c-format
+msgid ""
+"Seam will bootstrap a JPA <literal>EntityManagerFactory</literal> from your "
+"<literal>persistence.xml</literal> file if you install this built-in "
+"component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:314
+#, no-c-format
+msgid "&lt;core:entity-manager-factory name=\"entityManagerFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:315
+#, no-c-format
+msgid ""
+"You will also need to configure a <emphasis>managed persistencece context</"
+"emphasis> if you want a Seam managed JPA <literal>EntityManager</literal> to "
+"be available via injection."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:319
+#, no-c-format
+msgid "We can package our application as a WAR, in the following structure:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:322
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            hibernate3.jar\n"
+"            hibernate-annotations.jar\n"
+"            ...\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                   MANIFEST.MF\n"
+"                seam.properties\n"
+"                hibernate.cfg.xml\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            Register.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:324
+#, no-c-format
+msgid "Configuring Seam in Java SE, with the JBoss Microcontainer"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:325
+#, no-c-format
+msgid ""
+"The Seam support for Hibernate and JPA requires JTA and a JCA datasource. If "
+"you are running in a non-EE environment like Tomcat or TestNG you can run "
+"these services, and Hibernate itself, in the JBoss Microcontainer."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:328
+#, no-c-format
+msgid ""
+"You can even deploy the Hibernate and JPA versions of the booking example in "
+"Tomcat."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:339
+#, no-c-format
+msgid ""
+"Seam ships with an example Microcontainer configuration in "
+"<literal>microcontainer/conf/jboss-beans.xml</literal> that provides all the "
+"things you need to run Seam with Hibernate in any non-EE environment. Just "
+"add the <literal>microcontainer/conf</literal> directory, and all jars in "
+"the <literal>lib</literal> and <literal>microcontainer/lib</literal> "
+"directories to your classpath. Refer to the documentation for the JBoss "
+"Microcontainer for more information."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:342
+#, no-c-format
+msgid "Using Hibernate and the JBoss Microcontainer"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:343
+#, no-c-format
+msgid ""
+"The built-in Seam component named <literal>org.jboss.seam.core."
+"microcontainer</literal> bootstraps the microcontainer. As before, we "
+"probably want to use a Seam managed session."
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:346
+#, no-c-format
+msgid ""
+"&lt;core:microcontainer/&gt;\n"
+"\n"
+"&lt;core:managed-hibernate-session name=\"bookingDatabase\" auto-create="
+"\"true\"\n"
+"    session-factory-jndi-name=\"java:/bookingSessionFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:347
+#, no-c-format
+msgid ""
+"Where <literal>java:/bookingSessionFactory</literal> is the name of the "
+"Hibernate session factory specified in <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:350
+#, no-c-format
+msgid ""
+"You'll need to provide a <literal>jboss.beans.xml</literal> file that "
+"installs JNDI, JTA, your JCA datasource and Hibernate into the "
+"microcontainer:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:353
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"\n"
+"&lt;deployment xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"urn:jboss:bean-deployer bean-deployer_1_0."
+"xsd\"\n"
+"            xmlns=\"urn:jboss:bean-deployer\"&gt;\n"
+"\n"
+"   &lt;bean name=\"Naming\" class=\"org.jnp.server.SingletonNamingServer\"/"
+"&gt;\n"
+"\n"
+"   &lt;bean name=\"TransactionManagerFactory\"\n"
+"       class=\"org.jboss.seam.microcontainer.TransactionManagerFactory\"/"
+"&gt;\n"
+"   &lt;bean name=\"TransactionManager\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getTransactionManager\"&gt;\n"
+"         &lt;factory bean=\"TransactionManagerFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasourceFactory\" class=\"org.jboss.seam."
+"microcontainer.DataSourceFactory\"&gt;\n"
+"      &lt;property name=\"driverClass\"&gt;org.hsqldb.jdbcDriver&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"connectionUrl\"&gt;jdbc:hsqldb:.&lt;/property&gt;\n"
+"      &lt;property name=\"userName\"&gt;sa&lt;/property&gt;\n"
+"      &lt;property name=\"jndiName\"&gt;java:/hibernateDatasource&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"minSize\"&gt;0&lt;/property&gt;\n"
+"      &lt;property name=\"maxSize\"&gt;10&lt;/property&gt;\n"
+"      &lt;property name=\"blockingTimeout\"&gt;1000&lt;/property&gt;\n"
+"      &lt;property name=\"idleTimeout\"&gt;100000&lt;/property&gt;\n"
+"      &lt;property name=\"transactionManager\"&gt;&lt;inject bean="
+"\"TransactionManager\"/&gt;&lt;/property&gt;\n"
+"   &lt;/bean&gt;\n"
+"   &lt;bean name=\"bookingDatasource\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getDataSource\"&gt;\n"
+"         &lt;factory bean=\"bookingDatasourceFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingSessionFactoryFactory\"\n"
+"       class=\"org.jboss.seam.microcontainer.HibernateFactory\"/&gt;\n"
+"   &lt;bean name=\"bookingSessionFactory\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getSessionFactory\"&gt;\n"
+"         &lt;factory bean=\"bookingSessionFactoryFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"      &lt;depends&gt;bookingDatasource&lt;/depends&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"&lt;/deployment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:355
+#, no-c-format
+msgid "The WAR could have the following structure:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:358
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            hibernate3.jar\n"
+"            ...\n"
+"            jboss-microcontainer.jar\n"
+"            jboss-jca.jar\n"
+"            ...\n"
+"            myfaces-api.jar\n"
+"            myfaces-impl.jar\n"
+"            mc-conf.jar/\n"
+"                jndi.properties\n"
+"                log4j.xml\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                    MANIFEST.MF\n"
+"                    jboss-beans.xml\n"
+"                seam.properties\n"
+"                hibernate.cfg.xml\n"
+"                log4j.xml\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            Register.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:359
+#, no-c-format
+msgid "Configuring jBPM in Seam"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:360
+#, no-c-format
+msgid ""
+"Seam's jBPM integration is not installed by default, so you'll need to "
+"enable jBPM by installing a built-in component. You'll also need to "
+"explicitly list your process and pageflow definitions. In "
+"<literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:363
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:pageflow-definitions&gt;\n"
+"        &lt;value&gt;createDocument.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;editDocument.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;approveDocument.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:pageflow-definitions&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;documentLifecycle.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:364
+#, no-c-format
+msgid ""
+"No further special configuration is needed if you only have pageflows. If "
+"you do have business process definitions, you need to provide a jBPM "
+"configuration, and a Hibernate configuration for jBPM. The Seam DVD Store "
+"demo includes example <literal>jbpm.cfg.xml</literal> and <literal>hibernate."
+"cfg.xml</literal> files that will work with Seam:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:367
+#, no-c-format
+msgid ""
+"&lt;jbpm-configuration&gt;\n"
+"\n"
+"  &lt;jbpm-context&gt;\n"
+"    &lt;service name=\"persistence\"&gt;\n"
+"       &lt;factory&gt;\n"
+"          &lt;bean class=\"org.jbpm.persistence.db."
+"DbPersistenceServiceFactory\"&gt;\n"
+"             &lt;field name=\"isTransactionEnabled\"&gt;&lt;false/&gt;&lt;/"
+"field&gt;\n"
+"          &lt;/bean&gt;\n"
+"       &lt;/factory&gt;\n"
+"    &lt;/service&gt;\n"
+"    &lt;service name=\"message\" factory=\"org.jbpm.msg.db."
+"DbMessageServiceFactory\" /&gt;\n"
+"    &lt;service name=\"scheduler\" factory=\"org.jbpm.scheduler.db."
+"DbSchedulerServiceFactory\" /&gt;\n"
+"    &lt;service name=\"logging\" factory=\"org.jbpm.logging.db."
+"DbLoggingServiceFactory\" /&gt;\n"
+"    &lt;service name=\"authentication\" \n"
+"        factory=\"org.jbpm.security.authentication."
+"DefaultAuthenticationServiceFactory\" /&gt;\n"
+"  &lt;/jbpm-context&gt;\n"
+"\n"
+"&lt;/jbpm-configuration&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:368
+#, no-c-format
+msgid ""
+"The most important thing to notice here is that jBPM transaction control is "
+"disabled. Seam or EJB3 should control the JTA transactions."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:372
+#, no-c-format
+msgid ""
+"There is not yet any well-defined packaging format for jBPM configuration "
+"and process/pageflow definition files. In the Seam examples we've decided to "
+"simply package all these files into the root of the EAR. In future, we will "
+"probably design some other standard packaging format. So the EAR looks "
+"something like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:375
+#, no-c-format
+msgid ""
+"my-application.ear/\n"
+"    jboss-seam.jar\n"
+"    el-api.jar\n"
+"    el-ri.jar\n"
+"    jbpm-3.1.jar\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"        application.xml\n"
+"    my-application.war/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"        WEB-INF/\n"
+"            web.xml\n"
+"            components.xml\n"
+"            faces-config.xml\n"
+"            lib/\n"
+"                jsf-facelets.jar\n"
+"                jboss-seam-ui.jar\n"
+"        login.jsp\n"
+"        register.jsp\n"
+"        ...\n"
+"    my-application.jar/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"            persistence.xml\n"
+"        seam.properties\n"
+"        org/\n"
+"            jboss/\n"
+"                myapplication/\n"
+"                    User.class\n"
+"                    Login.class\n"
+"                    LoginBean.class\n"
+"                    Register.class\n"
+"                    RegisterBean.class\n"
+"                    ...\n"
+"    jbpm.cfg.xml\n"
+"    hibernate.cfg.xml\n"
+"    createDocument.jpdl.xml\n"
+"    editDocument.jpdl.xml\n"
+"    approveDocument.jpdl.xml\n"
+"    documentLifecycle.jpdl.xml"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:376
+#, no-c-format
+msgid ""
+"Remember to add <literal>jbpm-3.1.jar</literal> to the manifest of your EJB-"
+"JAR and WAR."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:379
+#, no-c-format
+msgid "Configuring Seam in a Portal"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:380
+#, no-c-format
+msgid ""
+"To run a Seam application as a portlet, you'll need to provide certain "
+"portlet metadata (<literal>portlet.xml</literal>, etc) in addition to the "
+"usual Java EE metadata. See the <literal>examples/portal</literal> directory "
+"for an example of the booking demo preconfigured to run on JBoss Portal."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:383
+#, no-c-format
+msgid ""
+"In addition, you'll need to use a portlet-specific phase listener instead of "
+"<literal>SeamPhaseListener</literal> or "
+"<literal>TransactionalSeamPhaseListener</literal>. The "
+"<literal>SeamPortletPhaseListener</literal> and "
+"<literal>TransactionalSeamPortletPhaseListener</literal> are adapted to the "
+"portlet lifecycle. I would like to offer my sincerest apologies for the name "
+"of that last class. I really couldn't think of anything better. Sorry."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Controls.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Controls.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Controls.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,591 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Controls.xml:10
+#, no-c-format
+msgid "Seam JSF controls"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:11
+#, no-c-format
+msgid ""
+"Seam includes a number of JSF controls that are useful for working with "
+"Seam. These are intended to complement the built-in JSF controls, and "
+"controls from other third-party libraries. We recommend the Ajax4JSF and ADF "
+"faces (now Trinidad) tag libraries for use with Seam. We do not recommend "
+"the use of the Tomahawk tag library."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:14
+#, no-c-format
+msgid "The ui example demonstrates the use of a number of these tags."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:19
+#, no-c-format
+msgid "&lt;s:validate&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:21
+#, no-c-format
+msgid ""
+"Validate a JSF input field against the bound property using Hibernate "
+"Validator."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:27
+#, no-c-format
+msgid "&lt;s:validateAll&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:29
+#, no-c-format
+msgid ""
+"Validate all child JSF input fields against the bound propertys using "
+"Hibernate Validator."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:35
+#, no-c-format
+msgid "&lt;s:formattedText&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:37
+#, no-c-format
+msgid "Output <emphasis>Seam Text</emphasis>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:43
+#, no-c-format
+msgid "&lt;s:convertDateTime&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:45
+#, no-c-format
+msgid "Perform date or time conversions in the Seam timezone."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:51
+#, no-c-format
+msgid "&lt;s:convertEnum&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:53
+#, no-c-format
+msgid ""
+"Assigns an enum converter to the current component. This is primarily useful "
+"for radio button and dropdown controls."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:59
+#, no-c-format
+msgid "&lt;s:enumItem&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:61
+#, no-c-format
+msgid "Creates a <literal>SelectItem</literal> from an enum value."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:66
+#, no-c-format
+msgid ""
+"<literal>enumValue</literal> &mdash; the string representation of the enum "
+"value."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:71
+#, no-c-format
+msgid ""
+"<literal>label</literal> &mdash; the label to be used when rendering the "
+"<literal>SelectItem</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:79
+#, no-c-format
+msgid "&lt;s:selectItems&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:81
+#, no-c-format
+msgid ""
+"Creates a <literal>List&lt;SelectItem&gt;</literal> from a List, Set, "
+"DataModel or Array."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:86
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; an EL expression specifying the data that "
+"backs the <literal>List&lt;SelectItem&gt;</literal>"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:91
+#, no-c-format
+msgid ""
+"<literal>var</literal> &mdash; defines the name of the local variable that "
+"holds the current object during iteration"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:96
+#, no-c-format
+msgid ""
+"<literal>label</literal> &mdash; the label to be used when rendering the "
+"<literal>SelectItem</literal>. Can reference the <literal>var</literal> "
+"variable"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:101
+#, no-c-format
+msgid ""
+"<literal>disabled</literal> &mdash; if true the <literal>SelectItem</"
+"literal> will be rendered disabled. Can reference the <literal>var</literal> "
+"variable"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:106
+#, no-c-format
+msgid ""
+"<literal>noSelectionLabel</literal> &mdash; specifies the (optional) label "
+"to place at the top of list (if <literal>required=\"true\"</literal> is also "
+"specified then selecting this value will cause a validation error)"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:111
+#, no-c-format
+msgid ""
+"<literal>hideNoSelectionLabel</literal> &mdash; if true, the "
+"<literal>noSelectionLabel</literal> will be hidden when a value is selected"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:119
+#, no-c-format
+msgid "&lt;s:decorate&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:121
+#, no-c-format
+msgid "\"Decorate\" a JSF input field when validation fails."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:127
+#, no-c-format
+msgid "&lt;s:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:129
+#, no-c-format
+msgid "\"Decorate\" a JSF input field with the validation error message."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:135
+#, no-c-format
+msgid "&lt;s:span&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:137
+#, no-c-format
+msgid "Render a HTML <literal>&lt;span&gt;</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:143
+#, no-c-format
+msgid "&lt;s:div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:145
+#, no-c-format
+msgid "Render a HTML <literal>&lt;div&gt;</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:151
+#, no-c-format
+msgid "&lt;s:fragment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:153
+#, no-c-format
+msgid ""
+"A non-rendering component useful for enabling/disabling rendering of it's "
+"children"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:159
+#, no-c-format
+msgid "&lt;s:cache&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:161
+#, no-c-format
+msgid ""
+"Cache the rendered page fragment using JBoss Cache. Note that <literal>&lt;s:"
+"cache&gt;</literal> actually uses the instance of JBoss Cache managed by the "
+"built-in <literal>pojoCache</literal> component."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:166
+#, no-c-format
+msgid ""
+"<literal>key</literal> &mdash; the key to cache rendered content, often a "
+"value expression. For example, if we were caching a page fragment that "
+"displays a document, we might use <literal>key=\"Document-#{document.id}\"</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:171
+#, no-c-format
+msgid ""
+"<literal>enabled</literal> &mdash; a value expression that determines if the "
+"cache should be used."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:176
+#, no-c-format
+msgid ""
+"<literal>region</literal> &mdash; a JBoss Cache node to use (different nodes "
+"can have different expiry policies)."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:184
+#, no-c-format
+msgid "&lt;s:link&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:186
+#, no-c-format
+msgid ""
+"A link that supports invocation of an action with control over conversation "
+"propagation. <emphasis>Does not submit the form.</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:191 Controls.xml:236
+#, no-c-format
+msgid "<literal>value</literal> &mdash; the label."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:196 Controls.xml:241
+#, no-c-format
+msgid ""
+"<literal>action</literal> &mdash; a method binding that specified the action "
+"listener."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:201 Controls.xml:246
+#, no-c-format
+msgid "<literal>view</literal> &mdash; the JSF view id to link to."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:206 Controls.xml:251
+#, no-c-format
+msgid "<literal>fragment</literal> &mdash; the fragment identifier to link to."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:211 Controls.xml:256
+#, no-c-format
+msgid "<literal>disabled</literal> &mdash; is the link disabled?"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:216 Controls.xml:261 Controls.xml:301
+#, no-c-format
+msgid ""
+"<literal>propagation</literal> &mdash; determines the conversation "
+"propagation style: <literal>begin</literal>, <literal>join</literal>, "
+"<literal>nest</literal>, <literal>none</literal> or <literal>end</literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:221 Controls.xml:266 Controls.xml:306
+#, no-c-format
+msgid ""
+"<literal>pageflow</literal> &mdash; a pageflow definition to begin. (This is "
+"only useful when <literal>propagation=\"begin\"</literal> or "
+"<literal>propagation=\"join\"</literal>.)"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:229
+#, no-c-format
+msgid "&lt;s:button&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:231
+#, no-c-format
+msgid ""
+"A button that supports invocation of an action with control over "
+"conversation propagation. <emphasis>Does not submit the form.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:274
+#, no-c-format
+msgid "&lt;s:selectDate&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:276
+#, no-c-format
+msgid ""
+"Displays a dynamic date picker component that selects a date for the "
+"specified input field. The body of the <literal>selectDate</literal> element "
+"should contain HTML elements, such as text or an image, that prompt the user "
+"to click to display the date picker. The date picker can be styled using "
+"CSS. An example CSS file can be found in the Seam booking demo as "
+"<literal>date.css</literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:281
+#, no-c-format
+msgid ""
+"<literal>for</literal> &mdash; The id of the input field that the date "
+"picker will insert the selected date into."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:286
+#, no-c-format
+msgid ""
+"<literal>dateFormat</literal> &mdash; The date format string. This should "
+"match the date format of the input field."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:294
+#, no-c-format
+msgid "&lt;s:conversationPropagation&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:296
+#, no-c-format
+msgid ""
+"Customize the conversation propagation for a command link or button (or "
+"similar JSF control). <emphasis>Facelets only.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:314
+#, no-c-format
+msgid "&lt;s:conversationId&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:316
+#, no-c-format
+msgid ""
+"Add the conversation id to an output link (or similar JSF control). "
+"<emphasis>Facelets only.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:322
+#, no-c-format
+msgid "&lt;s:taskId&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:324
+#, no-c-format
+msgid ""
+"Add the task id to an output link (or similar JSF control), when the task is "
+"available via <literal>#{task}</literal>. <emphasis>Facelets only.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:330
+#, no-c-format
+msgid "&lt;s:fileUpload&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:332
+#, no-c-format
+msgid ""
+"Renders a file upload control. This control must be used within a form with "
+"an encoding type of <literal>multipart/form-data</literal>, i.e:"
+msgstr ""
+
+#. Tag: programlisting
+#: Controls.xml:335
+#, no-c-format
+msgid "&lt;h:form enctype=\"multipart/form-data\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:336
+#, no-c-format
+msgid ""
+"For multipart requests, the Seam Multipart servlet filter must also be "
+"configured in <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Controls.xml:339
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"      &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"      &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-"
+"class&gt;\n"
+"    &lt;/filter&gt;\n"
+"    \n"
+"    &lt;filter-mapping&gt;\n"
+"      &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"      &lt;url-pattern&gt;/*&lt;/url-pattern&gt;\n"
+"    &lt;/filter-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:340
+#, no-c-format
+msgid ""
+"The following configuration options for multipart requests may be configured "
+"in components.xml:"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:345
+#, no-c-format
+msgid ""
+"<literal>createTempFiles</literal> &mdash; if this option is set to true, "
+"uploaded files are streamed to a temporary file instead of in memory."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:350
+#, no-c-format
+msgid ""
+"<literal>maxRequestSize</literal> &mdash; the maximum size of a file upload "
+"request, in bytes."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:355
+#, no-c-format
+msgid "Here's an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Controls.xml:358
+#, no-c-format
+msgid ""
+"&lt;component class=\"org.jboss.seam.servlet.MultipartConfig\"&gt;\n"
+"        &lt;property name=\"createTempFiles\"&gt;true&lt;/property&gt;\n"
+"        &lt;property name=\"maxRequestSize\"&gt;1000000&lt;/property&gt;\n"
+"    &lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:359
+#, no-c-format
+msgid ""
+"And here's a list of the supported attributes for the <literal>fileUpload</"
+"literal> control:"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:364
+#, no-c-format
+msgid ""
+"<literal>data</literal> &mdash; this value binding receives the binary file "
+"data. The receiving field should be declared as a <literal>byte[]</literal> "
+"or <literal>InputStream</literal> (required)."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:369
+#, no-c-format
+msgid ""
+"<literal>contentType</literal> &mdash; this value binding receives the "
+"file's content type (optional)."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:374
+#, no-c-format
+msgid ""
+"<literal>fileName</literal> &mdash; this value binding receives the filename "
+"(optional)."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:379
+#, no-c-format
+msgid ""
+"<literal>accept</literal> &mdash; a comma-separated list of content types to "
+"accept, may not be supported by the browser. E.g. <literal>\"images/png,"
+"images/jpg\"</literal>, <literal>\"images/*\"</literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:384
+#, no-c-format
+msgid "<literal>style</literal> &mdash; The control's style"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:389
+#, no-c-format
+msgid "<literal>styleClass</literal> &mdash; The control's style class"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Conversations.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Conversations.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Conversations.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1248 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Conversations.xml:10
+#, no-c-format
+msgid "Conversations and workspace management"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:11
+#, no-c-format
+msgid "It's time to understand Seam's conversation model in more detail."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:14
+#, no-c-format
+msgid ""
+"Historically, the notion of a Seam \"conversation\" came about as a merger "
+"of three different ideas:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:19
+#, no-c-format
+msgid ""
+"The idea of a <emphasis>workspace</emphasis>, which I encountered in a "
+"project for the Victorian government in 2002. In this project I was forced "
+"to implement workspace management on top of Struts, an experience I pray "
+"never to repeat."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:24
+#, no-c-format
+msgid ""
+"The idea of an <emphasis>application transaction</emphasis> with optimistic "
+"semantics, and the realization that existing frameworks based around a "
+"stateless architecture could not provide effective management of extended "
+"persistence contexts. (The Hibernate team is truly fed up with copping the "
+"blame for <literal>LazyInitializationException</literal>s, which are not "
+"really Hibernate's fault, but rather the fault of the extremely limiting "
+"persistence context model supported by stateless architectures such as the "
+"Spring framework or the traditional <emphasis>stateless session facade</"
+"emphasis> (anti)pattern in J2EE.)"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:29
+#, no-c-format
+msgid "The idea of a workflow <emphasis>task</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:34
+#, no-c-format
+msgid ""
+"By unifying these ideas and providing deep support in the framework, we have "
+"a powerful construct that lets us build richer and more efficient "
+"applications with less code than before."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:38
+#, no-c-format
+msgid "Seam's conversation model"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:39
+#, no-c-format
+msgid ""
+"The examples we have seen so far make use of a very simple conversation "
+"model that follows these rules:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:44
+#, no-c-format
+msgid ""
+"There is always a conversation context active during the apply request "
+"values, process validations, update model values, invoke application and "
+"render response phases of the JSF request lifecycle."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:49
+#, no-c-format
+msgid ""
+"At the end of the restore view phase of the JSF request lifecycle, Seam "
+"attempts to restore any previous long-running conversation context. If none "
+"exists, Seam creates a new temporary conversation context."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:54
+#, no-c-format
+msgid ""
+"When an <literal>@Begin</literal> method is encountered, the temporary "
+"conversation context is promoted to a long running conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:59
+#, no-c-format
+msgid ""
+"When an <literal>@End</literal> method is encountered, any long-running "
+"conversation context is demoted to a temporary conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:64
+#, no-c-format
+msgid ""
+"At the end of the render response phase of the JSF request lifecycle, Seam "
+"stores the contents of a long running conversation context or destroys the "
+"contents of a temporary conversation context."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:69
+#, no-c-format
+msgid ""
+"Any faces request (a JSF postback) will propagate the conversation context. "
+"By default, non-faces requests (GET requests, for example) do not propagate "
+"the conversation context, but see below for more information on this."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:74
+#, no-c-format
+msgid ""
+"If the JSF request lifecycle is foreshortened by a redirect, Seam "
+"transparently stores and restores the current conversation context&mdash;"
+"unless the conversation was already ended via <literal>@End"
+"(beforeRedirect=true)</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:79
+#, no-c-format
+msgid ""
+"Seam transparently propagates the conversation context across JSF postbacks "
+"and redirects. If you don't do anything special, a <emphasis>non-faces "
+"request</emphasis> (a GET request for example) will not propagate the "
+"conversation context and will be processed in a new temporary conversation. "
+"This is usually - but not always - the desired behavior."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:82
+#, no-c-format
+msgid ""
+"If you want to propagate a Seam conversation across a non-faces request, you "
+"need to explicitly code the Seam <emphasis>conversation id</emphasis> as a "
+"request parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:85
+#, no-c-format
+msgid ""
+"&lt;a href=\"main.jsf?conversationId=#{conversation.id}\"&gt;Continue&lt;/"
+"a&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:86
+#, no-c-format
+msgid "Or, the more JSF-ish:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:89
+#, no-c-format
+msgid ""
+"&lt;h:outputLink value=\"main.jsf\"&gt;\n"
+"    &lt;f:param name=\"conversationId\" value=\"#{conversation.id}\"/&gt;\n"
+"    &lt;h:outputText value=\"Continue\"/&gt;\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:90 Conversations.xml:98
+#, no-c-format
+msgid "If you use the Seam tag library, this is equivalent:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:93
+#, no-c-format
+msgid ""
+"&lt;h:outputLink value=\"main.jsf\"&gt;\n"
+"    &lt;s:conversationId/&gt;\n"
+"    &lt;h:outputText value=\"Continue\"/&gt;\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:94
+#, no-c-format
+msgid ""
+"If you wish to disable propagation of the conversation context for a "
+"postback, a similar trick is used:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:97
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;f:param name=\"conversationPropagation\" value=\"none\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:101
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"none\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:102
+#, no-c-format
+msgid ""
+"Note that disabling conversation context propagation is absolutely not the "
+"same thing as ending the conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:105
+#, no-c-format
+msgid ""
+"The <literal>conversationPropagation</literal> request parameter, or the "
+"<literal>&lt;s:conversationPropagation&gt;</literal> tag may even be used to "
+"begin and end conversation, or begin a nested conversation."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:108
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"end\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:109
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Child\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"nested\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:110
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Hotel\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"begin\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:111
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Hotel\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"join\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:112
+#, no-c-format
+msgid ""
+"This conversation model makes it easy to build applications which behave "
+"correctly with respect to multi-window operation. For many applications, "
+"this is all that is needed. Some complex applications have either or both of "
+"the following additional requirements:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:117
+#, no-c-format
+msgid ""
+"A conversation spans many smaller units of user interaction, which execute "
+"serially or even concurrently. The smaller <emphasis>nested conversations</"
+"emphasis> have their own isolated set of conversation state, and also have "
+"access to the state of the outer conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:122
+#, no-c-format
+msgid ""
+"The user is able to switch between many conversations within the same "
+"browser window. This feature is called <emphasis>workspace management</"
+"emphasis>."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:130
+#, no-c-format
+msgid "Nested conversations"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:131
+#, no-c-format
+msgid ""
+"A nested conversation is created by invoking a method marked <literal>@Begin"
+"(nested=true)</literal> inside the scope of an existing conversation. A "
+"nested conversation has its own conversation context, and also has read-only "
+"access to the context of the outer conversation. (It can read the outer "
+"conversation's context variables, but not write to them.) When an "
+"<literal>@End</literal> is subsequently encountered, the nested conversation "
+"will be destroyed, and the outer conversation will resume, by \"popping\" "
+"the conversation stack. Conversations may be nested to any arbitrary depth."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:134
+#, no-c-format
+msgid ""
+"Certain user activity (workspace management, or the back button) can cause "
+"the outer conversation to be resumed before the inner conversation is ended. "
+"In this case it is possible to have multiple concurrent nested conversations "
+"belonging to the same outer conversation. If the outer conversation ends "
+"before a nested conversation ends, Seam destroys all nested conversation "
+"contexts along with the outer context."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:137
+#, no-c-format
+msgid ""
+"A conversation may be thought of as a <emphasis>continuable state</"
+"emphasis>. Nested conversations allow the application to capture a "
+"consistent continuable state at various points in a user interaction, thus "
+"insuring truly correct behavior in the face of backbuttoning and workspace "
+"management."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:140
+#, no-c-format
+msgid ""
+"TODO: an example to show how a nested conversation prevents bad stuff "
+"happening when you backbutton."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:143
+#, no-c-format
+msgid ""
+"Usually, if a component exists in a parent conversation of the current "
+"nested conversation, the nested conversation will use the same instance. "
+"Occasionally, it is useful to have a different instance in each nested "
+"conversation, so that the component instance that exists in the parent "
+"conversation is invisible to its child conversations. You can achieve this "
+"behavior by annotating the component <literal>@PerNestedConversation</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:149
+#, no-c-format
+msgid "Starting conversations with GET requests"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:150
+#, no-c-format
+msgid ""
+"JSF does not define any kind of action listener that is triggered when a "
+"page is accessed via a non-faces request (for example, a HTTP GET request). "
+"This can occur if the user bookmarks the page, or if we navigate to the page "
+"via an <literal>&lt;h:outputLink&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:153
+#, no-c-format
+msgid ""
+"Sometimes we want to begin a conversation immediately the page is accessed. "
+"Since there is no JSF action method, we can't solve the problem in the usual "
+"way, by annotating the action with <literal>@Begin</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:156
+#, no-c-format
+msgid ""
+"A further problem arises if the page needs some state to be fetched into a "
+"context variable. We've already seen two ways to solve this problem. If that "
+"state is held in a Seam component, we can fetch the state in a "
+"<literal>@Create</literal> method. If not, we can define a "
+"<literal>@Factory</literal> method for the context variable."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:159
+#, no-c-format
+msgid ""
+"If none of these options works for you, Seam lets you define a "
+"<emphasis>page action</emphasis> in the <literal>pages.xml</literal> file."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:162
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\" action=\"#{messageManager.list}\"/"
+"&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:163
+#, no-c-format
+msgid ""
+"This action method is called at the beginning of the render response phase, "
+"any time the page is about to be rendered. If a page action returns a non-"
+"null outcome, Seam will process any appropriate JSF and Seam navigation "
+"rules, possibly resulting in a completely different page being rendered."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:166
+#, no-c-format
+msgid ""
+"If <emphasis>all</emphasis> you want to do before rendering the page is "
+"begin a conversation, you could use a built-in action method that does just "
+"that:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:169
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\" action=\"#{conversation.begin}\"/"
+"&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:170
+#, no-c-format
+msgid ""
+"Note that you can also call this built-in action from a JSF control, and, "
+"similarly, you can use <literal>#{conversation.end}</literal> to end "
+"conversations."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:173
+#, no-c-format
+msgid ""
+"If you want more control, to join existing conversations or begin a nested "
+"conversion, to begin a pageflow or an atomic conversation, you should use "
+"the <literal>&lt;begin-conversation&gt;</literal> element."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:176
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\"&gt;\n"
+"       &lt;begin-conversation nested=\"true\" pageflow=\"AddItem\"/&gt;\n"
+"    &lt;page&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:177
+#, no-c-format
+msgid "There is also an <literal>&lt;end-conversation&gt;</literal> element."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:180
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/home.jsp\"&gt;\n"
+"       &lt;end-conversation/&gt;\n"
+"    &lt;page&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:181
+#, no-c-format
+msgid "To solve the first problem, we now have five options:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:186
+#, no-c-format
+msgid ""
+"Annotate the <literal>@Create</literal> method with <literal>@Begin</literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:191
+#, no-c-format
+msgid ""
+"Annotate the <literal>@Factory</literal> method with <literal>@Begin</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:196
+#, no-c-format
+msgid "Annotate the Seam page action method with <literal>@Begin</literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:201
+#, no-c-format
+msgid ""
+"Use <literal>&lt;begin-conversation&gt;</literal> in <literal>pages.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:206
+#, no-c-format
+msgid ""
+"Use <literal>#{conversation.begin}</literal> as the Seam page action method"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:214
+#, no-c-format
+msgid ""
+"Using <literal>&lt;s:link&gt;</literal> and <literal>&lt;s:button&gt;</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:215
+#, no-c-format
+msgid ""
+"JSF command links always perform a form submission via JavaScript, which "
+"breaks the web browser's \"open in new window\" or \"open in new tab\" "
+"feature. In plain JSF, you need to use an <literal>&lt;h:outputLink&gt;</"
+"literal> if you need this functionality. But there are two major limitations "
+"to <literal>&lt;h:outputLink&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:220
+#, no-c-format
+msgid ""
+"JSF provides no way to attach an action listener to an <literal>&lt;h:"
+"outputLink&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:225
+#, no-c-format
+msgid ""
+"JSF does not propagate the selected row of a <literal>DataModel</literal> "
+"since there is no actual form submission."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:230
+#, no-c-format
+msgid ""
+"Seam provides the notion of a <emphasis>page action</emphasis> to help solve "
+"the first problem, but this does nothing to help us with the second problem. "
+"We <emphasis>could</emphasis> work around this by using the RESTful approach "
+"of passing a request parameter and requerying for the selected object on the "
+"server side. In some cases&mdash;such as the Seam blog example "
+"application&mdash;this is indeed the best approach. The RESTful style "
+"supports bookmarking, since it does not require server-side state. In other "
+"cases, where we don't care about bookmarks, the use of <literal>@DataModel</"
+"literal> and <literal>@DataModelSelection</literal> is just so convenient "
+"and transparent!"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:233
+#, no-c-format
+msgid ""
+"To fill in this missing functionality, and to make conversation propagation "
+"even simpler to manage, Seam provides the <literal>&lt;s:link&gt;</literal> "
+"JSF tag."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:236
+#, no-c-format
+msgid "The link may specify just the JSF view id:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:239
+#, no-c-format
+msgid ""
+"&lt;s:link view=&#8220;/login.xhtml&#8221; value=&#8220;Login&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:240
+#, no-c-format
+msgid ""
+"Or, it may specify an action method (in which case the action outcome "
+"determines the page that results):"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:243
+#, no-c-format
+msgid ""
+"&lt;s:link action=&#8220;#{login.logout}&#8221; value=&#8220;Logout&#8221;/"
+"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:244
+#, no-c-format
+msgid ""
+"If you specify <emphasis>both</emphasis> a JSF view id and an action method, "
+"the 'view' will be used <emphasis>unless</emphasis> the action method "
+"returns a non-null outcome:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:247
+#, no-c-format
+msgid ""
+"&lt;s:link view=\"/loggedOut.xhtml\"  action=&#8220;#{login.logout}&#8221; "
+"value=&#8220;Logout&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:248
+#, no-c-format
+msgid ""
+"The link automatically propagates the selected row of a <literal>DataModel</"
+"literal> using inside <literal>&lt;h:dataTable&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:251
+#, no-c-format
+msgid ""
+"&lt;s:link view=&#8220;/hotel.xhtml&#8221; action=&#8220;#{hotelSearch."
+"selectHotel}&#8221; value=&#8220;#{hotel.name}&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:252
+#, no-c-format
+msgid "You can leave the scope of an existing conversation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:255
+#, no-c-format
+msgid ""
+"&lt;s:link view=&#8220;/main.xhtml&#8221; propagation=&#8220;none&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:256
+#, no-c-format
+msgid "You can begin, end, or nest conversations:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:259
+#, no-c-format
+msgid ""
+"&lt;s:link action=&#8220;#{issueEditor.viewComment}&#8221; "
+"propagation=&#8220;nest&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:260
+#, no-c-format
+msgid ""
+"If the link begins a conversation, you can even specify a pageflow to be "
+"used:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:263
+#, no-c-format
+msgid ""
+"&lt;s:link action=&#8220;#{documentEditor.getDocument}&#8221; "
+"propagation=&#8220;begin&#8221; \n"
+"        pageflow=&#8220;EditDocument&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:264
+#, no-c-format
+msgid ""
+"The <literal>taskInstance</literal> attribute if for use in jBPM task lists:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:267
+#, no-c-format
+msgid ""
+"&lt;s:link action=&#8220;#{documentApproval.approveOrReject}&#8221; "
+"taskInstance=&#8220;#{task}&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:268
+#, no-c-format
+msgid "(See the DVD Store demo application for examples of this.)"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:271
+#, no-c-format
+msgid ""
+"Finally, if you need the \"link\" to be rendered as a button, use "
+"<literal>&lt;s:button&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:274
+#, no-c-format
+msgid ""
+"&lt;s:button action=&#8220;#{login.logout}&#8221; value=&#8220;Logout&#8221;/"
+"&gt;"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:278
+#, no-c-format
+msgid "Success messages"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:279
+#, no-c-format
+msgid ""
+"It is quite common to display a message to the user indicating success or "
+"failure of an action. It is convenient to use a JSF <literal>FacesMessage</"
+"literal> for this. Unfortunately, a successful action often requires a "
+"browser redirect, and JSF does not propagate faces messages across "
+"redirects. This makes it quite difficult to display success messages in "
+"plain JSF."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:282
+#, no-c-format
+msgid ""
+"The built in conversation-scoped Seam component named "
+"<literal>facesMessages</literal> solves this problem. (You must have the "
+"Seam redirect filter installed.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:285
+#, no-c-format
+msgid ""
+"@Name(\"editDocumentAction\")\n"
+"@Stateless\n"
+"public class EditDocumentBean implements EditDocument {\n"
+"    @In EntityManager em;\n"
+"    @In Document document;\n"
+"    @In FacesMessages facesMessages;\n"
+"    \n"
+"    public String update() {\n"
+"        em.merge(document);\n"
+"        facesMessages.add(\"Document updated\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:286
+#, no-c-format
+msgid ""
+"Any message added to <literal>facesMessages</literal> is used in the very "
+"next render response phase for the current conversation. This even works "
+"when there is no long-running conversation since Seam preserves even "
+"temporary conversation contexts across redirects."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:289
+#, no-c-format
+msgid "You can even include JSF EL expressions in a faces message summary:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:292
+#, no-c-format
+msgid "facesMessages.add(\"Document #{document.title} was updated\");"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:293
+#, no-c-format
+msgid "You may display the messages in the usual way, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:296
+#, no-c-format
+msgid "&lt;h:messages globalOnly=\"true\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:300
+#, no-c-format
+msgid "Using an \"explicit\" conversation id"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:301
+#, no-c-format
+msgid ""
+"Ordinarily, Seam generates a meaningless unique id for each conversation in "
+"each session. You can customize the id value when you begin the conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:304
+#, no-c-format
+msgid ""
+"This feature can be used to customize the conversation id generation "
+"algorithm like so:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:307
+#, no-c-format
+msgid ""
+"@Begin(id=\"#{myConversationIdGenerator.nextId}\") \n"
+"public void editHotel() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:308
+#, no-c-format
+msgid "Or it can be used to assign a meaningful conversation id:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:311
+#, no-c-format
+msgid ""
+"@Begin(id=\"hotel#{hotel.id}\") \n"
+"public String editHotel() { ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:312
+#, no-c-format
+msgid ""
+"@Begin(id=\"hotel#{hotelsDataModel.rowData.id}\") \n"
+"public String selectHotel() { ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:313
+#, no-c-format
+msgid ""
+"@Begin(id=\"entry#{params['blogId']}\")\n"
+"public String viewBlogEntry() { ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:314
+#, no-c-format
+msgid ""
+"@BeginTask(id=\"task#{taskInstance.id}\") \n"
+"public String approveDocument() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:315
+#, no-c-format
+msgid ""
+"Clearly, these example result in the same conversation id every time a "
+"particular hotel, blog or task is selected. So what happens if a "
+"conversation with the same conversation id already exists when the new "
+"conversation begins? Well, Seam detects the existing conversation and "
+"redirects to that conversation without running the <literal>@Begin</literal> "
+"method again. This feature helps control the number of workspaces that are "
+"created when using workspace management."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:321
+#, no-c-format
+msgid "Workspace management"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:322
+#, no-c-format
+msgid ""
+"Workspace management is the ability to \"switch\" conversations in a single "
+"window. Seam makes workspace management completely transparent at the level "
+"of the Java code. To enable workspace management, all you need to do is:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:327
+#, no-c-format
+msgid ""
+"Provide <emphasis>description</emphasis> text for each view id (when using "
+"JSF or Seam navigation rules) or page node (when using jPDL pageflows). This "
+"description text is displayed to the user by the workspace switchers."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:332
+#, no-c-format
+msgid ""
+"Include one or more of the standard workspace switcher JSP or facelets "
+"fragments in your pages. The standard fragments support workspace management "
+"via a drop down menu, a list of conversations, or breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:335
+#, no-c-format
+msgid ""
+"Please refer to the Seam Issue Tracker demo to see all this functionality in "
+"action!"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:339
+#, no-c-format
+msgid "Workspace management and JSF navigation"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:340
+#, no-c-format
+msgid ""
+"When you use JSF or Seam navigation rules, Seam switches to a conversation "
+"by restoring the current <literal>view-id</literal> for that conversation. "
+"The descriptive text for the workspace is defined in a file called "
+"<literal>pages.xml</literal> that Seam expects to find in the <literal>WEB-"
+"INF</literal> directory, right next to <literal>faces-config.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:343
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/main.xhtml\"&gt;Search hotels: #{hotelBooking."
+"searchString}&lt;/page&gt;\n"
+"    &lt;page view-id=\"/hotel.xhtml\"&gt;View hotel: #{hotel.name}&lt;/"
+"page&gt;\n"
+"    &lt;page view-id=\"/book.xhtml\"&gt;Book hotel: #{hotel.name}&lt;/"
+"page&gt;\n"
+"    &lt;page view-id=\"/confirm.xhtml\"&gt;Confirm: #{booking.description}"
+"&lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:344
+#, no-c-format
+msgid ""
+"Note that if this file is missing, the Seam application will continue to "
+"work perfectly! The only missing functionality will be the ability to switch "
+"workspaces."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:350
+#, no-c-format
+msgid "Workspace management and jPDL pageflow"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:351
+#, no-c-format
+msgid ""
+"When you use a jPDL pageflow definition, Seam switches to a conversation by "
+"restoring the current jBPM process state. This is a more flexible model "
+"since it allows the same <literal>view-id</literal> to have different "
+"descriptions depending upon the current <literal>&lt;page&gt;</literal> "
+"node. The description text is defined by the <literal>&lt;page&gt;</literal> "
+"node:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:354
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"shopping\"&gt;\n"
+"\n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"browse\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;page name=\"browse\" view-id=\"/browse.xhtml\"&gt;\n"
+"      &lt;description&gt;DVD Search: #{search.searchPattern}&lt;/"
+"description&gt;\n"
+"      &lt;transition to=\"browse\"/&gt;\n"
+"      &lt;transition name=\"checkout\" to=\"checkout\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"checkout\" view-id=\"/checkout.xhtml\"&gt;\n"
+"      &lt;description&gt;Purchase: &#36;#{cart.total}&lt;/description&gt;\n"
+"      &lt;transition to=\"checkout\"/&gt;\n"
+"      &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"complete\" view-id=\"/complete.xhtml\"&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:358
+#, no-c-format
+msgid "The conversation switcher"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:359
+#, no-c-format
+msgid ""
+"Include the following fragment in your JSP or facelets page to get a drop-"
+"down menu that lets you switch to any current conversation, or to any other "
+"page of the application:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:362
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{switcher.conversationIdOrOutcome}\"&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Find Issues\" itemValue=\"findIssue\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Create Issue\" itemValue=\"editIssue\"/"
+"&gt;\n"
+"    &lt;f:selectItems value=\"#{switcher.selectItems}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{switcher.select}\" value=\"Switch\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:363
+#, no-c-format
+msgid ""
+"In this example, we have a menu that includes an item for each conversation, "
+"together with two additional items that let the user begin a new "
+"conversation."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:377
+#, no-c-format
+msgid "The conversation list"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:378
+#, no-c-format
+msgid ""
+"The conversation list is very similar to the conversation switcher, except "
+"that it is displayed as a table:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:381
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{conversationList}\" var=\"entry\"\n"
+"        rendered=\"#{not empty conversationList}\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Workspace&lt;/f:facet&gt;\n"
+"        &lt;h:commandLink action=\"#{entry.select}\" value=\"#{entry."
+"description}\"/&gt;\n"
+"        &lt;h:outputText value=\"[current]\" rendered=\"#{entry.current}\"/"
+"&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Activity&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{entry.startDatetime}\"&gt;\n"
+"            &lt;f:convertDateTime type=\"time\" pattern=\"hh:mm a\"/&gt;\n"
+"        &lt;/h:outputText&gt;\n"
+"        &lt;h:outputText value=\" - \"/&gt;\n"
+"        &lt;h:outputText value=\"#{entry.lastDatetime}\"&gt;\n"
+"            &lt;f:convertDateTime type=\"time\" pattern=\"hh:mm a\"/&gt;\n"
+"        &lt;/h:outputText&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"        &lt;h:commandButton action=\"#{entry.select}\" value=\"#{msg.Switch}"
+"\"/&gt;\n"
+"        &lt;h:commandButton action=\"#{entry.destroy}\" value=\"#{msg."
+"Destroy}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:382
+#, no-c-format
+msgid ""
+"We imagine that you will want to customize this for your own application."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:393
+#, no-c-format
+msgid ""
+"The conversation list is nice, but it takes up a lot of space on the page, "
+"so you probably don't want to put it on <emphasis>every</emphasis> page."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:396
+#, no-c-format
+msgid "Notice that the conversation list lets the user destroy workspaces."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:402
+#, no-c-format
+msgid "Breadcrumbs"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:403
+#, no-c-format
+msgid ""
+"Breadcrumbs are useful in applications which use a nested conversation "
+"model. The breadcrumbs are a list of links to conversations in the current "
+"conversation stack:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:406
+#, no-c-format
+msgid ""
+"&lt;t:dataList value=\"#{conversationStack}\" var=\"entry\"&gt;\n"
+"    &lt;h:outputText value=\" | \"/&gt; \n"
+"    &lt;h:commandLink value=\"#{entry.description}\" action=\"#{entry.select}"
+"\"/&gt;\n"
+"&lt;/t:dataList&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:407
+#, no-c-format
+msgid ""
+"Notice that here we are using the MyFaces <literal>&lt;t:dataList&gt;</"
+"literal> component, since JSF amazingly does not provide any standard "
+"component for looping."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:424
+#, no-c-format
+msgid "Conversational components and JSF component bindings"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:425
+#, no-c-format
+msgid ""
+"Conversational components have one minor limitation: they cannot be used to "
+"hold bindings to JSF components. (We generally prefer not to use this "
+"feature of JSF unless absolutely necessary, since it creates a hard "
+"dependency from application logic to the view.) On a postback request, "
+"component bindings are updated during the Restore View phase, before the "
+"Seam conversation context has been restored."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:428
+#, no-c-format
+msgid ""
+"To work around this use an event scoped component to store the component "
+"bindings and inject it into the conversation scoped component that requires "
+"it."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:431
+#, no-c-format
+msgid ""
+"@Name(\"grid\")\n"
+"@Scope(ScopeType.EVENT)\n"
+"public class Grid\n"
+"{\n"
+"    private HtmlPanelGrid htmlPanelGrid;\n"
+"\n"
+"    // getters and setters\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:432
+#, no-c-format
+msgid ""
+"@Name(\"gridEditor\")\n"
+"@Scope(ScopeType.CONVERSATION)\n"
+"public class GridEditor\n"
+"{\n"
+"    @In(required=false)\n"
+"    private Grid grid;\n"
+"    \n"
+"    ...\n"
+"}"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Drools.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Drools.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Drools.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,281 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Drools.xml:10
+#, no-c-format
+msgid "Seam and JBoss Rules"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:11
+#, no-c-format
+msgid ""
+"Seam makes it easy to call JBoss Rules (Drools) rulebases from Seam "
+"components or jBPM process definitions."
+msgstr ""
+
+#. Tag: title
+#: Drools.xml:15
+#, no-c-format
+msgid "Installing rules"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:16
+#, no-c-format
+msgid ""
+"The first step is to make an instance of <literal>org.drools.RuleBase</"
+"literal> available in a Seam context variable. In most rules-driven "
+"applications, rules need to be dynamically deployable, so you will need to "
+"implement some solution that allows you to deploy rules and make them "
+"available to Seam (a future release of Drools will provide a Rule Server "
+"that solves this problem). For testing purposes, Seam provides a built-in "
+"component that compiles a static set of rules from the classpath. You can "
+"install this component via <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:19
+#, no-c-format
+msgid ""
+"&lt;drools:rule-base name=\"policyPricingRules\"&gt;\n"
+"    &lt;drools:rule-files&gt;\n"
+"        &lt;value&gt;policyPricingRules&lt;/value&gt;\n"
+"    &lt;/drools:rule-files&gt;\n"
+"&lt;/drools:rule-base&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:20
+#, no-c-format
+msgid ""
+"This component compiles rules from a set of <literal>.drl</literal> files "
+"and caches an instance of <literal>org.drools.RuleBase</literal> in the Seam "
+"<literal>APPLICATION</literal> context. Note that it is quite likely that "
+"you will need to install multiple rule bases in a rule-driven application."
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:23
+#, no-c-format
+msgid ""
+"If you want to use a Drools DSL, you alse need to specify the DSL definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:26
+#, no-c-format
+msgid ""
+"&lt;drools:rule-base name=\"policyPricingRules\" dsl-file=\"policyPricing.dsl"
+"\"&gt;\n"
+"    &lt;drools:rule-files&gt;\n"
+"        &lt;value&gt;policyPricingRules&lt;/value&gt;\n"
+"    &lt;/drools:rule-files&gt;\n"
+"&lt;/drools:rule-base&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:27
+#, no-c-format
+msgid ""
+"Next, we need to make an instance of <literal>org.drools.WorkingMemory</"
+"literal> available to each conversation. (Each <literal>WorkingMemory</"
+"literal> accumulates facts relating to the current conversation.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:30
+#, no-c-format
+msgid ""
+"&lt;drools:managed-working-memory name=\"policyPricingWorkingMemory\" auto-"
+"create=\"true\" rule-base=\"#{policyPricingRules}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:31
+#, no-c-format
+msgid ""
+"Notice that we gave the <literal>policyPricingWorkingMemory</literal> a "
+"reference back to our rule base via the <literal>ruleBase</literal> "
+"configuration property."
+msgstr ""
+
+#. Tag: title
+#: Drools.xml:37
+#, no-c-format
+msgid "Using rules from a Seam component"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:38
+#, no-c-format
+msgid ""
+"We can now inject our <literal>WorkingMemory</literal> into any Seam "
+"component, assert facts, and fire rules:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:41
+#, no-c-format
+msgid ""
+"@In WorkingMemory policyPricingWorkingMemory;\n"
+"\n"
+"@In Policy policy;\n"
+"@In Customer customer;\n"
+"\n"
+"public void pricePolicy() throws FactException\n"
+"{\n"
+"    policyPricingWorkingMemory.assertObject(policy);\n"
+"    policyPricingWorkingMemory.assertObject(customer);\n"
+"    policyPricingWorkingMemory.fireAllRules();\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Drools.xml:45
+#, no-c-format
+msgid "Using rules from a jBPM process definition"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:46
+#, no-c-format
+msgid ""
+"You can even allow a rule base to act as a jBPM action handler, decision "
+"handler, or assignment handler&mdash;in either a pageflow or business "
+"process definition."
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:49
+#, no-c-format
+msgid ""
+"&lt;decision name=\"approval\"&gt;\n"
+"         \n"
+"    &lt;handler class=\"org.jboss.seam.drools.DroolsDecisionHandler\"&gt;\n"
+"        &lt;workingMemoryName&gt;orderApprovalRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"        &lt;assertObjects&gt;\n"
+"            &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"            &lt;element&gt;#{order}&lt;/element&gt;\n"
+"            &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"        &lt;/assertObjects&gt;\n"
+"    &lt;/handler&gt;\n"
+"    \n"
+"    &lt;transition name=\"approved\" to=\"ship\"&gt;\n"
+"        &lt;action class=\"org.jboss.seam.drools.DroolsActionHandler\"&gt;\n"
+"            &lt;workingMemoryName&gt;shippingRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"            &lt;assertObjects&gt;\n"
+"                &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"            &lt;/assertObjects&gt;\n"
+"        &lt;/action&gt;\n"
+"    &lt;/transition&gt;\n"
+"    \n"
+"    &lt;transition name=\"rejected\" to=\"cancelled\"/&gt;\n"
+"    \n"
+"&lt;/decision&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:50
+#, no-c-format
+msgid ""
+"The <literal>&lt;assertObjects&gt;</literal> element specifies EL "
+"expressions that return an object or collection of objects to be asserted as "
+"facts into the <literal>WorkingMemory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:53
+#, no-c-format
+msgid "There is also support for using Drools for jBPM task assignments:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:56
+#, no-c-format
+msgid ""
+"&lt;task-node name=\"review\"&gt;\n"
+"    &lt;task name=\"review\" description=\"Review Order\"&gt;\n"
+"        &lt;assignment handler=\"org.jboss.seam.drools."
+"DroolsAssignmentHandler\"&gt;\n"
+"            &lt;workingMemoryName&gt;orderApprovalRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"            &lt;assertObjects&gt;\n"
+"                &lt;element&gt;#{actor}&lt;/element&gt;\n"
+"                &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"            &lt;/assertObjects&gt;\n"
+"        &lt;/assignment&gt;\n"
+"    &lt;/task&gt;\n"
+"    &lt;transition name=\"rejected\" to=\"cancelled\"/&gt;\n"
+"    &lt;transition name=\"approved\" to=\"approved\"/&gt;\n"
+"&lt;/task-node&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:57
+#, no-c-format
+msgid ""
+"Certain objects are available to the rules as Drools globals, namely the "
+"jBPM <literal>Assignable</literal>, as <literal>assignable</literal> and a "
+"Seam <literal>Decision</literal> object, as <literal>decision</literal>. "
+"Rules which handle decisions should call <literal>decision.setOutcome"
+"(\"result\")</literal> to determine the result of the decision. Rules which "
+"perform assignments should set the actor id using the <literal>Assignable</"
+"literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:60
+#, no-c-format
+msgid ""
+"package org.jboss.seam.examples.shop\n"
+"\n"
+"import org.jboss.seam.drools.Decision\n"
+"\n"
+"global Decision decision\n"
+"\n"
+"rule \"Approve Order For Loyal Customer\"\n"
+"  when\n"
+"    Customer( loyaltyStatus == \"GOLD\" )\n"
+"    Order( totalAmount &lt;= 10000 )\n"
+"  then\n"
+"    decision.setOutcome(\"approved\");\n"
+"end"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:61
+#, no-c-format
+msgid ""
+"package org.jboss.seam.examples.shop\n"
+"\n"
+"import org.jbpm.taskmgmt.exe.Assignable\n"
+"\n"
+"global Assignable assignable\n"
+"\n"
+"rule \"Assign Review For Small Order\"\n"
+"  when\n"
+"    Order( totalAmount &lt;= 100 )\n"
+"  then\n"
+"    assignable.setPooledActors( new String[] {\"reviewers\"} );\n"
+"end"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Elenhancements.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Elenhancements.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Elenhancements.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,221 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Elenhancements.xml:10
+#, no-c-format
+msgid "Expression language enhancements"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:11
+#, no-c-format
+msgid ""
+"The standard Unified Expression Language (EL) assumes that any parameters to "
+"a method expression will be provided by Java code. This means that a method "
+"with parameters cannot be used as a JSF method binding. Seam provides an "
+"enhancement to the EL that allows parameters to be included in a method "
+"expression itself. This applies to <emphasis>any</emphasis> Seam method "
+"expression, including any JSF method binding, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:14
+#, no-c-format
+msgid ""
+"&lt;s:commandButton action=\"#{hotelBooking.bookHotel(hotel)}\" value=\"Book "
+"Hotel\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:16
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:17
+#, no-c-format
+msgid ""
+"To use this feature in Facelets, you will need to declare a special view "
+"handler, <literal>SeamFaceletViewHandler</literal> in <literal>faces-config."
+"xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:20
+#, no-c-format
+msgid ""
+"&lt;faces-config&gt;\n"
+"    &lt;application&gt;\n"
+"        &lt;view-handler&gt;org.jboss.seam.ui.facelet."
+"SeamFaceletViewHandler&lt;/view-handler&gt;\n"
+"    &lt;/application&gt;\n"
+"&lt;/faces-config&gt;"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:24
+#, no-c-format
+msgid "Usage"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:25
+#, no-c-format
+msgid "Parameters are surrounded by parentheses, and separated by commas:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:28
+#, no-c-format
+msgid ""
+"&lt;h:commandButton action=\"#{hotelBooking.bookHotel(hotel, user)}\" value="
+"\"Book Hotel\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:29
+#, no-c-format
+msgid ""
+"The parameters <literal>hotel</literal> and <literal>user</literal> will be "
+"evaluated as value expressions and passed to the <literal>bookHotel()</"
+"literal> method of the component. This gives you an alternative to the use "
+"of <literal>@In</literal>."
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:32
+#, no-c-format
+msgid "Any value expression may be used as a parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:35
+#, no-c-format
+msgid ""
+"&lt;h:commandButton action=\"#{hotelBooking.bookHotel(hotel.id, user."
+"username)}\" value=\"Book Hotel\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:36
+#, no-c-format
+msgid "You may even pass literal strings using single or double quotes:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:39
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=&#8221;#{printer.println( &#8216;Hello world!"
+"&#8217; )}&#8221; value=&#8221;Hello&#8221;/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:40
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=&#8217;#{printer.println( &#8220;Hello "
+"again&#8221; )}&#8217; value=&#8217;Hello&#8217;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:41
+#, no-c-format
+msgid ""
+"You might even want to use this notation for all your action methods, even "
+"when you don&#8217;t have parameters to pass. This improves readability by "
+"making it clear that the expression is a method expression and not a value "
+"expression:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:44
+#, no-c-format
+msgid "&lt;s:link value=\"Cancel\" action=\"#{hotelBooking.cancel()}\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:48
+#, no-c-format
+msgid "Limitations"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:49
+#, no-c-format
+msgid "Please be aware of the following limitations:"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:53
+#, no-c-format
+msgid "Incompatibility with JSP 2.1"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:54
+#, no-c-format
+msgid ""
+"This extension is not currently compatible with JSP 2.1. So if you want to "
+"use this extension with JSF 1.2, you will need to use Facelets. The "
+"extension works correctly with JSP 2.0."
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:60
+#, no-c-format
+msgid "Calling a <literal>MethodExpression</literal> from Java code"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:61
+#, no-c-format
+msgid ""
+"Normally, when a <literal>MethodExpression</literal> or "
+"<literal>MethodBinding</literal> is created, the parameter types are passed "
+"in by JSF. In the case of a method binding, JSF assumes that there are no "
+"parameters to pass. With this extension, we can&#8217;t know the parameter "
+"types until after the expression has been evaluated. This has two minor "
+"consequences:"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:66
+#, no-c-format
+msgid ""
+"When you invoke a <literal>MethodExpression</literal> in Java code, "
+"parameters you pass may be ignored. Parameters defined in the expression "
+"will take precedence."
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:71
+#, no-c-format
+msgid ""
+"Ordinarily, it is safe to call <literal>methodExpression.getMethodInfo()."
+"getParamTypes()</literal> at any time. For an expression with parameters, "
+"you must first invoke the <literal>MethodExpression</literal> before calling "
+"<literal>getParamTypes()</literal>."
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:76
+#, no-c-format
+msgid ""
+"Both of these cases are exceedingly rare and only apply when you want to "
+"invoke the <literal>MethodExpression</literal> by hand in Java code."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Events.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Events.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Events.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1430 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Events.xml:10
+#, no-c-format
+msgid "Events, interceptors and exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:11
+#, no-c-format
+msgid ""
+"Complementing the contextual component model, there are two further basic "
+"concepts that facilitate the extreme loose-coupling that is the distinctive "
+"feature of Seam applications. The first is a strong event model where events "
+"may be mapped to event listeners via JSF-like method binding expressions. "
+"The second is the pervasive use of annotations and interceptors to apply "
+"cross-cutting concerns to components which implement business logic."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:14
+#, no-c-format
+msgid "Seam events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:15
+#, no-c-format
+msgid ""
+"The Seam component model was developed for use with <emphasis>event-driven "
+"applications</emphasis>, specifically to enable the development of fine-"
+"grained, loosely-coupled components in a fine-grained eventing model. Events "
+"in Seam come in several types, most of which we have already seen:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:20
+#, no-c-format
+msgid "JSF events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:25
+#, no-c-format
+msgid "jBPM transition events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:30
+#, no-c-format
+msgid "Seam page actions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:35
+#, no-c-format
+msgid "Seam component-driven events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:40
+#, no-c-format
+msgid "Seam contextual events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:45
+#, no-c-format
+msgid ""
+"All of these various kinds of events are mapped to Seam components via JSF "
+"EL method binding expressions. For a JSF event, this is defined in the JSF "
+"template:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:48
+#, no-c-format
+msgid ""
+"&lt;h:commandButton value=\"Click me!\" action=\"#{helloWorld.sayHello}\"/"
+"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:49
+#, no-c-format
+msgid ""
+"For a jBPM transition event, it is specified in the jBPM process definition "
+"or pageflow definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:52
+#, no-c-format
+msgid ""
+"&lt;start-page name=\"hello\" view-id=\"/hello.jsp\"&gt;\n"
+"    &lt;transition to=\"hello\"&gt;\n"
+"        &lt;action expression=\"#{helloWorld.sayHello}\"/&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/start-page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:53
+#, no-c-format
+msgid ""
+"You can find out more information about JSF events and jBPM events "
+"elsewhere. Lets concentrate for now upon the two additional kinds of events "
+"defined by Seam."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:56
+#, no-c-format
+msgid "Page actions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:57
+#, no-c-format
+msgid ""
+"A Seam page action is an event that occurs just before we render a page. We "
+"declare page actions in <literal>WEB-INF/pages.xml</literal>. We can define "
+"a page action for either a particular JSF view id:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:60
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\" action=\"#{helloWorld.sayHello}\"/&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:61
+#, no-c-format
+msgid ""
+"Or we can use a wildcard to specify an action that applies to all view ids "
+"that match the pattern:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:64
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello/*\" action=\"#{helloWorld.sayHello}\"/&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:65
+#, no-c-format
+msgid ""
+"If multiple wildcarded page actions match the current view-id, Seam will "
+"call all the actions, in order of least-specific to most-specific."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:68
+#, no-c-format
+msgid ""
+"The page action method can return a JSF outcome. If the outcome is non-null, "
+"Seam will delegate to the defined JSFadn Seam navigation rules and a "
+"different view may end up being rendered."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:71
+#, no-c-format
+msgid ""
+"Furthermore, the view id mentioned in the <literal>&lt;page&gt;</literal> "
+"element need not correspond to a real JSP or Facelets page! So, we can "
+"reproduce the functionality of a traditional action-oriented framework like "
+"Struts or WebWork using page actions. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:74
+#, no-c-format
+msgid "TODO: translate struts action into page action"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:75
+#, no-c-format
+msgid ""
+"This is quite useful if you want to do complex things in response to non-"
+"faces requests (for example, HTTP GET requests)."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:78
+#, no-c-format
+msgid "Page parameters"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:79
+#, no-c-format
+msgid ""
+"A JSF faces request (a form submission) encapsulates both an \"action\" (a "
+"method binding) and \"parameters\" (input value bindings). A page action "
+"might also needs parameters!"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:82
+#, no-c-format
+msgid ""
+"Since GET requests are bookmarkable, page parameters are passed as human-"
+"readable request parameters. (Unlike JSF form inputs, which are anything "
+"but!)"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:85
+#, no-c-format
+msgid ""
+"Seam lets us provide a value binding that maps a named request parameter to "
+"an attribute of a model object."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:88
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\" action=\"#{helloWorld.sayHello}\"&gt;\n"
+"        &lt;param name=\"firstName\" value=\"#{person.firstName}\"/&gt;\n"
+"        &lt;param name=\"lastName\" value=\"#{person.lastName}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:89
+#, no-c-format
+msgid ""
+"The <literal>&lt;param&gt;</literal> declaration is bidirectional, just like "
+"a value binding for a JSF input:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:94
+#, no-c-format
+msgid ""
+"When a non-faces (GET) request for the view id occurs, Seam sets the value "
+"of the named request parameter onto the model object, after performing "
+"appropriate type conversions."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:99
+#, no-c-format
+msgid ""
+"Any <literal>&lt;s:link&gt;</literal> or <literal>&lt;s:button&gt;</literal> "
+"transparently includes the request parameter. The value of the parameter is "
+"determined by evaluating the value binding during the render phase (when the "
+"<literal>&lt;s:link&gt;</literal> is rendered)."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:104
+#, no-c-format
+msgid ""
+"Any navigation rule with a <literal>&lt;redirect/&gt;</literal> to the view "
+"id transparently includes the request parameter. The value of the parameter "
+"is determined by evaluating the value binding at the end of the invoke "
+"application phase."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:109
+#, no-c-format
+msgid ""
+"The value is transparently propagated with any JSF form submission for the "
+"page with the given view id. (This means that view parameters behave like "
+"<literal>PAGE</literal>-scoped context variables for faces requests."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:114
+#, no-c-format
+msgid ""
+"The essential idea behind all this is that <emphasis>however</emphasis> we "
+"get from any other page to <literal>/hello.jsp</literal> (or from <literal>/"
+"hello.jsp</literal> back to <literal>/hello.jsp</literal>), the value of the "
+"model attribute referred to in the value binding is \"remembered\", without "
+"the need for a conversation (or other server-side state)."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:117
+#, no-c-format
+msgid ""
+"This all sounds pretty complex, and you're probably wondering if such an "
+"exotic construct is really worth the effort. Actually, the idea is very "
+"natural once you \"get it\". It is definitely worth taking the time to "
+"understand this stuff. Page parameters are the most elegant way to propagate "
+"state across a non-faces request. They are especially cool for problems like "
+"search screens with bookmarkable results pages, where we would like to be "
+"able to write our application code to handle both POST and GET requests with "
+"the same code. Page parameters eliminate repetitive listing of request "
+"parameters in the view definition and make redirects much easier to code."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:120
+#, no-c-format
+msgid ""
+"Note that you don't need an actual page action method binding to use a page "
+"parameter. The following is perfectly valid:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:123
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\"&gt;\n"
+"        &lt;param name=\"firstName\" value=\"#{person.firstName}\"/&gt;\n"
+"        &lt;param name=\"lastName\" value=\"#{person.lastName}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:124
+#, no-c-format
+msgid "You can even specify a JSF converter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:127
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/calculator.jsp\" action=\"#{calculator.calculate}"
+"\"&gt;\n"
+"        &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"        &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"        &lt;param name=\"op\" converterId=\"com.my.calculator."
+"OperatorConverter\" value=\"#{calculator.op}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:128
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/calculator.jsp\" action=\"#{calculator.calculate}"
+"\"&gt;\n"
+"        &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"        &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"        &lt;param name=\"op\" converter=\"#{operatorConverter}\" value=\"#"
+"{calculator.op}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:129
+#, no-c-format
+msgid "Navigation"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:130
+#, no-c-format
+msgid ""
+"You can use standard JSF navigation rules defined in <literal>faces-config."
+"xml</literal> in a Seam application. However, JSF navigation rules have a "
+"number of annoying limitations:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:135
+#, no-c-format
+msgid ""
+"It is not possible to specify request parameters to be used when redirecting."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:140
+#, no-c-format
+msgid "It is not possible to begin or end conversations from a rule."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:145
+#, no-c-format
+msgid ""
+"Rules work by evaluating the return value of the action method; it is not "
+"possible to evaluate an arbitrary EL expression."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:150
+#, no-c-format
+msgid ""
+"A further problem is that \"orchestration\" logic gets scattered between "
+"<literal>pages.xml</literal> and <literal>faces-config.xml</literal>. It's "
+"better to unify this logic into <literal>pages.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:153
+#, no-c-format
+msgid "This JSF navigation rule:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:156
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"    &lt;from-view-id&gt;/editDocument.xhtml&lt;/from-view-id&gt;\n"
+"    \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-action&gt;#{documentEditor.update}&lt;/from-action&gt;\n"
+"        &lt;from-outcome&gt;success&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/viewDocument.xhtml&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"    \n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:157
+#, no-c-format
+msgid "Can be rewritten as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:160
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if-outcome=\"success\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:161
+#, no-c-format
+msgid ""
+"But it would be even nicer if we didn't have to pollute our "
+"<literal>DocumentEditor</literal> component with string-valued return values "
+"(the JSF outcomes). So Seam lets us write:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:164
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\" \n"
+"                   evaluate=\"#{documentEditor.errors.size}\"&gt;\n"
+"        &lt;rule if-outcome=\"0\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:165
+#, no-c-format
+msgid "Or even:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:168
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:169
+#, no-c-format
+msgid ""
+"The first form evaluates a value binding to determine the outcome value to "
+"be used by the subsequent rules. The second approach ignores the outcome and "
+"evaluates a value binding for each possible rule."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:172
+#, no-c-format
+msgid ""
+"Of course, when an update succeeds, we probably want to end the current "
+"conversation. We can do that like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:175
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:176
+#, no-c-format
+msgid ""
+"But ending the conversation loses any state associated with the "
+"conversation, including the document we are currently interested in! One "
+"solution would be to use an immediate render instead of a redirect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:179
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:180
+#, no-c-format
+msgid ""
+"But the correct solution is to pass the document id as a request parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:183
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"&gt;\n"
+"                &lt;param name=\"documentId\" value=\"#{documentEditor."
+"documentId}\"/&gt;\n"
+"            &lt;/redirect&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:184
+#, no-c-format
+msgid ""
+"Null outcomes are a special case in JSF. The null outcome is interpreted to "
+"mean \"redisplay the page\". The following navigation rule matches any non-"
+"null outcome, but <emphasis>not</emphasis> the null outcome:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:187
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule&gt;\n"
+"            &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:188
+#, no-c-format
+msgid ""
+"If you want to perform navigation when a null outcome occurs, use the "
+"following form instead:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:191
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:192
+#, no-c-format
+msgid ""
+"Fine-grained files for definition of navigation, page actions and parameters"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:193
+#, no-c-format
+msgid ""
+"If you have a lot of different page actions and page parameters, or even "
+"just a lot of navigation rules, you will almost certainly want to split the "
+"declarations up over multiple files. You can define actions and parameters "
+"for a page with the view id <literal>/calc/calculator.jsp</literal> in a "
+"resource named <literal>calc/calculator.page.xml</literal>. The root element "
+"in this case is the <literal>&lt;page&gt;</literal> element, and the view id "
+"is implied:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:196
+#, no-c-format
+msgid ""
+"&lt;page action=\"#{calculator.calculate}\"&gt;\n"
+"    &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"    &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"    &lt;param name=\"op\" converter=\"#{operatorConverter}\" value=\"#"
+"{calculator.op}\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:197
+#, no-c-format
+msgid "Component-driven events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:198
+#, no-c-format
+msgid ""
+"Seam components can interact by simply calling each others methods. Stateful "
+"components may even implement the observer/observable pattern. But to enable "
+"components to interact in a more loosely-coupled fashion than is possible "
+"when the components call each others methods directly, Seam provides "
+"<emphasis>component-driven events</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:201
+#, no-c-format
+msgid ""
+"We specify event listeners (observers) in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:204
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;event type=\"hello\"&gt;\n"
+"        &lt;action expression=\"#{helloListener.sayHelloBack}\"/&gt;\n"
+"        &lt;action expression=\"#{logger.logHello}\"/&gt;\n"
+"    &lt;/event&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:205
+#, no-c-format
+msgid "Where the <emphasis>event type</emphasis> is just an arbitrary string."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:208
+#, no-c-format
+msgid ""
+"When an event occurs, the actions registered for that event will be called "
+"in the order they appear in <literal>components.xml</literal>. How does a "
+"component raise an event? Seam provides a built-in component for this."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:211
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World!\");\n"
+"        Events.instance().raiseEvent(\"hello\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:212
+#, no-c-format
+msgid "Or you can use an annotation."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:215
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    @RaiseEvent(\"hello\")\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World!\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:216
+#, no-c-format
+msgid ""
+"Notice that this event producer has no dependency upon event consumers. The "
+"event listener may now be implemented with absolutely no dependency upon the "
+"producer:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:219
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    public void sayHelloBack() {\n"
+"        FacesMessages.instance().add(\"Hello to you too!\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:220
+#, no-c-format
+msgid ""
+"The method binding defined in <literal>components.xml</literal> above takes "
+"care of mapping the event to the consumer. If you don't like futzing about "
+"in the <literal>components.xml</literal> file, you can use an annotation "
+"instead:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:223
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    @Observer(\"hello\")\n"
+"    public void sayHelloBack() {\n"
+"        FacesMessages.instance().add(\"Hello to you too!\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:224
+#, no-c-format
+msgid ""
+"You might wonder why I've not mentioned anything about event objects in this "
+"discussion. In Seam, there is no need for an event object to propagate state "
+"between event producer and listener. State is held in the Seam contexts, and "
+"is shared between components. However, if you really want to pass an event "
+"object, you can:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:227
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    private String name;\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World, my name is #0.\", "
+"name);\n"
+"        Events.instance().raiseEvent(\"hello\", name);\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:228
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    @Observer(\"hello\")\n"
+"    public void sayHelloBack(String name) {\n"
+"        FacesMessages.instance().add(\"Hello #0!\", name);\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:229
+#, no-c-format
+msgid "Contextual events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:230
+#, no-c-format
+msgid ""
+"Seam defines a number of built-in events that the application can use to "
+"perform special kinds of framework integration. The events are:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:235
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preSetVariable.&lt;name&gt;</literal> &mdash; called "
+"when the context variable &lt;name&gt; is set"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:240
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postSetVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is set"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:245
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preRemoveVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is unset"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:250
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postRemoveVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is unset"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:255
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preDestroyContext.&lt;SCOPE&gt;</literal> &mdash; "
+"called before the &lt;SCOPE&gt; context is destroyed"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:260
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postDestroyContext.&lt;SCOPE&gt;</literal> &mdash; "
+"called after the &lt;SCOPE&gt; context is destroyed"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:265
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beginConversation </literal>&mdash; called whenever "
+"a long-running conversation begins"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:270
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endConversation </literal>&mdash; called whenever a "
+"long-running conversation ends"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:275
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beginPageflow.&lt;name&gt; </literal>&mdash; called "
+"when the pageflow &lt;name&gt; begins"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:280
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endPageflow.&lt;name&gt; </literal>&mdash; called "
+"when the pageflow &lt;name&gt; ends"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:285
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.createProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; is created"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:290
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; ends"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:295
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.initProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; is associated with the conversation"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:300
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.initTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is associated with the conversation"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:305
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.startTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is started"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:310
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is ended"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:315
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postCreate.&lt;name&gt; </literal>&mdash; called "
+"when the component &lt;name&gt; is created"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:320
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preDestroy.&lt;name&gt; </literal>&mdash; called "
+"when the component &lt;name&gt; is destroyed"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:325
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beforePhase </literal>&mdash; called before the "
+"start of a JSF phase"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:330
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.afterPhase </literal>&mdash; called after the end of "
+"a JSF phase"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:335
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postAuthenticate.&lt;name&gt; </literal>&mdash; "
+"called after a user is authenticated"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:340
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preAuthenticate.&lt;name&gt; </literal>&mdash; "
+"called before attempting to authenticate a user"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:345
+#, no-c-format
+msgid ""
+"Seam components may observe any of these events in just the same way they "
+"observe any other component-driven events."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:348
+#, no-c-format
+msgid "Seam interceptors"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:349
+#, no-c-format
+msgid ""
+"EJB 3.0 introduced a standard interceptor model for session bean components. "
+"To add an interceptor to a bean, you need to write a class with a method "
+"annotated <literal>@AroundInvoke</literal> and annotate the bean with an "
+"<literal>@Interceptors</literal> annotation that specifies the name of the "
+"interceptor class. For example, the following interceptor checks that the "
+"user is logged in before allowing invoking an action listener method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:352
+#, no-c-format
+msgid ""
+"public class LoggedInInterceptor {\n"
+"\n"
+"   @AroundInvoke\n"
+"   public Object checkLoggedIn(InvocationContext invocation) throws "
+"Exception {\n"
+"   \n"
+"      boolean isLoggedIn = Contexts.getSessionContext().get(\"loggedIn\")!"
+"=null;\n"
+"      if (isLoggedIn) {\n"
+"         //the user is already logged in\n"
+"         return invocation.proceed();\n"
+"      }\n"
+"      else {\n"
+"         //the user is not logged in, fwd to login page\n"
+"         return \"login\";\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:353
+#, no-c-format
+msgid ""
+"To apply this interceptor to a session bean which acts as an action "
+"listener, we must annotate the session bean <literal>@Interceptors"
+"(LoggedInInterceptor.class)</literal>. This is a somewhat ugly annotation. "
+"Seam builds upon the interceptor framework in EJB3 by allowing you to use "
+"<literal>@Interceptors</literal> as a meta-annotation. In our example, we "
+"would create an <literal>@LoggedIn</literal> annotation, as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:356
+#, no-c-format
+msgid ""
+"@Target(TYPE)\n"
+"@Retention(RUNTIME)\n"
+"@Interceptors(LoggedInInterceptor.class)\n"
+"public @interface LoggedIn {}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:357
+#, no-c-format
+msgid ""
+"We can now simply annotate our action listener bean with <literal>@LoggedIn</"
+"literal> to apply the interceptor."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:360
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"changePasswordAction\")\n"
+"@LoggedIn\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class ChangePasswordAction implements ChangePassword { \n"
+"    \n"
+"    ...\n"
+"    \n"
+"    public String changePassword() { ... }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:361
+#, no-c-format
+msgid ""
+"If interceptor ordering is important (it usually is), you can add "
+"<literal>@Interceptor</literal> annotations to your interceptor classes to "
+"specify a partial order of interceptors."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:364
+#, no-c-format
+msgid ""
+"@Interceptor(around={BijectionInterceptor.class,\n"
+"                     ValidationInterceptor.class,\n"
+"                     ConversationInterceptor.class},\n"
+"             within=RemoveInterceptor.class)\n"
+"public class LoggedInInterceptor\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:365
+#, no-c-format
+msgid ""
+"You can even have a \"client-side\" interceptor, that runs around any of the "
+"built-in functionality of EJB3:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:368
+#, no-c-format
+msgid ""
+"@Interceptor(type=CLIENT)\n"
+"public class LoggedInInterceptor\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:369
+#, no-c-format
+msgid ""
+"EJB interceptors are stateful, with a lifecycle that is the same as the "
+"component they intercept. For interceptors which do not need to maintain "
+"state, Seam lets you get a performance optimization by specifying "
+"<literal>@Interceptor(stateless=true)</literal>."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:372
+#, no-c-format
+msgid ""
+"Much of the functionality of Seam is implemented as a set of built-in Seam "
+"interceptors, including the interceptors named in the previous example. You "
+"don't have to explicitly specify these interceptors by annotating your "
+"components; they exist for all interceptable Seam components."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:375
+#, no-c-format
+msgid ""
+"You can even use Seam interceptors with JavaBean components, not just EJB3 "
+"beans!"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:378
+#, no-c-format
+msgid ""
+"EJB defines interception not only for business methods (using "
+"<literal>@AroundInvoke</literal>), but also for the lifecycle methods "
+"<literal>@PostConstruct</literal>, <literal>@PreDestroy</literal>, "
+"<literal>@PrePassivate</literal> and <literal>@PostActive</literal>. Seam "
+"supports all these lifecycle methods on both component and interceptor not "
+"only for EJB3 beans, but also for JavaBean components (except "
+"<literal>@PreDestroy</literal> which is not meaningful for JavaBean "
+"components)."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:381
+#, no-c-format
+msgid "Managing exceptions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:382
+#, no-c-format
+msgid ""
+"JSF is surprisingly limited when it comes to exception handling. As a "
+"partial workaround for this problem, Seam lets you define how a particular "
+"class of exception is to be treated by annotating the exception class, or "
+"declaring the exception class in an XML file. This facility is meant to be "
+"combined with the EJB 3.0-standard <literal>@ApplicationException</literal> "
+"annotation which specifies whether the exception should cause a transaction "
+"rollback."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:385
+#, no-c-format
+msgid "Exceptions and transactions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:386
+#, no-c-format
+msgid ""
+"EJB specifies well-defined rules that let us control whether an exception "
+"immediately marks the current transaction for rollback when it is thrown by "
+"a business method of the bean: <emphasis>system exceptions</emphasis> always "
+"cause a transaction rollback, <emphasis>application exceptions</emphasis> do "
+"not cause a rollback by default, but they do if "
+"<literal>@ApplicationException(rollback=true)</literal> is specified. (An "
+"application exception is any checked exception, or any unchecked exception "
+"annotated <literal>@ApplicationException</literal>. A system exception is "
+"any unchecked exception without an <literal>@ApplicationException</literal> "
+"annotation.)"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:389
+#, no-c-format
+msgid ""
+"Note that there is a difference between marking a transaction for rollback, "
+"and actually rolling it back. The exception rules say that the transaction "
+"should be marked rollback only, but it may still be active after the "
+"exception is thrown."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:392
+#, no-c-format
+msgid ""
+"Seam applies the EJB 3.0 exception rollback rules also to Seam JavaBean "
+"components."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:395
+#, no-c-format
+msgid ""
+"But these rules only apply in the Seam component layer. What about an "
+"exception that is uncaught and propagates out of the Seam component layer, "
+"and out of the JSF layer? Well, it is always wrong to leave a dangling "
+"transaction open, so Seam rolls back any active transaction when an "
+"exception occurs and is uncaught in the Seam component layer."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:398
+#, no-c-format
+msgid "Enabling Seam exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:399
+#, no-c-format
+msgid ""
+"To enable Seam's exception handling, we need to make sure we have the master "
+"servlet filter declared in <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:402
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.servlet.SeamFilter&lt;/filter-"
+"class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:403
+#, no-c-format
+msgid "Using annotations for exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:404
+#, no-c-format
+msgid ""
+"The following exception results in a HTTP 404 error whenever it propagates "
+"out of the Seam component layer. It does not roll back the current "
+"transaction immediately when thrown, but the transaction will be rolled back "
+"if it the exception is not caught by another Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:407
+#, no-c-format
+msgid ""
+"@HttpError(errorCode=404)\n"
+"public class ApplicationException extends Exception { ... }"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:408
+#, no-c-format
+msgid ""
+"This exception results in a browser redirect whenever it propagates out of "
+"the Seam component layer. It also ends the current conversation. It causes "
+"an immediate rollback of the current transaction."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:411
+#, no-c-format
+msgid ""
+"@Redirect(viewId=\"/failure.xhtml\", end=true)\n"
+"@ApplicationException(rollback=true)\n"
+"public class UnrecoverableApplicationException extends RuntimeException "
+"{ ... }"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:412
+#, no-c-format
+msgid ""
+"Note that <literal>@Redirect</literal> does not work for exceptions which "
+"occur during the render phase of the JSF lifecycle."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:415
+#, no-c-format
+msgid ""
+"This exception results in a redirect, along with a message to the user, when "
+"it propagates out of the Seam component layer. It also immediately rolls "
+"back the current transaction."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:418
+#, no-c-format
+msgid ""
+"@Redirect(viewId=\"/error.xhtml\", message=\"Unexpected error\")\n"
+"public class SystemException extends RuntimeException { ... }"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:419
+#, no-c-format
+msgid "Using XML for exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:420
+#, no-c-format
+msgid ""
+"Since we can't add annotations to all the exception classes we are "
+"interested in, Seam also lets us specify this functionality in "
+"<literal>pages.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:423
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   \n"
+"   &lt;exception class=\"javax.persistence.EntityNotFoundException\"&gt;\n"
+"      &lt;http-error error-code=\"404\"/&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"   &lt;exception class=\"javax.persistence.PersistenceException\"&gt;\n"
+"      &lt;end-conversation/&gt;\n"
+"      &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"          &lt;message&gt;Database access failed&lt;/message&gt;\n"
+"      &lt;/redirect&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"   &lt;exception&gt;\n"
+"      &lt;end-conversation/&gt;\n"
+"      &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"          &lt;message&gt;Unexpected failure&lt;/message&gt;\n"
+"      &lt;/redirect&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:424
+#, no-c-format
+msgid ""
+"The last <literal>&lt;exception&gt;</literal> declaration does not specify a "
+"class, and is a catch-all for any exception for which handling is not "
+"otherwise specified via annotations or in <literal>pages.xml</literal>."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Framework.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Framework.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Framework.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,828 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Framework.xml:10
+#, no-c-format
+msgid "The Seam Application Framework"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:11
+#, no-c-format
+msgid ""
+"Seam makes it really easy to create applications by writing plain Java "
+"classes with annotations, which don't need to extend any special interfaces "
+"or superclasses. But we can simplify some common programming tasks even "
+"further, by providing a set of pre-built components which can be re-used "
+"either by configuration in <literal>components.xml</literal> (for very "
+"simple cases) or extension."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:14
+#, no-c-format
+msgid ""
+"The <emphasis>Seam Application Framework</emphasis> can reduce the amount of "
+"code you need to write when doing basic database access in a web "
+"application, using either Hibernate or JPA."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:17
+#, no-c-format
+msgid ""
+"We should emphasize that the framework is extremely simple, just a handful "
+"of simple classes that are easy to understand and extend. The \"magic\" is "
+"in Seam itself&mdash;the same magic you use when creating any Seam "
+"application even without using this framework."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:21
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:22
+#, no-c-format
+msgid ""
+"The components provided by the Seam application framework may be used in one "
+"of two different approaches. The first way is to install and configure an "
+"instance of the component in <literal>components.xml</literal>, just like we "
+"have done with other kinds of built-in Seam components. For example, the "
+"following fragment from <literal>components.xml</literal> installs a "
+"component which can perform basic CRUD operations for a <literal>Contact</"
+"literal> entity:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:25
+#, no-c-format
+msgid ""
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" \n"
+"                       entity-manager=\"#{personDatabase}\"&gt;\n"
+"    &lt;framework:id&gt;#{param.personId}&lt;/framework:id&gt;\n"
+"&lt;/framework:entity-home&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:26
+#, no-c-format
+msgid ""
+"If that looks a bit too much like \"programming in XML\" for your taste, you "
+"can use extension instead:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:29
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; implements "
+"LocalPersonHome {\n"
+"    @RequestParameter String personId;\n"
+"    @In EntityManager personDatabase;\n"
+"    \n"
+"    public Object getId() { return personId; }\n"
+"    public EntityManager getEntityManager() { return personDatabase; }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:30
+#, no-c-format
+msgid ""
+"The second approach has one huge advantage: you can easily add extra "
+"functionality, and override the built-in functionality (the framework "
+"classes were carefully designed for extension and customization)."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:33
+#, no-c-format
+msgid ""
+"A second advantage is that your classes may be EJB stateful sessin beans, if "
+"you like. (They do not have to be, they can be plain JavaBean components if "
+"you prefer.)"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:36
+#, no-c-format
+msgid ""
+"At this time, the Seam Application Framework provides just four built-in "
+"components: <literal>EntityHome</literal> and <literal>HibernateEntityHome</"
+"literal> for CRUD, along with <literal>EntityQuery</literal> and "
+"<literal>HibernateEntityQuery</literal> for queries."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:39
+#, no-c-format
+msgid ""
+"The Home and Query components are written so that they can function with a "
+"scope of session, event or conversation. Which scope you use depends upon "
+"the state model you wish to use in your application."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:42
+#, no-c-format
+msgid ""
+"The Seam Application Framework only works with Seam-managed persistence "
+"contexts. By default, the components will look for a persistence context "
+"named <literal>entityManager</literal>."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:48
+#, no-c-format
+msgid "Home objects"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:49
+#, no-c-format
+msgid ""
+"A Home object provides persistence operations for a particular entity class. "
+"Suppose we have our trusty <literal>Person</literal> class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:52
+#, no-c-format
+msgid ""
+"@Entity\n"
+"public class Person {\n"
+"    @Id private Long id;\n"
+"    private String firstName;\n"
+"    private String lastName;\n"
+"    private Country nationality;\n"
+"    \n"
+"    //getters and setters...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:53
+#, no-c-format
+msgid ""
+"We can define a <literal>personHome</literal> component either via "
+"configuration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:56
+#, no-c-format
+msgid ""
+"&lt;framework:entity-home name=\"personHome\" entity-class=\"eg.Person\" /"
+"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:57
+#, no-c-format
+msgid "Or via extension:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:60
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:61
+#, no-c-format
+msgid ""
+"A Home object provides the following operations: <literal>persist()</"
+"literal>, <literal>remove()</literal>, <literal>update()</literal> and "
+"<literal>getInstance()</literal>. Before you can call the <literal>remove()</"
+"literal>, or <literal>update()</literal> operations, you must first set the "
+"identifier of the object you are interested in, using the <literal>setId()</"
+"literal> method."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:64
+#, no-c-format
+msgid "We can use a Home directly from a JSF page, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:67
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Create Person&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{personHome.instance."
+"firstName}\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{personHome.instance."
+"lastName}\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:68
+#, no-c-format
+msgid ""
+"Usually, it is much nicer to be able to refer to the <literal>Person</"
+"literal> merely as <literal>person</literal>, so let's make that possible by "
+"adding a line to <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:71
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:72
+#, no-c-format
+msgid ""
+"(If we are using configuration.) Or by adding a <literal>@Factory</literal> "
+"method to <literal>PersonHome</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:75
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:76
+#, no-c-format
+msgid ""
+"(If we are using extension.) This change simplifies our JSF page to the "
+"following:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:79
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Create Person&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{person.firstName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{person.lastName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:80
+#, no-c-format
+msgid ""
+"Well, that lets us create new <literal>Person</literal> entries. Yes, that "
+"is all the code that is required! Now, if we want to be able to display, "
+"update and delete pre-existing <literal>Person</literal> entries in the "
+"database, we need to be able to pass the entry identifier to the "
+"<literal>PersonHome</literal>. Page parameters are a great way to do that:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:83
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page viewid=\"/editPerson.jsp\"&gt;\n"
+"        &lt;param name=\"personId\" value=\"#{personHome.id}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:84
+#, no-c-format
+msgid "Now we can add the extra operations to our JSF page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:87
+#, no-c-format
+msgid ""
+"&lt;h1&gt;\n"
+"    &lt;h:outputText rendered=\"#{!personHome.managed}\" value=\"Create "
+"Person\"/&gt;\n"
+"    &lt;h:outputText rendered=\"#{personHome.managed}\" value=\"Edit Person"
+"\"/&gt;\n"
+"&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{person.firstName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{person.lastName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\" \n"
+"            rendered=\"#{!personHome.managed}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Update Person\" action=\"#{personHome."
+"update}\" \n"
+"            rendered=\"#{personHome.managed}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Delete Person\" action=\"#{personHome."
+"remove}\" \n"
+"            rendered=\"#{personHome.managed}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:88
+#, no-c-format
+msgid ""
+"When we link to the page with no request parameters, the page will be "
+"displayed as a \"Create Person\" page. When we provide a value for the "
+"<literal>personId</literal> request parameter, it will be an \"Edit Person\" "
+"page."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:91
+#, no-c-format
+msgid ""
+"Suppose we need to create <literal>Person</literal> entries with their "
+"nationality initialized. We can do that easily, via configuration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:94
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" \n"
+"                       new-instance=\"#{newPerson}\"/&gt;\n"
+"\n"
+"&lt;component name=\"newPerson\" \n"
+"           class=\"eg.Person\"&gt;\n"
+"    &lt;property name=\"nationality\"&gt;#{country}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:95
+#, no-c-format
+msgid "Or by extension:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:98
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:99
+#, no-c-format
+msgid ""
+"Of course, the <literal>Country</literal> could be an object managed by "
+"another Home object, for example, <literal>CountryHome</literal>."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:102
+#, no-c-format
+msgid ""
+"To add more sophisticated operations (association management, etc), we can "
+"just add methods to <literal>PersonHome</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:105
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"    public void migrate()\n"
+"    {\n"
+"        getInstance().setCountry(country);\n"
+"        update();\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:106
+#, no-c-format
+msgid ""
+"The Home object automatically displays faces messages when an operation is "
+"successful. To customize these messages we can, again, use configuration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:109
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\"\n"
+"                       entity-class=\"eg.Person\"\n"
+"                       new-instance=\"#{newPerson}\"&gt;\n"
+"    &lt;framework:created-message&gt;New person #{person.firstName} #{person."
+"lastName} \n"
+"        created&lt;/framework:created-message&gt;\n"
+"    &lt;framework:deleted-message&gt;Person #{person.firstName} #{person."
+"lastName}\n"
+"        deleted&lt;/framework:deleted-message&gt;\n"
+"    &lt;framework:updated-message&gt;Person #{person.firstName} #{person."
+"lastName} \n"
+"        updated&lt;/framework:updated-message&gt;\n"
+"&lt;/framework:entity-home&gt;\n"
+"\n"
+"&lt;component name=\"newPerson\" \n"
+"           class=\"eg.Person\"&gt;\n"
+"    &lt;property name=\"nationality\"&gt;#{country}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:110
+#, no-c-format
+msgid "Or extension:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:113
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"    protected String getCreatedMessage() { return \"New person #{person."
+"firstName} \n"
+"        #{person.lastName} created\"; }\n"
+"    protected String getUpdatedMessage() { return \"Person #{person."
+"firstName} \n"
+"        #{person.lastName} updated\"; }\n"
+"    protected String getDeletedMessage() { return \"Person #{person."
+"firstName} \n"
+"        #{person.lastName} deleted\"; }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:114
+#, no-c-format
+msgid ""
+"But the best way to specify the messages is to put them in a resource bundle "
+"known to Seam (the bundle named <literal>messages</literal>, by default)."
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:117
+#, no-c-format
+msgid ""
+"Person_created=New person #{person.firstName} #{person.lastName} created\n"
+"Person_deleted=Person #{person.firstName} #{person.lastName} deleted\n"
+"Person_updated=Person #{person.firstName} #{person.lastName} updated"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:118
+#, no-c-format
+msgid ""
+"This enables internationalization, and keeps your code and configuration "
+"clean of presentation concerns."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:121
+#, no-c-format
+msgid ""
+"The final step is to add validation functionality to the page, using "
+"<literal>&lt;s:validateAll&gt;</literal> and <literal>&lt;s:decorate&gt;</"
+"literal>, but I'll leave that for you to figure out."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:127
+#, no-c-format
+msgid "Query objects"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:128
+#, no-c-format
+msgid ""
+"If we need a list of all <literal>Person</literal> instance in the database, "
+"we can use a Query object. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:131
+#, no-c-format
+msgid ""
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:132
+#, no-c-format
+msgid "We can use it from a JSF page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:135
+#, no-c-format
+msgid ""
+"&lt;h1&gt;List of people&lt;/h1&gt;\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view-id=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:136
+#, no-c-format
+msgid "We probably need to support pagination:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:139
+#, no-c-format
+msgid ""
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\" \n"
+"                        order=\"lastName\" \n"
+"                        max-results=\"20\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:140
+#, no-c-format
+msgid "We'll use a page parameter to determine the page to display:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:143
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page viewid=\"/searchPerson.jsp\"&gt;\n"
+"        &lt;param name=\"firstResult\" value=\"#{people.firstResult}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:144
+#, no-c-format
+msgid "The JSF code for a pagination control is a bit verbose, but manageable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:147
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Search for people&lt;/h1&gt;\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view-id=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.previousExists}\" "
+"value=\"First Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"0\"/&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.previousExists}\" "
+"value=\"Previous Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.previousFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.nextExists}\" value="
+"\"Next Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.nextFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.nextExists}\" value="
+"\"Last Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.lastFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:148
+#, no-c-format
+msgid ""
+"Real search screens let the user enter a bunch of optional search criteria "
+"to narrow the list of results returned. The Query object lets you specify "
+"optional \"restrictions\" to support this important usecase:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:151
+#, no-c-format
+msgid ""
+"&lt;component name=\"examplePerson\" class=\"Person\"/&gt;\n"
+"        \n"
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\" \n"
+"                        order=\"lastName\" \n"
+"                        max-results=\"20\"&gt;\n"
+"    &lt;framework:restrictions&gt;\n"
+"        &lt;value&gt;lower(firstName) like lower( #{examplePerson.firstName} "
+"+ '&#37;' )&lt;/value&gt;\n"
+"        &lt;value&gt;lower(lastName) like lower( #{examplePerson.lastName} + "
+"'&#37;' )&lt;/value&gt;\n"
+"    &lt;/framework:restrictions&gt;\n"
+"&lt;/framework:entity-query&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:152
+#, no-c-format
+msgid "Notice the use of an \"example\" object."
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:155
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Search for people&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{examplePerson.firstName}"
+"\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{examplePerson.lastName}"
+"\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;&lt;h:commandButton value=\"Search\" action=\"/search.jsp\"/"
+"&gt;&lt;/div&gt;\n"
+"&lt;/h:form&gt;\n"
+"\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view-id=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:156
+#, no-c-format
+msgid ""
+"The examples in this section have all shown reuse by configuration. However, "
+"reuse by extension is equally possible for Query objects."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:162
+#, no-c-format
+msgid "Controller objects"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:163
+#, no-c-format
+msgid ""
+"A totally optional part of the Seam Application Framework is the class "
+"<literal>Controller</literal> and its subclasses <literal>EntityController</"
+"literal><literal>HibernateEntityController</literal> and "
+"<literal>BusinessProcessController</literal>. These classes provide nothing "
+"more than some convenience methods for access to commonly used built-in "
+"components and methods of built-in components. They help save a few "
+"keystrokes (characters can add up!) and provide a great launchpad for new "
+"users to explore the rich functionality built in to Seam."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:166
+#, no-c-format
+msgid ""
+"For example, here is what <literal>RegisterAction</literal> from the Seam "
+"registration example would look like:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:169
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"register\")\n"
+"public class RegisterAction extends EntityController implements Register\n"
+"{\n"
+"\n"
+"   @In private User user;\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = createQuery(\"select u.username from User u where u."
+"username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getResultList();\n"
+"      \n"
+"      if ( existing.size()==0 )\n"
+"      {\n"
+"         persist(user);\n"
+"         info(\"Registered new user #{user.username}\");\n"
+"         return \"/registered.jspx\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         addFacesMessage(\"User #{user.username} already exists\");\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:170
+#, no-c-format
+msgid "As you can see, its not an earthshattering improvement..."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Gettingstarted.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Gettingstarted.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Gettingstarted.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,588 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Gettingstarted.xml:10
+#, no-c-format
+msgid "Getting started with Seam, using seam-gen"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:11
+#, no-c-format
+msgid ""
+"The Seam distribution includes a command line utility that makes it really "
+"easy to set up an Eclipse project, generate some simple Seam skeleton code, "
+"and reverse engineer an application from a pre-existing database."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:14
+#, no-c-format
+msgid ""
+"This is the easy way to get your feet wet with Seam, and gives you some "
+"ammunition for next time you find yourself trapped in an elevator with one "
+"of those tedious Ruby guys ranting about how great and wonderful his new toy "
+"is for building totally trivial applications that put things in databases."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:17
+#, no-c-format
+msgid ""
+"In this release, seam-gen works best for people with JBoss AS. You can use "
+"the generated project with other J2EE or Java EE 5 application servers by "
+"making a few manual changes to the project configuration."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:20
+#, no-c-format
+msgid ""
+"You <emphasis>can</emphasis> use seam-gen without Eclipse, but in this "
+"tutorial, we want to show you how to use it in conjunction with Eclipse for "
+"debugging and integration testing. If you don't want to install Eclipse, you "
+"can still follow along with this tutorial&mdash;all steps can be peformed "
+"from the command line."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:23
+#, no-c-format
+msgid ""
+"Seam-gen is basically just a big ugly Ant script wrapped around Hibernate "
+"Tools, together with some templates. Which means it is easy to customize if "
+"you need to."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:27
+#, no-c-format
+msgid "Before you start"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:28
+#, no-c-format
+msgid ""
+"Make sure you have JDK 5 or JDK 6, JBoss AS 4.0.5 and Ant 1.6, along with "
+"recent versions of Eclipse, the JBoss IDE plugin for Eclipse and the TestNG "
+"plugin for Eclipse correctly installed before starting. Add your JBoss "
+"installation to the JBoss Server View in Eclipse. Start JBoss in debug mode. "
+"Finally, start a command prompt in the directory where you unzipped the Seam "
+"distribution."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:34
+#, no-c-format
+msgid "Setting up a new Eclipse project"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:35
+#, no-c-format
+msgid ""
+"The first thing we need to do is configure seam-gen for your environment: "
+"JBoss AS installation directory, Eclipse workspace, and database connection. "
+"It's easy, just type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:38
+#, no-c-format
+msgid ""
+"cd jboss-seam-1.1.x\n"
+"seam setup"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:39
+#, no-c-format
+msgid "And you will be prompted for the needed information:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:42
+#, no-c-format
+msgid ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam setup\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"setup:\n"
+"    [echo] Welcome to seam-gen :-)\n"
+"    [input] Enter your Java project workspace [C:/Projects]\n"
+"\n"
+"    [input] Enter your JBoss home directory [C:/Program Files/jboss-4.0.5."
+"GA]\n"
+"\n"
+"    [input] Enter the project name [myproject]\n"
+"helloworld\n"
+"    [input] Is this project deployed as an EAR (with EJB components) or a "
+"WAR \n"
+"        (with no EJB support) [ear] (ear,war,)\n"
+"\n"
+"    [input] Enter the Java package name for your session beans [com.mydomain."
+"helloworld]\n"
+"org.jboss.helloworld\n"
+"    [input] Enter the Java package name for your entity beans [org.jboss."
+"helloworld]\n"
+"\n"
+"    [input] Enter the Java package name for your test cases [org.jboss."
+"helloworld.test]\n"
+"\n"
+"    [input] What kind of database are you using? [hsql]\n"
+"    (hsql,mysql,oracle,postgres,mssql,db2,sybase,)\n"
+"mysql\n"
+"    [input] Enter the Hibernate dialect for your database [org.hibernate."
+"dialect.MySQLDialect]\n"
+"\n"
+"    [input] Enter the filesystem path to the JDBC driver jar [lib/hsqldb."
+"jar]\n"
+"../../mysql-connector.jar\n"
+"    [input] Enter JDBC driver class for your database [com.mysql.jdbc."
+"Driver]\n"
+"\n"
+"    [input] Enter the JDBC URL for your database [jdbc:mysql:///test]\n"
+"\n"
+"    [input] Enter database username [sa]\n"
+"gavin\n"
+"    [input] Enter database password []\n"
+"\n"
+"    [input] Are you working with tables that already exist in the database? "
+"[n] (y,n,)\n"
+"y\n"
+"    [input] Do you want to drop and recreate the database tables and data in "
+"import.sql \n"
+"    each time you deploy? [n] (y,n,)\n"
+"n\n"
+"[propertyfile] Creating new property file: C:&#92;Projects&#92;jboss-"
+"seam&#92;seam-gen&#92;build.properties\n"
+"     [echo] Installing JDBC driver jar to JBoss server\n"
+"     [echo] Type 'seam new-project' to create the new project\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 1 minute 17 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:43
+#, no-c-format
+msgid ""
+"The tool provides sensible defaults, which you can accept by just pressing "
+"enter at the prompt."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:46
+#, no-c-format
+msgid ""
+"The most important choice you need to make is between EAR deployment and WAR "
+"deployment of your project. EAR projects support EJB 3.0 and require Java EE "
+"5. WAR projects do not support EJB 3.0, but may be deployed to a J2EE "
+"environment. The packaging of a WAR is also simpler to understand. If you "
+"installed JBoss with the ejb3 profile, choose <literal>ear</literal>. "
+"Otherwise, choose <literal>war</literal>. We'll assume that you've chosen an "
+"EAR deployment for the rest of the tutorial, but you can follow exactly the "
+"same steps for a WAR deployment."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:49
+#, no-c-format
+msgid ""
+"If you are working with an existing data model, make sure you tell seam-gen "
+"that the tables already exist in the database."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:52
+#, no-c-format
+msgid ""
+"The settings are stored in <literal>seam-gen/build.properties</literal>, but "
+"you can also modify them simply by running <literal>seam setup</literal> a "
+"second time."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:55
+#, no-c-format
+msgid ""
+"Now we can create a new project in our Eclipse workspace directory, by "
+"typing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:58
+#, no-c-format
+msgid "seam new-project"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:59
+#, no-c-format
+msgid ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam new-project\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"copy-lib:\n"
+"     [echo] Copying project jars ...\n"
+"     [copy] Copying 32 files to C:&#92;Projects&#92;helloworld&#92;lib\n"
+"     [copy] Copying 9 files to C:&#92;Projects&#92;helloworld&#92;embedded-"
+"ejb\n"
+"\n"
+"file-copy-wtp:\n"
+"\n"
+"file-copy:\n"
+"     [echo] Copying project resources ...\n"
+"     [copy] Copying 12 files to C:&#92;Projects&#92;helloworld&#92;"
+"resources\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;helloworld&#92;resources\n"
+"     [copy] Copying 5 files to C:&#92;Projects&#92;helloworld&#92;view\n"
+"     [copy] Copying 5 files to C:&#92;Projects&#92;helloworld\n"
+"    [mkdir] Created dir: C:&#92;Projects&#92;helloworld&#92;src\n"
+"\n"
+"new-project:\n"
+"     [echo] A new Seam project was created in the C:/Projects directory\n"
+"     [echo] Add the project from inside Eclipse (or type 'seam explode') and "
+"go to http://localhost:\n"
+"8080/helloworld\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 7 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:60
+#, no-c-format
+msgid ""
+"This copies the Seam jars, dependent jars and the JDBC driver jar to a new "
+"Eclipse project, and generates all needed resources and configuration files, "
+"a facelets template file and stylesheet, along with Eclipse metadata and an "
+"Ant build script. The Eclipse project will be automatically deployed to an "
+"exploded directory structure in JBoss AS as soon as you add the project "
+"using <literal>New -&gt; Project... -&gt; Java Project -&gt; Next</literal>, "
+"typing the <literal>Project name</literal> (<literal>myproject</literal> in "
+"this case), selecting your Java SE 5 or Java SE 6 JRE and then clicking "
+"<literal>Finish</literal>. Do not select <literal>Create new project from "
+"existing source</literal>. Alternatively, you can deploy the project from "
+"outside Eclipse by typing <literal>seam explode</literal>."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:63
+#, no-c-format
+msgid ""
+"Go to <literal>http://localhost:8080/helloworld</literal> to see a welcome "
+"page. This is a facelets page, <literal>view/home.xhtml</literal>, using the "
+"template <literal>view/layout/template.xhtml</literal>. You can edit this "
+"page, or the template, in eclipse, and see the results "
+"<emphasis>immediately</emphasis>, by clicking refresh in your browser."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:66
+#, no-c-format
+msgid ""
+"Don't get scared by the XML configuration documents that were generated into "
+"the project directory. They are mostly standard Java EE stuff, the stuff you "
+"need to create once and then never look at again, and they are 90&#37; the "
+"same between all Seam projects. (They are so easy to write that even seam-"
+"gen can do it.)"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:69
+#, no-c-format
+msgid ""
+"The generated project includes three database and persistence "
+"configurations. The <literal>jboss-beans.xml</literal>, <literal>persistence-"
+"test.xml</literal> and <literal>import-test.sql</literal> files are used "
+"when running the TestNG unit tests against HSQLDB. The database schema and "
+"the test data in <literal>import-test.sql</literal> is always exported to "
+"the database before running tests. The <literal>myproject-dev-ds.xml</"
+"literal>, <literal>persistence-dev.xml</literal>and <literal>import-dev.sql</"
+"literal> files are for use when deploying the application to your "
+"development database. The schema might be exported automatically at "
+"deployment, depending upon whether you told seam-gen that you are working "
+"with an existing database. The <literal>myproject-prod-ds.xml</literal>, "
+"<literal>persistence-prod.xml</literal>and <literal>import-prod.sql</"
+"literal> files are for use when deploying the application to your production "
+"database. The schema is not exported automatically at deployment."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:75
+#, no-c-format
+msgid "Creating a new action"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:76
+#, no-c-format
+msgid ""
+"If you're used to traditional action-style web frameworks, you're probably "
+"wondering how you can create a simple webpage with a stateless action method "
+"in Java. If you type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:79
+#, no-c-format
+msgid "seam new-action"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:80
+#, no-c-format
+msgid ""
+"Seam will prompt for some information, and generate a new facelets page and "
+"Seam component for your project."
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:83
+#, no-c-format
+msgid ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam new-action ping\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"action-input:\n"
+"    [input] Enter the Seam component name\n"
+"ping\n"
+"    [input] Enter the local interface name [Ping]\n"
+"\n"
+"    [input] Enter the bean class name [PingBean]\n"
+"\n"
+"    [input] Enter the action method name [ping]\n"
+"\n"
+"    [input] Enter the page name [ping]\n"
+"\n"
+"\n"
+"setup-filters:\n"
+"\n"
+"new-action:\n"
+"     [echo] Creating a new stateless session bean component with an action "
+"method\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;view\n"
+"     [echo] Type 'seam restart' and go to \n"
+"     http://localhost:8080/helloworld/ping.seam\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 13 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:84
+#, no-c-format
+msgid ""
+"Because we've added a new Seam component, we need to restart the exploded "
+"directory deployment. You can do this by typing <literal>seam restart</"
+"literal>, or by running the <literal>restart</literal> target in the "
+"generated project <literal>build.xml</literal> file from inside Eclipse. "
+"Another way to force a restart is to edit the file <literal>resources/META-"
+"INF/application.xml</literal> in Eclipse. <emphasis>Note that you do not "
+"need to restart JBoss each time you change the application.</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:87
+#, no-c-format
+msgid ""
+"Now go to <literal>http://localhost:8080/helloworld/ping.seam</literal> and "
+"click the button. You can see the code behind this action by looking in the "
+"project <literal>src</literal> directory. Put a breakpoint in the "
+"<literal>ping()</literal> method, and click the button again."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:90
+#, no-c-format
+msgid ""
+"Finally, locate the <literal>PingTest.xml</literal> file in the test package "
+"and run the integration tests using the TestNG plugin for Eclipse. "
+"Alternatively, run the tests using <literal>seam test</literal> or the "
+"<literal>test</literal> target of the generated build."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:96
+#, no-c-format
+msgid "Creating a form with an action"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:97
+#, no-c-format
+msgid "The next step is to create a form. Type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:100
+#, no-c-format
+msgid "seam new-form"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:101
+#, no-c-format
+msgid ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam new-form\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"action-input:\n"
+"    [input] Enter the Seam component name\n"
+"hello\n"
+"    [input] Enter the local interface name [Hello]\n"
+"\n"
+"    [input] Enter the bean class name [HelloBean]\n"
+"\n"
+"    [input] Enter the action method name [hello]\n"
+"\n"
+"    [input] Enter the page name [hello]\n"
+"\n"
+"\n"
+"setup-filters:\n"
+"\n"
+"new-form:\n"
+"     [echo] Creating a new stateful session bean component with an action "
+"method\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;view\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [echo] Type 'seam restart' and go to http://localhost:8080/hello/hello."
+"seam\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 5 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:102
+#, no-c-format
+msgid ""
+"Restart the application again, and go to <literal>http://localhost:8080/"
+"helloworld/hello.seam</literal>. Then take a look at the generated code. Run "
+"the test. Try adding some new fields to the form and Seam component "
+"(remember to restart the deploment each time you change the Java code)."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:108
+#, no-c-format
+msgid "Generating an application from an existing database"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:109
+#, no-c-format
+msgid ""
+"Manually create some tables in your database. (If you need to switch to a "
+"different database, just run <literal>seam setup</literal> again.) Now type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:112
+#, no-c-format
+msgid "seam generate-entities"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:113
+#, no-c-format
+msgid ""
+"Restart the deployment, and go to <literal>http://localhost:8080/helloworld</"
+"literal>. You can browse the database, edit existing objects, and create new "
+"objects. If you look at the generated code, you'll probably be amazed how "
+"simple it is! Seam was designed so that data access code is easy to write by "
+"hand, even for people who don't want to cheat by using seam-gen."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:119
+#, no-c-format
+msgid "Deploying the application as an EAR"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:120
+#, no-c-format
+msgid ""
+"Finally, we want to be able to deploy the application using standard Java EE "
+"5 packaging. First, we need to remove the exploded directory by running "
+"<literal>seam unexplode</literal>. To deploy the EAR, we can type "
+"<literal>seam deploy</literal> at the command prompt, or run the "
+"<literal>deploy</literal> target of the generated project build script. You "
+"can undeploy using <literal>seam undeploy</literal> or the "
+"<literal>undeploy</literal> target."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:123
+#, no-c-format
+msgid ""
+"By default, the application will be deployed with the <emphasis>dev profile</"
+"emphasis>. The EAR will include the <literal>persistence-dev.xml</literal> "
+"and <literal>import-dev.sql</literal> files, and the <literal>myproject-dev-"
+"ds.xml</literal> file will be deployed. You can change the profile, and use "
+"the <emphasis>prod profile</emphasis>, by typing"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:126
+#, no-c-format
+msgid "seam -Dprofile=prod deploy"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:127
+#, no-c-format
+msgid ""
+"You can even define new deployment profiles for your application. Just add "
+"appropriately named files to your project&mdash;for example, "
+"<literal>persistence-staging.xml</literal>, <literal>import-staging.sql</"
+"literal> and <literal>myproject-staging-ds.xml</literal>&mdash;and select "
+"the name of the profile using <literal>-Dprofile=staging</literal>."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/I18n.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/I18n.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/I18n.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,533 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: I18n.xml:10
+#, no-c-format
+msgid "Internationalization and themes"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:11
+#, no-c-format
+msgid ""
+"Seam makes it easy to build internationalized applications by providing "
+"several built-in components for handling multi-language UI messages."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:15
+#, no-c-format
+msgid "Locales"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:16
+#, no-c-format
+msgid ""
+"Each user login session has an associated instance of <literal>java.util."
+"Locale</literal> (available to the application as a session-scoped component "
+"named <literal>locale</literal>). Under normal circumstances, you won't need "
+"to do any special configuration to set the locale. Seam just delegates to "
+"JSF to determine the active locale:"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:21
+#, no-c-format
+msgid ""
+"If there is a locale associated with the HTTP request (the browser locale), "
+"and that locale is in the list of supported locales from <literal>faces-"
+"config.xml</literal>, use that locale for the rest of the session."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:24
+#, no-c-format
+msgid ""
+"Otherwise, if a default locale was specified in the <literal>faces-config."
+"xml</literal>, use that locale for the rest of the session."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:27
+#, no-c-format
+msgid "Otherwise, use the default locale of the server."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:30
+#, no-c-format
+msgid ""
+"It is <emphasis>possible</emphasis> to set the locale manually via the Seam "
+"configuration properties <literal>org.jboss.seam.core.localeSelector."
+"language</literal>, <literal>org.jboss.seam.core.localeSelector.country</"
+"literal> and <literal>org.jboss.seam.core.localeSelector.variant</literal>, "
+"but we can't think of any good reason to ever do this."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:33
+#, no-c-format
+msgid ""
+"It is, however, useful to allow the user to set the locale manually via the "
+"application user interface. Seam provides built-in functionality for "
+"overriding the locale determined by the algorithm above. All you have to do "
+"is add the following fragment to a form in your JSP or Facelets page:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:36
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{localeSelector.language}\"&gt;\n"
+"    &lt;f:selectItem itemLabel=\"English\" itemValue=\"en\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Deutsch\" itemValue=\"de\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Francais\" itemValue=\"fr\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{localeSelector.select}\" value=\"#{messages"
+"['ChangeLanguage']}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:37
+#, no-c-format
+msgid ""
+"Or, if you want a list of all supported locales from <literal>faces-config."
+"xml</literal>, just use:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:40
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{localeSelector.localeString}\"&gt;\n"
+"    &lt;f:selectItems value=\"#{localeSelector.supportedLocales}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{localeSelector.select}\" value=\"#{messages"
+"['ChangeLanguage']}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:41
+#, no-c-format
+msgid ""
+"When this use selects an item from the drop-down, and clicks the button, the "
+"Seam and JSF locales will be overridden for the rest of the session."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:47
+#, no-c-format
+msgid "Labels"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:48
+#, no-c-format
+msgid ""
+"JSF supports internationalization of user interface labels and descriptive "
+"text via the use of <literal>&lt;f:loadBundle /&gt;</literal>. You can use "
+"this approach in Seam applications. Alternatively, you can take advantage of "
+"the Seam <literal>messages</literal> component to display templated labels "
+"with embedded EL expressions."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:52
+#, no-c-format
+msgid "Defining labels"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:53
+#, no-c-format
+msgid ""
+"Each login session has an associated instance of <literal>java.util."
+"ResourceBundle</literal> (available to the application as a session-scoped "
+"component named <literal>org.jboss.seam.core.resourceBundle</literal>). "
+"You'll need to make your internationalized labels available via this special "
+"resource bundle. By default, the resource bundle used by Seam is named "
+"<literal>messages</literal> and so you'll need to define your labels in "
+"files named <literal>messages.properties</literal>, <literal>messages_en."
+"properties</literal>, <literal>messages_en_AU.properties</literal>, etc. "
+"These files usually belong in the <literal>WEB-INF/classes</literal> "
+"directory."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:56
+#, no-c-format
+msgid "So, in <literal>messages_en.properties</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:59
+#, no-c-format
+msgid "Hello=Hello"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:60
+#, no-c-format
+msgid "And in <literal>messages_en_AU.properties</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:63
+#, no-c-format
+msgid "Hello=G'day"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:64
+#, no-c-format
+msgid ""
+"You can select a different name for the resource bundle by setting the Seam "
+"configuration property named <literal>org.jboss.seam.core.resourceBundle."
+"bundleNames</literal>. You can even specify a list of resource bundle names "
+"to be searched (depth first) for messages."
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:67
+#, no-c-format
+msgid ""
+"&lt;core:resource-bundle&gt;\n"
+"    &lt;core:bundle-names&gt;\n"
+"        &lt;value&gt;mycompany_messages&lt;/value&gt;\n"
+"        &lt;value&gt;standard_messages&lt;/value&gt;       \n"
+"    &lt;/core:bundle-names&gt;\n"
+"&lt;/core:resource-bundle&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:68
+#, no-c-format
+msgid ""
+"If you want to define a message just for a particular page, you can specify "
+"it in a resource bundle with the same name as the JSF view id, with the "
+"leading <literal>/</literal> and trailing file extension removed. So we "
+"could put our message in <literal>welcome/hello_en.properties</literal> if "
+"we only needed to display the message on <literal>/welcome/hello.jsp</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:71
+#, no-c-format
+msgid ""
+"You can even specify an explicit bundle name in <literal>pages.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:74
+#, no-c-format
+msgid "&lt;page view-id=\"/welcome/hello.jsp\" bundle=\"HelloMessages\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:75
+#, no-c-format
+msgid ""
+"Then we could use messages defined in <literal>HelloMessages.properties</"
+"literal> on <literal>/welcome/hello.jsp</literal>."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:81
+#, no-c-format
+msgid "Displaying labels"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:82
+#, no-c-format
+msgid ""
+"If you define your labels using the Seam resource bundle, you'll be able to "
+"use them without having to type <literal>&lt;f:loadBundle ... /&gt;</"
+"literal> on every page. Instead, you can simply type:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:85
+#, no-c-format
+msgid "&lt;h:outputText value=\"#{messages['Hello']}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:86
+#, no-c-format
+msgid "<para>or:</para>"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:89
+#, no-c-format
+msgid "&lt;h:outputText value=\"#{messages.Hello}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:90
+#, no-c-format
+msgid "Even better, the messages themselves may contain EL expressions:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:93
+#, no-c-format
+msgid "Hello=Hello, #{user.firstName} #{user.lastName}"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:94
+#, no-c-format
+msgid "Hello=G'day, #{user.firstName}"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:95
+#, no-c-format
+msgid "You can even use the messages in your code:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:98
+#, no-c-format
+msgid "@In private Map&lt;String, String&gt; messages;"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:99
+#, no-c-format
+msgid "@In(\"#{messages['Hello']}\") private String helloMessage;"
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:103
+#, no-c-format
+msgid "Faces messages"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:104
+#, no-c-format
+msgid ""
+"The <literal>facesMessages</literal> component is a super-convenient way to "
+"display success or failure messages to the user. The functionality we just "
+"described also works for faces messages:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:107
+#, no-c-format
+msgid ""
+"@Name(\"hello\")\n"
+"@Stateless\n"
+"public class HelloBean implements Hello {\n"
+"    @In FacesMessages facesMessages;\n"
+"    \n"
+"    public String sayIt() {\n"
+"        facesMessages.addFromResourceBundle(\"Hello\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:108
+#, no-c-format
+msgid ""
+"This will display <literal>Hello, Gavin King</literal> or <literal>G'day, "
+"Gavin</literal>, depending upon the user's locale."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:116
+#, no-c-format
+msgid "Timezones"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:117
+#, no-c-format
+msgid ""
+"There is also a session-scoped instance of <literal>java.util.Timezone</"
+"literal>, named <literal>org.jboss.seam.core.timezone</literal>, and a Seam "
+"component for changing the timezone named <literal>org.jboss.seam.core."
+"timezoneSelector</literal>. By default, the timezone is the default timezone "
+"of the server. Unfortunately, the JSF specification says that all dates and "
+"times should be assumed to be UTC, and displayed as UTC, unless a timezone "
+"is explicitly specified using <literal>&lt;f:convertDateTime&gt;</literal>. "
+"This is an extremely inconvenient default behavior."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:120
+#, no-c-format
+msgid ""
+"Seam overrides this behavior, and defaults all dates and times to the Seam "
+"timezone. In addition, Seam provides the <literal>&lt;s:convertDateTime&gt;</"
+"literal> tag which always performs conversions in the Seam timezone."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:126
+#, no-c-format
+msgid "Themes"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:127
+#, no-c-format
+msgid ""
+"Seam applications are also very easily skinnable. The theme API is very "
+"similar to the localization API, but of course these two concerns are "
+"orthogonal, and some applications support both localization and themes."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:130
+#, no-c-format
+msgid "First, configure the set of supported themes:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:133
+#, no-c-format
+msgid ""
+"&lt;theme:theme-selector cookie-enabled=\"true\"&gt;\n"
+"    &lt;theme:available-themes&gt;\n"
+"        &lt;value&gt;default&lt;/value&gt;\n"
+"        &lt;value&gt;accessible&lt;/value&gt;\n"
+"        &lt;value&gt;printable&lt;/value&gt;\n"
+"    &lt;/theme:available-themes&gt;\n"
+"&lt;/theme:theme-selector&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:134
+#, no-c-format
+msgid "Note that the first theme listed is the default theme."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:137
+#, no-c-format
+msgid ""
+"Themes are defined in a properties file with the same name as the theme. For "
+"example, the <literal>default</literal> theme is defined as a set of entries "
+"in <literal>default.properties</literal>. For example, <literal>default."
+"properties</literal> might define:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:140
+#, no-c-format
+msgid ""
+"css ../screen.css\n"
+"template template.xhtml"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:141
+#, no-c-format
+msgid ""
+"Usually the entries in a theme resource bundle will be paths to CSS styles "
+"or images and names of facelets templates (unlike localization resource "
+"bundles which are usually text)."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:144
+#, no-c-format
+msgid ""
+"Now we can use these entries in our JSP or facelets pages. For example, to "
+"theme the stylesheet in a facelets page:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:147
+#, no-c-format
+msgid ""
+"&lt;link href=\"#{theme.css}\" rel=\"stylesheet\" type=\"text/css\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:148
+#, no-c-format
+msgid ""
+"Most powerfully, facelets lets us theme the template used by a <literal>&lt;"
+"ui:composition&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:151
+#, no-c-format
+msgid ""
+"&lt;ui:composition xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"    xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"    xmlns:h=\"http://java.sun.com/jsf/html\"\n"
+"    xmlns:f=\"http://java.sun.com/jsf/core\"\n"
+"    template=\"#{theme.template}\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:152
+#, no-c-format
+msgid ""
+"Just like the locale selector, there is a built-in theme selector to allow "
+"the user to freely switch themes:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:155
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{themeSelector.theme}\"&gt;\n"
+"    &lt;f:selectItems value=\"#{themeSelector.themes}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{themeSelector.select}\" value=\"Select Theme"
+"\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:159
+#, no-c-format
+msgid "Persisting locale and theme preferences via cookies"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:160
+#, no-c-format
+msgid ""
+"The locale selector, theme selector and timezone selector all support "
+"persistence of locale and theme preference to a cookie. Simply set the "
+"<literal>cookie-enabled</literal> configuration property:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:163
+#, no-c-format
+msgid ""
+"&lt;theme:theme-selector cookie-enabled=\"true\"&gt;\n"
+"    &lt;theme:available-themes&gt;\n"
+"        &lt;value&gt;default&lt;/value&gt;\n"
+"        &lt;value&gt;accessible&lt;/value&gt;\n"
+"        &lt;value&gt;printable&lt;/value&gt;\n"
+"    &lt;/theme:available-themes&gt;\n"
+"&lt;/theme:theme-selector&gt;\n"
+"\n"
+"&lt;core:locale-selector cookie-enabled=\"true\"/&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Itext.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Itext.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Itext.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1452 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Itext.xml:10
+#, no-c-format
+msgid "iText PDF generation"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:11
+#, no-c-format
+msgid ""
+"Seam now includes an component set for generating documents using iText. The "
+"primary focus of Seam's iText document support is for the generation of PDF "
+"doucuments, but Seam also offers basic support for RTF document generation."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:15
+#, no-c-format
+msgid "Using PDF Support"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:16
+#, no-c-format
+msgid ""
+"iText support is provided by <literal>jboss-seam-pdf.jar</literal>. This JAR "
+"contains the iText JSF controls, which are used to construct views that can "
+"render to PDF, and the DocumentStore component, which serves the rendered "
+"documents to the user. To include PDF support in your application, included "
+"<literal>jboss-seam-pdf.jar</literal> in your <literal>WEB-INF/lib</literal> "
+"directory along with the iText JAR file. There is no further configuration "
+"needed to use Seam's iText support."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:19
+#, no-c-format
+msgid ""
+"The Seam iText module requires the use of Facelets as the view technology. "
+"Future versions of the library may also support the use of JSP. "
+"Additionally, it requires the use of the seam-ui package."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:22
+#, no-c-format
+msgid ""
+"The <literal>examples/itext</literal> project contains an example of the PDF "
+"support in action. It demonstrates proper deployment packaging, and it "
+"contains a number examples that demonstrate the key PDF generation features "
+"current supported."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:28
+#, no-c-format
+msgid "Creating a document"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:29
+#, no-c-format
+msgid ""
+"Documents are generated by facelets documents using tags in the "
+"<literal>http://jboss.com/products/seam/pdf</literal> namespace. Documents "
+"should always have the <literal>document</literal> tag at the root of the "
+"document. The <literal>document</literal> tag prepares Seam to generate a "
+"document into the DocumentStore and renders an HTML redirect to that stored "
+"content. The following is a a small PDF document consisting only a single "
+"line of text:"
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:32
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf"
+"\"&gt;                                                      \n"
+"   The document goes "
+"here.                                                                                             \n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:34
+#, no-c-format
+msgid "p:document"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:35
+#, no-c-format
+msgid ""
+"The <literal>p:document</literal> tag supports the following attributes:"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:40
+#, no-c-format
+msgid "type"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:42
+#, no-c-format
+msgid ""
+"The type of the document to be produced. Valid values are <literal>PDF</"
+"literal>, <literal>RTF</literal> and <literal>HTML</literal> modes. Seam "
+"defaults to PDF generation, and many of the features only work correctly "
+"when generating PDF documents."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:48
+#, no-c-format
+msgid "pageSize"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:50
+#, no-c-format
+msgid ""
+"The size of the page to be generate. The most commonly used values would be "
+"<literal>LETTER</literal> and <literal>A4</literal>. A full list of "
+"supported pages sizes can be found in <literal>com.lowagie.text.PageSize</"
+"literal> class. Alternatively, pageSize can provide the width and height of "
+"the page directly. The value \"612 792\", for example, is equizalent to the "
+"LETTER page size."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:56
+#, no-c-format
+msgid "orientation"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:58
+#, no-c-format
+msgid ""
+"The orientation of the page. Valid values are <literal>portrait</literal> "
+"and <literal>landscape</literal>. In landscape mode, the height and width "
+"page size values are reversed."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:64
+#, no-c-format
+msgid "margins"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:66
+#, no-c-format
+msgid "The left, right, top and bottom margin values."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:72
+#, no-c-format
+msgid "marginMirroring"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:74
+#, no-c-format
+msgid "Indicates that margin settings should be reversed an alternating pages."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:80
+#, no-c-format
+msgid ""
+"Document metadata is also set as attributes of the document tag. The "
+"following metadata fields are supported:"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:85
+#, no-c-format
+msgid "title"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:92
+#, no-c-format
+msgid "subject"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:99
+#, no-c-format
+msgid "keywords"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:106
+#, no-c-format
+msgid "author"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:113
+#, no-c-format
+msgid "creator"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:125
+#, no-c-format
+msgid "Basic Text Elements"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:126
+#, no-c-format
+msgid ""
+"Useful documents will need to contain more than just text; however, the "
+"standard UI components are geared towards HTML generation and are not useful "
+"for generating PDF content. Instead, Seam provides a special UI components "
+"for generating suitable PDF content. Tags like <literal>&lt;p:image&gt;</"
+"literal> and <literal>&lt;p:paragraph&gt;</literal> are the basic "
+"foundations of simple documents. Tags like <literal>&lt;p:font&gt;</literal> "
+"provide style information to all the content surrounging them."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:129
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"&gt; \n"
+"    &lt;p:image alignment=\"right\" wrap=\"true\" resource=\"/logo.jpg\" /"
+"&gt;\n"
+"    &lt;p:font size=\"24\"&gt;\n"
+"        &lt;p:paragraph spacingAfter=\"50\"&gt;My First Document&lt;/p:"
+"paragraph&gt;\n"
+"    &lt;/p:font&gt;\n"
+"\n"
+"    &lt;p:paragraph alignment=\"justify\"&gt;\n"
+"        This is a simple document.  It isn't very fancy.\n"
+"    &lt;/p:paragraph&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:131
+#, no-c-format
+msgid "p:paragraph"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:132
+#, no-c-format
+msgid ""
+"Most uses of text should be sectioned into paragraphs so that text fragments "
+"can be flowed, formatted and styled in logical groups."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:137
+#, no-c-format
+msgid "firstLineIndent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:144 Itext.xml:836
+#, no-c-format
+msgid "extraParagraphSpace"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:151 Itext.xml:808
+#, no-c-format
+msgid "leading"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:158 Itext.xml:815
+#, no-c-format
+msgid "multipliedLeading"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:165 Itext.xml:344 Itext.xml:716
+#, no-c-format
+msgid "spacingBefore"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:167 Itext.xml:346 Itext.xml:718
+#, no-c-format
+msgid "The blank space to be inserted before the element."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:173 Itext.xml:352 Itext.xml:724
+#, no-c-format
+msgid "spacingAfter"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:175 Itext.xml:354 Itext.xml:726
+#, no-c-format
+msgid "The blank space to be inserted after the element."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:181 Itext.xml:330 Itext.xml:599
+#, no-c-format
+msgid "indentationLeft"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:188 Itext.xml:337 Itext.xml:607
+#, no-c-format
+msgid "indentationRight"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:195 Itext.xml:753
+#, no-c-format
+msgid "keepTogether"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:205
+#, no-c-format
+msgid "p:text"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:206
+#, no-c-format
+msgid ""
+"The <literal>text</literal> tag allows text fragments to be produced from "
+"application data using normal JSF converter mechanisms. It is very similar "
+"to the <literal>outputText</literal> tag used when rendering HTML documents. "
+"Here is an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:209
+#, no-c-format
+msgid ""
+"&lt;p:paragraph&gt;\n"
+"    The item costs &lt;p:text value=\"#{product.price}\"&gt;\n"
+"        &lt;f:convertNumber type=\"currency\" currencySymbol=\"&#36;\"/&gt;\n"
+"    &lt;/p:text&gt;\n"
+"&lt;/p:paragraph&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:212
+#, no-c-format
+msgid "value"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:214
+#, no-c-format
+msgid ""
+"The value to be displayed. This will typically be a value binding expression."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:223
+#, no-c-format
+msgid "p:font"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:224
+#, no-c-format
+msgid "Font declarations have no direct"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:229
+#, no-c-format
+msgid "familyName"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:231
+#, no-c-format
+msgid ""
+"The font family. One of: <literal>COURIER</literal>, <literal>HELVETICA</"
+"literal>, <literal>TIMES-ROMAN</literal>, <literal>SYMBOL</literal> or "
+"<literal>ZAPFDINGBATS</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:237
+#, no-c-format
+msgid "size"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:239
+#, no-c-format
+msgid "The point size of the font."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:245 Itext.xml:534
+#, no-c-format
+msgid "style"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:247
+#, no-c-format
+msgid ""
+"The font styles. Any combination of : <literal>NORMAL</literal>, "
+"<literal>BOLD</literal>, <literal>ITALIC</literal>, <literal>OBLIQUE</"
+"literal>, <literal>UNDERLINE</literal>, <literal>LINE-THROUGH</literal>"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:256
+#, no-c-format
+msgid "p:newPage"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:257
+#, no-c-format
+msgid "<literal>p:newPage</literal> inserts a page break."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:263
+#, no-c-format
+msgid "p:image"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:264
+#, no-c-format
+msgid ""
+"<literal>p:image</literal> inserts an image into the document. Images can be "
+"be loaded from the classpath or from the web application context using the "
+"<literal>resource</literal> attribute."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:267
+#, no-c-format
+msgid "&lt;p:image resource=\"/jboss.jpg\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:268
+#, no-c-format
+msgid ""
+"Resources can also be dynamically generated by application code. The "
+"<literal>imageData</literal> attribute can specify a value binding "
+"expression whose value is a <literal>java.awt.Image</literal> object."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:271
+#, no-c-format
+msgid "&lt;p:image imageData=\"#{images.chart}\" /&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:274
+#, no-c-format
+msgid "resource"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:276
+#, no-c-format
+msgid ""
+"The location of the image resource to be included. Resources should be "
+"relative to the document root of the web application."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:282
+#, no-c-format
+msgid "imageData"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:284
+#, no-c-format
+msgid "A method expression binding to an application-generated image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:290 Itext.xml:913
+#, no-c-format
+msgid "rotation"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:292
+#, no-c-format
+msgid "The rotation of the image in degrees."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:298
+#, no-c-format
+msgid "height"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:300
+#, no-c-format
+msgid "The height of the image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:306
+#, no-c-format
+msgid "width"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:308
+#, no-c-format
+msgid "The width of the image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:314 Itext.xml:441 Itext.xml:591
+#, no-c-format
+msgid "alignment"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:316
+#, no-c-format
+msgid ""
+"The alignment of the image. (see <xref linkend=\"Document_Constants-"
+"Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:322
+#, no-c-format
+msgid "<literal>alt</literal>"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:324
+#, no-c-format
+msgid "Alternative text representation for the image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:360 Itext.xml:672
+#, no-c-format
+msgid "widthPercentage"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:367
+#, no-c-format
+msgid "initialRotation"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:374
+#, no-c-format
+msgid "<literal>dpi</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:381
+#, no-c-format
+msgid "scalePercent"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:383
+#, no-c-format
+msgid ""
+"The scaling factor (as a percentage) to use for the image. This can be "
+"expressed as a single percentage value or as two percentage values "
+"representing separate x and y scaling percentages."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:389
+#, no-c-format
+msgid "wrap"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:396
+#, no-c-format
+msgid "underlying"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:406
+#, no-c-format
+msgid "p:anchor"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:407
+#, no-c-format
+msgid ""
+"<literal>p:anchor</literal> defines clickable links from a document. It "
+"supports the following attributes:"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:412
+#, no-c-format
+msgid "name"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:414
+#, no-c-format
+msgid "The name of an in-document anchor destination."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:420
+#, no-c-format
+msgid "reference"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:422
+#, no-c-format
+msgid ""
+"The destination the link refers to. Links to other points in the document "
+"should begin with a \"#\". For example, \"#link1\" to refer to an anchor "
+"postion with a <literal>name</literal> of <literal>link1</literal>. Links "
+"may also be a full URL to point to a resource outside of the document."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:433
+#, no-c-format
+msgid "Headers and Footers"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:435
+#, no-c-format
+msgid "p:header and p:footer"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:436
+#, no-c-format
+msgid ""
+"The <literal>p:header</literal> and <literal>p:footer</literal> components "
+"provide the ability to place header and footer text on each page of a "
+"generated document, with the exception of the first page. Header and footer "
+"declarations should appear near the top of a document."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:443
+#, no-c-format
+msgid ""
+"The alignment of the header/footer box section. (see <xref linkend="
+"\"Document_Constants-Alignment_Values\"/> for alignment values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:449
+#, no-c-format
+msgid "backgroundColor"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:451
+#, no-c-format
+msgid ""
+"The background color of the header/footer box. (see <xref linkend="
+"\"Document_Constants-Color_Values\"/> for color values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:457
+#, no-c-format
+msgid "borderColor"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:459
+#, no-c-format
+msgid ""
+"The border color of the header/footer box. Individual border sides can be "
+"set using <literal>borderColorLeft</literal>, <literal>borderColorRight</"
+"literal>, <literal>borderColorTop</literal> and <literal>borderColorBottom</"
+"literal>.(see <xref linkend=\"Document_Constants-Color_Values\"/> for color "
+"values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:465
+#, no-c-format
+msgid "borderWidth"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:467
+#, no-c-format
+msgid ""
+"The width of the border. Inidvidual border sides can be specified using "
+"<literal>borderWidthLeft</literal>, <literal>borderWidthRight</literal>, "
+"<literal>borderWidthTop</literal> and <literal>borderWidthBottom</literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:476
+#, no-c-format
+msgid "p:pageNumber"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:477
+#, no-c-format
+msgid ""
+"The current page number can be placed inside of a header or footer using the "
+"<literal>p:pageNumber</literal> tag. The page number tag can only be used in "
+"the context of a header or footer and can only be used once."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:485
+#, no-c-format
+msgid "Chapters and Sections"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:486
+#, no-c-format
+msgid ""
+"If the generated document follows a book/article structure, the <literal>p:"
+"chapter</literal> and <literal>p:section</literal> tags can be used to "
+"provide the necessary structure. Sections can only be used inside of "
+"chapters, but they may be nested arbitrarily deep. Most PDF viewers provide "
+"easy navigation between chapters and sections in a document."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:489
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"\n"
+"            title=\"Hello\"&gt;\n"
+"\n"
+"   &lt;p:chapter number=\"1\"&gt;\n"
+"      &lt;p:title&gt;&lt;p:paragraph&gt;Hello&lt;/p:paragraph&gt;&lt;/p:"
+"title&gt;\n"
+"      &lt;p:paragraph&gt;Hello #{user.name}!&lt;/p:paragraph&gt;\n"
+"   &lt;/p:chapter&gt;\n"
+"\n"
+"   &lt;p:chapter number=\"2\"&gt;\n"
+"      &lt;p:title&gt;&lt;p:paragraph&gt;Goodbye&lt;/p:paragraph&gt;&lt;/p:"
+"title&gt;\n"
+"      &lt;p:paragraph&gt;Goodbye #{user.name}.&lt;/p:paragraph&gt;\n"
+"   &lt;/p:chapter&gt;\n"
+"\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:491
+#, no-c-format
+msgid "p:chapter and p:section"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:494
+#, no-c-format
+msgid "number"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:496
+#, no-c-format
+msgid "The chapter number. Every chapter should be assigned a chapter number."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:502
+#, no-c-format
+msgid "numberDepth"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:504
+#, no-c-format
+msgid ""
+"The depth of numbering for section. All sections are numbered relative to "
+"their surrounding chapter/sections. The fourth section of of the first "
+"section of chapter three would be section 3.1.4, if displayed at the default "
+"number depth of three. To omit the chapter number, a number depth of 2 "
+"should be used. In that case, the section number would be displayed as 1.4."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:513
+#, no-c-format
+msgid "p:title"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:514
+#, no-c-format
+msgid ""
+"Any chapter or section can contain a <literal>p:title</literal>. The title "
+"will be displayed next to the chapter/section number. The body of the title "
+"may contain raw text or may be a <literal>p:paragraph</literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:522
+#, no-c-format
+msgid "Lists"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:523
+#, no-c-format
+msgid ""
+"List structures can be displayed using the <literal>p:list</literal> and "
+"<literal>p:listItem</literal> tags. Lists may contain arbitrarily-nested "
+"sublists. List items may not be used outside of a list. he following "
+"document uses the <literal>ui:repeat</literal> tag to to display a list of "
+"values retrieved from a Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:526
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"\n"
+"            xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"            title=\"Hello\"&gt;\n"
+"   &lt;p:list style=\"numbered\"&gt;\n"
+"      &lt;ui:repeat value=\"#{documents}\" var=\"doc\"&gt;\n"
+"         &lt;p:listItem&gt;#{doc.name}&lt;/p:listItem&gt;\n"
+"      &lt;/ui:repeat&gt;\n"
+"   &lt;/p:list&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:528
+#, no-c-format
+msgid "p:list"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:529
+#, no-c-format
+msgid "<literal>p:list</literal> supports the following attributes:"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:536
+#, no-c-format
+msgid ""
+"The ordering/bulleting style of list. One of: <literal>NUMBERED</literal>, "
+"<literal>LETTERED</literal>, <literal>GREEK</literal>, <literal>ROMAN</"
+"literal>, <literal>ZAPFDINGBATS</literal>, <literal>ZAPFDINGBATS_NUMBER</"
+"literal>. If no style is given, the list items are bulleted."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:542 Itext.xml:615
+#, no-c-format
+msgid "listSymbol"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:544
+#, no-c-format
+msgid "For bulleted lists, specifies the bullet symbol."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:550 Itext.xml:822
+#, no-c-format
+msgid "indent"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:552
+#, no-c-format
+msgid "The indentation level of the list."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:558
+#, no-c-format
+msgid "lowerCase"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:560
+#, no-c-format
+msgid ""
+"For list styles using letters, indicates whether the letters should be lower "
+"case."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:566
+#, no-c-format
+msgid "charNumber"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:568
+#, no-c-format
+msgid "For ZAPFDINGBATS, indicates the character code of the bullet character."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:574
+#, no-c-format
+msgid "numberType"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:576
+#, no-c-format
+msgid "For ZAPFDINGBATS_NUMBER, indicates the numbering style."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:585
+#, no-c-format
+msgid "p:listItem"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:586
+#, no-c-format
+msgid "<literal>p:listItem</literal> supports the following attributes:"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:593
+#, no-c-format
+msgid ""
+"The alignment of the list item. (See <xref linkend=\"Document_Constants-"
+"Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:601
+#, no-c-format
+msgid "The left indentation amount."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:609
+#, no-c-format
+msgid "The right indentation amount."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:617
+#, no-c-format
+msgid "Overrides the default list symbol for this list item."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:628
+#, no-c-format
+msgid "Tables"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:629
+#, no-c-format
+msgid ""
+"Table structures can be created using the <literal>p:table</literal> and "
+"<literal>p:cell</literal> tags. Unlike many table structures, there is no "
+"explicit row declaration. If a table has 3 columns, then every 3 cells will "
+"automatically form a row. Header and footer rows can be declared, and the "
+"headers and footers will be repeated in the event a table structure spans "
+"multiple pages."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:632
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"   \n"
+"            xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"            title=\"Hello\"&gt;   \n"
+"   &lt;p:table columns=\"3\" headerRows=\"1\"&gt;\n"
+"      &lt;p:cell&gt;name&lt;/p:cell&gt;\n"
+"      &lt;p:cell&gt;owner&lt;/p:cell&gt;\n"
+"      &lt;p:cell&gt;size&lt;/p:cell&gt;\n"
+"      &lt;ui:repeat value=\"#{documents}\" var=\"doc\"&gt;\n"
+"         &lt;p:cell&gt;#{doc.name}&lt;/p:cell&gt;\n"
+"         &lt;p:cell&gt;#{doc.user.name}&lt;/p:cell&gt;\n"
+"         &lt;p:cell&gt;#{doc.size}&lt;/p:cell&gt;\n"
+"      &lt;/ui:repeat&gt;\n"
+"   &lt;/p:table&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:634
+#, no-c-format
+msgid "p:table"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:635
+#, no-c-format
+msgid "<literal>p:table</literal> supports the following attributes."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:640
+#, no-c-format
+msgid "columns"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:642
+#, no-c-format
+msgid "The number of columns (cells) that make up a table row."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:648
+#, no-c-format
+msgid "widths"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:650
+#, no-c-format
+msgid ""
+"The relative widths of each column. There should be one value for each "
+"column. For example: widths=\"2 1 1\" would indicate that there are 3 "
+"columns and the first column should be twice the size of the second and "
+"third column."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:656
+#, no-c-format
+msgid "headerRows"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:658
+#, no-c-format
+msgid ""
+"The initial number of rows which are considered to be headers or footer rows "
+"and should be repeated if the table spans multiple pages."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:664
+#, no-c-format
+msgid "footerRows"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:666
+#, no-c-format
+msgid ""
+"The number of rows that are considered to be footer rows. This value is "
+"subtracted from the <literal>headerRows</literal> value. If document has 2 "
+"rows which make up the header and one row that makes up the footer, "
+"<literal>headerRows</literal> should be set to 3 and <literal>footerRows</"
+"literal> should be set to 1"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:674
+#, no-c-format
+msgid "The percentage of the page width that the table spans."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:680 Itext.xml:777
+#, no-c-format
+msgid "horizontalAlignment"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:682
+#, no-c-format
+msgid ""
+"The horizontal alignment of the table. (See <xref linkend="
+"\"Document_Constants-Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:688
+#, no-c-format
+msgid "skipFirstHeader"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:695 Itext.xml:885
+#, no-c-format
+msgid "runDirection"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:702
+#, no-c-format
+msgid "lockedWidth"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:709
+#, no-c-format
+msgid "splitRows"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:732
+#, no-c-format
+msgid "extendLastRow"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:739
+#, no-c-format
+msgid "headersInEvent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:746
+#, no-c-format
+msgid "splitLate"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:763
+#, no-c-format
+msgid "p:cell"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:764
+#, no-c-format
+msgid "<literal>p:cell</literal> supports the following attributes."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:769
+#, no-c-format
+msgid "colspan"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:771
+#, no-c-format
+msgid ""
+"Cells can span more than one column by declaring a <literal>colspan</"
+"literal> greater than 1. Tables do not have the ability to span across "
+"multiple rows."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:779
+#, no-c-format
+msgid ""
+"The horizontal alignment of the cell. (see <xref linkend="
+"\"Document_Constants-Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:785 Itext.xml:829
+#, no-c-format
+msgid "verticalAlignment"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:787
+#, no-c-format
+msgid ""
+"The vertical alignment of the cell. (see <xref linkend=\"Document_Constants-"
+"Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:793
+#, no-c-format
+msgid "padding"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:795
+#, no-c-format
+msgid ""
+"Padding on a given side can also be specified using <literal>paddingLeft</"
+"literal>, <literal>paddingRight</literal>, <literal>paddingTop</literal> and "
+"<literal>paddingBottom</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:801
+#, no-c-format
+msgid "useBorderPadding"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:843
+#, no-c-format
+msgid "fixedHeight"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:850
+#, no-c-format
+msgid "noWrap"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:857
+#, no-c-format
+msgid "minimumHeight"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:864
+#, no-c-format
+msgid "followingIndent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:871
+#, no-c-format
+msgid "rightIndent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:878
+#, no-c-format
+msgid "spaceCharRatio"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:892
+#, no-c-format
+msgid "arabicOptions"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:899
+#, no-c-format
+msgid "useAscender"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:906
+#, no-c-format
+msgid "grayFill"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:925
+#, no-c-format
+msgid "Document Constants"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:926
+#, no-c-format
+msgid ""
+"This section documents some of the constants shared by attributes on "
+"multiple tags."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:930
+#, no-c-format
+msgid "Color Values"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:931
+#, no-c-format
+msgid ""
+"Seam documents do not yet support a full color specification. Currently, "
+"only named colors are supported. They are: <literal>white</literal>, "
+"<literal>gray</literal>, <literal>lightgray</literal>, <literal>darkgray</"
+"literal>, <literal>black</literal>, <literal>red</literal>, <literal>pink</"
+"literal>, <literal>yellow</literal>, <literal>green</literal>, "
+"<literal>magenta</literal>, <literal>cyan</literal> and <literal>blue</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:937
+#, no-c-format
+msgid "Alignment Values"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:938
+#, no-c-format
+msgid ""
+"Where alignment values are used, the Seam PDF supports the following "
+"horizontal alignment values: <literal>left</literal>, <literal>right</"
+"literal>, <literal>center</literal>, <literal>justify</literal> and "
+"<literal>justifyall</literal>. The vertical alignment values are "
+"<literal>top</literal>, <literal>middle</literal>, <literal>bottom</"
+"literal>, and <literal>baseline</literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:946
+#, no-c-format
+msgid "Configuring iText"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:947
+#, no-c-format
+msgid ""
+"Document generation works out of the box with no additional configuration "
+"needed. However, there are a few points of configuration that are needed for "
+"more serious applications."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:950
+#, no-c-format
+msgid ""
+"The default implementation serves PDF documents from a generic URL, "
+"<literal>/seam-doc.seam</literal>. Many browsers (and users) would prefer to "
+"see URLs that contain the actual PDF name like <literal>/myDocument.pdf</"
+"literal>. This capability requires some configuration. To serve PDF files, "
+"all *.pdf resources should be mapped to the Seam Servlet Filter and to the "
+"DocumentStoreServlet:"
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:953
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.servlet.SeamServletFilter&lt;/filter-"
+"class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;\n"
+"\n"
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.pdf.DocumentStoreServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"\n"
+"&lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:954
+#, no-c-format
+msgid ""
+"The <literal>useExtensions</literal> option on the document store component "
+"completes the functionality by instructing the document store to generate "
+"URLs with the correct filename extension for the document type being "
+"generated."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:957
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pdf=\"http://jboss.com/products/seam/pdf\"&gt;\n"
+"    &lt;pdf:documentStore useExtensions=\"true\" /&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:958
+#, no-c-format
+msgid ""
+"Generated documents are stored in conversation scope and will expire when "
+"the conversation ends. At that point, references to the document will be "
+"invalid. To You can specify a default view to be shown when a document does "
+"not exist using the <literal>errorPage</literal> property of the "
+"documentStore."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:961
+#, no-c-format
+msgid ""
+"&lt;pdf:documentStore useExtensions=\"true\" errorPage=\"/pdfMissing.seam\" /"
+"&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:965
+#, no-c-format
+msgid "iText links"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:966
+#, no-c-format
+msgid "For further information on iText, see:"
+msgstr ""
+
+#. Tag: ulink
+#: Itext.xml:973
+#, no-c-format
+msgid "iText Home Page"
+msgstr ""
+
+#. Tag: ulink
+#: Itext.xml:978
+#, no-c-format
+msgid "iText in Action"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Jbpm.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Jbpm.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Jbpm.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1189 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Jbpm.xml:10
+#, no-c-format
+msgid "Pageflows and business processes"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:11
+#, no-c-format
+msgid ""
+"JBoss jBPM is a business process management engine for any Java SE or EE "
+"environment. jBPM lets you represent a business process or user interaction "
+"as a graph of nodes representing wait states, decisions, tasks, web pages, "
+"etc. The graph is defined using a simple, very readable, XML dialect called "
+"jPDL, and may be edited and visualised graphically using an eclipse plugin. "
+"jPDL is an extensible language, and is suitable for a range of problems, "
+"from defining web application page flow, to traditional workflow management, "
+"all the way up to orchestration of services in a SOA environment."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:14
+#, no-c-format
+msgid "Seam applications use jBPM for two different problems:"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:20
+#, no-c-format
+msgid ""
+"Defining the pageflow involved in complex user interactions. A jPDL process "
+"definition defines the page flow for a single conversation. A Seam "
+"conversation is considered to be a relatively short-running interaction with "
+"a single user."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:25
+#, no-c-format
+msgid ""
+"Defining the overarching business process. The business process may span "
+"multiple conversations with multiple users. Its state is persistent in the "
+"jBPM database, so it is considered long-running. Coordination of the "
+"activities of multiple users is a much more complex problem than scripting "
+"an interaction with a single user, so jBPM offers sophisticated facilities "
+"for task management and dealing with multiple concurrent paths of execution."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:31
+#, no-c-format
+msgid ""
+"Don't get these two things confused ! They operate at very different levels "
+"or granularity. <emphasis>Pageflow</emphasis>, <emphasis>conversation</"
+"emphasis> and <emphasis>task</emphasis> all refer to a single interaction "
+"with a single user. A business process spans many tasks. Futhermore, the two "
+"applications of jBPM are totally orthogonal. You can use them together or "
+"independently or not at all."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:34
+#, no-c-format
+msgid ""
+"You don't have to know jDPL to use Seam. If you're perfectly happy defining "
+"pageflow using JSF or Seam navigation rules, and if your application is more "
+"data-driven that process-driven, you probably don't need jBPM. But we're "
+"finding that thinking of user interaction in terms of a well-defined "
+"graphical representation is helping us build more robust applications."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:37
+#, no-c-format
+msgid ""
+"Please refer to the jBPM documentation for a more thorough overview of the "
+"sophisticated features that jBPM provides for managing complex business "
+"processes."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:41
+#, no-c-format
+msgid "Pageflow in Seam"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:42
+#, no-c-format
+msgid "There are two ways to define pageflow in Seam:"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:47
+#, no-c-format
+msgid ""
+"Using JSF or Seam navigation rules - the <emphasis>stateless navigation "
+"model</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:52
+#, no-c-format
+msgid "Using jPDL - the <emphasis>stateful navigation model</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:57
+#, no-c-format
+msgid ""
+"Very simple applications will only need the stateless navigation model. Very "
+"complex applications will use both models in different places. Each model "
+"has its strengths and weaknesses!"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:60
+#, no-c-format
+msgid ""
+"In practice, both navigation models have their place, and you'll quickly "
+"learn to recognize when to prefer one model over the other."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:64
+#, no-c-format
+msgid "The two navigation models"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:65
+#, no-c-format
+msgid ""
+"The stateless model defines a mapping from a set of named, logical outcomes "
+"of an event directly to the resulting page of the view. The navigation rules "
+"are entirely oblivious to any state held by the application other than what "
+"page was the source of the event. This means that your action listener "
+"methods must sometimes make decisions about the page flow, since only they "
+"have access to the current state of the application."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:68
+#, no-c-format
+msgid "Here is an example page flow definition using JSF navigation rules:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:71
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"    &lt;from-view-id&gt;/numberGuess.jsp&lt;/from-view-id&gt;\n"
+"        \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;guess&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/numberGuess.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;win&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/win.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"        \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;lose&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/lose.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:72
+#, no-c-format
+msgid ""
+"Here is the same example page flow definition using Seam navigation rules:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:75
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/numberGuess.jsp\"&gt;\n"
+"        \n"
+"    &lt;navigation&gt;\n"
+"        &lt;rule if-outcome=\"guess\"&gt;\n"
+"            &lt;redirect view-id=\"/numberGuess.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"        &lt;rule if-outcome=\"win\"&gt;\n"
+"            &lt;redirect view-id=\"/win.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"        &lt;rule if-outcome=\"lose\"&gt;\n"
+"            &lt;redirect view-id=\"/lose.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:76
+#, no-c-format
+msgid ""
+"If you find navigation rules overly verbose, you can return view ids "
+"directly from your action listener methods:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:79
+#, no-c-format
+msgid ""
+"public String guess() {\n"
+"    if (guess==randomNumber) return \"/win.jsp\";\n"
+"    if (++guessCount==maxGuesses) return \"/lose.jsp\";\n"
+"    return null;\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:80
+#, no-c-format
+msgid ""
+"Note that this results in a redirect. You can even specify parameters to be "
+"used in the redirect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:83
+#, no-c-format
+msgid ""
+"public String search() {\n"
+"    return \"/searchResults.jsp?searchPattern=#{searchAction.searchPattern}"
+"\";\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:84
+#, no-c-format
+msgid ""
+"The stateful model defines a set of transitions between a set of named, "
+"logical application states. In this model, it is possible to express the "
+"flow of any user interaction entirely in the jPDL pageflow definition, and "
+"write action listener methods that are completely unaware of the flow of the "
+"interaction."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:87
+#, no-c-format
+msgid "Here is an example page flow definition using jPDL:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:90
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"numberGuess\"&gt;\n"
+"    \n"
+"   &lt;start-page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"      &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"      &lt;/transition&gt;\n"
+"   &lt;/start-page&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess."
+"correctGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateRemainingGuesses\" expression=\"#{numberGuess."
+"lastGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"lose\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"displayGuess\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"lose\" view-id=\"/lose.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:99
+#, no-c-format
+msgid "There are two things we notice immediately here:"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:104
+#, no-c-format
+msgid ""
+"The JSF/Seam navigation rules are <emphasis>much</emphasis> simpler. "
+"(However, this obscures the fact that the underlying Java code is more "
+"complex.)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:109
+#, no-c-format
+msgid ""
+"The jPDL makes the user interaction immediately understandable, without us "
+"needing to even look at the JSP or Java code."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:114
+#, no-c-format
+msgid ""
+"In addition, the stateful model is more <emphasis>constrained</emphasis>. "
+"For each logical state (each step in the page flow), there are a constrained "
+"set of possible transitions to other states. The stateless model is an "
+"<emphasis>ad hoc</emphasis> model which is suitable to relatively "
+"unconstrained, freeform navigation where the user decides where he/she wants "
+"to go next, not the application."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:117
+#, no-c-format
+msgid ""
+"The stateful/stateless navigation distinction is quite similar to the "
+"traditional view of modal/modeless interaction. Now, Seam applications are "
+"not usually modal in the simple sense of the word - indeed, avoiding "
+"application modal behavior is one of the main reasons for having "
+"conversations! However, Seam applications can be, and often are, modal at "
+"the level of a particular conversation. It is well-known that modal behavior "
+"is something to avoid as much as possible; it is very difficult to predict "
+"the order in which your users are going to want to do things! However, there "
+"is no doubt that the stateful model has its place."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:120
+#, no-c-format
+msgid ""
+"The biggest contrast between the two models is the back-button behavior."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:126
+#, no-c-format
+msgid "Seam and the back button"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:127
+#, no-c-format
+msgid ""
+"When JSF or Seam navigation rules are used, Seam lets the user freely "
+"navigate via the back, forward and refresh buttons. It is the responsibility "
+"of the application to ensure that conversational state remains internally "
+"consistent when this occurs. Experience with the combination of web "
+"application frameworks like Struts or WebWork - that do not support a "
+"conversational model - and stateless component models like EJB stateless "
+"session beans or the Spring framework has taught many developers that this "
+"is close to impossible to do! However, our experience is that in the context "
+"of Seam, where there is a well-defined conversational model, backed by "
+"stateful session beans, it is actually quite straightforward. Usually it is "
+"as simple as combining the use of <literal>no-conversation-view-id</literal> "
+"with null checks at the beginning of action listener methods. We consider "
+"support for freeform navigation to be almost always desirable."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:130
+#, no-c-format
+msgid ""
+"In this case, the <literal>no-conversation-view-id</literal> declaration "
+"goes in <literal>pages.xml</literal>. It tells Seam to redirect to a "
+"different page if a request originates from a page rendered during a "
+"conversation, and that conversation no longer exists:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:133
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/checkout.xhtml\" \n"
+"        no-conversation-view-id=\"/main.xhtml\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:134
+#, no-c-format
+msgid ""
+"On the other hand, in the stateful model, backbuttoning is interpreted as an "
+"undefined transition back to a previous state. Since the stateful model "
+"enforces a defined set of transitions from the current state, back buttoning "
+"is be default disallowed in the stateful model! Seam transparently detects "
+"the use of the back button, and blocks any attempt to perform an action from "
+"a previous, \"stale\" page, and simply redirects the user to the \"current\" "
+"page (and displays a faces message). Whether you consider this a feature or "
+"a limitation of the stateful model depends upon your point of view: as an "
+"application developer, it is a feature; as a user, it might be frustrating! "
+"You can enable backbutton navigation from a particular page node by setting "
+"<literal>back=\"enabled\"</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:137
+#, no-c-format
+msgid ""
+"&lt;page name=\"checkout\" \n"
+"        view-id=\"/checkout.xhtml\" \n"
+"        back=\"enabled\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"checkout\"/&gt;\n"
+"    &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:138
+#, no-c-format
+msgid ""
+"This allows backbuttoning <emphasis>from</emphasis> the <literal>checkout</"
+"literal> state to <emphasis>any previous state!</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:141
+#, no-c-format
+msgid ""
+"Of course, we still need to define what happens if a request originates from "
+"a page rendered during a pageflow, and the conversation with the pageflow no "
+"longer exists. In this case, the <literal>no-conversation-view-id</literal> "
+"declaration goes into the pageflow definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:144
+#, no-c-format
+msgid ""
+"&lt;page name=\"checkout\" \n"
+"        view-id=\"/checkout.xhtml\" \n"
+"        back=\"enabled\" \n"
+"        no-conversation-view-id=\"/main.xhtml\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"checkout\"/&gt;\n"
+"    &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:151
+#, no-c-format
+msgid "Using jPDL pageflows"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:153
+#, no-c-format
+msgid "Installing pageflows"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:154
+#, no-c-format
+msgid ""
+"We need to install the Seam jBPM-related components, and tell them where to "
+"find our pageflow definition. We can specify this Seam configuration in "
+"<literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:157
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:pageflow-definitions&gt;\n"
+"        &lt;value&gt;pageflow.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:pageflow-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:158
+#, no-c-format
+msgid ""
+"The first line installs jBPM, the second points to a jPDL-based pageflow "
+"definition."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:164
+#, no-c-format
+msgid "Starting pageflows"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:165
+#, no-c-format
+msgid ""
+"We \"start\" a jPDL-based pageflow by specifying the name of the process "
+"definition using a <literal>@Begin</literal>, <literal>@BeginTask</literal> "
+"or <literal>@StartTask</literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:168
+#, no-c-format
+msgid ""
+"@Begin(pageflow=\"numberguess\")\n"
+"public void begin() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:169
+#, no-c-format
+msgid "Alternatively we can start a pageflow using pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:172
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"        &lt;begin-conversation pageflow=\"numberguess\"/&gt;\n"
+"    &lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:173
+#, no-c-format
+msgid ""
+"If we are beginning the pageflow during the <literal>RENDER_RESPONSE</"
+"literal> phase&mdash;during a <literal>@Factory</literal> or "
+"<literal>@Create</literal> method, for example&mdash;we consider ourselves "
+"to be already at the page being rendered, and use a <literal>&lt;start-"
+"page&gt;</literal> node as the first node in the pageflow, as in the example "
+"above."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:176
+#, no-c-format
+msgid ""
+"But if the pageflow is begun as the result of an action listener invocation, "
+"the outcome of the action listener determines which is the first page to be "
+"rendered. In this case, we use a <literal>&lt;start-state&gt;</literal> as "
+"the first node in the pageflow, and declare a transition for each possible "
+"outcome:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:179
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"viewEditDocument\"&gt;\n"
+"\n"
+"    &lt;start-state name=\"start\"&gt;\n"
+"        &lt;transition name=\"documentFound\" to=\"displayDocument\"/&gt;\n"
+"        &lt;transition name=\"documentNotFound\" to=\"notFound\"/&gt;\n"
+"    &lt;/start-state&gt;\n"
+"    \n"
+"    &lt;page name=\"displayDocument\" view-id=\"/document.jsp\"&gt;\n"
+"        &lt;transition name=\"edit\" to=\"editDocument\"/&gt;\n"
+"        &lt;transition name=\"done\" to=\"main\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"    \n"
+"    ...\n"
+"    \n"
+"    &lt;page name=\"notFound\" view-id=\"/404.jsp\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"    &lt;/page&gt;\n"
+"    \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:183
+#, no-c-format
+msgid "Page nodes and transitions"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:184
+#, no-c-format
+msgid ""
+"Each <literal>&lt;page&gt;</literal> node represents a state where the "
+"system is waiting for user input:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:187
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"        &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:188
+#, no-c-format
+msgid ""
+"The <literal>view-id</literal> is the JSF view id. The <literal>&lt;redirect/"
+"&gt;</literal> element has the same effect as <literal>&lt;redirect/&gt;</"
+"literal> in a JSF navigation rule: namely, a post-then-redirect behavior, to "
+"overcome problems with the browser's refresh button. (Note that Seam "
+"propagates conversation contexts over these browser redirects. So there is "
+"no need for a Ruby on Rails style \"flash\" construct in Seam!)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:191
+#, no-c-format
+msgid ""
+"The transition name is the name of a JSF outcome triggered by clicking a "
+"command button or command link in <literal>numberGuess.jsp</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:194
+#, no-c-format
+msgid ""
+"&lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"guess\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:195
+#, no-c-format
+msgid ""
+"When the transition is triggered by clicking this button, jBPM will activate "
+"the transition action by calling the <literal>guess()</literal> method of "
+"the <literal>numberGuess</literal> component. Notice that the syntax used "
+"for specifying actions in the jPDL is just a familiar JSF EL expression, and "
+"that the transition action handler is just a method of a Seam component in "
+"the current Seam contexts. So we have exactly the same event model for jBPM "
+"events that we already have for JSF events! (The <emphasis>One Kind of "
+"Stuff</emphasis> principle.)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:198
+#, no-c-format
+msgid ""
+"In the case of a null outcome (for example, a command button with no "
+"<literal>action</literal> defined), Seam will signal the transition with no "
+"name if one exists, or else simply redisplay the page if all transitions "
+"have names. So we could slightly simplify our example pageflow and this "
+"button:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:201
+#, no-c-format
+msgid "&lt;h:commandButton type=\"submit\" value=\"Guess\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:202
+#, no-c-format
+msgid "Would fire the following un-named transition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:205
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"evaluateGuess\"&gt;\n"
+"        &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:206
+#, no-c-format
+msgid ""
+"It is even possible to have the button call an action method, in which case "
+"the action outcome will determine the transition to be taken:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:209
+#, no-c-format
+msgid ""
+"&lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"#{numberGuess."
+"guess}\"/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:210
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;transition name=\"correctGuess\" to=\"win\"/&gt;\n"
+"    &lt;transition name=\"incorrectGuess\" to=\"evaluateGuess\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:211
+#, no-c-format
+msgid ""
+"However, this is considered an inferior style, since it moves responsibility "
+"for controlling the flow out of the pageflow definition and back into the "
+"other components. It is much better to centralize this concern in the "
+"pageflow itself."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:217
+#, no-c-format
+msgid "Controlling the flow"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:218
+#, no-c-format
+msgid ""
+"Usually, we don't need the more powerful features of jPDL when defining "
+"pageflows. We do need the <literal>&lt;decision&gt;</literal> node, however:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:221
+#, no-c-format
+msgid ""
+"&lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess.correctGuess}"
+"\"&gt;\n"
+"    &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"    &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"&lt;/decision&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:222
+#, no-c-format
+msgid ""
+"A decision is made by evaluating a JSF EL expression in the Seam contexts."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:228
+#, no-c-format
+msgid "Ending the flow"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:229
+#, no-c-format
+msgid ""
+"We end the conversation using <literal>&lt;end-conversation&gt;</literal> or "
+"<literal>@End</literal>. (In fact, for readability, use of <emphasis>both</"
+"emphasis> is encouraged.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:232
+#, no-c-format
+msgid ""
+"&lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;end-conversation/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:233
+#, no-c-format
+msgid ""
+"Optionally, we can end a task, specify a jBPM <literal>transition</literal> "
+"name. In this case, Seam will signal the end of the current task in the "
+"overarching business process."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:236
+#, no-c-format
+msgid ""
+"&lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;end-task transition=\"success\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:242
+#, no-c-format
+msgid "Business process management in Seam"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:243
+#, no-c-format
+msgid ""
+"A business process is a well-defined set of tasks that must be performed by "
+"users or software systems according to well-defined rules about "
+"<emphasis>who</emphasis> can perform a task, and <emphasis>when</emphasis> "
+"it should be performed. Seam's jBPM integration makes it easy to display "
+"lists of tasks to users and let them manage their tasks. Seam also lets the "
+"application store state associated with the business process in the "
+"<literal>BUSINESS_PROCESS</literal> context, and have that state made "
+"persistent via jBPM variables."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:246
+#, no-c-format
+msgid ""
+"A simple business process definition looks much the same as a page flow "
+"definition (<emphasis>One Kind of Stuff</emphasis>), except that instead of "
+"<literal>&lt;page&gt;</literal> nodes, we have <literal>&lt;task-node&gt;</"
+"literal> nodes. In a long-running business process, the wait states are "
+"where the system is waiting for some user to log in and perform a task."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:249
+#, no-c-format
+msgid ""
+"&lt;process-definition name=\"todo\"&gt;\n"
+"   \n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"todo\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;task-node name=\"todo\"&gt;\n"
+"      &lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"         &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"      &lt;/task&gt;\n"
+"      &lt;transition to=\"done\"/&gt;\n"
+"   &lt;/task-node&gt;\n"
+"   \n"
+"   &lt;end-state name=\"done\"/&gt;\n"
+"   \n"
+"&lt;/process-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:260
+#, no-c-format
+msgid ""
+"It is perfectly possible that we might have both jPDL business process "
+"definitions and jPDL pageflow definitions in the same project. If so, the "
+"relationship between the two is that a single <literal>&lt;task&gt;</"
+"literal> in a business process corresponds to a whole pageflow <literal>&lt;"
+"pageflow-definition&gt;</literal>"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:265
+#, no-c-format
+msgid "Using jPDL business process definitions"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:267
+#, no-c-format
+msgid "Installing process definitions"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:268
+#, no-c-format
+msgid ""
+"We need to install jBPM, and tell it where to find the business process "
+"definitions:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:271
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;todo.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:275
+#, no-c-format
+msgid "Initializing actor ids"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:276
+#, no-c-format
+msgid ""
+"We always need to know what user is currently logged in. jBPM \"knows\" "
+"users by their <emphasis>actor id</emphasis> and <emphasis>group actor ids</"
+"emphasis>. We specify the current actor ids using the built in Seam "
+"component named <literal>actor</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:279
+#, no-c-format
+msgid ""
+"@In Actor actor;\n"
+"\n"
+"public String login() {\n"
+"    ...\n"
+"    actor.setId( user.getUserName() );\n"
+"    actor.getGroupActorIds().addAll( user.getGroupNames() );\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:283
+#, no-c-format
+msgid "Initiating a business process"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:284
+#, no-c-format
+msgid ""
+"To initiate a business process instance, we use the <literal>@CreateProcess</"
+"literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:287
+#, no-c-format
+msgid ""
+"@CreateProcess(definition=\"todo\")\n"
+"public void createTodo() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:288
+#, no-c-format
+msgid "Alternatively we can initiate a business process using pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:291
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;create-process definition=\"todo\" /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:295
+#, no-c-format
+msgid "Task assignment"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:296
+#, no-c-format
+msgid ""
+"When a process starts, task instances are created. These must be assigned to "
+"users or user groups. We can either hardcode our actor ids, or delegate to a "
+"Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:299
+#, no-c-format
+msgid ""
+"&lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"    &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"&lt;/task&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:300
+#, no-c-format
+msgid ""
+"In this case, we have simply assigned the task to the current user. We can "
+"also assign tasks to a pool:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:303
+#, no-c-format
+msgid ""
+"&lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"    &lt;assignment pooled-actors=\"employees\"/&gt;\n"
+"&lt;/task&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:307
+#, no-c-format
+msgid "Task lists"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:308
+#, no-c-format
+msgid ""
+"Several built-in Seam components make it easy to display task lists. The "
+"<literal>pooledTaskInstanceList</literal> is a list of pooled tasks that "
+"users may assign to themselves:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:311
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{pooledTaskInstanceList}\" var=\"task\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Description&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{task.description}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link action=\"#{pooledTask.assignToCurrentActor}\" value="
+"\"Assign\" taskInstance=\"#{task}\"/&gt;\n"
+"    &lt;/h:column&gt;            \n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:312
+#, no-c-format
+msgid ""
+"Note that instead of <literal>&lt;s:link&gt;</literal> we could have used a "
+"plain JSF <literal>&lt;h:commandLink&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:315
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"#{pooledTask.assignToCurrentActor}\"&gt; \n"
+"    &lt;f:param name=\"taskId\" value=\"#{task.id}\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:316
+#, no-c-format
+msgid ""
+"The <literal>pooledTask</literal> component is a built-in component that "
+"simply assigns the task to the current user."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:319
+#, no-c-format
+msgid ""
+"The <literal>taskInstanceListByType</literal> component includes tasks of a "
+"particular type that are assigned to the current user:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:322
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{taskInstanceListByType['todo']}\" var=\"task"
+"\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Description&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{task.description}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link action=\"#{todoList.start}\" value=\"Start Work\" "
+"taskInstance=\"#{task}\"/&gt;\n"
+"    &lt;/h:column&gt;            \n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:326
+#, no-c-format
+msgid "Performing a task"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:327
+#, no-c-format
+msgid ""
+"To begin work on a task, we use either <literal>@StartTask</literal> or "
+"<literal>@BeginTask</literal> on the listener method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:330
+#, no-c-format
+msgid ""
+"@StartTask\n"
+"public String start() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:331
+#, no-c-format
+msgid "Alternatively we can begin work on a task using pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:334
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;start-task /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:335
+#, no-c-format
+msgid ""
+"These annotations begin a special kind of conversation that has significance "
+"in terms of the overarching business process. Work done by this conversation "
+"has access to state held in the business process context."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:338
+#, no-c-format
+msgid ""
+"If we end the conversation using <literal>@EndTask</literal>, Seam will "
+"signal the completion of the task:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:341
+#, no-c-format
+msgid ""
+"@EndTask(transition=\"completed\")\n"
+"public String completed() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:342
+#, no-c-format
+msgid "Alternatively we can use pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:345
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;end-task transition=\"completed\" /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:346
+#, no-c-format
+msgid ""
+"(Alternatively, we could have used <literal>&lt;end-conversation&gt;</"
+"literal> as shown above.)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:349
+#, no-c-format
+msgid ""
+"At this point, jBPM takes over and continues executing the business process "
+"definition. (In more complex processes, several tasks might need to be "
+"completed before process execution can resume.)"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Jms.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Jms.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Jms.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,477 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Jms.xml:10
+#, no-c-format
+msgid "Asynchronicity and messaging"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:11
+#, no-c-format
+msgid ""
+"Seam makes it very easy to perform work asynchronously from a web request. "
+"When most people think of asynchronicity in Java EE, they think of using "
+"JMS. This is certainly one way to approach the problem in Seam, and is the "
+"right way when you have strict and well-defined quality of service "
+"requirements. Seam makes it easy to send and recieve JMS messages using Seam "
+"components."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:14
+#, no-c-format
+msgid ""
+"But for many usecases, JMS is overkill. Seam layers a simple asynchronous "
+"method and event facility over the EJB 3.0 timer service."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:17
+#, no-c-format
+msgid "Asynchronicity"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:18
+#, no-c-format
+msgid ""
+"Asynchronous events and method calls have the same quality of service "
+"expectations as the container's EJB timer service. If you're not familiar "
+"with the Timer service, don't worry, you don't need to interact with it "
+"directly if you want to use asynchronous methods in Seam."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:21
+#, no-c-format
+msgid ""
+"To use asynchronous methods and events, you need to add the following line "
+"to <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:24
+#, no-c-format
+msgid "&lt;core:dispatcher/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:25
+#, no-c-format
+msgid ""
+"Note that this functionality is not available in environments which do not "
+"support EJB 3.0."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:28
+#, no-c-format
+msgid "Asynchronous methods"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:29
+#, no-c-format
+msgid ""
+"In simplest form, an asynchronous call just lets a method call be processed "
+"asynchronously (in a different thread) from the caller. We usually use an "
+"asynchronous call when we want to return an immediate response to the "
+"client, and let some expensive work be processed in the background. This "
+"pattern works very well in applications which use AJAX, where the client can "
+"automatically poll the server for the result of the work."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:32
+#, no-c-format
+msgid ""
+"For EJB components, we annotate the local interface to specify that a method "
+"is processed asynchronously."
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:35
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public void processPayment(Payment payment);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:36
+#, no-c-format
+msgid ""
+"(For JavaBean components we can annotate the component implementation class "
+"if we like.)"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:39
+#, no-c-format
+msgid "The use of asynchronicity is transparent to the bean class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:42
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"paymentHandler\")\n"
+"public class PaymentHandlerBean implements PaymentHandler\n"
+"{\n"
+"    public void processPayment(Payment payment)\n"
+"    {\n"
+"        //do some work!\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:43
+#, no-c-format
+msgid "And also transparent to the client:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:46
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String pay()\n"
+"    {\n"
+"        paymentHandler.processPayment( new Payment(bill) );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:47
+#, no-c-format
+msgid ""
+"The asynchronous method is processed in a completely new event context and "
+"does not have access to the session or conversation context state of the "
+"caller. However, the business process context <emphasis>is</emphasis> "
+"propagated."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:50
+#, no-c-format
+msgid ""
+"Asynchronous method calls may be scheduled for later execution using the "
+"<literal>@Duration</literal>, <literal>@Expiration</literal> and "
+"<literal>@IntervalDuration</literal> annotations."
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:53
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public void processScheduledPayment(Payment payment, @Expiration Date "
+"date);\n"
+"\n"
+"    @Asynchronous\n"
+"    public void processRecurringPayment(Payment payment, @Expiration Date "
+"date, \n"
+"        @IntervalDuration Long interval)'\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:54
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String schedulePayment()\n"
+"    {\n"
+"        paymentHandler.processScheduledPayment( new Payment(bill), bill."
+"getDueDate() );\n"
+"        return \"success\";\n"
+"    }\n"
+"\n"
+"    public String scheduleRecurringPayment()\n"
+"    {\n"
+"        paymentHandler.processRecurringPayment( new Payment(bill), bill."
+"getDueDate(), ONE_MONTH );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:55
+#, no-c-format
+msgid ""
+"Both client and server may access the <literal>Timer</literal> object "
+"associated with the invocation."
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:58
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public Timer processScheduledPayment(Payment payment, @Expiration Date "
+"date);\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:59
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"paymentHandler\")\n"
+"public class PaymentHandlerBean implements PaymentHandler\n"
+"{\n"
+"    @In Timer timer;\n"
+"    \n"
+"    public Timer processScheduledPayment(Payment payment, @Expiration Date "
+"date)\n"
+"    {\n"
+"        //do some work!\n"
+"        \n"
+"        return timer; //note that return value is completely ignored\n"
+"    }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:60
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String schedulePayment()\n"
+"    {\n"
+"        Timer timer = paymentHandler.processScheduledPayment( new Payment"
+"(bill), bill.getDueDate() );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:61
+#, no-c-format
+msgid "Asynchronous methods cannot return any other value to the caller."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:64
+#, no-c-format
+msgid "Asynchronous events"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:65
+#, no-c-format
+msgid ""
+"Component-driven events may also be asynchronous. To raise an event for "
+"asynchronous processing, simply call the <literal>raiseAsynchronousEvent()</"
+"literal> methods of the <literal>Events</literal> class. To schedule a timed "
+"event, call one of the <literal>raiseTimedEvent()</literal> methods. "
+"Components may observe asynchronous events in the usual way, but remember "
+"that only the business process context is propagated to the asynchronous "
+"thread."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:68
+#, no-c-format
+msgid "Messaging in Seam"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:69
+#, no-c-format
+msgid ""
+"Seam makes it easy to send and receive JMS messages to and from Seam "
+"components."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:72
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:73
+#, no-c-format
+msgid ""
+"To configure Seam's infrastructure for sending JMS messages, you need to "
+"tell Seam about any topics and queues you want to send messages to, and also "
+"tell Seam where to find the <literal>QueueConnectionFactory</literal> and/or "
+"<literal>TopicConnectionFactory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:76
+#, no-c-format
+msgid ""
+"Seam defaults to using <literal>UIL2ConnectionFactory</literal> which is the "
+"usual connection factory for use with JBossMQ. If you are using some other "
+"JMS provider, you need to set one or both of <literal>queueConnection."
+"queueConnectionFactoryJndiName</literal> and <literal>topicConnection."
+"topicConnectionFactoryJndiName</literal> in <literal>seam.properties</"
+"literal>, <literal>web.xml</literal> or <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:79
+#, no-c-format
+msgid ""
+"You also need to list topics and queues in <literal>components.xml</literal> "
+"to install Seam managed <literal>TopicPublisher</literal>s and "
+"<literal>QueueSender</literal>s:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:82
+#, no-c-format
+msgid ""
+"&lt;jms:managed-topic-publisher name=\"stockTickerPublisher\" auto-create="
+"\"true\" \n"
+"    topic-jndi-name=\"topic/stockTickerTopic\"/&gt;\n"
+"\n"
+"&lt;jms:managed-queue-sender name=\"paymentQueueSender\" auto-create=\"true"
+"\" \n"
+"    queue-jndi-name=\"queue/paymentQueue\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:83
+#, no-c-format
+msgid "Sending messages"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:84
+#, no-c-format
+msgid ""
+"Now, you can inject a JMS <literal>TopicPublisher</literal> and "
+"<literal>TopicSession</literal> into any component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:87
+#, no-c-format
+msgid ""
+"@In \n"
+"private TopicPublisher stockTickerPublisher;   \n"
+"@In \n"
+"private TopicSession topicSession;\n"
+"\n"
+"public void publish(StockPrice price) {\n"
+"      try\n"
+"      {\n"
+"         topicPublisher.publish( topicSession.createObjectMessage(price) );\n"
+"      } \n"
+"      catch (Exception ex)\n"
+"      {\n"
+"         throw new RuntimeException(ex);\n"
+"      } \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:88
+#, no-c-format
+msgid "Or, for working with a queue:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:91
+#, no-c-format
+msgid ""
+"@In\n"
+"private QueueSender paymentQueueSender;   \n"
+"@In\n"
+"private QueueSession queueSession;\n"
+"\n"
+"public void publish(Payment payment) {\n"
+"      try\n"
+"      {\n"
+"         paymentQueueSender.send( queueSession.createObjectMessage"
+"(payment) );\n"
+"      } \n"
+"      catch (Exception ex)\n"
+"      {\n"
+"         throw new RuntimeException(ex);\n"
+"      } \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:92
+#, no-c-format
+msgid "Receiving messages using a message-driven bean"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:93
+#, no-c-format
+msgid ""
+"You can process messages using any EJB3 message driven bean. Message-driven "
+"beans may even be Seam components, in which case it is possible to inject "
+"other event and application scoped Seam components."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:96
+#, no-c-format
+msgid "Receiving messages in the client"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:97
+#, no-c-format
+msgid ""
+"Seam Remoting lets you subscribe to a JMS topic from client-side JavaScript. "
+"This is described in the next chapter."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Mail.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Mail.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Mail.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,985 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Mail.xml:10
+#, no-c-format
+msgid "Email"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:11
+#, no-c-format
+msgid ""
+"Seam now includes an optional components for templating and sending emails."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:14
+#, no-c-format
+msgid ""
+"Email support is provided by <literal>jboss-seam-mail.jar</literal>. This "
+"JAR contains the mail JSF controls, which are used to construct emails, and "
+"the <literal>mailSession</literal> manager component."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:17
+#, no-c-format
+msgid ""
+"The examples/mail project contains an example of the email support in "
+"action. It demonstrates proper packaging, and it contains a number of "
+"example that demonstrate the key features currently supported."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:21
+#, no-c-format
+msgid "Creating a message"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:22
+#, no-c-format
+msgid ""
+"You don't need to learn a whole new templating language to use Seam "
+"Mail&mdash;an email is just facelet!"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:25
+#, no-c-format
+msgid ""
+"&lt;m:message xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"    xmlns:m=\"http://jboss.com/products/seam/mail\"\n"
+"    xmlns:h=\"http://java.sun.com/jsf/html\"&gt;\n"
+"  \n"
+"    &lt;m:from name=\"Peter\" address=\"peter at example.com\" /&gt;\n"
+"    &lt;m:to name=\"#{person.firstname} #{person.lastname}\"&gt;#{person."
+"address}&lt;/m:to&gt;\n"
+"    &lt;m:subject&gt;Try out Seam!&lt;/m:subject&gt;\n"
+"    \n"
+"    &lt;m:body&gt;\n"
+"        &lt;p&gt;&lt;h:outputText value=\"Dear #{person.firstname}\" /&gt;,"
+"&lt;/p&gt;\n"
+"        &lt;p&gt;You can try out Seam by visiting \n"
+"        &lt;a href=\"http://labs.jboss.com/jbossseam\"&gt;http://labs.jboss."
+"com/jbossseam&lt;/a&gt;.&lt;/p&gt;\n"
+"        &lt;p&gt;Regards,&lt;/p&gt;\n"
+"        &lt;p&gt;Peter&lt;/p&gt;\n"
+"    &lt;/m:body&gt;\n"
+"    \n"
+"&lt;/m:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:26
+#, no-c-format
+msgid ""
+"The <literal>&lt;m:message&gt;</literal> tag wraps the whole message, and "
+"tells Seam to start rendering an email. Inside the <literal>&lt;m:message&gt;"
+"</literal> tag we use an <literal>&lt;m:from&gt;</literal> tag to set who "
+"the message is from, a <literal>&lt;m:to&gt;</literal> tag to specify a "
+"sender (notice how we use EL as we would in a normal facelet), and a "
+"<literal>&lt;m:subject&gt;</literal> tag."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:29
+#, no-c-format
+msgid ""
+"The <literal>&lt;m:body&gt;</literal> tag wraps the body of the email. You "
+"can use regular HTML tags inside the body as well as JSF components."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:32
+#, no-c-format
+msgid ""
+"So, now you have your email template, how do you go about sending it? Well, "
+"at the end of rendering the <literal>m:message</literal> the "
+"<literal>mailSession</literal> is called to send the email, so all you have "
+"to do is ask Seam to render the view:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:35
+#, no-c-format
+msgid ""
+"@In(create=true)\n"
+"private Renderer renderer;\n"
+"   \n"
+"public void send() {\n"
+"    try {\n"
+"       renderer.render(\"/simple.xhtml\");\n"
+"       facesMessages.add(\"Email sent successfully\");\n"
+"   } \n"
+"   catch (Exception e) {\n"
+"       facesMessages.add(\"Email sending failed: \" + e.getMessage());\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:36
+#, no-c-format
+msgid ""
+"If, for example, you entered an invalid email address, then an exception "
+"would be thrown, which is caught and then displayed to the user."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:40
+#, no-c-format
+msgid "Attachments"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:41
+#, no-c-format
+msgid ""
+"Seam makes it easy to attach files to an email. It supports most of the "
+"standard java types used when working with files."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:44
+#, no-c-format
+msgid "If you wanted to email the <literal>jboss-seam-mail.jar</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:47
+#, no-c-format
+msgid "&lt;m:attachment value=\"/WEB-INF/lib/jboss-seam-mail.jar\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:48
+#, no-c-format
+msgid ""
+"Seam will load the file from the classpath, and attach it to the email. By "
+"default it would be attached as <literal>jboss-seam-mail.jar</literal>; if "
+"you wanted it to have another name you would just add the <literal>fileName</"
+"literal> attribute:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:51
+#, no-c-format
+msgid ""
+"&lt;m:attachment value=\"/WEB-INF/lib/jboss-seam-mail.jar\" fileName=\"this-"
+"is-so-cool.jar\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:52
+#, no-c-format
+msgid ""
+"You could also attach a <literal>java.io.File</literal>, a <literal>java.net."
+"URL</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:55
+#, no-c-format
+msgid "&lt;m:attachment value=\"#{numbers}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:56
+#, no-c-format
+msgid ""
+"Or a <literal>byte[]</literal> or a <literal>java.io.InputStream</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:59
+#, no-c-format
+msgid ""
+"&lt;m:attachment value=\"#{person.photo}\" contentType=\"image/png\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:60
+#, no-c-format
+msgid ""
+"You'll notice that for a <literal>byte[]</literal> and a <literal>java.io."
+"InputStream</literal> you need to specify the MIME type of the attachment "
+"(as that information is not carried as part of the file)."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:63
+#, no-c-format
+msgid ""
+"And it gets even better, you can attach a Seam generated PDF, or any "
+"standard JSF view, just by wrapping a <literal>&lt;m:attachment&gt;</"
+"literal> around the normal tags you would use:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:66
+#, no-c-format
+msgid ""
+"&lt;m:attachment fileName=\"tiny.pdf\"&gt;\n"
+"    &lt;p:"
+"document&gt;                                                      \n"
+"        A very tiny "
+"PDF                                                                                                \n"
+"    &lt;/p:document&gt;\n"
+"&lt;/m:attachment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:67
+#, no-c-format
+msgid ""
+"If you had a set of files you wanted to attach (for example a set of "
+"pictures loaded from a database) you can just use a <literal>&lt;ui:"
+"repeat&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:70
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{people}\" var=\"person\"&gt;\n"
+"    &lt;m:attachment value=\"#{person.photo}\" contentType=\"image/jpeg\"\n"
+"    fileName=\"#{person.firstname}_#{person.lastname}.jpg\"/&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:74
+#, no-c-format
+msgid "HTML/Text alternative part"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:75
+#, no-c-format
+msgid ""
+"Whilst most mail readers nowadays support HTML, some don't, so you can add a "
+"plain text alternative to your email body:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:78
+#, no-c-format
+msgid ""
+"&lt;m:body&gt;\n"
+"    &lt;f:facet name=\"alternative\"&gt;Sorry, your email reader can't show "
+"our fancy email, \n"
+"please go to http://labs.jboss.com/jbossseam to explore Seam.&lt;/f:"
+"facet&gt;\n"
+"&lt;/m:body&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:82
+#, no-c-format
+msgid "Multiple recipients"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:83
+#, no-c-format
+msgid ""
+"Often you'll want to send an email to a group of recipients (for example "
+"your users). All of the recipient mail tags can be placed inside a "
+"<literal>&lt;ui:repeat&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:86
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{allUsers} var=\"user\"&gt;\n"
+"    &lt;m:to name=\"#{user.firstname} #{user.lastname}\" address=\"#{user."
+"emailAddress}\" /&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:90
+#, no-c-format
+msgid "Multiple messages"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:91
+#, no-c-format
+msgid ""
+"Sometimes, however, you need to send a slightly different message to each "
+"recipient (e.g. a password reset). The best way to do this is to place the "
+"whole message inside a <literal>&lt;ui:repeat&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:94
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{people}\" var=\"p\"&gt;\n"
+"    &lt;m:message&gt;\n"
+"        &lt;m:from name=\"#{person.firstname} #{person.lastname}\"&gt;#"
+"{person.address}&lt;/m:from&gt;\n"
+"        &lt;m:to name=\"#{p.firstname}\"&gt;#{p.address}&lt;/m:to&gt;\n"
+"            ...\n"
+"    &lt;/m:message&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:98
+#, no-c-format
+msgid "Templating"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:99
+#, no-c-format
+msgid ""
+"The mail templating example shows that facelets templating Just Works with "
+"the Seam mail tags."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:102
+#, no-c-format
+msgid "Our <literal>template.xhtml</literal> contains:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:105
+#, no-c-format
+msgid ""
+"&lt;m:message&gt;\n"
+"   &lt;m:from name=\"Seam\" address=\"do-not-reply at jboss.com\" /&gt;\n"
+"   &lt;m:to name=\"#{person.firstname} #{person.lastname}\"&gt;#{person."
+"address}&lt;/m:to&gt;\n"
+"   &lt;m:subject&gt;#{subject}&lt;/m:subject&gt;\n"
+"   &lt;m:body&gt;\n"
+"       &lt;html&gt;\n"
+"           &lt;body&gt;\n"
+"               &lt;ui:insert name=\"body\"&gt;This is the default body, "
+"specified by the template.\n"
+"               &lt;/ui:insert&gt;\n"
+"           &lt;/body&gt;\n"
+"       &lt;/html&gt;\n"
+"   &lt;/m:body&gt;\n"
+"&lt;/m:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:106
+#, no-c-format
+msgid "Our <literal>templating.xhtml</literal> contains:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:109
+#, no-c-format
+msgid ""
+"&lt;ui:param name=\"subject\" value=\"Templating with Seam Mail\"/&gt;\n"
+"&lt;ui:define name=\"body\"&gt;\n"
+"    &lt;p&gt;This example demonstrates that you can easily use &lt;i&gt;"
+"facelets templating&lt;/i&gt; in email!&lt;/p&gt;\n"
+"&lt;/ui:define&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:113
+#, no-c-format
+msgid "Other Headers"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:114
+#, no-c-format
+msgid ""
+"Sometimes you'll want to add other headers to your email. Seam provides "
+"support for some (see <xref linkend=\"Email-Tags\"/>). For example, we can "
+"set the importance of the email, and ask for a read receipt:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:117
+#, no-c-format
+msgid ""
+"&lt;m:message xmlns:m=\"http://jboss.com/products/seam/mail\"\n"
+"           importance=\"low\"\n"
+"           requestReadReceipt=\"true\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:118
+#, no-c-format
+msgid ""
+"Otherise you can add any header to the message using the <literal>&lt;m:"
+"header&gt;</literal> tag:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:121
+#, no-c-format
+msgid "&lt;m:header name=\"X-Sent-From\" value=\"JBoss Seam\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:127
+#, no-c-format
+msgid "Receiving emails"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:128
+#, no-c-format
+msgid ""
+"If you are using EJB then you can use a MDB (Message Driven Bean) to receive "
+"email. Seam comes with an improved version of <literal>mail-ra.rar</literal> "
+"as distributed in JBoss AS; until the improvements make there way into a "
+"released version of JBoss AS, replacing the default <literal>rar</literal> "
+"with the one distributed with Seam is recommended."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:131
+#, no-c-format
+msgid "You can configure it like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:134
+#, no-c-format
+msgid ""
+"@MessageDriven(activationConfig={\n"
+"         @ActivationConfigProperty(propertyName=\"mailServer\", "
+"propertyValue=\"localhost\"),\n"
+"         @ActivationConfigProperty(propertyName=\"mailFolder\", "
+"propertyValue=\"INBOX\"),\n"
+"         @ActivationConfigProperty(propertyName=\"storeProtocol\", "
+"propertyValue=\"pop3\"),\n"
+"         @ActivationConfigProperty(propertyName=\"userName\", propertyValue="
+"\"seam\"),\n"
+"         @ActivationConfigProperty(propertyName=\"password\", propertyValue="
+"\"seam\")\n"
+"})\n"
+"@ResourceAdapter(\"mail-ra.rar\")\n"
+"@Name(\"mailListener\")\n"
+"public class MailListenerMDB implements MailListener {\n"
+"\n"
+"   @In(create=true)\n"
+"   private OrderProcessor orderProcessor;\n"
+"\n"
+"   public void onMessage(Message message) {\n"
+"      // Process the message\n"
+"      orderProcessor.process(message.getSubject());\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:135
+#, no-c-format
+msgid ""
+"Each message received will cause <literal>onMessage(Message message)</"
+"literal> to be called. Most seam annotations will work inside a MDB but you "
+"musn't access the persistence context."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:138
+#, no-c-format
+msgid ""
+"You can find more information on the default <literal>mail-ra.rar</literal> "
+"at <ulink url=\"http://wiki.jboss.org/wiki/Wiki.jsp?page=InboundJavaMail"
+"\">http://wiki.jboss.org/wiki/Wiki.jsp?page=InboundJavaMail</ulink>. The "
+"version distributed with Seam also includes a <literal>debug</literal> "
+"property to enable JavaMail debugging, a <literal>flush</literal> property "
+"(by default true) to disable flushing a <literal>POP3</literal> mailbox "
+"after successfullying delivering a message to your MDB and a <literal>port</"
+"literal> property to override the default TCP port. Beware that the api for "
+"this may be altered as changes make there way into JBoss AS."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:141
+#, no-c-format
+msgid ""
+"If you aren't using JBoss AS you can still use <literal>mail-ra.rar</"
+"literal> (included with Seam in the mail directory), or you may find your "
+"application server includes a similar adapter."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:147
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:148
+#, no-c-format
+msgid ""
+"To include Email support in your application, include <literal>jboss-seam-"
+"mail.jar</literal> in your WEB-INF/lib directory. If you are using JBoss AS "
+"there is no further configuration needed to use Seam's email support. "
+"Otherwise you need to make sure you have the JavaMail API, an implementation "
+"of the JavaMail API present (the API and impl used in JBoss AS are "
+"distributed with seam as <literal>lib/mail.jar</literal>), and a copy of the "
+"Java Activation Framework (distributed with seam as <literal>lib/activation."
+"jar</literal>."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:151
+#, no-c-format
+msgid ""
+"The Seam Email module requires the use of Facelets as the view technology. "
+"Future versions of the library may also support the use of JSP. "
+"Additionally, it requires the use of the seam-ui package."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:154
+#, no-c-format
+msgid ""
+"The <literal>mailSession</literal> component uses JavaMail to talk to a "
+"'real' SMTP server."
+msgstr ""
+
+#. Tag: literal
+#: Mail.xml:158
+#, no-c-format
+msgid "mailSession"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:159
+#, no-c-format
+msgid ""
+"A JavaMail Session may be available via a JNDI lookup if you are working in "
+"an JEE environment or you can use a Seam configured Session."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:162
+#, no-c-format
+msgid ""
+"The mailSession component's properties are described in more detail in <xref "
+"linkend=\"Built_in_Seam_components-Mail_related_components\"/>."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:166
+#, no-c-format
+msgid "JNDI lookup in JBoss AS"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:167
+#, no-c-format
+msgid ""
+"The JBossAS <literal>deploy/mail-service.xml</literal> configures a JavaMail "
+"session binding into JNDI. The default service configuration will need "
+"altering for your network. <ulink url=\"http://wiki.jboss.org/wiki/Wiki.jsp?"
+"page=JavaMail\">http://wiki.jboss.org/wiki/Wiki.jsp?page=JavaMail</ulink> "
+"describes the service in more detail."
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:170
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"        xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"        xmlns:mail=\"http://jboss.com/products/seam/mail\"&gt;\n"
+"        \n"
+"    &lt;mail:mail-session session-jndi-name=\"java:/Mail\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:171
+#, no-c-format
+msgid ""
+"Here we tell Seam to get the mail session bound to <literal>java:/Mail</"
+"literal> from JNDI."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:177
+#, no-c-format
+msgid "Seam configured Session"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:178
+#, no-c-format
+msgid ""
+"A mail session can be configured via <literal>components.xml</literal>. Here "
+"we tell Seam to use <literal>smtp.example.com</literal> as the smtp server,"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:181
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"        xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"        xmlns:mail=\"http://jboss.com/products/seam/mail\"&gt;\n"
+"        \n"
+"    &lt;mail:mail-session host=\"smtp.example.com\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:189
+#, no-c-format
+msgid "Tags"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:190
+#, no-c-format
+msgid ""
+"Emails are generated using tags in the <literal>http://jboss.com/products/"
+"seam/mail</literal> namespace. Documents should always have the "
+"<literal>message</literal> tag at the root of the message. The message tag "
+"prepares Seam to generate an email."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:193
+#, no-c-format
+msgid ""
+"The standard templating tags of facelets can be used as normal. Inside the "
+"body you can use any JSF tag which doesn't require access to external "
+"resources (stylesheets, javascript)."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:198
+#, no-c-format
+msgid "&lt;m:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:200
+#, no-c-format
+msgid "Root tag of a mail message"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:205
+#, no-c-format
+msgid ""
+"<literal>importance</literal> &mdash; low, normal or high. By default "
+"normal, this sets the importance of the mail message."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:210
+#, no-c-format
+msgid ""
+"<literal>precedence</literal> &mdash; sets the precedence of the message (e."
+"g. bulk)."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:215
+#, no-c-format
+msgid ""
+"<literal>requestReadReceipt</literal> &mdash; by default false, if set, a "
+"read receipt will be request will be added, with the read receipt being sent "
+"to the <literal>From:</literal> address."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:220
+#, no-c-format
+msgid ""
+"<literal>urlBase</literal> &mdash; If set, the value is prepended to the "
+"<literal>requestContextPath</literal> allowing you to use components such as "
+"<literal>&lt;h:graphicImage&gt;</literal> in your emails."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:228
+#, no-c-format
+msgid "&lt;m:from&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:230
+#, no-c-format
+msgid ""
+"Set's the From: address for the email. You can only have one of these per "
+"email."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:235
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the name the email should come from."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:240 Mail.xml:255
+#, no-c-format
+msgid ""
+"<literal>address</literal> &mdash; the email address the email should come "
+"from."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:248
+#, no-c-format
+msgid "&lt;m:replyTo&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:250
+#, no-c-format
+msgid ""
+"Set's the Reply-to: address for the email. You can only have one of these "
+"per email."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:263
+#, no-c-format
+msgid "&lt;m:to&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:265
+#, no-c-format
+msgid ""
+"Add a recipient to the email. Use multiple &lt;m:to&gt; tags for multiple "
+"recipients. This tag can be safely placed inside a repeat tag such as &lt;ui:"
+"repeat&gt;."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:270 Mail.xml:290 Mail.xml:310
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the name of the recipient."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:275 Mail.xml:295 Mail.xml:315
+#, no-c-format
+msgid "<literal>address</literal> &mdash; the email address of the recipient."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:283
+#, no-c-format
+msgid "&lt;m:cc&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:285
+#, no-c-format
+msgid ""
+"Add a cc recipient to the email. Use multiple &lt;m:cc&gt; tags for multiple "
+"ccs. This tag can be safely placed inside a repeat tag such as &lt;ui:"
+"repeat&gt;."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:303
+#, no-c-format
+msgid "&lt;m:bcc&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:305
+#, no-c-format
+msgid ""
+"Add a bcc recipient to the email. Use multiple &lt;m:bcc&gt; tags for "
+"multiple bccs. This tag can be safely placed inside a repeat tag such as &lt;"
+"ui:repeat&gt;."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:323
+#, no-c-format
+msgid "&lt;m:header&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:325
+#, no-c-format
+msgid ""
+"Add a header to the email (e.g. <literal>X-Sent-From: JBoss Seam</literal>"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:330
+#, no-c-format
+msgid ""
+"<literal>name</literal> &mdash; The name of the header to add (e.g. "
+"<literal>X-Sent-From</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:335
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; The value of the header to add (e.g. "
+"<literal>JBoss Seam</literal>)."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:343
+#, no-c-format
+msgid "&lt;m:attachment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:345
+#, no-c-format
+msgid "Add an attachment to the email."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:350
+#, no-c-format
+msgid "<literal>value</literal> &mdash; The file to attach:"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:355
+#, no-c-format
+msgid ""
+"<literal>String</literal> &mdash; A <literal>String</literal> is interpreted "
+"as a path to file within the classpath"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:360
+#, no-c-format
+msgid ""
+"<literal>java.io.File</literal> &mdash; An EL expression can reference a "
+"<literal>File</literal> object"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:365
+#, no-c-format
+msgid ""
+"<literal>java.net.URL</literal> &mdash; An EL expression can reference a "
+"<literal>URL</literal> object"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:370
+#, no-c-format
+msgid ""
+"<literal>java.io.InputStream</literal> &mdash; An EL expression can "
+"reference an <literal>InputStream</literal>. In this case both a "
+"<literal>fileName</literal> and a <literal>contentType</literal> must be "
+"specified."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:375
+#, no-c-format
+msgid ""
+"<literal>byte[]</literal> &mdash; An EL expression can reference an "
+"<literal>byte[]</literal>. In this case both a <literal>fileName</literal> "
+"and a <literal>contentType</literal> must be specified."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:380
+#, no-c-format
+msgid "If the value attribute is ommitted:"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:385
+#, no-c-format
+msgid ""
+"If this tag contains a <literal>&lt;p:document&gt;</literal> tag, the "
+"document described will be generated and attached to the email. A "
+"<literal>fileName</literal> should be specfied."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:390
+#, no-c-format
+msgid ""
+"If this tag contains other JSF tags a HTML document will be generated from "
+"them and attached to the email. A <literal>fileName</literal> should be "
+"specfied."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:397
+#, no-c-format
+msgid ""
+"<literal>fileName</literal> &mdash; Specify the file name to use for the "
+"attached file."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:402
+#, no-c-format
+msgid ""
+"<literal>contentType</literal> &mdash; Specify the MIME type of the attached "
+"file"
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:410
+#, no-c-format
+msgid "&lt;m:subject&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:412
+#, no-c-format
+msgid "Set's the subject for the email."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:418
+#, no-c-format
+msgid "&lt;m:body&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:420
+#, no-c-format
+msgid ""
+"Set's the body for the email. Supports an <literal>alternative</literal> "
+"facet which, if an HTML email is generated can contain alternative text for "
+"a mail reader which doesn't support html."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:425
+#, no-c-format
+msgid ""
+"<literal>type</literal> &mdash; If set to <literal>plain</literal> then a "
+"plain text email will be generated otherwise an HTML email is generated."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Persistence.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Persistence.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Persistence.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,750 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Persistence.xml:10
+#, no-c-format
+msgid "Seam and Object/Relational Mapping"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:11
+#, no-c-format
+msgid ""
+"Seam provides extensive support for the two most popular persistence "
+"architectures for Java: Hibernate3, and the Java Persistence API introduced "
+"with EJB 3.0. Seam's unique state-management architecture allows the most "
+"sophisticated ORM integration of any web application framework."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:15
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:16
+#, no-c-format
+msgid ""
+"Seam grew out of the frustration of the Hibernate team with the "
+"statelessness typical of the previous generation of Java application "
+"architectures. The state management architecture of Seam was originally "
+"designed to solve problems relating to persistence&mdash;in particular "
+"problems associated with <emphasis>optimistic transaction processing</"
+"emphasis>. Scalable online applications always use optimistic transactions. "
+"An atomic (database/JTA) level transaction should not span a user "
+"interaction unless the application is designed to support only a very small "
+"number of concurrent clients. But almost all interesting work involves first "
+"displaying data to a user, and then, slightly later, updating the same data. "
+"So Hibernate was designed to support the idea of a persistence context which "
+"spanned an optimistic transaction."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:19
+#, no-c-format
+msgid ""
+"Unfortunately, the so-called \"stateless\" architectures that preceded Seam "
+"and EJB 3.0 had no construct for representing an optimistic transaction. So, "
+"instead, these architectures provided persistence contexts scoped to the "
+"atomic transaction. Of course, this resulted in many problems for users, and "
+"is the cause of the number one user complaint about Hibernate: the dreaded "
+"<literal>LazyInitializationException</literal>. What we need is a construct "
+"for representing an optimistic transaction in the application tier."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:22
+#, no-c-format
+msgid ""
+"EJB 3.0 recognizes this problem, and introduces the idea of a stateful "
+"component (a stateful session bean) with an <emphasis>extended persistence "
+"context</emphasis> scoped to the lifetime of the component. This is a "
+"partial solution to the problem (and is a useful construct in and of itself) "
+"however there are two problems:"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:27
+#, no-c-format
+msgid ""
+"The lifecycle of the stateful session bean must be managed manually via code "
+"in the web tier (it turns out that this is a subtle problem and much more "
+"difficult in practice than it sounds)."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:32
+#, no-c-format
+msgid ""
+"Propagation of the persistence context between stateful components in the "
+"same optimistic transaction is possible, but tricky."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:37
+#, no-c-format
+msgid ""
+"Seam solves the first problem by providing conversations, and stateful "
+"session bean components scoped to the conversation. (Most conversations "
+"actually represent optimistic transactions in the data layer.) This is "
+"sufficient for many simple applications (such as the Seam booking demo) "
+"where persistence context propagation is not needed. For more complex "
+"applications, with many loosly-interacting components in each conversation, "
+"propagation of the persistence context across components becomes an "
+"important issue. So Seam extends the persistence context management model of "
+"EJB 3.0, to provide conversation-scoped extended persistence contexts."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:43
+#, no-c-format
+msgid "Seam managed transactions"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:44
+#, no-c-format
+msgid ""
+"EJB session beans feature declarative transaction management. The EJB "
+"container is able to start a transaction transparently when the bean is "
+"invoked, and end it when the invocation ends. If we write a session bean "
+"method that acts as a JSF action listener, we can do all the work associated "
+"with that action in one transaction, and be sure that it is committed or "
+"rolled back when we finish processing the action. This is a great feature, "
+"and all that is needed by some Seam applications."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:47
+#, no-c-format
+msgid ""
+"However, there is a problem with this approach. A Seam application may not "
+"perform all data access for a request from a single method call to a session "
+"bean."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:52
+#, no-c-format
+msgid ""
+"The request might require processing by several loosly-coupled components, "
+"each of which is called independently from the web layer. It is common to "
+"see several or even many calls per request from the web layer to EJB "
+"components in Seam."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:57
+#, no-c-format
+msgid "Rendering of the view might require lazy fetching of associations."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:62
+#, no-c-format
+msgid ""
+"The more transactions per request, the more likely we are to encounter "
+"atomicity and isolation problems when our application is processing many "
+"concurrent requests. Certainly, all write operations should occur in the "
+"same transaction!"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:65
+#, no-c-format
+msgid ""
+"Hibernate users developed the <emphasis>\"open session in view\"</emphasis> "
+"pattern to work around this problem. In the Hibernate community, \"open "
+"session in view\" was historically even more important because frameworks "
+"like Spring use transaction-scoped persistence contexts. So rendering the "
+"view would cause <literal>LazyInitializationException</literal>s when "
+"unfetched associations were accessed."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:68
+#, no-c-format
+msgid ""
+"This pattern is usually implemented as a single transaction which spans the "
+"entire request. There are several problems with this implementation, the "
+"most serious being that we can never be sure that a transaction is "
+"successful until we commit it&mdash;but by the time the \"open session in "
+"view\" transaction is committed, the view is fully rendered, and the "
+"rendered response may already have been flushed to the client. How can we "
+"notify the user that their transaction was unsuccessful?"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:71
+#, no-c-format
+msgid ""
+"Seam solves both the transaction isolation problem and the association "
+"fetching problem, while working around the problems with \"open session in "
+"view\". The solution comes in two parts:"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:76
+#, no-c-format
+msgid ""
+"use an extended persistence context that is scoped to the conversation, "
+"instead of to the transaction"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:81
+#, no-c-format
+msgid ""
+"use two transactions per request; the first spans the beginning of the "
+"update model values phase until the end of the invoke application phase; the "
+"second spans the render response phase"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:86
+#, no-c-format
+msgid ""
+"In the next section, we'll tell you how to set up a conversation-scope "
+"persistence context. But first we need to tell you how to enable Seam "
+"transaction management. Note that you can use conversation-scoped "
+"persistence contexts without Seam transaction management, and there are good "
+"reasons to use Seam transaction management even when you're not using Seam-"
+"managed persistence contexts. However, the two facilities were designed to "
+"work together, and work best when used together."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:90
+#, no-c-format
+msgid "Enabling Seam-managed transactions"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:91
+#, no-c-format
+msgid ""
+"To make use of <emphasis>Seam managed transactions</emphasis>, you need to "
+"use <literal>TransactionalSeamPhaseListener</literal> in place of "
+"<literal>SeamPhaseListener</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:94
+#, no-c-format
+msgid ""
+"&lt;lifecycle&gt;\n"
+"     &lt;phase-listener&gt;\n"
+"        org.jboss.seam.jsf.TransactionalSeamPhaseListener\n"
+"    &lt;/phase-listener&gt;\n"
+"&lt;/lifecycle&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:95
+#, no-c-format
+msgid ""
+"Seam transaction management is useful even if you're using EJB 3.0 container-"
+"managed persistence contexts. But it is especially useful if you use Seam "
+"outside a Java EE 5 environment, or in any other case where you would use a "
+"Seam-managed persistence context."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:103
+#, no-c-format
+msgid "Seam-managed persistence contexts"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:104
+#, no-c-format
+msgid ""
+"If you're using Seam outside of a Java EE 5 environment, you can't rely upon "
+"the container to manage the persistence context lifecycle for you. Even if "
+"you are in an EE 5 environment, you might have a complex application with "
+"many loosly coupled components that collaborate together in the scope of a "
+"single conversation, and in this case you might find that propagation of the "
+"persistence context between component is tricky and error-prone."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:107
+#, no-c-format
+msgid ""
+"In either case, you'll need to use a <emphasis>managed persistence context</"
+"emphasis> (for JPA) or a <emphasis>managed session</emphasis> (for "
+"Hibernate) in your components. A Seam-managed persistence context is just a "
+"built-in Seam component that manages an instance of <literal>EntityManager</"
+"literal> or <literal>Session</literal> in the conversation context. You can "
+"inject it with <literal>@In</literal>."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:110
+#, no-c-format
+msgid ""
+"Seam-managed persistence contexts are extremely efficient in a clustered "
+"environment. Seam is able to perform an optimization that EJB 3.0 "
+"specification does not allow containers to use for container-managed "
+"extended persistence contexts. Seam supports transparent failover of "
+"extended persisence contexts, without the need to replicate any persistence "
+"context state between nodes. (We hope to fix this oversight in the next "
+"revision of the EJB spec.)"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:114
+#, no-c-format
+msgid "Using a Seam-managed persistence context with JPA"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:115
+#, no-c-format
+msgid ""
+"Configuring a managed persistence context is easy. In <literal>components."
+"xml</literal>, we can write:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:118
+#, no-c-format
+msgid ""
+"&lt;core:managed-persistence-context name=\"bookingDatabase\" \n"
+"                           auto-create=\"true\"\n"
+"            persistence-unit-jndi-name=\"java:/EntityManagerFactories/"
+"bookingData\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:119
+#, no-c-format
+msgid ""
+"This configuration creates a conversation-scoped Seam component named "
+"<literal>bookingDatabase</literal> that manages the lifecycle of "
+"<literal>EntityManager</literal> instances for the persistence unit "
+"(<literal>EntityManagerFactory</literal> instance) with JNDI name "
+"<literal>java:/EntityManagerFactories/bookingData</literal>."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:122
+#, no-c-format
+msgid ""
+"Of course, you need to make sure that you have bound the "
+"<literal>EntityManagerFactory</literal> into JNDI. In JBoss, you can do this "
+"by adding the following property setting to <literal>persistence.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:125
+#, no-c-format
+msgid ""
+"&lt;property name=\"jboss.entity.manager.factory.jndi.name\" \n"
+"          value=\"java:/EntityManagerFactories/bookingData\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:126
+#, no-c-format
+msgid "Now we can have our <literal>EntityManager</literal> injected using:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:129
+#, no-c-format
+msgid "@In EntityManager bookingDatabase;"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:133
+#, no-c-format
+msgid "Using a Seam-managed Hibernate session"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:134
+#, no-c-format
+msgid ""
+"Seam-managed Hibernate sessions are similar. In <literal>components.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:137
+#, no-c-format
+msgid ""
+"&lt;core:hibernate-session-factory name=\"hibernateSessionFactory\"/&gt;\n"
+"\n"
+"&lt;core:managed-hibernate-session name=\"bookingDatabase\" \n"
+"                         auto-create=\"true\"\n"
+"           session-factory-jndi-name=\"java:/bookingSessionFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:138
+#, no-c-format
+msgid ""
+"Where <literal>java:/bookingSessionFactory</literal> is the name of the "
+"session factory specified in <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:141
+#, no-c-format
+msgid ""
+"&lt;session-factory name=\"java:/bookingSessionFactory\"&gt;\n"
+"    &lt;property name=\"transaction.flush_before_completion\"&gt;true&lt;/"
+"property&gt;\n"
+"    &lt;property name=\"connection.release_mode\"&gt;after_statement&lt;/"
+"property&gt;\n"
+"    &lt;property name=\"transaction.manager_lookup_class\"&gt;\n"
+"        org.hibernate.transaction.JBossTransactionManagerLookup\n"
+"    &lt;/property&gt;\n"
+"    &lt;property name=\"transaction.factory_class\"&gt;\n"
+"        org.hibernate.transaction.JTATransactionFactory\n"
+"    &lt;/property&gt;\n"
+"    &lt;property name=\"connection.datasource\"&gt;java:/"
+"bookingDatasource&lt;/property&gt;\n"
+"    ...\n"
+"&lt;/session-factory&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:142
+#, no-c-format
+msgid ""
+"Note that Seam does not flush the session, so you should always enable "
+"<literal>hibernate.transaction.flush_before_completion</literal> to ensure "
+"that the session is automatically flushed before the JTA transaction commits."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:145
+#, no-c-format
+msgid ""
+"We can now have a managed Hibernate <literal>Session</literal> injected into "
+"our JavaBean components using the following code:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:148
+#, no-c-format
+msgid "@In Session bookingDatabase;"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:152
+#, no-c-format
+msgid "Seam-managed persistence contexts and atomic conversations"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:153
+#, no-c-format
+msgid ""
+"Persistence contexts scoped to the conversation allows you to program "
+"optimistic transactions that span multiple requests to the server without "
+"the need to use the <literal>merge()</literal> operation , without the need "
+"to re-load data at the beginning of each request, and without the need to "
+"wrestle with the <literal>LazyInitializationException</literal> or "
+"<literal>NonUniqueObjectException</literal>."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:156
+#, no-c-format
+msgid ""
+"As with any optimistic transaction management, transaction isolation and "
+"consistency can be achieved via use of optimistic locking. Fortunately, both "
+"Hibernate and EJB 3.0 make it very easy to use optimistic locking, by "
+"providing the <literal>@Version</literal> annotation."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:159
+#, no-c-format
+msgid ""
+"By default, the persistence context is flushed (synchronized with the "
+"database) at the end of each transaction. This is sometimes the desired "
+"behavior. But very often, we would prefer that all changes are held in "
+"memory and only written to the database when the conversation ends "
+"successfully. This allows for truly atomic conversations. As the result of a "
+"truly stupid and shortsighted decision by certain non-JBoss, non-Sun and non-"
+"Sybase members of the EJB 3.0 expert group, there is currently no simple, "
+"usable and portable way to implement atomic conversations using EJB 3.0 "
+"persistence. However, Hibernate provides this feature as a vendor extension "
+"to the <literal>FlushModeType</literal>s defined by the specification, and "
+"it is our expectation that other vendors will soon provide a similar "
+"extension."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:162
+#, no-c-format
+msgid ""
+"Seam lets you specify <literal>FlushModeType.MANUAL</literal> when beginning "
+"a conversation. Currently, this works only when Hibernate is the underlying "
+"persistence provider, but we plan to support other equivalent vendor "
+"extensions."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:165
+#, no-c-format
+msgid ""
+"@In EntityManager em; //a Seam-managed persistence context\n"
+"\n"
+"@Begin(flushMode=MANUAL)\n"
+"public void beginClaimWizard() {\n"
+"    claim = em.find(Claim.class, claimId);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:166
+#, no-c-format
+msgid ""
+"Now, the <literal>claim</literal> object remains managed by the persistence "
+"context for the rest ot the conversation. We can make changes to the claim:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:169
+#, no-c-format
+msgid ""
+"public void addPartyToClaim() {\n"
+"    Party party = ....;\n"
+"    claim.addParty(party);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:170
+#, no-c-format
+msgid ""
+"But these changes will not be flushed to the database until we explicitly "
+"force the flush to occur:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:173
+#, no-c-format
+msgid ""
+"@End\n"
+"public void commitClaim() {\n"
+"    em.flush();\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:179
+#, no-c-format
+msgid "Using the JPA \"delegate\""
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:180
+#, no-c-format
+msgid ""
+"The <literal>EntityManager</literal> interface lets you access a vendor-"
+"specific API via the <literal>getDelegate()</literal> method. Naturally, the "
+"most interesting vendor is Hibernate, and the most powerful delegate "
+"interface is <literal>org.hibernate.Session</literal>. You'd be nuts to use "
+"anything else. Trust me, I'm not biased at all."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:183
+#, no-c-format
+msgid ""
+"But regardless of whether you're using Hibernate (genius!) or something else "
+"(masochist, or just not very bright), you'll almost certainly want to use "
+"the delegate in your Seam components from time to time. One approach would "
+"be the following:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:186
+#, no-c-format
+msgid ""
+"@In EntityManager entityManager;\n"
+"\n"
+"@Create\n"
+"public void init() {\n"
+"    ( (Session) entityManager.getDelegate() ).enableFilter(\"currentVersions"
+"\");\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:187
+#, no-c-format
+msgid ""
+"But typecasts are unquestionably the ugliest syntax in the Java language, so "
+"most people avoid them whenever possible. Here's a different way to get at "
+"the delegate. First, add the following line to <literal>components.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:190
+#, no-c-format
+msgid ""
+"&lt;factory name=\"session\" \n"
+"         scope=\"STATELESS\" \n"
+"         auto-create=\"true\" \n"
+"         value=\"#{entityManager.delegate}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:191
+#, no-c-format
+msgid "Now we can inject the session directly:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:194
+#, no-c-format
+msgid ""
+"@In Session session;\n"
+"\n"
+"@Create\n"
+"public void init() {\n"
+"    session.enableFilter(\"currentVersions\");\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:198
+#, no-c-format
+msgid "Using EL in EJB-QL/HQL"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:199
+#, no-c-format
+msgid ""
+"Seam proxies the <literal>EntityManager</literal> or <literal>Session</"
+"literal> object whenever you use a Seam-managed persistence context or "
+"inject a container managed persistence context using "
+"<literal>@PersistenceContext</literal>. This lets you use EL expressions in "
+"your query strings, safely and efficiently. For example, this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:202
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=#{user.username}\")\n"
+"         .getSingleResult();"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:203
+#, no-c-format
+msgid "is equivalent to:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:206
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getSingleResult();"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:207
+#, no-c-format
+msgid "Of course, you should never, ever write it like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:210
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=\" + user.getUsername"
+"()) //BAD!\n"
+"         .getSingleResult();"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:211
+#, no-c-format
+msgid "(It is inefficient and vulnerable to SQL injection attacks.)"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:217
+#, no-c-format
+msgid "Using Hibernate filters"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:218
+#, no-c-format
+msgid ""
+"The coolest, and most unique, feature of Hibernate is <emphasis>filters</"
+"emphasis>. Filters let you provide a restricted view of the data in the "
+"database. You can find out more about filters in the Hibernate "
+"documentation. But we thought we'd mention an easy way to incorporate "
+"filters into a Seam application, one that works especially well with the "
+"Seam Application Framework."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:221
+#, no-c-format
+msgid ""
+"Seam-managed persistence contexts may have a list of filters defined, which "
+"will be enabled whenever an <literal>EntityManager</literal> or Hibernate "
+"<literal>Session</literal> is first created. (Of course, they may only be "
+"used when Hibernate is the underlying persistence provider.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:224
+#, no-c-format
+msgid ""
+"&lt;core:filter name=\"regionFilter\"&gt;\n"
+"    &lt;core:name&gt;region&lt;/core:name&gt;\n"
+"    &lt;core:parameters&gt;\n"
+"        &lt;key&gt;regionCode&lt;/key&gt;\n"
+"        &lt;value&gt;#{region.code}&lt;/value&gt;\n"
+"    &lt;/core:parameters&gt;\n"
+"&lt;/core:filter&gt;\n"
+"\n"
+"&lt;core:filter name=\"currentFilter\"&gt;\n"
+"    &lt;core:name&gt;current&lt;/core:name&gt;\n"
+"    &lt;core:parameters&gt;\n"
+"        &lt;key&gt;date&lt;/key&gt;\n"
+"        &lt;value&gt;#{currentDate}&lt;/value&gt;\n"
+"    &lt;/core:parameters&gt;\n"
+"&lt;/core:filter&gt;\n"
+"\n"
+"&lt;core:managed-persistence-context name=\"personDatabase\"\n"
+"    persistence-unit-jndi-name=\"java:/EntityManagerFactories/personDatabase"
+"\"&gt;\n"
+"    &lt;core:filters&gt;\n"
+"        &lt;value&gt;#{regionFilter}&lt;/value&gt;\n"
+"        &lt;value&gt;#{currentFilter}&lt;/value&gt;\n"
+"    &lt;/core:filters&gt;\n"
+"&lt;/core:managed-persistence-context&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Remoting.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Remoting.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Remoting.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1458 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Remoting.xml:10
+#, no-c-format
+msgid "Remoting"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:11
+#, no-c-format
+msgid ""
+"Seam provides a convenient method of remotely accessing components from a "
+"web page, using AJAX (Asynchronous Javascript and XML). The framework for "
+"this functionality is provided with almost no up-front development effort - "
+"your components only require simple annotating to become accessible via "
+"AJAX. This chapter describes the steps required to build an AJAX-enabled web "
+"page, then goes on to explain the features of the Seam Remoting framework in "
+"more detail."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:14 Remoting.xml:296
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:15
+#, no-c-format
+msgid ""
+"To use remoting, the Seam Resource servlet must first be configured in your "
+"<literal>web.xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:18
+#, no-c-format
+msgid ""
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"  &lt;/servlet&gt;\n"
+"\n"
+"  &lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"  &lt;/servlet-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:19
+#, no-c-format
+msgid ""
+"The next step is to import the necessary Javascript into your web page. "
+"There are a minimum of two scripts that must be imported. The first one "
+"contains all the client-side framework code that enables remoting "
+"functionality:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:22
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/resource/"
+"remote.js\"&gt;&lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:23
+#, no-c-format
+msgid ""
+"The second script contains the stubs and type definitions for the components "
+"you wish to call. It is generated dynamically based on the local interface "
+"of your components, and includes type definitions for all of the classes "
+"that can be used to call the remotable methods of the interface. The name of "
+"the script reflects the name of your component. For example, if you have a "
+"stateless session bean annotated with <literal>@Name(\"customerAction\")</"
+"literal>, then your script tag should look like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:26
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?customerAction\"&gt;\n"
+"      &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:27
+#, no-c-format
+msgid ""
+"If you wish to access more than one component from the same page, then "
+"include them all as parameters of your script tag:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:30
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" \n"
+"      src=\"seam/resource/remoting/interface.js?customerAction&amp;"
+"accountAction\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:31
+#, no-c-format
+msgid "The \"Seam\" object"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:32
+#, no-c-format
+msgid ""
+"Client-side interaction with your components is all performed via the "
+"<literal>Seam</literal> Javascript object. This object is defined in "
+"<literal>remote.js</literal>, and you'll be using it to make asynchronous "
+"calls against your component. It is split into two areas of functionality; "
+"<literal>Seam.Component</literal> contains methods for working with "
+"components and <literal>Seam.Remoting</literal> contains methods for "
+"executing remote requests. The easiest way to become familiar with this "
+"object is to start with a simple example."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:35
+#, no-c-format
+msgid "A Hello World example"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:36
+#, no-c-format
+msgid ""
+"Let's step through a simple example to see how the <literal>Seam</literal> "
+"object works. First of all, let's create a new Seam component called "
+"<literal>helloAction</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:39
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"  @Name(\"helloAction\")\n"
+"  public class HelloAction implements HelloLocal {\n"
+"    public String sayHello(String name) {\n"
+"      return \"Hello, \" + name;\n"
+"    }\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:40
+#, no-c-format
+msgid ""
+"You also need to create a local interface for our new component - take "
+"special note of the <literal>@WebRemote</literal> annotation, as it's "
+"required to make our method accessible via remoting:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:43
+#, no-c-format
+msgid ""
+"@Local\n"
+"  public interface HelloLocal {\n"
+"    @WebRemote\n"
+"    public String sayHello(String name);\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:44
+#, no-c-format
+msgid ""
+"That's all the server-side code we need to write. Now for our web page - "
+"create a new page and import the following scripts:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:47
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/resource/"
+"remote.js\"&gt;&lt;/script&gt;\n"
+"  &lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?helloAction\"&gt;&lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:48
+#, no-c-format
+msgid ""
+"To make this a fully interactive user experience, let's add a button to our "
+"page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:51
+#, no-c-format
+msgid ""
+"&lt;button onclick=\"javascript:sayHello()\"&gt;Say Hello&lt;/button&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:52
+#, no-c-format
+msgid ""
+"We'll also need to add some more script to make our button actually do "
+"something when it's clicked:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:55
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\"&gt;\n"
+"    //&lt;![CDATA[\n"
+"\n"
+"    function sayHello() {\n"
+"      var name = prompt(\"What is your name?\");\n"
+"      Seam.Component.getInstance(\"helloAction\").sayHello(name, "
+"sayHelloCallback);\n"
+"    }\n"
+"\n"
+"    function sayHelloCallback(result) {\n"
+"      alert(result);\n"
+"    }\n"
+"\n"
+"    // ]]&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:56
+#, no-c-format
+msgid ""
+"We're done! Deploy your application and browse to your page. Click the "
+"button, and enter a name when prompted. A message box will display the hello "
+"message confirming that the call was successful. If you want to save some "
+"time, you'll find the full source code for this Hello World example in "
+"Seam's <literal>/examples/remoting/helloworld</literal> directory."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:59
+#, no-c-format
+msgid ""
+"So what does the code of our script actually do? Let's break it down into "
+"smaller pieces. To start with, you can see from the Javascript code listing "
+"that we have implemented two methods - the first method is responsible for "
+"prompting the user for their name and then making a remote request. Take a "
+"look at the following line:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:62
+#, no-c-format
+msgid ""
+"Seam.Component.getInstance(\"helloAction\").sayHello(name, sayHelloCallback);"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:63
+#, no-c-format
+msgid ""
+"The first section of this line, <literal>Seam.Component.getInstance"
+"(\"helloAction\")</literal> returns a proxy, or \"stub\" for our "
+"<literal>helloAction</literal> component. We can invoke the methods of our "
+"component against this stub, which is exactly what happens with the "
+"remainder of the line: <literal>sayHello(name, sayHelloCallback);</literal>."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:66
+#, no-c-format
+msgid ""
+"What this line of code in its completeness does, is invoke the "
+"<literal>sayHello</literal> method of our component, passing in "
+"<literal>name</literal> as a parameter. The second parameter, "
+"<literal>sayHelloCallback</literal> isn't a parameter of our component's "
+"<literal>sayHello</literal> method, instead it tells the Seam Remoting "
+"framework that once it receives the response to our request, it should pass "
+"it to the <literal>sayHelloCallback</literal> Javascript method. This "
+"callback parameter is entirely optional, so feel free to leave it out if "
+"you're calling a method with a <literal>void</literal> return type or if you "
+"don't care about the result."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:69
+#, no-c-format
+msgid ""
+"The <literal>sayHelloCallback</literal> method, once receiving the response "
+"to our remote request then pops up an alert message displaying the result of "
+"our method call."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:72
+#, no-c-format
+msgid "Seam.Component"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:73
+#, no-c-format
+msgid ""
+"The <literal>Seam.Component</literal> Javascript object provides a number of "
+"client-side methods for working with your Seam components. The two main "
+"methods, <literal>newInstance()</literal> and <literal>getInstance()</"
+"literal> are documented in the following sections however their main "
+"difference is that <literal>newInstance()</literal> will always create a new "
+"instance of a component type, and <literal>getInstance()</literal> will "
+"return a singleton instance."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:76
+#, no-c-format
+msgid "Seam.Component.newInstance()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:77
+#, no-c-format
+msgid ""
+"Use this method to create a new instance of an entity or Javabean component. "
+"The object returned by this method will have the same getter/setter methods "
+"as its server-side counterpart, or alternatively if you wish you can access "
+"its fields directly. Take the following Seam entity component for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:80
+#, no-c-format
+msgid ""
+"@Name(\"customer\")\n"
+"  @Entity\n"
+"  public class Customer implements Serializable\n"
+"  {\n"
+"    private Integer customerId;\n"
+"    private String firstName;\n"
+"    private String lastName;\n"
+"    \n"
+"    @Column public Integer getCustomerId() { \n"
+"      return customerId; \n"
+"    }\n"
+"    \n"
+"    public void setCustomerId(Integer customerId} { \n"
+"      this.customerId = customerId; \n"
+"    }\n"
+"    \n"
+"    @Column public String getFirstName() { \n"
+"      return firstName; \n"
+"    }\n"
+"    \n"
+"    public void setFirstName(String firstName) {\n"
+"      this.firstName = firstName; \n"
+"    }\n"
+"    \n"
+"    @Column public String getLastName() {\n"
+"      return lastName;\n"
+"    }\n"
+"    \n"
+"    public void setLastName(String lastName) {\n"
+"      this.lastName = lastName;\n"
+"    }\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:81
+#, no-c-format
+msgid "To create a client-side Customer you would write the following code:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:84
+#, no-c-format
+msgid "var customer = Seam.Component.newInstance(\"customer\");"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:85
+#, no-c-format
+msgid "Then from here you can set the fields of the customer object:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:88
+#, no-c-format
+msgid ""
+"customer.setFirstName(\"John\");\n"
+"  // Or you can set the fields directly\n"
+"  customer.lastName = \"Smith\";"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:89
+#, no-c-format
+msgid "Seam.Component.getInstance()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:90
+#, no-c-format
+msgid ""
+"The <literal>getInstance()</literal> method is used to get a reference to a "
+"Seam session bean component stub, which can then be used to remotely execute "
+"methods against your component. This method returns a singleton for the "
+"specified component, so calling it twice in a row with the same component "
+"name will return the same instance of the component."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:93
+#, no-c-format
+msgid ""
+"To continue our example from before, if we have created a new "
+"<literal>customer</literal> and we now wish to save it, we would pass it to "
+"the <literal>saveCustomer()</literal> method of our <literal>customerAction</"
+"literal> component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:96
+#, no-c-format
+msgid "Seam.Component.getInstance(\"customerAction\").saveCustomer(customer);"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:97
+#, no-c-format
+msgid "Seam.Component.getComponentName()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:98
+#, no-c-format
+msgid ""
+"Passing an object into this method will return its component name if it is a "
+"component, or <literal>null</literal> if it is not."
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:101
+#, no-c-format
+msgid ""
+"if (Seam.Component.getComponentName(instance) == \"customer\")\n"
+"    alert(\"Customer\");\n"
+"  else if (Seam.Component.getComponentName(instance) == \"staff\")\n"
+"    alert(\"Staff member\");"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:102
+#, no-c-format
+msgid "Seam.Remoting"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:103
+#, no-c-format
+msgid ""
+"Most of the client side functionality for Seam Remoting is contained within "
+"the <literal>Seam.Remoting</literal> object. While you shouldn't need to "
+"directly call most of its methods, there are a couple of important ones "
+"worth mentioning."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:106
+#, no-c-format
+msgid "Seam.Remoting.createType()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:107
+#, no-c-format
+msgid ""
+"If your application contains or uses Javabean classes that aren't Seam "
+"components, you may need to create these types on the client side to pass as "
+"parameters into your component method. Use the <literal>createType()</"
+"literal> method to create an instance of your type. Pass in the fully "
+"qualified Java class name as a parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:110
+#, no-c-format
+msgid "var widget = Seam.Remoting.createType(\"com.acme.widgets.MyWidget\");"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:111
+#, no-c-format
+msgid "Seam.Remoting.getTypeName()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:112
+#, no-c-format
+msgid ""
+"This method is the equivalent of <literal>Seam.Component.getComponentName()</"
+"literal> but for non-component types. It will return the name of the type "
+"for an object instance, or <literal>null</literal> if the type is not known. "
+"The name is the fully qualified name of the type's Java class."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:115
+#, no-c-format
+msgid "Client Interfaces"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:116
+#, no-c-format
+msgid ""
+"In the configuration section above, the interface, or \"stub\" for our "
+"component is imported into our page via <literal>seam/resource/remoting/"
+"interface.js</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:119
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?customerAction\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:120
+#, no-c-format
+msgid ""
+"By including this script in our page, the interface definitions for our "
+"component, plus any other components or types that are required to execute "
+"the methods of our component are generated and made available for the "
+"remoting framework to use."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:123
+#, no-c-format
+msgid ""
+"There are two types of client stub that can be generated, \"executable\" "
+"stubs and \"type\" stubs. Executable stubs are behavioural, and are used to "
+"execute methods against your session bean components, while type stubs "
+"contain state and represent the types that can be passed in as parameters or "
+"returned as a result."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:126
+#, no-c-format
+msgid ""
+"The type of client stub that is generated depends on the type of your Seam "
+"component. If the component is a session bean, then an executable stub will "
+"be generated, otherwise if it's an entity or JavaBean, then a type stub will "
+"be generated. There is one exception to this rule; if your component is a "
+"JavaBean (ie it is not a session bean nor an entity bean) and any of its "
+"methods are annotated with @WebRemote, then an executable stub will be "
+"generated for it instead of a type stub. This allows you to use remoting to "
+"call methods of your JavaBean components in a non-EJB environment where you "
+"don't have access to session beans."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:130
+#, no-c-format
+msgid "The Context"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:131
+#, no-c-format
+msgid ""
+"The Seam Remoting Context contains additional information which is sent and "
+"received as part of a remoting request/response cycle. At this stage it only "
+"contains the conversation ID but may be expanded in the future."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:134
+#, no-c-format
+msgid "Setting and reading the Conversation ID"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:136
+#, no-c-format
+msgid ""
+"If you intend on using remote calls within the scope of a conversation then "
+"you need to be able to read or set the conversation ID in the Seam Remoting "
+"Context. To read the conversation ID after making a remote request call "
+"<literal>Seam.Remoting.getContext().getConversationId()</literal>. To set "
+"the conversation ID before making a request, call <literal>Seam.Remoting."
+"getContext().setConversationId()</literal>."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:139
+#, no-c-format
+msgid ""
+"If the conversation ID hasn't been explicitly set with <literal>Seam."
+"Remoting.getContext().setConversationId()</literal>, then it will be "
+"automatically assigned the first valid conversation ID that is returned by "
+"any remoting call. If you are working with multiple conversations within "
+"your page, then you may need to explicitly set the conversation ID before "
+"each call. If you are working with just a single conversation, then you "
+"don't need to do anything special."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:145
+#, no-c-format
+msgid "Batch Requests"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:146
+#, no-c-format
+msgid ""
+"Seam Remoting allows multiple component calls to be executed within a single "
+"request. It is recommended that this feature is used wherever it is "
+"appropriate to reduce network traffic."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:149
+#, no-c-format
+msgid ""
+"The method <literal>Seam.Remoting.startBatch()</literal> will start a new "
+"batch, and any component calls executed after starting a batch are queued, "
+"rather than being sent immediately. When all the desired component calls "
+"have been added to the batch, the <literal>Seam.Remoting.executeBatch()</"
+"literal> method will send a single request containing all of the queued "
+"calls to the server, where they will be executed in order. After the calls "
+"have been executed, a single response containining all return values will be "
+"returned to the client and the callback functions (if provided) triggered in "
+"the same order as execution."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:152
+#, no-c-format
+msgid ""
+"If you start a new batch via the <literal>startBatch()</literal> method but "
+"then decide you don't want to send it, the <literal>Seam.Remoting.cancelBatch"
+"()</literal> method will discard any calls that were queued and exit the "
+"batch mode."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:155
+#, no-c-format
+msgid ""
+"To see an example of a batch being used, take a look at <literal>/examples/"
+"remoting/chatroom</literal>."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:159
+#, no-c-format
+msgid "Working with Data types"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:160
+#, no-c-format
+msgid "Primitives / Basic Types"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:161
+#, no-c-format
+msgid ""
+"This section describes the support for basic data types. On the server side "
+"these values are generally compatible with either their primitive type or "
+"their corresponding wrapper class."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:164
+#, no-c-format
+msgid "String"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:165
+#, no-c-format
+msgid ""
+"Simply use Javascript String objects when setting String parameter values."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:168
+#, no-c-format
+msgid "Number"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:169
+#, no-c-format
+msgid ""
+"There is support for all number types supported by Java. On the client side, "
+"number values are always serialized as their String representation and then "
+"on the server side they are converted to the correct destination type. "
+"Conversion into either a primitive or wrapper type is supported for "
+"<literal>Byte</literal>, <literal>Double</literal>, <literal>Float</"
+"literal>, <literal>Integer</literal>, <literal>Long</literal> and "
+"<literal>Short</literal> types."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:172
+#, no-c-format
+msgid "Boolean"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:173
+#, no-c-format
+msgid ""
+"Booleans are represented client side by Javascript Boolean values, and "
+"server side by a Java boolean."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:176
+#, no-c-format
+msgid "JavaBeans"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:177
+#, no-c-format
+msgid ""
+"In general these will be either Seam entity or JavaBean components, or some "
+"other non-component class. Use the appropriate method (either <literal>Seam."
+"Component.newInstance()</literal> for Seam components or <literal>Seam."
+"Remoting.createType()</literal> for everything else) to create a new "
+"instance of the object."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:180
+#, no-c-format
+msgid ""
+"It is important to note that only objects that are created by either of "
+"these two methods should be used as parameter values, where the parameter is "
+"not one of the other valid types mentioned anywhere else in this section. In "
+"some situations you may have a component method where the exact parameter "
+"type cannot be determined, such as:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:183
+#, no-c-format
+msgid ""
+"@Name(\"myAction\")\n"
+"  public class MyAction implements MyActionLocal {\n"
+"    public void doSomethingWithObject(Object obj) {\n"
+"      // code\n"
+"    }\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:184
+#, no-c-format
+msgid ""
+"In this case you might want to pass in an instance of your "
+"<literal>myWidget</literal> component, however the interface for "
+"<literal>myAction</literal> won't include <literal>myWidget</literal> as it "
+"is not directly referenced by any of its methods. To get around this, "
+"<literal>MyWidget</literal> needs to be explicitly imported:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:187
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?myAction&amp;myWidget\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:188
+#, no-c-format
+msgid ""
+"This will then allow a <literal>myWidget</literal> object to be created with "
+"<literal>Seam.Component.newInstance(\"myWidget\")</literal>, which can then "
+"be passed to <literal>myAction.doSomethingWithObject()</literal>."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:191
+#, no-c-format
+msgid "Dates and Times"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:192
+#, no-c-format
+msgid ""
+"Date values are serialized into a String representation that is accurate to "
+"the millisecond. On the client side, use a Javascript Date object to work "
+"with date values. On the server side, use any <literal>java.util.Date</"
+"literal> (or descendent, such as <literal>java.sql.Date</literal> or "
+"<literal>java.sql.Timestamp</literal> class."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:195
+#, no-c-format
+msgid "Enums"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:196
+#, no-c-format
+msgid ""
+"On the client side, enums are treated the same as Strings. When setting the "
+"value for an enum parameter, simply use the String representation of the "
+"enum. Take the following component as an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:199
+#, no-c-format
+msgid ""
+"@Name(\"paintAction\")\n"
+"  public class paintAction implements paintLocal {\n"
+"    public enum Color {red, green, blue, yellow, orange, purple};\n"
+"\n"
+"    public void paint(Color color) {\n"
+"      // code\n"
+"    }    \n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:200
+#, no-c-format
+msgid ""
+"To call the <literal>paint()</literal> method with the color <literal>red</"
+"literal>, pass the parameter value as a String literal:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:203
+#, no-c-format
+msgid "Seam.Component.getInstance(\"paintAction\").paint(\"red\");"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:204
+#, no-c-format
+msgid ""
+"The inverse is also true - that is, if a component method returns an enum "
+"parameter (or contains an enum field anywhere in the returned object graph) "
+"then on the client-side it will be represented as a String."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:207
+#, no-c-format
+msgid "Collections"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:208
+#, no-c-format
+msgid "Bags"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:209
+#, no-c-format
+msgid ""
+"Bags cover all collection types including arrays, collections, lists, sets, "
+"(but excluding Maps - see the next section for those), and are implemented "
+"client-side as a Javascript array. When calling a component method that "
+"accepts one of these types as a parameter, your parameter should be a "
+"Javascript array. If a component method returns one of these types, then the "
+"return value will also be a Javascript array. The remoting framework is "
+"clever enough on the server side to convert the bag to an appropriate type "
+"for the component method call."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:212
+#, no-c-format
+msgid "Maps"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:213
+#, no-c-format
+msgid ""
+"As there is no native support for Maps within Javascript, a simple Map "
+"implementation is provided with the Seam Remoting framework. To create a Map "
+"which can be used as a parameter to a remote call, create a new "
+"<literal>Seam.Remoting.Map</literal> object:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:216
+#, no-c-format
+msgid "var map = new Seam.Remoting.Map();"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:217
+#, no-c-format
+msgid ""
+"This Javascript implementation provides basic methods for working with Maps: "
+"<literal>size()</literal>, <literal>isEmpty()</literal>, <literal>keySet()</"
+"literal>, <literal>values()</literal>, <literal>get(key)</literal>, "
+"<literal>put(key, value)</literal>, <literal>remove(key)</literal> and "
+"<literal>contains(key)</literal>. Each of these methods are equivalent to "
+"their Java counterpart. Where the method returns a collection, such as "
+"<literal>keySet()</literal> and <literal>values()</literal>, a Javascript "
+"Array object will be returned that contains the key or value objects "
+"(respectively)."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:220
+#, no-c-format
+msgid "Debugging"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:221
+#, no-c-format
+msgid ""
+"To aid in tracking down bugs, it is possible to enable a debug mode which "
+"will display the contents of all the packets send back and forth between the "
+"client and server in a popup window. To enable debug mode, either execute "
+"the <literal>setDebug()</literal> method in Javascript:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:224
+#, no-c-format
+msgid "Seam.Remoting.setDebug(true);"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:225
+#, no-c-format
+msgid "Or configure it via components.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:228
+#, no-c-format
+msgid "&lt;remoting:remoting debug=\"true\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:229
+#, no-c-format
+msgid ""
+"To turn off debugging, call <literal>setDebug(false)</literal>. If you want "
+"to write your own messages to the debug log, call <literal>Seam.Remoting.log"
+"(message)</literal>."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:233
+#, no-c-format
+msgid "The Loading Message"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:234
+#, no-c-format
+msgid ""
+"The default loading message that appears in the top right corner of the "
+"screen can be modified, its rendering customised or even turned off "
+"completely."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:237
+#, no-c-format
+msgid "Changing the message"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:238
+#, no-c-format
+msgid ""
+"To change the message from the default \"Please Wait...\" to something "
+"different, set the value of <literal>Seam.Remoting.loadingMessage</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:241
+#, no-c-format
+msgid "Seam.Remoting.loadingMessage = \"Loading...\";"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:243
+#, no-c-format
+msgid "Hiding the loading message"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:244
+#, no-c-format
+msgid ""
+"To completely suppress the display of the loading message, override the "
+"implementation of <literal>displayLoadingMessage()</literal> and "
+"<literal>hideLoadingMessage()</literal> with functions that instead do "
+"nothing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:247
+#, no-c-format
+msgid ""
+"// don't display the loading indicator\n"
+"  Seam.Remoting.displayLoadingMessage = function() {};\n"
+"  Seam.Remoting.hideLoadingMessage = function() {};"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:248
+#, no-c-format
+msgid "A Custom Loading Indicator"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:249
+#, no-c-format
+msgid ""
+"It is also possible to override the loading indicator to display an animated "
+"icon, or anything else that you want. To do this override the "
+"<literal>displayLoadingMessage()</literal> and <literal>hideLoadingMessage()"
+"</literal> messages with your own implementation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:252
+#, no-c-format
+msgid ""
+"Seam.Remoting.displayLoadingMessage = function() {\n"
+"    // Write code here to display the indicator\n"
+"  };\n"
+"  \n"
+"  Seam.Remoting.hideLoadingMessage = function() {\n"
+"    // Write code here to hide the indicator\n"
+"  };"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:253
+#, no-c-format
+msgid "Controlling what data is returned"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:254
+#, no-c-format
+msgid ""
+"When a remote method is executed, the result is serialized into an XML "
+"response that is returned to the client. This response is then unmarshaled "
+"by the client into a Javascript object. For complex types (i.e. Javabeans) "
+"that include references to other objects, all of these referenced objects "
+"are also serialized as part of the response. These objects may reference "
+"other objects, which may reference other objects, and so forth. If left "
+"unchecked, this object \"graph\" could potentially be enormous, depending on "
+"what relationships exist between your objects. And as a side issue (besides "
+"the potential verbosity of the response), you might also wish to prevent "
+"sensitive information from being exposed to the client."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:257
+#, no-c-format
+msgid ""
+"Seam Remoting provides a simple means to \"constrain\" the object graph, by "
+"specifying the <literal>exclude</literal> field of the remote method's "
+"<literal>@WebRemote</literal> annotation. This field accepts a String array "
+"containing one or more paths specified using dot notation. When invoking a "
+"remote method, the objects in the result's object graph that match these "
+"paths are excluded from the serialized result packet."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:260
+#, no-c-format
+msgid ""
+"For all our examples, we'll use the following <literal>Widget</literal> "
+"class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:263
+#, no-c-format
+msgid ""
+"@Name(\"widget\")\n"
+"public class Widget\n"
+"{\n"
+"  private String value;\n"
+"  private String secret;\n"
+"  private Widget child;\n"
+"  private Map&lt;String,Widget&gt; widgetMap;\n"
+"  private List&lt;Widget&gt; widgetList;\n"
+"  \n"
+"  // getters and setters for all fields\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:264
+#, no-c-format
+msgid "Constraining normal fields"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:265
+#, no-c-format
+msgid ""
+"If your remote method returns an instance of <literal>Widget</literal>, but "
+"you don't want to expose the <literal>secret</literal> field because it "
+"contains sensitive information, you would constrain it like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:268
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:269
+#, no-c-format
+msgid ""
+"The value \"secret\" refers to the <literal>secret</literal> field of the "
+"returned object. Now, suppose that we don't care about exposing this "
+"particular field to the client. Instead, notice that the <literal>Widget</"
+"literal> value that is returned has a field <literal>child</literal> that is "
+"also a <literal>Widget</literal>. What if we want to hide the "
+"<literal>child</literal>'s <literal>secret</literal> value instead? We can "
+"do this by using dot notation to specify this field's path within the "
+"result's object graph:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:272
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"child.secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:273
+#, no-c-format
+msgid "Constraining Maps and Collections"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:274
+#, no-c-format
+msgid ""
+"The other place that objects can exist within an object graph are within a "
+"<literal>Map</literal> or some kind of collection (<literal>List</literal>, "
+"<literal>Set</literal>, <literal>Array</literal>, etc). Collections are "
+"easy, and are treated like any other field. For example, if our "
+"<literal>Widget</literal> contained a list of other <literal>Widget</"
+"literal>s in its <literal>widgetList</literal> field, to constrain the "
+"<literal>secret</literal> field of the <literal>Widget</literal>s in this "
+"list the annotation would look like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:277
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetList.secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:278
+#, no-c-format
+msgid ""
+"To constrain a <literal>Map</literal>'s key or value, the notation is "
+"slightly different. Appending <literal>[key]</literal> after the "
+"<literal>Map</literal>'s field name will constrain the <literal>Map</"
+"literal>'s key object values, while <literal>[value]</literal> will "
+"constrain the value object values. The following example demonstrates how "
+"the values of the <literal>widgetMap</literal> field have their "
+"<literal>secret</literal> field constrained:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:281
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetMap[value].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:282
+#, no-c-format
+msgid "Constraining objects of a specific type"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:283
+#, no-c-format
+msgid ""
+"There is one last notation that can be used to constrain the fields of a "
+"type of object no matter where in the result's object graph it appears. This "
+"notation uses either the name of the component (if the object is a Seam "
+"component) or the fully qualified class name (only if the object is not a "
+"Seam component) and is expressed using square brackets:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:286
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"[widget].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:287
+#, no-c-format
+msgid "Combining Constraints"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:288
+#, no-c-format
+msgid ""
+"Constraints can also be combined, to filter objects from multiple paths "
+"within the object graph:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:291
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetList.secret\", \"widgetMap[value].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:292
+#, no-c-format
+msgid "JMS Messaging"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:293
+#, no-c-format
+msgid ""
+"Seam Remoting provides experimental support for JMS Messaging. This section "
+"describes the JMS support that is currently implemented, but please note "
+"that this may change in the future. It is currently not recommended that "
+"this feature is used within a production environment."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:297
+#, no-c-format
+msgid ""
+"Before you can subscribe to a JMS topic, you must first configure a list of "
+"the topics that can be subscribed to by Seam Remoting. List the topics under "
+"<literal>org.jboss.seam.remoting.messaging.subscriptionRegistry."
+"allowedTopics</literal> in <literal>seam.properties</literal>, <literal>web."
+"xml</literal> or <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:300 Remoting.xml:333
+#, no-c-format
+msgid "&lt;remoting:remoting poll-timeout=\"5\" poll-interval=\"1\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:301
+#, no-c-format
+msgid "Subscribing to a JMS Topic"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:302
+#, no-c-format
+msgid "The following example demonstrates how to subscribe to a JMS Topic:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:305
+#, no-c-format
+msgid ""
+"function subscriptionCallback(message)\n"
+"  {\n"
+"    if (message instanceof Seam.Remoting.TextMessage)\n"
+"      alert(\"Received message: \" + message.getText());\n"
+"  }        \n"
+"        \n"
+"  Seam.Remoting.subscribe(\"topicName\", subscriptionCallback);"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:306
+#, no-c-format
+msgid ""
+"The <literal>Seam.Remoting.subscribe()</literal> method accepts two "
+"parameters, the first being the name of the JMS Topic to subscribe to, the "
+"second being the callback function to invoke when a message is received."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:309
+#, no-c-format
+msgid ""
+"There are two types of messages supported, Text messages and Object "
+"messages. If you need to test for the type of message that is passed to your "
+"callback function you can use the <literal>instanceof</literal> operator to "
+"test whether the message is a <literal>Seam.Remoting.TextMessage</literal> "
+"or <literal>Seam.Remoting.ObjectMessage</literal>. A <literal>TextMessage</"
+"literal> contains the text value in its <literal>text</literal> field (or "
+"alternatively call <literal>getText()</literal> on it), while an "
+"<literal>ObjectMessage</literal> contains its object value in its "
+"<literal>object</literal> field (or call its <literal>getObject()</literal> "
+"method)."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:312
+#, no-c-format
+msgid "Unsubscribing from a Topic"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:313
+#, no-c-format
+msgid ""
+"To unsubscribe from a topic, call <literal>Seam.Remoting.unsubscribe()</"
+"literal> and pass in the topic name:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:316
+#, no-c-format
+msgid "Seam.Remoting.unsubscribe(\"topicName\");"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:317
+#, no-c-format
+msgid "Tuning the Polling Process"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:318
+#, no-c-format
+msgid ""
+"There are two parameters which you can modify to control how polling occurs. "
+"The first one is <literal>Seam.Remoting.pollInterval</literal>, which "
+"controls how long to wait between subsequent polls for new messages. This "
+"parameter is expressed in seconds, and its default setting is 10."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:321
+#, no-c-format
+msgid ""
+"The second parameter is <literal>Seam.Remoting.pollTimeout</literal>, and is "
+"also expressed as seconds. It controls how long a request to the server "
+"should wait for a new message before timing out and sending an empty "
+"response. Its default is 0 seconds, which means that when the server is "
+"polled, if there are no messages ready for delivery then an empty response "
+"will be immediately returned."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:324
+#, no-c-format
+msgid ""
+"Caution should be used when setting a high <literal>pollTimeout</literal> "
+"value; each request that has to wait for a message means that a server "
+"thread is tied up until a message is received, or until the request times "
+"out. If many such requests are being served simultaneously, it could mean a "
+"large number of threads become tied up because of this reason."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:327
+#, no-c-format
+msgid ""
+"It is recommended that you set these options via components.xml, however "
+"they can be overridden via Javascript if desired. The following example "
+"demonstrates how to configure the polling to occur much more aggressively. "
+"You should set these parameters to suitable values for your application:"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:330
+#, no-c-format
+msgid "Via components.xml:"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:334
+#, no-c-format
+msgid "Via JavaScript:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:337
+#, no-c-format
+msgid ""
+"// Only wait 1 second between receiving a poll response and sending the next "
+"poll request.\n"
+"  Seam.Remoting.pollInterval = 1;\n"
+"  \n"
+"  // Wait up to 5 seconds on the server for new messages\n"
+"  Seam.Remoting.pollTimeout = 5;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Security.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Security.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Security.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1676 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Security.xml:10
+#, no-c-format
+msgid "Security"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:11
+#, no-c-format
+msgid ""
+"The Seam Security API is an optional Seam feature that provides "
+"authentication and authorization features for securing both domain and page "
+"resources within your Seam project."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:14
+#, no-c-format
+msgid "Overview"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:15
+#, no-c-format
+msgid "Seam Security provides two different modes of operation:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:20
+#, no-c-format
+msgid ""
+"<emphasis>simplified mode</emphasis> - this mode supports authentication "
+"services and simple role-based security checks."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:25
+#, no-c-format
+msgid ""
+"<emphasis>advanced mode</emphasis> - this mode supports all the same "
+"features as the simplified mode, plus it offers rule-based security checks "
+"using JBoss Rules."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:30
+#, no-c-format
+msgid "Which mode is right for my application?"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:31
+#, no-c-format
+msgid ""
+"That all depends on the requirements of your application. If you have "
+"minimal security requirements, for example if you only wish to restrict "
+"certain pages and actions to users who are logged in, or who belong to a "
+"certain role, then the simplified mode will probably be sufficient. The "
+"advantages of this is a more simplified configuration, significantly less "
+"libraries to include, and a smaller memory footprint."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:34
+#, no-c-format
+msgid ""
+"If on the other hand, your application requires security checks based on "
+"contextual state or complex business rules, then you will require the "
+"features provided by the advanced mode."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:37
+#, no-c-format
+msgid "Requirements"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:38
+#, no-c-format
+msgid ""
+"If using the advanced mode features of Seam Security, the following jar "
+"files are required to be configured as modules in <literal>application.xml</"
+"literal>. If you are using Seam Security in simplified mode, these are "
+"<emphasis>not</emphasis> required:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:43
+#, no-c-format
+msgid "drools-compiler-3.0.5.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:48
+#, no-c-format
+msgid "drools-core-3.0.5.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:53
+#, no-c-format
+msgid "commons-jci-core-1.0-406301.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:58
+#, no-c-format
+msgid "commons-jci-janino-2.4.3.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:63
+#, no-c-format
+msgid "commons-lang-2.1.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:68
+#, no-c-format
+msgid "janino-2.4.3.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:73
+#, no-c-format
+msgid "stringtemplate-2.3b6.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:78
+#, no-c-format
+msgid "antlr-2.7.6.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:83
+#, no-c-format
+msgid "antlr-3.0ea8.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:88
+#, no-c-format
+msgid ""
+"For web-based security, <literal>jboss-seam-ui.jar</literal> must also be "
+"included in the application's war file. Also, to make use of the security EL "
+"functions, <literal>SeamFaceletViewHandler</literal> must be used. Configure "
+"it in <literal>faces-config.xml</literal> like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:91
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;view-handler&gt;org.jboss.seam.ui.facelet.SeamFaceletViewHandler&lt;/"
+"view-handler&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:92
+#, no-c-format
+msgid "Authentication"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:93
+#, no-c-format
+msgid ""
+"The authentication features provided by Seam Security are built upon JAAS "
+"(Java Authentication and Authorization Service), and as such provide a "
+"robust and highly configurable API for handling user authentication. "
+"However, for less complex authentication requirements Seam offers a much "
+"more simplified method of authentication that hides the complexity of JAAS."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:96
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:97
+#, no-c-format
+msgid ""
+"The simplified authentication method uses a built-in JAAS login module, "
+"<literal>SeamLoginModule</literal>, which delegates authentication to one of "
+"your own Seam components. This login module is already configured inside "
+"Seam as part of a default application policy and as such does not require "
+"any additional configuration files. It allows you to write an authentication "
+"method using the entity classes that are provided by your own application. "
+"Configuring this simplified form of authentication requires the "
+"<literal>identity</literal> component to be configured in "
+"<literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:100
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:security=\"http://jboss.com/products/seam/security\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core http://jboss.com/"
+"products/seam/core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components http://jboss.com/"
+"products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/drools http://jboss.com/"
+"products/seam/drools-1.2.xsd\"\n"
+"                 http://jboss.com/products/seam/security http://jboss.com/"
+"products/seam/security-1.2.xsd\"&gt;                \n"
+"        \n"
+"    &lt;security:identity authenticate-method=\"#{authenticator.authenticate}"
+"\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:101
+#, no-c-format
+msgid ""
+"If you wish to use the advanced security features such as rule-based "
+"permission checks, all you need to do is include the Drools (JBoss Rules) "
+"jars in your classpath, and add some additional configuration, described "
+"later."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:104
+#, no-c-format
+msgid ""
+"The EL expression <literal>#{authenticator.authenticate}</literal> is a "
+"method binding indicating that the <literal>authenticate</literal> method of "
+"the <literal>authenticator</literal> component will be used to authenticate "
+"the user."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:107
+#, no-c-format
+msgid "Writing an authentication method"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:108
+#, no-c-format
+msgid ""
+"The <literal>authenticate-method</literal> property specified for "
+"<literal>identity</literal> in <literal>components.xml</literal> specifies "
+"which method will be used by <literal>SeamLoginModule</literal> to "
+"authenticate users. This method takes no parameters, and is expected to "
+"return a boolean indicating whether authentication is successful or not. The "
+"user's username and password can be obtained from <literal>Identity.instance"
+"().getUsername()</literal> and <literal>Identity.instance().getPassword()</"
+"literal>, respectively. Any roles that the user is a member of should be "
+"assigned using <literal>Identity.instance().addRole()</literal>. Here's a "
+"complete example of an authentication method inside a JavaBean component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:111
+#, no-c-format
+msgid ""
+"@Name(\"authenticator\")\n"
+"public class Authenticator {\n"
+"   @In EntityManager entityManager;\n"
+"   \n"
+"   public boolean authenticate() {\n"
+"      try\n"
+"      {\n"
+"         User user = (User) entityManager.createQuery(\n"
+"            \"from User where username = :username and password = :password"
+"\")\n"
+"            .setParameter(\"username\", Identity.instance().getUsername())\n"
+"            .setParameter(\"password\", Identity.instance().getPassword())\n"
+"            .getSingleResult();\n"
+"\n"
+"         if (user.getRoles() != null)\n"
+"         {\n"
+"            for (UserRole mr : user.getRoles())\n"
+"               Identity.instance().addRole(mr.getName());\n"
+"         }\n"
+"\n"
+"         return true;\n"
+"      }\n"
+"      catch (NoResultException ex)\n"
+"      {\n"
+"         FacesMessages.instance().add(\"Invalid username/password\");\n"
+"         return false;\n"
+"      }\n"
+"      \n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:112
+#, no-c-format
+msgid ""
+"In the above example, both <literal>User</literal> and <literal>UserRole</"
+"literal> are application-specific entity beans. The <literal>roles</literal> "
+"parameter is populated with the roles that the user is a member of, which "
+"should be added to the <literal>Set</literal> as literal string values, e.g. "
+"\"admin\", \"user\". In this case, if the user record is not found and a "
+"<literal>NoResultException</literal> thrown, the authentication method "
+"returns <literal>false</literal> to indicate the authentication failed."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:115
+#, no-c-format
+msgid "Writing a login form"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:116
+#, no-c-format
+msgid ""
+"The <literal>Identity</literal> component provides both <literal>username</"
+"literal> and <literal>password</literal> properties, catering for the most "
+"common authentication scenario. These properties can be bound directly to "
+"the username and password fields on a login form. Once these properties are "
+"set, calling the <literal>identity.login()</literal> method will "
+"authenticate the user using the provided credentials. Here's an example of a "
+"simple login form:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:119
+#, no-c-format
+msgid ""
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"name\" value=\"Username\"/&gt;\n"
+"    &lt;h:inputText id=\"name\" value=\"#{identity.username}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"password\" value=\"Password\"/&gt;\n"
+"    &lt;h:inputSecret id=\"password\" value=\"#{identity.password}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;div&gt;\n"
+"    &lt;h:commandButton value=\"Login\" action=\"#{identity.login}\"/&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:120
+#, no-c-format
+msgid ""
+"Similarly, logging out the user is done by calling <literal>#{identity."
+"logout}</literal>. Calling this action will clear the security state of the "
+"currently authenticated user."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:123
+#, no-c-format
+msgid "Simplified Configuration - Summary"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:124
+#, no-c-format
+msgid ""
+"So to sum up, there are the three easy steps to configure authentication:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:129
+#, no-c-format
+msgid ""
+"Configure an authentication method in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:134
+#, no-c-format
+msgid "Write an authentication method."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:139
+#, no-c-format
+msgid "Write a login form so that the user can authenticate."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:144
+#, no-c-format
+msgid "Handling Security Exceptions"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:145
+#, no-c-format
+msgid ""
+"To prevent users from receiving the default error page in response to a "
+"security error, it's recommended that <literal>pages.xml</literal> is "
+"configured to redirect security errors to a more \"pretty\" page. The two "
+"main types of exceptions thrown by the security API are:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:150
+#, no-c-format
+msgid ""
+"<literal>NotLoggedInException</literal> - This exception is thrown if the "
+"user attempts to access a restricted action or page when they are not logged "
+"in."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:155
+#, no-c-format
+msgid ""
+"<literal>AuthorizationException</literal> - This exception is only thrown if "
+"the user is already logged in, and they have attempted to access a "
+"restricted action or page for which they do not have the necessary "
+"privileges."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:160
+#, no-c-format
+msgid ""
+"In the case of a <literal>NotLoggedInException</literal>, it is recommended "
+"that the user is redirected to either a login or registration page so that "
+"they can log in. For an <literal>AuthorizationException</literal>, it may be "
+"useful to redirect the user to an error page. Here's an example of a "
+"<literal>pages.xml</literal> file that redirects both of these security "
+"exceptions:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:163
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"\n"
+"    ...\n"
+"    \n"
+"    &lt;exception class=\"org.jboss.seam.security.NotLoggedInException"
+"\"&gt;\n"
+"        &lt;redirect view-id=\"/login.xhtml\"&gt;\n"
+"            &lt;message&gt;You must be logged in to perform this action&lt;/"
+"message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"    \n"
+"    &lt;exception class=\"org.jboss.seam.security.AuthorizationException"
+"\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"        &lt;redirect view-id=\"/security_error.xhtml\"&gt;\n"
+"            &lt;message&gt;\n"
+"                You do not have the necessary security privileges to perform "
+"this action.\n"
+"            &lt;/message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"  \n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:164
+#, no-c-format
+msgid ""
+"Most web applications require even more sophisticated handling of login "
+"redirection, so Seam includes some special functionality for handling this "
+"problem."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:167
+#, no-c-format
+msgid "Login Redirection"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:168
+#, no-c-format
+msgid ""
+"You can ask Seam to redirect the user to a login screen when an "
+"unauthenticated user tries to access a particular view (or wildcarded view "
+"id) as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:171
+#, no-c-format
+msgid ""
+"&lt;pages login-view-id=\"/login.xhtml\"&gt;\n"
+"\n"
+"    &lt;page view-id=\"/members/*\" login-required=\"true\"/&gt;\n"
+"    \n"
+"    ...\n"
+"    \n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:172
+#, no-c-format
+msgid ""
+"(This is less of a blunt instrument than the exception handler shown above, "
+"but should probably be used in conjunction with it.)"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:175
+#, no-c-format
+msgid ""
+"After the user logs in, we want to automatically send them back where they "
+"came from, so they can retry the action that required logging in. If you add "
+"the following event listeners to <literal>components.xml</literal>, attempts "
+"to access a restricted view while not logged in will be remembered, so that "
+"upon the user successfully logging in they will be redirected to the "
+"originally requested view, with any page parameters that existed in the "
+"original request."
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:178
+#, no-c-format
+msgid ""
+"&lt;event type=\"org.jboss.seam.notLoggedIn\"&gt;\n"
+"    &lt;action expression=\"#{redirect.captureCurrentView}\"/&gt;\n"
+"&lt;/event&gt;\n"
+"    \n"
+"&lt;event type=\"org.jboss.seam.postAuthenticate\"&gt;\n"
+"    &lt;action expression=\"#{redirect.returnToCapturedView}\"/&gt;\n"
+"&lt;/event&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:179
+#, no-c-format
+msgid ""
+"Note that login redirection is implemented as a conversation-scoped "
+"mechanism, so don't end the conversation in your <literal>authenticate()</"
+"literal> method."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:182
+#, no-c-format
+msgid "Advanced Authentication Features"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:183
+#, no-c-format
+msgid ""
+"This section explores some of the advanced features provided by the security "
+"API for addressing more complex security requirements."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:186
+#, no-c-format
+msgid "Using your container's JAAS configuration"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:187
+#, no-c-format
+msgid ""
+"If you would rather not use the simplified JAAS configuration provided by "
+"the Seam Security API, you may instead delegate to the default system JAAS "
+"configuration by providing a <literal>jaasConfigName</literal> property in "
+"<literal>components.xml</literal>. For example, if you are using JBoss AS "
+"and wish to use the <literal>other</literal> policy (which uses the "
+"<literal>UsersRolesLoginModule</literal> login module provided by JBoss AS), "
+"then the entry in <literal>components.xml</literal> would look like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:190
+#, no-c-format
+msgid ""
+"&lt;security:identity authenticate-method=\"#{authenticator.authenticate}"
+"\" \n"
+"                      jaas-config-name=\"other\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:191
+#, no-c-format
+msgid "Authorization"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:192
+#, no-c-format
+msgid ""
+"There are a number of authorization features provided by the Seam Security "
+"API for securing access to components, component methods, and pages. This "
+"section describes each of these. An important thing to note is that if you "
+"wish to use any of the advanced features (such as rule-based permissions) "
+"then your <literal>components.xml</literal> must be configured to support "
+"this - see the Configuration section above."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:195
+#, no-c-format
+msgid "Core concepts"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:196
+#, no-c-format
+msgid ""
+"Each of the authorization mechanisms provided by the Seam Security API are "
+"built upon the concept of a user being granted roles and/or permissions. A "
+"role is a <emphasis>group</emphasis>, or <emphasis>type</emphasis>, of user "
+"that may have been granted certain privileges for performing one or more "
+"specific actions within an application. A permission on the other hand is a "
+"privilege (sometimes once-off) for performing a single, specific action. It "
+"is entirely possible to build an application using nothing but permissions, "
+"however roles offer a higher level of convenience when granting privileges "
+"to groups of users."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:199
+#, no-c-format
+msgid ""
+"Roles are simple, consisting of only a name such as \"admin\", \"user\", "
+"\"customer\", etc. Permissions consist of both a name and an action, and are "
+"represented within this documentation in the form <literal>name:action</"
+"literal>, for example <literal>customer:delete</literal>, or "
+"<literal>customer:insert</literal>."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:202
+#, no-c-format
+msgid "Securing components"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:203
+#, no-c-format
+msgid ""
+"Let's start by examining the simplest form of authorization, component "
+"security, starting with the <literal>@Restrict</literal> annotation."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:206
+#, no-c-format
+msgid "The @Restrict annotation"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:207
+#, no-c-format
+msgid ""
+"Seam components may be secured either at the method or the class level, "
+"using the <literal>@Restrict</literal> annotation. If both a method and it's "
+"declaring class are annotated with <literal>@Restrict</literal>, the method "
+"restriction will take precedence (and the class restriction will not apply). "
+"If a method invocation fails a security check, then an exception will be "
+"thrown as per the contract for <literal>Identity.checkRestriction()</"
+"literal> (see Inline Restrictions). A <literal>@Restrict</literal> on just "
+"the component class itself is equivalent to adding <literal>@Restrict</"
+"literal> to each of its methods."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:210
+#, no-c-format
+msgid ""
+"An empty <literal>@Restrict</literal> implies a permission check of "
+"<literal>componentName:methodName</literal>. Take for example the following "
+"component method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:213
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class AccountAction {\n"
+"    @Restrict public void delete() {\n"
+"      ...\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:214
+#, no-c-format
+msgid ""
+"In this example, the implied permission required to call the <literal>delete"
+"()</literal> method is <literal>account:delete</literal>. The equivalent of "
+"this would be to write <literal>@Restrict(\"#{s:hasPermission"
+"('account','delete',null)}\")</literal>. Now let's look at another example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:217
+#, no-c-format
+msgid ""
+"@Restrict @Name(\"account\")\n"
+"public class AccountAction {\n"
+"    public void insert() {\n"
+"      ...\n"
+"    }\n"
+"    @Restrict(\"#{s:hasRole('admin')}\") \n"
+"    public void delete() {\n"
+"      ...\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:218
+#, no-c-format
+msgid ""
+"This time, the component class itself is annotated with <literal>@Restrict</"
+"literal>. This means that any methods without an overriding "
+"<literal>@Restrict</literal> annotation require an implicit permission "
+"check. In the case of this example, the <literal>insert()</literal> method "
+"requires a permission of <literal>account:insert</literal>, while the "
+"<literal>delete()</literal> method requires that the user is a member of the "
+"<literal>admin</literal> role."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:221
+#, no-c-format
+msgid ""
+"Before we go any further, let's address the <literal>#{s:hasRole()}</"
+"literal> expression seen in the above example. Both <literal>s:hasRole</"
+"literal> and <literal>s:hasPermission</literal> are EL functions, which "
+"delegate to the correspondingly named methods of the <literal>Identity</"
+"literal> class. These functions can be used within any EL expression "
+"throughout the entirety of the security API."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:224
+#, no-c-format
+msgid ""
+"Being an EL expression, the value of the <literal>@Restrict</literal> "
+"annotation may reference any objects that exist within a Seam context. This "
+"is extremely useful when performing permission checks for a specific object "
+"instance. Look at this example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:227
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class AccountAction {\n"
+"    @In Account selectedAccount;\n"
+"    @Restrict(\"#{s:hasPermission('account','modify',selectedAccount)}\")\n"
+"    public void modify() {\n"
+"        selectedAccount.modify();\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:228
+#, no-c-format
+msgid ""
+"The interesting thing to note from this example is the reference to "
+"<literal>selectedAccount</literal> seen within the <literal>hasPermission()</"
+"literal> function call. The value of this variable will be looked up from "
+"within the Seam context, and passed to the <literal>hasPermission()</"
+"literal> method in <literal>Identity</literal>, which in this case can then "
+"determine if the user has the required permission for modifying the "
+"specified <literal>Account</literal> object."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:231
+#, no-c-format
+msgid "Inline restrictions"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:232
+#, no-c-format
+msgid ""
+"Sometimes it might be desirable to perform a security check in code, without "
+"using the <literal>@Restrict</literal> annotation. In this situation, simply "
+"use <literal>Identity.checkRestriction()</literal> to evaluate a security "
+"expression, like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:235
+#, no-c-format
+msgid ""
+"public void deleteCustomer() {\n"
+"    Identity.instance().checkRestriction(\"#{s:hasPermission"
+"('customer','delete',\n"
+"        selectedCustomer)}\");\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:236
+#, no-c-format
+msgid ""
+"If the expression specified doesn't evaluate to <literal>true</literal>, "
+"either"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:241
+#, no-c-format
+msgid ""
+"if the user is not logged in, a <literal>NotLoggedInException</literal> "
+"exception is thrown or"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:246
+#, no-c-format
+msgid ""
+"if the user is logged in, an <literal>AuthorizationException</literal> "
+"exception is thrown."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:251
+#, no-c-format
+msgid ""
+"It is also possible to call the <literal>hasRole()</literal> and "
+"<literal>hasPermission()</literal> methods directly from Java code:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:254
+#, no-c-format
+msgid ""
+"if (!Identity.instance().hasRole(\"admin\"))\n"
+"     throw new AuthorizationException(\"Must be admin to perform this action"
+"\");\n"
+"\n"
+"if (!Identity.instance().hasPermission(\"customer\", \"create\", null))\n"
+"     throw new AuthorizationException(\"You may not create new customers\");"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:255
+#, no-c-format
+msgid "Security in the user interface"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:256
+#, no-c-format
+msgid ""
+"One indication of a well designed user interface is that the user is not "
+"presented with options for which they don't have the necessary privileges to "
+"use. Seam Security allows conditional rendering of either 1) sections of a "
+"page or 2) individual controls, based upon the privileges of the user, using "
+"the very same EL expressions that are used for component security."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:259
+#, no-c-format
+msgid ""
+"Let's take a look at some examples of interface security. First of all, "
+"let's pretend that we have a login form that should only be rendered if the "
+"user is not already logged in. Using the <literal>identity.isLoggedIn()</"
+"literal> property, we can write this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:262
+#, no-c-format
+msgid ""
+"&lt;h:form class=\"loginForm\" rendered=\"#{not identity.loggedIn}\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:263
+#, no-c-format
+msgid ""
+"If the user isn't logged in, then the login form will be rendered - very "
+"straight forward so far. Now let's pretend there is a menu on the page that "
+"contains some actions which should only be accessible to users in the "
+"<literal>manager</literal> role. Here's one way that these could be written:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:266
+#, no-c-format
+msgid ""
+"&lt;h:outputLink action=\"#{reports.listManagerReports}\" rendered=\"#{s:"
+"hasRole('manager')}\"&gt;\n"
+"    Manager Reports\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:267
+#, no-c-format
+msgid ""
+"This is also quite straight forward. If the user is not a member of the "
+"<literal>manager</literal> role, then the outputLink will not be rendered. "
+"The <literal>rendered</literal> attribute can generally be used on the "
+"control itself, or on a surrounding <literal>&lt;s:div&gt;</literal> or "
+"<literal>&lt;s:span&gt;</literal> control."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:270
+#, no-c-format
+msgid ""
+"Now for something more complex. Let's say you have a <literal>h:dataTable</"
+"literal> control on a page listing records for which you may or may not wish "
+"to render action links depending on the user's privileges. The <literal>s:"
+"hasPermission</literal> EL function allows us to pass in an object parameter "
+"which can be used to determine whether the user has the requested permission "
+"for that object or not. Here's how a dataTable with secured links might look:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:273
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{clients}\" var=\"cl\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Name&lt;/f:facet&gt;\n"
+"        #{cl.name}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;City&lt;/f:facet&gt;\n"
+"        #{cl.city}\n"
+"    &lt;/h:column&gt;   \n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"        &lt;s:link value=\"Modify Client\" action=\"#{clientAction.modify}"
+"\"\n"
+"                rendered=\"#{s:hasPermission('client','modify',cl)\"/&gt;\n"
+"        &lt;s:link value=\"Delete Client\" action=\"#{clientAction.delete}"
+"\"\n"
+"                rendered=\"#{s:hasPermission('client','delete',cl)\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:274
+#, no-c-format
+msgid "Securing pages"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:275
+#, no-c-format
+msgid ""
+"Page security requires that the application is using a <literal>pages.xml</"
+"literal> file, however is extremely simple to configure. Simply include a "
+"<literal>&lt;restrict/&gt;</literal> element within the <literal>page</"
+"literal> elements that you wish to secure. By default, if a value is not "
+"provided for the <literal>restrict</literal> element, an implied permission "
+"of <literal>{viewId}:render</literal> will be checked for whenever accessing "
+"that page. Otherwise the value will be evaluated as a standard security "
+"expression. Here's a couple of examples:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:278
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/settings.xhtml\"&gt;\n"
+"    &lt;restrict/&gt;\n"
+"&lt;/page&gt;\n"
+"        \n"
+"&lt;page view-id=\"/reports.xhtml\"&gt;    \n"
+"    &lt;restrict&gt;#{s:hasRole('admin')}&lt;/restrict&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:279
+#, no-c-format
+msgid ""
+"In the above example, the first page has an implied permission restriction "
+"of <literal>/settings.xhtml:render</literal>, while the second one checks "
+"that the user is a member of the <literal>admin</literal> role."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:282
+#, no-c-format
+msgid "Securing Entities"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:283
+#, no-c-format
+msgid ""
+"Seam security also makes it possible to apply security restrictions to read, "
+"insert, update and delete actions for entities."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:286
+#, no-c-format
+msgid ""
+"To secure all actions for an entity class, add a <literal>@Restrict</"
+"literal> annotation on the class itself:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:289
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"customer\")\n"
+"@Restrict\n"
+"public class Customer {\n"
+"  ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:290
+#, no-c-format
+msgid ""
+"If no expression is specified in the <literal>@Restrict</literal> "
+"annotation, the default security check that is performed is a permission "
+"check of <literal>entityName:action</literal>, where <literal>entityName</"
+"literal> is the name of the entity (or the class name if no @Name is "
+"specified), and the <literal>action</literal> is either <literal>read</"
+"literal>, <literal>insert</literal>, <literal>update</literal> or "
+"<literal>delete</literal>."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:293
+#, no-c-format
+msgid ""
+"It is also possible to only restrict certain actions, by placing a "
+"<literal>@Restrict</literal> annotation on the relevent entity lifecycle "
+"method (annotated as follows):"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:298
+#, no-c-format
+msgid ""
+"<literal>@PostLoad</literal> - Called after an entity instance is loaded "
+"from the database. Use this method to configure a <literal>read</literal> "
+"permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:303
+#, no-c-format
+msgid ""
+"<literal>@PrePersist</literal> - Called before a new instance of the entity "
+"is inserted. Use this method to configure an <literal>insert</literal> "
+"permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:308
+#, no-c-format
+msgid ""
+"<literal>@PreUpdate</literal> - Called before an entity is updated. Use this "
+"method to configure an <literal>update</literal> permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:313
+#, no-c-format
+msgid ""
+"<literal>@PreRemove</literal> - Called before an entity is deleted. Use this "
+"method to configure a <literal>delete</literal> permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:318
+#, no-c-format
+msgid ""
+"Here's an example of how an entity would be configured to perform a security "
+"check for any <literal>insert</literal> operations. Please note that the "
+"method is not required to do anything, the only important thing in regard to "
+"security is how it is annotated:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:321
+#, no-c-format
+msgid ""
+"@PrePersist @Restrict\n"
+"  public void prePersist() {}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:322
+#, no-c-format
+msgid ""
+"And here's an example of an entity permission rule that checks if the "
+"authenticated user is allowed to create a new blog entry (from the seamspace "
+"example):"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:325
+#, no-c-format
+msgid ""
+"rule InsertMemberBlog\n"
+"  no-loop\n"
+"  activation-group \"permissions\"\n"
+"when\n"
+"  c: PermissionCheck(name == \"memberBlog\", action == \"insert\", granted "
+"== false)\n"
+"  Principal(nm : name)\n"
+"  MemberBlog(mbr : member -&gt; (mbr.getUsername().equals(nm)))\n"
+"then\n"
+"  c.grant();\n"
+"  modify(c);\n"
+"end;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:326
+#, no-c-format
+msgid ""
+"Finally, we need to install a listener class that integrates Seam security "
+"with your JPA provider."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:329
+#, no-c-format
+msgid "Entity security with JPA"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:330
+#, no-c-format
+msgid ""
+"Security checks for EJB3 entity beans are performed with an "
+"<literal>EntityListener</literal>. You can install this listener by using "
+"the following <literal>META-INF/orm.xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:333
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;entity-mappings xmlns=\"http://java.sun.com/xml/ns/persistence/orm\"\n"
+"                 xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"                 xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence/"
+"orm \n"
+"                 http://java.sun.com/xml/ns/persistence/orm_1_0.xsd\"\n"
+"                 version=\"1.0\"&gt;\n"
+"                 \n"
+"    &lt;persistence-unit-metadata&gt;\n"
+"        &lt;persistence-unit-defaults&gt;\n"
+"            &lt;entity-listeners&gt;\n"
+"                &lt;entity-listener class=\"org.jboss.seam.security."
+"EntitySecurityListener\"/&gt;\n"
+"            &lt;/entity-listeners&gt;\n"
+"        &lt;/persistence-unit-defaults&gt;\n"
+"    &lt;/persistence-unit-metadata&gt;\n"
+"    \n"
+"&lt;/entity-mappings&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:334
+#, no-c-format
+msgid "Entity security with Hibernate"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:335
+#, no-c-format
+msgid ""
+"If you are using a Hibernate <literal>SessionFactory</literal> configured "
+"via Seam, you don't need to do anything special to use entity security."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:338
+#, no-c-format
+msgid "Writing Security Rules"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:339
+#, no-c-format
+msgid ""
+"Up to this point there has been a lot of mention of permissions, but no "
+"information about how permissions are actually defined or granted. This "
+"section completes the picture, by explaining how permission checks are "
+"processed, and how to implement permission checks for a Seam application."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:342
+#, no-c-format
+msgid "Permissions Overview"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:343
+#, no-c-format
+msgid ""
+"So how does the security API know whether a user has the <literal>customer:"
+"modify</literal> permission for a specific customer? Seam Security provides "
+"quite a novel method for determining user permissions, based on JBoss Rules. "
+"A couple of the advantages of using a rule engine are 1) a centralized "
+"location for the business logic that is behind each user permission, and 2) "
+"speed - JBoss Rules uses very efficient algorithms for evaluating large "
+"numbers of complex rules involving multiple conditions."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:346
+#, no-c-format
+msgid "Configuring a rules file"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:347
+#, no-c-format
+msgid ""
+"Seam Security expects to find a <literal>RuleBase</literal> component called "
+"<literal>securityRules</literal> which it uses to evaluate permission "
+"checks. This is configured in <literal>components.xml</literal> as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:350
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:security=\"http://jboss.com/products/seam/security\"\n"
+"            xmlns:drools=\"http://jboss.com/products/seam/drools\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                     http://jboss.com/products/seam/core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components  \n"
+"                     http://jboss.com/products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/drools \n"
+"                     http://jboss.com/products/seam/drools-1.2.xsd\"\n"
+"                 http://jboss.com/products/seam/security \n"
+"                     http://jboss.com/products/seam/security-1.2.xsd"
+"\"&gt;                 \n"
+"        \n"
+"   &lt;drools:rule-base name=\"securityRules\"&gt;\n"
+"       &lt;drools:rule-files&gt;\n"
+"           &lt;value&gt;/META-INF/security.drl&lt;/value&gt;\n"
+"       &lt;/drools:rule-files&gt;\n"
+"   &lt;/drools:rule-base&gt;    \n"
+"   \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:351
+#, no-c-format
+msgid ""
+"Once the <literal>RuleBase</literal> component is configured, it's time to "
+"write the security rules."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:354
+#, no-c-format
+msgid "Creating a security rules file"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:355
+#, no-c-format
+msgid ""
+"For this step you need to create a file called <literal>security.drl</"
+"literal> in the <literal>/META-INF</literal> directory of your application's "
+"jar file. In actual fact this file can be called anything you want, and "
+"exist in any location as long as it is configured appropriately in "
+"<literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:358
+#, no-c-format
+msgid ""
+"So what should the security rules file contain? At this stage it might be a "
+"good idea to at least skim through the JBoss Rules documentation, however to "
+"get started here's an extremely simple example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:361
+#, no-c-format
+msgid ""
+"package MyApplicationPermissions;\n"
+"\n"
+"import org.jboss.seam.security.PermissionCheck;\n"
+"import org.jboss.seam.security.Role;\n"
+"\n"
+"rule CanUserDeleteCustomers\n"
+"when\n"
+"  c: PermissionCheck(name == \"customer\", action == \"delete\")\n"
+"  Role(name == \"admin\")\n"
+"then\n"
+"  c.grant();\n"
+"end;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:362
+#, no-c-format
+msgid ""
+"Let's break this down. The first thing we see is the package declaration. A "
+"package in JBoss Rules is essentially a collection of rules. The package "
+"name can be anything you want - it doesn't relate to anything else outside "
+"the scope of the rule base."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:365
+#, no-c-format
+msgid ""
+"The next thing we can notice is a couple of import statements for the "
+"<literal>PermissionCheck</literal> and <literal>Role</literal> classes. "
+"These imports inform the rules engine that we'll be referencing these "
+"classes within our rules."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:368
+#, no-c-format
+msgid ""
+"Finally we have the code for the rule. Each rule within a package should be "
+"given a unique name (usually describing the purpose of the rule). In this "
+"case our rule is called <literal>CanUserDeleteCustomers</literal> and will "
+"be used to check whether a user is allowed to delete a customer record."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:371
+#, no-c-format
+msgid ""
+"Looking at the body of the rule definition we can notice two distinct "
+"sections. Rules have what is known as a left hand side (LHS) and a right "
+"hand side (RHS). The LHS consists of the conditional part of the rule, i.e. "
+"a list of conditions which must be satisfied for the rule to fire. The LHS "
+"is represented by the <literal>when</literal> section. The RHS is the "
+"consequence, or action section of the rule that will only be fired if all of "
+"the conditions in the LHS are met. The RHS is represented by the "
+"<literal>then</literal> section. The end of the rule is denoted by the "
+"<literal>end;</literal> line."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:374
+#, no-c-format
+msgid ""
+"If we look at the LHS of the rule, we see two conditions listed there. Let's "
+"examine the first condition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:377
+#, no-c-format
+msgid "c: PermissionCheck(name == \"customer\", action == \"delete\")"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:378
+#, no-c-format
+msgid ""
+"In plain english, this condition is stating that there must exist a "
+"<literal>PermissionCheck</literal> object with a <literal>name</literal> "
+"property equal to \"customer\", and an <literal>action</literal> property "
+"equal to \"delete\" within the working memory. What is the working memory? "
+"It is a session-scoped object that contains the contextual information that "
+"is required by the rules engine to make a decision about a permission check. "
+"Each time the <literal>hasPermission()</literal> method is called, a "
+"temporary <literal>PermissionCheck</literal> object, or <emphasis>Fact</"
+"emphasis>, is asserted into the working memory. This "
+"<literal>PermissionCheck</literal> corresponds exactly to the permission "
+"that is being checked, so for example if you call <literal>hasPermission"
+"(\"account\", \"create\", null)</literal> then a <literal>PermissionCheck</"
+"literal> object with a <literal>name</literal> equal to \"account\" and "
+"<literal>action</literal> equal to \"create\" will be asserted into the "
+"working memory for the duration of the permission check."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:381
+#, no-c-format
+msgid ""
+"So what else is in the working memory? Besides the short-lived temporary "
+"facts asserted during a permission check, there are some longer-lived "
+"objects in the working memory that stay there for the entire duration of a "
+"user being authenticated. These include any <literal>java.security."
+"Principal</literal> objects that are created as part of the authentication "
+"process, plus a <literal>org.jboss.seam.security.Role</literal> object for "
+"each of the roles that the user is a member of. It is also possible to "
+"assert additional long-lived facts into the working memory by calling "
+"<literal>Identity.instance().getSecurityContext().assertObject()</literal>, "
+"passing the object as a parameter."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:384
+#, no-c-format
+msgid ""
+"Getting back to our simple example, we can also notice that the first line "
+"of our LHS is prefixed with <literal>c:</literal>. This is a variable "
+"binding, and is used to refer back to the object that is matched by the "
+"condition. Moving onto the second line of our LHS, we see this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:387
+#, no-c-format
+msgid "Role(name == \"admin\")"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:388
+#, no-c-format
+msgid ""
+"This condition simply states that there must be a <literal>Role</literal> "
+"object with a <literal>name</literal> of \"admin\" within the working "
+"memory. As mentioned, user roles are asserted into the working memory as "
+"long-lived facts. So, putting both conditions together, this rule is "
+"essentially saying \"I will fire if you are checking for the "
+"<literal>customer:delete</literal> permission and the user is a member of "
+"the <literal>admin</literal> role\"."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:391
+#, no-c-format
+msgid ""
+"So what is the consequence of the rule firing? Let's take a look at the RHS "
+"of the rule:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:394
+#, no-c-format
+msgid "c.grant()"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:395
+#, no-c-format
+msgid ""
+"The RHS consists of Java code, and in this case is invoking the "
+"<literal>grant()</literal> method of the <literal>c</literal> object, which "
+"as already mentioned is a variable binding for the <literal>PermissionCheck</"
+"literal> object. Besides the <literal>name</literal> and <literal>action</"
+"literal> properties of the <literal>PermissionCheck</literal> object, there "
+"is also a <literal>granted</literal> property which is initially set to "
+"<literal>false</literal>. Calling <literal>grant()</literal> on a "
+"<literal>PermissionCheck</literal> sets the <literal>granted</literal> "
+"property to <literal>true</literal>, which means that the permission check "
+"was successful, allowing the user to carry out whatever action the "
+"permission check was intended for."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:398
+#, no-c-format
+msgid "SSL Security"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:399
+#, no-c-format
+msgid ""
+"Seam includes basic support for serving sensitive pages via the HTTPS "
+"protocol. This is easily configured by specifying a <literal>scheme</"
+"literal> for the page in <literal>pages.xml</literal>. The following example "
+"shows how the view <literal>/login.xhtml</literal> is configured to use "
+"HTTPS:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:402
+#, no-c-format
+msgid "&lt;page view-id=\"/login.xhtml\" scheme=\"https\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:403
+#, no-c-format
+msgid ""
+"This configuration is automatically extended to both <literal>s:link</"
+"literal> and <literal>s:button</literal> JSF controls, which (when "
+"specifying the <literal>view</literal>) will also render the link using the "
+"correct protocol. Based on the previous example, the following link will use "
+"the HTTPS protocol because <literal>/login.xhtml</literal> is configured to "
+"use it:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:406
+#, no-c-format
+msgid "&lt;s:link view=\"/login.xhtml\" value=\"Login\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:407
+#, no-c-format
+msgid ""
+"Browsing directly to a view when using the <emphasis>incorrect</emphasis> "
+"protocol will cause a redirect to the same view using the <emphasis>correct</"
+"emphasis> protocol. For example, browsing to a page that has <literal>scheme="
+"\"https\"</literal> using HTTP will cause a redirect to the same page using "
+"HTTPS."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:410
+#, no-c-format
+msgid ""
+"It is also possible to configure a default <literal>scheme</literal> for all "
+"pages. This is actually quite important, as you might only wish to use HTTPS "
+"for a few pages, and if no default scheme is specified then the default "
+"behavior is to continue using the current scheme. What this means is that "
+"once you enter a page with HTTPS, then HTTPS will continue to be used even "
+"if you navigate away to other non-HTTPS pages (a bad thing!). So it is "
+"strongly recommended to include a default <literal>scheme</literal>, by "
+"configuring it on the default (<literal>\"*\"</literal>) view:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:413
+#, no-c-format
+msgid "&lt;page view-id=\"*\" scheme=\"http\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:414
+#, no-c-format
+msgid ""
+"Of course, if <emphasis>none</emphasis> of the pages in your application use "
+"HTTPS then it is not required to specify a default scheme."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:417
+#, no-c-format
+msgid "Implementing a Captcha Test"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:418
+#, no-c-format
+msgid ""
+"Though strictly not part of the security API, it might be useful in certain "
+"circumstances (such as new user registrations, posting to a public blog or "
+"forum) to implement a Captcha (<emphasis>C</emphasis>ompletely <emphasis>A</"
+"emphasis>utomated <emphasis>P</emphasis>ublic <emphasis>T</emphasis>uring "
+"test to tell <emphasis>C</emphasis>omputers and <emphasis>H</emphasis>umans "
+"<emphasis>A</emphasis>part) to prevent automated bots from interacting with "
+"your application. Seam provides seamless integration with JCaptcha, an "
+"excellent library for generating Captcha challenges. If you wish to use the "
+"captcha feature in your application you need to include the jcaptcha-* jar "
+"file from the Seam lib directory in your project, and register it in "
+"<literal>application.xml</literal> as a java module."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:421
+#, no-c-format
+msgid "Configuring the Captcha Servlet"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:422
+#, no-c-format
+msgid ""
+"To get up and running, it is necessary to configure the Seam Resource "
+"Servlet, which will provide the Captcha challenge images to your pages. This "
+"requires the following entry in <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:425
+#, no-c-format
+msgid ""
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"    \n"
+"&lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:426
+#, no-c-format
+msgid "Adding a Captcha to a page"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:427
+#, no-c-format
+msgid ""
+"Adding a captcha challenge to a page is extremely easy. Seam provides a page-"
+"scoped component, <literal>captcha</literal>, which provides everything that "
+"is required, including built-in captcha validation. Here's an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:430
+#, no-c-format
+msgid ""
+"&lt;div&gt;\n"
+"    &lt;h:graphicImage value=\"/seam/resource/captcha?#{captcha.id}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"  \n"
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"verifyCaptcha\"&gt;Enter the above letters&lt;/h:"
+"outputLabel&gt;\n"
+"    &lt;h:inputText id=\"verifyCaptcha\" value=\"#{captcha.response}\" "
+"required=\"true\"/&gt;\n"
+"    &lt;div class=\"validationError\"&gt;&lt;h:message for=\"verifyCaptcha\"/"
+"&gt;&lt;/div&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:431
+#, no-c-format
+msgid ""
+"That's all there is to it. The <literal>graphicImage</literal> control "
+"displays the Captcha challenge, and the <literal>inputText</literal> "
+"receives the user's response. The response is automatically validated "
+"against the Captcha when the form is submitted."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Spring.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Spring.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Spring.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,416 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Spring.xml:10
+#, no-c-format
+msgid "Spring Framework integration"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:11
+#, no-c-format
+msgid ""
+"The Spring integration module allows easy migration of Spring-based projects "
+"to Seam and allows Spring applications to take advantage of key Seam "
+"features like conversations and Seam's more sophisticated persistence "
+"context management."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:14
+#, no-c-format
+msgid "Seam's support for Spring provides the ability to:"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:19
+#, no-c-format
+msgid "inject Seam component instances into Spring beans"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:24
+#, no-c-format
+msgid "inject Spring beans into Seam components"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:29
+#, no-c-format
+msgid "turn Spring beans into Seam components"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:34
+#, no-c-format
+msgid "allow Spring beans to live in any Seam context"
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:40
+#, no-c-format
+msgid "Injecting Seam components into Spring beans"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:41
+#, no-c-format
+msgid ""
+"Injecting Seam component instances into Spring beans is accomplished using "
+"the <literal>&lt;seam:instance/&gt;</literal> namespace handler. To enable "
+"the Seam namespace handler, the Seam namespace must be added to the Spring "
+"beans definition file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:44
+#, no-c-format
+msgid ""
+"&lt;beans xmlns=\"http://www.springframework.org/schema/beans\"\n"
+"    xmlns:seam=\"http://jboss.com/products/seam/spring\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://www.springframework.org/schema/beans \n"
+"                        http://www.springframework.org/schema/beans/spring-"
+"beans-2.0.xsd\n"
+"                        http://jboss.com/products/seam/spring \n"
+"                        http://jboss.com/products/seam/spring-1.2.xsd\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:45
+#, no-c-format
+msgid "Now any Seam component may be injected into any Spring bean:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:48
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\"&gt;\n"
+"        &lt;seam:instance name=\"someComponent\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:49
+#, no-c-format
+msgid "An EL expression may be used instead of a component name:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:52
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\"&gt;\n"
+"        &lt;seam:instance name=\"#{someExpression}\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:53
+#, no-c-format
+msgid ""
+"Seam component instances may even be made available for injection into "
+"Spring beans by a Spring bean id."
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:56
+#, no-c-format
+msgid ""
+"&lt;seam:instance name=\"someComponent\" id=\"someSeamComponentInstance\"/"
+"&gt;\n"
+"\n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\" ref=\"someSeamComponentInstance"
+"\"&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:57
+#, no-c-format
+msgid "Now for the caveat!"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:60
+#, no-c-format
+msgid ""
+"Seam was designed from the ground up to support a stateful component model "
+"with multiple contexts. Spring was not. Unlike Seam bijection, Spring "
+"injection does not occur at method invocation time. Instead, injection "
+"happens only when the Spring bean is instantiated. So the instance available "
+"when the bean is instantiated will be the same instance that the bean uses "
+"for the entire life of the bean. For example, if a Seam "
+"<literal>CONVERSATION</literal>-scoped component instance is directly "
+"injected into a singleton Spring bean, that singleton will hold a reference "
+"to the same instance long after the conversation is over! We call this "
+"problem <emphasis>scope impedance</emphasis>. Seam bijection ensures that "
+"scope impedance is maintained naturally as an invocation flows through the "
+"system. In Spring, we need to inject a proxy of the Seam component, and "
+"resolve the reference when the proxy is invoked."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:63
+#, no-c-format
+msgid ""
+"The <literal>&lt;seam:instance/&gt;</literal> tag lets us automatically "
+"proxy the Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:66
+#, no-c-format
+msgid ""
+"&lt;seam:instance id=\"seamManagedEM\" name=\"someManagedEMComponent\" proxy="
+"\"true\"/&gt;\n"
+"        \n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\"&gt;\n"
+"    &lt;property name=\"entityManager\" ref=\"seamManagedEM\"&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:67
+#, no-c-format
+msgid ""
+"This example shows one way to use a Seam-managed persistence context from a "
+"Spring bean. (A more robust way to use Seam-managed persistence contexts as "
+"a replacement for the Spring <literal>OpenEntityManagerInView</literal> "
+"filter will be provided in a future release)"
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:73
+#, no-c-format
+msgid "Injecting Spring beans into Seam components"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:74
+#, no-c-format
+msgid ""
+"It is even easier to inject Spring beans into Seam component instances. "
+"Actually, there are two possible approaches:"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:79
+#, no-c-format
+msgid "inject a Spring bean using an EL expression"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:84
+#, no-c-format
+msgid "make the Spring bean a Seam component"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:89
+#, no-c-format
+msgid ""
+"We'll discuss the second option in the next section. The easiest approach is "
+"to access the Spring beans via EL."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:92
+#, no-c-format
+msgid ""
+"The Spring <literal>DelegatingVariableResolver</literal> is an integration "
+"point Spring provides for integrating Spring with JSF. This "
+"<literal>VariableResolver</literal> makes all Spring beans available in EL "
+"by their bean id. You'll need to add the "
+"<literal>DelegatingVariableResolver</literal> to <literal>faces-config.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:95
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;variable-resolver&gt;\n"
+"        org.springframework.web.jsf.DelegatingVariableResolver\n"
+"    &lt;/variable-resolver&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:96
+#, no-c-format
+msgid "Then you can inject Spring beans using <literal>@In</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:99
+#, no-c-format
+msgid ""
+"@In(\"#{bookingService}\")\n"
+"private BookingService bookingService;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:100
+#, no-c-format
+msgid ""
+"The use of Spring beans in EL is not limited to injection. Spring beans may "
+"be used anywhere that EL expressions are used in Seam: process and pageflow "
+"definitions, working memory assertions, etc..."
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:106
+#, no-c-format
+msgid "Making a Spring bean into a Seam component"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:107
+#, no-c-format
+msgid ""
+"The <literal>&lt;seam:component/&gt;</literal> namespace handler can be used "
+"to make any Spring bean a Seam component. Just place the <literal>&lt;seam:"
+"component/&gt;</literal> tag within the declaration of the bean that you "
+"wish to be a Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:110
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;seam:component/&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:111
+#, no-c-format
+msgid ""
+"By default, <literal>&lt;seam:component/&gt;</literal> will create a "
+"<literal>STATELESS</literal> Seam component with class and name provided in "
+"the bean definition. Occasionally, such as when a <literal>FactoryBean</"
+"literal> is used, the class of the Spring bean may not be the class "
+"appearing in the bean definition. In such cases the <literal>beanClass</"
+"literal> should be explicitly specified. A Seam component name may be "
+"explicitly specified in cases where there is potential for a naming conflict."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:114
+#, no-c-format
+msgid ""
+"The <literal>scope</literal> attribute of <literal>&lt;seam:component/&gt;</"
+"literal> may be used if you wish the Spring bean to be managed in a "
+"particular Seam scope. The Spring bean must be scoped to <literal>prototype</"
+"literal> if the Seam scope specified is anything other than "
+"<literal>STATELESS</literal>. Pre-existing Spring beans usually have a "
+"fundamentally stateless character, so this attribute is not usually needed."
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:120
+#, no-c-format
+msgid "Seam-scoped Spring beans"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:121
+#, no-c-format
+msgid ""
+"The Seam integration package also lets you use Seam's contexts as Spring 2.0 "
+"style custom scopes. This lets you declare any Spring bean in any of Seam's "
+"contexts. However, note once again that Spring's component model was never "
+"architected to support statefulness, so please use this feature with great "
+"care. In particular, clustering of session or conversation scoped Spring "
+"beans is deeply problematic, and care must be taken when injecting a bean or "
+"component from a wider scope into a bean of a narrower scope."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:124
+#, no-c-format
+msgid ""
+"By specifying <literal>&lt;seam:configure-scopes/&gt;</literal> once in a "
+"Spring bean factory configuration, all of the Seam scopes will be available "
+"to Spring beans as custom scopes. To associate a Spring bean with a "
+"particular Seam scope, specify the Seam scope in the <literal>scope</"
+"literal> attribute of the bean definition."
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:127
+#, no-c-format
+msgid ""
+"&lt;!-- Only needs to be specified once per bean factory--&gt;\n"
+"&lt;seam:configure-scopes/&gt;\n"
+"\n"
+"...\n"
+"\n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope=\"seam."
+"CONVERSATION\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:128
+#, no-c-format
+msgid ""
+"The prefix of the scope name may be changed by specifying the "
+"<literal>prefix</literal> attribute in the <literal>configure-scopes</"
+"literal> definition. (The default prefix is <literal>seam.</literal>)"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:131
+#, no-c-format
+msgid ""
+"Seam-scoped Spring beans defined this way can be injected into other Spring "
+"beans without the use of <literal>&lt;seam:instance/&gt;</literal>. However, "
+"care must be taken to ensure scope impedance is maintained. The normal "
+"approach used in Spring is to specify <literal>&lt;aop:scoped-proxy/&gt;</"
+"literal> in the bean definition. However, Seam-scoped Spring beans are "
+"<emphasis>not</emphasis> compatible with <literal>&lt;aop:scoped-proxy/&gt;</"
+"literal>. So if you need to inject a Seam-scoped Spring bean into a "
+"singleton, <literal>&lt;seam:instance/&gt;</literal> must be used:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:134
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope=\"seam."
+"CONVERSATION\"/&gt;\n"
+"\n"
+"...\n"
+"\n"
+"&lt;bean id=\"someSingleton\"&gt;\n"
+"    &lt;property name=\"someSeamScopedSpringBean\"&gt;\n"
+"        &lt;seam:instance name=\"someSpringBean\" proxy=\"true\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Testing.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Testing.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Testing.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,342 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Testing.xml:10
+#, no-c-format
+msgid "Testing Seam applications"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:11
+#, no-c-format
+msgid ""
+"Most Seam applications will need at least two kinds of automated tests: "
+"<emphasis>unit tests</emphasis>, which test a particular Seam component in "
+"isolation, and scripted <emphasis>integration tests</emphasis> which "
+"exercise all Java layers of the application (that is, everything except the "
+"view pages)."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:14
+#, no-c-format
+msgid "Both kinds of tests are very easy to write."
+msgstr ""
+
+#. Tag: title
+#: Testing.xml:18
+#, no-c-format
+msgid "Unit testing Seam components"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:19
+#, no-c-format
+msgid ""
+"All Seam components are POJOs. This is a great place to start if you want "
+"easy unit testing. And since Seam emphasises the use of bijection for inter-"
+"component interactions and access to contextual objects, it's very easy to "
+"test a Seam component outside of its normal runtime environment."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:22
+#, no-c-format
+msgid "Consider the following Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:25
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Scope(EVENT)\n"
+"@Name(\"register\")\n"
+"public class RegisterAction implements Register\n"
+"{\n"
+"   private User user;\n"
+"   private EntityManager em;\n"
+"\n"
+"   @In\n"
+"   public void setUser(User user) {\n"
+"       this.user = user;\n"
+"   }\n"
+"   \n"
+"   @PersistenceContext\n"
+"   public void setBookingDatabase(EntityManager em) {\n"
+"       this.em = em;\n"
+"   }\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = em.createQuery(\"select username from User where "
+"username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getResultList();\n"
+"      if (existing.size()==0)\n"
+"      {\n"
+"         em.persist(user);\n"
+"         return \"success\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:26
+#, no-c-format
+msgid "We could write a TestNG test for this component as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:29
+#, no-c-format
+msgid ""
+"public class RegisterActionTest\n"
+"{\n"
+"\n"
+"    @Test\n"
+"    public testRegisterAction()\n"
+"    {\n"
+"        EntityManager em = getEntityManagerFactory().createEntityManager();\n"
+"        em.getTransaction().begin();\n"
+"        \n"
+"        User gavin = new User();\n"
+"        gavin.setName(\"Gavin King\");\n"
+"        gavin.setUserName(\"1ovthafew\");\n"
+"        gavin.setPassword(\"secret\");\n"
+"        \n"
+"        RegisterAction action = new RegisterAction();\n"
+"        action.setUser(gavin);\n"
+"        action.setBookingDatabase(em);\n"
+"        \n"
+"        assert \"success\".equals( action.register() );\n"
+"        \n"
+"        em.getTransaction().commit();\n"
+"        em.close();\n"
+"    }\n"
+"    \n"
+"    \n"
+"    private EntityManagerFactory emf;\n"
+"    \n"
+"    public EntityManagerFactory getEntityManagerFactory()\n"
+"    {\n"
+"        return emf;\n"
+"    }\n"
+"    \n"
+"    @Configuration(beforeTestClass=true)\n"
+"    public void init() \n"
+"    {\n"
+"        emf = Persistence.createEntityManagerFactory"
+"(\"myResourceLocalEntityManager\");\n"
+"    }\n"
+"    \n"
+"    @Configuration(afterTestClass=true)\n"
+"    public void destroy()\n"
+"    {\n"
+"        emf.close();\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:30
+#, no-c-format
+msgid ""
+"Seam components don't usually depend directly upon container infrastructure, "
+"so most unit testing as as easy as that!"
+msgstr ""
+
+#. Tag: title
+#: Testing.xml:36
+#, no-c-format
+msgid "Integration testing Seam applications"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:37
+#, no-c-format
+msgid ""
+"Integration testing is slightly more difficult. In this case, we can't "
+"eliminate the container infrastructure; indeed, that is part of what is "
+"being tested! At the same time, we don't want to be forced to deploy our "
+"application to an application server to run the automated tests. We need to "
+"be able to reproduce just enough of the container infrastructure inside our "
+"testing environment to be able to exercise the whole application, without "
+"hurting performance too much."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:40
+#, no-c-format
+msgid ""
+"A second problem is emulating user interactions. A third problem is where to "
+"put our assertions. Some test frameworks let us test the whole application "
+"by reproducing user interactions with the web browser. These frameworks have "
+"their place, but they are not appropriate for use at development time."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:43
+#, no-c-format
+msgid ""
+"The approach taken by Seam is to let you write tests that script your "
+"components while running inside a pruned down container environment (Seam, "
+"together with the JBoss Embeddable EJB container). The role of the test "
+"script is basically to reproduce the interaction between the view and the "
+"Seam components. In other words, you get to pretend you are the JSF "
+"implementation!"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:46
+#, no-c-format
+msgid "This approach tests everything except the view."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:49
+#, no-c-format
+msgid "Let's consider a JSP view for the component we unit tested above:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:52
+#, no-c-format
+msgid ""
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Register New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;table border=\"0\"&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Username&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputText value=\"#{user.username}\"/&gt;&lt;/"
+"td&gt;\n"
+"       &lt;/tr&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Real Name&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputText value=\"#{user.name}\"/&gt;&lt;/td&gt;\n"
+"       &lt;/tr&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Password&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputSecret value=\"#{user.password}\"/&gt;&lt;/"
+"td&gt;\n"
+"       &lt;/tr&gt;\n"
+"     &lt;/table&gt;\n"
+"     &lt;h:messages/&gt;\n"
+"     &lt;h:commandButton type=\"submit\" value=\"Register\" action=\"#"
+"{register.register}\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:53
+#, no-c-format
+msgid ""
+"We want to test the registration functionality of our application (the stuff "
+"that happens when the user clicks the Register button). We'll reproduce the "
+"JSF request lifecycle in an automated TestNG test:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:56
+#, no-c-format
+msgid ""
+"public class RegisterTest extends SeamTest\n"
+"{\n"
+"   \n"
+"   @Test\n"
+"   public void testRegister() throws Exception\n"
+"   {\n"
+"            \n"
+"      new FacesRequest() {\n"
+"\n"
+"         @Override\n"
+"         protected void processValidations() throws Exception\n"
+"         {\n"
+"            validateValue(\"#{user.username}\", \"1ovthafew\");\n"
+"            validateValue(\"#{user.name}\", \"Gavin King\");\n"
+"            validateValue(\"#{user.password}\", \"secret\");\n"
+"            assert !isValidationFailure();\n"
+"         }\n"
+"         \n"
+"         @Override\n"
+"         protected void updateModelValues() throws Exception\n"
+"         {\n"
+"            setValue(\"#{user.username}\", \"1ovthafew\");\n"
+"            setValue(\"#{user.name}\", \"Gavin King\");\n"
+"            setValue(\"#{user.password}\", \"secret\");\n"
+"         }\n"
+"\n"
+"         @Override\n"
+"         protected void invokeApplication()\n"
+"         {\n"
+"            assert invokeMethod(\"#{register.register}\").equals(\"success"
+"\");\n"
+"         }\n"
+"\n"
+"         @Override\n"
+"         protected void renderResponse()\n"
+"         {\n"
+"            assert getValue(\"#{user.username}\").equals(\"1ovthafew\");\n"
+"            assert getValue(\"#{user.name}\").equals(\"Gavin King\");\n"
+"            assert getValue(\"#{user.password}\").equals(\"secret\");\n"
+"         }\n"
+"         \n"
+"      }.run();\n"
+"      \n"
+"   }\n"
+"\n"
+"   ...\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:57
+#, no-c-format
+msgid ""
+"Notice that we've extended <literal>SeamTest</literal>, which provides a "
+"Seam environment for our components, and written our test script as an "
+"anonymous class that extends <literal>SeamTest.FacesRequest</literal>, which "
+"provides an emulated JSF request lifecycle. (There is also a "
+"<literal>SeamTest.NonFacesRequest</literal> for testing GET requests.) We've "
+"written our code in methods which are named for the various JSF phases, to "
+"emulate the calls that JSF would make to our components. Then we've thrown "
+"in various assertions."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:60
+#, no-c-format
+msgid ""
+"You'll find plenty of integration tests for the Seam example applications "
+"which demonstrate more complex cases. There are instructions for running "
+"these tests using Ant, or using the TestNG plugin for eclipse:"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Text.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Text.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Text.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,362 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Text.xml:10
+#, no-c-format
+msgid "Seam Text"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:11
+#, no-c-format
+msgid ""
+"Collaboration-oriented websites require a human-friendly markup language for "
+"easy entry of formatted text in forum posts, wiki pages, blogs, comments, "
+"etc. Seam provides the <literal>&lt;s:formattedText/&gt;</literal> control "
+"for display of formatted text that conforms to the <emphasis>Seam Text</"
+"emphasis> language. Seam Text is implemented using an ANTLR-based parser. "
+"You don't need to know anything about ANTLR to use it, however."
+msgstr ""
+
+#. Tag: title
+#: Text.xml:15
+#, no-c-format
+msgid "Basic fomatting"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:16
+#, no-c-format
+msgid "Here is a simple example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:19
+#, no-c-format
+msgid ""
+"It's easy to make *bold text*, /italic text/, |monospace|, \n"
+"~deleted text~, super^scripts^ or _underlines_."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:20
+#, no-c-format
+msgid ""
+"If we display this using <literal>&lt;s:formattedText/&gt;</literal>, we "
+"will get the following HTML produced:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:23
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"It's easy to make &lt;b&gt;bold text&lt;/b&gt;, &lt;i&gt;italic text&lt;/"
+"i&gt;, &lt;tt&gt;monospace&lt;/tt&gt;\n"
+"&lt;del&gt;deleted text&lt;/del&gt;, super&lt;sup&gt;scripts&lt;/sup&gt; or "
+"&lt;u&gt;underlines&lt;/u&gt;.\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:24
+#, no-c-format
+msgid ""
+"We can use a blank line to indicate a new paragraph, and <literal>+</"
+"literal> to indicate a heading:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:27
+#, no-c-format
+msgid ""
+"+This is a big heading\n"
+"You /must/ have some text following a heading!\n"
+" \n"
+"++This is a smaller heading\n"
+"This is the first paragraph. We can split it across multiple \n"
+"lines, but we must end it with a blank line.\n"
+"\n"
+"This is the second paragraph."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:28
+#, no-c-format
+msgid ""
+"(Note that a simple newline is ignored, you need an additional blank line to "
+"wrap text into a new paragraph.) This is the HTML that results:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:31
+#, no-c-format
+msgid ""
+"&lt;h1&gt;This is a big heading&lt;/h1&gt;\n"
+"&lt;p&gt;\n"
+"You &lt;i&gt;must&lt;/i&gt; have some text following a heading!\n"
+"&lt;/p&gt;\n"
+" \n"
+"&lt;h2&gt;This is a smaller heading&lt;/h2&gt;\n"
+"&lt;p&gt;\n"
+"This is the first paragraph. We can split it across multiple \n"
+"lines, but we must end it with a blank line.\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"This is the second paragraph.\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:32
+#, no-c-format
+msgid ""
+"Ordered lists are created using the <literal>#</literal> character. "
+"Unordered lists use the <literal>=</literal> character:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:35
+#, no-c-format
+msgid ""
+"An ordered list:\n"
+"        \n"
+"#first item\n"
+"#second item\n"
+"#and even the /third/ item\n"
+"\n"
+"An unordered list:\n"
+"\n"
+"=an item\n"
+"=another item"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:36
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"An ordered list:\n"
+"&lt;/p&gt;\n"
+" \n"
+"&lt;ol&gt;       \n"
+"&lt;li&gt;first item&lt;/li&gt;\n"
+"&lt;li&gt;second item&lt;/li&gt;\n"
+"&lt;li&gt;and even the &lt;i&gt;third&lt;/i&gt; item&lt;/li&gt;\n"
+"&lt;/ol&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"An unordered list:\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;ul&gt;\n"
+"&lt;li&gt;an item&lt;/li&gt;\n"
+"&lt;li&gt;another item&lt;/li&gt;\n"
+"&lt;/ul&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:37
+#, no-c-format
+msgid "Quoted sections should be surrounded in double quotes:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:40
+#, no-c-format
+msgid ""
+"The other guy said:\n"
+"        \n"
+"\"Nyeah nyeah-nee \n"
+"/nyeah/ nyeah!\"\n"
+"\n"
+"But what do you think he means by \"nyeah-nee\"?"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:41
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"The other guy said:\n"
+"&lt;/p&gt;\n"
+"        \n"
+"&lt;q&gt;Nyeah nyeah-nee\n"
+"&lt;i&gt;nyeah&lt;/i&gt; nyeah!&lt;/q&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"But what do you think he means by &lt;q&gt;nyeah-nee&lt;/q&gt;?\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: title
+#: Text.xml:45
+#, no-c-format
+msgid "Entering code and text with special characters"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:46
+#, no-c-format
+msgid ""
+"Special characters such as <literal>*</literal>, <literal>|</literal> and "
+"<literal>#</literal>, along with HTML characters such as <literal>&lt;</"
+"literal>, <literal>&gt;</literal> and <literal>&amp;</literal> may be "
+"escaped using <literal>&#92;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:49
+#, no-c-format
+msgid ""
+"You can write down equations like 2&#92;*3&#92;=6 and HTML tags\n"
+"like &#92;&lt;body&#92;&gt; using the escape character: &#92;&#92;."
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:50
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"You can write down equations like 2*3=6 and HTML tags\n"
+"like &lt;body&gt; using the escape character: &#92;.\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:51
+#, no-c-format
+msgid "And we can quote code blocks using backticks:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:54
+#, no-c-format
+msgid ""
+"My code doesn't work:\n"
+"\n"
+"`for (int i=0; i&lt;100; i--)\n"
+"{\n"
+"    doSomething();\n"
+"}`\n"
+"\n"
+"Any ideas?"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:55
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"My code doesn't work:\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;pre&gt;for (int i=0; i&lt;100; i--)\n"
+"{\n"
+"    doSomething();\n"
+"}&lt;/pre&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"Any ideas?\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: title
+#: Text.xml:59
+#, no-c-format
+msgid "Links"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:60
+#, no-c-format
+msgid "A link may be created using the following syntax:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:63
+#, no-c-format
+msgid "Go to the Seam website at [=&gt;http://jboss.com/products/seam]."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:64
+#, no-c-format
+msgid "Or, if you want to specify the text of the link:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:67
+#, no-c-format
+msgid "Go to [the Seam website=&gt;http://jboss.com/products/seam]."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:68
+#, no-c-format
+msgid ""
+"For advanced users, it is even possible to customize the Seam Text parser to "
+"understand wikiword links written using this syntax."
+msgstr ""
+
+#. Tag: title
+#: Text.xml:74
+#, no-c-format
+msgid "Entering HTML"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:75
+#, no-c-format
+msgid ""
+"Text may even include a certain limited subset of HTML (don't worry, the "
+"subset is chosen to be safe from cross-site scripting attacks). This is "
+"useful for creating links:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:78
+#, no-c-format
+msgid ""
+"You might want to link to &lt;a href=\"http://jboss.com/products/seam\"&gt;"
+"something\n"
+"cool&lt;/a&gt;, or even include an image: &lt;img src=\"/logo.jpg\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:79
+#, no-c-format
+msgid "And for creating tables:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:82
+#, no-c-format
+msgid ""
+"&lt;table&gt;\n"
+"    &lt;tr&gt;&lt;td&gt;First name:&lt;/td&gt;&lt;td&gt;Gavin&lt;/td&gt;&lt;/"
+"tr&gt;\n"
+"    &lt;tr&gt;&lt;td&gt;Last name:&lt;/td&gt;&lt;td&gt;King&lt;/td&gt;&lt;/"
+"tr&gt;\n"
+"&lt;/table&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:83
+#, no-c-format
+msgid "But you can do much more if you want!"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Tools.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Tools.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Tools.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,769 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Tools.xml:10
+#, no-c-format
+msgid "Seam tools"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:12
+#, no-c-format
+msgid "jBPM designer and viewer"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:13
+#, no-c-format
+msgid ""
+"The jBPM designer and viewer will let you design and view in a nice way your "
+"business processes and your pageflows. This convenient tool is part of JBoss "
+"Eclipse IDE and more details can be found in the jBPM's documentation "
+"(http://docs.jboss.com/jbpm/v3/gpd/)"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:17
+#, no-c-format
+msgid "<title>Business process designer</title>"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:18
+#, no-c-format
+msgid "This tool lets you design your own business process in a graphical way."
+msgstr ""
+
+#. Tag: screeninfo
+#: Tools.xml:21 Tools.xml:37
+#, no-c-format
+msgid "<screeninfo>Business process designer</screeninfo>"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:33
+#, no-c-format
+msgid "Pageflow viewer"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:34
+#, no-c-format
+msgid ""
+"This tool let you design to some extend your pageflows and let you build "
+"graphical views of them so you can easily share and compare ideas on how it "
+"should be designed."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:51
+#, no-c-format
+msgid "CRUD-application generator"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:52
+#, no-c-format
+msgid ""
+"This chapter, will give you a short overview of the support for Seam that is "
+"available in the Hibernate Tools. Hibernate Tools is a set of tools for "
+"working with Hibernate and related technologies, such as JBoss Seam and "
+"EJB3. The tools are available as a set of eclipse plugins and Ant tasks. You "
+"can download the Hibernate Tools from the JBoss Eclipse IDE or Hibernate "
+"Tools websites."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:55
+#, no-c-format
+msgid ""
+"The specific support for Seam that is currently available is generation of a "
+"fully functional Seam based CRUD-application. The CRUD-application can be "
+"generated based on your existing Hibernate mapping files or EJB3 annotated "
+"POJO's or even fully reverse engineered from your existing database schema."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:58
+#, no-c-format
+msgid ""
+"The following sections is focused on the features required to understand for "
+"usage with Seam. The content is derived from the the Hibernate Tools "
+"reference documentation. Thus if you need more detailed information please "
+"refer to the Hibernate Tools documentation."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:62
+#, no-c-format
+msgid "Creating a Hibernate configuration file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:63
+#, no-c-format
+msgid ""
+"To be able to reverse engineer and generate code a hibernate.properties or "
+"hibernate.cfg.xml file is needed. The Hibernate Tools provide a wizard for "
+"generating the hibernate.cfg.xml file if you do not already have such file."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:66
+#, no-c-format
+msgid ""
+"Start the wizard by clicking \"New Wizard\" (Ctrl+N), select the Hibernate/"
+"Hibernate Configuration file (cfg.xml) wizard and press \"Next\". After "
+"selecting the wanted location for the hibernate.cfg.xml file, you will see "
+"the following page:"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:77
+#, no-c-format
+msgid ""
+"Tip: The contents in the combo boxes for the JDBC driver class and JDBC URL "
+"change automatically, depending on the Dialect and actual driver you have "
+"chosen."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:80
+#, no-c-format
+msgid ""
+"Enter your configuration information in this dialog. Details about the "
+"configuration options can be found in Hibernate reference documentation."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:83
+#, no-c-format
+msgid ""
+"Press \"Finish\" to create the configuration file, after optionally creating "
+"a Console onfiguration, the hibernate.cfg.xml will be automatically opened "
+"in an editor. The last option \"Create Console Configuration\" is enabled by "
+"default and when enabled i will automatically use the hibernate.cfg.xml for "
+"the basis of a \"Console Configuration\""
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:89
+#, no-c-format
+msgid "<title>Creating a Hibernate Console configuration</title>"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:90
+#, no-c-format
+msgid ""
+"A Console Configuration describes to the Hibernate plugin which "
+"configuration files should be used to configure hibernate, including which "
+"classpath is needed to load the POJO's, JDBC drivers etc. It is required to "
+"make usage of query prototyping, reverse engineering and code generation. "
+"You can have multiple named console configurations. Normally you would just "
+"need one per project, but more (or less) is definitly possible."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:93
+#, no-c-format
+msgid ""
+"You create a console configuration by running the Console Configuration "
+"wizard, shown in the following screenshot. The same wizard will also be used "
+"if you are coming from the hibernate.cfg.xml wizard and had enabled \"Create "
+"Console Configuration\"."
+msgstr ""
+
+#. Tag: caption
+#: Tools.xml:103
+#, no-c-format
+msgid "<caption>Creating a Hibernate Console configuration</caption>"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:105
+#, no-c-format
+msgid ""
+"The following table describes the relevant settings. The wizard can "
+"automatically detect default values for most of these if you started the "
+"Wizard with the relevant java project selected"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:109
+#, no-c-format
+msgid "Hibernate Console Configuration Parameters"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:117
+#, no-c-format
+msgid "Parameter"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:122 Tools.xml:308 Tools.xml:458
+#, no-c-format
+msgid "Description"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:127
+#, no-c-format
+msgid "Auto detected value"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:136
+#, no-c-format
+msgid "Name"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:141
+#, no-c-format
+msgid "The unique name of the configuration"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:146
+#, no-c-format
+msgid "Name of the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:153
+#, no-c-format
+msgid "Property file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:158
+#, no-c-format
+msgid "Path to a hibernate.properties file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:163
+#, no-c-format
+msgid "First hibernate.properties file found in the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:170
+#, no-c-format
+msgid "Configuration file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:175
+#, no-c-format
+msgid "Path to a hibernate.cfg.xml file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:180
+#, no-c-format
+msgid "First hibernate.cfg.xml file found in the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:187
+#, no-c-format
+msgid "Enable Hibernate ejb3/annotations"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:192
+#, no-c-format
+msgid ""
+"Selecting this option enables usage of annotated classes. hbm.xml files are "
+"of course still possible to use too. This feature requires running the "
+"Eclipse IDE with a JDK 5 runtime, otherwise you will get classloading and/or "
+"version errors."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:197
+#, no-c-format
+msgid "Not enabled"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:204
+#, no-c-format
+msgid "Mapping files"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:209
+#, no-c-format
+msgid ""
+"List of additional mapping files that should be loaded. Note: A hibernate."
+"cfg.xml can also contain mappings. Thus if these a duplicated here, you will "
+"get \"Duplicate mapping\" errors when using the console configuration."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:214
+#, no-c-format
+msgid ""
+"If no hibernate.cfg.xml file is found, all hbm.xml files found in the "
+"selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:221
+#, no-c-format
+msgid "Classpath"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:226
+#, no-c-format
+msgid ""
+"The classpath for loading POJO and JDBC drivers. Do not add Hibernate core "
+"libraries or dependencies, they are already included. If you get "
+"ClassNotFound errors then check this list for possible missing or redundant "
+"directories/jars."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:231
+#, no-c-format
+msgid ""
+"The default build output directory and any JARs with a class implementing "
+"java.sql.Driver in the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:239
+#, no-c-format
+msgid ""
+"Clicking \"Finish\" creates the configuration and shows it in the "
+"\"Hibernate Configurations\" view"
+msgstr ""
+
+#. Tag: caption
+#: Tools.xml:249
+#, no-c-format
+msgid "Console overview"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:254
+#, no-c-format
+msgid "Reverse engineering and code generation"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:255
+#, no-c-format
+msgid ""
+"A very simple \"click-and-generate\" reverse engineering and code generation "
+"facility is available. It is this facility that allows you to generate the "
+"skeleton for a full Seam CRUD application."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:258
+#, no-c-format
+msgid ""
+"To start working with this process, start the \"Hibernate Code Generation\" "
+"which is available in the toolbar via the Hibernate icon or via the \"Run/"
+"Hibernate Code Generation\" menu item."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:262
+#, no-c-format
+msgid "Code Generation Launcher"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:263
+#, no-c-format
+msgid ""
+"When you click on \"Hibernate Code Generation\" the standard Eclipse "
+"launcher dialog will appear. In this dialog you can create, edit and delete "
+"named Hibernate code generation \"launchers\"."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:274
+#, no-c-format
+msgid ""
+"The dialog has the standard tabs \"Refresh\" and \"Common\" that can be used "
+"to configure which directories should be automatically refreshed and various "
+"general settings launchers, such as saving them in a project for sharing the "
+"launcher within a team."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:285
+#, no-c-format
+msgid ""
+"The first time you create a code generation launcher you should give it a "
+"meaningfull name, otherwise the default prefix \"New_Generation\" will be "
+"used."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:288
+#, no-c-format
+msgid ""
+"Note: The \"At least one exporter option must be selected\" is just a "
+"warning stating that for this launch to work you need to select an exporter "
+"on the Exporter tab. When an exporter has been selected the warning will "
+"disappear."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:291
+#, no-c-format
+msgid "On the \"Main\" tab you the following fields:"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:295
+#, no-c-format
+msgid "Code generation \"Main\" tab fields"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:303 Tools.xml:453
+#, no-c-format
+msgid "Field"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:317
+#, no-c-format
+msgid "Console Configuration"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:322
+#, no-c-format
+msgid ""
+"The name of the console configuration which should be used when code "
+"generating."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:329
+#, no-c-format
+msgid "Output directory"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:334
+#, no-c-format
+msgid ""
+"Path to a directory into where all output will be written by default. Be "
+"aware that existing files will be overwritten, so be sure to specify the "
+"correct directory."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:341
+#, no-c-format
+msgid "Reverse engineer from JDBC Connection"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:346
+#, no-c-format
+msgid ""
+"If enabled the tools will reverse engineer the database available via the "
+"connection information in the selected Hibernate Console Configuration and "
+"generate code based on the database schema. If not enabled the code "
+"generation will just be based on the mappings already specified in the "
+"Hibernate Console configuration."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:353
+#, no-c-format
+msgid "Package"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:358
+#, no-c-format
+msgid ""
+"The package name here is used as the default package name for any entities "
+"found when reverse engineering."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:365
+#, no-c-format
+msgid "reveng.xml"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:370
+#, no-c-format
+msgid ""
+"Path to a reveng.xml file. A reveng.xml file allows you to control certain "
+"aspects of the reverse engineering. e.g. how jdbc types are mapped to "
+"hibernate types and especially important which tables are included/excluded "
+"from the process. Clicking \"setup\" allows you to select an existing reveng."
+"xml file or create a new one.."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:377
+#, no-c-format
+msgid "reveng. strategy"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:382
+#, no-c-format
+msgid ""
+"If reveng.xml does not provide enough customization you can provide your own "
+"implementation of an ReverseEngineeringStrategy. The class need to be in the "
+"claspath of the Console Configuration, otherwise you will get class not "
+"found exceptions."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:389
+#, no-c-format
+msgid "Generate basic typed composite ids"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:394
+#, no-c-format
+msgid ""
+"This field should always be enabled when generating the Seam CRUD "
+"application. A table that has a multi-colum primary key a &lt;composite-"
+"id&gt; mapping will always be created. If this option is enabled and there "
+"are matching foreign-keys each key column is still considered a 'basic' "
+"scalar (string, long, etc.) instead of a reference to an entity. If you "
+"disable this option a &lt;key-many-to-one&gt; instead. Note: a &lt;many-to-"
+"one&gt; property is still created, but is simply marked as non-updatable and "
+"non-insertable."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:401
+#, no-c-format
+msgid "Use custom templates"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:406
+#, no-c-format
+msgid ""
+"If enabled, the Template directory will be searched first when looking up "
+"the velocity templates, allowing you to redefine how the individual "
+"templates process the hibernate mapping model."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:413
+#, no-c-format
+msgid "Template directory"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:418
+#, no-c-format
+msgid "A path to a directory with custom velocity templates."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:429
+#, no-c-format
+msgid "Exporters"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:430
+#, no-c-format
+msgid ""
+"The exporters tab is used to specify which type of code that should be "
+"generated. Each selection represents an \"Exporter\" that are responsible "
+"for generating the code, hence the name."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:441
+#, no-c-format
+msgid ""
+"The following table describes in short the various exporters. The most "
+"relevant for Seam is of course the \"JBoss Seam Skeleton app\"."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:445
+#, no-c-format
+msgid "Code generation \"Exporter\" tab fields"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:467
+#, no-c-format
+msgid "Generate domain code"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:472
+#, no-c-format
+msgid ""
+"Generates POJO's for all the persistent classes and components found in the "
+"given Hibernate configuration."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:479
+#, no-c-format
+msgid "JDK 1.5 constructs"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:484
+#, no-c-format
+msgid "When enabled the POJO's will use JDK 1.5 constructs."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:491
+#, no-c-format
+msgid "EJB3/JSR-220 annotations"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:496
+#, no-c-format
+msgid ""
+"When enabled the POJO's will be annotated according to the EJB3/JSR-220 "
+"persistency specification."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:503
+#, no-c-format
+msgid "Generate DAO code"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:508
+#, no-c-format
+msgid "Generates a set of DAO's for each entity found."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:515
+#, no-c-format
+msgid "Generate Mappings"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:520
+#, no-c-format
+msgid "Generate mapping (hbm.xml) files for each entity"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:527
+#, no-c-format
+msgid "Generate hibernate configuration file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:532
+#, no-c-format
+msgid ""
+"Generate a hibernate.cfg.xml file. Used to keep the hibernate.cfg.xml "
+"uptodate with any new found mapping files."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:539
+#, no-c-format
+msgid "Generate schema html-documentation"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:544
+#, no-c-format
+msgid ""
+"Generates set of html pages that documents the database schema and some of "
+"the mappings."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:551
+#, no-c-format
+msgid "Generate JBoss Seam skeleton app (beta)"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:556
+#, no-c-format
+msgid ""
+"Generates a complete JBoss Seam skeleton app. The generation will include "
+"annotated POJO's, Seam controller beans and a JSP for the presentation "
+"layer. See the generated readme.txt for how to use it."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:559
+#, no-c-format
+msgid ""
+"Note: this exporter generates a full application, including a build.xml thus "
+"you will get the best results if you use an output directory which is the "
+"root of your project."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:570
+#, no-c-format
+msgid "Generating and using the code"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:571
+#, no-c-format
+msgid ""
+"When you have finished filling out the settings, simply press \"Run\" to "
+"start the generation of code. This might take a little while if you are "
+"reverse engineering from a database."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:574
+#, no-c-format
+msgid ""
+"When the generation have finished you should now have a complete skeleton "
+"Seam application in the output directory. In the output directory there is a "
+"<literal>readme.txt</literal> file describing the steps needed to deploy and "
+"run the example."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:577
+#, no-c-format
+msgid ""
+"If you want to regenerate/update the skeleton code then simply run the code "
+"generation again by selecting the \"Hibernate Code Generation\" in the "
+"toolbar or \"Run\" menu. Enjoy."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Tutorial.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Tutorial.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Tutorial.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,4041 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Tutorial.xml:10
+#, no-c-format
+msgid "Seam Tutorial"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:12
+#, no-c-format
+msgid "Try the examples"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:13
+#, no-c-format
+msgid ""
+"In this tutorial, we'll assume that you have downloaded JBoss AS 4.0.5 and "
+"installed the EJB 3.0 profile (using the JBoss AS installer). You should "
+"also have a copy of Seam downloaded and extracted to a work directory."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:16
+#, no-c-format
+msgid "The directory structure of each example in Seam follows this pattern:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:21
+#, no-c-format
+msgid ""
+"Web pages, images and stylesheets may be found in <filename>examples/"
+"<replaceable>registration</replaceable>/view</filename>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:26
+#, no-c-format
+msgid ""
+"Resources such as deployment descriptors and data import scripts may be "
+"found in <filename>examples/<replaceable>registration</replaceable>/"
+"resources</filename>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:31
+#, no-c-format
+msgid ""
+"Java source code may be found in <filename>examples/"
+"<replaceable>registration</replaceable>/src</filename>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:36
+#, no-c-format
+msgid ""
+"The Ant build script is <filename>examples/<replaceable>registration</"
+"replaceable>/build.xml</filename>"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:42
+#, no-c-format
+msgid "Running the examples on JBoss AS"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:43
+#, no-c-format
+msgid ""
+"First, make sure you have Ant correctly installed, with <literal>&#36;"
+"ANT_HOME</literal> and <literal>&#36;JAVA_HOME</literal> set correctly. "
+"Next, make sure you set the location of your JBoss AS 4.0.5 installation in "
+"the <literal>build.properties</literal> file in the root folder of your Seam "
+"installation. If you haven't already done so, start JBoss AS now by typing "
+"<literal>bin/run.sh</literal> or <literal>bin/run.bat</literal> in the root "
+"directory of your JBoss installation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:46
+#, no-c-format
+msgid ""
+"By default the examples will deploy to the default configuration of the "
+"server. If the server has been started using an a configuration other than "
+"default then the example <literal>build.xml</literal> file should be "
+"modified to reflect this before building and deploying. Two lines should be "
+"changed in this file:"
+msgstr ""
+
+#. Tag: screen
+#: Tutorial.xml:49
+#, no-c-format
+msgid ""
+"&lt;property name=\"deploy.dir\"           value=\"${jboss.home}/server/"
+"default/deploy\"/&gt;"
+msgstr ""
+
+#. Tag: screen
+#: Tutorial.xml:50
+#, no-c-format
+msgid ""
+"&lt;property name=\"webroot.dir\"         \n"
+"        value=\"${deploy.dir}/jboss-web.deployer/ROOT.war\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:51
+#, no-c-format
+msgid ""
+"Now, build and deploy the example by typing <literal>ant deploy</literal> in "
+"the <filename>examples/<replaceable>registration</replaceable></filename> "
+"directory."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:54
+#, no-c-format
+msgid ""
+"Try it out by accessing <ulink url=\"http://localhost:8080/seam-registration/"
+"\"><literal>http://localhost:8080/seam-registration/</literal></ulink> with "
+"your web browser."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:60
+#, no-c-format
+msgid "Running the examples on Tomcat"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:61
+#, no-c-format
+msgid ""
+"First, make sure you have Ant correctly installed, with <literal>&#36;"
+"ANT_HOME</literal> and <literal>&#36;JAVA_HOME</literal> set correctly. "
+"Next, make sure you set the location of your Tomcat 5.5 installation in the "
+"<literal>build.properties</literal> file in the root folder of your Seam "
+"installation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:64
+#, no-c-format
+msgid ""
+"Now, build and deploy the example by typing <literal>ant deploy.tomcat</"
+"literal> in the <filename>examples/<replaceable>registration</replaceable></"
+"filename> directory."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:67
+#, no-c-format
+msgid "Finally, start Tomcat."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:70
+#, no-c-format
+msgid ""
+"Try it out by accessing <ulink url=\"http://localhost:8080/jboss-seam-"
+"registration/\"><literal>http://localhost:8080/jboss-seam-registration/</"
+"literal></ulink> with your web browser."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:73
+#, no-c-format
+msgid ""
+"When you deploy the example to Tomcat, any EJB3 components will run inside "
+"the JBoss Embeddable EJB3 container, a complete standalone EJB3 container "
+"environment."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:79
+#, no-c-format
+msgid "Running the example tests"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:80
+#, no-c-format
+msgid ""
+"Most of the examples come with a suite of TestNG integration tests. The "
+"easiest way to run the tests is to run <literal>ant testexample</literal> "
+"inside the <filename>examples/<replaceable>registration</replaceable></"
+"filename> directory. It is also possible to run the tests inside your IDE "
+"using the TestNG plugin."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:88
+#, no-c-format
+msgid "Your first Seam application: the registration example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:89
+#, no-c-format
+msgid ""
+"The registration example is a fairly trivial application that lets a new "
+"user store his username, real name and password in the database. The example "
+"isn't intended to show off all of the cool functionality of Seam. However, "
+"it demonstrates the use of an EJB3 session bean as a JSF action listener, "
+"and basic configuration of Seam."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:92
+#, no-c-format
+msgid ""
+"We'll go slowly, since we realize you might not yet be familiar with EJB 3.0."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:95
+#, no-c-format
+msgid ""
+"The start page displays a very basic form with three input fields. Try "
+"filling them in and then submitting the form. This will save a user object "
+"in the database."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:107 Tutorial.xml:424 Tutorial.xml:563 Tutorial.xml:723
+#, no-c-format
+msgid "Understanding the code"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:108
+#, no-c-format
+msgid ""
+"The example is implemented with two JSP pages, one entity bean and one "
+"stateless session bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:119
+#, no-c-format
+msgid "Let's take a look at the code, starting from the \"bottom\"."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:123
+#, no-c-format
+msgid "The entity bean: <literal>User.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:124
+#, no-c-format
+msgid ""
+"We need an EJB entity bean for user data. This class defines "
+"<emphasis>persistence</emphasis> and <emphasis>validation</emphasis> "
+"declaratively, via annotations. It also needs some extra annotations that "
+"define the class as a Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:140
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"user\")\n"
+"@Scope(SESSION)\n"
+"@Table(name=\"users\")\n"
+"public class User implements Serializable\n"
+"{\n"
+"   private static final long serialVersionUID = 1881413500711441951L;\n"
+"   \n"
+"   private String username;\n"
+"   private String password;\n"
+"   private String name;\n"
+"   \n"
+"   public User(String name, String password, String username)\n"
+"   {\n"
+"      this.name = name;\n"
+"      this.password = password;\n"
+"      this.username = username;\n"
+"   }\n"
+"   \n"
+"   public User() {}\n"
+"   \n"
+"   @NotNull @Length(min=5, max=15)\n"
+"   public String getPassword()\n"
+"   {\n"
+"      return password;\n"
+"   }\n"
+"\n"
+"   public void setPassword(String password)\n"
+"   {\n"
+"      this.password = password;\n"
+"   }\n"
+"   \n"
+"   @NotNull\n"
+"   public String getName()\n"
+"   {\n"
+"      return name;\n"
+"   }\n"
+"\n"
+"   public void setName(String name)\n"
+"   {\n"
+"      this.name = name;\n"
+"   }\n"
+"   \n"
+"   @Id @NotNull @Length(min=5, max=15)\n"
+"   public String getUsername()\n"
+"   {\n"
+"      return username;\n"
+"   }\n"
+"\n"
+"   public void setUsername(String username)\n"
+"   {\n"
+"      this.username = username;\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:143
+#, no-c-format
+msgid ""
+"The EJB3 standard <literal>@Entity</literal> annotation indicates that the "
+"<literal>User</literal> class is an entity bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:148
+#, no-c-format
+msgid ""
+"A Seam component needs a <emphasis>component name</emphasis> specified by "
+"the <link linkend=\"name-annotation\"><literal>@Name</literal></link> "
+"annotation. This name must be unique within the Seam application. When JSF "
+"asks Seam to resolve a context variable with a name that is the same as a "
+"Seam component name, and the context variable is currently undefined (null), "
+"Seam will instantiate that component, and bind the new instance to the "
+"context variable. In this case, Seam will instantiate a <literal>User</"
+"literal> the first time JSF encounters a variable named <literal>user</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:153
+#, no-c-format
+msgid ""
+"Whenever Seam instantiates a component, it binds the new instance to a "
+"context variable in the component's <emphasis>default context</emphasis>. "
+"The default context is specified using the <link linkend=\"scope-annotation"
+"\"><literal>@Scope</literal></link> annotation. The <literal>User</literal> "
+"bean is a session scoped component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:158
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Table</literal> annotation indicates that the "
+"<literal>User</literal> class is mapped to the <literal>users</literal> "
+"table."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:163
+#, no-c-format
+msgid ""
+"<literal>name</literal>, <literal>password</literal> and <literal>username</"
+"literal> are the persistent attributes of the entity bean. All of our "
+"persistent attributes define accessor methods. These are needed when this "
+"component is used by JSF in the render response and update model values "
+"phases."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:168
+#, no-c-format
+msgid ""
+"An empty constructor is both required by both the EJB specification and by "
+"Seam."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:173
+#, no-c-format
+msgid ""
+"The <literal>@NotNull</literal> and <literal>@Length</literal> annotations "
+"are part of the Hibernate Validator framework. Seam integrates Hibernate "
+"Validator and lets you use it for data validation (even if you are not using "
+"Hibernate for persistence)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:178
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Id</literal> annotation indicates the primary key "
+"attribute of the entity bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:185
+#, no-c-format
+msgid ""
+"The most important things to notice in this example are the <literal>@Name</"
+"literal> and <literal>@Scope</literal> annotations. These annotations "
+"establish that this class is a Seam component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:188
+#, no-c-format
+msgid ""
+"We'll see below that the properties of our <literal>User</literal> class are "
+"bound to directly to JSF components and are populated by JSF during the "
+"update model values phase. We don't need any tedious glue code to copy data "
+"back and forth between the JSP pages and the entity bean domain model."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:191
+#, no-c-format
+msgid ""
+"However, entity beans shouldn't do transaction management or database "
+"access. So we can't use this component as a JSF action listener. For that we "
+"need a session bean."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:198
+#, no-c-format
+msgid ""
+"The stateless session bean class: <literal>RegisterAction.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:199
+#, no-c-format
+msgid ""
+"Most Seam application use session beans as JSF action listeners (you can use "
+"JavaBeans instead if you like)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:202
+#, no-c-format
+msgid ""
+"We have exactly one JSF action in our application, and one session bean "
+"method attached to it. In this case, we'll use a stateless session bean, "
+"since all the state associated with our action is held by the <literal>User</"
+"literal> bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:205
+#, no-c-format
+msgid "This is the only really interesting code in the example!"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:222
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"register\")\n"
+"public class RegisterAction implements Register\n"
+"{\n"
+"\n"
+"   @In\n"
+"   private User user;\n"
+"   \n"
+"   @PersistenceContext\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @Logger\n"
+"   private Log log;\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = em.createQuery(\n"
+"         \"select username from User where username=#{user.username}\")\n"
+"         .getResultList();\n"
+"         \n"
+"      if (existing.size()==0)\n"
+"      {\n"
+"         em.persist(user);\n"
+"         log.info(\"Registered new user #{user.username}\");\n"
+"         return \"/registered.jsp\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         FacesMessages.instance().add(\"User #{user.username} already exists"
+"\");\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:225
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Stateless</literal> annotation marks this class "
+"as stateless session bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:230
+#, no-c-format
+msgid ""
+"The <link linkend=\"in-annotation\"><literal>@In</literal></link> annotation "
+"marks an attribute of the bean as injected by Seam. In this case, the "
+"attribute is injected from a context variable named <literal>user</literal> "
+"(the instance variable name)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:235
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@PersistenceContext</literal> annotation is used "
+"to inject the EJB3 entity manager."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:240
+#, no-c-format
+msgid ""
+"The Seam <literal>@Logger</literal> annotation is used to inject the "
+"component's <literal>Log</literal> instance."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:245
+#, no-c-format
+msgid ""
+"The action listener method uses the standard EJB3 <literal>EntityManager</"
+"literal> API to interact with the database, and returns the JSF outcome. "
+"Note that, since this is a sesson bean, a transaction is automatically begun "
+"when the <literal>register()</literal> method is called, and committed when "
+"it completes."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:250
+#, no-c-format
+msgid ""
+"Notice that Seam lets you use a JSF EL expression inside EJB-QL. Under the "
+"covers, this results in an ordinary JPA <literal>setParameter()</literal> "
+"call on the standard JPA <literal>Query</literal> object. Nice, huh?"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:255
+#, no-c-format
+msgid ""
+"The <literal>Log</literal> API lets us easily display templated log messages."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:260
+#, no-c-format
+msgid ""
+"JSF action listener methods return a string-valued outcome that determines "
+"what page will be displayed next. A null outcome (or a void action listener "
+"method) redisplays the previous page. In plain JSF, it is normal to always "
+"use a JSF <emphasis>navigation rule</emphasis> to determine the JSF view id "
+"from the outcome. For complex application this indirection is useful and a "
+"good practice. However, for very simple examples like this one, Seam lets "
+"you use the JSF view id as the outcome, eliminating the requirement for a "
+"navigation rule. <emphasis>Note that when you use a view id as an outcome, "
+"Seam always performs a browser redirect.</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:265
+#, no-c-format
+msgid ""
+"Seam provides a number of <emphasis>built-in components</emphasis> to help "
+"solve common problems. The <literal>FacesMessages</literal> component makes "
+"it easy to display templated error or success messages. Built-in Seam "
+"components may be obtained by injection, or by calling an <literal>instance()"
+"</literal> method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:272
+#, no-c-format
+msgid ""
+"Note that we did not explicitly specify a <literal>@Scope</literal> this "
+"time. Each Seam component type has a default scope if not explicitly "
+"specified. For stateless session beans, the default scope is the stateless "
+"context. Actually, <emphasis>all</emphasis> stateless session beans belong "
+"in the stateless context."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:275
+#, no-c-format
+msgid ""
+"Our session bean action listener performs the business and persistence logic "
+"for our mini-application. In more complex applications, we might need to "
+"layer the code and refactor persistence logic into a dedicated data access "
+"component. That's perfectly trivial to do. But notice that Seam does not "
+"force you into any particular strategy for application layering."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:278
+#, no-c-format
+msgid ""
+"Furthermore, notice that our session bean has simultaneous access to context "
+"associated with the web request (the form values in the <literal>User</"
+"literal> object, for example), and state held in transactional resources "
+"(the <literal>EntityManager</literal> object). This is a break from "
+"traditional J2EE architectures. Again, if you are more comfortable with the "
+"traditional J2EE layering, you can certainly implement that in a Seam "
+"application. But for many applications, it's simply not very useful."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:285
+#, no-c-format
+msgid "The session bean local interface: <literal>Register.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:286
+#, no-c-format
+msgid "Naturally, our session bean needs a local interface."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:291
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface Register\n"
+"{\n"
+"   public String register();\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:292
+#, no-c-format
+msgid "That's the end of the Java code. Now onto the deployment descriptors."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:298
+#, no-c-format
+msgid ""
+"The Seam component deployment descriptor: <literal>components.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:299
+#, no-c-format
+msgid ""
+"If you've used many Java frameworks before, you'll be used to having to "
+"declate all your component classes in some kind of XML file that gradually "
+"grows more and more unmanageable as your project matures. You'll be relieved "
+"to know that Seam does not require that application components be "
+"accompanied by XML. Most Seam applications require a very small amount of "
+"XML that does not grow very much as the project gets bigger."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:302
+#, no-c-format
+msgid ""
+"Nevertheless, it is often useful to be able to provide for <emphasis>some</"
+"emphasis> external configuration of <emphasis>some</emphasis> components "
+"(particularly the components built in to Seam). You have a couple of options "
+"here, but the most flexible option is to provide this configuration in a "
+"file called <literal>components.xml</literal>, located in the <literal>WEB-"
+"INF</literal> directory. We'll use the <literal>components.xml</literal> "
+"file to tell Seam how to find our EJB components in JNDI:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:305
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"&gt;\n"
+"     &lt;core:init jndi-pattern=\"@jndiPattern@\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:306
+#, no-c-format
+msgid ""
+"This code configures a property named <literal>jndiPattern</literal> of a "
+"built-in Seam component named <literal>org.jboss.seam.core.init</literal>."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:312
+#, no-c-format
+msgid "The web deployment description: <literal>web.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:313
+#, no-c-format
+msgid ""
+"The presentation layer for our mini-application will be deployed in a WAR. "
+"So we'll need a web deployment descriptor."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:316
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;web-app version=\"2.5\"\n"
+"    xmlns=\"http://java.sun.com/xml/ns/javaee\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n"
+"        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\"&gt;\n"
+"\n"
+"    &lt;!-- Seam --&gt;\n"
+"\n"
+"    &lt;listener&gt;\n"
+"        &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/"
+"listener-class&gt;\n"
+"    &lt;/listener&gt;\n"
+"\n"
+"    &lt;!-- MyFaces --&gt;\n"
+"\n"
+"    &lt;listener&gt;\n"
+"        &lt;listener-class&gt;\n"
+"            org.apache.myfaces.webapp.StartupServletContextListener\n"
+"        &lt;/listener-class&gt;\n"
+"    &lt;/listener&gt;\n"
+"\n"
+"    &lt;context-param&gt;\n"
+"        &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-"
+"name&gt;\n"
+"        &lt;param-value&gt;client&lt;/param-value&gt;\n"
+"    &lt;/context-param&gt;\n"
+"\n"
+"    &lt;servlet&gt;\n"
+"        &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;\n"
+"        &lt;servlet-class&gt;javax.faces.webapp.FacesServlet&lt;/servlet-"
+"class&gt;\n"
+"        &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;\n"
+"    &lt;/servlet&gt;\n"
+"\n"
+"    &lt;!-- Faces Servlet Mapping --&gt;\n"
+"    &lt;servlet-mapping&gt;\n"
+"        &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;\n"
+"        &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;\n"
+"    &lt;/servlet-mapping&gt;\n"
+"\n"
+"&lt;/web-app&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:317
+#, no-c-format
+msgid ""
+"This <literal>web.xml</literal> file configures Seam and MyFaces. The "
+"configuration you see here is pretty much identical in all Seam applications."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:323
+#, no-c-format
+msgid "The JSF configration: <literal>faces-config.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:324
+#, no-c-format
+msgid ""
+"All Seam applications use JSF views as the presentation layer. So we'll need "
+"<literal>faces-config.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:327
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;!DOCTYPE faces-config \n"
+"PUBLIC \"-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN\"\n"
+"                            \"http://java.sun.com/dtd/web-facesconfig_1_0.dtd"
+"\"&gt;\n"
+"&lt;faces-config&gt;\n"
+"\n"
+"    &lt;!-- A phase listener is needed by all Seam applications --&gt;\n"
+"    \n"
+"    &lt;lifecycle&gt;\n"
+"        &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-"
+"listener&gt;\n"
+"    &lt;/lifecycle&gt;\n"
+"\n"
+"&lt;/faces-config&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:328
+#, no-c-format
+msgid ""
+"The <literal>faces-config.xml</literal> file integrates Seam into JSF. Note "
+"that we don't need any JSF managed bean declarations! The managed beans are "
+"the Seam components. In Seam applications, the <literal>faces-config.xml</"
+"literal> is used much less often than in plain JSF."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:331
+#, no-c-format
+msgid ""
+"In fact, once you have all the basic descriptors set up, the <emphasis>only</"
+"emphasis> XML you need to write as you add new functionality to a Seam "
+"application is the navigation rules, and possibly jBPM process definitions. "
+"Seam takes the view that <emphasis>process flow</emphasis> and "
+"<emphasis>configuration data</emphasis> are the only things that truly "
+"belong in XML."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:334
+#, no-c-format
+msgid ""
+"In this simple example, we don't even need a navigation rule, since we "
+"decided to embed the view id in our action code."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:340
+#, no-c-format
+msgid "The EJB deployment descriptor: <literal>ejb-jar.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:341
+#, no-c-format
+msgid ""
+"The <literal>ejb-jar.xml</literal> file integrates Seam with EJB3, by "
+"attaching the <literal>SeamInterceptor</literal> to all session beans in the "
+"archive."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:344
+#, no-c-format
+msgid ""
+"&lt;ejb-jar xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \n"
+"         xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n"
+"         http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd\"\n"
+"         version=\"3.0\"&gt;\n"
+"         \n"
+"   &lt;interceptors&gt;\n"
+"     &lt;interceptor&gt;\n"
+"       &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"     &lt;/interceptor&gt;\n"
+"   &lt;/interceptors&gt;\n"
+"   \n"
+"   &lt;assembly-descriptor&gt;\n"
+"      &lt;interceptor-binding&gt;\n"
+"         &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"         &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"      &lt;/interceptor-binding&gt;\n"
+"   &lt;/assembly-descriptor&gt;\n"
+"   \n"
+"&lt;/ejb-jar&gt;"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:348
+#, no-c-format
+msgid ""
+"The EJB persistence deployment descriptor: <literal>persistence.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:349
+#, no-c-format
+msgid ""
+"The <literal>persistence.xml</literal> file tells the EJB persistence "
+"provider where to find the datasource, and contains some vendor-specific "
+"settings. In this case, enables automatic schema export at startup time."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:352
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;persistence xmlns=\"http://java.sun.com/xml/ns/persistence\" \n"
+"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence \n"
+"             http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd\" \n"
+"             version=\"1.0\"&gt;\n"
+"    &lt;persistence-unit name=\"userDatabase\"&gt;\n"
+"      &lt;provider&gt;org.hibernate.ejb.HibernatePersistence&lt;/"
+"provider&gt;\n"
+"      &lt;jta-data-source&gt;java:/DefaultDS&lt;/jta-data-source&gt;\n"
+"      &lt;properties&gt;\n"
+"         &lt;property name=\"hibernate.hbm2ddl.auto\" value=\"create-drop\"/"
+"&gt;\n"
+"      &lt;/properties&gt;\n"
+"    &lt;/persistence-unit&gt;\n"
+"&lt;/persistence&gt;"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:356
+#, no-c-format
+msgid ""
+"The view: <literal>register.jsp</literal> and <literal>registered.jsp</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:357
+#, no-c-format
+msgid ""
+"The view pages for a Seam application could be implemented using any "
+"technology that supports JSF. In this example we use JSP, since it is "
+"familiar to most developers and since we have minimal requirements here "
+"anyway. (But if you take our advice, you'll use Facelets for your own "
+"applications.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:360
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://jboss.com/products/seam/taglib\" prefix=\"s\" "
+"&#37;&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Register New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;table border=\"0\"&gt;\n"
+"       &lt;s:validateAll&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Username&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputText value=\"#{user.username}\"/&gt;&lt;/"
+"td&gt;\n"
+"         &lt;/tr&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Real Name&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputText value=\"#{user.name}\"/&gt;&lt;/td&gt;\n"
+"         &lt;/tr&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Password&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputSecret value=\"#{user.password}\"/&gt;&lt;/"
+"td&gt;\n"
+"         &lt;/tr&gt;\n"
+"       &lt;/s:validateAll&gt;\n"
+"     &lt;/table&gt;\n"
+"     &lt;h:messages/&gt;\n"
+"     &lt;h:commandButton type=\"submit\" value=\"Register\" action=\"#"
+"{register.register}\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:361
+#, no-c-format
+msgid ""
+"The only thing here that is specific to Seam is the <literal>&lt;s:"
+"validateAll&gt;</literal> tag. This JSF component tells JSF to validate all "
+"the contained input fields against the Hibernate Validator annotations "
+"specified on the entity bean."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:364
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Successfully Registered New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"    Welcome, &lt;h:outputText value=\"#{user.name}\"/&gt;, \n"
+"    you are successfully registered as &lt;h:outputText value=\"#{user."
+"username}\"/&gt;.\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:365
+#, no-c-format
+msgid ""
+"This is a boring old JSP pages using standard JSF components. There is "
+"nothing specific to Seam here."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:371
+#, no-c-format
+msgid "The EAR deployment descriptor: <literal>application.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:372
+#, no-c-format
+msgid ""
+"Finally, since our application is deployed as an EAR, we need a deployment "
+"descriptor there, too."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:375
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;application xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee \n"
+"             http://java.sun.com/xml/ns/javaee/application_5.xsd\"\n"
+"             version=\"5\"&gt;\n"
+"             \n"
+"    &lt;display-name&gt;Seam Registration&lt;/display-name&gt;\n"
+"\n"
+"    &lt;module&gt;\n"
+"        &lt;web&gt;\n"
+"            &lt;web-uri&gt;jboss-seam-registration.war&lt;/web-uri&gt;\n"
+"            &lt;context-root&gt;/seam-registration&lt;/context-root&gt;\n"
+"        &lt;/web&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;ejb&gt;jboss-seam-registration.jar&lt;/ejb&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;jboss-seam.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;el-api.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;el-ri.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    \n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:376
+#, no-c-format
+msgid ""
+"This deployment descriptor links modules in the enterprise archive and binds "
+"the web application to the context root <literal>/seam-registration</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:387 Tutorial.xml:535 Tutorial.xml:698 Tutorial.xml:813
+#, no-c-format
+msgid "How it works"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:388
+#, no-c-format
+msgid ""
+"When the form is submitted, JSF asks Seam to resolve the variable named "
+"<literal>user</literal>. Since there is no value already bound to that name "
+"(in any Seam context), Seam instantiates the <literal>user</literal> "
+"component, and returns the resulting <literal>User</literal> entity bean "
+"instance to JSF after storing it in the Seam session context."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:391
+#, no-c-format
+msgid ""
+"The form input values are now validated against the Hibernate Validator "
+"constraints specified on the <literal>User</literal> entity. If the "
+"constraints are violated, JSF redisplays the page. Otherwise, JSF binds the "
+"form input values to properties of the <literal>User</literal> entity bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:394
+#, no-c-format
+msgid ""
+"Next, JSF asks Seam to resolve the variable named <literal>register</"
+"literal>. Seam finds the <literal>RegisterAction</literal> stateless session "
+"bean in the stateless context and returns it. JSF invokes the "
+"<literal>register()</literal> action listener method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:397
+#, no-c-format
+msgid ""
+"Seam intercepts the method call and injects the <literal>User</literal> "
+"entity from the Seam session context, before continuing the invocation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:400
+#, no-c-format
+msgid ""
+"The <literal>register()</literal> method checks if a user with the entered "
+"username already exists. If so, an error message is queued with the "
+"<literal>FacesMessages</literal> component, and a null outcome is returned, "
+"causing a page redisplay. The <literal>FacesMessages</literal> component "
+"interpolates the JSF expression embedded in the message string and adds a "
+"JSF <literal>FacesMessage</literal> to the view."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:403
+#, no-c-format
+msgid ""
+"If no user with that username exists, the <literal>\"/registered.jsp\"</"
+"literal> outcome triggers a browser redirect to the <literal>registered.jsp</"
+"literal> page. When JSF comes to render the page, it asks Seam to resolve "
+"the variable named <literal>user</literal> and uses property values of the "
+"returned <literal>User</literal> entity from Seam's session scope."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:411
+#, no-c-format
+msgid "Clickable lists in Seam: the messages example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:412
+#, no-c-format
+msgid ""
+"Clickable lists of database search results are such an important part of any "
+"online application that Seam provides special functionality on top of JSF to "
+"make it easier to query data using EJB-QL or HQL and display it as a "
+"clickable list using a JSF <literal>&lt;h:dataTable&gt;</literal>. The "
+"messages example demonstrates this functionality."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:425
+#, no-c-format
+msgid ""
+"The message list example has one entity bean, <literal>Message</literal>, "
+"one session bean, <literal>MessageListBean</literal> and one JSP."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:429
+#, no-c-format
+msgid "The entity bean: <literal>Message.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:430
+#, no-c-format
+msgid ""
+"The <literal>Message</literal> entity defines the title, text, date and time "
+"of a message, and a flag indicating whether the message has been read:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:433
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"message\")\n"
+"@Scope(EVENT)\n"
+"public class Message implements Serializable\n"
+"{\n"
+"   private Long id;\n"
+"   private String title;\n"
+"   private String text;\n"
+"   private boolean read;\n"
+"   private Date datetime;\n"
+"   \n"
+"   @Id @GeneratedValue\n"
+"   public Long getId() {\n"
+"      return id;\n"
+"   }\n"
+"   public void setId(Long id) {\n"
+"      this.id = id;\n"
+"   }\n"
+"   \n"
+"   @NotNull @Length(max=100)\n"
+"   public String getTitle() {\n"
+"      return title;\n"
+"   }\n"
+"   public void setTitle(String title) {\n"
+"      this.title = title;\n"
+"   }\n"
+"   \n"
+"   @NotNull @Lob\n"
+"   public String getText() {\n"
+"      return text;\n"
+"   }\n"
+"   public void setText(String text) {\n"
+"      this.text = text;\n"
+"   }\n"
+"   \n"
+"   @NotNull\n"
+"   public boolean isRead() {\n"
+"      return read;\n"
+"   }\n"
+"   public void setRead(boolean read) {\n"
+"      this.read = read;\n"
+"   }\n"
+"   \n"
+"   @NotNull \n"
+"   @Basic @Temporal(TemporalType.TIMESTAMP)\n"
+"   public Date getDatetime() {\n"
+"      return datetime;\n"
+"   }\n"
+"   public void setDatetime(Date datetime) {\n"
+"      this.datetime = datetime;\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:438
+#, no-c-format
+msgid "The stateful session bean: <literal>MessageManagerBean.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:439
+#, no-c-format
+msgid ""
+"Just like in the previous example, we have a session bean, "
+"<literal>MessageManagerBean</literal>, which defines the action listener "
+"methods for the two buttons on our form. One of the buttons selects a "
+"message from the list, and displays that message. The other button deletes a "
+"message. So far, this is not so different to the previous example."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:442
+#, no-c-format
+msgid ""
+"But <literal>MessageManagerBean</literal> is also responsible for fetching "
+"the list of messages the first time we navigate to the message list page. "
+"There are various ways the user could navigate to the page, and not all of "
+"them are preceded by a JSF action&mdash;the user might have bookmarked the "
+"page, for example. So the job of fetching the message list takes place in a "
+"Seam <emphasis>factory method</emphasis>, instead of in an action listener "
+"method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:445
+#, no-c-format
+msgid ""
+"We want to cache the list of messages in memory between server requests, so "
+"we will make this a stateful session bean."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:459
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Scope(SESSION)\n"
+"@Name(\"messageManager\")\n"
+"public class MessageManagerBean implements Serializable, MessageManager\n"
+"{\n"
+"\n"
+"   @DataModel\n"
+"   private List&lt;Message&gt; messageList;\n"
+"   \n"
+"   @DataModelSelection\n"
+"   @Out(required=false)\n"
+"   private Message message;\n"
+"   \n"
+"   @PersistenceContext(type=EXTENDED)\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @Factory(\"messageList\")\n"
+"   public void findMessages()\n"
+"   {\n"
+"      messageList = em.createQuery(\"from Message msg order by msg.datetime "
+"desc\").getResultList();\n"
+"   }\n"
+"   \n"
+"   public void select()\n"
+"   {\n"
+"      message.setRead(true);\n"
+"   }\n"
+"   \n"
+"   public void delete()\n"
+"   {\n"
+"      messageList.remove(message);\n"
+"      em.remove(message);\n"
+"      message=null;\n"
+"   }\n"
+"   \n"
+"   @Remove @Destroy\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:462
+#, no-c-format
+msgid ""
+"The <literal>@DataModel</literal> annotation exposes an attibute of type "
+"<literal>java.util.List</literal> to the JSF page as an instance of "
+"<literal>javax.faces.model.DataModel</literal>. This allows us to use the "
+"list in a JSF <literal>&lt;h:dataTable&gt;</literal> with clickable links "
+"for each row. In this case, the <literal>DataModel</literal> is made "
+"available in a session context variable named <literal>messageList</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:467
+#, no-c-format
+msgid ""
+"The <literal>@DataModelSelection</literal> annotation tells Seam to inject "
+"the <literal>List</literal> element that corresponded to the clicked link."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:472
+#, no-c-format
+msgid ""
+"The <literal>@Out</literal> annotation then exposes the selected value "
+"directly to the page. So ever time a row of the clickable list is selected, "
+"the <literal>Message</literal> is injected to the attribute of the stateful "
+"bean, and the subsequently <emphasis>outjected</emphasis> to the event "
+"context variable named <literal>message</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:477
+#, no-c-format
+msgid ""
+"This stateful bean has an EJB3 <emphasis>extended persistence context</"
+"emphasis>. The messages retrieved in the query remain in the managed state "
+"as long as the bean exists, so any subsequent method calls to the stateful "
+"bean can update them without needing to make any explicit call to the "
+"<literal>EntityManager</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:482
+#, no-c-format
+msgid ""
+"The first time we navigate to the JSP page, there will be no value in the "
+"<literal>messageList</literal> context variable. The <literal>@Factory</"
+"literal> annotation tells Seam to create an instance of "
+"<literal>MessageManagerBean</literal> and invoke the <literal>findMessages()"
+"</literal> method to initialize the value. We call <literal>findMessages()</"
+"literal> a <emphasis>factory method</emphasis> for <literal>messages</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:487
+#, no-c-format
+msgid ""
+"The <literal>select()</literal> action listener method marks the selected "
+"<literal>Message</literal> as read, and updates it in the database."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:492
+#, no-c-format
+msgid ""
+"The <literal>delete()</literal> action listener method removes the selected "
+"<literal>Message</literal> from the database."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:497
+#, no-c-format
+msgid ""
+"All stateful session bean Seam components <emphasis>must</emphasis> have a "
+"method marked <literal>@Remove @Destroy</literal> to ensure that Seam will "
+"remove the stateful bean when the Seam context ends, and clean up any server-"
+"side state."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:504
+#, no-c-format
+msgid ""
+"Note that this is a session-scoped Seam component. It is associated with the "
+"user login session, and all requests from a login session share the same "
+"instance of the component. (In Seam applications, we usually use session-"
+"scoped components sparingly.)"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:510
+#, no-c-format
+msgid ""
+"The session bean local interface: <literal>MessageManager.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:511
+#, no-c-format
+msgid "All session beans have a business interface, of course."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:514
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface MessageManager\n"
+"{\n"
+"   public void findMessages();\n"
+"   public void select();\n"
+"   public void delete();\n"
+"   public void destroy();\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:515
+#, no-c-format
+msgid "From now on, we won't show local interfaces in our code examples."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:518
+#, no-c-format
+msgid ""
+"Let's skip over <literal>components.xml</literal>, <literal>persistence.xml</"
+"literal>, <literal>web.xml</literal>, <literal>ejb-jar.xml</literal>, "
+"<literal>faces-config.xml</literal> and <literal>application.xml</literal> "
+"since they are much the same as the previous example, and go straight to the "
+"JSP."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:524
+#, no-c-format
+msgid "The view: <literal>messages.jsp</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:525
+#, no-c-format
+msgid ""
+"The JSP page is a straightforward use of the JSF <literal>&lt;h:dataTable&gt;"
+"</literal> component. Again, nothing specific to Seam."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:528
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Messages&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;h2&gt;Message List&lt;/h2&gt;\n"
+"     &lt;h:outputText value=\"No messages to display\" rendered=\"#"
+"{messageList.rowCount==0}\"/&gt;\n"
+"     &lt;h:dataTable var=\"msg\" value=\"#{messageList}\" rendered=\"#"
+"{messageList.rowCount&gt;0}\"&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Read\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:selectBooleanCheckbox value=\"#{msg.read}\" disabled=\"true"
+"\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Title\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:commandLink value=\"#{msg.title}\" action=\"#"
+"{messageManager.select}\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Date/Time\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:outputText value=\"#{msg.datetime}\"&gt;\n"
+"              &lt;f:convertDateTime type=\"both\" dateStyle=\"medium\" "
+"timeStyle=\"short\"/&gt;\n"
+"           &lt;/h:outputText&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;h:commandButton value=\"Delete\" action=\"#{messageManager."
+"delete}\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"     &lt;/h:dataTable&gt;\n"
+"     &lt;h3&gt;&lt;h:outputText value=\"#{message.title}\"/&gt;&lt;/h3&gt;\n"
+"     &lt;div&gt;&lt;h:outputText value=\"#{message.text}\"/&gt;&lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:536
+#, no-c-format
+msgid ""
+"The first time we navigate to the <literal>messages.jsp</literal> page, "
+"whether by a JSF postback (faces request) or a direct browser GET request "
+"(non-faces request), the page will try to resolve the <literal>messageList</"
+"literal> context variable. Since this context variable is not initialized, "
+"Seam will call the factory method <literal>findMessages()</literal>, which "
+"performs a query against the database and results in a <literal>DataModel</"
+"literal> being outjected. This <literal>DataModel</literal> provides the row "
+"data needed for rendering the <literal>&lt;h:dataTable&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:539
+#, no-c-format
+msgid ""
+"When the user clicks the <literal>&lt;h:commandLink&gt;</literal>, JSF calls "
+"the <literal>select()</literal> action listener. Seam intercepts this call "
+"and injects the selected row data into the <literal>message</literal> "
+"attribute of the <literal>messageManager</literal> component. The action "
+"listener fires, marking the selected <literal>Message</literal> as read. At "
+"the end of the call, Seam outjects the selected <literal>Message</literal> "
+"to the context variable named <literal>message</literal>. Next, the EJB "
+"container commits the transaction, and the change to the <literal>Message</"
+"literal> is flushed to the database. Finally, the page is re-rendered, "
+"redisplaying the message list, and displaying the selected message below it."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:542
+#, no-c-format
+msgid ""
+"If the user clicks the <literal>&lt;h:commandButton&gt;</literal>, JSF calls "
+"the <literal>delete()</literal> action listener. Seam intercepts this call "
+"and injects the selected row data into the <literal>message</literal> "
+"attribute of the <literal>messageList</literal> component. The action "
+"listener fires, removing the selected <literal>Message</literal> from the "
+"list, and also calling <literal>remove()</literal> on the "
+"<literal>EntityManager</literal>. At the end of the call, Seam refreshes the "
+"<literal>messageList</literal> context variable and clears the context "
+"variable named <literal>message</literal>. The EJB container commits the "
+"transaction, and deletes the <literal>Message</literal> from the database. "
+"Finally, the page is re-rendered, redisplaying the message list."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:550
+#, no-c-format
+msgid "Seam and jBPM: the todo list example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:551
+#, no-c-format
+msgid ""
+"jBPM provides sophisticated functionality for workflow and task management. "
+"To get a small taste of how jBPM integrates with Seam, we'll show you a "
+"simple \"todo list\" application. Since managing lists of tasks is such core "
+"functionality for jBPM, there is hardly any Java code at all in this example."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:564
+#, no-c-format
+msgid ""
+"The center of this example is the jBPM process definition. There are also "
+"two JSPs and two trivial JavaBeans (There was no reason to use session "
+"beans, since they do not access the database, or have any other "
+"transactional behavior). Let's start with the process definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:575
+#, no-c-format
+msgid ""
+"&lt;process-definition name=\"todo\"&gt;\n"
+"   \n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"todo\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;task-node name=\"todo\"&gt;\n"
+"      &lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"         &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"      &lt;/task&gt;\n"
+"      &lt;transition to=\"done\"/&gt;\n"
+"   &lt;/task-node&gt;\n"
+"   \n"
+"   &lt;end-state name=\"done\"/&gt;\n"
+"   \n"
+"&lt;/process-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:578
+#, no-c-format
+msgid ""
+"The <literal>&lt;start-state&gt;</literal> node represents the logical start "
+"of the process. When the process starts, it immediately transitions to the "
+"<literal>todo</literal> node."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:583
+#, no-c-format
+msgid ""
+"The <literal>&lt;task-node&gt;</literal> node represents a <emphasis>wait "
+"state</emphasis>, where business process execution pauses, waiting for one "
+"or more tasks to be performed."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:588
+#, no-c-format
+msgid ""
+"The <literal>&lt;task&gt;</literal> element defines a task to be performed "
+"by a user. Since there is only one task defined on this node, when it is "
+"complete, execution resumes, and we transition to the end state. The task "
+"gets its description from a Seam component named <literal>todoList</literal> "
+"(one of the JavaBeans)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:593
+#, no-c-format
+msgid ""
+"Tasks need to be assigned to a user or group of users when they are created. "
+"In this case, the task is assigned to the current user, which we get from a "
+"built-in Seam component named <literal>actor</literal>. Any Seam component "
+"may be used to perform task assignment."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:598
+#, no-c-format
+msgid ""
+"The <literal>&lt;end-state&gt;</literal> node defines the logical end of the "
+"business process. When execution reaches this node, the process instance is "
+"destroyed."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:605
+#, no-c-format
+msgid ""
+"If we view this process definition using the process definition editor "
+"provided by JBossIDE, this is what it looks like:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:616
+#, no-c-format
+msgid ""
+"This document defines our <emphasis>business process</emphasis> as a graph "
+"of nodes. This is the most trivial possible business process: there is one "
+"<emphasis>task</emphasis> to be performed, and when that task is complete, "
+"the business process ends."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:619
+#, no-c-format
+msgid ""
+"The first JavaBean handles the login screen <literal>login.jsp</literal>. "
+"Its job is just to initialize the jBPM actor id using the <literal>actor</"
+"literal> component. (In a real application, it would also need to "
+"authenticate the user.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:622
+#, no-c-format
+msgid ""
+"@Name(\"login\")\n"
+"public class Login {\n"
+"   \n"
+"   @In\n"
+"   private Actor actor;\n"
+"   \n"
+"   private String user;\n"
+"\n"
+"   public String getUser() {\n"
+"      return user;\n"
+"   }\n"
+"\n"
+"   public void setUser(String user) {\n"
+"      this.user = user;\n"
+"   }\n"
+"   \n"
+"   public String login()\n"
+"   {\n"
+"      actor.setId(user);\n"
+"      return \"/todo.jsp\";\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:623
+#, no-c-format
+msgid ""
+"Here we see the use of <literal>@In</literal> to inject the built-in "
+"<literal>Actor</literal> component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:626
+#, no-c-format
+msgid "The JSP itself is trivial:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:629
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"&#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"&#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Login&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Login&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    &lt;h:form&gt;\n"
+"      &lt;div&gt;\n"
+"        &lt;h:inputText value=\"#{login.user}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Login\" action=\"#{login.login}\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"    &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:630
+#, no-c-format
+msgid ""
+"The second JavaBean is responsible for starting business process instances, "
+"and ending tasks."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:639
+#, no-c-format
+msgid ""
+"@Name(\"todoList\")\n"
+"public class TodoList {\n"
+"   \n"
+"   private String description;\n"
+"   \n"
+"   public String getDescription()\n"
+"   {\n"
+"      return description;\n"
+"   }\n"
+"\n"
+"   public void setDescription(String description) {\n"
+"      this.description = description;\n"
+"   }\n"
+"   \n"
+"   @CreateProcess(definition=\"todo\")\n"
+"   public void createTodo() {}\n"
+"   \n"
+"   @StartTask @EndTask\n"
+"   public void done() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:642
+#, no-c-format
+msgid ""
+"The description property accepts user input form the JSP page, and exposes "
+"it to the process definition, allowing the task description to be set."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:647
+#, no-c-format
+msgid ""
+"The Seam <literal>@CreateProcess</literal> annotation creates a new jBPM "
+"process instance for the named process definition."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:652
+#, no-c-format
+msgid ""
+"The Seam <literal>@StartTask</literal> annotation starts work on a task. The "
+"<literal>@EndTask</literal> ends the task, and allows the business process "
+"execution to resume."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:659
+#, no-c-format
+msgid ""
+"In a more realistic example, <literal>@StartTask</literal> and "
+"<literal>@EndTask</literal> would not appear on the same method, because "
+"there is usually work to be done using the application in order to complete "
+"the task."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:662
+#, no-c-format
+msgid "Finally, the meat of the application is in <literal>todo.jsp</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:665
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://jboss.com/products/seam/taglib\" prefix=\"s\" "
+"&#37;&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Todo List&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Todo List&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"   &lt;h:form id=\"list\"&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:outputText value=\"There are no todo items.\" rendered=\"#"
+"{empty \n"
+"             taskInstanceList}\"/&gt;\n"
+"         &lt;h:dataTable value=\"#{taskInstanceList}\" var=\"task\" rendered="
+"\"#{not empty taskInstanceList}\"&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Description\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.description}\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Created\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:outputText value=\"#{task.taskMgmtInstance."
+"processInstance.start}\"&gt;\n"
+"                    &lt;f:convertDateTime type=\"date\"/&gt;\n"
+"                &lt;/h:outputText&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Priority\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.priority}\" style=\"width: 30"
+"\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Due Date\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.dueDate}\" style=\"width: 100"
+"\"&gt;\n"
+"                    &lt;f:convertDateTime type=\"date\" dateStyle=\"short\"/"
+"&gt;\n"
+"                &lt;/h:inputText&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;s:button value=\"Done\" action=\"#{todoList.done}\" "
+"taskInstance=\"#{task}\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"         &lt;/h:dataTable&gt;\n"
+"      &lt;/div&gt;\n"
+"      &lt;div&gt;\n"
+"      &lt;h:messages/&gt;\n"
+"      &lt;/div&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:commandButton value=\"Update Items\" action=\"update\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"   &lt;h:form id=\"new\"&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:inputText value=\"#{todoList.description}\"/&gt;\n"
+"         &lt;h:commandButton value=\"Create New Item\" action=\"#{todoList."
+"createTodo}\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:666
+#, no-c-format
+msgid "Let's take this one piece at a time."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:669
+#, no-c-format
+msgid ""
+"The page renders a list of tasks, which it gets from a built-in Seam "
+"component named <literal>taskInstanceList</literal>. The list is defined "
+"inside a JSF form."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:672
+#, no-c-format
+msgid ""
+"&lt;h:form id=\"list\"&gt;\n"
+"   &lt;div&gt;\n"
+"      &lt;h:outputText value=\"There are no todo items.\" rendered=\"#{empty "
+"taskInstanceList}\"/&gt;\n"
+"      &lt;h:dataTable value=\"#{taskInstanceList}\" var=\"task\" rendered=\"#"
+"{not empty taskInstanceList}\"&gt;\n"
+"         ...\n"
+"      &lt;/h:dataTable&gt;\n"
+"   &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:673
+#, no-c-format
+msgid ""
+"Each element of the list is an instance of the jBPM class "
+"<literal>TaskInstance</literal>. The following code simply displays the "
+"interesting properties of each task in the list. For the description, "
+"priority and due date, we use input controls, to allow the user to update "
+"these values."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:676
+#, no-c-format
+msgid ""
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"       &lt;h:outputText value=\"Description\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.description}\"/&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Created\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:outputText value=\"#{task.taskMgmtInstance.processInstance.start}"
+"\"&gt;\n"
+"        &lt;f:convertDateTime type=\"date\"/&gt;\n"
+"    &lt;/h:outputText&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Priority\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.priority}\" style=\"width: 30\"/&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Due Date\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.dueDate}\" style=\"width: 100\"&gt;\n"
+"        &lt;f:convertDateTime type=\"date\" dateStyle=\"short\"/&gt;\n"
+"    &lt;/h:inputText&gt;\n"
+"&lt;/h:column&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:677
+#, no-c-format
+msgid ""
+"This button ends the task by calling the action method annotated "
+"<literal>@StartTask @EndTask</literal>. It passes the task id to Seam as a "
+"request parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:680
+#, no-c-format
+msgid ""
+"&lt;h:column&gt;\n"
+"    &lt;s:button value=\"Done\" action=\"#{todoList.done}\" taskInstance=\"#"
+"{task}\"/&gt;\n"
+"&lt;/h:column&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:681
+#, no-c-format
+msgid ""
+"(Note that this is using a Seam <literal>&lt;s:button&gt;</literal> JSF "
+"control from the <literal>seam-ui.jar</literal> package.)"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:684
+#, no-c-format
+msgid ""
+"This button is used to update the properties of the tasks. When the form is "
+"submitted, Seam and jBPM will make any changes to the tasks persistent. "
+"There is no need for any action listener method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:687
+#, no-c-format
+msgid "&lt;h:commandButton value=\"Update Items\" action=\"update\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:688
+#, no-c-format
+msgid ""
+"A second form on the page is used to create new items, by calling the action "
+"method annotated <literal>@CreateProcess</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:691
+#, no-c-format
+msgid ""
+"&lt;h:form id=\"new\"&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:inputText value=\"#{todoList.description}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Create New Item\" action=\"#{todoList."
+"createTodo}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:692
+#, no-c-format
+msgid ""
+"There are several other files needed for the example, but they are just "
+"standard jBPM and Seam configuration and not very interesting."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:699 Tutorial.xml:814 Tutorial.xml:1157 Tutorial.xml:1178
+#: Tutorial.xml:1191
+#, no-c-format
+msgid "TODO"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:707
+#, no-c-format
+msgid "Seam pageflow: the numberguess example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:708
+#, no-c-format
+msgid ""
+"For Seam applications with relatively freeform (ad hoc) navigation, JSF/Seam "
+"navigation rules are a perfectly good way to define the page flow. For "
+"applications with a more constrained style of navigation, especially for "
+"user interfaces which are more stateful, navigation rules make it difficult "
+"to really understand the flow of the system. To understand the flow, you "
+"need to piece it together from the view pages, the actions and the "
+"navigation rules."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:711
+#, no-c-format
+msgid ""
+"Seam allows you to use a jPDL process definition to define pageflow. The "
+"simple number guessing example shows how this is done."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:724
+#, no-c-format
+msgid ""
+"The example is implemented using one JavaBean, three JSP pages and a jPDL "
+"pageflow definition. Let's begin with the pageflow:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:734
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"numberGuess\"&gt;\n"
+"   \n"
+"   &lt;start-page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"          &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"      &lt;/transition&gt;\n"
+"   &lt;/start-page&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess."
+"correctGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateRemainingGuesses\" expression=\"#{numberGuess."
+"lastGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"lose\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"displayGuess\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"lose\" view-id=\"/lose.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:737
+#, no-c-format
+msgid ""
+"The <literal>&lt;page&gt;</literal> element defines a wait state where the "
+"system displays a particular JSF view and waits for user input. The "
+"<literal>view-id</literal> is the same JSF view id used in plain JSF "
+"navigation rules. The <literal>redirect</literal> attribute tells Seam to "
+"use post-then-redirect when navigating to the page. (This results in "
+"friendly browser URLs.)"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:742
+#, no-c-format
+msgid ""
+"The <literal>&lt;transition&gt;</literal> element names a JSF outcome. The "
+"transition is triggered when a JSF action results in that outcome. Execution "
+"will then proceed to the next node of the pageflow graph, after invocation "
+"of any jBPM transition actions."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:747
+#, no-c-format
+msgid ""
+"A transition <literal>&lt;action&gt;</literal> is just like a JSF action, "
+"except that it occurs when a jBPM transition occurs. The transition action "
+"can invoke any Seam component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:752
+#, no-c-format
+msgid ""
+"A <literal>&lt;decision&gt;</literal> node branches the pageflow, and "
+"determines the next node to execute by evaluating a JSF EL expression."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:759
+#, no-c-format
+msgid "Here is what the pageflow looks like in the JBossIDE pageflow editor:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:770
+#, no-c-format
+msgid ""
+"Now that we have seen the pageflow, it is very, very easy to understand the "
+"rest of the application!"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:773
+#, no-c-format
+msgid ""
+"Here is the main page of the application, <literal>numberGuess.jsp</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:776
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"&#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"&#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Guess a number...&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Guess a number...&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    &lt;h:form&gt;\n"
+"        &lt;h:outputText value=\"Higher!\" rendered=\"#{numberGuess."
+"randomNumber&gt;numberGuess.currentGuess}\" /&gt;\n"
+"        &lt;h:outputText value=\"Lower!\" rendered=\"#{numberGuess."
+"randomNumber&lt;numberGuess.currentGuess}\" /&gt;\n"
+"        &lt;br /&gt;\n"
+"        I'm thinking of a number between &lt;h:outputText value=\"#"
+"{numberGuess.smallest}\" /&gt; and \n"
+"        &lt;h:outputText value=\"#{numberGuess.biggest}\" /&gt;. You have \n"
+"        &lt;h:outputText value=\"#{numberGuess.remainingGuesses}\" /&gt; "
+"guesses.\n"
+"        &lt;br /&gt;\n"
+"        Your guess: \n"
+"        &lt;h:inputText value=\"#{numberGuess.currentGuess}\" id=\"guess\" "
+"required=\"true\"&gt;\n"
+"            &lt;f:validateLongRange\n"
+"                maximum=\"#{numberGuess.biggest}\" \n"
+"                minimum=\"#{numberGuess.smallest}\"/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"        &lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"guess"
+"\" /&gt;\n"
+"        &lt;br/&gt;\n"
+"        &lt;h:message for=\"guess\" style=\"color: red\"/&gt;\n"
+"    &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:777
+#, no-c-format
+msgid ""
+"Notice how the command button names the <literal>guess</literal> transition "
+"instead of calling an action directly."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:780
+#, no-c-format
+msgid "The <literal>win.jsp</literal> page is predictable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:783
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"&#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"&#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;You won!&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;You won!&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    Yes, the answer was &lt;h:outputText value=\"#{numberGuess.currentGuess}"
+"\" /&gt;.\n"
+"    It took you &lt;h:outputText value=\"#{numberGuess.guessCount}\" /&gt; "
+"guesses.\n"
+"    Would you like to &lt;a href=\"numberGuess.seam\"&gt;play again&lt;/"
+"a&gt;?\n"
+"  &lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:784
+#, no-c-format
+msgid ""
+"As is <literal>lose.jsp</literal> (which I can't be bothered copy/pasting). "
+"Finally, the JavaBean Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:792
+#, no-c-format
+msgid ""
+"@Name(\"numberGuess\")\n"
+"@Scope(ScopeType.CONVERSATION)\n"
+"public class NumberGuess {\n"
+"   \n"
+"   private int randomNumber;\n"
+"   private Integer currentGuess;\n"
+"   private int biggest;\n"
+"   private int smallest;\n"
+"   private int guessCount;\n"
+"   private int maxGuesses;\n"
+"   \n"
+"   @Create \n"
+"   @Begin(pageflow=\"numberGuess\")\n"
+"   public void begin()\n"
+"   {\n"
+"      randomNumber = new Random().nextInt(100);\n"
+"      guessCount = 0;\n"
+"      biggest = 100;\n"
+"      smallest = 1;\n"
+"   }\n"
+"   \n"
+"   public void setCurrentGuess(Integer guess)\n"
+"   {\n"
+"      this.currentGuess = guess;\n"
+"   }\n"
+"   \n"
+"   public Integer getCurrentGuess()\n"
+"   {\n"
+"      return currentGuess;\n"
+"   }\n"
+"   \n"
+"   public void guess()\n"
+"   {\n"
+"      if (currentGuess&gt;randomNumber)\n"
+"      {\n"
+"         biggest = currentGuess - 1;\n"
+"      }\n"
+"      if (currentGuess&lt;randomNumber)\n"
+"      {\n"
+"         smallest = currentGuess + 1;\n"
+"      }\n"
+"      guessCount ++;\n"
+"   }\n"
+"   \n"
+"   public boolean isCorrectGuess()\n"
+"   {\n"
+"      return currentGuess==randomNumber;\n"
+"   }\n"
+"   \n"
+"   public int getBiggest()\n"
+"   {\n"
+"      return biggest;\n"
+"   }\n"
+"   \n"
+"   public int getSmallest()\n"
+"   {\n"
+"      return smallest;\n"
+"   }\n"
+"   \n"
+"   public int getGuessCount()\n"
+"   {\n"
+"      return guessCount;\n"
+"   }\n"
+"   \n"
+"   public boolean isLastGuess()\n"
+"   {\n"
+"      return guessCount==maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getRemainingGuesses() {\n"
+"      return maxGuesses-guessCount;\n"
+"   }\n"
+"\n"
+"   public void setMaxGuesses(int maxGuesses) {\n"
+"      this.maxGuesses = maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getMaxGuesses() {\n"
+"      return maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getRandomNumber() {\n"
+"      return randomNumber;\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:795
+#, no-c-format
+msgid ""
+"The first time a JSP page asks for a <literal>numberGuess</literal> "
+"component, Seam will create a new one for it, and the <literal>@Create</"
+"literal> method will be invoked, allowing the component to initialize itself."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:800
+#, no-c-format
+msgid ""
+"The <literal>@Begin</literal> annotation starts a Seam "
+"<emphasis>conversation</emphasis> (much more about that later), and "
+"specifies the pageflow definition to use for the conversation's page flow."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:807
+#, no-c-format
+msgid ""
+"As you can see, this Seam component is pure business logic! It doesn't need "
+"to know anything at all about the user interaction flow. This makes the "
+"component potentially more reuseable."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:822
+#, no-c-format
+msgid "A complete Seam application: the Hotel Booking example"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:824
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:825
+#, no-c-format
+msgid ""
+"The booking application is a complete hotel room reservation system "
+"incorporating the following features:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:830
+#, no-c-format
+msgid "User registration"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:835
+#, no-c-format
+msgid "Login"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:840
+#, no-c-format
+msgid "Logout"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:845
+#, no-c-format
+msgid "Set password"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:850
+#, no-c-format
+msgid "Hotel search"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:855
+#, no-c-format
+msgid "Hotel selection"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:860
+#, no-c-format
+msgid "Room reservation"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:865
+#, no-c-format
+msgid "Reservation confirmation"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:870
+#, no-c-format
+msgid "Existing reservation list"
+msgstr ""
+
+#. Tag: screeninfo
+#: Tutorial.xml:875
+#, no-c-format
+msgid "Booking example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:883
+#, no-c-format
+msgid ""
+"The booking application uses JSF, EJB 3.0 and Seam, together with Facelets "
+"for the view. There is also a port of this application to JSF, Facelets, "
+"Seam, JavaBeans and Hibernate3."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:886
+#, no-c-format
+msgid ""
+"One of the things you'll notice if you play with this application for long "
+"enough is that it is extremely <emphasis>robust</emphasis>. You can play "
+"with back buttons and browser refresh and opening multiple windows and "
+"entering nonsensical data as much as you like and you will find it very "
+"difficult to make the application crash. You might think that we spent weeks "
+"testing and fixing bugs to achive this. Actually, this is not the case. Seam "
+"was designed to make it very straightforward to build robust web "
+"applications and a lot of robustness that you are probably used to having to "
+"code yourself comes naturally and automatically with Seam."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:889
+#, no-c-format
+msgid ""
+"As you browse the sourcecode of the example application, and learn how the "
+"application works, observe how the declarative state management and "
+"integrated validation has been used to achieve this robustness."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:895
+#, no-c-format
+msgid "Overview of the booking example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:896
+#, no-c-format
+msgid ""
+"The project structure is identical to the previous one, to install and "
+"deploy this application, please refer to <xref linkend=\"Seam_Tutorial-"
+"Try_the_examples\"/>. Once you've successfully started the application, you "
+"can access it by pointing your browser to <ulink url=\"http://localhost:8080/"
+"seam-booking/\"><literal>http://localhost:8080/seam-booking/</literal></"
+"ulink>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:899
+#, no-c-format
+msgid ""
+"Just ten classes (plus six session beans local interfaces and 1 annotation "
+"interface) where used to implement this application. Six session bean action "
+"listeners contain all the business logic for the listed features."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:904
+#, no-c-format
+msgid ""
+"<literal>BookingListAction</literal> retrieves existing bookings for the "
+"currently logged in user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:907
+#, no-c-format
+msgid ""
+"<literal>ChangePasswordAction</literal> updates the password of the "
+"currently logged in user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:910
+#, no-c-format
+msgid ""
+"<literal>HotelBookingAction</literal> implements the core functionality of "
+"the application: hotel room searching, selection, booking and booking "
+"confirmation. This functionality is implemented as a <emphasis>conversation</"
+"emphasis>, so this is the most interesting class in the application."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:913
+#, no-c-format
+msgid ""
+"<literal>LoginAction</literal> validates the login details and retrieves the "
+"logged in user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:916
+#, no-c-format
+msgid "<literal>LogoutAction</literal> ends the login session."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:919
+#, no-c-format
+msgid "<literal>RegisterAction</literal> registers a new system user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:922
+#, no-c-format
+msgid "Three entity beans implement the application's persistent domain model."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:927
+#, no-c-format
+msgid "<literal>Hotel</literal> is an entity bean that represent a hotel"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:930
+#, no-c-format
+msgid ""
+"<literal>Booking</literal> is an entity bean that represents an existing "
+"booking"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:933
+#, no-c-format
+msgid ""
+"<literal>User</literal> is an entity bean to represents a user who can make "
+"hotel bookings"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:936
+#, no-c-format
+msgid ""
+"Finally, the <literal>LoggedIn</literal> annotation and the "
+"<literal>LoggedInInterceptor</literal> are used to protect actions that "
+"require a logged in user."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:942
+#, no-c-format
+msgid "Understanding Seam conversations"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:943
+#, no-c-format
+msgid ""
+"We encourage you browse the sourcecode at your pleasure. In this tutorial "
+"we'll concentrate upon one particular piece of functionality: hotel search, "
+"selection, booking and confirmation. From the point of view of the user, "
+"everything from selecting a hotel to confirming a booking is one continuous "
+"unit of work, a <emphasis>conversation</emphasis>. Searching, however, is "
+"<emphasis>not</emphasis> part of the conversation. The user can select "
+"multiple hotels from the same search results page, in different browser tabs."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:946
+#, no-c-format
+msgid ""
+"Most web application architectures have no first class construct to "
+"represent a conversation. This causes enormous problems managing state "
+"associated with the conversation. Usually, Java web applications use a "
+"combination of two techniques: first, some state is thrown into the "
+"<literal>HttpSession</literal>; second, persistable state is flushed to the "
+"database after every request, and reconstructed from the database at the "
+"beginning of each new request."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:949
+#, no-c-format
+msgid ""
+"Since the database is the least scalable tier, this often results in an "
+"utterly unacceptable lack of scalability. Added latency is also a problem, "
+"due to the extra traffic to and from the database on every request. To "
+"reduce this redundant traffic, Java applications often introduce a data "
+"(second-level) cache that keeps commonly accessed data between requests. "
+"This cache is necessarily inefficient, because invalidation is based upon an "
+"LRU policy instead of being based upon when the user has finished working "
+"with the data. Furthermore, because the cache is shared between many "
+"concurrent transactions, we've introduced a whole raft of problem's "
+"associated with keeping the cached state consistent with the database."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:952
+#, no-c-format
+msgid ""
+"Now consider the state held in the <literal>HttpSession</literal>. By very "
+"careful programming, we might be able to control the size of the session "
+"data. This is a lot more difficult than it sounds, since web browsers permit "
+"ad hoc non-linear navigation. But suppose we suddenly discover a system "
+"requirement that says that a user is allowed to have <emphasis>mutiple "
+"concurrent conversations</emphasis>, halfway through the development of the "
+"system (this has happened to me). Developing mechanisms to isolate session "
+"state associated with different concurrent conversations, and incorporating "
+"failsafes to ensure that conversation state is destroyed when the user "
+"aborts one of the conversations by closing a browser window or tab is not "
+"for the faint hearted (I've implemented this stuff twice so far, once for a "
+"client application, once for Seam, but I'm famously psychotic)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:955
+#, no-c-format
+msgid "Now there is a better way."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:958
+#, no-c-format
+msgid ""
+"Seam introduces the <emphasis>conversation context</emphasis> as a first "
+"class construct. You can safely keep conversational state in this context, "
+"and be assured that it will have a well-defined lifecycle. Even better, you "
+"won't need to be continually pushing data back and forth between the "
+"application server and the database, since the conversation context is a "
+"natural cache of data that the user is currently working with."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:961
+#, no-c-format
+msgid ""
+"Usually, the components we keep in the conversation context are stateful "
+"session beans. (We can also keep entity beans and JavaBeans in the "
+"conversation context.) There is an ancient canard in the Java community that "
+"stateful session beans are a scalability killer. This may have been true in "
+"1998 when WebFoobar 1.0 was released. It is no longer true today. "
+"Application servers like JBoss 4.0 have extremely sophisticated mechanisms "
+"for stateful session bean state replication. (For example, the JBoss EJB3 "
+"container performs fine-grained replication, replicating only those bean "
+"attribute values which actually changed.) Note that all the traditional "
+"technical arguments for why stateful beans are inefficient apply equally to "
+"the <literal>HttpSession</literal>, so the practice of shifting state from "
+"business tier stateful session bean components to the web session to try and "
+"improve performance is unbelievably misguided. It is certainly possible to "
+"write unscalable applications using stateful session beans, by using "
+"stateful beans incorrectly, or by using them for the wrong thing. But that "
+"doesn't mean you should <emphasis>never</emphasis> use them. Anyway, Seam "
+"guides you toward a safe usage model. Welcome to 2005."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:964
+#, no-c-format
+msgid "OK, I'll stop ranting now, and get back to the tutorial."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:967
+#, no-c-format
+msgid ""
+"The booking example application shows how stateful components with different "
+"scopes can collaborate together to achieve complex behaviors. The main page "
+"of the booking application allows the user to search for hotels. The search "
+"results are kept in the Seam session scope. When the user navigates to one "
+"of these hotels, a conversation begins, and a conversation scoped component "
+"calls back to the session scoped component to retrieve the selected hotel."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:970
+#, no-c-format
+msgid ""
+"The booking example also demonstrates the use of Ajax4JSF to implement rich "
+"client behavior without the use of handwritten JavaScript."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:973
+#, no-c-format
+msgid ""
+"The search functionality is implemented using a session-scope stateful "
+"session bean, similar to the one we saw in the message list example above."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:983
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"hotelSearch\")\n"
+"@Scope(ScopeType.SESSION)\n"
+"@LoggedIn\n"
+"public class HotelSearchingAction implements HotelSearching\n"
+"{\n"
+"   \n"
+"   @PersistenceContext\n"
+"   private EntityManager em;\n"
+"   \n"
+"   private String searchString;\n"
+"   private int pageSize = 10;\n"
+"   private int page;\n"
+"   \n"
+"   @DataModel\n"
+"   private List&lt;Hotel&gt; hotels;\n"
+"   \n"
+"   public String find()\n"
+"   {\n"
+"      page = 0;\n"
+"      queryHotels();   \n"
+"      return \"main\";\n"
+"   }\n"
+"\n"
+"   public String nextPage()\n"
+"   {\n"
+"      page++;\n"
+"      queryHotels();\n"
+"      return \"main\";\n"
+"   }\n"
+"      \n"
+"   private void queryHotels()\n"
+"   {\n"
+"      String searchPattern = searchString==null ? \"&#37;\" : '&#37;' + \n"
+"          searchString.toLowerCase().replace('*', '&#37;') + '&#37;';\n"
+"      hotels = em.createQuery(\"select h from Hotel h where lower(h.name) "
+"like\n"
+"          :search or lower(h.city) like :search \n"
+"          or lower(h.zip) like :search or lower(h.address) like :search\")\n"
+"            .setParameter(\"search\", searchPattern)\n"
+"            .setMaxResults(pageSize)\n"
+"            .setFirstResult( page * pageSize )\n"
+"            .getResultList();\n"
+"   }\n"
+"   \n"
+"   public boolean isNextPageAvailable()\n"
+"   {\n"
+"      return hotels!=null &amp;&amp; hotels.size()==pageSize;\n"
+"   }\n"
+"   \n"
+"   public int getPageSize() {\n"
+"      return pageSize;\n"
+"   }\n"
+"\n"
+"   public void setPageSize(int pageSize) {\n"
+"      this.pageSize = pageSize;\n"
+"   }\n"
+"\n"
+"   public String getSearchString()\n"
+"   {\n"
+"      return searchString;\n"
+"   }\n"
+"\n"
+"   public void setSearchString(String searchString)\n"
+"   {\n"
+"      this.searchString = searchString;\n"
+"   }\n"
+"   \n"
+"   @Destroy @Remove\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:986
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Stateful</literal> annotation identifies this "
+"class as a stateful session bean. Stateful session beans are scoped to the "
+"conversation context by default."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:991
+#, no-c-format
+msgid ""
+"The <literal>@LoggedIn</literal> annotation applies a custom Seam "
+"interceptor to the component. This works because <literal>@LoggedIn</"
+"literal> is marked with an <literal>@Interceptor</literal> meta-annotation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:996
+#, no-c-format
+msgid ""
+"The <link linkend=\"datamodel-annotation\"><literal>@DataModel</literal></"
+"link> annotation exposes a <literal>List</literal> as a JSF "
+"<literal>ListDataModel</literal>. This makes it easy to implement clickable "
+"lists for search screens. In this case, the list of hotels is exposed to the "
+"page as a <literal>ListDataModel</literal> in the conversation variable "
+"named <literal>hotels</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1001
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Remove</literal> annotation specifies that a "
+"stateful session bean should be removed and its state destroyed after "
+"invocation of the annotated method. In Seam, all stateful session beans "
+"should define a method marked <literal>@Destroy @Remove</literal>. This is "
+"the EJB remove method that will be called when Seam destroys the session "
+"context. Actually, the <link linkend=\"destroy-annotation"
+"\"><literal>@Destroy</literal></link> annotation is of more general "
+"usefulness, since it can be used for any kind of cleanup that should happen "
+"when any Seam context ends. If you don't have an <literal>@Destroy @Remove</"
+"literal> method, state will leak and you will suffer performance problems."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1008
+#, no-c-format
+msgid ""
+"The main page of the application is a Facelets page. Let's look at the "
+"fragment which relates to searching for hotels:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1018
+#, no-c-format
+msgid ""
+"&lt;div class=\"section\"&gt;\n"
+"&lt;h:form&gt;\n"
+"  \n"
+"  &lt;span class=\"errors\"&gt;\n"
+"    &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"  &lt;/span&gt;\n"
+"    \n"
+"  &lt;h1&gt;Search Hotels&lt;/h1&gt;\n"
+"  &lt;fieldset&gt; \n"
+"     &lt;h:inputText value=\"#{hotelSearch.searchString}\" style=\"width: "
+"165px;\"&gt;\n"
+"        &lt;a:support event=\"onkeyup\" actionListener=\"#{hotelSearch.find}"
+"\" \n"
+"                   reRender=\"searchResults\" /&gt;\n"
+"     &lt;/h:inputText&gt;\n"
+"     &amp;#160;\n"
+"     &lt;a:commandButton value=\"Find Hotels\" action=\"#{hotelSearch.find}"
+"\" \n"
+"                      styleClass=\"button\" reRender=\"searchResults\"/&gt;\n"
+"     &amp;#160;\n"
+"     &lt;a:status&gt;\n"
+"        &lt;f:facet name=\"start\"&gt;\n"
+"           &lt;h:graphicImage value=\"/img/spinner.gif\"/&gt;\n"
+"        &lt;/f:facet&gt;\n"
+"     &lt;/a:status&gt;\n"
+"     &lt;br/&gt;\n"
+"     &lt;h:outputLabel for=\"pageSize\"&gt;Maximum results:&lt;/h:"
+"outputLabel&gt;&amp;#160;\n"
+"     &lt;h:selectOneMenu value=\"#{hotelSearch.pageSize}\" id=\"pageSize"
+"\"&gt;\n"
+"        &lt;f:selectItem itemLabel=\"5\" itemValue=\"5\"/&gt;\n"
+"        &lt;f:selectItem itemLabel=\"10\" itemValue=\"10\"/&gt;\n"
+"        &lt;f:selectItem itemLabel=\"20\" itemValue=\"20\"/&gt;\n"
+"     &lt;/h:selectOneMenu&gt;\n"
+"  &lt;/fieldset&gt;\n"
+"    \n"
+"&lt;/h:form&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;a:outputPanel id=\"searchResults\"&gt;\n"
+"  &lt;div class=\"section\"&gt;\n"
+"  &lt;h:outputText value=\"No Hotels Found\" \n"
+"                rendered=\"#{hotels != null and hotels.rowCount==0}\"/&gt;\n"
+"  &lt;h:dataTable value=\"#{hotels}\" var=\"hot\" rendered=\"#{hotels."
+"rowCount&gt;0}\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Name&lt;/f:facet&gt;\n"
+"      #{hot.name}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Address&lt;/f:facet&gt;\n"
+"      #{hot.address}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;City, State&lt;/f:facet&gt;\n"
+"      #{hot.city}, #{hot.state}, #{hot.country}\n"
+"    &lt;/h:column&gt; \n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Zip&lt;/f:facet&gt;\n"
+"      #{hot.zip}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"      &lt;s:link value=\"View Hotel\" action=\"#{hotelBooking.selectHotel"
+"(hot)}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"  &lt;/h:dataTable&gt;\n"
+"  &lt;s:link value=\"More results\" action=\"#{hotelSearch.nextPage}\" \n"
+"          rendered=\"#{hotelSearch.nextPageAvailable}\"/&gt;\n"
+"  &lt;/div&gt;\n"
+"&lt;/a:outputPanel&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1021
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:support&gt;</literal> tag allows a JSF action "
+"event listener to be called by asynchronous <literal>XMLHttpRequest</"
+"literal> when a JavaScript event like <literal>onkeyup</literal> occurs. "
+"Even better, the <literal>reRender</literal> attribute lets us render a "
+"fragment of the JSF page and perform a partial page update when the "
+"asynchronous response is received."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1026
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:status&gt;</literal> tag lets us display a "
+"cheesy annimated image while we wait for asynchronous requests to return."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1031
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:outputPanel&gt;</literal> tag defines a region "
+"of the page which can be re-rendered by an asynchronous request."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1036
+#, no-c-format
+msgid ""
+"The Seam <literal>&lt;s:link&gt;</literal> tag lets us attach a JSF action "
+"listener to an ordinary (non-JavaScript) HTML link. The advantage of this "
+"over the standard JSF <literal>&lt;h:commandLink&gt;</literal> is that it "
+"preserves the operation of \"open in new window\" and \"open in new tab\". "
+"Also notice that we use a method binding with a parameter: <literal>#"
+"{hotelBooking.selectHotel(hot)}</literal>. This is not possible in the "
+"standard Unified EL, but Seam provides an extension to the EL that lets you "
+"use parameters on any method binding expression."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1043
+#, no-c-format
+msgid ""
+"This page displays the search results dynamically as we type, and lets us "
+"choose a hotel and pass it to the <literal>selectHotel()</literal> method of "
+"the <literal>HotelBookingAction</literal>, which is where the "
+"<emphasis>really</emphasis> interesting stuff is going to happen."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1046
+#, no-c-format
+msgid ""
+"Now lets see how the booking example application uses a conversation-scoped "
+"stateful session bean to achieve a natural cache of persistent data related "
+"to the conversation. The following code example is pretty long. But if you "
+"think of it as a list of scripted actions that implement the various steps "
+"of the conversation, it's understandable. Read the class from top to bottom, "
+"as if it were a story."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1057
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"hotelBooking\")\n"
+"@LoggedIn\n"
+"public class HotelBookingAction implements HotelBooking\n"
+"{\n"
+"   \n"
+"   @PersistenceContext(type=EXTENDED)\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @In \n"
+"   private User user;\n"
+"   \n"
+"   @In(required=false) @Out\n"
+"   private Hotel hotel;\n"
+"   \n"
+"   @In(required=false) \n"
+"   @Out(required=false)\n"
+"   private Booking booking;\n"
+"     \n"
+"   @In\n"
+"   private FacesMessages facesMessages;\n"
+"      \n"
+"   @In\n"
+"   private Events events;\n"
+"   \n"
+"   @Logger \n"
+"   private Log log;\n"
+"   \n"
+"   @Begin\n"
+"   public String selectHotel(Hotel selectedHotel)\n"
+"   {\n"
+"      hotel = em.merge(selectedHotel);\n"
+"      return \"hotel\";\n"
+"   }\n"
+"   \n"
+"   public String bookHotel()\n"
+"   {      \n"
+"      booking = new Booking(hotel, user);\n"
+"      Calendar calendar = Calendar.getInstance();\n"
+"      booking.setCheckinDate( calendar.getTime() );\n"
+"      calendar.add(Calendar.DAY_OF_MONTH, 1);\n"
+"      booking.setCheckoutDate( calendar.getTime() );\n"
+"      \n"
+"      return \"book\";\n"
+"   }\n"
+"\n"
+"   public String setBookingDetails()\n"
+"   {\n"
+"      if (booking==null || hotel==null) return \"main\";\n"
+"      if ( !booking.getCheckinDate().before( booking.getCheckoutDate() ) )\n"
+"      {\n"
+"         facesMessages.add(\"Check out date must be later than check in date"
+"\");\n"
+"         return null;\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return \"confirm\";\n"
+"      }\n"
+"   }\n"
+"\n"
+"   @End\n"
+"   public String confirm()\n"
+"   {\n"
+"      if (booking==null || hotel==null) return \"main\";\n"
+"      em.persist(booking);\n"
+"      facesMessages.add\n"
+"          (\"Thank you, #{user.name}, your confimation number for #{hotel."
+"name} is #{booking.id}\");\n"
+"      log.info(\"New booking: #{booking.id} for #{user.username}\");\n"
+"      events.raiseEvent(\"bookingConfirmed\");\n"
+"      return \"confirmed\";\n"
+"   }\n"
+"   \n"
+"   @End\n"
+"   public String cancel()\n"
+"   {\n"
+"      return \"main\";\n"
+"   }\n"
+"   \n"
+"   @Destroy @Remove\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1060
+#, no-c-format
+msgid ""
+"This bean uses an EJB3 <emphasis>extended persistence context</emphasis>, so "
+"that any entity instances remain managed for the whole lifecycle of the "
+"stateful session bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1065
+#, no-c-format
+msgid ""
+"The <link linkend=\"out-annotation\"><literal>@Out</literal></link> "
+"annotation declares that an attribute value is <emphasis>outjected</"
+"emphasis> to a context variable after method invocations. In this case, the "
+"context variable named <literal>hotel</literal> will be set to the value of "
+"the <literal>hotel</literal> instance variable after every action listener "
+"invocation completes."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1070
+#, no-c-format
+msgid ""
+"The <link linkend=\"begin-annotation\"><literal>@Begin</literal></link> "
+"annotation specifies that the annotated method begins a <emphasis>long-"
+"running conversation</emphasis>, so the current conversation context will "
+"not be destroyed at the end of the request. Instead, it will be reassociated "
+"with every request from the current window, and destroyed either by timeout "
+"due to conversation inactivity or invocation of a matching <literal>@End</"
+"literal> method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1075
+#, no-c-format
+msgid ""
+"The <link linkend=\"end-annotation\"><literal>@End</literal></link> "
+"annotation specifies that the annotated method ends the current long-running "
+"conversation, so the current conversation context will be destroyed at the "
+"end of the request."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1080
+#, no-c-format
+msgid ""
+"This EJB remove method will be called when Seam destroys the conversation "
+"context. Don't ever forget to define this method!"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1087
+#, no-c-format
+msgid ""
+"<literal>HotelBookingAction</literal> contains all the action listener "
+"methods that implement selection, booking and booking confirmation, and "
+"holds state related to this work in its instance variables. We think you'll "
+"agree that this code is much cleaner and simpler than getting and setting "
+"<literal>HttpSession</literal> attributes."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1090
+#, no-c-format
+msgid ""
+"Even better, a user can have multiple isolated conversations per login "
+"session. Try it! Log in, run a search, and navigate to different hotel pages "
+"in multiple browser tabs. You'll be able to work on creating two different "
+"hotel reservations at the same time. If you leave any one conversation "
+"inactive for long enough, Seam will eventually time out that conversation "
+"and destroy its state. If, after ending a conversation, you backbutton to a "
+"page of that conversation and try to perform an action, Seam will detect "
+"that the conversation was already ended, and redirect you to the search page."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1096
+#, no-c-format
+msgid "The Seam UI control library"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1097
+#, no-c-format
+msgid ""
+"If you check inside the WAR file for the booking application, you'll find "
+"<literal>seam-ui.jar</literal> in the <literal>WEB-INF/lib</literal> "
+"directory. This package contains a number of JSF custom controls that "
+"integrate with Seam. The booking application uses the <literal>&lt;s:link&gt;"
+"</literal> control for navigation from the search screen to the hotel page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1100
+#, no-c-format
+msgid ""
+"&lt;s:link value=\"View Hotel\" action=\"#{hotelBooking.selectHotel}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1101
+#, no-c-format
+msgid ""
+"The use of <literal>&lt;s:link&gt;</literal> here allows us to attach an "
+"action listener to a HTML link without breaking the browser's \"open in new "
+"window\" feature. The standard JSF <literal>&lt;h:commandLink&gt;</literal> "
+"does not work with \"open in new window\". We'll see later that <literal>&lt;"
+"s:link&gt;</literal> also offers a number of other useful features, "
+"including conversation propagation rules."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1104
+#, no-c-format
+msgid ""
+"The booking application uses some other Seam and Ajax4JSF controls, "
+"especially on the <literal>/book.xhtml</literal> page. We won't get into the "
+"details of those controls here, but if you want to understand this code, "
+"please refer to the chapter covering Seam's functionality for JSF form "
+"validation."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1110
+#, no-c-format
+msgid "The Seam Debug Page"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1111
+#, no-c-format
+msgid ""
+"The WAR also includes <literal>seam-debug.jar</literal>. If this jar is "
+"deployed in <literal>WEB-INF/lib</literal>, along with the Facelets, and if "
+"you set the following Seam property in <literal>web.xml</literal> or "
+"<literal>seam.properties</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1114
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;org.jboss.seam.core.init.debug&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;true&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1115
+#, no-c-format
+msgid ""
+"Then the Seam debug page will be available. This page lets you browse and "
+"inspect the Seam components in any of the Seam contexts associated with your "
+"current login session. Just point your browser at <ulink url=\"http://"
+"localhost:8080/seam-booking/debug.seam\"><literal>http://localhost:8080/seam-"
+"booking/debug.seam</literal></ulink>."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1131
+#, no-c-format
+msgid "A complete application featuring Seam and jBPM: the DVD Store example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1132
+#, no-c-format
+msgid ""
+"The DVD Store demo application shows the practical usage of jBPM for both "
+"task management and pageflow."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1135
+#, no-c-format
+msgid ""
+"The user screens take advantage of a jPDL pageflow to implement searching "
+"and shopping cart functionality."
+msgstr ""
+
+#. Tag: screeninfo
+#: Tutorial.xml:1138 Tutorial.xml:1149 Tutorial.xml:1170
+#, no-c-format
+msgid "DVD Store example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1146
+#, no-c-format
+msgid ""
+"The administration screens take use jBPM to manage the approval and shipping "
+"cycle for orders. The business process may even be changed dynamically, by "
+"selecting a different process definition!"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1160
+#, no-c-format
+msgid "Look in the <literal>dvdstore</literal> directory."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1166
+#, no-c-format
+msgid ""
+"A complete application featuring Seam workspace management: the Issue "
+"Tracker example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1167
+#, no-c-format
+msgid ""
+"The Issue Tracker demo shows off Seam's workspace management functionality: "
+"the conversation switcher, conversation list and breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1181
+#, no-c-format
+msgid "Look in the <literal>issues</literal> directory."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1187
+#, no-c-format
+msgid "An example of Seam with Hibernate: the Hibernate Booking example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1188
+#, no-c-format
+msgid ""
+"The Hibernate Booking demo is a straight port of the Booking demo to an "
+"alternative architecture that uses Hibernate for persistence and JavaBeans "
+"instead of session beans."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1194
+#, no-c-format
+msgid "Look in the <literal>hibernate</literal> directory."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1200
+#, no-c-format
+msgid "A RESTful Seam application: the Blog example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1201
+#, no-c-format
+msgid ""
+"Seam makes it very easy to implement applications which keep state on the "
+"server-side. However, server-side state is not always appropriate, "
+"especially in for functionality that serves up <emphasis>content</emphasis>. "
+"For this kind of problem we often need to let the user bookmark pages and "
+"have a relatively stateless server, so that any page can be accessed at any "
+"time, via the bookmark. The Blog example shows how to a implement RESTful "
+"application using Seam. Every page of the application can be bookmarked, "
+"including the search results page."
+msgstr ""
+
+#. Tag: screeninfo
+#: Tutorial.xml:1204
+#, no-c-format
+msgid "Blog example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1212
+#, no-c-format
+msgid ""
+"The Blog example demonstrates the use of \"pull\"-style MVC, where instead "
+"of using action listener methods to retrieve data and prepare the data for "
+"the view, the view pulls data from components as it is being rendered."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1216
+#, no-c-format
+msgid "Using \"pull\"-style MVC"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1217
+#, no-c-format
+msgid ""
+"This snippet from the <literal>index.xhtml</literal> facelets page displays "
+"a list of recent blog entries:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1220
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{blog.recentBlogEntries}\" var=\"blogEntry\" rows="
+"\"3\"&gt;\n"
+"   &lt;h:column&gt;\n"
+"      &lt;div class=\"blogEntry\"&gt;\n"
+"         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"         &lt;div&gt;\n"
+"            &lt;h:outputText escape=\"false\" \n"
+"                  value=\"#{blogEntry.excerpt==null ? blogEntry.body : "
+"blogEntry.excerpt}\"/&gt;\n"
+"         &lt;/div&gt;\n"
+"         &lt;p&gt;\n"
+"            &lt;h:outputLink value=\"entry.seam\" rendered=\"#{blogEntry."
+"excerpt!=null}\"&gt;\n"
+"               &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/"
+"&gt;\n"
+"               Read more...\n"
+"            &lt;/h:outputLink&gt;\n"
+"         &lt;/p&gt;\n"
+"         &lt;p&gt;\n"
+"            [Posted on \n"
+"            &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"               &lt;f:convertDateTime timeZone=\"#{blog.timeZone}\" locale=\"#"
+"{blog.locale}\" \n"
+"                   type=\"both\"/&gt;\n"
+"            &lt;/h:outputText&gt;]\n"
+"            &amp;#160;\n"
+"            &lt;h:outputLink value=\"entry.seam\"&gt;[Link]\n"
+"               &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/"
+"&gt;\n"
+"            &lt;/h:outputLink&gt;\n"
+"         &lt;/p&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1221
+#, no-c-format
+msgid ""
+"If we navigate to this page from a bookmark, how does the data used by the "
+"<literal>&lt;h:dataTable&gt;</literal> actually get initialized? Well, what "
+"happens is that the <literal>Blog</literal> is retrieved lazily&mdash;"
+"\"pulled\"&mdash;when needed, by a Seam component named <literal>blog</"
+"literal>. This is the opposite flow of control to what is usual in "
+"traditional web action-based frameworks like Struts."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1229
+#, no-c-format
+msgid ""
+"@Name(\"blog\")\n"
+"@Scope(ScopeType.STATELESS)\n"
+"public class BlogService \n"
+"{\n"
+"   \n"
+"   @In\n"
+"   private EntityManager entityManager;\n"
+"  \n"
+"   @Unwrap\n"
+"   public Blog getBlog()\n"
+"   {\n"
+"      return (Blog) entityManager.createQuery(\"from Blog b left join fetch "
+"b.blogEntries\")\n"
+"            .setHint(\"org.hibernate.cacheable\", true)\n"
+"            .getSingleResult();\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1232
+#, no-c-format
+msgid ""
+"This component uses a <emphasis>seam-managed persistence context</emphasis>. "
+"Unlike the other examples we've seen, this persistence context is managed by "
+"Seam, instead of by the EJB3 container. The persistence context spans the "
+"entire web request, allowing us to avoid any exceptions that occur when "
+"accessing unfetched associations in the view."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1237
+#, no-c-format
+msgid ""
+"The <literal>@Unwrap</literal> annotation tells Seam to provide the return "
+"value of the method&mdash;the <literal>Blog</literal>&mdash;instead of the "
+"actual <literal>BlogService</literal> component to clients. This is the Seam "
+"<emphasis>manager component pattern</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1244
+#, no-c-format
+msgid ""
+"This is good so far, but what about bookmarking the result of form "
+"submissions, such as a search results page?"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1250
+#, no-c-format
+msgid "Bookmarkable search results page"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1251
+#, no-c-format
+msgid ""
+"The blog example has a tiny form in the top right of each page that allows "
+"the user to search for blog entries. This is defined in a file, "
+"<literal>menu.xhtml</literal>, included by the facelets template, "
+"<literal>template.xhtml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1254
+#, no-c-format
+msgid ""
+"&lt;div id=\"search\"&gt;\n"
+"   &lt;h:form&gt;\n"
+"      &lt;h:inputText value=\"#{searchAction.searchPattern}\"/&gt;\n"
+"      &lt;h:commandButton value=\"Search\" action=\"/search.xhtml\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1255
+#, no-c-format
+msgid ""
+"To implement a bookmarkable search results page, we need to perform a "
+"browser redirect after processing the search form submission. Because we "
+"used the JSF view id as the action outcome, Seam automatically redirects to "
+"the view id when the form is submitted. Alternatively, we could have defined "
+"a navigation rule like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1258
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"   &lt;navigation-case&gt;\n"
+"      &lt;from-outcome&gt;searchResults&lt;/from-outcome&gt;\n"
+"      &lt;to-view-id&gt;/search.xhtml&lt;/to-view-id&gt;\n"
+"      &lt;redirect/&gt;\n"
+"   &lt;/navigation-case&gt;\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1259
+#, no-c-format
+msgid "Then the form would have looked like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1262
+#, no-c-format
+msgid ""
+"&lt;div id=\"search\"&gt;\n"
+"   &lt;h:form&gt;\n"
+"      &lt;h:inputText value=\"#{searchAction.searchPattern}\"/&gt;\n"
+"      &lt;h:commandButton value=\"Search\" action=\"searchResults\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1263
+#, no-c-format
+msgid ""
+"But when we redirect, we need to include the values submitted with the form "
+"as request parameters, to get a bookmarkable URL like <literal>http://"
+"localhost:8080/seam-blog/search.seam?searchPattern=seam</literal>. JSF does "
+"not provide an easy way to do this, but Seam does. We use a Seam "
+"<emphasis>page parameter</emphasis>, defined in <literal>WEB-INF/pages.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1266
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   &lt;page view-id=\"/search.xhtml\"&gt;\n"
+"      &lt;param name=\"searchPattern\" value=\"#{searchService.searchPattern}"
+"\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1267
+#, no-c-format
+msgid ""
+"This tells Seam to include the value of <literal>#{searchService."
+"searchPattern}</literal> as a request parameter named "
+"<literal>searchPattern</literal> when redirecting to the page, and then re-"
+"apply the value of that parameter to the model before rendering the page."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1270
+#, no-c-format
+msgid "The redirect takes us to the <literal>search.xhtml</literal> page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1273
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{searchResults}\" var=\"blogEntry\"&gt;\n"
+"   &lt;h:column&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:outputLink value=\"entry.seam\"&gt;\n"
+"            &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"            #{blogEntry.title}\n"
+"         &lt;/h:outputLink&gt;\n"
+"         posted on \n"
+"         &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"            &lt;f:convertDateTime timeZone=\"#{blog.timeZone}\" locale=\"#"
+"{blog.locale}\" type=\"both\"/&gt;\n"
+"         &lt;/h:outputText&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1274
+#, no-c-format
+msgid ""
+"Which again uses \"pull\"-style MVC to retrieve the actual search results:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1277
+#, no-c-format
+msgid ""
+"@Name(\"searchService\")\n"
+"public class SearchService \n"
+"{\n"
+"   \n"
+"   @In\n"
+"   private EntityManager entityManager;\n"
+"   \n"
+"   private String searchPattern;\n"
+"   \n"
+"   @Factory(\"searchResults\")\n"
+"   public List&lt;BlogEntry&gt; getSearchResults()\n"
+"   {\n"
+"      if (searchPattern==null)\n"
+"      {\n"
+"         return null;\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return entityManager.createQuery(\"select be from BlogEntry be "
+"where lower(be.title)\n"
+"             like :searchPattern or lower(be.body) like :searchPattern \n"
+"             order by be.date desc\")\n"
+"               .setParameter( \"searchPattern\", getSqlSearchPattern() )\n"
+"               .setMaxResults(100)\n"
+"               .getResultList();\n"
+"      }\n"
+"   }\n"
+"\n"
+"   private String getSqlSearchPattern()\n"
+"   {\n"
+"      return searchPattern==null ? \"\" : '&#37;' + \n"
+"          searchPattern.toLowerCase().replace('*', '&#37;').replace('?', "
+"'_') + '&#37;';\n"
+"   }\n"
+"\n"
+"   public String getSearchPattern()\n"
+"   {\n"
+"      return searchPattern;\n"
+"   }\n"
+"\n"
+"   public void setSearchPattern(String searchPattern)\n"
+"   {\n"
+"      this.searchPattern = searchPattern;\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1282
+#, no-c-format
+msgid "Using \"push\"-style MVC in a RESTful application"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1283
+#, no-c-format
+msgid ""
+"Very occasionally, it makes more sense to use push-style MVC for processing "
+"RESTful pages, and so Seam provides the notion of a <emphasis>page action</"
+"emphasis>. The Blog example uses a page action for the blog entry page, "
+"<literal>entry.xhtml</literal>. Note that this is a little bit contrived, it "
+"would have been easier to use pull-style MVC here as well."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1286
+#, no-c-format
+msgid ""
+"The <literal>entryAction</literal> component works much like an action class "
+"in a traditional push-MVC action-oriented framework like Struts:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1289
+#, no-c-format
+msgid ""
+"@Name(\"entryAction\")\n"
+"@Scope(STATELESS)\n"
+"public class EntryAction\n"
+"{\n"
+"   @In(create=true) \n"
+"   private Blog blog;\n"
+"   \n"
+"   @Out\n"
+"   private BlogEntry blogEntry;\n"
+"   \n"
+"   public void loadBlogEntry(String id) throws EntryNotFoundException\n"
+"   {\n"
+"      blogEntry = blog.getBlogEntry(id);\n"
+"      if (blogEntry==null) throw new EntryNotFoundException(id);\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1290
+#, no-c-format
+msgid "Page actions are also declared in <literal>pages.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1293
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   ...\n"
+"\n"
+"   &lt;page view-id=\"/entry.xhtml\" action=\"#{entryAction.loadBlogEntry"
+"(blogEntry.id)}\"&gt;\n"
+"      &lt;param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"\n"
+"   &lt;page view-id=\"/post.xhtml\" action=\"#{loginAction.challenge}\"/"
+"&gt;\n"
+"\n"
+"   &lt;page view-id=\"*\" action=\"#{blog.hitCount.hit}\"/&gt;\n"
+"\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1294
+#, no-c-format
+msgid ""
+"Notice that the example is using page actions for some other "
+"functionality&mdash;the login challenge, and the pageview counter. Also "
+"notice the use of a parameter in the page action method binding. This is not "
+"a standard feature of JSF EL, but Seam lets you use it, not just for page "
+"actions, but also in JSF method bindings."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1297
+#, no-c-format
+msgid ""
+"When the <literal>entry.xhtml</literal> page is requested, Seam first binds "
+"the page parameter <literal>blogEntryId</literal> to the model, then runs "
+"the page action, which retrieves the needed data&mdash;the "
+"<literal>blogEntry</literal>&mdash;and places it in the Seam event context. "
+"Finally, the following is rendered:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1300
+#, no-c-format
+msgid ""
+"&lt;div class=\"blogEntry\"&gt;\n"
+"   &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"   &lt;div&gt;\n"
+"      &lt;h:outputText escape=\"false\" value=\"#{blogEntry.body}\"/&gt;\n"
+"   &lt;/div&gt;\n"
+"   &lt;p&gt;\n"
+"      [Posted on&amp;#160;\n"
+"      &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"         &lt;f:convertDateTime timezone=\"#{blog.timeZone}\" locale=\"#{blog."
+"locale}\" type=\"both\"/&gt;\n"
+"      &lt;/h:outputText&gt;]\n"
+"   &lt;/p&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1301
+#, no-c-format
+msgid ""
+"If the blog entry is not found in the database, the "
+"<literal>EntryNotFoundException</literal> exception is thrown. We want this "
+"exception to result in a 404 error, not a 505, so we annotate the exception "
+"class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1304
+#, no-c-format
+msgid ""
+"@ApplicationException(rollback=true)\n"
+"@HttpError(errorCode=HttpServletResponse.SC_NOT_FOUND)\n"
+"public class EntryNotFoundException extends Exception\n"
+"{\n"
+"   EntryNotFoundException(String id)\n"
+"   {\n"
+"      super(\"entry not found: \" + id);\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1305
+#, no-c-format
+msgid ""
+"An alternative implementation of the example does not use the parameter in "
+"the method binding:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1308
+#, no-c-format
+msgid ""
+"@Name(\"entryAction\")\n"
+"@Scope(STATELESS)\n"
+"public class EntryAction\n"
+"{\n"
+"   @In(create=true) \n"
+"   private Blog blog;\n"
+"   \n"
+"   @In @Out\n"
+"   private BlogEntry blogEntry;\n"
+"   \n"
+"   public void loadBlogEntry() throws EntryNotFoundException\n"
+"   {\n"
+"      blogEntry = blog.getBlogEntry( blogEntry.getId() );\n"
+"      if (blogEntry==null) throw new EntryNotFoundException(id);\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1309
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   ...\n"
+"\n"
+"   &lt;page view-id=\"/entry.xhtml\" action=\"#{entryAction.loadBlogEntry}"
+"\"&gt;\n"
+"      &lt;param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1310
+#, no-c-format
+msgid "It is a matter of taste which implementation you prefer."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1318
+#, no-c-format
+msgid "Running the Seam examples in JBoss using the JSF 1.2 RI"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1319
+#, no-c-format
+msgid ""
+"JBoss AS 4.0 ships with the Apache MyFaces implementation of JSF 1.1. After "
+"many months of waiting, there is <emphasis>still</emphasis> no "
+"implementation of JSF 1.2 from MyFaces. For this and other reasons, JBoss AS "
+"4.2 will embed the JSF 1.2 Reference Implementation by default. Soon after "
+"the release of 4.2, we will migrate the Seam examples to JSF 1.2."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1322
+#, no-c-format
+msgid ""
+"For those who can't wait, Seam is already compatible with JSF 1.2, and it's "
+"easy to get the Seam examples running with JSF 1.2 in JBoss 4.0.5. Let's "
+"start with the famous booking example:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1327
+#, no-c-format
+msgid ""
+"copy <literal>jsf-api.jar</literal>, <literal>jsf-impl.jar</literal>, "
+"<literal>el-api.jar</literal>, <literal>el-impl.jar</literal> to "
+"<literal>server/default/deploy/tomcat/jbossweb-tomcat55.sar/jsf-libs</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1332
+#, no-c-format
+msgid ""
+"delete <literal>myfaces-api.jar</literal> and <literal>myfaces-impl.jar</"
+"literal> from <literal>server/default/deploy/tomcat/jbossweb-tomcat55.sar/"
+"jsf-libs</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1337
+#, no-c-format
+msgid ""
+"edit <literal>server/default/deploy/tomcat/jbossweb-tomcat55.sar/conf/web."
+"xml</literal>, replacing <literal>myfaces-impl.jar</literal> with "
+"<literal>jsf-impl.jar</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1342
+#, no-c-format
+msgid ""
+"edit <literal>examples/booking/resources/WEB-INF/web.xml</literal>, deleting "
+"the MyFaces listener, uncommenting the RI listener"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1347
+#, no-c-format
+msgid ""
+"edit <literal>examples/booking/resources/WEB-INF/faces-config.xml</literal>, "
+"uncommenting the lines that install the <literal>SeamELResolver</literal> "
+"using the new JSF 1.2 XML schema declaration."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1352
+#, no-c-format
+msgid ""
+"edit <literal>examples/booking/resources/META-INF/application.xml</literal>, "
+"deleting the lines that declare <literal>el-api.jar</literal> and "
+"<literal>el-impl.jar</literal> as Java modules."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1357
+#, no-c-format
+msgid ""
+"Restart JBoss, and type <literal>ant</literal> in the <literal>examples/"
+"booking</literal> directory."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Validation.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Validation.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Validation.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,375 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Validation.xml:10
+#, no-c-format
+msgid "JSF form validation in Seam"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:11
+#, no-c-format
+msgid "In plain JSF, validation is defined in the view:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:14
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Country:\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;my:validateCountry/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Zip code:\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;my:validateZip/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:15
+#, no-c-format
+msgid ""
+"In practice, this approach usually violates DRY, since most \"validation\" "
+"actually enforces constraints that are part of the data model, and exist all "
+"the way down to the database schema definition. Seam provides support for "
+"model-based constraints defined using Hibernate Validator."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:18
+#, no-c-format
+msgid ""
+"Let's start by defining our constraints, on our <literal>Location</literal> "
+"class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:21
+#, no-c-format
+msgid ""
+"public class Location {\n"
+"    private String country;\n"
+"    private String zip;\n"
+"    \n"
+"    @NotNull\n"
+"    @Length(max=30)\n"
+"    public String getCountry() { return country; }\n"
+"    public void setCountry(String c) { country = c; }\n"
+"\n"
+"    @NotNull\n"
+"    @Length(max=6)\n"
+"    @Pattern(\"^&#92;d*&#36;\")\n"
+"    public String getZip() { return zip; }\n"
+"    public void setZip(String z) { zip = z; }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:22
+#, no-c-format
+msgid ""
+"Well, that's a decent first cut, but in practice it might be more elegant to "
+"use custom constraints instead of the ones built into Hibernate Validator:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:25
+#, no-c-format
+msgid ""
+"public class Location {\n"
+"    private String country;\n"
+"    private String zip;\n"
+"    \n"
+"    @NotNull\n"
+"    @Country\n"
+"    public String getCountry() { return country; }\n"
+"    public void setCountry(String c) { country = c; }\n"
+"\n"
+"    @NotNull\n"
+"    @ZipCode\n"
+"    public String getZip() { return zip; }\n"
+"    public void setZip(String z) { zip = z; }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:26
+#, no-c-format
+msgid ""
+"Whichever route we take, we no longer need to specify the type of validation "
+"to be used in the JSF page. Instead, we can use <literal>&lt;s:validate&gt;</"
+"literal> to validate against the constraint defined on the model object."
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:29
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Country:\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;s:validate/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Zip code:\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;s:validate/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:30
+#, no-c-format
+msgid ""
+"<emphasis>Note:</emphasis> specifying <literal>@NotNull</literal> on the "
+"model does <emphasis>not</emphasis> eliminate the requirement for "
+"<literal>required=\"true\"</literal> to appear on the control! This is due "
+"to a limitation of the JSF validation architecture."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:33
+#, no-c-format
+msgid ""
+"This version is not much less verbose than what we started with, so let's "
+"try <literal>&lt;s:validateAll&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:36
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;h:inputText value=\"#{location.country}\" required=\"true\"/"
+"&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/"
+"&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:37
+#, no-c-format
+msgid ""
+"This tag simply adds an <literal>&lt;s:validate&gt;</literal> to every input "
+"in the form. For a large form, it can save a lot of typing!"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:40
+#, no-c-format
+msgid ""
+"Now we need to do something about displaying feedback to the user when "
+"validation fails. Currently we are displaying all messages at the top of the "
+"form. What we would really like to do is display the message next to the "
+"field with the error (this is possible in plain JSF), highlight the field "
+"(this is not possible) and, for good measure, display some image next the "
+"the field (also not possible)."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:43
+#, no-c-format
+msgid "Let's try out <literal>&lt;s:decorate&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:46
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;s:decorate&gt;\n"
+"                &lt;f:facet name=\"beforeInvalidField\"&gt;&lt;h:"
+"graphicImage src=\"img/error.gif\"/&gt;&lt;/f:facet&gt;\n"
+"                &lt;f:facet name=\"afterInvalidField\"&gt;&lt;s:message/&gt;"
+"&lt;/f:facet&gt;\n"
+"                &lt;f:facet name=\"aroundInvalidField\"&gt;&lt;s:span "
+"styleClass=\"error\"/&gt;&lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{location.country}\" required=\"true"
+"\"/&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;s:decorate&gt;\n"
+"                &lt;f:facet name=\"beforeInvalidField\"&gt;&lt;h:"
+"graphicImage src=\"img/error.gif\"/&gt;&lt;/f:facet&gt;\n"
+"                &lt;f:facet name=\"afterInvalidField\"&gt;&lt;s:message/&gt;"
+"&lt;/f:facet&gt;\n"
+"                &lt;f:facet name=\"aroundInvalidField\"&gt;&lt;s:span "
+"styleClass=\"error\"/&gt;&lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/"
+"&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:47
+#, no-c-format
+msgid ""
+"Well, that looks much better to the user, but it is extremely verbose. "
+"Fortunately, the facets of <literal>&lt;s:decorate&gt;</literal> may be "
+"defined on any parent element:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:50
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;f:facet name=\"beforeInvalidField\"&gt;\n"
+"        &lt;h:graphicImage src=\"img/error.gif\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;f:facet name=\"afterInvalidField\"&gt;\n"
+"        &lt;s:message/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;f:facet name=\"aroundInvalidField\"&gt;\n"
+"        &lt;s:span styleClass=\"error\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;s:decorate&gt;\n"
+"                &lt;h:inputText value=\"#{location.country}\" required=\"true"
+"\"/&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;s:decorate&gt;\n"
+"                &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/"
+"&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:51
+#, no-c-format
+msgid ""
+"This approach <emphasis>defines</emphasis> constraints on the model, and "
+"<emphasis>presents</emphasis> constraint violations in the view&mdash;a "
+"significantly better design."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:54
+#, no-c-format
+msgid ""
+"Finally, we can use Ajax4JSF to display validation messages as the user is "
+"typing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:57
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;f:facet name=\"beforeInvalidField\"&gt;\n"
+"        &lt;h:graphicImage src=\"img/error.gif\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;f:facet name=\"afterInvalidField\"&gt;\n"
+"        &lt;s:message/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;f:facet name=\"aroundInvalidField\"&gt;\n"
+"        &lt;s:span styleClass=\"error\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;s:decorate id=\"country\"&gt;\n"
+"                &lt;h:inputText value=\"#{location.country}\" required=\"true"
+"\"&gt;\n"
+"                    &lt;a:support event=\"onblur\" reRender=\"country\"/"
+"&gt;\n"
+"                &lt;/h:inputText&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;s:decorate id=\"zip\"&gt;\n"
+"                &lt;h:inputText value=\"#{location.zip}\" required=\"true"
+"\"&gt;\n"
+"                    &lt;a:support event=\"onblur\" reRender=\"zip\"/&gt;\n"
+"                &lt;/h:inputText&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Xml.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Xml.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/as-IN/Xml.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,933 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Xml.xml:10
+#, no-c-format
+msgid "Configuring Seam components"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:11
+#, no-c-format
+msgid ""
+"The philosophy of minimizing XML-based configuration is extremely strong in "
+"Seam. Nevertheless, there are various reasons why we might want to configure "
+"a Seam component using XML: to isolate deployment-specific information from "
+"the Java code, to enable the creation of re-usable frameworks, to configure "
+"Seam's built-in functionality, etc. Seam provides two basic approaches to "
+"configuring components: configuration via property settings in a properties "
+"file or <literal>web.xml</literal>, and configuration via "
+"<literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:14
+#, no-c-format
+msgid "Configuring components via property settings"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:15
+#, no-c-format
+msgid ""
+"Seam components may be provided with configuration properties either via "
+"servlet context parameters, or via a properties file named <literal>seam."
+"properties</literal> in the root of the classpath."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:18
+#, no-c-format
+msgid ""
+"The configurable Seam component must expose JavaBeans-style property setter "
+"methods for the configurable attributes. If a seam component named "
+"<literal>com.jboss.myapp.settings</literal> has a setter method named "
+"<literal>setLocale()</literal>, we can provide a property named <literal>com."
+"jboss.myapp.settings.locale</literal> in the <literal>seam.properties</"
+"literal> file or as a servlet context parameter, and Seam will set the value "
+"of the <literal>locale</literal> attribute whenever it instantiates the "
+"component."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:21
+#, no-c-format
+msgid ""
+"The same mechanism is used to configure Seam itself. For example, to set the "
+"conversation timeout, we provide a value for <literal>org.jboss.seam.core."
+"manager.conversationTimeout</literal> in <literal>web.xml</literal> or "
+"<literal>seam.properties</literal>. (There is a built-in Seam component "
+"named <literal>org.jboss.seam.core.manager</literal> with a setter method "
+"named <literal>setConversationTimeout()</literal>.)"
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:24
+#, no-c-format
+msgid "Configuring components via components.xml"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:25
+#, no-c-format
+msgid ""
+"The <literal>components.xml</literal> file is a bit more powerful than "
+"property settings. It lets you:"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:30
+#, no-c-format
+msgid ""
+"Configure components that have been installed automatically&mdash;including "
+"both built-in components, and application components that have been "
+"annotated with the <literal>@Name</literal> annotation and picked up by "
+"Seam's deployment scanner."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:35
+#, no-c-format
+msgid ""
+"Install classes with no <literal>@Name</literal> annotation as Seam "
+"components&mdash;this is most useful for certain kinds of infrastructural "
+"components which can be installed multiple times different names (for "
+"example Seam-managed persistence contexts)."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:40
+#, no-c-format
+msgid ""
+"Install components that <emphasis>do</emphasis> have a <literal>@Name</"
+"literal> annotation but are not installed by default because of an "
+"<literal>@Install</literal> annotation that indicates the component should "
+"not be installed."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:45
+#, no-c-format
+msgid "Override the scope of a component."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:50
+#, no-c-format
+msgid ""
+"A <literal>components.xml</literal> file may appear in one of three "
+"different places:"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:55
+#, no-c-format
+msgid "The <literal>WEB-INF</literal> directory of a <literal>war</literal>."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:60
+#, no-c-format
+msgid "The <literal>META-INF</literal> directory of a <literal>jar</literal>."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:65
+#, no-c-format
+msgid ""
+"Any directory of a <literal>jar</literal> that contains classes with an "
+"<literal>@Name</literal> annotation."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:70
+#, no-c-format
+msgid ""
+"Usually, Seam components are installed when the deployment scanner discovers "
+"a class with a <literal>@Name</literal> annotation sitting in an archive "
+"with a <literal>seam.properties</literal> file or a <literal>META-INF/"
+"components.xml</literal> file. (Unless the component has an "
+"<literal>@Install</literal> annotation indicating it should not be installed "
+"by default.) The <literal>components.xml</literal> file lets us handle "
+"special cases where we need to override the annotations."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:73
+#, no-c-format
+msgid ""
+"For example, the following <literal>components.xml</literal> file installs "
+"the JBoss Embeddable EJB3 container:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:76
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"&gt;\n"
+"    &lt;core:ejb/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:77
+#, no-c-format
+msgid "This example does the same thing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:80
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component class=\"org.jboss.seam.core.Ejb\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:81
+#, no-c-format
+msgid ""
+"This one installs and configures two different Seam-managed persistence "
+"contexts:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:84
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"    &lt;core:managed-persistence-context name=\"customerDatabase\"\n"
+"                persistence-unit-jndi-name=\"java:/"
+"customerEntityManagerFactory\"/&gt;\n"
+"        \n"
+"    &lt;core:managed-persistence-context name=\"accountingDatabase\"\n"
+"                persistence-unit-jndi-name=\"java:/"
+"accountingEntityManagerFactory\"/&gt;            \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:85
+#, no-c-format
+msgid "As does this one:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:88
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component name=\"customerDatabase\" \n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"customerEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"    \n"
+"    &lt;component name=\"accountingDatabase\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"accountingEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:89
+#, no-c-format
+msgid ""
+"This example creates a session-scoped Seam-managed persistence context (this "
+"is not recommended in practice):"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:92
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"  &lt;core:managed-persistence-context name=\"productDatabase\" \n"
+"                                   scope=\"session\"\n"
+"              persistence-unit-jndi-name=\"java:/productEntityManagerFactory"
+"\"/&gt;        \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:93
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"            \n"
+"    &lt;component name=\"productDatabase\"\n"
+"              scope=\"session\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"productEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:94
+#, no-c-format
+msgid ""
+"It is common to use the <literal>auto-create</literal> option for "
+"infrastructural objects like persistence contexts, which saves you from "
+"having to explicitly specify <literal>create=true</literal> when you use the "
+"<literal>@In</literal> annotation."
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:97
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"  &lt;core:managed-persistence-context name=\"productDatabase\" \n"
+"                             auto-create=\"true\"\n"
+"              persistence-unit-jndi-name=\"java:/productEntityManagerFactory"
+"\"/&gt;        \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:98
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"            \n"
+"    &lt;component name=\"productDatabase\"\n"
+"        auto-create=\"true\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"productEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:99
+#, no-c-format
+msgid ""
+"The <literal>&lt;factory&gt;</literal> declaration lets you specify a value "
+"or method binding expression that will be evaluated to initialize the value "
+"of a context variable when it is first referenced."
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:102
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"contact\" method=\"#{contactManager.loadContact}\" "
+"scope=\"CONVERSATION\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:103
+#, no-c-format
+msgid ""
+"You can create an \"alias\" (a second name) for a Seam component like so:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:106
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"user\" value=\"#{actor}\" scope=\"STATELESS\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:107
+#, no-c-format
+msgid "You can even create an \"alias\" for a commonly used expression:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:110
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"contact\" value=\"#{contactManager.contact}\" scope="
+"\"STATELESS\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:111
+#, no-c-format
+msgid ""
+"It is especially common to see the use of <literal>auto-create=\"true\"</"
+"literal> with the <literal>&lt;factory&gt;</literal> declaration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:114
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"session\" value=\"#{entityManager.delegate}\" scope="
+"\"STATELESS\" \n"
+"        auto-create=\"true\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:115
+#, no-c-format
+msgid ""
+"Sometimes we want to reuse the same <literal>components.xml</literal> file "
+"with minor changes during both deployment and testing. Seam lets you place "
+"wildcards of the form <literal>@wildcard@</literal> in the "
+"<literal>components.xml</literal> file which can be replaced either by your "
+"Ant build script (at deployment time) or by providing a file named "
+"<literal>components.properties</literal> in the classpath (at development "
+"time). You'll see this approach used in the Seam examples."
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:118
+#, no-c-format
+msgid "Fine-grained configuration files"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:119
+#, no-c-format
+msgid ""
+"If you have a large number of components that need to be configured in XML, "
+"it makes much more sense to split up the information in <literal>components."
+"xml</literal> into many small files. Seam lets you put configuration for a "
+"class named, for example, <literal>com.helloworld.Hello</literal> in a "
+"resource named <literal>com/helloworld/Hello.component.xml</literal>. (You "
+"might be familiar with this pattern, since it is the same one we use in "
+"Hibernate.) The root element of the file may be either a <literal>&lt;"
+"components&gt;</literal> or <literal>&lt;component&gt;</literal> element."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:122
+#, no-c-format
+msgid "The first option lets you define multiple components in the file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:125
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component class=\"com.helloworld.Hello\" name=\"hello\"&gt;\n"
+"        &lt;property name=\"name\"&gt;#{user.name}&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"    &lt;factory name=\"message\" value=\"#{hello.message}\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:126
+#, no-c-format
+msgid ""
+"The second option only lets you define or configure one component, but is "
+"less noisy:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:129
+#, no-c-format
+msgid ""
+"&lt;component name=\"hello\"&gt;\n"
+"    &lt;property name=\"name\"&gt;#{user.name}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:130
+#, no-c-format
+msgid ""
+"In the second option, the class name is implied by the file in which the "
+"component definition appears."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:133
+#, no-c-format
+msgid ""
+"Alternatively, you may put configuration for all classes in the <literal>com."
+"helloworld</literal> package in <literal>com/helloworld/components.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:136
+#, no-c-format
+msgid "Configurable property types"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:137
+#, no-c-format
+msgid ""
+"Properties of string, primitive or primitive wrapper type may be configured "
+"just as you would expect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:140
+#, no-c-format
+msgid "org.jboss.seam.core.manager.conversationTimeout 60000"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:141
+#, no-c-format
+msgid "&lt;core:manager conversation-timeout=\"60000\"/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:142
+#, no-c-format
+msgid ""
+"&lt;component name=\"org.jboss.seam.core.manager\"&gt;\n"
+"    &lt;property name=\"conversationTimeout\"&gt;60000&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:143
+#, no-c-format
+msgid "Arrays, sets and lists of strings or primitives are also supported:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:146
+#, no-c-format
+msgid ""
+"org.jboss.seam.core.jbpm.processDefinitions order.jpdl.xml, return.jpdl.xml, "
+"inventory.jpdl.xml"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:147
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;order.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;return.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:148
+#, no-c-format
+msgid ""
+"&lt;component name=\"org.jboss.seam.core.jbpm\"&gt;\n"
+"    &lt;property name=\"processDefinitions\"&gt;\n"
+"        &lt;value&gt;order.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;return.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:149
+#, no-c-format
+msgid ""
+"Even maps with String-valued keys and string or primitive values are "
+"supported:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:152
+#, no-c-format
+msgid ""
+"&lt;component name=\"issueEditor\"&gt;\n"
+"    &lt;property name=\"issueStatuses\"&gt;\n"
+"        &lt;key&gt;open&lt;/key&gt; &lt;value&gt;open issue&lt;/value&gt;\n"
+"        &lt;key&gt;resolved&lt;/key&gt; &lt;value&gt;issue resolved by "
+"developer&lt;/value&gt;\n"
+"        &lt;key&gt;closed&lt;/key&gt; &lt;value&gt;resolution accepted by "
+"user&lt;/value&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:153
+#, no-c-format
+msgid ""
+"Finally, you may wire together components using a value-binding expression. "
+"Note that this is quite different to injection using <literal>@In</literal>, "
+"since it happens at component instantiation time instead of invocation time. "
+"It is therefore much more similar to the dependency injection facilities "
+"offered by traditional IoC containers like JSF or Spring."
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:156
+#, no-c-format
+msgid ""
+"&lt;drools:managed-working-memory name=\"policyPricingWorkingMemory\" rule-"
+"base=\"#{policyPricingRules}\"/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:157
+#, no-c-format
+msgid ""
+"&lt;component name=\"policyPricingWorkingMemory\"\n"
+"          class=\"org.jboss.seam.drools.ManagedWorkingMemory\"&gt;\n"
+"    &lt;property name=\"ruleBase\"&gt;#{policyPricingRules}&lt;/"
+"property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:158
+#, no-c-format
+msgid "Using XML Namespaces"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:159
+#, no-c-format
+msgid ""
+"Throughout the examples, there have been two competing ways of declaring "
+"components: with and without the use of XML namespaces. The following shows "
+"a typical <literal>components.xml</literal> file without namespaces. It uses "
+"the Seam Components DTD:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:162
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"&gt;\n"
+"&lt;!DOCTYPE components PUBLIC \"-//JBoss/Seam Component Configuration DTD "
+"1.2//EN\"\n"
+"                            \"http://jboss.com/products/seam/components-1.2."
+"dtd\"&gt;\n"
+"&lt;components&gt;\n"
+"\n"
+"    &lt;component class=\"org.jboss.seam.core.init\"&gt;\n"
+"        &lt;property name=\"debug\"&gt;true&lt;/property&gt;\n"
+"        &lt;property name=\"jndiPattern\"&gt;@jndiPattern@&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"    &lt;component name=\"org.jboss.sean.core.ejb\" installed=\"@embeddedEjb@"
+"\" /&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:163
+#, no-c-format
+msgid ""
+"As you can see, this is somewhat verbose. Even worse, the component and "
+"attribute names cannot be validated at development time."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:166
+#, no-c-format
+msgid "The namespaced version looks like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:169
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                http://jboss.com/products/seam/core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components \n"
+"                 http://jboss.com/products/seam/components-1.2.xsd\"&gt;\n"
+"\n"
+"    &lt;core:init debug=\"true\" jndi-pattern=\"@jndiPattern@\"/&gt;\n"
+"\n"
+"    &lt;core:ejb installed=\"@embeddedEjb@\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:170
+#, no-c-format
+msgid ""
+"Even though the schema declarations are verbose, the actual XML content is "
+"lean and easy to understand. The schemas provide detailed information about "
+"each component and the attributes available, allowing XML editors to offer "
+"intelligent autocomplete. The use of namespaced elements makes generating "
+"and maintaining correct <literal>components.xml</literal> files much simpler."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:173
+#, no-c-format
+msgid ""
+"Now, this works great for the built-in Seam components, but what about user "
+"components? There are two options. First, Seam supports mixing the two "
+"models, allowing the use of the generic <literal>&lt;component&gt;</literal> "
+"declarations for user components, along with namespaced declarations for "
+"built-in components. But even better, Seam allows you to quickly declare "
+"namespaces for your own components."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:176
+#, no-c-format
+msgid ""
+"Any Java package can be associated with an XML namespace by annotating the "
+"package with the <literal>@Namespace</literal> annotation. (Package-level "
+"annotations are declared in a file named <literal>package-info.java</"
+"literal> in the package directory.) Here is an example from the seampay demo:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:179
+#, no-c-format
+msgid ""
+"@Namespace(value=\"http://jboss.com/products/seam/examples/seampay\")\n"
+"package org.jboss.seam.example.seampay;\n"
+"\n"
+"import org.jboss.seam.annotations.Namespace;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:180
+#, no-c-format
+msgid ""
+"That is all you need to do to use the namespaced style in "
+"<literal>components.xml</literal>! Now we can write:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:183
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pay=\"http://jboss.com/products/seam/examples/seampay\"\n"
+"            ... &gt;\n"
+"\n"
+"    &lt;pay:payment-home new-instance=\"#{newPayment}\"\n"
+"                      created-message=\"Created a new payment to #"
+"{newPayment.payee}\" /&gt;\n"
+"\n"
+"    &lt;pay:payment name=\"newPayment\"\n"
+"                 payee=\"Somebody\"\n"
+"                 account=\"#{selectedAccount}\"\n"
+"                 payment-date=\"#{currentDatetime}\"\n"
+"                 created-date=\"#{currentDatetime}\" /&gt;\n"
+"     ...\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:184
+#, no-c-format
+msgid "<para>Or:</para>"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:187
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pay=\"http://jboss.com/products/seam/examples/seampay\"\n"
+"            ... &gt;\n"
+"\n"
+"    &lt;pay:payment-home&gt;\n"
+"        &lt;pay:new-instance&gt;\"#{newPayment}\"&lt;/pay:new-instance&gt;\n"
+"        &lt;pay:created-message&gt;Created a new payment to #{newPayment."
+"payee}&lt;/pay:created-message&gt;\n"
+"    &lt;/pay:payment-home&gt;\n"
+"    \n"
+"    &lt;pay:payment name=\"newPayment\"&gt;\n"
+"        &lt;pay:payee&gt;Somebody\"&lt;/pay:payee&gt;\n"
+"        &lt;pay:account&gt;#{selectedAccount}&lt;/pay:account&gt;\n"
+"        &lt;pay:payment-date&gt;#{currentDatetime}&lt;/pay:payment-date&gt;\n"
+"        &lt;pay:created-date&gt;#{currentDatetime}&lt;/pay:created-date&gt;\n"
+"     &lt;/pay:payment&gt;\n"
+"     ...\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:188
+#, no-c-format
+msgid ""
+"These examples illustrate the two usage models of a namespaced element. In "
+"the first declaration, the <literal>&lt;pay:payment-home&gt;</literal> "
+"references the <literal>paymentHome</literal> component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:191
+#, no-c-format
+msgid ""
+"package org.jboss.seam.example.seampay;\n"
+"...\n"
+"@Name(\"paymentHome\")\n"
+"public class PaymentController\n"
+"    extends EntityHome&lt;Payment&gt;\n"
+"{\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:192
+#, no-c-format
+msgid ""
+"The element name is the hyphenated form of the component name. The "
+"attributes of the element are the hyphenated form of the property names."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:195
+#, no-c-format
+msgid ""
+"In the second declaration, the <literal>&lt;pay:payment&gt;</literal> "
+"element refers to the <literal>Payment</literal> class in the <literal>org."
+"jboss.seam.example.seampay</literal> package. In this case <literal>Payment</"
+"literal> is an entity that is being declared as a Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:198
+#, no-c-format
+msgid ""
+"package org.jboss.seam.example.seampay;\n"
+"...\n"
+"@Entity\n"
+"public class Payment\n"
+"    implements Serializable\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:199
+#, no-c-format
+msgid ""
+"If we want validation and autocompletion to work for user-defined "
+"components, we will need a schema. Seam does not yet provide a mechanism to "
+"automatically generate a schema for a set of components, so it is necessary "
+"to generate one manually. The schema definitions for the standard Seam "
+"packages can be used for guidance."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:202
+#, no-c-format
+msgid "The following are the the namespaces used by Seam:"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:207
+#, no-c-format
+msgid ""
+"components &mdash; <literal>http://jboss.com/products/seam/components</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:212
+#, no-c-format
+msgid "core &mdash; <literal>http://jboss.com/products/seam/core</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:217
+#, no-c-format
+msgid "drools &mdash; <literal>http://jboss.com/products/seam/drools</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:222
+#, no-c-format
+msgid ""
+"framework &mdash; <literal>http://jboss.com/products/seam/framework</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:227
+#, no-c-format
+msgid "jms &mdash; <literal>http://jboss.com/products/seam/jms</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:232
+#, no-c-format
+msgid ""
+"remoting &mdash; <literal>http://jboss.com/products/seam/remoting</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:237
+#, no-c-format
+msgid "theme &mdash; <literal>http://jboss.com/products/seam/theme</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:242
+#, no-c-format
+msgid ""
+"security &mdash; <literal>http://jboss.com/products/seam/security</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:247
+#, no-c-format
+msgid "mail &mdash; <literal>http://jboss.com/products/seam/mail</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:252
+#, no-c-format
+msgid "web &mdash; <literal>http://jboss.com/products/seam/web</literal>"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Annotations.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Annotations.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Annotations.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2030 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Annotations.xml:10
+#, no-c-format
+msgid "Seam annotations"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:11
+#, no-c-format
+msgid ""
+"When you write a Seam application, you'll use a lot of annotations. Seam "
+"lets you use annotations to achieve a declarative style of programming. Most "
+"of the annotations you'll use are defined by the EJB 3.0 specification. The "
+"annotations for data validation are defined by the Hibernate Validator "
+"package. Finally, Seam defines its own set of annotations, which we'll "
+"describe in this chapter."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:14
+#, no-c-format
+msgid ""
+"All of these annotations are defined in the package <literal>org.jboss.seam."
+"annotations</literal>."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:18
+#, no-c-format
+msgid "Annotations for component definition"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:19
+#, no-c-format
+msgid ""
+"The first group of annotations lets you define a Seam component. These "
+"annotations appear on the component class."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:24
+#, no-c-format
+msgid "@Name"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:26
+#, no-c-format
+msgid "@Name(\"componentName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:27
+#, no-c-format
+msgid ""
+"Defines the Seam component name for a class. This annotation is required for "
+"all Seam components."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:33
+#, no-c-format
+msgid "@Scope"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:35
+#, no-c-format
+msgid "@Scope(ScopeType.CONVERSATION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:36
+#, no-c-format
+msgid ""
+"Defines the default context of the component. The possible values are "
+"defined by the <literal>ScopeType</literal> enumeration: <literal>EVENT, "
+"PAGE, CONVERSATION, SESSION, BUSINESS_PROCESS, APPLICATION, STATELESS</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:39
+#, no-c-format
+msgid ""
+"When no scope is explicitly specified, the default depends upon the "
+"component type. For stateless session beans, the default is "
+"<literal>STATELESS</literal>. For entity beans and stateful session beans, "
+"the default is <literal>CONVERSATION</literal>. For JavaBeans, the default "
+"is <literal>EVENT</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:45
+#, no-c-format
+msgid "@Role"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:47
+#, no-c-format
+msgid "@Role(name=\"roleName\", scope=ScopeType.SESSION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:48
+#, no-c-format
+msgid ""
+"Allows a Seam component to be bound to multiple contexts variables. The "
+"<literal>@Name</literal>/<literal>@Scope</literal> annotations define a "
+"\"default role\". Each <literal>@Role</literal> annotation defines an "
+"additional role."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:53
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the context variable name."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:58
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; the context variable scope. When no scope "
+"is explicitly specified, the default depends upon the component type, as "
+"above."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:66
+#, no-c-format
+msgid "@Roles"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:68
+#, no-c-format
+msgid ""
+"@Roles({\n"
+"        @Role(name=\"user\", scope=ScopeType.CONVERSATION),\n"
+"        @Role(name=\"currentUser\", scope=ScopeType.SESSION)\n"
+"    })"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:69
+#, no-c-format
+msgid "Allows specification of multiple additional roles."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:75
+#, no-c-format
+msgid "@Intercept"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:77
+#, no-c-format
+msgid "@Intercept(InterceptionType.ALWAYS)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:78
+#, no-c-format
+msgid ""
+"Determines when Seam interceptors are active. The possible values are "
+"defined by the <literal>InterceptionType</literal> enumeration: "
+"<literal>ALWAYS, AFTER_RESTORE_VIEW, AFTER_UPDATE_MODEL_VALUES, "
+"INVOKE_APPLICATION, NEVER</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:81
+#, no-c-format
+msgid ""
+"When no interception type is explicitly specified, the default depends upon "
+"the component type. For entity beans, the default is <literal>NEVER</"
+"literal>. For session beans, message driven beans and JavaBeans, the default "
+"is <literal>ALWAYS</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:87
+#, no-c-format
+msgid "@JndiName"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:89
+#, no-c-format
+msgid "@JndiName(\"my/jndi/name\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:90
+#, no-c-format
+msgid ""
+"Specifies the JNDI name that Seam will use to look up the EJB component. If "
+"no JNDI name is explicitly specified, Seam will use the JNDI pattern "
+"specified by <literal>org.jboss.seam.core.init.jndiPattern</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:96
+#, no-c-format
+msgid "@Conversational"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:98
+#, no-c-format
+msgid "@Conversational(ifNotBegunOutcome=\"error\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:99
+#, no-c-format
+msgid ""
+"Specifies that a conversation scope component is conversational, meaning "
+"that no method of the component can be called unless a long-running "
+"conversation started by this component is active (unless the method would "
+"begin a new long-running conversation)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:105
+#, no-c-format
+msgid "<literal>@Startup</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:107
+#, no-c-format
+msgid "@Startup(depends={\"org.jboss.core.jndi\", \"org.jboss.core.jta\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:108
+#, no-c-format
+msgid ""
+"Specifies that an application scope component is started immediately at "
+"initialization time. This is mainly used for certain built-in components "
+"that bootstrap critical infrastructure such as JNDI, datasources, etc."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:111
+#, no-c-format
+msgid "<programlisting>@Startup</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:112
+#, no-c-format
+msgid ""
+"Specifies that a session scope component is started immediately at session "
+"creation time."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:117
+#, no-c-format
+msgid ""
+"<literal>depends</literal> &mdash; specifies that the named components must "
+"be started first, if they are installed."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:125
+#, no-c-format
+msgid "@Install"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:127
+#, no-c-format
+msgid "@Install(false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:128
+#, no-c-format
+msgid ""
+"Specifies whether or not a component should be installed by default. The "
+"lack of an @Install annotation indicates a component should be installed."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:131
+#, no-c-format
+msgid "@Install(dependencies=\"org.jboss.seam.core.jbpm\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:132
+#, no-c-format
+msgid ""
+"Specifies that a component should only be stalled if the components listed "
+"as dependencies are also installed."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:135
+#, no-c-format
+msgid "@Install(genericDependencies=ManagedQueueSender.class)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:136
+#, no-c-format
+msgid ""
+"Specifies that a component should only be installed if a component that is "
+"implemented by a certain class is installed. This is useful when the "
+"dependency doesn't have a single well-known name."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:139
+#, no-c-format
+msgid "@Install(classDependencies=\"org.hibernate.Session\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:140
+#, no-c-format
+msgid ""
+"Specifies that a component should only be installed if the named class is in "
+"the classpath."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:143
+#, no-c-format
+msgid "@Install(precedence=BUILT_IN)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:144
+#, no-c-format
+msgid ""
+"Specifies the precedence of the component. If multiple components with the "
+"same name exist, the one with the higher precedence will be installed. The "
+"defined precendence values are:"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:149
+#, no-c-format
+msgid ""
+"<literal>BUILT_IN</literal> &mdash; Precedence of all built-in Seam "
+"components"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:154
+#, no-c-format
+msgid ""
+"<literal>FRAMEWORK</literal> &mdash; Precedence to use for components of "
+"frameworks which extend Seam"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:159
+#, no-c-format
+msgid ""
+"<literal>APPLICATION</literal> &mdash; Predence of application components "
+"(the default precedence)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:164
+#, no-c-format
+msgid ""
+"<literal>DEPLOYMENT</literal> &mdash; Precedence to use for components which "
+"override application components in a particular deployment"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:172
+#, no-c-format
+msgid "@Synchronized"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:174
+#, no-c-format
+msgid "@Synchronized(timeout=1000)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:175
+#, no-c-format
+msgid ""
+"Specifies that a component is accessed concurrently by multiple clients, and "
+"that Seam should serialize requests. If a request is not able to obtain its "
+"lock on the component in the given timeout period, an exception will be "
+"raised."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:181
+#, no-c-format
+msgid "<literal>@ReadOnly</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:183
+#, no-c-format
+msgid "<programlisting>@ReadOnly</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:184
+#, no-c-format
+msgid ""
+"Specifies that a JavaBean component or component method does not require "
+"state replication at the end of the invocation."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:193
+#, no-c-format
+msgid "Annotations for bijection"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:194
+#, no-c-format
+msgid ""
+"The next two annotations control bijection. These attributes occur on "
+"component instance variables or property accessor methods."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:199
+#, no-c-format
+msgid "<literal>@In</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:201
+#, no-c-format
+msgid "<programlisting>@In</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:202
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. If the context "
+"variable is null, an exception will be thrown."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:205
+#, no-c-format
+msgid "@In(required=false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:206
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. The context variable "
+"may be null."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:209
+#, no-c-format
+msgid "@In(create=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:210
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. If the context "
+"variable is null, an instance of the component is instantiated by Seam."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:213
+#, no-c-format
+msgid "@In(value=\"contextVariableName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:214 Annotations.xml:259
+#, no-c-format
+msgid ""
+"Specifies the name of the context variable explicitly, instead of using the "
+"annotated instance variable name."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:217
+#, no-c-format
+msgid "@In(value=\"#{customer.addresses['shipping']}\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:218
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected by evaluating a JSF "
+"EL expression at the beginning of each component invocation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:223
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"Default to the name of the component attribute. Alternatively, specifies a "
+"JSF EL expression, surrounded by <literal>#{...}</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:228
+#, no-c-format
+msgid ""
+"<literal>create</literal> &mdash; specifies that Seam should instantiate the "
+"component with the same name as the context variable if the context variable "
+"is undefined (null) in all contexts. Default to false."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:233
+#, no-c-format
+msgid ""
+"<literal>required</literal> &mdash; specifies Seam should throw an exception "
+"if the context variable is undefined in all contexts."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:241
+#, no-c-format
+msgid "<literal>@Out</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:243
+#, no-c-format
+msgid "<programlisting>@Out</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:244
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is a Seam component is to be "
+"outjected to its context variable at the end of the invocation. If the "
+"attribute is null, an exception is thrown."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:247
+#, no-c-format
+msgid "@Out(required=false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:248
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is a Seam component is to be "
+"outjected to its context variable at the end of the invocation. The "
+"attribute may be null."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:251
+#, no-c-format
+msgid "@Out(scope=ScopeType.SESSION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:252
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is <emphasis>not</emphasis> a Seam "
+"component type is to be outjected to a specific scope at the end of the "
+"invocation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:255
+#, no-c-format
+msgid ""
+"Alternatively, if no scope is explicitly specified, the scope of the "
+"component with the <literal>@Out</literal> attribute is used (or the "
+"<literal>EVENT</literal> scope if the component is stateless)."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:258
+#, no-c-format
+msgid "@Out(value=\"contextVariableName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:264
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"Default to the name of the component attribute."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:269
+#, no-c-format
+msgid ""
+"<literal>required</literal> &mdash; specifies Seam should throw an exception "
+"if the component attribute is null during outjection."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:277
+#, no-c-format
+msgid ""
+"Note that it is quite common for these annotations to occur together, for "
+"example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:280
+#, no-c-format
+msgid "@In(create=true) @Out private User currentUser;"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:281
+#, no-c-format
+msgid ""
+"The next annotation supports the <emphasis>manager component</emphasis> "
+"pattern, where a Seam component that manages the lifecycle of an instance of "
+"some other class that is to be injected. It appears on a component getter "
+"method."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:286
+#, no-c-format
+msgid "<literal>@Unwrap</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:288
+#, no-c-format
+msgid "<programlisting>@Unwrap</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:289
+#, no-c-format
+msgid ""
+"Specifies that the object returned by the annotated getter method is the "
+"thing that is injected instead of the component instance itself."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:295
+#, no-c-format
+msgid ""
+"The next annotation supports the <emphasis>factory component</emphasis> "
+"pattern, where a Seam component is responsible for initializing the value of "
+"a context variable. This is especially useful for initializing any state "
+"needed for rendering the response to a non-faces request. It appears on a "
+"component method."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:300
+#, no-c-format
+msgid "@Factory"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:302
+#, no-c-format
+msgid "@Factory(\"processInstance\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:303
+#, no-c-format
+msgid ""
+"Specifies that the method of the component is used to initialize the value "
+"of the named context variable, when the context variable has no value. This "
+"style is used with methods that return <literal>void</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:306
+#, no-c-format
+msgid "@Factory(\"processInstance\", scope=CONVERSATION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:307
+#, no-c-format
+msgid ""
+"Specifies that the method returns a value that Seam should use to initialize "
+"the value of the named context variable, when the context variable has no "
+"value. This style is used with methods that return a value. If no scope is "
+"explicitly specified, the scope of the component with the <literal>@Factory</"
+"literal> method is used (unless the component is stateless, in which case "
+"the <literal>EVENT</literal> context is used)."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:312
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"If the method is a getter method, default to the JavaBeans property name."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:317
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; specifies the scope that Seam should bind "
+"the returned value to. Only meaningful for factory methods which return a "
+"value."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:325
+#, no-c-format
+msgid "This annotation lets you inject a <literal>Log</literal>:"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:330
+#, no-c-format
+msgid "@Logger"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:332
+#, no-c-format
+msgid "@Logger(\"categoryName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:333
+#, no-c-format
+msgid ""
+"Specifies that a component field is to be injected with an instance of "
+"<literal>org.jboss.seam.log.Log</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:338
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the log category. "
+"Default to the name of the component class."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:346
+#, no-c-format
+msgid "The last annotation lets you inject a request parameter value:"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:351
+#, no-c-format
+msgid "@RequestParameter"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:353
+#, no-c-format
+msgid "@RequestParameter(\"parameterName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:354
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected with the value of a "
+"request parameter. Basic type conversions are performed automatically."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:359
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the request "
+"parameter. Default to the name of the component attribute."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:370
+#, no-c-format
+msgid "Annotations for component lifecycle methods"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:371
+#, no-c-format
+msgid ""
+"These annotations allow a component to react to its own lifecycle events. "
+"They occur on methods of the component. There may be only one of each per "
+"component class."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:376
+#, no-c-format
+msgid "<literal>@Create</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:378
+#, no-c-format
+msgid "<programlisting>@Create</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:379
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when an instance of the component "
+"is instantiated by Seam. Note that create methods are only supported for "
+"JavaBeans and stateful session beans."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:385
+#, no-c-format
+msgid "<literal>@Destroy</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:387
+#, no-c-format
+msgid "<programlisting>@Destroy</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:388
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when the context ends and its "
+"context variables are destroyed. Note that create methods are only supported "
+"for JavaBeans and stateful session beans."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:391
+#, no-c-format
+msgid ""
+"Note that all stateful session bean components <emphasis>must</emphasis> "
+"define a method annotated <literal>@Destroy @Remove</literal> in order to "
+"guarantee destruction of the stateful bean when a context ends."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:394
+#, no-c-format
+msgid ""
+"Destroy methods should be used only for cleanup. <emphasis>Seam catches, "
+"logs and swallows any exception that propagates out of a destroy method.</"
+"emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:400
+#, no-c-format
+msgid "@Observer"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:402
+#, no-c-format
+msgid "@Observer(\"somethingChanged\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:403
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when a component-driven event of "
+"the specified type occurs."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:406
+#, no-c-format
+msgid "@Observer(value=\"somethingChanged\",create=false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:407
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when an event of the specified "
+"type occurs but that an instance should not be created if one doesn't exist. "
+"If an instance does not exist and create is false, the event will not be "
+"observed. The default value for create is true."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:416
+#, no-c-format
+msgid "Annotations for context demarcation"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:417
+#, no-c-format
+msgid ""
+"These annotations provide declarative conversation demarcation. They appear "
+"on methods of Seam components, usually action listener methods."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:420
+#, no-c-format
+msgid ""
+"Every web request has a conversation context associated with it. Most of "
+"these conversations end at the end of the request. If you want a "
+"conversation that span multiple requests, you must \"promote\" the current "
+"conversation to a <emphasis>long-running conversation</emphasis> by calling "
+"a method marked with <literal>@Begin</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:425
+#, no-c-format
+msgid "<literal>@Begin</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:427
+#, no-c-format
+msgid "<programlisting>@Begin</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:428
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation begins when this method returns a "
+"non-null outcome without exception."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:431
+#, no-c-format
+msgid "@Begin(ifOutcome={\"success\", \"continue\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:432
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation begins when this action listener "
+"method returns with one of the given outcomes."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:435
+#, no-c-format
+msgid "@Begin(join=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:436
+#, no-c-format
+msgid ""
+"Specifies that if a long-running conversation is already in progress, the "
+"conversation context is simply propagated."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:439
+#, no-c-format
+msgid "@Begin(nested=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:440
+#, no-c-format
+msgid ""
+"Specifies that if a long-running conversation is already in progress, a new "
+"<emphasis>nested</emphasis> conversation context begins. The nested "
+"conversation will end when the next <literal>@End</literal> is encountered, "
+"and the outer conversation will resume. It is perfectly legal for multiple "
+"nested conversations to exist concurrently in the same outer conversation."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:443
+#, no-c-format
+msgid "@Begin(pageflow=\"process definition name\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:444
+#, no-c-format
+msgid ""
+"Specifies a jBPM process definition name that defines the pageflow for this "
+"conversation."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:447
+#, no-c-format
+msgid "@Begin(flushMode=FlushModeType.MANUAL)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:448
+#, no-c-format
+msgid ""
+"Specify the flush mode of any Seam-managed persistence contexts. "
+"<literal>flushMode=FlushModeType.MANUAL</literal> supports the use of "
+"<emphasis>atomic conversations</emphasis> where all write operations are "
+"queued in the conversation context until an explicit call to <literal>flush()"
+"</literal> (which usually occurs at the end of the conversation)."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:454
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in a new long-running conversation context."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:459
+#, no-c-format
+msgid ""
+"<literal>join</literal> &mdash; determines the behavior when a long-running "
+"conversation is already in progress. If <literal>true</literal>, the context "
+"is propagated. If <literal>false</literal>, an exception is thrown. Default "
+"to <literal>false</literal>. This setting is ignored when "
+"<literal>nested=true</literal> is specified"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:464
+#, no-c-format
+msgid ""
+"<literal>nested</literal> &mdash; specifies that a nested conversation "
+"should be started if a long-running conversation is already in progress."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:469 Annotations.xml:526 Annotations.xml:550
+#, no-c-format
+msgid ""
+"<literal>flushMode</literal> &mdash; set the flush mode of any Seam-managed "
+"Hibernate sessions or JPA persistence contexts that are created during this "
+"conversation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:474
+#, no-c-format
+msgid ""
+"<literal>pageflow</literal> &mdash; a process definition name of a jBPM "
+"process definition deployed via <literal>org.jboss.seam.core.jbpm."
+"pageflowDefinitions.</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:483
+#, no-c-format
+msgid "<literal>@End</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:485
+#, no-c-format
+msgid "<programlisting>@End</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:486
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation ends when this method returns a "
+"non-null outcome without exception."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:489
+#, no-c-format
+msgid ""
+"@End(ifOutcome={\"success\", \"error\"}, evenIfException={SomeException."
+"class, OtherException.class})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:490
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation ends when this action listener "
+"method returns with one of the given outcomes or throws one of the specified "
+"classes of exception."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:496
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in the end of the current long-running conversation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:501 Annotations.xml:585
+#, no-c-format
+msgid ""
+"<literal>beforeRedirect</literal> &mdash; by default, the conversation will "
+"not actually be destroyed until after any redirect has occurred. Setting "
+"<literal>beforeRedirect=true</literal> specifies that the conversation "
+"should be destroyed at the end of the current request, and that the redirect "
+"will be processed in a new temporary conversation context."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:510
+#, no-c-format
+msgid "<literal>@StartTask</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:512
+#, no-c-format
+msgid "<programlisting>@StartTask</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:513
+#, no-c-format
+msgid ""
+"\"Starts\" a jBPM task. Specifies that a long-running conversation begins "
+"when this method returns a non-null outcome without exception. This "
+"conversation is associated with the jBPM task specified in the named request "
+"parameter. Within the context of this conversation, a business process "
+"context is also defined, for the business process instance of the task "
+"instance."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:516
+#, no-c-format
+msgid ""
+"The jBPM <literal>TaskInstance</literal> will be available in a request "
+"context variable named <literal>taskInstance</literal>. The jPBM "
+"<literal>ProcessInstance</literal> will be available in a request context "
+"variable named <literal>processInstance</literal>. (Of course, these objects "
+"are available for injection via <literal>@In</literal>.)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:521 Annotations.xml:545
+#, no-c-format
+msgid ""
+"<literal>taskIdParameter</literal> &mdash; the name of a request parameter "
+"which holds the id of the task. Default to <literal>\"taskId\"</literal>, "
+"which is also the default used by the Seam <literal>taskList</literal> JSF "
+"component."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:534
+#, no-c-format
+msgid "<literal>@BeginTask</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:536
+#, no-c-format
+msgid "<programlisting>@BeginTask</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:537
+#, no-c-format
+msgid ""
+"Resumes work on an incomplete jBPM task. Specifies that a long-running "
+"conversation begins when this method returns a non-null outcome without "
+"exception. This conversation is associated with the jBPM task specified in "
+"the named request parameter. Within the context of this conversation, a "
+"business process context is also defined, for the business process instance "
+"of the task instance."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:540
+#, no-c-format
+msgid ""
+"The jBPM <literal>TaskInstance</literal> will be available in a request "
+"context variable named <literal>taskInstance</literal>. The jPBM "
+"<literal>ProcessInstance</literal> will be available in a request context "
+"variable named <literal>processInstance</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:558
+#, no-c-format
+msgid "<literal>@EndTask</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:560
+#, no-c-format
+msgid "<programlisting>@EndTask</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:561
+#, no-c-format
+msgid ""
+"\"Ends\" a jBPM task. Specifies that a long-running conversation ends when "
+"this method returns a non-null outcome, and that the current task is "
+"complete. Triggers a jBPM transition. The actual transition triggered will "
+"be the default transition unless the application has called "
+"<literal>Transition.setName()</literal> on the built-in component named "
+"<literal>transition</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:564
+#, no-c-format
+msgid "@EndTask(transition=\"transitionName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:565
+#, no-c-format
+msgid "Triggers the given jBPM transition."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:568
+#, no-c-format
+msgid "@EndTask(ifOutcome={\"success\", \"continue\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:569
+#, no-c-format
+msgid ""
+"Specifies that the task ends when this method returns one of the listed "
+"outcomes."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:575
+#, no-c-format
+msgid ""
+"<literal>transition</literal> &mdash; the name of the jBPM transition to be "
+"triggered when ending the task. Defaults to the default transition."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:580
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in the end of the task."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:594
+#, no-c-format
+msgid "@CreateProcess"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:596
+#, no-c-format
+msgid "@CreateProcess(definition=\"process definition name\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:597
+#, no-c-format
+msgid ""
+"Creates a new jBPM process instance when the method returns a non-null "
+"outcome without exception. The <literal>ProcessInstance</literal> object "
+"will be available in a context variable named <literal>processInstance</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:602
+#, no-c-format
+msgid ""
+"<literal>definition</literal> &mdash; the name of the jBPM process "
+"definition deployed via <literal>org.jboss.seam.core.jbpm."
+"processDefinitions</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:610
+#, no-c-format
+msgid "@ResumeProcess"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:612
+#, no-c-format
+msgid "@ResumeProcess(processIdParameter=\"processId\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:613
+#, no-c-format
+msgid ""
+"Re-enters the scope of an existing jBPM process instance when the method "
+"returns a non-null outcome without exception. The <literal>ProcessInstance</"
+"literal> object will be available in a context variable named "
+"<literal>processInstance</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:618
+#, no-c-format
+msgid ""
+"<literal>processIdParameter</literal> &mdash; the name a request parameter "
+"holding the process id. Default to <literal>\"processId\"</literal>."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:629
+#, no-c-format
+msgid "Annotations for transaction demarcation"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:630
+#, no-c-format
+msgid ""
+"Seam provides an annotation that lets you force a rollback of the JTA "
+"transaction for certain action listener outcomes."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:635
+#, no-c-format
+msgid "@Rollback"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:637
+#, no-c-format
+msgid "@Rollback(ifOutcome={\"failure\", \"not-found\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:638
+#, no-c-format
+msgid ""
+"If the outcome of the method matches any of the listed outcomes, or if no "
+"outcomes are listed, set the transaction to rollback only when the method "
+"completes."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:643
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; the JSF outcomes that cause a "
+"transaction rollback (no outcomes is interpreted to mean any outcome)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:651
+#, no-c-format
+msgid "<literal>@Transactional</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:653
+#, no-c-format
+msgid "<programlisting>@Transactional</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:654
+#, no-c-format
+msgid ""
+"Specifies that a JavaBean component should have a similar transactional "
+"behavior to the default behavior of a session bean component. ie. method "
+"invocations should take place in a transaction, and if no transaction exists "
+"when the method is called, a transaction will be started just for that "
+"method. This annotation may be applied at either class or method level."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:660
+#, no-c-format
+msgid ""
+"Seam applications usually use the standard EJB3 annotations for all other "
+"transaction demarcation needs."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:666
+#, no-c-format
+msgid "Annotations for exceptions"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:667
+#, no-c-format
+msgid ""
+"These annotations let you specify how Seam should handle an exception that "
+"propagates out of a Seam component."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:672
+#, no-c-format
+msgid "@Redirect"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:674
+#, no-c-format
+msgid "@Redirect(viewId=\"error.jsp\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:675
+#, no-c-format
+msgid ""
+"Specifies that the annotated exception causes a browser redirect to a "
+"specified view id."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:680
+#, no-c-format
+msgid ""
+"<literal>viewId</literal> &mdash; specifies the JSF view id to redirect to."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:685
+#, no-c-format
+msgid ""
+"<literal>message</literal> &mdash; a message to be displayed, default to the "
+"exception message."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:690 Annotations.xml:716
+#, no-c-format
+msgid ""
+"<literal>end</literal> &mdash; specifies that the long-running conversation "
+"should end, default to <literal>false</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:698
+#, no-c-format
+msgid "@HttpError"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:700
+#, no-c-format
+msgid "@HttpError(errorCode=404)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:701
+#, no-c-format
+msgid "Specifies that the annotated exception causes a HTTP error to be sent."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:706
+#, no-c-format
+msgid ""
+"<literal>errorCode</literal> &mdash; the HTTP error code, default to "
+"<literal>500</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:711
+#, no-c-format
+msgid ""
+"<literal>message</literal> &mdash; a message to be sent with the HTTP error, "
+"default to the exception message."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:727
+#, no-c-format
+msgid "Annotations for validation"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:728
+#, no-c-format
+msgid ""
+"This annotation triggers Hibernate Validator. It appears on a method of a "
+"Seam component, almost always an action listener method."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:731
+#, no-c-format
+msgid ""
+"Please refer to the documentation for the Hibernate Annotations package for "
+"information about the annotations defined by the Hibernate Validator "
+"framework."
+msgstr ""
+
+#. Tag: emphasis
+#: Annotations.xml:735
+#, no-c-format
+msgid ""
+"Note that use of <literal>@IfInvalid</literal> is now semi-deprecated and "
+"<literal>&lt;s:validateAll&gt;</literal> is now preferred."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:739
+#, no-c-format
+msgid "@IfInvalid"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:741
+#, no-c-format
+msgid "@IfInvalid(outcome=\"invalid\", refreshEntities=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:742
+#, no-c-format
+msgid ""
+"Specifies that Hibernate Validator should validate the component before the "
+"method is invoked. If the invocation fails, the specified outcome will be "
+"returned, and the validation failure messages returned by Hibernate "
+"Validator will be added to the <literal>FacesContext</literal>. Otherwise, "
+"the invocation will proceed."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:747
+#, no-c-format
+msgid ""
+"<literal>outcome</literal> &mdash; the JSF outcome when validation fails."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:752
+#, no-c-format
+msgid ""
+"<literal>refreshEntities</literal> &mdash; specifies that any invalid entity "
+"in the managed state should be refreshed from the database when validation "
+"fails. Default to <literal>false</literal>. (Useful with extended "
+"persistence contexts.)"
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:763
+#, no-c-format
+msgid "Annotations for Seam Remoting"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:764
+#, no-c-format
+msgid ""
+"Seam Remoting requires that the local interface of a session bean be "
+"annotated with the following annotation:"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:769
+#, no-c-format
+msgid "@WebRemote"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:771
+#, no-c-format
+msgid "@WebRemote(exclude=\"path.to.exclude\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:772
+#, no-c-format
+msgid ""
+"Indicates that the annotated method may be called from client-side "
+"JavaScript. The <literal>exclude</literal> property is optional and allows "
+"objects to be excluded from the result's object graph (see the Remoting "
+"chapter for more details)."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:781
+#, no-c-format
+msgid "Annotations for Seam interceptors"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:782
+#, no-c-format
+msgid "The following annotations appear on Seam interceptor classes."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:785
+#, no-c-format
+msgid ""
+"Please refer to the documentation for the EJB 3.0 specification for "
+"information about the annotations required for EJB interceptor definition."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:790
+#, no-c-format
+msgid "@Interceptor"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:792
+#, no-c-format
+msgid "@Interceptor(stateless=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:793
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is stateless and Seam may optimize "
+"replication."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:796
+#, no-c-format
+msgid "@Interceptor(type=CLIENT)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:797
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is a \"client-side\" interceptor that is "
+"called before the EJB container."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:800
+#, no-c-format
+msgid "@Interceptor(around={SomeInterceptor.class, OtherInterceptor.class})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:801
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is positioned higher in the stack than the "
+"given interceptors."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:804
+#, no-c-format
+msgid "@Interceptor(within={SomeInterceptor.class, OtherInterceptor.class})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:805
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is positioned deeper in the stack than the "
+"given interceptors."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:814
+#, no-c-format
+msgid "Annotations for asynchronicity"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:815
+#, no-c-format
+msgid ""
+"The following annotations are used to declare an asynchronous method, for "
+"example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:818
+#, no-c-format
+msgid ""
+"@Asynchronous public void scheduleAlert(Alert alert, @Expiration Date date) "
+"{ ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:819
+#, no-c-format
+msgid ""
+"@Asynchronous public Timer scheduleAlerts(Alert alert, @Expiration Date "
+"date, \n"
+"    @IntervalDuration long interval) { ... }"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:822
+#, no-c-format
+msgid "<literal>@Asynchronous</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:824
+#, no-c-format
+msgid "<programlisting>@Asynchronous</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:825
+#, no-c-format
+msgid "Specifies that the method call is processed asynchronously."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:831
+#, no-c-format
+msgid "<literal>@Duration</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:833
+#, no-c-format
+msgid "<programlisting>@Duration</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:834
+#, no-c-format
+msgid ""
+"Specifies that a parameter of the asynchronous call is the duration before "
+"the call is processed (or first processed for recurring calls)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:840
+#, no-c-format
+msgid "<literal>@Expiration</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:842
+#, no-c-format
+msgid "<programlisting>@Expiration</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:843
+#, no-c-format
+msgid ""
+"Specifies that a parameter of the asynchronous call is the datetime at which "
+"the call is processed (or first processed for recurring calls)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:849
+#, no-c-format
+msgid "<literal>@IntervalDuration</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:851
+#, no-c-format
+msgid "<programlisting>@IntervalDuration</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:852
+#, no-c-format
+msgid ""
+"Specifies that an asynchronous method call recurs, and that the annotationed "
+"parameter is duration between recurrences."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:861
+#, no-c-format
+msgid "Annotations for use with JSF <literal>dataTable</literal>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:862
+#, no-c-format
+msgid ""
+"The following annotations make it easy to implement clickable lists backed "
+"by a stateful session bean. They appear on attributes."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:867
+#, no-c-format
+msgid "@DataModel"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:869
+#, no-c-format
+msgid "@DataModel(\"variableName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:870
+#, no-c-format
+msgid ""
+"Exposes an attribute of type <literal>List</literal>, <literal>Map</"
+"literal>, <literal>Set</literal> or <literal>Object[]</literal> as a JSF "
+"<literal>DataModel</literal> into the scope of the owning component (or the "
+"<literal>EVENT</literal> scope if the owning component is "
+"<literal>STATELESS</literal>). In the case of <literal>Map</literal>, each "
+"row of the <literal>DataModel</literal> is a <literal>Map.Entry</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:875
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; name of the conversation context variable. "
+"Default to the attribute name."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:880
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; if <literal>scope=ScopeType.PAGE</literal> "
+"is explicitly specified, the <literal>DataModel</literal> will be kept in "
+"the <literal>PAGE</literal> context."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:888
+#, no-c-format
+msgid "<literal>@DataModelSelection</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:890
+#, no-c-format
+msgid "<programlisting>@DataModelSelection</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:891
+#, no-c-format
+msgid ""
+"Injects the selected value from the JSF <literal>DataModel</literal> (this "
+"is the element of the underlying collection, or the map value)."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:896 Annotations.xml:912
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; name of the conversation context variable. "
+"Not needed if there is exactly one <literal>@DataModel</literal> in the "
+"component."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:904
+#, no-c-format
+msgid "<literal>@DataModelSelectionIndex</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:906
+#, no-c-format
+msgid "<programlisting>@DataModelSelectionIndex</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:907
+#, no-c-format
+msgid ""
+"Exposes the selection index of the JSF <literal>DataModel</literal> as an "
+"attribute of the component (this is the row number of the underlying "
+"collection, or the map key)."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:923
+#, no-c-format
+msgid "Meta-annotations for databinding"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:924
+#, no-c-format
+msgid ""
+"These meta-annotations make it possible to implement similar functionality "
+"to <literal>@DataModel</literal> and <literal>@DataModelSelection</literal> "
+"for other datastructures apart from lists."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:929
+#, no-c-format
+msgid "@DataBinderClass"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:931
+#, no-c-format
+msgid "@DataBinderClass(DataModelBinder.class)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:932
+#, no-c-format
+msgid "Specifies that an annotation is a databinding annotation."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:938
+#, no-c-format
+msgid "@DataSelectorClass"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:940
+#, no-c-format
+msgid "@DataSelectorClass(DataModelSelector.class)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:941
+#, no-c-format
+msgid "Specifies that an annotation is a dataselection annotation."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:950
+#, no-c-format
+msgid "Annotations for packaging"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:951
+#, no-c-format
+msgid ""
+"This annotation provides a mechanism for declaring information about a set "
+"of components that are packaged together. It can be applied to any Java "
+"package."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:956
+#, no-c-format
+msgid "@Namespace"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:958
+#, no-c-format
+msgid "@Namespace(value=\"http://jboss.com/products/seam/example/seampay\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:959
+#, no-c-format
+msgid ""
+"Specifies that components in the current package are associated with the "
+"given namespace. The declared namespace can be used as an XML namespace in a "
+"<literal>components.xml</literal> file to simplify application configuration."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:962
+#, no-c-format
+msgid ""
+"@Namespace(value=\"http://jboss.com/products/seam/core\", prefix=\"org.jboss."
+"seam.core\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:963
+#, no-c-format
+msgid ""
+"Specifies a namespace to associate with a given package. Additionally, it "
+"specifies a component name prefix to be applied to component names specified "
+"in the XML file. For example, an XML element named <literal>microcontainer</"
+"literal> that is associated with this namespace would be understood to "
+"actually refere to a component named <literal>org.jboss.seam.core."
+"microcontainer</literal>."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Book_Info.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Book_Info.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Book_Info.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,38 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Book_Info.xml:10
+#, no-c-format
+msgid "Seam - Contextual Components"
+msgstr ""
+
+#. Tag: subtitle
+#: Book_Info.xml:11
+#, no-c-format
+msgid "A Framework for Java EE 5"
+msgstr ""
+
+#. Tag: para
+#: Book_Info.xml:15
+#, no-c-format
+msgid "This book is a Reference Guide for Seam"
+msgstr ""
+
+#. Tag: holder
+#: Book_Info.xml:36
+#, no-c-format
+msgid "&FORMAL-RHI;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Cache.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Cache.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Cache.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,318 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Cache.xml:10
+#, no-c-format
+msgid "Caching"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:11
+#, no-c-format
+msgid ""
+"In almost all enterprise applications, the database is the primary "
+"bottleneck, and the least scalable tier of the runtime environment. People "
+"from a PHP/Ruby environment will try to tell you that so-called \"shared "
+"nothing\" architectures scale well. While that may be literally true, I "
+"don't know of many interesting multi-user applications which can be "
+"implemented with no sharing of resources between different nodes of the "
+"cluster. What these silly people are really thinking of is a \"share nothing "
+"except for the database\" architecture. Of course, sharing the database is "
+"the primary problem with scaling a multi-user application&mdash;so the claim "
+"that this architecture is highly scalable is absurd, and tells you a lot "
+"about the kind of applications that these folks spend most of their time "
+"working on."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:14
+#, no-c-format
+msgid ""
+"Almost anything we can possibly do to share the database <emphasis>less "
+"often</emphasis> is worth doing."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:17
+#, no-c-format
+msgid ""
+"This calls for a cache. Well, not just one cache. A well designed Seam "
+"application will feature a rich, multi-layered caching strategy that impacts "
+"every layer of the application:"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:22
+#, no-c-format
+msgid ""
+"The database, of course, has its own cache. This is super-important, but "
+"can't scale like a cache in the application tier."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:27
+#, no-c-format
+msgid ""
+"Your ORM solution (Hibernate, or some other JPA implementation) has a second-"
+"level cache of data from the database. This is a very powerful capability, "
+"but is often misused. In a clustered environment, keeping the data in the "
+"cache transactionally consistent across the whole cluster, and with the "
+"database, is quite expensive. It makes most sense for data which is shared "
+"between many users, and is updated rarely. In traditional stateless "
+"architectures, people often try to use the second-level cache for "
+"conversational state. This is always bad, and is especially wrong in Seam."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:32
+#, no-c-format
+msgid ""
+"The Seam conversation context is a cache of conversational state. Components "
+"you put into the conversation context can hold and cache state relating to "
+"the current user interaction."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:37
+#, no-c-format
+msgid ""
+"In particular, the Seam-managed persistence context (or an extended EJB "
+"container-managed persistence context associated with a conversation-scoped "
+"stateful session bean) acts as a cache of data that has been read in the "
+"current conversation. This cache tends to have a pretty high hitrate! Seam "
+"optimizes the replication of Seam-managed persistence contexts in a "
+"clustered environment, and there is no requirement for transactional "
+"consistency with the database (optimistic locking is sufficient) so you "
+"don't need to worry too much about the performance implications of this "
+"cache, unless you read thousands of objects into a single persistence "
+"context."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:42
+#, no-c-format
+msgid ""
+"The application can cache non-transactional state in the Seam application "
+"context. State kept in the application context is of course not visible to "
+"other nodes in the cluster."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:47
+#, no-c-format
+msgid ""
+"The application can cache transactional state using the Seam "
+"<literal>pojoCache</literal> component, which integrates JBossCache into the "
+"Seam environment. This state will be visible to other nodes if you run JBoss "
+"cache in a clustered mode."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:52
+#, no-c-format
+msgid ""
+"Finally, Seam lets you cache rendered fragments of a JSF page. Unlike the "
+"ORM second-level cache, this cache is not automatically invalidated when "
+"data changes, so you need to write application code to perform explicit "
+"invalidation, or set appropriate expiration policies."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:57
+#, no-c-format
+msgid ""
+"For more information about the second-level cache, you'll need to refer to "
+"the documentation of your ORM solution, since this is an extremely complex "
+"topic. In this section we'll discuss the use of JBossCache directly, via the "
+"<literal>pojoCache</literal> component, or as the page fragment cache, via "
+"the <literal>&lt;s:cache&gt;</literal> control."
+msgstr ""
+
+#. Tag: title
+#: Cache.xml:61
+#, no-c-format
+msgid "Using JBossCache in Seam"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:62
+#, no-c-format
+msgid ""
+"The built-in <literal>pojoCache</literal> component manages an instance of "
+"<literal>org.jboss.cache.aop.PojoCache</literal>. You can safely put any "
+"immutable Java object in the cache, and it will be replicated across the "
+"cluster (assuming that replication is enabled). If you want to keep mutable "
+"objects in the cache, you'll need to run the JBossCache bytecode "
+"preprocessor to ensure that changes to the objects will be automatically "
+"detected and replicated."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:65
+#, no-c-format
+msgid ""
+"To use <literal>pojoCache</literal>, all you need to do is put the "
+"JBossCache jars in the classpath, and provide a resource named "
+"<literal>treecache.xml</literal> with an appropriate cache configuration. "
+"JBossCache has many scary and confusing configuration settings, so we won't "
+"discuss them here. Please refer to the JBossCache documentation for more "
+"information."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:68
+#, no-c-format
+msgid ""
+"For an EAR depoyment of Seam, we recommend that the JBossCache jars and "
+"configuration go directly into the EAR. Make sure you declare the jars in "
+"<literal>application.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:71
+#, no-c-format
+msgid "Now you can inject the cache into any Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:74
+#, no-c-format
+msgid ""
+"@Name(\"chatroom\")\n"
+"public class Chatroom {\n"
+"    @In PojoCache pojoCache;\n"
+"    \n"
+"    public void join(String username) {\n"
+"      try\n"
+"      {\n"
+"         Set&lt;String&gt; userList = (Set&lt;String&gt;) pojoCache.get"
+"(\"chatroom\", \"userList\");\n"
+"         if (userList==null) \n"
+"         {\n"
+"            userList = new HashSet&lt;String&gt;();\n"
+"            pojoCache.put(\"chatroom\", \"userList\", userList);\n"
+"         }\n"
+"         userList.put(username);\n"
+"      }\n"
+"      catch (CacheException ce)\n"
+"      {\n"
+"         throw new RuntimeException(ce);\n"
+"      }\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:75
+#, no-c-format
+msgid ""
+"If you want to have multiple JBossCache configurations in your application, "
+"use <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:78
+#, no-c-format
+msgid ""
+"&lt;core:pojo-cache name=\"myCache\" cfg-resource-name=\"myown/cache.xml\"/"
+"&gt;"
+msgstr ""
+
+#. Tag: title
+#: Cache.xml:82
+#, no-c-format
+msgid "Page fragment caching"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:83
+#, no-c-format
+msgid ""
+"The most interesting user of JBossCache is the <literal>&lt;s:cache&gt;</"
+"literal> tag, Seam's solution to the problem of page fragment caching in "
+"JSF. <literal>&lt;s:cache&gt;</literal> uses <literal>pojoCache</literal> "
+"internally, so you need to follow the steps listed above before you can use "
+"it. (Put the jars in the EAR, wade through the scary configuration options, "
+"etc.)"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:86
+#, no-c-format
+msgid ""
+"<literal>&lt;s:cache&gt;</literal> is used for caching some rendered content "
+"which changes rarely. For example, the welcome page of our blog displays the "
+"recent blog entries:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:89
+#, no-c-format
+msgid ""
+"&lt;s:cache key=\"recentEntries-#{blog.id}\" region=\"welcomePageFragments"
+"\"&gt;\n"
+"   &lt;h:dataTable value=\"#{blog.recentEntries}\" var=\"blogEntry\"&gt;\n"
+"      &lt;h:column&gt;\n"
+"         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"         &lt;div&gt;\n"
+"            &lt;s:formattedText value=\"#{blogEntry.body}\"/&gt;\n"
+"         &lt;/div&gt;\n"
+"      &lt;/h:column&gt;\n"
+"   &lt;/h:dataTable&gt;\n"
+"&lt;/s:cache&gt;"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:90
+#, no-c-format
+msgid ""
+"The <literal>key</literal> let's you have multiple cached versions of each "
+"page fragment. In this case, there is one cached version per blog. The "
+"<literal>region</literal> determines the JBossCache node that all version "
+"will be stored in. Different nodes may have different expiry policies. "
+"(That's the stuff you set up using the aforementioned scary configuration "
+"options.)"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:93
+#, no-c-format
+msgid ""
+"Of course, the big problem with <literal>&lt;s:cache&gt;</literal> is that "
+"it is too stupid to know when the underlying data changes (for example, when "
+"the blogger posts a new entry). So you need to evict the cached fragment "
+"manually:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:96
+#, no-c-format
+msgid ""
+"public void post() {\n"
+"    ...\n"
+"    entityManager.persist(blogEntry);\n"
+"    pojoCache.remove(\"welcomePageFragments\", \"recentEntries-\" + blog."
+"getId() );\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:97
+#, no-c-format
+msgid ""
+"Alternatively, if it is not critical that changes are immediately visible to "
+"the user, you could set a short expiry time on the JbossCache node."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Components.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Components.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Components.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2007 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Components.xml:10
+#, no-c-format
+msgid "Built-in Seam components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:11
+#, no-c-format
+msgid ""
+"This chapter describes Seam's built-in components, and their configuration "
+"properties."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:14
+#, no-c-format
+msgid ""
+"Note that you can replace any of the built in components with your own "
+"implementations simply by specifying the name of one of the built in "
+"components on your own class using <literal>@Name</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:17
+#, no-c-format
+msgid ""
+"Note also that even though all the built in components use a qualified name, "
+"most of them are aliased to unqualified names by default. These aliases "
+"specify <literal>auto-create=\"true\"</literal>, so you do not need to use "
+"<literal>create=true</literal> when injecting built-in components by their "
+"unqualified name."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:21
+#, no-c-format
+msgid "Context injection components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:22
+#, no-c-format
+msgid ""
+"The first set of built in components exist purely to support injection of "
+"various contextual objects. For example, the following component instance "
+"variable would have the Seam session context object injected:"
+msgstr ""
+
+#. Tag: programlisting
+#: Components.xml:25
+#, no-c-format
+msgid "@In private Context sessionContext;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:28
+#, no-c-format
+msgid "org.jboss.seam.core.eventContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:30
+#, no-c-format
+msgid "Manager component for the event context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:36
+#, no-c-format
+msgid "org.jboss.seam.core.pageContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:38
+#, no-c-format
+msgid "Manager component for the page context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:44
+#, no-c-format
+msgid "org.jboss.seam.core.conversationContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:46
+#, no-c-format
+msgid "Manager component for the conversation context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:52
+#, no-c-format
+msgid "org.jboss.seam.core.sessionContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:54
+#, no-c-format
+msgid "Manager component for the session context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:60
+#, no-c-format
+msgid "org.jboss.seam.core.applicationContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:62
+#, no-c-format
+msgid "Manager component for the appication context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:68
+#, no-c-format
+msgid "org.jboss.seam.core.businessProcessContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:70
+#, no-c-format
+msgid "Manager component for the business process context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:76
+#, no-c-format
+msgid "org.jboss.seam.core.facesContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:78
+#, no-c-format
+msgid ""
+"Manager component for the <literal>FacesContext</literal> context object "
+"(not a true Seam context)"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:84 Components.xml:267 Components.xml:441 Components.xml:572
+#, no-c-format
+msgid "All of these components are always installed."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:90
+#, no-c-format
+msgid "Utility components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:91
+#, no-c-format
+msgid "These components are merely useful."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:96
+#, no-c-format
+msgid "org.jboss.seam.core.facesMessages"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:98
+#, no-c-format
+msgid "Allows faces success messages to propagate across a browser redirect."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:103
+#, no-c-format
+msgid ""
+"<literal>add(FacesMessage facesMessage)</literal> &mdash; add a faces "
+"message, which will be displayed during the next render response phase that "
+"occurs in the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:108
+#, no-c-format
+msgid ""
+"<literal>add(String messageTemplate)</literal> &mdash; add a faces message, "
+"rendered from the given message template which may contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:113
+#, no-c-format
+msgid ""
+"<literal>add(Severity severity, String messageTemplate)</literal> &mdash; "
+"add a faces message, rendered from the given message template which may "
+"contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:118
+#, no-c-format
+msgid ""
+"<literal>addFromResourceBundle(String key)</literal> &mdash; add a faces "
+"message, rendered from a message template defined in the Seam resource "
+"bundle which may contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:123
+#, no-c-format
+msgid ""
+"<literal>addFromResourceBundle(Severity severity, String key)</literal> "
+"&mdash; add a faces message, rendered from a message template defined in the "
+"Seam resource bundle which may contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:128
+#, no-c-format
+msgid "<literal>clear()</literal> &mdash; clear all messages."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:136
+#, no-c-format
+msgid "org.jboss.seam.core.redirect"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:138
+#, no-c-format
+msgid ""
+"A convenient API for performing redirects with parameters (this is "
+"especially useful for bookmarkable search results screens)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:143
+#, no-c-format
+msgid ""
+"<literal>redirect.viewId</literal> &mdash; the JSF view id to redirect to."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:148
+#, no-c-format
+msgid ""
+"<literal>redirect.conversationPropagationEnabled</literal> &mdash; "
+"determines whether the conversation will propagate across the redirect."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:153
+#, no-c-format
+msgid ""
+"<literal>redirect.parameters</literal> &mdash; a map of request parameter "
+"name to value, to be passed in the redirect request."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:158
+#, no-c-format
+msgid "<literal>execute()</literal> &mdash; perform the redirect immediately."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:163
+#, no-c-format
+msgid ""
+"<literal>captureCurrentRequest()</literal> &mdash; stores the view id and "
+"request parameters of the current GET request (in the conversation context), "
+"for later use by calling <literal>execute()</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:171
+#, no-c-format
+msgid "org.jboss.seam.core.httpError"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:173
+#, no-c-format
+msgid "A convenient API for sending HTTP errors."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:179
+#, no-c-format
+msgid "org.jboss.seam.core.events"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:181
+#, no-c-format
+msgid ""
+"An API for raising events that can be observed via <literal>@Observer</"
+"literal> methods, or method bindings in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:186
+#, no-c-format
+msgid ""
+"<literal>raiseEvent(String type)</literal> &mdash; raise an event of a "
+"particular type and distribute to all observers."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:191
+#, no-c-format
+msgid ""
+"<literal>raiseAsynchronousEvent(String type)</literal> &mdash; raise an "
+"event to be processed asynchronously by the EJB3 timer service."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:196
+#, no-c-format
+msgid ""
+"<literal>raiseTimedEvent(String type, ....)</literal> &mdash; schedule an "
+"event to be processed asynchronously by the EJB3 timer service."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:201
+#, no-c-format
+msgid ""
+"<literal>addListener(String type, String methodBinding)</literal> &mdash; "
+"add an observer for a particular event type."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:209
+#, no-c-format
+msgid "org.jboss.seam.core.interpolator"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:211
+#, no-c-format
+msgid "An API for interpolating the values of JSF EL expressions in Strings."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:216
+#, no-c-format
+msgid ""
+"<literal>interpolate(String template)</literal> &mdash; scan the template "
+"for JSF EL expressions of the form <literal>#{...}</literal> and replace "
+"them with their evaluated values."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:224
+#, no-c-format
+msgid "org.jboss.seam.core.expressions"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:226
+#, no-c-format
+msgid "An API for creating value and method bindings."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:231
+#, no-c-format
+msgid ""
+"<literal>createValueBinding(String expression)</literal> &mdash; create a "
+"value binding object."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:236
+#, no-c-format
+msgid ""
+"<literal>createMethodBinding(String expression)</literal> &mdash; create a "
+"method binding object."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:244
+#, no-c-format
+msgid "org.jboss.seam.core.pojoCache"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:246
+#, no-c-format
+msgid ""
+"Manager component for a JBoss Cache <literal>PojoCache</literal> instance."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:251
+#, no-c-format
+msgid ""
+"<literal>pojoCache.cfgResourceName</literal> &mdash; the name of the "
+"configuration file. Default to <literal>treecache.xml</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:259
+#, no-c-format
+msgid "org.jboss.seam.core.uiComponent"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:261
+#, no-c-format
+msgid ""
+"Allows access to a JSF <literal>UIComponent</literal> by its id from the EL. "
+"For example, we can write <literal>@In(\"#{uiComponent['myForm:address']."
+"value}\")</literal>."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:273
+#, no-c-format
+msgid "Components for internationalization and themes"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:274
+#, no-c-format
+msgid ""
+"The next group of components make it easy to build internationalized user "
+"interfaces using Seam."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:279
+#, no-c-format
+msgid "org.jboss.seam.core.locale"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:281
+#, no-c-format
+msgid "The Seam locale. The locale is session scoped."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:287
+#, no-c-format
+msgid "org.jboss.seam.core.timezone"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:289
+#, no-c-format
+msgid "The Seam timezone. The timezone is session scoped."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:295
+#, no-c-format
+msgid "org.jboss.seam.core.resourceBundle"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:297
+#, no-c-format
+msgid ""
+"The Seam resource bundle. The resource bundle is session scoped. The Seam "
+"resource bundle performs a depth-first search for keys in a list of Java "
+"resource bundles."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:302
+#, no-c-format
+msgid ""
+"<literal>resourceBundle.bundleNames</literal> &mdash; the names of the Java "
+"resource bundles to search. Default to <literal>messages</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:310
+#, no-c-format
+msgid "org.jboss.seam.core.localeSelector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:312
+#, no-c-format
+msgid ""
+"Supports selection of the locale either at configuration time, or by the "
+"user at runtime."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:317 Components.xml:367
+#, no-c-format
+msgid "<literal>select()</literal> &mdash; select the specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:322
+#, no-c-format
+msgid ""
+"<literal>localeSelector.locale</literal> &mdash; the actual <literal>java."
+"util.Locale</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:327
+#, no-c-format
+msgid ""
+"<literal>localeSelector.localeString</literal> &mdash; the stringified "
+"representation of the locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:332
+#, no-c-format
+msgid ""
+"<literal>localeSelector.language</literal> &mdash; the language for the "
+"specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:337
+#, no-c-format
+msgid ""
+"<literal>localeSelector.country</literal> &mdash; the country for the "
+"specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:342
+#, no-c-format
+msgid ""
+"<literal>localeSelector.variant</literal> &mdash; the variant for the "
+"specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:347
+#, no-c-format
+msgid ""
+"<literal>localeSelector.supportedLocales</literal> &mdash; a list of "
+"<literal>SelectItem</literal>s representing the supported locales listed in "
+"<literal>jsf-config.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:352
+#, no-c-format
+msgid ""
+"<literal>localeSelector.cookieEnabled</literal> &mdash; specifies that the "
+"locale selection should be persisted via a cookie."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:360
+#, no-c-format
+msgid "org.jboss.seam.core.timezoneSelector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:362
+#, no-c-format
+msgid ""
+"Supports selection of the timezone either at configuration time, or by the "
+"user at runtime."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:372
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.timezone</literal> &mdash; the actual "
+"<literal>java.util.TimeZone</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:377
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.timeZoneId</literal> &mdash; the stringified "
+"representation of the timezone."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:382
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.cookieEnabled</literal> &mdash; specifies that the "
+"timezone selection should be persisted via a cookie."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:390
+#, no-c-format
+msgid "org.jboss.seam.core.messages"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:392
+#, no-c-format
+msgid ""
+"A map containing internationalized messages rendered from message templates "
+"defined in the Seam resource bundle."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:398
+#, no-c-format
+msgid "org.jboss.seam.theme.themeSelector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:400
+#, no-c-format
+msgid ""
+"Supports selection of the theme either at configuration time, or by the user "
+"at runtime."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:405
+#, no-c-format
+msgid "<literal>select()</literal> &mdash; select the specified theme."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:410
+#, no-c-format
+msgid ""
+"<literal>theme.availableThemes</literal> &mdash; the list of defined themes."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:415
+#, no-c-format
+msgid "<literal>themeSelector.theme</literal> &mdash; the selected theme."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:420
+#, no-c-format
+msgid ""
+"<literal>themeSelector.themes</literal> &mdash; a list of "
+"<literal>SelectItem</literal>s representing the defined themes."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:425
+#, no-c-format
+msgid ""
+"<literal>themeSelector.cookieEnabled</literal> &mdash; specifies that the "
+"theme selection should be persisted via a cookie."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:433
+#, no-c-format
+msgid "org.jboss.seam.theme.theme"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:435
+#, no-c-format
+msgid "A map containing theme entries."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:447
+#, no-c-format
+msgid "Components for controlling conversations"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:448
+#, no-c-format
+msgid ""
+"The next group of components allow control of conversations by the "
+"application or user interface."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:453
+#, no-c-format
+msgid "org.jboss.seam.core.conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:455
+#, no-c-format
+msgid ""
+"API for application control of attributes of the current Seam conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:460 Components.xml:475
+#, no-c-format
+msgid "<literal>getId()</literal> &mdash; returns the current conversation id"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:465
+#, no-c-format
+msgid ""
+"<literal>isNested()</literal> &mdash; is the current conversation a nested "
+"conversation?"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:470
+#, no-c-format
+msgid ""
+"<literal>isLongRunning()</literal> &mdash; is the current conversation a "
+"long-running conversation?"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:480
+#, no-c-format
+msgid ""
+"<literal>getParentId()</literal> &mdash; returns the conversation id of the "
+"parent conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:485
+#, no-c-format
+msgid ""
+"<literal>getRootId()</literal> &mdash; returns the conversation id of the "
+"root conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:490
+#, no-c-format
+msgid ""
+"<literal>setTimeout(int timeout)</literal> &mdash; sets the timeout for the "
+"current conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:495
+#, no-c-format
+msgid ""
+"<literal>setViewId(String outcome)</literal> &mdash; sets the view id to be "
+"used when switching back to the current conversation from the conversation "
+"switcher, conversation list, or breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:500
+#, no-c-format
+msgid ""
+"<literal>setDescription(String description)</literal> &mdash; sets the "
+"description of the current conversation to be displayed in the conversation "
+"switcher, conversation list, or breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:505
+#, no-c-format
+msgid ""
+"<literal>redirect()</literal> &mdash; redirect to the last well-defined view "
+"id for this conversation (useful after login challenges)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:510
+#, no-c-format
+msgid ""
+"<literal>leave()</literal> &mdash; exit the scope of this conversation, "
+"without actually ending the conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:515
+#, no-c-format
+msgid ""
+"<literal>begin()</literal> &mdash; begin a long-running conversation "
+"(equivalent to <literal>@Begin</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:520
+#, no-c-format
+msgid ""
+"<literal>beginPageflow(String pageflowName)</literal> &mdash; begin a long-"
+"running conversation with a pageflow (equivalent to <literal>@Begin(pageflow="
+"\"...\")</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:525
+#, no-c-format
+msgid ""
+"<literal>end()</literal> &mdash; end a long-running conversation (equivalent "
+"to <literal>@End</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:530
+#, no-c-format
+msgid ""
+"<literal>pop()</literal> &mdash; pop the conversation stack, returning to "
+"the parent conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:535
+#, no-c-format
+msgid ""
+"<literal>root()</literal> &mdash; return to the root conversation of the "
+"conversation stack."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:540
+#, no-c-format
+msgid ""
+"<literal>changeFlushMode(FlushModeType flushMode)</literal> &mdash; change "
+"the flush mode of the conversation."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:548
+#, no-c-format
+msgid "org.jboss.seam.core.conversationList"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:550
+#, no-c-format
+msgid "Manager component for the conversation list."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:556
+#, no-c-format
+msgid "org.jboss.seam.core.conversationStack"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:558
+#, no-c-format
+msgid "Manager component for the conversation stack (breadcrumbs)."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:564
+#, no-c-format
+msgid "org.jboss.seam.core.switcher"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:566
+#, no-c-format
+msgid "The conversation switcher."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:578
+#, no-c-format
+msgid "jBPM-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:579
+#, no-c-format
+msgid "These components are for use with jBPM."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:584
+#, no-c-format
+msgid "org.jboss.seam.core.pageflow"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:586
+#, no-c-format
+msgid "API control of Seam pageflows."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:591
+#, no-c-format
+msgid ""
+"<literal>isInProcess()</literal> &mdash; returns <literal>true</literal> if "
+"there is currently a pageflow in process"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:596
+#, no-c-format
+msgid ""
+"<literal>getProcessInstance()</literal> &mdash; returns jBPM "
+"<literal>ProcessInstance</literal> for the current pageflow"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:601
+#, no-c-format
+msgid ""
+"<literal>begin(String pageflowName)</literal> &mdash; begin a pageflow in "
+"the context of the current conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:606
+#, no-c-format
+msgid ""
+"<literal>reposition(String nodeName)</literal> &mdash; reposition the "
+"current pageflow to a particular node"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:614
+#, no-c-format
+msgid "org.jboss.seam.core.actor"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:616
+#, no-c-format
+msgid ""
+"API for application control of attributes of the jBPM actor associated with "
+"the current session."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:621
+#, no-c-format
+msgid ""
+"<literal>setId(String actorId)</literal> &mdash; sets the jBPM actor id of "
+"the current user."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:626
+#, no-c-format
+msgid ""
+"<literal>getGroupActorIds()</literal> &mdash; returns a <literal>Set</"
+"literal> to which jBPM actor ids for the current users groups may be added."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:634
+#, no-c-format
+msgid "org.jboss.seam.core.transition"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:636
+#, no-c-format
+msgid ""
+"API for application control of the jBPM transition for the current task."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:641
+#, no-c-format
+msgid ""
+"<literal>setName(String transitionName)</literal> &mdash; sets the jBPM "
+"transition name to be used when the current task is ended via "
+"<literal>@EndTask</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:649
+#, no-c-format
+msgid "org.jboss.seam.core.businessProcess"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:651
+#, no-c-format
+msgid ""
+"API for programmatic control of the association between the conversation and "
+"business process."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:656
+#, no-c-format
+msgid ""
+"<literal>businessProcess.taskId</literal> &mdash; the id of the task "
+"associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:661
+#, no-c-format
+msgid ""
+"<literal>businessProcess.processId</literal> &mdash; the id of the process "
+"associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:666
+#, no-c-format
+msgid ""
+"<literal>businessProcess.hasCurrentTask()</literal> &mdash; is a task "
+"instance associated with the current conversation?"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:671
+#, no-c-format
+msgid ""
+"<literal>businessProcess.hasCurrentProcess()</literal> &mdash; is a process "
+"instance associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:676
+#, no-c-format
+msgid ""
+"<literal>createProcess(String name)</literal> &mdash; create an instance of "
+"the named process definition and associate it with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:681
+#, no-c-format
+msgid ""
+"<literal>startTask()</literal> &mdash; start the task associated with the "
+"current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:686
+#, no-c-format
+msgid ""
+"<literal>endTask(String transitionName)</literal> &mdash; end the task "
+"associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:691
+#, no-c-format
+msgid ""
+"<literal>resumeTask(Long id)</literal> &mdash; associate the task with the "
+"given id with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:696
+#, no-c-format
+msgid ""
+"<literal>resumeProcess(Long id)</literal> &mdash; associate the process with "
+"the given id with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:701
+#, no-c-format
+msgid ""
+"<literal>transition(String transitionName)</literal> &mdash; trigger the "
+"transition."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:709
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstance"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:711
+#, no-c-format
+msgid "Manager component for the jBPM <literal>TaskInstance</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:717
+#, no-c-format
+msgid "org.jboss.seam.core.processInstance"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:719
+#, no-c-format
+msgid "Manager component for the jBPM <literal>ProcessInstance</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:725
+#, no-c-format
+msgid "org.jboss.seam.core.jbpmContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:727
+#, no-c-format
+msgid "Manager component for an event-scoped <literal>JbpmContext</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:733
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstanceList"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:735
+#, no-c-format
+msgid "Manager component for the jBPM task list."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:741
+#, no-c-format
+msgid "org.jboss.seam.core.pooledTaskInstanceList"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:743
+#, no-c-format
+msgid "Manager component for the jBPM pooled task list."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:749
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstanceListForType"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:751
+#, no-c-format
+msgid "Manager component for the jBPM task lists."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:757
+#, no-c-format
+msgid "org.jboss.seam.core.pooledTask"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:759
+#, no-c-format
+msgid "Action handler for pooled task assignment."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:765
+#, no-c-format
+msgid ""
+"All of these components are installed whenever the component <literal>org."
+"jboss.seam.core.jbpm</literal> is installed."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:771
+#, no-c-format
+msgid "Security-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:772
+#, no-c-format
+msgid "These components relate to web-tier security."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:777
+#, no-c-format
+msgid "org.jboss.seam.core.userPrincipal"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:779
+#, no-c-format
+msgid "Manager component for the current user <literal>Principal</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:785
+#, no-c-format
+msgid "org.jboss.seam.core.isUserInRole"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:787
+#, no-c-format
+msgid ""
+"Allows JSF pages to choose to render a control, depending upon the roles "
+"available to the current principal. <literal>&lt;h:commandButton value=\"edit"
+"\" rendered=\"#{isUserInRole['admin']}\"/&gt;</literal>."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:796
+#, no-c-format
+msgid "JMS-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:797
+#, no-c-format
+msgid ""
+"These components are for use with managed <literal>TopicPublisher</literal>s "
+"and <literal>QueueSender</literal>s (see below)."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:802
+#, no-c-format
+msgid "org.jboss.seam.jms.queueSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:804
+#, no-c-format
+msgid "Manager component for a JMS <literal>QueueSession</literal> ."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:810
+#, no-c-format
+msgid "org.jboss.seam.jms.topicSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:812
+#, no-c-format
+msgid "Manager component for a JMS <literal>TopicSession</literal> ."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:821
+#, no-c-format
+msgid "Mail-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:822
+#, no-c-format
+msgid "These components are for use with Seam's Email support"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:827
+#, no-c-format
+msgid "org.jboss.seam.mail.mailSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:829
+#, no-c-format
+msgid "Manager component for a JavaMail <literal>Session</literal> ."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:834
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.host</literal> &mdash; the hostname "
+"of the SMTP server to use"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:839
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.port</literal> &mdash; the port of "
+"the SMTP server to use"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:844
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.username</literal> &mdash; the "
+"username to use to connect to the SMTP server."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:849
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.password</literal> &mdash; the "
+"password to use to connect to the SMTP server"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:854
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.debug</literal> &mdash; enable "
+"JavaMail debugging (very verbose)"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:859
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.sessionJndiName</literal> &mdash; "
+"name under which a javax.mail.Session is bound to JNDI"
+msgstr ""
+
+#. Tag: title
+#: Components.xml:870
+#, no-c-format
+msgid "Infrastructural components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:871
+#, no-c-format
+msgid ""
+"These components provide critical platform infrastructure. You can install a "
+"component by including its class name in the <literal>org.jboss.seam.core."
+"init.componentClasses</literal> configuration property."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:876
+#, no-c-format
+msgid "org.jboss.seam.core.init"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:878
+#, no-c-format
+msgid "Initialization settings for Seam. Always installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:883
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.jndiPattern</literal> &mdash; the JNDI "
+"pattern used for looking up session beans"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:888
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.debug</literal> &mdash; enable Seam debug "
+"mode"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:893
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.clientSideConversations</literal> &mdash; "
+"if set to <literal>true</literal>, Seam will save conversation context "
+"variables in the client instead of in the <literal>HttpSession</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:898
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.userTransactionName</literal> &mdash; the "
+"JNDI name to use when looking up the JTA <literal>UserTransaction</literal> "
+"object."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:906
+#, no-c-format
+msgid "org.jboss.seam.core.manager"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:908
+#, no-c-format
+msgid ""
+"Internal component for Seam page and conversation context management. Always "
+"installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:913
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationTimeout</literal> &mdash; "
+"the conversation context timeout in milliseconds."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:918
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.concurrentRequestTimeout</literal> "
+"&mdash; maximum wait time for a thread attempting to gain a lock on the long-"
+"running conversation context."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:923
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationIdParameter</literal> "
+"&mdash; the request parameter used to propagate the conversation id, default "
+"to <literal>conversationId</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:928
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationIsLongRunningParameter</"
+"literal> &mdash; the request parameter used to propagate information about "
+"whether the conversation is long-running, default to "
+"<literal>conversationIsLongRunning</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:936
+#, no-c-format
+msgid "org.jboss.seam.core.pages"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:938
+#, no-c-format
+msgid "Internal component for Seam workspace management. Always installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:943
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.pages.noConversationViewId</literal> &mdash; "
+"global setting for the view id to redirect to when a conversation entry is "
+"not found on the server side."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:951
+#, no-c-format
+msgid "org.jboss.seam.core.ejb"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:953
+#, no-c-format
+msgid ""
+"Bootstraps the JBoss Embeddable EJB3 container. Install as class "
+"<literal>org.jboss.seam.core.Ejb</literal>. This is useful when using Seam "
+"with EJB components outside the context of a Java EE 5 application server."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:956
+#, no-c-format
+msgid ""
+"The basic Embedded EJB configuration is defined in <literal>jboss-embedded-"
+"beans.xml</literal>. Additional microcontainer configuration (for example, "
+"extra datasources) may be specified by <literal>jboss-beans.xml</literal> or "
+"<literal>META-INF/jboss-beans.xml</literal> in the classpath."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:962
+#, no-c-format
+msgid "org.jboss.seam.core.microcontainer"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:964
+#, no-c-format
+msgid ""
+"Bootstraps the JBoss microcontainer. Install as class <literal>org.jboss."
+"seam.core.Microcontainer</literal>. This is useful when using Seam with "
+"Hibernate and no EJB components outside the context of a Java EE application "
+"server. The microcontainer can provide a partial EE environment with JNDI, "
+"JTA, a JCA datasource and Hibernate."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:967
+#, no-c-format
+msgid ""
+"The microcontainer configuration may be specified by <literal>jboss-beans."
+"xml</literal> or <literal>META-INF/jboss-beans.xml</literal> in the "
+"classpath."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:973
+#, no-c-format
+msgid "org.jboss.seam.core.jbpm"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:975
+#, no-c-format
+msgid ""
+"Bootstraps a <literal>JbpmConfiguration</literal>. Install as class "
+"<literal>org.jboss.seam.core.Jbpm</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:980
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.jbpm.processDefinitions</literal> &mdash; a "
+"list of resource names of jPDL files to be used for orchestration of "
+"business processes."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:985
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.jbpm.pageflowDefinitions</literal> &mdash; a "
+"list of resource names of jPDL files to be used for orchestration of "
+"conversation page flows."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:993
+#, no-c-format
+msgid "org.jboss.seam.core.conversationEntries"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:995
+#, no-c-format
+msgid ""
+"Internal session-scoped component recording the active long-running "
+"conversations between requests."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1001
+#, no-c-format
+msgid "org.jboss.seam.core.facesPage"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1003
+#, no-c-format
+msgid ""
+"Internal page-scoped component recording the conversation context associated "
+"with a page."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1009
+#, no-c-format
+msgid "org.jboss.seam.core.persistenceContexts"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1011
+#, no-c-format
+msgid ""
+"Internal component recording the persistence contexts which were used in the "
+"current conversation."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1017
+#, no-c-format
+msgid "org.jboss.seam.jms.queueConnection"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1019
+#, no-c-format
+msgid ""
+"Manages a JMS <literal>QueueConnection</literal>. Installed whenever managed "
+"managed <literal>QueueSender</literal> is installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1024
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.jms.queueConnection.queueConnectionFactoryJndiName</"
+"literal> &mdash; the JNDI name of a JMS <literal>QueueConnectionFactory</"
+"literal>. Default to <literal>UIL2ConnectionFactory</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1032
+#, no-c-format
+msgid "org.jboss.seam.jms.topicConnection"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1034
+#, no-c-format
+msgid ""
+"Manages a JMS <literal>TopicConnection</literal>. Installed whenever managed "
+"managed <literal>TopicPublisher</literal> is installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1039
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.jms.topicConnection.topicConnectionFactoryJndiName</"
+"literal> &mdash; the JNDI name of a JMS <literal>TopicConnectionFactory</"
+"literal>. Default to <literal>UIL2ConnectionFactory</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1047
+#, no-c-format
+msgid "org.jboss.seam.persistence.persistenceProvider"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1049
+#, no-c-format
+msgid "Abstraction layer for non-standardized features of JPA provider."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1055
+#, no-c-format
+msgid "org.jboss.seam.core.validation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1057
+#, no-c-format
+msgid "Internal component for Hibernate Validator support."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1063
+#, no-c-format
+msgid "org.jboss.seam.debug.introspector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1065 Components.xml:1073
+#, no-c-format
+msgid "Support for the Seam Debug Page."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1071
+#, no-c-format
+msgid "org.jboss.seam.debug.contexts"
+msgstr ""
+
+#. Tag: title
+#: Components.xml:1082
+#, no-c-format
+msgid "Special components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1083
+#, no-c-format
+msgid ""
+"Certain special Seam component classes are installable multiple times under "
+"names specified in the Seam configuration. For example, the following lines "
+"in <literal>components.xml</literal> install and configure two Seam "
+"components:"
+msgstr ""
+
+#. Tag: programlisting
+#: Components.xml:1086
+#, no-c-format
+msgid ""
+"&lt;component name=\"bookingDatabase\"\n"
+"          class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"    &lt;property name=\"persistenceUnitJndiName\"&gt;java:/comp/emf/"
+"bookingPersistence&lt;/property&gt;\n"
+"&lt;/component&gt;\n"
+"\n"
+"&lt;component name=\"userDatabase\"\n"
+"          class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"    &lt;property name=\"persistenceUnitJndiName\"&gt;java:/comp/emf/"
+"userPersistence&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1087
+#, no-c-format
+msgid ""
+"The Seam component names are <literal>bookingDatabase</literal> and "
+"<literal>userDatabase</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1092
+#, no-c-format
+msgid "&lt;entityManager&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1093
+#, no-c-format
+msgid "org.jboss.seam.core.ManagedPersistenceContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1095
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed <literal>EntityManager</"
+"literal> with an extended persistence context."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1100
+#, no-c-format
+msgid ""
+"<literal>&lt;entityManager&gt;.entityManagerFactory</literal> &mdash; a "
+"value binding expression that evaluates to an instance of "
+"<literal>EntityManagerFactory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1103
+#, no-c-format
+msgid ""
+"<literal>&lt;entityManager&gt;.persistenceUnitJndiName</literal> &mdash; the "
+"JNDI name of the entity manager factory, default to <literal>java:/&lt;"
+"managedPersistenceContext&gt;</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1111
+#, no-c-format
+msgid "&lt;entityManagerFactory&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1112
+#, no-c-format
+msgid "org.jboss.seam.core.EntityManagerFactory"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1114
+#, no-c-format
+msgid ""
+"Manages a JPA <literal>EntityManagerFactory</literal>. This is most useful "
+"when using JPA outside of an EJB 3.0 supporting environment."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1119
+#, no-c-format
+msgid ""
+"<literal>entityManagerFactory.persistenceUnitName</literal> &mdash; the name "
+"of the persistence unit."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1124 Components.xml:1162
+#, no-c-format
+msgid "See the API JavaDoc for further configuration properties."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1130
+#, no-c-format
+msgid "&lt;session&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1131
+#, no-c-format
+msgid "org.jboss.seam.core.ManagedSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1133
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed Hibernate "
+"<literal>Session</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1138
+#, no-c-format
+msgid ""
+"<literal>&lt;session&gt;.sessionFactory</literal> &mdash; a value binding "
+"expression that evaluates to an instance of <literal>SessionFactory</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1141
+#, no-c-format
+msgid ""
+"<literal>&lt;session&gt;.sessionFactoryJndiName</literal> &mdash; the JNDI "
+"name of the session factory, default to <literal>java:/&lt;managedSession&gt;"
+"</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1149
+#, no-c-format
+msgid "&lt;sessionFactory&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1150
+#, no-c-format
+msgid "org.jboss.seam.core.HibernateSessionFactory"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1152
+#, no-c-format
+msgid "Manages a Hibernate <literal>SessionFactory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1157
+#, no-c-format
+msgid ""
+"<literal>&lt;sessionFactory&gt;.cfgResourceName</literal> &mdash; the path "
+"to the configuration file. Default to <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1168
+#, no-c-format
+msgid "&lt;managedQueueSender&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1169
+#, no-c-format
+msgid "org.jboss.seam.jms.ManagedQueueSender"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1171
+#, no-c-format
+msgid ""
+"Manager component for an event scoped managed JMS <literal>QueueSender</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1176
+#, no-c-format
+msgid ""
+"<literal>&lt;managedQueueSender&gt;.queueJndiName</literal> &mdash; the JNDI "
+"name of the JMS queue."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1184
+#, no-c-format
+msgid "&lt;managedTopicPublisher&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1185
+#, no-c-format
+msgid "org.jboss.seam.jms.ManagedTopicPublisher"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1187
+#, no-c-format
+msgid ""
+"Manager component for an event scoped managed JMS <literal>TopicPublisher</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1192
+#, no-c-format
+msgid ""
+"<literal>&lt;managedTopicPublisher&gt;.topicJndiName</literal> &mdash; the "
+"JNDI name of the JMS topic."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1200
+#, no-c-format
+msgid "&lt;managedWorkingMemory&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1201
+#, no-c-format
+msgid "org.jboss.seam.drools.ManagedWorkingMemory"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1203
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed Drools "
+"<literal>WorkingMemory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1208
+#, no-c-format
+msgid ""
+"<literal>&lt;managedWorkingMemory&gt;.ruleBase</literal> &mdash; a value "
+"expression that evaluates to an instance of <literal>RuleBase</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1216
+#, no-c-format
+msgid "&lt;ruleBase&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1217
+#, no-c-format
+msgid "org.jboss.seam.drools.RuleBase"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1219
+#, no-c-format
+msgid ""
+"Manager component for an application scoped Drools <literal>RuleBase</"
+"literal>. <emphasis>Note that this is not really intended for production "
+"usage, since it does not support dynamic installation of new rules.</"
+"emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1224
+#, no-c-format
+msgid ""
+"<literal>&lt;ruleBase&gt;.ruleFiles</literal> &mdash; a list of files "
+"containing Drools rules."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1227
+#, no-c-format
+msgid ""
+"<literal>&lt;ruleBase&gt;.dslFile</literal> &mdash; a Drools DSL definition."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1235
+#, no-c-format
+msgid "&lt;entityHome&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1236
+#, no-c-format
+msgid "org.jboss.seam.framework.EntityHome"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1240
+#, no-c-format
+msgid "&lt;hibernateEntityHome&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1241
+#, no-c-format
+msgid "org.jboss.seam.framework.HibernateEntityHome"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1245
+#, no-c-format
+msgid "&lt;entityQuery&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1246
+#, no-c-format
+msgid "org.jboss.seam.framework.EntityQuery"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1250
+#, no-c-format
+msgid "&lt;hibernateEntityQuery&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1251
+#, no-c-format
+msgid "org.jboss.seam.framework.HibernateEntityQuery"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Concepts.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Concepts.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Concepts.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1922 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Concepts.xml:10
+#, no-c-format
+msgid "The contextual component model"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:11
+#, no-c-format
+msgid ""
+"The two core concepts in Seam are the notion of a <emphasis>context</"
+"emphasis> and the notion of a <emphasis>component</emphasis>. Components are "
+"stateful objects, usually EJBs, and an instance of a component is associated "
+"with a context, and given a name in that context. <emphasis>Bijection</"
+"emphasis> provides a mechanism for aliasing internal component names "
+"(instance variables) to contextual names, allowing component trees to be "
+"dynamically assembled, and reassembled by Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:14
+#, no-c-format
+msgid "Let's start by describing the contexts built in to Seam."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:17
+#, no-c-format
+msgid "Seam contexts"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:18
+#, no-c-format
+msgid ""
+"Seam contexts are created and destroyed by the framework. The application "
+"does not control context demarcation via explicit Java API calls. Context "
+"are usually implicit. In some cases, however, contexts are demarcated via "
+"annotations."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:21
+#, no-c-format
+msgid "The basic Seam contexts are:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:26
+#, no-c-format
+msgid "<para>Stateless context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:31
+#, no-c-format
+msgid "Event (or request) context"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:36 Concepts.xml:151
+#, no-c-format
+msgid "<para>Page context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:41 Concepts.xml:156
+#, no-c-format
+msgid "<para>Conversation context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:46 Concepts.xml:161
+#, no-c-format
+msgid "<para>Session context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:51 Concepts.xml:166
+#, no-c-format
+msgid "<para>Business process context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:56 Concepts.xml:171
+#, no-c-format
+msgid "<para>Application context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:61
+#, no-c-format
+msgid ""
+"You will recognize some of these contexts from servlet and related "
+"specifications. However, two of them might be new to you: "
+"<emphasis>conversation context</emphasis>, and <emphasis>business process "
+"context</emphasis>. One reason state management in web applications is so "
+"fragile and error-prone is that the three built-in contexts (request, "
+"session and application) are not especially meaningful from the point of "
+"view of the business logic. A user login session, for example, is a fairly "
+"arbitrary construct in terms of the actual application work flow. Therefore, "
+"most Seam components are scoped to the conversation or business process "
+"contexts, since they are the contexts which are most meaningful in terms of "
+"the application."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:64
+#, no-c-format
+msgid "Let's look at each context in turn."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:67
+#, no-c-format
+msgid "<title>Stateless context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:68
+#, no-c-format
+msgid ""
+"Components which are truly stateless (stateless session beans, primarily) "
+"always live in the stateless context (this is really a non-context). "
+"Stateless components are not very interesting, and are arguably not very "
+"object-oriented. Nevertheless, they are important and often useful."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:71
+#, no-c-format
+msgid "<title>Event context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:72
+#, no-c-format
+msgid ""
+"The event context is the \"narrowest\" stateful context, and is a "
+"generalization of the notion of the web request context to cover other kinds "
+"of events. Nevertheless, the event context associated with the lifecycle of "
+"a JSF request is the most important example of an event context, and the one "
+"you will work with most often. Components associated with the event context "
+"are destroyed at the end of the request, but their state is available and "
+"well-defined for at least the lifecycle of the request."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:75
+#, no-c-format
+msgid ""
+"When you invoke a Seam component via RMI, or Seam Remoting, the event "
+"context is created and destroyed just for the invocation."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:78
+#, no-c-format
+msgid "<title>Page context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:79
+#, no-c-format
+msgid ""
+"The page context allows you to associate state with a particular instance of "
+"a rendered page. You can initialize state in your event listener, or while "
+"actually rendering the page, and then have access to it from any event that "
+"originates from that page. This is especially useful for functionality like "
+"clickable lists, where the list is backed by changing data on the server "
+"side. The state is actually serialized to the client, so this construct is "
+"extremely robust with respect to multi-window operation and the back button."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:82
+#, no-c-format
+msgid "<title>Conversation context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:83
+#, no-c-format
+msgid ""
+"The conversation context is a truly central concept in Seam. A "
+"<emphasis>conversation</emphasis> is a unit of work from the point of view "
+"of the user. It might span several interactions with the user, several "
+"requests, and several database transactions. But to the user, a conversation "
+"solves a single problem. For example, \"book hotel\", \"approve contract\", "
+"\"create order\" are all conversations. You might like to think of a "
+"conversation implementing a single \"use case\" or \"user story\", but the "
+"relationship is not necessarily quite exact."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:86
+#, no-c-format
+msgid ""
+"A conversation holds state associated with \"what the user is doing now, in "
+"this window\". A single user may have multiple conversations in progress at "
+"any point in time, usually in multiple windows. The conversation context "
+"allows us to ensure that state from the different conversations does not "
+"collide and cause bugs."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:89
+#, no-c-format
+msgid ""
+"It might take you some time to get used to thinking of applications in terms "
+"of conversations. But once you get used to it, we think you'll love the "
+"notion, and never be able to not think in terms of conversations again!"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:92
+#, no-c-format
+msgid ""
+"Some conversations last for just a single request. Conversations that span "
+"multiple requests must be demarcated using annotations provided by Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:95
+#, no-c-format
+msgid ""
+"Some conversations are also <emphasis>tasks</emphasis>. A task is a "
+"conversation that is significant in terms of a long-running business "
+"process, and has the potential to trigger a business process state "
+"transition when it is successfully completed. Seam provides a special set of "
+"annotations for task demarcation."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:98
+#, no-c-format
+msgid ""
+"Conversations may be <emphasis>nested</emphasis>, with one conversation "
+"taking place \"inside\" a wider conversation. This is an advanced feature."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:101
+#, no-c-format
+msgid ""
+"Usually, conversation state is actually held by Seam in the servlet session "
+"between requests. Seam implements configurable <emphasis>conversation "
+"timeout</emphasis>, automatically destroying inactive conversations, and "
+"thus ensuring that the state held by a single user login session does not "
+"grow without bound if the user abandons conversations."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:104
+#, no-c-format
+msgid ""
+"Seam serializes processing of concurrent requests that take place in the "
+"same long-running conversation context, in the same process."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:107
+#, no-c-format
+msgid ""
+"Alternatively, Seam may be configured to keep conversational state in the "
+"client browser."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:110
+#, no-c-format
+msgid "<title>Session context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:111
+#, no-c-format
+msgid ""
+"A session context holds state associated with the user login session. While "
+"there are some cases where it is useful to share state between several "
+"conversations, we generally frown on the use of session context for holding "
+"components other than global information about the logged in user."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:114
+#, no-c-format
+msgid ""
+"In a JSR-168 portal environment, the session context represents the portlet "
+"session."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:117
+#, no-c-format
+msgid "<title>Business process context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:118
+#, no-c-format
+msgid ""
+"The business process context holds state associated with the long running "
+"business process. This state is managed and made persistent by the BPM "
+"engine (JBoss jBPM). The business process spans multiple interactions with "
+"multiple users, so this state is shared between multiple users, but in a "
+"well-defined manner. The current task determines the current business "
+"process instance, and the lifecycle of the business process is defined "
+"externally using a <emphasis>process definition language</emphasis>, so "
+"there are no special annotations for business process demarcation."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:121
+#, no-c-format
+msgid "<title>Application context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:122
+#, no-c-format
+msgid ""
+"The application context is the familiar servlet context from the servlet "
+"spec. Application context is mainly useful for holding static information "
+"such as configuration data, reference data or metamodels. For example, Seam "
+"stores its own configuration and metamodel in the application context."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:125
+#, no-c-format
+msgid "Context variables"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:126
+#, no-c-format
+msgid ""
+"A context defines a namespace, a set of <emphasis>context variables</"
+"emphasis>. These work much the same as session or request attributes in the "
+"servlet spec. You may bind any value you like to a context variable, but "
+"usually we bind Seam component instances to context variables."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:129
+#, no-c-format
+msgid ""
+"So, within a context, a component instance is identified by the context "
+"variable name (this is usually, but not always, the same as the component "
+"name). You may programatically access a named component instance in a "
+"particular scope via the <literal>Contexts</literal> class, which provides "
+"access to several thread-bound instances of the <literal>Context</literal> "
+"interface:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:132
+#, no-c-format
+msgid "User user = (User) Contexts.getSessionContext().get(\"user\");"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:133
+#, no-c-format
+msgid "You may also set or change the value associated with a name:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:136
+#, no-c-format
+msgid "Contexts.getSessionContext().set(\"user\", user);"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:137
+#, no-c-format
+msgid ""
+"Usually, however, we obtain components from a context via injection, and put "
+"component instances into a context via outjection."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:140
+#, no-c-format
+msgid "Context search priority"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:141
+#, no-c-format
+msgid ""
+"Sometimes, as above, component instances are obtained from a particular "
+"known scope. Other times, all stateful scopes are searched, in "
+"<emphasis>priority order</emphasis>. The order is as follows:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:146
+#, no-c-format
+msgid "<para>Event context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:176
+#, no-c-format
+msgid ""
+"You can perform a priority search by calling <literal>Contexts."
+"lookupInStatefulContexts()</literal>. Whenever you access a component by "
+"name from a JSF page, a priority search occurs."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:179
+#, no-c-format
+msgid "Concurrency model"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:180
+#, no-c-format
+msgid ""
+"Neither the servlet nor EJB specifications define any facilities for "
+"managing concurrent requests originating from the same client. The servlet "
+"container simply lets all threads run concurrently and leaves enforcing "
+"threadsafeness to application code. The EJB container allows stateless "
+"components to be accessed concurrently, and throws an exception if multiple "
+"threads access a stateful session bean."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:183
+#, no-c-format
+msgid ""
+"This behavior might have been okay in old-style web applications which were "
+"based around fine-grained, synchronous requests. But for modern applications "
+"which make heavy use of many fine-grained, asynchronous (AJAX) requests, "
+"concurrency is a fact of life, and must be supported by the programming "
+"model. Seam weaves a concurrency management layer into its context model."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:186
+#, no-c-format
+msgid ""
+"The Seam session and application contexts are multithreaded. Seam will allow "
+"concurrent requests in a context to be processed concurrently. The event and "
+"page contexts are by nature single threaded. The business process context is "
+"strictly speaking multi-threaded, but in practice concurrency is "
+"sufficiently rare that this fact may be disregarded most of the time. "
+"Finally, Seam enforces a <emphasis>single thread per conversation per "
+"process</emphasis> model for the conversation context by serializing "
+"concurrent requests in the same long-running conversation context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:189
+#, no-c-format
+msgid ""
+"Since the session context is multithreaded, and often contains volatile "
+"state, session scope components are always protected by Seam from concurrent "
+"access. Seam serializes requests to session scope session beans and "
+"JavaBeans by default (and detects and breaks any deadlocks that occur). This "
+"is not the default behaviour for application scoped components however, "
+"since application scoped components do not usually hold volatile state and "
+"because synchronization at the global level is <emphasis>extremely</"
+"emphasis> expensive. However, you can force a serialized threading model on "
+"any session bean or JavaBean component by adding the <literal>@Synchronized</"
+"literal> annotation."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:192
+#, no-c-format
+msgid ""
+"This concurrency model means that AJAX clients can safely use volatile "
+"session and conversational state, without the need for any special work on "
+"the part of the developer."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:195
+#, no-c-format
+msgid "Seam components"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:196
+#, no-c-format
+msgid ""
+"Seam components are POJOs (Plain Old Java Objects). In particular, they are "
+"JavaBeans or EJB 3.0 enterprise beans. While Seam does not require that "
+"components be EJBs and can even be used without an EJB 3.0 compliant "
+"container, Seam was designed with EJB 3.0 in mind and includes deep "
+"integration with EJB 3.0. Seam supports the following <emphasis>component "
+"types</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:201
+#, no-c-format
+msgid "EJB 3.0 stateless session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:206
+#, no-c-format
+msgid "EJB 3.0 stateful session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:211
+#, no-c-format
+msgid "EJB 3.0 entity beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:216
+#, no-c-format
+msgid "<para>JavaBeans</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:221
+#, no-c-format
+msgid "EJB 3.0 message-driven beans"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:226
+#, no-c-format
+msgid "Stateless session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:227
+#, no-c-format
+msgid ""
+"Stateless session bean components are not able to hold state across multiple "
+"invocations. Therefore, they usually work by operating upon the state of "
+"other components in the various Seam contexts. They may be used as JSF "
+"action listeners, but cannot provide properties to JSF components for "
+"display."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:230
+#, no-c-format
+msgid "Stateless session beans always live in the stateless context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:233
+#, no-c-format
+msgid ""
+"Stateless session beans are the least interesting kind of Seam component."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:236
+#, no-c-format
+msgid "Stateful session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:237
+#, no-c-format
+msgid ""
+"Stateful session bean components are able to hold state not only across "
+"multiple invocations of the bean, but also across multiple requests. "
+"Application state that does not belong in the database should usually be "
+"held by stateful session beans. This is a major difference between Seam and "
+"many other web application frameworks. Instead of sticking information about "
+"the current conversation directly in the <literal>HttpSession</literal>, you "
+"should keep it in instance variables of a stateful session bean that is "
+"bound to the conversation context. This allows Seam to manage the lifecycle "
+"of this state for you, and ensure that there are no collisions between state "
+"relating to different concurrent conversations."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:240
+#, no-c-format
+msgid ""
+"Stateful session beans are often used as JSF action listener, and as backing "
+"beans that provide properties to JSF components for display or form "
+"submission."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:243
+#, no-c-format
+msgid ""
+"By default, stateful session beans are bound to the conversation context. "
+"They may never be bound to the page or stateless contexts."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:246
+#, no-c-format
+msgid ""
+"Concurrent requests to session-scoped stateful session beans are always "
+"serialized by Seam."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:249
+#, no-c-format
+msgid "Entity beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:250
+#, no-c-format
+msgid ""
+"Entity beans may be bound to a context variable and function as a seam "
+"component. Because entities have a persistent identity in addition to their "
+"contextual identity, entity instances are usually bound explicitly in Java "
+"code, rather than being instantiated implicitly by Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:253
+#, no-c-format
+msgid ""
+"Entity bean components do not support bijection or context demarcation. Nor "
+"does invocation of an entity bean trigger validation."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:256
+#, no-c-format
+msgid ""
+"Entity beans are not usually used as JSF action listeners, but do often "
+"function as backing beans that provide properties to JSF components for "
+"display or form submission. In particular, it is common to use an entity as "
+"a backing bean, together with a stateless session bean action listener to "
+"implement create/update/delete type functionality."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:259
+#, no-c-format
+msgid ""
+"By default, entity beans are bound to the conversation context. They may "
+"never be bound to the stateless context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:262
+#, no-c-format
+msgid ""
+"Note that it in a clustered environment is somewhat less efficient to bind "
+"an entity bean directly to a conversation or session scoped Seam context "
+"variable than it would be to hold a reference to the entity bean in a "
+"stateful session bean. For this reason, not all Seam applications define "
+"entity beans to be Seam components."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:265
+#, no-c-format
+msgid "<title>JavaBeans</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:266
+#, no-c-format
+msgid ""
+"Javabeans may be used just like a stateless or stateful session bean. "
+"However, they do not provide the functionality of a session bean "
+"(declarative transaction demarcation, declarative security, efficient "
+"clustered state replication, EJB 3.0 persistence, timeout methods, etc)."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:269
+#, no-c-format
+msgid ""
+"In a later chapter, we show you how to use Seam and Hibernate without an EJB "
+"container. In this use case, components are JavaBeans instead of session "
+"beans. Note, however, that in many application servers it is somewhat less "
+"efficient to cluster conversation or session scoped Seam JavaBean components "
+"than it is to cluster stateful session bean components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:272
+#, no-c-format
+msgid "By default, JavaBeans are bound to the event context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:275
+#, no-c-format
+msgid ""
+"Concurrent requests to session-scoped JavaBeans are always serialized by "
+"Seam."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:278
+#, no-c-format
+msgid "Message-driven beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:279
+#, no-c-format
+msgid ""
+"Message-driven beans may function as a seam component. However, message-"
+"driven beans are called quite differently to other Seam components - instead "
+"of invoking them via the context variable, they listen for messages sent to "
+"a JMS queue or topic."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:282
+#, no-c-format
+msgid ""
+"Message-driven beans may not be bound to a Seam context. Nor do they have "
+"access to the session or conversation state of their \"caller\". However, "
+"they do support bijection and some other Seam functionality."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:285
+#, no-c-format
+msgid "Interception"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:286
+#, no-c-format
+msgid ""
+"In order to perform its magic (bijection, context demarcation, validation, "
+"etc), Seam must intercept component invocations. For JavaBeans, Seam is in "
+"full control of instantiation of the component, and no special configuration "
+"is needed. For entity beans, interception is not required since bijection "
+"and context demarcation are not defined. For session beans, we must register "
+"an EJB interceptor for the session bean component. We could use an "
+"annotation, as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:289
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:290
+#, no-c-format
+msgid ""
+"But a much better way is to define the interceptor in <literal>ejb-jar.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:293
+#, no-c-format
+msgid ""
+"&lt;interceptors&gt;\n"
+"   &lt;interceptor&gt;\n"
+"      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"   &lt;/interceptor&gt;\n"
+"&lt;/interceptors&gt;\n"
+"   \n"
+"&lt;assembly-descriptor&gt;\n"
+"   &lt;interceptor-binding&gt;\n"
+"      &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"   &lt;/interceptor-binding&gt;\n"
+"&lt;/assembly-descriptor&gt;"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:294
+#, no-c-format
+msgid "Component names"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:295
+#, no-c-format
+msgid ""
+"All seam components need a name. We can assign a name to a component using "
+"the <literal>@Name</literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:298
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:299
+#, no-c-format
+msgid ""
+"This name is the <emphasis>seam component name</emphasis> and is not related "
+"to any other name defined by the EJB specification. However, seam component "
+"names work just like JSF managed bean names and you can think of the two "
+"concepts as identical."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:302
+#, no-c-format
+msgid ""
+"<literal>@Name</literal> is not the only way to define a component name, but "
+"we always need to specify the name <emphasis>somewhere</emphasis>. If we "
+"don't, then none of the other Seam annotations will function."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:305
+#, no-c-format
+msgid ""
+"Just like in JSF, a seam component instance is usually bound to a context "
+"variable with the same name as the component name. So, for example, we would "
+"access the <literal>LoginAction</literal> using <literal>Contexts."
+"getStatelessContext().get(\"loginAction\")</literal>. In particular, "
+"whenever Seam itself instantiates a component, it binds the new instance to "
+"a variable with the component name. However, again like JSF, it is possible "
+"for the application to bind a component to some other context variable by "
+"programmatic API call. This is only useful if a particular component serves "
+"more than one role in the system. For example, the currently logged in "
+"<literal>User</literal> might be bound to the <literal>currentUser</literal> "
+"session context variable, while a <literal>User</literal> that is the "
+"subject of some administration functionality might be bound to the "
+"<literal>user</literal> conversation context variable."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:308
+#, no-c-format
+msgid ""
+"For very large applications, and for built-in seam components, qualified "
+"names are often used."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:311
+#, no-c-format
+msgid ""
+"@Name(\"com.jboss.myapp.loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:312
+#, no-c-format
+msgid ""
+"We may use the qualified component name both in Java code and in JSF's "
+"expression language:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:315
+#, no-c-format
+msgid ""
+"&lt;h:commandButton type=\"submit\" value=\"Login\"\n"
+"                 action=\"#{com.jboss.myapp.loginAction.login}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:316
+#, no-c-format
+msgid ""
+"Since this is noisy, Seam also provides a means of aliasing a qualified name "
+"to a simple name. Add a line like this to the <literal>components.xml</"
+"literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:319
+#, no-c-format
+msgid ""
+"&lt;factory name=\"loginAction\" scope=\"STATELESS\" value=\"#{com.jboss."
+"myapp.loginAction}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:320
+#, no-c-format
+msgid ""
+"All of the built-in Seam components have qualified names, but most of them "
+"are aliased to a simple name by the <literal>components.xml</literal> file "
+"included in the Seam jar."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:323
+#, no-c-format
+msgid "Defining the component scope"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:324
+#, no-c-format
+msgid ""
+"We can override the default scope (context) of a component using the "
+"<literal>@Scope</literal> annotation. This lets us define what context a "
+"component instance is bound to, when it is instantiated by Seam."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:327
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(SESSION)\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:328
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.ScopeType</literal> defines an enumeration of "
+"possible scopes."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:331
+#, no-c-format
+msgid "Components with multiple roles"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:332
+#, no-c-format
+msgid ""
+"Some Seam component classes can fulfill more than one role in the system. "
+"For example, we often have a <literal>User</literal> class which is usually "
+"used as a session-scoped component representing the current user but is used "
+"in user administration screens as a conversation-scoped component. The "
+"<literal>@Role</literal> annotation lets us define an additional named role "
+"for a component, with a different scope&mdash;it lets us bind the same "
+"component class to different context variables. (Any Seam component "
+"<emphasis>instance</emphasis> may be bound to multiple context variables, "
+"but this lets us do it at the class level, and take advantage of auto-"
+"instantiation.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:335
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(CONVERSATION)\n"
+"@Role(name=\"currentUser\", scope=SESSION)\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:336
+#, no-c-format
+msgid ""
+"The <literal>@Roles</literal> annotation lets us specify as many additional "
+"roles as we like."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:339
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(CONVERSATION)\n"
+"@Roles({@Role(name=\"currentUser\", scope=SESSION)\n"
+"        @Role(name=\"tempUser\", scope=EVENT)})\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:340
+#, no-c-format
+msgid "Built-in components"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:341
+#, no-c-format
+msgid ""
+"Like many good frameworks, Seam eats its own dogfood and is implemented "
+"mostly as a set of built-in Seam interceptors (see later) and Seam "
+"components. This makes it easy for applications to interact with built-in "
+"components at runtime or even customize the basic functionality of Seam by "
+"replacing the built-in components with custom implementations. The built-in "
+"components are defined in the Seam namespace <literal>org.jboss.seam.core</"
+"literal> and the Java package of the same name."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:344
+#, no-c-format
+msgid ""
+"The built-in components may be injected, just like any Seam components, but "
+"they also provide convenient static <literal>instance()</literal> methods:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:347
+#, no-c-format
+msgid "FacesMessages.instance().add(\"Welcome back, #{user.name}!\");"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:348
+#, no-c-format
+msgid ""
+"Seam was designed to integrate tightly in a Java EE 5 environment. However, "
+"we understand that there are many projects which are not running in a full "
+"EE environment. We also realize the critical importance of easy unit and "
+"integration testing using frameworks such as TestNG and JUnit. So, we've "
+"made it easy to run Seam in Java SE environments by allowing you to boostrap "
+"certain critical infrastructure normally only found in EE environments by "
+"installing built-in Seam components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:351
+#, no-c-format
+msgid ""
+"For example, you can run your EJB3 components in Tomcat or an integration "
+"test suite just by installing the built-in component <literal>org.jboss.seam."
+"core.ejb</literal>, which automatically bootstraps the JBoss Embeddable EJB3 "
+"container and deploys your EJB components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:354
+#, no-c-format
+msgid ""
+"Or, if you're not quite ready for the Brave New World of EJB 3.0, you can "
+"write a Seam application that uses only JavaBean components, together with "
+"Hibernate3 for persistence, by installing a built-in component that manages "
+"a Hibernate <literal>SessionFactory</literal>. When using Hibernate outside "
+"of a J2EE environment, you will also probably need a JTA transaction manager "
+"and JNDI server, which are available via the built-in component <literal>org."
+"jboss.seam.core.microcontainer</literal>. This lets you use the bulletproof "
+"JTA/JCA pooling datasource from JBoss application server in an SE "
+"environment like Tomcat!"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:357
+#, no-c-format
+msgid "Bijection"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:358
+#, no-c-format
+msgid ""
+"<emphasis>Dependency injection</emphasis> or <emphasis>inversion of control</"
+"emphasis> is by now a familiar concept to most Java developers. Dependency "
+"injection allows a component to obtain a reference to another component by "
+"having the container \"inject\" the other component to a setter method or "
+"instance variable. In all dependency injection implementations that we have "
+"seen, injection occurs when the component is constructed, and the reference "
+"does not subsequently change for the lifetime of the component instance. For "
+"stateless components, this is reasonable. From the point of view of a "
+"client, all instances of a particular stateless component are "
+"interchangeable. On the other hand, Seam emphasizes the use of stateful "
+"components. So traditional dependency injection is no longer a very useful "
+"construct. Seam introduces the notion of <emphasis>bijection</emphasis> as a "
+"generalization of injection. In contrast to injection, bijection is:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:363
+#, no-c-format
+msgid ""
+"<emphasis>contextual</emphasis> - bijection is used to assemble stateful "
+"components from various different contexts (a component from a \"wider\" "
+"context may even have a reference to a component from a \"narrower\" context)"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:368
+#, no-c-format
+msgid ""
+"<emphasis>bidirectional</emphasis> - values are injected from context "
+"variables into attributes of the component being invoked, and also "
+"<emphasis>outjected</emphasis> from the component attributes back out to the "
+"context, allowing the component being invoked to manipulate the values of "
+"contextual variables simply by setting its own instance variables"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:373
+#, no-c-format
+msgid ""
+"<emphasis>dynamic</emphasis> - since the value of contextual variables "
+"changes over time, and since Seam components are stateful, bijection takes "
+"place every time a component is invoked"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:378
+#, no-c-format
+msgid ""
+"In essence, bijection lets you alias a context variable to a component "
+"instance variable, by specifying that the value of the instance variable is "
+"injected, outjected, or both. Of course, we use annotations to enable "
+"bijection."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:381
+#, no-c-format
+msgid ""
+"The <literal>@In</literal> annotation specifies that a value should be "
+"injected, either into an instance variable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:384
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:385
+#, no-c-format
+msgid "or into a setter method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:388
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @In\n"
+"    public void setUser(User user) {\n"
+"        this.user=user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:389
+#, no-c-format
+msgid ""
+"By default, Seam will do a priority search of all contexts, using the name "
+"of the property or instance variable that is being injected. You may wish to "
+"specify the context variable name explicitly, using, for example, "
+"<literal>@In(\"currentUser\")</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:392
+#, no-c-format
+msgid ""
+"If you want Seam to create an instance of the component when there is no "
+"existing component instance bound to the named context variable, you should "
+"specify <literal>@In(create=true)</literal>. If the value is optional (it "
+"can be null), specify <literal>@In(required=false)</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:395
+#, no-c-format
+msgid ""
+"For some components, it can be repetitive to have to specify <literal>@In"
+"(create=true)</literal> everywhere they are used. In such cases, you can "
+"annotate the component <literal>@AutoCreate</literal>, and then it will "
+"always be created, whenever needed, even without the explicit use of "
+"<literal>create=true</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:398
+#, no-c-format
+msgid "You can even inject the value of an expression:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:401
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In(\"#{user.username}\") String username;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:402
+#, no-c-format
+msgid ""
+"(There is much more information about component lifecycle and injection in "
+"the next chapter.)"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:405
+#, no-c-format
+msgid ""
+"The <literal>@Out</literal> annotation specifies that an attribute should be "
+"outjected, either from an instance variable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:408
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @Out User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:409
+#, no-c-format
+msgid "or from a getter method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:412
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @Out\n"
+"    public User getUser() {\n"
+"        return user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:413
+#, no-c-format
+msgid "An attribute may be both injected and outjected:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:416
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In @Out User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:417
+#, no-c-format
+msgid "<para>or:</para>"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:420
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @In\n"
+"    public void setUser(User user) {\n"
+"        this.user=user;\n"
+"    }\n"
+"    \n"
+"    @Out\n"
+"    public User getUser() {\n"
+"        return user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:421
+#, no-c-format
+msgid "Lifecycle methods"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:422
+#, no-c-format
+msgid ""
+"Session bean and entity bean Seam components support all the usual EJB 3.0 "
+"lifecycle callback (<literal>@PostConstruct</literal>, <literal>@PreDestroy</"
+"literal>, etc). Seam extends all of these callbacks except "
+"<literal>@PreDestroy</literal> to JavaBean components. But Seam also defines "
+"its own component lifecycle callbacks."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:425
+#, no-c-format
+msgid ""
+"The <literal>@Create</literal> method is called every time Seam instantiates "
+"a component. Unlike the <literal>@PostConstruct</literal> method, this "
+"method is called after the component is fully constructed by the EJB "
+"container, and has access to all the usual Seam functionality (bijection, "
+"etc). Components may define only one <literal>@Create</literal> method."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:428
+#, no-c-format
+msgid ""
+"The <literal>@Destroy</literal> method is called when the context that the "
+"Seam component is bound to ends. Components may define only one "
+"<literal>@Destroy</literal> method. Stateful session bean components "
+"<emphasis>must</emphasis> define a method annotated <literal>@Destroy "
+"@Remove</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:431
+#, no-c-format
+msgid ""
+"Finally, a related annotation is the <literal>@Startup</literal> annotation, "
+"which may be applied to any application or session scoped component. The "
+"<literal>@Startup</literal> annotation tells Seam to instantiate the "
+"component immediately, when the context begins, instead of waiting until it "
+"is first referenced by a client. It is possible to control the order of "
+"instantiation of startup components by specifying <literal>@Startup(depends="
+"{....})</literal>."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:434
+#, no-c-format
+msgid "Conditional installation"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:435
+#, no-c-format
+msgid ""
+"The <literal>@Install</literal> annotation lets you control conditional "
+"installation of components that are required in some deployment scenarios "
+"and not in others. This is useful if:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:440
+#, no-c-format
+msgid "You want to mock out some infrastructural component in tests."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:445
+#, no-c-format
+msgid ""
+"You want change the implementation of a component in certain deployment "
+"scenarios."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:450
+#, no-c-format
+msgid ""
+"You want to install some components only if their dependencies are available "
+"(useful for framework authors)."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:455
+#, no-c-format
+msgid ""
+"<literal>@Install</literal> works by letting you specify "
+"<emphasis>precedence</emphasis> and <emphasis>dependencies</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:458
+#, no-c-format
+msgid ""
+"The precedence of a component is a number that Seam uses to decide which "
+"component to install when there are multiple classes with the same component "
+"name in the classpath. Seam will choose the component with the higher "
+"precendence. There are some predefined precedence values:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:463
+#, no-c-format
+msgid ""
+"<literal>BUILT_IN</literal> &mdash; the lowest precedece components are the "
+"components built in to Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:468
+#, no-c-format
+msgid ""
+"<literal>FRAMEWORK</literal> &mdash; components defined by third-party "
+"frameworks may override built-in components, but are overridden by "
+"application components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:473
+#, no-c-format
+msgid ""
+"<literal>APPLICATION</literal> &mdash; the default precedence. This is "
+"appropriate for most application components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:478
+#, no-c-format
+msgid ""
+"<literal>DEPLOYMENT</literal> &mdash; for application components which are "
+"deployment-specific."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:483
+#, no-c-format
+msgid "<literal>MOCK</literal> &mdash; for mock objects used in testing."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:488
+#, no-c-format
+msgid ""
+"Suppose we have a component named <literal>messageSender</literal> that "
+"talks to a JMS queue."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:491
+#, no-c-format
+msgid ""
+"@Name(\"messageSender\") \n"
+"public class MessageSender {\n"
+"    public void sendMessage() {\n"
+"        //do something with JMS\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:492
+#, no-c-format
+msgid ""
+"In our unit tests, we don't have a JMS queue available, so we would like to "
+"stub out this method. We'll create a <emphasis>mock</emphasis> component "
+"that exists in the classpath when unit tests are running, but is never "
+"deployed with the application:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:495
+#, no-c-format
+msgid ""
+"@Name(\"messageSender\") \n"
+"@Install(precedence=MOCK)\n"
+"public class MockMessageSender extends MessageSender {\n"
+"    public void sendMessage() {\n"
+"        //do nothing!\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:496
+#, no-c-format
+msgid ""
+"The <literal>precedence</literal> helps Seam decide which version to use "
+"when it finds both components in the classpath."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:499
+#, no-c-format
+msgid ""
+"This is nice if we are able to control exactly which classes are in the "
+"classpath. But if I'm writing a reusable framework with many dependecies, I "
+"don't want to have to break that framework across many jars. I want to be "
+"able to decide which components to install depending upon what other "
+"components are installed, and upon what classes are available in the "
+"classpath. The <literal>@Install</literal> annotation also controls this "
+"functionality. Seam uses this mechanism internally to enable conditional "
+"installation of many of the built-in components. However, you probably won't "
+"need to use it in your application."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:502
+#, no-c-format
+msgid "Logging"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:503
+#, no-c-format
+msgid "Who is not totally fed up with seeing noisy code like this?"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:506
+#, no-c-format
+msgid ""
+"private static final Log log = LogFactory.getLog(CreateOrderAction.class);\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    if ( log.isDebugEnabled() ) {\n"
+"        log.debug(\"Creating new order for user: \" + user.username() + \n"
+"            \" product: \" + product.name() \n"
+"            + \" quantity: \" + quantity);\n"
+"    }\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:507
+#, no-c-format
+msgid ""
+"It is difficult to imagine how the code for a simple log message could "
+"possibly be more verbose. There is more lines of code tied up in logging "
+"than in the actual business logic! I remain totally astonished that the Java "
+"community has not come up with anything better in 10 years."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:510
+#, no-c-format
+msgid ""
+"Seam provides a logging API built on top of Apache commons-logging that "
+"simplifies this code significantly:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:513
+#, no-c-format
+msgid ""
+"@Logger private Log log;\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    log.debug(\"Creating new order for user: #0 product: #1 quantity: #2\", "
+"user.username(), \n"
+"       product.name(), quantity);\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:514
+#, no-c-format
+msgid ""
+"It doesn't matter if you declare the <literal>log</literal> variable static "
+"or not&mdash;it will work either way."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:517
+#, no-c-format
+msgid ""
+"Note that we don't need the noisy <literal>if ( log.isDebugEnabled() )</"
+"literal> guard, since string concatenation happens <emphasis>inside</"
+"emphasis> the <literal>debug()</literal> method. Note also that we don't "
+"usually need to specify the log category explicitly, since Seam knows what "
+"component it is injecting the <literal>Log</literal> into."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:520
+#, no-c-format
+msgid ""
+"If <literal>User</literal> and <literal>Product</literal> are Seam "
+"components available in the current contexts, it gets even better:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:523
+#, no-c-format
+msgid ""
+"@Logger private Log log;\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    log.debug(\"Creating new order for user: #{user.username} product: #"
+"{product.name}\n"
+"       quantity: #0\", quantity);\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:524
+#, no-c-format
+msgid ""
+"The <literal>Mutable</literal> interface and <literal>@ReadOnly</literal>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:525
+#, no-c-format
+msgid ""
+"Many application servers feature an amazingly broken implementation of "
+"<literal>HttpSession</literal> clustering, where changes to the state of "
+"mutable objects bound to the session are only replicated when the "
+"application calls <literal>setAttribute()</literal> explicitly. This is a "
+"source of bugs that can not effectively be tested for at development time, "
+"since they will only manifest when failover occurs. Furthermore, the actual "
+"replication message contains the entire serialized object graph bound to the "
+"session attribute, which is inefficient."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:528
+#, no-c-format
+msgid ""
+"Of course, EJB stateful session beans must perform automatic dirty checking "
+"and replication of mutable state and a sophisticated EJB container can "
+"introduce optimizations such as attribute-level replication. Unfortunately, "
+"not all Seam users have the good fortune to be working in an environment "
+"that supports EJB 3.0. So, for session and conversation scoped JavaBean and "
+"entity bean components, Seam provides an extra layer of cluster-safe state "
+"management over the top of the web container session clustering."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:531
+#, no-c-format
+msgid ""
+"For session or conversation scoped JavaBean components, Seam automatically "
+"forces replication to occur by calling <literal>setAttribute()</literal> "
+"once in every request that the component was invoked by the application. Of "
+"course, this strategy is inefficient for read-mostly components. You can "
+"control this behavior by implementing the <literal>org.jboss.seam.core."
+"Mutable</literal> interface, or by extending <literal>org.jboss.seam.core."
+"AbstractMutable</literal>, and writing your own dirty-checking logic inside "
+"the component. For example,"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:534
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class Account extends AbstractMutable\n"
+"{\n"
+"    private BigDecimal balance;\n"
+"    \n"
+"    public void setBalance(BigDecimal balance)\n"
+"    {\n"
+"        setDirty(this.balance, balance);\n"
+"        this.balance = balance;\n"
+"    }\n"
+"    \n"
+"    public BigDecimal getBalance()\n"
+"    {\n"
+"        return balance;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:535
+#, no-c-format
+msgid ""
+"Or, you can use the <literal>@ReadOnly</literal> annotation to achieve a "
+"similar effect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:538
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class Account\n"
+"{\n"
+"    private BigDecimal balance;\n"
+"    \n"
+"    public void setBalance(BigDecimal balance)\n"
+"    {\n"
+"        this.balance = balance;\n"
+"    }\n"
+"    \n"
+"    @ReadOnly\n"
+"    public BigDecimal getBalance()\n"
+"    {\n"
+"        return balance;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:539
+#, no-c-format
+msgid ""
+"For session or conversation scoped entity bean components, Seam "
+"automatically forces replication to occur by calling <literal>setAttribute()"
+"</literal> once in every request, <emphasis>unless the (conversation-scoped) "
+"entity is currently associated with a Seam-managed persistence context, in "
+"which case no replication is needed</emphasis>. This strategy is not "
+"necessarily efficient, so session or conversation scope entity beans should "
+"be used with care. You can always write a stateful session bean or JavaBean "
+"component to \"manage\" the entity bean instance. For example,"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:542
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"account\")\n"
+"public class AccountManager extends AbstractMutable\n"
+"{\n"
+"    private Account account; // an entity bean\n"
+"    \n"
+"    @Unwrap\n"
+"    public void getAccount()\n"
+"    {\n"
+"        return account;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:543
+#, no-c-format
+msgid ""
+"Note that the <literal>EntityHome</literal> class in the Seam Application "
+"Framework provides a great example of this pattern."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:546
+#, no-c-format
+msgid "Factory and manager components"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:547
+#, no-c-format
+msgid ""
+"We often need to work with objects that are not Seam components. But we "
+"still want to be able to inject them into our components using <literal>@In</"
+"literal> and use them in value and method binding expressions, etc. "
+"Sometimes, we even need to tie them into the Seam context lifecycle "
+"(<literal>@Destroy</literal>, for example). So the Seam contexts can contain "
+"objects which are not Seam components, and Seam provides a couple of nice "
+"features that make it easier to work with non-component objects bound to "
+"contexts."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:550
+#, no-c-format
+msgid ""
+"The <emphasis>factory component pattern</emphasis> lets a Seam component act "
+"as the instantiator for a non-component object. A <emphasis>factory method</"
+"emphasis> will be called when a context variable is referenced but has no "
+"value bound to it. We define factory methods using the <literal>@Factory</"
+"literal> annotation. The factory method binds a value to the context "
+"variable, and determines the scope of the bound value. There are two styles "
+"of factory method. The first style returns a value, which is bound to the "
+"context by Seam:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:553
+#, no-c-format
+msgid ""
+"@Factory(scope=CONVERSATION)\n"
+"public List&lt;Customer&gt; getCustomerList() { \n"
+"    return ... ;\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:554
+#, no-c-format
+msgid ""
+"The second style is a method of type <literal>void</literal> which binds the "
+"value to the context variable itself:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:557
+#, no-c-format
+msgid ""
+"@DataModel List&lt;Customer&gt; customerList;\n"
+"\n"
+"@Factory(\"customerList\")\n"
+"public void initCustomerList() { \n"
+"    customerList = ...  ;\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:558
+#, no-c-format
+msgid ""
+"In both cases, the factory method is called when we reference the "
+"<literal>customerList</literal> context variable and its value is null, and "
+"then has no further part to play in the lifecycle of the value. An even more "
+"powerful pattern is the <emphasis>manager component pattern</emphasis>. In "
+"this case, we have a Seam component that is bound to a context variable, "
+"that manages the value of the context variable, while remaining invisible to "
+"clients."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:561
+#, no-c-format
+msgid ""
+"A manager component is any component with an <literal>@Unwrap</literal> "
+"method. This method returns the value that will be visable to clients, and "
+"is called <emphasis>every time</emphasis> a context variable is referenced."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:564
+#, no-c-format
+msgid ""
+"@Name(\"customerList\")\n"
+"@Scope(CONVERSATION)\n"
+"public class CustomerListManager\n"
+"{\n"
+"    ...\n"
+"    \n"
+"    @Unwrap\n"
+"    public List&lt;Customer&gt; getCustomerList() { \n"
+"        return ... ;\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:565
+#, no-c-format
+msgid ""
+"This pattern is especially useful if we have some heavyweight object that "
+"needs a cleanup operation when the context ends. In this case, the manager "
+"component may perform cleanup in the <literal>@Destroy</literal> method."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Configuration.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Configuration.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Configuration.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1435 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Configuration.xml:10
+#, no-c-format
+msgid "Configuring Seam and packaging Seam applications"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:11
+#, no-c-format
+msgid ""
+"Configuration is a very boring topic and an extremely tedious pastime. "
+"Unfortunately, several lines of XML are required to integrate Seam into your "
+"JSF implementation and servlet container. There's no need to be too put off "
+"by the following sections; you'll never need to type any of this stuff "
+"yourself, since you can just copy and paste from the example applications!"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:14
+#, no-c-format
+msgid "Basic Seam configuration"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:15
+#, no-c-format
+msgid ""
+"First, let's look at the basic configuration that is needed whenever we use "
+"Seam with JSF."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:18
+#, no-c-format
+msgid "Integrating Seam with JSF and your servlet container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:19
+#, no-c-format
+msgid ""
+"Seam requires the following entry in your <literal>web.xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:22
+#, no-c-format
+msgid ""
+"&lt;listener&gt;\n"
+"    &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/listener-"
+"class&gt;\n"
+"&lt;/listener&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:23
+#, no-c-format
+msgid ""
+"This listener is responsible for bootstrapping Seam, and for destroying "
+"session and application contexts."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:26
+#, no-c-format
+msgid ""
+"To integrate with the JSF request lifecycle, we also need a JSF "
+"<literal>PhaseListener</literal> registered in in the <literal>faces-config."
+"xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:29
+#, no-c-format
+msgid ""
+"&lt;lifecycle&gt;\n"
+"    &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-"
+"listener&gt;\n"
+"&lt;/lifecycle&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:30
+#, no-c-format
+msgid ""
+"The actual listener class here varies depending upon how you want to manage "
+"transaction demarcation (more on this below)."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:33
+#, no-c-format
+msgid ""
+"If you are using Sun's JSF 1.2 reference implementation, you should also add "
+"this to <literal>faces-config.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:36
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;el-resolver&gt;org.jboss.seam.jsf.SeamELResolver&lt;/el-"
+"resolver&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:37
+#, no-c-format
+msgid ""
+"(This line should not strictly speaking be necessary, but it works around a "
+"minor bug in the RI.)"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:40
+#, no-c-format
+msgid ""
+"Some JSF implementations have a broken implementation of server-side state "
+"saving that interferes with Seam's conversation propagation. If you have "
+"problems with conversation propagation during form submissions, try "
+"switching to client-side state saving. You'll need this in <literal>web.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:43
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;client&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:44
+#, no-c-format
+msgid "Seam servlet filters"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:45
+#, no-c-format
+msgid ""
+"Seam doesn't need any servlet filters for basic operation. However, there "
+"are several features which depend upon the use of filters. To make things "
+"easier for you guys, Seam lets you add and configure servlet filters just "
+"like you would configure other built-in Seam components. To take advantage "
+"of this feature, we must first install a master filter in <literal>web.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:48
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;/*&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:49
+#, no-c-format
+msgid "Adding the master filter enables the following built-in filters."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:52
+#, no-c-format
+msgid "Exception handling"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:53
+#, no-c-format
+msgid ""
+"This filter provides the exception mapping functionality in <literal>pages."
+"xml</literal> (almost all applications will need this). It also takes care "
+"of rolling back uncommitted transactions when uncaught exceptions occur. "
+"(According to the Java EE specification, the web container should do this "
+"automatically, but we've found that this behavior cannot be relied upon in "
+"all application servers. And it is certainly not required of plain servlet "
+"engines like Tomcat.)"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:56
+#, no-c-format
+msgid ""
+"By default, the exception handling filter will process all requests, however "
+"this behavior may be adjusted by adding a <literal>&lt;web:exception-"
+"filter&gt;</literal> entry to <literal>components.xml</literal>, as shown in "
+"this example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:59
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:web=\"http://jboss.com/products/seam/web\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                    http://jboss.com/products/seam/core-1.2.xsd\n"
+"                 http://jboss.com/products/seam/components \n"
+"                     http://jboss.com/products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/web \n"
+"                     http://jboss.com/products/seam/web-1.2.xsd\"&gt;\n"
+"\n"
+"    &lt;web:exception-filter url-pattern=\"*.seam\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:62 Configuration.xml:77 Configuration.xml:99
+#: Configuration.xml:124
+#, no-c-format
+msgid ""
+"<literal>url-pattern</literal> &mdash; Used to specify which requests are "
+"filtered, the default is all requests."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:67
+#, no-c-format
+msgid "Conversation propagation with redirects"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:68
+#, no-c-format
+msgid ""
+"This filter allows Seam to propagate the conversation context across browser "
+"redirects. It intercepts any browser redirects and adds a request parameter "
+"that specifies the Seam conversation identifier."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:71
+#, no-c-format
+msgid ""
+"The redirect filter will process all requests by default, but this behavior "
+"can also be adjusted in <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:74
+#, no-c-format
+msgid "&lt;web:redirect-filter url-pattern=\"*.seam\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:82
+#, no-c-format
+msgid "Multipart form submissions"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:83
+#, no-c-format
+msgid ""
+"This feature is necessary when using the Seam file upload JSF control. It "
+"detects multipart form requests and processes them according to the "
+"multipart/form-data specification (RFC-2388). To override the default "
+"settings, add the following entry to <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:86
+#, no-c-format
+msgid ""
+"&lt;web:multipart-filter create-temp-files=\"true\" \n"
+"        max-request-size=\"1000000\" \n"
+"        url-pattern=\"*.seam\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:89
+#, no-c-format
+msgid ""
+"<literal>create-temp-files</literal> &mdash; If set to <literal>true</"
+"literal>, uploaded files are written to a temporary file (instead of held in "
+"memory). This may be an important consideration if large file uploads are "
+"expected. The default setting is <literal>false</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:94
+#, no-c-format
+msgid ""
+"<literal>max-request-size</literal> &mdash; If the size of a file upload "
+"request (determined by reading the <literal>Content-Length</literal> header "
+"in the request) exceeds this value, the request will be aborted. The default "
+"setting is 0 (no size limit)."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:104
+#, no-c-format
+msgid "Character encoding"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:105
+#, no-c-format
+msgid "Sets the character encoding of submitted form data."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:108 Configuration.xml:136
+#, no-c-format
+msgid ""
+"This filter is not installed by default and requires an entry in "
+"<literal>components.xml</literal> to enable it:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:111
+#, no-c-format
+msgid ""
+"&lt;web:character-encoding-filter encoding=\"UTF-16\" \n"
+"        override-client=\"true\" \n"
+"        url-pattern=\"*.seam\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:114
+#, no-c-format
+msgid "<literal>encoding</literal> &mdash; The encoding to use."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:119
+#, no-c-format
+msgid ""
+"<literal>override-client</literal> &mdash; If this is set to <literal>true</"
+"literal>, the request encoding will be set to whatever is specified by "
+"<literal>encoding</literal> no matter whether the request already specifies "
+"an encoding or not. If set to <literal>false</literal>, the request encoding "
+"will only be set if the request doesn't already specify an encoding. The "
+"default setting is <literal>false</literal>."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:129
+#, no-c-format
+msgid "Context management for custom servlets"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:130
+#, no-c-format
+msgid ""
+"Requests sent direct to some servlet other than the JSF servlet are not "
+"processed through the JSF lifecycle, so Seam provides a servlet filter that "
+"can be applied to any other servlet that needs access to Seam components."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:133
+#, no-c-format
+msgid ""
+"This filter allows custom servlets to interact with the Seam contexts. It "
+"sets up the Seam contexts at the beginning of each request, and tears them "
+"down at the end of the request. You should make sure that this filter is "
+"<emphasis>never</emphasis> applied to the JSF <literal>FacesServlet</"
+"literal>. Seam uses the phase listener for context management in a JSF "
+"request."
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:139
+#, no-c-format
+msgid "&lt;web:context-filter url-pattern=\"/media/*\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:142
+#, no-c-format
+msgid ""
+"<literal>url-pattern</literal> &mdash; Used to specify which requests are "
+"filtered, the default is all requests. If the url-pattern is specified for "
+"the context filter, then the filter will be enabled (unless explicitly "
+"disabled)."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:147
+#, no-c-format
+msgid ""
+"The context filter expects to find the conversation id of any conversation "
+"context in a request parameter named <literal>conversationId</literal>. You "
+"are responsible for ensuring that it gets sent in the request."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:150
+#, no-c-format
+msgid ""
+"You are also responsible for ensuring propagation of any new conversation id "
+"back to the client. Seam exposes the conversation id as a property of the "
+"built in component <literal>conversation</literal>."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:153
+#, no-c-format
+msgid "Integrating Seam with your EJB container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:154
+#, no-c-format
+msgid ""
+"We need to apply the <literal>SeamInterceptor</literal> to our Seam "
+"components. The simplest way to do this is to add the following interceptor "
+"binding to the <literal>&lt;assembly-descriptor&gt;</literal> in "
+"<literal>ejb-jar.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:157
+#, no-c-format
+msgid ""
+"&lt;interceptor-binding&gt;\n"
+"    &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"    &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"&lt;/interceptor-binding&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:158
+#, no-c-format
+msgid ""
+"Seam needs to know where to go to find session beans in JNDI. One way to do "
+"this is specify the <literal>@JndiName</literal> annotation on every session "
+"bean Seam component. However, this is quite tedious. A better approach is to "
+"specify a pattern that Seam can use to calculate the JNDI name from the EJB "
+"name. Unfortunately, there is no standard mapping to global JNDI defined in "
+"the EJB3 specification, so this mapping is vendor-specific. We usually "
+"specify this option in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:161
+#, no-c-format
+msgid "For JBoss AS, the following pattern is correct:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:164
+#, no-c-format
+msgid "&lt;core:init jndi-name=\"myEarName/#{ejbName}/local\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:165
+#, no-c-format
+msgid ""
+"Where <literal>myEarName</literal> is the name of the EAR in which the bean "
+"is deployed."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:168
+#, no-c-format
+msgid ""
+"Outside the context of an EAR (when using the JBoss Embeddable EJB3 "
+"container), the following pattern is the one to use:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:171
+#, no-c-format
+msgid "&lt;core:init jndi-name=\"#{ejbName}/local\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:172
+#, no-c-format
+msgid ""
+"You'll have to experiment to find the right setting for other application "
+"servers. Note that some servers (such as GlassFish) require you to specify "
+"JNDI names for all EJB components explicitly (and tediously). In this case, "
+"you can pick your own pattern ;-)"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:175
+#, no-c-format
+msgid "Using facelets"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:176
+#, no-c-format
+msgid ""
+"If you want follow our advice and use facelets instead of JSP, add the "
+"following lines to <literal>faces-config.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:179
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;view-handler&gt;com.sun.facelets.FaceletViewHandler&lt;/view-"
+"handler&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:180
+#, no-c-format
+msgid "And the following lines to <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:183
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;javax.faces.DEFAULT_SUFFIX&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;.xhtml&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:184
+#, no-c-format
+msgid "Don't forget!"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:185
+#, no-c-format
+msgid ""
+"There is one final item you need to know about. You must place a "
+"<literal>seam.properties</literal>, <literal>META-INF/seam.properties</"
+"literal> or <literal>META-INF/components.xml</literal> file in any archive "
+"in which your Seam components are deployed (even an empty properties file "
+"will do). At startup, Seam will scan any archives with <literal>seam."
+"properties</literal> files for seam components."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:188
+#, no-c-format
+msgid ""
+"That's why all the Seam examples have an empty <literal>seam.properties</"
+"literal> file. You can't just delete this file and expect everything to "
+"still work!"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:191
+#, no-c-format
+msgid ""
+"You might think this is silly and what kind of idiot framework designers "
+"would make an empty file affect the behavior of their software?? Well, this "
+"is a workaround for a limitation of the JVM&mdash;if we didn't use this "
+"mechanism, our next best option would be to force you to list every "
+"component explicitly in <literal>components.xml</literal>, just like some "
+"other competing frameworks do! I think you'll like our way better."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:195
+#, no-c-format
+msgid "Configuring Seam in Java EE 5"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:204
+#, no-c-format
+msgid ""
+"If you're running in a Java EE 5 environment, this is all the configuration "
+"required to start using Seam!"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:207 Configuration.xml:270 Configuration.xml:318
+#: Configuration.xml:354 Configuration.xml:371
+#, no-c-format
+msgid "Packaging"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:208
+#, no-c-format
+msgid ""
+"Once you've packaged all this stuff together into an EAR, the archive "
+"structure will look something like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:211
+#, no-c-format
+msgid ""
+"my-application.ear/\n"
+"    jboss-seam.jar\n"
+"    el-api.jar\n"
+"    el-ri.jar\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"        application.xml\n"
+"    my-application.war/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"        WEB-INF/\n"
+"            web.xml\n"
+"            components.xml\n"
+"            faces-config.xml\n"
+"            lib/\n"
+"                jsf-facelets.jar\n"
+"                jboss-seam-ui.jar\n"
+"        login.jsp\n"
+"        register.jsp\n"
+"        ...\n"
+"    my-application.jar/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"            persistence.xml\n"
+"        seam.properties\n"
+"        org/\n"
+"            jboss/\n"
+"                myapplication/\n"
+"                    User.class\n"
+"                    Login.class\n"
+"                    LoginBean.class\n"
+"                    Register.class\n"
+"                    RegisterBean.class\n"
+"                    ..."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:212
+#, no-c-format
+msgid ""
+"You must include <literal>jboss-seam.jar</literal>, <literal>el-api.jar</"
+"literal> and <literal>el-ri.jar</literal> in the EAR classpath. Make sure "
+"you reference all of these jars from <literal>application.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:215
+#, no-c-format
+msgid ""
+"If you want to use jBPM or Drools, you must include the needed jars in the "
+"EAR classpath. Make sure you reference all of the jars from "
+"<literal>application.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:218
+#, no-c-format
+msgid ""
+"If you want to use facelets (our recommendation), you must include "
+"<literal>jsf-facelets.jar</literal> in the <literal>WEB-INF/lib</literal> "
+"directory of the WAR."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:221
+#, no-c-format
+msgid ""
+"If you want to use the Seam tag library (most Seam applications do), you "
+"must include <literal>jboss-seam-ui.jar</literal> in the <literal>WEB-INF/"
+"lib</literal> directory of the WAR. If you want to use the PDF or email tag "
+"libraries, you need to put <literal>jboss-seam-pdf.jar</literal> or "
+"<literal>jboss-seam-mail.jar</literal> in <literal>WEB-INF/lib</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:224
+#, no-c-format
+msgid ""
+"If you want to use the Seam debug page (only works for applications using "
+"facelets), you must include <literal>jboss-seam-debug.jar</literal> in the "
+"<literal>WEB-INF/lib</literal> directory of the WAR."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:227
+#, no-c-format
+msgid ""
+"Seam ships with several example applications that are deployable in any Java "
+"EE container that supports EJB 3.0."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:231
+#, no-c-format
+msgid "Configuring Seam in Java SE, with the JBoss Embeddable EJB3 container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:232
+#, no-c-format
+msgid ""
+"The JBoss Embeddable EJB3 container lets you run EJB3 components outside the "
+"context of the Java EE 5 application server. This is especially, but not "
+"only, useful for testing."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:235
+#, no-c-format
+msgid ""
+"The Seam booking example application includes a TestNG integration test "
+"suite that runs on the Embeddable EJB3 container."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:246
+#, no-c-format
+msgid "The booking example application may even be deployed to Tomcat."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:257
+#, no-c-format
+msgid "Installing the Embeddable EJB3 container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:258
+#, no-c-format
+msgid ""
+"Seam ships with a build of the Embeddable EJB3 container in the "
+"<literal>embedded-ejb</literal> directory. To use the Embeddable EJB3 "
+"container with Seam, add the <literal>embedded-ejb/conf</literal> directory, "
+"and all jars in the <literal>lib</literal> and <literal>embedded-ejb/lib</"
+"literal> directories to your classpath. Then, add the following line to "
+"<literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:261
+#, no-c-format
+msgid "&lt;core:ejb /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:262
+#, no-c-format
+msgid ""
+"This setting installs the built-in component named <literal>org.jboss.seam."
+"core.ejb</literal>. This component is responsible for bootstrapping the EJB "
+"container when Seam is started, and shutting it down when the web "
+"application is undeployed."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:265
+#, no-c-format
+msgid "Configuring a datasource with the Embeddable EJB3 container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:266
+#, no-c-format
+msgid ""
+"You should refer to the Embeddable EJB3 container documentation for more "
+"information about configuring the container. You'll probably at least need "
+"to set up your own datasource. Embeddable EJB3 is implemented using the "
+"JBoss Microcontainer, so it's very easy to add new services to the minimal "
+"set of services provided by default. For example, I can add a new datasource "
+"by putting this <literal>jboss-beans.xml</literal> file in my classpath:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:269
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"\n"
+"&lt;deployment xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"urn:jboss:bean-deployer bean-deployer_1_0."
+"xsd\"\n"
+"            xmlns=\"urn:jboss:bean-deployer\"&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasourceBootstrap\"\n"
+"        class=\"org.jboss.resource.adapter.jdbc.local.LocalTxDataSource"
+"\"&gt;\n"
+"      &lt;property name=\"driverClass\"&gt;org.hsqldb.jdbcDriver&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"connectionURL\"&gt;jdbc:hsqldb:.&lt;/property&gt;\n"
+"      &lt;property name=\"userName\"&gt;sa&lt;/property&gt;\n"
+"      &lt;property name=\"jndiName\"&gt;java:/bookingDatasource&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"minSize\"&gt;0&lt;/property&gt;\n"
+"      &lt;property name=\"maxSize\"&gt;10&lt;/property&gt;\n"
+"      &lt;property name=\"blockingTimeout\"&gt;1000&lt;/property&gt;\n"
+"      &lt;property name=\"idleTimeout\"&gt;100000&lt;/property&gt;\n"
+"      &lt;property name=\"transactionManager\"&gt;\n"
+"        &lt;inject bean=\"TransactionManager\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"      &lt;property name=\"cachedConnectionManager\"&gt;\n"
+"        &lt;inject bean=\"CachedConnectionManager\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"      &lt;property name=\"initialContextProperties\"&gt;\n"
+"        &lt;inject bean=\"InitialContextProperties\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasource\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getDatasource\"&gt;\n"
+"         &lt;factory bean=\"bookingDatasourceBootstrap\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"&lt;/deployment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:271
+#, no-c-format
+msgid ""
+"The archive structure of a WAR-based deployment on an servlet engine like "
+"Tomcat will look something like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:274
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            myfaces-api.jar\n"
+"            myfaces-impl.jar\n"
+"            jboss-ejb3.jar\n"
+"            jboss-jca.jar\n"
+"            jboss-j2ee.jar\n"
+"            ...\n"
+"            mc-conf.jar/\n"
+"                ejb3-interceptors-aop.xml\n"
+"                embedded-jboss-beans.xml\n"
+"                default.persistence.properties\n"
+"                jndi.properties\n"
+"                login-config.xml\n"
+"                security-beans.xml\n"
+"                log4j.xml\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                    MANIFEST.MF\n"
+"                    persistence.xml\n"
+"                    jboss-beans.xml\n"
+"                log4j.xml\n"
+"                seam.properties\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            LoginBean.class\n"
+"                            Register.class\n"
+"                            RegisterBean.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:275
+#, no-c-format
+msgid ""
+"The <literal>mc-conf.jar</literal> just contains the standard JBoss "
+"Microcontainer configuration files for Embeddable EJB3. You won't usually "
+"need to edit these files yourself."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:278
+#, no-c-format
+msgid ""
+"Most of the Seam example applications may be deployed to Tomcat by running "
+"<literal>ant deploy.tomcat</literal>."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:281
+#, no-c-format
+msgid "Configuring Seam in J2EE"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:282
+#, no-c-format
+msgid ""
+"Seam is useful even if you're not yet ready to take the plunge into EJB 3.0. "
+"In this case you would use Hibernate3 or JPA instead of EJB 3.0 persistence, "
+"and plain JavaBeans instead of session beans. You'll miss out on some of the "
+"nice features of session beans but it will be very easy to migrate to EJB "
+"3.0 when you're ready and, in the meantime, you'll be able to take advantage "
+"of Seam's unique declarative state management architecture."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:293
+#, no-c-format
+msgid ""
+"Seam JavaBean components do not provide declarative transaction demarcation "
+"like session beans do. You <emphasis>could</emphasis> manage your "
+"transactions manually using the JTA <literal>UserTransaction</literal> (you "
+"could even implement your own declarative transaction management in a Seam "
+"interceptor). But most applications will use Seam managed transactions when "
+"using Hibernate with JavaBeans. Follow the instructions in the persistence "
+"chapter to install <literal>TransactionalSeamPhaseListener</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:296
+#, no-c-format
+msgid ""
+"The Seam distribution includes a version of the booking example application "
+"that uses Hibernate3 and JavaBeans instead of EJB3, and another version that "
+"uses JPA and JavaBeans. These example applications are ready to deploy into "
+"any J2EE application server."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:299
+#, no-c-format
+msgid ""
+"If we want to deploy Hibernate in a non-J2EE environment like Tomcat or "
+"TestNG, we need to do a little bit more work."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:302
+#, no-c-format
+msgid "Boostrapping Hibernate in Seam"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:303
+#, no-c-format
+msgid ""
+"Seam will bootstrap a Hibernate <literal>SessionFactory</literal> from your "
+"<literal>hibernate.cfg.xml</literal> file if you install a built-in "
+"component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:306
+#, no-c-format
+msgid ""
+"&lt;core:hibernate-session-factory name=\"hibernateSessionFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:307
+#, no-c-format
+msgid ""
+"You will also need to configure a <emphasis>managed session</emphasis> if "
+"you want a Seam managed Hibernate <literal>Session</literal> to be available "
+"via injection."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:310
+#, no-c-format
+msgid "Boostrapping JPA in Seam"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:311
+#, no-c-format
+msgid ""
+"Seam will bootstrap a JPA <literal>EntityManagerFactory</literal> from your "
+"<literal>persistence.xml</literal> file if you install this built-in "
+"component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:314
+#, no-c-format
+msgid "&lt;core:entity-manager-factory name=\"entityManagerFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:315
+#, no-c-format
+msgid ""
+"You will also need to configure a <emphasis>managed persistencece context</"
+"emphasis> if you want a Seam managed JPA <literal>EntityManager</literal> to "
+"be available via injection."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:319
+#, no-c-format
+msgid "We can package our application as a WAR, in the following structure:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:322
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            hibernate3.jar\n"
+"            hibernate-annotations.jar\n"
+"            ...\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                   MANIFEST.MF\n"
+"                seam.properties\n"
+"                hibernate.cfg.xml\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            Register.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:324
+#, no-c-format
+msgid "Configuring Seam in Java SE, with the JBoss Microcontainer"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:325
+#, no-c-format
+msgid ""
+"The Seam support for Hibernate and JPA requires JTA and a JCA datasource. If "
+"you are running in a non-EE environment like Tomcat or TestNG you can run "
+"these services, and Hibernate itself, in the JBoss Microcontainer."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:328
+#, no-c-format
+msgid ""
+"You can even deploy the Hibernate and JPA versions of the booking example in "
+"Tomcat."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:339
+#, no-c-format
+msgid ""
+"Seam ships with an example Microcontainer configuration in "
+"<literal>microcontainer/conf/jboss-beans.xml</literal> that provides all the "
+"things you need to run Seam with Hibernate in any non-EE environment. Just "
+"add the <literal>microcontainer/conf</literal> directory, and all jars in "
+"the <literal>lib</literal> and <literal>microcontainer/lib</literal> "
+"directories to your classpath. Refer to the documentation for the JBoss "
+"Microcontainer for more information."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:342
+#, no-c-format
+msgid "Using Hibernate and the JBoss Microcontainer"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:343
+#, no-c-format
+msgid ""
+"The built-in Seam component named <literal>org.jboss.seam.core."
+"microcontainer</literal> bootstraps the microcontainer. As before, we "
+"probably want to use a Seam managed session."
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:346
+#, no-c-format
+msgid ""
+"&lt;core:microcontainer/&gt;\n"
+"\n"
+"&lt;core:managed-hibernate-session name=\"bookingDatabase\" auto-create="
+"\"true\"\n"
+"    session-factory-jndi-name=\"java:/bookingSessionFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:347
+#, no-c-format
+msgid ""
+"Where <literal>java:/bookingSessionFactory</literal> is the name of the "
+"Hibernate session factory specified in <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:350
+#, no-c-format
+msgid ""
+"You'll need to provide a <literal>jboss.beans.xml</literal> file that "
+"installs JNDI, JTA, your JCA datasource and Hibernate into the "
+"microcontainer:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:353
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"\n"
+"&lt;deployment xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"urn:jboss:bean-deployer bean-deployer_1_0."
+"xsd\"\n"
+"            xmlns=\"urn:jboss:bean-deployer\"&gt;\n"
+"\n"
+"   &lt;bean name=\"Naming\" class=\"org.jnp.server.SingletonNamingServer\"/"
+"&gt;\n"
+"\n"
+"   &lt;bean name=\"TransactionManagerFactory\"\n"
+"       class=\"org.jboss.seam.microcontainer.TransactionManagerFactory\"/"
+"&gt;\n"
+"   &lt;bean name=\"TransactionManager\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getTransactionManager\"&gt;\n"
+"         &lt;factory bean=\"TransactionManagerFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasourceFactory\" class=\"org.jboss.seam."
+"microcontainer.DataSourceFactory\"&gt;\n"
+"      &lt;property name=\"driverClass\"&gt;org.hsqldb.jdbcDriver&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"connectionUrl\"&gt;jdbc:hsqldb:.&lt;/property&gt;\n"
+"      &lt;property name=\"userName\"&gt;sa&lt;/property&gt;\n"
+"      &lt;property name=\"jndiName\"&gt;java:/hibernateDatasource&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"minSize\"&gt;0&lt;/property&gt;\n"
+"      &lt;property name=\"maxSize\"&gt;10&lt;/property&gt;\n"
+"      &lt;property name=\"blockingTimeout\"&gt;1000&lt;/property&gt;\n"
+"      &lt;property name=\"idleTimeout\"&gt;100000&lt;/property&gt;\n"
+"      &lt;property name=\"transactionManager\"&gt;&lt;inject bean="
+"\"TransactionManager\"/&gt;&lt;/property&gt;\n"
+"   &lt;/bean&gt;\n"
+"   &lt;bean name=\"bookingDatasource\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getDataSource\"&gt;\n"
+"         &lt;factory bean=\"bookingDatasourceFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingSessionFactoryFactory\"\n"
+"       class=\"org.jboss.seam.microcontainer.HibernateFactory\"/&gt;\n"
+"   &lt;bean name=\"bookingSessionFactory\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getSessionFactory\"&gt;\n"
+"         &lt;factory bean=\"bookingSessionFactoryFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"      &lt;depends&gt;bookingDatasource&lt;/depends&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"&lt;/deployment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:355
+#, no-c-format
+msgid "The WAR could have the following structure:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:358
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            hibernate3.jar\n"
+"            ...\n"
+"            jboss-microcontainer.jar\n"
+"            jboss-jca.jar\n"
+"            ...\n"
+"            myfaces-api.jar\n"
+"            myfaces-impl.jar\n"
+"            mc-conf.jar/\n"
+"                jndi.properties\n"
+"                log4j.xml\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                    MANIFEST.MF\n"
+"                    jboss-beans.xml\n"
+"                seam.properties\n"
+"                hibernate.cfg.xml\n"
+"                log4j.xml\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            Register.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:359
+#, no-c-format
+msgid "Configuring jBPM in Seam"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:360
+#, no-c-format
+msgid ""
+"Seam's jBPM integration is not installed by default, so you'll need to "
+"enable jBPM by installing a built-in component. You'll also need to "
+"explicitly list your process and pageflow definitions. In "
+"<literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:363
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:pageflow-definitions&gt;\n"
+"        &lt;value&gt;createDocument.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;editDocument.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;approveDocument.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:pageflow-definitions&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;documentLifecycle.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:364
+#, no-c-format
+msgid ""
+"No further special configuration is needed if you only have pageflows. If "
+"you do have business process definitions, you need to provide a jBPM "
+"configuration, and a Hibernate configuration for jBPM. The Seam DVD Store "
+"demo includes example <literal>jbpm.cfg.xml</literal> and <literal>hibernate."
+"cfg.xml</literal> files that will work with Seam:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:367
+#, no-c-format
+msgid ""
+"&lt;jbpm-configuration&gt;\n"
+"\n"
+"  &lt;jbpm-context&gt;\n"
+"    &lt;service name=\"persistence\"&gt;\n"
+"       &lt;factory&gt;\n"
+"          &lt;bean class=\"org.jbpm.persistence.db."
+"DbPersistenceServiceFactory\"&gt;\n"
+"             &lt;field name=\"isTransactionEnabled\"&gt;&lt;false/&gt;&lt;/"
+"field&gt;\n"
+"          &lt;/bean&gt;\n"
+"       &lt;/factory&gt;\n"
+"    &lt;/service&gt;\n"
+"    &lt;service name=\"message\" factory=\"org.jbpm.msg.db."
+"DbMessageServiceFactory\" /&gt;\n"
+"    &lt;service name=\"scheduler\" factory=\"org.jbpm.scheduler.db."
+"DbSchedulerServiceFactory\" /&gt;\n"
+"    &lt;service name=\"logging\" factory=\"org.jbpm.logging.db."
+"DbLoggingServiceFactory\" /&gt;\n"
+"    &lt;service name=\"authentication\" \n"
+"        factory=\"org.jbpm.security.authentication."
+"DefaultAuthenticationServiceFactory\" /&gt;\n"
+"  &lt;/jbpm-context&gt;\n"
+"\n"
+"&lt;/jbpm-configuration&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:368
+#, no-c-format
+msgid ""
+"The most important thing to notice here is that jBPM transaction control is "
+"disabled. Seam or EJB3 should control the JTA transactions."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:372
+#, no-c-format
+msgid ""
+"There is not yet any well-defined packaging format for jBPM configuration "
+"and process/pageflow definition files. In the Seam examples we've decided to "
+"simply package all these files into the root of the EAR. In future, we will "
+"probably design some other standard packaging format. So the EAR looks "
+"something like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:375
+#, no-c-format
+msgid ""
+"my-application.ear/\n"
+"    jboss-seam.jar\n"
+"    el-api.jar\n"
+"    el-ri.jar\n"
+"    jbpm-3.1.jar\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"        application.xml\n"
+"    my-application.war/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"        WEB-INF/\n"
+"            web.xml\n"
+"            components.xml\n"
+"            faces-config.xml\n"
+"            lib/\n"
+"                jsf-facelets.jar\n"
+"                jboss-seam-ui.jar\n"
+"        login.jsp\n"
+"        register.jsp\n"
+"        ...\n"
+"    my-application.jar/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"            persistence.xml\n"
+"        seam.properties\n"
+"        org/\n"
+"            jboss/\n"
+"                myapplication/\n"
+"                    User.class\n"
+"                    Login.class\n"
+"                    LoginBean.class\n"
+"                    Register.class\n"
+"                    RegisterBean.class\n"
+"                    ...\n"
+"    jbpm.cfg.xml\n"
+"    hibernate.cfg.xml\n"
+"    createDocument.jpdl.xml\n"
+"    editDocument.jpdl.xml\n"
+"    approveDocument.jpdl.xml\n"
+"    documentLifecycle.jpdl.xml"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:376
+#, no-c-format
+msgid ""
+"Remember to add <literal>jbpm-3.1.jar</literal> to the manifest of your EJB-"
+"JAR and WAR."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:379
+#, no-c-format
+msgid "Configuring Seam in a Portal"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:380
+#, no-c-format
+msgid ""
+"To run a Seam application as a portlet, you'll need to provide certain "
+"portlet metadata (<literal>portlet.xml</literal>, etc) in addition to the "
+"usual Java EE metadata. See the <literal>examples/portal</literal> directory "
+"for an example of the booking demo preconfigured to run on JBoss Portal."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:383
+#, no-c-format
+msgid ""
+"In addition, you'll need to use a portlet-specific phase listener instead of "
+"<literal>SeamPhaseListener</literal> or "
+"<literal>TransactionalSeamPhaseListener</literal>. The "
+"<literal>SeamPortletPhaseListener</literal> and "
+"<literal>TransactionalSeamPortletPhaseListener</literal> are adapted to the "
+"portlet lifecycle. I would like to offer my sincerest apologies for the name "
+"of that last class. I really couldn't think of anything better. Sorry."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Controls.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Controls.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Controls.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,591 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Controls.xml:10
+#, no-c-format
+msgid "Seam JSF controls"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:11
+#, no-c-format
+msgid ""
+"Seam includes a number of JSF controls that are useful for working with "
+"Seam. These are intended to complement the built-in JSF controls, and "
+"controls from other third-party libraries. We recommend the Ajax4JSF and ADF "
+"faces (now Trinidad) tag libraries for use with Seam. We do not recommend "
+"the use of the Tomahawk tag library."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:14
+#, no-c-format
+msgid "The ui example demonstrates the use of a number of these tags."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:19
+#, no-c-format
+msgid "&lt;s:validate&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:21
+#, no-c-format
+msgid ""
+"Validate a JSF input field against the bound property using Hibernate "
+"Validator."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:27
+#, no-c-format
+msgid "&lt;s:validateAll&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:29
+#, no-c-format
+msgid ""
+"Validate all child JSF input fields against the bound propertys using "
+"Hibernate Validator."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:35
+#, no-c-format
+msgid "&lt;s:formattedText&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:37
+#, no-c-format
+msgid "Output <emphasis>Seam Text</emphasis>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:43
+#, no-c-format
+msgid "&lt;s:convertDateTime&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:45
+#, no-c-format
+msgid "Perform date or time conversions in the Seam timezone."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:51
+#, no-c-format
+msgid "&lt;s:convertEnum&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:53
+#, no-c-format
+msgid ""
+"Assigns an enum converter to the current component. This is primarily useful "
+"for radio button and dropdown controls."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:59
+#, no-c-format
+msgid "&lt;s:enumItem&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:61
+#, no-c-format
+msgid "Creates a <literal>SelectItem</literal> from an enum value."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:66
+#, no-c-format
+msgid ""
+"<literal>enumValue</literal> &mdash; the string representation of the enum "
+"value."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:71
+#, no-c-format
+msgid ""
+"<literal>label</literal> &mdash; the label to be used when rendering the "
+"<literal>SelectItem</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:79
+#, no-c-format
+msgid "&lt;s:selectItems&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:81
+#, no-c-format
+msgid ""
+"Creates a <literal>List&lt;SelectItem&gt;</literal> from a List, Set, "
+"DataModel or Array."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:86
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; an EL expression specifying the data that "
+"backs the <literal>List&lt;SelectItem&gt;</literal>"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:91
+#, no-c-format
+msgid ""
+"<literal>var</literal> &mdash; defines the name of the local variable that "
+"holds the current object during iteration"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:96
+#, no-c-format
+msgid ""
+"<literal>label</literal> &mdash; the label to be used when rendering the "
+"<literal>SelectItem</literal>. Can reference the <literal>var</literal> "
+"variable"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:101
+#, no-c-format
+msgid ""
+"<literal>disabled</literal> &mdash; if true the <literal>SelectItem</"
+"literal> will be rendered disabled. Can reference the <literal>var</literal> "
+"variable"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:106
+#, no-c-format
+msgid ""
+"<literal>noSelectionLabel</literal> &mdash; specifies the (optional) label "
+"to place at the top of list (if <literal>required=\"true\"</literal> is also "
+"specified then selecting this value will cause a validation error)"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:111
+#, no-c-format
+msgid ""
+"<literal>hideNoSelectionLabel</literal> &mdash; if true, the "
+"<literal>noSelectionLabel</literal> will be hidden when a value is selected"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:119
+#, no-c-format
+msgid "&lt;s:decorate&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:121
+#, no-c-format
+msgid "\"Decorate\" a JSF input field when validation fails."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:127
+#, no-c-format
+msgid "&lt;s:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:129
+#, no-c-format
+msgid "\"Decorate\" a JSF input field with the validation error message."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:135
+#, no-c-format
+msgid "&lt;s:span&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:137
+#, no-c-format
+msgid "Render a HTML <literal>&lt;span&gt;</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:143
+#, no-c-format
+msgid "&lt;s:div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:145
+#, no-c-format
+msgid "Render a HTML <literal>&lt;div&gt;</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:151
+#, no-c-format
+msgid "&lt;s:fragment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:153
+#, no-c-format
+msgid ""
+"A non-rendering component useful for enabling/disabling rendering of it's "
+"children"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:159
+#, no-c-format
+msgid "&lt;s:cache&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:161
+#, no-c-format
+msgid ""
+"Cache the rendered page fragment using JBoss Cache. Note that <literal>&lt;s:"
+"cache&gt;</literal> actually uses the instance of JBoss Cache managed by the "
+"built-in <literal>pojoCache</literal> component."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:166
+#, no-c-format
+msgid ""
+"<literal>key</literal> &mdash; the key to cache rendered content, often a "
+"value expression. For example, if we were caching a page fragment that "
+"displays a document, we might use <literal>key=\"Document-#{document.id}\"</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:171
+#, no-c-format
+msgid ""
+"<literal>enabled</literal> &mdash; a value expression that determines if the "
+"cache should be used."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:176
+#, no-c-format
+msgid ""
+"<literal>region</literal> &mdash; a JBoss Cache node to use (different nodes "
+"can have different expiry policies)."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:184
+#, no-c-format
+msgid "&lt;s:link&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:186
+#, no-c-format
+msgid ""
+"A link that supports invocation of an action with control over conversation "
+"propagation. <emphasis>Does not submit the form.</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:191 Controls.xml:236
+#, no-c-format
+msgid "<literal>value</literal> &mdash; the label."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:196 Controls.xml:241
+#, no-c-format
+msgid ""
+"<literal>action</literal> &mdash; a method binding that specified the action "
+"listener."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:201 Controls.xml:246
+#, no-c-format
+msgid "<literal>view</literal> &mdash; the JSF view id to link to."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:206 Controls.xml:251
+#, no-c-format
+msgid "<literal>fragment</literal> &mdash; the fragment identifier to link to."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:211 Controls.xml:256
+#, no-c-format
+msgid "<literal>disabled</literal> &mdash; is the link disabled?"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:216 Controls.xml:261 Controls.xml:301
+#, no-c-format
+msgid ""
+"<literal>propagation</literal> &mdash; determines the conversation "
+"propagation style: <literal>begin</literal>, <literal>join</literal>, "
+"<literal>nest</literal>, <literal>none</literal> or <literal>end</literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:221 Controls.xml:266 Controls.xml:306
+#, no-c-format
+msgid ""
+"<literal>pageflow</literal> &mdash; a pageflow definition to begin. (This is "
+"only useful when <literal>propagation=\"begin\"</literal> or "
+"<literal>propagation=\"join\"</literal>.)"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:229
+#, no-c-format
+msgid "&lt;s:button&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:231
+#, no-c-format
+msgid ""
+"A button that supports invocation of an action with control over "
+"conversation propagation. <emphasis>Does not submit the form.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:274
+#, no-c-format
+msgid "&lt;s:selectDate&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:276
+#, no-c-format
+msgid ""
+"Displays a dynamic date picker component that selects a date for the "
+"specified input field. The body of the <literal>selectDate</literal> element "
+"should contain HTML elements, such as text or an image, that prompt the user "
+"to click to display the date picker. The date picker can be styled using "
+"CSS. An example CSS file can be found in the Seam booking demo as "
+"<literal>date.css</literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:281
+#, no-c-format
+msgid ""
+"<literal>for</literal> &mdash; The id of the input field that the date "
+"picker will insert the selected date into."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:286
+#, no-c-format
+msgid ""
+"<literal>dateFormat</literal> &mdash; The date format string. This should "
+"match the date format of the input field."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:294
+#, no-c-format
+msgid "&lt;s:conversationPropagation&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:296
+#, no-c-format
+msgid ""
+"Customize the conversation propagation for a command link or button (or "
+"similar JSF control). <emphasis>Facelets only.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:314
+#, no-c-format
+msgid "&lt;s:conversationId&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:316
+#, no-c-format
+msgid ""
+"Add the conversation id to an output link (or similar JSF control). "
+"<emphasis>Facelets only.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:322
+#, no-c-format
+msgid "&lt;s:taskId&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:324
+#, no-c-format
+msgid ""
+"Add the task id to an output link (or similar JSF control), when the task is "
+"available via <literal>#{task}</literal>. <emphasis>Facelets only.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:330
+#, no-c-format
+msgid "&lt;s:fileUpload&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:332
+#, no-c-format
+msgid ""
+"Renders a file upload control. This control must be used within a form with "
+"an encoding type of <literal>multipart/form-data</literal>, i.e:"
+msgstr ""
+
+#. Tag: programlisting
+#: Controls.xml:335
+#, no-c-format
+msgid "&lt;h:form enctype=\"multipart/form-data\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:336
+#, no-c-format
+msgid ""
+"For multipart requests, the Seam Multipart servlet filter must also be "
+"configured in <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Controls.xml:339
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"      &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"      &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-"
+"class&gt;\n"
+"    &lt;/filter&gt;\n"
+"    \n"
+"    &lt;filter-mapping&gt;\n"
+"      &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"      &lt;url-pattern&gt;/*&lt;/url-pattern&gt;\n"
+"    &lt;/filter-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:340
+#, no-c-format
+msgid ""
+"The following configuration options for multipart requests may be configured "
+"in components.xml:"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:345
+#, no-c-format
+msgid ""
+"<literal>createTempFiles</literal> &mdash; if this option is set to true, "
+"uploaded files are streamed to a temporary file instead of in memory."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:350
+#, no-c-format
+msgid ""
+"<literal>maxRequestSize</literal> &mdash; the maximum size of a file upload "
+"request, in bytes."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:355
+#, no-c-format
+msgid "Here's an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Controls.xml:358
+#, no-c-format
+msgid ""
+"&lt;component class=\"org.jboss.seam.servlet.MultipartConfig\"&gt;\n"
+"        &lt;property name=\"createTempFiles\"&gt;true&lt;/property&gt;\n"
+"        &lt;property name=\"maxRequestSize\"&gt;1000000&lt;/property&gt;\n"
+"    &lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:359
+#, no-c-format
+msgid ""
+"And here's a list of the supported attributes for the <literal>fileUpload</"
+"literal> control:"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:364
+#, no-c-format
+msgid ""
+"<literal>data</literal> &mdash; this value binding receives the binary file "
+"data. The receiving field should be declared as a <literal>byte[]</literal> "
+"or <literal>InputStream</literal> (required)."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:369
+#, no-c-format
+msgid ""
+"<literal>contentType</literal> &mdash; this value binding receives the "
+"file's content type (optional)."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:374
+#, no-c-format
+msgid ""
+"<literal>fileName</literal> &mdash; this value binding receives the filename "
+"(optional)."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:379
+#, no-c-format
+msgid ""
+"<literal>accept</literal> &mdash; a comma-separated list of content types to "
+"accept, may not be supported by the browser. E.g. <literal>\"images/png,"
+"images/jpg\"</literal>, <literal>\"images/*\"</literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:384
+#, no-c-format
+msgid "<literal>style</literal> &mdash; The control's style"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:389
+#, no-c-format
+msgid "<literal>styleClass</literal> &mdash; The control's style class"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Conversations.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Conversations.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Conversations.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1248 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Conversations.xml:10
+#, no-c-format
+msgid "Conversations and workspace management"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:11
+#, no-c-format
+msgid "It's time to understand Seam's conversation model in more detail."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:14
+#, no-c-format
+msgid ""
+"Historically, the notion of a Seam \"conversation\" came about as a merger "
+"of three different ideas:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:19
+#, no-c-format
+msgid ""
+"The idea of a <emphasis>workspace</emphasis>, which I encountered in a "
+"project for the Victorian government in 2002. In this project I was forced "
+"to implement workspace management on top of Struts, an experience I pray "
+"never to repeat."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:24
+#, no-c-format
+msgid ""
+"The idea of an <emphasis>application transaction</emphasis> with optimistic "
+"semantics, and the realization that existing frameworks based around a "
+"stateless architecture could not provide effective management of extended "
+"persistence contexts. (The Hibernate team is truly fed up with copping the "
+"blame for <literal>LazyInitializationException</literal>s, which are not "
+"really Hibernate's fault, but rather the fault of the extremely limiting "
+"persistence context model supported by stateless architectures such as the "
+"Spring framework or the traditional <emphasis>stateless session facade</"
+"emphasis> (anti)pattern in J2EE.)"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:29
+#, no-c-format
+msgid "The idea of a workflow <emphasis>task</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:34
+#, no-c-format
+msgid ""
+"By unifying these ideas and providing deep support in the framework, we have "
+"a powerful construct that lets us build richer and more efficient "
+"applications with less code than before."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:38
+#, no-c-format
+msgid "Seam's conversation model"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:39
+#, no-c-format
+msgid ""
+"The examples we have seen so far make use of a very simple conversation "
+"model that follows these rules:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:44
+#, no-c-format
+msgid ""
+"There is always a conversation context active during the apply request "
+"values, process validations, update model values, invoke application and "
+"render response phases of the JSF request lifecycle."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:49
+#, no-c-format
+msgid ""
+"At the end of the restore view phase of the JSF request lifecycle, Seam "
+"attempts to restore any previous long-running conversation context. If none "
+"exists, Seam creates a new temporary conversation context."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:54
+#, no-c-format
+msgid ""
+"When an <literal>@Begin</literal> method is encountered, the temporary "
+"conversation context is promoted to a long running conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:59
+#, no-c-format
+msgid ""
+"When an <literal>@End</literal> method is encountered, any long-running "
+"conversation context is demoted to a temporary conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:64
+#, no-c-format
+msgid ""
+"At the end of the render response phase of the JSF request lifecycle, Seam "
+"stores the contents of a long running conversation context or destroys the "
+"contents of a temporary conversation context."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:69
+#, no-c-format
+msgid ""
+"Any faces request (a JSF postback) will propagate the conversation context. "
+"By default, non-faces requests (GET requests, for example) do not propagate "
+"the conversation context, but see below for more information on this."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:74
+#, no-c-format
+msgid ""
+"If the JSF request lifecycle is foreshortened by a redirect, Seam "
+"transparently stores and restores the current conversation context&mdash;"
+"unless the conversation was already ended via <literal>@End"
+"(beforeRedirect=true)</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:79
+#, no-c-format
+msgid ""
+"Seam transparently propagates the conversation context across JSF postbacks "
+"and redirects. If you don't do anything special, a <emphasis>non-faces "
+"request</emphasis> (a GET request for example) will not propagate the "
+"conversation context and will be processed in a new temporary conversation. "
+"This is usually - but not always - the desired behavior."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:82
+#, no-c-format
+msgid ""
+"If you want to propagate a Seam conversation across a non-faces request, you "
+"need to explicitly code the Seam <emphasis>conversation id</emphasis> as a "
+"request parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:85
+#, no-c-format
+msgid ""
+"&lt;a href=\"main.jsf?conversationId=#{conversation.id}\"&gt;Continue&lt;/"
+"a&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:86
+#, no-c-format
+msgid "Or, the more JSF-ish:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:89
+#, no-c-format
+msgid ""
+"&lt;h:outputLink value=\"main.jsf\"&gt;\n"
+"    &lt;f:param name=\"conversationId\" value=\"#{conversation.id}\"/&gt;\n"
+"    &lt;h:outputText value=\"Continue\"/&gt;\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:90 Conversations.xml:98
+#, no-c-format
+msgid "If you use the Seam tag library, this is equivalent:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:93
+#, no-c-format
+msgid ""
+"&lt;h:outputLink value=\"main.jsf\"&gt;\n"
+"    &lt;s:conversationId/&gt;\n"
+"    &lt;h:outputText value=\"Continue\"/&gt;\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:94
+#, no-c-format
+msgid ""
+"If you wish to disable propagation of the conversation context for a "
+"postback, a similar trick is used:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:97
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;f:param name=\"conversationPropagation\" value=\"none\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:101
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"none\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:102
+#, no-c-format
+msgid ""
+"Note that disabling conversation context propagation is absolutely not the "
+"same thing as ending the conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:105
+#, no-c-format
+msgid ""
+"The <literal>conversationPropagation</literal> request parameter, or the "
+"<literal>&lt;s:conversationPropagation&gt;</literal> tag may even be used to "
+"begin and end conversation, or begin a nested conversation."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:108
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"end\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:109
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Child\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"nested\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:110
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Hotel\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"begin\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:111
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Hotel\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"join\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:112
+#, no-c-format
+msgid ""
+"This conversation model makes it easy to build applications which behave "
+"correctly with respect to multi-window operation. For many applications, "
+"this is all that is needed. Some complex applications have either or both of "
+"the following additional requirements:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:117
+#, no-c-format
+msgid ""
+"A conversation spans many smaller units of user interaction, which execute "
+"serially or even concurrently. The smaller <emphasis>nested conversations</"
+"emphasis> have their own isolated set of conversation state, and also have "
+"access to the state of the outer conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:122
+#, no-c-format
+msgid ""
+"The user is able to switch between many conversations within the same "
+"browser window. This feature is called <emphasis>workspace management</"
+"emphasis>."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:130
+#, no-c-format
+msgid "Nested conversations"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:131
+#, no-c-format
+msgid ""
+"A nested conversation is created by invoking a method marked <literal>@Begin"
+"(nested=true)</literal> inside the scope of an existing conversation. A "
+"nested conversation has its own conversation context, and also has read-only "
+"access to the context of the outer conversation. (It can read the outer "
+"conversation's context variables, but not write to them.) When an "
+"<literal>@End</literal> is subsequently encountered, the nested conversation "
+"will be destroyed, and the outer conversation will resume, by \"popping\" "
+"the conversation stack. Conversations may be nested to any arbitrary depth."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:134
+#, no-c-format
+msgid ""
+"Certain user activity (workspace management, or the back button) can cause "
+"the outer conversation to be resumed before the inner conversation is ended. "
+"In this case it is possible to have multiple concurrent nested conversations "
+"belonging to the same outer conversation. If the outer conversation ends "
+"before a nested conversation ends, Seam destroys all nested conversation "
+"contexts along with the outer context."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:137
+#, no-c-format
+msgid ""
+"A conversation may be thought of as a <emphasis>continuable state</"
+"emphasis>. Nested conversations allow the application to capture a "
+"consistent continuable state at various points in a user interaction, thus "
+"insuring truly correct behavior in the face of backbuttoning and workspace "
+"management."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:140
+#, no-c-format
+msgid ""
+"TODO: an example to show how a nested conversation prevents bad stuff "
+"happening when you backbutton."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:143
+#, no-c-format
+msgid ""
+"Usually, if a component exists in a parent conversation of the current "
+"nested conversation, the nested conversation will use the same instance. "
+"Occasionally, it is useful to have a different instance in each nested "
+"conversation, so that the component instance that exists in the parent "
+"conversation is invisible to its child conversations. You can achieve this "
+"behavior by annotating the component <literal>@PerNestedConversation</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:149
+#, no-c-format
+msgid "Starting conversations with GET requests"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:150
+#, no-c-format
+msgid ""
+"JSF does not define any kind of action listener that is triggered when a "
+"page is accessed via a non-faces request (for example, a HTTP GET request). "
+"This can occur if the user bookmarks the page, or if we navigate to the page "
+"via an <literal>&lt;h:outputLink&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:153
+#, no-c-format
+msgid ""
+"Sometimes we want to begin a conversation immediately the page is accessed. "
+"Since there is no JSF action method, we can't solve the problem in the usual "
+"way, by annotating the action with <literal>@Begin</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:156
+#, no-c-format
+msgid ""
+"A further problem arises if the page needs some state to be fetched into a "
+"context variable. We've already seen two ways to solve this problem. If that "
+"state is held in a Seam component, we can fetch the state in a "
+"<literal>@Create</literal> method. If not, we can define a "
+"<literal>@Factory</literal> method for the context variable."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:159
+#, no-c-format
+msgid ""
+"If none of these options works for you, Seam lets you define a "
+"<emphasis>page action</emphasis> in the <literal>pages.xml</literal> file."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:162
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\" action=\"#{messageManager.list}\"/"
+"&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:163
+#, no-c-format
+msgid ""
+"This action method is called at the beginning of the render response phase, "
+"any time the page is about to be rendered. If a page action returns a non-"
+"null outcome, Seam will process any appropriate JSF and Seam navigation "
+"rules, possibly resulting in a completely different page being rendered."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:166
+#, no-c-format
+msgid ""
+"If <emphasis>all</emphasis> you want to do before rendering the page is "
+"begin a conversation, you could use a built-in action method that does just "
+"that:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:169
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\" action=\"#{conversation.begin}\"/"
+"&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:170
+#, no-c-format
+msgid ""
+"Note that you can also call this built-in action from a JSF control, and, "
+"similarly, you can use <literal>#{conversation.end}</literal> to end "
+"conversations."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:173
+#, no-c-format
+msgid ""
+"If you want more control, to join existing conversations or begin a nested "
+"conversion, to begin a pageflow or an atomic conversation, you should use "
+"the <literal>&lt;begin-conversation&gt;</literal> element."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:176
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\"&gt;\n"
+"       &lt;begin-conversation nested=\"true\" pageflow=\"AddItem\"/&gt;\n"
+"    &lt;page&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:177
+#, no-c-format
+msgid "There is also an <literal>&lt;end-conversation&gt;</literal> element."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:180
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/home.jsp\"&gt;\n"
+"       &lt;end-conversation/&gt;\n"
+"    &lt;page&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:181
+#, no-c-format
+msgid "To solve the first problem, we now have five options:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:186
+#, no-c-format
+msgid ""
+"Annotate the <literal>@Create</literal> method with <literal>@Begin</literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:191
+#, no-c-format
+msgid ""
+"Annotate the <literal>@Factory</literal> method with <literal>@Begin</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:196
+#, no-c-format
+msgid "Annotate the Seam page action method with <literal>@Begin</literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:201
+#, no-c-format
+msgid ""
+"Use <literal>&lt;begin-conversation&gt;</literal> in <literal>pages.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:206
+#, no-c-format
+msgid ""
+"Use <literal>#{conversation.begin}</literal> as the Seam page action method"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:214
+#, no-c-format
+msgid ""
+"Using <literal>&lt;s:link&gt;</literal> and <literal>&lt;s:button&gt;</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:215
+#, no-c-format
+msgid ""
+"JSF command links always perform a form submission via JavaScript, which "
+"breaks the web browser's \"open in new window\" or \"open in new tab\" "
+"feature. In plain JSF, you need to use an <literal>&lt;h:outputLink&gt;</"
+"literal> if you need this functionality. But there are two major limitations "
+"to <literal>&lt;h:outputLink&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:220
+#, no-c-format
+msgid ""
+"JSF provides no way to attach an action listener to an <literal>&lt;h:"
+"outputLink&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:225
+#, no-c-format
+msgid ""
+"JSF does not propagate the selected row of a <literal>DataModel</literal> "
+"since there is no actual form submission."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:230
+#, no-c-format
+msgid ""
+"Seam provides the notion of a <emphasis>page action</emphasis> to help solve "
+"the first problem, but this does nothing to help us with the second problem. "
+"We <emphasis>could</emphasis> work around this by using the RESTful approach "
+"of passing a request parameter and requerying for the selected object on the "
+"server side. In some cases&mdash;such as the Seam blog example "
+"application&mdash;this is indeed the best approach. The RESTful style "
+"supports bookmarking, since it does not require server-side state. In other "
+"cases, where we don't care about bookmarks, the use of <literal>@DataModel</"
+"literal> and <literal>@DataModelSelection</literal> is just so convenient "
+"and transparent!"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:233
+#, no-c-format
+msgid ""
+"To fill in this missing functionality, and to make conversation propagation "
+"even simpler to manage, Seam provides the <literal>&lt;s:link&gt;</literal> "
+"JSF tag."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:236
+#, no-c-format
+msgid "The link may specify just the JSF view id:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:239
+#, no-c-format
+msgid ""
+"&lt;s:link view=&#8220;/login.xhtml&#8221; value=&#8220;Login&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:240
+#, no-c-format
+msgid ""
+"Or, it may specify an action method (in which case the action outcome "
+"determines the page that results):"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:243
+#, no-c-format
+msgid ""
+"&lt;s:link action=&#8220;#{login.logout}&#8221; value=&#8220;Logout&#8221;/"
+"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:244
+#, no-c-format
+msgid ""
+"If you specify <emphasis>both</emphasis> a JSF view id and an action method, "
+"the 'view' will be used <emphasis>unless</emphasis> the action method "
+"returns a non-null outcome:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:247
+#, no-c-format
+msgid ""
+"&lt;s:link view=\"/loggedOut.xhtml\"  action=&#8220;#{login.logout}&#8221; "
+"value=&#8220;Logout&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:248
+#, no-c-format
+msgid ""
+"The link automatically propagates the selected row of a <literal>DataModel</"
+"literal> using inside <literal>&lt;h:dataTable&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:251
+#, no-c-format
+msgid ""
+"&lt;s:link view=&#8220;/hotel.xhtml&#8221; action=&#8220;#{hotelSearch."
+"selectHotel}&#8221; value=&#8220;#{hotel.name}&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:252
+#, no-c-format
+msgid "You can leave the scope of an existing conversation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:255
+#, no-c-format
+msgid ""
+"&lt;s:link view=&#8220;/main.xhtml&#8221; propagation=&#8220;none&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:256
+#, no-c-format
+msgid "You can begin, end, or nest conversations:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:259
+#, no-c-format
+msgid ""
+"&lt;s:link action=&#8220;#{issueEditor.viewComment}&#8221; "
+"propagation=&#8220;nest&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:260
+#, no-c-format
+msgid ""
+"If the link begins a conversation, you can even specify a pageflow to be "
+"used:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:263
+#, no-c-format
+msgid ""
+"&lt;s:link action=&#8220;#{documentEditor.getDocument}&#8221; "
+"propagation=&#8220;begin&#8221; \n"
+"        pageflow=&#8220;EditDocument&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:264
+#, no-c-format
+msgid ""
+"The <literal>taskInstance</literal> attribute if for use in jBPM task lists:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:267
+#, no-c-format
+msgid ""
+"&lt;s:link action=&#8220;#{documentApproval.approveOrReject}&#8221; "
+"taskInstance=&#8220;#{task}&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:268
+#, no-c-format
+msgid "(See the DVD Store demo application for examples of this.)"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:271
+#, no-c-format
+msgid ""
+"Finally, if you need the \"link\" to be rendered as a button, use "
+"<literal>&lt;s:button&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:274
+#, no-c-format
+msgid ""
+"&lt;s:button action=&#8220;#{login.logout}&#8221; value=&#8220;Logout&#8221;/"
+"&gt;"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:278
+#, no-c-format
+msgid "Success messages"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:279
+#, no-c-format
+msgid ""
+"It is quite common to display a message to the user indicating success or "
+"failure of an action. It is convenient to use a JSF <literal>FacesMessage</"
+"literal> for this. Unfortunately, a successful action often requires a "
+"browser redirect, and JSF does not propagate faces messages across "
+"redirects. This makes it quite difficult to display success messages in "
+"plain JSF."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:282
+#, no-c-format
+msgid ""
+"The built in conversation-scoped Seam component named "
+"<literal>facesMessages</literal> solves this problem. (You must have the "
+"Seam redirect filter installed.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:285
+#, no-c-format
+msgid ""
+"@Name(\"editDocumentAction\")\n"
+"@Stateless\n"
+"public class EditDocumentBean implements EditDocument {\n"
+"    @In EntityManager em;\n"
+"    @In Document document;\n"
+"    @In FacesMessages facesMessages;\n"
+"    \n"
+"    public String update() {\n"
+"        em.merge(document);\n"
+"        facesMessages.add(\"Document updated\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:286
+#, no-c-format
+msgid ""
+"Any message added to <literal>facesMessages</literal> is used in the very "
+"next render response phase for the current conversation. This even works "
+"when there is no long-running conversation since Seam preserves even "
+"temporary conversation contexts across redirects."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:289
+#, no-c-format
+msgid "You can even include JSF EL expressions in a faces message summary:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:292
+#, no-c-format
+msgid "facesMessages.add(\"Document #{document.title} was updated\");"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:293
+#, no-c-format
+msgid "You may display the messages in the usual way, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:296
+#, no-c-format
+msgid "&lt;h:messages globalOnly=\"true\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:300
+#, no-c-format
+msgid "Using an \"explicit\" conversation id"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:301
+#, no-c-format
+msgid ""
+"Ordinarily, Seam generates a meaningless unique id for each conversation in "
+"each session. You can customize the id value when you begin the conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:304
+#, no-c-format
+msgid ""
+"This feature can be used to customize the conversation id generation "
+"algorithm like so:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:307
+#, no-c-format
+msgid ""
+"@Begin(id=\"#{myConversationIdGenerator.nextId}\") \n"
+"public void editHotel() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:308
+#, no-c-format
+msgid "Or it can be used to assign a meaningful conversation id:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:311
+#, no-c-format
+msgid ""
+"@Begin(id=\"hotel#{hotel.id}\") \n"
+"public String editHotel() { ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:312
+#, no-c-format
+msgid ""
+"@Begin(id=\"hotel#{hotelsDataModel.rowData.id}\") \n"
+"public String selectHotel() { ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:313
+#, no-c-format
+msgid ""
+"@Begin(id=\"entry#{params['blogId']}\")\n"
+"public String viewBlogEntry() { ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:314
+#, no-c-format
+msgid ""
+"@BeginTask(id=\"task#{taskInstance.id}\") \n"
+"public String approveDocument() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:315
+#, no-c-format
+msgid ""
+"Clearly, these example result in the same conversation id every time a "
+"particular hotel, blog or task is selected. So what happens if a "
+"conversation with the same conversation id already exists when the new "
+"conversation begins? Well, Seam detects the existing conversation and "
+"redirects to that conversation without running the <literal>@Begin</literal> "
+"method again. This feature helps control the number of workspaces that are "
+"created when using workspace management."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:321
+#, no-c-format
+msgid "Workspace management"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:322
+#, no-c-format
+msgid ""
+"Workspace management is the ability to \"switch\" conversations in a single "
+"window. Seam makes workspace management completely transparent at the level "
+"of the Java code. To enable workspace management, all you need to do is:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:327
+#, no-c-format
+msgid ""
+"Provide <emphasis>description</emphasis> text for each view id (when using "
+"JSF or Seam navigation rules) or page node (when using jPDL pageflows). This "
+"description text is displayed to the user by the workspace switchers."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:332
+#, no-c-format
+msgid ""
+"Include one or more of the standard workspace switcher JSP or facelets "
+"fragments in your pages. The standard fragments support workspace management "
+"via a drop down menu, a list of conversations, or breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:335
+#, no-c-format
+msgid ""
+"Please refer to the Seam Issue Tracker demo to see all this functionality in "
+"action!"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:339
+#, no-c-format
+msgid "Workspace management and JSF navigation"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:340
+#, no-c-format
+msgid ""
+"When you use JSF or Seam navigation rules, Seam switches to a conversation "
+"by restoring the current <literal>view-id</literal> for that conversation. "
+"The descriptive text for the workspace is defined in a file called "
+"<literal>pages.xml</literal> that Seam expects to find in the <literal>WEB-"
+"INF</literal> directory, right next to <literal>faces-config.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:343
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/main.xhtml\"&gt;Search hotels: #{hotelBooking."
+"searchString}&lt;/page&gt;\n"
+"    &lt;page view-id=\"/hotel.xhtml\"&gt;View hotel: #{hotel.name}&lt;/"
+"page&gt;\n"
+"    &lt;page view-id=\"/book.xhtml\"&gt;Book hotel: #{hotel.name}&lt;/"
+"page&gt;\n"
+"    &lt;page view-id=\"/confirm.xhtml\"&gt;Confirm: #{booking.description}"
+"&lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:344
+#, no-c-format
+msgid ""
+"Note that if this file is missing, the Seam application will continue to "
+"work perfectly! The only missing functionality will be the ability to switch "
+"workspaces."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:350
+#, no-c-format
+msgid "Workspace management and jPDL pageflow"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:351
+#, no-c-format
+msgid ""
+"When you use a jPDL pageflow definition, Seam switches to a conversation by "
+"restoring the current jBPM process state. This is a more flexible model "
+"since it allows the same <literal>view-id</literal> to have different "
+"descriptions depending upon the current <literal>&lt;page&gt;</literal> "
+"node. The description text is defined by the <literal>&lt;page&gt;</literal> "
+"node:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:354
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"shopping\"&gt;\n"
+"\n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"browse\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;page name=\"browse\" view-id=\"/browse.xhtml\"&gt;\n"
+"      &lt;description&gt;DVD Search: #{search.searchPattern}&lt;/"
+"description&gt;\n"
+"      &lt;transition to=\"browse\"/&gt;\n"
+"      &lt;transition name=\"checkout\" to=\"checkout\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"checkout\" view-id=\"/checkout.xhtml\"&gt;\n"
+"      &lt;description&gt;Purchase: &#36;#{cart.total}&lt;/description&gt;\n"
+"      &lt;transition to=\"checkout\"/&gt;\n"
+"      &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"complete\" view-id=\"/complete.xhtml\"&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:358
+#, no-c-format
+msgid "The conversation switcher"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:359
+#, no-c-format
+msgid ""
+"Include the following fragment in your JSP or facelets page to get a drop-"
+"down menu that lets you switch to any current conversation, or to any other "
+"page of the application:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:362
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{switcher.conversationIdOrOutcome}\"&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Find Issues\" itemValue=\"findIssue\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Create Issue\" itemValue=\"editIssue\"/"
+"&gt;\n"
+"    &lt;f:selectItems value=\"#{switcher.selectItems}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{switcher.select}\" value=\"Switch\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:363
+#, no-c-format
+msgid ""
+"In this example, we have a menu that includes an item for each conversation, "
+"together with two additional items that let the user begin a new "
+"conversation."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:377
+#, no-c-format
+msgid "The conversation list"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:378
+#, no-c-format
+msgid ""
+"The conversation list is very similar to the conversation switcher, except "
+"that it is displayed as a table:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:381
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{conversationList}\" var=\"entry\"\n"
+"        rendered=\"#{not empty conversationList}\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Workspace&lt;/f:facet&gt;\n"
+"        &lt;h:commandLink action=\"#{entry.select}\" value=\"#{entry."
+"description}\"/&gt;\n"
+"        &lt;h:outputText value=\"[current]\" rendered=\"#{entry.current}\"/"
+"&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Activity&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{entry.startDatetime}\"&gt;\n"
+"            &lt;f:convertDateTime type=\"time\" pattern=\"hh:mm a\"/&gt;\n"
+"        &lt;/h:outputText&gt;\n"
+"        &lt;h:outputText value=\" - \"/&gt;\n"
+"        &lt;h:outputText value=\"#{entry.lastDatetime}\"&gt;\n"
+"            &lt;f:convertDateTime type=\"time\" pattern=\"hh:mm a\"/&gt;\n"
+"        &lt;/h:outputText&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"        &lt;h:commandButton action=\"#{entry.select}\" value=\"#{msg.Switch}"
+"\"/&gt;\n"
+"        &lt;h:commandButton action=\"#{entry.destroy}\" value=\"#{msg."
+"Destroy}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:382
+#, no-c-format
+msgid ""
+"We imagine that you will want to customize this for your own application."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:393
+#, no-c-format
+msgid ""
+"The conversation list is nice, but it takes up a lot of space on the page, "
+"so you probably don't want to put it on <emphasis>every</emphasis> page."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:396
+#, no-c-format
+msgid "Notice that the conversation list lets the user destroy workspaces."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:402
+#, no-c-format
+msgid "Breadcrumbs"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:403
+#, no-c-format
+msgid ""
+"Breadcrumbs are useful in applications which use a nested conversation "
+"model. The breadcrumbs are a list of links to conversations in the current "
+"conversation stack:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:406
+#, no-c-format
+msgid ""
+"&lt;t:dataList value=\"#{conversationStack}\" var=\"entry\"&gt;\n"
+"    &lt;h:outputText value=\" | \"/&gt; \n"
+"    &lt;h:commandLink value=\"#{entry.description}\" action=\"#{entry.select}"
+"\"/&gt;\n"
+"&lt;/t:dataList&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:407
+#, no-c-format
+msgid ""
+"Notice that here we are using the MyFaces <literal>&lt;t:dataList&gt;</"
+"literal> component, since JSF amazingly does not provide any standard "
+"component for looping."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:424
+#, no-c-format
+msgid "Conversational components and JSF component bindings"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:425
+#, no-c-format
+msgid ""
+"Conversational components have one minor limitation: they cannot be used to "
+"hold bindings to JSF components. (We generally prefer not to use this "
+"feature of JSF unless absolutely necessary, since it creates a hard "
+"dependency from application logic to the view.) On a postback request, "
+"component bindings are updated during the Restore View phase, before the "
+"Seam conversation context has been restored."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:428
+#, no-c-format
+msgid ""
+"To work around this use an event scoped component to store the component "
+"bindings and inject it into the conversation scoped component that requires "
+"it."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:431
+#, no-c-format
+msgid ""
+"@Name(\"grid\")\n"
+"@Scope(ScopeType.EVENT)\n"
+"public class Grid\n"
+"{\n"
+"    private HtmlPanelGrid htmlPanelGrid;\n"
+"\n"
+"    // getters and setters\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:432
+#, no-c-format
+msgid ""
+"@Name(\"gridEditor\")\n"
+"@Scope(ScopeType.CONVERSATION)\n"
+"public class GridEditor\n"
+"{\n"
+"    @In(required=false)\n"
+"    private Grid grid;\n"
+"    \n"
+"    ...\n"
+"}"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Drools.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Drools.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Drools.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,281 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Drools.xml:10
+#, no-c-format
+msgid "Seam and JBoss Rules"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:11
+#, no-c-format
+msgid ""
+"Seam makes it easy to call JBoss Rules (Drools) rulebases from Seam "
+"components or jBPM process definitions."
+msgstr ""
+
+#. Tag: title
+#: Drools.xml:15
+#, no-c-format
+msgid "Installing rules"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:16
+#, no-c-format
+msgid ""
+"The first step is to make an instance of <literal>org.drools.RuleBase</"
+"literal> available in a Seam context variable. In most rules-driven "
+"applications, rules need to be dynamically deployable, so you will need to "
+"implement some solution that allows you to deploy rules and make them "
+"available to Seam (a future release of Drools will provide a Rule Server "
+"that solves this problem). For testing purposes, Seam provides a built-in "
+"component that compiles a static set of rules from the classpath. You can "
+"install this component via <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:19
+#, no-c-format
+msgid ""
+"&lt;drools:rule-base name=\"policyPricingRules\"&gt;\n"
+"    &lt;drools:rule-files&gt;\n"
+"        &lt;value&gt;policyPricingRules&lt;/value&gt;\n"
+"    &lt;/drools:rule-files&gt;\n"
+"&lt;/drools:rule-base&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:20
+#, no-c-format
+msgid ""
+"This component compiles rules from a set of <literal>.drl</literal> files "
+"and caches an instance of <literal>org.drools.RuleBase</literal> in the Seam "
+"<literal>APPLICATION</literal> context. Note that it is quite likely that "
+"you will need to install multiple rule bases in a rule-driven application."
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:23
+#, no-c-format
+msgid ""
+"If you want to use a Drools DSL, you alse need to specify the DSL definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:26
+#, no-c-format
+msgid ""
+"&lt;drools:rule-base name=\"policyPricingRules\" dsl-file=\"policyPricing.dsl"
+"\"&gt;\n"
+"    &lt;drools:rule-files&gt;\n"
+"        &lt;value&gt;policyPricingRules&lt;/value&gt;\n"
+"    &lt;/drools:rule-files&gt;\n"
+"&lt;/drools:rule-base&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:27
+#, no-c-format
+msgid ""
+"Next, we need to make an instance of <literal>org.drools.WorkingMemory</"
+"literal> available to each conversation. (Each <literal>WorkingMemory</"
+"literal> accumulates facts relating to the current conversation.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:30
+#, no-c-format
+msgid ""
+"&lt;drools:managed-working-memory name=\"policyPricingWorkingMemory\" auto-"
+"create=\"true\" rule-base=\"#{policyPricingRules}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:31
+#, no-c-format
+msgid ""
+"Notice that we gave the <literal>policyPricingWorkingMemory</literal> a "
+"reference back to our rule base via the <literal>ruleBase</literal> "
+"configuration property."
+msgstr ""
+
+#. Tag: title
+#: Drools.xml:37
+#, no-c-format
+msgid "Using rules from a Seam component"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:38
+#, no-c-format
+msgid ""
+"We can now inject our <literal>WorkingMemory</literal> into any Seam "
+"component, assert facts, and fire rules:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:41
+#, no-c-format
+msgid ""
+"@In WorkingMemory policyPricingWorkingMemory;\n"
+"\n"
+"@In Policy policy;\n"
+"@In Customer customer;\n"
+"\n"
+"public void pricePolicy() throws FactException\n"
+"{\n"
+"    policyPricingWorkingMemory.assertObject(policy);\n"
+"    policyPricingWorkingMemory.assertObject(customer);\n"
+"    policyPricingWorkingMemory.fireAllRules();\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Drools.xml:45
+#, no-c-format
+msgid "Using rules from a jBPM process definition"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:46
+#, no-c-format
+msgid ""
+"You can even allow a rule base to act as a jBPM action handler, decision "
+"handler, or assignment handler&mdash;in either a pageflow or business "
+"process definition."
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:49
+#, no-c-format
+msgid ""
+"&lt;decision name=\"approval\"&gt;\n"
+"         \n"
+"    &lt;handler class=\"org.jboss.seam.drools.DroolsDecisionHandler\"&gt;\n"
+"        &lt;workingMemoryName&gt;orderApprovalRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"        &lt;assertObjects&gt;\n"
+"            &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"            &lt;element&gt;#{order}&lt;/element&gt;\n"
+"            &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"        &lt;/assertObjects&gt;\n"
+"    &lt;/handler&gt;\n"
+"    \n"
+"    &lt;transition name=\"approved\" to=\"ship\"&gt;\n"
+"        &lt;action class=\"org.jboss.seam.drools.DroolsActionHandler\"&gt;\n"
+"            &lt;workingMemoryName&gt;shippingRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"            &lt;assertObjects&gt;\n"
+"                &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"            &lt;/assertObjects&gt;\n"
+"        &lt;/action&gt;\n"
+"    &lt;/transition&gt;\n"
+"    \n"
+"    &lt;transition name=\"rejected\" to=\"cancelled\"/&gt;\n"
+"    \n"
+"&lt;/decision&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:50
+#, no-c-format
+msgid ""
+"The <literal>&lt;assertObjects&gt;</literal> element specifies EL "
+"expressions that return an object or collection of objects to be asserted as "
+"facts into the <literal>WorkingMemory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:53
+#, no-c-format
+msgid "There is also support for using Drools for jBPM task assignments:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:56
+#, no-c-format
+msgid ""
+"&lt;task-node name=\"review\"&gt;\n"
+"    &lt;task name=\"review\" description=\"Review Order\"&gt;\n"
+"        &lt;assignment handler=\"org.jboss.seam.drools."
+"DroolsAssignmentHandler\"&gt;\n"
+"            &lt;workingMemoryName&gt;orderApprovalRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"            &lt;assertObjects&gt;\n"
+"                &lt;element&gt;#{actor}&lt;/element&gt;\n"
+"                &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"            &lt;/assertObjects&gt;\n"
+"        &lt;/assignment&gt;\n"
+"    &lt;/task&gt;\n"
+"    &lt;transition name=\"rejected\" to=\"cancelled\"/&gt;\n"
+"    &lt;transition name=\"approved\" to=\"approved\"/&gt;\n"
+"&lt;/task-node&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:57
+#, no-c-format
+msgid ""
+"Certain objects are available to the rules as Drools globals, namely the "
+"jBPM <literal>Assignable</literal>, as <literal>assignable</literal> and a "
+"Seam <literal>Decision</literal> object, as <literal>decision</literal>. "
+"Rules which handle decisions should call <literal>decision.setOutcome"
+"(\"result\")</literal> to determine the result of the decision. Rules which "
+"perform assignments should set the actor id using the <literal>Assignable</"
+"literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:60
+#, no-c-format
+msgid ""
+"package org.jboss.seam.examples.shop\n"
+"\n"
+"import org.jboss.seam.drools.Decision\n"
+"\n"
+"global Decision decision\n"
+"\n"
+"rule \"Approve Order For Loyal Customer\"\n"
+"  when\n"
+"    Customer( loyaltyStatus == \"GOLD\" )\n"
+"    Order( totalAmount &lt;= 10000 )\n"
+"  then\n"
+"    decision.setOutcome(\"approved\");\n"
+"end"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:61
+#, no-c-format
+msgid ""
+"package org.jboss.seam.examples.shop\n"
+"\n"
+"import org.jbpm.taskmgmt.exe.Assignable\n"
+"\n"
+"global Assignable assignable\n"
+"\n"
+"rule \"Assign Review For Small Order\"\n"
+"  when\n"
+"    Order( totalAmount &lt;= 100 )\n"
+"  then\n"
+"    assignable.setPooledActors( new String[] {\"reviewers\"} );\n"
+"end"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Elenhancements.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Elenhancements.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Elenhancements.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,221 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Elenhancements.xml:10
+#, no-c-format
+msgid "Expression language enhancements"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:11
+#, no-c-format
+msgid ""
+"The standard Unified Expression Language (EL) assumes that any parameters to "
+"a method expression will be provided by Java code. This means that a method "
+"with parameters cannot be used as a JSF method binding. Seam provides an "
+"enhancement to the EL that allows parameters to be included in a method "
+"expression itself. This applies to <emphasis>any</emphasis> Seam method "
+"expression, including any JSF method binding, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:14
+#, no-c-format
+msgid ""
+"&lt;s:commandButton action=\"#{hotelBooking.bookHotel(hotel)}\" value=\"Book "
+"Hotel\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:16
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:17
+#, no-c-format
+msgid ""
+"To use this feature in Facelets, you will need to declare a special view "
+"handler, <literal>SeamFaceletViewHandler</literal> in <literal>faces-config."
+"xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:20
+#, no-c-format
+msgid ""
+"&lt;faces-config&gt;\n"
+"    &lt;application&gt;\n"
+"        &lt;view-handler&gt;org.jboss.seam.ui.facelet."
+"SeamFaceletViewHandler&lt;/view-handler&gt;\n"
+"    &lt;/application&gt;\n"
+"&lt;/faces-config&gt;"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:24
+#, no-c-format
+msgid "Usage"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:25
+#, no-c-format
+msgid "Parameters are surrounded by parentheses, and separated by commas:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:28
+#, no-c-format
+msgid ""
+"&lt;h:commandButton action=\"#{hotelBooking.bookHotel(hotel, user)}\" value="
+"\"Book Hotel\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:29
+#, no-c-format
+msgid ""
+"The parameters <literal>hotel</literal> and <literal>user</literal> will be "
+"evaluated as value expressions and passed to the <literal>bookHotel()</"
+"literal> method of the component. This gives you an alternative to the use "
+"of <literal>@In</literal>."
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:32
+#, no-c-format
+msgid "Any value expression may be used as a parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:35
+#, no-c-format
+msgid ""
+"&lt;h:commandButton action=\"#{hotelBooking.bookHotel(hotel.id, user."
+"username)}\" value=\"Book Hotel\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:36
+#, no-c-format
+msgid "You may even pass literal strings using single or double quotes:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:39
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=&#8221;#{printer.println( &#8216;Hello world!"
+"&#8217; )}&#8221; value=&#8221;Hello&#8221;/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:40
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=&#8217;#{printer.println( &#8220;Hello "
+"again&#8221; )}&#8217; value=&#8217;Hello&#8217;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:41
+#, no-c-format
+msgid ""
+"You might even want to use this notation for all your action methods, even "
+"when you don&#8217;t have parameters to pass. This improves readability by "
+"making it clear that the expression is a method expression and not a value "
+"expression:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:44
+#, no-c-format
+msgid "&lt;s:link value=\"Cancel\" action=\"#{hotelBooking.cancel()}\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:48
+#, no-c-format
+msgid "Limitations"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:49
+#, no-c-format
+msgid "Please be aware of the following limitations:"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:53
+#, no-c-format
+msgid "Incompatibility with JSP 2.1"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:54
+#, no-c-format
+msgid ""
+"This extension is not currently compatible with JSP 2.1. So if you want to "
+"use this extension with JSF 1.2, you will need to use Facelets. The "
+"extension works correctly with JSP 2.0."
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:60
+#, no-c-format
+msgid "Calling a <literal>MethodExpression</literal> from Java code"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:61
+#, no-c-format
+msgid ""
+"Normally, when a <literal>MethodExpression</literal> or "
+"<literal>MethodBinding</literal> is created, the parameter types are passed "
+"in by JSF. In the case of a method binding, JSF assumes that there are no "
+"parameters to pass. With this extension, we can&#8217;t know the parameter "
+"types until after the expression has been evaluated. This has two minor "
+"consequences:"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:66
+#, no-c-format
+msgid ""
+"When you invoke a <literal>MethodExpression</literal> in Java code, "
+"parameters you pass may be ignored. Parameters defined in the expression "
+"will take precedence."
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:71
+#, no-c-format
+msgid ""
+"Ordinarily, it is safe to call <literal>methodExpression.getMethodInfo()."
+"getParamTypes()</literal> at any time. For an expression with parameters, "
+"you must first invoke the <literal>MethodExpression</literal> before calling "
+"<literal>getParamTypes()</literal>."
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:76
+#, no-c-format
+msgid ""
+"Both of these cases are exceedingly rare and only apply when you want to "
+"invoke the <literal>MethodExpression</literal> by hand in Java code."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Events.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Events.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Events.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1430 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Events.xml:10
+#, no-c-format
+msgid "Events, interceptors and exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:11
+#, no-c-format
+msgid ""
+"Complementing the contextual component model, there are two further basic "
+"concepts that facilitate the extreme loose-coupling that is the distinctive "
+"feature of Seam applications. The first is a strong event model where events "
+"may be mapped to event listeners via JSF-like method binding expressions. "
+"The second is the pervasive use of annotations and interceptors to apply "
+"cross-cutting concerns to components which implement business logic."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:14
+#, no-c-format
+msgid "Seam events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:15
+#, no-c-format
+msgid ""
+"The Seam component model was developed for use with <emphasis>event-driven "
+"applications</emphasis>, specifically to enable the development of fine-"
+"grained, loosely-coupled components in a fine-grained eventing model. Events "
+"in Seam come in several types, most of which we have already seen:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:20
+#, no-c-format
+msgid "JSF events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:25
+#, no-c-format
+msgid "jBPM transition events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:30
+#, no-c-format
+msgid "Seam page actions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:35
+#, no-c-format
+msgid "Seam component-driven events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:40
+#, no-c-format
+msgid "Seam contextual events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:45
+#, no-c-format
+msgid ""
+"All of these various kinds of events are mapped to Seam components via JSF "
+"EL method binding expressions. For a JSF event, this is defined in the JSF "
+"template:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:48
+#, no-c-format
+msgid ""
+"&lt;h:commandButton value=\"Click me!\" action=\"#{helloWorld.sayHello}\"/"
+"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:49
+#, no-c-format
+msgid ""
+"For a jBPM transition event, it is specified in the jBPM process definition "
+"or pageflow definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:52
+#, no-c-format
+msgid ""
+"&lt;start-page name=\"hello\" view-id=\"/hello.jsp\"&gt;\n"
+"    &lt;transition to=\"hello\"&gt;\n"
+"        &lt;action expression=\"#{helloWorld.sayHello}\"/&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/start-page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:53
+#, no-c-format
+msgid ""
+"You can find out more information about JSF events and jBPM events "
+"elsewhere. Lets concentrate for now upon the two additional kinds of events "
+"defined by Seam."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:56
+#, no-c-format
+msgid "Page actions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:57
+#, no-c-format
+msgid ""
+"A Seam page action is an event that occurs just before we render a page. We "
+"declare page actions in <literal>WEB-INF/pages.xml</literal>. We can define "
+"a page action for either a particular JSF view id:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:60
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\" action=\"#{helloWorld.sayHello}\"/&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:61
+#, no-c-format
+msgid ""
+"Or we can use a wildcard to specify an action that applies to all view ids "
+"that match the pattern:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:64
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello/*\" action=\"#{helloWorld.sayHello}\"/&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:65
+#, no-c-format
+msgid ""
+"If multiple wildcarded page actions match the current view-id, Seam will "
+"call all the actions, in order of least-specific to most-specific."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:68
+#, no-c-format
+msgid ""
+"The page action method can return a JSF outcome. If the outcome is non-null, "
+"Seam will delegate to the defined JSFadn Seam navigation rules and a "
+"different view may end up being rendered."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:71
+#, no-c-format
+msgid ""
+"Furthermore, the view id mentioned in the <literal>&lt;page&gt;</literal> "
+"element need not correspond to a real JSP or Facelets page! So, we can "
+"reproduce the functionality of a traditional action-oriented framework like "
+"Struts or WebWork using page actions. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:74
+#, no-c-format
+msgid "TODO: translate struts action into page action"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:75
+#, no-c-format
+msgid ""
+"This is quite useful if you want to do complex things in response to non-"
+"faces requests (for example, HTTP GET requests)."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:78
+#, no-c-format
+msgid "Page parameters"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:79
+#, no-c-format
+msgid ""
+"A JSF faces request (a form submission) encapsulates both an \"action\" (a "
+"method binding) and \"parameters\" (input value bindings). A page action "
+"might also needs parameters!"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:82
+#, no-c-format
+msgid ""
+"Since GET requests are bookmarkable, page parameters are passed as human-"
+"readable request parameters. (Unlike JSF form inputs, which are anything "
+"but!)"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:85
+#, no-c-format
+msgid ""
+"Seam lets us provide a value binding that maps a named request parameter to "
+"an attribute of a model object."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:88
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\" action=\"#{helloWorld.sayHello}\"&gt;\n"
+"        &lt;param name=\"firstName\" value=\"#{person.firstName}\"/&gt;\n"
+"        &lt;param name=\"lastName\" value=\"#{person.lastName}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:89
+#, no-c-format
+msgid ""
+"The <literal>&lt;param&gt;</literal> declaration is bidirectional, just like "
+"a value binding for a JSF input:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:94
+#, no-c-format
+msgid ""
+"When a non-faces (GET) request for the view id occurs, Seam sets the value "
+"of the named request parameter onto the model object, after performing "
+"appropriate type conversions."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:99
+#, no-c-format
+msgid ""
+"Any <literal>&lt;s:link&gt;</literal> or <literal>&lt;s:button&gt;</literal> "
+"transparently includes the request parameter. The value of the parameter is "
+"determined by evaluating the value binding during the render phase (when the "
+"<literal>&lt;s:link&gt;</literal> is rendered)."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:104
+#, no-c-format
+msgid ""
+"Any navigation rule with a <literal>&lt;redirect/&gt;</literal> to the view "
+"id transparently includes the request parameter. The value of the parameter "
+"is determined by evaluating the value binding at the end of the invoke "
+"application phase."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:109
+#, no-c-format
+msgid ""
+"The value is transparently propagated with any JSF form submission for the "
+"page with the given view id. (This means that view parameters behave like "
+"<literal>PAGE</literal>-scoped context variables for faces requests."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:114
+#, no-c-format
+msgid ""
+"The essential idea behind all this is that <emphasis>however</emphasis> we "
+"get from any other page to <literal>/hello.jsp</literal> (or from <literal>/"
+"hello.jsp</literal> back to <literal>/hello.jsp</literal>), the value of the "
+"model attribute referred to in the value binding is \"remembered\", without "
+"the need for a conversation (or other server-side state)."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:117
+#, no-c-format
+msgid ""
+"This all sounds pretty complex, and you're probably wondering if such an "
+"exotic construct is really worth the effort. Actually, the idea is very "
+"natural once you \"get it\". It is definitely worth taking the time to "
+"understand this stuff. Page parameters are the most elegant way to propagate "
+"state across a non-faces request. They are especially cool for problems like "
+"search screens with bookmarkable results pages, where we would like to be "
+"able to write our application code to handle both POST and GET requests with "
+"the same code. Page parameters eliminate repetitive listing of request "
+"parameters in the view definition and make redirects much easier to code."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:120
+#, no-c-format
+msgid ""
+"Note that you don't need an actual page action method binding to use a page "
+"parameter. The following is perfectly valid:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:123
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\"&gt;\n"
+"        &lt;param name=\"firstName\" value=\"#{person.firstName}\"/&gt;\n"
+"        &lt;param name=\"lastName\" value=\"#{person.lastName}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:124
+#, no-c-format
+msgid "You can even specify a JSF converter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:127
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/calculator.jsp\" action=\"#{calculator.calculate}"
+"\"&gt;\n"
+"        &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"        &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"        &lt;param name=\"op\" converterId=\"com.my.calculator."
+"OperatorConverter\" value=\"#{calculator.op}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:128
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/calculator.jsp\" action=\"#{calculator.calculate}"
+"\"&gt;\n"
+"        &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"        &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"        &lt;param name=\"op\" converter=\"#{operatorConverter}\" value=\"#"
+"{calculator.op}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:129
+#, no-c-format
+msgid "Navigation"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:130
+#, no-c-format
+msgid ""
+"You can use standard JSF navigation rules defined in <literal>faces-config."
+"xml</literal> in a Seam application. However, JSF navigation rules have a "
+"number of annoying limitations:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:135
+#, no-c-format
+msgid ""
+"It is not possible to specify request parameters to be used when redirecting."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:140
+#, no-c-format
+msgid "It is not possible to begin or end conversations from a rule."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:145
+#, no-c-format
+msgid ""
+"Rules work by evaluating the return value of the action method; it is not "
+"possible to evaluate an arbitrary EL expression."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:150
+#, no-c-format
+msgid ""
+"A further problem is that \"orchestration\" logic gets scattered between "
+"<literal>pages.xml</literal> and <literal>faces-config.xml</literal>. It's "
+"better to unify this logic into <literal>pages.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:153
+#, no-c-format
+msgid "This JSF navigation rule:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:156
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"    &lt;from-view-id&gt;/editDocument.xhtml&lt;/from-view-id&gt;\n"
+"    \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-action&gt;#{documentEditor.update}&lt;/from-action&gt;\n"
+"        &lt;from-outcome&gt;success&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/viewDocument.xhtml&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"    \n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:157
+#, no-c-format
+msgid "Can be rewritten as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:160
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if-outcome=\"success\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:161
+#, no-c-format
+msgid ""
+"But it would be even nicer if we didn't have to pollute our "
+"<literal>DocumentEditor</literal> component with string-valued return values "
+"(the JSF outcomes). So Seam lets us write:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:164
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\" \n"
+"                   evaluate=\"#{documentEditor.errors.size}\"&gt;\n"
+"        &lt;rule if-outcome=\"0\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:165
+#, no-c-format
+msgid "Or even:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:168
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:169
+#, no-c-format
+msgid ""
+"The first form evaluates a value binding to determine the outcome value to "
+"be used by the subsequent rules. The second approach ignores the outcome and "
+"evaluates a value binding for each possible rule."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:172
+#, no-c-format
+msgid ""
+"Of course, when an update succeeds, we probably want to end the current "
+"conversation. We can do that like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:175
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:176
+#, no-c-format
+msgid ""
+"But ending the conversation loses any state associated with the "
+"conversation, including the document we are currently interested in! One "
+"solution would be to use an immediate render instead of a redirect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:179
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:180
+#, no-c-format
+msgid ""
+"But the correct solution is to pass the document id as a request parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:183
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"&gt;\n"
+"                &lt;param name=\"documentId\" value=\"#{documentEditor."
+"documentId}\"/&gt;\n"
+"            &lt;/redirect&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:184
+#, no-c-format
+msgid ""
+"Null outcomes are a special case in JSF. The null outcome is interpreted to "
+"mean \"redisplay the page\". The following navigation rule matches any non-"
+"null outcome, but <emphasis>not</emphasis> the null outcome:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:187
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule&gt;\n"
+"            &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:188
+#, no-c-format
+msgid ""
+"If you want to perform navigation when a null outcome occurs, use the "
+"following form instead:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:191
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:192
+#, no-c-format
+msgid ""
+"Fine-grained files for definition of navigation, page actions and parameters"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:193
+#, no-c-format
+msgid ""
+"If you have a lot of different page actions and page parameters, or even "
+"just a lot of navigation rules, you will almost certainly want to split the "
+"declarations up over multiple files. You can define actions and parameters "
+"for a page with the view id <literal>/calc/calculator.jsp</literal> in a "
+"resource named <literal>calc/calculator.page.xml</literal>. The root element "
+"in this case is the <literal>&lt;page&gt;</literal> element, and the view id "
+"is implied:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:196
+#, no-c-format
+msgid ""
+"&lt;page action=\"#{calculator.calculate}\"&gt;\n"
+"    &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"    &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"    &lt;param name=\"op\" converter=\"#{operatorConverter}\" value=\"#"
+"{calculator.op}\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:197
+#, no-c-format
+msgid "Component-driven events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:198
+#, no-c-format
+msgid ""
+"Seam components can interact by simply calling each others methods. Stateful "
+"components may even implement the observer/observable pattern. But to enable "
+"components to interact in a more loosely-coupled fashion than is possible "
+"when the components call each others methods directly, Seam provides "
+"<emphasis>component-driven events</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:201
+#, no-c-format
+msgid ""
+"We specify event listeners (observers) in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:204
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;event type=\"hello\"&gt;\n"
+"        &lt;action expression=\"#{helloListener.sayHelloBack}\"/&gt;\n"
+"        &lt;action expression=\"#{logger.logHello}\"/&gt;\n"
+"    &lt;/event&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:205
+#, no-c-format
+msgid "Where the <emphasis>event type</emphasis> is just an arbitrary string."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:208
+#, no-c-format
+msgid ""
+"When an event occurs, the actions registered for that event will be called "
+"in the order they appear in <literal>components.xml</literal>. How does a "
+"component raise an event? Seam provides a built-in component for this."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:211
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World!\");\n"
+"        Events.instance().raiseEvent(\"hello\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:212
+#, no-c-format
+msgid "Or you can use an annotation."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:215
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    @RaiseEvent(\"hello\")\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World!\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:216
+#, no-c-format
+msgid ""
+"Notice that this event producer has no dependency upon event consumers. The "
+"event listener may now be implemented with absolutely no dependency upon the "
+"producer:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:219
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    public void sayHelloBack() {\n"
+"        FacesMessages.instance().add(\"Hello to you too!\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:220
+#, no-c-format
+msgid ""
+"The method binding defined in <literal>components.xml</literal> above takes "
+"care of mapping the event to the consumer. If you don't like futzing about "
+"in the <literal>components.xml</literal> file, you can use an annotation "
+"instead:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:223
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    @Observer(\"hello\")\n"
+"    public void sayHelloBack() {\n"
+"        FacesMessages.instance().add(\"Hello to you too!\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:224
+#, no-c-format
+msgid ""
+"You might wonder why I've not mentioned anything about event objects in this "
+"discussion. In Seam, there is no need for an event object to propagate state "
+"between event producer and listener. State is held in the Seam contexts, and "
+"is shared between components. However, if you really want to pass an event "
+"object, you can:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:227
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    private String name;\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World, my name is #0.\", "
+"name);\n"
+"        Events.instance().raiseEvent(\"hello\", name);\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:228
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    @Observer(\"hello\")\n"
+"    public void sayHelloBack(String name) {\n"
+"        FacesMessages.instance().add(\"Hello #0!\", name);\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:229
+#, no-c-format
+msgid "Contextual events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:230
+#, no-c-format
+msgid ""
+"Seam defines a number of built-in events that the application can use to "
+"perform special kinds of framework integration. The events are:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:235
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preSetVariable.&lt;name&gt;</literal> &mdash; called "
+"when the context variable &lt;name&gt; is set"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:240
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postSetVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is set"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:245
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preRemoveVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is unset"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:250
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postRemoveVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is unset"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:255
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preDestroyContext.&lt;SCOPE&gt;</literal> &mdash; "
+"called before the &lt;SCOPE&gt; context is destroyed"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:260
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postDestroyContext.&lt;SCOPE&gt;</literal> &mdash; "
+"called after the &lt;SCOPE&gt; context is destroyed"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:265
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beginConversation </literal>&mdash; called whenever "
+"a long-running conversation begins"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:270
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endConversation </literal>&mdash; called whenever a "
+"long-running conversation ends"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:275
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beginPageflow.&lt;name&gt; </literal>&mdash; called "
+"when the pageflow &lt;name&gt; begins"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:280
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endPageflow.&lt;name&gt; </literal>&mdash; called "
+"when the pageflow &lt;name&gt; ends"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:285
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.createProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; is created"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:290
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; ends"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:295
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.initProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; is associated with the conversation"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:300
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.initTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is associated with the conversation"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:305
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.startTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is started"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:310
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is ended"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:315
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postCreate.&lt;name&gt; </literal>&mdash; called "
+"when the component &lt;name&gt; is created"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:320
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preDestroy.&lt;name&gt; </literal>&mdash; called "
+"when the component &lt;name&gt; is destroyed"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:325
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beforePhase </literal>&mdash; called before the "
+"start of a JSF phase"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:330
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.afterPhase </literal>&mdash; called after the end of "
+"a JSF phase"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:335
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postAuthenticate.&lt;name&gt; </literal>&mdash; "
+"called after a user is authenticated"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:340
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preAuthenticate.&lt;name&gt; </literal>&mdash; "
+"called before attempting to authenticate a user"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:345
+#, no-c-format
+msgid ""
+"Seam components may observe any of these events in just the same way they "
+"observe any other component-driven events."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:348
+#, no-c-format
+msgid "Seam interceptors"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:349
+#, no-c-format
+msgid ""
+"EJB 3.0 introduced a standard interceptor model for session bean components. "
+"To add an interceptor to a bean, you need to write a class with a method "
+"annotated <literal>@AroundInvoke</literal> and annotate the bean with an "
+"<literal>@Interceptors</literal> annotation that specifies the name of the "
+"interceptor class. For example, the following interceptor checks that the "
+"user is logged in before allowing invoking an action listener method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:352
+#, no-c-format
+msgid ""
+"public class LoggedInInterceptor {\n"
+"\n"
+"   @AroundInvoke\n"
+"   public Object checkLoggedIn(InvocationContext invocation) throws "
+"Exception {\n"
+"   \n"
+"      boolean isLoggedIn = Contexts.getSessionContext().get(\"loggedIn\")!"
+"=null;\n"
+"      if (isLoggedIn) {\n"
+"         //the user is already logged in\n"
+"         return invocation.proceed();\n"
+"      }\n"
+"      else {\n"
+"         //the user is not logged in, fwd to login page\n"
+"         return \"login\";\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:353
+#, no-c-format
+msgid ""
+"To apply this interceptor to a session bean which acts as an action "
+"listener, we must annotate the session bean <literal>@Interceptors"
+"(LoggedInInterceptor.class)</literal>. This is a somewhat ugly annotation. "
+"Seam builds upon the interceptor framework in EJB3 by allowing you to use "
+"<literal>@Interceptors</literal> as a meta-annotation. In our example, we "
+"would create an <literal>@LoggedIn</literal> annotation, as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:356
+#, no-c-format
+msgid ""
+"@Target(TYPE)\n"
+"@Retention(RUNTIME)\n"
+"@Interceptors(LoggedInInterceptor.class)\n"
+"public @interface LoggedIn {}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:357
+#, no-c-format
+msgid ""
+"We can now simply annotate our action listener bean with <literal>@LoggedIn</"
+"literal> to apply the interceptor."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:360
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"changePasswordAction\")\n"
+"@LoggedIn\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class ChangePasswordAction implements ChangePassword { \n"
+"    \n"
+"    ...\n"
+"    \n"
+"    public String changePassword() { ... }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:361
+#, no-c-format
+msgid ""
+"If interceptor ordering is important (it usually is), you can add "
+"<literal>@Interceptor</literal> annotations to your interceptor classes to "
+"specify a partial order of interceptors."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:364
+#, no-c-format
+msgid ""
+"@Interceptor(around={BijectionInterceptor.class,\n"
+"                     ValidationInterceptor.class,\n"
+"                     ConversationInterceptor.class},\n"
+"             within=RemoveInterceptor.class)\n"
+"public class LoggedInInterceptor\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:365
+#, no-c-format
+msgid ""
+"You can even have a \"client-side\" interceptor, that runs around any of the "
+"built-in functionality of EJB3:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:368
+#, no-c-format
+msgid ""
+"@Interceptor(type=CLIENT)\n"
+"public class LoggedInInterceptor\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:369
+#, no-c-format
+msgid ""
+"EJB interceptors are stateful, with a lifecycle that is the same as the "
+"component they intercept. For interceptors which do not need to maintain "
+"state, Seam lets you get a performance optimization by specifying "
+"<literal>@Interceptor(stateless=true)</literal>."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:372
+#, no-c-format
+msgid ""
+"Much of the functionality of Seam is implemented as a set of built-in Seam "
+"interceptors, including the interceptors named in the previous example. You "
+"don't have to explicitly specify these interceptors by annotating your "
+"components; they exist for all interceptable Seam components."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:375
+#, no-c-format
+msgid ""
+"You can even use Seam interceptors with JavaBean components, not just EJB3 "
+"beans!"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:378
+#, no-c-format
+msgid ""
+"EJB defines interception not only for business methods (using "
+"<literal>@AroundInvoke</literal>), but also for the lifecycle methods "
+"<literal>@PostConstruct</literal>, <literal>@PreDestroy</literal>, "
+"<literal>@PrePassivate</literal> and <literal>@PostActive</literal>. Seam "
+"supports all these lifecycle methods on both component and interceptor not "
+"only for EJB3 beans, but also for JavaBean components (except "
+"<literal>@PreDestroy</literal> which is not meaningful for JavaBean "
+"components)."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:381
+#, no-c-format
+msgid "Managing exceptions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:382
+#, no-c-format
+msgid ""
+"JSF is surprisingly limited when it comes to exception handling. As a "
+"partial workaround for this problem, Seam lets you define how a particular "
+"class of exception is to be treated by annotating the exception class, or "
+"declaring the exception class in an XML file. This facility is meant to be "
+"combined with the EJB 3.0-standard <literal>@ApplicationException</literal> "
+"annotation which specifies whether the exception should cause a transaction "
+"rollback."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:385
+#, no-c-format
+msgid "Exceptions and transactions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:386
+#, no-c-format
+msgid ""
+"EJB specifies well-defined rules that let us control whether an exception "
+"immediately marks the current transaction for rollback when it is thrown by "
+"a business method of the bean: <emphasis>system exceptions</emphasis> always "
+"cause a transaction rollback, <emphasis>application exceptions</emphasis> do "
+"not cause a rollback by default, but they do if "
+"<literal>@ApplicationException(rollback=true)</literal> is specified. (An "
+"application exception is any checked exception, or any unchecked exception "
+"annotated <literal>@ApplicationException</literal>. A system exception is "
+"any unchecked exception without an <literal>@ApplicationException</literal> "
+"annotation.)"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:389
+#, no-c-format
+msgid ""
+"Note that there is a difference between marking a transaction for rollback, "
+"and actually rolling it back. The exception rules say that the transaction "
+"should be marked rollback only, but it may still be active after the "
+"exception is thrown."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:392
+#, no-c-format
+msgid ""
+"Seam applies the EJB 3.0 exception rollback rules also to Seam JavaBean "
+"components."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:395
+#, no-c-format
+msgid ""
+"But these rules only apply in the Seam component layer. What about an "
+"exception that is uncaught and propagates out of the Seam component layer, "
+"and out of the JSF layer? Well, it is always wrong to leave a dangling "
+"transaction open, so Seam rolls back any active transaction when an "
+"exception occurs and is uncaught in the Seam component layer."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:398
+#, no-c-format
+msgid "Enabling Seam exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:399
+#, no-c-format
+msgid ""
+"To enable Seam's exception handling, we need to make sure we have the master "
+"servlet filter declared in <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:402
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.servlet.SeamFilter&lt;/filter-"
+"class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:403
+#, no-c-format
+msgid "Using annotations for exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:404
+#, no-c-format
+msgid ""
+"The following exception results in a HTTP 404 error whenever it propagates "
+"out of the Seam component layer. It does not roll back the current "
+"transaction immediately when thrown, but the transaction will be rolled back "
+"if it the exception is not caught by another Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:407
+#, no-c-format
+msgid ""
+"@HttpError(errorCode=404)\n"
+"public class ApplicationException extends Exception { ... }"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:408
+#, no-c-format
+msgid ""
+"This exception results in a browser redirect whenever it propagates out of "
+"the Seam component layer. It also ends the current conversation. It causes "
+"an immediate rollback of the current transaction."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:411
+#, no-c-format
+msgid ""
+"@Redirect(viewId=\"/failure.xhtml\", end=true)\n"
+"@ApplicationException(rollback=true)\n"
+"public class UnrecoverableApplicationException extends RuntimeException "
+"{ ... }"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:412
+#, no-c-format
+msgid ""
+"Note that <literal>@Redirect</literal> does not work for exceptions which "
+"occur during the render phase of the JSF lifecycle."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:415
+#, no-c-format
+msgid ""
+"This exception results in a redirect, along with a message to the user, when "
+"it propagates out of the Seam component layer. It also immediately rolls "
+"back the current transaction."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:418
+#, no-c-format
+msgid ""
+"@Redirect(viewId=\"/error.xhtml\", message=\"Unexpected error\")\n"
+"public class SystemException extends RuntimeException { ... }"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:419
+#, no-c-format
+msgid "Using XML for exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:420
+#, no-c-format
+msgid ""
+"Since we can't add annotations to all the exception classes we are "
+"interested in, Seam also lets us specify this functionality in "
+"<literal>pages.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:423
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   \n"
+"   &lt;exception class=\"javax.persistence.EntityNotFoundException\"&gt;\n"
+"      &lt;http-error error-code=\"404\"/&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"   &lt;exception class=\"javax.persistence.PersistenceException\"&gt;\n"
+"      &lt;end-conversation/&gt;\n"
+"      &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"          &lt;message&gt;Database access failed&lt;/message&gt;\n"
+"      &lt;/redirect&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"   &lt;exception&gt;\n"
+"      &lt;end-conversation/&gt;\n"
+"      &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"          &lt;message&gt;Unexpected failure&lt;/message&gt;\n"
+"      &lt;/redirect&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:424
+#, no-c-format
+msgid ""
+"The last <literal>&lt;exception&gt;</literal> declaration does not specify a "
+"class, and is a catch-all for any exception for which handling is not "
+"otherwise specified via annotations or in <literal>pages.xml</literal>."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Framework.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Framework.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Framework.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,828 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Framework.xml:10
+#, no-c-format
+msgid "The Seam Application Framework"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:11
+#, no-c-format
+msgid ""
+"Seam makes it really easy to create applications by writing plain Java "
+"classes with annotations, which don't need to extend any special interfaces "
+"or superclasses. But we can simplify some common programming tasks even "
+"further, by providing a set of pre-built components which can be re-used "
+"either by configuration in <literal>components.xml</literal> (for very "
+"simple cases) or extension."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:14
+#, no-c-format
+msgid ""
+"The <emphasis>Seam Application Framework</emphasis> can reduce the amount of "
+"code you need to write when doing basic database access in a web "
+"application, using either Hibernate or JPA."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:17
+#, no-c-format
+msgid ""
+"We should emphasize that the framework is extremely simple, just a handful "
+"of simple classes that are easy to understand and extend. The \"magic\" is "
+"in Seam itself&mdash;the same magic you use when creating any Seam "
+"application even without using this framework."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:21
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:22
+#, no-c-format
+msgid ""
+"The components provided by the Seam application framework may be used in one "
+"of two different approaches. The first way is to install and configure an "
+"instance of the component in <literal>components.xml</literal>, just like we "
+"have done with other kinds of built-in Seam components. For example, the "
+"following fragment from <literal>components.xml</literal> installs a "
+"component which can perform basic CRUD operations for a <literal>Contact</"
+"literal> entity:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:25
+#, no-c-format
+msgid ""
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" \n"
+"                       entity-manager=\"#{personDatabase}\"&gt;\n"
+"    &lt;framework:id&gt;#{param.personId}&lt;/framework:id&gt;\n"
+"&lt;/framework:entity-home&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:26
+#, no-c-format
+msgid ""
+"If that looks a bit too much like \"programming in XML\" for your taste, you "
+"can use extension instead:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:29
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; implements "
+"LocalPersonHome {\n"
+"    @RequestParameter String personId;\n"
+"    @In EntityManager personDatabase;\n"
+"    \n"
+"    public Object getId() { return personId; }\n"
+"    public EntityManager getEntityManager() { return personDatabase; }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:30
+#, no-c-format
+msgid ""
+"The second approach has one huge advantage: you can easily add extra "
+"functionality, and override the built-in functionality (the framework "
+"classes were carefully designed for extension and customization)."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:33
+#, no-c-format
+msgid ""
+"A second advantage is that your classes may be EJB stateful sessin beans, if "
+"you like. (They do not have to be, they can be plain JavaBean components if "
+"you prefer.)"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:36
+#, no-c-format
+msgid ""
+"At this time, the Seam Application Framework provides just four built-in "
+"components: <literal>EntityHome</literal> and <literal>HibernateEntityHome</"
+"literal> for CRUD, along with <literal>EntityQuery</literal> and "
+"<literal>HibernateEntityQuery</literal> for queries."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:39
+#, no-c-format
+msgid ""
+"The Home and Query components are written so that they can function with a "
+"scope of session, event or conversation. Which scope you use depends upon "
+"the state model you wish to use in your application."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:42
+#, no-c-format
+msgid ""
+"The Seam Application Framework only works with Seam-managed persistence "
+"contexts. By default, the components will look for a persistence context "
+"named <literal>entityManager</literal>."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:48
+#, no-c-format
+msgid "Home objects"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:49
+#, no-c-format
+msgid ""
+"A Home object provides persistence operations for a particular entity class. "
+"Suppose we have our trusty <literal>Person</literal> class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:52
+#, no-c-format
+msgid ""
+"@Entity\n"
+"public class Person {\n"
+"    @Id private Long id;\n"
+"    private String firstName;\n"
+"    private String lastName;\n"
+"    private Country nationality;\n"
+"    \n"
+"    //getters and setters...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:53
+#, no-c-format
+msgid ""
+"We can define a <literal>personHome</literal> component either via "
+"configuration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:56
+#, no-c-format
+msgid ""
+"&lt;framework:entity-home name=\"personHome\" entity-class=\"eg.Person\" /"
+"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:57
+#, no-c-format
+msgid "Or via extension:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:60
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:61
+#, no-c-format
+msgid ""
+"A Home object provides the following operations: <literal>persist()</"
+"literal>, <literal>remove()</literal>, <literal>update()</literal> and "
+"<literal>getInstance()</literal>. Before you can call the <literal>remove()</"
+"literal>, or <literal>update()</literal> operations, you must first set the "
+"identifier of the object you are interested in, using the <literal>setId()</"
+"literal> method."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:64
+#, no-c-format
+msgid "We can use a Home directly from a JSF page, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:67
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Create Person&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{personHome.instance."
+"firstName}\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{personHome.instance."
+"lastName}\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:68
+#, no-c-format
+msgid ""
+"Usually, it is much nicer to be able to refer to the <literal>Person</"
+"literal> merely as <literal>person</literal>, so let's make that possible by "
+"adding a line to <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:71
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:72
+#, no-c-format
+msgid ""
+"(If we are using configuration.) Or by adding a <literal>@Factory</literal> "
+"method to <literal>PersonHome</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:75
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:76
+#, no-c-format
+msgid ""
+"(If we are using extension.) This change simplifies our JSF page to the "
+"following:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:79
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Create Person&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{person.firstName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{person.lastName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:80
+#, no-c-format
+msgid ""
+"Well, that lets us create new <literal>Person</literal> entries. Yes, that "
+"is all the code that is required! Now, if we want to be able to display, "
+"update and delete pre-existing <literal>Person</literal> entries in the "
+"database, we need to be able to pass the entry identifier to the "
+"<literal>PersonHome</literal>. Page parameters are a great way to do that:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:83
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page viewid=\"/editPerson.jsp\"&gt;\n"
+"        &lt;param name=\"personId\" value=\"#{personHome.id}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:84
+#, no-c-format
+msgid "Now we can add the extra operations to our JSF page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:87
+#, no-c-format
+msgid ""
+"&lt;h1&gt;\n"
+"    &lt;h:outputText rendered=\"#{!personHome.managed}\" value=\"Create "
+"Person\"/&gt;\n"
+"    &lt;h:outputText rendered=\"#{personHome.managed}\" value=\"Edit Person"
+"\"/&gt;\n"
+"&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{person.firstName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{person.lastName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\" \n"
+"            rendered=\"#{!personHome.managed}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Update Person\" action=\"#{personHome."
+"update}\" \n"
+"            rendered=\"#{personHome.managed}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Delete Person\" action=\"#{personHome."
+"remove}\" \n"
+"            rendered=\"#{personHome.managed}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:88
+#, no-c-format
+msgid ""
+"When we link to the page with no request parameters, the page will be "
+"displayed as a \"Create Person\" page. When we provide a value for the "
+"<literal>personId</literal> request parameter, it will be an \"Edit Person\" "
+"page."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:91
+#, no-c-format
+msgid ""
+"Suppose we need to create <literal>Person</literal> entries with their "
+"nationality initialized. We can do that easily, via configuration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:94
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" \n"
+"                       new-instance=\"#{newPerson}\"/&gt;\n"
+"\n"
+"&lt;component name=\"newPerson\" \n"
+"           class=\"eg.Person\"&gt;\n"
+"    &lt;property name=\"nationality\"&gt;#{country}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:95
+#, no-c-format
+msgid "Or by extension:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:98
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:99
+#, no-c-format
+msgid ""
+"Of course, the <literal>Country</literal> could be an object managed by "
+"another Home object, for example, <literal>CountryHome</literal>."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:102
+#, no-c-format
+msgid ""
+"To add more sophisticated operations (association management, etc), we can "
+"just add methods to <literal>PersonHome</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:105
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"    public void migrate()\n"
+"    {\n"
+"        getInstance().setCountry(country);\n"
+"        update();\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:106
+#, no-c-format
+msgid ""
+"The Home object automatically displays faces messages when an operation is "
+"successful. To customize these messages we can, again, use configuration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:109
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\"\n"
+"                       entity-class=\"eg.Person\"\n"
+"                       new-instance=\"#{newPerson}\"&gt;\n"
+"    &lt;framework:created-message&gt;New person #{person.firstName} #{person."
+"lastName} \n"
+"        created&lt;/framework:created-message&gt;\n"
+"    &lt;framework:deleted-message&gt;Person #{person.firstName} #{person."
+"lastName}\n"
+"        deleted&lt;/framework:deleted-message&gt;\n"
+"    &lt;framework:updated-message&gt;Person #{person.firstName} #{person."
+"lastName} \n"
+"        updated&lt;/framework:updated-message&gt;\n"
+"&lt;/framework:entity-home&gt;\n"
+"\n"
+"&lt;component name=\"newPerson\" \n"
+"           class=\"eg.Person\"&gt;\n"
+"    &lt;property name=\"nationality\"&gt;#{country}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:110
+#, no-c-format
+msgid "Or extension:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:113
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"    protected String getCreatedMessage() { return \"New person #{person."
+"firstName} \n"
+"        #{person.lastName} created\"; }\n"
+"    protected String getUpdatedMessage() { return \"Person #{person."
+"firstName} \n"
+"        #{person.lastName} updated\"; }\n"
+"    protected String getDeletedMessage() { return \"Person #{person."
+"firstName} \n"
+"        #{person.lastName} deleted\"; }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:114
+#, no-c-format
+msgid ""
+"But the best way to specify the messages is to put them in a resource bundle "
+"known to Seam (the bundle named <literal>messages</literal>, by default)."
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:117
+#, no-c-format
+msgid ""
+"Person_created=New person #{person.firstName} #{person.lastName} created\n"
+"Person_deleted=Person #{person.firstName} #{person.lastName} deleted\n"
+"Person_updated=Person #{person.firstName} #{person.lastName} updated"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:118
+#, no-c-format
+msgid ""
+"This enables internationalization, and keeps your code and configuration "
+"clean of presentation concerns."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:121
+#, no-c-format
+msgid ""
+"The final step is to add validation functionality to the page, using "
+"<literal>&lt;s:validateAll&gt;</literal> and <literal>&lt;s:decorate&gt;</"
+"literal>, but I'll leave that for you to figure out."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:127
+#, no-c-format
+msgid "Query objects"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:128
+#, no-c-format
+msgid ""
+"If we need a list of all <literal>Person</literal> instance in the database, "
+"we can use a Query object. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:131
+#, no-c-format
+msgid ""
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:132
+#, no-c-format
+msgid "We can use it from a JSF page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:135
+#, no-c-format
+msgid ""
+"&lt;h1&gt;List of people&lt;/h1&gt;\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view-id=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:136
+#, no-c-format
+msgid "We probably need to support pagination:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:139
+#, no-c-format
+msgid ""
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\" \n"
+"                        order=\"lastName\" \n"
+"                        max-results=\"20\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:140
+#, no-c-format
+msgid "We'll use a page parameter to determine the page to display:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:143
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page viewid=\"/searchPerson.jsp\"&gt;\n"
+"        &lt;param name=\"firstResult\" value=\"#{people.firstResult}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:144
+#, no-c-format
+msgid "The JSF code for a pagination control is a bit verbose, but manageable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:147
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Search for people&lt;/h1&gt;\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view-id=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.previousExists}\" "
+"value=\"First Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"0\"/&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.previousExists}\" "
+"value=\"Previous Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.previousFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.nextExists}\" value="
+"\"Next Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.nextFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.nextExists}\" value="
+"\"Last Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.lastFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:148
+#, no-c-format
+msgid ""
+"Real search screens let the user enter a bunch of optional search criteria "
+"to narrow the list of results returned. The Query object lets you specify "
+"optional \"restrictions\" to support this important usecase:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:151
+#, no-c-format
+msgid ""
+"&lt;component name=\"examplePerson\" class=\"Person\"/&gt;\n"
+"        \n"
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\" \n"
+"                        order=\"lastName\" \n"
+"                        max-results=\"20\"&gt;\n"
+"    &lt;framework:restrictions&gt;\n"
+"        &lt;value&gt;lower(firstName) like lower( #{examplePerson.firstName} "
+"+ '&#37;' )&lt;/value&gt;\n"
+"        &lt;value&gt;lower(lastName) like lower( #{examplePerson.lastName} + "
+"'&#37;' )&lt;/value&gt;\n"
+"    &lt;/framework:restrictions&gt;\n"
+"&lt;/framework:entity-query&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:152
+#, no-c-format
+msgid "Notice the use of an \"example\" object."
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:155
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Search for people&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{examplePerson.firstName}"
+"\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{examplePerson.lastName}"
+"\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;&lt;h:commandButton value=\"Search\" action=\"/search.jsp\"/"
+"&gt;&lt;/div&gt;\n"
+"&lt;/h:form&gt;\n"
+"\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view-id=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:156
+#, no-c-format
+msgid ""
+"The examples in this section have all shown reuse by configuration. However, "
+"reuse by extension is equally possible for Query objects."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:162
+#, no-c-format
+msgid "Controller objects"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:163
+#, no-c-format
+msgid ""
+"A totally optional part of the Seam Application Framework is the class "
+"<literal>Controller</literal> and its subclasses <literal>EntityController</"
+"literal><literal>HibernateEntityController</literal> and "
+"<literal>BusinessProcessController</literal>. These classes provide nothing "
+"more than some convenience methods for access to commonly used built-in "
+"components and methods of built-in components. They help save a few "
+"keystrokes (characters can add up!) and provide a great launchpad for new "
+"users to explore the rich functionality built in to Seam."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:166
+#, no-c-format
+msgid ""
+"For example, here is what <literal>RegisterAction</literal> from the Seam "
+"registration example would look like:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:169
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"register\")\n"
+"public class RegisterAction extends EntityController implements Register\n"
+"{\n"
+"\n"
+"   @In private User user;\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = createQuery(\"select u.username from User u where u."
+"username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getResultList();\n"
+"      \n"
+"      if ( existing.size()==0 )\n"
+"      {\n"
+"         persist(user);\n"
+"         info(\"Registered new user #{user.username}\");\n"
+"         return \"/registered.jspx\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         addFacesMessage(\"User #{user.username} already exists\");\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:170
+#, no-c-format
+msgid "As you can see, its not an earthshattering improvement..."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Gettingstarted.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Gettingstarted.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Gettingstarted.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,588 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Gettingstarted.xml:10
+#, no-c-format
+msgid "Getting started with Seam, using seam-gen"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:11
+#, no-c-format
+msgid ""
+"The Seam distribution includes a command line utility that makes it really "
+"easy to set up an Eclipse project, generate some simple Seam skeleton code, "
+"and reverse engineer an application from a pre-existing database."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:14
+#, no-c-format
+msgid ""
+"This is the easy way to get your feet wet with Seam, and gives you some "
+"ammunition for next time you find yourself trapped in an elevator with one "
+"of those tedious Ruby guys ranting about how great and wonderful his new toy "
+"is for building totally trivial applications that put things in databases."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:17
+#, no-c-format
+msgid ""
+"In this release, seam-gen works best for people with JBoss AS. You can use "
+"the generated project with other J2EE or Java EE 5 application servers by "
+"making a few manual changes to the project configuration."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:20
+#, no-c-format
+msgid ""
+"You <emphasis>can</emphasis> use seam-gen without Eclipse, but in this "
+"tutorial, we want to show you how to use it in conjunction with Eclipse for "
+"debugging and integration testing. If you don't want to install Eclipse, you "
+"can still follow along with this tutorial&mdash;all steps can be peformed "
+"from the command line."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:23
+#, no-c-format
+msgid ""
+"Seam-gen is basically just a big ugly Ant script wrapped around Hibernate "
+"Tools, together with some templates. Which means it is easy to customize if "
+"you need to."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:27
+#, no-c-format
+msgid "Before you start"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:28
+#, no-c-format
+msgid ""
+"Make sure you have JDK 5 or JDK 6, JBoss AS 4.0.5 and Ant 1.6, along with "
+"recent versions of Eclipse, the JBoss IDE plugin for Eclipse and the TestNG "
+"plugin for Eclipse correctly installed before starting. Add your JBoss "
+"installation to the JBoss Server View in Eclipse. Start JBoss in debug mode. "
+"Finally, start a command prompt in the directory where you unzipped the Seam "
+"distribution."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:34
+#, no-c-format
+msgid "Setting up a new Eclipse project"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:35
+#, no-c-format
+msgid ""
+"The first thing we need to do is configure seam-gen for your environment: "
+"JBoss AS installation directory, Eclipse workspace, and database connection. "
+"It's easy, just type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:38
+#, no-c-format
+msgid ""
+"cd jboss-seam-1.1.x\n"
+"seam setup"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:39
+#, no-c-format
+msgid "And you will be prompted for the needed information:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:42
+#, no-c-format
+msgid ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam setup\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"setup:\n"
+"    [echo] Welcome to seam-gen :-)\n"
+"    [input] Enter your Java project workspace [C:/Projects]\n"
+"\n"
+"    [input] Enter your JBoss home directory [C:/Program Files/jboss-4.0.5."
+"GA]\n"
+"\n"
+"    [input] Enter the project name [myproject]\n"
+"helloworld\n"
+"    [input] Is this project deployed as an EAR (with EJB components) or a "
+"WAR \n"
+"        (with no EJB support) [ear] (ear,war,)\n"
+"\n"
+"    [input] Enter the Java package name for your session beans [com.mydomain."
+"helloworld]\n"
+"org.jboss.helloworld\n"
+"    [input] Enter the Java package name for your entity beans [org.jboss."
+"helloworld]\n"
+"\n"
+"    [input] Enter the Java package name for your test cases [org.jboss."
+"helloworld.test]\n"
+"\n"
+"    [input] What kind of database are you using? [hsql]\n"
+"    (hsql,mysql,oracle,postgres,mssql,db2,sybase,)\n"
+"mysql\n"
+"    [input] Enter the Hibernate dialect for your database [org.hibernate."
+"dialect.MySQLDialect]\n"
+"\n"
+"    [input] Enter the filesystem path to the JDBC driver jar [lib/hsqldb."
+"jar]\n"
+"../../mysql-connector.jar\n"
+"    [input] Enter JDBC driver class for your database [com.mysql.jdbc."
+"Driver]\n"
+"\n"
+"    [input] Enter the JDBC URL for your database [jdbc:mysql:///test]\n"
+"\n"
+"    [input] Enter database username [sa]\n"
+"gavin\n"
+"    [input] Enter database password []\n"
+"\n"
+"    [input] Are you working with tables that already exist in the database? "
+"[n] (y,n,)\n"
+"y\n"
+"    [input] Do you want to drop and recreate the database tables and data in "
+"import.sql \n"
+"    each time you deploy? [n] (y,n,)\n"
+"n\n"
+"[propertyfile] Creating new property file: C:&#92;Projects&#92;jboss-"
+"seam&#92;seam-gen&#92;build.properties\n"
+"     [echo] Installing JDBC driver jar to JBoss server\n"
+"     [echo] Type 'seam new-project' to create the new project\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 1 minute 17 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:43
+#, no-c-format
+msgid ""
+"The tool provides sensible defaults, which you can accept by just pressing "
+"enter at the prompt."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:46
+#, no-c-format
+msgid ""
+"The most important choice you need to make is between EAR deployment and WAR "
+"deployment of your project. EAR projects support EJB 3.0 and require Java EE "
+"5. WAR projects do not support EJB 3.0, but may be deployed to a J2EE "
+"environment. The packaging of a WAR is also simpler to understand. If you "
+"installed JBoss with the ejb3 profile, choose <literal>ear</literal>. "
+"Otherwise, choose <literal>war</literal>. We'll assume that you've chosen an "
+"EAR deployment for the rest of the tutorial, but you can follow exactly the "
+"same steps for a WAR deployment."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:49
+#, no-c-format
+msgid ""
+"If you are working with an existing data model, make sure you tell seam-gen "
+"that the tables already exist in the database."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:52
+#, no-c-format
+msgid ""
+"The settings are stored in <literal>seam-gen/build.properties</literal>, but "
+"you can also modify them simply by running <literal>seam setup</literal> a "
+"second time."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:55
+#, no-c-format
+msgid ""
+"Now we can create a new project in our Eclipse workspace directory, by "
+"typing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:58
+#, no-c-format
+msgid "seam new-project"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:59
+#, no-c-format
+msgid ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam new-project\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"copy-lib:\n"
+"     [echo] Copying project jars ...\n"
+"     [copy] Copying 32 files to C:&#92;Projects&#92;helloworld&#92;lib\n"
+"     [copy] Copying 9 files to C:&#92;Projects&#92;helloworld&#92;embedded-"
+"ejb\n"
+"\n"
+"file-copy-wtp:\n"
+"\n"
+"file-copy:\n"
+"     [echo] Copying project resources ...\n"
+"     [copy] Copying 12 files to C:&#92;Projects&#92;helloworld&#92;"
+"resources\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;helloworld&#92;resources\n"
+"     [copy] Copying 5 files to C:&#92;Projects&#92;helloworld&#92;view\n"
+"     [copy] Copying 5 files to C:&#92;Projects&#92;helloworld\n"
+"    [mkdir] Created dir: C:&#92;Projects&#92;helloworld&#92;src\n"
+"\n"
+"new-project:\n"
+"     [echo] A new Seam project was created in the C:/Projects directory\n"
+"     [echo] Add the project from inside Eclipse (or type 'seam explode') and "
+"go to http://localhost:\n"
+"8080/helloworld\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 7 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:60
+#, no-c-format
+msgid ""
+"This copies the Seam jars, dependent jars and the JDBC driver jar to a new "
+"Eclipse project, and generates all needed resources and configuration files, "
+"a facelets template file and stylesheet, along with Eclipse metadata and an "
+"Ant build script. The Eclipse project will be automatically deployed to an "
+"exploded directory structure in JBoss AS as soon as you add the project "
+"using <literal>New -&gt; Project... -&gt; Java Project -&gt; Next</literal>, "
+"typing the <literal>Project name</literal> (<literal>myproject</literal> in "
+"this case), selecting your Java SE 5 or Java SE 6 JRE and then clicking "
+"<literal>Finish</literal>. Do not select <literal>Create new project from "
+"existing source</literal>. Alternatively, you can deploy the project from "
+"outside Eclipse by typing <literal>seam explode</literal>."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:63
+#, no-c-format
+msgid ""
+"Go to <literal>http://localhost:8080/helloworld</literal> to see a welcome "
+"page. This is a facelets page, <literal>view/home.xhtml</literal>, using the "
+"template <literal>view/layout/template.xhtml</literal>. You can edit this "
+"page, or the template, in eclipse, and see the results "
+"<emphasis>immediately</emphasis>, by clicking refresh in your browser."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:66
+#, no-c-format
+msgid ""
+"Don't get scared by the XML configuration documents that were generated into "
+"the project directory. They are mostly standard Java EE stuff, the stuff you "
+"need to create once and then never look at again, and they are 90&#37; the "
+"same between all Seam projects. (They are so easy to write that even seam-"
+"gen can do it.)"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:69
+#, no-c-format
+msgid ""
+"The generated project includes three database and persistence "
+"configurations. The <literal>jboss-beans.xml</literal>, <literal>persistence-"
+"test.xml</literal> and <literal>import-test.sql</literal> files are used "
+"when running the TestNG unit tests against HSQLDB. The database schema and "
+"the test data in <literal>import-test.sql</literal> is always exported to "
+"the database before running tests. The <literal>myproject-dev-ds.xml</"
+"literal>, <literal>persistence-dev.xml</literal>and <literal>import-dev.sql</"
+"literal> files are for use when deploying the application to your "
+"development database. The schema might be exported automatically at "
+"deployment, depending upon whether you told seam-gen that you are working "
+"with an existing database. The <literal>myproject-prod-ds.xml</literal>, "
+"<literal>persistence-prod.xml</literal>and <literal>import-prod.sql</"
+"literal> files are for use when deploying the application to your production "
+"database. The schema is not exported automatically at deployment."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:75
+#, no-c-format
+msgid "Creating a new action"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:76
+#, no-c-format
+msgid ""
+"If you're used to traditional action-style web frameworks, you're probably "
+"wondering how you can create a simple webpage with a stateless action method "
+"in Java. If you type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:79
+#, no-c-format
+msgid "seam new-action"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:80
+#, no-c-format
+msgid ""
+"Seam will prompt for some information, and generate a new facelets page and "
+"Seam component for your project."
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:83
+#, no-c-format
+msgid ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam new-action ping\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"action-input:\n"
+"    [input] Enter the Seam component name\n"
+"ping\n"
+"    [input] Enter the local interface name [Ping]\n"
+"\n"
+"    [input] Enter the bean class name [PingBean]\n"
+"\n"
+"    [input] Enter the action method name [ping]\n"
+"\n"
+"    [input] Enter the page name [ping]\n"
+"\n"
+"\n"
+"setup-filters:\n"
+"\n"
+"new-action:\n"
+"     [echo] Creating a new stateless session bean component with an action "
+"method\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;view\n"
+"     [echo] Type 'seam restart' and go to \n"
+"     http://localhost:8080/helloworld/ping.seam\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 13 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:84
+#, no-c-format
+msgid ""
+"Because we've added a new Seam component, we need to restart the exploded "
+"directory deployment. You can do this by typing <literal>seam restart</"
+"literal>, or by running the <literal>restart</literal> target in the "
+"generated project <literal>build.xml</literal> file from inside Eclipse. "
+"Another way to force a restart is to edit the file <literal>resources/META-"
+"INF/application.xml</literal> in Eclipse. <emphasis>Note that you do not "
+"need to restart JBoss each time you change the application.</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:87
+#, no-c-format
+msgid ""
+"Now go to <literal>http://localhost:8080/helloworld/ping.seam</literal> and "
+"click the button. You can see the code behind this action by looking in the "
+"project <literal>src</literal> directory. Put a breakpoint in the "
+"<literal>ping()</literal> method, and click the button again."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:90
+#, no-c-format
+msgid ""
+"Finally, locate the <literal>PingTest.xml</literal> file in the test package "
+"and run the integration tests using the TestNG plugin for Eclipse. "
+"Alternatively, run the tests using <literal>seam test</literal> or the "
+"<literal>test</literal> target of the generated build."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:96
+#, no-c-format
+msgid "Creating a form with an action"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:97
+#, no-c-format
+msgid "The next step is to create a form. Type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:100
+#, no-c-format
+msgid "seam new-form"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:101
+#, no-c-format
+msgid ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam new-form\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"action-input:\n"
+"    [input] Enter the Seam component name\n"
+"hello\n"
+"    [input] Enter the local interface name [Hello]\n"
+"\n"
+"    [input] Enter the bean class name [HelloBean]\n"
+"\n"
+"    [input] Enter the action method name [hello]\n"
+"\n"
+"    [input] Enter the page name [hello]\n"
+"\n"
+"\n"
+"setup-filters:\n"
+"\n"
+"new-form:\n"
+"     [echo] Creating a new stateful session bean component with an action "
+"method\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;view\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [echo] Type 'seam restart' and go to http://localhost:8080/hello/hello."
+"seam\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 5 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:102
+#, no-c-format
+msgid ""
+"Restart the application again, and go to <literal>http://localhost:8080/"
+"helloworld/hello.seam</literal>. Then take a look at the generated code. Run "
+"the test. Try adding some new fields to the form and Seam component "
+"(remember to restart the deploment each time you change the Java code)."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:108
+#, no-c-format
+msgid "Generating an application from an existing database"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:109
+#, no-c-format
+msgid ""
+"Manually create some tables in your database. (If you need to switch to a "
+"different database, just run <literal>seam setup</literal> again.) Now type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:112
+#, no-c-format
+msgid "seam generate-entities"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:113
+#, no-c-format
+msgid ""
+"Restart the deployment, and go to <literal>http://localhost:8080/helloworld</"
+"literal>. You can browse the database, edit existing objects, and create new "
+"objects. If you look at the generated code, you'll probably be amazed how "
+"simple it is! Seam was designed so that data access code is easy to write by "
+"hand, even for people who don't want to cheat by using seam-gen."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:119
+#, no-c-format
+msgid "Deploying the application as an EAR"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:120
+#, no-c-format
+msgid ""
+"Finally, we want to be able to deploy the application using standard Java EE "
+"5 packaging. First, we need to remove the exploded directory by running "
+"<literal>seam unexplode</literal>. To deploy the EAR, we can type "
+"<literal>seam deploy</literal> at the command prompt, or run the "
+"<literal>deploy</literal> target of the generated project build script. You "
+"can undeploy using <literal>seam undeploy</literal> or the "
+"<literal>undeploy</literal> target."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:123
+#, no-c-format
+msgid ""
+"By default, the application will be deployed with the <emphasis>dev profile</"
+"emphasis>. The EAR will include the <literal>persistence-dev.xml</literal> "
+"and <literal>import-dev.sql</literal> files, and the <literal>myproject-dev-"
+"ds.xml</literal> file will be deployed. You can change the profile, and use "
+"the <emphasis>prod profile</emphasis>, by typing"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:126
+#, no-c-format
+msgid "seam -Dprofile=prod deploy"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:127
+#, no-c-format
+msgid ""
+"You can even define new deployment profiles for your application. Just add "
+"appropriately named files to your project&mdash;for example, "
+"<literal>persistence-staging.xml</literal>, <literal>import-staging.sql</"
+"literal> and <literal>myproject-staging-ds.xml</literal>&mdash;and select "
+"the name of the profile using <literal>-Dprofile=staging</literal>."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/I18n.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/I18n.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/I18n.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,533 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: I18n.xml:10
+#, no-c-format
+msgid "Internationalization and themes"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:11
+#, no-c-format
+msgid ""
+"Seam makes it easy to build internationalized applications by providing "
+"several built-in components for handling multi-language UI messages."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:15
+#, no-c-format
+msgid "Locales"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:16
+#, no-c-format
+msgid ""
+"Each user login session has an associated instance of <literal>java.util."
+"Locale</literal> (available to the application as a session-scoped component "
+"named <literal>locale</literal>). Under normal circumstances, you won't need "
+"to do any special configuration to set the locale. Seam just delegates to "
+"JSF to determine the active locale:"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:21
+#, no-c-format
+msgid ""
+"If there is a locale associated with the HTTP request (the browser locale), "
+"and that locale is in the list of supported locales from <literal>faces-"
+"config.xml</literal>, use that locale for the rest of the session."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:24
+#, no-c-format
+msgid ""
+"Otherwise, if a default locale was specified in the <literal>faces-config."
+"xml</literal>, use that locale for the rest of the session."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:27
+#, no-c-format
+msgid "Otherwise, use the default locale of the server."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:30
+#, no-c-format
+msgid ""
+"It is <emphasis>possible</emphasis> to set the locale manually via the Seam "
+"configuration properties <literal>org.jboss.seam.core.localeSelector."
+"language</literal>, <literal>org.jboss.seam.core.localeSelector.country</"
+"literal> and <literal>org.jboss.seam.core.localeSelector.variant</literal>, "
+"but we can't think of any good reason to ever do this."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:33
+#, no-c-format
+msgid ""
+"It is, however, useful to allow the user to set the locale manually via the "
+"application user interface. Seam provides built-in functionality for "
+"overriding the locale determined by the algorithm above. All you have to do "
+"is add the following fragment to a form in your JSP or Facelets page:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:36
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{localeSelector.language}\"&gt;\n"
+"    &lt;f:selectItem itemLabel=\"English\" itemValue=\"en\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Deutsch\" itemValue=\"de\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Francais\" itemValue=\"fr\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{localeSelector.select}\" value=\"#{messages"
+"['ChangeLanguage']}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:37
+#, no-c-format
+msgid ""
+"Or, if you want a list of all supported locales from <literal>faces-config."
+"xml</literal>, just use:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:40
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{localeSelector.localeString}\"&gt;\n"
+"    &lt;f:selectItems value=\"#{localeSelector.supportedLocales}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{localeSelector.select}\" value=\"#{messages"
+"['ChangeLanguage']}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:41
+#, no-c-format
+msgid ""
+"When this use selects an item from the drop-down, and clicks the button, the "
+"Seam and JSF locales will be overridden for the rest of the session."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:47
+#, no-c-format
+msgid "Labels"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:48
+#, no-c-format
+msgid ""
+"JSF supports internationalization of user interface labels and descriptive "
+"text via the use of <literal>&lt;f:loadBundle /&gt;</literal>. You can use "
+"this approach in Seam applications. Alternatively, you can take advantage of "
+"the Seam <literal>messages</literal> component to display templated labels "
+"with embedded EL expressions."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:52
+#, no-c-format
+msgid "Defining labels"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:53
+#, no-c-format
+msgid ""
+"Each login session has an associated instance of <literal>java.util."
+"ResourceBundle</literal> (available to the application as a session-scoped "
+"component named <literal>org.jboss.seam.core.resourceBundle</literal>). "
+"You'll need to make your internationalized labels available via this special "
+"resource bundle. By default, the resource bundle used by Seam is named "
+"<literal>messages</literal> and so you'll need to define your labels in "
+"files named <literal>messages.properties</literal>, <literal>messages_en."
+"properties</literal>, <literal>messages_en_AU.properties</literal>, etc. "
+"These files usually belong in the <literal>WEB-INF/classes</literal> "
+"directory."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:56
+#, no-c-format
+msgid "So, in <literal>messages_en.properties</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:59
+#, no-c-format
+msgid "Hello=Hello"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:60
+#, no-c-format
+msgid "And in <literal>messages_en_AU.properties</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:63
+#, no-c-format
+msgid "Hello=G'day"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:64
+#, no-c-format
+msgid ""
+"You can select a different name for the resource bundle by setting the Seam "
+"configuration property named <literal>org.jboss.seam.core.resourceBundle."
+"bundleNames</literal>. You can even specify a list of resource bundle names "
+"to be searched (depth first) for messages."
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:67
+#, no-c-format
+msgid ""
+"&lt;core:resource-bundle&gt;\n"
+"    &lt;core:bundle-names&gt;\n"
+"        &lt;value&gt;mycompany_messages&lt;/value&gt;\n"
+"        &lt;value&gt;standard_messages&lt;/value&gt;       \n"
+"    &lt;/core:bundle-names&gt;\n"
+"&lt;/core:resource-bundle&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:68
+#, no-c-format
+msgid ""
+"If you want to define a message just for a particular page, you can specify "
+"it in a resource bundle with the same name as the JSF view id, with the "
+"leading <literal>/</literal> and trailing file extension removed. So we "
+"could put our message in <literal>welcome/hello_en.properties</literal> if "
+"we only needed to display the message on <literal>/welcome/hello.jsp</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:71
+#, no-c-format
+msgid ""
+"You can even specify an explicit bundle name in <literal>pages.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:74
+#, no-c-format
+msgid "&lt;page view-id=\"/welcome/hello.jsp\" bundle=\"HelloMessages\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:75
+#, no-c-format
+msgid ""
+"Then we could use messages defined in <literal>HelloMessages.properties</"
+"literal> on <literal>/welcome/hello.jsp</literal>."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:81
+#, no-c-format
+msgid "Displaying labels"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:82
+#, no-c-format
+msgid ""
+"If you define your labels using the Seam resource bundle, you'll be able to "
+"use them without having to type <literal>&lt;f:loadBundle ... /&gt;</"
+"literal> on every page. Instead, you can simply type:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:85
+#, no-c-format
+msgid "&lt;h:outputText value=\"#{messages['Hello']}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:86
+#, no-c-format
+msgid "<para>or:</para>"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:89
+#, no-c-format
+msgid "&lt;h:outputText value=\"#{messages.Hello}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:90
+#, no-c-format
+msgid "Even better, the messages themselves may contain EL expressions:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:93
+#, no-c-format
+msgid "Hello=Hello, #{user.firstName} #{user.lastName}"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:94
+#, no-c-format
+msgid "Hello=G'day, #{user.firstName}"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:95
+#, no-c-format
+msgid "You can even use the messages in your code:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:98
+#, no-c-format
+msgid "@In private Map&lt;String, String&gt; messages;"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:99
+#, no-c-format
+msgid "@In(\"#{messages['Hello']}\") private String helloMessage;"
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:103
+#, no-c-format
+msgid "Faces messages"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:104
+#, no-c-format
+msgid ""
+"The <literal>facesMessages</literal> component is a super-convenient way to "
+"display success or failure messages to the user. The functionality we just "
+"described also works for faces messages:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:107
+#, no-c-format
+msgid ""
+"@Name(\"hello\")\n"
+"@Stateless\n"
+"public class HelloBean implements Hello {\n"
+"    @In FacesMessages facesMessages;\n"
+"    \n"
+"    public String sayIt() {\n"
+"        facesMessages.addFromResourceBundle(\"Hello\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:108
+#, no-c-format
+msgid ""
+"This will display <literal>Hello, Gavin King</literal> or <literal>G'day, "
+"Gavin</literal>, depending upon the user's locale."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:116
+#, no-c-format
+msgid "Timezones"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:117
+#, no-c-format
+msgid ""
+"There is also a session-scoped instance of <literal>java.util.Timezone</"
+"literal>, named <literal>org.jboss.seam.core.timezone</literal>, and a Seam "
+"component for changing the timezone named <literal>org.jboss.seam.core."
+"timezoneSelector</literal>. By default, the timezone is the default timezone "
+"of the server. Unfortunately, the JSF specification says that all dates and "
+"times should be assumed to be UTC, and displayed as UTC, unless a timezone "
+"is explicitly specified using <literal>&lt;f:convertDateTime&gt;</literal>. "
+"This is an extremely inconvenient default behavior."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:120
+#, no-c-format
+msgid ""
+"Seam overrides this behavior, and defaults all dates and times to the Seam "
+"timezone. In addition, Seam provides the <literal>&lt;s:convertDateTime&gt;</"
+"literal> tag which always performs conversions in the Seam timezone."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:126
+#, no-c-format
+msgid "Themes"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:127
+#, no-c-format
+msgid ""
+"Seam applications are also very easily skinnable. The theme API is very "
+"similar to the localization API, but of course these two concerns are "
+"orthogonal, and some applications support both localization and themes."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:130
+#, no-c-format
+msgid "First, configure the set of supported themes:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:133
+#, no-c-format
+msgid ""
+"&lt;theme:theme-selector cookie-enabled=\"true\"&gt;\n"
+"    &lt;theme:available-themes&gt;\n"
+"        &lt;value&gt;default&lt;/value&gt;\n"
+"        &lt;value&gt;accessible&lt;/value&gt;\n"
+"        &lt;value&gt;printable&lt;/value&gt;\n"
+"    &lt;/theme:available-themes&gt;\n"
+"&lt;/theme:theme-selector&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:134
+#, no-c-format
+msgid "Note that the first theme listed is the default theme."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:137
+#, no-c-format
+msgid ""
+"Themes are defined in a properties file with the same name as the theme. For "
+"example, the <literal>default</literal> theme is defined as a set of entries "
+"in <literal>default.properties</literal>. For example, <literal>default."
+"properties</literal> might define:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:140
+#, no-c-format
+msgid ""
+"css ../screen.css\n"
+"template template.xhtml"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:141
+#, no-c-format
+msgid ""
+"Usually the entries in a theme resource bundle will be paths to CSS styles "
+"or images and names of facelets templates (unlike localization resource "
+"bundles which are usually text)."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:144
+#, no-c-format
+msgid ""
+"Now we can use these entries in our JSP or facelets pages. For example, to "
+"theme the stylesheet in a facelets page:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:147
+#, no-c-format
+msgid ""
+"&lt;link href=\"#{theme.css}\" rel=\"stylesheet\" type=\"text/css\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:148
+#, no-c-format
+msgid ""
+"Most powerfully, facelets lets us theme the template used by a <literal>&lt;"
+"ui:composition&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:151
+#, no-c-format
+msgid ""
+"&lt;ui:composition xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"    xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"    xmlns:h=\"http://java.sun.com/jsf/html\"\n"
+"    xmlns:f=\"http://java.sun.com/jsf/core\"\n"
+"    template=\"#{theme.template}\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:152
+#, no-c-format
+msgid ""
+"Just like the locale selector, there is a built-in theme selector to allow "
+"the user to freely switch themes:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:155
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{themeSelector.theme}\"&gt;\n"
+"    &lt;f:selectItems value=\"#{themeSelector.themes}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{themeSelector.select}\" value=\"Select Theme"
+"\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:159
+#, no-c-format
+msgid "Persisting locale and theme preferences via cookies"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:160
+#, no-c-format
+msgid ""
+"The locale selector, theme selector and timezone selector all support "
+"persistence of locale and theme preference to a cookie. Simply set the "
+"<literal>cookie-enabled</literal> configuration property:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:163
+#, no-c-format
+msgid ""
+"&lt;theme:theme-selector cookie-enabled=\"true\"&gt;\n"
+"    &lt;theme:available-themes&gt;\n"
+"        &lt;value&gt;default&lt;/value&gt;\n"
+"        &lt;value&gt;accessible&lt;/value&gt;\n"
+"        &lt;value&gt;printable&lt;/value&gt;\n"
+"    &lt;/theme:available-themes&gt;\n"
+"&lt;/theme:theme-selector&gt;\n"
+"\n"
+"&lt;core:locale-selector cookie-enabled=\"true\"/&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Itext.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Itext.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Itext.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1452 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Itext.xml:10
+#, no-c-format
+msgid "iText PDF generation"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:11
+#, no-c-format
+msgid ""
+"Seam now includes an component set for generating documents using iText. The "
+"primary focus of Seam's iText document support is for the generation of PDF "
+"doucuments, but Seam also offers basic support for RTF document generation."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:15
+#, no-c-format
+msgid "Using PDF Support"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:16
+#, no-c-format
+msgid ""
+"iText support is provided by <literal>jboss-seam-pdf.jar</literal>. This JAR "
+"contains the iText JSF controls, which are used to construct views that can "
+"render to PDF, and the DocumentStore component, which serves the rendered "
+"documents to the user. To include PDF support in your application, included "
+"<literal>jboss-seam-pdf.jar</literal> in your <literal>WEB-INF/lib</literal> "
+"directory along with the iText JAR file. There is no further configuration "
+"needed to use Seam's iText support."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:19
+#, no-c-format
+msgid ""
+"The Seam iText module requires the use of Facelets as the view technology. "
+"Future versions of the library may also support the use of JSP. "
+"Additionally, it requires the use of the seam-ui package."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:22
+#, no-c-format
+msgid ""
+"The <literal>examples/itext</literal> project contains an example of the PDF "
+"support in action. It demonstrates proper deployment packaging, and it "
+"contains a number examples that demonstrate the key PDF generation features "
+"current supported."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:28
+#, no-c-format
+msgid "Creating a document"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:29
+#, no-c-format
+msgid ""
+"Documents are generated by facelets documents using tags in the "
+"<literal>http://jboss.com/products/seam/pdf</literal> namespace. Documents "
+"should always have the <literal>document</literal> tag at the root of the "
+"document. The <literal>document</literal> tag prepares Seam to generate a "
+"document into the DocumentStore and renders an HTML redirect to that stored "
+"content. The following is a a small PDF document consisting only a single "
+"line of text:"
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:32
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf"
+"\"&gt;                                                      \n"
+"   The document goes "
+"here.                                                                                             \n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:34
+#, no-c-format
+msgid "p:document"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:35
+#, no-c-format
+msgid ""
+"The <literal>p:document</literal> tag supports the following attributes:"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:40
+#, no-c-format
+msgid "type"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:42
+#, no-c-format
+msgid ""
+"The type of the document to be produced. Valid values are <literal>PDF</"
+"literal>, <literal>RTF</literal> and <literal>HTML</literal> modes. Seam "
+"defaults to PDF generation, and many of the features only work correctly "
+"when generating PDF documents."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:48
+#, no-c-format
+msgid "pageSize"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:50
+#, no-c-format
+msgid ""
+"The size of the page to be generate. The most commonly used values would be "
+"<literal>LETTER</literal> and <literal>A4</literal>. A full list of "
+"supported pages sizes can be found in <literal>com.lowagie.text.PageSize</"
+"literal> class. Alternatively, pageSize can provide the width and height of "
+"the page directly. The value \"612 792\", for example, is equizalent to the "
+"LETTER page size."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:56
+#, no-c-format
+msgid "orientation"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:58
+#, no-c-format
+msgid ""
+"The orientation of the page. Valid values are <literal>portrait</literal> "
+"and <literal>landscape</literal>. In landscape mode, the height and width "
+"page size values are reversed."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:64
+#, no-c-format
+msgid "margins"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:66
+#, no-c-format
+msgid "The left, right, top and bottom margin values."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:72
+#, no-c-format
+msgid "marginMirroring"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:74
+#, no-c-format
+msgid "Indicates that margin settings should be reversed an alternating pages."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:80
+#, no-c-format
+msgid ""
+"Document metadata is also set as attributes of the document tag. The "
+"following metadata fields are supported:"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:85
+#, no-c-format
+msgid "title"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:92
+#, no-c-format
+msgid "subject"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:99
+#, no-c-format
+msgid "keywords"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:106
+#, no-c-format
+msgid "author"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:113
+#, no-c-format
+msgid "creator"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:125
+#, no-c-format
+msgid "Basic Text Elements"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:126
+#, no-c-format
+msgid ""
+"Useful documents will need to contain more than just text; however, the "
+"standard UI components are geared towards HTML generation and are not useful "
+"for generating PDF content. Instead, Seam provides a special UI components "
+"for generating suitable PDF content. Tags like <literal>&lt;p:image&gt;</"
+"literal> and <literal>&lt;p:paragraph&gt;</literal> are the basic "
+"foundations of simple documents. Tags like <literal>&lt;p:font&gt;</literal> "
+"provide style information to all the content surrounging them."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:129
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"&gt; \n"
+"    &lt;p:image alignment=\"right\" wrap=\"true\" resource=\"/logo.jpg\" /"
+"&gt;\n"
+"    &lt;p:font size=\"24\"&gt;\n"
+"        &lt;p:paragraph spacingAfter=\"50\"&gt;My First Document&lt;/p:"
+"paragraph&gt;\n"
+"    &lt;/p:font&gt;\n"
+"\n"
+"    &lt;p:paragraph alignment=\"justify\"&gt;\n"
+"        This is a simple document.  It isn't very fancy.\n"
+"    &lt;/p:paragraph&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:131
+#, no-c-format
+msgid "p:paragraph"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:132
+#, no-c-format
+msgid ""
+"Most uses of text should be sectioned into paragraphs so that text fragments "
+"can be flowed, formatted and styled in logical groups."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:137
+#, no-c-format
+msgid "firstLineIndent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:144 Itext.xml:836
+#, no-c-format
+msgid "extraParagraphSpace"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:151 Itext.xml:808
+#, no-c-format
+msgid "leading"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:158 Itext.xml:815
+#, no-c-format
+msgid "multipliedLeading"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:165 Itext.xml:344 Itext.xml:716
+#, no-c-format
+msgid "spacingBefore"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:167 Itext.xml:346 Itext.xml:718
+#, no-c-format
+msgid "The blank space to be inserted before the element."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:173 Itext.xml:352 Itext.xml:724
+#, no-c-format
+msgid "spacingAfter"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:175 Itext.xml:354 Itext.xml:726
+#, no-c-format
+msgid "The blank space to be inserted after the element."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:181 Itext.xml:330 Itext.xml:599
+#, no-c-format
+msgid "indentationLeft"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:188 Itext.xml:337 Itext.xml:607
+#, no-c-format
+msgid "indentationRight"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:195 Itext.xml:753
+#, no-c-format
+msgid "keepTogether"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:205
+#, no-c-format
+msgid "p:text"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:206
+#, no-c-format
+msgid ""
+"The <literal>text</literal> tag allows text fragments to be produced from "
+"application data using normal JSF converter mechanisms. It is very similar "
+"to the <literal>outputText</literal> tag used when rendering HTML documents. "
+"Here is an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:209
+#, no-c-format
+msgid ""
+"&lt;p:paragraph&gt;\n"
+"    The item costs &lt;p:text value=\"#{product.price}\"&gt;\n"
+"        &lt;f:convertNumber type=\"currency\" currencySymbol=\"&#36;\"/&gt;\n"
+"    &lt;/p:text&gt;\n"
+"&lt;/p:paragraph&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:212
+#, no-c-format
+msgid "value"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:214
+#, no-c-format
+msgid ""
+"The value to be displayed. This will typically be a value binding expression."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:223
+#, no-c-format
+msgid "p:font"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:224
+#, no-c-format
+msgid "Font declarations have no direct"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:229
+#, no-c-format
+msgid "familyName"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:231
+#, no-c-format
+msgid ""
+"The font family. One of: <literal>COURIER</literal>, <literal>HELVETICA</"
+"literal>, <literal>TIMES-ROMAN</literal>, <literal>SYMBOL</literal> or "
+"<literal>ZAPFDINGBATS</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:237
+#, no-c-format
+msgid "size"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:239
+#, no-c-format
+msgid "The point size of the font."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:245 Itext.xml:534
+#, no-c-format
+msgid "style"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:247
+#, no-c-format
+msgid ""
+"The font styles. Any combination of : <literal>NORMAL</literal>, "
+"<literal>BOLD</literal>, <literal>ITALIC</literal>, <literal>OBLIQUE</"
+"literal>, <literal>UNDERLINE</literal>, <literal>LINE-THROUGH</literal>"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:256
+#, no-c-format
+msgid "p:newPage"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:257
+#, no-c-format
+msgid "<literal>p:newPage</literal> inserts a page break."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:263
+#, no-c-format
+msgid "p:image"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:264
+#, no-c-format
+msgid ""
+"<literal>p:image</literal> inserts an image into the document. Images can be "
+"be loaded from the classpath or from the web application context using the "
+"<literal>resource</literal> attribute."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:267
+#, no-c-format
+msgid "&lt;p:image resource=\"/jboss.jpg\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:268
+#, no-c-format
+msgid ""
+"Resources can also be dynamically generated by application code. The "
+"<literal>imageData</literal> attribute can specify a value binding "
+"expression whose value is a <literal>java.awt.Image</literal> object."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:271
+#, no-c-format
+msgid "&lt;p:image imageData=\"#{images.chart}\" /&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:274
+#, no-c-format
+msgid "resource"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:276
+#, no-c-format
+msgid ""
+"The location of the image resource to be included. Resources should be "
+"relative to the document root of the web application."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:282
+#, no-c-format
+msgid "imageData"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:284
+#, no-c-format
+msgid "A method expression binding to an application-generated image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:290 Itext.xml:913
+#, no-c-format
+msgid "rotation"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:292
+#, no-c-format
+msgid "The rotation of the image in degrees."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:298
+#, no-c-format
+msgid "height"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:300
+#, no-c-format
+msgid "The height of the image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:306
+#, no-c-format
+msgid "width"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:308
+#, no-c-format
+msgid "The width of the image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:314 Itext.xml:441 Itext.xml:591
+#, no-c-format
+msgid "alignment"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:316
+#, no-c-format
+msgid ""
+"The alignment of the image. (see <xref linkend=\"Document_Constants-"
+"Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:322
+#, no-c-format
+msgid "<literal>alt</literal>"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:324
+#, no-c-format
+msgid "Alternative text representation for the image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:360 Itext.xml:672
+#, no-c-format
+msgid "widthPercentage"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:367
+#, no-c-format
+msgid "initialRotation"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:374
+#, no-c-format
+msgid "<literal>dpi</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:381
+#, no-c-format
+msgid "scalePercent"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:383
+#, no-c-format
+msgid ""
+"The scaling factor (as a percentage) to use for the image. This can be "
+"expressed as a single percentage value or as two percentage values "
+"representing separate x and y scaling percentages."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:389
+#, no-c-format
+msgid "wrap"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:396
+#, no-c-format
+msgid "underlying"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:406
+#, no-c-format
+msgid "p:anchor"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:407
+#, no-c-format
+msgid ""
+"<literal>p:anchor</literal> defines clickable links from a document. It "
+"supports the following attributes:"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:412
+#, no-c-format
+msgid "name"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:414
+#, no-c-format
+msgid "The name of an in-document anchor destination."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:420
+#, no-c-format
+msgid "reference"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:422
+#, no-c-format
+msgid ""
+"The destination the link refers to. Links to other points in the document "
+"should begin with a \"#\". For example, \"#link1\" to refer to an anchor "
+"postion with a <literal>name</literal> of <literal>link1</literal>. Links "
+"may also be a full URL to point to a resource outside of the document."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:433
+#, no-c-format
+msgid "Headers and Footers"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:435
+#, no-c-format
+msgid "p:header and p:footer"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:436
+#, no-c-format
+msgid ""
+"The <literal>p:header</literal> and <literal>p:footer</literal> components "
+"provide the ability to place header and footer text on each page of a "
+"generated document, with the exception of the first page. Header and footer "
+"declarations should appear near the top of a document."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:443
+#, no-c-format
+msgid ""
+"The alignment of the header/footer box section. (see <xref linkend="
+"\"Document_Constants-Alignment_Values\"/> for alignment values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:449
+#, no-c-format
+msgid "backgroundColor"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:451
+#, no-c-format
+msgid ""
+"The background color of the header/footer box. (see <xref linkend="
+"\"Document_Constants-Color_Values\"/> for color values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:457
+#, no-c-format
+msgid "borderColor"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:459
+#, no-c-format
+msgid ""
+"The border color of the header/footer box. Individual border sides can be "
+"set using <literal>borderColorLeft</literal>, <literal>borderColorRight</"
+"literal>, <literal>borderColorTop</literal> and <literal>borderColorBottom</"
+"literal>.(see <xref linkend=\"Document_Constants-Color_Values\"/> for color "
+"values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:465
+#, no-c-format
+msgid "borderWidth"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:467
+#, no-c-format
+msgid ""
+"The width of the border. Inidvidual border sides can be specified using "
+"<literal>borderWidthLeft</literal>, <literal>borderWidthRight</literal>, "
+"<literal>borderWidthTop</literal> and <literal>borderWidthBottom</literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:476
+#, no-c-format
+msgid "p:pageNumber"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:477
+#, no-c-format
+msgid ""
+"The current page number can be placed inside of a header or footer using the "
+"<literal>p:pageNumber</literal> tag. The page number tag can only be used in "
+"the context of a header or footer and can only be used once."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:485
+#, no-c-format
+msgid "Chapters and Sections"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:486
+#, no-c-format
+msgid ""
+"If the generated document follows a book/article structure, the <literal>p:"
+"chapter</literal> and <literal>p:section</literal> tags can be used to "
+"provide the necessary structure. Sections can only be used inside of "
+"chapters, but they may be nested arbitrarily deep. Most PDF viewers provide "
+"easy navigation between chapters and sections in a document."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:489
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"\n"
+"            title=\"Hello\"&gt;\n"
+"\n"
+"   &lt;p:chapter number=\"1\"&gt;\n"
+"      &lt;p:title&gt;&lt;p:paragraph&gt;Hello&lt;/p:paragraph&gt;&lt;/p:"
+"title&gt;\n"
+"      &lt;p:paragraph&gt;Hello #{user.name}!&lt;/p:paragraph&gt;\n"
+"   &lt;/p:chapter&gt;\n"
+"\n"
+"   &lt;p:chapter number=\"2\"&gt;\n"
+"      &lt;p:title&gt;&lt;p:paragraph&gt;Goodbye&lt;/p:paragraph&gt;&lt;/p:"
+"title&gt;\n"
+"      &lt;p:paragraph&gt;Goodbye #{user.name}.&lt;/p:paragraph&gt;\n"
+"   &lt;/p:chapter&gt;\n"
+"\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:491
+#, no-c-format
+msgid "p:chapter and p:section"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:494
+#, no-c-format
+msgid "number"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:496
+#, no-c-format
+msgid "The chapter number. Every chapter should be assigned a chapter number."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:502
+#, no-c-format
+msgid "numberDepth"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:504
+#, no-c-format
+msgid ""
+"The depth of numbering for section. All sections are numbered relative to "
+"their surrounding chapter/sections. The fourth section of of the first "
+"section of chapter three would be section 3.1.4, if displayed at the default "
+"number depth of three. To omit the chapter number, a number depth of 2 "
+"should be used. In that case, the section number would be displayed as 1.4."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:513
+#, no-c-format
+msgid "p:title"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:514
+#, no-c-format
+msgid ""
+"Any chapter or section can contain a <literal>p:title</literal>. The title "
+"will be displayed next to the chapter/section number. The body of the title "
+"may contain raw text or may be a <literal>p:paragraph</literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:522
+#, no-c-format
+msgid "Lists"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:523
+#, no-c-format
+msgid ""
+"List structures can be displayed using the <literal>p:list</literal> and "
+"<literal>p:listItem</literal> tags. Lists may contain arbitrarily-nested "
+"sublists. List items may not be used outside of a list. he following "
+"document uses the <literal>ui:repeat</literal> tag to to display a list of "
+"values retrieved from a Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:526
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"\n"
+"            xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"            title=\"Hello\"&gt;\n"
+"   &lt;p:list style=\"numbered\"&gt;\n"
+"      &lt;ui:repeat value=\"#{documents}\" var=\"doc\"&gt;\n"
+"         &lt;p:listItem&gt;#{doc.name}&lt;/p:listItem&gt;\n"
+"      &lt;/ui:repeat&gt;\n"
+"   &lt;/p:list&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:528
+#, no-c-format
+msgid "p:list"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:529
+#, no-c-format
+msgid "<literal>p:list</literal> supports the following attributes:"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:536
+#, no-c-format
+msgid ""
+"The ordering/bulleting style of list. One of: <literal>NUMBERED</literal>, "
+"<literal>LETTERED</literal>, <literal>GREEK</literal>, <literal>ROMAN</"
+"literal>, <literal>ZAPFDINGBATS</literal>, <literal>ZAPFDINGBATS_NUMBER</"
+"literal>. If no style is given, the list items are bulleted."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:542 Itext.xml:615
+#, no-c-format
+msgid "listSymbol"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:544
+#, no-c-format
+msgid "For bulleted lists, specifies the bullet symbol."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:550 Itext.xml:822
+#, no-c-format
+msgid "indent"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:552
+#, no-c-format
+msgid "The indentation level of the list."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:558
+#, no-c-format
+msgid "lowerCase"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:560
+#, no-c-format
+msgid ""
+"For list styles using letters, indicates whether the letters should be lower "
+"case."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:566
+#, no-c-format
+msgid "charNumber"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:568
+#, no-c-format
+msgid "For ZAPFDINGBATS, indicates the character code of the bullet character."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:574
+#, no-c-format
+msgid "numberType"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:576
+#, no-c-format
+msgid "For ZAPFDINGBATS_NUMBER, indicates the numbering style."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:585
+#, no-c-format
+msgid "p:listItem"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:586
+#, no-c-format
+msgid "<literal>p:listItem</literal> supports the following attributes:"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:593
+#, no-c-format
+msgid ""
+"The alignment of the list item. (See <xref linkend=\"Document_Constants-"
+"Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:601
+#, no-c-format
+msgid "The left indentation amount."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:609
+#, no-c-format
+msgid "The right indentation amount."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:617
+#, no-c-format
+msgid "Overrides the default list symbol for this list item."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:628
+#, no-c-format
+msgid "Tables"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:629
+#, no-c-format
+msgid ""
+"Table structures can be created using the <literal>p:table</literal> and "
+"<literal>p:cell</literal> tags. Unlike many table structures, there is no "
+"explicit row declaration. If a table has 3 columns, then every 3 cells will "
+"automatically form a row. Header and footer rows can be declared, and the "
+"headers and footers will be repeated in the event a table structure spans "
+"multiple pages."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:632
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"   \n"
+"            xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"            title=\"Hello\"&gt;   \n"
+"   &lt;p:table columns=\"3\" headerRows=\"1\"&gt;\n"
+"      &lt;p:cell&gt;name&lt;/p:cell&gt;\n"
+"      &lt;p:cell&gt;owner&lt;/p:cell&gt;\n"
+"      &lt;p:cell&gt;size&lt;/p:cell&gt;\n"
+"      &lt;ui:repeat value=\"#{documents}\" var=\"doc\"&gt;\n"
+"         &lt;p:cell&gt;#{doc.name}&lt;/p:cell&gt;\n"
+"         &lt;p:cell&gt;#{doc.user.name}&lt;/p:cell&gt;\n"
+"         &lt;p:cell&gt;#{doc.size}&lt;/p:cell&gt;\n"
+"      &lt;/ui:repeat&gt;\n"
+"   &lt;/p:table&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:634
+#, no-c-format
+msgid "p:table"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:635
+#, no-c-format
+msgid "<literal>p:table</literal> supports the following attributes."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:640
+#, no-c-format
+msgid "columns"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:642
+#, no-c-format
+msgid "The number of columns (cells) that make up a table row."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:648
+#, no-c-format
+msgid "widths"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:650
+#, no-c-format
+msgid ""
+"The relative widths of each column. There should be one value for each "
+"column. For example: widths=\"2 1 1\" would indicate that there are 3 "
+"columns and the first column should be twice the size of the second and "
+"third column."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:656
+#, no-c-format
+msgid "headerRows"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:658
+#, no-c-format
+msgid ""
+"The initial number of rows which are considered to be headers or footer rows "
+"and should be repeated if the table spans multiple pages."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:664
+#, no-c-format
+msgid "footerRows"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:666
+#, no-c-format
+msgid ""
+"The number of rows that are considered to be footer rows. This value is "
+"subtracted from the <literal>headerRows</literal> value. If document has 2 "
+"rows which make up the header and one row that makes up the footer, "
+"<literal>headerRows</literal> should be set to 3 and <literal>footerRows</"
+"literal> should be set to 1"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:674
+#, no-c-format
+msgid "The percentage of the page width that the table spans."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:680 Itext.xml:777
+#, no-c-format
+msgid "horizontalAlignment"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:682
+#, no-c-format
+msgid ""
+"The horizontal alignment of the table. (See <xref linkend="
+"\"Document_Constants-Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:688
+#, no-c-format
+msgid "skipFirstHeader"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:695 Itext.xml:885
+#, no-c-format
+msgid "runDirection"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:702
+#, no-c-format
+msgid "lockedWidth"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:709
+#, no-c-format
+msgid "splitRows"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:732
+#, no-c-format
+msgid "extendLastRow"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:739
+#, no-c-format
+msgid "headersInEvent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:746
+#, no-c-format
+msgid "splitLate"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:763
+#, no-c-format
+msgid "p:cell"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:764
+#, no-c-format
+msgid "<literal>p:cell</literal> supports the following attributes."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:769
+#, no-c-format
+msgid "colspan"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:771
+#, no-c-format
+msgid ""
+"Cells can span more than one column by declaring a <literal>colspan</"
+"literal> greater than 1. Tables do not have the ability to span across "
+"multiple rows."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:779
+#, no-c-format
+msgid ""
+"The horizontal alignment of the cell. (see <xref linkend="
+"\"Document_Constants-Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:785 Itext.xml:829
+#, no-c-format
+msgid "verticalAlignment"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:787
+#, no-c-format
+msgid ""
+"The vertical alignment of the cell. (see <xref linkend=\"Document_Constants-"
+"Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:793
+#, no-c-format
+msgid "padding"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:795
+#, no-c-format
+msgid ""
+"Padding on a given side can also be specified using <literal>paddingLeft</"
+"literal>, <literal>paddingRight</literal>, <literal>paddingTop</literal> and "
+"<literal>paddingBottom</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:801
+#, no-c-format
+msgid "useBorderPadding"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:843
+#, no-c-format
+msgid "fixedHeight"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:850
+#, no-c-format
+msgid "noWrap"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:857
+#, no-c-format
+msgid "minimumHeight"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:864
+#, no-c-format
+msgid "followingIndent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:871
+#, no-c-format
+msgid "rightIndent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:878
+#, no-c-format
+msgid "spaceCharRatio"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:892
+#, no-c-format
+msgid "arabicOptions"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:899
+#, no-c-format
+msgid "useAscender"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:906
+#, no-c-format
+msgid "grayFill"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:925
+#, no-c-format
+msgid "Document Constants"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:926
+#, no-c-format
+msgid ""
+"This section documents some of the constants shared by attributes on "
+"multiple tags."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:930
+#, no-c-format
+msgid "Color Values"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:931
+#, no-c-format
+msgid ""
+"Seam documents do not yet support a full color specification. Currently, "
+"only named colors are supported. They are: <literal>white</literal>, "
+"<literal>gray</literal>, <literal>lightgray</literal>, <literal>darkgray</"
+"literal>, <literal>black</literal>, <literal>red</literal>, <literal>pink</"
+"literal>, <literal>yellow</literal>, <literal>green</literal>, "
+"<literal>magenta</literal>, <literal>cyan</literal> and <literal>blue</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:937
+#, no-c-format
+msgid "Alignment Values"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:938
+#, no-c-format
+msgid ""
+"Where alignment values are used, the Seam PDF supports the following "
+"horizontal alignment values: <literal>left</literal>, <literal>right</"
+"literal>, <literal>center</literal>, <literal>justify</literal> and "
+"<literal>justifyall</literal>. The vertical alignment values are "
+"<literal>top</literal>, <literal>middle</literal>, <literal>bottom</"
+"literal>, and <literal>baseline</literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:946
+#, no-c-format
+msgid "Configuring iText"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:947
+#, no-c-format
+msgid ""
+"Document generation works out of the box with no additional configuration "
+"needed. However, there are a few points of configuration that are needed for "
+"more serious applications."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:950
+#, no-c-format
+msgid ""
+"The default implementation serves PDF documents from a generic URL, "
+"<literal>/seam-doc.seam</literal>. Many browsers (and users) would prefer to "
+"see URLs that contain the actual PDF name like <literal>/myDocument.pdf</"
+"literal>. This capability requires some configuration. To serve PDF files, "
+"all *.pdf resources should be mapped to the Seam Servlet Filter and to the "
+"DocumentStoreServlet:"
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:953
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.servlet.SeamServletFilter&lt;/filter-"
+"class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;\n"
+"\n"
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.pdf.DocumentStoreServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"\n"
+"&lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:954
+#, no-c-format
+msgid ""
+"The <literal>useExtensions</literal> option on the document store component "
+"completes the functionality by instructing the document store to generate "
+"URLs with the correct filename extension for the document type being "
+"generated."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:957
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pdf=\"http://jboss.com/products/seam/pdf\"&gt;\n"
+"    &lt;pdf:documentStore useExtensions=\"true\" /&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:958
+#, no-c-format
+msgid ""
+"Generated documents are stored in conversation scope and will expire when "
+"the conversation ends. At that point, references to the document will be "
+"invalid. To You can specify a default view to be shown when a document does "
+"not exist using the <literal>errorPage</literal> property of the "
+"documentStore."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:961
+#, no-c-format
+msgid ""
+"&lt;pdf:documentStore useExtensions=\"true\" errorPage=\"/pdfMissing.seam\" /"
+"&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:965
+#, no-c-format
+msgid "iText links"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:966
+#, no-c-format
+msgid "For further information on iText, see:"
+msgstr ""
+
+#. Tag: ulink
+#: Itext.xml:973
+#, no-c-format
+msgid "iText Home Page"
+msgstr ""
+
+#. Tag: ulink
+#: Itext.xml:978
+#, no-c-format
+msgid "iText in Action"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Jbpm.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Jbpm.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Jbpm.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1189 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Jbpm.xml:10
+#, no-c-format
+msgid "Pageflows and business processes"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:11
+#, no-c-format
+msgid ""
+"JBoss jBPM is a business process management engine for any Java SE or EE "
+"environment. jBPM lets you represent a business process or user interaction "
+"as a graph of nodes representing wait states, decisions, tasks, web pages, "
+"etc. The graph is defined using a simple, very readable, XML dialect called "
+"jPDL, and may be edited and visualised graphically using an eclipse plugin. "
+"jPDL is an extensible language, and is suitable for a range of problems, "
+"from defining web application page flow, to traditional workflow management, "
+"all the way up to orchestration of services in a SOA environment."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:14
+#, no-c-format
+msgid "Seam applications use jBPM for two different problems:"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:20
+#, no-c-format
+msgid ""
+"Defining the pageflow involved in complex user interactions. A jPDL process "
+"definition defines the page flow for a single conversation. A Seam "
+"conversation is considered to be a relatively short-running interaction with "
+"a single user."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:25
+#, no-c-format
+msgid ""
+"Defining the overarching business process. The business process may span "
+"multiple conversations with multiple users. Its state is persistent in the "
+"jBPM database, so it is considered long-running. Coordination of the "
+"activities of multiple users is a much more complex problem than scripting "
+"an interaction with a single user, so jBPM offers sophisticated facilities "
+"for task management and dealing with multiple concurrent paths of execution."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:31
+#, no-c-format
+msgid ""
+"Don't get these two things confused ! They operate at very different levels "
+"or granularity. <emphasis>Pageflow</emphasis>, <emphasis>conversation</"
+"emphasis> and <emphasis>task</emphasis> all refer to a single interaction "
+"with a single user. A business process spans many tasks. Futhermore, the two "
+"applications of jBPM are totally orthogonal. You can use them together or "
+"independently or not at all."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:34
+#, no-c-format
+msgid ""
+"You don't have to know jDPL to use Seam. If you're perfectly happy defining "
+"pageflow using JSF or Seam navigation rules, and if your application is more "
+"data-driven that process-driven, you probably don't need jBPM. But we're "
+"finding that thinking of user interaction in terms of a well-defined "
+"graphical representation is helping us build more robust applications."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:37
+#, no-c-format
+msgid ""
+"Please refer to the jBPM documentation for a more thorough overview of the "
+"sophisticated features that jBPM provides for managing complex business "
+"processes."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:41
+#, no-c-format
+msgid "Pageflow in Seam"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:42
+#, no-c-format
+msgid "There are two ways to define pageflow in Seam:"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:47
+#, no-c-format
+msgid ""
+"Using JSF or Seam navigation rules - the <emphasis>stateless navigation "
+"model</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:52
+#, no-c-format
+msgid "Using jPDL - the <emphasis>stateful navigation model</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:57
+#, no-c-format
+msgid ""
+"Very simple applications will only need the stateless navigation model. Very "
+"complex applications will use both models in different places. Each model "
+"has its strengths and weaknesses!"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:60
+#, no-c-format
+msgid ""
+"In practice, both navigation models have their place, and you'll quickly "
+"learn to recognize when to prefer one model over the other."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:64
+#, no-c-format
+msgid "The two navigation models"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:65
+#, no-c-format
+msgid ""
+"The stateless model defines a mapping from a set of named, logical outcomes "
+"of an event directly to the resulting page of the view. The navigation rules "
+"are entirely oblivious to any state held by the application other than what "
+"page was the source of the event. This means that your action listener "
+"methods must sometimes make decisions about the page flow, since only they "
+"have access to the current state of the application."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:68
+#, no-c-format
+msgid "Here is an example page flow definition using JSF navigation rules:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:71
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"    &lt;from-view-id&gt;/numberGuess.jsp&lt;/from-view-id&gt;\n"
+"        \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;guess&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/numberGuess.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;win&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/win.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"        \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;lose&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/lose.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:72
+#, no-c-format
+msgid ""
+"Here is the same example page flow definition using Seam navigation rules:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:75
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/numberGuess.jsp\"&gt;\n"
+"        \n"
+"    &lt;navigation&gt;\n"
+"        &lt;rule if-outcome=\"guess\"&gt;\n"
+"            &lt;redirect view-id=\"/numberGuess.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"        &lt;rule if-outcome=\"win\"&gt;\n"
+"            &lt;redirect view-id=\"/win.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"        &lt;rule if-outcome=\"lose\"&gt;\n"
+"            &lt;redirect view-id=\"/lose.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:76
+#, no-c-format
+msgid ""
+"If you find navigation rules overly verbose, you can return view ids "
+"directly from your action listener methods:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:79
+#, no-c-format
+msgid ""
+"public String guess() {\n"
+"    if (guess==randomNumber) return \"/win.jsp\";\n"
+"    if (++guessCount==maxGuesses) return \"/lose.jsp\";\n"
+"    return null;\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:80
+#, no-c-format
+msgid ""
+"Note that this results in a redirect. You can even specify parameters to be "
+"used in the redirect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:83
+#, no-c-format
+msgid ""
+"public String search() {\n"
+"    return \"/searchResults.jsp?searchPattern=#{searchAction.searchPattern}"
+"\";\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:84
+#, no-c-format
+msgid ""
+"The stateful model defines a set of transitions between a set of named, "
+"logical application states. In this model, it is possible to express the "
+"flow of any user interaction entirely in the jPDL pageflow definition, and "
+"write action listener methods that are completely unaware of the flow of the "
+"interaction."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:87
+#, no-c-format
+msgid "Here is an example page flow definition using jPDL:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:90
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"numberGuess\"&gt;\n"
+"    \n"
+"   &lt;start-page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"      &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"      &lt;/transition&gt;\n"
+"   &lt;/start-page&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess."
+"correctGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateRemainingGuesses\" expression=\"#{numberGuess."
+"lastGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"lose\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"displayGuess\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"lose\" view-id=\"/lose.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:99
+#, no-c-format
+msgid "There are two things we notice immediately here:"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:104
+#, no-c-format
+msgid ""
+"The JSF/Seam navigation rules are <emphasis>much</emphasis> simpler. "
+"(However, this obscures the fact that the underlying Java code is more "
+"complex.)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:109
+#, no-c-format
+msgid ""
+"The jPDL makes the user interaction immediately understandable, without us "
+"needing to even look at the JSP or Java code."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:114
+#, no-c-format
+msgid ""
+"In addition, the stateful model is more <emphasis>constrained</emphasis>. "
+"For each logical state (each step in the page flow), there are a constrained "
+"set of possible transitions to other states. The stateless model is an "
+"<emphasis>ad hoc</emphasis> model which is suitable to relatively "
+"unconstrained, freeform navigation where the user decides where he/she wants "
+"to go next, not the application."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:117
+#, no-c-format
+msgid ""
+"The stateful/stateless navigation distinction is quite similar to the "
+"traditional view of modal/modeless interaction. Now, Seam applications are "
+"not usually modal in the simple sense of the word - indeed, avoiding "
+"application modal behavior is one of the main reasons for having "
+"conversations! However, Seam applications can be, and often are, modal at "
+"the level of a particular conversation. It is well-known that modal behavior "
+"is something to avoid as much as possible; it is very difficult to predict "
+"the order in which your users are going to want to do things! However, there "
+"is no doubt that the stateful model has its place."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:120
+#, no-c-format
+msgid ""
+"The biggest contrast between the two models is the back-button behavior."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:126
+#, no-c-format
+msgid "Seam and the back button"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:127
+#, no-c-format
+msgid ""
+"When JSF or Seam navigation rules are used, Seam lets the user freely "
+"navigate via the back, forward and refresh buttons. It is the responsibility "
+"of the application to ensure that conversational state remains internally "
+"consistent when this occurs. Experience with the combination of web "
+"application frameworks like Struts or WebWork - that do not support a "
+"conversational model - and stateless component models like EJB stateless "
+"session beans or the Spring framework has taught many developers that this "
+"is close to impossible to do! However, our experience is that in the context "
+"of Seam, where there is a well-defined conversational model, backed by "
+"stateful session beans, it is actually quite straightforward. Usually it is "
+"as simple as combining the use of <literal>no-conversation-view-id</literal> "
+"with null checks at the beginning of action listener methods. We consider "
+"support for freeform navigation to be almost always desirable."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:130
+#, no-c-format
+msgid ""
+"In this case, the <literal>no-conversation-view-id</literal> declaration "
+"goes in <literal>pages.xml</literal>. It tells Seam to redirect to a "
+"different page if a request originates from a page rendered during a "
+"conversation, and that conversation no longer exists:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:133
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/checkout.xhtml\" \n"
+"        no-conversation-view-id=\"/main.xhtml\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:134
+#, no-c-format
+msgid ""
+"On the other hand, in the stateful model, backbuttoning is interpreted as an "
+"undefined transition back to a previous state. Since the stateful model "
+"enforces a defined set of transitions from the current state, back buttoning "
+"is be default disallowed in the stateful model! Seam transparently detects "
+"the use of the back button, and blocks any attempt to perform an action from "
+"a previous, \"stale\" page, and simply redirects the user to the \"current\" "
+"page (and displays a faces message). Whether you consider this a feature or "
+"a limitation of the stateful model depends upon your point of view: as an "
+"application developer, it is a feature; as a user, it might be frustrating! "
+"You can enable backbutton navigation from a particular page node by setting "
+"<literal>back=\"enabled\"</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:137
+#, no-c-format
+msgid ""
+"&lt;page name=\"checkout\" \n"
+"        view-id=\"/checkout.xhtml\" \n"
+"        back=\"enabled\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"checkout\"/&gt;\n"
+"    &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:138
+#, no-c-format
+msgid ""
+"This allows backbuttoning <emphasis>from</emphasis> the <literal>checkout</"
+"literal> state to <emphasis>any previous state!</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:141
+#, no-c-format
+msgid ""
+"Of course, we still need to define what happens if a request originates from "
+"a page rendered during a pageflow, and the conversation with the pageflow no "
+"longer exists. In this case, the <literal>no-conversation-view-id</literal> "
+"declaration goes into the pageflow definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:144
+#, no-c-format
+msgid ""
+"&lt;page name=\"checkout\" \n"
+"        view-id=\"/checkout.xhtml\" \n"
+"        back=\"enabled\" \n"
+"        no-conversation-view-id=\"/main.xhtml\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"checkout\"/&gt;\n"
+"    &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:151
+#, no-c-format
+msgid "Using jPDL pageflows"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:153
+#, no-c-format
+msgid "Installing pageflows"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:154
+#, no-c-format
+msgid ""
+"We need to install the Seam jBPM-related components, and tell them where to "
+"find our pageflow definition. We can specify this Seam configuration in "
+"<literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:157
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:pageflow-definitions&gt;\n"
+"        &lt;value&gt;pageflow.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:pageflow-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:158
+#, no-c-format
+msgid ""
+"The first line installs jBPM, the second points to a jPDL-based pageflow "
+"definition."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:164
+#, no-c-format
+msgid "Starting pageflows"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:165
+#, no-c-format
+msgid ""
+"We \"start\" a jPDL-based pageflow by specifying the name of the process "
+"definition using a <literal>@Begin</literal>, <literal>@BeginTask</literal> "
+"or <literal>@StartTask</literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:168
+#, no-c-format
+msgid ""
+"@Begin(pageflow=\"numberguess\")\n"
+"public void begin() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:169
+#, no-c-format
+msgid "Alternatively we can start a pageflow using pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:172
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"        &lt;begin-conversation pageflow=\"numberguess\"/&gt;\n"
+"    &lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:173
+#, no-c-format
+msgid ""
+"If we are beginning the pageflow during the <literal>RENDER_RESPONSE</"
+"literal> phase&mdash;during a <literal>@Factory</literal> or "
+"<literal>@Create</literal> method, for example&mdash;we consider ourselves "
+"to be already at the page being rendered, and use a <literal>&lt;start-"
+"page&gt;</literal> node as the first node in the pageflow, as in the example "
+"above."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:176
+#, no-c-format
+msgid ""
+"But if the pageflow is begun as the result of an action listener invocation, "
+"the outcome of the action listener determines which is the first page to be "
+"rendered. In this case, we use a <literal>&lt;start-state&gt;</literal> as "
+"the first node in the pageflow, and declare a transition for each possible "
+"outcome:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:179
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"viewEditDocument\"&gt;\n"
+"\n"
+"    &lt;start-state name=\"start\"&gt;\n"
+"        &lt;transition name=\"documentFound\" to=\"displayDocument\"/&gt;\n"
+"        &lt;transition name=\"documentNotFound\" to=\"notFound\"/&gt;\n"
+"    &lt;/start-state&gt;\n"
+"    \n"
+"    &lt;page name=\"displayDocument\" view-id=\"/document.jsp\"&gt;\n"
+"        &lt;transition name=\"edit\" to=\"editDocument\"/&gt;\n"
+"        &lt;transition name=\"done\" to=\"main\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"    \n"
+"    ...\n"
+"    \n"
+"    &lt;page name=\"notFound\" view-id=\"/404.jsp\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"    &lt;/page&gt;\n"
+"    \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:183
+#, no-c-format
+msgid "Page nodes and transitions"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:184
+#, no-c-format
+msgid ""
+"Each <literal>&lt;page&gt;</literal> node represents a state where the "
+"system is waiting for user input:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:187
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"        &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:188
+#, no-c-format
+msgid ""
+"The <literal>view-id</literal> is the JSF view id. The <literal>&lt;redirect/"
+"&gt;</literal> element has the same effect as <literal>&lt;redirect/&gt;</"
+"literal> in a JSF navigation rule: namely, a post-then-redirect behavior, to "
+"overcome problems with the browser's refresh button. (Note that Seam "
+"propagates conversation contexts over these browser redirects. So there is "
+"no need for a Ruby on Rails style \"flash\" construct in Seam!)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:191
+#, no-c-format
+msgid ""
+"The transition name is the name of a JSF outcome triggered by clicking a "
+"command button or command link in <literal>numberGuess.jsp</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:194
+#, no-c-format
+msgid ""
+"&lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"guess\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:195
+#, no-c-format
+msgid ""
+"When the transition is triggered by clicking this button, jBPM will activate "
+"the transition action by calling the <literal>guess()</literal> method of "
+"the <literal>numberGuess</literal> component. Notice that the syntax used "
+"for specifying actions in the jPDL is just a familiar JSF EL expression, and "
+"that the transition action handler is just a method of a Seam component in "
+"the current Seam contexts. So we have exactly the same event model for jBPM "
+"events that we already have for JSF events! (The <emphasis>One Kind of "
+"Stuff</emphasis> principle.)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:198
+#, no-c-format
+msgid ""
+"In the case of a null outcome (for example, a command button with no "
+"<literal>action</literal> defined), Seam will signal the transition with no "
+"name if one exists, or else simply redisplay the page if all transitions "
+"have names. So we could slightly simplify our example pageflow and this "
+"button:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:201
+#, no-c-format
+msgid "&lt;h:commandButton type=\"submit\" value=\"Guess\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:202
+#, no-c-format
+msgid "Would fire the following un-named transition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:205
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"evaluateGuess\"&gt;\n"
+"        &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:206
+#, no-c-format
+msgid ""
+"It is even possible to have the button call an action method, in which case "
+"the action outcome will determine the transition to be taken:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:209
+#, no-c-format
+msgid ""
+"&lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"#{numberGuess."
+"guess}\"/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:210
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;transition name=\"correctGuess\" to=\"win\"/&gt;\n"
+"    &lt;transition name=\"incorrectGuess\" to=\"evaluateGuess\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:211
+#, no-c-format
+msgid ""
+"However, this is considered an inferior style, since it moves responsibility "
+"for controlling the flow out of the pageflow definition and back into the "
+"other components. It is much better to centralize this concern in the "
+"pageflow itself."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:217
+#, no-c-format
+msgid "Controlling the flow"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:218
+#, no-c-format
+msgid ""
+"Usually, we don't need the more powerful features of jPDL when defining "
+"pageflows. We do need the <literal>&lt;decision&gt;</literal> node, however:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:221
+#, no-c-format
+msgid ""
+"&lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess.correctGuess}"
+"\"&gt;\n"
+"    &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"    &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"&lt;/decision&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:222
+#, no-c-format
+msgid ""
+"A decision is made by evaluating a JSF EL expression in the Seam contexts."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:228
+#, no-c-format
+msgid "Ending the flow"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:229
+#, no-c-format
+msgid ""
+"We end the conversation using <literal>&lt;end-conversation&gt;</literal> or "
+"<literal>@End</literal>. (In fact, for readability, use of <emphasis>both</"
+"emphasis> is encouraged.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:232
+#, no-c-format
+msgid ""
+"&lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;end-conversation/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:233
+#, no-c-format
+msgid ""
+"Optionally, we can end a task, specify a jBPM <literal>transition</literal> "
+"name. In this case, Seam will signal the end of the current task in the "
+"overarching business process."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:236
+#, no-c-format
+msgid ""
+"&lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;end-task transition=\"success\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:242
+#, no-c-format
+msgid "Business process management in Seam"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:243
+#, no-c-format
+msgid ""
+"A business process is a well-defined set of tasks that must be performed by "
+"users or software systems according to well-defined rules about "
+"<emphasis>who</emphasis> can perform a task, and <emphasis>when</emphasis> "
+"it should be performed. Seam's jBPM integration makes it easy to display "
+"lists of tasks to users and let them manage their tasks. Seam also lets the "
+"application store state associated with the business process in the "
+"<literal>BUSINESS_PROCESS</literal> context, and have that state made "
+"persistent via jBPM variables."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:246
+#, no-c-format
+msgid ""
+"A simple business process definition looks much the same as a page flow "
+"definition (<emphasis>One Kind of Stuff</emphasis>), except that instead of "
+"<literal>&lt;page&gt;</literal> nodes, we have <literal>&lt;task-node&gt;</"
+"literal> nodes. In a long-running business process, the wait states are "
+"where the system is waiting for some user to log in and perform a task."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:249
+#, no-c-format
+msgid ""
+"&lt;process-definition name=\"todo\"&gt;\n"
+"   \n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"todo\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;task-node name=\"todo\"&gt;\n"
+"      &lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"         &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"      &lt;/task&gt;\n"
+"      &lt;transition to=\"done\"/&gt;\n"
+"   &lt;/task-node&gt;\n"
+"   \n"
+"   &lt;end-state name=\"done\"/&gt;\n"
+"   \n"
+"&lt;/process-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:260
+#, no-c-format
+msgid ""
+"It is perfectly possible that we might have both jPDL business process "
+"definitions and jPDL pageflow definitions in the same project. If so, the "
+"relationship between the two is that a single <literal>&lt;task&gt;</"
+"literal> in a business process corresponds to a whole pageflow <literal>&lt;"
+"pageflow-definition&gt;</literal>"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:265
+#, no-c-format
+msgid "Using jPDL business process definitions"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:267
+#, no-c-format
+msgid "Installing process definitions"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:268
+#, no-c-format
+msgid ""
+"We need to install jBPM, and tell it where to find the business process "
+"definitions:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:271
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;todo.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:275
+#, no-c-format
+msgid "Initializing actor ids"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:276
+#, no-c-format
+msgid ""
+"We always need to know what user is currently logged in. jBPM \"knows\" "
+"users by their <emphasis>actor id</emphasis> and <emphasis>group actor ids</"
+"emphasis>. We specify the current actor ids using the built in Seam "
+"component named <literal>actor</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:279
+#, no-c-format
+msgid ""
+"@In Actor actor;\n"
+"\n"
+"public String login() {\n"
+"    ...\n"
+"    actor.setId( user.getUserName() );\n"
+"    actor.getGroupActorIds().addAll( user.getGroupNames() );\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:283
+#, no-c-format
+msgid "Initiating a business process"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:284
+#, no-c-format
+msgid ""
+"To initiate a business process instance, we use the <literal>@CreateProcess</"
+"literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:287
+#, no-c-format
+msgid ""
+"@CreateProcess(definition=\"todo\")\n"
+"public void createTodo() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:288
+#, no-c-format
+msgid "Alternatively we can initiate a business process using pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:291
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;create-process definition=\"todo\" /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:295
+#, no-c-format
+msgid "Task assignment"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:296
+#, no-c-format
+msgid ""
+"When a process starts, task instances are created. These must be assigned to "
+"users or user groups. We can either hardcode our actor ids, or delegate to a "
+"Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:299
+#, no-c-format
+msgid ""
+"&lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"    &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"&lt;/task&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:300
+#, no-c-format
+msgid ""
+"In this case, we have simply assigned the task to the current user. We can "
+"also assign tasks to a pool:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:303
+#, no-c-format
+msgid ""
+"&lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"    &lt;assignment pooled-actors=\"employees\"/&gt;\n"
+"&lt;/task&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:307
+#, no-c-format
+msgid "Task lists"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:308
+#, no-c-format
+msgid ""
+"Several built-in Seam components make it easy to display task lists. The "
+"<literal>pooledTaskInstanceList</literal> is a list of pooled tasks that "
+"users may assign to themselves:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:311
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{pooledTaskInstanceList}\" var=\"task\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Description&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{task.description}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link action=\"#{pooledTask.assignToCurrentActor}\" value="
+"\"Assign\" taskInstance=\"#{task}\"/&gt;\n"
+"    &lt;/h:column&gt;            \n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:312
+#, no-c-format
+msgid ""
+"Note that instead of <literal>&lt;s:link&gt;</literal> we could have used a "
+"plain JSF <literal>&lt;h:commandLink&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:315
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"#{pooledTask.assignToCurrentActor}\"&gt; \n"
+"    &lt;f:param name=\"taskId\" value=\"#{task.id}\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:316
+#, no-c-format
+msgid ""
+"The <literal>pooledTask</literal> component is a built-in component that "
+"simply assigns the task to the current user."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:319
+#, no-c-format
+msgid ""
+"The <literal>taskInstanceListByType</literal> component includes tasks of a "
+"particular type that are assigned to the current user:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:322
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{taskInstanceListByType['todo']}\" var=\"task"
+"\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Description&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{task.description}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link action=\"#{todoList.start}\" value=\"Start Work\" "
+"taskInstance=\"#{task}\"/&gt;\n"
+"    &lt;/h:column&gt;            \n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:326
+#, no-c-format
+msgid "Performing a task"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:327
+#, no-c-format
+msgid ""
+"To begin work on a task, we use either <literal>@StartTask</literal> or "
+"<literal>@BeginTask</literal> on the listener method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:330
+#, no-c-format
+msgid ""
+"@StartTask\n"
+"public String start() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:331
+#, no-c-format
+msgid "Alternatively we can begin work on a task using pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:334
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;start-task /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:335
+#, no-c-format
+msgid ""
+"These annotations begin a special kind of conversation that has significance "
+"in terms of the overarching business process. Work done by this conversation "
+"has access to state held in the business process context."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:338
+#, no-c-format
+msgid ""
+"If we end the conversation using <literal>@EndTask</literal>, Seam will "
+"signal the completion of the task:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:341
+#, no-c-format
+msgid ""
+"@EndTask(transition=\"completed\")\n"
+"public String completed() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:342
+#, no-c-format
+msgid "Alternatively we can use pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:345
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;end-task transition=\"completed\" /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:346
+#, no-c-format
+msgid ""
+"(Alternatively, we could have used <literal>&lt;end-conversation&gt;</"
+"literal> as shown above.)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:349
+#, no-c-format
+msgid ""
+"At this point, jBPM takes over and continues executing the business process "
+"definition. (In more complex processes, several tasks might need to be "
+"completed before process execution can resume.)"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Jms.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Jms.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Jms.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,477 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Jms.xml:10
+#, no-c-format
+msgid "Asynchronicity and messaging"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:11
+#, no-c-format
+msgid ""
+"Seam makes it very easy to perform work asynchronously from a web request. "
+"When most people think of asynchronicity in Java EE, they think of using "
+"JMS. This is certainly one way to approach the problem in Seam, and is the "
+"right way when you have strict and well-defined quality of service "
+"requirements. Seam makes it easy to send and recieve JMS messages using Seam "
+"components."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:14
+#, no-c-format
+msgid ""
+"But for many usecases, JMS is overkill. Seam layers a simple asynchronous "
+"method and event facility over the EJB 3.0 timer service."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:17
+#, no-c-format
+msgid "Asynchronicity"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:18
+#, no-c-format
+msgid ""
+"Asynchronous events and method calls have the same quality of service "
+"expectations as the container's EJB timer service. If you're not familiar "
+"with the Timer service, don't worry, you don't need to interact with it "
+"directly if you want to use asynchronous methods in Seam."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:21
+#, no-c-format
+msgid ""
+"To use asynchronous methods and events, you need to add the following line "
+"to <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:24
+#, no-c-format
+msgid "&lt;core:dispatcher/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:25
+#, no-c-format
+msgid ""
+"Note that this functionality is not available in environments which do not "
+"support EJB 3.0."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:28
+#, no-c-format
+msgid "Asynchronous methods"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:29
+#, no-c-format
+msgid ""
+"In simplest form, an asynchronous call just lets a method call be processed "
+"asynchronously (in a different thread) from the caller. We usually use an "
+"asynchronous call when we want to return an immediate response to the "
+"client, and let some expensive work be processed in the background. This "
+"pattern works very well in applications which use AJAX, where the client can "
+"automatically poll the server for the result of the work."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:32
+#, no-c-format
+msgid ""
+"For EJB components, we annotate the local interface to specify that a method "
+"is processed asynchronously."
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:35
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public void processPayment(Payment payment);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:36
+#, no-c-format
+msgid ""
+"(For JavaBean components we can annotate the component implementation class "
+"if we like.)"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:39
+#, no-c-format
+msgid "The use of asynchronicity is transparent to the bean class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:42
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"paymentHandler\")\n"
+"public class PaymentHandlerBean implements PaymentHandler\n"
+"{\n"
+"    public void processPayment(Payment payment)\n"
+"    {\n"
+"        //do some work!\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:43
+#, no-c-format
+msgid "And also transparent to the client:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:46
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String pay()\n"
+"    {\n"
+"        paymentHandler.processPayment( new Payment(bill) );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:47
+#, no-c-format
+msgid ""
+"The asynchronous method is processed in a completely new event context and "
+"does not have access to the session or conversation context state of the "
+"caller. However, the business process context <emphasis>is</emphasis> "
+"propagated."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:50
+#, no-c-format
+msgid ""
+"Asynchronous method calls may be scheduled for later execution using the "
+"<literal>@Duration</literal>, <literal>@Expiration</literal> and "
+"<literal>@IntervalDuration</literal> annotations."
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:53
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public void processScheduledPayment(Payment payment, @Expiration Date "
+"date);\n"
+"\n"
+"    @Asynchronous\n"
+"    public void processRecurringPayment(Payment payment, @Expiration Date "
+"date, \n"
+"        @IntervalDuration Long interval)'\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:54
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String schedulePayment()\n"
+"    {\n"
+"        paymentHandler.processScheduledPayment( new Payment(bill), bill."
+"getDueDate() );\n"
+"        return \"success\";\n"
+"    }\n"
+"\n"
+"    public String scheduleRecurringPayment()\n"
+"    {\n"
+"        paymentHandler.processRecurringPayment( new Payment(bill), bill."
+"getDueDate(), ONE_MONTH );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:55
+#, no-c-format
+msgid ""
+"Both client and server may access the <literal>Timer</literal> object "
+"associated with the invocation."
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:58
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public Timer processScheduledPayment(Payment payment, @Expiration Date "
+"date);\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:59
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"paymentHandler\")\n"
+"public class PaymentHandlerBean implements PaymentHandler\n"
+"{\n"
+"    @In Timer timer;\n"
+"    \n"
+"    public Timer processScheduledPayment(Payment payment, @Expiration Date "
+"date)\n"
+"    {\n"
+"        //do some work!\n"
+"        \n"
+"        return timer; //note that return value is completely ignored\n"
+"    }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:60
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String schedulePayment()\n"
+"    {\n"
+"        Timer timer = paymentHandler.processScheduledPayment( new Payment"
+"(bill), bill.getDueDate() );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:61
+#, no-c-format
+msgid "Asynchronous methods cannot return any other value to the caller."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:64
+#, no-c-format
+msgid "Asynchronous events"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:65
+#, no-c-format
+msgid ""
+"Component-driven events may also be asynchronous. To raise an event for "
+"asynchronous processing, simply call the <literal>raiseAsynchronousEvent()</"
+"literal> methods of the <literal>Events</literal> class. To schedule a timed "
+"event, call one of the <literal>raiseTimedEvent()</literal> methods. "
+"Components may observe asynchronous events in the usual way, but remember "
+"that only the business process context is propagated to the asynchronous "
+"thread."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:68
+#, no-c-format
+msgid "Messaging in Seam"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:69
+#, no-c-format
+msgid ""
+"Seam makes it easy to send and receive JMS messages to and from Seam "
+"components."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:72
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:73
+#, no-c-format
+msgid ""
+"To configure Seam's infrastructure for sending JMS messages, you need to "
+"tell Seam about any topics and queues you want to send messages to, and also "
+"tell Seam where to find the <literal>QueueConnectionFactory</literal> and/or "
+"<literal>TopicConnectionFactory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:76
+#, no-c-format
+msgid ""
+"Seam defaults to using <literal>UIL2ConnectionFactory</literal> which is the "
+"usual connection factory for use with JBossMQ. If you are using some other "
+"JMS provider, you need to set one or both of <literal>queueConnection."
+"queueConnectionFactoryJndiName</literal> and <literal>topicConnection."
+"topicConnectionFactoryJndiName</literal> in <literal>seam.properties</"
+"literal>, <literal>web.xml</literal> or <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:79
+#, no-c-format
+msgid ""
+"You also need to list topics and queues in <literal>components.xml</literal> "
+"to install Seam managed <literal>TopicPublisher</literal>s and "
+"<literal>QueueSender</literal>s:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:82
+#, no-c-format
+msgid ""
+"&lt;jms:managed-topic-publisher name=\"stockTickerPublisher\" auto-create="
+"\"true\" \n"
+"    topic-jndi-name=\"topic/stockTickerTopic\"/&gt;\n"
+"\n"
+"&lt;jms:managed-queue-sender name=\"paymentQueueSender\" auto-create=\"true"
+"\" \n"
+"    queue-jndi-name=\"queue/paymentQueue\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:83
+#, no-c-format
+msgid "Sending messages"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:84
+#, no-c-format
+msgid ""
+"Now, you can inject a JMS <literal>TopicPublisher</literal> and "
+"<literal>TopicSession</literal> into any component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:87
+#, no-c-format
+msgid ""
+"@In \n"
+"private TopicPublisher stockTickerPublisher;   \n"
+"@In \n"
+"private TopicSession topicSession;\n"
+"\n"
+"public void publish(StockPrice price) {\n"
+"      try\n"
+"      {\n"
+"         topicPublisher.publish( topicSession.createObjectMessage(price) );\n"
+"      } \n"
+"      catch (Exception ex)\n"
+"      {\n"
+"         throw new RuntimeException(ex);\n"
+"      } \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:88
+#, no-c-format
+msgid "Or, for working with a queue:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:91
+#, no-c-format
+msgid ""
+"@In\n"
+"private QueueSender paymentQueueSender;   \n"
+"@In\n"
+"private QueueSession queueSession;\n"
+"\n"
+"public void publish(Payment payment) {\n"
+"      try\n"
+"      {\n"
+"         paymentQueueSender.send( queueSession.createObjectMessage"
+"(payment) );\n"
+"      } \n"
+"      catch (Exception ex)\n"
+"      {\n"
+"         throw new RuntimeException(ex);\n"
+"      } \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:92
+#, no-c-format
+msgid "Receiving messages using a message-driven bean"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:93
+#, no-c-format
+msgid ""
+"You can process messages using any EJB3 message driven bean. Message-driven "
+"beans may even be Seam components, in which case it is possible to inject "
+"other event and application scoped Seam components."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:96
+#, no-c-format
+msgid "Receiving messages in the client"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:97
+#, no-c-format
+msgid ""
+"Seam Remoting lets you subscribe to a JMS topic from client-side JavaScript. "
+"This is described in the next chapter."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Mail.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Mail.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Mail.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,985 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Mail.xml:10
+#, no-c-format
+msgid "Email"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:11
+#, no-c-format
+msgid ""
+"Seam now includes an optional components for templating and sending emails."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:14
+#, no-c-format
+msgid ""
+"Email support is provided by <literal>jboss-seam-mail.jar</literal>. This "
+"JAR contains the mail JSF controls, which are used to construct emails, and "
+"the <literal>mailSession</literal> manager component."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:17
+#, no-c-format
+msgid ""
+"The examples/mail project contains an example of the email support in "
+"action. It demonstrates proper packaging, and it contains a number of "
+"example that demonstrate the key features currently supported."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:21
+#, no-c-format
+msgid "Creating a message"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:22
+#, no-c-format
+msgid ""
+"You don't need to learn a whole new templating language to use Seam "
+"Mail&mdash;an email is just facelet!"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:25
+#, no-c-format
+msgid ""
+"&lt;m:message xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"    xmlns:m=\"http://jboss.com/products/seam/mail\"\n"
+"    xmlns:h=\"http://java.sun.com/jsf/html\"&gt;\n"
+"  \n"
+"    &lt;m:from name=\"Peter\" address=\"peter at example.com\" /&gt;\n"
+"    &lt;m:to name=\"#{person.firstname} #{person.lastname}\"&gt;#{person."
+"address}&lt;/m:to&gt;\n"
+"    &lt;m:subject&gt;Try out Seam!&lt;/m:subject&gt;\n"
+"    \n"
+"    &lt;m:body&gt;\n"
+"        &lt;p&gt;&lt;h:outputText value=\"Dear #{person.firstname}\" /&gt;,"
+"&lt;/p&gt;\n"
+"        &lt;p&gt;You can try out Seam by visiting \n"
+"        &lt;a href=\"http://labs.jboss.com/jbossseam\"&gt;http://labs.jboss."
+"com/jbossseam&lt;/a&gt;.&lt;/p&gt;\n"
+"        &lt;p&gt;Regards,&lt;/p&gt;\n"
+"        &lt;p&gt;Peter&lt;/p&gt;\n"
+"    &lt;/m:body&gt;\n"
+"    \n"
+"&lt;/m:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:26
+#, no-c-format
+msgid ""
+"The <literal>&lt;m:message&gt;</literal> tag wraps the whole message, and "
+"tells Seam to start rendering an email. Inside the <literal>&lt;m:message&gt;"
+"</literal> tag we use an <literal>&lt;m:from&gt;</literal> tag to set who "
+"the message is from, a <literal>&lt;m:to&gt;</literal> tag to specify a "
+"sender (notice how we use EL as we would in a normal facelet), and a "
+"<literal>&lt;m:subject&gt;</literal> tag."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:29
+#, no-c-format
+msgid ""
+"The <literal>&lt;m:body&gt;</literal> tag wraps the body of the email. You "
+"can use regular HTML tags inside the body as well as JSF components."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:32
+#, no-c-format
+msgid ""
+"So, now you have your email template, how do you go about sending it? Well, "
+"at the end of rendering the <literal>m:message</literal> the "
+"<literal>mailSession</literal> is called to send the email, so all you have "
+"to do is ask Seam to render the view:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:35
+#, no-c-format
+msgid ""
+"@In(create=true)\n"
+"private Renderer renderer;\n"
+"   \n"
+"public void send() {\n"
+"    try {\n"
+"       renderer.render(\"/simple.xhtml\");\n"
+"       facesMessages.add(\"Email sent successfully\");\n"
+"   } \n"
+"   catch (Exception e) {\n"
+"       facesMessages.add(\"Email sending failed: \" + e.getMessage());\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:36
+#, no-c-format
+msgid ""
+"If, for example, you entered an invalid email address, then an exception "
+"would be thrown, which is caught and then displayed to the user."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:40
+#, no-c-format
+msgid "Attachments"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:41
+#, no-c-format
+msgid ""
+"Seam makes it easy to attach files to an email. It supports most of the "
+"standard java types used when working with files."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:44
+#, no-c-format
+msgid "If you wanted to email the <literal>jboss-seam-mail.jar</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:47
+#, no-c-format
+msgid "&lt;m:attachment value=\"/WEB-INF/lib/jboss-seam-mail.jar\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:48
+#, no-c-format
+msgid ""
+"Seam will load the file from the classpath, and attach it to the email. By "
+"default it would be attached as <literal>jboss-seam-mail.jar</literal>; if "
+"you wanted it to have another name you would just add the <literal>fileName</"
+"literal> attribute:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:51
+#, no-c-format
+msgid ""
+"&lt;m:attachment value=\"/WEB-INF/lib/jboss-seam-mail.jar\" fileName=\"this-"
+"is-so-cool.jar\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:52
+#, no-c-format
+msgid ""
+"You could also attach a <literal>java.io.File</literal>, a <literal>java.net."
+"URL</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:55
+#, no-c-format
+msgid "&lt;m:attachment value=\"#{numbers}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:56
+#, no-c-format
+msgid ""
+"Or a <literal>byte[]</literal> or a <literal>java.io.InputStream</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:59
+#, no-c-format
+msgid ""
+"&lt;m:attachment value=\"#{person.photo}\" contentType=\"image/png\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:60
+#, no-c-format
+msgid ""
+"You'll notice that for a <literal>byte[]</literal> and a <literal>java.io."
+"InputStream</literal> you need to specify the MIME type of the attachment "
+"(as that information is not carried as part of the file)."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:63
+#, no-c-format
+msgid ""
+"And it gets even better, you can attach a Seam generated PDF, or any "
+"standard JSF view, just by wrapping a <literal>&lt;m:attachment&gt;</"
+"literal> around the normal tags you would use:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:66
+#, no-c-format
+msgid ""
+"&lt;m:attachment fileName=\"tiny.pdf\"&gt;\n"
+"    &lt;p:"
+"document&gt;                                                      \n"
+"        A very tiny "
+"PDF                                                                                                \n"
+"    &lt;/p:document&gt;\n"
+"&lt;/m:attachment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:67
+#, no-c-format
+msgid ""
+"If you had a set of files you wanted to attach (for example a set of "
+"pictures loaded from a database) you can just use a <literal>&lt;ui:"
+"repeat&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:70
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{people}\" var=\"person\"&gt;\n"
+"    &lt;m:attachment value=\"#{person.photo}\" contentType=\"image/jpeg\"\n"
+"    fileName=\"#{person.firstname}_#{person.lastname}.jpg\"/&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:74
+#, no-c-format
+msgid "HTML/Text alternative part"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:75
+#, no-c-format
+msgid ""
+"Whilst most mail readers nowadays support HTML, some don't, so you can add a "
+"plain text alternative to your email body:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:78
+#, no-c-format
+msgid ""
+"&lt;m:body&gt;\n"
+"    &lt;f:facet name=\"alternative\"&gt;Sorry, your email reader can't show "
+"our fancy email, \n"
+"please go to http://labs.jboss.com/jbossseam to explore Seam.&lt;/f:"
+"facet&gt;\n"
+"&lt;/m:body&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:82
+#, no-c-format
+msgid "Multiple recipients"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:83
+#, no-c-format
+msgid ""
+"Often you'll want to send an email to a group of recipients (for example "
+"your users). All of the recipient mail tags can be placed inside a "
+"<literal>&lt;ui:repeat&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:86
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{allUsers} var=\"user\"&gt;\n"
+"    &lt;m:to name=\"#{user.firstname} #{user.lastname}\" address=\"#{user."
+"emailAddress}\" /&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:90
+#, no-c-format
+msgid "Multiple messages"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:91
+#, no-c-format
+msgid ""
+"Sometimes, however, you need to send a slightly different message to each "
+"recipient (e.g. a password reset). The best way to do this is to place the "
+"whole message inside a <literal>&lt;ui:repeat&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:94
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{people}\" var=\"p\"&gt;\n"
+"    &lt;m:message&gt;\n"
+"        &lt;m:from name=\"#{person.firstname} #{person.lastname}\"&gt;#"
+"{person.address}&lt;/m:from&gt;\n"
+"        &lt;m:to name=\"#{p.firstname}\"&gt;#{p.address}&lt;/m:to&gt;\n"
+"            ...\n"
+"    &lt;/m:message&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:98
+#, no-c-format
+msgid "Templating"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:99
+#, no-c-format
+msgid ""
+"The mail templating example shows that facelets templating Just Works with "
+"the Seam mail tags."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:102
+#, no-c-format
+msgid "Our <literal>template.xhtml</literal> contains:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:105
+#, no-c-format
+msgid ""
+"&lt;m:message&gt;\n"
+"   &lt;m:from name=\"Seam\" address=\"do-not-reply at jboss.com\" /&gt;\n"
+"   &lt;m:to name=\"#{person.firstname} #{person.lastname}\"&gt;#{person."
+"address}&lt;/m:to&gt;\n"
+"   &lt;m:subject&gt;#{subject}&lt;/m:subject&gt;\n"
+"   &lt;m:body&gt;\n"
+"       &lt;html&gt;\n"
+"           &lt;body&gt;\n"
+"               &lt;ui:insert name=\"body\"&gt;This is the default body, "
+"specified by the template.\n"
+"               &lt;/ui:insert&gt;\n"
+"           &lt;/body&gt;\n"
+"       &lt;/html&gt;\n"
+"   &lt;/m:body&gt;\n"
+"&lt;/m:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:106
+#, no-c-format
+msgid "Our <literal>templating.xhtml</literal> contains:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:109
+#, no-c-format
+msgid ""
+"&lt;ui:param name=\"subject\" value=\"Templating with Seam Mail\"/&gt;\n"
+"&lt;ui:define name=\"body\"&gt;\n"
+"    &lt;p&gt;This example demonstrates that you can easily use &lt;i&gt;"
+"facelets templating&lt;/i&gt; in email!&lt;/p&gt;\n"
+"&lt;/ui:define&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:113
+#, no-c-format
+msgid "Other Headers"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:114
+#, no-c-format
+msgid ""
+"Sometimes you'll want to add other headers to your email. Seam provides "
+"support for some (see <xref linkend=\"Email-Tags\"/>). For example, we can "
+"set the importance of the email, and ask for a read receipt:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:117
+#, no-c-format
+msgid ""
+"&lt;m:message xmlns:m=\"http://jboss.com/products/seam/mail\"\n"
+"           importance=\"low\"\n"
+"           requestReadReceipt=\"true\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:118
+#, no-c-format
+msgid ""
+"Otherise you can add any header to the message using the <literal>&lt;m:"
+"header&gt;</literal> tag:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:121
+#, no-c-format
+msgid "&lt;m:header name=\"X-Sent-From\" value=\"JBoss Seam\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:127
+#, no-c-format
+msgid "Receiving emails"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:128
+#, no-c-format
+msgid ""
+"If you are using EJB then you can use a MDB (Message Driven Bean) to receive "
+"email. Seam comes with an improved version of <literal>mail-ra.rar</literal> "
+"as distributed in JBoss AS; until the improvements make there way into a "
+"released version of JBoss AS, replacing the default <literal>rar</literal> "
+"with the one distributed with Seam is recommended."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:131
+#, no-c-format
+msgid "You can configure it like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:134
+#, no-c-format
+msgid ""
+"@MessageDriven(activationConfig={\n"
+"         @ActivationConfigProperty(propertyName=\"mailServer\", "
+"propertyValue=\"localhost\"),\n"
+"         @ActivationConfigProperty(propertyName=\"mailFolder\", "
+"propertyValue=\"INBOX\"),\n"
+"         @ActivationConfigProperty(propertyName=\"storeProtocol\", "
+"propertyValue=\"pop3\"),\n"
+"         @ActivationConfigProperty(propertyName=\"userName\", propertyValue="
+"\"seam\"),\n"
+"         @ActivationConfigProperty(propertyName=\"password\", propertyValue="
+"\"seam\")\n"
+"})\n"
+"@ResourceAdapter(\"mail-ra.rar\")\n"
+"@Name(\"mailListener\")\n"
+"public class MailListenerMDB implements MailListener {\n"
+"\n"
+"   @In(create=true)\n"
+"   private OrderProcessor orderProcessor;\n"
+"\n"
+"   public void onMessage(Message message) {\n"
+"      // Process the message\n"
+"      orderProcessor.process(message.getSubject());\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:135
+#, no-c-format
+msgid ""
+"Each message received will cause <literal>onMessage(Message message)</"
+"literal> to be called. Most seam annotations will work inside a MDB but you "
+"musn't access the persistence context."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:138
+#, no-c-format
+msgid ""
+"You can find more information on the default <literal>mail-ra.rar</literal> "
+"at <ulink url=\"http://wiki.jboss.org/wiki/Wiki.jsp?page=InboundJavaMail"
+"\">http://wiki.jboss.org/wiki/Wiki.jsp?page=InboundJavaMail</ulink>. The "
+"version distributed with Seam also includes a <literal>debug</literal> "
+"property to enable JavaMail debugging, a <literal>flush</literal> property "
+"(by default true) to disable flushing a <literal>POP3</literal> mailbox "
+"after successfullying delivering a message to your MDB and a <literal>port</"
+"literal> property to override the default TCP port. Beware that the api for "
+"this may be altered as changes make there way into JBoss AS."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:141
+#, no-c-format
+msgid ""
+"If you aren't using JBoss AS you can still use <literal>mail-ra.rar</"
+"literal> (included with Seam in the mail directory), or you may find your "
+"application server includes a similar adapter."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:147
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:148
+#, no-c-format
+msgid ""
+"To include Email support in your application, include <literal>jboss-seam-"
+"mail.jar</literal> in your WEB-INF/lib directory. If you are using JBoss AS "
+"there is no further configuration needed to use Seam's email support. "
+"Otherwise you need to make sure you have the JavaMail API, an implementation "
+"of the JavaMail API present (the API and impl used in JBoss AS are "
+"distributed with seam as <literal>lib/mail.jar</literal>), and a copy of the "
+"Java Activation Framework (distributed with seam as <literal>lib/activation."
+"jar</literal>."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:151
+#, no-c-format
+msgid ""
+"The Seam Email module requires the use of Facelets as the view technology. "
+"Future versions of the library may also support the use of JSP. "
+"Additionally, it requires the use of the seam-ui package."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:154
+#, no-c-format
+msgid ""
+"The <literal>mailSession</literal> component uses JavaMail to talk to a "
+"'real' SMTP server."
+msgstr ""
+
+#. Tag: literal
+#: Mail.xml:158
+#, no-c-format
+msgid "mailSession"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:159
+#, no-c-format
+msgid ""
+"A JavaMail Session may be available via a JNDI lookup if you are working in "
+"an JEE environment or you can use a Seam configured Session."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:162
+#, no-c-format
+msgid ""
+"The mailSession component's properties are described in more detail in <xref "
+"linkend=\"Built_in_Seam_components-Mail_related_components\"/>."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:166
+#, no-c-format
+msgid "JNDI lookup in JBoss AS"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:167
+#, no-c-format
+msgid ""
+"The JBossAS <literal>deploy/mail-service.xml</literal> configures a JavaMail "
+"session binding into JNDI. The default service configuration will need "
+"altering for your network. <ulink url=\"http://wiki.jboss.org/wiki/Wiki.jsp?"
+"page=JavaMail\">http://wiki.jboss.org/wiki/Wiki.jsp?page=JavaMail</ulink> "
+"describes the service in more detail."
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:170
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"        xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"        xmlns:mail=\"http://jboss.com/products/seam/mail\"&gt;\n"
+"        \n"
+"    &lt;mail:mail-session session-jndi-name=\"java:/Mail\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:171
+#, no-c-format
+msgid ""
+"Here we tell Seam to get the mail session bound to <literal>java:/Mail</"
+"literal> from JNDI."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:177
+#, no-c-format
+msgid "Seam configured Session"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:178
+#, no-c-format
+msgid ""
+"A mail session can be configured via <literal>components.xml</literal>. Here "
+"we tell Seam to use <literal>smtp.example.com</literal> as the smtp server,"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:181
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"        xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"        xmlns:mail=\"http://jboss.com/products/seam/mail\"&gt;\n"
+"        \n"
+"    &lt;mail:mail-session host=\"smtp.example.com\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:189
+#, no-c-format
+msgid "Tags"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:190
+#, no-c-format
+msgid ""
+"Emails are generated using tags in the <literal>http://jboss.com/products/"
+"seam/mail</literal> namespace. Documents should always have the "
+"<literal>message</literal> tag at the root of the message. The message tag "
+"prepares Seam to generate an email."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:193
+#, no-c-format
+msgid ""
+"The standard templating tags of facelets can be used as normal. Inside the "
+"body you can use any JSF tag which doesn't require access to external "
+"resources (stylesheets, javascript)."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:198
+#, no-c-format
+msgid "&lt;m:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:200
+#, no-c-format
+msgid "Root tag of a mail message"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:205
+#, no-c-format
+msgid ""
+"<literal>importance</literal> &mdash; low, normal or high. By default "
+"normal, this sets the importance of the mail message."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:210
+#, no-c-format
+msgid ""
+"<literal>precedence</literal> &mdash; sets the precedence of the message (e."
+"g. bulk)."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:215
+#, no-c-format
+msgid ""
+"<literal>requestReadReceipt</literal> &mdash; by default false, if set, a "
+"read receipt will be request will be added, with the read receipt being sent "
+"to the <literal>From:</literal> address."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:220
+#, no-c-format
+msgid ""
+"<literal>urlBase</literal> &mdash; If set, the value is prepended to the "
+"<literal>requestContextPath</literal> allowing you to use components such as "
+"<literal>&lt;h:graphicImage&gt;</literal> in your emails."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:228
+#, no-c-format
+msgid "&lt;m:from&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:230
+#, no-c-format
+msgid ""
+"Set's the From: address for the email. You can only have one of these per "
+"email."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:235
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the name the email should come from."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:240 Mail.xml:255
+#, no-c-format
+msgid ""
+"<literal>address</literal> &mdash; the email address the email should come "
+"from."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:248
+#, no-c-format
+msgid "&lt;m:replyTo&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:250
+#, no-c-format
+msgid ""
+"Set's the Reply-to: address for the email. You can only have one of these "
+"per email."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:263
+#, no-c-format
+msgid "&lt;m:to&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:265
+#, no-c-format
+msgid ""
+"Add a recipient to the email. Use multiple &lt;m:to&gt; tags for multiple "
+"recipients. This tag can be safely placed inside a repeat tag such as &lt;ui:"
+"repeat&gt;."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:270 Mail.xml:290 Mail.xml:310
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the name of the recipient."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:275 Mail.xml:295 Mail.xml:315
+#, no-c-format
+msgid "<literal>address</literal> &mdash; the email address of the recipient."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:283
+#, no-c-format
+msgid "&lt;m:cc&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:285
+#, no-c-format
+msgid ""
+"Add a cc recipient to the email. Use multiple &lt;m:cc&gt; tags for multiple "
+"ccs. This tag can be safely placed inside a repeat tag such as &lt;ui:"
+"repeat&gt;."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:303
+#, no-c-format
+msgid "&lt;m:bcc&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:305
+#, no-c-format
+msgid ""
+"Add a bcc recipient to the email. Use multiple &lt;m:bcc&gt; tags for "
+"multiple bccs. This tag can be safely placed inside a repeat tag such as &lt;"
+"ui:repeat&gt;."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:323
+#, no-c-format
+msgid "&lt;m:header&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:325
+#, no-c-format
+msgid ""
+"Add a header to the email (e.g. <literal>X-Sent-From: JBoss Seam</literal>"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:330
+#, no-c-format
+msgid ""
+"<literal>name</literal> &mdash; The name of the header to add (e.g. "
+"<literal>X-Sent-From</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:335
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; The value of the header to add (e.g. "
+"<literal>JBoss Seam</literal>)."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:343
+#, no-c-format
+msgid "&lt;m:attachment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:345
+#, no-c-format
+msgid "Add an attachment to the email."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:350
+#, no-c-format
+msgid "<literal>value</literal> &mdash; The file to attach:"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:355
+#, no-c-format
+msgid ""
+"<literal>String</literal> &mdash; A <literal>String</literal> is interpreted "
+"as a path to file within the classpath"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:360
+#, no-c-format
+msgid ""
+"<literal>java.io.File</literal> &mdash; An EL expression can reference a "
+"<literal>File</literal> object"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:365
+#, no-c-format
+msgid ""
+"<literal>java.net.URL</literal> &mdash; An EL expression can reference a "
+"<literal>URL</literal> object"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:370
+#, no-c-format
+msgid ""
+"<literal>java.io.InputStream</literal> &mdash; An EL expression can "
+"reference an <literal>InputStream</literal>. In this case both a "
+"<literal>fileName</literal> and a <literal>contentType</literal> must be "
+"specified."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:375
+#, no-c-format
+msgid ""
+"<literal>byte[]</literal> &mdash; An EL expression can reference an "
+"<literal>byte[]</literal>. In this case both a <literal>fileName</literal> "
+"and a <literal>contentType</literal> must be specified."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:380
+#, no-c-format
+msgid "If the value attribute is ommitted:"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:385
+#, no-c-format
+msgid ""
+"If this tag contains a <literal>&lt;p:document&gt;</literal> tag, the "
+"document described will be generated and attached to the email. A "
+"<literal>fileName</literal> should be specfied."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:390
+#, no-c-format
+msgid ""
+"If this tag contains other JSF tags a HTML document will be generated from "
+"them and attached to the email. A <literal>fileName</literal> should be "
+"specfied."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:397
+#, no-c-format
+msgid ""
+"<literal>fileName</literal> &mdash; Specify the file name to use for the "
+"attached file."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:402
+#, no-c-format
+msgid ""
+"<literal>contentType</literal> &mdash; Specify the MIME type of the attached "
+"file"
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:410
+#, no-c-format
+msgid "&lt;m:subject&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:412
+#, no-c-format
+msgid "Set's the subject for the email."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:418
+#, no-c-format
+msgid "&lt;m:body&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:420
+#, no-c-format
+msgid ""
+"Set's the body for the email. Supports an <literal>alternative</literal> "
+"facet which, if an HTML email is generated can contain alternative text for "
+"a mail reader which doesn't support html."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:425
+#, no-c-format
+msgid ""
+"<literal>type</literal> &mdash; If set to <literal>plain</literal> then a "
+"plain text email will be generated otherwise an HTML email is generated."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Persistence.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Persistence.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Persistence.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,750 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Persistence.xml:10
+#, no-c-format
+msgid "Seam and Object/Relational Mapping"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:11
+#, no-c-format
+msgid ""
+"Seam provides extensive support for the two most popular persistence "
+"architectures for Java: Hibernate3, and the Java Persistence API introduced "
+"with EJB 3.0. Seam's unique state-management architecture allows the most "
+"sophisticated ORM integration of any web application framework."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:15
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:16
+#, no-c-format
+msgid ""
+"Seam grew out of the frustration of the Hibernate team with the "
+"statelessness typical of the previous generation of Java application "
+"architectures. The state management architecture of Seam was originally "
+"designed to solve problems relating to persistence&mdash;in particular "
+"problems associated with <emphasis>optimistic transaction processing</"
+"emphasis>. Scalable online applications always use optimistic transactions. "
+"An atomic (database/JTA) level transaction should not span a user "
+"interaction unless the application is designed to support only a very small "
+"number of concurrent clients. But almost all interesting work involves first "
+"displaying data to a user, and then, slightly later, updating the same data. "
+"So Hibernate was designed to support the idea of a persistence context which "
+"spanned an optimistic transaction."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:19
+#, no-c-format
+msgid ""
+"Unfortunately, the so-called \"stateless\" architectures that preceded Seam "
+"and EJB 3.0 had no construct for representing an optimistic transaction. So, "
+"instead, these architectures provided persistence contexts scoped to the "
+"atomic transaction. Of course, this resulted in many problems for users, and "
+"is the cause of the number one user complaint about Hibernate: the dreaded "
+"<literal>LazyInitializationException</literal>. What we need is a construct "
+"for representing an optimistic transaction in the application tier."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:22
+#, no-c-format
+msgid ""
+"EJB 3.0 recognizes this problem, and introduces the idea of a stateful "
+"component (a stateful session bean) with an <emphasis>extended persistence "
+"context</emphasis> scoped to the lifetime of the component. This is a "
+"partial solution to the problem (and is a useful construct in and of itself) "
+"however there are two problems:"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:27
+#, no-c-format
+msgid ""
+"The lifecycle of the stateful session bean must be managed manually via code "
+"in the web tier (it turns out that this is a subtle problem and much more "
+"difficult in practice than it sounds)."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:32
+#, no-c-format
+msgid ""
+"Propagation of the persistence context between stateful components in the "
+"same optimistic transaction is possible, but tricky."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:37
+#, no-c-format
+msgid ""
+"Seam solves the first problem by providing conversations, and stateful "
+"session bean components scoped to the conversation. (Most conversations "
+"actually represent optimistic transactions in the data layer.) This is "
+"sufficient for many simple applications (such as the Seam booking demo) "
+"where persistence context propagation is not needed. For more complex "
+"applications, with many loosly-interacting components in each conversation, "
+"propagation of the persistence context across components becomes an "
+"important issue. So Seam extends the persistence context management model of "
+"EJB 3.0, to provide conversation-scoped extended persistence contexts."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:43
+#, no-c-format
+msgid "Seam managed transactions"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:44
+#, no-c-format
+msgid ""
+"EJB session beans feature declarative transaction management. The EJB "
+"container is able to start a transaction transparently when the bean is "
+"invoked, and end it when the invocation ends. If we write a session bean "
+"method that acts as a JSF action listener, we can do all the work associated "
+"with that action in one transaction, and be sure that it is committed or "
+"rolled back when we finish processing the action. This is a great feature, "
+"and all that is needed by some Seam applications."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:47
+#, no-c-format
+msgid ""
+"However, there is a problem with this approach. A Seam application may not "
+"perform all data access for a request from a single method call to a session "
+"bean."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:52
+#, no-c-format
+msgid ""
+"The request might require processing by several loosly-coupled components, "
+"each of which is called independently from the web layer. It is common to "
+"see several or even many calls per request from the web layer to EJB "
+"components in Seam."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:57
+#, no-c-format
+msgid "Rendering of the view might require lazy fetching of associations."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:62
+#, no-c-format
+msgid ""
+"The more transactions per request, the more likely we are to encounter "
+"atomicity and isolation problems when our application is processing many "
+"concurrent requests. Certainly, all write operations should occur in the "
+"same transaction!"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:65
+#, no-c-format
+msgid ""
+"Hibernate users developed the <emphasis>\"open session in view\"</emphasis> "
+"pattern to work around this problem. In the Hibernate community, \"open "
+"session in view\" was historically even more important because frameworks "
+"like Spring use transaction-scoped persistence contexts. So rendering the "
+"view would cause <literal>LazyInitializationException</literal>s when "
+"unfetched associations were accessed."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:68
+#, no-c-format
+msgid ""
+"This pattern is usually implemented as a single transaction which spans the "
+"entire request. There are several problems with this implementation, the "
+"most serious being that we can never be sure that a transaction is "
+"successful until we commit it&mdash;but by the time the \"open session in "
+"view\" transaction is committed, the view is fully rendered, and the "
+"rendered response may already have been flushed to the client. How can we "
+"notify the user that their transaction was unsuccessful?"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:71
+#, no-c-format
+msgid ""
+"Seam solves both the transaction isolation problem and the association "
+"fetching problem, while working around the problems with \"open session in "
+"view\". The solution comes in two parts:"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:76
+#, no-c-format
+msgid ""
+"use an extended persistence context that is scoped to the conversation, "
+"instead of to the transaction"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:81
+#, no-c-format
+msgid ""
+"use two transactions per request; the first spans the beginning of the "
+"update model values phase until the end of the invoke application phase; the "
+"second spans the render response phase"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:86
+#, no-c-format
+msgid ""
+"In the next section, we'll tell you how to set up a conversation-scope "
+"persistence context. But first we need to tell you how to enable Seam "
+"transaction management. Note that you can use conversation-scoped "
+"persistence contexts without Seam transaction management, and there are good "
+"reasons to use Seam transaction management even when you're not using Seam-"
+"managed persistence contexts. However, the two facilities were designed to "
+"work together, and work best when used together."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:90
+#, no-c-format
+msgid "Enabling Seam-managed transactions"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:91
+#, no-c-format
+msgid ""
+"To make use of <emphasis>Seam managed transactions</emphasis>, you need to "
+"use <literal>TransactionalSeamPhaseListener</literal> in place of "
+"<literal>SeamPhaseListener</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:94
+#, no-c-format
+msgid ""
+"&lt;lifecycle&gt;\n"
+"     &lt;phase-listener&gt;\n"
+"        org.jboss.seam.jsf.TransactionalSeamPhaseListener\n"
+"    &lt;/phase-listener&gt;\n"
+"&lt;/lifecycle&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:95
+#, no-c-format
+msgid ""
+"Seam transaction management is useful even if you're using EJB 3.0 container-"
+"managed persistence contexts. But it is especially useful if you use Seam "
+"outside a Java EE 5 environment, or in any other case where you would use a "
+"Seam-managed persistence context."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:103
+#, no-c-format
+msgid "Seam-managed persistence contexts"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:104
+#, no-c-format
+msgid ""
+"If you're using Seam outside of a Java EE 5 environment, you can't rely upon "
+"the container to manage the persistence context lifecycle for you. Even if "
+"you are in an EE 5 environment, you might have a complex application with "
+"many loosly coupled components that collaborate together in the scope of a "
+"single conversation, and in this case you might find that propagation of the "
+"persistence context between component is tricky and error-prone."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:107
+#, no-c-format
+msgid ""
+"In either case, you'll need to use a <emphasis>managed persistence context</"
+"emphasis> (for JPA) or a <emphasis>managed session</emphasis> (for "
+"Hibernate) in your components. A Seam-managed persistence context is just a "
+"built-in Seam component that manages an instance of <literal>EntityManager</"
+"literal> or <literal>Session</literal> in the conversation context. You can "
+"inject it with <literal>@In</literal>."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:110
+#, no-c-format
+msgid ""
+"Seam-managed persistence contexts are extremely efficient in a clustered "
+"environment. Seam is able to perform an optimization that EJB 3.0 "
+"specification does not allow containers to use for container-managed "
+"extended persistence contexts. Seam supports transparent failover of "
+"extended persisence contexts, without the need to replicate any persistence "
+"context state between nodes. (We hope to fix this oversight in the next "
+"revision of the EJB spec.)"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:114
+#, no-c-format
+msgid "Using a Seam-managed persistence context with JPA"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:115
+#, no-c-format
+msgid ""
+"Configuring a managed persistence context is easy. In <literal>components."
+"xml</literal>, we can write:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:118
+#, no-c-format
+msgid ""
+"&lt;core:managed-persistence-context name=\"bookingDatabase\" \n"
+"                           auto-create=\"true\"\n"
+"            persistence-unit-jndi-name=\"java:/EntityManagerFactories/"
+"bookingData\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:119
+#, no-c-format
+msgid ""
+"This configuration creates a conversation-scoped Seam component named "
+"<literal>bookingDatabase</literal> that manages the lifecycle of "
+"<literal>EntityManager</literal> instances for the persistence unit "
+"(<literal>EntityManagerFactory</literal> instance) with JNDI name "
+"<literal>java:/EntityManagerFactories/bookingData</literal>."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:122
+#, no-c-format
+msgid ""
+"Of course, you need to make sure that you have bound the "
+"<literal>EntityManagerFactory</literal> into JNDI. In JBoss, you can do this "
+"by adding the following property setting to <literal>persistence.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:125
+#, no-c-format
+msgid ""
+"&lt;property name=\"jboss.entity.manager.factory.jndi.name\" \n"
+"          value=\"java:/EntityManagerFactories/bookingData\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:126
+#, no-c-format
+msgid "Now we can have our <literal>EntityManager</literal> injected using:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:129
+#, no-c-format
+msgid "@In EntityManager bookingDatabase;"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:133
+#, no-c-format
+msgid "Using a Seam-managed Hibernate session"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:134
+#, no-c-format
+msgid ""
+"Seam-managed Hibernate sessions are similar. In <literal>components.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:137
+#, no-c-format
+msgid ""
+"&lt;core:hibernate-session-factory name=\"hibernateSessionFactory\"/&gt;\n"
+"\n"
+"&lt;core:managed-hibernate-session name=\"bookingDatabase\" \n"
+"                         auto-create=\"true\"\n"
+"           session-factory-jndi-name=\"java:/bookingSessionFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:138
+#, no-c-format
+msgid ""
+"Where <literal>java:/bookingSessionFactory</literal> is the name of the "
+"session factory specified in <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:141
+#, no-c-format
+msgid ""
+"&lt;session-factory name=\"java:/bookingSessionFactory\"&gt;\n"
+"    &lt;property name=\"transaction.flush_before_completion\"&gt;true&lt;/"
+"property&gt;\n"
+"    &lt;property name=\"connection.release_mode\"&gt;after_statement&lt;/"
+"property&gt;\n"
+"    &lt;property name=\"transaction.manager_lookup_class\"&gt;\n"
+"        org.hibernate.transaction.JBossTransactionManagerLookup\n"
+"    &lt;/property&gt;\n"
+"    &lt;property name=\"transaction.factory_class\"&gt;\n"
+"        org.hibernate.transaction.JTATransactionFactory\n"
+"    &lt;/property&gt;\n"
+"    &lt;property name=\"connection.datasource\"&gt;java:/"
+"bookingDatasource&lt;/property&gt;\n"
+"    ...\n"
+"&lt;/session-factory&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:142
+#, no-c-format
+msgid ""
+"Note that Seam does not flush the session, so you should always enable "
+"<literal>hibernate.transaction.flush_before_completion</literal> to ensure "
+"that the session is automatically flushed before the JTA transaction commits."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:145
+#, no-c-format
+msgid ""
+"We can now have a managed Hibernate <literal>Session</literal> injected into "
+"our JavaBean components using the following code:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:148
+#, no-c-format
+msgid "@In Session bookingDatabase;"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:152
+#, no-c-format
+msgid "Seam-managed persistence contexts and atomic conversations"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:153
+#, no-c-format
+msgid ""
+"Persistence contexts scoped to the conversation allows you to program "
+"optimistic transactions that span multiple requests to the server without "
+"the need to use the <literal>merge()</literal> operation , without the need "
+"to re-load data at the beginning of each request, and without the need to "
+"wrestle with the <literal>LazyInitializationException</literal> or "
+"<literal>NonUniqueObjectException</literal>."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:156
+#, no-c-format
+msgid ""
+"As with any optimistic transaction management, transaction isolation and "
+"consistency can be achieved via use of optimistic locking. Fortunately, both "
+"Hibernate and EJB 3.0 make it very easy to use optimistic locking, by "
+"providing the <literal>@Version</literal> annotation."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:159
+#, no-c-format
+msgid ""
+"By default, the persistence context is flushed (synchronized with the "
+"database) at the end of each transaction. This is sometimes the desired "
+"behavior. But very often, we would prefer that all changes are held in "
+"memory and only written to the database when the conversation ends "
+"successfully. This allows for truly atomic conversations. As the result of a "
+"truly stupid and shortsighted decision by certain non-JBoss, non-Sun and non-"
+"Sybase members of the EJB 3.0 expert group, there is currently no simple, "
+"usable and portable way to implement atomic conversations using EJB 3.0 "
+"persistence. However, Hibernate provides this feature as a vendor extension "
+"to the <literal>FlushModeType</literal>s defined by the specification, and "
+"it is our expectation that other vendors will soon provide a similar "
+"extension."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:162
+#, no-c-format
+msgid ""
+"Seam lets you specify <literal>FlushModeType.MANUAL</literal> when beginning "
+"a conversation. Currently, this works only when Hibernate is the underlying "
+"persistence provider, but we plan to support other equivalent vendor "
+"extensions."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:165
+#, no-c-format
+msgid ""
+"@In EntityManager em; //a Seam-managed persistence context\n"
+"\n"
+"@Begin(flushMode=MANUAL)\n"
+"public void beginClaimWizard() {\n"
+"    claim = em.find(Claim.class, claimId);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:166
+#, no-c-format
+msgid ""
+"Now, the <literal>claim</literal> object remains managed by the persistence "
+"context for the rest ot the conversation. We can make changes to the claim:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:169
+#, no-c-format
+msgid ""
+"public void addPartyToClaim() {\n"
+"    Party party = ....;\n"
+"    claim.addParty(party);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:170
+#, no-c-format
+msgid ""
+"But these changes will not be flushed to the database until we explicitly "
+"force the flush to occur:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:173
+#, no-c-format
+msgid ""
+"@End\n"
+"public void commitClaim() {\n"
+"    em.flush();\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:179
+#, no-c-format
+msgid "Using the JPA \"delegate\""
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:180
+#, no-c-format
+msgid ""
+"The <literal>EntityManager</literal> interface lets you access a vendor-"
+"specific API via the <literal>getDelegate()</literal> method. Naturally, the "
+"most interesting vendor is Hibernate, and the most powerful delegate "
+"interface is <literal>org.hibernate.Session</literal>. You'd be nuts to use "
+"anything else. Trust me, I'm not biased at all."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:183
+#, no-c-format
+msgid ""
+"But regardless of whether you're using Hibernate (genius!) or something else "
+"(masochist, or just not very bright), you'll almost certainly want to use "
+"the delegate in your Seam components from time to time. One approach would "
+"be the following:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:186
+#, no-c-format
+msgid ""
+"@In EntityManager entityManager;\n"
+"\n"
+"@Create\n"
+"public void init() {\n"
+"    ( (Session) entityManager.getDelegate() ).enableFilter(\"currentVersions"
+"\");\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:187
+#, no-c-format
+msgid ""
+"But typecasts are unquestionably the ugliest syntax in the Java language, so "
+"most people avoid them whenever possible. Here's a different way to get at "
+"the delegate. First, add the following line to <literal>components.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:190
+#, no-c-format
+msgid ""
+"&lt;factory name=\"session\" \n"
+"         scope=\"STATELESS\" \n"
+"         auto-create=\"true\" \n"
+"         value=\"#{entityManager.delegate}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:191
+#, no-c-format
+msgid "Now we can inject the session directly:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:194
+#, no-c-format
+msgid ""
+"@In Session session;\n"
+"\n"
+"@Create\n"
+"public void init() {\n"
+"    session.enableFilter(\"currentVersions\");\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:198
+#, no-c-format
+msgid "Using EL in EJB-QL/HQL"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:199
+#, no-c-format
+msgid ""
+"Seam proxies the <literal>EntityManager</literal> or <literal>Session</"
+"literal> object whenever you use a Seam-managed persistence context or "
+"inject a container managed persistence context using "
+"<literal>@PersistenceContext</literal>. This lets you use EL expressions in "
+"your query strings, safely and efficiently. For example, this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:202
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=#{user.username}\")\n"
+"         .getSingleResult();"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:203
+#, no-c-format
+msgid "is equivalent to:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:206
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getSingleResult();"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:207
+#, no-c-format
+msgid "Of course, you should never, ever write it like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:210
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=\" + user.getUsername"
+"()) //BAD!\n"
+"         .getSingleResult();"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:211
+#, no-c-format
+msgid "(It is inefficient and vulnerable to SQL injection attacks.)"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:217
+#, no-c-format
+msgid "Using Hibernate filters"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:218
+#, no-c-format
+msgid ""
+"The coolest, and most unique, feature of Hibernate is <emphasis>filters</"
+"emphasis>. Filters let you provide a restricted view of the data in the "
+"database. You can find out more about filters in the Hibernate "
+"documentation. But we thought we'd mention an easy way to incorporate "
+"filters into a Seam application, one that works especially well with the "
+"Seam Application Framework."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:221
+#, no-c-format
+msgid ""
+"Seam-managed persistence contexts may have a list of filters defined, which "
+"will be enabled whenever an <literal>EntityManager</literal> or Hibernate "
+"<literal>Session</literal> is first created. (Of course, they may only be "
+"used when Hibernate is the underlying persistence provider.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:224
+#, no-c-format
+msgid ""
+"&lt;core:filter name=\"regionFilter\"&gt;\n"
+"    &lt;core:name&gt;region&lt;/core:name&gt;\n"
+"    &lt;core:parameters&gt;\n"
+"        &lt;key&gt;regionCode&lt;/key&gt;\n"
+"        &lt;value&gt;#{region.code}&lt;/value&gt;\n"
+"    &lt;/core:parameters&gt;\n"
+"&lt;/core:filter&gt;\n"
+"\n"
+"&lt;core:filter name=\"currentFilter\"&gt;\n"
+"    &lt;core:name&gt;current&lt;/core:name&gt;\n"
+"    &lt;core:parameters&gt;\n"
+"        &lt;key&gt;date&lt;/key&gt;\n"
+"        &lt;value&gt;#{currentDate}&lt;/value&gt;\n"
+"    &lt;/core:parameters&gt;\n"
+"&lt;/core:filter&gt;\n"
+"\n"
+"&lt;core:managed-persistence-context name=\"personDatabase\"\n"
+"    persistence-unit-jndi-name=\"java:/EntityManagerFactories/personDatabase"
+"\"&gt;\n"
+"    &lt;core:filters&gt;\n"
+"        &lt;value&gt;#{regionFilter}&lt;/value&gt;\n"
+"        &lt;value&gt;#{currentFilter}&lt;/value&gt;\n"
+"    &lt;/core:filters&gt;\n"
+"&lt;/core:managed-persistence-context&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Remoting.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Remoting.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Remoting.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1458 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Remoting.xml:10
+#, no-c-format
+msgid "Remoting"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:11
+#, no-c-format
+msgid ""
+"Seam provides a convenient method of remotely accessing components from a "
+"web page, using AJAX (Asynchronous Javascript and XML). The framework for "
+"this functionality is provided with almost no up-front development effort - "
+"your components only require simple annotating to become accessible via "
+"AJAX. This chapter describes the steps required to build an AJAX-enabled web "
+"page, then goes on to explain the features of the Seam Remoting framework in "
+"more detail."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:14 Remoting.xml:296
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:15
+#, no-c-format
+msgid ""
+"To use remoting, the Seam Resource servlet must first be configured in your "
+"<literal>web.xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:18
+#, no-c-format
+msgid ""
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"  &lt;/servlet&gt;\n"
+"\n"
+"  &lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"  &lt;/servlet-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:19
+#, no-c-format
+msgid ""
+"The next step is to import the necessary Javascript into your web page. "
+"There are a minimum of two scripts that must be imported. The first one "
+"contains all the client-side framework code that enables remoting "
+"functionality:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:22
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/resource/"
+"remote.js\"&gt;&lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:23
+#, no-c-format
+msgid ""
+"The second script contains the stubs and type definitions for the components "
+"you wish to call. It is generated dynamically based on the local interface "
+"of your components, and includes type definitions for all of the classes "
+"that can be used to call the remotable methods of the interface. The name of "
+"the script reflects the name of your component. For example, if you have a "
+"stateless session bean annotated with <literal>@Name(\"customerAction\")</"
+"literal>, then your script tag should look like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:26
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?customerAction\"&gt;\n"
+"      &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:27
+#, no-c-format
+msgid ""
+"If you wish to access more than one component from the same page, then "
+"include them all as parameters of your script tag:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:30
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" \n"
+"      src=\"seam/resource/remoting/interface.js?customerAction&amp;"
+"accountAction\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:31
+#, no-c-format
+msgid "The \"Seam\" object"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:32
+#, no-c-format
+msgid ""
+"Client-side interaction with your components is all performed via the "
+"<literal>Seam</literal> Javascript object. This object is defined in "
+"<literal>remote.js</literal>, and you'll be using it to make asynchronous "
+"calls against your component. It is split into two areas of functionality; "
+"<literal>Seam.Component</literal> contains methods for working with "
+"components and <literal>Seam.Remoting</literal> contains methods for "
+"executing remote requests. The easiest way to become familiar with this "
+"object is to start with a simple example."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:35
+#, no-c-format
+msgid "A Hello World example"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:36
+#, no-c-format
+msgid ""
+"Let's step through a simple example to see how the <literal>Seam</literal> "
+"object works. First of all, let's create a new Seam component called "
+"<literal>helloAction</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:39
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"  @Name(\"helloAction\")\n"
+"  public class HelloAction implements HelloLocal {\n"
+"    public String sayHello(String name) {\n"
+"      return \"Hello, \" + name;\n"
+"    }\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:40
+#, no-c-format
+msgid ""
+"You also need to create a local interface for our new component - take "
+"special note of the <literal>@WebRemote</literal> annotation, as it's "
+"required to make our method accessible via remoting:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:43
+#, no-c-format
+msgid ""
+"@Local\n"
+"  public interface HelloLocal {\n"
+"    @WebRemote\n"
+"    public String sayHello(String name);\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:44
+#, no-c-format
+msgid ""
+"That's all the server-side code we need to write. Now for our web page - "
+"create a new page and import the following scripts:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:47
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/resource/"
+"remote.js\"&gt;&lt;/script&gt;\n"
+"  &lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?helloAction\"&gt;&lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:48
+#, no-c-format
+msgid ""
+"To make this a fully interactive user experience, let's add a button to our "
+"page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:51
+#, no-c-format
+msgid ""
+"&lt;button onclick=\"javascript:sayHello()\"&gt;Say Hello&lt;/button&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:52
+#, no-c-format
+msgid ""
+"We'll also need to add some more script to make our button actually do "
+"something when it's clicked:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:55
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\"&gt;\n"
+"    //&lt;![CDATA[\n"
+"\n"
+"    function sayHello() {\n"
+"      var name = prompt(\"What is your name?\");\n"
+"      Seam.Component.getInstance(\"helloAction\").sayHello(name, "
+"sayHelloCallback);\n"
+"    }\n"
+"\n"
+"    function sayHelloCallback(result) {\n"
+"      alert(result);\n"
+"    }\n"
+"\n"
+"    // ]]&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:56
+#, no-c-format
+msgid ""
+"We're done! Deploy your application and browse to your page. Click the "
+"button, and enter a name when prompted. A message box will display the hello "
+"message confirming that the call was successful. If you want to save some "
+"time, you'll find the full source code for this Hello World example in "
+"Seam's <literal>/examples/remoting/helloworld</literal> directory."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:59
+#, no-c-format
+msgid ""
+"So what does the code of our script actually do? Let's break it down into "
+"smaller pieces. To start with, you can see from the Javascript code listing "
+"that we have implemented two methods - the first method is responsible for "
+"prompting the user for their name and then making a remote request. Take a "
+"look at the following line:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:62
+#, no-c-format
+msgid ""
+"Seam.Component.getInstance(\"helloAction\").sayHello(name, sayHelloCallback);"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:63
+#, no-c-format
+msgid ""
+"The first section of this line, <literal>Seam.Component.getInstance"
+"(\"helloAction\")</literal> returns a proxy, or \"stub\" for our "
+"<literal>helloAction</literal> component. We can invoke the methods of our "
+"component against this stub, which is exactly what happens with the "
+"remainder of the line: <literal>sayHello(name, sayHelloCallback);</literal>."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:66
+#, no-c-format
+msgid ""
+"What this line of code in its completeness does, is invoke the "
+"<literal>sayHello</literal> method of our component, passing in "
+"<literal>name</literal> as a parameter. The second parameter, "
+"<literal>sayHelloCallback</literal> isn't a parameter of our component's "
+"<literal>sayHello</literal> method, instead it tells the Seam Remoting "
+"framework that once it receives the response to our request, it should pass "
+"it to the <literal>sayHelloCallback</literal> Javascript method. This "
+"callback parameter is entirely optional, so feel free to leave it out if "
+"you're calling a method with a <literal>void</literal> return type or if you "
+"don't care about the result."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:69
+#, no-c-format
+msgid ""
+"The <literal>sayHelloCallback</literal> method, once receiving the response "
+"to our remote request then pops up an alert message displaying the result of "
+"our method call."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:72
+#, no-c-format
+msgid "Seam.Component"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:73
+#, no-c-format
+msgid ""
+"The <literal>Seam.Component</literal> Javascript object provides a number of "
+"client-side methods for working with your Seam components. The two main "
+"methods, <literal>newInstance()</literal> and <literal>getInstance()</"
+"literal> are documented in the following sections however their main "
+"difference is that <literal>newInstance()</literal> will always create a new "
+"instance of a component type, and <literal>getInstance()</literal> will "
+"return a singleton instance."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:76
+#, no-c-format
+msgid "Seam.Component.newInstance()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:77
+#, no-c-format
+msgid ""
+"Use this method to create a new instance of an entity or Javabean component. "
+"The object returned by this method will have the same getter/setter methods "
+"as its server-side counterpart, or alternatively if you wish you can access "
+"its fields directly. Take the following Seam entity component for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:80
+#, no-c-format
+msgid ""
+"@Name(\"customer\")\n"
+"  @Entity\n"
+"  public class Customer implements Serializable\n"
+"  {\n"
+"    private Integer customerId;\n"
+"    private String firstName;\n"
+"    private String lastName;\n"
+"    \n"
+"    @Column public Integer getCustomerId() { \n"
+"      return customerId; \n"
+"    }\n"
+"    \n"
+"    public void setCustomerId(Integer customerId} { \n"
+"      this.customerId = customerId; \n"
+"    }\n"
+"    \n"
+"    @Column public String getFirstName() { \n"
+"      return firstName; \n"
+"    }\n"
+"    \n"
+"    public void setFirstName(String firstName) {\n"
+"      this.firstName = firstName; \n"
+"    }\n"
+"    \n"
+"    @Column public String getLastName() {\n"
+"      return lastName;\n"
+"    }\n"
+"    \n"
+"    public void setLastName(String lastName) {\n"
+"      this.lastName = lastName;\n"
+"    }\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:81
+#, no-c-format
+msgid "To create a client-side Customer you would write the following code:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:84
+#, no-c-format
+msgid "var customer = Seam.Component.newInstance(\"customer\");"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:85
+#, no-c-format
+msgid "Then from here you can set the fields of the customer object:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:88
+#, no-c-format
+msgid ""
+"customer.setFirstName(\"John\");\n"
+"  // Or you can set the fields directly\n"
+"  customer.lastName = \"Smith\";"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:89
+#, no-c-format
+msgid "Seam.Component.getInstance()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:90
+#, no-c-format
+msgid ""
+"The <literal>getInstance()</literal> method is used to get a reference to a "
+"Seam session bean component stub, which can then be used to remotely execute "
+"methods against your component. This method returns a singleton for the "
+"specified component, so calling it twice in a row with the same component "
+"name will return the same instance of the component."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:93
+#, no-c-format
+msgid ""
+"To continue our example from before, if we have created a new "
+"<literal>customer</literal> and we now wish to save it, we would pass it to "
+"the <literal>saveCustomer()</literal> method of our <literal>customerAction</"
+"literal> component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:96
+#, no-c-format
+msgid "Seam.Component.getInstance(\"customerAction\").saveCustomer(customer);"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:97
+#, no-c-format
+msgid "Seam.Component.getComponentName()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:98
+#, no-c-format
+msgid ""
+"Passing an object into this method will return its component name if it is a "
+"component, or <literal>null</literal> if it is not."
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:101
+#, no-c-format
+msgid ""
+"if (Seam.Component.getComponentName(instance) == \"customer\")\n"
+"    alert(\"Customer\");\n"
+"  else if (Seam.Component.getComponentName(instance) == \"staff\")\n"
+"    alert(\"Staff member\");"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:102
+#, no-c-format
+msgid "Seam.Remoting"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:103
+#, no-c-format
+msgid ""
+"Most of the client side functionality for Seam Remoting is contained within "
+"the <literal>Seam.Remoting</literal> object. While you shouldn't need to "
+"directly call most of its methods, there are a couple of important ones "
+"worth mentioning."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:106
+#, no-c-format
+msgid "Seam.Remoting.createType()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:107
+#, no-c-format
+msgid ""
+"If your application contains or uses Javabean classes that aren't Seam "
+"components, you may need to create these types on the client side to pass as "
+"parameters into your component method. Use the <literal>createType()</"
+"literal> method to create an instance of your type. Pass in the fully "
+"qualified Java class name as a parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:110
+#, no-c-format
+msgid "var widget = Seam.Remoting.createType(\"com.acme.widgets.MyWidget\");"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:111
+#, no-c-format
+msgid "Seam.Remoting.getTypeName()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:112
+#, no-c-format
+msgid ""
+"This method is the equivalent of <literal>Seam.Component.getComponentName()</"
+"literal> but for non-component types. It will return the name of the type "
+"for an object instance, or <literal>null</literal> if the type is not known. "
+"The name is the fully qualified name of the type's Java class."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:115
+#, no-c-format
+msgid "Client Interfaces"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:116
+#, no-c-format
+msgid ""
+"In the configuration section above, the interface, or \"stub\" for our "
+"component is imported into our page via <literal>seam/resource/remoting/"
+"interface.js</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:119
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?customerAction\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:120
+#, no-c-format
+msgid ""
+"By including this script in our page, the interface definitions for our "
+"component, plus any other components or types that are required to execute "
+"the methods of our component are generated and made available for the "
+"remoting framework to use."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:123
+#, no-c-format
+msgid ""
+"There are two types of client stub that can be generated, \"executable\" "
+"stubs and \"type\" stubs. Executable stubs are behavioural, and are used to "
+"execute methods against your session bean components, while type stubs "
+"contain state and represent the types that can be passed in as parameters or "
+"returned as a result."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:126
+#, no-c-format
+msgid ""
+"The type of client stub that is generated depends on the type of your Seam "
+"component. If the component is a session bean, then an executable stub will "
+"be generated, otherwise if it's an entity or JavaBean, then a type stub will "
+"be generated. There is one exception to this rule; if your component is a "
+"JavaBean (ie it is not a session bean nor an entity bean) and any of its "
+"methods are annotated with @WebRemote, then an executable stub will be "
+"generated for it instead of a type stub. This allows you to use remoting to "
+"call methods of your JavaBean components in a non-EJB environment where you "
+"don't have access to session beans."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:130
+#, no-c-format
+msgid "The Context"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:131
+#, no-c-format
+msgid ""
+"The Seam Remoting Context contains additional information which is sent and "
+"received as part of a remoting request/response cycle. At this stage it only "
+"contains the conversation ID but may be expanded in the future."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:134
+#, no-c-format
+msgid "Setting and reading the Conversation ID"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:136
+#, no-c-format
+msgid ""
+"If you intend on using remote calls within the scope of a conversation then "
+"you need to be able to read or set the conversation ID in the Seam Remoting "
+"Context. To read the conversation ID after making a remote request call "
+"<literal>Seam.Remoting.getContext().getConversationId()</literal>. To set "
+"the conversation ID before making a request, call <literal>Seam.Remoting."
+"getContext().setConversationId()</literal>."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:139
+#, no-c-format
+msgid ""
+"If the conversation ID hasn't been explicitly set with <literal>Seam."
+"Remoting.getContext().setConversationId()</literal>, then it will be "
+"automatically assigned the first valid conversation ID that is returned by "
+"any remoting call. If you are working with multiple conversations within "
+"your page, then you may need to explicitly set the conversation ID before "
+"each call. If you are working with just a single conversation, then you "
+"don't need to do anything special."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:145
+#, no-c-format
+msgid "Batch Requests"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:146
+#, no-c-format
+msgid ""
+"Seam Remoting allows multiple component calls to be executed within a single "
+"request. It is recommended that this feature is used wherever it is "
+"appropriate to reduce network traffic."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:149
+#, no-c-format
+msgid ""
+"The method <literal>Seam.Remoting.startBatch()</literal> will start a new "
+"batch, and any component calls executed after starting a batch are queued, "
+"rather than being sent immediately. When all the desired component calls "
+"have been added to the batch, the <literal>Seam.Remoting.executeBatch()</"
+"literal> method will send a single request containing all of the queued "
+"calls to the server, where they will be executed in order. After the calls "
+"have been executed, a single response containining all return values will be "
+"returned to the client and the callback functions (if provided) triggered in "
+"the same order as execution."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:152
+#, no-c-format
+msgid ""
+"If you start a new batch via the <literal>startBatch()</literal> method but "
+"then decide you don't want to send it, the <literal>Seam.Remoting.cancelBatch"
+"()</literal> method will discard any calls that were queued and exit the "
+"batch mode."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:155
+#, no-c-format
+msgid ""
+"To see an example of a batch being used, take a look at <literal>/examples/"
+"remoting/chatroom</literal>."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:159
+#, no-c-format
+msgid "Working with Data types"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:160
+#, no-c-format
+msgid "Primitives / Basic Types"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:161
+#, no-c-format
+msgid ""
+"This section describes the support for basic data types. On the server side "
+"these values are generally compatible with either their primitive type or "
+"their corresponding wrapper class."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:164
+#, no-c-format
+msgid "String"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:165
+#, no-c-format
+msgid ""
+"Simply use Javascript String objects when setting String parameter values."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:168
+#, no-c-format
+msgid "Number"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:169
+#, no-c-format
+msgid ""
+"There is support for all number types supported by Java. On the client side, "
+"number values are always serialized as their String representation and then "
+"on the server side they are converted to the correct destination type. "
+"Conversion into either a primitive or wrapper type is supported for "
+"<literal>Byte</literal>, <literal>Double</literal>, <literal>Float</"
+"literal>, <literal>Integer</literal>, <literal>Long</literal> and "
+"<literal>Short</literal> types."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:172
+#, no-c-format
+msgid "Boolean"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:173
+#, no-c-format
+msgid ""
+"Booleans are represented client side by Javascript Boolean values, and "
+"server side by a Java boolean."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:176
+#, no-c-format
+msgid "JavaBeans"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:177
+#, no-c-format
+msgid ""
+"In general these will be either Seam entity or JavaBean components, or some "
+"other non-component class. Use the appropriate method (either <literal>Seam."
+"Component.newInstance()</literal> for Seam components or <literal>Seam."
+"Remoting.createType()</literal> for everything else) to create a new "
+"instance of the object."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:180
+#, no-c-format
+msgid ""
+"It is important to note that only objects that are created by either of "
+"these two methods should be used as parameter values, where the parameter is "
+"not one of the other valid types mentioned anywhere else in this section. In "
+"some situations you may have a component method where the exact parameter "
+"type cannot be determined, such as:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:183
+#, no-c-format
+msgid ""
+"@Name(\"myAction\")\n"
+"  public class MyAction implements MyActionLocal {\n"
+"    public void doSomethingWithObject(Object obj) {\n"
+"      // code\n"
+"    }\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:184
+#, no-c-format
+msgid ""
+"In this case you might want to pass in an instance of your "
+"<literal>myWidget</literal> component, however the interface for "
+"<literal>myAction</literal> won't include <literal>myWidget</literal> as it "
+"is not directly referenced by any of its methods. To get around this, "
+"<literal>MyWidget</literal> needs to be explicitly imported:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:187
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?myAction&amp;myWidget\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:188
+#, no-c-format
+msgid ""
+"This will then allow a <literal>myWidget</literal> object to be created with "
+"<literal>Seam.Component.newInstance(\"myWidget\")</literal>, which can then "
+"be passed to <literal>myAction.doSomethingWithObject()</literal>."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:191
+#, no-c-format
+msgid "Dates and Times"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:192
+#, no-c-format
+msgid ""
+"Date values are serialized into a String representation that is accurate to "
+"the millisecond. On the client side, use a Javascript Date object to work "
+"with date values. On the server side, use any <literal>java.util.Date</"
+"literal> (or descendent, such as <literal>java.sql.Date</literal> or "
+"<literal>java.sql.Timestamp</literal> class."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:195
+#, no-c-format
+msgid "Enums"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:196
+#, no-c-format
+msgid ""
+"On the client side, enums are treated the same as Strings. When setting the "
+"value for an enum parameter, simply use the String representation of the "
+"enum. Take the following component as an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:199
+#, no-c-format
+msgid ""
+"@Name(\"paintAction\")\n"
+"  public class paintAction implements paintLocal {\n"
+"    public enum Color {red, green, blue, yellow, orange, purple};\n"
+"\n"
+"    public void paint(Color color) {\n"
+"      // code\n"
+"    }    \n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:200
+#, no-c-format
+msgid ""
+"To call the <literal>paint()</literal> method with the color <literal>red</"
+"literal>, pass the parameter value as a String literal:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:203
+#, no-c-format
+msgid "Seam.Component.getInstance(\"paintAction\").paint(\"red\");"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:204
+#, no-c-format
+msgid ""
+"The inverse is also true - that is, if a component method returns an enum "
+"parameter (or contains an enum field anywhere in the returned object graph) "
+"then on the client-side it will be represented as a String."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:207
+#, no-c-format
+msgid "Collections"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:208
+#, no-c-format
+msgid "Bags"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:209
+#, no-c-format
+msgid ""
+"Bags cover all collection types including arrays, collections, lists, sets, "
+"(but excluding Maps - see the next section for those), and are implemented "
+"client-side as a Javascript array. When calling a component method that "
+"accepts one of these types as a parameter, your parameter should be a "
+"Javascript array. If a component method returns one of these types, then the "
+"return value will also be a Javascript array. The remoting framework is "
+"clever enough on the server side to convert the bag to an appropriate type "
+"for the component method call."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:212
+#, no-c-format
+msgid "Maps"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:213
+#, no-c-format
+msgid ""
+"As there is no native support for Maps within Javascript, a simple Map "
+"implementation is provided with the Seam Remoting framework. To create a Map "
+"which can be used as a parameter to a remote call, create a new "
+"<literal>Seam.Remoting.Map</literal> object:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:216
+#, no-c-format
+msgid "var map = new Seam.Remoting.Map();"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:217
+#, no-c-format
+msgid ""
+"This Javascript implementation provides basic methods for working with Maps: "
+"<literal>size()</literal>, <literal>isEmpty()</literal>, <literal>keySet()</"
+"literal>, <literal>values()</literal>, <literal>get(key)</literal>, "
+"<literal>put(key, value)</literal>, <literal>remove(key)</literal> and "
+"<literal>contains(key)</literal>. Each of these methods are equivalent to "
+"their Java counterpart. Where the method returns a collection, such as "
+"<literal>keySet()</literal> and <literal>values()</literal>, a Javascript "
+"Array object will be returned that contains the key or value objects "
+"(respectively)."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:220
+#, no-c-format
+msgid "Debugging"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:221
+#, no-c-format
+msgid ""
+"To aid in tracking down bugs, it is possible to enable a debug mode which "
+"will display the contents of all the packets send back and forth between the "
+"client and server in a popup window. To enable debug mode, either execute "
+"the <literal>setDebug()</literal> method in Javascript:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:224
+#, no-c-format
+msgid "Seam.Remoting.setDebug(true);"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:225
+#, no-c-format
+msgid "Or configure it via components.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:228
+#, no-c-format
+msgid "&lt;remoting:remoting debug=\"true\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:229
+#, no-c-format
+msgid ""
+"To turn off debugging, call <literal>setDebug(false)</literal>. If you want "
+"to write your own messages to the debug log, call <literal>Seam.Remoting.log"
+"(message)</literal>."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:233
+#, no-c-format
+msgid "The Loading Message"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:234
+#, no-c-format
+msgid ""
+"The default loading message that appears in the top right corner of the "
+"screen can be modified, its rendering customised or even turned off "
+"completely."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:237
+#, no-c-format
+msgid "Changing the message"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:238
+#, no-c-format
+msgid ""
+"To change the message from the default \"Please Wait...\" to something "
+"different, set the value of <literal>Seam.Remoting.loadingMessage</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:241
+#, no-c-format
+msgid "Seam.Remoting.loadingMessage = \"Loading...\";"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:243
+#, no-c-format
+msgid "Hiding the loading message"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:244
+#, no-c-format
+msgid ""
+"To completely suppress the display of the loading message, override the "
+"implementation of <literal>displayLoadingMessage()</literal> and "
+"<literal>hideLoadingMessage()</literal> with functions that instead do "
+"nothing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:247
+#, no-c-format
+msgid ""
+"// don't display the loading indicator\n"
+"  Seam.Remoting.displayLoadingMessage = function() {};\n"
+"  Seam.Remoting.hideLoadingMessage = function() {};"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:248
+#, no-c-format
+msgid "A Custom Loading Indicator"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:249
+#, no-c-format
+msgid ""
+"It is also possible to override the loading indicator to display an animated "
+"icon, or anything else that you want. To do this override the "
+"<literal>displayLoadingMessage()</literal> and <literal>hideLoadingMessage()"
+"</literal> messages with your own implementation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:252
+#, no-c-format
+msgid ""
+"Seam.Remoting.displayLoadingMessage = function() {\n"
+"    // Write code here to display the indicator\n"
+"  };\n"
+"  \n"
+"  Seam.Remoting.hideLoadingMessage = function() {\n"
+"    // Write code here to hide the indicator\n"
+"  };"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:253
+#, no-c-format
+msgid "Controlling what data is returned"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:254
+#, no-c-format
+msgid ""
+"When a remote method is executed, the result is serialized into an XML "
+"response that is returned to the client. This response is then unmarshaled "
+"by the client into a Javascript object. For complex types (i.e. Javabeans) "
+"that include references to other objects, all of these referenced objects "
+"are also serialized as part of the response. These objects may reference "
+"other objects, which may reference other objects, and so forth. If left "
+"unchecked, this object \"graph\" could potentially be enormous, depending on "
+"what relationships exist between your objects. And as a side issue (besides "
+"the potential verbosity of the response), you might also wish to prevent "
+"sensitive information from being exposed to the client."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:257
+#, no-c-format
+msgid ""
+"Seam Remoting provides a simple means to \"constrain\" the object graph, by "
+"specifying the <literal>exclude</literal> field of the remote method's "
+"<literal>@WebRemote</literal> annotation. This field accepts a String array "
+"containing one or more paths specified using dot notation. When invoking a "
+"remote method, the objects in the result's object graph that match these "
+"paths are excluded from the serialized result packet."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:260
+#, no-c-format
+msgid ""
+"For all our examples, we'll use the following <literal>Widget</literal> "
+"class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:263
+#, no-c-format
+msgid ""
+"@Name(\"widget\")\n"
+"public class Widget\n"
+"{\n"
+"  private String value;\n"
+"  private String secret;\n"
+"  private Widget child;\n"
+"  private Map&lt;String,Widget&gt; widgetMap;\n"
+"  private List&lt;Widget&gt; widgetList;\n"
+"  \n"
+"  // getters and setters for all fields\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:264
+#, no-c-format
+msgid "Constraining normal fields"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:265
+#, no-c-format
+msgid ""
+"If your remote method returns an instance of <literal>Widget</literal>, but "
+"you don't want to expose the <literal>secret</literal> field because it "
+"contains sensitive information, you would constrain it like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:268
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:269
+#, no-c-format
+msgid ""
+"The value \"secret\" refers to the <literal>secret</literal> field of the "
+"returned object. Now, suppose that we don't care about exposing this "
+"particular field to the client. Instead, notice that the <literal>Widget</"
+"literal> value that is returned has a field <literal>child</literal> that is "
+"also a <literal>Widget</literal>. What if we want to hide the "
+"<literal>child</literal>'s <literal>secret</literal> value instead? We can "
+"do this by using dot notation to specify this field's path within the "
+"result's object graph:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:272
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"child.secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:273
+#, no-c-format
+msgid "Constraining Maps and Collections"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:274
+#, no-c-format
+msgid ""
+"The other place that objects can exist within an object graph are within a "
+"<literal>Map</literal> or some kind of collection (<literal>List</literal>, "
+"<literal>Set</literal>, <literal>Array</literal>, etc). Collections are "
+"easy, and are treated like any other field. For example, if our "
+"<literal>Widget</literal> contained a list of other <literal>Widget</"
+"literal>s in its <literal>widgetList</literal> field, to constrain the "
+"<literal>secret</literal> field of the <literal>Widget</literal>s in this "
+"list the annotation would look like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:277
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetList.secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:278
+#, no-c-format
+msgid ""
+"To constrain a <literal>Map</literal>'s key or value, the notation is "
+"slightly different. Appending <literal>[key]</literal> after the "
+"<literal>Map</literal>'s field name will constrain the <literal>Map</"
+"literal>'s key object values, while <literal>[value]</literal> will "
+"constrain the value object values. The following example demonstrates how "
+"the values of the <literal>widgetMap</literal> field have their "
+"<literal>secret</literal> field constrained:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:281
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetMap[value].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:282
+#, no-c-format
+msgid "Constraining objects of a specific type"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:283
+#, no-c-format
+msgid ""
+"There is one last notation that can be used to constrain the fields of a "
+"type of object no matter where in the result's object graph it appears. This "
+"notation uses either the name of the component (if the object is a Seam "
+"component) or the fully qualified class name (only if the object is not a "
+"Seam component) and is expressed using square brackets:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:286
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"[widget].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:287
+#, no-c-format
+msgid "Combining Constraints"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:288
+#, no-c-format
+msgid ""
+"Constraints can also be combined, to filter objects from multiple paths "
+"within the object graph:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:291
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetList.secret\", \"widgetMap[value].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:292
+#, no-c-format
+msgid "JMS Messaging"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:293
+#, no-c-format
+msgid ""
+"Seam Remoting provides experimental support for JMS Messaging. This section "
+"describes the JMS support that is currently implemented, but please note "
+"that this may change in the future. It is currently not recommended that "
+"this feature is used within a production environment."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:297
+#, no-c-format
+msgid ""
+"Before you can subscribe to a JMS topic, you must first configure a list of "
+"the topics that can be subscribed to by Seam Remoting. List the topics under "
+"<literal>org.jboss.seam.remoting.messaging.subscriptionRegistry."
+"allowedTopics</literal> in <literal>seam.properties</literal>, <literal>web."
+"xml</literal> or <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:300 Remoting.xml:333
+#, no-c-format
+msgid "&lt;remoting:remoting poll-timeout=\"5\" poll-interval=\"1\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:301
+#, no-c-format
+msgid "Subscribing to a JMS Topic"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:302
+#, no-c-format
+msgid "The following example demonstrates how to subscribe to a JMS Topic:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:305
+#, no-c-format
+msgid ""
+"function subscriptionCallback(message)\n"
+"  {\n"
+"    if (message instanceof Seam.Remoting.TextMessage)\n"
+"      alert(\"Received message: \" + message.getText());\n"
+"  }        \n"
+"        \n"
+"  Seam.Remoting.subscribe(\"topicName\", subscriptionCallback);"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:306
+#, no-c-format
+msgid ""
+"The <literal>Seam.Remoting.subscribe()</literal> method accepts two "
+"parameters, the first being the name of the JMS Topic to subscribe to, the "
+"second being the callback function to invoke when a message is received."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:309
+#, no-c-format
+msgid ""
+"There are two types of messages supported, Text messages and Object "
+"messages. If you need to test for the type of message that is passed to your "
+"callback function you can use the <literal>instanceof</literal> operator to "
+"test whether the message is a <literal>Seam.Remoting.TextMessage</literal> "
+"or <literal>Seam.Remoting.ObjectMessage</literal>. A <literal>TextMessage</"
+"literal> contains the text value in its <literal>text</literal> field (or "
+"alternatively call <literal>getText()</literal> on it), while an "
+"<literal>ObjectMessage</literal> contains its object value in its "
+"<literal>object</literal> field (or call its <literal>getObject()</literal> "
+"method)."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:312
+#, no-c-format
+msgid "Unsubscribing from a Topic"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:313
+#, no-c-format
+msgid ""
+"To unsubscribe from a topic, call <literal>Seam.Remoting.unsubscribe()</"
+"literal> and pass in the topic name:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:316
+#, no-c-format
+msgid "Seam.Remoting.unsubscribe(\"topicName\");"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:317
+#, no-c-format
+msgid "Tuning the Polling Process"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:318
+#, no-c-format
+msgid ""
+"There are two parameters which you can modify to control how polling occurs. "
+"The first one is <literal>Seam.Remoting.pollInterval</literal>, which "
+"controls how long to wait between subsequent polls for new messages. This "
+"parameter is expressed in seconds, and its default setting is 10."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:321
+#, no-c-format
+msgid ""
+"The second parameter is <literal>Seam.Remoting.pollTimeout</literal>, and is "
+"also expressed as seconds. It controls how long a request to the server "
+"should wait for a new message before timing out and sending an empty "
+"response. Its default is 0 seconds, which means that when the server is "
+"polled, if there are no messages ready for delivery then an empty response "
+"will be immediately returned."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:324
+#, no-c-format
+msgid ""
+"Caution should be used when setting a high <literal>pollTimeout</literal> "
+"value; each request that has to wait for a message means that a server "
+"thread is tied up until a message is received, or until the request times "
+"out. If many such requests are being served simultaneously, it could mean a "
+"large number of threads become tied up because of this reason."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:327
+#, no-c-format
+msgid ""
+"It is recommended that you set these options via components.xml, however "
+"they can be overridden via Javascript if desired. The following example "
+"demonstrates how to configure the polling to occur much more aggressively. "
+"You should set these parameters to suitable values for your application:"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:330
+#, no-c-format
+msgid "Via components.xml:"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:334
+#, no-c-format
+msgid "Via JavaScript:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:337
+#, no-c-format
+msgid ""
+"// Only wait 1 second between receiving a poll response and sending the next "
+"poll request.\n"
+"  Seam.Remoting.pollInterval = 1;\n"
+"  \n"
+"  // Wait up to 5 seconds on the server for new messages\n"
+"  Seam.Remoting.pollTimeout = 5;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Security.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Security.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Security.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1676 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Security.xml:10
+#, no-c-format
+msgid "Security"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:11
+#, no-c-format
+msgid ""
+"The Seam Security API is an optional Seam feature that provides "
+"authentication and authorization features for securing both domain and page "
+"resources within your Seam project."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:14
+#, no-c-format
+msgid "Overview"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:15
+#, no-c-format
+msgid "Seam Security provides two different modes of operation:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:20
+#, no-c-format
+msgid ""
+"<emphasis>simplified mode</emphasis> - this mode supports authentication "
+"services and simple role-based security checks."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:25
+#, no-c-format
+msgid ""
+"<emphasis>advanced mode</emphasis> - this mode supports all the same "
+"features as the simplified mode, plus it offers rule-based security checks "
+"using JBoss Rules."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:30
+#, no-c-format
+msgid "Which mode is right for my application?"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:31
+#, no-c-format
+msgid ""
+"That all depends on the requirements of your application. If you have "
+"minimal security requirements, for example if you only wish to restrict "
+"certain pages and actions to users who are logged in, or who belong to a "
+"certain role, then the simplified mode will probably be sufficient. The "
+"advantages of this is a more simplified configuration, significantly less "
+"libraries to include, and a smaller memory footprint."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:34
+#, no-c-format
+msgid ""
+"If on the other hand, your application requires security checks based on "
+"contextual state or complex business rules, then you will require the "
+"features provided by the advanced mode."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:37
+#, no-c-format
+msgid "Requirements"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:38
+#, no-c-format
+msgid ""
+"If using the advanced mode features of Seam Security, the following jar "
+"files are required to be configured as modules in <literal>application.xml</"
+"literal>. If you are using Seam Security in simplified mode, these are "
+"<emphasis>not</emphasis> required:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:43
+#, no-c-format
+msgid "drools-compiler-3.0.5.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:48
+#, no-c-format
+msgid "drools-core-3.0.5.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:53
+#, no-c-format
+msgid "commons-jci-core-1.0-406301.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:58
+#, no-c-format
+msgid "commons-jci-janino-2.4.3.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:63
+#, no-c-format
+msgid "commons-lang-2.1.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:68
+#, no-c-format
+msgid "janino-2.4.3.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:73
+#, no-c-format
+msgid "stringtemplate-2.3b6.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:78
+#, no-c-format
+msgid "antlr-2.7.6.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:83
+#, no-c-format
+msgid "antlr-3.0ea8.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:88
+#, no-c-format
+msgid ""
+"For web-based security, <literal>jboss-seam-ui.jar</literal> must also be "
+"included in the application's war file. Also, to make use of the security EL "
+"functions, <literal>SeamFaceletViewHandler</literal> must be used. Configure "
+"it in <literal>faces-config.xml</literal> like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:91
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;view-handler&gt;org.jboss.seam.ui.facelet.SeamFaceletViewHandler&lt;/"
+"view-handler&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:92
+#, no-c-format
+msgid "Authentication"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:93
+#, no-c-format
+msgid ""
+"The authentication features provided by Seam Security are built upon JAAS "
+"(Java Authentication and Authorization Service), and as such provide a "
+"robust and highly configurable API for handling user authentication. "
+"However, for less complex authentication requirements Seam offers a much "
+"more simplified method of authentication that hides the complexity of JAAS."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:96
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:97
+#, no-c-format
+msgid ""
+"The simplified authentication method uses a built-in JAAS login module, "
+"<literal>SeamLoginModule</literal>, which delegates authentication to one of "
+"your own Seam components. This login module is already configured inside "
+"Seam as part of a default application policy and as such does not require "
+"any additional configuration files. It allows you to write an authentication "
+"method using the entity classes that are provided by your own application. "
+"Configuring this simplified form of authentication requires the "
+"<literal>identity</literal> component to be configured in "
+"<literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:100
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:security=\"http://jboss.com/products/seam/security\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core http://jboss.com/"
+"products/seam/core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components http://jboss.com/"
+"products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/drools http://jboss.com/"
+"products/seam/drools-1.2.xsd\"\n"
+"                 http://jboss.com/products/seam/security http://jboss.com/"
+"products/seam/security-1.2.xsd\"&gt;                \n"
+"        \n"
+"    &lt;security:identity authenticate-method=\"#{authenticator.authenticate}"
+"\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:101
+#, no-c-format
+msgid ""
+"If you wish to use the advanced security features such as rule-based "
+"permission checks, all you need to do is include the Drools (JBoss Rules) "
+"jars in your classpath, and add some additional configuration, described "
+"later."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:104
+#, no-c-format
+msgid ""
+"The EL expression <literal>#{authenticator.authenticate}</literal> is a "
+"method binding indicating that the <literal>authenticate</literal> method of "
+"the <literal>authenticator</literal> component will be used to authenticate "
+"the user."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:107
+#, no-c-format
+msgid "Writing an authentication method"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:108
+#, no-c-format
+msgid ""
+"The <literal>authenticate-method</literal> property specified for "
+"<literal>identity</literal> in <literal>components.xml</literal> specifies "
+"which method will be used by <literal>SeamLoginModule</literal> to "
+"authenticate users. This method takes no parameters, and is expected to "
+"return a boolean indicating whether authentication is successful or not. The "
+"user's username and password can be obtained from <literal>Identity.instance"
+"().getUsername()</literal> and <literal>Identity.instance().getPassword()</"
+"literal>, respectively. Any roles that the user is a member of should be "
+"assigned using <literal>Identity.instance().addRole()</literal>. Here's a "
+"complete example of an authentication method inside a JavaBean component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:111
+#, no-c-format
+msgid ""
+"@Name(\"authenticator\")\n"
+"public class Authenticator {\n"
+"   @In EntityManager entityManager;\n"
+"   \n"
+"   public boolean authenticate() {\n"
+"      try\n"
+"      {\n"
+"         User user = (User) entityManager.createQuery(\n"
+"            \"from User where username = :username and password = :password"
+"\")\n"
+"            .setParameter(\"username\", Identity.instance().getUsername())\n"
+"            .setParameter(\"password\", Identity.instance().getPassword())\n"
+"            .getSingleResult();\n"
+"\n"
+"         if (user.getRoles() != null)\n"
+"         {\n"
+"            for (UserRole mr : user.getRoles())\n"
+"               Identity.instance().addRole(mr.getName());\n"
+"         }\n"
+"\n"
+"         return true;\n"
+"      }\n"
+"      catch (NoResultException ex)\n"
+"      {\n"
+"         FacesMessages.instance().add(\"Invalid username/password\");\n"
+"         return false;\n"
+"      }\n"
+"      \n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:112
+#, no-c-format
+msgid ""
+"In the above example, both <literal>User</literal> and <literal>UserRole</"
+"literal> are application-specific entity beans. The <literal>roles</literal> "
+"parameter is populated with the roles that the user is a member of, which "
+"should be added to the <literal>Set</literal> as literal string values, e.g. "
+"\"admin\", \"user\". In this case, if the user record is not found and a "
+"<literal>NoResultException</literal> thrown, the authentication method "
+"returns <literal>false</literal> to indicate the authentication failed."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:115
+#, no-c-format
+msgid "Writing a login form"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:116
+#, no-c-format
+msgid ""
+"The <literal>Identity</literal> component provides both <literal>username</"
+"literal> and <literal>password</literal> properties, catering for the most "
+"common authentication scenario. These properties can be bound directly to "
+"the username and password fields on a login form. Once these properties are "
+"set, calling the <literal>identity.login()</literal> method will "
+"authenticate the user using the provided credentials. Here's an example of a "
+"simple login form:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:119
+#, no-c-format
+msgid ""
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"name\" value=\"Username\"/&gt;\n"
+"    &lt;h:inputText id=\"name\" value=\"#{identity.username}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"password\" value=\"Password\"/&gt;\n"
+"    &lt;h:inputSecret id=\"password\" value=\"#{identity.password}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;div&gt;\n"
+"    &lt;h:commandButton value=\"Login\" action=\"#{identity.login}\"/&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:120
+#, no-c-format
+msgid ""
+"Similarly, logging out the user is done by calling <literal>#{identity."
+"logout}</literal>. Calling this action will clear the security state of the "
+"currently authenticated user."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:123
+#, no-c-format
+msgid "Simplified Configuration - Summary"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:124
+#, no-c-format
+msgid ""
+"So to sum up, there are the three easy steps to configure authentication:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:129
+#, no-c-format
+msgid ""
+"Configure an authentication method in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:134
+#, no-c-format
+msgid "Write an authentication method."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:139
+#, no-c-format
+msgid "Write a login form so that the user can authenticate."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:144
+#, no-c-format
+msgid "Handling Security Exceptions"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:145
+#, no-c-format
+msgid ""
+"To prevent users from receiving the default error page in response to a "
+"security error, it's recommended that <literal>pages.xml</literal> is "
+"configured to redirect security errors to a more \"pretty\" page. The two "
+"main types of exceptions thrown by the security API are:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:150
+#, no-c-format
+msgid ""
+"<literal>NotLoggedInException</literal> - This exception is thrown if the "
+"user attempts to access a restricted action or page when they are not logged "
+"in."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:155
+#, no-c-format
+msgid ""
+"<literal>AuthorizationException</literal> - This exception is only thrown if "
+"the user is already logged in, and they have attempted to access a "
+"restricted action or page for which they do not have the necessary "
+"privileges."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:160
+#, no-c-format
+msgid ""
+"In the case of a <literal>NotLoggedInException</literal>, it is recommended "
+"that the user is redirected to either a login or registration page so that "
+"they can log in. For an <literal>AuthorizationException</literal>, it may be "
+"useful to redirect the user to an error page. Here's an example of a "
+"<literal>pages.xml</literal> file that redirects both of these security "
+"exceptions:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:163
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"\n"
+"    ...\n"
+"    \n"
+"    &lt;exception class=\"org.jboss.seam.security.NotLoggedInException"
+"\"&gt;\n"
+"        &lt;redirect view-id=\"/login.xhtml\"&gt;\n"
+"            &lt;message&gt;You must be logged in to perform this action&lt;/"
+"message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"    \n"
+"    &lt;exception class=\"org.jboss.seam.security.AuthorizationException"
+"\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"        &lt;redirect view-id=\"/security_error.xhtml\"&gt;\n"
+"            &lt;message&gt;\n"
+"                You do not have the necessary security privileges to perform "
+"this action.\n"
+"            &lt;/message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"  \n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:164
+#, no-c-format
+msgid ""
+"Most web applications require even more sophisticated handling of login "
+"redirection, so Seam includes some special functionality for handling this "
+"problem."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:167
+#, no-c-format
+msgid "Login Redirection"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:168
+#, no-c-format
+msgid ""
+"You can ask Seam to redirect the user to a login screen when an "
+"unauthenticated user tries to access a particular view (or wildcarded view "
+"id) as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:171
+#, no-c-format
+msgid ""
+"&lt;pages login-view-id=\"/login.xhtml\"&gt;\n"
+"\n"
+"    &lt;page view-id=\"/members/*\" login-required=\"true\"/&gt;\n"
+"    \n"
+"    ...\n"
+"    \n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:172
+#, no-c-format
+msgid ""
+"(This is less of a blunt instrument than the exception handler shown above, "
+"but should probably be used in conjunction with it.)"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:175
+#, no-c-format
+msgid ""
+"After the user logs in, we want to automatically send them back where they "
+"came from, so they can retry the action that required logging in. If you add "
+"the following event listeners to <literal>components.xml</literal>, attempts "
+"to access a restricted view while not logged in will be remembered, so that "
+"upon the user successfully logging in they will be redirected to the "
+"originally requested view, with any page parameters that existed in the "
+"original request."
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:178
+#, no-c-format
+msgid ""
+"&lt;event type=\"org.jboss.seam.notLoggedIn\"&gt;\n"
+"    &lt;action expression=\"#{redirect.captureCurrentView}\"/&gt;\n"
+"&lt;/event&gt;\n"
+"    \n"
+"&lt;event type=\"org.jboss.seam.postAuthenticate\"&gt;\n"
+"    &lt;action expression=\"#{redirect.returnToCapturedView}\"/&gt;\n"
+"&lt;/event&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:179
+#, no-c-format
+msgid ""
+"Note that login redirection is implemented as a conversation-scoped "
+"mechanism, so don't end the conversation in your <literal>authenticate()</"
+"literal> method."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:182
+#, no-c-format
+msgid "Advanced Authentication Features"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:183
+#, no-c-format
+msgid ""
+"This section explores some of the advanced features provided by the security "
+"API for addressing more complex security requirements."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:186
+#, no-c-format
+msgid "Using your container's JAAS configuration"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:187
+#, no-c-format
+msgid ""
+"If you would rather not use the simplified JAAS configuration provided by "
+"the Seam Security API, you may instead delegate to the default system JAAS "
+"configuration by providing a <literal>jaasConfigName</literal> property in "
+"<literal>components.xml</literal>. For example, if you are using JBoss AS "
+"and wish to use the <literal>other</literal> policy (which uses the "
+"<literal>UsersRolesLoginModule</literal> login module provided by JBoss AS), "
+"then the entry in <literal>components.xml</literal> would look like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:190
+#, no-c-format
+msgid ""
+"&lt;security:identity authenticate-method=\"#{authenticator.authenticate}"
+"\" \n"
+"                      jaas-config-name=\"other\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:191
+#, no-c-format
+msgid "Authorization"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:192
+#, no-c-format
+msgid ""
+"There are a number of authorization features provided by the Seam Security "
+"API for securing access to components, component methods, and pages. This "
+"section describes each of these. An important thing to note is that if you "
+"wish to use any of the advanced features (such as rule-based permissions) "
+"then your <literal>components.xml</literal> must be configured to support "
+"this - see the Configuration section above."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:195
+#, no-c-format
+msgid "Core concepts"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:196
+#, no-c-format
+msgid ""
+"Each of the authorization mechanisms provided by the Seam Security API are "
+"built upon the concept of a user being granted roles and/or permissions. A "
+"role is a <emphasis>group</emphasis>, or <emphasis>type</emphasis>, of user "
+"that may have been granted certain privileges for performing one or more "
+"specific actions within an application. A permission on the other hand is a "
+"privilege (sometimes once-off) for performing a single, specific action. It "
+"is entirely possible to build an application using nothing but permissions, "
+"however roles offer a higher level of convenience when granting privileges "
+"to groups of users."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:199
+#, no-c-format
+msgid ""
+"Roles are simple, consisting of only a name such as \"admin\", \"user\", "
+"\"customer\", etc. Permissions consist of both a name and an action, and are "
+"represented within this documentation in the form <literal>name:action</"
+"literal>, for example <literal>customer:delete</literal>, or "
+"<literal>customer:insert</literal>."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:202
+#, no-c-format
+msgid "Securing components"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:203
+#, no-c-format
+msgid ""
+"Let's start by examining the simplest form of authorization, component "
+"security, starting with the <literal>@Restrict</literal> annotation."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:206
+#, no-c-format
+msgid "The @Restrict annotation"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:207
+#, no-c-format
+msgid ""
+"Seam components may be secured either at the method or the class level, "
+"using the <literal>@Restrict</literal> annotation. If both a method and it's "
+"declaring class are annotated with <literal>@Restrict</literal>, the method "
+"restriction will take precedence (and the class restriction will not apply). "
+"If a method invocation fails a security check, then an exception will be "
+"thrown as per the contract for <literal>Identity.checkRestriction()</"
+"literal> (see Inline Restrictions). A <literal>@Restrict</literal> on just "
+"the component class itself is equivalent to adding <literal>@Restrict</"
+"literal> to each of its methods."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:210
+#, no-c-format
+msgid ""
+"An empty <literal>@Restrict</literal> implies a permission check of "
+"<literal>componentName:methodName</literal>. Take for example the following "
+"component method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:213
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class AccountAction {\n"
+"    @Restrict public void delete() {\n"
+"      ...\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:214
+#, no-c-format
+msgid ""
+"In this example, the implied permission required to call the <literal>delete"
+"()</literal> method is <literal>account:delete</literal>. The equivalent of "
+"this would be to write <literal>@Restrict(\"#{s:hasPermission"
+"('account','delete',null)}\")</literal>. Now let's look at another example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:217
+#, no-c-format
+msgid ""
+"@Restrict @Name(\"account\")\n"
+"public class AccountAction {\n"
+"    public void insert() {\n"
+"      ...\n"
+"    }\n"
+"    @Restrict(\"#{s:hasRole('admin')}\") \n"
+"    public void delete() {\n"
+"      ...\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:218
+#, no-c-format
+msgid ""
+"This time, the component class itself is annotated with <literal>@Restrict</"
+"literal>. This means that any methods without an overriding "
+"<literal>@Restrict</literal> annotation require an implicit permission "
+"check. In the case of this example, the <literal>insert()</literal> method "
+"requires a permission of <literal>account:insert</literal>, while the "
+"<literal>delete()</literal> method requires that the user is a member of the "
+"<literal>admin</literal> role."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:221
+#, no-c-format
+msgid ""
+"Before we go any further, let's address the <literal>#{s:hasRole()}</"
+"literal> expression seen in the above example. Both <literal>s:hasRole</"
+"literal> and <literal>s:hasPermission</literal> are EL functions, which "
+"delegate to the correspondingly named methods of the <literal>Identity</"
+"literal> class. These functions can be used within any EL expression "
+"throughout the entirety of the security API."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:224
+#, no-c-format
+msgid ""
+"Being an EL expression, the value of the <literal>@Restrict</literal> "
+"annotation may reference any objects that exist within a Seam context. This "
+"is extremely useful when performing permission checks for a specific object "
+"instance. Look at this example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:227
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class AccountAction {\n"
+"    @In Account selectedAccount;\n"
+"    @Restrict(\"#{s:hasPermission('account','modify',selectedAccount)}\")\n"
+"    public void modify() {\n"
+"        selectedAccount.modify();\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:228
+#, no-c-format
+msgid ""
+"The interesting thing to note from this example is the reference to "
+"<literal>selectedAccount</literal> seen within the <literal>hasPermission()</"
+"literal> function call. The value of this variable will be looked up from "
+"within the Seam context, and passed to the <literal>hasPermission()</"
+"literal> method in <literal>Identity</literal>, which in this case can then "
+"determine if the user has the required permission for modifying the "
+"specified <literal>Account</literal> object."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:231
+#, no-c-format
+msgid "Inline restrictions"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:232
+#, no-c-format
+msgid ""
+"Sometimes it might be desirable to perform a security check in code, without "
+"using the <literal>@Restrict</literal> annotation. In this situation, simply "
+"use <literal>Identity.checkRestriction()</literal> to evaluate a security "
+"expression, like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:235
+#, no-c-format
+msgid ""
+"public void deleteCustomer() {\n"
+"    Identity.instance().checkRestriction(\"#{s:hasPermission"
+"('customer','delete',\n"
+"        selectedCustomer)}\");\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:236
+#, no-c-format
+msgid ""
+"If the expression specified doesn't evaluate to <literal>true</literal>, "
+"either"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:241
+#, no-c-format
+msgid ""
+"if the user is not logged in, a <literal>NotLoggedInException</literal> "
+"exception is thrown or"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:246
+#, no-c-format
+msgid ""
+"if the user is logged in, an <literal>AuthorizationException</literal> "
+"exception is thrown."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:251
+#, no-c-format
+msgid ""
+"It is also possible to call the <literal>hasRole()</literal> and "
+"<literal>hasPermission()</literal> methods directly from Java code:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:254
+#, no-c-format
+msgid ""
+"if (!Identity.instance().hasRole(\"admin\"))\n"
+"     throw new AuthorizationException(\"Must be admin to perform this action"
+"\");\n"
+"\n"
+"if (!Identity.instance().hasPermission(\"customer\", \"create\", null))\n"
+"     throw new AuthorizationException(\"You may not create new customers\");"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:255
+#, no-c-format
+msgid "Security in the user interface"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:256
+#, no-c-format
+msgid ""
+"One indication of a well designed user interface is that the user is not "
+"presented with options for which they don't have the necessary privileges to "
+"use. Seam Security allows conditional rendering of either 1) sections of a "
+"page or 2) individual controls, based upon the privileges of the user, using "
+"the very same EL expressions that are used for component security."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:259
+#, no-c-format
+msgid ""
+"Let's take a look at some examples of interface security. First of all, "
+"let's pretend that we have a login form that should only be rendered if the "
+"user is not already logged in. Using the <literal>identity.isLoggedIn()</"
+"literal> property, we can write this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:262
+#, no-c-format
+msgid ""
+"&lt;h:form class=\"loginForm\" rendered=\"#{not identity.loggedIn}\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:263
+#, no-c-format
+msgid ""
+"If the user isn't logged in, then the login form will be rendered - very "
+"straight forward so far. Now let's pretend there is a menu on the page that "
+"contains some actions which should only be accessible to users in the "
+"<literal>manager</literal> role. Here's one way that these could be written:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:266
+#, no-c-format
+msgid ""
+"&lt;h:outputLink action=\"#{reports.listManagerReports}\" rendered=\"#{s:"
+"hasRole('manager')}\"&gt;\n"
+"    Manager Reports\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:267
+#, no-c-format
+msgid ""
+"This is also quite straight forward. If the user is not a member of the "
+"<literal>manager</literal> role, then the outputLink will not be rendered. "
+"The <literal>rendered</literal> attribute can generally be used on the "
+"control itself, or on a surrounding <literal>&lt;s:div&gt;</literal> or "
+"<literal>&lt;s:span&gt;</literal> control."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:270
+#, no-c-format
+msgid ""
+"Now for something more complex. Let's say you have a <literal>h:dataTable</"
+"literal> control on a page listing records for which you may or may not wish "
+"to render action links depending on the user's privileges. The <literal>s:"
+"hasPermission</literal> EL function allows us to pass in an object parameter "
+"which can be used to determine whether the user has the requested permission "
+"for that object or not. Here's how a dataTable with secured links might look:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:273
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{clients}\" var=\"cl\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Name&lt;/f:facet&gt;\n"
+"        #{cl.name}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;City&lt;/f:facet&gt;\n"
+"        #{cl.city}\n"
+"    &lt;/h:column&gt;   \n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"        &lt;s:link value=\"Modify Client\" action=\"#{clientAction.modify}"
+"\"\n"
+"                rendered=\"#{s:hasPermission('client','modify',cl)\"/&gt;\n"
+"        &lt;s:link value=\"Delete Client\" action=\"#{clientAction.delete}"
+"\"\n"
+"                rendered=\"#{s:hasPermission('client','delete',cl)\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:274
+#, no-c-format
+msgid "Securing pages"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:275
+#, no-c-format
+msgid ""
+"Page security requires that the application is using a <literal>pages.xml</"
+"literal> file, however is extremely simple to configure. Simply include a "
+"<literal>&lt;restrict/&gt;</literal> element within the <literal>page</"
+"literal> elements that you wish to secure. By default, if a value is not "
+"provided for the <literal>restrict</literal> element, an implied permission "
+"of <literal>{viewId}:render</literal> will be checked for whenever accessing "
+"that page. Otherwise the value will be evaluated as a standard security "
+"expression. Here's a couple of examples:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:278
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/settings.xhtml\"&gt;\n"
+"    &lt;restrict/&gt;\n"
+"&lt;/page&gt;\n"
+"        \n"
+"&lt;page view-id=\"/reports.xhtml\"&gt;    \n"
+"    &lt;restrict&gt;#{s:hasRole('admin')}&lt;/restrict&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:279
+#, no-c-format
+msgid ""
+"In the above example, the first page has an implied permission restriction "
+"of <literal>/settings.xhtml:render</literal>, while the second one checks "
+"that the user is a member of the <literal>admin</literal> role."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:282
+#, no-c-format
+msgid "Securing Entities"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:283
+#, no-c-format
+msgid ""
+"Seam security also makes it possible to apply security restrictions to read, "
+"insert, update and delete actions for entities."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:286
+#, no-c-format
+msgid ""
+"To secure all actions for an entity class, add a <literal>@Restrict</"
+"literal> annotation on the class itself:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:289
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"customer\")\n"
+"@Restrict\n"
+"public class Customer {\n"
+"  ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:290
+#, no-c-format
+msgid ""
+"If no expression is specified in the <literal>@Restrict</literal> "
+"annotation, the default security check that is performed is a permission "
+"check of <literal>entityName:action</literal>, where <literal>entityName</"
+"literal> is the name of the entity (or the class name if no @Name is "
+"specified), and the <literal>action</literal> is either <literal>read</"
+"literal>, <literal>insert</literal>, <literal>update</literal> or "
+"<literal>delete</literal>."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:293
+#, no-c-format
+msgid ""
+"It is also possible to only restrict certain actions, by placing a "
+"<literal>@Restrict</literal> annotation on the relevent entity lifecycle "
+"method (annotated as follows):"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:298
+#, no-c-format
+msgid ""
+"<literal>@PostLoad</literal> - Called after an entity instance is loaded "
+"from the database. Use this method to configure a <literal>read</literal> "
+"permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:303
+#, no-c-format
+msgid ""
+"<literal>@PrePersist</literal> - Called before a new instance of the entity "
+"is inserted. Use this method to configure an <literal>insert</literal> "
+"permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:308
+#, no-c-format
+msgid ""
+"<literal>@PreUpdate</literal> - Called before an entity is updated. Use this "
+"method to configure an <literal>update</literal> permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:313
+#, no-c-format
+msgid ""
+"<literal>@PreRemove</literal> - Called before an entity is deleted. Use this "
+"method to configure a <literal>delete</literal> permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:318
+#, no-c-format
+msgid ""
+"Here's an example of how an entity would be configured to perform a security "
+"check for any <literal>insert</literal> operations. Please note that the "
+"method is not required to do anything, the only important thing in regard to "
+"security is how it is annotated:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:321
+#, no-c-format
+msgid ""
+"@PrePersist @Restrict\n"
+"  public void prePersist() {}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:322
+#, no-c-format
+msgid ""
+"And here's an example of an entity permission rule that checks if the "
+"authenticated user is allowed to create a new blog entry (from the seamspace "
+"example):"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:325
+#, no-c-format
+msgid ""
+"rule InsertMemberBlog\n"
+"  no-loop\n"
+"  activation-group \"permissions\"\n"
+"when\n"
+"  c: PermissionCheck(name == \"memberBlog\", action == \"insert\", granted "
+"== false)\n"
+"  Principal(nm : name)\n"
+"  MemberBlog(mbr : member -&gt; (mbr.getUsername().equals(nm)))\n"
+"then\n"
+"  c.grant();\n"
+"  modify(c);\n"
+"end;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:326
+#, no-c-format
+msgid ""
+"Finally, we need to install a listener class that integrates Seam security "
+"with your JPA provider."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:329
+#, no-c-format
+msgid "Entity security with JPA"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:330
+#, no-c-format
+msgid ""
+"Security checks for EJB3 entity beans are performed with an "
+"<literal>EntityListener</literal>. You can install this listener by using "
+"the following <literal>META-INF/orm.xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:333
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;entity-mappings xmlns=\"http://java.sun.com/xml/ns/persistence/orm\"\n"
+"                 xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"                 xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence/"
+"orm \n"
+"                 http://java.sun.com/xml/ns/persistence/orm_1_0.xsd\"\n"
+"                 version=\"1.0\"&gt;\n"
+"                 \n"
+"    &lt;persistence-unit-metadata&gt;\n"
+"        &lt;persistence-unit-defaults&gt;\n"
+"            &lt;entity-listeners&gt;\n"
+"                &lt;entity-listener class=\"org.jboss.seam.security."
+"EntitySecurityListener\"/&gt;\n"
+"            &lt;/entity-listeners&gt;\n"
+"        &lt;/persistence-unit-defaults&gt;\n"
+"    &lt;/persistence-unit-metadata&gt;\n"
+"    \n"
+"&lt;/entity-mappings&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:334
+#, no-c-format
+msgid "Entity security with Hibernate"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:335
+#, no-c-format
+msgid ""
+"If you are using a Hibernate <literal>SessionFactory</literal> configured "
+"via Seam, you don't need to do anything special to use entity security."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:338
+#, no-c-format
+msgid "Writing Security Rules"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:339
+#, no-c-format
+msgid ""
+"Up to this point there has been a lot of mention of permissions, but no "
+"information about how permissions are actually defined or granted. This "
+"section completes the picture, by explaining how permission checks are "
+"processed, and how to implement permission checks for a Seam application."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:342
+#, no-c-format
+msgid "Permissions Overview"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:343
+#, no-c-format
+msgid ""
+"So how does the security API know whether a user has the <literal>customer:"
+"modify</literal> permission for a specific customer? Seam Security provides "
+"quite a novel method for determining user permissions, based on JBoss Rules. "
+"A couple of the advantages of using a rule engine are 1) a centralized "
+"location for the business logic that is behind each user permission, and 2) "
+"speed - JBoss Rules uses very efficient algorithms for evaluating large "
+"numbers of complex rules involving multiple conditions."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:346
+#, no-c-format
+msgid "Configuring a rules file"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:347
+#, no-c-format
+msgid ""
+"Seam Security expects to find a <literal>RuleBase</literal> component called "
+"<literal>securityRules</literal> which it uses to evaluate permission "
+"checks. This is configured in <literal>components.xml</literal> as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:350
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:security=\"http://jboss.com/products/seam/security\"\n"
+"            xmlns:drools=\"http://jboss.com/products/seam/drools\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                     http://jboss.com/products/seam/core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components  \n"
+"                     http://jboss.com/products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/drools \n"
+"                     http://jboss.com/products/seam/drools-1.2.xsd\"\n"
+"                 http://jboss.com/products/seam/security \n"
+"                     http://jboss.com/products/seam/security-1.2.xsd"
+"\"&gt;                 \n"
+"        \n"
+"   &lt;drools:rule-base name=\"securityRules\"&gt;\n"
+"       &lt;drools:rule-files&gt;\n"
+"           &lt;value&gt;/META-INF/security.drl&lt;/value&gt;\n"
+"       &lt;/drools:rule-files&gt;\n"
+"   &lt;/drools:rule-base&gt;    \n"
+"   \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:351
+#, no-c-format
+msgid ""
+"Once the <literal>RuleBase</literal> component is configured, it's time to "
+"write the security rules."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:354
+#, no-c-format
+msgid "Creating a security rules file"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:355
+#, no-c-format
+msgid ""
+"For this step you need to create a file called <literal>security.drl</"
+"literal> in the <literal>/META-INF</literal> directory of your application's "
+"jar file. In actual fact this file can be called anything you want, and "
+"exist in any location as long as it is configured appropriately in "
+"<literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:358
+#, no-c-format
+msgid ""
+"So what should the security rules file contain? At this stage it might be a "
+"good idea to at least skim through the JBoss Rules documentation, however to "
+"get started here's an extremely simple example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:361
+#, no-c-format
+msgid ""
+"package MyApplicationPermissions;\n"
+"\n"
+"import org.jboss.seam.security.PermissionCheck;\n"
+"import org.jboss.seam.security.Role;\n"
+"\n"
+"rule CanUserDeleteCustomers\n"
+"when\n"
+"  c: PermissionCheck(name == \"customer\", action == \"delete\")\n"
+"  Role(name == \"admin\")\n"
+"then\n"
+"  c.grant();\n"
+"end;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:362
+#, no-c-format
+msgid ""
+"Let's break this down. The first thing we see is the package declaration. A "
+"package in JBoss Rules is essentially a collection of rules. The package "
+"name can be anything you want - it doesn't relate to anything else outside "
+"the scope of the rule base."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:365
+#, no-c-format
+msgid ""
+"The next thing we can notice is a couple of import statements for the "
+"<literal>PermissionCheck</literal> and <literal>Role</literal> classes. "
+"These imports inform the rules engine that we'll be referencing these "
+"classes within our rules."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:368
+#, no-c-format
+msgid ""
+"Finally we have the code for the rule. Each rule within a package should be "
+"given a unique name (usually describing the purpose of the rule). In this "
+"case our rule is called <literal>CanUserDeleteCustomers</literal> and will "
+"be used to check whether a user is allowed to delete a customer record."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:371
+#, no-c-format
+msgid ""
+"Looking at the body of the rule definition we can notice two distinct "
+"sections. Rules have what is known as a left hand side (LHS) and a right "
+"hand side (RHS). The LHS consists of the conditional part of the rule, i.e. "
+"a list of conditions which must be satisfied for the rule to fire. The LHS "
+"is represented by the <literal>when</literal> section. The RHS is the "
+"consequence, or action section of the rule that will only be fired if all of "
+"the conditions in the LHS are met. The RHS is represented by the "
+"<literal>then</literal> section. The end of the rule is denoted by the "
+"<literal>end;</literal> line."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:374
+#, no-c-format
+msgid ""
+"If we look at the LHS of the rule, we see two conditions listed there. Let's "
+"examine the first condition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:377
+#, no-c-format
+msgid "c: PermissionCheck(name == \"customer\", action == \"delete\")"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:378
+#, no-c-format
+msgid ""
+"In plain english, this condition is stating that there must exist a "
+"<literal>PermissionCheck</literal> object with a <literal>name</literal> "
+"property equal to \"customer\", and an <literal>action</literal> property "
+"equal to \"delete\" within the working memory. What is the working memory? "
+"It is a session-scoped object that contains the contextual information that "
+"is required by the rules engine to make a decision about a permission check. "
+"Each time the <literal>hasPermission()</literal> method is called, a "
+"temporary <literal>PermissionCheck</literal> object, or <emphasis>Fact</"
+"emphasis>, is asserted into the working memory. This "
+"<literal>PermissionCheck</literal> corresponds exactly to the permission "
+"that is being checked, so for example if you call <literal>hasPermission"
+"(\"account\", \"create\", null)</literal> then a <literal>PermissionCheck</"
+"literal> object with a <literal>name</literal> equal to \"account\" and "
+"<literal>action</literal> equal to \"create\" will be asserted into the "
+"working memory for the duration of the permission check."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:381
+#, no-c-format
+msgid ""
+"So what else is in the working memory? Besides the short-lived temporary "
+"facts asserted during a permission check, there are some longer-lived "
+"objects in the working memory that stay there for the entire duration of a "
+"user being authenticated. These include any <literal>java.security."
+"Principal</literal> objects that are created as part of the authentication "
+"process, plus a <literal>org.jboss.seam.security.Role</literal> object for "
+"each of the roles that the user is a member of. It is also possible to "
+"assert additional long-lived facts into the working memory by calling "
+"<literal>Identity.instance().getSecurityContext().assertObject()</literal>, "
+"passing the object as a parameter."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:384
+#, no-c-format
+msgid ""
+"Getting back to our simple example, we can also notice that the first line "
+"of our LHS is prefixed with <literal>c:</literal>. This is a variable "
+"binding, and is used to refer back to the object that is matched by the "
+"condition. Moving onto the second line of our LHS, we see this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:387
+#, no-c-format
+msgid "Role(name == \"admin\")"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:388
+#, no-c-format
+msgid ""
+"This condition simply states that there must be a <literal>Role</literal> "
+"object with a <literal>name</literal> of \"admin\" within the working "
+"memory. As mentioned, user roles are asserted into the working memory as "
+"long-lived facts. So, putting both conditions together, this rule is "
+"essentially saying \"I will fire if you are checking for the "
+"<literal>customer:delete</literal> permission and the user is a member of "
+"the <literal>admin</literal> role\"."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:391
+#, no-c-format
+msgid ""
+"So what is the consequence of the rule firing? Let's take a look at the RHS "
+"of the rule:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:394
+#, no-c-format
+msgid "c.grant()"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:395
+#, no-c-format
+msgid ""
+"The RHS consists of Java code, and in this case is invoking the "
+"<literal>grant()</literal> method of the <literal>c</literal> object, which "
+"as already mentioned is a variable binding for the <literal>PermissionCheck</"
+"literal> object. Besides the <literal>name</literal> and <literal>action</"
+"literal> properties of the <literal>PermissionCheck</literal> object, there "
+"is also a <literal>granted</literal> property which is initially set to "
+"<literal>false</literal>. Calling <literal>grant()</literal> on a "
+"<literal>PermissionCheck</literal> sets the <literal>granted</literal> "
+"property to <literal>true</literal>, which means that the permission check "
+"was successful, allowing the user to carry out whatever action the "
+"permission check was intended for."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:398
+#, no-c-format
+msgid "SSL Security"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:399
+#, no-c-format
+msgid ""
+"Seam includes basic support for serving sensitive pages via the HTTPS "
+"protocol. This is easily configured by specifying a <literal>scheme</"
+"literal> for the page in <literal>pages.xml</literal>. The following example "
+"shows how the view <literal>/login.xhtml</literal> is configured to use "
+"HTTPS:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:402
+#, no-c-format
+msgid "&lt;page view-id=\"/login.xhtml\" scheme=\"https\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:403
+#, no-c-format
+msgid ""
+"This configuration is automatically extended to both <literal>s:link</"
+"literal> and <literal>s:button</literal> JSF controls, which (when "
+"specifying the <literal>view</literal>) will also render the link using the "
+"correct protocol. Based on the previous example, the following link will use "
+"the HTTPS protocol because <literal>/login.xhtml</literal> is configured to "
+"use it:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:406
+#, no-c-format
+msgid "&lt;s:link view=\"/login.xhtml\" value=\"Login\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:407
+#, no-c-format
+msgid ""
+"Browsing directly to a view when using the <emphasis>incorrect</emphasis> "
+"protocol will cause a redirect to the same view using the <emphasis>correct</"
+"emphasis> protocol. For example, browsing to a page that has <literal>scheme="
+"\"https\"</literal> using HTTP will cause a redirect to the same page using "
+"HTTPS."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:410
+#, no-c-format
+msgid ""
+"It is also possible to configure a default <literal>scheme</literal> for all "
+"pages. This is actually quite important, as you might only wish to use HTTPS "
+"for a few pages, and if no default scheme is specified then the default "
+"behavior is to continue using the current scheme. What this means is that "
+"once you enter a page with HTTPS, then HTTPS will continue to be used even "
+"if you navigate away to other non-HTTPS pages (a bad thing!). So it is "
+"strongly recommended to include a default <literal>scheme</literal>, by "
+"configuring it on the default (<literal>\"*\"</literal>) view:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:413
+#, no-c-format
+msgid "&lt;page view-id=\"*\" scheme=\"http\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:414
+#, no-c-format
+msgid ""
+"Of course, if <emphasis>none</emphasis> of the pages in your application use "
+"HTTPS then it is not required to specify a default scheme."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:417
+#, no-c-format
+msgid "Implementing a Captcha Test"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:418
+#, no-c-format
+msgid ""
+"Though strictly not part of the security API, it might be useful in certain "
+"circumstances (such as new user registrations, posting to a public blog or "
+"forum) to implement a Captcha (<emphasis>C</emphasis>ompletely <emphasis>A</"
+"emphasis>utomated <emphasis>P</emphasis>ublic <emphasis>T</emphasis>uring "
+"test to tell <emphasis>C</emphasis>omputers and <emphasis>H</emphasis>umans "
+"<emphasis>A</emphasis>part) to prevent automated bots from interacting with "
+"your application. Seam provides seamless integration with JCaptcha, an "
+"excellent library for generating Captcha challenges. If you wish to use the "
+"captcha feature in your application you need to include the jcaptcha-* jar "
+"file from the Seam lib directory in your project, and register it in "
+"<literal>application.xml</literal> as a java module."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:421
+#, no-c-format
+msgid "Configuring the Captcha Servlet"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:422
+#, no-c-format
+msgid ""
+"To get up and running, it is necessary to configure the Seam Resource "
+"Servlet, which will provide the Captcha challenge images to your pages. This "
+"requires the following entry in <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:425
+#, no-c-format
+msgid ""
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"    \n"
+"&lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:426
+#, no-c-format
+msgid "Adding a Captcha to a page"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:427
+#, no-c-format
+msgid ""
+"Adding a captcha challenge to a page is extremely easy. Seam provides a page-"
+"scoped component, <literal>captcha</literal>, which provides everything that "
+"is required, including built-in captcha validation. Here's an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:430
+#, no-c-format
+msgid ""
+"&lt;div&gt;\n"
+"    &lt;h:graphicImage value=\"/seam/resource/captcha?#{captcha.id}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"  \n"
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"verifyCaptcha\"&gt;Enter the above letters&lt;/h:"
+"outputLabel&gt;\n"
+"    &lt;h:inputText id=\"verifyCaptcha\" value=\"#{captcha.response}\" "
+"required=\"true\"/&gt;\n"
+"    &lt;div class=\"validationError\"&gt;&lt;h:message for=\"verifyCaptcha\"/"
+"&gt;&lt;/div&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:431
+#, no-c-format
+msgid ""
+"That's all there is to it. The <literal>graphicImage</literal> control "
+"displays the Captcha challenge, and the <literal>inputText</literal> "
+"receives the user's response. The response is automatically validated "
+"against the Captcha when the form is submitted."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Spring.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Spring.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Spring.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,416 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Spring.xml:10
+#, no-c-format
+msgid "Spring Framework integration"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:11
+#, no-c-format
+msgid ""
+"The Spring integration module allows easy migration of Spring-based projects "
+"to Seam and allows Spring applications to take advantage of key Seam "
+"features like conversations and Seam's more sophisticated persistence "
+"context management."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:14
+#, no-c-format
+msgid "Seam's support for Spring provides the ability to:"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:19
+#, no-c-format
+msgid "inject Seam component instances into Spring beans"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:24
+#, no-c-format
+msgid "inject Spring beans into Seam components"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:29
+#, no-c-format
+msgid "turn Spring beans into Seam components"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:34
+#, no-c-format
+msgid "allow Spring beans to live in any Seam context"
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:40
+#, no-c-format
+msgid "Injecting Seam components into Spring beans"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:41
+#, no-c-format
+msgid ""
+"Injecting Seam component instances into Spring beans is accomplished using "
+"the <literal>&lt;seam:instance/&gt;</literal> namespace handler. To enable "
+"the Seam namespace handler, the Seam namespace must be added to the Spring "
+"beans definition file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:44
+#, no-c-format
+msgid ""
+"&lt;beans xmlns=\"http://www.springframework.org/schema/beans\"\n"
+"    xmlns:seam=\"http://jboss.com/products/seam/spring\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://www.springframework.org/schema/beans \n"
+"                        http://www.springframework.org/schema/beans/spring-"
+"beans-2.0.xsd\n"
+"                        http://jboss.com/products/seam/spring \n"
+"                        http://jboss.com/products/seam/spring-1.2.xsd\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:45
+#, no-c-format
+msgid "Now any Seam component may be injected into any Spring bean:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:48
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\"&gt;\n"
+"        &lt;seam:instance name=\"someComponent\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:49
+#, no-c-format
+msgid "An EL expression may be used instead of a component name:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:52
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\"&gt;\n"
+"        &lt;seam:instance name=\"#{someExpression}\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:53
+#, no-c-format
+msgid ""
+"Seam component instances may even be made available for injection into "
+"Spring beans by a Spring bean id."
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:56
+#, no-c-format
+msgid ""
+"&lt;seam:instance name=\"someComponent\" id=\"someSeamComponentInstance\"/"
+"&gt;\n"
+"\n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\" ref=\"someSeamComponentInstance"
+"\"&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:57
+#, no-c-format
+msgid "Now for the caveat!"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:60
+#, no-c-format
+msgid ""
+"Seam was designed from the ground up to support a stateful component model "
+"with multiple contexts. Spring was not. Unlike Seam bijection, Spring "
+"injection does not occur at method invocation time. Instead, injection "
+"happens only when the Spring bean is instantiated. So the instance available "
+"when the bean is instantiated will be the same instance that the bean uses "
+"for the entire life of the bean. For example, if a Seam "
+"<literal>CONVERSATION</literal>-scoped component instance is directly "
+"injected into a singleton Spring bean, that singleton will hold a reference "
+"to the same instance long after the conversation is over! We call this "
+"problem <emphasis>scope impedance</emphasis>. Seam bijection ensures that "
+"scope impedance is maintained naturally as an invocation flows through the "
+"system. In Spring, we need to inject a proxy of the Seam component, and "
+"resolve the reference when the proxy is invoked."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:63
+#, no-c-format
+msgid ""
+"The <literal>&lt;seam:instance/&gt;</literal> tag lets us automatically "
+"proxy the Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:66
+#, no-c-format
+msgid ""
+"&lt;seam:instance id=\"seamManagedEM\" name=\"someManagedEMComponent\" proxy="
+"\"true\"/&gt;\n"
+"        \n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\"&gt;\n"
+"    &lt;property name=\"entityManager\" ref=\"seamManagedEM\"&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:67
+#, no-c-format
+msgid ""
+"This example shows one way to use a Seam-managed persistence context from a "
+"Spring bean. (A more robust way to use Seam-managed persistence contexts as "
+"a replacement for the Spring <literal>OpenEntityManagerInView</literal> "
+"filter will be provided in a future release)"
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:73
+#, no-c-format
+msgid "Injecting Spring beans into Seam components"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:74
+#, no-c-format
+msgid ""
+"It is even easier to inject Spring beans into Seam component instances. "
+"Actually, there are two possible approaches:"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:79
+#, no-c-format
+msgid "inject a Spring bean using an EL expression"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:84
+#, no-c-format
+msgid "make the Spring bean a Seam component"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:89
+#, no-c-format
+msgid ""
+"We'll discuss the second option in the next section. The easiest approach is "
+"to access the Spring beans via EL."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:92
+#, no-c-format
+msgid ""
+"The Spring <literal>DelegatingVariableResolver</literal> is an integration "
+"point Spring provides for integrating Spring with JSF. This "
+"<literal>VariableResolver</literal> makes all Spring beans available in EL "
+"by their bean id. You'll need to add the "
+"<literal>DelegatingVariableResolver</literal> to <literal>faces-config.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:95
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;variable-resolver&gt;\n"
+"        org.springframework.web.jsf.DelegatingVariableResolver\n"
+"    &lt;/variable-resolver&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:96
+#, no-c-format
+msgid "Then you can inject Spring beans using <literal>@In</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:99
+#, no-c-format
+msgid ""
+"@In(\"#{bookingService}\")\n"
+"private BookingService bookingService;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:100
+#, no-c-format
+msgid ""
+"The use of Spring beans in EL is not limited to injection. Spring beans may "
+"be used anywhere that EL expressions are used in Seam: process and pageflow "
+"definitions, working memory assertions, etc..."
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:106
+#, no-c-format
+msgid "Making a Spring bean into a Seam component"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:107
+#, no-c-format
+msgid ""
+"The <literal>&lt;seam:component/&gt;</literal> namespace handler can be used "
+"to make any Spring bean a Seam component. Just place the <literal>&lt;seam:"
+"component/&gt;</literal> tag within the declaration of the bean that you "
+"wish to be a Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:110
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;seam:component/&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:111
+#, no-c-format
+msgid ""
+"By default, <literal>&lt;seam:component/&gt;</literal> will create a "
+"<literal>STATELESS</literal> Seam component with class and name provided in "
+"the bean definition. Occasionally, such as when a <literal>FactoryBean</"
+"literal> is used, the class of the Spring bean may not be the class "
+"appearing in the bean definition. In such cases the <literal>beanClass</"
+"literal> should be explicitly specified. A Seam component name may be "
+"explicitly specified in cases where there is potential for a naming conflict."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:114
+#, no-c-format
+msgid ""
+"The <literal>scope</literal> attribute of <literal>&lt;seam:component/&gt;</"
+"literal> may be used if you wish the Spring bean to be managed in a "
+"particular Seam scope. The Spring bean must be scoped to <literal>prototype</"
+"literal> if the Seam scope specified is anything other than "
+"<literal>STATELESS</literal>. Pre-existing Spring beans usually have a "
+"fundamentally stateless character, so this attribute is not usually needed."
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:120
+#, no-c-format
+msgid "Seam-scoped Spring beans"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:121
+#, no-c-format
+msgid ""
+"The Seam integration package also lets you use Seam's contexts as Spring 2.0 "
+"style custom scopes. This lets you declare any Spring bean in any of Seam's "
+"contexts. However, note once again that Spring's component model was never "
+"architected to support statefulness, so please use this feature with great "
+"care. In particular, clustering of session or conversation scoped Spring "
+"beans is deeply problematic, and care must be taken when injecting a bean or "
+"component from a wider scope into a bean of a narrower scope."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:124
+#, no-c-format
+msgid ""
+"By specifying <literal>&lt;seam:configure-scopes/&gt;</literal> once in a "
+"Spring bean factory configuration, all of the Seam scopes will be available "
+"to Spring beans as custom scopes. To associate a Spring bean with a "
+"particular Seam scope, specify the Seam scope in the <literal>scope</"
+"literal> attribute of the bean definition."
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:127
+#, no-c-format
+msgid ""
+"&lt;!-- Only needs to be specified once per bean factory--&gt;\n"
+"&lt;seam:configure-scopes/&gt;\n"
+"\n"
+"...\n"
+"\n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope=\"seam."
+"CONVERSATION\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:128
+#, no-c-format
+msgid ""
+"The prefix of the scope name may be changed by specifying the "
+"<literal>prefix</literal> attribute in the <literal>configure-scopes</"
+"literal> definition. (The default prefix is <literal>seam.</literal>)"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:131
+#, no-c-format
+msgid ""
+"Seam-scoped Spring beans defined this way can be injected into other Spring "
+"beans without the use of <literal>&lt;seam:instance/&gt;</literal>. However, "
+"care must be taken to ensure scope impedance is maintained. The normal "
+"approach used in Spring is to specify <literal>&lt;aop:scoped-proxy/&gt;</"
+"literal> in the bean definition. However, Seam-scoped Spring beans are "
+"<emphasis>not</emphasis> compatible with <literal>&lt;aop:scoped-proxy/&gt;</"
+"literal>. So if you need to inject a Seam-scoped Spring bean into a "
+"singleton, <literal>&lt;seam:instance/&gt;</literal> must be used:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:134
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope=\"seam."
+"CONVERSATION\"/&gt;\n"
+"\n"
+"...\n"
+"\n"
+"&lt;bean id=\"someSingleton\"&gt;\n"
+"    &lt;property name=\"someSeamScopedSpringBean\"&gt;\n"
+"        &lt;seam:instance name=\"someSpringBean\" proxy=\"true\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Testing.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Testing.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Testing.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,342 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Testing.xml:10
+#, no-c-format
+msgid "Testing Seam applications"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:11
+#, no-c-format
+msgid ""
+"Most Seam applications will need at least two kinds of automated tests: "
+"<emphasis>unit tests</emphasis>, which test a particular Seam component in "
+"isolation, and scripted <emphasis>integration tests</emphasis> which "
+"exercise all Java layers of the application (that is, everything except the "
+"view pages)."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:14
+#, no-c-format
+msgid "Both kinds of tests are very easy to write."
+msgstr ""
+
+#. Tag: title
+#: Testing.xml:18
+#, no-c-format
+msgid "Unit testing Seam components"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:19
+#, no-c-format
+msgid ""
+"All Seam components are POJOs. This is a great place to start if you want "
+"easy unit testing. And since Seam emphasises the use of bijection for inter-"
+"component interactions and access to contextual objects, it's very easy to "
+"test a Seam component outside of its normal runtime environment."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:22
+#, no-c-format
+msgid "Consider the following Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:25
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Scope(EVENT)\n"
+"@Name(\"register\")\n"
+"public class RegisterAction implements Register\n"
+"{\n"
+"   private User user;\n"
+"   private EntityManager em;\n"
+"\n"
+"   @In\n"
+"   public void setUser(User user) {\n"
+"       this.user = user;\n"
+"   }\n"
+"   \n"
+"   @PersistenceContext\n"
+"   public void setBookingDatabase(EntityManager em) {\n"
+"       this.em = em;\n"
+"   }\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = em.createQuery(\"select username from User where "
+"username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getResultList();\n"
+"      if (existing.size()==0)\n"
+"      {\n"
+"         em.persist(user);\n"
+"         return \"success\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:26
+#, no-c-format
+msgid "We could write a TestNG test for this component as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:29
+#, no-c-format
+msgid ""
+"public class RegisterActionTest\n"
+"{\n"
+"\n"
+"    @Test\n"
+"    public testRegisterAction()\n"
+"    {\n"
+"        EntityManager em = getEntityManagerFactory().createEntityManager();\n"
+"        em.getTransaction().begin();\n"
+"        \n"
+"        User gavin = new User();\n"
+"        gavin.setName(\"Gavin King\");\n"
+"        gavin.setUserName(\"1ovthafew\");\n"
+"        gavin.setPassword(\"secret\");\n"
+"        \n"
+"        RegisterAction action = new RegisterAction();\n"
+"        action.setUser(gavin);\n"
+"        action.setBookingDatabase(em);\n"
+"        \n"
+"        assert \"success\".equals( action.register() );\n"
+"        \n"
+"        em.getTransaction().commit();\n"
+"        em.close();\n"
+"    }\n"
+"    \n"
+"    \n"
+"    private EntityManagerFactory emf;\n"
+"    \n"
+"    public EntityManagerFactory getEntityManagerFactory()\n"
+"    {\n"
+"        return emf;\n"
+"    }\n"
+"    \n"
+"    @Configuration(beforeTestClass=true)\n"
+"    public void init() \n"
+"    {\n"
+"        emf = Persistence.createEntityManagerFactory"
+"(\"myResourceLocalEntityManager\");\n"
+"    }\n"
+"    \n"
+"    @Configuration(afterTestClass=true)\n"
+"    public void destroy()\n"
+"    {\n"
+"        emf.close();\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:30
+#, no-c-format
+msgid ""
+"Seam components don't usually depend directly upon container infrastructure, "
+"so most unit testing as as easy as that!"
+msgstr ""
+
+#. Tag: title
+#: Testing.xml:36
+#, no-c-format
+msgid "Integration testing Seam applications"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:37
+#, no-c-format
+msgid ""
+"Integration testing is slightly more difficult. In this case, we can't "
+"eliminate the container infrastructure; indeed, that is part of what is "
+"being tested! At the same time, we don't want to be forced to deploy our "
+"application to an application server to run the automated tests. We need to "
+"be able to reproduce just enough of the container infrastructure inside our "
+"testing environment to be able to exercise the whole application, without "
+"hurting performance too much."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:40
+#, no-c-format
+msgid ""
+"A second problem is emulating user interactions. A third problem is where to "
+"put our assertions. Some test frameworks let us test the whole application "
+"by reproducing user interactions with the web browser. These frameworks have "
+"their place, but they are not appropriate for use at development time."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:43
+#, no-c-format
+msgid ""
+"The approach taken by Seam is to let you write tests that script your "
+"components while running inside a pruned down container environment (Seam, "
+"together with the JBoss Embeddable EJB container). The role of the test "
+"script is basically to reproduce the interaction between the view and the "
+"Seam components. In other words, you get to pretend you are the JSF "
+"implementation!"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:46
+#, no-c-format
+msgid "This approach tests everything except the view."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:49
+#, no-c-format
+msgid "Let's consider a JSP view for the component we unit tested above:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:52
+#, no-c-format
+msgid ""
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Register New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;table border=\"0\"&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Username&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputText value=\"#{user.username}\"/&gt;&lt;/"
+"td&gt;\n"
+"       &lt;/tr&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Real Name&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputText value=\"#{user.name}\"/&gt;&lt;/td&gt;\n"
+"       &lt;/tr&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Password&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputSecret value=\"#{user.password}\"/&gt;&lt;/"
+"td&gt;\n"
+"       &lt;/tr&gt;\n"
+"     &lt;/table&gt;\n"
+"     &lt;h:messages/&gt;\n"
+"     &lt;h:commandButton type=\"submit\" value=\"Register\" action=\"#"
+"{register.register}\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:53
+#, no-c-format
+msgid ""
+"We want to test the registration functionality of our application (the stuff "
+"that happens when the user clicks the Register button). We'll reproduce the "
+"JSF request lifecycle in an automated TestNG test:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:56
+#, no-c-format
+msgid ""
+"public class RegisterTest extends SeamTest\n"
+"{\n"
+"   \n"
+"   @Test\n"
+"   public void testRegister() throws Exception\n"
+"   {\n"
+"            \n"
+"      new FacesRequest() {\n"
+"\n"
+"         @Override\n"
+"         protected void processValidations() throws Exception\n"
+"         {\n"
+"            validateValue(\"#{user.username}\", \"1ovthafew\");\n"
+"            validateValue(\"#{user.name}\", \"Gavin King\");\n"
+"            validateValue(\"#{user.password}\", \"secret\");\n"
+"            assert !isValidationFailure();\n"
+"         }\n"
+"         \n"
+"         @Override\n"
+"         protected void updateModelValues() throws Exception\n"
+"         {\n"
+"            setValue(\"#{user.username}\", \"1ovthafew\");\n"
+"            setValue(\"#{user.name}\", \"Gavin King\");\n"
+"            setValue(\"#{user.password}\", \"secret\");\n"
+"         }\n"
+"\n"
+"         @Override\n"
+"         protected void invokeApplication()\n"
+"         {\n"
+"            assert invokeMethod(\"#{register.register}\").equals(\"success"
+"\");\n"
+"         }\n"
+"\n"
+"         @Override\n"
+"         protected void renderResponse()\n"
+"         {\n"
+"            assert getValue(\"#{user.username}\").equals(\"1ovthafew\");\n"
+"            assert getValue(\"#{user.name}\").equals(\"Gavin King\");\n"
+"            assert getValue(\"#{user.password}\").equals(\"secret\");\n"
+"         }\n"
+"         \n"
+"      }.run();\n"
+"      \n"
+"   }\n"
+"\n"
+"   ...\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:57
+#, no-c-format
+msgid ""
+"Notice that we've extended <literal>SeamTest</literal>, which provides a "
+"Seam environment for our components, and written our test script as an "
+"anonymous class that extends <literal>SeamTest.FacesRequest</literal>, which "
+"provides an emulated JSF request lifecycle. (There is also a "
+"<literal>SeamTest.NonFacesRequest</literal> for testing GET requests.) We've "
+"written our code in methods which are named for the various JSF phases, to "
+"emulate the calls that JSF would make to our components. Then we've thrown "
+"in various assertions."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:60
+#, no-c-format
+msgid ""
+"You'll find plenty of integration tests for the Seam example applications "
+"which demonstrate more complex cases. There are instructions for running "
+"these tests using Ant, or using the TestNG plugin for eclipse:"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Text.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Text.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Text.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,362 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Text.xml:10
+#, no-c-format
+msgid "Seam Text"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:11
+#, no-c-format
+msgid ""
+"Collaboration-oriented websites require a human-friendly markup language for "
+"easy entry of formatted text in forum posts, wiki pages, blogs, comments, "
+"etc. Seam provides the <literal>&lt;s:formattedText/&gt;</literal> control "
+"for display of formatted text that conforms to the <emphasis>Seam Text</"
+"emphasis> language. Seam Text is implemented using an ANTLR-based parser. "
+"You don't need to know anything about ANTLR to use it, however."
+msgstr ""
+
+#. Tag: title
+#: Text.xml:15
+#, no-c-format
+msgid "Basic fomatting"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:16
+#, no-c-format
+msgid "Here is a simple example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:19
+#, no-c-format
+msgid ""
+"It's easy to make *bold text*, /italic text/, |monospace|, \n"
+"~deleted text~, super^scripts^ or _underlines_."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:20
+#, no-c-format
+msgid ""
+"If we display this using <literal>&lt;s:formattedText/&gt;</literal>, we "
+"will get the following HTML produced:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:23
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"It's easy to make &lt;b&gt;bold text&lt;/b&gt;, &lt;i&gt;italic text&lt;/"
+"i&gt;, &lt;tt&gt;monospace&lt;/tt&gt;\n"
+"&lt;del&gt;deleted text&lt;/del&gt;, super&lt;sup&gt;scripts&lt;/sup&gt; or "
+"&lt;u&gt;underlines&lt;/u&gt;.\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:24
+#, no-c-format
+msgid ""
+"We can use a blank line to indicate a new paragraph, and <literal>+</"
+"literal> to indicate a heading:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:27
+#, no-c-format
+msgid ""
+"+This is a big heading\n"
+"You /must/ have some text following a heading!\n"
+" \n"
+"++This is a smaller heading\n"
+"This is the first paragraph. We can split it across multiple \n"
+"lines, but we must end it with a blank line.\n"
+"\n"
+"This is the second paragraph."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:28
+#, no-c-format
+msgid ""
+"(Note that a simple newline is ignored, you need an additional blank line to "
+"wrap text into a new paragraph.) This is the HTML that results:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:31
+#, no-c-format
+msgid ""
+"&lt;h1&gt;This is a big heading&lt;/h1&gt;\n"
+"&lt;p&gt;\n"
+"You &lt;i&gt;must&lt;/i&gt; have some text following a heading!\n"
+"&lt;/p&gt;\n"
+" \n"
+"&lt;h2&gt;This is a smaller heading&lt;/h2&gt;\n"
+"&lt;p&gt;\n"
+"This is the first paragraph. We can split it across multiple \n"
+"lines, but we must end it with a blank line.\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"This is the second paragraph.\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:32
+#, no-c-format
+msgid ""
+"Ordered lists are created using the <literal>#</literal> character. "
+"Unordered lists use the <literal>=</literal> character:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:35
+#, no-c-format
+msgid ""
+"An ordered list:\n"
+"        \n"
+"#first item\n"
+"#second item\n"
+"#and even the /third/ item\n"
+"\n"
+"An unordered list:\n"
+"\n"
+"=an item\n"
+"=another item"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:36
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"An ordered list:\n"
+"&lt;/p&gt;\n"
+" \n"
+"&lt;ol&gt;       \n"
+"&lt;li&gt;first item&lt;/li&gt;\n"
+"&lt;li&gt;second item&lt;/li&gt;\n"
+"&lt;li&gt;and even the &lt;i&gt;third&lt;/i&gt; item&lt;/li&gt;\n"
+"&lt;/ol&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"An unordered list:\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;ul&gt;\n"
+"&lt;li&gt;an item&lt;/li&gt;\n"
+"&lt;li&gt;another item&lt;/li&gt;\n"
+"&lt;/ul&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:37
+#, no-c-format
+msgid "Quoted sections should be surrounded in double quotes:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:40
+#, no-c-format
+msgid ""
+"The other guy said:\n"
+"        \n"
+"\"Nyeah nyeah-nee \n"
+"/nyeah/ nyeah!\"\n"
+"\n"
+"But what do you think he means by \"nyeah-nee\"?"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:41
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"The other guy said:\n"
+"&lt;/p&gt;\n"
+"        \n"
+"&lt;q&gt;Nyeah nyeah-nee\n"
+"&lt;i&gt;nyeah&lt;/i&gt; nyeah!&lt;/q&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"But what do you think he means by &lt;q&gt;nyeah-nee&lt;/q&gt;?\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: title
+#: Text.xml:45
+#, no-c-format
+msgid "Entering code and text with special characters"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:46
+#, no-c-format
+msgid ""
+"Special characters such as <literal>*</literal>, <literal>|</literal> and "
+"<literal>#</literal>, along with HTML characters such as <literal>&lt;</"
+"literal>, <literal>&gt;</literal> and <literal>&amp;</literal> may be "
+"escaped using <literal>&#92;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:49
+#, no-c-format
+msgid ""
+"You can write down equations like 2&#92;*3&#92;=6 and HTML tags\n"
+"like &#92;&lt;body&#92;&gt; using the escape character: &#92;&#92;."
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:50
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"You can write down equations like 2*3=6 and HTML tags\n"
+"like &lt;body&gt; using the escape character: &#92;.\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:51
+#, no-c-format
+msgid "And we can quote code blocks using backticks:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:54
+#, no-c-format
+msgid ""
+"My code doesn't work:\n"
+"\n"
+"`for (int i=0; i&lt;100; i--)\n"
+"{\n"
+"    doSomething();\n"
+"}`\n"
+"\n"
+"Any ideas?"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:55
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"My code doesn't work:\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;pre&gt;for (int i=0; i&lt;100; i--)\n"
+"{\n"
+"    doSomething();\n"
+"}&lt;/pre&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"Any ideas?\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: title
+#: Text.xml:59
+#, no-c-format
+msgid "Links"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:60
+#, no-c-format
+msgid "A link may be created using the following syntax:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:63
+#, no-c-format
+msgid "Go to the Seam website at [=&gt;http://jboss.com/products/seam]."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:64
+#, no-c-format
+msgid "Or, if you want to specify the text of the link:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:67
+#, no-c-format
+msgid "Go to [the Seam website=&gt;http://jboss.com/products/seam]."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:68
+#, no-c-format
+msgid ""
+"For advanced users, it is even possible to customize the Seam Text parser to "
+"understand wikiword links written using this syntax."
+msgstr ""
+
+#. Tag: title
+#: Text.xml:74
+#, no-c-format
+msgid "Entering HTML"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:75
+#, no-c-format
+msgid ""
+"Text may even include a certain limited subset of HTML (don't worry, the "
+"subset is chosen to be safe from cross-site scripting attacks). This is "
+"useful for creating links:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:78
+#, no-c-format
+msgid ""
+"You might want to link to &lt;a href=\"http://jboss.com/products/seam\"&gt;"
+"something\n"
+"cool&lt;/a&gt;, or even include an image: &lt;img src=\"/logo.jpg\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:79
+#, no-c-format
+msgid "And for creating tables:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:82
+#, no-c-format
+msgid ""
+"&lt;table&gt;\n"
+"    &lt;tr&gt;&lt;td&gt;First name:&lt;/td&gt;&lt;td&gt;Gavin&lt;/td&gt;&lt;/"
+"tr&gt;\n"
+"    &lt;tr&gt;&lt;td&gt;Last name:&lt;/td&gt;&lt;td&gt;King&lt;/td&gt;&lt;/"
+"tr&gt;\n"
+"&lt;/table&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:83
+#, no-c-format
+msgid "But you can do much more if you want!"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Tools.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Tools.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Tools.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,769 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Tools.xml:10
+#, no-c-format
+msgid "Seam tools"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:12
+#, no-c-format
+msgid "jBPM designer and viewer"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:13
+#, no-c-format
+msgid ""
+"The jBPM designer and viewer will let you design and view in a nice way your "
+"business processes and your pageflows. This convenient tool is part of JBoss "
+"Eclipse IDE and more details can be found in the jBPM's documentation "
+"(http://docs.jboss.com/jbpm/v3/gpd/)"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:17
+#, no-c-format
+msgid "<title>Business process designer</title>"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:18
+#, no-c-format
+msgid "This tool lets you design your own business process in a graphical way."
+msgstr ""
+
+#. Tag: screeninfo
+#: Tools.xml:21 Tools.xml:37
+#, no-c-format
+msgid "<screeninfo>Business process designer</screeninfo>"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:33
+#, no-c-format
+msgid "Pageflow viewer"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:34
+#, no-c-format
+msgid ""
+"This tool let you design to some extend your pageflows and let you build "
+"graphical views of them so you can easily share and compare ideas on how it "
+"should be designed."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:51
+#, no-c-format
+msgid "CRUD-application generator"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:52
+#, no-c-format
+msgid ""
+"This chapter, will give you a short overview of the support for Seam that is "
+"available in the Hibernate Tools. Hibernate Tools is a set of tools for "
+"working with Hibernate and related technologies, such as JBoss Seam and "
+"EJB3. The tools are available as a set of eclipse plugins and Ant tasks. You "
+"can download the Hibernate Tools from the JBoss Eclipse IDE or Hibernate "
+"Tools websites."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:55
+#, no-c-format
+msgid ""
+"The specific support for Seam that is currently available is generation of a "
+"fully functional Seam based CRUD-application. The CRUD-application can be "
+"generated based on your existing Hibernate mapping files or EJB3 annotated "
+"POJO's or even fully reverse engineered from your existing database schema."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:58
+#, no-c-format
+msgid ""
+"The following sections is focused on the features required to understand for "
+"usage with Seam. The content is derived from the the Hibernate Tools "
+"reference documentation. Thus if you need more detailed information please "
+"refer to the Hibernate Tools documentation."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:62
+#, no-c-format
+msgid "Creating a Hibernate configuration file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:63
+#, no-c-format
+msgid ""
+"To be able to reverse engineer and generate code a hibernate.properties or "
+"hibernate.cfg.xml file is needed. The Hibernate Tools provide a wizard for "
+"generating the hibernate.cfg.xml file if you do not already have such file."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:66
+#, no-c-format
+msgid ""
+"Start the wizard by clicking \"New Wizard\" (Ctrl+N), select the Hibernate/"
+"Hibernate Configuration file (cfg.xml) wizard and press \"Next\". After "
+"selecting the wanted location for the hibernate.cfg.xml file, you will see "
+"the following page:"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:77
+#, no-c-format
+msgid ""
+"Tip: The contents in the combo boxes for the JDBC driver class and JDBC URL "
+"change automatically, depending on the Dialect and actual driver you have "
+"chosen."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:80
+#, no-c-format
+msgid ""
+"Enter your configuration information in this dialog. Details about the "
+"configuration options can be found in Hibernate reference documentation."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:83
+#, no-c-format
+msgid ""
+"Press \"Finish\" to create the configuration file, after optionally creating "
+"a Console onfiguration, the hibernate.cfg.xml will be automatically opened "
+"in an editor. The last option \"Create Console Configuration\" is enabled by "
+"default and when enabled i will automatically use the hibernate.cfg.xml for "
+"the basis of a \"Console Configuration\""
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:89
+#, no-c-format
+msgid "<title>Creating a Hibernate Console configuration</title>"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:90
+#, no-c-format
+msgid ""
+"A Console Configuration describes to the Hibernate plugin which "
+"configuration files should be used to configure hibernate, including which "
+"classpath is needed to load the POJO's, JDBC drivers etc. It is required to "
+"make usage of query prototyping, reverse engineering and code generation. "
+"You can have multiple named console configurations. Normally you would just "
+"need one per project, but more (or less) is definitly possible."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:93
+#, no-c-format
+msgid ""
+"You create a console configuration by running the Console Configuration "
+"wizard, shown in the following screenshot. The same wizard will also be used "
+"if you are coming from the hibernate.cfg.xml wizard and had enabled \"Create "
+"Console Configuration\"."
+msgstr ""
+
+#. Tag: caption
+#: Tools.xml:103
+#, no-c-format
+msgid "<caption>Creating a Hibernate Console configuration</caption>"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:105
+#, no-c-format
+msgid ""
+"The following table describes the relevant settings. The wizard can "
+"automatically detect default values for most of these if you started the "
+"Wizard with the relevant java project selected"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:109
+#, no-c-format
+msgid "Hibernate Console Configuration Parameters"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:117
+#, no-c-format
+msgid "Parameter"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:122 Tools.xml:308 Tools.xml:458
+#, no-c-format
+msgid "Description"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:127
+#, no-c-format
+msgid "Auto detected value"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:136
+#, no-c-format
+msgid "Name"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:141
+#, no-c-format
+msgid "The unique name of the configuration"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:146
+#, no-c-format
+msgid "Name of the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:153
+#, no-c-format
+msgid "Property file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:158
+#, no-c-format
+msgid "Path to a hibernate.properties file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:163
+#, no-c-format
+msgid "First hibernate.properties file found in the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:170
+#, no-c-format
+msgid "Configuration file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:175
+#, no-c-format
+msgid "Path to a hibernate.cfg.xml file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:180
+#, no-c-format
+msgid "First hibernate.cfg.xml file found in the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:187
+#, no-c-format
+msgid "Enable Hibernate ejb3/annotations"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:192
+#, no-c-format
+msgid ""
+"Selecting this option enables usage of annotated classes. hbm.xml files are "
+"of course still possible to use too. This feature requires running the "
+"Eclipse IDE with a JDK 5 runtime, otherwise you will get classloading and/or "
+"version errors."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:197
+#, no-c-format
+msgid "Not enabled"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:204
+#, no-c-format
+msgid "Mapping files"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:209
+#, no-c-format
+msgid ""
+"List of additional mapping files that should be loaded. Note: A hibernate."
+"cfg.xml can also contain mappings. Thus if these a duplicated here, you will "
+"get \"Duplicate mapping\" errors when using the console configuration."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:214
+#, no-c-format
+msgid ""
+"If no hibernate.cfg.xml file is found, all hbm.xml files found in the "
+"selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:221
+#, no-c-format
+msgid "Classpath"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:226
+#, no-c-format
+msgid ""
+"The classpath for loading POJO and JDBC drivers. Do not add Hibernate core "
+"libraries or dependencies, they are already included. If you get "
+"ClassNotFound errors then check this list for possible missing or redundant "
+"directories/jars."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:231
+#, no-c-format
+msgid ""
+"The default build output directory and any JARs with a class implementing "
+"java.sql.Driver in the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:239
+#, no-c-format
+msgid ""
+"Clicking \"Finish\" creates the configuration and shows it in the "
+"\"Hibernate Configurations\" view"
+msgstr ""
+
+#. Tag: caption
+#: Tools.xml:249
+#, no-c-format
+msgid "Console overview"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:254
+#, no-c-format
+msgid "Reverse engineering and code generation"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:255
+#, no-c-format
+msgid ""
+"A very simple \"click-and-generate\" reverse engineering and code generation "
+"facility is available. It is this facility that allows you to generate the "
+"skeleton for a full Seam CRUD application."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:258
+#, no-c-format
+msgid ""
+"To start working with this process, start the \"Hibernate Code Generation\" "
+"which is available in the toolbar via the Hibernate icon or via the \"Run/"
+"Hibernate Code Generation\" menu item."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:262
+#, no-c-format
+msgid "Code Generation Launcher"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:263
+#, no-c-format
+msgid ""
+"When you click on \"Hibernate Code Generation\" the standard Eclipse "
+"launcher dialog will appear. In this dialog you can create, edit and delete "
+"named Hibernate code generation \"launchers\"."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:274
+#, no-c-format
+msgid ""
+"The dialog has the standard tabs \"Refresh\" and \"Common\" that can be used "
+"to configure which directories should be automatically refreshed and various "
+"general settings launchers, such as saving them in a project for sharing the "
+"launcher within a team."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:285
+#, no-c-format
+msgid ""
+"The first time you create a code generation launcher you should give it a "
+"meaningfull name, otherwise the default prefix \"New_Generation\" will be "
+"used."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:288
+#, no-c-format
+msgid ""
+"Note: The \"At least one exporter option must be selected\" is just a "
+"warning stating that for this launch to work you need to select an exporter "
+"on the Exporter tab. When an exporter has been selected the warning will "
+"disappear."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:291
+#, no-c-format
+msgid "On the \"Main\" tab you the following fields:"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:295
+#, no-c-format
+msgid "Code generation \"Main\" tab fields"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:303 Tools.xml:453
+#, no-c-format
+msgid "Field"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:317
+#, no-c-format
+msgid "Console Configuration"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:322
+#, no-c-format
+msgid ""
+"The name of the console configuration which should be used when code "
+"generating."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:329
+#, no-c-format
+msgid "Output directory"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:334
+#, no-c-format
+msgid ""
+"Path to a directory into where all output will be written by default. Be "
+"aware that existing files will be overwritten, so be sure to specify the "
+"correct directory."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:341
+#, no-c-format
+msgid "Reverse engineer from JDBC Connection"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:346
+#, no-c-format
+msgid ""
+"If enabled the tools will reverse engineer the database available via the "
+"connection information in the selected Hibernate Console Configuration and "
+"generate code based on the database schema. If not enabled the code "
+"generation will just be based on the mappings already specified in the "
+"Hibernate Console configuration."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:353
+#, no-c-format
+msgid "Package"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:358
+#, no-c-format
+msgid ""
+"The package name here is used as the default package name for any entities "
+"found when reverse engineering."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:365
+#, no-c-format
+msgid "reveng.xml"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:370
+#, no-c-format
+msgid ""
+"Path to a reveng.xml file. A reveng.xml file allows you to control certain "
+"aspects of the reverse engineering. e.g. how jdbc types are mapped to "
+"hibernate types and especially important which tables are included/excluded "
+"from the process. Clicking \"setup\" allows you to select an existing reveng."
+"xml file or create a new one.."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:377
+#, no-c-format
+msgid "reveng. strategy"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:382
+#, no-c-format
+msgid ""
+"If reveng.xml does not provide enough customization you can provide your own "
+"implementation of an ReverseEngineeringStrategy. The class need to be in the "
+"claspath of the Console Configuration, otherwise you will get class not "
+"found exceptions."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:389
+#, no-c-format
+msgid "Generate basic typed composite ids"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:394
+#, no-c-format
+msgid ""
+"This field should always be enabled when generating the Seam CRUD "
+"application. A table that has a multi-colum primary key a &lt;composite-"
+"id&gt; mapping will always be created. If this option is enabled and there "
+"are matching foreign-keys each key column is still considered a 'basic' "
+"scalar (string, long, etc.) instead of a reference to an entity. If you "
+"disable this option a &lt;key-many-to-one&gt; instead. Note: a &lt;many-to-"
+"one&gt; property is still created, but is simply marked as non-updatable and "
+"non-insertable."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:401
+#, no-c-format
+msgid "Use custom templates"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:406
+#, no-c-format
+msgid ""
+"If enabled, the Template directory will be searched first when looking up "
+"the velocity templates, allowing you to redefine how the individual "
+"templates process the hibernate mapping model."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:413
+#, no-c-format
+msgid "Template directory"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:418
+#, no-c-format
+msgid "A path to a directory with custom velocity templates."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:429
+#, no-c-format
+msgid "Exporters"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:430
+#, no-c-format
+msgid ""
+"The exporters tab is used to specify which type of code that should be "
+"generated. Each selection represents an \"Exporter\" that are responsible "
+"for generating the code, hence the name."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:441
+#, no-c-format
+msgid ""
+"The following table describes in short the various exporters. The most "
+"relevant for Seam is of course the \"JBoss Seam Skeleton app\"."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:445
+#, no-c-format
+msgid "Code generation \"Exporter\" tab fields"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:467
+#, no-c-format
+msgid "Generate domain code"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:472
+#, no-c-format
+msgid ""
+"Generates POJO's for all the persistent classes and components found in the "
+"given Hibernate configuration."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:479
+#, no-c-format
+msgid "JDK 1.5 constructs"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:484
+#, no-c-format
+msgid "When enabled the POJO's will use JDK 1.5 constructs."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:491
+#, no-c-format
+msgid "EJB3/JSR-220 annotations"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:496
+#, no-c-format
+msgid ""
+"When enabled the POJO's will be annotated according to the EJB3/JSR-220 "
+"persistency specification."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:503
+#, no-c-format
+msgid "Generate DAO code"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:508
+#, no-c-format
+msgid "Generates a set of DAO's for each entity found."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:515
+#, no-c-format
+msgid "Generate Mappings"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:520
+#, no-c-format
+msgid "Generate mapping (hbm.xml) files for each entity"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:527
+#, no-c-format
+msgid "Generate hibernate configuration file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:532
+#, no-c-format
+msgid ""
+"Generate a hibernate.cfg.xml file. Used to keep the hibernate.cfg.xml "
+"uptodate with any new found mapping files."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:539
+#, no-c-format
+msgid "Generate schema html-documentation"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:544
+#, no-c-format
+msgid ""
+"Generates set of html pages that documents the database schema and some of "
+"the mappings."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:551
+#, no-c-format
+msgid "Generate JBoss Seam skeleton app (beta)"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:556
+#, no-c-format
+msgid ""
+"Generates a complete JBoss Seam skeleton app. The generation will include "
+"annotated POJO's, Seam controller beans and a JSP for the presentation "
+"layer. See the generated readme.txt for how to use it."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:559
+#, no-c-format
+msgid ""
+"Note: this exporter generates a full application, including a build.xml thus "
+"you will get the best results if you use an output directory which is the "
+"root of your project."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:570
+#, no-c-format
+msgid "Generating and using the code"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:571
+#, no-c-format
+msgid ""
+"When you have finished filling out the settings, simply press \"Run\" to "
+"start the generation of code. This might take a little while if you are "
+"reverse engineering from a database."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:574
+#, no-c-format
+msgid ""
+"When the generation have finished you should now have a complete skeleton "
+"Seam application in the output directory. In the output directory there is a "
+"<literal>readme.txt</literal> file describing the steps needed to deploy and "
+"run the example."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:577
+#, no-c-format
+msgid ""
+"If you want to regenerate/update the skeleton code then simply run the code "
+"generation again by selecting the \"Hibernate Code Generation\" in the "
+"toolbar or \"Run\" menu. Enjoy."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Tutorial.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Tutorial.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Tutorial.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,4041 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Tutorial.xml:10
+#, no-c-format
+msgid "Seam Tutorial"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:12
+#, no-c-format
+msgid "Try the examples"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:13
+#, no-c-format
+msgid ""
+"In this tutorial, we'll assume that you have downloaded JBoss AS 4.0.5 and "
+"installed the EJB 3.0 profile (using the JBoss AS installer). You should "
+"also have a copy of Seam downloaded and extracted to a work directory."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:16
+#, no-c-format
+msgid "The directory structure of each example in Seam follows this pattern:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:21
+#, no-c-format
+msgid ""
+"Web pages, images and stylesheets may be found in <filename>examples/"
+"<replaceable>registration</replaceable>/view</filename>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:26
+#, no-c-format
+msgid ""
+"Resources such as deployment descriptors and data import scripts may be "
+"found in <filename>examples/<replaceable>registration</replaceable>/"
+"resources</filename>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:31
+#, no-c-format
+msgid ""
+"Java source code may be found in <filename>examples/"
+"<replaceable>registration</replaceable>/src</filename>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:36
+#, no-c-format
+msgid ""
+"The Ant build script is <filename>examples/<replaceable>registration</"
+"replaceable>/build.xml</filename>"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:42
+#, no-c-format
+msgid "Running the examples on JBoss AS"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:43
+#, no-c-format
+msgid ""
+"First, make sure you have Ant correctly installed, with <literal>&#36;"
+"ANT_HOME</literal> and <literal>&#36;JAVA_HOME</literal> set correctly. "
+"Next, make sure you set the location of your JBoss AS 4.0.5 installation in "
+"the <literal>build.properties</literal> file in the root folder of your Seam "
+"installation. If you haven't already done so, start JBoss AS now by typing "
+"<literal>bin/run.sh</literal> or <literal>bin/run.bat</literal> in the root "
+"directory of your JBoss installation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:46
+#, no-c-format
+msgid ""
+"By default the examples will deploy to the default configuration of the "
+"server. If the server has been started using an a configuration other than "
+"default then the example <literal>build.xml</literal> file should be "
+"modified to reflect this before building and deploying. Two lines should be "
+"changed in this file:"
+msgstr ""
+
+#. Tag: screen
+#: Tutorial.xml:49
+#, no-c-format
+msgid ""
+"&lt;property name=\"deploy.dir\"           value=\"${jboss.home}/server/"
+"default/deploy\"/&gt;"
+msgstr ""
+
+#. Tag: screen
+#: Tutorial.xml:50
+#, no-c-format
+msgid ""
+"&lt;property name=\"webroot.dir\"         \n"
+"        value=\"${deploy.dir}/jboss-web.deployer/ROOT.war\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:51
+#, no-c-format
+msgid ""
+"Now, build and deploy the example by typing <literal>ant deploy</literal> in "
+"the <filename>examples/<replaceable>registration</replaceable></filename> "
+"directory."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:54
+#, no-c-format
+msgid ""
+"Try it out by accessing <ulink url=\"http://localhost:8080/seam-registration/"
+"\"><literal>http://localhost:8080/seam-registration/</literal></ulink> with "
+"your web browser."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:60
+#, no-c-format
+msgid "Running the examples on Tomcat"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:61
+#, no-c-format
+msgid ""
+"First, make sure you have Ant correctly installed, with <literal>&#36;"
+"ANT_HOME</literal> and <literal>&#36;JAVA_HOME</literal> set correctly. "
+"Next, make sure you set the location of your Tomcat 5.5 installation in the "
+"<literal>build.properties</literal> file in the root folder of your Seam "
+"installation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:64
+#, no-c-format
+msgid ""
+"Now, build and deploy the example by typing <literal>ant deploy.tomcat</"
+"literal> in the <filename>examples/<replaceable>registration</replaceable></"
+"filename> directory."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:67
+#, no-c-format
+msgid "Finally, start Tomcat."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:70
+#, no-c-format
+msgid ""
+"Try it out by accessing <ulink url=\"http://localhost:8080/jboss-seam-"
+"registration/\"><literal>http://localhost:8080/jboss-seam-registration/</"
+"literal></ulink> with your web browser."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:73
+#, no-c-format
+msgid ""
+"When you deploy the example to Tomcat, any EJB3 components will run inside "
+"the JBoss Embeddable EJB3 container, a complete standalone EJB3 container "
+"environment."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:79
+#, no-c-format
+msgid "Running the example tests"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:80
+#, no-c-format
+msgid ""
+"Most of the examples come with a suite of TestNG integration tests. The "
+"easiest way to run the tests is to run <literal>ant testexample</literal> "
+"inside the <filename>examples/<replaceable>registration</replaceable></"
+"filename> directory. It is also possible to run the tests inside your IDE "
+"using the TestNG plugin."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:88
+#, no-c-format
+msgid "Your first Seam application: the registration example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:89
+#, no-c-format
+msgid ""
+"The registration example is a fairly trivial application that lets a new "
+"user store his username, real name and password in the database. The example "
+"isn't intended to show off all of the cool functionality of Seam. However, "
+"it demonstrates the use of an EJB3 session bean as a JSF action listener, "
+"and basic configuration of Seam."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:92
+#, no-c-format
+msgid ""
+"We'll go slowly, since we realize you might not yet be familiar with EJB 3.0."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:95
+#, no-c-format
+msgid ""
+"The start page displays a very basic form with three input fields. Try "
+"filling them in and then submitting the form. This will save a user object "
+"in the database."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:107 Tutorial.xml:424 Tutorial.xml:563 Tutorial.xml:723
+#, no-c-format
+msgid "Understanding the code"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:108
+#, no-c-format
+msgid ""
+"The example is implemented with two JSP pages, one entity bean and one "
+"stateless session bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:119
+#, no-c-format
+msgid "Let's take a look at the code, starting from the \"bottom\"."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:123
+#, no-c-format
+msgid "The entity bean: <literal>User.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:124
+#, no-c-format
+msgid ""
+"We need an EJB entity bean for user data. This class defines "
+"<emphasis>persistence</emphasis> and <emphasis>validation</emphasis> "
+"declaratively, via annotations. It also needs some extra annotations that "
+"define the class as a Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:140
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"user\")\n"
+"@Scope(SESSION)\n"
+"@Table(name=\"users\")\n"
+"public class User implements Serializable\n"
+"{\n"
+"   private static final long serialVersionUID = 1881413500711441951L;\n"
+"   \n"
+"   private String username;\n"
+"   private String password;\n"
+"   private String name;\n"
+"   \n"
+"   public User(String name, String password, String username)\n"
+"   {\n"
+"      this.name = name;\n"
+"      this.password = password;\n"
+"      this.username = username;\n"
+"   }\n"
+"   \n"
+"   public User() {}\n"
+"   \n"
+"   @NotNull @Length(min=5, max=15)\n"
+"   public String getPassword()\n"
+"   {\n"
+"      return password;\n"
+"   }\n"
+"\n"
+"   public void setPassword(String password)\n"
+"   {\n"
+"      this.password = password;\n"
+"   }\n"
+"   \n"
+"   @NotNull\n"
+"   public String getName()\n"
+"   {\n"
+"      return name;\n"
+"   }\n"
+"\n"
+"   public void setName(String name)\n"
+"   {\n"
+"      this.name = name;\n"
+"   }\n"
+"   \n"
+"   @Id @NotNull @Length(min=5, max=15)\n"
+"   public String getUsername()\n"
+"   {\n"
+"      return username;\n"
+"   }\n"
+"\n"
+"   public void setUsername(String username)\n"
+"   {\n"
+"      this.username = username;\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:143
+#, no-c-format
+msgid ""
+"The EJB3 standard <literal>@Entity</literal> annotation indicates that the "
+"<literal>User</literal> class is an entity bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:148
+#, no-c-format
+msgid ""
+"A Seam component needs a <emphasis>component name</emphasis> specified by "
+"the <link linkend=\"name-annotation\"><literal>@Name</literal></link> "
+"annotation. This name must be unique within the Seam application. When JSF "
+"asks Seam to resolve a context variable with a name that is the same as a "
+"Seam component name, and the context variable is currently undefined (null), "
+"Seam will instantiate that component, and bind the new instance to the "
+"context variable. In this case, Seam will instantiate a <literal>User</"
+"literal> the first time JSF encounters a variable named <literal>user</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:153
+#, no-c-format
+msgid ""
+"Whenever Seam instantiates a component, it binds the new instance to a "
+"context variable in the component's <emphasis>default context</emphasis>. "
+"The default context is specified using the <link linkend=\"scope-annotation"
+"\"><literal>@Scope</literal></link> annotation. The <literal>User</literal> "
+"bean is a session scoped component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:158
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Table</literal> annotation indicates that the "
+"<literal>User</literal> class is mapped to the <literal>users</literal> "
+"table."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:163
+#, no-c-format
+msgid ""
+"<literal>name</literal>, <literal>password</literal> and <literal>username</"
+"literal> are the persistent attributes of the entity bean. All of our "
+"persistent attributes define accessor methods. These are needed when this "
+"component is used by JSF in the render response and update model values "
+"phases."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:168
+#, no-c-format
+msgid ""
+"An empty constructor is both required by both the EJB specification and by "
+"Seam."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:173
+#, no-c-format
+msgid ""
+"The <literal>@NotNull</literal> and <literal>@Length</literal> annotations "
+"are part of the Hibernate Validator framework. Seam integrates Hibernate "
+"Validator and lets you use it for data validation (even if you are not using "
+"Hibernate for persistence)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:178
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Id</literal> annotation indicates the primary key "
+"attribute of the entity bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:185
+#, no-c-format
+msgid ""
+"The most important things to notice in this example are the <literal>@Name</"
+"literal> and <literal>@Scope</literal> annotations. These annotations "
+"establish that this class is a Seam component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:188
+#, no-c-format
+msgid ""
+"We'll see below that the properties of our <literal>User</literal> class are "
+"bound to directly to JSF components and are populated by JSF during the "
+"update model values phase. We don't need any tedious glue code to copy data "
+"back and forth between the JSP pages and the entity bean domain model."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:191
+#, no-c-format
+msgid ""
+"However, entity beans shouldn't do transaction management or database "
+"access. So we can't use this component as a JSF action listener. For that we "
+"need a session bean."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:198
+#, no-c-format
+msgid ""
+"The stateless session bean class: <literal>RegisterAction.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:199
+#, no-c-format
+msgid ""
+"Most Seam application use session beans as JSF action listeners (you can use "
+"JavaBeans instead if you like)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:202
+#, no-c-format
+msgid ""
+"We have exactly one JSF action in our application, and one session bean "
+"method attached to it. In this case, we'll use a stateless session bean, "
+"since all the state associated with our action is held by the <literal>User</"
+"literal> bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:205
+#, no-c-format
+msgid "This is the only really interesting code in the example!"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:222
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"register\")\n"
+"public class RegisterAction implements Register\n"
+"{\n"
+"\n"
+"   @In\n"
+"   private User user;\n"
+"   \n"
+"   @PersistenceContext\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @Logger\n"
+"   private Log log;\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = em.createQuery(\n"
+"         \"select username from User where username=#{user.username}\")\n"
+"         .getResultList();\n"
+"         \n"
+"      if (existing.size()==0)\n"
+"      {\n"
+"         em.persist(user);\n"
+"         log.info(\"Registered new user #{user.username}\");\n"
+"         return \"/registered.jsp\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         FacesMessages.instance().add(\"User #{user.username} already exists"
+"\");\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:225
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Stateless</literal> annotation marks this class "
+"as stateless session bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:230
+#, no-c-format
+msgid ""
+"The <link linkend=\"in-annotation\"><literal>@In</literal></link> annotation "
+"marks an attribute of the bean as injected by Seam. In this case, the "
+"attribute is injected from a context variable named <literal>user</literal> "
+"(the instance variable name)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:235
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@PersistenceContext</literal> annotation is used "
+"to inject the EJB3 entity manager."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:240
+#, no-c-format
+msgid ""
+"The Seam <literal>@Logger</literal> annotation is used to inject the "
+"component's <literal>Log</literal> instance."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:245
+#, no-c-format
+msgid ""
+"The action listener method uses the standard EJB3 <literal>EntityManager</"
+"literal> API to interact with the database, and returns the JSF outcome. "
+"Note that, since this is a sesson bean, a transaction is automatically begun "
+"when the <literal>register()</literal> method is called, and committed when "
+"it completes."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:250
+#, no-c-format
+msgid ""
+"Notice that Seam lets you use a JSF EL expression inside EJB-QL. Under the "
+"covers, this results in an ordinary JPA <literal>setParameter()</literal> "
+"call on the standard JPA <literal>Query</literal> object. Nice, huh?"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:255
+#, no-c-format
+msgid ""
+"The <literal>Log</literal> API lets us easily display templated log messages."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:260
+#, no-c-format
+msgid ""
+"JSF action listener methods return a string-valued outcome that determines "
+"what page will be displayed next. A null outcome (or a void action listener "
+"method) redisplays the previous page. In plain JSF, it is normal to always "
+"use a JSF <emphasis>navigation rule</emphasis> to determine the JSF view id "
+"from the outcome. For complex application this indirection is useful and a "
+"good practice. However, for very simple examples like this one, Seam lets "
+"you use the JSF view id as the outcome, eliminating the requirement for a "
+"navigation rule. <emphasis>Note that when you use a view id as an outcome, "
+"Seam always performs a browser redirect.</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:265
+#, no-c-format
+msgid ""
+"Seam provides a number of <emphasis>built-in components</emphasis> to help "
+"solve common problems. The <literal>FacesMessages</literal> component makes "
+"it easy to display templated error or success messages. Built-in Seam "
+"components may be obtained by injection, or by calling an <literal>instance()"
+"</literal> method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:272
+#, no-c-format
+msgid ""
+"Note that we did not explicitly specify a <literal>@Scope</literal> this "
+"time. Each Seam component type has a default scope if not explicitly "
+"specified. For stateless session beans, the default scope is the stateless "
+"context. Actually, <emphasis>all</emphasis> stateless session beans belong "
+"in the stateless context."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:275
+#, no-c-format
+msgid ""
+"Our session bean action listener performs the business and persistence logic "
+"for our mini-application. In more complex applications, we might need to "
+"layer the code and refactor persistence logic into a dedicated data access "
+"component. That's perfectly trivial to do. But notice that Seam does not "
+"force you into any particular strategy for application layering."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:278
+#, no-c-format
+msgid ""
+"Furthermore, notice that our session bean has simultaneous access to context "
+"associated with the web request (the form values in the <literal>User</"
+"literal> object, for example), and state held in transactional resources "
+"(the <literal>EntityManager</literal> object). This is a break from "
+"traditional J2EE architectures. Again, if you are more comfortable with the "
+"traditional J2EE layering, you can certainly implement that in a Seam "
+"application. But for many applications, it's simply not very useful."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:285
+#, no-c-format
+msgid "The session bean local interface: <literal>Register.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:286
+#, no-c-format
+msgid "Naturally, our session bean needs a local interface."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:291
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface Register\n"
+"{\n"
+"   public String register();\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:292
+#, no-c-format
+msgid "That's the end of the Java code. Now onto the deployment descriptors."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:298
+#, no-c-format
+msgid ""
+"The Seam component deployment descriptor: <literal>components.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:299
+#, no-c-format
+msgid ""
+"If you've used many Java frameworks before, you'll be used to having to "
+"declate all your component classes in some kind of XML file that gradually "
+"grows more and more unmanageable as your project matures. You'll be relieved "
+"to know that Seam does not require that application components be "
+"accompanied by XML. Most Seam applications require a very small amount of "
+"XML that does not grow very much as the project gets bigger."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:302
+#, no-c-format
+msgid ""
+"Nevertheless, it is often useful to be able to provide for <emphasis>some</"
+"emphasis> external configuration of <emphasis>some</emphasis> components "
+"(particularly the components built in to Seam). You have a couple of options "
+"here, but the most flexible option is to provide this configuration in a "
+"file called <literal>components.xml</literal>, located in the <literal>WEB-"
+"INF</literal> directory. We'll use the <literal>components.xml</literal> "
+"file to tell Seam how to find our EJB components in JNDI:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:305
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"&gt;\n"
+"     &lt;core:init jndi-pattern=\"@jndiPattern@\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:306
+#, no-c-format
+msgid ""
+"This code configures a property named <literal>jndiPattern</literal> of a "
+"built-in Seam component named <literal>org.jboss.seam.core.init</literal>."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:312
+#, no-c-format
+msgid "The web deployment description: <literal>web.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:313
+#, no-c-format
+msgid ""
+"The presentation layer for our mini-application will be deployed in a WAR. "
+"So we'll need a web deployment descriptor."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:316
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;web-app version=\"2.5\"\n"
+"    xmlns=\"http://java.sun.com/xml/ns/javaee\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n"
+"        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\"&gt;\n"
+"\n"
+"    &lt;!-- Seam --&gt;\n"
+"\n"
+"    &lt;listener&gt;\n"
+"        &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/"
+"listener-class&gt;\n"
+"    &lt;/listener&gt;\n"
+"\n"
+"    &lt;!-- MyFaces --&gt;\n"
+"\n"
+"    &lt;listener&gt;\n"
+"        &lt;listener-class&gt;\n"
+"            org.apache.myfaces.webapp.StartupServletContextListener\n"
+"        &lt;/listener-class&gt;\n"
+"    &lt;/listener&gt;\n"
+"\n"
+"    &lt;context-param&gt;\n"
+"        &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-"
+"name&gt;\n"
+"        &lt;param-value&gt;client&lt;/param-value&gt;\n"
+"    &lt;/context-param&gt;\n"
+"\n"
+"    &lt;servlet&gt;\n"
+"        &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;\n"
+"        &lt;servlet-class&gt;javax.faces.webapp.FacesServlet&lt;/servlet-"
+"class&gt;\n"
+"        &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;\n"
+"    &lt;/servlet&gt;\n"
+"\n"
+"    &lt;!-- Faces Servlet Mapping --&gt;\n"
+"    &lt;servlet-mapping&gt;\n"
+"        &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;\n"
+"        &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;\n"
+"    &lt;/servlet-mapping&gt;\n"
+"\n"
+"&lt;/web-app&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:317
+#, no-c-format
+msgid ""
+"This <literal>web.xml</literal> file configures Seam and MyFaces. The "
+"configuration you see here is pretty much identical in all Seam applications."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:323
+#, no-c-format
+msgid "The JSF configration: <literal>faces-config.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:324
+#, no-c-format
+msgid ""
+"All Seam applications use JSF views as the presentation layer. So we'll need "
+"<literal>faces-config.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:327
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;!DOCTYPE faces-config \n"
+"PUBLIC \"-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN\"\n"
+"                            \"http://java.sun.com/dtd/web-facesconfig_1_0.dtd"
+"\"&gt;\n"
+"&lt;faces-config&gt;\n"
+"\n"
+"    &lt;!-- A phase listener is needed by all Seam applications --&gt;\n"
+"    \n"
+"    &lt;lifecycle&gt;\n"
+"        &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-"
+"listener&gt;\n"
+"    &lt;/lifecycle&gt;\n"
+"\n"
+"&lt;/faces-config&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:328
+#, no-c-format
+msgid ""
+"The <literal>faces-config.xml</literal> file integrates Seam into JSF. Note "
+"that we don't need any JSF managed bean declarations! The managed beans are "
+"the Seam components. In Seam applications, the <literal>faces-config.xml</"
+"literal> is used much less often than in plain JSF."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:331
+#, no-c-format
+msgid ""
+"In fact, once you have all the basic descriptors set up, the <emphasis>only</"
+"emphasis> XML you need to write as you add new functionality to a Seam "
+"application is the navigation rules, and possibly jBPM process definitions. "
+"Seam takes the view that <emphasis>process flow</emphasis> and "
+"<emphasis>configuration data</emphasis> are the only things that truly "
+"belong in XML."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:334
+#, no-c-format
+msgid ""
+"In this simple example, we don't even need a navigation rule, since we "
+"decided to embed the view id in our action code."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:340
+#, no-c-format
+msgid "The EJB deployment descriptor: <literal>ejb-jar.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:341
+#, no-c-format
+msgid ""
+"The <literal>ejb-jar.xml</literal> file integrates Seam with EJB3, by "
+"attaching the <literal>SeamInterceptor</literal> to all session beans in the "
+"archive."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:344
+#, no-c-format
+msgid ""
+"&lt;ejb-jar xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \n"
+"         xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n"
+"         http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd\"\n"
+"         version=\"3.0\"&gt;\n"
+"         \n"
+"   &lt;interceptors&gt;\n"
+"     &lt;interceptor&gt;\n"
+"       &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"     &lt;/interceptor&gt;\n"
+"   &lt;/interceptors&gt;\n"
+"   \n"
+"   &lt;assembly-descriptor&gt;\n"
+"      &lt;interceptor-binding&gt;\n"
+"         &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"         &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"      &lt;/interceptor-binding&gt;\n"
+"   &lt;/assembly-descriptor&gt;\n"
+"   \n"
+"&lt;/ejb-jar&gt;"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:348
+#, no-c-format
+msgid ""
+"The EJB persistence deployment descriptor: <literal>persistence.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:349
+#, no-c-format
+msgid ""
+"The <literal>persistence.xml</literal> file tells the EJB persistence "
+"provider where to find the datasource, and contains some vendor-specific "
+"settings. In this case, enables automatic schema export at startup time."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:352
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;persistence xmlns=\"http://java.sun.com/xml/ns/persistence\" \n"
+"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence \n"
+"             http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd\" \n"
+"             version=\"1.0\"&gt;\n"
+"    &lt;persistence-unit name=\"userDatabase\"&gt;\n"
+"      &lt;provider&gt;org.hibernate.ejb.HibernatePersistence&lt;/"
+"provider&gt;\n"
+"      &lt;jta-data-source&gt;java:/DefaultDS&lt;/jta-data-source&gt;\n"
+"      &lt;properties&gt;\n"
+"         &lt;property name=\"hibernate.hbm2ddl.auto\" value=\"create-drop\"/"
+"&gt;\n"
+"      &lt;/properties&gt;\n"
+"    &lt;/persistence-unit&gt;\n"
+"&lt;/persistence&gt;"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:356
+#, no-c-format
+msgid ""
+"The view: <literal>register.jsp</literal> and <literal>registered.jsp</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:357
+#, no-c-format
+msgid ""
+"The view pages for a Seam application could be implemented using any "
+"technology that supports JSF. In this example we use JSP, since it is "
+"familiar to most developers and since we have minimal requirements here "
+"anyway. (But if you take our advice, you'll use Facelets for your own "
+"applications.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:360
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://jboss.com/products/seam/taglib\" prefix=\"s\" "
+"&#37;&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Register New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;table border=\"0\"&gt;\n"
+"       &lt;s:validateAll&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Username&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputText value=\"#{user.username}\"/&gt;&lt;/"
+"td&gt;\n"
+"         &lt;/tr&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Real Name&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputText value=\"#{user.name}\"/&gt;&lt;/td&gt;\n"
+"         &lt;/tr&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Password&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputSecret value=\"#{user.password}\"/&gt;&lt;/"
+"td&gt;\n"
+"         &lt;/tr&gt;\n"
+"       &lt;/s:validateAll&gt;\n"
+"     &lt;/table&gt;\n"
+"     &lt;h:messages/&gt;\n"
+"     &lt;h:commandButton type=\"submit\" value=\"Register\" action=\"#"
+"{register.register}\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:361
+#, no-c-format
+msgid ""
+"The only thing here that is specific to Seam is the <literal>&lt;s:"
+"validateAll&gt;</literal> tag. This JSF component tells JSF to validate all "
+"the contained input fields against the Hibernate Validator annotations "
+"specified on the entity bean."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:364
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Successfully Registered New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"    Welcome, &lt;h:outputText value=\"#{user.name}\"/&gt;, \n"
+"    you are successfully registered as &lt;h:outputText value=\"#{user."
+"username}\"/&gt;.\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:365
+#, no-c-format
+msgid ""
+"This is a boring old JSP pages using standard JSF components. There is "
+"nothing specific to Seam here."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:371
+#, no-c-format
+msgid "The EAR deployment descriptor: <literal>application.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:372
+#, no-c-format
+msgid ""
+"Finally, since our application is deployed as an EAR, we need a deployment "
+"descriptor there, too."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:375
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;application xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee \n"
+"             http://java.sun.com/xml/ns/javaee/application_5.xsd\"\n"
+"             version=\"5\"&gt;\n"
+"             \n"
+"    &lt;display-name&gt;Seam Registration&lt;/display-name&gt;\n"
+"\n"
+"    &lt;module&gt;\n"
+"        &lt;web&gt;\n"
+"            &lt;web-uri&gt;jboss-seam-registration.war&lt;/web-uri&gt;\n"
+"            &lt;context-root&gt;/seam-registration&lt;/context-root&gt;\n"
+"        &lt;/web&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;ejb&gt;jboss-seam-registration.jar&lt;/ejb&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;jboss-seam.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;el-api.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;el-ri.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    \n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:376
+#, no-c-format
+msgid ""
+"This deployment descriptor links modules in the enterprise archive and binds "
+"the web application to the context root <literal>/seam-registration</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:387 Tutorial.xml:535 Tutorial.xml:698 Tutorial.xml:813
+#, no-c-format
+msgid "How it works"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:388
+#, no-c-format
+msgid ""
+"When the form is submitted, JSF asks Seam to resolve the variable named "
+"<literal>user</literal>. Since there is no value already bound to that name "
+"(in any Seam context), Seam instantiates the <literal>user</literal> "
+"component, and returns the resulting <literal>User</literal> entity bean "
+"instance to JSF after storing it in the Seam session context."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:391
+#, no-c-format
+msgid ""
+"The form input values are now validated against the Hibernate Validator "
+"constraints specified on the <literal>User</literal> entity. If the "
+"constraints are violated, JSF redisplays the page. Otherwise, JSF binds the "
+"form input values to properties of the <literal>User</literal> entity bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:394
+#, no-c-format
+msgid ""
+"Next, JSF asks Seam to resolve the variable named <literal>register</"
+"literal>. Seam finds the <literal>RegisterAction</literal> stateless session "
+"bean in the stateless context and returns it. JSF invokes the "
+"<literal>register()</literal> action listener method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:397
+#, no-c-format
+msgid ""
+"Seam intercepts the method call and injects the <literal>User</literal> "
+"entity from the Seam session context, before continuing the invocation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:400
+#, no-c-format
+msgid ""
+"The <literal>register()</literal> method checks if a user with the entered "
+"username already exists. If so, an error message is queued with the "
+"<literal>FacesMessages</literal> component, and a null outcome is returned, "
+"causing a page redisplay. The <literal>FacesMessages</literal> component "
+"interpolates the JSF expression embedded in the message string and adds a "
+"JSF <literal>FacesMessage</literal> to the view."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:403
+#, no-c-format
+msgid ""
+"If no user with that username exists, the <literal>\"/registered.jsp\"</"
+"literal> outcome triggers a browser redirect to the <literal>registered.jsp</"
+"literal> page. When JSF comes to render the page, it asks Seam to resolve "
+"the variable named <literal>user</literal> and uses property values of the "
+"returned <literal>User</literal> entity from Seam's session scope."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:411
+#, no-c-format
+msgid "Clickable lists in Seam: the messages example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:412
+#, no-c-format
+msgid ""
+"Clickable lists of database search results are such an important part of any "
+"online application that Seam provides special functionality on top of JSF to "
+"make it easier to query data using EJB-QL or HQL and display it as a "
+"clickable list using a JSF <literal>&lt;h:dataTable&gt;</literal>. The "
+"messages example demonstrates this functionality."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:425
+#, no-c-format
+msgid ""
+"The message list example has one entity bean, <literal>Message</literal>, "
+"one session bean, <literal>MessageListBean</literal> and one JSP."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:429
+#, no-c-format
+msgid "The entity bean: <literal>Message.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:430
+#, no-c-format
+msgid ""
+"The <literal>Message</literal> entity defines the title, text, date and time "
+"of a message, and a flag indicating whether the message has been read:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:433
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"message\")\n"
+"@Scope(EVENT)\n"
+"public class Message implements Serializable\n"
+"{\n"
+"   private Long id;\n"
+"   private String title;\n"
+"   private String text;\n"
+"   private boolean read;\n"
+"   private Date datetime;\n"
+"   \n"
+"   @Id @GeneratedValue\n"
+"   public Long getId() {\n"
+"      return id;\n"
+"   }\n"
+"   public void setId(Long id) {\n"
+"      this.id = id;\n"
+"   }\n"
+"   \n"
+"   @NotNull @Length(max=100)\n"
+"   public String getTitle() {\n"
+"      return title;\n"
+"   }\n"
+"   public void setTitle(String title) {\n"
+"      this.title = title;\n"
+"   }\n"
+"   \n"
+"   @NotNull @Lob\n"
+"   public String getText() {\n"
+"      return text;\n"
+"   }\n"
+"   public void setText(String text) {\n"
+"      this.text = text;\n"
+"   }\n"
+"   \n"
+"   @NotNull\n"
+"   public boolean isRead() {\n"
+"      return read;\n"
+"   }\n"
+"   public void setRead(boolean read) {\n"
+"      this.read = read;\n"
+"   }\n"
+"   \n"
+"   @NotNull \n"
+"   @Basic @Temporal(TemporalType.TIMESTAMP)\n"
+"   public Date getDatetime() {\n"
+"      return datetime;\n"
+"   }\n"
+"   public void setDatetime(Date datetime) {\n"
+"      this.datetime = datetime;\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:438
+#, no-c-format
+msgid "The stateful session bean: <literal>MessageManagerBean.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:439
+#, no-c-format
+msgid ""
+"Just like in the previous example, we have a session bean, "
+"<literal>MessageManagerBean</literal>, which defines the action listener "
+"methods for the two buttons on our form. One of the buttons selects a "
+"message from the list, and displays that message. The other button deletes a "
+"message. So far, this is not so different to the previous example."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:442
+#, no-c-format
+msgid ""
+"But <literal>MessageManagerBean</literal> is also responsible for fetching "
+"the list of messages the first time we navigate to the message list page. "
+"There are various ways the user could navigate to the page, and not all of "
+"them are preceded by a JSF action&mdash;the user might have bookmarked the "
+"page, for example. So the job of fetching the message list takes place in a "
+"Seam <emphasis>factory method</emphasis>, instead of in an action listener "
+"method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:445
+#, no-c-format
+msgid ""
+"We want to cache the list of messages in memory between server requests, so "
+"we will make this a stateful session bean."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:459
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Scope(SESSION)\n"
+"@Name(\"messageManager\")\n"
+"public class MessageManagerBean implements Serializable, MessageManager\n"
+"{\n"
+"\n"
+"   @DataModel\n"
+"   private List&lt;Message&gt; messageList;\n"
+"   \n"
+"   @DataModelSelection\n"
+"   @Out(required=false)\n"
+"   private Message message;\n"
+"   \n"
+"   @PersistenceContext(type=EXTENDED)\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @Factory(\"messageList\")\n"
+"   public void findMessages()\n"
+"   {\n"
+"      messageList = em.createQuery(\"from Message msg order by msg.datetime "
+"desc\").getResultList();\n"
+"   }\n"
+"   \n"
+"   public void select()\n"
+"   {\n"
+"      message.setRead(true);\n"
+"   }\n"
+"   \n"
+"   public void delete()\n"
+"   {\n"
+"      messageList.remove(message);\n"
+"      em.remove(message);\n"
+"      message=null;\n"
+"   }\n"
+"   \n"
+"   @Remove @Destroy\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:462
+#, no-c-format
+msgid ""
+"The <literal>@DataModel</literal> annotation exposes an attibute of type "
+"<literal>java.util.List</literal> to the JSF page as an instance of "
+"<literal>javax.faces.model.DataModel</literal>. This allows us to use the "
+"list in a JSF <literal>&lt;h:dataTable&gt;</literal> with clickable links "
+"for each row. In this case, the <literal>DataModel</literal> is made "
+"available in a session context variable named <literal>messageList</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:467
+#, no-c-format
+msgid ""
+"The <literal>@DataModelSelection</literal> annotation tells Seam to inject "
+"the <literal>List</literal> element that corresponded to the clicked link."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:472
+#, no-c-format
+msgid ""
+"The <literal>@Out</literal> annotation then exposes the selected value "
+"directly to the page. So ever time a row of the clickable list is selected, "
+"the <literal>Message</literal> is injected to the attribute of the stateful "
+"bean, and the subsequently <emphasis>outjected</emphasis> to the event "
+"context variable named <literal>message</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:477
+#, no-c-format
+msgid ""
+"This stateful bean has an EJB3 <emphasis>extended persistence context</"
+"emphasis>. The messages retrieved in the query remain in the managed state "
+"as long as the bean exists, so any subsequent method calls to the stateful "
+"bean can update them without needing to make any explicit call to the "
+"<literal>EntityManager</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:482
+#, no-c-format
+msgid ""
+"The first time we navigate to the JSP page, there will be no value in the "
+"<literal>messageList</literal> context variable. The <literal>@Factory</"
+"literal> annotation tells Seam to create an instance of "
+"<literal>MessageManagerBean</literal> and invoke the <literal>findMessages()"
+"</literal> method to initialize the value. We call <literal>findMessages()</"
+"literal> a <emphasis>factory method</emphasis> for <literal>messages</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:487
+#, no-c-format
+msgid ""
+"The <literal>select()</literal> action listener method marks the selected "
+"<literal>Message</literal> as read, and updates it in the database."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:492
+#, no-c-format
+msgid ""
+"The <literal>delete()</literal> action listener method removes the selected "
+"<literal>Message</literal> from the database."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:497
+#, no-c-format
+msgid ""
+"All stateful session bean Seam components <emphasis>must</emphasis> have a "
+"method marked <literal>@Remove @Destroy</literal> to ensure that Seam will "
+"remove the stateful bean when the Seam context ends, and clean up any server-"
+"side state."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:504
+#, no-c-format
+msgid ""
+"Note that this is a session-scoped Seam component. It is associated with the "
+"user login session, and all requests from a login session share the same "
+"instance of the component. (In Seam applications, we usually use session-"
+"scoped components sparingly.)"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:510
+#, no-c-format
+msgid ""
+"The session bean local interface: <literal>MessageManager.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:511
+#, no-c-format
+msgid "All session beans have a business interface, of course."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:514
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface MessageManager\n"
+"{\n"
+"   public void findMessages();\n"
+"   public void select();\n"
+"   public void delete();\n"
+"   public void destroy();\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:515
+#, no-c-format
+msgid "From now on, we won't show local interfaces in our code examples."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:518
+#, no-c-format
+msgid ""
+"Let's skip over <literal>components.xml</literal>, <literal>persistence.xml</"
+"literal>, <literal>web.xml</literal>, <literal>ejb-jar.xml</literal>, "
+"<literal>faces-config.xml</literal> and <literal>application.xml</literal> "
+"since they are much the same as the previous example, and go straight to the "
+"JSP."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:524
+#, no-c-format
+msgid "The view: <literal>messages.jsp</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:525
+#, no-c-format
+msgid ""
+"The JSP page is a straightforward use of the JSF <literal>&lt;h:dataTable&gt;"
+"</literal> component. Again, nothing specific to Seam."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:528
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Messages&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;h2&gt;Message List&lt;/h2&gt;\n"
+"     &lt;h:outputText value=\"No messages to display\" rendered=\"#"
+"{messageList.rowCount==0}\"/&gt;\n"
+"     &lt;h:dataTable var=\"msg\" value=\"#{messageList}\" rendered=\"#"
+"{messageList.rowCount&gt;0}\"&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Read\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:selectBooleanCheckbox value=\"#{msg.read}\" disabled=\"true"
+"\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Title\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:commandLink value=\"#{msg.title}\" action=\"#"
+"{messageManager.select}\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Date/Time\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:outputText value=\"#{msg.datetime}\"&gt;\n"
+"              &lt;f:convertDateTime type=\"both\" dateStyle=\"medium\" "
+"timeStyle=\"short\"/&gt;\n"
+"           &lt;/h:outputText&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;h:commandButton value=\"Delete\" action=\"#{messageManager."
+"delete}\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"     &lt;/h:dataTable&gt;\n"
+"     &lt;h3&gt;&lt;h:outputText value=\"#{message.title}\"/&gt;&lt;/h3&gt;\n"
+"     &lt;div&gt;&lt;h:outputText value=\"#{message.text}\"/&gt;&lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:536
+#, no-c-format
+msgid ""
+"The first time we navigate to the <literal>messages.jsp</literal> page, "
+"whether by a JSF postback (faces request) or a direct browser GET request "
+"(non-faces request), the page will try to resolve the <literal>messageList</"
+"literal> context variable. Since this context variable is not initialized, "
+"Seam will call the factory method <literal>findMessages()</literal>, which "
+"performs a query against the database and results in a <literal>DataModel</"
+"literal> being outjected. This <literal>DataModel</literal> provides the row "
+"data needed for rendering the <literal>&lt;h:dataTable&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:539
+#, no-c-format
+msgid ""
+"When the user clicks the <literal>&lt;h:commandLink&gt;</literal>, JSF calls "
+"the <literal>select()</literal> action listener. Seam intercepts this call "
+"and injects the selected row data into the <literal>message</literal> "
+"attribute of the <literal>messageManager</literal> component. The action "
+"listener fires, marking the selected <literal>Message</literal> as read. At "
+"the end of the call, Seam outjects the selected <literal>Message</literal> "
+"to the context variable named <literal>message</literal>. Next, the EJB "
+"container commits the transaction, and the change to the <literal>Message</"
+"literal> is flushed to the database. Finally, the page is re-rendered, "
+"redisplaying the message list, and displaying the selected message below it."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:542
+#, no-c-format
+msgid ""
+"If the user clicks the <literal>&lt;h:commandButton&gt;</literal>, JSF calls "
+"the <literal>delete()</literal> action listener. Seam intercepts this call "
+"and injects the selected row data into the <literal>message</literal> "
+"attribute of the <literal>messageList</literal> component. The action "
+"listener fires, removing the selected <literal>Message</literal> from the "
+"list, and also calling <literal>remove()</literal> on the "
+"<literal>EntityManager</literal>. At the end of the call, Seam refreshes the "
+"<literal>messageList</literal> context variable and clears the context "
+"variable named <literal>message</literal>. The EJB container commits the "
+"transaction, and deletes the <literal>Message</literal> from the database. "
+"Finally, the page is re-rendered, redisplaying the message list."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:550
+#, no-c-format
+msgid "Seam and jBPM: the todo list example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:551
+#, no-c-format
+msgid ""
+"jBPM provides sophisticated functionality for workflow and task management. "
+"To get a small taste of how jBPM integrates with Seam, we'll show you a "
+"simple \"todo list\" application. Since managing lists of tasks is such core "
+"functionality for jBPM, there is hardly any Java code at all in this example."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:564
+#, no-c-format
+msgid ""
+"The center of this example is the jBPM process definition. There are also "
+"two JSPs and two trivial JavaBeans (There was no reason to use session "
+"beans, since they do not access the database, or have any other "
+"transactional behavior). Let's start with the process definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:575
+#, no-c-format
+msgid ""
+"&lt;process-definition name=\"todo\"&gt;\n"
+"   \n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"todo\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;task-node name=\"todo\"&gt;\n"
+"      &lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"         &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"      &lt;/task&gt;\n"
+"      &lt;transition to=\"done\"/&gt;\n"
+"   &lt;/task-node&gt;\n"
+"   \n"
+"   &lt;end-state name=\"done\"/&gt;\n"
+"   \n"
+"&lt;/process-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:578
+#, no-c-format
+msgid ""
+"The <literal>&lt;start-state&gt;</literal> node represents the logical start "
+"of the process. When the process starts, it immediately transitions to the "
+"<literal>todo</literal> node."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:583
+#, no-c-format
+msgid ""
+"The <literal>&lt;task-node&gt;</literal> node represents a <emphasis>wait "
+"state</emphasis>, where business process execution pauses, waiting for one "
+"or more tasks to be performed."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:588
+#, no-c-format
+msgid ""
+"The <literal>&lt;task&gt;</literal> element defines a task to be performed "
+"by a user. Since there is only one task defined on this node, when it is "
+"complete, execution resumes, and we transition to the end state. The task "
+"gets its description from a Seam component named <literal>todoList</literal> "
+"(one of the JavaBeans)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:593
+#, no-c-format
+msgid ""
+"Tasks need to be assigned to a user or group of users when they are created. "
+"In this case, the task is assigned to the current user, which we get from a "
+"built-in Seam component named <literal>actor</literal>. Any Seam component "
+"may be used to perform task assignment."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:598
+#, no-c-format
+msgid ""
+"The <literal>&lt;end-state&gt;</literal> node defines the logical end of the "
+"business process. When execution reaches this node, the process instance is "
+"destroyed."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:605
+#, no-c-format
+msgid ""
+"If we view this process definition using the process definition editor "
+"provided by JBossIDE, this is what it looks like:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:616
+#, no-c-format
+msgid ""
+"This document defines our <emphasis>business process</emphasis> as a graph "
+"of nodes. This is the most trivial possible business process: there is one "
+"<emphasis>task</emphasis> to be performed, and when that task is complete, "
+"the business process ends."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:619
+#, no-c-format
+msgid ""
+"The first JavaBean handles the login screen <literal>login.jsp</literal>. "
+"Its job is just to initialize the jBPM actor id using the <literal>actor</"
+"literal> component. (In a real application, it would also need to "
+"authenticate the user.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:622
+#, no-c-format
+msgid ""
+"@Name(\"login\")\n"
+"public class Login {\n"
+"   \n"
+"   @In\n"
+"   private Actor actor;\n"
+"   \n"
+"   private String user;\n"
+"\n"
+"   public String getUser() {\n"
+"      return user;\n"
+"   }\n"
+"\n"
+"   public void setUser(String user) {\n"
+"      this.user = user;\n"
+"   }\n"
+"   \n"
+"   public String login()\n"
+"   {\n"
+"      actor.setId(user);\n"
+"      return \"/todo.jsp\";\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:623
+#, no-c-format
+msgid ""
+"Here we see the use of <literal>@In</literal> to inject the built-in "
+"<literal>Actor</literal> component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:626
+#, no-c-format
+msgid "The JSP itself is trivial:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:629
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"&#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"&#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Login&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Login&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    &lt;h:form&gt;\n"
+"      &lt;div&gt;\n"
+"        &lt;h:inputText value=\"#{login.user}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Login\" action=\"#{login.login}\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"    &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:630
+#, no-c-format
+msgid ""
+"The second JavaBean is responsible for starting business process instances, "
+"and ending tasks."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:639
+#, no-c-format
+msgid ""
+"@Name(\"todoList\")\n"
+"public class TodoList {\n"
+"   \n"
+"   private String description;\n"
+"   \n"
+"   public String getDescription()\n"
+"   {\n"
+"      return description;\n"
+"   }\n"
+"\n"
+"   public void setDescription(String description) {\n"
+"      this.description = description;\n"
+"   }\n"
+"   \n"
+"   @CreateProcess(definition=\"todo\")\n"
+"   public void createTodo() {}\n"
+"   \n"
+"   @StartTask @EndTask\n"
+"   public void done() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:642
+#, no-c-format
+msgid ""
+"The description property accepts user input form the JSP page, and exposes "
+"it to the process definition, allowing the task description to be set."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:647
+#, no-c-format
+msgid ""
+"The Seam <literal>@CreateProcess</literal> annotation creates a new jBPM "
+"process instance for the named process definition."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:652
+#, no-c-format
+msgid ""
+"The Seam <literal>@StartTask</literal> annotation starts work on a task. The "
+"<literal>@EndTask</literal> ends the task, and allows the business process "
+"execution to resume."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:659
+#, no-c-format
+msgid ""
+"In a more realistic example, <literal>@StartTask</literal> and "
+"<literal>@EndTask</literal> would not appear on the same method, because "
+"there is usually work to be done using the application in order to complete "
+"the task."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:662
+#, no-c-format
+msgid "Finally, the meat of the application is in <literal>todo.jsp</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:665
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://jboss.com/products/seam/taglib\" prefix=\"s\" "
+"&#37;&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Todo List&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Todo List&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"   &lt;h:form id=\"list\"&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:outputText value=\"There are no todo items.\" rendered=\"#"
+"{empty \n"
+"             taskInstanceList}\"/&gt;\n"
+"         &lt;h:dataTable value=\"#{taskInstanceList}\" var=\"task\" rendered="
+"\"#{not empty taskInstanceList}\"&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Description\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.description}\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Created\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:outputText value=\"#{task.taskMgmtInstance."
+"processInstance.start}\"&gt;\n"
+"                    &lt;f:convertDateTime type=\"date\"/&gt;\n"
+"                &lt;/h:outputText&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Priority\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.priority}\" style=\"width: 30"
+"\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Due Date\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.dueDate}\" style=\"width: 100"
+"\"&gt;\n"
+"                    &lt;f:convertDateTime type=\"date\" dateStyle=\"short\"/"
+"&gt;\n"
+"                &lt;/h:inputText&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;s:button value=\"Done\" action=\"#{todoList.done}\" "
+"taskInstance=\"#{task}\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"         &lt;/h:dataTable&gt;\n"
+"      &lt;/div&gt;\n"
+"      &lt;div&gt;\n"
+"      &lt;h:messages/&gt;\n"
+"      &lt;/div&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:commandButton value=\"Update Items\" action=\"update\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"   &lt;h:form id=\"new\"&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:inputText value=\"#{todoList.description}\"/&gt;\n"
+"         &lt;h:commandButton value=\"Create New Item\" action=\"#{todoList."
+"createTodo}\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:666
+#, no-c-format
+msgid "Let's take this one piece at a time."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:669
+#, no-c-format
+msgid ""
+"The page renders a list of tasks, which it gets from a built-in Seam "
+"component named <literal>taskInstanceList</literal>. The list is defined "
+"inside a JSF form."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:672
+#, no-c-format
+msgid ""
+"&lt;h:form id=\"list\"&gt;\n"
+"   &lt;div&gt;\n"
+"      &lt;h:outputText value=\"There are no todo items.\" rendered=\"#{empty "
+"taskInstanceList}\"/&gt;\n"
+"      &lt;h:dataTable value=\"#{taskInstanceList}\" var=\"task\" rendered=\"#"
+"{not empty taskInstanceList}\"&gt;\n"
+"         ...\n"
+"      &lt;/h:dataTable&gt;\n"
+"   &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:673
+#, no-c-format
+msgid ""
+"Each element of the list is an instance of the jBPM class "
+"<literal>TaskInstance</literal>. The following code simply displays the "
+"interesting properties of each task in the list. For the description, "
+"priority and due date, we use input controls, to allow the user to update "
+"these values."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:676
+#, no-c-format
+msgid ""
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"       &lt;h:outputText value=\"Description\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.description}\"/&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Created\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:outputText value=\"#{task.taskMgmtInstance.processInstance.start}"
+"\"&gt;\n"
+"        &lt;f:convertDateTime type=\"date\"/&gt;\n"
+"    &lt;/h:outputText&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Priority\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.priority}\" style=\"width: 30\"/&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Due Date\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.dueDate}\" style=\"width: 100\"&gt;\n"
+"        &lt;f:convertDateTime type=\"date\" dateStyle=\"short\"/&gt;\n"
+"    &lt;/h:inputText&gt;\n"
+"&lt;/h:column&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:677
+#, no-c-format
+msgid ""
+"This button ends the task by calling the action method annotated "
+"<literal>@StartTask @EndTask</literal>. It passes the task id to Seam as a "
+"request parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:680
+#, no-c-format
+msgid ""
+"&lt;h:column&gt;\n"
+"    &lt;s:button value=\"Done\" action=\"#{todoList.done}\" taskInstance=\"#"
+"{task}\"/&gt;\n"
+"&lt;/h:column&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:681
+#, no-c-format
+msgid ""
+"(Note that this is using a Seam <literal>&lt;s:button&gt;</literal> JSF "
+"control from the <literal>seam-ui.jar</literal> package.)"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:684
+#, no-c-format
+msgid ""
+"This button is used to update the properties of the tasks. When the form is "
+"submitted, Seam and jBPM will make any changes to the tasks persistent. "
+"There is no need for any action listener method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:687
+#, no-c-format
+msgid "&lt;h:commandButton value=\"Update Items\" action=\"update\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:688
+#, no-c-format
+msgid ""
+"A second form on the page is used to create new items, by calling the action "
+"method annotated <literal>@CreateProcess</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:691
+#, no-c-format
+msgid ""
+"&lt;h:form id=\"new\"&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:inputText value=\"#{todoList.description}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Create New Item\" action=\"#{todoList."
+"createTodo}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:692
+#, no-c-format
+msgid ""
+"There are several other files needed for the example, but they are just "
+"standard jBPM and Seam configuration and not very interesting."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:699 Tutorial.xml:814 Tutorial.xml:1157 Tutorial.xml:1178
+#: Tutorial.xml:1191
+#, no-c-format
+msgid "TODO"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:707
+#, no-c-format
+msgid "Seam pageflow: the numberguess example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:708
+#, no-c-format
+msgid ""
+"For Seam applications with relatively freeform (ad hoc) navigation, JSF/Seam "
+"navigation rules are a perfectly good way to define the page flow. For "
+"applications with a more constrained style of navigation, especially for "
+"user interfaces which are more stateful, navigation rules make it difficult "
+"to really understand the flow of the system. To understand the flow, you "
+"need to piece it together from the view pages, the actions and the "
+"navigation rules."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:711
+#, no-c-format
+msgid ""
+"Seam allows you to use a jPDL process definition to define pageflow. The "
+"simple number guessing example shows how this is done."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:724
+#, no-c-format
+msgid ""
+"The example is implemented using one JavaBean, three JSP pages and a jPDL "
+"pageflow definition. Let's begin with the pageflow:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:734
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"numberGuess\"&gt;\n"
+"   \n"
+"   &lt;start-page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"          &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"      &lt;/transition&gt;\n"
+"   &lt;/start-page&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess."
+"correctGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateRemainingGuesses\" expression=\"#{numberGuess."
+"lastGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"lose\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"displayGuess\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"lose\" view-id=\"/lose.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:737
+#, no-c-format
+msgid ""
+"The <literal>&lt;page&gt;</literal> element defines a wait state where the "
+"system displays a particular JSF view and waits for user input. The "
+"<literal>view-id</literal> is the same JSF view id used in plain JSF "
+"navigation rules. The <literal>redirect</literal> attribute tells Seam to "
+"use post-then-redirect when navigating to the page. (This results in "
+"friendly browser URLs.)"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:742
+#, no-c-format
+msgid ""
+"The <literal>&lt;transition&gt;</literal> element names a JSF outcome. The "
+"transition is triggered when a JSF action results in that outcome. Execution "
+"will then proceed to the next node of the pageflow graph, after invocation "
+"of any jBPM transition actions."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:747
+#, no-c-format
+msgid ""
+"A transition <literal>&lt;action&gt;</literal> is just like a JSF action, "
+"except that it occurs when a jBPM transition occurs. The transition action "
+"can invoke any Seam component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:752
+#, no-c-format
+msgid ""
+"A <literal>&lt;decision&gt;</literal> node branches the pageflow, and "
+"determines the next node to execute by evaluating a JSF EL expression."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:759
+#, no-c-format
+msgid "Here is what the pageflow looks like in the JBossIDE pageflow editor:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:770
+#, no-c-format
+msgid ""
+"Now that we have seen the pageflow, it is very, very easy to understand the "
+"rest of the application!"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:773
+#, no-c-format
+msgid ""
+"Here is the main page of the application, <literal>numberGuess.jsp</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:776
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"&#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"&#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Guess a number...&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Guess a number...&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    &lt;h:form&gt;\n"
+"        &lt;h:outputText value=\"Higher!\" rendered=\"#{numberGuess."
+"randomNumber&gt;numberGuess.currentGuess}\" /&gt;\n"
+"        &lt;h:outputText value=\"Lower!\" rendered=\"#{numberGuess."
+"randomNumber&lt;numberGuess.currentGuess}\" /&gt;\n"
+"        &lt;br /&gt;\n"
+"        I'm thinking of a number between &lt;h:outputText value=\"#"
+"{numberGuess.smallest}\" /&gt; and \n"
+"        &lt;h:outputText value=\"#{numberGuess.biggest}\" /&gt;. You have \n"
+"        &lt;h:outputText value=\"#{numberGuess.remainingGuesses}\" /&gt; "
+"guesses.\n"
+"        &lt;br /&gt;\n"
+"        Your guess: \n"
+"        &lt;h:inputText value=\"#{numberGuess.currentGuess}\" id=\"guess\" "
+"required=\"true\"&gt;\n"
+"            &lt;f:validateLongRange\n"
+"                maximum=\"#{numberGuess.biggest}\" \n"
+"                minimum=\"#{numberGuess.smallest}\"/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"        &lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"guess"
+"\" /&gt;\n"
+"        &lt;br/&gt;\n"
+"        &lt;h:message for=\"guess\" style=\"color: red\"/&gt;\n"
+"    &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:777
+#, no-c-format
+msgid ""
+"Notice how the command button names the <literal>guess</literal> transition "
+"instead of calling an action directly."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:780
+#, no-c-format
+msgid "The <literal>win.jsp</literal> page is predictable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:783
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"&#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"&#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;You won!&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;You won!&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    Yes, the answer was &lt;h:outputText value=\"#{numberGuess.currentGuess}"
+"\" /&gt;.\n"
+"    It took you &lt;h:outputText value=\"#{numberGuess.guessCount}\" /&gt; "
+"guesses.\n"
+"    Would you like to &lt;a href=\"numberGuess.seam\"&gt;play again&lt;/"
+"a&gt;?\n"
+"  &lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:784
+#, no-c-format
+msgid ""
+"As is <literal>lose.jsp</literal> (which I can't be bothered copy/pasting). "
+"Finally, the JavaBean Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:792
+#, no-c-format
+msgid ""
+"@Name(\"numberGuess\")\n"
+"@Scope(ScopeType.CONVERSATION)\n"
+"public class NumberGuess {\n"
+"   \n"
+"   private int randomNumber;\n"
+"   private Integer currentGuess;\n"
+"   private int biggest;\n"
+"   private int smallest;\n"
+"   private int guessCount;\n"
+"   private int maxGuesses;\n"
+"   \n"
+"   @Create \n"
+"   @Begin(pageflow=\"numberGuess\")\n"
+"   public void begin()\n"
+"   {\n"
+"      randomNumber = new Random().nextInt(100);\n"
+"      guessCount = 0;\n"
+"      biggest = 100;\n"
+"      smallest = 1;\n"
+"   }\n"
+"   \n"
+"   public void setCurrentGuess(Integer guess)\n"
+"   {\n"
+"      this.currentGuess = guess;\n"
+"   }\n"
+"   \n"
+"   public Integer getCurrentGuess()\n"
+"   {\n"
+"      return currentGuess;\n"
+"   }\n"
+"   \n"
+"   public void guess()\n"
+"   {\n"
+"      if (currentGuess&gt;randomNumber)\n"
+"      {\n"
+"         biggest = currentGuess - 1;\n"
+"      }\n"
+"      if (currentGuess&lt;randomNumber)\n"
+"      {\n"
+"         smallest = currentGuess + 1;\n"
+"      }\n"
+"      guessCount ++;\n"
+"   }\n"
+"   \n"
+"   public boolean isCorrectGuess()\n"
+"   {\n"
+"      return currentGuess==randomNumber;\n"
+"   }\n"
+"   \n"
+"   public int getBiggest()\n"
+"   {\n"
+"      return biggest;\n"
+"   }\n"
+"   \n"
+"   public int getSmallest()\n"
+"   {\n"
+"      return smallest;\n"
+"   }\n"
+"   \n"
+"   public int getGuessCount()\n"
+"   {\n"
+"      return guessCount;\n"
+"   }\n"
+"   \n"
+"   public boolean isLastGuess()\n"
+"   {\n"
+"      return guessCount==maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getRemainingGuesses() {\n"
+"      return maxGuesses-guessCount;\n"
+"   }\n"
+"\n"
+"   public void setMaxGuesses(int maxGuesses) {\n"
+"      this.maxGuesses = maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getMaxGuesses() {\n"
+"      return maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getRandomNumber() {\n"
+"      return randomNumber;\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:795
+#, no-c-format
+msgid ""
+"The first time a JSP page asks for a <literal>numberGuess</literal> "
+"component, Seam will create a new one for it, and the <literal>@Create</"
+"literal> method will be invoked, allowing the component to initialize itself."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:800
+#, no-c-format
+msgid ""
+"The <literal>@Begin</literal> annotation starts a Seam "
+"<emphasis>conversation</emphasis> (much more about that later), and "
+"specifies the pageflow definition to use for the conversation's page flow."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:807
+#, no-c-format
+msgid ""
+"As you can see, this Seam component is pure business logic! It doesn't need "
+"to know anything at all about the user interaction flow. This makes the "
+"component potentially more reuseable."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:822
+#, no-c-format
+msgid "A complete Seam application: the Hotel Booking example"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:824
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:825
+#, no-c-format
+msgid ""
+"The booking application is a complete hotel room reservation system "
+"incorporating the following features:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:830
+#, no-c-format
+msgid "User registration"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:835
+#, no-c-format
+msgid "Login"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:840
+#, no-c-format
+msgid "Logout"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:845
+#, no-c-format
+msgid "Set password"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:850
+#, no-c-format
+msgid "Hotel search"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:855
+#, no-c-format
+msgid "Hotel selection"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:860
+#, no-c-format
+msgid "Room reservation"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:865
+#, no-c-format
+msgid "Reservation confirmation"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:870
+#, no-c-format
+msgid "Existing reservation list"
+msgstr ""
+
+#. Tag: screeninfo
+#: Tutorial.xml:875
+#, no-c-format
+msgid "Booking example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:883
+#, no-c-format
+msgid ""
+"The booking application uses JSF, EJB 3.0 and Seam, together with Facelets "
+"for the view. There is also a port of this application to JSF, Facelets, "
+"Seam, JavaBeans and Hibernate3."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:886
+#, no-c-format
+msgid ""
+"One of the things you'll notice if you play with this application for long "
+"enough is that it is extremely <emphasis>robust</emphasis>. You can play "
+"with back buttons and browser refresh and opening multiple windows and "
+"entering nonsensical data as much as you like and you will find it very "
+"difficult to make the application crash. You might think that we spent weeks "
+"testing and fixing bugs to achive this. Actually, this is not the case. Seam "
+"was designed to make it very straightforward to build robust web "
+"applications and a lot of robustness that you are probably used to having to "
+"code yourself comes naturally and automatically with Seam."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:889
+#, no-c-format
+msgid ""
+"As you browse the sourcecode of the example application, and learn how the "
+"application works, observe how the declarative state management and "
+"integrated validation has been used to achieve this robustness."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:895
+#, no-c-format
+msgid "Overview of the booking example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:896
+#, no-c-format
+msgid ""
+"The project structure is identical to the previous one, to install and "
+"deploy this application, please refer to <xref linkend=\"Seam_Tutorial-"
+"Try_the_examples\"/>. Once you've successfully started the application, you "
+"can access it by pointing your browser to <ulink url=\"http://localhost:8080/"
+"seam-booking/\"><literal>http://localhost:8080/seam-booking/</literal></"
+"ulink>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:899
+#, no-c-format
+msgid ""
+"Just ten classes (plus six session beans local interfaces and 1 annotation "
+"interface) where used to implement this application. Six session bean action "
+"listeners contain all the business logic for the listed features."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:904
+#, no-c-format
+msgid ""
+"<literal>BookingListAction</literal> retrieves existing bookings for the "
+"currently logged in user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:907
+#, no-c-format
+msgid ""
+"<literal>ChangePasswordAction</literal> updates the password of the "
+"currently logged in user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:910
+#, no-c-format
+msgid ""
+"<literal>HotelBookingAction</literal> implements the core functionality of "
+"the application: hotel room searching, selection, booking and booking "
+"confirmation. This functionality is implemented as a <emphasis>conversation</"
+"emphasis>, so this is the most interesting class in the application."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:913
+#, no-c-format
+msgid ""
+"<literal>LoginAction</literal> validates the login details and retrieves the "
+"logged in user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:916
+#, no-c-format
+msgid "<literal>LogoutAction</literal> ends the login session."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:919
+#, no-c-format
+msgid "<literal>RegisterAction</literal> registers a new system user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:922
+#, no-c-format
+msgid "Three entity beans implement the application's persistent domain model."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:927
+#, no-c-format
+msgid "<literal>Hotel</literal> is an entity bean that represent a hotel"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:930
+#, no-c-format
+msgid ""
+"<literal>Booking</literal> is an entity bean that represents an existing "
+"booking"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:933
+#, no-c-format
+msgid ""
+"<literal>User</literal> is an entity bean to represents a user who can make "
+"hotel bookings"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:936
+#, no-c-format
+msgid ""
+"Finally, the <literal>LoggedIn</literal> annotation and the "
+"<literal>LoggedInInterceptor</literal> are used to protect actions that "
+"require a logged in user."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:942
+#, no-c-format
+msgid "Understanding Seam conversations"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:943
+#, no-c-format
+msgid ""
+"We encourage you browse the sourcecode at your pleasure. In this tutorial "
+"we'll concentrate upon one particular piece of functionality: hotel search, "
+"selection, booking and confirmation. From the point of view of the user, "
+"everything from selecting a hotel to confirming a booking is one continuous "
+"unit of work, a <emphasis>conversation</emphasis>. Searching, however, is "
+"<emphasis>not</emphasis> part of the conversation. The user can select "
+"multiple hotels from the same search results page, in different browser tabs."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:946
+#, no-c-format
+msgid ""
+"Most web application architectures have no first class construct to "
+"represent a conversation. This causes enormous problems managing state "
+"associated with the conversation. Usually, Java web applications use a "
+"combination of two techniques: first, some state is thrown into the "
+"<literal>HttpSession</literal>; second, persistable state is flushed to the "
+"database after every request, and reconstructed from the database at the "
+"beginning of each new request."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:949
+#, no-c-format
+msgid ""
+"Since the database is the least scalable tier, this often results in an "
+"utterly unacceptable lack of scalability. Added latency is also a problem, "
+"due to the extra traffic to and from the database on every request. To "
+"reduce this redundant traffic, Java applications often introduce a data "
+"(second-level) cache that keeps commonly accessed data between requests. "
+"This cache is necessarily inefficient, because invalidation is based upon an "
+"LRU policy instead of being based upon when the user has finished working "
+"with the data. Furthermore, because the cache is shared between many "
+"concurrent transactions, we've introduced a whole raft of problem's "
+"associated with keeping the cached state consistent with the database."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:952
+#, no-c-format
+msgid ""
+"Now consider the state held in the <literal>HttpSession</literal>. By very "
+"careful programming, we might be able to control the size of the session "
+"data. This is a lot more difficult than it sounds, since web browsers permit "
+"ad hoc non-linear navigation. But suppose we suddenly discover a system "
+"requirement that says that a user is allowed to have <emphasis>mutiple "
+"concurrent conversations</emphasis>, halfway through the development of the "
+"system (this has happened to me). Developing mechanisms to isolate session "
+"state associated with different concurrent conversations, and incorporating "
+"failsafes to ensure that conversation state is destroyed when the user "
+"aborts one of the conversations by closing a browser window or tab is not "
+"for the faint hearted (I've implemented this stuff twice so far, once for a "
+"client application, once for Seam, but I'm famously psychotic)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:955
+#, no-c-format
+msgid "Now there is a better way."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:958
+#, no-c-format
+msgid ""
+"Seam introduces the <emphasis>conversation context</emphasis> as a first "
+"class construct. You can safely keep conversational state in this context, "
+"and be assured that it will have a well-defined lifecycle. Even better, you "
+"won't need to be continually pushing data back and forth between the "
+"application server and the database, since the conversation context is a "
+"natural cache of data that the user is currently working with."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:961
+#, no-c-format
+msgid ""
+"Usually, the components we keep in the conversation context are stateful "
+"session beans. (We can also keep entity beans and JavaBeans in the "
+"conversation context.) There is an ancient canard in the Java community that "
+"stateful session beans are a scalability killer. This may have been true in "
+"1998 when WebFoobar 1.0 was released. It is no longer true today. "
+"Application servers like JBoss 4.0 have extremely sophisticated mechanisms "
+"for stateful session bean state replication. (For example, the JBoss EJB3 "
+"container performs fine-grained replication, replicating only those bean "
+"attribute values which actually changed.) Note that all the traditional "
+"technical arguments for why stateful beans are inefficient apply equally to "
+"the <literal>HttpSession</literal>, so the practice of shifting state from "
+"business tier stateful session bean components to the web session to try and "
+"improve performance is unbelievably misguided. It is certainly possible to "
+"write unscalable applications using stateful session beans, by using "
+"stateful beans incorrectly, or by using them for the wrong thing. But that "
+"doesn't mean you should <emphasis>never</emphasis> use them. Anyway, Seam "
+"guides you toward a safe usage model. Welcome to 2005."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:964
+#, no-c-format
+msgid "OK, I'll stop ranting now, and get back to the tutorial."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:967
+#, no-c-format
+msgid ""
+"The booking example application shows how stateful components with different "
+"scopes can collaborate together to achieve complex behaviors. The main page "
+"of the booking application allows the user to search for hotels. The search "
+"results are kept in the Seam session scope. When the user navigates to one "
+"of these hotels, a conversation begins, and a conversation scoped component "
+"calls back to the session scoped component to retrieve the selected hotel."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:970
+#, no-c-format
+msgid ""
+"The booking example also demonstrates the use of Ajax4JSF to implement rich "
+"client behavior without the use of handwritten JavaScript."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:973
+#, no-c-format
+msgid ""
+"The search functionality is implemented using a session-scope stateful "
+"session bean, similar to the one we saw in the message list example above."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:983
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"hotelSearch\")\n"
+"@Scope(ScopeType.SESSION)\n"
+"@LoggedIn\n"
+"public class HotelSearchingAction implements HotelSearching\n"
+"{\n"
+"   \n"
+"   @PersistenceContext\n"
+"   private EntityManager em;\n"
+"   \n"
+"   private String searchString;\n"
+"   private int pageSize = 10;\n"
+"   private int page;\n"
+"   \n"
+"   @DataModel\n"
+"   private List&lt;Hotel&gt; hotels;\n"
+"   \n"
+"   public String find()\n"
+"   {\n"
+"      page = 0;\n"
+"      queryHotels();   \n"
+"      return \"main\";\n"
+"   }\n"
+"\n"
+"   public String nextPage()\n"
+"   {\n"
+"      page++;\n"
+"      queryHotels();\n"
+"      return \"main\";\n"
+"   }\n"
+"      \n"
+"   private void queryHotels()\n"
+"   {\n"
+"      String searchPattern = searchString==null ? \"&#37;\" : '&#37;' + \n"
+"          searchString.toLowerCase().replace('*', '&#37;') + '&#37;';\n"
+"      hotels = em.createQuery(\"select h from Hotel h where lower(h.name) "
+"like\n"
+"          :search or lower(h.city) like :search \n"
+"          or lower(h.zip) like :search or lower(h.address) like :search\")\n"
+"            .setParameter(\"search\", searchPattern)\n"
+"            .setMaxResults(pageSize)\n"
+"            .setFirstResult( page * pageSize )\n"
+"            .getResultList();\n"
+"   }\n"
+"   \n"
+"   public boolean isNextPageAvailable()\n"
+"   {\n"
+"      return hotels!=null &amp;&amp; hotels.size()==pageSize;\n"
+"   }\n"
+"   \n"
+"   public int getPageSize() {\n"
+"      return pageSize;\n"
+"   }\n"
+"\n"
+"   public void setPageSize(int pageSize) {\n"
+"      this.pageSize = pageSize;\n"
+"   }\n"
+"\n"
+"   public String getSearchString()\n"
+"   {\n"
+"      return searchString;\n"
+"   }\n"
+"\n"
+"   public void setSearchString(String searchString)\n"
+"   {\n"
+"      this.searchString = searchString;\n"
+"   }\n"
+"   \n"
+"   @Destroy @Remove\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:986
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Stateful</literal> annotation identifies this "
+"class as a stateful session bean. Stateful session beans are scoped to the "
+"conversation context by default."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:991
+#, no-c-format
+msgid ""
+"The <literal>@LoggedIn</literal> annotation applies a custom Seam "
+"interceptor to the component. This works because <literal>@LoggedIn</"
+"literal> is marked with an <literal>@Interceptor</literal> meta-annotation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:996
+#, no-c-format
+msgid ""
+"The <link linkend=\"datamodel-annotation\"><literal>@DataModel</literal></"
+"link> annotation exposes a <literal>List</literal> as a JSF "
+"<literal>ListDataModel</literal>. This makes it easy to implement clickable "
+"lists for search screens. In this case, the list of hotels is exposed to the "
+"page as a <literal>ListDataModel</literal> in the conversation variable "
+"named <literal>hotels</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1001
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Remove</literal> annotation specifies that a "
+"stateful session bean should be removed and its state destroyed after "
+"invocation of the annotated method. In Seam, all stateful session beans "
+"should define a method marked <literal>@Destroy @Remove</literal>. This is "
+"the EJB remove method that will be called when Seam destroys the session "
+"context. Actually, the <link linkend=\"destroy-annotation"
+"\"><literal>@Destroy</literal></link> annotation is of more general "
+"usefulness, since it can be used for any kind of cleanup that should happen "
+"when any Seam context ends. If you don't have an <literal>@Destroy @Remove</"
+"literal> method, state will leak and you will suffer performance problems."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1008
+#, no-c-format
+msgid ""
+"The main page of the application is a Facelets page. Let's look at the "
+"fragment which relates to searching for hotels:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1018
+#, no-c-format
+msgid ""
+"&lt;div class=\"section\"&gt;\n"
+"&lt;h:form&gt;\n"
+"  \n"
+"  &lt;span class=\"errors\"&gt;\n"
+"    &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"  &lt;/span&gt;\n"
+"    \n"
+"  &lt;h1&gt;Search Hotels&lt;/h1&gt;\n"
+"  &lt;fieldset&gt; \n"
+"     &lt;h:inputText value=\"#{hotelSearch.searchString}\" style=\"width: "
+"165px;\"&gt;\n"
+"        &lt;a:support event=\"onkeyup\" actionListener=\"#{hotelSearch.find}"
+"\" \n"
+"                   reRender=\"searchResults\" /&gt;\n"
+"     &lt;/h:inputText&gt;\n"
+"     &amp;#160;\n"
+"     &lt;a:commandButton value=\"Find Hotels\" action=\"#{hotelSearch.find}"
+"\" \n"
+"                      styleClass=\"button\" reRender=\"searchResults\"/&gt;\n"
+"     &amp;#160;\n"
+"     &lt;a:status&gt;\n"
+"        &lt;f:facet name=\"start\"&gt;\n"
+"           &lt;h:graphicImage value=\"/img/spinner.gif\"/&gt;\n"
+"        &lt;/f:facet&gt;\n"
+"     &lt;/a:status&gt;\n"
+"     &lt;br/&gt;\n"
+"     &lt;h:outputLabel for=\"pageSize\"&gt;Maximum results:&lt;/h:"
+"outputLabel&gt;&amp;#160;\n"
+"     &lt;h:selectOneMenu value=\"#{hotelSearch.pageSize}\" id=\"pageSize"
+"\"&gt;\n"
+"        &lt;f:selectItem itemLabel=\"5\" itemValue=\"5\"/&gt;\n"
+"        &lt;f:selectItem itemLabel=\"10\" itemValue=\"10\"/&gt;\n"
+"        &lt;f:selectItem itemLabel=\"20\" itemValue=\"20\"/&gt;\n"
+"     &lt;/h:selectOneMenu&gt;\n"
+"  &lt;/fieldset&gt;\n"
+"    \n"
+"&lt;/h:form&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;a:outputPanel id=\"searchResults\"&gt;\n"
+"  &lt;div class=\"section\"&gt;\n"
+"  &lt;h:outputText value=\"No Hotels Found\" \n"
+"                rendered=\"#{hotels != null and hotels.rowCount==0}\"/&gt;\n"
+"  &lt;h:dataTable value=\"#{hotels}\" var=\"hot\" rendered=\"#{hotels."
+"rowCount&gt;0}\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Name&lt;/f:facet&gt;\n"
+"      #{hot.name}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Address&lt;/f:facet&gt;\n"
+"      #{hot.address}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;City, State&lt;/f:facet&gt;\n"
+"      #{hot.city}, #{hot.state}, #{hot.country}\n"
+"    &lt;/h:column&gt; \n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Zip&lt;/f:facet&gt;\n"
+"      #{hot.zip}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"      &lt;s:link value=\"View Hotel\" action=\"#{hotelBooking.selectHotel"
+"(hot)}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"  &lt;/h:dataTable&gt;\n"
+"  &lt;s:link value=\"More results\" action=\"#{hotelSearch.nextPage}\" \n"
+"          rendered=\"#{hotelSearch.nextPageAvailable}\"/&gt;\n"
+"  &lt;/div&gt;\n"
+"&lt;/a:outputPanel&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1021
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:support&gt;</literal> tag allows a JSF action "
+"event listener to be called by asynchronous <literal>XMLHttpRequest</"
+"literal> when a JavaScript event like <literal>onkeyup</literal> occurs. "
+"Even better, the <literal>reRender</literal> attribute lets us render a "
+"fragment of the JSF page and perform a partial page update when the "
+"asynchronous response is received."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1026
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:status&gt;</literal> tag lets us display a "
+"cheesy annimated image while we wait for asynchronous requests to return."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1031
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:outputPanel&gt;</literal> tag defines a region "
+"of the page which can be re-rendered by an asynchronous request."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1036
+#, no-c-format
+msgid ""
+"The Seam <literal>&lt;s:link&gt;</literal> tag lets us attach a JSF action "
+"listener to an ordinary (non-JavaScript) HTML link. The advantage of this "
+"over the standard JSF <literal>&lt;h:commandLink&gt;</literal> is that it "
+"preserves the operation of \"open in new window\" and \"open in new tab\". "
+"Also notice that we use a method binding with a parameter: <literal>#"
+"{hotelBooking.selectHotel(hot)}</literal>. This is not possible in the "
+"standard Unified EL, but Seam provides an extension to the EL that lets you "
+"use parameters on any method binding expression."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1043
+#, no-c-format
+msgid ""
+"This page displays the search results dynamically as we type, and lets us "
+"choose a hotel and pass it to the <literal>selectHotel()</literal> method of "
+"the <literal>HotelBookingAction</literal>, which is where the "
+"<emphasis>really</emphasis> interesting stuff is going to happen."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1046
+#, no-c-format
+msgid ""
+"Now lets see how the booking example application uses a conversation-scoped "
+"stateful session bean to achieve a natural cache of persistent data related "
+"to the conversation. The following code example is pretty long. But if you "
+"think of it as a list of scripted actions that implement the various steps "
+"of the conversation, it's understandable. Read the class from top to bottom, "
+"as if it were a story."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1057
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"hotelBooking\")\n"
+"@LoggedIn\n"
+"public class HotelBookingAction implements HotelBooking\n"
+"{\n"
+"   \n"
+"   @PersistenceContext(type=EXTENDED)\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @In \n"
+"   private User user;\n"
+"   \n"
+"   @In(required=false) @Out\n"
+"   private Hotel hotel;\n"
+"   \n"
+"   @In(required=false) \n"
+"   @Out(required=false)\n"
+"   private Booking booking;\n"
+"     \n"
+"   @In\n"
+"   private FacesMessages facesMessages;\n"
+"      \n"
+"   @In\n"
+"   private Events events;\n"
+"   \n"
+"   @Logger \n"
+"   private Log log;\n"
+"   \n"
+"   @Begin\n"
+"   public String selectHotel(Hotel selectedHotel)\n"
+"   {\n"
+"      hotel = em.merge(selectedHotel);\n"
+"      return \"hotel\";\n"
+"   }\n"
+"   \n"
+"   public String bookHotel()\n"
+"   {      \n"
+"      booking = new Booking(hotel, user);\n"
+"      Calendar calendar = Calendar.getInstance();\n"
+"      booking.setCheckinDate( calendar.getTime() );\n"
+"      calendar.add(Calendar.DAY_OF_MONTH, 1);\n"
+"      booking.setCheckoutDate( calendar.getTime() );\n"
+"      \n"
+"      return \"book\";\n"
+"   }\n"
+"\n"
+"   public String setBookingDetails()\n"
+"   {\n"
+"      if (booking==null || hotel==null) return \"main\";\n"
+"      if ( !booking.getCheckinDate().before( booking.getCheckoutDate() ) )\n"
+"      {\n"
+"         facesMessages.add(\"Check out date must be later than check in date"
+"\");\n"
+"         return null;\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return \"confirm\";\n"
+"      }\n"
+"   }\n"
+"\n"
+"   @End\n"
+"   public String confirm()\n"
+"   {\n"
+"      if (booking==null || hotel==null) return \"main\";\n"
+"      em.persist(booking);\n"
+"      facesMessages.add\n"
+"          (\"Thank you, #{user.name}, your confimation number for #{hotel."
+"name} is #{booking.id}\");\n"
+"      log.info(\"New booking: #{booking.id} for #{user.username}\");\n"
+"      events.raiseEvent(\"bookingConfirmed\");\n"
+"      return \"confirmed\";\n"
+"   }\n"
+"   \n"
+"   @End\n"
+"   public String cancel()\n"
+"   {\n"
+"      return \"main\";\n"
+"   }\n"
+"   \n"
+"   @Destroy @Remove\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1060
+#, no-c-format
+msgid ""
+"This bean uses an EJB3 <emphasis>extended persistence context</emphasis>, so "
+"that any entity instances remain managed for the whole lifecycle of the "
+"stateful session bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1065
+#, no-c-format
+msgid ""
+"The <link linkend=\"out-annotation\"><literal>@Out</literal></link> "
+"annotation declares that an attribute value is <emphasis>outjected</"
+"emphasis> to a context variable after method invocations. In this case, the "
+"context variable named <literal>hotel</literal> will be set to the value of "
+"the <literal>hotel</literal> instance variable after every action listener "
+"invocation completes."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1070
+#, no-c-format
+msgid ""
+"The <link linkend=\"begin-annotation\"><literal>@Begin</literal></link> "
+"annotation specifies that the annotated method begins a <emphasis>long-"
+"running conversation</emphasis>, so the current conversation context will "
+"not be destroyed at the end of the request. Instead, it will be reassociated "
+"with every request from the current window, and destroyed either by timeout "
+"due to conversation inactivity or invocation of a matching <literal>@End</"
+"literal> method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1075
+#, no-c-format
+msgid ""
+"The <link linkend=\"end-annotation\"><literal>@End</literal></link> "
+"annotation specifies that the annotated method ends the current long-running "
+"conversation, so the current conversation context will be destroyed at the "
+"end of the request."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1080
+#, no-c-format
+msgid ""
+"This EJB remove method will be called when Seam destroys the conversation "
+"context. Don't ever forget to define this method!"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1087
+#, no-c-format
+msgid ""
+"<literal>HotelBookingAction</literal> contains all the action listener "
+"methods that implement selection, booking and booking confirmation, and "
+"holds state related to this work in its instance variables. We think you'll "
+"agree that this code is much cleaner and simpler than getting and setting "
+"<literal>HttpSession</literal> attributes."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1090
+#, no-c-format
+msgid ""
+"Even better, a user can have multiple isolated conversations per login "
+"session. Try it! Log in, run a search, and navigate to different hotel pages "
+"in multiple browser tabs. You'll be able to work on creating two different "
+"hotel reservations at the same time. If you leave any one conversation "
+"inactive for long enough, Seam will eventually time out that conversation "
+"and destroy its state. If, after ending a conversation, you backbutton to a "
+"page of that conversation and try to perform an action, Seam will detect "
+"that the conversation was already ended, and redirect you to the search page."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1096
+#, no-c-format
+msgid "The Seam UI control library"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1097
+#, no-c-format
+msgid ""
+"If you check inside the WAR file for the booking application, you'll find "
+"<literal>seam-ui.jar</literal> in the <literal>WEB-INF/lib</literal> "
+"directory. This package contains a number of JSF custom controls that "
+"integrate with Seam. The booking application uses the <literal>&lt;s:link&gt;"
+"</literal> control for navigation from the search screen to the hotel page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1100
+#, no-c-format
+msgid ""
+"&lt;s:link value=\"View Hotel\" action=\"#{hotelBooking.selectHotel}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1101
+#, no-c-format
+msgid ""
+"The use of <literal>&lt;s:link&gt;</literal> here allows us to attach an "
+"action listener to a HTML link without breaking the browser's \"open in new "
+"window\" feature. The standard JSF <literal>&lt;h:commandLink&gt;</literal> "
+"does not work with \"open in new window\". We'll see later that <literal>&lt;"
+"s:link&gt;</literal> also offers a number of other useful features, "
+"including conversation propagation rules."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1104
+#, no-c-format
+msgid ""
+"The booking application uses some other Seam and Ajax4JSF controls, "
+"especially on the <literal>/book.xhtml</literal> page. We won't get into the "
+"details of those controls here, but if you want to understand this code, "
+"please refer to the chapter covering Seam's functionality for JSF form "
+"validation."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1110
+#, no-c-format
+msgid "The Seam Debug Page"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1111
+#, no-c-format
+msgid ""
+"The WAR also includes <literal>seam-debug.jar</literal>. If this jar is "
+"deployed in <literal>WEB-INF/lib</literal>, along with the Facelets, and if "
+"you set the following Seam property in <literal>web.xml</literal> or "
+"<literal>seam.properties</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1114
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;org.jboss.seam.core.init.debug&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;true&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1115
+#, no-c-format
+msgid ""
+"Then the Seam debug page will be available. This page lets you browse and "
+"inspect the Seam components in any of the Seam contexts associated with your "
+"current login session. Just point your browser at <ulink url=\"http://"
+"localhost:8080/seam-booking/debug.seam\"><literal>http://localhost:8080/seam-"
+"booking/debug.seam</literal></ulink>."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1131
+#, no-c-format
+msgid "A complete application featuring Seam and jBPM: the DVD Store example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1132
+#, no-c-format
+msgid ""
+"The DVD Store demo application shows the practical usage of jBPM for both "
+"task management and pageflow."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1135
+#, no-c-format
+msgid ""
+"The user screens take advantage of a jPDL pageflow to implement searching "
+"and shopping cart functionality."
+msgstr ""
+
+#. Tag: screeninfo
+#: Tutorial.xml:1138 Tutorial.xml:1149 Tutorial.xml:1170
+#, no-c-format
+msgid "DVD Store example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1146
+#, no-c-format
+msgid ""
+"The administration screens take use jBPM to manage the approval and shipping "
+"cycle for orders. The business process may even be changed dynamically, by "
+"selecting a different process definition!"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1160
+#, no-c-format
+msgid "Look in the <literal>dvdstore</literal> directory."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1166
+#, no-c-format
+msgid ""
+"A complete application featuring Seam workspace management: the Issue "
+"Tracker example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1167
+#, no-c-format
+msgid ""
+"The Issue Tracker demo shows off Seam's workspace management functionality: "
+"the conversation switcher, conversation list and breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1181
+#, no-c-format
+msgid "Look in the <literal>issues</literal> directory."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1187
+#, no-c-format
+msgid "An example of Seam with Hibernate: the Hibernate Booking example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1188
+#, no-c-format
+msgid ""
+"The Hibernate Booking demo is a straight port of the Booking demo to an "
+"alternative architecture that uses Hibernate for persistence and JavaBeans "
+"instead of session beans."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1194
+#, no-c-format
+msgid "Look in the <literal>hibernate</literal> directory."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1200
+#, no-c-format
+msgid "A RESTful Seam application: the Blog example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1201
+#, no-c-format
+msgid ""
+"Seam makes it very easy to implement applications which keep state on the "
+"server-side. However, server-side state is not always appropriate, "
+"especially in for functionality that serves up <emphasis>content</emphasis>. "
+"For this kind of problem we often need to let the user bookmark pages and "
+"have a relatively stateless server, so that any page can be accessed at any "
+"time, via the bookmark. The Blog example shows how to a implement RESTful "
+"application using Seam. Every page of the application can be bookmarked, "
+"including the search results page."
+msgstr ""
+
+#. Tag: screeninfo
+#: Tutorial.xml:1204
+#, no-c-format
+msgid "Blog example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1212
+#, no-c-format
+msgid ""
+"The Blog example demonstrates the use of \"pull\"-style MVC, where instead "
+"of using action listener methods to retrieve data and prepare the data for "
+"the view, the view pulls data from components as it is being rendered."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1216
+#, no-c-format
+msgid "Using \"pull\"-style MVC"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1217
+#, no-c-format
+msgid ""
+"This snippet from the <literal>index.xhtml</literal> facelets page displays "
+"a list of recent blog entries:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1220
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{blog.recentBlogEntries}\" var=\"blogEntry\" rows="
+"\"3\"&gt;\n"
+"   &lt;h:column&gt;\n"
+"      &lt;div class=\"blogEntry\"&gt;\n"
+"         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"         &lt;div&gt;\n"
+"            &lt;h:outputText escape=\"false\" \n"
+"                  value=\"#{blogEntry.excerpt==null ? blogEntry.body : "
+"blogEntry.excerpt}\"/&gt;\n"
+"         &lt;/div&gt;\n"
+"         &lt;p&gt;\n"
+"            &lt;h:outputLink value=\"entry.seam\" rendered=\"#{blogEntry."
+"excerpt!=null}\"&gt;\n"
+"               &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/"
+"&gt;\n"
+"               Read more...\n"
+"            &lt;/h:outputLink&gt;\n"
+"         &lt;/p&gt;\n"
+"         &lt;p&gt;\n"
+"            [Posted on \n"
+"            &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"               &lt;f:convertDateTime timeZone=\"#{blog.timeZone}\" locale=\"#"
+"{blog.locale}\" \n"
+"                   type=\"both\"/&gt;\n"
+"            &lt;/h:outputText&gt;]\n"
+"            &amp;#160;\n"
+"            &lt;h:outputLink value=\"entry.seam\"&gt;[Link]\n"
+"               &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/"
+"&gt;\n"
+"            &lt;/h:outputLink&gt;\n"
+"         &lt;/p&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1221
+#, no-c-format
+msgid ""
+"If we navigate to this page from a bookmark, how does the data used by the "
+"<literal>&lt;h:dataTable&gt;</literal> actually get initialized? Well, what "
+"happens is that the <literal>Blog</literal> is retrieved lazily&mdash;"
+"\"pulled\"&mdash;when needed, by a Seam component named <literal>blog</"
+"literal>. This is the opposite flow of control to what is usual in "
+"traditional web action-based frameworks like Struts."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1229
+#, no-c-format
+msgid ""
+"@Name(\"blog\")\n"
+"@Scope(ScopeType.STATELESS)\n"
+"public class BlogService \n"
+"{\n"
+"   \n"
+"   @In\n"
+"   private EntityManager entityManager;\n"
+"  \n"
+"   @Unwrap\n"
+"   public Blog getBlog()\n"
+"   {\n"
+"      return (Blog) entityManager.createQuery(\"from Blog b left join fetch "
+"b.blogEntries\")\n"
+"            .setHint(\"org.hibernate.cacheable\", true)\n"
+"            .getSingleResult();\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1232
+#, no-c-format
+msgid ""
+"This component uses a <emphasis>seam-managed persistence context</emphasis>. "
+"Unlike the other examples we've seen, this persistence context is managed by "
+"Seam, instead of by the EJB3 container. The persistence context spans the "
+"entire web request, allowing us to avoid any exceptions that occur when "
+"accessing unfetched associations in the view."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1237
+#, no-c-format
+msgid ""
+"The <literal>@Unwrap</literal> annotation tells Seam to provide the return "
+"value of the method&mdash;the <literal>Blog</literal>&mdash;instead of the "
+"actual <literal>BlogService</literal> component to clients. This is the Seam "
+"<emphasis>manager component pattern</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1244
+#, no-c-format
+msgid ""
+"This is good so far, but what about bookmarking the result of form "
+"submissions, such as a search results page?"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1250
+#, no-c-format
+msgid "Bookmarkable search results page"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1251
+#, no-c-format
+msgid ""
+"The blog example has a tiny form in the top right of each page that allows "
+"the user to search for blog entries. This is defined in a file, "
+"<literal>menu.xhtml</literal>, included by the facelets template, "
+"<literal>template.xhtml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1254
+#, no-c-format
+msgid ""
+"&lt;div id=\"search\"&gt;\n"
+"   &lt;h:form&gt;\n"
+"      &lt;h:inputText value=\"#{searchAction.searchPattern}\"/&gt;\n"
+"      &lt;h:commandButton value=\"Search\" action=\"/search.xhtml\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1255
+#, no-c-format
+msgid ""
+"To implement a bookmarkable search results page, we need to perform a "
+"browser redirect after processing the search form submission. Because we "
+"used the JSF view id as the action outcome, Seam automatically redirects to "
+"the view id when the form is submitted. Alternatively, we could have defined "
+"a navigation rule like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1258
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"   &lt;navigation-case&gt;\n"
+"      &lt;from-outcome&gt;searchResults&lt;/from-outcome&gt;\n"
+"      &lt;to-view-id&gt;/search.xhtml&lt;/to-view-id&gt;\n"
+"      &lt;redirect/&gt;\n"
+"   &lt;/navigation-case&gt;\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1259
+#, no-c-format
+msgid "Then the form would have looked like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1262
+#, no-c-format
+msgid ""
+"&lt;div id=\"search\"&gt;\n"
+"   &lt;h:form&gt;\n"
+"      &lt;h:inputText value=\"#{searchAction.searchPattern}\"/&gt;\n"
+"      &lt;h:commandButton value=\"Search\" action=\"searchResults\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1263
+#, no-c-format
+msgid ""
+"But when we redirect, we need to include the values submitted with the form "
+"as request parameters, to get a bookmarkable URL like <literal>http://"
+"localhost:8080/seam-blog/search.seam?searchPattern=seam</literal>. JSF does "
+"not provide an easy way to do this, but Seam does. We use a Seam "
+"<emphasis>page parameter</emphasis>, defined in <literal>WEB-INF/pages.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1266
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   &lt;page view-id=\"/search.xhtml\"&gt;\n"
+"      &lt;param name=\"searchPattern\" value=\"#{searchService.searchPattern}"
+"\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1267
+#, no-c-format
+msgid ""
+"This tells Seam to include the value of <literal>#{searchService."
+"searchPattern}</literal> as a request parameter named "
+"<literal>searchPattern</literal> when redirecting to the page, and then re-"
+"apply the value of that parameter to the model before rendering the page."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1270
+#, no-c-format
+msgid "The redirect takes us to the <literal>search.xhtml</literal> page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1273
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{searchResults}\" var=\"blogEntry\"&gt;\n"
+"   &lt;h:column&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:outputLink value=\"entry.seam\"&gt;\n"
+"            &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"            #{blogEntry.title}\n"
+"         &lt;/h:outputLink&gt;\n"
+"         posted on \n"
+"         &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"            &lt;f:convertDateTime timeZone=\"#{blog.timeZone}\" locale=\"#"
+"{blog.locale}\" type=\"both\"/&gt;\n"
+"         &lt;/h:outputText&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1274
+#, no-c-format
+msgid ""
+"Which again uses \"pull\"-style MVC to retrieve the actual search results:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1277
+#, no-c-format
+msgid ""
+"@Name(\"searchService\")\n"
+"public class SearchService \n"
+"{\n"
+"   \n"
+"   @In\n"
+"   private EntityManager entityManager;\n"
+"   \n"
+"   private String searchPattern;\n"
+"   \n"
+"   @Factory(\"searchResults\")\n"
+"   public List&lt;BlogEntry&gt; getSearchResults()\n"
+"   {\n"
+"      if (searchPattern==null)\n"
+"      {\n"
+"         return null;\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return entityManager.createQuery(\"select be from BlogEntry be "
+"where lower(be.title)\n"
+"             like :searchPattern or lower(be.body) like :searchPattern \n"
+"             order by be.date desc\")\n"
+"               .setParameter( \"searchPattern\", getSqlSearchPattern() )\n"
+"               .setMaxResults(100)\n"
+"               .getResultList();\n"
+"      }\n"
+"   }\n"
+"\n"
+"   private String getSqlSearchPattern()\n"
+"   {\n"
+"      return searchPattern==null ? \"\" : '&#37;' + \n"
+"          searchPattern.toLowerCase().replace('*', '&#37;').replace('?', "
+"'_') + '&#37;';\n"
+"   }\n"
+"\n"
+"   public String getSearchPattern()\n"
+"   {\n"
+"      return searchPattern;\n"
+"   }\n"
+"\n"
+"   public void setSearchPattern(String searchPattern)\n"
+"   {\n"
+"      this.searchPattern = searchPattern;\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1282
+#, no-c-format
+msgid "Using \"push\"-style MVC in a RESTful application"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1283
+#, no-c-format
+msgid ""
+"Very occasionally, it makes more sense to use push-style MVC for processing "
+"RESTful pages, and so Seam provides the notion of a <emphasis>page action</"
+"emphasis>. The Blog example uses a page action for the blog entry page, "
+"<literal>entry.xhtml</literal>. Note that this is a little bit contrived, it "
+"would have been easier to use pull-style MVC here as well."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1286
+#, no-c-format
+msgid ""
+"The <literal>entryAction</literal> component works much like an action class "
+"in a traditional push-MVC action-oriented framework like Struts:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1289
+#, no-c-format
+msgid ""
+"@Name(\"entryAction\")\n"
+"@Scope(STATELESS)\n"
+"public class EntryAction\n"
+"{\n"
+"   @In(create=true) \n"
+"   private Blog blog;\n"
+"   \n"
+"   @Out\n"
+"   private BlogEntry blogEntry;\n"
+"   \n"
+"   public void loadBlogEntry(String id) throws EntryNotFoundException\n"
+"   {\n"
+"      blogEntry = blog.getBlogEntry(id);\n"
+"      if (blogEntry==null) throw new EntryNotFoundException(id);\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1290
+#, no-c-format
+msgid "Page actions are also declared in <literal>pages.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1293
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   ...\n"
+"\n"
+"   &lt;page view-id=\"/entry.xhtml\" action=\"#{entryAction.loadBlogEntry"
+"(blogEntry.id)}\"&gt;\n"
+"      &lt;param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"\n"
+"   &lt;page view-id=\"/post.xhtml\" action=\"#{loginAction.challenge}\"/"
+"&gt;\n"
+"\n"
+"   &lt;page view-id=\"*\" action=\"#{blog.hitCount.hit}\"/&gt;\n"
+"\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1294
+#, no-c-format
+msgid ""
+"Notice that the example is using page actions for some other "
+"functionality&mdash;the login challenge, and the pageview counter. Also "
+"notice the use of a parameter in the page action method binding. This is not "
+"a standard feature of JSF EL, but Seam lets you use it, not just for page "
+"actions, but also in JSF method bindings."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1297
+#, no-c-format
+msgid ""
+"When the <literal>entry.xhtml</literal> page is requested, Seam first binds "
+"the page parameter <literal>blogEntryId</literal> to the model, then runs "
+"the page action, which retrieves the needed data&mdash;the "
+"<literal>blogEntry</literal>&mdash;and places it in the Seam event context. "
+"Finally, the following is rendered:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1300
+#, no-c-format
+msgid ""
+"&lt;div class=\"blogEntry\"&gt;\n"
+"   &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"   &lt;div&gt;\n"
+"      &lt;h:outputText escape=\"false\" value=\"#{blogEntry.body}\"/&gt;\n"
+"   &lt;/div&gt;\n"
+"   &lt;p&gt;\n"
+"      [Posted on&amp;#160;\n"
+"      &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"         &lt;f:convertDateTime timezone=\"#{blog.timeZone}\" locale=\"#{blog."
+"locale}\" type=\"both\"/&gt;\n"
+"      &lt;/h:outputText&gt;]\n"
+"   &lt;/p&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1301
+#, no-c-format
+msgid ""
+"If the blog entry is not found in the database, the "
+"<literal>EntryNotFoundException</literal> exception is thrown. We want this "
+"exception to result in a 404 error, not a 505, so we annotate the exception "
+"class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1304
+#, no-c-format
+msgid ""
+"@ApplicationException(rollback=true)\n"
+"@HttpError(errorCode=HttpServletResponse.SC_NOT_FOUND)\n"
+"public class EntryNotFoundException extends Exception\n"
+"{\n"
+"   EntryNotFoundException(String id)\n"
+"   {\n"
+"      super(\"entry not found: \" + id);\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1305
+#, no-c-format
+msgid ""
+"An alternative implementation of the example does not use the parameter in "
+"the method binding:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1308
+#, no-c-format
+msgid ""
+"@Name(\"entryAction\")\n"
+"@Scope(STATELESS)\n"
+"public class EntryAction\n"
+"{\n"
+"   @In(create=true) \n"
+"   private Blog blog;\n"
+"   \n"
+"   @In @Out\n"
+"   private BlogEntry blogEntry;\n"
+"   \n"
+"   public void loadBlogEntry() throws EntryNotFoundException\n"
+"   {\n"
+"      blogEntry = blog.getBlogEntry( blogEntry.getId() );\n"
+"      if (blogEntry==null) throw new EntryNotFoundException(id);\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1309
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   ...\n"
+"\n"
+"   &lt;page view-id=\"/entry.xhtml\" action=\"#{entryAction.loadBlogEntry}"
+"\"&gt;\n"
+"      &lt;param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1310
+#, no-c-format
+msgid "It is a matter of taste which implementation you prefer."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1318
+#, no-c-format
+msgid "Running the Seam examples in JBoss using the JSF 1.2 RI"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1319
+#, no-c-format
+msgid ""
+"JBoss AS 4.0 ships with the Apache MyFaces implementation of JSF 1.1. After "
+"many months of waiting, there is <emphasis>still</emphasis> no "
+"implementation of JSF 1.2 from MyFaces. For this and other reasons, JBoss AS "
+"4.2 will embed the JSF 1.2 Reference Implementation by default. Soon after "
+"the release of 4.2, we will migrate the Seam examples to JSF 1.2."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1322
+#, no-c-format
+msgid ""
+"For those who can't wait, Seam is already compatible with JSF 1.2, and it's "
+"easy to get the Seam examples running with JSF 1.2 in JBoss 4.0.5. Let's "
+"start with the famous booking example:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1327
+#, no-c-format
+msgid ""
+"copy <literal>jsf-api.jar</literal>, <literal>jsf-impl.jar</literal>, "
+"<literal>el-api.jar</literal>, <literal>el-impl.jar</literal> to "
+"<literal>server/default/deploy/tomcat/jbossweb-tomcat55.sar/jsf-libs</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1332
+#, no-c-format
+msgid ""
+"delete <literal>myfaces-api.jar</literal> and <literal>myfaces-impl.jar</"
+"literal> from <literal>server/default/deploy/tomcat/jbossweb-tomcat55.sar/"
+"jsf-libs</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1337
+#, no-c-format
+msgid ""
+"edit <literal>server/default/deploy/tomcat/jbossweb-tomcat55.sar/conf/web."
+"xml</literal>, replacing <literal>myfaces-impl.jar</literal> with "
+"<literal>jsf-impl.jar</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1342
+#, no-c-format
+msgid ""
+"edit <literal>examples/booking/resources/WEB-INF/web.xml</literal>, deleting "
+"the MyFaces listener, uncommenting the RI listener"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1347
+#, no-c-format
+msgid ""
+"edit <literal>examples/booking/resources/WEB-INF/faces-config.xml</literal>, "
+"uncommenting the lines that install the <literal>SeamELResolver</literal> "
+"using the new JSF 1.2 XML schema declaration."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1352
+#, no-c-format
+msgid ""
+"edit <literal>examples/booking/resources/META-INF/application.xml</literal>, "
+"deleting the lines that declare <literal>el-api.jar</literal> and "
+"<literal>el-impl.jar</literal> as Java modules."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1357
+#, no-c-format
+msgid ""
+"Restart JBoss, and type <literal>ant</literal> in the <literal>examples/"
+"booking</literal> directory."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Validation.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Validation.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Validation.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,375 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Validation.xml:10
+#, no-c-format
+msgid "JSF form validation in Seam"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:11
+#, no-c-format
+msgid "In plain JSF, validation is defined in the view:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:14
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Country:\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;my:validateCountry/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Zip code:\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;my:validateZip/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:15
+#, no-c-format
+msgid ""
+"In practice, this approach usually violates DRY, since most \"validation\" "
+"actually enforces constraints that are part of the data model, and exist all "
+"the way down to the database schema definition. Seam provides support for "
+"model-based constraints defined using Hibernate Validator."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:18
+#, no-c-format
+msgid ""
+"Let's start by defining our constraints, on our <literal>Location</literal> "
+"class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:21
+#, no-c-format
+msgid ""
+"public class Location {\n"
+"    private String country;\n"
+"    private String zip;\n"
+"    \n"
+"    @NotNull\n"
+"    @Length(max=30)\n"
+"    public String getCountry() { return country; }\n"
+"    public void setCountry(String c) { country = c; }\n"
+"\n"
+"    @NotNull\n"
+"    @Length(max=6)\n"
+"    @Pattern(\"^&#92;d*&#36;\")\n"
+"    public String getZip() { return zip; }\n"
+"    public void setZip(String z) { zip = z; }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:22
+#, no-c-format
+msgid ""
+"Well, that's a decent first cut, but in practice it might be more elegant to "
+"use custom constraints instead of the ones built into Hibernate Validator:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:25
+#, no-c-format
+msgid ""
+"public class Location {\n"
+"    private String country;\n"
+"    private String zip;\n"
+"    \n"
+"    @NotNull\n"
+"    @Country\n"
+"    public String getCountry() { return country; }\n"
+"    public void setCountry(String c) { country = c; }\n"
+"\n"
+"    @NotNull\n"
+"    @ZipCode\n"
+"    public String getZip() { return zip; }\n"
+"    public void setZip(String z) { zip = z; }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:26
+#, no-c-format
+msgid ""
+"Whichever route we take, we no longer need to specify the type of validation "
+"to be used in the JSF page. Instead, we can use <literal>&lt;s:validate&gt;</"
+"literal> to validate against the constraint defined on the model object."
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:29
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Country:\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;s:validate/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Zip code:\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;s:validate/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:30
+#, no-c-format
+msgid ""
+"<emphasis>Note:</emphasis> specifying <literal>@NotNull</literal> on the "
+"model does <emphasis>not</emphasis> eliminate the requirement for "
+"<literal>required=\"true\"</literal> to appear on the control! This is due "
+"to a limitation of the JSF validation architecture."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:33
+#, no-c-format
+msgid ""
+"This version is not much less verbose than what we started with, so let's "
+"try <literal>&lt;s:validateAll&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:36
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;h:inputText value=\"#{location.country}\" required=\"true\"/"
+"&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/"
+"&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:37
+#, no-c-format
+msgid ""
+"This tag simply adds an <literal>&lt;s:validate&gt;</literal> to every input "
+"in the form. For a large form, it can save a lot of typing!"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:40
+#, no-c-format
+msgid ""
+"Now we need to do something about displaying feedback to the user when "
+"validation fails. Currently we are displaying all messages at the top of the "
+"form. What we would really like to do is display the message next to the "
+"field with the error (this is possible in plain JSF), highlight the field "
+"(this is not possible) and, for good measure, display some image next the "
+"the field (also not possible)."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:43
+#, no-c-format
+msgid "Let's try out <literal>&lt;s:decorate&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:46
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;s:decorate&gt;\n"
+"                &lt;f:facet name=\"beforeInvalidField\"&gt;&lt;h:"
+"graphicImage src=\"img/error.gif\"/&gt;&lt;/f:facet&gt;\n"
+"                &lt;f:facet name=\"afterInvalidField\"&gt;&lt;s:message/&gt;"
+"&lt;/f:facet&gt;\n"
+"                &lt;f:facet name=\"aroundInvalidField\"&gt;&lt;s:span "
+"styleClass=\"error\"/&gt;&lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{location.country}\" required=\"true"
+"\"/&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;s:decorate&gt;\n"
+"                &lt;f:facet name=\"beforeInvalidField\"&gt;&lt;h:"
+"graphicImage src=\"img/error.gif\"/&gt;&lt;/f:facet&gt;\n"
+"                &lt;f:facet name=\"afterInvalidField\"&gt;&lt;s:message/&gt;"
+"&lt;/f:facet&gt;\n"
+"                &lt;f:facet name=\"aroundInvalidField\"&gt;&lt;s:span "
+"styleClass=\"error\"/&gt;&lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/"
+"&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:47
+#, no-c-format
+msgid ""
+"Well, that looks much better to the user, but it is extremely verbose. "
+"Fortunately, the facets of <literal>&lt;s:decorate&gt;</literal> may be "
+"defined on any parent element:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:50
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;f:facet name=\"beforeInvalidField\"&gt;\n"
+"        &lt;h:graphicImage src=\"img/error.gif\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;f:facet name=\"afterInvalidField\"&gt;\n"
+"        &lt;s:message/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;f:facet name=\"aroundInvalidField\"&gt;\n"
+"        &lt;s:span styleClass=\"error\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;s:decorate&gt;\n"
+"                &lt;h:inputText value=\"#{location.country}\" required=\"true"
+"\"/&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;s:decorate&gt;\n"
+"                &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/"
+"&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:51
+#, no-c-format
+msgid ""
+"This approach <emphasis>defines</emphasis> constraints on the model, and "
+"<emphasis>presents</emphasis> constraint violations in the view&mdash;a "
+"significantly better design."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:54
+#, no-c-format
+msgid ""
+"Finally, we can use Ajax4JSF to display validation messages as the user is "
+"typing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:57
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;f:facet name=\"beforeInvalidField\"&gt;\n"
+"        &lt;h:graphicImage src=\"img/error.gif\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;f:facet name=\"afterInvalidField\"&gt;\n"
+"        &lt;s:message/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;f:facet name=\"aroundInvalidField\"&gt;\n"
+"        &lt;s:span styleClass=\"error\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;s:decorate id=\"country\"&gt;\n"
+"                &lt;h:inputText value=\"#{location.country}\" required=\"true"
+"\"&gt;\n"
+"                    &lt;a:support event=\"onblur\" reRender=\"country\"/"
+"&gt;\n"
+"                &lt;/h:inputText&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;s:decorate id=\"zip\"&gt;\n"
+"                &lt;h:inputText value=\"#{location.zip}\" required=\"true"
+"\"&gt;\n"
+"                    &lt;a:support event=\"onblur\" reRender=\"zip\"/&gt;\n"
+"                &lt;/h:inputText&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Xml.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Xml.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/bn-IN/Xml.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,933 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Xml.xml:10
+#, no-c-format
+msgid "Configuring Seam components"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:11
+#, no-c-format
+msgid ""
+"The philosophy of minimizing XML-based configuration is extremely strong in "
+"Seam. Nevertheless, there are various reasons why we might want to configure "
+"a Seam component using XML: to isolate deployment-specific information from "
+"the Java code, to enable the creation of re-usable frameworks, to configure "
+"Seam's built-in functionality, etc. Seam provides two basic approaches to "
+"configuring components: configuration via property settings in a properties "
+"file or <literal>web.xml</literal>, and configuration via "
+"<literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:14
+#, no-c-format
+msgid "Configuring components via property settings"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:15
+#, no-c-format
+msgid ""
+"Seam components may be provided with configuration properties either via "
+"servlet context parameters, or via a properties file named <literal>seam."
+"properties</literal> in the root of the classpath."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:18
+#, no-c-format
+msgid ""
+"The configurable Seam component must expose JavaBeans-style property setter "
+"methods for the configurable attributes. If a seam component named "
+"<literal>com.jboss.myapp.settings</literal> has a setter method named "
+"<literal>setLocale()</literal>, we can provide a property named <literal>com."
+"jboss.myapp.settings.locale</literal> in the <literal>seam.properties</"
+"literal> file or as a servlet context parameter, and Seam will set the value "
+"of the <literal>locale</literal> attribute whenever it instantiates the "
+"component."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:21
+#, no-c-format
+msgid ""
+"The same mechanism is used to configure Seam itself. For example, to set the "
+"conversation timeout, we provide a value for <literal>org.jboss.seam.core."
+"manager.conversationTimeout</literal> in <literal>web.xml</literal> or "
+"<literal>seam.properties</literal>. (There is a built-in Seam component "
+"named <literal>org.jboss.seam.core.manager</literal> with a setter method "
+"named <literal>setConversationTimeout()</literal>.)"
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:24
+#, no-c-format
+msgid "Configuring components via components.xml"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:25
+#, no-c-format
+msgid ""
+"The <literal>components.xml</literal> file is a bit more powerful than "
+"property settings. It lets you:"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:30
+#, no-c-format
+msgid ""
+"Configure components that have been installed automatically&mdash;including "
+"both built-in components, and application components that have been "
+"annotated with the <literal>@Name</literal> annotation and picked up by "
+"Seam's deployment scanner."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:35
+#, no-c-format
+msgid ""
+"Install classes with no <literal>@Name</literal> annotation as Seam "
+"components&mdash;this is most useful for certain kinds of infrastructural "
+"components which can be installed multiple times different names (for "
+"example Seam-managed persistence contexts)."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:40
+#, no-c-format
+msgid ""
+"Install components that <emphasis>do</emphasis> have a <literal>@Name</"
+"literal> annotation but are not installed by default because of an "
+"<literal>@Install</literal> annotation that indicates the component should "
+"not be installed."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:45
+#, no-c-format
+msgid "Override the scope of a component."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:50
+#, no-c-format
+msgid ""
+"A <literal>components.xml</literal> file may appear in one of three "
+"different places:"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:55
+#, no-c-format
+msgid "The <literal>WEB-INF</literal> directory of a <literal>war</literal>."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:60
+#, no-c-format
+msgid "The <literal>META-INF</literal> directory of a <literal>jar</literal>."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:65
+#, no-c-format
+msgid ""
+"Any directory of a <literal>jar</literal> that contains classes with an "
+"<literal>@Name</literal> annotation."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:70
+#, no-c-format
+msgid ""
+"Usually, Seam components are installed when the deployment scanner discovers "
+"a class with a <literal>@Name</literal> annotation sitting in an archive "
+"with a <literal>seam.properties</literal> file or a <literal>META-INF/"
+"components.xml</literal> file. (Unless the component has an "
+"<literal>@Install</literal> annotation indicating it should not be installed "
+"by default.) The <literal>components.xml</literal> file lets us handle "
+"special cases where we need to override the annotations."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:73
+#, no-c-format
+msgid ""
+"For example, the following <literal>components.xml</literal> file installs "
+"the JBoss Embeddable EJB3 container:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:76
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"&gt;\n"
+"    &lt;core:ejb/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:77
+#, no-c-format
+msgid "This example does the same thing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:80
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component class=\"org.jboss.seam.core.Ejb\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:81
+#, no-c-format
+msgid ""
+"This one installs and configures two different Seam-managed persistence "
+"contexts:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:84
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"    &lt;core:managed-persistence-context name=\"customerDatabase\"\n"
+"                persistence-unit-jndi-name=\"java:/"
+"customerEntityManagerFactory\"/&gt;\n"
+"        \n"
+"    &lt;core:managed-persistence-context name=\"accountingDatabase\"\n"
+"                persistence-unit-jndi-name=\"java:/"
+"accountingEntityManagerFactory\"/&gt;            \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:85
+#, no-c-format
+msgid "As does this one:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:88
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component name=\"customerDatabase\" \n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"customerEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"    \n"
+"    &lt;component name=\"accountingDatabase\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"accountingEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:89
+#, no-c-format
+msgid ""
+"This example creates a session-scoped Seam-managed persistence context (this "
+"is not recommended in practice):"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:92
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"  &lt;core:managed-persistence-context name=\"productDatabase\" \n"
+"                                   scope=\"session\"\n"
+"              persistence-unit-jndi-name=\"java:/productEntityManagerFactory"
+"\"/&gt;        \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:93
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"            \n"
+"    &lt;component name=\"productDatabase\"\n"
+"              scope=\"session\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"productEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:94
+#, no-c-format
+msgid ""
+"It is common to use the <literal>auto-create</literal> option for "
+"infrastructural objects like persistence contexts, which saves you from "
+"having to explicitly specify <literal>create=true</literal> when you use the "
+"<literal>@In</literal> annotation."
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:97
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"  &lt;core:managed-persistence-context name=\"productDatabase\" \n"
+"                             auto-create=\"true\"\n"
+"              persistence-unit-jndi-name=\"java:/productEntityManagerFactory"
+"\"/&gt;        \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:98
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"            \n"
+"    &lt;component name=\"productDatabase\"\n"
+"        auto-create=\"true\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"productEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:99
+#, no-c-format
+msgid ""
+"The <literal>&lt;factory&gt;</literal> declaration lets you specify a value "
+"or method binding expression that will be evaluated to initialize the value "
+"of a context variable when it is first referenced."
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:102
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"contact\" method=\"#{contactManager.loadContact}\" "
+"scope=\"CONVERSATION\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:103
+#, no-c-format
+msgid ""
+"You can create an \"alias\" (a second name) for a Seam component like so:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:106
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"user\" value=\"#{actor}\" scope=\"STATELESS\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:107
+#, no-c-format
+msgid "You can even create an \"alias\" for a commonly used expression:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:110
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"contact\" value=\"#{contactManager.contact}\" scope="
+"\"STATELESS\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:111
+#, no-c-format
+msgid ""
+"It is especially common to see the use of <literal>auto-create=\"true\"</"
+"literal> with the <literal>&lt;factory&gt;</literal> declaration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:114
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"session\" value=\"#{entityManager.delegate}\" scope="
+"\"STATELESS\" \n"
+"        auto-create=\"true\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:115
+#, no-c-format
+msgid ""
+"Sometimes we want to reuse the same <literal>components.xml</literal> file "
+"with minor changes during both deployment and testing. Seam lets you place "
+"wildcards of the form <literal>@wildcard@</literal> in the "
+"<literal>components.xml</literal> file which can be replaced either by your "
+"Ant build script (at deployment time) or by providing a file named "
+"<literal>components.properties</literal> in the classpath (at development "
+"time). You'll see this approach used in the Seam examples."
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:118
+#, no-c-format
+msgid "Fine-grained configuration files"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:119
+#, no-c-format
+msgid ""
+"If you have a large number of components that need to be configured in XML, "
+"it makes much more sense to split up the information in <literal>components."
+"xml</literal> into many small files. Seam lets you put configuration for a "
+"class named, for example, <literal>com.helloworld.Hello</literal> in a "
+"resource named <literal>com/helloworld/Hello.component.xml</literal>. (You "
+"might be familiar with this pattern, since it is the same one we use in "
+"Hibernate.) The root element of the file may be either a <literal>&lt;"
+"components&gt;</literal> or <literal>&lt;component&gt;</literal> element."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:122
+#, no-c-format
+msgid "The first option lets you define multiple components in the file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:125
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component class=\"com.helloworld.Hello\" name=\"hello\"&gt;\n"
+"        &lt;property name=\"name\"&gt;#{user.name}&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"    &lt;factory name=\"message\" value=\"#{hello.message}\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:126
+#, no-c-format
+msgid ""
+"The second option only lets you define or configure one component, but is "
+"less noisy:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:129
+#, no-c-format
+msgid ""
+"&lt;component name=\"hello\"&gt;\n"
+"    &lt;property name=\"name\"&gt;#{user.name}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:130
+#, no-c-format
+msgid ""
+"In the second option, the class name is implied by the file in which the "
+"component definition appears."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:133
+#, no-c-format
+msgid ""
+"Alternatively, you may put configuration for all classes in the <literal>com."
+"helloworld</literal> package in <literal>com/helloworld/components.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:136
+#, no-c-format
+msgid "Configurable property types"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:137
+#, no-c-format
+msgid ""
+"Properties of string, primitive or primitive wrapper type may be configured "
+"just as you would expect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:140
+#, no-c-format
+msgid "org.jboss.seam.core.manager.conversationTimeout 60000"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:141
+#, no-c-format
+msgid "&lt;core:manager conversation-timeout=\"60000\"/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:142
+#, no-c-format
+msgid ""
+"&lt;component name=\"org.jboss.seam.core.manager\"&gt;\n"
+"    &lt;property name=\"conversationTimeout\"&gt;60000&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:143
+#, no-c-format
+msgid "Arrays, sets and lists of strings or primitives are also supported:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:146
+#, no-c-format
+msgid ""
+"org.jboss.seam.core.jbpm.processDefinitions order.jpdl.xml, return.jpdl.xml, "
+"inventory.jpdl.xml"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:147
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;order.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;return.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:148
+#, no-c-format
+msgid ""
+"&lt;component name=\"org.jboss.seam.core.jbpm\"&gt;\n"
+"    &lt;property name=\"processDefinitions\"&gt;\n"
+"        &lt;value&gt;order.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;return.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:149
+#, no-c-format
+msgid ""
+"Even maps with String-valued keys and string or primitive values are "
+"supported:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:152
+#, no-c-format
+msgid ""
+"&lt;component name=\"issueEditor\"&gt;\n"
+"    &lt;property name=\"issueStatuses\"&gt;\n"
+"        &lt;key&gt;open&lt;/key&gt; &lt;value&gt;open issue&lt;/value&gt;\n"
+"        &lt;key&gt;resolved&lt;/key&gt; &lt;value&gt;issue resolved by "
+"developer&lt;/value&gt;\n"
+"        &lt;key&gt;closed&lt;/key&gt; &lt;value&gt;resolution accepted by "
+"user&lt;/value&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:153
+#, no-c-format
+msgid ""
+"Finally, you may wire together components using a value-binding expression. "
+"Note that this is quite different to injection using <literal>@In</literal>, "
+"since it happens at component instantiation time instead of invocation time. "
+"It is therefore much more similar to the dependency injection facilities "
+"offered by traditional IoC containers like JSF or Spring."
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:156
+#, no-c-format
+msgid ""
+"&lt;drools:managed-working-memory name=\"policyPricingWorkingMemory\" rule-"
+"base=\"#{policyPricingRules}\"/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:157
+#, no-c-format
+msgid ""
+"&lt;component name=\"policyPricingWorkingMemory\"\n"
+"          class=\"org.jboss.seam.drools.ManagedWorkingMemory\"&gt;\n"
+"    &lt;property name=\"ruleBase\"&gt;#{policyPricingRules}&lt;/"
+"property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:158
+#, no-c-format
+msgid "Using XML Namespaces"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:159
+#, no-c-format
+msgid ""
+"Throughout the examples, there have been two competing ways of declaring "
+"components: with and without the use of XML namespaces. The following shows "
+"a typical <literal>components.xml</literal> file without namespaces. It uses "
+"the Seam Components DTD:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:162
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"&gt;\n"
+"&lt;!DOCTYPE components PUBLIC \"-//JBoss/Seam Component Configuration DTD "
+"1.2//EN\"\n"
+"                            \"http://jboss.com/products/seam/components-1.2."
+"dtd\"&gt;\n"
+"&lt;components&gt;\n"
+"\n"
+"    &lt;component class=\"org.jboss.seam.core.init\"&gt;\n"
+"        &lt;property name=\"debug\"&gt;true&lt;/property&gt;\n"
+"        &lt;property name=\"jndiPattern\"&gt;@jndiPattern@&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"    &lt;component name=\"org.jboss.sean.core.ejb\" installed=\"@embeddedEjb@"
+"\" /&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:163
+#, no-c-format
+msgid ""
+"As you can see, this is somewhat verbose. Even worse, the component and "
+"attribute names cannot be validated at development time."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:166
+#, no-c-format
+msgid "The namespaced version looks like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:169
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                http://jboss.com/products/seam/core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components \n"
+"                 http://jboss.com/products/seam/components-1.2.xsd\"&gt;\n"
+"\n"
+"    &lt;core:init debug=\"true\" jndi-pattern=\"@jndiPattern@\"/&gt;\n"
+"\n"
+"    &lt;core:ejb installed=\"@embeddedEjb@\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:170
+#, no-c-format
+msgid ""
+"Even though the schema declarations are verbose, the actual XML content is "
+"lean and easy to understand. The schemas provide detailed information about "
+"each component and the attributes available, allowing XML editors to offer "
+"intelligent autocomplete. The use of namespaced elements makes generating "
+"and maintaining correct <literal>components.xml</literal> files much simpler."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:173
+#, no-c-format
+msgid ""
+"Now, this works great for the built-in Seam components, but what about user "
+"components? There are two options. First, Seam supports mixing the two "
+"models, allowing the use of the generic <literal>&lt;component&gt;</literal> "
+"declarations for user components, along with namespaced declarations for "
+"built-in components. But even better, Seam allows you to quickly declare "
+"namespaces for your own components."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:176
+#, no-c-format
+msgid ""
+"Any Java package can be associated with an XML namespace by annotating the "
+"package with the <literal>@Namespace</literal> annotation. (Package-level "
+"annotations are declared in a file named <literal>package-info.java</"
+"literal> in the package directory.) Here is an example from the seampay demo:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:179
+#, no-c-format
+msgid ""
+"@Namespace(value=\"http://jboss.com/products/seam/examples/seampay\")\n"
+"package org.jboss.seam.example.seampay;\n"
+"\n"
+"import org.jboss.seam.annotations.Namespace;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:180
+#, no-c-format
+msgid ""
+"That is all you need to do to use the namespaced style in "
+"<literal>components.xml</literal>! Now we can write:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:183
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pay=\"http://jboss.com/products/seam/examples/seampay\"\n"
+"            ... &gt;\n"
+"\n"
+"    &lt;pay:payment-home new-instance=\"#{newPayment}\"\n"
+"                      created-message=\"Created a new payment to #"
+"{newPayment.payee}\" /&gt;\n"
+"\n"
+"    &lt;pay:payment name=\"newPayment\"\n"
+"                 payee=\"Somebody\"\n"
+"                 account=\"#{selectedAccount}\"\n"
+"                 payment-date=\"#{currentDatetime}\"\n"
+"                 created-date=\"#{currentDatetime}\" /&gt;\n"
+"     ...\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:184
+#, no-c-format
+msgid "<para>Or:</para>"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:187
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pay=\"http://jboss.com/products/seam/examples/seampay\"\n"
+"            ... &gt;\n"
+"\n"
+"    &lt;pay:payment-home&gt;\n"
+"        &lt;pay:new-instance&gt;\"#{newPayment}\"&lt;/pay:new-instance&gt;\n"
+"        &lt;pay:created-message&gt;Created a new payment to #{newPayment."
+"payee}&lt;/pay:created-message&gt;\n"
+"    &lt;/pay:payment-home&gt;\n"
+"    \n"
+"    &lt;pay:payment name=\"newPayment\"&gt;\n"
+"        &lt;pay:payee&gt;Somebody\"&lt;/pay:payee&gt;\n"
+"        &lt;pay:account&gt;#{selectedAccount}&lt;/pay:account&gt;\n"
+"        &lt;pay:payment-date&gt;#{currentDatetime}&lt;/pay:payment-date&gt;\n"
+"        &lt;pay:created-date&gt;#{currentDatetime}&lt;/pay:created-date&gt;\n"
+"     &lt;/pay:payment&gt;\n"
+"     ...\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:188
+#, no-c-format
+msgid ""
+"These examples illustrate the two usage models of a namespaced element. In "
+"the first declaration, the <literal>&lt;pay:payment-home&gt;</literal> "
+"references the <literal>paymentHome</literal> component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:191
+#, no-c-format
+msgid ""
+"package org.jboss.seam.example.seampay;\n"
+"...\n"
+"@Name(\"paymentHome\")\n"
+"public class PaymentController\n"
+"    extends EntityHome&lt;Payment&gt;\n"
+"{\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:192
+#, no-c-format
+msgid ""
+"The element name is the hyphenated form of the component name. The "
+"attributes of the element are the hyphenated form of the property names."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:195
+#, no-c-format
+msgid ""
+"In the second declaration, the <literal>&lt;pay:payment&gt;</literal> "
+"element refers to the <literal>Payment</literal> class in the <literal>org."
+"jboss.seam.example.seampay</literal> package. In this case <literal>Payment</"
+"literal> is an entity that is being declared as a Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:198
+#, no-c-format
+msgid ""
+"package org.jboss.seam.example.seampay;\n"
+"...\n"
+"@Entity\n"
+"public class Payment\n"
+"    implements Serializable\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:199
+#, no-c-format
+msgid ""
+"If we want validation and autocompletion to work for user-defined "
+"components, we will need a schema. Seam does not yet provide a mechanism to "
+"automatically generate a schema for a set of components, so it is necessary "
+"to generate one manually. The schema definitions for the standard Seam "
+"packages can be used for guidance."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:202
+#, no-c-format
+msgid "The following are the the namespaces used by Seam:"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:207
+#, no-c-format
+msgid ""
+"components &mdash; <literal>http://jboss.com/products/seam/components</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:212
+#, no-c-format
+msgid "core &mdash; <literal>http://jboss.com/products/seam/core</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:217
+#, no-c-format
+msgid "drools &mdash; <literal>http://jboss.com/products/seam/drools</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:222
+#, no-c-format
+msgid ""
+"framework &mdash; <literal>http://jboss.com/products/seam/framework</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:227
+#, no-c-format
+msgid "jms &mdash; <literal>http://jboss.com/products/seam/jms</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:232
+#, no-c-format
+msgid ""
+"remoting &mdash; <literal>http://jboss.com/products/seam/remoting</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:237
+#, no-c-format
+msgid "theme &mdash; <literal>http://jboss.com/products/seam/theme</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:242
+#, no-c-format
+msgid ""
+"security &mdash; <literal>http://jboss.com/products/seam/security</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:247
+#, no-c-format
+msgid "mail &mdash; <literal>http://jboss.com/products/seam/mail</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:252
+#, no-c-format
+msgid "web &mdash; <literal>http://jboss.com/products/seam/web</literal>"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Annotations.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Annotations.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Annotations.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2461 @@
+# translation of Annotations.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Jasna Dimanoski <jdimanos at redhat.com>, 2007, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Annotations\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2008-03-25 19:34+1000\n"
+"Last-Translator: Jasna Dimanoski <jdimanos at redhat.com>\n"
+"Language-Team:  <de at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Annotations.xml:6
+#, no-c-format
+msgid "Seam annotations"
+msgstr "Seam Annotationen"
+
+#. Tag: para
+#: Annotations.xml:7
+#, no-c-format
+msgid ""
+"When you write a Seam application, you&#39;ll use a lot of annotations. Seam "
+"lets you use annotations to achieve a declarative style of programming. Most "
+"of the annotations you&#39;ll use are defined by the EJB 3.0 specification. "
+"The annotations for data validation are defined by the Hibernate Validator "
+"package. Finally, Seam defines its own set of annotations, which we&#39;ll "
+"describe in this chapter."
+msgstr ""
+"Wenn Sie eine Seam Anwendung schreiben, verwenden Sie eine Menge an "
+"Annotationen. Seam gestattet die Verwendung von Annotationen, um einen "
+"deklarativen Programmierstil zu erreichen. Die meisten der Annotationen, die Sie verwenden werden, sind durch die EJB 3.0 Spezifikation festgelegt. Die Annotationen zur Datenvalidierung sind durch das Hibernate Validator Paket definiert. Außerdem definiert Seam noch einen eigenen Satz von Annotationen, der in diesem Kapitel beschrieben werden soll."
+
+#. Tag: para
+#: Annotations.xml:10
+#, no-c-format
+msgid ""
+"All of these annotations are defined in the package <literal>org.jboss.seam."
+"annotations</literal>."
+msgstr ""
+"Alle diese Annotationen sind im Paket <literal>org.jboss.seam.annotations</"
+"literal> definiert."
+
+#. Tag: title
+#: Annotations.xml:14
+#, no-c-format
+msgid "Annotations for component definition"
+msgstr "Annotationen zur Komponentendefinition"
+
+#. Tag: para
+#: Annotations.xml:15
+#, no-c-format
+msgid ""
+"The first group of annotations lets you define a Seam component. These "
+"annotations appear on the component class."
+msgstr ""
+"Die erste Gruppe von Annotationen gestattet es Ihnen eine Seam Komponente zu "
+"definieren. Diese Annotationen erscheinen an der Komponentenklasse."
+
+#. Tag: literal
+#: Annotations.xml:20
+#, no-c-format
+msgid "@Name"
+msgstr "@Name"
+
+#. Tag: programlisting
+#: Annotations.xml:22
+#, no-c-format
+msgid "@Name(\"componentName\")"
+msgstr "@Name(\"componentName\")"
+
+#. Tag: para
+#: Annotations.xml:23
+#, no-c-format
+msgid ""
+"Defines the Seam component name for a class. This annotation is required for "
+"all Seam components."
+msgstr ""
+"Definiert den Seam Komponentennamen für eine Klasse. Diese Annotation wird "
+"für alle Seam Komponenten benötigt."
+
+#. Tag: literal
+#: Annotations.xml:29
+#, no-c-format
+msgid "@Scope"
+msgstr "@Scope"
+
+#. Tag: programlisting
+#: Annotations.xml:31
+#, no-c-format
+msgid "@Scope(ScopeType.CONVERSATION)"
+msgstr "@Scope(ScopeType.CONVERSATION)"
+
+#. Tag: para
+#: Annotations.xml:32
+#, no-c-format
+msgid ""
+"Defines the default context of the component. The possible values are "
+"defined by the <literal>ScopeType</literal> enumeration: <literal>EVENT, "
+"PAGE, CONVERSATION, SESSION, BUSINESS_PROCESS, APPLICATION, STATELESS</"
+"literal>."
+msgstr ""
+"Definiert den Standardkontext der Komponente. Die möglichen Werte werden "
+"durch die <literal>ScopeType</literal>-Aufzählung definiert: <literal>EVENT, "
+"PAGE, CONVERSATION, SESSION, BUSINESS_PROCESS, APPLICATION, STATELESS</"
+"literal>."
+
+#. Tag: para
+#: Annotations.xml:35
+#, no-c-format
+msgid ""
+"When no scope is explicitly specified, the default depends upon the "
+"component type. For stateless session beans, the default is "
+"<literal>STATELESS</literal>. For entity beans and stateful session beans, "
+"the default is <literal>CONVERSATION</literal>. For JavaBeans, the default "
+"is <literal>EVENT</literal>."
+msgstr ""
+"Wird kein Bereich explizit festgelegt, so ist der Standard abhängig vom "
+"Komponententyp. Für \"stateless Session Beans\" ist der Standard "
+"<literal>STATELESS</literal>. Für Entity Beans und \"stateful Session Beans"
+"\" ist der Standard <literal>CONVERSATION</literal>. Für JavaBeans ist der "
+"Standard <literal>EVENT</literal>."
+
+#. Tag: literal
+#: Annotations.xml:41
+#, no-c-format
+msgid "@Role"
+msgstr "@Role"
+
+#. Tag: programlisting
+#: Annotations.xml:43
+#, no-c-format
+msgid "@Role(name=\"roleName\", scope=ScopeType.SESSION)"
+msgstr "@Role(name=\"roleName\", scope=ScopeType.SESSION)"
+
+#. Tag: para
+#: Annotations.xml:44
+#, no-c-format
+msgid ""
+"Allows a Seam component to be bound to multiple contexts variables. The "
+"<literal>@Name</literal>/<literal>@Scope</literal> annotations define a "
+"\"default role\". Each <literal>@Role</literal> annotation defines an "
+"additional role."
+msgstr ""
+"Gestattet die Bindung der Seam Komponent an mehrere Kontextvariablen. Die "
+"<literal>@Name</literal>/<literal>@Scope</literal>-Annotationen definieren "
+"eine Standardrolle (\"default role\"). Jede <literal>@Role</literal>-"
+"Annotation definiert eine zusätzliche Rolle."
+
+#. Tag: para
+#: Annotations.xml:49
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the context variable name."
+msgstr "<literal>name</literal> &mdash; Der Name der Kontextvariablen."
+
+#. Tag: para
+#: Annotations.xml:54
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; the context variable scope. When no scope "
+"is explicitly specified, the default depends upon the component type, as "
+"above."
+msgstr ""
+"<literal>scope</literal> &mdash; Der Bereich der Kontextvariablen. Wird kein "
+"expliziter Bereich festgelegt, so hängt der Standard wie oben vom "
+"Komponententyp ab."
+
+#. Tag: literal
+#: Annotations.xml:62
+#, no-c-format
+msgid "@Roles"
+msgstr "@Roles"
+
+#. Tag: programlisting
+#: Annotations.xml:64
+#, no-c-format
+msgid ""
+"@Roles({\n"
+"        @Role(name=\"user\", scope=ScopeType.CONVERSATION),\n"
+"        @Role(name=\"currentUser\", scope=ScopeType.SESSION)\n"
+"    })"
+msgstr ""
+"@Roles({\n"
+"        @Role(name=\"user\", scope=ScopeType.CONVERSATION),\n"
+"        @Role(name=\"currentUser\", scope=ScopeType.SESSION)\n"
+"    })"
+
+#. Tag: para
+#: Annotations.xml:65
+#, no-c-format
+msgid "Allows specification of multiple additional roles."
+msgstr "Gestattet die Spezifikation mehrerer zusätzlicher Rollen."
+
+#. Tag: literal
+#: Annotations.xml:71
+#, no-c-format
+msgid "@Intercept"
+msgstr "@Intercept"
+
+#. Tag: programlisting
+#: Annotations.xml:73
+#, no-c-format
+msgid "@Intercept(InterceptionType.ALWAYS)"
+msgstr "@Intercept(InterceptionType.ALWAYS)"
+
+#. Tag: para
+#: Annotations.xml:74
+#, no-c-format
+msgid ""
+"Determines when Seam interceptors are active. The possible values are "
+"defined by the <literal>InterceptionType</literal> enumeration: "
+"<literal>ALWAYS, AFTER_RESTORE_VIEW, AFTER_UPDATE_MODEL_VALUES, "
+"INVOKE_APPLICATION, NEVER</literal>."
+msgstr ""
+"Bestimmt, wann Seam Interzeptoren aktiv sind. Die möglichen Werte werden "
+"durch die <literal>InterceptionType</literal>-Aufzählung definiert: "
+"<literal>ALWAYS, AFTER_RESTORE_VIEW, AFTER_UPDATE_MODEL_VALUES, "
+"INVOKE_APPLICATION, NEVER</literal>."
+
+#. Tag: para
+#: Annotations.xml:77
+#, no-c-format
+msgid ""
+"When no interception type is explicitly specified, the default depends upon "
+"the component type. For entity beans, the default is <literal>NEVER</"
+"literal>. For session beans, message driven beans and JavaBeans, the default "
+"is <literal>ALWAYS</literal>."
+msgstr ""
+"Ist kein expliziter Interzeptionstyp festgelegt, so hängt der Standard vom "
+"Komponententyp ab. Bei Entity Beans ist der Standard <literal>NEVER</"
+"literal>. Bei Session Beans, \"message driven\" Beans und JavaBeans ist der "
+"Standard <literal>ALWAYS</literal>."
+
+#. Tag: literal
+#: Annotations.xml:83
+#, no-c-format
+msgid "@JndiName"
+msgstr "@JndiName"
+
+#. Tag: programlisting
+#: Annotations.xml:85
+#, no-c-format
+msgid "@JndiName(\"my/jndi/name\")"
+msgstr "@JndiName(\"my/jndi/name\")"
+
+#. Tag: para
+#: Annotations.xml:86
+#, no-c-format
+msgid ""
+"Specifies the JNDI name that Seam will use to look up the EJB component. If "
+"no JNDI name is explicitly specified, Seam will use the JNDI pattern "
+"specified by <literal>org.jboss.seam.core.init.jndiPattern</literal>."
+msgstr ""
+"Legt den JNDI-Namen fest, den Seam für die Suche nach der EJB-Komponente "
+"verwendet. Ist kein JNDI-Name explizit festgelegt, so verwendet Seam das in "
+"<literal>org.jboss.seam.core.init.jndiPattern</literal> festgelegte JNDI-"
+"Muster."
+
+#. Tag: literal
+#: Annotations.xml:92
+#, no-c-format
+msgid "@Conversational"
+msgstr "@Conversational"
+
+#. Tag: programlisting
+#: Annotations.xml:94
+#, no-c-format
+msgid "@Conversational(ifNotBegunOutcome=\"error\")"
+msgstr "@Conversational(ifNotBegunOutcome=\"error\")"
+
+#. Tag: para
+#: Annotations.xml:95
+#, no-c-format
+msgid ""
+"Specifies that a conversation scope component is conversational, meaning "
+"that no method of the component can be called unless a long-running "
+"conversation started by this component is active (unless the method would "
+"begin a new long-running conversation)."
+msgstr ""
+"Legt fest, dass eine Konversationsbereich-Komponente konversational ist, was "
+"bedeutet, dass keine Methode der Komponente aufgerufen werden kann, wenn "
+"nicht aine durch diese Komponente gestartete lange laufende Konversation "
+"aktiv ist (außer die Methode würde eine lange laufende Konversation "
+"beginnen)."
+
+#. Tag: literal
+#: Annotations.xml:101
+#, no-c-format
+msgid "<literal>@Startup</literal>"
+msgstr "<literal>@Startup</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:103
+#, no-c-format
+msgid "@Startup(depends={\"org.jboss.core.jndi\", \"org.jboss.core.jta\"})"
+msgstr "@Startup(depends={\"org.jboss.core.jndi\", \"org.jboss.core.jta\"})"
+
+#. Tag: para
+#: Annotations.xml:104
+#, no-c-format
+msgid ""
+"Specifies that an application scope component is started immediately at "
+"initialization time. This is mainly used for certain built-in components "
+"that bootstrap critical infrastructure such as JNDI, datasources, etc."
+msgstr ""
+"Legt fest, dass eine Anwendungsbereichskomponente sofort zum "
+"Initialisierungszeitpunkt gestartet wird. Dies wird hauptsächlich für "
+"bestimmte eingebaute Komponenten verwendet, die für Bootstrap kritischer "
+"Infrastruktur wie JNDI, Datenquellen, usw. verantwortlich sind."
+
+#. Tag: programlisting
+#: Annotations.xml:107
+#, no-c-format
+msgid "<programlisting>@Startup</programlisting>"
+msgstr "<programlisting>@Startup</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:108
+#, no-c-format
+msgid ""
+"Specifies that a session scope component is started immediately at session "
+"creation time."
+msgstr ""
+"Legt fest, dass eine Komponente für den Session-Bereich sofort zum Zeitpunkt "
+"der Session-Erstellung gestartet wird."
+
+#. Tag: para
+#: Annotations.xml:113
+#, no-c-format
+msgid ""
+"<literal>depends</literal> &mdash; specifies that the named components must "
+"be started first, if they are installed."
+msgstr ""
+"<literal>depends</literal> &mdash; Legt fest, dass die genannten Komponenten "
+"zuerst gestartet werden müssen, wenn sie installiert sind."
+
+#. Tag: literal
+#: Annotations.xml:121
+#, no-c-format
+msgid "@Install"
+msgstr "@Install"
+
+#. Tag: programlisting
+#: Annotations.xml:123
+#, no-c-format
+msgid "@Install(false)"
+msgstr "@Install(false)"
+
+#. Tag: para
+#: Annotations.xml:124
+#, no-c-format
+msgid ""
+"Specifies whether or not a component should be installed by default. The "
+"lack of an @Install annotation indicates a component should be installed."
+msgstr ""
+"Legt fest, ob eine Komponente standardmäßig installiert werden sollte oder "
+"nicht. Das Fehlen einer @Install-Annotation zeigt an, dass eine Komponente "
+"installiert werden sollte."
+
+#. Tag: programlisting
+#: Annotations.xml:127
+#, no-c-format
+msgid "@Install(dependencies=\"org.jboss.seam.core.jbpm\")"
+msgstr "@Install(dependencies=\"org.jboss.seam.core.jbpm\")"
+
+#. Tag: para
+#: Annotations.xml:128
+#, no-c-format
+msgid ""
+"Specifies that a component should only be stalled if the components listed "
+"as dependencies are also installed."
+msgstr ""
+"Legt fest, dass eine Komponente nur installiert werden soll, wenn die als "
+"Abhängigkeiten aufgeführten Komponenten ebenfalls installiert werden."
+
+#. Tag: programlisting
+#: Annotations.xml:131
+#, no-c-format
+msgid "@Install(genericDependencies=ManagedQueueSender.class)"
+msgstr "@Install(genericDependencies=ManagedQueueSender.class)"
+
+#. Tag: para
+#: Annotations.xml:132
+#, no-c-format
+msgid ""
+"Specifies that a component should only be installed if a component that is "
+"implemented by a certain class is installed. This is useful when the "
+"dependency doesn&#39;t have a single well-known name."
+msgstr ""
+"Legt fest, dass eine Komponente nur installiert werden sollte, wenn eine "
+"durch eine bestimmte Klasse implementierte Komponente installiert wird. Dies ist hilfreich, wenn die Abhängigkeit keinen einzelnen wohl bekannten Namen besitzt."
+
+#. Tag: programlisting
+#: Annotations.xml:135
+#, no-c-format
+msgid "@Install(classDependencies=\"org.hibernate.Session\")"
+msgstr "@Install(classDependencies=\"org.hibernate.Session\")"
+
+#. Tag: para
+#: Annotations.xml:136
+#, no-c-format
+msgid ""
+"Specifies that a component should only be installed if the named class is in "
+"the classpath."
+msgstr ""
+"Legt fest, dass eine Komponente nur dann installiert werden sollte, wenn "
+"sich die genannte Klasse im Klassenpfad befindet."
+
+#. Tag: programlisting
+#: Annotations.xml:139
+#, no-c-format
+msgid "@Install(precedence=BUILT_IN)"
+msgstr "@Install(precedence=BUILT_IN)"
+
+#. Tag: para
+#: Annotations.xml:140
+#, no-c-format
+msgid ""
+"Specifies the precedence of the component. If multiple components with the "
+"same name exist, the one with the higher precedence will be installed. The "
+"defined precendence values are (in ascending order):"
+msgstr ""
+"Legt die Priorität der Komponente fest. Existieren mehrere Komponenten mit demselben Namen, so wird diejenige mit der höheren Priorität installiert. "
+"Die definierten Prioritätenwerte lauten (in aufsteigender Reihenfolge):"
+
+#. Tag: para
+#: Annotations.xml:145
+#, no-c-format
+msgid ""
+"<literal>BUILT_IN</literal> &mdash; Precedence of all built-in Seam "
+"components"
+msgstr ""
+"<literal>BUILT_IN</literal> &mdash; Priorität aller eingebauten Seam "
+"Komponenten"
+
+#. Tag: para
+#: Annotations.xml:150
+#, no-c-format
+msgid ""
+"<literal>FRAMEWORK</literal> &mdash; Precedence to use for components of "
+"frameworks which extend Seam"
+msgstr ""
+"<literal>FRAMEWORK</literal> &mdash; Für Komponenten von Frameworks, die "
+"Seam erweitern, zu verwendende Priorität"
+
+#. Tag: para
+#: Annotations.xml:155
+#, no-c-format
+msgid ""
+"<literal>APPLICATION</literal> &mdash; Predence of application components "
+"(the default precedence)"
+msgstr ""
+"<literal>APPLICATION</literal> &mdash; Priorität von Anwendungskomponenten "
+"(die Standardpriorität)"
+
+#. Tag: para
+#: Annotations.xml:160
+#, no-c-format
+msgid ""
+"<literal>DEPLOYMENT</literal> &mdash; Precedence to use for components which "
+"override application components in a particular deployment"
+msgstr ""
+"<literal>DEPLOYMENT</literal> &mdash; Priorität haben Komponenten, die "
+"Anwendungskomponenten in einem bestimmten Deployment außer Kraft setzen"
+
+#. Tag: para
+#: Annotations.xml:165
+#, no-c-format
+msgid "<literal>MOCK</literal> &mdash; Precedence for mock objects used in testing"
+msgstr "<literal>MOCK</literal> &mdash; Für beim Testen benutzte Mock-Objekte zu verwendende Priorität"
+
+#. Tag: literal
+#: Annotations.xml:173
+#, no-c-format
+msgid "@Synchronized"
+msgstr "@Synchronized"
+
+#. Tag: programlisting
+#: Annotations.xml:175
+#, no-c-format
+msgid "@Synchronized(timeout=1000)"
+msgstr "@Synchronized(timeout=1000)"
+
+#. Tag: para
+#: Annotations.xml:176
+#, no-c-format
+msgid ""
+"Specifies that a component is accessed concurrently by multiple clients, and "
+"that Seam should serialize requests. If a request is not able to obtain its "
+"lock on the component in the given timeout period, an exception will be "
+"raised."
+msgstr ""
+"Legt fest, dass auf eine Komponente gleichzeitig von mehreren Clients "
+"zugegriffen wird und Seam Anfragen serialisieren soll. Kann eine Anfrage "
+"Ihre Sperre an der Komponente nicht innerhalb des vorgegebenen zeitlichen "
+"Rahmens für den Timeout erhalten, so wird eine Ausnahme gemeldet."
+
+#. Tag: literal
+#: Annotations.xml:182
+#, no-c-format
+msgid "<literal>@ReadOnly</literal>"
+msgstr "<literal>@ReadOnly</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:184
+#, no-c-format
+msgid "<programlisting>@ReadOnly</programlisting>"
+msgstr "<programlisting>@ReadOnly</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:185
+#, no-c-format
+msgid ""
+"Specifies that a JavaBean component or component method does not require "
+"state replication at the end of the invocation."
+msgstr ""
+"Legt fest, dass eine JavaBean Komponente oder Komponentenmethode am Ende des "
+"Aufrufs keine Statusreplikation benötigt."
+
+#. Tag: title
+#: Annotations.xml:194
+#, no-c-format
+msgid "Annotations for bijection"
+msgstr "Annotationen für die \"Bijection\""
+
+#. Tag: para
+#: Annotations.xml:195
+#, no-c-format
+msgid ""
+"The next two annotations control bijection. These attributes occur on "
+"component instance variables or property accessor methods."
+msgstr ""
+"Die folgenden beiden Annotationen steuern Bijektion. Diese Attribute kommen "
+"an Komponenten-Instanzvariablen oder Property-Accessor-Methoden vor."
+
+#. Tag: literal
+#: Annotations.xml:200
+#, no-c-format
+msgid "<literal>@In</literal>"
+msgstr "<literal>@In</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:202
+#, no-c-format
+msgid "<programlisting>@In</programlisting>"
+msgstr "<programlisting>@In</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:203
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. If the context "
+"variable is null, an exception will be thrown."
+msgstr ""
+"Legt fest, dass ein Komponentenattribut von einer Kontextvariablen zu Beginn "
+"jedes Komponentenaufrufs eingespeist wird. Ist die Kontextvariable null, so "
+"wird eine Ausnahme gemeldet."
+
+#. Tag: programlisting
+#: Annotations.xml:206
+#, no-c-format
+msgid "@In(required=false)"
+msgstr "@In(required=false)"
+
+#. Tag: para
+#: Annotations.xml:207
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. The context variable "
+"may be null."
+msgstr ""
+"Legt fest, dass ein Komponentenattribut von einer Kontextvariablen zu Beginn "
+"jedes Komponentenaufrufs eingespeist wird. Die Kontextvariable kann null "
+"sein."
+
+#. Tag: programlisting
+#: Annotations.xml:210
+#, no-c-format
+msgid "@In(create=true)"
+msgstr "@In(create=true)"
+
+#. Tag: para
+#: Annotations.xml:211
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. If the context "
+"variable is null, an instance of the component is instantiated by Seam."
+msgstr ""
+"Legt fest, dass ein Komponentenattribut von einer Kontextvariablen zu Beginn "
+"jedes Komponentenaufrufs eingespeist wird. Ist die Kontextvariable null, so "
+"wird von Seam eine Instanz der Komponente instantiiert."
+
+#. Tag: programlisting
+#: Annotations.xml:214
+#, no-c-format
+msgid "@In(value=\"contextVariableName\")"
+msgstr "@In(value=\"contextVariableName\")"
+
+#. Tag: para
+#: Annotations.xml:215 Annotations.xml:260
+#, no-c-format
+msgid ""
+"Specifies the name of the context variable explicitly, instead of using the "
+"annotated instance variable name."
+msgstr ""
+"Legt den Namen der Kontextvariablen explizit fest statt den annotierten "
+"Instanzvariablennamen zu verwenden."
+
+#. Tag: programlisting
+#: Annotations.xml:218
+#, no-c-format
+msgid "@In(value=\"#{customer.addresses[&#39;shipping&#39;]}\")"
+msgstr "@In(value=\"#{customer.addresses[&#39;shipping&#39;]}\")"
+
+#. Tag: para
+#: Annotations.xml:219
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected by evaluating a JSF "
+"EL expression at the beginning of each component invocation."
+msgstr ""
+"Legt fest, dass ein Komponentenattribut durch Evaluierung eines JSF EL "
+"Ausdrucks zu Beginn jeden Komponentenaufrufs eingespeist werden soll."
+
+#. Tag: para
+#: Annotations.xml:224
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"Default to the name of the component attribute. Alternatively, specifies a "
+"JSF EL expression, surrounded by <literal>#{...}</literal>."
+msgstr ""
+"<literal>value</literal> &mdash; Legt den Namen der Kontextvariablen fest. "
+"Standardmäßig der Name des Komponentenattributs. Legt alternativ einen JSF "
+"EL-Ausdruck umgeben von <literal>#{...}</literal> fest."
+
+#. Tag: para
+#: Annotations.xml:229
+#, no-c-format
+msgid ""
+"<literal>create</literal> &mdash; specifies that Seam should instantiate the "
+"component with the same name as the context variable if the context variable "
+"is undefined (null) in all contexts. Default to false."
+msgstr ""
+"<literal>create</literal> &mdash; Legt fest, dass Seam die Komponente mit "
+"demselben Namen wie die Kontextvariable instantiieren sollte, wenn die "
+"Kontextvariable undefiniert (null) in allen Kontexten ist. Standard ist "
+"\"false\"."
+
+#. Tag: para
+#: Annotations.xml:234
+#, no-c-format
+msgid ""
+"<literal>required</literal> &mdash; specifies Seam should throw an exception "
+"if the context variable is undefined in all contexts."
+msgstr ""
+"<literal>required</literal> &mdash; Legt fest, dass Seam eine Ausnahme "
+"melden soll, wenn die Kontextvariable in allen Kontexten undefiniert ist."
+
+#. Tag: literal
+#: Annotations.xml:242
+#, no-c-format
+msgid "<literal>@Out</literal>"
+msgstr "<literal>@Out</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:244
+#, no-c-format
+msgid "<programlisting>@Out</programlisting>"
+msgstr "<programlisting>@Out</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:245
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is a Seam component is to be "
+"outjected to its context variable at the end of the invocation. If the "
+"attribute is null, an exception is thrown."
+msgstr ""
+"Legt fest, dass ein Komponentenattribut, das eine Seam-Komponente ist, am "
+"Ende des Aufrufs in seine Kontextvariable \"outjected\" wird. Ist das "
+"Attribut Null, so wird eine Ausnahme gemeldet."
+
+#. Tag: programlisting
+#: Annotations.xml:248
+#, no-c-format
+msgid "@Out(required=false)"
+msgstr "@Out(required=false)"
+
+#. Tag: para
+#: Annotations.xml:249
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is a Seam component is to be "
+"outjected to its context variable at the end of the invocation. The "
+"attribute may be null."
+msgstr ""
+"Legt fest, dass ein Komponentenattribut, das eine Seam-Komponente ist, am "
+"Ende des Aufrufs in seine Kontextvariable \"outjected\" wird. Das Attribut "
+"kann Null sein."
+
+#. Tag: programlisting
+#: Annotations.xml:252
+#, no-c-format
+msgid "@Out(scope=ScopeType.SESSION)"
+msgstr "@Out(scope=ScopeType.SESSION)"
+
+#. Tag: para
+#: Annotations.xml:253
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is <emphasis>not</emphasis> a Seam "
+"component type is to be outjected to a specific scope at the end of the "
+"invocation."
+msgstr ""
+"Legt fest, dass ein Komponentenattribut, das <emphasis>nicht</emphasis> vom "
+"Seam-Komponententyp ist, am Ende des Aufrufs in einen bestimmten Bereich "
+"\"outjected\" werden."
+
+#. Tag: para
+#: Annotations.xml:256
+#, no-c-format
+msgid ""
+"Alternatively, if no scope is explicitly specified, the scope of the "
+"component with the <literal>@Out</literal> attribute is used (or the "
+"<literal>EVENT</literal> scope if the component is stateless)."
+msgstr ""
+"Ist kein expliziter Bereich festgelegt, so wird alternativ der Bereich der "
+"Komponente mit dem <literal>@Out</literal>-Attribut verwendet (oder der "
+"<literal>EVENT</literal>-Bereich, wenn die Komponente \"stateless\" ist)."
+
+#. Tag: programlisting
+#: Annotations.xml:259
+#, no-c-format
+msgid "@Out(value=\"contextVariableName\")"
+msgstr "@Out(value=\"contextVariableName\")"
+
+#. Tag: para
+#: Annotations.xml:265
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"Default to the name of the component attribute."
+msgstr ""
+"<literal>value</literal> &mdash; Legt den Namen der Kontextvariablen fest. "
+"Standard ist der Name des Komponentenattributs."
+
+#. Tag: para
+#: Annotations.xml:270
+#, no-c-format
+msgid ""
+"<literal>required</literal> &mdash; specifies Seam should throw an exception "
+"if the component attribute is null during outjection."
+msgstr ""
+"<literal>required</literal> &mdash; Legt fest, dass Seam eine Ausnahme "
+"melden soll, wenn das Komponentenattribut während der Outjection Null ist."
+
+#. Tag: para
+#: Annotations.xml:278
+#, no-c-format
+msgid ""
+"Note that it is quite common for these annotations to occur together, for "
+"example:"
+msgstr ""
+"Bitte beachten Sie, dass es recht gängig ist, dass diese Komponenten "
+"gemeinsam vorkommen:"
+
+#. Tag: programlisting
+#: Annotations.xml:281
+#, no-c-format
+msgid "@In(create=true) @Out private User currentUser;"
+msgstr "@In(create=true) @Out private User currentUser;"
+
+#. Tag: para
+#: Annotations.xml:282
+#, no-c-format
+msgid ""
+"The next annotation supports the <emphasis>manager component</emphasis> "
+"pattern, where a Seam component that manages the lifecycle of an instance of "
+"some other class that is to be injected. It appears on a component getter "
+"method."
+msgstr ""
+"Die nächste Annotation unterstützt das <emphasis>Manager Komponente</"
+"emphasis>-Muster, bei dem eine den Lebenszyklus einer Instanz einer anderen "
+"Klasse managende Seam Komponente eingespeist wird. Es erscheint auf einer "
+"Komponenten-\"Getter\"-Methode."
+
+#. Tag: literal
+#: Annotations.xml:287
+#, no-c-format
+msgid "<literal>@Unwrap</literal>"
+msgstr "<literal>@Unwrap</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:289
+#, no-c-format
+msgid "<programlisting>@Unwrap</programlisting>"
+msgstr "<programlisting>@Unwrap</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:290
+#, no-c-format
+msgid ""
+"Specifies that the object returned by the annotated getter method is the "
+"thing that is injected instead of the component instance itself."
+msgstr ""
+"Legt fest, dass das durch die annotierte \"Getter\"-Methode wiedergegebene "
+"Objekt anstelle der Komponenteninstanz selbst eingespeist wird."
+
+#. Tag: para
+#: Annotations.xml:296
+#, no-c-format
+msgid ""
+"The next annotation supports the <emphasis>factory component</emphasis> "
+"pattern, where a Seam component is responsible for initializing the value of "
+"a context variable. This is especially useful for initializing any state "
+"needed for rendering the response to a non-faces request. It appears on a "
+"component method."
+msgstr ""
+"Die nächste Annotation unterstützt das <emphasis>Factory-Komponenten</"
+"emphasis>-Muster, bei dem eine Seam Komponent verantwortlich für die "
+"Initialisierung des Wertes einer Kontextvariablen ist. Dies ist insbesondere "
+"dann von Nutzen, wenn ein zum Rendern der Antwort an eine nicht-\"Faces\" "
+"Anfrage benötigter Status initialisert werden soll."
+
+#. Tag: literal
+#: Annotations.xml:301
+#, no-c-format
+msgid "@Factory"
+msgstr "@Factory"
+
+#. Tag: programlisting
+#: Annotations.xml:303
+#, no-c-format
+msgid "@Factory(\"processInstance\")"
+msgstr "@Factory(\"processInstance\")"
+
+#. Tag: para
+#: Annotations.xml:304
+#, no-c-format
+msgid ""
+"Specifies that the method of the component is used to initialize the value "
+"of the named context variable, when the context variable has no value. This "
+"style is used with methods that return <literal>void</literal>."
+msgstr ""
+"Legt fest, dass die Methode der Komponente zur Initialisierung des Wertes "
+"der genannten Kontextvariablen verwendet wird, wenn die Kontextvariable "
+"keinen Wert besitzt. Dieser Stil wird bei Methoden, die <literal>void</"
+"literal> wiedergeben verwendet."
+
+#. Tag: programlisting
+#: Annotations.xml:307
+#, no-c-format
+msgid "@Factory(\"processInstance\", scope=CONVERSATION)"
+msgstr "@Factory(\"processInstance\", scope=CONVERSATION)"
+
+#. Tag: para
+#: Annotations.xml:308
+#, no-c-format
+msgid ""
+"Specifies that the method returns a value that Seam should use to initialize "
+"the value of the named context variable, when the context variable has no "
+"value. This style is used with methods that return a value. If no scope is "
+"explicitly specified, the scope of the component with the <literal>@Factory</"
+"literal> method is used (unless the component is stateless, in which case "
+"the <literal>EVENT</literal> context is used)."
+msgstr ""
+"Legt fest, dass die Methode einen Wert wiedergibt, den Seam zur "
+"Initialisierung des Wertes der genannten Kontextvariablen verwenden soll, "
+"wenn die Kontextvariable keinen Wert besitzt. Dieser Stil findet bei "
+"Methoden, die einen Wert wiedergeben, Anwendung. Ist kein Bereich explizit "
+"festgelegt, so wird der Bereich der Komponente mit der <literal>@Factory</"
+"literal>-Methode verwendet (außer die Komponente ist \"stateless\", in "
+"welchem Fall der <literal>EVENT</literal>-Kontext verwendet wird)."
+
+#. Tag: para
+#: Annotations.xml:313
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"If the method is a getter method, default to the JavaBeans property name."
+msgstr ""
+"<literal>value</literal> &mdash; Legt den Namen der Kontextvariablen fest. "
+"Handelt es sich bei der Methode um eine \"Getter-Methode\" so ist dies "
+"standardmäßig der JavaBeans Property-Name."
+
+#. Tag: para
+#: Annotations.xml:318
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; specifies the scope that Seam should bind "
+"the returned value to. Only meaningful for factory methods which return a "
+"value."
+msgstr ""
+"<literal>scope</literal> &mdash; Legt den Bereich fest in dem Seam den "
+"wiedergegebenen Wert binden sollte. Nur bedeutsam für Factory-Methoden, die "
+"einen Wert wiedergeben."
+
+#. Tag: para
+#: Annotations.xml:326
+#, no-c-format
+msgid "This annotation lets you inject a <literal>Log</literal>:"
+msgstr "Diese Annotation lässt Sie ein <literal>Log</literal> einspeisen:"
+
+#. Tag: literal
+#: Annotations.xml:331
+#, no-c-format
+msgid "@Logger"
+msgstr "@Logger"
+
+#. Tag: programlisting
+#: Annotations.xml:333
+#, no-c-format
+msgid "@Logger(\"categoryName\")"
+msgstr "@Logger(\"categoryName\")"
+
+#. Tag: para
+#: Annotations.xml:334
+#, no-c-format
+msgid ""
+"Specifies that a component field is to be injected with an instance of "
+"<literal>org.jboss.seam.log.Log</literal>. For entity beans, the field must "
+"be declared as static."
+msgstr "Legt fest, dass einem Komponentenfeld eine Instanz von <literal>org.jboss.seam.log.Log</literal> eingespeist wird. Für Entity-Beans muss das Feld als statisch (\"static\") deklariert sein."
+
+#. Tag: para
+#: Annotations.xml:339
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the log category. "
+"Default to the name of the component class."
+msgstr ""
+"<literal>value</literal> &mdash; Legt den Namen der Protokollkategorie fest. "
+"Standard ist der Name der Komponentenklasse."
+
+#. Tag: para
+#: Annotations.xml:347
+#, no-c-format
+msgid "The last annotation lets you inject a request parameter value:"
+msgstr ""
+"Die letzte Annotation lässt Sie einen Wert für den Anfragenparameter "
+"einspeisen:"
+
+#. Tag: literal
+#: Annotations.xml:352
+#, no-c-format
+msgid "@RequestParameter"
+msgstr "@RequestParameter"
+
+#. Tag: programlisting
+#: Annotations.xml:354
+#, no-c-format
+msgid "@RequestParameter(\"parameterName\")"
+msgstr "@RequestParameter(\"parameterName\")"
+
+#. Tag: para
+#: Annotations.xml:355
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected with the value of a "
+"request parameter. Basic type conversions are performed automatically."
+msgstr ""
+"Legt fest, dass einem Komponentenattribut der Wert eines Anfragenparameters "
+"eingespeist wird. Grundlegende Typenkonversionen werden automatisch "
+"durchgeführt."
+
+#. Tag: para
+#: Annotations.xml:360
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the request "
+"parameter. Default to the name of the component attribute."
+msgstr ""
+"<literal>value</literal> &mdash; Legt den Namen des Anfragenparameters fest. "
+"Standardmäßig der Nem des Komponentenattributs."
+
+#. Tag: title
+#: Annotations.xml:371
+#, no-c-format
+msgid "Annotations for component lifecycle methods"
+msgstr "Annotationen für Lebenszyklus-Methoden von Komponenten"
+
+#. Tag: para
+#: Annotations.xml:372
+#, no-c-format
+msgid ""
+"These annotations allow a component to react to its own lifecycle events. "
+"They occur on methods of the component. There may be only one of each per "
+"component class."
+msgstr ""
+"Diese Annotationen gestatten es einer Komponente auf Ereignisse Ihres "
+"eigenen Lebenszyklus zu reagieren. Sie kommen an Methoden der Komponente "
+"vor. Es kann nur eine pro Komponentenklasse existieren."
+
+#. Tag: literal
+#: Annotations.xml:377
+#, no-c-format
+msgid "<literal>@Create</literal>"
+msgstr "<literal>@Create</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:379
+#, no-c-format
+msgid "<programlisting>@Create</programlisting>"
+msgstr "<programlisting>@Create</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:380
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when an instance of the component "
+"is instantiated by Seam. Note that create methods are only supported for "
+"JavaBeans and stateful session beans."
+msgstr ""
+"Legt fest, dass die Methode aufgerufen werden sollte, wenn eine Instanz der "
+"Komponente durch Seam instantiiert wird. Bitte beachten Sie das \"Create "
+"Methods\" nur für JavaBeans und \"stateful\" Session Beans unterstützt "
+"werden."
+
+#. Tag: literal
+#: Annotations.xml:386
+#, no-c-format
+msgid "<literal>@Destroy</literal>"
+msgstr "<literal>@Destroy</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:388
+#, no-c-format
+msgid "<programlisting>@Destroy</programlisting>"
+msgstr "<programlisting>@Destroy</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:389
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when the context ends and its "
+"context variables are destroyed. Note that create methods are only supported "
+"for JavaBeans and stateful session beans."
+msgstr ""
+"Legt fest, dass die Methode aufgerufen werden soll, wenn der Kontext endet "
+"und dessen Kontextvariablen gelöscht werden. Bitte beachten Sie das \"Create "
+"Methods\" nur für JavaBeans und \"stateful\" Session Beans unterstützt "
+"werden."
+
+#. Tag: para
+#: Annotations.xml:392
+#, no-c-format
+msgid ""
+"Note that all stateful session bean components <emphasis>must</emphasis> "
+"define a method annotated <literal>@Destroy @Remove</literal> in order to "
+"guarantee destruction of the stateful bean when a context ends."
+msgstr ""
+"Beachten Sie, dass Komponenten aller \"stateful\" Session-Beans eine "
+"<literal>@Destroy @Remove</literal> annotierte Methode definieren "
+"<emphasis>müssen</emphasis>, um die Löschung des \"stateful\"Beans zu "
+"gewährleisten, wenn ein Kontext endet."
+
+#. Tag: para
+#: Annotations.xml:395
+#, no-c-format
+msgid ""
+"Destroy methods should be used only for cleanup. <emphasis>Seam catches, "
+"logs and swallows any exception that propagates out of a destroy method.</"
+"emphasis>"
+msgstr ""
+"Löschmethoden (\"Destroy Methods\") sollten nur zur Bereinigung verwendet "
+"werden. <emphasis>Seam fängt, protokolliert und schluckt jede Ausnahme, die "
+"sich aus einer Löschmethode fortpflanzt.</emphasis>"
+
+#. Tag: literal
+#: Annotations.xml:401
+#, no-c-format
+msgid "@Observer"
+msgstr "@Observer"
+
+#. Tag: programlisting
+#: Annotations.xml:403
+#, no-c-format
+msgid "@Observer(\"somethingChanged\")"
+msgstr "@Observer(\"somethingChanged\")"
+
+#. Tag: para
+#: Annotations.xml:404
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when a component-driven event of "
+"the specified type occurs."
+msgstr ""
+"Legt fest, dass die Methode aufgerufen werden soll, wenn ein Komponenten-"
+"gesteuertes Ereginis des spezifizierten Typs vorkommt."
+
+#. Tag: programlisting
+#: Annotations.xml:407
+#, no-c-format
+msgid "@Observer(value=\"somethingChanged\",create=false)"
+msgstr "@Observer(value=\"somethingChanged\",create=false)"
+
+#. Tag: para
+#: Annotations.xml:408
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when an event of the specified "
+"type occurs but that an instance should not be created if one doesn&#39;t "
+"exist. If an instance does not exist and create is false, the event will not "
+"be observed. The default value for create is true."
+msgstr ""
+"Legt fest, dass die Methode aufgerufen werden soll, wenn ein Ereignis des spezifizierten Typs vorkommt, aber keine Instanz "
+"erstellt werden soll, wenn keine existiert.Existiert keine Instanz und "
+"Erstellen lautet \"false\", so wird das Ereignis nicht überwacht. Der "
+"Standardwert für Erstellen lautet \"true\"."
+
+#. Tag: title
+#: Annotations.xml:417
+#, no-c-format
+msgid "Annotations for context demarcation"
+msgstr "Annotationen für Kontextdemarkation"
+
+#. Tag: para
+#: Annotations.xml:418
+#, no-c-format
+msgid ""
+"These annotations provide declarative conversation demarcation. They appear "
+"on methods of Seam components, usually action listener methods."
+msgstr ""
+"Diese Annotationen bieten deklarative Konversationsdemarkation. Sie "
+"erscheinen an Methoden von of Seam Komponente, in der Regel \"Action Listener"
+"\"-Methoden."
+
+#. Tag: para
+#: Annotations.xml:421
+#, no-c-format
+msgid ""
+"Every web request has a conversation context associated with it. Most of "
+"these conversations end at the end of the request. If you want a "
+"conversation that span multiple requests, you must \"promote\" the current "
+"conversation to a <emphasis>long-running conversation</emphasis> by calling "
+"a method marked with <literal>@Begin</literal>."
+msgstr ""
+"Mit jeder Webanfrage wird ein Konversationskontext assoziiert. Die meisten "
+"dieser Konversationen enden mit dem Ende der Anfrage. Wenn Sie eine "
+"Konversation möchten, die mehrere Anfragen umspannt, so müssen Sie die "
+"aktuelle Konversatione zu einer <emphasis>lange laufenden Konversation</"
+"emphasis> erklären, indem Sie eine mit <literal>@Begin</literal> markierte "
+"Methode aufrufen."
+
+#. Tag: literal
+#: Annotations.xml:426
+#, no-c-format
+msgid "<literal>@Begin</literal>"
+msgstr "<literal>@Begin</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:430
+#, no-c-format
+msgid "<programlisting>@Begin</programlisting>"
+msgstr "<programlisting>@Begin</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:431
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation begins when this method returns a "
+"non-null outcome without exception."
+msgstr ""
+"Legt fest, dass eine lange laufende Konversation beginnt, wenn diese Methode "
+"ein nicht-null Ergebnis ohne Ausnahme wiedergibt."
+
+#. Tag: programlisting
+#: Annotations.xml:436
+#, no-c-format
+msgid "@Begin(ifOutcome={\"success\", \"continue\"})"
+msgstr "@Begin(ifOutcome={\"success\", \"continue\"})"
+
+#. Tag: para
+#: Annotations.xml:437
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation begins when this action listener "
+"method returns with one of the given outcomes."
+msgstr ""
+"Legt fest, dass eine lange laufende Konversation beginnt, wenn diese "
+"\"Action-Listener\" Methode eines der gegebenen Ergebnisse wiedergibt."
+
+#. Tag: programlisting
+#: Annotations.xml:442
+#, no-c-format
+msgid "@Begin(join=true)"
+msgstr "@Begin(join=true)"
+
+#. Tag: para
+#: Annotations.xml:443
+#, no-c-format
+msgid ""
+"Specifies that if a long-running conversation is already in progress, the "
+"conversation context is simply propagated."
+msgstr ""
+"Legt fest, dass wenn eine lange laufende Konversation bereits läuft, der "
+"Konversationskontext einfach fortgepflanzt wird."
+
+#. Tag: programlisting
+#: Annotations.xml:448
+#, no-c-format
+msgid "@Begin(nested=true)"
+msgstr "@Begin(nested=true)"
+
+#. Tag: para
+#: Annotations.xml:449
+#, no-c-format
+msgid ""
+"Specifies that if a long-running conversation is already in progress, a new "
+"<emphasis>nested</emphasis> conversation context begins. The nested "
+"conversation will end when the next <literal>@End</literal> is encountered, "
+"and the outer conversation will resume. It is perfectly legal for multiple "
+"nested conversations to exist concurrently in the same outer conversation."
+msgstr ""
+"Legt fest, dass wenn eine lange laufende Konversation bereits läuft, ein "
+"neuer <emphasis>verschachtelter</emphasis> Konversationskontext beginnt. Die "
+"verschachtelte Konversation endet, wenn das nächste <literal>@End</literal> "
+"auftritt und die äußere Konversation wird fortgesetzt. Es ist völlig in "
+"Ordnung, wenn mehrere verschachtelte Konversationen gleichzeitig innerhalb "
+"derselben äußeren Konversation koexistieren."
+
+#. Tag: programlisting
+#: Annotations.xml:454
+#, no-c-format
+msgid "@Begin(pageflow=\"process definition name\")"
+msgstr "@Begin(pageflow=\"process definition name\")"
+
+#. Tag: para
+#: Annotations.xml:455
+#, no-c-format
+msgid ""
+"Specifies a jBPM process definition name that defines the pageflow for this "
+"conversation."
+msgstr ""
+"Legt eine Namen für die jBPM-Prozessdefinition fest, der den Pageflow für "
+"diese Konversation definiert."
+
+#. Tag: programlisting
+#: Annotations.xml:460
+#, no-c-format
+msgid "@Begin(flushMode=FlushModeType.MANUAL)"
+msgstr "@Begin(flushMode=FlushModeType.MANUAL)"
+
+#. Tag: para
+#: Annotations.xml:461
+#, no-c-format
+msgid ""
+"Specify the flush mode of any Seam-managed persistence contexts. "
+"<literal>flushMode=FlushModeType.MANUAL</literal> supports the use of "
+"<emphasis>atomic conversations</emphasis> where all write operations are "
+"queued in the conversation context until an explicit call to <literal>flush()"
+"</literal> (which usually occurs at the end of the conversation)."
+msgstr ""
+"Legt den Räumungsmodus eines beliebigen Seam-gemanagten Persistenzkontexts "
+"fest. <literal>flushMode=FlushModeType.MANUAL</literal> unterstützt die "
+"Verwendung <emphasis>atomarer Konversationen</emphasis>, wo alle "
+"Schreibvorgänge in eine Warteschlange des Konversationskontexts eingereiht "
+"werden, bis zum expliziten Bereinigungsaufruf <literal>flush()</literal> "
+"(der in der Regel am Ende der Konversation erfolgt)."
+
+#. Tag: para
+#: Annotations.xml:468
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in a new long-running conversation context."
+msgstr ""
+"<literal>ifOutcome</literal> &mdash; Legt das JSF-Ergebnis oder die "
+"Ergebnisse fest, die in einem lange laufenden Konversationskontext "
+"resultieren."
+
+#. Tag: para
+#: Annotations.xml:473
+#, no-c-format
+msgid ""
+"<literal>join</literal> &mdash; determines the behavior when a long-running "
+"conversation is already in progress. If <literal>true</literal>, the context "
+"is propagated. If <literal>false</literal>, an exception is thrown. Default "
+"to <literal>false</literal>. This setting is ignored when "
+"<literal>nested=true</literal> is specified"
+msgstr ""
+"<literal>join</literal> &mdash; Bestimmt das Verhalten, wenn eine lange "
+"laufende Konversation bereits fortgeschritten ist. Falls <literal>true</"
+"literal>, wird der Kontext fortgepflanzt. Falls <literal>false</literal>, "
+"wird eine Ausnahme gemeldet. Standardmäßig <literal>false</literal>. Diese "
+"Einstellung wird ignoriert, wenn <literal>nested=true</literal> festgelegt "
+"wird"
+
+#. Tag: para
+#: Annotations.xml:478
+#, no-c-format
+msgid ""
+"<literal>nested</literal> &mdash; specifies that a nested conversation "
+"should be started if a long-running conversation is already in progress."
+msgstr ""
+"<literal>nested</literal> &mdash; Legt fest, dass eine verschachtelte "
+"Konversation gestartet werden soll, wenn eine lange laufende Konversation "
+"bereits im Gange ist."
+
+#. Tag: para
+#: Annotations.xml:483 Annotations.xml:550 Annotations.xml:574
+#, no-c-format
+msgid ""
+"<literal>flushMode</literal> &mdash; set the flush mode of any Seam-managed "
+"Hibernate sessions or JPA persistence contexts that are created during this "
+"conversation."
+msgstr ""
+"<literal>flushMode</literal> &mdash; Setzt den Räumungsmodus einer "
+"beliebigen Seam-gemanagten Hibernate Session oder eines beliebigen JPA "
+"Persistenzkontexts, die währned dieser Konversation erstellt werden."
+
+#. Tag: para
+#: Annotations.xml:488
+#, no-c-format
+msgid ""
+"<literal>pageflow</literal> &mdash; a process definition name of a jBPM "
+"process definition deployed via <literal>org.jboss.seam.core.jbpm."
+"pageflowDefinitions.</literal>"
+msgstr ""
+"<literal>pageflow</literal> &mdash; Der Name einer Prozessdefinition einer "
+"jBPM-Prozessdefinition, die via <literal>org.jboss.seam.core.jbpm."
+"pageflowDefinitions.</literal> deployt wird"
+
+#. Tag: literal
+#: Annotations.xml:498
+#, no-c-format
+msgid "<literal>@End</literal>"
+msgstr "<literal>@End</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:504
+#, no-c-format
+msgid "<programlisting>@End</programlisting>"
+msgstr "<programlisting>@End</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:505
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation ends when this method returns a "
+"non-null outcome without exception."
+msgstr ""
+"Legt fest, dass eine lange laufende Konversation endet, wenn diese Methode "
+"ein nicht-null Ergebnis ohne Ausnahme wiedergibt."
+
+#. Tag: programlisting
+#: Annotations.xml:510
+#, no-c-format
+msgid ""
+"@End(ifOutcome={\"success\", \"error\"}, evenIfException={SomeException."
+"class, OtherException.class})"
+msgstr ""
+"@End(ifOutcome={\"success\", \"error\"}, evenIfException={SomeException."
+"class, OtherException.class})"
+
+#. Tag: para
+#: Annotations.xml:511
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation ends when this action listener "
+"method returns with one of the given outcomes or throws one of the specified "
+"classes of exception."
+msgstr ""
+"Legt fest, dass eine lange laufende Konversation endet, wenn diese \"Action-"
+"Listener\" Methode eines der gegebenen Ergebnisse wiedergibt oder eine der "
+"festgelegten Ausnahmeklassen meldet."
+
+#. Tag: para
+#: Annotations.xml:518
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in the end of the current long-running conversation."
+msgstr ""
+"<literal>ifOutcome</literal> &mdash; Legt das JSF-Ergebnis oder die "
+"Ergebnisse fest, die in eine lange laufende Konversation beenden."
+
+#. Tag: para
+#: Annotations.xml:523 Annotations.xml:617
+#, no-c-format
+msgid ""
+"<literal>beforeRedirect</literal> &mdash; by default, the conversation will "
+"not actually be destroyed until after any redirect has occurred. Setting "
+"<literal>beforeRedirect=true</literal> specifies that the conversation "
+"should be destroyed at the end of the current request, and that the redirect "
+"will be processed in a new temporary conversation context."
+msgstr ""
+"<literal>beforeRedirect</literal> &mdash; Standardmäßig wird die "
+"Konversation nicht tatsächlich gelöscht, bis eine Umleitung erfolgt ist. Die "
+"Einstellung <literal>beforeRedirect=true</literal> legt fest, dass die "
+"Konversation am Ende der aktuellen Anfrage gelöscht werden sollte und die "
+"Umleitung in einem neuen, temporären Konversationskontext bearbeitet werden "
+"sollte."
+
+#. Tag: literal
+#: Annotations.xml:534
+#, no-c-format
+msgid "<literal>@StartTask</literal>"
+msgstr "<literal>@StartTask</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:536
+#, no-c-format
+msgid "<programlisting>@StartTask</programlisting>"
+msgstr "<programlisting>@StartTask</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:537
+#, no-c-format
+msgid ""
+"\"Starts\" a jBPM task. Specifies that a long-running conversation begins "
+"when this method returns a non-null outcome without exception. This "
+"conversation is associated with the jBPM task specified in the named request "
+"parameter. Within the context of this conversation, a business process "
+"context is also defined, for the business process instance of the task "
+"instance."
+msgstr ""
+"\"Startet\" eine jBPM-Task. Legt fest, dass eine lange laufende Konversation "
+"beginnt, wenn diese Methode ein nicht-null Ergebnis ohne AUsnahme "
+"wiedergibt. Diese Konversation wird mit der im genannten Anfragenparameter "
+"spezifizierten jBPM-Task assoziiert. Innerhalb des Kontexts dieser "
+"Konversation ist auch ein Kontext des Business Kontext für die Business-"
+"Prozess-Instanz der Task-Instanz definiert."
+
+#. Tag: para
+#: Annotations.xml:540
+#, no-c-format
+msgid ""
+"The jBPM <literal>TaskInstance</literal> will be available in a request "
+"context variable named <literal>taskInstance</literal>. The jPBM "
+"<literal>ProcessInstance</literal> will be available in a request context "
+"variable named <literal>processInstance</literal>. (Of course, these objects "
+"are available for injection via <literal>@In</literal>.)"
+msgstr ""
+"Die jBPM <literal>TaskInstance</literal> wird in einer Anfragen-"
+"Kontextvariablen mit Namen <literal>taskInstance</literal> verfügbar. Die "
+"jPBM <literal>ProcessInstance</literal> wird in einer Anfragen-"
+"Kontextvariablen mit Namen <literal>processInstance</literal>. (Natürlich "
+"sind diese Objekte via <literal>@In</literal> für die Einspeisung verfügbar)."
+
+#. Tag: para
+#: Annotations.xml:545 Annotations.xml:569
+#, no-c-format
+msgid ""
+"<literal>taskIdParameter</literal> &mdash; the name of a request parameter "
+"which holds the id of the task. Default to <literal>\"taskId\"</literal>, "
+"which is also the default used by the Seam <literal>taskList</literal> JSF "
+"component."
+msgstr ""
+"<literal>taskIdParameter</literal> &mdash; Der Name eines "
+"Anfragenparameters, der die id der Task enthält. Standardmäßig <literal>"
+"\"taskId\"</literal>, was auch der von der Seam <literal>taskList</literal> "
+"JSF-Komponente verwendete Standard ist."
+
+#. Tag: literal
+#: Annotations.xml:558
+#, no-c-format
+msgid "<literal>@BeginTask</literal>"
+msgstr "<literal>@BeginTask</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:560
+#, no-c-format
+msgid "<programlisting>@BeginTask</programlisting>"
+msgstr "<programlisting>@BeginTask</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:561
+#, no-c-format
+msgid ""
+"Resumes work on an incomplete jBPM task. Specifies that a long-running "
+"conversation begins when this method returns a non-null outcome without "
+"exception. This conversation is associated with the jBPM task specified in "
+"the named request parameter. Within the context of this conversation, a "
+"business process context is also defined, for the business process instance "
+"of the task instance."
+msgstr ""
+"Setzt die Arbeit an einer unbeendeten jBPM-Task fort. Legt fest, dass eine "
+"lange laufende Konversation beginnt, wenn diese Methode ein nicht-Null "
+"Ergebnis ohne Ausnahme wiedergibt. Diese Konversation wird mit der im "
+"genannten Anfragenparameter spezifizierten jBPM-Task assoziiert. Innerhalb "
+"des Kontexts dieser Konversation ist auch ein Kontext des Business Kontext "
+"für die Business-Prozess-Instanz der Task-Instanz definiert."
+
+#. Tag: para
+#: Annotations.xml:564
+#, no-c-format
+msgid ""
+"The jBPM <literal>TaskInstance</literal> will be available in a request "
+"context variable named <literal>taskInstance</literal>. The jPBM "
+"<literal>ProcessInstance</literal> will be available in a request context "
+"variable named <literal>processInstance</literal>."
+msgstr ""
+"Die jBPM <literal>TaskInstance</literal> ist innerhalb einer "
+"Anfragenkontextvariablen mit Namen <literal>taskInstance</literal> "
+"verfügbar. Die jPBM <literal>ProcessInstance</literal> ist innerhalb einer "
+"Anfragenkontextvariablen mit Namen <literal>processInstance</literal> "
+"verfügbar."
+
+#. Tag: literal
+#: Annotations.xml:582
+#, no-c-format
+msgid "<literal>@EndTask</literal>"
+msgstr "<literal>@EndTask</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:587
+#, no-c-format
+msgid "<programlisting>@EndTask</programlisting>"
+msgstr "<programlisting>@EndTask</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:588
+#, no-c-format
+msgid ""
+"\"Ends\" a jBPM task. Specifies that a long-running conversation ends when "
+"this method returns a non-null outcome, and that the current task is "
+"complete. Triggers a jBPM transition. The actual transition triggered will "
+"be the default transition unless the application has called "
+"<literal>Transition.setName()</literal> on the built-in component named "
+"<literal>transition</literal>."
+msgstr ""
+"\"Beendet\" eine jBPM-Task. Legt fest, dass eine lange laufende Konversation "
+"endet, wenn diese Methode ein nicht-Null Ergebnis wiedergibt und dass die "
+"aktuelle Task vollständig ist. Löst eine jBPM-Transition aus. Die "
+"tatsächlich ausgelöste Transition wird zur Standard-Transition außer die "
+"Anwendung hat <literal>Transition.setName()</literal> an der eingebauten "
+"Komponente namens <literal>transition</literal> aufgerufen."
+
+#. Tag: programlisting
+#: Annotations.xml:593
+#, no-c-format
+msgid "@EndTask(transition=\"transitionName\")"
+msgstr "@EndTask(transition=\"transitionName\")"
+
+#. Tag: para
+#: Annotations.xml:594
+#, no-c-format
+msgid "Triggers the given jBPM transition."
+msgstr "Löst die gegebene jBPM-Transition aus."
+
+#. Tag: programlisting
+#: Annotations.xml:599
+#, no-c-format
+msgid "@EndTask(ifOutcome={\"success\", \"continue\"})"
+msgstr "@EndTask(ifOutcome={\"success\", \"continue\"})"
+
+#. Tag: para
+#: Annotations.xml:600
+#, no-c-format
+msgid ""
+"Specifies that the task ends when this method returns one of the listed "
+"outcomes."
+msgstr ""
+"Legt fest, dass die Task endet wenn diese Methode eines der aufgeführten "
+"Ergebnisse wiedergibt."
+
+#. Tag: para
+#: Annotations.xml:607
+#, no-c-format
+msgid ""
+"<literal>transition</literal> &mdash; the name of the jBPM transition to be "
+"triggered when ending the task. Defaults to the default transition."
+msgstr ""
+"<literal>transition</literal> &mdash; Der Name der jBPM-Transition, die "
+"ausgelöst werden soll, wenn die Task beendet wird. Standardmäßig die "
+"Standard-Transition."
+
+#. Tag: para
+#: Annotations.xml:612
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in the end of the task."
+msgstr ""
+"<literal>ifOutcome</literal> &mdash; Legt das JSF-Ergebnis oder die "
+"Ergebnisse fest, die zum Ende der Task führen."
+
+#. Tag: literal
+#: Annotations.xml:628
+#, no-c-format
+msgid "@CreateProcess"
+msgstr "@CreateProcess"
+
+#. Tag: programlisting
+#: Annotations.xml:630
+#, no-c-format
+msgid "@CreateProcess(definition=\"process definition name\")"
+msgstr "@CreateProcess(definition=\"process definition name\")"
+
+#. Tag: para
+#: Annotations.xml:631
+#, no-c-format
+msgid ""
+"Creates a new jBPM process instance when the method returns a non-null "
+"outcome without exception. The <literal>ProcessInstance</literal> object "
+"will be available in a context variable named <literal>processInstance</"
+"literal>."
+msgstr ""
+"Erstellt eine neue jBPM-Prozessinstanz, wenn die Methode ein nicht-Null "
+"Ergebnis ohne Ausnahme wiedergibt. Das <literal>ProcessInstance</literal>-"
+"Objekt wird in einer Kontextvariablen mit Namen <literal>processInstance</"
+"literal> verfügbar."
+
+#. Tag: para
+#: Annotations.xml:636
+#, no-c-format
+msgid ""
+"<literal>definition</literal> &mdash; the name of the jBPM process "
+"definition deployed via <literal>org.jboss.seam.core.jbpm."
+"processDefinitions</literal>."
+msgstr ""
+"<literal>definition</literal> &mdash; Der Name der jBPM-Prozessdefinition "
+"die via <literal>org.jboss.seam.core.jbpm.processDefinitions</literal> "
+"deployt wird."
+
+#. Tag: literal
+#: Annotations.xml:644
+#, no-c-format
+msgid "@ResumeProcess"
+msgstr "@ResumeProcess"
+
+#. Tag: programlisting
+#: Annotations.xml:646
+#, no-c-format
+msgid "@ResumeProcess(processIdParameter=\"processId\")"
+msgstr "@ResumeProcess(processIdParameter=\"processId\")"
+
+#. Tag: para
+#: Annotations.xml:647
+#, no-c-format
+msgid ""
+"Re-enters the scope of an existing jBPM process instance when the method "
+"returns a non-null outcome without exception. The <literal>ProcessInstance</"
+"literal> object will be available in a context variable named "
+"<literal>processInstance</literal>."
+msgstr ""
+"Gibt den Bereich einer bestehenden jBPM-Prozessinstanz erneut ein, wenn die "
+"Methode ein nicht-Null Ergebnis ohne Ausnahme wiedergibt. Das "
+"<literal>ProcessInstance</literal>-Objekt wird in einer Kontextvariablen mit "
+"Namen <literal>processInstance</literal> verfügbar."
+
+#. Tag: para
+#: Annotations.xml:652
+#, no-c-format
+msgid ""
+"<literal>processIdParameter</literal> &mdash; the name a request parameter "
+"holding the process id. Default to <literal>\"processId\"</literal>."
+msgstr ""
+"<literal>processIdParameter</literal> &mdash; Der Name eines "
+"Anfragenparameter, der die Prozess-id enthält. Standardmäßig <literal>"
+"\"processId\"</literal>."
+
+#. Tag: title
+#: Annotations.xml:663
+#, no-c-format
+msgid "Annotations for transaction demarcation"
+msgstr "Annotationen für Transaktionsdemarkation"
+
+#. Tag: para
+#: Annotations.xml:664
+#, no-c-format
+msgid ""
+"Seam provides an annotation that lets you force a rollback of the JTA "
+"transaction for certain action listener outcomes."
+msgstr ""
+"Seam liefert eine Annotation durch die ein Rollback der JTA-Transaktion für "
+"bestimmte \"Action-Listener\"-Ergebnisse erzwungen werden kann."
+
+#. Tag: literal
+#: Annotations.xml:669
+#, no-c-format
+msgid "@Rollback"
+msgstr "@Rollback"
+
+#. Tag: programlisting
+#: Annotations.xml:671
+#, no-c-format
+msgid "@Rollback(ifOutcome={\"failure\", \"not-found\"})"
+msgstr "@Rollback(ifOutcome={\"failure\", \"not-found\"})"
+
+#. Tag: para
+#: Annotations.xml:672
+#, no-c-format
+msgid ""
+"If the outcome of the method matches any of the listed outcomes, or if no "
+"outcomes are listed, set the transaction to rollback only when the method "
+"completes."
+msgstr ""
+"Falls das Ergebnis der Methode mit einem der gelisteten Ergebnisse "
+"übereinstimmt, setzen Sie die Transaktion auf Rollback wenn die Methode "
+"abschließt."
+
+#. Tag: para
+#: Annotations.xml:677
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; the JSF outcomes that cause a "
+"transaction rollback (no outcomes is interpreted to mean any outcome)."
+msgstr ""
+"<literal>ifOutcome</literal> &mdash; Die JSF-Ergebnisse, die einen Rollback "
+"der Transaktion auslösen (kein Ergebnis wird als beliebiges Ergebnis "
+"interpretiert)."
+
+#. Tag: literal
+#: Annotations.xml:685
+#, no-c-format
+msgid "<literal>@Transactional</literal>"
+msgstr "<literal>@Transactional</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:687
+#, no-c-format
+msgid "<programlisting>@Transactional</programlisting>"
+msgstr "<programlisting>@Transactional</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:688
+#, no-c-format
+msgid ""
+"Specifies that a JavaBean component should have a similar transactional "
+"behavior to the default behavior of a session bean component. ie. method "
+"invocations should take place in a transaction, and if no transaction exists "
+"when the method is called, a transaction will be started just for that "
+"method. This annotation may be applied at either class or method level."
+msgstr ""
+"Legt fest, dass eine JavaBean Komponente ein ähnliches transaktionales "
+"Verhalten wie das Standardverhalten einer Session-Bean-Komponente zeigen "
+"sollte, d.h. Methodenaufrufe sollten in einer Transaktion erfolgen und wenn "
+"keine Transaktion existiert, wenn die Methode aufgerufen wird, so wird eine "
+"Transaktion nur für diese Methode gestartet. Diese Annotation kann sowohl "
+"auf Klassen- als auch auf Methoden-Ebene angewendet werden."
+
+#. Tag: para
+#: Annotations.xml:694
+#, no-c-format
+msgid ""
+"Seam applications usually use the standard EJB3 annotations for all other "
+"transaction demarcation needs."
+msgstr ""
+"Seam ANwendungen verwenden in der Regel die Standard EJB3-Annotationen für "
+"alle anderen Bedürfnisse der Transaktionsdemarkation."
+
+#. Tag: title
+#: Annotations.xml:700
+#, no-c-format
+msgid "Annotations for exceptions"
+msgstr "Annotationen für Ausnahmen"
+
+#. Tag: para
+#: Annotations.xml:701
+#, no-c-format
+msgid ""
+"These annotations let you specify how Seam should handle an exception that "
+"propagates out of a Seam component."
+msgstr ""
+"Diese Annotationen gestatten es Ihnen festzulegen, wie Seam mit einer "
+"Ausnahme umgehen soll, die sich aus einer Seam-Komponente heraus fortpflanzt."
+
+#. Tag: literal
+#: Annotations.xml:706
+#, no-c-format
+msgid "@Redirect"
+msgstr "@Redirect"
+
+#. Tag: programlisting
+#: Annotations.xml:708
+#, no-c-format
+msgid "@Redirect(viewId=\"error.jsp\")"
+msgstr "@Redirect(viewId=\"error.jsp\")"
+
+#. Tag: para
+#: Annotations.xml:709
+#, no-c-format
+msgid ""
+"Specifies that the annotated exception causes a browser redirect to a "
+"specified view id."
+msgstr ""
+"Legt fest, dass die annotierte Ausnahme eine Browser-Umleitung zu einer "
+"festgelegten Ansichts-id auslöst."
+
+#. Tag: para
+#: Annotations.xml:714
+#, no-c-format
+msgid "<literal>viewId</literal> &mdash; specifies the JSF view id to redirect to."
+msgstr ""
+"<literal>viewId</literal> &mdash; Legt die JSF-Ansichts-id fest, zu der "
+"umgeleitet werden soll."
+
+#. Tag: para
+#: Annotations.xml:719
+#, no-c-format
+msgid ""
+"<literal>message</literal> &mdash; a message to be displayed, default to the "
+"exception message."
+msgstr ""
+"<literal>message</literal> &mdash; Eine anzuzeigende Nachricht, Standard zur "
+"Ausnahmemeldung."
+
+#. Tag: para
+#: Annotations.xml:724 Annotations.xml:750
+#, no-c-format
+msgid ""
+"<literal>end</literal> &mdash; specifies that the long-running conversation "
+"should end, default to <literal>false</literal>."
+msgstr ""
+"<literal>end</literal> &mdash; Legt fest, dass die lange laufende "
+"Konversation enden soll, standardmäßig <literal>false</literal>."
+
+#. Tag: literal
+#: Annotations.xml:732
+#, no-c-format
+msgid "@HttpError"
+msgstr "@HttpError"
+
+#. Tag: programlisting
+#: Annotations.xml:734
+#, no-c-format
+msgid "@HttpError(errorCode=404)"
+msgstr "@HttpError(errorCode=404)"
+
+#. Tag: para
+#: Annotations.xml:735
+#, no-c-format
+msgid "Specifies that the annotated exception causes a HTTP error to be sent."
+msgstr ""
+"Legt fest, dass die annotierte Ausnahme das Versenden eines HTTP-Fehlers "
+"auslöst."
+
+#. Tag: para
+#: Annotations.xml:740
+#, no-c-format
+msgid ""
+"<literal>errorCode</literal> &mdash; the HTTP error code, default to "
+"<literal>500</literal>."
+msgstr ""
+"<literal>errorCode</literal> &mdash; Der HTTP-Fehlercode, standardmäßig "
+"<literal>500</literal>."
+
+#. Tag: para
+#: Annotations.xml:745
+#, no-c-format
+msgid ""
+"<literal>message</literal> &mdash; a message to be sent with the HTTP error, "
+"default to the exception message."
+msgstr ""
+"<literal>message</literal> &mdash; Eine mit dem HTTP-Fehler zu versendende "
+"Nachricht, STandard zur Ausnahmemeldung."
+
+#. Tag: title
+#: Annotations.xml:761
+#, no-c-format
+msgid "Annotations for validation"
+msgstr "Annotationen für die Validierung"
+
+#. Tag: para
+#: Annotations.xml:762
+#, no-c-format
+msgid ""
+"This annotation triggers Hibernate Validator. It appears on a method of a "
+"Seam component, almost always an action listener method."
+msgstr ""
+"Diese Annotation löst den Hibernate Validator aus. Sie erscheint an der "
+"Methode einer Seam-Komponente, fast immer eine \"Action-Listener\"-Methode."
+
+#. Tag: para
+#: Annotations.xml:765
+#, no-c-format
+msgid ""
+"Please refer to the documentation for the Hibernate Annotations package for "
+"information about the annotations defined by the Hibernate Validator "
+"framework."
+msgstr ""
+"Informationen zu den durch das Hibernate Validator Framework definierten "
+"Annotationen finden Sie im Hibernate Annotationen Paket."
+
+#. Tag: emphasis
+#: Annotations.xml:769
+#, no-c-format
+msgid ""
+"Note that use of <literal>@IfInvalid</literal> is now semi-deprecated and "
+"<literal>&lt;s:validateAll&gt;</literal> is now preferred."
+msgstr ""
+"Beachten Sie das der Gebrauch von <literal>@IfInvalid</literal> nun als "
+"beinahe veraltet gilt und <literal>&lt;s:validateAll&gt;</literal> jetzt "
+"bevorzugt wird."
+
+#. Tag: literal
+#: Annotations.xml:773
+#, no-c-format
+msgid "@IfInvalid"
+msgstr "@IfInvalid"
+
+#. Tag: programlisting
+#: Annotations.xml:775
+#, no-c-format
+msgid "@IfInvalid(outcome=\"invalid\", refreshEntities=true)"
+msgstr "@IfInvalid(outcome=\"invalid\", refreshEntities=true)"
+
+#. Tag: para
+#: Annotations.xml:776
+#, no-c-format
+msgid ""
+"Specifies that Hibernate Validator should validate the component before the "
+"method is invoked. If the invocation fails, the specified outcome will be "
+"returned, and the validation failure messages returned by Hibernate "
+"Validator will be added to the <literal>FacesContext</literal>. Otherwise, "
+"the invocation will proceed."
+msgstr ""
+"Legt fest, dass Hibernate Validator die Komponente validieren sollte, ehe "
+"die Methode aufgerufen wird. Schlägt der AUfruf fehl, so wird das "
+"spzifizierte Ergebnis wiedergegeben und die durch Hibernate Validator "
+"wiedergegebenen Validierungsfehlermeldungen werden dem "
+"<literal>FacesContext</literal> hinzugefügt. Andernfalls wird der Aufruf "
+"fortgesetzt."
+
+#. Tag: para
+#: Annotations.xml:781
+#, no-c-format
+msgid "<literal>outcome</literal> &mdash; the JSF outcome when validation fails."
+msgstr ""
+"<literal>outcome</literal> &mdash; Das JSF-Ergebnis, wenn die Validierung "
+"fehlschlägt."
+
+#. Tag: para
+#: Annotations.xml:786
+#, no-c-format
+msgid ""
+"<literal>refreshEntities</literal> &mdash; specifies that any invalid entity "
+"in the managed state should be refreshed from the database when validation "
+"fails. Default to <literal>false</literal>. (Useful with extended "
+"persistence contexts.)"
+msgstr ""
+"<literal>refreshEntities</literal> &mdash; Legt fest, dass jede ungültige "
+"Entity im gemanagten Status aus der Datenbank neu geladen werden soll, wenn "
+"die Validierung fehlschlägt. Standardmäßig <literal>false</literal>. "
+"(Nützlich bei erweiterten Persistenzkontexten)."
+
+#. Tag: title
+#: Annotations.xml:797
+#, no-c-format
+msgid "Annotations for Seam Remoting"
+msgstr "Annotationen für das Seam-Remoting"
+
+#. Tag: para
+#: Annotations.xml:798
+#, no-c-format
+msgid ""
+"Seam Remoting requires that the local interface of a session bean be "
+"annotated with the following annotation:"
+msgstr ""
+"Seam Remoting macht es erforderlich, dass das lokale Interface eines Session-"
+"Beans mit folgender Annotation annotiert wird:"
+
+#. Tag: literal
+#: Annotations.xml:803
+#, no-c-format
+msgid "@WebRemote"
+msgstr "@WebRemote"
+
+#. Tag: programlisting
+#: Annotations.xml:805
+#, no-c-format
+msgid "@WebRemote(exclude=\"path.to.exclude\")"
+msgstr "@WebRemote(exclude=\"path.to.exclude\")"
+
+#. Tag: para
+#: Annotations.xml:806
+#, no-c-format
+msgid ""
+"Indicates that the annotated method may be called from client-side "
+"JavaScript. The <literal>exclude</literal> property is optional and allows "
+"objects to be excluded from the result&#39;s object graph (see the Remoting "
+"chapter for more details)."
+msgstr ""
+"Zeigt an, dass die annotierte Methode vom JavaScript auf Client-Seite "
+"aufgerufen werden kann. Die <literal>exclude</literal>-Property ist optional und gestattet den Ausschluss von Objekten aus dem Objektdiagramm (weitere Informationen finden Sie im Kapitel zum \"Remoting\")."
+
+#. Tag: title
+#: Annotations.xml:815
+#, no-c-format
+msgid "Annotations for Seam interceptors"
+msgstr "Annotationen für Seam-Interzeptoren"
+
+#. Tag: para
+#: Annotations.xml:816
+#, no-c-format
+msgid "The following annotations appear on Seam interceptor classes."
+msgstr "Die folgenden Annotationen erscheinen an Seam-Interzeptorklassen."
+
+#. Tag: para
+#: Annotations.xml:819
+#, no-c-format
+msgid ""
+"Please refer to the documentation for the EJB 3.0 specification for "
+"information about the annotations required for EJB interceptor definition."
+msgstr ""
+"Informationen zu den für die EJB-Interzeptor-Definition nötigen Annotationen "
+"finden Sie in der Dokumentation für die EJB 3.0-Spezifikation."
+
+#. Tag: literal
+#: Annotations.xml:824
+#, no-c-format
+msgid "@Interceptor"
+msgstr "@Interceptor"
+
+#. Tag: programlisting
+#: Annotations.xml:829
+#, no-c-format
+msgid "@Interceptor(stateless=true)"
+msgstr "@Interceptor(stateless=true)"
+
+#. Tag: para
+#: Annotations.xml:830
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is stateless and Seam may optimize "
+"replication."
+msgstr ""
+"Legt fest, dass dieser Interzeptor \"stateless\" ist und Seam Replikation "
+"optimieren kann."
+
+#. Tag: programlisting
+#: Annotations.xml:835
+#, no-c-format
+msgid "@Interceptor(type=CLIENT)"
+msgstr "@Interceptor(type=CLIENT)"
+
+#. Tag: para
+#: Annotations.xml:836
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is a \"client-side\" interceptor that is "
+"called before the EJB container."
+msgstr ""
+"Legt fest, dass es sich bei diesem Interzeptor um einen \"client-side\" "
+"Interzeptor handelt, der vor dem EJB-Container aufgerufen wird."
+
+#. Tag: programlisting
+#: Annotations.xml:841
+#, no-c-format
+msgid "@Interceptor(around={SomeInterceptor.class, OtherInterceptor.class})"
+msgstr "@Interceptor(around={SomeInterceptor.class, OtherInterceptor.class})"
+
+#. Tag: para
+#: Annotations.xml:842
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is positioned higher in the stack than the "
+"given interceptors."
+msgstr ""
+"Legt fest, dass dieser Interzeptor höher im Stapel positioniert wird als die "
+"gegebenen Interzeptoren."
+
+#. Tag: programlisting
+#: Annotations.xml:847
+#, no-c-format
+msgid "@Interceptor(within={SomeInterceptor.class, OtherInterceptor.class})"
+msgstr "@Interceptor(within={SomeInterceptor.class, OtherInterceptor.class})"
+
+#. Tag: para
+#: Annotations.xml:848
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is positioned deeper in the stack than the "
+"given interceptors."
+msgstr ""
+"Legt fest, dass dieser Interzeptor tiefer im Stapel positioniert wird als "
+"die gegebenen Interzeptoren."
+
+#. Tag: title
+#: Annotations.xml:860
+#, no-c-format
+msgid "Annotations for asynchronicity"
+msgstr "Annotationen für Asynchronizität"
+
+#. Tag: para
+#: Annotations.xml:861
+#, no-c-format
+msgid ""
+"The following annotations are used to declare an asynchronous method, for "
+"example:"
+msgstr ""
+"Die folgenden Annotationen werden verwendet, um eine asynchrone Methode zu "
+"deklarieren, zum Beispiel:"
+
+#. Tag: programlisting
+#: Annotations.xml:864
+#, no-c-format
+msgid ""
+"@Asynchronous public void scheduleAlert(Alert alert, @Expiration Date date) "
+"{ ... }"
+msgstr ""
+"@Asynchronous public void scheduleAlert(Alert alert, @Expiration Date date) "
+"{ ... }"
+
+#. Tag: programlisting
+#: Annotations.xml:865
+#, no-c-format
+msgid ""
+"@Asynchronous public Timer scheduleAlerts(Alert alert, @Expiration Date "
+"date, \n"
+"@IntervalDuration long interval) { ... }"
+msgstr ""
+"@Asynchronous public Timer scheduleAlerts(Alert alert, @Expiration Date "
+"date, \n"
+"@IntervalDuration long interval) { ... }"
+
+#. Tag: literal
+#: Annotations.xml:868
+#, no-c-format
+msgid "<literal>@Asynchronous</literal>"
+msgstr "<literal>@Asynchronous</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:870
+#, no-c-format
+msgid "<programlisting>@Asynchronous</programlisting>"
+msgstr "<programlisting>@Asynchronous</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:871
+#, no-c-format
+msgid "Specifies that the method call is processed asynchronously."
+msgstr "Legt fest, dass der Methodenaufruf asynchron verarbeit."
+
+#. Tag: literal
+#: Annotations.xml:877
+#, no-c-format
+msgid "<literal>@Duration</literal>"
+msgstr "<literal>@Duration</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:879
+#, no-c-format
+msgid "<programlisting>@Duration</programlisting>"
+msgstr "<programlisting>@Duration</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:880
+#, no-c-format
+msgid ""
+"Specifies that a parameter of the asynchronous call is the duration before "
+"the call is processed (or first processed for recurring calls)."
+msgstr ""
+"Legt fest, dass ein Parameter des asynchronen Aufrufs die Dauer ist, ehe der "
+"Aufruf bearbeitet wird (oder für wiederholte Aufrufe zuerst bearbeitet wird)."
+
+#. Tag: literal
+#: Annotations.xml:886
+#, no-c-format
+msgid "<literal>@Expiration</literal>"
+msgstr "<literal>@Expiration</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:888
+#, no-c-format
+msgid "<programlisting>@Expiration</programlisting>"
+msgstr "<programlisting>@Expiration</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:889
+#, no-c-format
+msgid ""
+"Specifies that a parameter of the asynchronous call is the datetime at which "
+"the call is processed (or first processed for recurring calls)."
+msgstr ""
+"Legt fest, dass ein Parameter des asynchronen Aufrufs die \"Datetime\" ist, "
+"zu der der Aufruf bearbeitet wird (oder für wiederholte Aufrufe zuerst "
+"bearbeitet wird)."
+
+#. Tag: literal
+#: Annotations.xml:895
+#, no-c-format
+msgid "<literal>@IntervalDuration</literal>"
+msgstr "<literal>@IntervalDuration</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:897
+#, no-c-format
+msgid "<programlisting>@IntervalDuration</programlisting>"
+msgstr "<programlisting>@IntervalDuration</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:898
+#, no-c-format
+msgid ""
+"Specifies that an asynchronous method call recurs, and that the annotationed "
+"parameter is duration between recurrences."
+msgstr ""
+"Legt fest, dass ein asynchroner Methodenaufruf sich wiederholt und der "
+"annotierte Parameter die Dauer zwischen den Wiederholungen ist."
+
+#. Tag: title
+#: Annotations.xml:907
+#, no-c-format
+msgid "Annotations for use with JSF <literal>dataTable</literal>"
+msgstr "Annotationen für die Verwendung mit JSF <literal>dataTable</literal>"
+
+#. Tag: para
+#: Annotations.xml:908
+#, no-c-format
+msgid ""
+"The following annotations make it easy to implement clickable lists backed "
+"by a stateful session bean. They appear on attributes."
+msgstr ""
+"Die folgenden Annotationen machen es einfach klickbare Listen zu "
+"implementieren, die durch ein \"stateful\" Session-Bean gestützt werden. Sie "
+"erscheinen an Attributen."
+
+#. Tag: literal
+#: Annotations.xml:913
+#, no-c-format
+msgid "@DataModel"
+msgstr "@DataModel"
+
+#. Tag: programlisting
+#: Annotations.xml:915
+#, no-c-format
+msgid "@DataModel(\"variableName\")"
+msgstr "@DataModel(\"variableName\")"
+
+#. Tag: para
+#: Annotations.xml:916
+#, no-c-format
+msgid ""
+"Exposes an attribute of type <literal>List</literal>, <literal>Map</"
+"literal>, <literal>Set</literal> or <literal>Object[]</literal> as a JSF "
+"<literal>DataModel</literal> into the scope of the owning component (or the "
+"<literal>EVENT</literal> scope if the owning component is "
+"<literal>STATELESS</literal>). In the case of <literal>Map</literal>, each "
+"row of the <literal>DataModel</literal> is a <literal>Map.Entry</literal>."
+msgstr ""
+"Legt ein Attribut des Typs <literal>List</literal>, <literal>Map</literal>, "
+"<literal>Set</literal> oder <literal>Object[]</literal> als ein JSF "
+"<literal>DataModel</literal> im Bereich der besitzenden Komponente dar (oder "
+"dem <literal>EVENT</literal>-Bereich wenn es sich bei der besitzenden "
+"Komponente um <literal>STATELESS</literal> handelt). Im Falle von "
+"<literal>Map</literal>, ist jede Reihe des <literal>DataModel</literal> ein "
+"<literal>Map.Entry</literal>."
+
+#. Tag: para
+#: Annotations.xml:921
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; name of the conversation context variable. "
+"Default to the attribute name."
+msgstr ""
+"<literal>value</literal> &mdash; Name der Konversationskontextvariablen. "
+"Standardmäßig der Attributname."
+
+#. Tag: para
+#: Annotations.xml:926
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; if <literal>scope=ScopeType.PAGE</literal> "
+"is explicitly specified, the <literal>DataModel</literal> will be kept in "
+"the <literal>PAGE</literal> context."
+msgstr ""
+"<literal>scope</literal> &mdash; Wenn <literal>scope=ScopeType.PAGE</"
+"literal> explizit festgelegt ist, wird das <literal>DataModel</literal> im "
+"<literal>PAGE</literal>-Kontext aufbewahrt."
+
+#. Tag: literal
+#: Annotations.xml:934
+#, no-c-format
+msgid "<literal>@DataModelSelection</literal>"
+msgstr "<literal>@DataModelSelection</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:936
+#, no-c-format
+msgid "<programlisting>@DataModelSelection</programlisting>"
+msgstr "<programlisting>@DataModelSelection</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:937
+#, no-c-format
+msgid ""
+"Injects the selected value from the JSF <literal>DataModel</literal> (this "
+"is the element of the underlying collection, or the map value)."
+msgstr ""
+"Speist den ausgewählten Wert vom JSF <literal>DataModel</literal> ein (dies "
+"ist das Element der zugrundeliegenden Collection oder der Map-Wert)."
+
+#. Tag: para
+#: Annotations.xml:942 Annotations.xml:958
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; name of the conversation context variable. "
+"Not needed if there is exactly one <literal>@DataModel</literal> in the "
+"component."
+msgstr ""
+"<literal>value</literal> &mdash; Name der Konversationskontextvariablen. "
+"Wird nicht benötigt, wenn genau ein <literal>@DataModel</literal> in der "
+"Komponente vorhanden ist."
+
+#. Tag: literal
+#: Annotations.xml:950
+#, no-c-format
+msgid "<literal>@DataModelSelectionIndex</literal>"
+msgstr "<literal>@DataModelSelectionIndex</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:952
+#, no-c-format
+msgid "<programlisting>@DataModelSelectionIndex</programlisting>"
+msgstr "<programlisting>@DataModelSelectionIndex</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:953
+#, no-c-format
+msgid ""
+"Exposes the selection index of the JSF <literal>DataModel</literal> as an "
+"attribute of the component (this is the row number of the underlying "
+"collection, or the map key)."
+msgstr ""
+"Legt den Auswahlindex des JSF <literal>DataModel</literal> als ein Attribut "
+"der Komponente dar (dies ist die Reihennummer der zugrundeliegenden "
+"Collection oder der Map-Schlüssel)."
+
+#. Tag: title
+#: Annotations.xml:969
+#, no-c-format
+msgid "Meta-annotations for databinding"
+msgstr "Meta-Annotationen für das \"Databinding\""
+
+#. Tag: para
+#: Annotations.xml:970
+#, no-c-format
+msgid ""
+"These meta-annotations make it possible to implement similar functionality "
+"to <literal>@DataModel</literal> and <literal>@DataModelSelection</literal> "
+"for other datastructures apart from lists."
+msgstr ""
+"Diese Meta-Annotationen machen es möglich, ähnliche Funktionalitäten bei "
+"<literal>@DataModel</literal> und <literal>@DataModelSelection</literal> für "
+"andere Datenstrukturen neben Listen zu implementieren."
+
+#. Tag: literal
+#: Annotations.xml:975
+#, no-c-format
+msgid "@DataBinderClass"
+msgstr "@DataBinderClass"
+
+#. Tag: programlisting
+#: Annotations.xml:977
+#, no-c-format
+msgid "@DataBinderClass(DataModelBinder.class)"
+msgstr "@DataBinderClass(DataModelBinder.class)"
+
+#. Tag: para
+#: Annotations.xml:978
+#, no-c-format
+msgid "Specifies that an annotation is a databinding annotation."
+msgstr ""
+"Legt fest, dass es sich bei einer Annotation um eine \"Databinding\"-"
+"Annotation handelt."
+
+#. Tag: literal
+#: Annotations.xml:984
+#, no-c-format
+msgid "@DataSelectorClass"
+msgstr "@DataSelectorClass"
+
+#. Tag: programlisting
+#: Annotations.xml:986
+#, no-c-format
+msgid "@DataSelectorClass(DataModelSelector.class)"
+msgstr "@DataSelectorClass(DataModelSelector.class)"
+
+#. Tag: para
+#: Annotations.xml:987
+#, no-c-format
+msgid "Specifies that an annotation is a dataselection annotation."
+msgstr ""
+"Legt fest, dass es sich bei einer Annotation um eine \"Dataselection\"-"
+"Annotation handelt."
+
+#. Tag: title
+#: Annotations.xml:996
+#, no-c-format
+msgid "Annotations for packaging"
+msgstr "Annotationen zur Verpackung"
+
+#. Tag: para
+#: Annotations.xml:997
+#, no-c-format
+msgid ""
+"This annotation provides a mechanism for declaring information about a set "
+"of components that are packaged together. It can be applied to any Java "
+"package."
+msgstr ""
+"Diese Annotation bietet einen Mechanismus zur Deklaration von Informationen "
+"zu einem Satz von gemeinsam verpackten Komponenten. Sie kann an einem "
+"beliebigen Java-Paket angewendet werden."
+
+#. Tag: literal
+#: Annotations.xml:1002
+#, no-c-format
+msgid "@Namespace"
+msgstr "@Namespace"
+
+#. Tag: programlisting
+#: Annotations.xml:1004
+#, no-c-format
+msgid "@Namespace(value=\"http://jboss.com/products/seam/example/seampay\")"
+msgstr "@Namespace(value=\"http://jboss.com/products/seam/example/seampay\")"
+
+#. Tag: para
+#: Annotations.xml:1005
+#, no-c-format
+msgid ""
+"Specifies that components in the current package are associated with the "
+"given namespace. The declared namespace can be used as an XML namespace in a "
+"<literal>components.xml</literal> file to simplify application configuration."
+msgstr ""
+"Legt fest, dass Komponenten im aktuellen Paket mit dem gegebenen Namespace "
+"assoziiert werden. Der deklarierte Namespace kann als ein XML-Namespace in "
+"einer <literal>components.xml</literal>-Datei verwendet werden, um die "
+"Anwendungskonfiguration zu vereinfachen."
+
+#. Tag: programlisting
+#: Annotations.xml:1008
+#, no-c-format
+msgid ""
+"@Namespace(value=\"http://jboss.com/products/seam/core\", prefix=\"org.jboss."
+"seam.core\")"
+msgstr ""
+"@Namespace(value=\"http://jboss.com/products/seam/core\", prefix=\"org.jboss."
+"seam.core\")"
+
+#. Tag: para
+#: Annotations.xml:1009
+#, no-c-format
+msgid ""
+"Specifies a namespace to associate with a given package. Additionally, it "
+"specifies a component name prefix to be applied to component names specified "
+"in the XML file. For example, an XML element named <literal>microcontainer</"
+"literal> that is associated with this namespace would be understood to "
+"actually refere to a component named <literal>org.jboss.seam.core."
+"microcontainer</literal>."
+msgstr ""
+"Legt einen Namespace fest, mit dem ein bestimmtes Paket assoziiert wird. "
+"Außerdem legt es einen Präfix für den Komponentenname fest, der bei den in "
+"der XML-Datei festgelegten Komponentennamen angewendet wird. Ein XML-Element "
+"mit dem Namen <literal>microcontainer</literal>, das zum Beispiel mit diesem "
+"Namespace assoziiert wird, würde auf eine Komponente mit Namen <literal>org."
+"jboss.seam.core.microcontainer</literal> verweisen."
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Book_Info.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Book_Info.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Book_Info.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,45 @@
+# translation of Book_Info.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Jasna Dimanoski <jdimanos at redhat.com>, 2007, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Book_Info\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-02-04 23:29+0000\n"
+"PO-Revision-Date: 2008-03-25 17:35+1000\n"
+"Last-Translator: Jasna Dimanoski <jdimanos at redhat.com>\n"
+"Language-Team:  <de at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Book_Info.xml:5
+#, no-c-format
+msgid "Seam Reference Guide"
+msgstr "Seam Referenzhandbuch"
+
+#. Tag: subtitle
+#: Book_Info.xml:6
+#, no-c-format
+msgid "JBoss Enterprise Application Platform"
+msgstr "JBoss Enterprise Application Platform"
+
+#. Tag: para
+#: Book_Info.xml:11
+#, no-c-format
+msgid ""
+"This book is a Reference Guide to Seam 1.2 for JBoss Enterprise Application "
+"Platform 4.3."
+msgstr "Bei diesem Buch handelt es sich um ein Referenzhandbuch zu Seam 1.2 für JBoss Enterprise Application Platform 4.3."
+
+#. Tag: holder
+#: Book_Info.xml:22
+#, no-c-format
+msgid "&HOLDER;"
+msgstr "&HOLDER;"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Cache.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Cache.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Cache.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,432 @@
+# translation of Cache.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Jasna Dimanoski <jdimanos at redhat.com>, 2007, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Cache\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2008-04-05 09:48+1000\n"
+"Last-Translator: Jasna Dimanoski <jdimanos at redhat.com>\n"
+"Language-Team:  <de at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Cache.xml:6
+#, no-c-format
+msgid "Caching"
+msgstr "Caching"
+
+#. Tag: para
+#: Cache.xml:7
+#, no-c-format
+msgid ""
+"In almost all enterprise applications, the database is the primary "
+"bottleneck, and the least scalable tier of the runtime environment. People "
+"from a PHP/Ruby environment will try to tell you that so-called \"shared "
+"nothing\" architectures scale well. While that may be literally true, I "
+"don&#39;t know of many interesting multi-user applications which can be "
+"implemented with no sharing of resources between different nodes of the "
+"cluster. What these silly people are really thinking of is a \"share nothing "
+"except for the database\" architecture. Of course, sharing the database is "
+"the primary problem with scaling a multi-user application&mdash;so the claim "
+"that this architecture is highly scalable is absurd, and tells you a lot "
+"about the kind of applications that these folks spend most of their time "
+"working on."
+msgstr ""
+"In nahezu allen Unternehmensanwendungen ist die Datenbank der primäre Flaschenhals und der am wenigsten skalierbare Tier der Runtime-Umgebung. Personen, die sonst mit einer PHP/Ruby-Umgebung arbeiten, werden Ihnen sagen, dass so genannte \"shared nothing\"-Architekturen, in denen nichts geteilt wird, gut skalieren. Das mag zwar sein aber ich kenne nicht viele interessante Multi-User Anwendungen, die implementiert werden können, ohne "
+"dass Ressourcen zwischen den verschiedenen Nodes des Clusters geteilt "
+"werden. Was eigentlich gemeint ist, ist, dass außer der Datenbank-"
+"Architektur nichts geteilt wird. Natürlich ist das Teilen der Datenbank das "
+"primäre Problem bei der Skalierung einer Multi-User Anwendung&mdash; daher ist es unrichtig von einer hohen Skalierbarkeit dieser Architektur zu "
+"sprechen."
+
+#. Tag: para
+#: Cache.xml:10
+#, no-c-format
+msgid ""
+"Almost anything we can possibly do to share the database <emphasis>less "
+"often</emphasis> is worth doing."
+msgstr ""
+"Fast alles, was dazu führt, dass wir die Datenbank <emphasis>weniger oft</"
+"emphasis> freigeben müssen, lohnt sich."
+
+#. Tag: para
+#: Cache.xml:13
+#, no-c-format
+msgid ""
+"This calls for a cache. Well, not just one cache. A well designed Seam "
+"application will feature a rich, multi-layered caching strategy that impacts "
+"every layer of the application:"
+msgstr ""
+"Hier wird ein Cache benötigt. Nicht irgendein Cache, sondern eine "
+"ausgeklügelte Seam Anwendung mit einer umfassenden, vielschichtigen Caching-"
+"Strategie, die jede Schicht der Anwendung beeinflusst: "
+
+#. Tag: para
+#: Cache.xml:18
+#, no-c-format
+msgid ""
+"The database, of course, has its own cache. This is super-important, but "
+"can&#39;t scale like a cache in the application tier."
+msgstr ""
+"Die Datenbank besitzt natürlich Ihr eigenes Cache. Das ist sehr wichtig, "
+"unterscheidet sich jedoch hinsichtlich Skalierbarkeit von einem Cache im Anwendungs-Tier."
+
+#. Tag: para
+#: Cache.xml:23
+#, no-c-format
+msgid ""
+"Your ORM solution (Hibernate, or some other JPA implementation) has a second-"
+"level cache of data from the database. This is a very powerful capability, "
+"but is often misused. In a clustered environment, keeping the data in the "
+"cache transactionally consistent across the whole cluster, and with the "
+"database, is quite expensive. It makes most sense for data which is shared "
+"between many users, and is updated rarely. In traditional stateless "
+"architectures, people often try to use the second-level cache for "
+"conversational state. This is always bad, and is especially wrong in Seam."
+msgstr ""
+"Ihre ORM-Solution (Hibernate oder eine andere JPA-Implementierung) besitzt "
+"ein Cache der zweiten Ebene an Daten aus der Datenbank. Dies ist eine sehr "
+"leistungsfähige Möglichkeit, wird jedoch oftmals missbraucht. In einer "
+"geclusterten Umgebung ist es sehr aufwendig, die Daten im Cache "
+"transaktional über den gesamten Cluster und der gesamten Datenbank "
+"konsistent zu halten. Es ist am sinnvollsten bei Daten die unter vielen "
+"Benutzern geteilt werden und selten aktualisiert werden. In traditionellen "
+"\"stateless\" Architekturen wird häufig versucht das Cache der zweiten Ebene "
+"für den konversationalen Status zu verwenden. Das ist nie gut, aber "
+"besonders schlecht in Seam."
+
+#. Tag: para
+#: Cache.xml:28
+#, no-c-format
+msgid ""
+"The Seam conversation context is a cache of conversational state. Components "
+"you put into the conversation context can hold and cache state relating to "
+"the current user interaction."
+msgstr ""
+"Beim Seam Konversationskontext handelt es sich um ein Cache des "
+"konversationalen Status'. Komponenten, die Sie dem Konversationskontext "
+"hinzufügen können den Status der aktuellen Benutzer-Interaktion halten und "
+"cachen. "
+
+#. Tag: para
+#: Cache.xml:33
+#, no-c-format
+msgid ""
+"In particular, the Seam-managed persistence context (or an extended EJB "
+"container-managed persistence context associated with a conversation-scoped "
+"stateful session bean) acts as a cache of data that has been read in the "
+"current conversation. This cache tends to have a pretty high hitrate! Seam "
+"optimizes the replication of Seam-managed persistence contexts in a "
+"clustered environment, and there is no requirement for transactional "
+"consistency with the database (optimistic locking is sufficient) so you "
+"don&#39;t need to worry too much about the performance implications of this "
+"cache, unless you read thousands of objects into a single persistence "
+"context."
+msgstr ""
+"Insbesondere agiert der durch Seam gemanagte Persistenzkontext (oder ein erweiterter EJB Container-gemanagter und mit einem konversationsbegrenzten \"Stateful Session Bean\" assoziierter Persistenzkontext) als ein Daten-Cache, das in der aktuellen Konversation gelesen wurde. Dieses Cache hat in der Regel eine ziemlich hohe Trefferquote! Seam optimiert die Replikation von durch Seam gemanagten Persistenzkontexten in einer geclusterten Umgebung "
+"und es besteht kein Bedarf nach transaktionaler Konsistenz mit der Datenbank (optimistisches Sperren ist ausreichend), so dass Sie sich nicht allzu sehr um die Leistungsimplikationen dieses Cache sorgen müssen - außer Sie lesen tausende von Objekten in einen einzelnen Persistenzkontext."
+
+#. Tag: para
+#: Cache.xml:38
+#, no-c-format
+msgid ""
+"The application can cache non-transactional state in the Seam application "
+"context. State kept in the application context is of course not visible to "
+"other nodes in the cluster."
+msgstr ""
+"Die Anwendung kann nicht-transaktionalen Status im Seam Applikationskontext "
+"cachen. Der im Applikationskontext aufbewahrte Status ist für die anderen "
+"Nodes des Clusters natürlich nicht sichtbar."
+
+#. Tag: para
+#: Cache.xml:43
+#, no-c-format
+msgid ""
+"The application can cache transactional state using the Seam "
+"<literal>pojoCache</literal> component, which integrates JBossCache into the "
+"Seam environment. This state will be visible to other nodes if you run JBoss "
+"cache in a clustered mode."
+msgstr ""
+"Die Anwendung kann den transaktionalen Status unter Verwendung der Seam "
+"<literal>pojoCache</literal>-Komponente cachen, die JBossCache in die Seam "
+"Umgebung integriert. Dieser Status ist für andere Nodes sichtbar, wenn Sie "
+"JBoss Cache in geclustertem Modus ausführen."
+
+#. Tag: para
+#: Cache.xml:48
+#, no-c-format
+msgid ""
+"Finally, Seam lets you cache rendered fragments of a JSF page. Unlike the "
+"ORM second-level cache, this cache is not automatically invalidated when "
+"data changes, so you need to write application code to perform explicit "
+"invalidation, or set appropriate expiration policies."
+msgstr ""
+"Schließlich lässt Seam Sie gerenderte Fragmente einer JSF-Seite cachen. Im "
+"Unterschied zum ORM Chache der zweiten Ebene, wird dieses Cache nicht "
+"automatisch außer Kraft gesetzt wenn Daten sich ändern, so dass Sie einen "
+"Anwendungscode schreiben müssen, der die explizite Invalidierung durchführt "
+"oder aber entsprechende Ablaufrichtlinien setzen."
+
+#. Tag: para
+#: Cache.xml:53
+#, no-c-format
+msgid ""
+"For more information about the second-level cache, you&#39;ll need to refer "
+"to the documentation of your ORM solution, since this is an extremely "
+"complex topic. In this section we&#39;ll discuss the use of JBossCache "
+"directly, via the <literal>pojoCache</literal> component, or as the page "
+"fragment cache, via the <literal>&lt;s:cache&gt;</literal> control."
+msgstr ""
+"Weitere Informationen zum Cache der zweiten Ebene finden Sie in der "
+"Dokumentation Ihrer ORM-Lösung, da es sich dabei um ein sehr komplexes Thema handelt. In diesem Abschnitt behandeln wir die Verwendung von JBossCache direkt, via der <literal>pojoCache</literal>-Komponente oder als Seitenfragment-Cache via der <literal>&lt;s:cache&gt;</literal>-Steuerung."
+
+#. Tag: title
+#: Cache.xml:57
+#, no-c-format
+msgid "Using JBossCache in Seam"
+msgstr "Verwendung von JBossCache in Seam"
+
+#. Tag: para
+#: Cache.xml:58
+#, no-c-format
+msgid ""
+"The built-in <literal>pojoCache</literal> component manages an instance of "
+"<literal>org.jboss.cache.aop.PojoCache</literal>. You can safely put any "
+"immutable Java object in the cache, and it will be replicated across the "
+"cluster (assuming that replication is enabled). If you want to keep mutable "
+"objects in the cache, you&#39;ll need to run the JBossCache bytecode "
+"preprocessor to ensure that changes to the objects will be automatically "
+"detected and replicated."
+msgstr "Die eingebaute <literal>pojoCache</literal>-Komponent managt eine Instanz von <literal>org.jboss.cache.aop.PojoCache</literal>. Sie können ruhigen Gewissens ein unveränderliches Java-Objekt im Cache ablegen, und es wird über den Cluster hinweg repliziert (gesetzt den Fall Replikation ist aktiviert). Wenn Sie veränderliche Objekte im Cache ablegen möchten, so werden Sie den JBossCache Bytecode Vorprozessor laufen lassen müssen um sicherzustellen, dass Änderungen an den Objekten automatisch aufgefunden und repliziert werden. "
+
+#. Tag: para
+#: Cache.xml:61
+#, no-c-format
+msgid ""
+"To use <literal>pojoCache</literal>, all you need to do is put the "
+"JBossCache jars in the classpath, and provide a resource named "
+"<literal>treecache.xml</literal> with an appropriate cache configuration. "
+"JBossCache has many scary and confusing configuration settings, so we "
+"won&#39;t discuss them here. Please refer to the JBossCache documentation "
+"for more information."
+msgstr ""
+"Um <literal>pojoCache</literal> zu verwenden, müssen Sie lediglich die "
+"JBossCache Jars im Klasspfad ablegen und eine Ressource mit dem Namen "
+"<literal>treecache.xml</literal> mit entsprechender Cache-Konfiguration "
+"liefern. JBossCache besitzt einige nicht ganz unkomplizierte "
+"Konfigurationseinstellungen, die wir an dieser Stelle nicht näher erläutern. "
+"Weiterführende Informationen finden Sie jedoch in der JBossCache Dokumentation."
+
+#. Tag: para
+#: Cache.xml:64
+#, no-c-format
+msgid ""
+"For an EAR depoyment of Seam, we recommend that the JBossCache jars and "
+"configuration go directly into the EAR. Make sure you declare the jars in "
+"<literal>application.xml</literal>."
+msgstr ""
+"Für ein EAR-Deployment von Seam, empfehlen wir, dass die JBossCache Jars und "
+"Konfiguration direkt in der EAR untergebracht sind. Stellen Sie sicher, dass "
+"Sie die Jars in <literal>application.xml</literal> deklarieren."
+
+#. Tag: para
+#: Cache.xml:67
+#, no-c-format
+msgid "Now you can inject the cache into any Seam component:"
+msgstr "Sie können das Cache nun in eine beliebige Seam Komponent einspeisen:"
+
+#. Tag: programlisting
+#: Cache.xml:70
+#, no-c-format
+msgid ""
+"@Name(\"chatroom\")\n"
+"public class Chatroom {\n"
+"    @In PojoCache pojoCache;\n"
+"    \n"
+"    public void join(String username) {\n"
+"      try\n"
+"      {\n"
+"         Set&lt;String&gt; userList = (Set&lt;String&gt;) pojoCache.get"
+"(\"chatroom\", \"userList\");\n"
+"         if (userList==null) \n"
+"         {\n"
+"            userList = new HashSet&lt;String&gt;();\n"
+"            pojoCache.put(\"chatroom\", \"userList\", userList);\n"
+"         }\n"
+"         userList.put(username);\n"
+"      }\n"
+"      catch (CacheException ce)\n"
+"      {\n"
+"         throw new RuntimeException(ce);\n"
+"      }\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"chatroom\")\n"
+"public class Chatroom {\n"
+"    @In PojoCache pojoCache;\n"
+"    \n"
+"    public void join(String username) {\n"
+"      try\n"
+"      {\n"
+"         Set&lt;String&gt; userList = (Set&lt;String&gt;) pojoCache.get"
+"(\"chatroom\", \"userList\");\n"
+"         if (userList==null) \n"
+"         {\n"
+"            userList = new HashSet&lt;String&gt;();\n"
+"            pojoCache.put(\"chatroom\", \"userList\", userList);\n"
+"         }\n"
+"         userList.put(username);\n"
+"      }\n"
+"      catch (CacheException ce)\n"
+"      {\n"
+"         throw new RuntimeException(ce);\n"
+"      }\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Cache.xml:71
+#, no-c-format
+msgid ""
+"If you want to have multiple JBossCache configurations in your application, "
+"use <literal>components.xml</literal>:"
+msgstr ""
+"Wenn Sie mehrere JBossCache Konfigurationen in Ihrer Anwendung haben "
+"möchten, verwenden Sie <literal>components.xml</literal>:"
+
+#. Tag: programlisting
+#: Cache.xml:74
+#, no-c-format
+msgid ""
+"&lt;core:pojo-cache name=\"myCache\" cfg-resource-name=\"myown/cache.xml\"/"
+"&gt;"
+msgstr ""
+"&lt;core:pojo-cache name=\"myCache\" cfg-resource-name=\"myown/cache.xml\"/"
+"&gt;"
+
+#. Tag: title
+#: Cache.xml:78
+#, no-c-format
+msgid "Page fragment caching"
+msgstr "Seitenfragment-Caching"
+
+#. Tag: para
+#: Cache.xml:79
+#, no-c-format
+msgid ""
+"The most interesting user of JBossCache is the <literal>&lt;s:cache&gt;</"
+"literal> tag, Seam&#39;s solution to the problem of page fragment caching in "
+"JSF. <literal>&lt;s:cache&gt;</literal> uses <literal>pojoCache</literal> "
+"internally, so you need to follow the steps listed above before you can use "
+"it. (Put the jars in the EAR, wade through the scary configuration options, "
+"etc.)"
+msgstr "Der interessanteste Benutzer des JBossCache ist das <literal>&lt;s:cache&gt;</literal>-Tag, Seams Lösung für das Problem des Seitenfragmentierung-Cachings in JSF. <literal>&lt;s:cache&gt;</literal> verwendet <literal>pojoCache</literal> intern, d.h. Sie müssen den oben aufgeführten Schritten folgen, ehe Sie es benutzen können. (Legt die Jars im EAR ab, führt durch einige nicht ganz so unkomplizierte Konfigurationsoptionen, usw.)."
+
+#. Tag: para
+#: Cache.xml:82
+#, no-c-format
+msgid ""
+"<literal>&lt;s:cache&gt;</literal> is used for caching some rendered content "
+"which changes rarely. For example, the welcome page of our blog displays the "
+"recent blog entries:"
+msgstr ""
+"<literal>&lt;s:cache&gt;</literal> wird für das Caching gerenderter Inhalte "
+"verwendet, die sich selten ändern. Die Willkommensseite Ihres Blogs etwa "
+"zeigt folgende Einträge an:"
+
+#. Tag: programlisting
+#: Cache.xml:85
+#, no-c-format
+msgid ""
+"&lt;s:cache key=\"recentEntries-#{blog.id}\" region=\"welcomePageFragments"
+"\"&gt;\n"
+"   &lt;h:dataTable value=\"#{blog.recentEntries}\" var=\"blogEntry\"&gt;\n"
+"      &lt;h:column&gt;\n"
+"         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"         &lt;div&gt;\n"
+"            &lt;s:formattedText value=\"#{blogEntry.body}\"/&gt;\n"
+"         &lt;/div&gt;\n"
+"      &lt;/h:column&gt;\n"
+"   &lt;/h:dataTable&gt;\n"
+"&lt;/s:cache&gt;"
+msgstr ""
+"&lt;s:cache key=\"recentEntries-#{blog.id}\" region=\"welcomePageFragments"
+"\"&gt;\n"
+"   &lt;h:dataTable value=\"#{blog.recentEntries}\" var=\"blogEntry\"&gt;\n"
+"      &lt;h:column&gt;\n"
+"         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"         &lt;div&gt;\n"
+"            &lt;s:formattedText value=\"#{blogEntry.body}\"/&gt;\n"
+"         &lt;/div&gt;\n"
+"      &lt;/h:column&gt;\n"
+"   &lt;/h:dataTable&gt;\n"
+"&lt;/s:cache&gt;"
+
+#. Tag: para
+#: Cache.xml:86
+#, no-c-format
+msgid ""
+"The <literal>key</literal> let&#39;s you have multiple cached versions of "
+"each page fragment. In this case, there is one cached version per blog. The "
+"<literal>region</literal> determines the JBossCache node that all version "
+"will be stored in. Different nodes may have different expiry policies. "
+"(That&#39;s the stuff you set up using the aforementioned scary "
+"configuration options.)"
+msgstr ""
+"Der <literal>key</literal> bietet die Möglichkeit zu mehreren gecachten "
+"Versionen jedes Seitenfragments. In diesemFall existiert eine gecachte "
+"Version pro Blog. Die <literal>region</literal> bestimmt den JBossCache "
+"Node, an dem alle Versionen gespeichert werden. Verschiedene Nodes können unterschiedliche Ablaufrichtlinien besitzen. (Es handelt sich dabei um die zuvor erwähnten nicht ganz unkomplizierten Konfigurationsoptionen)."
+
+#. Tag: para
+#: Cache.xml:89
+#, no-c-format
+msgid ""
+"Of course, the big problem with <literal>&lt;s:cache&gt;</literal> is that "
+"it is too stupid to know when the underlying data changes (for example, when "
+"the blogger posts a new entry). So you need to evict the cached fragment "
+"manually:"
+msgstr ""
+"Natürlich ist das große Problem mit <literal>&lt;s:cache&gt;</literal>, dass "
+"dieses nicht weiß, wann sich die zugrunde liegenden Daten ändern (zum "
+"Beispiel wenn der Blogger einen neuen Eintrag veröffentlicht). Sie müssen "
+"das gecachte Fragment daher manuell entfernen:"
+
+#. Tag: programlisting
+#: Cache.xml:92
+#, no-c-format
+msgid ""
+"public void post() {\n"
+"    ...\n"
+"    entityManager.persist(blogEntry);\n"
+"    pojoCache.remove(\"welcomePageFragments\", \"recentEntries-\" + blog."
+"getId() );\n"
+"}"
+msgstr ""
+"public void post() {\n"
+"    ...\n"
+"    entityManager.persist(blogEntry);\n"
+"    pojoCache.remove(\"welcomePageFragments\", \"recentEntries-\" + blog."
+"getId() );\n"
+"}"
+
+#. Tag: para
+#: Cache.xml:93
+#, no-c-format
+msgid ""
+"Alternatively, if it is not critical that changes are immediately visible to "
+"the user, you could set a short expiry time on the JbossCache node."
+msgstr ""
+"Wenn es nicht unbedingt nötig ist, dass Änderungen dem Benutzer sofort "
+"ersichtlich sind, so können Sie alternativ einen kurzen Ablauftermin am "
+"JbossCache Node setzen."
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Components.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Components.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Components.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2331 @@
+# translation of Components.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Jasna Dimanoski <jdimanos at redhat.com>, 2007, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Components\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2008-05-11 12:53+1000\n"
+"Last-Translator: Jasna Dimanoski <jdimanos at redhat.com>\n"
+"Language-Team:  <de at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Components.xml:6
+#, no-c-format
+msgid "Built-in Seam components"
+msgstr "Eingebaute Seam-Komponenten"
+
+#. Tag: para
+#: Components.xml:7
+#, no-c-format
+msgid ""
+"This chapter describes Seam&#39;s built-in components, and their "
+"configuration properties."
+msgstr "Dieses Kapitel beschreibt Seam&#39;s eingebaute Komponenten sowie deren Konfigurationseigenschaften."
+
+#. Tag: para
+#: Components.xml:10
+#, no-c-format
+msgid ""
+"Note that you can replace any of the built in components with your own "
+"implementations simply by specifying the name of one of the built in "
+"components on your own class using <literal>@Name</literal>."
+msgstr ""
+"Bitte beachten Sie, dass Sie jede der eingebauten Komponenten durch Ihre "
+"eigenen Implementierungen ersetzen können, indem Sie den Namen der "
+"eingebauten Komponente in Ihrer eigenen Klasse unter Verwendung von "
+"<literal>@Name</literal> spezifizieren. "
+
+#. Tag: para
+#: Components.xml:13
+#, no-c-format
+msgid ""
+"Note also that even though all the built in components use a qualified name, "
+"most of them are aliased to unqualified names by default. These aliases "
+"specify <literal>auto-create=\"true\"</literal>, so you do not need to use "
+"<literal>create=true</literal> when injecting built-in components by their "
+"unqualified name."
+msgstr ""
+"Bitte beachten Sie, dass - obwohl alle eingebauten Komponenten einen "
+"vollständig definierten Namen verwenden - die meisten von ihnen "
+"standardmäßig zu nicht vollständig definierten Namen aliast werden. Diese "
+"Aliasse legen <literal>auto-create=\"true\"</literal> fest, so dass Sie bei "
+"der Einspeisung eingebauter Komponenten mit deren nicht vollständig "
+"definierten Namen nicht <literal>create=true</literal> verwenden müssen."
+
+#. Tag: title
+#: Components.xml:17
+#, no-c-format
+msgid "Context injection components"
+msgstr "Kontext-Einspeisungskomponenten"
+
+#. Tag: para
+#: Components.xml:18
+#, no-c-format
+msgid ""
+"The first set of built in components exist purely to support injection of "
+"various contextual objects. For example, the following component instance "
+"variable would have the Seam session context object injected:"
+msgstr ""
+"Der erste Satz von eingebauten Komponenten besteht ausschließlich aus "
+"Support-Einspeisung verschiedener kontextueller Objekte. Die folgende "
+"Komponenteninstanzvariable bekäme das Seam Session-Kontextobjekt eingespeist:"
+
+#. Tag: programlisting
+#: Components.xml:21
+#, no-c-format
+msgid "@In private Context sessionContext;"
+msgstr "@In private Context sessionContext;"
+
+#. Tag: literal
+#: Components.xml:24
+#, no-c-format
+msgid "org.jboss.seam.core.eventContext"
+msgstr "org.jboss.seam.core.eventContext"
+
+#. Tag: para
+#: Components.xml:26
+#, no-c-format
+msgid "Manager component for the event context object"
+msgstr "Manager-Komponente für das Ereignis-Kontextobjekt"
+
+#. Tag: literal
+#: Components.xml:32
+#, no-c-format
+msgid "org.jboss.seam.core.pageContext"
+msgstr "org.jboss.seam.core.pageContext"
+
+#. Tag: para
+#: Components.xml:34
+#, no-c-format
+msgid "Manager component for the page context object"
+msgstr "Manager-Komponente für das Seiten-Kontextobjekt"
+
+#. Tag: literal
+#: Components.xml:40
+#, no-c-format
+msgid "org.jboss.seam.core.conversationContext"
+msgstr "org.jboss.seam.core.conversationContext"
+
+#. Tag: para
+#: Components.xml:42
+#, no-c-format
+msgid "Manager component for the conversation context object"
+msgstr "Manager-Komponente für das Konversations-Kontextobjekt"
+
+#. Tag: literal
+#: Components.xml:48
+#, no-c-format
+msgid "org.jboss.seam.core.sessionContext"
+msgstr "org.jboss.seam.core.sessionContext"
+
+#. Tag: para
+#: Components.xml:50
+#, no-c-format
+msgid "Manager component for the session context object"
+msgstr "Manager-Komponente für das Session-Kontextobjekt"
+
+#. Tag: literal
+#: Components.xml:56
+#, no-c-format
+msgid "org.jboss.seam.core.applicationContext"
+msgstr "org.jboss.seam.core.applicationContext"
+
+#. Tag: para
+#: Components.xml:58
+#, no-c-format
+msgid "Manager component for the appication context object"
+msgstr "Manager-Komponente für das Applikations-Kontextobjekt"
+
+#. Tag: literal
+#: Components.xml:64
+#, no-c-format
+msgid "org.jboss.seam.core.businessProcessContext"
+msgstr "org.jboss.seam.core.businessProcessContext"
+
+#. Tag: para
+#: Components.xml:66
+#, no-c-format
+msgid "Manager component for the business process context object"
+msgstr "Manager-Komponente für das Businessvorgangs-Kontextobjekt"
+
+#. Tag: literal
+#: Components.xml:72
+#, no-c-format
+msgid "org.jboss.seam.core.facesContext"
+msgstr "org.jboss.seam.core.facesContext"
+
+#. Tag: para
+#: Components.xml:74
+#, no-c-format
+msgid ""
+"Manager component for the <literal>FacesContext</literal> context object "
+"(not a true Seam context)"
+msgstr ""
+"Manager-Komponente für das <literal>FacesContext</literal>-Kontextobjekt "
+"(kein echter Seam-Kontext)"
+
+#. Tag: para
+#: Components.xml:80 Components.xml:263 Components.xml:437 Components.xml:568
+#, no-c-format
+msgid "All of these components are always installed."
+msgstr "Alle diese Komponenten sind stets installiert."
+
+#. Tag: title
+#: Components.xml:86
+#, no-c-format
+msgid "Utility components"
+msgstr "Hilfsprogramm-Komponenten"
+
+#. Tag: para
+#: Components.xml:87
+#, no-c-format
+msgid "These components are merely useful."
+msgstr "Diese Komponenten sind lediglich hilfreich."
+
+#. Tag: literal
+#: Components.xml:92
+#, no-c-format
+msgid "org.jboss.seam.core.facesMessages"
+msgstr "org.jboss.seam.core.facesMessages"
+
+#. Tag: para
+#: Components.xml:94
+#, no-c-format
+msgid "Allows faces success messages to propagate across a browser redirect."
+msgstr ""
+"Gestattet die Fortpflanzung von \"Faces\" Erfolgsmeldungen über eine Browser-"
+"Umleitung hinweg."
+
+#. Tag: para
+#: Components.xml:99
+#, no-c-format
+msgid ""
+"<literal>add(FacesMessage facesMessage)</literal> &mdash; add a faces "
+"message, which will be displayed during the next render response phase that "
+"occurs in the current conversation."
+msgstr ""
+"<literal>add(FacesMessage facesMessage)</literal> &mdash; Fügt eine \"Faces"
+"\"-Meldung hinzu, die während der nächsten Render-Antwortphase der aktuellen "
+"Konversation angezeigt wird."
+
+#. Tag: para
+#: Components.xml:104
+#, no-c-format
+msgid ""
+"<literal>add(String messageTemplate)</literal> &mdash; add a faces message, "
+"rendered from the given message template which may contain EL expressions."
+msgstr ""
+"<literal>add(String messageTemplate)</literal> &mdash; Fügt eine \"Faces\"-"
+"Meldung hinzu, die von der gegebenen Nachrichtenvorlage gerendert ist und EL-"
+"Ausdrücke enthalten kann."
+
+#. Tag: para
+#: Components.xml:109
+#, no-c-format
+msgid ""
+"<literal>add(Severity severity, String messageTemplate)</literal> &mdash; "
+"add a faces message, rendered from the given message template which may "
+"contain EL expressions."
+msgstr ""
+"<literal>add(Severity severity, String messageTemplate)</literal> &mdash; "
+"Fügt eine \"Faces\"-Meldung hinzu, die von der gegebenen Nachrichtenvorlage "
+"gerendert ist und EL-Ausdrücke enthalten kann."
+
+#. Tag: para
+#: Components.xml:114
+#, no-c-format
+msgid ""
+"<literal>addFromResourceBundle(String key)</literal> &mdash; add a faces "
+"message, rendered from a message template defined in the Seam resource "
+"bundle which may contain EL expressions."
+msgstr ""
+"<literal>addFromResourceBundle(String key)</literal> &mdash; Fügt eine "
+"\"Faces\"-Meldung hinzu, die von einer im Seam Ressourcen-Bundle definierten "
+"Nachrichtenvorlage gerendert ist und EL-Ausdrücke enthalten kann."
+
+#. Tag: para
+#: Components.xml:119
+#, no-c-format
+msgid ""
+"<literal>addFromResourceBundle(Severity severity, String key)</literal> "
+"&mdash; add a faces message, rendered from a message template defined in the "
+"Seam resource bundle which may contain EL expressions."
+msgstr ""
+"<literal>addFromResourceBundle(Severity severity, String key)</literal> "
+"&mdash; Fügt eine \"Faces\"-Meldung hinzu, die von einer im Seam Ressourcen-"
+"Bundle definierten Nachrichtenvorlage gerendert ist und EL-Ausdrücke "
+"enthalten kann."
+
+#. Tag: para
+#: Components.xml:124
+#, no-c-format
+msgid "<literal>clear()</literal> &mdash; clear all messages."
+msgstr "<literal>clear()</literal> &mdash; alle Nachrichten löschen."
+
+#. Tag: literal
+#: Components.xml:132
+#, no-c-format
+msgid "org.jboss.seam.core.redirect"
+msgstr "org.jboss.seam.core.redirect"
+
+#. Tag: para
+#: Components.xml:134
+#, no-c-format
+msgid ""
+"A convenient API for performing redirects with parameters (this is "
+"especially useful for bookmarkable search results screens)."
+msgstr ""
+"Ein praktisches API zur Durchführung von Umleitungen mit Parametern (dies "
+"ist besonders nützlich für Ergebnisbildschirme bei denen ein Lesezeichen "
+"hinzugefügt werden kann)."
+
+#. Tag: para
+#: Components.xml:139
+#, no-c-format
+msgid "<literal>redirect.viewId</literal> &mdash; the JSF view id to redirect to."
+msgstr ""
+"<literal>redirect.viewId</literal> &mdash; die JSF-Ansichts-ID an die "
+"umgeleitet werden soll."
+
+#. Tag: para
+#: Components.xml:144
+#, no-c-format
+msgid ""
+"<literal>redirect.conversationPropagationEnabled</literal> &mdash; "
+"determines whether the conversation will propagate across the redirect."
+msgstr ""
+"<literal>redirect.conversationPropagationEnabled</literal> &mdash; Bestimmt, "
+"ob die Konversation über die Umleitung hinweg fortgepflanzt wird."
+
+#. Tag: para
+#: Components.xml:149
+#, no-c-format
+msgid ""
+"<literal>redirect.parameters</literal> &mdash; a map of request parameter "
+"name to value, to be passed in the redirect request."
+msgstr ""
+"<literal>redirect.parameters</literal> &mdash; Eine Map vom Namen des "
+"Anfragenparameters zum Wert, der in der Umleitungsanfrage weitergegeben wird."
+
+#. Tag: para
+#: Components.xml:154
+#, no-c-format
+msgid "<literal>execute()</literal> &mdash; perform the redirect immediately."
+msgstr "<literal>execute()</literal> &mdash; Umleitung sofort durchführen."
+
+#. Tag: para
+#: Components.xml:159
+#, no-c-format
+msgid ""
+"<literal>captureCurrentRequest()</literal> &mdash; stores the view id and "
+"request parameters of the current GET request (in the conversation context), "
+"for later use by calling <literal>execute()</literal>."
+msgstr ""
+"<literal>captureCurrentRequest()</literal> &mdash; Speichert die Ansichts-id "
+"und Anfragenparameter der aktuellen GET-Anfrage (im Konversationskontext), "
+"für den späteren Gebrauch durch Aufruf von <literal>execute()</literal>."
+
+#. Tag: literal
+#: Components.xml:167
+#, no-c-format
+msgid "org.jboss.seam.core.httpError"
+msgstr "org.jboss.seam.core.httpError"
+
+#. Tag: para
+#: Components.xml:169
+#, no-c-format
+msgid "A convenient API for sending HTTP errors."
+msgstr "Eine praktische API zum Versenden von HTTP-Fehlern."
+
+#. Tag: literal
+#: Components.xml:175
+#, no-c-format
+msgid "org.jboss.seam.core.events"
+msgstr "org.jboss.seam.core.events"
+
+#. Tag: para
+#: Components.xml:177
+#, no-c-format
+msgid ""
+"An API for raising events that can be observed via <literal>@Observer</"
+"literal> methods, or method bindings in <literal>components.xml</literal>."
+msgstr ""
+"Ein API zum Heraufsetzen von Ereignissen, die über <literal>@Observer</"
+"literal>-Methoden oder Methoden-Bindungen in <literal>components.xml</"
+"literal> überwacht werden können."
+
+#. Tag: para
+#: Components.xml:182
+#, no-c-format
+msgid ""
+"<literal>raiseEvent(String type)</literal> &mdash; raise an event of a "
+"particular type and distribute to all observers."
+msgstr ""
+"<literal>raiseEvent(String type)</literal> &mdash; Ein Ereignis einer "
+"bestimmten Art heraufsetzen und an alle Beobachter verteilen."
+
+#. Tag: para
+#: Components.xml:187
+#, no-c-format
+msgid ""
+"<literal>raiseAsynchronousEvent(String type)</literal> &mdash; raise an "
+"event to be processed asynchronously by the EJB3 timer service."
+msgstr ""
+"<literal>raiseAsynchronousEvent(String type)</literal> &mdash; Ein durch den "
+"EJB3-Timer-Service asynchron zu verarbeitendes Ereignis."
+
+#. Tag: para
+#: Components.xml:192
+#, no-c-format
+msgid ""
+"<literal>raiseTimedEvent(String type, ....)</literal> &mdash; schedule an "
+"event to be processed asynchronously by the EJB3 timer service."
+msgstr ""
+"<literal>raiseTimedEvent(String type, ....)</literal> &mdash; Die "
+"Bearbeitung eines Ereignisses asynchron zum EJB3-Timer-Service terminieren."
+
+#. Tag: para
+#: Components.xml:197
+#, no-c-format
+msgid ""
+"<literal>addListener(String type, String methodBinding)</literal> &mdash; "
+"add an observer for a particular event type."
+msgstr ""
+"<literal>addListener(String type, String methodBinding)</literal> &mdash; "
+"Einen Beobachter (Observer) für einen bestimmten Ereignistyp hinzufügen."
+
+#. Tag: literal
+#: Components.xml:205
+#, no-c-format
+msgid "org.jboss.seam.core.interpolator"
+msgstr "org.jboss.seam.core.interpolator"
+
+#. Tag: para
+#: Components.xml:207
+#, no-c-format
+msgid "An API for interpolating the values of JSF EL expressions in Strings."
+msgstr "Ein API zur Interpolierung von Werten der JSF EL-Ausdrücke in Strings."
+
+#. Tag: para
+#: Components.xml:212
+#, no-c-format
+msgid ""
+"<literal>interpolate(String template)</literal> &mdash; scan the template "
+"for JSF EL expressions of the form <literal>#{...}</literal> and replace "
+"them with their evaluated values."
+msgstr ""
+"<literal>interpolate(String template)</literal> &mdash; Scannt die Vorlage "
+"nach JSF EL-Ausdrücken der Form <literal>#{...}</literal> und ersetzt diese "
+"durch deren evaluierte Werte."
+
+#. Tag: literal
+#: Components.xml:220
+#, no-c-format
+msgid "org.jboss.seam.core.expressions"
+msgstr "org.jboss.seam.core.expressions"
+
+#. Tag: para
+#: Components.xml:222
+#, no-c-format
+msgid "An API for creating value and method bindings."
+msgstr "Ein API zur Erstellung von Werte- und Methoden-Bindungen."
+
+#. Tag: para
+#: Components.xml:227
+#, no-c-format
+msgid ""
+"<literal>createValueBinding(String expression)</literal> &mdash; create a "
+"value binding object."
+msgstr ""
+"<literal>createValueBinding(String expression)</literal> &mdash; Erstellt "
+"ein Werte bindendes Objekt."
+
+#. Tag: para
+#: Components.xml:232
+#, no-c-format
+msgid ""
+"<literal>createMethodBinding(String expression)</literal> &mdash; create a "
+"method binding object."
+msgstr ""
+"<literal>createMethodBinding(String expression)</literal> &mdash; Erstellt "
+"ein Methoden bindendes Objekt."
+
+#. Tag: literal
+#: Components.xml:240
+#, no-c-format
+msgid "org.jboss.seam.core.pojoCache"
+msgstr "org.jboss.seam.core.pojoCache"
+
+#. Tag: para
+#: Components.xml:242
+#, no-c-format
+msgid "Manager component for a JBoss Cache <literal>PojoCache</literal> instance."
+msgstr "Manager-Komponente für eine JBoss Cache <literal>PojoCache</literal>-Instanz."
+
+#. Tag: para
+#: Components.xml:247
+#, no-c-format
+msgid ""
+"<literal>pojoCache.cfgResourceName</literal> &mdash; the name of the "
+"configuration file. Default to <literal>treecache.xml</literal>."
+msgstr ""
+"<literal>pojoCache.cfgResourceName</literal> &mdash; Der Name der "
+"Konfigurationsdatei. Standardmäßig <literal>treecache.xml</literal>."
+
+#. Tag: literal
+#: Components.xml:255
+#, no-c-format
+msgid "org.jboss.seam.core.uiComponent"
+msgstr "org.jboss.seam.core.uiComponent"
+
+#. Tag: para
+#: Components.xml:257
+#, no-c-format
+msgid ""
+"Allows access to a JSF <literal>UIComponent</literal> by its id from the EL. "
+"For example, we can write <literal>@In(\"#{uiComponent[&#39;myForm:"
+"address&#39;].value}\")</literal>."
+msgstr ""
+"Gestattet Zugriff auf eine JSF <literal>UIComponent</literal> durch deren "
+"id von der EL. Man kann zum Beispiel schreiben <literal>@In(\"#{uiComponent[&#39;myForm:"
+"address&#39;].value}\")</literal>."
+
+#. Tag: title
+#: Components.xml:269
+#, no-c-format
+msgid "Components for internationalization and themes"
+msgstr "Komponenten für Internationalisierung und Themen"
+
+#. Tag: para
+#: Components.xml:270
+#, no-c-format
+msgid ""
+"The next group of components make it easy to build internationalized user "
+"interfaces using Seam."
+msgstr ""
+"Die nächste Komponentengruppe macht es einfach internationalisierte Benutzer-"
+"Interfaces unter Verwendung von Seam zu bauen."
+
+#. Tag: literal
+#: Components.xml:275
+#, no-c-format
+msgid "org.jboss.seam.core.locale"
+msgstr "org.jboss.seam.core.locale"
+
+#. Tag: para
+#: Components.xml:277
+#, no-c-format
+msgid "The Seam locale. The locale is session scoped."
+msgstr "Die Seam \"Locale\". Die Locale ist sessionbegrenzt."
+
+#. Tag: literal
+#: Components.xml:283
+#, no-c-format
+msgid "org.jboss.seam.core.timezone"
+msgstr "org.jboss.seam.core.timezone"
+
+#. Tag: para
+#: Components.xml:285
+#, no-c-format
+msgid "The Seam timezone. The timezone is session scoped."
+msgstr "Die Seam Zeitzone. Die Zeitzone ist durch die Session begrenzt."
+
+#. Tag: literal
+#: Components.xml:291
+#, no-c-format
+msgid "org.jboss.seam.core.resourceBundle"
+msgstr "org.jboss.seam.core.resourceBundle"
+
+#. Tag: para
+#: Components.xml:293
+#, no-c-format
+msgid ""
+"The Seam resource bundle. The resource bundle is session scoped. The Seam "
+"resource bundle performs a depth-first search for keys in a list of Java "
+"resource bundles."
+msgstr ""
+"Das Seam Ressourcen-Bundle. Das Ressourcen-Bundle ist sessionbegrenzt. Das "
+"Seam Ressourcen-Bundle führt eine \"depth-first\" Suche nach Schüsseln in "
+"einer Liste von Java Ressourcen-Bundlen durch."
+
+#. Tag: para
+#: Components.xml:298
+#, no-c-format
+msgid ""
+"<literal>resourceBundle.bundleNames</literal> &mdash; the names of the Java "
+"resource bundles to search. Default to <literal>messages</literal>."
+msgstr ""
+"<literal>resourceBundle.bundleNames</literal> &mdash; Die Namen der Java "
+"Ressourcen-Bundles nach denen gesucht werden soll. Standardmäßig "
+"<literal>messages</literal>."
+
+#. Tag: literal
+#: Components.xml:306
+#, no-c-format
+msgid "org.jboss.seam.core.localeSelector"
+msgstr "org.jboss.seam.core.localeSelector"
+
+#. Tag: para
+#: Components.xml:308
+#, no-c-format
+msgid ""
+"Supports selection of the locale either at configuration time, or by the "
+"user at runtime."
+msgstr ""
+"Unterstützt die Auswahl der Locale entweder zum Zeitpunkt der Konfiguration "
+"oder durch den Benutzer zur Runtime."
+
+#. Tag: para
+#: Components.xml:313 Components.xml:363
+#, no-c-format
+msgid "<literal>select()</literal> &mdash; select the specified locale."
+msgstr "<literal>select()</literal> &mdash; Wählt das festgelegte Locale."
+
+#. Tag: para
+#: Components.xml:318
+#, no-c-format
+msgid ""
+"<literal>localeSelector.locale</literal> &mdash; the actual <literal>java."
+"util.Locale</literal>."
+msgstr ""
+"<literal>localeSelector.locale</literal> &mdash; Die tatsächliche "
+"<literal>java.util.Locale</literal>."
+
+#. Tag: para
+#: Components.xml:323
+#, no-c-format
+msgid ""
+"<literal>localeSelector.localeString</literal> &mdash; the stringified "
+"representation of the locale."
+msgstr ""
+"<literal>localeSelector.localeString</literal> &mdash; Die stringifizierte "
+"Repräsentation der Locale."
+
+#. Tag: para
+#: Components.xml:328
+#, no-c-format
+msgid ""
+"<literal>localeSelector.language</literal> &mdash; the language for the "
+"specified locale."
+msgstr ""
+"<literal>localeSelector.language</literal> &mdash; Die Sprache für die "
+"festgelegte Locale."
+
+#. Tag: para
+#: Components.xml:333
+#, no-c-format
+msgid ""
+"<literal>localeSelector.country</literal> &mdash; the country for the "
+"specified locale."
+msgstr ""
+"<literal>localeSelector.country</literal> &mdash; Das Land für die "
+"festgelegte Locale."
+
+#. Tag: para
+#: Components.xml:338
+#, no-c-format
+msgid ""
+"<literal>localeSelector.variant</literal> &mdash; the variant for the "
+"specified locale."
+msgstr ""
+"<literal>localeSelector.variant</literal> &mdash; Die Variante für die "
+"festgelegte Locale."
+
+#. Tag: para
+#: Components.xml:343
+#, no-c-format
+msgid ""
+"<literal>localeSelector.supportedLocales</literal> &mdash; a list of "
+"<literal>SelectItem</literal>s representing the supported locales listed in "
+"<literal>jsf-config.xml</literal>."
+msgstr ""
+"<literal>localeSelector.supportedLocales</literal> &mdash; Eine Liste von "
+"<literal>SelectItem</literal>s, die die in <literal>jsf-config.xml</literal> "
+"gelisteten unterstützten Locales repräsentiert."
+
+#. Tag: para
+#: Components.xml:348
+#, no-c-format
+msgid ""
+"<literal>localeSelector.cookieEnabled</literal> &mdash; specifies that the "
+"locale selection should be persisted via a cookie."
+msgstr ""
+"<literal>localeSelector.cookieEnabled</literal> &mdash; Legt fest, dass die "
+"Auswahl der Locale mittels eines Cookies persistiert werden sollte."
+
+#. Tag: literal
+#: Components.xml:356
+#, no-c-format
+msgid "org.jboss.seam.core.timezoneSelector"
+msgstr "org.jboss.seam.core.timezoneSelector"
+
+#. Tag: para
+#: Components.xml:358
+#, no-c-format
+msgid ""
+"Supports selection of the timezone either at configuration time, or by the "
+"user at runtime."
+msgstr ""
+"Unterstützt die Auswahl von Zeitzone entweder zur Konfigurationszeit oder "
+"durch den Benutzer zur Runtime."
+
+#. Tag: para
+#: Components.xml:368
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.timezone</literal> &mdash; the actual "
+"<literal>java.util.TimeZone</literal>."
+msgstr ""
+"<literal>timezoneSelector.timezone</literal> &mdash; Die tatsächliche "
+"<literal>java.util.TimeZone</literal>."
+
+#. Tag: para
+#: Components.xml:373
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.timeZoneId</literal> &mdash; the stringified "
+"representation of the timezone."
+msgstr ""
+"<literal>timezoneSelector.timeZoneId</literal> &mdash; Die stringifizierte "
+"Repräsentation der Zeitzone."
+
+#. Tag: para
+#: Components.xml:378
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.cookieEnabled</literal> &mdash; specifies that the "
+"timezone selection should be persisted via a cookie."
+msgstr ""
+"<literal>timezoneSelector.cookieEnabled</literal> &mdash; Legt fest, dass "
+"die Zeitzonenauswahl mittels eines Cookie persistiert werden soll."
+
+#. Tag: literal
+#: Components.xml:386
+#, no-c-format
+msgid "org.jboss.seam.core.messages"
+msgstr "org.jboss.seam.core.messages"
+
+#. Tag: para
+#: Components.xml:388
+#, no-c-format
+msgid ""
+"A map containing internationalized messages rendered from message templates "
+"defined in the Seam resource bundle."
+msgstr ""
+"Eine Map, die internationalisierte Nachrichten enthält, die von im Seam "
+"Ressourcen-Bundle definierten Nachrichten-Templates gerendert werden."
+
+#. Tag: literal
+#: Components.xml:394
+#, no-c-format
+msgid "org.jboss.seam.theme.themeSelector"
+msgstr "org.jboss.seam.theme.themeSelector"
+
+#. Tag: para
+#: Components.xml:396
+#, no-c-format
+msgid ""
+"Supports selection of the theme either at configuration time, or by the user "
+"at runtime."
+msgstr ""
+"Unterstützt die Themenauswahl entweder zum Zeitpunkt der Konfiguration oder "
+"durch den Benutzer zur Runtime."
+
+#. Tag: para
+#: Components.xml:401
+#, no-c-format
+msgid "<literal>select()</literal> &mdash; select the specified theme."
+msgstr "<literal>select()</literal> &mdash; Wählt das festgelegte Thema."
+
+#. Tag: para
+#: Components.xml:406
+#, no-c-format
+msgid "<literal>theme.availableThemes</literal> &mdash; the list of defined themes."
+msgstr "<literal>theme.availableThemes</literal> &mdash; Liste definierter Themen."
+
+#. Tag: para
+#: Components.xml:411
+#, no-c-format
+msgid "<literal>themeSelector.theme</literal> &mdash; the selected theme."
+msgstr "<literal>themeSelector.theme</literal> &mdash; Das gewählte Thema."
+
+#. Tag: para
+#: Components.xml:416
+#, no-c-format
+msgid ""
+"<literal>themeSelector.themes</literal> &mdash; a list of "
+"<literal>SelectItem</literal>s representing the defined themes."
+msgstr ""
+"<literal>themeSelector.themes</literal> &mdash; Eine Liste von "
+"<literal>SelectItem</literal>s, die die definierten Themen repräsentieren."
+
+#. Tag: para
+#: Components.xml:421
+#, no-c-format
+msgid ""
+"<literal>themeSelector.cookieEnabled</literal> &mdash; specifies that the "
+"theme selection should be persisted via a cookie."
+msgstr ""
+"<literal>themeSelector.cookieEnabled</literal> &mdash; Legt fest, dass die "
+"Themenauswahl mittels eines Cookie persistiert werden soll."
+
+#. Tag: literal
+#: Components.xml:429
+#, no-c-format
+msgid "org.jboss.seam.theme.theme"
+msgstr "org.jboss.seam.theme.theme"
+
+#. Tag: para
+#: Components.xml:431
+#, no-c-format
+msgid "A map containing theme entries."
+msgstr "Eine Themeneingaben enthaltende Map."
+
+#. Tag: title
+#: Components.xml:443
+#, no-c-format
+msgid "Components for controlling conversations"
+msgstr "Komponenten zur Kontrolle von Konversationen"
+
+#. Tag: para
+#: Components.xml:444
+#, no-c-format
+msgid ""
+"The next group of components allow control of conversations by the "
+"application or user interface."
+msgstr ""
+"Die nächste Komponentengruppe gestattet die Kontrolle von Konversationen "
+"durch die Anwendung oder das Benutzer-Interface."
+
+#. Tag: literal
+#: Components.xml:449
+#, no-c-format
+msgid "org.jboss.seam.core.conversation"
+msgstr "org.jboss.seam.core.conversation"
+
+#. Tag: para
+#: Components.xml:451
+#, no-c-format
+msgid "API for application control of attributes of the current Seam conversation."
+msgstr "API zur Anwendungskontrolle der aktuellen Seam-Konversation."
+
+#. Tag: para
+#: Components.xml:456 Components.xml:471
+#, no-c-format
+msgid "<literal>getId()</literal> &mdash; returns the current conversation id"
+msgstr "<literal>getId()</literal> &mdash; Gibt die aktuelle Konversations-ID wider"
+
+#. Tag: para
+#: Components.xml:461
+#, no-c-format
+msgid ""
+"<literal>isNested()</literal> &mdash; is the current conversation a nested "
+"conversation?"
+msgstr ""
+"<literal>isNested()</literal> &mdash; Handelt es sich bei der aktuellen "
+"Konversation um eine verschachtelte Konversation?"
+
+#. Tag: para
+#: Components.xml:466
+#, no-c-format
+msgid ""
+"<literal>isLongRunning()</literal> &mdash; is the current conversation a "
+"long-running conversation?"
+msgstr ""
+"<literal>isLongRunning()</literal> &mdash; Handelt es sich bei der aktuellen "
+"Konversation um eine lange laufende?"
+
+#. Tag: para
+#: Components.xml:476
+#, no-c-format
+msgid ""
+"<literal>getParentId()</literal> &mdash; returns the conversation id of the "
+"parent conversation"
+msgstr ""
+"<literal>getParentId()</literal> &mdash; Gibt die Konversations-ID der "
+"übergeordneten Konversation wider"
+
+#. Tag: para
+#: Components.xml:481
+#, no-c-format
+msgid ""
+"<literal>getRootId()</literal> &mdash; returns the conversation id of the "
+"root conversation"
+msgstr ""
+"<literal>getRootId()</literal> &mdash; Gibt die Konversations-id der root-"
+"Konversation wieder"
+
+#. Tag: para
+#: Components.xml:486
+#, no-c-format
+msgid ""
+"<literal>setTimeout(int timeout)</literal> &mdash; sets the timeout for the "
+"current conversation"
+msgstr ""
+"<literal>setTimeout(int timeout)</literal> &mdash; Setzt den Timeout für die "
+"aktuelle Konversation"
+
+#. Tag: para
+#: Components.xml:491
+#, no-c-format
+msgid ""
+"<literal>setViewId(String outcome)</literal> &mdash; sets the view id to be "
+"used when switching back to the current conversation from the conversation "
+"switcher, conversation list, or breadcrumbs."
+msgstr ""
+"<literal>setViewId(String outcome)</literal> &mdash; Setzt die zu "
+"verwendende Ansichts-id beim zurückschalten zur aktuellen Konversation von "
+"Konversations-Switcher, Konversationsliste oder \"Breadcrumbs\"."
+
+#. Tag: para
+#: Components.xml:496
+#, no-c-format
+msgid ""
+"<literal>setDescription(String description)</literal> &mdash; sets the "
+"description of the current conversation to be displayed in the conversation "
+"switcher, conversation list, or breadcrumbs."
+msgstr ""
+"<literal>setDescription(String description)</literal> &mdash; Setzt die in "
+"Konversations-Switcher, Konversationsliste oder \"Breadcrumbs\" anzuzeigende "
+"Beschreibung der aktuellen Konversation. "
+
+#. Tag: para
+#: Components.xml:501
+#, no-c-format
+msgid ""
+"<literal>redirect()</literal> &mdash; redirect to the last well-defined view "
+"id for this conversation (useful after login challenges)."
+msgstr ""
+"<literal>redirect()</literal> &mdash; Leitet zur letzten gut definierten "
+"Ansichts-id dieser Konversation um (nützlich nach Login Schwierigkeiten)."
+
+#. Tag: para
+#: Components.xml:506
+#, no-c-format
+msgid ""
+"<literal>leave()</literal> &mdash; exit the scope of this conversation, "
+"without actually ending the conversation."
+msgstr ""
+"<literal>leave()</literal> &mdash; Den Bereich dieser Konversation verlassen "
+"ohne die Konversation tatsächlich zu beenden."
+
+#. Tag: para
+#: Components.xml:511
+#, no-c-format
+msgid ""
+"<literal>begin()</literal> &mdash; begin a long-running conversation "
+"(equivalent to <literal>@Begin</literal>)."
+msgstr ""
+"<literal>begin()</literal> &mdash; Beginnt eine lange laufende Konversation "
+"(äquivalent zu <literal>@Begin</literal>)."
+
+#. Tag: para
+#: Components.xml:516
+#, no-c-format
+msgid ""
+"<literal>beginPageflow(String pageflowName)</literal> &mdash; begin a long-"
+"running conversation with a pageflow (equivalent to <literal>@Begin(pageflow="
+"\"...\")</literal>)."
+msgstr ""
+"<literal>beginPageflow(String pageflowName)</literal> &mdash; Beginnt eine "
+"lange laufende Konversation mit einem Pageflow (äquivalent zu <literal>@Begin"
+"(pageflow=\"...\")</literal>)."
+
+#. Tag: para
+#: Components.xml:521
+#, no-c-format
+msgid ""
+"<literal>end()</literal> &mdash; end a long-running conversation (equivalent "
+"to <literal>@End</literal>)."
+msgstr ""
+"<literal>end()</literal> &mdash; Beendet eine lange laufende Konversation "
+"(äquivalent zu <literal>@End</literal>)."
+
+#. Tag: para
+#: Components.xml:526
+#, no-c-format
+msgid ""
+"<literal>pop()</literal> &mdash; pop the conversation stack, returning to "
+"the parent conversation."
+msgstr ""
+"<literal>pop()</literal> &mdash; Holt den Konversationsstapel hervor und "
+"kehrt zur übergeordneten Konversation zurück."
+
+#. Tag: para
+#: Components.xml:531
+#, no-c-format
+msgid ""
+"<literal>root()</literal> &mdash; return to the root conversation of the "
+"conversation stack."
+msgstr ""
+"<literal>root()</literal> &mdash; Zur root-Konversation des "
+"Konversationsstapels zurückkehren."
+
+#. Tag: para
+#: Components.xml:536
+#, no-c-format
+msgid ""
+"<literal>changeFlushMode(FlushModeType flushMode)</literal> &mdash; change "
+"the flush mode of the conversation."
+msgstr ""
+"<literal>changeFlushMode(FlushModeType flushMode)</literal> &mdash; Den "
+"Räumungsmodus (\"Flush Mode\" der Konversation ändern."
+
+#. Tag: literal
+#: Components.xml:544
+#, no-c-format
+msgid "org.jboss.seam.core.conversationList"
+msgstr "org.jboss.seam.core.conversationList"
+
+#. Tag: para
+#: Components.xml:546
+#, no-c-format
+msgid "Manager component for the conversation list."
+msgstr "Manager-Komponente für die Konversationsliste."
+
+#. Tag: literal
+#: Components.xml:552
+#, no-c-format
+msgid "org.jboss.seam.core.conversationStack"
+msgstr "org.jboss.seam.core.conversationStack"
+
+#. Tag: para
+#: Components.xml:554
+#, no-c-format
+msgid "Manager component for the conversation stack (breadcrumbs)."
+msgstr "Manager-Komponente für den Konversationsstapel (\"Breadcrumbs\")."
+
+#. Tag: literal
+#: Components.xml:560
+#, no-c-format
+msgid "org.jboss.seam.core.switcher"
+msgstr "org.jboss.seam.core.switcher"
+
+#. Tag: para
+#: Components.xml:562
+#, no-c-format
+msgid "The conversation switcher."
+msgstr "Der Konversations-Switcher."
+
+#. Tag: title
+#: Components.xml:574
+#, no-c-format
+msgid "jBPM-related components"
+msgstr "jBPM-bezogene Komponenten"
+
+#. Tag: para
+#: Components.xml:575
+#, no-c-format
+msgid "These components are for use with jBPM."
+msgstr "Diese Komponenten sind für den Gebrauch mit jBPM."
+
+#. Tag: literal
+#: Components.xml:580
+#, no-c-format
+msgid "org.jboss.seam.core.pageflow"
+msgstr "org.jboss.seam.core.pageflow"
+
+#. Tag: para
+#: Components.xml:582
+#, no-c-format
+msgid "API control of Seam pageflows."
+msgstr "API-Steuerung von Seam Pageflows."
+
+#. Tag: para
+#: Components.xml:587
+#, no-c-format
+msgid ""
+"<literal>isInProcess()</literal> &mdash; returns <literal>true</literal> if "
+"there is currently a pageflow in process"
+msgstr ""
+"<literal>isInProcess()</literal> &mdash; Gibt <literal>true</literal> "
+"wieder, falls zum aktuellen Zeitpunkt gerade ein Pageflow stattfindet"
+
+#. Tag: para
+#: Components.xml:592
+#, no-c-format
+msgid ""
+"<literal>getProcessInstance()</literal> &mdash; returns jBPM "
+"<literal>ProcessInstance</literal> for the current pageflow"
+msgstr ""
+"<literal>getProcessInstance()</literal> &mdash; Gibt jBPM "
+"<literal>ProcessInstance</literal> für den aktuellen Pageflow wieder"
+
+#. Tag: para
+#: Components.xml:597
+#, no-c-format
+msgid ""
+"<literal>begin(String pageflowName)</literal> &mdash; begin a pageflow in "
+"the context of the current conversation"
+msgstr ""
+"<literal>begin(String pageflowName)</literal> &mdash; Einen Pageflow im "
+"Kontext der aktuellen Konversation beginnen"
+
+#. Tag: para
+#: Components.xml:602
+#, no-c-format
+msgid ""
+"<literal>reposition(String nodeName)</literal> &mdash; reposition the "
+"current pageflow to a particular node"
+msgstr ""
+"<literal>reposition(String nodeName)</literal> &mdash; Repositionierung des "
+"aktuellen Pageflows zu einem bestimmten Node"
+
+#. Tag: literal
+#: Components.xml:610
+#, no-c-format
+msgid "org.jboss.seam.core.actor"
+msgstr "org.jboss.seam.core.actor"
+
+#. Tag: para
+#: Components.xml:612
+#, no-c-format
+msgid ""
+"API for application control of attributes of the jBPM actor associated with "
+"the current session."
+msgstr ""
+"API zur Applikationssteuerung von Attributen des mit der aktuellen Session "
+"assoziierten jBPM-Actors."
+
+#. Tag: para
+#: Components.xml:617
+#, no-c-format
+msgid ""
+"<literal>setId(String actorId)</literal> &mdash; sets the jBPM actor id of "
+"the current user."
+msgstr ""
+"<literal>setId(String actorId)</literal> &mdash; Setzt die jBPM-Actor-id des "
+"aktuellen Benutzers."
+
+#. Tag: para
+#: Components.xml:622
+#, no-c-format
+msgid ""
+"<literal>getGroupActorIds()</literal> &mdash; returns a <literal>Set</"
+"literal> to which jBPM actor ids for the current users groups may be added."
+msgstr ""
+"<literal>getGroupActorIds()</literal> &mdash; Gibt ein <literal>Set</"
+"literal> wieder, dem jBPM-Actor-ids für die aktuellen Benutzergruppen "
+"hinzugefügt werden können."
+
+#. Tag: literal
+#: Components.xml:630
+#, no-c-format
+msgid "org.jboss.seam.core.transition"
+msgstr "org.jboss.seam.core.transition"
+
+#. Tag: para
+#: Components.xml:632
+#, no-c-format
+msgid "API for application control of the jBPM transition for the current task."
+msgstr "API für die Applikationssteuerung der jBPM-Transition der aktuellen Task."
+
+#. Tag: para
+#: Components.xml:637
+#, no-c-format
+msgid ""
+"<literal>setName(String transitionName)</literal> &mdash; sets the jBPM "
+"transition name to be used when the current task is ended via "
+"<literal>@EndTask</literal>."
+msgstr ""
+"<literal>setName(String transitionName)</literal> &mdash; Setzt den jBPM-"
+"Transition-Name, der beim beenden der aktuellen Task mittels "
+"<literal>@EndTask</literal> verwendet werden soll."
+
+#. Tag: literal
+#: Components.xml:645
+#, no-c-format
+msgid "org.jboss.seam.core.businessProcess"
+msgstr "org.jboss.seam.core.businessProcess"
+
+#. Tag: para
+#: Components.xml:647
+#, no-c-format
+msgid ""
+"API for programmatic control of the association between the conversation and "
+"business process."
+msgstr ""
+"API zur programmatischen Steuerung der Assoziation zwischen der Konversation "
+"und dem Business-Prozess."
+
+#. Tag: para
+#: Components.xml:652
+#, no-c-format
+msgid ""
+"<literal>businessProcess.taskId</literal> &mdash; the id of the task "
+"associated with the current conversation."
+msgstr ""
+"<literal>businessProcess.taskId</literal> &mdash; Die id der mit der "
+"aktuellen Konversation assoziierten Task."
+
+#. Tag: para
+#: Components.xml:657
+#, no-c-format
+msgid ""
+"<literal>businessProcess.processId</literal> &mdash; the id of the process "
+"associated with the current conversation."
+msgstr ""
+"<literal>businessProcess.processId</literal> &mdash; Die id des Prozesses, "
+"der mit der aktuellen Konversation assoziiert wird."
+
+#. Tag: para
+#: Components.xml:662
+#, no-c-format
+msgid ""
+"<literal>businessProcess.hasCurrentTask()</literal> &mdash; is a task "
+"instance associated with the current conversation?"
+msgstr ""
+"<literal>businessProcess.hasCurrentTask()</literal> &mdash; Ist eine Task-"
+"Instanz mit der aktuellen Konversation assoziiert?"
+
+#. Tag: para
+#: Components.xml:667
+#, no-c-format
+msgid ""
+"<literal>businessProcess.hasCurrentProcess()</literal> &mdash; is a process "
+"instance associated with the current conversation."
+msgstr ""
+"<literal>businessProcess.hasCurrentProcess()</literal> &mdash; ist eine mit "
+"der aktuellen Konversation assoziierte Prozessinstanz."
+
+#. Tag: para
+#: Components.xml:672
+#, no-c-format
+msgid ""
+"<literal>createProcess(String name)</literal> &mdash; create an instance of "
+"the named process definition and associate it with the current conversation."
+msgstr ""
+"<literal>createProcess(String name)</literal> &mdash; Erstellt eine Instanz "
+"der genannten Prozessdefinition und assoziiert sie mit der aktuellen "
+"Konversation."
+
+#. Tag: para
+#: Components.xml:677
+#, no-c-format
+msgid ""
+"<literal>startTask()</literal> &mdash; start the task associated with the "
+"current conversation."
+msgstr ""
+"<literal>startTask()</literal> &mdash; Startet die mit der aktuellen "
+"Konversation assoziierte Task."
+
+#. Tag: para
+#: Components.xml:682
+#, no-c-format
+msgid ""
+"<literal>endTask(String transitionName)</literal> &mdash; end the task "
+"associated with the current conversation."
+msgstr ""
+"<literal>endTask(String transitionName)</literal> &mdash; Beendet die mit "
+"der aktuellen Konversation assoziierte Task."
+
+#. Tag: para
+#: Components.xml:687
+#, no-c-format
+msgid ""
+"<literal>resumeTask(Long id)</literal> &mdash; associate the task with the "
+"given id with the current conversation."
+msgstr ""
+"<literal>resumeTask(Long id)</literal> &mdash; Assoziiert die Task mit der "
+"gegebenen id mit der aktuellen Konversation."
+
+#. Tag: para
+#: Components.xml:692
+#, no-c-format
+msgid ""
+"<literal>resumeProcess(Long id)</literal> &mdash; associate the process with "
+"the given id with the current conversation."
+msgstr ""
+"<literal>resumeProcess(Long id)</literal> &mdash; Assoziiert den Prozess mit "
+"der gegebenen id mit der aktuellen Konversation."
+
+#. Tag: para
+#: Components.xml:697
+#, no-c-format
+msgid ""
+"<literal>transition(String transitionName)</literal> &mdash; trigger the "
+"transition."
+msgstr ""
+"<literal>transition(String transitionName)</literal> &mdash; Leitet die "
+"Transition ein."
+
+#. Tag: literal
+#: Components.xml:705
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstance"
+msgstr "org.jboss.seam.core.taskInstance"
+
+#. Tag: para
+#: Components.xml:707
+#, no-c-format
+msgid "Manager component for the jBPM <literal>TaskInstance</literal>."
+msgstr "Manager-Komponente für die jBPM <literal>TaskInstance</literal>."
+
+#. Tag: literal
+#: Components.xml:713
+#, no-c-format
+msgid "org.jboss.seam.core.processInstance"
+msgstr "org.jboss.seam.core.processInstance"
+
+#. Tag: para
+#: Components.xml:715
+#, no-c-format
+msgid "Manager component for the jBPM <literal>ProcessInstance</literal>."
+msgstr "Manager-Komponente für die jBPM <literal>ProcessInstance</literal>."
+
+#. Tag: literal
+#: Components.xml:721
+#, no-c-format
+msgid "org.jboss.seam.core.jbpmContext"
+msgstr "org.jboss.seam.core.jbpmContext"
+
+#. Tag: para
+#: Components.xml:723
+#, no-c-format
+msgid "Manager component for an event-scoped <literal>JbpmContext</literal>."
+msgstr ""
+"Manager-Komponente für einen Ereignis begrenzten <literal>JbpmContext</"
+"literal>."
+
+#. Tag: literal
+#: Components.xml:729
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstanceList"
+msgstr "org.jboss.seam.core.taskInstanceList"
+
+#. Tag: para
+#: Components.xml:731
+#, no-c-format
+msgid "Manager component for the jBPM task list."
+msgstr "Manager-Komponente für die jBPM Task-Liste."
+
+#. Tag: literal
+#: Components.xml:737
+#, no-c-format
+msgid "org.jboss.seam.core.pooledTaskInstanceList"
+msgstr "org.jboss.seam.core.pooledTaskInstanceList"
+
+#. Tag: para
+#: Components.xml:739
+#, no-c-format
+msgid "Manager component for the jBPM pooled task list."
+msgstr "Manager-Komponente für die jBPM gepoolte Task-Liste."
+
+#. Tag: literal
+#: Components.xml:745
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstanceListForType"
+msgstr "org.jboss.seam.core.taskInstanceListForType"
+
+#. Tag: para
+#: Components.xml:747
+#, no-c-format
+msgid "Manager component for the jBPM task lists."
+msgstr "Manager-Komponente für die jBPM-Task-Listen."
+
+#. Tag: literal
+#: Components.xml:753
+#, no-c-format
+msgid "org.jboss.seam.core.pooledTask"
+msgstr "org.jboss.seam.core.pooledTask"
+
+#. Tag: para
+#: Components.xml:755
+#, no-c-format
+msgid "Action handler for pooled task assignment."
+msgstr "\"Action-Handler\" für gepoolte Task-Zuordnungen."
+
+#. Tag: para
+#: Components.xml:761
+#, no-c-format
+msgid ""
+"All of these components are installed whenever the component <literal>org."
+"jboss.seam.core.jbpm</literal> is installed."
+msgstr ""
+"Alle diese Komponenten werden installiert, wenn die Komponente <literal>org."
+"jboss.seam.core.jbpm</literal> installiert wird."
+
+#. Tag: title
+#: Components.xml:767
+#, no-c-format
+msgid "Security-related components"
+msgstr "Sicherheitsbezogene Komponenten"
+
+#. Tag: para
+#: Components.xml:768
+#, no-c-format
+msgid "These components relate to web-tier security."
+msgstr "Diese Komponenten beziehen sich auf Web-Tier Sicherheit."
+
+#. Tag: literal
+#: Components.xml:773
+#, no-c-format
+msgid "org.jboss.seam.core.userPrincipal"
+msgstr "org.jboss.seam.core.userPrincipal"
+
+#. Tag: para
+#: Components.xml:775
+#, no-c-format
+msgid "Manager component for the current user <literal>Principal</literal>."
+msgstr "Manager-Komponente für den aktuellen Benutzer <literal>Principal</literal>."
+
+#. Tag: literal
+#: Components.xml:781
+#, no-c-format
+msgid "org.jboss.seam.core.isUserInRole"
+msgstr "org.jboss.seam.core.isUserInRole"
+
+#. Tag: para
+#: Components.xml:783
+#, no-c-format
+msgid ""
+"Allows JSF pages to choose to render a control, depending upon the roles "
+"available to the current principal. <literal>&lt;h:commandButton value=\"edit"
+"\" rendered=\"#{isUserInRole[&#39;admin&#39;]}\"/&gt;</literal>."
+msgstr ""
+"Gestattet es, JSF-Seiten je nach den dem aktuellen Prinzip verfügbaren "
+"Rollen eine Steuerung zu rendern. <literal>&lt;h:commandButton value=\"edit"
+"\" rendered=\"#{isUserInRole[&#39;admin&#39;]}\"/&gt;</literal>."
+
+#. Tag: title
+#: Components.xml:792
+#, no-c-format
+msgid "JMS-related components"
+msgstr "JMS-bezogene Komponenten"
+
+#. Tag: para
+#: Components.xml:793
+#, no-c-format
+msgid ""
+"These components are for use with managed <literal>TopicPublisher</literal>s "
+"and <literal>QueueSender</literal>s (see below)."
+msgstr ""
+"Diese Komponenten sind für den Gebrauch mit gemanagten "
+"<literal>TopicPublisher</literal>s und <literal>QueueSender</literal>s "
+"(siehe unten)."
+
+#. Tag: literal
+#: Components.xml:798
+#, no-c-format
+msgid "org.jboss.seam.jms.queueSession"
+msgstr "org.jboss.seam.jms.queueSession"
+
+#. Tag: para
+#: Components.xml:800
+#, no-c-format
+msgid "Manager component for a JMS <literal>QueueSession</literal> ."
+msgstr "Manager-Komponente für eine JMS <literal>QueueSession</literal> ."
+
+#. Tag: literal
+#: Components.xml:806
+#, no-c-format
+msgid "org.jboss.seam.jms.topicSession"
+msgstr "org.jboss.seam.jms.topicSession"
+
+#. Tag: para
+#: Components.xml:808
+#, no-c-format
+msgid "Manager component for a JMS <literal>TopicSession</literal> ."
+msgstr "Manager-Komponente für eine JMS <literal>TopicSession</literal>."
+
+#. Tag: title
+#: Components.xml:817
+#, no-c-format
+msgid "Mail-related components"
+msgstr "Mail-bezogene Komponenten"
+
+#. Tag: para
+#: Components.xml:818
+#, no-c-format
+msgid "These components are for use with Seam&#39;s Email support"
+msgstr "Diese Komponenten sind für den Gebrauch mit Seam&#39;s E-Mail-Support"
+
+#. Tag: literal
+#: Components.xml:823
+#, no-c-format
+msgid "org.jboss.seam.mail.mailSession"
+msgstr "org.jboss.seam.mail.mailSession"
+
+#. Tag: para
+#: Components.xml:825
+#, no-c-format
+msgid "Manager component for a JavaMail <literal>Session</literal> ."
+msgstr "Manager-Komponente für eine JavaMail <literal>Session</literal> ."
+
+#. Tag: para
+#: Components.xml:830
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.host</literal> &mdash; the hostname "
+"of the SMTP server to use"
+msgstr ""
+"<literal>org.jboss.seam.mail.mailSession.host</literal> &mdash; Der zu "
+"verwendende Host-Name des SMTP-Servers"
+
+#. Tag: para
+#: Components.xml:835
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.port</literal> &mdash; the port of "
+"the SMTP server to use"
+msgstr ""
+"<literal>org.jboss.seam.mail.mailSession.port</literal> &mdash; Der zu "
+"verwendende Port des SMTP-Servers"
+
+#. Tag: para
+#: Components.xml:840
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.username</literal> &mdash; the "
+"username to use to connect to the SMTP server."
+msgstr ""
+"<literal>org.jboss.seam.mail.mailSession.username</literal> &mdash; Der zur "
+"Verbindung mit dem SMTP-Server zu verwendende Benutzername"
+
+#. Tag: para
+#: Components.xml:845
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.password</literal> &mdash; the "
+"password to use to connect to the SMTP server"
+msgstr ""
+"<literal>org.jboss.seam.mail.mailSession.password</literal> &mdash; Das zur "
+"Verbindung mit dem SMTP-Server zu verwendende Passwort"
+
+#. Tag: para
+#: Components.xml:850
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.debug</literal> &mdash; enable "
+"JavaMail debugging (very verbose)"
+msgstr ""
+"<literal>org.jboss.seam.mail.mailSession.debug</literal> &mdash; Aktiviert "
+"JavaMail Debugging (sehr umfangreich)"
+
+#. Tag: para
+#: Components.xml:855
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.sessionJndiName</literal> &mdash; "
+"name under which a javax.mail.Session is bound to JNDI"
+msgstr ""
+"<literal>org.jboss.seam.mail.mailSession.sessionJndiName</literal> &mdash; "
+"Name unter dem eine javax.mail.Session an JNDI gebunden wird"
+
+#. Tag: title
+#: Components.xml:866
+#, no-c-format
+msgid "Infrastructural components"
+msgstr "Infrastrukturelle Komponenten"
+
+#. Tag: para
+#: Components.xml:867
+#, no-c-format
+msgid ""
+"These components provide critical platform infrastructure. You can install a "
+"component by including its class name in the <literal>org.jboss.seam.core."
+"init.componentClasses</literal> configuration property."
+msgstr ""
+"Diese Komponenten liefern kritische Plattform-Infrastruktur. Sie können eine "
+"Komponente installieren, indem Sie deren Klassennamen in der <literal>org."
+"jboss.seam.core.init.componentClasses</literal>-Konfigurations-Property mit "
+"einschließen."
+
+#. Tag: literal
+#: Components.xml:872
+#, no-c-format
+msgid "org.jboss.seam.core.init"
+msgstr "org.jboss.seam.core.init"
+
+#. Tag: para
+#: Components.xml:874
+#, no-c-format
+msgid "Initialization settings for Seam. Always installed."
+msgstr "Initialisierungseinstellungen für Seam. Immer installiert."
+
+#. Tag: para
+#: Components.xml:879
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.jndiPattern</literal> &mdash; the JNDI "
+"pattern used for looking up session beans"
+msgstr ""
+"<literal>org.jboss.seam.core.init.jndiPattern</literal> &mdash; Das JNDI-"
+"Muster, das für den Lookup von Session Beans verwendet wird"
+
+#. Tag: para
+#: Components.xml:884
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.debug</literal> &mdash; enable Seam debug "
+"mode"
+msgstr ""
+"<literal>org.jboss.seam.core.init.debug</literal> &mdash; Aktiviert den Seam "
+"\"Debug\"-Modus"
+
+#. Tag: para
+#: Components.xml:889
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.clientSideConversations</literal> &mdash; "
+"if set to <literal>true</literal>, Seam will save conversation context "
+"variables in the client instead of in the <literal>HttpSession</literal>."
+msgstr ""
+"<literal>org.jboss.seam.core.init.clientSideConversations</literal> &mdash; "
+"Falls auf <literal>true</literal> gesetzt, speichert Seam die "
+"Konversationskontextvariablen im Client statt in der <literal>HttpSession</"
+"literal>."
+
+#. Tag: para
+#: Components.xml:894
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.userTransactionName</literal> &mdash; the "
+"JNDI name to use when looking up the JTA <literal>UserTransaction</literal> "
+"object."
+msgstr ""
+"<literal>org.jboss.seam.core.init.userTransactionName</literal> &mdash; Der "
+"beim Lookup des JTA <literal>UserTransaction</literal>-Objekts zu "
+"verwendende JNDI-Name."
+
+#. Tag: literal
+#: Components.xml:902
+#, no-c-format
+msgid "org.jboss.seam.core.manager"
+msgstr "org.jboss.seam.core.manager"
+
+#. Tag: para
+#: Components.xml:904
+#, no-c-format
+msgid ""
+"Internal component for Seam page and conversation context management. Always "
+"installed."
+msgstr ""
+"Interne Komponente für Seams Seiten- und Konversationskontext-Management. "
+"Immer installiert."
+
+#. Tag: para
+#: Components.xml:909
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationTimeout</literal> &mdash; "
+"the conversation context timeout in milliseconds."
+msgstr ""
+"<literal>org.jboss.seam.core.manager.conversationTimeout</literal> &mdash; "
+"Der Timeout des Konversationskontexts in Millisekunden."
+
+#. Tag: para
+#: Components.xml:914
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.concurrentRequestTimeout</literal> "
+"&mdash; maximum wait time for a thread attempting to gain a lock on the long-"
+"running conversation context."
+msgstr ""
+"<literal>org.jboss.seam.core.manager.concurrentRequestTimeout</literal> "
+"&mdash; Maximale Wartezeit für einen Thread, der versucht ein \"Lock\" am "
+"lange laufenden Konversationskontext zu gewinnen."
+
+#. Tag: para
+#: Components.xml:919
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationIdParameter</literal> "
+"&mdash; the request parameter used to propagate the conversation id, default "
+"to <literal>conversationId</literal>."
+msgstr ""
+"<literal>org.jboss.seam.core.manager.conversationIdParameter</literal> "
+"&mdash; Der Anfragenparameter, der verwendet wird, um die Konversations-id "
+"fortzupflanzen, standardmäßig <literal>conversationId</literal>."
+
+#. Tag: para
+#: Components.xml:924
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationIsLongRunningParameter</"
+"literal> &mdash; the request parameter used to propagate information about "
+"whether the conversation is long-running, default to "
+"<literal>conversationIsLongRunning</literal>."
+msgstr ""
+"<literal>org.jboss.seam.core.manager.conversationIsLongRunningParameter</"
+"literal> &mdash; Der Anfragenparameter, der verwendet wird, um Informationen "
+"darüber fortzupflanzen, ob es sich um eine lange laufende Konversation "
+"handelt, standardmäßig <literal>conversationIsLongRunning</literal>."
+
+#. Tag: literal
+#: Components.xml:932
+#, no-c-format
+msgid "org.jboss.seam.core.pages"
+msgstr "org.jboss.seam.core.pages"
+
+#. Tag: para
+#: Components.xml:934
+#, no-c-format
+msgid "Internal component for Seam workspace management. Always installed."
+msgstr "Interne Komponente für das Seam \"Workspace Management\". Immer installiert."
+
+#. Tag: para
+#: Components.xml:939
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.pages.noConversationViewId</literal> &mdash; "
+"global setting for the view id to redirect to when a conversation entry is "
+"not found on the server side."
+msgstr ""
+"<literal>org.jboss.seam.core.pages.noConversationViewId</literal> &mdash; "
+"Allgemeingültige Einstellung für die Ansichts-id, zu der umgeleitet werden "
+"soll, wenn eine Konverstaionseingabe auf der Serverseite nicht gefunden wird."
+
+#. Tag: literal
+#: Components.xml:947
+#, no-c-format
+msgid "org.jboss.seam.core.ejb"
+msgstr "org.jboss.seam.core.ejb"
+
+#. Tag: para
+#: Components.xml:949
+#, no-c-format
+msgid ""
+"Bootstraps the JBoss Embeddable EJB3 container. Install as class "
+"<literal>org.jboss.seam.core.Ejb</literal>. This is useful when using Seam "
+"with EJB components outside the context of a Java EE 5 application server."
+msgstr ""
+"Bootstrapt den JBoss Embeddable EJB3-Container. Installation als Klasse "
+"<literal>org.jboss.seam.core.Ejb</literal>. Dies ist insbesondere dann von "
+"Nutzen, wenn Seam mit EJB-Komponenten außerhalb des Kontexts eines Java EE 5 "
+"Applikationsservers verwendet wird. "
+
+#. Tag: para
+#: Components.xml:952
+#, no-c-format
+msgid ""
+"The basic Embedded EJB configuration is defined in <literal>jboss-embedded-"
+"beans.xml</literal>. Additional microcontainer configuration (for example, "
+"extra datasources) may be specified by <literal>jboss-beans.xml</literal> or "
+"<literal>META-INF/jboss-beans.xml</literal> in the classpath."
+msgstr ""
+"Die grundlegende Embedded EJB-Konfiguration ist in <literal>jboss-embedded-"
+"beans.xml</literal> definiert. Zusätzliche Microcontainer Konfigurationen "
+"(etwa für weitere Datenquellen) können durch <literal>jboss-beans.xml</"
+"literal> oder <literal>META-INF/jboss-beans.xml</literal> im Klassenpfad "
+"festgelegt werden."
+
+#. Tag: literal
+#: Components.xml:958
+#, no-c-format
+msgid "org.jboss.seam.core.microcontainer"
+msgstr "org.jboss.seam.core.microcontainer"
+
+#. Tag: para
+#: Components.xml:960
+#, no-c-format
+msgid ""
+"Bootstraps the JBoss microcontainer. Install as class <literal>org.jboss."
+"seam.core.Microcontainer</literal>. This is useful when using Seam with "
+"Hibernate and no EJB components outside the context of a Java EE application "
+"server. The microcontainer can provide a partial EE environment with JNDI, "
+"JTA, a JCA datasource and Hibernate."
+msgstr ""
+"Bootstrapt den JBoss Microcontainer. Installation als Klasse <literal>org."
+"jboss.seam.core.Microcontainer</literal>. Dies ist insbesondere dann von "
+"Nutzen, wenn Seam mit Hibernate und ohne EJB-Komponenten außerhalb des "
+"Kontexts eines Java EE Applikationsservers verwendet wird. Der "
+"Microcontainer kann eine teilweise EE-Umgebung mit JNDI, JTA, einer JCA-"
+"Datenquelle und Hibernate liefern."
+
+#. Tag: para
+#: Components.xml:963
+#, no-c-format
+msgid ""
+"The microcontainer configuration may be specified by <literal>jboss-beans."
+"xml</literal> or <literal>META-INF/jboss-beans.xml</literal> in the "
+"classpath."
+msgstr ""
+"Die Konfiguration des Microcontainers kann durch <literal>jboss-beans.xml</"
+"literal> oder <literal>META-INF/jboss-beans.xml</literal> im Klassenpfad "
+"festgelegt werden."
+
+#. Tag: literal
+#: Components.xml:969
+#, no-c-format
+msgid "org.jboss.seam.core.jbpm"
+msgstr "org.jboss.seam.core.jbpm"
+
+#. Tag: para
+#: Components.xml:971
+#, no-c-format
+msgid ""
+"Bootstraps a <literal>JbpmConfiguration</literal>. Install as class "
+"<literal>org.jboss.seam.core.Jbpm</literal>."
+msgstr ""
+"Bootstrapt eine <literal>JbpmConfiguration</literal>. Installation als "
+"Klasse <literal>org.jboss.seam.core.Jbpm</literal>."
+
+#. Tag: para
+#: Components.xml:976
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.jbpm.processDefinitions</literal> &mdash; a "
+"list of resource names of jPDL files to be used for orchestration of "
+"business processes."
+msgstr ""
+"<literal>org.jboss.seam.core.jbpm.processDefinitions</literal> &mdash; Eine "
+"Liste von Ressourcen-Namen von jPDL-Dateien, die zur Orchestrierung von "
+"Business-Prozessen verwendet werden sollen."
+
+#. Tag: para
+#: Components.xml:981
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.jbpm.pageflowDefinitions</literal> &mdash; a "
+"list of resource names of jPDL files to be used for orchestration of "
+"conversation page flows."
+msgstr ""
+"<literal>org.jboss.seam.core.jbpm.pageflowDefinitions</literal> &mdash; Eine "
+"Liste von Ressourcen-Namen von jPDL-Dateien, die zur Orchestrierung von "
+"Konversations-Pageflows verwendet werden sollen."
+
+#. Tag: literal
+#: Components.xml:989
+#, no-c-format
+msgid "org.jboss.seam.core.conversationEntries"
+msgstr "org.jboss.seam.core.conversationEntries"
+
+#. Tag: para
+#: Components.xml:991
+#, no-c-format
+msgid ""
+"Internal session-scoped component recording the active long-running "
+"conversations between requests."
+msgstr ""
+"Interne sessionbegrenzte Komponente, die die aktiven, lange laufenden "
+"Konversationen zwischen Anfragen speichert."
+
+#. Tag: literal
+#: Components.xml:997
+#, no-c-format
+msgid "org.jboss.seam.core.facesPage"
+msgstr "org.jboss.seam.core.facesPage"
+
+#. Tag: para
+#: Components.xml:999
+#, no-c-format
+msgid ""
+"Internal page-scoped component recording the conversation context associated "
+"with a page."
+msgstr ""
+"Interne, seitenbegrenzte Komponente die den mit einer Seite assoziierten "
+"Konversationskontext page-scoped component recording the conversation "
+"context associated with a page."
+
+#. Tag: literal
+#: Components.xml:1005
+#, no-c-format
+msgid "org.jboss.seam.core.persistenceContexts"
+msgstr "org.jboss.seam.core.persistenceContexts"
+
+#. Tag: para
+#: Components.xml:1007
+#, no-c-format
+msgid ""
+"Internal component recording the persistence contexts which were used in the "
+"current conversation."
+msgstr ""
+"Interne Komponente, die die in der aktuellen Konversation verwendeten "
+"Persistenzkontexte speichert."
+
+#. Tag: literal
+#: Components.xml:1013
+#, no-c-format
+msgid "org.jboss.seam.jms.queueConnection"
+msgstr "org.jboss.seam.jms.queueConnection"
+
+#. Tag: para
+#: Components.xml:1015
+#, no-c-format
+msgid ""
+"Manages a JMS <literal>QueueConnection</literal>. Installed whenever managed "
+"managed <literal>QueueSender</literal> is installed."
+msgstr ""
+"Managt eine JMS <literal>QueueConnection</literal>. Installiert wenn "
+"gemanagter <literal>QueueSender</literal> installiert wird."
+
+#. Tag: para
+#: Components.xml:1020
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.jms.queueConnection.queueConnectionFactoryJndiName</"
+"literal> &mdash; the JNDI name of a JMS <literal>QueueConnectionFactory</"
+"literal>. Default to <literal>UIL2ConnectionFactory</literal>"
+msgstr ""
+"<literal>org.jboss.seam.jms.queueConnection.queueConnectionFactoryJndiName</"
+"literal> &mdash; Der JNDI-Name einer JMS <literal>QueueConnectionFactory</"
+"literal>. Standardmäßig <literal>UIL2ConnectionFactory</literal>"
+
+#. Tag: literal
+#: Components.xml:1028
+#, no-c-format
+msgid "org.jboss.seam.jms.topicConnection"
+msgstr "org.jboss.seam.jms.topicConnection"
+
+#. Tag: para
+#: Components.xml:1030
+#, no-c-format
+msgid ""
+"Manages a JMS <literal>TopicConnection</literal>. Installed whenever managed "
+"managed <literal>TopicPublisher</literal> is installed."
+msgstr ""
+"Managt eine JMS <literal>TopicConnection</literal>. Installiert wenn "
+"gemanagter <literal>TopicPublisher</literal> installiert wird."
+
+#. Tag: para
+#: Components.xml:1035
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.jms.topicConnection.topicConnectionFactoryJndiName</"
+"literal> &mdash; the JNDI name of a JMS <literal>TopicConnectionFactory</"
+"literal>. Default to <literal>UIL2ConnectionFactory</literal>"
+msgstr ""
+"<literal>org.jboss.seam.jms.topicConnection.topicConnectionFactoryJndiName</"
+"literal> &mdash; Der JNDI-Name einer JMS <literal>TopicConnectionFactory</"
+"literal>. Standardmäßig <literal>UIL2ConnectionFactory</literal>"
+
+#. Tag: literal
+#: Components.xml:1043
+#, no-c-format
+msgid "org.jboss.seam.persistence.persistenceProvider"
+msgstr "org.jboss.seam.persistence.persistenceProvider"
+
+#. Tag: para
+#: Components.xml:1045
+#, no-c-format
+msgid "Abstraction layer for non-standardized features of JPA provider."
+msgstr "Abstraktionsschicht für nicht-standardisierte Features von JPA-Provider."
+
+#. Tag: literal
+#: Components.xml:1051
+#, no-c-format
+msgid "org.jboss.seam.core.validation"
+msgstr "org.jboss.seam.core.validation"
+
+#. Tag: para
+#: Components.xml:1053
+#, no-c-format
+msgid "Internal component for Hibernate Validator support."
+msgstr "Interne Komponent für Hibernate Validator Support."
+
+#. Tag: literal
+#: Components.xml:1059
+#, no-c-format
+msgid "org.jboss.seam.debug.introspector"
+msgstr "org.jboss.seam.debug.introspector"
+
+#. Tag: para
+#: Components.xml:1061 Components.xml:1069
+#, no-c-format
+msgid "Support for the Seam Debug Page."
+msgstr "Support für Seams Debug-Seite."
+
+#. Tag: literal
+#: Components.xml:1067
+#, no-c-format
+msgid "org.jboss.seam.debug.contexts"
+msgstr "org.jboss.seam.debug.contexts"
+
+#. Tag: title
+#: Components.xml:1078
+#, no-c-format
+msgid "Special components"
+msgstr "Spezielle Komponenten"
+
+#. Tag: para
+#: Components.xml:1079
+#, no-c-format
+msgid ""
+"Certain special Seam component classes are installable multiple times under "
+"names specified in the Seam configuration. For example, the following lines "
+"in <literal>components.xml</literal> install and configure two Seam "
+"components:"
+msgstr ""
+"Bestimmte, spezielle Komponentenklassen von Seam können mehrere Male unter "
+"in der Seam-Konfiguration spezifizierten Namen installiert werden. Die "
+"folgenden Zeilen in <literal>components.xml</literal> etwa installieren und "
+"konfigurieren zwei Seam-Komponenten:"
+
+#. Tag: programlisting
+#: Components.xml:1082
+#, no-c-format
+msgid ""
+"&lt;component name=\"bookingDatabase\"\n"
+"          class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"    &lt;property name=\"persistenceUnitJndiName\"&gt;java:/comp/emf/"
+"bookingPersistence&lt;/property&gt;\n"
+"&lt;/component&gt;\n"
+"\n"
+"&lt;component name=\"userDatabase\"\n"
+"          class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"    &lt;property name=\"persistenceUnitJndiName\"&gt;java:/comp/emf/"
+"userPersistence&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+"&lt;component name=\"bookingDatabase\"\n"
+"          class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"    &lt;property name=\"persistenceUnitJndiName\"&gt;java:/comp/emf/"
+"bookingPersistence&lt;/property&gt;\n"
+"&lt;/component&gt;\n"
+"\n"
+"&lt;component name=\"userDatabase\"\n"
+"          class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"    &lt;property name=\"persistenceUnitJndiName\"&gt;java:/comp/emf/"
+"userPersistence&lt;/property&gt;\n"
+"&lt;/component&gt;"
+
+#. Tag: para
+#: Components.xml:1083
+#, no-c-format
+msgid ""
+"The Seam component names are <literal>bookingDatabase</literal> and "
+"<literal>userDatabase</literal>."
+msgstr ""
+"Die Namen der Seam Komponenten sind <literal>bookingDatabase</literal> und "
+"<literal>userDatabase</literal>."
+
+#. Tag: literal
+#: Components.xml:1088
+#, no-c-format
+msgid "&lt;entityManager&gt;"
+msgstr "&lt;entityManager&gt;"
+
+#. Tag: literal
+#: Components.xml:1089
+#, no-c-format
+msgid "org.jboss.seam.core.ManagedPersistenceContext"
+msgstr "org.jboss.seam.core.ManagedPersistenceContext"
+
+#. Tag: para
+#: Components.xml:1091
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed <literal>EntityManager</"
+"literal> with an extended persistence context."
+msgstr ""
+"Manager-Komponente für einen konversationsbegrenzten, gemanagten "
+"<literal>EntityManager</literal> mit einem erweiterten Persistenzkontext."
+
+#. Tag: para
+#: Components.xml:1096
+#, no-c-format
+msgid ""
+"<literal> &lt;entityManager&gt; .entityManagerFactory</literal> &mdash; a "
+"value binding expression that evaluates to an instance of "
+"<literal>EntityManagerFactory</literal>."
+msgstr "Bei <literal> &lt;entityManager&gt; .entityManagerFactory</literal> &mdash; handelt es sich um einen wertebindenden Ausdruck, der eine Instanz der <literal>EntityManagerFactory</literal> evaluiert."
+
+#. Tag: para
+#: Components.xml:1099
+#, no-c-format
+msgid ""
+"<literal> &lt;entityManager&gt; .persistenceUnitJndiName</literal> &mdash; "
+"the JNDI name of the entity manager factory, default to <literal>java:/ &lt;"
+"managedPersistenceContext&gt; </literal>."
+msgstr ""
+"Bei <literal> &lt;entityManager&gt; .persistenceUnitJndiName</literal> &mdash; handelt es sich um den JNDI-Namen der Entity-Manager-Factory, standardmäßig <literal>java:/ &lt;"
+"managedPersistenceContext&gt; </literal>."
+
+#. Tag: literal
+#: Components.xml:1107
+#, no-c-format
+msgid "&lt;entityManagerFactory&gt;"
+msgstr "&lt;entityManagerFactory&gt;"
+
+#. Tag: literal
+#: Components.xml:1108
+#, no-c-format
+msgid "org.jboss.seam.core.EntityManagerFactory"
+msgstr "org.jboss.seam.core.EntityManagerFactory"
+
+#. Tag: para
+#: Components.xml:1110
+#, no-c-format
+msgid ""
+"Manages a JPA <literal>EntityManagerFactory</literal>. This is most useful "
+"when using JPA outside of an EJB 3.0 supporting environment."
+msgstr ""
+"Verwaltet eine JPA <literal>EntityManagerFactory</literal>. Dies ist "
+"besonders nützlich bei der Verwendung der JPA außerhalb einer EJB 3.0 "
+"Support-Umgebung."
+
+#. Tag: para
+#: Components.xml:1115
+#, no-c-format
+msgid ""
+"<literal>entityManagerFactory.persistenceUnitName</literal> &mdash; the name "
+"of the persistence unit."
+msgstr ""
+"<literal>entityManagerFactory.persistenceUnitName</literal> &mdash; Der Name "
+"der Persistenzeinheit."
+
+#. Tag: para
+#: Components.xml:1120 Components.xml:1158
+#, no-c-format
+msgid "See the API JavaDoc for further configuration properties."
+msgstr "Weitere Informationen zu Konfigurations-Properties finden Sie im API JavaDoc."
+
+#. Tag: literal
+#: Components.xml:1126
+#, no-c-format
+msgid "&lt;session&gt;"
+msgstr "&lt;session&gt;"
+
+#. Tag: literal
+#: Components.xml:1127
+#, no-c-format
+msgid "org.jboss.seam.core.ManagedSession"
+msgstr "org.jboss.seam.core.ManagedSession"
+
+#. Tag: para
+#: Components.xml:1129
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed Hibernate "
+"<literal>Session</literal>."
+msgstr ""
+"Manager-Komponente für eine konversationsbegrenzte, gemanagte Hibernate "
+"<literal>Session</literal>."
+
+#. Tag: para
+#: Components.xml:1134
+#, no-c-format
+msgid ""
+"<literal> &lt;session&gt; .sessionFactory</literal> &mdash; a value binding "
+"expression that evaluates to an instance of <literal>SessionFactory</"
+"literal>."
+msgstr "<literal> &lt;session&gt; .sessionFactory</literal> &mdash; Ein wertebindender Ausdruck, der eine Instanz von <literal>SessionFactory</literal> evaluiert."
+
+#. Tag: para
+#: Components.xml:1137
+#, no-c-format
+msgid ""
+"<literal> &lt;session&gt; .sessionFactoryJndiName</literal> &mdash; the JNDI "
+"name of the session factory, default to <literal>java:/ &lt;"
+"managedSession&gt; </literal>."
+msgstr ""
+"<literal> &lt;session&gt; .sessionFactoryJndiName</literal> &mdash; Der JNDI-Name der Session-Factory, standardmäßig <literal>java:/ &lt;"
+"managedSession&gt; </literal>."
+
+#. Tag: literal
+#: Components.xml:1145
+#, no-c-format
+msgid "&lt;sessionFactory&gt;"
+msgstr "&lt;sessionFactory&gt;"
+
+#. Tag: literal
+#: Components.xml:1146
+#, no-c-format
+msgid "org.jboss.seam.core.HibernateSessionFactory"
+msgstr "org.jboss.seam.core.HibernateSessionFactory"
+
+#. Tag: para
+#: Components.xml:1148
+#, no-c-format
+msgid "Manages a Hibernate <literal>SessionFactory</literal>."
+msgstr "Managt eine Hibernate <literal>SessionFactory</literal>."
+
+#. Tag: para
+#: Components.xml:1153
+#, no-c-format
+msgid ""
+"<literal>&lt;sessionFactory&gt;.cfgResourceName</literal> &mdash; the path "
+"to the configuration file. Default to <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+"<literal>&lt;sessionFactory&gt;.cfgResourceName</literal> &mdash; Der Pfad "
+"zur Konfigurationsdatei. Standardmäßig <literal>hibernate.cfg.xml</literal>."
+
+#. Tag: literal
+#: Components.xml:1164
+#, no-c-format
+msgid "&lt;managedQueueSender&gt;"
+msgstr "&lt;managedQueueSender&gt;"
+
+#. Tag: literal
+#: Components.xml:1165
+#, no-c-format
+msgid "org.jboss.seam.jms.ManagedQueueSender"
+msgstr "org.jboss.seam.jms.ManagedQueueSender"
+
+#. Tag: para
+#: Components.xml:1167
+#, no-c-format
+msgid ""
+"Manager component for an event scoped managed JMS <literal>QueueSender</"
+"literal>."
+msgstr ""
+"Manager-Komponente für eine ereignisbegrenzte gemanagte JMS "
+"<literal>QueueSender</literal>."
+
+#. Tag: para
+#: Components.xml:1172
+#, no-c-format
+msgid ""
+"<literal> &lt;managedQueueSender&gt; .queueJndiName</literal> &mdash; the "
+"JNDI name of the JMS queue."
+msgstr "<literal> &lt;managedQueueSender&gt; .queueJndiName</literal> &mdash; Der JNDI-Name der JMS-Warteschlange."
+
+#. Tag: literal
+#: Components.xml:1180
+#, no-c-format
+msgid "&lt;managedTopicPublisher&gt;"
+msgstr "&lt;managedTopicPublisher&gt;"
+
+#. Tag: literal
+#: Components.xml:1181
+#, no-c-format
+msgid "org.jboss.seam.jms.ManagedTopicPublisher"
+msgstr "org.jboss.seam.jms.ManagedTopicPublisher"
+
+#. Tag: para
+#: Components.xml:1183
+#, no-c-format
+msgid ""
+"Manager component for an event scoped managed JMS <literal>TopicPublisher</"
+"literal>."
+msgstr ""
+"Manager-Komponente für einen ereignisbegrenzten, gemanagten JMS "
+"<literal>TopicPublisher</literal>."
+
+#. Tag: para
+#: Components.xml:1188
+#, no-c-format
+msgid ""
+"<literal> &lt;managedTopicPublisher&gt; .topicJndiName</literal> &mdash; the "
+"JNDI name of the JMS topic."
+msgstr "<literal> &lt;managedTopicPublisher&gt; .topicJndiName</literal> &mdash; Der JNDI-Name des JMS-Topic."
+
+#. Tag: literal
+#: Components.xml:1196
+#, no-c-format
+msgid "&lt;managedWorkingMemory&gt;"
+msgstr "&lt;managedWorkingMemory&gt;"
+
+#. Tag: literal
+#: Components.xml:1197
+#, no-c-format
+msgid "org.jboss.seam.drools.ManagedWorkingMemory"
+msgstr "org.jboss.seam.drools.ManagedWorkingMemory"
+
+#. Tag: para
+#: Components.xml:1199
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed Drools "
+"<literal>WorkingMemory</literal>."
+msgstr ""
+"Manager-Komponente für ein konversationsbegrenztes, gemanagtes Drools "
+"<literal>WorkingMemory</literal>."
+
+#. Tag: para
+#: Components.xml:1204
+#, no-c-format
+msgid ""
+"<literal> &lt;managedWorkingMemory&gt; .ruleBase</literal> &mdash; a value "
+"expression that evaluates to an instance of <literal>RuleBase</literal>."
+msgstr "<literal> &lt;managedWorkingMemory&gt; .ruleBase</literal> &mdash; Ein Werteausdruck, der eine Instanz von <literal>RuleBase</literal> evaluiert."
+
+#. Tag: literal
+#: Components.xml:1212
+#, no-c-format
+msgid "&lt;ruleBase&gt;"
+msgstr "&lt;ruleBase&gt;"
+
+#. Tag: literal
+#: Components.xml:1213
+#, no-c-format
+msgid "org.jboss.seam.drools.RuleBase"
+msgstr "org.jboss.seam.drools.RuleBase"
+
+#. Tag: para
+#: Components.xml:1215
+#, no-c-format
+msgid ""
+"Manager component for an application scoped Drools <literal>RuleBase</"
+"literal>. Note that this is not really intended for production usage, since "
+"it does not support dynamic installation of new rules."
+msgstr "Manager-Komponente für eine applikationsbegrenzte Drools <literal>RuleBase</literal>. <emphasis>Bitte beachten Sie, dass dies nicht für den Produktionsgebrauch vorgesehen ist, da die dynamische Installation neuer Regeln nicht unterstützt wird.</emphasis>"
+
+#. Tag: para
+#: Components.xml:1220
+#, no-c-format
+msgid ""
+"<literal> &lt;ruleBase&gt; .ruleFiles</literal> &mdash; a list of files "
+"containing Drools rules."
+msgstr ""
+"<literal> &lt;ruleBase&gt; .ruleFiles</literal> &mdash; Eine Liste Drools-"
+"Regeln enthaltender Dateien."
+
+#. Tag: para
+#: Components.xml:1223
+#, no-c-format
+msgid ""
+"<literal> &lt;ruleBase&gt; .dslFile</literal> &mdash; a Drools DSL "
+"definition."
+msgstr ""
+"<literal> &lt;ruleBase&gt; .dslFile</literal> &mdash; Eine Drools DSL-"
+"Definition."
+
+#. Tag: literal
+#: Components.xml:1231
+#, no-c-format
+msgid "&lt;entityHome&gt;"
+msgstr "&lt;entityHome&gt;"
+
+#. Tag: literal
+#: Components.xml:1232
+#, no-c-format
+msgid "org.jboss.seam.framework.EntityHome"
+msgstr "org.jboss.seam.framework.EntityHome"
+
+#. Tag: literal
+#: Components.xml:1238
+#, no-c-format
+msgid "&lt;hibernateEntityHome&gt;"
+msgstr "&lt;hibernateEntityHome&gt;"
+
+#. Tag: literal
+#: Components.xml:1239
+#, no-c-format
+msgid "org.jboss.seam.framework.HibernateEntityHome"
+msgstr "org.jboss.seam.framework.HibernateEntityHome"
+
+#. Tag: literal
+#: Components.xml:1245
+#, no-c-format
+msgid "&lt;entityQuery&gt;"
+msgstr "&lt;entityQuery&gt;"
+
+#. Tag: literal
+#: Components.xml:1246
+#, no-c-format
+msgid "org.jboss.seam.framework.EntityQuery"
+msgstr "org.jboss.seam.framework.EntityQuery"
+
+#. Tag: literal
+#: Components.xml:1252
+#, no-c-format
+msgid "&lt;hibernateEntityQuery&gt;"
+msgstr "&lt;hibernateEntityQuery&gt;"
+
+#. Tag: literal
+#: Components.xml:1253
+#, no-c-format
+msgid "org.jboss.seam.framework.HibernateEntityQuery"
+msgstr "org.jboss.seam.framework.HibernateEntityQuery"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Concepts.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Concepts.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Concepts.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2456 @@
+# translation of Concepts.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Jasna Dimanoski <jdimanos at redhat.com>, 2007, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Concepts\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2008-05-24 10:51+1000\n"
+"Last-Translator: Jasna Dimanoski <jdimanos at redhat.com>\n"
+"Language-Team:  <de at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Concepts.xml:6
+#, no-c-format
+msgid "The contextual component model"
+msgstr "Das kontextuelle Komponentenmodell"
+
+#. Tag: para
+#: Concepts.xml:7
+#, no-c-format
+msgid ""
+"The two core concepts in Seam are the notion of a <emphasis>context</"
+"emphasis> and the notion of a <emphasis>component</emphasis>. Components are "
+"stateful objects, usually EJBs, and an instance of a component is associated "
+"with a context, and given a name in that context. <emphasis>Bijection</"
+"emphasis> provides a mechanism for aliasing internal component names "
+"(instance variables) to contextual names, allowing component trees to be "
+"dynamically assembled, and reassembled by Seam."
+msgstr ""
+"Die beiden Kernkonzepte in Seam sind der Begriff des <emphasis>Kontexts</"
+"emphasis> und der Begriff der <emphasis>Komponente</emphasis>. Komponenten "
+"sind \"stateful Objects\" in der Regel EJBs, und eine Instanz einer "
+"Komponente wird mit einem Kontext assoziiert und in diesem Kontext mit einem "
+"Namen versehen. <emphasis>Bijektion</emphasis> bietet einen Mechanismus für "
+"das Aliasing interner Komponentennamen (Instanzvariablen) zu kontextuellen "
+"Namen, wodurch es möglich wird, Komponentenbäume dynamisch zu assemblieren "
+"und durch Seam zu reassemblieren."
+
+#. Tag: para
+#: Concepts.xml:10
+#, no-c-format
+msgid "Let&#39;s start by describing the contexts built in to Seam."
+msgstr "Beginnen wir mit der Beschreibung der in Seam eingebauten Kontexte."
+
+#. Tag: title
+#: Concepts.xml:13
+#, no-c-format
+msgid "Seam contexts"
+msgstr "Seam-Kontexte"
+
+#. Tag: para
+#: Concepts.xml:14
+#, no-c-format
+msgid ""
+"Seam contexts are created and destroyed by the framework. The application "
+"does not control context demarcation via explicit Java API calls. Context "
+"are usually implicit. In some cases, however, contexts are demarcated via "
+"annotations."
+msgstr ""
+"Seam Kontexts werden durch das Framework erstellt und gelöscht. Die "
+"Anwendung steuert nicht die Kontext-Demarkation via expliziter Java API-"
+"Aufrufe. Kontexte sind in der Regel implizit. In einigen Fällen jedoch "
+"werden Kontexte via Annotationen demarkiert."
+
+#. Tag: para
+#: Concepts.xml:17
+#, no-c-format
+msgid "The basic Seam contexts are:"
+msgstr "Die grundlegenden Seam-Kontexte sind:"
+
+#. Tag: para
+#: Concepts.xml:22
+#, no-c-format
+msgid "<para>Stateless context</para>"
+msgstr "<para>\"Stateless\" Kontext</para>"
+
+#. Tag: para
+#: Concepts.xml:27
+#, no-c-format
+msgid "Event (or request) context"
+msgstr "Ereignis (oder Anfragen) Kontext"
+
+#. Tag: para
+#: Concepts.xml:32 Concepts.xml:147
+#, no-c-format
+msgid "<para>Page context</para>"
+msgstr "<para>Seitenkontext</para>"
+
+#. Tag: para
+#: Concepts.xml:37 Concepts.xml:152
+#, no-c-format
+msgid "<para>Conversation context</para>"
+msgstr "<para>Konversationskontext</para>"
+
+#. Tag: para
+#: Concepts.xml:42 Concepts.xml:157
+#, no-c-format
+msgid "<para>Session context</para>"
+msgstr "<para>Session-Kontext</para>"
+
+#. Tag: para
+#: Concepts.xml:47 Concepts.xml:162
+#, no-c-format
+msgid "<para>Business process context</para>"
+msgstr "<para>Businessprozess-Kontext</para>"
+
+#. Tag: para
+#: Concepts.xml:52 Concepts.xml:167
+#, no-c-format
+msgid "<para>Application context</para>"
+msgstr "<para>Anwendungskontext</para>"
+
+#. Tag: para
+#: Concepts.xml:57
+#, no-c-format
+msgid ""
+"You will recognize some of these contexts from servlet and related "
+"specifications. However, two of them might be new to you: "
+"<emphasis>conversation context</emphasis>, and <emphasis>business process "
+"context</emphasis>. One reason state management in web applications is so "
+"fragile and error-prone is that the three built-in contexts (request, "
+"session and application) are not especially meaningful from the point of "
+"view of the business logic. A user login session, for example, is a fairly "
+"arbitrary construct in terms of the actual application work flow. Therefore, "
+"most Seam components are scoped to the conversation or business process "
+"contexts, since they are the contexts which are most meaningful in terms of "
+"the application."
+msgstr ""
+"Sie werden einige dieser Kontexte vom Servlet und verwandte Spezifikationen wiedererkennen. Es ist aber möglich, dass Ihnen zwei davon neu sind: "
+"<emphasis>Konversationskontext</emphasis> und <emphasis>Business-Prozess-Kontext</emphasis>. Ein Grund für die allgemeine Anfälligkeit wie auch Fehleranfälligkeit des Status-Management in Webanwendungen ist die drei eingebauten Kontexte (Anfrage, Session und Applikation), die nicht sonderlich bedeutungsvoll aus Business-Logik Perspektive sind. Eine Login-Session eines Benutzers etwa ist recht arbiträr im Hinblick auf den tatsächlichen Work Flow der Anwendung. Daher sind die meisten Seam-Komponenten an die Kontexte der Konversation oder des Business Prozesse begrenzt, da dies die im Bezug auf die Anwendung wichtigsten Kontexte sind."
+
+#. Tag: para
+#: Concepts.xml:60
+#, no-c-format
+msgid "Let&#39;s look at each context in turn."
+msgstr "Schauen wir uns der Reihe nach jeden Kontext genauer an."
+
+#. Tag: title
+#: Concepts.xml:63
+#, no-c-format
+msgid "<title>Stateless context</title>"
+msgstr "<title>\"Stateless\" Kontext</title>"
+
+#. Tag: para
+#: Concepts.xml:64
+#, no-c-format
+msgid ""
+"Components which are truly stateless (stateless session beans, primarily) "
+"always live in the stateless context (this is really a non-context). "
+"Stateless components are not very interesting, and are arguably not very "
+"object-oriented. Nevertheless, they are important and often useful."
+msgstr "Komponenten, die wahrhaft \"stateless\" sind (primär \"Stateless Session Beans\") halten sich immer im Stateless Kontext auf (tatsächlich ein Nicht-Kontext). \"Stateless\" Komponenten sind nicht sehr interessant und nicht besonders objektorientiert. Dennoch sind sie wichtig und oftmals nützlich."
+
+#. Tag: title
+#: Concepts.xml:67
+#, no-c-format
+msgid "<title>Event context</title>"
+msgstr "<title>Ereigniskontext</title>"
+
+#. Tag: para
+#: Concepts.xml:68
+#, no-c-format
+msgid ""
+"The event context is the \"narrowest\" stateful context, and is a "
+"generalization of the notion of the web request context to cover other kinds "
+"of events. Nevertheless, the event context associated with the lifecycle of "
+"a JSF request is the most important example of an event context, and the one "
+"you will work with most often. Components associated with the event context "
+"are destroyed at the end of the request, but their state is available and "
+"well-defined for at least the lifecycle of the request."
+msgstr ""
+"Der Ereigniskontext (Event-Context) ist der \"schmalste\" \"stateful\" Kontext und ist eine"
+"Generalisierung des Begriffs des Webanfragenkontexts zur Abdeckung anderer Arten von Ereignissen. Nichtsdestotrotz ist der mit dem Lebenszyklus einer JSF-Anfrage assoziierte Ereigniskontext das wichtigste Beispiel eines Ereigniskontexts, und Sie werden oft damit zu tun haben. Mit dem Ereigniskontext assoziierte Komponenten werden am Ende der Anfrage gelöscht, aber ihr Status ist verfügbar und  azumindest für den Lebenszyklus der Anfrage wohldefiniert."
+
+#. Tag: para
+#: Concepts.xml:71
+#, no-c-format
+msgid ""
+"When you invoke a Seam component via RMI, or Seam Remoting, the event "
+"context is created and destroyed just for the invocation."
+msgstr ""
+"Wenn Sie eine Seam Komponente via RMI oder Seam Remoting aufrufen, so wird "
+"der Ereigniskontext nur für den Aufruf erstellt und gelöscht."
+
+#. Tag: title
+#: Concepts.xml:74
+#, no-c-format
+msgid "<title>Page context</title>"
+msgstr "<title>Seitenkontext</title>"
+
+#. Tag: para
+#: Concepts.xml:75
+#, no-c-format
+msgid ""
+"The page context allows you to associate state with a particular instance of "
+"a rendered page. You can initialize state in your event listener, or while "
+"actually rendering the page, and then have access to it from any event that "
+"originates from that page. This is especially useful for functionality like "
+"clickable lists, where the list is backed by changing data on the server "
+"side. The state is actually serialized to the client, so this construct is "
+"extremely robust with respect to multi-window operation and the back button."
+msgstr "Der Seitenkontext gestattet es Ihnen Status mit einer bestimmten Instanz der gerenderten Seite zu assoziieren. Sie können Status in Ihrem Event-Listener initialisieren oder während Sie die Seite tatsächlich rendern und sogar Zugriff darauf haben von einem von dieser Seite seinen Ursprung nehmenden Ereignis. Dies ist insbesondere bei Funktionalitäten wie klickbaren Listen von Nutzen, wo hinter der Liste wechselnde Daten auf Server-Seite stehen. Der Status wird zum Client serialisiert, so dass dieses Konstrukt sehr robust im Hinblick auf auf den Betrieb in mehreren Fenstern und der \"Zurück\"-Schaltfläche ist."
+
+#. Tag: title
+#: Concepts.xml:78
+#, no-c-format
+msgid "<title>Conversation context</title>"
+msgstr "<title>Konversationskontext</title>"
+
+#. Tag: para
+#: Concepts.xml:79
+#, no-c-format
+msgid ""
+"The conversation context is a truly central concept in Seam. A "
+"<emphasis>conversation</emphasis> is a unit of work from the point of view "
+"of the user. It might span several interactions with the user, several "
+"requests, and several database transactions. But to the user, a conversation "
+"solves a single problem. For example, \"book hotel\", \"approve contract\", "
+"\"create order\" are all conversations. You might like to think of a "
+"conversation implementing a single \"use case\" or \"user story\", but the "
+"relationship is not necessarily quite exact."
+msgstr ""
+"Der Konversationskontext ist ein wahrhaft zentrales Konzept bei Seam. Eine <emphasis>Konversation</emphasis> ist aus Sicht des Benutzers eine Arbeitseinheit. Sie kann mehrere Interaktionen mit dem Benutzer, mehrere Anfragen und mehrere Transaktionen umfassen. Für den Benutzer aber löst die Konversation ein einziges Problem. \"Hotel buchen\", \"Vertrag genehmigen\", "
+"\"Bestellung erstellen\" zum Beispiel sind allesamt Konversationen. Sie können sich eine Konversation als Implementierung eines einzelnen \"Verwendungsfalls\" oder einer einzelnen \"Benutzergeschichte\" vorstellen, aber die Beziehung ist nicht notwendigerweise ganz exakt."
+
+#. Tag: para
+#: Concepts.xml:82
+#, no-c-format
+msgid ""
+"A conversation holds state associated with \"what the user is doing now, in "
+"this window\". A single user may have multiple conversations in progress at "
+"any point in time, usually in multiple windows. The conversation context "
+"allows us to ensure that state from the different conversations does not "
+"collide and cause bugs."
+msgstr ""
+"Ein Konversations enthält den Status, der mit \"was der Benutzer gerade tut, "
+"in diesem Bildschirm\" assoziiert wird. Ein einzelner Benutzer kann mehrere "
+"Konversationen zum gleichen Zeitpunkt in unterschiedlichen Bildschirmen "
+"(Fenstern) am laufen haben. Der Konversationskontext gestattet es uns "
+"sicherzustellen, dass der Status verschiedener Konversationen nicht "
+"kollidiert und zu Fehlern führt."
+
+#. Tag: para
+#: Concepts.xml:85
+#, no-c-format
+msgid ""
+"It might take you some time to get used to thinking of applications in terms "
+"of conversations. But once you get used to it, we think you&#39;ll love the "
+"notion, and never be able to not think in terms of conversations again!"
+msgstr "Es kann eine Weile dauernd, bis Sie sich daran gewöhnt haben an Anwendungen im Sinne von Konversationen zu denken. Wenn Sie damit aber erst einmal vertraut sind, werden Sie die Vorteile dieser Betrachtungsweise jedoch ganz sicher schätzen."
+
+#. Tag: para
+#: Concepts.xml:88
+#, no-c-format
+msgid ""
+"Some conversations last for just a single request. Conversations that span "
+"multiple requests must be demarcated using annotations provided by Seam."
+msgstr ""
+"Einige Konversationen dauern nur eine einzelne Anfrage hindurch an. "
+"Konversationen, die mehrere Anfragen überspannen, müssen unter der durch "
+"Seam bereitgestellten Annotationen demarkiert werden."
+
+#. Tag: para
+#: Concepts.xml:91
+#, no-c-format
+msgid ""
+"Some conversations are also <emphasis>tasks</emphasis>. A task is a "
+"conversation that is significant in terms of a long-running business "
+"process, and has the potential to trigger a business process state "
+"transition when it is successfully completed. Seam provides a special set of "
+"annotations for task demarcation."
+msgstr "Bei einigen Konversationen handelt es sich auch um <emphasis>Tasks</emphasis>. Eine Task ist eine im Hinblick eines lange laufenden Business-Prozesses signifikante Konversation und hat bei erfolgreichem Abschluss das Potenzial Business-Prozess Statustransition auszulösen. Seam liefert einen speziellen Satz von Annotationen für die Task-Demarkation."
+
+#. Tag: para
+#: Concepts.xml:94
+#, no-c-format
+msgid ""
+"Conversations may be <emphasis>nested</emphasis>, with one conversation "
+"taking place \"inside\" a wider conversation. This is an advanced feature."
+msgstr ""
+"Konversationen können <emphasis>verschachtelt</emphasis> sein, wobei eine "
+"Konversation \"innerhalb\" einer breiteren Konversation stattfindet. Es "
+"handelt sich hierbei um ein fortgeschrittenes Feature."
+
+#. Tag: para
+#: Concepts.xml:97
+#, no-c-format
+msgid ""
+"Usually, conversation state is actually held by Seam in the servlet session "
+"between requests. Seam implements configurable <emphasis>conversation "
+"timeout</emphasis>, automatically destroying inactive conversations, and "
+"thus ensuring that the state held by a single user login session does not "
+"grow without bound if the user abandons conversations."
+msgstr ""
+"In der Regel wird der Konversationsstatus durch Seam in der Servlet Session "
+"zwischen Anfragen gehalten. Seam implementiert einen konfigurierbaren "
+"<emphasis>Konversations-Timeout</emphasis>, durch den inaktive "
+"Konversationen gelöscht werden und gewährleistet wird, dass der durch eine "
+"einzelne Benutzeranmeldungssession nicht weitergeführt wird, wenn der "
+"Benutzer die Konversation verlässt."
+
+#. Tag: para
+#: Concepts.xml:100
+#, no-c-format
+msgid ""
+"Seam serializes processing of concurrent requests that take place in the "
+"same long-running conversation context, in the same process."
+msgstr ""
+"Seam serialisiert die Bearbeitung gleichzeitiger Anfragen, die im selben, "
+"lange laufenden Konversationskontext in demselben Vorgang stattfinden."
+
+#. Tag: para
+#: Concepts.xml:103
+#, no-c-format
+msgid ""
+"Alternatively, Seam may be configured to keep conversational state in the "
+"client browser."
+msgstr ""
+"Alternativ kann Seam so konfiguriert werden, dass der konversationale Status "
+"im Client-Browser beibehalten wird."
+
+#. Tag: title
+#: Concepts.xml:106
+#, no-c-format
+msgid "<title>Session context</title>"
+msgstr "<title>Session-Kontext</title>"
+
+#. Tag: para
+#: Concepts.xml:107
+#, no-c-format
+msgid ""
+"A session context holds state associated with the user login session. While "
+"there are some cases where it is useful to share state between several "
+"conversations, we generally frown on the use of session context for holding "
+"components other than global information about the logged in user."
+msgstr "Ein Session-Kontext enthält mit der Benutzer-Login-Session assoziierten Status. Während es zwar einige Situationen gibt, in denen es von Nutzen ist Status zwischen mehreren Konversationen zu teilen, sind wir in der Regel keine Freunde der Verwendung des Session-Kontext zur Aufbewahrung von irgendetwas außer den allgemeinen Information zum angemeldeten Benutzer."
+
+#. Tag: para
+#: Concepts.xml:110
+#, no-c-format
+msgid ""
+"In a JSR-168 portal environment, the session context represents the portlet "
+"session."
+msgstr ""
+"In einer JSR-168 Portalumgebung, repräsentiert der Session-Kontext die "
+"Portlet-Session."
+
+#. Tag: title
+#: Concepts.xml:113
+#, no-c-format
+msgid "<title>Business process context</title>"
+msgstr "<title>Business-Prozess-Kontext</title>"
+
+#. Tag: para
+#: Concepts.xml:114
+#, no-c-format
+msgid ""
+"The business process context holds state associated with the long running "
+"business process. This state is managed and made persistent by the BPM "
+"engine (JBoss jBPM). The business process spans multiple interactions with "
+"multiple users, so this state is shared between multiple users, but in a "
+"well-defined manner. The current task determines the current business "
+"process instance, and the lifecycle of the business process is defined "
+"externally using a <emphasis>process definition language</emphasis>, so "
+"there are no special annotations for business process demarcation."
+msgstr ""
+"Der Kontext des Business-Prozesses enthält Status, der mit dem lange laufenden Business-Prozess assoziiert wird. Dieser Status wird durch die BPM Engine (JBoss jBPM) gemanagt und persistiert. Der Business-Prozess umfasst mehrere Interaktionen mit mehreren Benutzern, daher wird dieser Status von mehreren Benutzern geteilt, allerdings auf wohldefinierte Weise. Die aktuelle Task bestimmt die aktuelle Instanz des Business "
+"Prozesses, und der Lebenszyklus des Business Prozesses wird extern mittels einer <emphasis>Prozessdsefinitionssprache</emphasis> definiert, weshalb es keine speziellen Annotationen für Demarkation von Business-Prozess gibt."
+
+#. Tag: title
+#: Concepts.xml:117
+#, no-c-format
+msgid "<title>Application context</title>"
+msgstr "<title>Anwendungskontext</title>"
+
+#. Tag: para
+#: Concepts.xml:118
+#, no-c-format
+msgid ""
+"The application context is the familiar servlet context from the servlet "
+"spec. Application context is mainly useful for holding static information "
+"such as configuration data, reference data or metamodels. For example, Seam "
+"stores its own configuration and metamodel in the application context."
+msgstr ""
+"Der Applikationskontext ist der bekannte Servlet-Kontext von der Servlet-"
+"Spec. Der Applikationskontext ist hauptsächlich hilfreich für die Verwahrung "
+"statischer Informationen wie Konfigurationsdaten, Referenzdaten oder "
+"Metamodellen. Seam etwa speichert seine eigene Konfiguration und Metamodell "
+"im Applikationskontext."
+
+#. Tag: title
+#: Concepts.xml:121
+#, no-c-format
+msgid "Context variables"
+msgstr "Kontextvariablen"
+
+#. Tag: para
+#: Concepts.xml:122
+#, no-c-format
+msgid ""
+"A context defines a namespace, a set of <emphasis>context variables</"
+"emphasis>. These work much the same as session or request attributes in the "
+"servlet spec. You may bind any value you like to a context variable, but "
+"usually we bind Seam component instances to context variables."
+msgstr ""
+"Ein Kontext definiert einen Namespace, einen Satz von "
+"<emphasis>Kontextvariablen</emphasis>. Diese funktionieren auf sehr ähnliche "
+"Weise wie Session- oder Anfragenattribute in der Servlet Spec. Sie können "
+"einen beliebigen Wert an eine Kontextvariable binden, jedoch binden wir in "
+"der Regel Seam-Komponenteninstanzen an Kontextvariablen."
+
+#. Tag: para
+#: Concepts.xml:125
+#, no-c-format
+msgid ""
+"So, within a context, a component instance is identified by the context "
+"variable name (this is usually, but not always, the same as the component "
+"name). You may programatically access a named component instance in a "
+"particular scope via the <literal>Contexts</literal> class, which provides "
+"access to several thread-bound instances of the <literal>Context</literal> "
+"interface:"
+msgstr ""
+"So wird innerhalb eines Kontexts eine Komponenteninstanz durch den Namen der "
+"Kontextvariablen identifiziert (dies ist meist, aber nicht immer, derselbe "
+"wie der Komponentenname). Sie können programmatisch auf eine benannte "
+"Komponenteninstanz in einem bestimmten Bereich via der <literal>Contexts</"
+"literal>-Klasse zugreifen, die Zugriff auf mehrere thread-gebundene "
+"Instanzen des <literal>Context</literal>-Interface bietet:"
+
+#. Tag: programlisting
+#: Concepts.xml:128
+#, no-c-format
+msgid "User user = (User) Contexts.getSessionContext().get(\"user\");"
+msgstr "User user = (User) Contexts.getSessionContext().get(\"user\");"
+
+#. Tag: para
+#: Concepts.xml:129
+#, no-c-format
+msgid "You may also set or change the value associated with a name:"
+msgstr "Sie können auch den mit einem Namen assoziierten Wert setzen oder ändern:"
+
+#. Tag: programlisting
+#: Concepts.xml:132
+#, no-c-format
+msgid "Contexts.getSessionContext().set(\"user\", user);"
+msgstr "Contexts.getSessionContext().set(\"user\", user);"
+
+#. Tag: para
+#: Concepts.xml:133
+#, no-c-format
+msgid ""
+"Usually, however, we obtain components from a context via injection, and put "
+"component instances into a context via outjection."
+msgstr "In der Regel jedoch erhalten wir Komponenten aus einem Kontext via Einspeisung (\"injection\") und bringen Komponenteninstanzen wie Auswurf (\"outjection\") in einen Kontext."
+
+#. Tag: title
+#: Concepts.xml:136
+#, no-c-format
+msgid "Context search priority"
+msgstr "Kontext-Suchpriorität"
+
+#. Tag: para
+#: Concepts.xml:137
+#, no-c-format
+msgid ""
+"Sometimes, as above, component instances are obtained from a particular "
+"known scope. Other times, all stateful scopes are searched, in "
+"<emphasis>priority order</emphasis>. The order is as follows:"
+msgstr ""
+"Manchmal können, so wie oben, Komponenteninstanzen von einem bestimmten, "
+"bekannten Bereich erhalten werden. In anderen Fällen wiederum werden alle "
+"\"stateful\" Bereiche in <emphasis>Prioritätenreihenfolge</"
+"emphasis>durchsucht. Die Reihenfolge lautet wie folgt:"
+
+#. Tag: para
+#: Concepts.xml:142
+#, no-c-format
+msgid "<para>Event context</para>"
+msgstr "<para>Ereigniskontext</para>"
+
+#. Tag: para
+#: Concepts.xml:172
+#, no-c-format
+msgid ""
+"You can perform a priority search by calling <literal>Contexts."
+"lookupInStatefulContexts()</literal>. Whenever you access a component by "
+"name from a JSF page, a priority search occurs."
+msgstr ""
+"Sie können eine Prioritätensuche durch Aufruf von <literal>Contexts."
+"lookupInStatefulContexts()</literal> durchführen. Jedes Mal wenn Sie durch "
+"den Namen einer JSF-Seite auf eine Komponente zugreifen, erfolgt eine "
+"Prioritätensuche."
+
+#. Tag: title
+#: Concepts.xml:175
+#, no-c-format
+msgid "Concurrency model"
+msgstr "Nebenläufigkeitsmodell"
+
+#. Tag: para
+#: Concepts.xml:176
+#, no-c-format
+msgid ""
+"Neither the servlet nor EJB specifications define any facilities for "
+"managing concurrent requests originating from the same client. The servlet "
+"container simply lets all threads run concurrently and leaves enforcing "
+"threadsafeness to application code. The EJB container allows stateless "
+"components to be accessed concurrently, and throws an exception if multiple "
+"threads access a stateful session bean."
+msgstr "Weder das Servlet noch EJB-Spezifikationen definieren irgendwelche Facilities für die Verwaltung nebenläufiger Anfragen, die vom selben Client stammen. Der Servlet Container lässt einfach sämtliche Threads nebenläufig laufen und überlässt das Erzwingen von Thread-Sicherheit dem Anwendungscode. Der EJB Container erlaubt den nebenläufigen Zugriff auf \"stateless\" Komponenten und meldet eine Ausnahme, falls mehrere Threads auf ein \"Stateful Session Bean\" zugreifen."
+
+#. Tag: para
+#: Concepts.xml:179
+#, no-c-format
+msgid ""
+"This behavior might have been okay in old-style web applications which were "
+"based around fine-grained, synchronous requests. But for modern applications "
+"which make heavy use of many fine-grained, asynchronous (AJAX) requests, "
+"concurrency is a fact of life, and must be supported by the programming "
+"model. Seam weaves a concurrency management layer into its context model."
+msgstr ""
+"Dieses Verhalten ist in Ordnung für Webanwendungen alten Stils, die auf "
+"feinstufigen, synchronen Anfragen basieren. Für moderne Anwendungen jedoch, "
+"die zahlreiche feinstufige, asynchrone (AJAX) Anfragen verwenden, ist "
+"Nebenläufigkeit unabdingbar und muss durch das Programmiermodell unterstützt "
+"werden. Seam bindet eine Schicht zum Management der Nebenläufigkeit in sein "
+"Kontextmodell mit ein."
+
+#. Tag: para
+#: Concepts.xml:182
+#, no-c-format
+msgid ""
+"The Seam session and application contexts are multithreaded. Seam will allow "
+"concurrent requests in a context to be processed concurrently. The event and "
+"page contexts are by nature single threaded. The business process context is "
+"strictly speaking multi-threaded, but in practice concurrency is "
+"sufficiently rare that this fact may be disregarded most of the time. "
+"Finally, Seam enforces a <emphasis>single thread per conversation per "
+"process</emphasis> model for the conversation context by serializing "
+"concurrent requests in the same long-running conversation context."
+msgstr ""
+"Die Seam Session und Anwendungskontexte sind \"multithreaded\". Seam gestattet die gleichzeitige Bearbeitung nebenläufiger Anfragen in einem Kontext. Die Seiten- und Ereigniskontexte sind ihrem Wesen nach "
+"\"single threaded\". Der Kontext Business Prozess ist streng genommen"
+"\"multi-threaded\", aber in der Praxis ist Nebenläufigkeit selten, so dass dies meist unberücksichtigt bleiben kann. "
+"Schließlich erzwingt Seam ein <emphasis>einzelner Thread pro Konversation pro Prozess</emphasis>-Modell für den Konversationskontext durch Serialisierung nebenläufiger Anfragen im selben lange laufenden Konversationskontext."
+
+#. Tag: para
+#: Concepts.xml:185
+#, no-c-format
+msgid ""
+"Since the session context is multithreaded, and often contains volatile "
+"state, session scope components are always protected by Seam from concurrent "
+"access. Seam serializes requests to session scope session beans and "
+"JavaBeans by default (and detects and breaks any deadlocks that occur). This "
+"is not the default behaviour for application scoped components however, "
+"since application scoped components do not usually hold volatile state and "
+"because synchronization at the global level is <emphasis>extremely</"
+"emphasis> expensive. However, you can force a serialized threading model on "
+"any session bean or JavaBean component by adding the <literal>@Synchronized</"
+"literal> annotation."
+msgstr ""
+"Da der Session-Kontext \"multithreaded\" ist und oftmals volatilen "
+"Status enthält, sind Session Scope Komponenten immer durch Seam vor gleichzeitigem Zugriff geschützt. Seam serialisiert Anfragen an Session Scope Session Beans und JavaBeans standardmäßig (und spürt vorkommende Deadlocks auf und bricht diese auf). Dies ist jedoch nicht das Standardverhalten von anwendungsbegrenzten Komponenten, da anwendungsbegrenzten Komponenten in der Regel keinen volatilen Status halten und weil Synchronisierung auf allgemeiner Ebene <emphasis>extrem</emphasis> teuer ist. Sie können jedoch ein serialisiertes Threading-Modell an einem Session Bean oder JavaBean Komponente erzwingen, indem Sie die <literal>@Synchronized</"
+"literal>-Annotation erzwingen."
+
+#. Tag: para
+#: Concepts.xml:188
+#, no-c-format
+msgid ""
+"This concurrency model means that AJAX clients can safely use volatile "
+"session and conversational state, without the need for any special work on "
+"the part of the developer."
+msgstr ""
+"Dieses Nebenläufigkeitsmodell bedeutet, dass AJAX-Clients problemlos den "
+"vergänglichen und konversationellen Status verwenden können, ohne dass "
+"besondere Maßnahmen seitens des Entwicklers nötig sind."
+
+#. Tag: title
+#: Concepts.xml:191
+#, no-c-format
+msgid "Seam components"
+msgstr "Seam-Komponenten"
+
+#. Tag: para
+#: Concepts.xml:192
+#, no-c-format
+msgid ""
+"Seam components are POJOs (Plain Old Java Objects). In particular, they are "
+"JavaBeans or EJB 3.0 enterprise beans. While Seam does not require that "
+"components be EJBs and can even be used without an EJB 3.0 compliant "
+"container, Seam was designed with EJB 3.0 in mind and includes deep "
+"integration with EJB 3.0. Seam supports the following <emphasis>component "
+"types</emphasis>."
+msgstr ""
+"Bei Seam Komponenten handelt es sich um POJOs (Plain Old Java Objects). Im "
+"einzelnen sind dies JavaBeans oder EJB 3.0 Enterprise Beans. Während "
+"Komponenten bei Seam keine EJBs sein müssen und nicht einmal einen EJB 3.0 "
+"konformen Container benötigen, wurde Seam unter Berücksichtigung von EJB 3.0 "
+"entworfen und beinhaltet tiefe Integration mit EJB 3.0. Seam unterstützt die "
+"folgenden <emphasis>Komponententypen</emphasis>."
+
+#. Tag: para
+#: Concepts.xml:197
+#, no-c-format
+msgid "EJB 3.0 stateless session beans"
+msgstr "EJB 3.0 \"stateless\" Session-Beans"
+
+#. Tag: para
+#: Concepts.xml:202
+#, no-c-format
+msgid "EJB 3.0 stateful session beans"
+msgstr "EJB 3.0 \"stateful\" Session-Beans"
+
+#. Tag: para
+#: Concepts.xml:207
+#, no-c-format
+msgid "EJB 3.0 entity beans"
+msgstr "EJB 3.0 Entity-Beans"
+
+#. Tag: para
+#: Concepts.xml:212
+#, no-c-format
+msgid "<para>JavaBeans</para>"
+msgstr "<para>JavaBeans</para>"
+
+#. Tag: para
+#: Concepts.xml:217
+#, no-c-format
+msgid "EJB 3.0 message-driven beans"
+msgstr "EJB 3.0 \"message-driven\" Beans"
+
+#. Tag: title
+#: Concepts.xml:222
+#, no-c-format
+msgid "Stateless session beans"
+msgstr "\"Stateless\" Session-Beans"
+
+#. Tag: para
+#: Concepts.xml:223
+#, no-c-format
+msgid ""
+"Stateless session bean components are not able to hold state across multiple "
+"invocations. Therefore, they usually work by operating upon the state of "
+"other components in the various Seam contexts. They may be used as JSF "
+"action listeners, but cannot provide properties to JSF components for "
+"display."
+msgstr "Komponenten von Stateless Session Beans sind nicht dazu in der Lage, Status über mehrere Aufrufe zu halten. Daher funktionieren Sie meist durch den Status anderer Komponenten in den verschiedenen Seam Kontexten. Sie können als JSF Action-Listener verwendet werden, aber können keine Properties an JSF-Komponenten zur Anzeige liefern."
+
+#. Tag: para
+#: Concepts.xml:226
+#, no-c-format
+msgid "Stateless session beans always live in the stateless context."
+msgstr "\"Stateless\" Session-Beans befinden sich stets im \"stateless\" Kontext."
+
+#. Tag: para
+#: Concepts.xml:229
+#, no-c-format
+msgid "Stateless session beans are the least interesting kind of Seam component."
+msgstr ""
+"\"Stateless\" Session-Beans sind die am wenigsten interessante Art von Seam "
+"Komponente."
+
+#. Tag: title
+#: Concepts.xml:232
+#, no-c-format
+msgid "Stateful session beans"
+msgstr "\"Stateful\" Session-Beans"
+
+#. Tag: para
+#: Concepts.xml:233
+#, no-c-format
+msgid ""
+"Stateful session bean components are able to hold state not only across "
+"multiple invocations of the bean, but also across multiple requests. "
+"Application state that does not belong in the database should usually be "
+"held by stateful session beans. This is a major difference between Seam and "
+"many other web application frameworks. Instead of sticking information about "
+"the current conversation directly in the <literal>HttpSession</literal>, you "
+"should keep it in instance variables of a stateful session bean that is "
+"bound to the conversation context. This allows Seam to manage the lifecycle "
+"of this state for you, and ensure that there are no collisions between state "
+"relating to different concurrent conversations."
+msgstr ""
+"Stateful Session Beans sind nicht nur dazu in der Lage, Status über mehrere Aufrufe des Beans sondern auch über mehrere Anfragen zu halten. "
+"Anwendungsstatus, der nicht in die Datenbank gehört, sollte normalerweise durch Stateful Session Beans gehalten werden. Dies ist ein wichtiger Unterschied zwischen Seam und vielen anderen Frameworks von Web-Anwendungen. Statt Informationen zur aktuellen Konversation direkt in die <literal>HttpSession</literal> zu stecken, sollten Sie sie in Instanzvariablen eines Stateful Session Bean stecken, das an den Konversationskontext gebunden ist. Dies ermöglicht es Seam den Lebenszyklus dieses Status' für Sie zu managen "
+"und sicherzustellen, dass es nicht zu Zusammenstößen zwischen sich auf unterschiedliche nebenläufige Konversationen kommt."
+
+#. Tag: para
+#: Concepts.xml:236
+#, no-c-format
+msgid ""
+"Stateful session beans are often used as JSF action listener, and as backing "
+"beans that provide properties to JSF components for display or form "
+"submission."
+msgstr "Stateful Session Beans werden oft als JSF Action-Listener eingesetzt und als Backing Beans (im Hintergrund), die Properties für JSF-Komponents für die Anzeige oder Formulareinreichung liefern."
+
+#. Tag: para
+#: Concepts.xml:239
+#, no-c-format
+msgid ""
+"By default, stateful session beans are bound to the conversation context. "
+"They may never be bound to the page or stateless contexts."
+msgstr ""
+"Standardmäßig sind \"stateful\" Session-Beans an den Konversationskontext "
+"gebunden. Sie können nie an die Seite oder \"stateless\" Kontexte gebunden "
+"werden."
+
+#. Tag: para
+#: Concepts.xml:242
+#, no-c-format
+msgid ""
+"Concurrent requests to session-scoped stateful session beans are always "
+"serialized by Seam."
+msgstr ""
+"Gleichzeitige Anfragen an Session-begrenzte \"stateful\" Session-Beans "
+"werden immer durch Seam serialisiert."
+
+#. Tag: title
+#: Concepts.xml:245
+#, no-c-format
+msgid "Entity beans"
+msgstr "Entity-Beans"
+
+#. Tag: para
+#: Concepts.xml:246
+#, no-c-format
+msgid ""
+"Entity beans may be bound to a context variable and function as a seam "
+"component. Because entities have a persistent identity in addition to their "
+"contextual identity, entity instances are usually bound explicitly in Java "
+"code, rather than being instantiated implicitly by Seam."
+msgstr ""
+"Entity-Beans können an eine Kontextvariable gebunden werden und als Seam-"
+"Komponente funktionieren. Da Entities neben ihrer kontextuellen Identität "
+"auch eine persistente Identität besitzen, werden Entity-Instanzen explizit "
+"in Java Code gebunden, statt implizit durch Seam instantiiert zu werden."
+
+#. Tag: para
+#: Concepts.xml:249
+#, no-c-format
+msgid ""
+"Entity bean components do not support bijection or context demarcation. Nor "
+"does invocation of an entity bean trigger validation."
+msgstr ""
+"Entity-Bean Komponenten unterstützen Bijektion oder Kontext Demarkation "
+"nicht. Ebenfalls nicht unterstützt wird der Aufruf einer Entity-Bean Trigger "
+"Validierung."
+
+#. Tag: para
+#: Concepts.xml:252
+#, no-c-format
+msgid ""
+"Entity beans are not usually used as JSF action listeners, but do often "
+"function as backing beans that provide properties to JSF components for "
+"display or form submission. In particular, it is common to use an entity as "
+"a backing bean, together with a stateless session bean action listener to "
+"implement create/update/delete type functionality."
+msgstr "Entity Beans werden in der Regel nocht als JSF Action-Listener eingesetzt, fungieren jedoch häufig als Backing Beans, die Properties an JSF-Komponents zur Anzeige oder Formulareinreichung liefern. Es ist insbesondere gängig, eine Entity als Backing Bean gemeinsam mit einem Stateless Session Bean Action Listener einzusetzen, um \"create/update/delete\"-Typfunktionalität (erstellen/aktualisieren/löschen) zu implementieren."
+
+#. Tag: para
+#: Concepts.xml:255
+#, no-c-format
+msgid ""
+"By default, entity beans are bound to the conversation context. They may "
+"never be bound to the stateless context."
+msgstr ""
+"Standardmäßig werden Entity-Beans an den Konversationskontext gebunden. Sie "
+"können nie an den \"stateless\" Kontext gebunden werden."
+
+#. Tag: para
+#: Concepts.xml:258
+#, no-c-format
+msgid ""
+"Note that it in a clustered environment is somewhat less efficient to bind "
+"an entity bean directly to a conversation or session scoped Seam context "
+"variable than it would be to hold a reference to the entity bean in a "
+"stateful session bean. For this reason, not all Seam applications define "
+"entity beans to be Seam components."
+msgstr "Beachten Sie, dass es in einer geclusterten Umgebung wesentlich weniger effizient ist, ein Entity Bean direkt an eine Konversation oder eine Session-begrenzte Variable zu binden als es wäre, einen Verweis auf das Entity-Bean in einem Stateful Session Bean zu halten. Aus diesem Grund definieren nicht alle Seam Anwendungen Entity-Beans als Seam Komponenten."
+
+#. Tag: title
+#: Concepts.xml:261
+#, no-c-format
+msgid "<title>JavaBeans</title>"
+msgstr "<title>JavaBeans</title>"
+
+#. Tag: para
+#: Concepts.xml:262
+#, no-c-format
+msgid ""
+"Javabeans may be used just like a stateless or stateful session bean. "
+"However, they do not provide the functionality of a session bean "
+"(declarative transaction demarcation, declarative security, efficient "
+"clustered state replication, EJB 3.0 persistence, timeout methods, etc)."
+msgstr "Javabeans können genau wie ein Stateless oder Stateful Session Bean verwendet werden. Sie liefern jedoch nicht die Funktionalität eines Session Bean (deklarative Transaktionsdemarkation, deklarative Sicherheit, effiziente geclusterte Statusreplikation, EJB 3.0 Persistenz, Timeout Methoden, usw.)."
+
+#. Tag: para
+#: Concepts.xml:265
+#, no-c-format
+msgid ""
+"In a later chapter, we show you how to use Seam and Hibernate without an EJB "
+"container. In this use case, components are JavaBeans instead of session "
+"beans. Note, however, that in many application servers it is somewhat less "
+"efficient to cluster conversation or session scoped Seam JavaBean components "
+"than it is to cluster stateful session bean components."
+msgstr ""
+"In einem der folgenden Kapitel werden wir Ihnen zeigen, wie Seam und Hibernate ohne einen EJB-Container verwendet werden. In diesem Anwendungsfall sind Komponenten JavaBeans statt Session "
+"Beans. Beachten Sie jedoch, dass es bei vielen Anwendungsservern wesentlich weniger effizient ist, Konversations- oder Session-begrenzte Seam JavaBean Komponenten zu clustern als es ist, Stateful Session Bean Komponenten zu clustern."
+
+#. Tag: para
+#: Concepts.xml:268
+#, no-c-format
+msgid "By default, JavaBeans are bound to the event context."
+msgstr "JavaBeans werden standardmäßig an den Ereigniskontext gebunden."
+
+#. Tag: para
+#: Concepts.xml:271
+#, no-c-format
+msgid ""
+"Concurrent requests to session-scoped JavaBeans are always serialized by "
+"Seam."
+msgstr ""
+"Gleichzeitige Anfragen an Session-begrenzte JavaBeans werden immer durch "
+"Seam serialisiert."
+
+#. Tag: title
+#: Concepts.xml:274
+#, no-c-format
+msgid "Message-driven beans"
+msgstr "\"Message-driven\" Beans"
+
+#. Tag: para
+#: Concepts.xml:275
+#, no-c-format
+msgid ""
+"Message-driven beans may function as a seam component. However, message-"
+"driven beans are called quite differently to other Seam components - instead "
+"of invoking them via the context variable, they listen for messages sent to "
+"a JMS queue or topic."
+msgstr "Message-getriebene Beans können als Seam-Komponente fungieren. Jedoch waren Message-getriebene Beans anders als andere Seam-Komponenten aufgerufen - statt sie via Kontextvariable aufzurufen, horchen sie auf Nachrichten, die an eine JMS-Warteschlange oder Topic geschickt werden."
+
+#. Tag: para
+#: Concepts.xml:278
+#, no-c-format
+msgid ""
+"Message-driven beans may not be bound to a Seam context. Nor do they have "
+"access to the session or conversation state of their \"caller\". However, "
+"they do support bijection and some other Seam functionality."
+msgstr "Message-getriebene Beans können nicht an einen Seam-Kontext gebunden werden. Sie haben auch keinen Zugriff auf den Session- oder Konversationsstatus ihres \"Aufrufers\". Sie unterstützen jedoch Bijektion und einige andere Seam-Funktionalitäten."
+
+#. Tag: title
+#: Concepts.xml:281
+#, no-c-format
+msgid "Interception"
+msgstr "Interzeption"
+
+#. Tag: para
+#: Concepts.xml:282
+#, no-c-format
+msgid ""
+"In order to perform its magic (bijection, context demarcation, validation, "
+"etc), Seam must intercept component invocations. For JavaBeans, Seam is in "
+"full control of instantiation of the component, and no special configuration "
+"is needed. For entity beans, interception is not required since bijection "
+"and context demarcation are not defined. For session beans, we must register "
+"an EJB interceptor for the session bean component. We could use an "
+"annotation, as follows:"
+msgstr ""
+"Damit es seinen Zauber ausführen kann (Bijektion, Kontext-Demarkation, Validierung, usw.), muss Seam Komponentenaufrufe abfangen. Für JavaBeans ist Seam in vollständiger Kontrolle der Instantiierung der Komponente und es wird keine spezielle Konfiguration benötigt. Für Entity-Beans ist keine Interzeption erforderlich, da Bijektion "
+"und Kontext-Demarkation nicht definiert sind. Für Session-Beans müssen wir einen EJB-Interzeptor für die Session Bean Komponent registrieren. Wir könnten wie folgt eine Annotation verwenden:"
+
+#. Tag: programlisting
+#: Concepts.xml:285
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:286
+#, no-c-format
+msgid ""
+"But a much better way is to define the interceptor in <literal>ejb-jar.xml</"
+"literal>."
+msgstr ""
+"Viel besser jedoch ist es den Interzeptor in <literal>ejb-jar.xml</literal> "
+"zu definieren."
+
+#. Tag: programlisting
+#: Concepts.xml:289
+#, no-c-format
+msgid ""
+"&lt;interceptors&gt;\n"
+"   &lt;interceptor&gt;\n"
+"      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"   &lt;/interceptor&gt;\n"
+"&lt;/interceptors&gt;\n"
+"   \n"
+"&lt;assembly-descriptor&gt;\n"
+"   &lt;interceptor-binding&gt;\n"
+"      &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"   &lt;/interceptor-binding&gt;\n"
+"&lt;/assembly-descriptor&gt;"
+msgstr ""
+"&lt;interceptors&gt;\n"
+"   &lt;interceptor&gt;\n"
+"      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"   &lt;/interceptor&gt;\n"
+"&lt;/interceptors&gt;\n"
+"   \n"
+"&lt;assembly-descriptor&gt;\n"
+"   &lt;interceptor-binding&gt;\n"
+"      &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"   &lt;/interceptor-binding&gt;\n"
+"&lt;/assembly-descriptor&gt;"
+
+#. Tag: title
+#: Concepts.xml:290
+#, no-c-format
+msgid "Component names"
+msgstr "Komponentennamen"
+
+#. Tag: para
+#: Concepts.xml:291
+#, no-c-format
+msgid ""
+"All seam components need a name. We can assign a name to a component using "
+"the <literal>@Name</literal> annotation:"
+msgstr ""
+"Alle Seam Komponenten benötigen einen Namen. Unter Verwendung der "
+"<literal>@Name</literal>-Annotation kann einer Komponente ein Name "
+"zugeordnet werden:"
+
+#. Tag: programlisting
+#: Concepts.xml:294
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:295
+#, no-c-format
+msgid ""
+"This name is the <emphasis>seam component name</emphasis> and is not related "
+"to any other name defined by the EJB specification. However, seam component "
+"names work just like JSF managed bean names and you can think of the two "
+"concepts as identical."
+msgstr ""
+"Bei diesem Namen handelt es sich um den <emphasis>Seam Komponentennamen</"
+"emphasis>, der nichts mit irgendeinem anderen durch die EJB-Spezifikation "
+"definierten Namen zu tun hat. Jedoch funktionieren Seam Komponentennamen "
+"ganz wie JSF gemanagte Bean-Namen, so dass Sie sich diese beiden Konzepte "
+"als identisch vorstellen können."
+
+#. Tag: para
+#: Concepts.xml:298
+#, no-c-format
+msgid ""
+"<literal>@Name</literal> is not the only way to define a component name, but "
+"we always need to specify the name <emphasis>somewhere</emphasis>. If we "
+"don&#39;t, then none of the other Seam annotations will function."
+msgstr "<literal>@Name</literal> ist nicht die einzige Weise einen Komponentennamen zu definieren, aber wir müssen den Namen immer <emphasis>irgendwo</emphasis> festlegen. Tun wir dies nicht, funktioniert keine der anderen Seam Annotationen."
+
+#. Tag: para
+#: Concepts.xml:301
+#, no-c-format
+msgid ""
+"Just like in JSF, a seam component instance is usually bound to a context "
+"variable with the same name as the component name. So, for example, we would "
+"access the <literal>LoginAction</literal> using <literal>Contexts."
+"getStatelessContext().get(\"loginAction\")</literal>. In particular, "
+"whenever Seam itself instantiates a component, it binds the new instance to "
+"a variable with the component name. However, again like JSF, it is possible "
+"for the application to bind a component to some other context variable by "
+"programmatic API call. This is only useful if a particular component serves "
+"more than one role in the system. For example, the currently logged in "
+"<literal>User</literal> might be bound to the <literal>currentUser</literal> "
+"session context variable, while a <literal>User</literal> that is the "
+"subject of some administration functionality might be bound to the "
+"<literal>user</literal> conversation context variable."
+msgstr ""
+"Genau wie bei JSF wird eine Seam Komponenteninstanz in der Regel an eine "
+"Kontextvariable mit demselben Name wie der Komponentenname gebunden. So "
+"würden wir zum Beispiel auf die <literal>LoginAction</literal> unter "
+"Verwendung von <literal>Contexts.getStatelessContext().get(\"loginAction\")</"
+"literal> zugreifen. Insbesondere wenn Seam selbst eine Komponente "
+"instantiiert, bindet es die neue Instanz an eine Variable mit dem "
+"Komponentennamen. Wie auch bei JSF ist es der Anwendung möglich eine "
+"Komponente mittels eines programmatischen API-Aufrufs an eine andere "
+"Kontextvariable zu binden. Dies ist nur von Nutzen, wenn eine bestimmte "
+"Komponente mehr als eine Rolle in dem System ausfüllt. Der aktuell "
+"angemeldete <literal>User</literal> etwa könnte an die <literal>currentUser</"
+"literal> Session-Kontextvariable gebunden werden, während ein <literal>User</"
+"literal>, der eher mit Verwaltungsfunktionalitäten zu tun hat an die "
+"<literal>user</literal> Konversationskontextvariable gebunden werden könnte."
+
+#. Tag: para
+#: Concepts.xml:304
+#, no-c-format
+msgid ""
+"For very large applications, and for built-in seam components, qualified "
+"names are often used."
+msgstr ""
+"Für sehr große Anwendungen und für eingebaute Komponenten werden oft "
+"vollständig definierte Namen verwendet."
+
+#. Tag: programlisting
+#: Concepts.xml:307
+#, no-c-format
+msgid ""
+"@Name(\"com.jboss.myapp.loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"com.jboss.myapp.loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:308
+#, no-c-format
+msgid ""
+"We may use the qualified component name both in Java code and in JSF&#39;s "
+"expression language:"
+msgstr "Wir können den vollständig definierten Komponentenname sowohl in Java Code als auch in JSF Expression Language verwenden:"
+
+#. Tag: programlisting
+#: Concepts.xml:311
+#, no-c-format
+msgid ""
+"&lt;h:commandButton type=\"submit\" value=\"Login\"\n"
+"                 action=\"#{com.jboss.myapp.loginAction.login}\"/&gt;"
+msgstr ""
+"&lt;h:commandButton type=\"submit\" value=\"Login\"\n"
+"                 action=\"#{com.jboss.myapp.loginAction.login}\"/&gt;"
+
+#. Tag: para
+#: Concepts.xml:312
+#, no-c-format
+msgid ""
+"Since this is noisy, Seam also provides a means of aliasing a qualified name "
+"to a simple name. Add a line like this to the <literal>components.xml</"
+"literal> file:"
+msgstr "Da dies \"noisy\" ist, bietet Seam auch eine Möglichkeit des Aliasing eines vollständigen Namens zu einem einfachen Namen. Fügen Sie Ihrer <literal>components.xml</literal>-Datei eine Zeile wie diese hinzu:"
+
+#. Tag: programlisting
+#: Concepts.xml:315
+#, no-c-format
+msgid ""
+"&lt;factory name=\"loginAction\" scope=\"STATELESS\" value=\"#{com.jboss."
+"myapp.loginAction}\"/&gt;"
+msgstr ""
+"&lt;factory name=\"loginAction\" scope=\"STATELESS\" value=\"#{com.jboss."
+"myapp.loginAction}\"/&gt;"
+
+#. Tag: para
+#: Concepts.xml:316
+#, no-c-format
+msgid ""
+"All of the built-in Seam components have qualified names, but most of them "
+"are aliased to a simple name by the <literal>components.xml</literal> file "
+"included in the Seam jar."
+msgstr ""
+"Alle eingebauten Seam Komponenten haben vollständig definierte Namen, jedoch "
+"besitzen die meisten von ihnen einen einfachen Namen durch die in der Seam "
+"Jar beinhalteten <literal>components.xml</literal>-Datei."
+
+#. Tag: title
+#: Concepts.xml:319
+#, no-c-format
+msgid "Defining the component scope"
+msgstr "Definition des Komponentenbereichs"
+
+#. Tag: para
+#: Concepts.xml:320
+#, no-c-format
+msgid ""
+"We can override the default scope (context) of a component using the "
+"<literal>@Scope</literal> annotation. This lets us define what context a "
+"component instance is bound to, when it is instantiated by Seam."
+msgstr ""
+"Wir können den Standardbereich (Kontext) einer Komponente mittels der "
+"<literal>@Scope</literal>-Annotation außer Kraft setzen. Dies lässt uns "
+"definieren an welchen Kontext eine Komponenteninstanz gebunden wird, wenn "
+"Sie durch Seam instantiiert wird."
+
+#. Tag: programlisting
+#: Concepts.xml:323
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(SESSION)\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(SESSION)\n"
+"public class User { \n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:324
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.ScopeType</literal> defines an enumeration of "
+"possible scopes."
+msgstr ""
+"<literal>org.jboss.seam.ScopeType</literal> definiert eine Aufzählung "
+"möglicher Bereiche."
+
+#. Tag: title
+#: Concepts.xml:327
+#, no-c-format
+msgid "Components with multiple roles"
+msgstr "Komponenten mit mehreren Rollen"
+
+#. Tag: para
+#: Concepts.xml:328
+#, no-c-format
+msgid ""
+"Some Seam component classes can fulfill more than one role in the system. "
+"For example, we often have a <literal>User</literal> class which is usually "
+"used as a session-scoped component representing the current user but is used "
+"in user administration screens as a conversation-scoped component. The "
+"<literal>@Role</literal> annotation lets us define an additional named role "
+"for a component, with a different scope&mdash;it lets us bind the same "
+"component class to different context variables. (Any Seam component "
+"<emphasis>instance</emphasis> may be bound to multiple context variables, "
+"but this lets us do it at the class level, and take advantage of auto-"
+"instantiation.)"
+msgstr ""
+"Einige Seam Komponentenklassen können mehr als eine Rolle innerhalb des "
+"Systems ausfüllen. Zum Beispiel besitzen wir oft eine <literal>User</"
+"literal>-Klasse, die in der Regel als Session-begrenzte Komponente verwendet "
+"wird, die den aktuellen Benutzer repräsentiert aber in "
+"Benutzerverwaltungsbildschirmen als eine konversationsbegrenzte Komponente "
+"Anwendung findet. Die <literal>@Role</literal>-Annotation gestattet die "
+"Definition einer zusätzlichen benannten Rolle für eine Komponente mit einem "
+"anderen Bereich&mdash; sie erlaubt es uns dieselbe Komponentenklasse an "
+"verschiedene Kontextvariablen zu binden. (Jede Seam Komponenten-"
+"<emphasis>Instanz</emphasis> kann an mehrere Kontextvariablen gebunden "
+"werden, aber dies ermöglicht es auf Klassenebene und Ausnutzung der Auto-"
+"Instanziierung)."
+
+#. Tag: programlisting
+#: Concepts.xml:331
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(CONVERSATION)\n"
+"@Role(name=\"currentUser\", scope=SESSION)\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(CONVERSATION)\n"
+"@Role(name=\"currentUser\", scope=SESSION)\n"
+"public class User { \n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:332
+#, no-c-format
+msgid ""
+"The <literal>@Roles</literal> annotation lets us specify as many additional "
+"roles as we like."
+msgstr ""
+"Die <literal>@Roles</literal>-Annotation ermöglicht die Spezifizierung so "
+"vieler zusätzlicher Rollen, wie gewünscht."
+
+#. Tag: programlisting
+#: Concepts.xml:335
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(CONVERSATION)\n"
+"@Roles({@Role(name=\"currentUser\", scope=SESSION)\n"
+"        @Role(name=\"tempUser\", scope=EVENT)})\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(CONVERSATION)\n"
+"@Roles({@Role(name=\"currentUser\", scope=SESSION)\n"
+"        @Role(name=\"tempUser\", scope=EVENT)})\n"
+"public class User { \n"
+"    ... \n"
+"}"
+
+#. Tag: title
+#: Concepts.xml:336
+#, no-c-format
+msgid "Built-in components"
+msgstr "Eingebaute Komponenten"
+
+#. Tag: para
+#: Concepts.xml:337
+#, no-c-format
+msgid ""
+"Like many good frameworks, Seam eats its own dogfood and is implemented "
+"mostly as a set of built-in Seam interceptors (see later) and Seam "
+"components. This makes it easy for applications to interact with built-in "
+"components at runtime or even customize the basic functionality of Seam by "
+"replacing the built-in components with custom implementations. The built-in "
+"components are defined in the Seam namespace <literal>org.jboss.seam.core</"
+"literal> and the Java package of the same name."
+msgstr ""
+"Wie viele gute Frameworks wird Seam meist als Satz eingebauter Seam Interzeptoren (siehe später) und Seam Komponenten implementiert. DIes macht es einfach für Applikationen zur Runtime mit eingebauten Komponenten zu interagieren oder sogar die grundlegende Funktionalität von Seam durch das Ersetzen der eingebauten Komponenten durch angepasste Implementierungen anzupassen. DIe eingebauten Komponenten sind im Seam Namespace <literal>org.jboss.seam.core</"
+"literal> und dem gleichnamigen Java-Paket definiert."
+
+#. Tag: para
+#: Concepts.xml:340
+#, no-c-format
+msgid ""
+"The built-in components may be injected, just like any Seam components, but "
+"they also provide convenient static <literal>instance()</literal> methods:"
+msgstr ""
+"Die eingebauten Komponenten können so wie alle anderen Seam Komponenten auch "
+"eingespeist werden, aber sie bieten auch praktische statische "
+"<literal>instance()</literal>-Methoden:"
+
+#. Tag: programlisting
+#: Concepts.xml:343
+#, no-c-format
+msgid "FacesMessages.instance().add(\"Welcome back, #{user.name}!\");"
+msgstr "FacesMessages.instance().add(\"Welcome back, #{user.name}!\");"
+
+#. Tag: para
+#: Concepts.xml:344
+#, no-c-format
+msgid ""
+"Seam was designed to integrate tightly in a Java EE 5 environment. However, "
+"we understand that there are many projects which are not running in a full "
+"EE environment. We also realize the critical importance of easy unit and "
+"integration testing using frameworks such as TestNG and JUnit. So, we&#39;ve "
+"made it easy to run Seam in Java SE environments by allowing you to boostrap "
+"certain critical infrastructure normally only found in EE environments by "
+"installing built-in Seam components."
+msgstr "Seam wurde entworfen, um sich gut in eine Java EE 5 Umgebung zu integrieren. Wir verstehen jedoch, dass es viele Projekte gibt, die nicht in einer vollständigen EE-Umgebung laufen. Wir erkennen auch die kritische Bedeutung einfachen Einheits- und Intergrationstestens unter Verwendung von Frameworks wie TestNG und JUnit. Wir haben es daher einfach gemacht, Seam in Java SE Umgebungen laufen zu lassen, indem Sie bestimmte kritische Infrastruktur bootstrappen können, die normalerweise nur in EE Umgebungen vorkommen, indem Sie eingebaute Seam Komponenten installieren."
+
+#. Tag: para
+#: Concepts.xml:347
+#, no-c-format
+msgid ""
+"For example, you can run your EJB3 components in Tomcat or an integration "
+"test suite just by installing the built-in component <literal>org.jboss.seam."
+"core.ejb</literal>, which automatically bootstraps the JBoss Embeddable EJB3 "
+"container and deploys your EJB components."
+msgstr ""
+"Sie können Ihre EJB3-Komponenten zum Beispiel in Tomcat oder einer "
+"Integration Test-Suite ausführen, indem Sie einfach die eingebaute "
+"Komponente <literal>org.jboss.seam.core.ejb</literal> installieren, die "
+"automatisch den JBoss Embeddable EJB3-Container bootstrappt und Ihre EJB-"
+"Komponenten deployt."
+
+#. Tag: para
+#: Concepts.xml:350
+#, no-c-format
+msgid ""
+"Or, if you&#39;re not quite ready for the Brave New World of EJB 3.0, you "
+"can write a Seam application that uses only JavaBean components, together "
+"with Hibernate3 for persistence, by installing a built-in component that "
+"manages a Hibernate <literal>SessionFactory</literal>. When using Hibernate "
+"outside of a J2EE environment, you will also probably need a JTA transaction "
+"manager and JNDI server, which are available via the built-in component "
+"<literal>org.jboss.seam.core.microcontainer</literal>. This lets you use the "
+"bulletproof JTA/JCA pooling datasource from JBoss application server in an "
+"SE environment like Tomcat!"
+msgstr "Oder - falls Sie sich noch nicht ganz bereit für die schöne neue Welt von EJB 3.0 fühlen - können Sie eine Seam-Anwendung schreiben, die nur JavaBean-Komponenten mit Hibernate3 für Persistenz verwenden, indem Sie eine eingebaute Komponente zur Verwaltung einer Hibernate <literal>SessionFactory</literal> installieren. Bei Verwendung von Hibernate außerhalb einer J2EE-Umgebung, werden Sie wahrscheinlich einen JTA-Transaction-Manager und JNDI-Server benötigen, die via der eingebauten Komponente <literal>org.jboss.seam.core.microcontainer</literal> verfügbar sind. Dies lässt Sie die kugelsichere JTA/JCA Pooling Datenquelle vom JBoss Applikationsserver in einer SE-Umgebung wie Tomcat verwenden!"
+
+#. Tag: title
+#: Concepts.xml:353
+#, no-c-format
+msgid "Bijection"
+msgstr "Bijektion"
+
+#. Tag: para
+#: Concepts.xml:354
+#, no-c-format
+msgid ""
+"<emphasis>Dependency injection</emphasis> or <emphasis>inversion of control</"
+"emphasis> is by now a familiar concept to most Java developers. Dependency "
+"injection allows a component to obtain a reference to another component by "
+"having the container \"inject\" the other component to a setter method or "
+"instance variable. In all dependency injection implementations that we have "
+"seen, injection occurs when the component is constructed, and the reference "
+"does not subsequently change for the lifetime of the component instance. For "
+"stateless components, this is reasonable. From the point of view of a "
+"client, all instances of a particular stateless component are "
+"interchangeable. On the other hand, Seam emphasizes the use of stateful "
+"components. So traditional dependency injection is no longer a very useful "
+"construct. Seam introduces the notion of <emphasis>bijection</emphasis> as a "
+"generalization of injection. In contrast to injection, bijection is:"
+msgstr ""
+"<emphasis>Dependency injection</emphasis> oder <emphasis>inversion of control</"
+"emphasis> ist mittlerweile ein vertrautes Konzept für die meisten Java-Entwickler. Dependency "
+"injection gestattet es einer Komponente einen Verweis auf eine andere Komponente mittels \"Einspeisung\" durch den Container in die andere Komponente zu einer Setter-Methode oder Instanzvariable zu erhalten. In allen bis jetzt gesehenen dependency injection Implementierungen kommt es bei Konstruktion der Komponente zur Einspeisung, und der Verweis ändert sich nicht nachträglich für die Lebensdauer der Komponenteninstanz. Für \"stateless\" Komponenten ist dies vernünftig. Aus Perspektive eines Clients sind alle Instanzen einer bestimmten \"stateless\" Komponente austauschbar. Andererseits betont Seam die Verwendung von \"stateful\" Komponenten. Daher ist traditionelle \"dependency injection\" eigentlich kein sehr nützliches Konstrukt mehr. Seam stellt den Begriff der <emphasis>bijection</emphasis> als Generalisierung von injection vor. Im Gegensatz zu injection, ist bijection:"
+
+#. Tag: para
+#: Concepts.xml:359
+#, no-c-format
+msgid ""
+"<emphasis>contextual</emphasis> - bijection is used to assemble stateful "
+"components from various different contexts (a component from a \"wider\" "
+"context may even have a reference to a component from a \"narrower\" context)"
+msgstr ""
+"<emphasis>Kontextuelle</emphasis> - Bijektion wird verwendet, um \"stateful"
+"\" Komponenten von verschiedenen Kontexten zu assemblieren (eine Komponente "
+"von einem \"breiteren\" Kontext kann sogar einen Verweis auf eine Komponente "
+"von einem \"schmaleren\" Kontext besitzen)"
+
+#. Tag: para
+#: Concepts.xml:364
+#, no-c-format
+msgid ""
+"<emphasis>bidirectional</emphasis> - values are injected from context "
+"variables into attributes of the component being invoked, and also "
+"<emphasis>outjected</emphasis> from the component attributes back out to the "
+"context, allowing the component being invoked to manipulate the values of "
+"contextual variables simply by setting its own instance variables"
+msgstr ""
+"<emphasis>bidirektionale</emphasis> - Werte werden von Kontextvariablen in Attribute der aufgerufenen Komponente eingespeist und auch von den Komponentenattributen zurück in den Kontext "
+"<emphasis>ausgeworfen</emphasis>, wobei der aufgerufenen Komponente gestattet wird, die Werte kontextueller Variablen zu verändern, indem sie ihre eigenen Instanzvariablen setzt"
+
+#. Tag: para
+#: Concepts.xml:369
+#, no-c-format
+msgid ""
+"<emphasis>dynamic</emphasis> - since the value of contextual variables "
+"changes over time, and since Seam components are stateful, bijection takes "
+"place every time a component is invoked"
+msgstr ""
+"<emphasis>dynamisch</emphasis> - Da der Wert kontextueller Variablen sich "
+"mit der Zeit ändert und da Seam Komponenten \"stateful\" sind, findet "
+"Bijektion bei jedem Aufruf einer Komponente statt."
+
+#. Tag: para
+#: Concepts.xml:374
+#, no-c-format
+msgid ""
+"In essence, bijection lets you alias a context variable to a component "
+"instance variable, by specifying that the value of the instance variable is "
+"injected, outjected, or both. Of course, we use annotations to enable "
+"bijection."
+msgstr "Im Wesentlichen gestattet Bijection die Erstellung eines Alias für eine Kontextvariable zu einer Komponenteninstanzvariablen, durch Festlegen des Werts der Instanzvariablen wird die Instanzvariable eingespeist, ausgeworfen oder beides (\"injected\" oder \"outjected\"). Natürlich verwenden wir Annotationen, um Bijection zu aktivieren."
+
+#. Tag: para
+#: Concepts.xml:377
+#, no-c-format
+msgid ""
+"The <literal>@In</literal> annotation specifies that a value should be "
+"injected, either into an instance variable:"
+msgstr ""
+"Die <literal>@In</literal>-Annotation legt fest, dass ein Wert eingespeist "
+"werden soll, entweder in eine Instanzvariable:"
+
+#. Tag: programlisting
+#: Concepts.xml:380
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In User user;\n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:381
+#, no-c-format
+msgid "or into a setter method:"
+msgstr "Oder in eine \"Setter\"-Methode:"
+
+#. Tag: programlisting
+#: Concepts.xml:384
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @In\n"
+"    public void setUser(User user) {\n"
+"        this.user=user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @In\n"
+"    public void setUser(User user) {\n"
+"        this.user=user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:385
+#, no-c-format
+msgid ""
+"By default, Seam will do a priority search of all contexts, using the name "
+"of the property or instance variable that is being injected. You may wish to "
+"specify the context variable name explicitly, using, for example, "
+"<literal>@In(\"currentUser\")</literal>."
+msgstr ""
+"Standardmäßig führt Seam eine Prioritätensuche aller Kontexte durch, unter "
+"Verwendung des Property-Namens oder der Instanzvariablen, die eingespeist "
+"wird. Sie können den Namen der Kontextvariablen explizit festlegen, indem "
+"Sie etwa <literal>@In(\"currentUser\")</literal> verwenden."
+
+#. Tag: para
+#: Concepts.xml:388
+#, no-c-format
+msgid ""
+"If you want Seam to create an instance of the component when there is no "
+"existing component instance bound to the named context variable, you should "
+"specify <literal>@In(create=true)</literal>. If the value is optional (it "
+"can be null), specify <literal>@In(required=false)</literal>."
+msgstr ""
+"Soll Seam eine Instanz der Komponenten erstellen, wenn keine bereits "
+"existierende Komponenteninstanz an die genannte Kontextvariable gebunden "
+"ist, so sollten Sie <literal>@In(create=true)</literal> festlegen. Ist der "
+"Wert optional (er kann Null sein), legen Sie <literal>@In(required=false)</"
+"literal> fest."
+
+#. Tag: para
+#: Concepts.xml:391
+#, no-c-format
+msgid ""
+"For some components, it can be repetitive to have to specify <literal>@In"
+"(create=true)</literal> everywhere they are used. In such cases, you can "
+"annotate the component <literal>@AutoCreate</literal>, and then it will "
+"always be created, whenever needed, even without the explicit use of "
+"<literal>create=true</literal>."
+msgstr ""
+"Für einige Komponenten kann es repetitiv sein <literal>@In(create=true)</"
+"literal> überall dort festzulegen, wo diese verwendet werden. In solchen "
+"Fällen können Sie die Komponente annotieren <literal>@AutoCreate</literal>, "
+"dann wird diese immer erstellt wenn sie benötigt wird, auch ohne expliziten "
+"Gebrauch von <literal>create=true</literal>."
+
+#. Tag: para
+#: Concepts.xml:394
+#, no-c-format
+msgid "You can even inject the value of an expression:"
+msgstr "Sie können sogar den Wert eines Ausdrucks einspeisen:"
+
+#. Tag: programlisting
+#: Concepts.xml:397
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In(\"#{user.username}\") String username;\n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In(\"#{user.username}\") String username;\n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:398
+#, no-c-format
+msgid ""
+"(There is much more information about component lifecycle and injection in "
+"the next chapter.)"
+msgstr ""
+"(Viele weitere Informationen zum Lebenszyklus von Komponenten sowie "
+"Einspeisung finden Sie im nächsten Kapitel)."
+
+#. Tag: para
+#: Concepts.xml:401
+#, no-c-format
+msgid ""
+"The <literal>@Out</literal> annotation specifies that an attribute should be "
+"outjected, either from an instance variable:"
+msgstr ""
+"Die <literal>@Out</literal>-Annotation legt fest, dass ein Attribut "
+"\"outjected\" werden soll, entweder durch eine Instanzvariable:"
+
+#. Tag: programlisting
+#: Concepts.xml:404
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @Out User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @Out User user;\n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:405
+#, no-c-format
+msgid "or from a getter method:"
+msgstr "Oder durch eine \"Getter\"-Methode:"
+
+#. Tag: programlisting
+#: Concepts.xml:408
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @Out\n"
+"    public User getUser() {\n"
+"        return user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @Out\n"
+"    public User getUser() {\n"
+"        return user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:409
+#, no-c-format
+msgid "An attribute may be both injected and outjected:"
+msgstr "Ein Attribut kann sowohl \"injected\" als auch \"outjected\" werden:"
+
+#. Tag: programlisting
+#: Concepts.xml:412
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In @Out User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In @Out User user;\n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:413
+#, no-c-format
+msgid "<para>or:</para>"
+msgstr "<para>oder:</para>"
+
+#. Tag: programlisting
+#: Concepts.xml:416
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @In\n"
+"    public void setUser(User user) {\n"
+"        this.user=user;\n"
+"    }\n"
+"    \n"
+"    @Out\n"
+"    public User getUser() {\n"
+"        return user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @In\n"
+"    public void setUser(User user) {\n"
+"        this.user=user;\n"
+"    }\n"
+"    \n"
+"    @Out\n"
+"    public User getUser() {\n"
+"        return user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+
+#. Tag: title
+#: Concepts.xml:417
+#, no-c-format
+msgid "Lifecycle methods"
+msgstr "Lebenszyklus-Methoden"
+
+#. Tag: para
+#: Concepts.xml:418
+#, no-c-format
+msgid ""
+"Session bean and entity bean Seam components support all the usual EJB 3.0 "
+"lifecycle callback (<literal>@PostConstruct</literal>, <literal>@PreDestroy</"
+"literal>, etc). Seam extends all of these callbacks except "
+"<literal>@PreDestroy</literal> to JavaBean components. But Seam also defines "
+"its own component lifecycle callbacks."
+msgstr ""
+"Session-Bean und Entity-Bean Seam-Komponenten unterstützen allen üblichen "
+"EJB 3.0 Lifecycle Callback (<literal>@PostConstruct</literal>, "
+"<literal>@PreDestroy</literal>, usw.). Seam erweitert alle diese Callbacks "
+"außer <literal>@PreDestroy</literal> zu JavaBean Komponenten. Aber Seam "
+"definiert auch seine eigenen Komponenten Lifecycle Callbacks."
+
+#. Tag: para
+#: Concepts.xml:421
+#, no-c-format
+msgid ""
+"The <literal>@Create</literal> method is called every time Seam instantiates "
+"a component. Unlike the <literal>@PostConstruct</literal> method, this "
+"method is called after the component is fully constructed by the EJB "
+"container, and has access to all the usual Seam functionality (bijection, "
+"etc). Components may define only one <literal>@Create</literal> method."
+msgstr ""
+"Die <literal>@Create</literal>-Methode wird jedes Mal aufgerufen, wenn Seam "
+"eine Komponente instantiiert. Anders als die <literal>@PostConstruct</"
+"literal>-Methode wird diese Methode aufgerufen, nachdem die Komponente durch "
+"den EJB-Container vollständig konstruiert wurde und Zugriff zu sämtlichen "
+"regulären Seam Funktionalitäten hat (Bijektion usw.). Komponenten können nur "
+"eine <literal>@Create</literal>-Methode definieren."
+
+#. Tag: para
+#: Concepts.xml:424
+#, no-c-format
+msgid ""
+"The <literal>@Destroy</literal> method is called when the context that the "
+"Seam component is bound to ends. Components may define only one "
+"<literal>@Destroy</literal> method. Stateful session bean components "
+"<emphasis>must</emphasis> define a method annotated <literal>@Destroy "
+"@Remove</literal>."
+msgstr ""
+"Die <literal>@Destroy</literal>-Methode wird aufgerufen, wenn der Kontext, "
+"an den die Seam Komponente gebunden ist, endet. Komponenten können nur eine "
+"<literal>@Destroy</literal>-Methode definieren. Stateful Session Bean "
+"Komponenten <emphasis>müssen</emphasis> eine Methode definieren, die mit "
+"<literal>@Destroy @Remove</literal> annotiert ist."
+
+#. Tag: para
+#: Concepts.xml:427
+#, no-c-format
+msgid ""
+"Finally, a related annotation is the <literal>@Startup</literal> annotation, "
+"which may be applied to any application or session scoped component. The "
+"<literal>@Startup</literal> annotation tells Seam to instantiate the "
+"component immediately, when the context begins, instead of waiting until it "
+"is first referenced by a client. It is possible to control the order of "
+"instantiation of startup components by specifying <literal>@Startup(depends="
+"{....})</literal>."
+msgstr ""
+"Bei der <literal>@Startup</literal>-Annotation handelt es sich um eine verwandte Annotation, die bei jeder Anwendungs- oder Sessionbegrenzten Komponente angewendet werden kann. Die <literal>@Startup</literal> Annotation teilt Seam mit, dass die Komponente sofort instantiiert werden soll wenn der Kontext beginnt statt zu warten, bis ein Verweis durch einen Client erfolgt. Es ist möglich, die Reihenfolge der Instantiierung von Startup-Komponenten durch Festlegen von <literal>@Startup(depends="
+"{....})</literal> zu steuern."
+
+#. Tag: title
+#: Concepts.xml:430
+#, no-c-format
+msgid "Conditional installation"
+msgstr "Bedingte Installation"
+
+#. Tag: para
+#: Concepts.xml:431
+#, no-c-format
+msgid ""
+"The <literal>@Install</literal> annotation lets you control conditional "
+"installation of components that are required in some deployment scenarios "
+"and not in others. This is useful if:"
+msgstr ""
+"Die <literal>@Install</literal>-Annotation gestattet die Steuerung "
+"konditionaler Installation von Komponenten, die in einigen Deployment "
+"Szenarien nötig, in anderen wiederum nicht nötig sind. Die ist von Nutzen, "
+"wenn:"
+
+#. Tag: para
+#: Concepts.xml:436
+#, no-c-format
+msgid "You want to mock out some infrastructural component in tests."
+msgstr "Sie wollen eine infrastrukturelle Komponente in Tests \"nachahmen\"."
+
+#. Tag: para
+#: Concepts.xml:441
+#, no-c-format
+msgid ""
+"You want change the implementation of a component in certain deployment "
+"scenarios."
+msgstr ""
+"Sie möchten die Implementierung einer Komponente in bestimmten Deployment "
+"Syenarien ändern."
+
+#. Tag: para
+#: Concepts.xml:446
+#, no-c-format
+msgid ""
+"You want to install some components only if their dependencies are available "
+"(useful for framework authors)."
+msgstr "Sie wollen einige Komponenten nur installieren, wenn deren Abhängigkeiten verfügbar sind (nützlich für Framework Autoren)."
+
+#. Tag: para
+#: Concepts.xml:451
+#, no-c-format
+msgid ""
+"<literal>@Install</literal> works by letting you specify "
+"<emphasis>precedence</emphasis> and <emphasis>dependencies</emphasis>."
+msgstr ""
+"<literal>@Install</literal> funktioniert, indem es Sie <emphasis>Priorität</"
+"emphasis> und <emphasis>Abhängigkeiten festlegen lässt</emphasis>."
+
+#. Tag: para
+#: Concepts.xml:454
+#, no-c-format
+msgid ""
+"The precedence of a component is a number that Seam uses to decide which "
+"component to install when there are multiple classes with the same component "
+"name in the classpath. Seam will choose the component with the higher "
+"precendence. There are some predefined precedence values (in ascending "
+"order):"
+msgstr "Die Rangordnung einer Komponente ist eine Zahl, die Seam dazu verwendet, um zu entscheiden welche Komponente installiert werden soll, wenn mehrere Klassen mit demselben Komponentennamen im Klassenpfad vorhanden sind. Seam wählt dann die Komponenten mit dem höheren Vorrang. Es existieren einige vordefinierte Werte mit Vorrang (in aufsteigender Reihenfolge):"
+
+#. Tag: para
+#: Concepts.xml:459
+#, no-c-format
+msgid ""
+"<literal>BUILT_IN</literal> &mdash; the lowest precedece components are the "
+"components built in to Seam."
+msgstr ""
+"<literal>BUILT_IN</literal> &mdash; Die Komponenten mit der niedrigsten "
+"Priorität sind die in Seam eingebauten Komponenten."
+
+#. Tag: para
+#: Concepts.xml:464
+#, no-c-format
+msgid ""
+"<literal>FRAMEWORK</literal> &mdash; components defined by third-party "
+"frameworks may override built-in components, but are overridden by "
+"application components."
+msgstr "<literal>FRAMEWORK</literal> &mdash; Komponenten, die durch Frameworks Dritter definiert sind, können eingebaute Komponenten außer Kraft setzen, werden aber durch Anwendungskomponenten außer Kraft gesetzt."
+
+#. Tag: para
+#: Concepts.xml:469
+#, no-c-format
+msgid ""
+"<literal>APPLICATION</literal> &mdash; the default precedence. This is "
+"appropriate for most application components."
+msgstr ""
+"<literal>APPLICATION</literal> &mdash; Die standardmäßige Priorität. Dies "
+"passt für die meisten Komponenten der Anwendung."
+
+#. Tag: para
+#: Concepts.xml:474
+#, no-c-format
+msgid ""
+"<literal>DEPLOYMENT</literal> &mdash; for application components which are "
+"deployment-specific."
+msgstr ""
+"<literal>DEPLOYMENT</literal> &mdash; Für Deployment-spezifische "
+"Anwendungskomponenten."
+
+#. Tag: para
+#: Concepts.xml:479
+#, no-c-format
+msgid "<literal>MOCK</literal> &mdash; for mock objects used in testing."
+msgstr "<literal>MOCK</literal> &mdash; Für beim Testen verwendete Mock-Objekte."
+
+#. Tag: para
+#: Concepts.xml:484
+#, no-c-format
+msgid ""
+"Suppose we have a component named <literal>messageSender</literal> that "
+"talks to a JMS queue."
+msgstr ""
+"Nehmen wir an wir haben eine Komponente mit dem Namen "
+"<literal>messageSender</literal> die mit einer JMS-Queue spricht."
+
+#. Tag: programlisting
+#: Concepts.xml:487
+#, no-c-format
+msgid ""
+"@Name(\"messageSender\") \n"
+"public class MessageSender {\n"
+"    public void sendMessage() {\n"
+"        //do something with JMS\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"messageSender\") \n"
+"public class MessageSender {\n"
+"    public void sendMessage() {\n"
+"        //do something with JMS\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:488
+#, no-c-format
+msgid ""
+"In our unit tests, we don&#39;t have a JMS queue available, so we would like "
+"to stub out this method. We&#39;ll create a <emphasis>mock</emphasis> "
+"component that exists in the classpath when unit tests are running, but is "
+"never deployed with the application:"
+msgstr "In unseren Einheitentests existiert keine verfügbare JMS-Warteschlange, daher würden wir gerne diese Methode \"stub out\". Wir ertsellen eine <emphasis>Schein</emphasis>-Komponente, die im Klassenpfad vorhanden ist, wenn Einheitentests laufen, aber niemals mit der Anwendung deployt wird:"
+
+#. Tag: programlisting
+#: Concepts.xml:491
+#, no-c-format
+msgid ""
+"@Name(\"messageSender\") \n"
+"@Install(precedence=MOCK)\n"
+"public class MockMessageSender extends MessageSender {\n"
+"    public void sendMessage() {\n"
+"        //do nothing!\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"messageSender\") \n"
+"@Install(precedence=MOCK)\n"
+"public class MockMessageSender extends MessageSender {\n"
+"    public void sendMessage() {\n"
+"        //do nothing!\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:492
+#, no-c-format
+msgid ""
+"The <literal>precedence</literal> helps Seam decide which version to use "
+"when it finds both components in the classpath."
+msgstr ""
+"<literal>precedence</literal> hilft Seam dabei zu entscheiden, welche "
+"Version verwendet werden soll, wenn beide Komponenten im Klassenpfad "
+"gefunden werden."
+
+#. Tag: para
+#: Concepts.xml:495
+#, no-c-format
+msgid ""
+"This is nice if we are able to control exactly which classes are in the "
+"classpath. But if I&#39;m writing a reusable framework with many "
+"dependecies, I don&#39;t want to have to break that framework across many "
+"jars. I want to be able to decide which components to install depending upon "
+"what other components are installed, and upon what classes are available in "
+"the classpath. The <literal>@Install</literal> annotation also controls this "
+"functionality. Seam uses this mechanism internally to enable conditional "
+"installation of many of the built-in components. However, you probably "
+"won&#39;t need to use it in your application."
+msgstr "Es ist eine gute Sache, wenn wir genau steuern können, welche Klassen sich im Klassenpfad befinden. Wenn ich jedoch ein wiederverwendbares Framework mit vielen Abhängigkeiten schreibe, dann will ich dieses Framework nicht über viele Jars aufbrechen müssen. Ich möchte entscheiden können, welche Komponenten installiert werden sollen abhängig davon welche anderen Komponenten installiert sind und welche Klassen im Klassenpfad verfügbar sind. Die <literal>@Install</literal>-Annotation steuert diese Funktionalität auch. Seam verwendet diesen Mechanismus intern, um die konditionale Installation vieler der eingebauten Komponenten zu aktivieren. Sie werden dies jedoch wahrscheinlich in Ihrer Anwendung nicht verwenden müssen."
+
+#. Tag: title
+#: Concepts.xml:498
+#, no-c-format
+msgid "Logging"
+msgstr "Protokollierung"
+
+#. Tag: para
+#: Concepts.xml:499
+#, no-c-format
+msgid "Who is not totally fed up with seeing noisy code like this?"
+msgstr "Wer hat diese Art von Code nicht satt?"
+
+#. Tag: programlisting
+#: Concepts.xml:502
+#, no-c-format
+msgid ""
+"private static final Log log = LogFactory.getLog(CreateOrderAction.class);\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    if ( log.isDebugEnabled() ) {\n"
+"        log.debug(\"Creating new order for user: \" + user.username() + \n"
+"            \" product: \" + product.name() \n"
+"            + \" quantity: \" + quantity);\n"
+"    }\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+"private static final Log log = LogFactory.getLog(CreateOrderAction.class);\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    if ( log.isDebugEnabled() ) {\n"
+"        log.debug(\"Creating new order for user: \" + user.username() + \n"
+"            \" product: \" + product.name() \n"
+"            + \" quantity: \" + quantity);\n"
+"    }\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:503
+#, no-c-format
+msgid ""
+"It is difficult to imagine how the code for a simple log message could "
+"possibly be more verbose. There is more lines of code tied up in logging "
+"than in the actual business logic! I remain totally astonished that the Java "
+"community has not come up with anything better in 10 years."
+msgstr "Es ist schwer vorstellbar, wie der Code für eine einfache Protokollnachricht noch wortreicher sein könnte. Der Code besteht bei der Protokollierung aus mehr Zeilen als die tatsächliche Business Logic! Ich kann immer noch nicht glauben, dass die Java-Community in 10 Jahren keine bessere Lösung hat finden können."
+
+#. Tag: para
+#: Concepts.xml:506
+#, no-c-format
+msgid "Seam provides a logging API that simplifies this code significantly:"
+msgstr "Seam liefert eine Protokollierungs-API, die diesen Code maßgeblich vereinfacht:"
+
+#. Tag: programlisting
+#: Concepts.xml:509
+#, no-c-format
+msgid ""
+"@Logger private Log log;\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    log.debug(\"Creating new order for user: #0 product: #1 quantity: #2\", "
+"user.username(), \n"
+"      product.name(), quantity);\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+"@Logger private Log log;\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    log.debug(\"Creating new order for user: #0 product: #1 quantity: #2\", "
+"user.username(), \n"
+"      product.name(), quantity);\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:510
+#, no-c-format
+msgid ""
+"It doesn&#39;t matter if you declare the <literal>log</literal> variable "
+"static or not&mdash;it will work either way, except for entity bean "
+"components which require the <literal>log</literal> variable to be static."
+msgstr ""
+"Es macht nichts, ob Sie die <literal>log</literal>-Variable statisch "
+"erklären oder nicht&mdash; es funktioniert in beiden Fällen außer für Entity Bean Komponenten, für die es erforderlich ist, dass die <literal>log</literal>-Variable statisch ist."
+
+#. Tag: para
+#: Concepts.xml:513
+#, no-c-format
+msgid ""
+"Note that we don&#39;t need the noisy <literal>if ( log.isDebugEnabled() )</"
+"literal> guard, since string concatenation happens <emphasis>inside</"
+"emphasis> the <literal>debug()</literal> method. Note also that we don&#39;t "
+"usually need to specify the log category explicitly, since Seam knows what "
+"component it is injecting the <literal>Log</literal> into."
+msgstr ""
+"Beachten Sie, dass wir den <literal>if ( log.isDebugEnabled() )</"
+"literal>-Schutz nicht brauchen, da String-Konkatenation <emphasis>innnerhalb</emphasis> der <literal>debug()</literal>-Methode geschieht. Beachten Sie auch, dass wir in der Regel die Protokollkategorie nicht explizit festlegen müssen, da Seam weiß, in welche Komponente es den <literal>Log</literal> einspeist."
+
+#. Tag: para
+#: Concepts.xml:516
+#, no-c-format
+msgid ""
+"If <literal>User</literal> and <literal>Product</literal> are Seam "
+"components available in the current contexts, it gets even better:"
+msgstr ""
+"Falls es sich bei <literal>User</literal> und <literal>Product</literal> um "
+"Seam Komponenten handelt, die in aktuellen Kontexten verfügbar sind, so wird "
+"es noch besser:"
+
+#. Tag: programlisting
+#: Concepts.xml:519
+#, no-c-format
+msgid ""
+"@Logger private Log log;\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    log.debug(\"Creating new order for user: #{user.username} product: #"
+"{product.name} \n"
+"      quantity: #0\", quantity);\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+"@Logger private Log log;\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    log.debug(\"Creating new order for user: #{user.username} product: #"
+"{product.name} \n"
+"      quantity: #0\", quantity);\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:520
+#, no-c-format
+msgid ""
+"Seam logging automagically chooses whether to send output to log4j or JDK "
+"logging. If log4j is in the classpath, Seam with use it. If it is not, Seam "
+"will use JDK logging."
+msgstr ""
+"Seam-Protokollierung wählt automatisch, ob Ausgaben an log4j oder JDK "
+"Protokollierung geschickt werden. Befindet sich log4j im Klassenpfad, so verwendet Seam es. Falls nicht, wählt Seam "
+"JDK-Protokollierung."
+
+#. Tag: title
+#: Concepts.xml:523
+#, no-c-format
+msgid "The <literal>Mutable</literal> interface and <literal>@ReadOnly</literal>"
+msgstr "Das <literal>Mutable</literal>-Interface und <literal>@ReadOnly</literal>"
+
+#. Tag: para
+#: Concepts.xml:524
+#, no-c-format
+msgid ""
+"Many application servers feature an amazingly broken implementation of "
+"<literal>HttpSession</literal> clustering, where changes to the state of "
+"mutable objects bound to the session are only replicated when the "
+"application calls <literal>setAttribute()</literal> explicitly. This is a "
+"source of bugs that can not effectively be tested for at development time, "
+"since they will only manifest when failover occurs. Furthermore, the actual "
+"replication message contains the entire serialized object graph bound to the "
+"session attribute, which is inefficient."
+msgstr "Viele Anwendungsserver featuren eine überraschend gebrochene Implementierung von <literal>HttpSession</literal>-Clustering, wo Änderungen am Status veränderbarer, an die Session gebundener Objekte nur repliziert werden, wenn die Anwendung <literal>setAttribute()</literal> explizit aufruft. Dies ist eine Fehlerquelle, auf die zum Zeitpunkt der Entwicklung nicht effektiv getestet werden kann, da diese sich erst beim Failover manifestieren. Desweiteren enthält die tatsächliche Replkationsmeldung das gesamte serialisierte Objektdiagramm gebunden an das Sessionattribut, das ineffizient ist."
+
+#. Tag: para
+#: Concepts.xml:527
+#, no-c-format
+msgid ""
+"Of course, EJB stateful session beans must perform automatic dirty checking "
+"and replication of mutable state and a sophisticated EJB container can "
+"introduce optimizations such as attribute-level replication. Unfortunately, "
+"not all Seam users have the good fortune to be working in an environment "
+"that supports EJB 3.0. So, for session and conversation scoped JavaBean and "
+"entity bean components, Seam provides an extra layer of cluster-safe state "
+"management over the top of the web container session clustering."
+msgstr "Natürlich müssen EJB Stateful Session Beans automatisches \"Dirty Checking\" und Replikation veränderbaren Status und einen fortgeschrittenen EJB-Container der Optimierungen wie Replikation auf Attributebene ermöglichen kann. Leider haben nicht alle Seam-Benutzer das Glück in einer Umgebung zu arbeiten, die EJB 3.0 unterstützt. Daher bietet Seam eine Extra-Schicht von cluster-sicherem Status-Management über dem Web-Container Session-Clustering für Session- und Konversationsbegrenzte JavaBean- und Entity-Bean-Komponenten."
+
+#. Tag: para
+#: Concepts.xml:530
+#, no-c-format
+msgid ""
+"For session or conversation scoped JavaBean components, Seam automatically "
+"forces replication to occur by calling <literal>setAttribute()</literal> "
+"once in every request that the component was invoked by the application. Of "
+"course, this strategy is inefficient for read-mostly components. You can "
+"control this behavior by implementing the <literal>org.jboss.seam.core."
+"Mutable</literal> interface, or by extending <literal>org.jboss.seam.core."
+"AbstractMutable</literal>, and writing your own dirty-checking logic inside "
+"the component. For example,"
+msgstr ""
+"Für Session- oder Konversationsbegrenzte JavaBean-Komponenten erzwingt Seam automatisch die Replikation durch Aufruf von <literal>setAttribute()</literal> ein Mal in jeder Anfrage die die Komponente durch die Anwendung aufgerufen wurde. Natürlich ist diese Strategie unwirksam für die meisten \"read-mostly\" Komponenten. Sie können dieses Verhalten durch Implementierung des <literal>org.jboss.seam.core."
+"Mutable</literal>-Interface oder durch Erweiterung von <literal>org.jboss.seam.core."
+"AbstractMutable</literal> und Schreiben Ihrer eigenen \"dirty-checking\" Logik innerhalb der Komponente steuern. Zum Beispiel,"
+
+#. Tag: programlisting
+#: Concepts.xml:533
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class Account extends AbstractMutable\n"
+"{\n"
+"    private BigDecimal balance;\n"
+"    \n"
+"    public void setBalance(BigDecimal balance)\n"
+"    {\n"
+"        setDirty(this.balance, balance);\n"
+"        this.balance = balance;\n"
+"    }\n"
+"    \n"
+"    public BigDecimal getBalance()\n"
+"    {\n"
+"        return balance;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+"@Name(\"account\")\n"
+"public class Account extends AbstractMutable\n"
+"{\n"
+"    private BigDecimal balance;\n"
+"    \n"
+"    public void setBalance(BigDecimal balance)\n"
+"    {\n"
+"        setDirty(this.balance, balance);\n"
+"        this.balance = balance;\n"
+"    }\n"
+"    \n"
+"    public BigDecimal getBalance()\n"
+"    {\n"
+"        return balance;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:534
+#, no-c-format
+msgid ""
+"Or, you can use the <literal>@ReadOnly</literal> annotation to achieve a "
+"similar effect:"
+msgstr ""
+"Oder Sie können die <literal>@ReadOnly</literal>-Annotation verwenden, um "
+"eine ähnliche Wirkung zu erzielen:"
+
+#. Tag: programlisting
+#: Concepts.xml:537
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class Account\n"
+"{\n"
+"    private BigDecimal balance;\n"
+"    \n"
+"    public void setBalance(BigDecimal balance)\n"
+"    {\n"
+"        this.balance = balance;\n"
+"    }\n"
+"    \n"
+"    @ReadOnly\n"
+"    public BigDecimal getBalance()\n"
+"    {\n"
+"        return balance;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+"@Name(\"account\")\n"
+"public class Account\n"
+"{\n"
+"    private BigDecimal balance;\n"
+"    \n"
+"    public void setBalance(BigDecimal balance)\n"
+"    {\n"
+"        this.balance = balance;\n"
+"    }\n"
+"    \n"
+"    @ReadOnly\n"
+"    public BigDecimal getBalance()\n"
+"    {\n"
+"        return balance;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:538
+#, no-c-format
+msgid ""
+"For session or conversation scoped entity bean components, Seam "
+"automatically forces replication to occur by calling <literal>setAttribute()"
+"</literal> once in every request, <emphasis>unless the (conversation-scoped) "
+"entity is currently associated with a Seam-managed persistence context, in "
+"which case no replication is needed</emphasis>. This strategy is not "
+"necessarily efficient, so session or conversation scope entity beans should "
+"be used with care. You can always write a stateful session bean or JavaBean "
+"component to \"manage\" the entity bean instance. For example,"
+msgstr ""
+"Für Session- oder Konversationsbegrenzte Entity-Bean-Komponenten erzwingt Seam automatisch die Replikation durch einmaligen Aufruf von <literal>setAttribute()"
+"</literal> für jede Anfrage <emphasis> außer die (Konversationsbegrenzte) Entity wird zum aktuellen Zeitpunkt mit einem Seam-gemanagten Persistenzkontext assoziiert, in "
+"welchem Fall keine Replikation nötig ist</emphasis>. Diese Strategie ist nicht unbedingt effizient, daher sollten Session- oder Konversationsbegrenzte Entity-Beans mit Bedacht verwendet werden. Sie können immer ein \"Stateful Session Bean\" oder eine JavaBean-Komponenten zum \"managen\" der Entity-Bean Instanz schreiben. Zum Beispiel,"
+
+#. Tag: programlisting
+#: Concepts.xml:541
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"account\")\n"
+"public class AccountManager extends AbstractMutable\n"
+"{\n"
+"    private Account account; // an entity bean\n"
+"    \n"
+"    @Unwrap\n"
+"    public void getAccount()\n"
+"    {\n"
+"        return account;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+"@Stateful\n"
+"@Name(\"account\")\n"
+"public class AccountManager extends AbstractMutable\n"
+"{\n"
+"    private Account account; // an entity bean\n"
+"    \n"
+"    @Unwrap\n"
+"    public void getAccount()\n"
+"    {\n"
+"        return account;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:542
+#, no-c-format
+msgid ""
+"Note that the <literal>EntityHome</literal> class in the Seam Application "
+"Framework provides a great example of this pattern."
+msgstr ""
+"Beachten Sie, dass die <literal>EntityHome</literal>-Klasse im Seam "
+"Applikations-Framework ein sehr gutes Beispiel für dieses Muster bietet."
+
+#. Tag: title
+#: Concepts.xml:545
+#, no-c-format
+msgid "Factory and manager components"
+msgstr "Factory- und Manager-Komponenten"
+
+#. Tag: para
+#: Concepts.xml:546
+#, no-c-format
+msgid ""
+"We often need to work with objects that are not Seam components. But we "
+"still want to be able to inject them into our components using <literal>@In</"
+"literal> and use them in value and method binding expressions, etc. "
+"Sometimes, we even need to tie them into the Seam context lifecycle "
+"(<literal>@Destroy</literal>, for example). So the Seam contexts can contain "
+"objects which are not Seam components, and Seam provides a couple of nice "
+"features that make it easier to work with non-component objects bound to "
+"contexts."
+msgstr ""
+"Wir müssen oft mit Objekten arbeiten, bei denen es sich nicht um Seam Komponenten handelt. Wir wollen aber dennoch in der Lage sein, diese mittels <literal>@In</literal> in unsere Komponenten einzuspeisen und sie in Werte. und Methoden-Binding-Ausdrücken zu verwenden usw. "
+"Manchmal müssen wir diese sogar in den Lebenszyklus des Seam Kontext einbinden (<literal>@Destroy</literal> zum Beispiel). Daher können Seam Kontexts Objekte enthalten, die keine Seam-Komponenten sind und Seam liefert einige schöne Features, die es vereinfachen, mit Nicht-Komponenten Objekten zu arbeiten, die an Kontexte gebunden sind."
+
+#. Tag: para
+#: Concepts.xml:549
+#, no-c-format
+msgid ""
+"The <emphasis>factory component pattern</emphasis> lets a Seam component act "
+"as the instantiator for a non-component object. A <emphasis>factory method</"
+"emphasis> will be called when a context variable is referenced but has no "
+"value bound to it. We define factory methods using the <literal>@Factory</"
+"literal> annotation. The factory method binds a value to the context "
+"variable, and determines the scope of the bound value. There are two styles "
+"of factory method. The first style returns a value, which is bound to the "
+"context by Seam:"
+msgstr ""
+"Das <emphasis>Factory-Komponentenmuster</emphasis> (factory component pattern) lässt eine Seam-Komponente als Instantiator für ein Nicht-Komponentenobjekt auftreten. Eine <emphasis>Factory-Methode</"
+"emphasis> wird aufgerufen, wenn eine Kontextvariable referenziert wird aber kein Wert daran gebunden ist. Wir definieren Factory-Methoden unter Verwendung der <literal>@Factory</literal>-Annotation. Die Factory-Methode bindet einen Wert an die Kontextvariable und bestimmt den Bereich des gebundenen Wertes. Es gibt zwei Arten von Factory-Methoden. Die erste gibt einen Wert wieder, der durch Seam an den Kontext gebunden wird:"
+
+#. Tag: programlisting
+#: Concepts.xml:552
+#, no-c-format
+msgid ""
+"@Factory(scope=CONVERSATION)\n"
+"public List&lt;Customer&gt; getCustomerList() { \n"
+"    return ... ;\n"
+"}"
+msgstr ""
+"@Factory(scope=CONVERSATION)\n"
+"public List&lt;Customer&gt; getCustomerList() { \n"
+"    return ... ;\n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:553
+#, no-c-format
+msgid ""
+"The second style is a method of type <literal>void</literal> which binds the "
+"value to the context variable itself:"
+msgstr ""
+"Die zweite Art ist eine Methode des Typs <literal>void</literal>, die den "
+"Wert an die Kontextvariable selbst bindet:"
+
+#. Tag: programlisting
+#: Concepts.xml:556
+#, no-c-format
+msgid ""
+"@DataModel List&lt;Customer&gt; customerList;\n"
+"\n"
+"@Factory(\"customerList\")\n"
+"public void initCustomerList() { \n"
+"    customerList = ...  ;\n"
+"}"
+msgstr ""
+"@DataModel List&lt;Customer&gt; customerList;\n"
+"\n"
+"@Factory(\"customerList\")\n"
+"public void initCustomerList() { \n"
+"    customerList = ...  ;\n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:557
+#, no-c-format
+msgid ""
+"In both cases, the factory method is called when we reference the "
+"<literal>customerList</literal> context variable and its value is null, and "
+"then has no further part to play in the lifecycle of the value. An even more "
+"powerful pattern is the <emphasis>manager component pattern</emphasis>. In "
+"this case, we have a Seam component that is bound to a context variable, "
+"that manages the value of the context variable, while remaining invisible to "
+"clients."
+msgstr ""
+"In beiden Fällen wird die Factory-Methode aufgerufen, wenn auf die "
+"<literal>customerList</literal>-Kontextvariable verwiesen wird und deren "
+"Wert Null ist. Diese spielt keine weitere Rolle mehr im Lebenszyklus des "
+"Werts. Ein noch leistungsfähigeres Muster ist das <emphasis>Manager-"
+"Komponenten-Muster</emphasis>. In diesem Fall besitzen wir eine Seam "
+"Komponent, die an eine Kontextvariable gebunden ist, die den Wert der "
+"Kontextvariable managt, während sie für Clients unsichtbar bleibt."
+
+#. Tag: para
+#: Concepts.xml:560
+#, no-c-format
+msgid ""
+"A manager component is any component with an <literal>@Unwrap</literal> "
+"method. This method returns the value that will be visable to clients, and "
+"is called <emphasis>every time</emphasis> a context variable is referenced."
+msgstr ""
+"Eine Manager-Komponente ist eine beliebige Komponente mit einer "
+"<literal>@Unwrap</literal>-Methode. Diese Methode gibt den Wert wieder, der "
+"für Clients sichtbar ist und wird <emphasis>jedes Mal aufgerufen</emphasis>, "
+"wenn auf eine Kontextvariable verwiesen wird."
+
+#. Tag: programlisting
+#: Concepts.xml:563
+#, no-c-format
+msgid ""
+"@Name(\"customerList\")\n"
+"@Scope(CONVERSATION)\n"
+"public class CustomerListManager\n"
+"{\n"
+"    ...\n"
+"    \n"
+"    @Unwrap\n"
+"    public List&lt;Customer&gt; getCustomerList() { \n"
+"        return ... ;\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"customerList\")\n"
+"@Scope(CONVERSATION)\n"
+"public class CustomerListManager\n"
+"{\n"
+"    ...\n"
+"    \n"
+"    @Unwrap\n"
+"    public List&lt;Customer&gt; getCustomerList() { \n"
+"        return ... ;\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:564
+#, no-c-format
+msgid ""
+"This pattern is especially useful if we have some heavyweight object that "
+"needs a cleanup operation when the context ends. In this case, the manager "
+"component may perform cleanup in the <literal>@Destroy</literal> method."
+msgstr "Dieses Muster ist besonders nützlich, wenn wir ein umfangreiches Objekt haben, das einen Bereinigungsvorgang benötigt, wenn der Kontext endet. In diesem Fall kann die Manager-Komponente die Bereinigung in der <literal>@Destroy</literal>-Methode durchführen."
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Configuration.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Configuration.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Configuration.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2069 @@
+# translation of Configuration.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Jasna Dimanoski <jdimanos at redhat.com>, 2007, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Configuration\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2008-03-22 18:42+1000\n"
+"Last-Translator: Jasna Dimanoski <jdimanos at redhat.com>\n"
+"Language-Team:  <de at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Configuration.xml:6
+#, no-c-format
+msgid "Configuring Seam and packaging Seam applications"
+msgstr "Konfiguration von Seam und Verpacken von Seam-Anwendungen"
+
+#. Tag: para
+#: Configuration.xml:7
+#, no-c-format
+msgid ""
+"Configuration is a very boring topic and an extremely tedious pastime. "
+"Unfortunately, several lines of XML are required to integrate Seam into your "
+"JSF implementation and servlet container. There&#39;s no need to be too put "
+"off by the following sections; you&#39;ll never need to type any of this "
+"stuff yourself, since you can just copy and paste from the example "
+"applications!"
+msgstr "Bei der Konfiguration handelt es sich um ein recht langweiliges und monotones Thema. Leider sind mehrere Zeilen von XML erforderlich, um Seam in Ihre JSF-Implementierung und Servlet-Container zu integrieren. Lassen Sie sich durch die folgenden Abschnitte nicht abschrecken - Sie werden nichts davon je selbst tippen müssen, da Sie einfach aus den Beispielanwendungen kopieren und einfügen können!"
+
+#. Tag: title
+#: Configuration.xml:10
+#, no-c-format
+msgid "Basic Seam configuration"
+msgstr "Grundlegende Seam-Konfiguration"
+
+#. Tag: para
+#: Configuration.xml:11
+#, no-c-format
+msgid ""
+"First, let&#39;s look at the basic configuration that is needed whenever we "
+"use Seam with JSF."
+msgstr "Schauen wir uns zuerst die grundlegende Konfiguration, die nötig ist, wenn wir Seam mit JSF verwenden."
+
+#. Tag: title
+#: Configuration.xml:14
+#, no-c-format
+msgid "Integrating Seam with JSF and your servlet container"
+msgstr "Integration von Seam mit JSF und Ihrem Servlet-Container"
+
+#. Tag: para
+#: Configuration.xml:15
+#, no-c-format
+msgid "Seam requires the following entry in your <literal>web.xml</literal> file:"
+msgstr "Seam erfordert folgenden Eintrag in Ihrer <literal>web.xml</literal>-Datei:"
+
+#. Tag: programlisting
+#: Configuration.xml:18
+#, no-c-format
+msgid ""
+"&lt;listener&gt;\n"
+"    &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/listener-"
+"class&gt;\n"
+"&lt;/listener&gt;"
+msgstr ""
+"&lt;listener&gt;\n"
+"    &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/listener-"
+"class&gt;\n"
+"&lt;/listener&gt;"
+
+#. Tag: para
+#: Configuration.xml:19
+#, no-c-format
+msgid ""
+"This listener is responsible for bootstrapping Seam, and for destroying "
+"session and application contexts."
+msgstr "Dieser Listener ist verantwortlich für das Bootstrapping von Seam sowie für das Löschen von Session- und Applikationskontext."
+
+#. Tag: para
+#: Configuration.xml:22
+#, no-c-format
+msgid ""
+"To integrate with the JSF request lifecycle, we also need a JSF "
+"<literal>PhaseListener</literal> registered in in the <literal>faces-config."
+"xml</literal> file:"
+msgstr "Für die Integration mit dem Lebenszyklus von JSF-Anfragen benötigen wir auch einen JSF-<literal>PhaseListener</literal>, der in der <literal>faces-config.xml</literal>-Datei registriert ist:"
+
+#. Tag: programlisting
+#: Configuration.xml:25
+#, no-c-format
+msgid ""
+"&lt;lifecycle&gt;\n"
+"    &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-"
+"listener&gt;\n"
+"&lt;/lifecycle&gt;"
+msgstr ""
+"&lt;lifecycle&gt;\n"
+"    &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-"
+"listener&gt;\n"
+"&lt;/lifecycle&gt;"
+
+#. Tag: para
+#: Configuration.xml:26
+#, no-c-format
+msgid ""
+"The actual listener class here varies depending upon how you want to manage "
+"transaction demarcation (more on this below)."
+msgstr "Die tatsächliche Listener-Klasse hier variiert je nachdem, wie Sie Ihre Transaktionsdemarkation managen möchten (mehr dazu weiter unten)."
+
+#. Tag: para
+#: Configuration.xml:29
+#, no-c-format
+msgid ""
+"If you are using Sun&#39;s JSF 1.2 reference implementation, you should also "
+"add this to <literal>faces-config.xml</literal>:"
+msgstr "Falls Sie Suns JSF 1.2 Referenzimplementierung verwenden, sollten Sie dies auch <literal>faces-config.xml</literal> hinzufügen:"
+
+#. Tag: programlisting
+#: Configuration.xml:32
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;el-resolver&gt;org.jboss.seam.jsf.SeamELResolver&lt;/el-"
+"resolver&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+"&lt;application&gt;\n"
+"    &lt;el-resolver&gt;org.jboss.seam.jsf.SeamELResolver&lt;/el-"
+"resolver&gt;\n"
+"&lt;/application&gt;"
+
+#. Tag: para
+#: Configuration.xml:33
+#, no-c-format
+msgid ""
+"(This line should not strictly speaking be necessary, but it works around a "
+"minor bug in the RI.)"
+msgstr "(Diese Zeile sollte streng genommen nicht nötig sein, umgeht aber einen kleineren Bug im RI)."
+
+#. Tag: para
+#: Configuration.xml:36
+#, no-c-format
+msgid ""
+"Some JSF implementations have a broken implementation of server-side state "
+"saving that interferes with Seam&#39;s conversation propagation. If you have "
+"problems with conversation propagation during form submissions, try "
+"switching to client-side state saving. You&#39;ll need this in <literal>web."
+"xml</literal>:"
+msgstr "Einige JSF-Implementationen besitzen eine nicht funktionsfähige Implementierung der Status-Speicherung auf Server-Seite, die mit Seam&#39;s Konversationsverbreitung. Falls Sie während Formulareinreichungen Probleme mit der Konversationsverbreitung haben, versuchen Sie zur Statusspeicherung auf Client-Seite zu wechseln. Sie werden dies in <literal>web.xml</literal> brauchen:"
+
+#. Tag: programlisting
+#: Configuration.xml:39
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;client&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;client&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+
+#. Tag: title
+#: Configuration.xml:40
+#, no-c-format
+msgid "Seam Resource Servlet"
+msgstr "Seam Ressourcen-Servlet"
+
+#. Tag: para
+#: Configuration.xml:41
+#, no-c-format
+msgid ""
+"The Seam Resource Servlet provides resources used by Seam Remoting, captchas "
+"(see the security chapter) and some JSF UI controls. Configuring the Seam "
+"Resource Servlet requires the following entry in <literal>web.xml</literal>:"
+msgstr ""
+"Das Seam Resource Servlet stellt von Seam Remoting, Captchas "
+"(siehe Kapitel zur Sicherheit) und einigen JSF UI-Kontrollen verwendete Ressourcen bereit. Die Konfiguration des Seam "
+"Resource Servlet erfordert den folgenden Eintrag in <literal>web.xml</literal>:"
+
+#. Tag: programlisting
+#: Configuration.xml:44
+#, no-c-format
+msgid ""
+"&lt;servlet&gt;\n"
+"  &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"  &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"    \n"
+"&lt;servlet-mapping&gt;\n"
+"  &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"  &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+msgstr ""
+"&lt;servlet&gt;\n"
+"  &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"  &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"    \n"
+"&lt;servlet-mapping&gt;\n"
+"  &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"  &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+
+#. Tag: title
+#: Configuration.xml:45
+#, no-c-format
+msgid "Seam servlet filters"
+msgstr "Seam Servlet-Filter"
+
+#. Tag: para
+#: Configuration.xml:46
+#, no-c-format
+msgid ""
+"Seam doesn&#39;t need any servlet filters for basic operation. However, "
+"there are several features which depend upon the use of filters. To make "
+"things easier for you guys, Seam lets you add and configure servlet filters "
+"just like you would configure other built-in Seam components. To take "
+"advantage of this feature, we must first install a master filter in "
+"<literal>web.xml</literal>:"
+msgstr ""
+"Für den Grundbetrieb benötigt keine Servlet-Filter. Es existieren jedoch einige Features, die von der Verwendung der Filter abhängen. Seam gestattet es Ihnen, Servlet-Filter genau so hinzuzufügen und zu konfigurieren wie andere eingebaute Seam-Komponenten auch. Um dieses Feature zu nutzen, muss zunächst ein Master-Filter in "
+"<literal>web.xml</literal> installiert werden:"
+
+#. Tag: programlisting
+#: Configuration.xml:49
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;/*&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;"
+msgstr ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;/*&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;"
+
+#. Tag: para
+#: Configuration.xml:50
+#, no-c-format
+msgid "Adding the master filter enables the following built-in filters."
+msgstr "Das Hinzufügen des Master-Filters aktiviert die folgenden eingebauten Filter."
+
+#. Tag: title
+#: Configuration.xml:53
+#, no-c-format
+msgid "Exception handling"
+msgstr "Exception Handling"
+
+#. Tag: para
+#: Configuration.xml:54
+#, no-c-format
+msgid ""
+"This filter provides the exception mapping functionality in <literal>pages."
+"xml</literal> (almost all applications will need this). It also takes care "
+"of rolling back uncommitted transactions when uncaught exceptions occur. "
+"(According to the Java EE specification, the web container should do this "
+"automatically, but we&#39;ve found that this behavior cannot be relied upon "
+"in all application servers. And it is certainly not required of plain "
+"servlet engines like Tomcat.)"
+msgstr "Dieser Filter liefert die Ausnahmen-Mapping-Funktionalität in <literal>pages.xml</literal> (nahezu alle Anwendungen benötigen dies). Er besorgt auch den Rollback nicht festgeschriebener Transaktionen wenn nicht abgefangene Fehler vorkommen. (Gemäß der Java EE-Spezifikation sollte der Web-Container dies automatisch tun, aber wir haben festgestellt, dass nicht bei allen Applikations-Servern von diesem Verhalten ausgegangen werden kann. Von einfachen Servlet-Engines wie Tomcat wird dies allemal nicht erwartet)."
+
+#. Tag: para
+#: Configuration.xml:57
+#, no-c-format
+msgid ""
+"By default, the exception handling filter will process all requests, however "
+"this behavior may be adjusted by adding a <literal>&lt;web:exception-"
+"filter&gt;</literal> entry to <literal>components.xml</literal>, as shown in "
+"this example:"
+msgstr "In der Standardeinstellung bearbeitet der Exception-Handling-Filter alle Anfragen, jedoch kann dieses Verhalten angepasst werden, indem <literal>components.xml</literal> ein <literal>&lt;web:exception-filter&gt;</literal>-Eintrag hinzugefügt wird, wie in diesem Beispiel dargestellt:"
+
+#. Tag: programlisting
+#: Configuration.xml:60
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:web=\"http://jboss.com/products/seam/web\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                                                      http://jboss.com/"
+"products/seam/core-1.2.xsd\n"
+"                 http://jboss.com/products/seam/components \n"
+"                                                      http://jboss.com/"
+"products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/web \n"
+"                                                      http://jboss.com/"
+"products/seam/web-1.2.xsd\"&gt;\n"
+"\n"
+"    &lt;web:exception-filter url-pattern=\"*.seam\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:web=\"http://jboss.com/products/seam/web\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                                                      http://jboss.com/"
+"products/seam/core-1.2.xsd\n"
+"                 http://jboss.com/products/seam/components \n"
+"                                                      http://jboss.com/"
+"products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/web \n"
+"                                                      http://jboss.com/"
+"products/seam/web-1.2.xsd\"&gt;\n"
+"\n"
+"    &lt;web:exception-filter url-pattern=\"*.seam\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Configuration.xml:63 Configuration.xml:78 Configuration.xml:100
+#: Configuration.xml:125
+#, no-c-format
+msgid ""
+"<literal>url-pattern</literal> &mdash; Used to specify which requests are "
+"filtered, the default is all requests."
+msgstr "<literal>url-pattern</literal> &mdash; Wird dazu verwendet festzulegen, welche Anfragen gefiltert werden, die Standardeinstellung gilt für alle Anfragen."
+
+#. Tag: title
+#: Configuration.xml:68
+#, no-c-format
+msgid "Conversation propagation with redirects"
+msgstr "Konversationsverbreitung mit Redirects (\"Propagation\")"
+
+#. Tag: para
+#: Configuration.xml:69
+#, no-c-format
+msgid ""
+"This filter allows Seam to propagate the conversation context across browser "
+"redirects. It intercepts any browser redirects and adds a request parameter "
+"that specifies the Seam conversation identifier."
+msgstr "Dieser Filter gestattet es Seam den Konversationskontext über Browser-Redirects hinweg zu verbreiten. Er fängt alle Browser-Redirects ab und fügt einen Anfragenparameter hinzu, der den Seam Konversationsbezeichner (\"Conversation Identifier\") festlegt."
+
+#. Tag: para
+#: Configuration.xml:72
+#, no-c-format
+msgid ""
+"The redirect filter will process all requests by default, but this behavior "
+"can also be adjusted in <literal>components.xml</literal>:"
+msgstr "Der Redirect-Filter bearbeitet standardmäßig alle Anfragen, aber dieses Verhalten kann in <literal>components.xml</literal> angepasst werden:"
+
+#. Tag: programlisting
+#: Configuration.xml:75
+#, no-c-format
+msgid "&lt;web:redirect-filter url-pattern=\"*.seam\"/&gt;"
+msgstr "&lt;web:redirect-filter url-pattern=\"*.seam\"/&gt;"
+
+#. Tag: title
+#: Configuration.xml:83
+#, no-c-format
+msgid "Multipart form submissions"
+msgstr "Multipart-Formulareinreichungen"
+
+#. Tag: para
+#: Configuration.xml:84
+#, no-c-format
+msgid ""
+"This feature is necessary when using the Seam file upload JSF control. It "
+"detects multipart form requests and processes them according to the "
+"multipart/form-data specification (RFC-2388). To override the default "
+"settings, add the following entry to <literal>components.xml</literal>:"
+msgstr "Dieses Feature ist notwendig, wenn die Datei-Upload JSF-Kontrolle von Seam verwendet wird. Es findet Multipart-Formularanfragen und verarbeitet diese entsprechend der Multipart/Formular-Datenspezifikation (RFC-2388). Um die Standardeinstellungen außer Kraft zu setzen, fügen Sie <literal>components.xml</literal> den folgenden Eintrag hinzu:"
+
+#. Tag: programlisting
+#: Configuration.xml:87
+#, no-c-format
+msgid ""
+"&lt;web:multipart-filter create-temp-files=\"true\" \n"
+"        max-request-size=\"1000000\" \n"
+"        url-pattern=\"*.seam\"/&gt;"
+msgstr ""
+"&lt;web:multipart-filter create-temp-files=\"true\" \n"
+"        max-request-size=\"1000000\" \n"
+"        url-pattern=\"*.seam\"/&gt;"
+
+#. Tag: para
+#: Configuration.xml:90
+#, no-c-format
+msgid ""
+"<literal>create-temp-files</literal> &mdash; If set to <literal>true</"
+"literal>, uploaded files are written to a temporary file (instead of held in "
+"memory). This may be an important consideration if large file uploads are "
+"expected. The default setting is <literal>false</literal>."
+msgstr ""
+"<literal>create-temp-files</literal> &mdash; Wenn auf <literal>true</"
+"literal> eingestellt, so werden hochgeladene Dateien in eine temporäre Datei geschrieben (statt im Speicher aufbewahrt zu werden). Dies könnte eine wichtige Überlegung sein, wenn Sie glauben, dass große Mengen an Dateien hochgeladen werden müssen. Die Standardeinstellung lautet <literal>false</literal>."
+
+#. Tag: para
+#: Configuration.xml:95
+#, no-c-format
+msgid ""
+"<literal>max-request-size</literal> &mdash; If the size of a file upload "
+"request (determined by reading the <literal>Content-Length</literal> header "
+"in the request) exceeds this value, the request will be aborted. The default "
+"setting is 0 (no size limit)."
+msgstr "<literal>max-request-size</literal> &mdash; Wenn die Größe einer Datei-Upload-Anfrage (bestimmt sich durch Lesen der <literal>Content-Length</literal>-Fußzeile in der Anfrage) diesen Wert überschreitet, so wird die Anfrage abgebrochen. Die Standardeinstellung ist 0 (keine Größen einschränkung)."
+
+#. Tag: title
+#: Configuration.xml:105
+#, no-c-format
+msgid "Character encoding"
+msgstr "Zeichenverschlüsselung"
+
+#. Tag: para
+#: Configuration.xml:106
+#, no-c-format
+msgid "Sets the character encoding of submitted form data."
+msgstr "Setzt die Zeichenverschlüsselung eingereichter Formulardaten."
+
+#. Tag: para
+#: Configuration.xml:109 Configuration.xml:137
+#, no-c-format
+msgid ""
+"This filter is not installed by default and requires an entry in "
+"<literal>components.xml</literal> to enable it:"
+msgstr ""
+"Dieser Filter ist nicht standardmäßig installiert und erfordert einen Eintrag in "
+"<literal>components.xml</literal> zur Aktivierung:"
+
+#. Tag: programlisting
+#: Configuration.xml:112
+#, no-c-format
+msgid ""
+"&lt;web:character-encoding-filter encoding=\"UTF-16\" \n"
+"        override-client=\"true\" \n"
+"        url-pattern=\"*.seam\"/&gt;"
+msgstr ""
+"&lt;web:character-encoding-filter encoding=\"UTF-16\" \n"
+"        override-client=\"true\" \n"
+"        url-pattern=\"*.seam\"/&gt;"
+
+#. Tag: para
+#: Configuration.xml:115
+#, no-c-format
+msgid "<literal>encoding</literal> &mdash; The encoding to use."
+msgstr "<literal>encoding</literal> &mdash; Die zu verwendende Verschlüsselung."
+
+#. Tag: para
+#: Configuration.xml:120
+#, no-c-format
+msgid ""
+"<literal>override-client</literal> &mdash; If this is set to <literal>true</"
+"literal>, the request encoding will be set to whatever is specified by "
+"<literal>encoding</literal> no matter whether the request already specifies "
+"an encoding or not. If set to <literal>false</literal>, the request encoding "
+"will only be set if the request doesn&#39;t already specify an encoding. The "
+"default setting is <literal>false</literal>."
+msgstr ""
+"<literal>override-client</literal> &mdash; Ist dies auf <literal>true</"
+"literal> eingestellt, so wird die Anfragenverschlüsselung auf das eingestellt, was in <literal>encoding</literal> festgelegt ist, unabhängig davon, ob die Anfrage bereits eine Verschlüsselung festlegt oder nicht. Falls auf  <literal>false</literal> eingestellt, so wird die Anfragenverschlüsselung nur eingestellt, wenn die Anfrage noch keine Verschlüsselung festlegt. Die Standardeinstellung lautet <literal>false</literal>."
+
+#. Tag: title
+#: Configuration.xml:130
+#, no-c-format
+msgid "Context management for custom servlets"
+msgstr "Kontext-Management für angepasste Servlets"
+
+#. Tag: para
+#: Configuration.xml:131
+#, no-c-format
+msgid ""
+"Requests sent direct to some servlet other than the JSF servlet are not "
+"processed through the JSF lifecycle, so Seam provides a servlet filter that "
+"can be applied to any other servlet that needs access to Seam components."
+msgstr "Direkt an ein Servlet (das nicht JSF-Servlet ist) gesendete Anfragen werden nicht durch den JSF-Lebenszyklus verarbeitet, daher stellt Seam einen Servlet-Filter bei jedem anderen Servlet angewendet werden kann, der Zugriff auf Seam-Komponenten braucht."
+
+#. Tag: para
+#: Configuration.xml:134
+#, no-c-format
+msgid ""
+"This filter allows custom servlets to interact with the Seam contexts. It "
+"sets up the Seam contexts at the beginning of each request, and tears them "
+"down at the end of the request. You should make sure that this filter is "
+"<emphasis>never</emphasis> applied to the JSF <literal>FacesServlet</"
+"literal>. Seam uses the phase listener for context management in a JSF "
+"request."
+msgstr ""
+"Dieser Filter erlaubt es angepassten Servlets mit Seam-Kontexte zu interagieren. Es stellt die Seam-Kontexte zu Beginn jeder Anfrage auf, und löscht diese nach der jeder Anfrage. Sie sollten sicherstellen, dass dieser Filter <emphasis>niemals</emphasis> beim JSF-<literal>FacesServlet</"
+"literal> angewendet wird. Seam verwendet diesen Phasen-Listener für Kontext-Management in einer JSF-Anfrage."
+
+#. Tag: programlisting
+#: Configuration.xml:140
+#, no-c-format
+msgid "&lt;web:context-filter url-pattern=\"/media/*\"/&gt;"
+msgstr "&lt;web:context-filter url-pattern=\"/media/*\"/&gt;"
+
+#. Tag: para
+#: Configuration.xml:143
+#, no-c-format
+msgid ""
+"<literal>url-pattern</literal> &mdash; Used to specify which requests are "
+"filtered, the default is all requests. If the url-pattern is specified for "
+"the context filter, then the filter will be enabled (unless explicitly "
+"disabled)."
+msgstr "<literal>url-pattern</literal> &mdash; Verwendet, um festzulegen, welche Anfrage gefiltert werden; in der Standardeinstellungen gilt dies für alle Anfragen. Ist das url-Muster für den Kontext-Filter festgelegt, so ist der Filter aktiviert (außer explizit deaktiviert)."
+
+#. Tag: para
+#: Configuration.xml:148
+#, no-c-format
+msgid ""
+"The context filter expects to find the conversation id of any conversation "
+"context in a request parameter named <literal>conversationId</literal>. You "
+"are responsible for ensuring that it gets sent in the request."
+msgstr "Der Kontextfilter erwartet die Konversations-ID eines Konversationsontexts in einem Anfragenparameter namens <literal>conversationId</literal> vorzufinden. Sie sind dafür verantwortlich sicherzustellen, dass sie in der Anfrage gesendet wird."
+
+#. Tag: para
+#: Configuration.xml:151
+#, no-c-format
+msgid ""
+"You are also responsible for ensuring propagation of any new conversation id "
+"back to the client. Seam exposes the conversation id as a property of the "
+"built in component <literal>conversation</literal>."
+msgstr "Sie sind außerdem verantwortlich für die Verbreitung (\"Propagation\") einer neuen Konversations-ID zurück an den Client. Seam legt die Konversations-ID als eine Property der eingebauten Komponente <literal>conversation</literal> offen."
+
+#. Tag: title
+#: Configuration.xml:154
+#, no-c-format
+msgid "Integrating Seam with your EJB container"
+msgstr "Integration von Seam mit Ihrem EJB-Container"
+
+#. Tag: para
+#: Configuration.xml:155
+#, no-c-format
+msgid ""
+"We need to apply the <literal>SeamInterceptor</literal> to our Seam "
+"components. The simplest way to do this is to add the following interceptor "
+"binding to the <literal>&lt;assembly-descriptor&gt;</literal> in "
+"<literal>ejb-jar.xml</literal>:"
+msgstr ""
+"Wir müssen den <literal>SeamInterceptor</literal> an unseren Seam-Komponenten anwenden. Die einfachste Weise dies zu tun ist es, das folgende Interzeptor-Binding dem <literal>&lt;assembly-descriptor&gt;</literal> in "
+"<literal>ejb-jar.xml</literal> hinzuzufügen:"
+
+#. Tag: programlisting
+#: Configuration.xml:158
+#, no-c-format
+msgid ""
+"&lt;interceptor-binding&gt;\n"
+"    &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"    &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"&lt;/interceptor-binding&gt;"
+msgstr ""
+"&lt;interceptor-binding&gt;\n"
+"    &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"    &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"&lt;/interceptor-binding&gt;"
+
+#. Tag: para
+#: Configuration.xml:159
+#, no-c-format
+msgid ""
+"Seam needs to know where to go to find session beans in JNDI. One way to do "
+"this is specify the <literal>@JndiName</literal> annotation on every session "
+"bean Seam component. However, this is quite tedious. A better approach is to "
+"specify a pattern that Seam can use to calculate the JNDI name from the EJB "
+"name. Unfortunately, there is no standard mapping to global JNDI defined in "
+"the EJB3 specification, so this mapping is vendor-specific. We usually "
+"specify this option in <literal>components.xml</literal>."
+msgstr "Seam muss wissen, wo es die Session-Beans in JNDI findet. Eine Art dies zu tun ist es, die <literal>@JndiName</literal>-Annotation an jeder Session-Bean Seam-Komponente zu spezifizieren. Dies ist allerdings ziemlich mühselig. Eine bessere Herangehensweise ist es, ein Muster festzulegen, das Seam verwenden kann, um den JNDI-Namen aus dem EJB-Namen zu errechnen. Leider existiert kein Standard-Mapping zur allgemeingültigen in der in der EJB3-Spezifikation definierten JNDI, so dass dieses Mapping anbieterspezifisch ist. Wir legen diese Option normalerweise in <literal>components.xml</literal> fest."
+
+#. Tag: para
+#: Configuration.xml:162
+#, no-c-format
+msgid "For JBoss AS, the following pattern is correct:"
+msgstr "Für JBoss AS ist folgendes Muster korrekt:"
+
+#. Tag: programlisting
+#: Configuration.xml:165
+#, no-c-format
+msgid "&lt;core:init jndi-name=\"myEarName/#{ejbName}/local\" /&gt;"
+msgstr "&lt;core:init jndi-name=\"myEarName/#{ejbName}/local\" /&gt;"
+
+#. Tag: para
+#: Configuration.xml:166
+#, no-c-format
+msgid ""
+"Where <literal>myEarName</literal> is the name of the EAR in which the bean "
+"is deployed."
+msgstr "Wobei <literal>myEarName</literal> der Name des EAR ist, in dem das Bean deployt wird."
+
+#. Tag: para
+#: Configuration.xml:169
+#, no-c-format
+msgid ""
+"Outside the context of an EAR (when using the JBoss Embeddable EJB3 "
+"container), the following pattern is the one to use:"
+msgstr "Außerhalb des Kontexts eines EAR (wenn der JBoss Embeddable EJB3-Container verwendet wird), sollte folgendes Muster verwendet werden:"
+
+#. Tag: programlisting
+#: Configuration.xml:172
+#, no-c-format
+msgid "&lt;core:init jndi-name=\"#{ejbName}/local\" /&gt;"
+msgstr "&lt;core:init jndi-name=\"#{ejbName}/local\" /&gt;"
+
+#. Tag: para
+#: Configuration.xml:173
+#, no-c-format
+msgid ""
+"You&#39;ll have to experiment to find the right setting for other "
+"application servers. Note that some servers (such as GlassFish) require you "
+"to specify JNDI names for all EJB components explicitly (and tediously). In "
+"this case, you can pick your own pattern ;-)"
+msgstr ""
+"Sie müssen herumexperimentieren, um die richtige Einstellung für andere Applikationsserver zu finden. Beachten Sie, dass einige Server (wie etwa GlassFish) verlangen, dass Sie JNDI-Namen für alle EJB-Komponenten explizit (und auf langwierige Weise) festlegen. In "
+"diesem Fall können Sie sich Ihr eigenes Muster aussuchen ;-)"
+
+#. Tag: title
+#: Configuration.xml:176
+#, no-c-format
+msgid "Using facelets"
+msgstr "Die Verwendung von Facelets"
+
+#. Tag: para
+#: Configuration.xml:177
+#, no-c-format
+msgid ""
+"If you want follow our advice and use facelets instead of JSP, add the "
+"following lines to <literal>faces-config.xml</literal>:"
+msgstr "Falls Sie unseren Rat und Facelets statt JSP verwenden möchten, so fügen Sie <literal>faces-config.xml</literal> folgende Zeilen hinzu:"
+
+#. Tag: programlisting
+#: Configuration.xml:180
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;view-handler&gt;com.sun.facelets.FaceletViewHandler&lt;/view-"
+"handler&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+"&lt;application&gt;\n"
+"    &lt;view-handler&gt;com.sun.facelets.FaceletViewHandler&lt;/view-"
+"handler&gt;\n"
+"&lt;/application&gt;"
+
+#. Tag: para
+#: Configuration.xml:181
+#, no-c-format
+msgid "And the following lines to <literal>web.xml</literal>:"
+msgstr "Uns folgende Zeilen zu <literal>web.xml</literal>:"
+
+#. Tag: programlisting
+#: Configuration.xml:184
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;javax.faces.DEFAULT_SUFFIX&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;.xhtml&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;javax.faces.DEFAULT_SUFFIX&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;.xhtml&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+
+#. Tag: title
+#: Configuration.xml:185
+#, no-c-format
+msgid "Don&#39;t forget!"
+msgstr "Vergessen Sie nicht!"
+
+#. Tag: para
+#: Configuration.xml:186
+#, no-c-format
+msgid ""
+"There is one final item you need to know about. You must place a "
+"<literal>seam.properties</literal>, <literal>META-INF/seam.properties</"
+"literal> or <literal>META-INF/components.xml</literal> file in any archive "
+"in which your Seam components are deployed (even an empty properties file "
+"will do). At startup, Seam will scan any archives with <literal>seam."
+"properties</literal> files for seam components."
+msgstr ""
+"Eine letzte Sache müssen Sie noch wissen. Sie müssen eine "
+"<literal>seam.properties</literal>, <literal>META-INF/seam.properties</"
+"literal> oder <literal>META-INF/components.xml</literal>-Datei in jedem Archiv platzieren, in das Ihre Seam-Komponenten deployt werden (selbst eine leere Properties-Datei tut es). Beim Startup, scannt Seam jedes Archiv mit <literal>seam.properties</literal>-Dateien nach Seam-Komponenten."
+
+#. Tag: para
+#: Configuration.xml:189
+#, no-c-format
+msgid ""
+"In a web archive (WAR) file, you must place a <literal>seam.properties</"
+"literal> file in the <literal>WEB-INF/classes</literal> directory if you "
+"have any Seam components included here."
+msgstr "In einer Webarchiv-Datei (WAR) müssen Sie eine <literal>seam.properties</literal>-Datei im <literal>WEB-INF/classes</literal>-Verzeichnis platzieren, wenn Sie Seam-Komponenten hier mit eingeschlossen haben."
+
+#. Tag: para
+#: Configuration.xml:192
+#, no-c-format
+msgid ""
+"That&#39;s why all the Seam examples have an empty <literal>seam.properties</"
+"literal> file. You can&#39;t just delete this file and expect everything to "
+"still work!"
+msgstr "Dies ist der Grund, weshalb alle Seam Beispiele eine leere <literal>seam.properties</literal>-Datei besitzen file. Sie können diese Datei nicht einfach löschen und erwarten, dass alles nach wie vor funktioniert!"
+
+#. Tag: para
+#: Configuration.xml:195
+#, no-c-format
+msgid ""
+"You might think this is silly and what kind of idiot framework designers "
+"would make an empty file affect the behavior of their software?? Well, this "
+"is a workaround for a limitation of the JVM&mdash;if we didn&#39;t use this "
+"mechanism, our next best option would be to force you to list every "
+"component explicitly in <literal>components.xml</literal>, just like some "
+"other competing frameworks do! I think you&#39;ll like our way better."
+msgstr "Sie fragen sich wahrscheinlich, warum wir ein Framework entworfen haben, bei dem eine leere Datei Einfluss auf das Verhalten der Software hat. Nun, damit haben wir eine Einschränkung der JVM umgangen&mdash;würden wir diesen Mechanismus nicht nutzen, so wäre die nächstbeste Option, dass Sie jede Komponente explizit in <literal>components.xml</literal> auflisten müssten, so wie es bei einigen Frameworks von Wettbewerbern der Fall ist. Wir halten unseres für die bessere Variante."
+
+#. Tag: title
+#: Configuration.xml:198
+#, no-c-format
+msgid "Configuring Seam in Java EE 5"
+msgstr "Konfiguration von Seam in Java EE 5"
+
+#. Tag: para
+#: Configuration.xml:207
+#, no-c-format
+msgid ""
+"If you&#39;re running in a Java EE 5 environment, this is all the "
+"configuration required to start using Seam!"
+msgstr "Wenn der Betrieb in einer Java EE 5 Umgebung erfolgt, so ist dies alles, was Sie an Konfiguration benötigen, um mit der Verwendung von Seam zu beginnen!"
+
+#. Tag: title
+#: Configuration.xml:210 Configuration.xml:276 Configuration.xml:321
+#: Configuration.xml:360 Configuration.xml:377
+#, no-c-format
+msgid "Packaging"
+msgstr "Verpackung"
+
+#. Tag: para
+#: Configuration.xml:211
+#, no-c-format
+msgid ""
+"Once you&#39;ve packaged all this stuff together into an EAR, the archive "
+"structure will look something like this:"
+msgstr "Wenn Sie all dies in ein EAR gepackt haben, so sieht die Archivstruktur in etwa so aus:"
+
+#. Tag: programlisting
+#: Configuration.xml:214
+#, no-c-format
+msgid ""
+"my-application.ear/\n"
+"    jboss-seam.jar\n"
+"    el-api.jar\n"
+"    el-ri.jar\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"        application.xml\n"
+"    my-application.war/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"        WEB-INF/\n"
+"            web.xml\n"
+"            components.xml\n"
+"            faces-config.xml\n"
+"            lib/\n"
+"                jsf-facelets.jar\n"
+"                jboss-seam-ui.jar\n"
+"        login.jsp\n"
+"        register.jsp\n"
+"        ...\n"
+"    my-application.jar/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"            persistence.xml\n"
+"        seam.properties\n"
+"        org/\n"
+"            jboss/\n"
+"                myapplication/\n"
+"                    User.class\n"
+"                    Login.class\n"
+"                    LoginBean.class\n"
+"                    Register.class\n"
+"                    RegisterBean.class\n"
+"                    ..."
+msgstr ""
+"my-application.ear/\n"
+"    jboss-seam.jar\n"
+"    el-api.jar\n"
+"    el-ri.jar\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"        application.xml\n"
+"    my-application.war/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"        WEB-INF/\n"
+"            web.xml\n"
+"            components.xml\n"
+"            faces-config.xml\n"
+"            lib/\n"
+"                jsf-facelets.jar\n"
+"                jboss-seam-ui.jar\n"
+"        login.jsp\n"
+"        register.jsp\n"
+"        ...\n"
+"    my-application.jar/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"            persistence.xml\n"
+"        seam.properties\n"
+"        org/\n"
+"            jboss/\n"
+"                myapplication/\n"
+"                    User.class\n"
+"                    Login.class\n"
+"                    LoginBean.class\n"
+"                    Register.class\n"
+"                    RegisterBean.class\n"
+"                    ..."
+
+#. Tag: para
+#: Configuration.xml:215
+#, no-c-format
+msgid ""
+"You must include <literal>jboss-seam.jar</literal>, <literal>el-api.jar</"
+"literal> and <literal>el-ri.jar</literal> in the EAR classpath. Make sure "
+"you reference all of these jars from <literal>application.xml</literal>."
+msgstr ""
+"Sie müssen <literal>jboss-seam.jar</literal>, <literal>el-api.jar</"
+"literal> and <literal>el-ri.jar</literal> im EAR-Klassenpfad mit einschließen. Vergewissern Sie sich, dass Sie auf alle diese Jars von <literal>application.xml</literal> verweisen."
+
+#. Tag: para
+#: Configuration.xml:218
+#, no-c-format
+msgid ""
+"If you want to use jBPM or Drools, you must include the needed jars in the "
+"EAR classpath. Make sure you reference all of the jars from "
+"<literal>application.xml</literal>."
+msgstr "Falls Sie jBPM oder Drools verwenden wollen, so müssen Sie die benötigten Jars in den EAR-Klassenpfad mit einschließen. Vergewissern Sie sich, dass Sie auf alle diese Jars von <literal>application.xml</literal> verweisen."
+
+#. Tag: para
+#: Configuration.xml:221
+#, no-c-format
+msgid ""
+"If you want to use facelets (our recommendation), you must include "
+"<literal>jsf-facelets.jar</literal> in the <literal>WEB-INF/lib</literal> "
+"directory of the WAR."
+msgstr ""
+"Falls Sie Facelets (unsere Empfehlung) verwenden wollen, müssen Sie "
+"<literal>jsf-facelets.jar</literal> im <literal>WEB-INF/lib</literal>-Verzeichnis des WAR mit einschließen."
+
+#. Tag: para
+#: Configuration.xml:224
+#, no-c-format
+msgid ""
+"If you want to use the Seam tag library (most Seam applications do), you "
+"must include <literal>jboss-seam-ui.jar</literal> in the <literal>WEB-INF/"
+"lib</literal> directory of the WAR. If you want to use the PDF or email tag "
+"libraries, you need to put <literal>jboss-seam-pdf.jar</literal> or "
+"<literal>jboss-seam-mail.jar</literal> in <literal>WEB-INF/lib</literal>."
+msgstr ""
+"Falls Sie die Seam Tag-Bibliothek benutzen möchten (die meisten Seam-Anwendungen tun dies), so müssen Sie <literal>jboss-seam-ui.jar</literal> im <literal>WEB-INF/"
+"lib</literal>-Verzeichnis des WAR mit einschließen. Falls Sie die PDF- oder E-Mail Tag-Bibliotheken verwenden möchten, so müssen Sie <literal>jboss-seam-pdf.jar</literal> oder "
+"<literal>jboss-seam-mail.jar</literal> in <literal>WEB-INF/lib</literal> platzieren."
+
+#. Tag: para
+#: Configuration.xml:227
+#, no-c-format
+msgid ""
+"If you want to use the Seam debug page (only works for applications using "
+"facelets), you must include <literal>jboss-seam-debug.jar</literal> in the "
+"<literal>WEB-INF/lib</literal> directory of the WAR."
+msgstr ""
+"Wenn Sie die Seam Debug-Seite benutzen möchten (funktioniert nur für Anwendungen, die Facelets verwenden), so müssen Sie <literal>jboss-seam-debug.jar</literal> im"
+"<literal>WEB-INF/lib</literal>-Verzeichnis des WAR mit einschließen."
+
+#. Tag: para
+#: Configuration.xml:230
+#, no-c-format
+msgid ""
+"Seam ships with several example applications that are deployable in any Java "
+"EE container that supports EJB 3.0."
+msgstr "Seam wird mit mehreren Beispielanwendungen geliefert, die in jedem EJB 3.0 unterstützenden Java EE Container deploybar sind."
+
+#. Tag: para
+#: Configuration.xml:233
+#, no-c-format
+msgid ""
+"I really wish that was all there was to say on the topic of configuration "
+"but unfortunately we&#39;re only about a third of the way there. If you&#39;"
+"re too overwhelmed by all this tedious configuration stuff, feel free to "
+"skip over the rest of this section and come back to it later."
+msgstr "Es wäre schön, wenn wir es was Konfiguration angeht, dabei belassen könnten, aber leider haben wir erst etwa ein Drittel des Themas behandelt. Falls Ihnen die detaillierten Informationen zur Konfiguration gerade etwas zuviel werden, können Sie den Rest des Abschnitts überspringen und später darauf zurückkommen."
+
+#. Tag: title
+#: Configuration.xml:237
+#, no-c-format
+msgid "Configuring Seam in Java SE, with the JBoss Embeddable EJB3 container"
+msgstr "Konfiguration von Seam in Java SE mit dem JBoss Embeddable EJB3-Container"
+
+#. Tag: para
+#: Configuration.xml:238
+#, no-c-format
+msgid ""
+"The JBoss Embeddable EJB3 container lets you run EJB3 components outside the "
+"context of the Java EE 5 application server. This is especially, but not "
+"only, useful for testing."
+msgstr "Der JBoss Embeddable EJB3-Container gestattet es, EJB3-Komponenten außerhalb des Kontexts des Java EE 5 Applikationsservers laufen zu lassen. Dies ist insbesonder (aber nicht ausschließlich) nützlich beim Testen."
+
+#. Tag: para
+#: Configuration.xml:241
+#, no-c-format
+msgid ""
+"The Seam booking example application includes a TestNG integration test "
+"suite that runs on the Embeddable EJB3 container."
+msgstr "Die SeamBuchungsbeispielanwendung beinhaltet auch eine TestNG Integrationstest-Suite, die im Embeddable EJB3-Container läuft."
+
+#. Tag: para
+#: Configuration.xml:252
+#, no-c-format
+msgid "The booking example application may even be deployed to Tomcat."
+msgstr "Die Buchungsbeispiel-Anwendung kann sogar nach Tomcat deployt werden."
+
+#. Tag: title
+#: Configuration.xml:263
+#, no-c-format
+msgid "Installing the Embeddable EJB3 container"
+msgstr "Installation des Embeddable EJB3-Containers"
+
+#. Tag: para
+#: Configuration.xml:264
+#, no-c-format
+msgid ""
+"Seam ships with a build of the Embeddable EJB3 container in the "
+"<literal>embedded-ejb</literal> directory. To use the Embeddable EJB3 "
+"container with Seam, add the <literal>embedded-ejb/conf</literal> directory, "
+"and all jars in the <literal>lib</literal> and <literal>embedded-ejb/lib</"
+"literal> directories to your classpath. Then, add the following line to "
+"<literal>components.xml</literal>:"
+msgstr ""
+"Seam wird mit einem Build des Embeddable EJB3-Container im "
+"<literal>embedded-ejb</literal>-Verzeichnis geliefert. Um den Embeddable EJB3-Container mit Seam zu benutzen, fügen Sie Ihrem Klassenpfad das <literal>embedded-ejb/conf</literal>-Verzeichnis und alle "
+"Jars in den <literal>lib</literal> and <literal>embedded-ejb/lib</"
+"literal>-Verzeichnissen hinzu. Fügen Sie anschließend "
+"<literal>components.xml</literal> folgende Zeile hinzu:"
+
+#. Tag: programlisting
+#: Configuration.xml:267
+#, no-c-format
+msgid "&lt;core:ejb /&gt;"
+msgstr "&lt;core:ejb /&gt;"
+
+#. Tag: para
+#: Configuration.xml:268
+#, no-c-format
+msgid ""
+"This setting installs the built-in component named <literal>org.jboss.seam."
+"core.ejb</literal>. This component is responsible for bootstrapping the EJB "
+"container when Seam is started, and shutting it down when the web "
+"application is undeployed."
+msgstr "Diese Einstellung installiert die eingebaute Komponente mit Namen <literal>org.jboss.seam.core.ejb</literal>. Diese Komponente ist verantwortlich für das Bootstrapping des EJB-Container wenn Seam gestartet wird und das Herunterfahren, wenn die Webanwendung \"undeployt\" wird."
+
+#. Tag: title
+#: Configuration.xml:271
+#, no-c-format
+msgid "Configuring a datasource with the Embeddable EJB3 container"
+msgstr "Konfiguration einer Datenquelle mit dem Embeddable EJB3-Container"
+
+#. Tag: para
+#: Configuration.xml:272
+#, no-c-format
+msgid ""
+"You should refer to the Embeddable EJB3 container documentation for more "
+"information about configuring the container. You&#39;ll probably at least "
+"need to set up your own datasource. Embeddable EJB3 is implemented using the "
+"JBoss Microcontainer, so it&#39;s very easy to add new services to the "
+"minimal set of services provided by default. For example, I can add a new "
+"datasource by putting this <literal>jboss-beans.xml</literal> file in my "
+"classpath:"
+msgstr "Der Dokumentation zu Embeddable EJB3-Container können Sie weitere Informationen zur Konfiguration des Containers entnehmen. Sie werden wahrscheinlich zumindest Ihre eigene Datenquelle aufsetzen müssen. Embeddable EJB3 wird mittels JBoss Microcontainer implementiert, weshalb es sehr einfach ist, dem standardmäßig gelieferten Minimalsatz neue Dienste hinzuzufügen. Ich kann zum Beispiel eine neue Datenquelle hinzufügen, indem ich meinem Klassenpfad diese <literal>jboss-beans.xml</literal>-Datei hinzufüge:"
+
+#. Tag: programlisting
+#: Configuration.xml:275
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"\n"
+"&lt;deployment xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"urn:jboss:bean-deployer bean-deployer_1_0."
+"xsd\"\n"
+"            xmlns=\"urn:jboss:bean-deployer\"&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasourceBootstrap\"\n"
+"        class=\"org.jboss.resource.adapter.jdbc.local.LocalTxDataSource"
+"\"&gt;\n"
+"      &lt;property name=\"driverClass\"&gt;org.hsqldb.jdbcDriver&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"connectionURL\"&gt;jdbc:hsqldb:.&lt;/property&gt;\n"
+"      &lt;property name=\"userName\"&gt;sa&lt;/property&gt;\n"
+"      &lt;property name=\"jndiName\"&gt;java:/bookingDatasource&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"minSize\"&gt;0&lt;/property&gt;\n"
+"      &lt;property name=\"maxSize\"&gt;10&lt;/property&gt;\n"
+"      &lt;property name=\"blockingTimeout\"&gt;1000&lt;/property&gt;\n"
+"      &lt;property name=\"idleTimeout\"&gt;100000&lt;/property&gt;\n"
+"      &lt;property name=\"transactionManager\"&gt;\n"
+"        &lt;inject bean=\"TransactionManager\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"      &lt;property name=\"cachedConnectionManager\"&gt;\n"
+"        &lt;inject bean=\"CachedConnectionManager\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"      &lt;property name=\"initialContextProperties\"&gt;\n"
+"        &lt;inject bean=\"InitialContextProperties\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasource\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getDatasource\"&gt;\n"
+"         &lt;factory bean=\"bookingDatasourceBootstrap\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"&lt;/deployment&gt;"
+msgstr ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"\n"
+"&lt;deployment xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"urn:jboss:bean-deployer bean-deployer_1_0."
+"xsd\"\n"
+"            xmlns=\"urn:jboss:bean-deployer\"&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasourceBootstrap\"\n"
+"        class=\"org.jboss.resource.adapter.jdbc.local.LocalTxDataSource"
+"\"&gt;\n"
+"      &lt;property name=\"driverClass\"&gt;org.hsqldb.jdbcDriver&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"connectionURL\"&gt;jdbc:hsqldb:.&lt;/property&gt;\n"
+"      &lt;property name=\"userName\"&gt;sa&lt;/property&gt;\n"
+"      &lt;property name=\"jndiName\"&gt;java:/bookingDatasource&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"minSize\"&gt;0&lt;/property&gt;\n"
+"      &lt;property name=\"maxSize\"&gt;10&lt;/property&gt;\n"
+"      &lt;property name=\"blockingTimeout\"&gt;1000&lt;/property&gt;\n"
+"      &lt;property name=\"idleTimeout\"&gt;100000&lt;/property&gt;\n"
+"      &lt;property name=\"transactionManager\"&gt;\n"
+"        &lt;inject bean=\"TransactionManager\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"      &lt;property name=\"cachedConnectionManager\"&gt;\n"
+"        &lt;inject bean=\"CachedConnectionManager\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"      &lt;property name=\"initialContextProperties\"&gt;\n"
+"        &lt;inject bean=\"InitialContextProperties\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasource\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getDatasource\"&gt;\n"
+"         &lt;factory bean=\"bookingDatasourceBootstrap\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"&lt;/deployment&gt;"
+
+#. Tag: para
+#: Configuration.xml:277
+#, no-c-format
+msgid ""
+"The archive structure of a WAR-based deployment on an servlet engine like "
+"Tomcat will look something like this:"
+msgstr "Die Archivstruktur des WAR-basierten Deployment auf einer Servlet-Engine wie Tomcat sieht ungefähr so aus:"
+
+#. Tag: programlisting
+#: Configuration.xml:280
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            myfaces-api.jar\n"
+"            myfaces-impl.jar\n"
+"            jboss-ejb3.jar\n"
+"            jboss-jca.jar\n"
+"            jboss-j2ee.jar\n"
+"            ...\n"
+"            mc-conf.jar/\n"
+"                ejb3-interceptors-aop.xml\n"
+"                embedded-jboss-beans.xml\n"
+"                default.persistence.properties\n"
+"                jndi.properties\n"
+"                login-config.xml\n"
+"                security-beans.xml\n"
+"                log4j.xml\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                    MANIFEST.MF\n"
+"                    persistence.xml\n"
+"                    jboss-beans.xml\n"
+"                log4j.xml\n"
+"                seam.properties\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            LoginBean.class\n"
+"                            Register.class\n"
+"                            RegisterBean.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            myfaces-api.jar\n"
+"            myfaces-impl.jar\n"
+"            jboss-ejb3.jar\n"
+"            jboss-jca.jar\n"
+"            jboss-j2ee.jar\n"
+"            ...\n"
+"            mc-conf.jar/\n"
+"                ejb3-interceptors-aop.xml\n"
+"                embedded-jboss-beans.xml\n"
+"                default.persistence.properties\n"
+"                jndi.properties\n"
+"                login-config.xml\n"
+"                security-beans.xml\n"
+"                log4j.xml\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                    MANIFEST.MF\n"
+"                    persistence.xml\n"
+"                    jboss-beans.xml\n"
+"                log4j.xml\n"
+"                seam.properties\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            LoginBean.class\n"
+"                            Register.class\n"
+"                            RegisterBean.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+
+#. Tag: para
+#: Configuration.xml:281
+#, no-c-format
+msgid ""
+"The <literal>mc-conf.jar</literal> just contains the standard JBoss "
+"Microcontainer configuration files for Embeddable EJB3. You won&#39;t "
+"usually need to edit these files yourself."
+msgstr ""
+"Die <literal>mc-conf.jar</literal> enthält nur die standardmäßigen JBoss "
+"Microcontainer Konfigurationsdateien für Embeddable EJB3. In der Regel müssen Sie diese Dateien nicht selbst bearbeiten."
+
+#. Tag: para
+#: Configuration.xml:284
+#, no-c-format
+msgid ""
+"Most of the Seam example applications may be deployed to Tomcat by running "
+"<literal>ant deploy.tomcat</literal>."
+msgstr ""
+"Die meisten Seam-Beispielanwendungen können durch ausführen von "
+"<literal>ant deploy.tomcat</literal> nach Tomcat deployt werden."
+
+#. Tag: title
+#: Configuration.xml:287
+#, no-c-format
+msgid "Configuring Seam in J2EE"
+msgstr "Konfiguration von Seam in J2EE"
+
+#. Tag: para
+#: Configuration.xml:288
+#, no-c-format
+msgid ""
+"Seam is useful even if you&#39;re not yet ready to take the plunge into EJB "
+"3.0. In this case you would use Hibernate3 or JPA instead of EJB 3.0 "
+"persistence, and plain JavaBeans instead of session beans. You&#39;ll miss "
+"out on some of the nice features of session beans but it will be very easy "
+"to migrate to EJB 3.0 when you&#39;re ready and, in the meantime, you&#39;ll "
+"be able to take advantage of Seam&#39;s unique declarative state management "
+"architecture."
+msgstr ""
+"Seam ist auch dann nützlich, wenn Sie noch nicht bereit dazu sind, sich näher mit EJB 3.0 auseinanderzusetzen. In diesem Fall würden Sie Hibernate3 oder JPA statt EJB 3.0 Persistenz sowie einfache JavaBeans statt Session-Beans verwenden. Sie können zwar einige der Features von Session-Beans dadurch nicht nutzen, aber es wird ganz einfach nach EJB 3.0 zu migrieren, wenn Sie bereit sind. Und in der Zwischenzeit können Sie die Vorteile von Seam&#39;s einzigartiger deklarativer Status-Management "
+"Architektur nutzen."
+
+#. Tag: para
+#: Configuration.xml:299
+#, no-c-format
+msgid ""
+"Seam JavaBean components do not provide declarative transaction demarcation "
+"like session beans do. You <emphasis>could</emphasis> manage your "
+"transactions manually using the JTA <literal>UserTransaction</literal> (you "
+"could even implement your own declarative transaction management in a Seam "
+"interceptor). But most applications will use Seam managed transactions when "
+"using Hibernate with JavaBeans. Follow the instructions in the persistence "
+"chapter to install <literal>TransactionalSeamPhaseListener</literal>."
+msgstr "Seam JavaBean Komponenten stellen keine deklarative Transastiondemarkation bereit wie dies bei Session-Beans der Fall ist. Sie <emphasis>könnten</emphasis> Ihre Transaktionen manuell managen, indem Sie die JTA <literal>UserTransaction</literal> verwenden (Sie könnten sogar Ihr eigenes deklaratives Transaktionsmanagement in einem Seam-Interzeptor implementieren). Aber die meisten Anwendungen benutzen Seam gemanagte Transaktionen, wenn sie Hibernate mit JavaBeans verwenden. Folgen Sie den Anweisungen im Kapitel zur Persistenz bei der Installation des <literal>TransactionalSeamPhaseListener</literal>."
+
+#. Tag: para
+#: Configuration.xml:302
+#, no-c-format
+msgid ""
+"The Seam distribution includes a version of the booking example application "
+"that uses Hibernate3 and JavaBeans instead of EJB3, and another version that "
+"uses JPA and JavaBeans. These example applications are ready to deploy into "
+"any J2EE application server."
+msgstr "Die Seam-Distribution enthält eine Version der Buchungsbeispielanwendung die Hibernate3 und JavaBeans statt EJB3 und eine andere Version die JPA und JavaBeans verwendet. Diese Beispielanwendungen sind bereit zum Deployment in einem beliebigen J2EE-Applikationsserver."
+
+#. Tag: title
+#: Configuration.xml:305
+#, no-c-format
+msgid "Boostrapping Hibernate in Seam"
+msgstr "Boostrapping von Hibernate in Seam"
+
+#. Tag: para
+#: Configuration.xml:306
+#, no-c-format
+msgid ""
+"Seam will bootstrap a Hibernate <literal>SessionFactory</literal> from your "
+"<literal>hibernate.cfg.xml</literal> file if you install a built-in "
+"component:"
+msgstr ""
+"Seam bootstrapt eine Hibernate <literal>SessionFactory</literal> aus Ihrer "
+"<literal>hibernate.cfg.xml</literal>-Datei, wenn Sie eine eingebaute Komponente installieren:"
+
+#. Tag: programlisting
+#: Configuration.xml:309
+#, no-c-format
+msgid "&lt;core:hibernate-session-factory name=\"hibernateSessionFactory\"/&gt;"
+msgstr "&lt;core:hibernate-session-factory name=\"hibernateSessionFactory\"/&gt;"
+
+#. Tag: para
+#: Configuration.xml:310
+#, no-c-format
+msgid ""
+"You will also need to configure a <emphasis>managed session</emphasis> if "
+"you want a Seam managed Hibernate <literal>Session</literal> to be available "
+"via injection."
+msgstr "Sie werden auch eine <emphasis>gemanagte Session</emphasis> konfigurieren müssen, wenn Sie wollen, dass eine Seam gemanagte Hibernate <literal>Session</literal> via Einspeisung (\"Injection\") verfügbar ist."
+
+#. Tag: title
+#: Configuration.xml:313
+#, no-c-format
+msgid "Boostrapping JPA in Seam"
+msgstr "\"Boostrapping\" von JPA in Seam"
+
+#. Tag: para
+#: Configuration.xml:314
+#, no-c-format
+msgid ""
+"Seam will bootstrap a JPA <literal>EntityManagerFactory</literal> from your "
+"<literal>persistence.xml</literal> file if you install this built-in "
+"component:"
+msgstr ""
+"Seam bootstrapt eine JPA <literal>EntityManagerFactory</literal> aus Ihrer "
+"<literal>persistence.xml</literal>-Datei, wenn Sie diese eingebaute Komponente installieren:"
+
+#. Tag: programlisting
+#: Configuration.xml:317
+#, no-c-format
+msgid "&lt;core:entity-manager-factory name=\"entityManagerFactory\"/&gt;"
+msgstr "&lt;core:entity-manager-factory name=\"entityManagerFactory\"/&gt;"
+
+#. Tag: para
+#: Configuration.xml:318
+#, no-c-format
+msgid ""
+"You will also need to configure a <emphasis>managed persistencece context</"
+"emphasis> if you want a Seam managed JPA <literal>EntityManager</literal> to "
+"be available via injection."
+msgstr ""
+"Sie werden einen <emphasis>gemanagten Persistenzkontext</"
+"emphasis> konfigurieren müssen, wenn Sie möchten, dass ein Seam gemanagter JPA-<literal>EntityManager</literal> via Einspeisung (\"Injection\") verfügbar ist."
+
+#. Tag: para
+#: Configuration.xml:322
+#, no-c-format
+msgid "We can package our application as a WAR, in the following structure:"
+msgstr "Wir können unsere ANwendung als ein WAR ,in der folgenden Struktur verpacken:"
+
+#. Tag: programlisting
+#: Configuration.xml:325
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            hibernate3.jar\n"
+"            hibernate-annotations.jar\n"
+"            ...\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                   MANIFEST.MF\n"
+"                seam.properties\n"
+"                hibernate.cfg.xml\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            Register.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            hibernate3.jar\n"
+"            hibernate-annotations.jar\n"
+"            ...\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                   MANIFEST.MF\n"
+"                seam.properties\n"
+"                hibernate.cfg.xml\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            Register.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+
+#. Tag: para
+#: Configuration.xml:326
+#, no-c-format
+msgid ""
+"If we want to deploy Hibernate in a non-J2EE environment like Tomcat or "
+"TestNG, we need to do a little bit more work."
+msgstr ""
+"Soll Hibernate in einer nicht-J2EE Umgebung wie Tomcat oder "
+"TestNG deployt werden, so erfordert dies etwas mehr Arbeit."
+
+#. Tag: title
+#: Configuration.xml:330
+#, no-c-format
+msgid "Configuring Seam in Java SE, with the JBoss Microcontainer"
+msgstr "Konfiguration von Seam in Java SE mit dem JBoss Microcontainer"
+
+#. Tag: para
+#: Configuration.xml:331
+#, no-c-format
+msgid ""
+"The Seam support for Hibernate and JPA requires JTA and a JCA datasource. If "
+"you are running in a non-EE environment like Tomcat or TestNG you can run "
+"these services, and Hibernate itself, in the JBoss Microcontainer."
+msgstr "Der Seam-Support für Hibernate und JPA erfordert JTA und eine JCA-Datenquelle. Falls Ihr Betrieb in einer nicht-EE Umgebung wie Tomcat oder TestNG erfolgt, so können Sie diese Dienste und Hibernate selbst im JBoss Microcontainer ausführen."
+
+#. Tag: para
+#: Configuration.xml:334
+#, no-c-format
+msgid ""
+"You can even deploy the Hibernate and JPA versions of the booking example in "
+"Tomcat."
+msgstr ""
+"Sie können sogar die Hibernate- und JPA-Versionen des Buchungsbeispiels in "
+"Tomcat deployen."
+
+#. Tag: para
+#: Configuration.xml:345
+#, no-c-format
+msgid ""
+"Seam ships with an example Microcontainer configuration in "
+"<literal>microcontainer/conf/jboss-beans.xml</literal> that provides all the "
+"things you need to run Seam with Hibernate in any non-EE environment. Just "
+"add the <literal>microcontainer/conf</literal> directory, and all jars in "
+"the <literal>lib</literal> and <literal>microcontainer/lib</literal> "
+"directories to your classpath. Refer to the documentation for the JBoss "
+"Microcontainer for more information."
+msgstr ""
+"Seam wird mit einer Beispiel-Microcontainer-Konfiguration in "
+"<literal>microcontainer/conf/jboss-beans.xml</literal> geliefert, die alles bereitstellt, was Sie brauchen, um Seam mit Hibernate in einer beliebigen nicht-EE Umgebung auszuführen. Fügen Sie einfach Ihrem Klassenpfad das <literal>microcontainer/conf</literal>-Verzeichnis und alle Jars in "
+"den <literal>lib</literal> und <literal>microcontainer/lib</literal>-Verzeichnissen hinzu. Weitere Informationen finden Sie in der Dokumentation für den JBoss "
+"Microcontainer."
+
+#. Tag: title
+#: Configuration.xml:348
+#, no-c-format
+msgid "Using Hibernate and the JBoss Microcontainer"
+msgstr "Die Verwendung von Hibernate und des JBoss Microcontainers"
+
+#. Tag: para
+#: Configuration.xml:349
+#, no-c-format
+msgid ""
+"The built-in Seam component named <literal>org.jboss.seam.core."
+"microcontainer</literal> bootstraps the microcontainer. As before, we "
+"probably want to use a Seam managed session."
+msgstr ""
+"Die eingebaute Seam-Komponente namens <literal>org.jboss.seam.core."
+"microcontainer</literal> bootstrapt den Microcontainer. Wie zuvor wollen wir wahrscheinlich eine Seam gemanagte Session verwenden."
+
+#. Tag: programlisting
+#: Configuration.xml:352
+#, no-c-format
+msgid ""
+"&lt;core:microcontainer/&gt;\n"
+"\n"
+"&lt;core:managed-hibernate-session name=\"bookingDatabase\" auto-create="
+"\"true\"\n"
+"    session-factory-jndi-name=\"java:/bookingSessionFactory\"/&gt;"
+msgstr ""
+"&lt;core:microcontainer/&gt;\n"
+"\n"
+"&lt;core:managed-hibernate-session name=\"bookingDatabase\" auto-create="
+"\"true\"\n"
+"    session-factory-jndi-name=\"java:/bookingSessionFactory\"/&gt;"
+
+#. Tag: para
+#: Configuration.xml:353
+#, no-c-format
+msgid ""
+"Where <literal>java:/bookingSessionFactory</literal> is the name of the "
+"Hibernate session factory specified in <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+"Wobei <literal>java:/bookingSessionFactory</literal> der Name der "
+"Hibernate Session-Factory in <literal>hibernate.cfg.xml</literal> festgelegt ist."
+
+#. Tag: para
+#: Configuration.xml:356
+#, no-c-format
+msgid ""
+"You&#39;ll need to provide a <literal>jboss-beans.xml</literal> file that "
+"installs JNDI, JTA, your JCA datasource and Hibernate into the "
+"microcontainer:"
+msgstr ""
+"Sie müssen eine <literal>jboss-beans.xml</literal>-Datei bereitstellen, die JNDI, JTA, Ihre JCA-Datenquelle und Hibernate in den "
+"Microcontainer installiert:"
+
+#. Tag: programlisting
+#: Configuration.xml:359
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"\n"
+"&lt;deployment xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"urn:jboss:bean-deployer bean-deployer_1_0."
+"xsd\"\n"
+"            xmlns=\"urn:jboss:bean-deployer\"&gt;\n"
+"\n"
+"   &lt;bean name=\"Naming\" class=\"org.jnp.server.SingletonNamingServer\"/"
+"&gt;\n"
+"\n"
+"   &lt;bean name=\"TransactionManagerFactory\" \n"
+"      class=\"org.jboss.seam.microcontainer.TransactionManagerFactory\"/"
+"&gt;\n"
+"   &lt;bean name=\"TransactionManager\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getTransactionManager\"&gt;\n"
+"         &lt;factory bean=\"TransactionManagerFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasourceFactory\" class=\"org.jboss.seam."
+"microcontainer.DataSourceFactory\"&gt;\n"
+"      &lt;property name=\"driverClass\"&gt;org.hsqldb.jdbcDriver&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"connectionUrl\"&gt;jdbc:hsqldb:.&lt;/property&gt;\n"
+"      &lt;property name=\"userName\"&gt;sa&lt;/property&gt;\n"
+"      &lt;property name=\"jndiName\"&gt;java:/hibernateDatasource&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"minSize\"&gt;0&lt;/property&gt;\n"
+"      &lt;property name=\"maxSize\"&gt;10&lt;/property&gt;\n"
+"      &lt;property name=\"blockingTimeout\"&gt;1000&lt;/property&gt;\n"
+"      &lt;property name=\"idleTimeout\"&gt;100000&lt;/property&gt;\n"
+"      &lt;property name=\"transactionManager\"&gt;&lt;inject bean="
+"\"TransactionManager\"/&gt;&lt;/property&gt;\n"
+"   &lt;/bean&gt;\n"
+"   &lt;bean name=\"bookingDatasource\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getDataSource\"&gt;\n"
+"         &lt;factory bean=\"bookingDatasourceFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingSessionFactoryFactory\" \n"
+"      class=\"org.jboss.seam.microcontainer.HibernateFactory\"/&gt;\n"
+"   &lt;bean name=\"bookingSessionFactory\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getSessionFactory\"&gt;\n"
+"         &lt;factory bean=\"bookingSessionFactoryFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"      &lt;depends&gt;bookingDatasource&lt;/depends&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"&lt;/deployment&gt;"
+msgstr ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"\n"
+"&lt;deployment xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"urn:jboss:bean-deployer bean-deployer_1_0."
+"xsd\"\n"
+"            xmlns=\"urn:jboss:bean-deployer\"&gt;\n"
+"\n"
+"   &lt;bean name=\"Naming\" class=\"org.jnp.server.SingletonNamingServer\"/"
+"&gt;\n"
+"\n"
+"   &lt;bean name=\"TransactionManagerFactory\" \n"
+"      class=\"org.jboss.seam.microcontainer.TransactionManagerFactory\"/"
+"&gt;\n"
+"   &lt;bean name=\"TransactionManager\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getTransactionManager\"&gt;\n"
+"         &lt;factory bean=\"TransactionManagerFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasourceFactory\" class=\"org.jboss.seam."
+"microcontainer.DataSourceFactory\"&gt;\n"
+"      &lt;property name=\"driverClass\"&gt;org.hsqldb.jdbcDriver&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"connectionUrl\"&gt;jdbc:hsqldb:.&lt;/property&gt;\n"
+"      &lt;property name=\"userName\"&gt;sa&lt;/property&gt;\n"
+"      &lt;property name=\"jndiName\"&gt;java:/hibernateDatasource&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"minSize\"&gt;0&lt;/property&gt;\n"
+"      &lt;property name=\"maxSize\"&gt;10&lt;/property&gt;\n"
+"      &lt;property name=\"blockingTimeout\"&gt;1000&lt;/property&gt;\n"
+"      &lt;property name=\"idleTimeout\"&gt;100000&lt;/property&gt;\n"
+"      &lt;property name=\"transactionManager\"&gt;&lt;inject bean="
+"\"TransactionManager\"/&gt;&lt;/property&gt;\n"
+"   &lt;/bean&gt;\n"
+"   &lt;bean name=\"bookingDatasource\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getDataSource\"&gt;\n"
+"         &lt;factory bean=\"bookingDatasourceFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingSessionFactoryFactory\" \n"
+"      class=\"org.jboss.seam.microcontainer.HibernateFactory\"/&gt;\n"
+"   &lt;bean name=\"bookingSessionFactory\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getSessionFactory\"&gt;\n"
+"         &lt;factory bean=\"bookingSessionFactoryFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"      &lt;depends&gt;bookingDatasource&lt;/depends&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"&lt;/deployment&gt;"
+
+#. Tag: para
+#: Configuration.xml:361
+#, no-c-format
+msgid "The WAR could have the following structure:"
+msgstr "Das WAR könnte die folgende Struktur besitzen:"
+
+#. Tag: programlisting
+#: Configuration.xml:364
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            hibernate3.jar\n"
+"            ...\n"
+"            jboss-microcontainer.jar\n"
+"            jboss-jca.jar\n"
+"            ...\n"
+"            myfaces-api.jar\n"
+"            myfaces-impl.jar\n"
+"            mc-conf.jar/\n"
+"                jndi.properties\n"
+"                log4j.xml\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                    MANIFEST.MF\n"
+"                    jboss-beans.xml\n"
+"                seam.properties\n"
+"                hibernate.cfg.xml\n"
+"                log4j.xml\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            Register.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            hibernate3.jar\n"
+"            ...\n"
+"            jboss-microcontainer.jar\n"
+"            jboss-jca.jar\n"
+"            ...\n"
+"            myfaces-api.jar\n"
+"            myfaces-impl.jar\n"
+"            mc-conf.jar/\n"
+"                jndi.properties\n"
+"                log4j.xml\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                    MANIFEST.MF\n"
+"                    jboss-beans.xml\n"
+"                seam.properties\n"
+"                hibernate.cfg.xml\n"
+"                log4j.xml\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            Register.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+
+#. Tag: title
+#: Configuration.xml:365
+#, no-c-format
+msgid "Configuring jBPM in Seam"
+msgstr "Configuration von jBPM in Seam"
+
+#. Tag: para
+#: Configuration.xml:366
+#, no-c-format
+msgid ""
+"Seam&#39;s jBPM integration is not installed by default, so you&#39;ll need "
+"to enable jBPM by installing a built-in component. You&#39;ll also need to "
+"explicitly list your process and pageflow definitions. In "
+"<literal>components.xml</literal>:"
+msgstr "Seam&#39;s jBPM-Integration ist nicht standardmäßig installiert, weswegen Sie jBPM aktivieren müssen, indem Sie eine eingebaute Komponente installieren. Sie werden auch Ihre Prozess- und Pageflow-Definitionen explizit in <literal>components.xml</literal> auflisten müssen:"
+
+#. Tag: programlisting
+#: Configuration.xml:369
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:pageflow-definitions&gt;\n"
+"        &lt;value&gt;createDocument.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;editDocument.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;approveDocument.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:pageflow-definitions&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;documentLifecycle.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:pageflow-definitions&gt;\n"
+"        &lt;value&gt;createDocument.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;editDocument.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;approveDocument.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:pageflow-definitions&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;documentLifecycle.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+
+#. Tag: para
+#: Configuration.xml:370
+#, no-c-format
+msgid ""
+"No further special configuration is needed if you only have pageflows. If "
+"you do have business process definitions, you need to provide a jBPM "
+"configuration, and a Hibernate configuration for jBPM. The Seam DVD Store "
+"demo includes example <literal>jbpm.cfg.xml</literal> and <literal>hibernate."
+"cfg.xml</literal> files that will work with Seam:"
+msgstr ""
+"Wenn Sie nur Pageflows besitzen, so wird keine weitere Konfiguration benötigt. Falls Sie Business-Prozessdefinitionen besitzen, so müssen Sie eine jBPM-Konfiguration bereitstellen sowie eine Hibernate-Konfiguration für jBPM. Die Seam DVD Store-Demo enthält Beispieldateien für <literal>jbpm.cfg.xml</literal> und <literal>hibernate."
+"cfg.xml</literal>, die mit Seam funktionieren:"
+
+#. Tag: programlisting
+#: Configuration.xml:373
+#, no-c-format
+msgid ""
+"&lt;jbpm-configuration&gt;\n"
+"\n"
+"  &lt;jbpm-context&gt;\n"
+"    &lt;service name=\"persistence\"&gt;\n"
+"       &lt;factory&gt;\n"
+"          &lt;bean class=\"org.jbpm.persistence.db."
+"DbPersistenceServiceFactory\"&gt;\n"
+"             &lt;field name=\"isTransactionEnabled\"&gt;&lt;false/&gt;&lt;/"
+"field&gt;\n"
+"          &lt;/bean&gt;\n"
+"       &lt;/factory&gt;\n"
+"    &lt;/service&gt;\n"
+"    &lt;service name=\"message\" factory=\"org.jbpm.msg.db."
+"DbMessageServiceFactory\" /&gt;\n"
+"    &lt;service name=\"scheduler\" factory=\"org.jbpm.scheduler.db."
+"DbSchedulerServiceFactory\" /&gt;\n"
+"    &lt;service name=\"logging\" factory=\"org.jbpm.logging.db."
+"DbLoggingServiceFactory\" /&gt;\n"
+"    &lt;service name=\"authentication\" \n"
+"       factory=\"org.jbpm.security.authentication."
+"DefaultAuthenticationServiceFactory\" /&gt;\n"
+"  &lt;/jbpm-context&gt;\n"
+"\n"
+"&lt;/jbpm-configuration&gt;"
+msgstr ""
+"&lt;jbpm-configuration&gt;\n"
+"\n"
+"  &lt;jbpm-context&gt;\n"
+"    &lt;service name=\"persistence\"&gt;\n"
+"       &lt;factory&gt;\n"
+"          &lt;bean class=\"org.jbpm.persistence.db."
+"DbPersistenceServiceFactory\"&gt;\n"
+"             &lt;field name=\"isTransactionEnabled\"&gt;&lt;false/&gt;&lt;/"
+"field&gt;\n"
+"          &lt;/bean&gt;\n"
+"       &lt;/factory&gt;\n"
+"    &lt;/service&gt;\n"
+"    &lt;service name=\"message\" factory=\"org.jbpm.msg.db."
+"DbMessageServiceFactory\" /&gt;\n"
+"    &lt;service name=\"scheduler\" factory=\"org.jbpm.scheduler.db."
+"DbSchedulerServiceFactory\" /&gt;\n"
+"    &lt;service name=\"logging\" factory=\"org.jbpm.logging.db."
+"DbLoggingServiceFactory\" /&gt;\n"
+"    &lt;service name=\"authentication\" \n"
+"       factory=\"org.jbpm.security.authentication."
+"DefaultAuthenticationServiceFactory\" /&gt;\n"
+"  &lt;/jbpm-context&gt;\n"
+"\n"
+"&lt;/jbpm-configuration&gt;"
+
+#. Tag: para
+#: Configuration.xml:374
+#, no-c-format
+msgid ""
+"The most important thing to notice here is that jBPM transaction control is "
+"disabled. Seam or EJB3 should control the JTA transactions."
+msgstr "Das Wichtigste ist es, zu beachten, dass die jBPM-Transaktionskontrolle deaktiviert ist. Seam oder EJB3 sollten die JTA-Transaktionen kontrollieren."
+
+#. Tag: para
+#: Configuration.xml:378
+#, no-c-format
+msgid ""
+"There is not yet any well-defined packaging format for jBPM configuration "
+"and process/pageflow definition files. In the Seam examples we&#39;ve "
+"decided to simply package all these files into the root of the EAR. In "
+"future, we will probably design some other standard packaging format. So the "
+"EAR looks something like this:"
+msgstr "Es existiert noch kein gut definiertes Packungsformat für jBPM-Konfigurations- und Prozess/Pageflow Definitionsdateien. In den Seam Beispielen haben wir uns dazu entschieden alle diese Dateien in die Root des EAR zu packen. In der Zukunft werden wir wahrscheinlich eine andere Art der Standardverpackung entwerfen. Die EAR sieht ungefähr so aus:"
+
+#. Tag: programlisting
+#: Configuration.xml:381
+#, no-c-format
+msgid ""
+"my-application.ear/\n"
+"    jboss-seam.jar\n"
+"    el-api.jar\n"
+"    el-ri.jar\n"
+"    jbpm-3.1.jar\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"        application.xml\n"
+"    my-application.war/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"        WEB-INF/\n"
+"            web.xml\n"
+"            components.xml\n"
+"            faces-config.xml\n"
+"            lib/\n"
+"                jsf-facelets.jar\n"
+"                jboss-seam-ui.jar\n"
+"        login.jsp\n"
+"        register.jsp\n"
+"        ...\n"
+"    my-application.jar/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"            persistence.xml\n"
+"        seam.properties\n"
+"        org/\n"
+"            jboss/\n"
+"                myapplication/\n"
+"                    User.class\n"
+"                    Login.class\n"
+"                    LoginBean.class\n"
+"                    Register.class\n"
+"                    RegisterBean.class\n"
+"                    ...\n"
+"    jbpm.cfg.xml\n"
+"    hibernate.cfg.xml\n"
+"    createDocument.jpdl.xml\n"
+"    editDocument.jpdl.xml\n"
+"    approveDocument.jpdl.xml\n"
+"    documentLifecycle.jpdl.xml"
+msgstr ""
+"my-application.ear/\n"
+"    jboss-seam.jar\n"
+"    el-api.jar\n"
+"    el-ri.jar\n"
+"    jbpm-3.1.jar\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"        application.xml\n"
+"    my-application.war/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"        WEB-INF/\n"
+"            web.xml\n"
+"            components.xml\n"
+"            faces-config.xml\n"
+"            lib/\n"
+"                jsf-facelets.jar\n"
+"                jboss-seam-ui.jar\n"
+"        login.jsp\n"
+"        register.jsp\n"
+"        ...\n"
+"    my-application.jar/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"            persistence.xml\n"
+"        seam.properties\n"
+"        org/\n"
+"            jboss/\n"
+"                myapplication/\n"
+"                    User.class\n"
+"                    Login.class\n"
+"                    LoginBean.class\n"
+"                    Register.class\n"
+"                    RegisterBean.class\n"
+"                    ...\n"
+"    jbpm.cfg.xml\n"
+"    hibernate.cfg.xml\n"
+"    createDocument.jpdl.xml\n"
+"    editDocument.jpdl.xml\n"
+"    approveDocument.jpdl.xml\n"
+"    documentLifecycle.jpdl.xml"
+
+#. Tag: para
+#: Configuration.xml:382
+#, no-c-format
+msgid ""
+"Remember to add <literal>jbpm-3.1.jar</literal> to the manifest of your EJB-"
+"JAR and WAR."
+msgstr ""
+"Vergessen Sie nicht, <literal>jbpm-3.1.jar</literal> dem Manifest Ihres EJB-"
+"JAR und WAR hinzuzufügen."
+
+#. Tag: title
+#: Configuration.xml:385
+#, no-c-format
+msgid "Configuring Seam in a Portal"
+msgstr "Konfiguration von Seam in einem Portal"
+
+#. Tag: para
+#: Configuration.xml:386
+#, no-c-format
+msgid ""
+"To run a Seam application as a portlet, you&#39;ll need to provide certain "
+"portlet metadata (<literal>portlet.xml</literal>, etc) in addition to the "
+"usual Java EE metadata. See the <literal>examples/portal</literal> directory "
+"for an example of the booking demo preconfigured to run on JBoss Portal."
+msgstr ""
+"Um eine Seam-Anwendung als Portlet auszuführen, müssen Sie (neben den regulären Java EE Metadaten) bestimmte "
+"Portlet Metadaten bereitstellen (<literal>portlet.xml</literal> usw.). Im <literal>examples/portal</literal>-Verzeichnis finden Sie ein Beispiel der Buchungs-Demo, die zur Ausführung im JBoss Portal vorkonfiguriert ist."
+
+#. Tag: para
+#: Configuration.xml:389
+#, no-c-format
+msgid ""
+"In addition, you&#39;ll need to use a portlet-specific phase listener "
+"instead of <literal>SeamPhaseListener</literal> or "
+"<literal>TransactionalSeamPhaseListener</literal>. The "
+"<literal>SeamPortletPhaseListener</literal> and "
+"<literal>TransactionalSeamPortletPhaseListener</literal> are adapted to the "
+"portlet lifecycle. I would like to offer my sincerest apologies for the name "
+"of that last class. I really couldn&#39;t think of anything better. Sorry."
+msgstr ""
+"Außerdem werden Sie einen Portlet-spezifischen p#Phasen-Listener "
+"statt des <literal>SeamPhaseListener</literal> oder "
+"<literal>TransactionalSeamPhaseListener</literal> verwenden müssen. Der <literal>SeamPortletPhaseListener</literal> und "
+"<literal>TransactionalSeamPortletPhaseListener</literal> sind an den Portlet-Lebenszyklus angepasst. Wir möchten uns für den Namen dieser letzten Klasse entschuldigen - uns ist einfach kein besserer eingefallen."
+
+#. Tag: title
+#: Configuration.xml:392
+#, no-c-format
+msgid "Configuring SFSB and Session Timeouts in JBoss AS"
+msgstr "Konfiguration von SFSB und Session-Timeouts in JBoss AS"
+
+#. Tag: para
+#: Configuration.xml:393
+#, no-c-format
+msgid ""
+"It is very important that the timeout for Stateful Session Beans is set "
+"higher than the timeout for HTTP Sessions, otherwise SFSB&#39;s may time out "
+"before the user&#39;s HTTP session has ended. JBoss Application Server has a "
+"default session bean timeout of 30 minutes, which is configured in "
+"<literal>server/default/conf/standardjboss.xml</literal> (replace "
+"<emphasis>default</emphasis> with your own configuration)."
+msgstr ""
+"Es ist sehr wichtig, dass der Timeout für Stateful Session Beans höher als der Timeout für HTTP-Sessions eingestellt ist, da es ansonsten zu einem Timeout von SFSB&#39;s kommen kann ehe die HTTP-Session des Benutzers beendet ist. Der JBoss Application Server besitzt einen standardmäßigen Session-Bean Timeout von 30 Minutes, der in "
+"<literal>server/default/conf/standardjboss.xml</literal> konfiguriert ist (ersetzen Sie <emphasis>default</emphasis> durch Ihre eigene Konfiguration)."
+
+#. Tag: para
+#: Configuration.xml:396
+#, no-c-format
+msgid ""
+"The default SFSB timeout can be adjusted by modifying the value of "
+"<literal>max-bean-life</literal> in the "
+"<literal>LRUStatefulContextCachePolicy</literal> cache configuration:"
+msgstr ""
+"Der standardmäßige SFSB-Timeout kann durch Modifikation des Werts von "
+"<literal>max-bean-life</literal> in der "
+"<literal>LRUStatefulContextCachePolicy</literal>-Cache-Konfiguration angepasst werden:"
+
+#. Tag: programlisting
+#: Configuration.xml:399
+#, no-c-format
+msgid ""
+"&lt;container-cache-conf&gt;\n"
+"        &lt;cache-policy&gt;org.jboss.ejb.plugins."
+"LRUStatefulContextCachePolicy&lt;/cache-policy&gt;\n"
+"        &lt;cache-policy-conf&gt;\n"
+"          &lt;min-capacity&gt;50&lt;/min-capacity&gt;\n"
+"          &lt;max-capacity&gt;1000000&lt;/max-capacity&gt;\n"
+"          &lt;remover-period&gt;1800&lt;/remover-period&gt;\n"
+"\n"
+"          &lt;!-- SFSB timeout in seconds; 1800 seconds == 30 minutes --"
+"&gt;\n"
+"          &lt;max-bean-life&gt;1800&lt;/max-bean-life&gt;  \n"
+"          \n"
+"          &lt;overager-period&gt;300&lt;/overager-period&gt;\n"
+"          &lt;max-bean-age&gt;600&lt;/max-bean-age&gt;\n"
+"          &lt;resizer-period&gt;400&lt;/resizer-period&gt;\n"
+"          &lt;max-cache-miss-period&gt;60&lt;/max-cache-miss-period&gt;\n"
+"          &lt;min-cache-miss-period&gt;1&lt;/min-cache-miss-period&gt;\n"
+"          &lt;cache-load-factor&gt;0.75&lt;/cache-load-factor&gt;\n"
+"        &lt;/cache-policy-conf&gt;\n"
+"      &lt;/container-cache-conf&gt;"
+msgstr ""
+"&lt;container-cache-conf&gt;\n"
+"        &lt;cache-policy&gt;org.jboss.ejb.plugins."
+"LRUStatefulContextCachePolicy&lt;/cache-policy&gt;\n"
+"        &lt;cache-policy-conf&gt;\n"
+"          &lt;min-capacity&gt;50&lt;/min-capacity&gt;\n"
+"          &lt;max-capacity&gt;1000000&lt;/max-capacity&gt;\n"
+"          &lt;remover-period&gt;1800&lt;/remover-period&gt;\n"
+"\n"
+"          &lt;!-- SFSB timeout in seconds; 1800 seconds == 30 minutes --"
+"&gt;\n"
+"          &lt;max-bean-life&gt;1800&lt;/max-bean-life&gt;  \n"
+"          \n"
+"          &lt;overager-period&gt;300&lt;/overager-period&gt;\n"
+"          &lt;max-bean-age&gt;600&lt;/max-bean-age&gt;\n"
+"          &lt;resizer-period&gt;400&lt;/resizer-period&gt;\n"
+"          &lt;max-cache-miss-period&gt;60&lt;/max-cache-miss-period&gt;\n"
+"          &lt;min-cache-miss-period&gt;1&lt;/min-cache-miss-period&gt;\n"
+"          &lt;cache-load-factor&gt;0.75&lt;/cache-load-factor&gt;\n"
+"        &lt;/cache-policy-conf&gt;\n"
+"      &lt;/container-cache-conf&gt;"
+
+#. Tag: para
+#: Configuration.xml:400
+#, no-c-format
+msgid ""
+"The default HTTP session timeout can be modified in <literal>server/default/"
+"deploy/jbossweb-tomcat55.sar/conf/web.xml</literal> for JBoss 4.0.x, or in "
+"<literal>server/default/deploy/jboss-web.deployer/conf/web.xml</literal> for "
+"JBoss 4.2.x. The following entry in this file controls the default session "
+"timeout for all web applications:"
+msgstr ""
+"Der standardmäßige HTTP-Session-Timeout kann in <literal>server/default/"
+"deploy/jbossweb-tomcat55.sar/conf/web.xml</literal> für JBoss 4.0.x oder in "
+"<literal>server/default/deploy/jboss-web.deployer/conf/web.xml</literal> für JBoss 4.2.x modifiziert werden. Der folgende Eintrag in dieser Datei kontrolloiert den standardmäßigen Session-Timeout für alle Web-Anwendungen:"
+
+#. Tag: programlisting
+#: Configuration.xml:403
+#, no-c-format
+msgid ""
+"&lt;session-config&gt;\n"
+"      &lt;!-- HTTP Session timeout, in minutes --&gt;\n"
+"      &lt;session-timeout&gt;30&lt;/session-timeout&gt;\n"
+"   &lt;/session-config&gt;"
+msgstr ""
+"&lt;session-config&gt;\n"
+"      &lt;!-- HTTP Session timeout, in minutes --&gt;\n"
+"      &lt;session-timeout&gt;30&lt;/session-timeout&gt;\n"
+"   &lt;/session-config&gt;"
+
+#. Tag: para
+#: Configuration.xml:404
+#, no-c-format
+msgid ""
+"To override this value for your own application, simply include this entry "
+"in your application&#39;s own <literal>web.xml</literal>."
+msgstr "Um diesen Wert für Ihre eigene Anwendung außer Kraft zu setzen, schließen Sie diesen Eintrag einfach in der <literal>web.xml</literal> Ihrer Anwendung mit ein."
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Controls.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Controls.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Controls.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1345 @@
+# translation of Controls.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Jasna Dimanoski <jdimanos at redhat.com>, 2007, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Controls\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2008-04-12 14:26+1000\n"
+"Last-Translator: Jasna Dimanoski <jdimanos at redhat.com>\n"
+"Language-Team:  <de at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Controls.xml:6
+#, no-c-format
+msgid "Seam JSF controls"
+msgstr "Seam JSF-Steuerung"
+
+#. Tag: para
+#: Controls.xml:7
+#, no-c-format
+msgid ""
+"Seam includes a number of JSF controls that are useful for working with "
+"Seam. These are intended to complement the built-in JSF controls, and "
+"controls from other third-party libraries. We recommend the Ajax4JSF and ADF "
+"faces (now Trinidad) tag libraries for use with Seam. We do not recommend "
+"the use of the Tomahawk tag library."
+msgstr ""
+"Seam enthält eine Reihe von JSF-Steuerungen, die hilfreich bei der Arbeit mit Seam sind. Diese sollen die eingebauten JSF-Steuerungen sowie andere Steuerungen von Dritten ergänzen. Wir empfehlen die Ajax4JSF- und ADF- "
+"Faces (jetzt Trinidad) Tag-Bibliotheken für die Verwendung mit Seam. Die Verwendung der Tomahawk Tag-Bibliothek empfehlen wir nicht."
+
+#. Tag: para
+#: Controls.xml:10
+#, no-c-format
+msgid ""
+"To use these controls, define the \"<literal>s</literal>\" namespace in your "
+"page as follows (facelets only):"
+msgstr "Um diese Steuerungen zu verwenden, definieren Sie den \"<literal>s</literal>\" Namespace wie folgt in Ihrer Seite (nur Facelets):"
+
+#. Tag: programlisting
+#: Controls.xml:13
+#, no-c-format
+msgid ""
+"&lt;html xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"      xmlns:s=\"http://jboss.com/products/seam/taglib\"&gt;"
+msgstr ""
+"&lt;html xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"      xmlns:s=\"http://jboss.com/products/seam/taglib\"&gt;"
+
+#. Tag: para
+#: Controls.xml:14
+#, no-c-format
+msgid "The ui example demonstrates the use of a number of these tags."
+msgstr "Das ui Beispiel demonstriert die Verwendung einer Reihe dieser Tags."
+
+#. Tag: title
+#: Controls.xml:18
+#, no-c-format
+msgid "Seam JSF Control Reference"
+msgstr "Seam JSF-Steuerungsreferenz"
+
+#. Tag: literal
+#: Controls.xml:26
+#, no-c-format
+msgid "&lt;s:validate&gt;"
+msgstr "&lt;s:validate&gt;"
+
+#. Tag: emphasis
+#: Controls.xml:31 Controls.xml:56 Controls.xml:81 Controls.xml:121
+#: Controls.xml:146 Controls.xml:171 Controls.xml:203 Controls.xml:239
+#: Controls.xml:295 Controls.xml:396 Controls.xml:423 Controls.xml:477
+#: Controls.xml:504 Controls.xml:531 Controls.xml:558 Controls.xml:585
+#: Controls.xml:626 Controls.xml:687 Controls.xml:748 Controls.xml:901
+#: Controls.xml:937 Controls.xml:964 Controls.xml:991
+#, no-c-format
+msgid "Description"
+msgstr "Beschreibung"
+
+#. Tag: para
+#: Controls.xml:33
+#, no-c-format
+msgid ""
+"A non-visual control, validates a JSF input field against the bound property "
+"using Hibernate Validator."
+msgstr "Eine nicht visuelle Steuerung validiert ein JSF-Eingabefeld mittels Hibernate Validator gegen die gebundene Property."
+
+#. Tag: emphasis
+#: Controls.xml:37 Controls.xml:62 Controls.xml:87 Controls.xml:127
+#: Controls.xml:152 Controls.xml:180 Controls.xml:209 Controls.xml:245
+#: Controls.xml:304 Controls.xml:402 Controls.xml:448 Controls.xml:483
+#: Controls.xml:510 Controls.xml:537 Controls.xml:564 Controls.xml:591
+#: Controls.xml:632 Controls.xml:693 Controls.xml:754 Controls.xml:907
+#: Controls.xml:943 Controls.xml:970 Controls.xml:1024
+#, no-c-format
+msgid "Attributes"
+msgstr "Attribute"
+
+#. Tag: para
+#: Controls.xml:39 Controls.xml:64 Controls.xml:129 Controls.xml:154
+#: Controls.xml:182 Controls.xml:404 Controls.xml:450 Controls.xml:485
+#: Controls.xml:512 Controls.xml:539 Controls.xml:566 Controls.xml:945
+#: Controls.xml:972
+#, no-c-format
+msgid "None."
+msgstr "Keine."
+
+#. Tag: emphasis
+#: Controls.xml:43 Controls.xml:68 Controls.xml:97 Controls.xml:133
+#: Controls.xml:158 Controls.xml:190 Controls.xml:224 Controls.xml:280
+#: Controls.xml:381 Controls.xml:408 Controls.xml:454 Controls.xml:489
+#: Controls.xml:516 Controls.xml:543 Controls.xml:570 Controls.xml:611
+#: Controls.xml:672 Controls.xml:733 Controls.xml:779 Controls.xml:922
+#: Controls.xml:949 Controls.xml:976 Controls.xml:1059
+#, no-c-format
+msgid "Usage"
+msgstr "Gebrauch"
+
+#. Tag: programlisting
+#: Controls.xml:45
+#, no-c-format
+msgid ""
+"&lt;h:inputText id=\"userName\" required=\"true\" value=\"#{customer."
+"userName}\"&gt;\n"
+"  &lt;s:validate /&gt;\n"
+"&lt;/h:inputText&gt;\n"
+"&lt;h:message for=\"userName\" styleClass=\"error\" /&gt;"
+msgstr ""
+"&lt;h:inputText id=\"userName\" required=\"true\" value=\"#{customer."
+"userName}\"&gt;\n"
+"  &lt;s:validate /&gt;\n"
+"&lt;/h:inputText&gt;\n"
+"&lt;h:message for=\"userName\" styleClass=\"error\" /&gt;"
+
+#. Tag: literal
+#: Controls.xml:51
+#, no-c-format
+msgid "&lt;s:validateAll&gt;"
+msgstr "&lt;s:validateAll&gt;"
+
+#. Tag: para
+#: Controls.xml:58
+#, no-c-format
+msgid ""
+"A non-visual control, validates all child JSF input fields against their "
+"bound properties using Hibernate Validator."
+msgstr "Eine nicht visuelle Steuerung validiert alle untergeordneten JSF-Eingabefelder mittels Hibernate Validator gegen die gebundenen Properties."
+
+#. Tag: programlisting
+#: Controls.xml:70
+#, no-c-format
+msgid ""
+"&lt;s:validateAll&gt;\n"
+"  &lt;div class=\"entry\"&gt;\n"
+"    &lt;h:outputLabel for=\"username\"&gt;Username:&lt;/h:outputLabel&gt;\n"
+"    &lt;h:inputText id=\"username\" value=\"#{user.username}\" required="
+"\"true\"/&gt;\n"
+"    &lt;h:message for=\"username\" styleClass=\"error\" /&gt;\n"
+"  &lt;/div&gt;\n"
+"  &lt;div class=\"entry\"&gt;\n"
+"    &lt;h:outputLabel for=\"password\"&gt;Password:&lt;/h:outputLabel&gt;\n"
+"    &lt;h:inputSecret id=\"password\" value=\"#{user.password}\" required="
+"\"true\"/&gt;\n"
+"    &lt;h:message for=\"password\" styleClass=\"error\" /&gt;\n"
+"  &lt;/div&gt;\n"
+"  &lt;div class=\"entry\"&gt;\n"
+"    &lt;h:outputLabel for=\"verify\"&gt;Verify Password:&lt;/h:"
+"outputLabel&gt;\n"
+"    &lt;h:inputSecret id=\"verify\" value=\"#{register.verify}\" required="
+"\"true\"/&gt;\n"
+"    &lt;h:message for=\"verify\" styleClass=\"error\" /&gt;\n"
+"  &lt;/div&gt;\n"
+"&lt;/s:validateAll&gt;"
+msgstr ""
+"&lt;s:validateAll&gt;\n"
+"  &lt;div class=\"entry\"&gt;\n"
+"    &lt;h:outputLabel for=\"username\"&gt;Username:&lt;/h:outputLabel&gt;\n"
+"    &lt;h:inputText id=\"username\" value=\"#{user.username}\" required="
+"\"true\"/&gt;\n"
+"    &lt;h:message for=\"username\" styleClass=\"error\" /&gt;\n"
+"  &lt;/div&gt;\n"
+"  &lt;div class=\"entry\"&gt;\n"
+"    &lt;h:outputLabel for=\"password\"&gt;Password:&lt;/h:outputLabel&gt;\n"
+"    &lt;h:inputSecret id=\"password\" value=\"#{user.password}\" required="
+"\"true\"/&gt;\n"
+"    &lt;h:message for=\"password\" styleClass=\"error\" /&gt;\n"
+"  &lt;/div&gt;\n"
+"  &lt;div class=\"entry\"&gt;\n"
+"    &lt;h:outputLabel for=\"verify\"&gt;Verify Password:&lt;/h:"
+"outputLabel&gt;\n"
+"    &lt;h:inputSecret id=\"verify\" value=\"#{register.verify}\" required="
+"\"true\"/&gt;\n"
+"    &lt;h:message for=\"verify\" styleClass=\"error\" /&gt;\n"
+"  &lt;/div&gt;\n"
+"&lt;/s:validateAll&gt;"
+
+#. Tag: literal
+#: Controls.xml:76
+#, no-c-format
+msgid "&lt;s:formattedText&gt;"
+msgstr "&lt;s:formattedText&gt;"
+
+#. Tag: para
+#: Controls.xml:83
+#, no-c-format
+msgid ""
+"Outputs <emphasis>Seam Text</emphasis>, a rich text markup useful for blogs, "
+"wikis and other applications that might use rich text. See the Seam Text "
+"chapter for full usage."
+msgstr "Als Ausgabe erfolgt <emphasis>Seam Text</emphasis>, ein \"Rich Text Markup\", der für Blogs, Wikis und andere, \"Rich Text\" verwendende Anwendungen hilfreich sein kann. Zum vollständigen Gebrauch siehe das Kapitel zum Seam Text."
+
+#. Tag: para
+#: Controls.xml:91
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; an EL expression specifying the rich text "
+"markup to render."
+msgstr "<literal>value</literal> &mdash; ein den zu rendernden Rich Text Markup festlegender EL-Ausdruck."
+
+#. Tag: programlisting
+#: Controls.xml:99
+#, no-c-format
+msgid "&lt;s:formattedText value=\"#{blog.text}\"/&gt;"
+msgstr "&lt;s:formattedText value=\"#{blog.text}\"/&gt;"
+
+#. Tag: emphasis
+#: Controls.xml:101 Controls.xml:785
+#, no-c-format
+msgid "Example"
+msgstr "Beispiel"
+
+#. Tag: literal
+#: Controls.xml:116
+#, no-c-format
+msgid "&lt;s:convertDateTime&gt;"
+msgstr "&lt;s:convertDateTime&gt;"
+
+#. Tag: para
+#: Controls.xml:123
+#, no-c-format
+msgid "Perform date or time conversions in the Seam timezone."
+msgstr "Datums- und Zeitkonversionen in die Seam Zeitzone durchführen."
+
+#. Tag: literal
+#: Controls.xml:141
+#, no-c-format
+msgid "&lt;s:convertEnum&gt;"
+msgstr "&lt;s:convertEnum&gt;"
+
+#. Tag: para
+#: Controls.xml:148
+#, no-c-format
+msgid ""
+"Assigns an enum converter to the current component. This is primarily useful "
+"for radio button and dropdown controls."
+msgstr "Ordnet der aktuellen Komponente einen enum-Konverter zu. Dies ist besonders nützlich bei Radio-Schaltflächen und Drop-Down-Steuerungen."
+
+#. Tag: literal
+#: Controls.xml:166
+#, no-c-format
+msgid "&lt;s:convertEntity&gt;"
+msgstr "&lt;s:convertEntity&gt;"
+
+#. Tag: para
+#: Controls.xml:173
+#, no-c-format
+msgid ""
+"Assigns an entity converter to the current component. This is primarily "
+"useful for radio button and dropdown controls."
+msgstr "Ordnet der aktuellen Komponente einen Entity-Konverter zu. Dies ist besonders nützlich bei Radio-Schaltflächen und Drop-Down-Steuerungen."
+
+#. Tag: para
+#: Controls.xml:176
+#, no-c-format
+msgid ""
+"The converter works with any entity which has an <literal>@Id</literal> "
+"annotation - either simple or composite. If your <emphasis>Managed "
+"Persistence Context</emphasis> isn&#39;t called <literal>entityManager</"
+"literal>, then you need to set it in components.xml:"
+msgstr ""
+"Der Konverter funktioniert mit jeder Entity, die eine <literal>@Id</literal>-Annotation besitzt - entweder einfach oder zusammengesetzt. Falls Ihr <emphasis>gemanagter "
+"Persistenzkontext</emphasis> nicht <literal>entityManager</"
+"literal> heißt, so müssen Sie ihn in der components.xml einstellen:"
+
+#. Tag: emphasis
+#: Controls.xml:186 Controls.xml:1002
+#, no-c-format
+msgid "Configuration"
+msgstr "Konfiguration"
+
+#. Tag: programlisting
+#: Controls.xml:188
+#, no-c-format
+msgid ""
+"&lt;component name=\"org.jboss.seam.ui.entityConverter\"&gt;\n"
+"      &lt;property name=\"entityManager\"&gt;#{em}&lt;/property&gt;\n"
+"  &lt;/component&gt;"
+msgstr ""
+"&lt;component name=\"org.jboss.seam.ui.entityConverter\"&gt;\n"
+"      &lt;property name=\"entityManager\"&gt;#{em}&lt;/property&gt;\n"
+"  &lt;/component&gt;"
+
+#. Tag: programlisting
+#: Controls.xml:192
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{person.continent}\" required=\"true\"&gt;\n"
+"    &lt;s:selectItems value=\"#{continents.resultList}\" var=\"continent\" "
+"label=\"#{continent.name}\" noSelectionLabel=\"Please Select...\"/&gt;\n"
+"    &lt;s:convertEntity /&gt;\n"
+"&lt;/h:selectOneMenu&gt;"
+msgstr ""
+"&lt;h:selectOneMenu value=\"#{person.continent}\" required=\"true\"&gt;\n"
+"    &lt;s:selectItems value=\"#{continents.resultList}\" var=\"continent\" "
+"label=\"#{continent.name}\" noSelectionLabel=\"Please Select...\"/&gt;\n"
+"    &lt;s:convertEntity /&gt;\n"
+"&lt;/h:selectOneMenu&gt;"
+
+#. Tag: literal
+#: Controls.xml:198
+#, no-c-format
+msgid "&lt;s:enumItem&gt;"
+msgstr "&lt;s:enumItem&gt;"
+
+#. Tag: para
+#: Controls.xml:205
+#, no-c-format
+msgid "Creates a <literal>SelectItem</literal> from an enum value."
+msgstr "Erstellt ein <literal>SelectItem</literal> aus einem enum-Wert."
+
+#. Tag: para
+#: Controls.xml:213
+#, no-c-format
+msgid ""
+"<literal>enumValue</literal> &mdash; the string representation of the enum "
+"value."
+msgstr "<literal>enumValue</literal> &mdash; die String Repräsentation des enum-Werts."
+
+#. Tag: para
+#: Controls.xml:218
+#, no-c-format
+msgid ""
+"<literal>label</literal> &mdash; the label to be used when rendering the "
+"<literal>SelectItem</literal>."
+msgstr ""
+"<literal>label</literal> &mdash; das beim Rendern von "
+"<literal>SelectItem</literal> zu verwendende Label."
+
+#. Tag: literal
+#: Controls.xml:234
+#, no-c-format
+msgid "&lt;s:selectItems&gt;"
+msgstr "&lt;s:selectItems&gt;"
+
+#. Tag: para
+#: Controls.xml:241
+#, no-c-format
+msgid ""
+"Creates a <literal>List&lt;SelectItem&gt;</literal> from a List, Set, "
+"DataModel or Array."
+msgstr ""
+"Erstellt eine <literal>List&lt;SelectItem&gt;</literal> aus einer Liste, Set, "
+"DataModel oder Datenelement (Array)."
+
+#. Tag: para
+#: Controls.xml:249
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; an EL expression specifying the data that "
+"backs the <literal>List&lt;SelectItem&gt;</literal>"
+msgstr "<literal>value</literal> &mdash; ein EL-Ausdruck, der die <literal>List&lt;SelectItem&gt;</literal> sichernden Daten festlegt"
+
+#. Tag: para
+#: Controls.xml:254
+#, no-c-format
+msgid ""
+"<literal>var</literal> &mdash; defines the name of the local variable that "
+"holds the current object during iteration"
+msgstr "<literal>var</literal> &mdash; definiert den Namen der lokalen Variable, die das aktuelle Objekt während der Iteration enthält"
+
+#. Tag: para
+#: Controls.xml:259
+#, no-c-format
+msgid ""
+"<literal>label</literal> &mdash; the label to be used when rendering the "
+"<literal>SelectItem</literal>. Can reference the <literal>var</literal> "
+"variable"
+msgstr "<literal>label</literal> &mdash; das beim Rendern von <literal>SelectItem</literal> zu verwendende Label. Kann die <literal>var</literal>-Variable referenzieren"
+
+#. Tag: para
+#: Controls.xml:264
+#, no-c-format
+msgid ""
+"<literal>disabled</literal> &mdash; if true the <literal>SelectItem</"
+"literal> will be rendered disabled. Can reference the <literal>var</literal> "
+"variable"
+msgstr "<literal>disabled</literal> &mdash; Falls wahr, wird das <literal>SelectItem</literal> als deaktiviert gerendert. Kann die <literal>var</literal>-Variable referenzieren"
+
+#. Tag: para
+#: Controls.xml:269
+#, no-c-format
+msgid ""
+"<literal>noSelectionLabel</literal> &mdash; specifies the (optional) label "
+"to place at the top of list (if <literal>required=\"true\"</literal> is also "
+"specified then selecting this value will cause a validation error)"
+msgstr ""
+"<literal>noSelectionLabel</literal> &mdash; legt das (optionale) Label "
+"fest, das oben auf der Liste platziert werden soll (falls <literal>required=\"true\"</literal> ebenfalls festgelegt ist, wenn dieser Wert ausgewählt wird, so wird ein Validierungsfehler gemeldet)"
+
+#. Tag: para
+#: Controls.xml:274
+#, no-c-format
+msgid ""
+"<literal>hideNoSelectionLabel</literal> &mdash; if true, the "
+"<literal>noSelectionLabel</literal> will be hidden when a value is selected"
+msgstr ""
+"<literal>hideNoSelectionLabel</literal> &mdash; falls \"true\" wird der "
+"<literal>noSelectionLabel</literal> verborgen, wenn ein Wert gewählt wird"
+
+#. Tag: programlisting
+#: Controls.xml:283
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{person.age}\"  converter=\"#{converters."
+"ageConverter}\"&gt;\n"
+"    &lt;s:selectItems value=\"#{ages}\" var=\"age\" label=\"#{age}\" /&gt;\n"
+"&lt;/h:selectOneMenu&gt;"
+msgstr ""
+"&lt;h:selectOneMenu value=\"#{person.age}\"  converter=\"#{converters."
+"ageConverter}\"&gt;\n"
+"    &lt;s:selectItems value=\"#{ages}\" var=\"age\" label=\"#{age}\" /&gt;\n"
+"&lt;/h:selectOneMenu&gt;"
+
+#. Tag: literal
+#: Controls.xml:290
+#, no-c-format
+msgid "&lt;s:graphicImage&gt;"
+msgstr "&lt;s:graphicImage&gt;"
+
+#. Tag: para
+#: Controls.xml:297
+#, no-c-format
+msgid ""
+"An extended <literal>&lt;h:graphicImage&gt;</literal> that allows the image "
+"to be created in a Seam Component; further transforms can be applied to the "
+"image. <emphasis>Facelets only.</emphasis>"
+msgstr "Ein erweitertes <literal>&lt;h:graphicImage&gt;</literal>, das es gestattet, dass die Abbildung in einer Seam-Komponente erstellt wird; weitere Transformationen können an der Abbildung vorgenommen werden. <emphasis>Nur Facelets.</emphasis>"
+
+#. Tag: para
+#: Controls.xml:300
+#, no-c-format
+msgid ""
+"All attributes for <literal>&lt;h:graphicImage&gt;</literal> are supported, "
+"as well as:"
+msgstr "Alle Attribute für <literal>&lt;h:graphicImage&gt;</literal> werden unterstützt, ebenso wie:"
+
+#. Tag: para
+#: Controls.xml:308
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; image to display. Can be a path "
+"<literal>String</literal> (loaded from the classpath), a <literal>byte[]</"
+"literal>, a <literal>java.io.File</literal>, a <literal>java.io.InputStream</"
+"literal> or a <literal>java.net.URL</literal>. Currently supported image "
+"formats are <literal>image/png</literal>, <literal>image/jpeg</literal> and "
+"<literal>image/gif</literal>."
+msgstr "<literal>value</literal> &mdash; anzuzeigende Abbildung. Kann ein Pfad <literal>String</literal> (aus dem Klassenpfad geladen), ein <literal>byte[]</literal>, eine <literal>java.io.File</literal>, ein <literal>java.io.InputStream</literal> oder eine <literal>java.net.URL</literal> sein. Die gegenwärtig unterstützten Abbildungsformate sind <literal>image/png</literal>, <literal>image/jpeg</literal> und <literal>image/gif</literal>."
+
+#. Tag: para
+#: Controls.xml:313
+#, no-c-format
+msgid ""
+"<literal>fileName</literal> &mdash; if not specified the served image will "
+"have a generated file name. If you want to name your file, you should "
+"specify it here. This name should be unique"
+msgstr "<literal>fileName</literal> &mdash; Falls nicht festgelegt besitzt die gelieferte Abbildung einen generierten Dateinamen. Falls Sie Ihre Datei benennen möchten, sollten Sie dies hier festlegen.Dieser Name sollte eindeutig sein."
+
+#. Tag: emphasis
+#: Controls.xml:319
+#, no-c-format
+msgid "Transformations"
+msgstr "Transformationen"
+
+#. Tag: para
+#: Controls.xml:321
+#, no-c-format
+msgid ""
+"To apply a transform to the image, you would nest a tag specifying the "
+"transform to apply. Seam currently supports these transforms:"
+msgstr "Um eine Transformation an der Abbildung anzuwenden, würden Sie ein die Transformation festlegendes Tag verschachteln. Seam unterstützt derzeit folgende Transformationen:"
+
+#. Tag: literal
+#: Controls.xml:326
+#, no-c-format
+msgid "&lt;s:transformImageSize&gt;"
+msgstr "&lt;s:transformImageSize&gt;"
+
+#. Tag: para
+#: Controls.xml:330
+#, no-c-format
+msgid "<literal>width</literal> &mdash; new width of the image"
+msgstr "<literal>width</literal> &mdash; die neue Breite der Abbildung"
+
+#. Tag: para
+#: Controls.xml:335
+#, no-c-format
+msgid "<literal>height</literal> &mdash; new height of the image"
+msgstr "<literal>height</literal> &mdash; die neue Höhe der Abbildung"
+
+#. Tag: para
+#: Controls.xml:340
+#, no-c-format
+msgid ""
+"<literal>maintainRatio</literal> &mdash; if <literal>true</literal>, and "
+"<emphasis>one</emphasis> of <literal>width</literal>/<literal>height</"
+"literal> are specified, the image will be resized with the dimension not "
+"specified being calculated to maintain the aspect ratio."
+msgstr ""
+"<literal>maintainRatio</literal> &mdash; Falls <literal>true</literal> und "
+"<emphasis>eines</emphasis> von <literal>width</literal>/<literal>height</literal> festgelegt sind, wird die Größe der Abbildung angepasst, wobei die nicht angegeben Dimension berechnet wird, um das Seitenverhältnis beizubehalten."
+
+#. Tag: para
+#: Controls.xml:345
+#, no-c-format
+msgid "<literal>factor</literal> &mdash; scale the image by the given factor"
+msgstr "<literal>factor</literal> &mdash; Abbildung um angegebenen Faktor erhöhen"
+
+#. Tag: literal
+#: Controls.xml:353
+#, no-c-format
+msgid "&lt;s:transformImageBlur&gt;"
+msgstr "&lt;s:transformImageBlur&gt;"
+
+#. Tag: para
+#: Controls.xml:357
+#, no-c-format
+msgid ""
+"<literal>radius</literal> &mdash; perform a convolution blur with the given "
+"radius"
+msgstr "<literal>radius</literal> &mdash; Einen \"Convolution Blur\" mit dem angegebenen Radius durchführen"
+
+#. Tag: literal
+#: Controls.xml:365
+#, no-c-format
+msgid "&lt;s:transformImageType&gt;"
+msgstr "&lt;s:transformImageType&gt;"
+
+#. Tag: para
+#: Controls.xml:369
+#, no-c-format
+msgid ""
+"<literal>contentType</literal> &mdash; alter the type of the image to either "
+"<literal>image/jpeg</literal> or <literal>image/png</literal>"
+msgstr ""
+"<literal>contentType</literal> &mdash; den Abbildungstyp auf entweder "
+"<literal>image/jpeg</literal> or <literal>image/png</literal> ändern"
+
+#. Tag: para
+#: Controls.xml:377
+#, no-c-format
+msgid ""
+"It&#39;s easy to create your own transform - create a <literal>UIComponent</"
+"literal> which <literal>implements</literal><literal>org.jboss.seam.ui."
+"graphicImage.ImageTransform</literal>. Inside the <literal>applyTransform()</"
+"literal>method use <literal>image.getBufferedImage()</literal> to get the "
+"original image and <literal>image.setBufferedImage()</literal> to set your "
+"transformed image. Transforms are applied in the order specified in the view."
+msgstr ""
+"Es ist ganz einfach Ihre eigene Transformation zu - erstellten Sie eine <literal>UIComponent</literal>, die <literal>org.jboss.seam.ui."
+"graphicImage.ImageTransform</literal> <literal>implementiert</literal>. Verwenden Sie innerhalb der <literal>applyTransform()</"
+"literal>-Methode <literal>image.getBufferedImage()</literal>, um die ursprüngliche Abbildung zu erlangen und <literal>image.setBufferedImage()</literal>, um Ihre transformierte"
+"Abbildung einzustellen. Transformationen werden in der in der Ansicht festgelegten Reihenfolge angewendet."
+
+#. Tag: literal
+#: Controls.xml:391
+#, no-c-format
+msgid "&lt;s:decorate&gt;"
+msgstr "&lt;s:decorate&gt;"
+
+#. Tag: para
+#: Controls.xml:398
+#, no-c-format
+msgid ""
+"\"Decorate\" a JSF input field when validation fails or when "
+"<literal>required=\"true\"</literal> is set."
+msgstr "\"Dekorieren\" Sie ein JSF-Eingabefeld, wenn die Validierung fehlschlägt oder wenn <literal>required=\"true\"</literal> eingestellt ist."
+
+#. Tag: literal
+#: Controls.xml:418
+#, no-c-format
+msgid "&lt;s:layoutForm&gt;"
+msgstr "&lt;s:layoutForm&gt;"
+
+#. Tag: para
+#: Controls.xml:425
+#, no-c-format
+msgid ""
+"A layout component for producing a \"standard\" form layout. Each child "
+"component will be treated as a row, and if the child is a <literal>&lt;s:"
+"decorate&gt;</literal>, additional formatting will be applied:"
+msgstr "Eine Layout-Komponente zur Produktion eines \"Standard\"-Formular-Layouts. Jede untergeordnete Komponente wird als Reihe behandelt, und wenn die untergeordnete Komponente ein <literal>&lt;s:decorate&gt;</literal> ist, wird zusätzliche Formattierung angewendet:"
+
+#. Tag: para
+#: Controls.xml:428
+#, no-c-format
+msgid ""
+"Label &mdash; if a <literal>label</literal> facet is on the <literal>&lt;s:"
+"decorate&gt;</literal> then it&#39;s contents will be used as the label for "
+"this field. The labels are rendered right-aligned in a column"
+msgstr ""
+"Label &mdash; Ist ein <literal>label</literal> Facet auf dem <literal>&lt;s:"
+"decorate&gt;</literal> so werden dessen Inhalte als Label für "
+"dieses Feld verwendet. Die Labels werden in einer Spalte als rechts ausgerichtet gerendert."
+
+#. Tag: para
+#: Controls.xml:431
+#, no-c-format
+msgid ""
+"Some further decoration facets are supported - <literal>beforeLabel</"
+"literal>, <literal>afterLabel</literal>, <literal>aroundLabel</literal>, "
+"<literal>beforeInvalidLabel</literal>, <literal>afterInvalidLabel</literal> "
+"and <literal>aroundInvalidLabel</literal>."
+msgstr "Einige weitere \"Decoration-Facets\" werden unterstützt - <literal>beforeLabel</literal>, <literal>afterLabel</literal>, <literal>aroundLabel</literal>, <literal>beforeInvalidLabel</literal>, <literal>afterInvalidLabel</literal> und <literal>aroundInvalidLabel</literal>."
+
+#. Tag: para
+#: Controls.xml:436
+#, no-c-format
+msgid ""
+"Other text &mdash; if a <literal>belowLabel</literal> facet or/and a "
+"<literal>belowField</literal> facet are present on <literal>&lt;s:"
+"decorate&gt;</literal> then it&#39;s contents will be placed below the label "
+"or the field"
+msgstr ""
+"Anderer Text &mdash; Falls ein <literal>belowLabel</literal>-Facet oder/und ein <literal>belowField</literal>-Facet auf <literal>&lt;s:"
+"decorate&gt;</literal> vorhanden sind, so werden Inhalte unter dem Label "
+"oder dem Feld platziert."
+
+#. Tag: para
+#: Controls.xml:441
+#, no-c-format
+msgid ""
+"Required &mdash; if <literal>required=\"true\"</literal> is set on the "
+"field, then the <literal>aroundRequiredField</literal>, "
+"<literal>beforeRequiredField</literal>, <literal>afterRequiredField</"
+"literal>, <literal>aroundRequiredLabel</literal>, "
+"<literal>beforeRequiredLabel</literal> and <literal>afterRequiredLabel</"
+"literal> will be applied."
+msgstr ""
+"Erforderlich &mdash; Falls <literal>required=\"true\"</literal> bei dem Feld eingestellt ist, dann werden <literal>aroundRequiredField</literal>, "
+"<literal>beforeRequiredField</literal>, <literal>afterRequiredField</"
+"literal>, <literal>aroundRequiredLabel</literal>, "
+"<literal>beforeRequiredLabel</literal> und <literal>afterRequiredLabel</"
+"literal> angewendet."
+
+#. Tag: programlisting
+#: Controls.xml:457
+#, no-c-format
+msgid ""
+"&lt;s:layoutForm&gt;\n"
+"   &lt;f:facet name=\"aroundInvalidField\"&gt;\n"
+"       &lt;s:span styleClass=\"error\"/&gt;\n"
+"   &lt;/f:facet&gt;\n"
+"   &lt;f:facet name=\"afterInvalidField\"&gt;\n"
+"       &lt;s:message /&gt;\n"
+"   &lt;/f:facet&gt;\n"
+"   &lt;f:facet name=\"beforeRequiredLabel\"&gt;\n"
+"           &lt;s:span&gt;&lowast;&lt;/s:span&gt;\n"
+"   &lt;/f:facet&gt;\n"
+"   &lt;f:facet name=\"aroundLabel\"&gt;\n"
+"           &lt;s:span style=\"text-align:right;\" /&gt;\n"
+"   &lt;/f:facet&gt;\n"
+"   &lt;f:facet name=\"aroundInvalidLabel\"&gt;\n"
+"           &lt;s:span style=\"text-align:right;\" styleClass=\"error\" /"
+"&gt;\n"
+"   &lt;/f:facet&gt;\n"
+"   &lt;s:decorate&gt;\n"
+"        &lt;f:facet name=\"label\"&gt;\n"
+"                    &lt;h:outputText value=\"Name\" /&gt;\n"
+"        &lt;/f:facet&gt;\n"
+"        &lt;h:inputText value=\"#{person.name}\" required=\"true\"/&gt;\n"
+"        &lt;f:facet name=\"belowField\"&gt;\n"
+"            &lt;h:outputText styleClass=\"help\" \n"
+"               value=\"Enter your name as it appears \n"
+"                  on your passport\" /&gt;\n"
+"        &lt;/f:facet&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"&lt;/s:layoutForm&gt;"
+msgstr ""
+"&lt;s:layoutForm&gt;\n"
+"   &lt;f:facet name=\"aroundInvalidField\"&gt;\n"
+"       &lt;s:span styleClass=\"error\"/&gt;\n"
+"   &lt;/f:facet&gt;\n"
+"   &lt;f:facet name=\"afterInvalidField\"&gt;\n"
+"       &lt;s:message /&gt;\n"
+"   &lt;/f:facet&gt;\n"
+"   &lt;f:facet name=\"beforeRequiredLabel\"&gt;\n"
+"           &lt;s:span&gt;&lowast;&lt;/s:span&gt;\n"
+"   &lt;/f:facet&gt;\n"
+"   &lt;f:facet name=\"aroundLabel\"&gt;\n"
+"           &lt;s:span style=\"text-align:right;\" /&gt;\n"
+"   &lt;/f:facet&gt;\n"
+"   &lt;f:facet name=\"aroundInvalidLabel\"&gt;\n"
+"           &lt;s:span style=\"text-align:right;\" styleClass=\"error\" /"
+"&gt;\n"
+"   &lt;/f:facet&gt;\n"
+"   &lt;s:decorate&gt;\n"
+"        &lt;f:facet name=\"label\"&gt;\n"
+"                    &lt;h:outputText value=\"Name\" /&gt;\n"
+"        &lt;/f:facet&gt;\n"
+"        &lt;h:inputText value=\"#{person.name}\" required=\"true\"/&gt;\n"
+"        &lt;f:facet name=\"belowField\"&gt;\n"
+"            &lt;h:outputText styleClass=\"help\" \n"
+"               value=\"Enter your name as it appears \n"
+"                  on your passport\" /&gt;\n"
+"        &lt;/f:facet&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"&lt;/s:layoutForm&gt;"
+
+#. Tag: literal
+#: Controls.xml:472
+#, no-c-format
+msgid "&lt;s:message&gt;"
+msgstr "&lt;s:message&gt;"
+
+#. Tag: para
+#: Controls.xml:479
+#, no-c-format
+msgid "\"Decorate\" a JSF input field with the validation error message."
+msgstr "\"Dekorieren\" Sie ein JSF-Eingabefeld mit der Fehlermeldung der Validierung."
+
+#. Tag: literal
+#: Controls.xml:499
+#, no-c-format
+msgid "&lt;s:span&gt;"
+msgstr "&lt;s:span&gt;"
+
+#. Tag: para
+#: Controls.xml:506
+#, no-c-format
+msgid "Render a HTML <literal>&lt;span&gt;</literal>."
+msgstr "Rendert ein HTML <literal>&lt;span&gt;</literal>."
+
+#. Tag: literal
+#: Controls.xml:526
+#, no-c-format
+msgid "&lt;s:div&gt;"
+msgstr "&lt;s:div&gt;"
+
+#. Tag: para
+#: Controls.xml:533
+#, no-c-format
+msgid "Render a HTML <literal>&lt;div&gt;</literal>."
+msgstr "Rendert ein HTML <literal>&lt;div&gt;</literal>."
+
+#. Tag: literal
+#: Controls.xml:553
+#, no-c-format
+msgid "&lt;s:fragment&gt;"
+msgstr "&lt;s:fragment&gt;"
+
+#. Tag: para
+#: Controls.xml:560
+#, no-c-format
+msgid ""
+"A non-rendering component useful for enabling/disabling rendering of it&#39;"
+"s children."
+msgstr "Eine nicht-rendernde Komponente, die nützlich für das Aktivieren/Deaktivieren ihre Untergeordneten ist."
+
+#. Tag: literal
+#: Controls.xml:580
+#, no-c-format
+msgid "&lt;s:cache&gt;"
+msgstr "&lt;s:cache&gt;"
+
+#. Tag: para
+#: Controls.xml:587
+#, no-c-format
+msgid ""
+"Cache the rendered page fragment using JBoss Cache. Note that <literal>&lt;s:"
+"cache&gt;</literal> actually uses the instance of JBoss Cache managed by the "
+"built-in <literal>pojoCache</literal> component."
+msgstr "Speichern Sie das gerenderte Seitenfragment mittels JBoss Cache. Beachten Sie, dass <literal>&lt;s:cache&gt;</literal> tatsächlich die Instanz von JBoss Cache verwendet, die durch die eingebaute <literal>pojoCache</literal>-Komponente gemanagt wird."
+
+#. Tag: para
+#: Controls.xml:595
+#, no-c-format
+msgid ""
+"<literal>key</literal> &mdash; the key to cache rendered content, often a "
+"value expression. For example, if we were caching a page fragment that "
+"displays a document, we might use <literal>key=\"Document-#{document.id}\"</"
+"literal>."
+msgstr "<literal>key</literal> &mdash; Der Key zum cachen gerenderter Inhalte ist oftmals ein Werteausdruck (\"Value Expression\"). Wenn wir etwa ein ein Dokument anzeigendes Seitenfragment cachen, so könnten wir <literal>key=\"Document-#{document.id}\"</literal> verwenden."
+
+#. Tag: para
+#: Controls.xml:600
+#, no-c-format
+msgid ""
+"<literal>enabled</literal> &mdash; a value expression that determines if the "
+"cache should be used."
+msgstr "<literal>enabled</literal> &mdash; Ein Werteausdruck (\"Value Expression\"), der festlegt, ob das Cache verwendet werden soll."
+
+#. Tag: para
+#: Controls.xml:605
+#, no-c-format
+msgid ""
+"<literal>region</literal> &mdash; a JBoss Cache node to use (different nodes "
+"can have different expiry policies)."
+msgstr ""
+"<literal>region</literal> &mdash; Ein JBoss Cache Node der zu verwenden ist "
+"(verschiedene Nodes können unterschiedliche Ablaufrichtlinien besitzen)."
+
+#. Tag: literal
+#: Controls.xml:621
+#, no-c-format
+msgid "&lt;s:link&gt;"
+msgstr "&lt;s:link&gt;"
+
+#. Tag: para
+#: Controls.xml:628
+#, no-c-format
+msgid ""
+"A link that supports invocation of an action with control over conversation "
+"propagation. <emphasis>Does not submit the form.</emphasis>"
+msgstr "Ein Link, das Invocation einer Action mit \"Control over Conversation\" Fortpflanzung unterstützt. <emphasis>Reicht das Formular nicht ein.</emphasis>"
+
+#. Tag: para
+#: Controls.xml:636 Controls.xml:697
+#, no-c-format
+msgid "<literal>value</literal> &mdash; the label."
+msgstr "<literal>value</literal> &mdash; Das Label."
+
+#. Tag: para
+#: Controls.xml:641 Controls.xml:702
+#, no-c-format
+msgid ""
+"<literal>action</literal> &mdash; a method binding that specified the action "
+"listener."
+msgstr "<literal>action</literal> &mdash; ein Methoden-Binding, das den Action-Listener festlegt."
+
+#. Tag: para
+#: Controls.xml:646 Controls.xml:707
+#, no-c-format
+msgid "<literal>view</literal> &mdash; the JSF view id to link to."
+msgstr "<literal>view</literal> &mdash; die JSF Ansichts-ID, zu der verlinkt werden soll."
+
+#. Tag: para
+#: Controls.xml:651 Controls.xml:712
+#, no-c-format
+msgid "<literal>fragment</literal> &mdash; the fragment identifier to link to."
+msgstr ""
+"<literal>fragment</literal> &mdash; Der Fragment-Bezeichner zu dem verlinkt "
+"wird."
+
+#. Tag: para
+#: Controls.xml:656 Controls.xml:717
+#, no-c-format
+msgid "<literal>disabled</literal> &mdash; is the link disabled?"
+msgstr "<literal>disabled</literal> &mdash; Ist das Link deaktiviert?"
+
+#. Tag: para
+#: Controls.xml:661 Controls.xml:722 Controls.xml:911
+#, no-c-format
+msgid ""
+"<literal>propagation</literal> &mdash; determines the conversation "
+"propagation style: <literal>begin</literal>, <literal>join</literal>, "
+"<literal>nest</literal>, <literal>none</literal> or <literal>end</literal>."
+msgstr ""
+"<literal>propagation</literal> &mdash; legt den Fortpflanzungsstil der Konversation fest: <literal>begin</literal>, <literal>join</literal>, "
+"<literal>nest</literal>, <literal>none</literal> oder <literal>end</literal>."
+
+#. Tag: para
+#: Controls.xml:666 Controls.xml:727 Controls.xml:916
+#, no-c-format
+msgid ""
+"<literal>pageflow</literal> &mdash; a pageflow definition to begin. (This is "
+"only useful when <literal>propagation=\"begin\"</literal> or "
+"<literal>propagation=\"join\"</literal>.)"
+msgstr ""
+"<literal>pageflow</literal> &mdash; Eine Pageflow-Definition, die beginnen soll. (Dies ist nur bei <literal>propagation=\"begin\"</literal> oder "
+"<literal>propagation=\"join\"</literal> von Nutzen)."
+
+#. Tag: literal
+#: Controls.xml:682
+#, no-c-format
+msgid "&lt;s:button&gt;"
+msgstr "&lt;s:button&gt;"
+
+#. Tag: para
+#: Controls.xml:689
+#, no-c-format
+msgid ""
+"A button that supports invocation of an action with control over "
+"conversation propagation. <emphasis>Does not submit the form.</emphasis>"
+msgstr "Eine Schaltfläche, die Invocation einer Action mit \"Control over Conversation\" Fortpflanzung unterstützt. <emphasis>Reicht das Formular nicht ein.</emphasis>"
+
+#. Tag: literal
+#: Controls.xml:743
+#, no-c-format
+msgid "&lt;s:selectDate&gt;"
+msgstr "&lt;s:selectDate&gt;"
+
+#. Tag: para
+#: Controls.xml:750
+#, no-c-format
+msgid ""
+"Displays a dynamic date picker component that selects a date for the "
+"specified input field. The body of the <literal>selectDate</literal> element "
+"should contain HTML elements, such as text or an image, that prompt the user "
+"to click to display the date picker. The date picker <emphasis>must</"
+"emphasis> be styled using CSS. An example CSS file can be found in the Seam "
+"booking demo as <literal>date.css</literal>, or can be generated using seam-"
+"gen. The CSS styles used to control the appearance of the date picker are "
+"also described below."
+msgstr ""
+"Zeigt eine dynamische Datumsauswahlkomponente an, die ein Datum für das festgelegt Eingabefeld auswählt. Der Textkörper des <literal>selectDate</literal>-Elements sollte HTML-Elemente wie Text oder eine Abbildung enthalten, die den Benutzer dazu auffordern auf die Datumsauswahl zu klicken. Die Datumsauswahl <emphasis>muss</"
+"emphasis> unter Verwendung von CSS gestylt werden. Eine Beispiel CSS-Datei finden Sie in der Seam Buchungs-Demo als <literal>date.css</literal> oder kann mittels seam-gen generiert werden. Die zur Steuerung des Erscheinungsbilds der Datumsauswahl verwendeten CSS-Styles sind unten beschrieben."
+
+#. Tag: para
+#: Controls.xml:758
+#, no-c-format
+msgid ""
+"<literal>for</literal> &mdash; The id of the input field that the date "
+"picker will insert the selected date into."
+msgstr "<literal>for</literal> &mdash; Die ID des Eingabefelds, in das die Datumsauswahl das gewählte Datum einfügt."
+
+#. Tag: para
+#: Controls.xml:763
+#, no-c-format
+msgid ""
+"<literal>dateFormat</literal> &mdash; The date format string. This should "
+"match the date format of the input field."
+msgstr "<literal>dateFormat</literal> &mdash; Der Datumsformat-String. Dies sollte mit dem Datumsformat des Eingabefelds übereinstimmen."
+
+#. Tag: para
+#: Controls.xml:768
+#, no-c-format
+msgid ""
+"<literal>startYear</literal> &mdash; The popup year selector range will "
+"start at this year."
+msgstr "<literal>startYear</literal> &mdash; Der Popup Jahr-Selektor beginnt mit diesem Jahr."
+
+#. Tag: para
+#: Controls.xml:773
+#, no-c-format
+msgid ""
+"<literal>endYear</literal> &mdash; The popup year selector range will end at "
+"this year."
+msgstr "<literal>endYear</literal> &mdash; Der Popup Jahr-Selektor endet mit diesem Jahr."
+
+#. Tag: programlisting
+#: Controls.xml:782
+#, no-c-format
+msgid ""
+"&lt;div class=\"row\"&gt;\n"
+"    &lt;h:outputLabel for=\"dob\"&gt;Date of birth&lt;em&gt;*&lt;/em&gt;&lt;/"
+"h:outputLabel&gt;\n"
+"    &lt;h:inputText id=\"dob\" value=\"#{user.dob}\" required=\"true\"&gt;\n"
+"      &lt;s:convertDateTime pattern=\"MM/dd/yyyy\"/&gt;\n"
+"    &lt;/h:inputText&gt;\n"
+"    &lt;s:selectDate for=\"dob\" startYear=\"1910\" endYear=\"2007\"&gt;&lt;"
+"img src=\"img/datepicker.png\"/&gt;&lt;/s:selectDate&gt;\n"
+"    &lt;div class=\"validationError\"&gt;&lt;h:message for=\"dob\"/&gt;&lt;/"
+"div&gt;\n"
+"  &lt;/div&gt;"
+msgstr ""
+"&lt;div class=\"row\"&gt;\n"
+"    &lt;h:outputLabel for=\"dob\"&gt;Date of birth&lt;em&gt;*&lt;/em&gt;&lt;/"
+"h:outputLabel&gt;\n"
+"    &lt;h:inputText id=\"dob\" value=\"#{user.dob}\" required=\"true\"&gt;\n"
+"      &lt;s:convertDateTime pattern=\"MM/dd/yyyy\"/&gt;\n"
+"    &lt;/h:inputText&gt;\n"
+"    &lt;s:selectDate for=\"dob\" startYear=\"1910\" endYear=\"2007\"&gt;&lt;"
+"img src=\"img/datepicker.png\"/&gt;&lt;/s:selectDate&gt;\n"
+"    &lt;div class=\"validationError\"&gt;&lt;h:message for=\"dob\"/&gt;&lt;/"
+"div&gt;\n"
+"  &lt;/div&gt;"
+
+#. Tag: emphasis
+#: Controls.xml:796
+#, no-c-format
+msgid "CSS Styling"
+msgstr "CSS-Styling"
+
+#. Tag: para
+#: Controls.xml:798
+#, no-c-format
+msgid ""
+"The following list describes the CSS class names that are used to control "
+"the style of the selectDate control."
+msgstr "Die folgende Liste beschreibt die CSS Klassennamen, die zur Steuerung des Stils der selectDate-Steuerung verwendet werden."
+
+#. Tag: para
+#: Controls.xml:803
+#, no-c-format
+msgid ""
+"<literal>seam-date</literal> &mdash; This class is applied to the outer "
+"<literal>div</literal> containing the popup calendar. (1) It is also applied "
+"to the <literal>table</literal> that controls the inner layout of the "
+"calendar. (2)"
+msgstr ""
+"<literal>seam-date</literal> &mdash; Diese Klasse wird am äußeren "
+"<literal>div</literal> angewendet, und enthält den Popup-Kalender. (1) Sie wird auch bei der <literal>table</literal> (Tabelle) angewendet, die das innere Layout des Kalenders steuert. (2)"
+
+#. Tag: para
+#: Controls.xml:808
+#, no-c-format
+msgid ""
+"<literal>seam-date-header</literal> &mdash; This class is applied to the "
+"calendar header table row (<literal>tr</literal>) and header table cells "
+"(<literal>td</literal>). (3)"
+msgstr ""
+"<literal>seam-date-header</literal> &mdash; Diese Klasse wird an zeile des Kalenders (<literal>tr</literal>) und Zellen der Tabellenkopfzeile "
+"(<literal>td</literal>) angewendet. (3)"
+
+#. Tag: para
+#: Controls.xml:813
+#, no-c-format
+msgid ""
+"<literal>seam-date-header-prevMonth</literal> &mdash; This class is applied "
+"to the \"previous month\" table cell, (<literal>td</literal>), which when "
+"clicked causes the calendar to display the month prior to the one currently "
+"displayed. (4)"
+msgstr "<literal>seam-date-header-prevMonth</literal> &mdash; Diese Klasse wird an der \"vorheriger Monat\" Tabellenzelle angewendet, (<literal>td</literal>), die beim Klicken darauf bewirkt, dass der Kalender den dem aktuell angezeigten Monat vorangegangenen Monat anzeigt. (4)"
+
+#. Tag: para
+#: Controls.xml:818
+#, no-c-format
+msgid ""
+"<literal>seam-date-header-nextMonth</literal> &mdash; This class is applied "
+"to the \"next month\" table cell, (<literal>td</literal>), which when "
+"clicked causes the calendar to display the month following the one currently "
+"displayed. (5)"
+msgstr "<literal>seam-date-header-nextMonth</literal> &mdash; Diese Klasse wird an der \"nächster Monat\" Tabellenzelle angewendet, (<literal>td</literal>), die beim Klicken darauf bewirkt, dass der Kalender den dem aktuell angezeigten Monat nachfolgenden Monat anzeigt. (5)"
+
+#. Tag: para
+#: Controls.xml:823
+#, no-c-format
+msgid ""
+"<literal>seam-date-headerDays</literal> &mdash; This class is applied to the "
+"calendar days header row (<literal>tr</literal>), which contains the names "
+"of the week days. (6)"
+msgstr "<literal>seam-date-headerDays</literal> &mdash; Diese Klasse wird an der Kalendertage-Kopfzeile angewendet (<literal>tr</literal>), die die Namen der Wochentage enthält. (6)"
+
+#. Tag: para
+#: Controls.xml:828
+#, no-c-format
+msgid ""
+"<literal>seam-date-footer</literal> &mdash; This class is applied to the "
+"calendar footer row (<literal>tr</literal>), which displays the current "
+"date. (7)"
+msgstr "<literal>seam-date-footer</literal> &mdash; Diese Klasse wird an der Fußzeilenreihe des Kalenders angewendet (<literal>tr</literal>), die das aktuelle Datum anzeigt. (7)"
+
+#. Tag: para
+#: Controls.xml:833
+#, no-c-format
+msgid ""
+"<literal>seam-date-inMonth</literal> &mdash; This class is applied to the "
+"table cell (<literal>td</literal>) elements that contain a date within the "
+"month currently displayed. (8)"
+msgstr "<literal>seam-date-inMonth</literal> &mdash; Diese Klasse wird an den Tabellenzellenelementen angewendet (<literal>td</literal>), die ein innerhalb des aktuell angezeigten Monats liegendes Datum enthalten. (8)"
+
+#. Tag: para
+#: Controls.xml:838
+#, no-c-format
+msgid ""
+"<literal>seam-date-outMonth</literal> &mdash; This class is applied to the "
+"table cell (<literal>td</literal>) elements that contain a date outside of "
+"the month currently displayed. (9)"
+msgstr "<literal>seam-date-outMonth</literal> &mdash; Diese Klasse wird an den Tabellenzellenelementen angewendet (<literal>td</literal>), die ein außerhalb des aktuell angezeigten Monats liegendes Datum enthalten. (9)"
+
+#. Tag: para
+#: Controls.xml:843
+#, no-c-format
+msgid ""
+"<literal>seam-date-selected</literal> &mdash; This class is applied to the "
+"table cell (<literal>td</literal>) element that contains the currently "
+"selected date. (10)"
+msgstr "<literal>seam-date-selected</literal> &mdash; Diese Klasse wird an dem Tabellenzellenelement angewendet (<literal>td</literal>), das das aktuell angezeigte Datum enthalten. (10)"
+
+#. Tag: para
+#: Controls.xml:848
+#, no-c-format
+msgid ""
+"<literal>seam-date-dayOff-inMonth</literal> &mdash; This class is applied to "
+"the table cell (<literal>td</literal>) elements that contain a \"day off\" "
+"date (i.e. weekend days, Saturday and Sunday) within the currently selected "
+"month. (11)"
+msgstr "<literal>seam-date-dayOff-inMonth</literal> &mdash; Diese Klasse wird an den Tabellenzellenelementen angewendet (<literal>td</literal>), die ein \"Tag frei\"-Datum (das heißt Wochenendtage, Samstag und Sonntag) innerhalb des aktuell ausgewählten Monats enthalten. (11)"
+
+#. Tag: para
+#: Controls.xml:853
+#, no-c-format
+msgid ""
+"<literal>seam-date-dayOff-outMonth</literal> &mdash; This class is applied "
+"to the table cell (<literal>td</literal>) elements that contain a \"day off"
+"\" date (i.e. weekend days, Saturday and Sunday) outside of the currently "
+"selected month. (12)"
+msgstr "<literal>seam-date-dayOff-outMonth</literal> &mdash; Diese Klasse wird an den Tabellenzellenelementen angewendet (<literal>td</literal>), die ein \"Tag frei\"-Datum (das heißt Wochenendtage, Samstag und Sonntag) außerhalb des aktuell angezeigten Monats liegendes Datum enthalten.(12)"
+
+#. Tag: para
+#: Controls.xml:858
+#, no-c-format
+msgid ""
+"<literal>seam-date-hover</literal> &mdash; This class is applied to the "
+"table cell (<literal>td</literal>) element over which the cursor is "
+"hovering. (13)"
+msgstr "<literal>seam-date-hover</literal> &mdash; Die Klasse wird beim Tabellenzellenelement (<literal>td</literal>) angewendet, über das der Cursor sich bewegt. (13) "
+
+#. Tag: para
+#: Controls.xml:863
+#, no-c-format
+msgid ""
+"<literal>seam-date-monthNames</literal> &mdash; This class is applied to the "
+"<literal>div</literal> control that contains the popup month selector. (14)"
+msgstr "<literal>seam-date-monthNames</literal> &mdash; Diese Klasse wird an der <literal>div</literal>-Steuerung angewendet, die den Popup-Monatsselektor enthält. (14)"
+
+#. Tag: para
+#: Controls.xml:868
+#, no-c-format
+msgid ""
+"<literal>seam-date-monthNameLink</literal> &mdash; This class is applied to "
+"the anchor (<literal>a</literal>) controls that contain the popup month "
+"names. (15)"
+msgstr "<literal>seam-date-monthNameLink</literal> &mdash; Diese Klasse wird an den \"Anchor\"-Steuerungen (<literal>a</literal>) angewendet, die die Popup-Monatsnamen enthalten. (15)"
+
+#. Tag: para
+#: Controls.xml:873
+#, no-c-format
+msgid ""
+"<literal>seam-date-years </literal> &mdash; This class is applied to the "
+"<literal>div</literal> control that contains the popup year selector. (16)"
+msgstr ""
+"<literal>seam-date-years </literal> &mdash; Diese Klasse wird an der "
+"<literal>div</literal>-Steuerung angewendet, die den Popup-Jahrselektor enthält. (16)"
+
+#. Tag: para
+#: Controls.xml:878
+#, no-c-format
+msgid ""
+"<literal>seam-date-yearLink</literal> &mdash; This class is applied to the "
+"anchor (<literal>a</literal>) controls that contain the popup years. (15)"
+msgstr "<literal>seam-date-yearLink</literal> &mdash; Diese Klasse wird an den \"Anchor\"-Steuerungen (<literal>a</literal>) angewendet, die die Popup-Jahre enthalten. (15)"
+
+#. Tag: literal
+#: Controls.xml:896
+#, no-c-format
+msgid "&lt;s:conversationPropagation&gt;"
+msgstr "&lt;s:conversationPropagation&gt;"
+
+#. Tag: para
+#: Controls.xml:903
+#, no-c-format
+msgid ""
+"Customize the conversation propagation for a command link or button (or "
+"similar JSF control). <emphasis>Facelets only.</emphasis>"
+msgstr "Anpassen der Konversationsfortpflanzung für ein Befehls-Link oder eine Schaltfläche (oder ähnliche JSF-Steuerung). <emphasis>Nur Facelets.</emphasis>"
+
+#. Tag: literal
+#: Controls.xml:932
+#, no-c-format
+msgid "&lt;s:conversationId&gt;"
+msgstr "&lt;s:conversationId&gt;"
+
+#. Tag: para
+#: Controls.xml:939
+#, no-c-format
+msgid ""
+"Add the conversation id to an output link (or similar JSF control). "
+"<emphasis>Facelets only.</emphasis>"
+msgstr "Fügen Sie die Konversations-ID einem Ausgaben-Link hinzu (oder ähnliche JSF-Steuerung). <emphasis>Nur Facelets.</emphasis>"
+
+#. Tag: literal
+#: Controls.xml:959
+#, no-c-format
+msgid "&lt;s:taskId&gt;"
+msgstr "&lt;s:taskId&gt;"
+
+#. Tag: para
+#: Controls.xml:966
+#, no-c-format
+msgid ""
+"Add the task id to an output link (or similar JSF control), when the task is "
+"available via <literal>#{task}</literal>. <emphasis>Facelets only.</emphasis>"
+msgstr "Fügen Sie die Task-ID einem Ausgabe-Linl hinzu (oder ähnliche JSF-Steuerung), wenn die Task via <literal>#{task}</literal> verfügbar ist. <emphasis>Nur Facelets.</emphasis>"
+
+#. Tag: literal
+#: Controls.xml:986
+#, no-c-format
+msgid "&lt;s:fileUpload&gt;"
+msgstr "&lt;s:fileUpload&gt;"
+
+#. Tag: para
+#: Controls.xml:993
+#, no-c-format
+msgid ""
+"Renders a file upload control. This control must be used within a form with "
+"an encoding type of <literal>multipart/form-data</literal>, i.e:"
+msgstr "Rendert eine Datei-Upload-Steuerung. Diese Steuerung muss innerhalb eines Formulars mit verschlüsseltem Typ von <literal>multipart/form-data</literal> verwendet werden, d.h.:"
+
+#. Tag: programlisting
+#: Controls.xml:996
+#, no-c-format
+msgid "&lt;h:form enctype=\"multipart/form-data\"&gt;"
+msgstr "&lt;h:form enctype=\"multipart/form-data\"&gt;"
+
+#. Tag: para
+#: Controls.xml:997
+#, no-c-format
+msgid ""
+"For multipart requests, the Seam Multipart servlet filter must also be "
+"configured in <literal>web.xml</literal>:"
+msgstr ""
+"Für Multipart-Anfragen muss der Seam Multipart-Servlet-Filter ebenfalls in "
+"<literal>web.xml</literal> konfiguriert werden:"
+
+#. Tag: programlisting
+#: Controls.xml:1000
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-class&gt;\n"
+"  &lt;/filter&gt;\n"
+"\n"
+"  &lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;/*&lt;/url-pattern&gt;\n"
+"  &lt;/filter-mapping&gt;"
+msgstr ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-class&gt;\n"
+"  &lt;/filter&gt;\n"
+"\n"
+"  &lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;/*&lt;/url-pattern&gt;\n"
+"  &lt;/filter-mapping&gt;"
+
+#. Tag: para
+#: Controls.xml:1004
+#, no-c-format
+msgid ""
+"The following configuration options for multipart requests may be configured "
+"in components.xml:"
+msgstr ""
+"Die folgenden Konfigurationsoptionen für Multipart-Anfragen können in "
+"components.xml konfiguriert werden:"
+
+#. Tag: para
+#: Controls.xml:1009
+#, no-c-format
+msgid ""
+"<literal>createTempFiles</literal> &mdash; if this option is set to true, "
+"uploaded files are streamed to a temporary file instead of in memory."
+msgstr "<literal>createTempFiles</literal> &mdash; ist diese Option auf \"true\" gesetzt, so werden hochgeladene Dateien zu einer temporären Datei geschickt statt zum Speicher."
+
+#. Tag: para
+#: Controls.xml:1014
+#, no-c-format
+msgid ""
+"<literal>maxRequestSize</literal> &mdash; the maximum size of a file upload "
+"request, in bytes."
+msgstr ""
+"<literal>maxRequestSize</literal> &mdash; Die maximale Größe einer Datei-"
+"Hochladeanfrage in Bytes."
+
+#. Tag: para
+#: Controls.xml:1019
+#, no-c-format
+msgid "Here&#39;s an example:"
+msgstr "Hier sehen Sie ein Beispiel:"
+
+#. Tag: programlisting
+#: Controls.xml:1022
+#, no-c-format
+msgid ""
+"&lt;component class=\"org.jboss.seam.web.MultipartFilter\"&gt;\n"
+"      &lt;property name=\"createTempFiles\"&gt;true&lt;/property&gt;\n"
+"      &lt;property name=\"maxRequestSize\"&gt;1000000&lt;/property&gt;\n"
+"  &lt;/component&gt;"
+msgstr ""
+"&lt;component class=\"org.jboss.seam.web.MultipartFilter\"&gt;\n"
+"      &lt;property name=\"createTempFiles\"&gt;true&lt;/property&gt;\n"
+"      &lt;property name=\"maxRequestSize\"&gt;1000000&lt;/property&gt;\n"
+"  &lt;/component&gt;"
+
+#. Tag: para
+#: Controls.xml:1028
+#, no-c-format
+msgid ""
+"<literal>data</literal> &mdash; this value binding receives the binary file "
+"data. The receiving field should be declared as a <literal>byte[]</literal> "
+"or <literal>InputStream</literal> (required)."
+msgstr ""
+"<literal>data</literal> &mdash; Diese Wertbindung erhält die Daten der Binärdatei. Das Empfangsfeld sollte als ein <literal>byte[]</literal> "
+"oder <literal>InputStream</literal> deklariert sein (erforderlich)."
+
+#. Tag: para
+#: Controls.xml:1033
+#, no-c-format
+msgid ""
+"<literal>contentType</literal> &mdash; this value binding receives the "
+"file&#39;s content type (optional)."
+msgstr "<literal>contentType</literal> &mdash; Diese Wertbindung erhält den Datei Inhaltstyp (\"Content Type\"), (optional)."
+
+#. Tag: para
+#: Controls.xml:1038
+#, no-c-format
+msgid ""
+"<literal>fileName</literal> &mdash; this value binding receives the filename "
+"(optional)."
+msgstr "<literal>fileName</literal> &mdash; Diese Wertbindung erhält den Dateinamen (optional)."
+
+#. Tag: para
+#: Controls.xml:1043
+#, no-c-format
+msgid ""
+"<literal>accept</literal> &mdash; a comma-separated list of content types to "
+"accept, may not be supported by the browser. E.g. <literal>\"images/png,"
+"images/jpg\"</literal>, <literal>\"images/*\"</literal>."
+msgstr ""
+"<literal>accept</literal> &mdash; Eine durch Kommas getrennte Liste von "
+"Inhaltstypen die angenommen werden, möglicherweise nicht durch den Browser "
+"unterstützt. Z.B. <literal>\"images/png,images/jpg\"</literal>, <literal>"
+"\"images/*\"</literal>."
+
+#. Tag: para
+#: Controls.xml:1048
+#, no-c-format
+msgid "<literal>style</literal> &mdash; The control&#39;s style"
+msgstr "<literal>style</literal> &mdash; Der Steuerungsstil"
+
+#. Tag: para
+#: Controls.xml:1053
+#, no-c-format
+msgid "<literal>styleClass</literal> &mdash; The control&#39;s style class"
+msgstr "<literal>styleClass</literal> &mdash; Die Steuerungsstilklasse"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Conversations.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Conversations.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Conversations.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1443 @@
+# translation of Conversations.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Jasna Dimanoski <jdimanos at redhat.com>, 2007, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Conversations\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2008-04-19 13:46+1000\n"
+"Last-Translator: Jasna Dimanoski <jdimanos at redhat.com>\n"
+"Language-Team:  <de at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Conversations.xml:6
+#, no-c-format
+msgid "Conversations and workspace management"
+msgstr "Konversationen und Workspace Management"
+
+#. Tag: para
+#: Conversations.xml:7
+#, no-c-format
+msgid "It&#39;s time to understand Seam&#39;s conversation model in more detail."
+msgstr "Schauen wir uns Seams Konversationsmodell genauer an."
+
+#. Tag: para
+#: Conversations.xml:10
+#, no-c-format
+msgid ""
+"Historically, the notion of a Seam \"conversation\" came about as a merger "
+"of three different ideas:"
+msgstr "Historisch wurde die Seam \"Konversation\" als Vermengung drei verschiedener Ideen zustande:"
+
+#. Tag: para
+#: Conversations.xml:15
+#, no-c-format
+msgid ""
+"The idea of a <emphasis>workspace</emphasis>, which I encountered in a "
+"project for the Victorian government in 2002. In this project I was forced "
+"to implement workspace management on top of Struts, an experience I pray "
+"never to repeat."
+msgstr "Das Konzept eines <emphasis>Workspace</emphasis>, dem ich bei einem Project für die Regierung des Bundesstaats Victoria im Jahre 2002 begegnete. Bei diesem Projekt war ich gezwungen Workspace Management auf Struts zu implementieren - eine Erfahrung, die ich nie wieder machen möchte."
+
+#. Tag: para
+#: Conversations.xml:20
+#, no-c-format
+msgid ""
+"The idea of an <emphasis>application transaction</emphasis> with optimistic "
+"semantics, and the realization that existing frameworks based around a "
+"stateless architecture could not provide effective management of extended "
+"persistence contexts. (The Hibernate team is truly fed up with copping the "
+"blame for <literal>LazyInitializationException</literal>s, which are not "
+"really Hibernate&#39;s fault, but rather the fault of the extremely limiting "
+"persistence context model supported by stateless architectures such as the "
+"Spring framework or the traditional <emphasis>stateless session facade</"
+"emphasis> (anti)pattern in J2EE.)"
+msgstr ""
+"Der Gedanke einer <emphasis>Applikationstransaktion</emphasis> mit optimistischer Semantik und die Erkenntnis, dass bestehende, auf einer stateless Architektur basierende Frameworks kein effektives Management erweiterter Persistenzkontexte liefern konnten. (Das Hibernate Team möchte nicht mehr die Schuld an <literal>LazyInitializationException</literal>s zugewiesen bekommen, die nicht Hibernates Schuld sind, sondern auf ein extrem einschränkendes Persistenz-Kontextmodell das von stateless Architekturen wie das "
+"Spring-Framework oder die traditionelle <emphasis>Stateless Session Facade</emphasis> (Anti)pattern in J2EE zurückgeht)."
+
+#. Tag: para
+#: Conversations.xml:25
+#, no-c-format
+msgid "The idea of a workflow <emphasis>task</emphasis>."
+msgstr "Die Grundidee einer Workflow-<emphasis>Task</emphasis>."
+
+#. Tag: para
+#: Conversations.xml:30
+#, no-c-format
+msgid ""
+"By unifying these ideas and providing deep support in the framework, we have "
+"a powerful construct that lets us build richer and more efficient "
+"applications with less code than before."
+msgstr "Indem wir diese Ideen vereinen und tiefreichenden Support im Framework bereitstellen, besitzen wir ein leistungsfähiges Konstrukt, das es uns gestattet komplexere und effizientere Anwendungen mit weniger Code als zuvor zu bauen."
+
+#. Tag: title
+#: Conversations.xml:34
+#, no-c-format
+msgid "Seam&#39;s conversation model"
+msgstr "Seam&#39;s Konversationsmodell"
+
+#. Tag: para
+#: Conversations.xml:35
+#, no-c-format
+msgid ""
+"The examples we have seen so far make use of a very simple conversation "
+"model that follows these rules:"
+msgstr "Die Beispiele, die wir bis jetzt gesehen haben, verwenden ein sehr einfaches Konversationsmodell, das folgenden Regeln folgt:"
+
+#. Tag: para
+#: Conversations.xml:40
+#, no-c-format
+msgid ""
+"There is always a conversation context active during the apply request "
+"values, process validations, update model values, invoke application and "
+"render response phases of the JSF request lifecycle."
+msgstr "Es ist stets ein Konversationskontext aktiv während Anwendung der Anfragenwerte, Prozessverarbeitung, Modellwertaktualisierung, Anwendungsaufruf und dem Rendering von Reaktionsphasen des Lebensyzklus der JSF-Anfragen."
+
+#. Tag: para
+#: Conversations.xml:45
+#, no-c-format
+msgid ""
+"At the end of the restore view phase of the JSF request lifecycle, Seam "
+"attempts to restore any previous long-running conversation context. If none "
+"exists, Seam creates a new temporary conversation context."
+msgstr "Am Ende der \"Ansicht wiederherstellen\"-Phase des Lebenszyklus der JSF-Anfrage, versucht Seam vorherige, lange laufende Konversationskontexte wieder herzustellen. Sind keine vorhanden, so erstellt Seam einen neuen, temporären Konversationskontext."
+
+#. Tag: para
+#: Conversations.xml:50
+#, no-c-format
+msgid ""
+"When an <literal>@Begin</literal> method is encountered, the temporary "
+"conversation context is promoted to a long running conversation."
+msgstr "Begegnet es einer <literal>@Begin</literal>-Methode so wird der temporäre Konversationskontext zu einer lange laufenden Konversation hochgestuft."
+
+#. Tag: para
+#: Conversations.xml:55
+#, no-c-format
+msgid ""
+"When an <literal>@End</literal> method is encountered, any long-running "
+"conversation context is demoted to a temporary conversation."
+msgstr "Begegnet es einer <literal>@End</literal>-Method iMethode so wird die lange laufende Konversation zu einem temporären Konversationskontext herabgestuft."
+
+#. Tag: para
+#: Conversations.xml:60
+#, no-c-format
+msgid ""
+"At the end of the render response phase of the JSF request lifecycle, Seam "
+"stores the contents of a long running conversation context or destroys the "
+"contents of a temporary conversation context."
+msgstr "Am Ende Render-Antwortphase des Lebenszykus der JSF-Anfrage, speichert Seam die Inhalte eines lange laufenden Konversationskontexts oder löscht die Inhalte eines temporären Konversationskontexts."
+
+#. Tag: para
+#: Conversations.xml:65
+#, no-c-format
+msgid ""
+"Any faces request (a JSF postback) will propagate the conversation context. "
+"By default, non-faces requests (GET requests, for example) do not propagate "
+"the conversation context, but see below for more information on this."
+msgstr ""
+"Jede Faces-Anfrage (ein JSF-Postback) verbreitet den Konversationskontext. "
+"In der Standardeinstellung verbreiten nicht-Faces Anfragen (GET-Anfragen etwa) den Konversationskontext nicht. Weiter unten sehen Sie weitere Informationen hierzu."
+
+#. Tag: para
+#: Conversations.xml:70
+#, no-c-format
+msgid ""
+"If the JSF request lifecycle is foreshortened by a redirect, Seam "
+"transparently stores and restores the current conversation context&mdash;"
+"unless the conversation was already ended via <literal>@End"
+"(beforeRedirect=true)</literal>."
+msgstr ""
+"Wird der Lebenszyklus der JSF-Anfrage durch eine Umleitung verkürzt, so speichert Seam the aktuellen Konversationskontext transparent und stellt diesen wieder her&mdash; außer die Konversation wurde bereits via <literal>@End"
+"(beforeRedirect=true)</literal> beendet."
+
+#. Tag: para
+#: Conversations.xml:75
+#, no-c-format
+msgid ""
+"Seam transparently propagates the conversation context across JSF postbacks "
+"and redirects. If you don&#39;t do anything special, a <emphasis>non-faces "
+"request</emphasis> (a GET request for example) will not propagate the "
+"conversation context and will be processed in a new temporary conversation. "
+"This is usually - but not always - the desired behavior."
+msgstr "Seam verbreitet den Konversationskontext auf transparente Weise über JSF-Postbacks und Redirects. Wenn Sie nichts besnderes tun, so verbreitet eine <emphasis>nicht-Faces Anfrage</emphasis> (etwa eine GET-Anfrage) den den Konversationskontext nicht und wird als temporäre Konversation bearbeitet. Dies ist in der Regel - aber nicht immer - das gewünschte Verhalten."
+
+#. Tag: para
+#: Conversations.xml:78
+#, no-c-format
+msgid ""
+"If you want to propagate a Seam conversation across a non-faces request, you "
+"need to explicitly code the Seam <emphasis>conversation id</emphasis> as a "
+"request parameter:"
+msgstr "Wenn Sie eine Seam Konversation über eine nicht-Faces Anfrage hinweg verbreiten wollen, so müssen Sie die Seam <emphasis>Konversations-ID</emphasis> explizit als Anfragenparameter kodieren:"
+
+#. Tag: programlisting
+#: Conversations.xml:81
+#, no-c-format
+msgid ""
+"&lt;a href=\"main.jsf?conversationId=#{conversation.id}\"&gt;Continue&lt;/"
+"a&gt;"
+msgstr ""
+"&lt;a href=\"main.jsf?conversationId=#{conversation.id}\"&gt;Continue&lt;/"
+"a&gt;"
+
+#. Tag: para
+#: Conversations.xml:82
+#, no-c-format
+msgid "Or, the more JSF-ish:"
+msgstr "Oder, mehr nach JSF-Art:"
+
+#. Tag: programlisting
+#: Conversations.xml:85
+#, no-c-format
+msgid ""
+"&lt;h:outputLink value=\"main.jsf\"&gt;\n"
+"    &lt;f:param name=\"conversationId\" value=\"#{conversation.id}\"/&gt;\n"
+"    &lt;h:outputText value=\"Continue\"/&gt;\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+"&lt;h:outputLink value=\"main.jsf\"&gt;\n"
+"    &lt;f:param name=\"conversationId\" value=\"#{conversation.id}\"/&gt;\n"
+"    &lt;h:outputText value=\"Continue\"/&gt;\n"
+"&lt;/h:outputLink&gt;"
+
+#. Tag: para
+#: Conversations.xml:86 Conversations.xml:94
+#, no-c-format
+msgid "If you use the Seam tag library, this is equivalent:"
+msgstr "Wenn Sie die Seam Tag-Bibliothek verwenden, so ist dies äquivalent:"
+
+#. Tag: programlisting
+#: Conversations.xml:89
+#, no-c-format
+msgid ""
+"&lt;h:outputLink value=\"main.jsf\"&gt;\n"
+"    &lt;s:conversationId/&gt;\n"
+"    &lt;h:outputText value=\"Continue\"/&gt;\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+"&lt;h:outputLink value=\"main.jsf\"&gt;\n"
+"    &lt;s:conversationId/&gt;\n"
+"    &lt;h:outputText value=\"Continue\"/&gt;\n"
+"&lt;/h:outputLink&gt;"
+
+#. Tag: para
+#: Conversations.xml:90
+#, no-c-format
+msgid ""
+"If you wish to disable propagation of the conversation context for a "
+"postback, a similar trick is used:"
+msgstr "Wenn Sie die Verbreitung des Konversationskontexts für ein Postback deaktivieren möchten, so können Sie einen ähnlichen Trick anwenden:"
+
+#. Tag: programlisting
+#: Conversations.xml:93
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;f:param name=\"conversationPropagation\" value=\"none\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;f:param name=\"conversationPropagation\" value=\"none\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+
+#. Tag: programlisting
+#: Conversations.xml:97
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"none\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"none\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+
+#. Tag: para
+#: Conversations.xml:98
+#, no-c-format
+msgid ""
+"Note that disabling conversation context propagation is absolutely not the "
+"same thing as ending the conversation."
+msgstr "Beachten Sie, dass das Deaktivieren der Verbreitung des Konversationskontexts keinesfalls dasselbe ist, wie das Beenden der Konversation."
+
+#. Tag: para
+#: Conversations.xml:101
+#, no-c-format
+msgid ""
+"The <literal>conversationPropagation</literal> request parameter, or the "
+"<literal>&lt;s:conversationPropagation&gt;</literal> tag may even be used to "
+"begin and end conversation, or begin a nested conversation."
+msgstr "Der <literal>conversationPropagation</literal>-Anfragenparameter oder das <literal>&lt;s:conversationPropagation&gt;</literal>-Tag kann zum beginnen und beenden einer Konversation oder zum beginnen einer verschachtelten Konversation verwendet werden."
+
+#. Tag: programlisting
+#: Conversations.xml:104
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"end\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"end\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+
+#. Tag: programlisting
+#: Conversations.xml:105
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Child\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"nested\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+"&lt;h:commandLink action=\"main\" value=\"Select Child\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"nested\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+
+#. Tag: programlisting
+#: Conversations.xml:106
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Hotel\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"begin\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+"&lt;h:commandLink action=\"main\" value=\"Select Hotel\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"begin\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+
+#. Tag: programlisting
+#: Conversations.xml:107
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Hotel\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"join\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+"&lt;h:commandLink action=\"main\" value=\"Select Hotel\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"join\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+
+#. Tag: para
+#: Conversations.xml:108
+#, no-c-format
+msgid ""
+"This conversation model makes it easy to build applications which behave "
+"correctly with respect to multi-window operation. For many applications, "
+"this is all that is needed. Some complex applications have either or both of "
+"the following additional requirements:"
+msgstr "Dieses Konversationsmodell macht den Bau von Anwendungen, die sich hinsichtlich Multi-Fenster Betrieb ordnungsgemäß verhalten, einfach. Für viele Anwendungen ist dies ausreichend. Einige komplexe Anwendungen habe eine oder beide der folgenden Zusatzanforderungen:"
+
+#. Tag: para
+#: Conversations.xml:113
+#, no-c-format
+msgid ""
+"A conversation spans many smaller units of user interaction, which execute "
+"serially or even concurrently. The smaller <emphasis>nested conversations</"
+"emphasis> have their own isolated set of conversation state, and also have "
+"access to the state of the outer conversation."
+msgstr "Eine Konversation umspannt viele kleinere Einheiten von Benutzerinteraktion, die seriell oder sogar gleichzeitig ausgeführt werden. Die kleineren <emphasis>verschachtelten Konversationen</emphasis> besitzen ihren eigenen isolierten Satz an Konversationsstatus und haben asußerdem Zugriff auf den Status der außen gelegenen Konversation."
+
+#. Tag: para
+#: Conversations.xml:118
+#, no-c-format
+msgid ""
+"The user is able to switch between many conversations within the same "
+"browser window. This feature is called <emphasis>workspace management</"
+"emphasis>."
+msgstr "Der Benutzer kann zwischen vielen Konversationen innerhalb desselben Browser-Fensters wechseln. Dieses Feature heißt <emphasis>Workspace Management</emphasis>."
+
+#. Tag: title
+#: Conversations.xml:126
+#, no-c-format
+msgid "Nested conversations"
+msgstr "Verschachtelte Konversationen"
+
+#. Tag: para
+#: Conversations.xml:127
+#, no-c-format
+msgid ""
+"A nested conversation is created by invoking a method marked <literal>@Begin"
+"(nested=true)</literal> inside the scope of an existing conversation. A "
+"nested conversation has its own conversation context, and also has read-only "
+"access to the context of the outer conversation. (It can read the outer "
+"conversation&#39;s context variables, but not write to them.) When an "
+"<literal>@End</literal> is subsequently encountered, the nested conversation "
+"will be destroyed, and the outer conversation will resume, by \"popping\" "
+"the conversation stack. Conversations may be nested to any arbitrary depth."
+msgstr ""
+"Eine verschachtelte Konversation wird durch Aufrufen einer mit <literal>@Begin"
+"(nested=true)</literal> gekennzeichneten Methode innerhalb des Bereichs einer bestehenden Konversation erstellt. Eine verschachtelte Konversation besitzt ihren eigenen Konversationskontext, und außerdem  read-only (schreibgeschützten) Zugriff auf den Kontext der äußeren wird Konversation. (Sie kann die Kontextvariablen der äußeren Konversation lesen, aber nicht in diese schreiben). Stößt sie irgendwann auf ein "
+"<literal>@End</literal>, so wird die verschachtelte Konversation "
+"zerstört, und die äußere Konversation wird fortgesetzt, indem das Konversation Stack \"hervorgeholt\" wird . Konversationen können in beliebiger, arbiträrer Tiefe verschachtelt sein."
+
+#. Tag: para
+#: Conversations.xml:130
+#, no-c-format
+msgid ""
+"Certain user activity (workspace management, or the back button) can cause "
+"the outer conversation to be resumed before the inner conversation is ended. "
+"In this case it is possible to have multiple concurrent nested conversations "
+"belonging to the same outer conversation. If the outer conversation ends "
+"before a nested conversation ends, Seam destroys all nested conversation "
+"contexts along with the outer context."
+msgstr ""
+"Bestimmte Benutzeraktivitäten (Workspace-Management oder die \"Zurück\"-Schaltflächebutton) können dazu führen, dass die äußere Konversation fortgesetzt wird, ehe die innere beendet wurde. "
+"In diesem Fall ist es möglich, mehrere gleichzeitige, verschachtelte Konversationen zu besitzen, die zu derselben äußeren Konversation gehören. Endet die äußere Konversation ehe die innere Konversation beendet wurde, so zerstört Seam destroys alle verschachtelten Konversationskontexte gemeinsam mit dem äußeren Kontext."
+
+#. Tag: para
+#: Conversations.xml:133
+#, no-c-format
+msgid ""
+"A conversation may be thought of as a <emphasis>continuable state</"
+"emphasis>. Nested conversations allow the application to capture a "
+"consistent continuable state at various points in a user interaction, thus "
+"insuring truly correct behavior in the face of backbuttoning and workspace "
+"management."
+msgstr ""
+"Man kann sich eine Konversation als <emphasis>fortsetzbaren Status</"
+"emphasis> vorstellen. Verschachtelte Konversationen gestatten es der Anwendung einen konsistenten, fortsetzbaren Status an verschiedenen Punkten einer Benutzerinteraktion festzuhalten, wodurch ordnungsgemäßes Verhalten bei Verwendung der \"Zurück\"-Schaltfläche und beim Workspace "
+"Management gewährleistet wird."
+
+#. Tag: para
+#: Conversations.xml:136
+#, no-c-format
+msgid ""
+"TODO: an example to show how a nested conversation prevents bad stuff "
+"happening when you backbutton."
+msgstr "TODO: Ein Beispiel, das zeigen soll, wie verschachtelte Konversationen schlechte Dinge verhindern, wenn Sie die \"Zurück\"-Taste betätigen."
+
+#. Tag: para
+#: Conversations.xml:139
+#, no-c-format
+msgid ""
+"Usually, if a component exists in a parent conversation of the current "
+"nested conversation, the nested conversation will use the same instance. "
+"Occasionally, it is useful to have a different instance in each nested "
+"conversation, so that the component instance that exists in the parent "
+"conversation is invisible to its child conversations. You can achieve this "
+"behavior by annotating the component <literal>@PerNestedConversation</"
+"literal>."
+msgstr "In der Regel existiert eine Komponente in einer einer übergeordneten Konversation der aktuell verschachtelten Konversation und verwendet diesselbe Instanz. Gelegentlich ist es von Nutzen, unterschiedliche Instanzen in jeder verschachtelten Konversation zu haben, so dass die in der übergeordneten Konversation bestehende Komponenteninstanz für die untergeordneten Konversationen unsichtbar bleibt. Sie können dieses Verhalten erreichen, indem Sie die Komponent mit <literal>@PerNestedConversation</literal> annotieren."
+
+#. Tag: title
+#: Conversations.xml:145
+#, no-c-format
+msgid "Starting conversations with GET requests"
+msgstr "Konversationen mit GET-Anfragen starten"
+
+#. Tag: para
+#: Conversations.xml:146
+#, no-c-format
+msgid ""
+"JSF does not define any kind of action listener that is triggered when a "
+"page is accessed via a non-faces request (for example, a HTTP GET request). "
+"This can occur if the user bookmarks the page, or if we navigate to the page "
+"via an <literal>&lt;h:outputLink&gt;</literal>."
+msgstr ""
+"JSF definiert keinerlei Art von Action-Listener, der zum EInsatz kommt, wenn auf eine Seite via einer nicht-Faces Anfrage zugegriffen wird (zum Beispiel eine HTTP GET-Anfrage). "
+"Dies kann der Fall sein, wenn der Benutzer die Seite mit Lesezeichen versieht oder wenn wir via eines <literal>&lt;h:outputLink&gt;</literal> zu der Seite navigieren."
+
+#. Tag: para
+#: Conversations.xml:149
+#, no-c-format
+msgid ""
+"Sometimes we want to begin a conversation immediately the page is accessed. "
+"Since there is no JSF action method, we can&#39;t solve the problem in the "
+"usual way, by annotating the action with <literal>@Begin</literal>."
+msgstr "Manchmal wollen wir eine Konversation sofort beim Zugriff auf die Seite beginnen. Da keine JSF-Action-Methode existiert, können wir das Problem nicht auf die übliche Weise lösen, indem wir die Action mit <literal>@Begin</literal> annotieren."
+
+#. Tag: para
+#: Conversations.xml:152
+#, no-c-format
+msgid ""
+"A further problem arises if the page needs some state to be fetched into a "
+"context variable. We&#39;ve already seen two ways to solve this problem. If "
+"that state is held in a Seam component, we can fetch the state in a "
+"<literal>@Create</literal> method. If not, we can define a "
+"<literal>@Factory</literal> method for the context variable."
+msgstr ""
+"Ein weiteres Problem entsteht, wenn ein Status in eine Kontextvariable abgerufen werden soll. Wie haben bereits zwei Arten gesehen, auf die dieses Problem behoben werden kann. Falls der Status in einer Seam Komponente gehalten wird, können wir den Status in eine "
+"<literal>@Create</literal>-Methode abrufen. Falls nicht, können wir eine "
+"<literal>@Factory</literal>-Methode für die Kontextvariable definieren."
+
+#. Tag: para
+#: Conversations.xml:155
+#, no-c-format
+msgid ""
+"If none of these options works for you, Seam lets you define a "
+"<emphasis>page action</emphasis> in the <literal>pages.xml</literal> file."
+msgstr ""
+"Falls keine dieser Optionen für Sie funktioniert, lässt Seam Sie eine "
+"<emphasis>Seiten-Action</emphasis> (Page Action) in der <literal>pages.xml</literal>-Datei definieren."
+
+#. Tag: programlisting
+#: Conversations.xml:158
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\" action=\"#{messageManager.list}\"/"
+"&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\" action=\"#{messageManager.list}\"/"
+"&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Conversations.xml:159
+#, no-c-format
+msgid ""
+"This action method is called at the beginning of the render response phase, "
+"any time the page is about to be rendered. If a page action returns a non-"
+"null outcome, Seam will process any appropriate JSF and Seam navigation "
+"rules, possibly resulting in a completely different page being rendered."
+msgstr "Diese Action-Methode wird zu Beginn der Render-Antwortphase aufgerufen, jedes Mal dann, wenn die Seite gerendert wird. Falls eine Seiten-Action ein nicht-Null Ergebnis liefert, bearbeitet Seam alle passenden JSF- und Seam- Navigationsregeln, wodurch möglicherweise eine völlig andere Seite gerendert wird."
+
+#. Tag: para
+#: Conversations.xml:162
+#, no-c-format
+msgid ""
+"If <emphasis>all</emphasis> you want to do before rendering the page is "
+"begin a conversation, you could use a built-in action method that does just "
+"that:"
+msgstr "Falls <emphasis>alles</emphasis>, was Sie vor dem Rendern der Seite tun wollen, das Starten einer Konversation ist, so könnten Sie eine eingebaute Action-Methode verwenden, die genau das tut:"
+
+#. Tag: programlisting
+#: Conversations.xml:165
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\" action=\"#{conversation.begin}\"/"
+"&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\" action=\"#{conversation.begin}\"/"
+"&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Conversations.xml:166
+#, no-c-format
+msgid ""
+"Note that you can also call this built-in action from a JSF control, and, "
+"similarly, you can use <literal>#{conversation.end}</literal> to end "
+"conversations."
+msgstr "Beachten Sie, dass Sie diese eingebaute Action auch von einer JSF-Steuerung aufrufen können und auf ähnliche Weise <literal>#{conversation.end}</literal> zum Beenden von Konversationen verwenden können."
+
+#. Tag: para
+#: Conversations.xml:169
+#, no-c-format
+msgid ""
+"If you want more control, to join existing conversations or begin a nested "
+"conversion, to begin a pageflow or an atomic conversation, you should use "
+"the <literal>&lt;begin-conversation&gt;</literal> element."
+msgstr "Falls Sie mehr Kontrolle beim Beitreten zu einer bestehenden Konversation oder beim Beginnen einer verschachtelten Konversion haben möchten, um einen Pageflow oder eine atomische Konversation zu starten, so sollten Sie das <literal>&lt;begin-conversation&gt;</literal>-Element verwenden."
+
+#. Tag: programlisting
+#: Conversations.xml:172
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\"&gt;\n"
+"       &lt;begin-conversation nested=\"true\" pageflow=\"AddItem\"/&gt;\n"
+"    &lt;page&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\"&gt;\n"
+"       &lt;begin-conversation nested=\"true\" pageflow=\"AddItem\"/&gt;\n"
+"    &lt;page&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Conversations.xml:173
+#, no-c-format
+msgid "There is also an <literal>&lt;end-conversation&gt;</literal> element."
+msgstr "Es existiert auch ein <literal>&lt;end-conversation&gt;</literal>-Element."
+
+#. Tag: programlisting
+#: Conversations.xml:176
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/home.jsp\"&gt;\n"
+"       &lt;end-conversation/&gt;\n"
+"    &lt;page&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/home.jsp\"&gt;\n"
+"       &lt;end-conversation/&gt;\n"
+"    &lt;page&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Conversations.xml:177
+#, no-c-format
+msgid "To solve the first problem, we now have five options:"
+msgstr "Um das erste Problem zu lösen, haben wir jetzt fünf Optionen:"
+
+#. Tag: para
+#: Conversations.xml:182
+#, no-c-format
+msgid "Annotate the <literal>@Create</literal> method with <literal>@Begin</literal>"
+msgstr "Annotieren Sie die <literal>@Create</literal>-Methode mit <literal>@Begin</literal>"
+
+#. Tag: para
+#: Conversations.xml:187
+#, no-c-format
+msgid ""
+"Annotate the <literal>@Factory</literal> method with <literal>@Begin</"
+"literal>"
+msgstr "Annotieren Sie die <literal>@Factory</literal>-Methode mit <literal>@Begin</literal>"
+
+#. Tag: para
+#: Conversations.xml:192
+#, no-c-format
+msgid "Annotate the Seam page action method with <literal>@Begin</literal>"
+msgstr "Annotieren Sie die Seam Seiten-Action-Methode mit <literal>@Begin</literal>"
+
+#. Tag: para
+#: Conversations.xml:197
+#, no-c-format
+msgid ""
+"Use <literal>&lt;begin-conversation&gt;</literal> in <literal>pages.xml</"
+"literal>."
+msgstr "Verwenden Sie <literal>&lt;begin-conversation&gt;</literal> in <literal>pages.xml</literal>."
+
+#. Tag: para
+#: Conversations.xml:202
+#, no-c-format
+msgid "Use <literal>#{conversation.begin}</literal> as the Seam page action method"
+msgstr "Verwenden <literal>#{conversation.begin}</literal> als Seam Seiten-Action-Methode"
+
+#. Tag: title
+#: Conversations.xml:210
+#, no-c-format
+msgid ""
+"Using <literal>&lt;s:link&gt;</literal> and <literal>&lt;s:button&gt;</"
+"literal>"
+msgstr "Die Verwendung von <literal>&lt;s:link&gt;</literal> und <literal>&lt;s:button&gt;</literal>"
+
+#. Tag: para
+#: Conversations.xml:211
+#, no-c-format
+msgid ""
+"JSF command links always perform a form submission via JavaScript, which "
+"breaks the web browser&#39;s \"open in new window\" or \"open in new tab\" "
+"feature. In plain JSF, you need to use an <literal>&lt;h:outputLink&gt;</"
+"literal> if you need this functionality. But there are two major limitations "
+"to <literal>&lt;h:outputLink&gt;</literal>."
+msgstr "JSF-Befehls-Links führen stets eine Formulareinreichung via JavaScript durch, die das Feature des Web-Browsers \"in neuem Fenster öffnen\" oder \"in neuem Tab öffnen\" unbrauchbar macht. In einfachem JSF werden Sie ein <literal>&lt;h:outputLink&gt;</literal> verwenden müssen, falls Sie die Funktionalität benötigen. Allerdings besitzt <literal>&lt;h:outputLink&gt;</literal> zwei große Einschränkungen."
+
+#. Tag: para
+#: Conversations.xml:216
+#, no-c-format
+msgid ""
+"JSF provides no way to attach an action listener to an <literal>&lt;h:"
+"outputLink&gt;</literal>."
+msgstr ""
+"JSF liefert keine Weise, um einen Action-Listener an <literal>&lt;h:"
+"outputLink&gt;</literal> zu hängen."
+
+#. Tag: para
+#: Conversations.xml:221
+#, no-c-format
+msgid ""
+"JSF does not propagate the selected row of a <literal>DataModel</literal> "
+"since there is no actual form submission."
+msgstr "JSF verbreitet die gewählte Reihe eines <literal>DataModel</literal>s nicht, da keine tatsächliche Formulareinreichung vorhanden ist."
+
+#. Tag: para
+#: Conversations.xml:226
+#, no-c-format
+msgid ""
+"Seam provides the notion of a <emphasis>page action</emphasis> to help solve "
+"the first problem, but this does nothing to help us with the second problem. "
+"We <emphasis>could</emphasis> work around this by using the RESTful approach "
+"of passing a request parameter and requerying for the selected object on the "
+"server side. In some cases&mdash;such as the Seam blog example "
+"application&mdash;this is indeed the best approach. The RESTful style "
+"supports bookmarking, since it does not require server-side state. In other "
+"cases, where we don&#39;t care about bookmarks, the use of "
+"<literal>@DataModel</literal> and <literal>@DataModelSelection</literal> is "
+"just so convenient and transparent!"
+msgstr ""
+"Seam liefert die Idee der <emphasis>Seiten-Action</emphasis> (Page Action) um bei der Lösung des ersten Problems zu helfen, tut jedoch nicht um zur Lösung des zweiten Problems beizutragen. "
+"Wir <emphasis>könnten</emphasis> dies durch Verwendung der RESTful Vorgehensweise umgehen, bei der der Anfragenparameter weitergegeben wird und für das gewählte Objekt auf Serverseite erneut abgefragt wird. In einigen Fällen&mdash;wie etwa der Seam Blog-Beispielanwendung "
+"&mdash;ist dies tatsächlich die beste Vorgehensweise. Der RESTful-Stil"
+"unterstützt das Setzen von Lesezeichen, da er keinen Status auf Server-Seite benötigt. In anderen Fällen, bei denen Lesezeichen nicht wichtig sind, ist die Verwendung von <literal>@DataModel</literal> und <literal>@DataModelSelection</literal> praktisch und transparent!"
+
+#. Tag: para
+#: Conversations.xml:229
+#, no-c-format
+msgid ""
+"To fill in this missing functionality, and to make conversation propagation "
+"even simpler to manage, Seam provides the <literal>&lt;s:link&gt;</literal> "
+"JSF tag."
+msgstr "Um diese Funktionalität zu erfüllen und das Management der Konversationsverbreitung noch einfacher zu gestalten, bietet Seam das <literal>&lt;s:link&gt;</literal> JSF-Tag."
+
+#. Tag: para
+#: Conversations.xml:232
+#, no-c-format
+msgid "The link may specify just the JSF view id:"
+msgstr "Das Link kann auch lediglich die JSF-Ansichts-ID:"
+
+#. Tag: programlisting
+#: Conversations.xml:235
+#, no-c-format
+msgid "&lt;s:link view=“/login.xhtml” value=“Login”/&gt;"
+msgstr "&lt;s:link view=“/login.xhtml” value=“Login”/&gt;"
+
+#. Tag: para
+#: Conversations.xml:236
+#, no-c-format
+msgid ""
+"Or, it may specify an action method (in which case the action outcome "
+"determines the page that results):"
+msgstr "Oder es kann eine Action-Methode festlegen (in welchem Fall das Action-Ergebnis, die resultierende Seite bestimmt):"
+
+#. Tag: programlisting
+#: Conversations.xml:239
+#, no-c-format
+msgid "&lt;s:link action=“#{login.logout}” value=“Logout”/&gt;"
+msgstr "&lt;s:link action=“#{login.logout}” value=“Logout”/&gt;"
+
+#. Tag: para
+#: Conversations.xml:240
+#, no-c-format
+msgid ""
+"If you specify <emphasis>both</emphasis> a JSF view id and an action method, "
+"the &#39;view&#39; will be used <emphasis>unless</emphasis> the action "
+"method returns a non-null outcome:"
+msgstr ""
+"Falls Sie <emphasis>beides</emphasis> festlegen, so werden eine JSF Ansichts-ID und eine Action-Methode, "
+"die &#39;view&#39; verwendet <emphasis>außer</emphasis> Action-Methode liefert ein nicht-Null Ergebnis:"
+
+#. Tag: programlisting
+#: Conversations.xml:243
+#, no-c-format
+msgid ""
+"&lt;s:link view=\"/loggedOut.xhtml\"  action=“#{login.logout}” "
+"value=“Logout”/&gt;"
+msgstr ""
+"&lt;s:link view=\"/loggedOut.xhtml\"  action=“#{login.logout}” "
+"value=“Logout”/&gt;"
+
+#. Tag: para
+#: Conversations.xml:244
+#, no-c-format
+msgid ""
+"The link automatically propagates the selected row of a <literal>DataModel</"
+"literal> using inside <literal>&lt;h:dataTable&gt;</literal>:"
+msgstr ""
+"Das Link verbreitet die gewählte Reihe eines <literal>DataModel</"
+"literal> automatisch mittels <literal>&lt;h:dataTable&gt;</literal> weiter:"
+
+#. Tag: programlisting
+#: Conversations.xml:247
+#, no-c-format
+msgid ""
+"&lt;s:link view=“/hotel.xhtml” action=“#{hotelSearch.selectHotel}” value=“#"
+"{hotel.name}”/&gt;"
+msgstr ""
+"&lt;s:link view=“/hotel.xhtml” action=“#{hotelSearch.selectHotel}” value=“#"
+"{hotel.name}”/&gt;"
+
+#. Tag: para
+#: Conversations.xml:248
+#, no-c-format
+msgid "You can leave the scope of an existing conversation:"
+msgstr "Sie können den Bereich einer bestehenden Konversation verlassen:"
+
+#. Tag: programlisting
+#: Conversations.xml:251
+#, no-c-format
+msgid "&lt;s:link view=“/main.xhtml” propagation=“none”/&gt;"
+msgstr "&lt;s:link view=“/main.xhtml” propagation=“none”/&gt;"
+
+#. Tag: para
+#: Conversations.xml:252
+#, no-c-format
+msgid "You can begin, end, or nest conversations:"
+msgstr "Sie können Konversationen beginnen, beenden oder verschachteln:"
+
+#. Tag: programlisting
+#: Conversations.xml:255
+#, no-c-format
+msgid "&lt;s:link action=“#{issueEditor.viewComment}” propagation=“nest”/&gt;"
+msgstr "&lt;s:link action=“#{issueEditor.viewComment}” propagation=“nest”/&gt;"
+
+#. Tag: para
+#: Conversations.xml:256
+#, no-c-format
+msgid ""
+"If the link begins a conversation, you can even specify a pageflow to be "
+"used:"
+msgstr "Falls das Link eine Konversation beginnt, können Sie sogar einen zu verwendenden Pageflow festlegen:"
+
+#. Tag: programlisting
+#: Conversations.xml:259
+#, no-c-format
+msgid ""
+"&lt;s:link action=“#{documentEditor.getDocument}” propagation=“begin” \n"
+"        pageflow=“EditDocument”/&gt;"
+msgstr ""
+"&lt;s:link action=“#{documentEditor.getDocument}” propagation=“begin” \n"
+"        pageflow=“EditDocument”/&gt;"
+
+#. Tag: para
+#: Conversations.xml:260
+#, no-c-format
+msgid "The <literal>taskInstance</literal> attribute if for use in jBPM task lists:"
+msgstr "Das für die jBPM Task-Listen zu verwendende <literal>taskInstance</literal>-Attribut:"
+
+#. Tag: programlisting
+#: Conversations.xml:263
+#, no-c-format
+msgid ""
+"&lt;s:link action=“#{documentApproval.approveOrReject}” taskInstance=“#"
+"{task}”/&gt;"
+msgstr ""
+"&lt;s:link action=“#{documentApproval.approveOrReject}” taskInstance=“#"
+"{task}”/&gt;"
+
+#. Tag: para
+#: Conversations.xml:264
+#, no-c-format
+msgid "(See the DVD Store demo application for examples of this.)"
+msgstr "(Siehe DVD Store Demo-Anwendung für Beispiele hiervon)."
+
+#. Tag: para
+#: Conversations.xml:267
+#, no-c-format
+msgid ""
+"Finally, if you need the \"link\" to be rendered as a button, use "
+"<literal>&lt;s:button&gt;</literal>:"
+msgstr ""
+"Falls Sie das \"Link\" als Schlatfläche gerendert brauchen, verwenden Sie "
+"<literal>&lt;s:button&gt;</literal>:"
+
+#. Tag: programlisting
+#: Conversations.xml:270
+#, no-c-format
+msgid "&lt;s:button action=“#{login.logout}” value=“Logout”/&gt;"
+msgstr "&lt;s:button action=“#{login.logout}” value=“Logout”/&gt;"
+
+#. Tag: title
+#: Conversations.xml:274
+#, no-c-format
+msgid "Success messages"
+msgstr "Erfolgsmeldungen"
+
+#. Tag: para
+#: Conversations.xml:275
+#, no-c-format
+msgid ""
+"It is quite common to display a message to the user indicating success or "
+"failure of an action. It is convenient to use a JSF <literal>FacesMessage</"
+"literal> for this. Unfortunately, a successful action often requires a "
+"browser redirect, and JSF does not propagate faces messages across "
+"redirects. This makes it quite difficult to display success messages in "
+"plain JSF."
+msgstr "Es ist üblich, dem Benutzer eine Nachricht anzuzeigen, die ihn über Erfolg oder Misserfolg einer Action informiert. Es ist praktisch, hierfür eine JSF <literal>FacesMessage</literal> zu verwenden. Leider macht eine erfolgreiche Action oftmals eine Browser-Umleitung, und JSF verbreitet Faces-Messages nicht über Umleitungen hinweg. Dies macht es recht schwierig, Erfolgsnachrichten in einfachem JSF anzuzeigen."
+
+#. Tag: para
+#: Conversations.xml:278
+#, no-c-format
+msgid ""
+"The built in conversation-scoped Seam component named "
+"<literal>facesMessages</literal> solves this problem. (You must have the "
+"Seam redirect filter installed.)"
+msgstr ""
+"Die eingebaute konversationsbegrenzte Seam-Komponente namens "
+"<literal>facesMessages</literal> löst dieses Problem. (Der "
+"Seam Umleitungsfilter muss installiert sein)."
+
+#. Tag: programlisting
+#: Conversations.xml:281
+#, no-c-format
+msgid ""
+"@Name(\"editDocumentAction\")\n"
+"@Stateless\n"
+"public class EditDocumentBean implements EditDocument {\n"
+"    @In EntityManager em;\n"
+"    @In Document document;\n"
+"    @In FacesMessages facesMessages;\n"
+"    \n"
+"    public String update() {\n"
+"        em.merge(document);\n"
+"        facesMessages.add(\"Document updated\");\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"editDocumentAction\")\n"
+"@Stateless\n"
+"public class EditDocumentBean implements EditDocument {\n"
+"    @In EntityManager em;\n"
+"    @In Document document;\n"
+"    @In FacesMessages facesMessages;\n"
+"    \n"
+"    public String update() {\n"
+"        em.merge(document);\n"
+"        facesMessages.add(\"Document updated\");\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Conversations.xml:282
+#, no-c-format
+msgid ""
+"Any message added to <literal>facesMessages</literal> is used in the very "
+"next render response phase for the current conversation. This even works "
+"when there is no long-running conversation since Seam preserves even "
+"temporary conversation contexts across redirects."
+msgstr "Jede <literal>facesMessages</literal> hinzugefügt Nachricht wird in der darauffolgenden Render-Antwortphase für die aktuelle Konversation verwendet. Dies funktioniert sogar, wenn keine lange laufende Konversation existiert, da Seamsogar temporäre Konversationskontexte über Umleitungen hinweg bewahrt."
+
+#. Tag: para
+#: Conversations.xml:285
+#, no-c-format
+msgid "You can even include JSF EL expressions in a faces message summary:"
+msgstr "Sie können sogar JSF EL-Ausdrücke in einer Faces-Message Zusammenfassung mit einschließen:"
+
+#. Tag: programlisting
+#: Conversations.xml:288
+#, no-c-format
+msgid "facesMessages.add(\"Document #{document.title} was updated\");"
+msgstr "facesMessages.add(\"Document #{document.title} was updated\");"
+
+#. Tag: para
+#: Conversations.xml:289
+#, no-c-format
+msgid "You may display the messages in the usual way, for example:"
+msgstr "Sie können die Nachrichten auf die übliche Weise darstellen, etwa:"
+
+#. Tag: programlisting
+#: Conversations.xml:292
+#, no-c-format
+msgid "&lt;h:messages globalOnly=\"true\"/&gt;"
+msgstr "&lt;h:messages globalOnly=\"true\"/&gt;"
+
+#. Tag: title
+#: Conversations.xml:296
+#, no-c-format
+msgid "Using an \"explicit\" conversation id"
+msgstr "Verwendung einer \"expliziten\" Konversations-ID"
+
+#. Tag: para
+#: Conversations.xml:297
+#, no-c-format
+msgid ""
+"Ordinarily, Seam generates a meaningless unique id for each conversation in "
+"each session. You can customize the id value when you begin the conversation."
+msgstr "Normalerweise generiert Seam eine bedeutungslose, eindeutige ID für jede Konversation in jeder Session. Sie können den ID-Wert zu Beginn der Konversation anpassen."
+
+#. Tag: para
+#: Conversations.xml:300
+#, no-c-format
+msgid ""
+"This feature can be used to customize the conversation id generation "
+"algorithm like so:"
+msgstr "Dieses Feature des Algorithmus für die Generierung der Konversations-ID verwendet werden, wie etwa:"
+
+#. Tag: programlisting
+#: Conversations.xml:303
+#, no-c-format
+msgid ""
+"@Begin(id=\"#{myConversationIdGenerator.nextId}\") \n"
+"public void editHotel() { ... }"
+msgstr ""
+"@Begin(id=\"#{myConversationIdGenerator.nextId}\") \n"
+"public void editHotel() { ... }"
+
+#. Tag: para
+#: Conversations.xml:304
+#, no-c-format
+msgid "Or it can be used to assign a meaningful conversation id:"
+msgstr "Oder es kann dazu verwendet werden, eine bedeutungsvolle Konversations-ID zuzuweisen:"
+
+#. Tag: programlisting
+#: Conversations.xml:307
+#, no-c-format
+msgid ""
+"@Begin(id=\"hotel#{hotel.id}\") \n"
+"public String editHotel() { ... }"
+msgstr ""
+"@Begin(id=\"hotel#{hotel.id}\") \n"
+"public String editHotel() { ... }"
+
+#. Tag: programlisting
+#: Conversations.xml:308
+#, no-c-format
+msgid ""
+"@Begin(id=\"hotel#{hotelsDataModel.rowData.id}\") \n"
+"public String selectHotel() { ... }"
+msgstr ""
+"@Begin(id=\"hotel#{hotelsDataModel.rowData.id}\") \n"
+"public String selectHotel() { ... }"
+
+#. Tag: programlisting
+#: Conversations.xml:309
+#, no-c-format
+msgid ""
+"@Begin(id=\"entry#{params[&#39;blogId&#39;]}\")\n"
+"public String viewBlogEntry() { ... }"
+msgstr ""
+"@Begin(id=\"entry#{params[&#39;blogId&#39;]}\")\n"
+"public String viewBlogEntry() { ... }"
+
+#. Tag: programlisting
+#: Conversations.xml:310
+#, no-c-format
+msgid ""
+"@BeginTask(id=\"task#{taskInstance.id}\") \n"
+"public String approveDocument() { ... }"
+msgstr ""
+"@BeginTask(id=\"task#{taskInstance.id}\") \n"
+"public String approveDocument() { ... }"
+
+#. Tag: para
+#: Conversations.xml:311
+#, no-c-format
+msgid ""
+"Clearly, these example result in the same conversation id every time a "
+"particular hotel, blog or task is selected. So what happens if a "
+"conversation with the same conversation id already exists when the new "
+"conversation begins? Well, Seam detects the existing conversation and "
+"redirects to that conversation without running the <literal>@Begin</literal> "
+"method again. This feature helps control the number of workspaces that are "
+"created when using workspace management."
+msgstr ""
+"Ganz klar resultieren diese Beispiele jedes Mal in derselben Konversations-ID, wenn ein bestimmtes Hotel, Blog oder Task ausgewählt wird. Was passiert also, wenn eine Konversation mit derselben Konversations-ID bereits existiert, wenn die neue Konversation beginnt? Nun, Seam entdeckt die vorhandene Konversation und "
+"leitet zu dieser Konversation um, ohne die <literal>@Begin</literal>-Methode erneut auszuführen. Dieses Feature hilft dabei, die Anzahl der Workspaces zu steuern, die bei der Verwendung von Workspace Management erstellt werden."
+
+#. Tag: title
+#: Conversations.xml:317
+#, no-c-format
+msgid "Workspace management"
+msgstr "Workspace Management"
+
+#. Tag: para
+#: Conversations.xml:318
+#, no-c-format
+msgid ""
+"Workspace management is the ability to \"switch\" conversations in a single "
+"window. Seam makes workspace management completely transparent at the level "
+"of the Java code. To enable workspace management, all you need to do is:"
+msgstr "Workspace Management ist die Fähigkeit in einem einzelnen Fenster Konversationen zu \"wechseln\". Seam macht Workspace Management vollkommen transparent auf Java Code Ebene. Um Workspace Management zu aktivieren, müssen Sie lediglich folgendes tun:"
+
+#. Tag: para
+#: Conversations.xml:323
+#, no-c-format
+msgid ""
+"Provide <emphasis>description</emphasis> text for each view id (when using "
+"JSF or Seam navigation rules) or page node (when using jPDL pageflows). This "
+"description text is displayed to the user by the workspace switchers."
+msgstr "Stellen Sie einen <emphasis>Beschreibungs</emphasis>text für jede Ansichts-ID (bei Verwendung von JSF oder Seam Navigationsregeln) oder Seiden-Node (bei Verwendung von jPDL-Pageflows). Dieser Beschreibungstext wird dem Benutzer durch die Workspace Switcher angezeigt."
+
+#. Tag: para
+#: Conversations.xml:328
+#, no-c-format
+msgid ""
+"Include one or more of the standard workspace switcher JSP or facelets "
+"fragments in your pages. The standard fragments support workspace management "
+"via a drop down menu, a list of conversations, or breadcrumbs."
+msgstr "Schließen Sie einen oder mehrere Standard Workspace Switcher JSP oder Facelets Fragmente in Ihrenm Seiten mit ein. Die Standard Fragments unterstützen Workspace Management via eines Drop-Down-Menüs, einer Liste von Konversationen oder Breadcrumbs."
+
+#. Tag: title
+#: Conversations.xml:333
+#, no-c-format
+msgid "Workspace management and JSF navigation"
+msgstr "Workspace Management und JSF-Navigation"
+
+#. Tag: para
+#: Conversations.xml:334
+#, no-c-format
+msgid ""
+"When you use JSF or Seam navigation rules, Seam switches to a conversation "
+"by restoring the current <literal>view-id</literal> for that conversation. "
+"The descriptive text for the workspace is defined in a file called "
+"<literal>pages.xml</literal> that Seam expects to find in the <literal>WEB-"
+"INF</literal> directory, right next to <literal>faces-config.xml</literal>:"
+msgstr "Wenn Sie JSF- oder Seam-Navigationsregeln verwenden, so wechselt Seam zu einer Konversation indem es die aktuelle <literal>view-id</literal> für diese Konversation wiederherstellt. Der deskriptive Text für den Workspace ist in einer Datei namens <literal>pages.xml</literal> definiert, die Seam im <literal>WEB-INF</literal>-Verzeichnis gleich neben <literal>faces-config.xml</literal> zu finden erwartet:"
+
+#. Tag: programlisting
+#: Conversations.xml:337
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/main.xhtml\"&gt;Search hotels: #{hotelBooking."
+"searchString}&lt;/page&gt;\n"
+"    &lt;page view-id=\"/hotel.xhtml\"&gt;View hotel: #{hotel.name}&lt;/"
+"page&gt;\n"
+"    &lt;page view-id=\"/book.xhtml\"&gt;Book hotel: #{hotel.name}&lt;/"
+"page&gt;\n"
+"    &lt;page view-id=\"/confirm.xhtml\"&gt;Confirm: #{booking.description}"
+"&lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/main.xhtml\"&gt;Search hotels: #{hotelBooking."
+"searchString}&lt;/page&gt;\n"
+"    &lt;page view-id=\"/hotel.xhtml\"&gt;View hotel: #{hotel.name}&lt;/"
+"page&gt;\n"
+"    &lt;page view-id=\"/book.xhtml\"&gt;Book hotel: #{hotel.name}&lt;/"
+"page&gt;\n"
+"    &lt;page view-id=\"/confirm.xhtml\"&gt;Confirm: #{booking.description}"
+"&lt;/page&gt;\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Conversations.xml:338
+#, no-c-format
+msgid ""
+"Note that if this file is missing, the Seam application will continue to "
+"work perfectly! The only missing functionality will be the ability to switch "
+"workspaces."
+msgstr "Beachten Sie, dass falls diese Datei fehlt, die Seam-Anwendung weiterhin perfekt funktioniert! Die einzig fehlende Funktionalität ist die Möglichkeit Workspaces zu wechseln."
+
+#. Tag: title
+#: Conversations.xml:344
+#, no-c-format
+msgid "Workspace management and jPDL pageflow"
+msgstr "Workspace Management und jPDL-Pageflow"
+
+#. Tag: para
+#: Conversations.xml:345
+#, no-c-format
+msgid ""
+"When you use a jPDL pageflow definition, Seam switches to a conversation by "
+"restoring the current jBPM process state. This is a more flexible model "
+"since it allows the same <literal>view-id</literal> to have different "
+"descriptions depending upon the current <literal>&lt;page&gt;</literal> "
+"node. The description text is defined by the <literal>&lt;page&gt;</literal> "
+"node:"
+msgstr "Wenn Sie eine jPDL Pageflow-Definition verwenden, wechselt Seam zu einer Konversation, indem es den aktuellen jBPM Prozess-Status wiederherstellt. Dies ist ein flexibleres Modell, da es gestattet, dass dieselbe <literal>view-id</literal> verschiedene Beschreibungen besitzt, je nach aktuellem <literal>&lt;page&gt;</literal>-Node. Der Beschreibungstext wird durch den <literal>&lt;page&gt;</literal>-Node definiert:"
+
+#. Tag: programlisting
+#: Conversations.xml:348
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"shopping\"&gt;\n"
+"\n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"browse\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;page name=\"browse\" view-id=\"/browse.xhtml\"&gt;\n"
+"      &lt;description&gt;DVD Search: #{search.searchPattern}&lt;/"
+"description&gt;\n"
+"      &lt;transition to=\"browse\"/&gt;\n"
+"      &lt;transition name=\"checkout\" to=\"checkout\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"checkout\" view-id=\"/checkout.xhtml\"&gt;\n"
+"      &lt;description&gt;Purchase: $#{cart.total}&lt;/description&gt;\n"
+"      &lt;transition to=\"checkout\"/&gt;\n"
+"      &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"complete\" view-id=\"/complete.xhtml\"&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+"&lt;pageflow-definition name=\"shopping\"&gt;\n"
+"\n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"browse\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;page name=\"browse\" view-id=\"/browse.xhtml\"&gt;\n"
+"      &lt;description&gt;DVD Search: #{search.searchPattern}&lt;/"
+"description&gt;\n"
+"      &lt;transition to=\"browse\"/&gt;\n"
+"      &lt;transition name=\"checkout\" to=\"checkout\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"checkout\" view-id=\"/checkout.xhtml\"&gt;\n"
+"      &lt;description&gt;Purchase: $#{cart.total}&lt;/description&gt;\n"
+"      &lt;transition to=\"checkout\"/&gt;\n"
+"      &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"complete\" view-id=\"/complete.xhtml\"&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+
+#. Tag: title
+#: Conversations.xml:352
+#, no-c-format
+msgid "The conversation switcher"
+msgstr "Der Konversations-Switcher"
+
+#. Tag: para
+#: Conversations.xml:353
+#, no-c-format
+msgid ""
+"Include the following fragment in your JSP or facelets page to get a drop-"
+"down menu that lets you switch to any current conversation, or to any other "
+"page of the application:"
+msgstr "Schließen Sie folgendes Fragment in Ihrer JSP- oder Facelets-Seite mit ein, um ein Drop-Down-Menü zu erhalten, mit dem Sie in andere aktuelle Konversationen oder irgendeine andere Seite der Anwendung wechseln können:"
+
+#. Tag: programlisting
+#: Conversations.xml:356
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{switcher.conversationIdOrOutcome}\"&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Find Issues\" itemValue=\"findIssue\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Create Issue\" itemValue=\"editIssue\"/"
+"&gt;\n"
+"    &lt;f:selectItems value=\"#{switcher.selectItems}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{switcher.select}\" value=\"Switch\"/&gt;"
+msgstr ""
+"&lt;h:selectOneMenu value=\"#{switcher.conversationIdOrOutcome}\"&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Find Issues\" itemValue=\"findIssue\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Create Issue\" itemValue=\"editIssue\"/"
+"&gt;\n"
+"    &lt;f:selectItems value=\"#{switcher.selectItems}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{switcher.select}\" value=\"Switch\"/&gt;"
+
+#. Tag: para
+#: Conversations.xml:357
+#, no-c-format
+msgid ""
+"In this example, we have a menu that includes an item for each conversation, "
+"together with two additional items that let the user begin a new "
+"conversation."
+msgstr "In diesem Beispiel haben wir ein Menü, das für jede Konversation einen Posten mit einschließt sowie zwei weitere Posten, die es dem Benutzer erlauben, eine neue Konversation zu beginnen."
+
+#. Tag: title
+#: Conversations.xml:371
+#, no-c-format
+msgid "The conversation list"
+msgstr "Die Konversationsliste"
+
+#. Tag: para
+#: Conversations.xml:372
+#, no-c-format
+msgid ""
+"The conversation list is very similar to the conversation switcher, except "
+"that it is displayed as a table:"
+msgstr "Die Konversationsliste ist dem Konversations-Switcher sehr ähnlich, mit dem Unterschied, dass sie als Tabelle angezeigt wird:"
+
+#. Tag: programlisting
+#: Conversations.xml:375
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{conversationList}\" var=\"entry\"\n"
+"        rendered=\"#{not empty conversationList}\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Workspace&lt;/f:facet&gt;\n"
+"        &lt;h:commandLink action=\"#{entry.select}\" value=\"#{entry."
+"description}\"/&gt;\n"
+"        &lt;h:outputText value=\"[current]\" rendered=\"#{entry.current}\"/"
+"&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Activity&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{entry.startDatetime}\"&gt;\n"
+"            &lt;f:convertDateTime type=\"time\" pattern=\"hh:mm a\"/&gt;\n"
+"        &lt;/h:outputText&gt;\n"
+"        &lt;h:outputText value=\" - \"/&gt;\n"
+"        &lt;h:outputText value=\"#{entry.lastDatetime}\"&gt;\n"
+"            &lt;f:convertDateTime type=\"time\" pattern=\"hh:mm a\"/&gt;\n"
+"        &lt;/h:outputText&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"        &lt;h:commandButton action=\"#{entry.select}\" value=\"#{msg.Switch}"
+"\"/&gt;\n"
+"        &lt;h:commandButton action=\"#{entry.destroy}\" value=\"#{msg."
+"Destroy}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+"&lt;h:dataTable value=\"#{conversationList}\" var=\"entry\"\n"
+"        rendered=\"#{not empty conversationList}\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Workspace&lt;/f:facet&gt;\n"
+"        &lt;h:commandLink action=\"#{entry.select}\" value=\"#{entry."
+"description}\"/&gt;\n"
+"        &lt;h:outputText value=\"[current]\" rendered=\"#{entry.current}\"/"
+"&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Activity&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{entry.startDatetime}\"&gt;\n"
+"            &lt;f:convertDateTime type=\"time\" pattern=\"hh:mm a\"/&gt;\n"
+"        &lt;/h:outputText&gt;\n"
+"        &lt;h:outputText value=\" - \"/&gt;\n"
+"        &lt;h:outputText value=\"#{entry.lastDatetime}\"&gt;\n"
+"            &lt;f:convertDateTime type=\"time\" pattern=\"hh:mm a\"/&gt;\n"
+"        &lt;/h:outputText&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"        &lt;h:commandButton action=\"#{entry.select}\" value=\"#{msg.Switch}"
+"\"/&gt;\n"
+"        &lt;h:commandButton action=\"#{entry.destroy}\" value=\"#{msg."
+"Destroy}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+
+#. Tag: para
+#: Conversations.xml:376
+#, no-c-format
+msgid "We imagine that you will want to customize this for your own application."
+msgstr "Wir denken, dass Sie dies für Ihre eigene Anwendung anpassen wollen."
+
+#. Tag: para
+#: Conversations.xml:387
+#, no-c-format
+msgid ""
+"The conversation list is nice, but it takes up a lot of space on the page, "
+"so you probably don&#39;t want to put it on <emphasis>every</emphasis> page."
+msgstr "Die Konversationsliste ist schön, verbraucht aber eine Menge Platz auf der Seite, so dass Sie sie wahrscheinlich nicht auf <emphasis>jede</emphasis> Seite stellen wollen."
+
+#. Tag: para
+#: Conversations.xml:390
+#, no-c-format
+msgid "Notice that the conversation list lets the user destroy workspaces."
+msgstr "Beachten Sie, dass die Konversationsliste den Benutzer Workspaces zerstören lässt."
+
+#. Tag: title
+#: Conversations.xml:396
+#, no-c-format
+msgid "Breadcrumbs"
+msgstr "Breadcrumbs"
+
+#. Tag: para
+#: Conversations.xml:397
+#, no-c-format
+msgid ""
+"Breadcrumbs are useful in applications which use a nested conversation "
+"model. The breadcrumbs are a list of links to conversations in the current "
+"conversation stack:"
+msgstr "Breadcrumbs sind in Anwendungen von Nutzen, die ein verschachteltes Konversationsmodell verwenden. Die Breadcrumbs sind eine Liste von Links zu Konversationen im aktuellen Konversations-Stack:"
+
+#. Tag: programlisting
+#: Conversations.xml:400
+#, no-c-format
+msgid ""
+"&lt;t:dataList value=\"#{conversationStack}\" var=\"entry\"&gt;\n"
+"    &lt;h:outputText value=\" | \"/&gt; \n"
+"    &lt;h:commandLink value=\"#{entry.description}\" action=\"#{entry.select}"
+"\"/&gt;\n"
+"&lt;/t:dataList&gt;"
+msgstr ""
+"&lt;t:dataList value=\"#{conversationStack}\" var=\"entry\"&gt;\n"
+"    &lt;h:outputText value=\" | \"/&gt; \n"
+"    &lt;h:commandLink value=\"#{entry.description}\" action=\"#{entry.select}"
+"\"/&gt;\n"
+"&lt;/t:dataList&gt;"
+
+#. Tag: para
+#: Conversations.xml:413
+#, no-c-format
+msgid ""
+"Please refer to the Seam Issue Tracker demo to see all this functionality in "
+"action!"
+msgstr "Um sich diese Funktionalität in Action anzusehen, schauen Sie sich bitte das Seam Issue Tracker Demo an!"
+
+#. Tag: title
+#: Conversations.xml:421
+#, no-c-format
+msgid "Conversational components and JSF component bindings"
+msgstr "Konversationelle Komponenten und JSF-Komponenten-Bindings"
+
+#. Tag: para
+#: Conversations.xml:422
+#, no-c-format
+msgid ""
+"Conversational components have one minor limitation: they cannot be used to "
+"hold bindings to JSF components. (We generally prefer not to use this "
+"feature of JSF unless absolutely necessary, since it creates a hard "
+"dependency from application logic to the view.) On a postback request, "
+"component bindings are updated during the Restore View phase, before the "
+"Seam conversation context has been restored."
+msgstr ""
+"Konversationelle Komponenten besitzen eine kleinere Einschränkung: Sie können nicht dazu verwendet werden, um Bindings zu JSF-Komponenten zu halten. (Wir ziehen es im allgemeinen vor, dieses Feature von JSF nicht zu verwenden, außer es ist absolut notwendig, da dadurch eine starke Abhängigkeit der Applikationslogik von der Ansicht"
+"entsteht). Bei einer Postback-Anfrage werden Komponenten-Bindings während der \"Ansicht wiederherstellen\"-Phase (Restore View) aktualisiert, ehe der Seam Konversationskontext wiederhergestellt wurde."
+
+#. Tag: para
+#: Conversations.xml:425
+#, no-c-format
+msgid ""
+"To work around this use an event scoped component to store the component "
+"bindings and inject it into the conversation scoped component that requires "
+"it."
+msgstr "Um dies zu umgehen, verwenden Sie eine ereignisbegrenzte Komponente zur Speicherung der Komponenten-Bindings und speisen Sie diese in die konversationsbegrenzte Komponente ein, die diese benötigt."
+
+#. Tag: programlisting
+#: Conversations.xml:428
+#, no-c-format
+msgid ""
+"@Name(\"grid\")\n"
+"@Scope(ScopeType.EVENT)\n"
+"public class Grid\n"
+"{\n"
+"    private HtmlPanelGrid htmlPanelGrid;\n"
+"\n"
+"    // getters and setters\n"
+"    ...\n"
+"}"
+msgstr ""
+"@Name(\"grid\")\n"
+"@Scope(ScopeType.EVENT)\n"
+"public class Grid\n"
+"{\n"
+"    private HtmlPanelGrid htmlPanelGrid;\n"
+"\n"
+"    // getters and setters\n"
+"    ...\n"
+"}"
+
+#. Tag: programlisting
+#: Conversations.xml:429
+#, no-c-format
+msgid ""
+"@Name(\"gridEditor\")\n"
+"@Scope(ScopeType.CONVERSATION)\n"
+"public class GridEditor\n"
+"{\n"
+"    @In(required=false)\n"
+"    private Grid grid;\n"
+"    \n"
+"    ...\n"
+"}"
+msgstr ""
+"@Name(\"gridEditor\")\n"
+"@Scope(ScopeType.CONVERSATION)\n"
+"public class GridEditor\n"
+"{\n"
+"    @In(required=false)\n"
+"    private Grid grid;\n"
+"    \n"
+"    ...\n"
+"}"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Drools.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Drools.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Drools.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,421 @@
+# translation of Drools.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Jasna Dimanoski <jdimanos at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Drools\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2007-07-18 15:35+1000\n"
+"Last-Translator: Jasna Dimanoski <jdimanos at redhat.com>\n"
+"Language-Team:  <de at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Drools.xml:6
+#, no-c-format
+msgid "Seam and JBoss Rules"
+msgstr "Seam und JBoss Regeln"
+
+#. Tag: para
+#: Drools.xml:7
+#, no-c-format
+msgid ""
+"Seam makes it easy to call JBoss Rules (Drools) rulebases from Seam "
+"components or jBPM process definitions."
+msgstr ""
+"Seam macht es einfach, JBoss Rules (Drools) Regelgrundlagen von Seam "
+"Komponenten oder jBPM Prozessdefinitionen abzurufen."
+
+#. Tag: title
+#: Drools.xml:11
+#, no-c-format
+msgid "Installing rules"
+msgstr "Installation der Regeln"
+
+#. Tag: para
+#: Drools.xml:12
+#, no-c-format
+msgid ""
+"The first step is to make an instance of <literal>org.drools.RuleBase</"
+"literal> available in a Seam context variable. In most rules-driven "
+"applications, rules need to be dynamically deployable, so you will need to "
+"implement some solution that allows you to deploy rules and make them "
+"available to Seam (a future release of Drools will provide a Rule Server "
+"that solves this problem). For testing purposes, Seam provides a built-in "
+"component that compiles a static set of rules from the classpath. You can "
+"install this component via <literal>components.xml</literal>:"
+msgstr ""
+"Zunächst muss eine Instanz von <literal>org.drools.RuleBase</literal> in "
+"einer Seam Kontext-Variablen verfügbar gemacht werden. Bei den meisten Regel-"
+"getriebenen Anwendungen müssen die Regeln dynamisch deploybar sein, d.h. Sie "
+"werden eine Lösung implementieren müssen, die es gestattet Regeln zu "
+"deployen und diese für Seam verfügbar zu machen (eine zukünftige Release von "
+"Drools wird einen \"Rule Server\" liefern, der dieses Problem löst). Zu "
+"Testzwecken liefert Seam eine eingebaute Komponente, die einen statischen "
+"Satz von Regeln vom Klassenpfad kompiliert. Sie können diese Komponente via "
+"<literal>components.xml</literal> installieren:"
+
+#. Tag: programlisting
+#: Drools.xml:15
+#, no-c-format
+msgid ""
+"&lt;drools:rule-base name=\"policyPricingRules\"&gt;\n"
+"    &lt;drools:rule-files&gt;\n"
+"        &lt;value&gt;policyPricingRules&lt;/value&gt;\n"
+"    &lt;/drools:rule-files&gt;\n"
+"&lt;/drools:rule-base&gt;"
+msgstr ""
+"&lt;drools:rule-base name=\"policyPricingRules\"&gt;\n"
+"    &lt;drools:rule-files&gt;\n"
+"        &lt;value&gt;policyPricingRules&lt;/value&gt;\n"
+"    &lt;/drools:rule-files&gt;\n"
+"&lt;/drools:rule-base&gt;"
+
+#. Tag: para
+#: Drools.xml:16
+#, no-c-format
+msgid ""
+"This component compiles rules from a set of <literal>.drl</literal> files "
+"and caches an instance of <literal>org.drools.RuleBase</literal> in the Seam "
+"<literal>APPLICATION</literal> context. Note that it is quite likely that "
+"you will need to install multiple rule bases in a rule-driven application."
+msgstr ""
+"Diese Komponente kompiliert Regeln eines Satzes von <literal>.drl</literal>-"
+"Dateien und cacht eine Instanz von <literal>org.drools.RuleBase</literal> im "
+"Seam <literal>APPLICATION</literal>-Kontext. Beachten Sie, dass es recht "
+"wahrscheinlich ist, dass Sie in einer Regel-getriebenen Anwendung mehrere "
+"Regelgrundlagen werden installieren müssen."
+
+#. Tag: para
+#: Drools.xml:19
+#, no-c-format
+msgid ""
+"If you want to use a Drools DSL, you alse need to specify the DSL definition:"
+msgstr ""
+"Wenn Sie Drools DSL verwenden möchten, so müssen Sie auch die DSL-Definition "
+"festlegen:"
+
+#. Tag: programlisting
+#: Drools.xml:22
+#, no-c-format
+msgid ""
+"&lt;drools:rule-base name=\"policyPricingRules\" dsl-file=\"policyPricing.dsl"
+"\"&gt;\n"
+"    &lt;drools:rule-files&gt;\n"
+"        &lt;value&gt;policyPricingRules&lt;/value&gt;\n"
+"    &lt;/drools:rule-files&gt;\n"
+"&lt;/drools:rule-base&gt;"
+msgstr ""
+"&lt;drools:rule-base name=\"policyPricingRules\" dsl-file=\"policyPricing.dsl"
+"\"&gt;\n"
+"    &lt;drools:rule-files&gt;\n"
+"        &lt;value&gt;policyPricingRules&lt;/value&gt;\n"
+"    &lt;/drools:rule-files&gt;\n"
+"&lt;/drools:rule-base&gt;"
+
+#. Tag: para
+#: Drools.xml:23
+#, no-c-format
+msgid ""
+"Next, we need to make an instance of <literal>org.drools.WorkingMemory</"
+"literal> available to each conversation. (Each <literal>WorkingMemory</"
+"literal> accumulates facts relating to the current conversation.)"
+msgstr ""
+"Anschließend müssen wir jeder Konversation eine Instanz von <literal>org."
+"drools.WorkingMemory</literal> verfügbar machen. (Jedes "
+"<literal>WorkingMemory</literal> akkumuliert Fakten, die sich auf die "
+"aktuelle Version beziehen)."
+
+#. Tag: programlisting
+#: Drools.xml:26
+#, no-c-format
+msgid ""
+"&lt;drools:managed-working-memory name=\"policyPricingWorkingMemory\" auto-"
+"create=\"true\" rule-base=\"#{policyPricingRules}\"/&gt;"
+msgstr ""
+"&lt;drools:managed-working-memory name=\"policyPricingWorkingMemory\" auto-"
+"create=\"true\" rule-base=\"#{policyPricingRules}\"/&gt;"
+
+#. Tag: para
+#: Drools.xml:27
+#, no-c-format
+msgid ""
+"Notice that we gave the <literal>policyPricingWorkingMemory</literal> a "
+"reference back to our rule base via the <literal>ruleBase</literal> "
+"configuration property."
+msgstr ""
+"Beachten Sie, dass wir <literal>policyPricingWorkingMemory</literal> durch "
+"die <literal>ruleBase</literal>-Konfigurations-Property einen Rückverweis "
+"auf unsere Regelbasis gegeben haben."
+
+#. Tag: title
+#: Drools.xml:33
+#, no-c-format
+msgid "Using rules from a Seam component"
+msgstr "Verwendung von Regeln einer Seam-Komponente"
+
+#. Tag: para
+#: Drools.xml:34
+#, no-c-format
+msgid ""
+"We can now inject our <literal>WorkingMemory</literal> into any Seam "
+"component, assert facts, and fire rules:"
+msgstr ""
+"Wir können nun unser <literal>WorkingMemory</literal> in jede Seam "
+"Komponente einspeisen, Fakten bestätigen und Regeln aussetzen:"
+
+#. Tag: programlisting
+#: Drools.xml:37
+#, no-c-format
+msgid ""
+"@In WorkingMemory policyPricingWorkingMemory;\n"
+"\n"
+"@In Policy policy;\n"
+"@In Customer customer;\n"
+"\n"
+"public void pricePolicy() throws FactException\n"
+"{\n"
+"    policyPricingWorkingMemory.assertObject(policy);\n"
+"    policyPricingWorkingMemory.assertObject(customer);\n"
+"    policyPricingWorkingMemory.fireAllRules();\n"
+"}"
+msgstr ""
+"@In WorkingMemory policyPricingWorkingMemory;\n"
+"\n"
+"@In Policy policy;\n"
+"@In Customer customer;\n"
+"\n"
+"public void pricePolicy() throws FactException\n"
+"{\n"
+"    policyPricingWorkingMemory.assertObject(policy);\n"
+"    policyPricingWorkingMemory.assertObject(customer);\n"
+"    policyPricingWorkingMemory.fireAllRules();\n"
+"}"
+
+#. Tag: title
+#: Drools.xml:41
+#, no-c-format
+msgid "Using rules from a jBPM process definition"
+msgstr "Verwendung von Regeln einer jBPM-Prozess-Definition"
+
+#. Tag: para
+#: Drools.xml:42
+#, no-c-format
+msgid ""
+"You can even allow a rule base to act as a jBPM action handler, decision "
+"handler, or assignment handler&mdash;in either a pageflow or business "
+"process definition."
+msgstr ""
+"Sie können sogar erlauben, dass eine Regelgrundlage als jBPM-\"Action Handler"
+"\", \"Decision -Handler\" oder \"Assignment-Handler\" &mdash; in einem "
+"Pageflow oder einer Business-Prozess-Definition fungiert."
+
+#. Tag: programlisting
+#: Drools.xml:45
+#, no-c-format
+msgid ""
+"&lt;decision name=\"approval\"&gt;\n"
+"         \n"
+"    &lt;handler class=\"org.jboss.seam.drools.DroolsDecisionHandler\"&gt;\n"
+"        &lt;workingMemoryName&gt;orderApprovalRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"        &lt;assertObjects&gt;\n"
+"            &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"            &lt;element&gt;#{order}&lt;/element&gt;\n"
+"            &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"        &lt;/assertObjects&gt;\n"
+"    &lt;/handler&gt;\n"
+"    \n"
+"    &lt;transition name=\"approved\" to=\"ship\"&gt;\n"
+"        &lt;action class=\"org.jboss.seam.drools.DroolsActionHandler\"&gt;\n"
+"            &lt;workingMemoryName&gt;shippingRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"            &lt;assertObjects&gt;\n"
+"                &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"            &lt;/assertObjects&gt;\n"
+"        &lt;/action&gt;\n"
+"    &lt;/transition&gt;\n"
+"    \n"
+"    &lt;transition name=\"rejected\" to=\"cancelled\"/&gt;\n"
+"    \n"
+"&lt;/decision&gt;"
+msgstr ""
+"&lt;decision name=\"approval\"&gt;\n"
+"         \n"
+"    &lt;handler class=\"org.jboss.seam.drools.DroolsDecisionHandler\"&gt;\n"
+"        &lt;workingMemoryName&gt;orderApprovalRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"        &lt;assertObjects&gt;\n"
+"            &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"            &lt;element&gt;#{order}&lt;/element&gt;\n"
+"            &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"        &lt;/assertObjects&gt;\n"
+"    &lt;/handler&gt;\n"
+"    \n"
+"    &lt;transition name=\"approved\" to=\"ship\"&gt;\n"
+"        &lt;action class=\"org.jboss.seam.drools.DroolsActionHandler\"&gt;\n"
+"            &lt;workingMemoryName&gt;shippingRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"            &lt;assertObjects&gt;\n"
+"                &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"            &lt;/assertObjects&gt;\n"
+"        &lt;/action&gt;\n"
+"    &lt;/transition&gt;\n"
+"    \n"
+"    &lt;transition name=\"rejected\" to=\"cancelled\"/&gt;\n"
+"    \n"
+"&lt;/decision&gt;"
+
+#. Tag: para
+#: Drools.xml:46
+#, no-c-format
+msgid ""
+"The <literal>&lt;assertObjects&gt;</literal> element specifies EL "
+"expressions that return an object or collection of objects to be asserted as "
+"facts into the <literal>WorkingMemory</literal>."
+msgstr ""
+"Das <literal>&lt;assertObjects&gt;</literal>-Element legt EL-Ausdrücke fest, "
+"die ein Objekt oder eine Collection von Objekten widergeben, damit diese als "
+"Fakten im <literal>WorkingMemory</literal> bestätigt werden."
+
+#. Tag: para
+#: Drools.xml:49
+#, no-c-format
+msgid "There is also support for using Drools for jBPM task assignments:"
+msgstr ""
+"Es gibt auch Support für die Verwendung von Drools für jBPM-"
+"Aufgabenzuteilungen:"
+
+#. Tag: programlisting
+#: Drools.xml:52
+#, no-c-format
+msgid ""
+"&lt;task-node name=\"review\"&gt;\n"
+"    &lt;task name=\"review\" description=\"Review Order\"&gt;\n"
+"        &lt;assignment handler=\"org.jboss.seam.drools."
+"DroolsAssignmentHandler\"&gt;\n"
+"            &lt;workingMemoryName&gt;orderApprovalRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"            &lt;assertObjects&gt;\n"
+"                &lt;element&gt;#{actor}&lt;/element&gt;\n"
+"                &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"            &lt;/assertObjects&gt;\n"
+"        &lt;/assignment&gt;\n"
+"    &lt;/task&gt;\n"
+"    &lt;transition name=\"rejected\" to=\"cancelled\"/&gt;\n"
+"    &lt;transition name=\"approved\" to=\"approved\"/&gt;\n"
+"&lt;/task-node&gt;"
+msgstr ""
+"&lt;task-node name=\"review\"&gt;\n"
+"    &lt;task name=\"review\" description=\"Review Order\"&gt;\n"
+"        &lt;assignment handler=\"org.jboss.seam.drools."
+"DroolsAssignmentHandler\"&gt;\n"
+"            &lt;workingMemoryName&gt;orderApprovalRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"            &lt;assertObjects&gt;\n"
+"                &lt;element&gt;#{actor}&lt;/element&gt;\n"
+"                &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"            &lt;/assertObjects&gt;\n"
+"        &lt;/assignment&gt;\n"
+"    &lt;/task&gt;\n"
+"    &lt;transition name=\"rejected\" to=\"cancelled\"/&gt;\n"
+"    &lt;transition name=\"approved\" to=\"approved\"/&gt;\n"
+"&lt;/task-node&gt;"
+
+#. Tag: para
+#: Drools.xml:53
+#, no-c-format
+msgid ""
+"Certain objects are available to the rules as Drools globals, namely the "
+"jBPM <literal>Assignable</literal>, as <literal>assignable</literal> and a "
+"Seam <literal>Decision</literal> object, as <literal>decision</literal>. "
+"Rules which handle decisions should call <literal>decision.setOutcome"
+"(\"result\")</literal> to determine the result of the decision. Rules which "
+"perform assignments should set the actor id using the <literal>Assignable</"
+"literal>."
+msgstr ""
+"Bestimmte Objekte sind für die Regeln als Drools \"globals\" verfügbar, und "
+"zwar das jBPM <literal>Assignable</literal> als <literal>assignable</"
+"literal> und ein Seam <literal>Decision</literal>-Objekt als "
+"<literal>decision</literal>. Regel, die \"decisions\" bearbeiten, sollten "
+"<literal>decision.setOutcome(\"result\")</literal> aufrufen, um das Ergebnis "
+"der \"decision\" zu bestimmen. Regeln, die Zuweisungen durchführen, sollten "
+"die \"actor\"-id unter Verwendung von <literal>Assignable</literal> "
+"einstellen."
+
+#. Tag: programlisting
+#: Drools.xml:56
+#, no-c-format
+msgid ""
+"package org.jboss.seam.examples.shop\n"
+"\n"
+"import org.jboss.seam.drools.Decision\n"
+"\n"
+"global Decision decision\n"
+"\n"
+"rule \"Approve Order For Loyal Customer\"\n"
+"  when\n"
+"    Customer( loyaltyStatus == \"GOLD\" )\n"
+"    Order( totalAmount &lt;= 10000 )\n"
+"  then\n"
+"    decision.setOutcome(\"approved\");\n"
+"end"
+msgstr ""
+"package org.jboss.seam.examples.shop\n"
+"\n"
+"import org.jboss.seam.drools.Decision\n"
+"\n"
+"global Decision decision\n"
+"\n"
+"rule \"Approve Order For Loyal Customer\"\n"
+"  when\n"
+"    Customer( loyaltyStatus == \"GOLD\" )\n"
+"    Order( totalAmount &lt;= 10000 )\n"
+"  then\n"
+"    decision.setOutcome(\"approved\");\n"
+"end"
+
+#. Tag: programlisting
+#: Drools.xml:57
+#, no-c-format
+msgid ""
+"package org.jboss.seam.examples.shop\n"
+"\n"
+"import org.jbpm.taskmgmt.exe.Assignable\n"
+"\n"
+"global Assignable assignable\n"
+"\n"
+"rule \"Assign Review For Small Order\"\n"
+"  when\n"
+"    Order( totalAmount &lt;= 100 )\n"
+"  then\n"
+"    assignable.setPooledActors( new String[] {\"reviewers\"} );\n"
+"end"
+msgstr ""
+"package org.jboss.seam.examples.shop\n"
+"\n"
+"import org.jbpm.taskmgmt.exe.Assignable\n"
+"\n"
+"global Assignable assignable\n"
+"\n"
+"rule \"Assign Review For Small Order\"\n"
+"  when\n"
+"    Order( totalAmount &lt;= 100 )\n"
+"  then\n"
+"    assignable.setPooledActors( new String[] {\"reviewers\"} );\n"
+"end"

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Elenhancements.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Elenhancements.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Elenhancements.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,275 @@
+# translation of Elenhancements.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Jasna Dimanoski <jdimanos at redhat.com>, 2007, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Elenhancements\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2008-03-26 17:53+1000\n"
+"Last-Translator: Jasna Dimanoski <jdimanos at redhat.com>\n"
+"Language-Team:  <de at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Elenhancements.xml:6
+#, no-c-format
+msgid "Expression language enhancements"
+msgstr "Expression Language Verbesserungen"
+
+#. Tag: para
+#: Elenhancements.xml:7
+#, no-c-format
+msgid ""
+"The standard Unified Expression Language (EL) assumes that any parameters to "
+"a method expression will be provided by Java code. This means that a method "
+"with parameters cannot be used as a JSF method binding. Seam provides an "
+"enhancement to the EL that allows parameters to be included in a method "
+"expression itself. This applies to <emphasis>any</emphasis> Seam method "
+"expression, including any JSF method binding, for example:"
+msgstr ""
+"Die standardmäßige tandard Unified Expression Language (EL) geht davon aus, "
+"dass jegliche Parameter eines Methoden-Ausdrucks durch Java-Code geliefert "
+"werden. Dies bedeutet, dass eine Methode mit Parametern nicht als ein JSF "
+"Methoden-Binding verwendet werden kann. Seam liefert eine Verbesserung zur "
+"EL, die es erlaubt, Parameter in einem Methoden-Ausdruck mit einzuschließen. "
+"Dies gilt für <emphasis>jeden</emphasis> Seam Methoden-Ausdruck, "
+"einschließlich eines beliebigen JSF Methoden-Bindings, zum Beispiel:"
+
+#. Tag: programlisting
+#: Elenhancements.xml:10
+#, no-c-format
+msgid ""
+"&lt;s:commandButton action=\"#{hotelBooking.bookHotel(hotel)}\" value=\"Book "
+"Hotel\"/&gt;"
+msgstr ""
+"&lt;s:commandButton action=\"#{hotelBooking.bookHotel(hotel)}\" value=\"Book "
+"Hotel\"/&gt;"
+
+#. Tag: title
+#: Elenhancements.xml:12
+#, no-c-format
+msgid "Configuration"
+msgstr "Konfiguration"
+
+#. Tag: para
+#: Elenhancements.xml:13
+#, no-c-format
+msgid ""
+"To use this feature in Facelets, you will need to declare a special view "
+"handler, <literal>SeamFaceletViewHandler</literal> in <literal>faces-config."
+"xml</literal>."
+msgstr ""
+"Um dieses Feature in Facelets zu verwenden, werden Sie einen speziellen "
+"Ansichts-Handler <literal>SeamFaceletViewHandler</literal> in <literal>faces-"
+"config.xml</literal> deklarieren müssen."
+
+#. Tag: programlisting
+#: Elenhancements.xml:16
+#, no-c-format
+msgid ""
+"&lt;faces-config&gt;\n"
+"    &lt;application&gt;\n"
+"        &lt;view-handler&gt;org.jboss.seam.ui.facelet."
+"SeamFaceletViewHandler&lt;/view-handler&gt;\n"
+"    &lt;/application&gt;\n"
+"&lt;/faces-config&gt;"
+msgstr ""
+"&lt;faces-config&gt;\n"
+"    &lt;application&gt;\n"
+"        &lt;view-handler&gt;org.jboss.seam.ui.facelet."
+"SeamFaceletViewHandler&lt;/view-handler&gt;\n"
+"    &lt;/application&gt;\n"
+"&lt;/faces-config&gt;"
+
+#. Tag: title
+#: Elenhancements.xml:20
+#, no-c-format
+msgid "Usage"
+msgstr "Gebrauch"
+
+#. Tag: para
+#: Elenhancements.xml:21
+#, no-c-format
+msgid "Parameters are surrounded by parentheses, and separated by commas:"
+msgstr "Parameter sind von Klammern umgeben und durch Kommas getrennt:"
+
+#. Tag: programlisting
+#: Elenhancements.xml:24
+#, no-c-format
+msgid ""
+"&lt;h:commandButton action=\"#{hotelBooking.bookHotel(hotel, user)}\" value="
+"\"Book Hotel\"/&gt;"
+msgstr ""
+"&lt;h:commandButton action=\"#{hotelBooking.bookHotel(hotel, user)}\" value="
+"\"Book Hotel\"/&gt;"
+
+#. Tag: para
+#: Elenhancements.xml:25
+#, no-c-format
+msgid ""
+"The parameters <literal>hotel</literal> and <literal>user</literal> will be "
+"evaluated as value expressions and passed to the <literal>bookHotel()</"
+"literal> method of the component. This gives you an alternative to the use "
+"of <literal>@In</literal>."
+msgstr ""
+"Die Parameter <literal>hotel</literal> und <literal>user</literal> werden "
+"als Wert-Ausdrücke evaluiert und an die <literal>bookHotel()</literal>-"
+"Methode der Komponente weitergegeben. Dies gibt Ihnen eine Alternative zur "
+"Benutzung von <literal>@In</literal>."
+
+#. Tag: para
+#: Elenhancements.xml:28
+#, no-c-format
+msgid "Any value expression may be used as a parameter:"
+msgstr "Ein beliebiger Werte-Ausdruck kann als Parameter verwendet werden:"
+
+#. Tag: programlisting
+#: Elenhancements.xml:31
+#, no-c-format
+msgid ""
+"&lt;h:commandButton action=\"#{hotelBooking.bookHotel(hotel.id, user."
+"username)}\" value=\"Book Hotel\"/&gt;"
+msgstr ""
+"&lt;h:commandButton action=\"#{hotelBooking.bookHotel(hotel.id, user."
+"username)}\" value=\"Book Hotel\"/&gt;"
+
+#. Tag: para
+#: Elenhancements.xml:32
+#, no-c-format
+msgid "You may even pass literal strings using single or double quotes:"
+msgstr ""
+"Sie können unter Verwendung einzelner oder doppelter Anführungszeichen sogar "
+"wörtliche Strings weitergeben:"
+
+#. Tag: programlisting
+#: Elenhancements.xml:35
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=”#{printer.println( ‘Hello world!’ )}” "
+"value=”Hello”/&gt;"
+msgstr ""
+"&lt;h:commandLink action=”#{printer.println( ‘Hello world!’ )}” "
+"value=”Hello”/&gt;"
+
+#. Tag: programlisting
+#: Elenhancements.xml:36
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=’#{printer.println( “Hello again” )}’ value=’Hello’/"
+"&gt;"
+msgstr ""
+"&lt;h:commandLink action=’#{printer.println( “Hello again” )}’ value=’Hello’/"
+"&gt;"
+
+#. Tag: para
+#: Elenhancements.xml:37
+#, no-c-format
+msgid ""
+"You might even want to use this notation for all your action methods, even "
+"when you don’t have parameters to pass. This improves readability by making "
+"it clear that the expression is a method expression and not a value "
+"expression:"
+msgstr ""
+"Vielleicht möchten Sie diese Notation sogar für alle Ihre Action-Methoden "
+"verwenden, selbst wenn Sie keine Parameter weiterzugeben haben. Dies erhöht die Lesbarkeit und verdeutlicht, dass es sich bei dem Ausdruck um einen Methoden-Ausdruck und nicht um einen Werte-Ausdruck handelt:"
+
+#. Tag: programlisting
+#: Elenhancements.xml:40
+#, no-c-format
+msgid "&lt;s:link value=\"Cancel\" action=\"#{hotelBooking.cancel()}\"/&gt;"
+msgstr "&lt;s:link value=\"Cancel\" action=\"#{hotelBooking.cancel()}\"/&gt;"
+
+#. Tag: title
+#: Elenhancements.xml:44
+#, no-c-format
+msgid "Limitations"
+msgstr "Einschränkungen"
+
+#. Tag: para
+#: Elenhancements.xml:45
+#, no-c-format
+msgid "Please be aware of the following limitations:"
+msgstr "Bitte seien Sie sich folgender Einschränkungen bewusst:"
+
+#. Tag: title
+#: Elenhancements.xml:49
+#, no-c-format
+msgid "Incompatibility with JSP 2.1"
+msgstr "Inkompatibilität mit JSP 2.1"
+
+#. Tag: para
+#: Elenhancements.xml:50
+#, no-c-format
+msgid ""
+"This extension is not currently compatible with JSP 2.1. So if you want to "
+"use this extension with JSF 1.2, you will need to use Facelets. The "
+"extension works correctly with JSP 2.0."
+msgstr ""
+"Diese Erweiterung ist zum gegenwärtigen Zeitpunkt nicht mit JSP 2.1 "
+"kompatibel. Wenn Sie also diese Erweiterung mit JSF 1.2 verwenden möchten, "
+"so werden Sie Facelets verwenden müssen. Mit JSP 2.0 funktioniert die "
+"Erweiterung einwandfrei."
+
+#. Tag: title
+#: Elenhancements.xml:56
+#, no-c-format
+msgid "Calling a <literal>MethodExpression</literal> from Java code"
+msgstr "Aufruf einer <literal>MethodExpression</literal> aus Java Code"
+
+#. Tag: para
+#: Elenhancements.xml:57
+#, no-c-format
+msgid ""
+"Normally, when a <literal>MethodExpression</literal> or "
+"<literal>MethodBinding</literal> is created, the parameter types are passed "
+"in by JSF. In the case of a method binding, JSF assumes that there are no "
+"parameters to pass. With this extension, we can’t know the parameter types "
+"until after the expression has been evaluated. This has two minor "
+"consequences:"
+msgstr ""
+"Normalerweise werden bei der Erstellung einer <literal>MethodExpression</literal> oder eines <literal>MethodBinding</literal> die Parameter-Typen "
+"durch JSF weitergegeben. Im Falle eines Methoden-Binding geht JSF davon aus, dass es keine weiterzugebenden Parameters gibt. Mit dieser Erweiterung können wir nichts über die Parameter.Typen wissen, bis der Ausdruck nicht evaluiert wurde. Dies hat zwei kleinere Folgen:"
+
+#. Tag: para
+#: Elenhancements.xml:62
+#, no-c-format
+msgid ""
+"When you invoke a <literal>MethodExpression</literal> in Java code, "
+"parameters you pass may be ignored. Parameters defined in the expression "
+"will take precedence."
+msgstr ""
+"Wenn Sie eine <literal>MethodExpression</literal> in Java-Code invozieren, "
+"so können die von Ihnen weitergegebenen Parameter ignoriert werden. Die im "
+"Ausdruck definierten Parameter haben Vorrang."
+
+#. Tag: para
+#: Elenhancements.xml:67
+#, no-c-format
+msgid ""
+"Ordinarily, it is safe to call <literal>methodExpression.getMethodInfo()."
+"getParamTypes()</literal> at any time. For an expression with parameters, "
+"you must first invoke the <literal>MethodExpression</literal> before calling "
+"<literal>getParamTypes()</literal>."
+msgstr ""
+"In der Regel ist der Aufruf von <literal>methodExpression.getMethodInfo()."
+"getParamTypes()</literal> jederzeit sicher. Für einen Ausdruck mit "
+"Parametern müssen Sie zunächst die <literal>MethodExpression</literal> "
+"invozieren, ehe Sie <literal>getParamTypes()</literal> aufrufen."
+
+#. Tag: para
+#: Elenhancements.xml:72
+#, no-c-format
+msgid ""
+"Both of these cases are exceedingly rare and only apply when you want to "
+"invoke the <literal>MethodExpression</literal> by hand in Java code."
+msgstr ""
+"Beide diese Fälle sind ausgesprochen selten und gelten nur, wenn Sie die "
+"<literal>MethodExpression</literal> per Hand in Java-Code invozieren wollen."
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Events.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Events.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Events.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1819 @@
+# translation of Events.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Jasna Dimanoski <jdimanos at redhat.com>, 2007, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Events\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2008-03-08 17:54+1000\n"
+"Last-Translator: Jasna Dimanoski <jdimanos at redhat.com>\n"
+"Language-Team:  <de at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Events.xml:6
+#, no-c-format
+msgid "Events, interceptors and exception handling"
+msgstr "Ereignisse, Interzeptoren und Umgang mit Ausnahmen"
+
+#. Tag: para
+#: Events.xml:7
+#, no-c-format
+msgid ""
+"Complementing the contextual component model, there are two further basic "
+"concepts that facilitate the extreme loose-coupling that is the distinctive "
+"feature of Seam applications. The first is a strong event model where events "
+"may be mapped to event listeners via JSF-like method binding expressions. "
+"The second is the pervasive use of annotations and interceptors to apply "
+"cross-cutting concerns to components which implement business logic."
+msgstr "Es existieren zwei weitere grundlegende Konzepte, die das kontextuelle Komponentenmodell vervollständigen und die extrem lose Kopplung, die ja eines der Merkmale von Seam-Anwendungen ist, zu erleichtern. Bei ersten handelt es sich um ein starkes Event-Modell bei dem Ereignisse via JSF-artigen Method-Binding-Ausdrücken zu Event-Listenern gemappt werden können. Das zweite ist die durchgehende Verwendung von Annotationen und Interzeptoren zur Anwendung von Cross-Cutting Concerns zu Business Logic implementierenden Komponenten."
+
+#. Tag: title
+#: Events.xml:10
+#, no-c-format
+msgid "Seam events"
+msgstr "Seam Ereignisse"
+
+#. Tag: para
+#: Events.xml:11
+#, no-c-format
+msgid ""
+"The Seam component model was developed for use with <emphasis>event-driven "
+"applications</emphasis>, specifically to enable the development of fine-"
+"grained, loosely-coupled components in a fine-grained eventing model. Events "
+"in Seam come in several types, most of which we have already seen:"
+msgstr "Das Seam Komponentenmodell wurde für die Benutzung mit <emphasis>Ereignis-betriebenen Anwendungen</emphasis> entwickelt, speziell zur Aktivierung feinkörniger, lose gekoppelter Komponenten in einem feinkörnigen Eventing-Modell. Events in Seam kommen als verschiedene Typen vor, von denen wir die meisten bereits gesehen haben:"
+
+#. Tag: para
+#: Events.xml:16
+#, no-c-format
+msgid "JSF events"
+msgstr "JSF Ereignisse"
+
+#. Tag: para
+#: Events.xml:21
+#, no-c-format
+msgid "jBPM transition events"
+msgstr "jBPM-Transition Ereignisse"
+
+#. Tag: para
+#: Events.xml:26
+#, no-c-format
+msgid "Seam page actions"
+msgstr "Seam Page-Actions"
+
+#. Tag: para
+#: Events.xml:31
+#, no-c-format
+msgid "Seam component-driven events"
+msgstr "Durch Komponenten getriebene Ereignisse"
+
+#. Tag: para
+#: Events.xml:36
+#, no-c-format
+msgid "Seam contextual events"
+msgstr "Seam kontextuelle Ereignisse"
+
+#. Tag: para
+#: Events.xml:41
+#, no-c-format
+msgid ""
+"All of these various kinds of events are mapped to Seam components via JSF "
+"EL method binding expressions. For a JSF event, this is defined in the JSF "
+"template:"
+msgstr ""
+"Alle diese verschiedenen Arten von Ereignissen sind via JSF "
+"EL Methoden-Binding-Ausdrücken zu Seam-Komponenten gemappt . Für ein JSF-Ereignis ist dies im JSF-Template definiert:"
+
+#. Tag: programlisting
+#: Events.xml:44
+#, no-c-format
+msgid ""
+"&lt;h:commandButton value=\"Click me!\" action=\"#{helloWorld.sayHello}\"/"
+"&gt;"
+msgstr ""
+"&lt;h:commandButton value=\"Click me!\" action=\"#{helloWorld.sayHello}\"/"
+"&gt;"
+
+#. Tag: para
+#: Events.xml:45
+#, no-c-format
+msgid ""
+"For a jBPM transition event, it is specified in the jBPM process definition "
+"or pageflow definition:"
+msgstr ""
+"Für ein jBPM Transition-Ereignis ist dies in der jBPM-Prozessdefinition "
+"oder Pageflow-Definition:"
+
+#. Tag: programlisting
+#: Events.xml:48
+#, no-c-format
+msgid ""
+"&lt;start-page name=\"hello\" view-id=\"/hello.jsp\"&gt;\n"
+"    &lt;transition to=\"hello\"&gt;\n"
+"        &lt;action expression=\"#{helloWorld.sayHello}\"/&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/start-page&gt;"
+msgstr ""
+"&lt;start-page name=\"hello\" view-id=\"/hello.jsp\"&gt;\n"
+"    &lt;transition to=\"hello\"&gt;\n"
+"        &lt;action expression=\"#{helloWorld.sayHello}\"/&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/start-page&gt;"
+
+#. Tag: para
+#: Events.xml:49
+#, no-c-format
+msgid ""
+"You can find out more information about JSF events and jBPM events "
+"elsewhere. Lets concentrate for now upon the two additional kinds of events "
+"defined by Seam."
+msgstr "Weitere Informationen zu JSF-Ereignissen und jBPM-Ereignissen finden Sie an anderer Stelle. Wir wollen uns jetzt auf zwei weitere Arten von Ereignissen konzentrieren, die durch Seam definiert werden."
+
+#. Tag: title
+#: Events.xml:52
+#, no-c-format
+msgid "Page actions"
+msgstr "Page-Actions"
+
+#. Tag: para
+#: Events.xml:53
+#, no-c-format
+msgid ""
+"A Seam page action is an event that occurs just before we render a page. We "
+"declare page actions in <literal>WEB-INF/pages.xml</literal>. We can define "
+"a page action for either a particular JSF view id:"
+msgstr "Bei einer Seam Page-Action handelt es sich um ein Ereignis, das unmittelbar vor dem Rendern einer Seite geschieht. Wir deklarieren Page-Actions in <literal>WEB-INF/pages.xml</literal>. Wir können eine Page-Action deklarieren entweder für eine bestimmte JSF-Ansicht-ID:"
+
+#. Tag: programlisting
+#: Events.xml:56
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\" action=\"#{helloWorld.sayHello}\"/&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\" action=\"#{helloWorld.sayHello}\"/&gt;\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Events.xml:57
+#, no-c-format
+msgid ""
+"Or we can use a wildcard to specify an action that applies to all view ids "
+"that match the pattern:"
+msgstr "Oder aber wir können einen Platzhalter verwenden, um eine Action festzulegen, die für alle Ansicht-IDs gilt, die mit dem folgenden Muster übereinstimmen:"
+
+#. Tag: programlisting
+#: Events.xml:60
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello/*\" action=\"#{helloWorld.sayHello}\"/&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello/*\" action=\"#{helloWorld.sayHello}\"/&gt;\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Events.xml:61
+#, no-c-format
+msgid ""
+"If multiple wildcarded page actions match the current view-id, Seam will "
+"call all the actions, in order of least-specific to most-specific."
+msgstr "Falls mehrere Page-Actions mit Platzhalter mit der aktuellen Ansicht-ID übereinstimmen, so ruft Seam nach \"am wenigsten spezifisch\" bis \"am meisten spezifisch\" alle Actions auf."
+
+#. Tag: para
+#: Events.xml:64
+#, no-c-format
+msgid ""
+"The page action method can return a JSF outcome. If the outcome is non-null, "
+"Seam will use the defined navigation rules to navigate to a view."
+msgstr "Die Page-Action Methode kann ein JSF-Ergebnis liefern. Falls das Ergebnis nicht Null ist, so verwendet Seam die definierten Navigationsregeln, um zu einer Ansicht zu navigieren."
+
+#. Tag: para
+#: Events.xml:67
+#, no-c-format
+msgid ""
+"Furthermore, the view id mentioned in the <literal>&lt;page&gt;</literal> "
+"element need not correspond to a real JSP or Facelets page! So, we can "
+"reproduce the functionality of a traditional action-oriented framework like "
+"Struts or WebWork using page actions. For example:"
+msgstr "Desweiteren muss die im <literal>&lt;page&gt;</literal>-Element erwähnte Ansicht-ID nicht mit einer echten JSP- oder Facelets-Seite übereinstimmen! Wir können also die Funktionalität eines traditionellen Action-orientierten Frameworks wie Struts oder WebWork unter Verwendung von Page-Actions reproduizieren. Zum Beispiel:"
+
+#. Tag: programlisting
+#: Events.xml:70
+#, no-c-format
+msgid "TODO: translate struts action into page action"
+msgstr "TODO: Struts-Action in Page-Action übersetzen"
+
+#. Tag: para
+#: Events.xml:71
+#, no-c-format
+msgid ""
+"This is quite useful if you want to do complex things in response to non-"
+"faces requests (for example, HTTP GET requests)."
+msgstr ""
+"Dies ist ziemlich nützlich, wenn Sie komplexe Dinge als Reaktion auf nicht-"
+"faces Anfragen durchführen wollen (z.B. HTTP GET Anfragen)."
+
+#. Tag: title
+#: Events.xml:74
+#, no-c-format
+msgid "Page parameters"
+msgstr "Seitenparameter"
+
+#. Tag: para
+#: Events.xml:75
+#, no-c-format
+msgid ""
+"A JSF faces request (a form submission) encapsulates both an \"action\" (a "
+"method binding) and \"parameters\" (input value bindings). A page action "
+"might also needs parameters!"
+msgstr "Eine JSF faces Anfrage (eine Formulareinreichung) enthält sowohl eine \"Action\" (ein Method-Binding) und \"Parameter\" (Eingabewert-Bindings). Eine Page-Action benötigt möglicherweise ebenfalls Parameter!"
+
+#. Tag: para
+#: Events.xml:78
+#, no-c-format
+msgid ""
+"Since GET requests are bookmarkable, page parameters are passed as human-"
+"readable request parameters. (Unlike JSF form inputs, which are anything "
+"but!)"
+msgstr "Da GET-Anfragen mit Lesezeichen versehen werden können, werden Seitenparameter als lesefreundliche (human-readable) Anfragenparameter weitergegeben. (Im Gegensatz zu JSF-Formulareingaben, die alles andere sind!)"
+
+#. Tag: para
+#: Events.xml:81
+#, no-c-format
+msgid ""
+"Seam lets us provide a value binding that maps a named request parameter to "
+"an attribute of a model object."
+msgstr "Seam gestattet es uns eine Wertbindung (\"Value Binding\") bereitzustellen, das einen benannten Anfragenparameter zu einem Attribut eines Modellobjekts mappt."
+
+#. Tag: programlisting
+#: Events.xml:84
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\" action=\"#{helloWorld.sayHello}\"&gt;\n"
+"        &lt;param name=\"firstName\" value=\"#{person.firstName}\"/&gt;\n"
+"        &lt;param name=\"lastName\" value=\"#{person.lastName}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\" action=\"#{helloWorld.sayHello}\"&gt;\n"
+"        &lt;param name=\"firstName\" value=\"#{person.firstName}\"/&gt;\n"
+"        &lt;param name=\"lastName\" value=\"#{person.lastName}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Events.xml:85
+#, no-c-format
+msgid ""
+"The <literal>&lt;param&gt;</literal> declaration is bidirectional, just like "
+"a value binding for a JSF input:"
+msgstr "Die <literal>&lt;param&gt;</literal>-Deklaration ist bidirektional, ebenso wie die Wertbindung (\"Value-Binding) für eine JSF-Eingabe:"
+
+#. Tag: para
+#: Events.xml:90
+#, no-c-format
+msgid ""
+"When a non-faces (GET) request for the view id occurs, Seam sets the value "
+"of the named request parameter onto the model object, after performing "
+"appropriate type conversions."
+msgstr "Wenn es zu einer nicht-faces (GET) Anfrage für die Ansichts-ID kommt, so setzt Seam den Wert des genannten Anfragenparameters in das Modellobjekt, nachdem es die entsprechenden Typkonversionen durchgeführt hat."
+
+#. Tag: para
+#: Events.xml:95
+#, no-c-format
+msgid ""
+"Any <literal>&lt;s:link&gt;</literal> or <literal>&lt;s:button&gt;</literal> "
+"transparently includes the request parameter. The value of the parameter is "
+"determined by evaluating the value binding during the render phase (when the "
+"<literal>&lt;s:link&gt;</literal> is rendered)."
+msgstr "Jedes <literal>&lt;s:link&gt;</literal> oder <literal>&lt;s:button&gt;</literal> beinhaltet auf transparente Wese den Anfragenparameter. Der Wert des Parameters wird durch Evaluierung des \"Value-Binding\" (Wertbindung) während der Render-Phase bestimmt (wenn das <literal>&lt;s:link&gt;</literal> gerendert wird)."
+
+#. Tag: para
+#: Events.xml:100
+#, no-c-format
+msgid ""
+"Any navigation rule with a <literal>&lt;redirect/&gt;</literal> to the view "
+"id transparently includes the request parameter. The value of the parameter "
+"is determined by evaluating the value binding at the end of the invoke "
+"application phase."
+msgstr "Jede Navigationsregel mit einem <literal>&lt;redirect/&gt;</literal> zur Ansichts-ID beinhaltet auf transparente Weise den Anfragenparameter. Der Wert des Parameters wird bestimmt durch Evaluierung des \"Value Binding\" (Wertbindung) am Ende Phase während derer die Anwendung aufgerufen wird."
+
+#. Tag: para
+#: Events.xml:105
+#, no-c-format
+msgid ""
+"The value is transparently propagated with any JSF form submission for the "
+"page with the given view id. (This means that view parameters behave like "
+"<literal>PAGE</literal>-scoped context variables for faces requests."
+msgstr "Der Wert wird auf transparente Weise mit jedem eingereichten JSF-Formular  für die Seite mit der gegebenen Ansicht-ID fortgepflanzt. (Dies bedeutet, dass sich Ansichtsparameter wie <literal>PAGE</literal>-begrenzte Kontextvariablen für \"faces\"-Anfragen verhalten."
+
+#. Tag: para
+#: Events.xml:110
+#, no-c-format
+msgid ""
+"The essential idea behind all this is that <emphasis>however</emphasis> we "
+"get from any other page to <literal>/hello.jsp</literal> (or from <literal>/"
+"hello.jsp</literal> back to <literal>/hello.jsp</literal>), the value of the "
+"model attribute referred to in the value binding is \"remembered\", without "
+"the need for a conversation (or other server-side state)."
+msgstr "Die zugrundeliegende Idee hinter all dem ist es, dass <emphasis>egal auf welche Weise</emphasis> wir von einer anderen Seite auf <literal>/hello.jsp</literal> (oder von <literal>/hello.jsp</literal> zurück zu <literal>/hello.jsp</literal>) gelangt, der Wert des Modellattribut auf den sich das \"Value Binding\" (Wertbindung) bezieht nicht \"vergessen\" wird, auch ohne dass eine Konversation benötigt würde (oder ein anderer Status auf Serverseite)."
+
+#. Tag: para
+#: Events.xml:113
+#, no-c-format
+msgid ""
+"This all sounds pretty complex, and you&#39;re probably wondering if such an "
+"exotic construct is really worth the effort. Actually, the idea is very "
+"natural once you \"get it\". It is definitely worth taking the time to "
+"understand this stuff. Page parameters are the most elegant way to propagate "
+"state across a non-faces request. They are especially cool for problems like "
+"search screens with bookmarkable results pages, where we would like to be "
+"able to write our application code to handle both POST and GET requests with "
+"the same code. Page parameters eliminate repetitive listing of request "
+"parameters in the view definition and make redirects much easier to code."
+msgstr "All das klingt ganz schön kompliziert und Sie fragen sich wahrscheinlich, ob ein so exotisches Konstrukt tatsächlich der Mühe lohnt. Aber die Idee ist ganz normal, wenn Sie sich einmal daran gewöhnt haben. Es lohnt sich auf jeden Fall, wenn Sie sich Zeit dafür nehmen, diese Dinge zu verstehen. Seitenparameter sind die eleganteste Weise zur Fortpflanzung von Status über eine nicht-faces Anfrage hinweg. Sie sind besonders für Probleme wie  für mit Lesezeichen versehbare Ergebnisseiten von Suchbildschirmen geeignet, wo wir unseren Anwendungscode gerne so schreiben möchten, dass POST- und GET-Anfragen mit demselben Code geschrieben werden können. Seitenparameter eliminieren die wiederholte Auflistung von Anfragenparametern in der Ansichtsdefinition und machen Umleitungen wesentlich einfacher zu kodieren."
+
+#. Tag: para
+#: Events.xml:116
+#, no-c-format
+msgid ""
+"Note that you don&#39;t need an actual page action method binding to use a "
+"page parameter. The following is perfectly valid:"
+msgstr "Beachten Sie, dass Sie kein tatsächliches Page Action Method-Binding benötigen, um einen Seitenparameter zu verwenden. Folgendes ist völlig in Ordnung und gültig:"
+
+#. Tag: programlisting
+#: Events.xml:119
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\"&gt;\n"
+"        &lt;param name=\"firstName\" value=\"#{person.firstName}\"/&gt;\n"
+"        &lt;param name=\"lastName\" value=\"#{person.lastName}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\"&gt;\n"
+"        &lt;param name=\"firstName\" value=\"#{person.firstName}\"/&gt;\n"
+"        &lt;param name=\"lastName\" value=\"#{person.lastName}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Events.xml:120
+#, no-c-format
+msgid "You can even specify a JSF converter:"
+msgstr "Sie können sogar einen JSF-Converter festlegen:"
+
+#. Tag: programlisting
+#: Events.xml:123
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/calculator.jsp\" action=\"#{calculator.calculate}"
+"\"&gt;\n"
+"        &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"        &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"        &lt;param name=\"op\" converterId=\"com.my.calculator."
+"OperatorConverter\" value=\"#{calculator.op}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/calculator.jsp\" action=\"#{calculator.calculate}"
+"\"&gt;\n"
+"        &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"        &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"        &lt;param name=\"op\" converterId=\"com.my.calculator."
+"OperatorConverter\" value=\"#{calculator.op}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+
+#. Tag: programlisting
+#: Events.xml:124
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/calculator.jsp\" action=\"#{calculator.calculate}"
+"\"&gt;\n"
+"        &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"        &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"        &lt;param name=\"op\" converter=\"#{operatorConverter}\" value=\"#"
+"{calculator.op}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/calculator.jsp\" action=\"#{calculator.calculate}"
+"\"&gt;\n"
+"        &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"        &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"        &lt;param name=\"op\" converter=\"#{operatorConverter}\" value=\"#"
+"{calculator.op}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+
+#. Tag: title
+#: Events.xml:125
+#, no-c-format
+msgid "Navigation"
+msgstr "Navigation"
+
+#. Tag: para
+#: Events.xml:126
+#, no-c-format
+msgid ""
+"You can use standard JSF navigation rules defined in <literal>faces-config."
+"xml</literal> in a Seam application. However, JSF navigation rules have a "
+"number of annoying limitations:"
+msgstr "Sie können in <literal>faces-config.xml</literal> definierte, standardmäßige JSF-Navigationsregeln in einer Seam-Anwendung verwenden. Allerdings besitzen JSF-Navigationsregeln einige störende Einschränkungen:"
+
+#. Tag: para
+#: Events.xml:131
+#, no-c-format
+msgid "It is not possible to specify request parameters to be used when redirecting."
+msgstr "Es ist nicht möglich Anfrageparameter festzulegen, die bei Weiterleitungen angewendet werden sollen."
+
+#. Tag: para
+#: Events.xml:136
+#, no-c-format
+msgid "It is not possible to begin or end conversations from a rule."
+msgstr "Es ist nicht möglich, von einer Regel Konversationen zu beginnen oder zu beenden."
+
+#. Tag: para
+#: Events.xml:141
+#, no-c-format
+msgid ""
+"Rules work by evaluating the return value of the action method; it is not "
+"possible to evaluate an arbitrary EL expression."
+msgstr "Regel funktionieren, indem Sie den Wiedergabewert der Action-Methode evaluieren; es ist nicht möglich einen beliebigen EL-Ausdruck zu evaluieren."
+
+#. Tag: para
+#: Events.xml:146
+#, no-c-format
+msgid ""
+"A further problem is that \"orchestration\" logic gets scattered between "
+"<literal>pages.xml</literal> and <literal>faces-config.xml</literal>. It&#39;"
+"s better to unify this logic into <literal>pages.xml</literal>."
+msgstr ""
+"Ein weiteres Problem ist es, dass \"Orchestrierungs\"logik zwischen "
+"<literal>pages.xml</literal> und <literal>faces-config.xml</literal> verteilt wird. Es ist besser, diese Logik in <literal>pages.xml</literal> zu vereinen."
+
+#. Tag: para
+#: Events.xml:149
+#, no-c-format
+msgid "This JSF navigation rule:"
+msgstr "Diese JSF-Navigationsregel:"
+
+#. Tag: programlisting
+#: Events.xml:152
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"    &lt;from-view-id&gt;/editDocument.xhtml&lt;/from-view-id&gt;\n"
+"    \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-action&gt;#{documentEditor.update}&lt;/from-action&gt;\n"
+"        &lt;from-outcome&gt;success&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/viewDocument.xhtml&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"    \n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+"&lt;navigation-rule&gt;\n"
+"    &lt;from-view-id&gt;/editDocument.xhtml&lt;/from-view-id&gt;\n"
+"    \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-action&gt;#{documentEditor.update}&lt;/from-action&gt;\n"
+"        &lt;from-outcome&gt;success&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/viewDocument.xhtml&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"    \n"
+"&lt;/navigation-rule&gt;"
+
+#. Tag: para
+#: Events.xml:153
+#, no-c-format
+msgid "Can be rewritten as follows:"
+msgstr "Kann wie folgt umgeschrieben werden:"
+
+#. Tag: programlisting
+#: Events.xml:156
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if-outcome=\"success\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if-outcome=\"success\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Events.xml:157
+#, no-c-format
+msgid ""
+"But it would be even nicer if we didn&#39;t have to pollute our "
+"<literal>DocumentEditor</literal> component with string-valued return values "
+"(the JSF outcomes). So Seam lets us write:"
+msgstr "Aber es wäre noch schöner, wenn wir unsere <literal>DocumentEditor</literal>-Komponente nicht mit String-wertigen Wiedergabewerten (den JSF-Ergebnissen) verunreinigen. Seam lässt uns daher schreiben:"
+
+#. Tag: programlisting
+#: Events.xml:160
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\" \n"
+"                   evaluate=\"#{documentEditor.errors.size}\"&gt;\n"
+"        &lt;rule if-outcome=\"0\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\" \n"
+"                   evaluate=\"#{documentEditor.errors.size}\"&gt;\n"
+"        &lt;rule if-outcome=\"0\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Events.xml:161
+#, no-c-format
+msgid "Or even:"
+msgstr "Oder sogar:"
+
+#. Tag: programlisting
+#: Events.xml:164
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Events.xml:165
+#, no-c-format
+msgid ""
+"The first form evaluates a value binding to determine the outcome value to "
+"be used by the subsequent rules. The second approach ignores the outcome and "
+"evaluates a value binding for each possible rule."
+msgstr "Das erste Formular evaluiert eine Wertbindung (\"Value Binding\"), um den von nachfolgenden Regeln zu verwendenden Ergebniswert zu bestimmen. Bei der zweiten Vorgehensweise wird das Ergebnis ignoriert und eine Wertbindung für jede mögliche Regel evaluiert."
+
+#. Tag: para
+#: Events.xml:168
+#, no-c-format
+msgid ""
+"Of course, when an update succeeds, we probably want to end the current "
+"conversation. We can do that like this:"
+msgstr "Natürlich wollen wir die aktuelle Konversation wahrscheinlich bei erfolgreicher Aktualisierung beenden. Dies kann wie folgt geschehen:"
+
+#. Tag: programlisting
+#: Events.xml:171
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Events.xml:172
+#, no-c-format
+msgid ""
+"But ending the conversation loses any state associated with the "
+"conversation, including the document we are currently interested in! One "
+"solution would be to use an immediate render instead of a redirect:"
+msgstr "Aber beim Beenden der Konversation verliert man auch jeglichen mit der Konversation assoziierten Status, einschließlich des Dokuments, das uns derzeit interessiert! Eine Lösung wäre das sofortige Rendern statt einer Weiterleitung:"
+
+#. Tag: programlisting
+#: Events.xml:175
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Events.xml:176
+#, no-c-format
+msgid "But the correct solution is to pass the document id as a request parameter:"
+msgstr "Aber die richtige Lösung ist es, die Dokumenten-ID als Anfragenparameter weiterzugeben:"
+
+#. Tag: programlisting
+#: Events.xml:179
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"&gt;\n"
+"                &lt;param name=\"documentId\" value=\"#{documentEditor."
+"documentId}\"/&gt;\n"
+"            &lt;/redirect&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"&gt;\n"
+"                &lt;param name=\"documentId\" value=\"#{documentEditor."
+"documentId}\"/&gt;\n"
+"            &lt;/redirect&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Events.xml:180
+#, no-c-format
+msgid ""
+"Null outcomes are a special case in JSF. The null outcome is interpreted to "
+"mean \"redisplay the page\". The following navigation rule matches any non-"
+"null outcome, but <emphasis>not</emphasis> the null outcome:"
+msgstr "Nullergebnisse sind ein Sonderfall in JSF. Das Nullergebnis wird als \"Seite erneut anzeigen\" interpretiert. Die folgende Navigationsregel stimmt mit jedem nicht Nullergebnis überein, <emphasis>nicht</emphasis> aber mit dem Nullergebnis:"
+
+#. Tag: programlisting
+#: Events.xml:183
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule&gt;\n"
+"            &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule&gt;\n"
+"            &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Events.xml:184
+#, no-c-format
+msgid ""
+"If you want to perform navigation when a null outcome occurs, use the "
+"following form instead:"
+msgstr "Falls Sie eine Navigation durchführen möchten, wenn ein Nullergebnis vorkommt, so verwenden Sie stattdessen folgende Form:"
+
+#. Tag: programlisting
+#: Events.xml:187
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+
+#. Tag: title
+#: Events.xml:188
+#, no-c-format
+msgid "Fine-grained files for definition of navigation, page actions and parameters"
+msgstr "Feinkörnige Dateien zur Definition von Navigation, Seiten-Actions und Parametern"
+
+#. Tag: para
+#: Events.xml:189
+#, no-c-format
+msgid ""
+"If you have a lot of different page actions and page parameters, or even "
+"just a lot of navigation rules, you will almost certainly want to split the "
+"declarations up over multiple files. You can define actions and parameters "
+"for a page with the view id <literal>/calc/calculator.jsp</literal> in a "
+"resource named <literal>calc/calculator.page.xml</literal>. The root element "
+"in this case is the <literal>&lt;page&gt;</literal> element, and the view id "
+"is implied:"
+msgstr ""
+"Falls Sie eine Menge verschiedener Page-Actions und Page-Parameter besitzen oder auch einfach nur viele Navigationsregeln, so werden Sie die Deklarationen mit ziemlicher Sicherheit auf mehrere verteilen wollen. Sie können Actions und Parameter für eine Seite mit der Ansicht-ID "
+"<literal>/calc/calculator.jsp</literal> in einer Ressource namens "
+"<literal>calc/calculator.page.xml</literal> definieren. Das Root-Element "
+"in diesem Fall ist das <literal>&lt;page&gt;</literal>-Element und die Ansichts-ID wird vorausgesetzt:"
+
+#. Tag: programlisting
+#: Events.xml:192
+#, no-c-format
+msgid ""
+"&lt;page action=\"#{calculator.calculate}\"&gt;\n"
+"    &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"    &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"    &lt;param name=\"op\" converter=\"#{operatorConverter}\" value=\"#"
+"{calculator.op}\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page action=\"#{calculator.calculate}\"&gt;\n"
+"    &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"    &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"    &lt;param name=\"op\" converter=\"#{operatorConverter}\" value=\"#"
+"{calculator.op}\"/&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: title
+#: Events.xml:193
+#, no-c-format
+msgid "Component-driven events"
+msgstr "Komponenten-betriebene Ereignisse"
+
+#. Tag: para
+#: Events.xml:194
+#, no-c-format
+msgid ""
+"Seam components can interact by simply calling each others methods. Stateful "
+"components may even implement the observer/observable pattern. But to enable "
+"components to interact in a more loosely-coupled fashion than is possible "
+"when the components call each others methods directly, Seam provides "
+"<emphasis>component-driven events</emphasis>."
+msgstr ""
+"Seam Komponents durch gegenseitigen Aufruf ihrer Methoden interagieren. \"Stateful\" Komponenten können sogar das Beobachter/beobachtbar-Muster implementieren. Um es Komponenten zu ermöglichen auf losere Weise zu interagieren als möglich, wenn die Komponenten ihre Methoden gegenseitig direkt aufrufen, liefert Seam "
+"<emphasis>Komponenten-betriebene Ereignisse</emphasis>."
+
+#. Tag: para
+#: Events.xml:197
+#, no-c-format
+msgid "We specify event listeners (observers) in <literal>components.xml</literal>."
+msgstr "Wir legen Event-Listener (Beobachter) in <literal>components.xml</literal> fest."
+
+#. Tag: programlisting
+#: Events.xml:200
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;event type=\"hello\"&gt;\n"
+"        &lt;action expression=\"#{helloListener.sayHelloBack}\"/&gt;\n"
+"        &lt;action expression=\"#{logger.logHello}\"/&gt;\n"
+"    &lt;/event&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components&gt;\n"
+"    &lt;event type=\"hello\"&gt;\n"
+"        &lt;action expression=\"#{helloListener.sayHelloBack}\"/&gt;\n"
+"        &lt;action expression=\"#{logger.logHello}\"/&gt;\n"
+"    &lt;/event&gt;\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Events.xml:201
+#, no-c-format
+msgid "Where the <emphasis>event type</emphasis> is just an arbitrary string."
+msgstr "Wo der <emphasis>Ereignistyp</emphasis> nur ein beliebiger String ist."
+
+#. Tag: para
+#: Events.xml:204
+#, no-c-format
+msgid ""
+"When an event occurs, the actions registered for that event will be called "
+"in the order they appear in <literal>components.xml</literal>. How does a "
+"component raise an event? Seam provides a built-in component for this."
+msgstr "Wenn ein Ereignis stattfindet, so werden alle für dieses Ereignis registrierten Actions in der Reihenfolge, in der sie in <literal>components.xml</literal> erscheinen, aufgerufen. Wie erheben Komponenten ein Ereignis? Seam bietet hierfür eine eingebaute Komponente."
+
+#. Tag: programlisting
+#: Events.xml:207
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World!\");\n"
+"        Events.instance().raiseEvent(\"hello\");\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World!\");\n"
+"        Events.instance().raiseEvent(\"hello\");\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Events.xml:208
+#, no-c-format
+msgid "Or you can use an annotation."
+msgstr "Oder Sie eine Annotation verwenden."
+
+#. Tag: programlisting
+#: Events.xml:211
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    @RaiseEvent(\"hello\")\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World!\");\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    @RaiseEvent(\"hello\")\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World!\");\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Events.xml:212
+#, no-c-format
+msgid ""
+"Notice that this event producer has no dependency upon event consumers. The "
+"event listener may now be implemented with absolutely no dependency upon the "
+"producer:"
+msgstr "Beachten Sie, dass dieser Event-Producer keine Abhängigkeit von Event-Konsumenten besitzt. Der Event-Listener kann nun ohne jegliche Abhängigkeit vom Producer implementiert werden:"
+
+#. Tag: programlisting
+#: Events.xml:215
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    public void sayHelloBack() {\n"
+"        FacesMessages.instance().add(\"Hello to you too!\");\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    public void sayHelloBack() {\n"
+"        FacesMessages.instance().add(\"Hello to you too!\");\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Events.xml:216
+#, no-c-format
+msgid ""
+"The method binding defined in <literal>components.xml</literal> above takes "
+"care of mapping the event to the consumer. If you don&#39;t like futzing "
+"about in the <literal>components.xml</literal> file, you can use an "
+"annotation instead:"
+msgstr "Das in <literal>components.xml</literal> definierte Methode-Binding oben kümmert sich um das Mapping des Events zum Konsumenten. Wenn Sie sich nicht mit der <literal>components.xml</literal>-Datei auseindersetzen wollen, können Sie statt dessen die Annotation verwenden:"
+
+#. Tag: programlisting
+#: Events.xml:219
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    @Observer(\"hello\")\n"
+"    public void sayHelloBack() {\n"
+"        FacesMessages.instance().add(\"Hello to you too!\");\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    @Observer(\"hello\")\n"
+"    public void sayHelloBack() {\n"
+"        FacesMessages.instance().add(\"Hello to you too!\");\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Events.xml:220
+#, no-c-format
+msgid ""
+"You might wonder why I&#39;ve not mentioned anything about event objects in "
+"this discussion. In Seam, there is no need for an event object to propagate "
+"state between event producer and listener. State is held in the Seam "
+"contexts, and is shared between components. However, if you really want to "
+"pass an event object, you can:"
+msgstr "Vielleicht wundert es Sie, dass bis jetzt noch nicht die Rede von Event-Objekten war. In Seam ist es nicht nötig, dass ein Event-Objekt Status zwischen dem Event-Producer und Listener fortpflanzt. Der Status wird in den Seam-Kontexten gehalten und unter den Komponenten geteilt. Wenn Sie aber wirklich ein Event-Objekt weitergeben wollen, so können Sie: "
+
+#. Tag: programlisting
+#: Events.xml:223
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    private String name;\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World, my name is #0.\", "
+"name);\n"
+"        Events.instance().raiseEvent(\"hello\", name);\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    private String name;\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World, my name is #0.\", "
+"name);\n"
+"        Events.instance().raiseEvent(\"hello\", name);\n"
+"    }\n"
+"}"
+
+#. Tag: programlisting
+#: Events.xml:224
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    @Observer(\"hello\")\n"
+"    public void sayHelloBack(String name) {\n"
+"        FacesMessages.instance().add(\"Hello #0!\", name);\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    @Observer(\"hello\")\n"
+"    public void sayHelloBack(String name) {\n"
+"        FacesMessages.instance().add(\"Hello #0!\", name);\n"
+"    }\n"
+"}"
+
+#. Tag: title
+#: Events.xml:225
+#, no-c-format
+msgid "Contextual events"
+msgstr "Kontextuelle Ereignisse"
+
+#. Tag: para
+#: Events.xml:226
+#, no-c-format
+msgid ""
+"Seam defines a number of built-in events that the application can use to "
+"perform special kinds of framework integration. The events are:"
+msgstr "Seam definiert eine Anzahl eingebauter Ereignisse, die die Anwendung verwenden kann, um besondere Arten von Framework-Integration durchzuführen. Die Ereignisse sind:"
+
+#. Tag: para
+#: Events.xml:231
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.validationFailed</literal> &mdash; called when JSF "
+"validation fails"
+msgstr "<literal>org.jboss.seam.validationFailed</literal> &mdash; aufgerufen wenn JSF-Validierung fehlschlägt"
+
+#. Tag: para
+#: Events.xml:236
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.noConversation</literal> &mdash; called when there "
+"is no long running conversation and a long running conversation is required"
+msgstr "<literal>org.jboss.seam.noConversation</literal> &mdash; aufgerufen, wenn keine lange laufende Konversation vorhanden ist und eine lange laufende Konversation erforderlich ist"
+
+#. Tag: para
+#: Events.xml:241
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preSetVariable.&lt;name&gt;</literal> &mdash; called "
+"when the context variable &lt;name&gt; is set"
+msgstr "<literal>org.jboss.seam.preSetVariable.&lt;name&gt;</literal> &mdash; aufgerufen, wenn die Kontextvariable &lt;name&gt; eingestellt wird"
+
+#. Tag: para
+#: Events.xml:246
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postSetVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is set"
+msgstr ""
+"<literal>org.jboss.seam.postSetVariable.&lt;name&gt;</literal> &mdash; "
+"aufgerufen, wenn die Kontextvariable &lt;name&gt; eingestellt wird"
+
+#. Tag: para
+#: Events.xml:251
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preRemoveVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is unset"
+msgstr "<literal>org.jboss.seam.preRemoveVariable.&lt;name&gt;</literal> &mdash; aufgerufen, wenn die Einstellung der Kontextvariablen &lt;name&gt; aufgelöst wird"
+
+#. Tag: para
+#: Events.xml:256
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postRemoveVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is unset"
+msgstr "<literal>org.jboss.seam.postRemoveVariable.&lt;name&gt;</literal> &mdash; aufgerufen, wenn die Einstellung der Kontextvariablen &lt;name&gt; aufgelöst wird"
+
+#. Tag: para
+#: Events.xml:261
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preDestroyContext.&lt;SCOPE&gt;</literal> &mdash; "
+"called before the &lt;SCOPE&gt; context is destroyed"
+msgstr "<literal>org.jboss.seam.preDestroyContext.&lt;SCOPE&gt;</literal> &mdash; aufgerufen, ehe der &lt;SCOPE&gt;-Kontext zerstört wird"
+
+#. Tag: para
+#: Events.xml:266
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postDestroyContext.&lt;SCOPE&gt;</literal> &mdash; "
+"called after the &lt;SCOPE&gt; context is destroyed"
+msgstr "<literal>org.jboss.seam.postDestroyContext.&lt;SCOPE&gt;</literal> &mdash; aufgerufen, nachdem der &lt;SCOPE&gt;-Kontext zerstört wurde"
+
+#. Tag: para
+#: Events.xml:271
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beginConversation </literal>&mdash; called whenever "
+"a long-running conversation begins"
+msgstr "<literal>org.jboss.seam.beginConversation </literal>&mdash; aufgerufen immer dann, wenn eine lange laufende Konversation beginnt"
+
+#. Tag: para
+#: Events.xml:276
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endConversation </literal>&mdash; called whenever a "
+"long-running conversation ends"
+msgstr "<literal>org.jboss.seam.endConversation </literal>&mdash; aufgerufen immer dann, wenn eine lange laufende Konversation endet"
+
+#. Tag: para
+#: Events.xml:281
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beginPageflow.&lt;name&gt; </literal>&mdash; called "
+"when the pageflow &lt;name&gt; begins"
+msgstr "<literal>org.jboss.seam.beginPageflow.&lt;name&gt; </literal>&mdash; aufgerufen, wenn der Pageflow &lt;name&gt; beginnt"
+
+#. Tag: para
+#: Events.xml:286
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endPageflow.&lt;name&gt; </literal>&mdash; called "
+"when the pageflow &lt;name&gt; ends"
+msgstr "<literal>org.jboss.seam.endPageflow.&lt;name&gt; </literal>&mdash; aufgerufen, wenn der Pageflow &lt;name&gt; endet"
+
+#. Tag: para
+#: Events.xml:291
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.createProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; is created"
+msgstr "<literal>org.jboss.seam.createProcess.&lt;name&gt; </literal>&mdash; aufgerufen, wenn der Prozess &lt;name&gt; erstellt wird"
+
+#. Tag: para
+#: Events.xml:296
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; ends"
+msgstr "<literal>org.jboss.seam.endProcess.&lt;name&gt; </literal>&mdash; aufgerufen, wenn der Prozess &lt;name&gt; endet"
+
+#. Tag: para
+#: Events.xml:301
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.initProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; is associated with the conversation"
+msgstr "<literal>org.jboss.seam.initProcess.&lt;name&gt; </literal>&mdash; aufgerufen, wenn der Prozess &lt;name&gt; mit der Konversation assoziiert wird"
+
+#. Tag: para
+#: Events.xml:306
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.initTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is associated with the conversation"
+msgstr "<literal>org.jboss.seam.initTask.&lt;name&gt; </literal>&mdash; aufgerufen, wenn der Task &lt;name&gt; mit der Konversation assoziiert wird"
+
+#. Tag: para
+#: Events.xml:311
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.startTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is started"
+msgstr "<literal>org.jboss.seam.startTask.&lt;name&gt; </literal>&mdash; aufgerufen, wenn der Task &lt;name&gt; gestartet wird"
+
+#. Tag: para
+#: Events.xml:316
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is ended"
+msgstr "<literal>org.jboss.seam.endTask.&lt;name&gt; </literal>&mdash; aufgerufen, wenn der Task &lt;name&gt; beendet wird"
+
+#. Tag: para
+#: Events.xml:321
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postCreate.&lt;name&gt; </literal>&mdash; called "
+"when the component &lt;name&gt; is created"
+msgstr "<literal>org.jboss.seam.postCreate.&lt;name&gt; </literal>&mdash; aufgerufen, wenn der Komponenten &lt;name&gt; erstellt wird"
+
+#. Tag: para
+#: Events.xml:326
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preDestroy.&lt;name&gt; </literal>&mdash; called "
+"when the component &lt;name&gt; is destroyed"
+msgstr "<literal>org.jboss.seam.preDestroy.&lt;name&gt; </literal>&mdash; aufgerufen, wenn der Komponenten &lt;name&gt; zerstört wird"
+
+#. Tag: para
+#: Events.xml:331
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beforePhase </literal>&mdash; called before the "
+"start of a JSF phase"
+msgstr "<literal>org.jboss.seam.beforePhase </literal>&mdash; aufgerufen vor dem Start einer JSF-Phase"
+
+#. Tag: para
+#: Events.xml:336
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.afterPhase </literal>&mdash; called after the end of "
+"a JSF phase"
+msgstr "<literal>org.jboss.seam.afterPhase </literal>&mdash; aufgerufen nach Ende einer JSF-Phase"
+
+#. Tag: para
+#: Events.xml:341
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postAuthenticate.&lt;name&gt; </literal>&mdash; "
+"called after a user is authenticated"
+msgstr ""
+"<literal>org.jboss.seam.postAuthenticate.&lt;name&gt; </literal>&mdash; "
+"aufgerufen, nachdem ein Benutzer authentifiziert wurde"
+
+#. Tag: para
+#: Events.xml:346
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preAuthenticate.&lt;name&gt; </literal>&mdash; "
+"called before attempting to authenticate a user"
+msgstr ""
+"<literal>org.jboss.seam.preAuthenticate.&lt;name&gt; </literal>&mdash; "
+"aufgerufen ehe versucht wird, einen Benutzer zu authentifizieren"
+
+#. Tag: para
+#: Events.xml:351
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.notLoggedIn</literal> &mdash; called there is no "
+"authenticated user and authentication is required"
+msgstr "<literal>org.jboss.seam.notLoggedIn</literal> &mdash; aufgerufen, wenn kein authetifizierter Benutzer vorhanden ist und Authentifizierung nötig ist"
+
+#. Tag: para
+#: Events.xml:356
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.rememberMe</literal> &mdash; occurs when Seam "
+"security detects the username in a cookie"
+msgstr "<literal>org.jboss.seam.rememberMe</literal> &mdash; kommt vor, wenn die Sicherheit von Seam den Benutzernamen in einem Cookie entdeckt"
+
+#. Tag: para
+#: Events.xml:361
+#, no-c-format
+msgid ""
+"Seam components may observe any of these events in just the same way they "
+"observe any other component-driven events."
+msgstr "Seam Komponenten können diese Ereignisse auf genau diesselbe Weise betrachten wie andere Komponenten-betriebene Ereignisse."
+
+#. Tag: title
+#: Events.xml:364
+#, no-c-format
+msgid "Seam interceptors"
+msgstr "Seam-Interzeptoren"
+
+#. Tag: para
+#: Events.xml:365
+#, no-c-format
+msgid ""
+"EJB 3.0 introduced a standard interceptor model for session bean components. "
+"To add an interceptor to a bean, you need to write a class with a method "
+"annotated <literal>@AroundInvoke</literal> and annotate the bean with an "
+"<literal>@Interceptors</literal> annotation that specifies the name of the "
+"interceptor class. For example, the following interceptor checks that the "
+"user is logged in before allowing invoking an action listener method:"
+msgstr ""
+"EJB 3.0 hat ein Standard-Interzeptormodell für Session Bean Komponenten eingeführt. "
+"Um einem Bean einen Interzeptor hinzuzufügen, müssen Sie eine Klasse mit einem Methoden-annotierten <literal>@AroundInvoke</literal> schreiben und das Bean mit einer <literal>@Interceptors</literal>-Annotation annotieren, die den Namen der Interzeptorklasse festlegt. Der folgende Interzeptor zum Beispiel überprüft, dass der Benutzer angemeldet ist ehe er den Aufruf einer Action-Listener-Methode gestattet:"
+
+#. Tag: programlisting
+#: Events.xml:368
+#, no-c-format
+msgid ""
+"public class LoggedInInterceptor {\n"
+"\n"
+"   @AroundInvoke\n"
+"   public Object checkLoggedIn(InvocationContext invocation) throws "
+"Exception {\n"
+"   \n"
+"      boolean isLoggedIn = Contexts.getSessionContext().get(\"loggedIn\")!"
+"=null;\n"
+"      if (isLoggedIn) {\n"
+"         //the user is already logged in\n"
+"         return invocation.proceed();\n"
+"      }\n"
+"      else {\n"
+"         //the user is not logged in, fwd to login page\n"
+"         return \"login\";\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+"public class LoggedInInterceptor {\n"
+"\n"
+"   @AroundInvoke\n"
+"   public Object checkLoggedIn(InvocationContext invocation) throws "
+"Exception {\n"
+"   \n"
+"      boolean isLoggedIn = Contexts.getSessionContext().get(\"loggedIn\")!"
+"=null;\n"
+"      if (isLoggedIn) {\n"
+"         //the user is already logged in\n"
+"         return invocation.proceed();\n"
+"      }\n"
+"      else {\n"
+"         //the user is not logged in, fwd to login page\n"
+"         return \"login\";\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+
+#. Tag: para
+#: Events.xml:369
+#, no-c-format
+msgid ""
+"To apply this interceptor to a session bean which acts as an action "
+"listener, we must annotate the session bean <literal>@Interceptors"
+"(LoggedInInterceptor.class)</literal>. This is a somewhat ugly annotation. "
+"Seam builds upon the interceptor framework in EJB3 by allowing you to use "
+"<literal>@Interceptors</literal> as a meta-annotation. In our example, we "
+"would create an <literal>@LoggedIn</literal> annotation, as follows:"
+msgstr ""
+"Um diesen Interzeptor bei einem Session Bean anzuwenden, das als Action-Listener fungiert, müssen wir das Session-Bean <literal>@Interceptors"
+"(LoggedInInterceptor.class)</literal> annotieren. Es handelt sich dabei jedoch um eine recht unansehnliche Annotation. "
+"Seam baut auf dem Interzeptor-Framework in EJB3 auf, indem es Ihnen die Verwendung von <literal>@Interceptors</literal> als Meta-Annotation gestattet. In unserem Beispiel würden wir eine <literal>@LoggedIn</literal>-Annotation wie folgt erstellen:"
+
+#. Tag: programlisting
+#: Events.xml:372
+#, no-c-format
+msgid ""
+"@Target(TYPE)\n"
+"@Retention(RUNTIME)\n"
+"@Interceptors(LoggedInInterceptor.class)\n"
+"public @interface LoggedIn {}"
+msgstr ""
+"@Target(TYPE)\n"
+"@Retention(RUNTIME)\n"
+"@Interceptors(LoggedInInterceptor.class)\n"
+"public @interface LoggedIn {}"
+
+#. Tag: para
+#: Events.xml:373
+#, no-c-format
+msgid ""
+"We can now simply annotate our action listener bean with <literal>@LoggedIn</"
+"literal> to apply the interceptor."
+msgstr "Wir können unser Action-Listener-Bean jetzt ganz einfach mit <literal>@LoggedIn</literal> annotieren, um den Interzeptor anzuwenden."
+
+#. Tag: programlisting
+#: Events.xml:376
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"changePasswordAction\")\n"
+"@LoggedIn\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class ChangePasswordAction implements ChangePassword { \n"
+"    \n"
+"    ...\n"
+"    \n"
+"    public String changePassword() { ... }\n"
+"    \n"
+"}"
+msgstr ""
+"@Stateless\n"
+"@Name(\"changePasswordAction\")\n"
+"@LoggedIn\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class ChangePasswordAction implements ChangePassword { \n"
+"    \n"
+"    ...\n"
+"    \n"
+"    public String changePassword() { ... }\n"
+"    \n"
+"}"
+
+#. Tag: para
+#: Events.xml:377
+#, no-c-format
+msgid ""
+"If interceptor ordering is important (it usually is), you can add "
+"<literal>@Interceptor</literal> annotations to your interceptor classes to "
+"specify a partial order of interceptors."
+msgstr "Falls die Reihenfolge der Interzeptoren wichtig ist (und das ist in der Regel der Fall), so können Sie Ihren Interzeptorklassen <literal>@Interceptor</literal>-Annotationen hinzufügen, um eine bestimmte Reihenfolge von Interzeptoren festzulegen."
+
+#. Tag: programlisting
+#: Events.xml:380
+#, no-c-format
+msgid ""
+"@Interceptor(around={BijectionInterceptor.class,\n"
+"                     ValidationInterceptor.class,\n"
+"                     ConversationInterceptor.class},\n"
+"             within=RemoveInterceptor.class)\n"
+"public class LoggedInInterceptor\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+"@Interceptor(around={BijectionInterceptor.class,\n"
+"                     ValidationInterceptor.class,\n"
+"                     ConversationInterceptor.class},\n"
+"             within=RemoveInterceptor.class)\n"
+"public class LoggedInInterceptor\n"
+"{\n"
+"    ...\n"
+"}"
+
+#. Tag: para
+#: Events.xml:381
+#, no-c-format
+msgid ""
+"You can even have a \"client-side\" interceptor, that runs around any of the "
+"built-in functionality of EJB3:"
+msgstr "Sie können sogar einen Interzeptor auf \"Client-Seite besitzen\" besitzen, der um irgendeine der eingebauten Funktionalitäten von EJB3 herumläuft:"
+
+#. Tag: programlisting
+#: Events.xml:384
+#, no-c-format
+msgid ""
+"@Interceptor(type=CLIENT)\n"
+"public class LoggedInInterceptor\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+"@Interceptor(type=CLIENT)\n"
+"public class LoggedInInterceptor\n"
+"{\n"
+"    ...\n"
+"}"
+
+#. Tag: para
+#: Events.xml:385
+#, no-c-format
+msgid ""
+"EJB interceptors are stateful, with a lifecycle that is the same as the "
+"component they intercept. For interceptors which do not need to maintain "
+"state, Seam lets you get a performance optimization by specifying "
+"<literal>@Interceptor(stateless=true)</literal>."
+msgstr "EJB-Interzeptoren sind \"stateful\" und besitzen einen Lebenszyklus, der derselbe ist, wie der der Komponente, die sie abfangen. Für Interzeptoren, die keinen Status beibehalten müssen gestattet Seam eine Performance-Optimierung durch Festlegen von <literal>@Interceptor(stateless=true)</literal>."
+
+#. Tag: para
+#: Events.xml:388
+#, no-c-format
+msgid ""
+"Much of the functionality of Seam is implemented as a set of built-in Seam "
+"interceptors, including the interceptors named in the previous example. You "
+"don&#39;t have to explicitly specify these interceptors by annotating your "
+"components; they exist for all interceptable Seam components."
+msgstr "Vieles der Funktionalität von Seam ist als Satz eingebauter Seam-Interzeptoren implemeniert, einschließlich der im vorangegangenen Beispiel genannten Interzeptoren. Sie müssen diese Interzeptoren nicht durch Annotation Ihrer Komponenten bestimmen, sie sind für alle abfangbaren Seam-Komponenten vorhanden."
+
+#. Tag: para
+#: Events.xml:391
+#, no-c-format
+msgid ""
+"You can even use Seam interceptors with JavaBean components, not just EJB3 "
+"beans!"
+msgstr "Sie können Seam Interzeptoren sogar mit JavaBean-Komponenten benutzen, nicht nur mit EJB3-Beans!"
+
+#. Tag: para
+#: Events.xml:394
+#, no-c-format
+msgid ""
+"EJB defines interception not only for business methods (using "
+"<literal>@AroundInvoke</literal>), but also for the lifecycle methods "
+"<literal>@PostConstruct</literal>, <literal>@PreDestroy</literal>, "
+"<literal>@PrePassivate</literal> and <literal>@PostActive</literal>. Seam "
+"supports all these lifecycle methods on both component and interceptor not "
+"only for EJB3 beans, but also for JavaBean components (except "
+"<literal>@PreDestroy</literal> which is not meaningful for JavaBean "
+"components)."
+msgstr ""
+"EJB definiert Interception nicht nur für Business-Methoden (unter Verwendung von "
+"<literal>@AroundInvoke</literal>), sondern auch für die Lebenszyklus-Methoden <literal>@PostConstruct</literal>, <literal>@PreDestroy</literal>, "
+"<literal>@PrePassivate</literal> und <literal>@PostActive</literal>. Seam unterstützt alle diese Lebenszyklus-Methoden bei sowohl Komponente als auch Interzeptor nicht nur für EJB3-Beans, sondern auch für JavaBean-Komponenten (außer <literal>@PreDestroy</literal>, welches für JavaBean Komponenten nicht relevant ist)."
+
+#. Tag: title
+#: Events.xml:397
+#, no-c-format
+msgid "Managing exceptions"
+msgstr "Management von Ausnahmen"
+
+#. Tag: para
+#: Events.xml:398
+#, no-c-format
+msgid ""
+"JSF is surprisingly limited when it comes to exception handling. As a "
+"partial workaround for this problem, Seam lets you define how a particular "
+"class of exception is to be treated by annotating the exception class, or "
+"declaring the exception class in an XML file. This facility is meant to be "
+"combined with the EJB 3.0-standard <literal>@ApplicationException</literal> "
+"annotation which specifies whether the exception should cause a transaction "
+"rollback."
+msgstr "JSF ist überraschend eingeschränkt, wenn es um den Umgang mit Ausnahmen geht. Als teilweise Umgehung dieses Problems, lässt Seam sie definieren, wie eine bestimmte Ausnahmeklasse behandelt wird, indem die Ausnahmeklasse annotiert oder die Ausnahemklasse in einer XML-Datei deklariert wird. Dies ist in Verbindung mit der EJB 3.0-Standard <literal>@ApplicationException</literal>-Annotation gedacht, welche festlegt, ob die Ausnahme einen Rollback der Transaktion bewirken sollte."
+
+#. Tag: title
+#: Events.xml:401
+#, no-c-format
+msgid "Exceptions and transactions"
+msgstr "Ausnahmen und Transaktionen"
+
+#. Tag: para
+#: Events.xml:402
+#, no-c-format
+msgid ""
+"EJB specifies well-defined rules that let us control whether an exception "
+"immediately marks the current transaction for rollback when it is thrown by "
+"a business method of the bean: <emphasis>system exceptions</emphasis> always "
+"cause a transaction rollback, <emphasis>application exceptions</emphasis> do "
+"not cause a rollback by default, but they do if "
+"<literal>@ApplicationException(rollback=true)</literal> is specified. (An "
+"application exception is any checked exception, or any unchecked exception "
+"annotated <literal>@ApplicationException</literal>. A system exception is "
+"any unchecked exception without an <literal>@ApplicationException</literal> "
+"annotation.)"
+msgstr ""
+"EJB legt wohldefinierte Regeln fest, die uns die Kontrolle darüber erlauben, ob eine Ausnahme die aktuelle Transaktion sofort zum Rollback markiert, wenn die Meldung der Ausnahme durch eine Business-Methode des Beans erfolgt: <emphasis>System-Ausnahmen</emphasis> bewirken immer einen Transaction Rollback, <emphasis>Anwendungsausnahmen</emphasis> bewirken nicht standardmäßig einen Rollback, tun dies jedoch, wenn "
+"<literal>@ApplicationException(rollback=true)</literal> festgelegt ist. (Eine Anwendungsausnahme ist eine beliebige \"checked Exception\" oder eine \"unchecked Exception\", die mit <literal>@ApplicationException</literal> annotiert ist. Eine Systemausnahme ist eine beliebige \"unchecked Exception\" ohne eine <literal>@ApplicationException</literal>-Annotation)."
+
+#. Tag: para
+#: Events.xml:405
+#, no-c-format
+msgid ""
+"Note that there is a difference between marking a transaction for rollback, "
+"and actually rolling it back. The exception rules say that the transaction "
+"should be marked rollback only, but it may still be active after the "
+"exception is thrown."
+msgstr "Beachten Sie, dass es einen Unterschied gibt ob eine Transaktion für den Rollback markiert ist oder ob der Rollback tatsächlich erfolgt. Die Ausnahmeregeln besagen, dass die Transaktion nur zum Rollback markiert werden sollte, aber nach Meldung der Ausnahme noch aktiv ist."
+
+#. Tag: para
+#: Events.xml:408
+#, no-c-format
+msgid ""
+"Seam applies the EJB 3.0 exception rollback rules also to Seam JavaBean "
+"components."
+msgstr "Seam wendet die EJB 3.0 Regeln zum Rollback von Ausnahmen auch bei Seam JavaBean Komponenten an."
+
+#. Tag: para
+#: Events.xml:411
+#, no-c-format
+msgid ""
+"But these rules only apply in the Seam component layer. What about an "
+"exception that is uncaught and propagates out of the Seam component layer, "
+"and out of the JSF layer? Well, it is always wrong to leave a dangling "
+"transaction open, so Seam rolls back any active transaction when an "
+"exception occurs and is uncaught in the Seam component layer."
+msgstr "Aber diese Regel gelten nur in der Seam Komponenten-Schicht. Was ist mit einer nicht abgefangenen Ausnahme, die außerhalb der Seam Komponenten-Schicht und aus der JSF-Schicht heraus weiterverbreitet wird? Nun, es ist nie gut, eine schwebende Transaktion offen zu lassen, daher führt Seam für jede aktive Transaktion einen Rollback durch, wenn eine Ausnahme gemeldet wird und in der Seam Komponenten-Schicht nicht abgefangen wird."
+
+#. Tag: title
+#: Events.xml:414
+#, no-c-format
+msgid "Enabling Seam exception handling"
+msgstr "Aktivierung des Seam Ausnahmen-Handlings"
+
+#. Tag: para
+#: Events.xml:415
+#, no-c-format
+msgid ""
+"To enable Seam&#39;s exception handling, we need to make sure we have the "
+"master servlet filter declared in <literal>web.xml</literal>:"
+msgstr "Um Seams Ausnahmen-Handling zu aktivieren, müssen wir uns vergewissern, dass der Master Servlet-Filter in <literal>web.xml</literal> deklariert ist:"
+
+#. Tag: programlisting
+#: Events.xml:418
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.servlet.SeamFilter&lt;/filter-"
+"class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;"
+msgstr ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.servlet.SeamFilter&lt;/filter-"
+"class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;"
+
+#. Tag: para
+#: Events.xml:419
+#, no-c-format
+msgid ""
+"You may also need to disable Facelets development mode in <literal>web.xml</"
+"literal> and Seam debug mode in <literal>components.xml</literal> if you "
+"want your exception handlers to fire."
+msgstr "Sie müssen vielleicht auch den Facelets-Entwicklungsmodus in <literal>web.xml</literal> und den Seam Debug-Modus in <literal>components.xml</literal> deaktivieren, wenn Ihre Ausnahmen-Handler tätig werden sollen."
+
+#. Tag: title
+#: Events.xml:422
+#, no-c-format
+msgid "Using annotations for exception handling"
+msgstr "Die Verwendung von Annotationen für das Ausnahmen-Handling"
+
+#. Tag: para
+#: Events.xml:423
+#, no-c-format
+msgid ""
+"The following exception results in a HTTP 404 error whenever it propagates "
+"out of the Seam component layer. It does not roll back the current "
+"transaction immediately when thrown, but the transaction will be rolled back "
+"if it the exception is not caught by another Seam component."
+msgstr "Die folgende Ausnahme führt zu einem HTTP 404 Fehler, wenn sie sich aus der Seam-Komponentenschicht verbreitet. Es wird kein sofortiger Rollback der aktuellen Transaktion bei ihrer Meldung durchgeführt, aber er erfolgt, wenn die Ausnahme nicht durch eine andere Seam-Komponente abgefangen wird."
+
+#. Tag: programlisting
+#: Events.xml:426
+#, no-c-format
+msgid ""
+"@HttpError(errorCode=404)\n"
+"public class ApplicationException extends Exception { ... }"
+msgstr ""
+"@HttpError(errorCode=404)\n"
+"public class ApplicationException extends Exception { ... }"
+
+#. Tag: para
+#: Events.xml:427
+#, no-c-format
+msgid ""
+"This exception results in a browser redirect whenever it propagates out of "
+"the Seam component layer. It also ends the current conversation. It causes "
+"an immediate rollback of the current transaction."
+msgstr "Diese Ausnahme resultiert in einer Browser-Umleitung,wenn sie sich aus der Seam-Komponentenschicht verbreitet. Sie führt auch zur Beendigung der aktuellen Konversation. Es wird ein sofortiger Rollback der aktuellen Transaktion durchgeführt."
+
+#. Tag: programlisting
+#: Events.xml:430
+#, no-c-format
+msgid ""
+"@Redirect(viewId=\"/failure.xhtml\", end=true)\n"
+"@ApplicationException(rollback=true)\n"
+"public class UnrecoverableApplicationException extends RuntimeException "
+"{ ... }"
+msgstr ""
+"@Redirect(viewId=\"/failure.xhtml\", end=true)\n"
+"@ApplicationException(rollback=true)\n"
+"public class UnrecoverableApplicationException extends RuntimeException "
+"{ ... }"
+
+#. Tag: para
+#: Events.xml:431
+#, no-c-format
+msgid ""
+"Note that <literal>@Redirect</literal> does not work for exceptions which "
+"occur during the render phase of the JSF lifecycle."
+msgstr "Beachten Sie, dass <literal>@Redirect</literal> nicht bei Ausnahmen funktioniert, die während der Render-Phase des JSF-Lebenszyklus vorkommen."
+
+#. Tag: para
+#: Events.xml:434
+#, no-c-format
+msgid ""
+"This exception results in a redirect, along with a message to the user, when "
+"it propagates out of the Seam component layer. It also immediately rolls "
+"back the current transaction."
+msgstr "Diese Ausnahme resultiert in einer Umleitung sowie einer Nachricht an den Benutzer, bei Verbreitung außerhalb der Seam-Komponentenschicht. Es wird außerdem ein sofortiger Rollback der aktuellen Transaktion durchgeführt."
+
+#. Tag: programlisting
+#: Events.xml:437
+#, no-c-format
+msgid ""
+"@Redirect(viewId=\"/error.xhtml\", message=\"Unexpected error\")\n"
+"public class SystemException extends RuntimeException { ... }"
+msgstr ""
+"@Redirect(viewId=\"/error.xhtml\", message=\"Unexpected error\")\n"
+"public class SystemException extends RuntimeException { ... }"
+
+#. Tag: title
+#: Events.xml:438
+#, no-c-format
+msgid "Using XML for exception handling"
+msgstr "Die Verwendung von XML für den Umgang mit Ausnahmen"
+
+#. Tag: para
+#: Events.xml:439
+#, no-c-format
+msgid ""
+"Since we can&#39;t add annotations to all the exception classes we are "
+"interested in, Seam also lets us specify this functionality in "
+"<literal>pages.xml</literal>."
+msgstr ""
+"Da wir keine Annotationen zu allen Ausnahmeklassen hinzufügen können, die uns interessieren, lässt uns Seam auch diese Funktionalität in "
+"<literal>pages.xml</literal> spezifizieren."
+
+#. Tag: programlisting
+#: Events.xml:442
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   \n"
+"   &lt;exception class=\"javax.persistence.EntityNotFoundException\"&gt;\n"
+"      &lt;http-error error-code=\"404\"/&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"   &lt;exception class=\"javax.persistence.PersistenceException\"&gt;\n"
+"      &lt;end-conversation/&gt;\n"
+"      &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"          &lt;message&gt;Database access failed&lt;/message&gt;\n"
+"      &lt;/redirect&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"   &lt;exception&gt;\n"
+"      &lt;end-conversation/&gt;\n"
+"      &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"          &lt;message&gt;Unexpected failure&lt;/message&gt;\n"
+"      &lt;/redirect&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"   \n"
+"   &lt;exception class=\"javax.persistence.EntityNotFoundException\"&gt;\n"
+"      &lt;http-error error-code=\"404\"/&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"   &lt;exception class=\"javax.persistence.PersistenceException\"&gt;\n"
+"      &lt;end-conversation/&gt;\n"
+"      &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"          &lt;message&gt;Database access failed&lt;/message&gt;\n"
+"      &lt;/redirect&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"   &lt;exception&gt;\n"
+"      &lt;end-conversation/&gt;\n"
+"      &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"          &lt;message&gt;Unexpected failure&lt;/message&gt;\n"
+"      &lt;/redirect&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Events.xml:443
+#, no-c-format
+msgid ""
+"The last <literal>&lt;exception&gt;</literal> declaration does not specify a "
+"class, and is a catch-all for any exception for which handling is not "
+"otherwise specified via annotations or in <literal>pages.xml</literal>."
+msgstr "Die letzte <literal>&lt;exception&gt;</literal>-Deklaration legt keine Klasse fest, sondern fängt alle Ausnahmen auf, für die die Handhabung nicht anderweitig über Annotationen oder in <literal>pages.xml</literal> festgelegt ist."
+
+#. Tag: para
+#: Events.xml:446
+#, no-c-format
+msgid ""
+"You can also access the handled exception instance through EL, Seam places "
+"it in the conversation context, e.g. to access the message of the exception:"
+msgstr "Sie können auf die bearbeitete Ausnahmeninstanz auch durch EL zugreifen, Seam platziert sie in den Konversationskontext, etwa um auf die Nachricht der Ausnahme zuzugreifen:"
+
+#. Tag: programlisting
+#: Events.xml:449
+#, no-c-format
+msgid ""
+"...\n"
+"throw new AuthorizationException(\"You are not allowed to do this!\");\n"
+"\n"
+"&lt;pages&gt;\n"
+"\n"
+"    &lt;exception class=\"org.jboss.seam.security.AuthorizationException"
+"\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"        &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"            &lt;message severity=\"WARN\"&gt;#{handledException.message}&lt;/"
+"message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"\n"
+"&lt;/pages&gt;"
+msgstr ""
+"...\n"
+"throw new AuthorizationException(\"You are not allowed to do this!\");\n"
+"\n"
+"&lt;pages&gt;\n"
+"\n"
+"    &lt;exception class=\"org.jboss.seam.security.AuthorizationException"
+"\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"        &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"            &lt;message severity=\"WARN\"&gt;#{handledException.message}&lt;/"
+"message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"\n"
+"&lt;/pages&gt;"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Framework.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Framework.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Framework.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1136 @@
+# translation of Framework.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Jasna Dimanoski <jdimanos at redhat.com>, 2007, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Framework\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2008-04-08 21:14+1000\n"
+"Last-Translator: Jasna Dimanoski <jdimanos at redhat.com>\n"
+"Language-Team:  <de at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Framework.xml:6
+#, no-c-format
+msgid "The Seam Application Framework"
+msgstr "Das Seam Application Framework"
+
+#. Tag: para
+#: Framework.xml:7
+#, no-c-format
+msgid ""
+"Seam makes it really easy to create applications by writing plain Java "
+"classes with annotations, which don&#39;t need to extend any special "
+"interfaces or superclasses. But we can simplify some common programming "
+"tasks even further, by providing a set of pre-built components which can be "
+"re-used either by configuration in <literal>components.xml</literal> (for "
+"very simple cases) or extension."
+msgstr "Seam macht es ganz einfach Anwendungen zu erstellen, indem SIe einfache Java-Klassen mit Annotationen schreiben, die keine speziellen Interfaces oder Superklassen erweitern müssen. Wir können einige gängige Programmieraufgaben aber noch weiter vereinfachen, indem wir einen Satz vorgebauter Komponenten bereitstellen, die entweder durch Konfiguration in <literal>components.xml</literal> (für sehr einfache Fälle) oder Erweiterung wiederverwendet werden können."
+
+#. Tag: para
+#: Framework.xml:10
+#, no-c-format
+msgid ""
+"The <emphasis>Seam Application Framework</emphasis> can reduce the amount of "
+"code you need to write when doing basic database access in a web "
+"application, using either Hibernate or JPA."
+msgstr "Das <emphasis>Seam Application Framework</emphasis> kann die Menge des von Ihnen zu schreibenden Code reduzieren, bei einfachem Datenbankzugriff in einer Webanwendung und Benutzung von Hibernate oder JPA."
+
+#. Tag: para
+#: Framework.xml:13
+#, no-c-format
+msgid ""
+"We should emphasize that the framework is extremely simple, just a handful "
+"of simple classes that are easy to understand and extend. The \"magic\" is "
+"in Seam itself&mdash;the same magic you use when creating any Seam "
+"application even without using this framework."
+msgstr "Wir sollten betonen, dass das Framework sehr einfach ist, nur eine Handvoll einfacher Klassen, die einfach zu verstehen und zu erweitern sind. Der \"Zauber\" liegt in Seam selbst&mdash;derselbe Zauber, der zur Anwendung kommt, wenn Sie irgendeine Seam-Anwendung selbst ohne Verwendung dieses Frameworks erstellen."
+
+#. Tag: title
+#: Framework.xml:17
+#, no-c-format
+msgid "Introduction"
+msgstr "Einführung"
+
+#. Tag: para
+#: Framework.xml:18
+#, no-c-format
+msgid ""
+"The components provided by the Seam application framework may be used in one "
+"of two different approaches. The first way is to install and configure an "
+"instance of the component in <literal>components.xml</literal>, just like we "
+"have done with other kinds of built-in Seam components. For example, the "
+"following fragment from <literal>components.xml</literal> installs a "
+"component which can perform basic CRUD operations for a <literal>Contact</"
+"literal> entity:"
+msgstr "Die durch das Seam Application Framework bereitgestellten Komponenten können in einer von zwei verschiedenen Vorgehensweisen verwendet werden. Die erste Weise ist die Installation und Konfiguration einer Instanz der Komponente in <literal>components.xml</literal>, ganz wie wir es bei anderen Arten von Seam-Komponents getan haben. Folgendes Fragment von <literal>components.xml</literal> etwa installiert eine Komponente, die basale CRUD-Vorgänge für eine <literal>Contact</literal>-Entity durchführen kann:"
+
+#. Tag: programlisting
+#: Framework.xml:21
+#, no-c-format
+msgid ""
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" \n"
+"                       entity-manager=\"#{personDatabase}\"&gt;\n"
+"    &lt;framework:id&gt;#{param.personId}&lt;/framework:id&gt;\n"
+"&lt;/framework:entity-home&gt;"
+msgstr ""
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" \n"
+"                       entity-manager=\"#{personDatabase}\"&gt;\n"
+"    &lt;framework:id&gt;#{param.personId}&lt;/framework:id&gt;\n"
+"&lt;/framework:entity-home&gt;"
+
+#. Tag: para
+#: Framework.xml:22
+#, no-c-format
+msgid ""
+"If that looks a bit too much like \"programming in XML\" for your taste, you "
+"can use extension instead:"
+msgstr "Falls das nach etwas zuviel \"Programmierung in XML\" für Ihren Geschmack aussieht, so können Sie stattdessen eine Erweiterung verwenden:"
+
+#. Tag: programlisting
+#: Framework.xml:25
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; implements "
+"LocalPersonHome {\n"
+"    @RequestParameter String personId;\n"
+"    @In EntityManager personDatabase;\n"
+"    \n"
+"    public Object getId() { return personId; }\n"
+"    public EntityManager getEntityManager() { return personDatabase; }\n"
+"    \n"
+"}"
+msgstr ""
+"@Stateful\n"
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; implements "
+"LocalPersonHome {\n"
+"    @RequestParameter String personId;\n"
+"    @In EntityManager personDatabase;\n"
+"    \n"
+"    public Object getId() { return personId; }\n"
+"    public EntityManager getEntityManager() { return personDatabase; }\n"
+"    \n"
+"}"
+
+#. Tag: para
+#: Framework.xml:26
+#, no-c-format
+msgid ""
+"The second approach has one huge advantage: you can easily add extra "
+"functionality, and override the built-in functionality (the framework "
+"classes were carefully designed for extension and customization)."
+msgstr "Die zweite Vorgehensweise hat einen riesigen Vorteil: Sie können ganz einfach Extra-Funktionalität hinzufügen und die eingebaute Funktionalität außer Kraft setzen (Die Framework-Klassen wurden zum Zweck von Erweiterung und Anpassung mit Sorgfalt entworfen)."
+
+#. Tag: para
+#: Framework.xml:29
+#, no-c-format
+msgid ""
+"A second advantage is that your classes may be EJB stateful sessin beans, if "
+"you like. (They do not have to be, they can be plain JavaBean components if "
+"you prefer.)"
+msgstr "Ein zweiter Vorteil ist es, dass es sich bei Ihren Klassen um EJB Stateful Session Beans handeln kann, wenn Sie dies möchten. (Müssen sie nicht, es kann sich auch um einfache JavaBean-Komponenten handeln, wenn Sie das lieber möchten)."
+
+#. Tag: para
+#: Framework.xml:32
+#, no-c-format
+msgid ""
+"At this time, the Seam Application Framework provides just four built-in "
+"components: <literal>EntityHome</literal> and <literal>HibernateEntityHome</"
+"literal> for CRUD, along with <literal>EntityQuery</literal> and "
+"<literal>HibernateEntityQuery</literal> for queries."
+msgstr ""
+"Derzeit liefert das Seam Application Framework nur vier eingebaute Komponenten: <literal>EntityHome</literal> und <literal>HibernateEntityHome</literal> für CRUD sowie <literal>EntityQuery</literal> und "
+"<literal>HibernateEntityQuery</literal> für Anfragen."
+
+#. Tag: para
+#: Framework.xml:35
+#, no-c-format
+msgid ""
+"The Home and Query components are written so that they can function with a "
+"scope of session, event or conversation. Which scope you use depends upon "
+"the state model you wish to use in your application."
+msgstr "Die Home und Anfrage (Query) Komponenten sind derart geschrieben, dass sie sowohl im Bereich einer Session, eines Ereignisses oder einer Konversation funktionieren. Welchen Bereich Sie verwenden, hängt davon ab, welches Statusmodell (\"state model\") Sie in Ihrer Anwendung verwenden möchten."
+
+#. Tag: para
+#: Framework.xml:38
+#, no-c-format
+msgid ""
+"The Seam Application Framework only works with Seam-managed persistence "
+"contexts. By default, the components will look for a persistence context "
+"named <literal>entityManager</literal>."
+msgstr "Das Seam Application Framework funktioniert nur mit Seam-gemanagten Persistenzkontexten. Standardmäßig suchen Komponenten nach einem Persistenzkontext namens <literal>entityManager</literal>."
+
+#. Tag: title
+#: Framework.xml:44
+#, no-c-format
+msgid "Home objects"
+msgstr "\"Home\"-Objekte"
+
+#. Tag: para
+#: Framework.xml:45
+#, no-c-format
+msgid ""
+"A Home object provides persistence operations for a particular entity class. "
+"Suppose we have our trusty <literal>Person</literal> class:"
+msgstr "Ein \"Home\"-Objekt liefert Persistenzvorgänge für eine bestimmte Entity-Klasse. Nehmen wir an, wir haben unsere zuverlässige <literal>Person</literal>-Klasse:"
+
+#. Tag: programlisting
+#: Framework.xml:48
+#, no-c-format
+msgid ""
+"@Entity\n"
+"public class Person {\n"
+"    @Id private Long id;\n"
+"    private String firstName;\n"
+"    private String lastName;\n"
+"    private Country nationality;\n"
+"    \n"
+"    //getters and setters...\n"
+"}"
+msgstr ""
+"@Entity\n"
+"public class Person {\n"
+"    @Id private Long id;\n"
+"    private String firstName;\n"
+"    private String lastName;\n"
+"    private Country nationality;\n"
+"    \n"
+"    //getters and setters...\n"
+"}"
+
+#. Tag: para
+#: Framework.xml:49
+#, no-c-format
+msgid ""
+"We can define a <literal>personHome</literal> component either via "
+"configuration:"
+msgstr "Wir können eine <literal>personHome</literal>-Komponente entweder über Konfiguration definieren:"
+
+#. Tag: programlisting
+#: Framework.xml:52
+#, no-c-format
+msgid ""
+"&lt;framework:entity-home name=\"personHome\" entity-class=\"eg.Person\" /"
+"&gt;"
+msgstr ""
+"&lt;framework:entity-home name=\"personHome\" entity-class=\"eg.Person\" /"
+"&gt;"
+
+#. Tag: para
+#: Framework.xml:53
+#, no-c-format
+msgid "Or via extension:"
+msgstr "Oder via Erweiterung:"
+
+#. Tag: programlisting
+#: Framework.xml:56
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {}"
+msgstr ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {}"
+
+#. Tag: para
+#: Framework.xml:57
+#, no-c-format
+msgid ""
+"A Home object provides the following operations: <literal>persist()</"
+"literal>, <literal>remove()</literal>, <literal>update()</literal> and "
+"<literal>getInstance()</literal>. Before you can call the <literal>remove()</"
+"literal>, or <literal>update()</literal> operations, you must first set the "
+"identifier of the object you are interested in, using the <literal>setId()</"
+"literal> method."
+msgstr ""
+"Ein \"Home\"-Objekt liefert folgende Vorgänge: <literal>persist()</"
+"literal>, <literal>remove()</literal>, <literal>update()</literal> und "
+"<literal>getInstance()</literal>. Ehe Sie die <literal>remove()</"
+"literal> oder <literal>update()</literal> Vorgänge aufrufen, müssen Sie zuerst den Bezeichner des Sie interessierenden Objekts setzen, indem Sie die <literal>setId()</literal>-Methode verwenden."
+
+#. Tag: para
+#: Framework.xml:60
+#, no-c-format
+msgid "We can use a Home directly from a JSF page, for example:"
+msgstr "Wir können ein Home direkt von einer JSF-Seite verwenden, zum Beispiel:"
+
+#. Tag: programlisting
+#: Framework.xml:63
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Create Person&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{personHome.instance."
+"firstName}\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{personHome.instance."
+"lastName}\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h1&gt;Create Person&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{personHome.instance."
+"firstName}\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{personHome.instance."
+"lastName}\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+
+#. Tag: para
+#: Framework.xml:64
+#, no-c-format
+msgid ""
+"Usually, it is much nicer to be able to refer to the <literal>Person</"
+"literal> merely as <literal>person</literal>, so let&#39;s make that "
+"possible by adding a line to <literal>components.xml</literal>:"
+msgstr ""
+"In der Regel ist es schöner, bei <literal>Person</"
+"literal> lediglich <literal>person</literal> Bezug nehmen zu können, fügen wir also eine Zeile bei <literal>components.xml</literal> hinzu, um dies zu ermöglichen:"
+
+#. Tag: programlisting
+#: Framework.xml:67
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" /&gt;"
+msgstr ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" /&gt;"
+
+#. Tag: para
+#: Framework.xml:68
+#, no-c-format
+msgid ""
+"(If we are using configuration.) Or by adding a <literal>@Factory</literal> "
+"method to <literal>PersonHome</literal>:"
+msgstr "(Wenn wir Konfiguration verwenden). Oder durch Hinzufügen einer <literal>@Factory</literal>-Methode zu <literal>PersonHome</literal>:"
+
+#. Tag: programlisting
+#: Framework.xml:71
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"}"
+msgstr ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"}"
+
+#. Tag: para
+#: Framework.xml:72
+#, no-c-format
+msgid ""
+"(If we are using extension.) This change simplifies our JSF page to the "
+"following:"
+msgstr "(Wenn wir Erweiterung verwenden). Diese Änderung vereinfacht unsere JSF-Seite zu folgendem:"
+
+#. Tag: programlisting
+#: Framework.xml:75
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Create Person&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{person.firstName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{person.lastName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h1&gt;Create Person&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{person.firstName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{person.lastName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+
+#. Tag: para
+#: Framework.xml:76
+#, no-c-format
+msgid ""
+"Well, that lets us create new <literal>Person</literal> entries. Yes, that "
+"is all the code that is required! Now, if we want to be able to display, "
+"update and delete pre-existing <literal>Person</literal> entries in the "
+"database, we need to be able to pass the entry identifier to the "
+"<literal>PersonHome</literal>. Page parameters are a great way to do that:"
+msgstr "Nun, dies gestattet uns das Erstellen neuer <literal>Person</literal>-Einträge. Und ja, das ist alles an Code, was wir benötigen! Wenn wir jetzt bereits bestehende <literal>Person</literal>-Einträge in der Datenbank anzeigen, aktualisieren und löschen möchten, so müssen wir in der Lage dazu sein, den Eingabebezeichner an <literal>PersonHome</literal> zu geben. Seitenparameter sind eine hervorragende Weise dies zu tun:"
+
+#. Tag: programlisting
+#: Framework.xml:79
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/editPerson.jsp\"&gt;\n"
+"        &lt;param name=\"personId\" value=\"#{personHome.id}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/editPerson.jsp\"&gt;\n"
+"        &lt;param name=\"personId\" value=\"#{personHome.id}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Framework.xml:80
+#, no-c-format
+msgid "Now we can add the extra operations to our JSF page:"
+msgstr "Jetzt können wir die Extra-Vorgänge unserer JSF-Seite hinzufügen:"
+
+#. Tag: programlisting
+#: Framework.xml:83
+#, no-c-format
+msgid ""
+"&lt;h1&gt;\n"
+"    &lt;h:outputText rendered=\"#{!personHome.managed}\" value=\"Create "
+"Person\"/&gt;\n"
+"    &lt;h:outputText rendered=\"#{personHome.managed}\" value=\"Edit Person"
+"\"/&gt;\n"
+"&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{person.firstName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{person.lastName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\" \n"
+"                             rendered=\"#{!personHome.managed}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Update Person\" action=\"#{personHome."
+"update}\" \n"
+"                             rendered=\"#{personHome.managed}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Delete Person\" action=\"#{personHome."
+"remove}\" \n"
+"                             rendered=\"#{personHome.managed}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h1&gt;\n"
+"    &lt;h:outputText rendered=\"#{!personHome.managed}\" value=\"Create "
+"Person\"/&gt;\n"
+"    &lt;h:outputText rendered=\"#{personHome.managed}\" value=\"Edit Person"
+"\"/&gt;\n"
+"&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{person.firstName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{person.lastName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\" \n"
+"                             rendered=\"#{!personHome.managed}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Update Person\" action=\"#{personHome."
+"update}\" \n"
+"                             rendered=\"#{personHome.managed}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Delete Person\" action=\"#{personHome."
+"remove}\" \n"
+"                             rendered=\"#{personHome.managed}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+
+#. Tag: para
+#: Framework.xml:84
+#, no-c-format
+msgid ""
+"When we link to the page with no request parameters, the page will be "
+"displayed as a \"Create Person\" page. When we provide a value for the "
+"<literal>personId</literal> request parameter, it will be an \"Edit Person\" "
+"page."
+msgstr ""
+"Wenn wir ohne Anfragenparameter zu der Seite verlinken, so wird die Seite als eine \"Person erstellen\"-Seite dargestellt. Wenn wir einen Wert für den "
+"<literal>personId</literal>-Anfragenparameter bereitstellen, so handelt es sich um eine \"Person bearbeiten\"-Seite."
+
+#. Tag: para
+#: Framework.xml:87
+#, no-c-format
+msgid ""
+"Suppose we need to create <literal>Person</literal> entries with their "
+"nationality initialized. We can do that easily, via configuration:"
+msgstr "Nehmen wir an, wir müssen <literal>Person</literal>-Einträge erstellen, wobei deren Nationalität vorbelegt ist. Dies lässt sich einfach via Konfiguration tun:"
+
+#. Tag: programlisting
+#: Framework.xml:90
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" \n"
+"                       new-instance=\"#{newPerson}\"/&gt;\n"
+"\n"
+"&lt;component name=\"newPerson\" \n"
+"           class=\"eg.Person\"&gt;\n"
+"    &lt;property name=\"nationality\"&gt;#{country}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" \n"
+"                       new-instance=\"#{newPerson}\"/&gt;\n"
+"\n"
+"&lt;component name=\"newPerson\" \n"
+"           class=\"eg.Person\"&gt;\n"
+"    &lt;property name=\"nationality\"&gt;#{country}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+
+#. Tag: para
+#: Framework.xml:91
+#, no-c-format
+msgid "Or by extension:"
+msgstr "Oder durch Erwaeiterung:"
+
+#. Tag: programlisting
+#: Framework.xml:94
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"}"
+
+#. Tag: para
+#: Framework.xml:95
+#, no-c-format
+msgid ""
+"Of course, the <literal>Country</literal> could be an object managed by "
+"another Home object, for example, <literal>CountryHome</literal>."
+msgstr "Natürlich könnte <literal>Country</literal> ein von einem Home-Objekt gemanagtes Objekt sein, zum Beispiel <literal>CountryHome</literal>."
+
+#. Tag: para
+#: Framework.xml:98
+#, no-c-format
+msgid ""
+"To add more sophisticated operations (association management, etc), we can "
+"just add methods to <literal>PersonHome</literal>."
+msgstr "Um anspruchsvollere Vorgänge hinzuzufügen (Assoziationsmanagement, usw.), können wir <literal>PersonHome</literal> einfach Methoden hinzufügen."
+
+#. Tag: programlisting
+#: Framework.xml:101
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"    public void migrate()\n"
+"    {\n"
+"        getInstance().setCountry(country);\n"
+"        update();\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"    public void migrate()\n"
+"    {\n"
+"        getInstance().setCountry(country);\n"
+"        update();\n"
+"    }\n"
+"    \n"
+"}"
+
+#. Tag: para
+#: Framework.xml:102
+#, no-c-format
+msgid ""
+"The Home object automatically displays faces messages when an operation is "
+"successful. To customize these messages we can, again, use configuration:"
+msgstr "Das \"Home\"-Objekt zeigt automatisch Faces-Nachrichten an, wenn ein Vorgang erfolgreich ist. Um diese Nachrichten anzupassen, können wir erneut Konfiguration verwenden:"
+
+#. Tag: programlisting
+#: Framework.xml:105
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\"\n"
+"                       entity-class=\"eg.Person\"\n"
+"                       new-instance=\"#{newPerson}\"&gt;\n"
+"    &lt;framework:created-message&gt;New person #{person.firstName} #{person."
+"lastName} created&lt;/framework:created-message&gt;\n"
+"    &lt;framework:deleted-message&gt;Person #{person.firstName} #{person."
+"lastName} deleted&lt;/framework:deleted-message&gt;\n"
+"    &lt;framework:updated-message&gt;Person #{person.firstName} #{person."
+"lastName} updated&lt;/framework:updated-message&gt;\n"
+"&lt;/framework:entity-home&gt;\n"
+"\n"
+"&lt;component name=\"newPerson\" \n"
+"           class=\"eg.Person\"&gt;\n"
+"    &lt;property name=\"nationality\"&gt;#{country}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\"\n"
+"                       entity-class=\"eg.Person\"\n"
+"                       new-instance=\"#{newPerson}\"&gt;\n"
+"    &lt;framework:created-message&gt;New person #{person.firstName} #{person."
+"lastName} created&lt;/framework:created-message&gt;\n"
+"    &lt;framework:deleted-message&gt;Person #{person.firstName} #{person."
+"lastName} deleted&lt;/framework:deleted-message&gt;\n"
+"    &lt;framework:updated-message&gt;Person #{person.firstName} #{person."
+"lastName} updated&lt;/framework:updated-message&gt;\n"
+"&lt;/framework:entity-home&gt;\n"
+"\n"
+"&lt;component name=\"newPerson\" \n"
+"           class=\"eg.Person\"&gt;\n"
+"    &lt;property name=\"nationality\"&gt;#{country}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+
+#. Tag: para
+#: Framework.xml:106
+#, no-c-format
+msgid "Or extension:"
+msgstr "Oder Erweiterung:"
+
+#. Tag: programlisting
+#: Framework.xml:109
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"    protected String getCreatedMessage() { return \"New person #{person."
+"firstName} \n"
+"      #{person.lastName} created\"; }\n"
+"    protected String getUpdatedMessage() { return \"Person #{person."
+"firstName} \n"
+"      #{person.lastName} updated\"; }\n"
+"    protected String getDeletedMessage() { return \"Person #{person."
+"firstName} \n"
+"      #{person.lastName} deleted\"; }\n"
+"    \n"
+"}"
+msgstr ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"    protected String getCreatedMessage() { return \"New person #{person."
+"firstName} \n"
+"      #{person.lastName} created\"; }\n"
+"    protected String getUpdatedMessage() { return \"Person #{person."
+"firstName} \n"
+"      #{person.lastName} updated\"; }\n"
+"    protected String getDeletedMessage() { return \"Person #{person."
+"firstName} \n"
+"      #{person.lastName} deleted\"; }\n"
+"    \n"
+"}"
+
+#. Tag: para
+#: Framework.xml:110
+#, no-c-format
+msgid ""
+"But the best way to specify the messages is to put them in a resource bundle "
+"known to Seam (the bundle named <literal>messages</literal>, by default)."
+msgstr "Die beste Weise jedoch die Nachrichten festzulegen ist es, diese in ein Ressourcen-Bündel abzulegen, das Seam bekannt ist (standardmäßig das Bündel namens <literal>messages</literal>)."
+
+#. Tag: programlisting
+#: Framework.xml:113
+#, no-c-format
+msgid ""
+"Person_created=New person #{person.firstName} #{person.lastName} created\n"
+"Person_deleted=Person #{person.firstName} #{person.lastName} deleted\n"
+"Person_updated=Person #{person.firstName} #{person.lastName} updated"
+msgstr ""
+"Person_created=New person #{person.firstName} #{person.lastName} created\n"
+"Person_deleted=Person #{person.firstName} #{person.lastName} deleted\n"
+"Person_updated=Person #{person.firstName} #{person.lastName} updated"
+
+#. Tag: para
+#: Framework.xml:114
+#, no-c-format
+msgid ""
+"This enables internationalization, and keeps your code and configuration "
+"clean of presentation concerns."
+msgstr "Dies aktiviert Internationalisierung und hält Ihren Code und Ihre Konfiguration frei von Präsentationsproblemen."
+
+#. Tag: para
+#: Framework.xml:117
+#, no-c-format
+msgid ""
+"The final step is to add validation functionality to the page, using "
+"<literal>&lt;s:validateAll&gt;</literal> and <literal>&lt;s:decorate&gt;</"
+"literal>, but I&#39;ll leave that for you to figure out."
+msgstr ""
+"Der letzte Schritt ist es, der Seite Validierungsfunktionalität mittels "
+"<literal>&lt;s:validateAll&gt;</literal> und <literal>&lt;s:decorate&gt;</"
+"literal> hinzuzufügen, aber das lassen wir Sie selbst herausfinden."
+
+#. Tag: title
+#: Framework.xml:123
+#, no-c-format
+msgid "Query objects"
+msgstr "Anfragenobjekte"
+
+#. Tag: para
+#: Framework.xml:124
+#, no-c-format
+msgid ""
+"If we need a list of all <literal>Person</literal> instance in the database, "
+"we can use a Query object. For example:"
+msgstr "Falls wir eine Liste aller <literal>Person</literal>-Instanzen in der Datenbank benötigen, so können wir ein Anfragenobjekt verwenden. Zum Beispiel:"
+
+#. Tag: programlisting
+#: Framework.xml:127
+#, no-c-format
+msgid ""
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\"/&gt;"
+msgstr ""
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\"/&gt;"
+
+#. Tag: para
+#: Framework.xml:128
+#, no-c-format
+msgid "We can use it from a JSF page:"
+msgstr "Wir können es von einer JSF-Seite verwenden:"
+
+#. Tag: programlisting
+#: Framework.xml:131
+#, no-c-format
+msgid ""
+"&lt;h1&gt;List of people&lt;/h1&gt;\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+"&lt;h1&gt;List of people&lt;/h1&gt;\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+
+#. Tag: para
+#: Framework.xml:132
+#, no-c-format
+msgid "We probably need to support pagination:"
+msgstr "Wir werden wahrscheinlich die Paginierung unterstützen müssen:"
+
+#. Tag: programlisting
+#: Framework.xml:135
+#, no-c-format
+msgid ""
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\" \n"
+"                        order=\"lastName\" \n"
+"                        max-results=\"20\"/&gt;"
+msgstr ""
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\" \n"
+"                        order=\"lastName\" \n"
+"                        max-results=\"20\"/&gt;"
+
+#. Tag: para
+#: Framework.xml:136
+#, no-c-format
+msgid "We&#39;ll use a page parameter to determine the page to display:"
+msgstr "Wir verwenden einen Seitenparameter zur Bestimmung der anzuzeigenden Seite:"
+
+#. Tag: programlisting
+#: Framework.xml:139
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/searchPerson.jsp\"&gt;\n"
+"        &lt;param name=\"firstResult\" value=\"#{people.firstResult}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/searchPerson.jsp\"&gt;\n"
+"        &lt;param name=\"firstResult\" value=\"#{people.firstResult}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Framework.xml:140
+#, no-c-format
+msgid "The JSF code for a pagination control is a bit verbose, but manageable:"
+msgstr "Der JSF-Code für eine Paginierungssteuerung ist zwar etwas umfangreich, aber zu managen:"
+
+#. Tag: programlisting
+#: Framework.xml:143
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Search for people&lt;/h1&gt;\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.previousExists}\" "
+"value=\"First Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"0\"/&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.previousExists}\" "
+"value=\"Previous Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.previousFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.nextExists}\" value="
+"\"Next Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.nextFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.nextExists}\" value="
+"\"Last Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.lastFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;"
+msgstr ""
+"&lt;h1&gt;Search for people&lt;/h1&gt;\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.previousExists}\" "
+"value=\"First Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"0\"/&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.previousExists}\" "
+"value=\"Previous Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.previousFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.nextExists}\" value="
+"\"Next Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.nextFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.nextExists}\" value="
+"\"Last Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.lastFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;"
+
+#. Tag: para
+#: Framework.xml:144
+#, no-c-format
+msgid ""
+"Real search screens let the user enter a bunch of optional search criteria "
+"to narrow the list of results returned. The Query object lets you specify "
+"optional \"restrictions\" to support this important usecase:"
+msgstr "Echte Suchbildschirme gestatten es dem Benutzer eine ganze Reihe optionaler Suchkriterien einzugeben, um die Liste der wiedergegebenen Ergebnisse einzugrenzen. Das Anfragenobjekt (\"Query Object\") lässt Sie optionale \"Einschränkungen\" festlegen, um diesen wichtigen Anwendungsfall zu unterstützen:"
+
+#. Tag: programlisting
+#: Framework.xml:147
+#, no-c-format
+msgid ""
+"&lt;component name=\"examplePerson\" class=\"Person\"/&gt;\n"
+"        \n"
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\" \n"
+"                        order=\"lastName\" \n"
+"                        max-results=\"20\"&gt;\n"
+"    &lt;framework:restrictions&gt;\n"
+"        &lt;value&gt;lower(firstName) like lower( #{examplePerson.firstName} "
+"+ &#39;%&#39; )&lt;/value&gt;\n"
+"        &lt;value&gt;lower(lastName) like lower( #{examplePerson.lastName} + "
+"&#39;%&#39; )&lt;/value&gt;\n"
+"    &lt;/framework:restrictions&gt;\n"
+"&lt;/framework:entity-query&gt;"
+msgstr ""
+"&lt;component name=\"examplePerson\" class=\"Person\"/&gt;\n"
+"        \n"
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\" \n"
+"                        order=\"lastName\" \n"
+"                        max-results=\"20\"&gt;\n"
+"    &lt;framework:restrictions&gt;\n"
+"        &lt;value&gt;lower(firstName) like lower( #{examplePerson.firstName} "
+"+ &#39;%&#39; )&lt;/value&gt;\n"
+"        &lt;value&gt;lower(lastName) like lower( #{examplePerson.lastName} + "
+"&#39;%&#39; )&lt;/value&gt;\n"
+"    &lt;/framework:restrictions&gt;\n"
+"&lt;/framework:entity-query&gt;"
+
+#. Tag: para
+#: Framework.xml:148
+#, no-c-format
+msgid "Notice the use of an \"example\" object."
+msgstr "Beachten SIe die Verwendung eines \"Beispiel\"objekts."
+
+#. Tag: programlisting
+#: Framework.xml:151
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Search for people&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{examplePerson.firstName}"
+"\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{examplePerson.lastName}"
+"\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;&lt;h:commandButton value=\"Search\" action=\"/search.jsp\"/"
+"&gt;&lt;/div&gt;\n"
+"&lt;/h:form&gt;\n"
+"\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+"&lt;h1&gt;Search for people&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{examplePerson.firstName}"
+"\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{examplePerson.lastName}"
+"\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;&lt;h:commandButton value=\"Search\" action=\"/search.jsp\"/"
+"&gt;&lt;/div&gt;\n"
+"&lt;/h:form&gt;\n"
+"\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+
+#. Tag: para
+#: Framework.xml:152
+#, no-c-format
+msgid ""
+"The examples in this section have all shown reuse by configuration. However, "
+"reuse by extension is equally possible for Query objects."
+msgstr "Die Beispiele in diesem Abschnitt haben alle die Wiederverwendung durch Konfiguration gezeigt. Die Wiederverwendung nach Erweiterung ist jedoch ebenso möglich für Anfragenobjekte."
+
+#. Tag: title
+#: Framework.xml:158
+#, no-c-format
+msgid "Controller objects"
+msgstr "Kontroller-Objekte"
+
+#. Tag: para
+#: Framework.xml:159
+#, no-c-format
+msgid ""
+"A totally optional part of the Seam Application Framework is the class "
+"<literal>Controller</literal> and its subclasses <literal>EntityController</"
+"literal><literal>HibernateEntityController</literal> and "
+"<literal>BusinessProcessController</literal>. These classes provide nothing "
+"more than some convenience methods for access to commonly used built-in "
+"components and methods of built-in components. They help save a few "
+"keystrokes (characters can add up!) and provide a great launchpad for new "
+"users to explore the rich functionality built in to Seam."
+msgstr ""
+"Ein völlig optionaler Teil des Seam Application Framework ist die Klasse "
+"<literal>Controller</literal> und ihre Unterklassen <literal>EntityController</literal><literal>HibernateEntityController</literal> und <literal>BusinessProcessController</literal>. Diese Klassen bieten einfach angenehmere Methoden für den Zugriff auf häufig benutzte eingebaute Komponenten und Methoden eingebauter Komponenten. Sie sparen ein paar Tastengriffe (Einzelzeichen summieren sich!) und bieten neuen Benutzern einen hervorragenden Startpunkt, um die umfangreiche, in Seam eingebaute Funktionalität zu entdecken."
+
+#. Tag: para
+#: Framework.xml:162
+#, no-c-format
+msgid ""
+"For example, here is what <literal>RegisterAction</literal> from the Seam "
+"registration example would look like:"
+msgstr ""
+"Dies ist zum Beispiel, wie <literal>RegisterAction</literal> aus dem Seam "
+"Registrierungsbeispiel aussehen würde:"
+
+#. Tag: programlisting
+#: Framework.xml:165
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"register\")\n"
+"public class RegisterAction extends EntityController implements Register\n"
+"{\n"
+"\n"
+"   @In private User user;\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = createQuery(\"select u.username from User u where u."
+"username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getResultList();\n"
+"      \n"
+"      if ( existing.size()==0 )\n"
+"      {\n"
+"         persist(user);\n"
+"         info(\"Registered new user #{user.username}\");\n"
+"         return \"/registered.jspx\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         addFacesMessage(\"User #{user.username} already exists\");\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+"@Stateless\n"
+"@Name(\"register\")\n"
+"public class RegisterAction extends EntityController implements Register\n"
+"{\n"
+"\n"
+"   @In private User user;\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = createQuery(\"select u.username from User u where u."
+"username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getResultList();\n"
+"      \n"
+"      if ( existing.size()==0 )\n"
+"      {\n"
+"         persist(user);\n"
+"         info(\"Registered new user #{user.username}\");\n"
+"         return \"/registered.jspx\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         addFacesMessage(\"User #{user.username} already exists\");\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+
+#. Tag: para
+#: Framework.xml:166
+#, no-c-format
+msgid "As you can see, its not an earthshattering improvement..."
+msgstr "Wie Sie sehen, handelt es sich nicht gerade um eine großartige Verbesserung..."
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Gettingstarted.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Gettingstarted.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Gettingstarted.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,970 @@
+# translation of Gettingstarted.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Jasna Dimanoski <jdimanos at redhat.com>, 2007, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Gettingstarted\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2008-02-29 18:58+1000\n"
+"Last-Translator: Jasna Dimanoski <jdimanos at redhat.com>\n"
+"Language-Team:  <de at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Gettingstarted.xml:6
+#, no-c-format
+msgid "Getting started with Seam, using seam-gen"
+msgstr "Erste Schritte mit Seam, Verwendung von seam-gen"
+
+#. Tag: para
+#: Gettingstarted.xml:7
+#, no-c-format
+msgid ""
+"The Seam distribution includes a command line utility that makes it really "
+"easy to set up an Eclipse project, generate some simple Seam skeleton code, "
+"and reverse engineer an application from a pre-existing database."
+msgstr "Die Seam Distribution ein Befehlszeilen-Dienstprogramm, mit dem es ganz einfach ist, ein Eclipse-Projekt einzurichten, ein einfaches Seam Code-Gerippe zu generieren und das \"Reverse Engineering\" einer Anwendung von einer bereits vorhandenen Datenbank durchzuführen."
+
+#. Tag: para
+#: Gettingstarted.xml:10
+#, no-c-format
+msgid ""
+"This is the easy way to get your feet wet with Seam, and gives you some "
+"ammunition for next time you find yourself trapped in an elevator with one "
+"of those tedious Ruby guys ranting about how great and wonderful his new toy "
+"is for building totally trivial applications that put things in databases."
+msgstr "Auf diese Weise machen Sie sich ganz leicht mit Seam vertraut und lernen dessen Vorteile kennen, so dass Sie zurückschießen können, wenn Sie das nächste Mal mit einem dieser Ruby-Typen im Aufzug steckenbleiben, der Ihnen von seinem neuen Speilzeug erzählt, das völlig triviale Anwendungen baut, die Dinge in Datenbanken befördern."
+
+#. Tag: para
+#: Gettingstarted.xml:13
+#, no-c-format
+msgid ""
+"In this release, seam-gen works best for people with JBoss AS. You can use "
+"the generated project with other J2EE or Java EE 5 application servers by "
+"making a few manual changes to the project configuration."
+msgstr "In dieser Release, funktioniert seam-gen am besten für Personen mit JBoss AS. Sie können das generierte Projekt mit anderen J2EE- oder Java EE 5- Anwendungsserver verwenden, indem Sie ein paar manuelle Änderungen an der Projektkonfiguration vornehmen."
+
+#. Tag: para
+#: Gettingstarted.xml:16
+#, no-c-format
+msgid ""
+"You <emphasis>can</emphasis> use seam-gen without Eclipse, but in this "
+"tutorial, we want to show you how to use it in conjunction with Eclipse for "
+"debugging and integration testing. If you don&#39;t want to install Eclipse, "
+"you can still follow along with this tutorial&mdash;all steps can be "
+"peformed from the command line."
+msgstr "Sie <emphasis>können</emphasis> seam-gen ohne Eclipse verwenden, aber in diesem Übungsteil, möchten wir es Ihnen in Verbindung mit Eclipse bei der Fehlersuche und -behebung sowie Integrationstests zeigen. Falls Sie Eclipse nicht installieren möchten, können Sie trotzdem mit diesem Übungsteil fortfahren&mdash;alle Schritte können von der Befehlszeile aus durchgeführt werden."
+
+#. Tag: para
+#: Gettingstarted.xml:19
+#, no-c-format
+msgid ""
+"Seam-gen is basically just a big ugly Ant script wrapped around Hibernate "
+"Tools, together with some templates. Which means it is easy to customize if "
+"you need to."
+msgstr "Bei Seam-gen handelt es sich im Wesentlichen um ein großes Ant-Skript, das gemeinsam mit ein paar Templates um Hibernate Tools gewrappt ist. Es ist daher bei Bedarf ganz einfach anpassbar."
+
+#. Tag: title
+#: Gettingstarted.xml:23
+#, no-c-format
+msgid "Before you start"
+msgstr "Bevor Sie anfangen"
+
+#. Tag: para
+#: Gettingstarted.xml:24
+#, no-c-format
+msgid ""
+"Make sure you have JDK 5 or JDK 6, JBoss AS 4.0.5 and Ant 1.6, along with "
+"recent versions of Eclipse, the JBoss IDE plugin for Eclipse and the TestNG "
+"plugin for Eclipse correctly installed before starting. Add your JBoss "
+"installation to the JBoss Server View in Eclipse. Start JBoss in debug mode. "
+"Finally, start a command prompt in the directory where you unzipped the Seam "
+"distribution."
+msgstr "Vergewissern Sie sich, dass Sie JDK 5 oder JDK 6, JBoss AS 4.0.5 und Ant 1.6 sowie aktuelle Versionen von Eclipse, dem JBoss IDE-Plugin für Eclipse und den TestNG-Plugin für Eclipse korrekt installiert haben, ehe Sie anfangen. Fügen Sie Ihre JBoss-Installation dem JBoss Server View in Eclipse hinzu. Starten Sie JBoss im Debug-Modus. Starten Sie anschließend einen Befehls-Prompt im Verzeichnis, in dem Sie die Seam-Distribution entzippt haben."
+
+#. Tag: para
+#: Gettingstarted.xml:27
+#, no-c-format
+msgid ""
+"JBoss has sophisticated support for hot re-deployment of WARs and EARs. "
+"Unfortunately, due to bugs in the JVM, repeated redeployment of an EAR&mdash;"
+"which is common during development&mdash;eventually causes the JVM to run "
+"out of perm gen space. For this reason, we recommend running JBoss in a JVM "
+"with a large perm gen space at development time. If you&#39;re running JBoss "
+"from JBoss IDE, you can configure this in the server launch configuration, "
+"under \"VM arguments\". We suggest the following values:"
+msgstr ""
+"JBoss bietet ausgezeichneten Support für das \"hot Redeployment\" von WARs und EARs. Leider führt das wiederholte Redeployment eines EAR&mdash; was während der Entwicklung häufig ist&mdash; aufgrund von Bugs in der JVM dazu, dass der JVM der perm gen Platz ausgeht. Aus diesem Grund empfehlen wir, JBoss in einer JVM mit einer großen Menge an perm gen Platz zum Entwicklungszeitpunkt laufen zu lassen. Wenn Sie JBoss "
+"vm JBoss IDE ausführen, können Sie dies in der Server-Launch-Konfiguration "
+"unter \"VM-Argumente\" konfigurieren. Wir empfehlen die folgenden Werte:"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:30
+#, no-c-format
+msgid "-Xms512m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512"
+msgstr "-Xms512m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512"
+
+#. Tag: para
+#: Gettingstarted.xml:31
+#, no-c-format
+msgid ""
+"If you don&#39;t have so much memory available, the following is our minimum "
+"recommendation:"
+msgstr "Falls Sie nicht so viel Speicher zur Verfügung haben, so raten wir zu folgendem Minimum:"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:34
+#, no-c-format
+msgid "-Xms256m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=256"
+msgstr "-Xms256m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=256"
+
+#. Tag: para
+#: Gettingstarted.xml:35
+#, no-c-format
+msgid ""
+"If you&#39;re running JBoss from the commandline, you can configure the JVM "
+"options in <literal>bin/run.conf</literal>."
+msgstr "Falls Sie JBoss von der Befehlszeile ausführen, können Sie die JVM-Optionen in <literal>bin/run.conf</literal> konfigurieren."
+
+#. Tag: para
+#: Gettingstarted.xml:38
+#, no-c-format
+msgid ""
+"If you don&#39;t want to bother with this stuff now, you don&#39;t have "
+"to&mdash;come back to it later, when you get your first "
+"<literal>OutOfMemoryException</literal>."
+msgstr ""
+"Wenn Sie sich damit jetzt nicht auseinandersetzen wollen, kommen Sie später darauf zurück &mdash;wenn Sie Ihre erste "
+"<literal>OutOfMemoryException</literal>-Meldung erhalten."
+
+#. Tag: title
+#: Gettingstarted.xml:44
+#, no-c-format
+msgid "Setting up a new Eclipse project"
+msgstr "Einrichten eines neuen Eclipse-Projekts"
+
+#. Tag: para
+#: Gettingstarted.xml:45
+#, no-c-format
+msgid ""
+"The first thing we need to do is configure seam-gen for your environment: "
+"JBoss AS installation directory, Eclipse workspace, and database connection. "
+"It&#39;s easy, just type:"
+msgstr "Das erste, was wir tun müssen ist es, ein seam-gen für Ihre Umgebung zu konfigurieren: JBoss AS Installationsverzeichnis, Eclipse Arbeitsbereich und Datenbankverbindung. Es ist unkompliziert, tippen Sie einfach:"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:48
+#, no-c-format
+msgid ""
+"cd jboss-seam-1.1.x\n"
+"seam setup"
+msgstr ""
+"cd jboss-seam-1.1.x\n"
+"seam setup"
+
+#. Tag: para
+#: Gettingstarted.xml:49
+#, no-c-format
+msgid "And you will be prompted for the needed information:"
+msgstr "Und Sie werden zur Eingabe der benötigten Informationen aufgefordert:"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:52
+#, no-c-format
+msgid ""
+"C:\\Projects\\jboss-seam&gt;seam setup\n"
+"Buildfile: C:\\Projects\\jboss-seam\\seam-gen\\build.xml\n"
+"\n"
+"setup:\n"
+"    [echo] Welcome to seam-gen :-)\n"
+"    [input] Enter your Java project workspace [C:/Projects]\n"
+"\n"
+"    [input] Enter your JBoss home directory [C:/Program Files/jboss-4.0.5."
+"GA]\n"
+"\n"
+"    [input] Enter the project name [myproject]\n"
+"helloworld\n"
+"    [input] Is this project deployed as an EAR (with EJB components) or a "
+"WAR \n"
+"       (with no EJB support) [ear] (ear,war,)\n"
+"\n"
+"    [input] Enter the Java package name for your session beans [com.mydomain."
+"helloworld]\n"
+"org.jboss.helloworld\n"
+"    [input] Enter the Java package name for your entity beans [org.jboss."
+"helloworld]\n"
+"\n"
+"    [input] Enter the Java package name for your test cases [org.jboss."
+"helloworld.test]\n"
+"\n"
+"    [input] What kind of database are you using? [hsql] \n"
+"    (hsql,mysql,oracle,postgres,mssql,db2,sybase,)\n"
+"mysql\n"
+"    [input] Enter the Hibernate dialect for your database [org.hibernate."
+"dialect.MySQLDialect]\n"
+"\n"
+"    [input] Enter the filesystem path to the JDBC driver jar [lib/hsqldb."
+"jar]\n"
+"../../mysql-connector.jar\n"
+"    [input] Enter JDBC driver class for your database [com.mysql.jdbc."
+"Driver]\n"
+"\n"
+"    [input] Enter the JDBC URL for your database [jdbc:mysql:///test]\n"
+"\n"
+"    [input] Enter database username [sa]\n"
+"gavin\n"
+"    [input] Enter database password []\n"
+"\n"
+"    [input] Are you working with tables that already exist in the database? "
+"[n] (y,n,)\n"
+"y\n"
+"    [input] Do you want to drop and recreate the database tables and data in "
+"import.sql \n"
+"    each time you deploy? [n] (y,n,)\n"
+"n\n"
+"[propertyfile] Creating new property file: C:\\Projects\\jboss-seam\\seam-gen"
+"\\build.properties\n"
+"     [echo] Installing JDBC driver jar to JBoss server\n"
+"     [echo] Type &#39;seam new-project&#39; to create the new project\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 1 minute 17 seconds\n"
+"C:\\Projects\\jboss-seam&gt;"
+msgstr ""
+"C:\\Projects\\jboss-seam&gt;seam setup\n"
+"Buildfile: C:\\Projects\\jboss-seam\\seam-gen\\build.xml\n"
+"\n"
+"setup:\n"
+"    [echo] Welcome to seam-gen :-)\n"
+"    [input] Enter your Java project workspace [C:/Projects]\n"
+"\n"
+"    [input] Enter your JBoss home directory [C:/Program Files/jboss-4.0.5."
+"GA]\n"
+"\n"
+"    [input] Enter the project name [myproject]\n"
+"helloworld\n"
+"    [input] Is this project deployed as an EAR (with EJB components) or a "
+"WAR \n"
+"       (with no EJB support) [ear] (ear,war,)\n"
+"\n"
+"    [input] Enter the Java package name for your session beans [com.mydomain."
+"helloworld]\n"
+"org.jboss.helloworld\n"
+"    [input] Enter the Java package name for your entity beans [org.jboss."
+"helloworld]\n"
+"\n"
+"    [input] Enter the Java package name for your test cases [org.jboss."
+"helloworld.test]\n"
+"\n"
+"    [input] What kind of database are you using? [hsql] \n"
+"    (hsql,mysql,oracle,postgres,mssql,db2,sybase,)\n"
+"mysql\n"
+"    [input] Enter the Hibernate dialect for your database [org.hibernate."
+"dialect.MySQLDialect]\n"
+"\n"
+"    [input] Enter the filesystem path to the JDBC driver jar [lib/hsqldb."
+"jar]\n"
+"../../mysql-connector.jar\n"
+"    [input] Enter JDBC driver class for your database [com.mysql.jdbc."
+"Driver]\n"
+"\n"
+"    [input] Enter the JDBC URL for your database [jdbc:mysql:///test]\n"
+"\n"
+"    [input] Enter database username [sa]\n"
+"gavin\n"
+"    [input] Enter database password []\n"
+"\n"
+"    [input] Are you working with tables that already exist in the database? "
+"[n] (y,n,)\n"
+"y\n"
+"    [input] Do you want to drop and recreate the database tables and data in "
+"import.sql \n"
+"    each time you deploy? [n] (y,n,)\n"
+"n\n"
+"[propertyfile] Creating new property file: C:\\Projects\\jboss-seam\\seam-gen"
+"\\build.properties\n"
+"     [echo] Installing JDBC driver jar to JBoss server\n"
+"     [echo] Type &#39;seam new-project&#39; to create the new project\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 1 minute 17 seconds\n"
+"C:\\Projects\\jboss-seam&gt;"
+
+#. Tag: para
+#: Gettingstarted.xml:53
+#, no-c-format
+msgid ""
+"The tool provides sensible defaults, which you can accept by just pressing "
+"enter at the prompt."
+msgstr "Das Tool bietet vernünftige Standards, die Sie übernehmen können, indem Sie einfach die Eingabetaste (\"Enter\") beim Prompt betätigen."
+
+#. Tag: para
+#: Gettingstarted.xml:56
+#, no-c-format
+msgid ""
+"The most important choice you need to make is between EAR deployment and WAR "
+"deployment of your project. EAR projects support EJB 3.0 and require Java EE "
+"5. WAR projects do not support EJB 3.0, but may be deployed to a J2EE "
+"environment. The packaging of a WAR is also simpler to understand. If you "
+"installed JBoss with the ejb3 profile, choose <literal>ear</literal>. "
+"Otherwise, choose <literal>war</literal>. We&#39;ll assume that you&#39;ve "
+"chosen an EAR deployment for the rest of the tutorial, but you can follow "
+"exactly the same steps for a WAR deployment."
+msgstr ""
+"Die wichtigste Entscheidung, die Sie werden treffen müssen ist zwischen einem EAR-Deployment und einem WAR-Deployment Ihres Projekts. EAR Projekte unterstützen EJB 3.0 und erfordern Java EE 5. WAR Projekte unterstützen EJB 3.0 nicht, aber können in eine J2EE-Umgebung deployt werden. Die Packweise von WAR ist ebenfalls einfacher zu verstehen. Falls Sie JBoss mit dem ejb3-Profil installiert haben, wählen Sie <literal>ear</literal>."
+"Andernfalls wählen Sie <literal>war</literal>. Wir gehen für den Rest des Übungsteils davon aus, dass Sie ein EAR-Deployment gewählt haben, aber Sie können die exakt gleichen Schritte für ein WAR-Deployment befolgen."
+
+#. Tag: para
+#: Gettingstarted.xml:59
+#, no-c-format
+msgid ""
+"If you are working with an existing data model, make sure you tell seam-gen "
+"that the tables already exist in the database."
+msgstr "Falls Sie mit einem bestehenden Datenmodell arbeiten, stellen Sie sicher, dass Sie seam-gen mitteilen, dass die Tabellen in der Datenbank bereits existieren."
+
+#. Tag: para
+#: Gettingstarted.xml:62
+#, no-c-format
+msgid ""
+"The settings are stored in <literal>seam-gen/build.properties</literal>, but "
+"you can also modify them simply by running <literal>seam setup</literal> a "
+"second time."
+msgstr "Die Einstellungen werden in <literal>seam-gen/build.properties</literal> gespeichert, aber Sie können diese auch bearbeiten, indem Sie einfach <literal>seam setup</literal> ein zweites Mal ausführen."
+
+#. Tag: para
+#: Gettingstarted.xml:65
+#, no-c-format
+msgid ""
+"Now we can create a new project in our Eclipse workspace directory, by "
+"typing:"
+msgstr "Wir können jetzt ein neues Projekt in unserem Eclipse Arbeitsbereich-Verzeichnis erstellen, indem wir folgendes eingeben:"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:68
+#, no-c-format
+msgid "seam new-project"
+msgstr "seam new-project"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:69
+#, no-c-format
+msgid ""
+"C:\\Projects\\jboss-seam&gt;seam new-project\n"
+"Buildfile: C:\\Projects\\jboss-seam\\seam-gen\\build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"copy-lib:\n"
+"     [echo] Copying project jars ...\n"
+"     [copy] Copying 32 files to C:\\Projects\\helloworld\\lib\n"
+"     [copy] Copying 9 files to C:\\Projects\\helloworld\\embedded-ejb\n"
+"\n"
+"file-copy-wtp:\n"
+"\n"
+"file-copy:\n"
+"     [echo] Copying project resources ...\n"
+"     [copy] Copying 12 files to C:\\Projects\\helloworld\\resources\n"
+"     [copy] Copying 1 file to C:\\Projects\\helloworld\\resources\n"
+"     [copy] Copying 5 files to C:\\Projects\\helloworld\\view\n"
+"     [copy] Copying 5 files to C:\\Projects\\helloworld\n"
+"    [mkdir] Created dir: C:\\Projects\\helloworld\\src\n"
+"\n"
+"new-project:\n"
+"     [echo] A new Seam project named &#39;helloworld&#39; was created in "
+"the /Users/gavin/Documents/workspace directory\n"
+"     [echo] Type &#39;seam explode&#39; and go to http://localhost:8080/"
+"helloworld\n"
+"     [echo] Eclipse Users: Add the project into Eclipse using File &gt; New "
+"&gt; Project and select General &gt; Project (not Java Project)\n"
+"     [echo] NetBeans Users: Open the project in NetBeans\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 7 seconds\n"
+"C:\\Projects\\jboss-seam&gt;"
+msgstr ""
+"C:\\Projects\\jboss-seam&gt;seam new-project\n"
+"Buildfile: C:\\Projects\\jboss-seam\\seam-gen\\build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"copy-lib:\n"
+"     [echo] Copying project jars ...\n"
+"     [copy] Copying 32 files to C:\\Projects\\helloworld\\lib\n"
+"     [copy] Copying 9 files to C:\\Projects\\helloworld\\embedded-ejb\n"
+"\n"
+"file-copy-wtp:\n"
+"\n"
+"file-copy:\n"
+"     [echo] Copying project resources ...\n"
+"     [copy] Copying 12 files to C:\\Projects\\helloworld\\resources\n"
+"     [copy] Copying 1 file to C:\\Projects\\helloworld\\resources\n"
+"     [copy] Copying 5 files to C:\\Projects\\helloworld\\view\n"
+"     [copy] Copying 5 files to C:\\Projects\\helloworld\n"
+"    [mkdir] Created dir: C:\\Projects\\helloworld\\src\n"
+"\n"
+"new-project:\n"
+"     [echo] A new Seam project named &#39;helloworld&#39; was created in "
+"the /Users/gavin/Documents/workspace directory\n"
+"     [echo] Type &#39;seam explode&#39; and go to http://localhost:8080/"
+"helloworld\n"
+"     [echo] Eclipse Users: Add the project into Eclipse using File &gt; New "
+"&gt; Project and select General &gt; Project (not Java Project)\n"
+"     [echo] NetBeans Users: Open the project in NetBeans\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 7 seconds\n"
+"C:\\Projects\\jboss-seam&gt;"
+
+#. Tag: para
+#: Gettingstarted.xml:70
+#, no-c-format
+msgid ""
+"This copies the Seam jars, dependent jars and the JDBC driver jar to a new "
+"Eclipse project, and generates all needed resources and configuration files, "
+"a facelets template file and stylesheet, along with Eclipse metadata and an "
+"Ant build script. The Eclipse project will be automatically deployed to an "
+"exploded directory structure in JBoss AS as soon as you add the project "
+"using <literal>New -&gt; Project... -&gt; General -&gt; Project -&gt; Next</"
+"literal>, typing the <literal>Project name</literal> (<literal>helloworld</"
+"literal> in this case), and then clicking <literal>Finish</literal>. Do not "
+"select <literal>Java Project</literal> from the New Project wizard."
+msgstr ""
+"Dies kopiert die Seam Jars, abhängige Jars und die JDBC-Treiber-Jar in ein"
+"Eclipse Projekt und generiert alle benötigten Ressourcen und Konfigurationsdateien, eine Facelets Template-Datei und ein Stylesheet, sowie Eclipse-Metadaten und ein Ant Build-Skript. Das Eclipse Projekt wird automatisch in eine ausgeklappte Verzeichnisstruktur in JBoss AS deployt, sobald Sie das Projekt mittels <literal>New -&gt; Project... -&gt; General -&gt; Project -&gt; Next</literal> hinzufügen, den Projektnamen eingeben <literal>Project name</literal> (<literal>helloworld</"
+"literal> in diesem Fall), und dann auf <literal>Finish</literal> klicken. Wählen Sie nicht <literal>Java Project</literal> vom \"New Project\"-Wizard."
+
+#. Tag: para
+#: Gettingstarted.xml:73
+#, no-c-format
+msgid ""
+"If your default JDK in Eclipse is not a Java SE 5 or Java SE 6 JDK, you will "
+"need to select a Java SE 5 compliant JDK using <literal>Project -&gt; "
+"Properties -&gt; Java Compiler</literal>."
+msgstr ""
+"Falls es sich bei Ihrem standardmäßigen JDK in Eclipse nicht um ein Java SE 5 oder Java SE 6 JDK handelt, werden Sie ein Java SE 5-konformes JDK unter Verwendung von <literal>Project -&gt; "
+"Properties -&gt; Java Compiler</literal> auswählen müssen."
+
+#. Tag: para
+#: Gettingstarted.xml:76
+#, no-c-format
+msgid ""
+"Alternatively, you can deploy the project from outside Eclipse by typing "
+"<literal>seam explode</literal>."
+msgstr "Alternativ können Sie das Projekt von außerhalb von Eclipse durch Eingabe von <literal>seam explode</literal> deployen."
+
+#. Tag: para
+#: Gettingstarted.xml:79
+#, no-c-format
+msgid ""
+"Go to <literal>http://localhost:8080/helloworld</literal> to see a welcome "
+"page. This is a facelets page, <literal>view/home.xhtml</literal>, using the "
+"template <literal>view/layout/template.xhtml</literal>. You can edit this "
+"page, or the template, in eclipse, and see the results "
+"<emphasis>immediately</emphasis>, by clicking refresh in your browser."
+msgstr "Besuchen Sie <literal>http://localhost:8080/helloworld</literal>, wo Sie eine Begrüßungsseite mit Willkommensmeldung finden. Es handelt sich hierbei um eine Facelets_Seite, <literal>view/home.xhtml</literal>, die das Template <literal>view/layout/template.xhtml</literal> verwendet. Sie können diese Seite oder das Template in Eclipse bearbeiten und sehen die Ergebnisse <emphasis>sofort</emphasis>, indem Sie Ihren Browser neu laden."
+
+#. Tag: para
+#: Gettingstarted.xml:82
+#, no-c-format
+msgid ""
+"Don&#39;t get scared by the XML configuration documents that were generated "
+"into the project directory. They are mostly standard Java EE stuff, the "
+"stuff you need to create once and then never look at again, and they are 90% "
+"the same between all Seam projects. (They are so easy to write that even "
+"seam-gen can do it.)"
+msgstr ""
+"Machen Sie sich keine Sorgen um die XML-Konfigurationsdokumente, die in das Projektverzeichnis generiert wurden. Es handelt sich dabei überwiedgend umd Standard Java EE, die Sie einmal erstellen und dann wahrscheinlich nie wieder verwenden müssen und die zu 90% "
+"bei allen Seam-Projekten gleich sind. (Sie sind so einfach zu schreiben, dass sogar seam-gen dies übernehmen kann)."
+
+#. Tag: para
+#: Gettingstarted.xml:85
+#, no-c-format
+msgid ""
+"The generated project includes three database and persistence "
+"configurations. The <literal>jboss-beans.xml</literal>, <literal>persistence-"
+"test.xml</literal> and <literal>import-test.sql</literal> files are used "
+"when running the TestNG unit tests against HSQLDB. The database schema and "
+"the test data in <literal>import-test.sql</literal> is always exported to "
+"the database before running tests. The <literal>myproject-dev-ds.xml</"
+"literal>, <literal>persistence-dev.xml</literal>and <literal>import-dev.sql</"
+"literal> files are for use when deploying the application to your "
+"development database. The schema might be exported automatically at "
+"deployment, depending upon whether you told seam-gen that you are working "
+"with an existing database. The <literal>myproject-prod-ds.xml</literal>, "
+"<literal>persistence-prod.xml</literal>and <literal>import-prod.sql</"
+"literal> files are for use when deploying the application to your production "
+"database. The schema is not exported automatically at deployment."
+msgstr ""
+"Das generierte Projekt enthält drei Datenbank- und Persistenzkonfigurationen . Die <literal>jboss-beans.xml</literal>, <literal>persistence-"
+"test.xml</literal> und <literal>import-test.sql</literal>-Dateien werden verwendet, wenn die TestNG-Einheit gegen HSQLDB testet. Das Datenbankschema und die Testdaten in <literal>import-test.sql</literal> werden immer zur Datenbank"
+" exportiert, ehe die Tests ausgeführt werden. Die <literal>myproject-dev-ds.xml</literal>, <literal>persistence-dev.xml</literal>and <literal>import-dev.sql</literal>-Dateien werden verwendet, wenn die Anwendung zu Ihrer Entwicklungsdatenbank deployt wird. Das Schema kann beim Deployment automatisch exportiert werden, je nachdem, ob Sie seam-gen mitgeteilt haben, dass Sie mit einer existierenden Datenbank arbeiten. Die <literal>myproject-prod-ds.xml</literal>, "
+"<literal>persistence-prod.xml</literal>und <literal>import-prod.sql</"
+"literal>-Dateien kommen zum Einsatz, wenn die Anwendung in Ihre Produktionsdatenbank deployt wird. Das Schema wird beim Deployment nicht automatisch exportiert."
+
+#. Tag: title
+#: Gettingstarted.xml:91
+#, no-c-format
+msgid "Creating a new action"
+msgstr "Erstellen einer neuen \"Action\""
+
+#. Tag: para
+#: Gettingstarted.xml:92
+#, no-c-format
+msgid ""
+"If you&#39;re used to traditional action-style web frameworks, you&#39;re "
+"probably wondering how you can create a simple webpage with a stateless "
+"action method in Java. If you type:"
+msgstr "Falls Sie an traditionelle Frameworks im \"Action\"-Stil gewöhnt sind, dann fragen Sie sich wahrscheinlich wie Sie eine einfache Webseite mit einer Stateless \"Action\"-Methode in Java erstellen können. Wenn Sie tippen:"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:95
+#, no-c-format
+msgid "seam new-action"
+msgstr "seam new-action"
+
+#. Tag: para
+#: Gettingstarted.xml:96
+#, no-c-format
+msgid ""
+"Seam will prompt for some information, and generate a new facelets page and "
+"Seam component for your project."
+msgstr "Seam fordert Sie dann zur Eingabe bestimmter Informationen auf und generiert eine neue Facelets-Seite und eine Seam-Komponente für Ihr Projekt."
+
+#. Tag: programlisting
+#: Gettingstarted.xml:99
+#, no-c-format
+msgid ""
+"C:\\Projects\\jboss-seam&gt;seam new-action ping\n"
+"Buildfile: C:\\Projects\\jboss-seam\\seam-gen\\build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"action-input:\n"
+"    [input] Enter the Seam component name\n"
+"ping\n"
+"    [input] Enter the local interface name [Ping]\n"
+"\n"
+"    [input] Enter the bean class name [PingBean]\n"
+"\n"
+"    [input] Enter the action method name [ping]\n"
+"\n"
+"    [input] Enter the page name [ping]\n"
+"\n"
+"\n"
+"setup-filters:\n"
+"\n"
+"new-action:\n"
+"     [echo] Creating a new stateless session bean component with an action "
+"method\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\\test\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\\test\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\view\n"
+"     [echo] Type &#39;seam restart&#39; and go to \n"
+"     http://localhost:8080/helloworld/ping.seam\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 13 seconds\n"
+"C:\\Projects\\jboss-seam&gt;"
+msgstr ""
+"C:\\Projects\\jboss-seam&gt;seam new-action ping\n"
+"Buildfile: C:\\Projects\\jboss-seam\\seam-gen\\build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"action-input:\n"
+"    [input] Enter the Seam component name\n"
+"ping\n"
+"    [input] Enter the local interface name [Ping]\n"
+"\n"
+"    [input] Enter the bean class name [PingBean]\n"
+"\n"
+"    [input] Enter the action method name [ping]\n"
+"\n"
+"    [input] Enter the page name [ping]\n"
+"\n"
+"\n"
+"setup-filters:\n"
+"\n"
+"new-action:\n"
+"     [echo] Creating a new stateless session bean component with an action "
+"method\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\\test\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\\test\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\view\n"
+"     [echo] Type &#39;seam restart&#39; and go to \n"
+"     http://localhost:8080/helloworld/ping.seam\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 13 seconds\n"
+"C:\\Projects\\jboss-seam&gt;"
+
+#. Tag: para
+#: Gettingstarted.xml:100
+#, no-c-format
+msgid ""
+"Because we&#39;ve added a new Seam component, we need to restart the "
+"exploded directory deployment. You can do this by typing <literal>seam "
+"restart</literal>, or by running the <literal>restart</literal> target in "
+"the generated project <literal>build.xml</literal> file from inside Eclipse. "
+"Another way to force a restart is to edit the file <literal>resources/META-"
+"INF/application.xml</literal> in Eclipse. <emphasis>Note that you do not "
+"need to restart JBoss each time you change the application.</emphasis>"
+msgstr ""
+"Da wir eine neue Seam-Komponente hinzugefügt haben, müssen wir das ausgeklappte Verzeichnis-Deployment neu starten. Sie können dies tun, indem Sie <literal>seam "
+"restart</literal> tippen oder indem Sie das <literal>restart</literal>-Ziel in der generierten Projekt-<literal>build.xml</literal>-Datei innerhalb von Eclipse ausführen. Eine weitere Art einen Neustart zu erzwingen ist die Bearbeitung der <literal>resources/META-"
+"INF/application.xml</literal>-Datei in Eclipse. <emphasis>Beachten Sie, dass Sie JBoss nicht jedes Mal neu starten müssen, wenn Sie die Anwendung bearbeiten</emphasis>."
+
+#. Tag: para
+#: Gettingstarted.xml:103
+#, no-c-format
+msgid ""
+"Now go to <literal>http://localhost:8080/helloworld/ping.seam</literal> and "
+"click the button. You can see the code behind this action by looking in the "
+"project <literal>src</literal> directory. Put a breakpoint in the "
+"<literal>ping()</literal> method, and click the button again."
+msgstr ""
+"Gehen Sie jetzt auf <literal>http://localhost:8080/helloworld/ping.seam</literal> und "
+"klicken Sie auf die Schaltfläche. Sie können den hinter dieser Action stehenden Code sehen, indem Sie in das "
+"Projekt-<literal>src</literal>Verzeichnis schauen. Machen SIe einen \"Breakpoint\" in der <literal>ping()</literal>-Method, und klicken Sie dann noch einmal auf die Schaltfläche."
+
+#. Tag: para
+#: Gettingstarted.xml:106
+#, no-c-format
+msgid ""
+"Finally, locate the <literal>PingTest.xml</literal> file in the test package "
+"and run the integration tests using the TestNG plugin for Eclipse. "
+"Alternatively, run the tests using <literal>seam test</literal> or the "
+"<literal>test</literal> target of the generated build."
+msgstr "Finden Sie dann die <literal>PingTest.xml</literal>-Datei im Testpaket und führen Sie die Integrationstests unter Verwendung des TestNG-Plugins für Eclipse durch. Alternativ führen Sie die Tests unter Verwendung von <literal>seam test</literal> oder des <literal>test</literal>-Ziels des generierten Builds durch."
+
+#. Tag: title
+#: Gettingstarted.xml:112
+#, no-c-format
+msgid "Creating a form with an action"
+msgstr "Erstellen eines Formulars mit einer Action"
+
+#. Tag: para
+#: Gettingstarted.xml:113
+#, no-c-format
+msgid "The next step is to create a form. Type:"
+msgstr "Als nächstes wird ein Formular erstellt. Tippen Sie:"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:116
+#, no-c-format
+msgid "seam new-form"
+msgstr "seam new-form"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:117
+#, no-c-format
+msgid ""
+"C:\\Projects\\jboss-seam&gt;seam new-form\n"
+"Buildfile: C:\\Projects\\jboss-seam\\seam-gen\\build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"action-input:\n"
+"    [input] Enter the Seam component name\n"
+"hello\n"
+"    [input] Enter the local interface name [Hello]\n"
+"\n"
+"    [input] Enter the bean class name [HelloBean]\n"
+"\n"
+"    [input] Enter the action method name [hello]\n"
+"\n"
+"    [input] Enter the page name [hello]\n"
+"\n"
+"\n"
+"setup-filters:\n"
+"\n"
+"new-form:\n"
+"     [echo] Creating a new stateful session bean component with an action "
+"method\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\\test\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\view\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\\test\n"
+"     [echo] Type &#39;seam restart&#39; and go to http://localhost:8080/"
+"hello/hello.seam\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 5 seconds\n"
+"C:\\Projects\\jboss-seam&gt;"
+msgstr ""
+"C:\\Projects\\jboss-seam&gt;seam new-form\n"
+"Buildfile: C:\\Projects\\jboss-seam\\seam-gen\\build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"action-input:\n"
+"    [input] Enter the Seam component name\n"
+"hello\n"
+"    [input] Enter the local interface name [Hello]\n"
+"\n"
+"    [input] Enter the bean class name [HelloBean]\n"
+"\n"
+"    [input] Enter the action method name [hello]\n"
+"\n"
+"    [input] Enter the page name [hello]\n"
+"\n"
+"\n"
+"setup-filters:\n"
+"\n"
+"new-form:\n"
+"     [echo] Creating a new stateful session bean component with an action "
+"method\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\\test\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\view\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\\test\n"
+"     [echo] Type &#39;seam restart&#39; and go to http://localhost:8080/"
+"hello/hello.seam\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 5 seconds\n"
+"C:\\Projects\\jboss-seam&gt;"
+
+#. Tag: para
+#: Gettingstarted.xml:118
+#, no-c-format
+msgid ""
+"Restart the application again, and go to <literal>http://localhost:8080/"
+"helloworld/hello.seam</literal>. Then take a look at the generated code. Run "
+"the test. Try adding some new fields to the form and Seam component "
+"(remember to restart the deploment each time you change the Java code)."
+msgstr ""
+"Starten Sie die Anwendung neu, und gehen Sie auf <literal>http://localhost:8080/helloworld/hello.seam</literal>. Sehen Sie sich dann den generierten Code an. Führen Sie den Test aus. Versuchen Sie dem Formular ein paar neue Felder und Seam Komponenten hinzuzufügen "
+"(denken Sie daran, das Deployment jedes Mal neu zu starten, wenn Sie den Java-Code ändern)."
+
+#. Tag: title
+#: Gettingstarted.xml:124
+#, no-c-format
+msgid "Generating an application from an existing database"
+msgstr "Generieren einer Anwendung aus einer bestehenden Datenbank"
+
+#. Tag: para
+#: Gettingstarted.xml:125
+#, no-c-format
+msgid ""
+"Manually create some tables in your database. (If you need to switch to a "
+"different database, just run <literal>seam setup</literal> again.) Now type:"
+msgstr "Erstellen Sie manuell einige Tabellen in Ihrer Datenbank. (Falls Sie in eine andere Datenbank wechseln müssen, führen Sie einfach erneut <literal>seam setup</literal> aus). Tippen Sie:"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:128
+#, no-c-format
+msgid "seam generate-entities"
+msgstr "seam generate-entities"
+
+#. Tag: para
+#: Gettingstarted.xml:129
+#, no-c-format
+msgid ""
+"Restart the deployment, and go to <literal>http://localhost:8080/helloworld</"
+"literal>. You can browse the database, edit existing objects, and create new "
+"objects. If you look at the generated code, you&#39;ll probably be amazed "
+"how simple it is! Seam was designed so that data access code is easy to "
+"write by hand, even for people who don&#39;t want to cheat by using seam-gen."
+msgstr "Starten Sie das Deployment, und gehen Sie auf <literal>http://localhost:8080/helloworld</literal>. Sie können durch die Datenbank browsen, bestehende Objekte bearbeiten und neue Objekte erstellen. Wenn Sie sich den generierten Code ansehen, sind Sie wahrscheinlich überrascht wie einfach er ist! Seam wurde derart entworfen, dass sich Code leicht per Hand schreiben lässt - selbst für Menschen, die sies ohne die Verwendung von seam-gen tun wollen."
+
+#. Tag: title
+#: Gettingstarted.xml:135
+#, no-c-format
+msgid "Deploying the application as an EAR"
+msgstr "Deployment der Anwendung als EAR"
+
+#. Tag: para
+#: Gettingstarted.xml:136
+#, no-c-format
+msgid ""
+"Finally, we want to be able to deploy the application using standard Java EE "
+"5 packaging. First, we need to remove the exploded directory by running "
+"<literal>seam unexplode</literal>. To deploy the EAR, we can type "
+"<literal>seam deploy</literal> at the command prompt, or run the "
+"<literal>deploy</literal> target of the generated project build script. You "
+"can undeploy using <literal>seam undeploy</literal> or the "
+"<literal>undeploy</literal> target."
+msgstr ""
+"Zu guter Letzt wollen wir die Anwendung unter Verwendung des Standard Java EE 5 Pakets deployen. Zunächst müssen wir das ausgeklappte Verzeichnis durch Ausführen von <literal>seam unexplode</literal> entfernen. Um die EAR zu deployen können wir <literal>seam deploy</literal> beim Befehlsprompt eingeben oder das <literal>deploy</literal>-Ziel des generierte Build-Skripts ausführen. Mittels <literal>seam undeploy</literal> oder dem"
+"<literal>undeploy</literal>-Ziel können SIe undeployen."
+
+#. Tag: para
+#: Gettingstarted.xml:139
+#, no-c-format
+msgid ""
+"By default, the application will be deployed with the <emphasis>dev profile</"
+"emphasis>. The EAR will include the <literal>persistence-dev.xml</literal> "
+"and <literal>import-dev.sql</literal> files, and the <literal>myproject-dev-"
+"ds.xml</literal> file will be deployed. You can change the profile, and use "
+"the <emphasis>prod profile</emphasis>, by typing"
+msgstr ""
+"Standardmäßig wird die Anwendung mit dem <emphasis>dev-Profil</emphasis> deployt. Das EAR enthält die <literal>persistence-dev.xml</literal> und <literal>import-dev.sql</literal>-Dateien und die <literal>myproject-dev-"
+"ds.xml</literal>-Datei wird deployt. Sie können das Profil ändern und das <emphasis>Prod-Profil</emphasis> verwenden, indem Sie folgendes tippen"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:142
+#, no-c-format
+msgid "seam -Dprofile=prod deploy"
+msgstr "seam -Dprofile=prod deploy"
+
+#. Tag: para
+#: Gettingstarted.xml:143
+#, no-c-format
+msgid ""
+"You can even define new deployment profiles for your application. Just add "
+"appropriately named files to your project&mdash;for example, "
+"<literal>persistence-staging.xml</literal>, <literal>import-staging.sql</"
+"literal> and <literal>myproject-staging-ds.xml</literal>&mdash;and select "
+"the name of the profile using <literal>-Dprofile=staging</literal>."
+msgstr "Sie können sogar neue Deployment-Profile für Ihre Anwendung definieren. Fügen Sie Ihrem Projekt einfach die entsprechend benannten Dateien hinzu&mdash;zum Beispiel <literal>persistence-staging.xml</literal>, <literal>import-staging.sql</literal> und <literal>myproject-staging-ds.xml</literal>&mdash;und wählen Sie den Namen des Profils mittels <literal>-Dprofile=staging</literal>."
+
+#. Tag: title
+#: Gettingstarted.xml:149
+#, no-c-format
+msgid "Seam and incremental hot deployment"
+msgstr "Seam und inkrementelles \"Hot Deployment\""
+
+#. Tag: para
+#: Gettingstarted.xml:150
+#, no-c-format
+msgid ""
+"When you deploy your Seam application as an exploded directory, you&#39;ll "
+"get some support for incremental hot deployment at development time. You "
+"need to enable debug mode in both Seam and Facelets, by adding this line to "
+"<literal>components.xml</literal>:"
+msgstr ""
+"Wenn Sie Ihre Seam-Anwendung als ausgeklapptes Verzeichnis deployen, so erhalten Sie eine gewisse Menge an Support für inkrementelles \"Hot Deployment\" zum Entwicklungszeitpunkt. Sie müssen den \"Debug\"-Modus in Seam wie auch Facelets aktivieren, indem Sie diese Zeile "
+"<literal>components.xml</literal> hinzufügen:"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:153
+#, no-c-format
+msgid "&lt;core:init debug=\"true\"/&gt;"
+msgstr "&lt;core:init debug=\"true\"/&gt;"
+
+#. Tag: para
+#: Gettingstarted.xml:154
+#, no-c-format
+msgid ""
+"Now, the following files may be redeployed without requiring a full restart "
+"of the web application:"
+msgstr "Jetzt können die folgenden Dateien erneut deployt werden, ohne dass ein vollständiger Neustart der Web-Anwendung nötig ist:"
+
+#. Tag: para
+#: Gettingstarted.xml:159
+#, no-c-format
+msgid "any facelets page"
+msgstr "jegliche Facelets-Seite "
+
+#. Tag: para
+#: Gettingstarted.xml:164
+#, no-c-format
+msgid "any <literal>pages.xml</literal> file"
+msgstr "jegliche <literal>pages.xml</literal>-Datei"
+
+#. Tag: para
+#: Gettingstarted.xml:169
+#, no-c-format
+msgid ""
+"But if we want to change any Java code, we still need to do a full restart "
+"of the application. (In JBoss this may be accomplished by touching the "
+"toplevel deployment descriptor: <literal>application.xml</literal> for an "
+"EAR deployment, or <literal>web.xml</literal> for a WAR deployment.)"
+msgstr ""
+"Aber wenn wir jeglichen Java-Code verändern wollen, so müssen wir die Anwendung vollständig neu starten. (In JBoss kann dies mittels "
+"Deployment-Deskriptor der obersten Ebene <literal>application.xml</literal> für ein EAR-Deployment oder <literal>web.xml</literal> für ein WAR-Deployment erfolgen)."
+
+#. Tag: para
+#: Gettingstarted.xml:172
+#, no-c-format
+msgid ""
+"But if you really want a fast edit/compile/test cycle, Seam supports "
+"incremental redeployment of JavaBean components. To make use of this "
+"functionality, you must deploy the JavaBean components into the <literal>WEB-"
+"INF/dev</literal> directory, so that they will be loaded by a special Seam "
+"classloader, instead of by the WAR or EAR classloader."
+msgstr ""
+"Wenn Sie aber einen wirklich schnellen Zyklus für das bearbeiten/kompilieren/testen wünschen, so unterstützt Seam das "
+"inkrementelle Re-Deployment von JavaBean-Komponenten. Um diese Funktionalität zu nutzen, müssen Sie die JavaBean-Komponenten in das <literal>WEB-INF/dev</literal>-Verzeichnis deployen, damit diese durch einen speziellen Seam-Klassenlader geladen werden können, statt durch den WAR- oder EAR-Klassenlader."
+
+#. Tag: para
+#: Gettingstarted.xml:175
+#, no-c-format
+msgid "You need to be aware of the following limitations:"
+msgstr "Sie sollten sich folgender Einschränkungen bewusst sein:"
+
+#. Tag: para
+#: Gettingstarted.xml:180
+#, no-c-format
+msgid ""
+"the components must be JavaBean components, they cannot be EJB3 beans (we "
+"are working on fixing this limitation)"
+msgstr "bei den Komponenten muss es sich um JavaBean-Komponenten handelt, nicht EJB3-Beans (wir arbeiten derzeit an der Aufhebung dieser Einschränkung)"
+
+#. Tag: para
+#: Gettingstarted.xml:185
+#, no-c-format
+msgid "entities can never be hot-deloyed"
+msgstr "Entities können nie \"hot-deloyed\" werden"
+
+#. Tag: para
+#: Gettingstarted.xml:190
+#, no-c-format
+msgid ""
+"components deployed via <literal>components.xml</literal> may not be hot-"
+"deployed"
+msgstr "Via <literal>components.xml</literal> deployte Komponenten können nicht \"hot-deployed\" werden"
+
+#. Tag: para
+#: Gettingstarted.xml:195
+#, no-c-format
+msgid ""
+"the hot-deployable components will not be visible to any classes deployed "
+"outside of <literal>WEB-INF/dev</literal>"
+msgstr "die \"hot-deploybaren\" Komponenten sind für keine außerhalb von <literal>WEB-INF/dev</literal> deployten Klassen sichtbar"
+
+#. Tag: para
+#: Gettingstarted.xml:200
+#, no-c-format
+msgid "Seam debug mode must be enabled"
+msgstr "Seam Debug-Modus muss aktiviert sein"
+
+#. Tag: para
+#: Gettingstarted.xml:205
+#, no-c-format
+msgid ""
+"If you create a WAR project using seam-gen, incremental hot deployment is "
+"available out of the box for classes in the <literal>src/action</literal> "
+"source directory. However, seam-gen does not support incremental hot "
+"deployment for EAR projects."
+msgstr ""
+"Falls Sie mittels seam-gen ein WAR-Projekt erstellen, so ist inkrementelles \"hot deployment\" verfügbar für Klassen im <literal>src/action</literal> "
+"Quellverzeichnis. Jedoch unterstützt seam-gen kein inkrementelles \"hot "
+"deployment\" für EAR-Projekte."
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/I18n.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/I18n.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/I18n.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,619 @@
+# translation of I18n.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Jasna Dimanoski <jdimanos at redhat.com>, 2007, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: I18n\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2008-03-31 17:06+1000\n"
+"Last-Translator: Jasna Dimanoski <jdimanos at redhat.com>\n"
+"Language-Team:  <de at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: I18n.xml:6
+#, no-c-format
+msgid "Internationalization and themes"
+msgstr "Internationalisierung und Themen"
+
+#. Tag: para
+#: I18n.xml:7
+#, no-c-format
+msgid ""
+"Seam makes it easy to build internationalized applications by providing "
+"several built-in components for handling multi-language UI messages."
+msgstr "Seam macht den Build internationalisierter Anwendungen einfach, indem es mehrere eingebaute Komponenten für den Umgang von mehrsprachigen UI-Nachrichten bereitstellt."
+
+#. Tag: title
+#: I18n.xml:11
+#, no-c-format
+msgid "Locales"
+msgstr "Regionalschemas"
+
+#. Tag: para
+#: I18n.xml:12
+#, no-c-format
+msgid ""
+"Each user login session has an associated instance of <literal>java.util."
+"Locale</literal> (available to the application as a session-scoped component "
+"named <literal>locale</literal>). Under normal circumstances, you won&#39;t "
+"need to do any special configuration to set the locale. Seam just delegates "
+"to JSF to determine the active locale:"
+msgstr "Mit jeder Login-Session eines Benutzers ist eine Instanz von <literal>java.util.Locale</literal> assoziiert (für die Anwendung als Session-begrenzte Komponente namens <literal>locale</literal> verfügbar). Unter normalen Umständen benötigen Sie keine spezielle Konfiguration zur Einstellung des Regionalschemas. Seam delegiert einfach an JSF zur Bestimmung des aktiven Regionalschemas:"
+
+#. Tag: para
+#: I18n.xml:17
+#, no-c-format
+msgid ""
+"If there is a locale associated with the HTTP request (the browser locale), "
+"and that locale is in the list of supported locales from <literal>faces-"
+"config.xml</literal>, use that locale for the rest of the session."
+msgstr ""
+"Wird ein Regionalschema mit der HTTP-Anfrage assoziiert (das Browser-Regionalschema) und dieses Regionalschema befindet sich auf der Liste der unterstützten Regionalschemas von <literal>faces-"
+"config.xml</literal>, so verwenden Sie dieses Regionalschema für den Rest der Session."
+
+#. Tag: para
+#: I18n.xml:20
+#, no-c-format
+msgid ""
+"Otherwise, if a default locale was specified in the <literal>faces-config."
+"xml</literal>, use that locale for the rest of the session."
+msgstr "Andernfalls, das heißt, wenn ein Standard-Regionalschema in der <literal>faces-config.xml</literal> festgelegt wurde, verwenden Sie dieses Regionalschema für den Rest der Session."
+
+#. Tag: para
+#: I18n.xml:23
+#, no-c-format
+msgid "Otherwise, use the default locale of the server."
+msgstr "Ansonsten verwenden SIe das Standard-Regionalschema des Servers."
+
+#. Tag: para
+#: I18n.xml:26
+#, no-c-format
+msgid ""
+"It is <emphasis>possible</emphasis> to set the locale manually via the Seam "
+"configuration properties <literal>org.jboss.seam.core.localeSelector."
+"language</literal>, <literal>org.jboss.seam.core.localeSelector.country</"
+"literal> and <literal>org.jboss.seam.core.localeSelector.variant</literal>, "
+"but we can&#39;t think of any good reason to ever do this."
+msgstr ""
+"Es ist <emphasis>möglich</emphasis>, das Regionalschema manuell über die Seam Konfigurations-Properties <literal>org.jboss.seam.core.localeSelector."
+"language</literal>, <literal>org.jboss.seam.core.localeSelector.country</"
+"literal> und <literal>org.jboss.seam.core.localeSelector.variant</literal> einzustellen, aber es gibt in der Regel keinen guten Grund warum die nötig sein sollte."
+
+#. Tag: para
+#: I18n.xml:29
+#, no-c-format
+msgid ""
+"It is, however, useful to allow the user to set the locale manually via the "
+"application user interface. Seam provides built-in functionality for "
+"overriding the locale determined by the algorithm above. All you have to do "
+"is add the following fragment to a form in your JSP or Facelets page:"
+msgstr "Es ist jedoch von Nutzen, wenn der Benutzer das Regionalschema manuell über das Benutzer-Interface der Anwendung einstellen kann. Seam bietet eine eingebaute Funktionalität zur Außerkraftsetzung des durch den obigen Algorithmus festgelegten Regionalschemas. Sie müssen lediglich folgendes Fragment einem Formular Ihrer JSP- oder Facelets-Seite hinzufügen:"
+
+#. Tag: programlisting
+#: I18n.xml:32
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{localeSelector.language}\"&gt;\n"
+"    &lt;f:selectItem itemLabel=\"English\" itemValue=\"en\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Deutsch\" itemValue=\"de\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Francais\" itemValue=\"fr\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{localeSelector.select}\" value=\"#{messages"
+"[&#39;ChangeLanguage&#39;]}\"/&gt;"
+msgstr ""
+"&lt;h:selectOneMenu value=\"#{localeSelector.language}\"&gt;\n"
+"    &lt;f:selectItem itemLabel=\"English\" itemValue=\"en\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Deutsch\" itemValue=\"de\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Francais\" itemValue=\"fr\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{localeSelector.select}\" value=\"#{messages"
+"[&#39;ChangeLanguage&#39;]}\"/&gt;"
+
+#. Tag: para
+#: I18n.xml:33
+#, no-c-format
+msgid ""
+"Or, if you want a list of all supported locales from <literal>faces-config."
+"xml</literal>, just use:"
+msgstr "Oder, falls Sie eine Liste aller unterstützten Regionalschemas aus <literal>faces-config.xml</literal> wünschen, verwenden Sie einfach:"
+
+#. Tag: programlisting
+#: I18n.xml:36
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{localeSelector.localeString}\"&gt;\n"
+"    &lt;f:selectItems value=\"#{localeSelector.supportedLocales}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{localeSelector.select}\" value=\"#{messages"
+"[&#39;ChangeLanguage&#39;]}\"/&gt;"
+msgstr ""
+"&lt;h:selectOneMenu value=\"#{localeSelector.localeString}\"&gt;\n"
+"    &lt;f:selectItems value=\"#{localeSelector.supportedLocales}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{localeSelector.select}\" value=\"#{messages"
+"[&#39;ChangeLanguage&#39;]}\"/&gt;"
+
+#. Tag: para
+#: I18n.xml:37
+#, no-c-format
+msgid ""
+"When this use selects an item from the drop-down, and clicks the button, the "
+"Seam and JSF locales will be overridden for the rest of the session."
+msgstr "Wenn durch derartige Verwendung ein Posten aus dem Drop-Down ausgewählt und die Schaltfläche geklickt wird, so werden die Seam- und JSF-Regionalschemas für den Rest der Session außer Kraft gesetzt."
+
+#. Tag: title
+#: I18n.xml:43
+#, no-c-format
+msgid "Labels"
+msgstr "Labels"
+
+#. Tag: para
+#: I18n.xml:44
+#, no-c-format
+msgid ""
+"JSF supports internationalization of user interface labels and descriptive "
+"text via the use of <literal>&lt;f:loadBundle /&gt;</literal>. You can use "
+"this approach in Seam applications. Alternatively, you can take advantage of "
+"the Seam <literal>messages</literal> component to display templated labels "
+"with embedded EL expressions."
+msgstr "JSF unterstützt die Internationalisierung von Benutzer-Interface Labels und deskriptivem Text mittels Verwendung von <literal>&lt;f:loadBundle /&gt;</literal>. Sie können diese Herangehensweise bei Seam-Anwendungen benutzen. Alternativ können Sie auch die Seam <literal>messages</literal>-Komponente verwenden, um Vorlagen-Labels mit eingebetteten EL-Ausdrücken anzuzeigen."
+
+#. Tag: title
+#: I18n.xml:48
+#, no-c-format
+msgid "Defining labels"
+msgstr "Definition von Labels"
+
+#. Tag: para
+#: I18n.xml:49
+#, no-c-format
+msgid ""
+"Each login session has an associated instance of <literal>java.util."
+"ResourceBundle</literal> (available to the application as a session-scoped "
+"component named <literal>org.jboss.seam.core.resourceBundle</literal>). "
+"You&#39;ll need to make your internationalized labels available via this "
+"special resource bundle. By default, the resource bundle used by Seam is "
+"named <literal>messages</literal> and so you&#39;ll need to define your "
+"labels in files named <literal>messages.properties</literal>, "
+"<literal>messages_en.properties</literal>, <literal>messages_en_AU."
+"properties</literal>, etc. These files usually belong in the <literal>WEB-"
+"INF/classes</literal> directory."
+msgstr ""
+"Jede Login-Session besitzt eine assoziierte Instanz von <literal>java.util."
+"ResourceBundle</literal> (der Anwendung als Session-begrenzte Komponente namens <literal>org.jboss.seam.core.resourceBundle</literal> verfügbar). "
+"Sie werden Ihre internationalisierten Label über dieses spezielle "
+"Ressourcen-Bündel verfügbar machen müssen. Das von Seam verwendete Ressourcen-Bündel trägt standardmäßig den Namen <literal>messages</literal> und Sie werden daher Ihre Labels in Dateien mit den Namen <literal>messages.properties</literal>, "
+"<literal>messages_en.properties</literal>, <literal>messages_en_AU."
+"properties</literal>, usw. definieren müssen. Diese Dateien gehören in der Regel in das <literal>WEB-INF/classes</literal>-Verzeichnis."
+
+#. Tag: para
+#: I18n.xml:52
+#, no-c-format
+msgid "So, in <literal>messages_en.properties</literal>:"
+msgstr "Also in <literal>messages_en.properties</literal>:"
+
+#. Tag: programlisting
+#: I18n.xml:55
+#, no-c-format
+msgid "Hello=Hello"
+msgstr "Hello=Hello"
+
+#. Tag: para
+#: I18n.xml:56
+#, no-c-format
+msgid "And in <literal>messages_en_AU.properties</literal>:"
+msgstr "Und in <literal>messages_en_AU.properties</literal>:"
+
+#. Tag: programlisting
+#: I18n.xml:59
+#, no-c-format
+msgid "Hello=G&#39;day"
+msgstr "Hello=G&#39;day"
+
+#. Tag: para
+#: I18n.xml:60
+#, no-c-format
+msgid ""
+"You can select a different name for the resource bundle by setting the Seam "
+"configuration property named <literal>org.jboss.seam.core.resourceBundle."
+"bundleNames</literal>. You can even specify a list of resource bundle names "
+"to be searched (depth first) for messages."
+msgstr ""
+"Sie können einen anderen Namen für das Ressourcen-Bündel wählen, indem Sie die Seam Konfigurations-Property namens <literal>org.jboss.seam.core.resourceBundle."
+"bundleNames</literal> einstellen. Sie können sogar eine Liste von Namen für Ressourcen-Bündel festlegen, die nach Nachrichten durchsucht werden soll (Tiefe zuerst)."
+
+#. Tag: programlisting
+#: I18n.xml:63
+#, no-c-format
+msgid ""
+"&lt;core:resource-bundle&gt;\n"
+"    &lt;core:bundle-names&gt;\n"
+"        &lt;value&gt;mycompany_messages&lt;/value&gt;\n"
+"        &lt;value&gt;standard_messages&lt;/value&gt;       \n"
+"    &lt;/core:bundle-names&gt;\n"
+"&lt;/core:resource-bundle&gt;"
+msgstr ""
+"&lt;core:resource-bundle&gt;\n"
+"    &lt;core:bundle-names&gt;\n"
+"        &lt;value&gt;mycompany_messages&lt;/value&gt;\n"
+"        &lt;value&gt;standard_messages&lt;/value&gt;       \n"
+"    &lt;/core:bundle-names&gt;\n"
+"&lt;/core:resource-bundle&gt;"
+
+#. Tag: para
+#: I18n.xml:64
+#, no-c-format
+msgid ""
+"If you want to define a message just for a particular page, you can specify "
+"it in a resource bundle with the same name as the JSF view id, with the "
+"leading <literal>/</literal> and trailing file extension removed. So we "
+"could put our message in <literal>welcome/hello_en.properties</literal> if "
+"we only needed to display the message on <literal>/welcome/hello.jsp</"
+"literal>."
+msgstr ""
+"Falls Sie eine Nachricht nur für eine bestimmte Seite definieren möchten, so können Sie sie in einem Ressourcen-Bündel festlegen, das denselben Namen wie die JSF-Ansichts-ID hat, wobei das anführende <literal>/</literal> und die Dateierwiterung entfernt sind. Wir könnten unsere Nachricht also in <literal>welcome/hello_en.properties</literal> ablegen, wenn wir die Nachricht nur auf <literal>/welcome/hello.jsp</"
+"literal> anzeigen wollten."
+
+#. Tag: para
+#: I18n.xml:67
+#, no-c-format
+msgid "You can even specify an explicit bundle name in <literal>pages.xml</literal>:"
+msgstr "Sie können sogar einen expliziten \"Bundle\"-Namen in <literal>pages.xml</literal> festlegen:"
+
+#. Tag: programlisting
+#: I18n.xml:70
+#, no-c-format
+msgid "&lt;page view-id=\"/welcome/hello.jsp\" bundle=\"HelloMessages\"/&gt;"
+msgstr "&lt;page view-id=\"/welcome/hello.jsp\" bundle=\"HelloMessages\"/&gt;"
+
+#. Tag: para
+#: I18n.xml:71
+#, no-c-format
+msgid ""
+"Then we could use messages defined in <literal>HelloMessages.properties</"
+"literal> on <literal>/welcome/hello.jsp</literal>."
+msgstr ""
+"Wir könnten in <literal>HelloMessages.properties</"
+"literal> definierte Nachrichten auf <literal>/welcome/hello.jsp</literal> verwenden."
+
+#. Tag: title
+#: I18n.xml:77
+#, no-c-format
+msgid "Displaying labels"
+msgstr "Anzeige von Labels"
+
+#. Tag: para
+#: I18n.xml:78
+#, no-c-format
+msgid ""
+"If you define your labels using the Seam resource bundle, you&#39;ll be able "
+"to use them without having to type <literal>&lt;f:loadBundle ... /&gt;</"
+"literal> on every page. Instead, you can simply type:"
+msgstr "Falls Sie Ihre Labels mittels des Seam Ressourcen-Bündels definieren, so werden Sie diese verwenden können, ohne dass Sie auf jeder Seite <literal>&lt;f:loadBundle ... /&gt;</literal> tippen müssen. Stattdessen können Sie einfach folgendes eingeben:"
+
+#. Tag: programlisting
+#: I18n.xml:81
+#, no-c-format
+msgid "&lt;h:outputText value=\"#{messages[&#39;Hello&#39;]}\"/&gt;"
+msgstr "&lt;h:outputText value=\"#{messages[&#39;Hello&#39;]}\"/&gt;"
+
+#. Tag: para
+#: I18n.xml:82
+#, no-c-format
+msgid "<para>or:</para>"
+msgstr "<para>oder:</para>"
+
+#. Tag: programlisting
+#: I18n.xml:85
+#, no-c-format
+msgid "&lt;h:outputText value=\"#{messages.Hello}\"/&gt;"
+msgstr "&lt;h:outputText value=\"#{messages.Hello}\"/&gt;"
+
+#. Tag: para
+#: I18n.xml:86
+#, no-c-format
+msgid "Even better, the messages themselves may contain EL expressions:"
+msgstr "Besser noch, die Nachrichten selbst dürfen EL-Ausdrücke enthalten:"
+
+#. Tag: programlisting
+#: I18n.xml:89
+#, no-c-format
+msgid "Hello=Hello, #{user.firstName} #{user.lastName}"
+msgstr "Hello=Hello, #{user.firstName} #{user.lastName}"
+
+#. Tag: programlisting
+#: I18n.xml:90
+#, no-c-format
+msgid "Hello=G&#39;day, #{user.firstName}"
+msgstr "Hello=G&#39;day, #{user.firstName}"
+
+#. Tag: para
+#: I18n.xml:91
+#, no-c-format
+msgid "You can even use the messages in your code:"
+msgstr "Sie können die Nachrichten sogar in Ihrem Code benutzen:"
+
+#. Tag: programlisting
+#: I18n.xml:94
+#, no-c-format
+msgid "@In private Map&lt;String, String&gt; messages;"
+msgstr "@In private Map&lt;String, String&gt; messages;"
+
+#. Tag: programlisting
+#: I18n.xml:95
+#, no-c-format
+msgid "@In(\"#{messages[&#39;Hello&#39;]}\") private String helloMessage;"
+msgstr "@In(\"#{messages[&#39;Hello&#39;]}\") private String helloMessage;"
+
+#. Tag: title
+#: I18n.xml:99
+#, no-c-format
+msgid "Faces messages"
+msgstr "Faces-Nachrichten"
+
+#. Tag: para
+#: I18n.xml:100
+#, no-c-format
+msgid ""
+"The <literal>facesMessages</literal> component is a super-convenient way to "
+"display success or failure messages to the user. The functionality we just "
+"described also works for faces messages:"
+msgstr "Die <literal>facesMessages</literal>-Komponente ist ausgesprochen praktisch zur Anzeige von Erfolgs- und Fehlschlagsmeldungen an den Benutzer. Die Funktionalität, die wir gerade beschrieben haben, funktioniert auch bei Faces-Nachrichten:"
+
+#. Tag: programlisting
+#: I18n.xml:103
+#, no-c-format
+msgid ""
+"@Name(\"hello\")\n"
+"@Stateless\n"
+"public class HelloBean implements Hello {\n"
+"    @In FacesMessages facesMessages;\n"
+"    \n"
+"    public String sayIt() {\n"
+"        facesMessages.addFromResourceBundle(\"Hello\");\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"hello\")\n"
+"@Stateless\n"
+"public class HelloBean implements Hello {\n"
+"    @In FacesMessages facesMessages;\n"
+"    \n"
+"    public String sayIt() {\n"
+"        facesMessages.addFromResourceBundle(\"Hello\");\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: I18n.xml:104
+#, no-c-format
+msgid ""
+"This will display <literal>Hello, Gavin King</literal> or <literal>G&#39;"
+"day, Gavin</literal>, depending upon the user&#39;s locale."
+msgstr ""
+"Dies zeigt <literal>Hello, Gavin King</literal> oder <literal>G&#39;"
+"day, Gavin</literal> an, je nach Regionalschema des Benutzers."
+
+#. Tag: title
+#: I18n.xml:112
+#, no-c-format
+msgid "Timezones"
+msgstr "Zeitzonen"
+
+#. Tag: para
+#: I18n.xml:113
+#, no-c-format
+msgid ""
+"There is also a session-scoped instance of <literal>java.util.Timezone</"
+"literal>, named <literal>org.jboss.seam.core.timezone</literal>, and a Seam "
+"component for changing the timezone named <literal>org.jboss.seam.core."
+"timezoneSelector</literal>. By default, the timezone is the default timezone "
+"of the server. Unfortunately, the JSF specification says that all dates and "
+"times should be assumed to be UTC, and displayed as UTC, unless a timezone "
+"is explicitly specified using <literal>&lt;f:convertDateTime&gt;</literal>. "
+"This is an extremely inconvenient default behavior."
+msgstr ""
+"Es existieren auch eine Session-begrenzte Instanz von <literal>java.util.Timezone</"
+"literal> mit dem Namen <literal>org.jboss.seam.core.timezone</literal>, und eine Seam Komponente zum Ändern der Zeitzone mit dem Namen <literal>org.jboss.seam.core."
+"timezoneSelector</literal>. Standardmäßig ist die Zeitzone die Standard-Zeitzone des Servers. Leider besagt die JSF-Spezifikation, dass alle angenommenen Daten und Zeiten UTC sind und als UTC angezeigt werden, außer es wird mittels <literal>&lt;f:convertDateTime&gt;</literal> explizit eine Zeitzone "
+"festgelegt. "
+"This is an extremely inconvenient default behavior."
+
+#. Tag: para
+#: I18n.xml:116
+#, no-c-format
+msgid ""
+"Seam overrides this behavior, and defaults all dates and times to the Seam "
+"timezone. In addition, Seam provides the <literal>&lt;s:convertDateTime&gt;</"
+"literal> tag which always performs conversions in the Seam timezone."
+msgstr "Seam setzt dieses Verhalten außer Kraft und setzt den Standard für alle Dates und Zeiten auf die Seam-Zeitzone. Außerdem liefert Seam das <literal>&lt;s:convertDateTime&gt;</literal>-Tag, welches immer Konversionen in die Seam-Zeitzone durchführt."
+
+#. Tag: title
+#: I18n.xml:122
+#, no-c-format
+msgid "Themes"
+msgstr "Themen"
+
+#. Tag: para
+#: I18n.xml:123
+#, no-c-format
+msgid ""
+"Seam applications are also very easily skinnable. The theme API is very "
+"similar to the localization API, but of course these two concerns are "
+"orthogonal, and some applications support both localization and themes."
+msgstr "Seam-Anwendungen sind auch sehr leicht \"skin\"fähig. Das Themen-API ist dem Lokalisierungs-API sehr ähnlich, aber natürlich sind diese beiden Problemstellungen orthogonal, und manche Anwendungen unterstützen sowohl Lokalisierung als auch Themen."
+
+#. Tag: para
+#: I18n.xml:126
+#, no-c-format
+msgid "First, configure the set of supported themes:"
+msgstr "Konfigurieren Sie zuerst den Satz unterstützter Themen:"
+
+#. Tag: programlisting
+#: I18n.xml:129
+#, no-c-format
+msgid ""
+"&lt;theme:theme-selector cookie-enabled=\"true\"&gt;\n"
+"    &lt;theme:available-themes&gt;\n"
+"        &lt;value&gt;default&lt;/value&gt;\n"
+"        &lt;value&gt;accessible&lt;/value&gt;\n"
+"        &lt;value&gt;printable&lt;/value&gt;\n"
+"    &lt;/theme:available-themes&gt;\n"
+"&lt;/theme:theme-selector&gt;"
+msgstr ""
+"&lt;theme:theme-selector cookie-enabled=\"true\"&gt;\n"
+"    &lt;theme:available-themes&gt;\n"
+"        &lt;value&gt;default&lt;/value&gt;\n"
+"        &lt;value&gt;accessible&lt;/value&gt;\n"
+"        &lt;value&gt;printable&lt;/value&gt;\n"
+"    &lt;/theme:available-themes&gt;\n"
+"&lt;/theme:theme-selector&gt;"
+
+#. Tag: para
+#: I18n.xml:130
+#, no-c-format
+msgid "Note that the first theme listed is the default theme."
+msgstr "Beachten Sie, dass das zuerst gelistete Thema das Standard-Thema ist."
+
+#. Tag: para
+#: I18n.xml:133
+#, no-c-format
+msgid ""
+"Themes are defined in a properties file with the same name as the theme. For "
+"example, the <literal>default</literal> theme is defined as a set of entries "
+"in <literal>default.properties</literal>. For example, <literal>default."
+"properties</literal> might define:"
+msgstr "Themesind in einer gleichnamigen Properties-Datei benannt. Das <literal>default</literal>-Thema zum Beispiel ist als Satz von Einträgen in <literal>default.properties</literal> definiert. Zum Beipsiel kann <literal>default.properties</literal> definieren:"
+
+#. Tag: programlisting
+#: I18n.xml:136
+#, no-c-format
+msgid ""
+"css ../screen.css\n"
+"template template.xhtml"
+msgstr ""
+"css ../screen.css\n"
+"template template.xhtml"
+
+#. Tag: para
+#: I18n.xml:137
+#, no-c-format
+msgid ""
+"Usually the entries in a theme resource bundle will be paths to CSS styles "
+"or images and names of facelets templates (unlike localization resource "
+"bundles which are usually text)."
+msgstr ""
+"In der Regel handelt es sich bei den Einträgen in einem Thema-Ressourcen-Bündel um die Pfade zu CSS-Styles "
+"oder Abbildungen und Namen von Facelets-Templates (im Gegensatz zu Lokalisierungs-Ressourcen-Bündel, die meist Text sind)."
+
+#. Tag: para
+#: I18n.xml:140
+#, no-c-format
+msgid ""
+"Now we can use these entries in our JSP or facelets pages. For example, to "
+"theme the stylesheet in a facelets page:"
+msgstr "Wir können diese Einträge jetzt in unseren JSP- oder Facelets-Seiten verwenden. Um etwa das Thema des Stylesheets in einer Facelets-Seite zu setzen:"
+
+#. Tag: programlisting
+#: I18n.xml:143
+#, no-c-format
+msgid "&lt;link href=\"#{theme.css}\" rel=\"stylesheet\" type=\"text/css\" /&gt;"
+msgstr "&lt;link href=\"#{theme.css}\" rel=\"stylesheet\" type=\"text/css\" /&gt;"
+
+#. Tag: para
+#: I18n.xml:144
+#, no-c-format
+msgid ""
+"Most powerfully, facelets lets us theme the template used by a <literal>&lt;"
+"ui:composition&gt;</literal>:"
+msgstr ""
+"Und besonders hilfreich - Facelets gestattet es uns, das Thema als von <literal>&lt;"
+"ui:composition&gt;</literal> verwendete Vorlage benutzen:"
+
+#. Tag: programlisting
+#: I18n.xml:147
+#, no-c-format
+msgid ""
+"&lt;ui:composition xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"    xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"    xmlns:h=\"http://java.sun.com/jsf/html\"\n"
+"    xmlns:f=\"http://java.sun.com/jsf/core\"\n"
+"    template=\"#{theme.template}\"&gt;"
+msgstr ""
+"&lt;ui:composition xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"    xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"    xmlns:h=\"http://java.sun.com/jsf/html\"\n"
+"    xmlns:f=\"http://java.sun.com/jsf/core\"\n"
+"    template=\"#{theme.template}\"&gt;"
+
+#. Tag: para
+#: I18n.xml:148
+#, no-c-format
+msgid ""
+"Just like the locale selector, there is a built-in theme selector to allow "
+"the user to freely switch themes:"
+msgstr "Ganz wie der lokale Selektor, existiert auch ein eingebauter Themenselektor, der es dem Benutzer ermöglicht ganz nach Wunsch Themen zu wechseln:"
+
+#. Tag: programlisting
+#: I18n.xml:151
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{themeSelector.theme}\"&gt;\n"
+"    &lt;f:selectItems value=\"#{themeSelector.themes}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{themeSelector.select}\" value=\"Select Theme"
+"\"/&gt;"
+msgstr ""
+"&lt;h:selectOneMenu value=\"#{themeSelector.theme}\"&gt;\n"
+"    &lt;f:selectItems value=\"#{themeSelector.themes}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{themeSelector.select}\" value=\"Select Theme"
+"\"/&gt;"
+
+#. Tag: title
+#: I18n.xml:155
+#, no-c-format
+msgid "Persisting locale and theme preferences via cookies"
+msgstr "Lokale und Themen-Präferenzen über Cookies persistieren"
+
+#. Tag: para
+#: I18n.xml:156
+#, no-c-format
+msgid ""
+"The locale selector, theme selector and timezone selector all support "
+"persistence of locale and theme preference to a cookie. Simply set the "
+"<literal>cookie-enabled</literal> configuration property:"
+msgstr "Der lokale Selektor, Themenselektor und Zeitzonenselektor unterstützen alle die Persistenz der Lokal- und Themenpräferenz an ein Cookie. Stellen Sie einfach die <literal>cookie-enabled</literal>-Konfigurations-Property ein:"
+
+#. Tag: programlisting
+#: I18n.xml:159
+#, no-c-format
+msgid ""
+"&lt;theme:theme-selector cookie-enabled=\"true\"&gt;\n"
+"    &lt;theme:available-themes&gt;\n"
+"        &lt;value&gt;default&lt;/value&gt;\n"
+"        &lt;value&gt;accessible&lt;/value&gt;\n"
+"        &lt;value&gt;printable&lt;/value&gt;\n"
+"    &lt;/theme:available-themes&gt;\n"
+"&lt;/theme:theme-selector&gt;\n"
+"\n"
+"&lt;core:locale-selector cookie-enabled=\"true\"/&gt;"
+msgstr ""
+"&lt;theme:theme-selector cookie-enabled=\"true\"&gt;\n"
+"    &lt;theme:available-themes&gt;\n"
+"        &lt;value&gt;default&lt;/value&gt;\n"
+"        &lt;value&gt;accessible&lt;/value&gt;\n"
+"        &lt;value&gt;printable&lt;/value&gt;\n"
+"    &lt;/theme:available-themes&gt;\n"
+"&lt;/theme:theme-selector&gt;\n"
+"\n"
+"&lt;core:locale-selector cookie-enabled=\"true\"/&gt;"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Itext.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Itext.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Itext.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1630 @@
+# translation of Itext.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Jasna Dimanoski <jdimanos at redhat.com>, 2007, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Itext\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2008-03-16 11:07+1000\n"
+"Last-Translator: Jasna Dimanoski <jdimanos at redhat.com>\n"
+"Language-Team:  <de at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Itext.xml:6
+#, no-c-format
+msgid "iText PDF generation"
+msgstr "iText PDF Generierung"
+
+#. Tag: para
+#: Itext.xml:7
+#, no-c-format
+msgid ""
+"Seam now includes an component set for generating documents using iText. The "
+"primary focus of Seam&#39;s iText document support is for the generation of "
+"PDF doucuments, but Seam also offers basic support for RTF document "
+"generation."
+msgstr ""
+"Seam beinhaltet jetzt einen Satz Komponenten zur Generierung von Dokumenten mittels iText. Der primäre Focus von Seams iText Dokumenten-Support ist die Generierung von PDF-Dokumenten, aber "
+"Seam bietet auch basalen Support für die Generierung von RTF-Dokumenten."
+
+#. Tag: title
+#: Itext.xml:11
+#, no-c-format
+msgid "Using PDF Support"
+msgstr "Verwendung von PDF-Support"
+
+#. Tag: para
+#: Itext.xml:12
+#, no-c-format
+msgid ""
+"iText support is provided by <literal>jboss-seam-pdf.jar</literal>. This JAR "
+"contains the iText JSF controls, which are used to construct views that can "
+"render to PDF, and the DocumentStore component, which serves the rendered "
+"documents to the user. To include PDF support in your application, included "
+"<literal>jboss-seam-pdf.jar</literal> in your <literal>WEB-INF/lib</literal> "
+"directory along with the iText JAR file. There is no further configuration "
+"needed to use Seam&#39;s iText support."
+msgstr ""
+"iText-Support wird von <literal>jboss-seam-pdf.jar</literal> bereitgestellt. Diese JAR enthält die iText JSF-Kontrollen, die zur Konstruktion von Ansichten verwendet werden, die in PDF gerendert werden können und die DocumentStore-Komponente, die das gerenderte Dokument an den Benutzer liefert. Um PDF-Support in Ihrer Anwendung mit einzuschließen, ist "
+"<literal>jboss-seam-pdf.jar</literal> in Ihrem <literal>WEB-INF/lib</literal>-Verzeichnis gemeinsam mit der iText JAR-Datei enthalten. Es wird keine weitere Konfiguration für Seams iText Support benötigt."
+
+#. Tag: para
+#: Itext.xml:15
+#, no-c-format
+msgid ""
+"The Seam iText module requires the use of Facelets as the view technology. "
+"Future versions of the library may also support the use of JSP. "
+"Additionally, it requires the use of the seam-ui package."
+msgstr ""
+"Das Seam iText-Module erfodert die Verwendung von Facelets als als Technology für die Ansicht. Zukünftige Versionen der Bibliothek werden möglicherweise auch die Verwendung von JSP unterstützen. "
+"Außerdem erfodert es die Benutzung des seam-ui-Pakets."
+
+#. Tag: para
+#: Itext.xml:18
+#, no-c-format
+msgid ""
+"The <literal>examples/itext</literal> project contains an example of the PDF "
+"support in action. It demonstrates proper deployment packaging, and it "
+"contains a number examples that demonstrate the key PDF generation features "
+"current supported."
+msgstr "Das <literal>examples/itext</literal>-Projekt enthält ein Beispiel des PDF-Supports in Action. Es demonstriert das ordnungsgemäße Deployment-Packaging und enthält eine Reihe von Beispielen, die die aktuell unterstützten Schlüssel-Features zur PDF-Generierung zeigen."
+
+#. Tag: title
+#: Itext.xml:24
+#, no-c-format
+msgid "Creating a document"
+msgstr "Erstellen eines Dokuments"
+
+#. Tag: para
+#: Itext.xml:25
+#, no-c-format
+msgid ""
+"Documents are generated by facelets documents using tags in the "
+"<literal>http://jboss.com/products/seam/pdf</literal> namespace. Documents "
+"should always have the <literal>document</literal> tag at the root of the "
+"document. The <literal>document</literal> tag prepares Seam to generate a "
+"document into the DocumentStore and renders an HTML redirect to that stored "
+"content. The following is a a small PDF document consisting only a single "
+"line of text:"
+msgstr ""
+"Dokumente werden durch facelets-Dokumente unter Verwendung von Tags im "
+"<literal>http://jboss.com/products/seam/pdf</literal>-Namespace generiert. Dokumente sollten stets das <literal>document</literal>-Tag im Root des Dokuments haben. Das <literal>document</literal>-Tag bereitet Seam auf die Generierung eines Dokuments in DocumentStore vor und rendert ein HTML-Redirect zu diesen gespeicherten Inhalten. Nachfolgend sehen SIe ein kleines PDF-Dokument, das aus einer einzelnen Textzeile besteht:"
+
+#. Tag: programlisting
+#: Itext.xml:28
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf"
+"\"&gt;                                                      \n"
+"   The document goes "
+"here.                                                                                             \n"
+"&lt;/p:document&gt;"
+msgstr ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf"
+"\"&gt;                                                      \n"
+"   The document goes "
+"here.                                                                                             \n"
+"&lt;/p:document&gt;"
+
+#. Tag: title
+#: Itext.xml:30
+#, no-c-format
+msgid "p:document"
+msgstr "p:document"
+
+#. Tag: para
+#: Itext.xml:31
+#, no-c-format
+msgid "The <literal>p:document</literal> tag supports the following attributes:"
+msgstr "Das <literal>p:document</literal>-Tag unterstützt die folgenden Attribute:"
+
+#. Tag: literal
+#: Itext.xml:36
+#, no-c-format
+msgid "type"
+msgstr "type"
+
+#. Tag: para
+#: Itext.xml:38
+#, no-c-format
+msgid ""
+"The type of the document to be produced. Valid values are <literal>PDF</"
+"literal>, <literal>RTF</literal> and <literal>HTML</literal> modes. Seam "
+"defaults to PDF generation, and many of the features only work correctly "
+"when generating PDF documents."
+msgstr ""
+"Der zu erstellende Dokumententyp. Gültige Werte sind die <literal>PDF</"
+"literal>, <literal>RTF</literal> und <literal>HTML</literal>-Modi. Seam "
+"generiert standardmäßig PDFs und viele der Features funktionieren derzeit nur bei der Generierung von PDF-Dokumenten."
+
+#. Tag: literal
+#: Itext.xml:44
+#, no-c-format
+msgid "pageSize"
+msgstr "pageSize"
+
+#. Tag: para
+#: Itext.xml:46
+#, no-c-format
+msgid ""
+"The size of the page to be generate. The most commonly used values would be "
+"<literal>LETTER</literal> and <literal>A4</literal>. A full list of "
+"supported pages sizes can be found in <literal>com.lowagie.text.PageSize</"
+"literal> class. Alternatively, pageSize can provide the width and height of "
+"the page directly. The value \"612 792\", for example, is equizalent to the "
+"LETTER page size."
+msgstr "Die Größe der zu generierenden Seite. Die am häufigsten verwendeten Werte wären hierbei <literal>LETTER</literal> und <literal>A4</literal>. Eine vollständige Liste unterstützter Seitengrößen finden Sie in der <literal>com.lowagie.text.PageSize</literal>-Klasse. Alternativ kann pageSize die Breite und Höhe der Seite direkt liefern. Der Wert \"612 792\" etwa ist äquivalent zur Seitengröße LETTER."
+
+#. Tag: literal
+#: Itext.xml:52
+#, no-c-format
+msgid "orientation"
+msgstr "Ausrichtung (\"orientation\")"
+
+#. Tag: para
+#: Itext.xml:54
+#, no-c-format
+msgid ""
+"The orientation of the page. Valid values are <literal>portrait</literal> "
+"and <literal>landscape</literal>. In landscape mode, the height and width "
+"page size values are reversed."
+msgstr "Die Ausrichtung der Seite. Gültiger Werte sind <literal>portrait</literal> (Hochformat) und <literal>landscape</literal> (Breitformat). Im \"Landscape\"-Modus sind Höhe und Breite der Seitengrößenwerte umgekehrt."
+
+#. Tag: literal
+#: Itext.xml:60
+#, no-c-format
+msgid "margins"
+msgstr "Seitenränder (\"margins\")"
+
+#. Tag: para
+#: Itext.xml:62
+#, no-c-format
+msgid "The left, right, top and bottom margin values."
+msgstr "Die Werte für die Seitenränder links, rechts, oben und unten."
+
+#. Tag: literal
+#: Itext.xml:68
+#, no-c-format
+msgid "marginMirroring"
+msgstr "marginMirroring"
+
+#. Tag: para
+#: Itext.xml:70
+#, no-c-format
+msgid "Indicates that margin settings should be reversed an alternating pages."
+msgstr "Gibt an, dass die Einstellung der Seitenränder auf alternierenden Seiten umgekehrt sein sollte."
+
+#. Tag: para
+#: Itext.xml:76
+#, no-c-format
+msgid ""
+"Document metadata is also set as attributes of the document tag. The "
+"following metadata fields are supported:"
+msgstr "Die Dokument-Metadaten sind außerdem als Attribute des Dokument-Tags eingestellt. Die folgenden Metadaten-Felder werden unterstützt:"
+
+#. Tag: literal
+#: Itext.xml:81
+#, no-c-format
+msgid "title"
+msgstr "Titel (\"title\")"
+
+#. Tag: para
+#: Itext.xml:83 Itext.xml:90 Itext.xml:97 Itext.xml:104 Itext.xml:111
+#: Itext.xml:135 Itext.xml:142 Itext.xml:149 Itext.xml:156 Itext.xml:179
+#: Itext.xml:186 Itext.xml:193 Itext.xml:328 Itext.xml:335 Itext.xml:358
+#: Itext.xml:365 Itext.xml:372 Itext.xml:387 Itext.xml:394 Itext.xml:686
+#: Itext.xml:693 Itext.xml:700 Itext.xml:707 Itext.xml:730 Itext.xml:737
+#: Itext.xml:744 Itext.xml:751 Itext.xml:799 Itext.xml:806 Itext.xml:813
+#: Itext.xml:820 Itext.xml:827 Itext.xml:834 Itext.xml:841 Itext.xml:848
+#: Itext.xml:855 Itext.xml:862 Itext.xml:869 Itext.xml:876 Itext.xml:883
+#: Itext.xml:890 Itext.xml:897 Itext.xml:904 Itext.xml:911
+#, no-c-format
+msgid "&#x200B;"
+msgstr "&#x200B;"
+
+#. Tag: literal
+#: Itext.xml:88
+#, no-c-format
+msgid "subject"
+msgstr "Betreff (\"subject\")"
+
+#. Tag: literal
+#: Itext.xml:95
+#, no-c-format
+msgid "keywords"
+msgstr "Schlüsselbegriffe (\"keywords\")"
+
+#. Tag: literal
+#: Itext.xml:102
+#, no-c-format
+msgid "author"
+msgstr "Autor (\"author\")"
+
+#. Tag: literal
+#: Itext.xml:109
+#, no-c-format
+msgid "creator"
+msgstr "Ersteller (\"creator\")"
+
+#. Tag: title
+#: Itext.xml:121
+#, no-c-format
+msgid "Basic Text Elements"
+msgstr "Grundlegende Textelemente"
+
+#. Tag: para
+#: Itext.xml:122
+#, no-c-format
+msgid ""
+"Useful documents will need to contain more than just text; however, the "
+"standard UI components are geared towards HTML generation and are not useful "
+"for generating PDF content. Instead, Seam provides a special UI components "
+"for generating suitable PDF content. Tags like <literal>&lt;p:image&gt;</"
+"literal> and <literal>&lt;p:paragraph&gt;</literal> are the basic "
+"foundations of simple documents. Tags like <literal>&lt;p:font&gt;</literal> "
+"provide style information to all the content surrounging them."
+msgstr ""
+"Nützliche Dokumente werden mehr als nur Text enthalten müssen; allerdings sind die Standard UI-Komponenten auf HTML-Generierung ausgerichtet und nicht hilfreich bei der Generierung von PDF-Inhalten. Stattdessen liefert Seam eine spezielle UI-Komponente zur Generierung passender PDF-Inhalte. Tags wie <literal>&lt;p:image&gt;</"
+"literal> und <literal>&lt;p:paragraph&gt;</literal> sind die Grundlagen einfacher Dokumente. Tags wie <literal>&lt;p:font&gt;</literal> "
+"liefern Stil-Informationen an sämtliche sie umgebenden Inhalte."
+
+#. Tag: programlisting
+#: Itext.xml:125
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"&gt; \n"
+"    &lt;p:image alignment=\"right\" wrap=\"true\" resource=\"/logo.jpg\" /"
+"&gt;\n"
+"    &lt;p:font size=\"24\"&gt;\n"
+"        &lt;p:paragraph spacingAfter=\"50\"&gt;My First Document&lt;/p:"
+"paragraph&gt;\n"
+"    &lt;/p:font&gt;\n"
+"\n"
+"    &lt;p:paragraph alignment=\"justify\"&gt;\n"
+"        This is a simple document.  It isn&#39;t very fancy.\n"
+"    &lt;/p:paragraph&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"&gt; \n"
+"    &lt;p:image alignment=\"right\" wrap=\"true\" resource=\"/logo.jpg\" /"
+"&gt;\n"
+"    &lt;p:font size=\"24\"&gt;\n"
+"        &lt;p:paragraph spacingAfter=\"50\"&gt;My First Document&lt;/p:"
+"paragraph&gt;\n"
+"    &lt;/p:font&gt;\n"
+"\n"
+"    &lt;p:paragraph alignment=\"justify\"&gt;\n"
+"        This is a simple document.  It isn&#39;t very fancy.\n"
+"    &lt;/p:paragraph&gt;\n"
+"&lt;/p:document&gt;"
+
+#. Tag: title
+#: Itext.xml:127
+#, no-c-format
+msgid "p:paragraph"
+msgstr "p:paragraph"
+
+#. Tag: para
+#: Itext.xml:128
+#, no-c-format
+msgid ""
+"Most uses of text should be sectioned into paragraphs so that text fragments "
+"can be flowed, formatted and styled in logical groups."
+msgstr "Die meisten Textverwendungen sollten in Abschnitte aufgeteilt sein, damit Textfragmente in logischen Gruppen ge\"flowed\", formattiert und ge\"styled\" werden können."
+
+#. Tag: literal
+#: Itext.xml:133
+#, no-c-format
+msgid "firstLineIndent"
+msgstr "firstLineIndent"
+
+#. Tag: literal
+#: Itext.xml:140 Itext.xml:832
+#, no-c-format
+msgid "extraParagraphSpace"
+msgstr "extraParagraphSpace"
+
+#. Tag: literal
+#: Itext.xml:147 Itext.xml:804
+#, no-c-format
+msgid "leading"
+msgstr "leading"
+
+#. Tag: literal
+#: Itext.xml:154 Itext.xml:811
+#, no-c-format
+msgid "multipliedLeading"
+msgstr "multipliedLeading"
+
+#. Tag: literal
+#: Itext.xml:161 Itext.xml:340 Itext.xml:712
+#, no-c-format
+msgid "spacingBefore"
+msgstr "spacingBefore"
+
+#. Tag: para
+#: Itext.xml:163 Itext.xml:342 Itext.xml:714
+#, no-c-format
+msgid "The blank space to be inserted before the element."
+msgstr "Eine Leerstelle soll vor dem Element eingefügt werden."
+
+#. Tag: literal
+#: Itext.xml:169 Itext.xml:348 Itext.xml:720
+#, no-c-format
+msgid "spacingAfter"
+msgstr "spacingAfter"
+
+#. Tag: para
+#: Itext.xml:171 Itext.xml:350 Itext.xml:722
+#, no-c-format
+msgid "The blank space to be inserted after the element."
+msgstr "Eine Leerstelle soll nach dem Element eingefügt werden."
+
+#. Tag: literal
+#: Itext.xml:177 Itext.xml:326 Itext.xml:595
+#, no-c-format
+msgid "indentationLeft"
+msgstr "indentationLeft"
+
+#. Tag: literal
+#: Itext.xml:184 Itext.xml:333 Itext.xml:603
+#, no-c-format
+msgid "indentationRight"
+msgstr "indentationRight"
+
+#. Tag: literal
+#: Itext.xml:191 Itext.xml:749
+#, no-c-format
+msgid "keepTogether"
+msgstr "keepTogether"
+
+#. Tag: title
+#: Itext.xml:201
+#, no-c-format
+msgid "p:text"
+msgstr "p:text"
+
+#. Tag: para
+#: Itext.xml:202
+#, no-c-format
+msgid ""
+"The <literal>text</literal> tag allows text fragments to be produced from "
+"application data using normal JSF converter mechanisms. It is very similar "
+"to the <literal>outputText</literal> tag used when rendering HTML documents. "
+"Here is an example:"
+msgstr ""
+"Das <literal>text</literal>-Tag gestattet die Erstellung von Textfragmenten aus Anwendungsdaten unter Verwendung regulärer JSF-Konvertermechanismen. Es ist dem <literal>outputText</literal>-Tag sehr ähnlich, das beim Rendern von HTML-Dokumenten verwendet wird. "
+"Hier ein Beispiel:"
+
+#. Tag: programlisting
+#: Itext.xml:205
+#, no-c-format
+msgid ""
+"&lt;p:paragraph&gt;\n"
+"    The item costs &lt;p:text value=\"#{product.price}\"&gt;\n"
+"        &lt;f:convertNumber type=\"currency\" currencySymbol=\"$\"/&gt;\n"
+"    &lt;/p:text&gt;\n"
+"&lt;/p:paragraph&gt;"
+msgstr ""
+"&lt;p:paragraph&gt;\n"
+"    The item costs &lt;p:text value=\"#{product.price}\"&gt;\n"
+"        &lt;f:convertNumber type=\"currency\" currencySymbol=\"$\"/&gt;\n"
+"    &lt;/p:text&gt;\n"
+"&lt;/p:paragraph&gt;"
+
+#. Tag: literal
+#: Itext.xml:208
+#, no-c-format
+msgid "value"
+msgstr "Wert (\"value\")"
+
+#. Tag: para
+#: Itext.xml:210
+#, no-c-format
+msgid "The value to be displayed. This will typically be a value binding expression."
+msgstr "Der anzuzeigende Wert. Dies ist in der Regel ein Wertbindungsausdruck."
+
+#. Tag: title
+#: Itext.xml:219
+#, no-c-format
+msgid "p:font"
+msgstr "p:font"
+
+#. Tag: para
+#: Itext.xml:220
+#, no-c-format
+msgid "Font declarations have no direct"
+msgstr "Schrifttyp-Deklarationen besitzen kein \"Direct\""
+
+#. Tag: literal
+#: Itext.xml:225
+#, no-c-format
+msgid "familyName"
+msgstr "familyName"
+
+#. Tag: para
+#: Itext.xml:227
+#, no-c-format
+msgid ""
+"The font family. One of: <literal>COURIER</literal>, <literal>HELVETICA</"
+"literal>, <literal>TIMES-ROMAN</literal>, <literal>SYMBOL</literal> or "
+"<literal>ZAPFDINGBATS</literal>."
+msgstr "Die Schriftart-Familie. Eine von: <literal>COURIER</literal>, <literal>HELVETICA</literal>, <literal>TIMES-ROMAN</literal>, <literal>SYMBOL</literal> oder <literal>ZAPFDINGBATS</literal>."
+
+#. Tag: literal
+#: Itext.xml:233
+#, no-c-format
+msgid "size"
+msgstr "size"
+
+#. Tag: para
+#: Itext.xml:235
+#, no-c-format
+msgid "The point size of the font."
+msgstr "Schriftgröße in Punkt."
+
+#. Tag: literal
+#: Itext.xml:241 Itext.xml:530
+#, no-c-format
+msgid "style"
+msgstr "Stil (\"style\")"
+
+#. Tag: para
+#: Itext.xml:243
+#, no-c-format
+msgid ""
+"The font styles. Any combination of : <literal>NORMAL</literal>, "
+"<literal>BOLD</literal>, <literal>ITALIC</literal>, <literal>OBLIQUE</"
+"literal>, <literal>UNDERLINE</literal>, <literal>LINE-THROUGH</literal>"
+msgstr "Die Schrifttyp-Stile. Eine beliebige Kombination von: <literal>NORMAL</literal>, <literal>BOLD</literal>, <literal>ITALIC</literal>, <literal>OBLIQUE</literal>, <literal>UNDERLINE</literal>, <literal>LINE-THROUGH</literal>"
+
+#. Tag: title
+#: Itext.xml:252
+#, no-c-format
+msgid "p:newPage"
+msgstr "p:newPage"
+
+#. Tag: para
+#: Itext.xml:253
+#, no-c-format
+msgid "<literal>p:newPage</literal> inserts a page break."
+msgstr "<literal>p:newPage</literal> fügt einen Seitenumbruch ein."
+
+#. Tag: title
+#: Itext.xml:259
+#, no-c-format
+msgid "p:image"
+msgstr "p:image"
+
+#. Tag: para
+#: Itext.xml:260
+#, no-c-format
+msgid ""
+"<literal>p:image</literal> inserts an image into the document. Images can be "
+"be loaded from the classpath or from the web application context using the "
+"<literal>resource</literal> attribute."
+msgstr "<literal>p:image</literal> fügt eine Abbildung in das Dokument. Abbildungen können aus dem Klassenpfad oder dem Web-Anwendungskontext mittels <literal>resource</literal>-Attribut geladen werden."
+
+#. Tag: programlisting
+#: Itext.xml:263
+#, no-c-format
+msgid "&lt;p:image resource=\"/jboss.jpg\" /&gt;"
+msgstr "&lt;p:image resource=\"/jboss.jpg\" /&gt;"
+
+#. Tag: para
+#: Itext.xml:264
+#, no-c-format
+msgid ""
+"Resources can also be dynamically generated by application code. The "
+"<literal>imageData</literal> attribute can specify a value binding "
+"expression whose value is a <literal>java.awt.Image</literal> object."
+msgstr "Ressourcen können auch dynamisch durch einen Anwendungscode generiert werden. Das <literal>imageData</literal>-Attribut kann einen Wertebindungsausdruck festlegen, dessen Wert ein <literal>java.awt.Image</literal>-Objekt ist."
+
+#. Tag: programlisting
+#: Itext.xml:267
+#, no-c-format
+msgid "&lt;p:image imageData=\"#{images.chart}\" /&gt;"
+msgstr "&lt;p:image imageData=\"#{images.chart}\" /&gt;"
+
+#. Tag: literal
+#: Itext.xml:270
+#, no-c-format
+msgid "resource"
+msgstr "resource"
+
+#. Tag: para
+#: Itext.xml:272
+#, no-c-format
+msgid ""
+"The location of the image resource to be included. Resources should be "
+"relative to the document root of the web application."
+msgstr ""
+"Der Speicherort der mit einzuschließenden Ressource. Ressourcen sollten "
+"relative zum Dokumenten-Root der Web-Anwendung sein."
+
+#. Tag: literal
+#: Itext.xml:278
+#, no-c-format
+msgid "imageData"
+msgstr "imageData"
+
+#. Tag: para
+#: Itext.xml:280
+#, no-c-format
+msgid "A method expression binding to an application-generated image."
+msgstr "Ein Methoden-\"Expression-Binding\" zu einer anwendungsgenerierten Abbildung."
+
+#. Tag: literal
+#: Itext.xml:286 Itext.xml:909
+#, no-c-format
+msgid "rotation"
+msgstr "Drehung (\"rotation\")"
+
+#. Tag: para
+#: Itext.xml:288
+#, no-c-format
+msgid "The rotation of the image in degrees."
+msgstr "Die Drehung der Abbildung in Grad."
+
+#. Tag: literal
+#: Itext.xml:294
+#, no-c-format
+msgid "height"
+msgstr "Höhe (\"height\")"
+
+#. Tag: para
+#: Itext.xml:296
+#, no-c-format
+msgid "The height of the image."
+msgstr "Die Höhe des Abbilds."
+
+#. Tag: literal
+#: Itext.xml:302
+#, no-c-format
+msgid "width"
+msgstr "Breite (\"width\")"
+
+#. Tag: para
+#: Itext.xml:304
+#, no-c-format
+msgid "The width of the image."
+msgstr "Die Breite des Abbilds."
+
+#. Tag: literal
+#: Itext.xml:310 Itext.xml:437 Itext.xml:587
+#, no-c-format
+msgid "alignment"
+msgstr "Ausrichtung (\"alignment\")"
+
+#. Tag: para
+#: Itext.xml:312
+#, no-c-format
+msgid ""
+"The alignment of the image. (see <xref linkend=\"Seam_Reference_Guide-"
+"Document_Constants-Alignment_Values\"/> for possible values)"
+msgstr ""
+"Die Ausrichtung der Abbildung. (Siehe <xref linkend=\"Seam_Reference_Guide-"
+"Document_Constants-Alignment_Values\"/> für mögliche Werte)."
+
+#. Tag: literal
+#: Itext.xml:318
+#, no-c-format
+msgid "<literal>alt</literal>"
+msgstr "<literal>alt</literal>"
+
+#. Tag: para
+#: Itext.xml:320
+#, no-c-format
+msgid "Alternative text representation for the image."
+msgstr "Alternative Textrepräsentation für das Abbild."
+
+#. Tag: literal
+#: Itext.xml:356 Itext.xml:668
+#, no-c-format
+msgid "widthPercentage"
+msgstr "widthPercentage"
+
+#. Tag: literal
+#: Itext.xml:363
+#, no-c-format
+msgid "initialRotation"
+msgstr "initialRotation"
+
+#. Tag: literal
+#: Itext.xml:370
+#, no-c-format
+msgid "<literal>dpi</literal>"
+msgstr "<literal>dpi</literal>"
+
+#. Tag: literal
+#: Itext.xml:377
+#, no-c-format
+msgid "scalePercent"
+msgstr "scalePercent"
+
+#. Tag: para
+#: Itext.xml:379
+#, no-c-format
+msgid ""
+"The scaling factor (as a percentage) to use for the image. This can be "
+"expressed as a single percentage value or as two percentage values "
+"representing separate x and y scaling percentages."
+msgstr "Der Maßstabsfaktor (als Prozentsatz), der für die Abbildung verwendet werden soll. Dies kann als einzelner Prozentwert dargestellt werden oder aber als zwei Prozentwerte, die unterschiedliche x- und y- Maßstabsprozente repräsentieren."
+
+#. Tag: literal
+#: Itext.xml:385
+#, no-c-format
+msgid "wrap"
+msgstr "Umbruch (\"wrap\")"
+
+#. Tag: literal
+#: Itext.xml:392
+#, no-c-format
+msgid "underlying"
+msgstr "underlying"
+
+#. Tag: title
+#: Itext.xml:402
+#, no-c-format
+msgid "p:anchor"
+msgstr "p:anchor"
+
+#. Tag: para
+#: Itext.xml:403
+#, no-c-format
+msgid ""
+"<literal>p:anchor</literal> defines clickable links from a document. It "
+"supports the following attributes:"
+msgstr "<literal>p:anchor</literal> definiert klickbare Lnks eines Dokuments. Es unterstützt die folgenden Attribute:"
+
+#. Tag: literal
+#: Itext.xml:408
+#, no-c-format
+msgid "name"
+msgstr "Name (\"name\")"
+
+#. Tag: para
+#: Itext.xml:410
+#, no-c-format
+msgid "The name of an in-document anchor destination."
+msgstr "Der Name eines Ziels (\"anchor destination\") innerhalb des Dokuments."
+
+#. Tag: literal
+#: Itext.xml:416
+#, no-c-format
+msgid "reference"
+msgstr "Referenz (\"reference\")"
+
+#. Tag: para
+#: Itext.xml:418
+#, no-c-format
+msgid ""
+"The destination the link refers to. Links to other points in the document "
+"should begin with a \"#\". For example, \"#link1\" to refer to an anchor "
+"postion with a <literal>name</literal> of <literal>link1</literal>. Links "
+"may also be a full URL to point to a resource outside of the document."
+msgstr "Das Ziel, auf welches sich das Link bezieht. Links zu anderen Punkten im Dokument sollten mit einem \"#\" beginnen. Zum Beispiel \"#link1\", um sich auf ein Ziel mit dem <literal>name</literal> <literal>link1</literal> zu beziehen. Links können auch eine vollständige URL sein, die auf eine Ressource außerhalb des Dokuments weist."
+
+#. Tag: title
+#: Itext.xml:429
+#, no-c-format
+msgid "Headers and Footers"
+msgstr "Kopf- und Fußzeilen"
+
+#. Tag: title
+#: Itext.xml:431
+#, no-c-format
+msgid "p:header and p:footer"
+msgstr "p:header und p:footer"
+
+#. Tag: para
+#: Itext.xml:432
+#, no-c-format
+msgid ""
+"The <literal>p:header</literal> and <literal>p:footer</literal> components "
+"provide the ability to place header and footer text on each page of a "
+"generated document, with the exception of the first page. Header and footer "
+"declarations should appear near the top of a document."
+msgstr "Die <literal>p:header</literal> und <literal>p:footer</literal>-Komponenten ermöglichen das Platzieren von Kopf- und Fußzeilentext auf jeder Seite des generierten Dokuments, mit Ausnahme der ersten Seite. Kopf- und Fußzeilendeklarationen sollte in der Nähe des Dokumentenanfangs erscheinen."
+
+#. Tag: para
+#: Itext.xml:439
+#, no-c-format
+msgid ""
+"The alignment of the header/footer box section. (see <xref linkend="
+"\"Seam_Reference_Guide-Document_Constants-Alignment_Values\"/> for alignment "
+"values)"
+msgstr ""
+"Die Ausrichtung des Kopf-/Fußzeilen-Kastenabschnitts. (Siehe <xref linkend="
+"\"Seam_Reference_Guide-Document_Constants-Alignment_Values\"/> für Ausrichtungswerte)"
+
+#. Tag: literal
+#: Itext.xml:445
+#, no-c-format
+msgid "backgroundColor"
+msgstr "backgroundColor"
+
+#. Tag: para
+#: Itext.xml:447
+#, no-c-format
+msgid ""
+"The background color of the header/footer box. (see <xref linkend="
+"\"Seam_Reference_Guide-Document_Constants-Color_Values\"/> for color values)"
+msgstr ""
+"Die Hintergrundsfarbe der Kopf- und Fußzeilenbox. (Weitere Farbwerte finden Sie unter <xref linkend="
+"\"Seam_Reference_Guide-Document_Constants-Color_Values\"/>)."
+
+#. Tag: literal
+#: Itext.xml:453
+#, no-c-format
+msgid "borderColor"
+msgstr "borderColor"
+
+#. Tag: para
+#: Itext.xml:455
+#, no-c-format
+msgid ""
+"The border color of the header/footer box. Individual border sides can be "
+"set using <literal>borderColorLeft</literal>, <literal>borderColorRight</"
+"literal>, <literal>borderColorTop</literal> and <literal>borderColorBottom</"
+"literal>.(see <xref linkend=\"Seam_Reference_Guide-Document_Constants-"
+"Color_Values\"/> for color values)"
+msgstr ""
+"Die Randfarbe des Kopf-/Fußzeilenkastens. Einzelne Randseiten können mittels <literal>borderColorLeft</literal>, <literal>borderColorRight</"
+"literal>, <literal>borderColorTop</literal> und <literal>borderColorBottom</literal> eingestellt werden. (Siehe <xref linkend=\"Seam_Reference_Guide-Document_Constants-"
+"Color_Values\"/> für Farbwerte)."
+
+#. Tag: literal
+#: Itext.xml:461
+#, no-c-format
+msgid "borderWidth"
+msgstr "borderWidth"
+
+#. Tag: para
+#: Itext.xml:463
+#, no-c-format
+msgid ""
+"The width of the border. Inidvidual border sides can be specified using "
+"<literal>borderWidthLeft</literal>, <literal>borderWidthRight</literal>, "
+"<literal>borderWidthTop</literal> and <literal>borderWidthBottom</literal>."
+msgstr ""
+"Die Randbreite. Einzelne Randseiten können mittels "
+"<literal>borderWidthLeft</literal>, <literal>borderWidthRight</literal>, "
+"<literal>borderWidthTop</literal> und <literal>borderWidthBottom</literal> eingestellt werden."
+
+#. Tag: title
+#: Itext.xml:472
+#, no-c-format
+msgid "p:pageNumber"
+msgstr "p:pageNumber"
+
+#. Tag: para
+#: Itext.xml:473
+#, no-c-format
+msgid ""
+"The current page number can be placed inside of a header or footer using the "
+"<literal>p:pageNumber</literal> tag. The page number tag can only be used in "
+"the context of a header or footer and can only be used once."
+msgstr ""
+"Die aktuelle Seitenzahl kann mittels "
+"<literal>p:pageNumber</literal>-Tag innerhalb der Kopf- und Fußzeile platziert. Das Seitenzahl-Tag kann nur im Kontext einer Kopf- oder Fußzeile und auch nur ein Mal verwendet werden."
+
+#. Tag: title
+#: Itext.xml:481
+#, no-c-format
+msgid "Chapters and Sections"
+msgstr "Kapitel und Abschnitte"
+
+#. Tag: para
+#: Itext.xml:482
+#, no-c-format
+msgid ""
+"If the generated document follows a book/article structure, the <literal>p:"
+"chapter</literal> and <literal>p:section</literal> tags can be used to "
+"provide the necessary structure. Sections can only be used inside of "
+"chapters, but they may be nested arbitrarily deep. Most PDF viewers provide "
+"easy navigation between chapters and sections in a document."
+msgstr "Wenn das generierte Dokument einer Buch-/Titelstruktur folgt, so können die <literal>p:chapter</literal> und <literal>p:section</literal>-Tags für die nötige Struktur verwendet werden. Abschnitte können innerhalb von Kapiteln verwendet werden, aber sie können beliebig tief verschachtelt sein. Die meisten PDF-Viewer bieten einfache Navigation zwischen Kapiteln und Abschnitten in einem Dokument."
+
+#. Tag: programlisting
+#: Itext.xml:485
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"\n"
+"            title=\"Hello\"&gt;\n"
+"\n"
+"   &lt;p:chapter number=\"1\"&gt;\n"
+"      &lt;p:title&gt;&lt;p:paragraph&gt;Hello&lt;/p:paragraph&gt;&lt;/p:"
+"title&gt;\n"
+"      &lt;p:paragraph&gt;Hello #{user.name}!&lt;/p:paragraph&gt;\n"
+"   &lt;/p:chapter&gt;\n"
+"\n"
+"   &lt;p:chapter number=\"2\"&gt;\n"
+"      &lt;p:title&gt;&lt;p:paragraph&gt;Goodbye&lt;/p:paragraph&gt;&lt;/p:"
+"title&gt;\n"
+"      &lt;p:paragraph&gt;Goodbye #{user.name}.&lt;/p:paragraph&gt;\n"
+"   &lt;/p:chapter&gt;\n"
+"\n"
+"&lt;/p:document&gt;"
+msgstr ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"\n"
+"            title=\"Hello\"&gt;\n"
+"\n"
+"   &lt;p:chapter number=\"1\"&gt;\n"
+"      &lt;p:title&gt;&lt;p:paragraph&gt;Hello&lt;/p:paragraph&gt;&lt;/p:"
+"title&gt;\n"
+"      &lt;p:paragraph&gt;Hello #{user.name}!&lt;/p:paragraph&gt;\n"
+"   &lt;/p:chapter&gt;\n"
+"\n"
+"   &lt;p:chapter number=\"2\"&gt;\n"
+"      &lt;p:title&gt;&lt;p:paragraph&gt;Goodbye&lt;/p:paragraph&gt;&lt;/p:"
+"title&gt;\n"
+"      &lt;p:paragraph&gt;Goodbye #{user.name}.&lt;/p:paragraph&gt;\n"
+"   &lt;/p:chapter&gt;\n"
+"\n"
+"&lt;/p:document&gt;"
+
+#. Tag: title
+#: Itext.xml:487
+#, no-c-format
+msgid "p:chapter and p:section"
+msgstr "p:chapter und p:section"
+
+#. Tag: literal
+#: Itext.xml:490
+#, no-c-format
+msgid "number"
+msgstr "Nummer (\"number\")"
+
+#. Tag: para
+#: Itext.xml:492
+#, no-c-format
+msgid "The chapter number. Every chapter should be assigned a chapter number."
+msgstr "Die Kapitelnummer. Jedem Kapitel sollte eine Kapitelnummer zugeordnet werden."
+
+#. Tag: literal
+#: Itext.xml:498
+#, no-c-format
+msgid "numberDepth"
+msgstr "numberDepth"
+
+#. Tag: para
+#: Itext.xml:500
+#, no-c-format
+msgid ""
+"The depth of numbering for section. All sections are numbered relative to "
+"their surrounding chapter/sections. The fourth section of of the first "
+"section of chapter three would be section 3.1.4, if displayed at the default "
+"number depth of three. To omit the chapter number, a number depth of 2 "
+"should be used. In that case, the section number would be displayed as 1.4."
+msgstr ""
+"Die Nummerierungstiefe für Abschnitte. Alle Abschnitte sind relative zu den sie umgebenden Kapitels/Abschnitten nummeriert. Der vierte Abschnitt des ersten Abschnitts von Kapitel drei wäre somit Abschnitt 3.1.4, wenn als Standard-Nummerierungstiefe von drei dargestellt. Falls Sie die Kapitelnummer weglassen wollen, sollten Sie eine Tiefe von 2 "
+"verwenden. In diesem Fall würde die Abschnittsnummer als 1.4 angezeigt."
+
+#. Tag: title
+#: Itext.xml:509
+#, no-c-format
+msgid "p:title"
+msgstr "p:title"
+
+#. Tag: para
+#: Itext.xml:510
+#, no-c-format
+msgid ""
+"Any chapter or section can contain a <literal>p:title</literal>. The title "
+"will be displayed next to the chapter/section number. The body of the title "
+"may contain raw text or may be a <literal>p:paragraph</literal>."
+msgstr "Jedes Kapitel und jeder Abschnitt kann ein <literal>p:title</literal> enthalten. Der Titel wird neben der Kapitel/Abschnittsnummer angezeigt. Beim Körper des Titels kann es sich um \"rohen\" Text oder einen <literal>p:paragraph</literal> handeln."
+
+#. Tag: title
+#: Itext.xml:518
+#, no-c-format
+msgid "Lists"
+msgstr "Listen"
+
+#. Tag: para
+#: Itext.xml:519
+#, no-c-format
+msgid ""
+"List structures can be displayed using the <literal>p:list</literal> and "
+"<literal>p:listItem</literal> tags. Lists may contain arbitrarily-nested "
+"sublists. List items may not be used outside of a list. he following "
+"document uses the <literal>ui:repeat</literal> tag to to display a list of "
+"values retrieved from a Seam component."
+msgstr ""
+"Listenstrukturen können mittels der <literal>p:list</literal> und "
+"<literal>p:listItem</literal>-Tags abgezeigt werden. Listen können beliebig verschachtelte Unterlisten enthalten. Listenposten können nicht außerhalb einer Liste verwendet werden. Das folgende Dokument verwendet das <literal>ui:repeat</literal>-Tag zur Anzeige einer aus einer Seam-Komponente abgerufenen Liste von Werten."
+
+#. Tag: programlisting
+#: Itext.xml:522
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"\n"
+"            xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"            title=\"Hello\"&gt;\n"
+"   &lt;p:list style=\"numbered\"&gt;\n"
+"      &lt;ui:repeat value=\"#{documents}\" var=\"doc\"&gt;\n"
+"         &lt;p:listItem&gt;#{doc.name}&lt;/p:listItem&gt;\n"
+"      &lt;/ui:repeat&gt;\n"
+"   &lt;/p:list&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"\n"
+"            xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"            title=\"Hello\"&gt;\n"
+"   &lt;p:list style=\"numbered\"&gt;\n"
+"      &lt;ui:repeat value=\"#{documents}\" var=\"doc\"&gt;\n"
+"         &lt;p:listItem&gt;#{doc.name}&lt;/p:listItem&gt;\n"
+"      &lt;/ui:repeat&gt;\n"
+"   &lt;/p:list&gt;\n"
+"&lt;/p:document&gt;"
+
+#. Tag: title
+#: Itext.xml:524
+#, no-c-format
+msgid "p:list"
+msgstr "p:list"
+
+#. Tag: para
+#: Itext.xml:525
+#, no-c-format
+msgid "<literal>p:list</literal> supports the following attributes:"
+msgstr "<literal>p:list</literal> unterstützt die folgenden Attribute:"
+
+#. Tag: para
+#: Itext.xml:532
+#, no-c-format
+msgid ""
+"The ordering/bulleting style of list. One of: <literal>NUMBERED</literal>, "
+"<literal>LETTERED</literal>, <literal>GREEK</literal>, <literal>ROMAN</"
+"literal>, <literal>ZAPFDINGBATS</literal>, <literal>ZAPFDINGBATS_NUMBER</"
+"literal>. If no style is given, the list items are bulleted."
+msgstr ""
+"Der Anordnungs-/Bulleting-Stil (Aufzählungszeichen) der Liste. Einer von folgenden: <literal>NUMBERED</literal>, <literal>LETTERED</literal>, <literal>GREEK</literal>, <literal>ROMAN</literal>, <literal>ZAPFDINGBATS</literal>, <literal>ZAPFDINGBATS_NUMBER</"
+"literal>. Wird kein Stil angegeben, so werden Aufzählungszeichen verwendet."
+
+#. Tag: literal
+#: Itext.xml:538 Itext.xml:611
+#, no-c-format
+msgid "listSymbol"
+msgstr "listSymbol"
+
+#. Tag: para
+#: Itext.xml:540
+#, no-c-format
+msgid "For bulleted lists, specifies the bullet symbol."
+msgstr "Für Listen mit Aufzählungszeichen, legt das Symbol für das Aufzählungszeichen fest."
+
+#. Tag: literal
+#: Itext.xml:546 Itext.xml:818
+#, no-c-format
+msgid "indent"
+msgstr "Einzug (\"indent\")"
+
+#. Tag: para
+#: Itext.xml:548
+#, no-c-format
+msgid "The indentation level of the list."
+msgstr "Das Einzugsniveau der Liste."
+
+#. Tag: literal
+#: Itext.xml:554
+#, no-c-format
+msgid "lowerCase"
+msgstr "lowerCase"
+
+#. Tag: para
+#: Itext.xml:556
+#, no-c-format
+msgid ""
+"For list styles using letters, indicates whether the letters should be lower "
+"case."
+msgstr "Gibt für Buchstaben verwendende Listenstile an, ob es sich um Kleinbuchstaben handeln soll."
+
+#. Tag: literal
+#: Itext.xml:562
+#, no-c-format
+msgid "charNumber"
+msgstr "charNumber"
+
+#. Tag: para
+#: Itext.xml:564
+#, no-c-format
+msgid "For ZAPFDINGBATS, indicates the character code of the bullet character."
+msgstr "Für ZAPFDINGBATS, zeigt den Zeichencode des Aufzählungszeichens an."
+
+#. Tag: literal
+#: Itext.xml:570
+#, no-c-format
+msgid "numberType"
+msgstr "numberType"
+
+#. Tag: para
+#: Itext.xml:572
+#, no-c-format
+msgid "For ZAPFDINGBATS_NUMBER, indicates the numbering style."
+msgstr "Für ZAPFDINGBATS_NUMBER, gibt den Nummerierungsstil an."
+
+#. Tag: title
+#: Itext.xml:581
+#, no-c-format
+msgid "p:listItem"
+msgstr "p:listItem"
+
+#. Tag: para
+#: Itext.xml:582
+#, no-c-format
+msgid "<literal>p:listItem</literal> supports the following attributes:"
+msgstr "<literal>p:listItem</literal> unterstützt die folgenden Attribute:"
+
+#. Tag: para
+#: Itext.xml:589
+#, no-c-format
+msgid ""
+"The alignment of the list item. (See <xref linkend=\"Seam_Reference_Guide-"
+"Document_Constants-Alignment_Values\"/> for possible values)"
+msgstr ""
+"Die Ausrichtung des Listenpostens. (Siehe <xref linkend=\"Seam_Reference_Guide-"
+"Document_Constants-Alignment_Values\"/> für mögliche Werte)"
+
+#. Tag: para
+#: Itext.xml:597
+#, no-c-format
+msgid "The left indentation amount."
+msgstr "Die Einzugsmenge links."
+
+#. Tag: para
+#: Itext.xml:605
+#, no-c-format
+msgid "The right indentation amount."
+msgstr "Die Einzugsmenge rechts."
+
+#. Tag: para
+#: Itext.xml:613
+#, no-c-format
+msgid "Overrides the default list symbol for this list item."
+msgstr "Setzt das Standard-Listensymbol für diesen Listenposten außer Kraft."
+
+#. Tag: title
+#: Itext.xml:624
+#, no-c-format
+msgid "Tables"
+msgstr "Tabellen"
+
+#. Tag: para
+#: Itext.xml:625
+#, no-c-format
+msgid ""
+"Table structures can be created using the <literal>p:table</literal> and "
+"<literal>p:cell</literal> tags. Unlike many table structures, there is no "
+"explicit row declaration. If a table has 3 columns, then every 3 cells will "
+"automatically form a row. Header and footer rows can be declared, and the "
+"headers and footers will be repeated in the event a table structure spans "
+"multiple pages."
+msgstr ""
+"Tabellenstrukturen können mittels der <literal>p:table</literal> und "
+"<literal>p:cell</literal>-Tags erstellt werden. Im Unterschied zu vielen Tabellenstrukturen gibt es keine explizite Reihendeklaration. Hat eine Tabelle 3 Spalten, so formen alle 3 Zellen automatisch eine Reihe. Kopf- und Fußzeilenreihen können deklariert werden und werden beibehalten, falls die Tabellenstruktur sich über mehrere Seiten hinzieht."
+
+#. Tag: programlisting
+#: Itext.xml:628
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"   \n"
+"            xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"            title=\"Hello\"&gt;   \n"
+"   &lt;p:table columns=\"3\" headerRows=\"1\"&gt;\n"
+"      &lt;p:cell&gt;name&lt;/p:cell&gt;\n"
+"      &lt;p:cell&gt;owner&lt;/p:cell&gt;\n"
+"      &lt;p:cell&gt;size&lt;/p:cell&gt;\n"
+"      &lt;ui:repeat value=\"#{documents}\" var=\"doc\"&gt;\n"
+"         &lt;p:cell&gt;#{doc.name}&lt;/p:cell&gt;\n"
+"         &lt;p:cell&gt;#{doc.user.name}&lt;/p:cell&gt;\n"
+"         &lt;p:cell&gt;#{doc.size}&lt;/p:cell&gt;\n"
+"      &lt;/ui:repeat&gt;\n"
+"   &lt;/p:table&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"   \n"
+"            xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"            title=\"Hello\"&gt;   \n"
+"   &lt;p:table columns=\"3\" headerRows=\"1\"&gt;\n"
+"      &lt;p:cell&gt;name&lt;/p:cell&gt;\n"
+"      &lt;p:cell&gt;owner&lt;/p:cell&gt;\n"
+"      &lt;p:cell&gt;size&lt;/p:cell&gt;\n"
+"      &lt;ui:repeat value=\"#{documents}\" var=\"doc\"&gt;\n"
+"         &lt;p:cell&gt;#{doc.name}&lt;/p:cell&gt;\n"
+"         &lt;p:cell&gt;#{doc.user.name}&lt;/p:cell&gt;\n"
+"         &lt;p:cell&gt;#{doc.size}&lt;/p:cell&gt;\n"
+"      &lt;/ui:repeat&gt;\n"
+"   &lt;/p:table&gt;\n"
+"&lt;/p:document&gt;"
+
+#. Tag: title
+#: Itext.xml:630
+#, no-c-format
+msgid "p:table"
+msgstr "p:table"
+
+#. Tag: para
+#: Itext.xml:631
+#, no-c-format
+msgid "<literal>p:table</literal> supports the following attributes."
+msgstr "<literal>p:table</literal> unterstützt die folgenden Attribute."
+
+#. Tag: literal
+#: Itext.xml:636
+#, no-c-format
+msgid "columns"
+msgstr "Spalten"
+
+#. Tag: para
+#: Itext.xml:638
+#, no-c-format
+msgid "The number of columns (cells) that make up a table row."
+msgstr "Die Anzahl von Spalten (Zellen) aus denen eine Tabellenreihe besteht."
+
+#. Tag: literal
+#: Itext.xml:644
+#, no-c-format
+msgid "widths"
+msgstr "widths"
+
+#. Tag: para
+#: Itext.xml:646
+#, no-c-format
+msgid ""
+"The relative widths of each column. There should be one value for each "
+"column. For example: widths=\"2 1 1\" would indicate that there are 3 "
+"columns and the first column should be twice the size of the second and "
+"third column."
+msgstr ""
+"Die relative Breite jeder Spalte. Es sollte ein Werte gür jede Spalte vorhanden sein. Zum Beispiel: widths=\"2 1 1\" würde angeben, dass 3 "
+"Spalten existieren und die erste Spalte die doppelte Größe der zweiten und dritten Spalte besitzt."
+
+#. Tag: literal
+#: Itext.xml:652
+#, no-c-format
+msgid "headerRows"
+msgstr "headerRows"
+
+#. Tag: para
+#: Itext.xml:654
+#, no-c-format
+msgid ""
+"The initial number of rows which are considered to be headers or footer rows "
+"and should be repeated if the table spans multiple pages."
+msgstr "Die Anfangszahl von Reihen, die als Kopf- und Fußzeilenreihen gesehen werden und wiederholt werden sollen, wenn die Tabelle mehrere Seiten umfasst."
+
+#. Tag: literal
+#: Itext.xml:660
+#, no-c-format
+msgid "footerRows"
+msgstr "footerRows"
+
+#. Tag: para
+#: Itext.xml:662
+#, no-c-format
+msgid ""
+"The number of rows that are considered to be footer rows. This value is "
+"subtracted from the <literal>headerRows</literal> value. If document has 2 "
+"rows which make up the header and one row that makes up the footer, "
+"<literal>headerRows</literal> should be set to 3 and <literal>footerRows</"
+"literal> should be set to 1"
+msgstr "Die Anzahl von Reihen, die als Fußzeilenreihen (\"Footer\") gelten. Dieser Wert wird vom <literal>headerRows</literal>-Wert abgezogen. Besitzt das Dokument 2 Reihen, die die Kopfzeile (\"Header\") darstellen und eine Reihe, die die Fußzeile darstellt, s sollte <literal>headerRows</literal> auf 3 und <literal>footerRows</literal> auf 1 eingestellt sein."
+
+#. Tag: para
+#: Itext.xml:670
+#, no-c-format
+msgid "The percentage of the page width that the table spans."
+msgstr "Der Prozentsatz der Seitenbreite, den die Tabelle umfasst."
+
+#. Tag: literal
+#: Itext.xml:676 Itext.xml:773
+#, no-c-format
+msgid "horizontalAlignment"
+msgstr "horizontalAlignment"
+
+#. Tag: para
+#: Itext.xml:678
+#, no-c-format
+msgid ""
+"The horizontal alignment of the table. (See <xref linkend="
+"\"Seam_Reference_Guide-Document_Constants-Alignment_Values\"/> for possible "
+"values)"
+msgstr ""
+"Die horizontale Ausrichtung der Tabelle. (Siehe <xref linkend="
+"\"Seam_Reference_Guide-Document_Constants-Alignment_Values\"/> für mögliche Werte)."
+
+#. Tag: literal
+#: Itext.xml:684
+#, no-c-format
+msgid "skipFirstHeader"
+msgstr "skipFirstHeader"
+
+#. Tag: literal
+#: Itext.xml:691 Itext.xml:881
+#, no-c-format
+msgid "runDirection"
+msgstr "runDirection"
+
+#. Tag: literal
+#: Itext.xml:698
+#, no-c-format
+msgid "lockedWidth"
+msgstr "lockedWidth"
+
+#. Tag: literal
+#: Itext.xml:705
+#, no-c-format
+msgid "splitRows"
+msgstr "splitRows"
+
+#. Tag: literal
+#: Itext.xml:728
+#, no-c-format
+msgid "extendLastRow"
+msgstr "extendLastRow"
+
+#. Tag: literal
+#: Itext.xml:735
+#, no-c-format
+msgid "headersInEvent"
+msgstr "headersInEvent"
+
+#. Tag: literal
+#: Itext.xml:742
+#, no-c-format
+msgid "splitLate"
+msgstr "splitLate"
+
+#. Tag: title
+#: Itext.xml:759
+#, no-c-format
+msgid "p:cell"
+msgstr "p:cell"
+
+#. Tag: para
+#: Itext.xml:760
+#, no-c-format
+msgid "<literal>p:cell</literal> supports the following attributes."
+msgstr "<literal>p:cell</literal> unterstützt die folgenden Attribute."
+
+#. Tag: literal
+#: Itext.xml:765
+#, no-c-format
+msgid "colspan"
+msgstr "colspan"
+
+#. Tag: para
+#: Itext.xml:767
+#, no-c-format
+msgid ""
+"Cells can span more than one column by declaring a <literal>colspan</"
+"literal> greater than 1. Tables do not have the ability to span across "
+"multiple rows."
+msgstr "Zellen können mehr als eine Spalte umspannen, wenn ein <literal>colspan</literal> deklariert wird, der größer als 1 ist. Tabellen können jedoch nicht mehrere Reihen umspannen."
+
+#. Tag: para
+#: Itext.xml:775
+#, no-c-format
+msgid ""
+"The horizontal alignment of the cell. (see <xref linkend="
+"\"Seam_Reference_Guide-Document_Constants-Alignment_Values\"/> for possible "
+"values)"
+msgstr ""
+"Die horizontale Ausrichtung der Zelle. (Siehe <xref linkend="
+"\"Seam_Reference_Guide-Document_Constants-Alignment_Values\"/> für mögliche Werte)."
+
+#. Tag: literal
+#: Itext.xml:781 Itext.xml:825
+#, no-c-format
+msgid "verticalAlignment"
+msgstr "verticalAlignment"
+
+#. Tag: para
+#: Itext.xml:783
+#, no-c-format
+msgid ""
+"The vertical alignment of the cell. (see <xref linkend="
+"\"Seam_Reference_Guide-Document_Constants-Alignment_Values\"/> for possible "
+"values)"
+msgstr ""
+"Die vertikale Ausrichtung der Zelle. (Siehe <xref linkend="
+"\"Seam_Reference_Guide-Document_Constants-Alignment_Values\"/> für mögliche Werte)."
+
+#. Tag: literal
+#: Itext.xml:789
+#, no-c-format
+msgid "padding"
+msgstr "Padding (\"padding\")"
+
+#. Tag: para
+#: Itext.xml:791
+#, no-c-format
+msgid ""
+"Padding on a given side can also be specified using <literal>paddingLeft</"
+"literal>, <literal>paddingRight</literal>, <literal>paddingTop</literal> and "
+"<literal>paddingBottom</literal>."
+msgstr ""
+"\"Padding\" auf einer beliebigen Seite kann auch mittels <literal>paddingLeft</"
+"literal>, <literal>paddingRight</literal>, <literal>paddingTop</literal> und "
+"<literal>paddingBottom</literal> festgelegt werden."
+
+#. Tag: literal
+#: Itext.xml:797
+#, no-c-format
+msgid "useBorderPadding"
+msgstr "useBorderPadding"
+
+#. Tag: literal
+#: Itext.xml:839
+#, no-c-format
+msgid "fixedHeight"
+msgstr "fixedHeight"
+
+#. Tag: literal
+#: Itext.xml:846
+#, no-c-format
+msgid "noWrap"
+msgstr "noWrap"
+
+#. Tag: literal
+#: Itext.xml:853
+#, no-c-format
+msgid "minimumHeight"
+msgstr "minimumHeight"
+
+#. Tag: literal
+#: Itext.xml:860
+#, no-c-format
+msgid "followingIndent"
+msgstr "followingIndent"
+
+#. Tag: literal
+#: Itext.xml:867
+#, no-c-format
+msgid "rightIndent"
+msgstr "rightIndent"
+
+#. Tag: literal
+#: Itext.xml:874
+#, no-c-format
+msgid "spaceCharRatio"
+msgstr "spaceCharRatio"
+
+#. Tag: literal
+#: Itext.xml:888
+#, no-c-format
+msgid "arabicOptions"
+msgstr "arabicOptions"
+
+#. Tag: literal
+#: Itext.xml:895
+#, no-c-format
+msgid "useAscender"
+msgstr "useAscender"
+
+#. Tag: literal
+#: Itext.xml:902
+#, no-c-format
+msgid "grayFill"
+msgstr "grayFill"
+
+#. Tag: title
+#: Itext.xml:921
+#, no-c-format
+msgid "Document Constants"
+msgstr "Dokument-Konstanten"
+
+#. Tag: para
+#: Itext.xml:922
+#, no-c-format
+msgid ""
+"This section documents some of the constants shared by attributes on "
+"multiple tags."
+msgstr "Dieser Abschnitt dokumentiert einige der Konstanten, die von den Attributen auf mehreren Tags geteilt werden."
+
+#. Tag: title
+#: Itext.xml:926
+#, no-c-format
+msgid "Color Values"
+msgstr "Farbwerte"
+
+#. Tag: para
+#: Itext.xml:927
+#, no-c-format
+msgid ""
+"Seam documents do not yet support a full color specification. Currently, "
+"only named colors are supported. They are: <literal>white</literal>, "
+"<literal>gray</literal>, <literal>lightgray</literal>, <literal>darkgray</"
+"literal>, <literal>black</literal>, <literal>red</literal>, <literal>pink</"
+"literal>, <literal>yellow</literal>, <literal>green</literal>, "
+"<literal>magenta</literal>, <literal>cyan</literal> and <literal>blue</"
+"literal>."
+msgstr ""
+"Seam-Dokumente unterstützen zum aktuellen Zeitpunkt noch keine vollständige Farbspezifikation. Momentan werden nur benannte Farbe unterstützt. Dazu gehören: <literal>white</literal>, "
+"<literal>gray</literal>, <literal>lightgray</literal>, <literal>darkgray</"
+"literal>, <literal>black</literal>, <literal>red</literal>, <literal>pink</"
+"literal>, <literal>yellow</literal>, <literal>green</literal>, "
+"<literal>magenta</literal>, <literal>cyan</literal> und <literal>blue</"
+"literal>."
+
+#. Tag: title
+#: Itext.xml:933
+#, no-c-format
+msgid "Alignment Values"
+msgstr "Ausrichtungswerte"
+
+#. Tag: para
+#: Itext.xml:934
+#, no-c-format
+msgid ""
+"Where alignment values are used, the Seam PDF supports the following "
+"horizontal alignment values: <literal>left</literal>, <literal>right</"
+"literal>, <literal>center</literal>, <literal>justify</literal> and "
+"<literal>justifyall</literal>. The vertical alignment values are "
+"<literal>top</literal>, <literal>middle</literal>, <literal>bottom</"
+"literal>, and <literal>baseline</literal>."
+msgstr ""
+"Wo Ausrichtungswerte verwendet werden, unterstützt die Seam-PDF folgende horizontale Ausrichtungswerte: <literal>left</literal>, <literal>right</literal>, <literal>center</literal>, <literal>justify</literal> und <literal>justifyall</literal>. Die vertikalen Ausrichtungswerte lauten "
+"<literal>top</literal>, <literal>middle</literal>, <literal>bottom</"
+"literal> und <literal>baseline</literal>."
+
+#. Tag: title
+#: Itext.xml:942
+#, no-c-format
+msgid "Configuring iText"
+msgstr "Konfiguration von iText"
+
+#. Tag: para
+#: Itext.xml:943
+#, no-c-format
+msgid ""
+"Document generation works out of the box with no additional configuration "
+"needed. However, there are a few points of configuration that are needed for "
+"more serious applications."
+msgstr "Die Dokumentengenerierung funktioniert ohne dass eine zusätzliche Konfiguration nötig wäre. Es gibt jedoch ein paar Konfigurationspunkte, die für wichtigere Anwendungen notwendig sind."
+
+#. Tag: para
+#: Itext.xml:946
+#, no-c-format
+msgid ""
+"The default implementation serves PDF documents from a generic URL, "
+"<literal>/seam-doc.seam</literal>. Many browsers (and users) would prefer to "
+"see URLs that contain the actual PDF name like <literal>/myDocument.pdf</"
+"literal>. This capability requires some configuration. To serve PDF files, "
+"all *.pdf resources should be mapped to the Seam Servlet Filter and to the "
+"DocumentStoreServlet:"
+msgstr ""
+"Die Standardimplementierung liefert PDF-Dokumente von einer generischen URL <literal>/seam-doc.seam</literal>. Viele Browser (und Benutzer) würden die den tatsächlichen PDF-Name wie etwa <literal>/myDocument.pdf</literal> enthaltende URLs vorziehen. Dies erfordert jedoch eine gewisse Konfiguration. Um PDF-Dateien zu liefern, sollten alle *.pdf-Ressourcen zu Seam Servlet Filter und dem "
+"DocumentStoreServlet gemappt sein:"
+
+#. Tag: programlisting
+#: Itext.xml:949
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.servlet.SeamServletFilter&lt;/filter-"
+"class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;\n"
+"\n"
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.pdf.DocumentStoreServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"\n"
+"&lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+msgstr ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.servlet.SeamServletFilter&lt;/filter-"
+"class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;\n"
+"\n"
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.pdf.DocumentStoreServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"\n"
+"&lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+
+#. Tag: para
+#: Itext.xml:950
+#, no-c-format
+msgid ""
+"The <literal>useExtensions</literal> option on the document store component "
+"completes the functionality by instructing the document store to generate "
+"URLs with the correct filename extension for the document type being "
+"generated."
+msgstr ""
+"Die <literal>useExtensions</literal>-Option an der Dokumenten-Speicherkomponente vervollständigt die Funktionalität, indem der Dokumentenspeicher (\"Document Store\") angewiesen wird, "
+"URLs mit der korrekten Dateinamenerweiterung für den Dokumententyp zu generieren, der gerade generiert wird."
+
+#. Tag: programlisting
+#: Itext.xml:953
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pdf=\"http://jboss.com/products/seam/pdf\"&gt;\n"
+"    &lt;pdf:documentStore useExtensions=\"true\" /&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pdf=\"http://jboss.com/products/seam/pdf\"&gt;\n"
+"    &lt;pdf:documentStore useExtensions=\"true\" /&gt;\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Itext.xml:954
+#, no-c-format
+msgid ""
+"Generated documents are stored in conversation scope and will expire when "
+"the conversation ends. At that point, references to the document will be "
+"invalid. To You can specify a default view to be shown when a document does "
+"not exist using the <literal>errorPage</literal> property of the "
+"documentStore."
+msgstr ""
+"Generierte Dokumente werden im Konversationsbereich (\"Conversation Scope\") gespeichert und enden mit der Konversation. Zu diesem Zeitpunkt werden auch Verweise auf das Dokument ungültig. Sie können eine Standard-Ansicht festlegen, die gezeigt wird, wenn das Dokument nicht exisitiert, indem Sie <literal>errorPage</literal>-Property des "
+"documentStore verwenden."
+
+#. Tag: programlisting
+#: Itext.xml:957
+#, no-c-format
+msgid ""
+"&lt;pdf:documentStore useExtensions=\"true\" errorPage=\"/pdfMissing.seam\" /"
+"&gt;"
+msgstr ""
+"&lt;pdf:documentStore useExtensions=\"true\" errorPage=\"/pdfMissing.seam\" /"
+"&gt;"
+
+#. Tag: title
+#: Itext.xml:961
+#, no-c-format
+msgid "iText links"
+msgstr "iText-Links"
+
+#. Tag: para
+#: Itext.xml:962
+#, no-c-format
+msgid "For further information on iText, see:"
+msgstr "Weitere Informationen zu iText finden Sie unter:"
+
+#. Tag: ulink
+#: Itext.xml:969
+#, no-c-format
+msgid "iText Home Page"
+msgstr "iText-Homepage"
+
+#. Tag: ulink
+#: Itext.xml:974
+#, no-c-format
+msgid "iText in Action"
+msgstr "iText in Action"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Jbpm.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Jbpm.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Jbpm.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1460 @@
+# translation of Jbpm.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Jasna Dimanoski <jdimanos at redhat.com>, 2007, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Jbpm\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2008-05-29 22:14+1000\n"
+"Last-Translator: Jasna Dimanoski <jdimanos at redhat.com>\n"
+"Language-Team:  <de at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Jbpm.xml:6
+#, no-c-format
+msgid "Pageflows and business processes"
+msgstr "Pageflows und Business-Prozesse"
+
+#. Tag: para
+#: Jbpm.xml:7
+#, no-c-format
+msgid ""
+"JBoss jBPM is a business process management engine for any Java SE or EE "
+"environment. jBPM lets you represent a business process or user interaction "
+"as a graph of nodes representing wait states, decisions, tasks, web pages, "
+"etc. The graph is defined using a simple, very readable, XML dialect called "
+"jPDL, and may be edited and visualised graphically using an eclipse plugin. "
+"jPDL is an extensible language, and is suitable for a range of problems, "
+"from defining web application page flow, to traditional workflow management, "
+"all the way up to orchestration of services in a SOA environment."
+msgstr ""
+"Bei JBoss jBPM handelt es sich um eine Engine für das Management von Business Prozessen für eine beliebige Java SE oder EE "
+"Umgebung. jBPM gestattet es Ihnen einen Business Prozess oder eine Benutzerinteraktion als Diagramm von Warte-Stati, Entscheidungen, Tasks, Webseiten usw. repräsentierende Nodes darstellen. Das Diagramm wird unter einer Verwendung eines einfachen, ausgesprochen lesbaren XML-Dialekts namens jPDL definiert und kann mittels Eclipse-Plugin bearbeitet und grafisch visualisiert werden. "
+"jPDL ist eine erweiterbare Sprache und passend für eine breit gefächerte Palette von Problemen, die von der Definition des Pageflows einer Web-Anwendung über traditionelles Workflow Management, bis hin zur "
+"Orchestrierung von Diensten in einer SOA-Umgebung reicht."
+
+#. Tag: para
+#: Jbpm.xml:10
+#, no-c-format
+msgid "Seam applications use jBPM for two different problems:"
+msgstr "Seam-Anwendungen benutzen jBPM für zwei verschiedene Probleme:"
+
+#. Tag: para
+#: Jbpm.xml:15
+#, no-c-format
+msgid ""
+"Defining the pageflow involved in complex user interactions. A jPDL process "
+"definition defines the page flow for a single conversation. A Seam "
+"conversation is considered to be a relatively short-running interaction with "
+"a single user."
+msgstr "Definition des in komplexe Benutzerinteraktionen involvierten Pageflow. Eine jPDL-Prozessdefinition definiert den Pageflow für eine einzelne Konversation. Eine Seam Konversation wird als eine relativ kurz laufende Interaktion mit einem einzelnen Benutzer angesehen."
+
+#. Tag: para
+#: Jbpm.xml:20
+#, no-c-format
+msgid ""
+"Defining the overarching business process. The business process may span "
+"multiple conversations with multiple users. Its state is persistent in the "
+"jBPM database, so it is considered long-running. Coordination of the "
+"activities of multiple users is a much more complex problem than scripting "
+"an interaction with a single user, so jBPM offers sophisticated facilities "
+"for task management and dealing with multiple concurrent paths of execution."
+msgstr ""
+"Definition des überspannenden Business Prozesses. Der Business Prozess kann mehrere Konversationen mit mehreren Benutzern umspannen. Sein Status ist in der jBPM-Datenbank persistent, weshalb er als lange laufend gilt. Die Koordination der Aktivitäten mehrerer Benutzer ist ein wesentlich komplexeres Problem als das Skripting einer Interaktion mit einem einzelnen Benutzer, weswegen jBPM fortgeschrittene Möglichkeiten des"
+"Task Management sowie dem Umgang mit mehreren gleichzeitigen Ausführungspfaden bietet."
+
+#. Tag: para
+#: Jbpm.xml:25
+#, no-c-format
+msgid ""
+"Don&#39;t get these two things confused ! They operate at very different "
+"levels or granularity. <emphasis>Pageflow</emphasis>, "
+"<emphasis>conversation</emphasis> and <emphasis>task</emphasis> all refer to "
+"a single interaction with a single user. A business process spans many "
+"tasks. Futhermore, the two applications of jBPM are totally orthogonal. You "
+"can use them together or independently or not at all."
+msgstr ""
+"Bringen Sie diese beiden Dinge nicht durcheinander! Sie funktionieren auf ganz unterschiedlichen Ebenen von Granularität. <emphasis>Pageflow</emphasis>, "
+"<emphasis>Konversation</emphasis> und <emphasis>Task</emphasis> beziehen sich alle auf eine einzelne Interaktion mit einem einzelnen Benutzer. Ein Business Prozess umfasst viele Tasks. Desweiteren sind die beiden Anwendungen völlig orthogonal. Sie können sie gemeinsam, getrennt voneinander oder auch gar nicht benutzen."
+
+#. Tag: para
+#: Jbpm.xml:28
+#, no-c-format
+msgid ""
+"You don&#39;t have to know jDPL to use Seam. If you&#39;re perfectly happy "
+"defining pageflow using JSF or Seam navigation rules, and if your "
+"application is more data-driven that process-driven, you probably don&#39;t "
+"need jBPM. But we&#39;re finding that thinking of user interaction in terms "
+"of a well-defined graphical representation is helping us build more robust "
+"applications."
+msgstr "Sie müssen sich nicht mit jDPL auskennen, um Seam zu verwenden. Falls es Ihnen nichts ausmacht Pageflow unter Verwendung von JSF oder Seam Navigationsregeln zu definieren und Ihre Anwendung eher Daten-getrieben als Prozess-getrieben ist, so brauchen Sie jBPM wahrscheinlich nicht. Wir denken jedoch, dass die Vorstellung von Benutzerinteraktionen als gut definierte grafische Repräsentation beim Bau robusterer Anwendungen hilfreich ist."
+
+#. Tag: title
+#: Jbpm.xml:32
+#, no-c-format
+msgid "Pageflow in Seam"
+msgstr "Pageflow in Seam"
+
+#. Tag: para
+#: Jbpm.xml:33
+#, no-c-format
+msgid "There are two ways to define pageflow in Seam:"
+msgstr "Es gibt zwei Arten Pageflow in Seam zu definieren:"
+
+#. Tag: para
+#: Jbpm.xml:38
+#, no-c-format
+msgid ""
+"Using JSF or Seam navigation rules - the <emphasis>stateless navigation "
+"model</emphasis>"
+msgstr "Verwenung von JSF oder Seam Navigationsregeln - das <emphasis>Stateless Navigationsmodell</emphasis>"
+
+#. Tag: para
+#: Jbpm.xml:43
+#, no-c-format
+msgid "Using jPDL - the <emphasis>stateful navigation model</emphasis>"
+msgstr "Verwendung von jPDL - das <emphasis>Stateful Navigationsmodell</emphasis>"
+
+#. Tag: para
+#: Jbpm.xml:48
+#, no-c-format
+msgid ""
+"Very simple applications will only need the stateless navigation model. Very "
+"complex applications will use both models in different places. Each model "
+"has its strengths and weaknesses!"
+msgstr "Sehr einfache Anwendungen benötigen nur das \"stateless\" Navigationsmodell. Sehr komplexe Anwendungen verwenden beide Modelle an unterschiedlichen Stellen. Jedes Modell hat seine Stärken und Schwächen!"
+
+#. Tag: title
+#: Jbpm.xml:52
+#, no-c-format
+msgid "The two navigation models"
+msgstr "Die zwei Navigationsmodelle"
+
+#. Tag: para
+#: Jbpm.xml:53
+#, no-c-format
+msgid ""
+"The stateless model defines a mapping from a set of named, logical outcomes "
+"of an event directly to the resulting page of the view. The navigation rules "
+"are entirely oblivious to any state held by the application other than what "
+"page was the source of the event. This means that your action listener "
+"methods must sometimes make decisions about the page flow, since only they "
+"have access to the current state of the application."
+msgstr "Das \"stateless\" Modell definiert ein Mapping von einem Satz benannter, logischer Ergebnisse eines Ereignisses direkt zur resultierenden Seite der Ansicht. Die Navigationsregeln kümmern sich überhaupt nicht um den durch die Anwendung gehaltenen Status außer welche Seite die Quelle des Ereignisses war. Das bedeutet, dass Ihre Action-Listener-Methoden manchmal Entscheidungen zum Pageflow treffen müssen, da Sie Zugriff auf den aktuellen Status der Anwendung besitzen."
+
+#. Tag: para
+#: Jbpm.xml:56
+#, no-c-format
+msgid "Here is an example page flow definition using JSF navigation rules:"
+msgstr "Hier ist ein Beispiel für eine Page-Flow-Definition unter Verwendung von JSF Navigationsregeln:"
+
+#. Tag: programlisting
+#: Jbpm.xml:59
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"    &lt;from-view-id&gt;/numberGuess.jsp&lt;/from-view-id&gt;\n"
+"        \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;guess&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/numberGuess.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;win&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/win.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"        \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;lose&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/lose.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+"&lt;navigation-rule&gt;\n"
+"    &lt;from-view-id&gt;/numberGuess.jsp&lt;/from-view-id&gt;\n"
+"        \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;guess&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/numberGuess.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;win&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/win.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"        \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;lose&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/lose.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"&lt;/navigation-rule&gt;"
+
+#. Tag: para
+#: Jbpm.xml:60
+#, no-c-format
+msgid "Here is the same example page flow definition using Seam navigation rules:"
+msgstr "Hier ist dasselbe Beispiel für eine Page-Flow-Definition unter Verwendung von Seam Navigationsregeln: "
+
+#. Tag: programlisting
+#: Jbpm.xml:63
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/numberGuess.jsp\"&gt;\n"
+"        \n"
+"    &lt;navigation&gt;\n"
+"        &lt;rule if-outcome=\"guess\"&gt;\n"
+"            &lt;redirect view-id=\"/numberGuess.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"        &lt;rule if-outcome=\"win\"&gt;\n"
+"            &lt;redirect view-id=\"/win.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"        &lt;rule if-outcome=\"lose\"&gt;\n"
+"            &lt;redirect view-id=\"/lose.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+"&lt;page view-id=\"/numberGuess.jsp\"&gt;\n"
+"        \n"
+"    &lt;navigation&gt;\n"
+"        &lt;rule if-outcome=\"guess\"&gt;\n"
+"            &lt;redirect view-id=\"/numberGuess.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"        &lt;rule if-outcome=\"win\"&gt;\n"
+"            &lt;redirect view-id=\"/win.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"        &lt;rule if-outcome=\"lose\"&gt;\n"
+"            &lt;redirect view-id=\"/lose.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"&lt;/navigation-rule&gt;"
+
+#. Tag: para
+#: Jbpm.xml:64
+#, no-c-format
+msgid ""
+"If you find navigation rules overly verbose, you can return view ids "
+"directly from your action listener methods:"
+msgstr "Falls Sie Navigationsregeln zu wortreich finden, können Sie Ansichts-IDs direkt von Ihren Action-Listener-Methoden wiedergeben:"
+
+#. Tag: programlisting
+#: Jbpm.xml:67
+#, no-c-format
+msgid ""
+"public String guess() {\n"
+"    if (guess==randomNumber) return \"/win.jsp\";\n"
+"    if (++guessCount==maxGuesses) return \"/lose.jsp\";\n"
+"    return null;\n"
+"}"
+msgstr ""
+"public String guess() {\n"
+"    if (guess==randomNumber) return \"/win.jsp\";\n"
+"    if (++guessCount==maxGuesses) return \"/lose.jsp\";\n"
+"    return null;\n"
+"}"
+
+#. Tag: para
+#: Jbpm.xml:68
+#, no-c-format
+msgid ""
+"Note that this results in a redirect. You can even specify parameters to be "
+"used in the redirect:"
+msgstr "Beachten Sie, dass dies in einer Umleitung resultiert. Sie können sogar in der Umleitung zu verwendende Parameter festlegen:"
+
+#. Tag: programlisting
+#: Jbpm.xml:71
+#, no-c-format
+msgid ""
+"public String search() {\n"
+"    return \"/searchResults.jsp?searchPattern=#{searchAction.searchPattern}"
+"\";\n"
+"}"
+msgstr ""
+"public String search() {\n"
+"    return \"/searchResults.jsp?searchPattern=#{searchAction.searchPattern}"
+"\";\n"
+"}"
+
+#. Tag: para
+#: Jbpm.xml:72
+#, no-c-format
+msgid ""
+"The stateful model defines a set of transitions between a set of named, "
+"logical application states. In this model, it is possible to express the "
+"flow of any user interaction entirely in the jPDL pageflow definition, and "
+"write action listener methods that are completely unaware of the flow of the "
+"interaction."
+msgstr "Das \"stateful\" Modell definiert einen Satz von Transitions zwischen einem Satz benannter, logischer Anwendungs-Stati. In diesem Modell ist es möglich den Flow jeder beliebigen Benutzerinteraktion vollständig in der jPDL-Pageflow-Definition auszudrücken und Action-Listener-Methoden zu schreiben, die überhaupt nicht über den Flow der Interaktion informiert sind."
+
+#. Tag: para
+#: Jbpm.xml:75
+#, no-c-format
+msgid "Here is an example page flow definition using jPDL:"
+msgstr "Hier ist ein Beispiel für eine Page-Flow-Definition unter Verwendung von jPDL:"
+
+#. Tag: programlisting
+#: Jbpm.xml:78
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"numberGuess\"&gt;\n"
+"    \n"
+"   &lt;start-page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"              &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"      &lt;/transition&gt;\n"
+"   &lt;/start-page&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess."
+"correctGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateRemainingGuesses\" expression=\"#{numberGuess."
+"lastGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"lose\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"displayGuess\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"lose\" view-id=\"/lose.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+"&lt;pageflow-definition name=\"numberGuess\"&gt;\n"
+"    \n"
+"   &lt;start-page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"              &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"      &lt;/transition&gt;\n"
+"   &lt;/start-page&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess."
+"correctGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateRemainingGuesses\" expression=\"#{numberGuess."
+"lastGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"lose\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"displayGuess\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"lose\" view-id=\"/lose.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+
+#. Tag: para
+#: Jbpm.xml:87
+#, no-c-format
+msgid "There are two things we notice immediately here:"
+msgstr "Zwei DInge sehen wir hier sofort:"
+
+#. Tag: para
+#: Jbpm.xml:92
+#, no-c-format
+msgid ""
+"The JSF/Seam navigation rules are <emphasis>much</emphasis> simpler. "
+"(However, this obscures the fact that the underlying Java code is more "
+"complex.)"
+msgstr "Die JSF/Seam-Navigationsregeln sind <emphasis>viel</emphasis> einfacher. (Dies verdeckt jedoch die Tatsache, dass der zugrundeliegende Java-Code komplexer ist)."
+
+#. Tag: para
+#: Jbpm.xml:97
+#, no-c-format
+msgid ""
+"The jPDL makes the user interaction immediately understandable, without us "
+"needing to even look at the JSP or Java code."
+msgstr "Die jPDL macht die Benutzerinteraktion sofort verständlich, ohne dass wir die JSP oder Java-Code auch nur ansehen müssten."
+
+#. Tag: para
+#: Jbpm.xml:102
+#, no-c-format
+msgid ""
+"In addition, the stateful model is more <emphasis>constrained</emphasis>. "
+"For each logical state (each step in the page flow), there are a constrained "
+"set of possible transitions to other states. The stateless model is an "
+"<emphasis>ad hoc</emphasis> model which is suitable to relatively "
+"unconstrained, freeform navigation where the user decides where he/she wants "
+"to go next, not the application."
+msgstr ""
+"Desweiteren ist das \"stateful\" Modell <emphasis>eingeschränkter</emphasis>. "
+"Für jeden logischen Status (jeden Schritt im Pageflow), existiert ein beschränkter Satz von Transitions zu anderen Stati. Das \"stateless\" Modell ist ein "
+"<emphasis>ad hoc</emphasis>-Modell dass geeignet für relativ uneingeschränkte, hinsichtlich ihrer Form freie Navigation ist, bei der der Benutzer - und nicht die Anwendung - entscheidet, wo er/sie als nächstes hinmöchte."
+
+#. Tag: para
+#: Jbpm.xml:105
+#, no-c-format
+msgid ""
+"The stateful/stateless navigation distinction is quite similar to the "
+"traditional view of modal/modeless interaction. Now, Seam applications are "
+"not usually modal in the simple sense of the word - indeed, avoiding "
+"application modal behavior is one of the main reasons for having "
+"conversations! However, Seam applications can be, and often are, modal at "
+"the level of a particular conversation. It is well-known that modal behavior "
+"is something to avoid as much as possible; it is very difficult to predict "
+"the order in which your users are going to want to do things! However, there "
+"is no doubt that the stateful model has its place."
+msgstr "Die Unterscheidung von \"stateful\"/\"stateless\" Navigation ist ziemlich ähnlich wie die traditionelle Ansicht modaler/modusloser Interaktion. Nun, Seam Anwendungen sind in der Regel nicht modal im schlichten Sinn des Wortes - im Grunde ist ja die Vermeidung modalen Verhaltens der Anwendung einer der Hauptgründe für Konversationen! Seam Anwendungen können aber (und sind es oft) auf Ebene einer bestimmten Konversation modal. Es ist allgemein bekannt, dass modales Verhalten etwas ist, was nach Möglichkeit vermieden werden sollte; es ist sehr schwer, die Reihenfolge vorherzusehen, in der Ihre Benutzer Dinge werden tun wollen! Es besteht jedoch kein Zweifel darüber, dass das \"stateful\" Modell seinen Platz hat."
+
+#. Tag: para
+#: Jbpm.xml:108
+#, no-c-format
+msgid "The biggest contrast between the two models is the back-button behavior."
+msgstr "Der größte Kontrast zwischen den beiden Modellen liegt im Verhalten der \"Zurück\"-Schaltfläche."
+
+#. Tag: title
+#: Jbpm.xml:114
+#, no-c-format
+msgid "Seam and the back button"
+msgstr "Seam und die \"Zurück\"-Schaltfläche"
+
+#. Tag: para
+#: Jbpm.xml:115
+#, no-c-format
+msgid ""
+"When JSF or Seam navigation rules are used, Seam lets the user freely "
+"navigate via the back, forward and refresh buttons. It is the responsibility "
+"of the application to ensure that conversational state remains internally "
+"consistent when this occurs. Experience with the combination of web "
+"application frameworks like Struts or WebWork - that do not support a "
+"conversational model - and stateless component models like EJB stateless "
+"session beans or the Spring framework has taught many developers that this "
+"is close to impossible to do! However, our experience is that in the context "
+"of Seam, where there is a well-defined conversational model, backed by "
+"stateful session beans, it is actually quite straightforward. Usually it is "
+"as simple as combining the use of <literal>no-conversation-view-id</literal> "
+"with null checks at the beginning of action listener methods. We consider "
+"support for freeform navigation to be almost always desirable."
+msgstr "Wenn JSF- oder Seam-Navigationsregeln benutzt werden, so lässt Seam den Benutzer frei über die \"zurück\", \"vorwärts\" und \"neu laden\" Schaltflächen navigieren. Es obliegt der Verantwortung der Anwendung sicherzustellen, dass der konversationale Status intern konsistent bleibt, wenn dies geschieht. Erfahrung mit der Kombination von Webanwendungs-Frameworks wie Struts oder WebWork - die kein konversationales Modell unterstützen - und \"stateless\" Komponentenmodelle wie EJB \"stateless\" Session-Beans oder das Spring Framework haben vielen Entwicklern gezeigt, dass es so gut wie unmöglich zu bewerkstelligen ist! Unserer Erfahrung nach ist es jedoch im Kontext von Seam recht einfach, wo ein wohldefiniertes konversationales Modell, das von \"stateful\" Session-Beans gestützt wird. In der Regel ist es so einfach wie die Kombination der Verwendung von  <literal>no-conversation-view-id</literal> mit Null-Checks am Anfang von Action-Listener-Methoden. Support fÃ!
 ¼r Freiform-Navigation ist eigentlich immer wünschenswert."
+
+#. Tag: para
+#: Jbpm.xml:118
+#, no-c-format
+msgid ""
+"In this case, the <literal>no-conversation-view-id</literal> declaration "
+"goes in <literal>pages.xml</literal>. It tells Seam to redirect to a "
+"different page if a request originates from a page rendered during a "
+"conversation, and that conversation no longer exists:"
+msgstr "In diesem Fall geht die <literal>no-conversation-view-id</literal> Deklaration in <literal>pages.xml</literal>. Dies teilt Seam mit auf eine andere Seite umzuleiten, wenn eine Anfrage von einer während einer Konversation gerenderten Seite herstammt und diese Konversation nicht mehr existiert:"
+
+#. Tag: programlisting
+#: Jbpm.xml:121
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/checkout.xhtml\" \n"
+"        no-conversation-view-id=\"/main.xhtml\"/&gt;"
+msgstr ""
+"&lt;page view-id=\"/checkout.xhtml\" \n"
+"        no-conversation-view-id=\"/main.xhtml\"/&gt;"
+
+#. Tag: para
+#: Jbpm.xml:122
+#, no-c-format
+msgid ""
+"On the other hand, in the stateful model, backbuttoning is interpreted as an "
+"undefined transition back to a previous state. Since the stateful model "
+"enforces a defined set of transitions from the current state, back buttoning "
+"is be default disallowed in the stateful model! Seam transparently detects "
+"the use of the back button, and blocks any attempt to perform an action from "
+"a previous, \"stale\" page, and simply redirects the user to the \"current\" "
+"page (and displays a faces message). Whether you consider this a feature or "
+"a limitation of the stateful model depends upon your point of view: as an "
+"application developer, it is a feature; as a user, it might be frustrating! "
+"You can enable backbutton navigation from a particular page node by setting "
+"<literal>back=\"enabled\"</literal>."
+msgstr ""
+"Andererseits wird im \"stateful\" Modell die Verwendung der \"zurück\"-Schaltfläche als undefinierte Transition zu einem früheren Status definiert. Da das \"stateful\" Modele einen definierten Satz von Transitions vom aktuellen Status erzwingt, ist die Verwendung der \"zurück\"-Schaltfläche standardmäßig im \"stateful\" Modell nicht gestattet! Seam entdeckt transparent die Verwendung der \"zurück\"-Schaltfläche und blockiert jeden Versuch eine Action von einer vorherigen, \"nicht aktuellen\" Seite durchzuführen und leitet den Benutzer einfach an die \"aktuelle\" Seite um (und zeigt eine Faces-Nachricht an). Ob Sie dies als Feature oder Einschränkung Ihres \"stateful\" Modells sehen hängt von Ihrer Perspektive ab: Als Anwendungsentwickler ist es ein Feature, als Benutzer kann es frustrierend sein! Sie können die \"zurück\"-Schaltflächen Navigation von einem bestimmten Seiten-Node durch Einstellung von "
+"<literal>back=\"enabled\"</literal> aktivieren."
+
+#. Tag: programlisting
+#: Jbpm.xml:125
+#, no-c-format
+msgid ""
+"&lt;page name=\"checkout\" \n"
+"        view-id=\"/checkout.xhtml\" \n"
+"        back=\"enabled\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"checkout\"/&gt;\n"
+"    &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page name=\"checkout\" \n"
+"        view-id=\"/checkout.xhtml\" \n"
+"        back=\"enabled\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"checkout\"/&gt;\n"
+"    &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Jbpm.xml:126
+#, no-c-format
+msgid ""
+"This allows backbuttoning <emphasis>from</emphasis> the <literal>checkout</"
+"literal> state to <emphasis>any previous state!</emphasis>"
+msgstr ""
+"Dies gestattet die Betätigung der \"Zurück\"-Schaltfläche <emphasis>von</emphasis> dem <literal>Checkout</"
+"literal>-Status zu <emphasis>jedem beliebigen Status!</emphasis>"
+
+#. Tag: para
+#: Jbpm.xml:129
+#, no-c-format
+msgid ""
+"Of course, we still need to define what happens if a request originates from "
+"a page rendered during a pageflow, and the conversation with the pageflow no "
+"longer exists. In this case, the <literal>no-conversation-view-id</literal> "
+"declaration goes into the pageflow definition:"
+msgstr "Natürlich müssen wir immer noch definieren was passiert, wenn eine Anfrage von einer während eines Pageflow gerenderten Seite herstammt und die Konversation mit dem Pageflow nicht mehr existiert. In diesem Fall geht die <literal>no-conversation-view-id</literal>-Deklaration in die Pageflow-Definition:"
+
+#. Tag: programlisting
+#: Jbpm.xml:132
+#, no-c-format
+msgid ""
+"&lt;page name=\"checkout\" \n"
+"        view-id=\"/checkout.xhtml\" \n"
+"        back=\"enabled\" \n"
+"        no-conversation-view-id=\"/main.xhtml\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"checkout\"/&gt;\n"
+"    &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page name=\"checkout\" \n"
+"        view-id=\"/checkout.xhtml\" \n"
+"        back=\"enabled\" \n"
+"        no-conversation-view-id=\"/main.xhtml\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"checkout\"/&gt;\n"
+"    &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Jbpm.xml:134
+#, no-c-format
+msgid ""
+"In practice, both navigation models have their place, and you&#39;ll quickly "
+"learn to recognize when to prefer one model over the other."
+msgstr "In der Praxis haben beide Navigationsmodelle ihren Platz, und SIe werden schnell herausfinden, wann welches welchem vorzuziehen ist."
+
+#. Tag: title
+#: Jbpm.xml:142
+#, no-c-format
+msgid "Using jPDL pageflows"
+msgstr "Verwendung von jPDL-Pageflows"
+
+#. Tag: title
+#: Jbpm.xml:144
+#, no-c-format
+msgid "Installing pageflows"
+msgstr "Installation von Pageflows"
+
+#. Tag: para
+#: Jbpm.xml:145
+#, no-c-format
+msgid ""
+"We need to install the Seam jBPM-related components, and tell them where to "
+"find our pageflow definition. We can specify this Seam configuration in "
+"<literal>components.xml</literal>."
+msgstr "Wir müssen die Seam jBPM-bezogenen Komponenten installieren und diesen mitteilen, wo sie unsere Pageflow-Definition finden. Wir können diese Seam-Konfiguration in <literal>components.xml</literal> festlegen."
+
+#. Tag: programlisting
+#: Jbpm.xml:148
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:pageflow-definitions&gt;\n"
+"        &lt;value&gt;pageflow.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:pageflow-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:pageflow-definitions&gt;\n"
+"        &lt;value&gt;pageflow.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:pageflow-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+
+#. Tag: para
+#: Jbpm.xml:149
+#, no-c-format
+msgid ""
+"The first line installs jBPM, the second points to a jPDL-based pageflow "
+"definition."
+msgstr "Die erste Zeile installiert jBPM, die zweite weist auf eine jPDL-basierte Pageflow-Definition."
+
+#. Tag: title
+#: Jbpm.xml:155
+#, no-c-format
+msgid "Starting pageflows"
+msgstr "Pageflows starten"
+
+#. Tag: para
+#: Jbpm.xml:156
+#, no-c-format
+msgid ""
+"We \"start\" a jPDL-based pageflow by specifying the name of the process "
+"definition using a <literal>@Begin</literal>, <literal>@BeginTask</literal> "
+"or <literal>@StartTask</literal> annotation:"
+msgstr "Wir \"starten\" einen jPDL-basierten Pageflow durch Festlegen des Namens der Prozessdefinition unter Verwendung einer <literal>@Begin</literal>, <literal>@BeginTask</literal> oder <literal>@StartTask</literal>-Annotation:"
+
+#. Tag: programlisting
+#: Jbpm.xml:159
+#, no-c-format
+msgid ""
+"@Begin(pageflow=\"numberguess\")\n"
+"public void begin() { ... }"
+msgstr ""
+"@Begin(pageflow=\"numberguess\")\n"
+"public void begin() { ... }"
+
+#. Tag: para
+#: Jbpm.xml:160
+#, no-c-format
+msgid "Alternatively we can start a pageflow using pages.xml:"
+msgstr "Alternativ können wir einen Pageflow mittels pages.xml starten:"
+
+#. Tag: programlisting
+#: Jbpm.xml:163
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"        &lt;begin-conversation pageflow=\"numberguess\"/&gt;\n"
+"    &lt;/page&gt;"
+msgstr ""
+"&lt;page&gt;\n"
+"        &lt;begin-conversation pageflow=\"numberguess\"/&gt;\n"
+"    &lt;/page&gt;"
+
+#. Tag: para
+#: Jbpm.xml:164
+#, no-c-format
+msgid ""
+"If we are beginning the pageflow during the <literal>RENDER_RESPONSE</"
+"literal> phase&mdash;during a <literal>@Factory</literal> or "
+"<literal>@Create</literal> method, for example&mdash;we consider ourselves "
+"to be already at the page being rendered, and use a <literal>&lt;start-"
+"page&gt;</literal> node as the first node in the pageflow, as in the example "
+"above."
+msgstr ""
+"Falls wir einen Pageflow während der <literal>RENDER_RESPONSE</"
+"literal>-Phase&mdash;während einer <literal>@Factory</literal> oder "
+"<literal>@Create</literal>-Methode beginnen, zum Beispiel&mdash;wir glauben bereits auf der im Rendern begriffenen Seite zu sein und einen "
+"<literal>&lt;start-"
+"page&gt;</literal>-Node als den ersten Node im Pageflow, wie im Beispiel oben."
+
+#. Tag: para
+#: Jbpm.xml:167
+#, no-c-format
+msgid ""
+"But if the pageflow is begun as the result of an action listener invocation, "
+"the outcome of the action listener determines which is the first page to be "
+"rendered. In this case, we use a <literal>&lt;start-state&gt;</literal> as "
+"the first node in the pageflow, and declare a transition for each possible "
+"outcome:"
+msgstr "Wenn der Pageflow aber als Ergebnis eines Action-Listener Aufrufs begonnen wurde, so bestimmt das Ergebnis des Action-Listeners, welches die erste Seite ist, die gerendert wird. In diesem Fall verwenden wir ein <literal>&lt;start-state&gt;</literal> als den ersten Node im Pageflow, und deklarieren eine Transition für jedes mögliche Ergebnis:"
+
+#. Tag: programlisting
+#: Jbpm.xml:170
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"viewEditDocument\"&gt;\n"
+"\n"
+"    &lt;start-state name=\"start\"&gt;\n"
+"        &lt;transition name=\"documentFound\" to=\"displayDocument\"/&gt;\n"
+"        &lt;transition name=\"documentNotFound\" to=\"notFound\"/&gt;\n"
+"    &lt;/start-state&gt;\n"
+"    \n"
+"    &lt;page name=\"displayDocument\" view-id=\"/document.jsp\"&gt;\n"
+"        &lt;transition name=\"edit\" to=\"editDocument\"/&gt;\n"
+"        &lt;transition name=\"done\" to=\"main\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"    \n"
+"    ...\n"
+"    \n"
+"    &lt;page name=\"notFound\" view-id=\"/404.jsp\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"    &lt;/page&gt;\n"
+"    \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+"&lt;pageflow-definition name=\"viewEditDocument\"&gt;\n"
+"\n"
+"    &lt;start-state name=\"start\"&gt;\n"
+"        &lt;transition name=\"documentFound\" to=\"displayDocument\"/&gt;\n"
+"        &lt;transition name=\"documentNotFound\" to=\"notFound\"/&gt;\n"
+"    &lt;/start-state&gt;\n"
+"    \n"
+"    &lt;page name=\"displayDocument\" view-id=\"/document.jsp\"&gt;\n"
+"        &lt;transition name=\"edit\" to=\"editDocument\"/&gt;\n"
+"        &lt;transition name=\"done\" to=\"main\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"    \n"
+"    ...\n"
+"    \n"
+"    &lt;page name=\"notFound\" view-id=\"/404.jsp\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"    &lt;/page&gt;\n"
+"    \n"
+"&lt;/pageflow-definition&gt;"
+
+#. Tag: title
+#: Jbpm.xml:174
+#, no-c-format
+msgid "Page nodes and transitions"
+msgstr "Page-Nodes und Transitions"
+
+#. Tag: para
+#: Jbpm.xml:175
+#, no-c-format
+msgid ""
+"Each <literal>&lt;page&gt;</literal> node represents a state where the "
+"system is waiting for user input:"
+msgstr "Jeder <literal>&lt;page&gt;</literal>-Node repräsentiert einen Status, bei dem das System auf Benutzereingabe wartet:"
+
+#. Tag: programlisting
+#: Jbpm.xml:178
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"        &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"        &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Jbpm.xml:179
+#, no-c-format
+msgid ""
+"The <literal>view-id</literal> is the JSF view id. The <literal>&lt;redirect/"
+"&gt;</literal> element has the same effect as <literal>&lt;redirect/&gt;</"
+"literal> in a JSF navigation rule: namely, a post-then-redirect behavior, to "
+"overcome problems with the browser&#39;s refresh button. (Note that Seam "
+"propagates conversation contexts over these browser redirects. So there is "
+"no need for a Ruby on Rails style \"flash\" construct in Seam!)"
+msgstr ""
+"Die <literal>view-id</literal> ist die JSF Ansichts-id. Das <literal>&lt;redirect/"
+"&gt;</literal>-Element hat dieselbe Wirkung wie <literal>&lt;redirect/&gt;</literal> in einer JSF-Navigationsregel: namentlich ,ein post-then-redirect Verhalten, um Probleme mit der \"neu laden\"-Schaltfläche des Browsers zu überwinden. (Beachten Sie, dass Seam Konversationskontexte über diese Browser Umleitungen fortpflanzt. Es wird daher kein \"Ruby on Rails\"artiges \"flash\" Konstrukt in Seam benötigt!)"
+
+#. Tag: para
+#: Jbpm.xml:182
+#, no-c-format
+msgid ""
+"The transition name is the name of a JSF outcome triggered by clicking a "
+"command button or command link in <literal>numberGuess.jsp</literal>."
+msgstr "Der Transitionname ist der Name eines JSF-Ergebnisses, das durch Klicken einer Befehlsschaltfläche oder eines Befehls-Links in <literal>numberGuess.jsp</literal> ausgelöst wird."
+
+#. Tag: programlisting
+#: Jbpm.xml:185
+#, no-c-format
+msgid "&lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"guess\"/&gt;"
+msgstr "&lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"guess\"/&gt;"
+
+#. Tag: para
+#: Jbpm.xml:186
+#, no-c-format
+msgid ""
+"When the transition is triggered by clicking this button, jBPM will activate "
+"the transition action by calling the <literal>guess()</literal> method of "
+"the <literal>numberGuess</literal> component. Notice that the syntax used "
+"for specifying actions in the jPDL is just a familiar JSF EL expression, and "
+"that the transition action handler is just a method of a Seam component in "
+"the current Seam contexts. So we have exactly the same event model for jBPM "
+"events that we already have for JSF events! (The <emphasis>One Kind of "
+"Stuff</emphasis> principle.)"
+msgstr ""
+"Wenn die Transition durch Klicken dieser Schaltfläche ausgelöst wird, aktiviert jBPM die Transition-Action durch Aufruf der <literal>numberGuess</literal>-Komponente. Beachten Sie, dass es sich bei der Actions in der jPDL festlegenden Syntax nur um einen vertrauten JSF EL-Ausdruck handelt und dass der Transition-Action-Handler nur eine Methode einer Seam-Komponente in den aktuellen Seam Kontexten ist. So dass wir genau dasselbe Ereignismodell für jBPM-Ereignisse haben, das wir schon für JSF-Ereignisse haben! (Das <emphasis>One Kind of "
+"Stuff</emphasis>-Prinzip.)"
+
+#. Tag: para
+#: Jbpm.xml:189
+#, no-c-format
+msgid ""
+"In the case of a null outcome (for example, a command button with no "
+"<literal>action</literal> defined), Seam will signal the transition with no "
+"name if one exists, or else simply redisplay the page if all transitions "
+"have names. So we could slightly simplify our example pageflow and this "
+"button:"
+msgstr "Im Falle eines Null-Ergebnisses (zum Beispiel einer Befehlsschaltfläche ohne definierte <literal>action</literal>), sendet Seam der Transition ohne Namen ein Signal falls vorhanden oder zeigt andernfalls die Seite erneut an, falls alle Transitions Namen besitzen. Wir könnten daher unser Pageflow-Beispiel und diese Schaltfläche etwas vereinfachen:"
+
+#. Tag: programlisting
+#: Jbpm.xml:192
+#, no-c-format
+msgid "&lt;h:commandButton type=\"submit\" value=\"Guess\"/&gt;"
+msgstr "&lt;h:commandButton type=\"submit\" value=\"Guess\"/&gt;"
+
+#. Tag: para
+#: Jbpm.xml:193
+#, no-c-format
+msgid "Would fire the following un-named transition:"
+msgstr "Würde die folgende unbenannte Transition starten: "
+
+#. Tag: programlisting
+#: Jbpm.xml:196
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"evaluateGuess\"&gt;\n"
+"        &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"evaluateGuess\"&gt;\n"
+"        &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Jbpm.xml:197
+#, no-c-format
+msgid ""
+"It is even possible to have the button call an action method, in which case "
+"the action outcome will determine the transition to be taken:"
+msgstr "Es ist sogar möglich, die Schaltfläche eine Action Methode aufrufen zu lassen, in welchem Fall das Action Ergebnis die zu nehmende Transition bestimmt:"
+
+#. Tag: programlisting
+#: Jbpm.xml:200
+#, no-c-format
+msgid ""
+"&lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"#{numberGuess."
+"guess}\"/&gt;"
+msgstr ""
+"&lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"#{numberGuess."
+"guess}\"/&gt;"
+
+#. Tag: programlisting
+#: Jbpm.xml:201
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;transition name=\"correctGuess\" to=\"win\"/&gt;\n"
+"    &lt;transition name=\"incorrectGuess\" to=\"evaluateGuess\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;transition name=\"correctGuess\" to=\"win\"/&gt;\n"
+"    &lt;transition name=\"incorrectGuess\" to=\"evaluateGuess\"/&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Jbpm.xml:202
+#, no-c-format
+msgid ""
+"However, this is considered an inferior style, since it moves responsibility "
+"for controlling the flow out of the pageflow definition and back into the "
+"other components. It is much better to centralize this concern in the "
+"pageflow itself."
+msgstr "Dies gilt jedoch als schlechter Stil, da es die Verantwortung für Kontrolle des Flows aus der Pageflow Definition herausnimmt und zurück an andere Komponenten gibt. Es ist wesentlich besser, dieses Problem im Pageflow selbst zu zentralisieren."
+
+#. Tag: title
+#: Jbpm.xml:208
+#, no-c-format
+msgid "Controlling the flow"
+msgstr "Den Flow steuern"
+
+#. Tag: para
+#: Jbpm.xml:209
+#, no-c-format
+msgid ""
+"Usually, we don&#39;t need the more powerful features of jPDL when defining "
+"pageflows. We do need the <literal>&lt;decision&gt;</literal> node, however:"
+msgstr "Normalerweise benötigen wir keine leistungsfähigeren Features von jPDL für die Definition von Pageflows. Wir brauchen jedoch den <literal>&lt;decision&gt;</literal>-Node:"
+
+#. Tag: programlisting
+#: Jbpm.xml:212
+#, no-c-format
+msgid ""
+"&lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess.correctGuess}"
+"\"&gt;\n"
+"    &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"    &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"&lt;/decision&gt;"
+msgstr ""
+"&lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess.correctGuess}"
+"\"&gt;\n"
+"    &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"    &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"&lt;/decision&gt;"
+
+#. Tag: para
+#: Jbpm.xml:213
+#, no-c-format
+msgid "A decision is made by evaluating a JSF EL expression in the Seam contexts."
+msgstr "Eine Entscheidung wird durch Evaluierung eines JSF EL Ausdrucks in den Seam Kontexts getroffen."
+
+#. Tag: title
+#: Jbpm.xml:219
+#, no-c-format
+msgid "Ending the flow"
+msgstr "Den Flow beenden"
+
+#. Tag: para
+#: Jbpm.xml:220
+#, no-c-format
+msgid ""
+"We end the conversation using <literal>&lt;end-conversation&gt;</literal> or "
+"<literal>@End</literal>. (In fact, for readability, use of <emphasis>both</"
+"emphasis> is encouraged.)"
+msgstr ""
+"Wir beenden die Konversation mittels <literal>&lt;end-conversation&gt;</literal> oder "
+"<literal>@End</literal>. (Genau genommen wird zur Verbesserung der Lesbarkeit die Verwendung <emphasis>beider</emphasis> empfohlen)."
+
+#. Tag: programlisting
+#: Jbpm.xml:223
+#, no-c-format
+msgid ""
+"&lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;end-conversation/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;end-conversation/&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Jbpm.xml:224
+#, no-c-format
+msgid ""
+"Optionally, we can end a task, specify a jBPM <literal>transition</literal> "
+"name. In this case, Seam will signal the end of the current task in the "
+"overarching business process."
+msgstr "Optional können wir eine Task beenden, einen jBPM <literal>transition</literal>-Namen festlegen. In diesem Fall signalisiert Seam das Ende der aktuellen Task im überspannenden Business Prozess."
+
+#. Tag: programlisting
+#: Jbpm.xml:227
+#, no-c-format
+msgid ""
+"&lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;end-task transition=\"success\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;end-task transition=\"success\"/&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: title
+#: Jbpm.xml:233
+#, no-c-format
+msgid "Business process management in Seam"
+msgstr "Management von Business-Prozessen in Seam"
+
+#. Tag: para
+#: Jbpm.xml:234
+#, no-c-format
+msgid ""
+"A business process is a well-defined set of tasks that must be performed by "
+"users or software systems according to well-defined rules about "
+"<emphasis>who</emphasis> can perform a task, and <emphasis>when</emphasis> "
+"it should be performed. Seam&#39;s jBPM integration makes it easy to display "
+"lists of tasks to users and let them manage their tasks. Seam also lets the "
+"application store state associated with the business process in the "
+"<literal>BUSINESS_PROCESS</literal> context, and have that state made "
+"persistent via jBPM variables."
+msgstr ""
+"Bei einem Business Prozess handelt es sich um einen wohldefinierten Satz von Tasks, die von Benutzern oder Software-Systemen gemäß wohldefinierten Regeln entsprechend <emphasis>wer</emphasis> eine Task durchführen kann und <emphasis>wann</emphasis> "
+"dies geschehen soll durchgeführt wird. Seam&#39;s jBPM-Integration macht die Anzeige von Task-Listen an Benutzer einfach, so dass diese bequem ihre Tasks verwalten können. Seam lässt die Anwendung auch mit dem Business Prozess assoziierten Status im <literal>BUSINESS_PROCESS</literal>-Kontext speichern und diesen Status via jBPM-Variablen persistieren."
+
+#. Tag: para
+#: Jbpm.xml:237
+#, no-c-format
+msgid ""
+"A simple business process definition looks much the same as a page flow "
+"definition (<emphasis>One Kind of Stuff</emphasis>), except that instead of "
+"<literal>&lt;page&gt;</literal> nodes, we have <literal>&lt;task-node&gt;</"
+"literal> nodes. In a long-running business process, the wait states are "
+"where the system is waiting for some user to log in and perform a task."
+msgstr ""
+"Eine einfache Business Prozess Definition sieht einer Page Flow "
+"Definition sehr ähnlich(<emphasis>sehr ähnliche Sache</emphasis>), außer dass es sich statt um <literal>&lt;page&gt;</literal>-Nodes um <literal>&lt;task-node&gt;</literal>-Nodes handelt. In einem lange laufenden Business Prozess, ist der Wartestatus immer der Status, während dessen das System darauf wartet, dass ein Benutzer sich anmeldet und eine Task durchführt."
+
+#. Tag: programlisting
+#: Jbpm.xml:240
+#, no-c-format
+msgid ""
+"&lt;process-definition name=\"todo\"&gt;\n"
+"   \n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"todo\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;task-node name=\"todo\"&gt;\n"
+"      &lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"         &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"      &lt;/task&gt;\n"
+"      &lt;transition to=\"done\"/&gt;\n"
+"   &lt;/task-node&gt;\n"
+"   \n"
+"   &lt;end-state name=\"done\"/&gt;\n"
+"   \n"
+"&lt;/process-definition&gt;"
+msgstr ""
+"&lt;process-definition name=\"todo\"&gt;\n"
+"   \n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"todo\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;task-node name=\"todo\"&gt;\n"
+"      &lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"         &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"      &lt;/task&gt;\n"
+"      &lt;transition to=\"done\"/&gt;\n"
+"   &lt;/task-node&gt;\n"
+"   \n"
+"   &lt;end-state name=\"done\"/&gt;\n"
+"   \n"
+"&lt;/process-definition&gt;"
+
+#. Tag: para
+#: Jbpm.xml:251
+#, no-c-format
+msgid ""
+"It is perfectly possible that we might have both jPDL business process "
+"definitions and jPDL pageflow definitions in the same project. If so, the "
+"relationship between the two is that a single <literal>&lt;task&gt;</"
+"literal> in a business process corresponds to a whole pageflow <literal>&lt;"
+"pageflow-definition&gt;</literal>"
+msgstr ""
+"Es ist sehr gut möglich, dass wir sowohl jPDL Business Prozess Definitionen und jPDL Pageflow Definitions in demselben Projekt haben. Ist dies der Fall, so ist die Beziehung zwischen den beiden, dass eine einzelne <literal>&lt;task&gt;</literal> in einem Business Prozess einem ganzen Pageflow <literal>&lt;"
+"pageflow-definition&gt;</literal> entspricht"
+
+#. Tag: title
+#: Jbpm.xml:256
+#, no-c-format
+msgid "Using jPDL business process definitions"
+msgstr "Verwendung von jPDL Business-Prozess Definitionen"
+
+#. Tag: title
+#: Jbpm.xml:258
+#, no-c-format
+msgid "Installing process definitions"
+msgstr "Installation von Prozessdefinitionen"
+
+#. Tag: para
+#: Jbpm.xml:259
+#, no-c-format
+msgid ""
+"We need to install jBPM, and tell it where to find the business process "
+"definitions:"
+msgstr ""
+"Wir müssen jBPM installieren und ihm mitteilen, wo es die Business Prozess "
+"Definitionen findet:"
+
+#. Tag: programlisting
+#: Jbpm.xml:262
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;todo.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;todo.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+
+#. Tag: title
+#: Jbpm.xml:266
+#, no-c-format
+msgid "Initializing actor ids"
+msgstr "Initialisierung von \"actor\" ids"
+
+#. Tag: para
+#: Jbpm.xml:267
+#, no-c-format
+msgid ""
+"We always need to know what user is currently logged in. jBPM \"knows\" "
+"users by their <emphasis>actor id</emphasis> and <emphasis>group actor ids</"
+"emphasis>. We specify the current actor ids using the built in Seam "
+"component named <literal>actor</literal>:"
+msgstr ""
+"Wir müssen immer wissen, welcher Benutzer aktuell angemeldet ist. jBPM \"kennt\" Benutzer aufgrund deren <emphasis>Actor-id</emphasis> und <emphasis>Group-Actor-ids</"
+"emphasis>. Wir legen die aktuellen Actor-ids mittels der eingebauten Seam-Komponent namens <literal>actor</literal>fest:"
+
+#. Tag: programlisting
+#: Jbpm.xml:270
+#, no-c-format
+msgid ""
+"@In Actor actor;\n"
+"\n"
+"public String login() {\n"
+"    ...\n"
+"    actor.setId( user.getUserName() );\n"
+"    actor.getGroupActorIds().addAll( user.getGroupNames() );\n"
+"    ...\n"
+"}"
+msgstr ""
+"@In Actor actor;\n"
+"\n"
+"public String login() {\n"
+"    ...\n"
+"    actor.setId( user.getUserName() );\n"
+"    actor.getGroupActorIds().addAll( user.getGroupNames() );\n"
+"    ...\n"
+"}"
+
+#. Tag: title
+#: Jbpm.xml:274
+#, no-c-format
+msgid "Initiating a business process"
+msgstr "Initiieren eines Business-Prozesses"
+
+#. Tag: para
+#: Jbpm.xml:275
+#, no-c-format
+msgid ""
+"To initiate a business process instance, we use the <literal>@CreateProcess</"
+"literal> annotation:"
+msgstr "Um eine Business-Prozess Instanz zu initiieren, verwenden wir die <literal>@CreateProcess</literal>-Annotation:"
+
+#. Tag: programlisting
+#: Jbpm.xml:278
+#, no-c-format
+msgid ""
+"@CreateProcess(definition=\"todo\")\n"
+"public void createTodo() { ... }"
+msgstr ""
+"@CreateProcess(definition=\"todo\")\n"
+"public void createTodo() { ... }"
+
+#. Tag: para
+#: Jbpm.xml:279
+#, no-c-format
+msgid "Alternatively we can initiate a business process using pages.xml:"
+msgstr "Alternativ können wir einen Business-Prozess mittels pages.xml initiieren:"
+
+#. Tag: programlisting
+#: Jbpm.xml:282
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;create-process definition=\"todo\" /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page&gt;\n"
+"    &lt;create-process definition=\"todo\" /&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: title
+#: Jbpm.xml:286
+#, no-c-format
+msgid "Task assignment"
+msgstr "Task-Zuordnung"
+
+#. Tag: para
+#: Jbpm.xml:287
+#, no-c-format
+msgid ""
+"When a process starts, task instances are created. These must be assigned to "
+"users or user groups. We can either hardcode our actor ids, or delegate to a "
+"Seam component:"
+msgstr "Wenn ein Prozess beginnt werden Task-Instanzen erstellt. Diese müssen Benutzern und Benutzergruppen zugewiesen werden. Wir können unsere Actor-IDs entweder hardcodieren oder an eine Seam-Komponente delegieren:"
+
+#. Tag: programlisting
+#: Jbpm.xml:290
+#, no-c-format
+msgid ""
+"&lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"    &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"&lt;/task&gt;"
+msgstr ""
+"&lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"    &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"&lt;/task&gt;"
+
+#. Tag: para
+#: Jbpm.xml:291
+#, no-c-format
+msgid ""
+"In this case, we have simply assigned the task to the current user. We can "
+"also assign tasks to a pool:"
+msgstr "In diesem Fall haben wir die Task einfach dem aktuellen Benutzer zugewiesen. Wir können Tasks einem Pool zuweisen:"
+
+#. Tag: programlisting
+#: Jbpm.xml:294
+#, no-c-format
+msgid ""
+"&lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"    &lt;assignment pooled-actors=\"employees\"/&gt;\n"
+"&lt;/task&gt;"
+msgstr ""
+"&lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"    &lt;assignment pooled-actors=\"employees\"/&gt;\n"
+"&lt;/task&gt;"
+
+#. Tag: title
+#: Jbpm.xml:298
+#, no-c-format
+msgid "Task lists"
+msgstr "Task-Listen"
+
+#. Tag: para
+#: Jbpm.xml:299
+#, no-c-format
+msgid ""
+"Several built-in Seam components make it easy to display task lists. The "
+"<literal>pooledTaskInstanceList</literal> is a list of pooled tasks that "
+"users may assign to themselves:"
+msgstr "Mehrere eingebaute Seam Komponenten machen es einfach Task-Listen anzuzeigen. Bei <literal>pooledTaskInstanceList</literal> handelt es sich um eine Liste gepoolter Tasks, die Benutzer sich selbst zuweisen können:"
+
+#. Tag: programlisting
+#: Jbpm.xml:302
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{pooledTaskInstanceList}\" var=\"task\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Description&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{task.description}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link action=\"#{pooledTask.assignToCurrentActor}\" value="
+"\"Assign\" taskInstance=\"#{task}\"/&gt;\n"
+"    &lt;/h:column&gt;                    \n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+"&lt;h:dataTable value=\"#{pooledTaskInstanceList}\" var=\"task\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Description&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{task.description}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link action=\"#{pooledTask.assignToCurrentActor}\" value="
+"\"Assign\" taskInstance=\"#{task}\"/&gt;\n"
+"    &lt;/h:column&gt;                    \n"
+"&lt;/h:dataTable&gt;"
+
+#. Tag: para
+#: Jbpm.xml:303
+#, no-c-format
+msgid ""
+"Note that instead of <literal>&lt;s:link&gt;</literal> we could have used a "
+"plain JSF <literal>&lt;h:commandLink&gt;</literal>:"
+msgstr ""
+"Beachten Sie, dass wir statt <literal>&lt;s:link&gt;</literal> ein einfaches "
+"JSF <literal>&lt;h:commandLink&gt;</literal> hätten verwenden können:"
+
+#. Tag: programlisting
+#: Jbpm.xml:306
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"#{pooledTask.assignToCurrentActor}\"&gt; \n"
+"    &lt;f:param name=\"taskId\" value=\"#{task.id}\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+"&lt;h:commandLink action=\"#{pooledTask.assignToCurrentActor}\"&gt; \n"
+"    &lt;f:param name=\"taskId\" value=\"#{task.id}\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+
+#. Tag: para
+#: Jbpm.xml:307
+#, no-c-format
+msgid ""
+"The <literal>pooledTask</literal> component is a built-in component that "
+"simply assigns the task to the current user."
+msgstr "Die <literal>pooledTask</literal>-Komponente eine eingebaute Komponente, die die Task einfach dem aktuellen Benutzer zuweist."
+
+#. Tag: para
+#: Jbpm.xml:310
+#, no-c-format
+msgid ""
+"The <literal>taskInstanceListForType</literal> component includes tasks of a "
+"particular type that are assigned to the current user:"
+msgstr "Die <literal>taskInstanceListForType</literal>-Komponente beinhaltet Tasks eines bestimmten Typs, die dem aktuellen Benutzer zugewiesen:"
+
+#. Tag: programlisting
+#: Jbpm.xml:313
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{taskInstanceListForType[&#39;todo&#39;]}\" var="
+"\"task\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Description&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{task.description}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link action=\"#{todoList.start}\" value=\"Start Work\" "
+"taskInstance=\"#{task}\"/&gt;\n"
+"    &lt;/h:column&gt;                    \n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+"&lt;h:dataTable value=\"#{taskInstanceListForType[&#39;todo&#39;]}\" var="
+"\"task\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Description&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{task.description}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link action=\"#{todoList.start}\" value=\"Start Work\" "
+"taskInstance=\"#{task}\"/&gt;\n"
+"    &lt;/h:column&gt;                    \n"
+"&lt;/h:dataTable&gt;"
+
+#. Tag: title
+#: Jbpm.xml:317
+#, no-c-format
+msgid "Performing a task"
+msgstr "Eine Task durchführen"
+
+#. Tag: para
+#: Jbpm.xml:318
+#, no-c-format
+msgid ""
+"To begin work on a task, we use either <literal>@StartTask</literal> or "
+"<literal>@BeginTask</literal> on the listener method:"
+msgstr ""
+"Um die Arbeit an einer Task zu beginnen, verwenden wir entweder <literal>@StartTask</literal> oder "
+"<literal>@BeginTask</literal> an der Listener-Methode:"
+
+#. Tag: programlisting
+#: Jbpm.xml:321
+#, no-c-format
+msgid ""
+"@StartTask\n"
+"public String start() { ... }"
+msgstr ""
+"@StartTask\n"
+"public String start() { ... }"
+
+#. Tag: para
+#: Jbpm.xml:322
+#, no-c-format
+msgid "Alternatively we can begin work on a task using pages.xml:"
+msgstr "Alternativ können wir die Arbeit an einer Task mittels pages.xml beginnen:"
+
+#. Tag: programlisting
+#: Jbpm.xml:325
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;start-task /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page&gt;\n"
+"    &lt;start-task /&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Jbpm.xml:326
+#, no-c-format
+msgid ""
+"These annotations begin a special kind of conversation that has significance "
+"in terms of the overarching business process. Work done by this conversation "
+"has access to state held in the business process context."
+msgstr "Diese Annotationen beginnen eine besondere Art der Konversation, die hinsichtlich des überspannenden Business Prozesses von Bedeutung ist. Von dieser Konversation verrichtete Arbeit hat Zugriff auf im Kontext des Business Prozesses gehaltenen Status."
+
+#. Tag: para
+#: Jbpm.xml:329
+#, no-c-format
+msgid ""
+"If we end the conversation using <literal>@EndTask</literal>, Seam will "
+"signal the completion of the task:"
+msgstr "Wenn wir die Konversation mittels <literal>@EndTask</literal> beenden, signalisiert Seam die Vervollständigung der Task:"
+
+#. Tag: programlisting
+#: Jbpm.xml:332
+#, no-c-format
+msgid ""
+"@EndTask(transition=\"completed\")\n"
+"public String completed() { ... }"
+msgstr ""
+"@EndTask(transition=\"completed\")\n"
+"public String completed() { ... }"
+
+#. Tag: para
+#: Jbpm.xml:333
+#, no-c-format
+msgid "Alternatively we can use pages.xml:"
+msgstr "Alternativ können wir pages.xml verwenden:"
+
+#. Tag: programlisting
+#: Jbpm.xml:336
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;end-task transition=\"completed\" /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page&gt;\n"
+"    &lt;end-task transition=\"completed\" /&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Jbpm.xml:337
+#, no-c-format
+msgid ""
+"(Alternatively, we could have used <literal>&lt;end-conversation&gt;</"
+"literal> as shown above.)"
+msgstr "(Alternativ hätten wir <literal>&lt;end-conversation&gt;</literal> wie oben gezeigt verwenden können)."
+
+#. Tag: para
+#: Jbpm.xml:340
+#, no-c-format
+msgid ""
+"At this point, jBPM takes over and continues executing the business process "
+"definition. (In more complex processes, several tasks might need to be "
+"completed before process execution can resume.)"
+msgstr "An diesem Punkt übernimmt jBPM und fährt mit der Ausführung der Business Prozess Definition fort. (In komplexeren Prozesses ist es möglich, dass mehrere Tasks abgeschlossen werden müssen, ehe die Prozessausführung fortgesetzt werden kann.)"
+
+#. Tag: para
+#: Jbpm.xml:344
+#, no-c-format
+msgid ""
+"Please refer to the jBPM documentation for a more thorough overview of the "
+"sophisticated features that jBPM provides for managing complex business "
+"processes."
+msgstr "In der jBPM-Dokumentation finden Sie einen gründlicheren Überblick über die fortgeschrittenen Features die jBPM für das Management komplexer Business Prozesse liefert."
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Jms.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Jms.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Jms.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,797 @@
+# translation of Jms.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Jasna Dimanoski <jdimanos at redhat.com>, 2007, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Jms\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-02-04 23:29+0000\n"
+"PO-Revision-Date: 2008-03-26 16:45+1000\n"
+"Last-Translator: Jasna Dimanoski <jdimanos at redhat.com>\n"
+"Language-Team:  <de at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Jms.xml:6
+#, no-c-format
+msgid "Asynchronicity and messaging"
+msgstr "Asynchronizität und Messaging"
+
+#. Tag: para
+#: Jms.xml:7
+#, no-c-format
+msgid ""
+"Seam makes it very easy to perform work asynchronously from a web request. "
+"When most people think of asynchronicity in Java EE, they think of using "
+"JMS. This is certainly one way to approach the problem in Seam, and is the "
+"right way when you have strict and well-defined quality of service "
+"requirements. Seam makes it easy to send and recieve JMS messages using Seam "
+"components."
+msgstr ""
+"Seam macht es sehr einfach Arbeiten asynchron zu einer Web-Anfrage "
+"auszuführen. Die meisten Menschen denken bei Asynchronizität bei Java EE an "
+"die Verwendung von JMS. Dies ist sicherlich eine Herangehensweise an das "
+"Problem in Seam, und ist der richtige Weg, wenn Sie strenge und gut "
+"definierte Anforderungen an die Service-Qualität besitzen. Mit Seam ist es "
+"unter Verwendung von Seam Komponenten leicht, JMS-Nachrichten zu verschicken "
+"und zu empfangen."
+
+#. Tag: para
+#: Jms.xml:10
+#, no-c-format
+msgid ""
+"But for many usecases, JMS is overkill. Seam layers a simple asynchronous "
+"method and event facility over the EJB 3.0 timer service."
+msgstr ""
+"Für viele Anwendungsfälle jedoch ist JMS des Guten zu viel. Seam schichtet "
+"eine einfache asynchrone Methode und \"Event-Facility\" über den EJB 3.0 "
+"Timer-Dienst."
+
+#. Tag: title
+#: Jms.xml:13
+#, no-c-format
+msgid "Asynchronicity"
+msgstr "Asynchronizität"
+
+#. Tag: para
+#: Jms.xml:14
+#, no-c-format
+msgid ""
+"Asynchronous events and method calls have the same quality of service "
+"expectations as the container&#39;s EJB timer service. If you&#39;re not "
+"familiar with the Timer service, don&#39;t worry, you don&#39;t need to "
+"interact with it directly if you want to use asynchronous methods in Seam."
+msgstr ""
+"Asynchrone Ereignis- und Methodenaufrufe haben diesselbe Qualität von "
+"Diensterwartungen wie der EJB-Timer-Dienst des Containers . Falls Ihnen der Timer-Dienst nicht vertraut ist, machen Sie sich keine Sorgen - Sie müssen nicht damit interagieren, wenn Sie asynchrone Methoden in Seam verwenden möchten."
+
+#. Tag: para
+#: Jms.xml:17
+#, no-c-format
+msgid ""
+"To use asynchronous methods and events, you need to add the following line "
+"to <literal>components.xml</literal>:"
+msgstr ""
+"Um asynchrone Methoden und Ereignisse zu verwenden, müssen Sie "
+"<literal>components.xml</literal> die folgende Zeile hinzufügen:"
+
+#. Tag: programlisting
+#: Jms.xml:20
+#, no-c-format
+msgid "&lt;core:dispatcher/&gt;"
+msgstr "&lt;core:dispatcher/&gt;"
+
+#. Tag: para
+#: Jms.xml:21
+#, no-c-format
+msgid ""
+"Note that this functionality is not available in environments which do not "
+"support EJB 3.0."
+msgstr ""
+"Bitte beachten Sie, dass diese Funktionalität nicht in Umgebungen verfügbar "
+"ist, die EJB 3.0 nicht unterstützen."
+
+#. Tag: title
+#: Jms.xml:24
+#, no-c-format
+msgid "Asynchronous methods"
+msgstr "Asynchrone Methoden"
+
+#. Tag: para
+#: Jms.xml:25
+#, no-c-format
+msgid ""
+"In simplest form, an asynchronous call just lets a method call be processed "
+"asynchronously (in a different thread) from the caller. We usually use an "
+"asynchronous call when we want to return an immediate response to the "
+"client, and let some expensive work be processed in the background. This "
+"pattern works very well in applications which use AJAX, where the client can "
+"automatically poll the server for the result of the work."
+msgstr ""
+"In seiner einfachsten Form erlaubt ein asynchroner Aufruf die asynchrone "
+"Bearbeitung eines Methodenaufrufs (in einem anderen Thread) vom Anrufer. Ein "
+"asynchroner Aufruf wird in der Regel verwendet, wenn sofort auf den Client "
+"reagiert werden soll, während im Hintergrund umfassende Arbeiten ablaufen. "
+"Dieses Muster funktioniert besonders gut bei Anwendungen, die AJAX "
+"verwenden, wo der Client den Server automatisch nach den Ergebnissen der "
+"Arbeit pollen kann."
+
+#. Tag: para
+#: Jms.xml:28
+#, no-c-format
+msgid ""
+"For EJB components, we annotate the local interface to specify that a method "
+"is processed asynchronously."
+msgstr ""
+"Für EJB-Komponenten annotieren wir das lokale Interface, um festzulegen, "
+"dass eine Methode asynchron verarbeitet wird."
+
+#. Tag: programlisting
+#: Jms.xml:31
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public void processPayment(Payment payment);\n"
+"}"
+msgstr ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public void processPayment(Payment payment);\n"
+"}"
+
+#. Tag: para
+#: Jms.xml:32
+#, no-c-format
+msgid ""
+"(For JavaBean components we can annotate the component implementation class "
+"if we like.)"
+msgstr ""
+"(Für JavaBean Komponenten kann auf Wunsch die Implementierungsklasse der "
+"Komponente annotiert werden)."
+
+#. Tag: para
+#: Jms.xml:35
+#, no-c-format
+msgid "The use of asynchronicity is transparent to the bean class:"
+msgstr "Die Verwendung von Asynchronizität ist für die Bean-Klasse transparent:"
+
+#. Tag: programlisting
+#: Jms.xml:38
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"paymentHandler\")\n"
+"public class PaymentHandlerBean implements PaymentHandler\n"
+"{\n"
+"    public void processPayment(Payment payment)\n"
+"    {\n"
+"        //do some work!\n"
+"    }\n"
+"}"
+msgstr ""
+"@Stateless\n"
+"@Name(\"paymentHandler\")\n"
+"public class PaymentHandlerBean implements PaymentHandler\n"
+"{\n"
+"    public void processPayment(Payment payment)\n"
+"    {\n"
+"        //do some work!\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Jms.xml:39
+#, no-c-format
+msgid "And also transparent to the client:"
+msgstr "Und auch für den Client transparent:"
+
+#. Tag: programlisting
+#: Jms.xml:42
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String pay()\n"
+"    {\n"
+"        paymentHandler.processPayment( new Payment(bill) );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String pay()\n"
+"    {\n"
+"        paymentHandler.processPayment( new Payment(bill) );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Jms.xml:43
+#, no-c-format
+msgid ""
+"The asynchronous method is processed in a completely new event context and "
+"does not have access to the session or conversation context state of the "
+"caller. However, the business process context <emphasis>is</emphasis> "
+"propagated."
+msgstr ""
+"Die asynchrone Methode wird in einem völlig neuen Ereigniskontext "
+"verarbeitet und hat keinen Zugriff auf die Session oder den "
+"Konversationskontextstatus des Aufrufers. Jedoch <emphasis>wird</emphasis> "
+"der Business-Vorgangskontext fortgepflanzt."
+
+#. Tag: para
+#: Jms.xml:46
+#, no-c-format
+msgid ""
+"Asynchronous method calls may be scheduled for later execution using the "
+"<literal>@Duration</literal>, <literal>@Expiration</literal> and "
+"<literal>@IntervalDuration</literal> annotations."
+msgstr ""
+"Asynchrone Methodenaufrufe können für die Ausführung zu einem späteren "
+"Zeitpunkt terminiert werden, indem man die <literal>@Duration</literal>, "
+"<literal>@Expiration</literal> und <literal>@IntervalDuration</literal>-"
+"Annotationen verwendet."
+
+#. Tag: programlisting
+#: Jms.xml:49
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public void processScheduledPayment(Payment payment, @Expiration Date "
+"date);\n"
+"\n"
+"    @Asynchronous\n"
+"    public void processRecurringPayment(Payment payment, @Expiration Date "
+"date, \n"
+"      @IntervalDuration Long interval)&#39;\n"
+"}"
+msgstr ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public void processScheduledPayment(Payment payment, @Expiration Date "
+"date);\n"
+"\n"
+"    @Asynchronous\n"
+"    public void processRecurringPayment(Payment payment, @Expiration Date "
+"date, \n"
+"      @IntervalDuration Long interval)&#39;\n"
+"}"
+
+#. Tag: programlisting
+#: Jms.xml:50
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String schedulePayment()\n"
+"    {\n"
+"        paymentHandler.processScheduledPayment( new Payment(bill), bill."
+"getDueDate() );\n"
+"        return \"success\";\n"
+"    }\n"
+"\n"
+"    public String scheduleRecurringPayment()\n"
+"    {\n"
+"        paymentHandler.processRecurringPayment( new Payment(bill), bill."
+"getDueDate(), ONE_MONTH );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String schedulePayment()\n"
+"    {\n"
+"        paymentHandler.processScheduledPayment( new Payment(bill), bill."
+"getDueDate() );\n"
+"        return \"success\";\n"
+"    }\n"
+"\n"
+"    public String scheduleRecurringPayment()\n"
+"    {\n"
+"        paymentHandler.processRecurringPayment( new Payment(bill), bill."
+"getDueDate(), ONE_MONTH );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Jms.xml:51
+#, no-c-format
+msgid ""
+"Both client and server may access the <literal>Timer</literal> object "
+"associated with the invocation."
+msgstr ""
+"Sowohl Client als auch Server können auf das mit dem Aufruf assoziierte "
+"<literal>Timer</literal>-Objekt zugreifen."
+
+#. Tag: programlisting
+#: Jms.xml:54
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public Timer processScheduledPayment(Payment payment, @Expiration Date "
+"date);\n"
+"}"
+msgstr ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public Timer processScheduledPayment(Payment payment, @Expiration Date "
+"date);\n"
+"}"
+
+#. Tag: programlisting
+#: Jms.xml:55
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"paymentHandler\")\n"
+"public class PaymentHandlerBean implements PaymentHandler\n"
+"{\n"
+"    @In Timer timer;\n"
+"    \n"
+"    public Timer processScheduledPayment(Payment payment, @Expiration Date "
+"date)\n"
+"    {\n"
+"        //do some work!\n"
+"        \n"
+"        return timer; //note that return value is completely ignored\n"
+"    }\n"
+"\n"
+"}"
+msgstr ""
+"@Stateless\n"
+"@Name(\"paymentHandler\")\n"
+"public class PaymentHandlerBean implements PaymentHandler\n"
+"{\n"
+"    @In Timer timer;\n"
+"    \n"
+"    public Timer processScheduledPayment(Payment payment, @Expiration Date "
+"date)\n"
+"    {\n"
+"        //do some work!\n"
+"        \n"
+"        return timer; //note that return value is completely ignored\n"
+"    }\n"
+"\n"
+"}"
+
+#. Tag: programlisting
+#: Jms.xml:56
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String schedulePayment()\n"
+"    {\n"
+"        Timer timer = paymentHandler.processScheduledPayment( new Payment"
+"(bill), bill.getDueDate() );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String schedulePayment()\n"
+"    {\n"
+"        Timer timer = paymentHandler.processScheduledPayment( new Payment"
+"(bill), bill.getDueDate() );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Jms.xml:57
+#, no-c-format
+msgid "Asynchronous methods cannot return any other value to the caller."
+msgstr "Asynchrone Methoden können keinen anderen Wert an den Aufrufer widergeben."
+
+#. Tag: title
+#: Jms.xml:60
+#, no-c-format
+msgid "Asynchronous events"
+msgstr "Asynchrone Ereignisse"
+
+#. Tag: para
+#: Jms.xml:61
+#, no-c-format
+msgid ""
+"Component-driven events may also be asynchronous. To raise an event for "
+"asynchronous processing, simply call the <literal>raiseAsynchronousEvent()</"
+"literal> methods of the <literal>Events</literal> class. To schedule a timed "
+"event, call one of the <literal>raiseTimedEvent()</literal> methods. "
+"Components may observe asynchronous events in the usual way, but remember "
+"that only the business process context is propagated to the asynchronous "
+"thread."
+msgstr ""
+"Komponenten gestützte Ereignisse können ebenfalls asynchron sein. Um ein "
+"Ereignis für die asynchrone Verarbeitung bereitzustellen, rufen sie einfach "
+"die <literal>raiseAsynchronousEvent()</literal>-Methoden der "
+"<literal>Events</literal>-Klasse auf. Um ein Ereignis zu terminieren, rufen "
+"Sie eine der <literal>raiseTimedEvent()</literal>-Methoden auf. Komponenten "
+"können asynchrone Ereignisse auf die übliche Weise überwachen, aber "
+"vergessen SIe nicht, dass der Business-Vorgangskontext an den asynchronen "
+"Thread fortgepflanzt wird."
+
+#. Tag: title
+#: Jms.xml:64
+#, no-c-format
+msgid "Messaging in Seam"
+msgstr "Messaging in Seam"
+
+#. Tag: para
+#: Jms.xml:65
+#, no-c-format
+msgid ""
+"Seam makes it easy to send and receive JMS messages to and from Seam "
+"components."
+msgstr ""
+"Mit Seam ist es einfach JMS-Nachrichten zu und von Seam-Komponenten zu "
+"versenden und zu empfangen."
+
+#. Tag: title
+#: Jms.xml:68
+#, no-c-format
+msgid "Configuration"
+msgstr "Konfiguration"
+
+#. Tag: para
+#: Jms.xml:69
+#, no-c-format
+msgid ""
+"To configure Seam&#39;s infrastructure for sending JMS messages, you need to "
+"tell Seam about any topics and queues you want to send messages to, and also "
+"tell Seam where to find the <literal>QueueConnectionFactory</literal> and/or "
+"<literal>TopicConnectionFactory</literal>."
+msgstr "Um Seams Infrastruktur für das Senden von JMS-Nachrichten zu konfigurieren, werden Sie Seam über Topics und Warteschlangen, an die Sie Nachrichten senden möchten, informieren müssen. Außerdem müssen Sie Seam mitteilen, wo es die <literal>QueueConnectionFactory</literal> und/oder <literal>TopicConnectionFactory</literal> findet."
+
+#. Tag: para
+#: Jms.xml:72
+#, no-c-format
+msgid ""
+"Seam defaults to using <literal>UIL2ConnectionFactory</literal> which is the "
+"usual connection factory for use with JBossMQ. If you are using some other "
+"JMS provider, you need to set one or both of <literal>queueConnection."
+"queueConnectionFactoryJndiName</literal> and <literal>topicConnection."
+"topicConnectionFactoryJndiName</literal> in <literal>seam.properties</"
+"literal>, <literal>web.xml</literal> or <literal>components.xml</literal>."
+msgstr ""
+"Seam verwendet standardmäßig <literal>UIL2ConnectionFactory</literal>, "
+"welches die reguläre Connection-Factory für die Verwendung mit JBossMQ ist. "
+"Falls Sie einen anderen JMS-Provider verwenden, müssen Sie einen oder beide "
+"der <literal>queueConnection.queueConnectionFactoryJndiName</literal> und "
+"<literal>topicConnection.topicConnectionFactoryJndiName</literal> in "
+"<literal>seam.properties</literal>, <literal>web.xml</literal> oder "
+"<literal>components.xml</literal> einstellen."
+
+#. Tag: para
+#: Jms.xml:75
+#, no-c-format
+msgid ""
+"You also need to list topics and queues in <literal>components.xml</literal> "
+"to install Seam managed <literal>TopicPublisher</literal>s and "
+"<literal>QueueSender</literal>s:"
+msgstr ""
+"Sie werden auch die Topics und Queues in <literal>components.xml</literal> "
+"anführen müssen, um durch Seam gemanagte <literal>TopicPublisher</literal>s "
+"und <literal>QueueSender</literal>s zu installieren:"
+
+#. Tag: programlisting
+#: Jms.xml:78
+#, no-c-format
+msgid ""
+"&lt;jms:managed-topic-publisher name=\"stockTickerPublisher\" \n"
+"                   auto-create=\"true  topic-jndi-name=\"topic/"
+"stockTickerTopic\"/&gt;\n"
+"\n"
+"&lt;jms:managed-queue-sender name=\"paymentQueueSender\" auto-create=\"true"
+"\" \n"
+"    queue-jndi-name=\"queue/paymentQueue\"/&gt;"
+msgstr ""
+"&lt;jms:managed-topic-publisher name=\"stockTickerPublisher\" \n"
+"                   auto-create=\"true  topic-jndi-name=\"topic/"
+"stockTickerTopic\"/&gt;\n"
+"\n"
+"&lt;jms:managed-queue-sender name=\"paymentQueueSender\" auto-create=\"true"
+"\" \n"
+"    queue-jndi-name=\"queue/paymentQueue\"/&gt;"
+
+#. Tag: title
+#: Jms.xml:81
+#, no-c-format
+msgid "Using JBoss Messaging"
+msgstr "Die Verwendung von JBoss Messaging"
+
+#. Tag: para
+#: Jms.xml:82
+#, no-c-format
+msgid ""
+"For using JBoss Messaging which comes with JBoss Enterprise Application "
+"Platform 4.3, you should first set the value of the properties "
+"'<literal>queueConnection.queueConnectionFactoryJndiName</literal>' and "
+"'<literal>topicConnection.topicConnectionFactoryJndiName</literal>' to "
+"'<literal>ConnectionFactory</literal>' which is the default connection "
+"factory for JBoss Messaging. Then set the value of the "
+"'<literal>connectionProvider</literal>' property to '<literal>org.jboss.seam."
+"remoting.messaging.JBossMessagingConnectionProvider</literal>' on the class "
+"component '<literal>org.jboss.seam.remoting.messaging.SubscriptionRegistry</"
+"literal>', which creates topic connections for jboss messaging. "
+"<programlisting>\n"
+"&lt;component name=\"org.jboss.seam.jms.topicConnection\"&gt;\n"
+"        &lt;property name=\"topicConnectionFactoryJndiName\"&gt;\n"
+"        ConnectionFactory\n"
+"        &lt;/property&gt;\n"
+"&lt;/component&gt;\n"
+"&lt;component class=\"org.jboss.seam.remoting.messaging.SubscriptionRegistry"
+"\" installed=\"true\"&gt;\n"
+"        &lt;property name=\"allowedTopics\"&gt;\n"
+"        chatroomTopic\n"
+"        &lt;/property&gt;\n"
+"        &lt;property name=\"connectionProvider\"&gt;\n"
+"        org.jboss.seam.remoting.messaging.JBossMessagingConnectionProvider\n"
+"        &lt;/property&gt;\n"
+"&lt;/component&gt;\n"
+"</programlisting> You also need to update the topics to use JBoss Messaging "
+"as shown in the code fragment below."
+msgstr ""
+"Um JBoss Messaging zu verwenden, das mit der JBoss Enterprise Application Platform 4.3 geliefert wird, sollten Sie zunächst den Wert der Properties "
+"'<literal>queueConnection.queueConnectionFactoryJndiName</literal>' und "
+"'<literal>topicConnection.topicConnectionFactoryJndiName</literal>' auf "
+"'<literal>ConnectionFactory</literal>' setzen, welches die standardmäßige Connection-Factory für JBoss Messaging ist. Setzen Sie anschließend den Wert der '<literal>connectionProvider</literal>'-Property auf '<literal>org.jboss.seam."
+"remoting.messaging.JBossMessagingConnectionProvider</literal>' auf der Klassenkomponente '<literal>org.jboss.seam.remoting.messaging.SubscriptionRegistry</"
+"literal>', die Topic-Connections für jboss messaging erstellt. "
+"<programlisting>\n"
+"&lt;component name=\"org.jboss.seam.jms.topicConnection\"&gt;\n"
+"        &lt;property name=\"topicConnectionFactoryJndiName\"&gt;\n"
+"        ConnectionFactory\n"
+"        &lt;/property&gt;\n"
+"&lt;/component&gt;\n"
+"&lt;component class=\"org.jboss.seam.remoting.messaging.SubscriptionRegistry"
+"\" installed=\"true\"&gt;\n"
+"        &lt;property name=\"allowedTopics\"&gt;\n"
+"        chatroomTopic\n"
+"        &lt;/property&gt;\n"
+"        &lt;property name=\"connectionProvider\"&gt;\n"
+"        org.jboss.seam.remoting.messaging.JBossMessagingConnectionProvider\n"
+"        &lt;/property&gt;\n"
+"&lt;/component&gt;\n"
+"</programlisting> Sie müssen außerdem die Topics aktualisieren, um JBoss Messaging wie im oben dargestellten Code-Fragment zu benutzen."
+
+#. Tag: programlisting
+#: Jms.xml:86
+#, no-c-format
+msgid ""
+"&lt;server&gt;\n"
+"        &lt;mbean code=\"org.jboss.jms.server.destination.TopicService\"\n"
+"               name=\"jboss.messaging.destination:service=Topic,"
+"name=chatroomTopic\"\n"
+"                                            xmbean-dd=\"xmdesc/Topic-xmbean."
+"xml\"&gt;\n"
+"                &lt;depends optional-attribute-name=\"ServerPeer\"&gt;\n"
+"                jboss.messaging:service=ServerPeer\n"
+"                &lt;/depends&gt;\n"
+"                &lt;depends&gt;\n"
+"                jboss.messaging:service=PostOffice\n"
+"                &lt;/depends&gt;\n"
+"                &lt;attribute name=\"SecurityConfig\"&gt;\n"
+"                        &lt;security&gt;\n"
+"                          &lt;role name=\"guest\" read=\"true\" write=\"true"
+"\"/&gt;\n"
+"                          &lt;role name=\"publisher\" read=\"true\" write="
+"\"true\" create=\"false\"/&gt;\n"
+"                          &lt;role name=\"durpublisher\" read=\"true\" write="
+"\"true\" create=\"true\"/&gt;\n"
+"                        &lt;/security&gt;\n"
+"                &lt;/attribute&gt;\n"
+"        &lt;/mbean&gt;\n"
+"&lt;/server&gt;"
+msgstr ""
+"&lt;server&gt;\n"
+"        &lt;mbean code=\"org.jboss.jms.server.destination.TopicService\"\n"
+"               name=\"jboss.messaging.destination:service=Topic,"
+"name=chatroomTopic\"\n"
+"                                            xmbean-dd=\"xmdesc/Topic-xmbean."
+"xml\"&gt;\n"
+"                &lt;depends optional-attribute-name=\"ServerPeer\"&gt;\n"
+"                jboss.messaging:service=ServerPeer\n"
+"                &lt;/depends&gt;\n"
+"                &lt;depends&gt;\n"
+"                jboss.messaging:service=PostOffice\n"
+"                &lt;/depends&gt;\n"
+"                &lt;attribute name=\"SecurityConfig\"&gt;\n"
+"                        &lt;security&gt;\n"
+"                          &lt;role name=\"guest\" read=\"true\" write=\"true"
+"\"/&gt;\n"
+"                          &lt;role name=\"publisher\" read=\"true\" write="
+"\"true\" create=\"false\"/&gt;\n"
+"                          &lt;role name=\"durpublisher\" read=\"true\" write="
+"\"true\" create=\"true\"/&gt;\n"
+"                        &lt;/security&gt;\n"
+"                &lt;/attribute&gt;\n"
+"        &lt;/mbean&gt;\n"
+"&lt;/server&gt;"
+
+#. Tag: title
+#: Jms.xml:90
+#, no-c-format
+msgid "Sending messages"
+msgstr "Nachrichten senden"
+
+#. Tag: para
+#: Jms.xml:91
+#, no-c-format
+msgid ""
+"Now, you can inject a JMS <literal>TopicPublisher</literal> and "
+"<literal>TopicSession</literal> into any component:"
+msgstr ""
+"Sie können jetzt JMS <literal>TopicPublisher</literal> und "
+"<literal>TopicSession</literal> in eine beliebige Komponente einspeisen:"
+
+#. Tag: programlisting
+#: Jms.xml:94
+#, no-c-format
+msgid ""
+"@In \n"
+"private TopicPublisher stockTickerPublisher;   \n"
+"@In \n"
+"private TopicSession topicSession;\n"
+"\n"
+"public void publish(StockPrice price) {\n"
+"      try\n"
+"      {\n"
+"         topicPublisher.publish( topicSession.createObjectMessage(price) );\n"
+"      } \n"
+"      catch (Exception ex)\n"
+"      {\n"
+"         throw new RuntimeException(ex);\n"
+"      } \n"
+"}"
+msgstr ""
+"@In \n"
+"private TopicPublisher stockTickerPublisher;   \n"
+"@In \n"
+"private TopicSession topicSession;\n"
+"\n"
+"public void publish(StockPrice price) {\n"
+"      try\n"
+"      {\n"
+"         topicPublisher.publish( topicSession.createObjectMessage(price) );\n"
+"      } \n"
+"      catch (Exception ex)\n"
+"      {\n"
+"         throw new RuntimeException(ex);\n"
+"      } \n"
+"}"
+
+#. Tag: para
+#: Jms.xml:95
+#, no-c-format
+msgid "Or, for working with a queue:"
+msgstr "Oder - für das Arbeiten mit einer Warteschlange:"
+
+#. Tag: programlisting
+#: Jms.xml:98
+#, no-c-format
+msgid ""
+"@In\n"
+"private QueueSender paymentQueueSender;   \n"
+"@In\n"
+"private QueueSession queueSession;\n"
+"\n"
+"public void publish(Payment payment) {\n"
+"      try\n"
+"      {\n"
+"         paymentQueueSender.send( queueSession.createObjectMessage"
+"(payment) );\n"
+"      } \n"
+"      catch (Exception ex)\n"
+"      {\n"
+"         throw new RuntimeException(ex);\n"
+"      } \n"
+"}"
+msgstr ""
+"@In\n"
+"private QueueSender paymentQueueSender;   \n"
+"@In\n"
+"private QueueSession queueSession;\n"
+"\n"
+"public void publish(Payment payment) {\n"
+"      try\n"
+"      {\n"
+"         paymentQueueSender.send( queueSession.createObjectMessage"
+"(payment) );\n"
+"      } \n"
+"      catch (Exception ex)\n"
+"      {\n"
+"         throw new RuntimeException(ex);\n"
+"      } \n"
+"}"
+
+#. Tag: title
+#: Jms.xml:99
+#, no-c-format
+msgid "Receiving messages using a message-driven bean"
+msgstr "Empfangen von Nachrichten unter Verwendung eines Message-gestützten Beans"
+
+#. Tag: para
+#: Jms.xml:100
+#, no-c-format
+msgid ""
+"You can process messages using any EJB3 message driven bean. Message-driven "
+"beans may even be Seam components, in which case it is possible to inject "
+"other event and application scoped Seam components."
+msgstr ""
+"Sie können Nachrichten unter Verwendung eines beliebigen, Nachrichten "
+"gestützten EJB3-Beans bearbeiten. Nachrichten gestützte Beans können sogar "
+"Seam-Komponenten sein, in welchem Fall es möglich ist andere, ereignis- und "
+"anwendungsbegrenzte Seam-Komponenten einzuspeisen."
+
+#. Tag: title
+#: Jms.xml:103
+#, no-c-format
+msgid "Receiving messages in the client"
+msgstr "Nachrichten im Client empfangen"
+
+#. Tag: para
+#: Jms.xml:104
+#, no-c-format
+msgid ""
+"Seam Remoting lets you subscribe to a JMS topic from client-side JavaScript. "
+"This is described in the next chapter."
+msgstr ""
+"Mit Seam Remoting können Sie ein JMS-Topic vom Client-side JavaScript "
+"abonnieren. Dies wird im folgenden Kapitel beschrieben."
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Mail.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Mail.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Mail.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1326 @@
+# translation of Mail.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Jasna Dimanoski <jdimanos at redhat.com>, 2007, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Mail\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2008-03-31 19:41+1000\n"
+"Last-Translator: Jasna Dimanoski <jdimanos at redhat.com>\n"
+"Language-Team:  <de at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Mail.xml:6
+#, no-c-format
+msgid "Email"
+msgstr "E-Mail"
+
+#. Tag: para
+#: Mail.xml:7
+#, no-c-format
+msgid "Seam now includes an optional components for templating and sending emails."
+msgstr ""
+"Seam beinhaltet jetzt eine optionale Komponente zur Erstellung von "
+"Dokumentvorlagen und das Versenden von E-Mails."
+
+#. Tag: para
+#: Mail.xml:10
+#, no-c-format
+msgid ""
+"Email support is provided by <literal>jboss-seam-mail.jar</literal>. This "
+"JAR contains the mail JSF controls, which are used to construct emails, and "
+"the <literal>mailSession</literal> manager component."
+msgstr ""
+"E-Mail-Support wird durch <literal>jboss-seam-mail.jar</literal> geliefert. "
+"Diese JAR die mail JSF-Controls, die zur Erstellung von E-Mails verwendet "
+"werden sowie die <literal>mailSession</literal>-Manager-Komponente."
+
+#. Tag: para
+#: Mail.xml:13
+#, no-c-format
+msgid ""
+"The examples/mail project contains an example of the email support in "
+"action. It demonstrates proper packaging, and it contains a number of "
+"example that demonstrate the key features currently supported."
+msgstr ""
+"Das Beispiele/Mail Projekt enthält ein Beispiel des E-Mail Supports in "
+"Aktion. Es zeigt ordnungsgemäßes Packaging, und es enthält eine Reihe von "
+"Beispielen die die derzeit wichtigsten unterstützten Features."
+
+#. Tag: title
+#: Mail.xml:17
+#, no-c-format
+msgid "Creating a message"
+msgstr "Eine Nachricht erstellen"
+
+#. Tag: para
+#: Mail.xml:18
+#, no-c-format
+msgid ""
+"You don&#39;t need to learn a whole new templating language to use Seam "
+"Mail&mdash;an email is just facelet!"
+msgstr ""
+"Sie müssen keine ganze neue \"Templating\"-Sprache erlernen, um Seam "
+"Mail&mdash; zu verwenden - eine E-Mail ist nur Facelet!"
+
+#. Tag: programlisting
+#: Mail.xml:21
+#, no-c-format
+msgid ""
+"&lt;m:message xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"    xmlns:m=\"http://jboss.com/products/seam/mail\"\n"
+"    xmlns:h=\"http://java.sun.com/jsf/html\"&gt;\n"
+"  \n"
+"    &lt;m:from name=\"Peter\" address=\"peter at example.com\" /&gt;\n"
+"    &lt;m:to name=\"#{person.firstname} #{person.lastname}\"&gt;#{person."
+"address}&lt;/m:to&gt;\n"
+"    &lt;m:subject&gt;Try out Seam!&lt;/m:subject&gt;\n"
+"    \n"
+"    &lt;m:body&gt;\n"
+"        &lt;p&gt;&lt;h:outputText value=\"Dear #{person.firstname}\" /&gt;,"
+"&lt;/p&gt;\n"
+"        &lt;p&gt;You can try out Seam by visiting \n"
+"        &lt;a href=\"http://labs.jboss.com/jbossseam\"&gt;http://labs.jboss."
+"com/jbossseam&lt;/a&gt;.&lt;/p&gt;\n"
+"        &lt;p&gt;Regards,&lt;/p&gt;\n"
+"        &lt;p&gt;Peter&lt;/p&gt;\n"
+"    &lt;/m:body&gt;\n"
+"    \n"
+"&lt;/m:message&gt;"
+msgstr ""
+"&lt;m:message xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"    xmlns:m=\"http://jboss.com/products/seam/mail\"\n"
+"    xmlns:h=\"http://java.sun.com/jsf/html\"&gt;\n"
+"  \n"
+"    &lt;m:from name=\"Peter\" address=\"peter at example.com\" /&gt;\n"
+"    &lt;m:to name=\"#{person.firstname} #{person.lastname}\"&gt;#{person."
+"address}&lt;/m:to&gt;\n"
+"    &lt;m:subject&gt;Try out Seam!&lt;/m:subject&gt;\n"
+"    \n"
+"    &lt;m:body&gt;\n"
+"        &lt;p&gt;&lt;h:outputText value=\"Dear #{person.firstname}\" /&gt;,"
+"&lt;/p&gt;\n"
+"        &lt;p&gt;You can try out Seam by visiting \n"
+"        &lt;a href=\"http://labs.jboss.com/jbossseam\"&gt;http://labs.jboss."
+"com/jbossseam&lt;/a&gt;.&lt;/p&gt;\n"
+"        &lt;p&gt;Regards,&lt;/p&gt;\n"
+"        &lt;p&gt;Peter&lt;/p&gt;\n"
+"    &lt;/m:body&gt;\n"
+"    \n"
+"&lt;/m:message&gt;"
+
+#. Tag: para
+#: Mail.xml:22
+#, no-c-format
+msgid ""
+"The <literal>&lt;m:message&gt;</literal> tag wraps the whole message, and "
+"tells Seam to start rendering an email. Inside the <literal>&lt;m:message&gt;"
+"</literal> tag we use an <literal>&lt;m:from&gt;</literal> tag to set who "
+"the message is from, a <literal>&lt;m:to&gt;</literal> tag to specify a "
+"sender (notice how we use EL as we would in a normal facelet), and a "
+"<literal>&lt;m:subject&gt;</literal> tag."
+msgstr ""
+"Das <literal>&lt;m:message&gt;</literal>-Tag wrappt die gesamte Nachricht "
+"und teilt Seam mit mit dem Rendering einer E-Mail zu beginnen. Innerhalb des "
+"<literal>&lt;m:message&gt;</literal>-Tags verwenden wir ein <literal>&lt;m:"
+"from&gt;</literal>-Tag um einzustellen, von wem die Nachricht kommt, ein "
+"<literal>&lt;m:to&gt;</literal>-Tag, um einen Absender festzulegen (beachten "
+"Sie das EL ganz wie in einem regulären Facelet verwendet wird) sowie ein "
+"<literal>&lt;m:subject&gt;</literal>-Tag."
+
+#. Tag: para
+#: Mail.xml:25
+#, no-c-format
+msgid ""
+"The <literal>&lt;m:body&gt;</literal> tag wraps the body of the email. You "
+"can use regular HTML tags inside the body as well as JSF components."
+msgstr ""
+"Das <literal>&lt;m:body&gt;</literal>-Tag wrappt den E-Mail-Körper. Sie "
+"können sowohl reguläre HTML-Tags als auch JSF-Komponenten innerhalb des "
+"Körpers benutzen."
+
+#. Tag: para
+#: Mail.xml:28
+#, no-c-format
+msgid ""
+"So, now you have your email template, how do you go about sending it? Well, "
+"at the end of rendering the <literal>m:message</literal> the "
+"<literal>mailSession</literal> is called to send the email, so all you have "
+"to do is ask Seam to render the view:"
+msgstr ""
+"Sie haben nun Ihre E-Mail-Vorlage, wie aber wird diese gesendet? Nun, am "
+"Ende des Renderings der <literal>m:message</literal> wird die "
+"<literal>mailSession</literal> zum Versenden der E-Mail aufgerufen, so dass "
+"Sie lediglich Seam zum Rendern der Ansicht auffordern müssen:"
+
+#. Tag: programlisting
+#: Mail.xml:31
+#, no-c-format
+msgid ""
+"@In(create=true)\n"
+"private Renderer renderer;\n"
+"   \n"
+"public void send() {\n"
+"    try {\n"
+"       renderer.render(\"/simple.xhtml\");\n"
+"       facesMessages.add(\"Email sent successfully\");\n"
+"   } \n"
+"   catch (Exception e) {\n"
+"       facesMessages.add(\"Email sending failed: \" + e.getMessage());\n"
+"   }\n"
+"}"
+msgstr ""
+"@In(create=true)\n"
+"private Renderer renderer;\n"
+"   \n"
+"public void send() {\n"
+"    try {\n"
+"       renderer.render(\"/simple.xhtml\");\n"
+"       facesMessages.add(\"Email sent successfully\");\n"
+"   } \n"
+"   catch (Exception e) {\n"
+"       facesMessages.add(\"Email sending failed: \" + e.getMessage());\n"
+"   }\n"
+"}"
+
+#. Tag: para
+#: Mail.xml:32
+#, no-c-format
+msgid ""
+"If, for example, you entered an invalid email address, then an exception "
+"would be thrown, which is caught and then displayed to the user."
+msgstr ""
+"Wenn Sie zum Beispiel eine ungültige E-Mail-Adresse angegeben haben, so "
+"würde eine Ausnahme gemeldet, die erfasst und dem Benutzer angezeigt wird."
+
+#. Tag: title
+#: Mail.xml:36
+#, no-c-format
+msgid "Attachments"
+msgstr "Anhänge"
+
+#. Tag: para
+#: Mail.xml:37
+#, no-c-format
+msgid ""
+"Seam makes it easy to attach files to an email. It supports most of the "
+"standard java types used when working with files."
+msgstr ""
+"Seam macht es ganz einfach einer E-Mail Dateien anzuhängen. Es unterstützt "
+"die meisten Standard Java-Typen, die bei der Arbeit mit Dateien verwendet "
+"werden."
+
+#. Tag: para
+#: Mail.xml:40
+#, no-c-format
+msgid "If you wanted to email the <literal>jboss-seam-mail.jar</literal>:"
+msgstr "Wenn Sie die <literal>jboss-seam-mail.jar</literal> e-mailen wollten:"
+
+#. Tag: programlisting
+#: Mail.xml:43
+#, no-c-format
+msgid "&lt;m:attachment value=\"/WEB-INF/lib/jboss-seam-mail.jar\"/&gt;"
+msgstr "&lt;m:attachment value=\"/WEB-INF/lib/jboss-seam-mail.jar\"/&gt;"
+
+#. Tag: para
+#: Mail.xml:44
+#, no-c-format
+msgid ""
+"Seam will load the file from the classpath, and attach it to the email. By "
+"default it would be attached as <literal>jboss-seam-mail.jar</literal>; if "
+"you wanted it to have another name you would just add the <literal>fileName</"
+"literal> attribute:"
+msgstr ""
+"Seam lädt die Datei aus dem Klassenpfad und hängt diese an die E-Mail an. "
+"Standardmäßig würde Sie als <literal>jboss-seam-mail.jar</literal> "
+"angehängt; falls Sie sie anders nennen möchten, so würden Sie einfach das "
+"<literal>fileName</literal>-Attribut hinzufügen:"
+
+#. Tag: programlisting
+#: Mail.xml:47
+#, no-c-format
+msgid ""
+"&lt;m:attachment value=\"/WEB-INF/lib/jboss-seam-mail.jar\" fileName=\"this-"
+"is-so-cool.jar\"/&gt;"
+msgstr ""
+"&lt;m:attachment value=\"/WEB-INF/lib/jboss-seam-mail.jar\" fileName=\"this-"
+"is-so-cool.jar\"/&gt;"
+
+#. Tag: para
+#: Mail.xml:48
+#, no-c-format
+msgid ""
+"You could also attach a <literal>java.io.File</literal>, a <literal>java.net."
+"URL</literal>:"
+msgstr ""
+"Sie könnten auch eine <literal>java.io.File</literal>, eine <literal>java."
+"net.URL</literal> anhängen:"
+
+#. Tag: programlisting
+#: Mail.xml:51
+#, no-c-format
+msgid "&lt;m:attachment value=\"#{numbers}\"/&gt;"
+msgstr "&lt;m:attachment value=\"#{numbers}\"/&gt;"
+
+#. Tag: para
+#: Mail.xml:52
+#, no-c-format
+msgid "Or a <literal>byte[]</literal> or a <literal>java.io.InputStream</literal>:"
+msgstr ""
+"Oder ein <literal>byte[]</literal> oder ein <literal>java.io.InputStream</"
+"literal>:"
+
+#. Tag: programlisting
+#: Mail.xml:55
+#, no-c-format
+msgid "&lt;m:attachment value=\"#{person.photo}\" contentType=\"image/png\"/&gt;"
+msgstr "&lt;m:attachment value=\"#{person.photo}\" contentType=\"image/png\"/&gt;"
+
+#. Tag: para
+#: Mail.xml:56
+#, no-c-format
+msgid ""
+"You&#39;ll notice that for a <literal>byte[]</literal> and a <literal>java."
+"io.InputStream</literal> you need to specify the MIME type of the attachment "
+"(as that information is not carried as part of the file)."
+msgstr ""
+"Sie werden feststellen, dass Sie für ein <literal>byte[]</literal> und ein "
+"<literal>java.io.InputStream</literal> den MIME-Typ des Anhangs werden "
+"festlegen müssen (da diese Information nicht als Dateiteil geliefert wird)."
+
+#. Tag: para
+#: Mail.xml:59
+#, no-c-format
+msgid ""
+"And it gets even better, you can attach a Seam generated PDF, or any "
+"standard JSF view, just by wrapping a <literal>&lt;m:attachment&gt;</"
+"literal> around the normal tags you would use:"
+msgstr ""
+"Sie können sogar ein durch Seam generiertes PDF oder beliebige Standard JSF-"
+"Ansicht anhängen, indem Sie einfach ein <literal>&lt;m:attachment&gt;</"
+"literal> um die regulären Tags wrappen, die Sie verwenden würden:"
+
+#. Tag: programlisting
+#: Mail.xml:62
+#, no-c-format
+msgid ""
+"&lt;m:attachment fileName=\"tiny.pdf\"&gt;\n"
+"    &lt;p:"
+"document&gt;                                                      \n"
+"        A very tiny "
+"PDF                                                                                                \n"
+"    &lt;/p:document&gt;\n"
+"&lt;/m:attachment&gt;"
+msgstr ""
+"&lt;m:attachment fileName=\"tiny.pdf\"&gt;\n"
+"    &lt;p:"
+"document&gt;                                                      \n"
+"        A very tiny "
+"PDF                                                                                                \n"
+"    &lt;/p:document&gt;\n"
+"&lt;/m:attachment&gt;"
+
+#. Tag: para
+#: Mail.xml:63
+#, no-c-format
+msgid ""
+"If you had a set of files you wanted to attach (for example a set of "
+"pictures loaded from a database) you can just use a <literal>&lt;ui:"
+"repeat&gt;</literal>:"
+msgstr ""
+"Wenn Sie einen Satz von Dateien anhängen wollten (etwa Bilder aus einer "
+"Datenbank), könnten Sie einfach <literal>&lt;ui:repeat&gt;</literal> "
+"benutzen:"
+
+#. Tag: programlisting
+#: Mail.xml:66
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{people}\" var=\"person\"&gt;\n"
+"    &lt;m:attachment value=\"#{person.photo}\" contentType=\"image/jpeg\"\n"
+"    fileName=\"#{person.firstname}_#{person.lastname}.jpg\"/&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+"&lt;ui:repeat value=\"#{people}\" var=\"person\"&gt;\n"
+"    &lt;m:attachment value=\"#{person.photo}\" contentType=\"image/jpeg\"\n"
+"    fileName=\"#{person.firstname}_#{person.lastname}.jpg\"/&gt;\n"
+"&lt;/ui:repeat&gt;"
+
+#. Tag: title
+#: Mail.xml:70
+#, no-c-format
+msgid "HTML/Text alternative part"
+msgstr "HTML/Text-Alternativteil"
+
+#. Tag: para
+#: Mail.xml:71
+#, no-c-format
+msgid ""
+"Whilst most mail readers nowadays support HTML, some don&#39;t, so you can "
+"add a plain text alternative to your email body:"
+msgstr "Während die meisten Mail-Reader heutzutage HTML unterstützen, gibt es doch nach wie vor welche, die es nicht tun. Sie können Ihrem E-Mail-Textkörper daher eine \"Plain Text\" Alternative hinzufügen:"
+
+#. Tag: programlisting
+#: Mail.xml:74
+#, no-c-format
+msgid ""
+"&lt;m:body&gt;\n"
+"    &lt;f:facet name=\"alternative\"&gt;Sorry, your email reader can&#39;t "
+"show our fancy email, \n"
+"please go to http://labs.jboss.com/jbossseam to explore Seam.&lt;/f:"
+"facet&gt;\n"
+"&lt;/m:body&gt;"
+msgstr ""
+"&lt;m:body&gt;\n"
+"    &lt;f:facet name=\"alternative\"&gt;Sorry, your email reader can&#39;t "
+"show our fancy email, \n"
+"please go to http://labs.jboss.com/jbossseam to explore Seam.&lt;/f:"
+"facet&gt;\n"
+"&lt;/m:body&gt;"
+
+#. Tag: title
+#: Mail.xml:78
+#, no-c-format
+msgid "Multiple recipients"
+msgstr "Mehrere Empfänger"
+
+#. Tag: para
+#: Mail.xml:79
+#, no-c-format
+msgid ""
+"Often you&#39;ll want to send an email to a group of recipients (for example "
+"your users). All of the recipient mail tags can be placed inside a "
+"<literal>&lt;ui:repeat&gt;</literal>:"
+msgstr "Oftmals werden Sie eine E-Mail an eine Gruppe von Empfängern verschicken wollen (etwa an Ihre Benutzer). Alle Empfänger Mail-Tags können innerhalb eines <literal>&lt;ui:repeat&gt;</literal> platziert werden:"
+
+#. Tag: programlisting
+#: Mail.xml:82
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{allUsers} var=\"user\"&gt;\n"
+"    &lt;m:to name=\"#{user.firstname} #{user.lastname}\" address=\"#{user."
+"emailAddress}\" /&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+"&lt;ui:repeat value=\"#{allUsers} var=\"user\"&gt;\n"
+"    &lt;m:to name=\"#{user.firstname} #{user.lastname}\" address=\"#{user."
+"emailAddress}\" /&gt;\n"
+"&lt;/ui:repeat&gt;"
+
+#. Tag: title
+#: Mail.xml:86
+#, no-c-format
+msgid "Multiple messages"
+msgstr "Mehrere Nachrichten"
+
+#. Tag: para
+#: Mail.xml:87
+#, no-c-format
+msgid ""
+"Sometimes, however, you need to send a slightly different message to each "
+"recipient (e.g. a password reset). The best way to do this is to place the "
+"whole message inside a <literal>&lt;ui:repeat&gt;</literal>:"
+msgstr ""
+"Manchmal jedoch müssen Sie eine jeweils leicht abgeänderte Nachricht an die "
+"einzelnen Empfänger verschicken (z.B. Zurücksetzen des Passworts). Am besten "
+"platzieren Sie hierzu die gesamte Nachricht in ein <literal>&lt;ui:repeat&gt;"
+"</literal>:"
+
+#. Tag: programlisting
+#: Mail.xml:90
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{people}\" var=\"p\"&gt;\n"
+"    &lt;m:message&gt;\n"
+"        &lt;m:from name=\"#{person.firstname} #{person.lastname}\"&gt;#"
+"{person.address}&lt;/m:from&gt;\n"
+"        &lt;m:to name=\"#{p.firstname}\"&gt;#{p.address}&lt;/m:to&gt;\n"
+"            ...\n"
+"    &lt;/m:message&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+"&lt;ui:repeat value=\"#{people}\" var=\"p\"&gt;\n"
+"    &lt;m:message&gt;\n"
+"        &lt;m:from name=\"#{person.firstname} #{person.lastname}\"&gt;#"
+"{person.address}&lt;/m:from&gt;\n"
+"        &lt;m:to name=\"#{p.firstname}\"&gt;#{p.address}&lt;/m:to&gt;\n"
+"            ...\n"
+"    &lt;/m:message&gt;\n"
+"&lt;/ui:repeat&gt;"
+
+#. Tag: title
+#: Mail.xml:94
+#, no-c-format
+msgid "Templating"
+msgstr "\"Templating\""
+
+#. Tag: para
+#: Mail.xml:95
+#, no-c-format
+msgid ""
+"The mail templating example shows that facelets templating Just Works with "
+"the Seam mail tags."
+msgstr ""
+"Das Mail-Templating Beispiel zeigt, dass Facelets Templating nur mit Seam "
+"Mail-Tags funktioniert."
+
+#. Tag: para
+#: Mail.xml:98
+#, no-c-format
+msgid "Our <literal>template.xhtml</literal> contains:"
+msgstr "Unser <literal>template.xhtml</literal> enthält:"
+
+#. Tag: programlisting
+#: Mail.xml:101
+#, no-c-format
+msgid ""
+"&lt;m:message&gt;\n"
+"   &lt;m:from name=\"Seam\" address=\"do-not-reply at jboss.com\" /&gt;\n"
+"   &lt;m:to name=\"#{person.firstname} #{person.lastname}\"&gt;#{person."
+"address}&lt;/m:to&gt;\n"
+"   &lt;m:subject&gt;#{subject}&lt;/m:subject&gt;\n"
+"   &lt;m:body&gt;\n"
+"       &lt;html&gt;\n"
+"           &lt;body&gt;\n"
+"               &lt;ui:insert name=\"body\"&gt;This is the default body, "
+"specified by the template.\n"
+"                                   &lt;/ui:insert&gt;\n"
+"           &lt;/body&gt;\n"
+"       &lt;/html&gt;\n"
+"   &lt;/m:body&gt;\n"
+"&lt;/m:message&gt;"
+msgstr ""
+"&lt;m:message&gt;\n"
+"   &lt;m:from name=\"Seam\" address=\"do-not-reply at jboss.com\" /&gt;\n"
+"   &lt;m:to name=\"#{person.firstname} #{person.lastname}\"&gt;#{person."
+"address}&lt;/m:to&gt;\n"
+"   &lt;m:subject&gt;#{subject}&lt;/m:subject&gt;\n"
+"   &lt;m:body&gt;\n"
+"       &lt;html&gt;\n"
+"           &lt;body&gt;\n"
+"               &lt;ui:insert name=\"body\"&gt;This is the default body, "
+"specified by the template.\n"
+"                                   &lt;/ui:insert&gt;\n"
+"           &lt;/body&gt;\n"
+"       &lt;/html&gt;\n"
+"   &lt;/m:body&gt;\n"
+"&lt;/m:message&gt;"
+
+#. Tag: para
+#: Mail.xml:102
+#, no-c-format
+msgid "Our <literal>templating.xhtml</literal> contains:"
+msgstr "Unser <literal>templating.xhtml</literal> enthält:"
+
+#. Tag: programlisting
+#: Mail.xml:105
+#, no-c-format
+msgid ""
+"&lt;ui:param name=\"subject\" value=\"Templating with Seam Mail\"/&gt;\n"
+"&lt;ui:define name=\"body\"&gt;\n"
+"    &lt;p&gt;This example demonstrates that you can easily use &lt;i&gt;"
+"facelets templating&lt;/i&gt; in email!&lt;/p&gt;\n"
+"&lt;/ui:define&gt;"
+msgstr ""
+"&lt;ui:param name=\"subject\" value=\"Templating with Seam Mail\"/&gt;\n"
+"&lt;ui:define name=\"body\"&gt;\n"
+"    &lt;p&gt;This example demonstrates that you can easily use &lt;i&gt;"
+"facelets templating&lt;/i&gt; in email!&lt;/p&gt;\n"
+"&lt;/ui:define&gt;"
+
+#. Tag: title
+#: Mail.xml:109
+#, no-c-format
+msgid "Internationalisation"
+msgstr "Internationalisierung"
+
+#. Tag: para
+#: Mail.xml:110
+#, no-c-format
+msgid ""
+"Seam supports sending internationalised messages. By default, the encoding "
+"provided by JSF is used, but this can be overridden on the template:"
+msgstr "Seam unterstützt das Versenden internationalisierter Nachrichten. Standardmäßig wird die von JSF gelieferte Verschlüsselung benutzt, jedoch kann dies in der Vorlage außer Kraft gesetzt werden:"
+
+#. Tag: programlisting
+#: Mail.xml:113
+#, no-c-format
+msgid ""
+"&lt;m:message charset=\"UTF-8\"&gt;\n"
+"   ...\n"
+"&lt;/m:message&gt;"
+msgstr ""
+"&lt;m:message charset=\"UTF-8\"&gt;\n"
+"   ...\n"
+"&lt;/m:message&gt;"
+
+#. Tag: para
+#: Mail.xml:114
+#, no-c-format
+msgid ""
+"The body, subject and recipient (and from) name will be encoded. You&#39;ll "
+"need to make sure facelets uses the correct charset for parsing your pages "
+"by setting encoding of the template:"
+msgstr "Textkörper, Betreff und Empfänger (und \"von\") Name werden verschlüsselt. Sie müssen sicherstellen, dass Facelets das korrekte Charset für das Parsen Ihrer Seiten verwendet, indem Sie die Vorlagenverschlüsselung einstellen:"
+
+#. Tag: programlisting
+#: Mail.xml:117
+#, no-c-format
+msgid "&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;"
+msgstr "&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;"
+
+#. Tag: title
+#: Mail.xml:121
+#, no-c-format
+msgid "Other Headers"
+msgstr "Andere Header"
+
+#. Tag: para
+#: Mail.xml:122
+#, no-c-format
+msgid ""
+"Sometimes you&#39;ll want to add other headers to your email. Seam provides "
+"support for some (see <xref linkend=\"Seam_Reference_Guide-Email-Tags\"/>). "
+"For example, we can set the importance of the email, and ask for a read "
+"receipt:"
+msgstr ""
+"Manchmal werden Sie Ihrer E-Mail andere Header hinzufügen müssen. Seam liefert Support für einige (siehe <xref linkend=\"Seam_Reference_Guide-Email-Tags\"/>). Wir "
+"können zum Beispiel die Dringlichkeit einer E-Mail einstellen oder eine "
+"Lesebestätigung anfordern:"
+
+#. Tag: programlisting
+#: Mail.xml:125
+#, no-c-format
+msgid ""
+"&lt;m:message xmlns:m=\"http://jboss.com/products/seam/mail\"\n"
+"           importance=\"low\"\n"
+"           requestReadReceipt=\"true\"/&gt;"
+msgstr ""
+"&lt;m:message xmlns:m=\"http://jboss.com/products/seam/mail\"\n"
+"           importance=\"low\"\n"
+"           requestReadReceipt=\"true\"/&gt;"
+
+#. Tag: para
+#: Mail.xml:126
+#, no-c-format
+msgid ""
+"Otherise you can add any header to the message using the <literal>&lt;m:"
+"header&gt;</literal> tag:"
+msgstr ""
+"Andernfalls können Sie der Nachricht einen beliebigen Header mittels des "
+"<literal>&lt;m:header&gt;</literal>-Tags hinzufügen:"
+
+#. Tag: programlisting
+#: Mail.xml:129
+#, no-c-format
+msgid "&lt;m:header name=\"X-Sent-From\" value=\"JBoss Seam\"/&gt;"
+msgstr "&lt;m:header name=\"X-Sent-From\" value=\"JBoss Seam\"/&gt;"
+
+#. Tag: title
+#: Mail.xml:135
+#, no-c-format
+msgid "Receiving emails"
+msgstr "E-Mails empfangen"
+
+#. Tag: para
+#: Mail.xml:136
+#, no-c-format
+msgid ""
+"If you are using EJB then you can use a MDB (Message Driven Bean) to receive "
+"email. Seam comes with an improved version of <literal>mail-ra.rar</literal> "
+"as distributed in JBoss AS; until the improvements make there way into a "
+"released version of JBoss AS, replacing the default <literal>rar</literal> "
+"with the one distributed with Seam is recommended."
+msgstr ""
+"Wenn Sie EJB verwenden, so können SIe ein MDB (Message Driven Bean) zum "
+"Empfang von E-Mail benutzen. Seam kommt mit einer verbesserten Version von "
+"<literal>mail-ra.rar</literal> als im JBoss AS distribuiert; bis die "
+"Verbesserungen in eine Version des JBoss AS implementiert wurden, empfiehlt "
+"sich das Ersetzen der Standard-<literal>rar</literal> durch die mit Seam "
+"gelieferte."
+
+#. Tag: para
+#: Mail.xml:139
+#, no-c-format
+msgid "You can configure it like this:"
+msgstr "Sie können es wie folgt konfigurieren:"
+
+#. Tag: programlisting
+#: Mail.xml:142
+#, no-c-format
+msgid ""
+"@MessageDriven(activationConfig={\n"
+"         @ActivationConfigProperty(propertyName=\"mailServer\", "
+"propertyValue=\"localhost\"),\n"
+"         @ActivationConfigProperty(propertyName=\"mailFolder\", "
+"propertyValue=\"INBOX\"),\n"
+"         @ActivationConfigProperty(propertyName=\"storeProtocol\", "
+"propertyValue=\"pop3\"),\n"
+"         @ActivationConfigProperty(propertyName=\"userName\", propertyValue="
+"\"seam\"),\n"
+"         @ActivationConfigProperty(propertyName=\"password\", propertyValue="
+"\"seam\")\n"
+"})\n"
+"@ResourceAdapter(\"mail-ra.rar\")\n"
+"@Name(\"mailListener\")\n"
+"public class MailListenerMDB implements MailListener {\n"
+"\n"
+"   @In(create=true)\n"
+"   private OrderProcessor orderProcessor;\n"
+"\n"
+"   public void onMessage(Message message) {\n"
+"      // Process the message\n"
+"      orderProcessor.process(message.getSubject());\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+"@MessageDriven(activationConfig={\n"
+"         @ActivationConfigProperty(propertyName=\"mailServer\", "
+"propertyValue=\"localhost\"),\n"
+"         @ActivationConfigProperty(propertyName=\"mailFolder\", "
+"propertyValue=\"INBOX\"),\n"
+"         @ActivationConfigProperty(propertyName=\"storeProtocol\", "
+"propertyValue=\"pop3\"),\n"
+"         @ActivationConfigProperty(propertyName=\"userName\", propertyValue="
+"\"seam\"),\n"
+"         @ActivationConfigProperty(propertyName=\"password\", propertyValue="
+"\"seam\")\n"
+"})\n"
+"@ResourceAdapter(\"mail-ra.rar\")\n"
+"@Name(\"mailListener\")\n"
+"public class MailListenerMDB implements MailListener {\n"
+"\n"
+"   @In(create=true)\n"
+"   private OrderProcessor orderProcessor;\n"
+"\n"
+"   public void onMessage(Message message) {\n"
+"      // Process the message\n"
+"      orderProcessor.process(message.getSubject());\n"
+"   }\n"
+"   \n"
+"}"
+
+#. Tag: para
+#: Mail.xml:143
+#, no-c-format
+msgid ""
+"Each message received will cause <literal>onMessage(Message message)</"
+"literal> to be called. Most seam annotations will work inside a MDB but you "
+"musn&#39;t access the persistence context."
+msgstr ""
+"Jede empfangene Nachricht führt dazu, dass <literal>onMessage(Message "
+"message)</literal> aufgerufen wird. Die meisten Seam-Annotationen "
+"funktionieren innerhalb einer MDB, jedoch dürfen Sie nicht auf den "
+"Persistenz-Kontext zugreifen."
+
+#. Tag: para
+#: Mail.xml:146
+#, no-c-format
+msgid ""
+"You can find more information on the default <literal>mail-ra.rar</literal> "
+"at <ulink url=\"http://wiki.jboss.org/wiki/Wiki.jsp?page=InboundJavaMail"
+"\">http://wiki.jboss.org/wiki/Wiki.jsp?page=InboundJavaMail</ulink>. The "
+"version distributed with Seam also includes a <literal>debug</literal> "
+"property to enable JavaMail debugging, a <literal>flush</literal> property "
+"(by default true) to disable flushing a <literal>POP3</literal> mailbox "
+"after successfullying delivering a message to your MDB and a <literal>port</"
+"literal> property to override the default TCP port. Beware that the api for "
+"this may be altered as changes make there way into JBoss AS."
+msgstr ""
+"Weitere Informationen zum Standard <literal>mail-ra.rar</literal> finden Sie "
+"unter <ulink url=\"http://wiki.jboss.org/wiki/Wiki.jsp?page=InboundJavaMail"
+"\">http://wiki.jboss.org/wiki/Wiki.jsp?page=InboundJavaMail</ulink>. Die mit "
+"Seam distribuierte Version beinhaltet auch eine <literal>debug</literal>-"
+"Property, um JavaMail-Debugging zu aktivieren, eine <literal>flush</literal>-"
+"Property (standardmäßig \"true\") zur Deaktivierung von \"Flushing\" einer "
+"<literal>POP3</literal>-Mailbox nach erfolgreicher Auslieferung einer "
+"Nachricht an Ihre MDB und eine <literal>port</literal>-Property, um den "
+"standardmäßigen TCP-Port außer Kraft zu setzen. Beachten Sie, dass die API "
+"hierfür geändert werden kann wenn Änderungen Ihren Weg in den JBoss AS "
+"machen."
+
+#. Tag: para
+#: Mail.xml:149
+#, no-c-format
+msgid ""
+"If you aren&#39;t using JBoss AS you can still use <literal>mail-ra.rar</"
+"literal> (included with Seam in the mail directory), or you may find your "
+"application server includes a similar adapter."
+msgstr "Falls Sie JBoss AS nicht verwenden, können Sie dennoch <literal>mail-ra.rar</literal> benutzen (in Seams Mail-Verzeichnis enthalten) oder aber Ihr Applikationsserver enthält einen ähnlichen Adapter."
+
+#. Tag: title
+#: Mail.xml:155
+#, no-c-format
+msgid "Configuration"
+msgstr "Konfiguration"
+
+#. Tag: para
+#: Mail.xml:156
+#, no-c-format
+msgid ""
+"To include Email support in your application, include <literal>jboss-seam-"
+"mail.jar</literal> in your WEB-INF/lib directory. If you are using JBoss AS "
+"there is no further configuration needed to use Seam&#39;s email support. "
+"Otherwise you need to make sure you have the JavaMail API, an implementation "
+"of the JavaMail API present (the API and impl used in JBoss AS are "
+"distributed with seam as <literal>lib/mail.jar</literal>), and a copy of the "
+"Java Activation Framework (distributed with seam as <literal>lib/activation."
+"jar</literal>."
+msgstr ""
+"Um in Ihrer Anwendung E-Mail-Support mit einzuschließen, schließen Sie "
+"<literal>jboss-seam-mail.jar</literal> in Ihr WEB-INF/lib-Verzeichnis mit "
+"ein. Falls Sie JBoss AS verwenden, so wird keine weitere Konfiguration "
+"benötigt, um Seams E-Mail-Support zu benutzen. Andernfalls müssen Sie "
+"sicherstellen, dass Sie die JavaMail-API, eine Implementierung der JavaMail-"
+"API besitzen (die in JBoss AS verwendete API und Implementierung werden mit Seam als <literal>lib/mail.jar</literal> distribuiert) sowie eine Kopie des "
+"Java Activation Framework (mit Seam als <literal>lib/activation.jar</"
+"literal> distribuiert)."
+
+#. Tag: para
+#: Mail.xml:159
+#, no-c-format
+msgid ""
+"The Seam Email module requires the use of Facelets as the view technology. "
+"Future versions of the library may also support the use of JSP. "
+"Additionally, it requires the use of the seam-ui package."
+msgstr ""
+"Das Seam E-Mail Modul erfordert die Verwendung von Facelets als "
+"Ansichtstechnologie. Zukünftige Versionen der Bibliothek unterstützen "
+"möglicherweise die Verwendung von JSP. Zusätzlich wird die Benutzung des "
+"seam-ui Pakets benötigt."
+
+#. Tag: para
+#: Mail.xml:162
+#, no-c-format
+msgid ""
+"The <literal>mailSession</literal> component uses JavaMail to talk to a &#39;"
+"real&#39; SMTP server."
+msgstr ""
+"Die <literal>mailSession</literal>-Komponente verwendet JavaMail, um mit "
+"einem \"echten\" SMTP-Server zu kommunizieren."
+
+#. Tag: literal
+#: Mail.xml:166
+#, no-c-format
+msgid "mailSession"
+msgstr "mailSession"
+
+#. Tag: para
+#: Mail.xml:167
+#, no-c-format
+msgid ""
+"A JavaMail Session may be available via a JNDI lookup if you are working in "
+"an JEE environment or you can use a Seam configured Session."
+msgstr ""
+"Eine JavaMail Session kann via einem JNDI-Lookup verfügbar sein, wenn Sie in "
+"einer JEE-Umgebung arbeiten oder aber Sie können eine Seam-konfigurierte "
+"Session verwenden."
+
+#. Tag: para
+#: Mail.xml:170
+#, no-c-format
+msgid ""
+"The mailSession component&#39;s properties are described in more detail in "
+"<xref linkend=\"Seam_Reference_Guide-Built_in_Seam_components-"
+"Mail_related_components\"/>."
+msgstr ""
+"Die Properties der mailSession-Komponente sind in <xref linkend=\"Seam_Reference_Guide-Built_in_Seam_components-"
+"Mail_related_components\"/> ausführlicher beschrieben."
+
+#. Tag: title
+#: Mail.xml:174
+#, no-c-format
+msgid "JNDI lookup in JBoss AS"
+msgstr "JNDI-Lookup in JBoss AS"
+
+#. Tag: para
+#: Mail.xml:175
+#, no-c-format
+msgid ""
+"The JBossAS <literal>deploy/mail-service.xml</literal> configures a JavaMail "
+"session binding into JNDI. The default service configuration will need "
+"altering for your network. <ulink url=\"http://wiki.jboss.org/wiki/Wiki.jsp?"
+"page=JavaMail\">http://wiki.jboss.org/wiki/Wiki.jsp?page=JavaMail</ulink> "
+"describes the service in more detail."
+msgstr ""
+"Der JBossAS <literal>deploy/mail-service.xml</literal> konfiguriert eine "
+"JavaMail-Session und bindet diese in JNDI. Die standardmäßige Konfiguration "
+"des Dienstes muss für Ihr Netzwerk geändert werden. <ulink url=\"http://wiki."
+"jboss.org/wiki/Wiki.jsp?page=JavaMail\">http://wiki.jboss.org/wiki/Wiki.jsp?"
+"page=JavaMail</ulink> beschreibt den Dienst ausführlicher."
+
+#. Tag: programlisting
+#: Mail.xml:178
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"        xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"        xmlns:mail=\"http://jboss.com/products/seam/mail\"&gt;\n"
+"        \n"
+"    &lt;mail:mail-session session-jndi-name=\"java:/Mail\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"        xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"        xmlns:mail=\"http://jboss.com/products/seam/mail\"&gt;\n"
+"        \n"
+"    &lt;mail:mail-session session-jndi-name=\"java:/Mail\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Mail.xml:179
+#, no-c-format
+msgid ""
+"Here we tell Seam to get the mail session bound to <literal>java:/Mail</"
+"literal> from JNDI."
+msgstr ""
+"Hier wird Seam mitgeteilt, die an <literal>java:/Mail</literal> gebundene "
+"Mail-Session von JNDI zu holen."
+
+#. Tag: title
+#: Mail.xml:185
+#, no-c-format
+msgid "Seam configured Session"
+msgstr "Seam konfigurierte Session"
+
+#. Tag: para
+#: Mail.xml:186
+#, no-c-format
+msgid ""
+"A mail session can be configured via <literal>components.xml</literal>. Here "
+"we tell Seam to use <literal>smtp.example.com</literal> as the smtp server,"
+msgstr ""
+"Eine Mail-Session kann via <literal>components.xml</literal> konfiguriert "
+"werden. Hier teilen wir Seam mit, dass es <literal>smtp.example.com</"
+"literal> als den smtp-Server verwenden soll,"
+
+#. Tag: programlisting
+#: Mail.xml:189
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"        xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"        xmlns:mail=\"http://jboss.com/products/seam/mail\"&gt;\n"
+"        \n"
+"    &lt;mail:mail-session host=\"smtp.example.com\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"        xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"        xmlns:mail=\"http://jboss.com/products/seam/mail\"&gt;\n"
+"        \n"
+"    &lt;mail:mail-session host=\"smtp.example.com\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+
+#. Tag: title
+#: Mail.xml:197
+#, no-c-format
+msgid "Tags"
+msgstr "Tags"
+
+#. Tag: para
+#: Mail.xml:198
+#, no-c-format
+msgid ""
+"Emails are generated using tags in the <literal>http://jboss.com/products/"
+"seam/mail</literal> namespace. Documents should always have the "
+"<literal>message</literal> tag at the root of the message. The message tag "
+"prepares Seam to generate an email."
+msgstr ""
+"E-Mails werden unter Verwendung von Tags im <literal>http://jboss.com/"
+"products/seam/mail</literal>-Namespace generiert. Dokumente sollten stets "
+"das <literal>message</literal>-Tag am root der Nachricht besitzen. Das "
+"Message-Tag teilt Seam mit, dass eine E-Mail generiert werden soll."
+
+#. Tag: para
+#: Mail.xml:201
+#, no-c-format
+msgid ""
+"The standard templating tags of facelets can be used as normal. Inside the "
+"body you can use any JSF tag which doesn&#39;t require access to external "
+"resources (stylesheets, javascript)."
+msgstr ""
+"Die standardmäßigen Templating-Tags von Facelets können ganz normal "
+"verwendet werden. Innerhalb des Textkörpers können Sie ein beliebiges JSF-Tag verwenden, das keinen Zugriff auf externe Ressourcen benötigt (stylesheets, javascript)."
+
+#. Tag: term
+#: Mail.xml:206
+#, no-c-format
+msgid "&lt;m:message&gt;"
+msgstr "&lt;m:message&gt;"
+
+#. Tag: para
+#: Mail.xml:208
+#, no-c-format
+msgid "Root tag of a mail message"
+msgstr "Root-Tag einer Mail-Nachricht"
+
+#. Tag: para
+#: Mail.xml:213
+#, no-c-format
+msgid ""
+"<literal>importance</literal> &mdash; low, normal or high. By default "
+"normal, this sets the importance of the mail message."
+msgstr ""
+"<literal>importance</literal> &mdash; niedrig, normal oder hoch. Die "
+"Standardeinstellung lautet normal; hier wird die Wichtigkeit der Mail-"
+"Nachricht eingestellt."
+
+#. Tag: para
+#: Mail.xml:218
+#, no-c-format
+msgid ""
+"<literal>precedence</literal> &mdash; sets the precedence of the message (e."
+"g. bulk)."
+msgstr ""
+"<literal>precedence</literal> &mdash; setzt die Priorität der Nachricht (z."
+"B. Masse)."
+
+#. Tag: para
+#: Mail.xml:223
+#, no-c-format
+msgid ""
+"<literal>requestReadReceipt</literal> &mdash; by default false, if set, a "
+"read receipt will be request will be added, with the read receipt being sent "
+"to the <literal>From:</literal> address."
+msgstr ""
+"<literal>requestReadReceipt</literal> &mdash; Standardeinstellung ist \"false"
+"\", falls eingestellt, wird eine Lesebestätigung hinzugefügt, wobei die "
+"Lesebestätigung an die <literal>From:</literal>-Adresse geschickt wird."
+
+#. Tag: para
+#: Mail.xml:228
+#, no-c-format
+msgid ""
+"<literal>urlBase</literal> &mdash; If set, the value is prepended to the "
+"<literal>requestContextPath</literal> allowing you to use components such as "
+"<literal>&lt;h:graphicImage&gt;</literal> in your emails."
+msgstr ""
+"<literal>urlBase</literal> &mdash; Falls eingestellt, wird der Wert "
+"<literal>requestContextPath</literal> vorangestellt, so dass Sie Komponenten "
+"wie <literal>&lt;h:graphicImage&gt;</literal> in Ihren E-Mails verwenden "
+"können."
+
+#. Tag: term
+#: Mail.xml:236
+#, no-c-format
+msgid "&lt;m:from&gt;"
+msgstr "&lt;m:from&gt;"
+
+#. Tag: para
+#: Mail.xml:238
+#, no-c-format
+msgid ""
+"Set&#39;s the From: address for the email. You can only have one of these "
+"per email."
+msgstr ""
+"Setzt das \"Von\": Adresse für die E-Mail. Sie können nur eine davon pro E-"
+"Mail haben."
+
+#. Tag: para
+#: Mail.xml:243
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the name the email should come from."
+msgstr "<literal>name</literal> &mdash; der Name, von dem die E-Mail kommen sollte."
+
+#. Tag: para
+#: Mail.xml:248 Mail.xml:263
+#, no-c-format
+msgid ""
+"<literal>address</literal> &mdash; the email address the email should come "
+"from."
+msgstr ""
+"<literal>address</literal> &mdash; die E-Mail-Adresse, von der die E-Mail "
+"kommen sollte."
+
+#. Tag: term
+#: Mail.xml:256
+#, no-c-format
+msgid "&lt;m:replyTo&gt;"
+msgstr "&lt;m:replyTo&gt;"
+
+#. Tag: para
+#: Mail.xml:258
+#, no-c-format
+msgid ""
+"Set&#39;s the Reply-to: address for the email. You can only have one of "
+"these per email."
+msgstr ""
+"Setzt das \"Antworten an\": Adresse für die E-Mail. Sie können nur eine "
+"davon pro E-Mail haben."
+
+#. Tag: term
+#: Mail.xml:271
+#, no-c-format
+msgid "&lt;m:to&gt;"
+msgstr "&lt;m:to&gt;"
+
+#. Tag: para
+#: Mail.xml:273
+#, no-c-format
+msgid ""
+"Add a recipient to the email. Use multiple &lt;m:to&gt; tags for multiple "
+"recipients. This tag can be safely placed inside a repeat tag such as &lt;ui:"
+"repeat&gt;."
+msgstr ""
+"Fügen Sie der E-Mail einen Empfänger hinzu. Verwenden Sie mehrere &lt;m:"
+"to&gt;-Tags für mehrere Empfänger. Dieses Tag kann sicher innerhalb eines "
+"Wiederholungs-Tags wie &lt;ui:repeat&gt; platziert werden."
+
+#. Tag: para
+#: Mail.xml:278 Mail.xml:298 Mail.xml:318
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the name of the recipient."
+msgstr "<literal>name</literal> &mdash; Der Name des Empfängers."
+
+#. Tag: para
+#: Mail.xml:283 Mail.xml:303 Mail.xml:323
+#, no-c-format
+msgid "<literal>address</literal> &mdash; the email address of the recipient."
+msgstr "<literal>address</literal> &mdash; Die E-Mail-Adresse des Empfängers."
+
+#. Tag: term
+#: Mail.xml:291
+#, no-c-format
+msgid "&lt;m:cc&gt;"
+msgstr "&lt;m:cc&gt;"
+
+#. Tag: para
+#: Mail.xml:293
+#, no-c-format
+msgid ""
+"Add a cc recipient to the email. Use multiple &lt;m:cc&gt; tags for multiple "
+"ccs. This tag can be safely placed inside a repeat tag such as &lt;ui:"
+"repeat&gt;."
+msgstr ""
+"Fügen Sie der Mail einen cc-Empfänger hinzu. Verwenden Sie mehrere &lt;m:"
+"cc&gt;-Tags für mehrere ccs. Dieses Tag kann sicher in ein Wiederholungs-Tag "
+"wie &lt;ui:repeat&gt; eingefügt werden."
+
+#. Tag: term
+#: Mail.xml:311
+#, no-c-format
+msgid "&lt;m:bcc&gt;"
+msgstr "&lt;m:bcc&gt;"
+
+#. Tag: para
+#: Mail.xml:313
+#, no-c-format
+msgid ""
+"Add a bcc recipient to the email. Use multiple &lt;m:bcc&gt; tags for "
+"multiple bccs. This tag can be safely placed inside a repeat tag such as &lt;"
+"ui:repeat&gt;."
+msgstr ""
+"Fügen Sie der Mail einen bcc-Empfänger hinzu. Verwenden Sie mehrere &lt;m:"
+"bcc&gt;-Tags für mehrere bccs. Dieses Tag kann sicher in ein Wiederholungs-"
+"Tag wie &lt;ui:repeat&gt; eingefügt werde."
+
+#. Tag: term
+#: Mail.xml:331
+#, no-c-format
+msgid "&lt;m:header&gt;"
+msgstr "&lt;m:header&gt;"
+
+#. Tag: para
+#: Mail.xml:333
+#, no-c-format
+msgid "Add a header to the email (e.g. <literal>X-Sent-From: JBoss Seam</literal>"
+msgstr ""
+"Fügen SIe der E-Mail einen Header hinzu (z.B. <literal>X-Sent-From: JBoss "
+"Seam</literal>"
+
+#. Tag: para
+#: Mail.xml:338
+#, no-c-format
+msgid ""
+"<literal>name</literal> &mdash; The name of the header to add (e.g. "
+"<literal>X-Sent-From</literal>)."
+msgstr ""
+"<literal>name</literal> &mdash; Name des hinzuzufügenden Headers (z.B. "
+"<literal>X-Sent-From</literal>)."
+
+#. Tag: para
+#: Mail.xml:343
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; The value of the header to add (e.g. "
+"<literal>JBoss Seam</literal>)."
+msgstr ""
+"<literal>value</literal> &mdash; Der Wert des hinzuzufügenden Headers (z.B. "
+"<literal>JBoss Seam</literal>)."
+
+#. Tag: term
+#: Mail.xml:351
+#, no-c-format
+msgid "&lt;m:attachment&gt;"
+msgstr "&lt;m:attachment&gt;"
+
+#. Tag: para
+#: Mail.xml:353
+#, no-c-format
+msgid "Add an attachment to the email."
+msgstr "Hinzuügen eines Anhangs zur E-Mail"
+
+#. Tag: para
+#: Mail.xml:358
+#, no-c-format
+msgid "<literal>value</literal> &mdash; The file to attach:"
+msgstr "<literal>value</literal> &mdash; Die anzuhängende Datei:"
+
+#. Tag: para
+#: Mail.xml:363
+#, no-c-format
+msgid ""
+"<literal>String</literal> &mdash; A <literal>String</literal> is interpreted "
+"as a path to file within the classpath"
+msgstr ""
+"<literal>String</literal> &mdash; Ein <literal>String</literal> wird als "
+"Pfad zur Datei innerhalb des Klassenpfads interpretiert"
+
+#. Tag: para
+#: Mail.xml:368
+#, no-c-format
+msgid ""
+"<literal>java.io.File</literal> &mdash; An EL expression can reference a "
+"<literal>File</literal> object"
+msgstr ""
+"<literal>java.io.File</literal> &mdash; Ein EL-Ausdruck kann auf ein "
+"<literal>File</literal>-Objekt verweisen"
+
+#. Tag: para
+#: Mail.xml:373
+#, no-c-format
+msgid ""
+"<literal>java.net.URL</literal> &mdash; An EL expression can reference a "
+"<literal>URL</literal> object"
+msgstr ""
+"<literal>java.net.URL</literal> &mdash; Ein EL-Ausdruck kann auf "
+"ein<literal>URL</literal>-Objekt verweisen"
+
+#. Tag: para
+#: Mail.xml:378
+#, no-c-format
+msgid ""
+"<literal>java.io.InputStream</literal> &mdash; An EL expression can "
+"reference an <literal>InputStream</literal>. In this case both a "
+"<literal>fileName</literal> and a <literal>contentType</literal> must be "
+"specified."
+msgstr ""
+"<literal>java.io.InputStream</literal> &mdash; Ein EL-Ausdruck kann auf "
+"<literal>InputStream</literal> verweisen. In diesem Fall müssen sowohl ein "
+"<literal>fileName</literal> als auch ein <literal>contentType</literal> "
+"festgelegt sein."
+
+#. Tag: para
+#: Mail.xml:383
+#, no-c-format
+msgid ""
+"<literal>byte[]</literal> &mdash; An EL expression can reference an "
+"<literal>byte[]</literal>. In this case both a <literal>fileName</literal> "
+"and a <literal>contentType</literal> must be specified."
+msgstr ""
+"<literal>byte[]</literal> &mdash; Ein EL-Ausdruck kann auf ein <literal>byte"
+"[]</literal> verweisen. In diesem Fall müssen sowohl ein <literal>fileName</"
+"literal> als auch ein <literal>contentType</literal> festgelegt sein."
+
+#. Tag: para
+#: Mail.xml:388
+#, no-c-format
+msgid "If the value attribute is ommitted:"
+msgstr "Wenn der Attributwert weggelassen wird:"
+
+#. Tag: para
+#: Mail.xml:393
+#, no-c-format
+msgid ""
+"If this tag contains a <literal>&lt;p:document&gt;</literal> tag, the "
+"document described will be generated and attached to the email. A "
+"<literal>fileName</literal> should be specfied."
+msgstr ""
+"Falls dieses Tag ein <literal>&lt;p:document&gt;</literal>-Tag enthält, so "
+"wird das beschriebene Dokument generiert und der E-Mail angehängt. Ein "
+"<literal>fileName</literal> sollte festgelegt werden."
+
+#. Tag: para
+#: Mail.xml:398
+#, no-c-format
+msgid ""
+"If this tag contains other JSF tags a HTML document will be generated from "
+"them and attached to the email. A <literal>fileName</literal> should be "
+"specfied."
+msgstr ""
+"Falls dieses Tag andere JSF-Tags enthält, so wird ein HTML-Dokument aus "
+"diesen generiert und der E-Mail angehängt. Ein <literal>fileName</literal> "
+"sollte festgelegt werden."
+
+#. Tag: para
+#: Mail.xml:405
+#, no-c-format
+msgid ""
+"<literal>fileName</literal> &mdash; Specify the file name to use for the "
+"attached file."
+msgstr ""
+"<literal>fileName</literal> &mdash; Legen Sie den für die angehängte Datei "
+"zu verwendenden Dateinamen fest."
+
+#. Tag: para
+#: Mail.xml:410
+#, no-c-format
+msgid ""
+"<literal>contentType</literal> &mdash; Specify the MIME type of the attached "
+"file"
+msgstr ""
+"<literal>contentType</literal> &mdash; Legen Sie den MIME-Typ der "
+"angehängten Datei fest"
+
+#. Tag: term
+#: Mail.xml:418
+#, no-c-format
+msgid "&lt;m:subject&gt;"
+msgstr "&lt;m:subject&gt;"
+
+#. Tag: para
+#: Mail.xml:420
+#, no-c-format
+msgid "Set&#39;s the subject for the email."
+msgstr "Setzt den Betreff der E-Mail."
+
+#. Tag: term
+#: Mail.xml:426
+#, no-c-format
+msgid "&lt;m:body&gt;"
+msgstr "&lt;m:body&gt;"
+
+#. Tag: para
+#: Mail.xml:428
+#, no-c-format
+msgid ""
+"Set&#39;s the body for the email. Supports an <literal>alternative</literal> "
+"facet which, if an HTML email is generated can contain alternative text for "
+"a mail reader which doesn&#39;t support html."
+msgstr "Setzt den Textkörper der E-Mail. Unterstützt ein <literal>alternative</literal> Facet, welches - wird eine HTML E-Mail generiert - alternativen Text enthalten kann, wenn der Mail-Reader kein html unterstützt."
+
+#. Tag: para
+#: Mail.xml:433
+#, no-c-format
+msgid ""
+"<literal>type</literal> &mdash; If set to <literal>plain</literal> then a "
+"plain text email will be generated otherwise an HTML email is generated."
+msgstr ""
+"<literal>type</literal> &mdash; Wenn die Einstellung <literal>plain</"
+"literal> lautet, so wird eine einfache Text E-Mail generiert, andernfalls "
+"eine HTML E-Mail."
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Persistence.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Persistence.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Persistence.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,863 @@
+# translation of Persistence.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Jasna Dimanoski <jdimanos at redhat.com>, 2007, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Persistence\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2008-06-02 07:15+1000\n"
+"Last-Translator: Jasna Dimanoski <jdimanos at redhat.com>\n"
+"Language-Team:  <de at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Persistence.xml:6
+#, no-c-format
+msgid "Seam and Object/Relational Mapping"
+msgstr "Seam und Objekt/Relationales Mapping"
+
+#. Tag: para
+#: Persistence.xml:7
+#, no-c-format
+msgid ""
+"Seam provides extensive support for the two most popular persistence "
+"architectures for Java: Hibernate3, and the Java Persistence API introduced "
+"with EJB 3.0. Seam&#39;s unique state-management architecture allows the "
+"most sophisticated ORM integration of any web application framework."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:11
+#, no-c-format
+msgid "Introduction"
+msgstr "Einführung"
+
+#. Tag: para
+#: Persistence.xml:12
+#, no-c-format
+msgid ""
+"Seam grew out of the frustration of the Hibernate team with the "
+"statelessness typical of the previous generation of Java application "
+"architectures. The state management architecture of Seam was originally "
+"designed to solve problems relating to persistence&mdash;in particular "
+"problems associated with <emphasis>optimistic transaction processing</"
+"emphasis>. Scalable online applications always use optimistic transactions. "
+"An atomic (database/JTA) level transaction should not span a user "
+"interaction unless the application is designed to support only a very small "
+"number of concurrent clients. But almost all interesting work involves first "
+"displaying data to a user, and then, slightly later, updating the same data. "
+"So Hibernate was designed to support the idea of a persistence context which "
+"spanned an optimistic transaction."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:15
+#, no-c-format
+msgid ""
+"Unfortunately, the so-called \"stateless\" architectures that preceded Seam "
+"and EJB 3.0 had no construct for representing an optimistic transaction. So, "
+"instead, these architectures provided persistence contexts scoped to the "
+"atomic transaction. Of course, this resulted in many problems for users, and "
+"is the cause of the number one user complaint about Hibernate: the dreaded "
+"<literal>LazyInitializationException</literal>. What we need is a construct "
+"for representing an optimistic transaction in the application tier."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:18
+#, no-c-format
+msgid ""
+"EJB 3.0 recognizes this problem, and introduces the idea of a stateful "
+"component (a stateful session bean) with an <emphasis>extended persistence "
+"context</emphasis> scoped to the lifetime of the component. This is a "
+"partial solution to the problem (and is a useful construct in and of itself) "
+"however there are two problems:"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:23
+#, no-c-format
+msgid ""
+"The lifecycle of the stateful session bean must be managed manually via code "
+"in the web tier (it turns out that this is a subtle problem and much more "
+"difficult in practice than it sounds)."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:28
+#, no-c-format
+msgid ""
+"Propagation of the persistence context between stateful components in the "
+"same optimistic transaction is possible, but tricky."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:33
+#, no-c-format
+msgid ""
+"Seam solves the first problem by providing conversations, and stateful "
+"session bean components scoped to the conversation. (Most conversations "
+"actually represent optimistic transactions in the data layer.) This is "
+"sufficient for many simple applications (such as the Seam booking demo) "
+"where persistence context propagation is not needed. For more complex "
+"applications, with many loosly-interacting components in each conversation, "
+"propagation of the persistence context across components becomes an "
+"important issue. So Seam extends the persistence context management model of "
+"EJB 3.0, to provide conversation-scoped extended persistence contexts."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:39
+#, no-c-format
+msgid "Seam managed transactions"
+msgstr "Durch Seam gemanagte Transaktionen"
+
+#. Tag: para
+#: Persistence.xml:40
+#, no-c-format
+msgid ""
+"EJB session beans feature declarative transaction management. The EJB "
+"container is able to start a transaction transparently when the bean is "
+"invoked, and end it when the invocation ends. If we write a session bean "
+"method that acts as a JSF action listener, we can do all the work associated "
+"with that action in one transaction, and be sure that it is committed or "
+"rolled back when we finish processing the action. This is a great feature, "
+"and all that is needed by some Seam applications."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:43
+#, no-c-format
+msgid ""
+"However, there is a problem with this approach. A Seam application may not "
+"perform all data access for a request from a single method call to a session "
+"bean."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:48
+#, no-c-format
+msgid ""
+"The request might require processing by several loosly-coupled components, "
+"each of which is called independently from the web layer. It is common to "
+"see several or even many calls per request from the web layer to EJB "
+"components in Seam."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:53
+#, no-c-format
+msgid "Rendering of the view might require lazy fetching of associations."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:58
+#, no-c-format
+msgid ""
+"The more transactions per request, the more likely we are to encounter "
+"atomicity and isolation problems when our application is processing many "
+"concurrent requests. Certainly, all write operations should occur in the "
+"same transaction!"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:61
+#, no-c-format
+msgid ""
+"Hibernate users developed the <emphasis>\"open session in view\"</emphasis> "
+"pattern to work around this problem. In the Hibernate community, \"open "
+"session in view\" was historically even more important because frameworks "
+"like Spring use transaction-scoped persistence contexts. So rendering the "
+"view would cause <literal>LazyInitializationException</literal>s when "
+"unfetched associations were accessed."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:64
+#, no-c-format
+msgid ""
+"This pattern is usually implemented as a single transaction which spans the "
+"entire request. There are several problems with this implementation, the "
+"most serious being that we can never be sure that a transaction is "
+"successful until we commit it&mdash;but by the time the \"open session in "
+"view\" transaction is committed, the view is fully rendered, and the "
+"rendered response may already have been flushed to the client. How can we "
+"notify the user that their transaction was unsuccessful?"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:67
+#, no-c-format
+msgid ""
+"Seam solves both the transaction isolation problem and the association "
+"fetching problem, while working around the problems with \"open session in "
+"view\". The solution comes in two parts:"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:72
+#, no-c-format
+msgid ""
+"use an extended persistence context that is scoped to the conversation, "
+"instead of to the transaction"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:77
+#, no-c-format
+msgid ""
+"use two transactions per request; the first spans the beginning of the "
+"update model values phase until the end of the invoke application phase; the "
+"second spans the render response phase"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:82
+#, no-c-format
+msgid ""
+"In the next section, we&#39;ll tell you how to set up a conversation-scope "
+"persistence context. But first we need to tell you how to enable Seam "
+"transaction management. Note that you can use conversation-scoped "
+"persistence contexts without Seam transaction management, and there are good "
+"reasons to use Seam transaction management even when you&#39;re not using "
+"Seam-managed persistence contexts. However, the two facilities were designed "
+"to work together, and work best when used together."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:86
+#, no-c-format
+msgid "Enabling Seam-managed transactions"
+msgstr "Aktivieren Seam-gemanagter Transaktionen"
+
+#. Tag: para
+#: Persistence.xml:87
+#, no-c-format
+msgid ""
+"To make use of <emphasis>Seam managed transactions</emphasis>, you need to "
+"use <literal>TransactionalSeamPhaseListener</literal> in place of "
+"<literal>SeamPhaseListener</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:90
+#, no-c-format
+msgid ""
+"&lt;lifecycle&gt;\n"
+"     &lt;phase-listener&gt;\n"
+"        org.jboss.seam.jsf.TransactionalSeamPhaseListener\n"
+"    &lt;/phase-listener&gt;\n"
+"&lt;/lifecycle&gt;"
+msgstr ""
+"&lt;lifecycle&gt;\n"
+"     &lt;phase-listener&gt;\n"
+"        org.jboss.seam.jsf.TransactionalSeamPhaseListener\n"
+"    &lt;/phase-listener&gt;\n"
+"&lt;/lifecycle&gt;"
+
+#. Tag: para
+#: Persistence.xml:91
+#, no-c-format
+msgid ""
+"Seam transaction management is useful even if you&#39;re using EJB 3.0 "
+"container-managed persistence contexts. But it is especially useful if you "
+"use Seam outside a Java EE 5 environment, or in any other case where you "
+"would use a Seam-managed persistence context."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:99
+#, no-c-format
+msgid "Seam-managed persistence contexts"
+msgstr "Seam-gemanagte Persistenz-Kontexte"
+
+#. Tag: para
+#: Persistence.xml:100
+#, no-c-format
+msgid ""
+"If you&#39;re using Seam outside of a Java EE 5 environment, you can&#39;t "
+"rely upon the container to manage the persistence context lifecycle for you. "
+"Even if you are in an EE 5 environment, you might have a complex application "
+"with many loosly coupled components that collaborate together in the scope "
+"of a single conversation, and in this case you might find that propagation "
+"of the persistence context between component is tricky and error-prone."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:103
+#, no-c-format
+msgid ""
+"In either case, you&#39;ll need to use a <emphasis>managed persistence "
+"context</emphasis> (for JPA) or a <emphasis>managed session</emphasis> (for "
+"Hibernate) in your components. A Seam-managed persistence context is just a "
+"built-in Seam component that manages an instance of <literal>EntityManager</"
+"literal> or <literal>Session</literal> in the conversation context. You can "
+"inject it with <literal>@In</literal>."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:106
+#, no-c-format
+msgid ""
+"Seam-managed persistence contexts are extremely efficient in a clustered "
+"environment. Seam is able to perform an optimization that EJB 3.0 "
+"specification does not allow containers to use for container-managed "
+"extended persistence contexts. Seam supports transparent failover of "
+"extended persisence contexts, without the need to replicate any persistence "
+"context state between nodes. (We hope to fix this oversight in the next "
+"revision of the EJB spec.)"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:110
+#, no-c-format
+msgid "Using a Seam-managed persistence context with JPA"
+msgstr "Verwendung eines Seam-gemanagten Persistenzkontexts mit JPA"
+
+#. Tag: para
+#: Persistence.xml:111
+#, no-c-format
+msgid ""
+"Configuring a managed persistence context is easy. In <literal>components."
+"xml</literal>, we can write:"
+msgstr ""
+"Die Konfiguration eines gemanagten Persistenzkontexts ist einfach. In <literal>components."
+"xml</literal>, können wir schreiben:"
+
+#. Tag: programlisting
+#: Persistence.xml:114
+#, no-c-format
+msgid ""
+"&lt;core:managed-persistence-context name=\"bookingDatabase\" \n"
+"                           auto-create=\"true\"\n"
+"            persistence-unit-jndi-name=\"java:/EntityManagerFactories/"
+"bookingData\"/&gt;"
+msgstr ""
+"&lt;core:managed-persistence-context name=\"bookingDatabase\" \n"
+"                           auto-create=\"true\"\n"
+"            persistence-unit-jndi-name=\"java:/EntityManagerFactories/"
+"bookingData\"/&gt;"
+
+#. Tag: para
+#: Persistence.xml:115
+#, no-c-format
+msgid ""
+"This configuration creates a conversation-scoped Seam component named "
+"<literal>bookingDatabase</literal> that manages the lifecycle of "
+"<literal>EntityManager</literal> instances for the persistence unit "
+"(<literal>EntityManagerFactory</literal> instance) with JNDI name "
+"<literal>java:/EntityManagerFactories/bookingData</literal>."
+msgstr ""
+"Diese Konfiguration erstellt eine Konversations-begrenzte Seam Komponente namens "
+"<literal>bookingDatabase</literal>, die den Lebenszyklus von "
+"<literal>EntityManager</literal>-Instanzen für die Persistenzeinheit "
+"(<literal>EntityManagerFactory</literal> instance) mit JNDI-Namen "
+"<literal>java:/EntityManagerFactories/bookingData</literal> managt."
+
+#. Tag: para
+#: Persistence.xml:118
+#, no-c-format
+msgid ""
+"Of course, you need to make sure that you have bound the "
+"<literal>EntityManagerFactory</literal> into JNDI. In JBoss, you can do this "
+"by adding the following property setting to <literal>persistence.xml</"
+"literal>."
+msgstr ""
+"Natürlich müssen Sie sicherstellen, dass Sie die "
+"<literal>EntityManagerFactory</literal> in JNDI eingebunden haben. In JBoss können Sie dies tun, indem Sie die folgende Property-Einstellung "
+"<literal>persistence.xml</literal> hinzufügen."
+
+#. Tag: programlisting
+#: Persistence.xml:121
+#, no-c-format
+msgid ""
+"&lt;property name=\"jboss.entity.manager.factory.jndi.name\" \n"
+"          value=\"java:/EntityManagerFactories/bookingData\"/&gt;"
+msgstr ""
+"&lt;property name=\"jboss.entity.manager.factory.jndi.name\" \n"
+"          value=\"java:/EntityManagerFactories/bookingData\"/&gt;"
+
+#. Tag: para
+#: Persistence.xml:122
+#, no-c-format
+msgid "Now we can have our <literal>EntityManager</literal> injected using:"
+msgstr "Wir können nun unseren <literal>EntityManager</literal> einspeisen mittels:"
+
+#. Tag: programlisting
+#: Persistence.xml:125
+#, no-c-format
+msgid "@In EntityManager bookingDatabase;"
+msgstr "@In EntityManager bookingDatabase;"
+
+#. Tag: title
+#: Persistence.xml:129
+#, no-c-format
+msgid "Using a Seam-managed Hibernate session"
+msgstr "Die Verwendung einer Seam-gemanagten Hibernate Session"
+
+#. Tag: para
+#: Persistence.xml:130
+#, no-c-format
+msgid ""
+"Seam-managed Hibernate sessions are similar. In <literal>components.xml</"
+"literal>:"
+msgstr "Seam-gemanagte Hibernate Sessions sind ähnlich. In <literal>components.xml</literal>:"
+
+#. Tag: programlisting
+#: Persistence.xml:133
+#, no-c-format
+msgid ""
+"&lt;core:hibernate-session-factory name=\"hibernateSessionFactory\"/&gt;\n"
+"\n"
+"&lt;core:managed-hibernate-session name=\"bookingDatabase\" \n"
+"                         auto-create=\"true\"\n"
+"           session-factory-jndi-name=\"java:/bookingSessionFactory\"/&gt;"
+msgstr ""
+"&lt;core:hibernate-session-factory name=\"hibernateSessionFactory\"/&gt;\n"
+"\n"
+"&lt;core:managed-hibernate-session name=\"bookingDatabase\" \n"
+"                         auto-create=\"true\"\n"
+"           session-factory-jndi-name=\"java:/bookingSessionFactory\"/&gt;"
+
+#. Tag: para
+#: Persistence.xml:134
+#, no-c-format
+msgid ""
+"Where <literal>java:/bookingSessionFactory</literal> is the name of the "
+"session factory specified in <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+"Wo <literal>java:/bookingSessionFactory</literal> der Name der in "
+"<literal>hibernate.cfg.xml</literal> festgelegten Session Factory ist."
+
+#. Tag: programlisting
+#: Persistence.xml:137
+#, no-c-format
+msgid ""
+"&lt;session-factory name=\"java:/bookingSessionFactory\"&gt;\n"
+"    &lt;property name=\"transaction.flush_before_completion\"&gt;true&lt;/"
+"property&gt;\n"
+"    &lt;property name=\"connection.release_mode\"&gt;after_statement&lt;/"
+"property&gt;\n"
+"    &lt;property name=\"transaction.manager_lookup_class\"&gt;\n"
+"       org.hibernate.transaction.JBossTransactionManagerLookup\n"
+"    &lt;/property&gt;\n"
+"    &lt;property name=\"transaction.factory_class\"&gt;\n"
+"       org.hibernate.transaction.JTATransactionFactory\n"
+"    &lt;/property&gt;\n"
+"    &lt;property name=\"connection.datasource\"&gt;java:/"
+"bookingDatasource&lt;/property&gt;\n"
+"    ...\n"
+"&lt;/session-factory&gt;"
+msgstr ""
+"&lt;session-factory name=\"java:/bookingSessionFactory\"&gt;\n"
+"    &lt;property name=\"transaction.flush_before_completion\"&gt;true&lt;/"
+"property&gt;\n"
+"    &lt;property name=\"connection.release_mode\"&gt;after_statement&lt;/"
+"property&gt;\n"
+"    &lt;property name=\"transaction.manager_lookup_class\"&gt;\n"
+"       org.hibernate.transaction.JBossTransactionManagerLookup\n"
+"    &lt;/property&gt;\n"
+"    &lt;property name=\"transaction.factory_class\"&gt;\n"
+"       org.hibernate.transaction.JTATransactionFactory\n"
+"    &lt;/property&gt;\n"
+"    &lt;property name=\"connection.datasource\"&gt;java:/"
+"bookingDatasource&lt;/property&gt;\n"
+"    ...\n"
+"&lt;/session-factory&gt;"
+
+#. Tag: para
+#: Persistence.xml:138
+#, no-c-format
+msgid ""
+"Note that Seam does not flush the session, so you should always enable "
+"<literal>hibernate.transaction.flush_before_completion</literal> to ensure "
+"that the session is automatically flushed before the JTA transaction commits."
+msgstr ""
+"Beachten Sie, dass Seam die Session nicht bereinigt, daher sollten Sie stets "
+"<literal>hibernate.transaction.flush_before_completion</literal> aktivieren, um sicher zu stellen, dass die Session automatisch bereinigt wird, ehe die JTA-Transaktion festgeschrieben wird."
+
+#. Tag: para
+#: Persistence.xml:141
+#, no-c-format
+msgid ""
+"We can now have a managed Hibernate <literal>Session</literal> injected into "
+"our JavaBean components using the following code:"
+msgstr "Wir können jetzt eine gemanagte Hibernate <literal>Session</literal> mittels folgendem Code in unsere JavaBean-Komponenten einspeisen:"
+
+#. Tag: programlisting
+#: Persistence.xml:144
+#, no-c-format
+msgid "@In Session bookingDatabase;"
+msgstr "@In Session bookingDatabase;"
+
+#. Tag: title
+#: Persistence.xml:148
+#, no-c-format
+msgid "Seam-managed persistence contexts and atomic conversations"
+msgstr "Seam-managte Persistenzkontexte und atomische Konversationen"
+
+#. Tag: para
+#: Persistence.xml:149
+#, no-c-format
+msgid ""
+"Persistence contexts scoped to the conversation allows you to program "
+"optimistic transactions that span multiple requests to the server without "
+"the need to use the <literal>merge()</literal> operation , without the need "
+"to re-load data at the beginning of each request, and without the need to "
+"wrestle with the <literal>LazyInitializationException</literal> or "
+"<literal>NonUniqueObjectException</literal>."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:152
+#, no-c-format
+msgid ""
+"As with any optimistic transaction management, transaction isolation and "
+"consistency can be achieved via use of optimistic locking. Fortunately, both "
+"Hibernate and EJB 3.0 make it very easy to use optimistic locking, by "
+"providing the <literal>@Version</literal> annotation."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:155
+#, no-c-format
+msgid ""
+"By default, the persistence context is flushed (synchronized with the "
+"database) at the end of each transaction. This is sometimes the desired "
+"behavior. But very often, we would prefer that all changes are held in "
+"memory and only written to the database when the conversation ends "
+"successfully. This allows for truly atomic conversations. As the result of a "
+"truly stupid and shortsighted decision by certain non-JBoss, non-Sun and non-"
+"Sybase members of the EJB 3.0 expert group, there is currently no simple, "
+"usable and portable way to implement atomic conversations using EJB 3.0 "
+"persistence. However, Hibernate provides this feature as a vendor extension "
+"to the <literal>FlushModeType</literal>s defined by the specification, and "
+"it is our expectation that other vendors will soon provide a similar "
+"extension."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:158
+#, no-c-format
+msgid ""
+"Seam lets you specify <literal>FlushModeType.MANUAL</literal> when beginning "
+"a conversation. Currently, this works only when Hibernate is the underlying "
+"persistence provider, but we plan to support other equivalent vendor "
+"extensions."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:161
+#, no-c-format
+msgid ""
+"@In EntityManager em; //a Seam-managed persistence context\n"
+"\n"
+"@Begin(flushMode=MANUAL)\n"
+"public void beginClaimWizard() {\n"
+"    claim = em.find(Claim.class, claimId);\n"
+"}"
+msgstr ""
+"@In EntityManager em; //a Seam-managed persistence context\n"
+"\n"
+"@Begin(flushMode=MANUAL)\n"
+"public void beginClaimWizard() {\n"
+"    claim = em.find(Claim.class, claimId);\n"
+"}"
+
+#. Tag: para
+#: Persistence.xml:162
+#, no-c-format
+msgid ""
+"Now, the <literal>claim</literal> object remains managed by the persistence "
+"context for the rest ot the conversation. We can make changes to the claim:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:165
+#, no-c-format
+msgid ""
+"public void addPartyToClaim() {\n"
+"    Party party = ....;\n"
+"    claim.addParty(party);\n"
+"}"
+msgstr ""
+"public void addPartyToClaim() {\n"
+"    Party party = ....;\n"
+"    claim.addParty(party);\n"
+"}"
+
+#. Tag: para
+#: Persistence.xml:166
+#, no-c-format
+msgid ""
+"But these changes will not be flushed to the database until we explicitly "
+"force the flush to occur:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:169
+#, no-c-format
+msgid ""
+"@End\n"
+"public void commitClaim() {\n"
+"    em.flush();\n"
+"}"
+msgstr ""
+"@End\n"
+"public void commitClaim() {\n"
+"    em.flush();\n"
+"}"
+
+#. Tag: title
+#: Persistence.xml:175
+#, no-c-format
+msgid "Using the JPA \"delegate\""
+msgstr "Verwendung des JPA-\"Delegate\""
+
+#. Tag: para
+#: Persistence.xml:176
+#, no-c-format
+msgid ""
+"The <literal>EntityManager</literal> interface lets you access a vendor-"
+"specific API via the <literal>getDelegate()</literal> method. Naturally, the "
+"most interesting vendor is Hibernate, and the most powerful delegate "
+"interface is <literal>org.hibernate.Session</literal>. You&#39;d be nuts to "
+"use anything else. Trust me, I&#39;m not biased at all."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:179
+#, no-c-format
+msgid ""
+"But regardless of whether you&#39;re using Hibernate (genius!) or something "
+"else (masochist, or just not very bright), you&#39;ll almost certainly want "
+"to use the delegate in your Seam components from time to time. One approach "
+"would be the following:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:182
+#, no-c-format
+msgid ""
+"@In EntityManager entityManager;\n"
+"\n"
+"@Create\n"
+"public void init() {\n"
+"    ( (Session) entityManager.getDelegate() ).enableFilter(\"currentVersions"
+"\");\n"
+"}"
+msgstr ""
+"@In EntityManager entityManager;\n"
+"\n"
+"@Create\n"
+"public void init() {\n"
+"    ( (Session) entityManager.getDelegate() ).enableFilter(\"currentVersions"
+"\");\n"
+"}"
+
+#. Tag: para
+#: Persistence.xml:183
+#, no-c-format
+msgid ""
+"But typecasts are unquestionably the ugliest syntax in the Java language, so "
+"most people avoid them whenever possible. Here&#39;s a different way to get "
+"at the delegate. First, add the following line to <literal>components.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:186
+#, no-c-format
+msgid ""
+"&lt;factory name=\"session\" \n"
+"         scope=\"STATELESS\" \n"
+"         auto-create=\"true\" \n"
+"         value=\"#{entityManager.delegate}\"/&gt;"
+msgstr ""
+"&lt;factory name=\"session\" \n"
+"         scope=\"STATELESS\" \n"
+"         auto-create=\"true\" \n"
+"         value=\"#{entityManager.delegate}\"/&gt;"
+
+#. Tag: para
+#: Persistence.xml:187
+#, no-c-format
+msgid "Now we can inject the session directly:"
+msgstr "Jetzt können wir die Session direkt einspeisen:"
+
+#. Tag: programlisting
+#: Persistence.xml:190
+#, no-c-format
+msgid ""
+"@In Session session;\n"
+"\n"
+"@Create\n"
+"public void init() {\n"
+"    session.enableFilter(\"currentVersions\");\n"
+"}"
+msgstr ""
+"@In Session session;\n"
+"\n"
+"@Create\n"
+"public void init() {\n"
+"    session.enableFilter(\"currentVersions\");\n"
+"}"
+
+#. Tag: title
+#: Persistence.xml:194
+#, no-c-format
+msgid "Using EL in EJB-QL/HQL"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:195
+#, no-c-format
+msgid ""
+"Seam proxies the <literal>EntityManager</literal> or <literal>Session</"
+"literal> object whenever you use a Seam-managed persistence context or "
+"inject a container managed persistence context using "
+"<literal>@PersistenceContext</literal>. This lets you use EL expressions in "
+"your query strings, safely and efficiently. For example, this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:198
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=#{user.username}\")\n"
+"         .getSingleResult();"
+msgstr ""
+"User user = em.createQuery(\"from User where username=#{user.username}\")\n"
+"         .getSingleResult();"
+
+#. Tag: para
+#: Persistence.xml:199
+#, no-c-format
+msgid "is equivalent to:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:202
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getSingleResult();"
+msgstr ""
+"User user = em.createQuery(\"from User where username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getSingleResult();"
+
+#. Tag: para
+#: Persistence.xml:203
+#, no-c-format
+msgid "Of course, you should never, ever write it like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:206
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=\" + user.getUsername"
+"()) //BAD!\n"
+"         .getSingleResult();"
+msgstr ""
+"User user = em.createQuery(\"from User where username=\" + user.getUsername"
+"()) //BAD!\n"
+"         .getSingleResult();"
+
+#. Tag: para
+#: Persistence.xml:207
+#, no-c-format
+msgid "(It is inefficient and vulnerable to SQL injection attacks.)"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:213
+#, no-c-format
+msgid "Using Hibernate filters"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:214
+#, no-c-format
+msgid ""
+"The coolest, and most unique, feature of Hibernate is <emphasis>filters</"
+"emphasis>. Filters let you provide a restricted view of the data in the "
+"database. You can find out more about filters in the Hibernate "
+"documentation. But we thought we&#39;d mention an easy way to incorporate "
+"filters into a Seam application, one that works especially well with the "
+"Seam Application Framework."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:217
+#, no-c-format
+msgid ""
+"Seam-managed persistence contexts may have a list of filters defined, which "
+"will be enabled whenever an <literal>EntityManager</literal> or Hibernate "
+"<literal>Session</literal> is first created. (Of course, they may only be "
+"used when Hibernate is the underlying persistence provider.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:220
+#, no-c-format
+msgid ""
+"&lt;core:filter name=\"regionFilter\"&gt;\n"
+"    &lt;core:name&gt;region&lt;/core:name&gt;\n"
+"    &lt;core:parameters&gt;\n"
+"        &lt;key&gt;regionCode&lt;/key&gt;\n"
+"        &lt;value&gt;#{region.code}&lt;/value&gt;\n"
+"    &lt;/core:parameters&gt;\n"
+"&lt;/core:filter&gt;\n"
+"\n"
+"&lt;core:filter name=\"currentFilter\"&gt;\n"
+"    &lt;core:name&gt;current&lt;/core:name&gt;\n"
+"    &lt;core:parameters&gt;\n"
+"        &lt;key&gt;date&lt;/key&gt;\n"
+"        &lt;value&gt;#{currentDate}&lt;/value&gt;\n"
+"    &lt;/core:parameters&gt;\n"
+"&lt;/core:filter&gt;\n"
+"\n"
+"&lt;core:managed-persistence-context name=\"personDatabase\"\n"
+"    persistence-unit-jndi-name=\"java:/EntityManagerFactories/personDatabase"
+"\"&gt;\n"
+"    &lt;core:filters&gt;\n"
+"        &lt;value&gt;#{regionFilter}&lt;/value&gt;\n"
+"        &lt;value&gt;#{currentFilter}&lt;/value&gt;\n"
+"    &lt;/core:filters&gt;\n"
+"&lt;/core:managed-persistence-context&gt;"
+msgstr ""
+"&lt;core:filter name=\"regionFilter\"&gt;\n"
+"    &lt;core:name&gt;region&lt;/core:name&gt;\n"
+"    &lt;core:parameters&gt;\n"
+"        &lt;key&gt;regionCode&lt;/key&gt;\n"
+"        &lt;value&gt;#{region.code}&lt;/value&gt;\n"
+"    &lt;/core:parameters&gt;\n"
+"&lt;/core:filter&gt;\n"
+"\n"
+"&lt;core:filter name=\"currentFilter\"&gt;\n"
+"    &lt;core:name&gt;current&lt;/core:name&gt;\n"
+"    &lt;core:parameters&gt;\n"
+"        &lt;key&gt;date&lt;/key&gt;\n"
+"        &lt;value&gt;#{currentDate}&lt;/value&gt;\n"
+"    &lt;/core:parameters&gt;\n"
+"&lt;/core:filter&gt;\n"
+"\n"
+"&lt;core:managed-persistence-context name=\"personDatabase\"\n"
+"    persistence-unit-jndi-name=\"java:/EntityManagerFactories/personDatabase"
+"\"&gt;\n"
+"    &lt;core:filters&gt;\n"
+"        &lt;value&gt;#{regionFilter}&lt;/value&gt;\n"
+"        &lt;value&gt;#{currentFilter}&lt;/value&gt;\n"
+"    &lt;/core:filters&gt;\n"
+"&lt;/core:managed-persistence-context&gt;"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Remoting.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Remoting.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Remoting.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1688 @@
+# translation of Remoting.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Jasna Dimanoski <jdimanos at redhat.com>, 2007, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Remoting\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2008-05-11 11:23+1000\n"
+"Last-Translator: Jasna Dimanoski <jdimanos at redhat.com>\n"
+"Language-Team:  <de at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Remoting.xml:6
+#, no-c-format
+msgid "Remoting"
+msgstr "Remoting"
+
+#. Tag: para
+#: Remoting.xml:7
+#, no-c-format
+msgid ""
+"Seam provides a convenient method of remotely accessing components from a "
+"web page, using AJAX (Asynchronous Javascript and XML). The framework for "
+"this functionality is provided with almost no up-front development effort - "
+"your components only require simple annotating to become accessible via "
+"AJAX. This chapter describes the steps required to build an AJAX-enabled web "
+"page, then goes on to explain the features of the Seam Remoting framework in "
+"more detail."
+msgstr "Seam bietet eine bequeme Methode des Remote-Zugriffs auf Komponenten von einer Webseite mittels AJAX (Asynchronous Javascript und XML). Das Framework für diese Funktionalität wird mit fast keinem im Voraus nötigen Entwicklungsaufwand geliefert - Ihre Komponenten benötigen nur einfaches Annotieren, damit via AJAX auf diese zugegriffen werden kann. Dieses Kapitel beschreibt die zum Build einer AJAX-fähigen Webseite notwendigen Schritte, und fährt dann mit der ausfühlicheren Erläuterung der Features des Seam Remoting Framework fort."
+
+#. Tag: title
+#: Remoting.xml:10 Remoting.xml:285
+#, no-c-format
+msgid "Configuration"
+msgstr "Konfiguration"
+
+#. Tag: para
+#: Remoting.xml:11
+#, no-c-format
+msgid ""
+"To use remoting, the Seam Resource servlet must first be configured in your "
+"<literal>web.xml</literal> file:"
+msgstr "Um Remoting zu verwenden, muss das Seam Resource Servlet zuerst in Ihrer <literal>web.xml</literal>-Datei konfiguriert sein:"
+
+#. Tag: programlisting
+#: Remoting.xml:14
+#, no-c-format
+msgid ""
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"  &lt;/servlet&gt;\n"
+"\n"
+"  &lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"  &lt;/servlet-mapping&gt;"
+msgstr ""
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"  &lt;/servlet&gt;\n"
+"\n"
+"  &lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"  &lt;/servlet-mapping&gt;"
+
+#. Tag: para
+#: Remoting.xml:15
+#, no-c-format
+msgid ""
+"The next step is to import the necessary Javascript into your web page. "
+"There are a minimum of two scripts that must be imported. The first one "
+"contains all the client-side framework code that enables remoting "
+"functionality:"
+msgstr "Im nächsten Schritt ist es wichtig, das benötigte Javascript in Ihre Webseite zu importieren. Zwei Skripts müssen mindestens importiert werden. Das erste enthält allen Framework-Code auf Client-Seite, der die Remoting-Funktionalität aktiviert:"
+
+#. Tag: programlisting
+#: Remoting.xml:18
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/resource/"
+"remote.js\"&gt;&lt;/script&gt;"
+msgstr ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/resource/"
+"remote.js\"&gt;&lt;/script&gt;"
+
+#. Tag: para
+#: Remoting.xml:19
+#, no-c-format
+msgid ""
+"The second script contains the stubs and type definitions for the components "
+"you wish to call. It is generated dynamically based on the local interface "
+"of your components, and includes type definitions for all of the classes "
+"that can be used to call the remotable methods of the interface. The name of "
+"the script reflects the name of your component. For example, if you have a "
+"stateless session bean annotated with <literal>@Name(\"customerAction\")</"
+"literal>, then your script tag should look like this:"
+msgstr ""
+"Das zweite Skript enthält die Stubs und Typdefinitionen für die Komponenten, die Sie aufrufen möchten. Es wird - basierend auf das lokale Interface Ihrer Komponenten - dynamisch generiert und beinhaltet Typdefinitionen für alle Klassen, die dazu verwendet werden können, remotebare Methoden des Interface aufzurufen. Der Name des Skripts reflektiert den Namen Ihrer Komponente. Besitzen Sie etwa ein Stateless Session Bean, das mit <literal>@Name(\"customerAction\")</"
+"literal> annotiert ist, so sollte Ihr Skript-Tag wie folgt aussehen:"
+
+#. Tag: programlisting
+#: Remoting.xml:22
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?customerAction\"&gt;\n"
+"    &lt;/script&gt;"
+msgstr ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?customerAction\"&gt;\n"
+"    &lt;/script&gt;"
+
+#. Tag: para
+#: Remoting.xml:23
+#, no-c-format
+msgid ""
+"If you wish to access more than one component from the same page, then "
+"include them all as parameters of your script tag:"
+msgstr "Falls Sie auf mehr als eine Komponente von derselben Seite zugreifen möchten, so schließen Sie diese alle als Parameter Ihres Skript-Tags mit ein:"
+
+#. Tag: programlisting
+#: Remoting.xml:26
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" \n"
+"     src=\"seam/resource/remoting/interface.js?customerAction&amp;"
+"accountAction\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+"&lt;script type=\"text/javascript\" \n"
+"     src=\"seam/resource/remoting/interface.js?customerAction&amp;"
+"accountAction\"&gt;\n"
+"  &lt;/script&gt;"
+
+#. Tag: title
+#: Remoting.xml:27
+#, no-c-format
+msgid "The \"Seam\" object"
+msgstr "Das \"Seam\"-Objekt"
+
+#. Tag: para
+#: Remoting.xml:28
+#, no-c-format
+msgid ""
+"Client-side interaction with your components is all performed via the "
+"<literal>Seam</literal> Javascript object. This object is defined in "
+"<literal>remote.js</literal>, and you&#39;ll be using it to make "
+"asynchronous calls against your component. It is split into two areas of "
+"functionality; <literal>Seam.Component</literal> contains methods for "
+"working with components and <literal>Seam.Remoting</literal> contains "
+"methods for executing remote requests. The easiest way to become familiar "
+"with this object is to start with a simple example."
+msgstr ""
+"Die Interaktion auf Client-Seite mit Ihren Komponenten erfolgt komplett über das <literal>Seam</literal> Javascript-Objekt. Dieses Objekt ist in "
+"<literal>remote.js</literal> definiert, und Sie werden es zur Durchführung "
+"asynchroner Aufrufe gegen Ihre Komponente verwenden. Es ist in zwei Funktionalitätsbereiche aufgeteilt: <literal>Seam.Component</literal> enthält Methoden für die Arbeit mit Komponenten und <literal>Seam.Remoting</literal> enthält Methoden für die Ausführung von Remote-Anfragen. Die beste Weise, um sich mit diesem Objekt vertraut zu machen ist es, mit einem einfachen Beispiel zu beginnen."
+
+#. Tag: title
+#: Remoting.xml:31
+#, no-c-format
+msgid "A Hello World example"
+msgstr "Ein \"Hello World\"-Beispiel"
+
+#. Tag: para
+#: Remoting.xml:32
+#, no-c-format
+msgid ""
+"Let&#39;s step through a simple example to see how the <literal>Seam</"
+"literal> object works. First of all, let&#39;s create a new Seam component "
+"called <literal>helloAction</literal>."
+msgstr "Sehen wir uns ein einfaches Beispiel Schritt für Schritt an um zu sehen, wie das <literal>Seam</literal>-Objekt funktioniert. Erstellen wir zunächst eine neue Seam-Komponente mit dem Namen <literal>helloAction</literal>."
+
+#. Tag: programlisting
+#: Remoting.xml:35
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"  @Name(\"helloAction\")\n"
+"  public class HelloAction implements HelloLocal {\n"
+"    public String sayHello(String name) {\n"
+"      return \"Hello, \" + name;\n"
+"    }\n"
+"  }"
+msgstr ""
+"@Stateless\n"
+"  @Name(\"helloAction\")\n"
+"  public class HelloAction implements HelloLocal {\n"
+"    public String sayHello(String name) {\n"
+"      return \"Hello, \" + name;\n"
+"    }\n"
+"  }"
+
+#. Tag: para
+#: Remoting.xml:36
+#, no-c-format
+msgid ""
+"You also need to create a local interface for our new component - take "
+"special note of the <literal>@WebRemote</literal> annotation, as it&#39;s "
+"required to make our method accessible via remoting:"
+msgstr "Sie müssen auch ein lokales Interface für unsere neue Komponente erstellen - achten Sie insbesondere auf die <literal>@WebRemote</literal>-Annotation, da diese notwendig ist, um unsere Methode via Remoting zugreifbar zu machen:"
+
+#. Tag: programlisting
+#: Remoting.xml:39
+#, no-c-format
+msgid ""
+"@Local\n"
+"  public interface HelloLocal {\n"
+"    @WebRemote\n"
+"    public String sayHello(String name);\n"
+"  }"
+msgstr ""
+"@Local\n"
+"  public interface HelloLocal {\n"
+"    @WebRemote\n"
+"    public String sayHello(String name);\n"
+"  }"
+
+#. Tag: para
+#: Remoting.xml:40
+#, no-c-format
+msgid ""
+"That&#39;s all the server-side code we need to write. Now for our web page - "
+"create a new page and import the following scripts:"
+msgstr "Das ist bereits alles an Code auf Server-Seite, was wir schreiben müssen. Jetzt zu unserer neuen Webseite - erstellen Sie eine neue Seite und importieren Sie die folgenden Skripte:"
+
+#. Tag: programlisting
+#: Remoting.xml:43
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/resource/"
+"remote.js\"&gt;&lt;/script&gt;\n"
+"  &lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?helloAction\"&gt;&lt;/script&gt;"
+msgstr ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/resource/"
+"remote.js\"&gt;&lt;/script&gt;\n"
+"  &lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?helloAction\"&gt;&lt;/script&gt;"
+
+#. Tag: para
+#: Remoting.xml:44
+#, no-c-format
+msgid ""
+"To make this a fully interactive user experience, let&#39;s add a button to "
+"our page:"
+msgstr "Um dies zu einer gänzlich interaktiven Benutzererfahrung zu machen, fügen Sie Ihrer Seite eine Schaltfläche hinzu:"
+
+#. Tag: programlisting
+#: Remoting.xml:47
+#, no-c-format
+msgid "&lt;button onclick=\"javascript:sayHello()\"&gt;Say Hello&lt;/button&gt;"
+msgstr "&lt;button onclick=\"javascript:sayHello()\"&gt;Say Hello&lt;/button&gt;"
+
+#. Tag: para
+#: Remoting.xml:48
+#, no-c-format
+msgid ""
+"We&#39;ll also need to add some more script to make our button actually do "
+"something when it&#39;s clicked:"
+msgstr "Wir müssen noch etwas Skript hinzufügen, damit unsere Schaltfläche auch tatsächlich etwas tut, wenn der Benutzer darauf klickt:"
+
+#. Tag: programlisting
+#: Remoting.xml:51
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\"&gt;\n"
+"    //&lt;![CDATA[\n"
+"\n"
+"    function sayHello() {\n"
+"      var name = prompt(\"What is your name?\");\n"
+"      Seam.Component.getInstance(\"helloAction\").sayHello(name, "
+"sayHelloCallback);\n"
+"    }\n"
+"\n"
+"    function sayHelloCallback(result) {\n"
+"      alert(result);\n"
+"    }\n"
+"\n"
+"    // ]]&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+"&lt;script type=\"text/javascript\"&gt;\n"
+"    //&lt;![CDATA[\n"
+"\n"
+"    function sayHello() {\n"
+"      var name = prompt(\"What is your name?\");\n"
+"      Seam.Component.getInstance(\"helloAction\").sayHello(name, "
+"sayHelloCallback);\n"
+"    }\n"
+"\n"
+"    function sayHelloCallback(result) {\n"
+"      alert(result);\n"
+"    }\n"
+"\n"
+"    // ]]&gt;\n"
+"  &lt;/script&gt;"
+
+#. Tag: para
+#: Remoting.xml:52
+#, no-c-format
+msgid ""
+"We&#39;re done! Deploy your application and browse to your page. Click the "
+"button, and enter a name when prompted. A message box will display the hello "
+"message confirming that the call was successful. If you want to save some "
+"time, you&#39;ll find the full source code for this Hello World example in "
+"Seam&#39;s <literal>/examples/remoting/helloworld</literal> directory."
+msgstr "Fertig! Deployen Sie Ihre Anwendung und browsen Sie auf Ihre Seite. Klicken Sie auf die Schaltfläche und geben Sie einen Namen ein, wenn Sie dazu aufgefordert werden. Eine Nachrichten-Box zeigt die \"hello\"-Nachricht an und bestätigt so, dass der Aufruf erfolgreich war. Falls Sie Zeit sparen wollen, so finden Sie den vollständigen Quellcode für dieses \"Hello World\"-Beispiel in Seam&#39;s <literal>/examples/remoting/helloworld</literal>-Verzeichnis."
+
+#. Tag: para
+#: Remoting.xml:55
+#, no-c-format
+msgid ""
+"So what does the code of our script actually do? Let&#39;s break it down "
+"into smaller pieces. To start with, you can see from the Javascript code "
+"listing that we have implemented two methods - the first method is "
+"responsible for prompting the user for their name and then making a remote "
+"request. Take a look at the following line:"
+msgstr "Was also tut der Code Ihres Skripts genau? Zerlegen wir ihn in kleinere Teile. Vom Javascript Code Listing können Sie gleich sehen, dass wir zwei Methoden implementiert haben - die erste Methode ist dafür verantwortlich, dass der Benutzer zur Eingabe seines Namens aufgefordert wird und anschließend eine Remote Anfrage erfolgt. Sehen Sie sich folgende Zeile an:"
+
+#. Tag: programlisting
+#: Remoting.xml:58
+#, no-c-format
+msgid "Seam.Component.getInstance(\"helloAction\").sayHello(name, sayHelloCallback);"
+msgstr "Seam.Component.getInstance(\"helloAction\").sayHello(name, sayHelloCallback);"
+
+#. Tag: para
+#: Remoting.xml:59
+#, no-c-format
+msgid ""
+"The first section of this line, <literal>Seam.Component.getInstance"
+"(\"helloAction\")</literal> returns a proxy, or \"stub\" for our "
+"<literal>helloAction</literal> component. We can invoke the methods of our "
+"component against this stub, which is exactly what happens with the "
+"remainder of the line: <literal>sayHello(name, sayHelloCallback);</literal>."
+msgstr ""
+"Der erste Abschnitt dieser Zeile <literal>Seam.Component.getInstance"
+"(\"helloAction\")</literal> liefert ein Proxy oder \"Stub\" für unsere "
+"<literal>helloAction</literal>-Komponente. Wir können die Methoden unserer Komponente gegen diesen Stub aufrufen, was auch genau mit dem Rest der Zeile geschieht: <literal>sayHello(name, sayHelloCallback);</literal>."
+
+#. Tag: para
+#: Remoting.xml:62
+#, no-c-format
+msgid ""
+"What this line of code in its completeness does, is invoke the "
+"<literal>sayHello</literal> method of our component, passing in "
+"<literal>name</literal> as a parameter. The second parameter, "
+"<literal>sayHelloCallback</literal> isn&#39;t a parameter of our "
+"component&#39;s <literal>sayHello</literal> method, instead it tells the "
+"Seam Remoting framework that once it receives the response to our request, "
+"it should pass it to the <literal>sayHelloCallback</literal> Javascript "
+"method. This callback parameter is entirely optional, so feel free to leave "
+"it out if you&#39;re calling a method with a <literal>void</literal> return "
+"type or if you don&#39;t care about the result."
+msgstr ""
+"Was diese Zeile Code in Ihrer Vollständigkeit tut ist, dass sie die "
+"<literal>sayHello</literal>-Methode Ihrer Komponente aufruft und "
+"<literal>name</literal> als einen Parameter eingibt. Der zweite Parameter <literal>sayHelloCallback</literal> ist kein Parameter der <literal>sayHello</literal>-Methode unserer Komponenten, sondern teilt dem Seam Remoting Framework stattdessen mit, dass es nach Antwort auf unsere Anfrage, dies an die <literal>sayHelloCallback</literal> Javascript-Methode weitergeben sollte. Dieser Callback-Parameter ist völlig optional, Sie können ihn daher auch weglassen, wenn Sie eine Methode mit einem <literal>void</literal>-Wiedergabetyp aufrufen oder Ihnen das Ergebnis nicht wichtig ist."
+
+#. Tag: para
+#: Remoting.xml:65
+#, no-c-format
+msgid ""
+"The <literal>sayHelloCallback</literal> method, once receiving the response "
+"to our remote request then pops up an alert message displaying the result of "
+"our method call."
+msgstr "Die <literal>sayHelloCallback</literal>-Methode gibt nach Erhalt der Antwort unserer Remothe-Anfrage eine Alarmnachricht aus, die das Ergebnis unseres Methodenaufrufs anzeigt."
+
+#. Tag: title
+#: Remoting.xml:68
+#, no-c-format
+msgid "Seam.Component"
+msgstr "Seam.Component"
+
+#. Tag: para
+#: Remoting.xml:69
+#, no-c-format
+msgid ""
+"The <literal>Seam.Component</literal> Javascript object provides a number of "
+"client-side methods for working with your Seam components. The two main "
+"methods, <literal>newInstance()</literal> and <literal>getInstance()</"
+"literal> are documented in the following sections however their main "
+"difference is that <literal>newInstance()</literal> will always create a new "
+"instance of a component type, and <literal>getInstance()</literal> will "
+"return a singleton instance."
+msgstr "Das <literal>Seam.Component</literal> Javascript-Objekt bietet eine Reihe von Methoden auf Client-Seite, um mit Ihren Seam Komponenten zu arbeiten. Die beiden Hauptmethoden <literal>newInstance()</literal> und <literal>getInstance()</literal> sind in den folgenden Abschnitten dokumentiert, jedoch ist deren Hauptunterschied, dass <literal>newInstance()</literal> immer eine neue Instanz eines Komponententyps erstellt und <literal>getInstance()</literal> eine Singleton-Instanz wiedergibt."
+
+#. Tag: title
+#: Remoting.xml:72
+#, no-c-format
+msgid "Seam.Component.newInstance()"
+msgstr "Seam.Component.newInstance()"
+
+#. Tag: para
+#: Remoting.xml:73
+#, no-c-format
+msgid ""
+"Use this method to create a new instance of an entity or Javabean component. "
+"The object returned by this method will have the same getter/setter methods "
+"as its server-side counterpart, or alternatively if you wish you can access "
+"its fields directly. Take the following Seam entity component for example:"
+msgstr ""
+"Verwenden Sie diese Methode, um eine neue Instanz einer Entity oder Javabean-Komponente zu erstellen. "
+"Das durch diese Methode wiedergegebene Objekt wird dieselben Getter/Setter-Methoden besitzen wie sein Gegenstück auf Server-Seite. Alternativ können Sie auch direkt auf die Felder zugreifen. Nehmen Sie etwa folgende Seam Entity-Komponente als Beispiel:"
+
+#. Tag: programlisting
+#: Remoting.xml:76
+#, no-c-format
+msgid ""
+"@Name(\"customer\")\n"
+"  @Entity\n"
+"  public class Customer implements Serializable\n"
+"  {\n"
+"    private Integer customerId;\n"
+"    private String firstName;\n"
+"    private String lastName;\n"
+"    \n"
+"    @Column public Integer getCustomerId() { \n"
+"      return customerId; \n"
+"    }\n"
+"    \n"
+"    public void setCustomerId(Integer customerId} { \n"
+"      this.customerId = customerId; \n"
+"    }\n"
+"    \n"
+"    @Column public String getFirstName() { \n"
+"      return firstName; \n"
+"    }\n"
+"    \n"
+"    public void setFirstName(String firstName) {\n"
+"      this.firstName = firstName; \n"
+"    }\n"
+"    \n"
+"    @Column public String getLastName() {\n"
+"      return lastName;\n"
+"    }\n"
+"    \n"
+"    public void setLastName(String lastName) {\n"
+"      this.lastName = lastName;\n"
+"    }\n"
+"  }"
+msgstr ""
+"@Name(\"customer\")\n"
+"  @Entity\n"
+"  public class Customer implements Serializable\n"
+"  {\n"
+"    private Integer customerId;\n"
+"    private String firstName;\n"
+"    private String lastName;\n"
+"    \n"
+"    @Column public Integer getCustomerId() { \n"
+"      return customerId; \n"
+"    }\n"
+"    \n"
+"    public void setCustomerId(Integer customerId} { \n"
+"      this.customerId = customerId; \n"
+"    }\n"
+"    \n"
+"    @Column public String getFirstName() { \n"
+"      return firstName; \n"
+"    }\n"
+"    \n"
+"    public void setFirstName(String firstName) {\n"
+"      this.firstName = firstName; \n"
+"    }\n"
+"    \n"
+"    @Column public String getLastName() {\n"
+"      return lastName;\n"
+"    }\n"
+"    \n"
+"    public void setLastName(String lastName) {\n"
+"      this.lastName = lastName;\n"
+"    }\n"
+"  }"
+
+#. Tag: para
+#: Remoting.xml:77
+#, no-c-format
+msgid "To create a client-side Customer you would write the following code:"
+msgstr "Um einen Kunden (\"Customer\") auf Client-Seite zu erstellen, würden Sie folgenden Code schreiben:"
+
+#. Tag: programlisting
+#: Remoting.xml:80
+#, no-c-format
+msgid "var customer = Seam.Component.newInstance(\"customer\");"
+msgstr "var customer = Seam.Component.newInstance(\"customer\");"
+
+#. Tag: para
+#: Remoting.xml:81
+#, no-c-format
+msgid "Then from here you can set the fields of the customer object:"
+msgstr "Von hier können Sie dann die Felder des Kundenobjekts einstellen:"
+
+#. Tag: programlisting
+#: Remoting.xml:84
+#, no-c-format
+msgid ""
+"customer.setFirstName(\"John\");\n"
+"  // Or you can set the fields directly\n"
+"  customer.lastName = \"Smith\";"
+msgstr ""
+"customer.setFirstName(\"John\");\n"
+"  // Or you can set the fields directly\n"
+"  customer.lastName = \"Smith\";"
+
+#. Tag: title
+#: Remoting.xml:85
+#, no-c-format
+msgid "Seam.Component.getInstance()"
+msgstr "Seam.Component.getInstance()"
+
+#. Tag: para
+#: Remoting.xml:86
+#, no-c-format
+msgid ""
+"The <literal>getInstance()</literal> method is used to get a reference to a "
+"Seam session bean component stub, which can then be used to remotely execute "
+"methods against your component. This method returns a singleton for the "
+"specified component, so calling it twice in a row with the same component "
+"name will return the same instance of the component."
+msgstr ""
+"Die <literal>getInstance()</literal>-Methode wird dazu verwendet, um eine Referenz zu einem Seam Session Bean Komponenten-Stub zu erhalten, das dazu verwendet werden kann, von Remote Methoden gegen Ihre Komponente auszuführen. Diese Methode gibt ein Singleton für die festgelegte Komponente wieder, so dass deren Aufruf zwei Mal hintereinander mit demselben Komponentennamen "
+"diesselbe Instanz der Komponente wiedergibt."
+
+#. Tag: para
+#: Remoting.xml:89
+#, no-c-format
+msgid ""
+"To continue our example from before, if we have created a new "
+"<literal>customer</literal> and we now wish to save it, we would pass it to "
+"the <literal>saveCustomer()</literal> method of our <literal>customerAction</"
+"literal> component:"
+msgstr ""
+"Um unser Beispiel von vorhin fortzusetzen: Falls wir einen neuen "
+"<literal>customer</literal> erstellt haben, und wir ihn nun speichern wollen, so würden wir diesen an die <literal>saveCustomer()</literal>-Methode unserer <literal>customerAction</literal>-Komponente weitergeben:"
+
+#. Tag: programlisting
+#: Remoting.xml:92
+#, no-c-format
+msgid "Seam.Component.getInstance(\"customerAction\").saveCustomer(customer);"
+msgstr "Seam.Component.getInstance(\"customerAction\").saveCustomer(customer);"
+
+#. Tag: title
+#: Remoting.xml:93
+#, no-c-format
+msgid "Seam.Component.getComponentName()"
+msgstr "Seam.Component.getComponentName()"
+
+#. Tag: para
+#: Remoting.xml:94
+#, no-c-format
+msgid ""
+"Passing an object into this method will return its component name if it is a "
+"component, or <literal>null</literal> if it is not."
+msgstr "Die Weitergabe eines Objekt in diese Methode gibt den Komponentennamen wieder, falls es sich um eine Komponente handelt oder aber <literal>null</literal>, falls es sich nicht um eine solche handelt."
+
+#. Tag: programlisting
+#: Remoting.xml:97
+#, no-c-format
+msgid ""
+"if (Seam.Component.getComponentName(instance) == \"customer\")\n"
+"    alert(\"Customer\");\n"
+"  else if (Seam.Component.getComponentName(instance) == \"staff\")\n"
+"    alert(\"Staff member\");"
+msgstr ""
+"if (Seam.Component.getComponentName(instance) == \"customer\")\n"
+"    alert(\"Customer\");\n"
+"  else if (Seam.Component.getComponentName(instance) == \"staff\")\n"
+"    alert(\"Staff member\");"
+
+#. Tag: title
+#: Remoting.xml:98
+#, no-c-format
+msgid "Seam.Remoting"
+msgstr "Seam.Remoting"
+
+#. Tag: para
+#: Remoting.xml:99
+#, no-c-format
+msgid ""
+"Most of the client side functionality for Seam Remoting is contained within "
+"the <literal>Seam.Remoting</literal> object. While you shouldn&#39;t need to "
+"directly call most of its methods, there are a couple of important ones "
+"worth mentioning."
+msgstr "Der größte Teil an Funktionalität auf Client-Seite für Seam Remoting ist im <literal>Seam.Remoting</literal>-Objekt enthalten. Während Sie die meisten von dessen Methoden nicht direkt sollten aufrufen müssen, so gibt es ein paar wichtige, die wir hier erwähnen wollen."
+
+#. Tag: title
+#: Remoting.xml:102
+#, no-c-format
+msgid "Seam.Remoting.createType()"
+msgstr "Seam.Remoting.createType()"
+
+#. Tag: para
+#: Remoting.xml:103
+#, no-c-format
+msgid ""
+"If your application contains or uses Javabean classes that aren&#39;t Seam "
+"components, you may need to create these types on the client side to pass as "
+"parameters into your component method. Use the <literal>createType()</"
+"literal> method to create an instance of your type. Pass in the fully "
+"qualified Java class name as a parameter:"
+msgstr "Falls Ihre Anwendung Javabean-Klassen enthält oder verwendet, die keine Seam-Komponenten sind, so müssen Sie diese Typen möglicherweise auf der Client-Seite zur Weitergabe als Parameter in Ihre Komponentenmethode erstellen. Verwenden Sie die <literal>createType()</literal>-Methode, um eine Instanz Ihres Typs zu erstellen. Geben Sie den vollständig angegebenen Namen der Java-Klasse als einen Parameter ein:"
+
+#. Tag: programlisting
+#: Remoting.xml:106
+#, no-c-format
+msgid "var widget = Seam.Remoting.createType(\"com.acme.widgets.MyWidget\");"
+msgstr "var widget = Seam.Remoting.createType(\"com.acme.widgets.MyWidget\");"
+
+#. Tag: title
+#: Remoting.xml:107
+#, no-c-format
+msgid "Seam.Remoting.getTypeName()"
+msgstr "Seam.Remoting.getTypeName()"
+
+#. Tag: para
+#: Remoting.xml:108
+#, no-c-format
+msgid ""
+"This method is the equivalent of <literal>Seam.Component.getComponentName()</"
+"literal> but for non-component types. It will return the name of the type "
+"for an object instance, or <literal>null</literal> if the type is not known. "
+"The name is the fully qualified name of the type&#39;s Java class."
+msgstr ""
+"Diese Methode ist das Äquivalent zu <literal>Seam.Component.getComponentName()</"
+"literal>, jedoch für nicht-Komponententypen. Es gibt den Namen des Typs für eine Objektinstanz wieder oder <literal>null</literal>, falls der Typ unbekannt ist. "
+"Der Name ist der vollständig angegebene Name des Typs von Java-Klasse."
+
+#. Tag: title
+#: Remoting.xml:111
+#, no-c-format
+msgid "Client Interfaces"
+msgstr "Client Interfaces"
+
+#. Tag: para
+#: Remoting.xml:112
+#, no-c-format
+msgid ""
+"In the configuration section above, the interface, or \"stub\" for our "
+"component is imported into our page via <literal>seam/resource/remoting/"
+"interface.js</literal>:"
+msgstr ""
+"Im Konfigurationsabschnitt oben wird das Interface oder der \"Stub\" für unsere Komponente via <literal>seam/resource/remoting/"
+"interface.js</literal> in unsere Seite importiert:"
+
+#. Tag: programlisting
+#: Remoting.xml:115
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?customerAction\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?customerAction\"&gt;\n"
+"  &lt;/script&gt;"
+
+#. Tag: para
+#: Remoting.xml:116
+#, no-c-format
+msgid ""
+"By including this script in our page, the interface definitions for our "
+"component, plus any other components or types that are required to execute "
+"the methods of our component are generated and made available for the "
+"remoting framework to use."
+msgstr "Indem Sie dieses Skript in Ihre Seite mit einschließen, werden die Interface-Definitionen für Ihre Komponente, plus sämtliche andere Komponenten oder Typen, die zur Ausführung der Methoden unserer Komponente nötig sind, generiert und für die Verwendung durch das Remoting Framework verfügbar gemacht."
+
+#. Tag: para
+#: Remoting.xml:119
+#, no-c-format
+msgid ""
+"There are two types of client stub that can be generated, \"executable\" "
+"stubs and \"type\" stubs. Executable stubs are behavioural, and are used to "
+"execute methods against your session bean components, while type stubs "
+"contain state and represent the types that can be passed in as parameters or "
+"returned as a result."
+msgstr ""
+"Es gibt zwei Arten von Client Stub, die generiert werden können, \"ausführbare\" Stubs und \"Typen\"-Stubs. Ausführbare Stubs sind verhaltensgesteuert und werden zur Ausführung von Methoden gegen "
+"Session Bean Komponenten verwendet, während Typen-Stubs "
+"den Status enthalten und diejenigen Typen repräsentieren, die als Parameters weitergegeben oder als Ergebnis wiedergegeben werden können."
+
+#. Tag: para
+#: Remoting.xml:122
+#, no-c-format
+msgid ""
+"The type of client stub that is generated depends on the type of your Seam "
+"component. If the component is a session bean, then an executable stub will "
+"be generated, otherwise if it&#39;s an entity or JavaBean, then a type stub "
+"will be generated. There is one exception to this rule; if your component is "
+"a JavaBean (ie it is not a session bean nor an entity bean) and any of its "
+"methods are annotated with @WebRemote, then an executable stub will be "
+"generated for it instead of a type stub. This allows you to use remoting to "
+"call methods of your JavaBean components in a non-EJB environment where you "
+"don&#39;t have access to session beans."
+msgstr "Der generierte Typ von Client-Stub hängt vom Typ Ihrer Seam-Komponente ab. Falls es sich bei der Komponente um ein Session Bean handelt, dann wird ein ausführbarer Stub generiert, andernfalls - falls es sich um eine Entity oder ein JavaBean handelt, wird ein Typen-Stub generiert. Es gibt eine Ausnahme zu dieser Regel: Falls es sich bei Ihrer Komponente um ein JavaBean handelt (d.h. nicht um ein Session-Bean oder ein Entity-Bean) und jedwelche seiner Methoden mit @WebRemote annotiert sind, so wird ein ausführbarer Stub anstelle eines Typen-Stubs dafür generiert. Dies ermöglicht Ihnen die Verwendung von Call-Methoden Ihrer JavaBean Komponenten in einer nicht-EJB Umgebung, wo Sie keinen Zugriff auf Session Beans haben."
+
+#. Tag: title
+#: Remoting.xml:125
+#, no-c-format
+msgid "The Context"
+msgstr "Der Kontext"
+
+#. Tag: para
+#: Remoting.xml:126
+#, no-c-format
+msgid ""
+"The Seam Remoting Context contains additional information which is sent and "
+"received as part of a remoting request/response cycle. At this stage it only "
+"contains the conversation ID but may be expanded in the future."
+msgstr "Der Seam Remoting-Kontext enthält zusätzliche Informationen, die als Teil eines Remoting Anfrage/Antwort-Tyklus verschickt und empfangen werden. Aktuell enthält er lediglich die Konversations-ID, kann aber in Zukunft erweitert werden."
+
+#. Tag: title
+#: Remoting.xml:129
+#, no-c-format
+msgid "Setting and reading the Conversation ID"
+msgstr "Einstellen und Lesen der Konversations-ID"
+
+#. Tag: para
+#: Remoting.xml:130
+#, no-c-format
+msgid ""
+"If you intend on using remote calls within the scope of a conversation then "
+"you need to be able to read or set the conversation ID in the Seam Remoting "
+"Context. To read the conversation ID after making a remote request call "
+"<literal>Seam.Remoting.getContext().getConversationId()</literal>. To set "
+"the conversation ID before making a request, call <literal>Seam.Remoting."
+"getContext().setConversationId()</literal>."
+msgstr ""
+"Falls SIe planen, Remote-Aufrufe innerhalb des Bereichs einer Konversation zu verwenden, so müssen Sie in der Lage sein, die Konversations-ID im Seam Remoting Kontext zu lesen oder einzustellen. Um die Konversations-ID nach getätigter Remote Anfrage zu lesen, rufen Sie"
+"<literal>Seam.Remoting.getContext().getConversationId()</literal> auf. Um die Konversations-ID vor dem Tätigen der Anfrage einzustellen, rufen Sie <literal>Seam.Remoting."
+"getContext().setConversationId()</literal> auf."
+
+#. Tag: para
+#: Remoting.xml:133
+#, no-c-format
+msgid ""
+"If the conversation ID hasn&#39;t been explicitly set with <literal>Seam."
+"Remoting.getContext().setConversationId()</literal>, then it will be "
+"automatically assigned the first valid conversation ID that is returned by "
+"any remoting call. If you are working with multiple conversations within "
+"your page, then you may need to explicitly set the conversation ID before "
+"each call. If you are working with just a single conversation, then you "
+"don&#39;t need to do anything special."
+msgstr ""
+"Falls die Konversations-ID nicht explizit mit <literal>Seam."
+"Remoting.getContext().setConversationId()</literal> eingestellt wurde, dann wird ihr automatisch die erste gültige Konversation-ID zugewiesen, die durch einen Remoting-Aufruf wiedergegeben wird. Falls Sie mit mehreren Konversationen innerhalb Ihrer Seite arbeiten, dann kann es sein, dass Sie die Konversations-ID vor jedem Aufruf explizit einstellen müssen. Falls Sie mit nur einer einzelnen Konversation arbeiten, so müssen Sie nichts besonderes tun."
+
+#. Tag: title
+#: Remoting.xml:137
+#, no-c-format
+msgid "Batch Requests"
+msgstr "Batch-Anfragen"
+
+#. Tag: para
+#: Remoting.xml:138
+#, no-c-format
+msgid ""
+"Seam Remoting allows multiple component calls to be executed within a single "
+"request. It is recommended that this feature is used wherever it is "
+"appropriate to reduce network traffic."
+msgstr "Seam Remoting gestattet die Ausführung mehrerer Komponentenaufrufe innerhalb einer einzigen Anfrage. Die Verwendung dieses Features wo immer passend wird zur Reduzierung von Netzwerkverkehr empfohlen."
+
+#. Tag: para
+#: Remoting.xml:141
+#, no-c-format
+msgid ""
+"The method <literal>Seam.Remoting.startBatch()</literal> will start a new "
+"batch, and any component calls executed after starting a batch are queued, "
+"rather than being sent immediately. When all the desired component calls "
+"have been added to the batch, the <literal>Seam.Remoting.executeBatch()</"
+"literal> method will send a single request containing all of the queued "
+"calls to the server, where they will be executed in order. After the calls "
+"have been executed, a single response containining all return values will be "
+"returned to the client and the callback functions (if provided) triggered in "
+"the same order as execution."
+msgstr "Die Methode <literal>Seam.Remoting.startBatch()</literal> startet ein neues Batch, und alle nach dem Start eines Batch ausgeführten Komponentenaufrufe werden in einer Warteschleife platziert statt sofort gesendet zu werden. Wurden alle gewünschten Komponentenaufrufe dem Batch hinzugefügt, so sendet die <literal>Seam.Remoting.executeBatch()</literal>-Methode eine einzelne Anfrage, die alle der in der Warteschleife befindlichen Aufrufe an den Server schickt, wo sie der Reihe nach ausgeführt werden. Nachdem die Aufrufe ausgeführt wurden, wird eine einzige, alle wiedergegebenen Werte enthaltende Anwort an den Client zurückgeschickt und die Callback-Funktionen (falls geliefert) in derselben Reihenfolge wie die Ausführung ausgelöst."
+
+#. Tag: para
+#: Remoting.xml:144
+#, no-c-format
+msgid ""
+"If you start a new batch via the <literal>startBatch()</literal> method but "
+"then decide you don&#39;t want to send it, the <literal>Seam.Remoting."
+"cancelBatch()</literal> method will discard any calls that were queued and "
+"exit the batch mode."
+msgstr ""
+"Falls Sie ein neues Batch über die <literal>startBatch()</literal>-Methode starten, dann aber beschließen, dass Sie es nicht senden wollen, so verwirft die <literal>Seam.Remoting."
+"cancelBatch()</literal>-Methode sämtliche in der Warteschlange befindlichen Aufrufe und verlässt den Batch-Modus."
+
+#. Tag: para
+#: Remoting.xml:147
+#, no-c-format
+msgid ""
+"To see an example of a batch being used, take a look at <literal>/examples/"
+"remoting/chatroom</literal>."
+msgstr "Ein Beispiel für die Verwendung eines Batch finden Sie in <literal>/examples/remoting/chatroom</literal>."
+
+#. Tag: title
+#: Remoting.xml:150
+#, no-c-format
+msgid "Working with Data types"
+msgstr "Arbeiten mit Datentypen"
+
+#. Tag: title
+#: Remoting.xml:151
+#, no-c-format
+msgid "Primitives / Basic Types"
+msgstr "Primitive / Grundtypen"
+
+#. Tag: para
+#: Remoting.xml:152
+#, no-c-format
+msgid ""
+"This section describes the support for basic data types. On the server side "
+"these values are generally compatible with either their primitive type or "
+"their corresponding wrapper class."
+msgstr "Dieser Abschnitt beschreibt den Support für grundlegende Datentypen. Auf der Server-Seite sind diese Werte in der Regel entweder mit ihrem primitiven Typ oder ihrer entsprechenden Wrapper-Klasse kompatibel."
+
+#. Tag: title
+#: Remoting.xml:155
+#, no-c-format
+msgid "String"
+msgstr "String"
+
+#. Tag: para
+#: Remoting.xml:156
+#, no-c-format
+msgid "Simply use Javascript String objects when setting String parameter values."
+msgstr "Verwenden Sie einfach Javascript String-Objekte beim Einstellen von String-Parameterwerten."
+
+#. Tag: title
+#: Remoting.xml:159
+#, no-c-format
+msgid "Number"
+msgstr "Zahl"
+
+#. Tag: para
+#: Remoting.xml:160
+#, no-c-format
+msgid ""
+"There is support for all number types supported by Java. On the client side, "
+"number values are always serialized as their String representation and then "
+"on the server side they are converted to the correct destination type. "
+"Conversion into either a primitive or wrapper type is supported for "
+"<literal>Byte</literal>, <literal>Double</literal>, <literal>Float</"
+"literal>, <literal>Integer</literal>, <literal>Long</literal> and "
+"<literal>Short</literal> types."
+msgstr "Es existiert Support für alle durch Java unterstützten Zahlentypen. Auf der Client-Seite werden Zahlenwerte als ihre String-Repräsentation immer serialisiert und auf der Server-Seite werden sie dann in den korrekten Destinationstyp konvertiert. Konversion in einen primitiven oder Wrapper-Typ wird für <literal>Byte</literal>, <literal>Double</literal>, <literal>Float</literal>, <literal>Integer</literal>, <literal>Long</literal> und <literal>Short</literal>-Typen unterstützt."
+
+#. Tag: title
+#: Remoting.xml:163
+#, no-c-format
+msgid "Boolean"
+msgstr "Boolean"
+
+#. Tag: para
+#: Remoting.xml:164
+#, no-c-format
+msgid ""
+"Booleans are represented client side by Javascript Boolean values, and "
+"server side by a Java boolean."
+msgstr "Booleans sind auf der Client-Seite durch Javascript Boolesche Werte repräsentiert und auf der Server-Seite durch einen Java-Boolean."
+
+#. Tag: title
+#: Remoting.xml:167
+#, no-c-format
+msgid "JavaBeans"
+msgstr "JavaBeans"
+
+#. Tag: para
+#: Remoting.xml:168
+#, no-c-format
+msgid ""
+"In general these will be either Seam entity or JavaBean components, or some "
+"other non-component class. Use the appropriate method (either <literal>Seam."
+"Component.newInstance()</literal> for Seam components or <literal>Seam."
+"Remoting.createType()</literal> for everything else) to create a new "
+"instance of the object."
+msgstr ""
+"Im allgemeinen wird es sich dabei um entweder Seam Entity oder JavaBean Komponenten oder aber um irgendeine Nicht-Komponentenklasse handeln. Verwenden SIe die entprechende Methode (entweder <literal>Seam."
+"Component.newInstance()</literal> für Seam Komponenten oder <literal>Seam."
+"Remoting.createType()</literal> für alles andere), um eine neue Instanz des Objekts zu erstellen."
+
+#. Tag: para
+#: Remoting.xml:171
+#, no-c-format
+msgid ""
+"It is important to note that only objects that are created by either of "
+"these two methods should be used as parameter values, where the parameter is "
+"not one of the other valid types mentioned anywhere else in this section. In "
+"some situations you may have a component method where the exact parameter "
+"type cannot be determined, such as:"
+msgstr ""
+"Es ist wichtig zu berückstichtigen, dass nur Objekte, die durch eine dieser beiden Methoden erstellt wurden als Parameterwerte verwendet werden sollten. Wo der Parameter keiner der anderen gültigen Werte ist, wird an anderer Stelle in diesem Abschnitt erläutert. In "
+"einigen Situationen könnten Sie eine Komponentenmethode haben, bei der der exakte Parametertyp nicht bestimmt werden kann, wie etwa:"
+
+#. Tag: programlisting
+#: Remoting.xml:174
+#, no-c-format
+msgid ""
+"@Name(\"myAction\")\n"
+"  public class MyAction implements MyActionLocal {\n"
+"    public void doSomethingWithObject(Object obj) {\n"
+"      // code\n"
+"    }\n"
+"  }"
+msgstr ""
+"@Name(\"myAction\")\n"
+"  public class MyAction implements MyActionLocal {\n"
+"    public void doSomethingWithObject(Object obj) {\n"
+"      // code\n"
+"    }\n"
+"  }"
+
+#. Tag: para
+#: Remoting.xml:175
+#, no-c-format
+msgid ""
+"In this case you might want to pass in an instance of your "
+"<literal>myWidget</literal> component, however the interface for "
+"<literal>myAction</literal> won&#39;t include <literal>myWidget</literal> as "
+"it is not directly referenced by any of its methods. To get around this, "
+"<literal>MyWidget</literal> needs to be explicitly imported:"
+msgstr ""
+"In diesem Fall möchten Sie vielleichet eine Instanz Ihrer "
+"<literal>myWidget</literal>-Komponente weitergeben, jedoch beinhaltet das Interface für <literal>myAction</literal> nicht <literal>myWidget</literal>, da dies nicht von einer seiner Methoden referenziert wird. Um dies zu lösen, muss <literal>MyWidget</literal> explizit importiert werden:"
+
+#. Tag: programlisting
+#: Remoting.xml:178
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?myAction&amp;myWidget\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?myAction&amp;myWidget\"&gt;\n"
+"  &lt;/script&gt;"
+
+#. Tag: para
+#: Remoting.xml:179
+#, no-c-format
+msgid ""
+"This will then allow a <literal>myWidget</literal> object to be created with "
+"<literal>Seam.Component.newInstance(\"myWidget\")</literal>, which can then "
+"be passed to <literal>myAction.doSomethingWithObject()</literal>."
+msgstr ""
+"Dies gestattet dann das Erstellen eines <literal>myWidget</literal>-Objekts mit "
+"<literal>Seam.Component.newInstance(\"myWidget\")</literal>, welches dann an <literal>myAction.doSomethingWithObject()</literal> weitergegeben werden kann."
+
+#. Tag: title
+#: Remoting.xml:182
+#, no-c-format
+msgid "Dates and Times"
+msgstr "Daten und Zeiten"
+
+#. Tag: para
+#: Remoting.xml:183
+#, no-c-format
+msgid ""
+"Date values are serialized into a String representation that is accurate to "
+"the millisecond. On the client side, use a Javascript Date object to work "
+"with date values. On the server side, use any <literal>java.util.Date</"
+"literal> (or descendent, such as <literal>java.sql.Date</literal> or "
+"<literal>java.sql.Timestamp</literal> class."
+msgstr ""
+"Datenwerte werden in eine bis auf die Millisekunde genaue String-Repräsentation serialisiert. Auf Client-Seite verwenden Sie ein Javascript Datenobjekt zur Arbeit mit Datenwerten. Auf Server-Seite verwenden Sie ein beliebiges <literal>java.util.Date</"
+"literal> (oder Abkömmlinge wie <literal>java.sql.Date</literal> oder "
+"<literal>java.sql.Timestamp</literal>-Klasse)."
+
+#. Tag: title
+#: Remoting.xml:186
+#, no-c-format
+msgid "Enums"
+msgstr "Enums"
+
+#. Tag: para
+#: Remoting.xml:187
+#, no-c-format
+msgid ""
+"On the client side, enums are treated the same as Strings. When setting the "
+"value for an enum parameter, simply use the String representation of the "
+"enum. Take the following component as an example:"
+msgstr "Auf der Client-Seite werden Enums wie Strings behandelt. Beim Setzen der Werte für einen Enum-Parameter, verwenden Sie einfach die String-Repräsentation der Enum. Nehmen Sie die folgende Komponente als ein Beispiel:"
+
+#. Tag: programlisting
+#: Remoting.xml:190
+#, no-c-format
+msgid ""
+"@Name(\"paintAction\")\n"
+"  public class paintAction implements paintLocal {\n"
+"    public enum Color {red, green, blue, yellow, orange, purple};\n"
+"\n"
+"    public void paint(Color color) {\n"
+"      // code\n"
+"    }    \n"
+"  }"
+msgstr ""
+"@Name(\"paintAction\")\n"
+"  public class paintAction implements paintLocal {\n"
+"    public enum Color {red, green, blue, yellow, orange, purple};\n"
+"\n"
+"    public void paint(Color color) {\n"
+"      // code\n"
+"    }    \n"
+"  }"
+
+#. Tag: para
+#: Remoting.xml:191
+#, no-c-format
+msgid ""
+"To call the <literal>paint()</literal> method with the color <literal>red</"
+"literal>, pass the parameter value as a String literal:"
+msgstr "Zum Aufruf der <literal>paint()</literal>-Methode mit der Farbe <literal>red</literal>, geben Sie den Parameterwert als ein String-Literal ein:"
+
+#. Tag: programlisting
+#: Remoting.xml:194
+#, no-c-format
+msgid "Seam.Component.getInstance(\"paintAction\").paint(\"red\");"
+msgstr "Seam.Component.getInstance(\"paintAction\").paint(\"red\");"
+
+#. Tag: para
+#: Remoting.xml:195
+#, no-c-format
+msgid ""
+"The inverse is also true - that is, if a component method returns an enum "
+"parameter (or contains an enum field anywhere in the returned object graph) "
+"then on the client-side it will be represented as a String."
+msgstr "Die Inverse ist ebenfalls wahr - das heißt, falls eine Komponentenmethode einen enum-Parameter wiedergibt (oder ein enum-Feld irgendwo im wiedergegebenen Objektdiagramm enthält) dann wird sie auf Client-Seite als ein String repräsentiert."
+
+#. Tag: title
+#: Remoting.xml:198
+#, no-c-format
+msgid "Collections"
+msgstr "Collections"
+
+#. Tag: title
+#: Remoting.xml:199
+#, no-c-format
+msgid "Bags"
+msgstr "Bags"
+
+#. Tag: para
+#: Remoting.xml:200
+#, no-c-format
+msgid ""
+"Bags cover all collection types including arrays, collections, lists, sets, "
+"(but excluding Maps - see the next section for those), and are implemented "
+"client-side as a Javascript array. When calling a component method that "
+"accepts one of these types as a parameter, your parameter should be a "
+"Javascript array. If a component method returns one of these types, then the "
+"return value will also be a Javascript array. The remoting framework is "
+"clever enough on the server side to convert the bag to an appropriate type "
+"for the component method call."
+msgstr "\"Bags\" decken alle Collection-Typen einschließlich Arrays, Collections, Listen, Sets, (ausschließlich jedoch Maps - siehe nächster Abschnitt dazu) ab und sind auf Client-Seite als ein Javascript-Array implementiert. Beim Aufruf einer Komponentenmethode, die einen dier Typen als einen Parameter akzeptiert, sollte Ihr Parameter ein Javascript-Array sein. Gibt eine Komponentenmethode einen dieser Typen wieder, dann handelt es sich beim Wiedergabewert ebenfalls um ein Javascript-Array. Das Remoting-Framework ist auf Server-Seite intelligent genug, um die \"Bag\" in einen entsprechenden Typ für den Aufruf der Komponentenmethode zu konverieren.."
+
+#. Tag: title
+#: Remoting.xml:203
+#, no-c-format
+msgid "Maps"
+msgstr "Maps"
+
+#. Tag: para
+#: Remoting.xml:204
+#, no-c-format
+msgid ""
+"As there is no native support for Maps within Javascript, a simple Map "
+"implementation is provided with the Seam Remoting framework. To create a Map "
+"which can be used as a parameter to a remote call, create a new "
+"<literal>Seam.Remoting.Map</literal> object:"
+msgstr "Da kein nativer Support für Maps innerhalb Javascript existiert, wird eine einfache Map-Implementierung mit dem Seam Remoting Framework geliefert. Um eine Map zu erstellen, die als Parameter zu einem Remote Aufruf verwenet werden kann, erstellen Sie ein <literal>Seam.Remoting.Map</literal>-Objekt:"
+
+#. Tag: programlisting
+#: Remoting.xml:207
+#, no-c-format
+msgid "var map = new Seam.Remoting.Map();"
+msgstr "var map = new Seam.Remoting.Map();"
+
+#. Tag: para
+#: Remoting.xml:208
+#, no-c-format
+msgid ""
+"This Javascript implementation provides basic methods for working with Maps: "
+"<literal>size()</literal>, <literal>isEmpty()</literal>, <literal>keySet()</"
+"literal>, <literal>values()</literal>, <literal>get(key)</literal>, "
+"<literal>put(key, value)</literal>, <literal>remove(key)</literal> and "
+"<literal>contains(key)</literal>. Each of these methods are equivalent to "
+"their Java counterpart. Where the method returns a collection, such as "
+"<literal>keySet()</literal> and <literal>values()</literal>, a Javascript "
+"Array object will be returned that contains the key or value objects "
+"(respectively)."
+msgstr ""
+"Diese Javascript-Implementierung bietet grundlegende Methoden für die Arbeit mit Maps: <literal>size()</literal>, <literal>isEmpty()</literal>, <literal>keySet()</literal>, <literal>values()</literal>, <literal>get(key)</literal>, <literal>put(key, value)</literal>, <literal>remove(key)</literal> und <literal>contains(key)</literal>. Jede dieser Methoden ist äquivalent zu ihrem Java-Gegenpaar. Wo die Methode eine Collection wiedergibt, wie "
+"<literal>keySet()</literal> und <literal>values()</literal>, wird ein Javascript Array Objekt wiedergegeben, das den Schlüssel oder (bzw.) Werteobjekte enthält."
+
+#. Tag: title
+#: Remoting.xml:211
+#, no-c-format
+msgid "Debugging"
+msgstr "Debugging/Fehlersuche"
+
+#. Tag: para
+#: Remoting.xml:212
+#, no-c-format
+msgid ""
+"To aid in tracking down bugs, it is possible to enable a debug mode which "
+"will display the contents of all the packets send back and forth between the "
+"client and server in a popup window. To enable debug mode, either execute "
+"the <literal>setDebug()</literal> method in Javascript:"
+msgstr "Um die Fehlersuche zu erleichtern ist es möglich, einen Debug-Modus zu aktivieren, der die Inhalte aller Pakete anzeigt und in einem Popup-Fenster zwischen Client und Server hin- und herschickt. Um den Debug-Modus zu aktivieren können Sie entweder die <literal>setDebug()</literal>-Methode in Javascript ausführen:"
+
+#. Tag: programlisting
+#: Remoting.xml:215
+#, no-c-format
+msgid "Seam.Remoting.setDebug(true);"
+msgstr "Seam.Remoting.setDebug(true);"
+
+#. Tag: para
+#: Remoting.xml:216
+#, no-c-format
+msgid "Or configure it via components.xml:"
+msgstr "Oder ihn über components.xml konfigurieren:"
+
+#. Tag: programlisting
+#: Remoting.xml:219
+#, no-c-format
+msgid "&lt;remoting:remoting debug=\"true\"/&gt;"
+msgstr "&lt;remoting:remoting debug=\"true\"/&gt;"
+
+#. Tag: para
+#: Remoting.xml:220
+#, no-c-format
+msgid ""
+"To turn off debugging, call <literal>setDebug(false)</literal>. If you want "
+"to write your own messages to the debug log, call <literal>Seam.Remoting.log"
+"(message)</literal>."
+msgstr ""
+"Um Debugging abzuschalten, rufen Sie <literal>setDebug(false)</literal> auf. Falls Sie Ihre eigenen Nachrichten in das Debug-Protokoll schreiben möchten, rufen Sie <literal>Seam.Remoting.log"
+"(message)</literal> auf."
+
+#. Tag: title
+#: Remoting.xml:223
+#, no-c-format
+msgid "The Loading Message"
+msgstr "Die \"Loading\"-Nachricht"
+
+#. Tag: para
+#: Remoting.xml:224
+#, no-c-format
+msgid ""
+"The default loading message that appears in the top right corner of the "
+"screen can be modified, its rendering customised or even turned off "
+"completely."
+msgstr "Die standardmäßige \"Loading Message\", die in der rechten oberen Ecke des Bildschirms erscheint, kann bearbeitet werden, ihr Rendering kann angepasst oder sogar ganz abgeschaltet werden."
+
+#. Tag: title
+#: Remoting.xml:227
+#, no-c-format
+msgid "Changing the message"
+msgstr "Ändern der Nachricht"
+
+#. Tag: para
+#: Remoting.xml:228
+#, no-c-format
+msgid ""
+"To change the message from the default \"Please Wait...\" to something "
+"different, set the value of <literal>Seam.Remoting.loadingMessage</literal>:"
+msgstr "Um die Nachricht vom standardmäßigen \"Please Wait...\" (\"Bitte warten...\") zu etwas anderem zu ändern, setzen Sie den Wert von <literal>Seam.Remoting.loadingMessage</literal>:"
+
+#. Tag: programlisting
+#: Remoting.xml:231
+#, no-c-format
+msgid "Seam.Remoting.loadingMessage = \"Loading...\";"
+msgstr "Seam.Remoting.loadingMessage = \"Loading...\";"
+
+#. Tag: title
+#: Remoting.xml:232
+#, no-c-format
+msgid "Hiding the loading message"
+msgstr "Verbergen der \"Loading Message\""
+
+#. Tag: para
+#: Remoting.xml:233
+#, no-c-format
+msgid ""
+"To completely suppress the display of the loading message, override the "
+"implementation of <literal>displayLoadingMessage()</literal> and "
+"<literal>hideLoadingMessage()</literal> with functions that instead do "
+"nothing:"
+msgstr ""
+"Um die Anzeige der \"Loading Message\" vollständig zu unterdrücken, setzen Sie die Implementierung von <literal>displayLoadingMessage()</literal> außer Kraft und "
+"<literal>hideLoadingMessage()</literal>mit Funktionen, die stattdessen nichts tun:"
+
+#. Tag: programlisting
+#: Remoting.xml:236
+#, no-c-format
+msgid ""
+"// don&#39;t display the loading indicator\n"
+"  Seam.Remoting.displayLoadingMessage = function() {};\n"
+"  Seam.Remoting.hideLoadingMessage = function() {};"
+msgstr ""
+"// don&#39;t display the loading indicator\n"
+"  Seam.Remoting.displayLoadingMessage = function() {};\n"
+"  Seam.Remoting.hideLoadingMessage = function() {};"
+
+#. Tag: title
+#: Remoting.xml:237
+#, no-c-format
+msgid "A Custom Loading Indicator"
+msgstr "Ein angepasster \"Loading Indicator\""
+
+#. Tag: para
+#: Remoting.xml:238
+#, no-c-format
+msgid ""
+"It is also possible to override the loading indicator to display an animated "
+"icon, or anything else that you want. To do this override the "
+"<literal>displayLoadingMessage()</literal> and <literal>hideLoadingMessage()"
+"</literal> messages with your own implementation:"
+msgstr ""
+"Es ist auch möglich, den \"Loading Indicator\" außer Kraft zu setzen, um ein animiertes Symbol oder etwas anderes nach Ihrem Wunsch anzuzeigen. Um dies zu tun, setzen Sie die "
+"<literal>displayLoadingMessage()</literal> außer Kraft und <literal>hideLoadingMessage()"
+"</literal>-Nachrichten mit Ihrer eigenen Implementierung:"
+
+#. Tag: programlisting
+#: Remoting.xml:241
+#, no-c-format
+msgid ""
+"Seam.Remoting.displayLoadingMessage = function() {\n"
+"    // Write code here to display the indicator\n"
+"  };\n"
+"  \n"
+"  Seam.Remoting.hideLoadingMessage = function() {\n"
+"    // Write code here to hide the indicator\n"
+"  };"
+msgstr ""
+"Seam.Remoting.displayLoadingMessage = function() {\n"
+"    // Write code here to display the indicator\n"
+"  };\n"
+"  \n"
+"  Seam.Remoting.hideLoadingMessage = function() {\n"
+"    // Write code here to hide the indicator\n"
+"  };"
+
+#. Tag: title
+#: Remoting.xml:242
+#, no-c-format
+msgid "Controlling what data is returned"
+msgstr "Steuern, welche Daten wiedergegeben werden"
+
+#. Tag: para
+#: Remoting.xml:243
+#, no-c-format
+msgid ""
+"When a remote method is executed, the result is serialized into an XML "
+"response that is returned to the client. This response is then unmarshaled "
+"by the client into a Javascript object. For complex types (i.e. Javabeans) "
+"that include references to other objects, all of these referenced objects "
+"are also serialized as part of the response. These objects may reference "
+"other objects, which may reference other objects, and so forth. If left "
+"unchecked, this object \"graph\" could potentially be enormous, depending on "
+"what relationships exist between your objects. And as a side issue (besides "
+"the potential verbosity of the response), you might also wish to prevent "
+"sensitive information from being exposed to the client."
+msgstr "Wird eine Remote Methode ausgeführt, so wird das Ergebnis in eine XML-Antwort serialisiert, die dem Client wiedergegeben wird. Diese Antwort wird dann durch den Client in ein Javascript-Objekt \"unmarshaled\". Für komplexe Typen (d.h. Javabeans), die Verweise auf andere Objekte enthalten, werden alle diese referenzierten Objekte ebenfalls als Teil der Antwort serialisiert. Diese Objekte können andere Objekte referenzieren, die wiederum andere Objekte referenzieren und so weiter. Bleibt es ungeprüft, kann dieses Objekt\"diagramm\" möglicherweise enorm werden, je nachdem welche Beziehungen zwischen Ihren Objekten existieren. Als Problem an der Seite (neben dem potenziell riesigen Umfang der Antwort), möchten Sie vielleicht auch das Offenlegen geschützter Information dem Client gegenüber vermeiden."
+
+#. Tag: para
+#: Remoting.xml:246
+#, no-c-format
+msgid ""
+"Seam Remoting provides a simple means to \"constrain\" the object graph, by "
+"specifying the <literal>exclude</literal> field of the remote method&#39;s "
+"<literal>@WebRemote</literal> annotation. This field accepts a String array "
+"containing one or more paths specified using dot notation. When invoking a "
+"remote method, the objects in the result&#39;s object graph that match these "
+"paths are excluded from the serialized result packet."
+msgstr "Seam Remoting liefert ein einfaches Mittel zur \"Einschränkung\" des Objektdiagramms durch Festlegung des <literal>exclude</literal>-Felds der <literal>@WebRemote</literal>-Annotation der Remote Methode. Dieses Feld akzeptiert einen String-Array, der einen oder mehrere festgelegte Pfad unter Verwendung von Dot-Notation enthält. Beim Aufrufen einer Remote-Methode werden die mit diesen Pfaden übereinstimmenden Objekte im Objektdiagramm vom serialisierten Ergebnispaket ausgeschlossen."
+
+#. Tag: para
+#: Remoting.xml:249
+#, no-c-format
+msgid ""
+"For all our examples, we&#39;ll use the following <literal>Widget</literal> "
+"class:"
+msgstr "Für alle Ihre Beispiele verwenden wir die folgende <literal>Widget</literal>-Klasse:"
+
+#. Tag: programlisting
+#: Remoting.xml:252
+#, no-c-format
+msgid ""
+"@Name(\"widget\")\n"
+"public class Widget\n"
+"{\n"
+"  private String value;\n"
+"  private String secret;\n"
+"  private Widget child;\n"
+"  private Map&lt;String,Widget&gt; widgetMap;\n"
+"  private List&lt;Widget&gt; widgetList;\n"
+"  \n"
+"  // getters and setters for all fields\n"
+"}"
+msgstr ""
+"@Name(\"widget\")\n"
+"public class Widget\n"
+"{\n"
+"  private String value;\n"
+"  private String secret;\n"
+"  private Widget child;\n"
+"  private Map&lt;String,Widget&gt; widgetMap;\n"
+"  private List&lt;Widget&gt; widgetList;\n"
+"  \n"
+"  // getters and setters for all fields\n"
+"}"
+
+#. Tag: title
+#: Remoting.xml:253
+#, no-c-format
+msgid "Constraining normal fields"
+msgstr "Einschränken normaler Felder"
+
+#. Tag: para
+#: Remoting.xml:254
+#, no-c-format
+msgid ""
+"If your remote method returns an instance of <literal>Widget</literal>, but "
+"you don&#39;t want to expose the <literal>secret</literal> field because it "
+"contains sensitive information, you would constrain it like this:"
+msgstr "Falls Ihre Remote-Methode eine Instanz von <literal>Widget</literal> wiedergibt, aber Sie das <literal>secret</literal>-Feld nicht offenlegen möchten, weil es geschützte Informationen enthält, so würden Sie es wie folgt einschränken:"
+
+#. Tag: programlisting
+#: Remoting.xml:257
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+"@WebRemote(exclude = {\"secret\"})\n"
+"  public Widget getWidget();"
+
+#. Tag: para
+#: Remoting.xml:258
+#, no-c-format
+msgid ""
+"The value \"secret\" refers to the <literal>secret</literal> field of the "
+"returned object. Now, suppose that we don&#39;t care about exposing this "
+"particular field to the client. Instead, notice that the <literal>Widget</"
+"literal> value that is returned has a field <literal>child</literal> that is "
+"also a <literal>Widget</literal>. What if we want to hide the "
+"<literal>child</literal>&#39;s <literal>secret</literal> value instead? We "
+"can do this by using dot notation to specify this field&#39;s path within "
+"the result&#39;s object graph:"
+msgstr "Der Wert \"secret\" (d.h. geheim) bezieht sich auf das <literal>secret</literal>-Feld des wiedergegebenen Objekts. Nehmen wir nun an, dass wir dieses bestimmte Feld dem Client nicht offenlegen wollen. Beachten Sie stattdessen, dass der wiedergegebene <literal>Widget</literal>-Wert ein Feld namens <literal>child</literal> besitzt, das ebenfalls ein <literal>Widget</literal>. Was, wenn wir den <literal>secret</literal>-Wert des <literal>child</literal> stattdessen verbergen wollen? Wir können dies durch Verwendung der Dot-Notation zur Festlegung des Pfads dieses Feldes innerhalb des Objektdiagramms des Ergebnisses tun:"
+
+#. Tag: programlisting
+#: Remoting.xml:261
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"child.secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+"@WebRemote(exclude = {\"child.secret\"})\n"
+"  public Widget getWidget();"
+
+#. Tag: title
+#: Remoting.xml:262
+#, no-c-format
+msgid "Constraining Maps and Collections"
+msgstr "Einschränken von Maps und Collections"
+
+#. Tag: para
+#: Remoting.xml:263
+#, no-c-format
+msgid ""
+"The other place that objects can exist within an object graph are within a "
+"<literal>Map</literal> or some kind of collection (<literal>List</literal>, "
+"<literal>Set</literal>, <literal>Array</literal>, etc). Collections are "
+"easy, and are treated like any other field. For example, if our "
+"<literal>Widget</literal> contained a list of other <literal>Widget</"
+"literal>s in its <literal>widgetList</literal> field, to constrain the "
+"<literal>secret</literal> field of the <literal>Widget</literal>s in this "
+"list the annotation would look like this:"
+msgstr ""
+"Der andere Ort, an dem Objekte innerhalb eines Objektdiagramms existieren können, ist innerhalb einer <literal>Map</literal> oder irgendeiner Art von Collection (<literal>List</literal>, "
+"<literal>Set</literal>, <literal>Array</literal>, usw.). Collections sind einfach und werden wie jedes andere Feld behandelt. Wenn etwa Ihr "
+"<literal>Widget</literal> eine Liste anderer <literal>Widget</"
+"literal>s in seinem <literal>widgetList</literal>-Feld enthält, um das "
+"<literal>secret</literal>-Feld der <literal>Widget</literal>s in dieser Liste einzuschränken, so würde die Annotation wie folgt aussehen:"
+
+#. Tag: programlisting
+#: Remoting.xml:266
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetList.secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+"@WebRemote(exclude = {\"widgetList.secret\"})\n"
+"  public Widget getWidget();"
+
+#. Tag: para
+#: Remoting.xml:267
+#, no-c-format
+msgid ""
+"To constrain a <literal>Map</literal>&#39;s key or value, the notation is "
+"slightly different. Appending <literal>[key]</literal> after the "
+"<literal>Map</literal>&#39;s field name will constrain the <literal>Map</"
+"literal>&#39;s key object values, while <literal>[value]</literal> will "
+"constrain the value object values. The following example demonstrates how "
+"the values of the <literal>widgetMap</literal> field have their "
+"<literal>secret</literal> field constrained:"
+msgstr ""
+"Um den Schlüssel oder Wert einer <literal>Map</literal> einzuschränken ist die Notation etwas anders. Das Anhängen von <literal>[key]</literal> nach dem Feldnamen der <literal>Map</literal> schränkt die Objektwerte der <literal>Map</literal>ein, während <literal>[value]</literal> den Wert der Objektwerte einschränkt. Das folgende Beispiel demonstriert, wie bei den Werten des <literal>widgetMap</literal>-Felds deren "
+"<literal>secret</literal>-Feld eingeschränkt ist:"
+
+#. Tag: programlisting
+#: Remoting.xml:270
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetMap[value].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+"@WebRemote(exclude = {\"widgetMap[value].secret\"})\n"
+"  public Widget getWidget();"
+
+#. Tag: title
+#: Remoting.xml:271
+#, no-c-format
+msgid "Constraining objects of a specific type"
+msgstr "Einschränken von Objekten eines bestimmten Typs"
+
+#. Tag: para
+#: Remoting.xml:272
+#, no-c-format
+msgid ""
+"There is one last notation that can be used to constrain the fields of a "
+"type of object no matter where in the result&#39;s object graph it appears. "
+"This notation uses either the name of the component (if the object is a Seam "
+"component) or the fully qualified class name (only if the object is not a "
+"Seam component) and is expressed using square brackets:"
+msgstr ""
+"Es gibt eine weitere, letzte Notation, die zur Einschränkung der Felder eines Typs von Objekt verwendet werden kann, unabhängig davon, wo im Objektdiagramm des Ergebnisses es erscheint. "
+"Diese Notation verwendet entweder den Namen der Komponente (falls es sich bei dem Objekt um eine Seam-Komponente handelt) oder den vollständig angegebenen Klassennamen (nur falls es sich bei dem Objekt nicht um eine Seam-Komponente handelt) und wird unter Verwendung eckiger Klammern ausgedrückt:"
+
+#. Tag: programlisting
+#: Remoting.xml:275
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"[widget].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+"@WebRemote(exclude = {\"[widget].secret\"})\n"
+"  public Widget getWidget();"
+
+#. Tag: title
+#: Remoting.xml:276
+#, no-c-format
+msgid "Combining Constraints"
+msgstr "Kombinieren von Einschränkungen"
+
+#. Tag: para
+#: Remoting.xml:277
+#, no-c-format
+msgid ""
+"Constraints can also be combined, to filter objects from multiple paths "
+"within the object graph:"
+msgstr "Einschränkungen können auch kombiniert, um Objekte von mehreren Pfaden innerhalb des Objektdiagramms zu filtern:"
+
+#. Tag: programlisting
+#: Remoting.xml:280
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetList.secret\", \"widgetMap[value].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+"@WebRemote(exclude = {\"widgetList.secret\", \"widgetMap[value].secret\"})\n"
+"  public Widget getWidget();"
+
+#. Tag: title
+#: Remoting.xml:281
+#, no-c-format
+msgid "JMS Messaging"
+msgstr "JMS-Messaging"
+
+#. Tag: para
+#: Remoting.xml:282
+#, no-c-format
+msgid ""
+"Seam Remoting provides experimental support for JMS Messaging. This section "
+"describes the JMS support that is currently implemented, but please note "
+"that this may change in the future. It is currently not recommended that "
+"this feature is used within a production environment."
+msgstr "Seam Remoting liefert experimentellen Support für JMS-Messaging. Dieser Abschnitt beschreibt den aktuell implementierten JMS-Support, beachten Sie aber bitte, dass sich dies in Zukunft ändern kann. Es wird derzeit nicht empfohlen, dieses Feature innerhalb einer Produktionsumgebung zu verwenden."
+
+#. Tag: para
+#: Remoting.xml:286
+#, no-c-format
+msgid ""
+"Before you can subscribe to a JMS topic, you must first configure a list of "
+"the topics that can be subscribed to by Seam Remoting. List the topics under "
+"<literal>org.jboss.seam.remoting.messaging.subscriptionRegistry."
+"allowedTopics</literal> in <literal>seam.properties</literal>, <literal>web."
+"xml</literal> or <literal>components.xml</literal>."
+msgstr ""
+"Ehe Sie ein JMS-Topic abonnieren können, müssen Sie zunächst eine Liste der abonnierbaren Topics von Seam Remoting konfigurieren. Listen Sie die Topics unter "
+"<literal>org.jboss.seam.remoting.messaging.subscriptionRegistry."
+"allowedTopics</literal> in <literal>seam.properties</literal>, <literal>web.xml</literal> oder <literal>components.xml</literal>."
+
+#. Tag: programlisting
+#: Remoting.xml:289 Remoting.xml:322
+#, no-c-format
+msgid "&lt;remoting:remoting poll-timeout=\"5\" poll-interval=\"1\"/&gt;"
+msgstr "&lt;remoting:remoting poll-timeout=\"5\" poll-interval=\"1\"/&gt;"
+
+#. Tag: title
+#: Remoting.xml:290
+#, no-c-format
+msgid "Subscribing to a JMS Topic"
+msgstr "Abonnieren eines JMS-Topic"
+
+#. Tag: para
+#: Remoting.xml:291
+#, no-c-format
+msgid "The following example demonstrates how to subscribe to a JMS Topic:"
+msgstr "Das folgende Beispiel demonstriert, wie man ein JMS-Topic abonniert:"
+
+#. Tag: programlisting
+#: Remoting.xml:294
+#, no-c-format
+msgid ""
+"function subscriptionCallback(message)\n"
+"  {\n"
+"    if (message instanceof Seam.Remoting.TextMessage)\n"
+"      alert(\"Received message: \" + message.getText());\n"
+"  }        \n"
+"        \n"
+"  Seam.Remoting.subscribe(\"topicName\", subscriptionCallback);"
+msgstr ""
+"function subscriptionCallback(message)\n"
+"  {\n"
+"    if (message instanceof Seam.Remoting.TextMessage)\n"
+"      alert(\"Received message: \" + message.getText());\n"
+"  }        \n"
+"        \n"
+"  Seam.Remoting.subscribe(\"topicName\", subscriptionCallback);"
+
+#. Tag: para
+#: Remoting.xml:295
+#, no-c-format
+msgid ""
+"The <literal>Seam.Remoting.subscribe()</literal> method accepts two "
+"parameters, the first being the name of the JMS Topic to subscribe to, the "
+"second being the callback function to invoke when a message is received."
+msgstr "Die <literal>Seam.Remoting.subscribe()</literal>-Methode akzeptiert zwei Parameters, wobei der erste der Name des zu abonnierenden JMS-Topics, der zweite die bei Erhalt einer Nachricht aufzurufende Callback-Funktion ist."
+
+#. Tag: para
+#: Remoting.xml:298
+#, no-c-format
+msgid ""
+"There are two types of messages supported, Text messages and Object "
+"messages. If you need to test for the type of message that is passed to your "
+"callback function you can use the <literal>instanceof</literal> operator to "
+"test whether the message is a <literal>Seam.Remoting.TextMessage</literal> "
+"or <literal>Seam.Remoting.ObjectMessage</literal>. A <literal>TextMessage</"
+"literal> contains the text value in its <literal>text</literal> field (or "
+"alternatively call <literal>getText()</literal> on it), while an "
+"<literal>ObjectMessage</literal> contains its object value in its "
+"<literal>object</literal> field (or call its <literal>getObject()</literal> "
+"method)."
+msgstr ""
+"Zwei Typen von Nachrichten werden unterstützt - Textnachrichten und Objektnachrichten. Falls Sie auf den an Ihre Callback-Funktion weitergegebenen Nachrichtentyp prüfen müssen, können Sie den <literal>instanceof</literal>-Operator verwenden, um zu testen, ob es sich bei der Nachricht um eine <literal>Seam.Remoting.TextMessage</literal> "
+"oder <literal>Seam.Remoting.ObjectMessage</literal> handelt. Eine <literal>TextMessage</literal> enthält den Textwert in seinem <literal>text</literal>-Feld (oder rufen Sie alternativ <literal>getText()</literal> auf), während eine "
+"<literal>ObjectMessage</literal> ihre Objektwerte in ihrem "
+"<literal>object</literal>-Feld enthält (oder rufen Sie die <literal>getObject()</literal>-Methode auf)."
+
+#. Tag: title
+#: Remoting.xml:301
+#, no-c-format
+msgid "Unsubscribing from a Topic"
+msgstr "Ein Topic abbestellen"
+
+#. Tag: para
+#: Remoting.xml:302
+#, no-c-format
+msgid ""
+"To unsubscribe from a topic, call <literal>Seam.Remoting.unsubscribe()</"
+"literal> and pass in the topic name:"
+msgstr "Um ein Topic abzubestellen rufen Sie <literal>Seam.Remoting.unsubscribe()</literal> auf und geben Sie den Topic-Namen ein:"
+
+#. Tag: programlisting
+#: Remoting.xml:305
+#, no-c-format
+msgid "Seam.Remoting.unsubscribe(\"topicName\");"
+msgstr "Seam.Remoting.unsubscribe(\"topicName\");"
+
+#. Tag: title
+#: Remoting.xml:306
+#, no-c-format
+msgid "Tuning the Polling Process"
+msgstr "Feinabstimmung des \"Polling\"-Prozesses"
+
+#. Tag: para
+#: Remoting.xml:307
+#, no-c-format
+msgid ""
+"There are two parameters which you can modify to control how polling occurs. "
+"The first one is <literal>Seam.Remoting.pollInterval</literal>, which "
+"controls how long to wait between subsequent polls for new messages. This "
+"parameter is expressed in seconds, and its default setting is 10."
+msgstr "Es gibt zwei Parameter, die Sie bearbeiten können, um zu steuern wie das \"Polling\" erfolgt. Der erste ist <literal>Seam.Remoting.pollInterval</literal>, der steuern, wie lange gewartet werden soll, bis ein nachfolgendes Polling nach neuen Nachrichten erfolgen soll. Dieser Parameter wird in Sekunden ausgedrückt und die Standardeinstellung lautet 10."
+
+#. Tag: para
+#: Remoting.xml:310
+#, no-c-format
+msgid ""
+"The second parameter is <literal>Seam.Remoting.pollTimeout</literal>, and is "
+"also expressed as seconds. It controls how long a request to the server "
+"should wait for a new message before timing out and sending an empty "
+"response. Its default is 0 seconds, which means that when the server is "
+"polled, if there are no messages ready for delivery then an empty response "
+"will be immediately returned."
+msgstr ""
+"Der zweite Parameter lautet <literal>Seam.Remoting.pollTimeout</literal> und wird ebenfalls in Sekunden ausgedrückt. Er steuert, wie lange die Anfrage an den Server "
+"auf eine neue Nachricht warten sollte, ehe ein Timeout erfolgt und eine leere Nachricht gesendet wird. Die Standardeinstellung sind 0 Sekunden, was soviel bedeutet wie dass wenn ein Polling am Server erfolgt und keine Nachrichten für die Lieferung bereitstehen, sofort eine leere Antwort versendet wird."
+
+#. Tag: para
+#: Remoting.xml:313
+#, no-c-format
+msgid ""
+"Caution should be used when setting a high <literal>pollTimeout</literal> "
+"value; each request that has to wait for a message means that a server "
+"thread is tied up until a message is received, or until the request times "
+"out. If many such requests are being served simultaneously, it could mean a "
+"large number of threads become tied up because of this reason."
+msgstr "Beim Setzen eines hohen <literal>pollTimeout</literal>-Wertes sollten Sie Vorsicht walten lassen: Jede Anfrage, die auf eine Nachricht warten muss, bedeutet, dass der Server-Thread bis zum Erhalt einer Nachricht oder dem Timeout der Anfrage belegt ist. Ist dies bei vielen solcher Anfragen gleichzeitig der Fall, so könnte es bedeuten, dass eine große Anzahl an Threads aus diesem Grund belegt sind."
+
+#. Tag: para
+#: Remoting.xml:316
+#, no-c-format
+msgid ""
+"It is recommended that you set these options via components.xml, however "
+"they can be overridden via Javascript if desired. The following example "
+"demonstrates how to configure the polling to occur much more aggressively. "
+"You should set these parameters to suitable values for your application:"
+msgstr ""
+"Es wird empfohlen, dass Sie diese Optionen via components.xml einstellen, sie können aber auf Wunsch via Javascript if desiredaußer Kraft gesetzt werden. Das folgende Beispiel demonstriert, wie das Polling konfiguriert werden werden kann, um aggressiver vorzukommen. "
+"Sie sollten diese Parameter auf für Ihre Anwendung passende Werte einstellen:"
+
+#. Tag: para
+#: Remoting.xml:319
+#, no-c-format
+msgid "Via components.xml:"
+msgstr "Ãœber components.xml:"
+
+#. Tag: para
+#: Remoting.xml:323
+#, no-c-format
+msgid "Via JavaScript:"
+msgstr "Ãœber JavaScript:"
+
+#. Tag: programlisting
+#: Remoting.xml:326
+#, no-c-format
+msgid ""
+"// Only wait 1 second between receiving a poll response and sending the next "
+"poll request.\n"
+"  Seam.Remoting.pollInterval = 1;\n"
+"  \n"
+"  // Wait up to 5 seconds on the server for new messages\n"
+"  Seam.Remoting.pollTimeout = 5;"
+msgstr ""
+"// Only wait 1 second between receiving a poll response and sending the next "
+"poll request.\n"
+"  Seam.Remoting.pollInterval = 1;\n"
+"  \n"
+"  // Wait up to 5 seconds on the server for new messages\n"
+"  Seam.Remoting.pollTimeout = 5;"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Seam_Reference_Guide.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Seam_Reference_Guide.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Seam_Reference_Guide.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,334 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-02-04 23:29+0000\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Seam_Reference_Guide.xml:9
+#, no-c-format
+msgid "Introduction to JBoss Seam"
+msgstr ""
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:10
+#, no-c-format
+msgid ""
+"Seam is an application framework for Java EE 5. It is inspired by the "
+"following principles:"
+msgstr ""
+
+#. Tag: emphasis
+#: Seam_Reference_Guide.xml:15
+#, no-c-format
+msgid "Integrate JSF with EJB 3.0"
+msgstr ""
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:17
+#, no-c-format
+msgid ""
+"JSF and EJB 3.0 are two of the best new features of Java EE 5. EJB3 is a "
+"brand new component model for server side business and persistence logic. "
+"Meanwhile, JSF is a great component model for the presentation tier. "
+"Unfortunately, neither component model is able to solve all problems in "
+"computing by itself. Indeed, JSF and EJB3 work best used together. But the "
+"Java EE 5 specification provides no standard way to integrate the two "
+"component models. Fortunately, the creators of both models foresaw this "
+"situation and provided standard extension points to allow extension and "
+"integration of other solutions."
+msgstr ""
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:20
+#, no-c-format
+msgid ""
+"Seam unifies the component models of JSF and EJB3, eliminating glue code, "
+"and letting the developer think about the business problem."
+msgstr ""
+
+#. Tag: emphasis
+#: Seam_Reference_Guide.xml:26
+#, no-c-format
+msgid "Integrated AJAX"
+msgstr ""
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:28
+#, no-c-format
+msgid ""
+"Seam supports two open source JSF-based AJAX solutions: ICEfaces and "
+"Ajax4JSF. These solutions let you add AJAX capability to your user interface "
+"without the need to write any JavaScript code."
+msgstr ""
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:31
+#, no-c-format
+msgid ""
+"Seam also provides a built-in JavaScript remoting layer for EJB3 components. "
+"AJAX clients can easily call server-side components and subscribe to JMS "
+"topics, without the need for an intermediate action layer."
+msgstr ""
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:34
+#, no-c-format
+msgid ""
+"Neither of these approaches would work well, were it not for Seam&#39;s "
+"built-in concurrency and state management, which ensures that many "
+"concurrent fine-grained, asynchronous AJAX requests are handled safely and "
+"efficiently on the server side."
+msgstr ""
+
+#. Tag: emphasis
+#: Seam_Reference_Guide.xml:40
+#, no-c-format
+msgid "Integrate Business Process as a First Class Construct"
+msgstr ""
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:42
+#, no-c-format
+msgid ""
+"Optionally, Seam integrates transparent business process management via "
+"jBPM. You won&#39;t believe how easy it is to implement complex workflows "
+"using jBPM and Seam."
+msgstr ""
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:45
+#, no-c-format
+msgid ""
+"Seam even allows definition of presentation tier conversation flow by the "
+"same means."
+msgstr ""
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:48
+#, no-c-format
+msgid ""
+"JSF provides an incredibly rich event model for the presentation tier. Seam "
+"enhances this model by exposing jBPM&#39;s business process related events "
+"via exactly the same event handling mechanism, providing a uniform event "
+"model for Seam&#39;s uniform component model."
+msgstr ""
+
+#. Tag: emphasis
+#: Seam_Reference_Guide.xml:54
+#, no-c-format
+msgid "One Kind of \"Stuff\""
+msgstr ""
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:56
+#, no-c-format
+msgid ""
+"Seam provides a uniform component model. A Seam component may be stateful, "
+"with the state associated to any one of a number of contexts, ranging from "
+"the long-running business process to a single web request."
+msgstr ""
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:59
+#, no-c-format
+msgid ""
+"There is no distinction between presentation tier components and business "
+"logic components in Seam. It is possible to write Seam applications where "
+"\"everything\" is an EJB. This may come as a surprise if you are used to "
+"thinking of EJBs as coarse-grained, heavyweight objects that are a pain in "
+"the backside to create! However, EJB 3.0 completely changes the nature of "
+"EJB from the point of view of the developer. An EJB is a fine-grained object "
+"- nothing more complex than an annotated JavaBean. Seam even encourages you "
+"to use session beans as JSF action listeners!"
+msgstr ""
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:62
+#, no-c-format
+msgid ""
+"Unlike plain Java EE or J2EE components, Seam components may "
+"<emphasis>simultaneously</emphasis> access state associated with the web "
+"request and state held in transactional resources (without the need to "
+"propagate web request state manually via method parameters). You might "
+"object that the application layering imposed upon you by the old J2EE "
+"platform was a Good Thing. Well, nothing stops you creating an equivalent "
+"layered architecture using Seam - the difference is that <emphasis>you</"
+"emphasis> get to architect your own application and decide what the layers "
+"are and how they work together."
+msgstr ""
+
+#. Tag: emphasis
+#: Seam_Reference_Guide.xml:68
+#, no-c-format
+msgid "Declarative State Management"
+msgstr ""
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:70
+#, no-c-format
+msgid ""
+"We are all used to the concept of declarative transaction management and "
+"J2EE declarative security from EJB 2.x. EJB 3.0 even introduces declarative "
+"persistence context management. These are three examples of a broader "
+"problem of managing state that is associated with a particular "
+"<emphasis>context</emphasis>, while ensuring that all needed cleanup occurs "
+"when the context ends. Seam takes the concept of declarative state "
+"management much further and applies it to <emphasis>application state</"
+"emphasis>. Traditionally, J2EE applications almost always implement state "
+"management manually, by getting and setting servlet session and request "
+"attributes. This approach to state management is the source of many bugs and "
+"memory leaks when applications fail to clean up session attributes, or when "
+"session data associated with different workflows collides in a multi-window "
+"application. Seam has the potential to almost entirely eliminate this class "
+"of bugs."
+msgstr ""
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:73
+#, no-c-format
+msgid ""
+"Declarative application state management is made possible by the richness of "
+"the <emphasis>context model</emphasis> defined by Seam. Seam extends the "
+"context model defined by the servlet spec&mdash;request, session, "
+"application&mdash;with two new contexts&mdash;conversation and business "
+"process&mdash;that are more meaningful from the point of view of the "
+"business logic."
+msgstr ""
+
+#. Tag: emphasis
+#: Seam_Reference_Guide.xml:79
+#, no-c-format
+msgid "Bijection"
+msgstr ""
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:81
+#, no-c-format
+msgid ""
+"The notion of <emphasis>Inversion of Control</emphasis> or "
+"<emphasis>dependency injection</emphasis> exists in both JSF and EJB3, as "
+"well as in numerous so-called \"lighweight containers\". Most of these "
+"containers emphasize injection of components that implement "
+"<emphasis>stateless services</emphasis>. Even when injection of stateful "
+"components is supported (such as in JSF), it is virtually useless for "
+"handling application state because the scope of the stateful component "
+"cannot be defined with sufficient flexibility."
+msgstr ""
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:84
+#, no-c-format
+msgid ""
+"<emphasis>Bijection</emphasis> differs from IoC in that it is "
+"<emphasis>dynamic</emphasis>, <emphasis>contextual</emphasis>, and "
+"<emphasis>bidirectional</emphasis>. You can think of it as a mechanism for "
+"aliasing contextual variables (names in the various contexts bound to the "
+"current thread) to attributes of the component. Bijection allows auto-"
+"assembly of stateful components by the container. It even allows a component "
+"to safely and easily manipulate the value of a context variable, just by "
+"assigning to an attribute of the component."
+msgstr ""
+
+#. Tag: emphasis
+#: Seam_Reference_Guide.xml:90
+#, no-c-format
+msgid "Workspace Management"
+msgstr ""
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:92
+#, no-c-format
+msgid ""
+"Optionally, Seam applications may take advantage of <emphasis>workspace "
+"management</emphasis>, allowing users to freely switch between different "
+"conversations (workspaces) in a single browser window. Seam provides not "
+"only correct multi-window operation, but also multi-window-like operation in "
+"a single window!"
+msgstr ""
+
+#. Tag: emphasis
+#: Seam_Reference_Guide.xml:98
+#, no-c-format
+msgid "Annotated POJOs Everywhere"
+msgstr ""
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:100
+#, no-c-format
+msgid ""
+"EJB 3.0 embraces annotations and \"configuration by exception\" as the "
+"easiest way to provide information to the container in a declarative form. "
+"Unfortunately, JSF is still heavily dependent on verbose XML configuration "
+"files. Seam extends the annotations provided by EJB 3.0 with a set of "
+"annotations for declarative state management and declarative context "
+"demarcation. This lets you eliminate the noisy JSF managed bean declarations "
+"and reduce the required XML to just that information which truly belongs in "
+"XML (the JSF navigation rules)."
+msgstr ""
+
+#. Tag: emphasis
+#: Seam_Reference_Guide.xml:106
+#, no-c-format
+msgid "Testability as a Core Feature"
+msgstr ""
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:108
+#, no-c-format
+msgid ""
+"Seam components, being POJOs, are by nature unit testable. But for complex "
+"applications, unit testing alone is insufficient. Integration testing has "
+"traditionally been a messy and difficult task for Java web applications. "
+"Therefore, Seam provides for testability of Seam applications as a core "
+"feature of the framework. You can easily write JUnit or TestNG tests that "
+"reproduce a whole interaction with a user, exercising all components of the "
+"system apart from the view (the JSP or Facelets page). You can run these "
+"tests directly inside your IDE, where Seam will automatically deploy EJB "
+"components into the JBoss Embeddable EJB3 container."
+msgstr ""
+
+#. Tag: emphasis
+#: Seam_Reference_Guide.xml:114
+#, no-c-format
+msgid "Get started now!"
+msgstr ""
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:116
+#, no-c-format
+msgid ""
+"Seam works in any application server that supports EJB 3.0. You can even use "
+"Seam in a servlet container like Tomcat, or in any J2EE application server, "
+"by leveraging the new JBoss Embeddable EJB3 container."
+msgstr ""
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:119
+#, no-c-format
+msgid ""
+"However, we realize that not everyone is ready to make the switch to EJB "
+"3.0. So, in the interim, you can use Seam as a framework for applications "
+"that use JSF for presentation, Hibernate (or plain JDBC) for persistence and "
+"JavaBeans for application logic. Then, when you&#39;re ready to make the "
+"switch to EJB 3.0, migration will be straightforward."
+msgstr ""
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:133
+#, no-c-format
+msgid ""
+"It turns out that the combination of Seam, JSF and EJB3 is <emphasis>the</"
+"emphasis> simplest way to write a complex web application in Java. You "
+"won&#39;t believe how little code is required!"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Security.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Security.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Security.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2208 @@
+# translation of Security.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Jasna Dimanoski <jdimanos at redhat.com>, 2007, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Security\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2008-04-25 20:07+1000\n"
+"Last-Translator: Jasna Dimanoski <jdimanos at redhat.com>\n"
+"Language-Team:  <de at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Security.xml:6
+#, no-c-format
+msgid "Security"
+msgstr "Sicherheit"
+
+#. Tag: para
+#: Security.xml:7
+#, no-c-format
+msgid ""
+"The Seam Security API is an optional Seam feature that provides "
+"authentication and authorization features for securing both domain and page "
+"resources within your Seam project."
+msgstr "Beim Seam Security API handelt es sich um ein optionales Seam Feature, das Features für Authentifikation und Autorisierung bietet mit denen sowohl Domain- als auch Seiten-Ressourcen innerhalb Ihres Seam Projekts gesichert werden."
+
+#. Tag: title
+#: Security.xml:10
+#, no-c-format
+msgid "Overview"
+msgstr "Ãœbersicht"
+
+#. Tag: para
+#: Security.xml:11
+#, no-c-format
+msgid "Seam Security provides two different modes of operation:"
+msgstr "Seam Sicherheit liefert zwei verschiedene Betriebsmodi:"
+
+#. Tag: para
+#: Security.xml:16
+#, no-c-format
+msgid ""
+"<emphasis>simplified mode</emphasis> - this mode supports authentication "
+"services and simple role-based security checks."
+msgstr "<emphasis>Vereinfachter Modus</emphasis> - dieser Modus unterstützt Authentifikationsdienste und einfache, rollenbasierte Sicherheitsprüfungen."
+
+#. Tag: para
+#: Security.xml:21
+#, no-c-format
+msgid ""
+"<emphasis>advanced mode</emphasis> - this mode supports all the same "
+"features as the simplified mode, plus it offers rule-based security checks "
+"using JBoss Rules."
+msgstr "<emphasis>Fortgeschrittener Modus</emphasis> - dieser Modus unterstützt dieselben Features wie der vereinfachte Modus, plus zusätzlich regelbasierte Sicherheitsprüfungen unter Verwendung von JBoss Rules."
+
+#. Tag: title
+#: Security.xml:26
+#, no-c-format
+msgid "Which mode is right for my application?"
+msgstr "Welches ist der richtige Modus für meine Anwendung?"
+
+#. Tag: para
+#: Security.xml:27
+#, no-c-format
+msgid ""
+"That all depends on the requirements of your application. If you have "
+"minimal security requirements, for example if you only wish to restrict "
+"certain pages and actions to users who are logged in, or who belong to a "
+"certain role, then the simplified mode will probably be sufficient. The "
+"advantages of this is a more simplified configuration, significantly less "
+"libraries to include, and a smaller memory footprint."
+msgstr "Das alles hängt von den Anforderungen Ihrer Anwendung ab. Falls Sie minimale Sicherheitsanforderungen besitzen, etwa lediglich bestimmte Seiten und Actions für angemeldete Benutzer oder für Benutzer in einer bestimmten Position einschränken möchten, so ist der vereinfachte Modus wahrscheinlich ausreichend. Die Vorteile hiervon sind eine vereinfachte Konfiguration, eine maßgeblich geringere Anzahl mit einzuschließender Bibliotheken und ein kleinerer Memory-Footprint."
+
+#. Tag: para
+#: Security.xml:30
+#, no-c-format
+msgid ""
+"If on the other hand, your application requires security checks based on "
+"contextual state or complex business rules, then you will require the "
+"features provided by the advanced mode."
+msgstr "Falls Ihre Anwendung jedoch auf dem kontextuellen Status oder komplexen Business Regeln basierende Sicherheitsprüfungen erfordert, so werden Sie die im fortgeschrittenen Modus verfügbaren Features benötigen."
+
+#. Tag: title
+#: Security.xml:33
+#, no-c-format
+msgid "Requirements"
+msgstr "Anforderungen"
+
+#. Tag: para
+#: Security.xml:34
+#, no-c-format
+msgid ""
+"If using the advanced mode features of Seam Security, the following jar "
+"files are required to be configured as modules in <literal>application.xml</"
+"literal>. If you are using Seam Security in simplified mode, these are "
+"<emphasis>not</emphasis> required:"
+msgstr "Falls Sie die Features des fortgeschrittenen Modus von Seam Security verwenden, so ist die Konfiguration folgender jar-Dateien als Module in <literal>application.xml</literal> erforderlich. Falls Sie Seam Security in vereinfachtem Modus verwenden, sind diese <emphasis>nicht</emphasis> erforderlich:"
+
+#. Tag: para
+#: Security.xml:39
+#, no-c-format
+msgid "drools-compiler-3.0.5.jar"
+msgstr "drools-compiler-3.0.5.jar"
+
+#. Tag: para
+#: Security.xml:44
+#, no-c-format
+msgid "drools-core-3.0.5.jar"
+msgstr "drools-core-3.0.5.jar"
+
+#. Tag: para
+#: Security.xml:49
+#, no-c-format
+msgid "commons-jci-core-1.0-406301.jar"
+msgstr "commons-jci-core-1.0-406301.jar"
+
+#. Tag: para
+#: Security.xml:54
+#, no-c-format
+msgid "commons-jci-janino-2.4.3.jar"
+msgstr "commons-jci-janino-2.4.3.jar"
+
+#. Tag: para
+#: Security.xml:59
+#, no-c-format
+msgid "commons-lang-2.1.jar"
+msgstr "commons-lang-2.1.jar"
+
+#. Tag: para
+#: Security.xml:64
+#, no-c-format
+msgid "janino-2.4.3.jar"
+msgstr "janino-2.4.3.jar"
+
+#. Tag: para
+#: Security.xml:69
+#, no-c-format
+msgid "stringtemplate-2.3b6.jar"
+msgstr "stringtemplate-2.3b6.jar"
+
+#. Tag: para
+#: Security.xml:74
+#, no-c-format
+msgid "antlr-2.7.6.jar"
+msgstr "antlr-2.7.6.jar"
+
+#. Tag: para
+#: Security.xml:79
+#, no-c-format
+msgid "antlr-3.0ea8.jar"
+msgstr "antlr-3.0ea8.jar"
+
+#. Tag: para
+#: Security.xml:84
+#, no-c-format
+msgid ""
+"For web-based security, <literal>jboss-seam-ui.jar</literal> must also be "
+"included in the application&#39;s war file. Also, to make use of the "
+"security EL functions, <literal>SeamFaceletViewHandler</literal> must be "
+"used. Configure it in <literal>faces-config.xml</literal> like this:"
+msgstr "Für webbasierte Sicherheit muss auch <literal>jboss-seam-ui.jar</literal> in der war-Datei der Anwendung enthalten sein. Um auch die EL-Funktionen der Sicherheit <literal>SeamFaceletViewHandler</literal> müssen verwendet werden. Konfigurieren Sie dies wie folgt in <literal>faces-config.xml</literal>:"
+
+#. Tag: programlisting
+#: Security.xml:87
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;view-handler&gt;org.jboss.seam.ui.facelet.SeamFaceletViewHandler&lt;/"
+"view-handler&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+"&lt;application&gt;\n"
+"    &lt;view-handler&gt;org.jboss.seam.ui.facelet.SeamFaceletViewHandler&lt;/"
+"view-handler&gt;\n"
+"&lt;/application&gt;"
+
+#. Tag: title
+#: Security.xml:88
+#, no-c-format
+msgid "Authentication"
+msgstr "Authentifikation"
+
+#. Tag: para
+#: Security.xml:89
+#, no-c-format
+msgid ""
+"The authentication features provided by Seam Security are built upon JAAS "
+"(Java Authentication and Authorization Service), and as such provide a "
+"robust and highly configurable API for handling user authentication. "
+"However, for less complex authentication requirements Seam offers a much "
+"more simplified method of authentication that hides the complexity of JAAS."
+msgstr ""
+"Die durch Seam Security bereitgestellten Features zur Authentifikation sind auf JAAS (\"Java Authentication and Authorization Service\") aufgebaut und bieten somit eine robuste und in hohem Maße konfigurierbare API für die Handhabe der Benutzerauthentifikation. "
+"Für weniger komplexe Authentifiationsanforderungen bietet Seam eine vereinfachte Methode der Authentifikation, die die Komplexität von JAAS verbirgt."
+
+#. Tag: title
+#: Security.xml:92
+#, no-c-format
+msgid "Configuration"
+msgstr "Konfiguration"
+
+#. Tag: para
+#: Security.xml:93
+#, no-c-format
+msgid ""
+"The simplified authentication method uses a built-in JAAS login module, "
+"<literal>SeamLoginModule</literal>, which delegates authentication to one of "
+"your own Seam components. This login module is already configured inside "
+"Seam as part of a default application policy and as such does not require "
+"any additional configuration files. It allows you to write an authentication "
+"method using the entity classes that are provided by your own application. "
+"Configuring this simplified form of authentication requires the "
+"<literal>identity</literal> component to be configured in "
+"<literal>components.xml</literal>:"
+msgstr "Die vereinfachte Authentifikationsmethode verwendet das eingebaute JAAS Login-Modul <literal>SeamLoginModule</literal>, das die Authentifikation an eine Ihrer eigenen Seam-Komponenten delegiert. Dieses Login-Modul ist innerhalb von Seam bereits als Teil eine standardmäßigen Anwendungsrichtlinie konfiguriert und benötigt als solche keine zusätzlichen Konfigurationsdateien. Dies gestattet es Ihnen, eine Authentifikationsmethode unter Verwendung der durch Ihre eigene Anwendung bereitgestellten Entity-Klassen zu schreiben. Das Konfigurieren dieser vereinfachten Form der Authetifikation erfordert, dass die <literal>identity</literal>-Komponente in <literal>components.xml</literal> konfiguriert ist:"
+
+#. Tag: programlisting
+#: Security.xml:96
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:security=\"http://jboss.com/products/seam/security\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core http://jboss.com/"
+"products/seam/core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components http://jboss.com/"
+"products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/drools http://jboss.com/"
+"products/seam/drools-1.2.xsd\"\n"
+"                 http://jboss.com/products/seam/security http://jboss.com/"
+"products/seam/security-1.2.xsd\"&gt;                \n"
+"        \n"
+"    &lt;security:identity authenticate-method=\"#{authenticator.authenticate}"
+"\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:security=\"http://jboss.com/products/seam/security\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core http://jboss.com/"
+"products/seam/core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components http://jboss.com/"
+"products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/drools http://jboss.com/"
+"products/seam/drools-1.2.xsd\"\n"
+"                 http://jboss.com/products/seam/security http://jboss.com/"
+"products/seam/security-1.2.xsd\"&gt;                \n"
+"        \n"
+"    &lt;security:identity authenticate-method=\"#{authenticator.authenticate}"
+"\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Security.xml:97
+#, no-c-format
+msgid ""
+"If you wish to use the advanced security features such as rule-based "
+"permission checks, all you need to do is include the Drools (JBoss Rules) "
+"jars in your classpath, and add some additional configuration, described "
+"later."
+msgstr "Falls Sie die fortgeschrittenen Sicherheits-Features wie regelbasierte Genehmigungsprüfungen nutzen möchten, so müssen Sie lediglich die Drools (JBoss Rules) jars in Ihren Klassenpfad mit einschließen, und etwas an Zusatzkonfiguration hinzufügen, wie wir etwas später noch zeigen werden."
+
+#. Tag: para
+#: Security.xml:100
+#, no-c-format
+msgid ""
+"The EL expression <literal>#{authenticator.authenticate}</literal> is a "
+"method binding indicating that the <literal>authenticate</literal> method of "
+"the <literal>authenticator</literal> component will be used to authenticate "
+"the user."
+msgstr "Beim EL-Ausdruck <literal>#{authenticator.authenticate}</literal> handelt es sich um ein Methoden-Binding, das anzeigt, dass die <literal>authenticate</literal>-Methode der <literal>authenticator</literal>-Komponente zur Authetifikation des Benutzers verwendet wird."
+
+#. Tag: title
+#: Security.xml:103
+#, no-c-format
+msgid "Writing an authentication method"
+msgstr "Schreiben einer Authentifikationsmethode"
+
+#. Tag: para
+#: Security.xml:104
+#, no-c-format
+msgid ""
+"The <literal>authenticate-method</literal> property specified for "
+"<literal>identity</literal> in <literal>components.xml</literal> specifies "
+"which method will be used by <literal>SeamLoginModule</literal> to "
+"authenticate users. This method takes no parameters, and is expected to "
+"return a boolean indicating whether authentication is successful or not. The "
+"user&#39;s username and password can be obtained from <literal>Identity."
+"instance().getUsername()</literal> and <literal>Identity.instance()."
+"getPassword()</literal>, respectively. Any roles that the user is a member "
+"of should be assigned using <literal>Identity.instance().addRole()</"
+"literal>. Here&#39;s a complete example of an authentication method inside a "
+"JavaBean component:"
+msgstr ""
+"Die für <literal>identity</literal> in <literal>components.xml</literal> festgelegte <literal>authenticate-method</literal>-Property bestimmt, welche Methode durch <literal>SeamLoginModule</literal> zur Authentifikation von Benutzern verwendet wird. Diese Methode nimmt keine Parameter und soll einen booleschen Wert wiedergeben, der angibt, ob die Authentifikation erfolgreich war oder nicht. Benutzernamen und Passwort erhält man durch <literal>Identity."
+"instance().getUsername()</literal> bzw. <literal>Identity.instance()."
+"getPassword()</literal>. Sämtliche Rollen, deren Mitglied der Benutzer ist, sollten mittels <literal>Identity.instance().addRole()</"
+"literal> zugewiesen werden. Hier sehen Sie ein vollständiges Beispiel einer Authentifikationsmethode innerhalb einer JavaBean-Komponente:"
+
+#. Tag: programlisting
+#: Security.xml:107
+#, no-c-format
+msgid ""
+"@Name(\"authenticator\")\n"
+"public class Authenticator {\n"
+"   @In EntityManager entityManager;\n"
+"   \n"
+"   public boolean authenticate() {\n"
+"      try\n"
+"      {\n"
+"         User user = (User) entityManager.createQuery(\n"
+"            \"from User where username = :username and password = :password"
+"\")\n"
+"            .setParameter(\"username\", Identity.instance().getUsername())\n"
+"            .setParameter(\"password\", Identity.instance().getPassword())\n"
+"            .getSingleResult();\n"
+"\n"
+"         if (user.getRoles() != null)\n"
+"         {\n"
+"            for (UserRole mr : user.getRoles())\n"
+"               Identity.instance().addRole(mr.getName());\n"
+"         }\n"
+"\n"
+"         return true;\n"
+"      }\n"
+"      catch (NoResultException ex)\n"
+"      {\n"
+"         FacesMessages.instance().add(\"Invalid username/password\");\n"
+"         return false;\n"
+"      }\n"
+"      \n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+"@Name(\"authenticator\")\n"
+"public class Authenticator {\n"
+"   @In EntityManager entityManager;\n"
+"   \n"
+"   public boolean authenticate() {\n"
+"      try\n"
+"      {\n"
+"         User user = (User) entityManager.createQuery(\n"
+"            \"from User where username = :username and password = :password"
+"\")\n"
+"            .setParameter(\"username\", Identity.instance().getUsername())\n"
+"            .setParameter(\"password\", Identity.instance().getPassword())\n"
+"            .getSingleResult();\n"
+"\n"
+"         if (user.getRoles() != null)\n"
+"         {\n"
+"            for (UserRole mr : user.getRoles())\n"
+"               Identity.instance().addRole(mr.getName());\n"
+"         }\n"
+"\n"
+"         return true;\n"
+"      }\n"
+"      catch (NoResultException ex)\n"
+"      {\n"
+"         FacesMessages.instance().add(\"Invalid username/password\");\n"
+"         return false;\n"
+"      }\n"
+"      \n"
+"   }\n"
+"   \n"
+"}"
+
+#. Tag: para
+#: Security.xml:108
+#, no-c-format
+msgid ""
+"In the above example, both <literal>User</literal> and <literal>UserRole</"
+"literal> are application-specific entity beans. The <literal>roles</literal> "
+"parameter is populated with the roles that the user is a member of, which "
+"should be added to the <literal>Set</literal> as literal string values, e.g. "
+"\"admin\", \"user\". In this case, if the user record is not found and a "
+"<literal>NoResultException</literal> thrown, the authentication method "
+"returns <literal>false</literal> to indicate the authentication failed."
+msgstr ""
+"Im Beispiel oben handelt es sich sowohl bei <literal>User</literal> als auch bei <literal>UserRole</literal> um anwendungsspezifische Entity-Beans. Der <literal>roles</literal>-Parameter wird mit den Rollen, deren Mitglied der Benutzer ist, aufgefüllt, die als literale String-Werte dem <literal>Set</literal> hinzugefügt werden sollten, z.B. "
+"\"admin\", \"user\". In diesem Fall gibt die Authentifikationsmethode <literal>false</literal> bei Nichtauffinden des Benutzerdatensatzes wider, wenn eine <literal>NoResultException</literal> gemeldet wird, und zeigt somit an, dass die Authentifikation fehlgeschlagen ist."
+
+#. Tag: title
+#: Security.xml:111
+#, no-c-format
+msgid "Writing a login form"
+msgstr "Schreiben eines Login-Formulars"
+
+#. Tag: para
+#: Security.xml:112
+#, no-c-format
+msgid ""
+"The <literal>Identity</literal> component provides both <literal>username</"
+"literal> and <literal>password</literal> properties, catering for the most "
+"common authentication scenario. These properties can be bound directly to "
+"the username and password fields on a login form. Once these properties are "
+"set, calling the <literal>identity.login()</literal> method will "
+"authenticate the user using the provided credentials. Here&#39;s an example "
+"of a simple login form:"
+msgstr "Die <literal>Identity</literal>-Komponente liefert sowohl  <literal>username</literal> als auch <literal>password</literal> Properties, so dass die meisten gängigen Authetifikationsszenarien abgedeckt sind. Diese Properties können direkt an die Felder für Benutzernamen und Passwort auf einem Login-Formular gebunden werden. Sind diese Properties eingestellt, so wird durch Aufruf der  <literal>identity.login()</literal>-Methode der Benutzer mittels der bereitgestellten Daten authentifiziert. Hier sehen Sie ein Beispiel für ein einfaches Login-Formular:"
+
+#. Tag: programlisting
+#: Security.xml:115
+#, no-c-format
+msgid ""
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"name\" value=\"Username\"/&gt;\n"
+"    &lt;h:inputText id=\"name\" value=\"#{identity.username}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"password\" value=\"Password\"/&gt;\n"
+"    &lt;h:inputSecret id=\"password\" value=\"#{identity.password}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;div&gt;\n"
+"    &lt;h:commandButton value=\"Login\" action=\"#{identity.login}\"/&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"name\" value=\"Username\"/&gt;\n"
+"    &lt;h:inputText id=\"name\" value=\"#{identity.username}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"password\" value=\"Password\"/&gt;\n"
+"    &lt;h:inputSecret id=\"password\" value=\"#{identity.password}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;div&gt;\n"
+"    &lt;h:commandButton value=\"Login\" action=\"#{identity.login}\"/&gt;\n"
+"&lt;/div&gt;"
+
+#. Tag: para
+#: Security.xml:116
+#, no-c-format
+msgid ""
+"Similarly, logging out the user is done by calling <literal>#{identity."
+"logout}</literal>. Calling this action will clear the security state of the "
+"currently authenticated user."
+msgstr "Ähnlich erfolgt die Abmeldung des Benutzers durch Aufruf von <literal>#{identity.logout}</literal>. Durch Aufrufen dieser Action wird der Sicherheitsstatus des aktuell authentifizierten Benutzers gelöscht."
+
+#. Tag: title
+#: Security.xml:119
+#, no-c-format
+msgid "Simplified Configuration - Summary"
+msgstr "Vereinfachte Konfiguration - Zusammenfassung"
+
+#. Tag: para
+#: Security.xml:120
+#, no-c-format
+msgid "So to sum up, there are the three easy steps to configure authentication:"
+msgstr "Zusammenfassend lässt sich sagen, dass es drei einfache Schritte bei der Konfiguration von Authetifikation gibt:"
+
+#. Tag: para
+#: Security.xml:125
+#, no-c-format
+msgid "Configure an authentication method in <literal>components.xml</literal>."
+msgstr "Konfiguration einer Authentifikationsmethode in <literal>components.xml</literal>."
+
+#. Tag: para
+#: Security.xml:130
+#, no-c-format
+msgid "Write an authentication method."
+msgstr "Schreiben einer Authentifikationsmethode."
+
+#. Tag: para
+#: Security.xml:135
+#, no-c-format
+msgid "Write a login form so that the user can authenticate."
+msgstr "Schreiben Sie ein Login-Formular, damit der Benutzer authentifizieren kann."
+
+#. Tag: title
+#: Security.xml:140
+#, no-c-format
+msgid "Handling Security Exceptions"
+msgstr "Umgang mit Sicherheitsausnahmen"
+
+#. Tag: para
+#: Security.xml:141
+#, no-c-format
+msgid ""
+"To prevent users from receiving the default error page in response to a "
+"security error, it&#39;s recommended that <literal>pages.xml</literal> is "
+"configured to redirect security errors to a more \"pretty\" page. The two "
+"main types of exceptions thrown by the security API are:"
+msgstr "Um zu verhindern, dass Benutzer die standardmäßige Fehlerseite als Antwort auf einen Sicherheitsfehler erhalten, wird empfohlen, dass die <literal>pages.xml</literal> konfiguriert wird, damit bei Sicherheitsfehlern zu einer \"hübscheren\" Seite umgeleitet wird. Die beiden Haupttypen von Ausnahmemeldungen durch das Sicherheits-API sind:"
+
+#. Tag: para
+#: Security.xml:146
+#, no-c-format
+msgid ""
+"<literal>NotLoggedInException</literal> - This exception is thrown if the "
+"user attempts to access a restricted action or page when they are not logged "
+"in."
+msgstr "<literal>NotLoggedInException</literal> - Diese Ausnahme wird gemeldet, wenn der Benutzer versucht auf eine eingeschränkte Action oder Seite zuzugreifen, wenn er nicht angemeldet ist."
+
+#. Tag: para
+#: Security.xml:151
+#, no-c-format
+msgid ""
+"<literal>AuthorizationException</literal> - This exception is only thrown if "
+"the user is already logged in, and they have attempted to access a "
+"restricted action or page for which they do not have the necessary "
+"privileges."
+msgstr "<literal>AuthorizationException</literal> - Diese Ausnahme wird nur gemeldet, wenn der Benutzer bereits angemeldet ist und versucht auf eine eingeschränkte Action oder Seite zuzugreifen, für die er nicht die notwendige Berechtigung besitzt."
+
+#. Tag: para
+#: Security.xml:156
+#, no-c-format
+msgid ""
+"In the case of a <literal>NotLoggedInException</literal>, it is recommended "
+"that the user is redirected to either a login or registration page so that "
+"they can log in. For an <literal>AuthorizationException</literal>, it may be "
+"useful to redirect the user to an error page. Here&#39;s an example of a "
+"<literal>pages.xml</literal> file that redirects both of these security "
+"exceptions:"
+msgstr ""
+"Im Falle einer <literal>NotLoggedInException</literal> wird empfohlen, den Benutzer entweder auf eine Login- oder eine Registrierungsseite umzuleiten, damit dieser sich anmelden kann. Bei einer <literal>AuthorizationException</literal> kann es von Nutzen sein, den Benutzer auf eine Fehlerseite umzuleiten. Hier ist ein Beispiel für eine "
+"<literal>pages.xml</literal>-Datei, die beide diese Sicherheitsausnahmen umleitet:"
+
+#. Tag: programlisting
+#: Security.xml:159
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"\n"
+"    ...\n"
+"    \n"
+"    &lt;exception class=\"org.jboss.seam.security.NotLoggedInException"
+"\"&gt;\n"
+"        &lt;redirect view-id=\"/login.xhtml\"&gt;\n"
+"            &lt;message&gt;You must be logged in to perform this action&lt;/"
+"message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"    \n"
+"    &lt;exception class=\"org.jboss.seam.security.AuthorizationException"
+"\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"        &lt;redirect view-id=\"/security_error.xhtml\"&gt;\n"
+"            &lt;message&gt;\n"
+"                              You do not have the necessary security "
+"privileges to perform this action.\n"
+"            &lt;/message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"  \n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"\n"
+"    ...\n"
+"    \n"
+"    &lt;exception class=\"org.jboss.seam.security.NotLoggedInException"
+"\"&gt;\n"
+"        &lt;redirect view-id=\"/login.xhtml\"&gt;\n"
+"            &lt;message&gt;You must be logged in to perform this action&lt;/"
+"message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"    \n"
+"    &lt;exception class=\"org.jboss.seam.security.AuthorizationException"
+"\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"        &lt;redirect view-id=\"/security_error.xhtml\"&gt;\n"
+"            &lt;message&gt;\n"
+"                              You do not have the necessary security "
+"privileges to perform this action.\n"
+"            &lt;/message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"  \n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Security.xml:160
+#, no-c-format
+msgid ""
+"Most web applications require even more sophisticated handling of login "
+"redirection, so Seam includes some special functionality for handling this "
+"problem."
+msgstr "Die meisten Web-Anwendungen erfordern einen noch differenzierteren Umgang mit Login-Umleitungen, weshalb Seam einige spezielle Funktionalitäten für den Umgang mit diesem Problem enthält."
+
+#. Tag: title
+#: Security.xml:163
+#, no-c-format
+msgid "Login Redirection"
+msgstr "Login-Umleitung"
+
+#. Tag: para
+#: Security.xml:164
+#, no-c-format
+msgid ""
+"You can ask Seam to redirect the user to a login screen when an "
+"unauthenticated user tries to access a particular view (or wildcarded view "
+"id) as follows:"
+msgstr "Sie können mit Seam den Benutzer zu einem Login-Bildschirm umleiten, wenn ein unauthetifizierter Benutzer versucht, auf eine bestimmte Ansicht zuzugreifen (oder Platzhalter-Ansichts-ID) - dies geht wie folgt:"
+
+#. Tag: programlisting
+#: Security.xml:167
+#, no-c-format
+msgid ""
+"&lt;pages login-view-id=\"/login.xhtml\"&gt;\n"
+"\n"
+"    &lt;page view-id=\"/members/*\" login-required=\"true\"/&gt;\n"
+"    \n"
+"    ...\n"
+"    \n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages login-view-id=\"/login.xhtml\"&gt;\n"
+"\n"
+"    &lt;page view-id=\"/members/*\" login-required=\"true\"/&gt;\n"
+"    \n"
+"    ...\n"
+"    \n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Security.xml:168
+#, no-c-format
+msgid ""
+"(This is less of a blunt instrument than the exception handler shown above, "
+"but should probably be used in conjunction with it.)"
+msgstr "(Dies ist ein weniger grobes Instrument tals der oben gezeigte Ausnahmen-Handler, aber sollte wahrscheinlich in Zusammenarbeit mit diesem verwendet werden)."
+
+#. Tag: para
+#: Security.xml:171
+#, no-c-format
+msgid ""
+"After the user logs in, we want to automatically send them back where they "
+"came from, so they can retry the action that required logging in. If you add "
+"the following event listeners to <literal>components.xml</literal>, attempts "
+"to access a restricted view while not logged in will be remembered, so that "
+"upon the user successfully logging in they will be redirected to the "
+"originally requested view, with any page parameters that existed in the "
+"original request."
+msgstr "Nachdem der Benutzer sich angemeldet hat, schicken wir ihn automatisch dort hin zurück, woher er gekommen ist, damit er die den Login erfoderlich machende Action ausprobieren kann. Falls Sie folgende Event-Listener <literal>components.xml</literal> hinzufügen, so werden Versuche auf eine eingeschränkte Ansicht zuzugreifen gespeichert, so dass der Benutzer nach erfolgreicher Anmeldung mit sämtlichen in der Ursprungsanfrage bestehenden Seitenparametern zur ursprünglich gewünschten Ansicht weitergeleitet wird."
+
+#. Tag: programlisting
+#: Security.xml:174
+#, no-c-format
+msgid ""
+"&lt;event type=\"org.jboss.seam.notLoggedIn\"&gt;\n"
+"    &lt;action expression=\"#{redirect.captureCurrentView}\"/&gt;\n"
+"&lt;/event&gt;\n"
+"    \n"
+"&lt;event type=\"org.jboss.seam.postAuthenticate\"&gt;\n"
+"    &lt;action expression=\"#{redirect.returnToCapturedView}\"/&gt;\n"
+"&lt;/event&gt;"
+msgstr ""
+"&lt;event type=\"org.jboss.seam.notLoggedIn\"&gt;\n"
+"    &lt;action expression=\"#{redirect.captureCurrentView}\"/&gt;\n"
+"&lt;/event&gt;\n"
+"    \n"
+"&lt;event type=\"org.jboss.seam.postAuthenticate\"&gt;\n"
+"    &lt;action expression=\"#{redirect.returnToCapturedView}\"/&gt;\n"
+"&lt;/event&gt;"
+
+#. Tag: para
+#: Security.xml:175
+#, no-c-format
+msgid ""
+"Note that login redirection is implemented as a conversation-scoped "
+"mechanism, so don&#39;t end the conversation in your <literal>authenticate()"
+"</literal> method."
+msgstr "Beachten Sie, dass die Login-Umleitung als ein konversationsbegrenzter Mechanismus implementiert ist, beenden Sie die Konversation in Ihrer <literal>authenticate()</literal>-Methode also nicht."
+
+#. Tag: title
+#: Security.xml:178
+#, no-c-format
+msgid "Advanced Authentication Features"
+msgstr "Fortgeschrittene Authentifikations-Features"
+
+#. Tag: para
+#: Security.xml:179
+#, no-c-format
+msgid ""
+"This section explores some of the advanced features provided by the security "
+"API for addressing more complex security requirements."
+msgstr "Dieser Abschnitt befasst sich mit einigen fortgeschrittenen Features, die die Sicherheits-API für den Umgang mit komplexeren Sicherheitsanforderungen bietet."
+
+#. Tag: title
+#: Security.xml:182
+#, no-c-format
+msgid "Using your container&#39;s JAAS configuration"
+msgstr "Verwendung der JAAS-Konfiguration Ihres Container&#39;s"
+
+#. Tag: para
+#: Security.xml:183
+#, no-c-format
+msgid ""
+"If you would rather not use the simplified JAAS configuration provided by "
+"the Seam Security API, you may instead delegate to the default system JAAS "
+"configuration by providing a <literal>jaasConfigName</literal> property in "
+"<literal>components.xml</literal>. For example, if you are using JBoss AS "
+"and wish to use the <literal>other</literal> policy (which uses the "
+"<literal>UsersRolesLoginModule</literal> login module provided by JBoss AS), "
+"then the entry in <literal>components.xml</literal> would look like this:"
+msgstr ""
+"Falls Sie die vom Seam Security API bereitgestellte vereinfachte JAAS-Konfiguration lieber nicht verwenden möchten, so können Sie stattdessen zum Standardsystem der JAAS -Konfiguration delegieren, indem Sie eine <literal>jaasConfigName</literal>-Property in "
+"<literal>components.xml</literal> bereitstellen. Wenn Sie zum Beispiel JBoss AS verwenden und and die <literal>other</literal>-Richtlinie verwenden möchten (die das vom JBoss AS gelieferte <literal>UsersRolesLoginModule</literal>-Login-Modul benutzt), "
+"so würde der Eintrag in <literal>components.xml</literal> wie folgt aussehen:"
+
+#. Tag: programlisting
+#: Security.xml:186
+#, no-c-format
+msgid ""
+"&lt;security:identity authenticate-method=\"#{authenticator.authenticate}"
+"\" \n"
+"                      jaas-config-name=\"other\"/&gt;"
+msgstr ""
+"&lt;security:identity authenticate-method=\"#{authenticator.authenticate}"
+"\" \n"
+"                      jaas-config-name=\"other\"/&gt;"
+
+#. Tag: title
+#: Security.xml:187
+#, no-c-format
+msgid "Error Messages"
+msgstr "Fehlermeldungen"
+
+#. Tag: para
+#: Security.xml:188
+#, no-c-format
+msgid ""
+"The security API produces a number of default faces messages for various "
+"security-related events. The following table lists the message keys that can "
+"be used to override these messages by specifying them in a <literal>message."
+"properties</literal> resource file."
+msgstr "Die Sicherheits-API produziert eine Reihe standardmäßiger Faces-Nachrichten für verschiedene, zur Sicherheit gehörende Ereignisse. Die folgende Tabelle führt die Nachrichtenschlüssel auf, die zur Außerkraftsetzung dieser Nachrichten durch Festlegen in einer <literal>message.properties</literal>-Ressourcendatei verwendet werden können."
+
+#. Tag: title
+#: Security.xml:192
+#, no-c-format
+msgid "Security Message Keys"
+msgstr "Nachrichtenschlüssel der Sicherheit"
+
+#. Tag: literal
+#: Security.xml:200
+#, no-c-format
+msgid "org.jboss.seam.loginSuccessful"
+msgstr "org.jboss.seam.loginSuccessful"
+
+#. Tag: para
+#: Security.xml:204
+#, no-c-format
+msgid ""
+"This message is produced when a user successfully logs in via the security "
+"API."
+msgstr "Diese Nachricht wird erstellt, wenn ein Benutzer sich erfolgreich über die Sicherheits-API anmeldet."
+
+#. Tag: literal
+#: Security.xml:212
+#, no-c-format
+msgid "org.jboss.seam.loginFailed"
+msgstr "org.jboss.seam.loginFailed"
+
+#. Tag: para
+#: Security.xml:216
+#, no-c-format
+msgid ""
+"This message is produced when the login process fails, either because the "
+"user provided an incorrect username or password, or because authentication "
+"failed in some other way."
+msgstr "Diese Nachricht wird erstellt, wenn ein Anmeldeversuch fehlschlägt, etwa weil ein Benutzer einen falschen Benutzernamen oder Passwort eingegeben hat oder weil die Authentifikation aus anderem Grund fehlgeschlagen ist."
+
+#. Tag: literal
+#: Security.xml:224
+#, no-c-format
+msgid "org.jboss.seam.NotLoggedIn"
+msgstr "org.jboss.seam.NotLoggedIn"
+
+#. Tag: para
+#: Security.xml:228
+#, no-c-format
+msgid ""
+"This message is produced when a user attempts to perform an action or access "
+"a page that requires a security check, and the user is not currently "
+"authenticated."
+msgstr "Diese Nachricht wird erstellt, wenn ein Benutzer versucht, eine Action durchzuführen oder auf eine Seite zuzugreifen, für die eine Sicherheitsüberprüfung notwendig ist und der Benutzer aktuell nicht authentifiziert ist."
+
+#. Tag: title
+#: Security.xml:236
+#, no-c-format
+msgid "Authorization"
+msgstr "Autorisierung"
+
+#. Tag: para
+#: Security.xml:237
+#, no-c-format
+msgid ""
+"There are a number of authorization features provided by the Seam Security "
+"API for securing access to components, component methods, and pages. This "
+"section describes each of these. An important thing to note is that if you "
+"wish to use any of the advanced features (such as rule-based permissions) "
+"then your <literal>components.xml</literal> must be configured to support "
+"this - see the Configuration section above."
+msgstr ""
+"Es gibt eine Reihe von Features zur Autorisierung, die durch die Seam Security API zur Sicherung des Zugriffs auf Komponenten, Komponentenmethoden und Seiten bereitgestellt werden. Dieser Abschnitt beschreibt jedes von ihnen. Es ist wichtig, dass Sie berücksichtigen, dass - "
+"sollten Sie eines oder mehrere der fortgeschrittenen Features (wie etwa regelbasierte Genehmigungen) verwenden wollen - Ihre <literal>components.xml</literal> so konfiguriert sein müssen, dass sie dies unterstützen. Einzelheiten finden Sie im Abschnitt zur Konfiguration oben."
+
+#. Tag: title
+#: Security.xml:240
+#, no-c-format
+msgid "Core concepts"
+msgstr "Kernkonzepte"
+
+#. Tag: para
+#: Security.xml:241
+#, no-c-format
+msgid ""
+"Each of the authorization mechanisms provided by the Seam Security API are "
+"built upon the concept of a user being granted roles and/or permissions. A "
+"role is a <emphasis>group</emphasis>, or <emphasis>type</emphasis>, of user "
+"that may have been granted certain privileges for performing one or more "
+"specific actions within an application. A permission on the other hand is a "
+"privilege (sometimes once-off) for performing a single, specific action. It "
+"is entirely possible to build an application using nothing but permissions, "
+"however roles offer a higher level of convenience when granting privileges "
+"to groups of users."
+msgstr "Jeder der durch die Seam Security API bereitgestellten Autorisierungsmechanismen baut auf dem Konzept auf, dass einem Benutzer Rollen und/oder Genehmigungen gewährt werden. Eine Rolle ist eine <emphasis>Gruppe</emphasis> oder ein <emphasis>Typ</emphasis> von Benutzer, dem bestimmte Berechtigungen zur Durchführung einer oder mehrerer bestimmter Actions innerhalb der Anwendung gewährt wurden. Eine Genehmigung hingegen ist eine Berechtigung (manchmal einmalig) zur Durchführung einer einzelnen, bestimmten Action. Der Bau einer gesamten Anwendung basierend ausschließlich auf Genehmigungen ist durchaus möglich, jedoch bieten Rollen oft mehr Komfort, wenn Gruppen von Benutzern Berechtigungen gewährt werden."
+
+#. Tag: para
+#: Security.xml:244
+#, no-c-format
+msgid ""
+"Roles are simple, consisting of only a name such as \"admin\", \"user\", "
+"\"customer\", etc. Permissions consist of both a name and an action, and are "
+"represented within this documentation in the form <literal>name:action</"
+"literal>, for example <literal>customer:delete</literal>, or "
+"<literal>customer:insert</literal>."
+msgstr ""
+"Rollen sind einfach und bestehen lediglich aus einem Namen wie \"admin\", \"user\", \"customer\", usw. Genehmigungen bestehen sowohl aus einem Namen als auch einer Action, und werden in dieser Dokumentation in der Form <literal>name:action</literal> repräsentiert, zum Beispiel <literal>customer:delete</literal> oder "
+"<literal>customer:insert</literal>."
+
+#. Tag: title
+#: Security.xml:247
+#, no-c-format
+msgid "Securing components"
+msgstr "Sichern von Komponenten"
+
+#. Tag: para
+#: Security.xml:248
+#, no-c-format
+msgid ""
+"Let&#39;s start by examining the simplest form of authorization, component "
+"security, starting with the <literal>@Restrict</literal> annotation."
+msgstr "Beginnen wir, insimplest form of adem wir uns die einfachste Form der Autorisierung ansehen, das Sichern von Komponenten, wobei wir mit der <literal>@Restrict</literal>-Annotation anfangen."
+
+#. Tag: title
+#: Security.xml:251
+#, no-c-format
+msgid "The @Restrict annotation"
+msgstr "Die @Restrict-Annotation"
+
+#. Tag: para
+#: Security.xml:252
+#, no-c-format
+msgid ""
+"Seam components may be secured either at the method or the class level, "
+"using the <literal>@Restrict</literal> annotation. If both a method and "
+"it&#39;s declaring class are annotated with <literal>@Restrict</literal>, "
+"the method restriction will take precedence (and the class restriction will "
+"not apply). If a method invocation fails a security check, then an exception "
+"will be thrown as per the contract for <literal>Identity.checkRestriction()</"
+"literal> (see Inline Restrictions). A <literal>@Restrict</literal> on just "
+"the component class itself is equivalent to adding <literal>@Restrict</"
+"literal> to each of its methods."
+msgstr ""
+"Seam-Komponenten können unter Verwendung der <literal>@Restrict</literal>-Annotation entweder auf Methoden- oder Klassenebene gesichert werden. Sind sowohl eine Methode als auch deren deklarierende Klasse mit <literal>@Restrict</literal> annotiert, "
+"so hat diese Methodeneinschränkung Vorrang (und die Klasseneinschränkung gilt nicht). Schlägt die Sicherheitsprüfung eines Methodenaufrufs fehl, so wird gemäß dem Vertrag für <literal>Identity.checkRestriction()</literal> eine Ausnahme gemeldet (siehe Inline-Einschränkungen). Ein <literal>@Restrict</literal> auf nur die Komponentenklasse selbst ist äquivalent zum Hinzufügen von <literal>@Restrict</literal> zu jeder von dessen Methoden."
+
+#. Tag: para
+#: Security.xml:255
+#, no-c-format
+msgid ""
+"An empty <literal>@Restrict</literal> implies a permission check of "
+"<literal>componentName:methodName</literal>. Take for example the following "
+"component method:"
+msgstr "Ein leeres <literal>@Restrict</literal> bedeutet eine Genehmigungsprüfung von <literal>componentName:methodName</literal>. Nehmen Sie etwa folgende Komponentenmethode:"
+
+#. Tag: programlisting
+#: Security.xml:258
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class AccountAction {\n"
+"    @Restrict public void delete() {\n"
+"      ...\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"account\")\n"
+"public class AccountAction {\n"
+"    @Restrict public void delete() {\n"
+"      ...\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Security.xml:259
+#, no-c-format
+msgid ""
+"In this example, the implied permission required to call the <literal>delete"
+"()</literal> method is <literal>account:delete</literal>. The equivalent of "
+"this would be to write <literal>@Restrict(\"#{s:hasPermission(&#39;"
+"account&#39;,&#39;delete&#39;,null)}\")</literal>. Now let&#39;s look at "
+"another example:"
+msgstr ""
+"In diesem Beispiel ist dievorausgesetzte erforderliche Genehmigung zum Aufruf der <literal>delete"
+"()</literal>-Methode <literal>account:delete</literal>. Das Äquivalent hiervon wäre es zu schreiben <literal>@Restrict(\"#{s:hasPermission(&#39;"
+"account&#39;,&#39;delete&#39;,null)}\")</literal>. Sehen wir uns jetzt ein anderes Beispiel an:"
+
+#. Tag: programlisting
+#: Security.xml:262
+#, no-c-format
+msgid ""
+"@Restrict @Name(\"account\")\n"
+"public class AccountAction {\n"
+"    public void insert() {\n"
+"      ...\n"
+"    }\n"
+"    @Restrict(\"#{s:hasRole(&#39;admin&#39;)}\") \n"
+"    public void delete() {\n"
+"      ...\n"
+"    }\n"
+"}"
+msgstr ""
+"@Restrict @Name(\"account\")\n"
+"public class AccountAction {\n"
+"    public void insert() {\n"
+"      ...\n"
+"    }\n"
+"    @Restrict(\"#{s:hasRole(&#39;admin&#39;)}\") \n"
+"    public void delete() {\n"
+"      ...\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Security.xml:263
+#, no-c-format
+msgid ""
+"This time, the component class itself is annotated with <literal>@Restrict</"
+"literal>. This means that any methods without an overriding "
+"<literal>@Restrict</literal> annotation require an implicit permission "
+"check. In the case of this example, the <literal>insert()</literal> method "
+"requires a permission of <literal>account:insert</literal>, while the "
+"<literal>delete()</literal> method requires that the user is a member of the "
+"<literal>admin</literal> role."
+msgstr ""
+"Dieses Mal ist die Komponentenklasse selbst mit <literal>@Restrict</"
+"literal> annotiert. Dies bedeutet, dass alle Methoden ohne ein außer Kraft setzende <literal>@Restrict</literal>-Annotation eine implizite Genehmigungsprüfung benötigen. Im Falle dieses Beispiels erfordert die <literal>insert()</literal>-Methode "
+"eine Genehmigung <literal>account:insert</literal>, während die "
+"<literal>delete()</literal>-Methode es erfoderlich macht, dass der Benutzer ein Mitglied der <literal>admin</literal>-Rolle ist."
+
+#. Tag: para
+#: Security.xml:266
+#, no-c-format
+msgid ""
+"Before we go any further, let&#39;s address the <literal>#{s:hasRole()}</"
+"literal> expression seen in the above example. Both <literal>s:hasRole</"
+"literal> and <literal>s:hasPermission</literal> are EL functions, which "
+"delegate to the correspondingly named methods of the <literal>Identity</"
+"literal> class. These functions can be used within any EL expression "
+"throughout the entirety of the security API."
+msgstr "Ehe wir weitermachen wollen wir uns den im obigen Beispiel dargestellten <literal>#{s:hasRole()}</literal>-Ausdruck ansehen. Sowohl <literal>s:hasRole</literal> als auch <literal>s:hasPermission</literal> sind EL-Funktionen, die die entsprechend benannten Methoden der <literal>Identity</literal>-Klasse delegieren. Diese Funktionen können innerhalb eines beliebigen EL-Ausdrucks und über die gesamte Sicherheits-API hinweg verwendet werden."
+
+#. Tag: para
+#: Security.xml:269
+#, no-c-format
+msgid ""
+"Being an EL expression, the value of the <literal>@Restrict</literal> "
+"annotation may reference any objects that exist within a Seam context. This "
+"is extremely useful when performing permission checks for a specific object "
+"instance. Look at this example:"
+msgstr "Da es sich um einen EL-Ausdruck handelt, kann der Wert der <literal>@Restrict</literal>-Annotation beliebige innerhalb eines Seam-Kontexts existierende Objekte referenzieren. Dies ist sehr nützlich bei der Durchführung von Genehmigungsprüfungen für eine spezifische Objektinstanz. Sehen Sie sich dieses Beispiel an:"
+
+#. Tag: programlisting
+#: Security.xml:272
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class AccountAction {\n"
+"    @In Account selectedAccount;\n"
+"    @Restrict(\"#{s:hasPermission(&#39;account&#39;,&#39;modify&#39;,"
+"selectedAccount)}\")\n"
+"    public void modify() {\n"
+"        selectedAccount.modify();\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"account\")\n"
+"public class AccountAction {\n"
+"    @In Account selectedAccount;\n"
+"    @Restrict(\"#{s:hasPermission(&#39;account&#39;,&#39;modify&#39;,"
+"selectedAccount)}\")\n"
+"    public void modify() {\n"
+"        selectedAccount.modify();\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Security.xml:273
+#, no-c-format
+msgid ""
+"The interesting thing to note from this example is the reference to "
+"<literal>selectedAccount</literal> seen within the <literal>hasPermission()</"
+"literal> function call. The value of this variable will be looked up from "
+"within the Seam context, and passed to the <literal>hasPermission()</"
+"literal> method in <literal>Identity</literal>, which in this case can then "
+"determine if the user has the required permission for modifying the "
+"specified <literal>Account</literal> object."
+msgstr ""
+"Interessant an diesem Beispiel ist die Referenz zu "
+"<literal>selectedAccount</literal> wie innerhalb des <literal>hasPermission()</literal>-Funktionsaufrufs sichtbar. Der Wert dieser Variable wird von außerhalb des Seam-Kontexts entnommen und an die <literal>hasPermission()</literal>-Methode in <literal>Identity</literal> weitergegeben, welche in diesem Fall bestimmen kann, ob der Benutzer die erforderliche Genehmigung zum Bearbeiten des festgelegten <literal>Account</literal>-Objekts hat."
+
+#. Tag: title
+#: Security.xml:276
+#, no-c-format
+msgid "Inline restrictions"
+msgstr "Inline-Einschränkungen"
+
+#. Tag: para
+#: Security.xml:277
+#, no-c-format
+msgid ""
+"Sometimes it might be desirable to perform a security check in code, without "
+"using the <literal>@Restrict</literal> annotation. In this situation, simply "
+"use <literal>Identity.checkRestriction()</literal> to evaluate a security "
+"expression, like this:"
+msgstr "Manchmal ist es wünschenswert eine Sicherheitsprüfung in Code und ohne Verwendung der <literal>@Restrict</literal>-Annotation durchzuführen. In dieser Situation verwenden Sie einfach <literal>Identity.checkRestriction()</literal>, um einen Sicherheitsausdruck zu evaluieren:"
+
+#. Tag: programlisting
+#: Security.xml:280
+#, no-c-format
+msgid ""
+"public void deleteCustomer() {\n"
+"    Identity.instance().checkRestriction(\"#{s:hasPermission(&#39;"
+"customer&#39;,&#39;delete&#39;,\n"
+"      selectedCustomer)}\");\n"
+"}"
+msgstr ""
+"public void deleteCustomer() {\n"
+"    Identity.instance().checkRestriction(\"#{s:hasPermission(&#39;"
+"customer&#39;,&#39;delete&#39;,\n"
+"      selectedCustomer)}\");\n"
+"}"
+
+#. Tag: para
+#: Security.xml:281
+#, no-c-format
+msgid ""
+"If the expression specified doesn&#39;t evaluate to <literal>true</literal>, "
+"either"
+msgstr ""
+"Falls der festgelegte Ausdruck nicht auf <literal>true</literal> evaluiert, "
+"entweder "
+
+#. Tag: para
+#: Security.xml:286
+#, no-c-format
+msgid ""
+"if the user is not logged in, a <literal>NotLoggedInException</literal> "
+"exception is thrown or"
+msgstr "falls der Benutzer nicht angemeldet ist, wird eine <literal>NotLoggedInException</literal> Ausnahme gemeldet oder"
+
+#. Tag: para
+#: Security.xml:291
+#, no-c-format
+msgid ""
+"if the user is logged in, an <literal>AuthorizationException</literal> "
+"exception is thrown."
+msgstr "falls der Benutzer angemeldet ist, wird eine <literal>AuthorizationException</literal>-Ausnahme gemeldet."
+
+#. Tag: para
+#: Security.xml:296
+#, no-c-format
+msgid ""
+"It is also possible to call the <literal>hasRole()</literal> and "
+"<literal>hasPermission()</literal> methods directly from Java code:"
+msgstr ""
+"Es ist auch möglich, die <literal>hasRole()</literal> und "
+"<literal>hasPermission()</literal>-Methoden direkt vom Java-Code aus aufzurufen:"
+
+#. Tag: programlisting
+#: Security.xml:299
+#, no-c-format
+msgid ""
+"if (!Identity.instance().hasRole(\"admin\"))\n"
+"     throw new AuthorizationException(\"Must be admin to perform this action"
+"\");\n"
+"\n"
+"if (!Identity.instance().hasPermission(\"customer\", \"create\", null))\n"
+"     throw new AuthorizationException(\"You may not create new customers\");"
+msgstr ""
+"if (!Identity.instance().hasRole(\"admin\"))\n"
+"     throw new AuthorizationException(\"Must be admin to perform this action"
+"\");\n"
+"\n"
+"if (!Identity.instance().hasPermission(\"customer\", \"create\", null))\n"
+"     throw new AuthorizationException(\"You may not create new customers\");"
+
+#. Tag: title
+#: Security.xml:300
+#, no-c-format
+msgid "Security in the user interface"
+msgstr "Sicherheit im Benutzer-Interface"
+
+#. Tag: para
+#: Security.xml:301
+#, no-c-format
+msgid ""
+"One indication of a well designed user interface is that the user is not "
+"presented with options for which they don&#39;t have the necessary "
+"privileges to use. Seam Security allows conditional rendering of either 1) "
+"sections of a page or 2) individual controls, based upon the privileges of "
+"the user, using the very same EL expressions that are used for component "
+"security."
+msgstr "Ein Hinweis auf eine gut designtes Benutzer-Interface ist es, wenn der Benutzer keine Optionen zur Auswahl erwählt, zu deren Benutzung er nicht die nötigen Berechtigungen besitzt. Seam Security gestattet konditionales Rendering von entweder 1) Abschnitten einer Seite oder 2) individuelle Steuerungen, basierend auf den Berechtigungen des Benutzers, unter Verwendung derselben EL-Ausdrücke, die für die Komponentensicherheit verwendet werden."
+
+#. Tag: para
+#: Security.xml:304
+#, no-c-format
+msgid ""
+"Let&#39;s take a look at some examples of interface security. First of all, "
+"let&#39;s pretend that we have a login form that should only be rendered if "
+"the user is not already logged in. Using the <literal>identity.isLoggedIn()</"
+"literal> property, we can write this:"
+msgstr "Werfen wir einen Blick auf einige Beispiele von Interface-Sicherheit. Tun wir zunächst als hätten wir ein Login-Formular, das nur gerendert werden sollte, wenn der Benutzer nicht bereits angemeldet ist. Unter Verwendung der <literal>identity.isLoggedIn()</literal>-Property, können wir dies schreiben:"
+
+#. Tag: programlisting
+#: Security.xml:307
+#, no-c-format
+msgid "&lt;h:form class=\"loginForm\" rendered=\"#{not identity.loggedIn}\"&gt;"
+msgstr "&lt;h:form class=\"loginForm\" rendered=\"#{not identity.loggedIn}\"&gt;"
+
+#. Tag: para
+#: Security.xml:308
+#, no-c-format
+msgid ""
+"If the user isn&#39;t logged in, then the login form will be rendered - very "
+"straight forward so far. Now let&#39;s pretend there is a menu on the page "
+"that contains some actions which should only be accessible to users in the "
+"<literal>manager</literal> role. Here&#39;s one way that these could be "
+"written:"
+msgstr ""
+"Ist der Benutzer nicht angemeldet, so wird das Login-Formular gerendert - bis jetzt recht unkompliziert. Gehen wir jetzt davon aus, dass auf der Seite ein Menü existiert, das einige Actions enthält, die nur Benutzern in der "
+"<literal>manager</literal>-Rolle zugänglich sein sollten. Hier ist eine Art, wie diese geschrieben werden könnten:"
+
+#. Tag: programlisting
+#: Security.xml:311
+#, no-c-format
+msgid ""
+"&lt;h:outputLink action=\"#{reports.listManagerReports}\" rendered=\"#{s:"
+"hasRole(&#39;manager&#39;)}\"&gt;\n"
+"    Manager Reports\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+"&lt;h:outputLink action=\"#{reports.listManagerReports}\" rendered=\"#{s:"
+"hasRole(&#39;manager&#39;)}\"&gt;\n"
+"    Manager Reports\n"
+"&lt;/h:outputLink&gt;"
+
+#. Tag: para
+#: Security.xml:312
+#, no-c-format
+msgid ""
+"This is also quite straight forward. If the user is not a member of the "
+"<literal>manager</literal> role, then the outputLink will not be rendered. "
+"The <literal>rendered</literal> attribute can generally be used on the "
+"control itself, or on a surrounding <literal>&lt;s:div&gt;</literal> or "
+"<literal>&lt;s:span&gt;</literal> control."
+msgstr ""
+"Dies ist auch ziemlich unkompliziert. Ist der Benutzer kein Mitglied der "
+"<literal>manager</literal>-Rolle, so wird das outputLink nicht gerendert. "
+"Das <literal>rendered</literal>-Attribut kann generell an der Steuerung selbst verwendet werden oder an einer umgebenden <literal>&lt;s:div&gt;</literal> oder "
+"<literal>&lt;s:span&gt;</literal>-Steuerung."
+
+#. Tag: para
+#: Security.xml:315
+#, no-c-format
+msgid ""
+"Now for something more complex. Let&#39;s say you have a <literal>h:"
+"dataTable</literal> control on a page listing records for which you may or "
+"may not wish to render action links depending on the user&#39;s privileges. "
+"The <literal>s:hasPermission</literal> EL function allows us to pass in an "
+"object parameter which can be used to determine whether the user has the "
+"requested permission for that object or not. Here&#39;s how a dataTable with "
+"secured links might look:"
+msgstr ""
+"Jetzt zu etwas komplexerem. Nehmen wir an, Sie haben eine <literal>h:"
+"dataTable</literal>-Steuerung auf einer Seite, die Datensätze auflistet, für die Sie Action-Links rendern möchten oder auch nicht, je nach Berechtigungen des Benutzers. Die <literal>s:hasPermission</literal> EL-Funktion gestattet es uns, einen Objektparameter einzugeben, der dazu verwendet werden kann zu bestimmen, ob der Benutzer die angefragte Genehmigung für dieses Objekt besitzt oder nicht. Hier sehen Sie, wie eine Datentabelle mit gesicherten Links aussehen könnte:"
+
+#. Tag: programlisting
+#: Security.xml:318
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{clients}\" var=\"cl\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Name&lt;/f:facet&gt;\n"
+"        #{cl.name}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;City&lt;/f:facet&gt;\n"
+"        #{cl.city}\n"
+"    &lt;/h:column&gt;   \n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"        &lt;s:link value=\"Modify Client\" action=\"#{clientAction.modify}"
+"\"\n"
+"                rendered=\"#{s:hasPermission(&#39;client&#39;,&#39;"
+"modify&#39;,cl)\"/&gt;\n"
+"        &lt;s:link value=\"Delete Client\" action=\"#{clientAction.delete}"
+"\"\n"
+"                rendered=\"#{s:hasPermission(&#39;client&#39;,&#39;"
+"delete&#39;,cl)\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+"&lt;h:dataTable value=\"#{clients}\" var=\"cl\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Name&lt;/f:facet&gt;\n"
+"        #{cl.name}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;City&lt;/f:facet&gt;\n"
+"        #{cl.city}\n"
+"    &lt;/h:column&gt;   \n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"        &lt;s:link value=\"Modify Client\" action=\"#{clientAction.modify}"
+"\"\n"
+"                rendered=\"#{s:hasPermission(&#39;client&#39;,&#39;"
+"modify&#39;,cl)\"/&gt;\n"
+"        &lt;s:link value=\"Delete Client\" action=\"#{clientAction.delete}"
+"\"\n"
+"                rendered=\"#{s:hasPermission(&#39;client&#39;,&#39;"
+"delete&#39;,cl)\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+
+#. Tag: title
+#: Security.xml:319
+#, no-c-format
+msgid "Securing pages"
+msgstr "Sichern von Seiten"
+
+#. Tag: para
+#: Security.xml:320
+#, no-c-format
+msgid ""
+"Page security requires that the application is using a <literal>pages.xml</"
+"literal> file, however is extremely simple to configure. Simply include a "
+"<literal>&lt;restrict/&gt;</literal> element within the <literal>page</"
+"literal> elements that you wish to secure. By default, if a value is not "
+"provided for the <literal>restrict</literal> element, an implied permission "
+"of <literal>{viewId}:render</literal> will be checked for whenever accessing "
+"that page. Otherwise the value will be evaluated as a standard security "
+"expression. Here&#39;s a couple of examples:"
+msgstr "Seitensicherheit erfordert es, dass die Anwendung eine <literal>pages.xml</literal>-Datei verwendet, es jedoch sehr einfach zu konfigurieren. Schließen Sie einfach ein <literal>&lt;restrict/&gt;</literal>-Element innerhalb der zu sichernden <literal>page</literal>-Elemente ein. In der Standardeinstellung ist es so, dass falls kein Wert für das <literal>restrict</literal>-Element geliefert wird, auf eine vorausgesetzte Genehmigung von <literal>{viewId}:render</literal> geprüft wird, jedes Mal wenn auf diese Seite zugegriffen wird. Andernfalls wird der Wert als Standard-Sicherheitsausdruck evaluiert. Hier sind ein paar Beispiele:"
+
+#. Tag: programlisting
+#: Security.xml:323
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/settings.xhtml\"&gt;\n"
+"    &lt;restrict/&gt;\n"
+"&lt;/page&gt;\n"
+"        \n"
+"&lt;page view-id=\"/reports.xhtml\"&gt;    \n"
+"    &lt;restrict&gt;#{s:hasRole(&#39;admin&#39;)}&lt;/restrict&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page view-id=\"/settings.xhtml\"&gt;\n"
+"    &lt;restrict/&gt;\n"
+"&lt;/page&gt;\n"
+"        \n"
+"&lt;page view-id=\"/reports.xhtml\"&gt;    \n"
+"    &lt;restrict&gt;#{s:hasRole(&#39;admin&#39;)}&lt;/restrict&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Security.xml:324
+#, no-c-format
+msgid ""
+"In the above example, the first page has an implied permission restriction "
+"of <literal>/settings.xhtml:render</literal>, while the second one checks "
+"that the user is a member of the <literal>admin</literal> role."
+msgstr ""
+"Im Beispiel oben besitzt die erste Seite eine vorausgesetzte Genehmigungseinschränkung von <literal>/settings.xhtml:render</literal>, während die zweite überprüft, dass der "
+"Benutzer tatsächlich Mitglied der <literal>admin</literal>-Rolle ist."
+
+#. Tag: title
+#: Security.xml:327
+#, no-c-format
+msgid "Securing Entities"
+msgstr "Sichern von Entities"
+
+#. Tag: para
+#: Security.xml:328
+#, no-c-format
+msgid ""
+"Seam security also makes it possible to apply security restrictions to read, "
+"insert, update and delete actions for entities."
+msgstr ""
+"Seam Security macht es außerdem möglich, Sicherheitseinschränkungen bei Lese-, Einfügungs-, Aktualisierungs- und Lösch-Actions für Entities (\"read\", "
+"\"insert\", \"update\" und \"delete\")."
+
+#. Tag: para
+#: Security.xml:331
+#, no-c-format
+msgid ""
+"To secure all actions for an entity class, add a <literal>@Restrict</"
+"literal> annotation on the class itself:"
+msgstr "Um alle Actionen für eine Entity-Klasse zu sichern, fügen die der Klasse selbst eine <literal>@Restrict</literal>-Annotation hinzu:"
+
+#. Tag: programlisting
+#: Security.xml:334
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"customer\")\n"
+"@Restrict\n"
+"public class Customer {\n"
+"  ...\n"
+"}"
+msgstr ""
+"@Entity\n"
+"@Name(\"customer\")\n"
+"@Restrict\n"
+"public class Customer {\n"
+"  ...\n"
+"}"
+
+#. Tag: para
+#: Security.xml:335
+#, no-c-format
+msgid ""
+"If no expression is specified in the <literal>@Restrict</literal> "
+"annotation, the default security check that is performed is a permission "
+"check of <literal>entityName:action</literal>, where <literal>entityName</"
+"literal> is the Seam component name of the entity (or the fully-qualified "
+"class name if no @Name is specified), and the <literal>action</literal> is "
+"either <literal>read</literal>, <literal>insert</literal>, <literal>update</"
+"literal> or <literal>delete</literal>."
+msgstr ""
+"Ist in der <literal>@Restrict</literal>-Annotation kein Ausdruck festgelegt, so ist die durchgeführte Standard-Sicherheitsprüfung eine Genehmigungsprüfung von <literal>entityName:action</literal>, wo <literal>entityName</literal> der Name der Seam-Komponente der Entity (oder der vollständig angegebene Klassenname, falls kein @Name angegeben ist), und die <literal>action</literal> entweder "
+"<literal>read</literal>, <literal>insert</literal>, <literal>update</"
+"literal> oder <literal>delete</literal> ist."
+
+#. Tag: para
+#: Security.xml:338
+#, no-c-format
+msgid ""
+"It is also possible to only restrict certain actions, by placing a "
+"<literal>@Restrict</literal> annotation on the relevent entity lifecycle "
+"method (annotated as follows):"
+msgstr ""
+"Es ist auch möglich nur bestimmte Actions einzuschränken, indem eine "
+"<literal>@Restrict</literal>-Annotation an der relevanten Entity Lebenszyklus-Methode platziert wird (annotiert wie folgt):"
+
+#. Tag: para
+#: Security.xml:343
+#, no-c-format
+msgid ""
+"<literal>@PostLoad</literal> - Called after an entity instance is loaded "
+"from the database. Use this method to configure a <literal>read</literal> "
+"permission."
+msgstr "<literal>@PostLoad</literal> - wird aufgerufen nachdem eine Entity-Instanz aus der Datenbank geladen wurde. Verwenden Sie diese Methode zur Konfiguration einer <literal>read</literal>-Genehmigung."
+
+#. Tag: para
+#: Security.xml:348
+#, no-c-format
+msgid ""
+"<literal>@PrePersist</literal> - Called before a new instance of the entity "
+"is inserted. Use this method to configure an <literal>insert</literal> "
+"permission."
+msgstr "<literal>@PrePersist</literal> - wird aufgerufen, ehe eine neue Instanz der Entity eingefügt wird. Verwenden Sie diese Methode zur Konfiguration einer <literal>insert</literal>-Genehmigung."
+
+#. Tag: para
+#: Security.xml:353
+#, no-c-format
+msgid ""
+"<literal>@PreUpdate</literal> - Called before an entity is updated. Use this "
+"method to configure an <literal>update</literal> permission."
+msgstr "<literal>@PreUpdate</literal> - wird aufgerufen, ehe eine Entity aktualisiert wird. Verwenden Sie diese Methode zur Konfiguration einer <literal>update</literal>-Genehmigung."
+
+#. Tag: para
+#: Security.xml:358
+#, no-c-format
+msgid ""
+"<literal>@PreRemove</literal> - Called before an entity is deleted. Use this "
+"method to configure a <literal>delete</literal> permission."
+msgstr "<literal>@PreRemove</literal> - wird vor dem Löschen einer Entity aufgerufen. Verwenden Sie diese Methode zur Konfiguration einer <literal>delete</literal>-Genehmigung."
+
+#. Tag: para
+#: Security.xml:363
+#, no-c-format
+msgid ""
+"Here&#39;s an example of how an entity would be configured to perform a "
+"security check for any <literal>insert</literal> operations. Please note "
+"that the method is not required to do anything, the only important thing in "
+"regard to security is how it is annotated:"
+msgstr "Hier ist ein Beispiel dazu, wie eine Entity zur Durchführung einer Sicherheitsprüfung für beliebige <literal>insert</literal>-Vorgänge konfiguriert würde. Bitte beachten Sie, dass die Methode nichts tun muss, das einzig wichtige hinsichtlich der Sicherheit ist, wie sie annotiert ist:"
+
+#. Tag: programlisting
+#: Security.xml:366
+#, no-c-format
+msgid ""
+"@PrePersist @Restrict\n"
+"  public void prePersist() {}"
+msgstr ""
+"@PrePersist @Restrict\n"
+"  public void prePersist() {}"
+
+#. Tag: para
+#: Security.xml:367
+#, no-c-format
+msgid ""
+"And here&#39;s an example of an entity permission rule that checks if the "
+"authenticated user is allowed to insert a new <literal>MemberBlog</literal> "
+"record (from the seamspace example). The entity for which the security check "
+"is being made is automatically asserted into the working memory (in this "
+"case <literal>MemberBlog</literal>):"
+msgstr "Und hier ist ein Beispiel für eine Entity-Genehmigungsregel, die prüft, ob es dem authentifizierten Benutzer erleuabt ist, einen neuen <literal>MemberBlog</literal>-Datensatz (aus dem Seamspace-Beispiel) einzufügen. Die Entity für die die Sicherheitsprüfung erfolgt, wird automatisch im Arbeitsspeicher geltend gemacht (in diesem Fall <literal>MemberBlog</literal>):"
+
+#. Tag: programlisting
+#: Security.xml:370
+#, no-c-format
+msgid ""
+"rule InsertMemberBlog\n"
+"  no-loop\n"
+"  activation-group \"permissions\"  \n"
+"when\n"
+"  check: PermissionCheck(name == \"memberBlog\", action == \"insert\", "
+"granted == false)\n"
+"  Principal(principalName : name)\n"
+"  MemberBlog(member : member -&gt; (member.getUsername().equals"
+"(principalName)))\n"
+"then\n"
+"  check.grant();\n"
+"end;"
+msgstr ""
+"rule InsertMemberBlog\n"
+"  no-loop\n"
+"  activation-group \"permissions\"  \n"
+"when\n"
+"  check: PermissionCheck(name == \"memberBlog\", action == \"insert\", "
+"granted == false)\n"
+"  Principal(principalName : name)\n"
+"  MemberBlog(member : member -&gt; (member.getUsername().equals"
+"(principalName)))\n"
+"then\n"
+"  check.grant();\n"
+"end;"
+
+#. Tag: para
+#: Security.xml:371
+#, no-c-format
+msgid ""
+"This rule will grant the permission <literal>memberBlog:insert</literal> if "
+"the currently authenticated user (indicated by the <literal>Principal</"
+"literal> fact) has the same name as the member for which the blog entry is "
+"being created. The \"<literal>name : name</literal>\" structure that can be "
+"seen in the <literal>Principal</literal> fact (and other places) is a "
+"variable binding - it binds the <literal>name</literal> property of the "
+"<literal>Principal</literal> to a variable called <literal>name</literal>. "
+"Variable bindings allow the value to be referred to in other places, such as "
+"the following line which compares the member&#39;s username to the "
+"<literal>Principal</literal> name. For more details, please refer to the "
+"JBoss Rules documentation."
+msgstr ""
+"Diese Regel erteilt die Genehmigung <literal>memberBlog:insert</literal>, wenn der "
+"zum aktuellen Zeitpunkt authentifizierte Benutzer (angezeicht durch das <literal>Principal</literal>-Faktum) denselben Namen besitzt wie das Mitglied, für das der Blog-Eintrag erstellt wird. Die \"<literal>name : name</literal>\"-Struktur, die im <literal>Principal</literal>-Faktum gesehen werden kann (und an anderen Orten) ist ein "
+"variables Binding - es bindet die <literal>name</literal>-Property des "
+"<literal>Principal</literal> an eine Variable mit Namen <literal>name</literal>."
+"Variable Bindings gestatten es, dass sich an anderen Orten auf den Wert bezogen werden kann, so wie in folgender Zeile, die den Benutzernamen des Mitglieds mit dem <literal>Principal</literal>-Namen vergleicht. Weitere Informationen finden Sie in der Dokumentation zu "
+"JBoss Rules."
+
+#. Tag: para
+#: Security.xml:374
+#, no-c-format
+msgid ""
+"Finally, we need to install a listener class that integrates Seam security "
+"with your JPA provider."
+msgstr "Schließlich müssen wir noch eine Listener-Klasse installieren, die Seam Security mit Ihrem JPA provider integriert."
+
+#. Tag: title
+#: Security.xml:377
+#, no-c-format
+msgid "Entity security with JPA"
+msgstr "Entity-Sicherheit mit JPA"
+
+#. Tag: para
+#: Security.xml:378
+#, no-c-format
+msgid ""
+"Security checks for EJB3 entity beans are performed with an "
+"<literal>EntityListener</literal>. You can install this listener by using "
+"the following <literal>META-INF/orm.xml</literal> file:"
+msgstr ""
+"Sicherheitsprüfungen für EJB3 Entity-Beans werden mit einem "
+"<literal>EntityListener</literal> durchgeführt. Sie können diesen Listener mittels der folgenden <literal>META-INF/orm.xml</literal>-Datei installieren:"
+
+#. Tag: programlisting
+#: Security.xml:381
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;entity-mappings xmlns=\"http://java.sun.com/xml/ns/persistence/orm\"\n"
+"                 xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"                 xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence/"
+"orm \n"
+"                                            http://java.sun.com/xml/ns/"
+"persistence/orm_1_0.xsd\"\n"
+"                 version=\"1.0\"&gt;\n"
+"                 \n"
+"    &lt;persistence-unit-metadata&gt;\n"
+"        &lt;persistence-unit-defaults&gt;\n"
+"            &lt;entity-listeners&gt;\n"
+"                &lt;entity-listener class=\"org.jboss.seam.security."
+"EntitySecurityListener\"/&gt;\n"
+"            &lt;/entity-listeners&gt;\n"
+"        &lt;/persistence-unit-defaults&gt;\n"
+"    &lt;/persistence-unit-metadata&gt;\n"
+"    \n"
+"&lt;/entity-mappings&gt;"
+msgstr ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;entity-mappings xmlns=\"http://java.sun.com/xml/ns/persistence/orm\"\n"
+"                 xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"                 xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence/"
+"orm \n"
+"                                            http://java.sun.com/xml/ns/"
+"persistence/orm_1_0.xsd\"\n"
+"                 version=\"1.0\"&gt;\n"
+"                 \n"
+"    &lt;persistence-unit-metadata&gt;\n"
+"        &lt;persistence-unit-defaults&gt;\n"
+"            &lt;entity-listeners&gt;\n"
+"                &lt;entity-listener class=\"org.jboss.seam.security."
+"EntitySecurityListener\"/&gt;\n"
+"            &lt;/entity-listeners&gt;\n"
+"        &lt;/persistence-unit-defaults&gt;\n"
+"    &lt;/persistence-unit-metadata&gt;\n"
+"    \n"
+"&lt;/entity-mappings&gt;"
+
+#. Tag: title
+#: Security.xml:382
+#, no-c-format
+msgid "Entity security with Hibernate"
+msgstr "Entity-Sicherheit mit Hibernate"
+
+#. Tag: para
+#: Security.xml:383
+#, no-c-format
+msgid ""
+"If you are using a Hibernate <literal>SessionFactory</literal> configured "
+"via Seam, you don&#39;t need to do anything special to use entity security."
+msgstr "Falls Sie eine via Seam konfigurierte Hibernate <literal>SessionFactory</literal> verwenden, so müssen Sie nichts besonderes tun, um die Entity-Sicherheit zu verwenden."
+
+#. Tag: title
+#: Security.xml:386
+#, no-c-format
+msgid "Writing Security Rules"
+msgstr "Sicherheitsregeln schreiben"
+
+#. Tag: para
+#: Security.xml:387
+#, no-c-format
+msgid ""
+"Up to this point there has been a lot of mention of permissions, but no "
+"information about how permissions are actually defined or granted. This "
+"section completes the picture, by explaining how permission checks are "
+"processed, and how to implement permission checks for a Seam application."
+msgstr "Bis zu diesem Punkt wurden Genehmigungen häufig erwähnt, jedoch wurden keine Informationen dazu gegeben, wie Genehmigungen tatsächlich definiert oder gewährt werden. Dieser Abschnitt vervollständigt das Bild, indem er erläutert, wie Genehmigungsprüfungen verarbeitet werden und wie Genehmigungsprüfungen für eine Seam-Anwendung implemetiert werden."
+
+#. Tag: title
+#: Security.xml:390
+#, no-c-format
+msgid "Permissions Overview"
+msgstr "Genehmigungen-Ãœbersicht"
+
+#. Tag: para
+#: Security.xml:391
+#, no-c-format
+msgid ""
+"So how does the security API know whether a user has the <literal>customer:"
+"modify</literal> permission for a specific customer? Seam Security provides "
+"quite a novel method for determining user permissions, based on JBoss Rules. "
+"A couple of the advantages of using a rule engine are 1) a centralized "
+"location for the business logic that is behind each user permission, and 2) "
+"speed - JBoss Rules uses very efficient algorithms for evaluating large "
+"numbers of complex rules involving multiple conditions."
+msgstr ""
+"Wie also weiß das Sicherheits-API, ob ein Benutzer die <literal>customer:"
+"modify</literal>-Genehmigung für einen bestimmten Kunden hat? Seam Security liefert eine ganz neuartige Methode der Bestimmung von Benutzergenehmigungen, basierend auf JBoss Rules. "
+"Ein paar der Vorteile bei Verwendung der Regel-Engine sind 1) ein zentralisierter Speicherort für die Business-Logic hinter jeder Benutzergenehmigung und 2) Geschwindigkeit - JBoss Rules verwendet sehr effiziente Algorithmen zur Evaluierung großer Zahlen komplexer Regeln, die mehrere Bedingungen beinhalten."
+
+#. Tag: title
+#: Security.xml:394
+#, no-c-format
+msgid "Configuring a rules file"
+msgstr "Konfigurieren einer Regel-Datei"
+
+#. Tag: para
+#: Security.xml:395
+#, no-c-format
+msgid ""
+"Seam Security expects to find a <literal>RuleBase</literal> component called "
+"<literal>securityRules</literal> which it uses to evaluate permission "
+"checks. This is configured in <literal>components.xml</literal> as follows:"
+msgstr "Seam Security erwartet eine <literal>RuleBase</literal>-Komponente namens <literal>securityRules</literal> vorzufinden, die es zur Evaluierung von Genehmigungsprüfungen verwendet. Dies ist wie folgt in <literal>components.xml</literal> konfiguriert:"
+
+#. Tag: programlisting
+#: Security.xml:398
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:security=\"http://jboss.com/products/seam/security\"\n"
+"            xmlns:drools=\"http://jboss.com/products/seam/drools\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                                              http://jboss.com/products/seam/"
+"core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components \n"
+"                                              http://jboss.com/products/seam/"
+"components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/drools \n"
+"                                              http://jboss.com/products/seam/"
+"drools-1.2.xsd\"\n"
+"                 http://jboss.com/products/seam/security \n"
+"                                              http://jboss.com/products/seam/"
+"security-1.2.xsd\"&gt;                 \n"
+"        \n"
+"   &lt;drools:rule-base name=\"securityRules\"&gt;\n"
+"       &lt;drools:rule-files&gt;\n"
+"           &lt;value&gt;/META-INF/security.drl&lt;/value&gt;\n"
+"       &lt;/drools:rule-files&gt;\n"
+"   &lt;/drools:rule-base&gt;    \n"
+"   \n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:security=\"http://jboss.com/products/seam/security\"\n"
+"            xmlns:drools=\"http://jboss.com/products/seam/drools\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                                              http://jboss.com/products/seam/"
+"core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components \n"
+"                                              http://jboss.com/products/seam/"
+"components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/drools \n"
+"                                              http://jboss.com/products/seam/"
+"drools-1.2.xsd\"\n"
+"                 http://jboss.com/products/seam/security \n"
+"                                              http://jboss.com/products/seam/"
+"security-1.2.xsd\"&gt;                 \n"
+"        \n"
+"   &lt;drools:rule-base name=\"securityRules\"&gt;\n"
+"       &lt;drools:rule-files&gt;\n"
+"           &lt;value&gt;/META-INF/security.drl&lt;/value&gt;\n"
+"       &lt;/drools:rule-files&gt;\n"
+"   &lt;/drools:rule-base&gt;    \n"
+"   \n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Security.xml:399
+#, no-c-format
+msgid ""
+"Once the <literal>RuleBase</literal> component is configured, it&#39;s time "
+"to write the security rules."
+msgstr "Nachdem die <literal>RuleBase</literal>-Komponente konfiguriert ist, ist es an der Zeit die Sicherheitsregeln zu schreiben."
+
+#. Tag: title
+#: Security.xml:402
+#, no-c-format
+msgid "Creating a security rules file"
+msgstr "Erstellen einer Sicherheitsregel-Datei"
+
+#. Tag: para
+#: Security.xml:403
+#, no-c-format
+msgid ""
+"For this step you need to create a file called <literal>security.drl</"
+"literal> in the <literal>/META-INF</literal> directory of your "
+"application&#39;s jar file. In actual fact this file can be called anything "
+"you want, and exist in any location as long as it is configured "
+"appropriately in <literal>components.xml</literal>."
+msgstr ""
+"Für diesen Schritt müssen wir eine Datei namens <literal>security.drl</"
+"literal> im <literal>/META-INF</literal>-Verzeichnis der Jar-Datei Ihrer Anwendung erstellen. Tatsächlich kann diese Datei heißen, wie immer Sie wollen und sich an einem beliebigen Speicherort befinden, so lange sie in <literal>components.xml</literal> passend konfiguriert ist."
+
+#. Tag: para
+#: Security.xml:406
+#, no-c-format
+msgid ""
+"So what should the security rules file contain? At this stage it might be a "
+"good idea to at least skim through the JBoss Rules documentation, however to "
+"get started here&#39;s an extremely simple example:"
+msgstr "Was also sollte die Sicherheitsregel-Datei enthalten? An dieser Stelle wäre es wahrscheinlich ein guter Zeitpunkt, um sich die JBoss Rules Dokumentation etwas genauer anzusehen, für den Anfang jedoch wollen wir uns dieses sehr, sehr einfache Beispiel anschauen:"
+
+#. Tag: programlisting
+#: Security.xml:409
+#, no-c-format
+msgid ""
+"package MyApplicationPermissions;\n"
+"\n"
+"import org.jboss.seam.security.PermissionCheck;\n"
+"import org.jboss.seam.security.Role;\n"
+"\n"
+"rule CanUserDeleteCustomers\n"
+"when\n"
+"  c: PermissionCheck(name == \"customer\", action == \"delete\")\n"
+"  Role(name == \"admin\")\n"
+"then\n"
+"  c.grant();\n"
+"end;"
+msgstr ""
+"package MyApplicationPermissions;\n"
+"\n"
+"import org.jboss.seam.security.PermissionCheck;\n"
+"import org.jboss.seam.security.Role;\n"
+"\n"
+"rule CanUserDeleteCustomers\n"
+"when\n"
+"  c: PermissionCheck(name == \"customer\", action == \"delete\")\n"
+"  Role(name == \"admin\")\n"
+"then\n"
+"  c.grant();\n"
+"end;"
+
+#. Tag: para
+#: Security.xml:410
+#, no-c-format
+msgid ""
+"Let&#39;s break this down. The first thing we see is the package "
+"declaration. A package in JBoss Rules is essentially a collection of rules. "
+"The package name can be anything you want - it doesn&#39;t relate to "
+"anything else outside the scope of the rule base."
+msgstr ""
+"Schauen wir uns dies im einzelnen an. Das erste, was wir sehen, ist die Paketdeklaration. Ein Paket in JBoss Rules ist im Grunde genommen eine Sammlung von Regeln. "
+"Der Paketname bleibt ganz Ihnen überlassen - er bezieht sich auf nichts außerhalb des Bereichs der Regelbasis."
+
+#. Tag: para
+#: Security.xml:413
+#, no-c-format
+msgid ""
+"The next thing we can notice is a couple of import statements for the "
+"<literal>PermissionCheck</literal> and <literal>Role</literal> classes. "
+"These imports inform the rules engine that we&#39;ll be referencing these "
+"classes within our rules."
+msgstr ""
+"Als nächstes sehen wir ein paar wichtige Anweisungen für die "
+"<literal>PermissionCheck</literal> und <literal>Role</literal>-Klassen. "
+"Diese Importe informieren die Rules-Engine darüber, dass wir diese Klassen innerhalb unserer Regeln referenzieren."
+
+#. Tag: para
+#: Security.xml:416
+#, no-c-format
+msgid ""
+"Finally we have the code for the rule. Each rule within a package should be "
+"given a unique name (usually describing the purpose of the rule). In this "
+"case our rule is called <literal>CanUserDeleteCustomers</literal> and will "
+"be used to check whether a user is allowed to delete a customer record."
+msgstr "Schließlich haben wir noch den Code für die Regel. Jeder Regel innerhalb eines Pakets sollte ein eindeutiger Name gegeben werden (normalerweise den Zweck der Regel beschreibend). In diesem Fall heißt unsere Regel <literal>CanUserDeleteCustomers</literal> und wird dazu verwendet zu überprüfen, ob ein Benutzer einen Kundendatensatz löschen darf."
+
+#. Tag: para
+#: Security.xml:419
+#, no-c-format
+msgid ""
+"Looking at the body of the rule definition we can notice two distinct "
+"sections. Rules have what is known as a left hand side (LHS) and a right "
+"hand side (RHS). The LHS consists of the conditional part of the rule, i.e. "
+"a list of conditions which must be satisfied for the rule to fire. The LHS "
+"is represented by the <literal>when</literal> section. The RHS is the "
+"consequence, or action section of the rule that will only be fired if all of "
+"the conditions in the LHS are met. The RHS is represented by the "
+"<literal>then</literal> section. The end of the rule is denoted by the "
+"<literal>end;</literal> line."
+msgstr ""
+"Schauen wir uns den Textkörper der Regeldefinition an, so bemerken wir zwei verschiedene Abschnitte. Regel besitzen eine linke Seite (\"left hand side\" oder kurz LHS) und eine rechte Seite (\"right "
+"hand side\" oder kurz RHS). Die LHS besteht aus dem konditionalen Teil der Regel, d.h. einer Liste von Bedingungen, die erfüllt sein müssen, damit die Regel greift. Die LHS wird repräsentiert durch den <literal>when</literal>-Abschnitt. Die RHS ist die Konsequenz oder der Action-Abschnitt der Regel, die nur dann greift, wenn allen Bedingungen in der LHS entsprochen wird. Die RHS wird repräsentiert durch den "
+"<literal>then</literal>-Abschnitt. Das Ende der Regel wird durch die "
+"<literal>end;</literal>-Zeile denotiert."
+
+#. Tag: para
+#: Security.xml:422
+#, no-c-format
+msgid ""
+"If we look at the LHS of the rule, we see two conditions listed there. "
+"Let&#39;s examine the first condition:"
+msgstr ""
+"Wenn wir uns die LHS der Regel ansehen, so sehen wird dort zwei Bedingungen gelistet. "
+"Untersuchen wir die erste Bedingung genauer:"
+
+#. Tag: programlisting
+#: Security.xml:425
+#, no-c-format
+msgid "c: PermissionCheck(name == \"customer\", action == \"delete\")"
+msgstr "c: PermissionCheck(name == \"customer\", action == \"delete\")"
+
+#. Tag: para
+#: Security.xml:426
+#, no-c-format
+msgid ""
+"In plain english, this condition is stating that there must exist a "
+"<literal>PermissionCheck</literal> object with a <literal>name</literal> "
+"property equal to \"customer\", and an <literal>action</literal> property "
+"equal to \"delete\" within the working memory. What is the working memory? "
+"It is a session-scoped object that contains the contextual information that "
+"is required by the rules engine to make a decision about a permission check. "
+"Each time the <literal>hasPermission()</literal> method is called, a "
+"temporary <literal>PermissionCheck</literal> object, or <emphasis>Fact</"
+"emphasis>, is asserted into the working memory. This "
+"<literal>PermissionCheck</literal> corresponds exactly to the permission "
+"that is being checked, so for example if you call <literal>hasPermission"
+"(\"account\", \"create\", null)</literal> then a <literal>PermissionCheck</"
+"literal> object with a <literal>name</literal> equal to \"account\" and "
+"<literal>action</literal> equal to \"create\" will be asserted into the "
+"working memory for the duration of the permission check."
+msgstr ""
+"Einfacher ausgedrückt: Diese Bedingung besagt, dass ein <literal>PermissionCheck</literal>-Objekt mit einer <literal>name</literal>-Property gleich \"customer\" (Kunde) und eine <literal>action</literal>-Property gleich \"delete\" innerhalb des Arbeitsspeichers vorhanden sein muss. Was ist der Arbeitsspeicher? "
+"Er ist ein session-begrenztes Objekt, das die kontextabhängigen Informationen enthält, die von der Rules-Engine für die Entscheidung hinsichtlich einer Genehmigungsprüfung benötigt werden. "
+"Jedesmal wenn die <literal>hasPermission()</literal>-Methode aufgerufen wird wird ein temporäres <literal>PermissionCheck</literal>-Objekt oder <emphasis>Fact</"
+"emphasis> im Arbeitsspeicher erklärt. Dieser <literal>PermissionCheck</literal> entspricht genau der Genehmigung, die geprüft wird, wenn Sie also zum Beispiel <literal>hasPermission"
+"(\"account\", \"create\", null)</literal> aufrufen, so wird ein <literal>PermissionCheck</literal>-Objekt mit einem <literal>name</literal> gleich \"account\" und "
+"<literal>action</literal> gleich \"create\" für die Dauer der Genehmigungsprüfung im Arbeitsspeicher erklärt."
+
+#. Tag: para
+#: Security.xml:429
+#, no-c-format
+msgid ""
+"So what else is in the working memory? Besides the short-lived temporary "
+"facts asserted during a permission check, there are some longer-lived "
+"objects in the working memory that stay there for the entire duration of a "
+"user being authenticated. These include any <literal>java.security."
+"Principal</literal> objects that are created as part of the authentication "
+"process, plus a <literal>org.jboss.seam.security.Role</literal> object for "
+"each of the roles that the user is a member of. It is also possible to "
+"assert additional long-lived facts into the working memory by calling "
+"<literal>RuleBasedIdentity.instance().getSecurityContext().assertObject()</"
+"literal>, passing the object as a parameter."
+msgstr ""
+"Was noch befindet sich im Arbeitsspeicher? Neben den kurzlebigen temporären Faktums, die während einer Genehmigungsprüfung erklärt werden, existieren einige langlebigere Objekte im Arbeitsspeicher, die während der gesamten Dauer der Benutzerauthentifikation dort bleiben. Diese beinhalten alle <literal>java.security."
+"Principal</literal>-Objekte, die als Teil des Authentifikationsprozesses erstellt werden, plus ein <literal>org.jboss.seam.security.Role</literal>-Objekt für "
+"für jede der Rollen deren Mitglied der Benutzer ist. Es ist auch möglich, zusätzliche langlebige Faktums im Arbeitsspeicher zu erklären "
+"indem "
+"<literal>RuleBasedIdentity.instance().getSecurityContext().assertObject()</"
+"literal> aufgerufen und das Objekt als Parameter weitergegeben wird."
+
+#. Tag: para
+#: Security.xml:432
+#, no-c-format
+msgid ""
+"Getting back to our simple example, we can also notice that the first line "
+"of our LHS is prefixed with <literal>c:</literal>. This is a variable "
+"binding, and is used to refer back to the object that is matched by the "
+"condition. Moving onto the second line of our LHS, we see this:"
+msgstr "Wenn wir uns unser einfaches Beispiel noch einmal ansehen, so sehen wir außerdem, dass der ersten Zeile unserer LHS ein <literal>c:</literal> vorangeht. Dies ist ein variables Binding, und wird als Rückverweis auf das Objekt, dem die Bedingung entspricht, verwendet. Schauen wir uns die zweite Zeile unseres LHS an, so sehen wir dies:"
+
+#. Tag: programlisting
+#: Security.xml:435
+#, no-c-format
+msgid "Role(name == \"admin\")"
+msgstr "Role(name == \"admin\")"
+
+#. Tag: para
+#: Security.xml:436
+#, no-c-format
+msgid ""
+"This condition simply states that there must be a <literal>Role</literal> "
+"object with a <literal>name</literal> of \"admin\" within the working "
+"memory. As mentioned, user roles are asserted into the working memory as "
+"long-lived facts. So, putting both conditions together, this rule is "
+"essentially saying \"I will fire if you are checking for the "
+"<literal>customer:delete</literal> permission and the user is a member of "
+"the <literal>admin</literal> role\"."
+msgstr ""
+"Diese Bedingung besagt schlichtweg, dass ein <literal>Role</literal>-Objekt mit einem <literal>name</literal> \"admin\" innerhalb des Arbeitsspeichers vorhanden sein muss. Wie erwähnt werden Benutzerrollen als langlebige Faktums im Arbeitsspeicher erklärt. Setzt man also beide Bedingungen zusammen, so erklärt diese Regel im Grunde genommen \"Ich greife, wenn Sie auf die "
+"<literal>customer:delete</literal>-Genehmigung prüfen und der Benutzer ein Mitglied der <literal>admin</literal>-Rolle ist\"."
+
+#. Tag: para
+#: Security.xml:439
+#, no-c-format
+msgid ""
+"So what is the consequence of the rule firing? Let&#39;s take a look at the "
+"RHS of the rule:"
+msgstr "Was also ist die Konsequenz des Greifens der Regel? Werfen wir einen Blick auf die RHS der Regel:"
+
+#. Tag: programlisting
+#: Security.xml:442
+#, no-c-format
+msgid "c.grant()"
+msgstr "c.grant()"
+
+#. Tag: para
+#: Security.xml:443
+#, no-c-format
+msgid ""
+"The RHS consists of Java code, and in this case is invoking the "
+"<literal>grant()</literal> method of the <literal>c</literal> object, which "
+"as already mentioned is a variable binding for the <literal>PermissionCheck</"
+"literal> object. Besides the <literal>name</literal> and <literal>action</"
+"literal> properties of the <literal>PermissionCheck</literal> object, there "
+"is also a <literal>granted</literal> property which is initially set to "
+"<literal>false</literal>. Calling <literal>grant()</literal> on a "
+"<literal>PermissionCheck</literal> sets the <literal>granted</literal> "
+"property to <literal>true</literal>, which means that the permission check "
+"was successful, allowing the user to carry out whatever action the "
+"permission check was intended for."
+msgstr ""
+"Die RHS besteht aus Java Code, und ruft in diesem Fall die "
+"<literal>grant()</literal>-Methode des <literal>c</literal>-Objekts auf, das wie schon erwähnt ein variables Binding für das <literal>PermissionCheck</literal>-Objekt ist. Neben den <literal>name</literal> und <literal>action</literal>-Properties des <literal>PermissionCheck</literal>-Objekts existiert auch eine <literal>granted</literal>-Property, die ursprünglich auf "
+"<literal>false</literal> gesetzt ist. Das AUfrufen von <literal>grant()</literal> bei einem "
+"<literal>PermissionCheck</literal> setzt die <literal>granted</literal>-Property auf <literal>true</literal>, was bedeutet, dass die Genehmigungsprüfung erfolgreich war und dem Benutzer diejenige Action, für die die Genehmigungsprüfung durchgeführt wurde, durchzuführen gestattet."
+
+#. Tag: title
+#: Security.xml:446
+#, no-c-format
+msgid "Wildcard permission checks"
+msgstr "Platzhalter-Genehmigungsprüfungen"
+
+#. Tag: para
+#: Security.xml:447
+#, no-c-format
+msgid ""
+"It is possible to implement a wildcard permission check (which allows all "
+"actions for a given permission name), by omitting the <literal>action</"
+"literal> constraint for the <literal>PermissionCheck</literal> in your rule, "
+"like this:"
+msgstr ""
+"Es ist möglich, eine Platzhalter-Genehmigungsprüfung zu implementieren (die alle Actions für einen gegebenen Genehmigungsnamen gestattet), indem Sie die <literal>action</literal>-Einschränkung für den <literal>PermissionCheck</literal> in Ihrer Regel weglassen, "
+"wie folgt:"
+
+#. Tag: programlisting
+#: Security.xml:450
+#, no-c-format
+msgid ""
+"rule CanDoAnythingToCustomersIfYouAreAnAdmin\n"
+"when\n"
+"  c: PermissionCheck(name == \"customer\")\n"
+"  Role(name == \"admin\")\n"
+"then\n"
+"  c.grant();\n"
+"end;"
+msgstr ""
+"rule CanDoAnythingToCustomersIfYouAreAnAdmin\n"
+"when\n"
+"  c: PermissionCheck(name == \"customer\")\n"
+"  Role(name == \"admin\")\n"
+"then\n"
+"  c.grant();\n"
+"end;"
+
+#. Tag: para
+#: Security.xml:451
+#, no-c-format
+msgid ""
+"This rule allows users with the <literal>admin</literal> role to perform "
+"<emphasis>any</emphasis> action for any <literal>customer</literal> "
+"permission check."
+msgstr ""
+"Diese Regel gestattet es Benutzern mit <literal>admin</literal>-Rolle "
+"<emphasis>sämtliche</emphasis> Actions für jede beliebige <literal>customer</literal> Genehmigungsprüfung durchzuführen."
+
+#. Tag: title
+#: Security.xml:454
+#, no-c-format
+msgid "SSL Security"
+msgstr "SSL-Sicherheit"
+
+#. Tag: para
+#: Security.xml:455
+#, no-c-format
+msgid ""
+"Seam includes basic support for serving sensitive pages via the HTTPS "
+"protocol. This is easily configured by specifying a <literal>scheme</"
+"literal> for the page in <literal>pages.xml</literal>. The following example "
+"shows how the view <literal>/login.xhtml</literal> is configured to use "
+"HTTPS:"
+msgstr ""
+"Seam beinhaltet grundlegenden Support für das Bereitstellen vertraulicher Seiten via HTTPS-Protokoll. Dies ist ganz einfach zu konfigurieren, indem ein  <literal>scheme</literal> für die Seite in <literal>pages.xml</literal> festgelegt wird. Das folgende Beispiel zeigt, wie die Ansicht <literal>/login.xhtml</literal> zur Verwendung von "
+"HTTPS konfiguriert wird:"
+
+#. Tag: programlisting
+#: Security.xml:458
+#, no-c-format
+msgid "&lt;page view-id=\"/login.xhtml\" scheme=\"https\"&gt;"
+msgstr "&lt;page view-id=\"/login.xhtml\" scheme=\"https\"&gt;"
+
+#. Tag: para
+#: Security.xml:459
+#, no-c-format
+msgid ""
+"This configuration is automatically extended to both <literal>s:link</"
+"literal> and <literal>s:button</literal> JSF controls, which (when "
+"specifying the <literal>view</literal>) will also render the link using the "
+"correct protocol. Based on the previous example, the following link will use "
+"the HTTPS protocol because <literal>/login.xhtml</literal> is configured to "
+"use it:"
+msgstr ""
+"Diese Konfiguration wird automatsich auf <literal>s:link</"
+"literal> und <literal>s:button</literal> JSF-Steuerungen erweitert, welche (beim Festlegen von <literal>view</literal>) auch das Link unter Verwendung des korrekten Protokolls rendern. Basierend auf dem vorherigen Beispiel verwendet das folgende Link das HTTPS-Protokoll, weil <literal>/login.xhtml</literal> zu dessen Verwendung konfiguriert ist:"
+
+#. Tag: programlisting
+#: Security.xml:462
+#, no-c-format
+msgid "&lt;s:link view=\"/login.xhtml\" value=\"Login\"/&gt;"
+msgstr "&lt;s:link view=\"/login.xhtml\" value=\"Login\"/&gt;"
+
+#. Tag: para
+#: Security.xml:463
+#, no-c-format
+msgid ""
+"Browsing directly to a view when using the <emphasis>incorrect</emphasis> "
+"protocol will cause a redirect to the same view using the <emphasis>correct</"
+"emphasis> protocol. For example, browsing to a page that has <literal>scheme="
+"\"https\"</literal> using HTTP will cause a redirect to the same page using "
+"HTTPS."
+msgstr ""
+"Das direkte browsen zu einer Ansicht während der Verwendung des <emphasis>inkorrekten</emphasis> Protokolls bewirkt eine Umleitung zu derselben Ansicht unter Verwendung des <emphasis>korrekten</"
+"emphasis> Protokolls. Das Browsen einer Seite etwa, die <literal>scheme="
+"\"https\"</literal> besitzt mittels HTTP bewirkt eine Umleitung zu derselben Seite unter Verwendung von HTTPS."
+
+#. Tag: para
+#: Security.xml:466
+#, no-c-format
+msgid ""
+"It is also possible to configure a default <literal>scheme</literal> for all "
+"pages. This is actually quite important, as you might only wish to use HTTPS "
+"for a few pages, and if no default scheme is specified then the default "
+"behavior is to continue using the current scheme. What this means is that "
+"once you enter a page with HTTPS, then HTTPS will continue to be used even "
+"if you navigate away to other non-HTTPS pages (a bad thing!). So it is "
+"strongly recommended to include a default <literal>scheme</literal>, by "
+"configuring it on the default (<literal>\"*\"</literal>) view:"
+msgstr ""
+"Es ist auch möglich, ein Standard-<literal>scheme</literal> für alle "
+"Seiten zu konfigurieren. Dies ist genau genommen sogar sehr wichtig, da Sie HTTPS vielleicht nur für wenige Seiten verwenden wollen und das aktuelle Schema weiter verwendet wird, wenn kein Standardschema festgelegt ist. Das bedeutet, dass wenn Sie eine Seite mit HTTPS starten, HTTPS weiterverwendet wird, selbst wenn Sie auf andere nicht-HTTPS Seiten weiternavigieren (nicht gut!). Wir empfehlen daher dringend ein Standard-<literal>scheme</literal> mit einzuschließen, indem Sie es in der Standard (<literal>\"*\"</literal>) Ansicht mit einschließen:"
+
+#. Tag: programlisting
+#: Security.xml:469
+#, no-c-format
+msgid "&lt;page view-id=\"*\" scheme=\"http\"&gt;"
+msgstr "&lt;page view-id=\"*\" scheme=\"http\"&gt;"
+
+#. Tag: para
+#: Security.xml:470
+#, no-c-format
+msgid ""
+"Of course, if <emphasis>none</emphasis> of the pages in your application use "
+"HTTPS then it is not required to specify a default scheme."
+msgstr "Falls natürlich <emphasis>keine</emphasis> der Seiten in Ihrer Anwendung HTTPS verwenden, dann ist es auch nicht erforderlich ein Standardschema festzulegen."
+
+#. Tag: title
+#: Security.xml:473
+#, no-c-format
+msgid "Implementing a Captcha Test"
+msgstr "Implementierung eines Captcha-Tests"
+
+#. Tag: para
+#: Security.xml:474
+#, no-c-format
+msgid ""
+"Though strictly not part of the security API, it might be useful in certain "
+"circumstances (such as new user registrations, posting to a public blog or "
+"forum) to implement a Captcha (<emphasis>C</emphasis>ompletely <emphasis>A</"
+"emphasis>utomated <emphasis>P</emphasis>ublic <emphasis>T</emphasis>uring "
+"test to tell <emphasis>C</emphasis>omputers and <emphasis>H</emphasis>umans "
+"<emphasis>A</emphasis>part) to prevent automated bots from interacting with "
+"your application. Seam provides seamless integration with JCaptcha, an "
+"excellent library for generating Captcha challenges. If you wish to use the "
+"captcha feature in your application you need to include the jcaptcha-* jar "
+"file from the Seam lib directory in your project, and register it in "
+"<literal>application.xml</literal> as a java module."
+msgstr ""
+"Obwohl streng genommen nicht Teil des Sicherheits-API, ist es möglicherweise unter bestimmten Umständen von Nutzen (etwa bei neuen Benutzerregistrierungen, Posten in einem öffentlichen Blog oder "
+"Forum) ein Captcha zu implementieren (<emphasis>C</emphasis>ompletely <emphasis>A</"
+"emphasis>utomated <emphasis>P</emphasis>ublic <emphasis>T</emphasis>uring "
+"test to tell <emphasis>C</emphasis>omputers and <emphasis>H</emphasis>umans "
+"<emphasis>A</emphasis>-Tart), um automatisierte Bots an der Interaktion mit Ihrer Anwendung zu hindern. Seam bietet eine nahtlose Integration mit JCaptcha, eine hervorragende Bibliothek zur Generierung von Captcha-Herausforderungen. Falls Sie das captcha-Feature in Ihrer Anwendung verwenden möchten, so müssen Sie die jcaptcha-* jar-Datei aus dem Seam lib-Verzeichnis in Ihr Projekt mit einschließen, und es als "
+"ein Java-Modul in <literal>application.xml</literal> registrieren."
+
+#. Tag: title
+#: Security.xml:477
+#, no-c-format
+msgid "Configuring the Captcha Servlet"
+msgstr "Konfigurieren des Captcha-Servlets"
+
+#. Tag: para
+#: Security.xml:478
+#, no-c-format
+msgid ""
+"To get up and running, it is necessary to configure the Seam Resource "
+"Servlet, which will provide the Captcha challenge images to your pages. This "
+"requires the following entry in <literal>web.xml</literal>:"
+msgstr ""
+"Um anfangen zu können ist es notwendig, das Seam Resource "
+"Servlet zu konfigurieren, das die Captcha-Herausforderungsabbildungen an Ihre Seiten liefert. Dies erfordert den folgenden Eintrag in <literal>web.xml</literal>:"
+
+#. Tag: programlisting
+#: Security.xml:481
+#, no-c-format
+msgid ""
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"    \n"
+"&lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+msgstr ""
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"    \n"
+"&lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+
+#. Tag: title
+#: Security.xml:482
+#, no-c-format
+msgid "Adding a Captcha to a page"
+msgstr "Einer Seite ein Captcha hinzufügen"
+
+#. Tag: para
+#: Security.xml:483
+#, no-c-format
+msgid ""
+"Adding a captcha challenge to a page is extremely easy. Seam provides a page-"
+"scoped component, <literal>captcha</literal>, which provides everything that "
+"is required, including built-in captcha validation. Here&#39;s an example:"
+msgstr "Das Hinzufügen einer captcha-Herausforderung zu einer Seite ist sehr einfach. Seam bietet eine seitenbegrenzte Komponente, <literal>captcha</literal>, die alles erfordeliche liefert, einschließlich eingebauter captcha-Validierung. Hier ist ein Beispiel:"
+
+#. Tag: programlisting
+#: Security.xml:486
+#, no-c-format
+msgid ""
+"&lt;div&gt;\n"
+"    &lt;h:graphicImage value=\"/seam/resource/captcha?#{captcha.id}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"  \n"
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"verifyCaptcha\"&gt;Enter the above letters&lt;/h:"
+"outputLabel&gt;\n"
+"    &lt;h:inputText id=\"verifyCaptcha\" value=\"#{captcha.response}\" "
+"required=\"true\"/&gt;\n"
+"    &lt;div class=\"validationError\"&gt;&lt;h:message for=\"verifyCaptcha\"/"
+"&gt;&lt;/div&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+"&lt;div&gt;\n"
+"    &lt;h:graphicImage value=\"/seam/resource/captcha?#{captcha.id}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"  \n"
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"verifyCaptcha\"&gt;Enter the above letters&lt;/h:"
+"outputLabel&gt;\n"
+"    &lt;h:inputText id=\"verifyCaptcha\" value=\"#{captcha.response}\" "
+"required=\"true\"/&gt;\n"
+"    &lt;div class=\"validationError\"&gt;&lt;h:message for=\"verifyCaptcha\"/"
+"&gt;&lt;/div&gt;\n"
+"&lt;/div&gt;"
+
+#. Tag: para
+#: Security.xml:487
+#, no-c-format
+msgid ""
+"That&#39;s all there is to it. The <literal>graphicImage</literal> control "
+"displays the Captcha challenge, and the <literal>inputText</literal> "
+"receives the user&#39;s response. The response is automatically validated "
+"against the Captcha when the form is submitted."
+msgstr ""
+"Das ist eigentlich schon alles. Die <literal>graphicImage</literal>-Steuerung zeigt die Captcha-Herausforderung an und der <literal>inputText</literal> "
+"empfängt die Antwort des Benutzers. Die Antwort wird automatisch gegen das Captcha validiert, wenn das Formular eingereicht wird."
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Spring.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Spring.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Spring.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,597 @@
+# translation of Spring.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Jasna Dimanoski <jdimanos at redhat.com>, 2007, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Spring\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2008-05-31 09:53+1000\n"
+"Last-Translator: Jasna Dimanoski <jdimanos at redhat.com>\n"
+"Language-Team:  <de at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Spring.xml:6
+#, no-c-format
+msgid "Spring Framework integration"
+msgstr "Spring Framework Integration"
+
+#. Tag: para
+#: Spring.xml:7
+#, no-c-format
+msgid ""
+"The Spring integration module allows easy migration of Spring-based projects "
+"to Seam and allows Spring applications to take advantage of key Seam "
+"features like conversations and Seam&#39;s more sophisticated persistence "
+"context management."
+msgstr "Das Spring Integrationsmodul gestattet einfache Migration von Spring-basierten Projekten in Seam und erlaubt es Spring Anwendungen Schlüssel-Features von Seam wie Konversationen und Seam&#39;s fortgeschritteneres Persistenz-Kontext-Management zu nutzen."
+
+#. Tag: para
+#: Spring.xml:10
+#, no-c-format
+msgid "Seam&#39;s support for Spring provides the ability to:"
+msgstr "Seam&#39;s Support für Spring liefert die Möglichkeit:"
+
+#. Tag: para
+#: Spring.xml:15
+#, no-c-format
+msgid "inject Seam component instances into Spring beans"
+msgstr "Instanzen von Seam Komponenten in Spring Beans einzuspeisen"
+
+#. Tag: para
+#: Spring.xml:20
+#, no-c-format
+msgid "inject Spring beans into Seam components"
+msgstr "Spring Beans in Seam Komponenten einzuspeisen"
+
+#. Tag: para
+#: Spring.xml:25
+#, no-c-format
+msgid "turn Spring beans into Seam components"
+msgstr "Spring Beans in Seam Komponenten umzuwandeln"
+
+#. Tag: para
+#: Spring.xml:30
+#, no-c-format
+msgid "allow Spring beans to live in any Seam context"
+msgstr "Spring Beans zu erlauben, Teil eines beliebigen Seam Kontext zu sein"
+
+#. Tag: para
+#: Spring.xml:35
+#, no-c-format
+msgid "start a spring WebApplicationContext with a Seam component"
+msgstr "einen Spring WebApplicationContext mit einer Seam Komponente zu starten"
+
+#. Tag: title
+#: Spring.xml:41
+#, no-c-format
+msgid "Injecting Seam components into Spring beans"
+msgstr "Seam Komponenten in Spring Beans einzuspeisen"
+
+#. Tag: para
+#: Spring.xml:42
+#, no-c-format
+msgid ""
+"Injecting Seam component instances into Spring beans is accomplished using "
+"the <literal>&lt;seam:instance/&gt;</literal> namespace handler. To enable "
+"the Seam namespace handler, the Seam namespace must be added to the Spring "
+"beans definition file:"
+msgstr "Das Einspeisen von Seam Komponenteninstanzen in Spring Beans erfolgt mittels des <literal>&lt;seam:instance/&gt;</literal> Namespace Handlers. Um den Seam Namespace Handler zu aktivieren, muss der Seam Namespace der Definitionsdatei der Spring Beans hinzugefügt werden:"
+
+#. Tag: programlisting
+#: Spring.xml:45
+#, no-c-format
+msgid ""
+"&lt;beans xmlns=\"http://www.springframework.org/schema/beans\"\n"
+"    xmlns:seam=\"http://jboss.com/products/seam/spring-seam\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://www.springframework.org/schema/beans \n"
+"                        http://www.springframework.org/schema/beans/spring-"
+"beans-2.0.xsd\n"
+"                        http://jboss.com/products/seam/spring-seam \n"
+"                        http://jboss.com/products/seam/spring-seam-1.2.xsd"
+"\"&gt;"
+msgstr ""
+"&lt;beans xmlns=\"http://www.springframework.org/schema/beans\"\n"
+"    xmlns:seam=\"http://jboss.com/products/seam/spring-seam\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://www.springframework.org/schema/beans \n"
+"                        http://www.springframework.org/schema/beans/spring-"
+"beans-2.0.xsd\n"
+"                        http://jboss.com/products/seam/spring-seam \n"
+"                        http://jboss.com/products/seam/spring-seam-1.2.xsd"
+"\"&gt;"
+
+#. Tag: para
+#: Spring.xml:46
+#, no-c-format
+msgid "Now any Seam component may be injected into any Spring bean:"
+msgstr "Jetzt kann jede beliebige Seam Komponente in jedes Spring Bean eingespeist werden:"
+
+#. Tag: programlisting
+#: Spring.xml:49
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\"&gt;\n"
+"        &lt;seam:instance name=\"someComponent\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\"&gt;\n"
+"        &lt;seam:instance name=\"someComponent\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+
+#. Tag: para
+#: Spring.xml:50
+#, no-c-format
+msgid "An EL expression may be used instead of a component name:"
+msgstr "Ein EL-Ausdruck kann statt eines Komponentennamens verwendet werden:"
+
+#. Tag: programlisting
+#: Spring.xml:53
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\"&gt;\n"
+"        &lt;seam:instance name=\"#{someExpression}\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\"&gt;\n"
+"        &lt;seam:instance name=\"#{someExpression}\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+
+#. Tag: para
+#: Spring.xml:54
+#, no-c-format
+msgid ""
+"Seam component instances may even be made available for injection into "
+"Spring beans by a Spring bean id."
+msgstr "Seam Komponenteninstanzen können sogar durch eine Spring Bean id für die Einspeisung in Spring Beans verfügbar gemacht werden."
+
+#. Tag: programlisting
+#: Spring.xml:57
+#, no-c-format
+msgid ""
+"&lt;seam:instance name=\"someComponent\" id=\"someSeamComponentInstance\"/"
+"&gt;\n"
+"\n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\" ref=\"someSeamComponentInstance"
+"\"&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+"&lt;seam:instance name=\"someComponent\" id=\"someSeamComponentInstance\"/"
+"&gt;\n"
+"\n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\" ref=\"someSeamComponentInstance"
+"\"&gt;\n"
+"&lt;/bean&gt;"
+
+#. Tag: para
+#: Spring.xml:58
+#, no-c-format
+msgid "Now for the caveat!"
+msgstr "Jetzt zu den Warnungen!"
+
+#. Tag: para
+#: Spring.xml:61
+#, no-c-format
+msgid ""
+"Seam was designed from the ground up to support a stateful component model "
+"with multiple contexts. Spring was not. Unlike Seam bijection, Spring "
+"injection does not occur at method invocation time. Instead, injection "
+"happens only when the Spring bean is instantiated. So the instance available "
+"when the bean is instantiated will be the same instance that the bean uses "
+"for the entire life of the bean. For example, if a Seam "
+"<literal>CONVERSATION</literal>-scoped component instance is directly "
+"injected into a singleton Spring bean, that singleton will hold a reference "
+"to the same instance long after the conversation is over! We call this "
+"problem <emphasis>scope impedance</emphasis>. Seam bijection ensures that "
+"scope impedance is maintained naturally as an invocation flows through the "
+"system. In Spring, we need to inject a proxy of the Seam component, and "
+"resolve the reference when the proxy is invoked."
+msgstr ""
+"Seam wurde von Grund auf so entwickelt, dass es ein \"stateful\" Komponentenmodell mit mehreren Kontexten unterstützt. Spring nicht. Anders als Seam Bijektion, findet Spring Einspeisung nicht zur Aufrufzeit der Methoden statt. Statt dessen geschieht Einspeisung nur, wenn das"
+"Spring Bean instantiiert wird. Daher wird die verfügbare Instanz bei Instantiierung des Beans dieselbe Instanz sein, die das Bean für den gesamten Lebenszyklus des Beans verwendet. Zum Beispiel, wenn eine Seam <literal>CONVERSATION</literal>-begrenzte Komponenteninstanz direkt in ein Singleton Spring Bean eingespeist wird, enthält dieses Singleton einen Verweis zu derselben Instanz lange noch nachdem"
+"die Konversation vorbei ist! Wir nennen dieses Problem <emphasis>Bereichsimpedanz</emphasis>. Seam Bijektion stellt sicher, dass Bereichsimpedanz auf natürliche Weise gewahrt wird, während ein Aufruf durch das System fließt. In Spring müssen wir ein Proxy der Seam Komponente einspeisen, und den Verweis auflösen, wenn das Proxy aufgerufen wird."
+
+#. Tag: para
+#: Spring.xml:64
+#, no-c-format
+msgid ""
+"The <literal>&lt;seam:instance/&gt;</literal> tag lets us automatically "
+"proxy the Seam component."
+msgstr "Das <literal>&lt;seam:instance/&gt;</literal>-Tag lässt uns automatisch ein Proxy der Seam Komponente erstellen."
+
+#. Tag: programlisting
+#: Spring.xml:67
+#, no-c-format
+msgid ""
+"&lt;seam:instance id=\"seamManagedEM\" name=\"someManagedEMComponent\" proxy="
+"\"true\"/&gt;\n"
+"        \n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\"&gt;\n"
+"    &lt;property name=\"entityManager\" ref=\"seamManagedEM\"&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+"&lt;seam:instance id=\"seamManagedEM\" name=\"someManagedEMComponent\" proxy="
+"\"true\"/&gt;\n"
+"        \n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\"&gt;\n"
+"    &lt;property name=\"entityManager\" ref=\"seamManagedEM\"&gt;\n"
+"&lt;/bean&gt;"
+
+#. Tag: para
+#: Spring.xml:68
+#, no-c-format
+msgid ""
+"This example shows one way to use a Seam-managed persistence context from a "
+"Spring bean. (A more robust way to use Seam-managed persistence contexts as "
+"a replacement for the Spring <literal>OpenEntityManagerInView</literal> "
+"filter will be provided in a future release)"
+msgstr "Dieses Beispiel zeigt eine Weise einen Seam-gemanagten Persistenzkontext von einem Spring Bean zu verwenden. (Eine robustere Weise Seam-gemanagte Persistenzkontexte zu verwenden als einen Ersatz für den Spring <literal>OpenEntityManagerInView</literal>-Filter wird in einer späteren Release verfügbar)"
+
+#. Tag: title
+#: Spring.xml:74
+#, no-c-format
+msgid "Injecting Spring beans into Seam components"
+msgstr "Einspeisen von Spring Beans in Seam Komponenten"
+
+#. Tag: para
+#: Spring.xml:75
+#, no-c-format
+msgid ""
+"It is even easier to inject Spring beans into Seam component instances. "
+"Actually, there are two possible approaches:"
+msgstr "Es ist sogar noch einfacher Spring Beans in Seam Komponenteninstanzen einzuspeisen. Es gibt zwei mögliche Vorgehensweisen:"
+
+#. Tag: para
+#: Spring.xml:80
+#, no-c-format
+msgid "inject a Spring bean using an EL expression"
+msgstr "einspeisen eines Spring Bean mittels eines EL-Ausdrucks"
+
+#. Tag: para
+#: Spring.xml:85
+#, no-c-format
+msgid "make the Spring bean a Seam component"
+msgstr "das Spring Bean zu einer Seam Komponenten machen"
+
+#. Tag: para
+#: Spring.xml:90
+#, no-c-format
+msgid ""
+"We&#39;ll discuss the second option in the next section. The easiest "
+"approach is to access the Spring beans via EL."
+msgstr "Wir besprechen die zweite Option im nächsten Abschnitt. Die einfachste Vorgehensweise ist der Zugriff auf die Spring Beans via EL."
+
+#. Tag: para
+#: Spring.xml:93
+#, no-c-format
+msgid ""
+"The Spring <literal>DelegatingVariableResolver</literal> is an integration "
+"point Spring provides for integrating Spring with JSF. This "
+"<literal>VariableResolver</literal> makes all Spring beans available in EL "
+"by their bean id. You&#39;ll need to add the "
+"<literal>DelegatingVariableResolver</literal> to <literal>faces-config.xml</"
+"literal>:"
+msgstr ""
+"Der Spring <literal>DelegatingVariableResolver</literal> ist ein Integrationspunkt, den Spring für die Integration von Spring mit JSF liefert. Dieser <literal>VariableResolver</literal> macht alle Spring Beans in EL "
+"durch deren Bean-id verfügbar. Sie werden den "
+"<literal>DelegatingVariableResolver</literal> zu <literal>faces-config.xml</literal> hinzufügen müssen:"
+
+#. Tag: programlisting
+#: Spring.xml:96
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;variable-resolver&gt;\n"
+"        org.springframework.web.jsf.DelegatingVariableResolver\n"
+"    &lt;/variable-resolver&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+"&lt;application&gt;\n"
+"    &lt;variable-resolver&gt;\n"
+"        org.springframework.web.jsf.DelegatingVariableResolver\n"
+"    &lt;/variable-resolver&gt;\n"
+"&lt;/application&gt;"
+
+#. Tag: para
+#: Spring.xml:97
+#, no-c-format
+msgid "Then you can inject Spring beans using <literal>@In</literal>:"
+msgstr "Sie können dann Spring Beans mittels <literal>@In</literal> einspeisen:"
+
+#. Tag: programlisting
+#: Spring.xml:100
+#, no-c-format
+msgid ""
+"@In(\"#{bookingService}\")\n"
+"private BookingService bookingService;"
+msgstr ""
+"@In(\"#{bookingService}\")\n"
+"private BookingService bookingService;"
+
+#. Tag: para
+#: Spring.xml:101
+#, no-c-format
+msgid ""
+"The use of Spring beans in EL is not limited to injection. Spring beans may "
+"be used anywhere that EL expressions are used in Seam: process and pageflow "
+"definitions, working memory assertions, etc..."
+msgstr "Die Verwendung von Spring Beans in EL beschränkt sich nicht auf Einspeisung. Spring Beans können überall verwendet werden, wo EL-Ausdrücke in Seam verwendet werden: Prozess- und Pageflow-Definitionen, Arbeitsspeicher-Aussagen, usw..."
+
+#. Tag: title
+#: Spring.xml:107
+#, no-c-format
+msgid "Making a Spring bean into a Seam component"
+msgstr "Ein Spring Bean zu einer Seam Komponente machen"
+
+#. Tag: para
+#: Spring.xml:108
+#, no-c-format
+msgid ""
+"The <literal>&lt;seam:component/&gt;</literal> namespace handler can be used "
+"to make any Spring bean a Seam component. Just place the <literal>&lt;seam:"
+"component/&gt;</literal> tag within the declaration of the bean that you "
+"wish to be a Seam component:"
+msgstr ""
+"Der <literal>&lt;seam:component/&gt;</literal>-Namespace Handler kann dazu verwendet werden, ein beliebiges Spring Bean zu einer Seam Komponente zu machen. Platzieren Sie einfach das <literal>&lt;seam:"
+"component/&gt;</literal>-Tag innerhalb der Deklaration des Beans, von dem Sie möchten, dass es eine Seam Komponente wird:"
+
+#. Tag: programlisting
+#: Spring.xml:111
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;seam:component/&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;seam:component/&gt;\n"
+"&lt;/bean&gt;"
+
+#. Tag: para
+#: Spring.xml:112
+#, no-c-format
+msgid ""
+"By default, <literal>&lt;seam:component/&gt;</literal> will create a "
+"<literal>STATELESS</literal> Seam component with class and name provided in "
+"the bean definition. Occasionally, such as when a <literal>FactoryBean</"
+"literal> is used, the class of the Spring bean may not be the class "
+"appearing in the bean definition. In such cases the <literal>class</literal> "
+"should be explicitly specified. A Seam component name may be explicitly "
+"specified in cases where there is potential for a naming conflict."
+msgstr ""
+"Standarmäßig erstellt <literal>&lt;seam:component/&gt;</literal> eine "
+"<literal>STATELESS</literal> Seam-Komponente mit Klasse und Namen in der Bean-Definition. Von Zeit zu Zeit, etwa wenn ein <literal>FactoryBean</literal> verwendet wird, ist die Klasse des Spring Beans möglicherweise nicht die Klasse, die in der Bean-Definition erscheint. In solchen Fällen sollte die <literal>class</literal> "
+"explizit festgelegt werden. Ein Seam-Komponentenname kann explizit festgelegt werden in Fällen, in denen ein Potenzial für Namenskonflikte existiert."
+
+#. Tag: para
+#: Spring.xml:115
+#, no-c-format
+msgid ""
+"The <literal>scope</literal> attribute of <literal>&lt;seam:component/&gt;</"
+"literal> may be used if you wish the Spring bean to be managed in a "
+"particular Seam scope. The Spring bean must be scoped to <literal>prototype</"
+"literal> if the Seam scope specified is anything other than "
+"<literal>STATELESS</literal>. Pre-existing Spring beans usually have a "
+"fundamentally stateless character, so this attribute is not usually needed."
+msgstr ""
+"Das <literal>scope</literal>-Attribut von <literal>&lt;seam:component/&gt;</literal> kann verwendet werden, wenn Sie möchten, dass das Spring-Bean in einem bestimmten "
+"Seam-Bereich gemanagt wird. Das Spring-Bean zu <literal>prototype</"
+"literal> gescopt sein, wenn der festgelegte Seam-Bereich etwas anderes als <literal>STATELESS</literal> ist. Bereits vorhandene Spring Beans besitzen in der Regel einen fundamental !stateless\" Charakter, so dass dieses Attribut normalerweise nicht benötit wird."
+
+#. Tag: title
+#: Spring.xml:121
+#, no-c-format
+msgid "Seam-scoped Spring beans"
+msgstr "Seam-begrenzte Spring Beans"
+
+#. Tag: para
+#: Spring.xml:122
+#, no-c-format
+msgid ""
+"The Seam integration package also lets you use Seam&#39;s contexts as Spring "
+"2.0 style custom scopes. This lets you declare any Spring bean in any of "
+"Seam&#39;s contexts. However, note once again that Spring&#39;s component "
+"model was never architected to support statefulness, so please use this "
+"feature with great care. In particular, clustering of session or "
+"conversation scoped Spring beans is deeply problematic, and care must be "
+"taken when injecting a bean or component from a wider scope into a bean of a "
+"narrower scope."
+msgstr ""
+"Das Seam-Integrationspaket lässt Sie Seam&#39;s Kontexte als Spring "
+"2.0 Style Custom Scopes verwenden. Dies lässt Sie jedes Spring Bean in jedem der Seam&#39;s Kontexte deklarieren. Beachten Sie jedoch auch hier, dass die Architektur von Spring&#39;s Komponentenmodell \"statefulness\" nicht unterstützt und verwenden Sie dieses Feature daher mit größter Sorgfalt. Besonders das Clustern von Session- oder "
+"Konversations-begrenten Spring-Beans ist sehr problematisch, und man muss vorsichtig bei der Einspeisung eines Beans oder einer Komponente von einem weiteren Bereich in ein Bean eines schmaleren Bereichs sein."
+
+#. Tag: para
+#: Spring.xml:125
+#, no-c-format
+msgid ""
+"By specifying <literal>&lt;seam:configure-scopes/&gt;</literal> once in a "
+"Spring bean factory configuration, all of the Seam scopes will be available "
+"to Spring beans as custom scopes. To associate a Spring bean with a "
+"particular Seam scope, specify the Seam scope in the <literal>scope</"
+"literal> attribute of the bean definition."
+msgstr ""
+"Durch einmaliges Festlegen von <literal>&lt;seam:configure-scopes/&gt;</literal> in einer"
+"Spring Bean Factory Konfiguration, sind alle Seam-Bereiche für Spring Beans als angepasste Bereiche verfügbar. Um ein Spring Bean mit einem bestimmten Bereich zu assoziieren, legen Sie den Seam Bereich im <literal>scope</literal>-Attribute der Bean Definition fest."
+
+#. Tag: programlisting
+#: Spring.xml:128
+#, no-c-format
+msgid ""
+"&lt;!-- Only needs to be specified once per bean factory--&gt;\n"
+"&lt;seam:configure-scopes/&gt;\n"
+"\n"
+"...\n"
+"\n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope=\"seam."
+"CONVERSATION\"/&gt;"
+msgstr ""
+"&lt;!-- Only needs to be specified once per bean factory--&gt;\n"
+"&lt;seam:configure-scopes/&gt;\n"
+"\n"
+"...\n"
+"\n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope=\"seam."
+"CONVERSATION\"/&gt;"
+
+#. Tag: para
+#: Spring.xml:129
+#, no-c-format
+msgid ""
+"The prefix of the scope name may be changed by specifying the "
+"<literal>prefix</literal> attribute in the <literal>configure-scopes</"
+"literal> definition. (The default prefix is <literal>seam.</literal>)"
+msgstr ""
+"Der Präfix des Bereichsname kann durch Festlegen des "
+"<literal>prefix</literal>-Attributs in der <literal>configure-scopes</"
+"literal>-Definition. (Der Standard-Präfix lautet <literal>seam.</literal>)"
+
+#. Tag: para
+#: Spring.xml:132
+#, no-c-format
+msgid ""
+"Seam-scoped Spring beans defined this way can be injected into other Spring "
+"beans without the use of <literal>&lt;seam:instance/&gt;</literal>. However, "
+"care must be taken to ensure scope impedance is maintained. The normal "
+"approach used in Spring is to specify <literal>&lt;aop:scoped-proxy/&gt;</"
+"literal> in the bean definition. However, Seam-scoped Spring beans are "
+"<emphasis>not</emphasis> compatible with <literal>&lt;aop:scoped-proxy/&gt;</"
+"literal>. So if you need to inject a Seam-scoped Spring bean into a "
+"singleton, <literal>&lt;seam:instance/&gt;</literal> must be used:"
+msgstr ""
+"Seam-begrenzte Spring Beans, die auf diese Weise defiert werden, können in andere Spring Beans eingespeist werden, ohne dass <literal>&lt;seam:instance/&gt;</literal> verwendet wird. Es muss jedoch darauf geachtet werden, dass die Bereichsimpedanz gewahrt wird. Die reguläre in Spring verwendete Vorgehensweise ist es, <literal>&lt;aop:scoped-proxy/&gt;</literal> in der Bean-Definition festgelegt. Allerdings sind Seam-begrenzte Spring Beans "
+"<emphasis>nicht</emphasis> kompatibel mit <literal>&lt;aop:scoped-proxy/&gt;</literal>. Wenn Sie also ein Seam-begrenztes Spring Bean in ein Singleton einspeisen müssen, muss <literal>&lt;seam:instance/&gt;</literal> verwendet werden:"
+
+#. Tag: programlisting
+#: Spring.xml:135
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope=\"seam."
+"CONVERSATION\"/&gt;\n"
+"\n"
+"...\n"
+"\n"
+"&lt;bean id=\"someSingleton\"&gt;\n"
+"    &lt;property name=\"someSeamScopedSpringBean\"&gt;\n"
+"        &lt;seam:instance name=\"someSpringBean\" proxy=\"true\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope=\"seam."
+"CONVERSATION\"/&gt;\n"
+"\n"
+"...\n"
+"\n"
+"&lt;bean id=\"someSingleton\"&gt;\n"
+"    &lt;property name=\"someSeamScopedSpringBean\"&gt;\n"
+"        &lt;seam:instance name=\"someSpringBean\" proxy=\"true\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+
+#. Tag: title
+#: Spring.xml:139
+#, no-c-format
+msgid "Spring Application Context as a Seam Component"
+msgstr "Spring-Anwendungskontext als Seam-Komponente"
+
+#. Tag: para
+#: Spring.xml:140
+#, no-c-format
+msgid ""
+"Although it is possible to use the Spring <literal>ContextLoaderListener</"
+"literal> to start your application&#39;s Spring ApplicationContext there are "
+"a couple of limitations."
+msgstr ""
+"Obwohl es möglich ist den Spring <literal>ContextLoaderListener</"
+"literal> zum starten des Spring ApplicationContext Ihrer Anwendung&#39;s zu verwenden, gibt es ein paar Einschränkungen."
+
+#. Tag: para
+#: Spring.xml:145
+#, no-c-format
+msgid ""
+"the Spring ApplicationContext must be started <emphasis>after</emphasis> the "
+"<literal>SeamListener</literal>"
+msgstr ""
+"der Spring ApplicationContext muss <emphasis>nach</emphasis> dem "
+"<literal>SeamListener</literal> gestartet werden"
+
+#. Tag: para
+#: Spring.xml:150
+#, no-c-format
+msgid ""
+"it can be tricky starting a Spring ApplicationContext for use in Seam unit "
+"and integration tests"
+msgstr "es kann knifflig sein, einen Spring ApplicationContext für die Verwendung in Seam Einheit- und Integrationstests zu starten"
+
+#. Tag: para
+#: Spring.xml:155
+#, no-c-format
+msgid ""
+"To overcome these two limitations the Spring integration includes a Seam "
+"component that will start a Spring ApplicationContext. To use this Seam "
+"component place the <literal>&lt;spring:context-loader/&gt;</literal> "
+"definition in the <literal>components.xml</literal>. Specify your Spring "
+"context file location in the <literal>config-locations</literal> attribute. "
+"If more than one config file is needed you can place them in the nested "
+"<literal>&lt;spring:config-locations/&gt;</literal> element following "
+"standard <literal>components.xml</literal> multi value practices."
+msgstr ""
+"Um diese beiden Einschränkungen zu meistern, enthält die Spring Integration eine Seam Komponente, die einen Spring ApplicationContext startet. Um diese Seam Komponente zu verwenden, platzieren Sie die <literal>&lt;spring:context-loader/&gt;</literal>-Definition in der <literal>components.xml</literal>. Legen Sie den Speicherplatz Ihrer Spring Kontextdatei im <literal>config-locations</literal>-Attribut fest. "
+"Falls mehr als eine config-Datei benötigt wird, so können Sie diese im verschachtelte <literal>&lt;spring:config-locations/&gt;</literal>-Element platzieren, das Standard <literal>components.xml</literal> Mehrwert-Pratices folgt."
+
+#. Tag: programlisting
+#: Spring.xml:158
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:spring=\"http://jboss.com/products/seam/spring\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"http://jboss.com/products/seam/components "
+"http://jboss.com/products/seam/components-1.2.xsd\n"
+"                                http://jboss.com/products/seam/spring http://"
+"jboss.com/products/seam/spring-1.2.xsd\"&gt;\n"
+"\n"
+"        &lt;spring:context-loader context-locations=\"/WEB-INF/"
+"applicationContext.xml\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:spring=\"http://jboss.com/products/seam/spring\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"http://jboss.com/products/seam/components "
+"http://jboss.com/products/seam/components-1.2.xsd\n"
+"                                http://jboss.com/products/seam/spring http://"
+"jboss.com/products/seam/spring-1.2.xsd\"&gt;\n"
+"\n"
+"        &lt;spring:context-loader context-locations=\"/WEB-INF/"
+"applicationContext.xml\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Testing.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Testing.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Testing.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,578 @@
+# translation of Testing.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Jasna Dimanoski <jdimanos at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Testing\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2008-03-09 18:05+1000\n"
+"Last-Translator: Jasna Dimanoski <jdimanos at redhat.com>\n"
+"Language-Team:  <de at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Testing.xml:6
+#, no-c-format
+msgid "Testing Seam applications"
+msgstr "Testen von Seam-Anwendungen"
+
+#. Tag: para
+#: Testing.xml:7
+#, no-c-format
+msgid ""
+"Most Seam applications will need at least two kinds of automated tests: "
+"<emphasis>unit tests</emphasis>, which test a particular Seam component in "
+"isolation, and scripted <emphasis>integration tests</emphasis> which "
+"exercise all Java layers of the application (that is, everything except the "
+"view pages)."
+msgstr "Die meisten Seam-Anwendungen benötigen mindestens zwei Arten automatisierter Tests: <emphasis>Einheiten-Tests</emphasis>, die eine bestimmte Seam-Komponente in Isolierung testen, geskriptete <emphasis>Integrationstests</emphasis>, die alle Java-Schichten der Anwendung ausüben (das heißt alles außer den Ansichtsseiten)."
+
+#. Tag: para
+#: Testing.xml:10
+#, no-c-format
+msgid "Both kinds of tests are very easy to write."
+msgstr "Beide Arten von Tests sind ganz leicht zu schreiben."
+
+#. Tag: title
+#: Testing.xml:14
+#, no-c-format
+msgid "Unit testing Seam components"
+msgstr "Einheiten testende Seam-Komponenten"
+
+#. Tag: para
+#: Testing.xml:15
+#, no-c-format
+msgid ""
+"All Seam components are POJOs. This is a great place to start if you want "
+"easy unit testing. And since Seam emphasises the use of bijection for inter-"
+"component interactions and access to contextual objects, it&#39;s very easy "
+"to test a Seam component outside of its normal runtime environment."
+msgstr "Bei allen Seam-Komponenten handelt es sich um POJOs. Das ist eine großartige Stelle, wenn Sie mit einfachem Testen von Einheiten beginnen möchten. Und da Seam die Verwendung von \"Bijection\" für Interaktionen zwischen Komponenten und Zugriff auf kontextuelle Objekte betont, ist es sehr einfach eine Seam-Komponente außerhalb ihrer normalen Runtime-Umgebung zu testen."
+
+#. Tag: para
+#: Testing.xml:18
+#, no-c-format
+msgid "Consider the following Seam component:"
+msgstr "Ziehen Sie folgende Seam-Komponent in Betracht:"
+
+#. Tag: programlisting
+#: Testing.xml:21
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Scope(EVENT)\n"
+"@Name(\"register\")\n"
+"public class RegisterAction implements Register\n"
+"{\n"
+"   private User user;\n"
+"   private EntityManager em;\n"
+"\n"
+"   @In\n"
+"   public void setUser(User user) {\n"
+"       this.user = user;\n"
+"   }\n"
+"   \n"
+"   @PersistenceContext\n"
+"   public void setBookingDatabase(EntityManager em) {\n"
+"       this.em = em;\n"
+"   }\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = em.createQuery(\"select username from User where "
+"username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getResultList();\n"
+"      if (existing.size()==0)\n"
+"      {\n"
+"         em.persist(user);\n"
+"         return \"success\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+"@Stateless\n"
+"@Scope(EVENT)\n"
+"@Name(\"register\")\n"
+"public class RegisterAction implements Register\n"
+"{\n"
+"   private User user;\n"
+"   private EntityManager em;\n"
+"\n"
+"   @In\n"
+"   public void setUser(User user) {\n"
+"       this.user = user;\n"
+"   }\n"
+"   \n"
+"   @PersistenceContext\n"
+"   public void setBookingDatabase(EntityManager em) {\n"
+"       this.em = em;\n"
+"   }\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = em.createQuery(\"select username from User where "
+"username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getResultList();\n"
+"      if (existing.size()==0)\n"
+"      {\n"
+"         em.persist(user);\n"
+"         return \"success\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+
+#. Tag: para
+#: Testing.xml:22
+#, no-c-format
+msgid "We could write a TestNG test for this component as follows:"
+msgstr "Wir könnten wie folgt einen TestNG-Test für diese Komponente schreiben:"
+
+#. Tag: programlisting
+#: Testing.xml:25
+#, no-c-format
+msgid ""
+"public class RegisterActionTest\n"
+"{\n"
+"\n"
+"    @Test\n"
+"    public testRegisterAction()\n"
+"    {\n"
+"        EntityManager em = getEntityManagerFactory().createEntityManager();\n"
+"        em.getTransaction().begin();\n"
+"        \n"
+"        User gavin = new User();\n"
+"        gavin.setName(\"Gavin King\");\n"
+"        gavin.setUserName(\"1ovthafew\");\n"
+"        gavin.setPassword(\"secret\");\n"
+"        \n"
+"        RegisterAction action = new RegisterAction();\n"
+"        action.setUser(gavin);\n"
+"        action.setBookingDatabase(em);\n"
+"        \n"
+"        assert \"success\".equals( action.register() );\n"
+"        \n"
+"        em.getTransaction().commit();\n"
+"        em.close();\n"
+"    }\n"
+"    \n"
+"    \n"
+"    private EntityManagerFactory emf;\n"
+"    \n"
+"    public EntityManagerFactory getEntityManagerFactory()\n"
+"    {\n"
+"        return emf;\n"
+"    }\n"
+"    \n"
+"    @Configuration(beforeTestClass=true)\n"
+"    public void init() \n"
+"    {\n"
+"        emf = Persistence.createEntityManagerFactory"
+"(\"myResourceLocalEntityManager\");\n"
+"    }\n"
+"    \n"
+"    @Configuration(afterTestClass=true)\n"
+"    public void destroy()\n"
+"    {\n"
+"        emf.close();\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+"public class RegisterActionTest\n"
+"{\n"
+"\n"
+"    @Test\n"
+"    public testRegisterAction()\n"
+"    {\n"
+"        EntityManager em = getEntityManagerFactory().createEntityManager();\n"
+"        em.getTransaction().begin();\n"
+"        \n"
+"        User gavin = new User();\n"
+"        gavin.setName(\"Gavin King\");\n"
+"        gavin.setUserName(\"1ovthafew\");\n"
+"        gavin.setPassword(\"secret\");\n"
+"        \n"
+"        RegisterAction action = new RegisterAction();\n"
+"        action.setUser(gavin);\n"
+"        action.setBookingDatabase(em);\n"
+"        \n"
+"        assert \"success\".equals( action.register() );\n"
+"        \n"
+"        em.getTransaction().commit();\n"
+"        em.close();\n"
+"    }\n"
+"    \n"
+"    \n"
+"    private EntityManagerFactory emf;\n"
+"    \n"
+"    public EntityManagerFactory getEntityManagerFactory()\n"
+"    {\n"
+"        return emf;\n"
+"    }\n"
+"    \n"
+"    @Configuration(beforeTestClass=true)\n"
+"    public void init() \n"
+"    {\n"
+"        emf = Persistence.createEntityManagerFactory"
+"(\"myResourceLocalEntityManager\");\n"
+"    }\n"
+"    \n"
+"    @Configuration(afterTestClass=true)\n"
+"    public void destroy()\n"
+"    {\n"
+"        emf.close();\n"
+"    }\n"
+"    \n"
+"}"
+
+#. Tag: para
+#: Testing.xml:26
+#, no-c-format
+msgid ""
+"Seam components don&#39;t usually depend directly upon container "
+"infrastructure, so most unit testing as as easy as that!"
+msgstr "Seam-Komponenten hängen normalerweise von der Container-Infrastruktur ab, so dass das Testen von Einheiten meist genau so einfach ist!"
+
+#. Tag: title
+#: Testing.xml:32
+#, no-c-format
+msgid "Integration testing Seam applications"
+msgstr "Integration testende Seam-Anwendungen"
+
+#. Tag: para
+#: Testing.xml:33
+#, no-c-format
+msgid ""
+"Integration testing is slightly more difficult. In this case, we can&#39;t "
+"eliminate the container infrastructure; indeed, that is part of what is "
+"being tested! At the same time, we don&#39;t want to be forced to deploy our "
+"application to an application server to run the automated tests. We need to "
+"be able to reproduce just enough of the container infrastructure inside our "
+"testing environment to be able to exercise the whole application, without "
+"hurting performance too much."
+msgstr "Das Integrationstesten ist etwas schwieriger. In diesem Fall können wir die Container-Infrastruktur nicht eleminieren, da diese ja ein Teil von dem ist, was getestet werden soll! Gleichzeitig wollen wir nicht gezwungen sein, unsere Anwendung zu einem Anwendungsserver zu deployen, um die automatisierten Tests laufen zu lassen. Wir müssen in der Lage sein, gerade genug der Container-Infrastruktur innerhalb unserer Testumgebung zu reproduzieren, um die gesamte Anwendung auszuüben ohne die Performance zu sehr zu beeinflussen."
+
+#. Tag: para
+#: Testing.xml:36
+#, no-c-format
+msgid ""
+"A second problem is emulating user interactions. A third problem is where to "
+"put our assertions. Some test frameworks let us test the whole application "
+"by reproducing user interactions with the web browser. These frameworks have "
+"their place, but they are not appropriate for use at development time."
+msgstr ""
+"Ein zweites Problem ist das Emulieren von Benutzerinteraktionen. Ein drittes Problem die Frage, wohin mit den \"Assertions\". Einige Test-Frameworks lassen uns die gesamte Anwendung testen, indem "
+"Benutzerinteraktionen mit dem Web-Browser reproduziert werden. Diese Frameworks haben ihren Platz, sind aber nicht für den Einsatz zum Entwicklungszeitpunkt vorgesehen. "
+
+#. Tag: para
+#: Testing.xml:39
+#, no-c-format
+msgid ""
+"The approach taken by Seam is to let you write tests that script your "
+"components while running inside a pruned down container environment (Seam, "
+"together with the JBoss Embeddable EJB container). The role of the test "
+"script is basically to reproduce the interaction between the view and the "
+"Seam components. In other words, you get to pretend you are the JSF "
+"implementation!"
+msgstr "Seam geht so vor, dass es Sie Tests schreiben lässt. die Skripts für Ihre Komponenten erstellen während es innerhalb einer verkleinerten Container-Umgebung läuft (Seam mitsamt dem JBoss Embeddable EJB-Container). Die Rolle des Test-Skripts besteht darin, die Interaktion zwischen der Ansicht und den Seam-Komponenten zu reproduzieren. Mit anderen Worten - Sie tun so als seien Sie die JSF-Implementierung!"
+
+#. Tag: para
+#: Testing.xml:42
+#, no-c-format
+msgid "This approach tests everything except the view."
+msgstr "Diese Vorgehensweise testet alles außer der Ansicht."
+
+#. Tag: para
+#: Testing.xml:45
+#, no-c-format
+msgid "Let&#39;s consider a JSP view for the component we unit tested above:"
+msgstr "Überlegen wir uns eine JSP-Ansicht für die Komponenten für die wir oben die Einheiten getestet haben:"
+
+#. Tag: programlisting
+#: Testing.xml:48
+#, no-c-format
+msgid ""
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Register New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;table border=\"0\"&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Username&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputText value=\"#{user.username}\"/&gt;&lt;/"
+"td&gt;\n"
+"       &lt;/tr&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Real Name&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputText value=\"#{user.name}\"/&gt;&lt;/td&gt;\n"
+"       &lt;/tr&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Password&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputSecret value=\"#{user.password}\"/&gt;&lt;/"
+"td&gt;\n"
+"       &lt;/tr&gt;\n"
+"     &lt;/table&gt;\n"
+"     &lt;h:messages/&gt;\n"
+"     &lt;h:commandButton type=\"submit\" value=\"Register\" action=\"#"
+"{register.register}\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Register New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;table border=\"0\"&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Username&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputText value=\"#{user.username}\"/&gt;&lt;/"
+"td&gt;\n"
+"       &lt;/tr&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Real Name&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputText value=\"#{user.name}\"/&gt;&lt;/td&gt;\n"
+"       &lt;/tr&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Password&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputSecret value=\"#{user.password}\"/&gt;&lt;/"
+"td&gt;\n"
+"       &lt;/tr&gt;\n"
+"     &lt;/table&gt;\n"
+"     &lt;h:messages/&gt;\n"
+"     &lt;h:commandButton type=\"submit\" value=\"Register\" action=\"#"
+"{register.register}\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+
+#. Tag: para
+#: Testing.xml:49
+#, no-c-format
+msgid ""
+"We want to test the registration functionality of our application (the stuff "
+"that happens when the user clicks the Register button). We&#39;ll reproduce "
+"the JSF request lifecycle in an automated TestNG test:"
+msgstr "Wir möchten die Registrierungsfunktionalität unserer ANwendung testen (all jene Dinge, die passieren, wenn der Benutzer auf die Registrierungsschaltfläche klickt). Wir reproduzieren den Lebenszyklus der JSF-Anfrage in einem automatisierten TestNG-Test:"
+
+#. Tag: programlisting
+#: Testing.xml:52
+#, no-c-format
+msgid ""
+"public class RegisterTest extends SeamTest\n"
+"{\n"
+"   \n"
+"   @Test\n"
+"   public void testRegister() throws Exception\n"
+"   {\n"
+"            \n"
+"      new FacesRequest() {\n"
+"\n"
+"         @Override\n"
+"         protected void processValidations() throws Exception\n"
+"         {\n"
+"            validateValue(\"#{user.username}\", \"1ovthafew\");\n"
+"            validateValue(\"#{user.name}\", \"Gavin King\");\n"
+"            validateValue(\"#{user.password}\", \"secret\");\n"
+"            assert !isValidationFailure();\n"
+"         }\n"
+"         \n"
+"         @Override\n"
+"         protected void updateModelValues() throws Exception\n"
+"         {\n"
+"            setValue(\"#{user.username}\", \"1ovthafew\");\n"
+"            setValue(\"#{user.name}\", \"Gavin King\");\n"
+"            setValue(\"#{user.password}\", \"secret\");\n"
+"         }\n"
+"\n"
+"         @Override\n"
+"         protected void invokeApplication()\n"
+"         {\n"
+"            assert invokeMethod(\"#{register.register}\").equals(\"success"
+"\");\n"
+"         }\n"
+"\n"
+"         @Override\n"
+"         protected void renderResponse()\n"
+"         {\n"
+"            assert getValue(\"#{user.username}\").equals(\"1ovthafew\");\n"
+"            assert getValue(\"#{user.name}\").equals(\"Gavin King\");\n"
+"            assert getValue(\"#{user.password}\").equals(\"secret\");\n"
+"         }\n"
+"         \n"
+"      }.run();\n"
+"      \n"
+"   }\n"
+"\n"
+"   ...\n"
+"   \n"
+"}"
+msgstr ""
+"public class RegisterTest extends SeamTest\n"
+"{\n"
+"   \n"
+"   @Test\n"
+"   public void testRegister() throws Exception\n"
+"   {\n"
+"            \n"
+"      new FacesRequest() {\n"
+"\n"
+"         @Override\n"
+"         protected void processValidations() throws Exception\n"
+"         {\n"
+"            validateValue(\"#{user.username}\", \"1ovthafew\");\n"
+"            validateValue(\"#{user.name}\", \"Gavin King\");\n"
+"            validateValue(\"#{user.password}\", \"secret\");\n"
+"            assert !isValidationFailure();\n"
+"         }\n"
+"         \n"
+"         @Override\n"
+"         protected void updateModelValues() throws Exception\n"
+"         {\n"
+"            setValue(\"#{user.username}\", \"1ovthafew\");\n"
+"            setValue(\"#{user.name}\", \"Gavin King\");\n"
+"            setValue(\"#{user.password}\", \"secret\");\n"
+"         }\n"
+"\n"
+"         @Override\n"
+"         protected void invokeApplication()\n"
+"         {\n"
+"            assert invokeMethod(\"#{register.register}\").equals(\"success"
+"\");\n"
+"         }\n"
+"\n"
+"         @Override\n"
+"         protected void renderResponse()\n"
+"         {\n"
+"            assert getValue(\"#{user.username}\").equals(\"1ovthafew\");\n"
+"            assert getValue(\"#{user.name}\").equals(\"Gavin King\");\n"
+"            assert getValue(\"#{user.password}\").equals(\"secret\");\n"
+"         }\n"
+"         \n"
+"      }.run();\n"
+"      \n"
+"   }\n"
+"\n"
+"   ...\n"
+"   \n"
+"}"
+
+#. Tag: para
+#: Testing.xml:53
+#, no-c-format
+msgid ""
+"Notice that we&#39;ve extended <literal>SeamTest</literal>, which provides a "
+"Seam environment for our components, and written our test script as an "
+"anonymous class that extends <literal>SeamTest.FacesRequest</literal>, which "
+"provides an emulated JSF request lifecycle. (There is also a "
+"<literal>SeamTest.NonFacesRequest</literal> for testing GET requests.) "
+"We&#39;ve written our code in methods which are named for the various JSF "
+"phases, to emulate the calls that JSF would make to our components. Then "
+"we&#39;ve thrown in various assertions."
+msgstr ""
+"Beachten Sie, dass wir <literal>SeamTest</literal> erweitert haben, was eine Seam-Umgebung für unsere Komponenten bereitstellt und unser Test-Skript als anonyme Klasse geschrieben haben, was <literal>SeamTest.FacesRequest</literal> erweitert und somit den emulierten Lebenszyklus einer JSF-Anfrage bereitstellt. (Es gibt auch ein "
+"<literal>SeamTest.NonFacesRequest</literal> für das Testen von GET-Anfragen). Wir haben unseren Code in Methoden geschrieben, die nach den verschiedenen JSF-Phasen benannt sind, um die Aufrufe, die JSF an unsere Komponenten machen würde, zu emulieren. Dann haben wir verschiedene \"Assertions\" hinzugefügt."
+
+#. Tag: para
+#: Testing.xml:56
+#, no-c-format
+msgid ""
+"You&#39;ll find plenty of integration tests for the Seam example "
+"applications which demonstrate more complex cases. There are instructions "
+"for running these tests using Ant, or using the TestNG plugin for eclipse:"
+msgstr "Sie werfen zahlreiche Integrationstests für die Seam Beispielanwendungen finden, die komplexere Fälle demonstrieren. Es existieren Anleitungen für die Ausführung dieser Tests unter Verwendung von Ant oder der mittels TestNG-Plugin für Eclipse:"
+
+#. Tag: title
+#: Testing.xml:68
+#, no-c-format
+msgid "Using mocks in integration tests"
+msgstr "Verwendung von Simulationen in Iintegrationstests"
+
+#. Tag: para
+#: Testing.xml:69
+#, no-c-format
+msgid ""
+"Occasionally, we need to be able to replace the implementation of some Seam "
+"component that depends upon resources which are not available in the "
+"integration test environment. For example, suppose we have some Seam "
+"component which is a facade to some payment processing system:"
+msgstr "Gelegentlich müssen wir auch in der Lage dazu sein, die Implementierung einiger von in der Integrationstestumgebung nicht verfügbaren Ressourcen abhängige Seam-Komponenten zu ersetzen. Nehmen wir zum Beispiel an, wir haben irgendeine Seam-Komponente, die als Fassade eines Zahlungen bearbeitenden Systems fungiert:"
+
+#. Tag: programlisting
+#: Testing.xml:72
+#, no-c-format
+msgid ""
+"@Name(\"paymentProcessor\")\n"
+"public class PaymentProcessor {\n"
+"    public boolean processPayment(Payment payment) { .... }\n"
+"}"
+msgstr ""
+"@Name(\"paymentProcessor\")\n"
+"public class PaymentProcessor {\n"
+"    public boolean processPayment(Payment payment) { .... }\n"
+"}"
+
+#. Tag: para
+#: Testing.xml:73
+#, no-c-format
+msgid "For integration tests, we can mock out this component as follows:"
+msgstr "Für Integrationstests können wir diese Komponente wie folgt nachahmen:"
+
+#. Tag: programlisting
+#: Testing.xml:76
+#, no-c-format
+msgid ""
+"@Name(\"paymentProcessor\")\n"
+"@Install(precedence=MOCK)\n"
+"public class MockPaymentProcessor extends PaymentProcessor {\n"
+"    public void processPayment(Payment payment) {\n"
+"        return true;\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"paymentProcessor\")\n"
+"@Install(precedence=MOCK)\n"
+"public class MockPaymentProcessor extends PaymentProcessor {\n"
+"    public void processPayment(Payment payment) {\n"
+"        return true;\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Testing.xml:77
+#, no-c-format
+msgid ""
+"Since the <literal>MOCK</literal> precedence is higher than the default "
+"precedence of application components, Seam will install the mock "
+"implementation whenever it is in the classpath. When deployed into "
+"production, the mock implementation is absent, so the real component will be "
+"installed."
+msgstr "Da der <literal>MOCK</literal>-Vorrang größer als der Standard-Vorrang von Anwendungskomponenten ist, installiert Seam die simulierte Implementierung wenn diese sich im Klassenpfad befindet. Bei Deployment in die Produktion, ist die simulierte Implementierung nicht präsent, so dass die echte Komponente installiert wird."
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Text.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Text.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Text.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,495 @@
+# translation of Text.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Jasna Dimanoski <jdimanos at redhat.com>, 2007, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Text\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2008-03-16 11:19+1000\n"
+"Last-Translator: Jasna Dimanoski <jdimanos at redhat.com>\n"
+"Language-Team:  <de at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Text.xml:6
+#, no-c-format
+msgid "Seam Text"
+msgstr "Seam-Text"
+
+#. Tag: para
+#: Text.xml:7
+#, no-c-format
+msgid ""
+"Collaboration-oriented websites require a human-friendly markup language for "
+"easy entry of formatted text in forum posts, wiki pages, blogs, comments, "
+"etc. Seam provides the <literal>&lt;s:formattedText/&gt;</literal> control "
+"for display of formatted text that conforms to the <emphasis>Seam Text</"
+"emphasis> language. Seam Text is implemented using an ANTLR-based parser. "
+"You don&#39;t need to know anything about ANTLR to use it, however."
+msgstr ""
+"Kollaborationsorientierte Websites erfordern eine lesbare Markup-Language für die bequeme Eingabe formattierten Texts in Forum-Posts, Wiki-Seiten, Blogs, Kommentaren, usw.. Seam bietet die <literal>&lt;s:"
+"formattedText/&gt;</literal>-Kontrolle für die Anzeige formattierten Texts, der mit der <emphasis>Seam Text</emphasis>-Sprache konform ist. Seam Text wird mittels ANTLR-basiertem Parser implemetiert. Sie müssen aber keine Kenntnisse zu ANTLR besitzen, um es zu verwenden."
+
+#. Tag: title
+#: Text.xml:11
+#, no-c-format
+msgid "Basic fomatting"
+msgstr "Grundlegendes Formatieren"
+
+#. Tag: para
+#: Text.xml:12
+#, no-c-format
+msgid "Here is a simple example:"
+msgstr "Hier ist ein einfaches Beispiel:"
+
+#. Tag: programlisting
+#: Text.xml:15
+#, no-c-format
+msgid ""
+"It&#39;s easy to make *bold text*, /italic text/, |monospace|, \n"
+"~deleted text~, super^scripts^ or _underlines_."
+msgstr ""
+"It&#39;s easy to make *bold text*, /italic text/, |monospace|, \n"
+"~deleted text~, super^scripts^ or _underlines_."
+
+#. Tag: para
+#: Text.xml:16
+#, no-c-format
+msgid ""
+"If we display this using <literal>&lt;s:formattedText/&gt;</literal>, we "
+"will get the following HTML produced:"
+msgstr ""
+"Wenn wir dies unter Verwendung von <literal>&lt;s:formattedText/&gt;</"
+"literal> anzeigen, so wird folgende HTML erzeugt:"
+
+#. Tag: programlisting
+#: Text.xml:19
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"It&#39;s easy to make &lt;b&gt;bold text&lt;/b&gt;, &lt;i&gt;italic text&lt;/"
+"i&gt;, &lt;tt&gt;monospace&lt;/tt&gt;\n"
+"&lt;del&gt;deleted text&lt;/del&gt;, super&lt;sup&gt;scripts&lt;/sup&gt; or "
+"&lt;u&gt;underlines&lt;/u&gt;.\n"
+"&lt;/p&gt;"
+msgstr ""
+"&lt;p&gt;\n"
+"It&#39;s easy to make &lt;b&gt;bold text&lt;/b&gt;, &lt;i&gt;italic text&lt;/"
+"i&gt;, &lt;tt&gt;monospace&lt;/tt&gt;\n"
+"&lt;del&gt;deleted text&lt;/del&gt;, super&lt;sup&gt;scripts&lt;/sup&gt; or "
+"&lt;u&gt;underlines&lt;/u&gt;.\n"
+"&lt;/p&gt;"
+
+#. Tag: para
+#: Text.xml:20
+#, no-c-format
+msgid ""
+"We can use a blank line to indicate a new paragraph, and <literal>+</"
+"literal> to indicate a heading:"
+msgstr ""
+"Mittels einer leeren Zeile kann ein neuer Absatz angezeigt werde, unter "
+"Verwendung von <literal>+</literal> eine Ãœberschrift:"
+
+#. Tag: programlisting
+#: Text.xml:23
+#, no-c-format
+msgid ""
+"+This is a big heading\n"
+"You /must/ have some text following a heading!\n"
+" \n"
+"++This is a smaller heading\n"
+"This is the first paragraph. We can split it across multiple \n"
+"lines, but we must end it with a blank line.\n"
+"\n"
+"This is the second paragraph."
+msgstr ""
+"+This is a big heading\n"
+"You /must/ have some text following a heading!\n"
+" \n"
+"++This is a smaller heading\n"
+"This is the first paragraph. We can split it across multiple \n"
+"lines, but we must end it with a blank line.\n"
+"\n"
+"This is the second paragraph."
+
+#. Tag: para
+#: Text.xml:24
+#, no-c-format
+msgid ""
+"(Note that a simple newline is ignored, you need an additional blank line to "
+"wrap text into a new paragraph.) This is the HTML that results:"
+msgstr ""
+"(Beachten Sie, dass eine einfache neuel Zeile (\"newline\") ignoriert wird, "
+"Sie benötigen eine zusätzliche Leerzeile, um den Text in einen neuen "
+"Abschnitt umzubrechen). Dieses ist die resultierende HTML:"
+
+#. Tag: programlisting
+#: Text.xml:27
+#, no-c-format
+msgid ""
+"&lt;h1&gt;This is a big heading&lt;/h1&gt;\n"
+"&lt;p&gt;\n"
+"You &lt;i&gt;must&lt;/i&gt; have some text following a heading!\n"
+"&lt;/p&gt;\n"
+" \n"
+"&lt;h2&gt;This is a smaller heading&lt;/h2&gt;\n"
+"&lt;p&gt;\n"
+"This is the first paragraph. We can split it across multiple \n"
+"lines, but we must end it with a blank line.\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"This is the second paragraph.\n"
+"&lt;/p&gt;"
+msgstr ""
+"&lt;h1&gt;This is a big heading&lt;/h1&gt;\n"
+"&lt;p&gt;\n"
+"You &lt;i&gt;must&lt;/i&gt; have some text following a heading!\n"
+"&lt;/p&gt;\n"
+" \n"
+"&lt;h2&gt;This is a smaller heading&lt;/h2&gt;\n"
+"&lt;p&gt;\n"
+"This is the first paragraph. We can split it across multiple \n"
+"lines, but we must end it with a blank line.\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"This is the second paragraph.\n"
+"&lt;/p&gt;"
+
+#. Tag: para
+#: Text.xml:28
+#, no-c-format
+msgid ""
+"Ordered lists are created using the <literal>#</literal> character. "
+"Unordered lists use the <literal>=</literal> character:"
+msgstr ""
+"Geordnete Listen werden unter Verwendung des <literal>#</literal>-Zeichens "
+"erstellt. Ungeordnete Listen verwenden das <literal>=</literal>-Zeichen:"
+
+#. Tag: programlisting
+#: Text.xml:31
+#, no-c-format
+msgid ""
+"An ordered list:\n"
+"        \n"
+"#first item\n"
+"#second item\n"
+"#and even the /third/ item\n"
+"\n"
+"An unordered list:\n"
+"\n"
+"=an item\n"
+"=another item"
+msgstr ""
+"An ordered list:\n"
+"        \n"
+"#first item\n"
+"#second item\n"
+"#and even the /third/ item\n"
+"\n"
+"An unordered list:\n"
+"\n"
+"=an item\n"
+"=another item"
+
+#. Tag: programlisting
+#: Text.xml:32
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"An ordered list:\n"
+"&lt;/p&gt;\n"
+" \n"
+"&lt;ol&gt;       \n"
+"&lt;li&gt;first item&lt;/li&gt;\n"
+"&lt;li&gt;second item&lt;/li&gt;\n"
+"&lt;li&gt;and even the &lt;i&gt;third&lt;/i&gt; item&lt;/li&gt;\n"
+"&lt;/ol&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"An unordered list:\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;ul&gt;\n"
+"&lt;li&gt;an item&lt;/li&gt;\n"
+"&lt;li&gt;another item&lt;/li&gt;\n"
+"&lt;/ul&gt;"
+msgstr ""
+"&lt;p&gt;\n"
+"An ordered list:\n"
+"&lt;/p&gt;\n"
+" \n"
+"&lt;ol&gt;       \n"
+"&lt;li&gt;first item&lt;/li&gt;\n"
+"&lt;li&gt;second item&lt;/li&gt;\n"
+"&lt;li&gt;and even the &lt;i&gt;third&lt;/i&gt; item&lt;/li&gt;\n"
+"&lt;/ol&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"An unordered list:\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;ul&gt;\n"
+"&lt;li&gt;an item&lt;/li&gt;\n"
+"&lt;li&gt;another item&lt;/li&gt;\n"
+"&lt;/ul&gt;"
+
+#. Tag: para
+#: Text.xml:33
+#, no-c-format
+msgid "Quoted sections should be surrounded in double quotes:"
+msgstr ""
+"Abschnitte in Anführungszeichen sollten mit doppelten Anführungszeichen "
+"umgeben werden:"
+
+#. Tag: programlisting
+#: Text.xml:36
+#, no-c-format
+msgid ""
+"The other guy said:\n"
+"        \n"
+"\"Nyeah nyeah-nee \n"
+"/nyeah/ nyeah!\"\n"
+"\n"
+"But what do you think he means by \"nyeah-nee\"?"
+msgstr ""
+"The other guy said:\n"
+"        \n"
+"\"Nyeah nyeah-nee \n"
+"/nyeah/ nyeah!\"\n"
+"\n"
+"But what do you think he means by \"nyeah-nee\"?"
+
+#. Tag: programlisting
+#: Text.xml:37
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"The other guy said:\n"
+"&lt;/p&gt;\n"
+"        \n"
+"&lt;q&gt;Nyeah nyeah-nee\n"
+"&lt;i&gt;nyeah&lt;/i&gt; nyeah!&lt;/q&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"But what do you think he means by &lt;q&gt;nyeah-nee&lt;/q&gt;?\n"
+"&lt;/p&gt;"
+msgstr ""
+"&lt;p&gt;\n"
+"The other guy said:\n"
+"&lt;/p&gt;\n"
+"        \n"
+"&lt;q&gt;Nyeah nyeah-nee\n"
+"&lt;i&gt;nyeah&lt;/i&gt; nyeah!&lt;/q&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"But what do you think he means by &lt;q&gt;nyeah-nee&lt;/q&gt;?\n"
+"&lt;/p&gt;"
+
+#. Tag: title
+#: Text.xml:41
+#, no-c-format
+msgid "Entering code and text with special characters"
+msgstr "Eingabe von Code und Text mit Sonderzeichen"
+
+#. Tag: para
+#: Text.xml:42
+#, no-c-format
+msgid ""
+"Special characters such as <literal>*</literal>, <literal>|</literal> and "
+"<literal>#</literal>, along with HTML characters such as <literal>&lt;</"
+"literal>, <literal>&gt;</literal> and <literal>&amp;</literal> may be "
+"escaped using <literal>\\</literal>:"
+msgstr "Sonderzeichen wie <literal>*</literal>, <literal>|</literal> und <literal>#</literal> sowie HTML-Zeichen wie <literal>&lt;</literal>, <literal>&gt;</literal> und <literal>&amp;</literal> können unter Verwendung von <literal>\\</literal> \"escaped\" werden:"
+
+#. Tag: programlisting
+#: Text.xml:45
+#, no-c-format
+msgid ""
+"You can write down equations like 2\\*3\\=6 and HTML tags\n"
+"like \\&lt;body\\&gt; using the escape character: \\\\."
+msgstr ""
+"Sie können Gleichungen wie 2\\*3\\=6 und HTML-Tags\n"
+"wie \\&lt;body\\&gt; unter Verwendung des Umschaltzechens: \\\\ schreiben."
+
+#. Tag: programlisting
+#: Text.xml:46
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"You can write down equations like 2*3=6 and HTML tags\n"
+"like &lt;body&gt; using the escape character: \\.\n"
+"&lt;/p&gt;"
+msgstr ""
+"&lt;p&gt;\n"
+"Sie können Gleichungen wie 2*3=6 und HTML-Tags\n"
+"wie &lt;body&gt; unter Verwendung des Umschaltzechens: \\.\n"
+"&lt;/p&gt; schreiben."
+
+#. Tag: para
+#: Text.xml:47
+#, no-c-format
+msgid "And we can quote code blocks using backticks:"
+msgstr "Und wir können unter Verwendung von Backticks Code-Blöcke quotieren:"
+
+#. Tag: programlisting
+#: Text.xml:50
+#, no-c-format
+msgid ""
+"My code doesn&#39;t work:\n"
+"\n"
+"`for (int i=0; i&lt;100; i--)\n"
+"{\n"
+"    doSomething();\n"
+"}`\n"
+"\n"
+"Any ideas?"
+msgstr ""
+"My code doesn&#39;t work:\n"
+"\n"
+"`for (int i=0; i&lt;100; i--)\n"
+"{\n"
+"    doSomething();\n"
+"}`\n"
+"\n"
+"Any ideas?"
+
+#. Tag: programlisting
+#: Text.xml:51
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"My code doesn&#39;t work:\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;pre&gt;for (int i=0; i&lt;100; i--)\n"
+"{\n"
+"    doSomething();\n"
+"}&lt;/pre&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"Any ideas?\n"
+"&lt;/p&gt;"
+msgstr ""
+"&lt;p&gt;\n"
+"My code doesn&#39;t work:\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;pre&gt;for (int i=0; i&lt;100; i--)\n"
+"{\n"
+"    doSomething();\n"
+"}&lt;/pre&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"Any ideas?\n"
+"&lt;/p&gt;"
+
+#. Tag: title
+#: Text.xml:55
+#, no-c-format
+msgid "Links"
+msgstr "Links"
+
+#. Tag: para
+#: Text.xml:56
+#, no-c-format
+msgid "A link may be created using the following syntax:"
+msgstr "Ein Link kann mittels der folgenden Syntax erstellt werden:"
+
+#. Tag: programlisting
+#: Text.xml:59
+#, no-c-format
+msgid "Go to the Seam website at [=&gt;http://jboss.com/products/seam]."
+msgstr "Gehen Sie auf die Seam-Website unter [=&gt;http://jboss.com/products/seam]."
+
+#. Tag: para
+#: Text.xml:60
+#, no-c-format
+msgid "Or, if you want to specify the text of the link:"
+msgstr "Oder, wenn Sie den Text des Links festlegen möchten:"
+
+#. Tag: programlisting
+#: Text.xml:63
+#, no-c-format
+msgid "Go to [the Seam website=&gt;http://jboss.com/products/seam]."
+msgstr "Gehen Sie auf [die Seam-Website=&gt;http://jboss.com/products/seam]."
+
+#. Tag: para
+#: Text.xml:64
+#, no-c-format
+msgid ""
+"For advanced users, it is even possible to customize the Seam Text parser to "
+"understand wikiword links written using this syntax."
+msgstr ""
+"Fortgeschrittene Benutzer können sogar den Seam Text Parser anpassen, damit "
+"dieser unter Verwendung dieser Syntax geschriebene \"wikiword\"-Links "
+"versteht."
+
+#. Tag: title
+#: Text.xml:70
+#, no-c-format
+msgid "Entering HTML"
+msgstr "Eingabe von HTML"
+
+#. Tag: para
+#: Text.xml:71
+#, no-c-format
+msgid ""
+"Text may even include a certain limited subset of HTML (don&#39;t worry, the "
+"subset is chosen to be safe from cross-site scripting attacks). This is "
+"useful for creating links:"
+msgstr ""
+"Text kann sogar einen bestimmten, begrenzten Untersatz an HTML enthalten (keine Sorge, der Untersatz wird so ausgewählt, dass er sicher vor Site übergreifenden Skripting-Angriffen ist). Dies ist hilfreich beim Erstellen "
+"von Links:"
+
+#. Tag: programlisting
+#: Text.xml:74
+#, no-c-format
+msgid ""
+"You might want to link to &lt;a href=\"http://jboss.com/products/seam\"&gt;"
+"something\n"
+"cool&lt;/a&gt;, or even include an image: &lt;img src=\"/logo.jpg\"/&gt;"
+msgstr ""
+"Sie können ein Link zu &lt;a href=\"http://jboss.com/products/seam\"&gt;"
+"something\n"
+"cool&lt;/a&gt; legen oder sogar eine Abbildung: &lt;img src=\"/logo.jpg\"/"
+"&gt; mit einschließen"
+
+#. Tag: para
+#: Text.xml:75
+#, no-c-format
+msgid "And for creating tables:"
+msgstr "Und zum Erstellen von Tabellen:"
+
+#. Tag: programlisting
+#: Text.xml:78
+#, no-c-format
+msgid ""
+"&lt;table&gt;\n"
+"    &lt;tr&gt;&lt;td&gt;First name:&lt;/td&gt;&lt;td&gt;Gavin&lt;/td&gt;&lt;/"
+"tr&gt;\n"
+"    &lt;tr&gt;&lt;td&gt;Last name:&lt;/td&gt;&lt;td&gt;King&lt;/td&gt;&lt;/"
+"tr&gt;\n"
+"&lt;/table&gt;"
+msgstr ""
+"&lt;table&gt;\n"
+"    &lt;tr&gt;&lt;td&gt;First name:&lt;/td&gt;&lt;td&gt;Gavin&lt;/td&gt;&lt;/"
+"tr&gt;\n"
+"    &lt;tr&gt;&lt;td&gt;Last name:&lt;/td&gt;&lt;td&gt;King&lt;/td&gt;&lt;/"
+"tr&gt;\n"
+"&lt;/table&gt;"
+
+#. Tag: para
+#: Text.xml:79
+#, no-c-format
+msgid "But you can do much more if you want!"
+msgstr "Aber Sie können viel mehr machen, wenn Sie möchten!"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Tools.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Tools.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Tools.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,934 @@
+# translation of Tools.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Jasna Dimanoski <jdimanos at redhat.com>, 2007, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Tools\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2008-04-19 13:57+1000\n"
+"Last-Translator: Jasna Dimanoski <jdimanos at redhat.com>\n"
+"Language-Team:  <de at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Tools.xml:6
+#, no-c-format
+msgid "Seam tools"
+msgstr "Seam Tools"
+
+#. Tag: title
+#: Tools.xml:8
+#, no-c-format
+msgid "jBPM designer and viewer"
+msgstr "jBPM-Designer und Viewer"
+
+#. Tag: para
+#: Tools.xml:9
+#, no-c-format
+msgid ""
+"The jBPM designer and viewer will let you design and view in a nice way your "
+"business processes and your pageflows. This convenient tool is part of JBoss "
+"Eclipse IDE and more details can be found in the jBPM&#39;s documentation "
+"(http://docs.jboss.com/jbpm/v3/gpd/)"
+msgstr ""
+"Der jBPM-Designer und Viewer gestattet ein komfortables Design und eine "
+"ansprechende Ansicht Ihrer Business-Prozesse und Pageflows. Dieses "
+"praktische Tool ist Teil von JBoss Eclipse IDE, und weitere Details finden "
+"Sie in der jBPM-Dokumentation (http://docs.jboss.com/jbpm/v3/gpd/)"
+
+#. Tag: title
+#: Tools.xml:13
+#, no-c-format
+msgid "<title>Business process designer</title>"
+msgstr "<title>Business-Prozess Designer</title>"
+
+#. Tag: para
+#: Tools.xml:14
+#, no-c-format
+msgid "This tool lets you design your own business process in a graphical way."
+msgstr ""
+"Mit diesem Tool können Sie Ihren eigenen Business-Prozess auf grafische "
+"Weise entwerfen."
+
+#. Tag: screeninfo
+#: Tools.xml:17 Tools.xml:33
+#, no-c-format
+msgid "<screeninfo>Business process designer</screeninfo>"
+msgstr "<screeninfo>Business-Prozess Designer</screeninfo>"
+
+#. Tag: title
+#: Tools.xml:29
+#, no-c-format
+msgid "Pageflow viewer"
+msgstr "Pageflow Viewer"
+
+#. Tag: para
+#: Tools.xml:30
+#, no-c-format
+msgid ""
+"This tool let you design to some extend your pageflows and let you build "
+"graphical views of them so you can easily share and compare ideas on how it "
+"should be designed."
+msgstr ""
+"Dieses Tool ermöglicht es Ihnen, Ihre Pageflows bis zu einem gewissen Grad "
+"zu entwerfen und grafische Ansichten von diesen zu \"builden\", so dass Sie "
+"Entwurfsideen dazu bequem mitteilen und vergleichen können."
+
+#. Tag: title
+#: Tools.xml:47
+#, no-c-format
+msgid "CRUD-application generator"
+msgstr "CRUD-Applikationsgenerator"
+
+#. Tag: para
+#: Tools.xml:48
+#, no-c-format
+msgid ""
+"This chapter, will give you a short overview of the support for Seam that is "
+"available in the Hibernate Tools. Hibernate Tools is a set of tools for "
+"working with Hibernate and related technologies, such as JBoss Seam and "
+"EJB3. The tools are available as a set of eclipse plugins and Ant tasks. You "
+"can download the Hibernate Tools from the JBoss Eclipse IDE or Hibernate "
+"Tools websites."
+msgstr ""
+"Dieses Kapitel gibt Ihnen einen Kurzüberblick über den in den Hibernate "
+"Tools verfügbaren Support für Seam. Bei Hibernate Tools handelt es sich um "
+"einen Satz von Tools für die Arbeit mit Hibernate und verwandten "
+"Technologien wie JBoss Seam und EJB3. DIe Tools sind als Satz von Eclipse-"
+"Plugins und Ant-Tasks verfügbar. Sie können die Hibernate Tools von den "
+"JBoss Eclipse IDE oder Hibernate Tools Websites herunterladen."
+
+#. Tag: para
+#: Tools.xml:51
+#, no-c-format
+msgid ""
+"The specific support for Seam that is currently available is generation of a "
+"fully functional Seam based CRUD-application. The CRUD-application can be "
+"generated based on your existing Hibernate mapping files or EJB3 annotated "
+"POJO&#39;s or even fully reverse engineered from your existing database "
+"schema."
+msgstr ""
+"Beim spezifischen Support für Seam der aktuell verfügbar ist, handelt es "
+"sich um die Generierung einer voll funktionalen Seam-basierten CRUD-"
+"Anwendung. Die Generierung der CRUD-Anwendung kann basierend auf Ihren bestehenden Hibernate Mapping-Dateien oder EJB3-annotierten POJOs erfolgen oder sogar mittels \"reverse Engineering\" aus Ihrem bestehenden "
+"Datenbankschema erfolgen."
+
+#. Tag: para
+#: Tools.xml:54
+#, no-c-format
+msgid ""
+"The following sections is focused on the features required to understand for "
+"usage with Seam. The content is derived from the the Hibernate Tools "
+"reference documentation. Thus if you need more detailed information please "
+"refer to the Hibernate Tools documentation."
+msgstr ""
+"Der folgende Abschnitt befasst sich mit den Features, deren Verständnis für "
+"die Verwendung mit Seam erforderlich ist. Der Inhalt ist der "
+"Referenzdokumentation von Hibernate Tools entlehnt. Wenn Sie also weitere "
+"Informationen benötigen, so sehen Sie hierzu bitte die Hibernate Tools "
+"Dokumentation."
+
+#. Tag: title
+#: Tools.xml:58
+#, no-c-format
+msgid "Creating a Hibernate configuration file"
+msgstr "Erstellen einer Hibernate Konfigurationsdatei"
+
+#. Tag: para
+#: Tools.xml:59
+#, no-c-format
+msgid ""
+"To be able to reverse engineer and generate code a hibernate.properties or "
+"hibernate.cfg.xml file is needed. The Hibernate Tools provide a wizard for "
+"generating the hibernate.cfg.xml file if you do not already have such file."
+msgstr ""
+"Um \"reverse engineering\" auszuführen und Code zu generieren sind eine "
+"hibernate.properties oder hibernate.cfg.xml-Datei notwendig. Die Hibernate "
+"Tools liefern einen Wizard zur Generierung der hibernate.cfg.xml-Datei, wenn "
+"Sie eine solche nicht bereits besitzen."
+
+#. Tag: para
+#: Tools.xml:62
+#, no-c-format
+msgid ""
+"Start the wizard by clicking \"New Wizard\" (Ctrl+N), select the Hibernate/"
+"Hibernate Configuration file (cfg.xml) wizard and press \"Next\". After "
+"selecting the wanted location for the hibernate.cfg.xml file, you will see "
+"the following page:"
+msgstr ""
+"Starten Sie den Wizard durch Klicken auf \"New Wizard\" (\"Neuer Wizard\" "
+"oder Ctrl+N), wählen Sie die Hibernate/Hibernate Konfigurationsdatei (cfg."
+"xml) Wizard und drücken Sie \"Next\" (\"Weiter\"). Nach Auswahl des "
+"gewünschten Ortes für die hibernate.cfg.xml Datei, sehen Sie die folgende "
+"Seite:"
+
+#. Tag: para
+#: Tools.xml:73
+#, no-c-format
+msgid ""
+"Tip: The contents in the combo boxes for the JDBC driver class and JDBC URL "
+"change automatically, depending on the Dialect and actual driver you have "
+"chosen."
+msgstr ""
+"Tipp: Die Inhalte in den Combo-Kästchen für die JDBC-Treiberklasse und die "
+"JDBC-URL ändern sich automatisch, je nach Dialekt und dem tatsächlich "
+"gewählten Treiber."
+
+#. Tag: para
+#: Tools.xml:76
+#, no-c-format
+msgid ""
+"Enter your configuration information in this dialog. Details about the "
+"configuration options can be found in Hibernate reference documentation."
+msgstr ""
+"Geben Sie Ihre Konfigurationsinformationen in diesem Dialog ein. "
+"Einzelheiten zu Konfigurationsoptionen finden Sie in der Hibernate "
+"Referenzdokumentation."
+
+#. Tag: para
+#: Tools.xml:79
+#, no-c-format
+msgid ""
+"Press \"Finish\" to create the configuration file, after optionally creating "
+"a Console onfiguration, the hibernate.cfg.xml will be automatically opened "
+"in an editor. The last option \"Create Console Configuration\" is enabled by "
+"default and when enabled i will automatically use the hibernate.cfg.xml for "
+"the basis of a \"Console Configuration\""
+msgstr ""
+"Drücken Sie auf \"Finish\" (\"Beenden\"), um die Konfigurationsdatei zu "
+"erstellen. Nach optionalem Erstellen einer Konsolenkonfiguration wird "
+"hibernate.cfg.xml automatisch in einem Editor geöffnet. Die letzte Option "
+"\"Create Console Configuration\" (\"Konsolenkonfiguration erstellen\") ist "
+"standardmäßig aktiviert, und wenn aktiviert wird automatisch hibernate.cfg."
+"xml als Grundlage einer \"Konsolenkonfiguration\" verwendet."
+
+#. Tag: title
+#: Tools.xml:85
+#, no-c-format
+msgid "<title>Creating a Hibernate Console configuration</title>"
+msgstr "<title>Erstellen einer Hibernate Konsolenkonfiguration</title>"
+
+#. Tag: para
+#: Tools.xml:86
+#, no-c-format
+msgid ""
+"A Console Configuration describes to the Hibernate plugin which "
+"configuration files should be used to configure hibernate, including which "
+"classpath is needed to load the POJO&#39;s, JDBC drivers etc. It is required "
+"to make usage of query prototyping, reverse engineering and code generation. "
+"You can have multiple named console configurations. Normally you would just "
+"need one per project, but more (or less) is definitly possible."
+msgstr ""
+"Eine Konsolenkonfiguration beschreibt dem Hibernate-Plugin, welche "
+"Konfigurationsdateien zur Konfiguration von Hibernate, verwendet werden "
+"sollten, einschließlich welcher Klassenpfad zum Laden der POJOs, JDBC-"
+"Treiber usw. benötigt wird. Der Gebrauch von Anfragen-Prototyping, \"reverse Engineering\" und Code-Generierung ist erforderlich. Sie können mehrere benannte Konsolenkonfigurationen besitzen. Normalerweise würden Sie nur eine pro Projekt benötigen, jedoch sind mehr (oder weniger) definitiv möglich."
+
+#. Tag: para
+#: Tools.xml:89
+#, no-c-format
+msgid ""
+"You create a console configuration by running the Console Configuration "
+"wizard, shown in the following screenshot. The same wizard will also be used "
+"if you are coming from the hibernate.cfg.xml wizard and had enabled \"Create "
+"Console Configuration\"."
+msgstr ""
+"Eine Konsolenkonfiguration wird durch Ausführen des Wizards zur "
+"Konsolenkonfiguration erstellt, der im folgenden Screenshot dargestellt ist. "
+"Derselbe Wizard wird auch verwendet, wenn Sie über den hibernate.cfg.xml "
+"Wizard kommen und \"Create Console Configuration\" (\"Konsolenkonfiguration "
+"erstellen\") aktiviert ist."
+
+#. Tag: caption
+#: Tools.xml:100
+#, no-c-format
+msgid "<caption>Creating a Hibernate Console configuration</caption>"
+msgstr "<caption>Erstellen einer Hibernate Konsolenkonfiguration</caption>"
+
+#. Tag: para
+#: Tools.xml:102
+#, no-c-format
+msgid ""
+"The following table describes the relevant settings. The wizard can "
+"automatically detect default values for most of these if you started the "
+"Wizard with the relevant java project selected"
+msgstr ""
+"Die folgende Tabelle beschreibt die relevanten Einstellungen. The wizard can "
+"automatically detect default values for most of these if you started the "
+"Wizard with the relevant java project selected"
+
+#. Tag: title
+#: Tools.xml:106
+#, no-c-format
+msgid "Hibernate Console Configuration Parameters"
+msgstr "Parameter der Hibernate Konsolenkonfiguration"
+
+#. Tag: para
+#: Tools.xml:114
+#, no-c-format
+msgid "Parameter"
+msgstr "Parameter"
+
+#. Tag: para
+#: Tools.xml:119 Tools.xml:306 Tools.xml:456
+#, no-c-format
+msgid "Description"
+msgstr "Beschreibung"
+
+#. Tag: para
+#: Tools.xml:124
+#, no-c-format
+msgid "Auto detected value"
+msgstr "Automatisch erkannter Wert"
+
+#. Tag: para
+#: Tools.xml:133
+#, no-c-format
+msgid "Name"
+msgstr "Name"
+
+#. Tag: para
+#: Tools.xml:138
+#, no-c-format
+msgid "The unique name of the configuration"
+msgstr "Der eindeutige Name der Konfiguration"
+
+#. Tag: para
+#: Tools.xml:143
+#, no-c-format
+msgid "Name of the selected project"
+msgstr "Name des gewählten Projekts"
+
+#. Tag: para
+#: Tools.xml:150
+#, no-c-format
+msgid "Property file"
+msgstr "Property-Datei"
+
+#. Tag: para
+#: Tools.xml:155
+#, no-c-format
+msgid "Path to a hibernate.properties file"
+msgstr "Pfad zu einer hibernate.properties-Datei"
+
+#. Tag: para
+#: Tools.xml:160
+#, no-c-format
+msgid "First hibernate.properties file found in the selected project"
+msgstr "Die erste im gewählten Projekt aufgefundene hibernate.properties-Datei"
+
+#. Tag: para
+#: Tools.xml:167
+#, no-c-format
+msgid "Configuration file"
+msgstr "Konfigurationsdatei"
+
+#. Tag: para
+#: Tools.xml:172
+#, no-c-format
+msgid "Path to a hibernate.cfg.xml file"
+msgstr "Pfad zu einer hibernate.cfg.xml-Datei"
+
+#. Tag: para
+#: Tools.xml:177
+#, no-c-format
+msgid "First hibernate.cfg.xml file found in the selected project"
+msgstr "Die erste aufgefundene hibernate.cfg.xml-Datei für das gewählte Projekt"
+
+#. Tag: para
+#: Tools.xml:184
+#, no-c-format
+msgid "Enable Hibernate ejb3/annotations"
+msgstr "Hibernate ejb3/Annotationen aktivieren"
+
+#. Tag: para
+#: Tools.xml:189
+#, no-c-format
+msgid ""
+"Selecting this option enables usage of annotated classes. hbm.xml files are "
+"of course still possible to use too. This feature requires running the "
+"Eclipse IDE with a JDK 5 runtime, otherwise you will get classloading and/or "
+"version errors."
+msgstr ""
+"Die Auswahl dieser Option aktiviert die Verwendung annotierter Klassen. hbm."
+"xml-Dateien können natürlich ebenfalss noch benutzt werden. Dieses Feature "
+"erfordert das Ausführen von Eclipse IDE mit einer JDK 5 Runtime, da es sonst "
+"zu Fehlern beim Laden von Klassen und/oder Versionen kommt."
+
+#. Tag: para
+#: Tools.xml:194
+#, no-c-format
+msgid "Not enabled"
+msgstr " Nicht aktiviert"
+
+#. Tag: para
+#: Tools.xml:201
+#, no-c-format
+msgid "Mapping files"
+msgstr "Mapping-Dateien"
+
+#. Tag: para
+#: Tools.xml:206
+#, no-c-format
+msgid ""
+"List of additional mapping files that should be loaded. Note: A hibernate."
+"cfg.xml can also contain mappings. Thus if these a duplicated here, you will "
+"get \"Duplicate mapping\" errors when using the console configuration."
+msgstr ""
+"Liste zusätzlicher Mapping-Dateien, die geladen werden sollten. Hinweis: "
+"Eine hibernate.cfg.xml kann ebenfalls Mappings enthalten. Wenn diese hier "
+"dupliziert sind, erhalten Sie daher \"Doppeltes Mapping\" Fehler bei der "
+"Verwendung der Konsolenkonfiguration."
+
+#. Tag: para
+#: Tools.xml:211
+#, no-c-format
+msgid ""
+"If no hibernate.cfg.xml file is found, all hbm.xml files found in the "
+"selected project"
+msgstr ""
+"Wird keine hibernate.cfg.xml-Datei aufgefunden, alle im gewählten Projekt "
+"aufgefundenen hbm.xml-Dateien"
+
+#. Tag: para
+#: Tools.xml:218
+#, no-c-format
+msgid "Classpath"
+msgstr "Klassenpfad"
+
+#. Tag: para
+#: Tools.xml:223
+#, no-c-format
+msgid ""
+"The classpath for loading POJO and JDBC drivers. Do not add Hibernate core "
+"libraries or dependencies, they are already included. If you get "
+"ClassNotFound errors then check this list for possible missing or redundant "
+"directories/jars."
+msgstr ""
+"Der Klassenpfad zum Laden von POJO und JDBC-Treibern. Fügen Sie keine  "
+"Hibernate Kernbibliotheken oder Dependencies hinzu, da diese bereits "
+"enthalten sind. Werden ClassNotFound-Fehler gemeldet, so prüfen Sie diese "
+"Liste auf möglicherweise fehlende oder überzählige Verzeichnisse/Jars."
+
+#. Tag: para
+#: Tools.xml:228
+#, no-c-format
+msgid ""
+"The default build output directory and any JARs with a class implementing "
+"java.sql.Driver in the selected project"
+msgstr ""
+"Das standardmäßige Ausgabenverzeichnis für den \"Build\" und jegliche JARs "
+"mit einer Klasse, die java.sql.Driver im gewählten Projekt implementiert"
+
+#. Tag: para
+#: Tools.xml:236
+#, no-c-format
+msgid ""
+"Clicking \"Finish\" creates the configuration and shows it in the "
+"\"Hibernate Configurations\" view"
+msgstr ""
+"Durch Klicken auf \"Finish\" (\"Beenden\") wird die Konfiguration erstellt "
+"und in der \"Hibernate Configurations\" (\"Hibernate Konfigurationen\") "
+"Ansicht dargestellt"
+
+#. Tag: caption
+#: Tools.xml:247
+#, no-c-format
+msgid "Console overview"
+msgstr "Konsolenüberblick"
+
+#. Tag: title
+#: Tools.xml:252
+#, no-c-format
+msgid "Reverse engineering and code generation"
+msgstr "\"Reverse Engineering\" und Code-Generierung"
+
+#. Tag: para
+#: Tools.xml:253
+#, no-c-format
+msgid ""
+"A very simple \"click-and-generate\" reverse engineering and code generation "
+"facility is available. It is this facility that allows you to generate the "
+"skeleton for a full Seam CRUD application."
+msgstr ""
+"Eine sehr einfache \"click-and-generate\" (klicken und generieren) Reverse "
+"Engineering und Code-Generierungseinrichtung ist verfügbar. Sie ist es, die "
+"die Generierung des Grundgerüsts für eine komplette Seam CRUD-Anwendung "
+"gestattet."
+
+#. Tag: para
+#: Tools.xml:256
+#, no-c-format
+msgid ""
+"To start working with this process, start the \"Hibernate Code Generation\" "
+"which is available in the toolbar via the Hibernate icon or via the \"Run/"
+"Hibernate Code Generation\" menu item."
+msgstr ""
+"Um die Arbeit mit diesem Prozess zu beginnen, starten Sie die \"Hibernate "
+"Code Generation\" (\"Hibernate Code-Generierung\"), die in der Symbolleiste "
+"via dem Hibernate-Symbol oder via dem Menüpunkt \"Run/Hibernate Code "
+"Generation\" (\"Hibernate Code-Generierung ausführen\") verfügbar ist."
+
+#. Tag: title
+#: Tools.xml:260
+#, no-c-format
+msgid "Code Generation Launcher"
+msgstr "Code-Generierungs-Launcher"
+
+#. Tag: para
+#: Tools.xml:261
+#, no-c-format
+msgid ""
+"When you click on \"Hibernate Code Generation\" the standard Eclipse "
+"launcher dialog will appear. In this dialog you can create, edit and delete "
+"named Hibernate code generation \"launchers\"."
+msgstr ""
+"Wenn Sie auf \"Hibernate Code Generation\" (\"Hibernate Code-Generierung\") "
+"klicken, so erscheint der standardmäßige Eclipse-Launcher-Dialog. In diesem "
+"Dialog können Sie \"Launcher\" zur Hibernate Code-Generierung erstellen, "
+"bearbeiten und löschen."
+
+#. Tag: para
+#: Tools.xml:272
+#, no-c-format
+msgid ""
+"The dialog has the standard tabs \"Refresh\" and \"Common\" that can be used "
+"to configure which directories should be automatically refreshed and various "
+"general settings launchers, such as saving them in a project for sharing the "
+"launcher within a team."
+msgstr ""
+"Der Dialog verfügt über die Standard-Tabs \"Refresh\" und \"Common\", die "
+"dazu verwendet werden können zu konfigurieren, welche Verzeichnisse "
+"automatisch neu geladen werden sollen sowie verschiedener allgemeiner "
+"Einstellungs-Launcher, etwa deren Speicherung in einem Projekt zur Freigabe "
+"des Launchers in einem Team."
+
+#. Tag: para
+#: Tools.xml:283
+#, no-c-format
+msgid ""
+"The first time you create a code generation launcher you should give it a "
+"meaningfull name, otherwise the default prefix \"New_Generation\" will be "
+"used."
+msgstr ""
+"Beim erstmaligen Erstellen eines Code-Generierungs-Launchers sollten Sie "
+"diesem einen bedeutungsvollen Namen geben, da sonst der standardmäßige "
+"Präfix \"New_Generation\" (\"Neue_Generierung\") verwendet wird."
+
+#. Tag: para
+#: Tools.xml:286
+#, no-c-format
+msgid ""
+"Note: The \"At least one exporter option must be selected\" is just a "
+"warning stating that for this launch to work you need to select an exporter "
+"on the Exporter tab. When an exporter has been selected the warning will "
+"disappear."
+msgstr ""
+"Hinweis: Bei \"At least one exporter option must be selected\" (\"Mindestens "
+"eine Exporter-Option muss ausgewählt werden\") handelt es sich lediglich um "
+"eine Warnung, die mitteilt, dass für diesen Launch ein Exporter aus dem "
+"Exporter-Tab gewählt werden muss. Wurde ein Exporter gewählt so verschwindet "
+"die Warnung."
+
+#. Tag: para
+#: Tools.xml:289
+#, no-c-format
+msgid "On the \"Main\" tab you the following fields:"
+msgstr "Am \"Haupt\"-Tab existieren folgende Felder:"
+
+#. Tag: title
+#: Tools.xml:293
+#, no-c-format
+msgid "Code generation \"Main\" tab fields"
+msgstr "\"Haupt\"-Tab-felder der Code-Generierung"
+
+#. Tag: para
+#: Tools.xml:301 Tools.xml:451
+#, no-c-format
+msgid "Field"
+msgstr "Feld"
+
+#. Tag: para
+#: Tools.xml:315
+#, no-c-format
+msgid "Console Configuration"
+msgstr "Konsolenkonfiguration"
+
+#. Tag: para
+#: Tools.xml:320
+#, no-c-format
+msgid ""
+"The name of the console configuration which should be used when code "
+"generating."
+msgstr ""
+"Der Name der Konsolenkonfiguration, die verwendet werden sollte, wenn Code "
+"generiert wird."
+
+#. Tag: para
+#: Tools.xml:327
+#, no-c-format
+msgid "Output directory"
+msgstr "Ausgabenverzeichnis"
+
+#. Tag: para
+#: Tools.xml:332
+#, no-c-format
+msgid ""
+"Path to a directory into where all output will be written by default. Be "
+"aware that existing files will be overwritten, so be sure to specify the "
+"correct directory."
+msgstr ""
+"Pfad zu einem Verzeichnis, in das standardmäßig sämtliche Ausgaben "
+"geschrieben werden. Bestehende Dateien werden überschreiben, stellen Sie "
+"daher sicher, dass Sie das korrekte Verzeichnis spezifizieren."
+
+#. Tag: para
+#: Tools.xml:339
+#, no-c-format
+msgid "Reverse engineer from JDBC Connection"
+msgstr "\"Reverse Engineer\" von der JDBC-Connection"
+
+#. Tag: para
+#: Tools.xml:344
+#, no-c-format
+msgid ""
+"If enabled the tools will reverse engineer the database available via the "
+"connection information in the selected Hibernate Console Configuration and "
+"generate code based on the database schema. If not enabled the code "
+"generation will just be based on the mappings already specified in the "
+"Hibernate Console configuration."
+msgstr ""
+"Falls aktiviert, so führen die Tools ein \"Reverse Engineering\" der "
+"Datenbank durch. Dies geschieht mittels der verfügbaren "
+"Verbindungsinformationen der gewählten Hibernate Konsolenkonfiguration, und "
+"sie generieren auf dem Datenbankschema basierenden Code. Falls nicht "
+"aktiviert, so basiert die Code-Generierung auf den bereits in der Hibernate "
+"Konsolekonfiguration spezifizierten Mappings."
+
+#. Tag: para
+#: Tools.xml:351
+#, no-c-format
+msgid "Package"
+msgstr "Paket"
+
+#. Tag: para
+#: Tools.xml:356
+#, no-c-format
+msgid ""
+"The package name here is used as the default package name for any entities "
+"found when reverse engineering."
+msgstr ""
+"Der Paketname hier wird als Standard-Paketname für jegliche beim \"Reverse "
+"Engineering\" aufgefundene Entities verwendet."
+
+#. Tag: para
+#: Tools.xml:363
+#, no-c-format
+msgid "reveng.xml"
+msgstr "reveng.xml"
+
+#. Tag: para
+#: Tools.xml:368
+#, no-c-format
+msgid ""
+"Path to a reveng.xml file. A reveng.xml file allows you to control certain "
+"aspects of the reverse engineering. e.g. how jdbc types are mapped to "
+"hibernate types and especially important which tables are included/excluded "
+"from the process. Clicking \"setup\" allows you to select an existing reveng."
+"xml file or create a new one.."
+msgstr ""
+"Pfad zu einer reveng.xml-Datei. Eine reveng.xml-Datei gestattet es Ihnen, "
+"bestimmte Aspekte des \"Reverse Engineering\" zu steuern, etwa wie jdbc-"
+"Typen zu Hibernate-Typen gemappt werden und - besonders wichtig - welche "
+"Tabellen bei diesem Prozess beinhaltet bzw. ausgeschlossen sind. Das Klicken "
+"auf \"Setup\" erlaubt es Ihnen, eine bestehende reveng.xml-Datei auszuwählen "
+"oder eine neue zu erstellen."
+
+#. Tag: para
+#: Tools.xml:375
+#, no-c-format
+msgid "reveng. strategy"
+msgstr "reveng.-Strategie"
+
+#. Tag: para
+#: Tools.xml:380
+#, no-c-format
+msgid ""
+"If reveng.xml does not provide enough customization you can provide your own "
+"implementation of an ReverseEngineeringStrategy. The class need to be in the "
+"claspath of the Console Configuration, otherwise you will get class not "
+"found exceptions."
+msgstr ""
+"Falls reveng.xml nicht genügend kundenspezifische Anpassung bietet, so "
+"können Sie Ihre eigene Implementierung einer ReverseEngineeringStrategy "
+"bereitstellen. Die Klasse muss sich im Klassenpfad der Konsolenkonfiguration "
+"befinden, andernfalls erhalten Sie \"class not found\" (\"Klasse nicht "
+"gefunden\") Ausnahmen."
+
+#. Tag: para
+#: Tools.xml:387
+#, no-c-format
+msgid "Generate basic typed composite ids"
+msgstr "Generieren zusammengesetzter ids des Grundtyps"
+
+#. Tag: para
+#: Tools.xml:392
+#, no-c-format
+msgid ""
+"This field should always be enabled when generating the Seam CRUD "
+"application. A table that has a multi-colum primary key a &lt;composite-"
+"id&gt; mapping will always be created. If this option is enabled and there "
+"are matching foreign-keys each key column is still considered a &#39;"
+"basic&#39; scalar (string, long, etc.) instead of a reference to an entity. "
+"If you disable this option a &lt;key-many-to-one&gt; instead. Note: a &lt;"
+"many-to-one&gt; property is still created, but is simply marked as non-"
+"updatable and non-insertable."
+msgstr ""
+"Dieses Feld sollte stets aktiviert sein, wenn die Seam CRUD-Anwendung "
+"generiert wird. Eine Tabelle mit mehrspaltigem Primärschlüssel, einem &lt;"
+"composite-id&gt;-Mapping wird ebenfalls immer erstellt. Ist diese Option "
+"aktiviert und es existieren übereinstimmende Fremdschlüssel, so wird jede "
+"Schlüsselspalte nach wie vor als &#39;grundlegend&#39; skalar (string, long, usw.) angesehen statt als Verweis auf eine Entity. Falls Sie diese Option deaktivieren &lt;key-many-to-one&gt; stattdessen. Hinweis: Eine &lt;many-to-one&gt;-Property wird nach wie vor erstellt, wird aber einfach als nicht aktualisierbar und nicht einfügbar markiert."
+
+#. Tag: para
+#: Tools.xml:399
+#, no-c-format
+msgid "Use custom templates"
+msgstr "Angepasste Vorlagen verwenden (\"custom templates\")"
+
+#. Tag: para
+#: Tools.xml:404
+#, no-c-format
+msgid ""
+"If enabled, the Template directory will be searched first when looking up "
+"the velocity templates, allowing you to redefine how the individual "
+"templates process the hibernate mapping model."
+msgstr ""
+"Falls aktiviert wird zunächst das \"Template\"-Verzeichnis nach \"Velocity\"-"
+"Vorlagen durchsucht, was es Ihnen erlaubt neu zu definieren, wie die "
+"einzelnen Vorlagen das Hibernate Mapping-Modell verarbeiten."
+
+#. Tag: para
+#: Tools.xml:411
+#, no-c-format
+msgid "Template directory"
+msgstr "Vorlagenverzeichnis"
+
+#. Tag: para
+#: Tools.xml:416
+#, no-c-format
+msgid "A path to a directory with custom velocity templates."
+msgstr "Ein Pfad zu einem Verzeichnis mit angepassten Velocity-Vorlagen."
+
+#. Tag: title
+#: Tools.xml:427
+#, no-c-format
+msgid "Exporters"
+msgstr "Exporter"
+
+#. Tag: para
+#: Tools.xml:428
+#, no-c-format
+msgid ""
+"The exporters tab is used to specify which type of code that should be "
+"generated. Each selection represents an \"Exporter\" that are responsible "
+"for generating the code, hence the name."
+msgstr ""
+"Der Exporter-Tab wird verwendet um festzulegen, welche Art von Code "
+"generiert werden soll. Jede Auswahl repräsentiert einen \"Exporter\", der "
+"für die Generierung von Code verantwortlich ist, daher auch der Name."
+
+#. Tag: para
+#: Tools.xml:439
+#, no-c-format
+msgid ""
+"The following table describes in short the various exporters. The most "
+"relevant for Seam is of course the \"JBoss Seam Skeleton app\"."
+msgstr ""
+"Die folgende Tabelle beschreibt in Kürze die verschiedenen Exporter. Die für "
+"Seam relevanteste ist natürlich die \"JBoss Seam Skeleton app\"."
+
+#. Tag: title
+#: Tools.xml:443
+#, no-c-format
+msgid "Code generation \"Exporter\" tab fields"
+msgstr "\"Exporter\"-Tab-Felder zur Code-Generierung"
+
+#. Tag: para
+#: Tools.xml:465
+#, no-c-format
+msgid "Generate domain code"
+msgstr "Domain-Code generieren"
+
+#. Tag: para
+#: Tools.xml:470
+#, no-c-format
+msgid ""
+"Generates POJO&#39;s for all the persistent classes and components found in "
+"the given Hibernate configuration."
+msgstr "Generiert POJO&#39;s für alle persistenten Klassen und Komponenten, die in der vorgegebenen Hibernate-Konfiguration gefunden werden."
+
+#. Tag: para
+#: Tools.xml:477
+#, no-c-format
+msgid "JDK 1.5 constructs"
+msgstr "JDK 1.5-Konstrukte"
+
+#. Tag: para
+#: Tools.xml:482
+#, no-c-format
+msgid "When enabled the POJO&#39;s will use JDK 1.5 constructs."
+msgstr "Wenn aktiviert, verwenden die POJO&#39;s JDK 1.5-Konstrukte."
+
+#. Tag: para
+#: Tools.xml:489
+#, no-c-format
+msgid "EJB3/JSR-220 annotations"
+msgstr "EJB3/JSR-220-Annotationen"
+
+#. Tag: para
+#: Tools.xml:494
+#, no-c-format
+msgid ""
+"When enabled the POJO&#39;s will be annotated according to the EJB3/JSR-220 "
+"persistency specification."
+msgstr "Wenn aktiviert, so werden die POJO&#39;s gemäß der EJB3/JSR-220 Persistenz-Spezifikation annotiert."
+
+#. Tag: para
+#: Tools.xml:501
+#, no-c-format
+msgid "Generate DAO code"
+msgstr "DAO-Code generieren"
+
+#. Tag: para
+#: Tools.xml:506
+#, no-c-format
+msgid "Generates a set of DAO&#39;s for each entity found."
+msgstr "Generiert einen Satz von DAO&#39;s für jede aufgefundene Entity."
+
+#. Tag: para
+#: Tools.xml:513
+#, no-c-format
+msgid "Generate Mappings"
+msgstr "Mappings generieren"
+
+#. Tag: para
+#: Tools.xml:518
+#, no-c-format
+msgid "Generate mapping (hbm.xml) files for each entity"
+msgstr "Mapping (hbm.xml) Dateien für jede Entity generieren"
+
+#. Tag: para
+#: Tools.xml:525
+#, no-c-format
+msgid "Generate hibernate configuration file"
+msgstr "Hibernate Konfigurationsdatei generieren"
+
+#. Tag: para
+#: Tools.xml:530
+#, no-c-format
+msgid ""
+"Generate a hibernate.cfg.xml file. Used to keep the hibernate.cfg.xml "
+"uptodate with any new found mapping files."
+msgstr ""
+"Generiert eine hibernate.cfg.xmlDatei. Wird verwendet, um hibernate.cfg.xml "
+"hinsichtlich neu aufgefundener Mapping-Dateien zu aktualisieren."
+
+#. Tag: para
+#: Tools.xml:537
+#, no-c-format
+msgid "Generate schema html-documentation"
+msgstr "Generiert Schema html-Dokumentation"
+
+#. Tag: para
+#: Tools.xml:542
+#, no-c-format
+msgid ""
+"Generates set of html pages that documents the database schema and some of "
+"the mappings."
+msgstr ""
+"Generiert einen Satz von html-Satz, die das Datenbankschema und einige der "
+"Mappings dokumentiert."
+
+#. Tag: para
+#: Tools.xml:549
+#, no-c-format
+msgid "Generate JBoss Seam skeleton app (beta)"
+msgstr "Generiert JBoss Seam Skeleton App (beta)"
+
+#. Tag: para
+#: Tools.xml:554
+#, no-c-format
+msgid ""
+"Generates a complete JBoss Seam skeleton app. The generation will include "
+"annotated POJO&#39;s, Seam controller beans and a JSP for the presentation "
+"layer. See the generated readme.txt for how to use it."
+msgstr ""
+"Generiert eine vollständige JBoss Seam \"Skeleton\"-App. Die Generierung "
+"beinhaltet annotierte POJO&#39;s, Seam-Controller-Beans und eine JSP für das Presentation-Layer. Zur Verwendung siehe die generierte readme.txt."
+
+#. Tag: para
+#: Tools.xml:557
+#, no-c-format
+msgid ""
+"Note: this exporter generates a full application, including a build.xml thus "
+"you will get the best results if you use an output directory which is the "
+"root of your project."
+msgstr ""
+"Hinweis: Dieser Exporter generiert eine komplette Anwendung, einschließlich "
+"einer build.xml. Sie erhalten daher die betsen Ergebnisse, wenn Sie ein "
+"Ausgabenverzeichnis verwenden, das Root Ihres Projekts ist."
+
+#. Tag: title
+#: Tools.xml:568
+#, no-c-format
+msgid "Generating and using the code"
+msgstr "Den Code generieren und verwenden"
+
+#. Tag: para
+#: Tools.xml:569
+#, no-c-format
+msgid ""
+"When you have finished filling out the settings, simply press \"Run\" to "
+"start the generation of code. This might take a little while if you are "
+"reverse engineering from a database."
+msgstr ""
+"Wenn Sie mit dem Ausfüllen der Einstellungen fertig sind, drücken Sie "
+"einfach \"Run\" (Ausführen), um mit der Generierung von Code zu beginnen. "
+"Falls Sie von einer Datenbank Reverse Engineering ausführen, kann dies eine "
+"Weile dauern."
+
+#. Tag: para
+#: Tools.xml:572
+#, no-c-format
+msgid ""
+"When the generation have finished you should now have a complete skeleton "
+"Seam application in the output directory. In the output directory there is a "
+"<literal>readme.txt</literal> file describing the steps needed to deploy and "
+"run the example."
+msgstr ""
+"Ist die Generierung abgeschlossen, sollten Sie ein vollständiges Grundgerüst "
+"einer Seam-Anwendung im Ausgabenverzeichnis haben. Im Ausgabenverzeichnis "
+"existiert auch eine <literal>readme.txt</literal>-Datei, die die für das "
+"Deployment und die Ausführung des Beispiels notwendigen Schritte beschreibt."
+
+#. Tag: para
+#: Tools.xml:575
+#, no-c-format
+msgid ""
+"If you want to regenerate/update the skeleton code then simply run the code "
+"generation again by selecting the \"Hibernate Code Generation\" in the "
+"toolbar or \"Run\" menu. Enjoy."
+msgstr ""
+"Wenn Sie den Grundgerüst-Code (Skeleton-Code) erneut generieren/"
+"aktualisieren wollen, so führen Sie einfach die Code Generierung erneut "
+"durch, indem Sie die \"Hibernate Code-Generierung\" in der Symbolleiste oder "
+"im \"Run\"-Menü wählen."
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Tutorial.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Tutorial.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Tutorial.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,5429 @@
+# translation of Tutorial.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Jasna Dimanoski <jdimanos at redhat.com>, 2007, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Tutorial\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-02-04 23:29+0000\n"
+"PO-Revision-Date: 2008-02-26 05:04+1000\n"
+"Last-Translator: Jasna Dimanoski <jdimanos at redhat.com>\n"
+"Language-Team:  <de at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Tutorial.xml:6
+#, no-c-format
+msgid "Seam Tutorial"
+msgstr "Seam - Ãœbung mit Anleitung"
+
+#. Tag: title
+#: Tutorial.xml:8
+#, no-c-format
+msgid "Try the examples"
+msgstr "Probieren Sie die Beispiele aus"
+
+#. Tag: para
+#: Tutorial.xml:9
+#, no-c-format
+msgid ""
+"In this tutorial, we'll assume that you are using JBoss AS 4.2 with Seam, as "
+"in the case of JBoss Enterprise Application Platform."
+msgstr "In dieser Ãœbung mit Anleitung gehen wir davon aus, dass Sie JBoss AS 4.2 mit Seam verwenden, wie bei der JBoss Enterprise Application Platform der Fall."
+
+#. Tag: para
+#: Tutorial.xml:12
+#, no-c-format
+msgid "The directory structure of each example in Seam follows this pattern:"
+msgstr "Die Verzeichnisstruktur von jedem Beispiel in Seam folgt diesem Muster:"
+
+#. Tag: para
+#: Tutorial.xml:17
+#, no-c-format
+msgid ""
+"Web pages, images and stylesheets may be found in <filename>examples/"
+"<replaceable>registration</replaceable>/view</filename>"
+msgstr ""
+"Webseiten, Images und Stylesheets finden Sie in <filename>examples/"
+"<replaceable>registration</replaceable>/view</filename>"
+
+#. Tag: para
+#: Tutorial.xml:22
+#, no-c-format
+msgid ""
+"Resources such as deployment descriptors and data import scripts may be "
+"found in <filename>examples/<replaceable>registration</replaceable>/"
+"resources</filename>"
+msgstr ""
+"Ressourcen wie Deployment-Deskriptoren und Datenimport-Skripts finden Sie in <filename>examples/<replaceable>registration</replaceable>/"
+"resources</filename>"
+
+#. Tag: para
+#: Tutorial.xml:27
+#, no-c-format
+msgid ""
+"Java source code may be found in <filename>examples/"
+"<replaceable>registration</replaceable>/src</filename>"
+msgstr ""
+"Java-Quellcode befindet sich in <filename>examples/"
+"<replaceable>registration</replaceable>/src</filename>"
+
+#. Tag: para
+#: Tutorial.xml:32
+#, no-c-format
+msgid ""
+"The Ant build script is <filename>examples/<replaceable>registration</"
+"replaceable>/build.xml</filename>"
+msgstr ""
+"Das Ant Build-Skript ist <filename>examples/<replaceable>registration</"
+"replaceable>/build.xml</filename>"
+
+#. Tag: title
+#: Tutorial.xml:38
+#, no-c-format
+msgid "Running the examples on JBoss AS"
+msgstr "Das Ausführen der Beispiele auf JBoss AS"
+
+#. Tag: para
+#: Tutorial.xml:39
+#, no-c-format
+msgid ""
+"First, make sure you have Ant correctly installed, with <literal>&#36;"
+"ANT_HOME</literal> and <literal>&#36;JAVA_HOME</literal> set correctly. "
+"Next, make sure you set the location of your JBoss AS installation in the "
+"<literal>build.properties</literal> file in the root folder of your Seam "
+"installation. If you haven't already done so, start JBoss AS now by typing "
+"<literal>bin/run.sh</literal> or <literal>bin/run.bat</literal> in the root "
+"directory of your JBoss installation."
+msgstr "Vergewissern Sie sich zuerst, dass Ant korrekt installiert ist, und dass <literal>&#36;ANT_HOME</literal> und <literal>&#36;JAVA_HOME</literal> korrekt eingestellt sind. Stellen Sie anschließend sicher, dass der Speicherort Ihrer JBoss AS Installation sich in der <literal>build.properties</literal>-Datei im Root-Ordner Ihrer Seam-Installation befindet. Falls Sie es nicht bereits getan haben, starten Sie JBoss AS jetzt, indem Sie <literal>bin/run.sh</literal> oder <literal>bin/run.bat</literal> in das Root-Verzeichnis Ihrer JBoss Installation eingeben."
+
+#. Tag: para
+#: Tutorial.xml:42
+#, no-c-format
+msgid ""
+"By default the examples will deploy to the default configuration of the "
+"server. These examples should be deployed to the production configuration if "
+"they are to be used with JBoss Enterprise Application Platform 4.2, and the "
+"example <literal>build.xml</literal> file should be modified to reflect this "
+"before building and deploying. Two lines should be changed in this file:"
+msgstr "Standardmäßig deployen die Beispiele zur Standardkonfiguration des Servers. Diese Beispiele sollten zur Produktionskonfiguration deployt werden, wenn sie mit der JBoss Enterprise Application Platform 4.2 verwendet werden, und die Beispiel-<literal>build.xml</literal>-Datei sollte bearbeitet werden, damit dies aus ihr vor dem Build und dem Deployment ersichtlich ist. Zwei Zeilen sollten in dieser Datei geändert werden:"
+
+#. Tag: screen
+#: Tutorial.xml:45
+#, no-c-format
+msgid ""
+"&lt;property name=\"deploy.dir\"           value=\"${jboss.home}/server/"
+"production/deploy\"/&gt;"
+msgstr ""
+"&lt;property name=\"deploy.dir\"           value=\"${jboss.home}/server/"
+"production/deploy\"/&gt;"
+
+#. Tag: screen
+#: Tutorial.xml:46
+#, no-c-format
+msgid ""
+"&lt;property name=\"webroot.dir\"         \n"
+"        value=\"${deploy.dir}/jboss-web.deployer/ROOT.war\"/&gt;"
+msgstr ""
+"&lt;property name=\"webroot.dir\"         \n"
+"        value=\"${deploy.dir}/jboss-web.deployer/ROOT.war\"/&gt;"
+
+#. Tag: para
+#: Tutorial.xml:47
+#, no-c-format
+msgid ""
+"Now, build and deploy the example by typing <literal>ant deploy</literal> in "
+"the <filename>examples/<replaceable>registration</replaceable></filename> "
+"directory."
+msgstr ""
+"Führen Sie nun durch Eingabe von <literal>ant deploy</literal> in "
+"das <filename>examples/<replaceable>registration</replaceable></filename>-Verzeichnis Build und Deployment des Beispiels aus."
+
+#. Tag: para
+#: Tutorial.xml:50
+#, no-c-format
+msgid ""
+"Try it out by accessing <ulink url=\"http://localhost:8080/seam-registration/"
+"\"><literal>http://localhost:8080/seam-registration/</literal></ulink> with "
+"your web browser."
+msgstr ""
+"Probieren Sie es aus, indem Sie auf <ulink url=\"http://localhost:8080/seam-registration/"
+"\"><literal>http://localhost:8080/seam-registration/</literal></ulink> mittels Ihres Web-Browsers zugreifen."
+
+#. Tag: title
+#: Tutorial.xml:56
+#, no-c-format
+msgid "Running the examples on Tomcat"
+msgstr "Ausführen der Beispiele auf Tomcat"
+
+#. Tag: para
+#: Tutorial.xml:57
+#, no-c-format
+msgid ""
+"First, make sure you have Ant correctly installed, with <literal>&#36;"
+"ANT_HOME</literal> and <literal>&#36;JAVA_HOME</literal> set correctly. "
+"Next, make sure you set the location of your Tomcat installation in the "
+"<literal>build.properties</literal> file in the root folder of your Seam "
+"installation."
+msgstr ""
+"Vergewissern Sie sich zuerst, dass Ant korrekt installiert ist, und dass <literal>&#36;"
+"ANT_HOME</literal> und <literal>&#36;JAVA_HOME</literal> korrekt eingestellt sind. Stellen Sie anschließend sicher, dass der Speicherort Ihrer Tomcat Installation sich in der <literal>build.properties</literal>-Datei im Root-Ordner Ihrer Seam-Installation befindet."
+
+#. Tag: para
+#: Tutorial.xml:60
+#, no-c-format
+msgid ""
+"Now, build and deploy the example by typing <literal>ant deploy.tomcat</"
+"literal> in the <filename>examples/<replaceable>registration</replaceable></"
+"filename> directory."
+msgstr ""
+"Führen Sie nun durch Eingabe von <literal>ant deploy.tomcat</"
+"literal> in das <filename>examples/<replaceable>registration</replaceable></"
+"filename>-Verzeichnis Build und Deployment des Beispiels aus."
+
+#. Tag: para
+#: Tutorial.xml:63
+#, no-c-format
+msgid "Finally, start Tomcat."
+msgstr "Starten Sie dann Tomcat."
+
+#. Tag: para
+#: Tutorial.xml:66
+#, no-c-format
+msgid ""
+"Try it out by accessing <ulink url=\"http://localhost:8080/jboss-seam-"
+"registration/\"><literal>http://localhost:8080/jboss-seam-registration/</"
+"literal></ulink> with your web browser."
+msgstr ""
+"Probieren Sie es aus, indem Sie auf <ulink url=\"http://localhost:8080/jboss-seam-"
+"registration/\"><literal>http://localhost:8080/jboss-seam-registration/</"
+"literal></ulink> mittels Ihres Web-Browsers zugreifen."
+
+#. Tag: para
+#: Tutorial.xml:69
+#, no-c-format
+msgid ""
+"When you deploy the example to Tomcat, any EJB3 components will run inside "
+"the JBoss Embeddable EJB3 container, a complete standalone EJB3 container "
+"environment."
+msgstr "Wenn Sie das Beispiel nach Tomcat deployen, so werden etwaige EJB3-Komponenten innerhalb des JBoss Embeddable EJB3 Containers laufen, einer kompletten und eigenständigen EJB3-Container-Umgebung."
+
+#. Tag: title
+#: Tutorial.xml:75
+#, no-c-format
+msgid "Running the example tests"
+msgstr "Ausführen der Beispiel-Tests"
+
+#. Tag: para
+#: Tutorial.xml:76
+#, no-c-format
+msgid ""
+"Most of the examples come with a suite of TestNG integration tests. The "
+"easiest way to run the tests is to run <literal>ant testexample</literal> "
+"inside the <filename>examples/<replaceable>registration</replaceable></"
+"filename> directory. It is also possible to run the tests inside your IDE "
+"using the TestNG plugin."
+msgstr ""
+"Die meisten Beispiele werden mit einer Suite von TestNG Integrationstests geliefert. Die einfachste Weise, diese Tests auszuführen ist es, <literal>ant testexample</literal> "
+"innerhalb des <filename>examples/<replaceable>registration</replaceable></"
+"filename>-Verzeichnisses auszuführen. Es ist außerdem möglich die Tests innerhalb Ihrer IDE (d.h. Ihrer integrierten Entwicklungsumgebung) auszuführen, indem Sie den TestNG-Plugin verwenden."
+
+#. Tag: title
+#: Tutorial.xml:84
+#, no-c-format
+msgid "Your first Seam application: the registration example"
+msgstr "Ihre erste Seam-Anwendung: Das Registrierungsbeispiel"
+
+#. Tag: para
+#: Tutorial.xml:85
+#, no-c-format
+msgid ""
+"The registration example is a fairly trivial application that lets a new "
+"user store his username, real name and password in the database. The example "
+"isn&#39;t intended to show off all of the cool functionality of Seam. "
+"However, it demonstrates the use of an EJB3 session bean as a JSF action "
+"listener, and basic configuration of Seam."
+msgstr "Beim Registrierungsbeispiel handelt es sich um eine recht einfache Anwendung, die es einem Benutzer gestattet seinen Benutzernamen, seinen tatsächlichen Namen sowie das Passwort in der Datenbank zu speichern. Das Beispiel ist nicht dafür gedacht, alle tollen Funktionalitäten von Seam darzustellen. Jedoch sind die Verwendung eines EJB3-Session-Bean als ein JSF-Action-Listener sowie eine grundlegende Konfiguration von Seam dargestellt."
+
+#. Tag: para
+#: Tutorial.xml:88
+#, no-c-format
+msgid ""
+"We&#39;ll go slowly, since we realize you might not yet be familiar with EJB "
+"3.0."
+msgstr "Wir gehen langsam dabei vor, da wir wissen, dass Sie möglicherweise noch nicht mit EJB 3.0 vertraut sind."
+
+#. Tag: para
+#: Tutorial.xml:91
+#, no-c-format
+msgid ""
+"The start page displays a very basic form with three input fields. Try "
+"filling them in and then submitting the form. This will save a user object "
+"in the database."
+msgstr "Die Startseite zeigt ein ganz einfaches Formular mit drei Eingabefeldern. Versuchen Sie diese auszufüllen und das Formular abzuschicken. Dies speichert ein Benutzerobjekt in der Datenbank."
+
+#. Tag: title
+#: Tutorial.xml:103 Tutorial.xml:415 Tutorial.xml:554 Tutorial.xml:714
+#, no-c-format
+msgid "Understanding the code"
+msgstr "Den Code verstehen"
+
+#. Tag: para
+#: Tutorial.xml:104
+#, no-c-format
+msgid ""
+"The example is implemented with two JSP pages, one entity bean and one "
+"stateless session bean."
+msgstr "Das Beispiel ist mit zwei JSP-Seiten implementiert, einem Entity-Bean und einem Stateless Session Bean."
+
+#. Tag: para
+#: Tutorial.xml:115
+#, no-c-format
+msgid "Let&#39;s take a look at the code, starting from the \"bottom\"."
+msgstr "Werfen wir einen Blick auf den Code, beginnend von \"unten\"."
+
+#. Tag: title
+#: Tutorial.xml:119
+#, no-c-format
+msgid "The entity bean: <literal>User.java</literal>"
+msgstr "Das Entity-Bean: <literal>User.java</literal>"
+
+#. Tag: para
+#: Tutorial.xml:120
+#, no-c-format
+msgid ""
+"We need an EJB entity bean for user data. This class defines "
+"<emphasis>persistence</emphasis> and <emphasis>validation</emphasis> "
+"declaratively, via annotations. It also needs some extra annotations that "
+"define the class as a Seam component."
+msgstr ""
+"Wir benötigen ein EJB Entity-Bean für Benutzerdaten. Diese Klasse definiert "
+"<emphasis>Persistenz</emphasis> und <emphasis>Validierung</emphasis> deklarativ, via Annotationen. Sie braucht außerdem einige Extra-Annotationen, die die Klasse als eine Seam-Komponente definieren."
+
+#. Tag: programlisting
+#: Tutorial.xml:135
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"user\")\n"
+"@Scope(SESSION)\n"
+"@Table(name=\"users\")\n"
+"public class User implements Serializable\n"
+"{\n"
+"   private static final long serialVersionUID = 1881413500711441951L;\n"
+"   \n"
+"   private String username;\n"
+"   private String password;\n"
+"   private String name;\n"
+"   \n"
+"   public User(String name, String password, String username)\n"
+"   {\n"
+"      this.name = name;\n"
+"      this.password = password;\n"
+"      this.username = username;\n"
+"   }\n"
+"   \n"
+"   public User() {}\n"
+"   \n"
+"   @NotNull @Length(min=5, max=15)\n"
+"   public String getPassword()\n"
+"   {\n"
+"      return password;\n"
+"   }\n"
+"\n"
+"   public void setPassword(String password)\n"
+"   {\n"
+"      this.password = password;\n"
+"   }\n"
+"   \n"
+"   @NotNull\n"
+"   public String getName()\n"
+"   {\n"
+"      return name;\n"
+"   }\n"
+"\n"
+"   public void setName(String name)\n"
+"   {\n"
+"      this.name = name;\n"
+"   }\n"
+"   \n"
+"   @Id @NotNull @Length(min=5, max=15)\n"
+"   public String getUsername()\n"
+"   {\n"
+"      return username;\n"
+"   }\n"
+"\n"
+"   public void setUsername(String username)\n"
+"   {\n"
+"      this.username = username;\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+"@Entity\n"
+"@Name(\"user\")\n"
+"@Scope(SESSION)\n"
+"@Table(name=\"users\")\n"
+"public class User implements Serializable\n"
+"{\n"
+"   private static final long serialVersionUID = 1881413500711441951L;\n"
+"   \n"
+"   private String username;\n"
+"   private String password;\n"
+"   private String name;\n"
+"   \n"
+"   public User(String name, String password, String username)\n"
+"   {\n"
+"      this.name = name;\n"
+"      this.password = password;\n"
+"      this.username = username;\n"
+"   }\n"
+"   \n"
+"   public User() {}\n"
+"   \n"
+"   @NotNull @Length(min=5, max=15)\n"
+"   public String getPassword()\n"
+"   {\n"
+"      return password;\n"
+"   }\n"
+"\n"
+"   public void setPassword(String password)\n"
+"   {\n"
+"      this.password = password;\n"
+"   }\n"
+"   \n"
+"   @NotNull\n"
+"   public String getName()\n"
+"   {\n"
+"      return name;\n"
+"   }\n"
+"\n"
+"   public void setName(String name)\n"
+"   {\n"
+"      this.name = name;\n"
+"   }\n"
+"   \n"
+"   @Id @NotNull @Length(min=5, max=15)\n"
+"   public String getUsername()\n"
+"   {\n"
+"      return username;\n"
+"   }\n"
+"\n"
+"   public void setUsername(String username)\n"
+"   {\n"
+"      this.username = username;\n"
+"   }\n"
+"\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:138
+#, no-c-format
+msgid ""
+"The EJB3 standard <literal>@Entity</literal> annotation indicates that the "
+"<literal>User</literal> class is an entity bean."
+msgstr "Die EJB3 Standard <literal>@Entity</literal>-Annotation zeigt an, dass es sich bei der <literal>User</literal>-Klasse um ein Entity-Bean handelt."
+
+#. Tag: para
+#: Tutorial.xml:143
+#, no-c-format
+msgid ""
+"A Seam component needs a <emphasis>component name</emphasis> specified by "
+"the <link linkend=\"name-annotation\"><literal>@Name</literal></link> "
+"annotation. This name must be unique within the Seam application. When JSF "
+"asks Seam to resolve a context variable with a name that is the same as a "
+"Seam component name, and the context variable is currently undefined (null), "
+"Seam will instantiate that component, and bind the new instance to the "
+"context variable. In this case, Seam will instantiate a <literal>User</"
+"literal> the first time JSF encounters a variable named <literal>user</"
+"literal>."
+msgstr ""
+"Eine Seam-Komponente benötigt einen <emphasis>Komponentennamen</emphasis>, der durch die <link linkend=\"name-annotation\"><literal>@Name</literal></link>-Annotation festgelegt wird. Dieser Name muss innerhalb der Seam-Anwendung eindeutig sein. Wenn JSF bei Seam um Auflösung einer Kontextvariablen anfragt, deren Name derselbe wie der "
+"Seam Komponentenname ist und die Kontextvariable zum aktuellen Zeitpunkt undefiniert (Null) ist, so instantiiert Seam diese Komponente, und bindet die neue Instanz an die Kontextvariable. In diesem Fall instantiiert Seam einen <literal>User</literal> wenn JSF das erste Mal auf eine Variable namens <literal>user</literal> trifft."
+
+#. Tag: para
+#: Tutorial.xml:148
+#, no-c-format
+msgid ""
+"Whenever Seam instantiates a component, it binds the new instance to a "
+"context variable in the component&#39;s <emphasis>default context</"
+"emphasis>. The default context is specified using the <link linkend=\"scope-"
+"annotation\"><literal>@Scope</literal></link> annotation. The <literal>User</"
+"literal> bean is a session scoped component."
+msgstr ""
+"Jedesmal, wenn Seam eine Komponente instantiiert, bindet es die neue Instanz an eine Kontextvariable im <emphasis>Standardkontext</"
+"emphasis> der Komponente. Der Standardkontext wird mittels der <link linkend=\"scope-"
+"annotation\"><literal>@Scope</literal></link>-Annotation festgelegt. Das <literal>User</literal>-Bean ist eine Session-bezogene Komponente."
+
+#. Tag: para
+#: Tutorial.xml:153
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Table</literal> annotation indicates that the "
+"<literal>User</literal> class is mapped to the <literal>users</literal> "
+"table."
+msgstr ""
+"Die EJB Standard <literal>@Table</literal>-Annotation zeigt an, dass die "
+"<literal>User</literal>-Klasse zur <literal>users</literal>-Tabelle gemappt ist."
+
+#. Tag: para
+#: Tutorial.xml:158
+#, no-c-format
+msgid ""
+"<literal>name</literal>, <literal>password</literal> and <literal>username</"
+"literal> are the persistent attributes of the entity bean. All of our "
+"persistent attributes define accessor methods. These are needed when this "
+"component is used by JSF in the render response and update model values "
+"phases."
+msgstr ""
+"Bei <literal>name</literal>, <literal>password</literal> und <literal>username</"
+"literal> handelt es sich um persistente Attribute des Entity-Beans. Alle Ihre persistenten Attribute definieren \"Accessor Methods\". Diese werden benötigt, wenn diese Komponente durch JSF in der Render-Antwort verwendet wird und bei der Aktualisierung von Modellwertphasen."
+
+#. Tag: para
+#: Tutorial.xml:163
+#, no-c-format
+msgid ""
+"An empty constructor is both required by both the EJB specification and by "
+"Seam."
+msgstr ""
+"Ein leerer Konstruktor wird sowohl von der EJB-Spezifikation als auch von "
+"Seam benötigt."
+
+#. Tag: para
+#: Tutorial.xml:168
+#, no-c-format
+msgid ""
+"The <literal>@NotNull</literal> and <literal>@Length</literal> annotations "
+"are part of the Hibernate Validator framework. Seam integrates Hibernate "
+"Validator and lets you use it for data validation (even if you are not using "
+"Hibernate for persistence)."
+msgstr ""
+"Die <literal>@NotNull</literal> und <literal>@Length</literal>-Annotations "
+"sind Teil des Hibernate Validator Frameworks. Seam integriert den Hibernate Validator und lässt Sie diesen zur Datenvalidierung verwenden (selbst wenn Sie Hibernate nicht für Persistenz verwenden)."
+
+#. Tag: para
+#: Tutorial.xml:173
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Id</literal> annotation indicates the primary key "
+"attribute of the entity bean."
+msgstr "Die EJB Standard <literal>@Id</literal>-Annotation gibt das primäre Schlüsselattribut des Entity-Beans an."
+
+#. Tag: para
+#: Tutorial.xml:180
+#, no-c-format
+msgid ""
+"The most important things to notice in this example are the <literal>@Name</"
+"literal> and <literal>@Scope</literal> annotations. These annotations "
+"establish that this class is a Seam component."
+msgstr ""
+"Die beiden wichtigsten Dinge in diesem Beispiel sind die <literal>@Name</"
+"literal> und die <literal>@Scope</literal>-Annotationen. Diese Annotationen legen fest, dass es sich bei dieser Klasse um eine Seam-Komponente handelt."
+
+#. Tag: para
+#: Tutorial.xml:183
+#, no-c-format
+msgid ""
+"We&#39;ll see below that the properties of our <literal>User</literal> class "
+"are bound to directly to JSF components and are populated by JSF during the "
+"update model values phase. We don&#39;t need any tedious glue code to copy "
+"data back and forth between the JSP pages and the entity bean domain model."
+msgstr ""
+"Wir sehen unten, dass die Properties unserer <literal>User</literal>-Klasse "
+"direkt an JSF-Komponenten gebunden sind und durch JSF während der \"Update-Model\"-Werte-Phase gespeist werden. Wir benötigen nun keinen mühseligen Code mehr, um Daten zwischen den JSP-Seiten und dem Entity-Bean Domain-Modell hin und her zu kopieren."
+
+#. Tag: para
+#: Tutorial.xml:186
+#, no-c-format
+msgid ""
+"However, entity beans shouldn&#39;t do transaction management or database "
+"access. So we can&#39;t use this component as a JSF action listener. For "
+"that we need a session bean."
+msgstr "Jedoch sollten sich Entity-Beans nicht um das Transaction Management oder den Datenbank-Zugriff kümmern. Wir können diese Komponente als einen JSF-Action-Listener verwenden. Dafür benötigen wir ein Session-Bean."
+
+#. Tag: title
+#: Tutorial.xml:193
+#, no-c-format
+msgid "The stateless session bean class: <literal>RegisterAction.java</literal>"
+msgstr "Die Stateless Session Bean Klasse: <literal>RegisterAction.java</literal>"
+
+#. Tag: para
+#: Tutorial.xml:194
+#, no-c-format
+msgid ""
+"Most Seam application use session beans as JSF action listeners (you can use "
+"JavaBeans instead if you like)."
+msgstr "Die meisten Seam-Anwendungen verwenden Session-Beans als JSF-Action-Listener (Sie können statt dessen JavaBeans verwenden, wenn Sie möchten)."
+
+#. Tag: para
+#: Tutorial.xml:197
+#, no-c-format
+msgid ""
+"We have exactly one JSF action in our application, and one session bean "
+"method attached to it. In this case, we&#39;ll use a stateless session bean, "
+"since all the state associated with our action is held by the <literal>User</"
+"literal> bean."
+msgstr "Wir haben genau eine JSF-Action in unserer Anwendung und eine Session-Bean-Methode, die daran hängt. In diesem Fall verwenden wir ein Stateless-Session-Bean, da jeder unserer Action zogeordnete Status im <literal>User</literal>-Bean enthalten ist."
+
+#. Tag: para
+#: Tutorial.xml:200
+#, no-c-format
+msgid "This is the only really interesting code in the example!"
+msgstr "This is the only really interesting code in the example!"
+
+#. Tag: programlisting
+#: Tutorial.xml:215
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"register\")\n"
+"public class RegisterAction implements Register\n"
+"{\n"
+"\n"
+"   @In\n"
+"   private User user;\n"
+"   \n"
+"   @PersistenceContext\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @Logger\n"
+"   private Log log;\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = em.createQuery(\n"
+"         \"select username from User where username=#{user.username}\")\n"
+"         .getResultList();\n"
+"         \n"
+"      if (existing.size()==0)\n"
+"      {\n"
+"         em.persist(user);\n"
+"         log.info(\"Registered new user #{user.username}\");\n"
+"         return \"/registered.jsp\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         FacesMessages.instance().add(\"User #{user.username} already exists"
+"\");\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+"@Stateless\n"
+"@Name(\"register\")\n"
+"public class RegisterAction implements Register\n"
+"{\n"
+"\n"
+"   @In\n"
+"   private User user;\n"
+"   \n"
+"   @PersistenceContext\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @Logger\n"
+"   private Log log;\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = em.createQuery(\n"
+"         \"select username from User where username=#{user.username}\")\n"
+"         .getResultList();\n"
+"         \n"
+"      if (existing.size()==0)\n"
+"      {\n"
+"         em.persist(user);\n"
+"         log.info(\"Registered new user #{user.username}\");\n"
+"         return \"/registered.jsp\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         FacesMessages.instance().add(\"User #{user.username} already exists"
+"\");\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:218
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Stateless</literal> annotation marks this class "
+"as stateless session bean."
+msgstr "Die EJB-Standard <literal>@Stateless</literal>-Annotation kennzeichnet diese Klasse als Stateless Session Bean."
+
+#. Tag: para
+#: Tutorial.xml:223
+#, no-c-format
+msgid ""
+"The <link linkend=\"in-annotation\"><literal>@In</literal></link> annotation "
+"marks an attribute of the bean as injected by Seam. In this case, the "
+"attribute is injected from a context variable named <literal>user</literal> "
+"(the instance variable name)."
+msgstr ""
+"Die <link linkend=\"in-annotation\"><literal>@In</literal></link>-Annotation "
+"kennzeichnet ein Attribut des Bean wie durch Seam eingespeist. In diesem Falle wird das Attribut von einer Kontextvariablen namens <literal>user</literal> (der Name der Instanzvariablen) eingespeist."
+
+#. Tag: para
+#: Tutorial.xml:228
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@PersistenceContext</literal> annotation is used "
+"to inject the EJB3 entity manager."
+msgstr "Die EJB Standard <literal>@PersistenceContext</literal>-Annotation wird zur Einspeisung des EJB3-Entity-Managers verwendet."
+
+#. Tag: para
+#: Tutorial.xml:233
+#, no-c-format
+msgid ""
+"The Seam <literal>@Logger</literal> annotation is used to inject the "
+"component&#39;s <literal>Log</literal> instance."
+msgstr "Die Seam <literal>@Logger</literal>-Annotation wird zur Einspeisung der <literal>Log</literal>-Instanz der Komponenten verwendet."
+
+#. Tag: para
+#: Tutorial.xml:238
+#, no-c-format
+msgid ""
+"The action listener method uses the standard EJB3 <literal>EntityManager</"
+"literal> API to interact with the database, and returns the JSF outcome. "
+"Note that, since this is a sesson bean, a transaction is automatically begun "
+"when the <literal>register()</literal> method is called, and committed when "
+"it completes."
+msgstr ""
+"Die \"Action Listener\"-Methode verwendet die Standard EJB3 <literal>EntityManager</literal>-API (Programmierschnittstelle) zur Interaktion mit der Datenbank und liefert das JSF-Ergebnis. "
+"Beachten Sie, dass - da es sich um ein Sesson Bean handelt - eine Transaktion automatisch gestartet wird, wenn die <literal>register()</literal>-Methode aufgerufen wird und bei Beendigung festgeschrieben wird."
+
+#. Tag: para
+#: Tutorial.xml:243
+#, no-c-format
+msgid ""
+"Notice that Seam lets you use a JSF EL expression inside EJB-QL. Under the "
+"covers, this results in an ordinary JPA <literal>setParameter()</literal> "
+"call on the standard JPA <literal>Query</literal> object. Nice, huh?"
+msgstr "Beachten Sie, dass Sie mit Seam einen JSF EL-Ausdruck innerhalb der EJB-QL verwenden können. Dadurch kommt es zu einem gewöhnlichen JPA <literal>setParameter()</literal>-Aufruf am standardmäßigen JPA <literal>Query</literal>-Objekt. Nicht schlecht, oder?"
+
+#. Tag: para
+#: Tutorial.xml:248
+#, no-c-format
+msgid "The <literal>Log</literal> API lets us easily display templated log messages."
+msgstr "Die <literal>Log</literal>-API lässt uns die Protokollnachrichten ganz einfach anzeigen."
+
+#. Tag: para
+#: Tutorial.xml:253
+#, no-c-format
+msgid ""
+"JSF action listener methods return a string-valued outcome that determines "
+"what page will be displayed next. A null outcome (or a void action listener "
+"method) redisplays the previous page. In plain JSF, it is normal to always "
+"use a JSF <emphasis>navigation rule</emphasis> to determine the JSF view id "
+"from the outcome. For complex application this indirection is useful and a "
+"good practice. However, for very simple examples like this one, Seam lets "
+"you use the JSF view id as the outcome, eliminating the requirement for a "
+"navigation rule. <emphasis>Note that when you use a view id as an outcome, "
+"Seam always performs a browser redirect.</emphasis>"
+msgstr "JSF Action-Listener Methoden geben ein String-wertiges Ergebnis wieder, das festlegt, welche Seite als nächstes angezeigt wird. Ein Null-Ergebnis (oder eine \"void\" Action-Listener Methode) zeigt die vorherige Seite erneut an. In einfachem JSF ist es normal, immer eine JSF <emphasis>Navigationsregel</emphasis> zu verwenden, um die JSF Ansichts-ID vom Ergebnis zu bestimmen. Für komplexe Anwendungen ist diese Indirektion von Nutzen und empfiehlt sich. Für sehr einfache Beispiele wie dieses lässt Seam Sie die JSF Ansichts-ID als Ergebnis ansehen, so dass eine Navigationsregel nicht mehr nötig ist. <emphasis>Beachten Sie, dass Seam stets eine Browser-Umleitung durchführt, wenn Sie eine Ansichts-ID als Ergebnis verwenden.</emphasis>"
+
+#. Tag: para
+#: Tutorial.xml:258
+#, no-c-format
+msgid ""
+"Seam provides a number of <emphasis>built-in components</emphasis> to help "
+"solve common problems. The <literal>FacesMessages</literal> component makes "
+"it easy to display templated error or success messages. Built-in Seam "
+"components may be obtained by injection, or by calling an <literal>instance()"
+"</literal> method."
+msgstr ""
+"Seam liefert eine Reihe <emphasis>eingebauter Komponenten</emphasis> zur Lösung gängiger Probleme. Die <literal>FacesMessages</literal>-Komponente macht es einfach, Fehler- oder Erfolgsmeldungen anzuzeigen. Man erhält eingebaute Seam "
+"Komponenten durch Einspeisung oder durch Aufrufen einer <literal>instance()</literal>-Methode."
+
+#. Tag: para
+#: Tutorial.xml:265
+#, no-c-format
+msgid ""
+"Note that we did not explicitly specify a <literal>@Scope</literal> this "
+"time. Each Seam component type has a default scope if not explicitly "
+"specified. For stateless session beans, the default scope is the stateless "
+"context. Actually, <emphasis>all</emphasis> stateless session beans belong "
+"in the stateless context."
+msgstr "Beachten Sie, dass wir dieses Mal nicht explizit einen <literal>@Scope</literal> festgelegt haben. Jeder Seam-Komponententyp hat einen Standardbereich, wenn dieser nicht explizit festgelegt ist. Für Stateless Session Beans ist der Standardbereich der Stateless Context. Genau genommen gehören <emphasis>alle</emphasis> Stateless Session Beans in den Stateless Context."
+
+#. Tag: para
+#: Tutorial.xml:268
+#, no-c-format
+msgid ""
+"Our session bean action listener performs the business and persistence logic "
+"for our mini-application. In more complex applications, we might need to "
+"layer the code and refactor persistence logic into a dedicated data access "
+"component. That&#39;s perfectly trivial to do. But notice that Seam does not "
+"force you into any particular strategy for application layering."
+msgstr "Unser Session-Bean Action-Listener führt die Business- und Persistenz-Logik für unsere Mini-Anwendung aus. In komplexeren Anwendungen ist es möglich, dass wir den Code schichten und die Persistenzlogik in eine dedizierte Datenzugriffskomponente umgestalten müssen (sog. \"refactoring\"). Dies ist ausgesprochen einfach. Aber beachten Sie, dass Seam Ihnen keine bestimmte Strategie für das Layering der Anwensung aufzwingt. "
+
+#. Tag: para
+#: Tutorial.xml:271
+#, no-c-format
+msgid ""
+"Furthermore, notice that our session bean has simultaneous access to context "
+"associated with the web request (the form values in the <literal>User</"
+"literal> object, for example), and state held in transactional resources "
+"(the <literal>EntityManager</literal> object). This is a break from "
+"traditional J2EE architectures. Again, if you are more comfortable with the "
+"traditional J2EE layering, you can certainly implement that in a Seam "
+"application. But for many applications, it&#39;s simply not very useful."
+msgstr "Beachten SIe weiter, dass unser Session-Bean simultanen Zugriff auf den mit der Webanfrage assoziierten Kontext (die Formularwerte im <literal>User</literal>-Objekt zum Beispiel) und den in transaktionalen Ressourcen gehaltenen Status (das <literal>EntityManager</literal>-Objekt) hat. Dies ist ein Bruch mit traditionellen J2EE-Architekturen. Auch hier gilt - wenn SIe sich mit dem traditionelleren J2EE-Layering wohler fühlen, so können Sie dieses problemlos in eine Seam-Anwendung implementieren. Aber für viele Anwendungen ist es einfach nicht nützlich."
+
+#. Tag: title
+#: Tutorial.xml:278
+#, no-c-format
+msgid "The session bean local interface: <literal>Register.java</literal>"
+msgstr "Das Session Bean lokale Interface: <literal>Register.java</literal>"
+
+#. Tag: para
+#: Tutorial.xml:279
+#, no-c-format
+msgid "Naturally, our session bean needs a local interface."
+msgstr "Natürlich benötigt unser Session Bean ein lokales Interface."
+
+#. Tag: programlisting
+#: Tutorial.xml:282
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface Register\n"
+"{\n"
+"   public String register();\n"
+"}"
+msgstr ""
+"@Local\n"
+"public interface Register\n"
+"{\n"
+"   public String register();\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:283
+#, no-c-format
+msgid "That&#39;s the end of the Java code. Now onto the deployment descriptors."
+msgstr "Das ist das Ende des Java Codes. Nun zu den Deployment-Deskriptoren."
+
+#. Tag: title
+#: Tutorial.xml:289
+#, no-c-format
+msgid "The Seam component deployment descriptor: <literal>components.xml</literal>"
+msgstr "Der Seam-Komponenten Deployment-Deskriptor: <literal>components.xml</literal>"
+
+#. Tag: para
+#: Tutorial.xml:290
+#, no-c-format
+msgid ""
+"If you&#39;ve used many Java frameworks before, you&#39;ll be used to having "
+"to declare all your component classes in some kind of XML file that "
+"gradually grows more and more unmanageable as your project matures. You&#39;"
+"ll be relieved to know that Seam does not require that application "
+"components be accompanied by XML. Most Seam applications require a very "
+"small amount of XML that does not grow very much as the project gets bigger."
+msgstr "Falls Sie in der Vergangenheit viele Java Frameworks benutzt haben, so werden Sie sich daran gewöhnt haben, alle Ihre Komponentenklassen in irgendeiner Art von XML-Datei deklarieren zu müssen, die im Verlauf Ihres Projekts nach und nach schlechter zu managen ist. Seam erfordert diese Verbindung von Anwendungskomponenten und XML nicht. Die meisten Seam-Anwendungen benötigen nur eine sehr kleine Menge an XML, das mit der Entwicklung des Projekts nicht sehr stark wächst."
+
+#. Tag: para
+#: Tutorial.xml:293
+#, no-c-format
+msgid ""
+"Nevertheless, it is often useful to be able to provide for <emphasis>some</"
+"emphasis> external configuration of <emphasis>some</emphasis> components "
+"(particularly the components built in to Seam). You have a couple of options "
+"here, but the most flexible option is to provide this configuration in a "
+"file called <literal>components.xml</literal>, located in the <literal>WEB-"
+"INF</literal> directory. We&#39;ll use the <literal>components.xml</literal> "
+"file to tell Seam how to find our EJB components in JNDI:"
+msgstr "Dennoch ist es oft hilfreich <emphasis>etwas</emphasis> externe Konfiguration von <emphasis>einigen</emphasis> Komponenten liefern zu können (insbesondere die in Seam eingebauten Komponenten). Hierbei haben Sie ein paar Optionen, wobei die flexibelste Option ist, diese Konfiguration in einer Datei mit dem Namen <literal>components.xml</literal> bereitzustellen, die sich im <literal>WEB-INF</literal>-Verzeichnis befindet. Wir werden seam mittels der <literal>components.xml</literal>-Datei mitteilen, wie es unsere EJB-Komponenten in JNDI auffindet:"
+
+#. Tag: programlisting
+#: Tutorial.xml:296
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"&gt;\n"
+"     &lt;core:init jndi-pattern=\"@jndiPattern@\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"&gt;\n"
+"     &lt;core:init jndi-pattern=\"@jndiPattern@\"/&gt;\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Tutorial.xml:297
+#, no-c-format
+msgid ""
+"This code configures a property named <literal>jndiPattern</literal> of a "
+"built-in Seam component named <literal>org.jboss.seam.core.init</literal>."
+msgstr "Dieser Code konfiguriert eine Property namens <literal>jndiPattern</literal> einer eingebauten Seam-Komponente mit Namen <literal>org.jboss.seam.core.init</literal>."
+
+#. Tag: title
+#: Tutorial.xml:303
+#, no-c-format
+msgid "The web deployment description: <literal>web.xml</literal>"
+msgstr "Die Web-Deployment Beschreibung: <literal>web.xml</literal>"
+
+#. Tag: para
+#: Tutorial.xml:304
+#, no-c-format
+msgid ""
+"The presentation layer for our mini-application will be deployed in a WAR. "
+"So we&#39;ll need a web deployment descriptor."
+msgstr "Die Präsentationsschicht für unsere Mini-Anwendung wird in einer WAR deployt. Wir werden daher einen Web-Deployment Deskriptor benötigen."
+
+#. Tag: programlisting
+#: Tutorial.xml:307
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;web-app version=\"2.5\"\n"
+"    xmlns=\"http://java.sun.com/xml/ns/javaee\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n"
+"        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\"&gt;\n"
+"\n"
+"    &lt;!- - Seam - -&gt;\n"
+"\n"
+"    &lt;listener&gt;\n"
+"        &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/"
+"listener-class&gt;\n"
+"    &lt;/listener&gt;\n"
+"    \n"
+"     &lt;listener&gt;\n"
+"         &lt;listener-class&gt;com.sun.faces.config.ConfigureListener&lt;/"
+"listener-class&gt;\n"
+"    &lt;/listener&gt;\n"
+"\n"
+"    &lt;context-param&gt;\n"
+"        &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-"
+"name&gt;\n"
+"        &lt;param-value&gt;client&lt;/param-value&gt;\n"
+"    &lt;/context-param&gt;\n"
+"\n"
+"    &lt;context-param&gt;\n"
+"        &lt;param-name&gt;javax.faces.DEFAULT_SUFFIX&lt;/param-name&gt;\n"
+"        &lt;param-value&gt;.jspx&lt;/param-value&gt;\n"
+"    &lt;/context-param&gt;\n"
+"\n"
+"        &lt;servlet&gt;\n"
+"                &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;\n"
+"                &lt;servlet-class&gt;javax.faces.webapp.FacesServlet&lt;/"
+"servlet-class&gt;\n"
+"                &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;\n"
+"        &lt;/servlet&gt;\n"
+"\n"
+"        <!-- Faces Servlet Mapping -->\n"
+"        &lt;servlet-mapping&gt;\n"
+"                &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;\n"
+"                &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;\n"
+"        &lt;/servlet-mapping&gt;\n"
+"\n"
+"&lt;/web-app&gt;"
+msgstr ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;web-app version=\"2.5\"\n"
+"    xmlns=\"http://java.sun.com/xml/ns/javaee\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n"
+"        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\"&gt;\n"
+"\n"
+"    &lt;!- - Seam - -&gt;\n"
+"\n"
+"    &lt;listener&gt;\n"
+"        &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/"
+"listener-class&gt;\n"
+"    &lt;/listener&gt;\n"
+"    \n"
+"     &lt;listener&gt;\n"
+"         &lt;listener-class&gt;com.sun.faces.config.ConfigureListener&lt;/"
+"listener-class&gt;\n"
+"    &lt;/listener&gt;\n"
+"\n"
+"    &lt;context-param&gt;\n"
+"        &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-"
+"name&gt;\n"
+"        &lt;param-value&gt;client&lt;/param-value&gt;\n"
+"    &lt;/context-param&gt;\n"
+"\n"
+"    &lt;context-param&gt;\n"
+"        &lt;param-name&gt;javax.faces.DEFAULT_SUFFIX&lt;/param-name&gt;\n"
+"        &lt;param-value&gt;.jspx&lt;/param-value&gt;\n"
+"    &lt;/context-param&gt;\n"
+"\n"
+"        &lt;servlet&gt;\n"
+"                &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;\n"
+"                &lt;servlet-class&gt;javax.faces.webapp.FacesServlet&lt;/"
+"servlet-class&gt;\n"
+"                &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;\n"
+"        &lt;/servlet&gt;\n"
+"\n"
+"        <!-- Faces Servlet Mapping -->\n"
+"        &lt;servlet-mapping&gt;\n"
+"                &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;\n"
+"                &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;\n"
+"        &lt;/servlet-mapping&gt;\n"
+"\n"
+"&lt;/web-app&gt;"
+
+#. Tag: para
+#: Tutorial.xml:308
+#, no-c-format
+msgid ""
+"This <literal>web.xml</literal> file configures Seam and Glassfish. The "
+"configuration you see here is pretty much identical in all Seam applications."
+msgstr "Diese <literal>web.xml</literal>-Datei konfiguriert Seam und Glassfish. Die Konfiguration, die Sie hier sehen ist in allen Seam-Anwendungen so ziemlich gleich."
+
+#. Tag: title
+#: Tutorial.xml:314
+#, no-c-format
+msgid "The JSF configration: <literal>faces-config.xml</literal>"
+msgstr "Die JSF-Konfigration: <literal>faces-config.xml</literal>"
+
+#. Tag: para
+#: Tutorial.xml:315
+#, no-c-format
+msgid ""
+"All Seam applications use JSF views as the presentation layer. So we&#39;ll "
+"need <literal>faces-config.xml</literal>."
+msgstr "Alle Seam-Anwendungen benutzen JSF-Ansichten als Präsentationsschicht. Wir werden also <literal>faces-config.xml</literal> brauchen."
+
+#. Tag: programlisting
+#: Tutorial.xml:318
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;!DOCTYPE faces-config \n"
+"PUBLIC \"-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN\"\n"
+"                            \"http://java.sun.com/dtd/web-facesconfig_1_0.dtd"
+"\"&gt;\n"
+"&lt;faces-config&gt;\n"
+"\n"
+"    &lt;!- - A phase listener is needed by all Seam applications - -&gt;\n"
+"    \n"
+"    &lt;lifecycle&gt;\n"
+"        &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-"
+"listener&gt;\n"
+"    &lt;/lifecycle&gt;\n"
+"\n"
+"&lt;/faces-config&gt;"
+msgstr ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;!DOCTYPE faces-config \n"
+"PUBLIC \"-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN\"\n"
+"                            \"http://java.sun.com/dtd/web-facesconfig_1_0.dtd"
+"\"&gt;\n"
+"&lt;faces-config&gt;\n"
+"\n"
+"    &lt;!- - A phase listener is needed by all Seam applications - -&gt;\n"
+"    \n"
+"    &lt;lifecycle&gt;\n"
+"        &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-"
+"listener&gt;\n"
+"    &lt;/lifecycle&gt;\n"
+"\n"
+"&lt;/faces-config&gt;"
+
+#. Tag: para
+#: Tutorial.xml:319
+#, no-c-format
+msgid ""
+"The <literal>faces-config.xml</literal> file integrates Seam into JSF. Note "
+"that we don&#39;t need any JSF managed bean declarations! The managed beans "
+"are the Seam components. In Seam applications, the <literal>faces-config."
+"xml</literal> is used much less often than in plain JSF."
+msgstr ""
+"Die <literal>faces-config.xml</literal>-Datei integriert Seam in JSF. Beachten Sie, dass wir keine JSF gemanagten Bean Deklarationen benötigen! Bei den gemanagten Beans handelt es sich um Seam Komponenten. In Seam-Anwendungen wird <literal>faces-config."
+"xml</literal> viel weniger oft benutzt als in einfachen JSF."
+
+#. Tag: para
+#: Tutorial.xml:322
+#, no-c-format
+msgid ""
+"In fact, once you have all the basic descriptors set up, the <emphasis>only</"
+"emphasis> XML you need to write as you add new functionality to a Seam "
+"application is the navigation rules, and possibly jBPM process definitions. "
+"Seam takes the view that <emphasis>process flow</emphasis> and "
+"<emphasis>configuration data</emphasis> are the only things that truly "
+"belong in XML."
+msgstr ""
+"Im Grunde genommen sind - nachdem alle grundlegenden Deskriptoren eingestellt wurden - die <emphasis>einzigen</emphasis> XML, die Sie beim Hinzufügen einer neuen Funktionalität schreiben müssen, die Navigationsregeln und eventuell die jBPM-Prozessdefinitionen. "
+"Seam vertritt die Ansicht, dass der <emphasis>Prozessfluss</emphasis> und die <emphasis>Konfigurationsdaten</emphasis> die einzigen Dinge sind, die wirklich in eine XML gehören."
+
+#. Tag: para
+#: Tutorial.xml:325
+#, no-c-format
+msgid ""
+"In this simple example, we don&#39;t even need a navigation rule, since we "
+"decided to embed the view id in our action code."
+msgstr "In diesem einfachen Beispiel benötigen wir nicht einmal eine Navigationsregel, da wir beschlossen haben, die \"View-ID\" in unseren Action-Code einzubetten."
+
+#. Tag: title
+#: Tutorial.xml:330
+#, no-c-format
+msgid "The EJB deployment descriptor: <literal>ejb-jar.xml</literal>"
+msgstr "Der EJB Deployment-Deskriptor: <literal>ejb-jar.xml</literal>"
+
+#. Tag: para
+#: Tutorial.xml:331
+#, no-c-format
+msgid ""
+"The <literal>ejb-jar.xml</literal> file integrates Seam with EJB3, by "
+"attaching the <literal>SeamInterceptor</literal> to all session beans in the "
+"archive."
+msgstr ""
+"Die <literal>ejb-jar.xml</literal>-Datei integriert Seam mit EJB3, indem der "
+"<literal>SeamInterceptor</literal> an alle Session Beans im "
+"Archiv anhängt."
+
+#. Tag: programlisting
+#: Tutorial.xml:334
+#, no-c-format
+msgid ""
+"&lt;ejb-jar xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \n"
+"         xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee \n"
+"                           http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"
+"\"\n"
+"         version=\"3.0\"&gt;\n"
+"         \n"
+"   &lt;interceptors&gt;\n"
+"     &lt;interceptor&gt;\n"
+"       &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"     &lt;/interceptor&gt;\n"
+"   &lt;/interceptors&gt;\n"
+"   \n"
+"   &lt;assembly-descriptor&gt;\n"
+"      &lt;interceptor-binding&gt;\n"
+"         &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"         &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"      &lt;/interceptor-binding&gt;\n"
+"   &lt;/assembly-descriptor&gt;\n"
+"   \n"
+"&lt;/ejb-jar&gt;"
+msgstr ""
+"&lt;ejb-jar xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \n"
+"         xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee \n"
+"                           http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"
+"\"\n"
+"         version=\"3.0\"&gt;\n"
+"         \n"
+"   &lt;interceptors&gt;\n"
+"     &lt;interceptor&gt;\n"
+"       &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"     &lt;/interceptor&gt;\n"
+"   &lt;/interceptors&gt;\n"
+"   \n"
+"   &lt;assembly-descriptor&gt;\n"
+"      &lt;interceptor-binding&gt;\n"
+"         &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"         &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"      &lt;/interceptor-binding&gt;\n"
+"   &lt;/assembly-descriptor&gt;\n"
+"   \n"
+"&lt;/ejb-jar&gt;"
+
+#. Tag: title
+#: Tutorial.xml:338
+#, no-c-format
+msgid "The EJB persistence deployment descriptor: <literal>persistence.xml</literal>"
+msgstr "Der EJB-Persistenz-Deployment Deskriptor: <literal>persistence.xml</literal>"
+
+#. Tag: para
+#: Tutorial.xml:339
+#, no-c-format
+msgid ""
+"The <literal>persistence.xml</literal> file tells the EJB persistence "
+"provider where to find the datasource, and contains some vendor-specific "
+"settings. In this case, enables automatic schema export at startup time."
+msgstr "Die <literal>persistence.xml</literal>-Datei teilt dem EJB Persistenz-Provider mit, wo die Datenquelle zu finden ist und enthält einige anbieterspezifische Einstellungen. In diesem Fall aktiviert sie den automatischen Schema-Export beim Startup."
+
+#. Tag: programlisting
+#: Tutorial.xml:342
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;persistence xmlns=\"http://java.sun.com/xml/ns/persistence\" \n"
+"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence \n"
+"                           http://java.sun.com/xml/ns/persistence/"
+"persistence_1_0.xsd\" \n"
+"             version=\"1.0\"&gt;\n"
+"    &lt;persistence-unit name=\"userDatabase\"&gt;\n"
+"      &lt;provider&gt;org.hibernate.ejb.HibernatePersistence&lt;/"
+"provider&gt;\n"
+"      &lt;jta-data-source&gt;java:/DefaultDS&lt;/jta-data-source&gt;\n"
+"      &lt;properties&gt;\n"
+"         &lt;property name=\"hibernate.hbm2ddl.auto\" value=\"create-drop\"/"
+"&gt;\n"
+"      &lt;/properties&gt;\n"
+"    &lt;/persistence-unit&gt;\n"
+"&lt;/persistence&gt;"
+msgstr ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;persistence xmlns=\"http://java.sun.com/xml/ns/persistence\" \n"
+"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence \n"
+"                           http://java.sun.com/xml/ns/persistence/"
+"persistence_1_0.xsd\" \n"
+"             version=\"1.0\"&gt;\n"
+"    &lt;persistence-unit name=\"userDatabase\"&gt;\n"
+"      &lt;provider&gt;org.hibernate.ejb.HibernatePersistence&lt;/"
+"provider&gt;\n"
+"      &lt;jta-data-source&gt;java:/DefaultDS&lt;/jta-data-source&gt;\n"
+"      &lt;properties&gt;\n"
+"         &lt;property name=\"hibernate.hbm2ddl.auto\" value=\"create-drop\"/"
+"&gt;\n"
+"      &lt;/properties&gt;\n"
+"    &lt;/persistence-unit&gt;\n"
+"&lt;/persistence&gt;"
+
+#. Tag: title
+#: Tutorial.xml:346
+#, no-c-format
+msgid ""
+"The view: <literal>register.jsp</literal> and <literal>registered.jsp</"
+"literal>"
+msgstr ""
+"Die Ansicht: <literal>register.jsp</literal> und <literal>registered.jsp</"
+"literal>"
+
+#. Tag: para
+#: Tutorial.xml:347
+#, no-c-format
+msgid ""
+"The view pages for a Seam application could be implemented using any "
+"technology that supports JSF. In this example we use JSP, since it is "
+"familiar to most developers and since we have minimal requirements here "
+"anyway. (But if you take our advice, you&#39;ll use Facelets for your own "
+"applications.)"
+msgstr "Die View-Seiten für eine Seam-Anwendung können mittels einer beliebigen, JSF unterstützenden Technologie implementiert werden. In diesem Beispiel verwenden wird JSP, da die meisten Entwickler damit vertraut sind und da wir hier ohnehin Mindestvoraussetzungen haben. (Wenn SIe aber unseren Rat befolgen, so werden Sie für Ihre eigenen Anwendungen Facelets verwenden)."
+
+#. Tag: programlisting
+#: Tutorial.xml:350
+#, no-c-format
+msgid ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://jboss.com/products/seam/taglib\" prefix=\"s\" %"
+"&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Register New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;table border=\"0\"&gt;\n"
+"       &lt;s:validateAll&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Username&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputText value=\"#{user.username}\"/&gt;&lt;/"
+"td&gt;\n"
+"         &lt;/tr&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Real Name&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputText value=\"#{user.name}\"/&gt;&lt;/td&gt;\n"
+"         &lt;/tr&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Password&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputSecret value=\"#{user.password}\"/&gt;&lt;/"
+"td&gt;\n"
+"         &lt;/tr&gt;\n"
+"       &lt;/s:validateAll&gt;\n"
+"     &lt;/table&gt;\n"
+"     &lt;h:messages/&gt;\n"
+"     &lt;h:commandButton type=\"submit\" value=\"Register\" action=\"#"
+"{register.register}\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://jboss.com/products/seam/taglib\" prefix=\"s\" %"
+"&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Register New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;table border=\"0\"&gt;\n"
+"       &lt;s:validateAll&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Username&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputText value=\"#{user.username}\"/&gt;&lt;/"
+"td&gt;\n"
+"         &lt;/tr&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Real Name&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputText value=\"#{user.name}\"/&gt;&lt;/td&gt;\n"
+"         &lt;/tr&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Password&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputSecret value=\"#{user.password}\"/&gt;&lt;/"
+"td&gt;\n"
+"         &lt;/tr&gt;\n"
+"       &lt;/s:validateAll&gt;\n"
+"     &lt;/table&gt;\n"
+"     &lt;h:messages/&gt;\n"
+"     &lt;h:commandButton type=\"submit\" value=\"Register\" action=\"#"
+"{register.register}\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+
+#. Tag: para
+#: Tutorial.xml:351
+#, no-c-format
+msgid ""
+"The only thing here that is specific to Seam is the <literal>&lt;s:"
+"validateAll&gt;</literal> tag. This JSF component tells JSF to validate all "
+"the contained input fields against the Hibernate Validator annotations "
+"specified on the entity bean."
+msgstr ""
+"Die einzige Sache, die spezifisch für Seam ist, ist das <literal>&lt;s:"
+"validateAll&gt;</literal>-Tag. Diese JSF-Komponente teilt JSF mit, dass alle enthaltenen Eingabefelder gegen die im Entity-Bean festgelegten Hibernate Validator Annotationen validiert werden sollen."
+
+#. Tag: programlisting
+#: Tutorial.xml:354
+#, no-c-format
+msgid ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" %&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Successfully Registered New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"    Welcome, &lt;h:outputText value=\"#{user.name}\"/&gt;, \n"
+"    you are successfully registered as &lt;h:outputText value=\"#{user."
+"username}\"/&gt;.\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" %&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Successfully Registered New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"    Welcome, &lt;h:outputText value=\"#{user.name}\"/&gt;, \n"
+"    you are successfully registered as &lt;h:outputText value=\"#{user."
+"username}\"/&gt;.\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+
+#. Tag: para
+#: Tutorial.xml:355
+#, no-c-format
+msgid ""
+"This is a boring old JSP pages using standard JSF components. There is "
+"nothing specific to Seam here."
+msgstr "Dies ist eine ganzgewöhnliche JSP-Seite, die standardmäßige JSF-Komponenten verwendet. Es gibt hier nichts Seam-spezifisches."
+
+#. Tag: title
+#: Tutorial.xml:361
+#, no-c-format
+msgid "The EAR deployment descriptor: <literal>application.xml</literal>"
+msgstr "Der EAR Deployment-Deskriptor: <literal>application.xml</literal>"
+
+#. Tag: para
+#: Tutorial.xml:362
+#, no-c-format
+msgid ""
+"Finally, since our application is deployed as an EAR, we need a deployment "
+"descriptor there, too."
+msgstr "Zu guter letzt benötigen wir - da unsere Anwendung als EAR deployt wird - auch einen Deployment-Deskriptor. "
+
+#. Tag: programlisting
+#: Tutorial.xml:365
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;application xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee \n"
+"                                   http://java.sun.com/xml/ns/javaee/"
+"application_5.xsd\"\n"
+"             version=\"5\"&gt;\n"
+"             \n"
+"    &lt;display-name&gt;Seam Registration&lt;/display-name&gt;\n"
+"\n"
+"    &lt;module&gt;\n"
+"        &lt;web&gt;\n"
+"            &lt;web-uri&gt;jboss-seam-registration.war&lt;/web-uri&gt;\n"
+"            &lt;context-root&gt;/seam-registration&lt;/context-root&gt;\n"
+"        &lt;/web&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;ejb&gt;jboss-seam-registration.jar&lt;/ejb&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;jboss-seam.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;el-ri.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    \n"
+"&lt;/application&gt;"
+msgstr ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;application xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee \n"
+"                                   http://java.sun.com/xml/ns/javaee/"
+"application_5.xsd\"\n"
+"             version=\"5\"&gt;\n"
+"             \n"
+"    &lt;display-name&gt;Seam Registration&lt;/display-name&gt;\n"
+"\n"
+"    &lt;module&gt;\n"
+"        &lt;web&gt;\n"
+"            &lt;web-uri&gt;jboss-seam-registration.war&lt;/web-uri&gt;\n"
+"            &lt;context-root&gt;/seam-registration&lt;/context-root&gt;\n"
+"        &lt;/web&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;ejb&gt;jboss-seam-registration.jar&lt;/ejb&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;jboss-seam.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;el-ri.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    \n"
+"&lt;/application&gt;"
+
+#. Tag: para
+#: Tutorial.xml:366
+#, no-c-format
+msgid ""
+"This deployment descriptor links modules in the enterprise archive and binds "
+"the web application to the context root <literal>/seam-registration</"
+"literal>."
+msgstr ""
+"Dieser Deployment-Deskriptor linkt Module im Enterprise-Archiv und bindet die Web-Anwendung an die Kontext-Root <literal>/seam-registration</"
+"literal>."
+
+#. Tag: title
+#: Tutorial.xml:378 Tutorial.xml:526 Tutorial.xml:689 Tutorial.xml:804
+#, no-c-format
+msgid "How it works"
+msgstr "Und so funktioniert es"
+
+#. Tag: para
+#: Tutorial.xml:379
+#, no-c-format
+msgid ""
+"When the form is submitted, JSF asks Seam to resolve the variable named "
+"<literal>user</literal>. Since there is no value already bound to that name "
+"(in any Seam context), Seam instantiates the <literal>user</literal> "
+"component, and returns the resulting <literal>User</literal> entity bean "
+"instance to JSF after storing it in the Seam session context."
+msgstr ""
+"Wird das Formular abgeschickt (eingereicht), so fragt JSF bei Seam um Auflösung der Variablen mit dem Namen "
+"<literal>user</literal> an. Da noch kein Wert an diesen Namen gebunden ist (in einem Seam Kontext) , instantiiert Seam die <literal>user</literal>-Komponente, und gibt die resultierende Instanz des <literal>User</literal>-Entity-Beans an JSF weiter, nachdem diese im Seam Session-Kontext gespeichert wurden."
+
+#. Tag: para
+#: Tutorial.xml:382
+#, no-c-format
+msgid ""
+"The form input values are now validated against the Hibernate Validator "
+"constraints specified on the <literal>User</literal> entity. If the "
+"constraints are violated, JSF redisplays the page. Otherwise, JSF binds the "
+"form input values to properties of the <literal>User</literal> entity bean."
+msgstr "Die Eingabewerte des Formulars werden nun gegen die Bedingungen des Hibernate Validators validiert, die in der <literal>User</literal>-Entity festgelegt sind. Werden die Bedingungen verletzt, so zeigt JSF die Seite erneut an. Andernfalls bindet JSF die Eingabewerte des Formulars an die Properties des <literal>User</literal>-Entity-Beans."
+
+#. Tag: para
+#: Tutorial.xml:385
+#, no-c-format
+msgid ""
+"Next, JSF asks Seam to resolve the variable named <literal>register</"
+"literal>. Seam finds the <literal>RegisterAction</literal> stateless session "
+"bean in the stateless context and returns it. JSF invokes the "
+"<literal>register()</literal> action listener method."
+msgstr ""
+"Anschließend fragt JSF bei Seam um Auflösung der Variablen mit dem Namen <literal>register</literal> an. Seam sucht das <literal>RegisterAction</literal> Stateless Session "
+"Bean im Stateless Kontext und antwortet damit. JSF ruft die "
+"<literal>register()</literal>-Action-Listener-Methode auf."
+
+#. Tag: para
+#: Tutorial.xml:388
+#, no-c-format
+msgid ""
+"Seam intercepts the method call and injects the <literal>User</literal> "
+"entity from the Seam session context, before continuing the invocation."
+msgstr "Seam fängt den Methodenaufruf ab und speist die <literal>User</literal>-Entity vom Seam Session-Kontext ein, ehe der Aufruf fortgesetzt wird."
+
+#. Tag: para
+#: Tutorial.xml:391
+#, no-c-format
+msgid ""
+"The <literal>register()</literal> method checks if a user with the entered "
+"username already exists. If so, an error message is queued with the "
+"<literal>FacesMessages</literal> component, and a null outcome is returned, "
+"causing a page redisplay. The <literal>FacesMessages</literal> component "
+"interpolates the JSF expression embedded in the message string and adds a "
+"JSF <literal>FacesMessage</literal> to the view."
+msgstr ""
+"Die <literal>register()</literal>-Methode prüft, ob ein Benutzer mit dem eingegebenen Benutzernamen bereits existiert. Ist dies der Fall, so wird eine Fehlermeldung in die Warteschlange mit der "
+"<literal>FacesMessages</literal>-Komponente eingereiht und ein Nullergebnis wird widergegeben, wodurch eine Seite erneut angezeigt wird. Die <literal>FacesMessages</literal>-Komponent "
+"fügt den im Message-String eingebetteten JSF-Ausdruck ein und fügt der Ansicht eine JSF-<literal>FacesMessage</literal> hinzu."
+
+#. Tag: para
+#: Tutorial.xml:394
+#, no-c-format
+msgid ""
+"If no user with that username exists, the <literal>\"/registered.jsp\"</"
+"literal> outcome triggers a browser redirect to the <literal>registered.jsp</"
+"literal> page. When JSF comes to render the page, it asks Seam to resolve "
+"the variable named <literal>user</literal> and uses property values of the "
+"returned <literal>User</literal> entity from Seam&#39;s session scope."
+msgstr "Ist kein Benutzer mit diesem Benutzernamen vorhanden, so führt das <literal>\"/registered.jsp\"</literal>-Ergebnis dazu, dass ein Browser auf die <literal>registered.jsp</literal>-Seite umgeleitet wird. Rendert JSF dann die Seite, so fragt es bei Seam um Auflösung der Variablen mit dem Namen <literal>user</literal> an und verwendet Property-Werte der widergegebenen <literal>User</literal>-Entity aus Seams Session-Bereich."
+
+#. Tag: title
+#: Tutorial.xml:402
+#, no-c-format
+msgid "Clickable lists in Seam: the messages example"
+msgstr "Klickbare Listen in Seam: Das Nachrichten-Beispiel"
+
+#. Tag: para
+#: Tutorial.xml:403
+#, no-c-format
+msgid ""
+"Clickable lists of database search results are such an important part of any "
+"online application that Seam provides special functionality on top of JSF to "
+"make it easier to query data using EJB-QL or HQL and display it as a "
+"clickable list using a JSF <literal>&lt;h:dataTable&gt;</literal>. The "
+"messages example demonstrates this functionality."
+msgstr "Klickbare Listen von Suchergebnissen der Datenbank sind ein so wichtiger Teil von Online-Anwendungen, dass Seam neben JSF eine weitere besondere Funktionalität bereitstellt, um Daten mittels EJB-QL oder HQL abzufragen und unter Verwendung einer JSF-<literal>&lt;h:dataTable&gt;</literal> als klickbare Liste darzustellen . Das Nachrichtenbeispiel demonstriert diese Funktionalität."
+
+#. Tag: para
+#: Tutorial.xml:416
+#, no-c-format
+msgid ""
+"The message list example has one entity bean, <literal>Message</literal>, "
+"one session bean, <literal>MessageListBean</literal> and one JSP."
+msgstr "Das Beispiel der Nachrichtenliste besitzt ein Entity-Bean, <literal>Message</literal>, ein Session-Bean, <literal>MessageListBean</literal> und eine JSP."
+
+#. Tag: title
+#: Tutorial.xml:420
+#, no-c-format
+msgid "The entity bean: <literal>Message.java</literal>"
+msgstr "Das Entity-Bean: <literal>Message.java</literal>"
+
+#. Tag: para
+#: Tutorial.xml:421
+#, no-c-format
+msgid ""
+"The <literal>Message</literal> entity defines the title, text, date and time "
+"of a message, and a flag indicating whether the message has been read:"
+msgstr "Die <literal>Message</literal>-Entity definiert Titel, Text, Datum und Zeit einer Nachricht sowie ein Flag, das anzeigt, ob die Nachricht gelesen wurde:"
+
+#. Tag: programlisting
+#: Tutorial.xml:424
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"message\")\n"
+"@Scope(EVENT)\n"
+"public class Message implements Serializable\n"
+"{\n"
+"   private Long id;\n"
+"   private String title;\n"
+"   private String text;\n"
+"   private boolean read;\n"
+"   private Date datetime;\n"
+"   \n"
+"   @Id @GeneratedValue\n"
+"   public Long getId() {\n"
+"      return id;\n"
+"   }\n"
+"   public void setId(Long id) {\n"
+"      this.id = id;\n"
+"   }\n"
+"   \n"
+"   @NotNull @Length(max=100)\n"
+"   public String getTitle() {\n"
+"      return title;\n"
+"   }\n"
+"   public void setTitle(String title) {\n"
+"      this.title = title;\n"
+"   }\n"
+"   \n"
+"   @NotNull @Lob\n"
+"   public String getText() {\n"
+"      return text;\n"
+"   }\n"
+"   public void setText(String text) {\n"
+"      this.text = text;\n"
+"   }\n"
+"   \n"
+"   @NotNull\n"
+"   public boolean isRead() {\n"
+"      return read;\n"
+"   }\n"
+"   public void setRead(boolean read) {\n"
+"      this.read = read;\n"
+"   }\n"
+"   \n"
+"   @NotNull \n"
+"   @Basic @Temporal(TemporalType.TIMESTAMP)\n"
+"   public Date getDatetime() {\n"
+"      return datetime;\n"
+"   }\n"
+"   public void setDatetime(Date datetime) {\n"
+"      this.datetime = datetime;\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+"@Entity\n"
+"@Name(\"message\")\n"
+"@Scope(EVENT)\n"
+"public class Message implements Serializable\n"
+"{\n"
+"   private Long id;\n"
+"   private String title;\n"
+"   private String text;\n"
+"   private boolean read;\n"
+"   private Date datetime;\n"
+"   \n"
+"   @Id @GeneratedValue\n"
+"   public Long getId() {\n"
+"      return id;\n"
+"   }\n"
+"   public void setId(Long id) {\n"
+"      this.id = id;\n"
+"   }\n"
+"   \n"
+"   @NotNull @Length(max=100)\n"
+"   public String getTitle() {\n"
+"      return title;\n"
+"   }\n"
+"   public void setTitle(String title) {\n"
+"      this.title = title;\n"
+"   }\n"
+"   \n"
+"   @NotNull @Lob\n"
+"   public String getText() {\n"
+"      return text;\n"
+"   }\n"
+"   public void setText(String text) {\n"
+"      this.text = text;\n"
+"   }\n"
+"   \n"
+"   @NotNull\n"
+"   public boolean isRead() {\n"
+"      return read;\n"
+"   }\n"
+"   public void setRead(boolean read) {\n"
+"      this.read = read;\n"
+"   }\n"
+"   \n"
+"   @NotNull \n"
+"   @Basic @Temporal(TemporalType.TIMESTAMP)\n"
+"   public Date getDatetime() {\n"
+"      return datetime;\n"
+"   }\n"
+"   public void setDatetime(Date datetime) {\n"
+"      this.datetime = datetime;\n"
+"   }\n"
+"   \n"
+"}"
+
+#. Tag: title
+#: Tutorial.xml:429
+#, no-c-format
+msgid "The stateful session bean: <literal>MessageManagerBean.java</literal>"
+msgstr "Das Stateful Session Bean: <literal>MessageManagerBean.java</literal>"
+
+#. Tag: para
+#: Tutorial.xml:430
+#, no-c-format
+msgid ""
+"Just like in the previous example, we have a session bean, "
+"<literal>MessageManagerBean</literal>, which defines the action listener "
+"methods for the two buttons on our form. One of the buttons selects a "
+"message from the list, and displays that message. The other button deletes a "
+"message. So far, this is not so different to the previous example."
+msgstr ""
+"Ganz wie im vorangegangenen Beispiel haben wir ein Session-Bean, "
+"<literal>MessageManagerBean</literal>, das die Action-Listener-Methoden für die beiden Schaltflächen auf unserem Formular definiert. Eine der Schaltflächen wählt die Nachricht aus der Liste und zeigt diese an. Die andere Schaltfläche löscht eine Nachricht. Bis jetzt ist also alles weitgehend wie im vorherigen Beispiel."
+
+#. Tag: para
+#: Tutorial.xml:433
+#, no-c-format
+msgid ""
+"But <literal>MessageManagerBean</literal> is also responsible for fetching "
+"the list of messages the first time we navigate to the message list page. "
+"There are various ways the user could navigate to the page, and not all of "
+"them are preceded by a JSF action&mdash;the user might have bookmarked the "
+"page, for example. So the job of fetching the message list takes place in a "
+"Seam <emphasis>factory method</emphasis>, instead of in an action listener "
+"method."
+msgstr "Aber <literal>MessageManagerBean</literal> ist auch verantwortlich für den Abruf der Nachrichtenliste, wenn wir das erste Mal zur Nachrichtenlistenseite navigieren. Der Benutzer kann auf verschiedene Arten auf die Seite navigieren, aber nicht allen geht eine JSF- Action&mdash; voraus. Der Benutzer könnte die Seite etwa mit einem Lesezeichen versehen haben. Der Vorgang des Abrufs der Nachrichtenliste erfolgt also in einer Seam <emphasis>Factory-Method</emphasis> statt einer Action-Listener-Methode."
+
+#. Tag: para
+#: Tutorial.xml:436
+#, no-c-format
+msgid ""
+"We want to cache the list of messages in memory between server requests, so "
+"we will make this a stateful session bean."
+msgstr "Wir möchten die Liste der im Speicher befindlichen Nachrichten zwischen Server-Anfragen in einem Cache-Speicher unterbringen und machen dies daher zu einemStateful Session Bean."
+
+#. Tag: programlisting
+#: Tutorial.xml:450
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Scope(SESSION)\n"
+"@Name(\"messageManager\")\n"
+"public class MessageManagerBean implements Serializable, MessageManager\n"
+"{\n"
+"\n"
+"   @DataModel\n"
+"   private List&lt;Message&gt; messageList;\n"
+"   \n"
+"   @DataModelSelection\n"
+"   @Out(required=false)\n"
+"   private Message message;\n"
+"   \n"
+"   @PersistenceContext(type=EXTENDED)\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @Factory(\"messageList\")\n"
+"   public void findMessages()\n"
+"   {\n"
+"      messageList = em.createQuery(\"from Message msg order by msg.datetime "
+"desc\").getResultList();\n"
+"   }\n"
+"   \n"
+"   public void select()\n"
+"   {\n"
+"      message.setRead(true);\n"
+"   }\n"
+"   \n"
+"   public void delete()\n"
+"   {\n"
+"      messageList.remove(message);\n"
+"      em.remove(message);\n"
+"      message=null;\n"
+"   }\n"
+"   \n"
+"   @Remove @Destroy\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+"@Stateful\n"
+"@Scope(SESSION)\n"
+"@Name(\"messageManager\")\n"
+"public class MessageManagerBean implements Serializable, MessageManager\n"
+"{\n"
+"\n"
+"   @DataModel\n"
+"   private List&lt;Message&gt; messageList;\n"
+"   \n"
+"   @DataModelSelection\n"
+"   @Out(required=false)\n"
+"   private Message message;\n"
+"   \n"
+"   @PersistenceContext(type=EXTENDED)\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @Factory(\"messageList\")\n"
+"   public void findMessages()\n"
+"   {\n"
+"      messageList = em.createQuery(\"from Message msg order by msg.datetime "
+"desc\").getResultList();\n"
+"   }\n"
+"   \n"
+"   public void select()\n"
+"   {\n"
+"      message.setRead(true);\n"
+"   }\n"
+"   \n"
+"   public void delete()\n"
+"   {\n"
+"      messageList.remove(message);\n"
+"      em.remove(message);\n"
+"      message=null;\n"
+"   }\n"
+"   \n"
+"   @Remove @Destroy\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:453
+#, no-c-format
+msgid ""
+"The <literal>@DataModel</literal> annotation exposes an attibute of type "
+"<literal>java.util.List</literal> to the JSF page as an instance of "
+"<literal>javax.faces.model.DataModel</literal>. This allows us to use the "
+"list in a JSF <literal>&lt;h:dataTable&gt;</literal> with clickable links "
+"for each row. In this case, the <literal>DataModel</literal> is made "
+"available in a session context variable named <literal>messageList</literal>."
+msgstr ""
+"Die <literal>@DataModel</literal>-Annotation setzt ein Attribute des Typs"
+"<literal>java.util.List</literal> der JSF-Seite als eine Instanz von"
+"<literal>javax.faces.model.DataModel</literal> aus. Dies ermöglicht es uns, die Liste in einer JSF-<literal>&lt;h:dataTable&gt;</literal> mit klickbaren Links für jede Reihe zu benutzen. In diesem Fall wird das  <literal>DataModel</literal> in einer Session-Kontext-Variablen mit dem Namen <literal>messageList</literal> verfügbar gemacht."
+
+#. Tag: para
+#: Tutorial.xml:458
+#, no-c-format
+msgid ""
+"The <literal>@DataModelSelection</literal> annotation tells Seam to inject "
+"the <literal>List</literal> element that corresponded to the clicked link."
+msgstr "Die <literal>@DataModelSelection</literal>-Annotation teilt Seam mit, das dem geklickten Link entsprechende  <literal>List</literal>-Element einzuspeisen."
+
+#. Tag: para
+#: Tutorial.xml:463
+#, no-c-format
+msgid ""
+"The <literal>@Out</literal> annotation then exposes the selected value "
+"directly to the page. So ever time a row of the clickable list is selected, "
+"the <literal>Message</literal> is injected to the attribute of the stateful "
+"bean, and the subsequently <emphasis>outjected</emphasis> to the event "
+"context variable named <literal>message</literal>."
+msgstr ""
+"Die <literal>@Out</literal>-Annotation legt den gewählten Wert dann direkt auf der Seite dar. Das heißt, dass jedes Mal wenn eine Reihe der klickbaren Liste gewählt wird, die <literal>Message</literal> in das Attribut des Stateful Beans eingespeist wird und anschließend an die Ereignis-Kontextvariable namens "
+"<literal>message</literal> <emphasis>ausgegeben</emphasis>."
+
+#. Tag: para
+#: Tutorial.xml:468
+#, no-c-format
+msgid ""
+"This stateful bean has an EJB3 <emphasis>extended persistence context</"
+"emphasis>. The messages retrieved in the query remain in the managed state "
+"as long as the bean exists, so any subsequent method calls to the stateful "
+"bean can update them without needing to make any explicit call to the "
+"<literal>EntityManager</literal>."
+msgstr ""
+"Dieses Stateful Bean besitzt einen EJB3 <emphasis>erweiterten Persistenz-Kontext</emphasis>. Die bei der Anfrage erhaltenen Nachrichten verbleiben im gemanagten Status so lange das Bean existiert, so dass nachfolgende Methodenaufrufe an das Stateful "
+"Bean sie aktualisieren können, ohne dass ein expliziter Aufruf an den "
+"<literal>EntityManager</literal> erfolgen muss."
+
+#. Tag: para
+#: Tutorial.xml:473
+#, no-c-format
+msgid ""
+"The first time we navigate to the JSP page, there will be no value in the "
+"<literal>messageList</literal> context variable. The <literal>@Factory</"
+"literal> annotation tells Seam to create an instance of "
+"<literal>MessageManagerBean</literal> and invoke the <literal>findMessages()"
+"</literal> method to initialize the value. We call <literal>findMessages()</"
+"literal> a <emphasis>factory method</emphasis> for <literal>messages</"
+"literal>."
+msgstr ""
+"Wenn wir das erste Mal zur JSP-Seite navigieren, so ist dort keine "
+"<literal>messageList</literal>-Kontextvariable vorhanden. Die <literal>@Factory</literal>-Annotation teilt Seam mit, dass eine Instanz von <literal>MessageManagerBean</literal> erstellt werden soll und die <literal>findMessages()</literal>-Methode zur Initialisierung des Wertes aufrufen soll. Wir nennen<literal>findMessages()</literal> eine <emphasis>Factory-Method</emphasis> für <literal>messages</"
+"literal>."
+
+#. Tag: para
+#: Tutorial.xml:478
+#, no-c-format
+msgid ""
+"The <literal>select()</literal> action listener method marks the selected "
+"<literal>Message</literal> as read, and updates it in the database."
+msgstr "Die <literal>select()</literal>-Action-Listener Methode markiert die gewählte <literal>Message</literal> als gelesen und aktualisiert sie in der Datenbank."
+
+#. Tag: para
+#: Tutorial.xml:483
+#, no-c-format
+msgid ""
+"The <literal>delete()</literal> action listener method removes the selected "
+"<literal>Message</literal> from the database."
+msgstr "Die <literal>delete()</literal>-Action-Listener Methode entfernt die gewählte <literal>Message</literal> aus der Datenbank."
+
+#. Tag: para
+#: Tutorial.xml:488
+#, no-c-format
+msgid ""
+"All stateful session bean Seam components <emphasis>must</emphasis> have a "
+"method marked <literal>@Remove @Destroy</literal> to ensure that Seam will "
+"remove the stateful bean when the Seam context ends, and clean up any server-"
+"side state."
+msgstr "Alle Stateful Session Bean Seam-Komponenten <emphasis>müssen</emphasis> eine mit <literal>@Remove @Destroy</literal> gekennzeichnete Methode besitzen, um sicherzustellen, dass Seam das Stateful Bean entfernt, wenn der Seam-Kontext endet und dern Status auf Server-Seite bereinigt wird."
+
+#. Tag: para
+#: Tutorial.xml:495
+#, no-c-format
+msgid ""
+"Note that this is a session-scoped Seam component. It is associated with the "
+"user login session, and all requests from a login session share the same "
+"instance of the component. (In Seam applications, we usually use session-"
+"scoped components sparingly.)"
+msgstr "Beachten Sie, dass es sich um eine Session-begrenzte Seam-Komponente handelt. Sie wird mit der Login-Session des Benutzers assoziiert, und alle Anfragen von einer Login-Session teilen sich dieselbe Instanz der Komponente. (In Seam-Anwendungen werden Session-begrenzte Komponenten normalerweise sparsam verwendet)."
+
+#. Tag: title
+#: Tutorial.xml:501
+#, no-c-format
+msgid "The session bean local interface: <literal>MessageManager.java</literal>"
+msgstr "Das lokale Session-Bean-Interface: <literal>MessageManager.java</literal>"
+
+#. Tag: para
+#: Tutorial.xml:502
+#, no-c-format
+msgid "All session beans have a business interface, of course."
+msgstr "Alle Session-Beans besitzen natürlich ein Business-Interface."
+
+#. Tag: programlisting
+#: Tutorial.xml:505
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface MessageManager\n"
+"{\n"
+"   public void findMessages();\n"
+"   public void select();\n"
+"   public void delete();\n"
+"   public void destroy();\n"
+"}"
+msgstr ""
+"@Local\n"
+"public interface MessageManager\n"
+"{\n"
+"   public void findMessages();\n"
+"   public void select();\n"
+"   public void delete();\n"
+"   public void destroy();\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:506
+#, no-c-format
+msgid "From now on, we won&#39;t show local interfaces in our code examples."
+msgstr "Von jetzt an zeigen wir keine lokalen Interfaces in unseren Code-Beispielen."
+
+#. Tag: para
+#: Tutorial.xml:509
+#, no-c-format
+msgid ""
+"Let&#39;s skip over <literal>components.xml</literal>, <literal>persistence."
+"xml</literal>, <literal>web.xml</literal>, <literal>ejb-jar.xml</literal>, "
+"<literal>faces-config.xml</literal> and <literal>application.xml</literal> "
+"since they are much the same as the previous example, and go straight to the "
+"JSP."
+msgstr ""
+"Wir überspringen <literal>components.xml</literal>, <literal>persistence."
+"xml</literal>, <literal>web.xml</literal>, <literal>ejb-jar.xml</literal>, "
+"<literal>faces-config.xml</literal> und <literal>application.xml</literal>, da es hier keine großen Unterschiede zum vorherigen Beispiel gibt und gehen direkt zur JSP."
+
+#. Tag: title
+#: Tutorial.xml:515
+#, no-c-format
+msgid "The view: <literal>messages.jsp</literal>"
+msgstr "Die Ansicht: <literal>messages.jsp</literal>"
+
+#. Tag: para
+#: Tutorial.xml:516
+#, no-c-format
+msgid ""
+"The JSP page is a straightforward use of the JSF <literal>&lt;h:dataTable&gt;"
+"</literal> component. Again, nothing specific to Seam."
+msgstr "Die JSP-Seite ist eine direkte Anwendung der JSF-<literal>&lt;h:dataTable&gt;</literal>-Komponent. Auch dies ist nicht Seam-spezifisch."
+
+#. Tag: programlisting
+#: Tutorial.xml:519
+#, no-c-format
+msgid ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" %&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Messages&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;h2&gt;Message List&lt;/h2&gt;\n"
+"     &lt;h:outputText value=\"No messages to display\" rendered=\"#"
+"{messageList.rowCount==0}\"/&gt;\n"
+"     &lt;h:dataTable var=\"msg\" value=\"#{messageList}\" rendered=\"#"
+"{messageList.rowCount&gt;0}\"&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Read\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:selectBooleanCheckbox value=\"#{msg.read}\" disabled=\"true"
+"\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Title\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:commandLink value=\"#{msg.title}\" action=\"#"
+"{messageManager.select}\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Date/Time\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:outputText value=\"#{msg.datetime}\"&gt;\n"
+"              &lt;f:convertDateTime type=\"both\" dateStyle=\"medium\" "
+"timeStyle=\"short\"/&gt;\n"
+"           &lt;/h:outputText&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;h:commandButton value=\"Delete\" action=\"#{messageManager."
+"delete}\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"     &lt;/h:dataTable&gt;\n"
+"     &lt;h3&gt;&lt;h:outputText value=\"#{message.title}\"/&gt;&lt;/h3&gt;\n"
+"     &lt;div&gt;&lt;h:outputText value=\"#{message.text}\"/&gt;&lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" %&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Messages&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;h2&gt;Message List&lt;/h2&gt;\n"
+"     &lt;h:outputText value=\"No messages to display\" rendered=\"#"
+"{messageList.rowCount==0}\"/&gt;\n"
+"     &lt;h:dataTable var=\"msg\" value=\"#{messageList}\" rendered=\"#"
+"{messageList.rowCount&gt;0}\"&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Read\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:selectBooleanCheckbox value=\"#{msg.read}\" disabled=\"true"
+"\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Title\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:commandLink value=\"#{msg.title}\" action=\"#"
+"{messageManager.select}\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Date/Time\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:outputText value=\"#{msg.datetime}\"&gt;\n"
+"              &lt;f:convertDateTime type=\"both\" dateStyle=\"medium\" "
+"timeStyle=\"short\"/&gt;\n"
+"           &lt;/h:outputText&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;h:commandButton value=\"Delete\" action=\"#{messageManager."
+"delete}\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"     &lt;/h:dataTable&gt;\n"
+"     &lt;h3&gt;&lt;h:outputText value=\"#{message.title}\"/&gt;&lt;/h3&gt;\n"
+"     &lt;div&gt;&lt;h:outputText value=\"#{message.text}\"/&gt;&lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+
+#. Tag: para
+#: Tutorial.xml:527
+#, no-c-format
+msgid ""
+"The first time we navigate to the <literal>messages.jsp</literal> page, "
+"whether by a JSF postback (faces request) or a direct browser GET request "
+"(non-faces request), the page will try to resolve the <literal>messageList</"
+"literal> context variable. Since this context variable is not initialized, "
+"Seam will call the factory method <literal>findMessages()</literal>, which "
+"performs a query against the database and results in a <literal>DataModel</"
+"literal> being outjected. This <literal>DataModel</literal> provides the row "
+"data needed for rendering the <literal>&lt;h:dataTable&gt;</literal>."
+msgstr ""
+"Wenn wir das erste Mal zur <literal>messages.jsp</literal>-Seite navigieren - unabhängig davon ob es sich um eine JSF-Postback (Faces-Anfrage) oder eine direkte Browser GET-Anfrage "
+"(nicht Faces-Anfrage) handelt - so versucht die Seite die <literal>messageList</literal>-Kontextvariable aufzulösen. Da diese Kontextvariable nicht initialisiert ist, ruft Seam die Factory-Methode <literal>findMessages()</literal> auf, die eine Abfrage der Datenbank durchführt und durch die ein <literal>DataModel</literal> geliefert wird. Dieses <literal>DataModel</literal> liefert die zum Rendern der <literal>&lt;h:dataTable&gt;</literal> benötigten Daten."
+
+#. Tag: para
+#: Tutorial.xml:530
+#, no-c-format
+msgid ""
+"When the user clicks the <literal>&lt;h:commandLink&gt;</literal>, JSF calls "
+"the <literal>select()</literal> action listener. Seam intercepts this call "
+"and injects the selected row data into the <literal>message</literal> "
+"attribute of the <literal>messageManager</literal> component. The action "
+"listener fires, marking the selected <literal>Message</literal> as read. At "
+"the end of the call, Seam outjects the selected <literal>Message</literal> "
+"to the context variable named <literal>message</literal>. Next, the EJB "
+"container commits the transaction, and the change to the <literal>Message</"
+"literal> is flushed to the database. Finally, the page is re-rendered, "
+"redisplaying the message list, and displaying the selected message below it."
+msgstr ""
+"Klickt der Benutzer auf die <literal>&lt;h:commandLink&gt;</literal>, so ruft JSF den <literal>select()</literal> Action-Listener auf. Seam fängt diesen Aufruf ab und speist die gewählten Reihendaten in das <literal>message</literal>-Attribut der <literal>messageManager</literal>-Komponente ein. Der Action-Listener markiert die ausgewählte <literal>Message</literal> als gelesen. Am Ende des Aufrufs liefert Seam die gewählte <literal>Message</literal> "
+"an die Kontextvariable namens <literal>message</literal>. Anschließend schreibt der EJB-Container die Transaktion fest, und die Änderung an der <literal>Message</literal> wird an die Datenbank weitergegeben. Anschließend wird die Seite erneut gerendert, wobei die Nachrichtenliste erneut angezeigt und die ausgewählte Nachricht darunter dargestellt wird."
+
+#. Tag: para
+#: Tutorial.xml:533
+#, no-c-format
+msgid ""
+"If the user clicks the <literal>&lt;h:commandButton&gt;</literal>, JSF calls "
+"the <literal>delete()</literal> action listener. Seam intercepts this call "
+"and injects the selected row data into the <literal>message</literal> "
+"attribute of the <literal>messageList</literal> component. The action "
+"listener fires, removing the selected <literal>Message</literal> from the "
+"list, and also calling <literal>remove()</literal> on the "
+"<literal>EntityManager</literal>. At the end of the call, Seam refreshes the "
+"<literal>messageList</literal> context variable and clears the context "
+"variable named <literal>message</literal>. The EJB container commits the "
+"transaction, and deletes the <literal>Message</literal> from the database. "
+"Finally, the page is re-rendered, redisplaying the message list."
+msgstr ""
+"Klickt der Benutzer auf die <literal>&lt;h:commandButton&gt;</literal>, so ruft JSF den <literal>delete()</literal> Action-Listener auf. Seam fängt diesen Aufruf ab und speist die gewählten Reihendaten in das <literal>message</literal>-Attribut der <literal>messageList</literal>-Komponente ein. Der Action-Listener löscht die ausgewählte <literal>Message</literal> aus der Liste und ruft außerdem <literal>remove()</literal> am "
+"<literal>EntityManager</literal> auf. Am Ende des Aufrufs lädt Seam die <literal>messageList</literal>-Kontextvariable neu und löscht die Kontextvariable namens <literal>message</literal>. Der EJB-Container schreibt die Transaktion fest und löscht die <literal>Message</literal> aus der Datenbank. Anschließend wird die Seite erneut gerendert, wobei die Nachrichtenliste erneut angezeigt wird."
+
+#. Tag: title
+#: Tutorial.xml:541
+#, no-c-format
+msgid "Seam and jBPM: the todo list example"
+msgstr "Seam und jBPM: Das todo-Listenbeispiel"
+
+#. Tag: para
+#: Tutorial.xml:542
+#, no-c-format
+msgid ""
+"jBPM provides sophisticated functionality for workflow and task management. "
+"To get a small taste of how jBPM integrates with Seam, we&#39;ll show you a "
+"simple \"todo list\" application. Since managing lists of tasks is such core "
+"functionality for jBPM, there is hardly any Java code at all in this example."
+msgstr ""
+"jBPM liefert ausgezeichnete Funktionalität für das Workflow- und Task-Management. Um Ihnen einen kleinen Vorgeschmack darauf zu geben, wie sich jBPM mit Seam integriert, zeigen wir Ihnen eine einfache "
+"\"todo list\"-Anwendung. Das das Managen von Task-Listen eine Kernfunktionalität für jBPM ist, gibt es in diesem Beispiel fast keinen Java Code."
+
+#. Tag: para
+#: Tutorial.xml:555
+#, no-c-format
+msgid ""
+"The center of this example is the jBPM process definition. There are also "
+"two JSPs and two trivial JavaBeans (There was no reason to use session "
+"beans, since they do not access the database, or have any other "
+"transactional behavior). Let&#39;s start with the process definition:"
+msgstr "Im Zentrum dieses Beispiels befindet sich die jBPM-Prozessdefinition. Es gibt außerdem zwei JSPs und zwei einfache JavaBeans (Es gab keinen Grund zur Verwendung von Session-Beans, da sie nicht auf die Datenbank zugreifen oder irgendein anderes transaktional Verhalten aufweisen). Beginnen wir mit der Prozessdefinition:"
+
+#. Tag: programlisting
+#: Tutorial.xml:566
+#, no-c-format
+msgid ""
+"&lt;process-definition name=\"todo\"&gt;\n"
+"   \n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"todo\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;task-node name=\"todo\"&gt;\n"
+"      &lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"         &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"      &lt;/task&gt;\n"
+"      &lt;transition to=\"done\"/&gt;\n"
+"   &lt;/task-node&gt;\n"
+"   \n"
+"   &lt;end-state name=\"done\"/&gt;\n"
+"   \n"
+"&lt;/process-definition&gt;"
+msgstr ""
+"&lt;process-definition name=\"todo\"&gt;\n"
+"   \n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"todo\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;task-node name=\"todo\"&gt;\n"
+"      &lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"         &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"      &lt;/task&gt;\n"
+"      &lt;transition to=\"done\"/&gt;\n"
+"   &lt;/task-node&gt;\n"
+"   \n"
+"   &lt;end-state name=\"done\"/&gt;\n"
+"   \n"
+"&lt;/process-definition&gt;"
+
+#. Tag: para
+#: Tutorial.xml:569
+#, no-c-format
+msgid ""
+"The <literal>&lt;start-state&gt;</literal> node represents the logical start "
+"of the process. When the process starts, it immediately transitions to the "
+"<literal>todo</literal> node."
+msgstr ""
+"Der <literal>&lt;start-state&gt;</literal>-Node repräsentiert den logischen Beginn des Prozesses. Wenn der Prozess startet, wird sofort an den "
+"<literal>todo</literal>-Node weitergegeben."
+
+#. Tag: para
+#: Tutorial.xml:574
+#, no-c-format
+msgid ""
+"The <literal>&lt;task-node&gt;</literal> node represents a <emphasis>wait "
+"state</emphasis>, where business process execution pauses, waiting for one "
+"or more tasks to be performed."
+msgstr "Der <literal>&lt;task-node&gt;</literal>-Node repräsentiert einen <emphasis>Wartestatus</emphasis>, während dessen die Ausführung von Business-Vorgängen pausiert und darauf gewartet wird, dass eine oder mehrere Tasks durchgeführt werden."
+
+#. Tag: para
+#: Tutorial.xml:579
+#, no-c-format
+msgid ""
+"The <literal>&lt;task&gt;</literal> element defines a task to be performed "
+"by a user. Since there is only one task defined on this node, when it is "
+"complete, execution resumes, and we transition to the end state. The task "
+"gets its description from a Seam component named <literal>todoList</literal> "
+"(one of the JavaBeans)."
+msgstr ""
+"Das <literal>&lt;task&gt;</literal>-Element definiert eine Task, die von einem Benutzer durchgeführt wird. Da an diesem Node nur eine Task definiert ist, wird die Ausführung fortgesetzt, wenn diese beendet ist und es wird in den Endstatus weitergegeben. Die Task erhält ihre Beschreibung von einer Seam-Komponente namens <literal>todoList</literal> "
+"(eines der JavaBeans)."
+
+#. Tag: para
+#: Tutorial.xml:584
+#, no-c-format
+msgid ""
+"Tasks need to be assigned to a user or group of users when they are created. "
+"In this case, the task is assigned to the current user, which we get from a "
+"built-in Seam component named <literal>actor</literal>. Any Seam component "
+"may be used to perform task assignment."
+msgstr ""
+"Tasks müssen bei ihrer Erstellung einem Benutzer oder einer Benutzergruppe zugeordnet werden. "
+"In diesem Fall wird die Task dem aktuellen Benutzer zugeordnet, was wir durch eine eingebaute Seam-Komponente namens <literal>actor</literal> erhalten. Jede Seam-Komponente kann für das Durchführen der Zuordnung von Tasks verwendet werden."
+
+#. Tag: para
+#: Tutorial.xml:589
+#, no-c-format
+msgid ""
+"The <literal>&lt;end-state&gt;</literal> node defines the logical end of the "
+"business process. When execution reaches this node, the process instance is "
+"destroyed."
+msgstr "Der <literal>&lt;end-state&gt;</literal>-Node definiert das logische Ende des Business-Prozesses. Erreicht die Ausführung diesen Node, so wird die Prozessinstanz zerstört."
+
+#. Tag: para
+#: Tutorial.xml:596
+#, no-c-format
+msgid ""
+"If we view this process definition using the process definition editor "
+"provided by JBossIDE, this is what it looks like:"
+msgstr "Wenn wir uns diese Prozessdefinition unter Verwendung des Prozessdefinition-Editors ansehen, die durch JBossIDE bereitgestellt wird, so sieht dies wie folgt aus:"
+
+#. Tag: para
+#: Tutorial.xml:607
+#, no-c-format
+msgid ""
+"This document defines our <emphasis>business process</emphasis> as a graph "
+"of nodes. This is the most trivial possible business process: there is one "
+"<emphasis>task</emphasis> to be performed, and when that task is complete, "
+"the business process ends."
+msgstr ""
+"Dieses Dokument definiert unseren <emphasis>Business-Prozess</emphasis> als ein Diagramm von "
+"Nodes. Dies ist der einfachstmögliche Business-Prozes überhaupt: Es gibt eine durchzuführende <emphasis>Task</emphasis>, und wenn diese Task abgeschlossen ist, endet der Business-Prozess."
+
+#. Tag: para
+#: Tutorial.xml:610
+#, no-c-format
+msgid ""
+"The first JavaBean handles the login screen <literal>login.jsp</literal>. "
+"Its job is just to initialize the jBPM actor id using the <literal>actor</"
+"literal> component. (In a real application, it would also need to "
+"authenticate the user.)"
+msgstr ""
+"Das erste JavaBean kümmert sich um den Anmeldebildschirm <literal>login.jsp</literal>. "
+"Seine Aufgabe ist es, die jBPM Actor-ID mittels <literal>actor</"
+"literal>-Komponente zu initialisieren. (In einer echten Anwendung würde dies auch zur Authentifikation des Benutzers dienen müssen)."
+
+#. Tag: programlisting
+#: Tutorial.xml:613
+#, no-c-format
+msgid ""
+"@Name(\"login\")\n"
+"public class Login {\n"
+"   \n"
+"   @In\n"
+"   private Actor actor;\n"
+"   \n"
+"   private String user;\n"
+"\n"
+"   public String getUser() {\n"
+"      return user;\n"
+"   }\n"
+"\n"
+"   public void setUser(String user) {\n"
+"      this.user = user;\n"
+"   }\n"
+"   \n"
+"   public String login()\n"
+"   {\n"
+"      actor.setId(user);\n"
+"      return \"/todo.jsp\";\n"
+"   }\n"
+"}"
+msgstr ""
+"@Name(\"login\")\n"
+"public class Login {\n"
+"   \n"
+"   @In\n"
+"   private Actor actor;\n"
+"   \n"
+"   private String user;\n"
+"\n"
+"   public String getUser() {\n"
+"      return user;\n"
+"   }\n"
+"\n"
+"   public void setUser(String user) {\n"
+"      this.user = user;\n"
+"   }\n"
+"   \n"
+"   public String login()\n"
+"   {\n"
+"      actor.setId(user);\n"
+"      return \"/todo.jsp\";\n"
+"   }\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:614
+#, no-c-format
+msgid ""
+"Here we see the use of <literal>@In</literal> to inject the built-in "
+"<literal>Actor</literal> component."
+msgstr "Hier sehen wir die Verwendung von <literal>@In</literal> zur Einspeisung der eingebauten <literal>Actor</literal>-Komponente."
+
+#. Tag: para
+#: Tutorial.xml:617
+#, no-c-format
+msgid "The JSP itself is trivial:"
+msgstr "Die JSP selbst ist trivial:"
+
+#. Tag: programlisting
+#: Tutorial.xml:620
+#, no-c-format
+msgid ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"%&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"%&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Login&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Login&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    &lt;h:form&gt;\n"
+"      &lt;div&gt;\n"
+"        &lt;h:inputText value=\"#{login.user}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Login\" action=\"#{login.login}\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"    &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"%&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"%&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Login&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Login&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    &lt;h:form&gt;\n"
+"      &lt;div&gt;\n"
+"        &lt;h:inputText value=\"#{login.user}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Login\" action=\"#{login.login}\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"    &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+
+#. Tag: para
+#: Tutorial.xml:621
+#, no-c-format
+msgid ""
+"The second JavaBean is responsible for starting business process instances, "
+"and ending tasks."
+msgstr "Das zweite JavaBean ist verantwortlich für den Start von Business-Prozess-Instanzen und für das Beenden von Tasks."
+
+#. Tag: programlisting
+#: Tutorial.xml:630
+#, no-c-format
+msgid ""
+"@Name(\"todoList\")\n"
+"public class TodoList {\n"
+"   \n"
+"   private String description;\n"
+"   \n"
+"   public String getDescription()\n"
+"   {\n"
+"      return description;\n"
+"   }\n"
+"\n"
+"   public void setDescription(String description) {\n"
+"      this.description = description;\n"
+"   }\n"
+"   \n"
+"   @CreateProcess(definition=\"todo\")\n"
+"   public void createTodo() {}\n"
+"   \n"
+"   @StartTask @EndTask\n"
+"   public void done() {}\n"
+"\n"
+"}"
+msgstr ""
+"@Name(\"todoList\")\n"
+"public class TodoList {\n"
+"   \n"
+"   private String description;\n"
+"   \n"
+"   public String getDescription()\n"
+"   {\n"
+"      return description;\n"
+"   }\n"
+"\n"
+"   public void setDescription(String description) {\n"
+"      this.description = description;\n"
+"   }\n"
+"   \n"
+"   @CreateProcess(definition=\"todo\")\n"
+"   public void createTodo() {}\n"
+"   \n"
+"   @StartTask @EndTask\n"
+"   public void done() {}\n"
+"\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:633
+#, no-c-format
+msgid ""
+"The description property accepts user input form the JSP page, and exposes "
+"it to the process definition, allowing the task description to be set."
+msgstr "Die Description-Property akzeptiert Benutzereingaben von der JSP-Seite und legt sie der Prozessdefinition offen, so dass die Task-Description eingestellt werden kann."
+
+#. Tag: para
+#: Tutorial.xml:638
+#, no-c-format
+msgid ""
+"The Seam <literal>@CreateProcess</literal> annotation creates a new jBPM "
+"process instance for the named process definition."
+msgstr "Die Seam <literal>@CreateProcess</literal>-Annotation erstellt eine neue jBPM-Prozessinstanz für die genannte Prozessdefinition."
+
+#. Tag: para
+#: Tutorial.xml:643
+#, no-c-format
+msgid ""
+"The Seam <literal>@StartTask</literal> annotation starts work on a task. The "
+"<literal>@EndTask</literal> ends the task, and allows the business process "
+"execution to resume."
+msgstr "Die Seam <literal>@StartTask</literal>-Annotation startet die Arbeit an einer Task. <literal>@EndTask</literal> beendet die Task und erlaubt die Fortsetzung der Ausführung des Business-Prozesses."
+
+#. Tag: para
+#: Tutorial.xml:650
+#, no-c-format
+msgid ""
+"In a more realistic example, <literal>@StartTask</literal> and "
+"<literal>@EndTask</literal> would not appear on the same method, because "
+"there is usually work to be done using the application in order to complete "
+"the task."
+msgstr ""
+"In einem realistischeren Beispiel würden <literal>@StartTask</literal> und "
+"<literal>@EndTask</literal> nicht bei derselben Methode erscheinen, weil normalerweise Arbeit unter Verwendung der Anwendung durchgeführt werden muss, um die Task abzuschließen."
+
+#. Tag: para
+#: Tutorial.xml:653
+#, no-c-format
+msgid "Finally, the meat of the application is in <literal>todo.jsp</literal>:"
+msgstr "Das Herzstück der Anwendung ist in <literal>todo.jsp</literal>:"
+
+#. Tag: programlisting
+#: Tutorial.xml:656
+#, no-c-format
+msgid ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://jboss.com/products/seam/taglib\" prefix=\"s\" %"
+"&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Todo List&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Todo List&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"   &lt;h:form id=\"list\"&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:outputText value=\"There are no todo items.\" rendered=\"#"
+"{empty \n"
+"                                       taskInstanceList}\"/&gt;\n"
+"         &lt;h:dataTable value=\"#{taskInstanceList}\" var=\"task\" rendered="
+"\"#{not empty \n"
+"                                       taskInstanceList}\"&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Description\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.description}\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Created\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:outputText value=\"#{task.taskMgmtInstance."
+"processInstance.start}\"&gt;\n"
+"                    &lt;f:convertDateTime type=\"date\"/&gt;\n"
+"                &lt;/h:outputText&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Priority\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.priority}\" style=\"width: 30"
+"\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Due Date\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.dueDate}\" style=\"width: 100"
+"\"&gt;\n"
+"                    &lt;f:convertDateTime type=\"date\" dateStyle=\"short\"/"
+"&gt;\n"
+"                &lt;/h:inputText&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;s:button value=\"Done\" action=\"#{todoList.done}\" "
+"taskInstance=\"#{task}\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"         &lt;/h:dataTable&gt;\n"
+"      &lt;/div&gt;\n"
+"      &lt;div&gt;\n"
+"      &lt;h:messages/&gt;\n"
+"      &lt;/div&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:commandButton value=\"Update Items\" action=\"update\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"   &lt;h:form id=\"new\"&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:inputText value=\"#{todoList.description}\"/&gt;\n"
+"         &lt;h:commandButton value=\"Create New Item\" action=\"#{todoList."
+"createTodo}\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://jboss.com/products/seam/taglib\" prefix=\"s\" %"
+"&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Todo List&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Todo List&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"   &lt;h:form id=\"list\"&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:outputText value=\"There are no todo items.\" rendered=\"#"
+"{empty \n"
+"                                       taskInstanceList}\"/&gt;\n"
+"         &lt;h:dataTable value=\"#{taskInstanceList}\" var=\"task\" rendered="
+"\"#{not empty \n"
+"                                       taskInstanceList}\"&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Description\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.description}\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Created\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:outputText value=\"#{task.taskMgmtInstance."
+"processInstance.start}\"&gt;\n"
+"                    &lt;f:convertDateTime type=\"date\"/&gt;\n"
+"                &lt;/h:outputText&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Priority\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.priority}\" style=\"width: 30"
+"\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Due Date\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.dueDate}\" style=\"width: 100"
+"\"&gt;\n"
+"                    &lt;f:convertDateTime type=\"date\" dateStyle=\"short\"/"
+"&gt;\n"
+"                &lt;/h:inputText&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;s:button value=\"Done\" action=\"#{todoList.done}\" "
+"taskInstance=\"#{task}\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"         &lt;/h:dataTable&gt;\n"
+"      &lt;/div&gt;\n"
+"      &lt;div&gt;\n"
+"      &lt;h:messages/&gt;\n"
+"      &lt;/div&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:commandButton value=\"Update Items\" action=\"update\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"   &lt;h:form id=\"new\"&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:inputText value=\"#{todoList.description}\"/&gt;\n"
+"         &lt;h:commandButton value=\"Create New Item\" action=\"#{todoList."
+"createTodo}\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+
+#. Tag: para
+#: Tutorial.xml:657
+#, no-c-format
+msgid "Let&#39;s take this one piece at a time."
+msgstr "Gehen wir Schritt für Schritt vor."
+
+#. Tag: para
+#: Tutorial.xml:660
+#, no-c-format
+msgid ""
+"The page renders a list of tasks, which it gets from a built-in Seam "
+"component named <literal>taskInstanceList</literal>. The list is defined "
+"inside a JSF form."
+msgstr "Die Seite rendert eine Liste von Tasks, die sie von einer eingebauten Seam-Komponente namens <literal>taskInstanceList</literal> erhält. Die Liste ist innerhalb eines JSF-Formulars definiert."
+
+#. Tag: programlisting
+#: Tutorial.xml:663
+#, no-c-format
+msgid ""
+"&lt;h:form id=\"list\"&gt;\n"
+"   &lt;div&gt;\n"
+"      &lt;h:outputText value=\"There are no todo items.\" rendered=\"#{empty "
+"taskInstanceList}\"/&gt;\n"
+"      &lt;h:dataTable value=\"#{taskInstanceList}\" var=\"task\" rendered=\"#"
+"{not empty taskInstanceList}\"&gt;\n"
+"         ...\n"
+"      &lt;/h:dataTable&gt;\n"
+"   &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h:form id=\"list\"&gt;\n"
+"   &lt;div&gt;\n"
+"      &lt;h:outputText value=\"There are no todo items.\" rendered=\"#{empty "
+"taskInstanceList}\"/&gt;\n"
+"      &lt;h:dataTable value=\"#{taskInstanceList}\" var=\"task\" rendered=\"#"
+"{not empty taskInstanceList}\"&gt;\n"
+"         ...\n"
+"      &lt;/h:dataTable&gt;\n"
+"   &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+
+#. Tag: para
+#: Tutorial.xml:664
+#, no-c-format
+msgid ""
+"Each element of the list is an instance of the jBPM class "
+"<literal>TaskInstance</literal>. The following code simply displays the "
+"interesting properties of each task in the list. For the description, "
+"priority and due date, we use input controls, to allow the user to update "
+"these values."
+msgstr ""
+"Jedes Element der Liste ist eine Instanz der jBPM-Klasse "
+"<literal>TaskInstance</literal>. Der folgende Code zeigt einfach die interessanten Properties jeder Task in der Liste an. Für die Beschreibung, "
+"Priorität und Fälligkeitsdatum verwenden wir Eingabekontrollen, um dem Benutzer die Aktualisierung dieser Werte zu ermöglichen."
+
+#. Tag: programlisting
+#: Tutorial.xml:667
+#, no-c-format
+msgid ""
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"       &lt;h:outputText value=\"Description\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.description}\"/&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Created\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:outputText value=\"#{task.taskMgmtInstance.processInstance.start}"
+"\"&gt;\n"
+"        &lt;f:convertDateTime type=\"date\"/&gt;\n"
+"    &lt;/h:outputText&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Priority\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.priority}\" style=\"width: 30\"/&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Due Date\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.dueDate}\" style=\"width: 100\"&gt;\n"
+"        &lt;f:convertDateTime type=\"date\" dateStyle=\"short\"/&gt;\n"
+"    &lt;/h:inputText&gt;\n"
+"&lt;/h:column&gt;"
+msgstr ""
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"       &lt;h:outputText value=\"Description\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.description}\"/&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Created\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:outputText value=\"#{task.taskMgmtInstance.processInstance.start}"
+"\"&gt;\n"
+"        &lt;f:convertDateTime type=\"date\"/&gt;\n"
+"    &lt;/h:outputText&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Priority\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.priority}\" style=\"width: 30\"/&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Due Date\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.dueDate}\" style=\"width: 100\"&gt;\n"
+"        &lt;f:convertDateTime type=\"date\" dateStyle=\"short\"/&gt;\n"
+"    &lt;/h:inputText&gt;\n"
+"&lt;/h:column&gt;"
+
+#. Tag: para
+#: Tutorial.xml:668
+#, no-c-format
+msgid ""
+"This button ends the task by calling the action method annotated "
+"<literal>@StartTask @EndTask</literal>. It passes the task id to Seam as a "
+"request parameter:"
+msgstr "Diese Schaltfläche beendet die Task durch Aufruf der mit <literal>@StartTask @EndTask</literal> annotierten Action-Methode. ISie gibt die Task-ID als Anfragenparameter an Seam weiter:"
+
+#. Tag: programlisting
+#: Tutorial.xml:671
+#, no-c-format
+msgid ""
+"&lt;h:column&gt;\n"
+"    &lt;s:button value=\"Done\" action=\"#{todoList.done}\" taskInstance=\"#"
+"{task}\"/&gt;\n"
+"&lt;/h:column&gt;"
+msgstr ""
+"&lt;h:column&gt;\n"
+"    &lt;s:button value=\"Done\" action=\"#{todoList.done}\" taskInstance=\"#"
+"{task}\"/&gt;\n"
+"&lt;/h:column&gt;"
+
+#. Tag: para
+#: Tutorial.xml:672
+#, no-c-format
+msgid ""
+"(Note that this is using a Seam <literal>&lt;s:button&gt;</literal> JSF "
+"control from the <literal>seam-ui.jar</literal> package.)"
+msgstr "(Beachten Sie, dass dies eine Seam <literal>&lt;s:button&gt;</literal> JSF-Kontrolle aus dem <literal>seam-ui.jar</literal>-Paket verwendet)."
+
+#. Tag: para
+#: Tutorial.xml:675
+#, no-c-format
+msgid ""
+"This button is used to update the properties of the tasks. When the form is "
+"submitted, Seam and jBPM will make any changes to the tasks persistent. "
+"There is no need for any action listener method:"
+msgstr ""
+"DIese Schaltfläche wird zur Aktualisierung der Properties der Tasks verwendet. Wird das Formular abgeschickt, machen Seam und jBPM sämtliche Änderungen an Tasks persistent. "
+"Eine Action-Listener-Methode wird dabei nicht benötigt:"
+
+#. Tag: programlisting
+#: Tutorial.xml:678
+#, no-c-format
+msgid "&lt;h:commandButton value=\"Update Items\" action=\"update\"/&gt;"
+msgstr "&lt;h:commandButton value=\"Update Items\" action=\"update\"/&gt;"
+
+#. Tag: para
+#: Tutorial.xml:679
+#, no-c-format
+msgid ""
+"A second form on the page is used to create new items, by calling the action "
+"method annotated <literal>@CreateProcess</literal>."
+msgstr "Ein zweites Formular auf der Seite wird zum Erstellen neuer Posten verwendet, durch Aufruf der <literal>@CreateProcess</literal> annotierten Action-Methode."
+
+#. Tag: programlisting
+#: Tutorial.xml:682
+#, no-c-format
+msgid ""
+"&lt;h:form id=\"new\"&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:inputText value=\"#{todoList.description}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Create New Item\" action=\"#{todoList."
+"createTodo}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h:form id=\"new\"&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:inputText value=\"#{todoList.description}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Create New Item\" action=\"#{todoList."
+"createTodo}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+
+#. Tag: para
+#: Tutorial.xml:683
+#, no-c-format
+msgid ""
+"There are several other files needed for the example, but they are just "
+"standard jBPM and Seam configuration and not very interesting."
+msgstr "Mehrere andere Dateien werden für das Beispiel benötigt, sind aber lediglich Standard jBPM- und Seam-Konfiguration und daher nicht sehr interessant."
+
+#. Tag: para
+#: Tutorial.xml:690 Tutorial.xml:805 Tutorial.xml:1145 Tutorial.xml:1171
+#: Tutorial.xml:1184
+#, no-c-format
+msgid "TODO"
+msgstr "TODO"
+
+#. Tag: title
+#: Tutorial.xml:698
+#, no-c-format
+msgid "Seam pageflow: the numberguess example"
+msgstr "Seam-Pageflow: Das numberguess-Beispiel"
+
+#. Tag: para
+#: Tutorial.xml:699
+#, no-c-format
+msgid ""
+"For Seam applications with relatively freeform (ad hoc) navigation, JSF/Seam "
+"navigation rules are a perfectly good way to define the page flow. For "
+"applications with a more constrained style of navigation, especially for "
+"user interfaces which are more stateful, navigation rules make it difficult "
+"to really understand the flow of the system. To understand the flow, you "
+"need to piece it together from the view pages, the actions and the "
+"navigation rules."
+msgstr "Für Seam Anwendungen deren Navigation relativ frei in der Form ist with (ad hoc), eignen sich die JSF/Seam Navigationsregeln perfekt zur Definition des Pageflow. Für Anwendungen mit einem eher eingeschränkten Navigationsstil, insbesondere für Benutzer-Interfaces die mehr \"stateful\" sind, machen Navigationsregeln es schwierig den Fluss des Systems richtig zu verstehen. Um den Fluss zu verstehen, müssen Sie diesen aus den View-Pages (Ansichtsseiten), den Actions und Navigationsregeln zusammensuchen."
+
+#. Tag: para
+#: Tutorial.xml:702
+#, no-c-format
+msgid ""
+"Seam allows you to use a jPDL process definition to define pageflow. The "
+"simple number guessing example shows how this is done."
+msgstr "Seam gestattet Ihnen die Verwendung einer jPDL-Prozessdefinition zur Definition des Pageflow. Das einfache Beispiel zum Zahlenraten (\"Number Guessing\") zeigt, wie dies funktioniert."
+
+#. Tag: para
+#: Tutorial.xml:715
+#, no-c-format
+msgid ""
+"The example is implemented using one JavaBean, three JSP pages and a jPDL "
+"pageflow definition. Let&#39;s begin with the pageflow:"
+msgstr "Das Beispiel wird unter Verwendung eines JavaBeans, dreier JSP-Seiten und einer jPDL-Pageflow-Definition implementiert. Fangen wir mit dem Pageflow an:"
+
+#. Tag: programlisting
+#: Tutorial.xml:725
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"numberGuess\"&gt;\n"
+"   \n"
+"   &lt;start-page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"          &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"      &lt;/transition&gt;\n"
+"   &lt;/start-page&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess."
+"correctGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateRemainingGuesses\" expression=\"#{numberGuess."
+"lastGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"lose\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"displayGuess\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"lose\" view-id=\"/lose.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+"&lt;pageflow-definition name=\"numberGuess\"&gt;\n"
+"   \n"
+"   &lt;start-page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"          &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"      &lt;/transition&gt;\n"
+"   &lt;/start-page&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess."
+"correctGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateRemainingGuesses\" expression=\"#{numberGuess."
+"lastGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"lose\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"displayGuess\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"lose\" view-id=\"/lose.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+
+#. Tag: para
+#: Tutorial.xml:728
+#, no-c-format
+msgid ""
+"The <literal>&lt;page&gt;</literal> element defines a wait state where the "
+"system displays a particular JSF view and waits for user input. The "
+"<literal>view-id</literal> is the same JSF view id used in plain JSF "
+"navigation rules. The <literal>redirect</literal> attribute tells Seam to "
+"use post-then-redirect when navigating to the page. (This results in "
+"friendly browser URLs.)"
+msgstr ""
+"Das <literal>&lt;page&gt;</literal>-Element definiert einen Wartestatus, während dem das System eine bestimmte JSF-Ansicht anzeigt und auf Benutzereingaben wartet. Die <literal>view-id</literal> ist dieselbe JSF View-ID, wie sie in einfachen JSF-Navigationsregeln verwendet wird. Das <literal>redirect</literal>-Attribut teilt Seam mit, dass es "
+"bei der Navigation zu der Seite Senden und dann Umleiten (post/redirect) soll. (Dies führt zu Browser-freundlichen URLs)."
+
+#. Tag: para
+#: Tutorial.xml:733
+#, no-c-format
+msgid ""
+"The <literal>&lt;transition&gt;</literal> element names a JSF outcome. The "
+"transition is triggered when a JSF action results in that outcome. Execution "
+"will then proceed to the next node of the pageflow graph, after invocation "
+"of any jBPM transition actions."
+msgstr "Das <literal>&lt;transition&gt;</literal>-Element benennt ein JSF-Ergebnis. Die Transition wird ausgelöst, wenn eine JSF-Action in diesem Ergebnis resultiert. Die Ausführung wird dann am nächsten Node des Pageflow-Diagramms fortgesetzt, nach Aufruf etwaiger jBPM Transition-Action."
+
+#. Tag: para
+#: Tutorial.xml:738
+#, no-c-format
+msgid ""
+"A transition <literal>&lt;action&gt;</literal> is just like a JSF action, "
+"except that it occurs when a jBPM transition occurs. The transition action "
+"can invoke any Seam component."
+msgstr "Eine Transitions-<literal>&lt;action&gt;</literal> ist ganz wie eine JSF-Action, nur dass sie vorkommt, wenn eine jBPM-Transition vorkommt. Die Transitions-Action kann eine beliebige Seam-Komponente aufrufen."
+
+#. Tag: para
+#: Tutorial.xml:743
+#, no-c-format
+msgid ""
+"A <literal>&lt;decision&gt;</literal> node branches the pageflow, and "
+"determines the next node to execute by evaluating a JSF EL expression."
+msgstr "Ein <literal>&lt;decision&gt;</literal>-Node verzweigt den Pageflow und bestimmt den nächsten auszuführenden Node fest, indem ein JSF EL-Ausdruck evaluiert wird."
+
+#. Tag: para
+#: Tutorial.xml:750
+#, no-c-format
+msgid "Here is what the pageflow looks like in the JBossIDE pageflow editor:"
+msgstr "Hier sehen Sie wie der Pageflow im JBossIDE Pageflow-Editor aussieht:"
+
+#. Tag: para
+#: Tutorial.xml:761
+#, no-c-format
+msgid ""
+"Now that we have seen the pageflow, it is very, very easy to understand the "
+"rest of the application!"
+msgstr "Nun, da wir den Pageflow gesehen haben, ist es ganz einfach, auch den Rest der Anwendung zu verstehen!"
+
+#. Tag: para
+#: Tutorial.xml:764
+#, no-c-format
+msgid "Here is the main page of the application, <literal>numberGuess.jsp</literal>:"
+msgstr "Hier ist die Hauptseite der Anwendung <literal>numberGuess.jsp</literal>:"
+
+#. Tag: programlisting
+#: Tutorial.xml:767
+#, no-c-format
+msgid ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"%&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"%&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Guess a number...&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Guess a number...&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    &lt;h:form&gt;\n"
+"        &lt;h:outputText value=\"Higher!\" rendered=\"#{numberGuess."
+"randomNumber&gt;numberGuess.currentGuess}\" /&gt;\n"
+"        &lt;h:outputText value=\"Lower!\" rendered=\"#{numberGuess."
+"randomNumber&lt;numberGuess.currentGuess}\" /&gt;\n"
+"        &lt;br /&gt;\n"
+"        I&#39;m thinking of a number between &lt;h:outputText value=\"#"
+"{numberGuess.smallest}\" /&gt; and \n"
+"        &lt;h:outputText value=\"#{numberGuess.biggest}\" /&gt;. You have \n"
+"        &lt;h:outputText value=\"#{numberGuess.remainingGuesses}\" /&gt; "
+"guesses.\n"
+"        &lt;br /&gt;\n"
+"        Your guess: \n"
+"        &lt;h:inputText value=\"#{numberGuess.currentGuess}\" id=\"guess\" "
+"required=\"true\"&gt;\n"
+"            &lt;f:validateLongRange\n"
+"                maximum=\"#{numberGuess.biggest}\" \n"
+"                minimum=\"#{numberGuess.smallest}\"/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"        &lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"guess"
+"\" /&gt;\n"
+"        &lt;br/&gt;\n"
+"        &lt;h:message for=\"guess\" style=\"color: red\"/&gt;\n"
+"    &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"%&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"%&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Guess a number...&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Guess a number...&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    &lt;h:form&gt;\n"
+"        &lt;h:outputText value=\"Higher!\" rendered=\"#{numberGuess."
+"randomNumber&gt;numberGuess.currentGuess}\" /&gt;\n"
+"        &lt;h:outputText value=\"Lower!\" rendered=\"#{numberGuess."
+"randomNumber&lt;numberGuess.currentGuess}\" /&gt;\n"
+"        &lt;br /&gt;\n"
+"        I&#39;m thinking of a number between &lt;h:outputText value=\"#"
+"{numberGuess.smallest}\" /&gt; and \n"
+"        &lt;h:outputText value=\"#{numberGuess.biggest}\" /&gt;. You have \n"
+"        &lt;h:outputText value=\"#{numberGuess.remainingGuesses}\" /&gt; "
+"guesses.\n"
+"        &lt;br /&gt;\n"
+"        Your guess: \n"
+"        &lt;h:inputText value=\"#{numberGuess.currentGuess}\" id=\"guess\" "
+"required=\"true\"&gt;\n"
+"            &lt;f:validateLongRange\n"
+"                maximum=\"#{numberGuess.biggest}\" \n"
+"                minimum=\"#{numberGuess.smallest}\"/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"        &lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"guess"
+"\" /&gt;\n"
+"        &lt;br/&gt;\n"
+"        &lt;h:message for=\"guess\" style=\"color: red\"/&gt;\n"
+"    &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+
+#. Tag: para
+#: Tutorial.xml:768
+#, no-c-format
+msgid ""
+"Notice how the command button names the <literal>guess</literal> transition "
+"instead of calling an action directly."
+msgstr "Beachten Sie, wie die Befehls-Schaltfläche (\"Command\"-Schaltfläche) die <literal>guess</literal>-Transition benennt, statt eine Action direkt aufzurufen."
+
+#. Tag: para
+#: Tutorial.xml:771
+#, no-c-format
+msgid "The <literal>win.jsp</literal> page is predictable:"
+msgstr "Die <literal>win.jsp</literal>-Seite ist vorhersagbar:"
+
+#. Tag: programlisting
+#: Tutorial.xml:774
+#, no-c-format
+msgid ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"%&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"%&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;You won!&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;You won!&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    Yes, the answer was &lt;h:outputText value=\"#{numberGuess.currentGuess}"
+"\" /&gt;.\n"
+"    It took you &lt;h:outputText value=\"#{numberGuess.guessCount}\" /&gt; "
+"guesses.\n"
+"    Would you like to &lt;a href=\"numberGuess.seam\"&gt;play again&lt;/"
+"a&gt;?\n"
+"  &lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"%&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"%&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;You won!&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;You won!&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    Yes, the answer was &lt;h:outputText value=\"#{numberGuess.currentGuess}"
+"\" /&gt;.\n"
+"    It took you &lt;h:outputText value=\"#{numberGuess.guessCount}\" /&gt; "
+"guesses.\n"
+"    Would you like to &lt;a href=\"numberGuess.seam\"&gt;play again&lt;/"
+"a&gt;?\n"
+"  &lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+
+#. Tag: para
+#: Tutorial.xml:775
+#, no-c-format
+msgid ""
+"As is <literal>lose.jsp</literal> (which I can&#39;t be bothered copy/"
+"pasting). Finally, the JavaBean Seam component:"
+msgstr "Wie auch <literal>lose.jsp</literal> (welches hier nicht kopiert/eingefügt wird). Schließlich noch die JavaBean Seam-Komponente:"
+
+#. Tag: programlisting
+#: Tutorial.xml:783
+#, no-c-format
+msgid ""
+"@Name(\"numberGuess\")\n"
+"@Scope(ScopeType.CONVERSATION)\n"
+"public class NumberGuess {\n"
+"   \n"
+"   private int randomNumber;\n"
+"   private Integer currentGuess;\n"
+"   private int biggest;\n"
+"   private int smallest;\n"
+"   private int guessCount;\n"
+"   private int maxGuesses;\n"
+"   \n"
+"   @Create \n"
+"   @Begin(pageflow=\"numberGuess\")\n"
+"   public void begin()\n"
+"   {\n"
+"      randomNumber = new Random().nextInt(100);\n"
+"      guessCount = 0;\n"
+"      biggest = 100;\n"
+"      smallest = 1;\n"
+"   }\n"
+"   \n"
+"   public void setCurrentGuess(Integer guess)\n"
+"   {\n"
+"      this.currentGuess = guess;\n"
+"   }\n"
+"   \n"
+"   public Integer getCurrentGuess()\n"
+"   {\n"
+"      return currentGuess;\n"
+"   }\n"
+"   \n"
+"   public void guess()\n"
+"   {\n"
+"      if (currentGuess&gt;randomNumber)\n"
+"      {\n"
+"         biggest = currentGuess - 1;\n"
+"      }\n"
+"      if (currentGuess&lt;randomNumber)\n"
+"      {\n"
+"         smallest = currentGuess + 1;\n"
+"      }\n"
+"      guessCount ++;\n"
+"   }\n"
+"   \n"
+"   public boolean isCorrectGuess()\n"
+"   {\n"
+"      return currentGuess==randomNumber;\n"
+"   }\n"
+"   \n"
+"   public int getBiggest()\n"
+"   {\n"
+"      return biggest;\n"
+"   }\n"
+"   \n"
+"   public int getSmallest()\n"
+"   {\n"
+"      return smallest;\n"
+"   }\n"
+"   \n"
+"   public int getGuessCount()\n"
+"   {\n"
+"      return guessCount;\n"
+"   }\n"
+"   \n"
+"   public boolean isLastGuess()\n"
+"   {\n"
+"      return guessCount==maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getRemainingGuesses() {\n"
+"      return maxGuesses-guessCount;\n"
+"   }\n"
+"\n"
+"   public void setMaxGuesses(int maxGuesses) {\n"
+"      this.maxGuesses = maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getMaxGuesses() {\n"
+"      return maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getRandomNumber() {\n"
+"      return randomNumber;\n"
+"   }\n"
+"}"
+msgstr ""
+"@Name(\"numberGuess\")\n"
+"@Scope(ScopeType.CONVERSATION)\n"
+"public class NumberGuess {\n"
+"   \n"
+"   private int randomNumber;\n"
+"   private Integer currentGuess;\n"
+"   private int biggest;\n"
+"   private int smallest;\n"
+"   private int guessCount;\n"
+"   private int maxGuesses;\n"
+"   \n"
+"   @Create \n"
+"   @Begin(pageflow=\"numberGuess\")\n"
+"   public void begin()\n"
+"   {\n"
+"      randomNumber = new Random().nextInt(100);\n"
+"      guessCount = 0;\n"
+"      biggest = 100;\n"
+"      smallest = 1;\n"
+"   }\n"
+"   \n"
+"   public void setCurrentGuess(Integer guess)\n"
+"   {\n"
+"      this.currentGuess = guess;\n"
+"   }\n"
+"   \n"
+"   public Integer getCurrentGuess()\n"
+"   {\n"
+"      return currentGuess;\n"
+"   }\n"
+"   \n"
+"   public void guess()\n"
+"   {\n"
+"      if (currentGuess&gt;randomNumber)\n"
+"      {\n"
+"         biggest = currentGuess - 1;\n"
+"      }\n"
+"      if (currentGuess&lt;randomNumber)\n"
+"      {\n"
+"         smallest = currentGuess + 1;\n"
+"      }\n"
+"      guessCount ++;\n"
+"   }\n"
+"   \n"
+"   public boolean isCorrectGuess()\n"
+"   {\n"
+"      return currentGuess==randomNumber;\n"
+"   }\n"
+"   \n"
+"   public int getBiggest()\n"
+"   {\n"
+"      return biggest;\n"
+"   }\n"
+"   \n"
+"   public int getSmallest()\n"
+"   {\n"
+"      return smallest;\n"
+"   }\n"
+"   \n"
+"   public int getGuessCount()\n"
+"   {\n"
+"      return guessCount;\n"
+"   }\n"
+"   \n"
+"   public boolean isLastGuess()\n"
+"   {\n"
+"      return guessCount==maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getRemainingGuesses() {\n"
+"      return maxGuesses-guessCount;\n"
+"   }\n"
+"\n"
+"   public void setMaxGuesses(int maxGuesses) {\n"
+"      this.maxGuesses = maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getMaxGuesses() {\n"
+"      return maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getRandomNumber() {\n"
+"      return randomNumber;\n"
+"   }\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:786
+#, no-c-format
+msgid ""
+"The first time a JSP page asks for a <literal>numberGuess</literal> "
+"component, Seam will create a new one for it, and the <literal>@Create</"
+"literal> method will be invoked, allowing the component to initialize itself."
+msgstr "Wenn eine JSP-Seite erstmals nach einer <literal>numberGuess</literal>-Komponente anfragt, so erstellt Seam eine neue dafür, und die <literal>@Create</literal>-Methode wird aufgerufen, wodurch die Komponente sich selbst initialisieren kann."
+
+#. Tag: para
+#: Tutorial.xml:791
+#, no-c-format
+msgid ""
+"The <literal>@Begin</literal> annotation starts a Seam "
+"<emphasis>conversation</emphasis> (much more about that later), and "
+"specifies the pageflow definition to use for the conversation&#39;s page "
+"flow."
+msgstr ""
+"Die <literal>@Begin</literal>-Annotation startet eine Seam-"
+"<emphasis>Konversation</emphasis> (mehr dazu später) und "
+"legt die für den Pageflow der Konversation zu verwendende Pageflow-Definition fest."
+
+#. Tag: para
+#: Tutorial.xml:798
+#, no-c-format
+msgid ""
+"As you can see, this Seam component is pure business logic! It doesn&#39;t "
+"need to know anything at all about the user interaction flow. This makes the "
+"component potentially more reuseable."
+msgstr "Wie Sie sehen, handelt es sich bei dieser Seam-Komponente um reine Business-Logik! Sie benötigt keinerlei Informationen zum Benutzer-Interaktionsfluss (\"Interaction-Flow\"). Dadurch wird die Komponente potenziell auf breiter Ebene wieder einsetzbar."
+
+#. Tag: title
+#: Tutorial.xml:813
+#, no-c-format
+msgid "A complete Seam application: the Hotel Booking example"
+msgstr "Eine vollständige Seam-Anwendung: Das Hotelbuchungsbeispiel"
+
+#. Tag: title
+#: Tutorial.xml:815
+#, no-c-format
+msgid "Introduction"
+msgstr "Einführung"
+
+#. Tag: para
+#: Tutorial.xml:816
+#, no-c-format
+msgid ""
+"The booking application is a complete hotel room reservation system "
+"incorporating the following features:"
+msgstr "Die Buchungsanwendung ist ein vollständiges Hotelzimmer-Reservierungssystem mit den folgenden Features:"
+
+#. Tag: para
+#: Tutorial.xml:821
+#, no-c-format
+msgid "User registration"
+msgstr "Benutzerregistrierung"
+
+#. Tag: para
+#: Tutorial.xml:826
+#, no-c-format
+msgid "Login"
+msgstr "Login"
+
+#. Tag: para
+#: Tutorial.xml:831
+#, no-c-format
+msgid "Logout"
+msgstr "Logout"
+
+#. Tag: para
+#: Tutorial.xml:836
+#, no-c-format
+msgid "Set password"
+msgstr "Passwort einstellen"
+
+#. Tag: para
+#: Tutorial.xml:841
+#, no-c-format
+msgid "Hotel search"
+msgstr "Hotelsuche"
+
+#. Tag: para
+#: Tutorial.xml:846
+#, no-c-format
+msgid "Hotel selection"
+msgstr "Hotelauswahl"
+
+#. Tag: para
+#: Tutorial.xml:851
+#, no-c-format
+msgid "Room reservation"
+msgstr "Zimmerreservierung"
+
+#. Tag: para
+#: Tutorial.xml:856
+#, no-c-format
+msgid "Reservation confirmation"
+msgstr "Reservierungsbestätigung"
+
+#. Tag: para
+#: Tutorial.xml:861
+#, no-c-format
+msgid "Existing reservation list"
+msgstr "Bestehende Reservierungsliste"
+
+#. Tag: screeninfo
+#: Tutorial.xml:866
+#, no-c-format
+msgid "Booking example"
+msgstr "Buchungsbeispiel"
+
+#. Tag: para
+#: Tutorial.xml:874
+#, no-c-format
+msgid ""
+"The booking application uses JSF, EJB 3.0 and Seam, together with Facelets "
+"for the view. There is also a port of this application to JSF, Facelets, "
+"Seam, JavaBeans and Hibernate3."
+msgstr "Die Buchungsanwendung verwendet JSF, EJB 3.0 und Seam gemeinsam mit Facelets für die Ansicht. Es gibt auch einen Port dieser Anwendung zu JSF, Facelets, Seam, JavaBeans und Hibernate3."
+
+#. Tag: para
+#: Tutorial.xml:877
+#, no-c-format
+msgid ""
+"One of the things you&#39;ll notice if you play with this application for "
+"long enough is that it is extremely <emphasis>robust</emphasis>. You can "
+"play with back buttons and browser refresh and opening multiple windows and "
+"entering nonsensical data as much as you like and you will find it very "
+"difficult to make the application crash. You might think that we spent weeks "
+"testing and fixing bugs to achive this. Actually, this is not the case. Seam "
+"was designed to make it very straightforward to build robust web "
+"applications and a lot of robustness that you are probably used to having to "
+"code yourself comes naturally and automatically with Seam."
+msgstr ""
+"Eine Sache, die Ihnen nach einer Weile bei dieser Anwendung auffallen wird ist die Tatsache, dass sie extrem <emphasis>robust</emphasis> ist. Sie können mit den \"Back\"-Schaltflächen zurückgehen, den Browser neu laden, mehrere Fenster gleichzeitig öffnen und unsinnige Daten eingeben, und Sie werden feststellen, dass die Anwendung kaum je abstürzt. Sie denken vielleicht, dass wir Wochen darauf verwendet haben, dies zu bewerkstelligen und Fehler zu beheben, aber dies ist nicht der Fall. Seam "
+"wurde zum Bau robuster Webanwendungen entwickelt und vieles an Robustheit an das Sie wahrscheinlich gewöhnt sind, wenn Sie selbst Code schreiben müssen kommt natürlich und automatisch mit Seam."
+
+#. Tag: para
+#: Tutorial.xml:880
+#, no-c-format
+msgid ""
+"As you browse the sourcecode of the example application, and learn how the "
+"application works, observe how the declarative state management and "
+"integrated validation has been used to achieve this robustness."
+msgstr "Während Sie durch den Quellcode der Beispielanwendung browsen und sehen, wie die Anwendung funktioniert, beobachten Sie wie das deklarative Status-Management und die integrierte Validierung verwendet wurden, um diese Robustheit zu erlangen."
+
+#. Tag: title
+#: Tutorial.xml:886
+#, no-c-format
+msgid "Overview of the booking example"
+msgstr "Übersicht über das Buchungsbeispiel"
+
+#. Tag: para
+#: Tutorial.xml:887
+#, no-c-format
+msgid ""
+"The project structure is identical to the previous one, to install and "
+"deploy this application, please refer to <xref linkend="
+"\"Seam_Reference_Guide-Seam_Tutorial-Try_the_examples\"/>. Once you&#39;ve "
+"successfully started the application, you can access it by pointing your "
+"browser to <ulink url=\"http://localhost:8080/seam-booking/"
+"\"><literal>http://localhost:8080/seam-booking/</literal></ulink>"
+msgstr ""
+"Die Projektstruktur ist identisch mit der vorherigen, Informationen zu Installation und Deployment dieser ANwendung finden Sie unter <xref linkend="
+"\"Seam_Reference_Guide-Seam_Tutorial-Try_the_examples\"/>. Nachdem Sie die Anwendung erfolgreich gestartet haben, können Sie darauf zugreifen, indem Sie Ihren Browser auf <ulink url=\"http://localhost:8080/seam-booking/"
+"\"><literal>http://localhost:8080/seam-booking/</literal></ulink> richten."
+
+#. Tag: para
+#: Tutorial.xml:890
+#, no-c-format
+msgid ""
+"Just nine classes (plus six session beans local interfaces) where used to "
+"implement this application. Six session bean action listeners contain all "
+"the business logic for the listed features."
+msgstr "Nur neun Klassen (plus sechs Session-Beans lokale Interfaces) wurden zur Implementierung dieser Anwendung verwendet. Sechs Session Bean Action-Listener enthalten die gesamte Business-Logik für die angeführten Features."
+
+#. Tag: para
+#: Tutorial.xml:895
+#, no-c-format
+msgid ""
+"<literal>BookingListAction</literal> retrieves existing bookings for the "
+"currently logged in user."
+msgstr "<literal>BookingListAction</literal> ruft bestehende Buchungen für den aktuell angemeldeten Benutzer ab."
+
+#. Tag: para
+#: Tutorial.xml:898
+#, no-c-format
+msgid ""
+"<literal>ChangePasswordAction</literal> updates the password of the "
+"currently logged in user."
+msgstr "<literal>ChangePasswordAction</literal> aktualisiert das Passwort des aktuell angemeldeten Benutzers."
+
+#. Tag: para
+#: Tutorial.xml:901
+#, no-c-format
+msgid ""
+"<literal>HotelBookingAction</literal> implements the core functionality of "
+"the application: hotel room searching, selection, booking and booking "
+"confirmation. This functionality is implemented as a <emphasis>conversation</"
+"emphasis>, so this is the most interesting class in the application."
+msgstr "<literal>HotelBookingAction</literal> implementiert die Kernfunktionalität der Anwendung: Hotelzimmersuche, Auswahl, Buchung und Buchungsbestätigung. Diese Funktionalität wird als eine <emphasis>Konversation</emphasis> implementiert und ist daher die interessanteste Klasse der Anwendung."
+
+#. Tag: para
+#: Tutorial.xml:904
+#, no-c-format
+msgid "<literal>RegisterAction</literal> registers a new system user."
+msgstr "<literal>RegisterAction</literal> registriert einen neuen Systembenutzer."
+
+#. Tag: para
+#: Tutorial.xml:907
+#, no-c-format
+msgid "Three entity beans implement the application&#39;s persistent domain model."
+msgstr "Drei Entity-Beans implementieren das persistente Domain-Modell der Anwendung."
+
+#. Tag: para
+#: Tutorial.xml:912
+#, no-c-format
+msgid "<literal>Hotel</literal> is an entity bean that represents a hotel"
+msgstr "<literal>Hotel</literal> ist ein Entity-Bean, das ein Hotel repräsentiert"
+
+#. Tag: para
+#: Tutorial.xml:917
+#, no-c-format
+msgid ""
+"<literal>Booking</literal> is an entity bean that represents an existing "
+"booking"
+msgstr "<literal>Booking</literal> ist ein Entity-Bean, das eine bestehende Buchung repräsentiert"
+
+#. Tag: para
+#: Tutorial.xml:922
+#, no-c-format
+msgid ""
+"<literal>User</literal> is an entity bean to represents a user who can make "
+"hotel bookings"
+msgstr "<literal>User</literal> ist ein Entity-Bean, das einen Benutzer repräsentiert, der Hotelbuchungen machen kann"
+
+#. Tag: title
+#: Tutorial.xml:930
+#, no-c-format
+msgid "Understanding Seam conversations"
+msgstr "Seam Konversationen verstehen"
+
+#. Tag: para
+#: Tutorial.xml:931
+#, no-c-format
+msgid ""
+"We encourage you browse the sourcecode at your pleasure. In this tutorial "
+"we&#39;ll concentrate upon one particular piece of functionality: hotel "
+"search, selection, booking and confirmation. From the point of view of the "
+"user, everything from selecting a hotel to confirming a booking is one "
+"continuous unit of work, a <emphasis>conversation</emphasis>. Searching, "
+"however, is <emphasis>not</emphasis> part of the conversation. The user can "
+"select multiple hotels from the same search results page, in different "
+"browser tabs."
+msgstr "Wir wollen Sie dazu ermutern, sich den Quellcode anzusehen so oft Sie möchten. In dieser Übung konzentrieren wir uns auf ein Herzstück der Funktionalität: Hotelsuche, Auswahl, Buchung und Bestätigung. Aus der Perspektive des Benutzers ist alles eine durchgehende Arbeitseinheit, eine <emphasis>Konversation</emphasis>. Jedoch ist die Suche <emphasis>kein</emphasis> Teil der Konversation. Der Benutzer kann mehrere Hotels von derselben Seite von Suchergebnissen in verschiedenen Browser-Tabs auswählen."
+
+#. Tag: para
+#: Tutorial.xml:934
+#, no-c-format
+msgid ""
+"Most web application architectures have no first class construct to "
+"represent a conversation. This causes enormous problems managing state "
+"associated with the conversation. Usually, Java web applications use a "
+"combination of two techniques: first, some state is thrown into the "
+"<literal>HttpSession</literal>; second, persistable state is flushed to the "
+"database after every request, and reconstructed from the database at the "
+"beginning of each new request."
+msgstr "Die meisten Architekturen bei Web-Anwendungen besitzen erste Klasse Konstrukt zur Darstellung einer Konversation. Dies führt zu enormen Problemen beim mit der Konversation assoziierten Statusmanagement. In der Regel verwenden Java Web-Anwendung eine Kombination von zwei Techniken: Ein Status wird zunächst der <literal>HttpSession</literal> angegeben; anschließend der persistierbare Status nach jeder Anfrage an die Datenbank geliefert und aus der Datenbank zu Beginn jeder neuen Anfrage rekonstruiert."
+
+#. Tag: para
+#: Tutorial.xml:937
+#, no-c-format
+msgid ""
+"Since the database is the least scalable tier, this often results in an "
+"utterly unacceptable lack of scalability. Added latency is also a problem, "
+"due to the extra traffic to and from the database on every request. To "
+"reduce this redundant traffic, Java applications often introduce a data "
+"(second-level) cache that keeps commonly accessed data between requests. "
+"This cache is necessarily inefficient, because invalidation is based upon an "
+"LRU policy instead of being based upon when the user has finished working "
+"with the data. Furthermore, because the cache is shared between many "
+"concurrent transactions, we&#39;ve introduced a whole raft of problem&#39;s "
+"associated with keeping the cached state consistent with the database."
+msgstr ""
+"Since the database is the least scalable tier, this often results in an "
+"utterly unacceptable lack of scalability. Added latency is also a problem, "
+"due to the extra traffic to and from the database on every request. To "
+"reduce this redundant traffic, Java applications often introduce a data "
+"(second-level) cache that keeps commonly accessed data between requests. "
+"This cache is necessarily inefficient, because invalidation is based upon an "
+"LRU policy instead of being based upon when the user has finished working "
+"with the data. Furthermore, because the cache is shared between many "
+"concurrent transactions, we&#39;ve introduced a whole raft of problem&#39;s "
+"associated with keeping the cached state consistent with the database."
+
+#. Tag: para
+#: Tutorial.xml:940
+#, no-c-format
+msgid ""
+"Now consider the state held in the <literal>HttpSession</literal>. By very "
+"careful programming, we might be able to control the size of the session "
+"data. This is a lot more difficult than it sounds, since web browsers permit "
+"ad hoc non-linear navigation. But suppose we suddenly discover a system "
+"requirement that says that a user is allowed to have <emphasis>mutiple "
+"concurrent conversations</emphasis>, halfway through the development of the "
+"system (this has happened to me). Developing mechanisms to isolate session "
+"state associated with different concurrent conversations, and incorporating "
+"failsafes to ensure that conversation state is destroyed when the user "
+"aborts one of the conversations by closing a browser window or tab is not "
+"for the faint hearted (I&#39;ve implemented this stuff twice so far, once "
+"for a client application, once for Seam, but I&#39;m famously psychotic)."
+msgstr ""
+"Now consider the state held in the <literal>HttpSession</literal>. By very "
+"careful programming, we might be able to control the size of the session "
+"data. This is a lot more difficult than it sounds, since web browsers permit "
+"ad hoc non-linear navigation. But suppose we suddenly discover a system "
+"requirement that says that a user is allowed to have <emphasis>mutiple "
+"concurrent conversations</emphasis>, halfway through the development of the "
+"system (this has happened to me). Developing mechanisms to isolate session "
+"state associated with different concurrent conversations, and incorporating "
+"failsafes to ensure that conversation state is destroyed when the user "
+"aborts one of the conversations by closing a browser window or tab is not "
+"for the faint hearted (I&#39;ve implemented this stuff twice so far, once "
+"for a client application, once for Seam, but I&#39;m famously psychotic)."
+
+#. Tag: para
+#: Tutorial.xml:943
+#, no-c-format
+msgid "Now there is a better way."
+msgstr "Jetzt gibt es eine bessere Weise."
+
+#. Tag: para
+#: Tutorial.xml:946
+#, no-c-format
+msgid ""
+"Seam introduces the <emphasis>conversation context</emphasis> as a first "
+"class construct. You can safely keep conversational state in this context, "
+"and be assured that it will have a well-defined lifecycle. Even better, you "
+"won&#39;t need to be continually pushing data back and forth between the "
+"application server and the database, since the conversation context is a "
+"natural cache of data that the user is currently working with."
+msgstr ""
+"Seam introduces the <emphasis>conversation context</emphasis> as a first "
+"class construct. You can safely keep conversational state in this context, "
+"and be assured that it will have a well-defined lifecycle. Even better, you "
+"won&#39;t need to be continually pushing data back and forth between the "
+"application server and the database, since the conversation context is a "
+"natural cache of data that the user is currently working with."
+
+#. Tag: para
+#: Tutorial.xml:949
+#, no-c-format
+msgid ""
+"Usually, the components we keep in the conversation context are stateful "
+"session beans. (We can also keep entity beans and JavaBeans in the "
+"conversation context.) There is an ancient canard in the Java community that "
+"stateful session beans are a scalability killer. This may have been true in "
+"1998 when WebFoobar 1.0 was released. It is no longer true today. "
+"Application servers like JBoss 4.0 have extremely sophisticated mechanisms "
+"for stateful session bean state replication. (For example, the JBoss EJB3 "
+"container performs fine-grained replication, replicating only those bean "
+"attribute values which actually changed.) Note that all the traditional "
+"technical arguments for why stateful beans are inefficient apply equally to "
+"the <literal>HttpSession</literal>, so the practice of shifting state from "
+"business tier stateful session bean components to the web session to try and "
+"improve performance is unbelievably misguided. It is certainly possible to "
+"write unscalable applications using stateful session beans, by using "
+"stateful beans incorrectly, or by using them for the wrong thing. But that "
+"doesn&#39;t mean you should <emphasis>never</emphasis> use them. Anyway, "
+"Seam guides you toward a safe usage model. Welcome to 2005."
+msgstr ""
+"Usually, the components we keep in the conversation context are stateful "
+"session beans. (We can also keep entity beans and JavaBeans in the "
+"conversation context.) There is an ancient canard in the Java community that "
+"stateful session beans are a scalability killer. This may have been true in "
+"1998 when WebFoobar 1.0 was released. It is no longer true today. "
+"Application servers like JBoss 4.0 have extremely sophisticated mechanisms "
+"for stateful session bean state replication. (For example, the JBoss EJB3 "
+"container performs fine-grained replication, replicating only those bean "
+"attribute values which actually changed.) Note that all the traditional "
+"technical arguments for why stateful beans are inefficient apply equally to "
+"the <literal>HttpSession</literal>, so the practice of shifting state from "
+"business tier stateful session bean components to the web session to try and "
+"improve performance is unbelievably misguided. It is certainly possible to "
+"write unscalable applications using stateful session beans, by using "
+"stateful beans incorrectly, or by using them for the wrong thing. But that "
+"doesn&#39;t mean you should <emphasis>never</emphasis> use them. Anyway, "
+"Seam guides you toward a safe usage model. Welcome to 2005."
+
+#. Tag: para
+#: Tutorial.xml:952
+#, no-c-format
+msgid "OK, I&#39;ll stop ranting now, and get back to the tutorial."
+msgstr "OK, I&#39;ll stop ranting now, and get back to the tutorial."
+
+#. Tag: para
+#: Tutorial.xml:955
+#, no-c-format
+msgid ""
+"The booking example application shows how stateful components with different "
+"scopes can collaborate together to achieve complex behaviors. The main page "
+"of the booking application allows the user to search for hotels. The search "
+"results are kept in the Seam session scope. When the user navigates to one "
+"of these hotels, a conversation begins, and a conversation scoped component "
+"calls back to the session scoped component to retrieve the selected hotel."
+msgstr ""
+"The booking example application shows how stateful components with different "
+"scopes can collaborate together to achieve complex behaviors. The main page "
+"of the booking application allows the user to search for hotels. The search "
+"results are kept in the Seam session scope. When the user navigates to one "
+"of these hotels, a conversation begins, and a conversation scoped component "
+"calls back to the session scoped component to retrieve the selected hotel."
+
+#. Tag: para
+#: Tutorial.xml:958
+#, no-c-format
+msgid ""
+"The booking example also demonstrates the use of Ajax4JSF to implement rich "
+"client behavior without the use of handwritten JavaScript."
+msgstr "Das Buchungsbeispiel demonstriert auch die Verwendung von Ajax4JSF zur Implementierung umfassenden Client-Behaviors ohne Benutzung handgeschriebenen JavaScripts."
+
+#. Tag: para
+#: Tutorial.xml:961
+#, no-c-format
+msgid ""
+"The search functionality is implemented using a session-scope stateful "
+"session bean, similar to the one we saw in the message list example above."
+msgstr "Die Suchfunktionalität ist unter Verwendung eines Session-begrenzten Stateful-Session-Beans, ähnlich wie wir es in der Nachrichtenliste im Beispiel oben gesehen haben."
+
+#. Tag: programlisting
+#: Tutorial.xml:971
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"hotelSearch\")\n"
+"@Scope(ScopeType.SESSION)\n"
+"@Restrict(\"#{identity.loggedIn}\")\n"
+"public class HotelSearchingAction implements HotelSearching\n"
+"{\n"
+"   \n"
+"   @PersistenceContext\n"
+"   private EntityManager em;\n"
+"   \n"
+"   private String searchString;\n"
+"   private int pageSize = 10;\n"
+"   private int page;\n"
+"   \n"
+"   @DataModel\n"
+"   private List&lt;Hotel&gt; hotels;\n"
+"   \n"
+"   public String find()\n"
+"   {\n"
+"      page = 0;\n"
+"      queryHotels();   \n"
+"      return \"main\";\n"
+"   }\n"
+"\n"
+"   public String nextPage()\n"
+"   {\n"
+"      page++;\n"
+"      queryHotels();\n"
+"      return \"main\";\n"
+"   }\n"
+"      \n"
+"   private void queryHotels()\n"
+"   {\n"
+"      String searchPattern = searchString==null ? \"%\" : &#39;%&#39; + \n"
+"         searchString.toLowerCase().replace(&#39;*&#39;, &#39;%&#39;) + &#39;"
+"%&#39;;\n"
+"      hotels = em.createQuery(\"select h from Hotel h where lower(h.name) "
+"like \n"
+"        :search or lower(h.city) like :search \n"
+"        or lower(h.zip) like :search or lower(h.address) like :search\")\n"
+"            .setParameter(\"search\", searchPattern)\n"
+"            .setMaxResults(pageSize)\n"
+"            .setFirstResult( page * pageSize )\n"
+"            .getResultList();\n"
+"   }\n"
+"   \n"
+"   public boolean isNextPageAvailable()\n"
+"   {\n"
+"      return hotels!=null &amp;&amp; hotels.size()==pageSize;\n"
+"   }\n"
+"   \n"
+"   public int getPageSize() {\n"
+"      return pageSize;\n"
+"   }\n"
+"\n"
+"   public void setPageSize(int pageSize) {\n"
+"      this.pageSize = pageSize;\n"
+"   }\n"
+"\n"
+"   public String getSearchString()\n"
+"   {\n"
+"      return searchString;\n"
+"   }\n"
+"\n"
+"   public void setSearchString(String searchString)\n"
+"   {\n"
+"      this.searchString = searchString;\n"
+"   }\n"
+"   \n"
+"   @Destroy @Remove\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+"@Stateful\n"
+"@Name(\"hotelSearch\")\n"
+"@Scope(ScopeType.SESSION)\n"
+"@Restrict(\"#{identity.loggedIn}\")\n"
+"public class HotelSearchingAction implements HotelSearching\n"
+"{\n"
+"   \n"
+"   @PersistenceContext\n"
+"   private EntityManager em;\n"
+"   \n"
+"   private String searchString;\n"
+"   private int pageSize = 10;\n"
+"   private int page;\n"
+"   \n"
+"   @DataModel\n"
+"   private List&lt;Hotel&gt; hotels;\n"
+"   \n"
+"   public String find()\n"
+"   {\n"
+"      page = 0;\n"
+"      queryHotels();   \n"
+"      return \"main\";\n"
+"   }\n"
+"\n"
+"   public String nextPage()\n"
+"   {\n"
+"      page++;\n"
+"      queryHotels();\n"
+"      return \"main\";\n"
+"   }\n"
+"      \n"
+"   private void queryHotels()\n"
+"   {\n"
+"      String searchPattern = searchString==null ? \"%\" : &#39;%&#39; + \n"
+"         searchString.toLowerCase().replace(&#39;*&#39;, &#39;%&#39;) + &#39;"
+"%&#39;;\n"
+"      hotels = em.createQuery(\"select h from Hotel h where lower(h.name) "
+"like \n"
+"        :search or lower(h.city) like :search \n"
+"        or lower(h.zip) like :search or lower(h.address) like :search\")\n"
+"            .setParameter(\"search\", searchPattern)\n"
+"            .setMaxResults(pageSize)\n"
+"            .setFirstResult( page * pageSize )\n"
+"            .getResultList();\n"
+"   }\n"
+"   \n"
+"   public boolean isNextPageAvailable()\n"
+"   {\n"
+"      return hotels!=null &amp;&amp; hotels.size()==pageSize;\n"
+"   }\n"
+"   \n"
+"   public int getPageSize() {\n"
+"      return pageSize;\n"
+"   }\n"
+"\n"
+"   public void setPageSize(int pageSize) {\n"
+"      this.pageSize = pageSize;\n"
+"   }\n"
+"\n"
+"   public String getSearchString()\n"
+"   {\n"
+"      return searchString;\n"
+"   }\n"
+"\n"
+"   public void setSearchString(String searchString)\n"
+"   {\n"
+"      this.searchString = searchString;\n"
+"   }\n"
+"   \n"
+"   @Destroy @Remove\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:974
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Stateful</literal> annotation identifies this "
+"class as a stateful session bean. Stateful session beans are scoped to the "
+"conversation context by default."
+msgstr ""
+"The EJB standard <literal>@Stateful</literal> annotation identifies this "
+"class as a stateful session bean. Stateful session beans are scoped to the "
+"conversation context by default."
+
+#. Tag: para
+#: Tutorial.xml:979
+#, no-c-format
+msgid ""
+"The <literal>@Restrict</literal> annotation applies a security restriction "
+"to the component. It restricts access to the component allowing only logged-"
+"in users. The security chapter explains more about security in Seam."
+msgstr "Die <literal>@Restrict</literal>-Annotation belegt die Komponente mit Sicherheitsbeschränkungen. Der Zugriff auf die Komponente ist eingeschränkt und nur angemeldeten Benutzern gestattet. Das Kapitel zum Thema Sicherheit geht eingehender auf Sicherheit bei Seam ein."
+
+#. Tag: para
+#: Tutorial.xml:984
+#, no-c-format
+msgid ""
+"The <link linkend=\"datamodel-annotation\"><literal>@DataModel</literal></"
+"link> annotation exposes a <literal>List</literal> as a JSF "
+"<literal>ListDataModel</literal>. This makes it easy to implement clickable "
+"lists for search screens. In this case, the list of hotels is exposed to the "
+"page as a <literal>ListDataModel</literal> in the conversation variable "
+"named <literal>hotels</literal>."
+msgstr ""
+"Die <link linkend=\"datamodel-annotation\"><literal>@DataModel</literal></"
+"link>-Annotation legt eine <literal>List</literal> als ein JSF "
+"<literal>ListDataModel</literal> offen. Dies macht es einfach, klickbare Listen für Suchbildschirme zu implementieren. In diesem Fall wird die Liste von Hotels der Seite als <literal>ListDataModel</literal> in der Konversationsvariablen namens <literal>hotels</literal> dargelegt."
+
+#. Tag: para
+#: Tutorial.xml:989
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Remove</literal> annotation specifies that a "
+"stateful session bean should be removed and its state destroyed after "
+"invocation of the annotated method. In Seam, all stateful session beans "
+"should define a method marked <literal>@Destroy @Remove</literal>. This is "
+"the EJB remove method that will be called when Seam destroys the session "
+"context. Actually, the <link linkend=\"destroy-annotation"
+"\"><literal>@Destroy</literal></link> annotation is of more general "
+"usefulness, since it can be used for any kind of cleanup that should happen "
+"when any Seam context ends. If you don&#39;t have an <literal>@Destroy "
+"@Remove</literal> method, state will leak and you will suffer performance "
+"problems."
+msgstr ""
+"Die EJB Standard <literal>@Remove</literal>-Annotation legt fest, dass ein Stateful Session Bean entfernt werden und dessen Status nach Aufruf der annotierten Methode zerstört werden sollte. In Seam sollten alle Stateful Session Beans eine mit <literal>@Destroy @Remove</literal> markierte Methode definieren. Dies ist die EJB-Entfernungsmethode, die aufgerufen wird wenn Seam den Session-Kontext zerstört. Tatsächlich ist die <link linkend=\"destroy-annotation"
+"\"><literal>@Destroy</literal></link>-Annotation eher von allgemeinem Nutzen, da sie für jede Art der Bereinigung verwendet werden kann, die am Ende eines Seam Kontexts durchgeführt werden soll. Falls Sie keine <literal>@Destroy @Remove</literal>-Methode besitzen, so ist der Status undicht und Sie werden Performance-Probleme haben."
+
+#. Tag: para
+#: Tutorial.xml:996
+#, no-c-format
+msgid ""
+"The main page of the application is a Facelets page. Let&#39;s look at the "
+"fragment which relates to searching for hotels:"
+msgstr "Bei der Haupt-Seite der Anwendung handelt es sich um eine Facelets-Seite. Werfen wir einen Blick auf das Fragment, das sich auf die Suche nach Hotels bezieht:"
+
+#. Tag: programlisting
+#: Tutorial.xml:1006
+#, no-c-format
+msgid ""
+"&lt;div class=\"section\"&gt;\n"
+"&lt;h:form&gt;\n"
+"  \n"
+"  &lt;span class=\"errors\"&gt;\n"
+"    &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"  &lt;/span&gt;\n"
+"    \n"
+"  &lt;h1&gt;Search Hotels&lt;/h1&gt;\n"
+"  &lt;fieldset&gt; \n"
+"     &lt;h:inputText value=\"#{hotelSearch.searchString}\" style=\"width: "
+"165px;\"&gt;\n"
+"        &lt;a:support event=\"onkeyup\" actionListener=\"#{hotelSearch.find}"
+"\" \n"
+"                   reRender=\"searchResults\" /&gt;\n"
+"     &lt;/h:inputText&gt;\n"
+"     &#160;\n"
+"     &lt;a:commandButton value=\"Find Hotels\" action=\"#{hotelSearch.find}"
+"\" \n"
+"                      styleClass=\"button\" reRender=\"searchResults\"/&gt;\n"
+"     &#160;\n"
+"     &lt;a:status&gt;\n"
+"        &lt;f:facet name=\"start\"&gt;\n"
+"           &lt;h:graphicImage value=\"/img/spinner.gif\"/&gt;\n"
+"        &lt;/f:facet&gt;\n"
+"     &lt;/a:status&gt;\n"
+"     &lt;br/&gt;\n"
+"     &lt;h:outputLabel for=\"pageSize\"&gt;Maximum results:&lt;/h:"
+"outputLabel&gt;&#160;\n"
+"     &lt;h:selectOneMenu value=\"#{hotelSearch.pageSize}\" id=\"pageSize"
+"\"&gt;\n"
+"        &lt;f:selectItem itemLabel=\"5\" itemValue=\"5\"/&gt;\n"
+"        &lt;f:selectItem itemLabel=\"10\" itemValue=\"10\"/&gt;\n"
+"        &lt;f:selectItem itemLabel=\"20\" itemValue=\"20\"/&gt;\n"
+"     &lt;/h:selectOneMenu&gt;\n"
+"  &lt;/fieldset&gt;\n"
+"    \n"
+"&lt;/h:form&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;a:outputPanel id=\"searchResults\"&gt;\n"
+"  &lt;div class=\"section\"&gt;\n"
+"  &lt;h:outputText value=\"No Hotels Found\" \n"
+"                rendered=\"#{hotels != null and hotels.rowCount==0}\"/&gt;\n"
+"  &lt;h:dataTable value=\"#{hotels}\" var=\"hot\" rendered=\"#{hotels."
+"rowCount&gt;0}\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Name&lt;/f:facet&gt;\n"
+"      #{hot.name}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Address&lt;/f:facet&gt;\n"
+"      #{hot.address}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;City, State&lt;/f:facet&gt;\n"
+"      #{hot.city}, #{hot.state}, #{hot.country}\n"
+"    &lt;/h:column&gt; \n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Zip&lt;/f:facet&gt;\n"
+"      #{hot.zip}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"      &lt;s:link value=\"View Hotel\" action=\"#{hotelBooking.selectHotel"
+"(hot)}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"  &lt;/h:dataTable&gt;\n"
+"  &lt;s:link value=\"More results\" action=\"#{hotelSearch.nextPage}\" \n"
+"          rendered=\"#{hotelSearch.nextPageAvailable}\"/&gt;\n"
+"  &lt;/div&gt;\n"
+"&lt;/a:outputPanel&gt;"
+msgstr ""
+"&lt;div class=\"section\"&gt;\n"
+"&lt;h:form&gt;\n"
+"  \n"
+"  &lt;span class=\"errors\"&gt;\n"
+"    &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"  &lt;/span&gt;\n"
+"    \n"
+"  &lt;h1&gt;Search Hotels&lt;/h1&gt;\n"
+"  &lt;fieldset&gt; \n"
+"     &lt;h:inputText value=\"#{hotelSearch.searchString}\" style=\"width: "
+"165px;\"&gt;\n"
+"        &lt;a:support event=\"onkeyup\" actionListener=\"#{hotelSearch.find}"
+"\" \n"
+"                   reRender=\"searchResults\" /&gt;\n"
+"     &lt;/h:inputText&gt;\n"
+"     &#160;\n"
+"     &lt;a:commandButton value=\"Find Hotels\" action=\"#{hotelSearch.find}"
+"\" \n"
+"                      styleClass=\"button\" reRender=\"searchResults\"/&gt;\n"
+"     &#160;\n"
+"     &lt;a:status&gt;\n"
+"        &lt;f:facet name=\"start\"&gt;\n"
+"           &lt;h:graphicImage value=\"/img/spinner.gif\"/&gt;\n"
+"        &lt;/f:facet&gt;\n"
+"     &lt;/a:status&gt;\n"
+"     &lt;br/&gt;\n"
+"     &lt;h:outputLabel for=\"pageSize\"&gt;Maximum results:&lt;/h:"
+"outputLabel&gt;&#160;\n"
+"     &lt;h:selectOneMenu value=\"#{hotelSearch.pageSize}\" id=\"pageSize"
+"\"&gt;\n"
+"        &lt;f:selectItem itemLabel=\"5\" itemValue=\"5\"/&gt;\n"
+"        &lt;f:selectItem itemLabel=\"10\" itemValue=\"10\"/&gt;\n"
+"        &lt;f:selectItem itemLabel=\"20\" itemValue=\"20\"/&gt;\n"
+"     &lt;/h:selectOneMenu&gt;\n"
+"  &lt;/fieldset&gt;\n"
+"    \n"
+"&lt;/h:form&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;a:outputPanel id=\"searchResults\"&gt;\n"
+"  &lt;div class=\"section\"&gt;\n"
+"  &lt;h:outputText value=\"No Hotels Found\" \n"
+"                rendered=\"#{hotels != null and hotels.rowCount==0}\"/&gt;\n"
+"  &lt;h:dataTable value=\"#{hotels}\" var=\"hot\" rendered=\"#{hotels."
+"rowCount&gt;0}\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Name&lt;/f:facet&gt;\n"
+"      #{hot.name}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Address&lt;/f:facet&gt;\n"
+"      #{hot.address}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;City, State&lt;/f:facet&gt;\n"
+"      #{hot.city}, #{hot.state}, #{hot.country}\n"
+"    &lt;/h:column&gt; \n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Zip&lt;/f:facet&gt;\n"
+"      #{hot.zip}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"      &lt;s:link value=\"View Hotel\" action=\"#{hotelBooking.selectHotel"
+"(hot)}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"  &lt;/h:dataTable&gt;\n"
+"  &lt;s:link value=\"More results\" action=\"#{hotelSearch.nextPage}\" \n"
+"          rendered=\"#{hotelSearch.nextPageAvailable}\"/&gt;\n"
+"  &lt;/div&gt;\n"
+"&lt;/a:outputPanel&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1009
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:support&gt;</literal> tag allows a JSF action "
+"event listener to be called by asynchronous <literal>XMLHttpRequest</"
+"literal> when a JavaScript event like <literal>onkeyup</literal> occurs. "
+"Even better, the <literal>reRender</literal> attribute lets us render a "
+"fragment of the JSF page and perform a partial page update when the "
+"asynchronous response is received."
+msgstr ""
+"Das Ajax4JSF <literal>&lt;a:support&gt;</literal>-Tag gestattet, dass ein JSF Action Event-Listener durch eine asynchrone <literal>XMLHttpRequest</"
+"literal> aufgerufen wird, wenn es zu einem JavaScript-Ereignis wie <literal>onkeyup</literal> kommt. Besser noch, das <literal>reRender</literal>-Attribut gestattet es uns ein Fragment der JSF-Seite zu rendern und eine teilweise Seitenaktualisierung durchzuführen, wenn die asynchrone Antwort eingegangen ist."
+
+#. Tag: para
+#: Tutorial.xml:1014
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:status&gt;</literal> tag lets us display a "
+"cheesy annimated image while we wait for asynchronous requests to return."
+msgstr "Das Ajax4JSF <literal>&lt;a:status&gt;</literal>-Tag lässt uns eine animierte Abbildung darstellen, während wir auf die Wiedergabe asynchroner Anfragen warten."
+
+#. Tag: para
+#: Tutorial.xml:1019
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:outputPanel&gt;</literal> tag defines a region "
+"of the page which can be re-rendered by an asynchronous request."
+msgstr "Das Ajax4JSF <literal>&lt;a:outputPanel&gt;</literal>-Tag definiert einen Bereich der Seite, der durch eine asynchrone Anfrage erneut gerendert werden kann."
+
+#. Tag: para
+#: Tutorial.xml:1024
+#, no-c-format
+msgid ""
+"The Seam <literal>&lt;s:link&gt;</literal> tag lets us attach a JSF action "
+"listener to an ordinary (non-JavaScript) HTML link. The advantage of this "
+"over the standard JSF <literal>&lt;h:commandLink&gt;</literal> is that it "
+"preserves the operation of \"open in new window\" and \"open in new tab\". "
+"Also notice that we use a method binding with a parameter: <literal>#"
+"{hotelBooking.selectHotel(hot)}</literal>. This is not possible in the "
+"standard Unified EL, but Seam provides an extension to the EL that lets you "
+"use parameters on any method binding expression."
+msgstr ""
+"The Seam <literal>&lt;s:link&gt;</literal> tag lets us attach a JSF action "
+"listener to an ordinary (non-JavaScript) HTML link. The advantage of this "
+"over the standard JSF <literal>&lt;h:commandLink&gt;</literal> is that it "
+"preserves the operation of \"open in new window\" and \"open in new tab\". "
+"Also notice that we use a method binding with a parameter: <literal>#"
+"{hotelBooking.selectHotel(hot)}</literal>. This is not possible in the "
+"standard Unified EL, but Seam provides an extension to the EL that lets you "
+"use parameters on any method binding expression."
+
+#. Tag: para
+#: Tutorial.xml:1031
+#, no-c-format
+msgid ""
+"This page displays the search results dynamically as we type, and lets us "
+"choose a hotel and pass it to the <literal>selectHotel()</literal> method of "
+"the <literal>HotelBookingAction</literal>, which is where the "
+"<emphasis>really</emphasis> interesting stuff is going to happen."
+msgstr ""
+"Diese Seite zeigt die Suchergebnisse dynamisch an, während wir tippen und lässt uns ein Hote wählen und es an die <literal>selectHotel()</literal>-Methode der <literal>HotelBookingAction</literal> weitergeben, wo die "
+"<emphasis>wirklich</emphasis> interessanten Dinge passieren."
+
+#. Tag: para
+#: Tutorial.xml:1034
+#, no-c-format
+msgid ""
+"Now lets see how the booking example application uses a conversation-scoped "
+"stateful session bean to achieve a natural cache of persistent data related "
+"to the conversation. The following code example is pretty long. But if you "
+"think of it as a list of scripted actions that implement the various steps "
+"of the conversation, it&#39;s understandable. Read the class from top to "
+"bottom, as if it were a story."
+msgstr ""
+"Now lets see how the booking example application uses a conversation-scoped "
+"stateful session bean to achieve a natural cache of persistent data related "
+"to the conversation. The following code example is pretty long. But if you "
+"think of it as a list of scripted actions that implement the various steps "
+"of the conversation, it&#39;s understandable. Read the class from top to "
+"bottom, as if it were a story."
+
+#. Tag: programlisting
+#: Tutorial.xml:1045
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"hotelBooking\")\n"
+"@Restrict(\"#{identity.loggedIn}\")\n"
+"public class HotelBookingAction implements HotelBooking\n"
+"{\n"
+"   \n"
+"   @PersistenceContext(type=EXTENDED)\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @In \n"
+"   private User user;\n"
+"   \n"
+"   @In(required=false) @Out\n"
+"   private Hotel hotel;\n"
+"   \n"
+"   @In(required=false) \n"
+"   @Out(required=false)\n"
+"   private Booking booking;\n"
+"     \n"
+"   @In\n"
+"   private FacesMessages facesMessages;\n"
+"      \n"
+"   @In\n"
+"   private Events events;\n"
+"   \n"
+"   @Logger \n"
+"   private Log log;\n"
+"   \n"
+"   @Begin\n"
+"   public String selectHotel(Hotel selectedHotel)\n"
+"   {\n"
+"      hotel = em.merge(selectedHotel);\n"
+"      return \"hotel\";\n"
+"   }\n"
+"   \n"
+"   public String bookHotel()\n"
+"   {      \n"
+"      booking = new Booking(hotel, user);\n"
+"      Calendar calendar = Calendar.getInstance();\n"
+"      booking.setCheckinDate( calendar.getTime() );\n"
+"      calendar.add(Calendar.DAY_OF_MONTH, 1);\n"
+"      booking.setCheckoutDate( calendar.getTime() );\n"
+"      \n"
+"      return \"book\";\n"
+"   }\n"
+"\n"
+"   public String setBookingDetails()\n"
+"   {\n"
+"      if (booking==null || hotel==null) return \"main\";\n"
+"      if ( !booking.getCheckinDate().before( booking.getCheckoutDate() ) )\n"
+"      {\n"
+"         facesMessages.add(\"Check out date must be later than check in date"
+"\");\n"
+"         return null;\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return \"confirm\";\n"
+"      }\n"
+"   }\n"
+"\n"
+"   @End\n"
+"   public String confirm()\n"
+"   {\n"
+"      if (booking==null || hotel==null) return \"main\";\n"
+"      em.persist(booking);\n"
+"      facesMessages.add\n"
+"       (\"Thank you, #{user.name}, your confimation number for #{hotel.name} "
+"is #{booking.id}\");\n"
+"      log.info(\"New booking: #{booking.id} for #{user.username}\");\n"
+"      events.raiseEvent(\"bookingConfirmed\");\n"
+"      return \"confirmed\";\n"
+"   }\n"
+"   \n"
+"   @End\n"
+"   public String cancel()\n"
+"   {\n"
+"      return \"main\";\n"
+"   }\n"
+"   \n"
+"   @Destroy @Remove\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+"@Stateful\n"
+"@Name(\"hotelBooking\")\n"
+"@Restrict(\"#{identity.loggedIn}\")\n"
+"public class HotelBookingAction implements HotelBooking\n"
+"{\n"
+"   \n"
+"   @PersistenceContext(type=EXTENDED)\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @In \n"
+"   private User user;\n"
+"   \n"
+"   @In(required=false) @Out\n"
+"   private Hotel hotel;\n"
+"   \n"
+"   @In(required=false) \n"
+"   @Out(required=false)\n"
+"   private Booking booking;\n"
+"     \n"
+"   @In\n"
+"   private FacesMessages facesMessages;\n"
+"      \n"
+"   @In\n"
+"   private Events events;\n"
+"   \n"
+"   @Logger \n"
+"   private Log log;\n"
+"   \n"
+"   @Begin\n"
+"   public String selectHotel(Hotel selectedHotel)\n"
+"   {\n"
+"      hotel = em.merge(selectedHotel);\n"
+"      return \"hotel\";\n"
+"   }\n"
+"   \n"
+"   public String bookHotel()\n"
+"   {      \n"
+"      booking = new Booking(hotel, user);\n"
+"      Calendar calendar = Calendar.getInstance();\n"
+"      booking.setCheckinDate( calendar.getTime() );\n"
+"      calendar.add(Calendar.DAY_OF_MONTH, 1);\n"
+"      booking.setCheckoutDate( calendar.getTime() );\n"
+"      \n"
+"      return \"book\";\n"
+"   }\n"
+"\n"
+"   public String setBookingDetails()\n"
+"   {\n"
+"      if (booking==null || hotel==null) return \"main\";\n"
+"      if ( !booking.getCheckinDate().before( booking.getCheckoutDate() ) )\n"
+"      {\n"
+"         facesMessages.add(\"Check out date must be later than check in date"
+"\");\n"
+"         return null;\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return \"confirm\";\n"
+"      }\n"
+"   }\n"
+"\n"
+"   @End\n"
+"   public String confirm()\n"
+"   {\n"
+"      if (booking==null || hotel==null) return \"main\";\n"
+"      em.persist(booking);\n"
+"      facesMessages.add\n"
+"       (\"Thank you, #{user.name}, your confimation number for #{hotel.name} "
+"is #{booking.id}\");\n"
+"      log.info(\"New booking: #{booking.id} for #{user.username}\");\n"
+"      events.raiseEvent(\"bookingConfirmed\");\n"
+"      return \"confirmed\";\n"
+"   }\n"
+"   \n"
+"   @End\n"
+"   public String cancel()\n"
+"   {\n"
+"      return \"main\";\n"
+"   }\n"
+"   \n"
+"   @Destroy @Remove\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:1048
+#, no-c-format
+msgid ""
+"This bean uses an EJB3 <emphasis>extended persistence context</emphasis>, so "
+"that any entity instances remain managed for the whole lifecycle of the "
+"stateful session bean."
+msgstr "Dieses Bean verwendet einen EJB3 <emphasis>erweiterten Persistenzkontext</emphasis>, so dass etwaige Entity-Instanzen über den gesamten Lebenszyklus des Stateful Session Bean gemanagt bleiben."
+
+#. Tag: para
+#: Tutorial.xml:1053
+#, no-c-format
+msgid ""
+"The <link linkend=\"out-annotation\"><literal>@Out</literal></link> "
+"annotation declares that an attribute value is <emphasis>outjected</"
+"emphasis> to a context variable after method invocations. In this case, the "
+"context variable named <literal>hotel</literal> will be set to the value of "
+"the <literal>hotel</literal> instance variable after every action listener "
+"invocation completes."
+msgstr ""
+"Die <link linkend=\"out-annotation\"><literal>@Out</literal></link>-Annotation deklariert, dass ein Attributwert nach Methodenaufrufen an eine Kontextvariable <emphasis>ausgegeben</emphasis> wird. In diesem Fall wird die Kontextvariable namens <literal>hotel</literal> auf den Wert der "
+"<literal>hotel</literal>-Instanzvariablen gesetzt, nachdem jeder Action-Listener Aufruf beendet ist."
+
+#. Tag: para
+#: Tutorial.xml:1058
+#, no-c-format
+msgid ""
+"The <link linkend=\"begin-annotation\"><literal>@Begin</literal></link> "
+"annotation specifies that the annotated method begins a <emphasis>long-"
+"running conversation</emphasis>, so the current conversation context will "
+"not be destroyed at the end of the request. Instead, it will be reassociated "
+"with every request from the current window, and destroyed either by timeout "
+"due to conversation inactivity or invocation of a matching <literal>@End</"
+"literal> method."
+msgstr "Die <link linkend=\"begin-annotation\"><literal>@Begin</literal></link>-Annotation legt fest, dass die annotierte Methode mit einer <emphasis>lange laufenden Konversation</emphasis> beginnt, so dass der aktuelle Konversationskontext am Ende der Anfrage nicht zerstört wird. Stattdessen wird er mit jeder Anfrage vom aktuellen Fenster re-assoziiert und entweder durch einen Timeout aufgrund von Konversationsinaktivität oder Aufruf einer übereinstimmenden <literal>@End</literal>-Methode beendet."
+
+#. Tag: para
+#: Tutorial.xml:1063
+#, no-c-format
+msgid ""
+"The <link linkend=\"end-annotation\"><literal>@End</literal></link> "
+"annotation specifies that the annotated method ends the current long-running "
+"conversation, so the current conversation context will be destroyed at the "
+"end of the request."
+msgstr "Die <link linkend=\"end-annotation\"><literal>@End</literal></link>-Annotation legt fest, dass die annotierte Methode die aktuelle lang laufende Konversation beendet, so dass der aktuelle Konversationskontext am Ende der Anfrage zerstört wird."
+
+#. Tag: para
+#: Tutorial.xml:1068
+#, no-c-format
+msgid ""
+"This EJB remove method will be called when Seam destroys the conversation "
+"context. Don&#39;t ever forget to define this method!"
+msgstr "Diese EJB-Entfernungsmethode wird aufgerufen, wenn Sea wilm den Konversationskontext zerstört. Vergessen Sie nie, diese Methode zu definieren!"
+
+#. Tag: para
+#: Tutorial.xml:1075
+#, no-c-format
+msgid ""
+"<literal>HotelBookingAction</literal> contains all the action listener "
+"methods that implement selection, booking and booking confirmation, and "
+"holds state related to this work in its instance variables. We think you&#39;"
+"ll agree that this code is much cleaner and simpler than getting and setting "
+"<literal>HttpSession</literal> attributes."
+msgstr ""
+"<literal>HotelBookingAction</literal> enthält alle Action-Listener "
+"Methoden, die Auswahl, Buchung und Buchungsbestätigung implementieren und und enthält den dieser Arbeit zugehörigen Status in seinen Instanzvariablen. Es ist sofort erkennbar, dass dieser Code wesentlich sauberer und einfacher ist als dies mit <literal>HttpSession</literal>-Attributen der Fall wäre."
+
+#. Tag: para
+#: Tutorial.xml:1078
+#, no-c-format
+msgid ""
+"Even better, a user can have multiple isolated conversations per login "
+"session. Try it! Log in, run a search, and navigate to different hotel pages "
+"in multiple browser tabs. You&#39;ll be able to work on creating two "
+"different hotel reservations at the same time. If you leave any one "
+"conversation inactive for long enough, Seam will eventually time out that "
+"conversation and destroy its state. If, after ending a conversation, you "
+"backbutton to a page of that conversation and try to perform an action, Seam "
+"will detect that the conversation was already ended, and redirect you to the "
+"search page."
+msgstr "Besser noch - ein Benutzer kann mehrere isolierte Konversationen pro Login-Session besitzen. Probieren Sie es aus! Melden Sie sich an, führen Sie eine Suche durch, und navigieren Sie zu verschiedenen Hotelseiten in mehreren Browser-Tabs. Sie werden dazu in der Lage sein, zwei verschiedene Hotelreservierungen gleichzeitig zu bearbeiten. Falls Sie eine der Konversationen lange genug inaktiv lassen, so führt Seam einen Timeout durch und löscht deren Status. Falls Sie nach Beendigung einer Konversation mittels \"Back\"-Taste zu einer Seite dieser Konversation zurückgehen und versuchen eine Action durchzuführen, so erkennt Seam, dass die Konversation bereits beendet wurde und leitet Sie zur Suchseite um."
+
+#. Tag: title
+#: Tutorial.xml:1084
+#, no-c-format
+msgid "The Seam UI control library"
+msgstr "Die Seam UI-Steuerungsbibliothek"
+
+#. Tag: para
+#: Tutorial.xml:1085
+#, no-c-format
+msgid ""
+"If you check inside the WAR file for the booking application, you&#39;ll "
+"find <literal>seam-ui.jar</literal> in the <literal>WEB-INF/lib</literal> "
+"directory. This package contains a number of JSF custom controls that "
+"integrate with Seam. The booking application uses the <literal>&lt;s:link&gt;"
+"</literal> control for navigation from the search screen to the hotel page:"
+msgstr ""
+"Wenn Sie sich innerhalb der WAR-Datei die Buchungsanwendung ansehen, so finden Sie <literal>seam-ui.jar</literal> im <literal>WEB-INF/lib</literal>-Verzeichnis. Dieses Paket enthält eine Reihe von JSF \"custom Controls\", die mit Seam integrierbar sind. Die Buchungsanwendung verwendet die <literal>&lt;s:link&gt;"
+"</literal>-Steuerung zur Navigation vom Suchbildschirm zur Hotelseite:"
+
+#. Tag: programlisting
+#: Tutorial.xml:1088
+#, no-c-format
+msgid "&lt;s:link value=\"View Hotel\" action=\"#{hotelBooking.selectHotel}\"/&gt;"
+msgstr "&lt;s:link value=\"View Hotel\" action=\"#{hotelBooking.selectHotel}\"/&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1089
+#, no-c-format
+msgid ""
+"The use of <literal>&lt;s:link&gt;</literal> here allows us to attach an "
+"action listener to a HTML link without breaking the browser&#39;s \"open in "
+"new window\" feature. The standard JSF <literal>&lt;h:commandLink&gt;</"
+"literal> does not work with \"open in new window\". We&#39;ll see later that "
+"<literal>&lt;s:link&gt;</literal> also offers a number of other useful "
+"features, including conversation propagation rules."
+msgstr "Die Verwendung von <literal>&lt;s:link&gt;</literal> an dieser Stelle gestattet es uns, einen Action-Listener an ein HTML-Link anzuhängen, ohne das \"open in new window\"-Feature (in neuem Fenster öffnen) des Browsers zu beeinflussen. Das Standard JSF <literal>&lt;h:commandLink&gt;</literal> funktioniert nicht mit \"in neuem Fenster öffnen\". Wir werden später noch sehen, dass auch <literal>&lt;s:link&gt;</literal> eine Reihe nützlicher Features enthält, darunter Regeln zu Konversationsübertragung (sog. \"Conversation Propagation\")."
+
+#. Tag: para
+#: Tutorial.xml:1092
+#, no-c-format
+msgid ""
+"The booking application uses some other Seam and Ajax4JSF controls, "
+"especially on the <literal>/book.xhtml</literal> page. We won&#39;t get into "
+"the details of those controls here, but if you want to understand this code, "
+"please refer to the chapter covering Seam&#39;s functionality for JSF form "
+"validation."
+msgstr "Die Buchungsanwendung verwendet einige andere Seam- und Ajax4JSF Kontrollen, insbesondere auf der <literal>/book.xhtml</literal>-Seite. Wir gehen hier nicht auf Einzelheiten ein, aber wenn Sie diesen Code verstehen möchten, so lesen Sie bitte dazu das Kapitel, das sich mit Seam&#39;s Funktionalität zur JSF Formular-Validierung befasst ."
+
+#. Tag: title
+#: Tutorial.xml:1098
+#, no-c-format
+msgid "The Seam Debug Page"
+msgstr "Die Seam Debug-Seite"
+
+#. Tag: para
+#: Tutorial.xml:1099
+#, no-c-format
+msgid ""
+"The WAR also includes <literal>seam-debug.jar</literal>. If this jar is "
+"deployed in <literal>WEB-INF/lib</literal>, along with the Facelets, and if "
+"you set the following Seam property in <literal>web.xml</literal> or "
+"<literal>seam.properties</literal>:"
+msgstr ""
+"Die WAR beinhaltet auch <literal>seam-debug.jar</literal>. Falls diese Jar gemeinsam mit den Facelets in <literal>WEB-INF/lib</literal> deployt wird und falls Sie die folgende Seam-Property in <literal>web.xml</literal> oder "
+"<literal>seam.properties</literal> setzen:"
+
+#. Tag: programlisting
+#: Tutorial.xml:1102
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;org.jboss.seam.core.init.debug&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;true&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;org.jboss.seam.core.init.debug&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;true&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1103
+#, no-c-format
+msgid ""
+"Then the Seam debug page will be available. This page lets you browse and "
+"inspect the Seam components in any of the Seam contexts associated with your "
+"current login session. Just point your browser at <ulink url=\"http://"
+"localhost:8080/seam-booking/debug.seam\"><literal>http://localhost:8080/seam-"
+"booking/debug.seam</literal></ulink>."
+msgstr ""
+"Dann ist die Seam Debug-Seite verfügbar. Diese Seite gestattet das Browsen und Überprüfen der Seam-Komponenten in einem beliebigen, mit Ihrer aktuellen Login-Session assoziierten Seam-Kontext. Richten Sie Ihren Browser einfach auf <ulink url=\"http://"
+"localhost:8080/seam-booking/debug.seam\"><literal>http://localhost:8080/seam-"
+"booking/debug.seam</literal></ulink>."
+
+#. Tag: title
+#: Tutorial.xml:1119
+#, no-c-format
+msgid "A complete application featuring Seam and jBPM: the DVD Store example"
+msgstr "Eine vollständige Anwendung, die Seam und jBPM bietet: Das DVD-Store Beispiel"
+
+#. Tag: para
+#: Tutorial.xml:1120
+#, no-c-format
+msgid ""
+"The DVD Store demo application shows the practical usage of jBPM for both "
+"task management and pageflow."
+msgstr ""
+"The DVD Store demo application shows the practical usage of jBPM for both "
+"task management and pageflow."
+
+#. Tag: para
+#: Tutorial.xml:1123
+#, no-c-format
+msgid ""
+"The user screens take advantage of a jPDL pageflow to implement searching "
+"and shopping cart functionality."
+msgstr "Die Benutzerbildschirme nutzen einen jPDL-Pageflow zur Implementierung der Such- und Einkaufswagen-Funktionalität."
+
+#. Tag: screeninfo
+#: Tutorial.xml:1126 Tutorial.xml:1137 Tutorial.xml:1163
+#, no-c-format
+msgid "DVD Store example"
+msgstr "DVD-Store Beispiel"
+
+#. Tag: para
+#: Tutorial.xml:1134
+#, no-c-format
+msgid ""
+"The administration screens take use jBPM to manage the approval and shipping "
+"cycle for orders. The business process may even be changed dynamically, by "
+"selecting a different process definition!"
+msgstr "Die Administrationsbildschirme verwenden jBPM zur Verwaltung der Genehmigung und des Auslieferungszyklus' von Bestellungen. Der Business-Prozess kann sogar dynamisch geändert werden, indem eine andere Prozessdefinition gewählt wird!"
+
+#. Tag: para
+#: Tutorial.xml:1148
+#, no-c-format
+msgid "Look in the <literal>dvdstore</literal> directory."
+msgstr "Schauen Sie ins <literal>dvdstore</literal>-Verzeichnis."
+
+#. Tag: title
+#: Tutorial.xml:1154
+#, no-c-format
+msgid ""
+"A complete application featuring Seam workspace management: the Issue "
+"Tracker example"
+msgstr ""
+"A complete application featuring Seam workspace management: the Issue "
+"Tracker example"
+
+#. Tag: para
+#: Tutorial.xml:1155
+#, no-c-format
+msgid ""
+"The Issue Tracker demo shows off Seam&#39;s workspace management "
+"functionality: the conversation switcher, conversation list and breadcrumbs."
+msgstr ""
+"The Issue Tracker demo shows off Seam&#39;s workspace management "
+"functionality: the conversation switcher, conversation list and breadcrumbs."
+
+#. Tag: para
+#: Tutorial.xml:1160
+#, no-c-format
+msgid ""
+"To log into the Issue Tracker demo you must provide a username and password. "
+"You can find this in the <filename>resources/import.sql</filename> file or "
+"use \"gavin\" and \"foobar\" for username and password respectively."
+msgstr ""
+"Um sich beim \"Issue Tracker\"-Demo anzumelden, müssen Sie einen Benutzernamen und ein Passwort bereitstellen. "
+"Sie können dies in der <filename>resources/import.sql</filename>-Datei finden oder aber \"gavin\" und \"foobar\" als Benutzernamen bzw. Passwort verwenden."
+
+#. Tag: para
+#: Tutorial.xml:1174
+#, no-c-format
+msgid "Look in the <literal>issues</literal> directory."
+msgstr "Schauen Sie ins <literal>issues</literal>-Verzeichnis."
+
+#. Tag: title
+#: Tutorial.xml:1180
+#, no-c-format
+msgid "An example of Seam with Hibernate: the Hibernate Booking example"
+msgstr "Ein Beispiel von Seam mit Hibernate: Das Hibernate Buchungsbeispiel"
+
+#. Tag: para
+#: Tutorial.xml:1181
+#, no-c-format
+msgid ""
+"The Hibernate Booking demo is a straight port of the Booking demo to an "
+"alternative architecture that uses Hibernate for persistence and JavaBeans "
+"instead of session beans."
+msgstr ""
+"Die Hibernate Buchungs-Demo ist ein direkter Port der Buchungs-Demo zu einer alternativen Architektur, die Hibernate für Persistenz und JavaBeans "
+"statt Session-Beans verwendet."
+
+#. Tag: para
+#: Tutorial.xml:1187
+#, no-c-format
+msgid "Look in the <literal>hibernate</literal> directory."
+msgstr "Schauen Sie ins <literal>hibernate</literal>-Verzeichnis."
+
+#. Tag: title
+#: Tutorial.xml:1193
+#, no-c-format
+msgid "A RESTful Seam application: the Blog example"
+msgstr "Eine \"RESTful\" Seam-Anwendung: Das Blog-Beispiel"
+
+#. Tag: para
+#: Tutorial.xml:1194
+#, no-c-format
+msgid ""
+"Seam makes it very easy to implement applications which keep state on the "
+"server-side. However, server-side state is not always appropriate, "
+"especially in for functionality that serves up <emphasis>content</emphasis>. "
+"For this kind of problem we often need to let the user bookmark pages and "
+"have a relatively stateless server, so that any page can be accessed at any "
+"time, via the bookmark. The Blog example shows how to a implement RESTful "
+"application using Seam. Every page of the application can be bookmarked, "
+"including the search results page."
+msgstr ""
+"Mit Seam ist die Implementierung von Anwendungen, die den Status auf Server-Seite halten, ganz einfach. Allerdings ist der Status auf Server-Seite nicht immer passend, insbesondere bei Funktionalitäten, die <emphasis>Content</emphasis> liefern. "
+"Für diese Art von Problem müssen wir den Benutzer oft die Seiten mit Lesezeichen versehen lassen und haben einen Server, der relativ \"stateless\" ist, so dass über das Lesezeichen auf jede Seite zu jedem Zeitpunkt zugegriffen werden kann. Das Blog-Beispiel zeigt die Implemetierung einer RESTful-Applikation mittels Seam. Jede Seite der Anwendung kann mit Lesezeichen versehen werden, "
+"einschließlich der Seite mit den Suchergebnissen."
+
+#. Tag: screeninfo
+#: Tutorial.xml:1197
+#, no-c-format
+msgid "Blog example"
+msgstr "Blog-Beispiel"
+
+#. Tag: para
+#: Tutorial.xml:1205
+#, no-c-format
+msgid ""
+"The Blog example demonstrates the use of \"pull\"-style MVC, where instead "
+"of using action listener methods to retrieve data and prepare the data for "
+"the view, the view pulls data from components as it is being rendered."
+msgstr "Das Blog-Beispiel demonstriert die Verwendung des \"pull\"-Stil MVC, wo anstatt mittels Action-Listener Methoden zum Abruf von Daten und deren Vorbereitung zur Ansicht, die Ansicht Daten aus Komponenten zieht, während sie gerendert wird."
+
+#. Tag: title
+#: Tutorial.xml:1209
+#, no-c-format
+msgid "Using \"pull\"-style MVC"
+msgstr "Verwendung des MVC im \"pull\"-Stil"
+
+#. Tag: para
+#: Tutorial.xml:1210
+#, no-c-format
+msgid ""
+"This snippet from the <literal>index.xhtml</literal> facelets page displays "
+"a list of recent blog entries:"
+msgstr "Dieser Ausschnitt aus der <literal>index.xhtml</literal> Facelets-Seite zeigt eine Liste aktueller Blog-Einträge an:"
+
+#. Tag: programlisting
+#: Tutorial.xml:1213
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{blog.recentBlogEntries}\" var=\"blogEntry\" rows="
+"\"3\"&gt;\n"
+"   &lt;h:column&gt;\n"
+"      &lt;div class=\"blogEntry\"&gt;\n"
+"         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"         &lt;div&gt;\n"
+"            &lt;h:outputText escape=\"false\" \n"
+"                  value=\"#{blogEntry.excerpt==null ? blogEntry.body : "
+"blogEntry.excerpt}\"/&gt;\n"
+"         &lt;/div&gt;\n"
+"         &lt;p&gt;\n"
+"            &lt;h:outputLink value=\"entry.seam\" rendered=\"#{blogEntry."
+"excerpt!=null}\"&gt;\n"
+"               &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/"
+"&gt;\n"
+"               Read more...\n"
+"            &lt;/h:outputLink&gt;\n"
+"         &lt;/p&gt;\n"
+"         &lt;p&gt;\n"
+"            [Posted on \n"
+"            &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"               &lt;f:convertDateTime timeZone=\"#{blog.timeZone}\" locale=\"#"
+"{blog.locale}\" \n"
+"                                     type=\"both\"/&gt;\n"
+"            &lt;/h:outputText&gt;]\n"
+"            &#160;\n"
+"            &lt;h:outputLink value=\"entry.seam\"&gt;[Link]\n"
+"               &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/"
+"&gt;\n"
+"            &lt;/h:outputLink&gt;\n"
+"         &lt;/p&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+"&lt;h:dataTable value=\"#{blog.recentBlogEntries}\" var=\"blogEntry\" rows="
+"\"3\"&gt;\n"
+"   &lt;h:column&gt;\n"
+"      &lt;div class=\"blogEntry\"&gt;\n"
+"         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"         &lt;div&gt;\n"
+"            &lt;h:outputText escape=\"false\" \n"
+"                  value=\"#{blogEntry.excerpt==null ? blogEntry.body : "
+"blogEntry.excerpt}\"/&gt;\n"
+"         &lt;/div&gt;\n"
+"         &lt;p&gt;\n"
+"            &lt;h:outputLink value=\"entry.seam\" rendered=\"#{blogEntry."
+"excerpt!=null}\"&gt;\n"
+"               &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/"
+"&gt;\n"
+"               Read more...\n"
+"            &lt;/h:outputLink&gt;\n"
+"         &lt;/p&gt;\n"
+"         &lt;p&gt;\n"
+"            [Posted on \n"
+"            &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"               &lt;f:convertDateTime timeZone=\"#{blog.timeZone}\" locale=\"#"
+"{blog.locale}\" \n"
+"                                     type=\"both\"/&gt;\n"
+"            &lt;/h:outputText&gt;]\n"
+"            &#160;\n"
+"            &lt;h:outputLink value=\"entry.seam\"&gt;[Link]\n"
+"               &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/"
+"&gt;\n"
+"            &lt;/h:outputLink&gt;\n"
+"         &lt;/p&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1214
+#, no-c-format
+msgid ""
+"If we navigate to this page from a bookmark, how does the data used by the "
+"<literal>&lt;h:dataTable&gt;</literal> actually get initialized? Well, what "
+"happens is that the <literal>Blog</literal> is retrieved lazily&mdash;"
+"\"pulled\"&mdash;when needed, by a Seam component named <literal>blog</"
+"literal>. This is the opposite flow of control to what is usual in "
+"traditional web action-based frameworks like Struts."
+msgstr ""
+"Wenn wir von einem Lesezeichen zu dieser Seite navigieren, wie werden die durch "
+"<literal>&lt;h:dataTable&gt;</literal> verwendeten Daten tatsächlich initialisiert? Nun, was passiert ist, dass der <literal>Blog</literal> durch eine Seam-Komponente namens <literal>blog</"
+"literal> auf \"lazy\" Weise abgerufen wird&mdash;"
+"\"pulled\"&mdash;wenn er gebraucht wird. Dies ist der entgegengesetzte Kontrollfluss zu dem, was bei herkömmlichen Web Action-basierten Frameworks wie Struts normalerweise der Fall ist."
+
+#. Tag: programlisting
+#: Tutorial.xml:1222
+#, no-c-format
+msgid ""
+"@Name(\"blog\")\n"
+"@Scope(ScopeType.STATELESS)\n"
+"public class BlogService \n"
+"{\n"
+"   \n"
+"   @In\n"
+"   private EntityManager entityManager;\n"
+"  \n"
+"   @Unwrap\n"
+"   public Blog getBlog()\n"
+"   {\n"
+"      return (Blog) entityManager.createQuery(\"from Blog b left join fetch "
+"b.blogEntries\")\n"
+"            .setHint(\"org.hibernate.cacheable\", true)\n"
+"            .getSingleResult();\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+"@Name(\"blog\")\n"
+"@Scope(ScopeType.STATELESS)\n"
+"public class BlogService \n"
+"{\n"
+"   \n"
+"   @In\n"
+"   private EntityManager entityManager;\n"
+"  \n"
+"   @Unwrap\n"
+"   public Blog getBlog()\n"
+"   {\n"
+"      return (Blog) entityManager.createQuery(\"from Blog b left join fetch "
+"b.blogEntries\")\n"
+"            .setHint(\"org.hibernate.cacheable\", true)\n"
+"            .getSingleResult();\n"
+"   }\n"
+"\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:1225
+#, no-c-format
+msgid ""
+"This component uses a <emphasis>seam-managed persistence context</emphasis>. "
+"Unlike the other examples we&#39;ve seen, this persistence context is "
+"managed by Seam, instead of by the EJB3 container. The persistence context "
+"spans the entire web request, allowing us to avoid any exceptions that occur "
+"when accessing unfetched associations in the view."
+msgstr "Diese Komponente verwendet einen <emphasis>Seam-gemanagten Persistenzkontext</emphasis>. Anders als die anderen Beispiele, die wir bisher gesehen haben, wird dieser Persistenzkontext durch Seam gemanagt, statt durch den EJB3-Container. Der Persistenzkontext umfasst die gesamte Web-Anfrage, wodurch wir Ausnahmen vermeiden können, die vorkommen, wenn auf unabgefragte Assoziationen in der Ansicht zugegriffen wird."
+
+#. Tag: para
+#: Tutorial.xml:1230
+#, no-c-format
+msgid ""
+"The <literal>@Unwrap</literal> annotation tells Seam to provide the return "
+"value of the method&mdash;the <literal>Blog</literal>&mdash;instead of the "
+"actual <literal>BlogService</literal> component to clients. This is the Seam "
+"<emphasis>manager component pattern</emphasis>."
+msgstr ""
+"Die <literal>@Unwrap</literal>-Annotation teilt Seam mit, dass der Rückgabewert der Methode &mdash;der <literal>Blog</literal>&mdash;statt der tatsächlichen "
+"<literal>BlogService</literal>-Komponente den Clients geliefert werden soll. Dies ist das Seam "
+"<emphasis>Manager Komponentenmuster</emphasis> (\"Manager Component Pattern\")."
+
+#. Tag: para
+#: Tutorial.xml:1237
+#, no-c-format
+msgid ""
+"This is good so far, but what about bookmarking the result of form "
+"submissions, such as a search results page?"
+msgstr "So weit, so gut - aber wie versieht man das Ergebnis eines eingereichten Formulars (wie etwa die Seite mit Suchergebnissen) mit einem Lesezeichen?"
+
+#. Tag: title
+#: Tutorial.xml:1243
+#, no-c-format
+msgid "Bookmarkable search results page"
+msgstr "Mit Lesezeichen versehbare Seite von Suchergebnissen"
+
+#. Tag: para
+#: Tutorial.xml:1244
+#, no-c-format
+msgid ""
+"The blog example has a tiny form in the top right of each page that allows "
+"the user to search for blog entries. This is defined in a file, "
+"<literal>menu.xhtml</literal>, included by the facelets template, "
+"<literal>template.xhtml</literal>:"
+msgstr "Das Blog-Beispiel besitzt ein kleines Formular oben rechts auf jeder Seite, das es dem Benutzer gestattet nach Blog-Einträgen zu suchen. Dies ist in einer Datei <literal>menu.xhtml</literal> definiert, die durch die Facelets-Vorlage <literal>template.xhtml</literal> enthalten ist:"
+
+#. Tag: programlisting
+#: Tutorial.xml:1247
+#, no-c-format
+msgid ""
+"&lt;div id=\"search\"&gt;\n"
+"   &lt;h:form&gt;\n"
+"      &lt;h:inputText value=\"#{searchAction.searchPattern}\"/&gt;\n"
+"      &lt;h:commandButton value=\"Search\" action=\"/search.xhtml\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+"&lt;div id=\"search\"&gt;\n"
+"   &lt;h:form&gt;\n"
+"      &lt;h:inputText value=\"#{searchAction.searchPattern}\"/&gt;\n"
+"      &lt;h:commandButton value=\"Search\" action=\"/search.xhtml\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/div&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1248
+#, no-c-format
+msgid ""
+"To implement a bookmarkable search results page, we need to perform a "
+"browser redirect after processing the search form submission. Because we "
+"used the JSF view id as the action outcome, Seam automatically redirects to "
+"the view id when the form is submitted. Alternatively, we could have defined "
+"a navigation rule like this:"
+msgstr "Um eine mit Lesezeichen versehbare Seite von Suchergebnissen zu implementieren, müssen wir eine Browser-Umleitung durchführen, nachdem das Suchformular eingereicht wurde. Da wir die JSF View-ID als Action-Ergebnis verwendet haben, leitet Seam automatisch zur View-ID um, wenn das Formular eingereicht wird. Alternativ hätten wir die Navigationsregel wie folgt definieren können:"
+
+#. Tag: programlisting
+#: Tutorial.xml:1251
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"   &lt;navigation-case&gt;\n"
+"      &lt;from-outcome&gt;searchResults&lt;/from-outcome&gt;\n"
+"      &lt;to-view-id&gt;/search.xhtml&lt;/to-view-id&gt;\n"
+"      &lt;redirect/&gt;\n"
+"   &lt;/navigation-case&gt;\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+"&lt;navigation-rule&gt;\n"
+"   &lt;navigation-case&gt;\n"
+"      &lt;from-outcome&gt;searchResults&lt;/from-outcome&gt;\n"
+"      &lt;to-view-id&gt;/search.xhtml&lt;/to-view-id&gt;\n"
+"      &lt;redirect/&gt;\n"
+"   &lt;/navigation-case&gt;\n"
+"&lt;/navigation-rule&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1252
+#, no-c-format
+msgid "Then the form would have looked like this:"
+msgstr "Dann hätte das Formular so ausgesehen:"
+
+#. Tag: programlisting
+#: Tutorial.xml:1255
+#, no-c-format
+msgid ""
+"&lt;div id=\"search\"&gt;\n"
+"   &lt;h:form&gt;\n"
+"      &lt;h:inputText value=\"#{searchAction.searchPattern}\"/&gt;\n"
+"      &lt;h:commandButton value=\"Search\" action=\"searchResults\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+"&lt;div id=\"search\"&gt;\n"
+"   &lt;h:form&gt;\n"
+"      &lt;h:inputText value=\"#{searchAction.searchPattern}\"/&gt;\n"
+"      &lt;h:commandButton value=\"Search\" action=\"searchResults\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/div&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1256
+#, no-c-format
+msgid ""
+"But when we redirect, we need to include the values submitted with the form "
+"as request parameters, to get a bookmarkable URL like <literal>http://"
+"localhost:8080/seam-blog/search.seam?searchPattern=seam</literal>. JSF does "
+"not provide an easy way to do this, but Seam does. We use a Seam "
+"<emphasis>page parameter</emphasis>, defined in <literal>WEB-INF/pages.xml</"
+"literal>:"
+msgstr ""
+"Aber wenn wir umleiten, so müssen wir die mit dem Formular eingereichten Werte als Anfragenparameter mit einschließen, um eine mit Lesezeichen versehbare URL wie <literal>http://"
+"localhost:8080/seam-blog/search.seam?searchPattern=seam</literal> zu erhalten. JSF bietet keine einfache Weise, dies zu tun, aber mit Seam ist es unkompliziert. Wie verwenden einen Seam "
+"<emphasis>Seitenparameter</emphasis>, der in <literal>WEB-INF/pages.xml</literal> definiert ist:"
+
+#. Tag: programlisting
+#: Tutorial.xml:1259
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   &lt;page view-id=\"/search.xhtml\"&gt;\n"
+"      &lt;param name=\"searchPattern\" value=\"#{searchService.searchPattern}"
+"\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"   &lt;page view-id=\"/search.xhtml\"&gt;\n"
+"      &lt;param name=\"searchPattern\" value=\"#{searchService.searchPattern}"
+"\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   ...\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1260
+#, no-c-format
+msgid ""
+"This tells Seam to include the value of <literal>#{searchService."
+"searchPattern}</literal> as a request parameter named "
+"<literal>searchPattern</literal> when redirecting to the page, and then re-"
+"apply the value of that parameter to the model before rendering the page."
+msgstr ""
+"Dies teilt Seam mit, dass der Wert von <literal>#{searchService."
+"searchPattern}</literal> als Anfragenparameter mit dem Namen "
+"<literal>searchPattern</literal> mit eingeschlossen werden soll, wenn zu der Seite umgeleitet wird, und dann der Wert des Parameters erneut am Modell angewendet werden soll, ehe die Seite gerendert wird."
+
+#. Tag: para
+#: Tutorial.xml:1263
+#, no-c-format
+msgid "The redirect takes us to the <literal>search.xhtml</literal> page:"
+msgstr "Die Umleitung bringt uns zur <literal>search.xhtml</literal>-Seite:"
+
+#. Tag: programlisting
+#: Tutorial.xml:1266
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{searchResults}\" var=\"blogEntry\"&gt;\n"
+"   &lt;h:column&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:outputLink value=\"entry.seam\"&gt;\n"
+"            &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"            #{blogEntry.title}\n"
+"         &lt;/h:outputLink&gt;\n"
+"         posted on \n"
+"         &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"            &lt;f:convertDateTime timeZone=\"#{blog.timeZone}\" locale=\"#"
+"{blog.locale}\" type=\"both\"/&gt;\n"
+"         &lt;/h:outputText&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+"&lt;h:dataTable value=\"#{searchResults}\" var=\"blogEntry\"&gt;\n"
+"   &lt;h:column&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:outputLink value=\"entry.seam\"&gt;\n"
+"            &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"            #{blogEntry.title}\n"
+"         &lt;/h:outputLink&gt;\n"
+"         posted on \n"
+"         &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"            &lt;f:convertDateTime timeZone=\"#{blog.timeZone}\" locale=\"#"
+"{blog.locale}\" type=\"both\"/&gt;\n"
+"         &lt;/h:outputText&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1267
+#, no-c-format
+msgid "Which again uses \"pull\"-style MVC to retrieve the actual search results:"
+msgstr "Welches erneut den MVC im \"pull\"-Stil verwendet, um die tatsächlichen Suchergebnisse abzurufen:"
+
+#. Tag: programlisting
+#: Tutorial.xml:1270
+#, no-c-format
+msgid ""
+"@Name(\"searchService\")\n"
+"public class SearchService \n"
+"{\n"
+"   \n"
+"   @In\n"
+"   private EntityManager entityManager;\n"
+"   \n"
+"   private String searchPattern;\n"
+"   \n"
+"   @Factory(\"searchResults\")\n"
+"   public List&lt;BlogEntry&gt; getSearchResults()\n"
+"   {\n"
+"      if (searchPattern==null)\n"
+"      {\n"
+"         return null;\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return entityManager.createQuery(\"select be from BlogEntry be "
+"where lower(be.title) \n"
+"                               like :searchPattern or lower(be.body) like :"
+"searchPattern \n"
+"                               order by be.date desc\")\n"
+"               .setParameter( \"searchPattern\", getSqlSearchPattern() )\n"
+"               .setMaxResults(100)\n"
+"               .getResultList();\n"
+"      }\n"
+"   }\n"
+"\n"
+"   private String getSqlSearchPattern()\n"
+"   {\n"
+"      return searchPattern==null ? \"\" : &#39;%&#39; + \n"
+"        searchPattern.toLowerCase().replace(&#39;*&#39;, &#39;%&#39;).replace"
+"(&#39;?&#39;, &#39;_&#39;) \n"
+"           + &#39;%&#39;;\n"
+"   }\n"
+"\n"
+"   public String getSearchPattern()\n"
+"   {\n"
+"      return searchPattern;\n"
+"   }\n"
+"\n"
+"   public void setSearchPattern(String searchPattern)\n"
+"   {\n"
+"      this.searchPattern = searchPattern;\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+"@Name(\"searchService\")\n"
+"public class SearchService \n"
+"{\n"
+"   \n"
+"   @In\n"
+"   private EntityManager entityManager;\n"
+"   \n"
+"   private String searchPattern;\n"
+"   \n"
+"   @Factory(\"searchResults\")\n"
+"   public List&lt;BlogEntry&gt; getSearchResults()\n"
+"   {\n"
+"      if (searchPattern==null)\n"
+"      {\n"
+"         return null;\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return entityManager.createQuery(\"select be from BlogEntry be "
+"where lower(be.title) \n"
+"                               like :searchPattern or lower(be.body) like :"
+"searchPattern \n"
+"                               order by be.date desc\")\n"
+"               .setParameter( \"searchPattern\", getSqlSearchPattern() )\n"
+"               .setMaxResults(100)\n"
+"               .getResultList();\n"
+"      }\n"
+"   }\n"
+"\n"
+"   private String getSqlSearchPattern()\n"
+"   {\n"
+"      return searchPattern==null ? \"\" : &#39;%&#39; + \n"
+"        searchPattern.toLowerCase().replace(&#39;*&#39;, &#39;%&#39;).replace"
+"(&#39;?&#39;, &#39;_&#39;) \n"
+"           + &#39;%&#39;;\n"
+"   }\n"
+"\n"
+"   public String getSearchPattern()\n"
+"   {\n"
+"      return searchPattern;\n"
+"   }\n"
+"\n"
+"   public void setSearchPattern(String searchPattern)\n"
+"   {\n"
+"      this.searchPattern = searchPattern;\n"
+"   }\n"
+"\n"
+"}"
+
+#. Tag: title
+#: Tutorial.xml:1275
+#, no-c-format
+msgid "Using \"push\"-style MVC in a RESTful application"
+msgstr "Die Verwendung des MVC im \"push\"-Stil in einer \"RESTful\"-Applikation"
+
+#. Tag: para
+#: Tutorial.xml:1276
+#, no-c-format
+msgid ""
+"Very occasionally, it makes more sense to use push-style MVC for processing "
+"RESTful pages, and so Seam provides the notion of a <emphasis>page action</"
+"emphasis>. The Blog example uses a page action for the blog entry page, "
+"<literal>entry.xhtml</literal>. Note that this is a little bit contrived, it "
+"would have been easier to use pull-style MVC here as well."
+msgstr ""
+"Very occasionally, it makes more sense to use push-style MVC for processing "
+"RESTful pages, and so Seam provides the notion of a <emphasis>page action</"
+"emphasis>. The Blog example uses a page action for the blog entry page, "
+"<literal>entry.xhtml</literal>. Note that this is a little bit contrived, it "
+"would have been easier to use pull-style MVC here as well."
+
+#. Tag: para
+#: Tutorial.xml:1279
+#, no-c-format
+msgid ""
+"The <literal>entryAction</literal> component works much like an action class "
+"in a traditional push-MVC action-oriented framework like Struts:"
+msgstr "Die <literal>entryAction</literal>-Komponente funktioniert ganz ähnlich wie eine Action-Klasse in einem herkömmlichen \"push\"-MVC Action-orientierten Framework wie Struts:"
+
+#. Tag: programlisting
+#: Tutorial.xml:1282
+#, no-c-format
+msgid ""
+"@Name(\"entryAction\")\n"
+"@Scope(STATELESS)\n"
+"public class EntryAction\n"
+"{\n"
+"   @In(create=true) \n"
+"   private Blog blog;\n"
+"   \n"
+"   @Out\n"
+"   private BlogEntry blogEntry;\n"
+"   \n"
+"   public void loadBlogEntry(String id) throws EntryNotFoundException\n"
+"   {\n"
+"      blogEntry = blog.getBlogEntry(id);\n"
+"      if (blogEntry==null) throw new EntryNotFoundException(id);\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+"@Name(\"entryAction\")\n"
+"@Scope(STATELESS)\n"
+"public class EntryAction\n"
+"{\n"
+"   @In(create=true) \n"
+"   private Blog blog;\n"
+"   \n"
+"   @Out\n"
+"   private BlogEntry blogEntry;\n"
+"   \n"
+"   public void loadBlogEntry(String id) throws EntryNotFoundException\n"
+"   {\n"
+"      blogEntry = blog.getBlogEntry(id);\n"
+"      if (blogEntry==null) throw new EntryNotFoundException(id);\n"
+"   }\n"
+"   \n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:1283
+#, no-c-format
+msgid "Page actions are also declared in <literal>pages.xml</literal>:"
+msgstr "Page-Actions sind auch in <literal>pages.xml</literal> deklariert:"
+
+#. Tag: programlisting
+#: Tutorial.xml:1286
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   ...\n"
+"\n"
+"   &lt;page view-id=\"/entry.xhtml\" action=\"#{entryAction.loadBlogEntry"
+"(blogEntry.id)}\"&gt;\n"
+"      &lt;param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"\n"
+"   &lt;page view-id=\"/post.xhtml\" action=\"#{loginAction.challenge}\"/"
+"&gt;\n"
+"\n"
+"   &lt;page view-id=\"*\" action=\"#{blog.hitCount.hit}\"/&gt;\n"
+"\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"   ...\n"
+"\n"
+"   &lt;page view-id=\"/entry.xhtml\" action=\"#{entryAction.loadBlogEntry"
+"(blogEntry.id)}\"&gt;\n"
+"      &lt;param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"\n"
+"   &lt;page view-id=\"/post.xhtml\" action=\"#{loginAction.challenge}\"/"
+"&gt;\n"
+"\n"
+"   &lt;page view-id=\"*\" action=\"#{blog.hitCount.hit}\"/&gt;\n"
+"\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1287
+#, no-c-format
+msgid ""
+"Notice that the example is using page actions for some other "
+"functionality&mdash;the login challenge, and the pageview counter. Also "
+"notice the use of a parameter in the page action method binding. This is not "
+"a standard feature of JSF EL, but Seam lets you use it, not just for page "
+"actions, but also in JSF method bindings."
+msgstr "Beachten Sie, dass dieses Beispiel Page-Actions für eine andere Funktionalität verwendet&mdash;die Login-Challenge und den Pageview-Zähler. Beachten Sie auch die Verwendung eines Parameters im Page Action Method Binding. Es handelt sich dabei nicht um ein Standard-Feature von JSF EL, aber Seam lässt Sie es verwenden, nicht nur für Page-Actions, sondern auch in JSF Method-Bindings."
+
+#. Tag: para
+#: Tutorial.xml:1290
+#, no-c-format
+msgid ""
+"When the <literal>entry.xhtml</literal> page is requested, Seam first binds "
+"the page parameter <literal>blogEntryId</literal> to the model, then runs "
+"the page action, which retrieves the needed data&mdash;the "
+"<literal>blogEntry</literal>&mdash;and places it in the Seam event context. "
+"Finally, the following is rendered:"
+msgstr ""
+"Wird die <literal>entry.xhtml</literal>-Seite angefordert, so bindet Seam zunächst den Seiten-Parameter <literal>blogEntryId</literal> an das Modell, führt dann die Seiten-Action aus, welches die benötigten Daten abruft &mdash;die "
+"<literal>blogEntry</literal>&mdash;und platziert sie im Seam Ereigniskontext. "
+"Schließlich wird das Folgende gerendert:"
+
+#. Tag: programlisting
+#: Tutorial.xml:1293
+#, no-c-format
+msgid ""
+"&lt;div class=\"blogEntry\"&gt;\n"
+"   &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"   &lt;div&gt;\n"
+"      &lt;h:outputText escape=\"false\" value=\"#{blogEntry.body}\"/&gt;\n"
+"   &lt;/div&gt;\n"
+"   &lt;p&gt;\n"
+"      [Posted on&#160;\n"
+"      &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"         &lt;f:convertDateTime timezone=\"#{blog.timeZone}\" locale=\"#{blog."
+"locale}\" type=\"both\"/&gt;\n"
+"      &lt;/h:outputText&gt;]\n"
+"   &lt;/p&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+"&lt;div class=\"blogEntry\"&gt;\n"
+"   &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"   &lt;div&gt;\n"
+"      &lt;h:outputText escape=\"false\" value=\"#{blogEntry.body}\"/&gt;\n"
+"   &lt;/div&gt;\n"
+"   &lt;p&gt;\n"
+"      [Posted on&#160;\n"
+"      &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"         &lt;f:convertDateTime timezone=\"#{blog.timeZone}\" locale=\"#{blog."
+"locale}\" type=\"both\"/&gt;\n"
+"      &lt;/h:outputText&gt;]\n"
+"   &lt;/p&gt;\n"
+"&lt;/div&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1294
+#, no-c-format
+msgid ""
+"If the blog entry is not found in the database, the "
+"<literal>EntryNotFoundException</literal> exception is thrown. We want this "
+"exception to result in a 404 error, not a 505, so we annotate the exception "
+"class:"
+msgstr ""
+"Kann der Blog-Eintrag in der Datenbank nicht aufgefunden werden, so wird die "
+"<literal>EntryNotFoundException</literal>-Ausnahme gemeldet. Wir möchten, dass diese Ausnahme in einem 404 Fehler - nicht einem 505 Fehler - resultiert, damit wir die Ausnahmenklasse annotieren können:"
+
+#. Tag: programlisting
+#: Tutorial.xml:1297
+#, no-c-format
+msgid ""
+"@ApplicationException(rollback=true)\n"
+"@HttpError(errorCode=HttpServletResponse.SC_NOT_FOUND)\n"
+"public class EntryNotFoundException extends Exception\n"
+"{\n"
+"   EntryNotFoundException(String id)\n"
+"   {\n"
+"      super(\"entry not found: \" + id);\n"
+"   }\n"
+"}"
+msgstr ""
+"@ApplicationException(rollback=true)\n"
+"@HttpError(errorCode=HttpServletResponse.SC_NOT_FOUND)\n"
+"public class EntryNotFoundException extends Exception\n"
+"{\n"
+"   EntryNotFoundException(String id)\n"
+"   {\n"
+"      super(\"entry not found: \" + id);\n"
+"   }\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:1298
+#, no-c-format
+msgid ""
+"An alternative implementation of the example does not use the parameter in "
+"the method binding:"
+msgstr "Eine alternative Implementierung des Beispiels verwendet den Parameter im Methoden-Binding nicht:"
+
+#. Tag: programlisting
+#: Tutorial.xml:1301
+#, no-c-format
+msgid ""
+"@Name(\"entryAction\")\n"
+"@Scope(STATELESS)\n"
+"public class EntryAction\n"
+"{\n"
+"   @In(create=true) \n"
+"   private Blog blog;\n"
+"   \n"
+"   @In @Out\n"
+"   private BlogEntry blogEntry;\n"
+"   \n"
+"   public void loadBlogEntry() throws EntryNotFoundException\n"
+"   {\n"
+"      blogEntry = blog.getBlogEntry( blogEntry.getId() );\n"
+"      if (blogEntry==null) throw new EntryNotFoundException(id);\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+"@Name(\"entryAction\")\n"
+"@Scope(STATELESS)\n"
+"public class EntryAction\n"
+"{\n"
+"   @In(create=true) \n"
+"   private Blog blog;\n"
+"   \n"
+"   @In @Out\n"
+"   private BlogEntry blogEntry;\n"
+"   \n"
+"   public void loadBlogEntry() throws EntryNotFoundException\n"
+"   {\n"
+"      blogEntry = blog.getBlogEntry( blogEntry.getId() );\n"
+"      if (blogEntry==null) throw new EntryNotFoundException(id);\n"
+"   }\n"
+"   \n"
+"}"
+
+#. Tag: programlisting
+#: Tutorial.xml:1302
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   ...\n"
+"\n"
+"   &lt;page view-id=\"/entry.xhtml\" action=\"#{entryAction.loadBlogEntry}"
+"\"&gt;\n"
+"      &lt;param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"   ...\n"
+"\n"
+"   &lt;page view-id=\"/entry.xhtml\" action=\"#{entryAction.loadBlogEntry}"
+"\"&gt;\n"
+"      &lt;param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   ...\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1303
+#, no-c-format
+msgid "It is a matter of taste which implementation you prefer."
+msgstr "Welche Implementierung Sie vorziehen, ist Geschmackssache."
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Validation.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Validation.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Validation.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,600 @@
+# translation of Validation.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Jasna Dimanoski <jdimanos at redhat.com>, 2007, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Validation\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2008-04-03 20:33+1000\n"
+"Last-Translator: Jasna Dimanoski <jdimanos at redhat.com>\n"
+"Language-Team:  <de at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Validation.xml:6
+#, no-c-format
+msgid "JSF form validation in Seam"
+msgstr "JSF-Form-Validierung in Seam"
+
+#. Tag: para
+#: Validation.xml:7
+#, no-c-format
+msgid "In plain JSF, validation is defined in the view:"
+msgstr "In schlichtem JSF ist Validierung in der Ansicht definiert:"
+
+#. Tag: programlisting
+#: Validation.xml:10
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;h:messages/&gt;\n"
+"\n"
+"    &lt;div&gt;\n"
+"        Country:\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;my:validateCountry/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    \n"
+"    &lt;div&gt;\n"
+"        Zip code:\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;my:validateZip/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"\n"
+"    &lt;h:commandButton/&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h:form&gt;\n"
+"    &lt;h:messages/&gt;\n"
+"\n"
+"    &lt;div&gt;\n"
+"        Country:\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;my:validateCountry/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    \n"
+"    &lt;div&gt;\n"
+"        Zip code:\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;my:validateZip/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"\n"
+"    &lt;h:commandButton/&gt;\n"
+"&lt;/h:form&gt;"
+
+#. Tag: para
+#: Validation.xml:11
+#, no-c-format
+msgid ""
+"In practice, this approach usually violates DRY, since most \"validation\" "
+"actually enforces constraints that are part of the data model, and exist all "
+"the way down to the database schema definition. Seam provides support for "
+"model-based constraints defined using Hibernate Validator."
+msgstr ""
+"In der Praxis verletzt diese Vorgehensweise meist DRY, da die meiste "
+"\"Validierung\" tatsächlich Bedingungen erzwingt, die Teil des Datenmodells "
+"sind und bis hinunter zur Schemadefinition der Datenbank existieren. Seam "
+"liefert Support für Modell-basierte Bedingungen, deren Definition unter "
+"Verwendung des Hibernate Validators erfolgt."
+
+#. Tag: para
+#: Validation.xml:14
+#, no-c-format
+msgid ""
+"Let&#39;s start by defining our constraints, on our <literal>Location</"
+"literal> class:"
+msgstr ""
+"Beginnen wir mit der Definition unserer Bedingungen an unserer "
+"<literal>Location</literal>-Klasse:"
+
+#. Tag: programlisting
+#: Validation.xml:17
+#, no-c-format
+msgid ""
+"public class Location {\n"
+"    private String country;\n"
+"    private String zip;\n"
+"    \n"
+"    @NotNull\n"
+"    @Length(max=30)\n"
+"    public String getCountry() { return country; }\n"
+"    public void setCountry(String c) { country = c; }\n"
+"\n"
+"    @NotNull\n"
+"    @Length(max=6)\n"
+"    @Pattern(\"^\\d*$\")\n"
+"    public String getZip() { return zip; }\n"
+"    public void setZip(String z) { zip = z; }\n"
+"}"
+msgstr ""
+"public class Location {\n"
+"    private String country;\n"
+"    private String zip;\n"
+"    \n"
+"    @NotNull\n"
+"    @Length(max=30)\n"
+"    public String getCountry() { return country; }\n"
+"    public void setCountry(String c) { country = c; }\n"
+"\n"
+"    @NotNull\n"
+"    @Length(max=6)\n"
+"    @Pattern(\"^\\d*$\")\n"
+"    public String getZip() { return zip; }\n"
+"    public void setZip(String z) { zip = z; }\n"
+"}"
+
+#. Tag: para
+#: Validation.xml:18
+#, no-c-format
+msgid ""
+"Well, that&#39;s a decent first cut, but in practice it might be more "
+"elegant to use custom constraints instead of the ones built into Hibernate "
+"Validator:"
+msgstr ""
+"Das ist bereits ganz gut für den Anfang, aber in der Praxis ist es "
+"wahrscheinlich eleganter, angepasste Bedingungen statt der im Hibernate "
+"Validator eingebauten zu verwenden:"
+
+#. Tag: programlisting
+#: Validation.xml:21
+#, no-c-format
+msgid ""
+"public class Location {\n"
+"    private String country;\n"
+"    private String zip;\n"
+"    \n"
+"    @NotNull\n"
+"    @Country\n"
+"    public String getCountry() { return country; }\n"
+"    public void setCountry(String c) { country = c; }\n"
+"\n"
+"    @NotNull\n"
+"    @ZipCode\n"
+"    public String getZip() { return zip; }\n"
+"    public void setZip(String z) { zip = z; }\n"
+"}"
+msgstr ""
+"public class Location {\n"
+"    private String country;\n"
+"    private String zip;\n"
+"    \n"
+"    @NotNull\n"
+"    @Country\n"
+"    public String getCountry() { return country; }\n"
+"    public void setCountry(String c) { country = c; }\n"
+"\n"
+"    @NotNull\n"
+"    @ZipCode\n"
+"    public String getZip() { return zip; }\n"
+"    public void setZip(String z) { zip = z; }\n"
+"}"
+
+#. Tag: para
+#: Validation.xml:22
+#, no-c-format
+msgid ""
+"Whichever route we take, we no longer need to specify the type of validation "
+"to be used in the JSF page. Instead, we can use <literal>&lt;s:validate&gt;</"
+"literal> to validate against the constraint defined on the model object."
+msgstr ""
+"Welche Route auch immer wir einschlagen, wir müssen den in der JSF-Seite zu "
+"verwendenden Validierungstyp nicht mehr spezifizieren. Stattdessen kann "
+"<literal>&lt;s:validate&gt;</literal> verwendet werden, um die Validierung "
+"gegen die im Modellobjekt definierte Bedingung durchzuführen."
+
+#. Tag: programlisting
+#: Validation.xml:25
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;h:messages/&gt;\n"
+"\n"
+"    &lt;div&gt;\n"
+"        Country:\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;s:validate/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    \n"
+"    &lt;div&gt;\n"
+"        Zip code:\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;s:validate/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    \n"
+"    &lt;h:commandButton/&gt;\n"
+"\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h:form&gt;\n"
+"    &lt;h:messages/&gt;\n"
+"\n"
+"    &lt;div&gt;\n"
+"        Country:\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;s:validate/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    \n"
+"    &lt;div&gt;\n"
+"        Zip code:\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;s:validate/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    \n"
+"    &lt;h:commandButton/&gt;\n"
+"\n"
+"&lt;/h:form&gt;"
+
+#. Tag: para
+#: Validation.xml:26
+#, no-c-format
+msgid ""
+"<emphasis>Note:</emphasis> specifying <literal>@NotNull</literal> on the "
+"model does <emphasis>not</emphasis> eliminate the requirement for "
+"<literal>required=\"true\"</literal> to appear on the control! This is due "
+"to a limitation of the JSF validation architecture."
+msgstr ""
+"<emphasis>Hinweis:</emphasis> Das Festlegen von <literal>@NotNull</literal> "
+"am Modell eleminiert <emphasis>nicht</emphasis> die Anforderung, dass "
+"<literal>required=\"true\"</literal> an der \"Control\" erscheinen muss! "
+"Dies basiert auf einer Einschränkung JSF-Validierungsarchitektur."
+
+#. Tag: para
+#: Validation.xml:29
+#, no-c-format
+msgid ""
+"This approach <emphasis>defines</emphasis> constraints on the model, and "
+"<emphasis>presents</emphasis> constraint violations in the view&mdash;a "
+"significantly better design."
+msgstr ""
+"Diese Vorgehensweise <emphasis>definiert</emphasis> Bedingungen an dem "
+"Modell und <emphasis>zeigt</emphasis> Verletzungen der Bedingungen in der "
+"Ansicht &mdash; ein ungleich besseres Design."
+
+#. Tag: para
+#: Validation.xml:32
+#, no-c-format
+msgid ""
+"However, it is not much less verbose than what we started with, so let&#39;s "
+"try <literal>&lt;s:validateAll&gt;</literal>:"
+msgstr "Diese Version ist jedoch nicht viel weniger umfassend als das, womit wir begonnen haben, versuchen wir es daher mit <literal>&lt;s:validateAll&gt;</literal>:"
+
+#. Tag: programlisting
+#: Validation.xml:35
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    \n"
+"    &lt;h:messages/&gt;\n"
+"\n"
+"    &lt;s:validateAll&gt;\n"
+"\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;h:inputText value=\"#{location.country}\" required=\"true\"/"
+"&gt;\n"
+"        &lt;/div&gt;\n"
+"\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/"
+"&gt;\n"
+"        &lt;/div&gt;\n"
+"\n"
+"        &lt;h:commandButton/&gt;\n"
+"\n"
+"    &lt;/s:validateAll&gt;\n"
+"\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h:form&gt;\n"
+"    \n"
+"    &lt;h:messages/&gt;\n"
+"\n"
+"    &lt;s:validateAll&gt;\n"
+"\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;h:inputText value=\"#{location.country}\" required=\"true\"/"
+"&gt;\n"
+"        &lt;/div&gt;\n"
+"\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/"
+"&gt;\n"
+"        &lt;/div&gt;\n"
+"\n"
+"        &lt;h:commandButton/&gt;\n"
+"\n"
+"    &lt;/s:validateAll&gt;\n"
+"\n"
+"&lt;/h:form&gt;"
+
+#. Tag: para
+#: Validation.xml:36
+#, no-c-format
+msgid ""
+"This tag simply adds an <literal>&lt;s:validate&gt;</literal> to every input "
+"in the form. For a large form, it can save a lot of typing!"
+msgstr ""
+"Dieses Tag fügt jeder Formular-Eingabe einfach ein <literal>&lt;s:"
+"validate&gt;</literal> hinzu. Bei einem größeren Formular spart man sich "
+"dadurch eine Menge Tipparbeit!"
+
+#. Tag: para
+#: Validation.xml:39
+#, no-c-format
+msgid ""
+"Now we need to do something about displaying feedback to the user when "
+"validation fails. Currently we are displaying all messages at the top of the "
+"form. What we would really like to do is display the message next to the "
+"field with the error (this is possible in plain JSF), highlight the field "
+"and label (this is not possible) and, for good measure, display some image "
+"next the the field (also not possible). We also want to display a little "
+"colored asterisk next to the label for each required form field."
+msgstr "Als nächstes müssen wir dafür sorgen, das der Benutzer eine Meldung erhält, falls die Validierung fehlschlägt. Aktuell zeigen wir sämtliche Nachrichten ganz oben im Formular an. Unser Ziel ist es jedoch die Nachricht neben dem Feld mit dem Fehler anzuzeigen (dies ist in JSF möglich), Feld und Label zu markieren (dies ist nicht möglich) und eine Abbildung neben dem Feld darzustellen (auch das ist nicht möglich). Wir möchten außerdem einen kleinen, farbigen Asterisk neben dem Label für jedes erforderliche Formularfeld anzeigen."
+
+#. Tag: para
+#: Validation.xml:42
+#, no-c-format
+msgid ""
+"That&#39;s quite a lot of functionality we need for each field of our form. "
+"We wouldn&#39;t want to have to specify higlighting and the layout of the "
+"image, message and input field for every field on the form. So, instead, "
+"we&#39;ll specify the common layout in a facelets template:"
+msgstr "Das ist eine ganze Menge Funktionalität, die wir für jedes Feld unseres Formulars benötigen. Es wäre nicht so gut, wenn wir das Highlighten und das Layout der Abbildung, der Nachricht und des Eingabefelds für jedes Feld des Formulars festlegen müssten. Stattdessen legen wir also das gängige Layout in einer Facelets-Vorlage fest:"
+
+#. Tag: programlisting
+#: Validation.xml:45
+#, no-c-format
+msgid ""
+"&lt;ui:composition xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"                xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"                xmlns:h=\"http://java.sun.com/jsf/html\"\n"
+"                xmlns:f=\"http://java.sun.com/jsf/core\"\n"
+"                xmlns:s=\"http://jboss.com/products/seam/taglib\"&gt;\n"
+"                 \n"
+"    &lt;div&gt;\n"
+"    \n"
+"        &lt;s:label styleClass=\"#{invalid?&#39;error&#39;:&#39;&#39;}"
+"\"&gt;\n"
+"            &lt;ui:insert name=\"label\"/&gt;\n"
+"            &lt;s:span styleClass=\"required\" rendered=\"#{required}\"&gt;"
+"*&lt;/s:span&gt;\n"
+"        &lt;/s:label&gt;\n"
+"        \n"
+"        &lt;span class=\"#{invalid?&#39;error&#39;:&#39;&#39;}\"&gt;\n"
+"            &lt;h:graphicImage src=\"img/error.gif\" rendered=\"#{invalid}\"/"
+"&gt;\n"
+"            &lt;s:validateAll&gt;\n"
+"                &lt;ui:insert/&gt;\n"
+"            &lt;/s:validateAll&gt;\n"
+"        &lt;/span&gt;\n"
+"        \n"
+"        &lt;s:message styleClass=\"error\"/&gt;\n"
+"        \n"
+"    &lt;/div&gt;\n"
+"    \n"
+"&lt;/ui:composition&gt;"
+msgstr ""
+"&lt;ui:composition xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"                xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"                xmlns:h=\"http://java.sun.com/jsf/html\"\n"
+"                xmlns:f=\"http://java.sun.com/jsf/core\"\n"
+"                xmlns:s=\"http://jboss.com/products/seam/taglib\"&gt;\n"
+"                 \n"
+"    &lt;div&gt;\n"
+"    \n"
+"        &lt;s:label styleClass=\"#{invalid?&#39;error&#39;:&#39;&#39;}"
+"\"&gt;\n"
+"            &lt;ui:insert name=\"label\"/&gt;\n"
+"            &lt;s:span styleClass=\"required\" rendered=\"#{required}\"&gt;"
+"*&lt;/s:span&gt;\n"
+"        &lt;/s:label&gt;\n"
+"        \n"
+"        &lt;span class=\"#{invalid?&#39;error&#39;:&#39;&#39;}\"&gt;\n"
+"            &lt;h:graphicImage src=\"img/error.gif\" rendered=\"#{invalid}\"/"
+"&gt;\n"
+"            &lt;s:validateAll&gt;\n"
+"                &lt;ui:insert/&gt;\n"
+"            &lt;/s:validateAll&gt;\n"
+"        &lt;/span&gt;\n"
+"        \n"
+"        &lt;s:message styleClass=\"error\"/&gt;\n"
+"        \n"
+"    &lt;/div&gt;\n"
+"    \n"
+"&lt;/ui:composition&gt;"
+
+#. Tag: para
+#: Validation.xml:46
+#, no-c-format
+msgid ""
+"We can include this template for each of our form fields using <literal>&lt;"
+"s:decorate&gt;</literal>."
+msgstr "Mittels <literal>&lt;s:decorate&gt;</literal> können wir diese Vorlage für jedes unserer Formularfelder mit einschließen."
+
+#. Tag: programlisting
+#: Validation.xml:49
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"\n"
+"    &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"\n"
+"    &lt;s:decorate template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Country:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"/"
+"&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"    \n"
+"    &lt;s:decorate template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Zip code:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"\n"
+"    &lt;h:commandButton/&gt;\n"
+"\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h:form&gt;\n"
+"\n"
+"    &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"\n"
+"    &lt;s:decorate template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Country:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"/"
+"&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"    \n"
+"    &lt;s:decorate template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Zip code:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"\n"
+"    &lt;h:commandButton/&gt;\n"
+"\n"
+"&lt;/h:form&gt;"
+
+#. Tag: para
+#: Validation.xml:50
+#, no-c-format
+msgid ""
+"Finally, we can use Ajax4JSF to display validation messages as the user is "
+"navigating around the form:"
+msgstr ""
+"Und schließlich können wir Ajax4JSF verwenden, um Validierungsnachrichten "
+"anzuzeigen, während der Benutzer innerhalb des Formulars navigiert:"
+
+#. Tag: programlisting
+#: Validation.xml:53
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"\n"
+"    &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"\n"
+"    &lt;s:decorate id=\"countryDecoration\" template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Country:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;a:support event=\"onblur\" reRender=\"countryDecoration\"/"
+"&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"    \n"
+"    &lt;s:decorate id=\"zipDecoration\" template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Zip code:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;a:support event=\"onblur\" reRender=\"zipDecoration\"/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"\n"
+"    &lt;h:commandButton/&gt;\n"
+"\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h:form&gt;\n"
+"\n"
+"    &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"\n"
+"    &lt;s:decorate id=\"countryDecoration\" template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Country:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;a:support event=\"onblur\" reRender=\"countryDecoration\"/"
+"&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"    \n"
+"    &lt;s:decorate id=\"zipDecoration\" template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Zip code:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;a:support event=\"onblur\" reRender=\"zipDecoration\"/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"\n"
+"    &lt;h:commandButton/&gt;\n"
+"\n"
+"&lt;/h:form&gt;"
+
+#. Tag: para
+#: Validation.xml:54
+#, no-c-format
+msgid ""
+"As a final note, it&#39;s better style to define explicit ids for important "
+"controls on the page, especially if you want to do automated testing for the "
+"UI, using some toolkit like Selenium. If you don&#39;t provide explicit ids, "
+"JSF will generate them, but the generated values will change if you change "
+"anything on the page."
+msgstr ""
+"Zu guter Letzt noch eine Anmerkung: Es ist stilistisch besser explizite IDs für wichtige Steuerungen auf der Seite zu definieren, insbesondere wenn Sie automatisiertes Testen für das UI unter Verwendung eines Toolkits wie etwa Selenium durchführen möchten. Falls Sie keine expliziten IDs bereitstellen, "
+"so generiert JSF diese, aber die generierten Werte ändern sich, wenn Sie irgendetwas auf der Seite ändern."
+
+#. Tag: programlisting
+#: Validation.xml:57
+#, no-c-format
+msgid ""
+"&lt;h:form id=\"form\"&gt;\n"
+"\n"
+"    &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"\n"
+"    &lt;s:decorate id=\"countryDecoration\" template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Country:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText id=\"country\" value=\"#{location.country}\" "
+"required=\"true\"&gt;\n"
+"            &lt;a:support event=\"onblur\" reRender=\"countryDecoration\"/"
+"&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"    \n"
+"    &lt;s:decorate id=\"zipDecoration\" template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Zip code:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText id=\"zip\" value=\"#{location.zip}\" required=\"true"
+"\"&gt;\n"
+"            &lt;a:support event=\"onblur\" reRender=\"zipDecoration\"/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"\n"
+"    &lt;h:commandButton/&gt;\n"
+"\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h:form id=\"form\"&gt;\n"
+"\n"
+"    &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"\n"
+"    &lt;s:decorate id=\"countryDecoration\" template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Country:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText id=\"country\" value=\"#{location.country}\" "
+"required=\"true\"&gt;\n"
+"            &lt;a:support event=\"onblur\" reRender=\"countryDecoration\"/"
+"&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"    \n"
+"    &lt;s:decorate id=\"zipDecoration\" template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Zip code:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText id=\"zip\" value=\"#{location.zip}\" required=\"true"
+"\"&gt;\n"
+"            &lt;a:support event=\"onblur\" reRender=\"zipDecoration\"/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"\n"
+"    &lt;h:commandButton/&gt;\n"
+"\n"
+"&lt;/h:form&gt;"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Xml.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Xml.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/de-DE/Xml.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1307 @@
+# translation of Xml.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Jasna Dimanoski <jdimanos at redhat.com>, 2007, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Xml\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2008-03-16 11:34+1000\n"
+"Last-Translator: Jasna Dimanoski <jdimanos at redhat.com>\n"
+"Language-Team:  <de at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Xml.xml:6
+#, no-c-format
+msgid "Configuring Seam components"
+msgstr "Konfiguration von Seam-Komponenten"
+
+#. Tag: para
+#: Xml.xml:7
+#, no-c-format
+msgid ""
+"The philosophy of minimizing XML-based configuration is extremely strong in "
+"Seam. Nevertheless, there are various reasons why we might want to configure "
+"a Seam component using XML: to isolate deployment-specific information from "
+"the Java code, to enable the creation of re-usable frameworks, to configure "
+"Seam&#39;s built-in functionality, etc. Seam provides two basic approaches "
+"to configuring components: configuration via property settings in a "
+"properties file or <literal>web.xml</literal>, and configuration via "
+"<literal>components.xml</literal>."
+msgstr ""
+"Die Philosophie der Minimalisierung der XML-basierten Konfiguration ist in "
+"Seam sehr stark. Nichtsdestotrotz gibt es verschiedene Gründe, warum wir "
+"eine Seam-Komponente unter Verwendung von XML konfigurieren: Um Deployment-spezifische Informationen aus dem Java-Code zu isolieren, die Erstellung wiederverwendbarer Frameworks zu aktivieren, Seams eingebaute Funktionalität zu konfigurieren usw.. Seam liefert zwei grundlegende Herangehensweisen zur "
+"Konfiguration von Komponenten: Konfiguration über Property-Einstellungen in einer Properties-Datei oder <literal>web.xml</literal>, und die Konfiguration über <literal>components.xml</literal>."
+
+#. Tag: title
+#: Xml.xml:10
+#, no-c-format
+msgid "Configuring components via property settings"
+msgstr "Konfiguration von Komponenten via Property-Einstellungen"
+
+#. Tag: para
+#: Xml.xml:11
+#, no-c-format
+msgid ""
+"Seam components may be provided with configuration properties either via "
+"servlet context parameters, or via a properties file named <literal>seam."
+"properties</literal> in the root of the classpath."
+msgstr ""
+"Seam-Komponenten können mit den Konfigurations-Properties entweder über  "
+"Servlet-Kontextparameter oder über eine <literal>seam.properties</literal> "
+"genannte Properties-Datei in der root des Klassenpfads geliefert werden."
+
+#. Tag: para
+#: Xml.xml:14
+#, no-c-format
+msgid ""
+"The configurable Seam component must expose JavaBeans-style property setter "
+"methods for the configurable attributes. If a seam component named "
+"<literal>com.jboss.myapp.settings</literal> has a setter method named "
+"<literal>setLocale()</literal>, we can provide a property named <literal>com."
+"jboss.myapp.settings.locale</literal> in the <literal>seam.properties</"
+"literal> file or as a servlet context parameter, and Seam will set the value "
+"of the <literal>locale</literal> attribute whenever it instantiates the "
+"component."
+msgstr ""
+"Die konfigurierbare Seam-Komponente muss Property Setter-Methoden nach "
+"JavaBeans-Art für die konfigurierbaren Attribute darlegen. Besitzt eine Seam-"
+"Komponente mit dem Namen <literal>com.jboss.myapp.settings</literal> eine "
+"Setter-Methode mit Namen <literal>setLocale()</literal>, so können wir eine "
+"Property mit Namen <literal>com.jboss.myapp.settings.locale</literal> in der "
+"<literal>seam.properties</literal>-Datei oder als Servlet Kontext-Parameter "
+"bereitstellen, und Seam wird den Wert des <literal>locale</literal>-"
+"Attributs jedes Mal setzen wenn es die Komponente instantiiert."
+
+#. Tag: para
+#: Xml.xml:17
+#, no-c-format
+msgid ""
+"The same mechanism is used to configure Seam itself. For example, to set the "
+"conversation timeout, we provide a value for <literal>org.jboss.seam.core."
+"manager.conversationTimeout</literal> in <literal>web.xml</literal> or "
+"<literal>seam.properties</literal>. (There is a built-in Seam component "
+"named <literal>org.jboss.seam.core.manager</literal> with a setter method "
+"named <literal>setConversationTimeout()</literal>.)"
+msgstr ""
+"Derselbe Mechanismus wird zur Konfiguration von Seam selbst verwendet. Um "
+"zum Beispiel den \"Conversation Timeout\" einzustellen, liefern wir einen "
+"Wert für <literal>org.jboss.seam.core.manager.conversationTimeout</literal> "
+"in <literal>web.xml</literal> oder <literal>seam.properties</literal>. (Es "
+"existiert eine eingebaute Seam Komponent mit Namen <literal>org.jboss.seam."
+"core.manager</literal> mit einer Setter-Methode mit Namen "
+"<literal>setConversationTimeout()</literal>)."
+
+#. Tag: title
+#: Xml.xml:20
+#, no-c-format
+msgid "Configuring components via components.xml"
+msgstr "Konfiguration von Komponenten via components.xml"
+
+#. Tag: para
+#: Xml.xml:21
+#, no-c-format
+msgid ""
+"The <literal>components.xml</literal> file is a bit more powerful than "
+"property settings. It lets you:"
+msgstr ""
+"Die <literal>components.xml</literal>-Datei ist etwas leistungsfähiger als "
+"Property-Einstellungen. Sie können mit ihr:"
+
+#. Tag: para
+#: Xml.xml:26
+#, no-c-format
+msgid ""
+"Configure components that have been installed automatically&mdash;including "
+"both built-in components, and application components that have been "
+"annotated with the <literal>@Name</literal> annotation and picked up by "
+"Seam&#39;s deployment scanner."
+msgstr ""
+"Komponenten konfigurieren, die automatisch installiert wurden,&mdash;"
+"einschließlich eingebauter Komponenten sowie Anwendungskomponenten, die mit der <literal>@Name</literal>-Annotation annotiert und von Seams Deployment Scanner erfasst wurden."
+
+#. Tag: para
+#: Xml.xml:31
+#, no-c-format
+msgid ""
+"Install classes with no <literal>@Name</literal> annotation as Seam "
+"components&mdash;this is most useful for certain kinds of infrastructural "
+"components which can be installed multiple times different names (for "
+"example Seam-managed persistence contexts)."
+msgstr ""
+"Installieren Sie Klassen ohne <literal>@Name</literal>-Annotation als Seam "
+"Komponenten &mdash; dies ist für bestimmte Arten infrastruktureller "
+"Komponenten, die mehrmals mit verschiedenen Namen installiert werden können "
+"hilfreich (zum Beispiel Seam-gemanagte Persistenz-Kontexte)."
+
+#. Tag: para
+#: Xml.xml:36
+#, no-c-format
+msgid ""
+"Install components that <emphasis>do</emphasis> have a <literal>@Name</"
+"literal> annotation but are not installed by default because of an "
+"<literal>@Install</literal> annotation that indicates the component should "
+"not be installed."
+msgstr ""
+"Installieren Sie Komponenten, die eine <literal>@Name</literal>-Annotation "
+"<emphasis>besitzen</emphasis>, aber nicht standardmäßig installiert sind, "
+"weil eine <literal>@Install</literal>-Annotation die angibt, dass die "
+"Komponente nicht installiert werden sollte."
+
+#. Tag: para
+#: Xml.xml:41
+#, no-c-format
+msgid "Override the scope of a component."
+msgstr "Den Gültigkeitsbereich einer Komponente außer Kraft setzen."
+
+#. Tag: para
+#: Xml.xml:46
+#, no-c-format
+msgid ""
+"A <literal>components.xml</literal> file may appear in one of three "
+"different places:"
+msgstr ""
+"Eine <literal>components.xml</literal>-Datei kann an einem von drei "
+"verschiedenen Plätzen erscheinen:"
+
+#. Tag: para
+#: Xml.xml:51
+#, no-c-format
+msgid "The <literal>WEB-INF</literal> directory of a <literal>war</literal>."
+msgstr "Das <literal>WEB-INF</literal>-Verzeichnis einer <literal>war</literal>."
+
+#. Tag: para
+#: Xml.xml:56
+#, no-c-format
+msgid "The <literal>META-INF</literal> directory of a <literal>jar</literal>."
+msgstr "Dem <literal>META-INF</literal>-Verzeichnis einer <literal>jar</literal>."
+
+#. Tag: para
+#: Xml.xml:61
+#, no-c-format
+msgid ""
+"Any directory of a <literal>jar</literal> that contains classes with an "
+"<literal>@Name</literal> annotation."
+msgstr ""
+"Jedes Verzeichnis einer <literal>jar</literal> das Klassen mit einer "
+"<literal>@Name</literal>-Annotation enthält."
+
+#. Tag: para
+#: Xml.xml:66
+#, no-c-format
+msgid ""
+"Usually, Seam components are installed when the deployment scanner discovers "
+"a class with a <literal>@Name</literal> annotation sitting in an archive "
+"with a <literal>seam.properties</literal> file or a <literal>META-INF/"
+"components.xml</literal> file. (Unless the component has an "
+"<literal>@Install</literal> annotation indicating it should not be installed "
+"by default.) The <literal>components.xml</literal> file lets us handle "
+"special cases where we need to override the annotations."
+msgstr ""
+"In der Regel werden Seam-Komponenten installiert, wenn der Deplyment Scanner "
+"eine Klasse mit einer <literal>@Name</literal>-Annotation entdeckt, die sich "
+"in einem Archiv mit einer <literal>seam.properties</literal>-Datei oder "
+"einer <literal>META-INF/components.xml</literal>-Datei befindet. (Außer die "
+"Komponente besitzt eine <literal>@Install</literal>-Annotation, die anzeigt, "
+"dass sie in der Standardeinstellung nicht installiert werden sollte). Die "
+"<literal>components.xml</literal>-Datei erlaubt die Bearbeitung von "
+"Sonderfällen, wenn Annotationen außer Kraft gesetzt werden müssen."
+
+#. Tag: para
+#: Xml.xml:69
+#, no-c-format
+msgid ""
+"For example, the following <literal>components.xml</literal> file installs "
+"the JBoss Embeddable EJB3 container:"
+msgstr ""
+"Die folgende <literal>components.xml</literal>-Datei zum Beispiel "
+"installiert den JBoss Embeddable EJB3-Container:"
+
+#. Tag: programlisting
+#: Xml.xml:72
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"&gt;\n"
+"    &lt;core:ejb/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"&gt;\n"
+"    &lt;core:ejb/&gt;\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:73
+#, no-c-format
+msgid "This example does the same thing:"
+msgstr "Dieses Beispiel tut dasselbe:"
+
+#. Tag: programlisting
+#: Xml.xml:76
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component class=\"org.jboss.seam.core.Ejb\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components&gt;\n"
+"    &lt;component class=\"org.jboss.seam.core.Ejb\"/&gt;\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:77
+#, no-c-format
+msgid ""
+"This one installs and configures two different Seam-managed persistence "
+"contexts:"
+msgstr ""
+"Dieses installiert und konfiguriert zwei verschiedene durch Seam-gemanagte "
+"Persistenz-Kontexte:"
+
+#. Tag: programlisting
+#: Xml.xml:80
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"    &lt;core:managed-persistence-context name=\"customerDatabase\"\n"
+"                persistence-unit-jndi-name=\"java:/"
+"customerEntityManagerFactory\"/&gt;\n"
+"        \n"
+"    &lt;core:managed-persistence-context name=\"accountingDatabase\"\n"
+"                persistence-unit-jndi-name=\"java:/"
+"accountingEntityManagerFactory\"/&gt;            \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"    &lt;core:managed-persistence-context name=\"customerDatabase\"\n"
+"                persistence-unit-jndi-name=\"java:/"
+"customerEntityManagerFactory\"/&gt;\n"
+"        \n"
+"    &lt;core:managed-persistence-context name=\"accountingDatabase\"\n"
+"                persistence-unit-jndi-name=\"java:/"
+"accountingEntityManagerFactory\"/&gt;            \n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:81
+#, no-c-format
+msgid "As does this one:"
+msgstr "Ebenso dieses:"
+
+#. Tag: programlisting
+#: Xml.xml:84
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component name=\"customerDatabase\" \n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"customerEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"    \n"
+"    &lt;component name=\"accountingDatabase\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"accountingEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components&gt;\n"
+"    &lt;component name=\"customerDatabase\" \n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"customerEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"    \n"
+"    &lt;component name=\"accountingDatabase\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"accountingEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:85
+#, no-c-format
+msgid ""
+"This example creates a session-scoped Seam-managed persistence context (this "
+"is not recommended in practice):"
+msgstr ""
+"Dieses Beispiel erstellt einen Session-begrenztenSeam-gemanagten Persistenz-"
+"Kontext (dies wird in der Praxis nicht empfohlen):"
+
+#. Tag: programlisting
+#: Xml.xml:88
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"  &lt;core:managed-persistence-context name=\"productDatabase\" \n"
+"                                   scope=\"session\"\n"
+"              persistence-unit-jndi-name=\"java:/productEntityManagerFactory"
+"\"/&gt;        \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"  &lt;core:managed-persistence-context name=\"productDatabase\" \n"
+"                                   scope=\"session\"\n"
+"              persistence-unit-jndi-name=\"java:/productEntityManagerFactory"
+"\"/&gt;        \n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: programlisting
+#: Xml.xml:89
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"            \n"
+"    &lt;component name=\"productDatabase\"\n"
+"              scope=\"session\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"productEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components&gt;\n"
+"            \n"
+"    &lt;component name=\"productDatabase\"\n"
+"              scope=\"session\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"productEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:90
+#, no-c-format
+msgid ""
+"It is common to use the <literal>auto-create</literal> option for "
+"infrastructural objects like persistence contexts, which saves you from "
+"having to explicitly specify <literal>create=true</literal> when you use the "
+"<literal>@In</literal> annotation."
+msgstr ""
+"Es ist üblich, die <literal>auto-create</literal>-Option für "
+"infrastrukturelle Objekte wie Persistenz-Kontexte zu verwenden, was die "
+"explizite Festlegung von <literal>create=true</literal> bei der Verwendung "
+"der <literal>@In</literal>-Annotation hinfällig macht."
+
+#. Tag: programlisting
+#: Xml.xml:93
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"  &lt;core:managed-persistence-context name=\"productDatabase\" \n"
+"                             auto-create=\"true\"\n"
+"              persistence-unit-jndi-name=\"java:/productEntityManagerFactory"
+"\"/&gt;        \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"  &lt;core:managed-persistence-context name=\"productDatabase\" \n"
+"                             auto-create=\"true\"\n"
+"              persistence-unit-jndi-name=\"java:/productEntityManagerFactory"
+"\"/&gt;        \n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: programlisting
+#: Xml.xml:94
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"            \n"
+"    &lt;component name=\"productDatabase\"\n"
+"        auto-create=\"true\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"productEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components&gt;\n"
+"            \n"
+"    &lt;component name=\"productDatabase\"\n"
+"        auto-create=\"true\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"productEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:95
+#, no-c-format
+msgid ""
+"The <literal>&lt;factory&gt;</literal> declaration lets you specify a value "
+"or method binding expression that will be evaluated to initialize the value "
+"of a context variable when it is first referenced."
+msgstr ""
+"Die <literal>&lt;factory&gt;</literal>-Deklaration erlaubt es Ihnen einen "
+"bindenden Ausdruck für Wert oder Methode festzulegen, der evaluiert wird, um "
+"den Wert einer Kontextvariablen zu initialisieren, wenn auf diese erstmals "
+"verwiesen wird."
+
+#. Tag: programlisting
+#: Xml.xml:98
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"contact\" method=\"#{contactManager.loadContact}\" "
+"scope=\"CONVERSATION\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"contact\" method=\"#{contactManager.loadContact}\" "
+"scope=\"CONVERSATION\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:99
+#, no-c-format
+msgid "You can create an \"alias\" (a second name) for a Seam component like so:"
+msgstr ""
+"Sie können einen \"Alias\" (einen Zweitnamen) für eine Seam-Komponente "
+"erstellen:"
+
+#. Tag: programlisting
+#: Xml.xml:102
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"user\" value=\"#{actor}\" scope=\"STATELESS\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"user\" value=\"#{actor}\" scope=\"STATELESS\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:103
+#, no-c-format
+msgid "You can even create an \"alias\" for a commonly used expression:"
+msgstr ""
+"Sie können sogar einen \"Alias\" für einen häufig verwendeten Ausdruck "
+"erstellen:"
+
+#. Tag: programlisting
+#: Xml.xml:106
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"contact\" value=\"#{contactManager.contact}\" scope="
+"\"STATELESS\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"contact\" value=\"#{contactManager.contact}\" scope="
+"\"STATELESS\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:107
+#, no-c-format
+msgid ""
+"It is especially common to see the use of <literal>auto-create=\"true\"</"
+"literal> with the <literal>&lt;factory&gt;</literal> declaration:"
+msgstr ""
+"Es ist besonders gängig, den Gebrauch von <literal>auto-create=\"true\"</"
+"literal> mit der <literal>&lt;factory&gt;</literal>-Deklaration zu sehen:"
+
+#. Tag: programlisting
+#: Xml.xml:110
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"session\" value=\"#{entityManager.delegate}\" scope="
+"\"STATELESS\" \n"
+"       auto-create=\"true\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"session\" value=\"#{entityManager.delegate}\" scope="
+"\"STATELESS\" \n"
+"       auto-create=\"true\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:111
+#, no-c-format
+msgid ""
+"Sometimes we want to reuse the same <literal>components.xml</literal> file "
+"with minor changes during both deployment and testing. Seam lets you place "
+"wildcards of the form <literal>@wildcard@</literal> in the "
+"<literal>components.xml</literal> file which can be replaced either by your "
+"Ant build script (at deployment time) or by providing a file named "
+"<literal>components.properties</literal> in the classpath (at development "
+"time). You&#39;ll see this approach used in the Seam examples."
+msgstr ""
+"Manchmal möchten man dieselbe <literal>components.xml</literal>-Datei mit "
+"kleineren Änderungen sowohl beim Deployment als auch beim Testen "
+"wiederverwenden. Seam gestattet es, Platzhalter (sog. \"Wildcards\") in Form von <literal>@wildcard@</literal> in der <literal>components.xml</literal>-"
+"Datei zu platzieren, die entweder durch Ihr Ant Build-Skript (zum Zeitpunkt "
+"des Deployments) oder durch Bereitstellen einer Datei mit Namen "
+"<literal>components.properties</literal> im Klassenpfad (zum Zeitpunkt der Entwicklung) ersetzt werden kann. Sie werden dies in den Seam-Beispielen sehen."
+
+#. Tag: title
+#: Xml.xml:114
+#, no-c-format
+msgid "Fine-grained configuration files"
+msgstr "Feinkörnige Konfigurationsdateien"
+
+#. Tag: para
+#: Xml.xml:115
+#, no-c-format
+msgid ""
+"If you have a large number of components that need to be configured in XML, "
+"it makes much more sense to split up the information in <literal>components."
+"xml</literal> into many small files. Seam lets you put configuration for a "
+"class named, for example, <literal>com.helloworld.Hello</literal> in a "
+"resource named <literal>com/helloworld/Hello.component.xml</literal>. (You "
+"might be familiar with this pattern, since it is the same one we use in "
+"Hibernate.) The root element of the file may be either a <literal>&lt;"
+"components&gt;</literal> or <literal>&lt;component&gt;</literal> element."
+msgstr ""
+"Wenn Sie eine große Anzahl in XML zu konfigurierender Komponenten besitzen, "
+"so ist es sinnvoll die Informationen aus <literal>components.xml</literal> "
+"in viele kleine Dateien aufzuteilen. Seam gestattet es Ihnen, die "
+"Konfiguration für eine genannte Klasse, etwa <literal>com.helloworld.Hello</"
+"literal> in eine Ressource mit Namen <literal>com/helloworld/Hello.component."
+"xml</literal> zu platzieren. (Sie sollten hiermit vertraut sein, da es sich "
+"um diesselbe wie in Hibernate handelt). Das root-Element der Datei kann "
+"entweder ein <literal>&lt;components&gt;</literal> oder ein <literal>&lt;"
+"component&gt;</literal>-Element sein."
+
+#. Tag: para
+#: Xml.xml:118
+#, no-c-format
+msgid "The first option lets you define multiple components in the file:"
+msgstr "Die erste Option lässt Sie mehrere Komponenten in der Datei definieren:"
+
+#. Tag: programlisting
+#: Xml.xml:121
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component class=\"com.helloworld.Hello\" name=\"hello\"&gt;\n"
+"        &lt;property name=\"name\"&gt;#{user.name}&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"    &lt;factory name=\"message\" value=\"#{hello.message}\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components&gt;\n"
+"    &lt;component class=\"com.helloworld.Hello\" name=\"hello\"&gt;\n"
+"        &lt;property name=\"name\"&gt;#{user.name}&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"    &lt;factory name=\"message\" value=\"#{hello.message}\"/&gt;\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:122
+#, no-c-format
+msgid ""
+"The second option only lets you define or configure one component, but is "
+"less noisy:"
+msgstr ""
+"Die zweite Option lässt Sie nur eine Komponente definieren oder "
+"konfigurieren, ist jedoch weniger \"noisy\":"
+
+#. Tag: programlisting
+#: Xml.xml:125
+#, no-c-format
+msgid ""
+"&lt;component name=\"hello\"&gt;\n"
+"    &lt;property name=\"name\"&gt;#{user.name}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+"&lt;component name=\"hello\"&gt;\n"
+"    &lt;property name=\"name\"&gt;#{user.name}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+
+#. Tag: para
+#: Xml.xml:126
+#, no-c-format
+msgid ""
+"In the second option, the class name is implied by the file in which the "
+"component definition appears."
+msgstr ""
+"In der zweiten Option wird der Klassenname durch die Datei impliziert, in "
+"der die Komponente erscheint."
+
+#. Tag: para
+#: Xml.xml:129
+#, no-c-format
+msgid ""
+"Alternatively, you may put configuration for all classes in the <literal>com."
+"helloworld</literal> package in <literal>com/helloworld/components.xml</"
+"literal>."
+msgstr ""
+"Alternativ können Sie die Konfiguration für alle Klassen im <literal>com."
+"helloworld</literal>-Paket in <literal>com/helloworld/components.xml</"
+"literal> ablegen."
+
+#. Tag: title
+#: Xml.xml:132
+#, no-c-format
+msgid "Configurable property types"
+msgstr "Konfigurierbare Property-Typen"
+
+#. Tag: para
+#: Xml.xml:133
+#, no-c-format
+msgid ""
+"Properties of string, primitive or primitive wrapper type may be configured "
+"just as you would expect:"
+msgstr ""
+"Properties nach String-, \"Primitive-\" oder \"primitive Wrapper\" Art "
+"können genauso konfiguriert werden, wie Sie es erwarten würden:"
+
+#. Tag: programlisting
+#: Xml.xml:136
+#, no-c-format
+msgid "org.jboss.seam.core.manager.conversationTimeout 60000"
+msgstr "org.jboss.seam.core.manager.conversationTimeout 60000"
+
+#. Tag: programlisting
+#: Xml.xml:137
+#, no-c-format
+msgid "&lt;core:manager conversation-timeout=\"60000\"/&gt;"
+msgstr "&lt;core:manager conversation-timeout=\"60000\"/&gt;"
+
+#. Tag: programlisting
+#: Xml.xml:138
+#, no-c-format
+msgid ""
+"&lt;component name=\"org.jboss.seam.core.manager\"&gt;\n"
+"    &lt;property name=\"conversationTimeout\"&gt;60000&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+"&lt;component name=\"org.jboss.seam.core.manager\"&gt;\n"
+"    &lt;property name=\"conversationTimeout\"&gt;60000&lt;/property&gt;\n"
+"&lt;/component&gt;"
+
+#. Tag: para
+#: Xml.xml:139
+#, no-c-format
+msgid "Arrays, sets and lists of strings or primitives are also supported:"
+msgstr ""
+"Arrays, Sets und Stringlisten oder \"Primitives\" werden ebenfalls "
+"unterstützt:"
+
+#. Tag: programlisting
+#: Xml.xml:142
+#, no-c-format
+msgid ""
+"org.jboss.seam.core.jbpm.processDefinitions order.jpdl.xml, return.jpdl.xml, "
+"inventory.jpdl.xml"
+msgstr ""
+"org.jboss.seam.core.jbpm.processDefinitions order.jpdl.xml, return.jpdl.xml, "
+"inventory.jpdl.xml"
+
+#. Tag: programlisting
+#: Xml.xml:143
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;order.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;return.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;order.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;return.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+
+#. Tag: programlisting
+#: Xml.xml:144
+#, no-c-format
+msgid ""
+"&lt;component name=\"org.jboss.seam.core.jbpm\"&gt;\n"
+"    &lt;property name=\"processDefinitions\"&gt;\n"
+"        &lt;value&gt;order.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;return.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+"&lt;component name=\"org.jboss.seam.core.jbpm\"&gt;\n"
+"    &lt;property name=\"processDefinitions\"&gt;\n"
+"        &lt;value&gt;order.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;return.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/component&gt;"
+
+#. Tag: para
+#: Xml.xml:145
+#, no-c-format
+msgid ""
+"Even maps with String-valued keys and string or primitive values are "
+"supported:"
+msgstr ""
+"Sogar Maps mit String-wertige Schlüssel und String- oder \"primitive\" Werte "
+"werden unterstützt:"
+
+#. Tag: programlisting
+#: Xml.xml:148
+#, no-c-format
+msgid ""
+"&lt;component name=\"issueEditor\"&gt;\n"
+"    &lt;property name=\"issueStatuses\"&gt;\n"
+"        &lt;key&gt;open&lt;/key&gt; &lt;value&gt;open issue&lt;/value&gt;\n"
+"        &lt;key&gt;resolved&lt;/key&gt; &lt;value&gt;issue resolved by "
+"developer&lt;/value&gt;\n"
+"        &lt;key&gt;closed&lt;/key&gt; &lt;value&gt;resolution accepted by "
+"user&lt;/value&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+"&lt;component name=\"issueEditor\"&gt;\n"
+"    &lt;property name=\"issueStatuses\"&gt;\n"
+"        &lt;key&gt;open&lt;/key&gt; &lt;value&gt;open issue&lt;/value&gt;\n"
+"        &lt;key&gt;resolved&lt;/key&gt; &lt;value&gt;issue resolved by "
+"developer&lt;/value&gt;\n"
+"        &lt;key&gt;closed&lt;/key&gt; &lt;value&gt;resolution accepted by "
+"user&lt;/value&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/component&gt;"
+
+#. Tag: para
+#: Xml.xml:149
+#, no-c-format
+msgid ""
+"Finally, you may wire together components using a value-binding expression. "
+"Note that this is quite different to injection using <literal>@In</literal>, "
+"since it happens at component instantiation time instead of invocation time. "
+"It is therefore much more similar to the dependency injection facilities "
+"offered by traditional IoC containers like JSF or Spring."
+msgstr ""
+"Schließlich können Sie Komponenten mittels eines Werte bindenden Ausdrucks "
+"miteinander verbinden. Beachten Sie, dass dies sich maßgeblich von der "
+"Einspeisung mittels <literal>@In</literal> unterscheidet, da es zum "
+"Zeitpunkt der Kompponenteninstantiierung statt zum Zeitpunkt des Aufrufs "
+"erfolgt. Es ist daher den \"Dependency Injection Facilities\" in "
+"traditionellen IoC-Containers wie JSF oder Spring wesentlich ähnlicher."
+
+#. Tag: programlisting
+#: Xml.xml:152
+#, no-c-format
+msgid ""
+"&lt;drools:managed-working-memory name=\"policyPricingWorkingMemory\" rule-"
+"base=\"#{policyPricingRules}\"/&gt;"
+msgstr ""
+"&lt;drools:managed-working-memory name=\"policyPricingWorkingMemory\" rule-"
+"base=\"#{policyPricingRules}\"/&gt;"
+
+#. Tag: programlisting
+#: Xml.xml:153
+#, no-c-format
+msgid ""
+"&lt;component name=\"policyPricingWorkingMemory\"\n"
+"          class=\"org.jboss.seam.drools.ManagedWorkingMemory\"&gt;\n"
+"    &lt;property name=\"ruleBase\"&gt;#{policyPricingRules}&lt;/"
+"property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+"&lt;component name=\"policyPricingWorkingMemory\"\n"
+"          class=\"org.jboss.seam.drools.ManagedWorkingMemory\"&gt;\n"
+"    &lt;property name=\"ruleBase\"&gt;#{policyPricingRules}&lt;/"
+"property&gt;\n"
+"&lt;/component&gt;"
+
+#. Tag: title
+#: Xml.xml:154
+#, no-c-format
+msgid "Using XML Namespaces"
+msgstr "Die Verwendung von XML-Namespaces"
+
+#. Tag: para
+#: Xml.xml:155
+#, no-c-format
+msgid ""
+"Throughout the examples, there have been two competing ways of declaring "
+"components: with and without the use of XML namespaces. The following shows "
+"a typical <literal>components.xml</literal> file without namespaces. It uses "
+"the Seam Components DTD:"
+msgstr ""
+"In diesen Beispielen gabe es zwei konkurrierende Arten des Deklarierens von "
+"Komponenten: Mit und ohne die Verwendung von XML-Namespaces. Nachfolgend "
+"sehen Sie eine typische <literal>components.xml</literal>-Datei ohne "
+"Namespaces. Es werden die Seam Komponenten DTD verwendet:"
+
+#. Tag: programlisting
+#: Xml.xml:158
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"&gt;\n"
+"&lt;!DOCTYPE components PUBLIC \"-//JBoss/Seam Component Configuration DTD "
+"1.2//EN\"\n"
+"                            \"http://jboss.com/products/seam/components-1.2."
+"dtd\"&gt;\n"
+"&lt;components&gt;\n"
+"\n"
+"    &lt;component class=\"org.jboss.seam.core.init\"&gt;\n"
+"        &lt;property name=\"debug\"&gt;true&lt;/property&gt;\n"
+"        &lt;property name=\"jndiPattern\"&gt;@jndiPattern@&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"    &lt;component name=\"org.jboss.sean.core.ejb\" installed=\"@embeddedEjb@"
+"\" /&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"&gt;\n"
+"&lt;!DOCTYPE components PUBLIC \"-//JBoss/Seam Component Configuration DTD "
+"1.2//EN\"\n"
+"                            \"http://jboss.com/products/seam/components-1.2."
+"dtd\"&gt;\n"
+"&lt;components&gt;\n"
+"\n"
+"    &lt;component class=\"org.jboss.seam.core.init\"&gt;\n"
+"        &lt;property name=\"debug\"&gt;true&lt;/property&gt;\n"
+"        &lt;property name=\"jndiPattern\"&gt;@jndiPattern@&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"    &lt;component name=\"org.jboss.sean.core.ejb\" installed=\"@embeddedEjb@"
+"\" /&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:159
+#, no-c-format
+msgid ""
+"As you can see, this is somewhat verbose. Even worse, the component and "
+"attribute names cannot be validated at development time."
+msgstr ""
+"Wie Sie sehen ist dies ganz schön umfassend! Schlimmer noch, die Namen von "
+"Komponenten und Attributen können zum Zeitpunkt der Entwicklung nicht "
+"validiert werden."
+
+#. Tag: para
+#: Xml.xml:162
+#, no-c-format
+msgid "The namespaced version looks like this:"
+msgstr "Die Namespace-Version sieht wie folgt aus:"
+
+#. Tag: programlisting
+#: Xml.xml:165
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                                        http://jboss.com/products/seam/core-"
+"1.2.xsd \n"
+"                 http://jboss.com/products/seam/components \n"
+"                                        http://jboss.com/products/seam/"
+"components-1.2.xsd\"&gt;\n"
+"\n"
+"    &lt;core:init debug=\"true\" jndi-pattern=\"@jndiPattern@\"/&gt;\n"
+"\n"
+"    &lt;core:ejb installed=\"@embeddedEjb@\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                                        http://jboss.com/products/seam/core-"
+"1.2.xsd \n"
+"                 http://jboss.com/products/seam/components \n"
+"                                        http://jboss.com/products/seam/"
+"components-1.2.xsd\"&gt;\n"
+"\n"
+"    &lt;core:init debug=\"true\" jndi-pattern=\"@jndiPattern@\"/&gt;\n"
+"\n"
+"    &lt;core:ejb installed=\"@embeddedEjb@\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:166
+#, no-c-format
+msgid ""
+"Even though the schema declarations are verbose, the actual XML content is "
+"lean and easy to understand. The schemas provide detailed information about "
+"each component and the attributes available, allowing XML editors to offer "
+"intelligent autocomplete. The use of namespaced elements makes generating "
+"and maintaining correct <literal>components.xml</literal> files much simpler."
+msgstr ""
+"Obwohl diese Schema-Deklarationen umfangreich sind, ist der tatsächliche XML-"
+"Inhalt knapp und leicht verständlich. Die Schemas liefern ausführliche "
+"Informationen zu jeder verfügbaren Komponente und jedem verfügbaren "
+"Attribut, so das XML-Editoren intelligente Auto-Vervollständigung liefern "
+"können. Die Verwendung von Elementen mit Namespaces macht die Generierung "
+"und Wartung korrekter <literal>components.xml</literal>-Dateien wesentlich "
+"einfacher."
+
+#. Tag: para
+#: Xml.xml:169
+#, no-c-format
+msgid ""
+"Now, this works great for the built-in Seam components, but what about user "
+"components? There are two options. First, Seam supports mixing the two "
+"models, allowing the use of the generic <literal>&lt;component&gt;</literal> "
+"declarations for user components, along with namespaced declarations for "
+"built-in components. But even better, Seam allows you to quickly declare "
+"namespaces for your own components."
+msgstr ""
+"Das funktioniert hervorragend für Seam Komponenten - was aber ist mit "
+"Benutzerkomponenten? Es gibt zwei Möglichkeiten. Zunächst unterstützt Seam "
+"das Mischen der beiden Modelle und gestattet die Verwendung der generischen "
+"<literal>&lt;component&gt;</literal>-Deklarationen für Benutzerkomponenten "
+"gemeinsam mit Namespaces enthaltenden Deklarationen für eingebaute "
+"Komponenten. Besser noch: Seam gestattet es Ihnen auch schnell Namespaces "
+"für Ihre eigenen Komponenten zu deklarieren."
+
+#. Tag: para
+#: Xml.xml:172
+#, no-c-format
+msgid ""
+"Any Java package can be associated with an XML namespace by annotating the "
+"package with the <literal>@Namespace</literal> annotation. (Package-level "
+"annotations are declared in a file named <literal>package-info.java</"
+"literal> in the package directory.) Here is an example from the seampay demo:"
+msgstr ""
+"Jedes beliebige Java-Paket kann durch Annotation des Pakets mit der "
+"<literal>@Namespace</literal>-Annotation mit einem XML-Namespace assoziiert "
+"werden. (Annotationen auf Paketebene werden in einer Datei mit Namen "
+"<literal>package-info.java</literal> im Paketverzeichnis deklariert). Hier "
+"ist ein Beispiel aus dem seampay-Demo:"
+
+#. Tag: programlisting
+#: Xml.xml:175
+#, no-c-format
+msgid ""
+"@Namespace(value=\"http://jboss.com/products/seam/examples/seampay\")\n"
+"package org.jboss.seam.example.seampay;\n"
+"\n"
+"import org.jboss.seam.annotations.Namespace;"
+msgstr ""
+"@Namespace(value=\"http://jboss.com/products/seam/examples/seampay\")\n"
+"package org.jboss.seam.example.seampay;\n"
+"\n"
+"import org.jboss.seam.annotations.Namespace;"
+
+#. Tag: para
+#: Xml.xml:176
+#, no-c-format
+msgid ""
+"That is all you need to do to use the namespaced style in "
+"<literal>components.xml</literal>! Now we can write:"
+msgstr ""
+"Das ist alles, was Sie zur Verwendung von Namespaces in <literal>components."
+"xml</literal> benötigen! Wir können jetzt schreiben:"
+
+#. Tag: programlisting
+#: Xml.xml:179
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pay=\"http://jboss.com/products/seam/examples/seampay\"\n"
+"            ... &gt;\n"
+"\n"
+"    &lt;pay:payment-home new-instance=\"#{newPayment}\"\n"
+"                      created-message=\"Created a new payment to #"
+"{newPayment.payee}\" /&gt;\n"
+"\n"
+"    &lt;pay:payment name=\"newPayment\"\n"
+"                 payee=\"Somebody\"\n"
+"                 account=\"#{selectedAccount}\"\n"
+"                 payment-date=\"#{currentDatetime}\"\n"
+"                 created-date=\"#{currentDatetime}\" /&gt;\n"
+"     ...\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pay=\"http://jboss.com/products/seam/examples/seampay\"\n"
+"            ... &gt;\n"
+"\n"
+"    &lt;pay:payment-home new-instance=\"#{newPayment}\"\n"
+"                      created-message=\"Created a new payment to #"
+"{newPayment.payee}\" /&gt;\n"
+"\n"
+"    &lt;pay:payment name=\"newPayment\"\n"
+"                 payee=\"Somebody\"\n"
+"                 account=\"#{selectedAccount}\"\n"
+"                 payment-date=\"#{currentDatetime}\"\n"
+"                 created-date=\"#{currentDatetime}\" /&gt;\n"
+"     ...\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:180
+#, no-c-format
+msgid "<para>Or:</para>"
+msgstr "<para>Oder:</para>"
+
+#. Tag: programlisting
+#: Xml.xml:183
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pay=\"http://jboss.com/products/seam/examples/seampay\"\n"
+"            ... &gt;\n"
+"\n"
+"    &lt;pay:payment-home&gt;\n"
+"        &lt;pay:new-instance&gt;\"#{newPayment}\"&lt;/pay:new-instance&gt;\n"
+"        &lt;pay:created-message&gt;Created a new payment to #{newPayment."
+"payee}&lt;/pay:created-message&gt;\n"
+"    &lt;/pay:payment-home&gt;\n"
+"    \n"
+"    &lt;pay:payment name=\"newPayment\"&gt;\n"
+"        &lt;pay:payee&gt;Somebody\"&lt;/pay:payee&gt;\n"
+"        &lt;pay:account&gt;#{selectedAccount}&lt;/pay:account&gt;\n"
+"        &lt;pay:payment-date&gt;#{currentDatetime}&lt;/pay:payment-date&gt;\n"
+"        &lt;pay:created-date&gt;#{currentDatetime}&lt;/pay:created-date&gt;\n"
+"     &lt;/pay:payment&gt;\n"
+"     ...\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pay=\"http://jboss.com/products/seam/examples/seampay\"\n"
+"            ... &gt;\n"
+"\n"
+"    &lt;pay:payment-home&gt;\n"
+"        &lt;pay:new-instance&gt;\"#{newPayment}\"&lt;/pay:new-instance&gt;\n"
+"        &lt;pay:created-message&gt;Created a new payment to #{newPayment."
+"payee}&lt;/pay:created-message&gt;\n"
+"    &lt;/pay:payment-home&gt;\n"
+"    \n"
+"    &lt;pay:payment name=\"newPayment\"&gt;\n"
+"        &lt;pay:payee&gt;Somebody\"&lt;/pay:payee&gt;\n"
+"        &lt;pay:account&gt;#{selectedAccount}&lt;/pay:account&gt;\n"
+"        &lt;pay:payment-date&gt;#{currentDatetime}&lt;/pay:payment-date&gt;\n"
+"        &lt;pay:created-date&gt;#{currentDatetime}&lt;/pay:created-date&gt;\n"
+"     &lt;/pay:payment&gt;\n"
+"     ...\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:184
+#, no-c-format
+msgid ""
+"These examples illustrate the two usage models of a namespaced element. In "
+"the first declaration, the <literal>&lt;pay:payment-home&gt;</literal> "
+"references the <literal>paymentHome</literal> component:"
+msgstr ""
+"Diese Beispiele illustrieren zwei Anwendungsmodelle eines Elements mit "
+"Namespace. In der ersten Deklaration verweist <literal>&lt;pay:payment-"
+"home&gt;</literal> auf die <literal>paymentHome</literal>-Komponente:"
+
+#. Tag: programlisting
+#: Xml.xml:187
+#, no-c-format
+msgid ""
+"package org.jboss.seam.example.seampay;\n"
+"...\n"
+"@Name(\"paymentHome\")\n"
+"public class PaymentController\n"
+"    extends EntityHome&lt;Payment&gt;\n"
+"{\n"
+"    ... \n"
+"}"
+msgstr ""
+"package org.jboss.seam.example.seampay;\n"
+"...\n"
+"@Name(\"paymentHome\")\n"
+"public class PaymentController\n"
+"    extends EntityHome&lt;Payment&gt;\n"
+"{\n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Xml.xml:188
+#, no-c-format
+msgid ""
+"The element name is the hyphenated form of the component name. The "
+"attributes of the element are the hyphenated form of the property names."
+msgstr ""
+"Der Elementname ist die mit Bindestrich geschriebene Form des "
+"Komponentennamens. Die Attribute des Elements sind die die mit Bindestrich "
+"geschriebene Form der Property-Namen."
+
+#. Tag: para
+#: Xml.xml:191
+#, no-c-format
+msgid ""
+"In the second declaration, the <literal>&lt;pay:payment&gt;</literal> "
+"element refers to the <literal>Payment</literal> class in the <literal>org."
+"jboss.seam.example.seampay</literal> package. In this case <literal>Payment</"
+"literal> is an entity that is being declared as a Seam component:"
+msgstr ""
+"In der zweiten Deklaration bezieht sich das <literal>&lt;pay:payment&gt;</"
+"literal>-Element auf die <literal>Payment</literal>-Klasse im <literal>org."
+"jboss.seam.example.seampay</literal>-Paket. In diesem Fall ist "
+"<literal>Payment</literal> eine Entity, die als Seam-Komponent deklariert "
+"wird:"
+
+#. Tag: programlisting
+#: Xml.xml:194
+#, no-c-format
+msgid ""
+"package org.jboss.seam.example.seampay;\n"
+"...\n"
+"@Entity\n"
+"public class Payment\n"
+"    implements Serializable\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+"package org.jboss.seam.example.seampay;\n"
+"...\n"
+"@Entity\n"
+"public class Payment\n"
+"    implements Serializable\n"
+"{\n"
+"    ...\n"
+"}"
+
+#. Tag: para
+#: Xml.xml:195
+#, no-c-format
+msgid ""
+"If we want validation and autocompletion to work for user-defined "
+"components, we will need a schema. Seam does not yet provide a mechanism to "
+"automatically generate a schema for a set of components, so it is necessary "
+"to generate one manually. The schema definitions for the standard Seam "
+"packages can be used for guidance."
+msgstr ""
+"Wenn Validierung und Auto-Vervollständigung für benutzerdefinierte "
+"Komponenten funktionieren sollen, so wird ein Schema benötigt. Seam bietet "
+"noch keinen Mechanismus, um automatisch ein Schema für einen Satz von "
+"Komponenten zu generieren, sondern dieses muss manuell generiert werden. Die "
+"Schema-Definitionen für die Standard Seam-Pakete können zur Orientierung "
+"verwendet werden."
+
+#. Tag: para
+#: Xml.xml:198
+#, no-c-format
+msgid "The following are the the namespaces used by Seam:"
+msgstr "Folgendes sind die von Seam verwendeten Namespaces:"
+
+#. Tag: para
+#: Xml.xml:203
+#, no-c-format
+msgid ""
+"components &mdash; <literal>http://jboss.com/products/seam/components</"
+"literal>"
+msgstr ""
+"Komponenten &mdash; <literal>http://jboss.com/products/seam/components</"
+"literal>"
+
+#. Tag: para
+#: Xml.xml:208
+#, no-c-format
+msgid "core &mdash; <literal>http://jboss.com/products/seam/core</literal>"
+msgstr "Core &mdash; <literal>http://jboss.com/products/seam/core</literal>"
+
+#. Tag: para
+#: Xml.xml:213
+#, no-c-format
+msgid "drools &mdash; <literal>http://jboss.com/products/seam/drools</literal>"
+msgstr "Drools &mdash; <literal>http://jboss.com/products/seam/drools</literal>"
+
+#. Tag: para
+#: Xml.xml:218
+#, no-c-format
+msgid "framework &mdash; <literal>http://jboss.com/products/seam/framework</literal>"
+msgstr "Framework &mdash; <literal>http://jboss.com/products/seam/framework</literal>"
+
+#. Tag: para
+#: Xml.xml:223
+#, no-c-format
+msgid "jms &mdash; <literal>http://jboss.com/products/seam/jms</literal>"
+msgstr "Jms &mdash; <literal>http://jboss.com/products/seam/jms</literal>"
+
+#. Tag: para
+#: Xml.xml:228
+#, no-c-format
+msgid "remoting &mdash; <literal>http://jboss.com/products/seam/remoting</literal>"
+msgstr "Remoting &mdash; <literal>http://jboss.com/products/seam/remoting</literal>"
+
+#. Tag: para
+#: Xml.xml:233
+#, no-c-format
+msgid "theme &mdash; <literal>http://jboss.com/products/seam/theme</literal>"
+msgstr "Theme &mdash; <literal>http://jboss.com/products/seam/theme</literal>"
+
+#. Tag: para
+#: Xml.xml:238
+#, no-c-format
+msgid "security &mdash; <literal>http://jboss.com/products/seam/security</literal>"
+msgstr "Sicherheit &mdash; <literal>http://jboss.com/products/seam/security</literal>"
+
+#. Tag: para
+#: Xml.xml:243
+#, no-c-format
+msgid "mail &mdash; <literal>http://jboss.com/products/seam/mail</literal>"
+msgstr "Mail &mdash; <literal>http://jboss.com/products/seam/mail</literal>"
+
+#. Tag: para
+#: Xml.xml:248
+#, no-c-format
+msgid "web &mdash; <literal>http://jboss.com/products/seam/web</literal>"
+msgstr "Web &mdash; <literal>http://jboss.com/products/seam/web</literal>"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Annotations.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Annotations.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Annotations.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1023 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Seam_Reference_Guide-Seam_annotations">
+	<title>Seam annotations</title>
+	<para>
+		When you write a Seam application, you&#39;ll use a lot of annotations. Seam lets you use annotations to achieve a declarative style of programming. Most of the annotations you&#39;ll use are defined by the EJB 3.0 specification. The annotations for data validation are defined by the Hibernate Validator package. Finally, Seam defines its own set of annotations, which we&#39;ll describe in this chapter.
+	</para>
+	<para>
+		All of these annotations are defined in the package <literal>org.jboss.seam.annotations</literal>.
+	</para>
+	<section id="Seam_Reference_Guide-Seam_annotations-Annotations_for_component_definition">
+		<title>Annotations for component definition</title>
+		<para>
+			The first group of annotations lets you define a Seam component. These annotations appear on the component class.
+		</para>
+		<variablelist spacing="compact">
+			<varlistentry id="name-annotation">
+				<term><literal>@Name</literal></term>
+				<listitem>
+<programlisting>@Name("componentName")</programlisting>
+					<para>
+						Defines the Seam component name for a class. This annotation is required for all Seam components.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry id="scope-annotation">
+				<term><literal>@Scope</literal></term>
+				<listitem>
+<programlisting>@Scope(ScopeType.CONVERSATION)</programlisting>
+					<para>
+						Defines the default context of the component. The possible values are defined by the <literal>ScopeType</literal> enumeration: <literal>EVENT, PAGE, CONVERSATION, SESSION, BUSINESS_PROCESS, APPLICATION, STATELESS</literal>.
+					</para>
+					<para>
+						When no scope is explicitly specified, the default depends upon the component type. For stateless session beans, the default is <literal>STATELESS</literal>. For entity beans and stateful session beans, the default is <literal>CONVERSATION</literal>. For JavaBeans, the default is <literal>EVENT</literal>.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@Role</literal></term>
+				<listitem>
+<programlisting>@Role(name="roleName", scope=ScopeType.SESSION)</programlisting>
+					<para>
+						Allows a Seam component to be bound to multiple contexts variables. The <literal>@Name</literal>/<literal>@Scope</literal> annotations define a "default role". Each <literal>@Role</literal> annotation defines an additional role.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>name</literal> &mdash; the context variable name.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>scope</literal> &mdash; the context variable scope. When no scope is explicitly specified, the default depends upon the component type, as above.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@Roles</literal></term>
+				<listitem>
+<programlisting>@Roles({
+        @Role(name="user", scope=ScopeType.CONVERSATION),
+        @Role(name="currentUser", scope=ScopeType.SESSION)
+    })
+</programlisting>
+					<para>
+						Allows specification of multiple additional roles.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@Intercept</literal></term>
+				<listitem>
+<programlisting>@Intercept(InterceptionType.ALWAYS)</programlisting>
+					<para>
+						Determines when Seam interceptors are active. The possible values are defined by the <literal>InterceptionType</literal> enumeration: <literal>ALWAYS, AFTER_RESTORE_VIEW, AFTER_UPDATE_MODEL_VALUES, INVOKE_APPLICATION, NEVER</literal>.
+					</para>
+					<para>
+						When no interception type is explicitly specified, the default depends upon the component type. For entity beans, the default is <literal>NEVER</literal>. For session beans, message driven beans and JavaBeans, the default is <literal>ALWAYS</literal>.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@JndiName</literal></term>
+				<listitem>
+<programlisting>@JndiName("my/jndi/name")</programlisting>
+					<para>
+						Specifies the JNDI name that Seam will use to look up the EJB component. If no JNDI name is explicitly specified, Seam will use the JNDI pattern specified by <literal>org.jboss.seam.core.init.jndiPattern</literal>.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@Conversational</literal></term>
+				<listitem>
+<programlisting>@Conversational(ifNotBegunOutcome="error")</programlisting>
+					<para>
+						Specifies that a conversation scope component is conversational, meaning that no method of the component can be called unless a long-running conversation started by this component is active (unless the method would begin a new long-running conversation).
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@Startup</literal></term>
+				<listitem>
+<programlisting>@Startup(depends={"org.jboss.core.jndi", "org.jboss.core.jta"})</programlisting>
+					<para>
+						Specifies that an application scope component is started immediately at initialization time. This is mainly used for certain built-in components that bootstrap critical infrastructure such as JNDI, datasources, etc.
+					</para>
+<programlisting>@Startup</programlisting>
+					<para>
+						Specifies that a session scope component is started immediately at session creation time.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>depends</literal> &mdash; specifies that the named components must be started first, if they are installed.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@Install</literal></term>
+				<listitem>
+<programlisting>@Install(false)</programlisting>
+					<para>
+						Specifies whether or not a component should be installed by default. The lack of an @Install annotation indicates a component should be installed.
+					</para>
+<programlisting>@Install(dependencies="org.jboss.seam.core.jbpm")</programlisting>
+					<para>
+						Specifies that a component should only be stalled if the components listed as dependencies are also installed.
+					</para>
+<programlisting>@Install(genericDependencies=ManagedQueueSender.class)</programlisting>
+					<para>
+						Specifies that a component should only be installed if a component that is implemented by a certain class is installed. This is useful when the dependency doesn&#39;t have a single well-known name.
+					</para>
+<programlisting>@Install(classDependencies="org.hibernate.Session")</programlisting>
+					<para>
+						Specifies that a component should only be installed if the named class is in the classpath.
+					</para>
+<programlisting>@Install(precedence=BUILT_IN)</programlisting>
+					<para>
+						Specifies the precedence of the component. If multiple components with the same name exist, the one with the higher precedence will be installed. The defined precendence values are (in ascending order):
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>BUILT_IN</literal> &mdash; Precedence of all built-in Seam components
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>FRAMEWORK</literal> &mdash; Precedence to use for components of frameworks which extend Seam
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>APPLICATION</literal> &mdash; Predence of application components (the default precedence)
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>DEPLOYMENT</literal> &mdash; Precedence to use for components which override application components in a particular deployment
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>MOCK</literal> &mdash; Precedence for mock objects used in testing
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@Synchronized</literal></term>
+				<listitem>
+<programlisting>@Synchronized(timeout=1000)</programlisting>
+					<para>
+						Specifies that a component is accessed concurrently by multiple clients, and that Seam should serialize requests. If a request is not able to obtain its lock on the component in the given timeout period, an exception will be raised.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@ReadOnly</literal></term>
+				<listitem>
+<programlisting>@ReadOnly</programlisting>
+					<para>
+						Specifies that a JavaBean component or component method does not require state replication at the end of the invocation.
+					</para>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_annotations-Annotations_for_bijection">
+		<title>Annotations for bijection</title>
+		<para>
+			The next two annotations control bijection. These attributes occur on component instance variables or property accessor methods.
+		</para>
+		<variablelist spacing="compact">
+			<varlistentry id="in-annotation">
+				<term><literal>@In</literal></term>
+				<listitem>
+<programlisting>@In</programlisting>
+					<para>
+						Specifies that a component attribute is to be injected from a context variable at the beginning of each component invocation. If the context variable is null, an exception will be thrown.
+					</para>
+<programlisting>@In(required=false)</programlisting>
+					<para>
+						Specifies that a component attribute is to be injected from a context variable at the beginning of each component invocation. The context variable may be null.
+					</para>
+<programlisting>@In(create=true)</programlisting>
+					<para>
+						Specifies that a component attribute is to be injected from a context variable at the beginning of each component invocation. If the context variable is null, an instance of the component is instantiated by Seam.
+					</para>
+<programlisting>@In(value="contextVariableName")</programlisting>
+					<para>
+						Specifies the name of the context variable explicitly, instead of using the annotated instance variable name.
+					</para>
+<programlisting>@In(value="#{customer.addresses[&#39;shipping&#39;]}")</programlisting>
+					<para>
+						Specifies that a component attribute is to be injected by evaluating a JSF EL expression at the beginning of each component invocation.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>value</literal> &mdash; specifies the name of the context variable. Default to the name of the component attribute. Alternatively, specifies a JSF EL expression, surrounded by <literal>#{...}</literal>.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>create</literal> &mdash; specifies that Seam should instantiate the component with the same name as the context variable if the context variable is undefined (null) in all contexts. Default to false.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>required</literal> &mdash; specifies Seam should throw an exception if the context variable is undefined in all contexts.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry id="out-annotation">
+				<term><literal>@Out</literal></term>
+				<listitem>
+<programlisting>@Out</programlisting>
+					<para>
+						Specifies that a component attribute that is a Seam component is to be outjected to its context variable at the end of the invocation. If the attribute is null, an exception is thrown.
+					</para>
+<programlisting>@Out(required=false)</programlisting>
+					<para>
+						Specifies that a component attribute that is a Seam component is to be outjected to its context variable at the end of the invocation. The attribute may be null.
+					</para>
+<programlisting>@Out(scope=ScopeType.SESSION)</programlisting>
+					<para>
+						Specifies that a component attribute that is <emphasis>not</emphasis> a Seam component type is to be outjected to a specific scope at the end of the invocation.
+					</para>
+					<para>
+						Alternatively, if no scope is explicitly specified, the scope of the component with the <literal>@Out</literal> attribute is used (or the <literal>EVENT</literal> scope if the component is stateless).
+					</para>
+<programlisting>@Out(value="contextVariableName")</programlisting>
+					<para>
+						Specifies the name of the context variable explicitly, instead of using the annotated instance variable name.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>value</literal> &mdash; specifies the name of the context variable. Default to the name of the component attribute.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>required</literal> &mdash; specifies Seam should throw an exception if the component attribute is null during outjection.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+		<para>
+			Note that it is quite common for these annotations to occur together, for example:
+		</para>
+<programlisting>@In(create=true) @Out private User currentUser;</programlisting>
+		<para>
+			The next annotation supports the <emphasis>manager component</emphasis> pattern, where a Seam component that manages the lifecycle of an instance of some other class that is to be injected. It appears on a component getter method.
+		</para>
+		<variablelist spacing="compact">
+			<varlistentry>
+				<term><literal>@Unwrap</literal></term>
+				<listitem>
+<programlisting>@Unwrap</programlisting>
+					<para>
+						Specifies that the object returned by the annotated getter method is the thing that is injected instead of the component instance itself.
+					</para>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+		<para>
+			The next annotation supports the <emphasis>factory component</emphasis> pattern, where a Seam component is responsible for initializing the value of a context variable. This is especially useful for initializing any state needed for rendering the response to a non-faces request. It appears on a component method.
+		</para>
+		<variablelist spacing="compact">
+			<varlistentry>
+				<term><literal>@Factory</literal></term>
+				<listitem>
+<programlisting>@Factory("processInstance")</programlisting>
+					<para>
+						Specifies that the method of the component is used to initialize the value of the named context variable, when the context variable has no value. This style is used with methods that return <literal>void</literal>.
+					</para>
+<programlisting>@Factory("processInstance", scope=CONVERSATION)</programlisting>
+					<para>
+						Specifies that the method returns a value that Seam should use to initialize the value of the named context variable, when the context variable has no value. This style is used with methods that return a value. If no scope is explicitly specified, the scope of the component with the <literal>@Factory</literal> method is used (unless the component is stateless, in which case the <literal>EVENT</literal> context is used).
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>value</literal> &mdash; specifies the name of the context variable. If the method is a getter method, default to the JavaBeans property name.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>scope</literal> &mdash; specifies the scope that Seam should bind the returned value to. Only meaningful for factory methods which return a value.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+		<para>
+			This annotation lets you inject a <literal>Log</literal>:
+		</para>
+		<variablelist spacing="compact">
+			<varlistentry>
+				<term><literal>@Logger</literal></term>
+				<listitem>
+<programlisting>@Logger("categoryName")</programlisting>
+					<para>
+						Specifies that a component field is to be injected with an instance of <literal>org.jboss.seam.log.Log</literal>. For entity beans, the field must be declared as static.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>value</literal> &mdash; specifies the name of the log category. Default to the name of the component class.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+		<para>
+			The last annotation lets you inject a request parameter value:
+		</para>
+		<variablelist spacing="compact">
+			<varlistentry>
+				<term><literal>@RequestParameter</literal></term>
+				<listitem>
+<programlisting>@RequestParameter("parameterName")</programlisting>
+					<para>
+						Specifies that a component attribute is to be injected with the value of a request parameter. Basic type conversions are performed automatically.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>value</literal> &mdash; specifies the name of the request parameter. Default to the name of the component attribute.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_annotations-Annotations_for_component_lifecycle_methods">
+		<title>Annotations for component lifecycle methods</title>
+		<para>
+			These annotations allow a component to react to its own lifecycle events. They occur on methods of the component. There may be only one of each per component class.
+		</para>
+		<variablelist spacing="compact">
+			<varlistentry>
+				<term><literal>@Create</literal></term>
+				<listitem>
+<programlisting>@Create</programlisting>
+					<para>
+						Specifies that the method should be called when an instance of the component is instantiated by Seam. Note that create methods are only supported for JavaBeans and stateful session beans.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry id="destroy-annotation">
+				<term><literal>@Destroy</literal></term>
+				<listitem>
+<programlisting>@Destroy</programlisting>
+					<para>
+						Specifies that the method should be called when the context ends and its context variables are destroyed. Note that create methods are only supported for JavaBeans and stateful session beans.
+					</para>
+					<para>
+						Note that all stateful session bean components <emphasis>must</emphasis> define a method annotated <literal>@Destroy @Remove</literal> in order to guarantee destruction of the stateful bean when a context ends.
+					</para>
+					<para>
+						Destroy methods should be used only for cleanup. <emphasis>Seam catches, logs and swallows any exception that propagates out of a destroy method.</emphasis>
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@Observer</literal></term>
+				<listitem>
+<programlisting>@Observer("somethingChanged")</programlisting>
+					<para>
+						Specifies that the method should be called when a component-driven event of the specified type occurs.
+					</para>
+<programlisting>@Observer(value="somethingChanged",create=false)</programlisting>
+					<para>
+						Specifies that the method should be called when an event of the specified type occurs but that an instance should not be created if one doesn&#39;t exist. If an instance does not exist and create is false, the event will not be observed. The default value for create is true.
+					</para>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_annotations-Annotations_for_context_demarcation">
+		<title>Annotations for context demarcation</title>
+		<para>
+			These annotations provide declarative conversation demarcation. They appear on methods of Seam components, usually action listener methods.
+		</para>
+		<para>
+			Every web request has a conversation context associated with it. Most of these conversations end at the end of the request. If you want a conversation that span multiple requests, you must "promote" the current conversation to a <emphasis>long-running conversation</emphasis> by calling a method marked with <literal>@Begin</literal>.
+		</para>
+		<variablelist spacing="compact">
+			<varlistentry id="begin-annotation">
+				<term><literal>@Begin</literal></term>
+				<listitem>
+				<itemizedlist>
+				<listitem>
+<programlisting>@Begin</programlisting>
+					<para>
+						Specifies that a long-running conversation begins when this method returns a non-null outcome without exception.
+					</para>
+				</listitem>
+				<listitem>
+<programlisting>@Begin(ifOutcome={"success", "continue"})</programlisting>
+					<para>
+						Specifies that a long-running conversation begins when this action listener method returns with one of the given outcomes.
+					</para>
+				</listitem>
+				<listitem>
+<programlisting>@Begin(join=true)</programlisting>
+					<para>
+						Specifies that if a long-running conversation is already in progress, the conversation context is simply propagated.
+					</para>
+				</listitem>
+				<listitem>
+<programlisting>@Begin(nested=true)</programlisting>
+					<para>
+						Specifies that if a long-running conversation is already in progress, a new <emphasis>nested</emphasis> conversation context begins. The nested conversation will end when the next <literal>@End</literal> is encountered, and the outer conversation will resume. It is perfectly legal for multiple nested conversations to exist concurrently in the same outer conversation.
+					</para>
+				</listitem>
+				<listitem>
+<programlisting>@Begin(pageflow="process definition name")</programlisting>
+					<para>
+						Specifies a jBPM process definition name that defines the pageflow for this conversation.
+					</para>
+				</listitem>
+				<listitem>
+<programlisting>@Begin(flushMode=FlushModeType.MANUAL)</programlisting>
+					<para>
+						Specify the flush mode of any Seam-managed persistence contexts. <literal>flushMode=FlushModeType.MANUAL</literal> supports the use of <emphasis>atomic conversations</emphasis> where all write operations are queued in the conversation context until an explicit call to <literal>flush()</literal> (which usually occurs at the end of the conversation).
+					</para>
+				</listitem>
+				<listitem>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes that result in a new long-running conversation context.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>join</literal> &mdash; determines the behavior when a long-running conversation is already in progress. If <literal>true</literal>, the context is propagated. If <literal>false</literal>, an exception is thrown. Default to <literal>false</literal>. This setting is ignored when <literal>nested=true</literal> is specified
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>nested</literal> &mdash; specifies that a nested conversation should be started if a long-running conversation is already in progress.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>flushMode</literal> &mdash; set the flush mode of any Seam-managed Hibernate sessions or JPA persistence contexts that are created during this conversation.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>pageflow</literal> &mdash; a process definition name of a jBPM process definition deployed via <literal>org.jboss.seam.core.jbpm.pageflowDefinitions.</literal>
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+				</itemizedlist>
+			        </listitem>
+			</varlistentry>
+			<varlistentry id="end-annotation">
+				<term><literal>@End</literal></term>
+
+				<listitem>
+				<itemizedlist>
+				<listitem>
+
+<programlisting>@End</programlisting>
+					<para>
+						Specifies that a long-running conversation ends when this method returns a non-null outcome without exception.
+					</para>
+				</listitem>
+				<listitem>
+<programlisting>@End(ifOutcome={"success", "error"}, evenIfException={SomeException.class, OtherException.class})</programlisting>
+					<para>
+						Specifies that a long-running conversation ends when this action listener method returns with one of the given outcomes or throws one of the specified classes of exception.
+					</para>
+				</listitem>
+				<listitem>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes that result in the end of the current long-running conversation.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>beforeRedirect</literal> &mdash; by default, the conversation will not actually be destroyed until after any redirect has occurred. Setting <literal>beforeRedirect=true</literal> specifies that the conversation should be destroyed at the end of the current request, and that the redirect will be processed in a new temporary conversation context.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+				</itemizedlist>
+				</listitem>
+
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@StartTask</literal></term>
+				<listitem>
+<programlisting>@StartTask</programlisting>
+					<para>
+						"Starts" a jBPM task. Specifies that a long-running conversation begins when this method returns a non-null outcome without exception. This conversation is associated with the jBPM task specified in the named request parameter. Within the context of this conversation, a business process context is also defined, for the business process instance of the task instance.
+					</para>
+					<para>
+						The jBPM <literal>TaskInstance</literal> will be available in a request context variable named <literal>taskInstance</literal>. The jPBM <literal>ProcessInstance</literal> will be available in a request context variable named <literal>processInstance</literal>. (Of course, these objects are available for injection via <literal>@In</literal>.)
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>taskIdParameter</literal> &mdash; the name of a request parameter which holds the id of the task. Default to <literal>"taskId"</literal>, which is also the default used by the Seam <literal>taskList</literal> JSF component.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>flushMode</literal> &mdash; set the flush mode of any Seam-managed Hibernate sessions or JPA persistence contexts that are created during this conversation.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@BeginTask</literal></term>
+				<listitem>
+<programlisting>@BeginTask</programlisting>
+					<para>
+						Resumes work on an incomplete jBPM task. Specifies that a long-running conversation begins when this method returns a non-null outcome without exception. This conversation is associated with the jBPM task specified in the named request parameter. Within the context of this conversation, a business process context is also defined, for the business process instance of the task instance.
+					</para>
+					<para>
+						The jBPM <literal>TaskInstance</literal> will be available in a request context variable named <literal>taskInstance</literal>. The jPBM <literal>ProcessInstance</literal> will be available in a request context variable named <literal>processInstance</literal>.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>taskIdParameter</literal> &mdash; the name of a request parameter which holds the id of the task. Default to <literal>"taskId"</literal>, which is also the default used by the Seam <literal>taskList</literal> JSF component.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>flushMode</literal> &mdash; set the flush mode of any Seam-managed Hibernate sessions or JPA persistence contexts that are created during this conversation.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@EndTask</literal></term>
+				<listitem>
+				<itemizedlist>
+				<listitem>
+
+<programlisting>@EndTask</programlisting>
+					<para>
+						"Ends" a jBPM task. Specifies that a long-running conversation ends when this method returns a non-null outcome, and that the current task is complete. Triggers a jBPM transition. The actual transition triggered will be the default transition unless the application has called <literal>Transition.setName()</literal> on the built-in component named <literal>transition</literal>.
+					</para>
+				</listitem>
+				<listitem>
+<programlisting>@EndTask(transition="transitionName")</programlisting>
+					<para>
+						Triggers the given jBPM transition.
+					</para>
+				</listitem>
+				<listitem>
+<programlisting>@EndTask(ifOutcome={"success", "continue"})</programlisting>
+					<para>
+						Specifies that the task ends when this method returns one of the listed outcomes.
+					</para>
+				</listitem>
+				<listitem>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>transition</literal> &mdash; the name of the jBPM transition to be triggered when ending the task. Defaults to the default transition.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes that result in the end of the task.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>beforeRedirect</literal> &mdash; by default, the conversation will not actually be destroyed until after any redirect has occurred. Setting <literal>beforeRedirect=true</literal> specifies that the conversation should be destroyed at the end of the current request, and that the redirect will be processed in a new temporary conversation context.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+				</itemizedlist>
+				</listitem>
+
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@CreateProcess</literal></term>
+				<listitem>
+<programlisting>@CreateProcess(definition="process definition name")</programlisting>
+					<para>
+						Creates a new jBPM process instance when the method returns a non-null outcome without exception. The <literal>ProcessInstance</literal> object will be available in a context variable named <literal>processInstance</literal>.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>definition</literal> &mdash; the name of the jBPM process definition deployed via <literal>org.jboss.seam.core.jbpm.processDefinitions</literal>.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@ResumeProcess</literal></term>
+				<listitem>
+<programlisting>@ResumeProcess(processIdParameter="processId")</programlisting>
+					<para>
+						Re-enters the scope of an existing jBPM process instance when the method returns a non-null outcome without exception. The <literal>ProcessInstance</literal> object will be available in a context variable named <literal>processInstance</literal>.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>processIdParameter</literal> &mdash; the name a request parameter holding the process id. Default to <literal>"processId"</literal>.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_annotations-Annotations_for_transaction_demarcation">
+		<title>Annotations for transaction demarcation</title>
+		<para>
+			Seam provides an annotation that lets you force a rollback of the JTA transaction for certain action listener outcomes.
+		</para>
+		<variablelist spacing="compact">
+			<varlistentry>
+				<term><literal>@Rollback</literal></term>
+				<listitem>
+<programlisting>@Rollback(ifOutcome={"failure", "not-found"})</programlisting>
+					<para>
+						If the outcome of the method matches any of the listed outcomes, or if no outcomes are listed, set the transaction to rollback only when the method completes.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>ifOutcome</literal> &mdash; the JSF outcomes that cause a transaction rollback (no outcomes is interpreted to mean any outcome).
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@Transactional</literal></term>
+				<listitem>
+<programlisting>@Transactional</programlisting>
+					<para>
+						Specifies that a JavaBean component should have a similar transactional behavior to the default behavior of a session bean component. ie. method invocations should take place in a transaction, and if no transaction exists when the method is called, a transaction will be started just for that method. This annotation may be applied at either class or method level.
+					</para>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+		<para>
+			Seam applications usually use the standard EJB3 annotations for all other transaction demarcation needs.
+		</para>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_annotations-Annotations_for_exceptions">
+		<title>Annotations for exceptions</title>
+		<para>
+			These annotations let you specify how Seam should handle an exception that propagates out of a Seam component.
+		</para>
+		<variablelist spacing="compact">
+			<varlistentry>
+				<term><literal>@Redirect</literal></term>
+				<listitem>
+<programlisting>@Redirect(viewId="error.jsp")</programlisting>
+					<para>
+						Specifies that the annotated exception causes a browser redirect to a specified view id.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>viewId</literal> &mdash; specifies the JSF view id to redirect to.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>message</literal> &mdash; a message to be displayed, default to the exception message.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>end</literal> &mdash; specifies that the long-running conversation should end, default to <literal>false</literal>.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@HttpError</literal></term>
+				<listitem>
+<programlisting>@HttpError(errorCode=404)</programlisting>
+					<para>
+						Specifies that the annotated exception causes a HTTP error to be sent.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>errorCode</literal> &mdash; the HTTP error code, default to <literal>500</literal>.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>message</literal> &mdash; a message to be sent with the HTTP error, default to the exception message.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>end</literal> &mdash; specifies that the long-running conversation should end, default to <literal>false</literal>.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_annotations-Annotations_for_validation">
+		<title>Annotations for validation</title>
+		<para>
+			This annotation triggers Hibernate Validator. It appears on a method of a Seam component, almost always an action listener method.
+		</para>
+		<para>
+			Please refer to the documentation for the Hibernate Annotations package for information about the annotations defined by the Hibernate Validator framework.
+		</para>
+		<para>
+			<emphasis>Note that use of <literal>@IfInvalid</literal> is now semi-deprecated and <literal>&lt;s:validateAll&gt;</literal> is now preferred.</emphasis>
+		</para>
+		<variablelist spacing="compact">
+			<varlistentry>
+				<term><literal>@IfInvalid</literal></term>
+				<listitem>
+<programlisting>@IfInvalid(outcome="invalid", refreshEntities=true)</programlisting>
+					<para>
+						Specifies that Hibernate Validator should validate the component before the method is invoked. If the invocation fails, the specified outcome will be returned, and the validation failure messages returned by Hibernate Validator will be added to the <literal>FacesContext</literal>. Otherwise, the invocation will proceed.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>outcome</literal> &mdash; the JSF outcome when validation fails.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>refreshEntities</literal> &mdash; specifies that any invalid entity in the managed state should be refreshed from the database when validation fails. Default to <literal>false</literal>. (Useful with extended persistence contexts.)
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_annotations-Annotations_for_Seam_Remoting">
+		<title>Annotations for Seam Remoting</title>
+		<para>
+			Seam Remoting requires that the local interface of a session bean be annotated with the following annotation:
+		</para>
+		<variablelist spacing="compact">
+			<varlistentry>
+				<term><literal>@WebRemote</literal></term>
+				<listitem>
+<programlisting>@WebRemote(exclude="path.to.exclude")</programlisting>
+					<para>
+						Indicates that the annotated method may be called from client-side JavaScript. The <literal>exclude</literal> property is optional and allows objects to be excluded from the result&#39;s object graph (see the Remoting chapter for more details).
+					</para>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_annotations-Annotations_for_Seam_interceptors">
+		<title>Annotations for Seam interceptors</title>
+		<para>
+			The following annotations appear on Seam interceptor classes.
+		</para>
+		<para>
+			Please refer to the documentation for the EJB 3.0 specification for information about the annotations required for EJB interceptor definition.
+		</para>
+		<variablelist spacing="compact">
+			<varlistentry>
+				<term><literal>@Interceptor</literal></term>
+				<listitem>
+				<itemizedlist>
+				<listitem>
+
+<programlisting>@Interceptor(stateless=true)</programlisting>
+					<para>
+						Specifies that this interceptor is stateless and Seam may optimize replication.
+					</para>
+				</listitem>
+				<listitem>
+<programlisting>@Interceptor(type=CLIENT)</programlisting>
+					<para>
+						Specifies that this interceptor is a "client-side" interceptor that is called before the EJB container.
+					</para>
+				</listitem>
+				<listitem>
+<programlisting>@Interceptor(around={SomeInterceptor.class, OtherInterceptor.class})</programlisting>
+					<para>
+						Specifies that this interceptor is positioned higher in the stack than the given interceptors.
+					</para>
+				</listitem>
+				<listitem>
+<programlisting>@Interceptor(within={SomeInterceptor.class, OtherInterceptor.class})</programlisting>
+					<para>
+						Specifies that this interceptor is positioned deeper in the stack than the given interceptors.
+					</para>
+				</listitem>
+				</itemizedlist>
+				</listitem>
+
+			</varlistentry>
+		</variablelist>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_annotations-Annotations_for_asynchronicity">
+		<title>Annotations for asynchronicity</title>
+		<para>
+			The following annotations are used to declare an asynchronous method, for example:
+		</para>
+<programlisting>@Asynchronous public void scheduleAlert(Alert alert, @Expiration Date date) { ... }</programlisting>
+<programlisting>@Asynchronous public Timer scheduleAlerts(Alert alert, @Expiration Date date, 
+ at IntervalDuration long interval) { ... }</programlisting>
+		<variablelist spacing="compact">
+			<varlistentry>
+				<term><literal>@Asynchronous</literal></term>
+				<listitem>
+<programlisting>@Asynchronous</programlisting>
+					<para>
+						Specifies that the method call is processed asynchronously.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@Duration</literal></term>
+				<listitem>
+<programlisting>@Duration</programlisting>
+					<para>
+						Specifies that a parameter of the asynchronous call is the duration before the call is processed (or first processed for recurring calls).
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@Expiration</literal></term>
+				<listitem>
+<programlisting>@Expiration</programlisting>
+					<para>
+						Specifies that a parameter of the asynchronous call is the datetime at which the call is processed (or first processed for recurring calls).
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@IntervalDuration</literal></term>
+				<listitem>
+<programlisting>@IntervalDuration</programlisting>
+					<para>
+						Specifies that an asynchronous method call recurs, and that the annotationed parameter is duration between recurrences.
+					</para>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_annotations-Annotations_for_use_with_JSF_dataTable">
+		<title>Annotations for use with JSF <literal>dataTable</literal></title>
+		<para>
+			The following annotations make it easy to implement clickable lists backed by a stateful session bean. They appear on attributes.
+		</para>
+		<variablelist spacing="compact">
+			<varlistentry id="datamodel-annotation">
+				<term><literal>@DataModel</literal></term>
+				<listitem>
+<programlisting>@DataModel("variableName")</programlisting>
+					<para>
+						Exposes an attribute of type <literal>List</literal>, <literal>Map</literal>, <literal>Set</literal> or <literal>Object[]</literal> as a JSF <literal>DataModel</literal> into the scope of the owning component (or the <literal>EVENT</literal> scope if the owning component is <literal>STATELESS</literal>). In the case of <literal>Map</literal>, each row of the <literal>DataModel</literal> is a <literal>Map.Entry</literal>.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>value</literal> &mdash; name of the conversation context variable. Default to the attribute name.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>scope</literal> &mdash; if <literal>scope=ScopeType.PAGE</literal> is explicitly specified, the <literal>DataModel</literal> will be kept in the <literal>PAGE</literal> context.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@DataModelSelection</literal></term>
+				<listitem>
+<programlisting>@DataModelSelection</programlisting>
+					<para>
+						Injects the selected value from the JSF <literal>DataModel</literal> (this is the element of the underlying collection, or the map value).
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>value</literal> &mdash; name of the conversation context variable. Not needed if there is exactly one <literal>@DataModel</literal> in the component.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@DataModelSelectionIndex</literal></term>
+				<listitem>
+<programlisting>@DataModelSelectionIndex</programlisting>
+					<para>
+						Exposes the selection index of the JSF <literal>DataModel</literal> as an attribute of the component (this is the row number of the underlying collection, or the map key).
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>value</literal> &mdash; name of the conversation context variable. Not needed if there is exactly one <literal>@DataModel</literal> in the component.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_annotations-Meta_annotations_for_databinding">
+		<title>Meta-annotations for databinding</title>
+		<para>
+			These meta-annotations make it possible to implement similar functionality to <literal>@DataModel</literal> and <literal>@DataModelSelection</literal> for other datastructures apart from lists.
+		</para>
+		<variablelist spacing="compact">
+			<varlistentry>
+				<term><literal>@DataBinderClass</literal></term>
+				<listitem>
+<programlisting>@DataBinderClass(DataModelBinder.class)</programlisting>
+					<para>
+						Specifies that an annotation is a databinding annotation.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@DataSelectorClass</literal></term>
+				<listitem>
+<programlisting>@DataSelectorClass(DataModelSelector.class)</programlisting>
+					<para>
+						Specifies that an annotation is a dataselection annotation.
+					</para>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_annotations-Annotations_for_packaging">
+		<title>Annotations for packaging</title>
+		<para>
+			This annotation provides a mechanism for declaring information about a set of components that are packaged together. It can be applied to any Java package.
+		</para>
+		<variablelist spacing="compact">
+			<varlistentry>
+				<term><literal>@Namespace</literal></term>
+				<listitem>
+<programlisting>@Namespace(value="http://jboss.com/products/seam/example/seampay")</programlisting>
+					<para>
+						Specifies that components in the current package are associated with the given namespace. The declared namespace can be used as an XML namespace in a <literal>components.xml</literal> file to simplify application configuration.
+					</para>
+<programlisting>@Namespace(value="http://jboss.com/products/seam/core", prefix="org.jboss.seam.core")</programlisting>
+					<para>
+						Specifies a namespace to associate with a given package. Additionally, it specifies a component name prefix to be applied to component names specified in the XML file. For example, an XML element named <literal>microcontainer</literal> that is associated with this namespace would be understood to actually refere to a component named <literal>org.jboss.seam.core.microcontainer</literal>.
+					</para>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+	</section>
+
+</chapter>
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Author_Group.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Author_Group.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Author_Group.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,93 @@
+<?xml version='1.0'?>
+<!DOCTYPE authorgroup PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+<authorgroup>
+        <!--<author><firstname>Gavin</firstname><surname>King</surname></author>	
+	<author><firstname>Christian</firstname><surname>Bauer</surname></author>	
+        <author><firstname>Norman</firstname><surname>Richards</surname></author>	
+        <author><firstname>Shane</firstname><surname>Bryzak</surname></author>	
+        <author><firstname>Pete</firstname><surname>Muir</surname></author>	
+        <author><firstname>Emmanuel</firstname><surname>Bernard</surname></author>	
+        <author><firstname>Max</firstname><surname>Andersen</surname></author>	
+        <author><firstname>Michael</firstname><surname>Youngstrom</surname></author>	
+        <author><firstname>Thomas</firstname><surname>Heute</surname></author>	
+	<author><firstname>Michael</firstname><surname>Yuan</surname></author>	-->
+
+        <author><firstname>Written By: Gavin King, Christian Bauer, Norman Richards, Shane Bryzak, Pete Muir, Emmanuel Bernard, Max Andersen, Michael Youngstrom, Thomas Heute, Michael Yuan</firstname></author>	
+	
+	<othercredit>
+		<firstname>Japanese Translation: Fusayuki Minamoto, Takayoshi Kimura, Takayoshi Osawa, Reiko Ohtsuka, Syunpei Shiraishi, Toshiya Kobayashi, Shigeaki Wakizaka, Ken Yamada, Noriko Mizumoto</firstname>
+  </othercredit>
+	
+	
+	
+	
+	
+	<!--
+  <othercredit>
+	  <firstname>Fusayuki</firstname>
+	  <surname>Minamoto</surname>
+		<contrib>Japanese Translation
+		</contrib>
+  </othercredit>
+  <othercredit>
+	  <firstname>Takayoshi</firstname>
+	  <surname>Kimura</surname>
+	  <contrib>Japanese Translation
+	  </contrib>
+  </othercredit>
+  
+  
+  <othercredit>
+	  <firstname>Takayoshi</firstname>
+	  <surname>Osawa</surname>
+	  <contrib>Japanese Translation
+	  </contrib>
+  </othercredit>
+  
+  
+  <othercredit>
+	  <firstname>Reiko</firstname>
+	  <surname>Ohtsuka</surname>
+	  <contrib>Japanese Translation
+	  </contrib>
+  </othercredit>
+  
+  
+  <othercredit>
+	  <firstname>Syunpei</firstname>
+	  <surname>Shiraishi</surname>
+	  <contrib>Japanese Translation
+	  </contrib>
+  </othercredit>
+  
+  
+  <othercredit>
+	  <firstname>Toshiya</firstname>
+	  <surname>Kobayashi</surname>
+	  <contrib>Japanese Translation
+	  </contrib>
+  </othercredit>
+  
+  <othercredit>
+	  <firstname>Shigeaki</firstname>
+	  <surname>Wakizaka</surname>
+	  <contrib>Japanese Translation
+	  </contrib>
+  </othercredit>
+  
+  <othercredit>
+	  <firstname>Ken</firstname>
+	  <surname>Yamada</surname>
+	  <contrib>Japanese Translation
+	  </contrib>
+  </othercredit>
+  
+  <othercredit>
+	  <firstname>Noriko</firstname>
+	  <surname>Mizumoto</surname>
+	  <contrib>Japanese Translation
+	  </contrib>
+  </othercredit>
+ -->
+</authorgroup>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Book_Info.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Book_Info.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Book_Info.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,31 @@
+<?xml version='1.0'?>
+<!DOCTYPE bookinfo PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
+]>
+<bookinfo id="Seam_Reference_Guide-Seam___Contextual_Components">
+	<title>Seam Reference Guide CP07</title>
+	<subtitle>for Use with JBoss Enterprise Application Platform 4.3 Cumulative Patch 7</subtitle>
+	<edition>2.0</edition>
+	<pubsnumber>5</pubsnumber>
+	<productname>JBoss Enterprise Application Platform</productname>
+	<productnumber>4.3</productnumber>
+<!--	<pubdate>Sep, 2007</pubdate> -->
+	<isbn>N/A</isbn>
+	<abstract><para>This book is a Reference Guide to Seam 1.2 for JBoss Enterprise Application Platform 4.3.</para>
+	</abstract>
+	<corpauthor>
+	  <inlinemediaobject>
+		<imageobject>
+			 <imagedata fileref="Common_Content/images/title_logo.svg" />
+		 </imageobject>
+	  </inlinemediaobject>
+	</corpauthor>
+	<copyright>
+		<year>&YEAR;</year>
+		<holder>&HOLDER;</holder>
+	</copyright>
+	<xi:include href="Common_Content/Legal_Notice.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Author_Group.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+</bookinfo>
+
+
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Cache.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Cache.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Cache.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,221 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
+
+<chapter id="cache">
+    <title>Caching</title>
+    
+    <para>
+        In almost all enterprise applications, the database is the primary 
+        bottleneck, and the least scalable tier of the runtime environment. So anything we can possibly do to share the database <emphasis>less 
+        often</emphasis> is worth doing.
+    </para>
+    
+    <para>
+        This calls for a cache. Well, not just one cache. A well designed Seam
+        application will feature a rich, multi-layered caching strategy that
+        impacts every layer of the application:
+    </para>
+    
+    <itemizedlist>
+        <listitem>
+            <para>
+                The database has its own cache. This is 
+                particularly important, but cannot scale like a cache in the
+                application tier.
+            </para>
+        </listitem>
+        <listitem>
+            <para>
+                Your ORM solution (Hibernate, or some other JPA implementation)
+                has a second-level cache of data from the database. This is
+                a very powerful capability, but is often misused. In a clustered
+                environment, keeping the data in the cache transactionally
+                consistent across the whole cluster, and with the database,
+                is quite expensive. It makes most sense for data which is shared
+                between many users, and is updated rarely. <!-- In traditional 
+                stateless architectures, people often try to use the second-level
+                cache for conversational state. This is always bad, and is
+                especially wrong in Seam. -->
+            </para>
+        </listitem>
+        <listitem>
+            <para>
+                The Seam conversation context is a cache of conversational state.
+                Components you put into the conversation context can hold and cache
+                state relating to the current user interaction.
+            </para>
+        </listitem>
+        <listitem>
+            <para>
+                In particular, the
+                Seam-managed persistence context (or an extended EJB container-managed
+                persistence context associated with a conversation-scoped stateful
+                session bean) acts as a cache of data that has been read in the
+                current conversation. This cache tends to have a pretty high
+                hitrate. Seam optimizes the replication of Seam-managed persistence 
+                contexts in a clustered environment, and there is no requirement for 
+                transactional consistency with the database (optimistic locking is 
+                sufficient) so you do not need to worry too much about the performance 
+                implications of this cache, unless you read thousands of objects into
+                a single persistence context.
+            </para>
+        </listitem>
+       <listitem>
+            <para>
+                The application can cache non-transactional state in the Seam
+                application context. State kept in the application context is
+                of course not visible to other nodes in the cluster.
+            </para>
+        </listitem>
+       <listitem>
+            <para>
+                The application can cache transactional state using the Seam
+                <literal>pojoCache</literal> component, which integrates
+                JBossCache into the Seam environment. This state will be visible
+                to other nodes if you run JBoss cache in a clustered mode.
+            </para>
+        </listitem>
+       <listitem>
+            <para>
+                Finally, Seam lets you cache rendered fragments of a JSF page. Unlike  
+                the ORM second-level cache, this cache is not automatically invalidated 
+                when data changes, so you need to write application code to perform
+                explicit invalidation, or set appropriate expiration policies.
+            </para>
+        </listitem>
+    </itemizedlist>
+    
+    <para>
+        For more information about the second-level cache, you will need to refer to
+        the documentation of your ORM solution, since this is an extremely complex
+        topic. In this section we will discuss the use of JBossCache directly, via
+        the <literal>pojoCache</literal> component, or as the page fragment cache,
+        via the <literal>&lt;s:cache&gt;</literal> control.
+    </para>
+    
+    <section>
+        <title>Using JBossCache in Seam</title>
+        
+        <para>
+            The built-in <literal>pojoCache</literal> component manages an instance
+            of <literal>org.jboss.cache.aop.PojoCache</literal>. You can safely put 
+            any immutable Java object in the cache, and it will be replicated across
+            the cluster (assuming that replication is enabled). If you want to
+            keep mutable objects in the cache, you will need to run the JBoss Cache
+            bytecode preprocessor to ensure that changes to the objects will be
+            automatically detected and replicated.
+        </para>
+        
+        <para>
+            To use <literal>pojoCache</literal>, all you need to do is put the
+            JBossCache jars in the classpath, and provide a resource named
+            <literal>treecache.xml</literal> with an appropriate cache configuration.
+            JBoss Cache has many scary and confusing configuration settings, so
+            we won't discuss them here. Please refer to the JBoss Cache documentation
+            for more information.
+        </para>
+        
+        <para>
+            You can find a sample <literal>treecache.xml</literal> in
+            <literal>examples/blog/resources/treecache.xml</literal>.
+        </para>
+             
+        
+        <para>
+            For an EAR deployment of Seam, we recommend that the JBoss Cache jars and
+            configuration go directly into the EAR. Make sure you place both
+            <literal>jboss-cache.jar</literal> and <literal>jgroups.jar</literal>
+            in your EAR's lib folder.
+        </para>
+        
+        <para>
+            Now you can inject the cache into any Seam component:
+        </para>
+        
+        <programlisting role="JAVA"><![CDATA[@Name("chatroom")
+public class Chatroom {
+    @In PojoCache pojoCache;
+    
+    public void join(String username) {
+      try
+      {
+         Set<String> userList = (Set<String>) pojoCache.get("chatroom", "userList");
+         if (userList==null) 
+         {
+            userList = new HashSet<String>();
+            pojoCache.put("chatroom", "userList", userList);
+         }
+         userList.put(username);
+      }
+      catch (CacheException ce)
+      {
+         throw new RuntimeException(ce);
+      }
+    }
+}]]></programlisting>
+
+        <para>
+            If you want to have multiple JBoss Cache configurations in your application,
+            use <literal>components.xml</literal>:
+        </para>
+        
+        <programlisting role="JAVA"><![CDATA[<core:pojo-cache name="myCache" cfg-resource-name="myown/cache.xml"/>]]></programlisting>
+        
+    </section>
+    
+    <section>
+        <title>Page fragment caching</title>
+        
+        <para>
+            The most interesting use of JBoss Cache is the <literal>&lt;s:cache&gt;</literal>
+            tag, Seam's solution to the problem of page fragment caching in JSF.
+            <literal>&lt;s:cache&gt;</literal> uses <literal>pojoCache</literal> internally,
+            so you need to follow the steps listed above before you can use it. <!-- (Put the jars 
+            in the EAR, wade through the scary configuration options, etc.) -->
+        </para>
+        
+        <para>
+            <literal>&lt;s:cache&gt;</literal> is used for caching some rendered content which
+            changes rarely. For example, the welcome page of our blog displays the recent
+            blog entries:
+        </para>
+        
+        <programlisting role="XHTML"><![CDATA[<s:cache key="recentEntries-#{blog.id}" region="welcomePageFragments">
+   <h:dataTable value="#{blog.recentEntries}" var="blogEntry">
+      <h:column>
+         <h3>#{blogEntry.title}</h3>
+         <div>
+            <s:formattedText value="#{blogEntry.body}"/>
+         </div>
+      </h:column>
+   </h:dataTable>
+</s:cache>]]></programlisting>
+
+        <para>
+            The <literal>key</literal> will let you have multiple cached versions of each page
+            fragment. In this case, there is one cached version per blog. The 
+            <literal>region</literal> determines the JBossCache node that all version will
+	    be stored in. Different nodes may have different expiry policies (setup during the previous steps).  <!--(That is the 
+            stuff you set up using the aforementioned scary configuration options.) -->
+        </para>
+        
+        <para>
+            The issue with the <literal>&lt;s:cache&gt;</literal> tag is that it 
+            is unable to recognize when the underlying data changes (for example, when the 
+            blogger posts a new entry). So you need to evict the cached fragment manually:
+        </para>
+        
+        <programlisting role="JAVA"><![CDATA[public void post() {
+    ...
+    entityManager.persist(blogEntry);
+    pojoCache.remove("welcomePageFragments", "recentEntries-" + blog.getId() );
+}]]></programlisting>
+        
+        <para>
+            Alternatively, if it is not critical that changes are immediately visible to the
+            user, you could set a short expiry time on the JbossCache node.
+        </para>
+        
+    </section>
+    
+</chapter>
\ No newline at end of file


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Cache.xml
___________________________________________________________________
Name: svn:executable
   + *

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Components.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Components.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Components.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1559 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
+
+<chapter id="components">
+    <title>Built-in Seam components</title>
+    <para>
+        This chapter describes Seam's built in components, and their
+        configuration properties. The built in components will be created even if they
+        are not listed in your <literal>components.xml</literal> file, but if you need to
+        override default properties or specify more than one component of a certain type,
+        <literal>components.xml</literal> is used.
+    </para>
+    
+    <para>
+       You can replace any of the built in components with
+        your own implementations simply by specifying the name of one 
+        of the built in components on your own class using 
+        <literal>@Name</literal>.
+    </para>
+    
+    <para>
+        Even though all the built in components use a
+        qualified name, most of them are aliased to unqualified names by
+        default. These aliases specify <literal>auto-create="true"</literal>,
+        so you do not need to use <literal>create=true</literal> when
+        injecting built-in components by their unqualified name.
+    </para>
+    
+    <section>
+        <title>Context injection components</title>
+        <para>
+            The first set of built in components exist purely to support
+            injection of various contextual objects. For example, the
+            following component instance variable would have the Seam
+            session context object injected:
+        </para>
+        
+        <programlisting role="JAVA"><![CDATA[@In private Context sessionContext;]]></programlisting>
+    
+    	<variablelist >
+            <varlistentry>
+                <term><literal>org.jboss.seam.core.contexts</literal></term>
+                <listitem>
+                    <para>
+                        Component that provides access to Seam Context objects, for
+                        example <literal>org.jboss.seam.core.contexts.sessionContext['user']</literal>.
+                    </para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.faces.facesContext</literal></term>
+                <listitem>
+                    <para>
+                        Manager component for the <literal>FacesContext</literal> context 
+                        object (not a true Seam context)
+                    </para>
+                </listitem>
+            </varlistentry>
+        </variablelist>
+        
+        <para>
+            All of these components are always installed.
+        </para>
+
+    </section>
+    
+    <section>
+        <title>Utility components</title>
+        <para>
+            These components are merely useful.
+        </para>
+        
+         <variablelist>
+            <varlistentry>
+                <term><literal>org.jboss.seam.faces.facesMessages</literal></term>
+                <listitem>
+                    <para>
+                        Allows faces success messages to propagate across a browser redirect.
+                    </para>
+                    <itemizedlist>
+                        <listitem>
+                        <para>
+                            <literal>add(FacesMessage facesMessage)</literal> &#8212; add 
+                            a faces message, which will be displayed during the next render
+                            response phase that occurs in the current conversation.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>add(String messageTemplate)</literal> &#8212; add 
+                            a faces message, rendered from the given message template
+                            which may contain EL expressions.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>add(Severity severity, String messageTemplate)</literal> &#8212; 
+                            add a faces message, rendered from the given message template
+                            which may contain EL expressions.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>addFromResourceBundle(String key)</literal> &#8212; 
+                            add a faces message, rendered from a message template defined
+                            in the Seam resource bundle which may contain EL expressions.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>addFromResourceBundle(Severity severity, String key)</literal> &#8212; 
+                            add a faces message, rendered from a message template defined
+                            in the Seam resource bundle which may contain EL expressions.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>clear()</literal> &#8212; clear all messages.
+                        </para>
+                        </listitem>
+                    </itemizedlist>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.faces.redirect</literal></term>
+                <listitem>
+                    <para>
+                        A convenient API for performing redirects with parameters (this
+                        is especially useful for bookmarkable search results screens).
+                    </para>
+                    <itemizedlist>
+                        <listitem>
+                        <para>
+                            <literal>redirect.viewId</literal> &#8212; the JSF view id
+                            to redirect to.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>redirect.conversationPropagationEnabled</literal> &#8212; 
+                            determines whether the conversation will propagate across the 
+                            redirect.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>redirect.parameters</literal> &#8212; a map of
+                            request parameter name to value, to be passed in the redirect
+                            request.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>execute()</literal> &#8212; perform the redirect
+                            immediately.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>captureCurrentRequest()</literal> &#8212; stores 
+                            the view id and request parameters of the current GET 
+                            request (in the conversation context), for later use
+                            by calling <literal>execute()</literal>.
+                        </para>
+                        </listitem>
+                    </itemizedlist>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.faces.httpError</literal></term>
+                <listitem>
+                    <para>
+                        A convenient API for sending HTTP errors.
+                    </para>
+                </listitem>
+             </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.core.events</literal></term>
+                <listitem>
+                    <para>
+                        An API for raising events that can be observed via
+                        <literal>@Observer</literal> methods, or method
+                        bindings in <literal>components.xml</literal>.
+                    </para>
+                    <itemizedlist>
+                        <listitem>
+                        <para>
+                            <literal>raiseEvent(String type)</literal> &#8212; raise
+                            an event of a particular type and distribute to all
+                            observers.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>raiseAsynchronousEvent(String type)</literal> &#8212; 
+                            raise an event to be processed asynchronously by the EJB3
+                            timer service.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>raiseTimedEvent(String type, ....)</literal> &#8212; 
+                            schedule an event to be processed asynchronously by the EJB3
+                            timer service.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>addListener(String type, String methodBinding)</literal> 
+                            &#8212; add an observer for a particular event type.
+                        </para>
+                        </listitem>
+                    </itemizedlist>
+                </listitem>
+             </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.core.interpolator</literal></term>
+                <listitem>
+                    <para>
+                        An API for interpolating the values of JSF EL expressions in
+                        Strings.
+                    </para>
+                    <itemizedlist>
+                        <listitem>
+                        <para>
+                            <literal>interpolate(String template)</literal> &#8212; scan
+                            the template for JSF EL expressions of the form <literal>#{...}</literal>
+                            and replace them with their evaluated values.
+                        </para>
+                        </listitem>
+                    </itemizedlist>
+                </listitem>
+             </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.core.expressions</literal></term>
+                <listitem>
+                    <para>
+                        An API for creating value and method bindings.
+                    </para>
+                    <itemizedlist>
+                        <listitem>
+                        <para>
+                            <literal>createValueBinding(String expression)</literal> &#8212; create
+                            a value binding object.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>createMethodBinding(String expression)</literal> &#8212; create
+                            a method binding object.
+                        </para>
+                        </listitem>
+                    </itemizedlist>
+                </listitem>
+             </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.core.pojoCache</literal></term>
+                <listitem>
+                    <para>
+                        Manager component for a JBoss Cache <literal>PojoCache</literal> 
+                        instance.
+                    </para>
+                    <itemizedlist>
+                        <listitem>
+                        <para>
+                            <literal>pojoCache.cfgResourceName</literal> &#8212; the name of 
+                            the configuration file. Default to <literal>treecache.xml</literal>.
+                        </para>
+                        </listitem>
+                    </itemizedlist>
+                </listitem>
+            </varlistentry>
+        </variablelist>
+        
+        <para>
+            All of these components are always installed.
+        </para>
+    </section>
+    
+    <section>
+        <title>Components for internationalization and themes</title>
+        <para>
+            The next group of components make it easy to build internationalized user interfaces
+            using Seam.
+        </para>
+        
+    	<variablelist>
+            <varlistentry>
+                <term><literal>org.jboss.seam.core.locale</literal></term>
+                <listitem>
+                    <para>
+                        The Seam locale.
+                    </para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.international.timezone</literal></term>
+                <listitem>
+                    <para>
+                        The Seam timezone. The timezone is session scoped.
+                    </para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.core.resourceBundle</literal></term>
+                <listitem>
+                    <para>
+                        The Seam resource bundle. The resource bundle is stateless. The Seam
+                        resource bundle performs a depth-first search for keys in a list of Java
+                        resource bundles.
+                    </para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.core.resourceLoader</literal></term>
+                <listitem>
+                    <para>
+                        The resource loader provides access to application resources and resource bundles.
+                    </para>
+                    <itemizedlist>
+                        <listitem>
+                        <para>
+                            <literal>resourceLoader.bundleNames</literal> &#8212; the names of 
+                            the Java resource bundles to search when the Seam resource bundle is
+                            used. Default to <literal>messages</literal>.
+                        </para>
+                        </listitem>
+                    </itemizedlist>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.international.localeSelector</literal></term>
+                <listitem>
+                    <para>
+                        Supports selection of the locale either at configuration time, 
+                        or by the user at runtime.
+                    </para>
+                    <itemizedlist>
+                        <listitem>
+                        <para>
+                            <literal>select()</literal> &#8212; select the specified locale.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>localeSelector.locale</literal> &#8212; the actual
+                            <literal>java.util.Locale</literal>.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>localeSelector.localeString</literal> &#8212; the 
+                            string representation of the locale.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>localeSelector.language</literal> &#8212; the language for
+                            the specified locale.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>localeSelector.country</literal> &#8212; the country for
+                            the specified locale.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>localeSelector.variant</literal> &#8212; the variant for
+                            the specified locale.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>localeSelector.supportedLocales</literal> &#8212; a list
+                            of <literal>SelectItem</literal>s representing the supported locales 
+                            listed in <literal>jsf-config.xml</literal>.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>localeSelector.cookieEnabled</literal> &#8212; specifies
+                            that the locale selection should be persisted via a cookie.
+                        </para>
+                        </listitem>
+                    </itemizedlist>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.international.timezoneSelector</literal></term>
+                <listitem>
+                    <para>
+                        Supports selection of the timezone either at configuration time, 
+                        or by the user at runtime.
+                    </para>
+                    <itemizedlist>
+                        <listitem>
+                        <para>
+                            <literal>select()</literal> &#8212; select the specified locale.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>timezoneSelector.timezone</literal> &#8212; the actual
+                            <literal>java.util.TimeZone</literal>.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>timezoneSelector.timeZoneId</literal> &#8212; the 
+                            string representation of the timezone.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>timezoneSelector.cookieEnabled</literal> &#8212; specifies
+                            that the timezone selection should be persisted via a cookie.
+                        </para>
+                        </listitem>
+                    </itemizedlist>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.international.messages</literal></term>
+                <listitem>
+                    <para>
+                        A map containing internationalized messages rendered from message
+                        templates defined in the Seam resource bundle.
+                    </para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.theme.themeSelector</literal></term>
+                <listitem>
+                    <para>
+                        Supports selection of the theme either at configuration time, 
+                        or by the user at runtime.
+                    </para>
+                    <itemizedlist>
+                        <listitem>
+                        <para>
+                            <literal>select()</literal> &#8212; select the specified theme.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>theme.availableThemes</literal> &#8212; the list of
+                            defined themes.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>themeSelector.theme</literal> &#8212; the selected
+                            theme.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>themeSelector.themes</literal> &#8212; a list
+                            of <literal>SelectItem</literal>s representing the defined
+                            themes.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>themeSelector.cookieEnabled</literal> &#8212; specifies
+                            that the theme selection should be persisted via a cookie.
+                        </para>
+                        </listitem>
+                    </itemizedlist>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.theme.theme</literal></term>
+                <listitem>
+                    <para>
+                        A map containing theme entries.
+                    </para>
+                </listitem>
+            </varlistentry>
+         </variablelist>
+         
+        
+        <para>
+            All of these components are always installed.
+        </para>
+    </section>
+    
+    <section>
+        <title>Components for controlling conversations</title>
+        <para>
+            The next group of components allow control of conversations by the application or 
+            user interface.
+        </para>
+        
+    	<variablelist>
+            <varlistentry>
+                <term><literal>org.jboss.seam.core.conversation</literal></term>
+                <listitem>
+                    <para>
+                        API for application control of attributes of the current Seam conversation.
+                    </para>
+                    <itemizedlist>
+                        <listitem>
+                        <para>
+                            <literal>getId()</literal> &#8212; returns the current conversation ID
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>isNested()</literal> &#8212; is the current conversation a
+                            nested conversation?
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>isLongRunning()</literal> &#8212; is the current conversation a
+                            long-running conversation?
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>getId()</literal> &#8212; returns the current conversation ID
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>getParentId()</literal> &#8212; returns the conversation ID
+                            of the parent conversation
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>getRootId()</literal> &#8212; returns the conversation ID
+                            of the root conversation
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>setTimeout(int timeout)</literal> &#8212; sets the timeout
+                            for the current conversation
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>setViewId(String outcome)</literal> &#8212; sets the view id
+                            to be used when switching back to the current conversation from the 
+                            conversation switcher, conversation list, or breadcrumbs.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>setDescription(String description)</literal> &#8212; sets the 
+                            description of the current conversation to be displayed in the 
+                            conversation switcher, conversation list, or breadcrumbs.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>redirect()</literal> &#8212; redirect to the last well-defined
+                            view id for this conversation (useful after login challenges).
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>leave()</literal> &#8212; exit the scope of this conversation,
+                            without actually ending the conversation.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>begin()</literal> &#8212; begin a long-running conversation
+                            (equivalent to <literal>@Begin</literal>).
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>beginPageflow(String pageflowName)</literal> &#8212; begin a 
+                            long-running conversation with a pageflow (equivalent to 
+                            <literal>@Begin(pageflow="...")</literal>).
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>end()</literal> &#8212; end a long-running conversation
+                            (equivalent to <literal>@End</literal>).
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>pop()</literal> &#8212; pop the conversation stack, returning
+                            to the parent conversation.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>root()</literal> &#8212; return to the root conversation of 
+                            the conversation stack.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>changeFlushMode(FlushModeType flushMode)</literal> &#8212; change 
+                            the flush mode of the conversation.
+                        </para>
+                        </listitem>
+                    </itemizedlist>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.core.conversationList</literal></term>
+                <listitem>
+                    <para>
+                        Manager component for the conversation list.
+                    </para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.core.conversationStack</literal></term>
+                <listitem>
+                    <para>
+                        Manager component for the conversation stack (breadcrumbs).
+                    </para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.faces.switcher</literal></term>
+                <listitem>
+                    <para>
+                        The conversation switcher.
+                    </para>
+                </listitem>
+            </varlistentry>
+        </variablelist>
+        
+        <para>
+            All of these components are always installed.
+        </para>
+
+    </section>
+    
+    <section>
+        <title>jBPM-related components</title>
+        <para>
+            These components are for use with jBPM.
+        </para>
+        
+        <variablelist>
+            <varlistentry>
+                <term><literal>org.jboss.seam.pageflow.pageflow</literal></term>
+                <listitem>
+                    <para>
+                        API control of Seam pageflows.
+                    </para>
+                    <itemizedlist>
+                        <listitem>
+                        <para>
+                            <literal>isInProcess()</literal> &#8212; returns <literal>true</literal>
+                            if there is currently a pageflow in process
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>getProcessInstance()</literal> &#8212; returns jBPM
+                            <literal>ProcessInstance</literal> for the current pageflow
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>begin(String pageflowName)</literal> &#8212; begin a pageflow
+                            in the context of the current conversation
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>reposition(String nodeName)</literal> &#8212; reposition the
+                            current pageflow to a particular node
+                        </para>
+                        </listitem>
+                    </itemizedlist>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.bpm.actor</literal></term>
+                <listitem>
+                    <para>
+                        API for application control of attributes of the jBPM actor associated
+                        with the current session.
+                    </para>
+                    <itemizedlist>
+                        <listitem>
+                        <para>
+                            <literal>setId(String actorId)</literal> &#8212; sets the jBPM
+                            actor id of the current user.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>getGroupActorIds()</literal> &#8212; returns a 
+                            <literal>Set</literal> to which jBPM actor ids for the
+                            current users groups may be added.
+                        </para>
+                        </listitem>
+                    </itemizedlist>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.bpm.transition</literal></term>
+                <listitem>
+                    <para>
+                        API for application control of the jBPM transition for the current
+                        task.
+                    </para>
+                    <itemizedlist>
+                        <listitem>
+                        <para>
+                            <literal>setName(String transitionName)</literal> &#8212; sets the 
+                            jBPM transition name to be used when the current task is ended
+                            via <literal>@EndTask</literal>.
+                        </para>
+                        </listitem>
+                    </itemizedlist>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.bpm.businessProcess</literal></term>
+                <listitem>
+                    <para>
+                        API for programmatic control of the association between the
+                        conversation and business process.
+                    </para>
+                    <itemizedlist>
+                        <listitem>
+                        <para>
+                            <literal>businessProcess.taskId</literal> &#8212; the id of the task 
+                            associated with the current conversation.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>businessProcess.processId</literal> &#8212; the id of the process
+                            associated with the current conversation.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>businessProcess.hasCurrentTask()</literal> &#8212; is a task
+                            instance associated with the current conversation?
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>businessProcess.hasCurrentProcess()</literal> &#8212; is a process
+                            instance associated with the current conversation.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>createProcess(String name)</literal> &#8212; create an
+                            instance of the named process definition and associate it with
+                            the current conversation.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>startTask()</literal> &#8212; start the task 
+                            associated with the current conversation.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>endTask(String transitionName)</literal> &#8212; end the task 
+                            associated with the current conversation.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>resumeTask(Long id)</literal> &#8212; associate the task with
+                            the given id with the current conversation.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>resumeProcess(Long id)</literal> &#8212; associate the process 
+                            with the given id with the current conversation.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>transition(String transitionName)</literal> &#8212; trigger
+                            the transition.
+                        </para>
+                        </listitem>
+                    </itemizedlist>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.bpm.taskInstance</literal></term>
+                <listitem>
+                    <para>
+                        Manager component for the jBPM <literal>TaskInstance</literal>.
+                    </para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.bpm.processInstance</literal></term>
+                <listitem>
+                    <para>
+                        Manager component for the jBPM <literal>ProcessInstance</literal>.
+                    </para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.bpm.jbpmContext</literal></term>
+                <listitem>
+                    <para>
+                        Manager component for an event-scoped <literal>JbpmContext</literal>.
+                    </para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.bpm.taskInstanceList</literal></term>
+                <listitem>
+                    <para>
+                        Manager component for the jBPM task list.
+                    </para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.bpm.pooledTaskInstanceList</literal></term>
+                <listitem>
+                    <para>
+                        Manager component for the jBPM pooled task list.
+                    </para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.bpm.taskInstanceListForType</literal></term>
+                <listitem>
+                    <para>
+                        Manager component for the jBPM task lists.
+                    </para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.bpm.pooledTask</literal></term>
+                <listitem>
+                    <para>
+                        Action handler for pooled task assignment.
+                    </para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.bpm.processInstanceFinder</literal></term>
+                <listitem>
+                    <para>
+                        Manager for the process instance task list.
+                    </para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.bpm.processInstanceList</literal></term>
+                <listitem>
+                    <para>
+                         The process instance task list.
+                    </para>
+                </listitem>
+            </varlistentry>
+        </variablelist>
+        
+        <para>
+            All of these components are installed whenever the component
+            <literal>org.jboss.seam.bpm.jbpm</literal> is installed.
+        </para>
+        
+    </section>
+    
+    <section>
+        <title>Security-related components</title>
+        <para>
+            These components relate to web-tier security.
+        </para>
+        
+        <variablelist>
+            <varlistentry>
+                <term><literal>org.jboss.seam.web.userPrincipal</literal></term>
+                <listitem>
+                    <para>
+                        Manager component for the current user <literal>Principal</literal>.
+                    </para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.web.isUserInRole</literal></term>
+                <listitem>
+                    <para>
+                        Allows JSF pages to choose to render a control, depending upon
+                        the roles available to the current principal.
+                        <literal>&lt;h:commandButton value="edit" rendered="#{isUserInRole['admin']}"/&gt;</literal>.
+                    </para>
+                </listitem>
+            </varlistentry>
+        </variablelist>
+    </section>
+    
+    <section>
+        <title>JMS-related components</title>
+        <para>
+            These components are for use with managed <literal>TopicPublisher</literal>s
+            and <literal>QueueSender</literal>s (see below).
+        </para>
+        
+        <variablelist>
+            <varlistentry>
+                <term><literal>org.jboss.seam.jms.queueSession</literal></term>
+                <listitem>
+                    <para>
+                        Manager component for a JMS <literal>QueueSession</literal> .
+                    </para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.jms.topicSession</literal></term>
+                <listitem>
+                    <para>
+                        Manager component for a JMS <literal>TopicSession</literal> .
+                    </para>
+                </listitem>
+            </varlistentry>
+        </variablelist>
+    </section>     
+    
+    <section id="components.mail">
+        <title>Mail-related components</title>
+        <para>
+            These components are for use with Seam's Email support 
+        </para>
+        
+        <variablelist>
+            <varlistentry>
+                <term><literal>org.jboss.seam.mail.mailSession</literal></term>
+                <listitem>
+                    <para>
+                        Manager component for a JavaMail <literal>Session</literal>. The
+                        session can be either looked up in the JNDI context (by setting the
+                        <literal>sessionJndiName</literal> property) or it can created from the
+                        configuration options in which case the <literal>host</literal> is
+                        mandatory. 
+                    </para>
+                     <itemizedlist>
+                        <listitem>
+                        <para>
+                            <literal>org.jboss.seam.mail.mailSession.host</literal> &#8212; the hostname of the SMTP server to use
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>org.jboss.seam.mail.mailSession.port</literal> &#8212; the port of the SMTP server to use
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>org.jboss.seam.mail.mailSession.username</literal> &#8212;  the username to use to connect to the SMTP server.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>org.jboss.seam.mail.mailSession.password</literal> &#8212; the password to use to connect to the SMTP server
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>org.jboss.seam.mail.mailSession.debug</literal> &#8212; enable JavaMail debugging (very verbose)
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>org.jboss.seam.mail.mailSession.ssl</literal> &#8212; enable SSL connection to SMTP (will default to port 465)
+                        </para>
+                         <para>
+                            <literal>org.jboss.seam.mail.mailSession.tls</literal> &#8212; by default true, enable TLS support in the mail session
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>org.jboss.seam.mail.mailSession.sessionJndiName</literal> &#8212; name under which a javax.mail.Session is bound to JNDI.
+                            If supplied, all other properties will be ignored.
+                        </para>
+                        </listitem>
+                    </itemizedlist>
+                </listitem>
+            </varlistentry>
+        </variablelist>
+    </section>
+    
+    <section>
+        <title>Infrastructural components</title>
+        <para>
+            These components provide critical platform infrastructure. You can install a component
+            which isn't installed by default by setting <literal>install="true"</literal> on the 
+            component in <literal>components.xml</literal>.
+        </para>
+        
+    	<variablelist>
+            <varlistentry>
+                <term><literal>org.jboss.seam.core.init</literal></term>
+                <listitem>
+                    <para>
+                        Initialization settings for Seam. Always installed.
+                    </para>
+                    <itemizedlist>
+                        <listitem>
+                        <para>
+                            <literal>org.jboss.seam.core.init.jndiPattern</literal> &#8212; the JNDI
+                            pattern used for looking up session beans
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>org.jboss.seam.core.init.debug</literal> &#8212; enable Seam
+                            debug mode. This should be set to false when in production. You may see
+                            errors if the system is placed under any load and debug is enabled.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>org.jboss.seam.core.init.clientSideConversations</literal> &#8212; 
+                            if set to <literal>true</literal>, Seam will save conversation context
+                            variables in the client instead of in the <literal>HttpSession</literal>.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>org.jboss.seam.core.init.userTransactionName</literal> &#8212; the JNDI
+                            name to use when looking up the JTA <literal>UserTransaction</literal> object.
+                        </para>
+                        </listitem>
+                    </itemizedlist>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.core.manager</literal></term>
+                <listitem>
+                    <para>
+                        Internal component for Seam page and conversation context management. 
+                        Always installed.
+                    </para>
+                    <itemizedlist>
+                        <listitem>
+                        <para>
+                            <literal>org.jboss.seam.core.manager.conversationTimeout</literal> &#8212; 
+                            the conversation context timeout in milliseconds.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>org.jboss.seam.core.manager.concurrentRequestTimeout</literal> &#8212; 
+                            maximum wait time for a thread attempting to gain a lock on the long-running 
+                            conversation context.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>org.jboss.seam.core.manager.conversationIdParameter</literal> &#8212; 
+                            the request parameter used to propagate the conversation id, default
+                            to <literal>conversationId</literal>.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>org.jboss.seam.core.manager.conversationIsLongRunningParameter</literal> &#8212; 
+                            the request parameter used to propagate information about whether the conversation
+                            is long-running, default to <literal>conversationIsLongRunning</literal>.
+                        </para>
+                        </listitem>
+                    </itemizedlist>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.navigation.pages</literal></term>
+                <listitem>
+                    <para>
+                        Internal component for Seam workspace management. Always installed.
+                    </para>
+                    <itemizedlist>
+                        <listitem>
+                        <para>
+                            <literal>org.jboss.seam.navigation.pages.noConversationViewId</literal> 
+                            &#8212; global setting for the view id to redirect to when a 
+                            conversation entry is not found on the server side.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>org.jboss.seam.navigation.pages.loginViewId</literal> 
+                            &#8212; global setting for the view id to redirect to when an 
+                            unauthenticated user tries to access a protected view.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>org.jboss.seam.navigation.pages.httpPort</literal> 
+                            &#8212; global setting for the port to use when the http scheme 
+                            is requested.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>org.jboss.seam.navigation.pages.httpsPort</literal> 
+                            &#8212; global setting for the port to use when the https scheme 
+                            is requested.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>org.jboss.seam.navigation.pages.resources</literal> 
+                            &#8212; a list of resources to search for <literal>pages.xml</literal>
+                            style resources.  Defaults to <literal>WEB-INF/pages.xml</literal>.
+                        </para>
+                        </listitem>
+                    </itemizedlist>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.bpm.jbpm</literal></term>
+                <listitem>
+                    <para>
+                        Bootstraps a <literal>JbpmConfiguration</literal>. Install as class 
+                        <literal>org.jboss.seam.bpm.Jbpm</literal>. 
+                    </para>
+                    <itemizedlist>
+                        <listitem>
+                        <para>
+                            <literal>org.jboss.seam.bpm.jbpm.processDefinitions</literal> &#8212; 
+                            a list of resource names of jPDL files to be used for orchestration
+                            of business processes.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>org.jboss.seam.bpm.jbpm.pageflowDefinitions</literal> &#8212; 
+                            a list of resource names of jPDL files to be used for orchestration
+                            of conversation page flows.
+                        </para>
+                        </listitem>
+                    </itemizedlist>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.core.conversationEntries</literal></term>
+                <listitem>
+                    <para>
+                        Internal session-scoped component recording the active long-running conversations
+                        between requests.
+                    </para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.faces.facesPage</literal></term>
+                <listitem>
+                    <para>
+                        Internal page-scoped component recording the conversation context associated
+                        with a page.
+                    </para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.persistence.persistenceContexts</literal></term>
+                <listitem>
+                    <para>
+                        Internal component recording the persistence contexts which were used in
+                        the current conversation.
+                    </para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.jms.queueConnection</literal></term>
+                <listitem>
+                    <para>
+                        Manages a JMS <literal>QueueConnection</literal>. Installed whenever
+                        managed managed <literal>QueueSender</literal> is installed.
+                    </para>
+                    <itemizedlist>
+                        <listitem>
+                        <para>
+                            <literal>org.jboss.seam.jms.queueConnection.queueConnectionFactoryJndiName</literal> 
+                            &#8212; the JNDI name of a JMS <literal>QueueConnectionFactory</literal>. Default
+                            to <literal>UIL2ConnectionFactory</literal>
+                        </para>
+                        </listitem>
+                    </itemizedlist>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.jms.topicConnection</literal></term>
+                <listitem>
+                    <para>
+                        Manages a JMS <literal>TopicConnection</literal>. Installed whenever
+                        managed managed <literal>TopicPublisher</literal> is installed.
+                    </para>
+                    <itemizedlist>
+                        <listitem>
+                        <para>
+                            <literal>org.jboss.seam.jms.topicConnection.topicConnectionFactoryJndiName</literal> 
+                            &#8212; the JNDI name of a JMS <literal>TopicConnectionFactory</literal>. Default
+                            to <literal>UIL2ConnectionFactory</literal>
+                        </para>
+                        </listitem>
+                    </itemizedlist>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.persistence.persistenceProvider</literal></term>
+                <listitem>
+                    <para>
+                        Abstraction layer for non-standardized features of JPA provider.
+                    </para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.core.validators</literal></term>
+                <listitem>
+                    <para>
+                        Caches instances of Hibernate Validator <literal>ClassValidator</literal>.
+                    </para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.faces.validation</literal></term>
+                <listitem>
+                    <para>
+                        Allows the application to determine whether validation
+                        failed or was successful.
+                    </para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.debug.introspector</literal></term>
+                <listitem>
+                    <para>
+                        Support for the Seam Debug Page.
+                    </para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.debug.contexts</literal></term>
+                <listitem>
+                    <para>
+                        Support for the Seam Debug Page.
+                    </para>
+                </listitem>
+            </varlistentry>    	    
+            <varlistentry>
+                <term><literal>org.jboss.seam.exception.exceptions</literal></term>
+                <listitem>
+                    <para>
+                        Internal component for exception handling.
+                    </para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.transaction.transaction</literal></term>
+                <listitem>
+                    <para>
+                         API for controlling transactions and abstracting the underlying
+                         transaction management implementation behind a JTA-compatible
+                         interface.
+                    </para>
+                </listitem>
+            </varlistentry>
+             <varlistentry>
+                <term><literal>org.jboss.seam.faces.safeActions</literal></term>
+                <listitem>
+                    <para>
+                        Decides if an action expression in an incoming URL is safe.  This 
+                        is done by checking that the action expression exists in the view.
+                    </para>
+                </listitem>
+             </varlistentry>
+    	</variablelist>
+   </section>
+
+     <section>
+        <title>Miscellaneous components</title>
+  <!--      <para>
+            These components don't fit into 
+        </para> -->
+        
+        <variablelist>
+            <varlistentry>
+                <term><literal>org.jboss.seam.async.dispatcher</literal></term>
+                <listitem>
+                    <para>
+                        Dispatcher stateless session bean for asynchronous methods.
+                    </para>
+                </listitem>
+            </varlistentry>
+        </variablelist>
+         
+        <variablelist>
+            <varlistentry>
+                <term><literal>org.jboss.seam.core.image</literal></term>
+                <listitem>
+                    <para>
+                         Image manipulation and interrogation.
+                    </para>
+                </listitem>
+            </varlistentry>
+        </variablelist>
+         
+        <variablelist>
+            <varlistentry>
+                <term><literal>org.jboss.seam.core.pojoCache</literal></term>
+                <listitem>
+                    <para>
+                        Manager component for a PojoCache instance.
+                    </para>
+                </listitem>
+            </varlistentry>
+        </variablelist>
+         
+        <variablelist>
+            <varlistentry>
+                <term><literal>org.jboss.seam.core.uiComponent</literal></term>
+                <listitem>
+                    <para>
+                        Manages a map of UIComponents keyed by component id.
+                    </para>
+                </listitem>
+            </varlistentry>
+         </variablelist>
+         
+         
+         
+    </section>
+    
+    <section>
+        <title>Special components</title>
+        <para>
+            Certain special Seam component classes are installable multiple times under names
+            specified in the Seam configuration. For example, the following lines in 
+            <literal>components.xml</literal> install and configure two Seam components:
+        </para>
+        
+        <programlisting role="XML"><![CDATA[<component name="bookingDatabase"
+          class="org.jboss.seam.persistence.ManagedPersistenceContext">
+    <property name="persistenceUnitJndiName">java:/comp/emf/bookingPersistence</property>
+</component>
+
+<component name="userDatabase"
+          class="org.jboss.seam.persistence.ManagedPersistenceContext">
+    <property name="persistenceUnitJndiName">java:/comp/emf/userPersistence</property>
+</component>]]></programlisting>
+        
+        <para>
+            The Seam component names are <literal>bookingDatabase</literal> and 
+            <literal>userDatabase</literal>.
+        </para>
+        
+    	<variablelist>
+            <varlistentry>
+                <term><emphasis>&lt;entityManager&gt;</emphasis></term>
+                <term><literal>org.jboss.seam.persistence.ManagedPersistenceContext</literal></term>
+                <listitem>
+                    <para>
+                        Manager component for a conversation scoped managed <literal>EntityManager</literal>
+                        with an extended persistence context.
+                    </para>
+                    <itemizedlist>
+                        <listitem>
+                        <para>
+                           <emphasis>&lt;entityManager&gt;</emphasis>.entityManagerFactory 
+                            &#8212; a value binding expression that evaluates to an instance of 
+                            <literal>EntityManagerFactory</literal>.
+                        </para>
+                        <para>
+                           <emphasis>&lt;entityManager&gt;</emphasis>.persistenceUnitJndiName 
+                            &#8212; the JNDI name of the entity manager factory, default to 
+                            java:/<emphasis>&lt;managedPersistenceContext&gt;</emphasis>.
+                        </para>
+                        </listitem>
+                    </itemizedlist>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><emphasis>&lt;entityManagerFactory&gt;</emphasis></term>
+                <term><literal>org.jboss.seam.persistence.EntityManagerFactory</literal></term>
+                <listitem>
+                    <para>
+                        Manages a JPA <literal>EntityManagerFactory</literal>. This is most useful
+                        when using JPA outside of an EJB 3.0 supporting environment.
+                    </para>
+                    <itemizedlist>
+                        <listitem>
+                        <para>
+                            <literal>entityManagerFactory.persistenceUnitName</literal> &#8212; 
+                            the name of the persistence unit.
+                        </para>
+                        </listitem>
+                    </itemizedlist>
+                    <para>
+                        See the API JavaDoc for further configuration properties.
+                    </para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><emphasis>&lt;session&gt;</emphasis></term>
+                <term><literal>org.jboss.seam.persistence.ManagedSession</literal></term>
+                <listitem>
+                    <para>
+                        Manager component for a conversation scoped managed Hibernate <literal>Session</literal>.
+                    </para>
+                    <itemizedlist>
+                        <listitem>
+                        <para>
+                           <emphasis>&lt;session&gt;</emphasis>.sessionFactory 
+                            &#8212; a value binding expression that evaluates to an instance of 
+                            <literal>SessionFactory</literal>.
+                        </para>
+                        <para>
+                           <emphasis>&lt;session&gt;</emphasis>.sessionFactoryJndiName 
+                            &#8212; the JNDI name of the session factory, default to 
+                            java:/<emphasis>&lt;managedSession&gt;</emphasis>.
+                        </para>
+                        </listitem>
+                    </itemizedlist>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><emphasis>&lt;sessionFactory&gt;</emphasis></term>
+                <term><literal>org.jboss.seam.persistence.HibernateSessionFactory</literal></term>
+                <listitem>
+                    <para>
+                        Manages a Hibernate <literal>SessionFactory</literal>.  
+                    </para>
+                    <itemizedlist>
+                        <listitem>
+                        <para>
+                            <literal>&lt;sessionFactory&gt;.cfgResourceName</literal> &#8212; 
+                            the path to the configuration file. Default to <literal>hibernate.cfg.xml</literal>.
+                        </para>
+                        </listitem>
+                    </itemizedlist>
+                    <para>
+                        See the API JavaDoc for further configuration properties.
+                    </para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><emphasis>&lt;managedQueueSender&gt;</emphasis></term>
+                <term><literal>org.jboss.seam.jms.ManagedQueueSender</literal></term>
+                <listitem>
+                    <para>
+                        Manager component for an event scoped managed JMS <literal>QueueSender</literal>.
+                    </para>
+                    <itemizedlist>
+                        <listitem>
+                        <para>
+                           <emphasis>&lt;managedQueueSender&gt;</emphasis>.queueJndiName 
+                            &#8212; the JNDI name of the JMS queue.
+                        </para>
+                        </listitem>
+                    </itemizedlist>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><emphasis>&lt;managedTopicPublisher&gt;</emphasis></term>
+                <term><literal>org.jboss.seam.jms.ManagedTopicPublisher</literal></term>
+                <listitem>
+                    <para>
+                        Manager component for an event scoped managed JMS <literal>TopicPublisher</literal>.
+                    </para>
+                    <itemizedlist>
+                        <listitem>
+                        <para>
+                           <emphasis>&lt;managedTopicPublisher&gt;</emphasis>.topicJndiName 
+                            &#8212; the JNDI name of the JMS topic.
+                        </para>
+                        </listitem>
+                    </itemizedlist>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><emphasis>&lt;managedWorkingMemory&gt;</emphasis></term>
+                <term><literal>org.jboss.seam.drools.ManagedWorkingMemory</literal></term>
+                <listitem>
+                    <para>
+                        Manager component for a conversation scoped managed Drools <literal>WorkingMemory</literal>.
+                    </para>
+                    <itemizedlist>
+                        <listitem>
+                        <para>
+                           <emphasis>&lt;managedWorkingMemory&gt;</emphasis>.ruleBase 
+                            &#8212; a value expression that evaluates to an instance of <literal>RuleBase</literal>.
+                        </para>
+                        </listitem>
+                    </itemizedlist>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><emphasis>&lt;ruleBase&gt;</emphasis></term>
+                <term><literal>org.jboss.seam.drools.RuleBase</literal></term>
+                <listitem>
+                    <para>
+                        Manager component for an application scoped Drools <literal>RuleBase</literal>.
+                        <emphasis>Note that this is not really intended for production usage, since
+                        it does not support dynamic installation of new rules.</emphasis>
+                    </para>
+                    <itemizedlist>
+                        <listitem>
+                        <para>
+                           <emphasis>&lt;ruleBase&gt;</emphasis>.ruleFiles 
+                            &#8212; a list of files containing Drools rules.
+                        </para>
+                        <para>
+                           <emphasis>&lt;ruleBase&gt;</emphasis>.dslFile 
+                            &#8212; a Drools DSL definition.
+                        </para>
+                        </listitem>
+                    </itemizedlist>
+                </listitem>
+            </varlistentry>
+       <!--     <varlistentry>
+                <term><emphasis>&lt;entityHome&gt;</emphasis></term>
+                <term><literal>org.jboss.seam.framework.EntityHome</literal></term> -->
+              <!--    <listitem> 
+			  <para></para> -->
+                     <!-- TODO: Document this -->
+             <!--     </listitem> -->
+     <!--     </varlistentry> -->
+<!--      <varlistentry> 
+                <term><emphasis>&lt;hibernateEntityHome&gt;</emphasis></term>
+		<term><literal>org.jboss.seam.framework.HibernateEntityHome</literal></term> -->
+		<!--    <listitem> 
+			<para></para> -->
+                  <!-- TODO: Document this -->
+		  <!--  </listitem> -->
+	  <!--      </varlistentry> -->
+	    <!--     <varlistentry> 
+                <term><emphasis>&lt;entityQuery&gt;</emphasis></term>
+		<term><literal>org.jboss.seam.framework.EntityQuery</literal></term> -->
+		<!--   <listitem> 
+			<para></para> -->
+                  <!-- TODO: Document this -->
+		  <!--   </listitem> -->
+	  <!--        </varlistentry> -->
+	    <!--      <varlistentry>
+                <term><emphasis>&lt;hibernateEntityQuery&gt;</emphasis></term>
+		<term><literal>org.jboss.seam.framework.HibernateEntityQuery</literal></term> -->
+		<!--   <listitem>
+			<para></para> -->
+                  <!-- TODO: Document this -->
+		  <!--   </listitem> -->
+	  <!--   </varlistentry> -->
+        </variablelist>
+    </section>
+    
+</chapter>


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Components.xml
___________________________________________________________________
Name: svn:executable
   + *

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Concepts.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Concepts.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Concepts.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,807 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Seam_Reference_Guide-The_contextual_component_model">
+	<title>The contextual component model</title>
+	<para>
+		The two core concepts in Seam are the notion of a <emphasis>context</emphasis> and the notion of a <emphasis>component</emphasis>. Components are stateful objects, usually EJBs, and an instance of a component is associated with a context, and given a name in that context. <emphasis>Bijection</emphasis> provides a mechanism for aliasing internal component names (instance variables) to contextual names, allowing component trees to be dynamically assembled, and reassembled by Seam.
+	</para>
+	<para>
+		Let us start by describing the contexts built in to Seam.
+	</para>
+	<sect1 id="Seam_Reference_Guide-The_contextual_component_model-Seam_contexts"><title>Seam contexts</title>
+	<para>
+		Seam contexts are created and destroyed by the framework. The application does not control context demarcation via explicit Java API calls. Context are usually implicit. In some cases, however, contexts are demarcated via annotations.
+	</para>
+	<para>
+		The basic Seam contexts are:
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				Stateless context
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Event (or request) context
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Page context
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Conversation context
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Session context
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Business process context
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Application context
+			</para>
+		</listitem>
+	</itemizedlist>
+	<para>
+		You will recognize some of these contexts from servlet and related specifications. However, two of them might be new to you: <emphasis>conversation context</emphasis>, and <emphasis>business process context</emphasis>. One reason state management in web applications is so fragile and error-prone is that the three built-in contexts (request, session and application) are not especially meaningful from the point of view of the business logic. A user login session, for example, is a fairly arbitrary construct in terms of the actual application work flow. Therefore, most Seam components are scoped to the conversation or business process contexts, since they are the contexts which are most meaningful in terms of the application.
+	</para>
+	<para>
+		Let us look at each context in turn.
+	</para>
+	<sect2 id="Seam_Reference_Guide-Seam_contexts-Stateless_context"><title>Stateless context</title>
+	<para>
+		Components which are truly stateless (stateless session beans, primarily) always live in the stateless context (this is really a non-context). Stateless components are not very interesting, and are arguably not very object-oriented. Nevertheless, they are important and often useful.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Seam_contexts-Event_context"><title>Event context</title>
+	<para>
+		The event context is the "narrowest" stateful context, and is a generalization of the notion of the web request context to cover other kinds of events. Nevertheless, the event context associated with the lifecycle of a JSF request is the most important example of an event context, and the one you will work with most often. Components associated with the event context are destroyed at the end of the request, but their state is available and well-defined for at least the lifecycle of the request.
+	</para>
+	<para>
+		When you invoke a Seam component via RMI, or Seam Remoting, the event context is created and destroyed just for the invocation.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Seam_contexts-Page_context"><title>Page context</title>
+	<para>
+		The page context allows you to associate state with a particular instance of a rendered page. You can initialize state in your event listener, or while actually rendering the page, and then have access to it from any event that originates from that page. This is especially useful for functionality like clickable lists, where the list is backed by changing data on the server side. The state is actually serialized to the client, so this construct is extremely robust with respect to multi-window operation and the back button.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Seam_contexts-Conversation_context"><title>Conversation context</title>
+	<para>
+		The conversation context is a truly central concept in Seam. A <emphasis>conversation</emphasis> is a unit of work from the point of view of the user. It might span several interactions with the user, several requests, and several database transactions. But to the user, a conversation solves a single problem. For example, <emphasis>book hotel</emphasis>, <emphasis>approve contract</emphasis>, <emphasis>create order</emphasis> are all conversations. You might like to think of a conversation implementing a single <emphasis>use case</emphasis> or <emphasis>user story</emphasis>, but the relationship is not necessarily quite exact.
+	</para>
+	<para>
+		A conversation holds state associated with <emphasis>what the user is doing now, in this window</emphasis>. A single user may have multiple conversations in progress at any point in time, usually in multiple windows. The conversation context allows us to ensure that state from the different conversations does not collide and cause bugs.
+	</para>
+<!--	<para>
+		It might take you some time to get used to thinking of applications in terms of conversations. But once you get used to it, we think you will love the notion, and never be able to not think in terms of conversations again!
+	</para> -->
+	<para>
+		Some conversations last for just a single request. Conversations that span multiple requests must be demarcated using annotations provided by Seam.
+	</para>
+	<para>
+		Some conversations are also <emphasis>tasks</emphasis>. A task is a conversation that is significant in terms of a long-running business process, and has the potential to trigger a business process state transition when it is successfully completed. Seam provides a special set of annotations for task demarcation.
+	</para>
+	<para>
+		Conversations may be <emphasis>nested</emphasis>, with one conversation taking place "inside" a wider conversation. This is an advanced feature.
+	</para>
+	<para>
+		Usually, conversation state is actually held by Seam in the servlet session between requests. Seam implements configurable <emphasis>conversation timeout</emphasis>, automatically destroying inactive conversations, and thus ensuring that the state held by a single user login session does not grow without bound if the user abandons conversations.
+	</para>
+	<para>
+		Seam serializes processing of concurrent requests that take place in the same long-running conversation context, in the same process.
+	</para>
+	<para>
+		Alternatively, Seam may be configured to keep conversational state in the client browser.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Seam_contexts-Session_context"><title>Session context</title>
+	<para>
+		A session context holds state associated with the user login session. While there are some cases where it is useful to share state between several conversations, we generally frown on the use of session context for holding components other than global information about the logged in user.
+	</para>
+	<para>
+		In a JSR-168 portal environment, the session context represents the portlet session.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Seam_contexts-Business_process_context"><title>Business process context</title>
+	<para>
+		The business process context holds state associated with the long running business process. This state is managed and made persistent by the BPM engine (JBoss jBPM). The business process spans multiple interactions with multiple users, so this state is shared between multiple users, but in a well-defined manner. The current task determines the current business process instance, and the lifecycle of the business process is defined externally using a <emphasis>process definition language</emphasis>, so there are no special annotations for business process demarcation.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Seam_contexts-Application_context"><title>Application context</title>
+	<para>
+		The application context is the familiar servlet context from the servlet spec. Application context is mainly useful for holding static information such as configuration data, reference data or metamodels. For example, Seam stores its own configuration and metamodel in the application context.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Seam_contexts-Context_variables"><title>Context variables</title>
+	<para>
+		A context defines a namespace, a set of <emphasis>context variables</emphasis>. These work much the same as session or request attributes in the servlet spec. You may bind any value you like to a context variable, but usually we bind Seam component instances to context variables.
+	</para>
+	<para>
+		So, within a context, a component instance is identified by the context variable name (this is usually, but not always, the same as the component name). You may programatically access a named component instance in a particular scope via the <literal>Contexts</literal> class, which provides access to several thread-bound instances of the <literal>Context</literal> interface:
+	</para>
+<programlisting>User user = (User) Contexts.getSessionContext().get("user");</programlisting>
+	<para>
+		You may also set or change the value associated with a name:
+	</para>
+<programlisting>Contexts.getSessionContext().set("user", user);</programlisting>
+	<para>
+		Usually, however, we obtain components from a context via injection, and put component instances into a context via outjection.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Seam_contexts-Context_search_priority"><title>Context search priority</title>
+	<para>
+		Sometimes, as above, component instances are obtained from a particular known scope. Other times, all stateful scopes are searched, in <emphasis>priority order</emphasis>. The order is as follows:
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				Event context
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Page context
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Conversation context
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Session context
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Business process context
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Application context
+			</para>
+		</listitem>
+	</itemizedlist>
+	<para>
+		You can perform a priority search by calling <literal>Contexts.lookupInStatefulContexts()</literal>. Whenever you access a component by name from a JSF page, a priority search occurs.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Seam_contexts-Concurrency_model"><title>Concurrency model</title>
+	<para>
+		Neither the servlet nor EJB specifications define any facilities for managing concurrent requests originating from the same client. The servlet container simply lets all threads run concurrently and leaves enforcing threadsafeness to application code. The EJB container allows stateless components to be accessed concurrently, and throws an exception if multiple threads access a stateful session bean.
+	</para>
+	<para>
+		This behavior might have been okay in old-style web applications which were based around fine-grained, synchronous requests. But for modern applications which make heavy use of many fine-grained, asynchronous (AJAX) requests, concurrency is a fact of life, and must be supported by the programming model. Seam weaves a concurrency management layer into its context model.
+	</para>
+	<para>
+		The Seam session and application contexts are multithreaded. Seam will allow concurrent requests in a context to be processed concurrently. The event and page contexts are by nature single threaded. The business process context is strictly speaking multi-threaded, but in practice concurrency is sufficiently rare that this fact may be disregarded most of the time. Finally, Seam enforces a <emphasis>single thread per conversation per process</emphasis> model for the conversation context by serializing concurrent requests in the same long-running conversation context.
+	</para>
+	<para>
+		Since the session context is multithreaded, and often contains volatile state, session scope components are always protected by Seam from concurrent access. Seam serializes requests to session scope session beans and JavaBeans by default (and detects and breaks any deadlocks that occur). This is not the default behaviour for application scoped components however, since application scoped components do not usually hold volatile state and because synchronization at the global level is <emphasis>extremely</emphasis> expensive. However, you can force a serialized threading model on any session bean or JavaBean component by adding the <literal>@Synchronized</literal> annotation.
+	</para>
+	<para>
+		This concurrency model means that AJAX clients can safely use volatile session and conversational state, without the need for any special work on the part of the developer.
+	</para>
+	</sect2></sect1><sect1 id="Seam_Reference_Guide-The_contextual_component_model-Seam_components"><title>Seam components</title>
+	<para>
+		Seam components are POJOs (Plain Old Java Objects). In particular, they are JavaBeans or EJB 3.0 enterprise beans. While Seam does not require that components be EJBs and can even be used without an EJB 3.0 compliant container, Seam was designed with EJB 3.0 in mind and includes deep integration with EJB 3.0. Seam supports the following <emphasis>component types</emphasis>.
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				EJB 3.0 stateless session beans
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				EJB 3.0 stateful session beans
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				EJB 3.0 entity beans
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				JavaBeans
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				EJB 3.0 message-driven beans
+			</para>
+		</listitem>
+	</itemizedlist>
+	<sect2 id="Seam_Reference_Guide-Seam_components-Stateless_session_beans"><title>Stateless session beans</title>
+	<para>
+		Stateless session bean components are not able to hold state across multiple invocations. Therefore, they usually work by operating upon the state of other components in the various Seam contexts. They may be used as JSF action listeners, but cannot provide properties to JSF components for display.
+	</para>
+	<para>
+		Stateless session beans always live in the stateless context.
+	</para>
+	<para>
+		Stateless session beans are the least interesting kind of Seam component.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Seam_components-Stateful_session_beans"><title>Stateful session beans</title>
+	<para>
+		Stateful session bean components are able to hold state not only across multiple invocations of the bean, but also across multiple requests. Application state that does not belong in the database should usually be held by stateful session beans. This is a major difference between Seam and many other web application frameworks. Instead of sticking information about the current conversation directly in the <literal>HttpSession</literal>, you should keep it in instance variables of a stateful session bean that is bound to the conversation context. This allows Seam to manage the lifecycle of this state for you, and ensure that there are no collisions between state relating to different concurrent conversations.
+	</para>
+	<para>
+		Stateful session beans are often used as JSF action listener, and as backing beans that provide properties to JSF components for display or form submission.
+	</para>
+	<para>
+		By default, stateful session beans are bound to the conversation context. They may never be bound to the page or stateless contexts.
+	</para>
+	<para>
+		Concurrent requests to session-scoped stateful session beans are always serialized by Seam.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Seam_components-Entity_beans"><title>Entity beans</title>
+	<para>
+		Entity beans may be bound to a context variable and function as a seam component. Because entities have a persistent identity in addition to their contextual identity, entity instances are usually bound explicitly in Java code, rather than being instantiated implicitly by Seam.
+	</para>
+	<para>
+		Entity bean components do not support bijection or context demarcation. Nor does invocation of an entity bean trigger validation.
+	</para>
+	<para>
+		Entity beans are not usually used as JSF action listeners, but do often function as backing beans that provide properties to JSF components for display or form submission. In particular, it is common to use an entity as a backing bean, together with a stateless session bean action listener to implement create/update/delete type functionality.
+	</para>
+	<para>
+		By default, entity beans are bound to the conversation context. They may never be bound to the stateless context.
+	</para>
+	<para>
+		Note that it in a clustered environment is somewhat less efficient to bind an entity bean directly to a conversation or session scoped Seam context variable than it would be to hold a reference to the entity bean in a stateful session bean. For this reason, not all Seam applications define entity beans to be Seam components.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Seam_components-JavaBeans"><title>JavaBeans</title>
+	<para>
+		Javabeans may be used just like a stateless or stateful session bean. However, they do not provide the functionality of a session bean (declarative transaction demarcation, declarative security, efficient clustered state replication, EJB 3.0 persistence, timeout methods, etc).
+	</para>
+	<para>
+		In a later chapter, we show you how to use Seam and Hibernate without an EJB container. In this use case, components are JavaBeans instead of session beans. Note, however, that in many application servers it is somewhat less efficient to cluster conversation or session scoped Seam JavaBean components than it is to cluster stateful session bean components.
+	</para>
+	<para>
+		By default, JavaBeans are bound to the event context.
+	</para>
+	<para>
+		Concurrent requests to session-scoped JavaBeans are always serialized by Seam.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Seam_components-Message_driven_beans"><title>Message-driven beans</title>
+	<para>
+		Message-driven beans may function as a seam component. However, message-driven beans are called quite differently to other Seam components - instead of invoking them via the context variable, they listen for messages sent to a JMS queue or topic.
+	</para>
+	<para>
+		Message-driven beans may not be bound to a Seam context. Nor do they have access to the session or conversation state of their "caller". However, they do support bijection and some other Seam functionality.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Seam_components-Interception"><title>Interception</title>
+	<para>
+		In order to perform its magic (bijection, context demarcation, validation, etc), Seam must intercept component invocations. For JavaBeans, Seam is in full control of instantiation of the component, and no special configuration is needed. For entity beans, interception is not required since bijection and context demarcation are not defined. For session beans, we must register an EJB interceptor for the session bean component. We could use an annotation, as follows:
+	</para>
+<programlisting>@Stateless
+ at Interceptors(SeamInterceptor.class)
+public class LoginAction implements Login { 
+    ... 
+}
+</programlisting>
+	<para>
+		But a much better way is to define the interceptor in <literal>ejb-jar.xml</literal>.
+	</para>
+<programlisting>&lt;interceptors&gt;
+   &lt;interceptor&gt;
+      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/interceptor-class&gt;
+   &lt;/interceptor&gt;
+&lt;/interceptors&gt;
+   
+&lt;assembly-descriptor&gt;
+   &lt;interceptor-binding&gt;
+      &lt;ejb-name&gt;*&lt;/ejb-name&gt;
+      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/interceptor-class&gt;
+   &lt;/interceptor-binding&gt;
+&lt;/assembly-descriptor&gt;
+</programlisting>
+	</sect2><sect2 id="Seam_Reference_Guide-Seam_components-Component_names"><title>Component names</title>
+	<para>
+		All seam components need a name. We can assign a name to a component using the <literal>@Name</literal> annotation:
+	</para>
+<programlisting>@Name("loginAction")
+ at Stateless
+public class LoginAction implements Login { 
+    ... 
+}
+</programlisting>
+	<para>
+		This name is the <emphasis>seam component name</emphasis> and is not related to any other name defined by the EJB specification. However, seam component names work just like JSF managed bean names and you can think of the two concepts as identical.
+	</para>
+	<para>
+		<literal>@Name</literal> is not the only way to define a component name, but we always need to specify the name <emphasis>somewhere</emphasis>. If we do not, then none of the other Seam annotations will function.
+	</para>
+	<para>
+		Just like in JSF, a seam component instance is usually bound to a context variable with the same name as the component name. So, for example, we would access the <literal>LoginAction</literal> using <literal>Contexts.getStatelessContext().get("loginAction")</literal>. In particular, whenever Seam itself instantiates a component, it binds the new instance to a variable with the component name. However, again like JSF, it is possible for the application to bind a component to some other context variable by programmatic API call. This is only useful if a particular component serves more than one role in the system. For example, the currently logged in <literal>User</literal> might be bound to the <literal>currentUser</literal> session context variable, while a <literal>User</literal> that is the subject of some administration functionality might be bound to the <literal>user</literal> conversation context variable.
+	</para>
+	<para>
+		For very large applications, and for built-in seam components, qualified names are often used.
+	</para>
+<programlisting>@Name("com.jboss.myapp.loginAction")
+ at Stateless
+ at Interceptors(SeamInterceptor.class)
+public class LoginAction implements Login { 
+    ... 
+}
+</programlisting>
+	<para>
+		We may use the qualified component name both in Java code and in JSF&#39;s expression language:
+	</para>
+<programlisting>&lt;h:commandButton type="submit" value="Login"
+                 action="#{com.jboss.myapp.loginAction.login}"/&gt;
+</programlisting>
+	<para>
+		Since this is noisy, Seam also provides a means of aliasing a qualified name to a simple name. Add a line like this to the <literal>components.xml</literal> file:
+	</para>
+<programlisting>&lt;factory name="loginAction" scope="STATELESS" value="#{com.jboss.myapp.loginAction}"/&gt;</programlisting>
+	<para>
+		All of the built-in Seam components have qualified names, but most of them are aliased to a simple name by the <literal>components.xml</literal> file included in the Seam jar.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Seam_components-Defining_the_component_scope"><title>Defining the component scope</title>
+	<para>
+		We can override the default scope (context) of a component using the <literal>@Scope</literal> annotation. This lets us define what context a component instance is bound to, when it is instantiated by Seam.
+	</para>
+<programlisting>@Name("user")
+ at Entity
+ at Scope(SESSION)
+public class User { 
+    ... 
+}
+</programlisting>
+	<para>
+		<literal>org.jboss.seam.ScopeType</literal> defines an enumeration of possible scopes.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Seam_components-Components_with_multiple_roles"><title>Components with multiple roles</title>
+	<para>
+		Some Seam component classes can fulfill more than one role in the system. For example, we often have a <literal>User</literal> class which is usually used as a session-scoped component representing the current user but is used in user administration screens as a conversation-scoped component. The <literal>@Role</literal> annotation lets us define an additional named role for a component, with a different scope; it lets us bind the same component class to different context variables. (Any Seam component <emphasis>instance</emphasis> may be bound to multiple context variables, but this lets us do it at the class level, and take advantage of auto-instantiation.)
+	</para>
+<programlisting>@Name("user")
+ at Entity
+ at Scope(CONVERSATION)
+ at Role(name="currentUser", scope=SESSION)
+public class User { 
+    ... 
+}
+</programlisting>
+	<para>
+		The <literal>@Roles</literal> annotation lets us specify as many additional roles as we like.
+	</para>
+<programlisting>@Name("user")
+ at Entity
+ at Scope(CONVERSATION)
+ at Roles({@Role(name="currentUser", scope=SESSION)
+        @Role(name="tempUser", scope=EVENT)})
+public class User { 
+    ... 
+}
+</programlisting>
+	</sect2><sect2 id="Seam_Reference_Guide-Seam_components-Built_in_components"><title>Built-in components</title>
+	<para>
+		Like many good frameworks, Seam eats its own dogfood and is implemented mostly as a set of built-in Seam interceptors (see later) and Seam components. This makes it easy for applications to interact with built-in components at runtime or even customize the basic functionality of Seam by replacing the built-in components with custom implementations. The built-in components are defined in the Seam namespace <literal>org.jboss.seam.core</literal> and the Java package of the same name.
+	</para>
+	<para>
+		The built-in components may be injected, just like any Seam components, but they also provide convenient static <literal>instance()</literal> methods:
+	</para>
+<programlisting>FacesMessages.instance().add("Welcome back, #{user.name}!");</programlisting>
+	<para>
+		Seam was designed to integrate tightly in a Java EE 5 environment. However, we understand that there are many projects which are not running in a full EE environment. We also realize the critical importance of easy unit and integration testing using frameworks such as TestNG and JUnit. So, we have made it easy to run Seam in Java SE environments by allowing you to boostrap certain critical infrastructure normally only found in EE environments by installing built-in Seam components.
+	</para>
+	<para>
+		For example, you can run your EJB3 components in Tomcat or an integration test suite just by installing the built-in component <literal>org.jboss.seam.core.ejb</literal>, which automatically bootstraps the JBoss Embeddable EJB3 container and deploys your EJB components.
+	</para>
+	<para>
+		Or, if you are not quite ready for the Brave New World of EJB 3.0, you can write a Seam application that uses only JavaBean components, together with Hibernate3 for persistence, by installing a built-in component that manages a Hibernate <literal>SessionFactory</literal>. When using Hibernate outside of a J2EE environment, you will also probably need a JTA transaction manager and JNDI server, which are available via the built-in component <literal>org.jboss.seam.core.microcontainer</literal>. This lets you use the bulletproof JTA/JCA pooling datasource from JBoss application server in an SE environment like Tomcat.
+	</para>
+	</sect2></sect1><sect1 id="Seam_Reference_Guide-The_contextual_component_model-Bijection"><title>Bijection</title>
+	<para>
+		<emphasis>Dependency injection</emphasis> or <emphasis>inversion of control</emphasis> is by now a familiar concept to most Java developers. Dependency injection allows a component to obtain a reference to another component by having the container <emphasis>inject</emphasis> the other component to a setter method or instance variable. In all dependency injection implementations that we have seen, injection occurs when the component is constructed, and the reference does not subsequently change for the lifetime of the component instance. For stateless components, this is reasonable. From the point of view of a client, all instances of a particular stateless component are interchangeable. On the other hand, Seam emphasizes the use of stateful components. So traditional dependency injection is no longer a very useful construct. Seam introduces the notion of <emphasis>bijection</emphasis> as a generalization of injection. In contrast to injection, bijection is:
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				<emphasis>contextual</emphasis> - bijection is used to assemble stateful components from various different contexts (a component from a <emphasis>wider</emphasis> context may even have a reference to a component from a <emphasis>narrower</emphasis> context)
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<emphasis>bidirectional</emphasis> - values are injected from context variables into attributes of the component being invoked, and also <emphasis>outjected</emphasis> from the component attributes back out to the context, allowing the component being invoked to manipulate the values of contextual variables simply by setting its own instance variables
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<emphasis>dynamic</emphasis> - since the value of contextual variables changes over time, and since Seam components are stateful, bijection takes place every time a component is invoked
+			</para>
+		</listitem>
+	</itemizedlist>
+	<para>
+		In essence, bijection lets you alias a context variable to a component instance variable, by specifying that the value of the instance variable is injected, outjected, or both. Of course, we use annotations to enable bijection.
+	</para>
+	<para>
+		The <literal>@In</literal> annotation specifies that a value should be injected, either into an instance variable:
+	</para>
+<programlisting>@Name("loginAction")
+ at Stateless
+ at Interceptors(SeamInterceptor.class)
+public class LoginAction implements Login { 
+    @In User user;
+    ... 
+}
+</programlisting>
+	<para>
+		or into a setter method:
+	</para>
+<programlisting>@Name("loginAction")
+ at Stateless
+ at Interceptors(SeamInterceptor.class)
+public class LoginAction implements Login { 
+    User user;
+    
+    @In
+    public void setUser(User user) {
+        this.user=user;
+    }
+    
+    ... 
+}
+</programlisting>
+	<para>
+		By default, Seam will do a priority search of all contexts, using the name of the property or instance variable that is being injected. You may wish to specify the context variable name explicitly, using, for example, <literal>@In("currentUser")</literal>.
+	</para>
+	<para>
+		If you want Seam to create an instance of the component when there is no existing component instance bound to the named context variable, you should specify <literal>@In(create=true)</literal>. If the value is optional (it can be null), specify <literal>@In(required=false)</literal>.
+	</para>
+	<para>
+		For some components, it can be repetitive to have to specify <literal>@In(create=true)</literal> everywhere they are used. In such cases, you can annotate the component <literal>@AutoCreate</literal>, and then it will always be created, whenever needed, even without the explicit use of <literal>create=true</literal>.
+	</para>
+	<para>
+		You can even inject the value of an expression:
+	</para>
+<programlisting>@Name("loginAction")
+ at Stateless
+ at Interceptors(SeamInterceptor.class)
+public class LoginAction implements Login { 
+    @In("#{user.username}") String username;
+    ... 
+}
+</programlisting>
+	<para>
+		(There is much more information about component lifecycle and injection in the next chapter.)
+	</para>
+	<para>
+		The <literal>@Out</literal> annotation specifies that an attribute should be outjected, either from an instance variable:
+	</para>
+<programlisting>@Name("loginAction")
+ at Stateless
+ at Interceptors(SeamInterceptor.class)
+public class LoginAction implements Login { 
+    @Out User user;
+    ... 
+}
+</programlisting>
+	<para>
+		or from a getter method:
+	</para>
+<programlisting>@Name("loginAction")
+ at Stateless
+ at Interceptors(SeamInterceptor.class)
+public class LoginAction implements Login { 
+    User user;
+    
+    @Out
+    public User getUser() {
+        return user;
+    }
+    
+    ... 
+}
+</programlisting>
+	<para>
+		An attribute may be both injected and outjected:
+	</para>
+<programlisting>@Name("loginAction")
+ at Stateless
+ at Interceptors(SeamInterceptor.class)
+public class LoginAction implements Login { 
+    @In @Out User user;
+    ... 
+}
+</programlisting>
+	<para>
+		or:
+	</para>
+<programlisting>@Name("loginAction")
+ at Stateless
+ at Interceptors(SeamInterceptor.class)
+public class LoginAction implements Login { 
+    User user;
+    
+    @In
+    public void setUser(User user) {
+        this.user=user;
+    }
+    
+    @Out
+    public User getUser() {
+        return user;
+    }
+    
+    ... 
+}
+</programlisting>
+	</sect1><sect1 id="Seam_Reference_Guide-The_contextual_component_model-Lifecycle_methods"><title>Lifecycle methods</title>
+	<para>
+		Session bean and entity bean Seam components support all the usual EJB 3.0 lifecycle callback (<literal>@PostConstruct</literal>, <literal>@PreDestroy</literal>, etc). Seam extends all of these callbacks except <literal>@PreDestroy</literal> to JavaBean components. But Seam also defines its own component lifecycle callbacks.
+	</para>
+	<para>
+		The <literal>@Create</literal> method is called every time Seam instantiates a component. Unlike the <literal>@PostConstruct</literal> method, this method is called after the component is fully constructed by the EJB container, and has access to all the usual Seam functionality (bijection, etc). Components may define only one <literal>@Create</literal> method.
+	</para>
+	<para>
+		The <literal>@Destroy</literal> method is called when the context that the Seam component is bound to ends. Components may define only one <literal>@Destroy</literal> method. Stateful session bean components <emphasis>must</emphasis> define a method annotated <literal>@Destroy @Remove</literal>.
+	</para>
+	<para>
+		Finally, a related annotation is the <literal>@Startup</literal> annotation, which may be applied to any application or session scoped component. The <literal>@Startup</literal> annotation tells Seam to instantiate the component immediately, when the context begins, instead of waiting until it is first referenced by a client. It is possible to control the order of instantiation of startup components by specifying <literal>@Startup(depends={....})</literal>.
+	</para>
+	</sect1><sect1 id="Seam_Reference_Guide-The_contextual_component_model-Conditional_installation"><title>Conditional installation</title>
+	<para>
+		The <literal>@Install</literal> annotation lets you control conditional installation of components that are required in some deployment scenarios and not in others. This is useful if:
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				You want to mock out some infrastructural component in tests.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				You want change the implementation of a component in certain deployment scenarios.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				You want to install some components only if their dependencies are available (useful for framework authors).
+			</para>
+		</listitem>
+	</itemizedlist>
+	<para>
+		<literal>@Install</literal> works by letting you specify <emphasis>precedence</emphasis> and <emphasis>dependencies</emphasis>.
+	</para>
+	<para>
+		The precedence of a component is a number that Seam uses to decide which component to install when there are multiple classes with the same component name in the classpath. Seam will choose the component with the higher precendence. There are some predefined precedence values (in ascending order):
+	</para>
+	<orderedlist>
+		<listitem>
+			<para>
+				<literal>BUILT_IN</literal> &mdash; the lowest precedece components are the components built in to Seam.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>FRAMEWORK</literal> &mdash; components defined by third-party frameworks may override built-in components, but are overridden by application components.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>APPLICATION</literal> &mdash; the default precedence. This is appropriate for most application components.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>DEPLOYMENT</literal> &mdash; for application components which are deployment-specific.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>MOCK</literal> &mdash; for mock objects used in testing.
+			</para>
+		</listitem>
+	</orderedlist>
+	<para>
+		Suppose we have a component named <literal>messageSender</literal> that talks to a JMS queue.
+	</para>
+<programlisting>@Name("messageSender") 
+public class MessageSender {
+    public void sendMessage() {
+        //do something with JMS
+    }
+}
+</programlisting>
+	<para>
+		In our unit tests, we don not have a JMS queue available, so we would like to stub out this method. We will create a <emphasis>mock</emphasis> component that exists in the classpath when unit tests are running, but is never deployed with the application:
+	</para>
+<programlisting>@Name("messageSender") 
+ at Install(precedence=MOCK)
+public class MockMessageSender extends MessageSender {
+    public void sendMessage() {
+        //do nothing!
+    }
+}
+</programlisting>
+	<para>
+		The <literal>precedence</literal> helps Seam decide which version to use when it finds both components in the classpath.
+	</para>
+	<para>
+		If we are able to control exactly which classes are in the classpath then this will work well, however if you are writing reusable framwork with many dependecies you will not wish to break that framework across numerious jars. You will wish to decide which components to install depending upon what other components are installed, and upon what classes are available in the classpath. The <literal>@Install</literal> annotation also controls this functionality. Seam uses this mechanism internally to enable conditional installation of many of the built-in components. However, you probably will not need to use it in your application.
+	</para>
+	</sect1><sect1 id="Seam_Reference_Guide-The_contextual_component_model-Logging"><title>Logging</title>
+	<para>
+		Below is the code for a simple log message in Java:
+	</para>
+<programlisting>private static final Log log = LogFactory.getLog(CreateOrderAction.class);
+        
+public Order createOrder(User user, Product product, int quantity) {
+    if ( log.isDebugEnabled() ) {
+        log.debug("Creating new order for user: " + user.username() + 
+            " product: " + product.name() 
+            + " quantity: " + quantity);
+    }
+    return new Order(user, product, quantity);
+}
+</programlisting>
+<!--	<para>
+		It is difficult to imagine how the code for a simple log message could possibly be more verbose. There is more lines of code tied up in logging than in the actual business logic! I remain totally astonished that the Java community has not come up with anything better in 10 years.
+	</para> -->
+	<para>
+		Seam provides a logging API that simplifies this code significantly:
+	</para>
+<programlisting>@Logger private Log log;
+        
+public Order createOrder(User user, Product product, int quantity) {
+    log.debug("Creating new order for user: #0 product: #1 quantity: #2", user.username(), 
+      product.name(), quantity);
+    return new Order(user, product, quantity);
+}
+</programlisting>
+	<para>
+		It does not matter if you declare the <literal>log</literal> variable static or not; it will work either way, except for entity bean components which require the <literal>log</literal> variable to be static.
+	</para>
+	<note>
+	<para>
+		We do not need the <literal>if ( log.isDebugEnabled() )</literal> guard, since string concatenation happens <emphasis>inside</emphasis> the <literal>debug()</literal> method. Also the log category does not need to be specified explicitly, since Seam knows what component it is injecting the <literal>Log</literal> into.
+	</para>
+</note>
+	<para>
+		If <literal>User</literal> and <literal>Product</literal> are Seam components available in the current contexts, it gets even better:
+	</para>
+<programlisting>@Logger private Log log;
+        
+public Order createOrder(User user, Product product, int quantity) {
+    log.debug("Creating new order for user: #{user.username} product: #{product.name} 
+      quantity: #0", quantity);
+    return new Order(user, product, quantity);
+}
+</programlisting>
+	<para>
+		Seam logging automagically chooses whether to send output to log4j or JDK logging. If log4j is in the classpath, Seam with use it. If it is not, Seam will use JDK logging.
+	</para>
+	</sect1><sect1 id="Seam_Reference_Guide-The_contextual_component_model-The_Mutable_interface_and_ReadOnly"><title>The <literal>Mutable</literal> interface and <literal>@ReadOnly</literal></title>
+	<para>
+		Many application servers feature an amazingly broken implementation of <literal>HttpSession</literal> clustering, where changes to the state of mutable objects bound to the session are only replicated when the application calls <literal>setAttribute()</literal> explicitly. This is a source of bugs that can not effectively be tested for at development time, since they will only manifest when failover occurs. Furthermore, the actual replication message contains the entire serialized object graph bound to the session attribute, which is inefficient.
+	</para>
+	<para>
+		Of course, EJB stateful session beans must perform automatic dirty checking and replication of mutable state and a sophisticated EJB container can introduce optimizations such as attribute-level replication. Unfortunately, not all Seam users have the good fortune to be working in an environment that supports EJB 3.0. So, for session and conversation scoped JavaBean and entity bean components, Seam provides an extra layer of cluster-safe state management over the top of the web container session clustering.
+	</para>
+	<para>
+		For session or conversation scoped JavaBean components, Seam automatically forces replication to occur by calling <literal>setAttribute()</literal> once in every request that the component was invoked by the application. Of course, this strategy is inefficient for read-mostly components. You can control this behavior by implementing the <literal>org.jboss.seam.core.Mutable</literal> interface, or by extending <literal>org.jboss.seam.core.AbstractMutable</literal>, and writing your own dirty-checking logic inside the component. For example,
+	</para>
+<programlisting>@Name("account")
+public class Account extends AbstractMutable
+{
+    private BigDecimal balance;
+    
+    public void setBalance(BigDecimal balance)
+    {
+        setDirty(this.balance, balance);
+        this.balance = balance;
+    }
+    
+    public BigDecimal getBalance()
+    {
+        return balance;
+    }
+    
+    ...
+    
+}
+</programlisting>
+	<para>
+		Or, you can use the <literal>@ReadOnly</literal> annotation to achieve a similar effect:
+	</para>
+<programlisting>@Name("account")
+public class Account
+{
+    private BigDecimal balance;
+    
+    public void setBalance(BigDecimal balance)
+    {
+        this.balance = balance;
+    }
+    
+    @ReadOnly
+    public BigDecimal getBalance()
+    {
+        return balance;
+    }
+    
+    ...
+    
+}
+</programlisting>
+	<para>
+		For session or conversation scoped entity bean components, Seam automatically forces replication to occur by calling <literal>setAttribute()</literal> once in every request, <emphasis>unless the (conversation-scoped) entity is currently associated with a Seam-managed persistence context, in which case no replication is needed</emphasis>. This strategy is not necessarily efficient, so session or conversation scope entity beans should be used with care. You can always write a stateful session bean or JavaBean component to <emphasis>manage</emphasis> the entity bean instance. For example,
+	</para>
+<programlisting>@Stateful
+ at Name("account")
+public class AccountManager extends AbstractMutable
+{
+    private Account account; // an entity bean
+    
+    @Unwrap
+    public void getAccount()
+    {
+        return account;
+    }
+    
+    ...
+    
+}
+</programlisting>
+<note>
+	<para>
+		Note that the <literal>EntityHome</literal> class in the Seam Application Framework provides a great example of this pattern.
+	</para>
+</note>
+	</sect1><sect1 id="Seam_Reference_Guide-The_contextual_component_model-Factory_and_manager_components"><title>Factory and manager components</title>
+	<para>
+		We often need to work with objects that are not Seam components. But we still want to be able to inject them into our components using <literal>@In</literal> and use them in value and method binding expressions, etc. Sometimes, we even need to tie them into the Seam context lifecycle (<literal>@Destroy</literal>, for example). So the Seam contexts can contain objects which are not Seam components, and Seam provides a couple of nice features that make it easier to work with non-component objects bound to contexts.
+	</para>
+	<para>
+		The <emphasis>factory component pattern</emphasis> lets a Seam component act as the instantiator for a non-component object. A <emphasis>factory method</emphasis> will be called when a context variable is referenced but has no value bound to it. We define factory methods using the <literal>@Factory</literal> annotation. The factory method binds a value to the context variable, and determines the scope of the bound value. There are two styles of factory method. The first style returns a value, which is bound to the context by Seam:
+	</para>
+<programlisting>@Factory(scope=CONVERSATION)
+public List&lt;Customer&gt; getCustomerList() { 
+    return ... ;
+} 
+</programlisting>
+	<para>
+		The second style is a method of type <literal>void</literal> which binds the value to the context variable itself:
+	</para>
+<programlisting>@DataModel List&lt;Customer&gt; customerList;
+
+ at Factory("customerList")
+public void initCustomerList() { 
+    customerList = ...  ;
+} 
+</programlisting>
+	<para>
+		In both cases, the factory method is called when we reference the <literal>customerList</literal> context variable and its value is null, and then has no further part to play in the lifecycle of the value. An even more powerful pattern is the <emphasis>manager component pattern</emphasis>. In this case, we have a Seam component that is bound to a context variable, that manages the value of the context variable, while remaining invisible to clients.
+	</para>
+	<para>
+		A manager component is any component with an <literal>@Unwrap</literal> method. This method returns the value that will be visable to clients, and is called <emphasis>every time</emphasis> a context variable is referenced.
+	</para>
+<programlisting>@Name("customerList")
+ at Scope(CONVERSATION)
+public class CustomerListManager
+{
+    ...
+    
+    @Unwrap
+    public List&lt;Customer&gt; getCustomerList() { 
+        return ... ;
+    }
+}
+</programlisting>
+	<para>
+		This pattern is especially useful if we have some heavyweight object that needs a cleanup operation when the context ends. In this case, the manager component may perform cleanup in the <literal>@Destroy</literal> method.
+	</para>
+	</sect1>
+</chapter>
+


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Concepts.xml
___________________________________________________________________
Name: svn:executable
   + *

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Configuration.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Configuration.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Configuration.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,802 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications">
+	<title>Configuring Seam and packaging Seam applications</title>
+	<para>
+		Configuration is a very boring topic and an extremely tedious pastime. Unfortunately, several lines of XML are required to integrate Seam into your JSF implementation and servlet container. There is no need to be too put off by the following sections; you will never need to type any of this stuff yourself, since you can just copy and paste from the example applications.
+	</para>
+	<sect1 id="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Basic_Seam_configuration"><title>Basic Seam configuration</title>
+	<para>
+		First, let us look at the basic configuration that is needed whenever we use Seam with JSF.
+	</para>
+	<sect2 id="Seam_Reference_Guide-Basic_Seam_configuration-Integrating_Seam_with_JSF_and_your_servlet_container"><title>Integrating Seam with JSF and your servlet container</title>
+	<para>
+		Seam requires the following entry in your <literal>web.xml</literal> file:
+	</para>
+<programlisting>&lt;listener&gt;
+    &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/listener-class&gt;
+&lt;/listener&gt;
+</programlisting>
+	<para>
+		This listener is responsible for bootstrapping Seam, and for destroying session and application contexts.
+	</para>
+	<para>
+		To integrate with the JSF request lifecycle, we also need a JSF <literal>PhaseListener</literal> registered in in the <literal>faces-config.xml</literal> file:
+	</para>
+<programlisting>&lt;lifecycle&gt;
+    &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-listener&gt;
+&lt;/lifecycle&gt;
+</programlisting>
+	<para>
+		The actual listener class here varies depending upon how you want to manage transaction demarcation (more on this below).
+	</para>
+	<para>
+		If you are using Sun&#39;s JSF 1.2 reference implementation, you should also add this to <literal>faces-config.xml</literal>:
+	</para>
+<programlisting>&lt;application&gt;
+    &lt;el-resolver&gt;org.jboss.seam.jsf.SeamELResolver&lt;/el-resolver&gt;
+&lt;/application&gt;
+</programlisting>
+	<para>
+		(This line should not strictly speaking be necessary, but it works around a minor bug in the RI.)
+	</para>
+	<para>
+		Some JSF implementations have a broken implementation of server-side state saving that interferes with Seam&#39;s conversation propagation. If you have problems with conversation propagation during form submissions, try switching to client-side state saving. You will need this in <literal>web.xml</literal>:
+	</para>
+<programlisting>&lt;context-param&gt;
+    &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-name&gt;
+    &lt;param-value&gt;client&lt;/param-value&gt;
+&lt;/context-param&gt;
+</programlisting>
+	</sect2><sect2 id="Seam_Reference_Guide-Basic_Seam_configuration-Seam_Resource_Servlet"><title>Seam Resource Servlet</title>
+	<para>
+		The Seam Resource Servlet provides resources used by Seam Remoting, captchas (see the security chapter) and some JSF UI controls. Configuring the Seam Resource Servlet requires the following entry in <literal>web.xml</literal>:
+	</para>
+<programlisting>&lt;servlet&gt;
+  &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;
+  &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-class&gt;
+&lt;/servlet&gt;
+    
+&lt;servlet-mapping&gt;
+  &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;
+  &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;
+&lt;/servlet-mapping&gt;
+</programlisting>
+	</sect2><sect2 id="Seam_Reference_Guide-Basic_Seam_configuration-Seam_servlet_filters"><title>Seam servlet filters</title>
+	<para>
+		Seam does not need any servlet filters for basic operation. However, there are several features which depend upon the use of filters. To make things easier for you guys, Seam lets you add and configure servlet filters just like you would configure other built-in Seam components. To take advantage of this feature, we must first install a master filter in <literal>web.xml</literal>:
+	</para>
+<programlisting>&lt;filter&gt;
+    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;
+    &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-class&gt;
+&lt;/filter&gt;
+
+&lt;filter-mapping&gt;
+    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;
+    &lt;url-pattern&gt;/*&lt;/url-pattern&gt;
+&lt;/filter-mapping&gt;
+</programlisting>
+	<para>
+		Adding the master filter enables the following built-in filters.
+	</para>
+	<sect3 id="Seam_Reference_Guide-Seam_servlet_filters-Exception_handling"><title>Exception handling</title>
+	<para>
+		This filter provides the exception mapping functionality in <literal>pages.xml</literal> (almost all applications will need this). It also takes care of rolling back uncommitted transactions when uncaught exceptions occur. (According to the Java EE specification, the web container should do this automatically, but we have found that this behavior cannot be relied upon in all application servers. And it is certainly not required of plain servlet engines like Tomcat.)
+	</para>
+	<para>
+		By default, the exception handling filter will process all requests, however this behavior may be adjusted by adding a <literal>&lt;web:exception-filter&gt;</literal> entry to <literal>components.xml</literal>, as shown in this example:
+	</para>
+<programlisting>&lt;components xmlns="http://jboss.com/products/seam/components"
+            xmlns:core="http://jboss.com/products/seam/core"
+            xmlns:web="http://jboss.com/products/seam/web"
+            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+            xsi:schemaLocation=
+                "http://jboss.com/products/seam/core 
+                                                      http://jboss.com/products/seam/core-1.2.xsd
+                 http://jboss.com/products/seam/components 
+                                                      http://jboss.com/products/seam/components-1.2.xsd
+                 http://jboss.com/products/seam/web 
+                                                      http://jboss.com/products/seam/web-1.2.xsd"&gt;
+
+    &lt;web:exception-filter url-pattern="*.seam"/&gt;
+
+&lt;/components&gt;
+</programlisting>
+	<itemizedlist>
+		<listitem>
+			<para>
+				<literal>url-pattern</literal> &mdash; Used to specify which requests are filtered, the default is all requests.
+			</para>
+		</listitem>
+	</itemizedlist>
+	</sect3><sect3 id="Seam_Reference_Guide-Seam_servlet_filters-Conversation_propagation_with_redirects"><title>Conversation propagation with redirects</title>
+	<para>
+		This filter allows Seam to propagate the conversation context across browser redirects. It intercepts any browser redirects and adds a request parameter that specifies the Seam conversation identifier.
+	</para>
+	<para>
+		The redirect filter will process all requests by default, but this behavior can also be adjusted in <literal>components.xml</literal>:
+	</para>
+<programlisting>&lt;web:redirect-filter url-pattern="*.seam"/&gt;</programlisting>
+	<itemizedlist>
+		<listitem>
+			<para>
+				<literal>url-pattern</literal> &mdash; Used to specify which requests are filtered, the default is all requests.
+			</para>
+		</listitem>
+	</itemizedlist>
+	</sect3><sect3 id="Seam_Reference_Guide-Seam_servlet_filters-Multipart_form_submissions"><title>Multipart form submissions</title>
+	<para>
+		This feature is necessary when using the Seam file upload JSF control. It detects multipart form requests and processes them according to the multipart/form-data specification (RFC-2388). To override the default settings, add the following entry to <literal>components.xml</literal>:
+	</para>
+<programlisting>&lt;web:multipart-filter create-temp-files="true" 
+        max-request-size="1000000" 
+        url-pattern="*.seam"/&gt;
+</programlisting>
+	<itemizedlist>
+		<listitem>
+			<para>
+				<literal>create-temp-files</literal> &mdash; If set to <literal>true</literal>, uploaded files are written to a temporary file (instead of held in memory). This may be an important consideration if large file uploads are expected. The default setting is <literal>false</literal>.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>max-request-size</literal> &mdash; If the size of a file upload request (determined by reading the <literal>Content-Length</literal> header in the request) exceeds this value, the request will be aborted. The default setting is 0 (no size limit).
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>url-pattern</literal> &mdash; Used to specify which requests are filtered, the default is all requests.
+			</para>
+		</listitem>
+	</itemizedlist>
+	</sect3><sect3 id="Seam_Reference_Guide-Seam_servlet_filters-Character_encoding"><title>Character encoding</title>
+	<para>
+		Sets the character encoding of submitted form data.
+	</para>
+	<para>
+		This filter is not installed by default and requires an entry in <literal>components.xml</literal> to enable it:
+	</para>
+<programlisting>&lt;web:character-encoding-filter encoding="UTF-16" 
+        override-client="true" 
+        url-pattern="*.seam"/&gt;
+</programlisting>
+	<itemizedlist>
+		<listitem>
+			<para>
+				<literal>encoding</literal> &mdash; The encoding to use.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>override-client</literal> &mdash; If this is set to <literal>true</literal>, the request encoding will be set to whatever is specified by <literal>encoding</literal> no matter whether the request already specifies an encoding or not. If set to <literal>false</literal>, the request encoding will only be set if the request does not already specify an encoding. The default setting is <literal>false</literal>.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>url-pattern</literal> &mdash; Used to specify which requests are filtered, the default is all requests.
+			</para>
+		</listitem>
+	</itemizedlist>
+	</sect3><sect3 id="Seam_Reference_Guide-Seam_servlet_filters-Context_management_for_custom_servlets"><title>Context management for custom servlets</title>
+	<para>
+		Requests sent direct to some servlet other than the JSF servlet are not processed through the JSF lifecycle, so Seam provides a servlet filter that can be applied to any other servlet that needs access to Seam components.
+	</para>
+	<para>
+		This filter allows custom servlets to interact with the Seam contexts. It sets up the Seam contexts at the beginning of each request, and tears them down at the end of the request. You should make sure that this filter is <emphasis>never</emphasis> applied to the JSF <literal>FacesServlet</literal>. Seam uses the phase listener for context management in a JSF request.
+	</para>
+	<para>
+		This filter is not installed by default and requires an entry in <literal>components.xml</literal> to enable it:
+	</para>
+<programlisting>&lt;web:context-filter url-pattern="/media/*"/&gt;</programlisting>
+	<itemizedlist>
+		<listitem>
+			<para>
+				<literal>url-pattern</literal> &mdash; Used to specify which requests are filtered, the default is all requests. If the url-pattern is specified for the context filter, then the filter will be enabled (unless explicitly disabled).
+			</para>
+		</listitem>
+	</itemizedlist>
+	<para>
+		The context filter expects to find the conversation id of any conversation context in a request parameter named <literal>conversationId</literal>. You are responsible for ensuring that it gets sent in the request.
+	</para>
+	<para>
+		You are also responsible for ensuring propagation of any new conversation id back to the client. Seam exposes the conversation id as a property of the built in component <literal>conversation</literal>.
+	</para>
+	</sect3></sect2><sect2 id="Seam_Reference_Guide-Basic_Seam_configuration-Integrating_Seam_with_your_EJB_container"><title>Integrating Seam with your EJB container</title>
+	<para>
+		We need to apply the <literal>SeamInterceptor</literal> to our Seam components. The simplest way to do this is to add the following interceptor binding to the <literal>&lt;assembly-descriptor&gt;</literal> in <literal>ejb-jar.xml</literal>:
+	</para>
+<programlisting>&lt;interceptor-binding&gt;
+    &lt;ejb-name&gt;*&lt;/ejb-name&gt;
+    &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/interceptor-class&gt;
+&lt;/interceptor-binding&gt;
+</programlisting>
+	<para>
+		Seam needs to know where to go to find session beans in JNDI. One way to do this is specify the <literal>@JndiName</literal> annotation on every session bean Seam component. However, this is quite tedious. A better approach is to specify a pattern that Seam can use to calculate the JNDI name from the EJB name. Unfortunately, there is no standard mapping to global JNDI defined in the EJB3 specification, so this mapping is vendor-specific. We usually specify this option in <literal>components.xml</literal>.
+	</para>
+	<para>
+		For JBoss AS, the following pattern is correct:
+	</para>
+<programlisting>&lt;core:init jndi-name="myEarName/#{ejbName}/local" /&gt;</programlisting>
+	<para>
+		Where <literal>myEarName</literal> is the name of the EAR in which the bean is deployed.
+	</para>
+	<para>
+		Outside the context of an EAR (when using the JBoss Embeddable EJB3 container), the following pattern is the one to use:
+	</para>
+<programlisting>&lt;core:init jndi-name="#{ejbName}/local" /&gt;</programlisting>
+	<para>
+		You will have to experiment to find the right setting for other application servers.</para> 
+	<important>
+	<para>
+	Some servers (such as GlassFish) require you to specify JNDI names for all EJB components explicitly. In this case, you can pick your own pattern.
+	</para>
+</important>
+	</sect2><sect2 id="Seam_Reference_Guide-Basic_Seam_configuration-Using_facelets"><title>Using facelets</title>
+	<para>
+		If you want follow our advice and use facelets instead of JSP, add the following lines to <literal>faces-config.xml</literal>:
+	</para>
+<programlisting>&lt;application&gt;
+    &lt;view-handler&gt;com.sun.facelets.FaceletViewHandler&lt;/view-handler&gt;
+&lt;/application&gt;
+</programlisting>
+	<para>
+		And the following lines to <literal>web.xml</literal>:
+	</para>
+<programlisting>&lt;context-param&gt;
+    &lt;param-name&gt;javax.faces.DEFAULT_SUFFIX&lt;/param-name&gt;
+    &lt;param-value&gt;.xhtml&lt;/param-value&gt;
+&lt;/context-param&gt;
+</programlisting>
+	</sect2><sect2 id="Seam_Reference_Guide-Basic_Seam_configuration-Dont_forget"><title>Don&#39;t forget!</title>
+	<para>
+		There is one final item you need to know about. You must place a <literal>seam.properties</literal>, <literal>META-INF/seam.properties</literal> or <literal>META-INF/components.xml</literal> file in any archive in which your Seam components are deployed (even an empty properties file will do). At startup, Seam will scan any archives with <literal>seam.properties</literal> files for seam components.
+	</para>
+	<para>
+		In a web archive (WAR) file, you must place a <literal>seam.properties</literal> file in the <literal>WEB-INF/classes</literal> directory if you have any Seam components included here.
+	</para>
+<!--	<para>
+		That&#39;s why all the Seam examples have an empty <literal>seam.properties</literal> file. You cannot just delete this file and expect everything to still work!
+	</para> -->
+	<para>
+		<!--You might think this is silly and what kind of idiot framework designers would make an empty file affect the behavior of their software?? Well, -->This is a workaround for a limitation of the JVM; if we did not use this mechanism, our next best option would be to force you to list every component explicitly in <literal>components.xml</literal>. <!-- just like some other competing frameworks do! I think you&#39;ll like our way better. -->
+	</para>
+	</sect2></sect1><sect1 id="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_EE_5"><title>Configuring Seam in Java EE 5</title>
+	<mediaobject>
+		<imageobject role="fo">
+			<imagedata align="center" fileref="images/ee5.png" />
+		</imageobject>
+	<!--	<imageobject role="html">
+			<imagedata align="center" fileref="../shared/images/ee5.png" />
+		</imageobject> -->
+	</mediaobject>
+	<para>
+		If you are running in a Java EE 5 environment, this is all the configuration required to start using Seam!
+	</para>
+	<sect2 id="Seam_Reference_Guide-Configuring_Seam_in_Java_EE_5-Packaging"><title>Packaging</title>
+	<para>
+		Once you have packaged all this stuff together into an EAR, the archive structure will look something like this:
+	</para>
+<programlisting>my-application.ear/
+    jboss-seam.jar
+    el-api.jar
+    el-ri.jar
+    META-INF/
+        MANIFEST.MF
+        application.xml
+    my-application.war/
+        META-INF/
+            MANIFEST.MF
+        WEB-INF/
+            web.xml
+            components.xml
+            faces-config.xml
+            lib/
+                jsf-facelets.jar
+                jboss-seam-ui.jar
+        login.jsp
+        register.jsp
+        ...
+    my-application.jar/
+        META-INF/
+            MANIFEST.MF
+            persistence.xml
+        seam.properties
+        org/
+            jboss/
+                myapplication/
+                    User.class
+                    Login.class
+                    LoginBean.class
+                    Register.class
+                    RegisterBean.class
+                    ...
+</programlisting>
+	<para>
+		You must include <literal>jboss-seam.jar</literal>, <literal>el-api.jar</literal> and <literal>el-ri.jar</literal> in the EAR classpath. Make sure you reference all of these jars from <literal>application.xml</literal>.
+	</para>
+	<para>
+		If you want to use jBPM or Drools, you must include the needed jars in the EAR classpath. Make sure you reference all of the jars from <literal>application.xml</literal>.
+	</para>
+	<para>
+		If you want to use facelets (our recommendation), you must include <literal>jsf-facelets.jar</literal> in the <literal>WEB-INF/lib</literal> directory of the WAR.
+	</para>
+	<para>
+		If you want to use the Seam tag library (most Seam applications do), you must include <literal>jboss-seam-ui.jar</literal> in the <literal>WEB-INF/lib</literal> directory of the WAR. If you want to use the PDF or email tag libraries, you need to put <literal>jboss-seam-pdf.jar</literal> or <literal>jboss-seam-mail.jar</literal> in <literal>WEB-INF/lib</literal>.
+	</para>
+	<para>
+		If you want to use the Seam debug page (only works for applications using facelets), you must include <literal>jboss-seam-debug.jar</literal> in the <literal>WEB-INF/lib</literal> directory of the WAR.
+	</para>
+	<para>
+		Seam ships with several example applications that are deployable in any Java EE container that supports EJB 3.0.
+	</para>
+	<para>
+		I really wish that was all there was to say on the topic of configuration but unfortunately we are only about a third of the way there. <!--If you are too overwhelmed by all this tedious configuration stuff, --> Feel free to skip over the rest of this section and come back to it later.
+	</para>
+	</sect2>
+	</sect1><sect1 id="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container"><title>Configuring Seam in Java SE, with the JBoss Embeddable EJB3 container</title>
+	<para>
+		The JBoss Embeddable EJB3 container lets you run EJB3 components outside the context of the Java EE 5 application server. This is especially, but not only, useful for testing.
+	</para>
+	<para>
+		The Seam booking example application includes a TestNG integration test suite that runs on the Embeddable EJB3 container.
+	</para>
+	<mediaobject>
+		<imageobject role="fo">
+			<imagedata align="center" fileref="images/testng.png" />
+		</imageobject>
+	<!--	<imageobject role="html">
+			<imagedata align="center" fileref="../shared/images/testng.png" />
+		</imageobject> -->
+	</mediaobject> 
+	<para>
+		The booking example application may even be deployed to Tomcat.
+	</para>
+	<mediaobject>
+		<imageobject role="fo">
+			<imagedata align="center" fileref="images/e-ejb3.png" />
+		</imageobject>
+	<!--	<imageobject role="html">
+			<imagedata align="center" fileref="../shared/images/e-ejb3.png" />
+		</imageobject> -->
+	</mediaobject>
+	<sect2 id="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container-Installing_the_Embeddable_EJB3_container"><title>Installing the Embeddable EJB3 container</title>
+	<para>
+		Seam ships with a build of the Embeddable EJB3 container in the <literal>embedded-ejb</literal> directory. To use the Embeddable EJB3 container with Seam, add the <literal>embedded-ejb/conf</literal> directory, and all jars in the <literal>lib</literal> and <literal>embedded-ejb/lib</literal> directories to your classpath. Then, add the following line to <literal>components.xml</literal>:
+	</para>
+<programlisting>&lt;core:ejb /&gt;</programlisting>
+	<para>
+		This setting installs the built-in component named <literal>org.jboss.seam.core.ejb</literal>. This component is responsible for bootstrapping the EJB container when Seam is started, and shutting it down when the web application is undeployed.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container-Configuring_a_datasource_with_the_Embeddable_EJB3_container"><title>Configuring a datasource with the Embeddable EJB3 container</title>
+	<para>
+		You should refer to the Embeddable EJB3 container documentation for more information about configuring the container. You&#39;ll probably at least need to set up your own datasource. Embeddable EJB3 is implemented using the JBoss Microcontainer, so it&#39;s very easy to add new services to the minimal set of services provided by default. For example, I can add a new datasource by putting this <literal>jboss-beans.xml</literal> file in my classpath:
+	</para>
+<programlisting>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+
+&lt;deployment xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+            xsi:schemaLocation="urn:jboss:bean-deployer bean-deployer_1_0.xsd"
+            xmlns="urn:jboss:bean-deployer"&gt;
+
+   &lt;bean name="bookingDatasourceBootstrap"
+        class="org.jboss.resource.adapter.jdbc.local.LocalTxDataSource"&gt;
+      &lt;property name="driverClass"&gt;org.hsqldb.jdbcDriver&lt;/property&gt;
+      &lt;property name="connectionURL"&gt;jdbc:hsqldb:.&lt;/property&gt;
+      &lt;property name="userName"&gt;sa&lt;/property&gt;
+      &lt;property name="jndiName"&gt;java:/bookingDatasource&lt;/property&gt;
+      &lt;property name="minSize"&gt;0&lt;/property&gt;
+      &lt;property name="maxSize"&gt;10&lt;/property&gt;
+      &lt;property name="blockingTimeout"&gt;1000&lt;/property&gt;
+      &lt;property name="idleTimeout"&gt;100000&lt;/property&gt;
+      &lt;property name="transactionManager"&gt;
+        &lt;inject bean="TransactionManager"/&gt;
+      &lt;/property&gt;
+      &lt;property name="cachedConnectionManager"&gt;
+        &lt;inject bean="CachedConnectionManager"/&gt;
+      &lt;/property&gt;
+      &lt;property name="initialContextProperties"&gt;
+        &lt;inject bean="InitialContextProperties"/&gt;
+      &lt;/property&gt;
+   &lt;/bean&gt;
+
+   &lt;bean name="bookingDatasource" class="java.lang.Object"&gt;
+      &lt;constructor factoryMethod="getDatasource"&gt;
+         &lt;factory bean="bookingDatasourceBootstrap"/&gt;
+      &lt;/constructor&gt;
+   &lt;/bean&gt;
+
+&lt;/deployment&gt;
+</programlisting>
+	</sect2><sect2 id="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container-Packaging"><title>Packaging</title>
+	<para>
+		The archive structure of a WAR-based deployment on an servlet engine like Tomcat will look something like this:
+	</para>
+<programlisting>my-application.war/
+    META-INF/
+        MANIFEST.MF
+    WEB-INF/
+        web.xml
+        components.xml
+        faces-config.xml
+        lib/
+            jboss-seam.jar
+            jboss-seam-ui.jar
+            el-api.jar
+            el-ri.jar
+            jsf-facelets.jar
+            myfaces-api.jar
+            myfaces-impl.jar
+            jboss-ejb3.jar
+            jboss-jca.jar
+            jboss-j2ee.jar
+            ...
+            mc-conf.jar/
+                ejb3-interceptors-aop.xml
+                embedded-jboss-beans.xml
+                default.persistence.properties
+                jndi.properties
+                login-config.xml
+                security-beans.xml
+                log4j.xml
+            my-application.jar/
+                META-INF/
+                    MANIFEST.MF
+                    persistence.xml
+                    jboss-beans.xml
+                log4j.xml
+                seam.properties
+                org/
+                    jboss/
+                        myapplication/
+                            User.class
+                            Login.class
+                            LoginBean.class
+                            Register.class
+                            RegisterBean.class
+                            ...
+    login.jsp
+    register.jsp
+    ...
+</programlisting>
+	<para>
+		The <literal>mc-conf.jar</literal> just contains the standard JBoss Microcontainer configuration files for Embeddable EJB3. You will not usually need to edit these files yourself.
+	</para>
+	<para>
+		Most of the Seam example applications may be deployed to Tomcat by running <literal>ant deploy.tomcat</literal>.
+	</para>
+	</sect2></sect1><sect1 id="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_J2EE"><title>Configuring Seam in J2EE</title>
+	<para>
+		Seam is useful even if you are not yet ready to take the plunge into EJB 3.0. In this case you would use Hibernate3 or JPA instead of EJB 3.0 persistence, and plain JavaBeans instead of session beans. You will miss out on some of the nice features of session beans but it will be very easy to migrate to EJB 3.0 when you are ready and, in the meantime, you will be able to take advantage of Seam&#39;s unique declarative state management architecture.
+	</para>
+	<mediaobject>
+		<imageobject role="fo">
+			<imagedata align="center" fileref="images/hibernate-ee.png" />
+		</imageobject>
+	<!--	<imageobject role="html">
+			<imagedata align="center" fileref="../shared/images/hibernate-ee.png" />
+		</imageobject> -->
+	</mediaobject>
+	<para>
+		Seam JavaBean components do not provide declarative transaction demarcation like session beans do. You <emphasis>could</emphasis> manage your transactions manually using the JTA <literal>UserTransaction</literal> (you could even implement your own declarative transaction management in a Seam interceptor). But most applications will use Seam managed transactions when using Hibernate with JavaBeans. Follow the instructions in the persistence chapter to install <literal>TransactionalSeamPhaseListener</literal>.
+	</para>
+	<para>
+		The Seam distribution includes a version of the booking example application that uses Hibernate3 and JavaBeans instead of EJB3, and another version that uses JPA and JavaBeans. These example applications are ready to deploy into any J2EE application server.
+	</para>
+	<sect2 id="Seam_Reference_Guide-Configuring_Seam_in_J2EE-Boostrapping_Hibernate_in_Seam"><title>Boostrapping Hibernate in Seam</title>
+	<para>
+		Seam will bootstrap a Hibernate <literal>SessionFactory</literal> from your <literal>hibernate.cfg.xml</literal> file if you install a built-in component:
+	</para>
+<programlisting>&lt;core:hibernate-session-factory name="hibernateSessionFactory"/&gt;</programlisting>
+	<para>
+		You will also need to configure a <emphasis>managed session</emphasis> if you want a Seam managed Hibernate <literal>Session</literal> to be available via injection.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Configuring_Seam_in_J2EE-Boostrapping_JPA_in_Seam"><title>Boostrapping JPA in Seam</title>
+	<para>
+		Seam will bootstrap a JPA <literal>EntityManagerFactory</literal> from your <literal>persistence.xml</literal> file if you install this built-in component:
+	</para>
+<programlisting>&lt;core:entity-manager-factory name="entityManagerFactory"/&gt;</programlisting>
+	<para>
+		You will also need to configure a <emphasis>managed persistencece context</emphasis> if you want a Seam managed JPA <literal>EntityManager</literal> to be available via injection.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Configuring_Seam_in_J2EE-Packaging"><title>Packaging</title>
+	<para>
+		We can package our application as a WAR, in the following structure:
+	</para>
+<programlisting>my-application.war/
+    META-INF/
+        MANIFEST.MF
+    WEB-INF/
+        web.xml
+        components.xml
+        faces-config.xml
+        lib/
+            jboss-seam.jar
+            jboss-seam-ui.jar
+            el-api.jar
+            el-ri.jar
+            jsf-facelets.jar
+            hibernate3.jar
+            hibernate-annotations.jar
+            ...
+            my-application.jar/
+                META-INF/
+                   MANIFEST.MF
+                seam.properties
+                hibernate.cfg.xml
+                org/
+                    jboss/
+                        myapplication/
+                            User.class
+                            Login.class
+                            Register.class
+                            ...
+    login.jsp
+    register.jsp
+    ...
+</programlisting>
+<para>
+		If we want to deploy Hibernate in a non-J2EE environment like Tomcat or TestNG, we need to do a little bit more work.
+	</para>
+	</sect2>
+	</sect1><sect1 id="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_SE_with_the_JBoss_Microcontainer"><title>Configuring Seam in Java SE, with the JBoss Microcontainer</title>
+	<para>
+		The Seam support for Hibernate and JPA requires JTA and a JCA datasource. If you are running in a non-EE environment like Tomcat or TestNG you can run these services, and Hibernate itself, in the JBoss Microcontainer.
+	</para>
+	<para>
+		You can even deploy the Hibernate and JPA versions of the booking example in Tomcat.
+	</para>
+	<mediaobject>
+		<imageobject role="fo">
+			<imagedata align="center" fileref="images/hibernate-mc.png" />
+		</imageobject>
+	<!--	<imageobject role="html">
+			<imagedata align="center" fileref="../shared/images/hibernate-mc.png" />
+		</imageobject> -->
+	</mediaobject>
+	<para>
+		Seam ships with an example Microcontainer configuration in <literal>microcontainer/conf/jboss-beans.xml</literal> that provides all the things you need to run Seam with Hibernate in any non-EE environment. Just add the <literal>microcontainer/conf</literal> directory, and all jars in the <literal>lib</literal> and <literal>microcontainer/lib</literal> directories to your classpath. Refer to the documentation for the JBoss Microcontainer for more information.
+	</para>
+	<sect2 id="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Microcontainer-Using_Hibernate_and_the_JBoss_Microcontainer"><title>Using Hibernate and the JBoss Microcontainer</title>
+	<para>
+		The built-in Seam component named <literal>org.jboss.seam.core.microcontainer</literal> bootstraps the microcontainer. As before, we probably want to use a Seam managed session.
+	</para>
+<programlisting>&lt;core:microcontainer/&gt;
+
+&lt;core:managed-hibernate-session name="bookingDatabase" auto-create="true"
+    session-factory-jndi-name="java:/bookingSessionFactory"/&gt;
+</programlisting>
+	<para>
+		Where <literal>java:/bookingSessionFactory</literal> is the name of the Hibernate session factory specified in <literal>hibernate.cfg.xml</literal>.
+	</para>
+	<para>
+		You will need to provide a <literal>jboss-beans.xml</literal> file that installs JNDI, JTA, your JCA datasource and Hibernate into the microcontainer:
+	</para>
+<programlisting>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+
+&lt;deployment xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+            xsi:schemaLocation="urn:jboss:bean-deployer bean-deployer_1_0.xsd"
+            xmlns="urn:jboss:bean-deployer"&gt;
+
+   &lt;bean name="Naming" class="org.jnp.server.SingletonNamingServer"/&gt;
+
+   &lt;bean name="TransactionManagerFactory" 
+      class="org.jboss.seam.microcontainer.TransactionManagerFactory"/&gt;
+   &lt;bean name="TransactionManager" class="java.lang.Object"&gt;
+      &lt;constructor factoryMethod="getTransactionManager"&gt;
+         &lt;factory bean="TransactionManagerFactory"/&gt;
+      &lt;/constructor&gt;
+   &lt;/bean&gt;
+
+   &lt;bean name="bookingDatasourceFactory" class="org.jboss.seam.microcontainer.DataSourceFactory"&gt;
+      &lt;property name="driverClass"&gt;org.hsqldb.jdbcDriver&lt;/property&gt;
+      &lt;property name="connectionUrl"&gt;jdbc:hsqldb:.&lt;/property&gt;
+      &lt;property name="userName"&gt;sa&lt;/property&gt;
+      &lt;property name="jndiName"&gt;java:/hibernateDatasource&lt;/property&gt;
+      &lt;property name="minSize"&gt;0&lt;/property&gt;
+      &lt;property name="maxSize"&gt;10&lt;/property&gt;
+      &lt;property name="blockingTimeout"&gt;1000&lt;/property&gt;
+      &lt;property name="idleTimeout"&gt;100000&lt;/property&gt;
+      &lt;property name="transactionManager"&gt;&lt;inject bean="TransactionManager"/&gt;&lt;/property&gt;
+   &lt;/bean&gt;
+   &lt;bean name="bookingDatasource" class="java.lang.Object"&gt;
+      &lt;constructor factoryMethod="getDataSource"&gt;
+         &lt;factory bean="bookingDatasourceFactory"/&gt;
+      &lt;/constructor&gt;
+   &lt;/bean&gt;
+
+   &lt;bean name="bookingSessionFactoryFactory" 
+      class="org.jboss.seam.microcontainer.HibernateFactory"/&gt;
+   &lt;bean name="bookingSessionFactory" class="java.lang.Object"&gt;
+      &lt;constructor factoryMethod="getSessionFactory"&gt;
+         &lt;factory bean="bookingSessionFactoryFactory"/&gt;
+      &lt;/constructor&gt;
+      &lt;depends&gt;bookingDatasource&lt;/depends&gt;
+   &lt;/bean&gt;
+
+&lt;/deployment&gt;
+</programlisting>
+	</sect2><sect2 id="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Microcontainer-Packaging"><title>Packaging</title>
+	<para>
+		The WAR could have the following structure:
+	</para>
+<programlisting>my-application.war/
+    META-INF/
+        MANIFEST.MF
+    WEB-INF/
+        web.xml
+        components.xml
+        faces-config.xml
+        lib/
+            jboss-seam.jar
+            jboss-seam-ui.jar
+            el-api.jar
+            el-ri.jar
+            jsf-facelets.jar
+            hibernate3.jar
+            ...
+            jboss-microcontainer.jar
+            jboss-jca.jar
+            ...
+            myfaces-api.jar
+            myfaces-impl.jar
+            mc-conf.jar/
+                jndi.properties
+                log4j.xml
+            my-application.jar/
+                META-INF/
+                    MANIFEST.MF
+                    jboss-beans.xml
+                seam.properties
+                hibernate.cfg.xml
+                log4j.xml
+                org/
+                    jboss/
+                        myapplication/
+                            User.class
+                            Login.class
+                            Register.class
+                            ...
+    login.jsp
+    register.jsp
+    ...
+</programlisting>
+	</sect2></sect1><sect1 id="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_jBPM_in_Seam"><title>Configuring jBPM in Seam</title>
+	<para>
+		Seam&#39;s jBPM integration is not installed by default, so you will need to enable jBPM by installing a built-in component. You will also need to explicitly list your process and pageflow definitions. In <literal>components.xml</literal>:
+	</para>
+<programlisting>&lt;core:jbpm&gt;
+    &lt;core:pageflow-definitions&gt;
+        &lt;value&gt;createDocument.jpdl.xml&lt;/value&gt;
+        &lt;value&gt;editDocument.jpdl.xml&lt;/value&gt;
+        &lt;value&gt;approveDocument.jpdl.xml&lt;/value&gt;
+    &lt;/core:pageflow-definitions&gt;
+    &lt;core:process-definitions&gt;
+        &lt;value&gt;documentLifecycle.jpdl.xml&lt;/value&gt;
+    &lt;/core:process-definitions&gt;
+&lt;/core:jbpm&gt;
+</programlisting>
+	<para>
+		No further special configuration is needed if you only have pageflows. If you do have business process definitions, you need to provide a jBPM configuration, and a Hibernate configuration for jBPM. The Seam DVD Store demo includes example <literal>jbpm.cfg.xml</literal> and <literal>hibernate.cfg.xml</literal> files that will work with Seam:
+	</para>
+<programlisting>&lt;jbpm-configuration&gt;
+
+  &lt;jbpm-context&gt;
+    &lt;service name="persistence"&gt;
+       &lt;factory&gt;
+          &lt;bean class="org.jbpm.persistence.db.DbPersistenceServiceFactory"&gt;
+             &lt;field name="isTransactionEnabled"&gt;&lt;false/&gt;&lt;/field&gt;
+          &lt;/bean&gt;
+       &lt;/factory&gt;
+    &lt;/service&gt;
+    &lt;service name="message" factory="org.jbpm.msg.db.DbMessageServiceFactory" /&gt;
+    &lt;service name="scheduler" factory="org.jbpm.scheduler.db.DbSchedulerServiceFactory" /&gt;
+    &lt;service name="logging" factory="org.jbpm.logging.db.DbLoggingServiceFactory" /&gt;
+    &lt;service name="authentication" 
+       factory="org.jbpm.security.authentication.DefaultAuthenticationServiceFactory" /&gt;
+  &lt;/jbpm-context&gt;
+
+&lt;/jbpm-configuration&gt;
+</programlisting>
+	<para>
+		The most important thing to notice here is that jBPM transaction control is disabled. Seam or EJB3 should control the JTA transactions.
+	</para>
+	<sect2 id="Seam_Reference_Guide-Configuring_jBPM_in_Seam-Packaging"><title>Packaging</title>
+	<para>
+		There is not yet any well-defined packaging format for jBPM configuration and process/pageflow definition files. In the Seam examples we have decided to simply package all these files into the root of the EAR. In future, we will probably design some other standard packaging format. So the EAR looks something like this:
+	</para>
+<programlisting>my-application.ear/
+    jboss-seam.jar
+    el-api.jar
+    el-ri.jar
+    jbpm-3.1.jar
+    META-INF/
+        MANIFEST.MF
+        application.xml
+    my-application.war/
+        META-INF/
+            MANIFEST.MF
+        WEB-INF/
+            web.xml
+            components.xml
+            faces-config.xml
+            lib/
+                jsf-facelets.jar
+                jboss-seam-ui.jar
+        login.jsp
+        register.jsp
+        ...
+    my-application.jar/
+        META-INF/
+            MANIFEST.MF
+            persistence.xml
+        seam.properties
+        org/
+            jboss/
+                myapplication/
+                    User.class
+                    Login.class
+                    LoginBean.class
+                    Register.class
+                    RegisterBean.class
+                    ...
+    jbpm.cfg.xml
+    hibernate.cfg.xml
+    createDocument.jpdl.xml
+    editDocument.jpdl.xml
+    approveDocument.jpdl.xml
+    documentLifecycle.jpdl.xml
+</programlisting>
+	<para>
+		Remember to add <literal>jbpm-3.1.jar</literal> to the manifest of your EJB-JAR and WAR.
+	</para>
+	</sect2></sect1><sect1 id="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_a_Portal"><title>Configuring Seam in a Portal</title>
+	<para>
+		To run a Seam application as a portlet, you will need to provide certain portlet metadata (<literal>portlet.xml</literal>, etc) in addition to the usual Java EE metadata. See the <literal>examples/portal</literal> directory for an example of the booking demo preconfigured to run on JBoss Portal.
+	</para>
+	<para>
+		In addition, you will need to use a portlet-specific phase listener instead of <literal>SeamPhaseListener</literal> or <literal>TransactionalSeamPhaseListener</literal>. The <literal>SeamPortletPhaseListener</literal> and <literal>TransactionalSeamPortletPhaseListener</literal> are adapted to the portlet lifecycle. I would like to offer my sincerest apologies for the name of that last class. I really could not think of anything better. Sorry.
+	</para>
+	</sect1><sect1 id="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_SFSB_and_Session_Timeouts_in_JBoss_AS"><title>Configuring SFSB and Session Timeouts in JBoss AS</title>
+	<para>
+		It is very important that the timeout for Stateful Session Beans is set higher than the timeout for HTTP Sessions, otherwise SFSB&#39;s may time out before the user&#39;s HTTP session has ended. JBoss Application Server has a default session bean timeout of 30 minutes, which is configured in <literal>server/default/conf/standardjboss.xml</literal> (replace <emphasis>default</emphasis> with your own configuration).
+	</para>
+	<para>
+		The default SFSB timeout can be adjusted by modifying the value of <literal>max-bean-life</literal> in the <literal>LRUStatefulContextCachePolicy</literal> cache configuration:
+	</para>
+<programlisting>
+      &lt;container-cache-conf&gt;
+        &lt;cache-policy&gt;org.jboss.ejb.plugins.LRUStatefulContextCachePolicy&lt;/cache-policy&gt;
+        &lt;cache-policy-conf&gt;
+          &lt;min-capacity&gt;50&lt;/min-capacity&gt;
+          &lt;max-capacity&gt;1000000&lt;/max-capacity&gt;
+          &lt;remover-period&gt;1800&lt;/remover-period&gt;
+
+          &lt;!-- SFSB timeout in seconds; 1800 seconds == 30 minutes --&gt;
+          &lt;max-bean-life&gt;1800&lt;/max-bean-life&gt;  
+          
+          &lt;overager-period&gt;300&lt;/overager-period&gt;
+          &lt;max-bean-age&gt;600&lt;/max-bean-age&gt;
+          &lt;resizer-period&gt;400&lt;/resizer-period&gt;
+          &lt;max-cache-miss-period&gt;60&lt;/max-cache-miss-period&gt;
+          &lt;min-cache-miss-period&gt;1&lt;/min-cache-miss-period&gt;
+          &lt;cache-load-factor&gt;0.75&lt;/cache-load-factor&gt;
+        &lt;/cache-policy-conf&gt;
+      &lt;/container-cache-conf&gt;
+</programlisting>
+	<para>
+		The default HTTP session timeout can be modified in <literal>server/default/deploy/jbossweb-tomcat55.sar/conf/web.xml</literal> for JBoss 4.0.x, or in <literal>server/default/deploy/jboss-web.deployer/conf/web.xml</literal> for JBoss 4.2.x. The following entry in this file controls the default session timeout for all web applications:
+	</para>
+<programlisting>
+   &lt;session-config&gt;
+      &lt;!-- HTTP Session timeout, in minutes --&gt;
+      &lt;session-timeout&gt;30&lt;/session-timeout&gt;
+   &lt;/session-config&gt;        
+        
+</programlisting>
+	<para>
+		To override this value for your own application, simply include this entry in your application&#39;s own <literal>web.xml</literal>.
+	</para>
+	</sect1>
+</chapter>
+


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Configuration.xml
___________________________________________________________________
Name: svn:executable
   + *

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Controls.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Controls.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Controls.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1175 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Seam_Reference_Guide-Seam_JSF_controls">
+	<title>Seam JSF controls</title>
+	<para>
+		Seam includes a number of JSF controls that are useful for working with Seam. These are intended to complement the built-in JSF controls, and controls from other third-party libraries. We recommend the Ajax4JSF and ADF faces (now Trinidad) tag libraries for use with Seam. We do not recommend the use of the Tomahawk tag library.
+	</para>
+	<para>
+		To use these controls, define the "<literal>s</literal>" namespace in your page as follows (facelets only):
+	</para>
+<programlisting>
+&lt;html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:s="http://jboss.com/products/seam/taglib"&gt;
+  
+</programlisting>
+	<para>
+		The ui example demonstrates the use of a number of these tags.
+	</para>
+	<table id="Seam_Reference_Guide-Seam_JSF_controls-Seam_JSF_Control_Reference">
+		<title>Seam JSF Control Reference</title>
+		<tgroup cols="2">
+			<colspec colnum="1" colwidth="1*"></colspec>
+			<colspec colnum="2" colwidth="3*"></colspec>
+			<tbody>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:validate&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							A non-visual control, validates a JSF input field against the bound property using Hibernate Validator.
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<para>
+							None.
+						</para>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+<programlisting>
+&lt;h:inputText id="userName" required="true" value="#{customer.userName}"&gt;
+  &lt;s:validate /&gt;
+&lt;/h:inputText&gt;
+&lt;h:message for="userName" styleClass="error" /&gt;
+</programlisting>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:validateAll&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							A non-visual control, validates all child JSF input fields against their bound properties using Hibernate Validator.
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<para>
+							None.
+						</para>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+<programlisting>
+&lt;s:validateAll&gt;
+  &lt;div class="entry"&gt;
+    &lt;h:outputLabel for="username"&gt;Username:&lt;/h:outputLabel&gt;
+    &lt;h:inputText id="username" value="#{user.username}" required="true"/&gt;
+    &lt;h:message for="username" styleClass="error" /&gt;
+  &lt;/div&gt;
+  &lt;div class="entry"&gt;
+    &lt;h:outputLabel for="password"&gt;Password:&lt;/h:outputLabel&gt;
+    &lt;h:inputSecret id="password" value="#{user.password}" required="true"/&gt;
+    &lt;h:message for="password" styleClass="error" /&gt;
+  &lt;/div&gt;
+  &lt;div class="entry"&gt;
+    &lt;h:outputLabel for="verify"&gt;Verify Password:&lt;/h:outputLabel&gt;
+    &lt;h:inputSecret id="verify" value="#{register.verify}" required="true"/&gt;
+    &lt;h:message for="verify" styleClass="error" /&gt;
+  &lt;/div&gt;
+&lt;/s:validateAll&gt;
+</programlisting>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:formattedText&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							Outputs <emphasis>Seam Text</emphasis>, a rich text markup useful for blogs, wikis and other applications that might use rich text. See the Seam Text chapter for full usage.
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<itemizedlist>
+							<listitem>
+								<para>
+									<literal>value</literal> &mdash; an EL expression specifying the rich text markup to render.
+								</para>
+							</listitem>
+						</itemizedlist>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+<programlisting>&lt;s:formattedText value="#{blog.text}"/&gt;
+</programlisting>
+						<para>
+							<emphasis>Example</emphasis>
+						</para>
+						<mediaobject>
+							<imageobject role="fo">
+								<imagedata align="center" fileref="images/controls-seamtext.png" />
+							</imageobject>
+						<!--	<imageobject role="html">
+								<imagedata align="center" fileref="../shared/images/controls-seamtext.png" />
+							</imageobject> -->
+						</mediaobject>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:convertDateTime&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							Perform date or time conversions in the Seam timezone.
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<para>
+							None.
+						</para>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+<programlisting></programlisting>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:convertEnum&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							Assigns an enum converter to the current component. This is primarily useful for radio button and dropdown controls.
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<para>
+							None.
+						</para>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+<programlisting></programlisting>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:convertEntity&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							Assigns an entity converter to the current component. This is primarily useful for radio button and dropdown controls.
+						</para>
+						<para>
+							The converter works with any entity which has an <literal>@Id</literal> annotation - either simple or composite. If your <emphasis>Managed Persistence Context</emphasis> is not called <literal>entityManager</literal>, then you need to set it in components.xml:
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<para>
+							None.
+						</para>
+						<para>
+							<emphasis>Configuration</emphasis>
+						</para>
+<programlisting>
+  &lt;component name="org.jboss.seam.ui.entityConverter"&gt;
+      &lt;property name="entityManager"&gt;#{em}&lt;/property&gt;
+  &lt;/component&gt;
+</programlisting>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+<programlisting>&lt;h:selectOneMenu value="#{person.continent}" required="true"&gt;
+    &lt;s:selectItems value="#{continents.resultList}" var="continent" label="#{continent.name}" noSelectionLabel="Please Select..."/&gt;
+    &lt;s:convertEntity /&gt;
+&lt;/h:selectOneMenu&gt;
+</programlisting>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:enumItem&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							Creates a <literal>SelectItem</literal> from an enum value.
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<itemizedlist>
+							<listitem>
+								<para>
+									<literal>enumValue</literal> &mdash; the string representation of the enum value.
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>label</literal> &mdash; the label to be used when rendering the <literal>SelectItem</literal>.
+								</para>
+							</listitem>
+						</itemizedlist>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+						<para>
+<programlisting></programlisting>
+						</para>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:selectItems&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							Creates a <literal>List&lt;SelectItem&gt;</literal> from a List, Set, DataModel or Array.
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<itemizedlist>
+							<listitem>
+								<para>
+									<literal>value</literal> &mdash; an EL expression specifying the data that backs the <literal>List&lt;SelectItem&gt;</literal>
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>var</literal> &mdash; defines the name of the local variable that holds the current object during iteration
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>label</literal> &mdash; the label to be used when rendering the <literal>SelectItem</literal>. Can reference the <literal>var</literal> variable
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>disabled</literal> &mdash; if true the <literal>SelectItem</literal> will be rendered disabled. Can reference the <literal>var</literal> variable
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>noSelectionLabel</literal> &mdash; specifies the (optional) label to place at the top of list (if <literal>required="true"</literal> is also specified then selecting this value will cause a validation error)
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>hideNoSelectionLabel</literal> &mdash; if true, the <literal>noSelectionLabel</literal> will be hidden when a value is selected
+								</para>
+							</listitem>
+						</itemizedlist>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+						<para>
+<programlisting>
+
+&lt;h:selectOneMenu value="#{person.age}"  converter="#{converters.ageConverter}"&gt;
+    &lt;s:selectItems value="#{ages}" var="age" label="#{age}" /&gt;
+&lt;/h:selectOneMenu&gt;
+</programlisting>
+						</para>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:graphicImage&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							An extended <literal>&lt;h:graphicImage&gt;</literal> that allows the image to be created in a Seam Component; further transforms can be applied to the image. <emphasis>Facelets only.</emphasis>
+						</para>
+						<para>
+							All attributes for <literal>&lt;h:graphicImage&gt;</literal> are supported, as well as:
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<itemizedlist>
+							<listitem>
+								<para>
+									<literal>value</literal> &mdash; image to display. Can be a path <literal>String</literal> (loaded from the classpath), a <literal>byte[]</literal>, a <literal>java.io.File</literal>, a <literal>java.io.InputStream</literal> or a <literal>java.net.URL</literal>. Currently supported image formats are <literal>image/png</literal>, <literal>image/jpeg</literal> and <literal>image/gif</literal>.
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>fileName</literal> &mdash; if not specified the served image will have a generated file name. If you want to name your file, you should specify it here. This name should be unique
+								</para>
+							</listitem>
+						</itemizedlist>
+						<para>
+							<emphasis>Transformations</emphasis>
+						</para>
+						<para>
+							To apply a transform to the image, you would nest a tag specifying the transform to apply. Seam currently supports these transforms:
+						</para>
+						<variablelist>
+							<varlistentry>
+								<term><literal>&lt;s:transformImageSize&gt;</literal></term>
+								<listitem>
+									<itemizedlist>
+										<listitem>
+											<para>
+												<literal>width</literal> &mdash; new width of the image
+											</para>
+										</listitem>
+										<listitem>
+											<para>
+												<literal>height</literal> &mdash; new height of the image
+											</para>
+										</listitem>
+										<listitem>
+											<para>
+												<literal>maintainRatio</literal> &mdash; if <literal>true</literal>, and <emphasis>one</emphasis> of <literal>width</literal>/<literal>height</literal> are specified, the image will be resized with the dimension not specified being calculated to maintain the aspect ratio.
+											</para>
+										</listitem>
+										<listitem>
+											<para>
+												<literal>factor</literal> &mdash; scale the image by the given factor
+											</para>
+										</listitem>
+									</itemizedlist>
+								</listitem>
+							</varlistentry>
+							<varlistentry>
+								<term><literal>&lt;s:transformImageBlur&gt;</literal></term>
+								<listitem>
+									<itemizedlist>
+										<listitem>
+											<para>
+												<literal>radius</literal> &mdash; perform a convolution blur with the given radius
+											</para>
+										</listitem>
+									</itemizedlist>
+								</listitem>
+							</varlistentry>
+							<varlistentry>
+								<term><literal>&lt;s:transformImageType&gt;</literal></term>
+								<listitem>
+									<itemizedlist>
+										<listitem>
+											<para>
+												<literal>contentType</literal> &mdash; alter the type of the image to either <literal>image/jpeg</literal> or <literal>image/png</literal>
+											</para>
+										</listitem>
+									</itemizedlist>
+								</listitem>
+							</varlistentry>
+						</variablelist>
+						<para>
+							It is easy to create your own transform - create a <literal>UIComponent</literal> which <literal>implements</literal><literal>org.jboss.seam.ui.graphicImage.ImageTransform</literal>. Inside the <literal>applyTransform()</literal>method use <literal>image.getBufferedImage()</literal> to get the original image and <literal>image.setBufferedImage()</literal> to set your transformed image. Transforms are applied in the order specified in the view.
+						</para>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+						<para>
+<programlisting></programlisting>
+						</para>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:decorate&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							"Decorate" a JSF input field when validation fails or when <literal>required="true"</literal> is set.
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<para>
+							None.
+						</para>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+						<para>
+<programlisting></programlisting>
+						</para>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:layoutForm&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							A layout component for producing a "standard" form layout. Each child component will be treated as a row, and if the child is a <literal>&lt;s:decorate&gt;</literal>, additional formatting will be applied: <itemizedlist>
+								<listitem>
+									<para>
+										Label &mdash; if a <literal>label</literal> facet is on the <literal>&lt;s:decorate&gt;</literal> then it&#39;s contents will be used as the label for this field. The labels are rendered right-aligned in a column
+									</para>
+									<para>
+										Some further decoration facets are supported - <literal>beforeLabel</literal>, <literal>afterLabel</literal>, <literal>aroundLabel</literal>, <literal>beforeInvalidLabel</literal>, <literal>afterInvalidLabel</literal> and <literal>aroundInvalidLabel</literal>.
+									</para>
+								</listitem>
+								<listitem>
+									<para>
+										Other text &mdash; if a <literal>belowLabel</literal> facet or/and a <literal>belowField</literal> facet are present on <literal>&lt;s:decorate&gt;</literal> then it&#39;s contents will be placed below the label or the field
+									</para>
+								</listitem>
+								<listitem>
+									<para>
+										Required &mdash; if <literal>required="true"</literal> is set on the field, then the <literal>aroundRequiredField</literal>, <literal>beforeRequiredField</literal>, <literal>afterRequiredField</literal>, <literal>aroundRequiredLabel</literal>, <literal>beforeRequiredLabel</literal> and <literal>afterRequiredLabel</literal> will be applied.
+									</para>
+								</listitem>
+							</itemizedlist>
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<para>
+							None.
+						</para>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+						<para>
+<programlisting>
+&lt;s:layoutForm&gt;
+   &lt;f:facet name="aroundInvalidField"&gt;
+       &lt;s:span styleClass="error"/&gt;
+   &lt;/f:facet&gt;
+   &lt;f:facet name="afterInvalidField"&gt;
+       &lt;s:message /&gt;
+   &lt;/f:facet&gt;
+   &lt;f:facet name="beforeRequiredLabel"&gt;
+   	&lt;s:span&gt;&lowast;&lt;/s:span&gt;
+   &lt;/f:facet&gt;
+   &lt;f:facet name="aroundLabel"&gt;
+   	&lt;s:span style="text-align:right;" /&gt;
+   &lt;/f:facet&gt;
+   &lt;f:facet name="aroundInvalidLabel"&gt;
+   	&lt;s:span style="text-align:right;" styleClass="error" /&gt;
+   &lt;/f:facet&gt;
+   &lt;s:decorate&gt;
+        &lt;f:facet name="label"&gt;
+		    &lt;h:outputText value="Name" /&gt;
+        &lt;/f:facet&gt;
+        &lt;h:inputText value="#{person.name}" required="true"/&gt;
+        &lt;f:facet name="belowField"&gt;
+            &lt;h:outputText styleClass="help" 
+               value="Enter your name as it appears 
+                  on your passport" /&gt;
+        &lt;/f:facet&gt;
+    &lt;/s:decorate&gt;
+&lt;/s:layoutForm&gt;
+</programlisting>
+						</para>
+						<mediaobject>
+							<imageobject role="fo">
+								<imagedata fileref="images/layoutForm-example.png" />
+							</imageobject>
+						<!--	<imageobject role="html">
+								<imagedata fileref="../shared/images/layoutForm-example.png" />
+							</imageobject> -->
+						</mediaobject>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:message&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							"Decorate" a JSF input field with the validation error message.
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<para>
+							None.
+						</para>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+						<para>
+<programlisting></programlisting>
+						</para>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:span&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							Render a HTML <literal>&lt;span&gt;</literal>.
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<para>
+							None.
+						</para>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+						<para>
+<programlisting></programlisting>
+						</para>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:div&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							Render a HTML <literal>&lt;div&gt;</literal>.
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<para>
+							None.
+						</para>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+						<para>
+<programlisting></programlisting>
+						</para>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:fragment&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							A non-rendering component useful for enabling/disabling rendering of it's children.
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<para>
+							None.
+						</para>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+						<para>
+<programlisting></programlisting>
+						</para>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:cache&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							Cache the rendered page fragment using JBoss Cache. Note that <literal>&lt;s:cache&gt;</literal> actually uses the instance of JBoss Cache managed by the built-in <literal>pojoCache</literal> component.
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<itemizedlist>
+							<listitem>
+								<para>
+									<literal>key</literal> &mdash; the key to cache rendered content, often a value expression. For example, if we were caching a page fragment that displays a document, we might use <literal>key="Document-#{document.id}"</literal>.
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>enabled</literal> &mdash; a value expression that determines if the cache should be used.
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>region</literal> &mdash; a JBoss Cache node to use (different nodes can have different expiry policies).
+								</para>
+							</listitem>
+						</itemizedlist>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+						<para>
+<programlisting></programlisting>
+						</para>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:link&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							A link that supports invocation of an action with control over conversation propagation. <emphasis>Does not submit the form.</emphasis>
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<itemizedlist>
+							<listitem>
+								<para>
+									<literal>value</literal> &mdash; the label.
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>action</literal> &mdash; a method binding that specified the action listener.
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>view</literal> &mdash; the JSF view id to link to.
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>fragment</literal> &mdash; the fragment identifier to link to.
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>disabled</literal> &mdash; is the link disabled?
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>propagation</literal> &mdash; determines the conversation propagation style: <literal>begin</literal>, <literal>join</literal>, <literal>nest</literal>, <literal>none</literal> or <literal>end</literal>.
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>pageflow</literal> &mdash; a pageflow definition to begin. (This is only useful when <literal>propagation="begin"</literal> or <literal>propagation="join"</literal>.)
+								</para>
+							</listitem>
+						</itemizedlist>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+						<para>
+<programlisting></programlisting>
+						</para>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:button&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							A button that supports invocation of an action with control over conversation propagation. <emphasis>Does not submit the form.</emphasis>
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<itemizedlist>
+							<listitem>
+								<para>
+									<literal>value</literal> &mdash; the label.
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>action</literal> &mdash; a method binding that specified the action listener.
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>view</literal> &mdash; the JSF view id to link to.
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>fragment</literal> &mdash; the fragment identifier to link to.
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>disabled</literal> &mdash; is the link disabled?
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>propagation</literal> &mdash; determines the conversation propagation style: <literal>begin</literal>, <literal>join</literal>, <literal>nest</literal>, <literal>none</literal> or <literal>end</literal>.
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>pageflow</literal> &mdash; a pageflow definition to begin. (This is only useful when <literal>propagation="begin"</literal> or <literal>propagation="join"</literal>.)
+								</para>
+							</listitem>
+						</itemizedlist>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+						<para>
+<programlisting></programlisting>
+						</para>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:selectDate&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							Displays a dynamic date picker component that selects a date for the specified input field. The body of the <literal>selectDate</literal> element should contain HTML elements, such as text or an image, that prompt the user to click to display the date picker. The date picker <emphasis>must</emphasis> be styled using CSS. An example CSS file can be found in the Seam booking demo as <literal>date.css</literal>, or can be generated using seam-gen. The CSS styles used to control the appearance of the date picker are also described below.
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<itemizedlist>
+							<listitem>
+								<para>
+									<literal>for</literal> &mdash; The id of the input field that the date picker will insert the selected date into.
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>dateFormat</literal> &mdash; The date format string. This should match the date format of the input field.
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>startYear</literal> &mdash; The popup year selector range will start at this year.
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>endYear</literal> &mdash; The popup year selector range will end at this year.
+								</para>
+							</listitem>
+						</itemizedlist>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+						<para>
+<programlisting>
+  &lt;div class="row"&gt;
+    &lt;h:outputLabel for="dob"&gt;Date of birth&lt;em&gt;*&lt;/em&gt;&lt;/h:outputLabel&gt;
+    &lt;h:inputText id="dob" value="#{user.dob}" required="true"&gt;
+      &lt;s:convertDateTime pattern="MM/dd/yyyy"/&gt;
+    &lt;/h:inputText&gt;
+    &lt;s:selectDate for="dob" startYear="1910" endYear="2007"&gt;&lt;img src="img/datepicker.png"/&gt;&lt;/s:selectDate&gt;
+    &lt;div class="validationError"&gt;&lt;h:message for="dob"/&gt;&lt;/div&gt;
+  &lt;/div&gt;           
+</programlisting>
+						</para>
+						<para>
+							<emphasis>Example</emphasis>
+						</para>
+						<mediaobject>
+							<imageobject role="fo">
+								<imagedata align="center" fileref="images/controls-selectdate.png" />
+							</imageobject>
+						<!--	<imageobject role="html">
+								<imagedata align="center" fileref="../shared/images/controls-selectdate.png" />
+							</imageobject> -->
+						</mediaobject>
+						<para>
+							<emphasis>CSS Styling</emphasis>
+						</para>
+						<para>
+							The following list describes the CSS class names that are used to control the style of the selectDate control.
+						</para>
+						<itemizedlist>
+							<listitem>
+								<para>
+									<literal>seam-date</literal> &mdash; This class is applied to the outer <literal>div</literal> containing the popup calendar. (1) It is also applied to the <literal>table</literal> that controls the inner layout of the calendar. (2)
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>seam-date-header</literal> &mdash; This class is applied to the calendar header table row (<literal>tr</literal>) and header table cells (<literal>td</literal>). (3)
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>seam-date-header-prevMonth</literal> &mdash; This class is applied to the "previous month" table cell, (<literal>td</literal>), which when clicked causes the calendar to display the month prior to the one currently displayed. (4)
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>seam-date-header-nextMonth</literal> &mdash; This class is applied to the "next month" table cell, (<literal>td</literal>), which when clicked causes the calendar to display the month following the one currently displayed. (5)
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>seam-date-headerDays</literal> &mdash; This class is applied to the calendar days header row (<literal>tr</literal>), which contains the names of the week days. (6)
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>seam-date-footer</literal> &mdash; This class is applied to the calendar footer row (<literal>tr</literal>), which displays the current date. (7)
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>seam-date-inMonth</literal> &mdash; This class is applied to the table cell (<literal>td</literal>) elements that contain a date within the month currently displayed. (8)
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>seam-date-outMonth</literal> &mdash; This class is applied to the table cell (<literal>td</literal>) elements that contain a date outside of the month currently displayed. (9)
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>seam-date-selected</literal> &mdash; This class is applied to the table cell (<literal>td</literal>) element that contains the currently selected date. (10)
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>seam-date-dayOff-inMonth</literal> &mdash; This class is applied to the table cell (<literal>td</literal>) elements that contain a "day off" date (i.e. weekend days, Saturday and Sunday) within the currently selected month. (11)
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>seam-date-dayOff-outMonth</literal> &mdash; This class is applied to the table cell (<literal>td</literal>) elements that contain a "day off" date (i.e. weekend days, Saturday and Sunday) outside of the currently selected month. (12)
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>seam-date-hover</literal> &mdash; This class is applied to the table cell (<literal>td</literal>) element over which the cursor is hovering. (13)
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>seam-date-monthNames</literal> &mdash; This class is applied to the <literal>div</literal> control that contains the popup month selector. (14)
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>seam-date-monthNameLink</literal> &mdash; This class is applied to the anchor (<literal>a</literal>) controls that contain the popup month names. (15)
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>seam-date-years </literal> &mdash; This class is applied to the <literal>div</literal> control that contains the popup year selector. (16)
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>seam-date-yearLink</literal> &mdash; This class is applied to the anchor (<literal>a</literal>) controls that contain the popup years. (15)
+								</para>
+							</listitem>
+						</itemizedlist>
+						<mediaobject>
+							<imageobject role="fo">
+								<imagedata align="center" fileref="images/controls-selectdatecss.png" />
+							</imageobject>
+						<!--	<imageobject role="html">
+								<imagedata align="center" fileref="../shared/images/controls-selectdatecss.png" />
+							</imageobject> -->
+						</mediaobject>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:conversationPropagation&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							Customize the conversation propagation for a command link or button (or similar JSF control). <emphasis>Facelets only.</emphasis>
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<itemizedlist>
+							<listitem>
+								<para>
+									<literal>propagation</literal> &mdash; determines the conversation propagation style: <literal>begin</literal>, <literal>join</literal>, <literal>nest</literal>, <literal>none</literal> or <literal>end</literal>.
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>pageflow</literal> &mdash; a pageflow definition to begin. (This is only useful when <literal>propagation="begin"</literal> or <literal>propagation="join"</literal>.)
+								</para>
+							</listitem>
+						</itemizedlist>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+						<para>
+<programlisting></programlisting>
+						</para>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:conversationId&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							Add the conversation id to an output link (or similar JSF control). <emphasis>Facelets only.</emphasis>
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<para>
+							None.
+						</para>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+						<para>
+<programlisting></programlisting>
+						</para>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:taskId&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							Add the task id to an output link (or similar JSF control), when the task is available via <literal>#{task}</literal>. <emphasis>Facelets only.</emphasis>
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<para>
+							None.
+						</para>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+						<para>
+<programlisting></programlisting>
+						</para>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:fileUpload&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							Renders a file upload control. This control must be used within a form with an encoding type of <literal>multipart/form-data</literal>, i.e:
+						</para>
+<programlisting>
+                       
+        &lt;h:form enctype="multipart/form-data"&gt;
+                       
+                     
+</programlisting>
+						<para>
+							For multipart requests, the Seam Multipart servlet filter must also be configured in <literal>web.xml</literal>:
+						</para>
+<programlisting>
+                       
+  &lt;filter&gt;
+    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;
+    &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-class&gt;
+  &lt;/filter&gt;
+
+  &lt;filter-mapping&gt;
+    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;
+    &lt;url-pattern&gt;/*&lt;/url-pattern&gt;
+  &lt;/filter-mapping&gt;
+                       
+                     
+</programlisting>
+						<para>
+							<emphasis>Configuration</emphasis>
+						</para>
+						<para>
+							The following configuration options for multipart requests may be configured in components.xml:
+						</para>
+						<itemizedlist>
+							<listitem>
+								<para>
+									<literal>createTempFiles</literal> &mdash; if this option is set to true, uploaded files are streamed to a temporary file instead of in memory.
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>maxRequestSize</literal> &mdash; the maximum size of a file upload request, in bytes.
+								</para>
+							</listitem>
+						</itemizedlist>
+						<para>
+							Here&#39;s an example:
+						</para>
+<programlisting>
+                       
+  &lt;component class="org.jboss.seam.web.MultipartFilter"&gt;
+      &lt;property name="createTempFiles"&gt;true&lt;/property&gt;
+      &lt;property name="maxRequestSize"&gt;1000000&lt;/property&gt;
+  &lt;/component&gt;
+                       
+                     
+</programlisting>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<itemizedlist>
+							<listitem>
+								<para>
+									<literal>data</literal> &mdash; this value binding receives the binary file data. The receiving field should be declared as a <literal>byte[]</literal> or <literal>InputStream</literal> (required).
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>contentType</literal> &mdash; this value binding receives the file&#39;s content type (optional).
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>fileName</literal> &mdash; this value binding receives the filename (optional).
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>accept</literal> &mdash; a comma-separated list of content types to accept, may not be supported by the browser. E.g. <literal>"images/png,images/jpg"</literal>, <literal>"images/*"</literal>.
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>style</literal> &mdash; The control&#39;s style
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>styleClass</literal> &mdash; The control&#39;s style class
+								</para>
+							</listitem>
+						</itemizedlist>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+						<para>
+<programlisting></programlisting>
+						</para>
+					</entry>
+				</row>
+			</tbody>
+		</tgroup>
+	</table>
+</chapter>
+


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Controls.xml
___________________________________________________________________
Name: svn:executable
   + *

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Conversations.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Conversations.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Conversations.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,585 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Seam_Reference_Guide-Conversations_and_workspace_management">
+	<title>Conversations and workspace management</title>
+	<para>
+		It is time to understand Seam&#39;s conversation model in more detail.
+	</para>
+<!--	<para>
+		Historically, the notion of a Seam <emphasis>conversation</emphasis> came about as a merger of three different ideas:
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				The idea of a <emphasis>workspace</emphasis>, which I encountered in a project for the Victorian government in 2002. In this project I was forced to implement workspace management on top of Struts, an experience I pray never to repeat.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				The idea of an <emphasis>application transaction</emphasis> with optimistic semantics, and the realization that existing frameworks based around a stateless architecture could not provide effective management of extended persistence contexts. (The Hibernate team is truly fed up with copping the blame for <literal>LazyInitializationException</literal>s, which are not really Hibernate&#39;s fault, but rather the fault of the extremely limiting persistence context model supported by stateless architectures such as the Spring framework or the traditional <emphasis>stateless session facade</emphasis> (anti)pattern in J2EE.)
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				The idea of a workflow <emphasis>task</emphasis>.
+			</para>
+		</listitem>
+	</itemizedlist>
+	<para>
+		By unifying these ideas and providing deep support in the framework, we have a powerful construct that lets us build richer and more efficient applications with less code than before.
+	</para> -->
+	<section id="Seam_Reference_Guide-Conversations_and_workspace_management-Seams_conversation_model">
+		<title>Seam&#39;s conversation model</title>
+		<para>
+			The examples we have seen so far make use of a very simple conversation model that follows these rules:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					There is always a conversation context active during the apply request values, process validations, update model values, invoke application and render response phases of the JSF request lifecycle.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					At the end of the restore view phase of the JSF request lifecycle, Seam attempts to restore any previous long-running conversation context. If none exists, Seam creates a new temporary conversation context.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					When an <literal>@Begin</literal> method is encountered, the temporary conversation context is promoted to a long running conversation.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					When an <literal>@End</literal> method is encountered, any long-running conversation context is demoted to a temporary conversation.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					At the end of the render response phase of the JSF request lifecycle, Seam stores the contents of a long running conversation context or destroys the contents of a temporary conversation context.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					Any faces request (a JSF postback) will propagate the conversation context. By default, non-faces requests (GET requests, for example) do not propagate the conversation context, but see below for more information on this.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					If the JSF request lifecycle is foreshortened by a redirect, Seam transparently stores and restores the current conversation context&mdash;unless the conversation was already ended via <literal>@End(beforeRedirect=true)</literal>.
+				</para>
+			</listitem>
+		</itemizedlist>
+		<para>
+			Seam transparently propagates the conversation context across JSF postbacks and redirects. If you do not do anything special, a <emphasis>non-faces request</emphasis> (a GET request for example) will not propagate the conversation context and will be processed in a new temporary conversation. This is usually - but not always - the desired behavior.
+		</para>
+		<para>
+			If you want to propagate a Seam conversation across a non-faces request, you need to explicitly code the Seam <emphasis>conversation id</emphasis> as a request parameter:
+		</para>
+<programlisting>&lt;a href="main.jsf?conversationId=#{conversation.id}"&gt;Continue&lt;/a&gt;</programlisting>
+		<para>
+			Or, the more JSF-ish:
+		</para>
+<programlisting>&lt;h:outputLink value="main.jsf"&gt;
+    &lt;f:param name="conversationId" value="#{conversation.id}"/&gt;
+    &lt;h:outputText value="Continue"/&gt;
+&lt;/h:outputLink&gt;
+</programlisting>
+		<para>
+			If you use the Seam tag library, this is equivalent:
+		</para>
+<programlisting>&lt;h:outputLink value="main.jsf"&gt;
+    &lt;s:conversationId/&gt;
+    &lt;h:outputText value="Continue"/&gt;
+&lt;/h:outputLink&gt;
+</programlisting>
+		<para>
+			If you wish to disable propagation of the conversation context for a postback, a similar trick is used:
+		</para>
+<programlisting>&lt;h:commandLink action="main" value="Exit"&gt;
+    &lt;f:param name="conversationPropagation" value="none"/&gt;
+&lt;/h:commandLink&gt;
+</programlisting>
+		<para>
+			If you use the Seam tag library, this is equivalent:
+		</para>
+<programlisting>&lt;h:commandLink action="main" value="Exit"&gt;
+    &lt;s:conversationPropagation type="none"/&gt;
+&lt;/h:commandLink&gt;
+</programlisting>
+		<para>
+			Note that disabling conversation context propagation is absolutely not the same thing as ending the conversation.
+		</para>
+		<para>
+			The <literal>conversationPropagation</literal> request parameter, or the <literal>&lt;s:conversationPropagation&gt;</literal> tag may even be used to begin and end conversation, or begin a nested conversation.
+		</para>
+<programlisting>&lt;h:commandLink action="main" value="Exit"&gt;
+    &lt;s:conversationPropagation type="end"/&gt;
+&lt;/h:commandLink&gt;
+</programlisting>
+<programlisting>&lt;h:commandLink action="main" value="Select Child"&gt;
+    &lt;s:conversationPropagation type="nested"/&gt;
+&lt;/h:commandLink&gt;
+</programlisting>
+<programlisting>&lt;h:commandLink action="main" value="Select Hotel"&gt;
+    &lt;s:conversationPropagation type="begin"/&gt;
+&lt;/h:commandLink&gt;
+</programlisting>
+<programlisting>&lt;h:commandLink action="main" value="Select Hotel"&gt;
+    &lt;s:conversationPropagation type="join"/&gt;
+&lt;/h:commandLink&gt;
+</programlisting>
+		<para>
+			This conversation model makes it easy to build applications which behave correctly with respect to multi-window operation. For many applications, this is all that is needed. Some complex applications have either or both of the following additional requirements:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					A conversation spans many smaller units of user interaction, which execute serially or even concurrently. The smaller <emphasis>nested conversations</emphasis> have their own isolated set of conversation state, and also have access to the state of the outer conversation.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					The user is able to switch between many conversations within the same browser window. This feature is called <emphasis>workspace management</emphasis>.
+				</para>
+			</listitem>
+		</itemizedlist>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Conversations_and_workspace_management-Nested_conversations">
+		<title>Nested conversations</title>
+		<para>
+			A nested conversation is created by invoking a method marked <literal>@Begin(nested=true)</literal> inside the scope of an existing conversation. A nested conversation has its own conversation context, and also has read-only access to the context of the outer conversation. (It can read the outer conversation&#39;s context variables, but not write to them.) When an <literal>@End</literal> is subsequently encountered, the nested conversation will be destroyed, and the outer conversation will resume, by <emphasis>popping</emphasis> the conversation stack. Conversations may be nested to any arbitrary depth.
+		</para>
+		<para>
+			Certain user activity (workspace management, or the back button) can cause the outer conversation to be resumed before the inner conversation is ended. In this case it is possible to have multiple concurrent nested conversations belonging to the same outer conversation. If the outer conversation ends before a nested conversation ends, Seam destroys all nested conversation contexts along with the outer context.
+		</para>
+		<para>
+			A conversation may be thought of as a <emphasis>continuable state</emphasis>. Nested conversations allow the application to capture a consistent continuable state at various points in a user interaction, thus insuring truly correct behavior in the face of backbuttoning and workspace management.
+		</para>
+	   <!-- <para>
+			TODO: an example to show how a nested conversation prevents bad stuff happening when you backbutton.
+		</para> -->
+		<para> 
+			Usually, if a component exists in a parent conversation of the current nested conversation, the nested conversation will use the same instance. Occasionally, it is useful to have a different instance in each nested conversation, so that the component instance that exists in the parent conversation is invisible to its child conversations. You can achieve this behavior by annotating the component <literal>@PerNestedConversation</literal>.
+		</para>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Conversations_and_workspace_management-Starting_conversations_with_GET_requests">
+		<title>Starting conversations with GET requests</title>
+		<para>
+			JSF does not define any kind of action listener that is triggered when a page is accessed via a non-faces request (for example, a HTTP GET request). This can occur if the user bookmarks the page, or if we navigate to the page via an <literal>&lt;h:outputLink&gt;</literal>.
+		</para>
+		<para>
+			Sometimes we want to begin a conversation immediately the page is accessed. Since there is no JSF action method, we can&#39;t solve the problem in the usual way, by annotating the action with <literal>@Begin</literal>.
+		</para>
+		<para>
+			A further problem arises if the page needs some state to be fetched into a context variable. We have already seen two ways to solve this problem. If that state is held in a Seam component, we can fetch the state in a <literal>@Create</literal> method. If not, we can define a <literal>@Factory</literal> method for the context variable.
+		</para>
+		<para>
+			If none of these options works for you, Seam lets you define a <emphasis>page action</emphasis> in the <literal>pages.xml</literal> file.
+		</para>
+<programlisting>&lt;pages&gt;
+    &lt;page view-id="/messageList.jsp" action="#{messageManager.list}"/&gt;
+    ...
+&lt;/pages&gt;
+</programlisting>
+		<para>
+			This action method is called at the beginning of the render response phase, any time the page is about to be rendered. If a page action returns a non-null outcome, Seam will process any appropriate JSF and Seam navigation rules, possibly resulting in a completely different page being rendered.
+		</para>
+		<para>
+			If <emphasis>all</emphasis> you want to do before rendering the page is begin a conversation, you could use a built-in action method that does just that:
+		</para>
+<programlisting>&lt;pages&gt;
+    &lt;page view-id="/messageList.jsp" action="#{conversation.begin}"/&gt;
+    ...
+&lt;/pages&gt;
+</programlisting>
+		<para>
+			Note that you can also call this built-in action from a JSF control, and, similarly, you can use <literal>#{conversation.end}</literal> to end conversations.
+		</para>
+		<para>
+			If you want more control, to join existing conversations or begin a nested conversion, to begin a pageflow or an atomic conversation, you should use the <literal>&lt;begin-conversation&gt;</literal> element.
+		</para>
+<programlisting>&lt;pages&gt;
+    &lt;page view-id="/messageList.jsp"&gt;
+       &lt;begin-conversation nested="true" pageflow="AddItem"/&gt;
+    &lt;page&gt;
+    ...
+&lt;/pages&gt;
+</programlisting>
+		<para>
+			There is also an <literal>&lt;end-conversation&gt;</literal> element.
+		</para>
+<programlisting>&lt;pages&gt;
+    &lt;page view-id="/home.jsp"&gt;
+       &lt;end-conversation/&gt;
+    &lt;page&gt;
+    ...
+&lt;/pages&gt;
+</programlisting>
+		<para>
+			To solve the first problem, we now have five options:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					Annotate the <literal>@Create</literal> method with <literal>@Begin</literal>
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					Annotate the <literal>@Factory</literal> method with <literal>@Begin</literal>
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					Annotate the Seam page action method with <literal>@Begin</literal>
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					Use <literal>&lt;begin-conversation&gt;</literal> in <literal>pages.xml</literal>.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					Use <literal>#{conversation.begin}</literal> as the Seam page action method
+				</para>
+			</listitem>
+		</itemizedlist>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Conversations_and_workspace_management-Using_slink_and_sbutton">
+		<title>Using <literal>&lt;s:link&gt;</literal> and <literal>&lt;s:button&gt;</literal></title>
+		<para>
+			JSF command links always perform a form submission via JavaScript, which breaks the web browser&#39;s "open in new window" or "open in new tab" feature. In plain JSF, you need to use an <literal>&lt;h:outputLink&gt;</literal> if you need this functionality. But there are two major limitations to <literal>&lt;h:outputLink&gt;</literal>.
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					JSF provides no way to attach an action listener to an <literal>&lt;h:outputLink&gt;</literal>.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					JSF does not propagate the selected row of a <literal>DataModel</literal> since there is no actual form submission.
+				</para>
+			</listitem>
+		</itemizedlist>
+		<para>
+			Seam provides the notion of a <emphasis>page action</emphasis> to help solve the first problem, but this does nothing to help us with the second problem. We <emphasis>could</emphasis> work around this by using the RESTful approach of passing a request parameter and requerying for the selected object on the server side. In some cases&mdash;such as the Seam blog example application&mdash;this is indeed the best approach. The RESTful style supports bookmarking, since it does not require server-side state. In other cases, where we don&#39;t care about bookmarks, the use of <literal>@DataModel</literal> and <literal>@DataModelSelection</literal> is just so convenient and transparent!
+		</para>
+		<para>
+			To fill in this missing functionality, and to make conversation propagation even simpler to manage, Seam provides the <literal>&lt;s:link&gt;</literal> JSF tag.
+		</para>
+		<para>
+			The link may specify just the JSF view id:
+		</para>
+<programlisting>&lt;s:link view=“/login.xhtml” value=“Login”/&gt;</programlisting>
+		<para>
+			Or, it may specify an action method (in which case the action outcome determines the page that results):
+		</para>
+<programlisting>&lt;s:link action=“#{login.logout}” value=“Logout”/&gt;</programlisting>
+		<para>
+			If you specify <emphasis>both</emphasis> a JSF view id and an action method, the &#39;view&#39; will be used <emphasis>unless</emphasis> the action method returns a non-null outcome:
+		</para>
+<programlisting>&lt;s:link view="/loggedOut.xhtml"  action=“#{login.logout}” value=“Logout”/&gt;</programlisting>
+		<para>
+			The link automatically propagates the selected row of a <literal>DataModel</literal> using inside <literal>&lt;h:dataTable&gt;</literal>:
+		</para>
+<programlisting>&lt;s:link view=“/hotel.xhtml” action=“#{hotelSearch.selectHotel}” value=“#{hotel.name}”/&gt;</programlisting>
+		<para>
+			You can leave the scope of an existing conversation:
+		</para>
+<programlisting>&lt;s:link view=“/main.xhtml” propagation=“none”/&gt;</programlisting>
+		<para>
+			You can begin, end, or nest conversations:
+		</para>
+<programlisting>&lt;s:link action=“#{issueEditor.viewComment}” propagation=“nest”/&gt;</programlisting>
+		<para>
+			If the link begins a conversation, you can even specify a pageflow to be used:
+		</para>
+<programlisting>&lt;s:link action=“#{documentEditor.getDocument}” propagation=“begin” 
+        pageflow=“EditDocument”/&gt;
+</programlisting>
+		<para>
+			The <literal>taskInstance</literal> attribute if for use in jBPM task lists:
+		</para>
+<programlisting>&lt;s:link action=“#{documentApproval.approveOrReject}” taskInstance=“#{task}”/&gt;</programlisting>
+		<para>
+			(See the DVD Store demo application for examples of this.)
+		</para>
+		<para>
+			Finally, if you need the <emphasis>link</emphasis> to be rendered as a button, use <literal>&lt;s:button&gt;</literal>:
+		</para>
+<programlisting>&lt;s:button action=“#{login.logout}” value=“Logout”/&gt;</programlisting>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Conversations_and_workspace_management-Success_messages">
+		<title>Success messages</title>
+		<para>
+			It is quite common to display a message to the user indicating success or failure of an action. It is convenient to use a JSF <literal>FacesMessage</literal> for this. Unfortunately, a successful action often requires a browser redirect, and JSF does not propagate faces messages across redirects. This makes it quite difficult to display success messages in plain JSF.
+		</para>
+		<para>
+			The built in conversation-scoped Seam component named <literal>facesMessages</literal> solves this problem. (You must have the Seam redirect filter installed.)
+		</para>
+<programlisting>@Name("editDocumentAction")
+ at Stateless
+public class EditDocumentBean implements EditDocument {
+    @In EntityManager em;
+    @In Document document;
+    @In FacesMessages facesMessages;
+    
+    public String update() {
+        em.merge(document);
+        facesMessages.add("Document updated");
+    }
+}
+</programlisting>
+		<para>
+			Any message added to <literal>facesMessages</literal> is used in the very next render response phase for the current conversation. This even works when there is no long-running conversation since Seam preserves even temporary conversation contexts across redirects.
+		</para>
+		<para>
+			You can even include JSF EL expressions in a faces message summary:
+		</para>
+<programlisting>facesMessages.add("Document #{document.title} was updated");</programlisting>
+		<para>
+			You may display the messages in the usual way, for example:
+		</para>
+<programlisting>&lt;h:messages globalOnly="true"/&gt;</programlisting>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Conversations_and_workspace_management-Using_an_explicit_conversation_id">
+		<title>Using an <emphasis>explicit</emphasis> conversation ID</title>
+		<para>
+			Ordinarily, Seam generates a meaningless unique ID for each conversation in each session. You can customize the id value when you begin the conversation.
+		</para>
+		<para>
+			This feature can be used to customize the conversation id generation algorithm like so:
+		</para>
+<programlisting>@Begin(id="#{myConversationIdGenerator.nextId}") 
+public void editHotel() { ... }
+</programlisting>
+		<para>
+			Or it can be used to assign a meaningful conversation id:
+		</para>
+<programlisting>@Begin(id="hotel#{hotel.id}") 
+public String editHotel() { ... }
+</programlisting>
+<programlisting>@Begin(id="hotel#{hotelsDataModel.rowData.id}") 
+public String selectHotel() { ... }
+</programlisting>
+<programlisting>@Begin(id="entry#{params[&#39;blogId&#39;]}")
+public String viewBlogEntry() { ... }
+</programlisting>
+<programlisting>@BeginTask(id="task#{taskInstance.id}") 
+public String approveDocument() { ... }
+</programlisting>
+		<para>
+			Clearly, these example result in the same conversation id every time a particular hotel, blog or task is selected. So what happens if a conversation with the same conversation id already exists when the new conversation begins? Well, Seam detects the existing conversation and redirects to that conversation without running the <literal>@Begin</literal> method again. This feature helps control the number of workspaces that are created when using workspace management.
+		</para>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Conversations_and_workspace_management-Workspace_management">
+		<title>Workspace management</title>
+		<para>
+			Workspace management is the ability to <emphasis>switch</emphasis> conversations in a single window. Seam makes workspace management completely transparent at the level of the Java code. To enable workspace management, all you need to do is:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					Provide <emphasis>description</emphasis> text for each view ID (when using JSF or Seam navigation rules) or page node (when using jPDL pageflows). This description text is displayed to the user by the workspace switchers.
+				</para>
+			</listitem>
+			<listitem>
+				<para>Include one or more of the standard workspace switcher JSP or facelets fragments in your pages. The standard fragments support workspace management via a drop down menu, a list of conversations, or breadcrumbs.
+				</para>
+			</listitem>
+		</itemizedlist>
+		<section id="Seam_Reference_Guide-Workspace_management-Workspace_management_and_JSF_navigation">
+			<title>Workspace management and JSF navigation</title>
+			<para>
+				When you use JSF or Seam navigation rules, Seam switches to a conversation by restoring the current <literal>view-id</literal> for that conversation. The descriptive text for the workspace is defined in a file called <literal>pages.xml</literal> that Seam expects to find in the <literal>WEB-INF</literal> directory, right next to <literal>faces-config.xml</literal>:
+			</para>
+<programlisting>&lt;pages&gt;
+    &lt;page view-id="/main.xhtml"&gt;Search hotels: #{hotelBooking.searchString}&lt;/page&gt;
+    &lt;page view-id="/hotel.xhtml"&gt;View hotel: #{hotel.name}&lt;/page&gt;
+    &lt;page view-id="/book.xhtml"&gt;Book hotel: #{hotel.name}&lt;/page&gt;
+    &lt;page view-id="/confirm.xhtml"&gt;Confirm: #{booking.description}&lt;/page&gt;
+&lt;/pages&gt;
+</programlisting>
+<note>
+			<para>
+				Note that if this file is missing, the Seam application will continue to work perfectly, the only missing functionality will be the ability to switch workspaces.
+			</para>
+		</note>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Workspace_management-Workspace_management_and_jPDL_pageflow">
+			<title>Workspace management and jPDL pageflow</title>
+			<para>
+				When you use a jPDL pageflow definition, Seam switches to a conversation by restoring the current jBPM process state. This is a more flexible model since it allows the same <literal>view-id</literal> to have different descriptions depending upon the current <literal>&lt;page&gt;</literal> node. The description text is defined by the <literal>&lt;page&gt;</literal> node:
+			</para>
+<programlisting>&lt;pageflow-definition name="shopping"&gt;
+
+   &lt;start-state name="start"&gt;
+      &lt;transition to="browse"/&gt;
+   &lt;/start-state&gt;
+   
+   &lt;page name="browse" view-id="/browse.xhtml"&gt;
+      &lt;description&gt;DVD Search: #{search.searchPattern}&lt;/description&gt;
+      &lt;transition to="browse"/&gt;
+      &lt;transition name="checkout" to="checkout"/&gt;
+   &lt;/page&gt;
+   
+   &lt;page name="checkout" view-id="/checkout.xhtml"&gt;
+      &lt;description&gt;Purchase: $#{cart.total}&lt;/description&gt;
+      &lt;transition to="checkout"/&gt;
+      &lt;transition name="complete" to="complete"/&gt;
+   &lt;/page&gt;
+   
+   &lt;page name="complete" view-id="/complete.xhtml"&gt;
+      &lt;end-conversation /&gt;
+   &lt;/page&gt;
+   
+&lt;/pageflow-definition&gt;
+</programlisting>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Workspace_management-The_conversation_switcher">
+			<title>The conversation switcher</title>
+			<para>
+				Include the following fragment in your JSP or facelets page to get a drop-down menu that lets you switch to any current conversation, or to any other page of the application:
+			</para>
+<programlisting>&lt;h:selectOneMenu value="#{switcher.conversationIdOrOutcome}"&gt;
+    &lt;f:selectItem itemLabel="Find Issues" itemValue="findIssue"/&gt;
+    &lt;f:selectItem itemLabel="Create Issue" itemValue="editIssue"/&gt;
+    &lt;f:selectItems value="#{switcher.selectItems}"/&gt;
+&lt;/h:selectOneMenu&gt;
+&lt;h:commandButton action="#{switcher.select}" value="Switch"/&gt;
+</programlisting>
+			<para>
+				In this example, we have a menu that includes an item for each conversation, together with two additional items that let the user begin a new conversation.
+			</para>
+			<mediaobject>
+				<imageobject role="fo">
+					<imagedata align="center" fileref="images/switcher.png" />
+				</imageobject>
+			<!--	<imageobject role="html">
+					<imagedata align="center" fileref="../shared/images/switcher.png" />
+				</imageobject> -->
+			</mediaobject>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Workspace_management-The_conversation_list">
+			<title>The conversation list</title>
+			<para>
+				The conversation list is very similar to the conversation switcher, except that it is displayed as a table:
+			</para>
+<programlisting>&lt;h:dataTable value="#{conversationList}" var="entry"
+        rendered="#{not empty conversationList}"&gt;
+    &lt;h:column&gt;
+        &lt;f:facet name="header"&gt;Workspace&lt;/f:facet&gt;
+        &lt;h:commandLink action="#{entry.select}" value="#{entry.description}"/&gt;
+        &lt;h:outputText value="[current]" rendered="#{entry.current}"/&gt;
+    &lt;/h:column&gt;
+    &lt;h:column&gt;
+        &lt;f:facet name="header"&gt;Activity&lt;/f:facet&gt;
+        &lt;h:outputText value="#{entry.startDatetime}"&gt;
+            &lt;f:convertDateTime type="time" pattern="hh:mm a"/&gt;
+        &lt;/h:outputText&gt;
+        &lt;h:outputText value=" - "/&gt;
+        &lt;h:outputText value="#{entry.lastDatetime}"&gt;
+            &lt;f:convertDateTime type="time" pattern="hh:mm a"/&gt;
+        &lt;/h:outputText&gt;
+    &lt;/h:column&gt;
+    &lt;h:column&gt;
+        &lt;f:facet name="header"&gt;Action&lt;/f:facet&gt;
+        &lt;h:commandButton action="#{entry.select}" value="#{msg.Switch}"/&gt;
+        &lt;h:commandButton action="#{entry.destroy}" value="#{msg.Destroy}"/&gt;
+    &lt;/h:column&gt;
+&lt;/h:dataTable&gt;
+</programlisting>
+			<para>
+				We imagine that you will want to customize this for your own application.
+			</para>
+			<mediaobject>
+				<imageobject role="fo">
+					<imagedata align="center" fileref="images/list.png" />
+				</imageobject>
+			<!--	<imageobject role="html">
+					<imagedata align="center" fileref="../shared/images/list.png" />
+				</imageobject> -->
+			</mediaobject>
+			<para>
+				The conversation list is nice, but it takes up a lot of space on the page, so you probably do not want to put it on <emphasis>every</emphasis> page.
+			</para>
+			<para>
+				Notice that the conversation list lets the user destroy workspaces.
+			</para>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Workspace_management-Breadcrumbs">
+			<title>Breadcrumbs</title>
+			<para>
+				Breadcrumbs are useful in applications which use a nested conversation model. The breadcrumbs are a list of links to conversations in the current conversation stack:
+			</para>
+<programlisting>&lt;t:dataList value="#{conversationStack}" var="entry"&gt;
+    &lt;h:outputText value=" | "/&gt; 
+    &lt;h:commandLink value="#{entry.description}" action="#{entry.select}"/&gt;
+&lt;/t:dataList&gt;
+</programlisting>
+			<!--<para>
+				Notice that here we are using the MyFaces <literal>&lt;t:dataList&gt;</literal> component, since JSF amazingly does not provide any standard component for looping.
+			</para>-->
+			<mediaobject>
+				<imageobject role="fo">
+					<imagedata align="center" fileref="images/breadcrumbs.png" />
+				</imageobject>
+			<!--	<imageobject role="html">
+					<imagedata align="center" fileref="../shared/images/breadcrumbs.png" />
+				</imageobject> -->
+			</mediaobject>
+
+		<para>
+			Please refer to the Seam Issue Tracker demo to see all this functionality in action!
+		</para>
+		</section>
+
+	</section>
+	
+	<section id="Seam_Reference_Guide-Conversations_and_workspace_management-Conversational_components_and_JSF_component_bindings">
+		<title>Conversational components and JSF component bindings</title>
+		<para>
+			Conversational components have one minor limitation: they cannot be used to hold bindings to JSF components. (We generally prefer not to use this feature of JSF unless absolutely necessary, since it creates a hard dependency from application logic to the view.) On a postback request, component bindings are updated during the Restore View phase, before the Seam conversation context has been restored.
+		</para>
+		<para>
+			To work around this use an event scoped component to store the component bindings and inject it into the conversation scoped component that requires it.
+		</para>
+<programlisting>@Name("grid")
+ at Scope(ScopeType.EVENT)
+public class Grid
+{
+    private HtmlPanelGrid htmlPanelGrid;
+
+    // getters and setters
+    ...
+}
+</programlisting>
+<programlisting>@Name("gridEditor")
+ at Scope(ScopeType.CONVERSATION)
+public class GridEditor
+{
+    @In(required=false)
+    private Grid grid;
+    
+    ...
+}
+</programlisting>
+	</section>
+
+</chapter>
+


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Conversations.xml
___________________________________________________________________
Name: svn:executable
   + *

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Drools.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Drools.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Drools.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,213 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
+
+<chapter id="drools">
+    <title>Seam and JBoss Rules</title>
+    
+    <para>
+        Seam makes it easy to call JBoss Rules (Drools) rulebases from Seam
+        components or jBPM process definitions.
+    </para>
+    
+    <section>
+        <title>Installing rules</title>
+        
+        <para>
+            The first step is to make an instance of <literal>org.drools.RuleBase</literal>
+            available in a Seam context variable. For testing purposes, Seam provides a built-in component
+            that compiles a static set of rules from the classpath. You can install
+            this component via <literal>components.xml</literal>:
+        </para>
+
+        <programlisting role="XML"><![CDATA[<drools:rule-base name="policyPricingRules">
+    <drools:rule-files>
+        <value>policyPricingRules.drl</value>
+    </drools:rule-files>
+</drools:rule-base>]]></programlisting>
+
+         <para>
+             This component compiles rules from a set of <literal>.drl</literal>
+             files and caches an instance of <literal>org.drools.RuleBase</literal>
+             in the Seam <literal>APPLICATION</literal> context. Note that it is 
+             quite likely that you will need to install multiple rule bases in a 
+             rule-driven application.
+         </para>
+         
+         <para>
+             If you want to use a Drools DSL, you also need to specify the DSL
+             definition:
+         </para>
+         
+        <programlisting role="XML"><![CDATA[<drools:rule-base name="policyPricingRules" dsl-file="policyPricing.dsl">
+    <drools:rule-files>
+        <value>policyPricingRules.drl</value>
+    </drools:rule-files>
+</drools:rule-base>]]></programlisting>
+
+        <para>
+        In most rules-driven applications,
+            rules need to be dynamically deployable, so a production application will want to use a
+            Drools RuleAgent to manage the RuleBase.  The RuleAgent can connect to a Drools rule server (BRMS) 
+            or hot deploy rules packages from a local file repository.  The RulesAgent-managed RuleBase is
+            also configurable in <literal>components.xml</literal>:
+        </para>
+        
+                <programlisting role="XML"><![CDATA[<drools:rule-agent name="insuranceRules" 
+                    configurationFile="/WEB-INF/deployedrules.properties" />]]></programlisting>
+        
+        <para>The properties file contains properties specific to the RulesAgent. Here is an example configuration file from the
+        Drools example distribution.</para>
+        
+                <programlisting>newInstance=true
+url=http://localhost:8080/drools-jbrms/org.drools.brms.JBRMS/package/org.acme.insurance/fmeyer
+localCacheDir=/Users/fernandomeyer/projects/jbossrules/drools-examples/drools-examples-brms/cache
+poll=30
+name=insuranceconfig</programlisting>
+        
+        
+        <para>It is also possible to configure the options on the component directly, bypassing the configuration file.</para>
+
+       <programlisting role="XML"><![CDATA[<drools:rule-agent name="insuranceRules"
+   url="http://localhost:8080/drools-jbrms/org.drools.brms.JBRMS/package/org.acme.insurance/fmeyer"
+   local-cache-dir="/Users/fernandomeyer/projects/jbossrules/drools-examples/drools-examples-brms/cache"
+   poll="30"
+   configuration-name="insuranceconfig" />]]></programlisting>
+        
+         <para>
+             Next, we need to make an instance of <literal>org.drools.WorkingMemory</literal>
+             available to each conversation. (Each <literal>WorkingMemory</literal>
+             accumulates facts relating to the current conversation.)
+         </para>
+        
+         <programlisting role="XML"><![CDATA[<drools:managed-working-memory name="policyPricingWorkingMemory" auto-create="true" rule-base="#{policyPricingRules}"/>]]></programlisting>
+
+         <para>
+             Notice that we gave the <literal>policyPricingWorkingMemory</literal> a
+             reference back to our rule base via the <literal>ruleBase</literal>
+             configuration property.
+         </para>
+         
+     </section>
+     
+     <section>
+         <title>Using rules from a Seam component</title>
+         
+         <para>
+             We can now inject our <literal>WorkingMemory</literal> into any Seam component,
+             assert facts, and fire rules:
+         </para>
+         
+         <programlisting role="JAVA"><![CDATA[@In WorkingMemory policyPricingWorkingMemory;
+
+ at In Policy policy;
+ at In Customer customer;
+
+public void pricePolicy() throws FactException
+{
+    policyPricingWorkingMemory.assertObject(policy);
+    policyPricingWorkingMemory.assertObject(customer);
+    policyPricingWorkingMemory.fireAllRules();
+}]]></programlisting>
+     
+     </section>
+     
+     <section>
+         <title>Using rules from a jBPM process definition</title>
+         
+         <para>
+             You can even allow a rule base to act as a jBPM action handler, decision
+             handler, or assignment handler&#8212;in either a pageflow or business
+             process definition.
+         </para>
+         
+         <programlisting role="XML"><![CDATA[<decision name="approval">
+         
+    <handler class="org.jboss.seam.drools.DroolsDecisionHandler">
+        <workingMemoryName>orderApprovalRulesWorkingMemory</workingMemoryName>
+        <assertObjects>
+            <element>#{customer}</element>
+            <element>#{order}</element>
+            <element>#{order.lineItems}</element>
+        </assertObjects>
+    </handler>
+    
+    <transition name="approved" to="ship">
+        <action class="org.jboss.seam.drools.DroolsActionHandler">
+            <workingMemoryName>shippingRulesWorkingMemory</workingMemoryName>
+            <assertObjects>
+                <element>#{customer}</element>
+                <element>#{order}</element>
+                <element>#{order.lineItems}</element>
+            </assertObjects>
+        </action>
+    </transition>
+    
+    <transition name="rejected" to="cancelled"/>
+    
+</decision>]]></programlisting>
+
+         <para>
+             The <literal>&lt;assertObjects&gt;</literal> element specifies EL expressions that
+             return an object or collection of objects to be asserted as facts into the 
+             <literal>WorkingMemory</literal>.
+         </para>
+         
+         <para>
+             There is also support for using Drools for jBPM task assignments:
+         </para>
+         
+         <programlisting role="XML"><![CDATA[<task-node name="review">
+    <task name="review" description="Review Order">
+        <assignment handler="org.jboss.seam.drools.DroolsAssignmentHandler">
+            <workingMemoryName>orderApprovalRulesWorkingMemory</workingMemoryName>
+            <assertObjects>
+                <element>#{actor}</element>
+                <element>#{customer}</element>
+                <element>#{order}</element>
+                <element>#{order.lineItems}</element>
+            </assertObjects>
+        </assignment>
+    </task>
+    <transition name="rejected" to="cancelled"/>
+    <transition name="approved" to="approved"/>
+</task-node>]]></programlisting>
+
+         <para>
+             Certain objects are available to the rules as Drools globals, namely
+             the jBPM <literal>Assignable</literal>, as <literal>assignable</literal>
+             and a Seam <literal>Decision</literal> object, as <literal>decision</literal>.
+             Rules which handle decisions should call <literal>decision.setOutcome("result")</literal>
+             to determine the result of the decision. Rules which perform assignments should
+             set the actor id using the <literal>Assignable</literal>.
+         </para>
+         
+         <programlisting><![CDATA[package org.jboss.seam.examples.shop
+
+import org.jboss.seam.drools.Decision
+
+global Decision decision
+
+rule "Approve Order For Loyal Customer"
+  when
+    Customer( loyaltyStatus == "GOLD" )
+    Order( totalAmount <= 10000 )
+  then
+    decision.setOutcome("approved");
+end]]></programlisting>
+
+         <programlisting><![CDATA[package org.jboss.seam.examples.shop
+
+import org.jbpm.taskmgmt.exe.Assignable
+
+global Assignable assignable
+
+rule "Assign Review For Small Order"
+  when
+    Order( totalAmount <= 100 )
+  then
+    assignable.setPooledActors( new String[] {"reviewers"} );
+end]]></programlisting>
+
+     </section>
+     
+</chapter>


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Drools.xml
___________________________________________________________________
Name: svn:executable
   + *

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Elenhancements.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Elenhancements.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Elenhancements.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,85 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Seam_Reference_Guide-Expression_language_enhancements">
+	<title>Expression language enhancements</title>
+	<para>
+		The standard Unified Expression Language (EL) assumes that any parameters to a method expression will be provided by Java code. This means that a method with parameters cannot be used as a JSF method binding. Seam provides an enhancement to the EL that allows parameters to be included in a method expression itself. This applies to <emphasis>any</emphasis> Seam method expression, including any JSF method binding, for example:
+	</para>
+<programlisting>&lt;s:commandButton action="#{hotelBooking.bookHotel(hotel)}" value="Book Hotel"/&gt;</programlisting>
+	<section id="Seam_Reference_Guide-Expression_language_enhancements-Configuration">
+		<title>Configuration</title>
+		<para>
+			To use this feature in Facelets, you will need to declare a special view handler, <literal>SeamFaceletViewHandler</literal> in <literal>faces-config.xml</literal>.
+		</para>
+<programlisting>&lt;faces-config&gt;
+    &lt;application&gt;
+        &lt;view-handler&gt;org.jboss.seam.ui.facelet.SeamFaceletViewHandler&lt;/view-handler&gt;
+    &lt;/application&gt;
+&lt;/faces-config&gt;
+</programlisting>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Expression_language_enhancements-Usage">
+		<title>Usage</title>
+		<para>
+			Parameters are surrounded by parentheses, and separated by commas:
+		</para>
+<programlisting>&lt;h:commandButton action="#{hotelBooking.bookHotel(hotel, user)}" value="Book Hotel"/&gt;</programlisting>
+		<para>
+			The parameters <literal>hotel</literal> and <literal>user</literal> will be evaluated as value expressions and passed to the <literal>bookHotel()</literal> method of the component. This gives you an alternative to the use of <literal>@In</literal>.
+		</para>
+		<para>
+			Any value expression may be used as a parameter:
+		</para>
+<programlisting>&lt;h:commandButton action="#{hotelBooking.bookHotel(hotel.id, user.username)}" value="Book Hotel"/&gt;</programlisting>
+		<para>
+			You may even pass literal strings using single or double quotes:
+		</para>
+<programlisting>&lt;h:commandLink action=”#{printer.println( ‘Hello world!’ )}” value=”Hello”/&gt;</programlisting>
+<programlisting>&lt;h:commandLink action=’#{printer.println( “Hello again” )}’ value=’Hello’/&gt;</programlisting>
+		<para>
+			You might even want to use this notation for all your action methods, even when you do not have parameters to pass. This improves readability by making it clear that the expression is a method expression and not a value expression:
+		</para>
+<programlisting>&lt;s:link value="Cancel" action="#{hotelBooking.cancel()}"/&gt;</programlisting>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Expression_language_enhancements-Limitations">
+		<title>Limitations</title>
+		<para>
+			Please be aware of the following limitations:
+		</para>
+		<section id="Seam_Reference_Guide-Limitations-Incompatibility_with_JSP_2.1">
+			<title>Incompatibility with JSP 2.1</title>
+			<para>
+				This extension is not currently compatible with JSP 2.1. So if you want to use this extension with JSF 1.2, you will need to use Facelets. The extension works correctly with JSP 2.0.
+			</para>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Limitations-Calling_a_MethodExpression_from_Java_code">
+			<title>Calling a <literal>MethodExpression</literal> from Java code</title>
+			<para>
+				Normally, when a <literal>MethodExpression</literal> or <literal>MethodBinding</literal> is created, the parameter types are passed in by JSF. In the case of a method binding, JSF assumes that there are no parameters to pass. With this extension, we can’t know the parameter types until after the expression has been evaluated. This has two minor consequences:
+			</para>
+			<itemizedlist>
+				<listitem>
+					<para>
+						When you invoke a <literal>MethodExpression</literal> in Java code, parameters you pass may be ignored. Parameters defined in the expression will take precedence.
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						Ordinarily, it is safe to call <literal>methodExpression.getMethodInfo().getParamTypes()</literal> at any time. For an expression with parameters, you must first invoke the <literal>MethodExpression</literal> before calling <literal>getParamTypes()</literal>.
+					</para>
+				</listitem>
+			</itemizedlist>
+			<para>
+				Both of these cases are exceedingly rare and only apply when you want to invoke the <literal>MethodExpression</literal> by hand in Java code.
+			</para>
+		</section>
+
+	</section>
+
+</chapter>
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Events.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Events.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Events.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,732 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Seam_Reference_Guide-Events_interceptors_and_exception_handling">
+	<title>Events, interceptors and exception handling</title>
+	<para>
+		Complementing the contextual component model, there are two further basic concepts that facilitate the extreme loose-coupling that is the distinctive feature of Seam applications. The first is a strong event model where events may be mapped to event listeners via JSF-like method binding expressions. The second is the pervasive use of annotations and interceptors to apply cross-cutting concerns to components which implement business logic.
+	</para>
+	<sect1 id="Seam_Reference_Guide-Events_interceptors_and_exception_handling-Seam_events"><title>Seam events</title>
+	<para>
+		The Seam component model was developed for use with <emphasis>event-driven applications</emphasis>, specifically to enable the development of fine-grained, loosely-coupled components in a fine-grained eventing model. Events in Seam come in several types, most of which we have already seen:
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				JSF events
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				jBPM transition events
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Seam page actions
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Seam component-driven events
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Seam contextual events
+			</para>
+		</listitem>
+	</itemizedlist>
+	<para>
+		All of these various kinds of events are mapped to Seam components via JSF EL method binding expressions. For a JSF event, this is defined in the JSF template:
+	</para>
+<programlisting>&lt;h:commandButton value="Click me!" action="#{helloWorld.sayHello}"/&gt;</programlisting>
+	<para>
+		For a jBPM transition event, it is specified in the jBPM process definition or pageflow definition:
+	</para>
+<programlisting>&lt;start-page name="hello" view-id="/hello.jsp"&gt;
+    &lt;transition to="hello"&gt;
+        &lt;action expression="#{helloWorld.sayHello}"/&gt;
+    &lt;/transition&gt;
+&lt;/start-page&gt;
+</programlisting>
+	<para>
+		You can find out more information about JSF events and jBPM events elsewhere. Lets concentrate for now upon the two additional kinds of events defined by Seam.
+	</para>
+	<sect2 id="Seam_Reference_Guide-Seam_events-Page_actions"><title>Page actions</title>
+	<para>
+		A Seam page action is an event that occurs just before we render a page. We declare page actions in <literal>WEB-INF/pages.xml</literal>. We can define a page action for either a particular JSF view id:
+	</para>
+<programlisting>&lt;pages&gt;
+    &lt;page view-id="/hello.jsp" action="#{helloWorld.sayHello}"/&gt;
+&lt;/pages&gt;
+</programlisting>
+	<para>
+		Or we can use a wildcard to specify an action that applies to all view ids that match the pattern:
+	</para>
+<programlisting>&lt;pages&gt;
+    &lt;page view-id="/hello/*" action="#{helloWorld.sayHello}"/&gt;
+&lt;/pages&gt;
+</programlisting>
+	<para>
+		If multiple wildcarded page actions match the current view-id, Seam will call all the actions, in order of least-specific to most-specific.
+	</para>
+	<para>
+		The page action method can return a JSF outcome. If the outcome is non-null, Seam will use the defined navigation rules to navigate to a view.
+	</para>
+	<para>
+		Furthermore, the view id mentioned in the <literal>&lt;page&gt;</literal> element need not correspond to a real JSP or Facelets page. So, we can reproduce the functionality of a traditional action-oriented framework like Struts or WebWork using page actions. 
+	</para>
+
+	<!-- <para>
+		For example:
+	</para>	
+<programlisting>TODO: translate struts action into page action</programlisting> -->
+	<para>
+		This is quite useful if you want to do complex things in response to non-faces requests (for example, HTTP GET requests).
+	</para>
+	<sect3 id="Seam_Reference_Guide-Page_actions-Page_parameters"><title>Page parameters</title>
+	<para>
+		A JSF faces request (a form submission) encapsulates both an <emphasis>action</emphasis> (a method binding) and <emphasis>parameters</emphasis> (input value bindings). A page action might also require parameters.
+	</para>
+	<para>
+		Since GET requests are bookmarkable, page parameters are passed as human-readable request parameters. (Unlike JSF form inputs, which are anything but!)
+	</para>
+	<para>
+		Seam lets us provide a value binding that maps a named request parameter to an attribute of a model object.
+	</para>
+<programlisting>&lt;pages&gt;
+    &lt;page view-id="/hello.jsp" action="#{helloWorld.sayHello}"&gt;
+        &lt;param name="firstName" value="#{person.firstName}"/&gt;
+        &lt;param name="lastName" value="#{person.lastName}"/&gt;
+    &lt;/page&gt;
+&lt;/pages&gt;
+</programlisting>
+	<para>
+		The <literal>&lt;param&gt;</literal> declaration is bidirectional, just like a value binding for a JSF input:
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				When a non-faces (GET) request for the view id occurs, Seam sets the value of the named request parameter onto the model object, after performing appropriate type conversions.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Any <literal>&lt;s:link&gt;</literal> or <literal>&lt;s:button&gt;</literal> transparently includes the request parameter. The value of the parameter is determined by evaluating the value binding during the render phase (when the <literal>&lt;s:link&gt;</literal> is rendered).
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Any navigation rule with a <literal>&lt;redirect/&gt;</literal> to the view id transparently includes the request parameter. The value of the parameter is determined by evaluating the value binding at the end of the invoke application phase.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				The value is transparently propagated with any JSF form submission for the page with the given view-id. (This means that view parameters behave like <literal>PAGE</literal>-scoped context variables for faces requests.
+			</para>
+		</listitem>
+	</itemizedlist>
+	<para>
+		The essential idea behind all this is that <emphasis>however</emphasis> we get from any other page to <literal>/hello.jsp</literal> (or from <literal>/hello.jsp</literal> back to <literal>/hello.jsp</literal>), the value of the model attribute referred to in the value binding is <emphasis>remembered</emphasis>, without the need for a conversation (or other server-side state).
+	</para>
+	<para>
+		This all sounds pretty complex, however the initial effort is worth it in the end. Page parameters are the most elegant way to propagate state across a non-faces request. They are especially cool for problems like search screens with bookmarkable results pages, where we would like to be able to write our application code to handle both POST and GET requests with the same code. Page parameters eliminate repetitive listing of request parameters in the view definition and make redirects much easier to code.
+	</para>
+	<para>
+		You don not need an actual page action method binding to use a page parameter. The following is perfectly valid:
+	</para>
+<programlisting>&lt;pages&gt;
+    &lt;page view-id="/hello.jsp"&gt;
+        &lt;param name="firstName" value="#{person.firstName}"/&gt;
+        &lt;param name="lastName" value="#{person.lastName}"/&gt;
+    &lt;/page&gt;
+&lt;/pages&gt;
+</programlisting>
+	<para>
+		You can even specify a JSF converter:
+	</para>
+<programlisting>&lt;pages&gt;
+    &lt;page view-id="/calculator.jsp" action="#{calculator.calculate}"&gt;
+        &lt;param name="x" value="#{calculator.lhs}"/&gt;
+        &lt;param name="y" value="#{calculator.rhs}"/&gt;
+        &lt;param name="op" converterId="com.my.calculator.OperatorConverter" value="#{calculator.op}"/&gt;
+    &lt;/page&gt;
+&lt;/pages&gt;
+</programlisting>
+<programlisting>&lt;pages&gt;
+    &lt;page view-id="/calculator.jsp" action="#{calculator.calculate}"&gt;
+        &lt;param name="x" value="#{calculator.lhs}"/&gt;
+        &lt;param name="y" value="#{calculator.rhs}"/&gt;
+        &lt;param name="op" converter="#{operatorConverter}" value="#{calculator.op}"/&gt;
+    &lt;/page&gt;
+&lt;/pages&gt;
+</programlisting>
+	</sect3><sect3 id="Seam_Reference_Guide-Page_actions-Navigation"><title>Navigation</title>
+	<para>
+		You can use standard JSF navigation rules defined in <literal>faces-config.xml</literal> in a Seam application. However, JSF navigation rules have a number of annoying limitations:
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				It is not possible to specify request parameters to be used when redirecting.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				It is not possible to begin or end conversations from a rule.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Rules work by evaluating the return value of the action method; it is not possible to evaluate an arbitrary EL expression.
+			</para>
+		</listitem>
+	</itemizedlist>
+	<para>
+		A further problem is that <emphasis>orchestration</emphasis> logic gets scattered between <literal>pages.xml</literal> and <literal>faces-config.xml</literal>. It is better to unify this logic into <literal>pages.xml</literal>.
+	</para>
+	<para>
+		This JSF navigation rule:
+	</para>
+<programlisting>&lt;navigation-rule&gt;
+    &lt;from-view-id&gt;/editDocument.xhtml&lt;/from-view-id&gt;
+    
+    &lt;navigation-case&gt;
+        &lt;from-action&gt;#{documentEditor.update}&lt;/from-action&gt;
+        &lt;from-outcome&gt;success&lt;/from-outcome&gt;
+        &lt;to-view-id&gt;/viewDocument.xhtml&lt;/to-view-id&gt;
+        &lt;redirect/&gt;
+    &lt;/navigation-case&gt;
+    
+&lt;/navigation-rule&gt;
+</programlisting>
+	<para>
+		Can be rewritten as follows:
+	</para>
+<programlisting>&lt;page view-id="/editDocument.xhtml"&gt;
+    
+    &lt;navigation from-action="#{documentEditor.update}"&gt;
+        &lt;rule if-outcome="success"&gt;
+            &lt;redirect view-id="/viewDocument.xhtml"/&gt;
+        &lt;/rule&gt;
+    &lt;/navigation&gt;
+    
+&lt;/page&gt;
+</programlisting>
+	<para>
+		But it would be even nicer if we did not have to pollute our <literal>DocumentEditor</literal> component with string-valued return values (the JSF outcomes). So Seam lets us write:
+	</para>
+<programlisting>&lt;page view-id="/editDocument.xhtml"&gt;
+    
+    &lt;navigation from-action="#{documentEditor.update}" 
+                   evaluate="#{documentEditor.errors.size}"&gt;
+        &lt;rule if-outcome="0"&gt;
+            &lt;redirect view-id="/viewDocument.xhtml"/&gt;
+        &lt;/rule&gt;
+    &lt;/navigation&gt;
+    
+&lt;/page&gt;
+</programlisting>
+	<para>
+		Or even:
+	</para>
+<programlisting>&lt;page view-id="/editDocument.xhtml"&gt;
+    
+    &lt;navigation from-action="#{documentEditor.update}"&gt;
+        &lt;rule if="#{documentEditor.errors.empty}"&gt;
+            &lt;redirect view-id="/viewDocument.xhtml"/&gt;
+        &lt;/rule&gt;
+    &lt;/navigation&gt;
+    
+&lt;/page&gt;
+</programlisting>
+	<para>
+		The first form evaluates a value binding to determine the outcome value to be used by the subsequent rules. The second approach ignores the outcome and evaluates a value binding for each possible rule.
+	</para>
+	<para>
+		When an update succeeds, we probably want to end the current conversation. We can do that like this:
+	</para>
+<programlisting>&lt;page view-id="/editDocument.xhtml"&gt;
+    
+    &lt;navigation from-action="#{documentEditor.update}"&gt;
+        &lt;rule if="#{documentEditor.errors.empty}"&gt;
+            &lt;end-conversation/&gt;
+            &lt;redirect view-id="/viewDocument.xhtml"/&gt;
+        &lt;/rule&gt;
+    &lt;/navigation&gt;
+    
+&lt;/page&gt;
+</programlisting>
+	<para>
+		But ending the conversation loses any state associated with the conversation, including the document we are currently interested in! One solution would be to use an immediate render instead of a redirect:
+	</para>
+<programlisting>&lt;page view-id="/editDocument.xhtml"&gt;
+    
+    &lt;navigation from-action="#{documentEditor.update}"&gt;
+        &lt;rule if="#{documentEditor.errors.empty}"&gt;
+            &lt;end-conversation/&gt;
+            &lt;render view-id="/viewDocument.xhtml"/&gt;
+        &lt;/rule&gt;
+    &lt;/navigation&gt;
+    
+&lt;/page&gt;
+</programlisting>
+	<para>
+		But the correct solution is to pass the document ID as a request parameter:
+	</para>
+<programlisting>&lt;page view-id="/editDocument.xhtml"&gt;
+    
+    &lt;navigation from-action="#{documentEditor.update}"&gt;
+        &lt;rule if="#{documentEditor.errors.empty}"&gt;
+            &lt;end-conversation/&gt;
+            &lt;redirect view-id="/viewDocument.xhtml"&gt;
+                &lt;param name="documentId" value="#{documentEditor.documentId}"/&gt;
+            &lt;/redirect&gt;
+        &lt;/rule&gt;
+    &lt;/navigation&gt;
+    
+&lt;/page&gt;
+</programlisting>
+	<para>
+		Null outcomes are a special case in JSF. The null outcome is interpreted to mean <emphasis>redisplay the page</emphasis>. The following navigation rule matches any non-null outcome, but <emphasis>not</emphasis> the null outcome:
+	</para>
+<programlisting>&lt;page view-id="/editDocument.xhtml"&gt;
+    
+    &lt;navigation from-action="#{documentEditor.update}"&gt;
+        &lt;rule&gt;
+            &lt;render view-id="/viewDocument.xhtml"/&gt;
+        &lt;/rule&gt;
+    &lt;/navigation&gt;
+    
+&lt;/page&gt;
+</programlisting>
+	<para>
+		If you want to perform navigation when a null outcome occurs, use the following form instead:
+	</para>
+<programlisting>&lt;page view-id="/editDocument.xhtml"&gt;
+    
+    &lt;navigation from-action="#{documentEditor.update}"&gt;
+        &lt;render view-id="/viewDocument.xhtml"/&gt;
+    &lt;/navigation&gt;
+    
+&lt;/page&gt;
+</programlisting>
+	</sect3><sect3 id="Seam_Reference_Guide-Page_actions-Fine_grained_files_for_definition_of_navigation_page_actions_and_parameters"><title>Fine-grained files for definition of navigation, page actions and parameters</title>
+	<para>
+		If you have a lot of different page actions and page parameters, or even just a lot of navigation rules, you will almost certainly want to split the declarations up over multiple files. You can define actions and parameters for a page with the view id <literal>/calc/calculator.jsp</literal> in a resource named <literal>calc/calculator.page.xml</literal>. The root element in this case is the <literal>&lt;page&gt;</literal> element, and the view id is implied:
+	</para>
+<programlisting>&lt;page action="#{calculator.calculate}"&gt;
+    &lt;param name="x" value="#{calculator.lhs}"/&gt;
+    &lt;param name="y" value="#{calculator.rhs}"/&gt;
+    &lt;param name="op" converter="#{operatorConverter}" value="#{calculator.op}"/&gt;
+&lt;/page&gt;
+</programlisting>
+	</sect3></sect2><sect2 id="Seam_Reference_Guide-Seam_events-Component_driven_events"><title>Component-driven events</title>
+	<para>
+		Seam components can interact by simply calling each others methods. Stateful components may even implement the observer/observable pattern. But to enable components to interact in a more loosely-coupled fashion than is possible when the components call each others methods directly, Seam provides <emphasis>component-driven events</emphasis>.
+	</para>
+	<para>
+		We specify event listeners (observers) in <literal>components.xml</literal>.
+	</para>
+<programlisting>&lt;components&gt;
+    &lt;event type="hello"&gt;
+        &lt;action expression="#{helloListener.sayHelloBack}"/&gt;
+        &lt;action expression="#{logger.logHello}"/&gt;
+    &lt;/event&gt;
+&lt;/components&gt;
+</programlisting>
+	<para>
+		Where the <emphasis>event type</emphasis> is just an arbitrary string.
+	</para>
+	<para>
+		When an event occurs, the actions registered for that event will be called in the order they appear in <literal>components.xml</literal>. How does a component raise an event? Seam provides a built-in component for this.
+	</para>
+<programlisting>@Name("helloWorld")
+public class HelloWorld {
+    public void sayHello() {
+        FacesMessages.instance().add("Hello World!");
+        Events.instance().raiseEvent("hello");
+    }
+}
+</programlisting>
+	<para>
+		Or you can use an annotation.
+	</para>
+<programlisting>@Name("helloWorld")
+public class HelloWorld {
+    @RaiseEvent("hello")
+    public void sayHello() {
+        FacesMessages.instance().add("Hello World!");
+    }
+}
+</programlisting>
+	<para>
+		Notice that this event producer has no dependency upon event consumers. The event listener may now be implemented with absolutely no dependency upon the producer:
+	</para>
+<programlisting>@Name("helloListener")
+public class HelloListener {
+    public void sayHelloBack() {
+        FacesMessages.instance().add("Hello to you too!");
+    }
+}
+</programlisting>
+	<para>
+		The method binding defined in <literal>components.xml</literal> above takes care of mapping the event to the consumer. If you do not like futzing about in the <literal>components.xml</literal> file, you can use an annotation instead:
+	</para>
+<programlisting>@Name("helloListener")
+public class HelloListener {
+    @Observer("hello")
+    public void sayHelloBack() {
+        FacesMessages.instance().add("Hello to you too!");
+    }
+}
+</programlisting>
+	<para>
+		In terms of event objects, Seam does not require an event object to propagate state between event producer and listener. State is held in the Seam contexts, and is shared between components. However, if you really want to pass an event object, you can:
+	</para>
+<programlisting>@Name("helloWorld")
+public class HelloWorld {
+    private String name;
+    public void sayHello() {
+        FacesMessages.instance().add("Hello World, my name is #0.", name);
+        Events.instance().raiseEvent("hello", name);
+    }
+}
+</programlisting>
+<programlisting>@Name("helloListener")
+public class HelloListener {
+    @Observer("hello")
+    public void sayHelloBack(String name) {
+        FacesMessages.instance().add("Hello #0!", name);
+    }
+}
+</programlisting>
+	</sect2><sect2 id="Seam_Reference_Guide-Seam_events-Contextual_events"><title>Contextual events</title>
+	<para>
+		Seam defines a number of built-in events that the application can use to perform special kinds of framework integration. The events are:
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.validationFailed</literal> &mdash; called when JSF validation fails
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.noConversation</literal> &mdash; called when there is no long running conversation and a long running conversation is required
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.preSetVariable.&lt;name&gt;</literal> &mdash; called when the context variable &lt;name&gt; is set
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.postSetVariable.&lt;name&gt;</literal> &mdash; called when the context variable &lt;name&gt; is set
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.preRemoveVariable.&lt;name&gt;</literal> &mdash; called when the context variable &lt;name&gt; is unset
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.postRemoveVariable.&lt;name&gt;</literal> &mdash; called when the context variable &lt;name&gt; is unset
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.preDestroyContext.&lt;SCOPE&gt;</literal> &mdash; called before the &lt;SCOPE&gt; context is destroyed
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.postDestroyContext.&lt;SCOPE&gt;</literal> &mdash; called after the &lt;SCOPE&gt; context is destroyed
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.beginConversation </literal>&mdash; called whenever a long-running conversation begins
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.endConversation </literal>&mdash; called whenever a long-running conversation ends
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.beginPageflow.&lt;name&gt; </literal>&mdash; called when the pageflow &lt;name&gt; begins
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.endPageflow.&lt;name&gt; </literal>&mdash; called when the pageflow &lt;name&gt; ends
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.createProcess.&lt;name&gt; </literal>&mdash; called when the process &lt;name&gt; is created
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.endProcess.&lt;name&gt; </literal>&mdash; called when the process &lt;name&gt; ends
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.initProcess.&lt;name&gt; </literal>&mdash; called when the process &lt;name&gt; is associated with the conversation
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.initTask.&lt;name&gt; </literal>&mdash; called when the task &lt;name&gt; is associated with the conversation
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.startTask.&lt;name&gt; </literal>&mdash; called when the task &lt;name&gt; is started
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.endTask.&lt;name&gt; </literal>&mdash; called when the task &lt;name&gt; is ended
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.postCreate.&lt;name&gt; </literal>&mdash; called when the component &lt;name&gt; is created
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.preDestroy.&lt;name&gt; </literal>&mdash; called when the component &lt;name&gt; is destroyed
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.beforePhase </literal>&mdash; called before the start of a JSF phase
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.afterPhase </literal>&mdash; called after the end of a JSF phase
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.postAuthenticate.&lt;name&gt; </literal>&mdash; called after a user is authenticated
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.preAuthenticate.&lt;name&gt; </literal>&mdash; called before attempting to authenticate a user
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.notLoggedIn</literal> &mdash; called there is no authenticated user and authentication is required
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.rememberMe</literal> &mdash; occurs when Seam security detects the username in a cookie
+			</para>
+		</listitem>
+	</itemizedlist>
+	<para>
+		Seam components may observe any of these events in just the same way they observe any other component-driven events.
+	</para>
+	</sect2></sect1><sect1 id="Seam_Reference_Guide-Events_interceptors_and_exception_handling-Seam_interceptors"><title>Seam interceptors</title>
+	<para>
+		EJB 3.0 introduced a standard interceptor model for session bean components. To add an interceptor to a bean, you need to write a class with a method annotated <literal>@AroundInvoke</literal> and annotate the bean with an <literal>@Interceptors</literal> annotation that specifies the name of the interceptor class. For example, the following interceptor checks that the user is logged in before allowing invoking an action listener method:
+	</para>
+<programlisting>public class LoggedInInterceptor {
+
+   @AroundInvoke
+   public Object checkLoggedIn(InvocationContext invocation) throws Exception {
+   
+      boolean isLoggedIn = Contexts.getSessionContext().get("loggedIn")!=null;
+      if (isLoggedIn) {
+         //the user is already logged in
+         return invocation.proceed();
+      }
+      else {
+         //the user is not logged in, fwd to login page
+         return "login";
+      }
+   }
+
+}
+</programlisting>
+	<para>
+		To apply this interceptor to a session bean which acts as an action listener, we must annotate the session bean <literal>@Interceptors(LoggedInInterceptor.class)</literal>. This is a somewhat ugly annotation. Seam builds upon the interceptor framework in EJB3 by allowing you to use <literal>@Interceptors</literal> as a meta-annotation. In our example, we would create an <literal>@LoggedIn</literal> annotation, as follows:
+	</para>
+<programlisting>@Target(TYPE)
+ at Retention(RUNTIME)
+ at Interceptors(LoggedInInterceptor.class)
+public @interface LoggedIn {}
+</programlisting>
+	<para>
+		We can now simply annotate our action listener bean with <literal>@LoggedIn</literal> to apply the interceptor.
+	</para>
+<programlisting>@Stateless
+ at Name("changePasswordAction")
+ at LoggedIn
+ at Interceptors(SeamInterceptor.class)
+public class ChangePasswordAction implements ChangePassword { 
+    
+    ...
+    
+    public String changePassword() { ... }
+    
+}
+</programlisting>
+	<para>
+		If interceptor ordering is important (it usually is), you can add <literal>@Interceptor</literal> annotations to your interceptor classes to specify a partial order of interceptors.
+	</para>
+<programlisting>@Interceptor(around={BijectionInterceptor.class,
+                     ValidationInterceptor.class,
+                     ConversationInterceptor.class},
+             within=RemoveInterceptor.class)
+public class LoggedInInterceptor
+{
+    ...
+}
+</programlisting>
+	<para>
+		You can even have a <emphasis>client-side</emphasis> interceptor, that runs around any of the built-in functionality of EJB3:
+	</para>
+<programlisting>@Interceptor(type=CLIENT)
+public class LoggedInInterceptor
+{
+    ...
+}
+</programlisting>
+	<para>
+		EJB interceptors are stateful, with a lifecycle that is the same as the component they intercept. For interceptors which do not need to maintain state, Seam lets you get a performance optimization by specifying <literal>@Interceptor(stateless=true)</literal>.
+	</para>
+	<para>
+		Much of the functionality of Seam is implemented as a set of built-in Seam interceptors, including the interceptors named in the previous example. You do not have to explicitly specify these interceptors by annotating your components; they exist for all interceptable Seam components.
+	</para>
+	<para>
+		You can even use Seam interceptors with JavaBean components, not just EJB3 beans.
+	</para>
+	<para>
+		EJB defines interception not only for business methods (using <literal>@AroundInvoke</literal>), but also for the lifecycle methods <literal>@PostConstruct</literal>, <literal>@PreDestroy</literal>, <literal>@PrePassivate</literal> and <literal>@PostActive</literal>. Seam supports all these lifecycle methods on both component and interceptor not only for EJB3 beans, but also for JavaBean components (except <literal>@PreDestroy</literal> which is not meaningful for JavaBean components).
+	</para>
+	</sect1><sect1 id="Seam_Reference_Guide-Events_interceptors_and_exception_handling-Managing_exceptions"><title>Managing exceptions</title>
+	<para>
+		JSF is surprisingly limited when it comes to exception handling. As a partial workaround for this problem, Seam lets you define how a particular class of exception is to be treated by annotating the exception class, or declaring the exception class in an XML file. This facility is meant to be combined with the EJB 3.0-standard <literal>@ApplicationException</literal> annotation which specifies whether the exception should cause a transaction rollback.
+	</para>
+	<sect2 id="Seam_Reference_Guide-Managing_exceptions-Exceptions_and_transactions"><title>Exceptions and transactions</title>
+	<para>
+		EJB specifies well-defined rules that let us control whether an exception immediately marks the current transaction for rollback when it is thrown by a business method of the bean: <emphasis>system exceptions</emphasis> always cause a transaction rollback, <emphasis>application exceptions</emphasis> do not cause a rollback by default, but they do if <literal>@ApplicationException(rollback=true)</literal> is specified. (An application exception is any checked exception, or any unchecked exception annotated <literal>@ApplicationException</literal>. A system exception is any unchecked exception without an <literal>@ApplicationException</literal> annotation.)
+	</para>
+<note>
+	<para>
+		There is a difference between marking a transaction for rollback, and actually rolling it back. The exception rules say that the transaction should be marked rollback only, but it may still be active after the exception is thrown.
+	</para>
+</note>
+	<para>
+		Seam applies the EJB 3.0 exception rollback rules also to Seam JavaBean components.
+	</para>
+	<para>
+		But these rules only apply in the Seam component layer. What about an exception that is uncaught and propagates out of the Seam component layer, and out of the JSF layer? Well, it is always wrong to leave a dangling transaction open, so Seam rolls back any active transaction when an exception occurs and is uncaught in the Seam component layer.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Managing_exceptions-Enabling_Seam_exception_handling"><title>Enabling Seam exception handling</title>
+	<para>
+		To enable Seam&#39;s exception handling, we need to make sure we have the master servlet filter declared in <literal>web.xml</literal>:
+	</para>
+<programlisting>&lt;filter&gt;
+    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;
+    &lt;filter-class&gt;org.jboss.seam.servlet.SeamFilter&lt;/filter-class&gt;
+&lt;/filter&gt;
+
+&lt;filter-mapping&gt;
+    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;
+    &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;
+&lt;/filter-mapping&gt;
+</programlisting>
+	<para>
+		You may also need to disable Facelets development mode in <literal>web.xml</literal> and Seam debug mode in <literal>components.xml</literal> if you want your exception handlers to fire.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Managing_exceptions-Using_annotations_for_exception_handling"><title>Using annotations for exception handling</title>
+	<para>
+		The following exception results in a HTTP 404 error whenever it propagates out of the Seam component layer. It does not roll back the current transaction immediately when thrown, but the transaction will be rolled back if it the exception is not caught by another Seam component.
+	</para>
+<programlisting>@HttpError(errorCode=404)
+public class ApplicationException extends Exception { ... }
+</programlisting>
+	<para>
+		This exception results in a browser redirect whenever it propagates out of the Seam component layer. It also ends the current conversation. It causes an immediate rollback of the current transaction.
+	</para>
+<programlisting>@Redirect(viewId="/failure.xhtml", end=true)
+ at ApplicationException(rollback=true)
+public class UnrecoverableApplicationException extends RuntimeException { ... }
+</programlisting>
+<important>
+	<para>
+		<literal>@Redirect</literal> does not work for exceptions which occur during the render phase of the JSF lifecycle.
+	</para>
+</important>
+	<para>
+		This exception results in a redirect, along with a message to the user, when it propagates out of the Seam component layer. It also immediately rolls back the current transaction.
+	</para>
+<programlisting>@Redirect(viewId="/error.xhtml", message="Unexpected error")
+public class SystemException extends RuntimeException { ... }
+</programlisting>
+	</sect2><sect2 id="Seam_Reference_Guide-Managing_exceptions-Using_XML_for_exception_handling"><title>Using XML for exception handling</title>
+	<para>
+		Since we cannot add annotations to all the exception classes we are interested in, Seam also lets us specify this functionality in <literal>pages.xml</literal>.
+	</para>
+<programlisting>&lt;pages&gt;
+   
+   &lt;exception class="javax.persistence.EntityNotFoundException"&gt;
+      &lt;http-error error-code="404"/&gt;
+   &lt;/exception&gt;
+   
+   &lt;exception class="javax.persistence.PersistenceException"&gt;
+      &lt;end-conversation/&gt;
+      &lt;redirect view-id="/error.xhtml"&gt;
+          &lt;message&gt;Database access failed&lt;/message&gt;
+      &lt;/redirect&gt;
+   &lt;/exception&gt;
+   
+   &lt;exception&gt;
+      &lt;end-conversation/&gt;
+      &lt;redirect view-id="/error.xhtml"&gt;
+          &lt;message&gt;Unexpected failure&lt;/message&gt;
+      &lt;/redirect&gt;
+   &lt;/exception&gt;
+   
+&lt;/pages&gt;
+</programlisting>
+	<para>
+		The last <literal>&lt;exception&gt;</literal> declaration does not specify a class, and is a catch-all for any exception for which handling is not otherwise specified via annotations or in <literal>pages.xml</literal>.
+	</para>
+	<para>
+		You can also access the handled exception instance through EL, Seam places it in the conversation context, for example, to access the message of the exception:
+	</para>
+<programlisting>...
+throw new AuthorizationException("You are not allowed to do this!");
+
+&lt;pages&gt;
+
+    &lt;exception class="org.jboss.seam.security.AuthorizationException"&gt;
+        &lt;end-conversation/&gt;
+        &lt;redirect view-id="/error.xhtml"&gt;
+            &lt;message severity="WARN"&gt;#{handledException.message}&lt;/message&gt;
+        &lt;/redirect&gt;
+    &lt;/exception&gt;
+
+&lt;/pages&gt;
+</programlisting>
+	</sect2></sect1>
+</chapter>
+


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Events.xml
___________________________________________________________________
Name: svn:executable
   + *

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Feedback.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Feedback.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Feedback.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,11 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
+]>
+
+<chapter id="Feedback">
+	<title>Feedback</title>
+	<para>
+			If you spot a typo in this guide, or if you have thought of a way to make this manual better, we would love to hear from you! Submit a report in <ulink url="http://jira.jboss.com/jira/browse/JBPAPP">JIRA</ulink> against the Product: JBoss Enterprise Application Platform, Version: <replaceable>&lt;version&gt;</replaceable>, Component: <emphasis>Doc</emphasis>. If you have a suggestion for improving the documentation, try to be as specific as possible. If you have found an error, include the section number and some of the surrounding text so we can find it easily.
+	</para>
+</chapter>
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Framework.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Framework.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Framework.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,423 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Seam_Reference_Guide-The_Seam_Application_Framework">
+	<title>The Seam Application Framework</title>
+	<para>
+		Seam makes it really easy to create applications by writing plain Java classes with annotations, which do not need to extend any special interfaces or superclasses. But we can simplify some common programming tasks even further, by providing a set of pre-built components which can be re-used either by configuration in <literal>components.xml</literal> (for very simple cases) or extension.
+	</para>
+	<para>
+		The <emphasis>Seam Application Framework</emphasis> can reduce the amount of code you need to write when doing basic database access in a web application, using either Hibernate or JPA.
+	</para>
+	<para>
+		We should emphasize that the framework is extremely simple, just a handful of simple classes that are easy to understand and extend that Seam then uses when creating your application.
+	</para>
+	<section id="Seam_Reference_Guide-The_Seam_Application_Framework-Introduction">
+		<title>Introduction</title>
+		<para>
+			The components provided by the Seam application framework may be used in one of two different approaches. The first way is to install and configure an instance of the component in <literal>components.xml</literal>, just like we have done with other kinds of built-in Seam components. For example, the following fragment from <literal>components.xml</literal> installs a component which can perform basic CRUD operations for a <literal>Contact</literal> entity:
+		</para>
+<programlisting>&lt;framework:entity-home name="personHome" 
+                       entity-class="eg.Person" 
+                       entity-manager="#{personDatabase}"&gt;
+    &lt;framework:id&gt;#{param.personId}&lt;/framework:id&gt;
+&lt;/framework:entity-home&gt;
+</programlisting>
+		<para>
+			If you would rather a different method to the above, you can use extension instead:
+		</para>
+<programlisting>@Stateful
+ at Name("personHome")
+public class PersonHome extends EntityHome&lt;Person&gt; implements LocalPersonHome {
+    @RequestParameter String personId;
+    @In EntityManager personDatabase;
+    
+    public Object getId() { return personId; }
+    public EntityManager getEntityManager() { return personDatabase; }
+    
+}
+</programlisting>
+		<para>
+			The second approach has one huge advantage: you can easily add extra functionality, and override the built-in functionality (the framework classes were carefully designed for extension and customization).
+		</para>
+		<para>
+			A second advantage is that your classes may be EJB stateful sessin beans, if you like. (They do not have to be, they can be plain JavaBean components if you prefer.)
+		</para>
+		<para>
+			At this time, the Seam Application Framework provides just four built-in components: <literal>EntityHome</literal> and <literal>HibernateEntityHome</literal> for CRUD, along with <literal>EntityQuery</literal> and <literal>HibernateEntityQuery</literal> for queries.
+		</para>
+		<para>
+			The Home and Query components are written so that they can function with a scope of session, event or conversation. Which scope you use depends upon the state model you wish to use in your application.
+		</para>
+		<para>
+			The Seam Application Framework only works with Seam-managed persistence contexts. By default, the components will look for a persistence context named <literal>entityManager</literal>.
+		</para>
+	</section>
+	
+	<section id="Seam_Reference_Guide-The_Seam_Application_Framework-Home_objects">
+		<title>Home objects</title>
+		<para>
+			A Home object provides persistence operations for a particular entity class. Suppose we have our trusty <literal>Person</literal> class:
+		</para>
+<programlisting>@Entity
+public class Person {
+    @Id private Long id;
+    private String firstName;
+    private String lastName;
+    private Country nationality;
+    
+    //getters and setters...
+}
+</programlisting>
+		<para>
+			We can define a <literal>personHome</literal> component either via configuration:
+		</para>
+<programlisting>&lt;framework:entity-home name="personHome" entity-class="eg.Person" /&gt;</programlisting>
+		<para>
+			Or via extension:
+		</para>
+<programlisting>@Name("personHome")
+public class PersonHome extends EntityHome&lt;Person&gt; {}
+</programlisting>
+		<para>
+			A Home object provides the following operations: <literal>persist()</literal>, <literal>remove()</literal>, <literal>update()</literal> and <literal>getInstance()</literal>. Before you can call the <literal>remove()</literal>, or <literal>update()</literal> operations, you must first set the identifier of the object you are interested in, using the <literal>setId()</literal> method.
+		</para>
+		<para>
+			We can use a Home directly from a JSF page, for example:
+		</para>
+<programlisting>&lt;h1&gt;Create Person&lt;/h1&gt;
+&lt;h:form&gt;
+    &lt;div&gt;First name: &lt;h:inputText value="#{personHome.instance.firstName}"/&gt;&lt;/div&gt;
+    &lt;div&gt;Last name: &lt;h:inputText value="#{personHome.instance.lastName}"/&gt;&lt;/div&gt;
+    &lt;div&gt;
+        &lt;h:commandButton value="Create Person" action="#{personHome.persist}"/&gt;
+    &lt;/div&gt;
+&lt;/h:form&gt;
+</programlisting>
+		<para>
+			Usually, it is much nicer to be able to refer to the <literal>Person</literal> merely as <literal>person</literal>, so let us make that possible by adding a line to <literal>components.xml</literal>:
+		</para>
+<programlisting>&lt;factory name="person" 
+         value="#{personHome.instance}"/&gt;
+
+&lt;framework:entity-home name="personHome" 
+                       entity-class="eg.Person" /&gt;
+</programlisting>
+		<para>
+			(If we are using configuration.) Or by adding a <literal>@Factory</literal> method to <literal>PersonHome</literal>:
+		</para>
+<programlisting>@Name("personHome")
+public class PersonHome extends EntityHome&lt;Person&gt; {
+    
+    @Factory("person")
+    public Person initPerson() { return getInstance(); }
+    
+}
+</programlisting>
+		<para>
+			(If we are using extension.) This change simplifies our JSF page to the following:
+		</para>
+<programlisting>&lt;h1&gt;Create Person&lt;/h1&gt;
+&lt;h:form&gt;
+    &lt;div&gt;First name: &lt;h:inputText value="#{person.firstName}"/&gt;&lt;/div&gt;
+    &lt;div&gt;Last name: &lt;h:inputText value="#{person.lastName}"/&gt;&lt;/div&gt;
+    &lt;div&gt;
+        &lt;h:commandButton value="Create Person" action="#{personHome.persist}"/&gt;
+    &lt;/div&gt;
+&lt;/h:form&gt;
+</programlisting>
+		<para>
+			Well, that lets us create new <literal>Person</literal> entries. Now, if we want to be able to display, update and delete pre-existing <literal>Person</literal> entries in the database, we need to be able to pass the entry identifier to the <literal>PersonHome</literal>. Page parameters are a great way to do that:
+		</para>
+<programlisting>&lt;pages&gt;
+    &lt;page view-id="/editPerson.jsp"&gt;
+        &lt;param name="personId" value="#{personHome.id}"/&gt;
+    &lt;/page&gt;
+&lt;/pages&gt;
+</programlisting>
+		<para>
+			Now we can add the extra operations to our JSF page:
+		</para>
+<programlisting>&lt;h1&gt;
+    &lt;h:outputText rendered="#{!personHome.managed}" value="Create Person"/&gt;
+    &lt;h:outputText rendered="#{personHome.managed}" value="Edit Person"/&gt;
+&lt;/h1&gt;
+&lt;h:form&gt;
+    &lt;div&gt;First name: &lt;h:inputText value="#{person.firstName}"/&gt;&lt;/div&gt;
+    &lt;div&gt;Last name: &lt;h:inputText value="#{person.lastName}"/&gt;&lt;/div&gt;
+    &lt;div&gt;
+        &lt;h:commandButton value="Create Person" action="#{personHome.persist}" 
+                             rendered="#{!personHome.managed}"/&gt;
+        &lt;h:commandButton value="Update Person" action="#{personHome.update}" 
+                             rendered="#{personHome.managed}"/&gt;
+        &lt;h:commandButton value="Delete Person" action="#{personHome.remove}" 
+                             rendered="#{personHome.managed}"/&gt;
+    &lt;/div&gt;
+&lt;/h:form&gt;
+</programlisting>
+		<para>
+			When we link to the page with no request parameters, the page will be displayed as a <emphasis>Create Person</emphasis> page. When we provide a value for the <literal>personId</literal> request parameter, it will be an <emphasis>Edit Person</emphasis> page.
+		</para>
+		<para>
+			Suppose we need to create <literal>Person</literal> entries with their nationality initialized. We can do that easily, via configuration:
+		</para>
+<programlisting>&lt;factory name="person" 
+         value="#{personHome.instance}"/&gt;
+
+&lt;framework:entity-home name="personHome" 
+                       entity-class="eg.Person" 
+                       new-instance="#{newPerson}"/&gt;
+
+&lt;component name="newPerson" 
+           class="eg.Person"&gt;
+    &lt;property name="nationality"&gt;#{country}&lt;/property&gt;
+&lt;/component&gt;
+</programlisting>
+		<para>
+			Or by extension:
+		</para>
+<programlisting>@Name("personHome")
+public class PersonHome extends EntityHome&lt;Person&gt; {
+    
+    @In Country country;
+    
+    @Factory("person")
+    public Person initPerson() { return getInstance(); }
+    
+    protected Person createInstance() {
+        return new Person(country);
+    }
+    
+}
+</programlisting>
+		<para>
+			Of course, the <literal>Country</literal> could be an object managed by another Home object, for example, <literal>CountryHome</literal>.
+		</para>
+		<para>
+			To add more sophisticated operations (association management, etc), we can just add methods to <literal>PersonHome</literal>.
+		</para>
+<programlisting>@Name("personHome")
+public class PersonHome extends EntityHome&lt;Person&gt; {
+    
+    @In Country country;
+    
+    @Factory("person")
+    public Person initPerson() { return getInstance(); }
+    
+    protected Person createInstance() {
+        return new Person(country);
+    }
+    
+    public void migrate()
+    {
+        getInstance().setCountry(country);
+        update();
+    }
+    
+}
+</programlisting>
+		<para>
+			The Home object automatically displays faces messages when an operation is successful. To customize these messages we can, again, use configuration:
+		</para>
+<programlisting>&lt;factory name="person" 
+         value="#{personHome.instance}"/&gt;
+
+&lt;framework:entity-home name="personHome"
+                       entity-class="eg.Person"
+                       new-instance="#{newPerson}"&gt;
+    &lt;framework:created-message&gt;New person #{person.firstName} #{person.lastName} created&lt;/framework:created-message&gt;
+    &lt;framework:deleted-message&gt;Person #{person.firstName} #{person.lastName} deleted&lt;/framework:deleted-message&gt;
+    &lt;framework:updated-message&gt;Person #{person.firstName} #{person.lastName} updated&lt;/framework:updated-message&gt;
+&lt;/framework:entity-home&gt;
+
+&lt;component name="newPerson" 
+           class="eg.Person"&gt;
+    &lt;property name="nationality"&gt;#{country}&lt;/property&gt;
+&lt;/component&gt;
+</programlisting>
+		<para>
+			Or extension:
+		</para>
+<programlisting>@Name("personHome")
+public class PersonHome extends EntityHome&lt;Person&gt; {
+    
+    @In Country country;
+    
+    @Factory("person")
+    public Person initPerson() { return getInstance(); }
+    
+    protected Person createInstance() {
+        return new Person(country);
+    }
+    
+    protected String getCreatedMessage() { return "New person #{person.firstName} 
+      #{person.lastName} created"; }
+    protected String getUpdatedMessage() { return "Person #{person.firstName} 
+      #{person.lastName} updated"; }
+    protected String getDeletedMessage() { return "Person #{person.firstName} 
+      #{person.lastName} deleted"; }
+    
+}
+</programlisting>
+		<para>
+			But the best way to specify the messages is to put them in a resource bundle known to Seam (the bundle named <literal>messages</literal>, by default).
+		</para>
+<programlisting>Person_created=New person #{person.firstName} #{person.lastName} created
+Person_deleted=Person #{person.firstName} #{person.lastName} deleted
+Person_updated=Person #{person.firstName} #{person.lastName} updated
+</programlisting>
+		<para>
+			This enables internationalization, and keeps your code and configuration clean of presentation concerns.
+		</para>
+		<para>
+			The final step is to add validation functionality to the page, using <literal>&lt;s:validateAll&gt;</literal> and <literal>&lt;s:decorate&gt;</literal>, but I&#39;ll leave that for you to figure out.
+		</para>
+	</section>
+	
+	<section id="Seam_Reference_Guide-The_Seam_Application_Framework-Query_objects">
+		<title>Query objects</title>
+		<para>
+			If we need a list of all <literal>Person</literal> instance in the database, we can use a Query object. For example:
+		</para>
+<programlisting>&lt;framework:entity-query name="people" 
+                        ejbql="select p from Person p"/&gt;
+</programlisting>
+		<para>
+			We can use it from a JSF page:
+		</para>
+<programlisting>&lt;h1&gt;List of people&lt;/h1&gt;
+&lt;h:dataTable value="#{people.resultList}" var="person"&gt;
+    &lt;h:column&gt;
+        &lt;s:link view="/editPerson.jsp" value="#{person.firstName} #{person.lastName}"&gt;
+            &lt;f:param name="personId" value="#{person.id}"/&gt;
+        &lt;/s:link&gt;
+    &lt;/h:column&gt;
+&lt;/h:dataTable&gt;
+</programlisting>
+		<para>
+			We probably need to support pagination:
+		</para>
+<programlisting>&lt;framework:entity-query name="people" 
+                        ejbql="select p from Person p" 
+                        order="lastName" 
+                        max-results="20"/&gt;
+</programlisting>
+		<para>
+			We&#39;ll use a page parameter to determine the page to display:
+		</para>
+<programlisting>&lt;pages&gt;
+    &lt;page view-id="/searchPerson.jsp"&gt;
+        &lt;param name="firstResult" value="#{people.firstResult}"/&gt;
+    &lt;/page&gt;
+&lt;/pages&gt;
+</programlisting>
+		<para>
+			The JSF code for a pagination control is a bit verbose, but manageable:
+		</para>
+<programlisting>&lt;h1&gt;Search for people&lt;/h1&gt;
+&lt;h:dataTable value="#{people.resultList}" var="person"&gt;
+    &lt;h:column&gt;
+        &lt;s:link view="/editPerson.jsp" value="#{person.firstName} #{person.lastName}"&gt;
+            &lt;f:param name="personId" value="#{person.id}"/&gt;
+        &lt;/s:link&gt;
+    &lt;/h:column&gt;
+&lt;/h:dataTable&gt;
+
+&lt;s:link view="/search.xhtml" rendered="#{people.previousExists}" value="First Page"&gt;
+    &lt;f:param name="firstResult" value="0"/&gt;
+&lt;/s:link&gt;
+
+&lt;s:link view="/search.xhtml" rendered="#{people.previousExists}" value="Previous Page"&gt;
+    &lt;f:param name="firstResult" value="#{people.previousFirstResult}"/&gt;
+&lt;/s:link&gt;
+
+&lt;s:link view="/search.xhtml" rendered="#{people.nextExists}" value="Next Page"&gt;
+    &lt;f:param name="firstResult" value="#{people.nextFirstResult}"/&gt;
+&lt;/s:link&gt;
+
+&lt;s:link view="/search.xhtml" rendered="#{people.nextExists}" value="Last Page"&gt;
+    &lt;f:param name="firstResult" value="#{people.lastFirstResult}"/&gt;
+&lt;/s:link&gt;
+</programlisting>
+		<para>
+			Real search screens let the user enter a bunch of optional search criteria to narrow the list of results returned. The Query object lets you specify optional "restrictions" to support this important usecase:
+		</para>
+<programlisting>&lt;component name="examplePerson" class="Person"/&gt;
+        
+&lt;framework:entity-query name="people" 
+                        ejbql="select p from Person p" 
+                        order="lastName" 
+                        max-results="20"&gt;
+    &lt;framework:restrictions&gt;
+        &lt;value&gt;lower(firstName) like lower( #{examplePerson.firstName} + &#39;%&#39; )&lt;/value&gt;
+        &lt;value&gt;lower(lastName) like lower( #{examplePerson.lastName} + &#39;%&#39; )&lt;/value&gt;
+    &lt;/framework:restrictions&gt;
+&lt;/framework:entity-query&gt;
+</programlisting>
+		<para>
+			Notice the use of an <code>example</code> object.
+		</para>
+<programlisting>&lt;h1&gt;Search for people&lt;/h1&gt;
+&lt;h:form&gt;
+    &lt;div&gt;First name: &lt;h:inputText value="#{examplePerson.firstName}"/&gt;&lt;/div&gt;
+    &lt;div&gt;Last name: &lt;h:inputText value="#{examplePerson.lastName}"/&gt;&lt;/div&gt;
+    &lt;div&gt;&lt;h:commandButton value="Search" action="/search.jsp"/&gt;&lt;/div&gt;
+&lt;/h:form&gt;
+
+&lt;h:dataTable value="#{people.resultList}" var="person"&gt;
+    &lt;h:column&gt;
+        &lt;s:link view="/editPerson.jsp" value="#{person.firstName} #{person.lastName}"&gt;
+            &lt;f:param name="personId" value="#{person.id}"/&gt;
+        &lt;/s:link&gt;
+    &lt;/h:column&gt;
+&lt;/h:dataTable&gt;
+</programlisting>
+		<para>
+			The examples in this section have all shown reuse by configuration. However, reuse by extension is equally possible for Query objects.
+		</para>
+	</section>
+	
+	<section id="Seam_Reference_Guide-The_Seam_Application_Framework-Controller_objects">
+		<title>Controller objects</title>
+		<para>
+			A totally optional part of the Seam Application Framework is the class <literal>Controller</literal> and its subclasses <literal>EntityController</literal><literal>HibernateEntityController</literal> and <literal>BusinessProcessController</literal>. These classes provide nothing more than some convenience methods for access to commonly used built-in components and methods of built-in components. They help save a few keystrokes (characters can add up!) and provide a great launchpad for new users to explore the rich functionality built in to Seam.
+		</para>
+		<para>
+			For example, here is what <literal>RegisterAction</literal> from the Seam registration example would look like:
+		</para>
+<programlisting>@Stateless
+ at Name("register")
+public class RegisterAction extends EntityController implements Register
+{
+
+   @In private User user;
+   
+   public String register()
+   {
+      List existing = createQuery("select u.username from User u where u.username=:username")
+         .setParameter("username", user.getUsername())
+         .getResultList();
+      
+      if ( existing.size()==0 )
+      {
+         persist(user);
+         info("Registered new user #{user.username}");
+         return "/registered.jspx";
+      }
+      else
+      {
+         addFacesMessage("User #{user.username} already exists");
+         return null;
+      }
+   }
+
+}
+</programlisting>
+<!--		<para>
+			As you can see, its not an earthshattering improvement...
+		</para> -->
+	</section>
+
+</chapter>
+


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Framework.xml
___________________________________________________________________
Name: svn:executable
   + *

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Gettingstarted.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Gettingstarted.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Gettingstarted.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,358 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Seam_Reference_Guide-Getting_started_with_Seam_using_seam_gen">
+	<title>Getting started with Seam, using seam-gen</title>
+	<para>
+		The Seam distribution includes a command line utility that makes it really easy to set up an Eclipse project, generate some simple Seam skeleton code, and reverse engineer an application from a pre-existing database.
+	</para>
+	<para>
+		This is the easy way to get your feet wet with Seam, and gives you some ammunition for next time you find yourself trapped in an elevator with one of those tedious Ruby guys ranting about how great and wonderful his new toy is for building totally trivial applications that put things in databases.
+	</para>
+	<para>
+		In this release, seam-gen works best for people with JBoss AS. You can use the generated project with other J2EE or Java EE 5 application servers by making a few manual changes to the project configuration.
+	</para>
+	<para>
+		You <emphasis>can</emphasis> use seam-gen without Eclipse, but in this tutorial, we want to show you how to use it in conjunction with Eclipse for debugging and integration testing. If you do not want to install Eclipse, you can still follow along with this tutorial; all steps can be peformed from the command line.
+	</para>
+	<para>
+		Seam-gen is basically just a big ugly Ant script wrapped around Hibernate Tools, together with some templates. Which means it is easy to customize if you need to.
+	</para>
+	<section id="Seam_Reference_Guide-Getting_started_with_Seam_using_seam_gen-Before_you_start">
+		<title>Before you start</title>
+		<para>
+			Make sure you have JDK 5 or JDK 6, JBoss AS 4.0.5 and Ant 1.6, along with recent versions of Eclipse, the JBoss IDE plugin for Eclipse and the TestNG plugin for Eclipse correctly installed before starting. Add your JBoss installation to the JBoss Server View in Eclipse. Start JBoss in debug mode. Finally, start a command prompt in the directory where you unzipped the Seam distribution.
+		</para>
+		<para>
+			JBoss has sophisticated support for hot re-deployment of WARs and EARs. Unfortunately, due to bugs in the JVM, repeated redeployment of an EAR, which is common during development and eventually causing the JVM to run out of perm gen space. For this reason, we recommend running JBoss in a JVM with a large perm gen space at development time. If you are running JBoss from JBoss IDE, you can configure this in the server launch configuration, under <emphasis>VM arguments</emphasis>. We suggest the following values:
+		</para>
+<programlisting>-Xms512m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512</programlisting>
+		<para>
+			If you do not have so much memory available, the following is our minimum recommendation:
+		</para>
+<programlisting>-Xms256m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=256</programlisting>
+		<para>
+			If you are running JBoss from the commandline, you can configure the JVM options in <literal>bin/run.conf</literal>.
+		</para>
+<!--		<para>
+			If you do not want to bother with this stuff now, you do note have to&mdash;come back to it later, when you get your first <literal>OutOfMemoryException</literal>.
+		</para> -->
+	</section>
+	
+	<section id="Seam_Reference_Guide-Getting_started_with_Seam_using_seam_gen-Setting_up_a_new_Eclipse_project">
+		<title>Setting up a new Eclipse project</title>
+		<para>
+			The first thing we need to do is configure seam-gen for your environment: JBoss Enterprise Application Server installation directory, Eclipse workspace, and database connection. It&#39;s easy, just type:
+		</para>
+<programlisting>cd jboss-seam-1.1.x
+seam setup
+</programlisting>
+		<para>
+			And you will be prompted for the needed information:
+		</para>
+<programlisting>C:\Projects\jboss-seam&gt;seam setup
+Buildfile: C:\Projects\jboss-seam\seam-gen\build.xml
+
+setup:
+    [echo] Welcome to seam-gen :-)
+    [input] Enter your Java project workspace [C:/Projects]
+
+    [input] Enter your JBoss home directory [C:/Program Files/jboss-4.0.5.GA]
+
+    [input] Enter the project name [myproject]
+helloworld
+    [input] Is this project deployed as an EAR (with EJB components) or a WAR 
+       (with no EJB support) [ear] (ear,war,)
+
+    [input] Enter the Java package name for your session beans [com.mydomain.helloworld]
+org.jboss.helloworld
+    [input] Enter the Java package name for your entity beans [org.jboss.helloworld]
+
+    [input] Enter the Java package name for your test cases [org.jboss.helloworld.test]
+
+    [input] What kind of database are you using? [hsql] 
+    (hsql,mysql,oracle,postgres,mssql,db2,sybase,)
+mysql
+    [input] Enter the Hibernate dialect for your database [org.hibernate.dialect.MySQLDialect]
+
+    [input] Enter the filesystem path to the JDBC driver jar [lib/hsqldb.jar]
+../../mysql-connector.jar
+    [input] Enter JDBC driver class for your database [com.mysql.jdbc.Driver]
+
+    [input] Enter the JDBC URL for your database [jdbc:mysql:///test]
+
+    [input] Enter database username [sa]
+gavin
+    [input] Enter database password []
+
+    [input] Are you working with tables that already exist in the database? [n] (y,n,)
+y
+    [input] Do you want to drop and recreate the database tables and data in import.sql 
+    each time you deploy? [n] (y,n,)
+n
+[propertyfile] Creating new property file: C:\Projects\jboss-seam\seam-gen\build.properties
+     [echo] Installing JDBC driver jar to JBoss server
+     [echo] Type &#39;seam new-project&#39; to create the new project
+
+BUILD SUCCESSFUL
+Total time: 1 minute 17 seconds
+C:\Projects\jboss-seam&gt;
+</programlisting>
+		<para>
+			The tool provides sensible defaults, which you can accept by just pressing enter at the prompt.
+		</para>
+		<para>
+			The most important choice you need to make is between EAR deployment and WAR deployment of your project. EAR projects support EJB 3.0 and require Java EE 5. WAR projects do not support EJB 3.0, but may be deployed to a J2EE environment. The packaging of a WAR is also simpler to understand. If you installed JBoss with the ejb3 profile, choose <literal>ear</literal>. Otherwise, choose <literal>war</literal>. We will assume that you have chosen an EAR deployment for the rest of the tutorial, but you can follow exactly the same steps for a WAR deployment.
+		</para>
+		<para>
+			If you are working with an existing data model, make sure you tell seam-gen that the tables already exist in the database.
+		</para>
+		<para>
+			The settings are stored in <literal>seam-gen/build.properties</literal>, but you can also modify them simply by running <literal>seam setup</literal> a second time.
+		</para>
+		<para>
+			Now we can create a new project in our Eclipse workspace directory, by typing:
+		</para>
+<programlisting>seam new-project</programlisting>
+<programlisting>C:\Projects\jboss-seam&gt;seam new-project
+Buildfile: C:\Projects\jboss-seam\seam-gen\build.xml
+
+validate-workspace:
+
+validate-project:
+
+copy-lib:
+     [echo] Copying project jars ...
+     [copy] Copying 32 files to C:\Projects\helloworld\lib
+     [copy] Copying 9 files to C:\Projects\helloworld\embedded-ejb
+
+file-copy-wtp:
+
+file-copy:
+     [echo] Copying project resources ...
+     [copy] Copying 12 files to C:\Projects\helloworld\resources
+     [copy] Copying 1 file to C:\Projects\helloworld\resources
+     [copy] Copying 5 files to C:\Projects\helloworld\view
+     [copy] Copying 5 files to C:\Projects\helloworld
+    [mkdir] Created dir: C:\Projects\helloworld\src
+
+new-project:
+     [echo] A new Seam project named &#39;helloworld&#39; was created in the /Users/gavin/Documents/workspace directory
+     [echo] Type &#39;seam explode&#39; and go to http://localhost:8080/helloworld
+     [echo] Eclipse Users: Add the project into Eclipse using File &gt; New &gt; Project and select General &gt; Project (not Java Project)
+     [echo] NetBeans Users: Open the project in NetBeans
+
+BUILD SUCCESSFUL
+Total time: 7 seconds
+C:\Projects\jboss-seam&gt;
+</programlisting>
+		<para>
+			This copies the Seam jars, dependent jars and the JDBC driver jar to a new Eclipse project, and generates all needed resources and configuration files, a facelets template file and stylesheet, along with Eclipse metadata and an Ant build script. The Eclipse project will be automatically deployed to an exploded directory structure in JBoss AS as soon as you add the project using <literal>New -&gt; Project... -&gt; General -&gt; Project -&gt; Next</literal>, typing the <literal>Project name</literal> (<literal>helloworld</literal> in this case), and then clicking <literal>Finish</literal>. Do not select <literal>Java Project</literal> from the New Project wizard.
+		</para>
+		<para>
+			If your default JDK in Eclipse is not a Java SE 5 or Java SE 6 JDK, you will need to select a Java SE 5 compliant JDK using <literal>Project -&gt; Properties -&gt; Java Compiler</literal>.
+		</para>
+		<para>
+			Alternatively, you can deploy the project from outside Eclipse by typing <literal>seam explode</literal>.
+		</para>
+		<para>
+			Go to <literal>http://localhost:8080/helloworld</literal> to see a welcome page. This is a facelets page, <literal>view/home.xhtml</literal>, using the template <literal>view/layout/template.xhtml</literal>. You can edit this page, or the template, in eclipse, and see the results <emphasis>immediately</emphasis>, by clicking refresh in your browser.
+		</para>
+		<para>
+			Do not get scared by the XML configuration documents that were generated into the project directory. They are mostly standard Java EE stuff, the stuff you need to create once and then never look at again, and they are 90% the same between all Seam projects. (They are so easy to write that even seam-gen can do it.)
+		</para>
+		<para>
+			The generated project includes three database and persistence configurations. The <literal>jboss-beans.xml</literal>, <literal>persistence-test.xml</literal> and <literal>import-test.sql</literal> files are used when running the TestNG unit tests against HSQLDB. The database schema and the test data in <literal>import-test.sql</literal> is always exported to the database before running tests. The <literal>myproject-dev-ds.xml</literal>, <literal>persistence-dev.xml</literal>and <literal>import-dev.sql</literal> files are for use when deploying the application to your development database. The schema might be exported automatically at deployment, depending upon whether you told seam-gen that you are working with an existing database. The <literal>myproject-prod-ds.xml</literal>, <literal>persistence-prod.xml</literal>and <literal>import-prod.sql</literal> files are for use when deploying the application to your production database. The schema is not exported automatically!
  at deployment.
+		</para>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Getting_started_with_Seam_using_seam_gen-Creating_a_new_action">
+		<title>Creating a new action</title>
+		<para>
+			If you are used to traditional action-style web frameworks, you are probably wondering how you can create a simple webpage with a stateless action method in Java. If you type:
+		</para>
+<programlisting>seam new-action</programlisting>
+		<para>
+			Seam will prompt for some information, and generate a new facelets page and Seam component for your project.
+		</para>
+<programlisting>C:\Projects\jboss-seam&gt;seam new-action ping
+Buildfile: C:\Projects\jboss-seam\seam-gen\build.xml
+
+validate-workspace:
+
+validate-project:
+
+action-input:
+    [input] Enter the Seam component name
+ping
+    [input] Enter the local interface name [Ping]
+
+    [input] Enter the bean class name [PingBean]
+
+    [input] Enter the action method name [ping]
+
+    [input] Enter the page name [ping]
+
+
+setup-filters:
+
+new-action:
+     [echo] Creating a new stateless session bean component with an action method
+     [copy] Copying 1 file to C:\Projects\hello\src\com\hello
+     [copy] Copying 1 file to C:\Projects\hello\src\com\hello
+     [copy] Copying 1 file to C:\Projects\hello\src\com\hello\test
+     [copy] Copying 1 file to C:\Projects\hello\src\com\hello\test
+     [copy] Copying 1 file to C:\Projects\hello\view
+     [echo] Type &#39;seam restart&#39; and go to 
+     http://localhost:8080/helloworld/ping.seam
+
+BUILD SUCCESSFUL
+Total time: 13 seconds
+C:\Projects\jboss-seam&gt;
+</programlisting>
+		<para>
+			Because we have added a new Seam component, we need to restart the exploded directory deployment. You can do this by typing <literal>seam restart</literal>, or by running the <literal>restart</literal> target in the generated project <literal>build.xml</literal> file from inside Eclipse. Another way to force a restart is to edit the file <literal>resources/META-INF/application.xml</literal> in Eclipse. <emphasis>Note that you do not need to restart JBoss each time you change the application.</emphasis>
+		</para>
+		<para>
+			Now go to <literal>http://localhost:8080/helloworld/ping.seam</literal> and click the button. You can see the code behind this action by looking in the project <literal>src</literal> directory. Put a breakpoint in the <literal>ping()</literal> method, and click the button again.
+		</para>
+		<para>
+			Finally, locate the <literal>PingTest.xml</literal> file in the test package and run the integration tests using the TestNG plugin for Eclipse. Alternatively, run the tests using <literal>seam test</literal> or the <literal>test</literal> target of the generated build.
+		</para>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Getting_started_with_Seam_using_seam_gen-Creating_a_form_with_an_action">
+		<title>Creating a form with an action</title>
+		<para>
+			The next step is to create a form. Type:
+		</para>
+<programlisting>seam new-form</programlisting>
+<programlisting>C:\Projects\jboss-seam&gt;seam new-form
+Buildfile: C:\Projects\jboss-seam\seam-gen\build.xml
+
+validate-workspace:
+
+validate-project:
+
+action-input:
+    [input] Enter the Seam component name
+hello
+    [input] Enter the local interface name [Hello]
+
+    [input] Enter the bean class name [HelloBean]
+
+    [input] Enter the action method name [hello]
+
+    [input] Enter the page name [hello]
+
+
+setup-filters:
+
+new-form:
+     [echo] Creating a new stateful session bean component with an action method
+     [copy] Copying 1 file to C:\Projects\hello\src\com\hello
+     [copy] Copying 1 file to C:\Projects\hello\src\com\hello
+     [copy] Copying 1 file to C:\Projects\hello\src\com\hello\test
+     [copy] Copying 1 file to C:\Projects\hello\view
+     [copy] Copying 1 file to C:\Projects\hello\src\com\hello\test
+     [echo] Type &#39;seam restart&#39; and go to http://localhost:8080/hello/hello.seam
+
+BUILD SUCCESSFUL
+Total time: 5 seconds
+C:\Projects\jboss-seam&gt;
+</programlisting>
+		<para>
+			Restart the application again, and go to <literal>http://localhost:8080/helloworld/hello.seam</literal>. Then take a look at the generated code. Run the test. Try adding some new fields to the form and Seam component (remember to restart the deploment each time you change the Java code).
+		</para>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Getting_started_with_Seam_using_seam_gen-Generating_an_application_from_an_existing_database">
+		<title>Generating an application from an existing database</title>
+		<para>
+			Manually create some tables in your database. (If you need to switch to a different database, just run <literal>seam setup</literal> again.) Now type:
+		</para>
+<programlisting>seam generate-entities</programlisting>
+		<para>
+			Restart the deployment, and go to <literal>http://localhost:8080/helloworld</literal>. You can browse the database, edit existing objects, and create new objects. If you look at the generated code, you will probably be amazed how simple it is. Seam was designed so that data access code is easy to write by hand, even for people who do not want to cheat by using seam-gen.
+		</para>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Getting_started_with_Seam_using_seam_gen-Deploying_the_application_as_an_EAR">
+		<title>Deploying the application as an EAR</title>
+		<para>
+			Finally, we want to be able to deploy the application using standard Java EE 5 packaging. First, we need to remove the exploded directory by running <literal>seam unexplode</literal>. To deploy the EAR, we can type <literal>seam deploy</literal> at the command prompt, or run the <literal>deploy</literal> target of the generated project build script. You can undeploy using <literal>seam undeploy</literal> or the <literal>undeploy</literal> target.
+		</para>
+		<para>
+			By default, the application will be deployed with the <emphasis>dev profile</emphasis>. The EAR will include the <literal>persistence-dev.xml</literal> and <literal>import-dev.sql</literal> files, and the <literal>myproject-dev-ds.xml</literal> file will be deployed. You can change the profile, and use the <emphasis>prod profile</emphasis>, by typing
+		</para>
+<programlisting>seam -Dprofile=prod deploy</programlisting>
+		<para>
+			You can even define new deployment profiles for your application. Just add appropriately named files to your project&mdash;for example, <literal>persistence-staging.xml</literal>, <literal>import-staging.sql</literal> and <literal>myproject-staging-ds.xml</literal>&mdash;and select the name of the profile using <literal>-Dprofile=staging</literal>.
+		</para>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Getting_started_with_Seam_using_seam_gen-Seam_and_incremental_hot_deployment">
+		<title>Seam and incremental hot deployment</title>
+		<para>
+			When you deploy your Seam application as an exploded directory, you will get some support for incremental hot deployment at development time. You need to enable debug mode in both Seam and Facelets, by adding this line to <literal>components.xml</literal>:
+		</para>
+<programlisting>&lt;core:init debug="true"/&gt;</programlisting>
+		<para>
+			Now, the following files may be redeployed without requiring a full restart of the web application:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					any facelets page
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					any <literal>pages.xml</literal> file
+				</para>
+			</listitem>
+		</itemizedlist>
+		<para>
+			But if we want to change any Java code, we still need to do a full restart of the application. (In JBoss this may be accomplished by touching the toplevel deployment descriptor: <literal>application.xml</literal> for an EAR deployment, or <literal>web.xml</literal> for a WAR deployment.)
+		</para>
+		<para>
+			But if you really want a fast edit/compile/test cycle, Seam supports incremental redeployment of JavaBean components. To make use of this functionality, you must deploy the JavaBean components into the <literal>WEB-INF/dev</literal> directory, so that they will be loaded by a special Seam classloader, instead of by the WAR or EAR classloader.
+		</para>
+		<para>
+			You need to be aware of the following limitations:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					the components must be JavaBean components, they cannot be EJB3 beans (we are working on fixing this limitation)
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					entities can never be hot-deloyed
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					components deployed via <literal>components.xml</literal> may not be hot-deployed
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					the hot-deployable components will not be visible to any classes deployed outside of <literal>WEB-INF/dev</literal>
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					Seam debug mode must be enabled
+				</para>
+			</listitem>
+		</itemizedlist>
+		<para>
+			If you create a WAR project using seam-gen, incremental hot deployment is available out of the box for classes in the <literal>src/action</literal> source directory. However, seam-gen does not support incremental hot deployment for EAR projects.
+		</para>
+	</section>
+
+</chapter>
+


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Gettingstarted.xml
___________________________________________________________________
Name: svn:executable
   + *

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/I18n.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/I18n.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/I18n.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,217 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Seam_Reference_Guide-Internationalization_and_themes">
+	<title>Internationalization and themes</title>
+	<para>
+		Seam makes it easy to build internationalized applications by providing several built-in components for handling multi-language UI messages.
+	</para>
+	<section id="Seam_Reference_Guide-Internationalization_and_themes-Locales">
+		<title>Locales</title>
+		<para>
+			Each user login session has an associated instance of <literal>java.util.Locale</literal> (available to the application as a session-scoped component named <literal>locale</literal>). Under normal circumstances, you will not need to do any special configuration to set the locale. Seam just delegates to JSF to determine the active locale:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>If there is a locale associated with the HTTP request (the browser locale), and that locale is in the list of supported locales from <literal>faces-config.xml</literal>, use that locale for the rest of the session.</para>
+			</listitem>
+			<listitem>
+				<para>Otherwise, if a default locale was specified in the <literal>faces-config.xml</literal>, use that locale for the rest of the session.</para>
+			</listitem>
+			<listitem>
+				<para>Otherwise, use the default locale of the server.</para>
+			</listitem>
+		</itemizedlist>
+		<para>
+			It is <emphasis>possible</emphasis> to set the locale manually via the Seam configuration properties <literal>org.jboss.seam.core.localeSelector.language</literal>, <literal>org.jboss.seam.core.localeSelector.country</literal> and <literal>org.jboss.seam.core.localeSelector.variant</literal>, but we cannot think of any good reason to ever do this.
+		</para>
+		<para>
+			It is, however, useful to allow the user to set the locale manually via the application user interface. Seam provides built-in functionality for overriding the locale determined by the algorithm above. All you have to do is add the following fragment to a form in your JSP or Facelets page:
+		</para>
+<programlisting>&lt;h:selectOneMenu value="#{localeSelector.language}"&gt;
+    &lt;f:selectItem itemLabel="English" itemValue="en"/&gt;
+    &lt;f:selectItem itemLabel="Deutsch" itemValue="de"/&gt;
+    &lt;f:selectItem itemLabel="Francais" itemValue="fr"/&gt;
+&lt;/h:selectOneMenu&gt;
+&lt;h:commandButton action="#{localeSelector.select}" value="#{messages[&#39;ChangeLanguage&#39;]}"/&gt;
+</programlisting>
+		<para>
+			Or, if you want a list of all supported locales from <literal>faces-config.xml</literal>, just use:
+		</para>
+<programlisting>&lt;h:selectOneMenu value="#{localeSelector.localeString}"&gt;
+    &lt;f:selectItems value="#{localeSelector.supportedLocales}"/&gt;
+&lt;/h:selectOneMenu&gt;
+&lt;h:commandButton action="#{localeSelector.select}" value="#{messages[&#39;ChangeLanguage&#39;]}"/&gt;
+</programlisting>
+		<para>
+			When this use selects an item from the drop-down, and clicks the button, the Seam and JSF locales will be overridden for the rest of the session.
+		</para>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Internationalization_and_themes-Labels">
+		<title>Labels</title>
+		<para>
+			JSF supports internationalization of user interface labels and descriptive text via the use of <literal>&lt;f:loadBundle /&gt;</literal>. You can use this approach in Seam applications. Alternatively, you can take advantage of the Seam <literal>messages</literal> component to display templated labels with embedded EL expressions.
+		</para>
+		<section id="Seam_Reference_Guide-Labels-Defining_labels">
+			<title>Defining labels</title>
+			<para>
+				Each login session has an associated instance of <literal>java.util.ResourceBundle</literal> (available to the application as a session-scoped component named <literal>org.jboss.seam.core.resourceBundle</literal>). You&#39;ll need to make your internationalized labels available via this special resource bundle. By default, the resource bundle used by Seam is named <literal>messages</literal> and so you&#39;ll need to define your labels in files named <literal>messages.properties</literal>, <literal>messages_en.properties</literal>, <literal>messages_en_AU.properties</literal>, etc. These files usually belong in the <literal>WEB-INF/classes</literal> directory.
+			</para>
+			<para>
+				So, in <literal>messages_en.properties</literal>:
+			</para>
+<programlisting>Hello=Hello</programlisting>
+			<para>
+				And in <literal>messages_en_AU.properties</literal>:
+			</para>
+<programlisting>Hello=G&#39;day</programlisting>
+			<para>
+				You can select a different name for the resource bundle by setting the Seam configuration property named <literal>org.jboss.seam.core.resourceBundle.bundleNames</literal>. You can even specify a list of resource bundle names to be searched (depth first) for messages.
+			</para>
+<programlisting>&lt;core:resource-bundle&gt;
+    &lt;core:bundle-names&gt;
+        &lt;value&gt;mycompany_messages&lt;/value&gt;
+        &lt;value&gt;standard_messages&lt;/value&gt;       
+    &lt;/core:bundle-names&gt;
+&lt;/core:resource-bundle&gt;
+</programlisting>
+			<para>
+				If you want to define a message just for a particular page, you can specify it in a resource bundle with the same name as the JSF view id, with the leading <literal>/</literal> and trailing file extension removed. So we could put our message in <literal>welcome/hello_en.properties</literal> if we only needed to display the message on <literal>/welcome/hello.jsp</literal>.
+			</para>
+			<para>
+				You can even specify an explicit bundle name in <literal>pages.xml</literal>:
+			</para>
+<programlisting>&lt;page view-id="/welcome/hello.jsp" bundle="HelloMessages"/&gt;</programlisting>
+			<para>
+				Then we could use messages defined in <literal>HelloMessages.properties</literal> on <literal>/welcome/hello.jsp</literal>.
+			</para>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Labels-Displaying_labels">
+			<title>Displaying labels</title>
+			<para>
+				If you define your labels using the Seam resource bundle, you will be able to use them without having to type <literal>&lt;f:loadBundle ... /&gt;</literal> on every page. Instead, you can simply type:
+			</para>
+<programlisting>&lt;h:outputText value="#{messages[&#39;Hello&#39;]}"/&gt;</programlisting>
+			<para>
+				or:
+			</para>
+<programlisting>&lt;h:outputText value="#{messages.Hello}"/&gt;</programlisting>
+			<para>
+				Even better, the messages themselves may contain EL expressions:
+			</para>
+<programlisting>Hello=Hello, #{user.firstName} #{user.lastName}</programlisting>
+<programlisting>Hello=G&#39;day, #{user.firstName}</programlisting>
+			<para>
+				You can even use the messages in your code:
+			</para>
+<programlisting>@In private Map&lt;String, String&gt; messages;</programlisting>
+<programlisting>@In("#{messages[&#39;Hello&#39;]}") private String helloMessage;</programlisting>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Labels-Faces_messages">
+			<title>Faces messages</title>
+			<para>
+				The <literal>facesMessages</literal> component is a super-convenient way to display success or failure messages to the user. The functionality we just described also works for faces messages:
+			</para>
+<programlisting>@Name("hello")
+ at Stateless
+public class HelloBean implements Hello {
+    @In FacesMessages facesMessages;
+    
+    public String sayIt() {
+        facesMessages.addFromResourceBundle("Hello");
+    }
+}
+</programlisting>
+			<para>
+				This will display <literal>Hello, Gavin King</literal> or <literal>G&#39;day, Gavin</literal>, depending upon the user&#39;s locale.
+			</para>
+		</section>
+
+	</section>
+	
+	<section id="Seam_Reference_Guide-Internationalization_and_themes-Timezones">
+		<title>Timezones</title>
+		<para>
+			There is also a session-scoped instance of <literal>java.util.Timezone</literal>, named <literal>org.jboss.seam.core.timezone</literal>, and a Seam component for changing the timezone named <literal>org.jboss.seam.core.timezoneSelector</literal>. By default, the timezone is the default timezone of the server. Unfortunately, the JSF specification says that all dates and times should be assumed to be UTC, and displayed as UTC, unless a timezone is explicitly specified using <literal>&lt;f:convertDateTime&gt;</literal>. This is an extremely inconvenient default behavior.
+		</para>
+		<para>
+			Seam overrides this behavior, and defaults all dates and times to the Seam timezone. In addition, Seam provides the <literal>&lt;s:convertDateTime&gt;</literal> tag which always performs conversions in the Seam timezone.
+		</para>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Internationalization_and_themes-Themes">
+		<title>Themes</title>
+		<para>
+			Seam applications are also very easily skinnable. The theme API is very similar to the localization API, but of course these two concerns are orthogonal, and some applications support both localization and themes.
+		</para>
+		<para>
+			First, configure the set of supported themes:
+		</para>
+<programlisting>&lt;theme:theme-selector cookie-enabled="true"&gt;
+    &lt;theme:available-themes&gt;
+        &lt;value&gt;default&lt;/value&gt;
+        &lt;value&gt;accessible&lt;/value&gt;
+        &lt;value&gt;printable&lt;/value&gt;
+    &lt;/theme:available-themes&gt;
+&lt;/theme:theme-selector&gt;
+</programlisting>
+<note>
+		<para>
+			The first theme listed is the default theme.
+		</para>
+	</note>
+		<para>
+			Themes are defined in a properties file with the same name as the theme. For example, the <literal>default</literal> theme is defined as a set of entries in <literal>default.properties</literal>. For example, <literal>default.properties</literal> might define:
+		</para>
+<programlisting>css ../screen.css
+template template.xhtml
+</programlisting>
+		<para>
+			Usually the entries in a theme resource bundle will be paths to CSS styles or images and names of facelets templates (unlike localization resource bundles which are usually text).
+		</para>
+		<para>
+			Now we can use these entries in our JSP or facelets pages. For example, to theme the stylesheet in a facelets page:
+		</para>
+<programlisting>&lt;link href="#{theme.css}" rel="stylesheet" type="text/css" /&gt;</programlisting>
+		<para>
+			Most powerfully, facelets lets us theme the template used by a <literal>&lt;ui:composition&gt;</literal>:
+		</para>
+<programlisting>&lt;ui:composition xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:ui="http://java.sun.com/jsf/facelets"
+    xmlns:h="http://java.sun.com/jsf/html"
+    xmlns:f="http://java.sun.com/jsf/core"
+    template="#{theme.template}"&gt;
+</programlisting>
+		<para>
+			Just like the locale selector, there is a built-in theme selector to allow the user to freely switch themes:
+		</para>
+<programlisting>&lt;h:selectOneMenu value="#{themeSelector.theme}"&gt;
+    &lt;f:selectItems value="#{themeSelector.themes}"/&gt;
+&lt;/h:selectOneMenu&gt;
+&lt;h:commandButton action="#{themeSelector.select}" value="Select Theme"/&gt;
+</programlisting>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Internationalization_and_themes-Persisting_locale_and_theme_preferences_via_cookies">
+		<title>Persisting locale and theme preferences via cookies</title>
+		<para>
+			The locale selector, theme selector and timezone selector all support persistence of locale and theme preference to a cookie. Simply set the <literal>cookie-enabled</literal> configuration property:
+		</para>
+<programlisting>&lt;theme:theme-selector cookie-enabled="true"&gt;
+    &lt;theme:available-themes&gt;
+        &lt;value&gt;default&lt;/value&gt;
+        &lt;value&gt;accessible&lt;/value&gt;
+        &lt;value&gt;printable&lt;/value&gt;
+    &lt;/theme:available-themes&gt;
+&lt;/theme:theme-selector&gt;
+
+&lt;core:locale-selector cookie-enabled="true"/&gt;
+</programlisting>
+	</section>
+
+</chapter>
+


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/I18n.xml
___________________________________________________________________
Name: svn:executable
   + *

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Itext.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Itext.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Itext.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1076 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Seam_Reference_Guide-iText_PDF_generation">
+	<title>iText PDF generation</title>
+	<para>
+		Seam now includes an component set for generating documents using iText. The primary focus of Seam&#39;s iText document support is for the generation of PDF doucuments, but Seam also offers basic support for RTF document generation.
+	</para>
+	<section id="Seam_Reference_Guide-iText_PDF_generation-Using_PDF_Support">
+		<title>Using PDF Support</title>
+		<para>
+			iText support is provided by <literal>jboss-seam-pdf.jar</literal>. This JAR contains the iText JSF controls, which are used to construct views that can render to PDF, and the DocumentStore component, which serves the rendered documents to the user. To include PDF support in your application, included <literal>jboss-seam-pdf.jar</literal> in your <literal>WEB-INF/lib</literal> directory along with the iText JAR file. There is no further configuration needed to use Seam&#39;s iText support.
+		</para>
+		<para>
+			The Seam iText module requires the use of Facelets as the view technology. Future versions of the library may also support the use of JSP. Additionally, it requires the use of the seam-ui package.
+		</para>
+		<para>
+			The <literal>examples/itext</literal> project contains an example of the PDF support in action. It demonstrates proper deployment packaging, and it contains a number examples that demonstrate the key PDF generation features current supported.
+		</para>
+	</section>
+	
+	<section id="Seam_Reference_Guide-iText_PDF_generation-Creating_a_document">
+		<title>Creating a document</title>
+		<para>
+			Documents are generated by facelets documents using tags in the <literal>http://jboss.com/products/seam/pdf</literal> namespace. Documents should always have the <literal>document</literal> tag at the root of the document. The <literal>document</literal> tag prepares Seam to generate a document into the DocumentStore and renders an HTML redirect to that stored content. The following is a a small PDF document consisting only a single line of text:
+		</para>
+<programlisting>
+&lt;p:document xmlns:p="http://jboss.com/products/seam/pdf"&gt;                                                      
+   The document goes here.                                                                                             
+&lt;/p:document&gt;
+        
+</programlisting>
+		<section id="Seam_Reference_Guide-Creating_a_document-pdocument">
+			<title>p:document</title>
+			<para>
+				The <literal>p:document</literal> tag supports the following attributes:
+			</para>
+			<variablelist>
+				<varlistentry>
+					<term><literal>type</literal></term>
+					<listitem>
+						<para>
+							The type of the document to be produced. Valid values are <literal>PDF</literal>, <literal>RTF</literal> and <literal>HTML</literal> modes. Seam defaults to PDF generation, and many of the features only work correctly when generating PDF documents.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>pageSize</literal></term>
+					<listitem>
+						<para>
+							The size of the page to be generate. The most commonly used values would be <literal>LETTER</literal> and <literal>A4</literal>. A full list of supported pages sizes can be found in <literal>com.lowagie.text.PageSize</literal> class. Alternatively, pageSize can provide the width and height of the page directly. The value <emphasis>612 792</emphasis>, for example, is equizalent to the LETTER page size.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>orientation</literal></term>
+					<listitem>
+						<para>
+							The orientation of the page. Valid values are <literal>portrait</literal> and <literal>landscape</literal>. In landscape mode, the height and width page size values are reversed.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>margins</literal></term>
+					<listitem>
+						<para>
+							The left, right, top and bottom margin values.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>marginMirroring</literal></term>
+					<listitem>
+						<para>
+							Indicates that margin settings should be reversed an alternating pages.
+						</para>
+					</listitem>
+				</varlistentry>
+			</variablelist>
+			<para>
+				Document metadata is also set as attributes of the document tag. The following metadata fields are supported:
+			</para>
+			<variablelist>
+				<varlistentry>
+					<term><literal>title</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>subject</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>keywords</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>author</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>creator</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+			</variablelist>
+		</section>
+
+	</section>
+	
+	<section id="Seam_Reference_Guide-iText_PDF_generation-Basic_Text_Elements">
+		<title>Basic Text Elements</title>
+		<para>
+			Useful documents will need to contain more than just text; however, the standard UI components are geared towards HTML generation and are not useful for generating PDF content. Instead, Seam provides a special UI components for generating suitable PDF content. Tags like <literal>&lt;p:image&gt;</literal> and <literal>&lt;p:paragraph&gt;</literal> are the basic foundations of simple documents. Tags like <literal>&lt;p:font&gt;</literal> provide style information to all the content surrounging them.
+		</para>
+<programlisting>
+&lt;p:document xmlns:p="http://jboss.com/products/seam/pdf"&gt; 
+    &lt;p:image alignment="right" wrap="true" resource="/logo.jpg" /&gt;
+    &lt;p:font size="24"&gt;
+        &lt;p:paragraph spacingAfter="50"&gt;My First Document&lt;/p:paragraph&gt;
+    &lt;/p:font&gt;
+
+    &lt;p:paragraph alignment="justify"&gt;
+        This is a simple document.  It isn&#39;t very fancy.
+    &lt;/p:paragraph&gt;
+&lt;/p:document&gt;
+        
+</programlisting>
+		<section id="Seam_Reference_Guide-Basic_Text_Elements-pparagraph">
+			<title>p:paragraph</title>
+			<para>
+				Most uses of text should be sectioned into paragraphs so that text fragments can be flowed, formatted and styled in logical groups.
+			</para>
+			<variablelist>
+				<varlistentry>
+					<term><literal>firstLineIndent</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>extraParagraphSpace</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>leading</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>multipliedLeading</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>spacingBefore</literal></term>
+					<listitem>
+						<para>
+							The blank space to be inserted before the element.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>spacingAfter</literal></term>
+					<listitem>
+						<para>
+							The blank space to be inserted after the element.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>indentationLeft</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>indentationRight</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>keepTogether</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+			</variablelist>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Basic_Text_Elements-ptext">
+			<title>p:text</title>
+			<para>
+				The <literal>text</literal> tag allows text fragments to be produced from application data using normal JSF converter mechanisms. It is very similar to the <literal>outputText</literal> tag used when rendering HTML documents. Here is an example:
+			</para>
+<programlisting>
+&lt;p:paragraph&gt;
+    The item costs &lt;p:text value="#{product.price}"&gt;
+        &lt;f:convertNumber type="currency" currencySymbol="$"/&gt;
+    &lt;/p:text&gt;
+&lt;/p:paragraph&gt;
+            
+</programlisting>
+			<variablelist>
+				<varlistentry>
+					<term><literal>value</literal></term>
+					<listitem>
+						<para>
+							The value to be displayed. This will typically be a value binding expression.
+						</para>
+					</listitem>
+				</varlistentry>
+			</variablelist>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Basic_Text_Elements-pfont">
+			<title>p:font</title>
+			<para>
+				Font declarations have no direct
+			</para>
+			<variablelist>
+				<varlistentry>
+					<term><literal>familyName</literal></term>
+					<listitem>
+						<para>
+							The font family. One of: <literal>COURIER</literal>, <literal>HELVETICA</literal>, <literal>TIMES-ROMAN</literal>, <literal>SYMBOL</literal> or <literal>ZAPFDINGBATS</literal>.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>size</literal></term>
+					<listitem>
+						<para>
+							The point size of the font.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>style</literal></term>
+					<listitem>
+						<para>
+							The font styles. Any combination of : <literal>NORMAL</literal>, <literal>BOLD</literal>, <literal>ITALIC</literal>, <literal>OBLIQUE</literal>, <literal>UNDERLINE</literal>, <literal>LINE-THROUGH</literal>
+						</para>
+					</listitem>
+				</varlistentry>
+			</variablelist>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Basic_Text_Elements-pnewPage">
+			<title>p:newPage</title>
+			<para>
+				<literal>p:newPage</literal> inserts a page break.
+			</para>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Basic_Text_Elements-pimage">
+			<title>p:image</title>
+			<para>
+				<literal>p:image</literal> inserts an image into the document. Images can be be loaded from the classpath or from the web application context using the <literal>resource</literal> attribute.
+			</para>
+<programlisting>&lt;p:image resource="/jboss.jpg" /&gt;</programlisting>
+			<para>
+				Resources can also be dynamically generated by application code. The <literal>imageData</literal> attribute can specify a value binding expression whose value is a <literal>java.awt.Image</literal> object.
+			</para>
+<programlisting>&lt;p:image imageData="#{images.chart}" /&gt;</programlisting>
+			<variablelist>
+				<varlistentry>
+					<term><literal>resource</literal></term>
+					<listitem>
+						<para>
+							The location of the image resource to be included. Resources should be relative to the document root of the web application.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>imageData</literal></term>
+					<listitem>
+						<para>
+							A method expression binding to an application-generated image.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>rotation</literal></term>
+					<listitem>
+						<para>
+							The rotation of the image in degrees.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>height</literal></term>
+					<listitem>
+						<para>
+							The height of the image.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>width</literal></term>
+					<listitem>
+						<para>
+							The width of the image.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>alignment</literal></term>
+					<listitem>
+						<para>
+							The alignment of the image. (see <xref linkend="Seam_Reference_Guide-Document_Constants-Alignment_Values" /> for possible values)
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>alt</literal></term>
+					<listitem>
+						<para>
+							Alternative text representation for the image.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>indentationLeft</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>indentationRight</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>spacingBefore</literal></term>
+					<listitem>
+						<para>
+							The blank space to be inserted before the element.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>spacingAfter</literal></term>
+					<listitem>
+						<para>
+							The blank space to be inserted after the element.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>widthPercentage</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>initialRotation</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>dpi</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>scalePercent</literal></term>
+					<listitem>
+						<para>
+							The scaling factor (as a percentage) to use for the image. This can be expressed as a single percentage value or as two percentage values representing separate x and y scaling percentages.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>wrap</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>underlying</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+			</variablelist>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Basic_Text_Elements-panchor">
+			<title>p:anchor</title>
+			<para>
+				<literal>p:anchor</literal> defines clickable links from a document. It supports the following attributes:
+			</para>
+			<variablelist>
+				<varlistentry>
+					<term><literal>name</literal></term>
+					<listitem>
+						<para>
+							The name of an in-document anchor destination.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>reference</literal></term>
+					<listitem>
+						<para>
+							The destination the link refers to. Links to other points in the document should begin with a <code>#</code>. For example, <code>#link1</code> to refer to an anchor postion with a <literal>name</literal> of <literal>link1</literal>. Links may also be a full URL to point to a resource outside of the document.
+						</para>
+					</listitem>
+				</varlistentry>
+			</variablelist>
+		</section>
+
+	</section>
+	
+	<section id="Seam_Reference_Guide-iText_PDF_generation-Headers_and_Footers">
+		<title>Headers and Footers</title>
+		<section id="Seam_Reference_Guide-Headers_and_Footers-pheader_and_pfooter">
+			<title>p:header and p:footer</title>
+			<para>
+				The <literal>p:header</literal> and <literal>p:footer</literal> components provide the ability to place header and footer text on each page of a generated document, with the exception of the first page. Header and footer declarations should appear near the top of a document.
+			</para>
+			<variablelist>
+				<varlistentry>
+					<term><literal>alignment</literal></term>
+					<listitem>
+						<para>
+							The alignment of the header/footer box section. (see <xref linkend="Seam_Reference_Guide-Document_Constants-Alignment_Values" /> for alignment values)
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>backgroundColor</literal></term>
+					<listitem>
+						<para>
+							The background color of the header/footer box. (see <xref linkend="Seam_Reference_Guide-Document_Constants-Color_Values" /> for color values)
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>borderColor</literal></term>
+					<listitem>
+						<para>
+							The border color of the header/footer box. Individual border sides can be set using <literal>borderColorLeft</literal>, <literal>borderColorRight</literal>, <literal>borderColorTop</literal> and <literal>borderColorBottom</literal>.(see <xref linkend="Seam_Reference_Guide-Document_Constants-Color_Values" /> for color values)
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>borderWidth</literal></term>
+					<listitem>
+						<para>
+							The width of the border. Inidvidual border sides can be specified using <literal>borderWidthLeft</literal>, <literal>borderWidthRight</literal>, <literal>borderWidthTop</literal> and <literal>borderWidthBottom</literal>.
+						</para>
+					</listitem>
+				</varlistentry>
+			</variablelist>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Headers_and_Footers-ppageNumber">
+			<title>p:pageNumber</title>
+			<para>
+				The current page number can be placed inside of a header or footer using the <literal>p:pageNumber</literal> tag. The page number tag can only be used in the context of a header or footer and can only be used once.
+			</para>
+		</section>
+
+	</section>
+	
+	<section id="Seam_Reference_Guide-iText_PDF_generation-Chapters_and_Sections">
+		<title>Chapters and Sections</title>
+		<para>
+			If the generated document follows a book/article structure, the <literal>p:chapter</literal> and <literal>p:section</literal> tags can be used to provide the necessary structure. Sections can only be used inside of chapters, but they may be nested arbitrarily deep. Most PDF viewers provide easy navigation between chapters and sections in a document.
+		</para>
+<programlisting>
+&lt;p:document xmlns:p="http://jboss.com/products/seam/pdf"
+            title="Hello"&gt;
+
+   &lt;p:chapter number="1"&gt;
+      &lt;p:title&gt;&lt;p:paragraph&gt;Hello&lt;/p:paragraph&gt;&lt;/p:title&gt;
+      &lt;p:paragraph&gt;Hello #{user.name}!&lt;/p:paragraph&gt;
+   &lt;/p:chapter&gt;
+
+   &lt;p:chapter number="2"&gt;
+      &lt;p:title&gt;&lt;p:paragraph&gt;Goodbye&lt;/p:paragraph&gt;&lt;/p:title&gt;
+      &lt;p:paragraph&gt;Goodbye #{user.name}.&lt;/p:paragraph&gt;
+   &lt;/p:chapter&gt;
+
+&lt;/p:document&gt;    
+        
+</programlisting>
+		<section id="Seam_Reference_Guide-Chapters_and_Sections-pchapter_and_psection">
+			<title>p:chapter and p:section</title>
+			<variablelist>
+				<varlistentry>
+					<term><literal>number</literal></term>
+					<listitem>
+						<para>
+							The chapter number. Every chapter should be assigned a chapter number.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>numberDepth</literal></term>
+					<listitem>
+						<para>
+							The depth of numbering for section. All sections are numbered relative to their surrounding chapter/sections. The fourth section of of the first section of chapter three would be section 3.1.4, if displayed at the default number depth of three. To omit the chapter number, a number depth of 2 should be used. In that case, the section number would be displayed as 1.4.
+						</para>
+					</listitem>
+				</varlistentry>
+			</variablelist>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Chapters_and_Sections-ptitle">
+			<title>p:title</title>
+			<para>
+				Any chapter or section can contain a <literal>p:title</literal>. The title will be displayed next to the chapter/section number. The body of the title may contain raw text or may be a <literal>p:paragraph</literal>.
+			</para>
+		</section>
+
+	</section>
+	
+	<section id="Seam_Reference_Guide-iText_PDF_generation-Lists">
+		<title>Lists</title>
+		<para>
+			List structures can be displayed using the <literal>p:list</literal> and <literal>p:listItem</literal> tags. Lists may contain arbitrarily-nested sublists. List items may not be used outside of a list. he following document uses the <literal>ui:repeat</literal> tag to to display a list of values retrieved from a Seam component.
+		</para>
+<programlisting>
+&lt;p:document xmlns:p="http://jboss.com/products/seam/pdf"
+            xmlns:ui="http://java.sun.com/jsf/facelets"
+            title="Hello"&gt;
+   &lt;p:list style="numbered"&gt;
+      &lt;ui:repeat value="#{documents}" var="doc"&gt;
+         &lt;p:listItem&gt;#{doc.name}&lt;/p:listItem&gt;
+      &lt;/ui:repeat&gt;
+   &lt;/p:list&gt;
+&lt;/p:document&gt;                
+        
+</programlisting>
+		<section id="Seam_Reference_Guide-Lists-plist">
+			<title>p:list</title>
+			<para>
+				<literal>p:list</literal> supports the following attributes:
+			</para>
+			<variablelist>
+				<varlistentry>
+					<term><literal>style</literal></term>
+					<listitem>
+						<para>
+							The ordering/bulleting style of list. One of: <literal>NUMBERED</literal>, <literal>LETTERED</literal>, <literal>GREEK</literal>, <literal>ROMAN</literal>, <literal>ZAPFDINGBATS</literal>, <literal>ZAPFDINGBATS_NUMBER</literal>. If no style is given, the list items are bulleted.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>listSymbol</literal></term>
+					<listitem>
+						<para>
+							For bulleted lists, specifies the bullet symbol.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>indent</literal></term>
+					<listitem>
+						<para>
+							The indentation level of the list.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>lowerCase</literal></term>
+					<listitem>
+						<para>
+							For list styles using letters, indicates whether the letters should be lower case.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>charNumber</literal></term>
+					<listitem>
+						<para>
+							For ZAPFDINGBATS, indicates the character code of the bullet character.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>numberType</literal></term>
+					<listitem>
+						<para>
+							For ZAPFDINGBATS_NUMBER, indicates the numbering style.
+						</para>
+					</listitem>
+				</varlistentry>
+			</variablelist>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Lists-plistItem">
+			<title>p:listItem</title>
+			<para>
+				<literal>p:listItem</literal> supports the following attributes:
+			</para>
+			<variablelist>
+				<varlistentry>
+					<term><literal>alignment</literal></term>
+					<listitem>
+						<para>
+							The alignment of the list item. (See <xref linkend="Seam_Reference_Guide-Document_Constants-Alignment_Values" /> for possible values)
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>indentationLeft</literal></term>
+					<listitem>
+						<para>
+							The left indentation amount.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>indentationRight</literal></term>
+					<listitem>
+						<para>
+							The right indentation amount.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>listSymbol</literal></term>
+					<listitem>
+						<para>
+							Overrides the default list symbol for this list item.
+						</para>
+					</listitem>
+				</varlistentry>
+			</variablelist>
+		</section>
+
+	</section>
+	
+	<section id="Seam_Reference_Guide-iText_PDF_generation-Tables">
+		<title>Tables</title>
+		<para>
+			Table structures can be created using the <literal>p:table</literal> and <literal>p:cell</literal> tags. Unlike many table structures, there is no explicit row declaration. If a table has 3 columns, then every 3 cells will automatically form a row. Header and footer rows can be declared, and the headers and footers will be repeated in the event a table structure spans multiple pages.
+		</para>
+<programlisting>
+&lt;p:document xmlns:p="http://jboss.com/products/seam/pdf"   
+            xmlns:ui="http://java.sun.com/jsf/facelets"
+            title="Hello"&gt;   
+   &lt;p:table columns="3" headerRows="1"&gt;
+      &lt;p:cell&gt;name&lt;/p:cell&gt;
+      &lt;p:cell&gt;owner&lt;/p:cell&gt;
+      &lt;p:cell&gt;size&lt;/p:cell&gt;
+      &lt;ui:repeat value="#{documents}" var="doc"&gt;
+         &lt;p:cell&gt;#{doc.name}&lt;/p:cell&gt;
+         &lt;p:cell&gt;#{doc.user.name}&lt;/p:cell&gt;
+         &lt;p:cell&gt;#{doc.size}&lt;/p:cell&gt;
+      &lt;/ui:repeat&gt;
+   &lt;/p:table&gt;
+&lt;/p:document&gt;            
+        
+</programlisting>
+		<section id="Seam_Reference_Guide-Tables-ptable">
+			<title>p:table</title>
+			<para>
+				<literal>p:table</literal> supports the following attributes.
+			</para>
+			<variablelist>
+				<varlistentry>
+					<term><literal>columns</literal></term>
+					<listitem>
+						<para>
+							The number of columns (cells) that make up a table row.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>widths</literal></term>
+					<listitem>
+						<para>
+							The relative widths of each column. There should be one value for each column. For example: widths="2 1 1" would indicate that there are 3 columns and the first column should be twice the size of the second and third column.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>headerRows</literal></term>
+					<listitem>
+						<para>
+							The initial number of rows which are considered to be headers or footer rows and should be repeated if the table spans multiple pages.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>footerRows</literal></term>
+					<listitem>
+						<para>
+							The number of rows that are considered to be footer rows. This value is subtracted from the <literal>headerRows</literal> value. If document has 2 rows which make up the header and one row that makes up the footer, <literal>headerRows</literal> should be set to 3 and <literal>footerRows</literal> should be set to 1
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>widthPercentage</literal></term>
+					<listitem>
+						<para>
+							The percentage of the page width that the table spans.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>horizontalAlignment</literal></term>
+					<listitem>
+						<para>
+							The horizontal alignment of the table. (See <xref linkend="Seam_Reference_Guide-Document_Constants-Alignment_Values" /> for possible values)
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>skipFirstHeader</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>runDirection</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>lockedWidth</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>splitRows</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>spacingBefore</literal></term>
+					<listitem>
+						<para>
+							The blank space to be inserted before the element.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>spacingAfter</literal></term>
+					<listitem>
+						<para>
+							The blank space to be inserted after the element.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>extendLastRow</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>headersInEvent</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>splitLate</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>keepTogether</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+			</variablelist>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Tables-pcell">
+			<title>p:cell</title>
+			<para>
+				<literal>p:cell</literal> supports the following attributes.
+			</para>
+			<variablelist>
+				<varlistentry>
+					<term><literal>colspan</literal></term>
+					<listitem>
+						<para>
+							Cells can span more than one column by declaring a <literal>colspan</literal> greater than 1. Tables do not have the ability to span across multiple rows.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>horizontalAlignment</literal></term>
+					<listitem>
+						<para>
+							The horizontal alignment of the cell. (see <xref linkend="Seam_Reference_Guide-Document_Constants-Alignment_Values" /> for possible values)
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>verticalAlignment</literal></term>
+					<listitem>
+						<para>
+							The vertical alignment of the cell. (see <xref linkend="Seam_Reference_Guide-Document_Constants-Alignment_Values" /> for possible values)
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>padding</literal></term>
+					<listitem>
+						<para>
+							Padding on a given side can also be specified using <literal>paddingLeft</literal>, <literal>paddingRight</literal>, <literal>paddingTop</literal> and <literal>paddingBottom</literal>.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>useBorderPadding</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>leading</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>multipliedLeading</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>indent</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>verticalAlignment</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>extraParagraphSpace</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>fixedHeight</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>noWrap</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>minimumHeight</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>followingIndent</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>rightIndent</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>spaceCharRatio</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>runDirection</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>arabicOptions</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>useAscender</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>grayFill</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>rotation</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+			</variablelist>
+		</section>
+
+	</section>
+	
+	<section id="Seam_Reference_Guide-iText_PDF_generation-Document_Constants">
+		<title>Document Constants</title>
+		<para>
+			This section documents some of the constants shared by attributes on multiple tags.
+		</para>
+		<section id="Seam_Reference_Guide-Document_Constants-Color_Values">
+			<title>Color Values</title>
+			<para>
+				Seam documents do not yet support a full color specification. Currently, only named colors are supported. They are: <literal>white</literal>, <literal>gray</literal>, <literal>lightgray</literal>, <literal>darkgray</literal>, <literal>black</literal>, <literal>red</literal>, <literal>pink</literal>, <literal>yellow</literal>, <literal>green</literal>, <literal>magenta</literal>, <literal>cyan</literal> and <literal>blue</literal>.
+			</para>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Document_Constants-Alignment_Values">
+			<title>Alignment Values</title>
+			<para>
+				Where alignment values are used, the Seam PDF supports the following horizontal alignment values: <literal>left</literal>, <literal>right</literal>, <literal>center</literal>, <literal>justify</literal> and <literal>justifyall</literal>. The vertical alignment values are <literal>top</literal>, <literal>middle</literal>, <literal>bottom</literal>, and <literal>baseline</literal>.
+			</para>
+		</section>
+
+	</section>
+	
+	<section id="Seam_Reference_Guide-iText_PDF_generation-Configuring_iText">
+		<title>Configuring iText</title>
+		<para>
+			Document generation works out of the box with no additional configuration needed. However, there are a few points of configuration that are needed for more serious applications.
+		</para>
+		<para>
+			The default implementation serves PDF documents from a generic URL, <literal>/seam-doc.seam</literal>. Many browsers (and users) would prefer to see URLs that contain the actual PDF name like <literal>/myDocument.pdf</literal>. This capability requires some configuration. To serve PDF files, all *.pdf resources should be mapped to the Seam Servlet Filter and to the DocumentStoreServlet:
+		</para>
+<programlisting>
+&lt;filter&gt;
+    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;
+    &lt;filter-class&gt;org.jboss.seam.servlet.SeamServletFilter&lt;/filter-class&gt;
+&lt;/filter&gt;
+
+&lt;filter-mapping&gt;
+    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;
+    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;
+&lt;/filter-mapping&gt;
+
+&lt;servlet&gt;
+    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;
+    &lt;servlet-class&gt;org.jboss.seam.pdf.DocumentStoreServlet&lt;/servlet-class&gt;
+&lt;/servlet&gt;
+
+&lt;servlet-mapping&gt;
+    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;
+    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;
+&lt;/servlet-mapping&gt;
+</programlisting>
+		<para>
+			The <literal>useExtensions</literal> option on the document store component completes the functionality by instructing the document store to generate URLs with the correct filename extension for the document type being generated.
+		</para>
+<programlisting>        
+&lt;components xmlns="http://jboss.com/products/seam/components"
+            xmlns:pdf="http://jboss.com/products/seam/pdf"&gt;
+    &lt;pdf:documentStore useExtensions="true" /&gt;
+&lt;/components&gt;
+</programlisting>
+		<para>
+			Generated documents are stored in conversation scope and will expire when the conversation ends. At that point, references to the document will be invalid. To You can specify a default view to be shown when a document does not exist using the <literal>errorPage</literal> property of the documentStore.
+		</para>
+<programlisting>        
+&lt;pdf:documentStore useExtensions="true" errorPage="/pdfMissing.seam" /&gt;
+</programlisting>
+	</section>
+	
+	<section id="Seam_Reference_Guide-iText_PDF_generation-iText_links">
+		<title>iText links</title>
+		<para>
+			For further information on iText, see:
+		</para>
+		<para>
+			<itemizedlist>
+				<listitem>
+					<para>
+						<ulink url="http://www.lowagie.com/iText/">iText Home Page</ulink>
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						<ulink url="http://www.manning.com/lowagie/">iText in Action</ulink>
+					</para>
+				</listitem>
+			</itemizedlist>
+		</para>
+	</section>
+
+</chapter>
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Jbpm.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Jbpm.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Jbpm.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,572 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Seam_Reference_Guide-Pageflows_and_business_processes">
+	<title>Pageflows and business processes</title>
+	<para>
+		JBoss jBPM is a business process management engine for any Java SE or EE environment. jBPM lets you represent a business process or user interaction as a graph of nodes representing wait states, decisions, tasks, web pages, etc. The graph is defined using a simple, very readable, XML dialect called jPDL, and may be edited and visualised graphically using an eclipse plugin. jPDL is an extensible language, and is suitable for a range of problems, from defining web application page flow, to traditional workflow management, all the way up to orchestration of services in a SOA environment.
+	</para>
+	<para>
+		Seam applications use jBPM for two different problems:
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				Defining the pageflow involved in complex user interactions. A jPDL process definition defines the page flow for a single conversation. A Seam conversation is considered to be a relatively short-running interaction with a single user.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Defining the overarching business process. The business process may span multiple conversations with multiple users. Its state is persistent in the jBPM database, so it is considered long-running. Coordination of the activities of multiple users is a much more complex problem than scripting an interaction with a single user, so jBPM offers sophisticated facilities for task management and dealing with multiple concurrent paths of execution.
+			</para>
+		</listitem>
+	</itemizedlist>
+	<para>
+		 <emphasis>Pageflow</emphasis>, <emphasis>conversation</emphasis> and <emphasis>task</emphasis> all refer to a single interaction with a single user and operate at different levels or granularity. A business process spans many tasks. Futhermore, the two applications of jBPM are totally orthogonal. You can use them together or independently or not at all.
+	</para>
+	<para>
+		You do not have to know jDPL to use Seam. If you are perfectly happy defining pageflow using JSF or Seam navigation rules, and if your application is more data-driven that process-driven, you probably do not need jBPM. But we are finding that thinking of user interaction in terms of a well-defined graphical representation is helping us build more robust applications.
+	</para>
+	<section id="Seam_Reference_Guide-Pageflows_and_business_processes-Pageflow_in_Seam">
+		<title>Pageflow in Seam</title>
+		<para>
+			There are two ways to define pageflow in Seam:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					Using JSF or Seam navigation rules - the <emphasis>stateless navigation model</emphasis>
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					Using jPDL - the <emphasis>stateful navigation model</emphasis>
+				</para>
+			</listitem>
+		</itemizedlist>
+		<para>
+			Very simple applications will only need the stateless navigation model. Very complex applications will use both models in different places. Each model has its strengths and weaknesses!
+		</para>
+		<section id="Seam_Reference_Guide-Pageflow_in_Seam-The_two_navigation_models">
+			<title>The two navigation models</title>
+			<para>
+				The stateless model defines a mapping from a set of named, logical outcomes of an event directly to the resulting page of the view. The navigation rules are entirely oblivious to any state held by the application other than what page was the source of the event. This means that your action listener methods must sometimes make decisions about the page flow, since only they have access to the current state of the application.
+			</para>
+			<para>
+				Here is an example page flow definition using JSF navigation rules:
+			</para>
+<programlisting>&lt;navigation-rule&gt;
+    &lt;from-view-id&gt;/numberGuess.jsp&lt;/from-view-id&gt;
+        
+    &lt;navigation-case&gt;
+        &lt;from-outcome&gt;guess&lt;/from-outcome&gt;
+        &lt;to-view-id&gt;/numberGuess.jsp&lt;/to-view-id&gt;
+        &lt;redirect/&gt;
+    &lt;/navigation-case&gt;
+
+    &lt;navigation-case&gt;
+        &lt;from-outcome&gt;win&lt;/from-outcome&gt;
+        &lt;to-view-id&gt;/win.jsp&lt;/to-view-id&gt;
+        &lt;redirect/&gt;
+    &lt;/navigation-case&gt;
+        
+    &lt;navigation-case&gt;
+        &lt;from-outcome&gt;lose&lt;/from-outcome&gt;
+        &lt;to-view-id&gt;/lose.jsp&lt;/to-view-id&gt;
+        &lt;redirect/&gt;
+    &lt;/navigation-case&gt;
+
+&lt;/navigation-rule&gt;
+</programlisting>
+			<para>
+				Here is the same example page flow definition using Seam navigation rules:
+			</para>
+<programlisting>&lt;page view-id="/numberGuess.jsp"&gt;
+        
+    &lt;navigation&gt;
+        &lt;rule if-outcome="guess"&gt;
+            &lt;redirect view-id="/numberGuess.jsp"/&gt;
+        &lt;/rule&gt;
+        &lt;rule if-outcome="win"&gt;
+            &lt;redirect view-id="/win.jsp"/&gt;
+        &lt;/rule&gt;
+        &lt;rule if-outcome="lose"&gt;
+            &lt;redirect view-id="/lose.jsp"/&gt;
+        &lt;/rule&gt;
+    &lt;/navigation-case&gt;
+
+&lt;/navigation-rule&gt;
+</programlisting>
+			<para>
+				If you find navigation rules overly verbose, you can return view ids directly from your action listener methods:
+			</para>
+<programlisting>public String guess() {
+    if (guess==randomNumber) return "/win.jsp";
+    if (++guessCount==maxGuesses) return "/lose.jsp";
+    return null;
+}
+</programlisting>
+			<para>
+				This results in a redirect. You can even specify parameters to be used in the redirect:
+			</para>
+<programlisting>public String search() {
+    return "/searchResults.jsp?searchPattern=#{searchAction.searchPattern}";
+}
+</programlisting>
+			<para>
+				The stateful model defines a set of transitions between a set of named, logical application states. In this model, it is possible to express the flow of any user interaction entirely in the jPDL pageflow definition, and write action listener methods that are completely unaware of the flow of the interaction.
+			</para>
+			<para>
+				Here is an example page flow definition using jPDL:
+			</para>
+<programlisting>&lt;pageflow-definition name="numberGuess"&gt;
+    
+   &lt;start-page name="displayGuess" view-id="/numberGuess.jsp"&gt;
+      &lt;redirect/&gt;
+      &lt;transition name="guess" to="evaluateGuess"&gt;
+      	&lt;action expression="#{numberGuess.guess}" /&gt;
+      &lt;/transition&gt;
+   &lt;/start-page&gt;
+   
+   &lt;decision name="evaluateGuess" expression="#{numberGuess.correctGuess}"&gt;
+      &lt;transition name="true" to="win"/&gt;
+      &lt;transition name="false" to="evaluateRemainingGuesses"/&gt;
+   &lt;/decision&gt;
+   
+   &lt;decision name="evaluateRemainingGuesses" expression="#{numberGuess.lastGuess}"&gt;
+      &lt;transition name="true" to="lose"/&gt;
+      &lt;transition name="false" to="displayGuess"/&gt;
+   &lt;/decision&gt;
+   
+   &lt;page name="win" view-id="/win.jsp"&gt;
+      &lt;redirect/&gt;
+      &lt;end-conversation /&gt;
+   &lt;/page&gt;
+   
+   &lt;page name="lose" view-id="/lose.jsp"&gt;
+      &lt;redirect/&gt;
+      &lt;end-conversation /&gt;
+   &lt;/page&gt;
+   
+&lt;/pageflow-definition&gt;
+</programlisting>
+			<mediaobject>
+				<imageobject role="fo">
+					<imagedata align="center" fileref="images/plugin-jbpm-numguess.png" />
+				</imageobject>
+			<!--	<imageobject role="html">
+					<imagedata align="center" fileref="../shared/images/plugin-jbpm-numguess.png" />
+				</imageobject> -->
+			</mediaobject>
+			<para>
+				There are two things we notice immediately here:
+			</para>
+			<itemizedlist>
+				<listitem>
+					<para>
+						The JSF/Seam navigation rules are <emphasis>much</emphasis> simpler. (However, this obscures the fact that the underlying Java code is more complex.)
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						The jPDL makes the user interaction immediately understandable, without us needing to even look at the JSP or Java code.
+					</para>
+				</listitem>
+			</itemizedlist>
+			<para>
+				In addition, the stateful model is more <emphasis>constrained</emphasis>. For each logical state (each step in the page flow), there are a constrained set of possible transitions to other states. The stateless model is an <emphasis>ad hoc</emphasis> model which is suitable to relatively unconstrained, freeform navigation where the user decides where he/she wants to go next, not the application.
+			</para>
+			<para>
+				The stateful/stateless navigation distinction is quite similar to the traditional view of modal/modeless interaction. Now, Seam applications are not usually modal in the simple sense of the word - indeed, avoiding application modal behavior is one of the main reasons for having conversations! However, Seam applications can be, and often are, modal at the level of a particular conversation. It is well-known that modal behavior is something to avoid as much as possible; it is very difficult to predict the order in which your users are going to want to do things! However, there is no doubt that the stateful model has its place.
+			</para>
+			<para>
+				The biggest contrast between the two models is the back-button behavior.
+			</para>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Pageflow_in_Seam-Seam_and_the_back_button">
+			<title>Seam and the back button</title>
+			<para>
+				When JSF or Seam navigation rules are used, Seam lets the user freely navigate via the back, forward and refresh buttons. It is the responsibility of the application to ensure that conversational state remains internally consistent when this occurs. Experience with the combination of web application frameworks like Struts or WebWork - that do not support a conversational model - and stateless component models like EJB stateless session beans or the Spring framework has taught many developers that this is close to impossible to do! However, our experience is that in the context of Seam, where there is a well-defined conversational model, backed by stateful session beans, it is actually quite straightforward. Usually it is as simple as combining the use of <literal>no-conversation-view-id</literal> with null checks at the beginning of action listener methods. We consider support for freeform navigation to be almost always desirable.
+			</para>
+			<para>
+				In this case, the <literal>no-conversation-view-id</literal> declaration goes in <literal>pages.xml</literal>. It tells Seam to redirect to a different page if a request originates from a page rendered during a conversation, and that conversation no longer exists:
+			</para>
+<programlisting>&lt;page view-id="/checkout.xhtml" 
+        no-conversation-view-id="/main.xhtml"/&gt;
+</programlisting>
+			<para>
+				On the other hand, in the stateful model, backbuttoning is interpreted as an undefined transition back to a previous state. Since the stateful model enforces a defined set of transitions from the current state, back buttoning is be default disallowed in the stateful model. Seam transparently detects the use of the back button, and blocks any attempt to perform an action from a previous, <emphasis>stale</emphasis> page, and simply redirects the user to the <emphasis>current</emphasis> page (and displays a faces message). Whether you consider this a feature or a limitation of the stateful model depends upon your point of view: as an application developer, it is a feature; as a user, it might be frustrating! You can enable backbutton navigation from a particular page node by setting <literal>back="enabled"</literal>.
+			</para>
+<programlisting>&lt;page name="checkout" 
+        view-id="/checkout.xhtml" 
+        back="enabled"&gt;
+    &lt;redirect/&gt;
+    &lt;transition to="checkout"/&gt;
+    &lt;transition name="complete" to="complete"/&gt;
+&lt;/page&gt;
+</programlisting>
+			<para>
+				This allows backbuttoning <emphasis>from</emphasis> the <literal>checkout</literal> state to <emphasis>any previous state!</emphasis>
+			</para>
+			<para>
+				Of course, we still need to define what happens if a request originates from a page rendered during a pageflow, and the conversation with the pageflow no longer exists. In this case, the <literal>no-conversation-view-id</literal> declaration goes into the pageflow definition:
+			</para>
+<programlisting>&lt;page name="checkout" 
+        view-id="/checkout.xhtml" 
+        back="enabled" 
+        no-conversation-view-id="/main.xhtml"&gt;
+    &lt;redirect/&gt;
+    &lt;transition to="checkout"/&gt;
+    &lt;transition name="complete" to="complete"/&gt;
+&lt;/page&gt;
+</programlisting>
+		
+		<para>
+			In practice, both navigation models have their place, and you will quickly learn to recognize when to prefer one model over the other.
+		</para>
+		</section>
+
+	</section>
+	
+	<section id="Seam_Reference_Guide-Pageflows_and_business_processes-Using_jPDL_pageflows">
+		<title>Using jPDL pageflows</title>
+		<section id="Seam_Reference_Guide-Using_jPDL_pageflows-Installing_pageflows">
+			<title>Installing pageflows</title>
+			<para>
+				We need to install the Seam jBPM-related components, and tell them where to find our pageflow definition. We can specify this Seam configuration in <literal>components.xml</literal>.
+			</para>
+<programlisting>&lt;core:jbpm&gt;
+    &lt;core:pageflow-definitions&gt;
+        &lt;value&gt;pageflow.jpdl.xml&lt;/value&gt;
+    &lt;/core:pageflow-definitions&gt;
+&lt;/core:jbpm&gt;
+</programlisting>
+			<para>
+				The first line installs jBPM, the second points to a jPDL-based pageflow definition.
+			</para>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Using_jPDL_pageflows-Starting_pageflows">
+			<title>Starting pageflows</title>
+			<para>
+				We <emphasis>start</emphasis> a jPDL-based pageflow by specifying the name of the process definition using a <literal>@Begin</literal>, <literal>@BeginTask</literal> or <literal>@StartTask</literal> annotation:
+			</para>
+<programlisting>@Begin(pageflow="numberguess")
+public void begin() { ... }
+</programlisting>
+			<para>
+				Alternatively we can start a pageflow using pages.xml:
+			</para>
+<programlisting>&lt;page&gt;
+        &lt;begin-conversation pageflow="numberguess"/&gt;
+    &lt;/page&gt;
+</programlisting>
+			<para>
+				If we are beginning the pageflow during the <literal>RENDER_RESPONSE</literal> phase&mdash;during a <literal>@Factory</literal> or <literal>@Create</literal> method, for example&mdash;we consider ourselves to be already at the page being rendered, and use a <literal>&lt;start-page&gt;</literal> node as the first node in the pageflow, as in the example above.
+			</para>
+			<para>
+				But if the pageflow is begun as the result of an action listener invocation, the outcome of the action listener determines which is the first page to be rendered. In this case, we use a <literal>&lt;start-state&gt;</literal> as the first node in the pageflow, and declare a transition for each possible outcome:
+			</para>
+<programlisting>&lt;pageflow-definition name="viewEditDocument"&gt;
+
+    &lt;start-state name="start"&gt;
+        &lt;transition name="documentFound" to="displayDocument"/&gt;
+        &lt;transition name="documentNotFound" to="notFound"/&gt;
+    &lt;/start-state&gt;
+    
+    &lt;page name="displayDocument" view-id="/document.jsp"&gt;
+        &lt;transition name="edit" to="editDocument"/&gt;
+        &lt;transition name="done" to="main"/&gt;
+    &lt;/page&gt;
+    
+    ...
+    
+    &lt;page name="notFound" view-id="/404.jsp"&gt;
+        &lt;end-conversation/&gt;
+    &lt;/page&gt;
+    
+&lt;/pageflow-definition&gt;
+</programlisting>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Using_jPDL_pageflows-Page_nodes_and_transitions">
+			<title>Page nodes and transitions</title>
+			<para>
+				Each <literal>&lt;page&gt;</literal> node represents a state where the system is waiting for user input:
+			</para>
+<programlisting>&lt;page name="displayGuess" view-id="/numberGuess.jsp"&gt;
+    &lt;redirect/&gt;
+    &lt;transition name="guess" to="evaluateGuess"&gt;
+        &lt;action expression="#{numberGuess.guess}" /&gt;
+    &lt;/transition&gt;
+&lt;/page&gt;
+</programlisting>
+			<para>
+				The <literal>view-id</literal> is the JSF view id. The <literal>&lt;redirect/&gt;</literal> element has the same effect as <literal>&lt;redirect/&gt;</literal> in a JSF navigation rule: namely, a post-then-redirect behavior, to overcome problems with the browser&#39;s refresh button (note that Seam propagates conversation contexts over these browser redirects).
+			</para>
+			<para>
+				The transition name is the name of a JSF outcome triggered by clicking a command button or command link in <literal>numberGuess.jsp</literal>.
+			</para>
+<programlisting>&lt;h:commandButton type="submit" value="Guess" action="guess"/&gt;</programlisting>
+			<para>
+				When the transition is triggered by clicking this button, jBPM will activate the transition action by calling the <literal>guess()</literal> method of the <literal>numberGuess</literal> component. Notice that the syntax used for specifying actions in the jPDL is just a familiar JSF EL expression, and that the transition action handler is just a method of a Seam component in the current Seam contexts. So we have exactly the same event model for jBPM events that we already have for JSF events. (The <emphasis>One Kind of Stuff</emphasis> principle.)
+			</para>
+			<para>
+				In the case of a null outcome (for example, a command button with no <literal>action</literal> defined), Seam will signal the transition with no name if one exists, or else simply redisplay the page if all transitions have names. So we could slightly simplify our example pageflow and this button:
+			</para>
+<programlisting>&lt;h:commandButton type="submit" value="Guess"/&gt;</programlisting>
+			<para>
+				Would fire the following un-named transition:
+			</para>
+<programlisting>&lt;page name="displayGuess" view-id="/numberGuess.jsp"&gt;
+    &lt;redirect/&gt;
+    &lt;transition to="evaluateGuess"&gt;
+        &lt;action expression="#{numberGuess.guess}" /&gt;
+    &lt;/transition&gt;
+&lt;/page&gt;
+</programlisting>
+			<para>
+				It is even possible to have the button call an action method, in which case the action outcome will determine the transition to be taken:
+			</para>
+<programlisting>&lt;h:commandButton type="submit" value="Guess" action="#{numberGuess.guess}"/&gt;</programlisting>
+<programlisting>&lt;page name="displayGuess" view-id="/numberGuess.jsp"&gt;
+    &lt;transition name="correctGuess" to="win"/&gt;
+    &lt;transition name="incorrectGuess" to="evaluateGuess"/&gt;
+&lt;/page&gt;
+</programlisting>
+			<para>
+				However, this is considered an inferior style, since it moves responsibility for controlling the flow out of the pageflow definition and back into the other components. It is much better to centralize this concern in the pageflow itself.
+			</para>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Using_jPDL_pageflows-Controlling_the_flow">
+			<title>Controlling the flow</title>
+			<para>
+				Usually, we do not need the more powerful features of jPDL when defining pageflows. We do need the <literal>&lt;decision&gt;</literal> node, however:
+			</para>
+<programlisting>&lt;decision name="evaluateGuess" expression="#{numberGuess.correctGuess}"&gt;
+    &lt;transition name="true" to="win"/&gt;
+    &lt;transition name="false" to="evaluateRemainingGuesses"/&gt;
+&lt;/decision&gt;
+</programlisting>
+			<para>
+				A decision is made by evaluating a JSF EL expression in the Seam contexts.
+			</para>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Using_jPDL_pageflows-Ending_the_flow">
+			<title>Ending the flow</title>
+			<para>
+				We end the conversation using <literal>&lt;end-conversation&gt;</literal> or <literal>@End</literal>. (In fact, for readability, use of <emphasis>both</emphasis> is encouraged.)
+			</para>
+<programlisting>&lt;page name="win" view-id="/win.jsp"&gt;
+    &lt;redirect/&gt;
+    &lt;end-conversation/&gt;
+&lt;/page&gt;
+</programlisting>
+			<para>
+				Optionally, we can end a task, specify a jBPM <literal>transition</literal> name. In this case, Seam will signal the end of the current task in the overarching business process.
+			</para>
+<programlisting>&lt;page name="win" view-id="/win.jsp"&gt;
+    &lt;redirect/&gt;
+    &lt;end-task transition="success"/&gt;
+&lt;/page&gt;
+</programlisting>
+		</section>
+
+	</section>
+	
+	<section id="Seam_Reference_Guide-Pageflows_and_business_processes-Business_process_management_in_Seam">
+		<title>Business process management in Seam</title>
+		<para>
+			A business process is a well-defined set of tasks that must be performed by users or software systems according to well-defined rules about <emphasis>who</emphasis> can perform a task, and <emphasis>when</emphasis> it should be performed. Seam&#39;s jBPM integration makes it easy to display lists of tasks to users and let them manage their tasks. Seam also lets the application store state associated with the business process in the <literal>BUSINESS_PROCESS</literal> context, and have that state made persistent via jBPM variables.
+		</para>
+		<para>
+			A simple business process definition looks much the same as a page flow definition (<emphasis>One Kind of Stuff</emphasis>), except that instead of <literal>&lt;page&gt;</literal> nodes, we have <literal>&lt;task-node&gt;</literal> nodes. In a long-running business process, the wait states are where the system is waiting for some user to log in and perform a task.
+		</para>
+<programlisting>&lt;process-definition name="todo"&gt;
+   
+   &lt;start-state name="start"&gt;
+      &lt;transition to="todo"/&gt;
+   &lt;/start-state&gt;
+   
+   &lt;task-node name="todo"&gt;
+      &lt;task name="todo" description="#{todoList.description}"&gt;
+         &lt;assignment actor-id="#{actor.id}"/&gt;
+      &lt;/task&gt;
+      &lt;transition to="done"/&gt;
+   &lt;/task-node&gt;
+   
+   &lt;end-state name="done"/&gt;
+   
+&lt;/process-definition&gt;
+</programlisting>
+
+	
+	<mediaobject>
+		<imageobject role="fo">
+			<imagedata align="center" fileref="images/plugin-jbpm-todo.png" />
+		</imageobject>
+	<!--	<imageobject role="html">
+			<imagedata align="center" fileref="../shared/images/plugin-jbpm-todo.png" />
+		</imageobject> -->
+	</mediaobject>
+	<para>
+		It is perfectly possible that we might have both jPDL business process definitions and jPDL pageflow definitions in the same project. If so, the relationship between the two is that a single <literal>&lt;task&gt;</literal> in a business process corresponds to a whole pageflow <literal>&lt;pageflow-definition&gt;</literal>
+	</para>
+	</section>
+	<section id="Seam_Reference_Guide-Pageflows_and_business_processes-Using_jPDL_business_process_definitions">
+		<title>Using jPDL business process definitions</title>
+		<section id="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Installing_process_definitions">
+			<title>Installing process definitions</title>
+			<para>
+				We need to install jBPM, and tell it where to find the business process definitions:
+			</para>
+<programlisting>&lt;core:jbpm&gt;
+    &lt;core:process-definitions&gt;
+        &lt;value&gt;todo.jpdl.xml&lt;/value&gt;
+    &lt;/core:process-definitions&gt;
+&lt;/core:jbpm&gt;
+</programlisting>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Initializing_actor_ids">
+			<title>Initializing actor ids</title>
+			<para>
+				We always need to know what user is currently logged in. jBPM <emphasis>knows</emphasis> users by their <emphasis>actor id</emphasis> and <emphasis>group actor ids</emphasis>. We specify the current actor ids using the built in Seam component named <literal>actor</literal>:
+			</para>
+<programlisting>@In Actor actor;
+
+public String login() {
+    ...
+    actor.setId( user.getUserName() );
+    actor.getGroupActorIds().addAll( user.getGroupNames() );
+    ...
+}
+</programlisting>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Initiating_a_business_process">
+			<title>Initiating a business process</title>
+			<para>
+				To initiate a business process instance, we use the <literal>@CreateProcess</literal> annotation:
+			</para>
+<programlisting>@CreateProcess(definition="todo")
+public void createTodo() { ... }
+</programlisting>
+			<para>
+				Alternatively we can initiate a business process using pages.xml:
+			</para>
+<programlisting>&lt;page&gt;
+    &lt;create-process definition="todo" /&gt;
+&lt;/page&gt;
+</programlisting>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Task_assignment">
+			<title>Task assignment</title>
+			<para>
+				When a process starts, task instances are created. These must be assigned to users or user groups. We can either hardcode our actor ids, or delegate to a Seam component:
+			</para>
+<programlisting>&lt;task name="todo" description="#{todoList.description}"&gt;
+    &lt;assignment actor-id="#{actor.id}"/&gt;
+&lt;/task&gt;
+</programlisting>
+			<para>
+				In this case, we have simply assigned the task to the current user. We can also assign tasks to a pool:
+			</para>
+<programlisting>&lt;task name="todo" description="#{todoList.description}"&gt;
+    &lt;assignment pooled-actors="employees"/&gt;
+&lt;/task&gt;
+</programlisting>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Task_lists">
+			<title>Task lists</title>
+			<para>
+				Several built-in Seam components make it easy to display task lists. The <literal>pooledTaskInstanceList</literal> is a list of pooled tasks that users may assign to themselves:
+			</para>
+<programlisting>&lt;h:dataTable value="#{pooledTaskInstanceList}" var="task"&gt;
+    &lt;h:column&gt;
+        &lt;f:facet name="header"&gt;Description&lt;/f:facet&gt;
+        &lt;h:outputText value="#{task.description}"/&gt;
+    &lt;/h:column&gt;
+    &lt;h:column&gt;
+        &lt;s:link action="#{pooledTask.assignToCurrentActor}" value="Assign" taskInstance="#{task}"/&gt;
+    &lt;/h:column&gt;            	
+&lt;/h:dataTable&gt;
+</programlisting>
+			<para>
+				Note that instead of <literal>&lt;s:link&gt;</literal> we could have used a plain JSF <literal>&lt;h:commandLink&gt;</literal>:
+			</para>
+<programlisting>&lt;h:commandLink action="#{pooledTask.assignToCurrentActor}"&gt; 
+    &lt;f:param name="taskId" value="#{task.id}"/&gt;
+&lt;/h:commandLink&gt;
+</programlisting>
+			<para>
+				The <literal>pooledTask</literal> component is a built-in component that simply assigns the task to the current user.
+			</para>
+			<para>
+				The <literal>taskInstanceListForType</literal> component includes tasks of a particular type that are assigned to the current user:
+			</para>
+<programlisting>&lt;h:dataTable value="#{taskInstanceListForType[&#39;todo&#39;]}" var="task"&gt;
+    &lt;h:column&gt;
+        &lt;f:facet name="header"&gt;Description&lt;/f:facet&gt;
+        &lt;h:outputText value="#{task.description}"/&gt;
+    &lt;/h:column&gt;
+    &lt;h:column&gt;
+        &lt;s:link action="#{todoList.start}" value="Start Work" taskInstance="#{task}"/&gt;
+    &lt;/h:column&gt;            	
+&lt;/h:dataTable&gt;
+</programlisting>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Performing_a_task">
+			<title>Performing a task</title>
+			<para>
+				To begin work on a task, we use either <literal>@StartTask</literal> or <literal>@BeginTask</literal> on the listener method:
+			</para>
+<programlisting>@StartTask
+public String start() { ... }
+</programlisting>
+			<para>
+				Alternatively we can begin work on a task using <filename>pages.xml</filename>:
+			</para>
+<programlisting>&lt;page&gt;
+    &lt;start-task /&gt;
+&lt;/page&gt;
+</programlisting>
+			<para>
+				These annotations begin a special kind of conversation that has significance in terms of the overarching business process. Work done by this conversation has access to state held in the business process context.
+			</para>
+			<para>
+				If we end the conversation using <literal>@EndTask</literal>, Seam will signal the completion of the task:
+			</para>
+<programlisting>@EndTask(transition="completed")
+public String completed() { ... }
+</programlisting>
+			<para>
+				Alternatively we can use pages.xml:
+			</para>
+<programlisting>&lt;page&gt;
+    &lt;end-task transition="completed" /&gt;
+&lt;/page&gt;
+</programlisting>
+			<para>
+				(Alternatively, we could have used <literal>&lt;end-conversation&gt;</literal> as shown above.)
+			</para>
+			<para>
+				At this point, jBPM takes over and continues executing the business process definition. (In more complex processes, several tasks might need to be completed before process execution can resume.)
+			</para>
+		
+		<para>
+			Please refer to the jBPM documentation for a more thorough overview of the sophisticated features that jBPM provides for managing complex business processes.
+		</para>
+		</section>
+
+	</section>
+
+</chapter>
+


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Jbpm.xml
___________________________________________________________________
Name: svn:executable
   + *

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Jms.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Jms.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Jms.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,269 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Seam_Reference_Guide-Asynchronicity_and_messaging">
+	<title>Asynchronicity and messaging</title>
+	<para>
+		Seam makes it very easy to perform work asynchronously from a web request. When most people think of asynchronicity in Java EE, they think of using JMS. This is certainly one way to approach the problem in Seam, and is the right way when you have strict and well-defined quality of service requirements. Seam makes it easy to send and recieve JMS messages using Seam components.
+	</para>
+	<para>
+		But for many usecases, JMS is overkill. Seam layers a simple asynchronous method and event facility over the EJB 3.0 timer service.
+	</para>
+	<sect1 id="Seam_Reference_Guide-Asynchronicity_and_messaging-Asynchronicity"><title>Asynchronicity</title>
+	<para>
+		Asynchronous events and method calls have the same quality of service expectations as the container&#39;s EJB timer service. If you are not familiar with the Timer service, do not worry, you do not need to interact with it directly if you want to use asynchronous methods in Seam.
+	</para>
+	<para>
+		To use asynchronous methods and events, you need to add the following line to <literal>components.xml</literal>:
+	</para>
+<programlisting>&lt;core:dispatcher/&gt;</programlisting>
+	<para>
+		Note that this functionality is not available in environments which do not support EJB 3.0.
+	</para>
+	<sect2 id="Seam_Reference_Guide-Asynchronicity-Asynchronous_methods"><title>Asynchronous methods</title>
+	<para>
+		In simplest form, an asynchronous call just lets a method call be processed asynchronously (in a different thread) from the caller. We usually use an asynchronous call when we want to return an immediate response to the client, and let some expensive work be processed in the background. This pattern works very well in applications which use AJAX, where the client can automatically poll the server for the result of the work.
+	</para>
+	<para>
+		For EJB components, we annotate the local interface to specify that a method is processed asynchronously.
+	</para>
+<programlisting>@Local
+public interface PaymentHandler
+{
+    @Asynchronous
+    public void processPayment(Payment payment);
+}
+</programlisting>
+	<para>
+		(For JavaBean components we can annotate the component implementation class if we like.)
+	</para>
+	<para>
+		The use of asynchronicity is transparent to the bean class:
+	</para>
+<programlisting>@Stateless
+ at Name("paymentHandler")
+public class PaymentHandlerBean implements PaymentHandler
+{
+    public void processPayment(Payment payment)
+    {
+        //do some work!
+    }
+}
+</programlisting>
+	<para>
+		And also transparent to the client:
+	</para>
+<programlisting>@Stateful
+ at Name("paymentAction")
+public class CreatePaymentAction
+{
+    @In(create=true) PaymentHandler paymentHandler;
+    @In Bill bill;
+    
+    public String pay()
+    {
+        paymentHandler.processPayment( new Payment(bill) );
+        return "success";
+    }
+}
+</programlisting>
+	<para>
+		The asynchronous method is processed in a completely new event context and does not have access to the session or conversation context state of the caller. However, the business process context <emphasis>is</emphasis> propagated.
+	</para>
+	<para>
+		Asynchronous method calls may be scheduled for later execution using the <literal>@Duration</literal>, <literal>@Expiration</literal> and <literal>@IntervalDuration</literal> annotations.
+	</para>
+<programlisting>@Local
+public interface PaymentHandler
+{
+    @Asynchronous
+    public void processScheduledPayment(Payment payment, @Expiration Date date);
+
+    @Asynchronous
+    public void processRecurringPayment(Payment payment, @Expiration Date date, 
+      @IntervalDuration Long interval)&#39;
+}
+</programlisting>
+<programlisting>@Stateful
+ at Name("paymentAction")
+public class CreatePaymentAction
+{
+    @In(create=true) PaymentHandler paymentHandler;
+    @In Bill bill;
+    
+    public String schedulePayment()
+    {
+        paymentHandler.processScheduledPayment( new Payment(bill), bill.getDueDate() );
+        return "success";
+    }
+
+    public String scheduleRecurringPayment()
+    {
+        paymentHandler.processRecurringPayment( new Payment(bill), bill.getDueDate(), ONE_MONTH );
+        return "success";
+    }
+}
+</programlisting>
+	<para>
+		Both client and server may access the <literal>Timer</literal> object associated with the invocation.
+	</para>
+<programlisting>@Local
+public interface PaymentHandler
+{
+    @Asynchronous
+    public Timer processScheduledPayment(Payment payment, @Expiration Date date);
+}
+</programlisting>
+<programlisting>@Stateless
+ at Name("paymentHandler")
+public class PaymentHandlerBean implements PaymentHandler
+{
+    @In Timer timer;
+    
+    public Timer processScheduledPayment(Payment payment, @Expiration Date date)
+    {
+        //do some work!
+        
+        return timer; //note that return value is completely ignored
+    }
+
+}
+</programlisting>
+<programlisting>@Stateful
+ at Name("paymentAction")
+public class CreatePaymentAction
+{
+    @In(create=true) PaymentHandler paymentHandler;
+    @In Bill bill;
+    
+    public String schedulePayment()
+    {
+        Timer timer = paymentHandler.processScheduledPayment( new Payment(bill), bill.getDueDate() );
+        return "success";
+    }
+}
+</programlisting>
+	<para>
+		Asynchronous methods cannot return any other value to the caller.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Asynchronicity-Asynchronous_events"><title>Asynchronous events</title>
+	<para>
+		Component-driven events may also be asynchronous. To raise an event for asynchronous processing, simply call the <literal>raiseAsynchronousEvent()</literal> methods of the <literal>Events</literal> class. To schedule a timed event, call one of the <literal>raiseTimedEvent()</literal> methods. Components may observe asynchronous events in the usual way, but remember that only the business process context is propagated to the asynchronous thread.
+	</para>
+	</sect2></sect1><sect1 id="Seam_Reference_Guide-Asynchronicity_and_messaging-Messaging_in_Seam"><title>Messaging in Seam</title>
+	<para>
+		Seam makes it easy to send and receive JMS messages to and from Seam components.
+	</para>
+	<sect2 id="Seam_Reference_Guide-Messaging_in_Seam-Configuration"><title>Configuration</title>
+	<para>
+		To configure Seam&#39;s infrastructure for sending JMS messages, you need to tell Seam about any topics and queues you want to send messages to, and also tell Seam where to find the <literal>QueueConnectionFactory</literal> and/or <literal>TopicConnectionFactory</literal>.
+	</para>
+	<para>
+		Seam defaults to using <literal>UIL2ConnectionFactory</literal> which is the usual connection factory for use with JBossMQ. If you are using some other JMS provider, you need to set one or both of <literal>queueConnection.queueConnectionFactoryJndiName</literal> and <literal>topicConnection.topicConnectionFactoryJndiName</literal> in <literal>seam.properties</literal>, <literal>web.xml</literal> or <literal>components.xml</literal>.
+	</para>
+	<para>
+		You also need to list topics and queues in <literal>components.xml</literal> to install Seam managed <literal>TopicPublisher</literal>s and <literal>QueueSender</literal>s:
+	</para>
+<programlisting>
+&lt;jms:managed-topic-publisher name="stockTickerPublisher" 
+                   auto-create="true  topic-jndi-name="topic/stockTickerTopic"/&gt;
+
+&lt;jms:managed-queue-sender name="paymentQueueSender" auto-create="true" 
+    queue-jndi-name="queue/paymentQueue"/&gt;
+</programlisting>
+
+<formalpara>
+	<title>Using JBoss Messaging</title>
+	<para>
+		For using JBoss Messaging which comes with JBoss Enterprise Application Platform 4.3, you should first set the value of the properties '<literal>queueConnection.queueConnectionFactoryJndiName</literal>' and '<literal>topicConnection.topicConnectionFactoryJndiName</literal>' to '<literal>ConnectionFactory</literal>' which is the default connection factory for JBoss Messaging. Then set the value of the '<literal>connectionProvider</literal>' property to '<literal>org.jboss.seam.remoting.messaging.JBossMessagingConnectionProvider</literal>' on the class component '<literal>org.jboss.seam.remoting.messaging.SubscriptionRegistry</literal>', which creates topic connections for jboss messaging.
+		<programlisting>
+&lt;component name="org.jboss.seam.jms.topicConnection"&gt;
+	&lt;property name="topicConnectionFactoryJndiName"&gt;
+	ConnectionFactory
+	&lt;/property&gt;
+&lt;/component&gt;
+&lt;component class="org.jboss.seam.remoting.messaging.SubscriptionRegistry" installed="true"&gt;
+	&lt;property name="allowedTopics"&gt;
+	chatroomTopic
+	&lt;/property&gt;
+	&lt;property name="connectionProvider"&gt;
+	org.jboss.seam.remoting.messaging.JBossMessagingConnectionProvider
+	&lt;/property&gt;
+&lt;/component&gt;
+</programlisting>
+You also need to update the topics to use JBoss Messaging as shown in the code fragment below.
+<programlisting>
+&lt;server&gt;
+	&lt;mbean code="org.jboss.jms.server.destination.TopicService"
+               name="jboss.messaging.destination:service=Topic,name=chatroomTopic"
+                                            xmbean-dd="xmdesc/Topic-xmbean.xml"&gt;
+		&lt;depends optional-attribute-name="ServerPeer"&gt;
+		jboss.messaging:service=ServerPeer
+		&lt;/depends&gt;
+		&lt;depends&gt;
+		jboss.messaging:service=PostOffice
+		&lt;/depends&gt;
+		&lt;attribute name="SecurityConfig"&gt;
+			&lt;security&gt;
+			  &lt;role name="guest" read="true" write="true"/&gt;
+			  &lt;role name="publisher" read="true" write="true" create="false"/&gt;
+			  &lt;role name="durpublisher" read="true" write="true" create="true"/&gt;
+			&lt;/security&gt;
+		&lt;/attribute&gt;
+	&lt;/mbean&gt;
+&lt;/server&gt;
+</programlisting>
+	</para>
+</formalpara>
+
+	</sect2><sect2 id="Seam_Reference_Guide-Messaging_in_Seam-Sending_messages"><title>Sending messages</title>
+	<para>
+		Now, you can inject a JMS <literal>TopicPublisher</literal> and <literal>TopicSession</literal> into any component:
+	</para>
+<programlisting>@In 
+private TopicPublisher stockTickerPublisher;   
+ at In 
+private TopicSession topicSession;
+
+public void publish(StockPrice price) {
+      try
+      {
+         topicPublisher.publish( topicSession.createObjectMessage(price) );
+      } 
+      catch (Exception ex)
+      {
+         throw new RuntimeException(ex);
+      } 
+}
+</programlisting>
+	<para>
+		Or, for working with a queue:
+	</para>
+<programlisting>@In
+private QueueSender paymentQueueSender;   
+ at In
+private QueueSession queueSession;
+
+public void publish(Payment payment) {
+      try
+      {
+         paymentQueueSender.send( queueSession.createObjectMessage(payment) );
+      } 
+      catch (Exception ex)
+      {
+         throw new RuntimeException(ex);
+      } 
+}
+</programlisting>
+	</sect2><sect2 id="Seam_Reference_Guide-Messaging_in_Seam-Receiving_messages_using_a_message_driven_bean"><title>Receiving messages using a message-driven bean</title>
+	<para>
+		You can process messages using any EJB3 message driven bean. Message-driven beans may even be Seam components, in which case it is possible to inject other event and application scoped Seam components.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Messaging_in_Seam-Receiving_messages_in_the_client"><title>Receiving messages in the client</title>
+	<para>
+		Seam Remoting lets you subscribe to a JMS topic from client-side JavaScript. This is described in the next chapter.
+	</para>
+	</sect2></sect1>
+</chapter>
+


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Jms.xml
___________________________________________________________________
Name: svn:executable
   + *

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Mail.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Mail.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Mail.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,557 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Seam_Reference_Guide-Email">
+	<title>Email</title>
+	<para>
+		Seam now includes an optional components for templating and sending emails.
+	</para>
+	<para>
+		Email support is provided by <literal>jboss-seam-mail.jar</literal>. This JAR contains the mail JSF controls, which are used to construct emails, and the <literal>mailSession</literal> manager component.
+	</para>
+	<para>
+		The examples/mail project contains an example of the email support in action. It demonstrates proper packaging, and it contains a number of example that demonstrate the key features currently supported.
+	</para>
+	<section id="Seam_Reference_Guide-Email-Creating_a_message">
+		<title>Creating a message</title>
+		<para>
+			You do not need to learn a whole new templating language to use Seam Mail&mdash;an email is just facelet!
+		</para>
+<programlisting>&lt;m:message xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:m="http://jboss.com/products/seam/mail"
+    xmlns:h="http://java.sun.com/jsf/html"&gt;
+  
+    &lt;m:from name="Peter" address="peter at example.com" /&gt;
+    &lt;m:to name="#{person.firstname} #{person.lastname}"&gt;#{person.address}&lt;/m:to&gt;
+    &lt;m:subject&gt;Try out Seam!&lt;/m:subject&gt;
+    
+    &lt;m:body&gt;
+        &lt;p&gt;&lt;h:outputText value="Dear #{person.firstname}" /&gt;,&lt;/p&gt;
+        &lt;p&gt;You can try out Seam by visiting 
+        &lt;a href="http://labs.jboss.com/jbossseam"&gt;http://labs.jboss.com/jbossseam&lt;/a&gt;.&lt;/p&gt;
+        &lt;p&gt;Regards,&lt;/p&gt;
+        &lt;p&gt;Peter&lt;/p&gt;
+    &lt;/m:body&gt;
+    
+&lt;/m:message&gt;
+</programlisting>
+		<para>
+			The <literal>&lt;m:message&gt;</literal> tag wraps the whole message, and tells Seam to start rendering an email. Inside the <literal>&lt;m:message&gt;</literal> tag we use an <literal>&lt;m:from&gt;</literal> tag to set who the message is from, a <literal>&lt;m:to&gt;</literal> tag to specify a sender (notice how we use EL as we would in a normal facelet), and a <literal>&lt;m:subject&gt;</literal> tag.
+		</para>
+		<para>
+			The <literal>&lt;m:body&gt;</literal> tag wraps the body of the email. You can use regular HTML tags inside the body as well as JSF components.
+		</para>
+		<para>
+			So, now you have your email template, how do you go about sending it? Well, at the end of rendering the <literal>m:message</literal> the <literal>mailSession</literal> is called to send the email, so all you have to do is ask Seam to render the view:
+		</para>
+<programlisting>@In(create=true)
+private Renderer renderer;
+   
+public void send() {
+    try {
+       renderer.render("/simple.xhtml");
+       facesMessages.add("Email sent successfully");
+   } 
+   catch (Exception e) {
+       facesMessages.add("Email sending failed: " + e.getMessage());
+   }
+}
+</programlisting>
+		<para>
+			If, for example, you entered an invalid email address, then an exception would be thrown, which is caught and then displayed to the user.
+		</para>
+		<section id="Seam_Reference_Guide-Creating_a_message-Attachments">
+			<title>Attachments</title>
+			<para>
+				Seam makes it easy to attach files to an email. It supports most of the standard java types used when working with files.
+			</para>
+			<para>
+				If you wanted to email the <literal>jboss-seam-mail.jar</literal>:
+			</para>
+<programlisting>&lt;m:attachment value="/WEB-INF/lib/jboss-seam-mail.jar"/&gt;</programlisting>
+			<para>
+				Seam will load the file from the classpath, and attach it to the email. By default it would be attached as <literal>jboss-seam-mail.jar</literal>; if you wanted it to have another name you would just add the <literal>fileName</literal> attribute:
+			</para>
+<programlisting>&lt;m:attachment value="/WEB-INF/lib/jboss-seam-mail.jar" fileName="this-is-so-cool.jar"/&gt;</programlisting>
+			<para>
+				You could also attach a <literal>java.io.File</literal>, a <literal>java.net.URL</literal>:
+			</para>
+<programlisting>&lt;m:attachment value="#{numbers}"/&gt;</programlisting>
+			<para>
+				Or a <literal>byte[]</literal> or a <literal>java.io.InputStream</literal>:
+			</para>
+<programlisting>&lt;m:attachment value="#{person.photo}" contentType="image/png"/&gt;</programlisting>
+			<para>
+				You will notice that for a <literal>byte[]</literal> and a <literal>java.io.InputStream</literal> you need to specify the MIME type of the attachment (as that information is not carried as part of the file).
+			</para>
+			<para>
+				And it gets even better, you can attach a Seam generated PDF, or any standard JSF view, just by wrapping a <literal>&lt;m:attachment&gt;</literal> around the normal tags you would use:
+			</para>
+<programlisting>&lt;m:attachment fileName="tiny.pdf"&gt;
+    &lt;p:document&gt;                                                      
+        A very tiny PDF                                                                                                
+    &lt;/p:document&gt;
+&lt;/m:attachment&gt;
+</programlisting>
+			<para>
+				If you had a set of files you wanted to attach (for example a set of pictures loaded from a database) you can just use a <literal>&lt;ui:repeat&gt;</literal>:
+			</para>
+<programlisting>&lt;ui:repeat value="#{people}" var="person"&gt;
+    &lt;m:attachment value="#{person.photo}" contentType="image/jpeg"
+    fileName="#{person.firstname}_#{person.lastname}.jpg"/&gt;
+&lt;/ui:repeat&gt;
+</programlisting>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Creating_a_message-HTMLText_alternative_part">
+			<title>HTML/Text alternative part</title>
+			<para>
+				Whilst most mail readers nowadays support HTML, some do not, so you can add a plain text alternative to your email body:
+			</para>
+<programlisting>&lt;m:body&gt;
+    &lt;f:facet name="alternative"&gt;Sorry, your email reader can&#39;t show our fancy email, 
+please go to http://labs.jboss.com/jbossseam to explore Seam.&lt;/f:facet&gt;
+&lt;/m:body&gt;
+</programlisting>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Creating_a_message-Multiple_recipients">
+			<title>Multiple recipients</title>
+			<para>
+				Often you will want to send an email to a group of recipients (for example your users). All of the recipient mail tags can be placed inside a <literal>&lt;ui:repeat&gt;</literal>:
+			</para>
+<programlisting>&lt;ui:repeat value="#{allUsers} var="user"&gt;
+    &lt;m:to name="#{user.firstname} #{user.lastname}" address="#{user.emailAddress}" /&gt;
+&lt;/ui:repeat&gt;
+</programlisting>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Creating_a_message-Multiple_messages">
+			<title>Multiple messages</title>
+			<para>
+				Sometimes, however, you need to send a slightly different message to each recipient (e.g. a password reset). The best way to do this is to place the whole message inside a <literal>&lt;ui:repeat&gt;</literal>:
+			</para>
+<programlisting>&lt;ui:repeat value="#{people}" var="p"&gt;
+    &lt;m:message&gt;
+        &lt;m:from name="#{person.firstname} #{person.lastname}"&gt;#{person.address}&lt;/m:from&gt;
+        &lt;m:to name="#{p.firstname}"&gt;#{p.address}&lt;/m:to&gt;
+            ...
+    &lt;/m:message&gt;
+&lt;/ui:repeat&gt;
+</programlisting>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Creating_a_message-Templating">
+			<title>Templating</title>
+			<para>
+				The mail templating example shows that facelets templating Just Works with the Seam mail tags.
+			</para>
+			<para>
+				Our <literal>template.xhtml</literal> contains:
+			</para>
+<programlisting>&lt;m:message&gt;
+   &lt;m:from name="Seam" address="do-not-reply at jboss.com" /&gt;
+   &lt;m:to name="#{person.firstname} #{person.lastname}"&gt;#{person.address}&lt;/m:to&gt;
+   &lt;m:subject&gt;#{subject}&lt;/m:subject&gt;
+   &lt;m:body&gt;
+       &lt;html&gt;
+           &lt;body&gt;
+               &lt;ui:insert name="body"&gt;This is the default body, specified by the template.
+                                   &lt;/ui:insert&gt;
+           &lt;/body&gt;
+       &lt;/html&gt;
+   &lt;/m:body&gt;
+&lt;/m:message&gt;
+</programlisting>
+			<para>
+				Our <literal>templating.xhtml</literal> contains:
+			</para>
+<programlisting>&lt;ui:param name="subject" value="Templating with Seam Mail"/&gt;
+&lt;ui:define name="body"&gt;
+    &lt;p&gt;This example demonstrates that you can easily use &lt;i&gt;facelets templating&lt;/i&gt; in email!&lt;/p&gt;
+&lt;/ui:define&gt;
+</programlisting>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Creating_a_message-Internationalisation">
+			<title>Internationalisation</title>
+			<para>
+				Seam supports sending internationalised messages. By default, the encoding provided by JSF is used, but this can be overridden on the template:
+			</para>
+<programlisting>&lt;m:message charset="UTF-8"&gt;
+   ...
+&lt;/m:message&gt;
+</programlisting>
+			<para>
+				The body, subject and recipient (and from) name will be encoded. You will need to make sure facelets uses the correct charset for parsing your pages by setting encoding of the template:
+			</para>
+<programlisting>&lt;?xml version="1.0" encoding="UTF-8"?&gt;</programlisting>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Creating_a_message-Other_Headers">
+			<title>Other Headers</title>
+			<para>
+				Sometimes you will want to add other headers to your email. Seam provides support for some (see <xref linkend="Seam_Reference_Guide-Email-Tags" />). For example, we can set the importance of the email, and ask for a read receipt:
+			</para>
+<programlisting>&lt;m:message xmlns:m="http://jboss.com/products/seam/mail"
+           importance="low"
+           requestReadReceipt="true"/&gt;
+</programlisting>
+			<para>
+				Otherise you can add any header to the message using the <literal>&lt;m:header&gt;</literal> tag:
+			</para>
+<programlisting>&lt;m:header name="X-Sent-From" value="JBoss Seam"/&gt;</programlisting>
+		</section>
+
+	</section>
+	
+	<section id="Seam_Reference_Guide-Email-Receiving_emails">
+		<title>Receiving emails</title>
+		<para>
+			If you are using EJB then you can use a MDB (Message Driven Bean) to receive email. Seam comes with an improved version of <literal>mail-ra.rar</literal> as distributed in JBoss AS; until the improvements make there way into a released version of JBoss AS, replacing the default <literal>rar</literal> with the one distributed with Seam is recommended.
+		</para>
+		<para>
+			You can configure it like this:
+		</para>
+<programlisting>@MessageDriven(activationConfig={
+         @ActivationConfigProperty(propertyName="mailServer", propertyValue="localhost"),
+         @ActivationConfigProperty(propertyName="mailFolder", propertyValue="INBOX"),
+         @ActivationConfigProperty(propertyName="storeProtocol", propertyValue="pop3"),
+         @ActivationConfigProperty(propertyName="userName", propertyValue="seam"),
+         @ActivationConfigProperty(propertyName="password", propertyValue="seam")
+})
+ at ResourceAdapter("mail-ra.rar")
+ at Name("mailListener")
+public class MailListenerMDB implements MailListener {
+
+   @In(create=true)
+   private OrderProcessor orderProcessor;
+
+   public void onMessage(Message message) {
+      // Process the message
+      orderProcessor.process(message.getSubject());
+   }
+   
+}
+</programlisting>
+		<para>
+			Each message received will cause <literal>onMessage(Message message)</literal> to be called. Most seam annotations will work inside a MDB but you must not access the persistence context.
+		</para>
+		<para>
+			You can find more information on the default <literal>mail-ra.rar</literal> at <ulink url="http://wiki.jboss.org/wiki/Wiki.jsp?page=InboundJavaMail">http://wiki.jboss.org/wiki/Wiki.jsp?page=InboundJavaMail</ulink>. The version distributed with Seam also includes a <literal>debug</literal> property to enable JavaMail debugging, a <literal>flush</literal> property (by default true) to disable flushing a <literal>POP3</literal> mailbox after successfullying delivering a message to your MDB and a <literal>port</literal> property to override the default TCP port. </para>
+		<note>
+		<para>
+		The api for this may be altered as changes make there way into the JBoss Enterprise Application Platform.
+		</para>
+	</note>
+<!--		<para>
+			If you are not using the JBoss Enterprise Application Platform you can still use <literal>mail-ra.rar</literal> (included with Seam in the mail directory), or you may find your application server includes a similar adapter.
+		</para> -->
+	</section>
+	
+	<section id="Seam_Reference_Guide-Email-Configuration">
+		<title>Configuration</title>
+		<para>
+			To include Email support in your application, include <literal>jboss-seam-mail.jar</literal> in your WEB-INF/lib directory. If you are using JBoss AS there is no further configuration needed to use Seam&#39;s email support. Otherwise you need to make sure you have the JavaMail API, an implementation of the JavaMail API present (the API and impl used in JBoss AS are distributed with seam as <literal>lib/mail.jar</literal>), and a copy of the Java Activation Framework (distributed with seam as <literal>lib/activation.jar</literal>.
+		</para>
+		<para>
+			The Seam Email module requires the use of Facelets as the view technology. Future versions of the library may also support the use of JSP. Additionally, it requires the use of the seam-ui package.
+		</para>
+		<para>
+			The <literal>mailSession</literal> component uses JavaMail to talk to a &#39;real&#39; SMTP server.
+		</para>
+		<section id="Seam_Reference_Guide-Configuration-mailSession">
+			<title><literal>mailSession</literal></title>
+			<para>
+				A JavaMail Session may be available via a JNDI lookup if you are working in an JEE environment or you can use a Seam configured Session.
+			</para>
+			<para>
+				The mailSession component&#39;s properties are described in more detail in the Mail related components section.
+			</para>
+			<section id="Seam_Reference_Guide-mailSession-JNDI_lookup_in_JBoss_AS">
+				<title>JNDI lookup in JBoss AS</title>
+				<para>
+					The JBossAS <literal>deploy/mail-service.xml</literal> configures a JavaMail session binding into JNDI. The default service configuration will need altering for your network. <ulink url="http://wiki.jboss.org/wiki/Wiki.jsp?page=JavaMail">http://wiki.jboss.org/wiki/Wiki.jsp?page=JavaMail</ulink> describes the service in more detail.
+				</para>
+<programlisting>&lt;components xmlns="http://jboss.com/products/seam/components"
+        xmlns:core="http://jboss.com/products/seam/core"
+        xmlns:mail="http://jboss.com/products/seam/mail"&gt;
+        
+    &lt;mail:mail-session session-jndi-name="java:/Mail"/&gt;
+    
+&lt;/components&gt;
+</programlisting>
+				<para>
+					Here we tell Seam to get the mail session bound to <literal>java:/Mail</literal> from JNDI.
+				</para>
+			</section>
+			
+			<section id="Seam_Reference_Guide-mailSession-Seam_configured_Session">
+				<title>Seam configured Session</title>
+				<para>
+					A mail session can be configured via <literal>components.xml</literal>. Here we tell Seam to use <literal>smtp.example.com</literal> as the smtp server,
+				</para>
+<programlisting>&lt;components xmlns="http://jboss.com/products/seam/components"
+        xmlns:core="http://jboss.com/products/seam/core"
+        xmlns:mail="http://jboss.com/products/seam/mail"&gt;
+        
+    &lt;mail:mail-session host="smtp.example.com"/&gt;
+    
+&lt;/components&gt;
+</programlisting>
+			</section>
+
+		</section>
+
+	</section>
+	
+	<section id="Seam_Reference_Guide-Email-Tags">
+		<title>Tags</title>
+		<para>
+			Emails are generated using tags in the <literal>http://jboss.com/products/seam/mail</literal> namespace. Documents should always have the <literal>message</literal> tag at the root of the message. The message tag prepares Seam to generate an email.
+		</para>
+		<para>
+			The standard templating tags of facelets can be used as normal. Inside the body you can use any JSF tag which does not require access to external resources (stylesheets, javascript).
+		</para>
+		<variablelist>
+			<varlistentry>
+				<term>&lt;m:message&gt;</term>
+				<listitem>
+					<para>
+						Root tag of a mail message
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>importance</literal> &mdash; low, normal or high. By default normal, this sets the importance of the mail message.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>precedence</literal> &mdash; sets the precedence of the message (for example, bulk).
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>requestReadReceipt</literal> &mdash; by default false, if set, a read receipt will be request will be added, with the read receipt being sent to the <literal>From:</literal> address.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>urlBase</literal> &mdash; If set, the value is prepended to the <literal>requestContextPath</literal> allowing you to use components such as <literal>&lt;h:graphicImage&gt;</literal> in your emails.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term>&lt;m:from&gt;</term>
+				<listitem>
+					<para>
+						Set&#39;s the From: address for the email. You can only have one of these per email.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>name</literal> &mdash; the name the email should come from.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>address</literal> &mdash; the email address the email should come from.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term>&lt;m:replyTo&gt;</term>
+				<listitem>
+					<para>
+						Set&#39;s the Reply-to: address for the email. You can only have one of these per email.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>address</literal> &mdash; the email address the email should come from.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term>&lt;m:to&gt;</term>
+				<listitem>
+					<para>
+						Add a recipient to the email. Use multiple &lt;m:to&gt; tags for multiple recipients. This tag can be safely placed inside a repeat tag such as &lt;ui:repeat&gt;.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>name</literal> &mdash; the name of the recipient.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>address</literal> &mdash; the email address of the recipient.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term>&lt;m:cc&gt;</term>
+				<listitem>
+					<para>
+						Add a cc recipient to the email. Use multiple &lt;m:cc&gt; tags for multiple ccs. This tag can be safely placed inside a repeat tag such as &lt;ui:repeat&gt;.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>name</literal> &mdash; the name of the recipient.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>address</literal> &mdash; the email address of the recipient.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term>&lt;m:bcc&gt;</term>
+				<listitem>
+					<para>
+						Add a bcc recipient to the email. Use multiple &lt;m:bcc&gt; tags for multiple bccs. This tag can be safely placed inside a repeat tag such as &lt;ui:repeat&gt;.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>name</literal> &mdash; the name of the recipient.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>address</literal> &mdash; the email address of the recipient.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term>&lt;m:header&gt;</term>
+				<listitem>
+					<para>
+						Add a header to the email (for example, <literal>X-Sent-From: JBoss Seam</literal>
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>name</literal> &mdash; The name of the header to add (e.g. <literal>X-Sent-From</literal>).
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>value</literal> &mdash; The value of the header to add (e.g. <literal>JBoss Seam</literal>).
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term>&lt;m:attachment&gt;</term>
+				<listitem>
+					<para>
+						Add an attachment to the email.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>value</literal> &mdash; The file to attach:
+							</para>
+							<itemizedlist>
+								<listitem>
+									<para>
+										<literal>String</literal> &mdash; A <literal>String</literal> is interpreted as a path to file within the classpath
+									</para>
+								</listitem>
+								<listitem>
+									<para>
+										<literal>java.io.File</literal> &mdash; An EL expression can reference a <literal>File</literal> object
+									</para>
+								</listitem>
+								<listitem>
+									<para>
+										<literal>java.net.URL</literal> &mdash; An EL expression can reference a <literal>URL</literal> object
+									</para>
+								</listitem>
+								<listitem>
+									<para>
+										<literal>java.io.InputStream</literal> &mdash; An EL expression can reference an <literal>InputStream</literal>. In this case both a <literal>fileName</literal> and a <literal>contentType</literal> must be specified.
+									</para>
+								</listitem>
+								<listitem>
+									<para>
+										<literal>byte[]</literal> &mdash; An EL expression can reference an <literal>byte[]</literal>. In this case both a <literal>fileName</literal> and a <literal>contentType</literal> must be specified.
+									</para>
+								</listitem>
+							</itemizedlist>
+							<para>
+								If the value attribute is ommitted:
+							</para>
+							<itemizedlist>
+								<listitem>
+									<para>
+										If this tag contains a <literal>&lt;p:document&gt;</literal> tag, the document described will be generated and attached to the email. A <literal>fileName</literal> should be specfied.
+									</para>
+								</listitem>
+								<listitem>
+									<para>
+										If this tag contains other JSF tags a HTML document will be generated from them and attached to the email. A <literal>fileName</literal> should be specfied.
+									</para>
+								</listitem>
+							</itemizedlist>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>fileName</literal> &mdash; Specify the file name to use for the attached file.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>contentType</literal> &mdash; Specify the MIME type of the attached file
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term>&lt;m:subject&gt;</term>
+				<listitem>
+					<para>
+						Set&#39;s the subject for the email.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term>&lt;m:body&gt;</term>
+				<listitem>
+					<para>
+						Set&#39;s the body for the email. Supports an <literal>alternative</literal> facet which, if an HTML email is generated can contain alternative text for a mail reader which doesn&#39;t support html.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>type</literal> &mdash; If set to <literal>plain</literal> then a plain text email will be generated otherwise an HTML email is generated.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+	</section>
+
+</chapter>
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Persistence.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Persistence.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Persistence.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,313 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping">
+	<title>Seam and Object/Relational Mapping</title>
+	<para>
+		Seam provides extensive support for the two most popular persistence architectures for Java: Hibernate3, and the Java Persistence API introduced with EJB 3.0. Seam&#39;s unique state-management architecture allows the most sophisticated ORM integration of any web application framework.
+	</para>
+	<section id="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Introduction">
+		<title>Introduction</title>
+		<para>
+			Seam grew out of the frustration of the Hibernate team with the statelessness typical of the previous generation of Java application architectures. The state management architecture of Seam was originally designed to solve problems relating to persistence&mdash;in particular problems associated with <emphasis>optimistic transaction processing</emphasis>. Scalable online applications always use optimistic transactions. An atomic (database/JTA) level transaction should not span a user interaction unless the application is designed to support only a very small number of concurrent clients. But almost all interesting work involves first displaying data to a user, and then, slightly later, updating the same data. So Hibernate was designed to support the idea of a persistence context which spanned an optimistic transaction.
+		</para>
+		<para>
+			Unfortunately, the so-called <emphasis>stateless</emphasis> architectures that preceded Seam and EJB 3.0 had no construct for representing an optimistic transaction. So, instead, these architectures provided persistence contexts scoped to the atomic transaction. This resulted in many problems for users, and is the cause of the number one user complaint about Hibernate: the dreaded <literal>LazyInitializationException</literal>. What we need is a construct for representing an optimistic transaction in the application tier.
+		</para>
+		<para>
+			EJB 3.0 recognizes this problem, and introduces the idea of a stateful component (a stateful session bean) with an <emphasis>extended persistence context</emphasis> scoped to the lifetime of the component. This is a partial solution to the problem (and is a useful construct in and of itself) however there are two problems:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					The lifecycle of the stateful session bean must be managed manually via code in the web tier (it turns out that this is a subtle problem and much more difficult in practice than it sounds).
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					Propagation of the persistence context between stateful components in the same optimistic transaction is possible, but tricky.
+				</para>
+			</listitem>
+		</itemizedlist>
+		<para>
+			Seam solves the first problem by providing conversations, and stateful session bean components scoped to the conversation. (Most conversations actually represent optimistic transactions in the data layer.) This is sufficient for many simple applications (such as the Seam booking demo) where persistence context propagation is not needed. For more complex applications, with many loosly-interacting components in each conversation, propagation of the persistence context across components becomes an important issue. So Seam extends the persistence context management model of EJB 3.0, to provide conversation-scoped extended persistence contexts.
+		</para>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Seam_managed_transactions">
+		<title>Seam managed transactions</title>
+		<para>
+			EJB session beans feature declarative transaction management. The EJB container is able to start a transaction transparently when the bean is invoked, and end it when the invocation ends. If we write a session bean method that acts as a JSF action listener, we can do all the work associated with that action in one transaction, and be sure that it is committed or rolled back when we finish processing the action. This is a great feature, and all that is needed by some Seam applications.
+		</para>
+		<para>
+			However, there is a problem with this approach. A Seam application may not perform all data access for a request from a single method call to a session bean.
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					The request might require processing by several loosly-coupled components, each of which is called independently from the web layer. It is common to see several or even many calls per request from the web layer to EJB components in Seam.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					Rendering of the view might require lazy fetching of associations.
+				</para>
+			</listitem>
+		</itemizedlist>
+		<para>
+			The more transactions per request, the more likely we are to encounter atomicity and isolation problems when our application is processing many concurrent requests. Certainly, all write operations should occur in the same transaction.
+		</para>
+		<para>
+			Hibernate users developed the <emphasis>open session in view</emphasis> pattern to work around this problem. In the Hibernate community, <emphasis>open session in view</emphasis> was historically even more important because frameworks like Spring use transaction-scoped persistence contexts. So rendering the view would cause <literal>LazyInitializationException</literal>s when unfetched associations were accessed.
+		</para>
+		<para>
+			This pattern is usually implemented as a single transaction which spans the entire request. There are several problems with this implementation, the most serious being that we can never be sure that a transaction is successful until we commit it&mdash;but by the time the <emphasis>open session in view</emphasis> transaction is committed, the view is fully rendered, and the rendered response may already have been flushed to the client. How can we notify the user that their transaction was unsuccessful?
+		</para>
+		<para>
+			Seam solves both the transaction isolation problem and the association fetching problem, while working around the problems with <emphasis>open session in view</emphasis>. The solution comes in two parts:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					use an extended persistence context that is scoped to the conversation, instead of to the transaction
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					use two transactions per request; the first spans the beginning of the update model values phase until the end of the invoke application phase; the second spans the render response phase
+				</para>
+			</listitem>
+		</itemizedlist>
+		<para>
+			In the next section, we will tell you how to set up a conversation-scope persistence context. But first we need to tell you how to enable Seam transaction management. Note that you can use conversation-scoped persistence contexts without Seam transaction management, and there are good reasons to use Seam transaction management even when you are not using Seam-managed persistence contexts. However, the two facilities were designed to work together, and work best when used together.
+		</para>
+		<section id="Seam_Reference_Guide-Seam_managed_transactions-Enabling_Seam_managed_transactions">
+			<title>Enabling Seam-managed transactions</title>
+			<para>
+				To make use of <emphasis>Seam managed transactions</emphasis>, you need to use <literal>TransactionalSeamPhaseListener</literal> in place of <literal>SeamPhaseListener</literal>.
+			</para>
+<programlisting>&lt;lifecycle&gt;
+     &lt;phase-listener&gt;
+        org.jboss.seam.jsf.TransactionalSeamPhaseListener
+    &lt;/phase-listener&gt;
+&lt;/lifecycle&gt;
+</programlisting>
+			<para>
+				Seam transaction management is useful even if you are using EJB 3.0 container-managed persistence contexts. But it is especially useful if you use Seam outside a Java EE 5 environment, or in any other case where you would use a Seam-managed persistence context.
+			</para>
+		</section>
+
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Seam_managed_persistence_contexts">
+		<title>Seam-managed persistence contexts</title>
+		<para>
+			If you are using Seam outside of a Java EE 5 environment, you cannot rely upon the container to manage the persistence context lifecycle for you. Even if you are in an EE 5 environment, you might have a complex application with many loosly coupled components that collaborate together in the scope of a single conversation, and in this case you might find that propagation of the persistence context between component is tricky and error-prone.
+		</para>
+		<para>
+			In either case, you will need to use a <emphasis>managed persistence context</emphasis> (for JPA) or a <emphasis>managed session</emphasis> (for Hibernate) in your components. A Seam-managed persistence context is just a built-in Seam component that manages an instance of <literal>EntityManager</literal> or <literal>Session</literal> in the conversation context. You can inject it with <literal>@In</literal>.
+		</para>
+		<para>
+			Seam-managed persistence contexts are extremely efficient in a clustered environment. Seam is able to perform an optimization that EJB 3.0 specification does not allow containers to use for container-managed extended persistence contexts. Seam supports transparent failover of extended persisence contexts, without the need to replicate any persistence context state between nodes. (We hope to fix this oversight in the next revision of the EJB spec.)
+		</para>
+		<section id="Seam_Reference_Guide-Seam_managed_persistence_contexts-Using_a_Seam_managed_persistence_context_with_JPA">
+			<title>Using a Seam-managed persistence context with JPA</title>
+			<para>
+				Configuring a managed persistence context is easy. In <literal>components.xml</literal>, we can write:
+			</para>
+<programlisting>&lt;core:managed-persistence-context name="bookingDatabase" 
+                           auto-create="true"
+            persistence-unit-jndi-name="java:/EntityManagerFactories/bookingData"/&gt;
+</programlisting>
+			<para>
+				This configuration creates a conversation-scoped Seam component named <literal>bookingDatabase</literal> that manages the lifecycle of <literal>EntityManager</literal> instances for the persistence unit (<literal>EntityManagerFactory</literal> instance) with JNDI name <literal>java:/EntityManagerFactories/bookingData</literal>.
+			</para>
+			<para>
+				Of course, you need to make sure that you have bound the <literal>EntityManagerFactory</literal> into JNDI. In JBoss, you can do this by adding the following property setting to <literal>persistence.xml</literal>.
+			</para>
+<programlisting>&lt;property name="jboss.entity.manager.factory.jndi.name" 
+          value="java:/EntityManagerFactories/bookingData"/&gt;
+</programlisting>
+			<para>
+				Now we can have our <literal>EntityManager</literal> injected using:
+			</para>
+<programlisting>@In EntityManager bookingDatabase;</programlisting>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Seam_managed_persistence_contexts-Using_a_Seam_managed_Hibernate_session">
+			<title>Using a Seam-managed Hibernate session</title>
+			<para>
+				Seam-managed Hibernate sessions are similar. In <literal>components.xml</literal>:
+			</para>
+<programlisting>&lt;core:hibernate-session-factory name="hibernateSessionFactory"/&gt;
+
+&lt;core:managed-hibernate-session name="bookingDatabase" 
+                         auto-create="true"
+           session-factory-jndi-name="java:/bookingSessionFactory"/&gt;
+</programlisting>
+			<para>
+				Where <literal>java:/bookingSessionFactory</literal> is the name of the session factory specified in <literal>hibernate.cfg.xml</literal>.
+			</para>
+<programlisting>&lt;session-factory name="java:/bookingSessionFactory"&gt;
+    &lt;property name="transaction.flush_before_completion"&gt;true&lt;/property&gt;
+    &lt;property name="connection.release_mode"&gt;after_statement&lt;/property&gt;
+    &lt;property name="transaction.manager_lookup_class"&gt;
+       org.hibernate.transaction.JBossTransactionManagerLookup
+    &lt;/property&gt;
+    &lt;property name="transaction.factory_class"&gt;
+       org.hibernate.transaction.JTATransactionFactory
+    &lt;/property&gt;
+    &lt;property name="connection.datasource"&gt;java:/bookingDatasource&lt;/property&gt;
+    ...
+&lt;/session-factory&gt;
+</programlisting>
+<important>
+			<para>
+				Seam does not flush the session, so you should always enable <literal>hibernate.transaction.flush_before_completion</literal> to ensure that the session is automatically flushed before the JTA transaction commits.
+			</para>
+		</important>
+			<para>
+				We can now have a managed Hibernate <literal>Session</literal> injected into our JavaBean components using the following code:
+			</para>
+<programlisting>@In Session bookingDatabase;</programlisting>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Seam_managed_persistence_contexts-Seam_managed_persistence_contexts_and_atomic_conversations">
+			<title>Seam-managed persistence contexts and atomic conversations</title>
+			<para>
+				Persistence contexts scoped to the conversation allows you to program optimistic transactions that span multiple requests to the server without the need to use the <literal>merge()</literal> operation , without the need to re-load data at the beginning of each request, and without the need to wrestle with the <literal>LazyInitializationException</literal> or <literal>NonUniqueObjectException</literal>.
+			</para>
+			<para>
+				As with any optimistic transaction management, transaction isolation and consistency can be achieved via use of optimistic locking. Fortunately, both Hibernate and EJB 3.0 make it very easy to use optimistic locking, by providing the <literal>@Version</literal> annotation.
+			</para>
+			<para>
+				By default, the persistence context is flushed (synchronized with the database) at the end of each transaction. This is sometimes the desired behavior. But very often, we would prefer that all changes are held in memory and only written to the database when the conversation ends successfully. This allows for truly atomic conversations. As the result of a truly stupid and shortsighted decision by certain non-JBoss, non-Sun and non-Sybase members of the EJB 3.0 expert group, there is currently no simple, usable and portable way to implement atomic conversations using EJB 3.0 persistence. However, Hibernate provides this feature as a vendor extension to the <literal>FlushModeType</literal>s defined by the specification, and it is our expectation that other vendors will soon provide a similar extension.
+			</para>
+			<para>
+				Seam lets you specify <literal>FlushModeType.MANUAL</literal> when beginning a conversation. Currently, this works only when Hibernate is the underlying persistence provider, but we plan to support other equivalent vendor extensions.
+			</para>
+<programlisting>@In EntityManager em; //a Seam-managed persistence context
+
+ at Begin(flushMode=MANUAL)
+public void beginClaimWizard() {
+    claim = em.find(Claim.class, claimId);
+}
+</programlisting>
+			<para>
+				Now, the <literal>claim</literal> object remains managed by the persistence context for the rest ot the conversation. We can make changes to the claim:
+			</para>
+<programlisting>public void addPartyToClaim() {
+    Party party = ....;
+    claim.addParty(party);
+}
+</programlisting>
+			<para>
+				But these changes will not be flushed to the database until we explicitly force the flush to occur:
+			</para>
+<programlisting>@End
+public void commitClaim() {
+    em.flush();
+}
+</programlisting>
+		</section>
+
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_the_JPA_delegate">
+		<title>Using the JPA "delegate"</title>
+		<para>
+			The <literal>EntityManager</literal> interface lets you access a vendor-specific API via the <literal>getDelegate()</literal> method. Naturally, the most interesting vendor is Hibernate, and the most powerful delegate interface is <literal>org.hibernate.Session</literal>. You&#39;d be nuts to use anything else. Trust me, I&#39;m not biased at all.
+		</para>
+		<para>
+			But regardless of whether you are using Hibernate or something else, you will almost certainly want to use the delegate in your Seam components from time to time. One approach would be the following:
+		</para>
+<programlisting>@In EntityManager entityManager;
+
+ at Create
+public void init() {
+    ( (Session) entityManager.getDelegate() ).enableFilter("currentVersions");
+}
+</programlisting>
+		<para>
+			But typecasts are unquestionably the ugliest syntax in the Java language, so most people avoid them whenever possible. Here is a different way to get at the delegate. First, add the following line to <literal>components.xml</literal>:
+		</para>
+<programlisting>&lt;factory name="session" 
+         scope="STATELESS" 
+         auto-create="true" 
+         value="#{entityManager.delegate}"/&gt;
+</programlisting>
+		<para>
+			Now we can inject the session directly:
+		</para>
+<programlisting>@In Session session;
+
+ at Create
+public void init() {
+    session.enableFilter("currentVersions");
+}
+</programlisting>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_EL_in_EJB_QLHQL">
+		<title>Using EL in EJB-QL/HQL</title>
+		<para>
+			Seam proxies the <literal>EntityManager</literal> or <literal>Session</literal> object whenever you use a Seam-managed persistence context or inject a container managed persistence context using <literal>@PersistenceContext</literal>. This lets you use EL expressions in your query strings, safely and efficiently. For example, this:
+		</para>
+<programlisting>User user = em.createQuery("from User where username=#{user.username}")
+         .getSingleResult();
+</programlisting>
+		<para>
+			is equivalent to:
+		</para>
+<programlisting>User user = em.createQuery("from User where username=:username")
+         .setParameter("username", user.getUsername())
+         .getSingleResult();
+</programlisting>
+		<para>
+			Of course, you should never, ever write it like this:
+		</para>
+<programlisting>User user = em.createQuery("from User where username=" + user.getUsername()) //BAD!
+         .getSingleResult();
+</programlisting>
+		<para>
+			(It is inefficient and vulnerable to SQL injection attacks.)
+		</para>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_Hibernate_filters">
+		<title>Using Hibernate filters</title>
+		<para>
+			The most unique feature of Hibernate is <emphasis>filters</emphasis>. Filters let you provide a restricted view of the data in the database. You can find out more about filters in the Hibernate documentation. But we thought we would mention an easy way to incorporate filters into a Seam application, one that works especially well with the Seam Application Framework.
+		</para>
+		<para>
+			Seam-managed persistence contexts may have a list of filters defined, which will be enabled whenever an <literal>EntityManager</literal> or Hibernate <literal>Session</literal> is first created. (Of course, they may only be used when Hibernate is the underlying persistence provider.)
+		</para>
+<programlisting>&lt;core:filter name="regionFilter"&gt;
+    &lt;core:name&gt;region&lt;/core:name&gt;
+    &lt;core:parameters&gt;
+        &lt;key&gt;regionCode&lt;/key&gt;
+        &lt;value&gt;#{region.code}&lt;/value&gt;
+    &lt;/core:parameters&gt;
+&lt;/core:filter&gt;
+
+&lt;core:filter name="currentFilter"&gt;
+    &lt;core:name&gt;current&lt;/core:name&gt;
+    &lt;core:parameters&gt;
+        &lt;key&gt;date&lt;/key&gt;
+        &lt;value&gt;#{currentDate}&lt;/value&gt;
+    &lt;/core:parameters&gt;
+&lt;/core:filter&gt;
+
+&lt;core:managed-persistence-context name="personDatabase"
+    persistence-unit-jndi-name="java:/EntityManagerFactories/personDatabase"&gt;
+    &lt;core:filters&gt;
+        &lt;value&gt;#{regionFilter}&lt;/value&gt;
+        &lt;value&gt;#{currentFilter}&lt;/value&gt;
+    &lt;/core:filters&gt;
+&lt;/core:managed-persistence-context&gt;
+</programlisting>
+	</section>
+
+</chapter>
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Remoting.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Remoting.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Remoting.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,578 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Seam_Reference_Guide-Remoting">
+	<title>Remoting</title>
+	<para>
+		Seam provides a convenient method of remotely accessing components from a web page, using AJAX (Asynchronous Javascript and XML). The framework for this functionality is provided with almost no up-front development effort - your components only require simple annotating to become accessible via AJAX. This chapter describes the steps required to build an AJAX-enabled web page, then goes on to explain the features of the Seam Remoting framework in more detail.
+	</para>
+	<sect1 id="Seam_Reference_Guide-Remoting-Configuration"><title>Configuration</title>
+	<para>
+		To use remoting, the Seam Resource servlet must first be configured in your <literal>web.xml</literal> file:
+	</para>
+<programlisting>
+          
+  &lt;servlet&gt;
+    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;
+    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-class&gt;
+  &lt;/servlet&gt;
+
+  &lt;servlet-mapping&gt;
+    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;
+    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;
+  &lt;/servlet-mapping&gt;
+        
+        
+</programlisting>
+	<para>
+		The next step is to import the necessary Javascript into your web page. There are a minimum of two scripts that must be imported. The first one contains all the client-side framework code that enables remoting functionality:
+	</para>
+<programlisting>
+          
+  &lt;script type="text/javascript" src="seam/resource/remoting/resource/remote.js"&gt;&lt;/script&gt;
+            
+        
+</programlisting>
+	<para>
+		The second script contains the stubs and type definitions for the components you wish to call. It is generated dynamically based on the local interface of your components, and includes type definitions for all of the classes that can be used to call the remotable methods of the interface. The name of the script reflects the name of your component. For example, if you have a stateless session bean annotated with <literal>@Name("customerAction")</literal>, then your script tag should look like this:
+	</para>
+<programlisting>
+          
+  &lt;script type="text/javascript" src="seam/resource/remoting/interface.js?customerAction"&gt;
+    &lt;/script&gt;
+        
+        
+</programlisting>
+	<para>
+		If you wish to access more than one component from the same page, then include them all as parameters of your script tag:
+	</para>
+<programlisting>
+          
+  &lt;script type="text/javascript" 
+     src="seam/resource/remoting/interface.js?customerAction&amp;accountAction"&gt;
+  &lt;/script&gt;
+        
+        
+</programlisting>
+	</sect1><sect1 id="Seam_Reference_Guide-Remoting-The_Seam_object"><title>The "Seam" object</title>
+	<para>
+		Client-side interaction with your components is all performed via the <literal>Seam</literal> Javascript object. This object is defined in <literal>remote.js</literal>, and you will be using it to make asynchronous calls against your component. It is split into two areas of functionality; <literal>Seam.Component</literal> contains methods for working with components and <literal>Seam.Remoting</literal> contains methods for executing remote requests. The easiest way to become familiar with this object is to start with a simple example.
+	</para>
+	<sect2 id="Seam_Reference_Guide-The_Seam_object-A_Hello_World_example"><title>A Hello World example</title>
+	<para>
+		Let us step through a simple example to see how the <literal>Seam</literal> object works. First of all, let us create a new Seam component called <literal>helloAction</literal>.
+	</para>
+<programlisting>
+          
+  @Stateless
+  @Name("helloAction")
+  public class HelloAction implements HelloLocal {
+    public String sayHello(String name) {
+      return "Hello, " + name;
+    }
+  }
+          
+        
+</programlisting>
+	<para>
+		You also need to create a local interface for our new component - take special note of the <literal>@WebRemote</literal> annotation, as it is required to make our method accessible via remoting:
+	</para>
+<programlisting>
+          
+  @Local
+  public interface HelloLocal {
+    @WebRemote
+    public String sayHello(String name);
+  }
+          
+        
+</programlisting>
+	<para>
+		That is all the server-side code we need to write. Now for our web page - create a new page and import the following scripts:
+	</para>
+<programlisting>
+          
+  &lt;script type="text/javascript" src="seam/resource/remoting/resource/remote.js"&gt;&lt;/script&gt;
+  &lt;script type="text/javascript" src="seam/resource/remoting/interface.js?helloAction"&gt;&lt;/script&gt;
+          
+        
+</programlisting>
+	<para>
+		To make this a fully interactive user experience, let us add a button to our page:
+	</para>
+<programlisting>
+          
+  &lt;button onclick="javascript:sayHello()"&gt;Say Hello&lt;/button&gt;
+          
+        
+</programlisting>
+	<para>
+		We will also need to add some more script to make our button actually do something when it is clicked:
+	</para>
+<programlisting>
+          
+  &lt;script type="text/javascript"&gt;
+    //&lt;![CDATA[
+
+    function sayHello() {
+      var name = prompt("What is your name?");
+      Seam.Component.getInstance("helloAction").sayHello(name, sayHelloCallback);
+    }
+
+    function sayHelloCallback(result) {
+      alert(result);
+    }
+
+    // ]]&gt;
+  &lt;/script&gt;
+          
+        
+</programlisting>
+	<para>
+		Now deploy your application and browse to your page. Click the button, and enter a name when prompted. A message box will display the hello message confirming that the call was successful. If you want to save some time, you will find the full source code for this Hello World example in Seam&#39;s <literal>/examples/remoting/helloworld</literal> directory.
+	</para>
+	<para>
+		So what does the code of our script actually do? Let us break it down into smaller pieces. To start with, you can see from the Javascript code listing that we have implemented two methods - the first method is responsible for prompting the user for their name and then making a remote request. Take a look at the following line:
+	</para>
+<programlisting>
+  Seam.Component.getInstance("helloAction").sayHello(name, sayHelloCallback);
+        
+</programlisting>
+	<para>
+		The first section of this line, <literal>Seam.Component.getInstance("helloAction")</literal> returns a proxy, or "stub" for our <literal>helloAction</literal> component. We can invoke the methods of our component against this stub, which is exactly what happens with the remainder of the line: <literal>sayHello(name, sayHelloCallback);</literal>.
+	</para>
+	<para>
+		What this line of code in its completeness does, is invoke the <literal>sayHello</literal> method of our component, passing in <literal>name</literal> as a parameter. The second parameter, <literal>sayHelloCallback</literal> is not a parameter of our component&#39;s <literal>sayHello</literal> method, instead it tells the Seam Remoting framework that once it receives the response to our request, it should pass it to the <literal>sayHelloCallback</literal> Javascript method. This callback parameter is entirely optional, so feel free to leave it out if you are calling a method with a <literal>void</literal> return type or if you do not care about the result.
+	</para>
+	<para>
+		The <literal>sayHelloCallback</literal> method, once receiving the response to our remote request then pops up an alert message displaying the result of our method call.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-The_Seam_object-Seam.Component"><title>Seam.Component</title>
+	<para>
+		The <literal>Seam.Component</literal> Javascript object provides a number of client-side methods for working with your Seam components. The two main methods, <literal>newInstance()</literal> and <literal>getInstance()</literal> are documented in the following sections however their main difference is that <literal>newInstance()</literal> will always create a new instance of a component type, and <literal>getInstance()</literal> will return a singleton instance.
+	</para>
+	<sect3 id="Seam_Reference_Guide-Seam.Component-Seam.Component.newInstance"><title>Seam.Component.newInstance()</title>
+	<para>
+		Use this method to create a new instance of an entity or Javabean component. The object returned by this method will have the same getter/setter methods as its server-side counterpart, or alternatively if you wish you can access its fields directly. Take the following Seam entity component for example:
+	</para>
+<programlisting>
+  @Name("customer")
+  @Entity
+  public class Customer implements Serializable
+  {
+    private Integer customerId;
+    private String firstName;
+    private String lastName;
+    
+    @Column public Integer getCustomerId() { 
+      return customerId; 
+    }
+    
+    public void setCustomerId(Integer customerId} { 
+      this.customerId = customerId; 
+    }
+    
+    @Column public String getFirstName() { 
+      return firstName; 
+    }
+    
+    public void setFirstName(String firstName) {
+      this.firstName = firstName; 
+    }
+    
+    @Column public String getLastName() {
+      return lastName;
+    }
+    
+    public void setLastName(String lastName) {
+      this.lastName = lastName;
+    }
+  }
+          
+</programlisting>
+	<para>
+		To create a client-side Customer you would write the following code:
+	</para>
+<programlisting>
+  var customer = Seam.Component.newInstance("customer");
+          
+</programlisting>
+	<para>
+		Then from here you can set the fields of the customer object:
+	</para>
+<programlisting>
+  customer.setFirstName("John");
+  // Or you can set the fields directly
+  customer.lastName = "Smith";
+          
+</programlisting>
+	</sect3><sect3 id="Seam_Reference_Guide-Seam.Component-Seam.Component.getInstance"><title>Seam.Component.getInstance()</title>
+	<para>
+		The <literal>getInstance()</literal> method is used to get a reference to a Seam session bean component stub, which can then be used to remotely execute methods against your component. This method returns a singleton for the specified component, so calling it twice in a row with the same component name will return the same instance of the component.
+	</para>
+	<para>
+		To continue our example from before, if we have created a new <literal>customer</literal> and we now wish to save it, we would pass it to the <literal>saveCustomer()</literal> method of our <literal>customerAction</literal> component:
+	</para>
+<programlisting>
+  Seam.Component.getInstance("customerAction").saveCustomer(customer);          
+          
+</programlisting>
+	</sect3><sect3 id="Seam_Reference_Guide-Seam.Component-Seam.Component.getComponentName"><title>Seam.Component.getComponentName()</title>
+	<para>
+		Passing an object into this method will return its component name if it is a component, or <literal>null</literal> if it is not.
+	</para>
+<programlisting>
+  if (Seam.Component.getComponentName(instance) == "customer")
+    alert("Customer");
+  else if (Seam.Component.getComponentName(instance) == "staff")
+    alert("Staff member");          
+          
+</programlisting>
+	</sect3></sect2><sect2 id="Seam_Reference_Guide-The_Seam_object-Seam.Remoting"><title>Seam.Remoting</title>
+	<para>
+		Most of the client side functionality for Seam Remoting is contained within the <literal>Seam.Remoting</literal> object. While you should not need to directly call most of its methods, there are a couple of important ones worth mentioning.
+	</para>
+	<sect3 id="Seam_Reference_Guide-Seam.Remoting-Seam.Remoting.createType"><title>Seam.Remoting.createType()</title>
+	<para>
+		If your application contains or uses Javabean classes that are not Seam components, you may need to create these types on the client side to pass as parameters into your component method. Use the <literal>createType()</literal> method to create an instance of your type. Pass in the fully qualified Java class name as a parameter:
+	</para>
+<programlisting>
+  var widget = Seam.Remoting.createType("com.acme.widgets.MyWidget");          
+          
+</programlisting>
+	</sect3><sect3 id="Seam_Reference_Guide-Seam.Remoting-Seam.Remoting.getTypeName"><title>Seam.Remoting.getTypeName()</title>
+	<para>
+		This method is the equivalent of <literal>Seam.Component.getComponentName()</literal> but for non-component types. It will return the name of the type for an object instance, or <literal>null</literal> if the type is not known. The name is the fully qualified name of the type&#39;s Java class.
+	</para>
+	</sect3></sect2></sect1><sect1 id="Seam_Reference_Guide-Remoting-Client_Interfaces"><title>Client Interfaces</title>
+	<para>
+		In the configuration section above, the interface, or "stub" for our component is imported into our page via <literal>seam/resource/remoting/interface.js</literal>:
+	</para>
+<programlisting>
+        
+  &lt;script type="text/javascript" src="seam/resource/remoting/interface.js?customerAction"&gt;
+  &lt;/script&gt;
+        
+      
+</programlisting>
+	<para>
+		By including this script in our page, the interface definitions for our component, plus any other components or types that are required to execute the methods of our component are generated and made available for the remoting framework to use.
+	</para>
+	<para>
+		There are two types of client stub that can be generated, "executable" stubs and "type" stubs. Executable stubs are behavioural, and are used to execute methods against your session bean components, while type stubs contain state and represent the types that can be passed in as parameters or returned as a result.
+	</para>
+	<para>
+		The type of client stub that is generated depends on the type of your Seam component. If the component is a session bean, then an executable stub will be generated, otherwise if it is an entity or JavaBean, then a type stub will be generated. There is one exception to this rule; if your component is a JavaBean (ie it is not a session bean nor an entity bean) and any of its methods are annotated with @WebRemote, then an executable stub will be generated for it instead of a type stub. This allows you to use remoting to call methods of your JavaBean components in a non-EJB environment where you do not have access to session beans.
+	</para>
+	</sect1><sect1 id="Seam_Reference_Guide-Remoting-The_Context"><title>The Context</title>
+	<para>
+		The Seam Remoting Context contains additional information which is sent and received as part of a remoting request/response cycle. At this stage it only contains the conversation ID but may be expanded in the future.
+	</para>
+	<sect2 id="Seam_Reference_Guide-The_Context-Setting_and_reading_the_Conversation_ID"><title>Setting and reading the Conversation ID</title>
+	<para>
+		If you intend on using remote calls within the scope of a conversation then you need to be able to read or set the conversation ID in the Seam Remoting Context. To read the conversation ID after making a remote request call <literal>Seam.Remoting.getContext().getConversationId()</literal>. To set the conversation ID before making a request, call <literal>Seam.Remoting.getContext().setConversationId()</literal>.
+	</para>
+	<para>
+		If the conversation ID has not been explicitly set with <literal>Seam.Remoting.getContext().setConversationId()</literal>, then it will be automatically assigned the first valid conversation ID that is returned by any remoting call. If you are working with multiple conversations within your page, then you may need to explicitly set the conversation ID before each call. If you are working with just a single conversation, then you do not need to do anything special.
+	</para>
+	</sect2>
+	</sect1><sect1 id="Seam_Reference_Guide-Remoting-Batch_Requests"><title>Batch Requests</title>
+	<para>
+		Seam Remoting allows multiple component calls to be executed within a single request. It is recommended that this feature is used wherever it is appropriate to reduce network traffic.
+	</para>
+	<para>
+		The method <literal>Seam.Remoting.startBatch()</literal> will start a new batch, and any component calls executed after starting a batch are queued, rather than being sent immediately. When all the desired component calls have been added to the batch, the <literal>Seam.Remoting.executeBatch()</literal> method will send a single request containing all of the queued calls to the server, where they will be executed in order. After the calls have been executed, a single response containining all return values will be returned to the client and the callback functions (if provided) triggered in the same order as execution.
+	</para>
+	<para>
+		If you start a new batch via the <literal>startBatch()</literal> method but then decide you do not want to send it, the <literal>Seam.Remoting.cancelBatch()</literal> method will discard any calls that were queued and exit the batch mode.
+	</para>
+	<para>
+		To see an example of a batch being used, take a look at <literal>/examples/remoting/chatroom</literal>.
+	</para>
+	</sect1><sect1 id="Seam_Reference_Guide-Remoting-Working_with_Data_types"><title>Working with Data types</title>
+	<sect2 id="Seam_Reference_Guide-Working_with_Data_types-Primitives__Basic_Types"><title>Primitives / Basic Types</title>
+	<para>
+		This section describes the support for basic data types. On the server side these values are generally compatible with either their primitive type or their corresponding wrapper class.
+	</para>
+	<sect3 id="Seam_Reference_Guide-Primitives__Basic_Types-String"><title>String</title>
+	<para>
+		Simply use Javascript String objects when setting String parameter values.
+	</para>
+	</sect3><sect3 id="Seam_Reference_Guide-Primitives__Basic_Types-Number"><title>Number</title>
+	<para>
+		There is support for all number types supported by Java. On the client side, number values are always serialized as their String representation and then on the server side they are converted to the correct destination type. Conversion into either a primitive or wrapper type is supported for <literal>Byte</literal>, <literal>Double</literal>, <literal>Float</literal>, <literal>Integer</literal>, <literal>Long</literal> and <literal>Short</literal> types.
+	</para>
+	</sect3><sect3 id="Seam_Reference_Guide-Primitives__Basic_Types-Boolean"><title>Boolean</title>
+	<para>
+		Booleans are represented client side by Javascript Boolean values, and server side by a Java boolean.
+	</para>
+	</sect3></sect2><sect2 id="Seam_Reference_Guide-Working_with_Data_types-JavaBeans"><title>JavaBeans</title>
+	<para>
+		In general these will be either Seam entity or JavaBean components, or some other non-component class. Use the appropriate method (either <literal>Seam.Component.newInstance()</literal> for Seam components or <literal>Seam.Remoting.createType()</literal> for everything else) to create a new instance of the object.
+	</para>
+	<para>
+		It is important to note that only objects that are created by either of these two methods should be used as parameter values, where the parameter is not one of the other valid types mentioned anywhere else in this section. In some situations you may have a component method where the exact parameter type cannot be determined, such as:
+	</para>
+<programlisting>
+  @Name("myAction")
+  public class MyAction implements MyActionLocal {
+    public void doSomethingWithObject(Object obj) {
+      // code
+    }
+  }
+        
+</programlisting>
+	<para>
+		In this case you might want to pass in an instance of your <literal>myWidget</literal> component, however the interface for <literal>myAction</literal> will not include <literal>myWidget</literal> as it is not directly referenced by any of its methods. To get around this, <literal>MyWidget</literal> needs to be explicitly imported:
+	</para>
+<programlisting>
+                  
+  &lt;script type="text/javascript" src="seam/resource/remoting/interface.js?myAction&amp;myWidget"&gt;
+  &lt;/script&gt;
+          
+        
+</programlisting>
+	<para>
+		This will then allow a <literal>myWidget</literal> object to be created with <literal>Seam.Component.newInstance("myWidget")</literal>, which can then be passed to <literal>myAction.doSomethingWithObject()</literal>.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Working_with_Data_types-Dates_and_Times"><title>Dates and Times</title>
+	<para>
+		Date values are serialized into a String representation that is accurate to the millisecond. On the client side, use a Javascript Date object to work with date values. On the server side, use any <literal>java.util.Date</literal> (or descendent, such as <literal>java.sql.Date</literal> or <literal>java.sql.Timestamp</literal> class.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Working_with_Data_types-Enums"><title>Enums</title>
+	<para>
+		On the client side, enums are treated the same as Strings. When setting the value for an enum parameter, simply use the String representation of the enum. Take the following component as an example:
+	</para>
+<programlisting>
+  @Name("paintAction")
+  public class paintAction implements paintLocal {
+    public enum Color {red, green, blue, yellow, orange, purple};
+
+    public void paint(Color color) {
+      // code
+    }    
+  }            
+        
+</programlisting>
+	<para>
+		To call the <literal>paint()</literal> method with the color <literal>red</literal>, pass the parameter value as a String literal:
+	</para>
+<programlisting>
+  Seam.Component.getInstance("paintAction").paint("red");
+        
+</programlisting>
+	<para>
+		The inverse is also true - that is, if a component method returns an enum parameter (or contains an enum field anywhere in the returned object graph) then on the client-side it will be represented as a String.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Working_with_Data_types-Collections"><title>Collections</title>
+	<sect3 id="Seam_Reference_Guide-Collections-Bags"><title>Bags</title>
+	<para>
+		Bags cover all collection types including arrays, collections, lists, sets, (but excluding Maps - see the next section for those), and are implemented client-side as a Javascript array. When calling a component method that accepts one of these types as a parameter, your parameter should be a Javascript array. If a component method returns one of these types, then the return value will also be a Javascript array. The remoting framework is clever enough on the server side to convert the bag to an appropriate type for the component method call.
+	</para>
+	</sect3><sect3 id="Seam_Reference_Guide-Collections-Maps"><title>Maps</title>
+	<para>
+		As there is no native support for Maps within Javascript, a simple Map implementation is provided with the Seam Remoting framework. To create a Map which can be used as a parameter to a remote call, create a new <literal>Seam.Remoting.Map</literal> object:
+	</para>
+<programlisting>
+  var map = new Seam.Remoting.Map();          
+          
+</programlisting>
+	<para>
+		This Javascript implementation provides basic methods for working with Maps: <literal>size()</literal>, <literal>isEmpty()</literal>, <literal>keySet()</literal>, <literal>values()</literal>, <literal>get(key)</literal>, <literal>put(key, value)</literal>, <literal>remove(key)</literal> and <literal>contains(key)</literal>. Each of these methods are equivalent to their Java counterpart. Where the method returns a collection, such as <literal>keySet()</literal> and <literal>values()</literal>, a Javascript Array object will be returned that contains the key or value objects (respectively).
+	</para>
+	</sect3></sect2></sect1><sect1 id="Seam_Reference_Guide-Remoting-Debugging"><title>Debugging</title>
+	<para>
+		To aid in tracking down bugs, it is possible to enable a debug mode which will display the contents of all the packets send back and forth between the client and server in a popup window. To enable debug mode, either execute the <literal>setDebug()</literal> method in Javascript:
+	</para>
+<programlisting>
+  Seam.Remoting.setDebug(true);      
+      
+</programlisting>
+	<para>
+		Or configure it via components.xml:
+	</para>
+<programlisting>&lt;remoting:remoting debug="true"/&gt;</programlisting>
+	<para>
+		To turn off debugging, call <literal>setDebug(false)</literal>. If you want to write your own messages to the debug log, call <literal>Seam.Remoting.log(message)</literal>.
+	</para>
+	</sect1><sect1 id="Seam_Reference_Guide-Remoting-The_Loading_Message"><title>The Loading Message</title>
+	<para>
+		The default loading message that appears in the top right corner of the screen can be modified, its rendering customised or even turned off completely.
+	</para>
+	<sect2 id="Seam_Reference_Guide-The_Loading_Message-Changing_the_message"><title>Changing the message</title>
+	<para>
+		To change the message from the default "Please Wait..." to something different, set the value of <literal>Seam.Remoting.loadingMessage</literal>:
+	</para>
+<programlisting>
+  Seam.Remoting.loadingMessage = "Loading...";        
+        
+</programlisting>
+	</sect2><sect2 id="Seam_Reference_Guide-The_Loading_Message-Hiding_the_loading_message"><title>Hiding the loading message</title>
+	<para>
+		To completely suppress the display of the loading message, override the implementation of <literal>displayLoadingMessage()</literal> and <literal>hideLoadingMessage()</literal> with functions that instead do nothing:
+	</para>
+<programlisting>
+  // do not display the loading indicator
+  Seam.Remoting.displayLoadingMessage = function() {};
+  Seam.Remoting.hideLoadingMessage = function() {};        
+        
+</programlisting>
+	</sect2><sect2 id="Seam_Reference_Guide-The_Loading_Message-A_Custom_Loading_Indicator"><title>A Custom Loading Indicator</title>
+	<para>
+		It is also possible to override the loading indicator to display an animated icon, or anything else that you want. To do this override the <literal>displayLoadingMessage()</literal> and <literal>hideLoadingMessage()</literal> messages with your own implementation:
+	</para>
+<programlisting>
+  Seam.Remoting.displayLoadingMessage = function() {
+    // Write code here to display the indicator
+  };
+  
+  Seam.Remoting.hideLoadingMessage = function() {
+    // Write code here to hide the indicator
+  };
+        
+</programlisting>
+	</sect2></sect1><sect1 id="Seam_Reference_Guide-Remoting-Controlling_what_data_is_returned"><title>Controlling what data is returned</title>
+	<para>
+		When a remote method is executed, the result is serialized into an XML response that is returned to the client. This response is then unmarshaled by the client into a Javascript object. For complex types (i.e. Javabeans) that include references to other objects, all of these referenced objects are also serialized as part of the response. These objects may reference other objects, which may reference other objects, and so forth. If left unchecked, this object "graph" could potentially be enormous, depending on what relationships exist between your objects. And as a side issue (besides the potential verbosity of the response), you might also wish to prevent sensitive information from being exposed to the client.
+	</para>
+	<para>
+		Seam Remoting provides a simple means to "constrain" the object graph, by specifying the <literal>exclude</literal> field of the remote method&#39;s <literal>@WebRemote</literal> annotation. This field accepts a String array containing one or more paths specified using dot notation. When invoking a remote method, the objects in the result&#39;s object graph that match these paths are excluded from the serialized result packet.
+	</para>
+	<para>
+		For all our examples, we will use the following <literal>Widget</literal> class:
+	</para>
+<programlisting>
+ at Name("widget")
+public class Widget
+{
+  private String value;
+  private String secret;
+  private Widget child;
+  private Map&lt;String,Widget&gt; widgetMap;
+  private List&lt;Widget&gt; widgetList;
+  
+  // getters and setters for all fields
+}
+      
+</programlisting>
+	<sect2 id="Seam_Reference_Guide-Controlling_what_data_is_returned-Constraining_normal_fields"><title>Constraining normal fields</title>
+	<para>
+		If your remote method returns an instance of <literal>Widget</literal>, but you do not want to expose the <literal>secret</literal> field because it contains sensitive information, you would constrain it like this:
+	</para>
+<programlisting>
+  @WebRemote(exclude = {"secret"})
+  public Widget getWidget();      
+        
+</programlisting>
+	<para>
+		The value "secret" refers to the <literal>secret</literal> field of the returned object. Now, suppose that we do not care about exposing this particular field to the client. Instead, notice that the <literal>Widget</literal> value that is returned has a field <literal>child</literal> that is also a <literal>Widget</literal>. What if we want to hide the <literal>child</literal>&#39;s <literal>secret</literal> value instead? We can do this by using dot notation to specify this field&#39;s path within the result&#39;s object graph:
+	</para>
+<programlisting>
+  @WebRemote(exclude = {"child.secret"})
+  public Widget getWidget();      
+        
+</programlisting>
+	</sect2><sect2 id="Seam_Reference_Guide-Controlling_what_data_is_returned-Constraining_Maps_and_Collections"><title>Constraining Maps and Collections</title>
+	<para>
+		The other place that objects can exist within an object graph are within a <literal>Map</literal> or some kind of collection (<literal>List</literal>, <literal>Set</literal>, <literal>Array</literal>, etc). Collections are easy, and are treated like any other field. For example, if our <literal>Widget</literal> contained a list of other <literal>Widget</literal>s in its <literal>widgetList</literal> field, to constrain the <literal>secret</literal> field of the <literal>Widget</literal>s in this list the annotation would look like this:
+	</para>
+<programlisting>
+  @WebRemote(exclude = {"widgetList.secret"})
+  public Widget getWidget();      
+        
+</programlisting>
+	<para>
+		To constrain a <literal>Map</literal>&#39;s key or value, the notation is slightly different. Appending <literal>[key]</literal> after the <literal>Map</literal>&#39;s field name will constrain the <literal>Map</literal>&#39;s key object values, while <literal>[value]</literal> will constrain the value object values. The following example demonstrates how the values of the <literal>widgetMap</literal> field have their <literal>secret</literal> field constrained:
+	</para>
+<programlisting>
+  @WebRemote(exclude = {"widgetMap[value].secret"})
+  public Widget getWidget();      
+        
+</programlisting>
+	</sect2><sect2 id="Seam_Reference_Guide-Controlling_what_data_is_returned-Constraining_objects_of_a_specific_type"><title>Constraining objects of a specific type</title>
+	<para>
+		There is one last notation that can be used to constrain the fields of a type of object no matter where in the result&#39;s object graph it appears. This notation uses either the name of the component (if the object is a Seam component) or the fully qualified class name (only if the object is not a Seam component) and is expressed using square brackets:
+	</para>
+<programlisting>
+  @WebRemote(exclude = {"[widget].secret"})
+  public Widget getWidget();      
+        
+</programlisting>
+	</sect2><sect2 id="Seam_Reference_Guide-Controlling_what_data_is_returned-Combining_Constraints"><title>Combining Constraints</title>
+	<para>
+		Constraints can also be combined, to filter objects from multiple paths within the object graph:
+	</para>
+<programlisting>
+  @WebRemote(exclude = {"widgetList.secret", "widgetMap[value].secret"})
+  public Widget getWidget();      
+        
+</programlisting>
+	</sect2></sect1><sect1 id="Seam_Reference_Guide-Remoting-JMS_Messaging"><title>JMS Messaging</title>
+	<para>
+		Seam Remoting provides experimental support for JMS Messaging. This section describes the JMS support that is currently implemented, but please note that this may change in the future. It is currently not recommended that this feature is used within a production environment.
+	</para>
+	<sect2 id="Seam_Reference_Guide-JMS_Messaging-Configuration"><title>Configuration</title>
+	<para>
+		Before you can subscribe to a JMS topic, you must first configure a list of the topics that can be subscribed to by Seam Remoting. List the topics under <literal>org.jboss.seam.remoting.messaging.subscriptionRegistry.allowedTopics</literal> in <literal>seam.properties</literal>, <literal>web.xml</literal> or <literal>components.xml</literal>.
+	</para>
+<programlisting>&lt;remoting:remoting poll-timeout="5" poll-interval="1"/&gt;</programlisting>
+	</sect2><sect2 id="Seam_Reference_Guide-JMS_Messaging-Subscribing_to_a_JMS_Topic"><title>Subscribing to a JMS Topic</title>
+	<para>
+		The following example demonstrates how to subscribe to a JMS Topic:
+	</para>
+<programlisting>
+  function subscriptionCallback(message)
+  {
+    if (message instanceof Seam.Remoting.TextMessage)
+      alert("Received message: " + message.getText());
+  }        
+        
+  Seam.Remoting.subscribe("topicName", subscriptionCallback);
+        
+</programlisting>
+	<para>
+		The <literal>Seam.Remoting.subscribe()</literal> method accepts two parameters, the first being the name of the JMS Topic to subscribe to, the second being the callback function to invoke when a message is received.
+	</para>
+	<para>
+		There are two types of messages supported, Text messages and Object messages. If you need to test for the type of message that is passed to your callback function you can use the <literal>instanceof</literal> operator to test whether the message is a <literal>Seam.Remoting.TextMessage</literal> or <literal>Seam.Remoting.ObjectMessage</literal>. A <literal>TextMessage</literal> contains the text value in its <literal>text</literal> field (or alternatively call <literal>getText()</literal> on it), while an <literal>ObjectMessage</literal> contains its object value in its <literal>object</literal> field (or call its <literal>getObject()</literal> method).
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-JMS_Messaging-Unsubscribing_from_a_Topic"><title>Unsubscribing from a Topic</title>
+	<para>
+		To unsubscribe from a topic, call <literal>Seam.Remoting.unsubscribe()</literal> and pass in the topic name:
+	</para>
+<programlisting>
+  Seam.Remoting.unsubscribe("topicName");        
+        
+</programlisting>
+	</sect2><sect2 id="Seam_Reference_Guide-JMS_Messaging-Tuning_the_Polling_Process"><title>Tuning the Polling Process</title>
+	<para>
+		There are two parameters which you can modify to control how polling occurs. The first one is <literal>Seam.Remoting.pollInterval</literal>, which controls how long to wait between subsequent polls for new messages. This parameter is expressed in seconds, and its default setting is 10.
+	</para>
+	<para>
+		The second parameter is <literal>Seam.Remoting.pollTimeout</literal>, and is also expressed as seconds. It controls how long a request to the server should wait for a new message before timing out and sending an empty response. Its default is 0 seconds, which means that when the server is polled, if there are no messages ready for delivery then an empty response will be immediately returned.
+	</para>
+	<para>
+		Caution should be used when setting a high <literal>pollTimeout</literal> value; each request that has to wait for a message means that a server thread is tied up until a message is received, or until the request times out. If many such requests are being served simultaneously, it could mean a large number of threads become tied up because of this reason.
+	</para>
+	<para>
+		It is recommended that you set these options via components.xml, however they can be overridden via Javascript if desired. The following example demonstrates how to configure the polling to occur much more aggressively. You should set these parameters to suitable values for your application:
+	</para>
+	<para>
+		Via components.xml:
+	</para>
+<programlisting>&lt;remoting:remoting poll-timeout="5" poll-interval="1"/&gt;</programlisting>
+	<para>
+		Via JavaScript:
+	</para>
+<programlisting>
+  // Only wait 1 second between receiving a poll response and sending the next poll request.
+  Seam.Remoting.pollInterval = 1;
+  
+  // Wait up to 5 seconds on the server for new messages
+  Seam.Remoting.pollTimeout = 5;   
+        
+</programlisting>
+	</sect2></sect1>
+</chapter>
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Revision_History.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Revision_History.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Revision_History.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,26 @@
+<?xml version='1.0'?>
+<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<appendix id="appe-Publican-Revision_History">
+	<title>Revision History</title>
+	<simpara>
+		<revhistory>
+			<revision>
+				<revnumber>1.0</revnumber>
+				<date>Thu Nov 19 2009</date>
+				<author>
+					<firstname>Laura</firstname>
+					<surname>Bailey</surname>
+					<email>lbailey at redhat.com</email>
+				</author>
+				<revdescription>
+					<simplelist>
+						<member>Initial draft.</member>
+					</simplelist>
+				</revdescription>
+			</revision>
+		</revhistory>
+	</simpara>
+</appendix>
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Seam_Reference_Guide_CP07.ent
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Seam_Reference_Guide_CP07.ent	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Seam_Reference_Guide_CP07.ent	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2 @@
+<!ENTITY HOLDER "Red Hat, Inc">
+<!ENTITY YEAR "2009">

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Seam_Reference_Guide_CP07.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Seam_Reference_Guide_CP07.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Seam_Reference_Guide_CP07.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,165 @@
+<?xml version='1.0'?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<book>
+	<xi:include href="Book_Info.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Feedback.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<toc></toc><preface id="Seam_Reference_Guide-Introduction_to_JBoss_Seam">
+		<title>Introduction to JBoss Seam</title>
+		<para>
+			Seam is an application framework for Java EE 5. It is inspired by the following principles:
+		</para>
+		<variablelist>
+			<varlistentry>
+				<term><emphasis>Integrate JSF with EJB 3.0</emphasis></term>
+				<listitem>
+					<para>
+						JSF and EJB 3.0 are two of the best new features of Java EE 5. EJB3 is a brand new component model for server side business and persistence logic. Meanwhile, JSF is a great component model for the presentation tier. Unfortunately, neither component model is able to solve all problems in computing by itself. Indeed, JSF and EJB3 work best when used together. But the Java EE 5 specification provides no standard way to integrate the two component models. Fortunately, the creators of both models anticipated this situation and provided standard extension points to allow extension and integration of other solutions.
+					</para>
+					<para>
+						Seam unifies the component models of JSF and EJB3, allowing the developer to concentrate on the business problem.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><emphasis>Integrated AJAX</emphasis></term>
+				<listitem>
+					<para>
+						Seam supports two open source JSF-based AJAX solutions: ICEfaces and Ajax4JSF. These solutions let you add AJAX capability to your user interface without the need to write any JavaScript code.
+					</para>
+					<para>
+						Seam also provides a built-in JavaScript remoting layer for EJB3 components. AJAX clients can easily call server-side components and subscribe to JMS topics, without the need for an intermediate action layer.
+					</para>
+					<para>
+						Neither of these approaches would work well, were it not for Seam's built-in concurrency and state management, which ensures that many concurrent fine-grained, asynchronous AJAX requests are handled safely and efficiently on the server side.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><emphasis>Integrate Business Process as a First Class Construct</emphasis></term>
+				<listitem>
+					<para>
+						Optionally, Seam integrates transparent business process management via jBPM. This allows for complex workflows to easily be implemented using jBPM and Seam.
+					</para>
+					<para>
+						Seam even allows definition of presentation tier conversation flow by the same means.
+					</para>
+					<para>
+						JSF provides an incredibly rich event model for the presentation tier. Seam enhances this model by exposing jBPM's business process related events via exactly the same event handling mechanism, providing a uniform event model for Seam's uniform component model.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><emphasis>The uniform component model</emphasis></term>
+				<listitem>
+					<para>
+						Seam provides a uniform component model. A Seam component may be stateful, with the state associated to any one of a number of contexts, ranging from the long-running business process to a single web request.
+					</para>
+					<para>
+						There is no distinction between presentation tier components and business logic components in Seam. It is possible to write Seam applications where <emphasis>everything</emphasis> is an EJB. EJB 3.0 completely changes the nature of EJB from the point of view of the developer. An EJB is a fine-grained object, no more complex than an annotated JavaBean. Seam even encourages you to use session beans as JSF action listeners.
+					</para>
+					<para>
+						Unlike plain Java EE or J2EE components, Seam components may <emphasis>simultaneously</emphasis> access state associated with the web request and state held in transactional resources (without the need to propagate web request state manually via method parameters). You might object that the application layering imposed upon you by the old J2EE platform was a Good Thing. Well, nothing stops you creating an equivalent layered architecture using Seam - the difference is that <emphasis>you</emphasis> get to architect your own application and decide what the layers are and how they work together.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><emphasis>Declarative State Management</emphasis></term>
+				<listitem>
+					<para>
+						We are all used to the concept of declarative transaction management and J2EE declarative security from EJB 2.x. EJB 3.0 even introduces declarative persistence context management. These are three examples of a broader problem of managing state that is associated with a particular <emphasis>context</emphasis>, while ensuring that all needed cleanup occurs when the context ends. Seam takes the concept of declarative state management much further and applies it to <emphasis>application state</emphasis>. Traditionally, J2EE applications almost always implement state management manually, by getting and setting servlet session and request attributes. This approach to state management is the source of many bugs and memory leaks when applications fail to clean up session attributes, or when session data associated with different workflows collides in a multi-window application. Seam has the potential to almost entirely eliminate this class of bugs.
+					</para>
+					<para>
+						Declarative application state management is made possible by the richness of the <emphasis>context model</emphasis> defined by Seam. Seam extends the context model defined by the servlet spec&mdash;request, session, application&mdash;with two new contexts&mdash;conversation and business process&mdash;that are more meaningful from the point of view of the business logic.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><emphasis>Bijection</emphasis></term>
+				<listitem>
+					<para>
+						The notion of <emphasis>Inversion of Control</emphasis> or <emphasis>dependency injection</emphasis> exists in both JSF and EJB3, as well as in numerous simpler containers. Most of these containers emphasize injection of components that implement <emphasis>stateless services</emphasis>. Even when injection of stateful components is supported (such as in JSF), it is virtually useless for handling application state because the scope of the stateful component cannot be defined with sufficient flexibility.
+					</para>
+					<para>
+						<emphasis>Bijection</emphasis> differs from IoC in that it is <emphasis>dynamic</emphasis>, <emphasis>contextual</emphasis>, and <emphasis>bidirectional</emphasis>. You can think of it as a mechanism for aliasing contextual variables (names in the various contexts bound to the current thread) to attributes of the component. Bijection allows auto-assembly of stateful components by the container. It even allows a component to safely and easily manipulate the value of a context variable, just by assigning to an attribute of the component.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><emphasis>Workspace Management</emphasis></term>
+				<listitem>
+					<para>
+						Optionally, Seam applications may take advantage of <emphasis>workspace management</emphasis>, allowing users to freely switch between different conversations (workspaces) in a single browser window. Seam provides not only correct multi-window operation, but also multi-window-like operation in a single window!
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><emphasis>Annotated POJOs Everywhere</emphasis></term>
+				<listitem>
+					<para>
+						EJB 3.0 embraces annotations and <emphasis>configuration by exception</emphasis> as the easiest way to provide information to the container in a declarative form. Unfortunately, JSF is still heavily dependent on verbose XML configuration files. Seam extends the annotations provided by EJB 3.0 with a set of annotations for declarative state management and declarative context demarcation. This lets you eliminate the noisy JSF managed bean declarations and reduce the required XML to just that information which truly belongs in XML (the JSF navigation rules).
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><emphasis>Testability as a Core Feature</emphasis></term>
+				<listitem>
+					<para>
+						Seam components, being POJOs, are by nature unit testable. But for complex applications, unit testing alone is insufficient. Integration testing has traditionally been a messy and difficult task for Java web applications. Therefore, Seam provides for testability of Seam applications as a core feature of the framework. You can easily write JUnit or TestNG tests that reproduce a whole interaction with a user, exercising all components of the system apart from the view (the JSP or Facelets page). You can run these tests directly inside your IDE, where Seam will automatically deploy EJB components into the JBoss Embeddable EJB3 container.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><emphasis>Get started now!</emphasis></term>
+				<listitem>
+					<para>
+						Seam works in any application server that supports EJB 3.0. You can even use Seam in a servlet container like Tomcat, or in any J2EE application server, by leveraging the new JBoss Embeddable EJB3 container.
+					</para>
+					<para>
+						However, we realize that not everyone is ready to make the switch to EJB 3.0. So, in the interim, you can use Seam as a framework for applications that use JSF for presentation, Hibernate (or plain JDBC) for persistence and JavaBeans for application logic. Then, when you&#39;re ready to make the switch to EJB 3.0, migration will be straightforward.
+					</para>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+		<mediaobject>
+			<imageobject role="fo">
+				<imagedata align="center" fileref="images/architecture.png" />
+			</imageobject>
+		</mediaobject>
+		<para>
+			It turns out that the combination of Seam, JSF and EJB3 is <emphasis>the</emphasis> simplest way to write a complex web application in Java. You won&#39;t believe how little code is required!
+		</para>
+	</preface>
+	<xi:include href="Tutorial.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<!-- Seam-gen is not included with the JBEAP 4.2 platform, so we're removing this chapter -->
+	<!-- <xi:include href="Gettingstarted.xml" xmlns:xi="http://www.w3.org/2001/XInclude" /> -->
+	<xi:include href="Concepts.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Xml.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Events.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Conversations.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Jbpm.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Persistence.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Validation.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Framework.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Drools.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Security.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="I18n.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Text.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Itext.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Mail.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Jms.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Cache.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Remoting.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Spring.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Configuration.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Annotations.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Components.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Controls.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Elenhancements.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Testing.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Tools.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Revision_History.xml"/>
+
+</book>
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Security.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Security.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Security.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,745 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Seam_Reference_Guide-Security">
+	<title>Security</title>
+	<para>
+		The Seam Security API is an optional Seam feature that provides authentication and authorization features for securing both domain and page resources within your Seam project.
+	</para>
+	<sect1 id="Seam_Reference_Guide-Security-Overview"><title>Overview</title>
+	<para>
+		Seam Security provides two different modes of operation:
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				<emphasis>simplified mode</emphasis> - this mode supports authentication services and simple role-based security checks.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<emphasis>advanced mode</emphasis> - this mode supports all the same features as the simplified mode, plus it offers rule-based security checks using JBoss Rules.
+			</para>
+		</listitem>
+	</itemizedlist>
+	<sect2 id="Seam_Reference_Guide-Overview-Which_mode_is_right_for_my_application"><title>Which mode is right for my application?</title>
+	<para>
+		That all depends on the requirements of your application. If you have minimal security requirements, for example if you only wish to restrict certain pages and actions to users who are logged in, or who belong to a certain role, then the simplified mode will probably be sufficient. The advantages of this is a more simplified configuration, significantly less libraries to include, and a smaller memory footprint.
+	</para>
+	<para>
+		If on the other hand, your application requires security checks based on contextual state or complex business rules, then you will require the features provided by the advanced mode.
+	</para>
+	</sect2></sect1><sect1 id="Seam_Reference_Guide-Security-Requirements"><title>Requirements</title>
+	<para>
+		If using the advanced mode features of Seam Security, the following jar files are required to be configured as modules in <literal>application.xml</literal>. If you are using Seam Security in simplified mode, these are <emphasis>not</emphasis> required:
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				drools-compiler-3.0.5.jar
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				drools-core-3.0.5.jar
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				commons-jci-core-1.0-406301.jar
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				commons-jci-janino-2.4.3.jar
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				commons-lang-2.1.jar
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				janino-2.4.3.jar
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				stringtemplate-2.3b6.jar
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				antlr-2.7.6.jar
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				antlr-3.0ea8.jar
+			</para>
+		</listitem>
+	</itemizedlist>
+	<para>
+		For web-based security, <literal>jboss-seam-ui.jar</literal> must also be included in the application&#39;s war file. Also, to make use of the security EL functions, <literal>SeamFaceletViewHandler</literal> must be used. Configure it in <literal>faces-config.xml</literal> like this:
+	</para>
+<programlisting>&lt;application&gt;
+    &lt;view-handler&gt;org.jboss.seam.ui.facelet.SeamFaceletViewHandler&lt;/view-handler&gt;
+&lt;/application&gt;
+</programlisting>
+	</sect1><sect1 id="Seam_Reference_Guide-Security-Authentication"><title>Authentication</title>
+	<para>
+		The authentication features provided by Seam Security are built upon JAAS (Java Authentication and Authorization Service), and as such provide a robust and highly configurable API for handling user authentication. However, for less complex authentication requirements Seam offers a much more simplified method of authentication that hides the complexity of JAAS.
+	</para>
+	<sect2 id="Seam_Reference_Guide-Authentication-Configuration"><title>Configuration</title>
+	<para>
+		The simplified authentication method uses a built-in JAAS login module, <literal>SeamLoginModule</literal>, which delegates authentication to one of your own Seam components. This login module is already configured inside Seam as part of a default application policy and as such does not require any additional configuration files. It allows you to write an authentication method using the entity classes that are provided by your own application. Configuring this simplified form of authentication requires the <literal>identity</literal> component to be configured in <literal>components.xml</literal>:
+	</para>
+<programlisting>&lt;components xmlns="http://jboss.com/products/seam/components"
+            xmlns:core="http://jboss.com/products/seam/core"
+            xmlns:security="http://jboss.com/products/seam/security"
+            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+            xsi:schemaLocation=
+                "http://jboss.com/products/seam/core http://jboss.com/products/seam/core-1.2.xsd 
+                 http://jboss.com/products/seam/components http://jboss.com/products/seam/components-1.2.xsd
+                 http://jboss.com/products/seam/drools http://jboss.com/products/seam/drools-1.2.xsd"
+                 http://jboss.com/products/seam/security http://jboss.com/products/seam/security-1.2.xsd"&gt;                
+        
+    &lt;security:identity authenticate-method="#{authenticator.authenticate}"/&gt;
+    
+&lt;/components&gt;
+</programlisting>
+	<para>
+		If you wish to use the advanced security features such as rule-based permission checks, all you need to do is include the Drools (JBoss Rules) jars in your classpath, and add some additional configuration, described later.
+	</para>
+	<para>
+		The EL expression <literal>#{authenticator.authenticate}</literal> is a method binding indicating that the <literal>authenticate</literal> method of the <literal>authenticator</literal> component will be used to authenticate the user.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Authentication-Writing_an_authentication_method"><title>Writing an authentication method</title>
+	<para>
+		The <literal>authenticate-method</literal> property specified for <literal>identity</literal> in <literal>components.xml</literal> specifies which method will be used by <literal>SeamLoginModule</literal> to authenticate users. This method takes no parameters, and is expected to return a boolean indicating whether authentication is successful or not. The user&#39;s username and password can be obtained from <literal>Identity.instance().getUsername()</literal> and <literal>Identity.instance().getPassword()</literal>, respectively. Any roles that the user is a member of should be assigned using <literal>Identity.instance().addRole()</literal>. Here is a complete example of an authentication method inside a JavaBean component:
+	</para>
+<programlisting>@Name("authenticator")
+public class Authenticator {
+   @In EntityManager entityManager;
+   
+   public boolean authenticate() {
+      try
+      {
+         User user = (User) entityManager.createQuery(
+            "from User where username = :username and password = :password")
+            .setParameter("username", Identity.instance().getUsername())
+            .setParameter("password", Identity.instance().getPassword())
+            .getSingleResult();
+
+         if (user.getRoles() != null)
+         {
+            for (UserRole mr : user.getRoles())
+               Identity.instance().addRole(mr.getName());
+         }
+
+         return true;
+      }
+      catch (NoResultException ex)
+      {
+         FacesMessages.instance().add("Invalid username/password");
+         return false;
+      }
+      
+   }
+   
+}
+</programlisting>
+	<para>
+		In the above example, both <literal>User</literal> and <literal>UserRole</literal> are application-specific entity beans. The <literal>roles</literal> parameter is populated with the roles that the user is a member of, which should be added to the <literal>Set</literal> as literal string values, for example, <literal>admin</literal>, <literal>user</literal>. In this case, if the user record is not found and a <literal>NoResultException</literal> thrown, the authentication method returns <literal>false</literal> to indicate the authentication failed.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Authentication-Writing_a_login_form"><title>Writing a login form</title>
+	<para>
+		The <literal>Identity</literal> component provides both <literal>username</literal> and <literal>password</literal> properties, catering for the most common authentication scenario. These properties can be bound directly to the username and password fields on a login form. Once these properties are set, calling the <literal>identity.login()</literal> method will authenticate the user using the provided credentials. Here is an example of a simple login form:
+	</para>
+<programlisting>&lt;div&gt;
+    &lt;h:outputLabel for="name" value="Username"/&gt;
+    &lt;h:inputText id="name" value="#{identity.username}"/&gt;
+&lt;/div&gt;
+
+&lt;div&gt;
+    &lt;h:outputLabel for="password" value="Password"/&gt;
+    &lt;h:inputSecret id="password" value="#{identity.password}"/&gt;
+&lt;/div&gt;
+
+&lt;div&gt;
+    &lt;h:commandButton value="Login" action="#{identity.login}"/&gt;
+&lt;/div&gt;
+</programlisting>
+	<para>
+		Similarly, logging out the user is done by calling <literal>#{identity.logout}</literal>. Calling this action will clear the security state of the currently authenticated user.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Authentication-Simplified_Configuration___Summary"><title>Simplified Configuration - Summary</title>
+	<para>
+		So to sum up, there are the three easy steps to configure authentication:
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				Configure an authentication method in <literal>components.xml</literal>.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Write an authentication method.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Write a login form so that the user can authenticate.
+			</para>
+		</listitem>
+	</itemizedlist>
+	</sect2><sect2 id="Seam_Reference_Guide-Authentication-Handling_Security_Exceptions"><title>Handling Security Exceptions</title>
+	<para>
+		To prevent users from receiving the default error page in response to a security error, it is recommended that <literal>pages.xml</literal> is configured to redirect security errors to a more meaningful page. The two main types of exceptions thrown by the security API are:
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				<literal>NotLoggedInException</literal> - This exception is thrown if the user attempts to access a restricted action or page when they are not logged in.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>AuthorizationException</literal> - This exception is only thrown if the user is already logged in, and they have attempted to access a restricted action or page for which they do not have the necessary privileges.
+			</para>
+		</listitem>
+	</itemizedlist>
+	<para>
+		In the case of a <literal>NotLoggedInException</literal>, it is recommended that the user is redirected to either a login or registration page so that they can log in. For an <literal>AuthorizationException</literal>, it may be useful to redirect the user to an error page. Here is an example of a <literal>pages.xml</literal> file that redirects both of these security exceptions:
+	</para>
+<programlisting>&lt;pages&gt;
+
+    ...
+    
+    &lt;exception class="org.jboss.seam.security.NotLoggedInException"&gt;
+        &lt;redirect view-id="/login.xhtml"&gt;
+            &lt;message&gt;You must be logged in to perform this action&lt;/message&gt;
+        &lt;/redirect&gt;
+    &lt;/exception&gt;
+    
+    &lt;exception class="org.jboss.seam.security.AuthorizationException"&gt;
+        &lt;end-conversation/&gt;
+        &lt;redirect view-id="/security_error.xhtml"&gt;
+            &lt;message&gt;
+                              You do not have the necessary security privileges to perform this action.
+            &lt;/message&gt;
+        &lt;/redirect&gt;
+    &lt;/exception&gt;
+  
+&lt;/pages&gt;
+</programlisting>
+	<para>
+		Most web applications require even more sophisticated handling of login redirection, so Seam includes some special functionality for handling this problem.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Authentication-Login_Redirection"><title>Login Redirection</title>
+	<para>
+		You can ask Seam to redirect the user to a login screen when an unauthenticated user tries to access a particular view (or wildcarded view id) as follows:
+	</para>
+<programlisting>&lt;pages login-view-id="/login.xhtml"&gt;
+
+    &lt;page view-id="/members/*" login-required="true"/&gt;
+    
+    ...
+    
+&lt;/pages&gt;
+</programlisting>
+	<para>
+		(This is less of a blunt instrument than the exception handler shown above, but should probably be used in conjunction with it.)
+	</para>
+	<para>
+		After the user logs in, we want to automatically send them back where they came from, so they can retry the action that required logging in. If you add the following event listeners to <literal>components.xml</literal>, attempts to access a restricted view while not logged in will be remembered, so that upon the user successfully logging in they will be redirected to the originally requested view, with any page parameters that existed in the original request.
+	</para>
+<programlisting>&lt;event type="org.jboss.seam.notLoggedIn"&gt;
+    &lt;action expression="#{redirect.captureCurrentView}"/&gt;
+&lt;/event&gt;
+    
+&lt;event type="org.jboss.seam.postAuthenticate"&gt;
+    &lt;action expression="#{redirect.returnToCapturedView}"/&gt;
+&lt;/event&gt;
+</programlisting>
+<note>
+	<para>
+		Login redirection is implemented as a conversation-scoped mechanism, so do not end the conversation in your <literal>authenticate()</literal> method.
+	</para>
+</note>
+	</sect2><sect2 id="Seam_Reference_Guide-Authentication-Advanced_Authentication_Features"><title>Advanced Authentication Features</title>
+	<para>
+		This section explores some of the advanced features provided by the security API for addressing more complex security requirements.
+	</para>
+	<sect3 id="Seam_Reference_Guide-Advanced_Authentication_Features-Using_your_containers_JAAS_configuration"><title>Using your container&#39;s JAAS configuration</title>
+	<para>
+		If you would rather not use the simplified JAAS configuration provided by the Seam Security API, you may instead delegate to the default system JAAS configuration by providing a <literal>jaasConfigName</literal> property in <literal>components.xml</literal>. For example, if you are using JBoss AS and wish to use the <literal>other</literal> policy (which uses the <literal>UsersRolesLoginModule</literal> login module provided by JBoss AS), then the entry in <literal>components.xml</literal> would look like this:
+	</para>
+<programlisting>&lt;security:identity authenticate-method="#{authenticator.authenticate}" 
+                      jaas-config-name="other"/&gt;
+</programlisting>
+	</sect3></sect2></sect1><sect1 id="Seam_Reference_Guide-Security-Error_Messages"><title>Error Messages</title>
+	<para>
+		The security API produces a number of default faces messages for various security-related events. The following table lists the message keys that can be used to override these messages by specifying them in a <literal>message.properties</literal> resource file.
+	</para>
+	<table id="Seam_Reference_Guide-Error_Messages-Security_Message_Keys">
+		<title>Security Message Keys</title>
+		<tgroup cols="2">
+			<colspec colnum="1" colwidth="1*"></colspec>
+			<colspec colnum="2" colwidth="3*"></colspec>
+			<tbody>
+				<row>
+					<entry>
+						<para>
+							<literal>org.jboss.seam.loginSuccessful</literal>
+						</para>
+					</entry>
+					<entry>
+						<para>
+							This message is produced when a user successfully logs in via the security API.
+						</para>
+					</entry>
+				</row>
+				<row>
+					<entry>
+						<para>
+							<literal>org.jboss.seam.loginFailed</literal>
+						</para>
+					</entry>
+					<entry>
+						<para>
+							This message is produced when the login process fails, either because the user provided an incorrect username or password, or because authentication failed in some other way.
+						</para>
+					</entry>
+				</row>
+				<row>
+					<entry>
+						<para>
+							<literal>org.jboss.seam.NotLoggedIn</literal>
+						</para>
+					</entry>
+					<entry>
+						<para>
+							This message is produced when a user attempts to perform an action or access a page that requires a security check, and the user is not currently authenticated.
+						</para>
+					</entry>
+				</row>
+			</tbody>
+		</tgroup>
+	</table>
+	</sect1><sect1 id="Seam_Reference_Guide-Security-Authorization"><title>Authorization</title>
+	<para>
+		There are a number of authorization features provided by the Seam Security API for securing access to components, component methods, and pages. This section describes each of these. An important thing to note is that if you wish to use any of the advanced features (such as rule-based permissions) then your <filename>components.xml</filename> must be configured to support this - see the Configuration section above.
+	</para>
+	<sect2 id="Seam_Reference_Guide-Authorization-Core_concepts"><title>Core concepts</title>
+	<para>
+		Each of the authorization mechanisms provided by the Seam Security API are built upon the concept of a user being granted roles and/or permissions. A role is a <emphasis>group</emphasis>, or <emphasis>type</emphasis>, of user that may have been granted certain privileges for performing one or more specific actions within an application. A permission on the other hand is a privilege (sometimes once-off) for performing a single, specific action. It is entirely possible to build an application using nothing but permissions, however roles offer a higher level of convenience when granting privileges to groups of users.
+	</para>
+	<para>
+		Roles are simple, consisting of only a name such as <literal>admin</literal>, <literal>user</literal>, <literal>customer</literal>, etc. Permissions consist of both a name and an action, and are represented within this documentation in the form <literal>name:action</literal>, for example <literal>customer:delete</literal>, or <literal>customer:insert</literal>.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Authorization-Securing_components"><title>Securing components</title>
+	<para>
+		Let us start by examining the simplest form of authorization, component security, starting with the <literal>@Restrict</literal> annotation.
+	</para>
+	<sect3 id="Seam_Reference_Guide-Securing_components-The_Restrict_annotation"><title>The @Restrict annotation</title>
+	<para>
+		Seam components may be secured either at the method or the class level, using the <literal>@Restrict</literal> annotation. If both a method and it&#39;s declaring class are annotated with <literal>@Restrict</literal>, the method restriction will take precedence (and the class restriction will not apply). If a method invocation fails a security check, then an exception will be thrown as per the contract for <literal>Identity.checkRestriction()</literal> (see Inline Restrictions). A <literal>@Restrict</literal> on just the component class itself is equivalent to adding <literal>@Restrict</literal> to each of its methods.
+	</para>
+	<para>
+		An empty <literal>@Restrict</literal> implies a permission check of <literal>componentName:methodName</literal>. Take for example the following component method:
+	</para>
+<programlisting>@Name("account")
+public class AccountAction {
+    @Restrict public void delete() {
+      ...
+    }
+}
+</programlisting>
+	<para>
+		In this example, the implied permission required to call the <literal>delete()</literal> method is <literal>account:delete</literal>. The equivalent of this would be to write <literal>@Restrict("#{s:hasPermission(&#39;account&#39;,&#39;delete&#39;,null)}")</literal>. Now let&#39;s look at another example:
+	</para>
+<programlisting>@Restrict @Name("account")
+public class AccountAction {
+    public void insert() {
+      ...
+    }
+    @Restrict("#{s:hasRole(&#39;admin&#39;)}") 
+    public void delete() {
+      ...
+    }
+}
+</programlisting>
+	<para>
+		This time, the component class itself is annotated with <literal>@Restrict</literal>. This means that any methods without an overriding <literal>@Restrict</literal> annotation require an implicit permission check. In the case of this example, the <literal>insert()</literal> method requires a permission of <literal>account:insert</literal>, while the <literal>delete()</literal> method requires that the user is a member of the <literal>admin</literal> role.
+	</para>
+	<para>
+		Before we go any further, let us address the <literal>#{s:hasRole()}</literal> expression seen in the above example. Both <literal>s:hasRole</literal> and <literal>s:hasPermission</literal> are EL functions, which delegate to the correspondingly named methods of the <literal>Identity</literal> class. These functions can be used within any EL expression throughout the entirety of the security API.
+	</para>
+	<para>
+		Being an EL expression, the value of the <literal>@Restrict</literal> annotation may reference any objects that exist within a Seam context. This is extremely useful when performing permission checks for a specific object instance. Look at this example:
+	</para>
+<programlisting>@Name("account")
+public class AccountAction {
+    @In Account selectedAccount;
+    @Restrict("#{s:hasPermission(&#39;account&#39;,&#39;modify&#39;,selectedAccount)}")
+    public void modify() {
+        selectedAccount.modify();
+    }
+}
+</programlisting>
+	<para>
+		The interesting thing to note from this example is the reference to <literal>selectedAccount</literal> seen within the <literal>hasPermission()</literal> function call. The value of this variable will be looked up from within the Seam context, and passed to the <literal>hasPermission()</literal> method in <literal>Identity</literal>, which in this case can then determine if the user has the required permission for modifying the specified <literal>Account</literal> object.
+	</para>
+	</sect3><sect3 id="Seam_Reference_Guide-Securing_components-Inline_restrictions"><title>Inline restrictions</title>
+	<para>
+		Sometimes it might be desirable to perform a security check in code, without using the <literal>@Restrict</literal> annotation. In this situation, simply use <literal>Identity.checkRestriction()</literal> to evaluate a security expression, like this:
+	</para>
+<programlisting>public void deleteCustomer() {
+    Identity.instance().checkRestriction("#{s:hasPermission(&#39;customer&#39;,&#39;delete&#39;,
+      selectedCustomer)}");
+}
+</programlisting>
+	<para>
+		If the expression specified doesn&#39;t evaluate to <literal>true</literal>, either
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				if the user is not logged in, a <literal>NotLoggedInException</literal> exception is thrown or
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				if the user is logged in, an <literal>AuthorizationException</literal> exception is thrown.
+			</para>
+		</listitem>
+	</itemizedlist>
+	<para>
+		It is also possible to call the <literal>hasRole()</literal> and <literal>hasPermission()</literal> methods directly from Java code:
+	</para>
+<programlisting>if (!Identity.instance().hasRole("admin"))
+     throw new AuthorizationException("Must be admin to perform this action");
+
+if (!Identity.instance().hasPermission("customer", "create", null))
+     throw new AuthorizationException("You may not create new customers");
+</programlisting>
+	</sect3></sect2><sect2 id="Seam_Reference_Guide-Authorization-Security_in_the_user_interface"><title>Security in the user interface</title>
+	<para>
+		One indication of a well designed user interface is that the user is not presented with options for which they do not have the necessary privileges to use. Seam Security allows conditional rendering of either 1) sections of a page or 2) individual controls, based upon the privileges of the user, using the very same EL expressions that are used for component security.
+	</para>
+	<para>
+		Let us take a look at some examples of interface security. First of all, let us pretend that we have a login form that should only be rendered if the user is not already logged in. Using the <literal>identity.isLoggedIn()</literal> property, we can write this:
+	</para>
+<programlisting>&lt;h:form class="loginForm" rendered="#{not identity.loggedIn}"&gt;</programlisting>
+	<para>
+		If the user is not logged in, then the login form will be rendered - very straight forward so far. Now let us pretend there is a menu on the page that contains some actions which should only be accessible to users in the <literal>manager</literal> role. Here is one way that these could be written:
+	</para>
+<programlisting>&lt;h:outputLink action="#{reports.listManagerReports}" rendered="#{s:hasRole(&#39;manager&#39;)}"&gt;
+    Manager Reports
+&lt;/h:outputLink&gt;
+</programlisting>
+	<para>
+		This is also quite straight forward. If the user is not a member of the <literal>manager</literal> role, then the outputLink will not be rendered. The <literal>rendered</literal> attribute can generally be used on the control itself, or on a surrounding <literal>&lt;s:div&gt;</literal> or <literal>&lt;s:span&gt;</literal> control.
+	</para>
+	<para>
+		Now for something more complex. Let us say you have a <literal>h:dataTable</literal> control on a page listing records for which you may or may not wish to render action links depending on the user&#39;s privileges. The <literal>s:hasPermission</literal> EL function allows us to pass in an object parameter which can be used to determine whether the user has the requested permission for that object or not. Here is how a dataTable with secured links might look:
+	</para>
+<programlisting>&lt;h:dataTable value="#{clients}" var="cl"&gt;
+    &lt;h:column&gt;
+        &lt;f:facet name="header"&gt;Name&lt;/f:facet&gt;
+        #{cl.name}
+    &lt;/h:column&gt;
+    &lt;h:column&gt;
+        &lt;f:facet name="header"&gt;City&lt;/f:facet&gt;
+        #{cl.city}
+    &lt;/h:column&gt;   
+    &lt;h:column&gt;
+        &lt;f:facet name="header"&gt;Action&lt;/f:facet&gt;
+        &lt;s:link value="Modify Client" action="#{clientAction.modify}"
+                rendered="#{s:hasPermission(&#39;client&#39;,&#39;modify&#39;,cl)"/&gt;
+        &lt;s:link value="Delete Client" action="#{clientAction.delete}"
+                rendered="#{s:hasPermission(&#39;client&#39;,&#39;delete&#39;,cl)"/&gt;
+    &lt;/h:column&gt;
+&lt;/h:dataTable&gt;
+</programlisting>
+	</sect2><sect2 id="Seam_Reference_Guide-Authorization-Securing_pages"><title>Securing pages</title>
+	<para>
+		Page security requires that the application is using a <literal>pages.xml</literal> file, however is extremely simple to configure. Simply include a <literal>&lt;restrict/&gt;</literal> element within the <literal>page</literal> elements that you wish to secure. By default, if a value is not provided for the <literal>restrict</literal> element, an implied permission of <literal>{viewId}:render</literal> will be checked for whenever accessing that page. Otherwise the value will be evaluated as a standard security expression. Here is a couple of examples:
+	</para>
+<programlisting>&lt;page view-id="/settings.xhtml"&gt;
+    &lt;restrict/&gt;
+&lt;/page&gt;
+        
+&lt;page view-id="/reports.xhtml"&gt;    
+    &lt;restrict&gt;#{s:hasRole(&#39;admin&#39;)}&lt;/restrict&gt;
+&lt;/page&gt;
+</programlisting>
+	<para>
+		In the above example, the first page has an implied permission restriction of <literal>/settings.xhtml:render</literal>, while the second one checks that the user is a member of the <literal>admin</literal> role.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Authorization-Securing_Entities"><title>Securing Entities</title>
+	<para>
+		Seam security also makes it possible to apply security restrictions to read, insert, update and delete actions for entities.
+	</para>
+	<para>
+		To secure all actions for an entity class, add a <literal>@Restrict</literal> annotation on the class itself:
+	</para>
+<programlisting>@Entity
+ at Name("customer")
+ at Restrict
+public class Customer {
+  ...
+}
+</programlisting>
+	<para>
+		If no expression is specified in the <literal>@Restrict</literal> annotation, the default security check that is performed is a permission check of <literal>entityName:action</literal>, where <literal>entityName</literal> is the Seam component name of the entity (or the fully-qualified class name if no @Name is specified), and the <literal>action</literal> is either <literal>read</literal>, <literal>insert</literal>, <literal>update</literal> or <literal>delete</literal>.
+	</para>
+	<para>
+		It is also possible to only restrict certain actions, by placing a <literal>@Restrict</literal> annotation on the relevent entity lifecycle method (annotated as follows):
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				<literal>@PostLoad</literal> - Called after an entity instance is loaded from the database. Use this method to configure a <literal>read</literal> permission.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>@PrePersist</literal> - Called before a new instance of the entity is inserted. Use this method to configure an <literal>insert</literal> permission.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>@PreUpdate</literal> - Called before an entity is updated. Use this method to configure an <literal>update</literal> permission.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>@PreRemove</literal> - Called before an entity is deleted. Use this method to configure a <literal>delete</literal> permission.
+			</para>
+		</listitem>
+	</itemizedlist>
+	<para>
+		Here is an example of how an entity would be configured to perform a security check for any <literal>insert</literal> operations. Please note that the method is not required to do anything, the only important thing in regard to security is how it is annotated:
+	</para>
+<programlisting>
+  @PrePersist @Restrict
+  public void prePersist() {}      
+   
+</programlisting>
+	<para>
+		And here is an example of an entity permission rule that checks if the authenticated user is allowed to insert a new <literal>MemberBlog</literal> record (from the seamspace example). The entity for which the security check is being made is automatically asserted into the working memory (in this case <literal>MemberBlog</literal>):
+	</para>
+<programlisting>rule InsertMemberBlog
+  no-loop
+  activation-group "permissions"  
+when
+  check: PermissionCheck(name == "memberBlog", action == "insert", granted == false)
+  Principal(principalName : name)
+  MemberBlog(member : member -&gt; (member.getUsername().equals(principalName)))
+then
+  check.grant();
+end;
+</programlisting>
+	<para>
+		This rule will grant the permission <literal>memberBlog:insert</literal> if the currently authenticated user (indicated by the <literal>Principal</literal> fact) has the same name as the member for which the blog entry is being created. The "<literal>name : name</literal>" structure that can be seen in the <literal>Principal</literal> fact (and other places) is a variable binding - it binds the <literal>name</literal> property of the <literal>Principal</literal> to a variable called <literal>name</literal>. Variable bindings allow the value to be referred to in other places, such as the following line which compares the member&#39;s username to the <literal>Principal</literal> name. For more details, please refer to the JBoss Rules documentation.
+	</para>
+	<para>
+		Finally, we need to install a listener class that integrates Seam security with your JPA provider.
+	</para>
+	<sect3 id="Seam_Reference_Guide-Securing_Entities-Entity_security_with_JPA"><title>Entity security with JPA</title>
+	<para>
+		Security checks for EJB3 entity beans are performed with an <literal>EntityListener</literal>. You can install this listener by using the following <literal>META-INF/orm.xml</literal> file:
+	</para>
+<programlisting>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
+                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+                 xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm 
+                                            http://java.sun.com/xml/ns/persistence/orm_1_0.xsd"
+                 version="1.0"&gt;
+                 
+    &lt;persistence-unit-metadata&gt;
+        &lt;persistence-unit-defaults&gt;
+            &lt;entity-listeners&gt;
+                &lt;entity-listener class="org.jboss.seam.security.EntitySecurityListener"/&gt;
+            &lt;/entity-listeners&gt;
+        &lt;/persistence-unit-defaults&gt;
+    &lt;/persistence-unit-metadata&gt;
+    
+&lt;/entity-mappings&gt;
+</programlisting>
+	</sect3><sect3 id="Seam_Reference_Guide-Securing_Entities-Entity_security_with_Hibernate"><title>Entity security with Hibernate</title>
+	<para>
+		If you are using a Hibernate <literal>SessionFactory</literal> configured via Seam, you do not need to do anything special to use entity security.
+	</para>
+	</sect3></sect2></sect1><sect1 id="Seam_Reference_Guide-Security-Writing_Security_Rules"><title>Writing Security Rules</title>
+	<para>
+		Up to this point there has been a lot of mention of permissions, but no information about how permissions are actually defined or granted. This section completes the picture, by explaining how permission checks are processed, and how to implement permission checks for a Seam application.
+	</para>
+	<sect2 id="Seam_Reference_Guide-Writing_Security_Rules-Permissions_Overview"><title>Permissions Overview</title>
+	<para>
+		So how does the security API know whether a user has the <literal>customer:modify</literal> permission for a specific customer? Seam Security provides quite a novel method for determining user permissions, based on JBoss Rules. A couple of the advantages of using a rule engine are 1) a centralized location for the business logic that is behind each user permission, and 2) speed - JBoss Rules uses very efficient algorithms for evaluating large numbers of complex rules involving multiple conditions.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Writing_Security_Rules-Configuring_a_rules_file"><title>Configuring a rules file</title>
+	<para>
+		Seam Security expects to find a <literal>RuleBase</literal> component called <literal>securityRules</literal> which it uses to evaluate permission checks. This is configured in <literal>components.xml</literal> as follows:
+	</para>
+<programlisting>&lt;components xmlns="http://jboss.com/products/seam/components"
+            xmlns:core="http://jboss.com/products/seam/core"
+            xmlns:security="http://jboss.com/products/seam/security"
+            xmlns:drools="http://jboss.com/products/seam/drools"
+            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+            xsi:schemaLocation=
+                "http://jboss.com/products/seam/core 
+                                              http://jboss.com/products/seam/core-1.2.xsd 
+                 http://jboss.com/products/seam/components 
+                                              http://jboss.com/products/seam/components-1.2.xsd
+                 http://jboss.com/products/seam/drools 
+                                              http://jboss.com/products/seam/drools-1.2.xsd"
+                 http://jboss.com/products/seam/security 
+                                              http://jboss.com/products/seam/security-1.2.xsd"&gt;                 
+        
+   &lt;drools:rule-base name="securityRules"&gt;
+       &lt;drools:rule-files&gt;
+           &lt;value&gt;/META-INF/security.drl&lt;/value&gt;
+       &lt;/drools:rule-files&gt;
+   &lt;/drools:rule-base&gt;    
+   
+&lt;/components&gt;
+</programlisting>
+	<para>
+		Once the <literal>RuleBase</literal> component is configured, it is time to write the security rules.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Writing_Security_Rules-Creating_a_security_rules_file"><title>Creating a security rules file</title>
+	<para>
+		For this step you need to create a file called <literal>security.drl</literal> in the <literal>/META-INF</literal> directory of your application&#39;s jar file. In actual fact this file can be called anything you want, and exist in any location as long as it is configured appropriately in <literal>components.xml</literal>.
+	</para>
+	<para>
+		So what should the security rules file contain? At this stage it might be a good idea to at least skim through the JBoss Rules documentation, however to get started here is an extremely simple example:
+	</para>
+<programlisting>package MyApplicationPermissions;
+
+import org.jboss.seam.security.PermissionCheck;
+import org.jboss.seam.security.Role;
+
+rule CanUserDeleteCustomers
+when
+  c: PermissionCheck(name == "customer", action == "delete")
+  Role(name == "admin")
+then
+  c.grant();
+end;
+</programlisting>
+	<para>
+		Let us break this down. The first thing we see is the package declaration. A package in JBoss Rules is essentially a collection of rules. The package name can be anything you want - it does not relate to anything else outside the scope of the rule base.
+	</para>
+	<para>
+		The next thing we can notice is a couple of import statements for the <literal>PermissionCheck</literal> and <literal>Role</literal> classes. These imports inform the rules engine that we will be referencing these classes within our rules.
+	</para>
+	<para>
+		Finally we have the code for the rule. Each rule within a package should be given a unique name (usually describing the purpose of the rule). In this case our rule is called <literal>CanUserDeleteCustomers</literal> and will be used to check whether a user is allowed to delete a customer record.
+	</para>
+	<para>
+		Looking at the body of the rule definition we can notice two distinct sections. Rules have what is known as a left hand side (LHS) and a right hand side (RHS). The LHS consists of the conditional part of the rule, i.e. a list of conditions which must be satisfied for the rule to fire. The LHS is represented by the <literal>when</literal> section. The RHS is the consequence, or action section of the rule that will only be fired if all of the conditions in the LHS are met. The RHS is represented by the <literal>then</literal> section. The end of the rule is denoted by the <literal>end;</literal> line.
+	</para>
+	<para>
+		If we look at the LHS of the rule, we see two conditions listed there. Let us examine the first condition:
+	</para>
+<programlisting>c: PermissionCheck(name == "customer", action == "delete")</programlisting>
+	<para>
+		In plain english, this condition is stating that there must exist a <literal>PermissionCheck</literal> object with a <literal>name</literal> property equal to "customer", and an <literal>action</literal> property equal to "delete" within the working memory. What is the working memory? It is a session-scoped object that contains the contextual information that is required by the rules engine to make a decision about a permission check. Each time the <literal>hasPermission()</literal> method is called, a temporary <literal>PermissionCheck</literal> object, or <emphasis>Fact</emphasis>, is asserted into the working memory. This <literal>PermissionCheck</literal> corresponds exactly to the permission that is being checked, so for example if you call <literal>hasPermission("account", "create", null)</literal> then a <literal>PermissionCheck</literal> object with a <literal>name</literal> equal to "account" and <literal>action</literal> equal to "create" will be asserted into t!
 he working memory for the duration of the permission check.
+	</para>
+	<para>
+		So what else is in the working memory? Besides the short-lived temporary facts asserted during a permission check, there are some longer-lived objects in the working memory that stay there for the entire duration of a user being authenticated. These include any <literal>java.security.Principal</literal> objects that are created as part of the authentication process, plus a <literal>org.jboss.seam.security.Role</literal> object for each of the roles that the user is a member of. It is also possible to assert additional long-lived facts into the working memory by calling <literal>RuleBasedIdentity.instance().getSecurityContext().assertObject()</literal>, passing the object as a parameter.
+	</para>
+	<para>
+		Getting back to our simple example, we can also notice that the first line of our LHS is prefixed with <literal>c:</literal>. This is a variable binding, and is used to refer back to the object that is matched by the condition. Moving onto the second line of our LHS, we see this:
+	</para>
+<programlisting>Role(name == "admin")</programlisting>
+	<para>
+		This condition simply states that there must be a <literal>Role</literal> object with a <literal>name</literal> of "admin" within the working memory. As mentioned, user roles are asserted into the working memory as long-lived facts. So, putting both conditions together, this rule is essentially saying "I will fire if you are checking for the <literal>customer:delete</literal> permission and the user is a member of the <literal>admin</literal> role".
+	</para>
+	<para>
+		So what is the consequence of the rule firing? Let us take a look at the RHS of the rule:
+	</para>
+<programlisting>c.grant()</programlisting>
+	<para>
+		The RHS consists of Java code, and in this case is invoking the <literal>grant()</literal> method of the <literal>c</literal> object, which as already mentioned is a variable binding for the <literal>PermissionCheck</literal> object. Besides the <literal>name</literal> and <literal>action</literal> properties of the <literal>PermissionCheck</literal> object, there is also a <literal>granted</literal> property which is initially set to <literal>false</literal>. Calling <literal>grant()</literal> on a <literal>PermissionCheck</literal> sets the <literal>granted</literal> property to <literal>true</literal>, which means that the permission check was successful, allowing the user to carry out whatever action the permission check was intended for.
+	</para>
+	<sect3 id="Seam_Reference_Guide-Creating_a_security_rules_file-Wildcard_permission_checks"><title>Wildcard permission checks</title>
+	<para>
+		It is possible to implement a wildcard permission check (which allows all actions for a given permission name), by omitting the <literal>action</literal> constraint for the <literal>PermissionCheck</literal> in your rule, like this:
+	</para>
+<programlisting>rule CanDoAnythingToCustomersIfYouAreAnAdmin
+when
+  c: PermissionCheck(name == "customer")
+  Role(name == "admin")
+then
+  c.grant();
+end;        
+        
+</programlisting>
+	<para>
+		This rule allows users with the <literal>admin</literal> role to perform <emphasis>any</emphasis> action for any <literal>customer</literal> permission check.
+	</para>
+	</sect3></sect2></sect1><sect1 id="Seam_Reference_Guide-Security-SSL_Security"><title>SSL Security</title>
+	<para>
+		Seam includes basic support for serving sensitive pages via the HTTPS protocol. This is easily configured by specifying a <literal>scheme</literal> for the page in <literal>pages.xml</literal>. The following example shows how the view <literal>/login.xhtml</literal> is configured to use HTTPS:
+	</para>
+<programlisting>  &lt;page view-id="/login.xhtml" scheme="https"&gt;</programlisting>
+	<para>
+		This configuration is automatically extended to both <literal>s:link</literal> and <literal>s:button</literal> JSF controls, which (when specifying the <literal>view</literal>) will also render the link using the correct protocol. Based on the previous example, the following link will use the HTTPS protocol because <literal>/login.xhtml</literal> is configured to use it:
+	</para>
+<programlisting>  &lt;s:link view="/login.xhtml" value="Login"/&gt; </programlisting>
+	<para>
+		Browsing directly to a view when using the <emphasis>incorrect</emphasis> protocol will cause a redirect to the same view using the <emphasis>correct</emphasis> protocol. For example, browsing to a page that has <literal>scheme="https"</literal> using HTTP will cause a redirect to the same page using HTTPS.
+	</para>
+	<para>
+		It is also possible to configure a default <literal>scheme</literal> for all pages. This is actually quite important, as you might only wish to use HTTPS for a few pages, and if no default scheme is specified then the default behavior is to continue using the current scheme. What this means is that once you enter a page with HTTPS, then HTTPS will continue to be used even if you navigate away to other non-HTTPS pages (a bad thing!). So it is strongly recommended to include a default <literal>scheme</literal>, by configuring it on the default (<literal>"*"</literal>) view:
+	</para>
+<programlisting>  &lt;page view-id="*" scheme="http"&gt; </programlisting>
+	<para>
+		Of course, if <emphasis>none</emphasis> of the pages in your application use HTTPS then it is not required to specify a default scheme.
+	</para>
+	</sect1><sect1 id="Seam_Reference_Guide-Security-Implementing_a_Captcha_Test"><title>Implementing a Captcha Test</title>
+	<para>
+		Though strictly not part of the security API, it might be useful in certain circumstances (such as new user registrations, posting to a public blog or forum) to implement a Captcha (<emphasis>C</emphasis>ompletely <emphasis>A</emphasis>utomated <emphasis>P</emphasis>ublic <emphasis>T</emphasis>uring test to tell <emphasis>C</emphasis>omputers and <emphasis>H</emphasis>umans <emphasis>A</emphasis>part) to prevent automated bots from interacting with your application. Seam provides seamless integration with JCaptcha, an excellent library for generating Captcha challenges. If you wish to use the captcha feature in your application you need to include the jcaptcha-* jar file from the Seam lib directory in your project, and register it in <literal>application.xml</literal> as a java module.
+	</para>
+	<sect2 id="Seam_Reference_Guide-Implementing_a_Captcha_Test-Configuring_the_Captcha_Servlet"><title>Configuring the Captcha Servlet</title>
+	<para>
+		To get up and running, it is necessary to configure the Seam Resource Servlet, which will provide the Captcha challenge images to your pages. This requires the following entry in <literal>web.xml</literal>:
+	</para>
+<programlisting>&lt;servlet&gt;
+    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;
+    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-class&gt;
+&lt;/servlet&gt;
+    
+&lt;servlet-mapping&gt;
+    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;
+    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;
+&lt;/servlet-mapping&gt;
+</programlisting>
+	</sect2><sect2 id="Seam_Reference_Guide-Implementing_a_Captcha_Test-Adding_a_Captcha_to_a_page"><title>Adding a Captcha to a page</title>
+	<para>
+		Adding a captcha challenge to a page is extremely easy. Seam provides a page-scoped component, <literal>captcha</literal>, which provides everything that is required, including built-in captcha validation. Here is an example:
+	</para>
+<programlisting>&lt;div&gt;
+    &lt;h:graphicImage value="/seam/resource/captcha?#{captcha.id}"/&gt;
+&lt;/div&gt;
+  
+&lt;div&gt;
+    &lt;h:outputLabel for="verifyCaptcha"&gt;Enter the above letters&lt;/h:outputLabel&gt;
+    &lt;h:inputText id="verifyCaptcha" value="#{captcha.response}" required="true"/&gt;
+    &lt;div class="validationError"&gt;&lt;h:message for="verifyCaptcha"/&gt;&lt;/div&gt;
+&lt;/div&gt;
+</programlisting>
+	<para>
+		That is all there is to it. The <literal>graphicImage</literal> control displays the Captcha challenge, and the <literal>inputText</literal> receives the user&#39;s response. The response is automatically validated against the Captcha when the form is submitted.
+	</para>
+	</sect2></sect1>
+</chapter>
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Spring.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Spring.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Spring.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,223 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Seam_Reference_Guide-Spring_Framework_integration">
+	<title>Spring Framework integration</title>
+	<para>
+		The Spring integration module allows easy migration of Spring-based projects to Seam and allows Spring applications to take advantage of key Seam features like conversations and Seam&#39;s more sophisticated persistence context management.
+	</para>
+	<para>
+		Seam&#39;s support for Spring provides the ability to:
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				inject Seam component instances into Spring beans
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				inject Spring beans into Seam components
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				turn Spring beans into Seam components
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				allow Spring beans to live in any Seam context
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				start a spring WebApplicationContext with a Seam component
+			</para>
+		</listitem>
+	</itemizedlist>
+	<section id="Seam_Reference_Guide-Spring_Framework_integration-Injecting_Seam_components_into_Spring_beans">
+		<title>Injecting Seam components into Spring beans</title>
+		<para>
+			Injecting Seam component instances into Spring beans is accomplished using the <literal>&lt;seam:instance/&gt;</literal> namespace handler. To enable the Seam namespace handler, the Seam namespace must be added to the Spring beans definition file:
+		</para>
+<programlisting>&lt;beans xmlns="http://www.springframework.org/schema/beans"
+    xmlns:seam="http://jboss.com/products/seam/spring-seam"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://www.springframework.org/schema/beans 
+                        http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
+                        http://jboss.com/products/seam/spring-seam 
+                        http://jboss.com/products/seam/spring-seam-1.2.xsd"&gt;
+</programlisting>
+		<para>
+			Now any Seam component may be injected into any Spring bean:
+		</para>
+<programlisting>&lt;bean id="someSpringBean" class="SomeSpringBeanClass" scope="prototype"&gt;
+    &lt;property name="someProperty"&gt;
+        &lt;seam:instance name="someComponent"/&gt;
+    &lt;/property&gt;
+&lt;/bean&gt;
+</programlisting>
+		<para>
+			An EL expression may be used instead of a component name:
+		</para>
+<programlisting>&lt;bean id="someSpringBean" class="SomeSpringBeanClass" scope="prototype"&gt;
+    &lt;property name="someProperty"&gt;
+        &lt;seam:instance name="#{someExpression}"/&gt;
+    &lt;/property&gt;
+&lt;/bean&gt;
+</programlisting>
+		<para>
+			Seam component instances may even be made available for injection into Spring beans by a Spring bean id.
+		</para>
+<programlisting>&lt;seam:instance name="someComponent" id="someSeamComponentInstance"/&gt;
+
+&lt;bean id="someSpringBean" class="SomeSpringBeanClass" scope="prototype"&gt;
+    &lt;property name="someProperty" ref="someSeamComponentInstance"&gt;
+&lt;/bean&gt;
+</programlisting>
+		<para>
+			Now for the caveat!
+		</para>
+		<para>
+			Seam was designed from the ground up to support a stateful component model with multiple contexts. Spring was not. Unlike Seam bijection, Spring injection does not occur at method invocation time. Instead, injection happens only when the Spring bean is instantiated. So the instance available when the bean is instantiated will be the same instance that the bean uses for the entire life of the bean. For example, if a Seam <literal>CONVERSATION</literal>-scoped component instance is directly injected into a singleton Spring bean, that singleton will hold a reference to the same instance long after the conversation is over! We call this problem <emphasis>scope impedance</emphasis>. Seam bijection ensures that scope impedance is maintained naturally as an invocation flows through the system. In Spring, we need to inject a proxy of the Seam component, and resolve the reference when the proxy is invoked.
+		</para>
+		<para>
+			The <literal>&lt;seam:instance/&gt;</literal> tag lets us automatically proxy the Seam component.
+		</para>
+<programlisting>&lt;seam:instance id="seamManagedEM" name="someManagedEMComponent" proxy="true"/&gt;
+        
+&lt;bean id="someSpringBean" class="SomeSpringBeanClass"&gt;
+    &lt;property name="entityManager" ref="seamManagedEM"&gt;
+&lt;/bean&gt;
+</programlisting>
+		<para>
+			This example shows one way to use a Seam-managed persistence context from a Spring bean. (A more robust way to use Seam-managed persistence contexts as a replacement for the Spring <literal>OpenEntityManagerInView</literal> filter will be provided in a future release)
+		</para>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Spring_Framework_integration-Injecting_Spring_beans_into_Seam_components">
+		<title>Injecting Spring beans into Seam components</title>
+		<para>
+			It is even easier to inject Spring beans into Seam component instances. Actually, there are two possible approaches:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					inject a Spring bean using an EL expression
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					make the Spring bean a Seam component
+				</para>
+			</listitem>
+		</itemizedlist>
+		<para>
+			We will discuss the second option in the next section. The easiest approach is to access the Spring beans via EL.
+		</para>
+		<para>
+			The Spring <literal>DelegatingVariableResolver</literal> is an integration point Spring provides for integrating Spring with JSF. This <literal>VariableResolver</literal> makes all Spring beans available in EL by their bean id. You will need to add the <literal>DelegatingVariableResolver</literal> to <literal>faces-config.xml</literal>:
+		</para>
+<programlisting>&lt;application&gt;
+    &lt;variable-resolver&gt;
+        org.springframework.web.jsf.DelegatingVariableResolver
+    &lt;/variable-resolver&gt;
+&lt;/application&gt;
+</programlisting>
+		<para>
+			Then you can inject Spring beans using <literal>@In</literal>:
+		</para>
+<programlisting>@In("#{bookingService}")
+private BookingService bookingService;
+</programlisting>
+		<para>
+			The use of Spring beans in EL is not limited to injection. Spring beans may be used anywhere that EL expressions are used in Seam: process and pageflow definitions, working memory assertions, etc...
+		</para>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Spring_Framework_integration-Making_a_Spring_bean_into_a_Seam_component">
+		<title>Making a Spring bean into a Seam component</title>
+		<para>
+			The <literal>&lt;seam:component/&gt;</literal> namespace handler can be used to make any Spring bean a Seam component. Just place the <literal>&lt;seam:component/&gt;</literal> tag within the declaration of the bean that you wish to be a Seam component:
+		</para>
+<programlisting>&lt;bean id="someSpringBean" class="SomeSpringBeanClass" scope="prototype"&gt;
+    &lt;seam:component/&gt;
+&lt;/bean&gt;
+</programlisting>
+		<para>
+			By default, <literal>&lt;seam:component/&gt;</literal> will create a <literal>STATELESS</literal> Seam component with class and name provided in the bean definition. Occasionally, such as when a <literal>FactoryBean</literal> is used, the class of the Spring bean may not be the class appearing in the bean definition. In such cases the <literal>class</literal> should be explicitly specified. A Seam component name may be explicitly specified in cases where there is potential for a naming conflict.
+		</para>
+		<para>
+			The <literal>scope</literal> attribute of <literal>&lt;seam:component/&gt;</literal> may be used if you wish the Spring bean to be managed in a particular Seam scope. The Spring bean must be scoped to <literal>prototype</literal> if the Seam scope specified is anything other than <literal>STATELESS</literal>. Pre-existing Spring beans usually have a fundamentally stateless character, so this attribute is not usually needed.
+		</para>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Spring_Framework_integration-Seam_scoped_Spring_beans">
+		<title>Seam-scoped Spring beans</title>
+		<para>
+			The Seam integration package also lets you use Seam&#39;s contexts as Spring 2.0 style custom scopes. This lets you declare any Spring bean in any of Seam&#39;s contexts. However, note once again that Spring&#39;s component model was never architected to support statefulness, so please use this feature with great care. In particular, clustering of session or conversation scoped Spring beans is deeply problematic, and care must be taken when injecting a bean or component from a wider scope into a bean of a narrower scope.
+		</para>
+		<para>
+			By specifying <literal>&lt;seam:configure-scopes/&gt;</literal> once in a Spring bean factory configuration, all of the Seam scopes will be available to Spring beans as custom scopes. To associate a Spring bean with a particular Seam scope, specify the Seam scope in the <literal>scope</literal> attribute of the bean definition.
+		</para>
+<programlisting>&lt;!-- Only needs to be specified once per bean factory--&gt;
+&lt;seam:configure-scopes/&gt;
+
+...
+
+&lt;bean id="someSpringBean" class="SomeSpringBeanClass" scope="seam.CONVERSATION"/&gt;
+</programlisting>
+		<para>
+			The prefix of the scope name may be changed by specifying the <literal>prefix</literal> attribute in the <literal>configure-scopes</literal> definition. (The default prefix is <literal>seam.</literal>)
+		</para>
+		<para>
+			Seam-scoped Spring beans defined this way can be injected into other Spring beans without the use of <literal>&lt;seam:instance/&gt;</literal>. However, care must be taken to ensure scope impedance is maintained. The normal approach used in Spring is to specify <literal>&lt;aop:scoped-proxy/&gt;</literal> in the bean definition. However, Seam-scoped Spring beans are <emphasis>not</emphasis> compatible with <literal>&lt;aop:scoped-proxy/&gt;</literal>. So if you need to inject a Seam-scoped Spring bean into a singleton, <literal>&lt;seam:instance/&gt;</literal> must be used:
+		</para>
+<programlisting>&lt;bean id="someSpringBean" class="SomeSpringBeanClass" scope="seam.CONVERSATION"/&gt;
+
+...
+
+&lt;bean id="someSingleton"&gt;
+    &lt;property name="someSeamScopedSpringBean"&gt;
+        &lt;seam:instance name="someSpringBean" proxy="true"/&gt;
+    &lt;/property&gt;
+&lt;/bean&gt;
+</programlisting>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Spring_Framework_integration-Spring_Application_Context_as_a_Seam_Component">
+		<title>Spring Application Context as a Seam Component</title>
+		<para>
+			Although it is possible to use the Spring <literal>ContextLoaderListener</literal> to start your application&#39;s Spring ApplicationContext there are a couple of limitations.
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					the Spring ApplicationContext must be started <emphasis>after</emphasis> the <literal>SeamListener</literal>
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					it can be tricky starting a Spring ApplicationContext for use in Seam unit and integration tests
+				</para>
+			</listitem>
+		</itemizedlist>
+		<para>
+			To overcome these two limitations the Spring integration includes a Seam component that will start a Spring ApplicationContext. To use this Seam component place the <literal>&lt;spring:context-loader/&gt;</literal> definition in the <literal>components.xml</literal>. Specify your Spring context file location in the <literal>config-locations</literal> attribute. If more than one config file is needed you can place them in the nested <literal>&lt;spring:config-locations/&gt;</literal> element following standard <literal>components.xml</literal> multi value practices.
+		</para>
+<programlisting>&lt;components xmlns="http://jboss.com/products/seam/components" 
+            xmlns:spring="http://jboss.com/products/seam/spring"
+            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+            xsi:schemaLocation="http://jboss.com/products/seam/components http://jboss.com/products/seam/components-1.2.xsd
+                                http://jboss.com/products/seam/spring http://jboss.com/products/seam/spring-1.2.xsd"&gt;
+
+	&lt;spring:context-loader context-locations="/WEB-INF/applicationContext.xml"/&gt;
+
+&lt;/components&gt;
+</programlisting>
+	</section>
+
+</chapter>
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Testing.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Testing.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Testing.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,250 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Seam_Reference_Guide-Testing_Seam_applications">
+	<title>Testing Seam applications</title>
+	<para>
+		Most Seam applications will need at least two kinds of automated tests: <emphasis>unit tests</emphasis>, which test a particular Seam component in isolation, and scripted <emphasis>integration tests</emphasis> which exercise all Java layers of the application (that is, everything except the view pages).
+	</para>
+	<para>
+		Both kinds of tests are very easy to write.
+	</para>
+	<section id="Seam_Reference_Guide-Testing_Seam_applications-Unit_testing_Seam_components">
+		<title>Unit testing Seam components</title>
+		<para>
+			All Seam components are POJOs. This is a great place to start if you want easy unit testing. And since Seam emphasises the use of bijection for inter-component interactions and access to contextual objects, it is very easy to test a Seam component outside of its normal runtime environment.
+		</para>
+		<para>
+			Consider the following Seam component:
+		</para>
+<programlisting>@Stateless
+ at Scope(EVENT)
+ at Name("register")
+public class RegisterAction implements Register
+{
+   private User user;
+   private EntityManager em;
+
+   @In
+   public void setUser(User user) {
+       this.user = user;
+   }
+   
+   @PersistenceContext
+   public void setBookingDatabase(EntityManager em) {
+       this.em = em;
+   }
+   
+   public String register()
+   {
+      List existing = em.createQuery("select username from User where username=:username")
+         .setParameter("username", user.getUsername())
+         .getResultList();
+      if (existing.size()==0)
+      {
+         em.persist(user);
+         return "success";
+      }
+      else
+      {
+         return null;
+      }
+   }
+
+}
+</programlisting>
+		<para>
+			We could write a TestNG test for this component as follows:
+		</para>
+<programlisting>public class RegisterActionTest
+{
+
+    @Test
+    public testRegisterAction()
+    {
+        EntityManager em = getEntityManagerFactory().createEntityManager();
+        em.getTransaction().begin();
+        
+        User gavin = new User();
+        gavin.setName("Gavin King");
+        gavin.setUserName("1ovthafew");
+        gavin.setPassword("secret");
+        
+        RegisterAction action = new RegisterAction();
+        action.setUser(gavin);
+        action.setBookingDatabase(em);
+        
+        assert "success".equals( action.register() );
+        
+        em.getTransaction().commit();
+        em.close();
+    }
+    
+    
+    private EntityManagerFactory emf;
+    
+    public EntityManagerFactory getEntityManagerFactory()
+    {
+        return emf;
+    }
+    
+    @Configuration(beforeTestClass=true)
+    public void init() 
+    {
+        emf = Persistence.createEntityManagerFactory("myResourceLocalEntityManager");
+    }
+    
+    @Configuration(afterTestClass=true)
+    public void destroy()
+    {
+        emf.close();
+    }
+    
+}
+</programlisting>
+		<para>
+			Seam components do not usually depend directly upon container infrastructure, allowing for simplistic unit testing.
+		</para>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Testing_Seam_applications-Integration_testing_Seam_applications">
+		<title>Integration testing Seam applications</title>
+		<para>
+			Integration testing is slightly more difficult. In this case, we cannot eliminate the container infrastructure; indeed, that is part of what is being tested! At the same time, we do not want to be forced to deploy our application to an application server to run the automated tests. We need to be able to reproduce just enough of the container infrastructure inside our testing environment to be able to exercise the whole application, without hurting performance too much.
+		</para>
+		<para>
+			A second problem is emulating user interactions. A third problem is where to put our assertions. Some test frameworks let us test the whole application by reproducing user interactions with the web browser. These frameworks have their place, but they are not appropriate for use at development time.
+		</para>
+		<para>
+			The approach taken by Seam is to let you write tests that script your components while running inside a pruned down container environment (Seam, together with the JBoss Embeddable EJB container). The role of the test script is basically to reproduce the interaction between the view and the Seam components. In other words, you get to pretend you are the JSF implementation!
+		</para>
+		<para>
+			This approach tests everything except the view.
+		</para>
+		<para>
+			Let us consider a JSP view for the component we unit tested above:
+		</para>
+<programlisting>&lt;html&gt;
+ &lt;head&gt;
+  &lt;title&gt;Register New User&lt;/title&gt;
+ &lt;/head&gt;
+ &lt;body&gt;
+  &lt;f:view&gt;
+   &lt;h:form&gt;
+     &lt;table border="0"&gt;
+       &lt;tr&gt;
+         &lt;td&gt;Username&lt;/td&gt;
+         &lt;td&gt;&lt;h:inputText value="#{user.username}"/&gt;&lt;/td&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+         &lt;td&gt;Real Name&lt;/td&gt;
+         &lt;td&gt;&lt;h:inputText value="#{user.name}"/&gt;&lt;/td&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+         &lt;td&gt;Password&lt;/td&gt;
+         &lt;td&gt;&lt;h:inputSecret value="#{user.password}"/&gt;&lt;/td&gt;
+       &lt;/tr&gt;
+     &lt;/table&gt;
+     &lt;h:messages/&gt;
+     &lt;h:commandButton type="submit" value="Register" action="#{register.register}"/&gt;
+   &lt;/h:form&gt;
+  &lt;/f:view&gt;
+ &lt;/body&gt;
+&lt;/html&gt;
+</programlisting>
+		<para>
+			We want to test the registration functionality of our application (the stuff that happens when the user clicks the Register button). We will reproduce the JSF request lifecycle in an automated TestNG test:
+		</para>
+<programlisting>public class RegisterTest extends SeamTest
+{
+   
+   @Test
+   public void testRegister() throws Exception
+   {
+            
+      new FacesRequest() {
+
+         @Override
+         protected void processValidations() throws Exception
+         {
+            validateValue("#{user.username}", "1ovthafew");
+            validateValue("#{user.name}", "Gavin King");
+            validateValue("#{user.password}", "secret");
+            assert !isValidationFailure();
+         }
+         
+         @Override
+         protected void updateModelValues() throws Exception
+         {
+            setValue("#{user.username}", "1ovthafew");
+            setValue("#{user.name}", "Gavin King");
+            setValue("#{user.password}", "secret");
+         }
+
+         @Override
+         protected void invokeApplication()
+         {
+            assert invokeMethod("#{register.register}").equals("success");
+         }
+
+         @Override
+         protected void renderResponse()
+         {
+            assert getValue("#{user.username}").equals("1ovthafew");
+            assert getValue("#{user.name}").equals("Gavin King");
+            assert getValue("#{user.password}").equals("secret");
+         }
+         
+      }.run();
+      
+   }
+
+   ...
+   
+}
+</programlisting>
+		<para>
+			Notice that we have extended <literal>SeamTest</literal>, which provides a Seam environment for our components, and written our test script as an anonymous class that extends <literal>SeamTest.FacesRequest</literal>, which provides an emulated JSF request lifecycle. (There is also a <literal>SeamTest.NonFacesRequest</literal> for testing GET requests.) We have written our code in methods which are named for the various JSF phases, to emulate the calls that JSF would make to our components. Then we have thrown in various assertions.
+		</para>
+		<para>
+			You will find plenty of integration tests for the Seam example applications which demonstrate more complex cases. There are instructions for running these tests using Ant, or using the TestNG plugin for eclipse:
+		</para>
+		<mediaobject>
+			<imageobject role="fo">
+				<imagedata align="center" fileref="images/plugin-testng.png" />
+			</imageobject>
+		<!--	<imageobject role="html">
+				<imagedata align="center" fileref="../shared/images/plugin-testng.png" />
+			</imageobject> -->
+		</mediaobject>
+		<section id="Seam_Reference_Guide-Integration_testing_Seam_applications-Using_mocks_in_integration_tests">
+			<title>Using mocks in integration tests</title>
+			<para>
+				Occasionally, we need to be able to replace the implementation of some Seam component that depends upon resources which are not available in the integration test environment. For example, suppose we have some Seam component which is a facade to some payment processing system:
+			</para>
+<programlisting>@Name("paymentProcessor")
+public class PaymentProcessor {
+    public boolean processPayment(Payment payment) { .... }
+}
+</programlisting>
+			<para>
+				For integration tests, we can mock out this component as follows:
+			</para>
+<programlisting>@Name("paymentProcessor")
+ at Install(precedence=MOCK)
+public class MockPaymentProcessor extends PaymentProcessor {
+    public void processPayment(Payment payment) {
+        return true;
+    }
+}
+</programlisting>
+			<para>
+				Since the <literal>MOCK</literal> precedence is higher than the default precedence of application components, Seam will install the mock implementation whenever it is in the classpath. When deployed into production, the mock implementation is absent, so the real component will be installed.
+			</para>
+		</section>
+
+	</section>
+
+</chapter>
+


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Testing.xml
___________________________________________________________________
Name: svn:executable
   + *

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Text.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Text.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Text.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,189 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Seam_Reference_Guide-Seam_Text">
+	<title>Seam Text</title>
+	<para>
+		Collaboration-oriented websites require a human-friendly markup language for easy entry of formatted text in forum posts, wiki pages, blogs, comments, etc. Seam provides the <literal>&lt;s:formattedText/&gt;</literal> control for display of formatted text that conforms to the <emphasis>Seam Text</emphasis> language. Seam Text is implemented using an ANTLR-based parser. You do not need to know anything about ANTLR to use it, however.
+	</para>
+	<section id="Seam_Reference_Guide-Seam_Text-Basic_fomatting">
+		<title>Basic fomatting</title>
+		<para>
+			Here is a simple example:
+		</para>
+<programlisting>It&#39;s easy to make *bold text*, /italic text/, |monospace|, 
+~deleted text~, super^scripts^ or _underlines_.
+</programlisting>
+		<para>
+			If we display this using <literal>&lt;s:formattedText/&gt;</literal>, we will get the following HTML produced:
+		</para>
+<programlisting>&lt;p&gt;
+It&#39;s easy to make &lt;b&gt;bold text&lt;/b&gt;, &lt;i&gt;italic text&lt;/i&gt;, &lt;tt&gt;monospace&lt;/tt&gt;
+&lt;del&gt;deleted text&lt;/del&gt;, super&lt;sup&gt;scripts&lt;/sup&gt; or &lt;u&gt;underlines&lt;/u&gt;.
+&lt;/p&gt;
+</programlisting>
+		<para>
+			We can use a blank line to indicate a new paragraph, and <literal>+</literal> to indicate a heading:
+		</para>
+<programlisting>+This is a big heading
+You /must/ have some text following a heading!
+ 
+++This is a smaller heading
+This is the first paragraph. We can split it across multiple 
+lines, but we must end it with a blank line.
+
+This is the second paragraph.
+</programlisting>
+		<para>
+			A simple newline is ignored, you need an additional blank line to wrap text into a new paragraph. This is the HTML that results:
+		</para>
+<programlisting>&lt;h1&gt;This is a big heading&lt;/h1&gt;
+&lt;p&gt;
+You &lt;i&gt;must&lt;/i&gt; have some text following a heading!
+&lt;/p&gt;
+ 
+&lt;h2&gt;This is a smaller heading&lt;/h2&gt;
+&lt;p&gt;
+This is the first paragraph. We can split it across multiple 
+lines, but we must end it with a blank line.
+&lt;/p&gt;
+
+&lt;p&gt;
+This is the second paragraph.
+&lt;/p&gt;
+</programlisting>
+		<para>
+			Ordered lists are created using the <literal>#</literal> character. Unordered lists use the <literal>=</literal> character:
+		</para>
+<programlisting>An ordered list:
+        
+#first item
+#second item
+#and even the /third/ item
+
+An unordered list:
+
+=an item
+=another item
+</programlisting>
+<programlisting>&lt;p&gt;
+An ordered list:
+&lt;/p&gt;
+ 
+&lt;ol&gt;       
+&lt;li&gt;first item&lt;/li&gt;
+&lt;li&gt;second item&lt;/li&gt;
+&lt;li&gt;and even the &lt;i&gt;third&lt;/i&gt; item&lt;/li&gt;
+&lt;/ol&gt;
+
+&lt;p&gt;
+An unordered list:
+&lt;/p&gt;
+
+&lt;ul&gt;
+&lt;li&gt;an item&lt;/li&gt;
+&lt;li&gt;another item&lt;/li&gt;
+&lt;/ul&gt;
+</programlisting>
+		<para>
+			Quoted sections should be surrounded in double quotes:
+		</para>
+<programlisting>The other guy said:
+        
+"Nyeah nyeah-nee 
+/nyeah/ nyeah!"
+
+But what do you think he means by "nyeah-nee"?
+</programlisting>
+<programlisting>&lt;p&gt;
+The other guy said:
+&lt;/p&gt;
+        
+&lt;q&gt;Nyeah nyeah-nee
+&lt;i&gt;nyeah&lt;/i&gt; nyeah!&lt;/q&gt;
+
+&lt;p&gt;
+But what do you think he means by &lt;q&gt;nyeah-nee&lt;/q&gt;?
+&lt;/p&gt;
+</programlisting>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_Text-Entering_code_and_text_with_special_characters">
+		<title>Entering code and text with special characters</title>
+		<para>
+			Special characters such as <literal>*</literal>, <literal>|</literal> and <literal>#</literal>, along with HTML characters such as <literal>&lt;</literal>, <literal>&gt;</literal> and <literal>&amp;</literal> may be escaped using <literal>\</literal>:
+		</para>
+<programlisting>You can write down equations like 2\*3\=6 and HTML tags
+like \&lt;body\&gt; using the escape character: \\.
+</programlisting>
+<programlisting>&lt;p&gt;
+You can write down equations like 2*3=6 and HTML tags
+like &lt;body&gt; using the escape character: \.
+&lt;/p&gt;
+</programlisting>
+		<para>
+			And we can quote code blocks using backticks:
+		</para>
+<programlisting>My code doesn&#39;t work:
+
+`for (int i=0; i&lt;100; i--)
+{
+    doSomething();
+}`
+
+Any ideas?
+</programlisting>
+<programlisting>&lt;p&gt;
+My code doesn&#39;t work:
+&lt;/p&gt;
+
+&lt;pre&gt;for (int i=0; i&lt;100; i--)
+{
+    doSomething();
+}&lt;/pre&gt;
+
+&lt;p&gt;
+Any ideas?
+&lt;/p&gt;
+</programlisting>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_Text-Links">
+		<title>Links</title>
+		<para>
+			A link may be created using the following syntax:
+		</para>
+<programlisting>Go to the Seam website at [=&gt;http://jboss.com/products/seam].</programlisting>
+		<para>
+			Or, if you want to specify the text of the link:
+		</para>
+<programlisting>Go to [the Seam website=&gt;http://jboss.com/products/seam].</programlisting>
+		<para>
+			For advanced users, it is even possible to customize the Seam Text parser to understand wikiword links written using this syntax.
+		</para>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_Text-Entering_HTML">
+		<title>Entering HTML</title>
+		<para>
+			Text may even include a certain limited subset of HTML (the subset is chosen to be safe from cross-site scripting attacks). This is useful for creating links:
+		</para>
+<programlisting>You might want to link to &lt;a href="http://jboss.com/products/seam"&gt;something
+cool&lt;/a&gt;, or even include an image: &lt;img src="/logo.jpg"/&gt;
+</programlisting>
+		<para>
+			And for creating tables:
+		</para>
+<programlisting>&lt;table&gt;
+    &lt;tr&gt;&lt;td&gt;First name:&lt;/td&gt;&lt;td&gt;Gavin&lt;/td&gt;&lt;/tr&gt;
+    &lt;tr&gt;&lt;td&gt;Last name:&lt;/td&gt;&lt;td&gt;King&lt;/td&gt;&lt;/tr&gt;
+&lt;/table&gt;
+</programlisting>
+		<para>
+			There is much more that can be achieved if you wish.
+		</para>
+	</section>
+
+</chapter>
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Tools.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Tools.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Tools.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,590 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Seam_Reference_Guide-Seam_tools">
+	<title>Seam tools</title>
+	<section id="Seam_Reference_Guide-Seam_tools-jBPM_designer_and_viewer">
+		<title>jBPM designer and viewer</title>
+		<para>
+			The jBPM designer and viewer will let you design and view in a nice way your business processes and your pageflows. This convenient tool is part of the JBoss Developer Studio and more details can be found in the jBPM&#39;s documentation (http://docs.jboss.com/jbpm/v3/gpd/)
+		</para>
+		<section id="Seam_Reference_Guide-jBPM_designer_and_viewer-Business_process_designer">
+			<title>Business process designer</title>
+			<para>
+				This tool lets you design your own business process in a graphical way.
+			</para>
+			<screenshot><screeninfo>Business process designer</screeninfo> 
+				<mediaobject>
+				<imageobject role="fo"> 
+					<imagedata align="center" fileref="images/bpmd.png" />
+				</imageobject>
+			<!--	<imageobject role="html">
+					<imagedata align="center" fileref="../shared/images/bpmd.png" />
+				</imageobject> -->
+			</mediaobject>
+			</screenshot> 
+		</section>
+		
+		<section id="Seam_Reference_Guide-jBPM_designer_and_viewer-Pageflow_viewer">
+			<title>Pageflow viewer</title>
+			<para>
+				This tool will let you design to some extend your pageflows and let you build graphical views of them so you can easily share and compare ideas on how it should be designed.
+			</para>
+			<screenshot><screeninfo>Business process designer</screeninfo><mediaobject>
+				<imageobject role="fo">
+					<imagedata align="center" fileref="images/bpmpfv.png" />
+				</imageobject>
+			<!--	<imageobject role="html">
+					<imagedata align="center" fileref="../shared/images/bpmpfv.png" />
+				</imageobject> -->
+			</mediaobject>
+			</screenshot>
+		</section>
+
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_tools-CRUD_application_generator">
+		<title>CRUD-application generator</title>
+		<para>
+			This chapter, will give you a short overview of the support for Seam that is available in the Hibernate Tools. Hibernate Tools is a set of tools for working with Hibernate and related technologies, such as JBoss Seam and EJB3. The tools are available as a set of eclipse plugins and Ant tasks. You can download the Hibernate Tools from the JBoss Tools or Hibernate Tools websites.
+		</para>
+		<para>
+			The specific support for Seam that is currently available is generation of a fully functional Seam based CRUD-application. The CRUD-application can be generated based on your existing Hibernate mapping files or EJB3 annotated POJO&#39;s or even fully reverse engineered from your existing database schema.
+		</para>
+		<para>
+			The following sections is focused on the features required to understand for usage with Seam. The content is derived from the the Hibernate Tools reference documentation. Thus if you need more detailed information please refer to the Hibernate Tools documentation.
+		</para>
+		<section id="Seam_Reference_Guide-CRUD_application_generator-Creating_a_Hibernate_configuration_file">
+			<title>Creating a Hibernate configuration file</title>
+			<para>
+				To be able to reverse engineer and generate code a hibernate.properties or <filename>hibernate.cfg.xml</filename> file is needed. The Hibernate Tools provide a wizard for generating the <filename>hibernate.cfg.xml</filename> file if you do not already have such file.
+			</para>
+			<para>
+				Start the wizard by clicking <literal>New Wizard</literal> (Ctrl+N), select the Hibernate/Hibernate Configuration file (cfg.xml) wizard and press <literal>Next</literal>. After selecting the wanted location for the <filename>hibernate.cfg.xml</filename> file, you will see the following page:
+			</para>
+			<mediaobject>
+				<imageobject role="fo">
+					<imagedata contentwidth="5cm" fileref="images/hibernatecfgwizard.png"  />
+				</imageobject>
+			<!--	<imageobject role="html">
+					<imagedata align="center" fileref="../shared/images/hibernatecfgwizard.png"  />
+				</imageobject> -->
+			</mediaobject>
+			<para>
+				Tip: The contents in the combo boxes for the JDBC driver class and JDBC URL change automatically, depending on the Dialect and actual driver you have chosen.
+			</para>
+			<para>
+				Enter your configuration information in this dialog. Details about the configuration options can be found in Hibernate reference documentation.
+			</para>
+			<para>
+				Press <literal>Finish</literal> to create the configuration file, after optionally creating a Console onfiguration, the <filename>hibernate.cfg.xml</filename> will be automatically opened in an editor. The last option <literal>Create Console Configuration</literal> is enabled by default and when enabled i will automatically use the <filename>hibernate.cfg.xml</filename> for the basis of a <literal>Console Configuration</literal>.
+			</para>
+		</section>
+		
+		<section id="Seam_Reference_Guide-CRUD_application_generator-Creating_a_Hibernate_Console_configuration">
+			<title>Creating a Hibernate Console configuration</title>
+			<para>
+				A Console Configuration describes to the Hibernate plugin which configuration files should be used to configure hibernate, including which classpath is needed to load the POJO&#39;s, JDBC drivers etc. It is required to make usage of query prototyping, reverse engineering and code generation. You can have multiple named console configurations. Normally you would just need one per project, but more (or less) is definitly possible.
+			</para>
+			<para>
+				You create a console configuration by running the Console Configuration wizard, shown in the following screenshot. The same wizard will also be used if you are coming from the <filename>hibernate.cfg.xml</filename> wizard and had enabled <literal>Create Console Configuration</literal>.
+			</para>
+			<mediaobject id="Seam_Reference_Guide-Creating_a_Hibernate_Console_configuration-Creating_a_Hibernate_Console_configuration">
+
+				<imageobject role="fo">
+					<imagedata fileref="images/consolecfgwizard.png"  />
+				</imageobject>
+			<!--	<imageobject role="html">
+					<imagedata align="center" fileref="../shared/images/consolecfgwizard.png"  />
+				</imageobject> -->
+				<caption>Creating a Hibernate Console configuration</caption>
+			</mediaobject>
+			<para>
+				The following table describes the relevant settings. The wizard can automatically detect default values for most of these if you started the Wizard with the relevant java project selected
+			</para>
+			<table id="Seam_Reference_Guide-Creating_a_Hibernate_Console_configuration-Hibernate_Console_Configuration_Parameters">
+				<title>Hibernate Console Configuration Parameters</title>
+				<tgroup cols="3">
+					<colspec colnum="1" colwidth="1*"></colspec>
+					<colspec colnum="2" colwidth="3*"></colspec>
+					<colspec colnum="3" colwidth="1*"></colspec>
+					<thead>
+						<row>
+							<entry align="center">
+								<para>
+									Parameter
+								</para>
+							</entry>
+							<entry align="center">
+								<para>
+									Description
+								</para>
+							</entry>
+							<entry align="center">
+								<para>
+									Auto detected value
+								</para>
+							</entry>
+						</row>
+					</thead>
+					<tbody>
+						<row>
+							<entry>
+								<para>
+									Name
+								</para>
+							</entry>
+							<entry>
+								<para>
+									The unique name of the configuration
+								</para>
+							</entry>
+							<entry>
+								<para>
+									Name of the selected project
+								</para>
+							</entry>
+						</row>
+						<row>
+							<entry>
+								<para>
+									Property file
+								</para>
+							</entry>
+							<entry>
+								<para>
+									Path to a hibernate.properties file
+								</para>
+							</entry>
+							<entry>
+								<para>
+									First hibernate.properties file found in the selected project
+								</para>
+							</entry>
+						</row>
+						<row>
+							<entry>
+								<para>
+									Configuration file
+								</para>
+							</entry>
+							<entry>
+								<para>
+									Path to a hibernate.cfg.xml file
+								</para>
+							</entry>
+							<entry>
+								<para>
+									First hibernate.cfg.xml file found in the selected project
+								</para>
+							</entry>
+						</row>
+						<row>
+							<entry>
+								<para>
+									Enable Hibernate ejb3/annotations
+								</para>
+							</entry>
+							<entry>
+								<para>
+									Selecting this option enables usage of annotated classes. <filename>hbm.xml</filename> files are of course still possible to use too. This feature requires running the Eclipse IDE with a JDK 5 runtime, otherwise you will get classloading and/or version errors.
+								</para>
+							</entry>
+							<entry>
+								<para>
+									Not enabled
+								</para>
+							</entry>
+						</row>
+						<row>
+							<entry>
+								<para>
+									Mapping files
+								</para>
+							</entry>
+							<entry>
+								<para>
+									List of additional mapping files that should be loaded. Since a <filename>hibernate.cfg.xml</filename> can also contain mappings, if these a duplicated here, you will get <errorname>Duplicate mapping</errorname> errors when using the console configuration.
+								</para>
+							</entry>
+							<entry>
+								<para>
+									If no <filename>hibernate.cfg.xml</filename> file is found, all hbm.xml files found in the selected project
+								</para>
+							</entry>
+						</row>
+						<row>
+							<entry>
+								<para>
+									Classpath
+								</para>
+							</entry>
+							<entry>
+								<para>
+									The classpath for loading POJO and JDBC drivers. Do not add Hibernate core libraries or dependencies, they are already included. If you get ClassNotFound errors then check this list for possible missing or redundant directories/jars.
+								</para>
+							</entry>
+							<entry>
+								<para>
+									The default build output directory and any JARs with a class implementing java.sql.Driver in the selected project
+								</para>
+							</entry>
+						</row>
+					</tbody>
+				</tgroup>
+			</table>
+			<para>
+				Clicking <literal>Finish</literal> creates the configuration and shows it in the <literal>Hibernate Configurations</literal> view
+			</para>
+			<mediaobject id="Seam_Reference_Guide-Creating_a_Hibernate_Console_configuration-Console_overview">
+
+				<imageobject role="fo">
+					<imagedata align="center" fileref="images/consoleoutline-before-reveng.png"  />
+				</imageobject>
+			<!--	<imageobject role="html">
+					<imagedata align="center" fileref="../shared/images/consoleoutline-before-reveng.png"  />
+				</imageobject> -->
+				<caption>Console overview</caption>
+			</mediaobject>
+		</section>
+		
+		<section id="Seam_Reference_Guide-CRUD_application_generator-Reverse_engineering_and_code_generation">
+			<title>Reverse engineering and code generation</title>
+			<para>
+				A very simple <emphasis>click-and-generate</emphasis> reverse engineering and code generation facility is available. It is this facility that allows you to generate the skeleton for a full Seam CRUD application.
+			</para>
+			<para>
+				To start working with this process, start the <literal>Hibernate Code Generation</literal> which is available in the toolbar via the Hibernate icon or via the <literal>Run/Hibernate Code Generation</literal> menu item.
+			</para>
+			<section id="Seam_Reference_Guide-Reverse_engineering_and_code_generation-Code_Generation_Launcher">
+				<title>Code Generation Launcher</title>
+				<para>
+					When you click on <literal>Hibernate Code Generation</literal> the standard Eclipse launcher dialog will appear. In this dialog you can create, edit and delete named Hibernate code generation <emphasis>launchers</emphasis>.
+				</para>
+				<mediaobject>
+					<imageobject role="fo">
+						<imagedata fileref="images/codegendropdown.png"  />
+					</imageobject>
+				<!--	<imageobject role="html">
+						<imagedata align="center" fileref="../shared/images/codegendropdown.png"  />
+					</imageobject> -->
+				</mediaobject>
+				<para>
+					The dialog has the standard tabs <literal>Refresh</literal> and <literal>Common</literal> that can be used to configure which directories should be automatically refreshed and various general settings launchers, such as saving them in a project for sharing the launcher within a team.
+				</para>
+				<mediaobject>
+					<imageobject role="fo">
+						<imagedata fileref="images/codegenmaintab.png"  />
+					</imageobject>
+				<!--	<imageobject role="html">
+						<imagedata align="center" fileref="../shared/images/codegenmaintab.png"  />
+					</imageobject> -->
+				</mediaobject>
+				<para>
+					The first time you create a code generation launcher you should give it a meaningfull name, otherwise the default prefix <literal>New_Generation</literal> will be used.
+				</para>
+				<note>
+				<para>
+					he <literal>At least one exporter option must be selected</literal> is just a warning stating that for this launch to work you need to select an exporter on the Exporter tab. When an exporter has been selected the warning will disappear.
+				</para>
+				</note>
+				<para>
+					On the <literal>Main</literal> tab you the following fields:
+				</para>
+				<table id="Seam_Reference_Guide-Code_Generation_Launcher-Code_generation_Main_tab_fields">
+					<title>Code generation "Main" tab fields</title>
+					<tgroup cols="2">
+						<colspec colnum="1" colwidth="1*"></colspec>
+						<colspec colnum="2" colwidth="3*"></colspec>
+						<colspec colnum="3" colwidth="0.5*"></colspec>
+						<thead>
+							<row>
+								<entry align="center">
+									<para>
+										Field
+									</para>
+								</entry>
+								<entry align="center">
+									<para>
+										Description
+									</para>
+								</entry>
+							</row>
+						</thead>
+						<tbody>
+							<row>
+								<entry>
+									<para>
+										Console Configuration
+									</para>
+								</entry>
+								<entry>
+									<para>
+										The name of the console configuration which should be used when code generating.
+									</para>
+								</entry>
+							</row>
+							<row>
+								<entry>
+									<para>
+										Output directory
+									</para>
+								</entry>
+								<entry>
+									<para>
+										Path to a directory into where all output will be written by default. Be aware that existing files will be overwritten, so be sure to specify the correct directory.
+									</para>
+								</entry>
+							</row>
+							<row>
+								<entry>
+									<para>
+										Reverse engineer from JDBC Connection
+									</para>
+								</entry>
+								<entry>
+									<para>
+										If enabled the tools will reverse engineer the database available via the connection information in the selected Hibernate Console Configuration and generate code based on the database schema. If not enabled the code generation will just be based on the mappings already specified in the Hibernate Console configuration.
+									</para>
+								</entry>
+							</row>
+							<row>
+								<entry>
+									<para>
+										Package
+									</para>
+								</entry>
+								<entry>
+									<para>
+										The package name here is used as the default package name for any entities found when reverse engineering.
+									</para>
+								</entry>
+							</row>
+							<row>
+								<entry>
+									<para>
+										reveng.xml
+									</para>
+								</entry>
+								<entry>
+									<para>
+										Path to a reveng.xml file. A reveng.xml file allows you to control certain aspects of the reverse engineering. For example, how jdbc types are mapped to hibernate types and especially important which tables are included/excluded from the process. Clicking "setup" allows you to select an existing reveng.xml file or create a new one..
+									</para>
+								</entry>
+							</row>
+							<row>
+								<entry>
+									<para>
+										reveng. strategy
+									</para>
+								</entry>
+								<entry>
+									<para>
+										If <filename>reveng.xml</filename> does not provide enough customization you can provide your own implementation of an ReverseEngineeringStrategy. The class need to be in the claspath of the Console Configuration, otherwise you will get class not found exceptions.
+									</para>
+								</entry>
+							</row>
+							<row>
+								<entry>
+									<para>
+										Generate basic typed composite ids
+									</para>
+								</entry>
+								<entry>
+									<para>
+										This field should always be enabled when generating the Seam CRUD application. For a table that has a multi-colum primary key, a &lt;composite-id&gt; mapping will always be created. If this option is enabled and there are matching foreign-keys, each key column is still considered a basic scalar (string, long, etc.) instead of a reference to an entity. If you disable this option, a &lt;key-many-to-one&gt; mapping with be generated instead. Note: a &lt;many-to-one&gt; property is still created, but is simply marked as non-updatable and non-insertable.
+									</para>
+								</entry>
+							</row>
+							<row>
+								<entry>
+									<para>
+										Use custom templates
+									</para>
+								</entry>
+								<entry>
+									<para>
+										If enabled, the Template directory will be searched first when looking up the velocity templates, allowing you to redefine how the individual templates process the hibernate mapping model.
+									</para>
+								</entry>
+							</row>
+							<row>
+								<entry>
+									<para>
+										Template directory
+									</para>
+								</entry>
+								<entry>
+									<para>
+										A path to a directory with custom velocity templates.
+									</para>
+								</entry>
+							</row>
+						</tbody>
+					</tgroup>
+				</table>
+			</section>
+			
+			<section id="Seam_Reference_Guide-Reverse_engineering_and_code_generation-Exporters">
+				<title>Exporters</title>
+				<para>
+					The exporters tab is used to specify which type of code that should be generated. Each selection represents an <literal>Exporter</literal> that is responsible for generating the code, hence the name.
+				</para>
+				<mediaobject>
+					<imageobject role="fo">
+						<imagedata fileref="images/codegenselectseam.png"  />
+					</imageobject>
+				<!--	<imageobject role="html">
+						<imagedata align="center" fileref="../shared/images/codegenselectseam.png"  />
+					</imageobject> -->
+				</mediaobject>
+				<para>
+					The following table describes in short the various exporters. The most relevant for Seam is the <literal>JBoss Seam Skeleton</literal> application.
+				</para>
+				<table id="Seam_Reference_Guide-Exporters-Code_generation_Exporter_tab_fields">
+					<title>Code generation <literal>Exporter</literal> tab fields</title>
+					<tgroup cols="2">
+						<colspec colnum="1" colwidth="1*"></colspec>
+						<colspec colnum="2" colwidth="3*"></colspec>
+						<colspec colnum="3" colwidth="0.5*"></colspec>
+						<thead>
+							<row>
+								<entry align="center">
+									<para>
+										Field
+									</para>
+								</entry>
+								<entry align="center">
+									<para>
+										Description
+									</para>
+								</entry>
+							</row>
+						</thead>
+						<tbody>
+							<row>
+								<entry>
+									<para>
+										Generate domain code
+									</para>
+								</entry>
+								<entry>
+									<para>
+										Generates POJO&#39;s for all the persistent classes and components found in the given Hibernate configuration.
+									</para>
+								</entry>
+							</row>
+							<row>
+								<entry>
+									<para>
+										JDK 1.5 constructs
+									</para>
+								</entry>
+								<entry>
+									<para>
+										When enabled the POJO&#39;s will use JDK 1.5 constructs.
+									</para>
+								</entry>
+							</row>
+							<row>
+								<entry>
+									<para>
+										EJB3/JSR-220 annotations
+									</para>
+								</entry>
+								<entry>
+									<para>
+										When enabled the POJO&#39;s will be annotated according to the EJB3/JSR-220 persistency specification.
+									</para>
+								</entry>
+							</row>
+							<row>
+								<entry>
+									<para>
+										Generate DAO code
+									</para>
+								</entry>
+								<entry>
+									<para>
+										Generates a set of DAO&#39;s for each entity found.
+									</para>
+								</entry>
+							</row>
+							<row>
+								<entry>
+									<para>
+										Generate Mappings
+									</para>
+								</entry>
+								<entry>
+									<para>
+										Generate mapping (hbm.xml) files for each entity
+									</para>
+								</entry>
+							</row>
+							<row>
+								<entry>
+									<para>
+										Generate hibernate configuration file
+									</para>
+								</entry>
+								<entry>
+									<para>
+										Generate a <filename>hibernate.cfg.xml</filename> file. Used to keep the hibernate.cfg.xml uptodate with any new found mapping files.
+									</para>
+								</entry>
+							</row>
+							<row>
+								<entry>
+									<para>
+										Generate schema html-documentation
+									</para>
+								</entry>
+								<entry>
+									<para>
+										Generates set of html pages that documents the database schema and some of the mappings.
+									</para>
+								</entry>
+							</row>
+							<row>
+								<entry>
+									<para>
+										Generate JBoss Seam skeleton app (beta)
+									</para>
+								</entry>
+								<entry>
+									<para>
+										Generates a complete JBoss Seam skeleton app. The generation will include annotated POJO&#39;s, Seam controller beans and a JSP for the presentation layer. See the generated readme.txt for how to use it.
+									</para>
+									<note>
+									<para>
+										This exporter generates a full application, including a <filename>build.xml</filename> thus you will get the best results if you use an output directory which is the root of your project.
+									</para>
+								</note>
+								</entry>
+							</row>
+						</tbody>
+					</tgroup>
+				</table>
+			</section>
+			
+			<section id="Seam_Reference_Guide-Reverse_engineering_and_code_generation-Generating_and_using_the_code">
+				<title>Generating and using the code</title>
+				<para>
+					When you have finished filling out the settings, simply press <literal>Run</literal> to start the generation of code. This might take a little while if you are reverse engineering from a database.
+				</para>
+				<para>
+					When the generation have finished you should now have a complete skeleton Seam application in the output directory. In the output directory there is a <filename>readme.txt</filename> file describing the steps needed to deploy and run the example.
+				</para>
+				<para>
+					If you want to regenerate/update the skeleton code then simply run the code generation again by selecting the <literal>Hibernate Code Generation</literal> in the toolbar or <literal>Run</literal> menu. Enjoy.
+				</para>
+			</section>
+
+		</section>
+
+	</section>
+
+</chapter>
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Tutorial.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Tutorial.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Tutorial.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2540 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Seam_Reference_Guide-Seam_Tutorial">
+	<title>Seam Tutorial</title>
+	<section id="Seam_Reference_Guide-Seam_Tutorial-Try_the_examples">
+		<title>Try the examples</title>
+		<para>
+			In this tutorial, we will assume that you are using the JBoss Enterprise Application Platform with Seam.
+		</para>
+		<para>
+			The directory structure of each example in Seam follows this pattern:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					Web pages, images and stylesheets may be found in <filename>examples/<replaceable>registration</replaceable>/view</filename>
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					Resources such as deployment descriptors and data import scripts may be found in <filename>examples/<replaceable>registration</replaceable>/resources</filename>
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					Java source code may be found in <filename>examples/<replaceable>registration</replaceable>/src</filename>
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					The Ant build script is <filename>examples/<replaceable>registration</replaceable>/build.xml</filename>
+				</para>
+			</listitem>
+		</itemizedlist>
+		<section id="Seam_Reference_Guide-Try_the_examples-Running_the_examples_on_JBoss_AS">
+			<title>Running the examples on JBoss Enterprise Application Platform</title>
+			<para>
+				First, make sure you have Ant correctly installed, with <literal>&#36;ANT_HOME</literal> and <literal>&#36;JAVA_HOME</literal> set correctly. Next, make sure you set the location of your JBoss AS installation in the <literal>build.properties</literal> file in the root folder of your Seam installation. If you haven't already done so, start JBoss AS now by typing <literal>bin/run.sh</literal> or <literal>bin/run.bat</literal> in the root directory of your JBoss installation. 
+			</para>
+			<para>
+				By default the examples will deploy to the default configuration of the server. These examples should be deployed to the production configuration if they are to be used with JBoss Enterprise Application Platform, and the example <literal>build.xml</literal> file should be modified to reflect this before building and deploying. Two lines should be changed in this file:
+			</para>
+			<screen> &lt;property name="deploy.dir"           value="${jboss.home}/server/production/deploy"/&gt;</screen>
+			<screen>   &lt;property name="webroot.dir"         
+	value="${deploy.dir}/jboss-web.deployer/ROOT.war"/&gt;</screen>
+			<para>
+				Now, build and deploy the example by typing <literal>ant deploy</literal> in the <filename>examples/<replaceable>registration</replaceable></filename> directory.
+			</para>
+			<para>
+				Try it out by accessing <ulink url="http://localhost:8080/seam-registration/"><literal>http://localhost:8080/seam-registration/</literal></ulink> with your web browser.
+			</para>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Try_the_examples-Running_the_examples_on_Tomcat">
+			<title>Running the examples on Tomcat</title>
+			<para>
+				First, make sure you have Ant correctly installed, with <literal>&#36;ANT_HOME</literal> and <literal>&#36;JAVA_HOME</literal> set correctly. Next, make sure you set the location of your Tomcat installation in the <literal>build.properties</literal> file in the root folder of your Seam installation.
+			</para>
+			<para>
+				Now, build and deploy the example by typing <literal>ant deploy.tomcat</literal> in the <filename>examples/<replaceable>registration</replaceable></filename> directory.
+			</para>
+			<para>
+				Finally, start Tomcat.
+			</para>
+			<para>
+				Try it out by accessing <ulink url="http://localhost:8080/jboss-seam-registration/"><literal>http://localhost:8080/jboss-seam-registration/</literal></ulink> with your web browser.
+			</para>
+			<para>
+				When you deploy the example to Tomcat, any EJB3 components will run inside the JBoss Embeddable EJB3 container, a complete standalone EJB3 container environment.
+			</para>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Try_the_examples-Running_the_example_tests">
+			<title>Running the example tests</title>
+			<para>
+				Most of the examples come with a suite of TestNG integration tests. The easiest way to run the tests is to run <literal>ant testexample</literal> inside the <filename>examples/<replaceable>registration</replaceable></filename> directory. It is also possible to run the tests inside your IDE using the TestNG plugin.
+			</para>
+		</section>
+
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_Tutorial-Your_first_Seam_application_the_registration_example">
+		<title>Your first Seam application: the registration example</title>
+		<para>
+			The registration example is a fairly trivial application that lets a new user store his username, real name and password in the database. The example is not intended to show off all of the cool functionality of Seam. However, it demonstrates the use of an EJB3 session bean as a JSF action listener, and basic configuration of Seam.
+		</para>
+		<para>
+			We will go slowly, since we realize you might not yet be familiar with EJB 3.0.
+		</para>
+		<para>
+			The start page displays a very basic form with three input fields. Try filling them in and then submitting the form. This will save a user object in the database.
+		</para>
+		<mediaobject>
+			<imageobject role="fo">
+				<imagedata align="center" fileref="images/registration.png" />
+			</imageobject>
+		<!--	<imageobject role="html">
+				<imagedata align="center" fileref="../shared/images/registration.png" />
+			</imageobject> -->
+		</mediaobject>
+		<section id="Seam_Reference_Guide-Your_first_Seam_application_the_registration_example-Understanding_the_code">
+			<title>Understanding the code</title>
+			<para>
+				The example is implemented with two JSP pages, one entity bean and one stateless session bean.
+			</para>
+			<mediaobject>
+				<imageobject role="fo">
+					<imagedata align="center" fileref="images/register.png" />
+				</imageobject>
+			<!--	<imageobject role="html">
+					<imagedata align="center" fileref="../shared/images/register.png" />
+				</imageobject> -->
+			</mediaobject>
+			<para>
+				Let us take a look at the code, starting from the bottom.
+			</para>
+			<section id="Seam_Reference_Guide-Understanding_the_code-The_entity_bean_User.java">
+				<title>The entity bean: <literal>User.java</literal></title>
+				<para>
+					We need an EJB entity bean for user data. This class defines <emphasis>persistence</emphasis> and <emphasis>validation</emphasis> declaratively, via annotations. It also needs some extra annotations that define the class as a Seam component.
+				</para>
+			<!--	<example><title></title> -->
+			<!--		<programlistingco>
+					<areaspec>
+						<area coords="1" id="registration-entity-annotation" />
+						<area coords="2" id="registration-name-annotation" />
+						<area coords="3" id="registration-scope-annotation" />
+						<area coords="4" id="registration-table-annotation" />
+						<area coords="9" id="registration-attributes" />
+						<area coords="20" id="registration-empty-constructor" />
+						<area coords="22" id="registration-notnull" />
+						<area coords="44" id="registration-id-annotation" />
+					</areaspec> -->
+<programlisting>@Entity
+ at Name("user")
+ at Scope(SESSION)
+ at Table(name="users")
+public class User implements Serializable
+{
+   private static final long serialVersionUID = 1881413500711441951L;
+   
+   private String username;
+   private String password;
+   private String name;
+   
+   public User(String name, String password, String username)
+   {
+      this.name = name;
+      this.password = password;
+      this.username = username;
+   }
+   
+   public User() {}
+   
+   @NotNull @Length(min=5, max=15)
+   public String getPassword()
+   {
+      return password;
+   }
+
+   public void setPassword(String password)
+   {
+      this.password = password;
+   }
+   
+   @NotNull
+   public String getName()
+   {
+      return name;
+   }
+
+   public void setName(String name)
+   {
+      this.name = name;
+   }
+   
+   @Id @NotNull @Length(min=5, max=15)
+   public String getUsername()
+   {
+      return username;
+   }
+
+   public void setUsername(String username)
+   {
+      this.username = username;
+   }
+
+}
+</programlisting>
+					<orderedlist>
+						<listitem>
+							<para>
+								The EJB3 standard <literal>@Entity</literal> annotation indicates that the <literal>User</literal> class is an entity bean.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								A Seam component needs a <emphasis>component name</emphasis> specified by the <literal>@Name</literal> annotation. This name must be unique within the Seam application. When JSF asks Seam to resolve a context variable with a name that is the same as a Seam component name, and the context variable is currently undefined (null), Seam will instantiate that component, and bind the new instance to the context variable. In this case, Seam will instantiate a <literal>User</literal> the first time JSF encounters a variable named <literal>user</literal>.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								Whenever Seam instantiates a component, it binds the new instance to a context variable in the component&#39;s <emphasis>default context</emphasis>. The default context is specified using the <literal>@Scope</literal> annotation. The <literal>User</literal> bean is a session scoped component.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								The EJB standard <literal>@Table</literal> annotation indicates that the <literal>User</literal> class is mapped to the <literal>users</literal> table.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>name</literal>, <literal>password</literal> and <literal>username</literal> are the persistent attributes of the entity bean. All of our persistent attributes define accessor methods. These are needed when this component is used by JSF in the render response and update model values phases.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								An empty constructor is both required by both the EJB specification and by Seam.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								The <literal>@NotNull</literal> and <literal>@Length</literal> annotations are part of the Hibernate Validator framework. Seam integrates Hibernate Validator and lets you use it for data validation (even if you are not using Hibernate for persistence).
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								The EJB standard <literal>@Id</literal> annotation indicates the primary key attribute of the entity bean.
+							</para>
+						</listitem>
+					</orderedlist>
+			<!--	</programlistingco> -->
+				
+				<para>
+					The most important things to notice in this example are the <literal>@Name</literal> and <literal>@Scope</literal> annotations. These annotations establish that this class is a Seam component.
+				</para>
+				<para>
+					We will see below that the properties of our <literal>User</literal> class are bound to directly to JSF components and are populated by JSF during the update model values phase. We do not need any tedious glue code to copy data back and forth between the JSP pages and the entity bean domain model.
+				</para>
+				<para>
+					However, entity beans should not do transaction management or database access. So we cannot use this component as a JSF action listener. For that we need a session bean.
+				</para>
+			<!--	</example> -->
+			</section>
+			
+			<section id="Seam_Reference_Guide-Understanding_the_code-The_stateless_session_bean_class_RegisterAction.java">
+				<title>The stateless session bean class: <literal>RegisterAction.java</literal></title>
+				<para>
+					Most Seam application use session beans as JSF action listeners (you can use JavaBeans instead if you like).
+				</para>
+				<para>
+					We have exactly one JSF action in our application, and one session bean method attached to it. In this case, we will use a stateless session bean, since all the state associated with our action is held by the <literal>User</literal> bean.
+				</para>
+				<para>
+					This is the only really interesting code in the example.
+				</para>
+			<!--	<example><title></title> -->
+				<!--	<programlistingco>
+					<areaspec>
+						<area coords="1" id="registration-stateless-annotation" />
+						<area coords="6" id="registration-in-annotation" />
+						<area coords="9" id="registration-persistencecontext-annotation" />
+						<area coords="12" id="registration-logger-annotation" />
+						<area coords="15" id="registration-action-listener" />
+						<area coords="18" id="registration-query" />
+						<area coords="24" id="registration-log" />
+						<area coords="25" id="registration-outcome" />
+						<area coords="29" id="registration-builtin" />
+					</areaspec> -->
+<programlisting>@Stateless
+ at Name("register")
+public class RegisterAction implements Register
+{
+
+   @In
+   private User user;
+   
+   @PersistenceContext
+   private EntityManager em;
+   
+   @Logger
+   private Log log;
+   
+   public String register()
+   {
+      List existing = em.createQuery(
+         "select username from User where username=#{user.username}")
+         .getResultList();
+         
+      if (existing.size()==0)
+      {
+         em.persist(user);
+         log.info("Registered new user #{user.username}");
+         return "/registered.jsp";
+      }
+      else
+      {
+         FacesMessages.instance().add("User #{user.username} already exists");
+         return null;
+      }
+   }
+
+}
+</programlisting>
+					<orderedlist>
+						<listitem>
+							<para>
+								The EJB standard <literal>@Stateless</literal> annotation marks this class as stateless session bean.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								The <literal>@In</literal> annotation marks an attribute of the bean as injected by Seam. In this case, the attribute is injected from a context variable named <literal>user</literal> (the instance variable name).
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								The EJB standard <literal>@PersistenceContext</literal> annotation is used to inject the EJB3 entity manager.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								The Seam <literal>@Logger</literal> annotation is used to inject the component&#39;s <literal>Log</literal> instance.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								The action listener method uses the standard EJB3 <literal>EntityManager</literal> API to interact with the database, and returns the JSF outcome. Note that, since this is a sesson bean, a transaction is automatically begun when the <literal>register()</literal> method is called, and committed when it completes.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								Notice that Seam lets you use a JSF EL expression inside EJB-QL. Under the covers, this results in an ordinary JPA <literal>setParameter()</literal> call on the standard JPA <literal>Query</literal> object. Nice, huh?
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								The <literal>Log</literal> API lets us easily display templated log messages.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								JSF action listener methods return a string-valued outcome that determines what page will be displayed next. A null outcome (or a void action listener method) redisplays the previous page. In plain JSF, it is normal to always use a JSF <emphasis>navigation rule</emphasis> to determine the JSF view id from the outcome. For complex application this indirection is useful and a good practice. However, for very simple examples like this one, Seam lets you use the JSF view id as the outcome, eliminating the requirement for a navigation rule. <emphasis>Note that when you use a view id as an outcome, Seam always performs a browser redirect.</emphasis>
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								Seam provides a number of <emphasis>built-in components</emphasis> to help solve common problems. The <literal>FacesMessages</literal> component makes it easy to display templated error or success messages. Built-in Seam components may be obtained by injection, or by calling an <literal>instance()</literal> method.
+							</para>
+						</listitem>
+					</orderedlist>
+			<!--	</programlistingco> -->
+				
+				<para>
+					Note that we did not explicitly specify a <literal>@Scope</literal> this time. Each Seam component type has a default scope if not explicitly specified. For stateless session beans, the default scope is the stateless context. Actually, <emphasis>all</emphasis> stateless session beans belong in the stateless context.
+				</para>
+				<para>
+					Our session bean action listener performs the business and persistence logic for our mini-application. In more complex applications, we might need to layer the code and refactor persistence logic into a dedicated data access component. That is perfectly trivial to do. But notice that Seam does not force you into any particular strategy for application layering.
+				</para>
+				<para>
+					Furthermore, notice that our session bean has simultaneous access to context associated with the web request (the form values in the <literal>User</literal> object, for example), and state held in transactional resources (the <literal>EntityManager</literal> object). This is a break from traditional J2EE architectures. Again, if you are more comfortable with the traditional J2EE layering, you can certainly implement that in a Seam application. But for many applications, it is not very useful.
+				</para>
+			<!--	</example> -->
+			</section>
+			
+			<section id="Seam_Reference_Guide-Understanding_the_code-The_session_bean_local_interface_Register.java">
+				<title>The session bean local interface: <literal>Register.java</literal></title>
+				<para>
+					Naturally, our session bean needs a local interface.
+				</para>
+				<example><title></title><programlisting>@Local
+public interface Register
+{
+   public String register();
+}
+</programlisting>
+				</example><para>
+					That is the end of the Java code. Now onto the deployment descriptors.
+				</para>
+			</section>
+			
+			<section id="Seam_Reference_Guide-Understanding_the_code-The_Seam_component_deployment_descriptor_components.xml">
+				<title>The Seam component deployment descriptor: <literal>components.xml</literal></title>
+				<para>
+					If you have used many Java frameworks before, you will be used to having to declare all your component classes in some kind of XML file that gradually grows more and more unmanageable as your project matures. You will be relieved to know that Seam does not require that application components be accompanied by XML. Most Seam applications require a very small amount of XML that does not grow very much as the project gets bigger.
+				</para>
+				<para>
+					Nevertheless, it is often useful to be able to provide for <emphasis>some</emphasis> external configuration of <emphasis>some</emphasis> components (particularly the components built in to Seam). You have a couple of options here, but the most flexible option is to provide this configuration in a file called <literal>components.xml</literal>, located in the <literal>WEB-INF</literal> directory. We will use the <literal>components.xml</literal> file to tell Seam how to find our EJB components in JNDI:
+				</para>
+				<example><title></title><programlisting>&lt;components xmlns="http://jboss.com/products/seam/components"
+            xmlns:core="http://jboss.com/products/seam/core"&gt;
+     &lt;core:init jndi-pattern="@jndiPattern@"/&gt;
+&lt;/components&gt;
+</programlisting>
+				</example><para>
+					This code configures a property named <literal>jndiPattern</literal> of a built-in Seam component named <literal>org.jboss.seam.core.init</literal>.
+				</para>
+			</section>
+			
+			<section id="Seam_Reference_Guide-Understanding_the_code-The_web_deployment_description_web.xml">
+				<title>The web deployment description: <literal>web.xml</literal></title>
+				<para>
+					The presentation layer for our mini-application will be deployed in a WAR. So we will need a web deployment descriptor.
+				</para>
+				<example><title></title><programlisting>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;web-app version="2.5"
+    xmlns="http://java.sun.com/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
+        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"&gt;
+
+    &lt;!- - Seam - -&gt;
+
+    &lt;listener&gt;
+        &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/listener-class&gt;
+    &lt;/listener&gt;
+    
+     &lt;listener&gt;
+         &lt;listener-class&gt;com.sun.faces.config.ConfigureListener&lt;/listener-class&gt;
+    &lt;/listener&gt;
+
+    &lt;context-param&gt;
+        &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-name&gt;
+        &lt;param-value&gt;client&lt;/param-value&gt;
+    &lt;/context-param&gt;
+
+    &lt;context-param&gt;
+        &lt;param-name&gt;javax.faces.DEFAULT_SUFFIX&lt;/param-name&gt;
+        &lt;param-value&gt;.jspx&lt;/param-value&gt;
+    &lt;/context-param&gt;
+
+        &lt;servlet&gt;
+                &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;
+                &lt;servlet-class&gt;javax.faces.webapp.FacesServlet&lt;/servlet-class&gt;
+                &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;
+        &lt;/servlet&gt;
+
+        <!-- Faces Servlet Mapping -->
+        &lt;servlet-mapping&gt;
+                &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;
+                &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;
+        &lt;/servlet-mapping&gt;
+
+&lt;/web-app&gt;
+</programlisting>
+				</example><para>
+					This <literal>web.xml</literal> file configures Seam and Glassfish. The configuration you see here is pretty much identical in all Seam applications. 
+				</para>
+			</section>
+			
+			<section id="Seam_Reference_Guide-Understanding_the_code-The_JSF_configration_faces_config.xml">
+				<title>The JSF configration: <literal>faces-config.xml</literal></title>
+				<para>
+					All Seam applications use JSF views as the presentation layer. So we will need <literal>faces-config.xml</literal>.
+				</para>
+				<example><title></title><programlisting>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;!DOCTYPE faces-config 
+PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN"
+                            "http://java.sun.com/dtd/web-facesconfig_1_0.dtd"&gt;
+&lt;faces-config&gt;
+
+    &lt;!- - A phase listener is needed by all Seam applications - -&gt;
+    
+    &lt;lifecycle&gt;
+        &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-listener&gt;
+    &lt;/lifecycle&gt;
+
+&lt;/faces-config&gt;
+</programlisting>
+				</example><para>
+					The <literal>faces-config.xml</literal> file integrates Seam into JSF. Note that we do not need any JSF managed bean declarations; the managed beans are the Seam components. In Seam applications, the <literal>faces-config.xml</literal> is used much less often than in plain JSF.
+				</para>
+				<para>
+					In fact, once you have all the basic descriptors set up, the <emphasis>only</emphasis> XML you need to write as you add new functionality to a Seam application is the navigation rules, and possibly jBPM process definitions. Seam takes the view that <emphasis>process flow</emphasis> and <emphasis>configuration data</emphasis> are the only things that truly belong in XML.
+				</para>
+				<para>
+					In this simple example, we do not even need a navigation rule, since we decided to embed the view id in our action code.
+				</para>
+			</section>
+			<section id="Seam_Reference_Guide-Understanding_the_code-The_EJB_deployment_descriptor_ejb_jar.xml">
+				<title>The EJB deployment descriptor: <literal>ejb-jar.xml</literal></title>
+				<para>
+					The <literal>ejb-jar.xml</literal> file integrates Seam with EJB3, by attaching the <literal>SeamInterceptor</literal> to all session beans in the archive.
+				</para>
+<programlisting>&lt;ejb-jar xmlns="http://java.sun.com/xml/ns/javaee" 
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
+                           http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"
+         version="3.0"&gt;
+         
+   &lt;interceptors&gt;
+     &lt;interceptor&gt;
+       &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/interceptor-class&gt;
+     &lt;/interceptor&gt;
+   &lt;/interceptors&gt;
+   
+   &lt;assembly-descriptor&gt;
+      &lt;interceptor-binding&gt;
+         &lt;ejb-name&gt;*&lt;/ejb-name&gt;
+         &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/interceptor-class&gt;
+      &lt;/interceptor-binding&gt;
+   &lt;/assembly-descriptor&gt;
+   
+&lt;/ejb-jar&gt;
+</programlisting>
+			</section>
+			
+			<section id="Seam_Reference_Guide-Understanding_the_code-The_EJB_persistence_deployment_descriptor_persistence.xml">
+				<title>The EJB persistence deployment descriptor: <literal>persistence.xml</literal></title>
+				<para>
+					The <literal>persistence.xml</literal> file tells the EJB persistence provider where to find the datasource, and contains some vendor-specific settings. In this case, enables automatic schema export at startup time.
+				</para>
+<programlisting>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;persistence xmlns="http://java.sun.com/xml/ns/persistence" 
+             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
+                           http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" 
+             version="1.0"&gt;
+    &lt;persistence-unit name="userDatabase"&gt;
+      &lt;provider&gt;org.hibernate.ejb.HibernatePersistence&lt;/provider&gt;
+      &lt;jta-data-source&gt;java:/DefaultDS&lt;/jta-data-source&gt;
+      &lt;properties&gt;
+         &lt;property name="hibernate.hbm2ddl.auto" value="create-drop"/&gt;
+      &lt;/properties&gt;
+    &lt;/persistence-unit&gt;
+&lt;/persistence&gt;
+</programlisting>
+			</section>
+			
+			<section id="Seam_Reference_Guide-Understanding_the_code-The_view_register.jsp_and_registered.jsp">
+				<title>The view: <literal>register.jsp</literal> and <literal>registered.jsp</literal></title>
+				<para>
+					The view pages for a Seam application could be implemented using any technology that supports JSF. In this example we use JSP, since it is familiar to most developers and since we have minimal requirements here anyway. (But if you take our advice, you will use Facelets for your own applications.)
+				</para>
+				<example><title></title><programlisting>&lt;%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %&gt;
+&lt;%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %&gt;
+&lt;%@ taglib uri="http://jboss.com/products/seam/taglib" prefix="s" %&gt;
+&lt;html&gt;
+ &lt;head&gt;
+  &lt;title&gt;Register New User&lt;/title&gt;
+ &lt;/head&gt;
+ &lt;body&gt;
+  &lt;f:view&gt;
+   &lt;h:form&gt;
+     &lt;table border="0"&gt;
+       &lt;s:validateAll&gt;
+         &lt;tr&gt;
+           &lt;td&gt;Username&lt;/td&gt;
+           &lt;td&gt;&lt;h:inputText value="#{user.username}"/&gt;&lt;/td&gt;
+         &lt;/tr&gt;
+         &lt;tr&gt;
+           &lt;td&gt;Real Name&lt;/td&gt;
+           &lt;td&gt;&lt;h:inputText value="#{user.name}"/&gt;&lt;/td&gt;
+         &lt;/tr&gt;
+         &lt;tr&gt;
+           &lt;td&gt;Password&lt;/td&gt;
+           &lt;td&gt;&lt;h:inputSecret value="#{user.password}"/&gt;&lt;/td&gt;
+         &lt;/tr&gt;
+       &lt;/s:validateAll&gt;
+     &lt;/table&gt;
+     &lt;h:messages/&gt;
+     &lt;h:commandButton type="submit" value="Register" action="#{register.register}"/&gt;
+   &lt;/h:form&gt;
+  &lt;/f:view&gt;
+ &lt;/body&gt;
+&lt;/html&gt;
+</programlisting>
+				</example><para>
+					The only thing here that is specific to Seam is the <literal>&lt;s:validateAll&gt;</literal> tag. This JSF component tells JSF to validate all the contained input fields against the Hibernate Validator annotations specified on the entity bean.
+				</para>
+				<example><title></title><programlisting>&lt;%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %&gt;
+&lt;%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %&gt;
+&lt;html&gt;
+ &lt;head&gt;
+  &lt;title&gt;Successfully Registered New User&lt;/title&gt;
+ &lt;/head&gt;
+ &lt;body&gt;
+  &lt;f:view&gt;
+    Welcome, &lt;h:outputText value="#{user.name}"/&gt;, 
+    you are successfully registered as &lt;h:outputText value="#{user.username}"/&gt;.
+  &lt;/f:view&gt;
+ &lt;/body&gt;
+&lt;/html&gt;
+</programlisting>
+				</example><para>
+					This is a boring old JSP pages using standard JSF components. There is nothing specific to Seam here.
+				</para>
+			</section>
+			
+			<section id="Seam_Reference_Guide-Understanding_the_code-The_EAR_deployment_descriptor_application.xml">
+				<title>The EAR deployment descriptor: <literal>application.xml</literal></title>
+				<para>
+					Finally, since our application is deployed as an EAR, we need a deployment descriptor there, too.
+				</para>
+				<example><title></title><programlisting>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;application xmlns="http://java.sun.com/xml/ns/javaee" 
+             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+             xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
+                                   http://java.sun.com/xml/ns/javaee/application_5.xsd"
+             version="5"&gt;
+             
+    &lt;display-name&gt;Seam Registration&lt;/display-name&gt;
+
+    &lt;module&gt;
+        &lt;web&gt;
+            &lt;web-uri&gt;jboss-seam-registration.war&lt;/web-uri&gt;
+            &lt;context-root&gt;/seam-registration&lt;/context-root&gt;
+        &lt;/web&gt;
+    &lt;/module&gt;
+    &lt;module&gt;
+        &lt;ejb&gt;jboss-seam-registration.jar&lt;/ejb&gt;
+    &lt;/module&gt;
+    &lt;module&gt;
+        &lt;java&gt;jboss-seam.jar&lt;/java&gt;
+    &lt;/module&gt;
+    &lt;module&gt;
+        &lt;java&gt;el-ri.jar&lt;/java&gt;
+    &lt;/module&gt;
+    
+&lt;/application&gt;
+</programlisting>
+				</example><para>
+					This deployment descriptor links modules in the enterprise archive and binds the web application to the context root <literal>/seam-registration</literal>.
+				</para>
+			<!--<para>
+				We&#39;ve now seen <emphasis>all</emphasis> the files in the entire application!
+			</para>-->
+			</section>
+			
+
+		</section>
+		
+		<section id="Seam_Reference_Guide-Your_first_Seam_application_the_registration_example-How_it_works">
+			<title>How it works</title>
+			<para>
+				When the form is submitted, JSF asks Seam to resolve the variable named <literal>user</literal>. Since there is no value already bound to that name (in any Seam context), Seam instantiates the <literal>user</literal> component, and returns the resulting <literal>User</literal> entity bean instance to JSF after storing it in the Seam session context.
+			</para>
+			<para>
+				The form input values are now validated against the Hibernate Validator constraints specified on the <literal>User</literal> entity. If the constraints are violated, JSF redisplays the page. Otherwise, JSF binds the form input values to properties of the <literal>User</literal> entity bean.
+			</para>
+			<para>
+				Next, JSF asks Seam to resolve the variable named <literal>register</literal>. Seam finds the <literal>RegisterAction</literal> stateless session bean in the stateless context and returns it. JSF invokes the <literal>register()</literal> action listener method.
+			</para>
+			<para>
+				Seam intercepts the method call and injects the <literal>User</literal> entity from the Seam session context, before continuing the invocation.
+			</para>
+			<para>
+				The <literal>register()</literal> method checks if a user with the entered username already exists. If so, an error message is queued with the <literal>FacesMessages</literal> component, and a null outcome is returned, causing a page redisplay. The <literal>FacesMessages</literal> component interpolates the JSF expression embedded in the message string and adds a JSF <literal>FacesMessage</literal> to the view.
+			</para>
+			<para>
+				If no user with that username exists, the <literal>"/registered.jsp"</literal> outcome triggers a browser redirect to the <literal>registered.jsp</literal> page. When JSF comes to render the page, it asks Seam to resolve the variable named <literal>user</literal> and uses property values of the returned <literal>User</literal> entity from Seam&#39;s session scope.
+			</para>
+		</section>
+
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_Tutorial-Clickable_lists_in_Seam_the_messages_example">
+		<title>Clickable lists in Seam: the messages example</title>
+		<para>
+			Clickable lists of database search results are such an important part of any online application that Seam provides special functionality on top of JSF to make it easier to query data using EJB-QL or HQL and display it as a clickable list using a JSF <literal>&lt;h:dataTable&gt;</literal>. The messages example demonstrates this functionality.
+		</para>
+		<mediaobject>
+			<imageobject role="fo">
+				<imagedata align="center" fileref="images/messages.png" />
+			</imageobject>
+		<!--	<imageobject role="html">
+				<imagedata align="center" fileref="../shared/images/messages.png" />
+			</imageobject> -->
+		</mediaobject>
+		<section id="Seam_Reference_Guide-Clickable_lists_in_Seam_the_messages_example-Understanding_the_code">
+			<title>Understanding the code</title>
+			<para>
+				The message list example has one entity bean, <literal>Message</literal>, one session bean, <literal>MessageListBean</literal> and one JSP.
+			</para>
+			<section id="Seam_Reference_Guide-Understanding_the_code-The_entity_bean_Message.java">
+				<title>The entity bean: <literal>Message.java</literal></title>
+				<para>
+					The <literal>Message</literal> entity defines the title, text, date and time of a message, and a flag indicating whether the message has been read:
+				</para>
+			<!--	<example><title></title> -->
+<programlisting>@Entity
+ at Name("message")
+ at Scope(EVENT)
+public class Message implements Serializable
+{
+   private Long id;
+   private String title;
+   private String text;
+   private boolean read;
+   private Date datetime;
+   
+   @Id @GeneratedValue
+   public Long getId() {
+      return id;
+   }
+   public void setId(Long id) {
+      this.id = id;
+   }
+   
+   @NotNull @Length(max=100)
+   public String getTitle() {
+      return title;
+   }
+   public void setTitle(String title) {
+      this.title = title;
+   }
+   
+   @NotNull @Lob
+   public String getText() {
+      return text;
+   }
+   public void setText(String text) {
+      this.text = text;
+   }
+   
+   @NotNull
+   public boolean isRead() {
+      return read;
+   }
+   public void setRead(boolean read) {
+      this.read = read;
+   }
+   
+   @NotNull 
+   @Basic @Temporal(TemporalType.TIMESTAMP)
+   public Date getDatetime() {
+      return datetime;
+   }
+   public void setDatetime(Date datetime) {
+      this.datetime = datetime;
+   }
+   
+}
+</programlisting>
+		<!--		</example> -->
+			</section>
+			
+			<section id="Seam_Reference_Guide-Understanding_the_code-The_stateful_session_bean_MessageManagerBean.java">
+				<title>The stateful session bean: <literal>MessageManagerBean.java</literal></title>
+				<para>
+					Just like in the previous example, we have a session bean, <literal>MessageManagerBean</literal>, which defines the action listener methods for the two buttons on our form. One of the buttons selects a message from the list, and displays that message. The other button deletes a message. So far, this is not so different to the previous example.
+				</para>
+				<para>
+					But <literal>MessageManagerBean</literal> is also responsible for fetching the list of messages the first time we navigate to the message list page. There are various ways the user could navigate to the page, and not all of them are preceded by a JSF action&mdash;the user might have bookmarked the page, for example. So the job of fetching the message list takes place in a Seam <emphasis>factory method</emphasis>, instead of in an action listener method.
+				</para>
+				<para>
+					We want to cache the list of messages in memory between server requests, so we will make this a stateful session bean.
+				</para>
+			<!--	<example><title></title> -->
+				<!--	<programlistingco>
+					<areaspec>
+						<area coords="7" id="messages-datamodel" />
+						<area coords="10" id="messages-datamodelselection" />
+						<area coords="11" id="messages-out" />
+						<area coords="14" id="messages-persistencecontext" />
+						<area coords="17" id="messages-factory" />
+						<area coords="23" id="messages-select" />
+						<area coords="28" id="messages-delete" />
+						<area coords="35" id="messages-remove" />
+					</areaspec> -->
+<programlisting>@Stateful
+ at Scope(SESSION)
+ at Name("messageManager")
+public class MessageManagerBean implements Serializable, MessageManager
+{
+
+   @DataModel
+   private List&lt;Message&gt; messageList;
+   
+   @DataModelSelection
+   @Out(required=false)
+   private Message message;
+   
+   @PersistenceContext(type=EXTENDED)
+   private EntityManager em;
+   
+   @Factory("messageList")
+   public void findMessages()
+   {
+      messageList = em.createQuery("from Message msg order by msg.datetime desc").getResultList();
+   }
+   
+   public void select()
+   {
+      message.setRead(true);
+   }
+   
+   public void delete()
+   {
+      messageList.remove(message);
+      em.remove(message);
+      message=null;
+   }
+   
+   @Remove @Destroy
+   public void destroy() {}
+
+}
+</programlisting>
+					<orderedlist>
+						<listitem>
+							<para>
+								The <literal>@DataModel</literal> annotation exposes an attibute of type <literal>java.util.List</literal> to the JSF page as an instance of <literal>javax.faces.model.DataModel</literal>. This allows us to use the list in a JSF <literal>&lt;h:dataTable&gt;</literal> with clickable links for each row. In this case, the <literal>DataModel</literal> is made available in a session context variable named <literal>messageList</literal>.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								The <literal>@DataModelSelection</literal> annotation tells Seam to inject the <literal>List</literal> element that corresponded to the clicked link.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								The <literal>@Out</literal> annotation then exposes the selected value directly to the page. So every time a row of the clickable list is selected, the <literal>Message</literal> is injected to the attribute of the stateful bean, and the subsequently <emphasis>outjected</emphasis> to the event context variable named <literal>message</literal>.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								This stateful bean has an EJB3 <emphasis>extended persistence context</emphasis>. The messages retrieved in the query remain in the managed state as long as the bean exists, so any subsequent method calls to the stateful bean can update them without needing to make any explicit call to the <literal>EntityManager</literal>.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								The first time we navigate to the JSP page, there will be no value in the <literal>messageList</literal> context variable. The <literal>@Factory</literal> annotation tells Seam to create an instance of <literal>MessageManagerBean</literal> and invoke the <literal>findMessages()</literal> method to initialize the value. We call <literal>findMessages()</literal> a <emphasis>factory method</emphasis> for <literal>messages</literal>.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								The <literal>select()</literal> action listener method marks the selected <literal>Message</literal> as read, and updates it in the database.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								The <literal>delete()</literal> action listener method removes the selected <literal>Message</literal> from the database.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								All stateful session bean Seam components <emphasis>must</emphasis> have a method marked <literal>@Remove @Destroy</literal> to ensure that Seam will remove the stateful bean when the Seam context ends, and clean up any server-side state.
+							</para>
+						</listitem>
+					</orderedlist>
+			<!--	</programlistingco> -->
+				
+			<!--	</example> -->
+				<para>
+					Note that this is a session-scoped Seam component. It is associated with the user login session, and all requests from a login session share the same instance of the component. (In Seam applications, we usually use session-scoped components sparingly.)
+				</para>
+			</section>
+			
+			<section id="Seam_Reference_Guide-Understanding_the_code-The_session_bean_local_interface_MessageManager.java">
+				<title>The session bean local interface: <literal>MessageManager.java</literal></title>
+				<para>
+					All session beans have a business interface, of course.
+				</para>
+<programlisting>@Local
+public interface MessageManager
+{
+   public void findMessages();
+   public void select();
+   public void delete();
+   public void destroy();
+}
+</programlisting>
+				<para>
+					From now on, we will not show local interfaces in our code examples.
+				</para>
+				<para>
+					Let us skip over <literal>components.xml</literal>, <literal>persistence.xml</literal>, <literal>web.xml</literal>, <literal>ejb-jar.xml</literal>, <literal>faces-config.xml</literal> and <literal>application.xml</literal> since they are much the same as the previous example, and go straight to the JSP.
+				</para>
+			</section>
+			
+			<section id="Seam_Reference_Guide-Understanding_the_code-The_view_messages.jsp">
+				<title>The view: <literal>messages.jsp</literal></title>
+				<para>
+					The JSP page is a straightforward use of the JSF <literal>&lt;h:dataTable&gt;</literal> component. Again, nothing specific to Seam.
+				</para>
+				<example><title></title><programlisting>&lt;%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %&gt;
+&lt;%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %&gt;
+&lt;html&gt;
+ &lt;head&gt;
+  &lt;title&gt;Messages&lt;/title&gt;
+ &lt;/head&gt;
+ &lt;body&gt;
+  &lt;f:view&gt;
+   &lt;h:form&gt;
+     &lt;h2&gt;Message List&lt;/h2&gt;
+     &lt;h:outputText value="No messages to display" rendered="#{messageList.rowCount==0}"/&gt;
+     &lt;h:dataTable var="msg" value="#{messageList}" rendered="#{messageList.rowCount&gt;0}"&gt;
+        &lt;h:column&gt;
+           &lt;f:facet name="header"&gt;
+              &lt;h:outputText value="Read"/&gt;
+           &lt;/f:facet&gt;
+           &lt;h:selectBooleanCheckbox value="#{msg.read}" disabled="true"/&gt;
+        &lt;/h:column&gt;
+        &lt;h:column&gt;
+           &lt;f:facet name="header"&gt;
+              &lt;h:outputText value="Title"/&gt;
+           &lt;/f:facet&gt;
+           &lt;h:commandLink value="#{msg.title}" action="#{messageManager.select}"/&gt;
+        &lt;/h:column&gt;
+        &lt;h:column&gt;
+           &lt;f:facet name="header"&gt;
+              &lt;h:outputText value="Date/Time"/&gt;
+           &lt;/f:facet&gt;
+           &lt;h:outputText value="#{msg.datetime}"&gt;
+              &lt;f:convertDateTime type="both" dateStyle="medium" timeStyle="short"/&gt;
+           &lt;/h:outputText&gt;
+        &lt;/h:column&gt;
+        &lt;h:column&gt;
+           &lt;h:commandButton value="Delete" action="#{messageManager.delete}"/&gt;
+        &lt;/h:column&gt;
+     &lt;/h:dataTable&gt;
+     &lt;h3&gt;&lt;h:outputText value="#{message.title}"/&gt;&lt;/h3&gt;
+     &lt;div&gt;&lt;h:outputText value="#{message.text}"/&gt;&lt;/div&gt;
+   &lt;/h:form&gt;
+  &lt;/f:view&gt;
+ &lt;/body&gt;
+&lt;/html&gt;
+</programlisting>
+				</example>
+			</section>
+
+		</section>
+		
+		<section id="Seam_Reference_Guide-Clickable_lists_in_Seam_the_messages_example-How_it_works">
+			<title>How it works</title>
+			<para>
+				The first time we navigate to the <literal>messages.jsp</literal> page, whether by a JSF postback (faces request) or a direct browser GET request (non-faces request), the page will try to resolve the <literal>messageList</literal> context variable. Since this context variable is not initialized, Seam will call the factory method <literal>findMessages()</literal>, which performs a query against the database and results in a <literal>DataModel</literal> being outjected. This <literal>DataModel</literal> provides the row data needed for rendering the <literal>&lt;h:dataTable&gt;</literal>.
+			</para>
+			<para>
+				When the user clicks the <literal>&lt;h:commandLink&gt;</literal>, JSF calls the <literal>select()</literal> action listener. Seam intercepts this call and injects the selected row data into the <literal>message</literal> attribute of the <literal>messageManager</literal> component. The action listener fires, marking the selected <literal>Message</literal> as read. At the end of the call, Seam outjects the selected <literal>Message</literal> to the context variable named <literal>message</literal>. Next, the EJB container commits the transaction, and the change to the <literal>Message</literal> is flushed to the database. Finally, the page is re-rendered, redisplaying the message list, and displaying the selected message below it.
+			</para>
+			<para>
+				If the user clicks the <literal>&lt;h:commandButton&gt;</literal>, JSF calls the <literal>delete()</literal> action listener. Seam intercepts this call and injects the selected row data into the <literal>message</literal> attribute of the <literal>messageList</literal> component. The action listener fires, removing the selected <literal>Message</literal> from the list, and also calling <literal>remove()</literal> on the <literal>EntityManager</literal>. At the end of the call, Seam refreshes the <literal>messageList</literal> context variable and clears the context variable named <literal>message</literal>. The EJB container commits the transaction, and deletes the <literal>Message</literal> from the database. Finally, the page is re-rendered, redisplaying the message list.
+			</para>
+		</section>
+
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_Tutorial-Seam_and_jBPM_the_todo_list_example">
+		<title>Seam and jBPM: the todo list example</title>
+		<para>
+			jBPM provides sophisticated functionality for workflow and task management. To get a small taste of how jBPM integrates with Seam, we will show you a simple <emphasis>todo list</emphasis> application. Since managing lists of tasks is such core functionality for jBPM, there is hardly any Java code at all in this example.
+		</para>
+		<mediaobject>
+			<imageobject role="fo">
+				<imagedata align="center" fileref="images/todo.png" />
+			</imageobject>
+		<!--	<imageobject role="html">
+				<imagedata align="center" fileref="../shared/images/todo.png" />
+			</imageobject> -->
+		</mediaobject>
+		<section id="Seam_Reference_Guide-Seam_and_jBPM_the_todo_list_example-Understanding_the_code">
+			<title>Understanding the code</title>
+			<para>
+				The center of this example is the jBPM process definition. There are also two JSPs and two trivial JavaBeans (There was no reason to use session beans, since they do not access the database, or have any other transactional behavior). Let us start with the process definition:
+			</para>
+		<!--	<example><title></title> -->
+			<!--	<programlistingco>
+				<areaspec>
+					<area coords="3" id="todo-startstate" />
+					<area coords="7" id="todo-tasknode" />
+					<area coords="8" id="todo-task" />
+					<area coords="9" id="todo-assignment" />
+					<area coords="14" id="todo-endstate" />
+				</areaspec> -->
+<programlisting>&lt;process-definition name="todo"&gt;
+   
+   &lt;start-state name="start"&gt;
+      &lt;transition to="todo"/&gt;
+   &lt;/start-state&gt;
+   
+   &lt;task-node name="todo"&gt;
+      &lt;task name="todo" description="#{todoList.description}"&gt;
+         &lt;assignment actor-id="#{actor.id}"/&gt;
+      &lt;/task&gt;
+      &lt;transition to="done"/&gt;
+   &lt;/task-node&gt;
+   
+   &lt;end-state name="done"/&gt;
+   
+&lt;/process-definition&gt;
+</programlisting>
+				<orderedlist>
+					<listitem>
+						<para>
+							The <literal>&lt;start-state&gt;</literal> node represents the logical start of the process. When the process starts, it immediately transitions to the <literal>todo</literal> node.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							The <literal>&lt;task-node&gt;</literal> node represents a <emphasis>wait state</emphasis>, where business process execution pauses, waiting for one or more tasks to be performed.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							The <literal>&lt;task&gt;</literal> element defines a task to be performed by a user. Since there is only one task defined on this node, when it is complete, execution resumes, and we transition to the end state. The task gets its description from a Seam component named <literal>todoList</literal> (one of the JavaBeans).
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							Tasks need to be assigned to a user or group of users when they are created. In this case, the task is assigned to the current user, which we get from a built-in Seam component named <literal>actor</literal>. Any Seam component may be used to perform task assignment.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							The <literal>&lt;end-state&gt;</literal> node defines the logical end of the business process. When execution reaches this node, the process instance is destroyed.
+						</para>
+					</listitem>
+				</orderedlist>
+		<!--	</programlistingco> -->
+			
+		<!--	</example>--><para>
+				If we view this process definition using the process definition editor provided by JBossIDE, this is what it looks like:
+			</para>
+			<mediaobject>
+				<imageobject role="fo">
+					<imagedata align="center" fileref="images/todo-process.png" />
+				</imageobject>
+			<!--	<imageobject role="html">
+					<imagedata align="center" fileref="../shared/images/todo-process.png" />
+				</imageobject> -->
+			</mediaobject>
+			<para>
+				This document defines our <emphasis>business process</emphasis> as a graph of nodes. This is the most trivial possible business process: there is one <emphasis>task</emphasis> to be performed, and when that task is complete, the business process ends.
+			</para>
+			<para>
+				The first JavaBean handles the login screen <literal>login.jsp</literal>. Its job is just to initialize the jBPM actor id using the <literal>actor</literal> component. (In a real application, it would also need to authenticate the user.)
+			</para>
+			<example><title></title><programlisting>@Name("login")
+public class Login {
+   
+   @In
+   private Actor actor;
+   
+   private String user;
+
+   public String getUser() {
+      return user;
+   }
+
+   public void setUser(String user) {
+      this.user = user;
+   }
+   
+   public String login()
+   {
+      actor.setId(user);
+      return "/todo.jsp";
+   }
+}
+</programlisting>
+			</example><para>
+				Here we see the use of <literal>@In</literal> to inject the built-in <literal>Actor</literal> component.
+			</para>
+			<para>
+				The JSP itself is trivial:
+			</para>
+			<example><title></title><programlisting>&lt;%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%&gt;
+&lt;%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;title&gt;Login&lt;/title&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;h1&gt;Login&lt;/h1&gt;
+&lt;f:view&gt;
+    &lt;h:form&gt;
+      &lt;div&gt;
+        &lt;h:inputText value="#{login.user}"/&gt;
+        &lt;h:commandButton value="Login" action="#{login.login}"/&gt;
+      &lt;/div&gt;
+    &lt;/h:form&gt;
+&lt;/f:view&gt;
+&lt;/body&gt;
+&lt;/html&gt;
+</programlisting>
+			</example><para>
+				The second JavaBean is responsible for starting business process instances, and ending tasks.
+			</para>
+			<example><title></title>
+			<!--	<programlistingco>
+				<areaspec>
+					<area coords="6" id="todo-description" />
+					<area coords="15" id="todo-createprocess-annotation" />
+					<area coords="18" id="todo-task-annotations" />
+				</areaspec> -->
+<programlisting>@Name("todoList")
+public class TodoList {
+   
+   private String description;
+   
+   public String getDescription()
+   {
+      return description;
+   }
+
+   public void setDescription(String description) {
+      this.description = description;
+   }
+   
+   @CreateProcess(definition="todo")
+   public void createTodo() {}
+   
+   @StartTask @EndTask
+   public void done() {}
+
+}
+</programlisting>
+				<orderedlist>
+					<listitem>
+						<para>
+							The description property accepts user input form the JSP page, and exposes it to the process definition, allowing the task description to be set.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							The Seam <literal>@CreateProcess</literal> annotation creates a new jBPM process instance for the named process definition.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							The Seam <literal>@StartTask</literal> annotation starts work on a task. The <literal>@EndTask</literal> ends the task, and allows the business process execution to resume.
+						</para>
+					</listitem>
+				</orderedlist>
+		<!--	</programlistingco> -->
+			
+			</example><para>
+				In a more realistic example, <literal>@StartTask</literal> and <literal>@EndTask</literal> would not appear on the same method, because there is usually work to be done using the application in order to complete the task.
+			</para>
+			<para>
+				Finally, the meat of the application is in <literal>todo.jsp</literal>:
+			</para>
+			<example><title></title><programlisting>&lt;%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %&gt;
+&lt;%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %&gt;
+&lt;%@ taglib uri="http://jboss.com/products/seam/taglib" prefix="s" %&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;title&gt;Todo List&lt;/title&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;h1&gt;Todo List&lt;/h1&gt;
+&lt;f:view&gt;
+   &lt;h:form id="list"&gt;
+      &lt;div&gt;
+         &lt;h:outputText value="There are no todo items." rendered="#{empty 
+                                       taskInstanceList}"/&gt;
+         &lt;h:dataTable value="#{taskInstanceList}" var="task" rendered="#{not empty 
+                                       taskInstanceList}"&gt;
+            &lt;h:column&gt;
+                &lt;f:facet name="header"&gt;
+                    &lt;h:outputText value="Description"/&gt;
+                &lt;/f:facet&gt;
+                &lt;h:inputText value="#{task.description}"/&gt;
+            &lt;/h:column&gt;
+            &lt;h:column&gt;
+                &lt;f:facet name="header"&gt;
+                    &lt;h:outputText value="Created"/&gt;
+                &lt;/f:facet&gt;
+                &lt;h:outputText value="#{task.taskMgmtInstance.processInstance.start}"&gt;
+                    &lt;f:convertDateTime type="date"/&gt;
+                &lt;/h:outputText&gt;
+            &lt;/h:column&gt;
+            &lt;h:column&gt;
+                &lt;f:facet name="header"&gt;
+                    &lt;h:outputText value="Priority"/&gt;
+                &lt;/f:facet&gt;
+                &lt;h:inputText value="#{task.priority}" style="width: 30"/&gt;
+            &lt;/h:column&gt;
+            &lt;h:column&gt;
+                &lt;f:facet name="header"&gt;
+                    &lt;h:outputText value="Due Date"/&gt;
+                &lt;/f:facet&gt;
+                &lt;h:inputText value="#{task.dueDate}" style="width: 100"&gt;
+                    &lt;f:convertDateTime type="date" dateStyle="short"/&gt;
+                &lt;/h:inputText&gt;
+            &lt;/h:column&gt;
+            &lt;h:column&gt;
+                &lt;s:button value="Done" action="#{todoList.done}" taskInstance="#{task}"/&gt;
+            &lt;/h:column&gt;
+         &lt;/h:dataTable&gt;
+      &lt;/div&gt;
+      &lt;div&gt;
+      &lt;h:messages/&gt;
+      &lt;/div&gt;
+      &lt;div&gt;
+         &lt;h:commandButton value="Update Items" action="update"/&gt;
+      &lt;/div&gt;
+   &lt;/h:form&gt;
+   &lt;h:form id="new"&gt;
+      &lt;div&gt;
+         &lt;h:inputText value="#{todoList.description}"/&gt;
+         &lt;h:commandButton value="Create New Item" action="#{todoList.createTodo}"/&gt;
+      &lt;/div&gt;
+   &lt;/h:form&gt;
+&lt;/f:view&gt;
+&lt;/body&gt;
+&lt;/html&gt;
+</programlisting>
+			</example><para>
+				Let us take this one piece at a time.
+			</para>
+			<para>
+				The page renders a list of tasks, which it gets from a built-in Seam component named <literal>taskInstanceList</literal>. The list is defined inside a JSF form.
+			</para>
+<programlisting>&lt;h:form id="list"&gt;
+   &lt;div&gt;
+      &lt;h:outputText value="There are no todo items." rendered="#{empty taskInstanceList}"/&gt;
+      &lt;h:dataTable value="#{taskInstanceList}" var="task" rendered="#{not empty taskInstanceList}"&gt;
+         ...
+      &lt;/h:dataTable&gt;
+   &lt;/div&gt;
+&lt;/h:form&gt;
+</programlisting>
+			<para>
+				Each element of the list is an instance of the jBPM class <literal>TaskInstance</literal>. The following code simply displays the interesting properties of each task in the list. For the description, priority and due date, we use input controls, to allow the user to update these values.
+			</para>
+<programlisting>&lt;h:column&gt;
+    &lt;f:facet name="header"&gt;
+       &lt;h:outputText value="Description"/&gt;
+    &lt;/f:facet&gt;
+    &lt;h:inputText value="#{task.description}"/&gt;
+&lt;/h:column&gt;
+&lt;h:column&gt;
+    &lt;f:facet name="header"&gt;
+        &lt;h:outputText value="Created"/&gt;
+    &lt;/f:facet&gt;
+    &lt;h:outputText value="#{task.taskMgmtInstance.processInstance.start}"&gt;
+        &lt;f:convertDateTime type="date"/&gt;
+    &lt;/h:outputText&gt;
+&lt;/h:column&gt;
+&lt;h:column&gt;
+    &lt;f:facet name="header"&gt;
+        &lt;h:outputText value="Priority"/&gt;
+    &lt;/f:facet&gt;
+    &lt;h:inputText value="#{task.priority}" style="width: 30"/&gt;
+&lt;/h:column&gt;
+&lt;h:column&gt;
+    &lt;f:facet name="header"&gt;
+        &lt;h:outputText value="Due Date"/&gt;
+    &lt;/f:facet&gt;
+    &lt;h:inputText value="#{task.dueDate}" style="width: 100"&gt;
+        &lt;f:convertDateTime type="date" dateStyle="short"/&gt;
+    &lt;/h:inputText&gt;
+&lt;/h:column&gt;
+</programlisting>
+			<para>
+				This button ends the task by calling the action method annotated <literal>@StartTask @EndTask</literal>. It passes the task id to Seam as a request parameter:
+			</para>
+<programlisting>&lt;h:column&gt;
+    &lt;s:button value="Done" action="#{todoList.done}" taskInstance="#{task}"/&gt;
+&lt;/h:column&gt;
+</programlisting>
+			<para>
+				(Note that this is using a Seam <literal>&lt;s:button&gt;</literal> JSF control from the <literal>seam-ui.jar</literal> package.)
+			</para>
+			<para>
+				This button is used to update the properties of the tasks. When the form is submitted, Seam and jBPM will make any changes to the tasks persistent. There is no need for any action listener method:
+			</para>
+<programlisting>&lt;h:commandButton value="Update Items" action="update"/&gt;</programlisting>
+			<para>
+				A second form on the page is used to create new items, by calling the action method annotated <literal>@CreateProcess</literal>.
+			</para>
+<programlisting>&lt;h:form id="new"&gt;
+    &lt;div&gt;
+        &lt;h:inputText value="#{todoList.description}"/&gt;
+        &lt;h:commandButton value="Create New Item" action="#{todoList.createTodo}"/&gt;
+    &lt;/div&gt;
+&lt;/h:form&gt;
+</programlisting>
+			<para>
+				There are several other files needed for the example, but they are just standard jBPM and Seam configuration and not very interesting.
+			</para>
+		</section>
+		
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_Tutorial-Seam_pageflow_the_numberguess_example">
+		<title>Seam pageflow: the numberguess example</title>
+		<para>
+			For Seam applications with relatively freeform (ad hoc) navigation, JSF/Seam navigation rules are a perfectly good way to define the page flow. For applications with a more constrained style of navigation, especially for user interfaces which are more stateful, navigation rules make it difficult to really understand the flow of the system. To understand the flow, you need to piece it together from the view pages, the actions and the navigation rules.
+		</para>
+		<para>
+			Seam allows you to use a jPDL process definition to define pageflow. The simple number guessing example shows how this is done.
+		</para>
+		<mediaobject>
+			<imageobject role="fo">
+				<imagedata align="center" fileref="images/numberguess.png" />
+			</imageobject>
+		<!--	<imageobject role="html">
+				<imagedata align="center" fileref="../shared/images/numberguess.png" />
+			</imageobject> -->
+		</mediaobject>
+		<section id="Seam_Reference_Guide-Seam_pageflow_the_numberguess_example-Understanding_the_code">
+			<title>Understanding the code</title>
+			<para>
+				The example is implemented using one JavaBean, three JSP pages and a jPDL pageflow definition. Let us begin with the pageflow:
+			</para>
+		<!--	<example><title></title> -->
+			<!--	<programlistingco>
+				<areaspec>
+					<area coords="7" id="numberguess-page" />
+					<area coords="8" id="numberguess-transition" />
+					<area coords="9" id="numberguess-action" />
+					<area coords="13" id="numberguess-decision" />
+				</areaspec> -->
+<programlisting>&lt;pageflow-definition name="numberGuess"&gt;
+   
+   &lt;start-page name="displayGuess" view-id="/numberGuess.jsp"&gt;
+      &lt;redirect/&gt;
+      &lt;transition name="guess" to="evaluateGuess"&gt;
+          &lt;action expression="#{numberGuess.guess}" /&gt;
+      &lt;/transition&gt;
+   &lt;/start-page&gt;
+   
+   &lt;decision name="evaluateGuess" expression="#{numberGuess.correctGuess}"&gt;
+      &lt;transition name="true" to="win"/&gt;
+      &lt;transition name="false" to="evaluateRemainingGuesses"/&gt;
+   &lt;/decision&gt;
+   
+   &lt;decision name="evaluateRemainingGuesses" expression="#{numberGuess.lastGuess}"&gt;
+      &lt;transition name="true" to="lose"/&gt;
+      &lt;transition name="false" to="displayGuess"/&gt;
+   &lt;/decision&gt;
+   
+   &lt;page name="win" view-id="/win.jsp"&gt;
+      &lt;redirect/&gt;
+      &lt;end-conversation /&gt;
+   &lt;/page&gt;
+   
+   &lt;page name="lose" view-id="/lose.jsp"&gt;
+      &lt;redirect/&gt;
+      &lt;end-conversation /&gt;
+   &lt;/page&gt;
+   
+&lt;/pageflow-definition&gt;
+</programlisting>
+				<orderedlist>
+					<listitem>
+						<para>
+							The <literal>&lt;page&gt;</literal> element defines a wait state where the system displays a particular JSF view and waits for user input. The <literal>view-id</literal> is the same JSF view id used in plain JSF navigation rules. The <literal>redirect</literal> attribute tells Seam to use post-then-redirect when navigating to the page. (This results in friendly browser URLs.)
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							The <literal>&lt;transition&gt;</literal> element names a JSF outcome. The transition is triggered when a JSF action results in that outcome. Execution will then proceed to the next node of the pageflow graph, after invocation of any jBPM transition actions.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							A transition <literal>&lt;action&gt;</literal> is just like a JSF action, except that it occurs when a jBPM transition occurs. The transition action can invoke any Seam component.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							A <literal>&lt;decision&gt;</literal> node branches the pageflow, and determines the next node to execute by evaluating a JSF EL expression.
+						</para>
+					</listitem>
+				</orderedlist>
+		<!--	</programlistingco> -->
+			
+		<!--	</example>--><para>
+				Here is what the pageflow looks like in the JBossIDE pageflow editor:
+			</para>
+			<mediaobject>
+				<imageobject role="fo">
+					<imagedata align="center" fileref="images/numberguess-pageflow.png" />
+				</imageobject>
+			<!--	<imageobject role="html">
+					<imagedata align="center" fileref="../shared/images/numberguess-pageflow.png" />
+				</imageobject> -->
+			</mediaobject>
+			<para>
+				Now that we have seen the pageflow, it is very, very easy to understand the rest of the application!
+			</para>
+			<para>
+				Here is the main page of the application, <literal>numberGuess.jsp</literal>:
+			</para>
+			<example><title></title><programlisting>&lt;%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%&gt;
+&lt;%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;title&gt;Guess a number...&lt;/title&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;h1&gt;Guess a number...&lt;/h1&gt;
+&lt;f:view&gt;
+    &lt;h:form&gt;
+        &lt;h:outputText value="Higher!" rendered="#{numberGuess.randomNumber&gt;numberGuess.currentGuess}" /&gt;
+        &lt;h:outputText value="Lower!" rendered="#{numberGuess.randomNumber&lt;numberGuess.currentGuess}" /&gt;
+        &lt;br /&gt;
+        I&#39;m thinking of a number between &lt;h:outputText value="#{numberGuess.smallest}" /&gt; and 
+        &lt;h:outputText value="#{numberGuess.biggest}" /&gt;. You have 
+        &lt;h:outputText value="#{numberGuess.remainingGuesses}" /&gt; guesses.
+        &lt;br /&gt;
+        Your guess: 
+        &lt;h:inputText value="#{numberGuess.currentGuess}" id="guess" required="true"&gt;
+            &lt;f:validateLongRange
+                maximum="#{numberGuess.biggest}" 
+                minimum="#{numberGuess.smallest}"/&gt;
+        &lt;/h:inputText&gt;
+        &lt;h:commandButton type="submit" value="Guess" action="guess" /&gt;
+        &lt;br/&gt;
+        &lt;h:message for="guess" style="color: red"/&gt;
+    &lt;/h:form&gt;
+&lt;/f:view&gt;
+&lt;/body&gt;
+&lt;/html&gt;
+</programlisting>
+			</example><para>
+				Notice how the command button names the <literal>guess</literal> transition instead of calling an action directly.
+			</para>
+			<para>
+				The <literal>win.jsp</literal> page is predictable:
+			</para>
+			<example><title></title><programlisting>&lt;%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%&gt;
+&lt;%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;title&gt;You won!&lt;/title&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;h1&gt;You won!&lt;/h1&gt;
+&lt;f:view&gt;
+    Yes, the answer was &lt;h:outputText value="#{numberGuess.currentGuess}" /&gt;.
+    It took you &lt;h:outputText value="#{numberGuess.guessCount}" /&gt; guesses.
+    Would you like to &lt;a href="numberGuess.seam"&gt;play again&lt;/a&gt;?
+  &lt;/f:view&gt;
+&lt;/body&gt;
+&lt;/html&gt;
+</programlisting>
+			</example><para>
+				As is <literal>lose.jsp</literal> (which I can not be bothered copy/pasting). Finally, the JavaBean Seam component:
+			</para>
+			<example><title></title>
+			<!--	<programlistingco>
+				<areaspec>
+					<area coords="12" id="numberguess-create" />
+					<area coords="13" id="numberguess-begin" />
+				</areaspec> -->
+<programlisting>@Name("numberGuess")
+ at Scope(ScopeType.CONVERSATION)
+public class NumberGuess {
+   
+   private int randomNumber;
+   private Integer currentGuess;
+   private int biggest;
+   private int smallest;
+   private int guessCount;
+   private int maxGuesses;
+   
+   @Create 
+   @Begin(pageflow="numberGuess")
+   public void begin()
+   {
+      randomNumber = new Random().nextInt(100);
+      guessCount = 0;
+      biggest = 100;
+      smallest = 1;
+   }
+   
+   public void setCurrentGuess(Integer guess)
+   {
+      this.currentGuess = guess;
+   }
+   
+   public Integer getCurrentGuess()
+   {
+      return currentGuess;
+   }
+   
+   public void guess()
+   {
+      if (currentGuess&gt;randomNumber)
+      {
+         biggest = currentGuess - 1;
+      }
+      if (currentGuess&lt;randomNumber)
+      {
+         smallest = currentGuess + 1;
+      }
+      guessCount ++;
+   }
+   
+   public boolean isCorrectGuess()
+   {
+      return currentGuess==randomNumber;
+   }
+   
+   public int getBiggest()
+   {
+      return biggest;
+   }
+   
+   public int getSmallest()
+   {
+      return smallest;
+   }
+   
+   public int getGuessCount()
+   {
+      return guessCount;
+   }
+   
+   public boolean isLastGuess()
+   {
+      return guessCount==maxGuesses;
+   }
+
+   public int getRemainingGuesses() {
+      return maxGuesses-guessCount;
+   }
+
+   public void setMaxGuesses(int maxGuesses) {
+      this.maxGuesses = maxGuesses;
+   }
+
+   public int getMaxGuesses() {
+      return maxGuesses;
+   }
+
+   public int getRandomNumber() {
+      return randomNumber;
+   }
+}
+</programlisting>
+				<orderedlist>
+					<listitem>
+						<para>
+							The first time a JSP page asks for a <literal>numberGuess</literal> component, Seam will create a new one for it, and the <literal>@Create</literal> method will be invoked, allowing the component to initialize itself.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							The <literal>@Begin</literal> annotation starts a Seam <emphasis>conversation</emphasis> (much more about that later), and specifies the pageflow definition to use for the conversation&#39;s page flow.
+						</para>
+					</listitem>
+				</orderedlist>
+		<!--	</programlistingco> -->
+			
+			</example><para>
+				As you can see, this Seam component is pure business logic! It does not need to know anything at all about the user interaction flow. This makes the component potentially more reuseable.
+			</para>
+		</section>
+		
+		<!--  <section id="Seam_Reference_Guide-Seam_pageflow_the_numberguess_example-How_it_works">
+			<title>How it works</title>
+			<para>
+				TODO
+			</para>
+		</section> -->
+
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_Tutorial-A_complete_Seam_application_the_Hotel_Booking_example">
+		<title>A complete Seam application: the Hotel Booking example</title>
+		<section id="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-Introduction">
+			<title>Introduction</title>
+			<para>
+				The booking application is a complete hotel room reservation system incorporating the following features:
+			</para>
+			<itemizedlist>
+				<listitem>
+					<para>
+						User registration
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						Login
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						Logout
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						Set password
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						Hotel search
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						Hotel selection
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						Room reservation
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						Reservation confirmation
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						Existing reservation list
+					</para>
+				</listitem>
+			</itemizedlist>
+		<para>
+			<figure id="Booking_Image">
+				<title>Booking Example</title>
+				<mediaobject>
+					<imageobject>
+						<imagedata align="center" fileref="images/booking.png" />
+					</imageobject>
+				</mediaobject>
+			</figure>
+		</para>
+			
+			<para>
+				The booking application uses JSF, EJB 3.0 and Seam, together with Facelets for the view. There is also a port of this application to JSF, Facelets, Seam, JavaBeans and Hibernate3.
+			</para>
+			<para>
+				One of the things you will notice if you play with this application for long enough is that it is extremely <emphasis>robust</emphasis>. You can play with back buttons and browser refresh and opening multiple windows and entering nonsensical data as much as you like and you will find it very difficult to make the application crash. You might think that we spent weeks testing and fixing bugs to achive this. Actually, this is not the case. Seam was designed to make it very straightforward to build robust web applications and a lot of robustness that you are probably used to having to code yourself comes naturally and automatically with Seam.
+			</para>
+			<para>
+				As you browse the sourcecode of the example application, and learn how the application works, observe how the declarative state management and integrated validation has been used to achieve this robustness.
+			</para>
+		</section>
+		
+		<section id="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-Overview_of_the_booking_example">
+			<title>Overview of the booking example</title>
+			<para>
+				The project structure is identical to the previous one, to install and deploy this application, please refer to <xref linkend="Seam_Reference_Guide-Seam_Tutorial-Try_the_examples" />. Once you have successfully started the application, you can access it by pointing your browser to <ulink url="http://localhost:8080/seam-booking/"><literal>http://localhost:8080/seam-booking/</literal></ulink>
+			</para>
+			<para>
+				Just nine classes (plus six session beans local interfaces) where used to implement this application. Six session bean action listeners contain all the business logic for the listed features.
+			</para>
+			<itemizedlist>
+				<listitem>
+					<para><literal>BookingListAction</literal> retrieves existing bookings for the currently logged in user.</para>
+				</listitem>
+				<listitem>
+					<para><literal>ChangePasswordAction</literal> updates the password of the currently logged in user.</para>
+				</listitem>
+				<listitem>
+					<para><literal>HotelBookingAction</literal> implements the core functionality of the application: hotel room searching, selection, booking and booking confirmation. This functionality is implemented as a <emphasis>conversation</emphasis>, so this is the most interesting class in the application.</para>
+				</listitem>
+				<listitem>
+					<para><literal>RegisterAction</literal> registers a new system user.</para>
+				</listitem>
+			</itemizedlist>
+			<para>
+				Three entity beans implement the application&#39;s persistent domain model.
+			</para>
+			<itemizedlist>
+				<listitem>
+					<para>
+						<literal>Hotel</literal> is an entity bean that represents a hotel
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						<literal>Booking</literal> is an entity bean that represents an existing booking
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						<literal>User</literal> is an entity bean to represents a user who can make hotel bookings
+					</para>
+				</listitem>
+			</itemizedlist>
+		</section>
+		
+		<section id="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-Understanding_Seam_conversations">
+			<title>Understanding Seam conversations</title>
+			<para>
+				We encourage you browse the sourcecode at your pleasure. In this tutorial we will concentrate upon one particular piece of functionality: hotel search, selection, booking and confirmation. From the point of view of the user, everything from selecting a hotel to confirming a booking is one continuous unit of work, a <emphasis>conversation</emphasis>. Searching, however, is <emphasis>not</emphasis> part of the conversation. The user can select multiple hotels from the same search results page, in different browser tabs.
+			</para>
+			<para>
+				Most web application architectures have no first class construct to represent a conversation. This causes enormous problems managing state associated with the conversation. Usually, Java web applications use a combination of two techniques: first, some state is thrown into the <literal>HttpSession</literal>; second, persistable state is flushed to the database after every request, and reconstructed from the database at the beginning of each new request.
+			</para>
+			<para>
+				Since the database is the least scalable tier, this often results in an utterly unacceptable lack of scalability. Added latency is also a problem, due to the extra traffic to and from the database on every request. To reduce this redundant traffic, Java applications often introduce a data (second-level) cache that keeps commonly accessed data between requests. This cache is necessarily inefficient, because invalidation is based upon an LRU policy instead of being based upon when the user has finished working with the data. Furthermore, because the cache is shared between many concurrent transactions, we have introduced a whole raft of problem&#39;s associated with keeping the cached state consistent with the database.
+			</para>
+			<para>
+				Now consider the state held in the <literal>HttpSession</literal>. By very careful programming, we might be able to control the size of the session data. This is a lot more difficult than it sounds, since web browsers permit ad hoc non-linear navigation. But suppose we suddenly discover a system requirement that says that a user is allowed to have <emphasis>mutiple concurrent conversations</emphasis>, halfway through the development of the system (this has happened to me). Developing mechanisms to isolate session state associated with different concurrent conversations, and incorporating failsafes to ensure that conversation state is destroyed when the user aborts one of the conversations by closing a browser window or tab can be tough. <!-- (I&#39;ve implemented this stuff twice so far, once for a client application, once for Seam, but I&#39;m famously psychotic). -->
+			</para>
+			<para>
+				Now there is a better way.
+			</para>
+			<para>
+				Seam introduces the <emphasis>conversation context</emphasis> as a first class construct. You can safely keep conversational state in this context, and be assured that it will have a well-defined lifecycle. Even better, you will not need to be continually pushing data back and forth between the application server and the database, since the conversation context is a natural cache of data that the user is currently working with.
+			</para>
+			<para>
+				Usually, the components we keep in the conversation context are stateful session beans. (We can also keep entity beans and JavaBeans in the conversation context.) There is an ancient canard in the Java community that stateful session beans are a scalability killer. This may have been true in 1998 when WebFoobar 1.0 was released. It is no longer true today. Application servers like JBoss 4.0 have extremely sophisticated mechanisms for stateful session bean state replication. (For example, the JBoss EJB3 container performs fine-grained replication, replicating only those bean attribute values which actually changed.) Note that all the traditional technical arguments for why stateful beans are inefficient apply equally to the <literal>HttpSession</literal>, so the practice of shifting state from business tier stateful session bean components to the web session to try and improve performance is unbelievably misguided. It is certainly possible to write unscalable application!
 s using stateful session beans, by using stateful beans incorrectly, or by using them for the wrong thing. But that does not mean you should <emphasis>never</emphasis> use them. Anyway, Seam guides you toward a safe usage model. <!--Welcome to 2005. -->
+			</para>
+		<!--	<para>
+				OK, I&#39;ll stop ranting now, and get back to the tutorial.
+			</para> -->
+			<para>
+				The booking example application shows how stateful components with different scopes can collaborate together to achieve complex behaviors. The main page of the booking application allows the user to search for hotels. The search results are kept in the Seam session scope. When the user navigates to one of these hotels, a conversation begins, and a conversation scoped component calls back to the session scoped component to retrieve the selected hotel.
+			</para>
+			<para>
+				The booking example also demonstrates the use of Ajax4JSF to implement rich client behavior without the use of handwritten JavaScript.
+			</para>
+			<para>
+				The search functionality is implemented using a session-scope stateful session bean, similar to the one we saw in the message list example above.
+			</para>
+		<!--	<example><title></title> -->
+			<!--	<programlistingco>
+				<areaspec>
+					<area coords="1" id="booking-stateful-annotation" />
+					<area coords="4" id="booking-restrict-annotation" />
+					<area coords="16" id="booking-datamodel-annotation" />
+					<area coords="66" id="booking-destroy-annotation" />
+				</areaspec> -->
+<programlisting>@Stateful
+ at Name("hotelSearch")
+ at Scope(ScopeType.SESSION)
+ at Restrict("#{identity.loggedIn}")
+public class HotelSearchingAction implements HotelSearching
+{
+   
+   @PersistenceContext
+   private EntityManager em;
+   
+   private String searchString;
+   private int pageSize = 10;
+   private int page;
+   
+   @DataModel
+   private List&lt;Hotel&gt; hotels;
+   
+   public String find()
+   {
+      page = 0;
+      queryHotels();   
+      return "main";
+   }
+
+   public String nextPage()
+   {
+      page++;
+      queryHotels();
+      return "main";
+   }
+      
+   private void queryHotels()
+   {
+      String searchPattern = searchString==null ? "%" : &#39;%&#39; + 
+         searchString.toLowerCase().replace(&#39;*&#39;, &#39;%&#39;) + &#39;%&#39;;
+      hotels = em.createQuery("select h from Hotel h where lower(h.name) like 
+        :search or lower(h.city) like :search 
+        or lower(h.zip) like :search or lower(h.address) like :search")
+            .setParameter("search", searchPattern)
+            .setMaxResults(pageSize)
+            .setFirstResult( page * pageSize )
+            .getResultList();
+   }
+   
+   public boolean isNextPageAvailable()
+   {
+      return hotels!=null &amp;&amp; hotels.size()==pageSize;
+   }
+   
+   public int getPageSize() {
+      return pageSize;
+   }
+
+   public void setPageSize(int pageSize) {
+      this.pageSize = pageSize;
+   }
+
+   public String getSearchString()
+   {
+      return searchString;
+   }
+
+   public void setSearchString(String searchString)
+   {
+      this.searchString = searchString;
+   }
+   
+   @Destroy @Remove
+   public void destroy() {}
+
+}
+</programlisting>
+				<orderedlist>
+					<listitem>
+						<para>
+							The EJB standard <literal>@Stateful</literal> annotation identifies this class as a stateful session bean. Stateful session beans are scoped to the conversation context by default.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							The <literal>@Restrict</literal> annotation applies a security restriction to the component. It restricts access to the component allowing only logged-in users. The security chapter explains more about security in Seam.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							The <literal>@DataModel</literal> annotation exposes a <literal>List</literal> as a JSF <literal>ListDataModel</literal>. This makes it easy to implement clickable lists for search screens. In this case, the list of hotels is exposed to the page as a <literal>ListDataModel</literal> in the conversation variable named <literal>hotels</literal>.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							The EJB standard <literal>@Remove</literal> annotation specifies that a stateful session bean should be removed and its state destroyed after invocation of the annotated method. In Seam, all stateful session beans should define a method marked <literal>@Destroy @Remove</literal>. This is the EJB remove method that will be called when Seam destroys the session context. Actually, the <literal>@Destroy</literal> annotation is of more general usefulness, since it can be used for any kind of cleanup that should happen when any Seam context ends. If you do not have an <literal>@Destroy @Remove</literal> method, state will leak and you will suffer performance problems.
+						</para>
+					</listitem>
+				</orderedlist>
+		<!--	</programlistingco> -->
+			
+		<!--	</example>--><para>
+				The main page of the application is a Facelets page. Let us look at the fragment which relates to searching for hotels:
+			</para>
+		<!--	<example><title></title>-->
+			<!--	<programlistingco>
+				<areaspec>
+					<area coords="11" id="booking-support-element" />
+					<area coords="18" id="booking-status-element" />
+					<area coords="35" id="booking-outputpanel-element" />
+					<area coords="58" id="booking-link-element" />
+				</areaspec> -->
+<programlisting>&lt;div class="section"&gt;
+&lt;h:form&gt;
+  
+  &lt;span class="errors"&gt;
+    &lt;h:messages globalOnly="true"/&gt;
+  &lt;/span&gt;
+    
+  &lt;h1&gt;Search Hotels&lt;/h1&gt;
+  &lt;fieldset&gt; 
+     &lt;h:inputText value="#{hotelSearch.searchString}" style="width: 165px;"&gt;
+        &lt;a:support event="onkeyup" actionListener="#{hotelSearch.find}" 
+                   reRender="searchResults" /&gt;
+     &lt;/h:inputText&gt;
+     &#160;
+     &lt;a:commandButton value="Find Hotels" action="#{hotelSearch.find}" 
+                      styleClass="button" reRender="searchResults"/&gt;
+     &#160;
+     &lt;a:status&gt;
+        &lt;f:facet name="start"&gt;
+           &lt;h:graphicImage value="/img/spinner.gif"/&gt;
+        &lt;/f:facet&gt;
+     &lt;/a:status&gt;
+     &lt;br/&gt;
+     &lt;h:outputLabel for="pageSize"&gt;Maximum results:&lt;/h:outputLabel&gt;&#160;
+     &lt;h:selectOneMenu value="#{hotelSearch.pageSize}" id="pageSize"&gt;
+        &lt;f:selectItem itemLabel="5" itemValue="5"/&gt;
+        &lt;f:selectItem itemLabel="10" itemValue="10"/&gt;
+        &lt;f:selectItem itemLabel="20" itemValue="20"/&gt;
+     &lt;/h:selectOneMenu&gt;
+  &lt;/fieldset&gt;
+    
+&lt;/h:form&gt;
+&lt;/div&gt;
+
+&lt;a:outputPanel id="searchResults"&gt;
+  &lt;div class="section"&gt;
+  &lt;h:outputText value="No Hotels Found" 
+                rendered="#{hotels != null and hotels.rowCount==0}"/&gt;
+  &lt;h:dataTable value="#{hotels}" var="hot" rendered="#{hotels.rowCount&gt;0}"&gt;
+    &lt;h:column&gt;
+      &lt;f:facet name="header"&gt;Name&lt;/f:facet&gt;
+      #{hot.name}
+    &lt;/h:column&gt;
+    &lt;h:column&gt;
+      &lt;f:facet name="header"&gt;Address&lt;/f:facet&gt;
+      #{hot.address}
+    &lt;/h:column&gt;
+    &lt;h:column&gt;
+      &lt;f:facet name="header"&gt;City, State&lt;/f:facet&gt;
+      #{hot.city}, #{hot.state}, #{hot.country}
+    &lt;/h:column&gt; 
+    &lt;h:column&gt;
+      &lt;f:facet name="header"&gt;Zip&lt;/f:facet&gt;
+      #{hot.zip}
+    &lt;/h:column&gt;
+    &lt;h:column&gt;
+      &lt;f:facet name="header"&gt;Action&lt;/f:facet&gt;
+      &lt;s:link value="View Hotel" action="#{hotelBooking.selectHotel(hot)}"/&gt;
+    &lt;/h:column&gt;
+  &lt;/h:dataTable&gt;
+  &lt;s:link value="More results" action="#{hotelSearch.nextPage}" 
+          rendered="#{hotelSearch.nextPageAvailable}"/&gt;
+  &lt;/div&gt;
+&lt;/a:outputPanel&gt;
+</programlisting>
+				<orderedlist>
+					<listitem>
+						<para>
+							The Ajax4JSF <literal>&lt;a:support&gt;</literal> tag allows a JSF action event listener to be called by asynchronous <literal>XMLHttpRequest</literal> when a JavaScript event like <literal>onkeyup</literal> occurs. Even better, the <literal>reRender</literal> attribute lets us render a fragment of the JSF page and perform a partial page update when the asynchronous response is received.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							The Ajax4JSF <literal>&lt;a:status&gt;</literal> tag lets us display a cheesy annimated image while we wait for asynchronous requests to return.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							The Ajax4JSF <literal>&lt;a:outputPanel&gt;</literal> tag defines a region of the page which can be re-rendered by an asynchronous request.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							The Seam <literal>&lt;s:link&gt;</literal> tag lets us attach a JSF action listener to an ordinary (non-JavaScript) HTML link. The advantage of this over the standard JSF <literal>&lt;h:commandLink&gt;</literal> is that it preserves the operation of "open in new window" and "open in new tab". Also notice that we use a method binding with a parameter: <literal>#{hotelBooking.selectHotel(hot)}</literal>. This is not possible in the standard Unified EL, but Seam provides an extension to the EL that lets you use parameters on any method binding expression.
+						</para>
+					</listitem>
+				</orderedlist>
+		<!--	</programlistingco> -->
+			
+		<!--	</example>--><para>
+				This page displays the search results dynamically as we type, and lets us choose a hotel and pass it to the <literal>selectHotel()</literal> method of the <literal>HotelBookingAction</literal>, which is where the <emphasis>really</emphasis> interesting stuff is going to happen.
+			</para>
+			<para>
+				Now lets see how the booking example application uses a conversation-scoped stateful session bean to achieve a natural cache of persistent data related to the conversation. The following code example is pretty long. But if you think of it as a list of scripted actions that implement the various steps of the conversation, it is understandable. Read the class from top to bottom, as if it were a story.
+			</para>
+	<!--		<example><title></title> -->
+			<!--	<programlistingco>
+				<areaspec>
+					<area coords="7" id="booking-extendedpersistencecontext-annotation" />
+					<area coords="10" id="booking-out-annotation" />
+					<area coords="29" id="booking-begin-annotation" />
+					<area coords="61" id="booking-end-annotation" />
+					<area coords="78" id="booking-dest-annotation" />
+				</areaspec> -->
+<programlisting>@Stateful
+ at Name("hotelBooking")
+ at Restrict("#{identity.loggedIn}")
+public class HotelBookingAction implements HotelBooking
+{
+   
+   @PersistenceContext(type=EXTENDED)
+   private EntityManager em;
+   
+   @In 
+   private User user;
+   
+   @In(required=false) @Out
+   private Hotel hotel;
+   
+   @In(required=false) 
+   @Out(required=false)
+   private Booking booking;
+     
+   @In
+   private FacesMessages facesMessages;
+      
+   @In
+   private Events events;
+   
+   @Logger 
+   private Log log;
+   
+   @Begin
+   public String selectHotel(Hotel selectedHotel)
+   {
+      hotel = em.merge(selectedHotel);
+      return "hotel";
+   }
+   
+   public String bookHotel()
+   {      
+      booking = new Booking(hotel, user);
+      Calendar calendar = Calendar.getInstance();
+      booking.setCheckinDate( calendar.getTime() );
+      calendar.add(Calendar.DAY_OF_MONTH, 1);
+      booking.setCheckoutDate( calendar.getTime() );
+      
+      return "book";
+   }
+
+   public String setBookingDetails()
+   {
+      if (booking==null || hotel==null) return "main";
+      if ( !booking.getCheckinDate().before( booking.getCheckoutDate() ) )
+      {
+         facesMessages.add("Check out date must be later than check in date");
+         return null;
+      }
+      else
+      {
+         return "confirm";
+      }
+   }
+
+   @End
+   public String confirm()
+   {
+      if (booking==null || hotel==null) return "main";
+      em.persist(booking);
+      facesMessages.add
+       ("Thank you, #{user.name}, your confimation number for #{hotel.name} is #{booking.id}");
+      log.info("New booking: #{booking.id} for #{user.username}");
+      events.raiseEvent("bookingConfirmed");
+      return "confirmed";
+   }
+   
+   @End
+   public String cancel()
+   {
+      return "main";
+   }
+   
+   @Destroy @Remove
+   public void destroy() {}
+
+}
+</programlisting>
+				<orderedlist>
+					<listitem>
+						<para>
+							This bean uses an EJB3 <emphasis>extended persistence context</emphasis>, so that any entity instances remain managed for the whole lifecycle of the stateful session bean.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							The <literal>@Out</literal> annotation declares that an attribute value is <emphasis>outjected</emphasis> to a context variable after method invocations. In this case, the context variable named <literal>hotel</literal> will be set to the value of the <literal>hotel</literal> instance variable after every action listener invocation completes.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							The <literal>@Begin</literal> annotation specifies that the annotated method begins a <emphasis>long-running conversation</emphasis>, so the current conversation context will not be destroyed at the end of the request. Instead, it will be reassociated with every request from the current window, and destroyed either by timeout due to conversation inactivity or invocation of a matching <literal>@End</literal> method.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							The <literal>@End</literal> annotation specifies that the annotated method ends the current long-running conversation, so the current conversation context will be destroyed at the end of the request.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							This EJB remove method will be called when Seam destroys the conversation context and must always be defined.
+						</para>
+					</listitem>
+				</orderedlist>
+		<!--	</programlistingco> -->
+			
+		<!--	</example>--><para>
+				<literal>HotelBookingAction</literal> contains all the action listener methods that implement selection, booking and booking confirmation, and holds state related to this work in its instance variables. We think you will agree that this code is much cleaner and simpler than getting and setting <literal>HttpSession</literal> attributes.
+			</para>
+			<para>
+				Even better, a user can have multiple isolated conversations per login session. Try it! Log in, run a search, and navigate to different hotel pages in multiple browser tabs. You will be able to work on creating two different hotel reservations at the same time. If you leave any one conversation inactive for long enough, Seam will eventually time out that conversation and destroy its state. If, after ending a conversation, you backbutton to a page of that conversation and try to perform an action, Seam will detect that the conversation was already ended, and redirect you to the search page.
+			</para>
+		</section>
+		
+		<section id="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-The_Seam_UI_control_library">
+			<title>The Seam UI control library</title>
+			<para>
+				If you check inside the WAR file for the booking application, you will find <literal>seam-ui.jar</literal> in the <literal>WEB-INF/lib</literal> directory. This package contains a number of JSF custom controls that integrate with Seam. The booking application uses the <literal>&lt;s:link&gt;</literal> control for navigation from the search screen to the hotel page:
+			</para>
+<programlisting>&lt;s:link value="View Hotel" action="#{hotelBooking.selectHotel}"/&gt;</programlisting>
+			<para>
+				The use of <literal>&lt;s:link&gt;</literal> here allows us to attach an action listener to a HTML link without breaking the browser&#39;s "open in new window" feature. The standard JSF <literal>&lt;h:commandLink&gt;</literal> does not work with "open in new window". We&#39;ll see later that <literal>&lt;s:link&gt;</literal> also offers a number of other useful features, including conversation propagation rules.
+			</para>
+			<para>
+				The booking application uses some other Seam and Ajax4JSF controls, especially on the <literal>/book.xhtml</literal> page. We will not get into the details of those controls here, but if you want to understand this code, please refer to the chapter covering Seam&#39;s functionality for JSF form validation.
+			</para>
+		</section>
+		
+		<section id="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-The_Seam_Debug_Page">
+			<title>The Seam Debug Page</title>
+			<para>
+				The WAR also includes <literal>seam-debug.jar</literal>. If this jar is deployed in <literal>WEB-INF/lib</literal>, along with the Facelets, and if you set the following Seam property in <literal>web.xml</literal> or <literal>seam.properties</literal>:
+			</para>
+<programlisting>&lt;context-param&gt;
+    &lt;param-name&gt;org.jboss.seam.core.init.debug&lt;/param-name&gt;
+    &lt;param-value&gt;true&lt;/param-value&gt;
+&lt;/context-param&gt;
+</programlisting>
+			<para>
+				Then the Seam debug page will be available. This page lets you browse and inspect the Seam components in any of the Seam contexts associated with your current login session. Just point your browser at <ulink url="http://localhost:8080/seam-booking/debug.seam"><literal>http://localhost:8080/seam-booking/debug.seam</literal></ulink>.
+			</para>
+			<mediaobject>
+				<imageobject role="fo">
+					<imagedata align="center" fileref="images/debug.png" />
+				</imageobject>
+			<!--	<imageobject role="html">
+					<imagedata align="center" fileref="../shared/images/debug.png" />
+				</imageobject> -->
+			</mediaobject>
+		</section>
+
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_Tutorial-A_complete_application_featuring_Seam_and_jBPM_the_DVD_Store_example">
+		<title>A complete application featuring Seam and jBPM: the DVD Store example</title>
+		<para>
+			The DVD Store demo application shows the practical usage of jBPM for both task management and pageflow.
+		</para>
+		<para>
+			The user screens take advantage of a jPDL pageflow to implement searching and shopping cart functionality.
+		</para>
+		<screenshot><screeninfo>DVD Store example</screeninfo><mediaobject>
+			<imageobject role="fo">
+				<imagedata align="center" fileref="images/dvdsearch.png" />
+			</imageobject>
+		<!--	<imageobject role="html">
+				<imagedata align="center" fileref="../shared/images/dvdsearch.png" />
+			</imageobject> -->
+		</mediaobject>
+		</screenshot>
+		<para>
+			The administration screens take use jBPM to manage the approval and shipping cycle for orders. The business process may even be changed dynamically, by selecting a different process definition!
+		</para>
+		<screenshot><screeninfo>DVD Store example</screeninfo><mediaobject>
+			<imageobject role="fo">
+				<imagedata align="center" fileref="images/dvdtasks.png" />
+			</imageobject>
+	<!--	<imageobject role="html">
+				<imagedata align="center" fileref="../shared/images/dvdtasks.png" />
+			</imageobject> -->
+			</mediaobject>
+		  </screenshot>
+	<!--  <para>
+			TODO
+		</para>
+		<para>
+			Look in the <literal>dvdstore</literal> directory.
+		</para> -->
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_Tutorial-A_complete_application_featuring_Seam_workspace_management_the_Issue_Tracker_example">
+		<title>A complete application featuring Seam workspace management: the Issue Tracker example</title>
+		<para>
+			The Issue Tracker demo shows off Seam&#39;s workspace management functionality: the conversation switcher, conversation list and breadcrumbs.
+		</para>
+		<para>
+			<note>
+				<para>To log into the Issue Tracker demo you must provide a username and password. You can find this in the <filename>resources/import.sql</filename> file or use "gavin" and "foobar" for username and password respectively.</para>
+			</note>
+		</para>
+		<screenshot><screeninfo>DVD Store example</screeninfo>
+		<mediaobject>
+			<imageobject role="fo">
+				<imagedata align="center" fileref="images/issues.png" />
+			</imageobject>
+		<!--	<imageobject role="html">
+				<imagedata align="center" fileref="../shared/images/issues.png" />
+			</imageobject> -->
+		</mediaobject>
+	 </screenshot>
+	 <!-- <para>
+			TODO
+		</para> -->
+		<!-- <para>
+			Look in the <literal>issues</literal> directory.
+		</para> --> 
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_Tutorial-An_example_of_Seam_with_Hibernate_the_Hibernate_Booking_example">
+		<title>An example of Seam with Hibernate: the Hibernate Booking example</title>
+		<para>
+			The Hibernate Booking demo is a straight port of the Booking demo to an alternative architecture that uses Hibernate for persistence and JavaBeans instead of session beans.
+		</para>
+	<!--  <para>
+			TODO
+		</para>
+		<para>
+			Look in the <literal>hibernate</literal> directory.
+		</para> -->
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_Tutorial-A_RESTful_Seam_application_the_Blog_example">
+		<title>A RESTful Seam application: the Blog example</title>
+		<para>
+			Seam makes it very easy to implement applications which keep state on the server-side. However, server-side state is not always appropriate, especially in for functionality that serves up <emphasis>content</emphasis>. For this kind of problem we often need to let the user bookmark pages and have a relatively stateless server, so that any page can be accessed at any time, via the bookmark. The Blog example shows how to a implement RESTful application using Seam. Every page of the application can be bookmarked, including the search results page.
+		</para>
+		<screenshot><screeninfo>Blog example</screeninfo><mediaobject>
+			<imageobject role="fo">
+				<imagedata align="center" fileref="images/blog.png" />
+			</imageobject>
+		<!--	<imageobject role="html">
+				<imagedata align="center" fileref="../shared/images/blog.png" />
+			</imageobject> -->
+		</mediaobject>
+		</screenshot><para>
+			The Blog example demonstrates the use of "pull"-style MVC, where instead of using action listener methods to retrieve data and prepare the data for the view, the view pulls data from components as it is being rendered.
+		</para>
+		<section id="Seam_Reference_Guide-A_RESTful_Seam_application_the_Blog_example-Using_pull_style_MVC">
+			<title>Using "pull"-style MVC</title>
+			<para>
+				This snippet from the <literal>index.xhtml</literal> facelets page displays a list of recent blog entries:
+			</para>
+			<example><title></title><programlisting>&lt;h:dataTable value="#{blog.recentBlogEntries}" var="blogEntry" rows="3"&gt;
+   &lt;h:column&gt;
+      &lt;div class="blogEntry"&gt;
+         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;
+         &lt;div&gt;
+            &lt;h:outputText escape="false" 
+                  value="#{blogEntry.excerpt==null ? blogEntry.body : blogEntry.excerpt}"/&gt;
+         &lt;/div&gt;
+         &lt;p&gt;
+            &lt;h:outputLink value="entry.seam" rendered="#{blogEntry.excerpt!=null}"&gt;
+               &lt;f:param name="blogEntryId" value="#{blogEntry.id}"/&gt;
+               Read more...
+            &lt;/h:outputLink&gt;
+         &lt;/p&gt;
+         &lt;p&gt;
+            [Posted on 
+            &lt;h:outputText value="#{blogEntry.date}"&gt;
+               &lt;f:convertDateTime timeZone="#{blog.timeZone}" locale="#{blog.locale}" 
+                                     type="both"/&gt;
+            &lt;/h:outputText&gt;]
+            &#160;
+            &lt;h:outputLink value="entry.seam"&gt;[Link]
+               &lt;f:param name="blogEntryId" value="#{blogEntry.id}"/&gt;
+            &lt;/h:outputLink&gt;
+         &lt;/p&gt;
+      &lt;/div&gt;
+   &lt;/h:column&gt;
+&lt;/h:dataTable&gt;
+</programlisting>
+			</example><para>
+				If we navigate to this page from a bookmark, how does the data used by the <literal>&lt;h:dataTable&gt;</literal> actually get initialized? Well, what happens is that the <literal>Blog</literal> is retrieved lazily&mdash;"pulled"&mdash;when needed, by a Seam component named <literal>blog</literal>. This is the opposite flow of control to what is usual in traditional web action-based frameworks like Struts.
+			</para>
+			<example><title></title>
+			<!--	<programlistingco>
+				<areaspec>
+					<area coords="6" id="blog-seampc" />
+					<area coords="9" id="blog-unwrap" />
+				</areaspec> -->
+<programlisting>@Name("blog")
+ at Scope(ScopeType.STATELESS)
+public class BlogService 
+{
+   
+   @In
+   private EntityManager entityManager;
+  
+   @Unwrap
+   public Blog getBlog()
+   {
+      return (Blog) entityManager.createQuery("from Blog b left join fetch b.blogEntries")
+            .setHint("org.hibernate.cacheable", true)
+            .getSingleResult();
+   }
+
+}
+</programlisting>
+				<orderedlist>
+					<listitem>
+						<para>
+							This component uses a <emphasis>seam-managed persistence context</emphasis>. Unlike the other examples we have seen, this persistence context is managed by Seam, instead of by the EJB3 container. The persistence context spans the entire web request, allowing us to avoid any exceptions that occur when accessing unfetched associations in the view.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							The <literal>@Unwrap</literal> annotation tells Seam to provide the return value of the method&mdash;the <literal>Blog</literal>&mdash;instead of the actual <literal>BlogService</literal> component to clients. This is the Seam <emphasis>manager component pattern</emphasis>.
+						</para>
+					</listitem>
+				</orderedlist>
+		<!--	</programlistingco> -->
+			
+			</example><para>
+				This is good so far, but what about bookmarking the result of form submissions, such as a search results page?
+			</para>
+		</section>
+		
+		<section id="Seam_Reference_Guide-A_RESTful_Seam_application_the_Blog_example-Bookmarkable_search_results_page">
+			<title>Bookmarkable search results page</title>
+			<para>
+				The blog example has a tiny form in the top right of each page that allows the user to search for blog entries. This is defined in a file, <literal>menu.xhtml</literal>, included by the facelets template, <literal>template.xhtml</literal>:
+			</para>
+			<example><title></title><programlisting>&lt;div id="search"&gt;
+   &lt;h:form&gt;
+      &lt;h:inputText value="#{searchAction.searchPattern}"/&gt;
+      &lt;h:commandButton value="Search" action="/search.xhtml"/&gt;
+   &lt;/h:form&gt;
+&lt;/div&gt;
+</programlisting>
+			</example><para>
+				To implement a bookmarkable search results page, we need to perform a browser redirect after processing the search form submission. Because we used the JSF view id as the action outcome, Seam automatically redirects to the view id when the form is submitted. Alternatively, we could have defined a navigation rule like this:
+			</para>
+			<example><title></title><programlisting>&lt;navigation-rule&gt;
+   &lt;navigation-case&gt;
+      &lt;from-outcome&gt;searchResults&lt;/from-outcome&gt;
+      &lt;to-view-id&gt;/search.xhtml&lt;/to-view-id&gt;
+      &lt;redirect/&gt;
+   &lt;/navigation-case&gt;
+&lt;/navigation-rule&gt;
+</programlisting>
+			</example><para>
+				Then the form would have looked like this:
+			</para>
+			<example><title></title><programlisting>&lt;div id="search"&gt;
+   &lt;h:form&gt;
+      &lt;h:inputText value="#{searchAction.searchPattern}"/&gt;
+      &lt;h:commandButton value="Search" action="searchResults"/&gt;
+   &lt;/h:form&gt;
+&lt;/div&gt;
+</programlisting>
+			</example><para>
+				But when we redirect, we need to include the values submitted with the form as request parameters, to get a bookmarkable URL like <literal>http://localhost:8080/seam-blog/search.seam?searchPattern=seam</literal>. JSF does not provide an easy way to do this, but Seam does. We use a Seam <emphasis>page parameter</emphasis>, defined in <literal>WEB-INF/pages.xml</literal>:
+			</para>
+			<example><title></title><programlisting>&lt;pages&gt;
+   &lt;page view-id="/search.xhtml"&gt;
+      &lt;param name="searchPattern" value="#{searchService.searchPattern}"/&gt;
+   &lt;/page&gt;
+   ...
+&lt;/pages&gt;
+</programlisting>
+			</example><para>
+				This tells Seam to include the value of <literal>#{searchService.searchPattern}</literal> as a request parameter named <literal>searchPattern</literal> when redirecting to the page, and then re-apply the value of that parameter to the model before rendering the page.
+			</para>
+			<para>
+				The redirect takes us to the <literal>search.xhtml</literal> page:
+			</para>
+			<example><title></title><programlisting>&lt;h:dataTable value="#{searchResults}" var="blogEntry"&gt;
+   &lt;h:column&gt;
+      &lt;div&gt;
+         &lt;h:outputLink value="entry.seam"&gt;
+            &lt;f:param name="blogEntryId" value="#{blogEntry.id}"/&gt;
+            #{blogEntry.title}
+         &lt;/h:outputLink&gt;
+         posted on 
+         &lt;h:outputText value="#{blogEntry.date}"&gt;
+            &lt;f:convertDateTime timeZone="#{blog.timeZone}" locale="#{blog.locale}" type="both"/&gt;
+         &lt;/h:outputText&gt;
+      &lt;/div&gt;
+   &lt;/h:column&gt;
+&lt;/h:dataTable&gt;
+</programlisting>
+			</example><para>
+				Which again uses "pull"-style MVC to retrieve the actual search results:
+			</para>
+			<example><title></title><programlisting>@Name("searchService")
+public class SearchService 
+{
+   
+   @In
+   private EntityManager entityManager;
+   
+   private String searchPattern;
+   
+   @Factory("searchResults")
+   public List&lt;BlogEntry&gt; getSearchResults()
+   {
+      if (searchPattern==null)
+      {
+         return null;
+      }
+      else
+      {
+         return entityManager.createQuery("select be from BlogEntry be where lower(be.title) 
+                               like :searchPattern or lower(be.body) like :searchPattern 
+                               order by be.date desc")
+               .setParameter( "searchPattern", getSqlSearchPattern() )
+               .setMaxResults(100)
+               .getResultList();
+      }
+   }
+
+   private String getSqlSearchPattern()
+   {
+      return searchPattern==null ? "" : &#39;%&#39; + 
+        searchPattern.toLowerCase().replace(&#39;*&#39;, &#39;%&#39;).replace(&#39;?&#39;, &#39;_&#39;) 
+           + &#39;%&#39;;
+   }
+
+   public String getSearchPattern()
+   {
+      return searchPattern;
+   }
+
+   public void setSearchPattern(String searchPattern)
+   {
+      this.searchPattern = searchPattern;
+   }
+
+}
+</programlisting>
+			</example>
+		</section>
+		
+		<section id="Seam_Reference_Guide-A_RESTful_Seam_application_the_Blog_example-Using_push_style_MVC_in_a_RESTful_application">
+			<title>Using "push"-style MVC in a RESTful application</title>
+			<para>
+				Very occasionally, it makes more sense to use push-style MVC for processing RESTful pages, and so Seam provides the notion of a <emphasis>page action</emphasis>. The Blog example uses a page action for the blog entry page, <literal>entry.xhtml</literal>. Note that this is a little bit contrived, it would have been easier to use pull-style MVC here as well.
+			</para>
+			<para>
+				The <literal>entryAction</literal> component works much like an action class in a traditional push-MVC action-oriented framework like Struts:
+			</para>
+			<example><title></title><programlisting>@Name("entryAction")
+ at Scope(STATELESS)
+public class EntryAction
+{
+   @In(create=true) 
+   private Blog blog;
+   
+   @Out
+   private BlogEntry blogEntry;
+   
+   public void loadBlogEntry(String id) throws EntryNotFoundException
+   {
+      blogEntry = blog.getBlogEntry(id);
+      if (blogEntry==null) throw new EntryNotFoundException(id);
+   }
+   
+}
+</programlisting>
+			</example><para>
+				Page actions are also declared in <literal>pages.xml</literal>:
+			</para>
+			<example><title></title><programlisting>&lt;pages&gt;
+   ...
+
+   &lt;page view-id="/entry.xhtml" action="#{entryAction.loadBlogEntry(blogEntry.id)}"&gt;
+      &lt;param name="blogEntryId" value="#{blogEntry.id}"/&gt;
+   &lt;/page&gt;
+
+   &lt;page view-id="/post.xhtml" action="#{loginAction.challenge}"/&gt;
+
+   &lt;page view-id="*" action="#{blog.hitCount.hit}"/&gt;
+
+&lt;/pages&gt;
+</programlisting>
+			</example><para>
+				Notice that the example is using page actions for some other functionality&mdash;the login challenge, and the pageview counter. Also notice the use of a parameter in the page action method binding. This is not a standard feature of JSF EL, but Seam lets you use it, not just for page actions, but also in JSF method bindings.
+			</para>
+			<para>
+				When the <literal>entry.xhtml</literal> page is requested, Seam first binds the page parameter <literal>blogEntryId</literal> to the model, then runs the page action, which retrieves the needed data&mdash;the <literal>blogEntry</literal>&mdash;and places it in the Seam event context. Finally, the following is rendered:
+			</para>
+			<example><title></title><programlisting>&lt;div class="blogEntry"&gt;
+   &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;
+   &lt;div&gt;
+      &lt;h:outputText escape="false" value="#{blogEntry.body}"/&gt;
+   &lt;/div&gt;
+   &lt;p&gt;
+      [Posted on&#160;
+      &lt;h:outputText value="#{blogEntry.date}"&gt;
+         &lt;f:convertDateTime timezone="#{blog.timeZone}" locale="#{blog.locale}" type="both"/&gt;
+      &lt;/h:outputText&gt;]
+   &lt;/p&gt;
+&lt;/div&gt;
+</programlisting>
+			</example><para>
+				If the blog entry is not found in the database, the <literal>EntryNotFoundException</literal> exception is thrown. We want this exception to result in a 404 error, not a 505, so we annotate the exception class:
+			</para>
+			<example><title></title><programlisting>@ApplicationException(rollback=true)
+ at HttpError(errorCode=HttpServletResponse.SC_NOT_FOUND)
+public class EntryNotFoundException extends Exception
+{
+   EntryNotFoundException(String id)
+   {
+      super("entry not found: " + id);
+   }
+}
+</programlisting>
+			</example><para>
+				An alternative implementation of the example does not use the parameter in the method binding:
+			</para>
+			<example><title></title><programlisting>@Name("entryAction")
+ at Scope(STATELESS)
+public class EntryAction
+{
+   @In(create=true) 
+   private Blog blog;
+   
+   @In @Out
+   private BlogEntry blogEntry;
+   
+   public void loadBlogEntry() throws EntryNotFoundException
+   {
+      blogEntry = blog.getBlogEntry( blogEntry.getId() );
+      if (blogEntry==null) throw new EntryNotFoundException(id);
+   }
+   
+}
+</programlisting>
+<programlisting>&lt;pages&gt;
+   ...
+
+   &lt;page view-id="/entry.xhtml" action="#{entryAction.loadBlogEntry}"&gt;
+      &lt;param name="blogEntryId" value="#{blogEntry.id}"/&gt;
+   &lt;/page&gt;
+   
+   ...
+&lt;/pages&gt;
+</programlisting>
+			</example><para>
+				It is a matter of personal choice, which implementation you prefer.
+			</para>
+		</section>
+
+	</section>
+	<!--
+	<section id="Seam_Reference_Guide-Seam_Tutorial-Running_the_Seam_examples_in_JBoss_using_the_JSF_1.2_RI">
+		<title>Running the Seam examples in JBoss using the JSF 1.2 RI</title>
+		<para>
+			JBoss AS 4.0 ships with the Apache MyFaces implementation of JSF 1.1. After many months of waiting, there is <emphasis>still</emphasis> no implementation of JSF 1.2 from MyFaces. For this and other reasons, JBoss AS 4.2 will embed the JSF 1.2 Reference Implementation by default. Soon after the release of 4.2, we will migrate the Seam examples to JSF 1.2.
+		</para>
+		<para>
+			For those who can&#39;t wait, Seam is already compatible with JSF 1.2, and it&#39;s easy to get the Seam examples running with JSF 1.2 in JBoss 4.0.5. Let&#39;s start with the famous booking example:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					copy <literal>jsf-api.jar</literal>, <literal>jsf-impl.jar</literal>, <literal>el-api.jar</literal>, <literal>el-ri.jar</literal> to <literal>server/default/deploy/tomcat/jbossweb-tomcat55.sar/jsf-libs</literal>.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					delete <literal>myfaces-api.jar</literal> and <literal>myfaces-impl.jar</literal> from <literal>server/default/deploy/tomcat/jbossweb-tomcat55.sar/jsf-libs</literal>.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					edit <literal>server/default/deploy/tomcat/jbossweb-tomcat55.sar/conf/web.xml</literal>, replacing <literal>myfaces-impl.jar</literal> with <literal>jsf-impl.jar</literal>.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					edit <literal>examples/booking/resources/WEB-INF/web.xml</literal>, deleting the MyFaces listener, uncommenting the RI listener
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					edit <literal>examples/booking/resources/WEB-INF/faces-config.xml</literal>, uncommenting the lines that install the <literal>SeamELResolver</literal> using the new JSF 1.2 XML schema declaration.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					edit <literal>examples/booking/resources/META-INF/application.xml</literal>, deleting the lines that declare <literal>el-api.jar</literal> and <literal>el-impl.jar</literal> as Java modules.
+				</para>
+			</listitem>
+		</itemizedlist>
+		<para>
+			Restart JBoss, and type <literal>ant</literal> in the <literal>examples/booking</literal> directory.
+		</para>
+	</section>
+	-->
+
+</chapter>
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Validation.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Validation.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Validation.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,232 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Seam_Reference_Guide-JSF_form_validation_in_Seam">
+	<title>JSF form validation in Seam</title>
+	<para>
+		In plain JSF, validation is defined in the view:
+	</para>
+<programlisting>&lt;h:form&gt;
+    &lt;h:messages/&gt;
+
+    &lt;div&gt;
+        Country:
+        &lt;h:inputText value="#{location.country}" required="true"&gt;
+            &lt;my:validateCountry/&gt;
+        &lt;/h:inputText&gt;
+    &lt;/div&gt;
+    
+    &lt;div&gt;
+        Zip code:
+        &lt;h:inputText value="#{location.zip}" required="true"&gt;
+            &lt;my:validateZip/&gt;
+        &lt;/h:inputText&gt;
+    &lt;/div&gt;
+
+    &lt;h:commandButton/&gt;
+&lt;/h:form&gt;
+</programlisting>
+	<para>
+		In practice, this approach usually violates DRY, since most validation actually enforces constraints that are part of the data model, and exist all the way down to the database schema definition. Seam provides support for model-based constraints defined using Hibernate Validator.
+	</para>
+	<para>
+		Let us start by defining our constraints, on our <literal>Location</literal> class:
+	</para>
+<programlisting>public class Location {
+    private String country;
+    private String zip;
+    
+    @NotNull
+    @Length(max=30)
+    public String getCountry() { return country; }
+    public void setCountry(String c) { country = c; }
+
+    @NotNull
+    @Length(max=6)
+    @Pattern("^\d*$")
+    public String getZip() { return zip; }
+    public void setZip(String z) { zip = z; }
+}
+</programlisting>
+	<para>
+		Well, that is a decent first cut, but in practice it might be more elegant to use custom constraints instead of the ones built into Hibernate Validator:
+	</para>
+<programlisting>public class Location {
+    private String country;
+    private String zip;
+    
+    @NotNull
+    @Country
+    public String getCountry() { return country; }
+    public void setCountry(String c) { country = c; }
+
+    @NotNull
+    @ZipCode
+    public String getZip() { return zip; }
+    public void setZip(String z) { zip = z; }
+}
+</programlisting>
+	<para>
+		Whichever route we take, we no longer need to specify the type of validation to be used in the JSF page. Instead, we can use <literal>&lt;s:validate&gt;</literal> to validate against the constraint defined on the model object.
+	</para>
+<programlisting>&lt;h:form&gt;
+    &lt;h:messages/&gt;
+
+    &lt;div&gt;
+        Country:
+        &lt;h:inputText value="#{location.country}" required="true"&gt;
+            &lt;s:validate/&gt;
+        &lt;/h:inputText&gt;
+    &lt;/div&gt;
+    
+    &lt;div&gt;
+        Zip code:
+        &lt;h:inputText value="#{location.zip}" required="true"&gt;
+            &lt;s:validate/&gt;
+        &lt;/h:inputText&gt;
+    &lt;/div&gt;
+    
+    &lt;h:commandButton/&gt;
+
+&lt;/h:form&gt;
+</programlisting>
+	<para>
+		<emphasis>Note:</emphasis> specifying <literal>@NotNull</literal> on the model does <emphasis>not</emphasis> eliminate the requirement for <literal>required="true"</literal> to appear on the control! This is due to a limitation of the JSF validation architecture.
+	</para>
+	<para>
+		This approach <emphasis>defines</emphasis> constraints on the model, and <emphasis>presents</emphasis> constraint violations in the view&mdash;a significantly better design.
+	</para>
+	<para>
+		However, it is not much less verbose than what we started with, so let us try <literal>&lt;s:validateAll&gt;</literal>:
+	</para>
+<programlisting>&lt;h:form&gt;
+    
+    &lt;h:messages/&gt;
+
+    &lt;s:validateAll&gt;
+
+        &lt;div&gt;
+            Country:
+            &lt;h:inputText value="#{location.country}" required="true"/&gt;
+        &lt;/div&gt;
+
+        &lt;div&gt;
+            Zip code:
+            &lt;h:inputText value="#{location.zip}" required="true"/&gt;
+        &lt;/div&gt;
+
+        &lt;h:commandButton/&gt;
+
+    &lt;/s:validateAll&gt;
+
+&lt;/h:form&gt;
+</programlisting>
+	<para>
+		This tag simply adds an <literal>&lt;s:validate&gt;</literal> to every input in the form. For a large form, it can save a lot of typing.
+	</para>
+	<para>
+		Now we need to do something about displaying feedback to the user when validation fails. Currently we are displaying all messages at the top of the form. What we would really like to do is display the message next to the field with the error (this is possible in plain JSF), highlight the field and label (this is not possible) and, for good measure, display some image next the the field (also not possible). We also want to display a little colored asterisk next to the label for each required form field.
+	</para>
+	<para>
+		That is quite a lot of functionality we need for each field of our form. We would not want to have to specify higlighting and the layout of the image, message and input field for every field on the form. So, instead, we will specify the common layout in a facelets template:
+	</para>
+<programlisting>&lt;ui:composition xmlns="http://www.w3.org/1999/xhtml"
+                xmlns:ui="http://java.sun.com/jsf/facelets"
+                xmlns:h="http://java.sun.com/jsf/html"
+                xmlns:f="http://java.sun.com/jsf/core"
+                xmlns:s="http://jboss.com/products/seam/taglib"&gt;
+                 
+    &lt;div&gt;
+    
+        &lt;s:label styleClass="#{invalid?&#39;error&#39;:&#39;&#39;}"&gt;
+            &lt;ui:insert name="label"/&gt;
+            &lt;s:span styleClass="required" rendered="#{required}"&gt;*&lt;/s:span&gt;
+        &lt;/s:label&gt;
+        
+        &lt;span class="#{invalid?&#39;error&#39;:&#39;&#39;}"&gt;
+            &lt;h:graphicImage src="img/error.gif" rendered="#{invalid}"/&gt;
+            &lt;s:validateAll&gt;
+                &lt;ui:insert/&gt;
+            &lt;/s:validateAll&gt;
+        &lt;/span&gt;
+        
+        &lt;s:message styleClass="error"/&gt;
+        
+    &lt;/div&gt;
+    
+&lt;/ui:composition&gt;
+</programlisting>
+	<para>
+		We can include this template for each of our form fields using <literal>&lt;s:decorate&gt;</literal>.
+	</para>
+<programlisting>&lt;h:form&gt;
+
+    &lt;h:messages globalOnly="true"/&gt;
+
+    &lt;s:decorate template="edit.xhtml"&gt;
+        &lt;ui:define name="label"&gt;Country:&lt;/ui:define&gt;
+        &lt;h:inputText value="#{location.country}" required="true"/&gt;
+    &lt;/s:decorate&gt;
+    
+    &lt;s:decorate template="edit.xhtml"&gt;
+        &lt;ui:define name="label"&gt;Zip code:&lt;/ui:define&gt;
+        &lt;h:inputText value="#{location.zip}" required="true"/&gt;
+    &lt;/s:decorate&gt;
+
+    &lt;h:commandButton/&gt;
+
+&lt;/h:form&gt;
+</programlisting>
+	<para>
+		Finally, we can use Ajax4JSF to display validation messages as the user is navigating around the form:
+	</para>
+<programlisting>&lt;h:form&gt;
+
+    &lt;h:messages globalOnly="true"/&gt;
+
+    &lt;s:decorate id="countryDecoration" template="edit.xhtml"&gt;
+        &lt;ui:define name="label"&gt;Country:&lt;/ui:define&gt;
+        &lt;h:inputText value="#{location.country}" required="true"&gt;
+            &lt;a:support event="onblur" reRender="countryDecoration"/&gt;
+        &lt;/h:inputText&gt;
+    &lt;/s:decorate&gt;
+    
+    &lt;s:decorate id="zipDecoration" template="edit.xhtml"&gt;
+        &lt;ui:define name="label"&gt;Zip code:&lt;/ui:define&gt;
+        &lt;h:inputText value="#{location.zip}" required="true"&gt;
+            &lt;a:support event="onblur" reRender="zipDecoration"/&gt;
+        &lt;/h:inputText&gt;
+    &lt;/s:decorate&gt;
+
+    &lt;h:commandButton/&gt;
+
+&lt;/h:form&gt;
+</programlisting>
+	<para>
+		As a final note, it would be better style to define explicit IDs for important controls on the page, especially if you want to do automated testing for the UI, using some toolkit like Selenium. If you do not provide explicit ids, JSF will generate them, but the generated values will change if you change anything on the page.
+	</para>
+<programlisting>&lt;h:form id="form"&gt;
+
+    &lt;h:messages globalOnly="true"/&gt;
+
+    &lt;s:decorate id="countryDecoration" template="edit.xhtml"&gt;
+        &lt;ui:define name="label"&gt;Country:&lt;/ui:define&gt;
+        &lt;h:inputText id="country" value="#{location.country}" required="true"&gt;
+            &lt;a:support event="onblur" reRender="countryDecoration"/&gt;
+        &lt;/h:inputText&gt;
+    &lt;/s:decorate&gt;
+    
+    &lt;s:decorate id="zipDecoration" template="edit.xhtml"&gt;
+        &lt;ui:define name="label"&gt;Zip code:&lt;/ui:define&gt;
+        &lt;h:inputText id="zip" value="#{location.zip}" required="true"&gt;
+            &lt;a:support event="onblur" reRender="zipDecoration"/&gt;
+        &lt;/h:inputText&gt;
+    &lt;/s:decorate&gt;
+
+    &lt;h:commandButton/&gt;
+
+&lt;/h:form&gt;
+</programlisting>
+</chapter>
+


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Validation.xml
___________________________________________________________________
Name: svn:executable
   + *

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Xml.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Xml.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Xml.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,454 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Seam_Reference_Guide-Configuring_Seam_components">
+	<title>Configuring Seam components</title>
+	<para>
+		The philosophy of minimizing XML-based configuration is extremely strong in Seam. Nevertheless, there are various reasons why we might want to configure a Seam component using XML: to isolate deployment-specific information from the Java code, to enable the creation of re-usable frameworks, to configure Seam&#39;s built-in functionality, etc. Seam provides two basic approaches to configuring components: configuration via property settings in a properties file or <literal>web.xml</literal>, and configuration via <literal>components.xml</literal>.
+	</para>
+	<sect1 id="Seam_Reference_Guide-Configuring_Seam_components-Configuring_components_via_property_settings"><title>Configuring components via property settings</title>
+	<para>
+		Seam components may be provided with configuration properties either via servlet context parameters, or via a properties file named <literal>seam.properties</literal> in the root of the classpath.
+	</para>
+	<para>
+		The configurable Seam component must expose JavaBeans-style property setter methods for the configurable attributes. If a seam component named <literal>com.jboss.myapp.settings</literal> has a setter method named <literal>setLocale()</literal>, we can provide a property named <literal>com.jboss.myapp.settings.locale</literal> in the <literal>seam.properties</literal> file or as a servlet context parameter, and Seam will set the value of the <literal>locale</literal> attribute whenever it instantiates the component.
+	</para>
+	<para>
+		The same mechanism is used to configure Seam itself. For example, to set the conversation timeout, we provide a value for <literal>org.jboss.seam.core.manager.conversationTimeout</literal> in <literal>web.xml</literal> or <literal>seam.properties</literal>. (There is a built-in Seam component named <literal>org.jboss.seam.core.manager</literal> with a setter method named <literal>setConversationTimeout()</literal>.)
+	</para>
+	</sect1><sect1 id="Seam_Reference_Guide-Configuring_Seam_components-Configuring_components_via_components.xml"><title>Configuring components via components.xml</title>
+	<para>
+		The <literal>components.xml</literal> file is a bit more powerful than property settings. It lets you:
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				Configure components that have been installed automatically&mdash;including both built-in components, and application components that have been annotated with the <literal>@Name</literal> annotation and picked up by Seam&#39;s deployment scanner.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Install classes with no <literal>@Name</literal> annotation as Seam components&mdash;this is most useful for certain kinds of infrastructural components which can be installed multiple times different names (for example Seam-managed persistence contexts).
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Install components that <emphasis>do</emphasis> have a <literal>@Name</literal> annotation but are not installed by default because of an <literal>@Install</literal> annotation that indicates the component should not be installed.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Override the scope of a component.
+			</para>
+		</listitem>
+	</itemizedlist>
+	<para>
+		A <literal>components.xml</literal> file may appear in one of three different places:
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				The <literal>WEB-INF</literal> directory of a <literal>war</literal>.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				The <literal>META-INF</literal> directory of a <literal>jar</literal>.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Any directory of a <literal>jar</literal> that contains classes with an <literal>@Name</literal> annotation.
+			</para>
+		</listitem>
+	</itemizedlist>
+	<para>
+		Usually, Seam components are installed when the deployment scanner discovers a class with a <literal>@Name</literal> annotation sitting in an archive with a <literal>seam.properties</literal> file or a <literal>META-INF/components.xml</literal> file. (Unless the component has an <literal>@Install</literal> annotation indicating it should not be installed by default.) The <literal>components.xml</literal> file lets us handle special cases where we need to override the annotations.
+	</para>
+	<para>
+		For example, the following <literal>components.xml</literal> file installs the JBoss Embeddable EJB3 container:
+	</para>
+<programlisting>&lt;components xmlns="http://jboss.com/products/seam/components" 
+            xmlns:core="http://jboss.com/products/seam/core"&gt;
+    &lt;core:ejb/&gt;
+&lt;/components&gt;
+</programlisting>
+	<para>
+		This example does the same thing:
+	</para>
+<programlisting>&lt;components&gt;
+    &lt;component class="org.jboss.seam.core.Ejb"/&gt;
+&lt;/components&gt;
+</programlisting>
+	<para>
+		This one installs and configures two different Seam-managed persistence contexts:
+	</para>
+<programlisting>&lt;components xmlns="http://jboss.com/products/seam/components" 
+            xmlns:core="http://jboss.com/products/seam/core"
+
+    &lt;core:managed-persistence-context name="customerDatabase"
+                persistence-unit-jndi-name="java:/customerEntityManagerFactory"/&gt;
+        
+    &lt;core:managed-persistence-context name="accountingDatabase"
+                persistence-unit-jndi-name="java:/accountingEntityManagerFactory"/&gt;            
+
+&lt;/components&gt;
+</programlisting>
+	<para>
+		As does this one:
+	</para>
+<programlisting>&lt;components&gt;
+    &lt;component name="customerDatabase" 
+              class="org.jboss.seam.core.ManagedPersistenceContext"&gt;
+        &lt;property name="persistenceUnitJndiName"&gt;java:/customerEntityManagerFactory&lt;/property&gt;
+    &lt;/component&gt;
+    
+    &lt;component name="accountingDatabase"
+              class="org.jboss.seam.core.ManagedPersistenceContext"&gt;
+        &lt;property name="persistenceUnitJndiName"&gt;java:/accountingEntityManagerFactory&lt;/property&gt;
+    &lt;/component&gt;
+&lt;/components&gt;
+</programlisting>
+	<para>
+		This example creates a session-scoped Seam-managed persistence context (this is not recommended in practice):
+	</para>
+<programlisting>&lt;components xmlns="http://jboss.com/products/seam/components" 
+            xmlns:core="http://jboss.com/products/seam/core"
+
+  &lt;core:managed-persistence-context name="productDatabase" 
+                                   scope="session"
+              persistence-unit-jndi-name="java:/productEntityManagerFactory"/&gt;        
+
+&lt;/components&gt;
+</programlisting>
+<programlisting>&lt;components&gt;
+            
+    &lt;component name="productDatabase"
+              scope="session"
+              class="org.jboss.seam.core.ManagedPersistenceContext"&gt;
+        &lt;property name="persistenceUnitJndiName"&gt;java:/productEntityManagerFactory&lt;/property&gt;
+    &lt;/component&gt;
+
+&lt;/components&gt;
+</programlisting>
+	<para>
+		It is common to use the <literal>auto-create</literal> option for infrastructural objects like persistence contexts, which saves you from having to explicitly specify <literal>create=true</literal> when you use the <literal>@In</literal> annotation.
+	</para>
+<programlisting>&lt;components xmlns="http://jboss.com/products/seam/components" 
+            xmlns:core="http://jboss.com/products/seam/core"
+
+  &lt;core:managed-persistence-context name="productDatabase" 
+                             auto-create="true"
+              persistence-unit-jndi-name="java:/productEntityManagerFactory"/&gt;        
+
+&lt;/components&gt;
+</programlisting>
+<programlisting>&lt;components&gt;
+            
+    &lt;component name="productDatabase"
+        auto-create="true"
+              class="org.jboss.seam.core.ManagedPersistenceContext"&gt;
+        &lt;property name="persistenceUnitJndiName"&gt;java:/productEntityManagerFactory&lt;/property&gt;
+    &lt;/component&gt;
+
+&lt;/components&gt;
+</programlisting>
+	<para>
+		The <literal>&lt;factory&gt;</literal> declaration lets you specify a value or method binding expression that will be evaluated to initialize the value of a context variable when it is first referenced.
+	</para>
+<programlisting>&lt;components&gt;
+
+    &lt;factory name="contact" method="#{contactManager.loadContact}" scope="CONVERSATION"/&gt;
+
+&lt;/components&gt;
+</programlisting>
+	<para>
+		You can create an <emphasis>alias</emphasis> (a second name) for a Seam component like so:
+	</para>
+<programlisting>&lt;components&gt;
+
+    &lt;factory name="user" value="#{actor}" scope="STATELESS"/&gt;
+
+&lt;/components&gt;
+</programlisting>
+	<para>
+		You can even create an <emphasis>alias</emphasis> for a commonly used expression:
+	</para>
+<programlisting>&lt;components&gt;
+
+    &lt;factory name="contact" value="#{contactManager.contact}" scope="STATELESS"/&gt;
+
+&lt;/components&gt;
+</programlisting>
+	<para>
+		It is especially common to see the use of <literal>auto-create="true"</literal> with the <literal>&lt;factory&gt;</literal> declaration:
+	</para>
+<programlisting>&lt;components&gt;
+
+    &lt;factory name="session" value="#{entityManager.delegate}" scope="STATELESS" 
+       auto-create="true"/&gt;
+
+&lt;/components&gt;
+</programlisting>
+	<para>
+		Sometimes we want to reuse the same <literal>components.xml</literal> file with minor changes during both deployment and testing. Seam lets you place wildcards of the form <literal>@wildcard@</literal> in the <literal>components.xml</literal> file which can be replaced either by your Ant build script (at deployment time) or by providing a file named <literal>components.properties</literal> in the classpath (at development time). You will see this approach used in the Seam examples.
+	</para>
+	</sect1><sect1 id="Seam_Reference_Guide-Configuring_Seam_components-Fine_grained_configuration_files"><title>Fine-grained configuration files</title>
+	<para>
+		If you have a large number of components that need to be configured in XML, it makes much more sense to split up the information in <literal>components.xml</literal> into many small files. Seam lets you put configuration for a class named, for example, <literal>com.helloworld.Hello</literal> in a resource named <literal>com/helloworld/Hello.component.xml</literal>. (You might be familiar with this pattern, since it is the same one we use in Hibernate.) The root element of the file may be either a <literal>&lt;components&gt;</literal> or <literal>&lt;component&gt;</literal> element.
+	</para>
+	<para>
+		The first option lets you define multiple components in the file:
+	</para>
+<programlisting>&lt;components&gt;
+    &lt;component class="com.helloworld.Hello" name="hello"&gt;
+        &lt;property name="name"&gt;#{user.name}&lt;/property&gt;
+    &lt;/component&gt;
+    &lt;factory name="message" value="#{hello.message}"/&gt;
+&lt;/components&gt;
+</programlisting>
+	<para>
+		The second option only lets you define or configure one component, but is less noisy:
+	</para>
+<programlisting>&lt;component name="hello"&gt;
+    &lt;property name="name"&gt;#{user.name}&lt;/property&gt;
+&lt;/component&gt;
+</programlisting>
+	<para>
+		In the second option, the class name is implied by the file in which the component definition appears.
+	</para>
+	<para>
+		Alternatively, you may put configuration for all classes in the <literal>com.helloworld</literal> package in <literal>com/helloworld/components.xml</literal>.
+	</para>
+	</sect1><sect1 id="Seam_Reference_Guide-Configuring_Seam_components-Configurable_property_types"><title>Configurable property types</title>
+	<para>
+		Properties of string, primitive or primitive wrapper type may be configured just as you would expect:
+	</para>
+<programlisting>org.jboss.seam.core.manager.conversationTimeout 60000</programlisting>
+<programlisting>&lt;core:manager conversation-timeout="60000"/&gt;</programlisting>
+<programlisting>&lt;component name="org.jboss.seam.core.manager"&gt;
+    &lt;property name="conversationTimeout"&gt;60000&lt;/property&gt;
+&lt;/component&gt;
+</programlisting>
+	<para>
+		Arrays, sets and lists of strings or primitives are also supported:
+	</para>
+<programlisting>org.jboss.seam.core.jbpm.processDefinitions order.jpdl.xml, return.jpdl.xml, inventory.jpdl.xml</programlisting>
+<programlisting>&lt;core:jbpm&gt;
+    &lt;core:process-definitions&gt;
+        &lt;value&gt;order.jpdl.xml&lt;/value&gt;
+        &lt;value&gt;return.jpdl.xml&lt;/value&gt;
+        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;
+    &lt;/core:process-definitions&gt;
+&lt;/core:jbpm&gt;
+</programlisting>
+<programlisting>&lt;component name="org.jboss.seam.core.jbpm"&gt;
+    &lt;property name="processDefinitions"&gt;
+        &lt;value&gt;order.jpdl.xml&lt;/value&gt;
+        &lt;value&gt;return.jpdl.xml&lt;/value&gt;
+        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;
+    &lt;/property&gt;
+&lt;/component&gt;
+</programlisting>
+	<para>
+		Even maps with String-valued keys and string or primitive values are supported:
+	</para>
+<programlisting>&lt;component name="issueEditor"&gt;
+    &lt;property name="issueStatuses"&gt;
+        &lt;key&gt;open&lt;/key&gt; &lt;value&gt;open issue&lt;/value&gt;
+        &lt;key&gt;resolved&lt;/key&gt; &lt;value&gt;issue resolved by developer&lt;/value&gt;
+        &lt;key&gt;closed&lt;/key&gt; &lt;value&gt;resolution accepted by user&lt;/value&gt;
+    &lt;/property&gt;
+&lt;/component&gt;
+</programlisting>
+	<para>
+		Finally, you may wire together components using a value-binding expression. Note that this is quite different to injection using <literal>@In</literal>, since it happens at component instantiation time instead of invocation time. It is therefore much more similar to the dependency injection facilities offered by traditional IoC containers like JSF or Spring.
+	</para>
+<programlisting>&lt;drools:managed-working-memory name="policyPricingWorkingMemory" rule-base="#{policyPricingRules}"/&gt;</programlisting>
+<programlisting>&lt;component name="policyPricingWorkingMemory"
+          class="org.jboss.seam.drools.ManagedWorkingMemory"&gt;
+    &lt;property name="ruleBase"&gt;#{policyPricingRules}&lt;/property&gt;
+&lt;/component&gt;
+</programlisting>
+	</sect1><sect1 id="Seam_Reference_Guide-Configuring_Seam_components-Using_XML_Namespaces"><title>Using XML Namespaces</title>
+	<para>
+		Throughout the examples, there have been two competing ways of declaring components: with and without the use of XML namespaces. The following shows a typical <literal>components.xml</literal> file without namespaces. It uses the Seam Components DTD:
+	</para>
+<programlisting>&lt;?xml version="1.0" encoding="UTF-8"&gt;
+&lt;!DOCTYPE components PUBLIC "-//JBoss/Seam Component Configuration DTD 1.2//EN"
+                            "http://jboss.com/products/seam/components-1.2.dtd"&gt;
+&lt;components&gt;
+
+    &lt;component class="org.jboss.seam.core.init"&gt;
+        &lt;property name="debug"&gt;true&lt;/property&gt;
+        &lt;property name="jndiPattern"&gt;@jndiPattern@&lt;/property&gt;
+    &lt;/component&gt;
+
+    &lt;component name="org.jboss.sean.core.ejb" installed="@embeddedEjb@" /&gt;
+    
+&lt;/components&gt;
+</programlisting>
+	<para>
+		As you can see, this is somewhat verbose. Even worse, the component and attribute names cannot be validated at development time.
+	</para>
+	<para>
+		The namespaced version looks like this:
+	</para>
+<programlisting>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;components xmlns="http://jboss.com/products/seam/components"
+            xmlns:core="http://jboss.com/products/seam/core"
+            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+            xsi:schemaLocation=
+                "http://jboss.com/products/seam/core 
+                                        http://jboss.com/products/seam/core-1.2.xsd 
+                 http://jboss.com/products/seam/components 
+                                        http://jboss.com/products/seam/components-1.2.xsd"&gt;
+
+    &lt;core:init debug="true" jndi-pattern="@jndiPattern@"/&gt;
+
+    &lt;core:ejb installed="@embeddedEjb@"/&gt;
+
+&lt;/components&gt;
+</programlisting>
+	<para>
+		Even though the schema declarations are verbose, the actual XML content is lean and easy to understand. The schemas provide detailed information about each component and the attributes available, allowing XML editors to offer intelligent autocomplete. The use of namespaced elements makes generating and maintaining correct <literal>components.xml</literal> files much simpler.
+	</para>
+	<para>
+		Now, this works great for the built-in Seam components, but what about user components? There are two options. First, Seam supports mixing the two models, allowing the use of the generic <literal>&lt;component&gt;</literal> declarations for user components, along with namespaced declarations for built-in components. But even better, Seam allows you to quickly declare namespaces for your own components.
+	</para>
+	<para>
+		Any Java package can be associated with an XML namespace by annotating the package with the <literal>@Namespace</literal> annotation. (Package-level annotations are declared in a file named <literal>package-info.java</literal> in the package directory.) Here is an example from the seampay demo:
+	</para>
+<programlisting>@Namespace(value="http://jboss.com/products/seam/examples/seampay")
+package org.jboss.seam.example.seampay;
+
+import org.jboss.seam.annotations.Namespace;
+</programlisting>
+	<para>
+		That is all you need to do to use the namespaced style in <literal>components.xml</literal>! Now we can write:
+	</para>
+<programlisting>&lt;components xmlns="http://jboss.com/products/seam/components"
+            xmlns:pay="http://jboss.com/products/seam/examples/seampay"
+            ... &gt;
+
+    &lt;pay:payment-home new-instance="#{newPayment}"
+                      created-message="Created a new payment to #{newPayment.payee}" /&gt;
+
+    &lt;pay:payment name="newPayment"
+                 payee="Somebody"
+                 account="#{selectedAccount}"
+                 payment-date="#{currentDatetime}"
+                 created-date="#{currentDatetime}" /&gt;
+     ...
+&lt;/components&gt;
+</programlisting>
+	<para>
+		Or:
+	</para>
+<programlisting>&lt;components xmlns="http://jboss.com/products/seam/components"
+            xmlns:pay="http://jboss.com/products/seam/examples/seampay"
+            ... &gt;
+
+    &lt;pay:payment-home&gt;
+        &lt;pay:new-instance&gt;"#{newPayment}"&lt;/pay:new-instance&gt;
+        &lt;pay:created-message&gt;Created a new payment to #{newPayment.payee}&lt;/pay:created-message&gt;
+    &lt;/pay:payment-home&gt;
+    
+    &lt;pay:payment name="newPayment"&gt;
+        &lt;pay:payee&gt;Somebody"&lt;/pay:payee&gt;
+        &lt;pay:account&gt;#{selectedAccount}&lt;/pay:account&gt;
+        &lt;pay:payment-date&gt;#{currentDatetime}&lt;/pay:payment-date&gt;
+        &lt;pay:created-date&gt;#{currentDatetime}&lt;/pay:created-date&gt;
+     &lt;/pay:payment&gt;
+     ...
+&lt;/components&gt;
+</programlisting>
+	<para>
+		These examples illustrate the two usage models of a namespaced element. In the first declaration, the <literal>&lt;pay:payment-home&gt;</literal> references the <literal>paymentHome</literal> component:
+	</para>
+<programlisting>package org.jboss.seam.example.seampay;
+...
+ at Name("paymentHome")
+public class PaymentController
+    extends EntityHome&lt;Payment&gt;
+{
+    ... 
+}
+</programlisting>
+	<para>
+		The element name is the hyphenated form of the component name. The attributes of the element are the hyphenated form of the property names.
+	</para>
+	<para>
+		In the second declaration, the <literal>&lt;pay:payment&gt;</literal> element refers to the <literal>Payment</literal> class in the <literal>org.jboss.seam.example.seampay</literal> package. In this case <literal>Payment</literal> is an entity that is being declared as a Seam component:
+	</para>
+<programlisting>package org.jboss.seam.example.seampay;
+...
+ at Entity
+public class Payment
+    implements Serializable
+{
+    ...
+}
+</programlisting>
+	<para>
+		If we want validation and autocompletion to work for user-defined components, we will need a schema. Seam does not yet provide a mechanism to automatically generate a schema for a set of components, so it is necessary to generate one manually. The schema definitions for the standard Seam packages can be used for guidance.
+	</para>
+	<para>
+		The following are the the namespaces used by Seam:
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				components &mdash; <literal>http://jboss.com/products/seam/components</literal>
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				core &mdash; <literal>http://jboss.com/products/seam/core</literal>
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				drools &mdash; <literal>http://jboss.com/products/seam/drools</literal>
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				framework &mdash; <literal>http://jboss.com/products/seam/framework</literal>
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				jms &mdash; <literal>http://jboss.com/products/seam/jms</literal>
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				remoting &mdash; <literal>http://jboss.com/products/seam/remoting</literal>
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				theme &mdash; <literal>http://jboss.com/products/seam/theme</literal>
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				security &mdash; <literal>http://jboss.com/products/seam/security</literal>
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				mail &mdash; <literal>http://jboss.com/products/seam/mail</literal>
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				web &mdash; <literal>http://jboss.com/products/seam/web</literal>
+			</para>
+		</listitem>
+	</itemizedlist>
+	</sect1>
+</chapter>
+


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/Xml.xml
___________________________________________________________________
Name: svn:executable
   + *

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/architecture.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/architecture.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/blog.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/blog.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/booking.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/booking.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/bpmd.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/bpmd.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/bpmpfv.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/bpmpfv.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/breadcrumbs.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/breadcrumbs.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/codegendropdown.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/codegendropdown.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/codegenmaintab.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/codegenmaintab.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/codegenselectseam.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/codegenselectseam.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/consolecfgwizard.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/consolecfgwizard.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/consoleoutline-before-reveng.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/consoleoutline-before-reveng.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/controls-seamtext.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/controls-seamtext.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/controls-selectdate.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/controls-selectdate.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/controls-selectdatecss.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/controls-selectdatecss.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/debug.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/debug.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/dvdsearch.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/dvdsearch.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/dvdtasks.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/dvdtasks.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/e-ejb3.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/e-ejb3.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/ee5.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/ee5.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/hibernate-ee.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/hibernate-ee.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/hibernate-mc.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/hibernate-mc.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/hibernatecfgwizard.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/hibernatecfgwizard.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/icon.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/icon.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/icon.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,3936 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:ns="http://ns.adobe.com/AdobeSVGViewerExtensions/3/"
+   xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg3017"
+   sodipodi:version="0.32"
+   inkscape:version="0.44+devel"
+   sodipodi:docname="book.svg"
+   sodipodi:docbase="/home/andy/Desktop">
+  <metadata
+     id="metadata489">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="480"
+     inkscape:window-width="858"
+     inkscape:pageshadow="0"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="1"
+     inkscape:cx="16"
+     inkscape:cy="15.944056"
+     inkscape:window-x="0"
+     inkscape:window-y="33"
+     inkscape:current-layer="svg3017" />
+  <defs
+     id="defs3019">
+    <linearGradient
+       id="linearGradient2381">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop2383" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="stop2385" />
+    </linearGradient>
+    <linearGradient
+       x1="415.73831"
+       y1="11.854"
+       x2="418.13361"
+       y2="18.8104"
+       id="XMLID_1758_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8362,0.5206,-1.1904,0.992,147.62,-30.9374)">
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="0"
+         id="stop3903" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop3905" />
+      <a:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="500.70749"
+       y1="-13.2441"
+       x2="513.46442"
+       y2="-2.1547"
+       id="XMLID_1757_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop3890" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop3892" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="XMLID_1755_">
+      <use
+         id="use3874"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_343_" />
+    </clipPath>
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop3877" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop3879" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop3881" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop3883" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="471.0806"
+       y1="201.07761"
+       x2="481.91711"
+       y2="210.4977"
+       id="XMLID_1754_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#6498c1;stop-opacity:1"
+         offset="0.005618"
+         id="stop3863" />
+      <stop
+         style="stop-color:#79a9cc;stop-opacity:1"
+         offset="0.2332"
+         id="stop3865" />
+      <stop
+         style="stop-color:#a4cde2;stop-opacity:1"
+         offset="0.74049997"
+         id="stop3867" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="1"
+         id="stop3869" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="5.618000e-003" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="0.4438" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="XMLID_1753_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop3851" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop3853" />
+      <a:midPointStop
+         style="stop-color:#B2B2B2"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B2B2B2"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="XMLID_1751_">
+      <use
+         id="use3837"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_338_" />
+    </clipPath>
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop3840" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop3842" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop3844" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop3846" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="468.2915"
+       y1="204.7612"
+       x2="479.39871"
+       y2="214.4166"
+       id="XMLID_1750_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop3830" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop3832" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop3818" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop3820" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="501.0903"
+       y1="-19.2544"
+       x2="531.85413"
+       y2="0.72390002"
+       id="XMLID_1748_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop3803" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop3805" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop3807" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop3809" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="XMLID_2275_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop9947" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop9949" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop9951" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop9953" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="XMLID_2273_">
+      <use
+         id="use9933"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_960_" />
+    </clipPath>
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="XMLID_2274_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop9936" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop9938" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop9940" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop9942" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="478.21341"
+       y1="-131.9297"
+       x2="469.85818"
+       y2="-140.28481"
+       id="XMLID_2272_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.5592,0.829,-0.829,0.5592,101.3357,-104.791)">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop9917" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop9919" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop9921" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop9923" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       style="overflow:visible"
+       id="TriangleInM">
+      <path
+         d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z "
+         transform="scale(-0.4,-0.4)"
+         style="fill:#5c5c4f"
+         id="path3197" />
+    </marker>
+    <linearGradient
+       x1="200.7363"
+       y1="100.4028"
+       x2="211.99519"
+       y2="89.143997"
+       id="XMLID_3298_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#bfbfbf;stop-opacity:1"
+         offset="0"
+         id="stop20103" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop20105" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#BFBFBF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#BFBFBF" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#F2F2F2" />
+    </linearGradient>
+    <linearGradient
+       x1="200.7363"
+       y1="100.4028"
+       x2="211.99519"
+       y2="89.143997"
+       id="linearGradient36592"
+       xlink:href="#XMLID_3298_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="181.2925"
+       y1="110.8481"
+       x2="192.6369"
+       y2="99.5037"
+       id="XMLID_3297_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="stop20096" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop20098" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="181.2925"
+       y1="110.8481"
+       x2="192.6369"
+       y2="99.5037"
+       id="linearGradient36595"
+       xlink:href="#XMLID_3297_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="211.77589"
+       y1="105.7749"
+       x2="212.6619"
+       y2="108.2092"
+       id="XMLID_3296_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#0f6124;stop-opacity:1"
+         offset="0"
+         id="stop20087" />
+      <stop
+         style="stop-color:#219630;stop-opacity:1"
+         offset="1"
+         id="stop20089" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#0F6124" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#0F6124" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#219630" />
+    </linearGradient>
+    <linearGradient
+       x1="211.77589"
+       y1="105.7749"
+       x2="212.6619"
+       y2="108.2092"
+       id="linearGradient36677"
+       xlink:href="#XMLID_3296_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="208.9834"
+       y1="116.8296"
+       x2="200.0811"
+       y2="96.834602"
+       id="XMLID_3295_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop20076" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.5"
+         id="stop20078" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop20080" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="208.9834"
+       y1="116.8296"
+       x2="200.0811"
+       y2="96.834602"
+       id="linearGradient36604"
+       xlink:href="#XMLID_3295_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="195.5264"
+       y1="97.911102"
+       x2="213.5213"
+       y2="115.9061"
+       id="XMLID_3294_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="0"
+         id="stop20069" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop20071" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="195.5264"
+       y1="97.911102"
+       x2="213.5213"
+       y2="115.9061"
+       id="linearGradient36607"
+       xlink:href="#XMLID_3294_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="186.1938"
+       y1="109.1343"
+       x2="206.6881"
+       y2="88.639999"
+       id="XMLID_3293_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop20056" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.16850001"
+         id="stop20058" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.23029999"
+         id="stop20060" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.2809"
+         id="stop20062" />
+      <stop
+         style="stop-color:#c2c2c2;stop-opacity:1"
+         offset="0.5"
+         id="stop20064" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.1685"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.2303"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.2809"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#C2C2C2" />
+    </linearGradient>
+    <linearGradient
+       x1="186.1938"
+       y1="109.1343"
+       x2="206.6881"
+       y2="88.639999"
+       id="linearGradient36610"
+       xlink:href="#XMLID_3293_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="184.8569"
+       y1="112.2676"
+       x2="211.94099"
+       y2="89.541397"
+       id="XMLID_3292_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop20043" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.16850001"
+         id="stop20045" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.23029999"
+         id="stop20047" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.2809"
+         id="stop20049" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop20051" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.1685"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.2303"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.2809"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="184.8569"
+       y1="112.2676"
+       x2="211.94099"
+       y2="89.541397"
+       id="linearGradient36613"
+       xlink:href="#XMLID_3292_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       style="overflow:visible"
+       id="TriangleOutM">
+      <path
+         d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z "
+         transform="scale(0.4,0.4)"
+         style="fill:#5c5c4f;fill-rule:evenodd;stroke-width:1pt;marker-start:none"
+         id="path3238" />
+    </marker>
+    <linearGradient
+       x1="165.3"
+       y1="99.5"
+       x2="165.3"
+       y2="115.9"
+       id="XMLID_3457_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="0"
+         id="stop8309" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8311" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="1"
+         id="stop8313" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#999999" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#999999" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#B2B2B2" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#B2B2B2" />
+    </linearGradient>
+    <linearGradient
+       x1="165.3"
+       y1="99.5"
+       x2="165.3"
+       y2="115.9"
+       id="lg1997"
+       xlink:href="#XMLID_3457_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="175"
+       y1="99.800003"
+       x2="175"
+       y2="112.5"
+       id="XMLID_3456_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="0"
+         id="stop8300" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="0.60000002"
+         id="stop8302" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="1"
+         id="stop8304" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="0.6"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#191919" />
+    </linearGradient>
+    <linearGradient
+       x1="175"
+       y1="99.800003"
+       x2="175"
+       y2="112.5"
+       id="lg2000"
+       xlink:href="#XMLID_3456_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="168.8"
+       y1="107.1"
+       x2="164.5"
+       y2="110"
+       id="XMLID_3455_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="0"
+         id="stop8291" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="0.69999999"
+         id="stop8293" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="1"
+         id="stop8295" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.7"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#191919" />
+    </linearGradient>
+    <linearGradient
+       x1="168.8"
+       y1="107.1"
+       x2="164.5"
+       y2="110"
+       id="lg2003"
+       xlink:href="#XMLID_3455_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       id="lg63694">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop63696" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="stop63698" />
+    </linearGradient>
+    <linearGradient
+       x1="458"
+       y1="483"
+       x2="465.20001"
+       y2="271.39999"
+       id="lg2006"
+       xlink:href="#lg63694"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(6.3e-2,0,0,6.3e-2,-1.3,-9.8)" />
+    <linearGradient
+       x1="176.3"
+       y1="110.1"
+       x2="158.7"
+       y2="105"
+       id="XMLID_3453_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="0"
+         id="stop8271" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="0.2"
+         id="stop8273" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop8275" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.2"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="176.3"
+       y1="110.1"
+       x2="158.7"
+       y2="105"
+       id="lg2009"
+       xlink:href="#XMLID_3453_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="173.60001"
+       y1="118.9"
+       x2="172.8"
+       y2="128.2"
+       id="XMLID_3449_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8232" />
+      <stop
+         style="stop-color:#fff95e;stop-opacity:1"
+         offset="0.60000002"
+         id="stop8234" />
+      <stop
+         style="stop-color:#ecd600;stop-opacity:1"
+         offset="1"
+         id="stop8236" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.6"
+         style="stop-color:#FFF95E" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFF95E" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#ECD600" />
+    </linearGradient>
+    <linearGradient
+       x1="173.60001"
+       y1="118.9"
+       x2="172.8"
+       y2="128.2"
+       id="lg2016"
+       xlink:href="#XMLID_3449_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <radialGradient
+       cx="284.60001"
+       cy="172.60001"
+       r="6.5"
+       fx="284.60001"
+       fy="172.60001"
+       id="XMLID_3448_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4,0,0,1.4,-237.3,-126.8)">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8219" />
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8221" />
+      <stop
+         style="stop-color:#c96b00;stop-opacity:1"
+         offset="0.89999998"
+         id="stop8223" />
+      <stop
+         style="stop-color:#9a5500;stop-opacity:1"
+         offset="1"
+         id="stop8225" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.9"
+         style="stop-color:#C96B00" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#C96B00" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#9A5500" />
+    </radialGradient>
+    <radialGradient
+       cx="284.60001"
+       cy="172.60001"
+       r="6.5"
+       fx="284.60001"
+       fy="172.60001"
+       id="rg2020"
+       xlink:href="#XMLID_3448_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.513992,0,0,2.347576,-689.1621,-378.5717)" />
+    <linearGradient
+       x1="158.10001"
+       y1="123"
+       x2="164.2"
+       y2="126.6"
+       id="XMLID_3447_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecd600;stop-opacity:1"
+         offset="0"
+         id="stop8204" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8206" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop8208" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECD600" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECD600" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="158.10001"
+       y1="123"
+       x2="164.2"
+       y2="126.6"
+       id="lg2026"
+       xlink:href="#XMLID_3447_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <radialGradient
+       cx="280.89999"
+       cy="163.7"
+       r="10.1"
+       fx="280.89999"
+       fy="163.7"
+       id="XMLID_3446_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4,0,0,1.4,-237.3,-126.8)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop8197" />
+      <stop
+         style="stop-color:#fff95e;stop-opacity:1"
+         offset="1"
+         id="stop8199" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#FFFFFF" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#FFF95E" />
+    </radialGradient>
+    <radialGradient
+       cx="280.89999"
+       cy="163.7"
+       r="10.1"
+       fx="280.89999"
+       fy="163.7"
+       id="rg2029"
+       xlink:href="#XMLID_3446_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.7,0,0,1.7,-457.5,-266.8)" />
+    <linearGradient
+       x1="156.5"
+       y1="122.7"
+       x2="180.10001"
+       y2="122.7"
+       id="XMLID_3445_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8184" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.2"
+         id="stop8186" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8188" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.40000001"
+         id="stop8190" />
+      <stop
+         style="stop-color:#d68100;stop-opacity:1"
+         offset="1"
+         id="stop8192" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.2"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.4"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#D68100" />
+    </linearGradient>
+    <linearGradient
+       x1="156.5"
+       y1="122.7"
+       x2="180.10001"
+       y2="122.7"
+       id="lg2032"
+       xlink:href="#XMLID_3445_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="156.39999"
+       y1="115.4"
+       x2="180.10001"
+       y2="115.4"
+       id="XMLID_3444_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8171" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.2"
+         id="stop8173" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8175" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.40000001"
+         id="stop8177" />
+      <stop
+         style="stop-color:#d68100;stop-opacity:1"
+         offset="1"
+         id="stop8179" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.2"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.4"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#D68100" />
+    </linearGradient>
+    <linearGradient
+       x1="156.39999"
+       y1="115.4"
+       x2="180.10001"
+       y2="115.4"
+       id="lg2035"
+       xlink:href="#XMLID_3444_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="379.70001"
+       y1="167.89999"
+       x2="383.89999"
+       y2="172.89999"
+       id="lg4286_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s16159" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.1"
+         id="s16161" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="1"
+         id="s16163" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.1" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#737373"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="379.60001"
+       y1="167.8"
+       x2="383.79999"
+       y2="172"
+       id="lg6416"
+       xlink:href="#lg4286_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.622156,0.623859,-0.623859,2.62182,-882.9706,-673.7921)" />
+    <linearGradient
+       x1="384.20001"
+       y1="169.8"
+       x2="384.79999"
+       y2="170.39999"
+       id="lg4285_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="0"
+         id="s16152" />
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="1"
+         id="s16154" />
+      <ns:midPointStop
+         style="stop-color:#737373"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#737373"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#D9D9D9"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="384.20001"
+       y1="169.8"
+       x2="384.79999"
+       y2="170.39999"
+       id="lg6453"
+       xlink:href="#lg4285_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.6,0.6,-0.6,2.6,-883,-673.8)" />
+    <linearGradient
+       x1="380.5"
+       y1="172.60001"
+       x2="382.79999"
+       y2="173.7"
+       id="lg4284_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
+      <stop
+         style="stop-color:gray;stop-opacity:1"
+         offset="0"
+         id="s16145" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="1"
+         id="s16147" />
+      <ns:midPointStop
+         style="stop-color:#808080"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#808080"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#E5E5E5"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="380.5"
+       y1="172.60001"
+       x2="382.79999"
+       y2="173.7"
+       id="lg6456"
+       xlink:href="#lg4284_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.6,0.6,-0.6,2.6,-883,-673.8)" />
+    <radialGradient
+       cx="347.29999"
+       cy="244.5"
+       r="5.1999998"
+       fx="347.29999"
+       fy="244.5"
+       id="lg4282_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
+      <stop
+         style="stop-color:#333;stop-opacity:1"
+         offset="0"
+         id="s16135" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="s16137" />
+      <ns:midPointStop
+         style="stop-color:#333333"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#333333"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#999999"
+         offset="1" />
+    </radialGradient>
+    <linearGradient
+       x1="310.39999"
+       y1="397.70001"
+       x2="310.89999"
+       y2="399.5"
+       id="lg4280_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="0"
+         id="s16111" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.60000002"
+         id="s16113" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="1"
+         id="s16115" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.6" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="310.39999"
+       y1="397.70001"
+       x2="310.89999"
+       y2="399.5"
+       id="lg6467"
+       xlink:href="#lg4280_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
+    <linearGradient
+       x1="310.89999"
+       y1="395.79999"
+       x2="313.29999"
+       y2="403.10001"
+       id="lg4279_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0"
+         id="s16100" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.40000001"
+         id="s16102" />
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="0.89999998"
+         id="s16104" />
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="1"
+         id="s16106" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.4" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0.9" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="310.89999"
+       y1="395.79999"
+       x2="313.29999"
+       y2="403.10001"
+       id="lg6465"
+       xlink:href="#lg4279_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
+    <linearGradient
+       x1="307.79999"
+       y1="395.20001"
+       x2="313.79999"
+       y2="413.60001"
+       id="lg4278_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0"
+         id="s16091" />
+      <stop
+         style="stop-color:#fcd72f;stop-opacity:1"
+         offset="0.40000001"
+         id="s16093" />
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="1"
+         id="s16095" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FCD72F"
+         offset="0.4" />
+      <ns:midPointStop
+         style="stop-color:#FCD72F"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="306.5"
+       y1="393"
+       x2="309"
+       y2="404"
+       id="lg6400"
+       xlink:href="#lg4278_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
+    <linearGradient
+       x1="352.10001"
+       y1="253.60001"
+       x2="348.5"
+       y2="237.8"
+       id="lg4276_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
+      <stop
+         style="stop-color:#ffff87;stop-opacity:1"
+         offset="0"
+         id="s16077" />
+      <stop
+         style="stop-color:#ffad00;stop-opacity:1"
+         offset="1"
+         id="s16079" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFAD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="335.60001"
+       y1="354.79999"
+       x2="337.89999"
+       y2="354.79999"
+       id="lg4275_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="s16057" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.80000001"
+         id="s16059" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="s16061" />
+      <ns:midPointStop
+         style="stop-color:#D9D9D9"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#D9D9D9"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.8" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="335.60001"
+       y1="354.79999"
+       x2="337.89999"
+       y2="354.79999"
+       id="lg6463"
+       xlink:href="#lg4275_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
+    <linearGradient
+       x1="337.39999"
+       y1="353.10001"
+       x2="339.39999"
+       y2="357.10001"
+       id="lg4274_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s16048" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.1"
+         id="s16050" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s16052" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.1" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="337.39999"
+       y1="353.10001"
+       x2="339.39999"
+       y2="357.10001"
+       id="lg6461"
+       xlink:href="#lg4274_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
+    <linearGradient
+       x1="334.39999"
+       y1="355.5"
+       x2="335.5"
+       y2="356.79999"
+       id="lg4273_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s16041" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s16043" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="5.6e-003" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="334.39999"
+       y1="355.5"
+       x2="335.5"
+       y2="356.79999"
+       id="lg6381"
+       xlink:href="#lg4273_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
+    <linearGradient
+       x1="348.39999"
+       y1="247.39999"
+       x2="354.10001"
+       y2="242"
+       id="lg4271_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0"
+         id="s16025" />
+      <stop
+         style="stop-color:#9e9e9e;stop-opacity:1"
+         offset="0.40000001"
+         id="s16027" />
+      <stop
+         style="stop-color:black;stop-opacity:1"
+         offset="1"
+         id="s16029" />
+      <ns:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#000000"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="351.29999"
+       y1="257.29999"
+       x2="346.29999"
+       y2="235.5"
+       id="lg4270_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ffff87;stop-opacity:1"
+         offset="0"
+         id="s16007" />
+      <stop
+         style="stop-color:#ffad00;stop-opacity:1"
+         offset="1"
+         id="s16009" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFAD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="351.29999"
+       y1="257.29999"
+       x2="346.29999"
+       y2="235.5"
+       id="lg6459"
+       xlink:href="#lg4270_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)" />
+    <linearGradient
+       x1="43.799999"
+       y1="32.5"
+       x2="63.299999"
+       y2="66.400002"
+       id="XMLID_2708_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop75318" />
+      <stop
+         style="stop-color:#fffcea;stop-opacity:1"
+         offset="1"
+         id="stop75320" />
+      <a:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#FFFCEA"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="43.799999"
+       y1="32.5"
+       x2="63.299999"
+       y2="66.400002"
+       id="lg1907"
+       xlink:href="#XMLID_2708_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)" />
+    <linearGradient
+       x1="52.5"
+       y1="40.400002"
+       x2="58.200001"
+       y2="64"
+       id="XMLID_2707_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ffdea0;stop-opacity:1"
+         offset="0"
+         id="stop75305" />
+      <stop
+         style="stop-color:#ffd89e;stop-opacity:1"
+         offset="0.30000001"
+         id="stop75307" />
+      <stop
+         style="stop-color:#ffd79e;stop-opacity:1"
+         offset="0.30000001"
+         id="stop75309" />
+      <stop
+         style="stop-color:#dbaf6d;stop-opacity:1"
+         offset="0.69999999"
+         id="stop75311" />
+      <stop
+         style="stop-color:#6f4c24;stop-opacity:1"
+         offset="1"
+         id="stop75313" />
+      <a:midPointStop
+         style="stop-color:#FFDEA0"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#FFDEA0"
+         offset="0.6" />
+      <a:midPointStop
+         style="stop-color:#FFD79E"
+         offset="0.3" />
+      <a:midPointStop
+         style="stop-color:#FFD79E"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#DBAF6D"
+         offset="0.7" />
+      <a:midPointStop
+         style="stop-color:#DBAF6D"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#6F4C24"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="52.5"
+       y1="40.400002"
+       x2="58.200001"
+       y2="64"
+       id="lg1910"
+       xlink:href="#XMLID_2707_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)" />
+    <linearGradient
+       x1="58"
+       y1="73.199997"
+       x2="44.5"
+       y2="19"
+       id="XMLID_2704_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)">
+      <stop
+         style="stop-color:#d4a96c;stop-opacity:1"
+         offset="0.5"
+         id="stop75284" />
+      <stop
+         style="stop-color:#dcb273;stop-opacity:1"
+         offset="0.60000002"
+         id="stop75286" />
+      <stop
+         style="stop-color:#f0ca87;stop-opacity:1"
+         offset="0.80000001"
+         id="stop75288" />
+      <stop
+         style="stop-color:#ffdc96;stop-opacity:1"
+         offset="0.69999999"
+         id="stop75290" />
+      <stop
+         style="stop-color:#c18a42;stop-opacity:1"
+         offset="1"
+         id="stop75292" />
+      <a:midPointStop
+         style="stop-color:#D4A96C"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#D4A96C"
+         offset="0.6" />
+      <a:midPointStop
+         style="stop-color:#FFDC96"
+         offset="0.7" />
+      <a:midPointStop
+         style="stop-color:#FFDC96"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#C18A42"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="53.700001"
+       y1="32"
+       x2="53.700001"
+       y2="64.599998"
+       id="XMLID_2703_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e5c9b0;stop-opacity:1"
+         offset="0"
+         id="stop75268" />
+      <stop
+         style="stop-color:#e5c9b0;stop-opacity:1"
+         offset="0.40000001"
+         id="stop75270" />
+      <stop
+         style="stop-color:#c0aa94;stop-opacity:1"
+         offset="1"
+         id="stop75272" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0.4" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#C0AA94"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="53.700001"
+       y1="32"
+       x2="53.700001"
+       y2="64.599998"
+       id="lg1916"
+       xlink:href="#XMLID_2703_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)" />
+    <linearGradient
+       x1="224.31"
+       y1="19.450001"
+       x2="214.33"
+       y2="11.46"
+       id="XMLID_419_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#404040;stop-opacity:1"
+         offset="0"
+         id="s1903" />
+      <stop
+         style="stop-color:#6d6d6d;stop-opacity:1"
+         offset="0.33000001"
+         id="s1905" />
+      <stop
+         style="stop-color:#e9e9e9;stop-opacity:1"
+         offset="1"
+         id="s1907" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#404040" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#404040" />
+      <a:midPointStop
+         offset="0.33"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#E9E9E9" />
+    </linearGradient>
+    <linearGradient
+       x1="221.84"
+       y1="32.779999"
+       x2="212.2"
+       y2="20.27"
+       id="lg1988"
+       xlink:href="#XMLID_419_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
+    <linearGradient
+       x1="228.35001"
+       y1="33.279999"
+       x2="215.42999"
+       y2="33.279999"
+       id="lg1900"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s1902" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="s1906" />
+      <a:midPointStop
+         style="stop-color:#575757"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#575757"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#6D6D6D"
+         offset="0.33" />
+      <a:midPointStop
+         style="stop-color:#6D6D6D"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#D3D3D3"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="234.81"
+       y1="33.279999"
+       x2="228.27"
+       y2="33.279999"
+       id="lg1908"
+       xlink:href="#lg1900"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
+    <linearGradient
+       x1="228.35001"
+       y1="33.279999"
+       x2="215.42999"
+       y2="33.279999"
+       id="XMLID_416_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#575757;stop-opacity:1"
+         offset="0"
+         id="s1874" />
+      <stop
+         style="stop-color:#6d6d6d;stop-opacity:1"
+         offset="0.33000001"
+         id="s1876" />
+      <stop
+         style="stop-color:#d3d3d3;stop-opacity:1"
+         offset="1"
+         id="s1878" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#575757" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#575757" />
+      <a:midPointStop
+         offset="0.33"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#D3D3D3" />
+    </linearGradient>
+    <linearGradient
+       x1="228.35001"
+       y1="33.279999"
+       x2="215.42999"
+       y2="33.279999"
+       id="lg1991"
+       xlink:href="#XMLID_416_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
+    <radialGradient
+       cx="603.19"
+       cy="230.77"
+       r="1.67"
+       fx="603.19"
+       fy="230.77"
+       id="x5010_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.1,0,0,1.1,-54.33,-75.4)">
+      <stop
+         style="stop-color:#c9ffc9;stop-opacity:1"
+         offset="0"
+         id="stop29201" />
+      <stop
+         style="stop-color:#23a11f;stop-opacity:1"
+         offset="1"
+         id="stop29203" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#C9FFC9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#C9FFC9" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#23A11F" />
+    </radialGradient>
+    <radialGradient
+       cx="603.19"
+       cy="230.77"
+       r="1.67"
+       fx="603.19"
+       fy="230.77"
+       id="radialGradient5711"
+       xlink:href="#x5010_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.23,0,0,1.23,-709.93,-245.02)" />
+    <linearGradient
+       x1="592.31"
+       y1="162.60001"
+       x2="609.32001"
+       y2="145.59"
+       id="lg5722"
+       xlink:href="#x5003_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="601.48999"
+       y1="170.16"
+       x2="613.84003"
+       y2="170.16"
+       id="x5002_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop29134" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.2"
+         id="stop29136" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="stop29138" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.20"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#999999" />
+    </linearGradient>
+    <linearGradient
+       x1="601.48999"
+       y1="170.16"
+       x2="613.84003"
+       y2="170.16"
+       id="lg5725"
+       xlink:href="#x5002_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.23"
+       id="x5004_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop29157" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop29159" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.23"
+       id="lg5728"
+       xlink:href="#x5004_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="592.31"
+       y1="162.60001"
+       x2="609.32001"
+       y2="145.59"
+       id="x5003_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0"
+         id="stop29143" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="1"
+         id="stop29145" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#E5E5E5" />
+    </linearGradient>
+    <linearGradient
+       x1="592.31"
+       y1="162.60001"
+       x2="609.32001"
+       y2="145.59"
+       id="lg5732"
+       xlink:href="#x5003_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.24001"
+       id="x5000_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop29124" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop29126" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.24001"
+       id="lg5735"
+       xlink:href="#x5000_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="308.54999"
+       y1="149.89999"
+       x2="299.72"
+       y2="148.83"
+       id="XMLID_2433_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d6d6d6;stop-opacity:1"
+         offset="0"
+         id="71615" />
+      <stop
+         style="stop-color:#a5a5a5;stop-opacity:1"
+         offset="1"
+         id="71617" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D6D6D6" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D6D6D6" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#A5A5A5" />
+    </linearGradient>
+    <linearGradient
+       x1="308.54999"
+       y1="149.89999"
+       x2="299.72"
+       y2="148.83"
+       id="lg1952"
+       xlink:href="#XMLID_2433_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
+    <radialGradient
+       cx="307.39999"
+       cy="121"
+       r="23.35"
+       fx="307.39999"
+       fy="121"
+       id="XMLID_2432_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.98,0,0,0.98,2.88,2.75)">
+      <stop
+         style="stop-color:#d2d2d2;stop-opacity:1"
+         offset="0.19"
+         id="71592" />
+      <stop
+         style="stop-color:#cfcfcf;stop-opacity:1"
+         offset="0.44999999"
+         id="71594" />
+      <stop
+         style="stop-color:#c7c7c7;stop-opacity:1"
+         offset="0.60000002"
+         id="71596" />
+      <stop
+         style="stop-color:#b9b9b9;stop-opacity:1"
+         offset="0.74000001"
+         id="71598" />
+      <stop
+         style="stop-color:#a4a4a4;stop-opacity:1"
+         offset="0.86000001"
+         id="71600" />
+      <stop
+         style="stop-color:#8a8a8a;stop-opacity:1"
+         offset="0.95999998"
+         id="71602" />
+      <stop
+         style="stop-color:gray;stop-opacity:1"
+         offset="1"
+         id="71604" />
+      <a:midPointStop
+         offset="0.19"
+         style="stop-color:#D2D2D2" />
+      <a:midPointStop
+         offset="0.8"
+         style="stop-color:#D2D2D2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#808080" />
+    </radialGradient>
+    <radialGradient
+       cx="307.39999"
+       cy="121"
+       r="23.35"
+       fx="307.39999"
+       fy="121"
+       id="radialGradient2331"
+       xlink:href="#XMLID_2432_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-276.62,-121.54)" />
+    <linearGradient
+       x1="294.13"
+       y1="127.07"
+       x2="294.13"
+       y2="142.2"
+       id="XMLID_2430_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b5d8ff;stop-opacity:1"
+         offset="0"
+         id="71582" />
+      <stop
+         style="stop-color:black;stop-opacity:1"
+         offset="1"
+         id="71584" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B5D8FF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B5D8FF" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#000000" />
+    </linearGradient>
+    <linearGradient
+       x1="294.13"
+       y1="127.07"
+       x2="294.13"
+       y2="142.2"
+       id="lg2820"
+       xlink:href="#XMLID_2430_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
+    <linearGradient
+       x1="279.10999"
+       y1="148.03"
+       x2="309.16"
+       y2="148.03"
+       id="XMLID_2429_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e1e1e1;stop-opacity:1"
+         offset="0"
+         id="71564" />
+      <stop
+         style="stop-color:#e1e1e1;stop-opacity:1"
+         offset="0.25"
+         id="71566" />
+      <stop
+         style="stop-color:#a5a5a5;stop-opacity:1"
+         offset="0.44"
+         id="71568" />
+      <stop
+         style="stop-color:#a5a5a5;stop-opacity:1"
+         offset="1"
+         id="71570" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.25"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.44"
+         style="stop-color:#A5A5A5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#A5A5A5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#A5A5A5" />
+    </linearGradient>
+    <linearGradient
+       x1="279.10999"
+       y1="148.03"
+       x2="309.16"
+       y2="148.03"
+       id="lg2818"
+       xlink:href="#XMLID_2429_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
+    <radialGradient
+       cx="622.34302"
+       cy="14.449"
+       r="26.496"
+       fx="622.34302"
+       fy="14.449"
+       id="lg3499_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.851,0,0,0.849,69.297,51.658)">
+      <stop
+         style="stop-color:#23468e;stop-opacity:1"
+         offset="0"
+         id="stop10972" />
+      <stop
+         style="stop-color:#012859;stop-opacity:1"
+         offset="1"
+         id="stop10974" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#23468E" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#23468E" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#012859" />
+    </radialGradient>
+    <radialGradient
+       cx="622.34302"
+       cy="14.449"
+       r="26.496"
+       fx="622.34302"
+       fy="14.449"
+       id="rg5791"
+       xlink:href="#lg3499_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.858,0,0,0.857,-511.7,9.02)" />
+    <linearGradient
+       x1="616.112"
+       y1="76.247002"
+       x2="588.14099"
+       y2="60.742001"
+       id="lg3497_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#01326e;stop-opacity:1"
+         offset="0"
+         id="stop10962" />
+      <stop
+         style="stop-color:#012859;stop-opacity:1"
+         offset="1"
+         id="stop10964" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#01326E" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#01326E" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#012859" />
+    </linearGradient>
+    <linearGradient
+       x1="617.698"
+       y1="82.445999"
+       x2="585.95203"
+       y2="54.848999"
+       id="lg3496_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="stop10950" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop10952" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="617.698"
+       y1="82.445999"
+       x2="585.95203"
+       y2="54.848999"
+       id="lg5794"
+       xlink:href="#lg3496_"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="601.39001"
+       y1="55.341"
+       x2="588.29199"
+       y2="71.515999"
+       id="lg3495_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop10941" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.52200001"
+         id="stop10943" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop10945" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.522"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="601.39001"
+       y1="55.341"
+       x2="588.29199"
+       y2="71.515999"
+       id="lg5771"
+       xlink:href="#lg3495_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.009,0,0,1.009,-581.615,-43.098)" />
+    <linearGradient
+       x1="611.34601"
+       y1="55.279999"
+       x2="590.39001"
+       y2="81.157997"
+       id="lg3494_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop10932" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.52200001"
+         id="stop10934" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop10936" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.522"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="611.34601"
+       y1="55.279999"
+       x2="590.39001"
+       y2="81.157997"
+       id="lg5774"
+       xlink:href="#lg3494_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.009,0,0,1.009,-581.616,-43.098)" />
+    <linearGradient
+       x1="798.72998"
+       y1="69.839996"
+       x2="799.04999"
+       y2="70.709999"
+       id="g3302_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#005e00;stop-opacity:1"
+         offset="0"
+         id="s6504" />
+      <stop
+         style="stop-color:#23a11f;stop-opacity:1"
+         offset="1"
+         id="s6506" />
+      <a:midPointstop
+         style="stop-color:#005E00"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#005E00"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#23A11F"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="798.72998"
+       y1="69.839996"
+       x2="799.04999"
+       y2="70.709999"
+       id="lg5851"
+       xlink:href="#g3302_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
+    <linearGradient
+       x1="779.19"
+       y1="122.73"
+       x2="811.69"
+       y2="149.74001"
+       id="g3301_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,129.19)">
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0"
+         id="s6483" />
+      <stop
+         style="stop-color:#eee;stop-opacity:1"
+         offset="0.17"
+         id="s6485" />
+      <stop
+         style="stop-color:#e3e3e3;stop-opacity:1"
+         offset="0.34"
+         id="s6487" />
+      <stop
+         style="stop-color:#cfcfcf;stop-opacity:1"
+         offset="0.50999999"
+         id="s6489" />
+      <stop
+         style="stop-color:#b4b4b4;stop-opacity:1"
+         offset="0.67000002"
+         id="s6491" />
+      <stop
+         style="stop-color:#919191;stop-opacity:1"
+         offset="0.83999997"
+         id="s6493" />
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="1"
+         id="s6495" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.71" />
+      <a:midPointstop
+         style="stop-color:#666666"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="779.19"
+       y1="122.73"
+       x2="811.69"
+       y2="149.74001"
+       id="lg5855"
+       xlink:href="#g3301_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,-0.316,0,1.263,-926.036,103.123)" />
+    <clipPath
+       id="g3299_">
+      <use
+         id="use6469"
+         x="0"
+         y="0"
+         width="1005.92"
+         height="376.97"
+         xlink:href="#g101_" />
+    </clipPath>
+    <radialGradient
+       cx="1189.9301"
+       cy="100.05"
+       r="40.400002"
+       fx="1189.9301"
+       fy="100.05"
+       id="g3300_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.34,-8.46e-2,0,0.34,394.16,137.13)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s6472" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="s6474" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#000000"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1199.74"
+       cy="97.150002"
+       r="40.400002"
+       fx="1199.74"
+       fy="97.150002"
+       id="rg5860"
+       xlink:href="#g3300_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.409,-0.107,0,0.429,-451.489,113.149)" />
+    <linearGradient
+       x1="796.38"
+       y1="67.580002"
+       x2="781.28003"
+       y2="58.549999"
+       id="g3298_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#4c8bca;stop-opacity:1"
+         offset="0"
+         id="s6462" />
+      <stop
+         style="stop-color:#b7e9ff;stop-opacity:1"
+         offset="1"
+         id="s6464" />
+      <a:midPointstop
+         style="stop-color:#4C8BCA"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#4C8BCA"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B7E9FF"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="800.97998"
+       y1="140.72"
+       x2="777.71997"
+       y2="121.76"
+       id="g3297_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,129.19)">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="s6448" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s6450" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="800.97998"
+       y1="140.72"
+       x2="777.71997"
+       y2="121.76"
+       id="lg5890"
+       xlink:href="#g3297_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,129.19)" />
+    <linearGradient
+       x1="790.03998"
+       y1="-16.33"
+       x2="779.84003"
+       y2="-3.73"
+       id="g3296_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0,70.17)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="s6439" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.51999998"
+         id="s6441" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s6443" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.52" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="790.03998"
+       y1="-16.33"
+       x2="779.84003"
+       y2="-3.73"
+       id="lg5866"
+       xlink:href="#g3296_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,28.6)" />
+    <linearGradient
+       x1="785.84003"
+       y1="72.989998"
+       x2="785.26001"
+       y2="76.279999"
+       id="g3293_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s6412" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="1"
+         id="s6414" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#737373"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="785.84003"
+       y1="72.989998"
+       x2="785.26001"
+       y2="76.279999"
+       id="lg5871"
+       xlink:href="#g3293_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
+    <linearGradient
+       x1="789.37"
+       y1="69.879997"
+       x2="791.03998"
+       y2="77.120003"
+       id="g3292_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="0"
+         id="s6403" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.28"
+         id="s6405" />
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="1"
+         id="s6407" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.28" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#666666"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="789.37"
+       y1="69.879997"
+       x2="791.03998"
+       y2="77.120003"
+       id="lg5874"
+       xlink:href="#g3292_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
+    <linearGradient
+       x1="786.65997"
+       y1="136.12"
+       x2="786.71002"
+       y2="134.33"
+       id="g3290_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,137.29)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="s6380" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="1"
+         id="s6382" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="786.65997"
+       y1="136.12"
+       x2="786.71002"
+       y2="134.33"
+       id="lg5878"
+       xlink:href="#g3290_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,-0.316,0,1.263,-926.036,113.351)" />
+    <radialGradient
+       cx="1458.77"
+       cy="-5.0999999"
+       r="35.130001"
+       fx="1458.77"
+       fy="-5.0999999"
+       id="g3289_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.42,0,0,0.42,167.09,79.84)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s6371" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="s6373" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1458.77"
+       cy="-5.0999999"
+       r="35.130001"
+       fx="1458.77"
+       fy="-5.0999999"
+       id="rg5881"
+       xlink:href="#g3289_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.505,0,0,0.53,-724.957,40.636)" />
+    <radialGradient
+       cx="1612.98"
+       cy="-4.4699998"
+       r="36.580002"
+       fx="1612.98"
+       fy="-4.4699998"
+       id="g3288_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.34,0,0,0.36,238.56,86.87)">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="s6362" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0.63999999"
+         id="s6364" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="1"
+         id="s6366" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.64" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#737373"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1612.98"
+       cy="-4.4699998"
+       r="36.580002"
+       fx="1612.98"
+       fy="-4.4699998"
+       id="rg5884"
+       xlink:href="#g3288_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.408,0,0,0.448,-638.943,49.495)" />
+    <radialGradient
+       cx="1470.5"
+       cy="-10.21"
+       r="33.290001"
+       fx="1470.5"
+       fy="-10.21"
+       id="g3287_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.42,0,0,0.42,167.09,79.84)">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="s6347" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0.38999999"
+         id="s6349" />
+      <stop
+         style="stop-color:#b1b1b1;stop-opacity:1"
+         offset="0.75"
+         id="s6351" />
+      <stop
+         style="stop-color:#aaa;stop-opacity:1"
+         offset="0.88"
+         id="s6353" />
+      <stop
+         style="stop-color:#9e9e9e;stop-opacity:1"
+         offset="0.97000003"
+         id="s6355" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="s6357" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.39" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.87" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1470.5"
+       cy="-10.21"
+       r="33.290001"
+       fx="1470.5"
+       fy="-10.21"
+       id="rg5887"
+       xlink:href="#g3287_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.505,0,0,0.53,-724.957,40.636)" />
+    <pattern
+       patternTransform="matrix(0.592927,0,0,0.592927,78,462)"
+       id="cream-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-365.3146,-513.505)"
+         id="g3047">
+           id=&quot;path2858&quot; /&gt;
+        <path
+   inkscape:label="#path2854"
+   sodipodi:nodetypes="czzzz"
+   style="fill:#e3dcc0"
+   id="path3060"
+   d="M 390.31462,529.50504 C 390.31462,534.47304 386.28262,538.50504 381.31462,538.50504 C 376.34662,538.50504 372.31462,534.47304 372.31462,529.50504 C 372.31462,524.53704 376.34662,520.50504 381.31462,520.50504 C 386.28262,520.50504 390.31462,524.53704 390.31462,529.50504 z " />
+</g>
+    </pattern>
+    <pattern
+       patternTransform="matrix(0.733751,0,0,0.733751,67,367)"
+       id="dark-cream-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-408.0946,-513.505)"
+         id="dark-cream-spot"
+         inkscape:label="#g3043">
+        <path
+           sodipodi:nodetypes="czzzz"
+           style="fill:#c8c5ac"
+           d="M 433.09458,529.50504 C 433.09458,534.47304 429.06258,538.50504 424.09458,538.50504 C 419.12658,538.50504 415.09458,534.47304 415.09458,529.50504 C 415.09458,524.53704 419.12658,520.50504 424.09458,520.50504 C 429.06258,520.50504 433.09458,524.53704 433.09458,529.50504 z "
+           id="path2953" />
+      </g>
+    </pattern>
+    <pattern
+       patternTransform="matrix(0.375,0,0,0.375,379,400)"
+       id="white-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-484.3997,-513.505)"
+         id="white-spot"
+         inkscape:label="#g3035">
+        <path
+           style="opacity:0.25;fill:white"
+           id="path3033"
+           d="M 509.39967,529.50504 C 509.39967,534.47304 505.36767,538.50504 500.39967,538.50504 C 495.43167,538.50504 491.39967,534.47304 491.39967,529.50504 C 491.39967,524.53704 495.43167,520.50504 500.39967,520.50504 C 505.36767,520.50504 509.39967,524.53704 509.39967,529.50504 z "
+           sodipodi:nodetypes="czzzz" />
+      </g>
+    </pattern>
+    <pattern
+       patternTransform="matrix(0.455007,0,0,0.455007,-5e-5,1.9e-5)"
+       id="black-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-448.3997,-513.505)"
+         id="black-spot"
+         inkscape:label="#g3039">
+        <path
+           sodipodi:nodetypes="czzzz"
+           d="M 473.39967,529.50504 C 473.39967,534.47304 469.36767,538.50504 464.39967,538.50504 C 459.43167,538.50504 455.39967,534.47304 455.39967,529.50504 C 455.39967,524.53704 459.43167,520.50504 464.39967,520.50504 C 469.36767,520.50504 473.39967,524.53704 473.39967,529.50504 z "
+           id="path2961"
+           style="opacity:0.25;fill:black" />
+      </g>
+    </pattern>
+    <linearGradient
+       x1="501.0903"
+       y1="-19.2544"
+       x2="531.85413"
+       y2="0.72390002"
+       id="linearGradient17334"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop17336" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop17338" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop17340" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop17342" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.5112"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.6461"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#16336E" />
+    </linearGradient>
+    <linearGradient
+       x1="415.73831"
+       y1="11.854"
+       x2="418.13361"
+       y2="18.8104"
+       id="linearGradient17426"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8362,0.5206,-1.1904,0.992,147.62,-30.9374)">
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="0"
+         id="stop17428" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop17430" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#F2F2F2" />
+    </linearGradient>
+    <linearGradient
+       x1="478.21341"
+       y1="-131.9297"
+       x2="469.85818"
+       y2="-140.28481"
+       id="linearGradient17434"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.5592,0.829,-0.829,0.5592,101.3357,-104.791)">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop17436" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop17438" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop17440" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop17442" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#F3403F" />
+      <a:midPointStop
+         offset="0.4213"
+         style="stop-color:#F3403F" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#A6100C" />
+    </linearGradient>
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17709"
+       xlink:href="#XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)" />
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17711"
+       xlink:href="#XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="linearGradient17713"
+       xlink:href="#XMLID_1753_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17715"
+       xlink:href="#XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="500.70749"
+       y1="-13.2441"
+       x2="513.46442"
+       y2="-2.1547"
+       id="linearGradient17717"
+       xlink:href="#XMLID_1757_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="linearGradient17721"
+       xlink:href="#XMLID_2274_"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="linearGradient17723"
+       xlink:href="#XMLID_2275_"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="500.70749"
+       y1="-13.2441"
+       x2="513.46442"
+       y2="-2.1547"
+       id="linearGradient17416"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop17418" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop17420" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <defs
+       id="defs9929">
+      <path
+         d="M 489.21,209.35 L 485.35,203.63 C 483.63,204.25 473.47,208.93 471.5,210.18 C 470.57,210.77 470.17,211.16 469.72,212.48 C 470.93,212.31 471.72,212.49 473.42,213.04 C 473.26,214.77 473.24,215.74 473.57,218.2 C 474.01,216.88 474.41,216.49 475.34,215.9 C 477.33,214.65 487.49,209.97 489.21,209.35 z "
+         id="XMLID_960_" />
+    </defs>
+    <clipPath
+       id="clipPath17448">
+      <use
+         id="use17450"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_960_" />
+    </clipPath>
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="linearGradient17452"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop17454" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop17456" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop17458" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop17460" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="linearGradient17463"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop17465" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop17467" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop17469" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop17471" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="linearGradient17807"
+       xlink:href="#XMLID_2275_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-177.1654,35.43307)" />
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="linearGradient17810"
+       xlink:href="#XMLID_2274_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-177.1654,35.43307)" />
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17812"
+       xlink:href="#XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)" />
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17814"
+       xlink:href="#XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="linearGradient17816"
+       xlink:href="#XMLID_1753_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17818"
+       xlink:href="#XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17347"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop17349" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop17351" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#96BAD6" />
+    </linearGradient>
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="linearGradient17379"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop17381" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop17383" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#F2F2F2" />
+    </linearGradient>
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17862"
+       xlink:href="#XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,-166.1427,-0.18283)" />
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17864"
+       xlink:href="#XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <defs
+       id="defs3859">
+      <polygon
+         points="465.54,213.52 481.94,217.46 482.74,216.71 487.46,198.05 471.08,194.07 470.26,194.83 465.54,213.52 "
+         id="XMLID_343_" />
+    </defs>
+    <linearGradient
+       x1="471.0806"
+       y1="201.07761"
+       x2="481.91711"
+       y2="210.4977"
+       id="linearGradient17389"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#6498c1;stop-opacity:1"
+         offset="0.005618"
+         id="stop17391" />
+      <stop
+         style="stop-color:#79a9cc;stop-opacity:1"
+         offset="0.2332"
+         id="stop17393" />
+      <stop
+         style="stop-color:#a4cde2;stop-opacity:1"
+         offset="0.74049997"
+         id="stop17395" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="1"
+         id="stop17397" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="5.618000e-003" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="0.4438" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="clipPath17400">
+      <use
+         id="use17402"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_343_" />
+    </clipPath>
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17404"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop17406" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop17408" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop17410" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop17412" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17882"
+       xlink:href="#XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <defs
+       id="defs3826">
+      <polygon
+         points="463.52,216.14 480.56,220.24 481.36,219.5 483.03,202.04 469.05,196.69 468.24,197.45 463.52,216.14 "
+         id="XMLID_338_" />
+    </defs>
+    <linearGradient
+       x1="468.2915"
+       y1="204.7612"
+       x2="479.39871"
+       y2="214.4166"
+       id="linearGradient17357"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop17359" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop17361" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="clipPath17364">
+      <use
+         id="use17366"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_338_" />
+    </clipPath>
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17368"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop17370" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop17372" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop17374" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop17376" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398"
+       id="linearGradient2387"
+       xlink:href="#linearGradient2381"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
+    <linearGradient
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398"
+       id="linearGradient5105"
+       xlink:href="#linearGradient2381"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
+    <linearGradient
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398"
+       id="linearGradient5145"
+       xlink:href="#linearGradient2381"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2381"
+       id="linearGradient2371"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)"
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398" />
+  </defs>
+  <g
+     transform="matrix(0.437808,-0.437808,0.437808,0.437808,-220.8237,43.55311)"
+     id="g5089">
+    <path
+       d="M 8.4382985,-6.28125 C 7.8309069,-6.28125 4.125,-0.33238729 4.125,1.96875 L 4.125,28.6875 C 4.125,29.533884 4.7068159,29.8125 5.28125,29.8125 L 30.84375,29.8125 C 31.476092,29.8125 31.968751,29.319842 31.96875,28.6875 L 31.96875,23.46875 L 32.25,23.46875 C 32.74684,23.46875 33.156249,23.059339 33.15625,22.5625 L 33.15625,-5.375 C 33.15625,-5.8718398 32.74684,-6.28125 32.25,-6.28125 L 8.4382985,-6.28125 z "
+       transform="translate(282.8327,227.1903)"
+       style="fill:#5c5c4f;stroke:black;stroke-width:3.23021388;stroke-miterlimit:4;stroke-dasharray:none"
+       id="path5091" />
+    <rect
+       width="27.85074"
+       height="29.369793"
+       rx="1.1414107"
+       ry="1.1414107"
+       x="286.96509"
+       y="227.63805"
+       style="fill:#032c87"
+       id="rect5093" />
+    <path
+       d="M 288.43262,225.43675 L 313.67442,225.43675 L 313.67442,254.80655 L 287.29827,254.83069 L 288.43262,225.43675 z "
+       style="fill:white"
+       id="rect5095" />
+    <path
+       d="M 302.44536,251.73726 C 303.83227,259.59643 301.75225,263.02091 301.75225,263.02091 C 303.99609,261.41329 305.71651,259.54397 306.65747,257.28491 C 307.62455,259.47755 308.49041,261.71357 310.9319,263.27432 C 310.9319,263.27432 309.33686,256.07392 309.22047,251.73726 L 302.44536,251.73726 z "
+       style="fill:#a70000;fill-opacity:1;stroke-width:2"
+       id="path5097" />
+    <rect
+       width="25.241802"
+       height="29.736675"
+       rx="0.89682275"
+       ry="0.89682275"
+       x="290.73544"
+       y="220.92249"
+       style="fill:#809cc9"
+       id="rect5099" />
+    <path
+       d="M 576.47347,725.93939 L 582.84431,726.35441 L 583.25121,755.8725 C 581.35919,754.55465 576.39694,752.1117 574.98889,754.19149 L 574.98889,727.42397 C 574.98889,726.60151 575.65101,725.93939 576.47347,725.93939 z "
+       transform="matrix(0.499065,-0.866565,0,1,0,0)"
+       style="fill:#4573b3;fill-opacity:1"
+       id="rect5101" />
+    <path
+       d="M 293.2599,221.89363 L 313.99908,221.89363 C 314.45009,221.89363 314.81318,222.25673 314.81318,222.70774 C 315.02865,229.0361 295.44494,244.47124 292.44579,240.30491 L 292.44579,222.70774 C 292.44579,222.25673 292.80889,221.89363 293.2599,221.89363 z "
+       style="opacity:0.65536726;fill:url(#linearGradient2371);fill-opacity:1"
+       id="path5103" />
+  </g>
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/issues.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/issues.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/layoutForm-example.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/layoutForm-example.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/list.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/list.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/messages.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/messages.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/numberguess-pageflow.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/numberguess-pageflow.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/numberguess.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/numberguess.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/plugin-jbpm-numguess.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/plugin-jbpm-numguess.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/plugin-jbpm-todo.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/plugin-jbpm-todo.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/plugin-testng.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/plugin-testng.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/register.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/register.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/registration.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/registration.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/switcher.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/switcher.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/testng.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/testng.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/todo-process.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/todo-process.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/todo.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/en-US/images/todo.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Annotations.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Annotations.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Annotations.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2467 @@
+# translation of Annotations.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Xi HUANG <xhuang at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Annotations\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 01:04+0000\n"
+"PO-Revision-Date: 2007-10-19 13:42+1000\n"
+"Last-Translator: Angela Garcia\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Annotations.xml:6
+#, no-c-format
+msgid "Seam annotations"
+msgstr "Anotaciones Seam"
+
+#. Tag: para
+#: Annotations.xml:7
+#, no-c-format
+msgid ""
+"When you write a Seam application, you&#39;ll use a lot of annotations. Seam "
+"lets you use annotations to achieve a declarative style of programming. Most "
+"of the annotations you&#39;ll use are defined by the EJB 3.0 specification. "
+"The annotations for data validation are defined by the Hibernate Validator "
+"package. Finally, Seam defines its own set of annotations, which we&#39;ll "
+"describe in this chapter."
+msgstr ""
+"Cuando escriba una aplicación Seam utilizará bastantes anotaciones. Seam le "
+"permite utilizar anotaciones para lograr un estilo declarativo de "
+"programación. La mayoría de las anotaciones que utilizará están definidas "
+"por la especificación EJB 3.0. Las anotaciones para la validación de datos "
+"son definidas por el paquete Hibernate Validator. Finalmente, Seam define su "
+"propio grupo de anotaciones, el cual vamos a describir en este capítulo."
+
+#. Tag: para
+#: Annotations.xml:10
+#, no-c-format
+msgid ""
+"All of these annotations are defined in the package <literal>org.jboss.seam."
+"annotations</literal>."
+msgstr ""
+"Todas estas anotaciones están definidas en el paquete <literal>org.jboss."
+"seam.annotations</literal>."
+
+#. Tag: title
+#: Annotations.xml:14
+#, no-c-format
+msgid "Annotations for component definition"
+msgstr "Anotaciones para la definición de componentes"
+
+#. Tag: para
+#: Annotations.xml:15
+#, no-c-format
+msgid ""
+"The first group of annotations lets you define a Seam component. These "
+"annotations appear on the component class."
+msgstr ""
+"El primer grupo de anotaciones le permite definir un componente Seam. Estas "
+"anotaciones aparecen en la clase de componentes."
+
+#. Tag: literal
+#: Annotations.xml:20
+#, no-c-format
+msgid "@Name"
+msgstr "@Name"
+
+#. Tag: programlisting
+#: Annotations.xml:22
+#, no-c-format
+msgid "@Name(\"componentName\")"
+msgstr "@Name(\"componentName\")"
+
+#. Tag: para
+#: Annotations.xml:23
+#, no-c-format
+msgid ""
+"Defines the Seam component name for a class. This annotation is required for "
+"all Seam components."
+msgstr ""
+"Define el nombre de un componente Seam para una clase. Esta anotación se "
+"necesita para todos los componentes Seam."
+
+#. Tag: literal
+#: Annotations.xml:29
+#, no-c-format
+msgid "@Scope"
+msgstr "@Scope"
+
+#. Tag: programlisting
+#: Annotations.xml:31
+#, no-c-format
+msgid "@Scope(ScopeType.CONVERSATION)"
+msgstr "@Scope(ScopeType.CONVERSATION)"
+
+#. Tag: para
+#: Annotations.xml:32
+#, no-c-format
+msgid ""
+"Defines the default context of the component. The possible values are "
+"defined by the <literal>ScopeType</literal> enumeration: <literal>EVENT, "
+"PAGE, CONVERSATION, SESSION, BUSINESS_PROCESS, APPLICATION, STATELESS</"
+"literal>."
+msgstr ""
+"Define el contexto predeterminado del componente. La enumeración "
+"<literal>ScopeType</literal> define los valores posibles: <literal>EVENT, "
+"PAGE, CONVERSATION, SESSION, BUSINESS_PROCESS, APPLICATION, STATELESS</"
+"literal>."
+
+#. Tag: para
+#: Annotations.xml:35
+#, no-c-format
+msgid ""
+"When no scope is explicitly specified, the default depends upon the "
+"component type. For stateless session beans, the default is "
+"<literal>STATELESS</literal>. For entity beans and stateful session beans, "
+"the default is <literal>CONVERSATION</literal>. For JavaBeans, the default "
+"is <literal>EVENT</literal>."
+msgstr ""
+"Cuando no se especifica un ámbito de manera axplícita, el valor "
+"predeterminado depende del tipo de componente. Para los beans de sesión sin "
+"estado, el valor predeterminado es <literal>STATELESS</literal>. Para los "
+"beans de sesión con estado y los beans de entidades el valor predeterminado "
+"es <literal>CONVERSATION</literal>. Para los JavaBeans, el valor "
+"predeterminado es <literal>EVENT</literal>."
+
+#. Tag: literal
+#: Annotations.xml:41
+#, no-c-format
+msgid "@Role"
+msgstr "@Role"
+
+#. Tag: programlisting
+#: Annotations.xml:43
+#, no-c-format
+msgid "@Role(name=\"roleName\", scope=ScopeType.SESSION)"
+msgstr "@Role(name=\"roleName\", scope=ScopeType.SESSION)"
+
+#. Tag: para
+#: Annotations.xml:44
+#, no-c-format
+msgid ""
+"Allows a Seam component to be bound to multiple contexts variables. The "
+"<literal>@Name</literal>/<literal>@Scope</literal> annotations define a "
+"\"default role\". Each <literal>@Role</literal> annotation defines an "
+"additional role."
+msgstr ""
+"Le permite vincular un componente Seam a múltiples variables de contexto. "
+"Las anotaciones <literal>@Name</literal>/<literal>@Scope</literal> definen "
+"un \"rol predeterminado\". Cada anotación <literal>@Role</literal> define un "
+"rol adicional."
+
+#. Tag: para
+#: Annotations.xml:49
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the context variable name."
+msgstr "<literal>name</literal> &mdash; el nombre de la variable de contexto."
+
+#. Tag: para
+#: Annotations.xml:54
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; the context variable scope. When no scope "
+"is explicitly specified, the default depends upon the component type, as "
+"above."
+msgstr ""
+"<literal>scope</literal> &mdash; el ámbiro de la variable de contexto. "
+"Cuando no se especifica explícitamente un ámbito, el valor predeterminado "
+"depende del tipo del componente como en el anterior. "
+
+#. Tag: literal
+#: Annotations.xml:62
+#, no-c-format
+msgid "@Roles"
+msgstr "@Roles"
+
+#. Tag: programlisting
+#: Annotations.xml:64
+#, no-c-format
+msgid ""
+"@Roles({\n"
+"        @Role(name=\"user\", scope=ScopeType.CONVERSATION),\n"
+"        @Role(name=\"currentUser\", scope=ScopeType.SESSION)\n"
+"    })"
+msgstr ""
+"@Roles({\n"
+"        @Role(name=\"user\", scope=ScopeType.CONVERSATION),\n"
+"        @Role(name=\"currentUser\", scope=ScopeType.SESSION)\n"
+"    })"
+
+#. Tag: para
+#: Annotations.xml:65
+#, no-c-format
+msgid "Allows specification of multiple additional roles."
+msgstr "Permite la especificación de múltiples roles adicionales."
+
+#. Tag: literal
+#: Annotations.xml:71
+#, no-c-format
+msgid "@Intercept"
+msgstr "@Intercept"
+
+#. Tag: programlisting
+#: Annotations.xml:73
+#, no-c-format
+msgid "@Intercept(InterceptionType.ALWAYS)"
+msgstr "@Intercept(InterceptionType.ALWAYS)"
+
+#. Tag: para
+#: Annotations.xml:74
+#, no-c-format
+msgid ""
+"Determines when Seam interceptors are active. The possible values are "
+"defined by the <literal>InterceptionType</literal> enumeration: "
+"<literal>ALWAYS, AFTER_RESTORE_VIEW, AFTER_UPDATE_MODEL_VALUES, "
+"INVOKE_APPLICATION, NEVER</literal>."
+msgstr ""
+"Determina cuando los interceptores Seam están activos. Los valores posibles "
+"están definidos por la enumeración <literal>InterceptionType</literal>: "
+"<literal>ALWAYS, AFTER_RESTORE_VIEW, AFTER_UPDATE_MODEL_VALUES, "
+"INVOKE_APPLICATION, NEVER</literal>."
+
+#. Tag: para
+#: Annotations.xml:77
+#, no-c-format
+msgid ""
+"When no interception type is explicitly specified, the default depends upon "
+"the component type. For entity beans, the default is <literal>NEVER</"
+"literal>. For session beans, message driven beans and JavaBeans, the default "
+"is <literal>ALWAYS</literal>."
+msgstr ""
+"Cuando no se especifica explícitamente el tipo de intercepción, el valor "
+"predeterminado depende del tipo de componente. Para los beans de entidad, el "
+"valor predeterminado es <literal>NEVER</literal>. Para los beans de sesión, "
+"los beans dirigidos por mensajes y JavaBeans, el valor predeterminado es "
+"<literal>ALWAYS</literal>."
+
+#. Tag: literal
+#: Annotations.xml:83
+#, no-c-format
+msgid "@JndiName"
+msgstr "@JndiName"
+
+#. Tag: programlisting
+#: Annotations.xml:85
+#, no-c-format
+msgid "@JndiName(\"my/jndi/name\")"
+msgstr "@JndiName(\"my/jndi/name\")"
+
+#. Tag: para
+#: Annotations.xml:86
+#, no-c-format
+msgid ""
+"Specifies the JNDI name that Seam will use to look up the EJB component. If "
+"no JNDI name is explicitly specified, Seam will use the JNDI pattern "
+"specified by <literal>org.jboss.seam.core.init.jndiPattern</literal>."
+msgstr ""
+"Especifica el nombre JNDI que Seam utilizará para buscar el componente EJB. "
+"Si no se especifica ningún nombre JNDI de manera explícita Seam utilizará el "
+"patrón JNDI especificado por <literal>org.jboss.seam.core.init.jndiPattern</"
+"literal>."
+
+#. Tag: literal
+#: Annotations.xml:92
+#, no-c-format
+msgid "@Conversational"
+msgstr "@Conversational"
+
+#. Tag: programlisting
+#: Annotations.xml:94
+#, no-c-format
+msgid "@Conversational(ifNotBegunOutcome=\"error\")"
+msgstr "@Conversational(ifNotBegunOutcome=\"error\")"
+
+#. Tag: para
+#: Annotations.xml:95
+#, no-c-format
+msgid ""
+"Specifies that a conversation scope component is conversational, meaning "
+"that no method of the component can be called unless a long-running "
+"conversation started by this component is active (unless the method would "
+"begin a new long-running conversation)."
+msgstr ""
+"Especifica que un componente de ámbito de conversación es conversacional, lo "
+"cual significa que no se puede llamar un método de componente a menos de que "
+"se encuentre activa una conversación larga iniciada por este componente (a "
+"menos de que el método empezara una nueva conversación larga)."
+
+#. Tag: literal
+#: Annotations.xml:101
+#, no-c-format
+msgid "<literal>@Startup</literal>"
+msgstr "<literal>@Startup</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:103
+#, no-c-format
+msgid "@Startup(depends={\"org.jboss.core.jndi\", \"org.jboss.core.jta\"})"
+msgstr "@Startup(depends={\"org.jboss.core.jndi\", \"org.jboss.core.jta\"})"
+
+#. Tag: para
+#: Annotations.xml:104
+#, no-c-format
+msgid ""
+"Specifies that an application scope component is started immediately at "
+"initialization time. This is mainly used for certain built-in components "
+"that bootstrap critical infrastructure such as JNDI, datasources, etc."
+msgstr ""
+"Especifica que un componente de ámbito de aplicación se inicia de manera "
+"inmediata al momento de inicialización. Esto se utiliza principalmente para "
+"ciertos componentes incorporados que realizan bootstrap en infraestructura "
+"crítica tal como JNDI, fuente de datos, etc. "
+
+#. Tag: programlisting
+#: Annotations.xml:107
+#, no-c-format
+msgid "<programlisting>@Startup</programlisting>"
+msgstr "<programlisting>@Startup</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:108
+#, no-c-format
+msgid ""
+"Specifies that a session scope component is started immediately at session "
+"creation time."
+msgstr ""
+"Especifica que un componente de ámbito de sesión se inicia de manera "
+"inmediata en el momento de creación de la sesión."
+
+#. Tag: para
+#: Annotations.xml:113
+#, no-c-format
+msgid ""
+"<literal>depends</literal> &mdash; specifies that the named components must "
+"be started first, if they are installed."
+msgstr ""
+"<literal>depends</literal> &mdash; especifica que los componentes nombrados "
+"se deben iniciar primero si se encuentran instalados."
+
+#. Tag: literal
+#: Annotations.xml:121
+#, no-c-format
+msgid "@Install"
+msgstr "@Install"
+
+#. Tag: programlisting
+#: Annotations.xml:123
+#, no-c-format
+msgid "@Install(false)"
+msgstr "@Install(false)"
+
+#. Tag: para
+#: Annotations.xml:124
+#, no-c-format
+msgid ""
+"Specifies whether or not a component should be installed by default. The "
+"lack of an @Install annotation indicates a component should be installed."
+msgstr ""
+"Especifica si un componente se debe instalar o no por defecto. La falta de "
+"una anotación @Install indica que se debe instalar un componente."
+
+#. Tag: programlisting
+#: Annotations.xml:127
+#, no-c-format
+msgid "@Install(dependencies=\"org.jboss.seam.core.jbpm\")"
+msgstr "@Install(dependencies=\"org.jboss.seam.core.jbpm\")"
+
+#. Tag: para
+#: Annotations.xml:128
+#, no-c-format
+msgid ""
+"Specifies that a component should only be stalled if the components listed "
+"as dependencies are also installed."
+msgstr ""
+"Especifica que un componente sólamente se debe detener si también se "
+"instalan los componentes listados como dependencias."
+
+#. Tag: programlisting
+#: Annotations.xml:131
+#, no-c-format
+msgid "@Install(genericDependencies=ManagedQueueSender.class)"
+msgstr "@Install(genericDependencies=ManagedQueueSender.class)"
+
+#. Tag: para
+#: Annotations.xml:132
+#, no-c-format
+msgid ""
+"Specifies that a component should only be installed if a component that is "
+"implemented by a certain class is installed. This is useful when the "
+"dependency doesn&#39;t have a single well-known name."
+msgstr ""
+"Especifica que un componente sólo se debe instalar si se instala un "
+"componente que es implementado por cierta clase. Esto es útil cuando la "
+"dependencia no tiene un sólo nombre bien conocido. "
+
+#. Tag: programlisting
+#: Annotations.xml:135
+#, no-c-format
+msgid "@Install(classDependencies=\"org.hibernate.Session\")"
+msgstr "@Install(classDependencies=\"org.hibernate.Session\")"
+
+#. Tag: para
+#: Annotations.xml:136
+#, no-c-format
+msgid ""
+"Specifies that a component should only be installed if the named class is in "
+"the classpath."
+msgstr ""
+"Especifica que un componente sólo se debe instalar si la clase nombrada se "
+"encuentra en la ruta de clase."
+
+#. Tag: programlisting
+#: Annotations.xml:139
+#, no-c-format
+msgid "@Install(precedence=BUILT_IN)"
+msgstr "@Install(precedence=BUILT_IN)"
+
+#. Tag: para
+#: Annotations.xml:140
+#, no-c-format
+msgid ""
+"Specifies the precedence of the component. If multiple components with the "
+"same name exist, the one with the higher precedence will be installed. The "
+"defined precendence values are (in ascending order):"
+msgstr ""
+"Especifica la precedencia del componente. Si existen múltiples componentes "
+"con el mismo nombre entonces se instalará el que tiene mayor precendencia. "
+"Los valores de precedencia definidos son (en orden ascendente):"
+
+#. Tag: para
+#: Annotations.xml:145
+#, no-c-format
+msgid ""
+"<literal>BUILT_IN</literal> &mdash; Precedence of all built-in Seam "
+"components"
+msgstr ""
+"<literal>BUILT_IN</literal> &mdash; Precedencia de todos los componentes "
+"incorporados de Seam."
+
+#. Tag: para
+#: Annotations.xml:150
+#, no-c-format
+msgid ""
+"<literal>FRAMEWORK</literal> &mdash; Precedence to use for components of "
+"frameworks which extend Seam"
+msgstr ""
+"<literal>FRAMEWORK</literal> &mdash; Precedencia para utilizar componentes "
+"de marcos de trabajo que extienden Seam."
+
+#. Tag: para
+#: Annotations.xml:155
+#, no-c-format
+msgid ""
+"<literal>APPLICATION</literal> &mdash; Predence of application components "
+"(the default precedence)"
+msgstr ""
+"<literal>APPLICATION</literal> &mdash; Predencia de los componentes de la "
+"aplicación (la precedencia predeterminada)."
+
+#. Tag: para
+#: Annotations.xml:160
+#, no-c-format
+msgid ""
+"<literal>DEPLOYMENT</literal> &mdash; Precedence to use for components which "
+"override application components in a particular deployment"
+msgstr ""
+"<literal>DEPLOYMENT</literal> &mdash; Precedencia para utilizar los "
+"componentes que sobreescriben los componentes de la aplicación en un "
+"despliegue en particular."
+
+#. Tag: para
+#: Annotations.xml:165
+#, no-c-format
+msgid ""
+"<literal>MOCK</literal> &mdash; Precedence for mock objects used in testing"
+msgstr ""
+"<literal>MOCK</literal> &mdash; Precedencia para simular objetos utilizados "
+"en pruebas."
+
+#. Tag: literal
+#: Annotations.xml:173
+#, no-c-format
+msgid "@Synchronized"
+msgstr "@Synchronized"
+
+#. Tag: programlisting
+#: Annotations.xml:175
+#, no-c-format
+msgid "@Synchronized(timeout=1000)"
+msgstr "@Synchronized(timeout=1000)"
+
+#. Tag: para
+#: Annotations.xml:176
+#, no-c-format
+msgid ""
+"Specifies that a component is accessed concurrently by multiple clients, and "
+"that Seam should serialize requests. If a request is not able to obtain its "
+"lock on the component in the given timeout period, an exception will be "
+"raised."
+msgstr ""
+"Especifica que múltiples clientes pueden acceder de manera simultánea un "
+"componente y que Seam debe serializar las peticiones. Si una petición no "
+"puede obtener su seguro en el componente durante el periodo de vencimiento "
+"dado entonces se presentará una excepción."
+
+#. Tag: literal
+#: Annotations.xml:182
+#, no-c-format
+msgid "<literal>@ReadOnly</literal>"
+msgstr "<literal>@ReadOnly</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:184
+#, no-c-format
+msgid "<programlisting>@ReadOnly</programlisting>"
+msgstr "<programlisting>@ReadOnly</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:185
+#, no-c-format
+msgid ""
+"Specifies that a JavaBean component or component method does not require "
+"state replication at the end of the invocation."
+msgstr ""
+"Especifica que un componente JavaBean o un método de componente no requiere "
+"replicación de estado al final de la invocación. "
+
+#. Tag: title
+#: Annotations.xml:194
+#, no-c-format
+msgid "Annotations for bijection"
+msgstr "Anotaciones para la biyección"
+
+#. Tag: para
+#: Annotations.xml:195
+#, no-c-format
+msgid ""
+"The next two annotations control bijection. These attributes occur on "
+"component instance variables or property accessor methods."
+msgstr ""
+"Las próximas dos anotaciones controlan la biyección. Estos atributos ocurren "
+"en las variables de instancia de componentes o en los métodos accesores de "
+"propiedades."
+
+#. Tag: literal
+#: Annotations.xml:200
+#, no-c-format
+msgid "<literal>@In</literal>"
+msgstr "<literal>@In</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:202
+#, no-c-format
+msgid "<programlisting>@In</programlisting>"
+msgstr "<programlisting>@In</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:203
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. If the context "
+"variable is null, an exception will be thrown."
+msgstr ""
+"Especifica que un atributo de componente se debe inyectar desde una variable "
+"de contexto al comienzo de cada invocación de componentes. Si la variable de "
+"contextos es nula entonces se presentará una excepción."
+
+#. Tag: programlisting
+#: Annotations.xml:206
+#, no-c-format
+msgid "@In(required=false)"
+msgstr "@In(required=false)"
+
+#. Tag: para
+#: Annotations.xml:207
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. The context variable "
+"may be null."
+msgstr ""
+"Especifica que un atributo de componentes se debe inyectar desde una "
+"variable de contexto al comienzo de cada invocación de componentes. La "
+"variable de contexto puede ser nula."
+
+#. Tag: programlisting
+#: Annotations.xml:210
+#, no-c-format
+msgid "@In(create=true)"
+msgstr "@In(create=true)"
+
+#. Tag: para
+#: Annotations.xml:211
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. If the context "
+"variable is null, an instance of the component is instantiated by Seam."
+msgstr ""
+"Especifica que un atributo de componentes se debe inyectar desde una "
+"variable de contexto al comienzo de cada invocación de componentes. Si la "
+"variable de contexto es nula entonces una instancia del componente es "
+"instanciada por Seam."
+
+#. Tag: programlisting
+#: Annotations.xml:214
+#, no-c-format
+msgid "@In(value=\"contextVariableName\")"
+msgstr "@In(value=\"contextVariableName\")"
+
+#. Tag: para
+#: Annotations.xml:215 Annotations.xml:260
+#, no-c-format
+msgid ""
+"Specifies the name of the context variable explicitly, instead of using the "
+"annotated instance variable name."
+msgstr ""
+"Especifica el nombre de la variable de contexto de manera explícita en vez "
+"de utilizar el nombre de la variable de instancia anotada."
+
+#. Tag: programlisting
+#: Annotations.xml:218
+#, no-c-format
+msgid "@In(value=\"#{customer.addresses[&#39;shipping&#39;]}\")"
+msgstr "@In(value=\"#{customer.addresses[&#39;shipping&#39;]}\")"
+
+#. Tag: para
+#: Annotations.xml:219
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected by evaluating a JSF "
+"EL expression at the beginning of each component invocation."
+msgstr ""
+"Especifica que un atributo de componente se debe inyectar evaluando una "
+"expresión EL JSF al comienzo de cada invocación de componentes."
+
+#. Tag: para
+#: Annotations.xml:224
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"Default to the name of the component attribute. Alternatively, specifies a "
+"JSF EL expression, surrounded by <literal>#{...}</literal>."
+msgstr ""
+"<literal>value</literal> &mdash; especifica el nombre de la variable de "
+"contexto. Por defecto es el nombre del atributo del componente. De manera "
+"alternativa, especifica una expresión EL JSF rodeada de <literal>#{...}</"
+"literal>."
+
+#. Tag: para
+#: Annotations.xml:229
+#, no-c-format
+msgid ""
+"<literal>create</literal> &mdash; specifies that Seam should instantiate the "
+"component with the same name as the context variable if the context variable "
+"is undefined (null) in all contexts. Default to false."
+msgstr ""
+"<literal>create</literal> &mdash; especifica que Seam debe instanciar el "
+"componente con el mismo nombre que la variable de contexto si esta variable "
+"no se encuentra definida (nula) en todos los contextos. Por defecto es falsa."
+
+#. Tag: para
+#: Annotations.xml:234
+#, no-c-format
+msgid ""
+"<literal>required</literal> &mdash; specifies Seam should throw an exception "
+"if the context variable is undefined in all contexts."
+msgstr ""
+"<literal>required</literal> &mdash; especifica que Seam debe emitir una "
+"excepción si la variable de contexto no se encuentra definida en todos los "
+"contextos."
+
+#. Tag: literal
+#: Annotations.xml:242
+#, no-c-format
+msgid "<literal>@Out</literal>"
+msgstr "<literal>@Out</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:244
+#, no-c-format
+msgid "<programlisting>@Out</programlisting>"
+msgstr "<programlisting>@Out</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:245
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is a Seam component is to be "
+"outjected to its context variable at the end of the invocation. If the "
+"attribute is null, an exception is thrown."
+msgstr ""
+"Especifica que un atributo de componente que sea un componente Seam se debe "
+"eyectar a su variable de contexto al final de la invocación. Si el atributo "
+"es nulo entonces se presentará una excepción."
+
+#. Tag: programlisting
+#: Annotations.xml:248
+#, no-c-format
+msgid "@Out(required=false)"
+msgstr "@Out(required=false)"
+
+#. Tag: para
+#: Annotations.xml:249
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is a Seam component is to be "
+"outjected to its context variable at the end of the invocation. The "
+"attribute may be null."
+msgstr ""
+"Especifica que un atributo de componente que sea un componente Seam se debe "
+"eyectar a su variable de contexto al final de la invocación. El atributo "
+"puede ser nulo."
+
+#. Tag: programlisting
+#: Annotations.xml:252
+#, no-c-format
+msgid "@Out(scope=ScopeType.SESSION)"
+msgstr "@Out(scope=ScopeType.SESSION)"
+
+#. Tag: para
+#: Annotations.xml:253
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is <emphasis>not</emphasis> a Seam "
+"component type is to be outjected to a specific scope at the end of the "
+"invocation."
+msgstr ""
+"Especifica que un atributo de componente que <emphasis>no</emphasis> es un "
+"tipo de componente Seam se debe eyectar a un ámbito en especifico al final "
+"de la invocación."
+
+#. Tag: para
+#: Annotations.xml:256
+#, no-c-format
+msgid ""
+"Alternatively, if no scope is explicitly specified, the scope of the "
+"component with the <literal>@Out</literal> attribute is used (or the "
+"<literal>EVENT</literal> scope if the component is stateless)."
+msgstr ""
+"De manera alternativa, si no se especifica un ámbito de forma explícita "
+"entonces se utiliza el ámbito del componente con el atributo <literal>@Out</"
+"literal> (o el ámbito <literal>EVENT</literal> si el componente no tiene "
+"estado)."
+
+#. Tag: programlisting
+#: Annotations.xml:259
+#, no-c-format
+msgid "@Out(value=\"contextVariableName\")"
+msgstr "@Out(value=\"contextVariableName\")"
+
+#. Tag: para
+#: Annotations.xml:265
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"Default to the name of the component attribute."
+msgstr ""
+"<literal>value</literal> &mdash; especifica el nombre de la variable de "
+"contexto. Por defecto es el nombre del atributo de componentes."
+
+#. Tag: para
+#: Annotations.xml:270
+#, no-c-format
+msgid ""
+"<literal>required</literal> &mdash; specifies Seam should throw an exception "
+"if the component attribute is null during outjection."
+msgstr ""
+"<literal>required</literal> &mdash; especifica que Seam debe presentar una "
+"excepción si el atributo del componente es nulo durante la eyección."
+
+#. Tag: para
+#: Annotations.xml:278
+#, no-c-format
+msgid ""
+"Note that it is quite common for these annotations to occur together, for "
+"example:"
+msgstr ""
+"Observe que es bastante común que estas anotaciones tengan lugar juntas, por "
+"ejemplo:"
+
+#. Tag: programlisting
+#: Annotations.xml:281
+#, no-c-format
+msgid "@In(create=true) @Out private User currentUser;"
+msgstr "@In(create=true) @Out private User currentUser;"
+
+#. Tag: para
+#: Annotations.xml:282
+#, no-c-format
+msgid ""
+"The next annotation supports the <emphasis>manager component</emphasis> "
+"pattern, where a Seam component that manages the lifecycle of an instance of "
+"some other class that is to be injected. It appears on a component getter "
+"method."
+msgstr ""
+"La próxima anotación soporta el patrón <emphasis>componente administrador</"
+"emphasis>, en donde un componente Seam que administra el ciclo de vida de "
+"una instancia de alguna otra clase que debe ser eyectada. Aparece en un "
+"método getter de componentes."
+
+#. Tag: literal
+#: Annotations.xml:287
+#, no-c-format
+msgid "<literal>@Unwrap</literal>"
+msgstr "<literal>@Unwrap</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:289
+#, no-c-format
+msgid "<programlisting>@Unwrap</programlisting>"
+msgstr "<programlisting>@Unwrap</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:290
+#, no-c-format
+msgid ""
+"Specifies that the object returned by the annotated getter method is the "
+"thing that is injected instead of the component instance itself."
+msgstr ""
+"Especifica que el objeto retornado por el método getter anotado es lo que se "
+"inyecta en vez de la instancia de componente misma. "
+
+#. Tag: para
+#: Annotations.xml:296
+#, no-c-format
+msgid ""
+"The next annotation supports the <emphasis>factory component</emphasis> "
+"pattern, where a Seam component is responsible for initializing the value of "
+"a context variable. This is especially useful for initializing any state "
+"needed for rendering the response to a non-faces request. It appears on a "
+"component method."
+msgstr ""
+"La próxima anotación soporta el patrón <emphasis>componente de fábrica</"
+"emphasis>, en donde un componente Seam es el responsable de inicializar el "
+"valor de una variable de contexto. Esto es especialmente útil para "
+"inicializar cualquier estado que se necesite para poder presentar la "
+"respuesta a una petición que no sea de faces. Aparece en un método de "
+"componentes."
+
+#. Tag: literal
+#: Annotations.xml:301
+#, no-c-format
+msgid "@Factory"
+msgstr "@Factory"
+
+#. Tag: programlisting
+#: Annotations.xml:303
+#, no-c-format
+msgid "@Factory(\"processInstance\")"
+msgstr "@Factory(\"processInstance\")"
+
+#. Tag: para
+#: Annotations.xml:304
+#, no-c-format
+msgid ""
+"Specifies that the method of the component is used to initialize the value "
+"of the named context variable, when the context variable has no value. This "
+"style is used with methods that return <literal>void</literal>."
+msgstr ""
+"Especifica que el método del componente se utiliza para inicializar el valor "
+"de la variable de contexto nombrada cuando la variable de contexto no tiene "
+"valor. Este estilo se utiliza con los métodos que retornan <literal>void</"
+"literal>."
+
+#. Tag: programlisting
+#: Annotations.xml:307
+#, no-c-format
+msgid "@Factory(\"processInstance\", scope=CONVERSATION)"
+msgstr "@Factory(\"processInstance\", scope=CONVERSATION)"
+
+#. Tag: para
+#: Annotations.xml:308
+#, no-c-format
+msgid ""
+"Specifies that the method returns a value that Seam should use to initialize "
+"the value of the named context variable, when the context variable has no "
+"value. This style is used with methods that return a value. If no scope is "
+"explicitly specified, the scope of the component with the <literal>@Factory</"
+"literal> method is used (unless the component is stateless, in which case "
+"the <literal>EVENT</literal> context is used)."
+msgstr ""
+"Especifica que el método retorna un valor que Seam debe utilizar para "
+"inicializar el valor de la variable de contexto nombrada cuando la variable "
+"de contexto no tiene uno. Este estilo se utiliza con los métodos que "
+"retornan un valor. Si no se especifica un ámbito de manera explícita "
+"entonces se utiliza el ámbito del componente con el método "
+"<literal>@Factory</literal> (a menos de que el componente no tenga estado, "
+"en cuyo caso se utiliza el contexto <literal>EVENT</literal>)."
+
+#. Tag: para
+#: Annotations.xml:313
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"If the method is a getter method, default to the JavaBeans property name."
+msgstr ""
+"<literal>value</literal> &mdash; especifica el nombre de la variable de "
+"contexto. Si el método es un método getter el valor predeterminado es un "
+"nombre de propiedad de JavaBeans."
+
+#. Tag: para
+#: Annotations.xml:318
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; specifies the scope that Seam should bind "
+"the returned value to. Only meaningful for factory methods which return a "
+"value."
+msgstr ""
+"<literal>scope</literal> &mdash; especifica el ámbito al que Seam debe "
+"vincular el valor retornado. Sólamente es útil para los métodos de fábrica "
+"que devuelven un valor. "
+
+#. Tag: para
+#: Annotations.xml:326
+#, no-c-format
+msgid "This annotation lets you inject a <literal>Log</literal>:"
+msgstr "Esta anotación le permite inyectar un <literal>Log</literal>:"
+
+#. Tag: literal
+#: Annotations.xml:331
+#, no-c-format
+msgid "@Logger"
+msgstr "@Logger"
+
+#. Tag: programlisting
+#: Annotations.xml:333
+#, no-c-format
+msgid "@Logger(\"categoryName\")"
+msgstr "@Logger(\"categoryName\")"
+
+#. Tag: para
+#: Annotations.xml:334
+#, no-c-format
+msgid ""
+"Specifies that a component field is to be injected with an instance of "
+"<literal>org.jboss.seam.log.Log</literal>. For entity beans, the field must "
+"be declared as static."
+msgstr ""
+"Especifica que un campo de componente se debe inyectar con una instancia de "
+"<literal>org.jboss.seam.log.Log</literal>. Para los beans de entidad, el "
+"campo se debe declarar como estático."
+
+#. Tag: para
+#: Annotations.xml:339
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the log category. "
+"Default to the name of the component class."
+msgstr ""
+"<literal>value</literal> &mdash; especifica el nombre de la categoria de "
+"registro. Por defecto es el nombre de la clase de componente."
+
+#. Tag: para
+#: Annotations.xml:347
+#, no-c-format
+msgid "The last annotation lets you inject a request parameter value:"
+msgstr ""
+"La última anotación le permite inyectar un valor de parámetro de petición:"
+
+#. Tag: literal
+#: Annotations.xml:352
+#, no-c-format
+msgid "@RequestParameter"
+msgstr "@RequestParameter"
+
+#. Tag: programlisting
+#: Annotations.xml:354
+#, no-c-format
+msgid "@RequestParameter(\"parameterName\")"
+msgstr "@RequestParameter(\"parameterName\")"
+
+#. Tag: para
+#: Annotations.xml:355
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected with the value of a "
+"request parameter. Basic type conversions are performed automatically."
+msgstr ""
+"Especifica que un atributo de componente se debe inyectar con el valor de un "
+"parámetro de petición. Las conversiones de tipo básico se realizan "
+"automáticamente."
+
+#. Tag: para
+#: Annotations.xml:360
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the request "
+"parameter. Default to the name of the component attribute."
+msgstr ""
+"<literal>value</literal> &mdash; especifica el nombre del parámetro de "
+"petición. Por defecto es el nombre del atributo del componente."
+
+#. Tag: title
+#: Annotations.xml:371
+#, no-c-format
+msgid "Annotations for component lifecycle methods"
+msgstr "Anotaciones para los métodos de ciclos de vida de componentes"
+
+#. Tag: para
+#: Annotations.xml:372
+#, no-c-format
+msgid ""
+"These annotations allow a component to react to its own lifecycle events. "
+"They occur on methods of the component. There may be only one of each per "
+"component class."
+msgstr ""
+"Estas anotaciones le permiten a un componente reaccionar frente a sus "
+"propios eventos durante el ciclo de vida. Estos ocurren en los métodos del "
+"componente. Puede haber sólamente uno de cada uno por cada clase de "
+"componente."
+
+#. Tag: literal
+#: Annotations.xml:377
+#, no-c-format
+msgid "<literal>@Create</literal>"
+msgstr "<literal>@Create</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:379
+#, no-c-format
+msgid "<programlisting>@Create</programlisting>"
+msgstr "<programlisting>@Create</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:380
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when an instance of the component "
+"is instantiated by Seam. Note that create methods are only supported for "
+"JavaBeans and stateful session beans."
+msgstr ""
+"Especifica que el método se debe llamar cuando una instancia del componente "
+"es instanciada por Seam. Observe que los métodos create sólamente se "
+"soportan para los JavaBeans y los beans de sesión con estado."
+
+#. Tag: literal
+#: Annotations.xml:386
+#, no-c-format
+msgid "<literal>@Destroy</literal>"
+msgstr "<literal>@Destroy</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:388
+#, no-c-format
+msgid "<programlisting>@Destroy</programlisting>"
+msgstr "<programlisting>@Destroy</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:389
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when the context ends and its "
+"context variables are destroyed. Note that create methods are only supported "
+"for JavaBeans and stateful session beans."
+msgstr ""
+"Especifica que el método debe llamarse cuando el contexto tiene fin y cuando "
+"se destruyen sus variables de contexto. Observe que los métodos create "
+"sólamente se soportan para los JavaBeans y para los beans de sesión con "
+"estado."
+
+#. Tag: para
+#: Annotations.xml:392
+#, no-c-format
+msgid ""
+"Note that all stateful session bean components <emphasis>must</emphasis> "
+"define a method annotated <literal>@Destroy @Remove</literal> in order to "
+"guarantee destruction of the stateful bean when a context ends."
+msgstr ""
+"Observe que todos los componentes de beans de sesión con estado "
+"<emphasis>tienen</emphasis> que definir un método anotado <literal>@Destroy "
+"@Remove</literal> para poder garantizar la destrucción del bean con estado "
+"cuando un contexto tiene fin."
+
+#. Tag: para
+#: Annotations.xml:395
+#, no-c-format
+msgid ""
+"Destroy methods should be used only for cleanup. <emphasis>Seam catches, "
+"logs and swallows any exception that propagates out of a destroy method.</"
+"emphasis>"
+msgstr ""
+"Los métodos de destrucción (destroy) sólamente se deben utilizar para "
+"limpiar. <emphasis>Seam atrapa, registra y se traga cualquier excepción que "
+"se propague fuera de un método de destrucción (destroy).</emphasis>"
+
+#. Tag: literal
+#: Annotations.xml:401
+#, no-c-format
+msgid "@Observer"
+msgstr "@Observer"
+
+#. Tag: programlisting
+#: Annotations.xml:403
+#, no-c-format
+msgid "@Observer(\"somethingChanged\")"
+msgstr "@Observer(\"somethingChanged\")"
+
+#. Tag: para
+#: Annotations.xml:404
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when a component-driven event of "
+"the specified type occurs."
+msgstr ""
+"Especifica que se debe llamar el método cuando tiene lugar un evento "
+"dirigido por componentes del tipo especificado."
+
+#. Tag: programlisting
+#: Annotations.xml:407
+#, no-c-format
+msgid "@Observer(value=\"somethingChanged\",create=false)"
+msgstr "@Observer(value=\"somethingChanged\",create=false)"
+
+#. Tag: para
+#: Annotations.xml:408
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when an event of the specified "
+"type occurs but that an instance should not be created if one doesn&#39;t "
+"exist. If an instance does not exist and create is false, the event will not "
+"be observed. The default value for create is true."
+msgstr ""
+"Especifica que se debe llamar el método cuando tiene lugar un evento del "
+"tipo especificado pero esa instancia no se debe crear si no existe. Si la "
+"instancia no existe y create es false entonces el evento no será observado. "
+"El valor predeterminado para create es true.  "
+
+#. Tag: title
+#: Annotations.xml:417
+#, no-c-format
+msgid "Annotations for context demarcation"
+msgstr "Anotaciones para la demarcación de contexto"
+
+#. Tag: para
+#: Annotations.xml:418
+#, no-c-format
+msgid ""
+"These annotations provide declarative conversation demarcation. They appear "
+"on methods of Seam components, usually action listener methods."
+msgstr ""
+"Estas anotaciones proporcionan una demarcación de conversación declarativa. "
+"Aparecen en métodos de componentes Seam, usualmente métodos de escucha de "
+"acciones."
+
+#. Tag: para
+#: Annotations.xml:421
+#, no-c-format
+msgid ""
+"Every web request has a conversation context associated with it. Most of "
+"these conversations end at the end of the request. If you want a "
+"conversation that span multiple requests, you must \"promote\" the current "
+"conversation to a <emphasis>long-running conversation</emphasis> by calling "
+"a method marked with <literal>@Begin</literal>."
+msgstr ""
+"Toda petición web tiene un contexto de conversación asociado con él. La "
+"mayoría de estas conversaciones terminan al final de la petición. Si quiere "
+"que una conversación abarque múltiples peticiones debe \"ascender\" la "
+"conversación actual a una <emphasis>conversación larga</emphasis> llamando "
+"un método marcado con <literal>@Begin</literal>."
+
+#. Tag: literal
+#: Annotations.xml:426
+#, no-c-format
+msgid "<literal>@Begin</literal>"
+msgstr "<literal>@Begin</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:430
+#, no-c-format
+msgid "<programlisting>@Begin</programlisting>"
+msgstr "<programlisting>@Begin</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:431
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation begins when this method returns a "
+"non-null outcome without exception."
+msgstr ""
+"Especifica que una conversación larga comienza cuando un método retorna una "
+"salida nula sin excepciones. "
+
+#. Tag: programlisting
+#: Annotations.xml:436
+#, no-c-format
+msgid "@Begin(ifOutcome={\"success\", \"continue\"})"
+msgstr "@Begin(ifOutcome={\"success\", \"continue\"})"
+
+#. Tag: para
+#: Annotations.xml:437
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation begins when this action listener "
+"method returns with one of the given outcomes."
+msgstr ""
+"Especifica que una conversación larga comienza cuando este método de escucha "
+"de acciones retorna con una de las salidas dadas."
+
+#. Tag: programlisting
+#: Annotations.xml:442
+#, no-c-format
+msgid "@Begin(join=true)"
+msgstr "@Begin(join=true)"
+
+#. Tag: para
+#: Annotations.xml:443
+#, no-c-format
+msgid ""
+"Specifies that if a long-running conversation is already in progress, the "
+"conversation context is simply propagated."
+msgstr ""
+"Especifica que si una conversación larga ya está en progreso, el contexto de "
+"conversación simplemente se propaga."
+
+#. Tag: programlisting
+#: Annotations.xml:448
+#, no-c-format
+msgid "@Begin(nested=true)"
+msgstr "@Begin(nested=true)"
+
+#. Tag: para
+#: Annotations.xml:449
+#, no-c-format
+msgid ""
+"Specifies that if a long-running conversation is already in progress, a new "
+"<emphasis>nested</emphasis> conversation context begins. The nested "
+"conversation will end when the next <literal>@End</literal> is encountered, "
+"and the outer conversation will resume. It is perfectly legal for multiple "
+"nested conversations to exist concurrently in the same outer conversation."
+msgstr ""
+"Especifica que si una conversación larga ya está en progreso entonces se "
+"inicia un contexto de conversación <emphasis>anidado</emphasis>. La "
+"conversación anidada terminará cuando encuentre el siguiente <literal>@End</"
+"literal> y la conversación exterior se reiniciará. Para las conversaciones "
+"anidadas múltiples es completamente legal existir de manera simultánea en la "
+"misma conversación externa."
+
+#. Tag: programlisting
+#: Annotations.xml:454
+#, no-c-format
+msgid "@Begin(pageflow=\"process definition name\")"
+msgstr "@Begin(pageflow=\"process definition name\")"
+
+#. Tag: para
+#: Annotations.xml:455
+#, no-c-format
+msgid ""
+"Specifies a jBPM process definition name that defines the pageflow for this "
+"conversation."
+msgstr ""
+"Especifica un nombre de definición de procesos jBPM que define el flujo de "
+"página para esta conversación."
+
+#. Tag: programlisting
+#: Annotations.xml:460
+#, no-c-format
+msgid "@Begin(flushMode=FlushModeType.MANUAL)"
+msgstr "@Begin(flushMode=FlushModeType.MANUAL)"
+
+#. Tag: para
+#: Annotations.xml:461
+#, no-c-format
+msgid ""
+"Specify the flush mode of any Seam-managed persistence contexts. "
+"<literal>flushMode=FlushModeType.MANUAL</literal> supports the use of "
+"<emphasis>atomic conversations</emphasis> where all write operations are "
+"queued in the conversation context until an explicit call to <literal>flush()"
+"</literal> (which usually occurs at the end of the conversation)."
+msgstr ""
+"Especifica el modo de vaciado de cualquier contexto de persistencia "
+"administrado por Seam. <literal>flushMode=FlushModeType.MANUAL</literal> "
+"soporta el use de <emphasis>conversaciones atómicas</emphasis> en donde "
+"todas las operaciones de escritura van a la cola del contexto de "
+"conversación hasta que se realice una llamada explícita a <literal>flush()</"
+"literal> (lo cual usualmente ocurre al final de la conversación)."
+
+#. Tag: para
+#: Annotations.xml:468
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in a new long-running conversation context."
+msgstr ""
+"<literal>ifOutcome</literal> &mdash; especifica la salida JSF o las salidas "
+"que resultan en un nuevo contexto de conversación largo."
+
+#. Tag: para
+#: Annotations.xml:473
+#, no-c-format
+msgid ""
+"<literal>join</literal> &mdash; determines the behavior when a long-running "
+"conversation is already in progress. If <literal>true</literal>, the context "
+"is propagated. If <literal>false</literal>, an exception is thrown. Default "
+"to <literal>false</literal>. This setting is ignored when "
+"<literal>nested=true</literal> is specified"
+msgstr ""
+"<literal>join</literal> &mdash; determina el comportamiento cuando una "
+"conversación larga ya se encuentra en progreso. Si es <literal>true</"
+"literal> entonces el contexto se propaga. Si es <literal>false</literal> se "
+"emite una excepción. Por defecto es <literal>false</literal>. Esta "
+"configuración se ignora cuando se especifica <literal>nested=true</literal>."
+
+#. Tag: para
+#: Annotations.xml:478
+#, no-c-format
+msgid ""
+"<literal>nested</literal> &mdash; specifies that a nested conversation "
+"should be started if a long-running conversation is already in progress."
+msgstr ""
+"<literal>nested</literal> &mdash; especifica que se debe iniciar una "
+"conversación anidada si ya hay una conversation larga en progreso."
+
+#. Tag: para
+#: Annotations.xml:483 Annotations.xml:550 Annotations.xml:574
+#, no-c-format
+msgid ""
+"<literal>flushMode</literal> &mdash; set the flush mode of any Seam-managed "
+"Hibernate sessions or JPA persistence contexts that are created during this "
+"conversation."
+msgstr ""
+"<literal>flushMode</literal> &mdash; configura el modo de vaciado de "
+"cualquier sesión Hibernate administrada por Seam o contextos de persistencia "
+"JPA que se crean durante esta conversación."
+
+#. Tag: para
+#: Annotations.xml:488
+#, no-c-format
+msgid ""
+"<literal>pageflow</literal> &mdash; a process definition name of a jBPM "
+"process definition deployed via <literal>org.jboss.seam.core.jbpm."
+"pageflowDefinitions.</literal>"
+msgstr ""
+"<literal>pageflow</literal> &mdash; un nombre de definición de procesos de "
+"una definición de proceso jBPM desplegado por medio de <literal>org.jboss."
+"seam.core.jbpm.pageflowDefinitions.</literal>"
+
+#. Tag: literal
+#: Annotations.xml:498
+#, no-c-format
+msgid "<literal>@End</literal>"
+msgstr "<literal>@End</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:504
+#, no-c-format
+msgid "<programlisting>@End</programlisting>"
+msgstr "<programlisting>@End</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:505
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation ends when this method returns a "
+"non-null outcome without exception."
+msgstr ""
+"Especifica que una conversación larga termina cuando este método retorna una "
+"salida que no es nula sin una excepción."
+
+#. Tag: programlisting
+#: Annotations.xml:510
+#, no-c-format
+msgid ""
+"@End(ifOutcome={\"success\", \"error\"}, evenIfException={SomeException."
+"class, OtherException.class})"
+msgstr ""
+"@End(ifOutcome={\"success\", \"error\"}, evenIfException={SomeException."
+"class, OtherException.class})"
+
+#. Tag: para
+#: Annotations.xml:511
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation ends when this action listener "
+"method returns with one of the given outcomes or throws one of the specified "
+"classes of exception."
+msgstr ""
+"Especifica que una conversación larga termina cuando este método de escucha "
+"de acciones retorna con una de las salidas dadas o presenta una de las "
+"clases especificadas de excepción."
+
+#. Tag: para
+#: Annotations.xml:518
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in the end of the current long-running conversation."
+msgstr ""
+"<literal>ifOutcome</literal> &mdash; especifica la salida JSF o las salidas "
+"que se presentan al final de la conversación larga."
+
+#. Tag: para
+#: Annotations.xml:523 Annotations.xml:617
+#, no-c-format
+msgid ""
+"<literal>beforeRedirect</literal> &mdash; by default, the conversation will "
+"not actually be destroyed until after any redirect has occurred. Setting "
+"<literal>beforeRedirect=true</literal> specifies that the conversation "
+"should be destroyed at the end of the current request, and that the redirect "
+"will be processed in a new temporary conversation context."
+msgstr ""
+"<literal>beforeRedirect</literal> &mdash; por defecto, la conversación no "
+"será destruida en realidad si no hasta que tenga lugar una redirección. El "
+"configurar <literal>beforeRedirect=true</literal> especifica que la "
+"conversación debe ser destruída al final de la petición actual y que el "
+"redireccionameinto se procesará en un nuevo contexto de conversación "
+"temporal."
+
+#. Tag: literal
+#: Annotations.xml:534
+#, no-c-format
+msgid "<literal>@StartTask</literal>"
+msgstr "<literal>@StartTask</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:536
+#, no-c-format
+msgid "<programlisting>@StartTask</programlisting>"
+msgstr "<programlisting>@StartTask</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:537
+#, no-c-format
+msgid ""
+"\"Starts\" a jBPM task. Specifies that a long-running conversation begins "
+"when this method returns a non-null outcome without exception. This "
+"conversation is associated with the jBPM task specified in the named request "
+"parameter. Within the context of this conversation, a business process "
+"context is also defined, for the business process instance of the task "
+"instance."
+msgstr ""
+"\"Inicia\" una tarea jBPM. Especifica que una conversación larga comienza "
+"cuando este método retorna una salida que no es nula sin excepciones. Esta "
+"conversación es asociada con la tarea jBPM especificada en el parámetro de "
+"petición nombrado. Dentro del contexto de esta conversación también se "
+"define un contexto de proceso empresarial para la instancia del proceso "
+"empresarial de la instancia de la tarea."
+
+#. Tag: para
+#: Annotations.xml:540
+#, no-c-format
+msgid ""
+"The jBPM <literal>TaskInstance</literal> will be available in a request "
+"context variable named <literal>taskInstance</literal>. The jPBM "
+"<literal>ProcessInstance</literal> will be available in a request context "
+"variable named <literal>processInstance</literal>. (Of course, these objects "
+"are available for injection via <literal>@In</literal>.)"
+msgstr ""
+"La <literal>TaskInstance</literal> de jBPM estará disponible en una variable "
+"de contexto de petición llamada <literal>taskInstance</literal>. La "
+"<literal>ProcessInstance</literal> de jPBM estará disponible en una variable "
+"de contexto de petición llamada <literal>processInstance</literal> (por "
+"supuesto, estos objetos se encuentran disponibles para inyección por medio "
+"de <literal>@In</literal>)."
+
+#. Tag: para
+#: Annotations.xml:545 Annotations.xml:569
+#, no-c-format
+msgid ""
+"<literal>taskIdParameter</literal> &mdash; the name of a request parameter "
+"which holds the id of the task. Default to <literal>\"taskId\"</literal>, "
+"which is also the default used by the Seam <literal>taskList</literal> JSF "
+"component."
+msgstr ""
+"<literal>taskIdParameter</literal> &mdash; el nombre de un parámetro de "
+"petición que mantiene el id de la tarea. Por defecto es <literal>\"taskId\"</"
+"literal>, el cual también es el valor predeterminado que el componente JSF "
+"<literal>taskList</literal> que Seam utiliza. "
+
+#. Tag: literal
+#: Annotations.xml:558
+#, no-c-format
+msgid "<literal>@BeginTask</literal>"
+msgstr "<literal>@BeginTask</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:560
+#, no-c-format
+msgid "<programlisting>@BeginTask</programlisting>"
+msgstr "<programlisting>@BeginTask</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:561
+#, no-c-format
+msgid ""
+"Resumes work on an incomplete jBPM task. Specifies that a long-running "
+"conversation begins when this method returns a non-null outcome without "
+"exception. This conversation is associated with the jBPM task specified in "
+"the named request parameter. Within the context of this conversation, a "
+"business process context is also defined, for the business process instance "
+"of the task instance."
+msgstr ""
+"Reanuda el trabajo en una tarea jBPM incompleta. Especifica que una "
+"conversación larga comienza cuando este método retorna una salida que no es "
+"nula sin excepciones. Esta conversación se asocia con la tarea jBPM "
+"especificada en el parámetro de petición nombrado. Dentro del contexto de "
+"esta conversación también se define un contexto de proceso empresarial para "
+"la instancia del proceso empresarial de la instancia de la tarea."
+
+#. Tag: para
+#: Annotations.xml:564
+#, no-c-format
+msgid ""
+"The jBPM <literal>TaskInstance</literal> will be available in a request "
+"context variable named <literal>taskInstance</literal>. The jPBM "
+"<literal>ProcessInstance</literal> will be available in a request context "
+"variable named <literal>processInstance</literal>."
+msgstr ""
+"La <literal>TaskInstance</literal> jBPM estará disponible en una variable de "
+"contexto de petición llamada <literal>taskInstance</literal>. La "
+"<literal>ProcessInstance</literal> de jPBM estará disponible en una variable "
+"de contexto de petición llamada <literal>processInstance</literal>."
+
+#. Tag: literal
+#: Annotations.xml:582
+#, no-c-format
+msgid "<literal>@EndTask</literal>"
+msgstr "<literal>@EndTask</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:587
+#, no-c-format
+msgid "<programlisting>@EndTask</programlisting>"
+msgstr "<programlisting>@EndTask</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:588
+#, no-c-format
+msgid ""
+"\"Ends\" a jBPM task. Specifies that a long-running conversation ends when "
+"this method returns a non-null outcome, and that the current task is "
+"complete. Triggers a jBPM transition. The actual transition triggered will "
+"be the default transition unless the application has called "
+"<literal>Transition.setName()</literal> on the built-in component named "
+"<literal>transition</literal>."
+msgstr ""
+"\"Finaliza\" una tarea jBPM. Especifica que una conversación larga termina "
+"cuando este método retorna una salida que no es nula y que la tarea actual "
+"está completa. Dispara una transición jBPM. La transición disparada será la "
+"transición predeterminada a menos de que la aplicación haya llamado "
+"<literal>Transition.setName()</literal> en el componente incorporado "
+"denominado <literal>transition</literal>."
+
+#. Tag: programlisting
+#: Annotations.xml:593
+#, no-c-format
+msgid "@EndTask(transition=\"transitionName\")"
+msgstr "@EndTask(transition=\"transitionName\")"
+
+#. Tag: para
+#: Annotations.xml:594
+#, no-c-format
+msgid "Triggers the given jBPM transition."
+msgstr "Dispara la transición jBPM dada."
+
+#. Tag: programlisting
+#: Annotations.xml:599
+#, no-c-format
+msgid "@EndTask(ifOutcome={\"success\", \"continue\"})"
+msgstr "@EndTask(ifOutcome={\"success\", \"continue\"})"
+
+#. Tag: para
+#: Annotations.xml:600
+#, no-c-format
+msgid ""
+"Specifies that the task ends when this method returns one of the listed "
+"outcomes."
+msgstr ""
+"Especifica que la tarea finaliza cuando este método retorna una de las "
+"salidas enumeradas."
+
+#. Tag: para
+#: Annotations.xml:607
+#, no-c-format
+msgid ""
+"<literal>transition</literal> &mdash; the name of the jBPM transition to be "
+"triggered when ending the task. Defaults to the default transition."
+msgstr ""
+"<literal>transition</literal> &mdash; el nombre de la transición jBPM que se "
+"disparará al terminar la tarea. Por defecto es la transición predeterminada."
+
+#. Tag: para
+#: Annotations.xml:612
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in the end of the task."
+msgstr ""
+"<literal>ifOutcome</literal> &mdash; especifica la salida JSF o las salidas "
+"que resultan al final de la tarea."
+
+#. Tag: literal
+#: Annotations.xml:628
+#, no-c-format
+msgid "@CreateProcess"
+msgstr "@CreateProcess"
+
+#. Tag: programlisting
+#: Annotations.xml:630
+#, no-c-format
+msgid "@CreateProcess(definition=\"process definition name\")"
+msgstr "@CreateProcess(definition=\"process definition name\")"
+
+#. Tag: para
+#: Annotations.xml:631
+#, no-c-format
+msgid ""
+"Creates a new jBPM process instance when the method returns a non-null "
+"outcome without exception. The <literal>ProcessInstance</literal> object "
+"will be available in a context variable named <literal>processInstance</"
+"literal>."
+msgstr ""
+"Crea una nueva instancia de proceso jBPM cuando el método retorna una salida "
+"que no es nula sin excepciones. El objeto <literal>ProcessInstance</literal> "
+"estará disponible en una variable de contexto llamada "
+"<literal>processInstance</literal>."
+
+#. Tag: para
+#: Annotations.xml:636
+#, no-c-format
+msgid ""
+"<literal>definition</literal> &mdash; the name of the jBPM process "
+"definition deployed via <literal>org.jboss.seam.core.jbpm."
+"processDefinitions</literal>."
+msgstr ""
+"<literal>definition</literal> &mdash; el nombre de la definición del proceso "
+"jBPM desplegado por medio de <literal>org.jboss.seam.core.jbpm."
+"processDefinitions</literal>."
+
+#. Tag: literal
+#: Annotations.xml:644
+#, no-c-format
+msgid "@ResumeProcess"
+msgstr "@ResumeProcess"
+
+#. Tag: programlisting
+#: Annotations.xml:646
+#, no-c-format
+msgid "@ResumeProcess(processIdParameter=\"processId\")"
+msgstr "@ResumeProcess(processIdParameter=\"processId\")"
+
+#. Tag: para
+#: Annotations.xml:647
+#, no-c-format
+msgid ""
+"Re-enters the scope of an existing jBPM process instance when the method "
+"returns a non-null outcome without exception. The <literal>ProcessInstance</"
+"literal> object will be available in a context variable named "
+"<literal>processInstance</literal>."
+msgstr ""
+"Reintroduce el ámbito de una instancia de proceso jBPM existente cuando el "
+"método retorna una salida que no es nula sin excepciones. El objeto "
+"<literal>ProcessInstance</literal> estará disponible en una variable de "
+"contexto llamada <literal>processInstance</literal>."
+
+#. Tag: para
+#: Annotations.xml:652
+#, no-c-format
+msgid ""
+"<literal>processIdParameter</literal> &mdash; the name a request parameter "
+"holding the process id. Default to <literal>\"processId\"</literal>."
+msgstr ""
+"<literal>processIdParameter</literal> &mdash; el nombre de un parámetro de "
+"petición que mantiene el id del proceso. Por defecto es <literal>\"processId"
+"\"</literal>."
+
+#. Tag: title
+#: Annotations.xml:663
+#, no-c-format
+msgid "Annotations for transaction demarcation"
+msgstr "Anotaciones para la demarcación de transacciones"
+
+#. Tag: para
+#: Annotations.xml:664
+#, no-c-format
+msgid ""
+"Seam provides an annotation that lets you force a rollback of the JTA "
+"transaction for certain action listener outcomes."
+msgstr ""
+"Seam proporciona una anotación que le permite revertir una transacción JTA "
+"de manera forzarda para ciertas salidas de escuchas de acciones."
+
+#. Tag: literal
+#: Annotations.xml:669
+#, no-c-format
+msgid "@Rollback"
+msgstr "@Rollback"
+
+#. Tag: programlisting
+#: Annotations.xml:671
+#, no-c-format
+msgid "@Rollback(ifOutcome={\"failure\", \"not-found\"})"
+msgstr "@Rollback(ifOutcome={\"failure\", \"not-found\"})"
+
+#. Tag: para
+#: Annotations.xml:672
+#, no-c-format
+msgid ""
+"If the outcome of the method matches any of the listed outcomes, or if no "
+"outcomes are listed, set the transaction to rollback only when the method "
+"completes."
+msgstr ""
+"Si la salida del método coincide con cualquiera de las salidas enumeradas o "
+"si no se lista ninguna salida entonces configure para poder revertir la "
+"transacción sólamente cuando se complete el método."
+
+#. Tag: para
+#: Annotations.xml:677
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; the JSF outcomes that cause a "
+"transaction rollback (no outcomes is interpreted to mean any outcome)."
+msgstr ""
+"<literal>ifOutcome</literal> &mdash; las salidas JSF que causan el revertir "
+"una transacción (el no tener salidas se interpreta como cualquier salida)."
+
+#. Tag: literal
+#: Annotations.xml:685
+#, no-c-format
+msgid "<literal>@Transactional</literal>"
+msgstr "<literal>@Transactional</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:687
+#, no-c-format
+msgid "<programlisting>@Transactional</programlisting>"
+msgstr "<programlisting>@Transactional</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:688
+#, no-c-format
+msgid ""
+"Specifies that a JavaBean component should have a similar transactional "
+"behavior to the default behavior of a session bean component. ie. method "
+"invocations should take place in a transaction, and if no transaction exists "
+"when the method is called, a transaction will be started just for that "
+"method. This annotation may be applied at either class or method level."
+msgstr ""
+"Especifica que un componente JavaBean debe tener un comportamiento "
+"transaccional similar al comportamiento predeterminado de un componente bean "
+"de sesión por ejemplo, las invocaciones de método deben tener lugar en una "
+"transacción y si no existe una transacción cuando se llama al método "
+"entonces se iniciará una transacción tan sólo para ese método. Esta "
+"anotación se puede aplicar en cualquier clase o nivel de método."
+
+#. Tag: para
+#: Annotations.xml:694
+#, no-c-format
+msgid ""
+"Seam applications usually use the standard EJB3 annotations for all other "
+"transaction demarcation needs."
+msgstr ""
+"Las aplicaciones Seam usualmente utilizan las anotaciones EJB3 estándares "
+"para las otras necesidades de demarcación de transacciones."
+
+#. Tag: title
+#: Annotations.xml:700
+#, no-c-format
+msgid "Annotations for exceptions"
+msgstr "Anotaciones para las excepciones"
+
+#. Tag: para
+#: Annotations.xml:701
+#, no-c-format
+msgid ""
+"These annotations let you specify how Seam should handle an exception that "
+"propagates out of a Seam component."
+msgstr ""
+"Estas anotaciones le permiten especificar la manera en que Seam debe manejar "
+"una excepción que se propaga fuera de un componente Seam."
+
+#. Tag: literal
+#: Annotations.xml:706
+#, no-c-format
+msgid "@Redirect"
+msgstr "@Redirect"
+
+#. Tag: programlisting
+#: Annotations.xml:708
+#, no-c-format
+msgid "@Redirect(viewId=\"error.jsp\")"
+msgstr "@Redirect(viewId=\"error.jsp\")"
+
+#. Tag: para
+#: Annotations.xml:709
+#, no-c-format
+msgid ""
+"Specifies that the annotated exception causes a browser redirect to a "
+"specified view id."
+msgstr ""
+"Especifica que la excepción anotada causa una redirección del navegador a un "
+"id de vista en específico."
+
+#. Tag: para
+#: Annotations.xml:714
+#, no-c-format
+msgid ""
+"<literal>viewId</literal> &mdash; specifies the JSF view id to redirect to."
+msgstr ""
+"<literal>viewId</literal> &mdash; especifica el id de la vista JSF a donde "
+"se debe redireccionar."
+
+#. Tag: para
+#: Annotations.xml:719
+#, no-c-format
+msgid ""
+"<literal>message</literal> &mdash; a message to be displayed, default to the "
+"exception message."
+msgstr ""
+"<literal>message</literal> &mdash; un mensaje que se debe presentar, el "
+"valor predeterminado para el mensaje de excepción."
+
+#. Tag: para
+#: Annotations.xml:724 Annotations.xml:750
+#, no-c-format
+msgid ""
+"<literal>end</literal> &mdash; specifies that the long-running conversation "
+"should end, default to <literal>false</literal>."
+msgstr ""
+"<literal>end</literal> &mdash; especifica que la conversation larga debe "
+"terminar, por defecto es <literal>false</literal>."
+
+#. Tag: literal
+#: Annotations.xml:732
+#, no-c-format
+msgid "@HttpError"
+msgstr "@HttpError"
+
+#. Tag: programlisting
+#: Annotations.xml:734
+#, no-c-format
+msgid "@HttpError(errorCode=404)"
+msgstr "@HttpError(errorCode=404)"
+
+#. Tag: para
+#: Annotations.xml:735
+#, no-c-format
+msgid "Specifies that the annotated exception causes a HTTP error to be sent."
+msgstr "Especifica que la excepción anotada genera un error HTTP."
+
+#. Tag: para
+#: Annotations.xml:740
+#, no-c-format
+msgid ""
+"<literal>errorCode</literal> &mdash; the HTTP error code, default to "
+"<literal>500</literal>."
+msgstr ""
+"<literal>errorCode</literal> &mdash; el código de error de HTTP, por defecto "
+"es <literal>500</literal>."
+
+#. Tag: para
+#: Annotations.xml:745
+#, no-c-format
+msgid ""
+"<literal>message</literal> &mdash; a message to be sent with the HTTP error, "
+"default to the exception message."
+msgstr ""
+"<literal>message</literal> &mdash; un mensaje que se debe enviar junto con "
+"el error HTTP, por defecto es el mensaje de excepción."
+
+#. Tag: title
+#: Annotations.xml:761
+#, no-c-format
+msgid "Annotations for validation"
+msgstr "Anotaciones para la validación"
+
+#. Tag: para
+#: Annotations.xml:762
+#, no-c-format
+msgid ""
+"This annotation triggers Hibernate Validator. It appears on a method of a "
+"Seam component, almost always an action listener method."
+msgstr ""
+"Esta anotación dispara Hibernate Validator. Aparece en un método de un "
+"componente Seam, casi siempre un método de escucha de acciones. "
+
+#. Tag: para
+#: Annotations.xml:765
+#, no-c-format
+msgid ""
+"Please refer to the documentation for the Hibernate Annotations package for "
+"information about the annotations defined by the Hibernate Validator "
+"framework."
+msgstr ""
+"Consulte la documentación para el paquete Hibernate Annotations, allí "
+"encontrará información sobre las anotaciones definidas por el marco de "
+"trabajo Hibernate Validator."
+
+#. Tag: emphasis
+#: Annotations.xml:769
+#, no-c-format
+msgid ""
+"Note that use of <literal>@IfInvalid</literal> is now semi-deprecated and "
+"<literal>&lt;s:validateAll&gt;</literal> is now preferred."
+msgstr ""
+"Observe que el uso de <literal>@IfInvalid</literal> ahora no se encuentra en "
+"uso y se prefiere <literal>&lt;s:validateAll&gt;</literal>."
+
+#. Tag: literal
+#: Annotations.xml:773
+#, no-c-format
+msgid "@IfInvalid"
+msgstr "@IfInvalid"
+
+#. Tag: programlisting
+#: Annotations.xml:775
+#, no-c-format
+msgid "@IfInvalid(outcome=\"invalid\", refreshEntities=true)"
+msgstr "@IfInvalid(outcome=\"invalid\", refreshEntities=true)"
+
+#. Tag: para
+#: Annotations.xml:776
+#, no-c-format
+msgid ""
+"Specifies that Hibernate Validator should validate the component before the "
+"method is invoked. If the invocation fails, the specified outcome will be "
+"returned, and the validation failure messages returned by Hibernate "
+"Validator will be added to the <literal>FacesContext</literal>. Otherwise, "
+"the invocation will proceed."
+msgstr ""
+"Especifica que Hibernate Validator debe validar el componente antes de que "
+"se invoque el método. Si la invocación falla entonces la salida especificada "
+"se devolverá y los mensajes de fallo de validación que Hibernate Validator "
+"ha retornado serán añadidos a <literal>FacesContext</literal>. De otra "
+"manera, la invocación procederá."
+
+#. Tag: para
+#: Annotations.xml:781
+#, no-c-format
+msgid ""
+"<literal>outcome</literal> &mdash; the JSF outcome when validation fails."
+msgstr ""
+"<literal>outcome</literal> &mdash; la salida JSF cuando falla la validación."
+
+#. Tag: para
+#: Annotations.xml:786
+#, no-c-format
+msgid ""
+"<literal>refreshEntities</literal> &mdash; specifies that any invalid entity "
+"in the managed state should be refreshed from the database when validation "
+"fails. Default to <literal>false</literal>. (Useful with extended "
+"persistence contexts.)"
+msgstr ""
+"<literal>refreshEntities</literal> &mdash; especifica que cualquier entidad "
+"inválida en el estado administrado debe refrescarse desde la base de datos "
+"cuando falla la validación. Por defecto es <literal>false</literal> (es útil "
+"con contextos de persistencia extendidos)."
+
+#. Tag: title
+#: Annotations.xml:797
+#, no-c-format
+msgid "Annotations for Seam Remoting"
+msgstr "Anotaciones para Seam Remoting"
+
+#. Tag: para
+#: Annotations.xml:798
+#, no-c-format
+msgid ""
+"Seam Remoting requires that the local interface of a session bean be "
+"annotated with the following annotation:"
+msgstr ""
+"Seam Remoting requiere que la interfaz local de un bean de sesión sea "
+"anotada con lo siguiente:"
+
+#. Tag: literal
+#: Annotations.xml:803
+#, no-c-format
+msgid "@WebRemote"
+msgstr "@WebRemote"
+
+#. Tag: programlisting
+#: Annotations.xml:805
+#, no-c-format
+msgid "@WebRemote(exclude=\"path.to.exclude\")"
+msgstr "@WebRemote(exclude=\"path.to.exclude\")"
+
+#. Tag: para
+#: Annotations.xml:806
+#, no-c-format
+msgid ""
+"Indicates that the annotated method may be called from client-side "
+"JavaScript. The <literal>exclude</literal> property is optional and allows "
+"objects to be excluded from the result&#39;s object graph (see the Remoting "
+"chapter for more details)."
+msgstr ""
+"Indica que el método anotado se puede llamar desde el JavaScript del lado "
+"del cliente. La propiedad <literal>exclude</literal> es opcional y permite "
+"excluir los objetos de la gráfica de objetos del resultado (consulte el "
+"capítulo sobre acciones remotas para obtener más detalles). "
+
+#. Tag: title
+#: Annotations.xml:815
+#, no-c-format
+msgid "Annotations for Seam interceptors"
+msgstr "Anotaciones para los interceptores Seam "
+
+#. Tag: para
+#: Annotations.xml:816
+#, no-c-format
+msgid "The following annotations appear on Seam interceptor classes."
+msgstr ""
+"Las siguientes anotaciones aparecen en las clases de interceptores Seam."
+
+#. Tag: para
+#: Annotations.xml:819
+#, no-c-format
+msgid ""
+"Please refer to the documentation for the EJB 3.0 specification for "
+"information about the annotations required for EJB interceptor definition."
+msgstr ""
+"Consulte la documentación para la especificación EJB 3.0 para obtener mayor "
+"información sobre las anotaciones que se necesitan para la definición del "
+"interceptor EJB."
+
+#. Tag: literal
+#: Annotations.xml:824
+#, no-c-format
+msgid "@Interceptor"
+msgstr "@Interceptor"
+
+#. Tag: programlisting
+#: Annotations.xml:829
+#, no-c-format
+msgid "@Interceptor(stateless=true)"
+msgstr "@Interceptor(stateless=true)"
+
+#. Tag: para
+#: Annotations.xml:830
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is stateless and Seam may optimize "
+"replication."
+msgstr ""
+"Especifica que este interceptor no tiene estado y Seam puede optimizar la "
+"replicación."
+
+#. Tag: programlisting
+#: Annotations.xml:835
+#, no-c-format
+msgid "@Interceptor(type=CLIENT)"
+msgstr "@Interceptor(type=CLIENT)"
+
+#. Tag: para
+#: Annotations.xml:836
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is a \"client-side\" interceptor that is "
+"called before the EJB container."
+msgstr ""
+"Especifica que este interceptor es un interceptor del \"lado-del-cliente\" "
+"que se llama antes que el contenedor EJB."
+
+#. Tag: programlisting
+#: Annotations.xml:841
+#, no-c-format
+msgid "@Interceptor(around={SomeInterceptor.class, OtherInterceptor.class})"
+msgstr "@Interceptor(around={SomeInterceptor.class, OtherInterceptor.class})"
+
+#. Tag: para
+#: Annotations.xml:842
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is positioned higher in the stack than the "
+"given interceptors."
+msgstr ""
+"Especifica que este interceptor se encuentra más arriba en la pila que los "
+"interceptores dados."
+
+#. Tag: programlisting
+#: Annotations.xml:847
+#, no-c-format
+msgid "@Interceptor(within={SomeInterceptor.class, OtherInterceptor.class})"
+msgstr "@Interceptor(within={SomeInterceptor.class, OtherInterceptor.class})"
+
+#. Tag: para
+#: Annotations.xml:848
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is positioned deeper in the stack than the "
+"given interceptors."
+msgstr ""
+"Especifica que este interceptor se encuentra más abajo en la pila que los "
+"interceptores dados."
+
+#. Tag: title
+#: Annotations.xml:860
+#, no-c-format
+msgid "Annotations for asynchronicity"
+msgstr "Anotaciones en casos asincrónicos"
+
+#. Tag: para
+#: Annotations.xml:861
+#, no-c-format
+msgid ""
+"The following annotations are used to declare an asynchronous method, for "
+"example:"
+msgstr ""
+"Las siguientes anotaciones se utilizan para declarar un método asincrónico, "
+"por ejemplo:"
+
+#. Tag: programlisting
+#: Annotations.xml:864
+#, no-c-format
+msgid ""
+"@Asynchronous public void scheduleAlert(Alert alert, @Expiration Date date) "
+"{ ... }"
+msgstr ""
+"@Asynchronous public void scheduleAlert(Alert alert, @Expiration Date date) "
+"{ ... }"
+
+#. Tag: programlisting
+#: Annotations.xml:865
+#, no-c-format
+msgid ""
+"@Asynchronous public Timer scheduleAlerts(Alert alert, @Expiration Date "
+"date, \n"
+"@IntervalDuration long interval) { ... }"
+msgstr ""
+"@Asynchronous public Timer scheduleAlerts(Alert alert, @Expiration Date "
+"date, \n"
+"@IntervalDuration long interval) { ... }"
+
+#. Tag: literal
+#: Annotations.xml:868
+#, no-c-format
+msgid "<literal>@Asynchronous</literal>"
+msgstr "<literal>@Asynchronous</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:870
+#, no-c-format
+msgid "<programlisting>@Asynchronous</programlisting>"
+msgstr "<programlisting>@Asynchronous</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:871
+#, no-c-format
+msgid "Specifies that the method call is processed asynchronously."
+msgstr "Especifica que la llamada de método se procesa de manera asincrónica."
+
+#. Tag: literal
+#: Annotations.xml:877
+#, no-c-format
+msgid "<literal>@Duration</literal>"
+msgstr "<literal>@Duration</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:879
+#, no-c-format
+msgid "<programlisting>@Duration</programlisting>"
+msgstr "<programlisting>@Duration</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:880
+#, no-c-format
+msgid ""
+"Specifies that a parameter of the asynchronous call is the duration before "
+"the call is processed (or first processed for recurring calls)."
+msgstr ""
+"Especifica que un parámetro de la llamada asincrónica es la duración antes "
+"de que se procese la llamada (o la primera que se procese para las llamadas "
+"recurrentes)."
+
+#. Tag: literal
+#: Annotations.xml:886
+#, no-c-format
+msgid "<literal>@Expiration</literal>"
+msgstr "<literal>@Expiration</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:888
+#, no-c-format
+msgid "<programlisting>@Expiration</programlisting>"
+msgstr "<programlisting>@Expiration</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:889
+#, no-c-format
+msgid ""
+"Specifies that a parameter of the asynchronous call is the datetime at which "
+"the call is processed (or first processed for recurring calls)."
+msgstr ""
+"Especifica que un parámetro de la llamada asicrónica es la fecha en la que "
+"se procesa la llamada (o la primera que se procesó para las llamadas "
+"recurrentes)."
+
+#. Tag: literal
+#: Annotations.xml:895
+#, no-c-format
+msgid "<literal>@IntervalDuration</literal>"
+msgstr "<literal>@IntervalDuration</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:897
+#, no-c-format
+msgid "<programlisting>@IntervalDuration</programlisting>"
+msgstr "<programlisting>@IntervalDuration</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:898
+#, no-c-format
+msgid ""
+"Specifies that an asynchronous method call recurs, and that the annotationed "
+"parameter is duration between recurrences."
+msgstr ""
+"Especifica que una llamada de método asincrónica recurre y que el parámetro "
+"anotado es la duración entre recurrencias."
+
+#. Tag: title
+#: Annotations.xml:907
+#, no-c-format
+msgid "Annotations for use with JSF <literal>dataTable</literal>"
+msgstr "Anotaciones para uso con JSF <literal>dataTable</literal>"
+
+#. Tag: para
+#: Annotations.xml:908
+#, no-c-format
+msgid ""
+"The following annotations make it easy to implement clickable lists backed "
+"by a stateful session bean. They appear on attributes."
+msgstr ""
+"Las siguientes anotaciones facilitan implementar las listas respaldadas por "
+"un bean de sesión con estado. Aparecen en los atributos."
+
+#. Tag: literal
+#: Annotations.xml:913
+#, no-c-format
+msgid "@DataModel"
+msgstr "@DataModel"
+
+#. Tag: programlisting
+#: Annotations.xml:915
+#, no-c-format
+msgid "@DataModel(\"variableName\")"
+msgstr "@DataModel(\"variableName\")"
+
+#. Tag: para
+#: Annotations.xml:916
+#, no-c-format
+msgid ""
+"Exposes an attribute of type <literal>List</literal>, <literal>Map</"
+"literal>, <literal>Set</literal> or <literal>Object[]</literal> as a JSF "
+"<literal>DataModel</literal> into the scope of the owning component (or the "
+"<literal>EVENT</literal> scope if the owning component is "
+"<literal>STATELESS</literal>). In the case of <literal>Map</literal>, each "
+"row of the <literal>DataModel</literal> is a <literal>Map.Entry</literal>."
+msgstr ""
+"Expone un atributo del tipo <literal>List</literal>, <literal>Map</literal>, "
+"<literal>Set</literal> o <literal>Object[]</literal> como un JSF "
+"<literal>DataModel</literal> en el ámbito del componente dueño (o el ámbito "
+"<literal>EVENT</literal> si el componente dueño es <literal>STATELESS</"
+"literal>). En el caso de <literal>Map</literal>, cada fila del "
+"<literal>DataModel</literal> es un <literal>Map.Entry</literal>."
+
+#. Tag: para
+#: Annotations.xml:921
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; name of the conversation context variable. "
+"Default to the attribute name."
+msgstr ""
+"<literal>value</literal> &mdash; nombre de la variable del contexto de "
+"conversation. Por defecto es el nombre del atributo."
+
+#. Tag: para
+#: Annotations.xml:926
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; if <literal>scope=ScopeType.PAGE</literal> "
+"is explicitly specified, the <literal>DataModel</literal> will be kept in "
+"the <literal>PAGE</literal> context."
+msgstr ""
+"<literal>scope</literal> &mdash; si <literal>scope=ScopeType.PAGE</literal> "
+"se especifica de manera explícita, se mantendrá el <literal>DataModel</"
+"literal> en el contexto <literal>PAGE</literal>."
+
+#. Tag: literal
+#: Annotations.xml:934
+#, no-c-format
+msgid "<literal>@DataModelSelection</literal>"
+msgstr "<literal>@DataModelSelection</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:936
+#, no-c-format
+msgid "<programlisting>@DataModelSelection</programlisting>"
+msgstr "<programlisting>@DataModelSelection</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:937
+#, no-c-format
+msgid ""
+"Injects the selected value from the JSF <literal>DataModel</literal> (this "
+"is the element of the underlying collection, or the map value)."
+msgstr ""
+"Inyecta el valor seleccionado desde el <literal>DataModel</literal> JSF "
+"(este es el elemento de la colección subyacente o el valor del mapa)."
+
+#. Tag: para
+#: Annotations.xml:942 Annotations.xml:958
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; name of the conversation context variable. "
+"Not needed if there is exactly one <literal>@DataModel</literal> in the "
+"component."
+msgstr ""
+"<literal>value</literal> &mdash; nombre de la variable de contexto de la "
+"conversación. No se necesita si hay exactamente un <literal>@DataModel</"
+"literal> en el componente."
+
+#. Tag: literal
+#: Annotations.xml:950
+#, no-c-format
+msgid "<literal>@DataModelSelectionIndex</literal>"
+msgstr "<literal>@DataModelSelectionIndex</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:952
+#, no-c-format
+msgid "<programlisting>@DataModelSelectionIndex</programlisting>"
+msgstr "<programlisting>@DataModelSelectionIndex</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:953
+#, no-c-format
+msgid ""
+"Exposes the selection index of the JSF <literal>DataModel</literal> as an "
+"attribute of the component (this is the row number of the underlying "
+"collection, or the map key)."
+msgstr ""
+"Expone el índice de selección del <literal>DataModel</literal> JSF como un "
+"atributo del componente (este es el número de la fila de la colección "
+"subyacente o la llave del mapa)."
+
+#. Tag: title
+#: Annotations.xml:969
+#, no-c-format
+msgid "Meta-annotations for databinding"
+msgstr "Meta-anotaciones para la vinculación de datos"
+
+#. Tag: para
+#: Annotations.xml:970
+#, no-c-format
+msgid ""
+"These meta-annotations make it possible to implement similar functionality "
+"to <literal>@DataModel</literal> and <literal>@DataModelSelection</literal> "
+"for other datastructures apart from lists."
+msgstr ""
+"Estas meta-anotaciones hacen posible implementar una funcionalidad similar a "
+"<literal>@DataModel</literal> y <literal>@DataModelSelection</literal> para "
+"otras estructuras de datos aparte de las listas."
+
+#. Tag: literal
+#: Annotations.xml:975
+#, no-c-format
+msgid "@DataBinderClass"
+msgstr "@DataBinderClass"
+
+#. Tag: programlisting
+#: Annotations.xml:977
+#, no-c-format
+msgid "@DataBinderClass(DataModelBinder.class)"
+msgstr "@DataBinderClass(DataModelBinder.class)"
+
+#. Tag: para
+#: Annotations.xml:978
+#, no-c-format
+msgid "Specifies that an annotation is a databinding annotation."
+msgstr "Especifica que una anotación es una anotación de datos de vinculación."
+
+#. Tag: literal
+#: Annotations.xml:984
+#, no-c-format
+msgid "@DataSelectorClass"
+msgstr "@DataSelectorClass"
+
+#. Tag: programlisting
+#: Annotations.xml:986
+#, no-c-format
+msgid "@DataSelectorClass(DataModelSelector.class)"
+msgstr "@DataSelectorClass(DataModelSelector.class)"
+
+#. Tag: para
+#: Annotations.xml:987
+#, no-c-format
+msgid "Specifies that an annotation is a dataselection annotation."
+msgstr "Especifica que una anotación es una anotación de datos de vinculación"
+
+#. Tag: title
+#: Annotations.xml:996
+#, no-c-format
+msgid "Annotations for packaging"
+msgstr "Anotaciones para empacar"
+
+#. Tag: para
+#: Annotations.xml:997
+#, no-c-format
+msgid ""
+"This annotation provides a mechanism for declaring information about a set "
+"of components that are packaged together. It can be applied to any Java "
+"package."
+msgstr ""
+"Esta anotación proporciona un mecanismo para declarar información sobre un "
+"grupo de componentes que están empacados juntos. Se puede aplicar en "
+"cualquier paquete Java."
+
+#. Tag: literal
+#: Annotations.xml:1002
+#, no-c-format
+msgid "@Namespace"
+msgstr "@Namespace"
+
+#. Tag: programlisting
+#: Annotations.xml:1004
+#, no-c-format
+msgid "@Namespace(value=\"http://jboss.com/products/seam/example/seampay\")"
+msgstr "@Namespace(value=\"http://jboss.com/products/seam/example/seampay\")"
+
+#. Tag: para
+#: Annotations.xml:1005
+#, no-c-format
+msgid ""
+"Specifies that components in the current package are associated with the "
+"given namespace. The declared namespace can be used as an XML namespace in a "
+"<literal>components.xml</literal> file to simplify application configuration."
+msgstr ""
+"Especifica que los componentes en el paquete actual están asociados con el "
+"espacio de nombre dado. El nombre de espacio delcarado se puede utilizar "
+"como un nombre de espacio en un archivo <literal>components.xml</literal> "
+"para simplificar la configuración de la aplicación."
+
+#. Tag: programlisting
+#: Annotations.xml:1008
+#, no-c-format
+msgid ""
+"@Namespace(value=\"http://jboss.com/products/seam/core\", prefix=\"org.jboss."
+"seam.core\")"
+msgstr ""
+"@Namespace(value=\"http://jboss.com/products/seam/core\", prefix=\"org.jboss."
+"seam.core\")"
+
+#. Tag: para
+#: Annotations.xml:1009
+#, no-c-format
+msgid ""
+"Specifies a namespace to associate with a given package. Additionally, it "
+"specifies a component name prefix to be applied to component names specified "
+"in the XML file. For example, an XML element named <literal>microcontainer</"
+"literal> that is associated with this namespace would be understood to "
+"actually refere to a component named <literal>org.jboss.seam.core."
+"microcontainer</literal>."
+msgstr ""
+"Especifica un espacio de nombre que se debe asociar con un paquete dado. "
+"Adicionalmente especifica un prefijo de nombre de componente que se debe "
+"aplicar a los nombres de componentes especificados en el archivo XML. Por "
+"ejemplo, un elemento XML llamado <literal>microcontainer</literal> que está "
+"asociado con este espacio de nombre de hecho se refiere a un componente "
+"llamado <literal>org.jboss.seam.core.microcontainer</literal>."

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Book_Info.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Book_Info.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Book_Info.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,55 @@
+# translation of Book_Info.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Book_Info\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-02-04 23:29+0000\n"
+"PO-Revision-Date: 2007-09-04 14:34+1000\n"
+"Last-Translator: Angela Garcia\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Book_Info.xml:5
+#, no-c-format
+msgid "Seam Reference Guide"
+msgstr ""
+
+#. Tag: subtitle
+#: Book_Info.xml:6
+#, no-c-format
+msgid "JBoss Enterprise Application Platform"
+msgstr ""
+
+#. Tag: para
+#: Book_Info.xml:11
+#, no-c-format
+msgid ""
+"This book is a Reference Guide to Seam 1.2 for JBoss Enterprise Application "
+"Platform 4.3."
+msgstr ""
+
+#. Tag: holder
+#: Book_Info.xml:22
+#, no-c-format
+msgid "&HOLDER;"
+msgstr ""
+
+#~ msgid "Seam - Contextual Components"
+#~ msgstr "Seam - Componentes contextuales"
+
+#~ msgid "A Framework for Java EE 5"
+#~ msgstr "Estructura de trabajo para Java EE 5"
+
+#~ msgid "This book is a Reference Guide for Seam"
+#~ msgstr "Este libro es el manual de referencia para Seam"
+
+#~ msgid "&FORMAL-RHI;"
+#~ msgstr "&FORMAL-RHI;"

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Cache.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Cache.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Cache.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,466 @@
+# translation of Cache.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Cache\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 01:04+0000\n"
+"PO-Revision-Date: 2007-10-18 10:51+1000\n"
+"Last-Translator: Angela Garcia\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Cache.xml:6
+#, no-c-format
+msgid "Caching"
+msgstr "Caché"
+
+#. Tag: para
+#: Cache.xml:7
+#, no-c-format
+msgid ""
+"In almost all enterprise applications, the database is the primary "
+"bottleneck, and the least scalable tier of the runtime environment. People "
+"from a PHP/Ruby environment will try to tell you that so-called \"shared "
+"nothing\" architectures scale well. While that may be literally true, I "
+"don&#39;t know of many interesting multi-user applications which can be "
+"implemented with no sharing of resources between different nodes of the "
+"cluster. What these silly people are really thinking of is a \"share nothing "
+"except for the database\" architecture. Of course, sharing the database is "
+"the primary problem with scaling a multi-user application&mdash;so the claim "
+"that this architecture is highly scalable is absurd, and tells you a lot "
+"about the kind of applications that these folks spend most of their time "
+"working on."
+msgstr ""
+"En casi todas las aplicaciones empresariales, la base de datos es el "
+"problema más importante además de ser la capa menos escalable del entorno en "
+"tiempo de ejecución. Aquellos que cuentan con un entorno PHP/Ruby tratarán "
+"de decirle que las dichas arquitecturas que \"no comparten nada\" escalan "
+"bien. Apesar de que esto puede ser literalmente verdad, no conozco muchas "
+"aplicaciones multi-usuarios interesantes que se puedan implementar sin "
+"compartir recursos entre diferentes nodos del clúster. Lo que en realidad "
+"están pensando estas personas es en una arquitectura que \"no comparte nada "
+"a excepción de la base de datos\". Obviamente el compartir la base de datos "
+"es el problema principal al escalar una aplicación multi-usuarios así que la "
+"afirmación de que esta arquitectura es altamente escalable es absurda y le "
+"dice bastante sobre el tipo de aplicaciones a la que esta gente le dedica "
+"gran parte de su tiempo. "
+
+#. Tag: para
+#: Cache.xml:10
+#, no-c-format
+msgid ""
+"Almost anything we can possibly do to share the database <emphasis>less "
+"often</emphasis> is worth doing."
+msgstr ""
+"Casi cualquier cosa que podamos hacer para poder compartir la base de datos "
+"<emphasis>con poca frecuencia</emphasis> vale la pena."
+
+#. Tag: para
+#: Cache.xml:13
+#, no-c-format
+msgid ""
+"This calls for a cache. Well, not just one cache. A well designed Seam "
+"application will feature a rich, multi-layered caching strategy that impacts "
+"every layer of the application:"
+msgstr ""
+"Esto llama un caché, bueno, en realidad no sólo un caché. Una aplicación "
+"Seam bien diseñada se caracterizará por una rica estrategia de caché multi-"
+"capas que tiene impacto en todas las capas de la aplicación:"
+
+#. Tag: para
+#: Cache.xml:18
+#, no-c-format
+msgid ""
+"The database, of course, has its own cache. This is super-important, but "
+"can&#39;t scale like a cache in the application tier."
+msgstr ""
+"Por supuesto, la base de datos tiene su propio caché. Esto es "
+"superimportante pero no tiene la habilidad de escalar como un caché en el "
+"nivel de la aplicación. "
+
+#. Tag: para
+#: Cache.xml:23
+#, no-c-format
+msgid ""
+"Your ORM solution (Hibernate, or some other JPA implementation) has a second-"
+"level cache of data from the database. This is a very powerful capability, "
+"but is often misused. In a clustered environment, keeping the data in the "
+"cache transactionally consistent across the whole cluster, and with the "
+"database, is quite expensive. It makes most sense for data which is shared "
+"between many users, and is updated rarely. In traditional stateless "
+"architectures, people often try to use the second-level cache for "
+"conversational state. This is always bad, and is especially wrong in Seam."
+msgstr ""
+"Su solución ORM (Hibernate u otra implementación JPA) tiene un caché de "
+"segundo nivel de datos de la base de datos. Esta habilidad es muy potente "
+"pero con frecuencia se utiliza mal. En un entorno con clústers el mantener "
+"los datos en la memoria caché consistente transaccionalmente a través de "
+"todo el clúster y junto con la base de datos es bastante costoso. Tiene más "
+"sentido para aquellos datos compartidos entre muchos usuarios y se actualiza "
+"con poca frecuencia. En arquitecturas sin estado tradicionales la gente con "
+"frecuencia trata de utilizar el caché de segundo nivel para el estado "
+"conversacional. Esto no está bien y en particular para Seam está mal."
+
+#. Tag: para
+#: Cache.xml:28
+#, no-c-format
+msgid ""
+"The Seam conversation context is a cache of conversational state. Components "
+"you put into the conversation context can hold and cache state relating to "
+"the current user interaction."
+msgstr ""
+"El contexto de conversación de Seam es un caché de estado conversacional. "
+"Los componentes que se ponen en el contexto de conversación pueden utilizar "
+"la memoria caché para mantener el estado relacionado con la interacción del "
+"usuario actual."
+
+#. Tag: para
+#: Cache.xml:33
+#, no-c-format
+msgid ""
+"In particular, the Seam-managed persistence context (or an extended EJB "
+"container-managed persistence context associated with a conversation-scoped "
+"stateful session bean) acts as a cache of data that has been read in the "
+"current conversation. This cache tends to have a pretty high hitrate! Seam "
+"optimizes the replication of Seam-managed persistence contexts in a "
+"clustered environment, and there is no requirement for transactional "
+"consistency with the database (optimistic locking is sufficient) so you "
+"don&#39;t need to worry too much about the performance implications of this "
+"cache, unless you read thousands of objects into a single persistence "
+"context."
+msgstr ""
+"En particular, el contexto de persistencia administrado por Seam (o un "
+"contexto de persistencia administrado por el contenedor EJB extendido "
+"asociado con un bean de sesión con estado en el ámbito de conversación) "
+"actúa como un caché de datos que se ha leído en la conversación actual. "
+"¡Este caché tiende a tener una alta tasa de aciertos! Seam optimiza la "
+"replicación de contextos de persistencia administrados por Seam en un "
+"entorno con clústers y no se necesita consistencia transaccional con la base "
+"de datos (el bloqueo optimista es suficiente) así que no necesita "
+"preocuparse mucho de las implicaciones en el rendimiento de este caché a "
+"menos de que lea cientos de objetos en un sólo contexto de persistencia.  "
+
+#. Tag: para
+#: Cache.xml:38
+#, no-c-format
+msgid ""
+"The application can cache non-transactional state in the Seam application "
+"context. State kept in the application context is of course not visible to "
+"other nodes in the cluster."
+msgstr ""
+"La aplicación puede utilizar memoria caché para estados no transaccionales "
+"en el contexto de la aplicación Seam. Por supuesto el estado que se mantiene "
+"en el contexto de la aplicación no es visible para los otros nodos en el "
+"clúster."
+
+#. Tag: para
+#: Cache.xml:43
+#, no-c-format
+msgid ""
+"The application can cache transactional state using the Seam "
+"<literal>pojoCache</literal> component, which integrates JBossCache into the "
+"Seam environment. This state will be visible to other nodes if you run JBoss "
+"cache in a clustered mode."
+msgstr ""
+"La aplicación puede utilizar la memoria caché para el estado transaccional "
+"utilizando el componente <literal>pojoCache</literal> Seam, el cual integra "
+"JBossCache en el entorno Seam. Este estado será visible para los otros nodos "
+"si ejecuta JBoss cache en modo de clústers."
+
+#. Tag: para
+#: Cache.xml:48
+#, no-c-format
+msgid ""
+"Finally, Seam lets you cache rendered fragments of a JSF page. Unlike the "
+"ORM second-level cache, this cache is not automatically invalidated when "
+"data changes, so you need to write application code to perform explicit "
+"invalidation, or set appropriate expiration policies."
+msgstr ""
+"Finalmente, Seam le permite guardar en la memoria caché fragmentos "
+"presentados de una página JSF. De manera opuesta al caché de segundo nivel "
+"ORM este caché no es invalidado automáticamente cuando los datos cambian así "
+"que necesita escribir código para aplicaciones para realizar invalidaciones "
+"explícitas o configurar las políticas de expiración apropiadas."
+
+#. Tag: para
+#: Cache.xml:53
+#, no-c-format
+msgid ""
+"For more information about the second-level cache, you&#39;ll need to refer "
+"to the documentation of your ORM solution, since this is an extremely "
+"complex topic. In this section we&#39;ll discuss the use of JBossCache "
+"directly, via the <literal>pojoCache</literal> component, or as the page "
+"fragment cache, via the <literal>&lt;s:cache&gt;</literal> control."
+msgstr ""
+"Para obtener mayor información sobre el caché de segundo nivel consulte la "
+"documentación de su solución ORM ya que este es un tema muy complicado. En "
+"esta sección discutiremos el uso de JBossCache directamente por medio del "
+"componente <literal>pojoCache</literal> o como la memoria caché del "
+"fragmento de página por medio del control <literal>&lt;s:cache&gt;</"
+"literal>. "
+
+#. Tag: title
+#: Cache.xml:57
+#, no-c-format
+msgid "Using JBossCache in Seam"
+msgstr "Uso de JBossCache en Seam"
+
+#. Tag: para
+#: Cache.xml:58
+#, no-c-format
+msgid ""
+"The built-in <literal>pojoCache</literal> component manages an instance of "
+"<literal>org.jboss.cache.aop.PojoCache</literal>. You can safely put any "
+"immutable Java object in the cache, and it will be replicated across the "
+"cluster (assuming that replication is enabled). If you want to keep mutable "
+"objects in the cache, you&#39;ll need to run the JBossCache bytecode "
+"preprocessor to ensure that changes to the objects will be automatically "
+"detected and replicated."
+msgstr ""
+"El componente incluido <literal>pojoCache</literal> administra una instancia "
+"de <literal>org.jboss.cache.aop.PojoCache</literal>. Puede poner de manera "
+"segura cualquier objeto Java inmutable en el caché y se replicará a través "
+"del clúster (asumiendo que la replicación se encuentra activada). Si quiere "
+"mantener objetos mutables en el caché necesitará ejecutar el preprocesador "
+"de código byte JBossCache para asegurarse de que los cambios se detectarán y "
+"se replicarán a los objetos de manera automática."
+
+#. Tag: para
+#: Cache.xml:61
+#, no-c-format
+msgid ""
+"To use <literal>pojoCache</literal>, all you need to do is put the "
+"JBossCache jars in the classpath, and provide a resource named "
+"<literal>treecache.xml</literal> with an appropriate cache configuration. "
+"JBossCache has many scary and confusing configuration settings, so we "
+"won&#39;t discuss them here. Please refer to the JBossCache documentation "
+"for more information."
+msgstr ""
+"Para utilizar <literal>pojoCache</literal> todo lo que necesita hacer es "
+"poner los jars JBossCache en la ruta de la clase y proporcionar un recurso "
+"llamado <literal>treecache.xml</literal> con una configuración caché "
+"apropiada. JBossCache cuenta con muchas opciones de configuración confusas "
+"así que no las discutiremos aquí. Consulte la documentación de JBossCache "
+"para obtener mayor información. "
+
+#. Tag: para
+#: Cache.xml:64
+#, no-c-format
+msgid ""
+"For an EAR depoyment of Seam, we recommend that the JBossCache jars and "
+"configuration go directly into the EAR. Make sure you declare the jars in "
+"<literal>application.xml</literal>."
+msgstr ""
+"Para un despliegue EAR de Seam recomendamos que las jars JBossCache y la "
+"configuración vayan directamente en EAR. Asegúrese de declarar las jars en "
+"<literal>application.xml</literal>."
+
+#. Tag: para
+#: Cache.xml:67
+#, no-c-format
+msgid "Now you can inject the cache into any Seam component:"
+msgstr "Ahora puede inyectar el caché en cualquier componente Seam:"
+
+#. Tag: programlisting
+#: Cache.xml:70
+#, no-c-format
+msgid ""
+"@Name(\"chatroom\")\n"
+"public class Chatroom {\n"
+"    @In PojoCache pojoCache;\n"
+"    \n"
+"    public void join(String username) {\n"
+"      try\n"
+"      {\n"
+"         Set&lt;String&gt; userList = (Set&lt;String&gt;) pojoCache.get"
+"(\"chatroom\", \"userList\");\n"
+"         if (userList==null) \n"
+"         {\n"
+"            userList = new HashSet&lt;String&gt;();\n"
+"            pojoCache.put(\"chatroom\", \"userList\", userList);\n"
+"         }\n"
+"         userList.put(username);\n"
+"      }\n"
+"      catch (CacheException ce)\n"
+"      {\n"
+"         throw new RuntimeException(ce);\n"
+"      }\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"chatroom\")\n"
+"public class Chatroom {\n"
+"    @In PojoCache pojoCache;\n"
+"    \n"
+"    public void join(String username) {\n"
+"      try\n"
+"      {\n"
+"         Set&lt;String&gt; userList = (Set&lt;String&gt;) pojoCache.get"
+"(\"chatroom\", \"userList\");\n"
+"         if (userList==null) \n"
+"         {\n"
+"            userList = new HashSet&lt;String&gt;();\n"
+"            pojoCache.put(\"chatroom\", \"userList\", userList);\n"
+"         }\n"
+"         userList.put(username);\n"
+"      }\n"
+"      catch (CacheException ce)\n"
+"      {\n"
+"         throw new RuntimeException(ce);\n"
+"      }\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Cache.xml:71
+#, no-c-format
+msgid ""
+"If you want to have multiple JBossCache configurations in your application, "
+"use <literal>components.xml</literal>:"
+msgstr ""
+"Si quiere tener múltiples configuraciones JBossCache en su aplicación "
+"utilice <literal>components.xml</literal>:"
+
+#. Tag: programlisting
+#: Cache.xml:74
+#, no-c-format
+msgid ""
+"&lt;core:pojo-cache name=\"myCache\" cfg-resource-name=\"myown/cache.xml\"/"
+"&gt;"
+msgstr ""
+"&lt;core:pojo-cache name=\"myCache\" cfg-resource-name=\"myown/cache.xml\"/"
+"&gt;"
+
+#. Tag: title
+#: Cache.xml:78
+#, no-c-format
+msgid "Page fragment caching"
+msgstr "Memoria caché de fragmentos de página"
+
+#. Tag: para
+#: Cache.xml:79
+#, no-c-format
+msgid ""
+"The most interesting user of JBossCache is the <literal>&lt;s:cache&gt;</"
+"literal> tag, Seam&#39;s solution to the problem of page fragment caching in "
+"JSF. <literal>&lt;s:cache&gt;</literal> uses <literal>pojoCache</literal> "
+"internally, so you need to follow the steps listed above before you can use "
+"it. (Put the jars in the EAR, wade through the scary configuration options, "
+"etc.)"
+msgstr ""
+"El usuario más interesante de JBossCache es la etiqueta <literal>&lt;s:"
+"cache&gt;</literal>, la solución de Seam al problema de memoria caché de "
+"fragmentos de página en JSF. <literal>&lt;s:cache&gt;</literal> usa "
+"<literal>pojoCache</literal> internamente así que necesita seguir los pasos "
+"enumerados anteriormente antes de poderlo utilizar (ponga las jars en el "
+"EAR, batalle las complicadas opciones de configuración, etc)."
+
+#. Tag: para
+#: Cache.xml:82
+#, no-c-format
+msgid ""
+"<literal>&lt;s:cache&gt;</literal> is used for caching some rendered content "
+"which changes rarely. For example, the welcome page of our blog displays the "
+"recent blog entries:"
+msgstr ""
+"<literal>&lt;s:cache&gt;</literal> se utiliza para guardar en la memoria "
+"caché algún contenido presentado que cambia muy esporádicamente. Por "
+"ejemplo, la página de bienvenida de nuestro blog presenta las entradas del "
+"blog recientes:"
+
+#. Tag: programlisting
+#: Cache.xml:85
+#, no-c-format
+msgid ""
+"&lt;s:cache key=\"recentEntries-#{blog.id}\" region=\"welcomePageFragments"
+"\"&gt;\n"
+"   &lt;h:dataTable value=\"#{blog.recentEntries}\" var=\"blogEntry\"&gt;\n"
+"      &lt;h:column&gt;\n"
+"         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"         &lt;div&gt;\n"
+"            &lt;s:formattedText value=\"#{blogEntry.body}\"/&gt;\n"
+"         &lt;/div&gt;\n"
+"      &lt;/h:column&gt;\n"
+"   &lt;/h:dataTable&gt;\n"
+"&lt;/s:cache&gt;"
+msgstr ""
+"&lt;s:cache key=\"recentEntries-#{blog.id}\" region=\"welcomePageFragments"
+"\"&gt;\n"
+"   &lt;h:dataTable value=\"#{blog.recentEntries}\" var=\"blogEntry\"&gt;\n"
+"      &lt;h:column&gt;\n"
+"         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"         &lt;div&gt;\n"
+"            &lt;s:formattedText value=\"#{blogEntry.body}\"/&gt;\n"
+"         &lt;/div&gt;\n"
+"      &lt;/h:column&gt;\n"
+"   &lt;/h:dataTable&gt;\n"
+"&lt;/s:cache&gt;"
+
+#. Tag: para
+#: Cache.xml:86
+#, no-c-format
+msgid ""
+"The <literal>key</literal> let&#39;s you have multiple cached versions of "
+"each page fragment. In this case, there is one cached version per blog. The "
+"<literal>region</literal> determines the JBossCache node that all version "
+"will be stored in. Different nodes may have different expiry policies. "
+"(That&#39;s the stuff you set up using the aforementioned scary "
+"configuration options.)"
+msgstr ""
+"<literal>key</literal> le permite tener múltiples versiones en caché de cada "
+"fragmento de página. En este caso hay una versión caché por blog. La "
+"<literal>region</literal> determina el nodo JBossCache en donde se "
+"almacenarán todas las versiones. Diferentes nodos pueden tener diferentes "
+"políticas de expiración (eso es lo que usted configura usando las "
+"complicadas opciones de configuración mencionadas anteriormente). "
+
+#. Tag: para
+#: Cache.xml:89
+#, no-c-format
+msgid ""
+"Of course, the big problem with <literal>&lt;s:cache&gt;</literal> is that "
+"it is too stupid to know when the underlying data changes (for example, when "
+"the blogger posts a new entry). So you need to evict the cached fragment "
+"manually:"
+msgstr ""
+"Por supuesto el gran problema con <literal>&lt;s:cache&gt;</literal> es que "
+"es demasiado tonto para saber cuando cambian los datos subyacentes (por "
+"ejemplo, cuando el que pone los blogs incluye una nueva entrada). Así que "
+"necesitará sacar el fragmento en la memoria caché de manera manual:"
+
+#. Tag: programlisting
+#: Cache.xml:92
+#, no-c-format
+msgid ""
+"public void post() {\n"
+"    ...\n"
+"    entityManager.persist(blogEntry);\n"
+"    pojoCache.remove(\"welcomePageFragments\", \"recentEntries-\" + blog."
+"getId() );\n"
+"}"
+msgstr ""
+"public void post() {\n"
+"    ...\n"
+"    entityManager.persist(blogEntry);\n"
+"    pojoCache.remove(\"welcomePageFragments\", \"recentEntries-\" + blog."
+"getId() );\n"
+"}"
+
+#. Tag: para
+#: Cache.xml:93
+#, no-c-format
+msgid ""
+"Alternatively, if it is not critical that changes are immediately visible to "
+"the user, you could set a short expiry time on the JbossCache node."
+msgstr ""
+"Alternativamente, si no es crítico que los cambios sean visibles para el "
+"usuario de manera inmediata puede configurar el tiempo de expiración como "
+"corto en el nodo JbossCache."

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Components.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Components.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Components.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2377 @@
+# translation of Components.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Manuel Ospina <mospina at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Components\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 01:04+0000\n"
+"PO-Revision-Date: 2007-10-22 10:23+1000\n"
+"Last-Translator: Angela Garcia\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Components.xml:6
+#, no-c-format
+msgid "Built-in Seam components"
+msgstr "Componentes internos de Seam"
+
+#. Tag: para
+#: Components.xml:7
+#, no-c-format
+msgid ""
+"This chapter describes Seam&#39;s built-in components, and their "
+"configuration properties."
+msgstr ""
+"Este capítulo describe los componentes internos de Seam y sus propiedades de "
+"configuración. "
+
+#. Tag: para
+#: Components.xml:10
+#, no-c-format
+msgid ""
+"Note that you can replace any of the built in components with your own "
+"implementations simply by specifying the name of one of the built in "
+"components on your own class using <literal>@Name</literal>."
+msgstr ""
+"Tenga en cuenta que usted puede remplazar cualquier componente interno con "
+"su propia implementación especificando el nombre de uno de los componentes "
+"internos en su clase utilizando <literal>@name</literal>."
+
+#. Tag: para
+#: Components.xml:13
+#, no-c-format
+msgid ""
+"Note also that even though all the built in components use a qualified name, "
+"most of them are aliased to unqualified names by default. These aliases "
+"specify <literal>auto-create=\"true\"</literal>, so you do not need to use "
+"<literal>create=true</literal> when injecting built-in components by their "
+"unqualified name."
+msgstr ""
+"Observe que aunque los componentes internos utilizan nombres clasificados, "
+"la mayoría son sobrenombres de nombres no clasificados de forma "
+"predeterminada. Estos alias especifican <literal>auto-create=\"true\"</"
+"literal>, por lo cual usted no tiene que utilizar <literal>create=true</"
+"literal> cuando inyecte un componente interno con su nombre no clasificado."
+
+#. Tag: title
+#: Components.xml:17
+#, no-c-format
+msgid "Context injection components"
+msgstr "Componentes de inyección de contexto"
+
+#. Tag: para
+#: Components.xml:18
+#, no-c-format
+msgid ""
+"The first set of built in components exist purely to support injection of "
+"various contextual objects. For example, the following component instance "
+"variable would have the Seam session context object injected:"
+msgstr ""
+"El primer grupo de componentes internos existe únicamente para soportar la "
+"inyección de varios objetos contextuales. Por ejemplo, la siguiente variable "
+"de componente hará que se inyecte el objeto de contexto de sesión de Seam:"
+
+#. Tag: programlisting
+#: Components.xml:21
+#, no-c-format
+msgid "@In private Context sessionContext;"
+msgstr "@In private Context sessionContext;"
+
+#. Tag: literal
+#: Components.xml:24
+#, no-c-format
+msgid "org.jboss.seam.core.eventContext"
+msgstr "org.jboss.seam.core.eventContext"
+
+#. Tag: para
+#: Components.xml:26
+#, no-c-format
+msgid "Manager component for the event context object"
+msgstr "Administrador de componente para el objeto de contexto de evento"
+
+#. Tag: literal
+#: Components.xml:32
+#, no-c-format
+msgid "org.jboss.seam.core.pageContext"
+msgstr "org.jboss.seam.core.pageContext"
+
+#. Tag: para
+#: Components.xml:34
+#, no-c-format
+msgid "Manager component for the page context object"
+msgstr "Administrador de componente para el objeto de contexto de página"
+
+#. Tag: literal
+#: Components.xml:40
+#, no-c-format
+msgid "org.jboss.seam.core.conversationContext"
+msgstr "org.jboss.seam.core.conversationContext"
+
+#. Tag: para
+#: Components.xml:42
+#, no-c-format
+msgid "Manager component for the conversation context object"
+msgstr "Administrador de componente para el objeto de contexto de conversación"
+
+#. Tag: literal
+#: Components.xml:48
+#, no-c-format
+msgid "org.jboss.seam.core.sessionContext"
+msgstr "org.jboss.seam.core.sessionContext"
+
+#. Tag: para
+#: Components.xml:50
+#, no-c-format
+msgid "Manager component for the session context object"
+msgstr "Administrador de componente para el objeto de contexto de sesión"
+
+#. Tag: literal
+#: Components.xml:56
+#, no-c-format
+msgid "org.jboss.seam.core.applicationContext"
+msgstr "org.jboss.seam.core.applicationContext"
+
+#. Tag: para
+#: Components.xml:58
+#, no-c-format
+msgid "Manager component for the appication context object"
+msgstr "Administrador de componente para el objeto de contexto de aplicación"
+
+#. Tag: literal
+#: Components.xml:64
+#, no-c-format
+msgid "org.jboss.seam.core.businessProcessContext"
+msgstr "org.jboss.seam.core.businessProcessContext"
+
+#. Tag: para
+#: Components.xml:66
+#, no-c-format
+msgid "Manager component for the business process context object"
+msgstr ""
+"Administrador de componente para el objeto de contexto de proceso empresarial"
+
+#. Tag: literal
+#: Components.xml:72
+#, no-c-format
+msgid "org.jboss.seam.core.facesContext"
+msgstr "org.jboss.seam.core.facesContext"
+
+#. Tag: para
+#: Components.xml:74
+#, no-c-format
+msgid ""
+"Manager component for the <literal>FacesContext</literal> context object "
+"(not a true Seam context)"
+msgstr ""
+"Administrador de componente para el objeto de contexto "
+"<literal>FacesContext</literal> (no es un contexto Seam como tal)"
+
+#. Tag: para
+#: Components.xml:80 Components.xml:263 Components.xml:437 Components.xml:568
+#, no-c-format
+msgid "All of these components are always installed."
+msgstr "Todos estos componentes siempre se instalan."
+
+#. Tag: title
+#: Components.xml:86
+#, no-c-format
+msgid "Utility components"
+msgstr "Componentes de utilidades"
+
+#. Tag: para
+#: Components.xml:87
+#, no-c-format
+msgid "These components are merely useful."
+msgstr "Estos componentes son simplemente útiles."
+
+#. Tag: literal
+#: Components.xml:92
+#, no-c-format
+msgid "org.jboss.seam.core.facesMessages"
+msgstr "org.jboss.seam.core.facesMessages"
+
+#. Tag: para
+#: Components.xml:94
+#, no-c-format
+msgid "Allows faces success messages to propagate across a browser redirect."
+msgstr ""
+"Permite que los mensajes de éxito de faces se propaguen a lo largo de "
+"redirecciones hechas desde el navegador."
+
+#. Tag: para
+#: Components.xml:99
+#, no-c-format
+msgid ""
+"<literal>add(FacesMessage facesMessage)</literal> &mdash; add a faces "
+"message, which will be displayed during the next render response phase that "
+"occurs in the current conversation."
+msgstr ""
+"<literal>add(FacesMessage facesMessage)</literal> &mdash; añade un mensaje "
+"de faces. Éste se mostrará durante la siguiente fase de entrega de la "
+"respuesta que ocurra en la conversación actual."
+
+#. Tag: para
+#: Components.xml:104
+#, no-c-format
+msgid ""
+"<literal>add(String messageTemplate)</literal> &mdash; add a faces message, "
+"rendered from the given message template which may contain EL expressions."
+msgstr ""
+"<literal>add(String messageTemplate)</literal> &mdash; añade un mensaje de "
+"faces desde la plantilla de mensaje dado, la cual puede contener expresiones "
+"EL."
+
+#. Tag: para
+#: Components.xml:109
+#, no-c-format
+msgid ""
+"<literal>add(Severity severity, String messageTemplate)</literal> &mdash; "
+"add a faces message, rendered from the given message template which may "
+"contain EL expressions."
+msgstr ""
+"<literal>add(Severity severity, String messageTemplate)</literal> &mdash; "
+"añade un mensaje de faces desde la plantilla de mensaje dado, la cual puede "
+"contener expresiones EL."
+
+#. Tag: para
+#: Components.xml:114
+#, no-c-format
+msgid ""
+"<literal>addFromResourceBundle(String key)</literal> &mdash; add a faces "
+"message, rendered from a message template defined in the Seam resource "
+"bundle which may contain EL expressions."
+msgstr ""
+"<literal>addFromResourceBundle(String key)</literal> &mdash; añade un "
+"mensaje de faces desde una plantilla de mensaje definida en grupo de "
+"recursos de Seam y que puede contener expresiones EL."
+
+#. Tag: para
+#: Components.xml:119
+#, no-c-format
+msgid ""
+"<literal>addFromResourceBundle(Severity severity, String key)</literal> "
+"&mdash; add a faces message, rendered from a message template defined in the "
+"Seam resource bundle which may contain EL expressions."
+msgstr ""
+"<literal>addFromResourceBundle(Severity severity, String key)</literal> "
+"&mdash; añade un mensaje de faces desde una plantilla de mensaje definida en "
+"grupo de recursos de Seam y que puede contener expresiones EL."
+
+#. Tag: para
+#: Components.xml:124
+#, no-c-format
+msgid "<literal>clear()</literal> &mdash; clear all messages."
+msgstr "<literal>clear()</literal> &mdash; borra todos los mensajes."
+
+#. Tag: literal
+#: Components.xml:132
+#, no-c-format
+msgid "org.jboss.seam.core.redirect"
+msgstr "org.jboss.seam.core.redirect"
+
+#. Tag: para
+#: Components.xml:134
+#, no-c-format
+msgid ""
+"A convenient API for performing redirects with parameters (this is "
+"especially useful for bookmarkable search results screens)."
+msgstr ""
+"Una API práctica para ejecutar redirecciones con parámetros (especialmente "
+"útil para pantallas de resultados de búsquedas desde marcadores)."
+
+#. Tag: para
+#: Components.xml:139
+#, no-c-format
+msgid ""
+"<literal>redirect.viewId</literal> &mdash; the JSF view id to redirect to."
+msgstr ""
+"<literal>redirect.viewId</literal> &mdash; el id de la vista JSF a donde se "
+"hará la redirección."
+
+#. Tag: para
+#: Components.xml:144
+#, no-c-format
+msgid ""
+"<literal>redirect.conversationPropagationEnabled</literal> &mdash; "
+"determines whether the conversation will propagate across the redirect."
+msgstr ""
+"<literal>redirect.conversationPropagationEnabled</literal> &mdash; determina "
+"si la conversación será propagada a lo largo de redirecciones."
+
+#. Tag: para
+#: Components.xml:149
+#, no-c-format
+msgid ""
+"<literal>redirect.parameters</literal> &mdash; a map of request parameter "
+"name to value, to be passed in the redirect request."
+msgstr ""
+"<literal>redirect.parameters</literal> &mdash; un mapa de nombres y valores "
+"de los parámetros de la solicitud que se pasarán en la solicitud de "
+"redirección."
+
+#. Tag: para
+#: Components.xml:154
+#, no-c-format
+msgid "<literal>execute()</literal> &mdash; perform the redirect immediately."
+msgstr ""
+"<literal>execute()</literal> &mdash; ejecuta la redirección de forma "
+"inmediata."
+
+#. Tag: para
+#: Components.xml:159
+#, no-c-format
+msgid ""
+"<literal>captureCurrentRequest()</literal> &mdash; stores the view id and "
+"request parameters of the current GET request (in the conversation context), "
+"for later use by calling <literal>execute()</literal>."
+msgstr ""
+"<literal>captureCurrentRequest()</literal> &mdash; almacena el id de la "
+"vista y los parámetros de la solicitud de la solicitud GET actual (en el "
+"contexto de la conversación), para utilizarlas posteriormente al llamar "
+"<literal>execute()</literal>."
+
+#. Tag: literal
+#: Components.xml:167
+#, no-c-format
+msgid "org.jboss.seam.core.httpError"
+msgstr "org.jboss.seam.core.httpError"
+
+#. Tag: para
+#: Components.xml:169
+#, no-c-format
+msgid "A convenient API for sending HTTP errors."
+msgstr "Una API práctica para enviar errores HTTP."
+
+#. Tag: literal
+#: Components.xml:175
+#, no-c-format
+msgid "org.jboss.seam.core.events"
+msgstr "org.jboss.seam.core.events"
+
+#. Tag: para
+#: Components.xml:177
+#, no-c-format
+msgid ""
+"An API for raising events that can be observed via <literal>@Observer</"
+"literal> methods, or method bindings in <literal>components.xml</literal>."
+msgstr ""
+"Una API para crear eventos que se pueden observar a través de los métodos "
+"<literal>@Observer</literal> o métodos vinculados en <literal>components."
+"xml</literal>."
+
+#. Tag: para
+#: Components.xml:182
+#, no-c-format
+msgid ""
+"<literal>raiseEvent(String type)</literal> &mdash; raise an event of a "
+"particular type and distribute to all observers."
+msgstr ""
+"<literal>raiseEvent(String type)</literal> &mdash; crea un evento de un tipo "
+"particular y lo distribuye a todos los observadores."
+
+#. Tag: para
+#: Components.xml:187
+#, no-c-format
+msgid ""
+"<literal>raiseAsynchronousEvent(String type)</literal> &mdash; raise an "
+"event to be processed asynchronously by the EJB3 timer service."
+msgstr ""
+"<literal>raiseAsynchronousEvent(String type)</literal> &mdash; crea un "
+"evento que será procesado asincrónicamente por el temporizador de EJB3."
+
+#. Tag: para
+#: Components.xml:192
+#, no-c-format
+msgid ""
+"<literal>raiseTimedEvent(String type, ....)</literal> &mdash; schedule an "
+"event to be processed asynchronously by the EJB3 timer service."
+msgstr ""
+"<literal>raiseTimedEvent(String type, ....)</literal> &mdash; programa un "
+"evento que será procesado de forma asincrónica por el temporizador de EJB3."
+
+#. Tag: para
+#: Components.xml:197
+#, no-c-format
+msgid ""
+"<literal>addListener(String type, String methodBinding)</literal> &mdash; "
+"add an observer for a particular event type."
+msgstr ""
+"<literal>addListener(String type, String methodBinding)</literal> &mdash; "
+"añade un observador para un tipo de evento particular."
+
+#. Tag: literal
+#: Components.xml:205
+#, no-c-format
+msgid "org.jboss.seam.core.interpolator"
+msgstr "org.jboss.seam.core.interpolator"
+
+#. Tag: para
+#: Components.xml:207
+#, no-c-format
+msgid "An API for interpolating the values of JSF EL expressions in Strings."
+msgstr "Una API para interpolar los valores de expresiones EL JSF en Strings."
+
+#. Tag: para
+#: Components.xml:212
+#, no-c-format
+msgid ""
+"<literal>interpolate(String template)</literal> &mdash; scan the template "
+"for JSF EL expressions of the form <literal>#{...}</literal> and replace "
+"them with their evaluated values."
+msgstr ""
+"<literal>interpolate(String template)</literal> &mdash; escanéa la plantilla "
+"en busca de expresiones JSF EL de la forma <literal>#{...}</literal> y las "
+"remplaza con los valores evaluados."
+
+#. Tag: literal
+#: Components.xml:220
+#, no-c-format
+msgid "org.jboss.seam.core.expressions"
+msgstr "org.jboss.seam.core.expressions"
+
+#. Tag: para
+#: Components.xml:222
+#, no-c-format
+msgid "An API for creating value and method bindings."
+msgstr "Una API para crear vinculaciones de valores y métodos."
+
+#. Tag: para
+#: Components.xml:227
+#, no-c-format
+msgid ""
+"<literal>createValueBinding(String expression)</literal> &mdash; create a "
+"value binding object."
+msgstr ""
+"<literal>createValueBinding(String expression)</literal> &mdash; crea un "
+"objeto de vinculación de valor."
+
+#. Tag: para
+#: Components.xml:232
+#, no-c-format
+msgid ""
+"<literal>createMethodBinding(String expression)</literal> &mdash; create a "
+"method binding object."
+msgstr ""
+"<literal>createMethodBinding(String expression)</literal> &mdash; crea un "
+"objeto de vinculación de método."
+
+#. Tag: literal
+#: Components.xml:240
+#, no-c-format
+msgid "org.jboss.seam.core.pojoCache"
+msgstr "org.jboss.seam.core.pojoCache"
+
+#. Tag: para
+#: Components.xml:242
+#, no-c-format
+msgid ""
+"Manager component for a JBoss Cache <literal>PojoCache</literal> instance."
+msgstr ""
+"Componente de administración para una instancia del caché de JBoss "
+"<literal>PojoCache</literal>."
+
+#. Tag: para
+#: Components.xml:247
+#, no-c-format
+msgid ""
+"<literal>pojoCache.cfgResourceName</literal> &mdash; the name of the "
+"configuration file. Default to <literal>treecache.xml</literal>."
+msgstr ""
+"<literal>pojoCache.cfgResourceName</literal> &mdash; el nombre del archivo "
+"de configuración. El valor predeterminado es <literal>treecache.xml</"
+"literal>."
+
+#. Tag: literal
+#: Components.xml:255
+#, no-c-format
+msgid "org.jboss.seam.core.uiComponent"
+msgstr "org.jboss.seam.core.uiComponent"
+
+#. Tag: para
+#: Components.xml:257
+#, no-c-format
+msgid ""
+"Allows access to a JSF <literal>UIComponent</literal> by its id from the EL. "
+"For example, we can write <literal>@In(\"#{uiComponent[&#39;myForm:"
+"address&#39;].value}\")</literal>."
+msgstr ""
+"Permite el acceso a un <literal>UIComponent</literal> de JSF usando su id "
+"desde el EL. Por ejemplo, podemos escribir <literal>@In(\"#{uiComponent[&#39;"
+"myForm:address&#39;].value}\")</literal>."
+
+#. Tag: title
+#: Components.xml:269
+#, no-c-format
+msgid "Components for internationalization and themes"
+msgstr "Componentes para internacionalización y temas"
+
+#. Tag: para
+#: Components.xml:270
+#, no-c-format
+msgid ""
+"The next group of components make it easy to build internationalized user "
+"interfaces using Seam."
+msgstr ""
+"El siguiente grupo de componentes facilitan la creación de interfaces de "
+"usuario en diferentes idiomas a través de Seam."
+
+#. Tag: literal
+#: Components.xml:275
+#, no-c-format
+msgid "org.jboss.seam.core.locale"
+msgstr "org.jboss.seam.core.locale"
+
+#. Tag: para
+#: Components.xml:277
+#, no-c-format
+msgid "The Seam locale. The locale is session scoped."
+msgstr "El local de Seam. El ámbito del local depende de la sesión."
+
+#. Tag: literal
+#: Components.xml:283
+#, no-c-format
+msgid "org.jboss.seam.core.timezone"
+msgstr "org.jboss.seam.core.timezone"
+
+#. Tag: para
+#: Components.xml:285
+#, no-c-format
+msgid "The Seam timezone. The timezone is session scoped."
+msgstr ""
+"La zona horaria de Seam. El ámbito de la zona horaria depende de la sesión."
+
+#. Tag: literal
+#: Components.xml:291
+#, no-c-format
+msgid "org.jboss.seam.core.resourceBundle"
+msgstr "org.jboss.seam.core.resourceBundle"
+
+#. Tag: para
+#: Components.xml:293
+#, no-c-format
+msgid ""
+"The Seam resource bundle. The resource bundle is session scoped. The Seam "
+"resource bundle performs a depth-first search for keys in a list of Java "
+"resource bundles."
+msgstr ""
+"El grupo de recursos de Seam. El ámbito de recursos depende de la sesión. El "
+"grupo de recursos de Seam ejecuta una búsqueda profunda de claves en una "
+"lista de grupo de recursos de Java."
+
+#. Tag: para
+#: Components.xml:298
+#, no-c-format
+msgid ""
+"<literal>resourceBundle.bundleNames</literal> &mdash; the names of the Java "
+"resource bundles to search. Default to <literal>messages</literal>."
+msgstr ""
+"<literal>resourceBundle.bundleNames</literal> &mdash; el nombre del grupo de "
+"recursos de Java a buscar. Por defecto es <literal>messages</literal>."
+
+#. Tag: literal
+#: Components.xml:306
+#, no-c-format
+msgid "org.jboss.seam.core.localeSelector"
+msgstr "org.jboss.seam.core.localeSelector"
+
+#. Tag: para
+#: Components.xml:308
+#, no-c-format
+msgid ""
+"Supports selection of the locale either at configuration time, or by the "
+"user at runtime."
+msgstr ""
+"Soporta la selección del local ya sea durante el tiempo de configuración o "
+"por el usuario en tiempo de ejecución."
+
+#. Tag: para
+#: Components.xml:313 Components.xml:363
+#, no-c-format
+msgid "<literal>select()</literal> &mdash; select the specified locale."
+msgstr "<literal>select()</literal> &mdash; selecciona el local específico."
+
+#. Tag: para
+#: Components.xml:318
+#, no-c-format
+msgid ""
+"<literal>localeSelector.locale</literal> &mdash; the actual <literal>java."
+"util.Locale</literal>."
+msgstr ""
+"<literal>localeSelector.locale</literal> &mdash; el <literal>java.util."
+"Locale</literal> actual."
+
+#. Tag: para
+#: Components.xml:323
+#, no-c-format
+msgid ""
+"<literal>localeSelector.localeString</literal> &mdash; the stringified "
+"representation of the locale."
+msgstr ""
+"<literal>localeSelector.localeString</literal> &mdash; la representación en "
+"cadena de texto del local."
+
+#. Tag: para
+#: Components.xml:328
+#, no-c-format
+msgid ""
+"<literal>localeSelector.language</literal> &mdash; the language for the "
+"specified locale."
+msgstr ""
+"<literal>localeSelector.language</literal> &mdash; el idioma del local "
+"especificado."
+
+#. Tag: para
+#: Components.xml:333
+#, no-c-format
+msgid ""
+"<literal>localeSelector.country</literal> &mdash; the country for the "
+"specified locale."
+msgstr ""
+"<literal>localeSelector.country</literal> &mdash; el país del local "
+"especificado."
+
+#. Tag: para
+#: Components.xml:338
+#, no-c-format
+msgid ""
+"<literal>localeSelector.variant</literal> &mdash; the variant for the "
+"specified locale."
+msgstr ""
+"<literal>localeSelector.variant</literal> &mdash; la variante del local "
+"especificado."
+
+#. Tag: para
+#: Components.xml:343
+#, no-c-format
+msgid ""
+"<literal>localeSelector.supportedLocales</literal> &mdash; a list of "
+"<literal>SelectItem</literal>s representing the supported locales listed in "
+"<literal>jsf-config.xml</literal>."
+msgstr ""
+"<literal>localeSelector.supportedLocales</literal> &mdash; una lista de "
+"<literal>SelectItem</literal> que representan los locales sosportados en la "
+"lista <literal>jsf-config.xml</literal>."
+
+#. Tag: para
+#: Components.xml:348
+#, no-c-format
+msgid ""
+"<literal>localeSelector.cookieEnabled</literal> &mdash; specifies that the "
+"locale selection should be persisted via a cookie."
+msgstr ""
+"<literal>localeSelector.cookieEnabled</literal> &mdash; especifica que la "
+"selección del local debe ser persistente a través de una cookie."
+
+#. Tag: literal
+#: Components.xml:356
+#, no-c-format
+msgid "org.jboss.seam.core.timezoneSelector"
+msgstr "org.jboss.seam.core.timezoneSelector"
+
+#. Tag: para
+#: Components.xml:358
+#, no-c-format
+msgid ""
+"Supports selection of the timezone either at configuration time, or by the "
+"user at runtime."
+msgstr ""
+"Soporta la selección de la zona horaria ya sea durante el tiempo de "
+"configuración o dependiendo de la selección del usuario durante la ejecución."
+
+#. Tag: para
+#: Components.xml:368
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.timezone</literal> &mdash; the actual "
+"<literal>java.util.TimeZone</literal>."
+msgstr ""
+"<literal>timezoneSelector.timezone</literal> &mdash; el <literal>java.util."
+"TimeZone</literal> actual."
+
+#. Tag: para
+#: Components.xml:373
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.timeZoneId</literal> &mdash; the stringified "
+"representation of the timezone."
+msgstr ""
+"<literal>timezoneSelector.timeZoneId</literal> &mdash; la representación en "
+"cadena de texto de la zona horaria."
+
+#. Tag: para
+#: Components.xml:378
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.cookieEnabled</literal> &mdash; specifies that the "
+"timezone selection should be persisted via a cookie."
+msgstr ""
+"<literal>timezoneSelector.cookieEnabled</literal> &mdash; especifica que la "
+"selección de la zona horaria debe ser persistente a través del uso de "
+"cookies."
+
+#. Tag: literal
+#: Components.xml:386
+#, no-c-format
+msgid "org.jboss.seam.core.messages"
+msgstr "org.jboss.seam.core.messages"
+
+#. Tag: para
+#: Components.xml:388
+#, no-c-format
+msgid ""
+"A map containing internationalized messages rendered from message templates "
+"defined in the Seam resource bundle."
+msgstr ""
+"Un mapa que contiene mensajes internacionalizados analizados desde las "
+"plantillas de mensajes definidas en el grupo de recursos de Seam."
+
+#. Tag: literal
+#: Components.xml:394
+#, no-c-format
+msgid "org.jboss.seam.theme.themeSelector"
+msgstr "org.jboss.seam.theme.themeSelector"
+
+#. Tag: para
+#: Components.xml:396
+#, no-c-format
+msgid ""
+"Supports selection of the theme either at configuration time, or by the user "
+"at runtime."
+msgstr ""
+"Soporta la selección del tema ya sea durante el tiempo de configuración o "
+"seleccionado por el usuario durante el tiempo de ejecución."
+
+#. Tag: para
+#: Components.xml:401
+#, no-c-format
+msgid "<literal>select()</literal> &mdash; select the specified theme."
+msgstr "<literal>select()</literal> &mdash; selecciona el tema especificado."
+
+#. Tag: para
+#: Components.xml:406
+#, no-c-format
+msgid ""
+"<literal>theme.availableThemes</literal> &mdash; the list of defined themes."
+msgstr ""
+"<literal>theme.availableThemes</literal> &mdash; la lista de temas definidos."
+
+#. Tag: para
+#: Components.xml:411
+#, no-c-format
+msgid "<literal>themeSelector.theme</literal> &mdash; the selected theme."
+msgstr "<literal>themeSelector.theme</literal> &mdash; el tema seleccionado."
+
+#. Tag: para
+#: Components.xml:416
+#, no-c-format
+msgid ""
+"<literal>themeSelector.themes</literal> &mdash; a list of "
+"<literal>SelectItem</literal>s representing the defined themes."
+msgstr ""
+"<literal>themeSelector.themes</literal> &mdash; una lista de "
+"<literal>SelectItem</literal> que representan los temas definidos."
+
+#. Tag: para
+#: Components.xml:421
+#, no-c-format
+msgid ""
+"<literal>themeSelector.cookieEnabled</literal> &mdash; specifies that the "
+"theme selection should be persisted via a cookie."
+msgstr ""
+"<literal>themeSelector.cookieEnabled</literal> &mdash; especifica que la "
+"selección de temas debe ser persistente usando cookies."
+
+#. Tag: literal
+#: Components.xml:429
+#, no-c-format
+msgid "org.jboss.seam.theme.theme"
+msgstr "org.jboss.seam.theme.theme"
+
+#. Tag: para
+#: Components.xml:431
+#, no-c-format
+msgid "A map containing theme entries."
+msgstr "Un mapa que contiene entradas de temas."
+
+#. Tag: title
+#: Components.xml:443
+#, no-c-format
+msgid "Components for controlling conversations"
+msgstr "Componentes para controlar conversaciones"
+
+#. Tag: para
+#: Components.xml:444
+#, no-c-format
+msgid ""
+"The next group of components allow control of conversations by the "
+"application or user interface."
+msgstr ""
+"El siguiente grupo de componentes permiten el control de conversaciones de "
+"la aplicación o la interfaz del usuario."
+
+#. Tag: literal
+#: Components.xml:449
+#, no-c-format
+msgid "org.jboss.seam.core.conversation"
+msgstr "org.jboss.seam.core.conversation"
+
+#. Tag: para
+#: Components.xml:451
+#, no-c-format
+msgid ""
+"API for application control of attributes of the current Seam conversation."
+msgstr ""
+"API para el control de atributos de la aplicación de la conversación actual "
+"de Seam."
+
+#. Tag: para
+#: Components.xml:456 Components.xml:471
+#, no-c-format
+msgid "<literal>getId()</literal> &mdash; returns the current conversation id"
+msgstr ""
+"<literal>getId()</literal> &mdash; retorna el id actual de la conversación"
+
+#. Tag: para
+#: Components.xml:461
+#, no-c-format
+msgid ""
+"<literal>isNested()</literal> &mdash; is the current conversation a nested "
+"conversation?"
+msgstr ""
+"<literal>isNested()</literal> &mdash; ¿la conversación actual es anidada?"
+
+#. Tag: para
+#: Components.xml:466
+#, no-c-format
+msgid ""
+"<literal>isLongRunning()</literal> &mdash; is the current conversation a "
+"long-running conversation?"
+msgstr ""
+"<literal>isLongRunning()</literal> &mdash; ¿la conversación actual es una "
+"conversación prolongada?"
+
+#. Tag: para
+#: Components.xml:476
+#, no-c-format
+msgid ""
+"<literal>getParentId()</literal> &mdash; returns the conversation id of the "
+"parent conversation"
+msgstr ""
+"<literal>getParentId()</literal> &mdash; retorna el id de la conversación "
+"padre"
+
+#. Tag: para
+#: Components.xml:481
+#, no-c-format
+msgid ""
+"<literal>getRootId()</literal> &mdash; returns the conversation id of the "
+"root conversation"
+msgstr ""
+"<literal>getRootId()</literal> &mdash; retorna el id de la conversación raíz"
+
+#. Tag: para
+#: Components.xml:486
+#, no-c-format
+msgid ""
+"<literal>setTimeout(int timeout)</literal> &mdash; sets the timeout for the "
+"current conversation"
+msgstr ""
+"<literal>setTimeout(int timeout)</literal> &mdash; establece el periodo de "
+"vencimiento para la conversación actual"
+
+#. Tag: para
+#: Components.xml:491
+#, no-c-format
+msgid ""
+"<literal>setViewId(String outcome)</literal> &mdash; sets the view id to be "
+"used when switching back to the current conversation from the conversation "
+"switcher, conversation list, or breadcrumbs."
+msgstr ""
+"<literal>setViewId(String outcome)</literal> &mdash; establece el id de la "
+"vista a ser utilizada al regresar a la conversación actual desde el "
+"interruptor de conversaciones, la lista de conversaciones o el camino de "
+"navegación."
+
+#. Tag: para
+#: Components.xml:496
+#, no-c-format
+msgid ""
+"<literal>setDescription(String description)</literal> &mdash; sets the "
+"description of the current conversation to be displayed in the conversation "
+"switcher, conversation list, or breadcrumbs."
+msgstr ""
+"<literal>setDescription(String description)</literal> &mdash; establece la "
+"descripción de la conversación actual que se mostrará en el interruptor de "
+"conversaciones, la lista de conversaciones o el camino de navegación."
+
+#. Tag: para
+#: Components.xml:501
+#, no-c-format
+msgid ""
+"<literal>redirect()</literal> &mdash; redirect to the last well-defined view "
+"id for this conversation (useful after login challenges)."
+msgstr ""
+"<literal>redirect()</literal> &mdash; redirecciona el último id de vista "
+"bien definido para esta conversación (útil para utilizarse después de los "
+"desafios de inicio de sesión)."
+
+#. Tag: para
+#: Components.xml:506
+#, no-c-format
+msgid ""
+"<literal>leave()</literal> &mdash; exit the scope of this conversation, "
+"without actually ending the conversation."
+msgstr ""
+"<literal>leave()</literal> &mdash; sale del ámbito de la conversación actual "
+"sin terminar la conversación."
+
+#. Tag: para
+#: Components.xml:511
+#, no-c-format
+msgid ""
+"<literal>begin()</literal> &mdash; begin a long-running conversation "
+"(equivalent to <literal>@Begin</literal>)."
+msgstr ""
+"<literal>begin()</literal> &mdash; inicia una conversación prolongada "
+"(equivalente a <literal>@Begin</literal>)."
+
+#. Tag: para
+#: Components.xml:516
+#, no-c-format
+msgid ""
+"<literal>beginPageflow(String pageflowName)</literal> &mdash; begin a long-"
+"running conversation with a pageflow (equivalent to <literal>@Begin(pageflow="
+"\"...\")</literal>)."
+msgstr ""
+"<literal>beginPageflow(String pageflowName)</literal> &mdash; inicia una "
+"conversación prolongada con un flujo de página (equivalente a <literal>@Begin"
+"(pageflow=\"...\")</literal>)."
+
+#. Tag: para
+#: Components.xml:521
+#, no-c-format
+msgid ""
+"<literal>end()</literal> &mdash; end a long-running conversation (equivalent "
+"to <literal>@End</literal>)."
+msgstr ""
+"<literal>end()</literal> &mdash; finaliza una conversación prolongada "
+"(equivalente a <literal>@End</literal>)."
+
+#. Tag: para
+#: Components.xml:526
+#, no-c-format
+msgid ""
+"<literal>pop()</literal> &mdash; pop the conversation stack, returning to "
+"the parent conversation."
+msgstr ""
+"<literal>pop()</literal> &mdash; quita un elemento de la pila de "
+"conversación, retorna a la conversación padre."
+
+#. Tag: para
+#: Components.xml:531
+#, no-c-format
+msgid ""
+"<literal>root()</literal> &mdash; return to the root conversation of the "
+"conversation stack."
+msgstr ""
+"<literal>root()</literal> &mdash; retorna a la conversación raíz de la pila "
+"de conversación."
+
+#. Tag: para
+#: Components.xml:536
+#, no-c-format
+msgid ""
+"<literal>changeFlushMode(FlushModeType flushMode)</literal> &mdash; change "
+"the flush mode of the conversation."
+msgstr ""
+"<literal>changeFlushMode(FlushModeType flushMode)</literal> &mdash; cambia "
+"el modo de vaciado de la conversación."
+
+#. Tag: literal
+#: Components.xml:544
+#, no-c-format
+msgid "org.jboss.seam.core.conversationList"
+msgstr "org.jboss.seam.core.conversationList"
+
+#. Tag: para
+#: Components.xml:546
+#, no-c-format
+msgid "Manager component for the conversation list."
+msgstr "Componente de administración para la lista de conversaciones."
+
+#. Tag: literal
+#: Components.xml:552
+#, no-c-format
+msgid "org.jboss.seam.core.conversationStack"
+msgstr "org.jboss.seam.core.conversationStack"
+
+#. Tag: para
+#: Components.xml:554
+#, no-c-format
+msgid "Manager component for the conversation stack (breadcrumbs)."
+msgstr ""
+"Componente de administración para la pila de conversaciones (camino de "
+"navegación)"
+
+#. Tag: literal
+#: Components.xml:560
+#, no-c-format
+msgid "org.jboss.seam.core.switcher"
+msgstr "org.jboss.seam.core.switcher"
+
+#. Tag: para
+#: Components.xml:562
+#, no-c-format
+msgid "The conversation switcher."
+msgstr "El interruptor de conversaciones"
+
+#. Tag: title
+#: Components.xml:574
+#, no-c-format
+msgid "jBPM-related components"
+msgstr "Componentes relacionados con jBPM"
+
+#. Tag: para
+#: Components.xml:575
+#, no-c-format
+msgid "These components are for use with jBPM."
+msgstr "Estos componentes son para ser usados con jBPM."
+
+#. Tag: literal
+#: Components.xml:580
+#, no-c-format
+msgid "org.jboss.seam.core.pageflow"
+msgstr "org.jboss.seam.core.pageflow"
+
+#. Tag: para
+#: Components.xml:582
+#, no-c-format
+msgid "API control of Seam pageflows."
+msgstr "Control API de flujo de páginas de Seam."
+
+#. Tag: para
+#: Components.xml:587
+#, no-c-format
+msgid ""
+"<literal>isInProcess()</literal> &mdash; returns <literal>true</literal> if "
+"there is currently a pageflow in process"
+msgstr ""
+"<literal>isInProcess()</literal> &mdash; retorna <literal>true</literal> si "
+"hay un flujo de páginas en progreso"
+
+#. Tag: para
+#: Components.xml:592
+#, no-c-format
+msgid ""
+"<literal>getProcessInstance()</literal> &mdash; returns jBPM "
+"<literal>ProcessInstance</literal> for the current pageflow"
+msgstr ""
+"<literal>getProcessInstance()</literal> &mdash; retorna "
+"<literal>ProcessInstance</literal> de jBPM para el actual flujo de páginas"
+
+#. Tag: para
+#: Components.xml:597
+#, no-c-format
+msgid ""
+"<literal>begin(String pageflowName)</literal> &mdash; begin a pageflow in "
+"the context of the current conversation"
+msgstr ""
+"<literal>begin(String pageflowName)</literal> &mdash; inicia el flujo de "
+"páginas en el contexto de la conversación actual"
+
+#. Tag: para
+#: Components.xml:602
+#, no-c-format
+msgid ""
+"<literal>reposition(String nodeName)</literal> &mdash; reposition the "
+"current pageflow to a particular node"
+msgstr ""
+"<literal>reposition(String nodeName)</literal> &mdash; posiciona el flujo de "
+"páginas actual a un nodo particular"
+
+#. Tag: literal
+#: Components.xml:610
+#, no-c-format
+msgid "org.jboss.seam.core.actor"
+msgstr "org.jboss.seam.core.actor"
+
+#. Tag: para
+#: Components.xml:612
+#, no-c-format
+msgid ""
+"API for application control of attributes of the jBPM actor associated with "
+"the current session."
+msgstr ""
+"API para el control de atributos de la aplicación del actor jBPM asociado "
+"con la sesión actual."
+
+#. Tag: para
+#: Components.xml:617
+#, no-c-format
+msgid ""
+"<literal>setId(String actorId)</literal> &mdash; sets the jBPM actor id of "
+"the current user."
+msgstr ""
+"<literal>setId(String actorId)</literal> &mdash; establece el id de actor de "
+"jBPM del usuario actual."
+
+#. Tag: para
+#: Components.xml:622
+#, no-c-format
+msgid ""
+"<literal>getGroupActorIds()</literal> &mdash; returns a <literal>Set</"
+"literal> to which jBPM actor ids for the current users groups may be added."
+msgstr ""
+"<literal>getGroupActorIds()</literal> &mdash; retorna un <literal>Set</"
+"literal> al cual se pueden añadir ids de actores jBPM para los grupos de "
+"usuarios actuales."
+
+#. Tag: literal
+#: Components.xml:630
+#, no-c-format
+msgid "org.jboss.seam.core.transition"
+msgstr "org.jboss.seam.core.transition"
+
+#. Tag: para
+#: Components.xml:632
+#, no-c-format
+msgid ""
+"API for application control of the jBPM transition for the current task."
+msgstr ""
+"API para el control de aplicación de la transición jBPM para la tarea actual."
+
+#. Tag: para
+#: Components.xml:637
+#, no-c-format
+msgid ""
+"<literal>setName(String transitionName)</literal> &mdash; sets the jBPM "
+"transition name to be used when the current task is ended via "
+"<literal>@EndTask</literal>."
+msgstr ""
+"<literal>setName(String transitionName)</literal> &mdash; establece el "
+"nombre de transición de jBPM a ser utilizado cuando la tarea actual finalice "
+"a través de <literal>@EndTask</literal>."
+
+#. Tag: literal
+#: Components.xml:645
+#, no-c-format
+msgid "org.jboss.seam.core.businessProcess"
+msgstr "org.jboss.seam.core.businessProcess"
+
+#. Tag: para
+#: Components.xml:647
+#, no-c-format
+msgid ""
+"API for programmatic control of the association between the conversation and "
+"business process."
+msgstr ""
+"API para el control programático de la asociación entre la conversación y el "
+"proceso empresarial."
+
+#. Tag: para
+#: Components.xml:652
+#, no-c-format
+msgid ""
+"<literal>businessProcess.taskId</literal> &mdash; the id of the task "
+"associated with the current conversation."
+msgstr ""
+"<literal>businessProcess.taskId</literal> &mdash; el id de la tarea asociada "
+"con la conversación actual."
+
+#. Tag: para
+#: Components.xml:657
+#, no-c-format
+msgid ""
+"<literal>businessProcess.processId</literal> &mdash; the id of the process "
+"associated with the current conversation."
+msgstr ""
+"<literal>businessProcess.processId</literal> &mdash; el id del proceso "
+"asociado con la conversación actual."
+
+#. Tag: para
+#: Components.xml:662
+#, no-c-format
+msgid ""
+"<literal>businessProcess.hasCurrentTask()</literal> &mdash; is a task "
+"instance associated with the current conversation?"
+msgstr ""
+"<literal>businessProcess.hasCurrentTask()</literal> &mdash; ¿la instancia de "
+"la tarea está asociada con la conversación actual?"
+
+#. Tag: para
+#: Components.xml:667
+#, no-c-format
+msgid ""
+"<literal>businessProcess.hasCurrentProcess()</literal> &mdash; is a process "
+"instance associated with the current conversation."
+msgstr ""
+"<literal>businessProcess.hasCurrentProcess()</literal> &mdash; ¿la instancia "
+"del proceso está asociada con la conversación actual?"
+
+#. Tag: para
+#: Components.xml:672
+#, no-c-format
+msgid ""
+"<literal>createProcess(String name)</literal> &mdash; create an instance of "
+"the named process definition and associate it with the current conversation."
+msgstr ""
+"<literal>createProcess(String name)</literal> &mdash; crea una instancia de "
+"la definición del proceso nombrado y la asocia con la conversación actual."
+
+#. Tag: para
+#: Components.xml:677
+#, no-c-format
+msgid ""
+"<literal>startTask()</literal> &mdash; start the task associated with the "
+"current conversation."
+msgstr ""
+"<literal>startTask()</literal> &mdash; inicia la tarea asociada con la "
+"conversación actual."
+
+#. Tag: para
+#: Components.xml:682
+#, no-c-format
+msgid ""
+"<literal>endTask(String transitionName)</literal> &mdash; end the task "
+"associated with the current conversation."
+msgstr ""
+"<literal>endTask(String transitionName)</literal> &mdash; finaliza la tarea "
+"asociada con la conversación actual."
+
+#. Tag: para
+#: Components.xml:687
+#, no-c-format
+msgid ""
+"<literal>resumeTask(Long id)</literal> &mdash; associate the task with the "
+"given id with the current conversation."
+msgstr ""
+"<literal>resumeTask(Long id)</literal> &mdash; asocia la tarea con el id "
+"dado a la conversación actual."
+
+#. Tag: para
+#: Components.xml:692
+#, no-c-format
+msgid ""
+"<literal>resumeProcess(Long id)</literal> &mdash; associate the process with "
+"the given id with the current conversation."
+msgstr ""
+"<literal>resumeProcess(Long id)</literal> &mdash; asocia el proceso con el "
+"id dado con la conversación actual."
+
+#. Tag: para
+#: Components.xml:697
+#, no-c-format
+msgid ""
+"<literal>transition(String transitionName)</literal> &mdash; trigger the "
+"transition."
+msgstr ""
+"<literal>transition(String transitionName)</literal> &mdash; ejecuta la "
+"transición."
+
+#. Tag: literal
+#: Components.xml:705
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstance"
+msgstr "org.jboss.seam.core.taskInstance"
+
+#. Tag: para
+#: Components.xml:707
+#, no-c-format
+msgid "Manager component for the jBPM <literal>TaskInstance</literal>."
+msgstr ""
+"Componente de administración para <literal>TaskInstance</literal> de jBPM."
+
+#. Tag: literal
+#: Components.xml:713
+#, no-c-format
+msgid "org.jboss.seam.core.processInstance"
+msgstr "org.jboss.seam.core.processInstance"
+
+#. Tag: para
+#: Components.xml:715
+#, no-c-format
+msgid "Manager component for the jBPM <literal>ProcessInstance</literal>."
+msgstr ""
+"Componente de administración para el <literal>ProcessInstance</literal> de "
+"jBPM."
+
+#. Tag: literal
+#: Components.xml:721
+#, no-c-format
+msgid "org.jboss.seam.core.jbpmContext"
+msgstr "org.jboss.seam.core.jbpmContext"
+
+#. Tag: para
+#: Components.xml:723
+#, no-c-format
+msgid "Manager component for an event-scoped <literal>JbpmContext</literal>."
+msgstr ""
+"Componente de administración para un <literal>JbpmContext</literal> de "
+"ámbito de evento."
+
+#. Tag: literal
+#: Components.xml:729
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstanceList"
+msgstr "org.jboss.seam.core.taskInstanceList"
+
+#. Tag: para
+#: Components.xml:731
+#, no-c-format
+msgid "Manager component for the jBPM task list."
+msgstr "Componente de administración para la lista de tareas jBPM."
+
+#. Tag: literal
+#: Components.xml:737
+#, no-c-format
+msgid "org.jboss.seam.core.pooledTaskInstanceList"
+msgstr "org.jboss.seam.core.pooledTaskInstanceList"
+
+#. Tag: para
+#: Components.xml:739
+#, no-c-format
+msgid "Manager component for the jBPM pooled task list."
+msgstr "Componente de administración para la lista de tareas comunes de jBPM."
+
+#. Tag: literal
+#: Components.xml:745
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstanceListForType"
+msgstr "org.jboss.seam.core.taskInstanceListForType"
+
+#. Tag: para
+#: Components.xml:747
+#, no-c-format
+msgid "Manager component for the jBPM task lists."
+msgstr "Administrador de componente para las listas de tareas jBPM."
+
+#. Tag: literal
+#: Components.xml:753
+#, no-c-format
+msgid "org.jboss.seam.core.pooledTask"
+msgstr "org.jboss.seam.core.pooledTask"
+
+#. Tag: para
+#: Components.xml:755
+#, no-c-format
+msgid "Action handler for pooled task assignment."
+msgstr "Manejador de acciones para la asignación de tareas comunes."
+
+#. Tag: para
+#: Components.xml:761
+#, no-c-format
+msgid ""
+"All of these components are installed whenever the component <literal>org."
+"jboss.seam.core.jbpm</literal> is installed."
+msgstr ""
+"Todos estos componentes se instalan cuando ser instala el componente "
+"<literal>org.jboss.seam.core.jbpm</literal>."
+
+#. Tag: title
+#: Components.xml:767
+#, no-c-format
+msgid "Security-related components"
+msgstr "Componentes relacionados con la seguridad"
+
+#. Tag: para
+#: Components.xml:768
+#, no-c-format
+msgid "These components relate to web-tier security."
+msgstr "Estos componentes se relacionan con la seguridad web."
+
+#. Tag: literal
+#: Components.xml:773
+#, no-c-format
+msgid "org.jboss.seam.core.userPrincipal"
+msgstr "org.jboss.seam.core.userPrincipal"
+
+#. Tag: para
+#: Components.xml:775
+#, no-c-format
+msgid "Manager component for the current user <literal>Principal</literal>."
+msgstr ""
+"Componente de administración para el usuario <literal>Principal</literal> "
+"actual."
+
+#. Tag: literal
+#: Components.xml:781
+#, no-c-format
+msgid "org.jboss.seam.core.isUserInRole"
+msgstr "org.jboss.seam.core.isUserInRole"
+
+#. Tag: para
+#: Components.xml:783
+#, no-c-format
+msgid ""
+"Allows JSF pages to choose to render a control, depending upon the roles "
+"available to the current principal. <literal>&lt;h:commandButton value=\"edit"
+"\" rendered=\"#{isUserInRole[&#39;admin&#39;]}\"/&gt;</literal>."
+msgstr ""
+"Permite que las páginas JFS elijan presentar un control dependiendo de los "
+"roles disponibles en la página principal. <literal>&lt;h:commandButton value="
+"\"edit\" rendered=\"#{isUserInRole[&#39;admin&#39;]}\"/&gt;</literal>."
+
+#. Tag: title
+#: Components.xml:792
+#, no-c-format
+msgid "JMS-related components"
+msgstr "Componentes relacionados con JMS"
+
+#. Tag: para
+#: Components.xml:793
+#, no-c-format
+msgid ""
+"These components are for use with managed <literal>TopicPublisher</literal>s "
+"and <literal>QueueSender</literal>s (see below)."
+msgstr ""
+"Estos componentes se utilizan con <literal>TopicPublisher</literal> y "
+"<literal>QueueSender</literal> administrados (ver a continuación)."
+
+#. Tag: literal
+#: Components.xml:798
+#, no-c-format
+msgid "org.jboss.seam.jms.queueSession"
+msgstr "org.jboss.seam.jms.queueSession"
+
+#. Tag: para
+#: Components.xml:800
+#, no-c-format
+msgid "Manager component for a JMS <literal>QueueSession</literal> ."
+msgstr ""
+"Componente de administración para un <literal>QueueSession</literal> de JMS."
+
+#. Tag: literal
+#: Components.xml:806
+#, no-c-format
+msgid "org.jboss.seam.jms.topicSession"
+msgstr "org.jboss.seam.jms.topicSession"
+
+#. Tag: para
+#: Components.xml:808
+#, no-c-format
+msgid "Manager component for a JMS <literal>TopicSession</literal> ."
+msgstr ""
+"Componente de administración para un <literal>TopicSession</literal> de JMS."
+
+#. Tag: title
+#: Components.xml:817
+#, no-c-format
+msgid "Mail-related components"
+msgstr "Componentes relacionados con el correo"
+
+#. Tag: para
+#: Components.xml:818
+#, no-c-format
+msgid "These components are for use with Seam&#39;s Email support"
+msgstr "Estos componentes se utilizan con el soporte de correo-e de Seam"
+
+#. Tag: literal
+#: Components.xml:823
+#, no-c-format
+msgid "org.jboss.seam.mail.mailSession"
+msgstr "org.jboss.seam.mail.mailSession"
+
+#. Tag: para
+#: Components.xml:825
+#, no-c-format
+msgid "Manager component for a JavaMail <literal>Session</literal> ."
+msgstr ""
+"Componente de administración para una <literal>Session</literal> de JavaMail."
+
+#. Tag: para
+#: Components.xml:830
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.host</literal> &mdash; the hostname "
+"of the SMTP server to use"
+msgstr ""
+"<literal>org.jboss.seam.mail.mailSession.host</literal> &mdash; el nombre de "
+"host del servidor SMTP a usar"
+
+#. Tag: para
+#: Components.xml:835
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.port</literal> &mdash; the port of "
+"the SMTP server to use"
+msgstr ""
+"<literal>org.jboss.seam.mail.mailSession.port</literal> &mdash; el puerto "
+"del servidor SMTP a usar"
+
+#. Tag: para
+#: Components.xml:840
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.username</literal> &mdash; the "
+"username to use to connect to the SMTP server."
+msgstr ""
+"<literal>org.jboss.seam.mail.mailSession.username</literal> &mdash; el "
+"nombre de usuario a utilizar para realizar la conexión al servidor SMTP."
+
+#. Tag: para
+#: Components.xml:845
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.password</literal> &mdash; the "
+"password to use to connect to the SMTP server"
+msgstr ""
+"<literal>org.jboss.seam.mail.mailSession.password</literal> &mdash; la "
+"contraseña a utilizar para realizar la conexión al servidor SMTP"
+
+#. Tag: para
+#: Components.xml:850
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.debug</literal> &mdash; enable "
+"JavaMail debugging (very verbose)"
+msgstr ""
+"<literal>org.jboss.seam.mail.mailSession.debug</literal> &mdash; activar "
+"depurado de JavaMail (bastante salida de mensajes)"
+
+#. Tag: para
+#: Components.xml:855
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.sessionJndiName</literal> &mdash; "
+"name under which a javax.mail.Session is bound to JNDI"
+msgstr ""
+"<literal>org.jboss.seam.mail.mailSession.sessionJndiName</literal> &mdash; "
+"nombre bajo el cual javax.mail.Session está vinculado a JNDI"
+
+#. Tag: title
+#: Components.xml:866
+#, no-c-format
+msgid "Infrastructural components"
+msgstr "Componentes de infraestructura"
+
+#. Tag: para
+#: Components.xml:867
+#, no-c-format
+msgid ""
+"These components provide critical platform infrastructure. You can install a "
+"component by including its class name in the <literal>org.jboss.seam.core."
+"init.componentClasses</literal> configuration property."
+msgstr ""
+"Estos componentes proporcionan infraestructura crítica para la plataforma. "
+"Puede instalar un componente si incluye su nombre de clase en la propiedad "
+"de configuración <literal>org.jboss.seam.core.init.componentClasses</literal>"
+
+#. Tag: literal
+#: Components.xml:872
+#, no-c-format
+msgid "org.jboss.seam.core.init"
+msgstr "org.jboss.seam.core.init"
+
+#. Tag: para
+#: Components.xml:874
+#, no-c-format
+msgid "Initialization settings for Seam. Always installed."
+msgstr "Inicialización de parámetros para Seam. Siempre se instala."
+
+#. Tag: para
+#: Components.xml:879
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.jndiPattern</literal> &mdash; the JNDI "
+"pattern used for looking up session beans"
+msgstr ""
+"<literal>org.jboss.seam.core.init.jndiPattern</literal> &mdash; El patrón "
+"usado para buscar beans de sesión."
+
+#. Tag: para
+#: Components.xml:884
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.debug</literal> &mdash; enable Seam debug "
+"mode"
+msgstr ""
+"<literal>org.jboss.seam.core.init.debug</literal> &mdash; activa el modo de "
+"depurado de Seam"
+
+#. Tag: para
+#: Components.xml:889
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.clientSideConversations</literal> &mdash; "
+"if set to <literal>true</literal>, Seam will save conversation context "
+"variables in the client instead of in the <literal>HttpSession</literal>."
+msgstr ""
+"<literal>org.jboss.seam.core.init.clientSideConversations</literal> &mdash; "
+"si se establece como <literal>true</literal>, Seam guardará las variables de "
+"contexto de conversación en el cliente en vez de en <literal>HttpSession</"
+"literal>."
+
+#. Tag: para
+#: Components.xml:894
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.userTransactionName</literal> &mdash; the "
+"JNDI name to use when looking up the JTA <literal>UserTransaction</literal> "
+"object."
+msgstr ""
+"<literal>org.jboss.seam.core.init.userTransactionName</literal> &mdash; el "
+"nombre JNDI a utilizar cuando se busca el objeto <literal>UserTransaction</"
+"literal> de JTA."
+
+#. Tag: literal
+#: Components.xml:902
+#, no-c-format
+msgid "org.jboss.seam.core.manager"
+msgstr "org.jboss.seam.core.manager"
+
+#. Tag: para
+#: Components.xml:904
+#, no-c-format
+msgid ""
+"Internal component for Seam page and conversation context management. Always "
+"installed."
+msgstr ""
+"Componente interno para la página Seam y la administración de contextos de "
+"conversación. Siempre se instala."
+
+#. Tag: para
+#: Components.xml:909
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationTimeout</literal> &mdash; "
+"the conversation context timeout in milliseconds."
+msgstr ""
+"<literal>org.jboss.seam.core.manager.conversationTimeout</literal> &mdash; "
+"el tiempo de espera del contexto de conversación en milisegundos."
+
+#. Tag: para
+#: Components.xml:914
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.concurrentRequestTimeout</literal> "
+"&mdash; maximum wait time for a thread attempting to gain a lock on the long-"
+"running conversation context."
+msgstr ""
+"<literal>org.jboss.seam.core.manager.concurrentRequestTimeout</literal> "
+"&mdash; tiempo de espera máximo para un que un hilo intente obtener un "
+"bloqueo en el contexto de conversación prolongado."
+
+#. Tag: para
+#: Components.xml:919
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationIdParameter</literal> "
+"&mdash; the request parameter used to propagate the conversation id, default "
+"to <literal>conversationId</literal>."
+msgstr ""
+"<literal>org.jboss.seam.core.manager.conversationIdParameter</literal> "
+"&mdash; el parámetro de solicitud usado para propagar el id de la "
+"conversación, el valor por defecto es <literal>conversationId</literal>."
+
+#. Tag: para
+#: Components.xml:924
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationIsLongRunningParameter</"
+"literal> &mdash; the request parameter used to propagate information about "
+"whether the conversation is long-running, default to "
+"<literal>conversationIsLongRunning</literal>."
+msgstr ""
+"<literal>org.jboss.seam.core.manager.conversationIsLongRunningParameter</"
+"literal> &mdash; el parámetro de solicitud utilizado para propagar "
+"información sobre el estado de la conversación (si es una conversación "
+"prolongada o no). El valor por defecto es "
+"<literal>conversationIsLongRunning</literal>."
+
+#. Tag: literal
+#: Components.xml:932
+#, no-c-format
+msgid "org.jboss.seam.core.pages"
+msgstr "org.jboss.seam.core.pages"
+
+#. Tag: para
+#: Components.xml:934
+#, no-c-format
+msgid "Internal component for Seam workspace management. Always installed."
+msgstr ""
+"Componente interno para la administración de espacios de trabajo de Seam. "
+"Siempre instalado."
+
+#. Tag: para
+#: Components.xml:939
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.pages.noConversationViewId</literal> &mdash; "
+"global setting for the view id to redirect to when a conversation entry is "
+"not found on the server side."
+msgstr ""
+"<literal>org.jboss.seam.core.pages.noConversationViewId</literal> &mdash; "
+"parámetro global del id de la vista para redireccionar cuando una entrada de "
+"la conversación no se encuentra en el servidor."
+
+#. Tag: literal
+#: Components.xml:947
+#, no-c-format
+msgid "org.jboss.seam.core.ejb"
+msgstr "org.jboss.seam.core.ejb"
+
+#. Tag: para
+#: Components.xml:949
+#, no-c-format
+msgid ""
+"Bootstraps the JBoss Embeddable EJB3 container. Install as class "
+"<literal>org.jboss.seam.core.Ejb</literal>. This is useful when using Seam "
+"with EJB components outside the context of a Java EE 5 application server."
+msgstr ""
+"Realiza un bootstrap en el contenedor JBoss Embeddable EJB3. Instala como "
+"clase <literal>org.jboss.seam.core.Ejb</literal>. Esto es útil al utilizar "
+"Seam con componentes EJB fuera del contexto de un servidor de aplicaciones "
+"Java EE 5. "
+
+#. Tag: para
+#: Components.xml:952
+#, no-c-format
+msgid ""
+"The basic Embedded EJB configuration is defined in <literal>jboss-embedded-"
+"beans.xml</literal>. Additional microcontainer configuration (for example, "
+"extra datasources) may be specified by <literal>jboss-beans.xml</literal> or "
+"<literal>META-INF/jboss-beans.xml</literal> in the classpath."
+msgstr ""
+"La configuración básica de EJB de entrada está definida en <literal>jboss-"
+"embedded-beans.xml</literal>. La configuración adicional de "
+"microcontenedores (por ejemplo las fuentes de datos adicionales) pueden ser "
+"especificadas por <literal>jboss-beans.xml</literal> o <literal>META-INF/"
+"jboss-beans.xml</literal> en la ruta de la clase."
+
+#. Tag: literal
+#: Components.xml:958
+#, no-c-format
+msgid "org.jboss.seam.core.microcontainer"
+msgstr "org.jboss.seam.core.microcontainer"
+
+#. Tag: para
+#: Components.xml:960
+#, no-c-format
+msgid ""
+"Bootstraps the JBoss microcontainer. Install as class <literal>org.jboss."
+"seam.core.Microcontainer</literal>. This is useful when using Seam with "
+"Hibernate and no EJB components outside the context of a Java EE application "
+"server. The microcontainer can provide a partial EE environment with JNDI, "
+"JTA, a JCA datasource and Hibernate."
+msgstr ""
+"Realiza un bootstrap del microcontenedor JBoss. Se instala como clase "
+"<literal>org.jboss.seam.core.Microcontainer</literal>. Esto es útil al "
+"utilizar Seam con Hibernate y sin componentes EJB fuera del contexto del "
+"servidor de aplicaciones Java EE. El microcontenedor puede proporcionar un "
+"entorno EE parcial con JNDI, JTA, una fuente de datos JCA y Hibernate."
+
+#. Tag: para
+#: Components.xml:963
+#, no-c-format
+msgid ""
+"The microcontainer configuration may be specified by <literal>jboss-beans."
+"xml</literal> or <literal>META-INF/jboss-beans.xml</literal> in the "
+"classpath."
+msgstr ""
+"La configuración de microcontenedores puede ser especificada por "
+"<literal>jboss-beans.xml</literal> o <literal>META-INF/jboss-beans.xml</"
+"literal> en la ruta de la clase."
+
+#. Tag: literal
+#: Components.xml:969
+#, no-c-format
+msgid "org.jboss.seam.core.jbpm"
+msgstr "org.jboss.seam.core.jbpm"
+
+#. Tag: para
+#: Components.xml:971
+#, no-c-format
+msgid ""
+"Bootstraps a <literal>JbpmConfiguration</literal>. Install as class "
+"<literal>org.jboss.seam.core.Jbpm</literal>."
+msgstr ""
+"Realiza un bootstraps en <literal>JbpmConfiguration</literal>. Se instala "
+"como clase <literal>org.jboss.seam.core.Jbpm</literal>."
+
+#. Tag: para
+#: Components.xml:976
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.jbpm.processDefinitions</literal> &mdash; a "
+"list of resource names of jPDL files to be used for orchestration of "
+"business processes."
+msgstr ""
+"<literal>org.jboss.seam.core.jbpm.processDefinitions</literal> &mdash; una "
+"lista de nombres de recursos de archivos jPDL a ser utilizados en la "
+"orquestación de procesos corporativos."
+
+#. Tag: para
+#: Components.xml:981
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.jbpm.pageflowDefinitions</literal> &mdash; a "
+"list of resource names of jPDL files to be used for orchestration of "
+"conversation page flows."
+msgstr ""
+"<literal>org.jboss.seam.core.jbpm.pageflowDefinitions</literal> &mdash; una "
+"lista de nombres de recursos de archivos jPDL a ser utilizados en la "
+"orquestación de flujos de página de conversación."
+
+#. Tag: literal
+#: Components.xml:989
+#, no-c-format
+msgid "org.jboss.seam.core.conversationEntries"
+msgstr "org.jboss.seam.core.conversationEntries"
+
+#. Tag: para
+#: Components.xml:991
+#, no-c-format
+msgid ""
+"Internal session-scoped component recording the active long-running "
+"conversations between requests."
+msgstr ""
+"Componente interno de ámbito de sesión que guarda la actividad de "
+"conversaciones prolongadas entre solicitudes."
+
+#. Tag: literal
+#: Components.xml:997
+#, no-c-format
+msgid "org.jboss.seam.core.facesPage"
+msgstr "org.jboss.seam.core.facesPage"
+
+#. Tag: para
+#: Components.xml:999
+#, no-c-format
+msgid ""
+"Internal page-scoped component recording the conversation context associated "
+"with a page."
+msgstr ""
+"Componente interno de ámbito de sesión que guarda el contexto asociado con "
+"la página."
+
+#. Tag: literal
+#: Components.xml:1005
+#, no-c-format
+msgid "org.jboss.seam.core.persistenceContexts"
+msgstr "org.jboss.seam.core.persistenceContexts"
+
+#. Tag: para
+#: Components.xml:1007
+#, no-c-format
+msgid ""
+"Internal component recording the persistence contexts which were used in the "
+"current conversation."
+msgstr ""
+"Componente interno que guarda el contexto de persistencia que se utilizó en "
+"la conversación actual."
+
+#. Tag: literal
+#: Components.xml:1013
+#, no-c-format
+msgid "org.jboss.seam.jms.queueConnection"
+msgstr "org.jboss.seam.jms.queueConnection"
+
+#. Tag: para
+#: Components.xml:1015
+#, no-c-format
+msgid ""
+"Manages a JMS <literal>QueueConnection</literal>. Installed whenever managed "
+"managed <literal>QueueSender</literal> is installed."
+msgstr ""
+"Administra un <literal>QueueConnection</literal> de JMS. Se instala cuando "
+"el <literal>QueueSender</literal> administrado es instalado."
+
+#. Tag: para
+#: Components.xml:1020
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.jms.queueConnection.queueConnectionFactoryJndiName</"
+"literal> &mdash; the JNDI name of a JMS <literal>QueueConnectionFactory</"
+"literal>. Default to <literal>UIL2ConnectionFactory</literal>"
+msgstr ""
+"<literal>org.jboss.seam.jms.queueConnection.queueConnectionFactoryJndiName</"
+"literal> &mdash; el nombre JNDI de un <literal>QueueConnectionFactory</"
+"literal> de JMS. El valor por defecto es <literal>UIL2ConnectionFactory</"
+"literal>"
+
+#. Tag: literal
+#: Components.xml:1028
+#, no-c-format
+msgid "org.jboss.seam.jms.topicConnection"
+msgstr "org.jboss.seam.jms.topicConnection"
+
+#. Tag: para
+#: Components.xml:1030
+#, no-c-format
+msgid ""
+"Manages a JMS <literal>TopicConnection</literal>. Installed whenever managed "
+"managed <literal>TopicPublisher</literal> is installed."
+msgstr ""
+"Administra un <literal>TopicConnection</literal> de JMS. Instalado cuando el "
+"<literal>TopicPublisher</literal> administrado es instalado."
+
+#. Tag: para
+#: Components.xml:1035
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.jms.topicConnection.topicConnectionFactoryJndiName</"
+"literal> &mdash; the JNDI name of a JMS <literal>TopicConnectionFactory</"
+"literal>. Default to <literal>UIL2ConnectionFactory</literal>"
+msgstr ""
+"<literal>org.jboss.seam.jms.topicConnection.topicConnectionFactoryJndiName</"
+"literal> &mdash; el nombre JNDI de un <literal>TopicConnectionFactory</"
+"literal> de JMS. Por defecto es <literal>UIL2ConnectionFactory</literal>."
+
+#. Tag: literal
+#: Components.xml:1043
+#, no-c-format
+msgid "org.jboss.seam.persistence.persistenceProvider"
+msgstr "org.jboss.seam.persistence.persistenceProvider"
+
+#. Tag: para
+#: Components.xml:1045
+#, no-c-format
+msgid "Abstraction layer for non-standardized features of JPA provider."
+msgstr ""
+"Capas de abstracción para funcionalidades no estándar del proveedor JPA."
+
+#. Tag: literal
+#: Components.xml:1051
+#, no-c-format
+msgid "org.jboss.seam.core.validation"
+msgstr "org.jboss.seam.core.validation"
+
+#. Tag: para
+#: Components.xml:1053
+#, no-c-format
+msgid "Internal component for Hibernate Validator support."
+msgstr "Componente interno para el soporte de Hibernate Validator."
+
+#. Tag: literal
+#: Components.xml:1059
+#, no-c-format
+msgid "org.jboss.seam.debug.introspector"
+msgstr "org.jboss.seam.debug.introspector"
+
+#. Tag: para
+#: Components.xml:1061 Components.xml:1069
+#, no-c-format
+msgid "Support for the Seam Debug Page."
+msgstr "Soporte para la página de depuración de Seam."
+
+#. Tag: literal
+#: Components.xml:1067
+#, no-c-format
+msgid "org.jboss.seam.debug.contexts"
+msgstr "org.jboss.seam.debug.contexts"
+
+#. Tag: title
+#: Components.xml:1078
+#, no-c-format
+msgid "Special components"
+msgstr "Componentes especiales"
+
+#. Tag: para
+#: Components.xml:1079
+#, no-c-format
+msgid ""
+"Certain special Seam component classes are installable multiple times under "
+"names specified in the Seam configuration. For example, the following lines "
+"in <literal>components.xml</literal> install and configure two Seam "
+"components:"
+msgstr ""
+"Algunas clases de componentes especiales de Seam se pueden instalar varias "
+"veces bajo nombres especificados en la configuración de Seam. Por ejemplo, "
+"las siguientes líneas en <literal>components.xml</literal> instalan y "
+"configuran dos componentes Seam:"
+
+#. Tag: programlisting
+#: Components.xml:1082
+#, no-c-format
+msgid ""
+"&lt;component name=\"bookingDatabase\"\n"
+"          class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"    &lt;property name=\"persistenceUnitJndiName\"&gt;java:/comp/emf/"
+"bookingPersistence&lt;/property&gt;\n"
+"&lt;/component&gt;\n"
+"\n"
+"&lt;component name=\"userDatabase\"\n"
+"          class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"    &lt;property name=\"persistenceUnitJndiName\"&gt;java:/comp/emf/"
+"userPersistence&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+"&lt;component name=\"bookingDatabase\"\n"
+"          class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"    &lt;property name=\"persistenceUnitJndiName\"&gt;java:/comp/emf/"
+"bookingPersistence&lt;/property&gt;\n"
+"&lt;/component&gt;\n"
+"\n"
+"&lt;component name=\"userDatabase\"\n"
+"          class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"    &lt;property name=\"persistenceUnitJndiName\"&gt;java:/comp/emf/"
+"userPersistence&lt;/property&gt;\n"
+"&lt;/component&gt;"
+
+#. Tag: para
+#: Components.xml:1083
+#, no-c-format
+msgid ""
+"The Seam component names are <literal>bookingDatabase</literal> and "
+"<literal>userDatabase</literal>."
+msgstr ""
+"Los nombres de componentes de Seam son <literal>bookingDatabase</literal> y "
+"<literal>userDatabase</literal>."
+
+#. Tag: literal
+#: Components.xml:1088
+#, no-c-format
+msgid "&lt;entityManager&gt;"
+msgstr "&lt;entityManager&gt;"
+
+#. Tag: literal
+#: Components.xml:1089
+#, no-c-format
+msgid "org.jboss.seam.core.ManagedPersistenceContext"
+msgstr "org.jboss.seam.core.ManagedPersistenceContext"
+
+#. Tag: para
+#: Components.xml:1091
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed <literal>EntityManager</"
+"literal> with an extended persistence context."
+msgstr ""
+"Componente de administración para un <literal>EntityManager</literal> "
+"administrada en un ámbito de conversación con un contexto de persistencia "
+"extendido."
+
+#. Tag: para
+#: Components.xml:1096
+#, no-c-format
+msgid ""
+"<literal> &lt;entityManager&gt; .entityManagerFactory</literal> &mdash; a "
+"value binding expression that evaluates to an instance of "
+"<literal>EntityManagerFactory</literal>."
+msgstr ""
+"<literal> &lt;entityManager&gt; .entityManagerFactory</literal> &mdash; una "
+"expresión de vinculación de valor que es evaluada con una instancia de "
+"<literal>EntityManagerFactory</literal>."
+
+#. Tag: para
+#: Components.xml:1099
+#, no-c-format
+msgid ""
+"<literal> &lt;entityManager&gt; .persistenceUnitJndiName</literal> &mdash; "
+"the JNDI name of the entity manager factory, default to <literal>java:/ &lt;"
+"managedPersistenceContext&gt; </literal>."
+msgstr ""
+"<literal> &lt;entityManager&gt; .persistenceUnitJndiName</literal> &mdash;  "
+"el nombre JNDI de la fábrica de administración de entidades. El valor por "
+"defecto es <literal>java:/ &lt;managedPersistenceContext&gt; </literal>."
+
+#. Tag: literal
+#: Components.xml:1107
+#, no-c-format
+msgid "&lt;entityManagerFactory&gt;"
+msgstr "&lt;entityManagerFactory&gt;"
+
+#. Tag: literal
+#: Components.xml:1108
+#, no-c-format
+msgid "org.jboss.seam.core.EntityManagerFactory"
+msgstr "org.jboss.seam.core.EntityManagerFactory"
+
+#. Tag: para
+#: Components.xml:1110
+#, no-c-format
+msgid ""
+"Manages a JPA <literal>EntityManagerFactory</literal>. This is most useful "
+"when using JPA outside of an EJB 3.0 supporting environment."
+msgstr ""
+"Administra un <literal>EntityManagerFactory</literal> de JPA. Es bastante "
+"útil cuando utiliza JPA fuera de un entorno con soporte EJB 3.0."
+
+#. Tag: para
+#: Components.xml:1115
+#, no-c-format
+msgid ""
+"<literal>entityManagerFactory.persistenceUnitName</literal> &mdash; the name "
+"of the persistence unit."
+msgstr ""
+"<literal>entityManagerFactory.persistenceUnitName</literal> &mdash; el "
+"nombre de una unidad de persistencia."
+
+#. Tag: para
+#: Components.xml:1120 Components.xml:1158
+#, no-c-format
+msgid "See the API JavaDoc for further configuration properties."
+msgstr "Vea el JavaDoc de la API para ver las propiedades de configuración."
+
+#. Tag: literal
+#: Components.xml:1126
+#, no-c-format
+msgid "&lt;session&gt;"
+msgstr "&lt;session&gt;"
+
+#. Tag: literal
+#: Components.xml:1127
+#, no-c-format
+msgid "org.jboss.seam.core.ManagedSession"
+msgstr "org.jboss.seam.core.ManagedSession"
+
+#. Tag: para
+#: Components.xml:1129
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed Hibernate "
+"<literal>Session</literal>."
+msgstr ""
+"Componente de administración para una <literal>Session</literal> Hibernate "
+"administrada cuyo ámbito se encuentra dentro de una conversación."
+
+#. Tag: para
+#: Components.xml:1134
+#, no-c-format
+msgid ""
+"<literal> &lt;session&gt; .sessionFactory</literal> &mdash; a value binding "
+"expression that evaluates to an instance of <literal>SessionFactory</"
+"literal>."
+msgstr ""
+"<literal> &lt;session&gt; .sessionFactory</literal> &mdash; una expresión de "
+"vinculación de valor que se evalúa contra una instancia de "
+"<literal>SessionFactory</literal>."
+
+#. Tag: para
+#: Components.xml:1137
+#, no-c-format
+msgid ""
+"<literal> &lt;session&gt; .sessionFactoryJndiName</literal> &mdash; the JNDI "
+"name of the session factory, default to <literal>java:/ &lt;"
+"managedSession&gt; </literal>."
+msgstr ""
+"<literal> &lt;session&gt; .sessionFactoryJndiName</literal> &mdash; el "
+"nombre JNDI de una fábrica de sesión. El valor por defecto es "
+"<literal>java:/ &lt;managedSession&gt; </literal>."
+
+#. Tag: literal
+#: Components.xml:1145
+#, no-c-format
+msgid "&lt;sessionFactory&gt;"
+msgstr "&lt;sessionFactory&gt;"
+
+#. Tag: literal
+#: Components.xml:1146
+#, no-c-format
+msgid "org.jboss.seam.core.HibernateSessionFactory"
+msgstr "org.jboss.seam.core.HibernateSessionFactory"
+
+#. Tag: para
+#: Components.xml:1148
+#, no-c-format
+msgid "Manages a Hibernate <literal>SessionFactory</literal>."
+msgstr "Administra un <literal>SessionFactory</literal> de Hibernate."
+
+#. Tag: para
+#: Components.xml:1153
+#, no-c-format
+msgid ""
+"<literal>&lt;sessionFactory&gt;.cfgResourceName</literal> &mdash; the path "
+"to the configuration file. Default to <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+"<literal>&lt;sessionFactory&gt;.cfgResourceName</literal> &mdash; la ruta al "
+"archivo de configuración. Por defecto es <literal>hibernate.cfg.xml</"
+"literal>."
+
+#. Tag: literal
+#: Components.xml:1164
+#, no-c-format
+msgid "&lt;managedQueueSender&gt;"
+msgstr "&lt;managedQueueSender&gt;"
+
+#. Tag: literal
+#: Components.xml:1165
+#, no-c-format
+msgid "org.jboss.seam.jms.ManagedQueueSender"
+msgstr "org.jboss.seam.jms.ManagedQueueSender"
+
+#. Tag: para
+#: Components.xml:1167
+#, no-c-format
+msgid ""
+"Manager component for an event scoped managed JMS <literal>QueueSender</"
+"literal>."
+msgstr ""
+"Componente de administración para un <literal>QueueSender</literal> de JMS "
+"administrado dentro de un ámbito de evento."
+
+#. Tag: para
+#: Components.xml:1172
+#, no-c-format
+msgid ""
+"<literal> &lt;managedQueueSender&gt; .queueJndiName</literal> &mdash; the "
+"JNDI name of the JMS queue."
+msgstr ""
+"<literal> &lt;managedQueueSender&gt; .queueJndiName</literal> &mdash; el "
+"nombre JNDI de la cola JMS."
+
+#. Tag: literal
+#: Components.xml:1180
+#, no-c-format
+msgid "&lt;managedTopicPublisher&gt;"
+msgstr "&lt;managedTopicPublisher&gt;"
+
+#. Tag: literal
+#: Components.xml:1181
+#, no-c-format
+msgid "org.jboss.seam.jms.ManagedTopicPublisher"
+msgstr "org.jboss.seam.jms.ManagedTopicPublisher"
+
+#. Tag: para
+#: Components.xml:1183
+#, no-c-format
+msgid ""
+"Manager component for an event scoped managed JMS <literal>TopicPublisher</"
+"literal>."
+msgstr ""
+"Componente de administración para un <literal>TopicPublisher</literal> de "
+"JMS administrado dentro de un ámbito de evento."
+
+#. Tag: para
+#: Components.xml:1188
+#, no-c-format
+msgid ""
+"<literal> &lt;managedTopicPublisher&gt; .topicJndiName</literal> &mdash; the "
+"JNDI name of the JMS topic."
+msgstr ""
+"<literal> &lt;managedTopicPublisher&gt; .topicJndiName</literal> &mdash; el "
+"nombre JNDI del tópico JMS."
+
+#. Tag: literal
+#: Components.xml:1196
+#, no-c-format
+msgid "&lt;managedWorkingMemory&gt;"
+msgstr "&lt;managedWorkingMemory&gt;"
+
+#. Tag: literal
+#: Components.xml:1197
+#, no-c-format
+msgid "org.jboss.seam.drools.ManagedWorkingMemory"
+msgstr "org.jboss.seam.drools.ManagedWorkingMemory"
+
+#. Tag: para
+#: Components.xml:1199
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed Drools "
+"<literal>WorkingMemory</literal>."
+msgstr ""
+"Componente de administración para un <literal>WorkingMemory</literal> de "
+"Drools administrado dentro de un ámbito de conversación."
+
+#. Tag: para
+#: Components.xml:1204
+#, no-c-format
+msgid ""
+"<literal> &lt;managedWorkingMemory&gt; .ruleBase</literal> &mdash; a value "
+"expression that evaluates to an instance of <literal>RuleBase</literal>."
+msgstr ""
+"<literal> &lt;managedWorkingMemory&gt; .ruleBase</literal> &mdash; una "
+"expresión de valor que es evaluada contra una instancia de "
+"<literal>RuleBase</literal>."
+
+#. Tag: literal
+#: Components.xml:1212
+#, no-c-format
+msgid "&lt;ruleBase&gt;"
+msgstr "&lt;ruleBase&gt;"
+
+#. Tag: literal
+#: Components.xml:1213
+#, no-c-format
+msgid "org.jboss.seam.drools.RuleBase"
+msgstr "org.jboss.seam.drools.RuleBase"
+
+#. Tag: para
+#: Components.xml:1215
+#, no-c-format
+msgid ""
+"Manager component for an application scoped Drools <literal>RuleBase</"
+"literal>. Note that this is not really intended for production usage, since "
+"it does not support dynamic installation of new rules."
+msgstr ""
+"Componente de administración para un <literal>RuleBase</literal> de Drools "
+"con ámbito de aplicación. Note que este componente no está dirigido "
+"realmente para utilizarse en entornos de producción ya que no soporta la "
+"instalación dinámica de nuevas reglas."
+
+#. Tag: para
+#: Components.xml:1220
+#, no-c-format
+msgid ""
+"<literal> &lt;ruleBase&gt; .ruleFiles</literal> &mdash; a list of files "
+"containing Drools rules."
+msgstr ""
+"<literal> &lt;ruleBase&gt; .ruleFiles</literal> &mdash; una lista de "
+"archivos que contienen las reglas Drools."
+
+#. Tag: para
+#: Components.xml:1223
+#, no-c-format
+msgid ""
+"<literal> &lt;ruleBase&gt; .dslFile</literal> &mdash; a Drools DSL "
+"definition."
+msgstr ""
+"<literal> &lt;ruleBase&gt; .dslFile</literal> &mdash; una definición DSL de "
+"Drools."
+
+#. Tag: literal
+#: Components.xml:1231
+#, no-c-format
+msgid "&lt;entityHome&gt;"
+msgstr "&lt;entityHome&gt;"
+
+#. Tag: literal
+#: Components.xml:1232
+#, no-c-format
+msgid "org.jboss.seam.framework.EntityHome"
+msgstr "org.jboss.seam.framework.EntityHome"
+
+#. Tag: literal
+#: Components.xml:1238
+#, no-c-format
+msgid "&lt;hibernateEntityHome&gt;"
+msgstr "&lt;hibernateEntityHome&gt;"
+
+#. Tag: literal
+#: Components.xml:1239
+#, no-c-format
+msgid "org.jboss.seam.framework.HibernateEntityHome"
+msgstr "org.jboss.seam.framework.HibernateEntityHome"
+
+#. Tag: literal
+#: Components.xml:1245
+#, no-c-format
+msgid "&lt;entityQuery&gt;"
+msgstr "&lt;entityQuery&gt;"
+
+#. Tag: literal
+#: Components.xml:1246
+#, no-c-format
+msgid "org.jboss.seam.framework.EntityQuery"
+msgstr "org.jboss.seam.framework.EntityQuery"
+
+#. Tag: literal
+#: Components.xml:1252
+#, no-c-format
+msgid "&lt;hibernateEntityQuery&gt;"
+msgstr "&lt;hibernateEntityQuery&gt;"
+
+#. Tag: literal
+#: Components.xml:1253
+#, no-c-format
+msgid "org.jboss.seam.framework.HibernateEntityQuery"
+msgstr "org.jboss.seam.framework.HibernateEntityQuery"

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Concepts.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Concepts.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Concepts.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2730 @@
+# translation of Concepts.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Concepts\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 01:04+0000\n"
+"PO-Revision-Date: 2007-10-25 10:36+1000\n"
+"Last-Translator: Angela Garcia\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Concepts.xml:6
+#, no-c-format
+msgid "The contextual component model"
+msgstr "El modelo de componentes contextuales"
+
+#. Tag: para
+#: Concepts.xml:7
+#, no-c-format
+msgid ""
+"The two core concepts in Seam are the notion of a <emphasis>context</"
+"emphasis> and the notion of a <emphasis>component</emphasis>. Components are "
+"stateful objects, usually EJBs, and an instance of a component is associated "
+"with a context, and given a name in that context. <emphasis>Bijection</"
+"emphasis> provides a mechanism for aliasing internal component names "
+"(instance variables) to contextual names, allowing component trees to be "
+"dynamically assembled, and reassembled by Seam."
+msgstr ""
+"Los dos conceptos más importantes en Seam son la noción de "
+"<emphasis>contexto</emphasis> y la noción de <emphasis>componente</"
+"emphasis>. Los componentes son objetos con estado, usualmente EJBs y una "
+"instancia de un componente se asocia con un contexto y el nombre dado en ese "
+"contexto. La <emphasis>biyección</emphasis> proporciona un mecanismo para "
+"utilizar alias con los nombres de componentes internos (variables de "
+"instancia) con los nombres contextuales, permitiendo la reunión dinámica de "
+"los árboles de componentes y a su vez la reunión que Seam produce."
+
+#. Tag: para
+#: Concepts.xml:10
+#, no-c-format
+msgid "Let&#39;s start by describing the contexts built in to Seam."
+msgstr "Vamos a empezar por describir los contextos incorporados en Seam. "
+
+#. Tag: title
+#: Concepts.xml:13
+#, no-c-format
+msgid "Seam contexts"
+msgstr "Contextos Seam "
+
+#. Tag: para
+#: Concepts.xml:14
+#, no-c-format
+msgid ""
+"Seam contexts are created and destroyed by the framework. The application "
+"does not control context demarcation via explicit Java API calls. Context "
+"are usually implicit. In some cases, however, contexts are demarcated via "
+"annotations."
+msgstr ""
+"El marco de trabajo crea y construye los contextos Seam. La aplicación no "
+"controla la demarcación de contexto por medio de llamadas explícitas API "
+"Java. Usualmente los contextos se encuentran implícitos. Sin embargo, en "
+"algunos casos los contextos se demarcan por medio de anotaciones. "
+
+#. Tag: para
+#: Concepts.xml:17
+#, no-c-format
+msgid "The basic Seam contexts are:"
+msgstr "Los contextos Seam básicos son:"
+
+#. Tag: para
+#: Concepts.xml:22
+#, no-c-format
+msgid "<para>Stateless context</para>"
+msgstr "<para>Contexto sin estado</para>"
+
+#. Tag: para
+#: Concepts.xml:27
+#, no-c-format
+msgid "Event (or request) context"
+msgstr "Contexto de eventos (o petición)"
+
+#. Tag: para
+#: Concepts.xml:32 Concepts.xml:147
+#, no-c-format
+msgid "<para>Page context</para>"
+msgstr "<para>Contexto de página</para>"
+
+#. Tag: para
+#: Concepts.xml:37 Concepts.xml:152
+#, no-c-format
+msgid "<para>Conversation context</para>"
+msgstr "<para>Contexto de conversación</para>"
+
+#. Tag: para
+#: Concepts.xml:42 Concepts.xml:157
+#, no-c-format
+msgid "<para>Session context</para>"
+msgstr "<para>Contexto de sesión</para>"
+
+#. Tag: para
+#: Concepts.xml:47 Concepts.xml:162
+#, no-c-format
+msgid "<para>Business process context</para>"
+msgstr "<para>Contexto de procesos empresariales</para>"
+
+#. Tag: para
+#: Concepts.xml:52 Concepts.xml:167
+#, no-c-format
+msgid "<para>Application context</para>"
+msgstr "<para>Contexto de aplicaciones</para>"
+
+#. Tag: para
+#: Concepts.xml:57
+#, no-c-format
+msgid ""
+"You will recognize some of these contexts from servlet and related "
+"specifications. However, two of them might be new to you: "
+"<emphasis>conversation context</emphasis>, and <emphasis>business process "
+"context</emphasis>. One reason state management in web applications is so "
+"fragile and error-prone is that the three built-in contexts (request, "
+"session and application) are not especially meaningful from the point of "
+"view of the business logic. A user login session, for example, is a fairly "
+"arbitrary construct in terms of the actual application work flow. Therefore, "
+"most Seam components are scoped to the conversation or business process "
+"contexts, since they are the contexts which are most meaningful in terms of "
+"the application."
+msgstr ""
+"Reconocerá algunos de estos contextos del servlet y de otras "
+"especificaciones relacionadas. Sin embargo, dos de ellos son nuevos: el "
+"<emphasis>contexto de conversación</emphasis> y el <emphasis>contexto de "
+"procesos empresariales</emphasis>. Una de las razones por las cuales la "
+"administración de estado en las aplicaciones web es tan frágil y tan "
+"propenso a errores es porque los tres contextos incluídos (petición, sesión "
+"y aplicación) no son particularmente muy importantes desde el punto de vista "
+"de la lógica empresarial. Por ejemplo, el iniciar una sesión para un usuario "
+"es una construcción más bien arbitraria en términos del flujo de trabajo de "
+"la aplicación real. Por lo tanto, la mayoría de los componentes Seam están "
+"dirigidos a los contextos de procesos empresariales o de conversación ya que "
+"son contextos importantes en términos de la aplicación."
+
+#. Tag: para
+#: Concepts.xml:60
+#, no-c-format
+msgid "Let&#39;s look at each context in turn."
+msgstr "Vamos a ver contexto por contexto. "
+
+#. Tag: title
+#: Concepts.xml:63
+#, no-c-format
+msgid "<title>Stateless context</title>"
+msgstr "<title>Contexto sin estado</title>"
+
+#. Tag: para
+#: Concepts.xml:64
+#, no-c-format
+msgid ""
+"Components which are truly stateless (stateless session beans, primarily) "
+"always live in the stateless context (this is really a non-context). "
+"Stateless components are not very interesting, and are arguably not very "
+"object-oriented. Nevertheless, they are important and often useful."
+msgstr ""
+"Los componentes que realmente no cuentan con estado (principalmente los beans de "
+"sesión sin estado) siempre viven en el contexto sin estado (esto es "
+"realmente sin contexto). Los componentes sin estado no son muy interesantes "
+"y podría decirse que no están muy orientado a objetos. Sin embargo, son "
+"importantes y con frecuencia útiles."
+
+#. Tag: title
+#: Concepts.xml:67
+#, no-c-format
+msgid "<title>Event context</title>"
+msgstr "<title>Contexto de eventos</title>"
+
+#. Tag: para
+#: Concepts.xml:68
+#, no-c-format
+msgid ""
+"The event context is the \"narrowest\" stateful context, and is a "
+"generalization of the notion of the web request context to cover other kinds "
+"of events. Nevertheless, the event context associated with the lifecycle of "
+"a JSF request is the most important example of an event context, and the one "
+"you will work with most often. Components associated with the event context "
+"are destroyed at the end of the request, but their state is available and "
+"well-defined for at least the lifecycle of the request."
+msgstr ""
+"El contexto de eventos es el contexto con estado \"más limitado\" y es una "
+"generalización de la noción del contexto de peticiones web para cubrir otras "
+"clases de eventos. Sin embargo, el contexto de eventos asociado con el ciclo "
+"de vida de la petición JSF es el ejemplo más importante de un contexto de "
+"eventos y va a ser con el que más frecuencia va a trabajar. Los "
+"componentes asociados con el contexto de eventos son destruídos al final de "
+"la petición pero su estado está disponible y bien definido por lo menos "
+"durante el ciclo de vida de la petición."
+
+#. Tag: para
+#: Concepts.xml:71
+#, no-c-format
+msgid ""
+"When you invoke a Seam component via RMI, or Seam Remoting, the event "
+"context is created and destroyed just for the invocation."
+msgstr ""
+"Cuando invoca un componente Seam por medio de RMI o Seam Remoting, se crea y "
+"se destruye el contexto de eventos tan sólo para la invocación."
+
+#. Tag: title
+#: Concepts.xml:74
+#, no-c-format
+msgid "<title>Page context</title>"
+msgstr "<title>Contexto de página</title>"
+
+#. Tag: para
+#: Concepts.xml:75
+#, no-c-format
+msgid ""
+"The page context allows you to associate state with a particular instance of "
+"a rendered page. You can initialize state in your event listener, or while "
+"actually rendering the page, and then have access to it from any event that "
+"originates from that page. This is especially useful for functionality like "
+"clickable lists, where the list is backed by changing data on the server "
+"side. The state is actually serialized to the client, so this construct is "
+"extremely robust with respect to multi-window operation and the back button."
+msgstr ""
+"El contexto de página le permite asociar un estado con una instancia en "
+"particular de una página ya entregada. Puede inicializar estado en su "
+"escucha de eventos o de hecho cuando se encuentre presentando la página y "
+"después puede tener acceso a este desde cualquier evento que se origine "
+"desde esa página. Esto es especialmente útil en términos de funcionalidad "
+"como en las listas interactivas, en donde la lista es respaldada al cambiar "
+"los datos del lado del servidor. De hecho el estado es serializado para el "
+"cliente así que esta construcción es extremadamente robusta con respecto a "
+"la operación multi-ventanas y al botón de regreso."
+
+#. Tag: title
+#: Concepts.xml:78
+#, no-c-format
+msgid "<title>Conversation context</title>"
+msgstr "<title>Contexto de conversación</title>"
+
+#. Tag: para
+#: Concepts.xml:79
+#, no-c-format
+msgid ""
+"The conversation context is a truly central concept in Seam. A "
+"<emphasis>conversation</emphasis> is a unit of work from the point of view "
+"of the user. It might span several interactions with the user, several "
+"requests, and several database transactions. But to the user, a conversation "
+"solves a single problem. For example, \"book hotel\", \"approve contract\", "
+"\"create order\" are all conversations. You might like to think of a "
+"conversation implementing a single \"use case\" or \"user story\", but the "
+"relationship is not necessarily quite exact."
+msgstr ""
+"El contexto de conversación es verdaderamente un concepto central en Seam. "
+"Una <emphasis>conversación</emphasis> es una unidad de trabajo desde el "
+"punto de vista del usuario. Puede abarcar varias interacciones con el "
+"usuario, varias peticiones y varias transacciones con la base de datos. Pero "
+"para el usuario una conversación resuelve un sólo problema. Por ejemplo, "
+"\"reservar hotel\", \"aprobar contrato\", \"ordenar\" son todas "
+"conversaciones. Puede que le guste la idea de que una conversación "
+"implementa un sólo \"caso\" o \"historia\", pero la relación no es "
+"necesariamente la misma."
+
+#. Tag: para
+#: Concepts.xml:82
+#, no-c-format
+msgid ""
+"A conversation holds state associated with \"what the user is doing now, in "
+"this window\". A single user may have multiple conversations in progress at "
+"any point in time, usually in multiple windows. The conversation context "
+"allows us to ensure that state from the different conversations does not "
+"collide and cause bugs."
+msgstr ""
+"Una conversación mantiene el estado asociado con \"lo que el usuario está "
+"haciendo en este momento en esta ventana\". Un usuario puede tener múltiples "
+"conversaciones en progreso en cualquier momento dado, usualmente en "
+"múltiples ventanas. El contexto de conversación nos permite asegurarnos de "
+"que el estado de diferentes conversaciones no choquen y provoquen errores."
+
+#. Tag: para
+#: Concepts.xml:85
+#, no-c-format
+msgid ""
+"It might take you some time to get used to thinking of applications in terms "
+"of conversations. But once you get used to it, we think you&#39;ll love the "
+"notion, and never be able to not think in terms of conversations again!"
+msgstr ""
+"Puede que le tome un poco de tiempo acostumbrarse a pensar en las "
+"aplicaciones en términos de conversaciones. ¡Una vez se acostumbre le va a "
+"encantar la idea y nunca podrá volver a pensar en términos de conversaciones "
+"de nuevo! "
+
+#. Tag: para
+#: Concepts.xml:88
+#, no-c-format
+msgid ""
+"Some conversations last for just a single request. Conversations that span "
+"multiple requests must be demarcated using annotations provided by Seam."
+msgstr ""
+"Algunas conversaciones tan sólo duran lo que toma una sola petición. Las "
+"conversaciones que abarcan múltiples peticiones deben estar demarcadas "
+"utilizando las anotaciones que Seam proporciona."
+
+#. Tag: para
+#: Concepts.xml:91
+#, no-c-format
+msgid ""
+"Some conversations are also <emphasis>tasks</emphasis>. A task is a "
+"conversation that is significant in terms of a long-running business "
+"process, and has the potential to trigger a business process state "
+"transition when it is successfully completed. Seam provides a special set of "
+"annotations for task demarcation."
+msgstr ""
+"Algunas conversaciones también son <emphasis>tareas</emphasis>. Una tarea es "
+"una conversación que es importante en términos de un proceso empresarial a "
+"largo plazo y tiene el potencial de desencadenar una transición de estado "
+"del proceso empresarial cuando se completa de manera exitosa. Seam "
+"proporciona un grupo especial de anotaciones para la demarcación de tareas."
+
+#. Tag: para
+#: Concepts.xml:94
+#, no-c-format
+msgid ""
+"Conversations may be <emphasis>nested</emphasis>, with one conversation "
+"taking place \"inside\" a wider conversation. This is an advanced feature."
+msgstr ""
+"Las conversaciones pueden ser <emphasis>anidadas</emphasis>, en donde una "
+"conversación tiene lugar \"dentro\" de una conversación más amplia. Esta es "
+"una característica avanzada."
+
+#. Tag: para
+#: Concepts.xml:97
+#, no-c-format
+msgid ""
+"Usually, conversation state is actually held by Seam in the servlet session "
+"between requests. Seam implements configurable <emphasis>conversation "
+"timeout</emphasis>, automatically destroying inactive conversations, and "
+"thus ensuring that the state held by a single user login session does not "
+"grow without bound if the user abandons conversations."
+msgstr ""
+"Usualmente en realidad es Seam el que mantiene el estado de la conversación "
+"en la sesión del servlet entre peticiones. Seam implementa "
+"un <emphasis>tiempo de espera de conversación</emphasis> configurable, "
+"destruyendo de manera automática las conversaciones inactivas y por lo tanto "
+"asegurándose de que el estado que una sesión de inicio de sesión de un "
+"usuario mantiene no crezca sin vinculaciones si el usuario abandona las "
+"conversaciones."
+
+#. Tag: para
+#: Concepts.xml:100
+#, no-c-format
+msgid ""
+"Seam serializes processing of concurrent requests that take place in the "
+"same long-running conversation context, in the same process."
+msgstr ""
+"Seam serializa el procesamiento de peticiones simultáneas que tienen lugar "
+"en el mismo contexto de conversación a largo plazo, en el mismo proceso."
+
+#. Tag: para
+#: Concepts.xml:103
+#, no-c-format
+msgid ""
+"Alternatively, Seam may be configured to keep conversational state in the "
+"client browser."
+msgstr ""
+"De otra manera, puede configurar Seam para mantener el estado de la "
+"conversación en el navegador del cliente."
+
+#. Tag: title
+#: Concepts.xml:106
+#, no-c-format
+msgid "<title>Session context</title>"
+msgstr "<title>Contexto de sesión</title>"
+
+#. Tag: para
+#: Concepts.xml:107
+#, no-c-format
+msgid ""
+"A session context holds state associated with the user login session. While "
+"there are some cases where it is useful to share state between several "
+"conversations, we generally frown on the use of session context for holding "
+"components other than global information about the logged in user."
+msgstr ""
+"Un contexto de sesión mantiene el estado asociado con la sesión de entrada "
+"del usuario. Mientras que hay algunos casos en donde es útil el compartir el "
+"estado entre varias conversaciones generalmente no aprobamos el uso de "
+"contextos de sesión ya que mantiene los componentes aparte de la información "
+"global sobre el usuario que ha iniciado sesión."
+
+#. Tag: para
+#: Concepts.xml:110
+#, no-c-format
+msgid ""
+"In a JSR-168 portal environment, the session context represents the portlet "
+"session."
+msgstr ""
+"En un entorno de portal JSR-168 el contexto de sesión representa la sesión "
+"portlet."
+
+#. Tag: title
+#: Concepts.xml:113
+#, no-c-format
+msgid "<title>Business process context</title>"
+msgstr "<title>Contexto de proceso empresarial</title>"
+
+#. Tag: para
+#: Concepts.xml:114
+#, no-c-format
+msgid ""
+"The business process context holds state associated with the long running "
+"business process. This state is managed and made persistent by the BPM "
+"engine (JBoss jBPM). The business process spans multiple interactions with "
+"multiple users, so this state is shared between multiple users, but in a "
+"well-defined manner. The current task determines the current business "
+"process instance, and the lifecycle of the business process is defined "
+"externally using a <emphasis>process definition language</emphasis>, so "
+"there are no special annotations for business process demarcation."
+msgstr ""
+"El contexto de procesos empresariales mantiene el estado asociado con los "
+"procesos empresariales a largo plazo. Este estado es administrado y hecho "
+"persistente por la máquina BPM (JBoss jBPM). El proceso empresarial abarca "
+"múltiples interacciones con múltiples usuarios así que múltiples usuarios "
+"comparten este estado pero de una manera bien definida. La tarea actual "
+"determina la instancia actual del proceso empresarial y el ciclo de vida del "
+"proceso empresarial se define de forma externa utilizando un "
+"<emphasis>lenguaje de definición de procesos</emphasis>, así que no hay "
+"anotaciones especiales para la demarcación de procesos empresariales."
+
+#. Tag: title
+#: Concepts.xml:117
+#, no-c-format
+msgid "<title>Application context</title>"
+msgstr "<title>Contexto de aplicación</title>"
+
+#. Tag: para
+#: Concepts.xml:118
+#, no-c-format
+msgid ""
+"The application context is the familiar servlet context from the servlet "
+"spec. Application context is mainly useful for holding static information "
+"such as configuration data, reference data or metamodels. For example, Seam "
+"stores its own configuration and metamodel in the application context."
+msgstr ""
+"El contexto de aplicación es el contexto familiar del servlet desde las "
+"especificaciones del servlet. El contexto de aplicación es útil "
+"principalmente para mantener información estática tal como datos de "
+"configuración, datos de referencia o metamodelos. Por ejemplo, Seam almacena "
+"su propia configuración y metamodelo en el contexto de aplicación."
+
+#. Tag: title
+#: Concepts.xml:121
+#, no-c-format
+msgid "Context variables"
+msgstr "Variables de contexto"
+
+#. Tag: para
+#: Concepts.xml:122
+#, no-c-format
+msgid ""
+"A context defines a namespace, a set of <emphasis>context variables</"
+"emphasis>. These work much the same as session or request attributes in the "
+"servlet spec. You may bind any value you like to a context variable, but "
+"usually we bind Seam component instances to context variables."
+msgstr ""
+"Un contexto define un espacio de nombre, un grupo de <emphasis>variables de "
+"contexto</emphasis>. Estos funcionan de manera muy similar que los atributos "
+"de petición o de sesión en las especificaciones del servlet. Puede vincular "
+"cualquier valor que desee a una variable de contexto pero usualmente "
+"vinculamos instancias de componentes Seam a las variables de contexto."
+
+#. Tag: para
+#: Concepts.xml:125
+#, no-c-format
+msgid ""
+"So, within a context, a component instance is identified by the context "
+"variable name (this is usually, but not always, the same as the component "
+"name). You may programatically access a named component instance in a "
+"particular scope via the <literal>Contexts</literal> class, which provides "
+"access to several thread-bound instances of the <literal>Context</literal> "
+"interface:"
+msgstr ""
+"Así que dentro de un contexto una instancia de componente se identifica por "
+"el nombre de la variable de contexto (esto es usualmente, pero no siempre, "
+"lo mismo que el nombre del componente). Puede acceder a nivel del programa a "
+"una instancia del componente nombrado en un ámbito en particular por medio "
+"de la clase <literal>Contexts</literal>, la cual proporciona acceso a varias "
+"instancias vinculadas por hilos de la interfaz <literal>Contexts</literal>:"
+
+#. Tag: programlisting
+#: Concepts.xml:128
+#, no-c-format
+msgid "User user = (User) Contexts.getSessionContext().get(\"user\");"
+msgstr "User user = (User) Contexts.getSessionContext().get(\"user\");"
+
+#. Tag: para
+#: Concepts.xml:129
+#, no-c-format
+msgid "You may also set or change the value associated with a name:"
+msgstr "También puede configurar o cambiar el valor asociado con un nombre:"
+
+#. Tag: programlisting
+#: Concepts.xml:132
+#, no-c-format
+msgid "Contexts.getSessionContext().set(\"user\", user);"
+msgstr "Contexts.getSessionContext().set(\"user\", user);"
+
+#. Tag: para
+#: Concepts.xml:133
+#, no-c-format
+msgid ""
+"Usually, however, we obtain components from a context via injection, and put "
+"component instances into a context via outjection."
+msgstr ""
+"Sin embargo, usualmente obtenemos componentes desde un contexto por medio de "
+"una inyección y ponemos las instancias del componente en un contexto por "
+"medio de una eyección."
+
+#. Tag: title
+#: Concepts.xml:136
+#, no-c-format
+msgid "Context search priority"
+msgstr "Prioridad de búsqueda de contextos"
+
+#. Tag: para
+#: Concepts.xml:137
+#, no-c-format
+msgid ""
+"Sometimes, as above, component instances are obtained from a particular "
+"known scope. Other times, all stateful scopes are searched, in "
+"<emphasis>priority order</emphasis>. The order is as follows:"
+msgstr ""
+"A veces, como en el ejemplo anterior, las instancias del componente se "
+"obtienen de un ámbito conocido en particular. Otras veces todos los ámbitos "
+"con estado se buscan en <emphasis>orden de prioridad</emphasis>. El orden es "
+"el siguiente:"
+
+#. Tag: para
+#: Concepts.xml:142
+#, no-c-format
+msgid "<para>Event context</para>"
+msgstr "<para>Contexto de eventos</para>"
+
+#. Tag: para
+#: Concepts.xml:172
+#, no-c-format
+msgid ""
+"You can perform a priority search by calling <literal>Contexts."
+"lookupInStatefulContexts()</literal>. Whenever you access a component by "
+"name from a JSF page, a priority search occurs."
+msgstr ""
+"Puede realizar una búsqueda de prioridades llamando a <literal>Contexts."
+"lookupInStatefulContexts()</literal>. Cuando accede un componente por nombre "
+"desde una página JSF, tiene lugar un búsqueda de prioridades."
+
+#. Tag: title
+#: Concepts.xml:175
+#, no-c-format
+msgid "Concurrency model"
+msgstr "Modelo de concurrencia"
+
+#. Tag: para
+#: Concepts.xml:176
+#, no-c-format
+msgid ""
+"Neither the servlet nor EJB specifications define any facilities for "
+"managing concurrent requests originating from the same client. The servlet "
+"container simply lets all threads run concurrently and leaves enforcing "
+"threadsafeness to application code. The EJB container allows stateless "
+"components to be accessed concurrently, and throws an exception if multiple "
+"threads access a stateful session bean."
+msgstr ""
+"Ni el servlet ni las especificaciones EJB definen ninguna utilidad para "
+"administrar peticiones simultáneas que se originan desde el mismo cliente. "
+"El contenedor del servlet simplemente deja que todos los hilos ejecuten de "
+"manera simultánea y le deja el refuerzo de la seguridad de los hilos a la "
+"aplicación del código.El contenedor EJB permite que se acceda a los "
+"componentes sin estado de manera simultánea y presenta una excepción si "
+"múltiples hilos acceden un bean de sesión con estado."
+
+#. Tag: para
+#: Concepts.xml:179
+#, no-c-format
+msgid ""
+"This behavior might have been okay in old-style web applications which were "
+"based around fine-grained, synchronous requests. But for modern applications "
+"which make heavy use of many fine-grained, asynchronous (AJAX) requests, "
+"concurrency is a fact of life, and must be supported by the programming "
+"model. Seam weaves a concurrency management layer into its context model."
+msgstr ""
+"Este comportamiento puede haber estado bien en aplicaciones viejas que se "
+"basaban en peticiones detalladas sincrónicas. Pero para las aplicaciones "
+"modernas que hacen bastante uso de detalladas peticiones asincrónicas "
+"(AJAX), la simultaneidad es un hecho que hay que tener en cuenta y debe "
+"estar soportado por el modelo de programación. Seam entreteje una capa de "
+"administración de simultaneidad en su modelo de contexto."
+
+#. Tag: para
+#: Concepts.xml:182
+#, no-c-format
+msgid ""
+"The Seam session and application contexts are multithreaded. Seam will allow "
+"concurrent requests in a context to be processed concurrently. The event and "
+"page contexts are by nature single threaded. The business process context is "
+"strictly speaking multi-threaded, but in practice concurrency is "
+"sufficiently rare that this fact may be disregarded most of the time. "
+"Finally, Seam enforces a <emphasis>single thread per conversation per "
+"process</emphasis> model for the conversation context by serializing "
+"concurrent requests in the same long-running conversation context."
+msgstr ""
+"La sesión y los contextos de aplicación Seam son multi-hilos. Seam permitirá "
+"peticiones de manera simultánea en un contexto para que sean procesadas "
+"simultáneamente. Los contextos de eventos y de páginas son ejecutados por "
+"naturaleza en un sólo hilo. El contexto de procesos empresariales es "
+"estrictamente hablando multi-hilos, pero en la práctica no es común tener "
+"dos peticiones simultáneas así que la mayoría del tiempo se hace caso omiso "
+"de este hecho. Finalmente, Seam refuerza un modelo de <emphasis>un sólo hilo "
+"por conversación por proceso</emphasis> para el contexto de conversación "
+"serializando las peticiones simultáneas en el mismo contexto de conversación a "
+"largo plazo."
+
+#. Tag: para
+#: Concepts.xml:185
+#, no-c-format
+msgid ""
+"Since the session context is multithreaded, and often contains volatile "
+"state, session scope components are always protected by Seam from concurrent "
+"access. Seam serializes requests to session scope session beans and "
+"JavaBeans by default (and detects and breaks any deadlocks that occur). This "
+"is not the default behaviour for application scoped components however, "
+"since application scoped components do not usually hold volatile state and "
+"because synchronization at the global level is <emphasis>extremely</"
+"emphasis> expensive. However, you can force a serialized threading model on "
+"any session bean or JavaBean component by adding the <literal>@Synchronized</"
+"literal> annotation."
+msgstr ""
+"Ya que el contexto de sesión es multi-hilos y con frecuencia tiene estado "
+"volátil, Seam siempre protege los componentes de ámbito de sesión de un "
+"acceso de forma simultánea. Seam serializa las peticiones en beans de sesión "
+"de ámbito de sesión y JavaBeans por defecto (y detecta y acaba con cualquier "
+"punto muerto que surja). Sin embargo, este no es el comportamiento "
+"predeterminado para componentes en el ámbito de aplicaciones ya que estos "
+"componentes usualmente no mantienen estados volátiles y ya que la "
+"sincronización a nivel global es <emphasis>extremadamente</emphasis> "
+"costosa. Pero puede forzar un modelo de hilos serializados en cualquier bean "
+"de sesión o cualquier componente JavaBean anañadiendo la anotación "
+"<literal>@Synchronized</literal>."
+
+#. Tag: para
+#: Concepts.xml:188
+#, no-c-format
+msgid ""
+"This concurrency model means that AJAX clients can safely use volatile "
+"session and conversational state, without the need for any special work on "
+"the part of the developer."
+msgstr ""
+"Este modelo de simultaneidad significa que los clientes AJAX pueden utilizar "
+"de manera segura el estado conversacional y las sesiones volátiles sin la necesidad "
+"de que el desarrollador realice ningún otro trabajo."
+
+#. Tag: title
+#: Concepts.xml:191
+#, no-c-format
+msgid "Seam components"
+msgstr "Componentes Seam"
+
+#. Tag: para
+#: Concepts.xml:192
+#, no-c-format
+msgid ""
+"Seam components are POJOs (Plain Old Java Objects). In particular, they are "
+"JavaBeans or EJB 3.0 enterprise beans. While Seam does not require that "
+"components be EJBs and can even be used without an EJB 3.0 compliant "
+"container, Seam was designed with EJB 3.0 in mind and includes deep "
+"integration with EJB 3.0. Seam supports the following <emphasis>component "
+"types</emphasis>."
+msgstr ""
+"Los componentes Seam son POJOs (por las siglas en inglés de Plain Old Java "
+"Objects), en particular son JavaBeans o beans empresariales EJB 3.0. Aunque "
+"Seam no requiere que los componentes sean EJBs e incluso se pueden utilizar "
+"sin un contenedor que cumpla con los requerimientos de EJB 3.0, Seam fue "
+"diseñado teniendo en cuenta EJB 3.0 e incluye una profunda integración con "
+"EJB 3.0. Seam soporta los siguientes <emphasis>tipos de componentes</"
+"emphasis>."
+
+#. Tag: para
+#: Concepts.xml:197
+#, no-c-format
+msgid "EJB 3.0 stateless session beans"
+msgstr "Beans de sesión sin estado EJB 3."
+
+#. Tag: para
+#: Concepts.xml:202
+#, no-c-format
+msgid "EJB 3.0 stateful session beans"
+msgstr "Beans de sesión con estado EJB 3."
+
+#. Tag: para
+#: Concepts.xml:207
+#, no-c-format
+msgid "EJB 3.0 entity beans"
+msgstr "Beans de entidad EJB 3."
+
+#. Tag: para
+#: Concepts.xml:212
+#, no-c-format
+msgid "<para>JavaBeans</para>"
+msgstr "<para>JavaBeans</para>"
+
+#. Tag: para
+#: Concepts.xml:217
+#, no-c-format
+msgid "EJB 3.0 message-driven beans"
+msgstr "Beans dirigidos por mensajes EJB 3.0"
+
+#. Tag: title
+#: Concepts.xml:222
+#, no-c-format
+msgid "Stateless session beans"
+msgstr "Beans de sesión sin estado"
+
+#. Tag: para
+#: Concepts.xml:223
+#, no-c-format
+msgid ""
+"Stateless session bean components are not able to hold state across multiple "
+"invocations. Therefore, they usually work by operating upon the state of "
+"other components in the various Seam contexts. They may be used as JSF "
+"action listeners, but cannot provide properties to JSF components for "
+"display."
+msgstr ""
+"Los componentes de beans de sesión sin estado no pueden mantener estado a "
+"través de múltiples invocaciones. Por lo tanto, usualmente funcionan "
+"operando sobre el estado de otros componentes en los varios contextos de "
+"Seam. Se pueden utilizar como escuchas de acciones JSF pero no puede "
+"proporcionar propiedades para componente JSF para presentación."
+
+#. Tag: para
+#: Concepts.xml:226
+#, no-c-format
+msgid "Stateless session beans always live in the stateless context."
+msgstr "Los beans de sesión sin estado siempre viven en un contexto sin estado."
+
+#. Tag: para
+#: Concepts.xml:229
+#, no-c-format
+msgid "Stateless session beans are the least interesting kind of Seam component."
+msgstr ""
+"Los beans de sesión sin estado son la clase menos interesante del componente "
+"Seam."
+
+#. Tag: title
+#: Concepts.xml:232
+#, no-c-format
+msgid "Stateful session beans"
+msgstr "Beans de sesión con estado"
+
+#. Tag: para
+#: Concepts.xml:233
+#, no-c-format
+msgid ""
+"Stateful session bean components are able to hold state not only across "
+"multiple invocations of the bean, but also across multiple requests. "
+"Application state that does not belong in the database should usually be "
+"held by stateful session beans. This is a major difference between Seam and "
+"many other web application frameworks. Instead of sticking information about "
+"the current conversation directly in the <literal>HttpSession</literal>, you "
+"should keep it in instance variables of a stateful session bean that is "
+"bound to the conversation context. This allows Seam to manage the lifecycle "
+"of this state for you, and ensure that there are no collisions between state "
+"relating to different concurrent conversations."
+msgstr ""
+"Los componentes bean de sesión con estado pueden mantener el estado no sólo "
+"a través de múltiples invocaciones bean sino también a través de múltiples "
+"peticiones. El estado de aplicación que no pertenece a la base de datos "
+"usualmente lo debe mantener los beans de sesión con estado. Esta es una gran "
+"diferencia entre Seam y otros marcos de trabajo de aplicaciones web. En vez "
+"de incluir información sobre la conversación actual directamente en el "
+"<literal>HttpSession</literal>, la debe mantener en variables de instancia "
+"de un bean de sesión con estado que se encuentra vinculado con el contexto "
+"de conversación. Esto le permite a Seam administrar el ciclo de vida de este "
+"estado por usted y se asegura de que no haya choques entre el estado en "
+"relación con diferentes conversaciones simultáneas."
+
+#. Tag: para
+#: Concepts.xml:236
+#, no-c-format
+msgid ""
+"Stateful session beans are often used as JSF action listener, and as backing "
+"beans that provide properties to JSF components for display or form "
+"submission."
+msgstr ""
+"Con frecuencia los beans de sesión con estado se utilizan como escuchas de "
+"acciones JSF y como beans de refuerzo que proporcionan propiedades a los "
+"componentes JSF para la presentación de formas."
+
+#. Tag: para
+#: Concepts.xml:239
+#, no-c-format
+msgid ""
+"By default, stateful session beans are bound to the conversation context. "
+"They may never be bound to the page or stateless contexts."
+msgstr ""
+"Por defecto, los beans de sesión con estado se encuentran vinculados al "
+"contexto de conversación. Nunca se deben vincular a la página o a los "
+"contextos sin estado."
+
+#. Tag: para
+#: Concepts.xml:242
+#, no-c-format
+msgid ""
+"Concurrent requests to session-scoped stateful session beans are always "
+"serialized by Seam."
+msgstr ""
+"Seam siempre entrega las peticiones simultáneas a beans de sesión con estado "
+"con ámbito de sesión."
+
+#. Tag: title
+#: Concepts.xml:245
+#, no-c-format
+msgid "Entity beans"
+msgstr "Beans de entidad"
+
+#. Tag: para
+#: Concepts.xml:246
+#, no-c-format
+msgid ""
+"Entity beans may be bound to a context variable and function as a seam "
+"component. Because entities have a persistent identity in addition to their "
+"contextual identity, entity instances are usually bound explicitly in Java "
+"code, rather than being instantiated implicitly by Seam."
+msgstr ""
+"Los beans de entidades pueden estar vinculados a una variable de contexto y "
+"a una función como un componente seam. Ya que las entidades tienen una "
+"identidad persistente además de su identidad contextual, las instancias de "
+"entidad usualmente se encuentran vinculadas explícitamente en código Java y "
+"no instanciadas implícitamente por Seam."
+
+#. Tag: para
+#: Concepts.xml:249
+#, no-c-format
+msgid ""
+"Entity bean components do not support bijection or context demarcation. Nor "
+"does invocation of an entity bean trigger validation."
+msgstr ""
+"Los componentes de los beans de entidad no soportan la biyección o la "
+"demarcación de contexto y la invocación de un bean de entidad tampoco "
+"dispara la validación."
+
+#. Tag: para
+#: Concepts.xml:252
+#, no-c-format
+msgid ""
+"Entity beans are not usually used as JSF action listeners, but do often "
+"function as backing beans that provide properties to JSF components for "
+"display or form submission. In particular, it is common to use an entity as "
+"a backing bean, together with a stateless session bean action listener to "
+"implement create/update/delete type functionality."
+msgstr ""
+"Los beans de entidad usualmente no se utilizan como escuchas de acciones JSF "
+"pero usualmente funcionan como beans de respaldo que proporcionan "
+"propiedades a los componentes JSF para la presentación de formas. En "
+"particular es común utilizar una entidad como bean de respaldo junto con un "
+"escucha de acciones de beans de sesión sin estado para implementar crear/"
+"actualizar/borrar el tipo de funcionalidad."
+
+#. Tag: para
+#: Concepts.xml:255
+#, no-c-format
+msgid ""
+"By default, entity beans are bound to the conversation context. They may "
+"never be bound to the stateless context."
+msgstr ""
+"Por defecto, los beans de entidad se encuentran vinculados al contexto de "
+"conversación. Nunca se pueden vincular al contexto sin estado."
+
+#. Tag: para
+#: Concepts.xml:258
+#, no-c-format
+msgid ""
+"Note that it in a clustered environment is somewhat less efficient to bind "
+"an entity bean directly to a conversation or session scoped Seam context "
+"variable than it would be to hold a reference to the entity bean in a "
+"stateful session bean. For this reason, not all Seam applications define "
+"entity beans to be Seam components."
+msgstr ""
+"Observe que en un entorno con clústers es de cierta manera un poco menos "
+"eficiente el vincular un bean de entidad directamente a una conversación o a "
+"una variable de contexto Seam con ámbito de sesión que lo que sería el "
+"mantener una referencia a un bean de entidad en un bean de sesión con "
+"estado. Por esta razón, no todas las aplicaciones Seam definen los beans de "
+"entidad para que sean componentes Seam."
+
+#. Tag: title
+#: Concepts.xml:261
+#, no-c-format
+msgid "<title>JavaBeans</title>"
+msgstr "<title>JavaBeans</title>"
+
+#. Tag: para
+#: Concepts.xml:262
+#, no-c-format
+msgid ""
+"Javabeans may be used just like a stateless or stateful session bean. "
+"However, they do not provide the functionality of a session bean "
+"(declarative transaction demarcation, declarative security, efficient "
+"clustered state replication, EJB 3.0 persistence, timeout methods, etc)."
+msgstr ""
+"Los Javabeans se pueden utilizar como beans de sesión con o sin estado. Sin "
+"embargo, no proporcionan la funcionalidad de un bean de sesión (demarcación "
+"de transacciones declarativas, seguridad declarativa, replicación de estado "
+"en clústers de manera eficiente, persistencia EJB 3.0, métodos de "
+"desconexión por tiempo, etc)."
+
+#. Tag: para
+#: Concepts.xml:265
+#, no-c-format
+msgid ""
+"In a later chapter, we show you how to use Seam and Hibernate without an EJB "
+"container. In this use case, components are JavaBeans instead of session "
+"beans. Note, however, that in many application servers it is somewhat less "
+"efficient to cluster conversation or session scoped Seam JavaBean components "
+"than it is to cluster stateful session bean components."
+msgstr ""
+"En un capítulo posterior le mostraremos como utilizar Seam y Hibernate sin "
+"un contenedor EJB. En este ejemplo, los componentes son JavaBeans en vez de "
+"beans de sesión. Sin embargo, observe que en muchos servidores de aplicación "
+"es de cierta manera menos eficiente el poner en clústers componentes "
+"JavaBean Seam con ámbito de sesión o de conversación  que lo que representa "
+"el poner en clústers a los componentes de beans de sesión con estado."
+
+#. Tag: para
+#: Concepts.xml:268
+#, no-c-format
+msgid "By default, JavaBeans are bound to the event context."
+msgstr "Por defecto, los JavaBeans están vinculados al contexto de eventos."
+
+#. Tag: para
+#: Concepts.xml:271
+#, no-c-format
+msgid ""
+"Concurrent requests to session-scoped JavaBeans are always serialized by "
+"Seam."
+msgstr ""
+"Las peticiones simultáneas a JavaBeans de ámbito de sesión siempre están "
+"serializadas por Seam."
+
+#. Tag: title
+#: Concepts.xml:274
+#, no-c-format
+msgid "Message-driven beans"
+msgstr "Beans dirigidos por mensajes"
+
+#. Tag: para
+#: Concepts.xml:275
+#, no-c-format
+msgid ""
+"Message-driven beans may function as a seam component. However, message-"
+"driven beans are called quite differently to other Seam components - instead "
+"of invoking them via the context variable, they listen for messages sent to "
+"a JMS queue or topic."
+msgstr ""
+"Los beans dirigidos por mensajes pueden funcionar como un componente seam. "
+"Sin embargo, los beans manejados por mensajes se llaman de manera un poco "
+"diferente que otros componentes Seam - en vez de invocarlos por medio de la "
+"variable de contexto, ellos escuchan los mensajes enviados a una cola JMS o "
+"tema."
+
+#. Tag: para
+#: Concepts.xml:278
+#, no-c-format
+msgid ""
+"Message-driven beans may not be bound to a Seam context. Nor do they have "
+"access to the session or conversation state of their \"caller\". However, "
+"they do support bijection and some other Seam functionality."
+msgstr ""
+"Los beans dirigidos por mensajes no se pueden vincular a un contexto Seam. "
+"Tampoco tienen acceso al estado de la conversación o de la sesión del que "
+"\"llama\". Sin embargo, sí soportan la biyección y algunas otras "
+"funcionalidades de Seam."
+
+#. Tag: title
+#: Concepts.xml:281
+#, no-c-format
+msgid "Interception"
+msgstr "Intercepción"
+
+#. Tag: para
+#: Concepts.xml:282
+#, no-c-format
+msgid ""
+"In order to perform its magic (bijection, context demarcation, validation, "
+"etc), Seam must intercept component invocations. For JavaBeans, Seam is in "
+"full control of instantiation of the component, and no special configuration "
+"is needed. For entity beans, interception is not required since bijection "
+"and context demarcation are not defined. For session beans, we must register "
+"an EJB interceptor for the session bean component. We could use an "
+"annotation, as follows:"
+msgstr ""
+"Para que la magia de Seam funcione (biyección, demarcación de contexto, "
+"validación, etc), Seam tiene que interceptar las invocaciones de "
+"componentes. Para JavaBeans, Seam tiene completo control de la instanciación "
+"del componente y no es necesario contar con ninguna configuración en "
+"especial. Para los beans de entidad no es necesaria la intercepción ya que "
+"la biyección y la demarcación de contexto no están definidas. Para los beans "
+"de sesión tenemos que registrar un interceptor EJB para el componente bean "
+"de sesión. Podríamos utilizar una anotación como se ve a continuación:"
+
+#. Tag: programlisting
+#: Concepts.xml:285
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:286
+#, no-c-format
+msgid ""
+"But a much better way is to define the interceptor in <literal>ejb-jar.xml</"
+"literal>."
+msgstr ""
+"Pero una mejor manera es definir el interceptor en <literal>ejb-jar.xml</"
+"literal>."
+
+#. Tag: programlisting
+#: Concepts.xml:289
+#, no-c-format
+msgid ""
+"&lt;interceptors&gt;\n"
+"   &lt;interceptor&gt;\n"
+"      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"   &lt;/interceptor&gt;\n"
+"&lt;/interceptors&gt;\n"
+"   \n"
+"&lt;assembly-descriptor&gt;\n"
+"   &lt;interceptor-binding&gt;\n"
+"      &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"   &lt;/interceptor-binding&gt;\n"
+"&lt;/assembly-descriptor&gt;"
+msgstr ""
+"&lt;interceptors&gt;\n"
+"   &lt;interceptor&gt;\n"
+"      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"   &lt;/interceptor&gt;\n"
+"&lt;/interceptors&gt;\n"
+"   \n"
+"&lt;assembly-descriptor&gt;\n"
+"   &lt;interceptor-binding&gt;\n"
+"      &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"   &lt;/interceptor-binding&gt;\n"
+"&lt;/assembly-descriptor&gt;"
+
+#. Tag: title
+#: Concepts.xml:290
+#, no-c-format
+msgid "Component names"
+msgstr "Nombres de componentes"
+
+#. Tag: para
+#: Concepts.xml:291
+#, no-c-format
+msgid ""
+"All seam components need a name. We can assign a name to a component using "
+"the <literal>@Name</literal> annotation:"
+msgstr ""
+"Todos los componentes Seam necesitan un nombre. Podemos asignar un nombre a "
+"un componente utilizando la anotación <literal>@Name</literal>:"
+
+#. Tag: programlisting
+#: Concepts.xml:294
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:295
+#, no-c-format
+msgid ""
+"This name is the <emphasis>seam component name</emphasis> and is not related "
+"to any other name defined by the EJB specification. However, seam component "
+"names work just like JSF managed bean names and you can think of the two "
+"concepts as identical."
+msgstr ""
+"Este nombre es el <emphasis>nombre del componente seam</emphasis> y no está "
+"relacionado con ningún otro nombre definido por la especificación EJB. Sin "
+"embargo, los nombres de componentes seam funcionan como los nombres bean "
+"administrados por JSF y si quiere puede considerar los dos conceptos como "
+"idénticos."
+
+#. Tag: para
+#: Concepts.xml:298
+#, no-c-format
+msgid ""
+"<literal>@Name</literal> is not the only way to define a component name, but "
+"we always need to specify the name <emphasis>somewhere</emphasis>. If we "
+"don&#39;t, then none of the other Seam annotations will function."
+msgstr ""
+"<literal>@Name</literal> no es la única manera de definir un nombre de "
+"componente pero siempre es necesario especificar el nombre en "
+"<emphasis>algún sitio</emphasis>. Si no lo hacemos entonces ninguna de las "
+"otras anotaciones Seam van a funcionar. "
+
+#. Tag: para
+#: Concepts.xml:301
+#, no-c-format
+msgid ""
+"Just like in JSF, a seam component instance is usually bound to a context "
+"variable with the same name as the component name. So, for example, we would "
+"access the <literal>LoginAction</literal> using <literal>Contexts."
+"getStatelessContext().get(\"loginAction\")</literal>. In particular, "
+"whenever Seam itself instantiates a component, it binds the new instance to "
+"a variable with the component name. However, again like JSF, it is possible "
+"for the application to bind a component to some other context variable by "
+"programmatic API call. This is only useful if a particular component serves "
+"more than one role in the system. For example, the currently logged in "
+"<literal>User</literal> might be bound to the <literal>currentUser</literal> "
+"session context variable, while a <literal>User</literal> that is the "
+"subject of some administration functionality might be bound to the "
+"<literal>user</literal> conversation context variable."
+msgstr ""
+"Tal como JSF, una instancia de componente seam usualmente se encuentra "
+"vinculado a una variable de contexto con el mismo nombre que el del "
+"componente. Así que por ejemplo, accederíamos a <literal>LoginAction</"
+"literal> utilizando <literal>Contexts.getStatelessContext().get(\"loginAction"
+"\")</literal>. En particular, cuando Seam instancia un componente este "
+"vincula la nueva instancia a una variable con el nombre del componente. Sin "
+"embargo, tal como JSF, es posible para la aplicación el vincular un "
+"componente a alguna otra variable de contexto por medio de una llamada API "
+"programática. Esto solamente es útil si un componente en particular sirve "
+"más de un rol en el sistema. Por ejemplo, el <literal>User</literal> con "
+"sesión abierta puede estar vinculado a la variable de contexto de la sesión "
+"<literal>currentUser</literal> mientras que un <literal>User</literal> que "
+"es el tema de algunas funcionalidades de administración puede estar "
+"vinculado a la variable de contexto de la conversación <literal>user</"
+"literal>."
+
+#. Tag: para
+#: Concepts.xml:304
+#, no-c-format
+msgid ""
+"For very large applications, and for built-in seam components, qualified "
+"names are often used."
+msgstr ""
+"Con frecuencia se utilizan nombres calificados para aplicaciones muy largas "
+"y para componentes incorporados."
+
+#. Tag: programlisting
+#: Concepts.xml:307
+#, no-c-format
+msgid ""
+"@Name(\"com.jboss.myapp.loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"com.jboss.myapp.loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:308
+#, no-c-format
+msgid ""
+"We may use the qualified component name both in Java code and in JSF&#39;s "
+"expression language:"
+msgstr ""
+"Podemos utilizar el nombre de componente calificado tanto en código Java "
+"como en el lenguaje de expresión de JSF: "
+
+#. Tag: programlisting
+#: Concepts.xml:311
+#, no-c-format
+msgid ""
+"&lt;h:commandButton type=\"submit\" value=\"Login\"\n"
+"                 action=\"#{com.jboss.myapp.loginAction.login}\"/&gt;"
+msgstr ""
+"&lt;h:commandButton type=\"submit\" value=\"Login\"\n"
+"                 action=\"#{com.jboss.myapp.loginAction.login}\"/&gt;"
+
+#. Tag: para
+#: Concepts.xml:312
+#, no-c-format
+msgid ""
+"Since this is noisy, Seam also provides a means of aliasing a qualified name "
+"to a simple name. Add a line like this to the <literal>components.xml</"
+"literal> file:"
+msgstr ""
+"Ya que esto hace demasiado ruido, Seam también proporciona una manera de "
+"crear alias de nombres calificados con nombres simples. Añada una línea como "
+"esta al archivo <literal>components.xml</literal>:"
+
+#. Tag: programlisting
+#: Concepts.xml:315
+#, no-c-format
+msgid ""
+"&lt;factory name=\"loginAction\" scope=\"STATELESS\" value=\"#{com.jboss."
+"myapp.loginAction}\"/&gt;"
+msgstr ""
+"&lt;factory name=\"loginAction\" scope=\"STATELESS\" value=\"#{com.jboss."
+"myapp.loginAction}\"/&gt;"
+
+#. Tag: para
+#: Concepts.xml:316
+#, no-c-format
+msgid ""
+"All of the built-in Seam components have qualified names, but most of them "
+"are aliased to a simple name by the <literal>components.xml</literal> file "
+"included in the Seam jar."
+msgstr ""
+"Todos los componentes incorporados de Seam tienen nombres calificados pero "
+"la mayoría de ellos tienen alias con nombres simples que se encuentran en el "
+"archivo <literal>components.xml</literal> incluido en el jar Seam."
+
+#. Tag: title
+#: Concepts.xml:319
+#, no-c-format
+msgid "Defining the component scope"
+msgstr "Definición del ámbito de componentes"
+
+#. Tag: para
+#: Concepts.xml:320
+#, no-c-format
+msgid ""
+"We can override the default scope (context) of a component using the "
+"<literal>@Scope</literal> annotation. This lets us define what context a "
+"component instance is bound to, when it is instantiated by Seam."
+msgstr ""
+"Podemos anular el ámbito (contexto) predeterminado de un componente "
+"utilizando la anotación <literal>@Scope</literal>. Esto nos permite definir "
+"a que contexto se vincula una instancia de componente cuando es instanciada "
+"por Seam."
+
+#. Tag: programlisting
+#: Concepts.xml:323
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(SESSION)\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(SESSION)\n"
+"public class User { \n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:324
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.ScopeType</literal> defines an enumeration of "
+"possible scopes."
+msgstr ""
+"<literal>org.jboss.seam.ScopeType</literal> define una enumeración de "
+"ámbitos posibles."
+
+#. Tag: title
+#: Concepts.xml:327
+#, no-c-format
+msgid "Components with multiple roles"
+msgstr "Componentes con múltiples roles"
+
+#. Tag: para
+#: Concepts.xml:328
+#, no-c-format
+msgid ""
+"Some Seam component classes can fulfill more than one role in the system. "
+"For example, we often have a <literal>User</literal> class which is usually "
+"used as a session-scoped component representing the current user but is used "
+"in user administration screens as a conversation-scoped component. The "
+"<literal>@Role</literal> annotation lets us define an additional named role "
+"for a component, with a different scope&mdash;it lets us bind the same "
+"component class to different context variables. (Any Seam component "
+"<emphasis>instance</emphasis> may be bound to multiple context variables, "
+"but this lets us do it at the class level, and take advantage of auto-"
+"instantiation.)"
+msgstr ""
+"Algunas clases de componentes Seam pueden desempeñar más de un rol en el "
+"sistema. Por ejemplo, con frecuencia tenemos una clase <literal>User</"
+"literal>, la cual usualmente se utiliza como un componente de ámbito de "
+"sesión representando el usuario actual pero se utiliza en las pantallas de "
+"administración del usuario como un componente de ámbito de conversación. La "
+"anotación <literal>@Role</literal> nos permite definir un rol adicional para "
+"un componente con un ámbito diferente - nos permite vincular la misma clase "
+"de componente a variables de contexto diferentes (cualquier "
+"<emphasis>instancia</emphasis> de componente Seam se puede vincular a "
+"múltiples variables de contexto pero nos deja hacerlo a nivel de clase y así "
+"sacar ventaja de la auto-instanciación)."
+
+#. Tag: programlisting
+#: Concepts.xml:331
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(CONVERSATION)\n"
+"@Role(name=\"currentUser\", scope=SESSION)\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(CONVERSATION)\n"
+"@Role(name=\"currentUser\", scope=SESSION)\n"
+"public class User { \n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:332
+#, no-c-format
+msgid ""
+"The <literal>@Roles</literal> annotation lets us specify as many additional "
+"roles as we like."
+msgstr ""
+"La anotación <literal>@Roles</literal> nos permite especificar tantos roles "
+"adicionales como queramos."
+
+#. Tag: programlisting
+#: Concepts.xml:335
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(CONVERSATION)\n"
+"@Roles({@Role(name=\"currentUser\", scope=SESSION)\n"
+"        @Role(name=\"tempUser\", scope=EVENT)})\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(CONVERSATION)\n"
+"@Roles({@Role(name=\"currentUser\", scope=SESSION)\n"
+"        @Role(name=\"tempUser\", scope=EVENT)})\n"
+"public class User { \n"
+"    ... \n"
+"}"
+
+#. Tag: title
+#: Concepts.xml:336
+#, no-c-format
+msgid "Built-in components"
+msgstr "Componentes incorporados"
+
+#. Tag: para
+#: Concepts.xml:337
+#, no-c-format
+msgid ""
+"Like many good frameworks, Seam eats its own dogfood and is implemented "
+"mostly as a set of built-in Seam interceptors (see later) and Seam "
+"components. This makes it easy for applications to interact with built-in "
+"components at runtime or even customize the basic functionality of Seam by "
+"replacing the built-in components with custom implementations. The built-in "
+"components are defined in the Seam namespace <literal>org.jboss.seam.core</"
+"literal> and the Java package of the same name."
+msgstr ""
+"Así como muchos marcos de trabajo buenos, Seam hace lo que tiene que hacer y "
+"en su mayoría se implementa como un grupo de interceptores Seam incorporados "
+"(más adelante) y componentes Seam. Esto le facilita a las aplicaciones la "
+"interacción con componentes incorporados en tiempo de ejecución e incluso "
+"permite la personalización de las funcionalidades básicas de Seam "
+"reemplazando los componentes incorporados con implementaciones "
+"personalizadas. Los componentes incorporados están definidos en el espacio "
+"de nombre de Seam <literal>org.jboss.seam.core</literal> y en el paquete "
+"Java con el mismo nombre."
+
+#. Tag: para
+#: Concepts.xml:340
+#, no-c-format
+msgid ""
+"The built-in components may be injected, just like any Seam components, but "
+"they also provide convenient static <literal>instance()</literal> methods:"
+msgstr ""
+"Los componentes incorporados se pueden inyectar así como cualquier "
+"componente Seam pero también proporciona métodos <literal>instance()</"
+"literal> estáticos muy convenientes:"
+
+#. Tag: programlisting
+#: Concepts.xml:343
+#, no-c-format
+msgid "FacesMessages.instance().add(\"Welcome back, #{user.name}!\");"
+msgstr "FacesMessages.instance().add(\"Welcome back, #{user.name}!\");"
+
+#. Tag: para
+#: Concepts.xml:344
+#, no-c-format
+msgid ""
+"Seam was designed to integrate tightly in a Java EE 5 environment. However, "
+"we understand that there are many projects which are not running in a full "
+"EE environment. We also realize the critical importance of easy unit and "
+"integration testing using frameworks such as TestNG and JUnit. So, we&#39;ve "
+"made it easy to run Seam in Java SE environments by allowing you to boostrap "
+"certain critical infrastructure normally only found in EE environments by "
+"installing built-in Seam components."
+msgstr ""
+"Seam fue diseñado para integrar fuertemente un entorno Java EE 5. Sin "
+"embargo, entendemos que hay muchos proyectos que no ejecutan en un entorno "
+"que es completamente EE. También nos damos cuenta de la vital importancia de "
+"las pruebas de integración utilizando marcos de trabajo como TestNG y JUnit. "
+"Así que hemos facilitado ejecutar Seam en entornos Java SE permitiéndole "
+"realizar bootstrap en cierta infraestructura crítica que normalmente sólo se "
+"encuentra en entornos EE instalando componentes Seam incorporados. "
+
+#. Tag: para
+#: Concepts.xml:347
+#, no-c-format
+msgid ""
+"For example, you can run your EJB3 components in Tomcat or an integration "
+"test suite just by installing the built-in component <literal>org.jboss.seam."
+"core.ejb</literal>, which automatically bootstraps the JBoss Embeddable EJB3 "
+"container and deploys your EJB components."
+msgstr ""
+"Por ejemplo, puede ejecutar sus componentes EJB· en Tomcat o una suite de "
+"prueba de integración con tan sólo instalar el componente incorporado "
+"<literal>org.jboss.seam.core.ejb</literal>, el cual automáticamente realiza "
+"un boostrap del contenedor JBoss Embeddable EJB3 y despliega sus componentes "
+"EJB."
+
+#. Tag: para
+#: Concepts.xml:350
+#, no-c-format
+msgid ""
+"Or, if you&#39;re not quite ready for the Brave New World of EJB 3.0, you "
+"can write a Seam application that uses only JavaBean components, together "
+"with Hibernate3 for persistence, by installing a built-in component that "
+"manages a Hibernate <literal>SessionFactory</literal>. When using Hibernate "
+"outside of a J2EE environment, you will also probably need a JTA transaction "
+"manager and JNDI server, which are available via the built-in component "
+"<literal>org.jboss.seam.core.microcontainer</literal>. This lets you use the "
+"bulletproof JTA/JCA pooling datasource from JBoss application server in an "
+"SE environment like Tomcat!"
+msgstr ""
+"Si aún no está listo para el nuevo mundo de EJB 3.0 puede escribir una "
+"aplicación Seam que solamente utiliza componentes JavaBean junto con "
+"Hibernate3 para persistencia instalando un componente incorporado que "
+"administra un <literal>SessionFactory</literal> de Hibernate. Cuando utiliza "
+"Hibernate fuera de un entorno J2EE probablemente también necesitará un "
+"administrador de transacciones JTA y un servidor JNDI, los cuales se "
+"encuentran disponibles por medio del componente incorporado <literal>org."
+"jboss.seam.core.microcontainer</literal>. Esto le permite utilizar la fuente "
+"de datos en pool JTA/JCA a prueba de todo desde el servidor de aplicaciones "
+"de JBoss en un entorno SE como ¡Tomcat! "
+
+#. Tag: title
+#: Concepts.xml:353
+#, no-c-format
+msgid "Bijection"
+msgstr "Biyección "
+
+#. Tag: para
+#: Concepts.xml:354
+#, no-c-format
+msgid ""
+"<emphasis>Dependency injection</emphasis> or <emphasis>inversion of control</"
+"emphasis> is by now a familiar concept to most Java developers. Dependency "
+"injection allows a component to obtain a reference to another component by "
+"having the container \"inject\" the other component to a setter method or "
+"instance variable. In all dependency injection implementations that we have "
+"seen, injection occurs when the component is constructed, and the reference "
+"does not subsequently change for the lifetime of the component instance. For "
+"stateless components, this is reasonable. From the point of view of a "
+"client, all instances of a particular stateless component are "
+"interchangeable. On the other hand, Seam emphasizes the use of stateful "
+"components. So traditional dependency injection is no longer a very useful "
+"construct. Seam introduces the notion of <emphasis>bijection</emphasis> as a "
+"generalization of injection. In contrast to injection, bijection is:"
+msgstr ""
+"Hoy en día los conceptos <emphasis>inyección de dependencia</emphasis> o "
+"<emphasis>inversión de control</emphasis> son familiares para la mayoría de "
+"los desarrolladores Java. La inyección de dependencia le permite a un "
+"componente obtener una referencia a otro componente haciendo que el "
+"contenedor \"inyecte\" el otro componente a un método setter o a una "
+"variable de instancia. En todas las implementaciones de inyección de "
+"dependencias que hemos visto, la inyección ocurre cuando se construye el "
+"componente y la referencia no cambia subsecuentemente por el tiempo de vida "
+"de la instancia del componente. Para los componentes sin estado esto es "
+"razonable. Desde el punto de vista de un cliente, todas las instancias de un "
+"componente sin estado en particular son intercambiables. Por otro lado, Seam "
+"enfatiza el uso de componentes con estado. Así que la inyección de "
+"dependencias tradicionales ya no es una construcción muy útil. Seam "
+"introduce la noción de <emphasis>biyección</emphasis> como una "
+"generalización de inyección. En contraste con la inyección, la biyección es:"
+
+#. Tag: para
+#: Concepts.xml:359
+#, no-c-format
+msgid ""
+"<emphasis>contextual</emphasis> - bijection is used to assemble stateful "
+"components from various different contexts (a component from a \"wider\" "
+"context may even have a reference to a component from a \"narrower\" context)"
+msgstr ""
+"<emphasis>contextual</emphasis> - la biyección se utiliza para montar "
+"componentes con estado de varios contextos diferentes (un componente de un "
+"contexto \"más amplio\" puede llegar a tener una referencia a un componente "
+"desde un contexto \"más limitado\")."
+
+#. Tag: para
+#: Concepts.xml:364
+#, no-c-format
+msgid ""
+"<emphasis>bidirectional</emphasis> - values are injected from context "
+"variables into attributes of the component being invoked, and also "
+"<emphasis>outjected</emphasis> from the component attributes back out to the "
+"context, allowing the component being invoked to manipulate the values of "
+"contextual variables simply by setting its own instance variables"
+msgstr ""
+"los valores <emphasis>bidireccionales</emphasis> se inyectan desde variables "
+"de contexto a atributos del componente que se está invocando y también "
+"<emphasis>eyectado</emphasis> desde los atributos de componentes de regreso "
+"al contexto permitiéndole al componente ser invocado para manipular los "
+"valores de las variables de contexto simplemente configurando sus propias "
+"variables de instancia."
+
+#. Tag: para
+#: Concepts.xml:369
+#, no-c-format
+msgid ""
+"<emphasis>dynamic</emphasis> - since the value of contextual variables "
+"changes over time, and since Seam components are stateful, bijection takes "
+"place every time a component is invoked"
+msgstr ""
+"<emphasis>dinámico</emphasis> - ya que el valor de las variables "
+"contextuales cambia con el tiempo y debido a que los componentes Seam tienen "
+"estado, la biyección tiene lugar cada vez que se invoca un componente."
+
+#. Tag: para
+#: Concepts.xml:374
+#, no-c-format
+msgid ""
+"In essence, bijection lets you alias a context variable to a component "
+"instance variable, by specifying that the value of the instance variable is "
+"injected, outjected, or both. Of course, we use annotations to enable "
+"bijection."
+msgstr ""
+"En esencia, la biyección le permite usar un alias de una variable de "
+"contexto para una variable de instancia de componente especificando que el "
+"valor de la variable de la instancia es inyectada, eyectada o ambas. Por "
+"supuesto, utilizamos anotaciones para habilitar la biyección."
+
+#. Tag: para
+#: Concepts.xml:377
+#, no-c-format
+msgid ""
+"The <literal>@In</literal> annotation specifies that a value should be "
+"injected, either into an instance variable:"
+msgstr ""
+"La anotación <literal>@In</literal> especifica que un valor debe ser "
+"inyectado ya sea a una variable de instancia:"
+
+#. Tag: programlisting
+#: Concepts.xml:380
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In User user;\n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:381
+#, no-c-format
+msgid "or into a setter method:"
+msgstr "o en un método setter:"
+
+#. Tag: programlisting
+#: Concepts.xml:384
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @In\n"
+"    public void setUser(User user) {\n"
+"        this.user=user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @In\n"
+"    public void setUser(User user) {\n"
+"        this.user=user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:385
+#, no-c-format
+msgid ""
+"By default, Seam will do a priority search of all contexts, using the name "
+"of the property or instance variable that is being injected. You may wish to "
+"specify the context variable name explicitly, using, for example, "
+"<literal>@In(\"currentUser\")</literal>."
+msgstr ""
+"Por defecto, Seam realizará una búsqueda de prioridades en todos los "
+"contextos utilizando el nombre de la propiedad o de la variable de instancia "
+"que se está inyectando. Puede que quiera especificar el nombre de la "
+"variable de contexto de manera explícita utilizando por ejemplo <literal>@In"
+"(\"currentUser\")</literal>."
+
+#. Tag: para
+#: Concepts.xml:388
+#, no-c-format
+msgid ""
+"If you want Seam to create an instance of the component when there is no "
+"existing component instance bound to the named context variable, you should "
+"specify <literal>@In(create=true)</literal>. If the value is optional (it "
+"can be null), specify <literal>@In(required=false)</literal>."
+msgstr ""
+"Si quiere que Seam cree una instancia del componente cuando no hay una "
+"instancia de componente existente vinculado a la variable de contexto "
+"nombrada, debe especificar <literal>@In(create=true)</literal>. Si el valor "
+"es opcional (puede ser nulo) especifique <literal>@In(required=false)</"
+"literal>."
+
+#. Tag: para
+#: Concepts.xml:391
+#, no-c-format
+msgid ""
+"For some components, it can be repetitive to have to specify <literal>@In"
+"(create=true)</literal> everywhere they are used. In such cases, you can "
+"annotate the component <literal>@AutoCreate</literal>, and then it will "
+"always be created, whenever needed, even without the explicit use of "
+"<literal>create=true</literal>."
+msgstr ""
+"Para algunos componentes puede llegar a ser repetitivo el especificar "
+"<literal>@In(create=true)</literal> en todo lugar en donde se utilizan. En "
+"tales casos puede anotar el componente <literal>@AutoCreate</literal> y "
+"entonces siempre se creará cuando se necesite incluso sin el uso explícito "
+"de <literal>create=true</literal>."
+
+#. Tag: para
+#: Concepts.xml:394
+#, no-c-format
+msgid "You can even inject the value of an expression:"
+msgstr "Inclusive puede inyectar el valor de una expresión:"
+
+#. Tag: programlisting
+#: Concepts.xml:397
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In(\"#{user.username}\") String username;\n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In(\"#{user.username}\") String username;\n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:398
+#, no-c-format
+msgid ""
+"(There is much more information about component lifecycle and injection in "
+"the next chapter.)"
+msgstr ""
+"- En el siguiente capítulo encontrará mucha más información sobre el ciclo "
+"de vida del componente y la inyección."
+
+#. Tag: para
+#: Concepts.xml:401
+#, no-c-format
+msgid ""
+"The <literal>@Out</literal> annotation specifies that an attribute should be "
+"outjected, either from an instance variable:"
+msgstr ""
+"La anotación <literal>@Out</literal> especifica que un atributo debe ser "
+"eyectado ya sea desde una variable de instancias:"
+
+#. Tag: programlisting
+#: Concepts.xml:404
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @Out User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @Out User user;\n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:405
+#, no-c-format
+msgid "or from a getter method:"
+msgstr "o desde un método getter:"
+
+#. Tag: programlisting
+#: Concepts.xml:408
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @Out\n"
+"    public User getUser() {\n"
+"        return user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @Out\n"
+"    public User getUser() {\n"
+"        return user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:409
+#, no-c-format
+msgid "An attribute may be both injected and outjected:"
+msgstr "Se puede inyectar y eyectar un atributo:"
+
+#. Tag: programlisting
+#: Concepts.xml:412
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In @Out User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In @Out User user;\n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:413
+#, no-c-format
+msgid "<para>or:</para>"
+msgstr "<para>o:</para>"
+
+#. Tag: programlisting
+#: Concepts.xml:416
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @In\n"
+"    public void setUser(User user) {\n"
+"        this.user=user;\n"
+"    }\n"
+"    \n"
+"    @Out\n"
+"    public User getUser() {\n"
+"        return user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @In\n"
+"    public void setUser(User user) {\n"
+"        this.user=user;\n"
+"    }\n"
+"    \n"
+"    @Out\n"
+"    public User getUser() {\n"
+"        return user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+
+#. Tag: title
+#: Concepts.xml:417
+#, no-c-format
+msgid "Lifecycle methods"
+msgstr "Métodos de ciclos de vida"
+
+#. Tag: para
+#: Concepts.xml:418
+#, no-c-format
+msgid ""
+"Session bean and entity bean Seam components support all the usual EJB 3.0 "
+"lifecycle callback (<literal>@PostConstruct</literal>, <literal>@PreDestroy</"
+"literal>, etc). Seam extends all of these callbacks except "
+"<literal>@PreDestroy</literal> to JavaBean components. But Seam also defines "
+"its own component lifecycle callbacks."
+msgstr ""
+"Los componentes Seam bean de entidad y bean de sesión soportan todas las "
+"funciones de respuesta del ciclo de vida EJB 3.0 comúnes "
+"(<literal>@PostConstruct</literal>, <literal>@PreDestroy</literal>, etc). "
+"Seam extiende todas estas funciones de respuesta a excepción de "
+"<literal>@PreDestroy</literal> a los componentes JavaBean. Pero Seam también "
+"define sus propias funciones de respuesta del ciclo de vida del componente."
+
+#. Tag: para
+#: Concepts.xml:421
+#, no-c-format
+msgid ""
+"The <literal>@Create</literal> method is called every time Seam instantiates "
+"a component. Unlike the <literal>@PostConstruct</literal> method, this "
+"method is called after the component is fully constructed by the EJB "
+"container, and has access to all the usual Seam functionality (bijection, "
+"etc). Components may define only one <literal>@Create</literal> method."
+msgstr ""
+"El método <literal>@Create</literal> se llama cada vez que Seam instancia un "
+"componente. De manera opuesta que el método <literal>@PostConstruct</"
+"literal>, este método se llama después de que el componente está "
+"completamente construido por el contenedor EJB y tiene acceso a todas las "
+"funcionalidades Seam usuales (biyección, etc). Los componentes pueden "
+"definir solamente un método <literal>@Create</literal>."
+
+#. Tag: para
+#: Concepts.xml:424
+#, no-c-format
+msgid ""
+"The <literal>@Destroy</literal> method is called when the context that the "
+"Seam component is bound to ends. Components may define only one "
+"<literal>@Destroy</literal> method. Stateful session bean components "
+"<emphasis>must</emphasis> define a method annotated <literal>@Destroy "
+"@Remove</literal>."
+msgstr ""
+"El método <literal>@Destroy</literal> se llama cuando se da fin al contexto "
+"al cual el componente Seam se encuentra vinculado. Los componentes pueden "
+"definir sólo un método <literal>@Destroy</literal>. Los componentes de bean "
+"de sesión con estado <emphasis>tienen</emphasis> que definir un método "
+"anotado <literal>@Destroy @Remove</literal>."
+
+#. Tag: para
+#: Concepts.xml:427
+#, no-c-format
+msgid ""
+"Finally, a related annotation is the <literal>@Startup</literal> annotation, "
+"which may be applied to any application or session scoped component. The "
+"<literal>@Startup</literal> annotation tells Seam to instantiate the "
+"component immediately, when the context begins, instead of waiting until it "
+"is first referenced by a client. It is possible to control the order of "
+"instantiation of startup components by specifying <literal>@Startup(depends="
+"{....})</literal>."
+msgstr ""
+"Finalmente, una anotación relacionada es la anotación <literal>@Startup</"
+"literal>, la cual se puede aplicar a cualquier aplicación o a cualquier "
+"componente de ámbito de sesión. La anotación <literal>@Startup</literal> le "
+"dice a Seam que instancie el componente de manera inmediata cuando el "
+"contexto comienza en vez de esperar hasta que un cliente lo referencie por "
+"primera vez. Es posible controlar el orden de la instanciación de los "
+"componentes de arranque especificando <literal>@Startup(depends={....})</"
+"literal>."
+
+#. Tag: title
+#: Concepts.xml:430
+#, no-c-format
+msgid "Conditional installation"
+msgstr "Instalación condicional"
+
+#. Tag: para
+#: Concepts.xml:431
+#, no-c-format
+msgid ""
+"The <literal>@Install</literal> annotation lets you control conditional "
+"installation of components that are required in some deployment scenarios "
+"and not in others. This is useful if:"
+msgstr ""
+"La anotación <literal>@Install</literal> le permite controlar la instalación "
+"condicional de componentes que se requieren en algunos escenarios de "
+"despliegue y en otros no. Esto es útil si:"
+
+#. Tag: para
+#: Concepts.xml:436
+#, no-c-format
+msgid "You want to mock out some infrastructural component in tests."
+msgstr "Quiere simular algunos componentes infraestructurales en pruebas."
+
+#. Tag: para
+#: Concepts.xml:441
+#, no-c-format
+msgid ""
+"You want change the implementation of a component in certain deployment "
+"scenarios."
+msgstr ""
+"Quiere cambiar la implementación de un componente en ciertos escenarios de "
+"despliegue."
+
+#. Tag: para
+#: Concepts.xml:446
+#, no-c-format
+msgid ""
+"You want to install some components only if their dependencies are available "
+"(useful for framework authors)."
+msgstr ""
+"Quiere instalar algunos componentes sólo si sus dependencias se encuentran "
+"disponibles (útil para autores de marcos de trabajo). "
+
+#. Tag: para
+#: Concepts.xml:451
+#, no-c-format
+msgid ""
+"<literal>@Install</literal> works by letting you specify "
+"<emphasis>precedence</emphasis> and <emphasis>dependencies</emphasis>."
+msgstr ""
+"<literal>@Install</literal> le permite especificar la "
+"<emphasis>precedencia</emphasis> y las <emphasis>dependencias</emphasis>."
+
+#. Tag: para
+#: Concepts.xml:454
+#, no-c-format
+msgid ""
+"The precedence of a component is a number that Seam uses to decide which "
+"component to install when there are multiple classes with the same component "
+"name in the classpath. Seam will choose the component with the higher "
+"precendence. There are some predefined precedence values (in ascending "
+"order):"
+msgstr ""
+"La precedencia de un componente es un número que Seam utiliza para decidir "
+"cual componente se debe instalar cuando hay múltiples clases con el mismo "
+"nombre de componente en la ruta de clase. Seam seleccionará el componente "
+"con la precedencia más alta. Hay algunos valores de precedencia predefinidos "
+"(en orden ascendiente):"
+
+#. Tag: para
+#: Concepts.xml:459
+#, no-c-format
+msgid ""
+"<literal>BUILT_IN</literal> &mdash; the lowest precedece components are the "
+"components built in to Seam."
+msgstr ""
+"<literal>BUILT_IN</literal> &mdash; los componentes precedentes más bajos "
+"son los componentes incorporados en Seam."
+
+#. Tag: para
+#: Concepts.xml:464
+#, no-c-format
+msgid ""
+"<literal>FRAMEWORK</literal> &mdash; components defined by third-party "
+"frameworks may override built-in components, but are overridden by "
+"application components."
+msgstr ""
+"<literal>FRAMEWORK</literal> &mdash; los componentes definidos por marcos de "
+"trabajo de terceros pueden cancelar los componentes incorporados pero son "
+"anulados por los componentes de la aplicación."
+
+#. Tag: para
+#: Concepts.xml:469
+#, no-c-format
+msgid ""
+"<literal>APPLICATION</literal> &mdash; the default precedence. This is "
+"appropriate for most application components."
+msgstr ""
+"<literal>APPLICATION</literal> &mdash; la precedencia predeterminada. Esto "
+"es apropiado para la mayoría de los componentes de la aplicación."
+
+#. Tag: para
+#: Concepts.xml:474
+#, no-c-format
+msgid ""
+"<literal>DEPLOYMENT</literal> &mdash; for application components which are "
+"deployment-specific."
+msgstr ""
+"<literal>DEPLOYMENT</literal> &mdash; para componentes de la aplicación "
+"específicos del despliegue."
+
+#. Tag: para
+#: Concepts.xml:479
+#, no-c-format
+msgid "<literal>MOCK</literal> &mdash; for mock objects used in testing."
+msgstr "<literal>MOCK</literal> &mdash; para simular objetos utilizados en pruebas."
+
+#. Tag: para
+#: Concepts.xml:484
+#, no-c-format
+msgid ""
+"Suppose we have a component named <literal>messageSender</literal> that "
+"talks to a JMS queue."
+msgstr ""
+"Suponga que tenemos un componente llamado <literal>messageSender</literal> "
+"que le habla a una cola JMS."
+
+#. Tag: programlisting
+#: Concepts.xml:487
+#, no-c-format
+msgid ""
+"@Name(\"messageSender\") \n"
+"public class MessageSender {\n"
+"    public void sendMessage() {\n"
+"        //do something with JMS\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"messageSender\") \n"
+"public class MessageSender {\n"
+"    public void sendMessage() {\n"
+"        //do something with JMS\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:488
+#, no-c-format
+msgid ""
+"In our unit tests, we don&#39;t have a JMS queue available, so we would like "
+"to stub out this method. We&#39;ll create a <emphasis>mock</emphasis> "
+"component that exists in the classpath when unit tests are running, but is "
+"never deployed with the application:"
+msgstr ""
+"En nuestras pruebas de unidad no tenemos una cola JMS disponible así que nos "
+"gustaría apagar este método. Vamos a crear un componente <emphasis>de "
+"mentiras</emphasis> que existe en la ruta de clase cuando las pruebas de "
+"unidad se encuentran ejecutando pero nunca se despliega con la aplicación: "
+
+#. Tag: programlisting
+#: Concepts.xml:491
+#, no-c-format
+msgid ""
+"@Name(\"messageSender\") \n"
+"@Install(precedence=MOCK)\n"
+"public class MockMessageSender extends MessageSender {\n"
+"    public void sendMessage() {\n"
+"        //do nothing!\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"messageSender\") \n"
+"@Install(precedence=MOCK)\n"
+"public class MockMessageSender extends MessageSender {\n"
+"    public void sendMessage() {\n"
+"        //do nothing!\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:492
+#, no-c-format
+msgid ""
+"The <literal>precedence</literal> helps Seam decide which version to use "
+"when it finds both components in the classpath."
+msgstr ""
+"<literal>precedence</literal> le ayuda a Seam a decidir que versión utilizar "
+"cuando encuentra ambos componentes en la ruta de clase."
+
+#. Tag: para
+#: Concepts.xml:495
+#, no-c-format
+msgid ""
+"This is nice if we are able to control exactly which classes are in the "
+"classpath. But if I&#39;m writing a reusable framework with many "
+"dependecies, I don&#39;t want to have to break that framework across many "
+"jars. I want to be able to decide which components to install depending upon "
+"what other components are installed, and upon what classes are available in "
+"the classpath. The <literal>@Install</literal> annotation also controls this "
+"functionality. Seam uses this mechanism internally to enable conditional "
+"installation of many of the built-in components. However, you probably "
+"won&#39;t need to use it in your application."
+msgstr ""
+"Esto sería bueno si pudiésemos controlar exactamente las clases que se "
+"encuentran en la ruta de clase. Pero si estoy escribiendo un marco de "
+"trabajo re-utilizable con muchas dependencias no quiero tener que romper el "
+"marco de trabajo en muchas jars. Quiero poder decidir que componentes "
+"instalar dependiendo de que otros componentes se instalan y de acuerdo a las "
+"clases que están disponibles en la ruta de clase. La anotación "
+"<literal>@Install</literal> también controla esta funcionalidad. Seam "
+"utiliza este mecanismo internamente para habilitar la instalación "
+"condicional de muchos de los componentes incorporados. Sin embargo, "
+"probablemente no necesitará utilizarla en su aplicación. "
+
+#. Tag: title
+#: Concepts.xml:498
+#, no-c-format
+msgid "Logging"
+msgstr "Registros"
+
+#. Tag: para
+#: Concepts.xml:499
+#, no-c-format
+msgid "Who is not totally fed up with seeing noisy code like this?"
+msgstr "¿Quién no se aburre por completo de ver un ruidoso código como este?"
+
+#. Tag: programlisting
+#: Concepts.xml:502
+#, no-c-format
+msgid ""
+"private static final Log log = LogFactory.getLog(CreateOrderAction.class);\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    if ( log.isDebugEnabled() ) {\n"
+"        log.debug(\"Creating new order for user: \" + user.username() + \n"
+"            \" product: \" + product.name() \n"
+"            + \" quantity: \" + quantity);\n"
+"    }\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+"private static final Log log = LogFactory.getLog(CreateOrderAction.class);\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    if ( log.isDebugEnabled() ) {\n"
+"        log.debug(\"Creating new order for user: \" + user.username() + \n"
+"            \" product: \" + product.name() \n"
+"            + \" quantity: \" + quantity);\n"
+"    }\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:503
+#, no-c-format
+msgid ""
+"It is difficult to imagine how the code for a simple log message could "
+"possibly be more verbose. There is more lines of code tied up in logging "
+"than in the actual business logic! I remain totally astonished that the Java "
+"community has not come up with anything better in 10 years."
+msgstr ""
+"Es difícil imaginar como el código para un mensaje de registro simple puede "
+"llegar a ser más verboso. Hay más líneas de código en el registro que en la "
+"¡lógica empresarial real! Me sorprende que la comunidad Java no haya ideado "
+"algo mejor en diez años."
+
+#. Tag: para
+#: Concepts.xml:506
+#, no-c-format
+msgid "Seam provides a logging API that simplifies this code significantly:"
+msgstr ""
+"Seam proporciona una API de registro que simplifica este código de manera "
+"importante:"
+
+#. Tag: programlisting
+#: Concepts.xml:509
+#, no-c-format
+msgid ""
+"@Logger private Log log;\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    log.debug(\"Creating new order for user: #0 product: #1 quantity: #2\", "
+"user.username(), \n"
+"      product.name(), quantity);\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+"@Logger private Log log;\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    log.debug(\"Creating new order for user: #0 product: #1 quantity: #2\", "
+"user.username(), \n"
+"      product.name(), quantity);\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:510
+#, no-c-format
+msgid ""
+"It doesn&#39;t matter if you declare the <literal>log</literal> variable "
+"static or not&mdash;it will work either way, except for entity bean "
+"components which require the <literal>log</literal> variable to be static."
+msgstr ""
+"No importa si declara como estática o no la variable <literal>log</literal>, "
+"funcionará de cualquier manera, a excepción de los componentes bean de "
+"entidades los cuales requieren que la variable <literal>log</literal> sea "
+"estática."
+
+#. Tag: para
+#: Concepts.xml:513
+#, no-c-format
+msgid ""
+"Note that we don&#39;t need the noisy <literal>if ( log.isDebugEnabled() )</"
+"literal> guard, since string concatenation happens <emphasis>inside</"
+"emphasis> the <literal>debug()</literal> method. Note also that we don&#39;t "
+"usually need to specify the log category explicitly, since Seam knows what "
+"component it is injecting the <literal>Log</literal> into."
+msgstr ""
+"Observe que no necesitamos el ruidoso guardia <literal>if ( log."
+"isDebugEnabled() )</literal> ya que la concatenación de cadenas sucede "
+"<emphasis>dentro</emphasis> del método <literal>debug()</literal>. Note "
+"también que usualmente no necesitamos especificar la categoría de registro "
+"explícitamente ya que Seam sabe a que componente se está inyectando el "
+"<literal>Log</literal>."
+
+#. Tag: para
+#: Concepts.xml:516
+#, no-c-format
+msgid ""
+"If <literal>User</literal> and <literal>Product</literal> are Seam "
+"components available in the current contexts, it gets even better:"
+msgstr ""
+"Si <literal>User</literal> y <literal>Product</literal> son componentes Seam "
+"disponibles en los contextos actuales, es aún mejor:"
+
+#. Tag: programlisting
+#: Concepts.xml:519
+#, no-c-format
+msgid ""
+"@Logger private Log log;\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    log.debug(\"Creating new order for user: #{user.username} product: #"
+"{product.name} \n"
+"      quantity: #0\", quantity);\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+"@Logger private Log log;\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    log.debug(\"Creating new order for user: #{user.username} product: #"
+"{product.name} \n"
+"      quantity: #0\", quantity);\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:520
+#, no-c-format
+msgid ""
+"Seam logging automagically chooses whether to send output to log4j or JDK "
+"logging. If log4j is in the classpath, Seam with use it. If it is not, Seam "
+"will use JDK logging."
+msgstr ""
+"El registro de Seam selecciona automáticamente si envia las salidas a los "
+"registros log4j o JDK. Si log4j se encuentra en la ruta de clase Seam la "
+"utilizará. Si no entonces Seam utilizará el registro JDK."
+
+#. Tag: title
+#: Concepts.xml:523
+#, no-c-format
+msgid "The <literal>Mutable</literal> interface and <literal>@ReadOnly</literal>"
+msgstr "La interfaz<literal>Mutable</literal> y <literal>@ReadOnly</literal>"
+
+#. Tag: para
+#: Concepts.xml:524
+#, no-c-format
+msgid ""
+"Many application servers feature an amazingly broken implementation of "
+"<literal>HttpSession</literal> clustering, where changes to the state of "
+"mutable objects bound to the session are only replicated when the "
+"application calls <literal>setAttribute()</literal> explicitly. This is a "
+"source of bugs that can not effectively be tested for at development time, "
+"since they will only manifest when failover occurs. Furthermore, the actual "
+"replication message contains the entire serialized object graph bound to the "
+"session attribute, which is inefficient."
+msgstr ""
+"Muchos servidores de aplicaciones presentan una implementación de clústers "
+"de  <literal>HttpSession</literal> increíblemente dividida, en donde los "
+"cambios al estado de los objetos mutables vinculados a la sesión solamente "
+"se replican cuando la aplicación llama a <literal>setAttribute()</literal> "
+"explícitamente. Esta es una fuente de errores que no se pueden probar de "
+"manera efectiva durante el desarrollo ya que sólo se manifestarán cuando "
+"tiene lugar un fallo que provoque la conmutación de servidores. Además, el "
+"mensaje de replicación real contiene la gráfica completa de los objetos "
+"serializados vinculada al atributo de sesión, lo cual es ineficiente."
+
+#. Tag: para
+#: Concepts.xml:527
+#, no-c-format
+msgid ""
+"Of course, EJB stateful session beans must perform automatic dirty checking "
+"and replication of mutable state and a sophisticated EJB container can "
+"introduce optimizations such as attribute-level replication. Unfortunately, "
+"not all Seam users have the good fortune to be working in an environment "
+"that supports EJB 3.0. So, for session and conversation scoped JavaBean and "
+"entity bean components, Seam provides an extra layer of cluster-safe state "
+"management over the top of the web container session clustering."
+msgstr ""
+"Por supuesto, los beans de sesión con estado EJB deben realizar una "
+"verificación automática y una replicación de estado mutable y un contenedor "
+"EJB sofisticado puede introducir optimizaciones tal como la réplica a nivel "
+"de atributos. Desafortunadamente, no todos los usuarios Seam tienen la buena "
+"fortuna de estar trabajando en un entorno que soporte EJB 3.0. Así que para "
+"los componentes bean de entidad y JavaBean con ámbito de conversación, Seam "
+"proporciona una capa extra de administración de estado seguro de clústers "
+"sobre el clúster de sesión de contenedores web."
+
+#. Tag: para
+#: Concepts.xml:530
+#, no-c-format
+msgid ""
+"For session or conversation scoped JavaBean components, Seam automatically "
+"forces replication to occur by calling <literal>setAttribute()</literal> "
+"once in every request that the component was invoked by the application. Of "
+"course, this strategy is inefficient for read-mostly components. You can "
+"control this behavior by implementing the <literal>org.jboss.seam.core."
+"Mutable</literal> interface, or by extending <literal>org.jboss.seam.core."
+"AbstractMutable</literal>, and writing your own dirty-checking logic inside "
+"the component. For example,"
+msgstr ""
+"Para los componentes JavaBean con ámbito de conversación Seam fuerza de "
+"manera automática la replicación para que ocurra cuando llame a "
+"<literal>setAttribute()</literal> una vez en cada petición en donde el "
+"componente fue invocado por la aplicación. Por supuesto, esta estrategia es "
+"ineficiente para la mayoría de los componentes de lectura. Puede controlar "
+"este comportamiento implementando la interfaz <literal>org.jboss.seam.core."
+"Mutable</literal> o extendiendo <literal>org.jboss.seam.core."
+"AbstractMutable</literal> y escribiendo su propia lógica de verificación "
+"dentro del componente, por ejemplo:"
+
+#. Tag: programlisting
+#: Concepts.xml:533
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class Account extends AbstractMutable\n"
+"{\n"
+"    private BigDecimal balance;\n"
+"    \n"
+"    public void setBalance(BigDecimal balance)\n"
+"    {\n"
+"        setDirty(this.balance, balance);\n"
+"        this.balance = balance;\n"
+"    }\n"
+"    \n"
+"    public BigDecimal getBalance()\n"
+"    {\n"
+"        return balance;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+"@Name(\"account\")\n"
+"public class Account extends AbstractMutable\n"
+"{\n"
+"    private BigDecimal balance;\n"
+"    \n"
+"    public void setBalance(BigDecimal balance)\n"
+"    {\n"
+"        setDirty(this.balance, balance);\n"
+"        this.balance = balance;\n"
+"    }\n"
+"    \n"
+"    public BigDecimal getBalance()\n"
+"    {\n"
+"        return balance;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:534
+#, no-c-format
+msgid ""
+"Or, you can use the <literal>@ReadOnly</literal> annotation to achieve a "
+"similar effect:"
+msgstr ""
+"También puede utilizar la anotación <literal>@ReadOnly</literal> para lograr "
+"un efecto similar:"
+
+#. Tag: programlisting
+#: Concepts.xml:537
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class Account\n"
+"{\n"
+"    private BigDecimal balance;\n"
+"    \n"
+"    public void setBalance(BigDecimal balance)\n"
+"    {\n"
+"        this.balance = balance;\n"
+"    }\n"
+"    \n"
+"    @ReadOnly\n"
+"    public BigDecimal getBalance()\n"
+"    {\n"
+"        return balance;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+"@Name(\"account\")\n"
+"public class Account\n"
+"{\n"
+"    private BigDecimal balance;\n"
+"    \n"
+"    public void setBalance(BigDecimal balance)\n"
+"    {\n"
+"        this.balance = balance;\n"
+"    }\n"
+"    \n"
+"    @ReadOnly\n"
+"    public BigDecimal getBalance()\n"
+"    {\n"
+"        return balance;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:538
+#, no-c-format
+msgid ""
+"For session or conversation scoped entity bean components, Seam "
+"automatically forces replication to occur by calling <literal>setAttribute()"
+"</literal> once in every request, <emphasis>unless the (conversation-scoped) "
+"entity is currently associated with a Seam-managed persistence context, in "
+"which case no replication is needed</emphasis>. This strategy is not "
+"necessarily efficient, so session or conversation scope entity beans should "
+"be used with care. You can always write a stateful session bean or JavaBean "
+"component to \"manage\" the entity bean instance. For example,"
+msgstr ""
+"Para componentes bean de entidad de ámbito de conversación o de sesión, Seam "
+"automáticamente fuerza la replicación para que ocurra al llamar "
+"<literal>setAttribute()</literal> una vez en toda petición <emphasis>a menos "
+"que la entidad (de ámbito de conversación) esté actualmente asociada con un "
+"contexto de persistencia administrado por Seam, en cuyo caso no se necesita "
+"replicación</emphasis>. Esta estrategia no es necesariamente eficiente así "
+"que los beans de entidad con ámbito de conversación o de sesión se deben "
+"utilizar con mucho cuidado. Siempre puede escribir un bean de sesión con "
+"estado o un componente JavaBean para \"administrar\" la instancia bean de "
+"entidad, por ejemplo:"
+
+#. Tag: programlisting
+#: Concepts.xml:541
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"account\")\n"
+"public class AccountManager extends AbstractMutable\n"
+"{\n"
+"    private Account account; // an entity bean\n"
+"    \n"
+"    @Unwrap\n"
+"    public void getAccount()\n"
+"    {\n"
+"        return account;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+"@Stateful\n"
+"@Name(\"account\")\n"
+"public class AccountManager extends AbstractMutable\n"
+"{\n"
+"    private Account account; // an entity bean\n"
+"    \n"
+"    @Unwrap\n"
+"    public void getAccount()\n"
+"    {\n"
+"        return account;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:542
+#, no-c-format
+msgid ""
+"Note that the <literal>EntityHome</literal> class in the Seam Application "
+"Framework provides a great example of this pattern."
+msgstr ""
+"Observe que la clase <literal>EntityHome</literal> en el marco de trabajo de "
+"la aplicación Seam propociona un grandioso ejemplo de este patrón. "
+
+#. Tag: title
+#: Concepts.xml:545
+#, no-c-format
+msgid "Factory and manager components"
+msgstr "Componentes de administración y fábrica"
+
+#. Tag: para
+#: Concepts.xml:546
+#, no-c-format
+msgid ""
+"We often need to work with objects that are not Seam components. But we "
+"still want to be able to inject them into our components using <literal>@In</"
+"literal> and use them in value and method binding expressions, etc. "
+"Sometimes, we even need to tie them into the Seam context lifecycle "
+"(<literal>@Destroy</literal>, for example). So the Seam contexts can contain "
+"objects which are not Seam components, and Seam provides a couple of nice "
+"features that make it easier to work with non-component objects bound to "
+"contexts."
+msgstr ""
+"Con frecuencia necesitamos trabajar con objetos que no son componentes Seam. "
+"Pero queremos tener la habilidad para inyectarlos en nuestros componentes "
+"utilizando <literal>@In</literal> y utilizarlos en expresiones de "
+"vinculación de métodos y valores, etc. A veces incluso necesitamos "
+"vincularlos al ciclo de vida del contexto Seam (por ejemplo, "
+"<literal>@Destroy</literal>). Así que los contextos Seam puede contener "
+"objetos que no son componentes Seam y Seam proporciona un par de buenas "
+"características que facilitan trabajar con objetos sin componentes "
+"vinculados a contextos."
+
+#. Tag: para
+#: Concepts.xml:549
+#, no-c-format
+msgid ""
+"The <emphasis>factory component pattern</emphasis> lets a Seam component act "
+"as the instantiator for a non-component object. A <emphasis>factory method</"
+"emphasis> will be called when a context variable is referenced but has no "
+"value bound to it. We define factory methods using the <literal>@Factory</"
+"literal> annotation. The factory method binds a value to the context "
+"variable, and determines the scope of the bound value. There are two styles "
+"of factory method. The first style returns a value, which is bound to the "
+"context by Seam:"
+msgstr ""
+"El <emphasis>patrón de componentes de fábrica</emphasis> deja que un "
+"componente Seam actúe como el instanciador para un objeto sin componentes. "
+"Se llamará a un <emphasis>método de fábrica</emphasis> cuando se referencia "
+"una variable de contexto pero no tiene valor vinculado a este. Definimos "
+"métodos de fábrica utilizando la anotación <literal>@Factory</literal>. El "
+"método de fábrica vincula un valor a la variable de contexto y determina el "
+"ámbito del valor vinculado. Hay dos estilos de método de fábrica. El primer "
+"estilo devuelve un valor, el cual está vinculado al contexto por Seam:"
+
+#. Tag: programlisting
+#: Concepts.xml:552
+#, no-c-format
+msgid ""
+"@Factory(scope=CONVERSATION)\n"
+"public List&lt;Customer&gt; getCustomerList() { \n"
+"    return ... ;\n"
+"}"
+msgstr ""
+"@Factory(scope=CONVERSATION)\n"
+"public List&lt;Customer&gt; getCustomerList() { \n"
+"    return ... ;\n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:553
+#, no-c-format
+msgid ""
+"The second style is a method of type <literal>void</literal> which binds the "
+"value to the context variable itself:"
+msgstr ""
+"El segundo estilo es un método de tipo <literal>void</literal> el cual "
+"vincula el valor a la variable de contexto misma:"
+
+#. Tag: programlisting
+#: Concepts.xml:556
+#, no-c-format
+msgid ""
+"@DataModel List&lt;Customer&gt; customerList;\n"
+"\n"
+"@Factory(\"customerList\")\n"
+"public void initCustomerList() { \n"
+"    customerList = ...  ;\n"
+"}"
+msgstr ""
+"@DataModel List&lt;Customer&gt; customerList;\n"
+"\n"
+"@Factory(\"customerList\")\n"
+"public void initCustomerList() { \n"
+"    customerList = ...  ;\n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:557
+#, no-c-format
+msgid ""
+"In both cases, the factory method is called when we reference the "
+"<literal>customerList</literal> context variable and its value is null, and "
+"then has no further part to play in the lifecycle of the value. An even more "
+"powerful pattern is the <emphasis>manager component pattern</emphasis>. In "
+"this case, we have a Seam component that is bound to a context variable, "
+"that manages the value of the context variable, while remaining invisible to "
+"clients."
+msgstr ""
+"En ambos casos se llama al método de fábrica cuando referenciamos la "
+"variable de contexto <literal>customerList</literal> y su valor es nulo y "
+"después no tiene ningún otro papel en el ciclo de vida del valor. Un patrón "
+"aún más potente es el <emphasis>patrón de componentes de administración</"
+"emphasis>. En este caso, tenemos un componente Seam que se encuentra "
+"vinculado a la variable de contexto que administra el valor de la variable "
+"de contexto mientras permanece invisible a los clientes."
+
+#. Tag: para
+#: Concepts.xml:560
+#, no-c-format
+msgid ""
+"A manager component is any component with an <literal>@Unwrap</literal> "
+"method. This method returns the value that will be visable to clients, and "
+"is called <emphasis>every time</emphasis> a context variable is referenced."
+msgstr ""
+"Un componente de administración es cualquier componente con un método "
+"<literal>@Unwrap</literal>. Este método devuelve el valor que será visible a "
+"los clientes y se llama <emphasis>cada vez</emphasis> que se hace referencia "
+"a una variable de contexto."
+
+#. Tag: programlisting
+#: Concepts.xml:563
+#, no-c-format
+msgid ""
+"@Name(\"customerList\")\n"
+"@Scope(CONVERSATION)\n"
+"public class CustomerListManager\n"
+"{\n"
+"    ...\n"
+"    \n"
+"    @Unwrap\n"
+"    public List&lt;Customer&gt; getCustomerList() { \n"
+"        return ... ;\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"customerList\")\n"
+"@Scope(CONVERSATION)\n"
+"public class CustomerListManager\n"
+"{\n"
+"    ...\n"
+"    \n"
+"    @Unwrap\n"
+"    public List&lt;Customer&gt; getCustomerList() { \n"
+"        return ... ;\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:564
+#, no-c-format
+msgid ""
+"This pattern is especially useful if we have some heavyweight object that "
+"needs a cleanup operation when the context ends. In this case, the manager "
+"component may perform cleanup in the <literal>@Destroy</literal> method."
+msgstr ""
+"Este patrón es especialmente útil si tenemos un objeto de peso pesado que "
+"necesite una operación de limpieza cuando el contexto tiene fin. En este "
+"caso, el componente administrador puede realizar limpiezas en el método "
+"<literal>@Destroy</literal>."
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Configuration.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Configuration.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Configuration.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2310 @@
+# translation of Configuration.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Configuration\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 01:04+0000\n"
+"PO-Revision-Date: 2007-10-19 11:03+1000\n"
+"Last-Translator: Angela Garcia\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Configuration.xml:6
+#, no-c-format
+msgid "Configuring Seam and packaging Seam applications"
+msgstr "Configuración de Seam y empaque de aplicaciones Seam"
+
+#. Tag: para
+#: Configuration.xml:7
+#, no-c-format
+msgid ""
+"Configuration is a very boring topic and an extremely tedious pastime. "
+"Unfortunately, several lines of XML are required to integrate Seam into your "
+"JSF implementation and servlet container. There&#39;s no need to be too put "
+"off by the following sections; you&#39;ll never need to type any of this "
+"stuff yourself, since you can just copy and paste from the example "
+"applications!"
+msgstr ""
+"La configuración es un tema muy aburrido y es un pasatiempo extremadamente "
+"tedioso. Desafortunadamente, se necesitan varias líneas de XML para poder "
+"integrar Seam en su implementación JSF y en su contenedor servlet. No hay "
+"que sentirse desalentado por las siguientes secciones ya que nunca va a "
+"necesitar escribir nada de esto por sí mismo porque simplemente puede copiar "
+"y pegar de las ¡aplicaciones ejemplo! "
+
+#. Tag: title
+#: Configuration.xml:10
+#, no-c-format
+msgid "Basic Seam configuration"
+msgstr "La configuración básica de Seam"
+
+#. Tag: para
+#: Configuration.xml:11
+#, no-c-format
+msgid ""
+"First, let&#39;s look at the basic configuration that is needed whenever we "
+"use Seam with JSF."
+msgstr ""
+"Primero, vamos a mirar la configuración básica que se necesita cuando "
+"utilizamos Seam con JSF. "
+
+#. Tag: title
+#: Configuration.xml:14
+#, no-c-format
+msgid "Integrating Seam with JSF and your servlet container"
+msgstr "Integración de Seam con JSF y su contenedor servlet"
+
+#. Tag: para
+#: Configuration.xml:15
+#, no-c-format
+msgid ""
+"Seam requires the following entry in your <literal>web.xml</literal> file:"
+msgstr ""
+"Seam requiere la siguiente entrada en su archivo <literal>web.xml</literal>:"
+
+#. Tag: programlisting
+#: Configuration.xml:18
+#, no-c-format
+msgid ""
+"&lt;listener&gt;\n"
+"    &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/listener-"
+"class&gt;\n"
+"&lt;/listener&gt;"
+msgstr ""
+"&lt;listener&gt;\n"
+"    &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/listener-"
+"class&gt;\n"
+"&lt;/listener&gt;"
+
+#. Tag: para
+#: Configuration.xml:19
+#, no-c-format
+msgid ""
+"This listener is responsible for bootstrapping Seam, and for destroying "
+"session and application contexts."
+msgstr ""
+"Este escucha es el responsable de realizar bootstrap en Seam y de destruir "
+"los contextos de aplicación y de sesión."
+
+#. Tag: para
+#: Configuration.xml:22
+#, no-c-format
+msgid ""
+"To integrate with the JSF request lifecycle, we also need a JSF "
+"<literal>PhaseListener</literal> registered in in the <literal>faces-config."
+"xml</literal> file:"
+msgstr ""
+"Para integrar con el ciclo de vida de la petición JSF también necesitamos un "
+"<literal>PhaseListener</literal> JSF registrado en el archivo <literal>faces-"
+"config.xml</literal>:"
+
+#. Tag: programlisting
+#: Configuration.xml:25
+#, no-c-format
+msgid ""
+"&lt;lifecycle&gt;\n"
+"    &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-"
+"listener&gt;\n"
+"&lt;/lifecycle&gt;"
+msgstr ""
+"&lt;lifecycle&gt;\n"
+"    &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-"
+"listener&gt;\n"
+"&lt;/lifecycle&gt;"
+
+#. Tag: para
+#: Configuration.xml:26
+#, no-c-format
+msgid ""
+"The actual listener class here varies depending upon how you want to manage "
+"transaction demarcation (more on this below)."
+msgstr ""
+"Aquí la clase de escucha real varía dependiendo de como quiere administrar "
+"la demarcación de transacciones (encontrará más detalles más adelante)."
+
+#. Tag: para
+#: Configuration.xml:29
+#, no-c-format
+msgid ""
+"If you are using Sun&#39;s JSF 1.2 reference implementation, you should also "
+"add this to <literal>faces-config.xml</literal>:"
+msgstr ""
+"Si está utilizando la implementación de referencia JSF 1.2 de Sun también "
+"debe añadir esto a <literal>faces-config.xml</literal>: "
+
+#. Tag: programlisting
+#: Configuration.xml:32
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;el-resolver&gt;org.jboss.seam.jsf.SeamELResolver&lt;/el-"
+"resolver&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+"&lt;application&gt;\n"
+"    &lt;el-resolver&gt;org.jboss.seam.jsf.SeamELResolver&lt;/el-"
+"resolver&gt;\n"
+"&lt;/application&gt;"
+
+#. Tag: para
+#: Configuration.xml:33
+#, no-c-format
+msgid ""
+"(This line should not strictly speaking be necessary, but it works around a "
+"minor bug in the RI.)"
+msgstr ""
+"-Esta línea no es estrictamente necesaria pero es una solución opcional de "
+"un pequeño error en el RI."
+
+#. Tag: para
+#: Configuration.xml:36
+#, no-c-format
+msgid ""
+"Some JSF implementations have a broken implementation of server-side state "
+"saving that interferes with Seam&#39;s conversation propagation. If you have "
+"problems with conversation propagation during form submissions, try "
+"switching to client-side state saving. You&#39;ll need this in <literal>web."
+"xml</literal>:"
+msgstr ""
+"Algunas de las implementaciones JSF tienen una implementación imperfecta del "
+"ahorro de estado del lado del servidor lo que interfiere con la propagación "
+"de la conversación de Seam. Si tiene problemas con la propagación de la "
+"conversación durante durante la presentación de formas trate de cambiar al "
+"ahorro de estado del lado del cliente. Necesitará esto en <literal>web.xml</"
+"literal>:"
+
+#. Tag: programlisting
+#: Configuration.xml:39
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;client&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;client&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+
+#. Tag: title
+#: Configuration.xml:40
+#, no-c-format
+msgid "Seam Resource Servlet"
+msgstr "Seam Resource Servlet"
+
+#. Tag: para
+#: Configuration.xml:41
+#, no-c-format
+msgid ""
+"The Seam Resource Servlet provides resources used by Seam Remoting, captchas "
+"(see the security chapter) and some JSF UI controls. Configuring the Seam "
+"Resource Servlet requires the following entry in <literal>web.xml</literal>:"
+msgstr ""
+"El Seam Resource Servlet proporciona recursos para Seam Remoting, captchas "
+"(consulte el capítulo sobre seguridad) y algunos de los controles JSF UI. "
+"Para poder configurar el Seam Resource Servlet necesita la siguiente entrada "
+"en <literal>web.xml</literal>:"
+
+#. Tag: programlisting
+#: Configuration.xml:44
+#, no-c-format
+msgid ""
+"&lt;servlet&gt;\n"
+"  &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"  &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"    \n"
+"&lt;servlet-mapping&gt;\n"
+"  &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"  &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+msgstr ""
+"&lt;servlet&gt;\n"
+"  &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"  &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"    \n"
+"&lt;servlet-mapping&gt;\n"
+"  &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"  &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+
+#. Tag: title
+#: Configuration.xml:45
+#, no-c-format
+msgid "Seam servlet filters"
+msgstr "Filtros del servlet de Seam"
+
+#. Tag: para
+#: Configuration.xml:46
+#, no-c-format
+msgid ""
+"Seam doesn&#39;t need any servlet filters for basic operation. However, "
+"there are several features which depend upon the use of filters. To make "
+"things easier for you guys, Seam lets you add and configure servlet filters "
+"just like you would configure other built-in Seam components. To take "
+"advantage of this feature, we must first install a master filter in "
+"<literal>web.xml</literal>:"
+msgstr ""
+"Seam no necesita ningún filtro de servlet para la operación básica. Sin "
+"embargo, hay varias características que dependen del uso de filtros. Para "
+"hacerle las cosas más fáciles, Seam le permite añadir y configurar los "
+"filtros del servlet de igual manera en que usted configuraría otros "
+"componentes Seam incorporados. Para sacar ventaja de esta característica "
+"primero debemos instalar un filtro maestro en <literal>web.xml</literal>:"
+
+#. Tag: programlisting
+#: Configuration.xml:49
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;/*&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;"
+msgstr ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;/*&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;"
+
+#. Tag: para
+#: Configuration.xml:50
+#, no-c-format
+msgid "Adding the master filter enables the following built-in filters."
+msgstr ""
+"El añadir el filtro maestro habilita los siguientes filtros incorporados."
+
+#. Tag: title
+#: Configuration.xml:53
+#, no-c-format
+msgid "Exception handling"
+msgstr "Manejo de excepciones"
+
+#. Tag: para
+#: Configuration.xml:54
+#, no-c-format
+msgid ""
+"This filter provides the exception mapping functionality in <literal>pages."
+"xml</literal> (almost all applications will need this). It also takes care "
+"of rolling back uncommitted transactions when uncaught exceptions occur. "
+"(According to the Java EE specification, the web container should do this "
+"automatically, but we&#39;ve found that this behavior cannot be relied upon "
+"in all application servers. And it is certainly not required of plain "
+"servlet engines like Tomcat.)"
+msgstr ""
+"Este filtro proporciona la funcionalidad de mapeo de excepciones en "
+"<literal>pages.xml</literal> (casi todas las aplicaciones necesitarán esto). "
+"También se encarga de repetir transacciones que no han sido guardadas cuando "
+"tienen lugar excepciones no atrapadas (de acuerdo con la especificación Java "
+"EE, el contenedor web debe hacer esto automáticamente pero nos hemos "
+"encontrado con que este comportamiento no puede depender de todos los "
+"servidores de aplicaciones y ciertamente no se requiere para máquinas "
+"servelt como Tomcat). "
+
+#. Tag: para
+#: Configuration.xml:57
+#, no-c-format
+msgid ""
+"By default, the exception handling filter will process all requests, however "
+"this behavior may be adjusted by adding a <literal>&lt;web:exception-"
+"filter&gt;</literal> entry to <literal>components.xml</literal>, as shown in "
+"this example:"
+msgstr ""
+"Por defecto, el filtro de manejo de excepciones procesará todas las "
+"peticiones; sin embargo, este comportamiento se puede ajustar añadiendo una "
+"entrada <literal>&lt;web:exception-filter&gt;</literal> a "
+"<literal>components.xml</literal> como se muestra en este ejemplo:"
+
+#. Tag: programlisting
+#: Configuration.xml:60
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:web=\"http://jboss.com/products/seam/web\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                                                      http://jboss.com/"
+"products/seam/core-1.2.xsd\n"
+"                 http://jboss.com/products/seam/components \n"
+"                                                      http://jboss.com/"
+"products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/web \n"
+"                                                      http://jboss.com/"
+"products/seam/web-1.2.xsd\"&gt;\n"
+"\n"
+"    &lt;web:exception-filter url-pattern=\"*.seam\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:web=\"http://jboss.com/products/seam/web\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                                                      http://jboss.com/"
+"products/seam/core-1.2.xsd\n"
+"                 http://jboss.com/products/seam/components \n"
+"                                                      http://jboss.com/"
+"products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/web \n"
+"                                                      http://jboss.com/"
+"products/seam/web-1.2.xsd\"&gt;\n"
+"\n"
+"    &lt;web:exception-filter url-pattern=\"*.seam\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Configuration.xml:63 Configuration.xml:78 Configuration.xml:100
+#: Configuration.xml:125
+#, no-c-format
+msgid ""
+"<literal>url-pattern</literal> &mdash; Used to specify which requests are "
+"filtered, the default is all requests."
+msgstr ""
+"<literal>url-pattern</literal> &mdash; se utiliza para especicar que "
+"peticiones son filtradas, por defecto son todas las peticiones."
+
+#. Tag: title
+#: Configuration.xml:68
+#, no-c-format
+msgid "Conversation propagation with redirects"
+msgstr "La propagación de conversaciones con redireccionamiento"
+
+#. Tag: para
+#: Configuration.xml:69
+#, no-c-format
+msgid ""
+"This filter allows Seam to propagate the conversation context across browser "
+"redirects. It intercepts any browser redirects and adds a request parameter "
+"that specifies the Seam conversation identifier."
+msgstr ""
+"Este filtro le permite a Seam propagar el contexto de conversación a través "
+"de redireccionamientos del navegador. Intercepta cualquier "
+"redireccionamiento del navegador y añade un parámetro de petición que "
+"especifica el identificador de conversaciones Seam. "
+
+#. Tag: para
+#: Configuration.xml:72
+#, no-c-format
+msgid ""
+"The redirect filter will process all requests by default, but this behavior "
+"can also be adjusted in <literal>components.xml</literal>:"
+msgstr ""
+"El filtro de redireccionamientos procesará todas las peticiones por defecto "
+"pero este comportamiento también se puede ajustar en <literal>components."
+"xml</literal>:"
+
+#. Tag: programlisting
+#: Configuration.xml:75
+#, no-c-format
+msgid "&lt;web:redirect-filter url-pattern=\"*.seam\"/&gt;"
+msgstr "&lt;web:redirect-filter url-pattern=\"*.seam\"/&gt;"
+
+#. Tag: title
+#: Configuration.xml:83
+#, no-c-format
+msgid "Multipart form submissions"
+msgstr "Presentación de formas con múltiples partes"
+
+#. Tag: para
+#: Configuration.xml:84
+#, no-c-format
+msgid ""
+"This feature is necessary when using the Seam file upload JSF control. It "
+"detects multipart form requests and processes them according to the "
+"multipart/form-data specification (RFC-2388). To override the default "
+"settings, add the following entry to <literal>components.xml</literal>:"
+msgstr ""
+"Esta característica es necesaria al utilizar el control JSF de carga de "
+"archivos Seam. Detecta peticiones de formas con múltiples partes y las "
+"procesa de acuerdo con la especificación de datos de la forma con múltiples "
+"partes (RFC-2388). Para sobrescribir la configuración predeterminada añada "
+"la siguiente entrada a <literal>components.xml</literal>:"
+
+#. Tag: programlisting
+#: Configuration.xml:87
+#, no-c-format
+msgid ""
+"&lt;web:multipart-filter create-temp-files=\"true\" \n"
+"        max-request-size=\"1000000\" \n"
+"        url-pattern=\"*.seam\"/&gt;"
+msgstr ""
+"&lt;web:multipart-filter create-temp-files=\"true\" \n"
+"        max-request-size=\"1000000\" \n"
+"        url-pattern=\"*.seam\"/&gt;"
+
+#. Tag: para
+#: Configuration.xml:90
+#, no-c-format
+msgid ""
+"<literal>create-temp-files</literal> &mdash; If set to <literal>true</"
+"literal>, uploaded files are written to a temporary file (instead of held in "
+"memory). This may be an important consideration if large file uploads are "
+"expected. The default setting is <literal>false</literal>."
+msgstr ""
+"<literal>create-temp-files</literal> &mdash; Si está configurada como "
+"<literal>true</literal>, los archivos cargados se escriben a un archivo "
+"temporal (en vez de mantenerse en la memoria). Este puede ser un punto "
+"importante a tomar en consideración si espera cargar archivos grandes. La "
+"configuración por defecto es <literal>false</literal>."
+
+#. Tag: para
+#: Configuration.xml:95
+#, no-c-format
+msgid ""
+"<literal>max-request-size</literal> &mdash; If the size of a file upload "
+"request (determined by reading the <literal>Content-Length</literal> header "
+"in the request) exceeds this value, the request will be aborted. The default "
+"setting is 0 (no size limit)."
+msgstr ""
+"<literal>max-request-size</literal> &mdash; Si el tamaño de una petición "
+"para cargar un archivo (determinado al leer la cabecera <literal>Content-"
+"Length</literal> en la petición) sobrepasa este valor se abortará la "
+"petición. La configuración por defecto es 0 (sin límite de tamaño)."
+
+#. Tag: title
+#: Configuration.xml:105
+#, no-c-format
+msgid "Character encoding"
+msgstr "Codificación de caracteres"
+
+#. Tag: para
+#: Configuration.xml:106
+#, no-c-format
+msgid "Sets the character encoding of submitted form data."
+msgstr ""
+"Configura la codificación de caracteres de datos en los formularios "
+"presentados."
+
+#. Tag: para
+#: Configuration.xml:109 Configuration.xml:137
+#, no-c-format
+msgid ""
+"This filter is not installed by default and requires an entry in "
+"<literal>components.xml</literal> to enable it:"
+msgstr ""
+"Este filtro no se instala por defecto y requiere una entrada en "
+"<literal>components.xml</literal> para habilitarlo: "
+
+#. Tag: programlisting
+#: Configuration.xml:112
+#, no-c-format
+msgid ""
+"&lt;web:character-encoding-filter encoding=\"UTF-16\" \n"
+"        override-client=\"true\" \n"
+"        url-pattern=\"*.seam\"/&gt;"
+msgstr ""
+"&lt;web:character-encoding-filter encoding=\"UTF-16\" \n"
+"        override-client=\"true\" \n"
+"        url-pattern=\"*.seam\"/&gt;"
+
+#. Tag: para
+#: Configuration.xml:115
+#, no-c-format
+msgid "<literal>encoding</literal> &mdash; The encoding to use."
+msgstr "<literal>encoding</literal> &mdash; La codificación a utilizar."
+
+#. Tag: para
+#: Configuration.xml:120
+#, no-c-format
+msgid ""
+"<literal>override-client</literal> &mdash; If this is set to <literal>true</"
+"literal>, the request encoding will be set to whatever is specified by "
+"<literal>encoding</literal> no matter whether the request already specifies "
+"an encoding or not. If set to <literal>false</literal>, the request encoding "
+"will only be set if the request doesn&#39;t already specify an encoding. The "
+"default setting is <literal>false</literal>."
+msgstr ""
+"<literal>override-client</literal> &mdash; Si está configurado como "
+"<literal>true</literal>, la codificación de la petición será configurada a "
+"lo que <literal>encoding</literal> especifique sin importar que la petición "
+"ya especifique una codificación o no. Si se configura como <literal>false</"
+"literal>, la codificación de la petición sólamente será configurada si la "
+"petición no especifica previamente una codificación. La configuración "
+"predeterminada es <literal>false</literal>. "
+
+#. Tag: title
+#: Configuration.xml:130
+#, no-c-format
+msgid "Context management for custom servlets"
+msgstr "La administración de contexto para servlets personalizados"
+
+#. Tag: para
+#: Configuration.xml:131
+#, no-c-format
+msgid ""
+"Requests sent direct to some servlet other than the JSF servlet are not "
+"processed through the JSF lifecycle, so Seam provides a servlet filter that "
+"can be applied to any other servlet that needs access to Seam components."
+msgstr ""
+"Las peticiones enviadas directamente a algún servlet diferente del servlet "
+"JSF no se procesan a través del ciclo de vida JSF así que Seam proporciona "
+"un filtro servlet que se puede aplicar a cualquier otro servlet que necesite "
+"acceso a los componentes Seam."
+
+#. Tag: para
+#: Configuration.xml:134
+#, no-c-format
+msgid ""
+"This filter allows custom servlets to interact with the Seam contexts. It "
+"sets up the Seam contexts at the beginning of each request, and tears them "
+"down at the end of the request. You should make sure that this filter is "
+"<emphasis>never</emphasis> applied to the JSF <literal>FacesServlet</"
+"literal>. Seam uses the phase listener for context management in a JSF "
+"request."
+msgstr ""
+"Este filtro le permite a los servlets personalizados interactuar con los "
+"contextos Seam. Configura los contextos Seam al principio de cada petición y "
+"los destruye al final de esta. Debe asegurarse de que este filtro "
+"<emphasis>nunca</emphasis> se aplique al <literal>FacesServlet</literal> de "
+"JSF. Seam utiliza el escucha de fases para la administración de contexto en "
+"una petición JSF. "
+
+#. Tag: programlisting
+#: Configuration.xml:140
+#, no-c-format
+msgid "&lt;web:context-filter url-pattern=\"/media/*\"/&gt;"
+msgstr "&lt;web:context-filter url-pattern=\"/media/*\"/&gt;"
+
+#. Tag: para
+#: Configuration.xml:143
+#, no-c-format
+msgid ""
+"<literal>url-pattern</literal> &mdash; Used to specify which requests are "
+"filtered, the default is all requests. If the url-pattern is specified for "
+"the context filter, then the filter will be enabled (unless explicitly "
+"disabled)."
+msgstr ""
+"<literal>url-pattern</literal> &mdash; Se utiliza para especificar que "
+"peticiones se filtran, por defecto se aplica a todas las peticiones. Si el "
+"patrón url se especifica para el filtro de contexto entonces el filtro se "
+"habilitará ( a menos que se desactive explícitamente)."
+
+#. Tag: para
+#: Configuration.xml:148
+#, no-c-format
+msgid ""
+"The context filter expects to find the conversation id of any conversation "
+"context in a request parameter named <literal>conversationId</literal>. You "
+"are responsible for ensuring that it gets sent in the request."
+msgstr ""
+"El filtro de contexto espera poder encontrar el id de conversación de "
+"cualquier contexto de conversación en un parámetro de petición llamado "
+"<literal>conversationId</literal>. Usted es el responsable de asegurarse de "
+"que es enviado en la petición."
+
+#. Tag: para
+#: Configuration.xml:151
+#, no-c-format
+msgid ""
+"You are also responsible for ensuring propagation of any new conversation id "
+"back to the client. Seam exposes the conversation id as a property of the "
+"built in component <literal>conversation</literal>."
+msgstr ""
+"También es responsable de asegurarse de que la propagación de cualquier id "
+"de conversación nuevo regrese al cliente. Seam expone el id de conversación "
+"como una propiedad del componente incorporado <literal>conversation</"
+"literal>."
+
+#. Tag: title
+#: Configuration.xml:154
+#, no-c-format
+msgid "Integrating Seam with your EJB container"
+msgstr "Integración de Seam con su contenedor EJB"
+
+#. Tag: para
+#: Configuration.xml:155
+#, no-c-format
+msgid ""
+"We need to apply the <literal>SeamInterceptor</literal> to our Seam "
+"components. The simplest way to do this is to add the following interceptor "
+"binding to the <literal>&lt;assembly-descriptor&gt;</literal> in "
+"<literal>ejb-jar.xml</literal>:"
+msgstr ""
+"Necesitamos aplicar el <literal>SeamInterceptor</literal> a nuestros "
+"componentes Seam. La manera más simple de lograr esto es añadir la siguiente "
+"vinculación de interceptor al <literal>&lt;assembly-descriptor&gt;</literal> "
+"en <literal>ejb-jar.xml</literal>:"
+
+#. Tag: programlisting
+#: Configuration.xml:158
+#, no-c-format
+msgid ""
+"&lt;interceptor-binding&gt;\n"
+"    &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"    &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"&lt;/interceptor-binding&gt;"
+msgstr ""
+"&lt;interceptor-binding&gt;\n"
+"    &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"    &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"&lt;/interceptor-binding&gt;"
+
+#. Tag: para
+#: Configuration.xml:159
+#, no-c-format
+msgid ""
+"Seam needs to know where to go to find session beans in JNDI. One way to do "
+"this is specify the <literal>@JndiName</literal> annotation on every session "
+"bean Seam component. However, this is quite tedious. A better approach is to "
+"specify a pattern that Seam can use to calculate the JNDI name from the EJB "
+"name. Unfortunately, there is no standard mapping to global JNDI defined in "
+"the EJB3 specification, so this mapping is vendor-specific. We usually "
+"specify this option in <literal>components.xml</literal>."
+msgstr ""
+"Seam necesita saber a donde ir para poder encontrar los beans de sesión en "
+"JNDI. Una manera de lograr esto es especificar la anotación "
+"<literal>@JndiName</literal> en todo componente Seam de bean de sesión. Sin "
+"embargo, esto es bastante engorroso. Un mejor enfoque es especificar un "
+"patrón que Seam pueda utilizar para calcular el nombre JNDI desde el nombre "
+"EJB. Desafortunadamente, no hay un mapeo estándar al JNDI definido en la "
+"especificación EJB3 así que el mapeo es especifico del vendedor. Usualmente "
+"especificamos esta opción en <literal>components.xml</literal>."
+
+#. Tag: para
+#: Configuration.xml:162
+#, no-c-format
+msgid "For JBoss AS, the following pattern is correct:"
+msgstr "El siguiente patrón es correcto para JBoss AS:"
+
+#. Tag: programlisting
+#: Configuration.xml:165
+#, no-c-format
+msgid "&lt;core:init jndi-name=\"myEarName/#{ejbName}/local\" /&gt;"
+msgstr "&lt;core:init jndi-name=\"myEarName/#{ejbName}/local\" /&gt;"
+
+#. Tag: para
+#: Configuration.xml:166
+#, no-c-format
+msgid ""
+"Where <literal>myEarName</literal> is the name of the EAR in which the bean "
+"is deployed."
+msgstr ""
+"En donde <literal>myEarName</literal> es el nombre del EAR en el que se "
+"despliega el bean."
+
+#. Tag: para
+#: Configuration.xml:169
+#, no-c-format
+msgid ""
+"Outside the context of an EAR (when using the JBoss Embeddable EJB3 "
+"container), the following pattern is the one to use:"
+msgstr ""
+"Fuera del contexto de un EAR (al utilizar el contenedor JBoss Embeddable "
+"EJB3), el siguiente patrón es el que se debe utilizar:"
+
+#. Tag: programlisting
+#: Configuration.xml:172
+#, no-c-format
+msgid "&lt;core:init jndi-name=\"#{ejbName}/local\" /&gt;"
+msgstr "&lt;core:init jndi-name=\"#{ejbName}/local\" /&gt;"
+
+#. Tag: para
+#: Configuration.xml:173
+#, no-c-format
+msgid ""
+"You&#39;ll have to experiment to find the right setting for other "
+"application servers. Note that some servers (such as GlassFish) require you "
+"to specify JNDI names for all EJB components explicitly (and tediously). In "
+"this case, you can pick your own pattern ;-)"
+msgstr ""
+"Tendrá que experimentar para poder encontrar la configuración apropiada para "
+"los otros servidores de aplicaciones. Observe que algunos servidores (como "
+"GlassFish) requieren que especifique nombres JNDI para todos los componentes "
+"EJB demanera explícita (y tediosa). En este caso puede escoger su propio "
+"patrón. "
+
+#. Tag: title
+#: Configuration.xml:176
+#, no-c-format
+msgid "Using facelets"
+msgstr "Uso de facelets"
+
+#. Tag: para
+#: Configuration.xml:177
+#, no-c-format
+msgid ""
+"If you want follow our advice and use facelets instead of JSP, add the "
+"following lines to <literal>faces-config.xml</literal>:"
+msgstr ""
+"Si quiere seguir nuestro consejo de utilizar facelets en vez de JSP añada "
+"las siguientes líneas a <literal>faces-config.xml</literal>:"
+
+#. Tag: programlisting
+#: Configuration.xml:180
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;view-handler&gt;com.sun.facelets.FaceletViewHandler&lt;/view-"
+"handler&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+"&lt;application&gt;\n"
+"    &lt;view-handler&gt;com.sun.facelets.FaceletViewHandler&lt;/view-"
+"handler&gt;\n"
+"&lt;/application&gt;"
+
+#. Tag: para
+#: Configuration.xml:181
+#, no-c-format
+msgid "And the following lines to <literal>web.xml</literal>:"
+msgstr "y las siguientes líneas a <literal>web.xml</literal>:"
+
+#. Tag: programlisting
+#: Configuration.xml:184
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;javax.faces.DEFAULT_SUFFIX&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;.xhtml&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;javax.faces.DEFAULT_SUFFIX&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;.xhtml&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+
+#. Tag: title
+#: Configuration.xml:185
+#, no-c-format
+msgid "Don&#39;t forget!"
+msgstr "¡No se le olvide! "
+
+#. Tag: para
+#: Configuration.xml:186
+#, no-c-format
+msgid ""
+"There is one final item you need to know about. You must place a "
+"<literal>seam.properties</literal>, <literal>META-INF/seam.properties</"
+"literal> or <literal>META-INF/components.xml</literal> file in any archive "
+"in which your Seam components are deployed (even an empty properties file "
+"will do). At startup, Seam will scan any archives with <literal>seam."
+"properties</literal> files for seam components."
+msgstr ""
+"Hay un último aspecto del cual necesita estar conciente: debe poner un "
+"archivo <literal>seam.properties</literal>, <literal>META-INF/seam."
+"properties</literal> o <literal>META-INF/components.xml</literal> en "
+"cualquier archivo en donde se desplieguen sus componentes Seam (inclusive "
+"sirve un archivo de propiedades vacio). Al arrancar Seam escaneará los "
+"ficheros con archivos <literal>seam.properties</literal> en busca de "
+"componentes seam."
+
+#. Tag: para
+#: Configuration.xml:189
+#, no-c-format
+msgid ""
+"In a web archive (WAR) file, you must place a <literal>seam.properties</"
+"literal> file in the <literal>WEB-INF/classes</literal> directory if you "
+"have any Seam components included here."
+msgstr ""
+"En un archivo (WAR) fichero web debe poner un archivo <literal>seam."
+"properties</literal> en el directorio <literal>WEB-INF/classes</literal> si "
+"tiene algún componente Seam incluido aquí."
+
+#. Tag: para
+#: Configuration.xml:192
+#, no-c-format
+msgid ""
+"That&#39;s why all the Seam examples have an empty <literal>seam.properties</"
+"literal> file. You can&#39;t just delete this file and expect everything to "
+"still work!"
+msgstr ""
+"Esa es la razón por la cual los ejemplos Seam cuentan con un archivo "
+"<literal>seam.properties</literal> vacío. No puede borrar este archivo y "
+"esperar que ¡todo funcione! "
+
+#. Tag: para
+#: Configuration.xml:195
+#, no-c-format
+msgid ""
+"You might think this is silly and what kind of idiot framework designers "
+"would make an empty file affect the behavior of their software?? Well, this "
+"is a workaround for a limitation of the JVM&mdash;if we didn&#39;t use this "
+"mechanism, our next best option would be to force you to list every "
+"component explicitly in <literal>components.xml</literal>, just like some "
+"other competing frameworks do! I think you&#39;ll like our way better."
+msgstr ""
+"Puede que piense que esto es tonto y ¿qué clase de diseñadores de marcos de "
+"trabajo harían que un archivo vacío afectara el comportamiento de su "
+"software? Pues bien, este es una solución provisional para una limitación de "
+"la MVJ - si no utilizaramos este mecanismo, la siguiente mejor opción sería "
+"forzarle a que enumere todo componente de manera explícita en "
+"<literal>components.xml</literal> de igual forma que los otros marcos de "
+"trabajo de la ¡competencia lo hacen! Creo que le va a gustar más nuestro "
+"método. "
+
+#. Tag: title
+#: Configuration.xml:198
+#, no-c-format
+msgid "Configuring Seam in Java EE 5"
+msgstr "Configuración de Seam en Java EE 5"
+
+#. Tag: para
+#: Configuration.xml:207
+#, no-c-format
+msgid ""
+"If you&#39;re running in a Java EE 5 environment, this is all the "
+"configuration required to start using Seam!"
+msgstr ""
+"Si está ejecutando en un entorno Java EE 5 esta es toda la configuración que "
+"necesita para poder empezar a utilizar ¡Seam! "
+
+#. Tag: title
+#: Configuration.xml:210 Configuration.xml:276 Configuration.xml:321
+#: Configuration.xml:360 Configuration.xml:377
+#, no-c-format
+msgid "Packaging"
+msgstr "Empaque "
+
+#. Tag: para
+#: Configuration.xml:211
+#, no-c-format
+msgid ""
+"Once you&#39;ve packaged all this stuff together into an EAR, the archive "
+"structure will look something like this:"
+msgstr ""
+"Una vez que ha empacado todo esto junto en un EAR, la estructura del fichero "
+"se verá de manera similar a esto: "
+
+#. Tag: programlisting
+#: Configuration.xml:214
+#, no-c-format
+msgid ""
+"my-application.ear/\n"
+"    jboss-seam.jar\n"
+"    el-api.jar\n"
+"    el-ri.jar\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"        application.xml\n"
+"    my-application.war/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"        WEB-INF/\n"
+"            web.xml\n"
+"            components.xml\n"
+"            faces-config.xml\n"
+"            lib/\n"
+"                jsf-facelets.jar\n"
+"                jboss-seam-ui.jar\n"
+"        login.jsp\n"
+"        register.jsp\n"
+"        ...\n"
+"    my-application.jar/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"            persistence.xml\n"
+"        seam.properties\n"
+"        org/\n"
+"            jboss/\n"
+"                myapplication/\n"
+"                    User.class\n"
+"                    Login.class\n"
+"                    LoginBean.class\n"
+"                    Register.class\n"
+"                    RegisterBean.class\n"
+"                    ..."
+msgstr ""
+"my-application.ear/\n"
+"    jboss-seam.jar\n"
+"    el-api.jar\n"
+"    el-ri.jar\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"        application.xml\n"
+"    my-application.war/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"        WEB-INF/\n"
+"            web.xml\n"
+"            components.xml\n"
+"            faces-config.xml\n"
+"            lib/\n"
+"                jsf-facelets.jar\n"
+"                jboss-seam-ui.jar\n"
+"        login.jsp\n"
+"        register.jsp\n"
+"        ...\n"
+"    my-application.jar/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"            persistence.xml\n"
+"        seam.properties\n"
+"        org/\n"
+"            jboss/\n"
+"                myapplication/\n"
+"                    User.class\n"
+"                    Login.class\n"
+"                    LoginBean.class\n"
+"                    Register.class\n"
+"                    RegisterBean.class\n"
+"                    ..."
+
+#. Tag: para
+#: Configuration.xml:215
+#, no-c-format
+msgid ""
+"You must include <literal>jboss-seam.jar</literal>, <literal>el-api.jar</"
+"literal> and <literal>el-ri.jar</literal> in the EAR classpath. Make sure "
+"you reference all of these jars from <literal>application.xml</literal>."
+msgstr ""
+"Tiene que incluir <literal>jboss-seam.jar</literal>, <literal>el-api.jar</"
+"literal> y <literal>el-ri.jar</literal> en la ruta de clase de EAR. "
+"Asegúrese de que referencia todas estas jars desde <literal>application.xml</"
+"literal>."
+
+#. Tag: para
+#: Configuration.xml:218
+#, no-c-format
+msgid ""
+"If you want to use jBPM or Drools, you must include the needed jars in the "
+"EAR classpath. Make sure you reference all of the jars from "
+"<literal>application.xml</literal>."
+msgstr ""
+"Si quiere utilizar jBPM o Drools tiene que incluir las jars necesarias en la "
+"ruta de clase EAR. Asegúrese de referenciar todas las jars desde "
+"<literal>application.xml</literal>."
+
+#. Tag: para
+#: Configuration.xml:221
+#, no-c-format
+msgid ""
+"If you want to use facelets (our recommendation), you must include "
+"<literal>jsf-facelets.jar</literal> in the <literal>WEB-INF/lib</literal> "
+"directory of the WAR."
+msgstr ""
+"Si quiere utilizar facelets (esa es nuestra recomendación) debe incluir "
+"<literal>jsf-facelets.jar</literal> en el directorio <literal>WEB-INF/lib</"
+"literal> del WAR."
+
+#. Tag: para
+#: Configuration.xml:224
+#, no-c-format
+msgid ""
+"If you want to use the Seam tag library (most Seam applications do), you "
+"must include <literal>jboss-seam-ui.jar</literal> in the <literal>WEB-INF/"
+"lib</literal> directory of the WAR. If you want to use the PDF or email tag "
+"libraries, you need to put <literal>jboss-seam-pdf.jar</literal> or "
+"<literal>jboss-seam-mail.jar</literal> in <literal>WEB-INF/lib</literal>."
+msgstr ""
+"Si quiere utilizar la biblioteca tag de Seam (la mayoría de las aplicaciones "
+"Seam lo hacen) debe incluir <literal>jboss-seam-ui.jar</literal> en el "
+"directorio <literal>WEB-INF/lib</literal> del WAR. Si quiere utilizar el PDF "
+"o la bibliotecas tag de email necesita poner <literal>jboss-seam-pdf.jar</"
+"literal> o <literal>jboss-seam-mail.jar</literal> en <literal>WEB-INF/lib</"
+"literal>."
+
+#. Tag: para
+#: Configuration.xml:227
+#, no-c-format
+msgid ""
+"If you want to use the Seam debug page (only works for applications using "
+"facelets), you must include <literal>jboss-seam-debug.jar</literal> in the "
+"<literal>WEB-INF/lib</literal> directory of the WAR."
+msgstr ""
+"Si quiere utilizar la página de depuración de Seam (sólo funciona para "
+"aplicaciones que utilizan facelets) debe incluir <literal>jboss-seam-debug."
+"jar</literal> en el directorio <literal>WEB-INF/lib</literal> del WAR."
+
+#. Tag: para
+#: Configuration.xml:230
+#, no-c-format
+msgid ""
+"Seam ships with several example applications that are deployable in any Java "
+"EE container that supports EJB 3.0."
+msgstr ""
+"Seam se envía junto con varias aplicaciones de ejemplo que se pueden "
+"desplegar en cualquier contenedor Java EE que soporte EJB 3.0."
+
+#. Tag: para
+#: Configuration.xml:233
+#, no-c-format
+msgid ""
+"I really wish that was all there was to say on the topic of configuration "
+"but unfortunately we&#39;re only about a third of the way there. If you&#39;"
+"re too overwhelmed by all this tedious configuration stuff, feel free to "
+"skip over the rest of this section and come back to it later."
+msgstr ""
+"En realidad me gustaría decir que eso es todo lo que necesitamos saber en "
+"relación con el tema de la configuración pero en realidad solo vamos por una "
+"tercera parte. Si se encuentra muy agobiado por toda esta tediosa "
+"configuración tiene la opción de saltarse el resto de esta sección y "
+"regresar a ella después."
+
+#. Tag: title
+#: Configuration.xml:237
+#, no-c-format
+msgid "Configuring Seam in Java SE, with the JBoss Embeddable EJB3 container"
+msgstr ""
+"Configuración de Seam en Java SE con el contenedor JBoss Embeddable EJB3"
+
+#. Tag: para
+#: Configuration.xml:238
+#, no-c-format
+msgid ""
+"The JBoss Embeddable EJB3 container lets you run EJB3 components outside the "
+"context of the Java EE 5 application server. This is especially, but not "
+"only, useful for testing."
+msgstr ""
+"El contenedor JBoss Embeddable EJB3 le permite ejecutar los componentes EJB· "
+"fuera del contexto del servidor de aplicaciones Java EE 5. Esto es "
+"especialmente útil para realizar pruebas pero no sólo para esto."
+
+#. Tag: para
+#: Configuration.xml:241
+#, no-c-format
+msgid ""
+"The Seam booking example application includes a TestNG integration test "
+"suite that runs on the Embeddable EJB3 container."
+msgstr ""
+"La aplicación del ejemplo de la reservación de Seam incluye una suite de "
+"prueba de integración TestNG que ejecuta en el contenedor Embeddable EJB3."
+
+#. Tag: para
+#: Configuration.xml:252
+#, no-c-format
+msgid "The booking example application may even be deployed to Tomcat."
+msgstr ""
+"La aplicación del ejemplo de la reserva incluso se puede desplegar en Tomcat."
+
+#. Tag: title
+#: Configuration.xml:263
+#, no-c-format
+msgid "Installing the Embeddable EJB3 container"
+msgstr "Instalación del contenedor Embeddable EJB3"
+
+#. Tag: para
+#: Configuration.xml:264
+#, no-c-format
+msgid ""
+"Seam ships with a build of the Embeddable EJB3 container in the "
+"<literal>embedded-ejb</literal> directory. To use the Embeddable EJB3 "
+"container with Seam, add the <literal>embedded-ejb/conf</literal> directory, "
+"and all jars in the <literal>lib</literal> and <literal>embedded-ejb/lib</"
+"literal> directories to your classpath. Then, add the following line to "
+"<literal>components.xml</literal>:"
+msgstr ""
+"Seam se envía junto con una construcción del contenedor EJB3 Embeddable en "
+"el directorio <literal>embedded-ejb</literal>. Para utilizar el contenedor "
+"EJB3 Embeddable con Seam añada el directorio <literal>embedded-ejb/conf</"
+"literal> y todas las jars en los directorios <literal>lib</literal> y "
+"<literal>embedded-ejb/lib</literal> a su ruta de clase. Después añada la "
+"siguiente línea a <literal>components.xml</literal>:"
+
+#. Tag: programlisting
+#: Configuration.xml:267
+#, no-c-format
+msgid "&lt;core:ejb /&gt;"
+msgstr "&lt;core:ejb /&gt;"
+
+#. Tag: para
+#: Configuration.xml:268
+#, no-c-format
+msgid ""
+"This setting installs the built-in component named <literal>org.jboss.seam."
+"core.ejb</literal>. This component is responsible for bootstrapping the EJB "
+"container when Seam is started, and shutting it down when the web "
+"application is undeployed."
+msgstr ""
+"Esta configuración instala el componente incorporado llamado <literal>org."
+"jboss.seam.core.ejb</literal>. Este componente es el responsable de "
+"bootstrap el contenedor EJB cuando se incia Seam y de apagarlo cuando se "
+"desinstala la aplicación web."
+
+#. Tag: title
+#: Configuration.xml:271
+#, no-c-format
+msgid "Configuring a datasource with the Embeddable EJB3 container"
+msgstr ""
+"Configuración de una fuente de datos con el contenedor EJB3 Embeddable "
+
+#. Tag: para
+#: Configuration.xml:272
+#, no-c-format
+msgid ""
+"You should refer to the Embeddable EJB3 container documentation for more "
+"information about configuring the container. You&#39;ll probably at least "
+"need to set up your own datasource. Embeddable EJB3 is implemented using the "
+"JBoss Microcontainer, so it&#39;s very easy to add new services to the "
+"minimal set of services provided by default. For example, I can add a new "
+"datasource by putting this <literal>jboss-beans.xml</literal> file in my "
+"classpath:"
+msgstr ""
+"Debe consultar la documentación del contenedor EJB3 Embeddable para obtener "
+"mayor información sobre la configuración del contenedor. Probablemente "
+"necesitará por lo menos configurar su propia fuente de datos. EJB3 "
+"Embeddable se implementa utilizando el JBoss Microcontainer así que es muy "
+"fácil añadir nuevos servicios al grupo mínimo de servicios que se "
+"proporcionan por defecto. Por ejemplo, puedo añadir una nueva fuente de "
+"datos poniendo este archivo <literal>jboss-beans.xml</literal> en mi ruta de "
+"clase: "
+
+#. Tag: programlisting
+#: Configuration.xml:275
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"\n"
+"&lt;deployment xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"urn:jboss:bean-deployer bean-deployer_1_0."
+"xsd\"\n"
+"            xmlns=\"urn:jboss:bean-deployer\"&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasourceBootstrap\"\n"
+"        class=\"org.jboss.resource.adapter.jdbc.local.LocalTxDataSource"
+"\"&gt;\n"
+"      &lt;property name=\"driverClass\"&gt;org.hsqldb.jdbcDriver&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"connectionURL\"&gt;jdbc:hsqldb:.&lt;/property&gt;\n"
+"      &lt;property name=\"userName\"&gt;sa&lt;/property&gt;\n"
+"      &lt;property name=\"jndiName\"&gt;java:/bookingDatasource&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"minSize\"&gt;0&lt;/property&gt;\n"
+"      &lt;property name=\"maxSize\"&gt;10&lt;/property&gt;\n"
+"      &lt;property name=\"blockingTimeout\"&gt;1000&lt;/property&gt;\n"
+"      &lt;property name=\"idleTimeout\"&gt;100000&lt;/property&gt;\n"
+"      &lt;property name=\"transactionManager\"&gt;\n"
+"        &lt;inject bean=\"TransactionManager\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"      &lt;property name=\"cachedConnectionManager\"&gt;\n"
+"        &lt;inject bean=\"CachedConnectionManager\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"      &lt;property name=\"initialContextProperties\"&gt;\n"
+"        &lt;inject bean=\"InitialContextProperties\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasource\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getDatasource\"&gt;\n"
+"         &lt;factory bean=\"bookingDatasourceBootstrap\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"&lt;/deployment&gt;"
+msgstr ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"\n"
+"&lt;deployment xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"urn:jboss:bean-deployer bean-deployer_1_0."
+"xsd\"\n"
+"            xmlns=\"urn:jboss:bean-deployer\"&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasourceBootstrap\"\n"
+"        class=\"org.jboss.resource.adapter.jdbc.local.LocalTxDataSource"
+"\"&gt;\n"
+"      &lt;property name=\"driverClass\"&gt;org.hsqldb.jdbcDriver&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"connectionURL\"&gt;jdbc:hsqldb:.&lt;/property&gt;\n"
+"      &lt;property name=\"userName\"&gt;sa&lt;/property&gt;\n"
+"      &lt;property name=\"jndiName\"&gt;java:/bookingDatasource&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"minSize\"&gt;0&lt;/property&gt;\n"
+"      &lt;property name=\"maxSize\"&gt;10&lt;/property&gt;\n"
+"      &lt;property name=\"blockingTimeout\"&gt;1000&lt;/property&gt;\n"
+"      &lt;property name=\"idleTimeout\"&gt;100000&lt;/property&gt;\n"
+"      &lt;property name=\"transactionManager\"&gt;\n"
+"        &lt;inject bean=\"TransactionManager\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"      &lt;property name=\"cachedConnectionManager\"&gt;\n"
+"        &lt;inject bean=\"CachedConnectionManager\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"      &lt;property name=\"initialContextProperties\"&gt;\n"
+"        &lt;inject bean=\"InitialContextProperties\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasource\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getDatasource\"&gt;\n"
+"         &lt;factory bean=\"bookingDatasourceBootstrap\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"&lt;/deployment&gt;"
+
+#. Tag: para
+#: Configuration.xml:277
+#, no-c-format
+msgid ""
+"The archive structure of a WAR-based deployment on an servlet engine like "
+"Tomcat will look something like this:"
+msgstr ""
+"La estructura del fichero de un despliegue basado en WAR en una máquina "
+"servlet como Tomcat se ve así:"
+
+#. Tag: programlisting
+#: Configuration.xml:280
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            myfaces-api.jar\n"
+"            myfaces-impl.jar\n"
+"            jboss-ejb3.jar\n"
+"            jboss-jca.jar\n"
+"            jboss-j2ee.jar\n"
+"            ...\n"
+"            mc-conf.jar/\n"
+"                ejb3-interceptors-aop.xml\n"
+"                embedded-jboss-beans.xml\n"
+"                default.persistence.properties\n"
+"                jndi.properties\n"
+"                login-config.xml\n"
+"                security-beans.xml\n"
+"                log4j.xml\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                    MANIFEST.MF\n"
+"                    persistence.xml\n"
+"                    jboss-beans.xml\n"
+"                log4j.xml\n"
+"                seam.properties\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            LoginBean.class\n"
+"                            Register.class\n"
+"                            RegisterBean.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            myfaces-api.jar\n"
+"            myfaces-impl.jar\n"
+"            jboss-ejb3.jar\n"
+"            jboss-jca.jar\n"
+"            jboss-j2ee.jar\n"
+"            ...\n"
+"            mc-conf.jar/\n"
+"                ejb3-interceptors-aop.xml\n"
+"                embedded-jboss-beans.xml\n"
+"                default.persistence.properties\n"
+"                jndi.properties\n"
+"                login-config.xml\n"
+"                security-beans.xml\n"
+"                log4j.xml\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                    MANIFEST.MF\n"
+"                    persistence.xml\n"
+"                    jboss-beans.xml\n"
+"                log4j.xml\n"
+"                seam.properties\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            LoginBean.class\n"
+"                            Register.class\n"
+"                            RegisterBean.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+
+#. Tag: para
+#: Configuration.xml:281
+#, no-c-format
+msgid ""
+"The <literal>mc-conf.jar</literal> just contains the standard JBoss "
+"Microcontainer configuration files for Embeddable EJB3. You won&#39;t "
+"usually need to edit these files yourself."
+msgstr ""
+"<literal>mc-conf.jar</literal> simplemente contiene los archivos estándares "
+"de configuración de JBoss Microcontainer para EJB3 Embeddable. Usualmente no "
+"necesitará de modificar estos archivos."
+
+#. Tag: para
+#: Configuration.xml:284
+#, no-c-format
+msgid ""
+"Most of the Seam example applications may be deployed to Tomcat by running "
+"<literal>ant deploy.tomcat</literal>."
+msgstr ""
+"La mayoría de las aplicaciones del ejemplo de Seam se pueden desplegar en "
+"Tomcat ejecutando <literal>ant deploy.tomcat</literal>."
+
+#. Tag: title
+#: Configuration.xml:287
+#, no-c-format
+msgid "Configuring Seam in J2EE"
+msgstr "Configuración de Seam en J2EE"
+
+#. Tag: para
+#: Configuration.xml:288
+#, no-c-format
+msgid ""
+"Seam is useful even if you&#39;re not yet ready to take the plunge into EJB "
+"3.0. In this case you would use Hibernate3 or JPA instead of EJB 3.0 "
+"persistence, and plain JavaBeans instead of session beans. You&#39;ll miss "
+"out on some of the nice features of session beans but it will be very easy "
+"to migrate to EJB 3.0 when you&#39;re ready and, in the meantime, you&#39;ll "
+"be able to take advantage of Seam&#39;s unique declarative state management "
+"architecture."
+msgstr ""
+"Seam es bastante útil incluso si no está listo para meterse de lleno en EJB "
+"3.0. En este caso utilizaría Hibernate3 o JPA en vez de la persitencia EJB "
+"3.0 y también puede utilizar JavaBeans en vez de los beans de sesión. Se "
+"perderá de algunas de las buenas características de los beans de sesión pero "
+"será muy fácil migrar a EJB 3.0 cuando esté listo y mientras tanto podrá "
+"sacar ventaja de la arquitectura de administración del estado declarativo "
+"único de Seam. "
+
+#. Tag: para
+#: Configuration.xml:299
+#, no-c-format
+msgid ""
+"Seam JavaBean components do not provide declarative transaction demarcation "
+"like session beans do. You <emphasis>could</emphasis> manage your "
+"transactions manually using the JTA <literal>UserTransaction</literal> (you "
+"could even implement your own declarative transaction management in a Seam "
+"interceptor). But most applications will use Seam managed transactions when "
+"using Hibernate with JavaBeans. Follow the instructions in the persistence "
+"chapter to install <literal>TransactionalSeamPhaseListener</literal>."
+msgstr ""
+"Los componentes de JavaBean Seam no proporcionan demarcación de "
+"transacciones declarativas mientras que los beans de sesión sí. "
+"<emphasis>Podría</emphasis> administrar sus transacciones manualmente "
+"utilizando el JTA <literal>UserTransaction</literal> (inclusive puede "
+"implementar su propia administración de transacciones declarativas en un "
+"interceptor Seam). Pero la mayoría de las aplicaciones utilizarán "
+"transacciones administradas por Seam al utilizar Hibernate con JavaBeans. "
+"Siga las instrucciones en el capítulo sobre la persistencia para instalar "
+"<literal>TransactionalSeamPhaseListener</literal>."
+
+#. Tag: para
+#: Configuration.xml:302
+#, no-c-format
+msgid ""
+"The Seam distribution includes a version of the booking example application "
+"that uses Hibernate3 and JavaBeans instead of EJB3, and another version that "
+"uses JPA and JavaBeans. These example applications are ready to deploy into "
+"any J2EE application server."
+msgstr ""
+"La distribución Seam incluye una versión de la aplicación del ejemplo de la "
+"reservación que utiliza Hibernate3 y JavaBeans en vez de EJB3 y otra versión "
+"que utiliza JPA y JavaBeans. Estas aplicaciones de ejemplo están listas para "
+"ser desplegadas en cualquier servidor de aplicaciones J2EE."
+
+#. Tag: title
+#: Configuration.xml:305
+#, no-c-format
+msgid "Boostrapping Hibernate in Seam"
+msgstr "Boostrap Hibernate en Seam "
+
+#. Tag: para
+#: Configuration.xml:306
+#, no-c-format
+msgid ""
+"Seam will bootstrap a Hibernate <literal>SessionFactory</literal> from your "
+"<literal>hibernate.cfg.xml</literal> file if you install a built-in "
+"component:"
+msgstr ""
+"Seam realizará un boostrap <literal>SessionFactory</literal> de Hibernate "
+"desde su archivo <literal>hibernate.cfg.xml</literal> si instala un "
+"componente incorporado:"
+
+#. Tag: programlisting
+#: Configuration.xml:309
+#, no-c-format
+msgid ""
+"&lt;core:hibernate-session-factory name=\"hibernateSessionFactory\"/&gt;"
+msgstr ""
+"&lt;core:hibernate-session-factory name=\"hibernateSessionFactory\"/&gt;"
+
+#. Tag: para
+#: Configuration.xml:310
+#, no-c-format
+msgid ""
+"You will also need to configure a <emphasis>managed session</emphasis> if "
+"you want a Seam managed Hibernate <literal>Session</literal> to be available "
+"via injection."
+msgstr ""
+"También necesitará configurar una <emphasis>sesión administrada</emphasis> "
+"si quiere una <literal>Session</literal> Hibernate administrada por Seam "
+"para que esté disponible por medio de inyección."
+
+#. Tag: title
+#: Configuration.xml:313
+#, no-c-format
+msgid "Boostrapping JPA in Seam"
+msgstr "Boostrap JPA en Seam "
+
+#. Tag: para
+#: Configuration.xml:314
+#, no-c-format
+msgid ""
+"Seam will bootstrap a JPA <literal>EntityManagerFactory</literal> from your "
+"<literal>persistence.xml</literal> file if you install this built-in "
+"component:"
+msgstr ""
+"Seam realizará un boostrap <literal>EntityManagerFactory</literal> de JPA "
+"desde su archivo <literal>persistence.xml</literal> si instala este "
+"componente incorporado:"
+
+#. Tag: programlisting
+#: Configuration.xml:317
+#, no-c-format
+msgid "&lt;core:entity-manager-factory name=\"entityManagerFactory\"/&gt;"
+msgstr "&lt;core:entity-manager-factory name=\"entityManagerFactory\"/&gt;"
+
+#. Tag: para
+#: Configuration.xml:318
+#, no-c-format
+msgid ""
+"You will also need to configure a <emphasis>managed persistencece context</"
+"emphasis> if you want a Seam managed JPA <literal>EntityManager</literal> to "
+"be available via injection."
+msgstr ""
+"También necesitará configurar un <emphasis>contexto de persistencia "
+"administrado</emphasis> si quiere un <literal>EntityManager</literal> JPA "
+"administrado por Seam disponible por medio de inyección."
+
+#. Tag: para
+#: Configuration.xml:322
+#, no-c-format
+msgid "We can package our application as a WAR, in the following structure:"
+msgstr ""
+"Podemos empacar nuestra aplicación como un WAR en la siguiente estructura:"
+
+#. Tag: programlisting
+#: Configuration.xml:325
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            hibernate3.jar\n"
+"            hibernate-annotations.jar\n"
+"            ...\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                   MANIFEST.MF\n"
+"                seam.properties\n"
+"                hibernate.cfg.xml\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            Register.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            hibernate3.jar\n"
+"            hibernate-annotations.jar\n"
+"            ...\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                   MANIFEST.MF\n"
+"                seam.properties\n"
+"                hibernate.cfg.xml\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            Register.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+
+#. Tag: para
+#: Configuration.xml:326
+#, no-c-format
+msgid ""
+"If we want to deploy Hibernate in a non-J2EE environment like Tomcat or "
+"TestNG, we need to do a little bit more work."
+msgstr ""
+"Si queremos desplegar Hibernate en un entorno que no es J2EE como Tomcat o "
+"TestNG, necesitamos trabajar un poco más."
+
+#. Tag: title
+#: Configuration.xml:330
+#, no-c-format
+msgid "Configuring Seam in Java SE, with the JBoss Microcontainer"
+msgstr "Configuración de Seam en Java SE con JBoss Microcontainer"
+
+#. Tag: para
+#: Configuration.xml:331
+#, no-c-format
+msgid ""
+"The Seam support for Hibernate and JPA requires JTA and a JCA datasource. If "
+"you are running in a non-EE environment like Tomcat or TestNG you can run "
+"these services, and Hibernate itself, in the JBoss Microcontainer."
+msgstr ""
+"El soporte Seam para Hibernate y JPA requiere JTA y una fuente de datos JCA. "
+"Si está ejecutando en un entorno que no es EE tal como Tomcat o TestNG puede "
+"ejecutar estos servicios junto con Hibernate en JBoss Microcontainer."
+
+#. Tag: para
+#: Configuration.xml:334
+#, no-c-format
+msgid ""
+"You can even deploy the Hibernate and JPA versions of the booking example in "
+"Tomcat."
+msgstr ""
+"Inclusive puede desplegar las versiones Hibernate y JPA del ejemplo de la "
+"reserva en Tomcat."
+
+#. Tag: para
+#: Configuration.xml:345
+#, no-c-format
+msgid ""
+"Seam ships with an example Microcontainer configuration in "
+"<literal>microcontainer/conf/jboss-beans.xml</literal> that provides all the "
+"things you need to run Seam with Hibernate in any non-EE environment. Just "
+"add the <literal>microcontainer/conf</literal> directory, and all jars in "
+"the <literal>lib</literal> and <literal>microcontainer/lib</literal> "
+"directories to your classpath. Refer to the documentation for the JBoss "
+"Microcontainer for more information."
+msgstr ""
+"Seam se envía junto con una configuración de microcontenedor de ejemplo en "
+"<literal>microcontainer/conf/jboss-beans.xml</literal>, la cual proporciona "
+"todas las cosas que necesita saber para ejecutar Seam con Hibernate en "
+"cualquier entorno que no sea EE. Simplemente añada el directorio "
+"<literal>microcontainer/conf</literal> y todas las jars en los directorios "
+"<literal>lib</literal> y <literal>microcontainer/lib</literal> a su ruta de "
+"clase. Si desea obtener más información sobre JBoss Microcontainer consulte "
+"la documentación."
+
+#. Tag: title
+#: Configuration.xml:348
+#, no-c-format
+msgid "Using Hibernate and the JBoss Microcontainer"
+msgstr "Uso de Hibernate y JBoss Microcontainer"
+
+#. Tag: para
+#: Configuration.xml:349
+#, no-c-format
+msgid ""
+"The built-in Seam component named <literal>org.jboss.seam.core."
+"microcontainer</literal> bootstraps the microcontainer. As before, we "
+"probably want to use a Seam managed session."
+msgstr ""
+"El componente Seam incorporado llamado <literal>org.jboss.seam.core."
+"microcontainer</literal> realiza un bootstrap al microcontendor. Como antes "
+"es probable que queramos utilizar una sesión administrada por Seam."
+
+#. Tag: programlisting
+#: Configuration.xml:352
+#, no-c-format
+msgid ""
+"&lt;core:microcontainer/&gt;\n"
+"\n"
+"&lt;core:managed-hibernate-session name=\"bookingDatabase\" auto-create="
+"\"true\"\n"
+"    session-factory-jndi-name=\"java:/bookingSessionFactory\"/&gt;"
+msgstr ""
+"&lt;core:microcontainer/&gt;\n"
+"\n"
+"&lt;core:managed-hibernate-session name=\"bookingDatabase\" auto-create="
+"\"true\"\n"
+"    session-factory-jndi-name=\"java:/bookingSessionFactory\"/&gt;"
+
+#. Tag: para
+#: Configuration.xml:353
+#, no-c-format
+msgid ""
+"Where <literal>java:/bookingSessionFactory</literal> is the name of the "
+"Hibernate session factory specified in <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+"En donde <literal>java:/bookingSessionFactory</literal> es el nombre de la "
+"fábrica de sesiones de Hibernate que se especifica en <literal>hibernate.cfg."
+"xml</literal>."
+
+#. Tag: para
+#: Configuration.xml:356
+#, no-c-format
+msgid ""
+"You&#39;ll need to provide a <literal>jboss-beans.xml</literal> file that "
+"installs JNDI, JTA, your JCA datasource and Hibernate into the "
+"microcontainer:"
+msgstr ""
+"Necesitará proporcionar un archivo <literal>jboss.beans.xml</literal> que "
+"instala JNDI, JTA, su fuente de datos JCA y Hibernate en el microcontendor: "
+
+#. Tag: programlisting
+#: Configuration.xml:359
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"\n"
+"&lt;deployment xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"urn:jboss:bean-deployer bean-deployer_1_0."
+"xsd\"\n"
+"            xmlns=\"urn:jboss:bean-deployer\"&gt;\n"
+"\n"
+"   &lt;bean name=\"Naming\" class=\"org.jnp.server.SingletonNamingServer\"/"
+"&gt;\n"
+"\n"
+"   &lt;bean name=\"TransactionManagerFactory\" \n"
+"      class=\"org.jboss.seam.microcontainer.TransactionManagerFactory\"/"
+"&gt;\n"
+"   &lt;bean name=\"TransactionManager\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getTransactionManager\"&gt;\n"
+"         &lt;factory bean=\"TransactionManagerFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasourceFactory\" class=\"org.jboss.seam."
+"microcontainer.DataSourceFactory\"&gt;\n"
+"      &lt;property name=\"driverClass\"&gt;org.hsqldb.jdbcDriver&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"connectionUrl\"&gt;jdbc:hsqldb:.&lt;/property&gt;\n"
+"      &lt;property name=\"userName\"&gt;sa&lt;/property&gt;\n"
+"      &lt;property name=\"jndiName\"&gt;java:/hibernateDatasource&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"minSize\"&gt;0&lt;/property&gt;\n"
+"      &lt;property name=\"maxSize\"&gt;10&lt;/property&gt;\n"
+"      &lt;property name=\"blockingTimeout\"&gt;1000&lt;/property&gt;\n"
+"      &lt;property name=\"idleTimeout\"&gt;100000&lt;/property&gt;\n"
+"      &lt;property name=\"transactionManager\"&gt;&lt;inject bean="
+"\"TransactionManager\"/&gt;&lt;/property&gt;\n"
+"   &lt;/bean&gt;\n"
+"   &lt;bean name=\"bookingDatasource\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getDataSource\"&gt;\n"
+"         &lt;factory bean=\"bookingDatasourceFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingSessionFactoryFactory\" \n"
+"      class=\"org.jboss.seam.microcontainer.HibernateFactory\"/&gt;\n"
+"   &lt;bean name=\"bookingSessionFactory\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getSessionFactory\"&gt;\n"
+"         &lt;factory bean=\"bookingSessionFactoryFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"      &lt;depends&gt;bookingDatasource&lt;/depends&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"&lt;/deployment&gt;"
+msgstr ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"\n"
+"&lt;deployment xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"urn:jboss:bean-deployer bean-deployer_1_0."
+"xsd\"\n"
+"            xmlns=\"urn:jboss:bean-deployer\"&gt;\n"
+"\n"
+"   &lt;bean name=\"Naming\" class=\"org.jnp.server.SingletonNamingServer\"/"
+"&gt;\n"
+"\n"
+"   &lt;bean name=\"TransactionManagerFactory\" \n"
+"      class=\"org.jboss.seam.microcontainer.TransactionManagerFactory\"/"
+"&gt;\n"
+"   &lt;bean name=\"TransactionManager\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getTransactionManager\"&gt;\n"
+"         &lt;factory bean=\"TransactionManagerFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasourceFactory\" class=\"org.jboss.seam."
+"microcontainer.DataSourceFactory\"&gt;\n"
+"      &lt;property name=\"driverClass\"&gt;org.hsqldb.jdbcDriver&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"connectionUrl\"&gt;jdbc:hsqldb:.&lt;/property&gt;\n"
+"      &lt;property name=\"userName\"&gt;sa&lt;/property&gt;\n"
+"      &lt;property name=\"jndiName\"&gt;java:/hibernateDatasource&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"minSize\"&gt;0&lt;/property&gt;\n"
+"      &lt;property name=\"maxSize\"&gt;10&lt;/property&gt;\n"
+"      &lt;property name=\"blockingTimeout\"&gt;1000&lt;/property&gt;\n"
+"      &lt;property name=\"idleTimeout\"&gt;100000&lt;/property&gt;\n"
+"      &lt;property name=\"transactionManager\"&gt;&lt;inject bean="
+"\"TransactionManager\"/&gt;&lt;/property&gt;\n"
+"   &lt;/bean&gt;\n"
+"   &lt;bean name=\"bookingDatasource\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getDataSource\"&gt;\n"
+"         &lt;factory bean=\"bookingDatasourceFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingSessionFactoryFactory\" \n"
+"      class=\"org.jboss.seam.microcontainer.HibernateFactory\"/&gt;\n"
+"   &lt;bean name=\"bookingSessionFactory\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getSessionFactory\"&gt;\n"
+"         &lt;factory bean=\"bookingSessionFactoryFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"      &lt;depends&gt;bookingDatasource&lt;/depends&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"&lt;/deployment&gt;"
+
+#. Tag: para
+#: Configuration.xml:361
+#, no-c-format
+msgid "The WAR could have the following structure:"
+msgstr "El WAR puede tener la siguiente estructura:"
+
+#. Tag: programlisting
+#: Configuration.xml:364
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            hibernate3.jar\n"
+"            ...\n"
+"            jboss-microcontainer.jar\n"
+"            jboss-jca.jar\n"
+"            ...\n"
+"            myfaces-api.jar\n"
+"            myfaces-impl.jar\n"
+"            mc-conf.jar/\n"
+"                jndi.properties\n"
+"                log4j.xml\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                    MANIFEST.MF\n"
+"                    jboss-beans.xml\n"
+"                seam.properties\n"
+"                hibernate.cfg.xml\n"
+"                log4j.xml\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            Register.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            hibernate3.jar\n"
+"            ...\n"
+"            jboss-microcontainer.jar\n"
+"            jboss-jca.jar\n"
+"            ...\n"
+"            myfaces-api.jar\n"
+"            myfaces-impl.jar\n"
+"            mc-conf.jar/\n"
+"                jndi.properties\n"
+"                log4j.xml\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                    MANIFEST.MF\n"
+"                    jboss-beans.xml\n"
+"                seam.properties\n"
+"                hibernate.cfg.xml\n"
+"                log4j.xml\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            Register.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+
+#. Tag: title
+#: Configuration.xml:365
+#, no-c-format
+msgid "Configuring jBPM in Seam"
+msgstr "Configuración de jBPM en Seam"
+
+#. Tag: para
+#: Configuration.xml:366
+#, no-c-format
+msgid ""
+"Seam&#39;s jBPM integration is not installed by default, so you&#39;ll need "
+"to enable jBPM by installing a built-in component. You&#39;ll also need to "
+"explicitly list your process and pageflow definitions. In "
+"<literal>components.xml</literal>:"
+msgstr ""
+"La integración jBPM de Seam no se instala por defecto así que necesitará "
+"habilitar jBPM instalando un componente incorporado. También necesitará "
+"enumerar explícitamente las definiciones de flujo de página y de sus "
+"procesos en <literal>components.xml</literal>:"
+
+#. Tag: programlisting
+#: Configuration.xml:369
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:pageflow-definitions&gt;\n"
+"        &lt;value&gt;createDocument.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;editDocument.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;approveDocument.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:pageflow-definitions&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;documentLifecycle.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:pageflow-definitions&gt;\n"
+"        &lt;value&gt;createDocument.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;editDocument.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;approveDocument.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:pageflow-definitions&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;documentLifecycle.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+
+#. Tag: para
+#: Configuration.xml:370
+#, no-c-format
+msgid ""
+"No further special configuration is needed if you only have pageflows. If "
+"you do have business process definitions, you need to provide a jBPM "
+"configuration, and a Hibernate configuration for jBPM. The Seam DVD Store "
+"demo includes example <literal>jbpm.cfg.xml</literal> and <literal>hibernate."
+"cfg.xml</literal> files that will work with Seam:"
+msgstr ""
+"No se necesita ninguna otra configuración especial si solamente cuenta con "
+"flujos de página. Si sí tiene definiciones de procesos empresariales "
+"entonces necesita proporcionar una configuración jBPM y una configuración "
+"Hibernate para jBPM. La demostración de la tienda de DVDs incluye ejemplos "
+"de los archivos <literal>jbpm.cfg.xml</literal> y <literal>hibernate.cfg."
+"xml</literal> que funcionarán con Seam:"
+
+#. Tag: programlisting
+#: Configuration.xml:373
+#, no-c-format
+msgid ""
+"&lt;jbpm-configuration&gt;\n"
+"\n"
+"  &lt;jbpm-context&gt;\n"
+"    &lt;service name=\"persistence\"&gt;\n"
+"       &lt;factory&gt;\n"
+"          &lt;bean class=\"org.jbpm.persistence.db."
+"DbPersistenceServiceFactory\"&gt;\n"
+"             &lt;field name=\"isTransactionEnabled\"&gt;&lt;false/&gt;&lt;/"
+"field&gt;\n"
+"          &lt;/bean&gt;\n"
+"       &lt;/factory&gt;\n"
+"    &lt;/service&gt;\n"
+"    &lt;service name=\"message\" factory=\"org.jbpm.msg.db."
+"DbMessageServiceFactory\" /&gt;\n"
+"    &lt;service name=\"scheduler\" factory=\"org.jbpm.scheduler.db."
+"DbSchedulerServiceFactory\" /&gt;\n"
+"    &lt;service name=\"logging\" factory=\"org.jbpm.logging.db."
+"DbLoggingServiceFactory\" /&gt;\n"
+"    &lt;service name=\"authentication\" \n"
+"       factory=\"org.jbpm.security.authentication."
+"DefaultAuthenticationServiceFactory\" /&gt;\n"
+"  &lt;/jbpm-context&gt;\n"
+"\n"
+"&lt;/jbpm-configuration&gt;"
+msgstr ""
+"&lt;jbpm-configuration&gt;\n"
+"\n"
+"  &lt;jbpm-context&gt;\n"
+"    &lt;service name=\"persistence\"&gt;\n"
+"       &lt;factory&gt;\n"
+"          &lt;bean class=\"org.jbpm.persistence.db."
+"DbPersistenceServiceFactory\"&gt;\n"
+"             &lt;field name=\"isTransactionEnabled\"&gt;&lt;false/&gt;&lt;/"
+"field&gt;\n"
+"          &lt;/bean&gt;\n"
+"       &lt;/factory&gt;\n"
+"    &lt;/service&gt;\n"
+"    &lt;service name=\"message\" factory=\"org.jbpm.msg.db."
+"DbMessageServiceFactory\" /&gt;\n"
+"    &lt;service name=\"scheduler\" factory=\"org.jbpm.scheduler.db."
+"DbSchedulerServiceFactory\" /&gt;\n"
+"    &lt;service name=\"logging\" factory=\"org.jbpm.logging.db."
+"DbLoggingServiceFactory\" /&gt;\n"
+"    &lt;service name=\"authentication\" \n"
+"       factory=\"org.jbpm.security.authentication."
+"DefaultAuthenticationServiceFactory\" /&gt;\n"
+"  &lt;/jbpm-context&gt;\n"
+"\n"
+"&lt;/jbpm-configuration&gt;"
+
+#. Tag: para
+#: Configuration.xml:374
+#, no-c-format
+msgid ""
+"The most important thing to notice here is that jBPM transaction control is "
+"disabled. Seam or EJB3 should control the JTA transactions."
+msgstr ""
+"Lo más importante que se debe observar aquí es que el control de "
+"transacciones jBPM se encuentra deshabilitado. Seam o EJB3 deben controlar "
+"las transacciones JTA."
+
+#. Tag: para
+#: Configuration.xml:378
+#, no-c-format
+msgid ""
+"There is not yet any well-defined packaging format for jBPM configuration "
+"and process/pageflow definition files. In the Seam examples we&#39;ve "
+"decided to simply package all these files into the root of the EAR. In "
+"future, we will probably design some other standard packaging format. So the "
+"EAR looks something like this:"
+msgstr ""
+"Todavía no hay un formato de empaque bien definido para los archivos de "
+"definición de procesos/flujo de página y de configuración de jBPM. En los "
+"ejemplos de Seam hemos decidido simplemente empacar todos estos archivos en "
+"la raíz del EAR. En el futuro, probablemente diseñaremos otro formato de "
+"empaque estándar. Así que el EAR se ve algo similar a esto: "
+
+#. Tag: programlisting
+#: Configuration.xml:381
+#, no-c-format
+msgid ""
+"my-application.ear/\n"
+"    jboss-seam.jar\n"
+"    el-api.jar\n"
+"    el-ri.jar\n"
+"    jbpm-3.1.jar\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"        application.xml\n"
+"    my-application.war/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"        WEB-INF/\n"
+"            web.xml\n"
+"            components.xml\n"
+"            faces-config.xml\n"
+"            lib/\n"
+"                jsf-facelets.jar\n"
+"                jboss-seam-ui.jar\n"
+"        login.jsp\n"
+"        register.jsp\n"
+"        ...\n"
+"    my-application.jar/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"            persistence.xml\n"
+"        seam.properties\n"
+"        org/\n"
+"            jboss/\n"
+"                myapplication/\n"
+"                    User.class\n"
+"                    Login.class\n"
+"                    LoginBean.class\n"
+"                    Register.class\n"
+"                    RegisterBean.class\n"
+"                    ...\n"
+"    jbpm.cfg.xml\n"
+"    hibernate.cfg.xml\n"
+"    createDocument.jpdl.xml\n"
+"    editDocument.jpdl.xml\n"
+"    approveDocument.jpdl.xml\n"
+"    documentLifecycle.jpdl.xml"
+msgstr ""
+"my-application.ear/\n"
+"    jboss-seam.jar\n"
+"    el-api.jar\n"
+"    el-ri.jar\n"
+"    jbpm-3.1.jar\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"        application.xml\n"
+"    my-application.war/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"        WEB-INF/\n"
+"            web.xml\n"
+"            components.xml\n"
+"            faces-config.xml\n"
+"            lib/\n"
+"                jsf-facelets.jar\n"
+"                jboss-seam-ui.jar\n"
+"        login.jsp\n"
+"        register.jsp\n"
+"        ...\n"
+"    my-application.jar/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"            persistence.xml\n"
+"        seam.properties\n"
+"        org/\n"
+"            jboss/\n"
+"                myapplication/\n"
+"                    User.class\n"
+"                    Login.class\n"
+"                    LoginBean.class\n"
+"                    Register.class\n"
+"                    RegisterBean.class\n"
+"                    ...\n"
+"    jbpm.cfg.xml\n"
+"    hibernate.cfg.xml\n"
+"    createDocument.jpdl.xml\n"
+"    editDocument.jpdl.xml\n"
+"    approveDocument.jpdl.xml\n"
+"    documentLifecycle.jpdl.xml"
+
+#. Tag: para
+#: Configuration.xml:382
+#, no-c-format
+msgid ""
+"Remember to add <literal>jbpm-3.1.jar</literal> to the manifest of your EJB-"
+"JAR and WAR."
+msgstr ""
+"Recuerde añadir <literal>jbpm-3.1.jar</literal> al manifiesto de su EJB-JAR "
+"y WAR."
+
+#. Tag: title
+#: Configuration.xml:385
+#, no-c-format
+msgid "Configuring Seam in a Portal"
+msgstr "Configuración de Seam en un Portal"
+
+#. Tag: para
+#: Configuration.xml:386
+#, no-c-format
+msgid ""
+"To run a Seam application as a portlet, you&#39;ll need to provide certain "
+"portlet metadata (<literal>portlet.xml</literal>, etc) in addition to the "
+"usual Java EE metadata. See the <literal>examples/portal</literal> directory "
+"for an example of the booking demo preconfigured to run on JBoss Portal."
+msgstr ""
+"Para ejecutar una aplicación Seam como portlet necesitará proporcionar "
+"ciertos metadatos portlet (<literal>portlet.xml</literal>, etc) además de "
+"los metadatos Java EE comúnes. Consulte el directorio <literal>examples/"
+"portal</literal> y allí encontrará un ejemplo de la demostración "
+"preconfigurada de la reservación para ejecutar en JBoss Portal."
+
+#. Tag: para
+#: Configuration.xml:389
+#, no-c-format
+msgid ""
+"In addition, you&#39;ll need to use a portlet-specific phase listener "
+"instead of <literal>SeamPhaseListener</literal> or "
+"<literal>TransactionalSeamPhaseListener</literal>. The "
+"<literal>SeamPortletPhaseListener</literal> and "
+"<literal>TransactionalSeamPortletPhaseListener</literal> are adapted to the "
+"portlet lifecycle. I would like to offer my sincerest apologies for the name "
+"of that last class. I really couldn&#39;t think of anything better. Sorry."
+msgstr ""
+"Además, necesitará utilizar un escucha de fases especifico al portlet en vez "
+"de <literal>SeamPhaseListener</literal> o "
+"<literal>TransactionalSeamPhaseListener</literal>. "
+"<literal>SeamPortletPhaseListener</literal> y "
+"<literal>TransactionalSeamPortletPhaseListener</literal> son adaptados al "
+"ciclo de vida del portlet. Me disculpo de antemano por el nombre de esa "
+"última clase. Realmente no se me ocurrio nada mejor. "
+
+#. Tag: title
+#: Configuration.xml:392
+#, no-c-format
+msgid "Configuring SFSB and Session Timeouts in JBoss AS"
+msgstr "Configuración de SFSB y tiempo límite de sesiones en JBoss AS"
+
+#. Tag: para
+#: Configuration.xml:393
+#, no-c-format
+msgid ""
+"It is very important that the timeout for Stateful Session Beans is set "
+"higher than the timeout for HTTP Sessions, otherwise SFSB&#39;s may time out "
+"before the user&#39;s HTTP session has ended. JBoss Application Server has a "
+"default session bean timeout of 30 minutes, which is configured in "
+"<literal>server/default/conf/standardjboss.xml</literal> (replace "
+"<emphasis>default</emphasis> with your own configuration)."
+msgstr ""
+"Es muy importante que el tiempo límite de los beans de sesión con estado sea "
+"mayor que el tiempo límite para las sesiones HTTP de otra forma los SFSBs "
+"pueden terminar la sesión antes de que haya terminado la sesión HTTP del "
+"usuario. JBoss Application Server tiene un límite de bean de sesión "
+"predeterminada de 30 minutos, lo cual se configura en <literal>server/"
+"default/conf/standardjboss.xml</literal> (reemplace el valor "
+"<emphasis>predeterminado</emphasis> con su propia configuración)."
+
+#. Tag: para
+#: Configuration.xml:396
+#, no-c-format
+msgid ""
+"The default SFSB timeout can be adjusted by modifying the value of "
+"<literal>max-bean-life</literal> in the "
+"<literal>LRUStatefulContextCachePolicy</literal> cache configuration:"
+msgstr ""
+"El tiempo límite SFSB predeterminado se puede ajustar modificando el valor "
+"de <literal>max-bean-life</literal> en la configuración caché "
+"<literal>LRUStatefulContextCachePolicy</literal>:"
+
+#. Tag: programlisting
+#: Configuration.xml:399
+#, no-c-format
+msgid ""
+"&lt;container-cache-conf&gt;\n"
+"        &lt;cache-policy&gt;org.jboss.ejb.plugins."
+"LRUStatefulContextCachePolicy&lt;/cache-policy&gt;\n"
+"        &lt;cache-policy-conf&gt;\n"
+"          &lt;min-capacity&gt;50&lt;/min-capacity&gt;\n"
+"          &lt;max-capacity&gt;1000000&lt;/max-capacity&gt;\n"
+"          &lt;remover-period&gt;1800&lt;/remover-period&gt;\n"
+"\n"
+"          &lt;!-- SFSB timeout in seconds; 1800 seconds == 30 minutes --"
+"&gt;\n"
+"          &lt;max-bean-life&gt;1800&lt;/max-bean-life&gt;  \n"
+"          \n"
+"          &lt;overager-period&gt;300&lt;/overager-period&gt;\n"
+"          &lt;max-bean-age&gt;600&lt;/max-bean-age&gt;\n"
+"          &lt;resizer-period&gt;400&lt;/resizer-period&gt;\n"
+"          &lt;max-cache-miss-period&gt;60&lt;/max-cache-miss-period&gt;\n"
+"          &lt;min-cache-miss-period&gt;1&lt;/min-cache-miss-period&gt;\n"
+"          &lt;cache-load-factor&gt;0.75&lt;/cache-load-factor&gt;\n"
+"        &lt;/cache-policy-conf&gt;\n"
+"      &lt;/container-cache-conf&gt;"
+msgstr ""
+"&lt;container-cache-conf&gt;\n"
+"        &lt;cache-policy&gt;org.jboss.ejb.plugins."
+"LRUStatefulContextCachePolicy&lt;/cache-policy&gt;\n"
+"        &lt;cache-policy-conf&gt;\n"
+"          &lt;min-capacity&gt;50&lt;/min-capacity&gt;\n"
+"          &lt;max-capacity&gt;1000000&lt;/max-capacity&gt;\n"
+"          &lt;remover-period&gt;1800&lt;/remover-period&gt;\n"
+"\n"
+"          &lt;!-- SFSB timeout in seconds; 1800 seconds == 30 minutes --"
+"&gt;\n"
+"          &lt;max-bean-life&gt;1800&lt;/max-bean-life&gt;  \n"
+"          \n"
+"          &lt;overager-period&gt;300&lt;/overager-period&gt;\n"
+"          &lt;max-bean-age&gt;600&lt;/max-bean-age&gt;\n"
+"          &lt;resizer-period&gt;400&lt;/resizer-period&gt;\n"
+"          &lt;max-cache-miss-period&gt;60&lt;/max-cache-miss-period&gt;\n"
+"          &lt;min-cache-miss-period&gt;1&lt;/min-cache-miss-period&gt;\n"
+"          &lt;cache-load-factor&gt;0.75&lt;/cache-load-factor&gt;\n"
+"        &lt;/cache-policy-conf&gt;\n"
+"      &lt;/container-cache-conf&gt;"
+
+#. Tag: para
+#: Configuration.xml:400
+#, no-c-format
+msgid ""
+"The default HTTP session timeout can be modified in <literal>server/default/"
+"deploy/jbossweb-tomcat55.sar/conf/web.xml</literal> for JBoss 4.0.x, or in "
+"<literal>server/default/deploy/jboss-web.deployer/conf/web.xml</literal> for "
+"JBoss 4.2.x. The following entry in this file controls the default session "
+"timeout for all web applications:"
+msgstr ""
+"El tiempo límite de sesión HTTP predeterminado se puede modificar en "
+"<literal>server/default/deploy/jbossweb-tomcat55.sar/conf/web.xml</literal> "
+"para JBoss 4.0.x o en <literal>server/default/deploy/jboss-web.deployer/conf/"
+"web.xml</literal> para JBoss 4.2.x. La siguiente entrada en este archivo "
+"controla el tiempo límite predeterminado de la sesión para todas las "
+"aplicaciones web:"
+
+#. Tag: programlisting
+#: Configuration.xml:403
+#, no-c-format
+msgid ""
+"&lt;session-config&gt;\n"
+"      &lt;!-- HTTP Session timeout, in minutes --&gt;\n"
+"      &lt;session-timeout&gt;30&lt;/session-timeout&gt;\n"
+"   &lt;/session-config&gt;"
+msgstr ""
+"&lt;session-config&gt;\n"
+"      &lt;!-- HTTP Session timeout, in minutes --&gt;\n"
+"      &lt;session-timeout&gt;30&lt;/session-timeout&gt;\n"
+"   &lt;/session-config&gt;"
+
+#. Tag: para
+#: Configuration.xml:404
+#, no-c-format
+msgid ""
+"To override this value for your own application, simply include this entry "
+"in your application&#39;s own <literal>web.xml</literal>."
+msgstr ""
+"Para sobrescribir este valor para su propia aplicación simplemente incluya "
+"esta entrada en el <literal>web.xml</literal> de su propia aplicación."

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Controls.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Controls.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Controls.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1514 @@
+# translation of Controls.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Controls\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 01:04+0000\n"
+"PO-Revision-Date: 2007-10-22 12:08+1000\n"
+"Last-Translator: Angela Garcia\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Controls.xml:6
+#, no-c-format
+msgid "Seam JSF controls"
+msgstr "Controles JSF Seam"
+
+#. Tag: para
+#: Controls.xml:7
+#, no-c-format
+msgid ""
+"Seam includes a number of JSF controls that are useful for working with "
+"Seam. These are intended to complement the built-in JSF controls, and "
+"controls from other third-party libraries. We recommend the Ajax4JSF and ADF "
+"faces (now Trinidad) tag libraries for use with Seam. We do not recommend "
+"the use of the Tomahawk tag library."
+msgstr ""
+"Seam incluye un número de controles JSF que son útiles para trabajar con "
+"Seam. Estos tienen el propósito de complementar los controles JSF "
+"incorporados y los controles de bibliotecas de terceros. Recomendamos que "
+"utilice las bibliotecas de etiquetas Ajax4JSF y ADF faces (ahora Trinidad) "
+"con Seam. No le recomendamos que utilice la biblioteca de etiquetas Tomahawk."
+
+#. Tag: para
+#: Controls.xml:10
+#, no-c-format
+msgid ""
+"To use these controls, define the \"<literal>s</literal>\" namespace in your "
+"page as follows (facelets only):"
+msgstr ""
+"Para utilizar estos controles defina el espacio de nombre \"<literal>s</"
+"literal>\" en su página como se muestra a continuación (faceletes sólamente):"
+
+#. Tag: programlisting
+#: Controls.xml:13
+#, no-c-format
+msgid ""
+"&lt;html xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"      xmlns:s=\"http://jboss.com/products/seam/taglib\"&gt;"
+msgstr ""
+"&lt;html xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"      xmlns:s=\"http://jboss.com/products/seam/taglib\"&gt;"
+
+#. Tag: para
+#: Controls.xml:14
+#, no-c-format
+msgid "The ui example demonstrates the use of a number of these tags."
+msgstr "El ejemplo ui demuestra el uso de un número de estas etiquetas."
+
+#. Tag: title
+#: Controls.xml:18
+#, no-c-format
+msgid "Seam JSF Control Reference"
+msgstr "Referencia de los controles JSF Seam"
+
+#. Tag: literal
+#: Controls.xml:26
+#, no-c-format
+msgid "&lt;s:validate&gt;"
+msgstr "&lt;s:validate&gt;"
+
+#. Tag: emphasis
+#: Controls.xml:31 Controls.xml:56 Controls.xml:81 Controls.xml:121
+#: Controls.xml:146 Controls.xml:171 Controls.xml:203 Controls.xml:239
+#: Controls.xml:295 Controls.xml:396 Controls.xml:423 Controls.xml:477
+#: Controls.xml:504 Controls.xml:531 Controls.xml:558 Controls.xml:585
+#: Controls.xml:626 Controls.xml:687 Controls.xml:748 Controls.xml:901
+#: Controls.xml:937 Controls.xml:964 Controls.xml:991
+#, no-c-format
+msgid "Description"
+msgstr "Descripción"
+
+#. Tag: para
+#: Controls.xml:33
+#, no-c-format
+msgid ""
+"A non-visual control, validates a JSF input field against the bound property "
+"using Hibernate Validator."
+msgstr ""
+"Un control no visual valida un campo de entrada JSF con respecto a la "
+"propiedad de vinculación utilizando Hibernate Validator."
+
+#. Tag: emphasis
+#: Controls.xml:37 Controls.xml:62 Controls.xml:87 Controls.xml:127
+#: Controls.xml:152 Controls.xml:180 Controls.xml:209 Controls.xml:245
+#: Controls.xml:304 Controls.xml:402 Controls.xml:448 Controls.xml:483
+#: Controls.xml:510 Controls.xml:537 Controls.xml:564 Controls.xml:591
+#: Controls.xml:632 Controls.xml:693 Controls.xml:754 Controls.xml:907
+#: Controls.xml:943 Controls.xml:970 Controls.xml:1024
+#, no-c-format
+msgid "Attributes"
+msgstr "Atributos"
+
+#. Tag: para
+#: Controls.xml:39 Controls.xml:64 Controls.xml:129 Controls.xml:154
+#: Controls.xml:182 Controls.xml:404 Controls.xml:450 Controls.xml:485
+#: Controls.xml:512 Controls.xml:539 Controls.xml:566 Controls.xml:945
+#: Controls.xml:972
+#, no-c-format
+msgid "None."
+msgstr "Ninguno."
+
+#. Tag: emphasis
+#: Controls.xml:43 Controls.xml:68 Controls.xml:97 Controls.xml:133
+#: Controls.xml:158 Controls.xml:190 Controls.xml:224 Controls.xml:280
+#: Controls.xml:381 Controls.xml:408 Controls.xml:454 Controls.xml:489
+#: Controls.xml:516 Controls.xml:543 Controls.xml:570 Controls.xml:611
+#: Controls.xml:672 Controls.xml:733 Controls.xml:779 Controls.xml:922
+#: Controls.xml:949 Controls.xml:976 Controls.xml:1059
+#, no-c-format
+msgid "Usage"
+msgstr "Uso"
+
+#. Tag: programlisting
+#: Controls.xml:45
+#, no-c-format
+msgid ""
+"&lt;h:inputText id=\"userName\" required=\"true\" value=\"#{customer."
+"userName}\"&gt;\n"
+"  &lt;s:validate /&gt;\n"
+"&lt;/h:inputText&gt;\n"
+"&lt;h:message for=\"userName\" styleClass=\"error\" /&gt;"
+msgstr ""
+"&lt;h:inputText id=\"userName\" required=\"true\" value=\"#{customer."
+"userName}\"&gt;\n"
+"  &lt;s:validate /&gt;\n"
+"&lt;/h:inputText&gt;\n"
+"&lt;h:message for=\"userName\" styleClass=\"error\" /&gt;"
+
+#. Tag: literal
+#: Controls.xml:51
+#, no-c-format
+msgid "&lt;s:validateAll&gt;"
+msgstr "&lt;s:validateAll&gt;"
+
+#. Tag: para
+#: Controls.xml:58
+#, no-c-format
+msgid ""
+"A non-visual control, validates all child JSF input fields against their "
+"bound properties using Hibernate Validator."
+msgstr ""
+"Un control no visual valida todos los campos de entrada JSF hijos con "
+"respecto a las propiedades vinculadas utilizando Hibernate Validator."
+
+#. Tag: programlisting
+#: Controls.xml:70
+#, no-c-format
+msgid ""
+"&lt;s:validateAll&gt;\n"
+"  &lt;div class=\"entry\"&gt;\n"
+"    &lt;h:outputLabel for=\"username\"&gt;Username:&lt;/h:outputLabel&gt;\n"
+"    &lt;h:inputText id=\"username\" value=\"#{user.username}\" required="
+"\"true\"/&gt;\n"
+"    &lt;h:message for=\"username\" styleClass=\"error\" /&gt;\n"
+"  &lt;/div&gt;\n"
+"  &lt;div class=\"entry\"&gt;\n"
+"    &lt;h:outputLabel for=\"password\"&gt;Password:&lt;/h:outputLabel&gt;\n"
+"    &lt;h:inputSecret id=\"password\" value=\"#{user.password}\" required="
+"\"true\"/&gt;\n"
+"    &lt;h:message for=\"password\" styleClass=\"error\" /&gt;\n"
+"  &lt;/div&gt;\n"
+"  &lt;div class=\"entry\"&gt;\n"
+"    &lt;h:outputLabel for=\"verify\"&gt;Verify Password:&lt;/h:"
+"outputLabel&gt;\n"
+"    &lt;h:inputSecret id=\"verify\" value=\"#{register.verify}\" required="
+"\"true\"/&gt;\n"
+"    &lt;h:message for=\"verify\" styleClass=\"error\" /&gt;\n"
+"  &lt;/div&gt;\n"
+"&lt;/s:validateAll&gt;"
+msgstr ""
+"&lt;s:validateAll&gt;\n"
+"  &lt;div class=\"entry\"&gt;\n"
+"    &lt;h:outputLabel for=\"username\"&gt;Username:&lt;/h:outputLabel&gt;\n"
+"    &lt;h:inputText id=\"username\" value=\"#{user.username}\" required="
+"\"true\"/&gt;\n"
+"    &lt;h:message for=\"username\" styleClass=\"error\" /&gt;\n"
+"  &lt;/div&gt;\n"
+"  &lt;div class=\"entry\"&gt;\n"
+"    &lt;h:outputLabel for=\"password\"&gt;Password:&lt;/h:outputLabel&gt;\n"
+"    &lt;h:inputSecret id=\"password\" value=\"#{user.password}\" required="
+"\"true\"/&gt;\n"
+"    &lt;h:message for=\"password\" styleClass=\"error\" /&gt;\n"
+"  &lt;/div&gt;\n"
+"  &lt;div class=\"entry\"&gt;\n"
+"    &lt;h:outputLabel for=\"verify\"&gt;Verify Password:&lt;/h:"
+"outputLabel&gt;\n"
+"    &lt;h:inputSecret id=\"verify\" value=\"#{register.verify}\" required="
+"\"true\"/&gt;\n"
+"    &lt;h:message for=\"verify\" styleClass=\"error\" /&gt;\n"
+"  &lt;/div&gt;\n"
+"&lt;/s:validateAll&gt;"
+
+#. Tag: literal
+#: Controls.xml:76
+#, no-c-format
+msgid "&lt;s:formattedText&gt;"
+msgstr "&lt;s:formattedText&gt;"
+
+#. Tag: para
+#: Controls.xml:83
+#, no-c-format
+msgid ""
+"Outputs <emphasis>Seam Text</emphasis>, a rich text markup useful for blogs, "
+"wikis and other applications that might use rich text. See the Seam Text "
+"chapter for full usage."
+msgstr ""
+"Presenta <emphasis>Seam Text</emphasis>, un marcador de texto rico útil para "
+"blogs, wikis y otras aplicaciones que utilizan texto rico. Consulte el "
+"capítulo que se relaciona con Seam Text para encontrar instrucciones sobre "
+"su uso."
+
+#. Tag: para
+#: Controls.xml:91
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; an EL expression specifying the rich text "
+"markup to render."
+msgstr ""
+"<literal>value</literal> &mdash; una expresión EL que especifica el marcado "
+"de texto a presentar."
+
+#. Tag: programlisting
+#: Controls.xml:99
+#, no-c-format
+msgid "&lt;s:formattedText value=\"#{blog.text}\"/&gt;"
+msgstr "&lt;s:formattedText value=\"#{blog.text}\"/&gt;"
+
+#. Tag: emphasis
+#: Controls.xml:101 Controls.xml:785
+#, no-c-format
+msgid "Example"
+msgstr "Ejemplo"
+
+#. Tag: literal
+#: Controls.xml:116
+#, no-c-format
+msgid "&lt;s:convertDateTime&gt;"
+msgstr "&lt;s:convertDateTime&gt;"
+
+#. Tag: para
+#: Controls.xml:123
+#, no-c-format
+msgid "Perform date or time conversions in the Seam timezone."
+msgstr "Realiza conversiones de hora o fecha en el huso horario de Seam"
+
+#. Tag: literal
+#: Controls.xml:141
+#, no-c-format
+msgid "&lt;s:convertEnum&gt;"
+msgstr "&lt;s:convertEnum&gt;"
+
+#. Tag: para
+#: Controls.xml:148
+#, no-c-format
+msgid ""
+"Assigns an enum converter to the current component. This is primarily useful "
+"for radio button and dropdown controls."
+msgstr ""
+"Asigna un convertidor enum al componente actual. Esto es útil principalmente "
+"para los controles dropdown y el botón de selección."
+
+#. Tag: literal
+#: Controls.xml:166
+#, no-c-format
+msgid "&lt;s:convertEntity&gt;"
+msgstr "&lt;s:convertEntity&gt;"
+
+#. Tag: para
+#: Controls.xml:173
+#, no-c-format
+msgid ""
+"Assigns an entity converter to the current component. This is primarily "
+"useful for radio button and dropdown controls."
+msgstr ""
+"Asigna un convertidor de entidades al componente actual. Esto es útil "
+"principalmente para los controles dropdown y el botón de selección."
+
+#. Tag: para
+#: Controls.xml:176
+#, no-c-format
+msgid ""
+"The converter works with any entity which has an <literal>@Id</literal> "
+"annotation - either simple or composite. If your <emphasis>Managed "
+"Persistence Context</emphasis> isn&#39;t called <literal>entityManager</"
+"literal>, then you need to set it in components.xml:"
+msgstr ""
+"El convertidor funciona con cualquier entidad que tenga una anotación "
+"<literal>@Id</literal> - ya sea simple o compuesta. Si su <emphasis>Contexto "
+"de persistencia administrado</emphasis> no se llama <literal>entityManager</"
+"literal> entonces necesita configurarlo en components.xml:"
+
+#. Tag: emphasis
+#: Controls.xml:186 Controls.xml:1002
+#, no-c-format
+msgid "Configuration"
+msgstr "Configuración"
+
+#. Tag: programlisting
+#: Controls.xml:188
+#, no-c-format
+msgid ""
+"&lt;component name=\"org.jboss.seam.ui.entityConverter\"&gt;\n"
+"      &lt;property name=\"entityManager\"&gt;#{em}&lt;/property&gt;\n"
+"  &lt;/component&gt;"
+msgstr ""
+"&lt;component name=\"org.jboss.seam.ui.entityConverter\"&gt;\n"
+"      &lt;property name=\"entityManager\"&gt;#{em}&lt;/property&gt;\n"
+"  &lt;/component&gt;"
+
+#. Tag: programlisting
+#: Controls.xml:192
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{person.continent}\" required=\"true\"&gt;\n"
+"    &lt;s:selectItems value=\"#{continents.resultList}\" var=\"continent\" "
+"label=\"#{continent.name}\" noSelectionLabel=\"Please Select...\"/&gt;\n"
+"    &lt;s:convertEntity /&gt;\n"
+"&lt;/h:selectOneMenu&gt;"
+msgstr ""
+"&lt;h:selectOneMenu value=\"#{person.continent}\" required=\"true\"&gt;\n"
+"    &lt;s:selectItems value=\"#{continents.resultList}\" var=\"continent\" "
+"label=\"#{continent.name}\" noSelectionLabel=\"Please Select...\"/&gt;\n"
+"    &lt;s:convertEntity /&gt;\n"
+"&lt;/h:selectOneMenu&gt;"
+
+#. Tag: literal
+#: Controls.xml:198
+#, no-c-format
+msgid "&lt;s:enumItem&gt;"
+msgstr "&lt;s:enumItem&gt;"
+
+#. Tag: para
+#: Controls.xml:205
+#, no-c-format
+msgid "Creates a <literal>SelectItem</literal> from an enum value."
+msgstr "Crea un <literal>SelectItem</literal> desde un valor enum."
+
+#. Tag: para
+#: Controls.xml:213
+#, no-c-format
+msgid ""
+"<literal>enumValue</literal> &mdash; the string representation of the enum "
+"value."
+msgstr ""
+"<literal>enumValue</literal> &mdash; la cadena de representación del valor "
+"enum."
+
+#. Tag: para
+#: Controls.xml:218
+#, no-c-format
+msgid ""
+"<literal>label</literal> &mdash; the label to be used when rendering the "
+"<literal>SelectItem</literal>."
+msgstr ""
+"<literal>label</literal> &mdash; la etiqueta que se utiliza al entregar el "
+"<literal>SelectItem</literal>."
+
+#. Tag: literal
+#: Controls.xml:234
+#, no-c-format
+msgid "&lt;s:selectItems&gt;"
+msgstr "&lt;s:selectItems&gt;"
+
+#. Tag: para
+#: Controls.xml:241
+#, no-c-format
+msgid ""
+"Creates a <literal>List&lt;SelectItem&gt;</literal> from a List, Set, "
+"DataModel or Array."
+msgstr ""
+"Crea un <literal>List&lt;SelectItem&gt;</literal> de una lista, grupo, "
+"modelo de datos o vector."
+
+#. Tag: para
+#: Controls.xml:249
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; an EL expression specifying the data that "
+"backs the <literal>List&lt;SelectItem&gt;</literal>"
+msgstr ""
+"<literal>value</literal> &mdash; una expresión EL que especifica los datos "
+"que respaldan el <literal>List&lt;SelectItem&gt;</literal>"
+
+#. Tag: para
+#: Controls.xml:254
+#, no-c-format
+msgid ""
+"<literal>var</literal> &mdash; defines the name of the local variable that "
+"holds the current object during iteration"
+msgstr ""
+"<literal>var</literal> &mdash; define el nombre de la variable local que "
+"mantiene el objeto actual durante la iteración."
+
+#. Tag: para
+#: Controls.xml:259
+#, no-c-format
+msgid ""
+"<literal>label</literal> &mdash; the label to be used when rendering the "
+"<literal>SelectItem</literal>. Can reference the <literal>var</literal> "
+"variable"
+msgstr ""
+"<literal>label</literal> &mdash; la etiqueta que se utiliza al entregarse el "
+"<literal>SelectItem</literal>. Puede referenciar la variable <literal>var</"
+"literal>."
+
+#. Tag: para
+#: Controls.xml:264
+#, no-c-format
+msgid ""
+"<literal>disabled</literal> &mdash; if true the <literal>SelectItem</"
+"literal> will be rendered disabled. Can reference the <literal>var</literal> "
+"variable"
+msgstr ""
+"<literal>disabled</literal> &mdash; si el valor es true el "
+"<literal>SelectItem</literal> se entregará deshabilitado. Puede referenciar "
+"la variable <literal>var</literal>."
+
+#. Tag: para
+#: Controls.xml:269
+#, no-c-format
+msgid ""
+"<literal>noSelectionLabel</literal> &mdash; specifies the (optional) label "
+"to place at the top of list (if <literal>required=\"true\"</literal> is also "
+"specified then selecting this value will cause a validation error)"
+msgstr ""
+"<literal>noSelectionLabel</literal> &mdash; especifica la etiqueta "
+"(opcional) para ponerla al principio de la lista (si también se especifica "
+"<literal>required=\"true\"</literal> entonces el seleccionar este valor "
+"causará un error de validación)."
+
+#. Tag: para
+#: Controls.xml:274
+#, no-c-format
+msgid ""
+"<literal>hideNoSelectionLabel</literal> &mdash; if true, the "
+"<literal>noSelectionLabel</literal> will be hidden when a value is selected"
+msgstr ""
+"<literal>hideNoSelectionLabel</literal> &mdash; si el valor es true "
+"<literal>noSelectionLabel</literal> no será visible cuando se selecciona un "
+"valor."
+
+#. Tag: programlisting
+#: Controls.xml:283
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{person.age}\"  converter=\"#{converters."
+"ageConverter}\"&gt;\n"
+"    &lt;s:selectItems value=\"#{ages}\" var=\"age\" label=\"#{age}\" /&gt;\n"
+"&lt;/h:selectOneMenu&gt;"
+msgstr ""
+"&lt;h:selectOneMenu value=\"#{person.age}\"  converter=\"#{converters."
+"ageConverter}\"&gt;\n"
+"    &lt;s:selectItems value=\"#{ages}\" var=\"age\" label=\"#{age}\" /&gt;\n"
+"&lt;/h:selectOneMenu&gt;"
+
+#. Tag: literal
+#: Controls.xml:290
+#, no-c-format
+msgid "&lt;s:graphicImage&gt;"
+msgstr "&lt;s:graphicImage&gt;"
+
+#. Tag: para
+#: Controls.xml:297
+#, no-c-format
+msgid ""
+"An extended <literal>&lt;h:graphicImage&gt;</literal> that allows the image "
+"to be created in a Seam Component; further transforms can be applied to the "
+"image. <emphasis>Facelets only.</emphasis>"
+msgstr ""
+"Un <literal>&lt;h:graphicImage&gt;</literal> extendido que permite que la "
+"imagen se cree en un componente Seam también permite la aplicación de "
+"transformaciones adicionales a la imagen. <emphasis>Facelets solamente.</"
+"emphasis>"
+
+#. Tag: para
+#: Controls.xml:300
+#, no-c-format
+msgid ""
+"All attributes for <literal>&lt;h:graphicImage&gt;</literal> are supported, "
+"as well as:"
+msgstr ""
+"Se soportan todos los atributos para <literal>&lt;h:graphicImage&gt;</"
+"literal> así como también:"
+
+#. Tag: para
+#: Controls.xml:308
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; image to display. Can be a path "
+"<literal>String</literal> (loaded from the classpath), a <literal>byte[]</"
+"literal>, a <literal>java.io.File</literal>, a <literal>java.io.InputStream</"
+"literal> or a <literal>java.net.URL</literal>. Currently supported image "
+"formats are <literal>image/png</literal>, <literal>image/jpeg</literal> and "
+"<literal>image/gif</literal>."
+msgstr ""
+"<literal>value</literal> &mdash; imagen a presentar. Puede ser una ruta "
+"<literal>String</literal> (cargado desde la ruta de clase), un <literal>byte"
+"[]</literal>, un <literal>java.io.File</literal>, un <literal>java.io."
+"InputStream</literal> o un <literal>java.net.URL</literal>. Los formatos de "
+"imágenes actualmente soportados son <literal>image/png</literal>, "
+"<literal>image/jpeg</literal> y <literal>image/gif</literal>."
+
+#. Tag: para
+#: Controls.xml:313
+#, no-c-format
+msgid ""
+"<literal>fileName</literal> &mdash; if not specified the served image will "
+"have a generated file name. If you want to name your file, you should "
+"specify it here. This name should be unique"
+msgstr ""
+"<literal>fileName</literal> &mdash; si no se especifica la imagen servida "
+"tendrá un nombre de archivo generado. Si quiere nombrar su archivo entonces "
+"debe especificarlo aquí. Este nombre debe ser único."
+
+#. Tag: emphasis
+#: Controls.xml:319
+#, no-c-format
+msgid "Transformations"
+msgstr "Transformaciones"
+
+#. Tag: para
+#: Controls.xml:321
+#, no-c-format
+msgid ""
+"To apply a transform to the image, you would nest a tag specifying the "
+"transform to apply. Seam currently supports these transforms:"
+msgstr ""
+"Para aplicar una transformación a la imagen tendría que anidar una etiqueta "
+"especificando la transformación a aplicar. Actualmente Seam soporta estas "
+"transformaciones:"
+
+#. Tag: literal
+#: Controls.xml:326
+#, no-c-format
+msgid "&lt;s:transformImageSize&gt;"
+msgstr "&lt;s:transformImageSize&gt;"
+
+#. Tag: para
+#: Controls.xml:330
+#, no-c-format
+msgid "<literal>width</literal> &mdash; new width of the image"
+msgstr "<literal>width</literal> &mdash; el nuevo ancho de la imagen"
+
+#. Tag: para
+#: Controls.xml:335
+#, no-c-format
+msgid "<literal>height</literal> &mdash; new height of the image"
+msgstr "<literal>height</literal> &mdash; la nueva altura de la imagen"
+
+#. Tag: para
+#: Controls.xml:340
+#, no-c-format
+msgid ""
+"<literal>maintainRatio</literal> &mdash; if <literal>true</literal>, and "
+"<emphasis>one</emphasis> of <literal>width</literal>/<literal>height</"
+"literal> are specified, the image will be resized with the dimension not "
+"specified being calculated to maintain the aspect ratio."
+msgstr ""
+"<literal>maintainRatio</literal> &mdash; si <literal>true</literal> y "
+"<emphasis>uno </emphasis> de <literal>width</literal>/<literal>height</"
+"literal> se especifican, se modififcará el tamaño de la imagen con la "
+"dimensión no especificada calculada para mantener el radio."
+
+#. Tag: para
+#: Controls.xml:345
+#, no-c-format
+msgid "<literal>factor</literal> &mdash; scale the image by the given factor"
+msgstr ""
+"<literal>factor</literal> &mdash; poner a escala la imagen de acuerdo con el "
+"factor dado."
+
+#. Tag: literal
+#: Controls.xml:353
+#, no-c-format
+msgid "&lt;s:transformImageBlur&gt;"
+msgstr "&lt;s:transformImageBlur&gt;"
+
+#. Tag: para
+#: Controls.xml:357
+#, no-c-format
+msgid ""
+"<literal>radius</literal> &mdash; perform a convolution blur with the given "
+"radius"
+msgstr ""
+"<literal>radius</literal> &mdash; realiza una imagen borrosa con el radio "
+"dado"
+
+#. Tag: literal
+#: Controls.xml:365
+#, no-c-format
+msgid "&lt;s:transformImageType&gt;"
+msgstr "&lt;s:transformImageType&gt;"
+
+#. Tag: para
+#: Controls.xml:369
+#, no-c-format
+msgid ""
+"<literal>contentType</literal> &mdash; alter the type of the image to either "
+"<literal>image/jpeg</literal> or <literal>image/png</literal>"
+msgstr ""
+"<literal>contentType</literal> &mdash; altera el tipo de imagen a "
+"<literal>image/jpeg</literal> o <literal>image/png</literal>"
+
+#. Tag: para
+#: Controls.xml:377
+#, no-c-format
+msgid ""
+"It&#39;s easy to create your own transform - create a <literal>UIComponent</"
+"literal> which <literal>implements</literal><literal>org.jboss.seam.ui."
+"graphicImage.ImageTransform</literal>. Inside the <literal>applyTransform()</"
+"literal>method use <literal>image.getBufferedImage()</literal> to get the "
+"original image and <literal>image.setBufferedImage()</literal> to set your "
+"transformed image. Transforms are applied in the order specified in the view."
+msgstr ""
+"Es fácil crear su propia transformación - cree un <literal>UIComponent</"
+"literal>, el cual <literal>implements</literal><literal>org.jboss.seam.ui."
+"graphicImage.ImageTransform</literal>. Dentro del método "
+"<literal>applyTransform()</literal> use <literal>image.getBufferedImage()</"
+"literal> para obtener la imagen original e <literal>image.setBufferedImage()"
+"</literal> para configurar su imagen transformada. Las transformaciones se "
+"aplican en el orden especificado en la vista."
+
+#. Tag: literal
+#: Controls.xml:391
+#, no-c-format
+msgid "&lt;s:decorate&gt;"
+msgstr "&lt;s:decorate&gt;"
+
+#. Tag: para
+#: Controls.xml:398
+#, no-c-format
+msgid ""
+"\"Decorate\" a JSF input field when validation fails or when "
+"<literal>required=\"true\"</literal> is set."
+msgstr ""
+"\"Decorate\" un campo de entrada JSF cuando la validación falla o cuando se "
+"configura <literal>required=\"true\"</literal>."
+
+#. Tag: literal
+#: Controls.xml:418
+#, no-c-format
+msgid "&lt;s:layoutForm&gt;"
+msgstr "&lt;s:layoutForm&gt;"
+
+#. Tag: para
+#: Controls.xml:425
+#, no-c-format
+msgid ""
+"A layout component for producing a \"standard\" form layout. Each child "
+"component will be treated as a row, and if the child is a <literal>&lt;s:"
+"decorate&gt;</literal>, additional formatting will be applied:"
+msgstr ""
+"Un componente para producir un esquema de forma \"estándar\". Cada "
+"componente hijo se tratará como una fila y si el hijo es un <literal>&lt;s:"
+"decorate&gt;</literal> entonces se aplicará un formato adicional:"
+
+#. Tag: para
+#: Controls.xml:428
+#, no-c-format
+msgid ""
+"Label &mdash; if a <literal>label</literal> facet is on the <literal>&lt;s:"
+"decorate&gt;</literal> then it&#39;s contents will be used as the label for "
+"this field. The labels are rendered right-aligned in a column"
+msgstr ""
+"Label &mdash; si un facet <literal>label</literal> se encuentra en el "
+"<literal>&lt;s:decorate&gt;</literal> entonces su contenido se utilizará "
+"como la etiqueta para este campo. Las etiquetas se presentan alineadas hacia "
+"la derecha en una columna."
+
+#. Tag: para
+#: Controls.xml:431
+#, no-c-format
+msgid ""
+"Some further decoration facets are supported - <literal>beforeLabel</"
+"literal>, <literal>afterLabel</literal>, <literal>aroundLabel</literal>, "
+"<literal>beforeInvalidLabel</literal>, <literal>afterInvalidLabel</literal> "
+"and <literal>aroundInvalidLabel</literal>."
+msgstr ""
+"Algunos otros facets de decoración están soportados - <literal>beforeLabel</"
+"literal>, <literal>afterLabel</literal>, <literal>aroundLabel</literal>, "
+"<literal>beforeInvalidLabel</literal>, <literal>afterInvalidLabel</literal> "
+"y <literal>aroundInvalidLabel</literal>."
+
+#. Tag: para
+#: Controls.xml:436
+#, no-c-format
+msgid ""
+"Other text &mdash; if a <literal>belowLabel</literal> facet or/and a "
+"<literal>belowField</literal> facet are present on <literal>&lt;s:"
+"decorate&gt;</literal> then it&#39;s contents will be placed below the label "
+"or the field"
+msgstr ""
+"Otro texto &mdash; si un facet <literal>belowLabel</literal> o/y un facet "
+"<literal>belowField</literal> se encuentran presentes en <literal>&lt;s:"
+"decorate&gt;</literal> entonces su contenido se ubicará por debajo de la "
+"etiqueta o del campo"
+
+#. Tag: para
+#: Controls.xml:441
+#, no-c-format
+msgid ""
+"Required &mdash; if <literal>required=\"true\"</literal> is set on the "
+"field, then the <literal>aroundRequiredField</literal>, "
+"<literal>beforeRequiredField</literal>, <literal>afterRequiredField</"
+"literal>, <literal>aroundRequiredLabel</literal>, "
+"<literal>beforeRequiredLabel</literal> and <literal>afterRequiredLabel</"
+"literal> will be applied."
+msgstr ""
+"Required &mdash; si <literal>required=\"true\"</literal> está configurado en "
+"el campo entonces se aplicaran <literal>aroundRequiredField</literal>, "
+"<literal>beforeRequiredField</literal>, <literal>afterRequiredField</"
+"literal>, <literal>aroundRequiredLabel</literal>, "
+"<literal>beforeRequiredLabel</literal> y <literal>afterRequiredLabel</"
+"literal>."
+
+#. Tag: programlisting
+#: Controls.xml:457
+#, no-c-format
+msgid ""
+"&lt;s:layoutForm&gt;\n"
+"   &lt;f:facet name=\"aroundInvalidField\"&gt;\n"
+"       &lt;s:span styleClass=\"error\"/&gt;\n"
+"   &lt;/f:facet&gt;\n"
+"   &lt;f:facet name=\"afterInvalidField\"&gt;\n"
+"       &lt;s:message /&gt;\n"
+"   &lt;/f:facet&gt;\n"
+"   &lt;f:facet name=\"beforeRequiredLabel\"&gt;\n"
+"           &lt;s:span&gt;&lowast;&lt;/s:span&gt;\n"
+"   &lt;/f:facet&gt;\n"
+"   &lt;f:facet name=\"aroundLabel\"&gt;\n"
+"           &lt;s:span style=\"text-align:right;\" /&gt;\n"
+"   &lt;/f:facet&gt;\n"
+"   &lt;f:facet name=\"aroundInvalidLabel\"&gt;\n"
+"           &lt;s:span style=\"text-align:right;\" styleClass=\"error\" /"
+"&gt;\n"
+"   &lt;/f:facet&gt;\n"
+"   &lt;s:decorate&gt;\n"
+"        &lt;f:facet name=\"label\"&gt;\n"
+"                    &lt;h:outputText value=\"Name\" /&gt;\n"
+"        &lt;/f:facet&gt;\n"
+"        &lt;h:inputText value=\"#{person.name}\" required=\"true\"/&gt;\n"
+"        &lt;f:facet name=\"belowField\"&gt;\n"
+"            &lt;h:outputText styleClass=\"help\" \n"
+"               value=\"Enter your name as it appears \n"
+"                  on your passport\" /&gt;\n"
+"        &lt;/f:facet&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"&lt;/s:layoutForm&gt;"
+msgstr ""
+"&lt;s:layoutForm&gt;\n"
+"   &lt;f:facet name=\"aroundInvalidField\"&gt;\n"
+"       &lt;s:span styleClass=\"error\"/&gt;\n"
+"   &lt;/f:facet&gt;\n"
+"   &lt;f:facet name=\"afterInvalidField\"&gt;\n"
+"       &lt;s:message /&gt;\n"
+"   &lt;/f:facet&gt;\n"
+"   &lt;f:facet name=\"beforeRequiredLabel\"&gt;\n"
+"           &lt;s:span&gt;&lowast;&lt;/s:span&gt;\n"
+"   &lt;/f:facet&gt;\n"
+"   &lt;f:facet name=\"aroundLabel\"&gt;\n"
+"           &lt;s:span style=\"text-align:right;\" /&gt;\n"
+"   &lt;/f:facet&gt;\n"
+"   &lt;f:facet name=\"aroundInvalidLabel\"&gt;\n"
+"           &lt;s:span style=\"text-align:right;\" styleClass=\"error\" /"
+"&gt;\n"
+"   &lt;/f:facet&gt;\n"
+"   &lt;s:decorate&gt;\n"
+"        &lt;f:facet name=\"label\"&gt;\n"
+"                    &lt;h:outputText value=\"Name\" /&gt;\n"
+"        &lt;/f:facet&gt;\n"
+"        &lt;h:inputText value=\"#{person.name}\" required=\"true\"/&gt;\n"
+"        &lt;f:facet name=\"belowField\"&gt;\n"
+"            &lt;h:outputText styleClass=\"help\" \n"
+"               value=\"Enter your name as it appears \n"
+"                  on your passport\" /&gt;\n"
+"        &lt;/f:facet&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"&lt;/s:layoutForm&gt;"
+
+#. Tag: literal
+#: Controls.xml:472
+#, no-c-format
+msgid "&lt;s:message&gt;"
+msgstr "&lt;s:message&gt;"
+
+#. Tag: para
+#: Controls.xml:479
+#, no-c-format
+msgid "\"Decorate\" a JSF input field with the validation error message."
+msgstr "\"Decorate\" un campo de entrada JSF con el mensaje de error de validación."
+
+#. Tag: literal
+#: Controls.xml:499
+#, no-c-format
+msgid "&lt;s:span&gt;"
+msgstr "&lt;s:span&gt;"
+
+#. Tag: para
+#: Controls.xml:506
+#, no-c-format
+msgid "Render a HTML <literal>&lt;span&gt;</literal>."
+msgstr "Presenta un HTML <literal>&lt;span&gt;</literal>."
+
+#. Tag: literal
+#: Controls.xml:526
+#, no-c-format
+msgid "&lt;s:div&gt;"
+msgstr "&lt;s:div&gt;"
+
+#. Tag: para
+#: Controls.xml:533
+#, no-c-format
+msgid "Render a HTML <literal>&lt;div&gt;</literal>."
+msgstr "Presenta un HTML <literal>&lt;div&gt;</literal>."
+
+#. Tag: literal
+#: Controls.xml:553
+#, no-c-format
+msgid "&lt;s:fragment&gt;"
+msgstr "&lt;s:fragment&gt;"
+
+#. Tag: para
+#: Controls.xml:560
+#, no-c-format
+msgid ""
+"A non-rendering component useful for enabling/disabling rendering of it&#39;"
+"s children."
+msgstr ""
+"Un componente de no presentación, el cual es útil para habilitar/"
+"deshabilitar la presentación de sus hijos."
+
+#. Tag: literal
+#: Controls.xml:580
+#, no-c-format
+msgid "&lt;s:cache&gt;"
+msgstr "&lt;s:cache&gt;"
+
+#. Tag: para
+#: Controls.xml:587
+#, no-c-format
+msgid ""
+"Cache the rendered page fragment using JBoss Cache. Note that <literal>&lt;s:"
+"cache&gt;</literal> actually uses the instance of JBoss Cache managed by the "
+"built-in <literal>pojoCache</literal> component."
+msgstr ""
+"Pone en caché el fragmento de página presentada utilizando JBoss Cache. "
+"Observe que de hecho <literal>&lt;s:cache&gt;</literal> utiliza la instancia "
+"de JBoss Cache administrada por el componente <literal>pojoCache</literal> "
+"incorporado."
+
+#. Tag: para
+#: Controls.xml:595
+#, no-c-format
+msgid ""
+"<literal>key</literal> &mdash; the key to cache rendered content, often a "
+"value expression. For example, if we were caching a page fragment that "
+"displays a document, we might use <literal>key=\"Document-#{document.id}\"</"
+"literal>."
+msgstr ""
+"<literal>key</literal> &mdash; la llave para poner en cache el contenido "
+"presentado. Por ejemplo, si estuviesemos realizando un caché de un fragmento "
+"de página que presenta un documento podemos utilizar <literal>key=\"Document-"
+"#{document.id}\"</literal>."
+
+#. Tag: para
+#: Controls.xml:600
+#, no-c-format
+msgid ""
+"<literal>enabled</literal> &mdash; a value expression that determines if the "
+"cache should be used."
+msgstr ""
+"<literal>enabled</literal> &mdash; una expresión de valor que determina si "
+"se debe utilizar el caché."
+
+#. Tag: para
+#: Controls.xml:605
+#, no-c-format
+msgid ""
+"<literal>region</literal> &mdash; a JBoss Cache node to use (different nodes "
+"can have different expiry policies)."
+msgstr ""
+"<literal>region</literal> &mdash; un nodo JBoss Cache a utilizar (nodos "
+"diferentes pueden tener políticas de expiración diferentes)."
+
+#. Tag: literal
+#: Controls.xml:621
+#, no-c-format
+msgid "&lt;s:link&gt;"
+msgstr "&lt;s:link&gt;"
+
+#. Tag: para
+#: Controls.xml:628
+#, no-c-format
+msgid ""
+"A link that supports invocation of an action with control over conversation "
+"propagation. <emphasis>Does not submit the form.</emphasis>"
+msgstr ""
+"Un enlace que soporta la invocación de una acción con control sobre la "
+"propagación de la conversación. <emphasis>No envía la forma.</emphasis>"
+
+#. Tag: para
+#: Controls.xml:636 Controls.xml:697
+#, no-c-format
+msgid "<literal>value</literal> &mdash; the label."
+msgstr "<literal>value</literal> &mdash; la etiqueta."
+
+#. Tag: para
+#: Controls.xml:641 Controls.xml:702
+#, no-c-format
+msgid ""
+"<literal>action</literal> &mdash; a method binding that specified the action "
+"listener."
+msgstr "<literal>action</literal> &mdash; un método de vinculación que el escucha de acciones especificó."
+
+#. Tag: para
+#: Controls.xml:646 Controls.xml:707
+#, no-c-format
+msgid "<literal>view</literal> &mdash; the JSF view id to link to."
+msgstr ""
+"<literal>view</literal> &mdash; la identificación (id) de la vista JSF a la "
+"cual vincularse."
+
+#. Tag: para
+#: Controls.xml:651 Controls.xml:712
+#, no-c-format
+msgid "<literal>fragment</literal> &mdash; the fragment identifier to link to."
+msgstr ""
+"<literal>fragment</literal> &mdash; el fragmento identificador al cual "
+"vincularse."
+
+#. Tag: para
+#: Controls.xml:656 Controls.xml:717
+#, no-c-format
+msgid "<literal>disabled</literal> &mdash; is the link disabled?"
+msgstr "<literal>disabled</literal> &mdash; ¿el enlace está deshabilitado?"
+
+#. Tag: para
+#: Controls.xml:661 Controls.xml:722 Controls.xml:911
+#, no-c-format
+msgid ""
+"<literal>propagation</literal> &mdash; determines the conversation "
+"propagation style: <literal>begin</literal>, <literal>join</literal>, "
+"<literal>nest</literal>, <literal>none</literal> or <literal>end</literal>."
+msgstr ""
+"<literal>propagation</literal> &mdash; determina el estilo de propagación de "
+"la conversación: <literal>begin</literal>, <literal>join</literal>, "
+"<literal>nest</literal>, <literal>none</literal> o <literal>end</literal>."
+
+#. Tag: para
+#: Controls.xml:666 Controls.xml:727 Controls.xml:916
+#, no-c-format
+msgid ""
+"<literal>pageflow</literal> &mdash; a pageflow definition to begin. (This is "
+"only useful when <literal>propagation=\"begin\"</literal> or "
+"<literal>propagation=\"join\"</literal>.)"
+msgstr ""
+"<literal>pageflow</literal> &mdash; una definición de flujo de página para "
+"comenzar (esto es útil sólamente cuando <literal>propagation=\"begin\"</"
+"literal> o <literal>propagation=\"join\"</literal>)."
+
+#. Tag: literal
+#: Controls.xml:682
+#, no-c-format
+msgid "&lt;s:button&gt;"
+msgstr "&lt;s:button&gt;"
+
+#. Tag: para
+#: Controls.xml:689
+#, no-c-format
+msgid ""
+"A button that supports invocation of an action with control over "
+"conversation propagation. <emphasis>Does not submit the form.</emphasis>"
+msgstr ""
+"Un botón que soporta la invocación de una acción con control sobre la "
+"propagación de conversaciones. <emphasis>No presenta la forma.</emphasis>"
+
+#. Tag: literal
+#: Controls.xml:743
+#, no-c-format
+msgid "&lt;s:selectDate&gt;"
+msgstr "&lt;s:selectDate&gt;"
+
+#. Tag: para
+#: Controls.xml:750
+#, no-c-format
+msgid ""
+"Displays a dynamic date picker component that selects a date for the "
+"specified input field. The body of the <literal>selectDate</literal> element "
+"should contain HTML elements, such as text or an image, that prompt the user "
+"to click to display the date picker. The date picker <emphasis>must</"
+"emphasis> be styled using CSS. An example CSS file can be found in the Seam "
+"booking demo as <literal>date.css</literal>, or can be generated using seam-"
+"gen. The CSS styles used to control the appearance of the date picker are "
+"also described below."
+msgstr ""
+"Presenta un componente seleccionador de fecha dinámico que escoge una fecha "
+"para el campo de entrada especificado. El cuerpo del elemento "
+"<literal>selectDate</literal> debe tener elementos HTML tal como texto o una "
+"imagen que le piden al usuario que haga click para poder presentar el "
+"seleccionador de fecha. El seleccionador de fecha <emphasis>debe</emphasis> "
+"ser estilizado utilizando CSS. Puede encontrar un archivo CSS de ejemplo en "
+"la demostración sobre las reservaciones de Seam como <literal>date.css</"
+"literal> o se pueden generar utilizando seam-gen. Los estilos CSS que se "
+"utilizan para controlar la apariencia del seleccionador de fecha también se "
+"describen a continuación."
+
+#. Tag: para
+#: Controls.xml:758
+#, no-c-format
+msgid ""
+"<literal>for</literal> &mdash; The id of the input field that the date "
+"picker will insert the selected date into."
+msgstr ""
+"<literal>for</literal> &mdash; La identificación (id) del campo de entrada "
+"que el seleccionador de fecha incluirá en la fecha elegida."
+
+#. Tag: para
+#: Controls.xml:763
+#, no-c-format
+msgid ""
+"<literal>dateFormat</literal> &mdash; The date format string. This should "
+"match the date format of the input field."
+msgstr ""
+"<literal>dateFormat</literal> &mdash; La cadena del formato de fecha. Esto "
+"debe coincidir con el formato de fecha del campo de entrada."
+
+#. Tag: para
+#: Controls.xml:768
+#, no-c-format
+msgid ""
+"<literal>startYear</literal> &mdash; The popup year selector range will "
+"start at this year."
+msgstr ""
+"<literal>startYear</literal> &mdash; El rango del seleccionador de año "
+"emergente iniciará en este año."
+
+#. Tag: para
+#: Controls.xml:773
+#, no-c-format
+msgid ""
+"<literal>endYear</literal> &mdash; The popup year selector range will end at "
+"this year."
+msgstr ""
+"<literal>endYear</literal> &mdash; El rango del seleccionador de año "
+"emergente terminará en este año."
+
+#. Tag: programlisting
+#: Controls.xml:782
+#, no-c-format
+msgid ""
+"&lt;div class=\"row\"&gt;\n"
+"    &lt;h:outputLabel for=\"dob\"&gt;Date of birth&lt;em&gt;*&lt;/em&gt;&lt;/"
+"h:outputLabel&gt;\n"
+"    &lt;h:inputText id=\"dob\" value=\"#{user.dob}\" required=\"true\"&gt;\n"
+"      &lt;s:convertDateTime pattern=\"MM/dd/yyyy\"/&gt;\n"
+"    &lt;/h:inputText&gt;\n"
+"    &lt;s:selectDate for=\"dob\" startYear=\"1910\" endYear=\"2007\"&gt;&lt;"
+"img src=\"img/datepicker.png\"/&gt;&lt;/s:selectDate&gt;\n"
+"    &lt;div class=\"validationError\"&gt;&lt;h:message for=\"dob\"/&gt;&lt;/"
+"div&gt;\n"
+"  &lt;/div&gt;"
+msgstr ""
+"&lt;div class=\"row\"&gt;\n"
+"    &lt;h:outputLabel for=\"dob\"&gt;Date of birth&lt;em&gt;*&lt;/em&gt;&lt;/"
+"h:outputLabel&gt;\n"
+"    &lt;h:inputText id=\"dob\" value=\"#{user.dob}\" required=\"true\"&gt;\n"
+"      &lt;s:convertDateTime pattern=\"MM/dd/yyyy\"/&gt;\n"
+"    &lt;/h:inputText&gt;\n"
+"    &lt;s:selectDate for=\"dob\" startYear=\"1910\" endYear=\"2007\"&gt;&lt;"
+"img src=\"img/datepicker.png\"/&gt;&lt;/s:selectDate&gt;\n"
+"    &lt;div class=\"validationError\"&gt;&lt;h:message for=\"dob\"/&gt;&lt;/"
+"div&gt;\n"
+"  &lt;/div&gt;"
+
+#. Tag: emphasis
+#: Controls.xml:796
+#, no-c-format
+msgid "CSS Styling"
+msgstr "CSS Styling"
+
+#. Tag: para
+#: Controls.xml:798
+#, no-c-format
+msgid ""
+"The following list describes the CSS class names that are used to control "
+"the style of the selectDate control."
+msgstr ""
+"La siguiente lista describe los nombres de clase CSS que se utilizan para "
+"controlar el estilo del control selectDate."
+
+#. Tag: para
+#: Controls.xml:803
+#, no-c-format
+msgid ""
+"<literal>seam-date</literal> &mdash; This class is applied to the outer "
+"<literal>div</literal> containing the popup calendar. (1) It is also applied "
+"to the <literal>table</literal> that controls the inner layout of the "
+"calendar. (2)"
+msgstr ""
+"<literal>seam-date</literal> &mdash; Esta clase se aplica al <literal>div</"
+"literal> exterior que contiene el calendario emergente. (1) También se "
+"aplica a la <literal>table</literal> que controla el esquema interno del "
+"calendario. (2)"
+
+#. Tag: para
+#: Controls.xml:808
+#, no-c-format
+msgid ""
+"<literal>seam-date-header</literal> &mdash; This class is applied to the "
+"calendar header table row (<literal>tr</literal>) and header table cells "
+"(<literal>td</literal>). (3)"
+msgstr ""
+"<literal>seam-date-header</literal> &mdash; Esta clase se aplica a la fila "
+"del encabezado del calendario (<literal>tr</literal>) y a las celdas del "
+"encabezado (<literal>td</literal>). (3)"
+
+#. Tag: para
+#: Controls.xml:813
+#, no-c-format
+msgid ""
+"<literal>seam-date-header-prevMonth</literal> &mdash; This class is applied "
+"to the \"previous month\" table cell, (<literal>td</literal>), which when "
+"clicked causes the calendar to display the month prior to the one currently "
+"displayed. (4)"
+msgstr ""
+"<literal>seam-date-header-prevMonth</literal> &mdash; Esta clase se aplica a "
+"la celda del \"mes anterior\", (<literal>td</literal>), en donde si se hace "
+"click entonces el calendario presenta el mes anterior a este. (4)"
+
+#. Tag: para
+#: Controls.xml:818
+#, no-c-format
+msgid ""
+"<literal>seam-date-header-nextMonth</literal> &mdash; This class is applied "
+"to the \"next month\" table cell, (<literal>td</literal>), which when "
+"clicked causes the calendar to display the month following the one currently "
+"displayed. (5)"
+msgstr ""
+"<literal>seam-date-header-nextMonth</literal> &mdash; Esta clase se aplica a "
+"la celda del \"próximo mes\", (<literal>td</literal>), en donde si se hace "
+"click entonces el calendario presenta el mes siguiente. (5)"
+
+#. Tag: para
+#: Controls.xml:823
+#, no-c-format
+msgid ""
+"<literal>seam-date-headerDays</literal> &mdash; This class is applied to the "
+"calendar days header row (<literal>tr</literal>), which contains the names "
+"of the week days. (6)"
+msgstr ""
+"<literal>seam-date-headerDays</literal> &mdash; Esta clase se aplica a la "
+"fila de los días del calendario (<literal>tr</literal>), la cual contiene "
+"los nombres de los días de la semana. (6)"
+
+#. Tag: para
+#: Controls.xml:828
+#, no-c-format
+msgid ""
+"<literal>seam-date-footer</literal> &mdash; This class is applied to the "
+"calendar footer row (<literal>tr</literal>), which displays the current "
+"date. (7)"
+msgstr ""
+"<literal>seam-date-footer</literal> &mdash; Esta clase se aplica a la fila "
+"del calendario (<literal>tr</literal>), la cual presenta la fecha actual. (7)"
+
+#. Tag: para
+#: Controls.xml:833
+#, no-c-format
+msgid ""
+"<literal>seam-date-inMonth</literal> &mdash; This class is applied to the "
+"table cell (<literal>td</literal>) elements that contain a date within the "
+"month currently displayed. (8)"
+msgstr ""
+"<literal>seam-date-inMonth</literal> &mdash; Esta clase se aplica a los "
+"elementos de la celda (<literal>td</literal>) que contienen una fecha dentro "
+"del mes que se está mostrando. (8)"
+
+#. Tag: para
+#: Controls.xml:838
+#, no-c-format
+msgid ""
+"<literal>seam-date-outMonth</literal> &mdash; This class is applied to the "
+"table cell (<literal>td</literal>) elements that contain a date outside of "
+"the month currently displayed. (9)"
+msgstr ""
+"<literal>seam-date-outMonth</literal> &mdash; Esta clase se aplica a los "
+"elementos (<literal>td</literal>) de la celda que contengan una fecha por "
+"fuera del mes que se está mostrando. (9)"
+
+#. Tag: para
+#: Controls.xml:843
+#, no-c-format
+msgid ""
+"<literal>seam-date-selected</literal> &mdash; This class is applied to the "
+"table cell (<literal>td</literal>) element that contains the currently "
+"selected date. (10)"
+msgstr ""
+"<literal>seam-date-selected</literal> &mdash; Esta clase se aplica a los "
+"elementos (<literal>td</literal>) que contienen la fecha seleccionada. (10)"
+
+#. Tag: para
+#: Controls.xml:848
+#, no-c-format
+msgid ""
+"<literal>seam-date-dayOff-inMonth</literal> &mdash; This class is applied to "
+"the table cell (<literal>td</literal>) elements that contain a \"day off\" "
+"date (i.e. weekend days, Saturday and Sunday) within the currently selected "
+"month. (11)"
+msgstr ""
+"<literal>seam-date-dayOff-inMonth</literal> &mdash; Esta clase se aplica a "
+"los elementos (<literal>td</literal>) que contienen una fecha de un \"día "
+"libre\" (por ejemplo los días del fin de semana, sábado y domingo) dentro "
+"del mes actualmente seleccionado. (11)"
+
+#. Tag: para
+#: Controls.xml:853
+#, no-c-format
+msgid ""
+"<literal>seam-date-dayOff-outMonth</literal> &mdash; This class is applied "
+"to the table cell (<literal>td</literal>) elements that contain a \"day off"
+"\" date (i.e. weekend days, Saturday and Sunday) outside of the currently "
+"selected month. (12)"
+msgstr ""
+"<literal>seam-date-dayOff-outMonth</literal> &mdash; Esta clase se aplica a "
+"los elementos (<literal>td</literal>) que contienen una fecha de un \"día "
+"libre\" (por ejemplo, los días del fin de semana, sábado y domingo) por "
+"fuera del mes seleccionado actualmente. (12)"
+
+#. Tag: para
+#: Controls.xml:858
+#, no-c-format
+msgid ""
+"<literal>seam-date-hover</literal> &mdash; This class is applied to the "
+"table cell (<literal>td</literal>) element over which the cursor is "
+"hovering. (13)"
+msgstr ""
+"<literal>seam-date-hover</literal> &mdash; Esta clase se aplica a los "
+"elementos (<literal>td</literal>) sobre los cuales se encuentra el cursor. "
+"(13)"
+
+#. Tag: para
+#: Controls.xml:863
+#, no-c-format
+msgid ""
+"<literal>seam-date-monthNames</literal> &mdash; This class is applied to the "
+"<literal>div</literal> control that contains the popup month selector. (14)"
+msgstr ""
+"<literal>seam-date-monthNames</literal> &mdash; Esta clase se aplica al "
+"control <literal>div</literal> que contiene el seleccionador de mes "
+"emergente. (14)"
+
+#. Tag: para
+#: Controls.xml:868
+#, no-c-format
+msgid ""
+"<literal>seam-date-monthNameLink</literal> &mdash; This class is applied to "
+"the anchor (<literal>a</literal>) controls that contain the popup month "
+"names. (15)"
+msgstr ""
+"<literal>seam-date-monthNameLink</literal> &mdash; Esta clase se aplica a "
+"los controles (<literal>a</literal>) del texto del enlace que contienen los "
+"nombres emergentes de los meses. (15)"
+
+#. Tag: para
+#: Controls.xml:873
+#, no-c-format
+msgid ""
+"<literal>seam-date-years </literal> &mdash; This class is applied to the "
+"<literal>div</literal> control that contains the popup year selector. (16)"
+msgstr ""
+"<literal>seam-date-years </literal> &mdash; Esta clase se aplica al control "
+"<literal>div</literal> que contiene el seleccionador emergente de año. (16)"
+
+#. Tag: para
+#: Controls.xml:878
+#, no-c-format
+msgid ""
+"<literal>seam-date-yearLink</literal> &mdash; This class is applied to the "
+"anchor (<literal>a</literal>) controls that contain the popup years. (15)"
+msgstr ""
+"<literal>seam-date-yearLink</literal> &mdash; Esta clase se aplica a los "
+"controles (<literal>a</literal>) del texto del enlace que contienen los años "
+"emergentes. (15)"
+
+#. Tag: literal
+#: Controls.xml:896
+#, no-c-format
+msgid "&lt;s:conversationPropagation&gt;"
+msgstr "&lt;s:conversationPropagation&gt;"
+
+#. Tag: para
+#: Controls.xml:903
+#, no-c-format
+msgid ""
+"Customize the conversation propagation for a command link or button (or "
+"similar JSF control). <emphasis>Facelets only.</emphasis>"
+msgstr ""
+"Personaliza la propagación de la conversación para un enlace de comandos o "
+"botones (o un control JSF similar). <emphasis>Facelets sólamente.</emphasis>"
+
+#. Tag: literal
+#: Controls.xml:932
+#, no-c-format
+msgid "&lt;s:conversationId&gt;"
+msgstr "&lt;s:conversationId&gt;"
+
+#. Tag: para
+#: Controls.xml:939
+#, no-c-format
+msgid ""
+"Add the conversation id to an output link (or similar JSF control). "
+"<emphasis>Facelets only.</emphasis>"
+msgstr ""
+"Añada la identificación (id) de la conversación a un vinculo de salida (o un "
+"control JSF similar). <emphasis>Facelets solamente.</emphasis>"
+
+#. Tag: literal
+#: Controls.xml:959
+#, no-c-format
+msgid "&lt;s:taskId&gt;"
+msgstr "&lt;s:taskId&gt;"
+
+#. Tag: para
+#: Controls.xml:966
+#, no-c-format
+msgid ""
+"Add the task id to an output link (or similar JSF control), when the task is "
+"available via <literal>#{task}</literal>. <emphasis>Facelets only.</emphasis>"
+msgstr ""
+"Añada la identificación (id) a un vínculo de salida (o un control JSF "
+"similar) cuando la tarea se encuentra disponible por medio de <literal>#"
+"{task}</literal>. <emphasis>Facelets sólamente.</emphasis>"
+
+#. Tag: literal
+#: Controls.xml:986
+#, no-c-format
+msgid "&lt;s:fileUpload&gt;"
+msgstr "&lt;s:fileUpload&gt;"
+
+#. Tag: para
+#: Controls.xml:993
+#, no-c-format
+msgid ""
+"Renders a file upload control. This control must be used within a form with "
+"an encoding type of <literal>multipart/form-data</literal>, i.e:"
+msgstr ""
+"Presenta un control para cargar archivos. Este control se debe utilizar "
+"dentro de una forma con un tipo de codificación <literal>multipart/form-"
+"data</literal> por ejemplo:"
+
+#. Tag: programlisting
+#: Controls.xml:996
+#, no-c-format
+msgid "&lt;h:form enctype=\"multipart/form-data\"&gt;"
+msgstr "&lt;h:form enctype=\"multipart/form-data\"&gt;"
+
+#. Tag: para
+#: Controls.xml:997
+#, no-c-format
+msgid ""
+"For multipart requests, the Seam Multipart servlet filter must also be "
+"configured in <literal>web.xml</literal>:"
+msgstr "Para pedidos multipartes el filtro servlet Seam Multipart "
+
+#. Tag: programlisting
+#: Controls.xml:1000
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-class&gt;\n"
+"  &lt;/filter&gt;\n"
+"\n"
+"  &lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;/*&lt;/url-pattern&gt;\n"
+"  &lt;/filter-mapping&gt;"
+msgstr ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-class&gt;\n"
+"  &lt;/filter&gt;\n"
+"\n"
+"  &lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;/*&lt;/url-pattern&gt;\n"
+"  &lt;/filter-mapping&gt;"
+
+#. Tag: para
+#: Controls.xml:1004
+#, no-c-format
+msgid ""
+"The following configuration options for multipart requests may be configured "
+"in components.xml:"
+msgstr ""
+"Las siguientes opciones de configuración para pedidos multipartes se pueden "
+"configurar en components.xml:"
+
+#. Tag: para
+#: Controls.xml:1009
+#, no-c-format
+msgid ""
+"<literal>createTempFiles</literal> &mdash; if this option is set to true, "
+"uploaded files are streamed to a temporary file instead of in memory."
+msgstr ""
+"<literal>createTempFiles</literal> &mdash; si esta opción se configura como "
+"verdadera los archivos cargados se envían a un archivo temporal y no a la "
+"memoria."
+
+#. Tag: para
+#: Controls.xml:1014
+#, no-c-format
+msgid ""
+"<literal>maxRequestSize</literal> &mdash; the maximum size of a file upload "
+"request, in bytes."
+msgstr ""
+"<literal>maxRequestSize</literal> &mdash; el tamaño máximo de un pedido para "
+"cargar un archivo, en bytes."
+
+#. Tag: para
+#: Controls.xml:1019
+#, no-c-format
+msgid "Here&#39;s an example:"
+msgstr "Este es un ejemplo: "
+
+#. Tag: programlisting
+#: Controls.xml:1022
+#, no-c-format
+msgid ""
+"&lt;component class=\"org.jboss.seam.web.MultipartFilter\"&gt;\n"
+"      &lt;property name=\"createTempFiles\"&gt;true&lt;/property&gt;\n"
+"      &lt;property name=\"maxRequestSize\"&gt;1000000&lt;/property&gt;\n"
+"  &lt;/component&gt;"
+msgstr ""
+"&lt;component class=\"org.jboss.seam.web.MultipartFilter\"&gt;\n"
+"      &lt;property name=\"createTempFiles\"&gt;true&lt;/property&gt;\n"
+"      &lt;property name=\"maxRequestSize\"&gt;1000000&lt;/property&gt;\n"
+"  &lt;/component&gt;"
+
+#. Tag: para
+#: Controls.xml:1028
+#, no-c-format
+msgid ""
+"<literal>data</literal> &mdash; this value binding receives the binary file "
+"data. The receiving field should be declared as a <literal>byte[]</literal> "
+"or <literal>InputStream</literal> (required)."
+msgstr ""
+"<literal>data</literal> &mdash; esta vinculación de valor recibe datos de "
+"archivos binarios. El campo que recibe debe declarase como un <literal>byte[]"
+"</literal> o <literal>InputStream</literal> (requerido)."
+
+#. Tag: para
+#: Controls.xml:1033
+#, no-c-format
+msgid ""
+"<literal>contentType</literal> &mdash; this value binding receives the "
+"file&#39;s content type (optional)."
+msgstr ""
+"<literal>contentType</literal> &mdash; este valor de vinculación recibe el "
+"tipo de contenido del archivo (opcional). "
+
+#. Tag: para
+#: Controls.xml:1038
+#, no-c-format
+msgid ""
+"<literal>fileName</literal> &mdash; this value binding receives the filename "
+"(optional)."
+msgstr ""
+"<literal>fileName</literal> &mdash; este valor de vinculación recibe el "
+"nombre del archivo (opcional)."
+
+#. Tag: para
+#: Controls.xml:1043
+#, no-c-format
+msgid ""
+"<literal>accept</literal> &mdash; a comma-separated list of content types to "
+"accept, may not be supported by the browser. E.g. <literal>\"images/png,"
+"images/jpg\"</literal>, <literal>\"images/*\"</literal>."
+msgstr ""
+"<literal>accept</literal> &mdash; una lista separada por comas de los tipos "
+"de contenido a aceptar, puede que no estén soportados por el navegador, por "
+"ejemplo, <literal>\"images/png,images/jpg\"</literal>, <literal>\"images/*"
+"\"</literal>."
+
+#. Tag: para
+#: Controls.xml:1048
+#, no-c-format
+msgid "<literal>style</literal> &mdash; The control&#39;s style"
+msgstr "<literal>style</literal> &mdash; El estilo de control. "
+
+#. Tag: para
+#: Controls.xml:1053
+#, no-c-format
+msgid "<literal>styleClass</literal> &mdash; The control&#39;s style class"
+msgstr "<literal>styleClass</literal> &mdash; La clase de estilo del control. "
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Conversations.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Conversations.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Conversations.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1654 @@
+# translation of Conversations.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Manuel Ospina <mospina at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Conversations\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 01:04+0000\n"
+"PO-Revision-Date: 2007-10-25 14:20+1000\n"
+"Last-Translator: Angela Garcia\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Conversations.xml:6
+#, no-c-format
+msgid "Conversations and workspace management"
+msgstr "Administración del espacio de trabajo y de conversaciones"
+
+#. Tag: para
+#: Conversations.xml:7
+#, no-c-format
+msgid "It&#39;s time to understand Seam&#39;s conversation model in more detail."
+msgstr "Es hora de entender el modelo de conversación de Seam en más detalle. "
+
+#. Tag: para
+#: Conversations.xml:10
+#, no-c-format
+msgid ""
+"Historically, the notion of a Seam \"conversation\" came about as a merger "
+"of three different ideas:"
+msgstr ""
+"Históricamente, la noción de \"conversación\" en Seam proviene de tres ideas "
+"diferentes:"
+
+#. Tag: para
+#: Conversations.xml:15
+#, no-c-format
+msgid ""
+"The idea of a <emphasis>workspace</emphasis>, which I encountered in a "
+"project for the Victorian government in 2002. In this project I was forced "
+"to implement workspace management on top of Struts, an experience I pray "
+"never to repeat."
+msgstr ""
+"La idea de <emphasis>espacio de trabajo</emphasis>, la cual encontré en un "
+"proyecto para el gobierno de Victoria en 2002. En aquel proyecto tuve que "
+"implementar la administración de espacios de trabajo sobre Struts, lo cual "
+"fue una experiencia que no me gustaría repetir."
+
+#. Tag: para
+#: Conversations.xml:20
+#, no-c-format
+msgid ""
+"The idea of an <emphasis>application transaction</emphasis> with optimistic "
+"semantics, and the realization that existing frameworks based around a "
+"stateless architecture could not provide effective management of extended "
+"persistence contexts. (The Hibernate team is truly fed up with copping the "
+"blame for <literal>LazyInitializationException</literal>s, which are not "
+"really Hibernate&#39;s fault, but rather the fault of the extremely limiting "
+"persistence context model supported by stateless architectures such as the "
+"Spring framework or the traditional <emphasis>stateless session facade</"
+"emphasis> (anti)pattern in J2EE.)"
+msgstr ""
+"La idea de una <emphasis>transacción de aplicación</emphasis> con semántica "
+"optimista y la comprensión de que los marcos de trabajo existentes basados "
+"alrededor de arquitecturas sin estado no podían proporcionar administración "
+"extendida de contextos persistentes, (el equipo de Hibernate está cansado de "
+"ser culpado por la excepción <literal>LazyInitializationException</literal>, "
+"la cual en realidad no es culpa de Hibernate sino del extremadamente "
+"limitado modelo de persistencia soportado por las arquitecturas sin estado "
+"tales como Spring o la tradicional <emphasis>fachada de sesión sin estado</"
+"emphasis> (anti)patrón en J2EE)."
+
+#. Tag: para
+#: Conversations.xml:25
+#, no-c-format
+msgid "The idea of a workflow <emphasis>task</emphasis>."
+msgstr "La idea de <emphasis>tareas</emphasis> de flujo de trabajo."
+
+#. Tag: para
+#: Conversations.xml:30
+#, no-c-format
+msgid ""
+"By unifying these ideas and providing deep support in the framework, we have "
+"a powerful construct that lets us build richer and more efficient "
+"applications with less code than before."
+msgstr ""
+"Al unificar estas ideas y al proporcionar un profundo soporte en el marco de "
+"trabajo hemos construido un poderoso armazón que permite la construcción de "
+"aplicaciones más efectivas y completas con menos código."
+
+#. Tag: title
+#: Conversations.xml:34
+#, no-c-format
+msgid "Seam&#39;s conversation model"
+msgstr "El modelo conversacional de Seam "
+
+#. Tag: para
+#: Conversations.xml:35
+#, no-c-format
+msgid ""
+"The examples we have seen so far make use of a very simple conversation "
+"model that follows these rules:"
+msgstr ""
+"Los ejemplos que hemos visto hasta ahora hacen uso de un modelo "
+"conversacional bastante sencillo que sigue las siguientes reglas:"
+
+#. Tag: para
+#: Conversations.xml:40
+#, no-c-format
+msgid ""
+"There is always a conversation context active during the apply request "
+"values, process validations, update model values, invoke application and "
+"render response phases of the JSF request lifecycle."
+msgstr ""
+"Siempre hay un contexto activo de conversación durante la aplicación de "
+"valores de la solicitud, las validaciones de procesos, la actualización de "
+"valores del modelo, la invocación de la aplicación y las fases de entrega de "
+"la respuesta del ciclo de vida de una solicitud JSF."
+
+#. Tag: para
+#: Conversations.xml:45
+#, no-c-format
+msgid ""
+"At the end of the restore view phase of the JSF request lifecycle, Seam "
+"attempts to restore any previous long-running conversation context. If none "
+"exists, Seam creates a new temporary conversation context."
+msgstr ""
+"Al final de la fase de restauración de vistas del ciclo de vida de la "
+"petición JSF, Seam intenta restaurar cualquier contexto de conversación "
+"prolongado. Si no existe ninguno, Seam crea un contexto de conversación "
+"temporal."
+
+#. Tag: para
+#: Conversations.xml:50
+#, no-c-format
+msgid ""
+"When an <literal>@Begin</literal> method is encountered, the temporary "
+"conversation context is promoted to a long running conversation."
+msgstr ""
+"Cuando se encuentra un método <literal>@Begin</literal>, el contexto de "
+"conversación temporal es promocionado a una conversación prolongada."
+
+#. Tag: para
+#: Conversations.xml:55
+#, no-c-format
+msgid ""
+"When an <literal>@End</literal> method is encountered, any long-running "
+"conversation context is demoted to a temporary conversation."
+msgstr ""
+"Cuando se encuentra un método <literal>@End</literal>, cualquier contexto de "
+"conversación prolongada es degradado a una conversación temporal."
+
+#. Tag: para
+#: Conversations.xml:60
+#, no-c-format
+msgid ""
+"At the end of the render response phase of the JSF request lifecycle, Seam "
+"stores the contents of a long running conversation context or destroys the "
+"contents of a temporary conversation context."
+msgstr ""
+"Al final de la fase de entrega de la respuesta del ciclo de vida de la "
+"petición JSF, Seam almacena el contenido de un contexto de conversación "
+"prolongado o destruye el contenido de un contexto de conversación temporal."
+
+#. Tag: para
+#: Conversations.xml:65
+#, no-c-format
+msgid ""
+"Any faces request (a JSF postback) will propagate the conversation context. "
+"By default, non-faces requests (GET requests, for example) do not propagate "
+"the conversation context, but see below for more information on this."
+msgstr ""
+"Cualquier petición de faces (un postback JSF) propagará el contexto de "
+"conversación. Por defecto, las peticiones que no son de faces (por ejemplo, "
+"las peticiones GET) no propagan el contexto de conversación pero a "
+"continuación encontrará más información sobre esto."
+
+#. Tag: para
+#: Conversations.xml:70
+#, no-c-format
+msgid ""
+"If the JSF request lifecycle is foreshortened by a redirect, Seam "
+"transparently stores and restores the current conversation context&mdash;"
+"unless the conversation was already ended via <literal>@End"
+"(beforeRedirect=true)</literal>."
+msgstr ""
+"Si el ciclo de vida de una solicitud JSF recibe una redirección, Seam "
+"almacena de forma transparente y restaura el contexto de conversación "
+"actual&mdash; a menos de que la conversación haya sido finalizada con "
+"<literal>@End(beforeRedirect=true)</literal>. "
+
+#. Tag: para
+#: Conversations.xml:75
+#, no-c-format
+msgid ""
+"Seam transparently propagates the conversation context across JSF postbacks "
+"and redirects. If you don&#39;t do anything special, a <emphasis>non-faces "
+"request</emphasis> (a GET request for example) will not propagate the "
+"conversation context and will be processed in a new temporary conversation. "
+"This is usually - but not always - the desired behavior."
+msgstr ""
+"Seam propaga de manera transparente el contexto de conversación a través de "
+"los postbacks JSF y redirecciona. Si no hace nada raro un <emphasis>pedido "
+"que no es de faces </emphasis> (por ejemplo, una petición GET) no propagará "
+"el contexto de conversación y será procesado en una nueva conversación "
+"temporal. Usualmente -aunque no siempre- este es el comportamiento deseado. "
+
+#. Tag: para
+#: Conversations.xml:78
+#, no-c-format
+msgid ""
+"If you want to propagate a Seam conversation across a non-faces request, you "
+"need to explicitly code the Seam <emphasis>conversation id</emphasis> as a "
+"request parameter:"
+msgstr ""
+"Si quiere propagar una conversación Seam a través de una petición que no es "
+"de faces, necesita codificar explícitamente el <emphasis>id de conversación</"
+"emphasis> de Seam como una parámetro de petición:"
+
+#. Tag: programlisting
+#: Conversations.xml:81
+#, no-c-format
+msgid ""
+"&lt;a href=\"main.jsf?conversationId=#{conversation.id}\"&gt;Continue&lt;/"
+"a&gt;"
+msgstr ""
+"&lt;a href=\"main.jsf?conversationId=#{conversation.id}\"&gt;Continue&lt;/"
+"a&gt;"
+
+#. Tag: para
+#: Conversations.xml:82
+#, no-c-format
+msgid "Or, the more JSF-ish:"
+msgstr "O con un estilo más acorde con JSF:"
+
+#. Tag: programlisting
+#: Conversations.xml:85
+#, no-c-format
+msgid ""
+"&lt;h:outputLink value=\"main.jsf\"&gt;\n"
+"    &lt;f:param name=\"conversationId\" value=\"#{conversation.id}\"/&gt;\n"
+"    &lt;h:outputText value=\"Continue\"/&gt;\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+"&lt;h:outputLink value=\"main.jsf\"&gt;\n"
+"    &lt;f:param name=\"conversationId\" value=\"#{conversation.id}\"/&gt;\n"
+"    &lt;h:outputText value=\"Continue\"/&gt;\n"
+"&lt;/h:outputLink&gt;"
+
+#. Tag: para
+#: Conversations.xml:86 Conversations.xml:94
+#, no-c-format
+msgid "If you use the Seam tag library, this is equivalent:"
+msgstr "Si está usando una biblioteca de etiquetas Seam, lo siguiente es equivalente:"
+
+#. Tag: programlisting
+#: Conversations.xml:89
+#, no-c-format
+msgid ""
+"&lt;h:outputLink value=\"main.jsf\"&gt;\n"
+"    &lt;s:conversationId/&gt;\n"
+"    &lt;h:outputText value=\"Continue\"/&gt;\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+"&lt;h:outputLink value=\"main.jsf\"&gt;\n"
+"    &lt;s:conversationId/&gt;\n"
+"    &lt;h:outputText value=\"Continue\"/&gt;\n"
+"&lt;/h:outputLink&gt;"
+
+#. Tag: para
+#: Conversations.xml:90
+#, no-c-format
+msgid ""
+"If you wish to disable propagation of the conversation context for a "
+"postback, a similar trick is used:"
+msgstr ""
+"Si quiere deshabilitar la propagación del contexto de conversación para un "
+"postback se utiliza un truco similar:"
+
+#. Tag: programlisting
+#: Conversations.xml:93
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;f:param name=\"conversationPropagation\" value=\"none\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;f:param name=\"conversationPropagation\" value=\"none\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+
+#. Tag: programlisting
+#: Conversations.xml:97
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"none\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"none\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+
+#. Tag: para
+#: Conversations.xml:98
+#, no-c-format
+msgid ""
+"Note that disabling conversation context propagation is absolutely not the "
+"same thing as ending the conversation."
+msgstr ""
+"Tenga en cuenta que la desactivación de la propagación de un contexto de "
+"conversación no es lo mismo que la finalización de la conversación."
+
+#. Tag: para
+#: Conversations.xml:101
+#, no-c-format
+msgid ""
+"The <literal>conversationPropagation</literal> request parameter, or the "
+"<literal>&lt;s:conversationPropagation&gt;</literal> tag may even be used to "
+"begin and end conversation, or begin a nested conversation."
+msgstr ""
+"El parámetro de solicitud <literal>conversationPropagation</literal> o la "
+"etiqueta <literal>&lt;s:conversationPropagation&gt;</literal> se pueden utilizar para iniciar o finalizar una conversación o iniciar una conversación "
+"anidada."
+
+#. Tag: programlisting
+#: Conversations.xml:104
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"end\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"end\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+
+#. Tag: programlisting
+#: Conversations.xml:105
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Child\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"nested\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+"&lt;h:commandLink action=\"main\" value=\"Select Child\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"nested\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+
+#. Tag: programlisting
+#: Conversations.xml:106
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Hotel\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"begin\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+"&lt;h:commandLink action=\"main\" value=\"Select Hotel\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"begin\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+
+#. Tag: programlisting
+#: Conversations.xml:107
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Hotel\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"join\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+"&lt;h:commandLink action=\"main\" value=\"Select Hotel\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"join\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+
+#. Tag: para
+#: Conversations.xml:108
+#, no-c-format
+msgid ""
+"This conversation model makes it easy to build applications which behave "
+"correctly with respect to multi-window operation. For many applications, "
+"this is all that is needed. Some complex applications have either or both of "
+"the following additional requirements:"
+msgstr ""
+"Este modelo de conversaciones facilita la construcción de aplicaciones que "
+"se comportan correctamente con respecto a operaciones con varias ventanas. "
+"Para muchas aplicaciones, esto es todo lo que se necesita. Algunas "
+"aplicaciones más complejas tienen alguno de los siguientes requerimientos "
+"adicionales:"
+
+#. Tag: para
+#: Conversations.xml:113
+#, no-c-format
+msgid ""
+"A conversation spans many smaller units of user interaction, which execute "
+"serially or even concurrently. The smaller <emphasis>nested conversations</"
+"emphasis> have their own isolated set of conversation state, and also have "
+"access to the state of the outer conversation."
+msgstr ""
+"Una conversación abarca varias unidades de interacción con el usuario, las "
+"cuales se ejecutan de forma serial o concurrente. Las "
+"<emphasis>conversaciones anidadas</emphasis> más pequeñas tienen sus propios "
+"estados de conversaciones aisladas y tienen acceso al estado de otras "
+"conversaciones."
+
+#. Tag: para
+#: Conversations.xml:118
+#, no-c-format
+msgid ""
+"The user is able to switch between many conversations within the same "
+"browser window. This feature is called <emphasis>workspace management</"
+"emphasis>."
+msgstr ""
+"El usuario puede pasar de una conversación a otra entre la misma ventana del "
+"navegador. Esta funcionalidad es llamada <emphasis>administración del "
+"espacio de trabajo</emphasis>."
+
+#. Tag: title
+#: Conversations.xml:126
+#, no-c-format
+msgid "Nested conversations"
+msgstr "Conversaciones anidadas"
+
+#. Tag: para
+#: Conversations.xml:127
+#, no-c-format
+msgid ""
+"A nested conversation is created by invoking a method marked <literal>@Begin"
+"(nested=true)</literal> inside the scope of an existing conversation. A "
+"nested conversation has its own conversation context, and also has read-only "
+"access to the context of the outer conversation. (It can read the outer "
+"conversation&#39;s context variables, but not write to them.) When an "
+"<literal>@End</literal> is subsequently encountered, the nested conversation "
+"will be destroyed, and the outer conversation will resume, by \"popping\" "
+"the conversation stack. Conversations may be nested to any arbitrary depth."
+msgstr ""
+"Una conversación anidada se crea invocando un método marcado con "
+"<literal>@Begin(nested=true)</literal> dentro del ámbito de una conversación "
+"existente. Una conversación anidada tiene su propio contexto de conversación "
+"y también tiene acceso de sólo lectura a los contextos de otras "
+"conversaciones (puede leer las variables de los contextos de conversaciones "
+"externas pero no puede modificarlas). Cuando se encuentra con un "
+"<literal>@End</literal>, la conversación anidada será destruida y la "
+"conversación exterior será retomada desde la pila de conversaciones. Las "
+"conversaciones pueden ser anidadas hasta una profundidad arbitraria. "
+
+#. Tag: para
+#: Conversations.xml:130
+#, no-c-format
+msgid ""
+"Certain user activity (workspace management, or the back button) can cause "
+"the outer conversation to be resumed before the inner conversation is ended. "
+"In this case it is possible to have multiple concurrent nested conversations "
+"belonging to the same outer conversation. If the outer conversation ends "
+"before a nested conversation ends, Seam destroys all nested conversation "
+"contexts along with the outer context."
+msgstr ""
+"Algunas actividades del usuario (administración de espacio de trabajo o el "
+"botón de retorno) pueden causar que la conversación exterior sea retomada "
+"antes de que la conversación interna finalice. En dicho caso es posible "
+"tener varias conversaciones anidadas concurrentes que pertenecen a la misma "
+"conversación exterior. Si la conversación externa termina antes de que la "
+"conversación anidada finalice, Seam destruye todas los contextos de "
+"conversaciones anidadas junto con el contexto exterior."
+
+#. Tag: para
+#: Conversations.xml:133
+#, no-c-format
+msgid ""
+"A conversation may be thought of as a <emphasis>continuable state</"
+"emphasis>. Nested conversations allow the application to capture a "
+"consistent continuable state at various points in a user interaction, thus "
+"insuring truly correct behavior in the face of backbuttoning and workspace "
+"management."
+msgstr ""
+"Una conversación puede ser entendida como un <emphasis>estado de "
+"continuación</emphasis>. Las conversaciones anidadas permiten que la "
+"aplicación capture un estado de continuación consistente en diferentes "
+"periodos de la interacción del usuario. Permitiendo así un comportamiento "
+"correcto en el caso de administración de espacios de trabajo o de la acción "
+"del botón de regreso."
+
+#. Tag: para
+#: Conversations.xml:136
+#, no-c-format
+msgid ""
+"TODO: an example to show how a nested conversation prevents bad stuff "
+"happening when you backbutton."
+msgstr ""
+"TODO: an example to show how a nested conversation prevents bad stuff "
+"happening when you backbutton. "
+
+#. Tag: para
+#: Conversations.xml:139
+#, no-c-format
+msgid ""
+"Usually, if a component exists in a parent conversation of the current "
+"nested conversation, the nested conversation will use the same instance. "
+"Occasionally, it is useful to have a different instance in each nested "
+"conversation, so that the component instance that exists in the parent "
+"conversation is invisible to its child conversations. You can achieve this "
+"behavior by annotating the component <literal>@PerNestedConversation</"
+"literal>."
+msgstr ""
+"Usualmente, si existe un componente en una conversación externa de la "
+"conversación anidada actual, la conversación anidada usará la misma "
+"instancia. Ocasionalmente es útil tener una instancia diferente en cada "
+"conversación anidada para que la instancia del componente que existe en la "
+"conversación exterior sea invisible a la conversación interna. Se puede "
+"obtener este comportamiento anotando el componente "
+"<literal>@PerNestedConversation</literal>."
+
+#. Tag: title
+#: Conversations.xml:145
+#, no-c-format
+msgid "Starting conversations with GET requests"
+msgstr "Iniciación de conversaciones con solicitudes GET"
+
+#. Tag: para
+#: Conversations.xml:146
+#, no-c-format
+msgid ""
+"JSF does not define any kind of action listener that is triggered when a "
+"page is accessed via a non-faces request (for example, a HTTP GET request). "
+"This can occur if the user bookmarks the page, or if we navigate to the page "
+"via an <literal>&lt;h:outputLink&gt;</literal>."
+msgstr ""
+"JSF no define ninguna clase de escucha de acciones a disparar cuando se "
+"accede a una página por medio de una petición que no es de faces (por "
+"ejemplo, una petición GET HTTP). Esto puede ocurrir si el usuario agrega "
+"esta página a sus favoritos o si navegamos a la página por medio de un "
+"<literal>&lt;h:outputLink&gt;</literal>."
+
+#. Tag: para
+#: Conversations.xml:149
+#, no-c-format
+msgid ""
+"Sometimes we want to begin a conversation immediately the page is accessed. "
+"Since there is no JSF action method, we can&#39;t solve the problem in the "
+"usual way, by annotating the action with <literal>@Begin</literal>."
+msgstr ""
+"Algunas veces se quiere que la conversación inicie de manera inmediata al "
+"acceder a la página. Ya que no hay un método de acción JFS, no se puede "
+"resolver el problema de la manera normal con la anotación de acción "
+"<literal>@Begin</literal>. "
+
+#. Tag: para
+#: Conversations.xml:152
+#, no-c-format
+msgid ""
+"A further problem arises if the page needs some state to be fetched into a "
+"context variable. We&#39;ve already seen two ways to solve this problem. If "
+"that state is held in a Seam component, we can fetch the state in a "
+"<literal>@Create</literal> method. If not, we can define a "
+"<literal>@Factory</literal> method for the context variable."
+msgstr ""
+"Otro problema surge si la página necesita un estado de una variable de "
+"contexto. Ya hemos visto dos maneras de solucionar este problema. Si este "
+"estado se encuentra en un componente Seam entonces podemos obtener el estado "
+"en un método <literal>@Create</literal>. Si no, se puede definir un método "
+"<literal>@Factory</literal> para la variable del contexto."
+
+#. Tag: para
+#: Conversations.xml:155
+#, no-c-format
+msgid ""
+"If none of these options works for you, Seam lets you define a "
+"<emphasis>page action</emphasis> in the <literal>pages.xml</literal> file."
+msgstr ""
+"Si ninguna de estas opciones funciona para usted, Seam le deja definir una "
+"<emphasis>acción de página</emphasis> en el archivo <literal>pages.xml</"
+"literal>."
+
+#. Tag: programlisting
+#: Conversations.xml:158
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\" action=\"#{messageManager.list}\"/"
+"&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\" action=\"#{messageManager.list}\"/"
+"&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Conversations.xml:159
+#, no-c-format
+msgid ""
+"This action method is called at the beginning of the render response phase, "
+"any time the page is about to be rendered. If a page action returns a non-"
+"null outcome, Seam will process any appropriate JSF and Seam navigation "
+"rules, possibly resulting in a completely different page being rendered."
+msgstr ""
+"Esté método de acción es llamado al principio de la fase de entrega de la "
+"respuesta, en cualquier momento que la página vaya a ser entregada. Si una "
+"acción de página retorna un valor, Seam procesará cualquier regla Seam y JFS "
+"apropiado. Ésto puede resultar en la entrega de una página completamente "
+"diferente."
+
+#. Tag: para
+#: Conversations.xml:162
+#, no-c-format
+msgid ""
+"If <emphasis>all</emphasis> you want to do before rendering the page is "
+"begin a conversation, you could use a built-in action method that does just "
+"that:"
+msgstr ""
+"Si <emphasis>todo</emphasis> lo que quiere antes de entregar una página es "
+"iniciar una conversación, puede utilizar el método de acción interno que "
+"tiene exactamente esa función:"
+
+#. Tag: programlisting
+#: Conversations.xml:165
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\" action=\"#{conversation.begin}\"/"
+"&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\" action=\"#{conversation.begin}\"/"
+"&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Conversations.xml:166
+#, no-c-format
+msgid ""
+"Note that you can also call this built-in action from a JSF control, and, "
+"similarly, you can use <literal>#{conversation.end}</literal> to end "
+"conversations."
+msgstr ""
+"Tenga en cuenta que también puede llamar esta acción desde un control JSF y, "
+"de forma similar, puede utilizar <literal>#{conversation.end}</literal> para "
+"terminar la conversación."
+
+#. Tag: para
+#: Conversations.xml:169
+#, no-c-format
+msgid ""
+"If you want more control, to join existing conversations or begin a nested "
+"conversion, to begin a pageflow or an atomic conversation, you should use "
+"the <literal>&lt;begin-conversation&gt;</literal> element."
+msgstr ""
+"Si desea más control, por ejemplo entrar a una conversación o iniciar una "
+"conversación anidada, para iniciar un flujo de páginas o una conversación "
+"atómica, usted debe utilizar el elemento <literal>&lt;begin-conversation&gt;"
+"</literal>."
+
+#. Tag: programlisting
+#: Conversations.xml:172
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\"&gt;\n"
+"       &lt;begin-conversation nested=\"true\" pageflow=\"AddItem\"/&gt;\n"
+"    &lt;page&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\"&gt;\n"
+"       &lt;begin-conversation nested=\"true\" pageflow=\"AddItem\"/&gt;\n"
+"    &lt;page&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Conversations.xml:173
+#, no-c-format
+msgid "There is also an <literal>&lt;end-conversation&gt;</literal> element."
+msgstr "También hay un elemento <literal>&lt;end-conversation&gt;</literal>."
+
+#. Tag: programlisting
+#: Conversations.xml:176
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/home.jsp\"&gt;\n"
+"       &lt;end-conversation/&gt;\n"
+"    &lt;page&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/home.jsp\"&gt;\n"
+"       &lt;end-conversation/&gt;\n"
+"    &lt;page&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Conversations.xml:177
+#, no-c-format
+msgid "To solve the first problem, we now have five options:"
+msgstr "Hay cinco opciones para resolver el primer problema:"
+
+#. Tag: para
+#: Conversations.xml:182
+#, no-c-format
+msgid "Annotate the <literal>@Create</literal> method with <literal>@Begin</literal>"
+msgstr "Anotar el método <literal>@Create</literal> con <literal>@Begin</literal>"
+
+#. Tag: para
+#: Conversations.xml:187
+#, no-c-format
+msgid ""
+"Annotate the <literal>@Factory</literal> method with <literal>@Begin</"
+"literal>"
+msgstr "Anotar el método <literal>@Factory</literal> con <literal>@Begin</literal>"
+
+#. Tag: para
+#: Conversations.xml:192
+#, no-c-format
+msgid "Annotate the Seam page action method with <literal>@Begin</literal>"
+msgstr "Anotar el método de acción de página Seam con <literal>@Begin</literal>"
+
+#. Tag: para
+#: Conversations.xml:197
+#, no-c-format
+msgid ""
+"Use <literal>&lt;begin-conversation&gt;</literal> in <literal>pages.xml</"
+"literal>."
+msgstr ""
+"Utilizar <literal>&lt;begin-conversation&gt;</literal> en <literal>pages."
+"xml</literal>"
+
+#. Tag: para
+#: Conversations.xml:202
+#, no-c-format
+msgid "Use <literal>#{conversation.begin}</literal> as the Seam page action method"
+msgstr ""
+"Utilizar <literal>#{conversation.begin}</literal> como el método de acción "
+"de página de Seam"
+
+#. Tag: title
+#: Conversations.xml:210
+#, no-c-format
+msgid ""
+"Using <literal>&lt;s:link&gt;</literal> and <literal>&lt;s:button&gt;</"
+"literal>"
+msgstr "Uso de <literal>&lt;s:link&gt;</literal> y<literal>&lt;s:button&gt;</literal>"
+
+#. Tag: para
+#: Conversations.xml:211
+#, no-c-format
+msgid ""
+"JSF command links always perform a form submission via JavaScript, which "
+"breaks the web browser&#39;s \"open in new window\" or \"open in new tab\" "
+"feature. In plain JSF, you need to use an <literal>&lt;h:outputLink&gt;</"
+"literal> if you need this functionality. But there are two major limitations "
+"to <literal>&lt;h:outputLink&gt;</literal>."
+msgstr ""
+"Los enlaces de comandos JFS siempre envían los formularios a través de "
+"JavaScript. Esta acción anula las funcionalidades \"abrir en nueva ventana\" "
+"y \"abrir en nueva pestaña\" de los navegadores web. En JSF, debe utilizar "
+"<literal>&lt;h:outputLink&gt;</literal> si desea usar dichas "
+"funcionalidades. Sin embargo, hay dos grandes limitaciones en <literal>&lt;h:"
+"outputLink&gt;</literal>."
+
+#. Tag: para
+#: Conversations.xml:216
+#, no-c-format
+msgid ""
+"JSF provides no way to attach an action listener to an <literal>&lt;h:"
+"outputLink&gt;</literal>."
+msgstr ""
+"JSF no proporciona una manera de adjuntar un escucha de acciones a un "
+"<literal>&lt;h:outputLink&gt;</literal>."
+
+#. Tag: para
+#: Conversations.xml:221
+#, no-c-format
+msgid ""
+"JSF does not propagate the selected row of a <literal>DataModel</literal> "
+"since there is no actual form submission."
+msgstr ""
+"JSF no propaga la fila seleccionada de un <literal>DataModel</literal> ya "
+"que no hay envió de formulario como tal."
+
+#. Tag: para
+#: Conversations.xml:226
+#, no-c-format
+msgid ""
+"Seam provides the notion of a <emphasis>page action</emphasis> to help solve "
+"the first problem, but this does nothing to help us with the second problem. "
+"We <emphasis>could</emphasis> work around this by using the RESTful approach "
+"of passing a request parameter and requerying for the selected object on the "
+"server side. In some cases&mdash;such as the Seam blog example "
+"application&mdash;this is indeed the best approach. The RESTful style "
+"supports bookmarking, since it does not require server-side state. In other "
+"cases, where we don&#39;t care about bookmarks, the use of "
+"<literal>@DataModel</literal> and <literal>@DataModelSelection</literal> is "
+"just so convenient and transparent!"
+msgstr ""
+"Seam proporciona la noción de <emphasis>acción de página</emphasis> para "
+"ayudar a resolver el primer problema pero no ayuda a resolver el segundo. Se "
+"<emphasis>podría</emphasis> usar un método basado en RESTful para pasar el "
+"parámetro solicitado y pedir el objeto seleccionado en el lado del servidor. "
+"En algunos casos &mdash;como en la aplicación blog de ejemplo en Seam&mdash; "
+"ésta es la mejor opción. Al usar un método basado RESTful se obtiene el "
+"soporte de marcadores ya que éste no requiere de un estado del lado del "
+"servidor. En otros casos, en donde los marcadores no son importantes, el uso "
+"de <literal>@DataModel</literal> y <literal>@DataModelSelection</literal> es "
+"bastante ¡conveniente y transparente!"
+
+#. Tag: para
+#: Conversations.xml:229
+#, no-c-format
+msgid ""
+"To fill in this missing functionality, and to make conversation propagation "
+"even simpler to manage, Seam provides the <literal>&lt;s:link&gt;</literal> "
+"JSF tag."
+msgstr ""
+"Para cubrir esta carencia y para que la propagación de la conversación sea "
+"aun más sencilla de administrar, Seam proporciona la etiqueta JSF "
+"<literal>&lt;s:link&gt;</literal>."
+
+#. Tag: para
+#: Conversations.xml:232
+#, no-c-format
+msgid "The link may specify just the JSF view id:"
+msgstr "El enlace puede especificar el id de la vista JSF:"
+
+#. Tag: programlisting
+#: Conversations.xml:235
+#, no-c-format
+msgid "&lt;s:link view=“/login.xhtml” value=“Login”/&gt;"
+msgstr "&lt;s:link view=“/login.xhtml” value=“Login”/&gt;"
+
+#. Tag: para
+#: Conversations.xml:236
+#, no-c-format
+msgid ""
+"Or, it may specify an action method (in which case the action outcome "
+"determines the page that results):"
+msgstr ""
+"O puede especificar un método de acción (en dicho caso la acción determina "
+"la página resultante):"
+
+#. Tag: programlisting
+#: Conversations.xml:239
+#, no-c-format
+msgid "&lt;s:link action=“#{login.logout}” value=“Logout”/&gt;"
+msgstr "&lt;s:link action=“#{login.logout}” value=“Logout”/&gt;"
+
+#. Tag: para
+#: Conversations.xml:240
+#, no-c-format
+msgid ""
+"If you specify <emphasis>both</emphasis> a JSF view id and an action method, "
+"the &#39;view&#39; will be used <emphasis>unless</emphasis> the action "
+"method returns a non-null outcome:"
+msgstr ""
+"Si especifica tanto el id de la vista JSF como un método de acción, la vista "
+"será usada <emphasis>a menos</emphasis> de que el método de acción retorne "
+"algún valor: "
+
+#. Tag: programlisting
+#: Conversations.xml:243
+#, no-c-format
+msgid ""
+"&lt;s:link view=\"/loggedOut.xhtml\"  action=“#{login.logout}” "
+"value=“Logout”/&gt;"
+msgstr ""
+"&lt;s:link view=\"/loggedOut.xhtml\"  action=“#{login.logout}” "
+"value=“Logout”/&gt;"
+
+#. Tag: para
+#: Conversations.xml:244
+#, no-c-format
+msgid ""
+"The link automatically propagates the selected row of a <literal>DataModel</"
+"literal> using inside <literal>&lt;h:dataTable&gt;</literal>:"
+msgstr ""
+"El enlace propaga automáticamente la fila seleccionada de un "
+"<literal>DataModel</literal> usando <literal>&lt;h:dataTable&gt;</literal>:"
+
+#. Tag: programlisting
+#: Conversations.xml:247
+#, no-c-format
+msgid ""
+"&lt;s:link view=“/hotel.xhtml” action=“#{hotelSearch.selectHotel}” value=“#"
+"{hotel.name}”/&gt;"
+msgstr ""
+"&lt;s:link view=“/hotel.xhtml” action=“#{hotelSearch.selectHotel}” value=“#"
+"{hotel.name}”/&gt;"
+
+#. Tag: para
+#: Conversations.xml:248
+#, no-c-format
+msgid "You can leave the scope of an existing conversation:"
+msgstr "Puede abandonar el alcance de una conversación existente:"
+
+#. Tag: programlisting
+#: Conversations.xml:251
+#, no-c-format
+msgid "&lt;s:link view=“/main.xhtml” propagation=“none”/&gt;"
+msgstr "&lt;s:link view=“/main.xhtml” propagation=“none”/&gt;"
+
+#. Tag: para
+#: Conversations.xml:252
+#, no-c-format
+msgid "You can begin, end, or nest conversations:"
+msgstr "Puede iniciar, finalizar o anidar conversaciones:"
+
+#. Tag: programlisting
+#: Conversations.xml:255
+#, no-c-format
+msgid "&lt;s:link action=“#{issueEditor.viewComment}” propagation=“nest”/&gt;"
+msgstr "&lt;s:link action=“#{issueEditor.viewComment}” propagation=“nest”/&gt;"
+
+#. Tag: para
+#: Conversations.xml:256
+#, no-c-format
+msgid ""
+"If the link begins a conversation, you can even specify a pageflow to be "
+"used:"
+msgstr ""
+"Si el enlace inicia una conversación, puede especificar un flujo de página a "
+"utilizar:"
+
+#. Tag: programlisting
+#: Conversations.xml:259
+#, no-c-format
+msgid ""
+"&lt;s:link action=“#{documentEditor.getDocument}” propagation=“begin” \n"
+"        pageflow=“EditDocument”/&gt;"
+msgstr ""
+"&lt;s:link action=“#{documentEditor.getDocument}” propagation=“begin” \n"
+"        pageflow=“EditDocument”/&gt;"
+
+#. Tag: para
+#: Conversations.xml:260
+#, no-c-format
+msgid "The <literal>taskInstance</literal> attribute if for use in jBPM task lists:"
+msgstr ""
+"El atributo <literal>taskInstance</literal> se usa en las listas de tareas "
+"jBPM:"
+
+#. Tag: programlisting
+#: Conversations.xml:263
+#, no-c-format
+msgid ""
+"&lt;s:link action=“#{documentApproval.approveOrReject}” taskInstance=“#"
+"{task}”/&gt;"
+msgstr ""
+"&lt;s:link action=“#{documentApproval.approveOrReject}” taskInstance=“#"
+"{task}”/&gt;"
+
+#. Tag: para
+#: Conversations.xml:264
+#, no-c-format
+msgid "(See the DVD Store demo application for examples of this.)"
+msgstr "(vea la aplicación de ejemplo de la tienda de DVDs)"
+
+#. Tag: para
+#: Conversations.xml:267
+#, no-c-format
+msgid ""
+"Finally, if you need the \"link\" to be rendered as a button, use "
+"<literal>&lt;s:button&gt;</literal>:"
+msgstr ""
+"Finalmente, si necesita que el \"enlace\" sea leído como un botón, utilice "
+"<literal>&lt;s:button&gt;</literal>:"
+
+#. Tag: programlisting
+#: Conversations.xml:270
+#, no-c-format
+msgid "&lt;s:button action=“#{login.logout}” value=“Logout”/&gt;"
+msgstr "&lt;s:button action=“#{login.logout}” value=“Logout”/&gt;"
+
+#. Tag: title
+#: Conversations.xml:274
+#, no-c-format
+msgid "Success messages"
+msgstr "Mensajes de éxito"
+
+#. Tag: para
+#: Conversations.xml:275
+#, no-c-format
+msgid ""
+"It is quite common to display a message to the user indicating success or "
+"failure of an action. It is convenient to use a JSF <literal>FacesMessage</"
+"literal> for this. Unfortunately, a successful action often requires a "
+"browser redirect, and JSF does not propagate faces messages across "
+"redirects. This makes it quite difficult to display success messages in "
+"plain JSF."
+msgstr ""
+"Es bastante común desplegar un mensaje al usuario indicando que una acción "
+"ha sido exitosa o que ha fallado. Es conveniente utilizar un "
+"<literal>FacesMessage</literal> para ello. Desafortunadamente, una acción "
+"exitosa requiere frecuentemente de una redirección y JFS no propaga este "
+"tipo de mensajes a lo largo de redireccionamientos. Esto hace que sea "
+"difícil mostrar mensajes de éxito utilizando únicamente JFS."
+
+#. Tag: para
+#: Conversations.xml:278
+#, no-c-format
+msgid ""
+"The built in conversation-scoped Seam component named "
+"<literal>facesMessages</literal> solves this problem. (You must have the "
+"Seam redirect filter installed.)"
+msgstr ""
+"El componente interno de Seam <literal>facesMessages</literal> resuelve este "
+"problema (debe tener instalado el filtro de redirección de Seam)."
+
+#. Tag: programlisting
+#: Conversations.xml:281
+#, no-c-format
+msgid ""
+"@Name(\"editDocumentAction\")\n"
+"@Stateless\n"
+"public class EditDocumentBean implements EditDocument {\n"
+"    @In EntityManager em;\n"
+"    @In Document document;\n"
+"    @In FacesMessages facesMessages;\n"
+"    \n"
+"    public String update() {\n"
+"        em.merge(document);\n"
+"        facesMessages.add(\"Document updated\");\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"editDocumentAction\")\n"
+"@Stateless\n"
+"public class EditDocumentBean implements EditDocument {\n"
+"    @In EntityManager em;\n"
+"    @In Document document;\n"
+"    @In FacesMessages facesMessages;\n"
+"    \n"
+"    public String update() {\n"
+"        em.merge(document);\n"
+"        facesMessages.add(\"Document updated\");\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Conversations.xml:282
+#, no-c-format
+msgid ""
+"Any message added to <literal>facesMessages</literal> is used in the very "
+"next render response phase for the current conversation. This even works "
+"when there is no long-running conversation since Seam preserves even "
+"temporary conversation contexts across redirects."
+msgstr ""
+"Cualquier mensaje añadido a <literal>facesMessages</literal> se usa en la "
+"siguiente entrega de la fase de respuesta para la conversación actual. Esto "
+"funciona incluso cuando no hay conversaciones prolongadas ya que Seam "
+"preserva los contextos de conversaciones temporales durante "
+"redireccionamientos."
+
+#. Tag: para
+#: Conversations.xml:285
+#, no-c-format
+msgid "You can even include JSF EL expressions in a faces message summary:"
+msgstr "De hecho, puede incluir expresiones EL JSF en un resumen de mensajes faces:"
+
+#. Tag: programlisting
+#: Conversations.xml:288
+#, no-c-format
+msgid "facesMessages.add(\"Document #{document.title} was updated\");"
+msgstr "facesMessages.add(\"Document #{document.title} was updated\");"
+
+#. Tag: para
+#: Conversations.xml:289
+#, no-c-format
+msgid "You may display the messages in the usual way, for example:"
+msgstr "Puede mostrar el mensaje de la manera usual, por ejemplo:"
+
+#. Tag: programlisting
+#: Conversations.xml:292
+#, no-c-format
+msgid "&lt;h:messages globalOnly=\"true\"/&gt;"
+msgstr "&lt;h:messages globalOnly=\"true\"/&gt;"
+
+#. Tag: title
+#: Conversations.xml:296
+#, no-c-format
+msgid "Using an \"explicit\" conversation id"
+msgstr "Uso de un id de conversación \"explícito\""
+
+#. Tag: para
+#: Conversations.xml:297
+#, no-c-format
+msgid ""
+"Ordinarily, Seam generates a meaningless unique id for each conversation in "
+"each session. You can customize the id value when you begin the conversation."
+msgstr ""
+"Generalmente, Seam genera un id único para cada conversación en cada sesión. "
+"Puede personalizar el valor del id cuando inicie una conversación."
+
+#. Tag: para
+#: Conversations.xml:300
+#, no-c-format
+msgid ""
+"This feature can be used to customize the conversation id generation "
+"algorithm like so:"
+msgstr ""
+"Esta función se puede utilizar para personalizar el algoritmo de generación "
+"de id de conversaciones:"
+
+#. Tag: programlisting
+#: Conversations.xml:303
+#, no-c-format
+msgid ""
+"@Begin(id=\"#{myConversationIdGenerator.nextId}\") \n"
+"public void editHotel() { ... }"
+msgstr ""
+"@Begin(id=\"#{myConversationIdGenerator.nextId}\") \n"
+"public void editHotel() { ... }"
+
+#. Tag: para
+#: Conversations.xml:304
+#, no-c-format
+msgid "Or it can be used to assign a meaningful conversation id:"
+msgstr "O se puede usar para asignar un id de conversación:"
+
+#. Tag: programlisting
+#: Conversations.xml:307
+#, no-c-format
+msgid ""
+"@Begin(id=\"hotel#{hotel.id}\") \n"
+"public String editHotel() { ... }"
+msgstr ""
+"@Begin(id=\"hotel#{hotel.id}\") \n"
+"public String editHotel() { ... }"
+
+#. Tag: programlisting
+#: Conversations.xml:308
+#, no-c-format
+msgid ""
+"@Begin(id=\"hotel#{hotelsDataModel.rowData.id}\") \n"
+"public String selectHotel() { ... }"
+msgstr ""
+"@Begin(id=\"hotel#{hotelsDataModel.rowData.id}\") \n"
+"public String selectHotel() { ... }"
+
+#. Tag: programlisting
+#: Conversations.xml:309
+#, no-c-format
+msgid ""
+"@Begin(id=\"entry#{params[&#39;blogId&#39;]}\")\n"
+"public String viewBlogEntry() { ... }"
+msgstr ""
+"@Begin(id=\"entry#{params[&#39;blogId&#39;]}\")\n"
+"public String viewBlogEntry() { ... }"
+
+#. Tag: programlisting
+#: Conversations.xml:310
+#, no-c-format
+msgid ""
+"@BeginTask(id=\"task#{taskInstance.id}\") \n"
+"public String approveDocument() { ... }"
+msgstr ""
+"@BeginTask(id=\"task#{taskInstance.id}\") \n"
+"public String approveDocument() { ... }"
+
+#. Tag: para
+#: Conversations.xml:311
+#, no-c-format
+msgid ""
+"Clearly, these example result in the same conversation id every time a "
+"particular hotel, blog or task is selected. So what happens if a "
+"conversation with the same conversation id already exists when the new "
+"conversation begins? Well, Seam detects the existing conversation and "
+"redirects to that conversation without running the <literal>@Begin</literal> "
+"method again. This feature helps control the number of workspaces that are "
+"created when using workspace management."
+msgstr ""
+"Claramente, estos ejemplos generan el mismo id de conversación cada vez que "
+"se selecciona un hotel en particular, un blog o una tarea. Entonces, ¿qué "
+"pasa cuando hay una conversación existente con el mismo id? Seam, detecta la "
+"conversación existente y redirecciona a esa conversación sin ejecutar el "
+"método <literal>@Begin</literal> de nuevo. Esta funcionalidad ayuda a "
+"controlar el número de espacios de trabajo que se crean cuando se utiliza "
+"un administrador de espacios de trabajo."
+
+#. Tag: title
+#: Conversations.xml:317
+#, no-c-format
+msgid "Workspace management"
+msgstr "Administración de espacios de trabajo"
+
+#. Tag: para
+#: Conversations.xml:318
+#, no-c-format
+msgid ""
+"Workspace management is the ability to \"switch\" conversations in a single "
+"window. Seam makes workspace management completely transparent at the level "
+"of the Java code. To enable workspace management, all you need to do is:"
+msgstr ""
+"La administración de espacios de trabajo es la habilidad para cambiar "
+"conversaciones en una sola ventana. Seam hace que la administración de "
+"espacios de trabajo sea totalmente transparente a nivel de código Java. Para "
+"activar la administración de espacio de trabajo, todo lo que necesita es:"
+
+#. Tag: para
+#: Conversations.xml:323
+#, no-c-format
+msgid ""
+"Provide <emphasis>description</emphasis> text for each view id (when using "
+"JSF or Seam navigation rules) or page node (when using jPDL pageflows). This "
+"description text is displayed to the user by the workspace switchers."
+msgstr ""
+"Proporcionar un texto <emphasis>descriptivo</emphasis> para cada id de vista "
+"(cuando utilice las reglas de navegación de Seam o JSF) o nodo de página "
+"(cuando utilice flujos de página jPDL). Este texto descriptivo se presenta "
+"al usuario en el interruptor de espacios de trabajo."
+
+#. Tag: para
+#: Conversations.xml:328
+#, no-c-format
+msgid ""
+"Include one or more of the standard workspace switcher JSP or facelets "
+"fragments in your pages. The standard fragments support workspace management "
+"via a drop down menu, a list of conversations, or breadcrumbs."
+msgstr ""
+"Incluya uno o más de los interruptores de espacio de trabajo JSP o "
+"fragmentos facelets en sus páginas. Los fragmentos estándares soportan la "
+"administración del espacio de trabajo por medio de un menú desplegable, una "
+"lista de conversaciones o caminos de navegación."
+
+#. Tag: title
+#: Conversations.xml:333
+#, no-c-format
+msgid "Workspace management and JSF navigation"
+msgstr "Administración de espacios de trabajo y navegación JSF"
+
+#. Tag: para
+#: Conversations.xml:334
+#, no-c-format
+msgid ""
+"When you use JSF or Seam navigation rules, Seam switches to a conversation "
+"by restoring the current <literal>view-id</literal> for that conversation. "
+"The descriptive text for the workspace is defined in a file called "
+"<literal>pages.xml</literal> that Seam expects to find in the <literal>WEB-"
+"INF</literal> directory, right next to <literal>faces-config.xml</literal>:"
+msgstr ""
+"Cuando utilice las reglas de navegación de Seam o JSF, Seam restaura el "
+"<literal>view-id</literal> de la conversación a la cual pasa. El texto "
+"descriptivo para el espacio de trabajo está definido en el archivo "
+"<literal>pages.xml</literal> que Seam busca en el directorio <literal>WEB-"
+"INF</literal> junto a <literal>faces-config.xml</literal>:"
+
+#. Tag: programlisting
+#: Conversations.xml:337
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/main.xhtml\"&gt;Search hotels: #{hotelBooking."
+"searchString}&lt;/page&gt;\n"
+"    &lt;page view-id=\"/hotel.xhtml\"&gt;View hotel: #{hotel.name}&lt;/"
+"page&gt;\n"
+"    &lt;page view-id=\"/book.xhtml\"&gt;Book hotel: #{hotel.name}&lt;/"
+"page&gt;\n"
+"    &lt;page view-id=\"/confirm.xhtml\"&gt;Confirm: #{booking.description}"
+"&lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/main.xhtml\"&gt;Search hotels: #{hotelBooking."
+"searchString}&lt;/page&gt;\n"
+"    &lt;page view-id=\"/hotel.xhtml\"&gt;View hotel: #{hotel.name}&lt;/"
+"page&gt;\n"
+"    &lt;page view-id=\"/book.xhtml\"&gt;Book hotel: #{hotel.name}&lt;/"
+"page&gt;\n"
+"    &lt;page view-id=\"/confirm.xhtml\"&gt;Confirm: #{booking.description}"
+"&lt;/page&gt;\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Conversations.xml:338
+#, no-c-format
+msgid ""
+"Note that if this file is missing, the Seam application will continue to "
+"work perfectly! The only missing functionality will be the ability to switch "
+"workspaces."
+msgstr ""
+"Observe que si este archivo no se encuentra, de todas maneras Seam "
+"funcionará correctamente. La única funcionalidad que faltará es la habilidad "
+"para cambiar de espacios de trabajo."
+
+#. Tag: title
+#: Conversations.xml:344
+#, no-c-format
+msgid "Workspace management and jPDL pageflow"
+msgstr "Administración de espacios de trabajo y flujo de páginas jPDL"
+
+#. Tag: para
+#: Conversations.xml:345
+#, no-c-format
+msgid ""
+"When you use a jPDL pageflow definition, Seam switches to a conversation by "
+"restoring the current jBPM process state. This is a more flexible model "
+"since it allows the same <literal>view-id</literal> to have different "
+"descriptions depending upon the current <literal>&lt;page&gt;</literal> "
+"node. The description text is defined by the <literal>&lt;page&gt;</literal> "
+"node:"
+msgstr ""
+"Cuando utiliza una definición de flujo de páginas jPDL, Seam restaura el "
+"estado del proceso jBPM actual para pasar a una conversación. Esta opción es "
+"mucho más flexible ya que se pueden utilizar diferentes descripciones en el "
+"mismo <literal>view-id</literal> dependiendo del nodo <literal>&lt;page&gt;</"
+"literal> actual. El texto descriptivo es definido por el nodo <literal>&lt;"
+"page&gt;</literal>:"
+
+#. Tag: programlisting
+#: Conversations.xml:348
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"shopping\"&gt;\n"
+"\n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"browse\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;page name=\"browse\" view-id=\"/browse.xhtml\"&gt;\n"
+"      &lt;description&gt;DVD Search: #{search.searchPattern}&lt;/"
+"description&gt;\n"
+"      &lt;transition to=\"browse\"/&gt;\n"
+"      &lt;transition name=\"checkout\" to=\"checkout\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"checkout\" view-id=\"/checkout.xhtml\"&gt;\n"
+"      &lt;description&gt;Purchase: $#{cart.total}&lt;/description&gt;\n"
+"      &lt;transition to=\"checkout\"/&gt;\n"
+"      &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"complete\" view-id=\"/complete.xhtml\"&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+"&lt;pageflow-definition name=\"shopping\"&gt;\n"
+"\n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"browse\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;page name=\"browse\" view-id=\"/browse.xhtml\"&gt;\n"
+"      &lt;description&gt;DVD Search: #{search.searchPattern}&lt;/"
+"description&gt;\n"
+"      &lt;transition to=\"browse\"/&gt;\n"
+"      &lt;transition name=\"checkout\" to=\"checkout\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"checkout\" view-id=\"/checkout.xhtml\"&gt;\n"
+"      &lt;description&gt;Purchase: $#{cart.total}&lt;/description&gt;\n"
+"      &lt;transition to=\"checkout\"/&gt;\n"
+"      &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"complete\" view-id=\"/complete.xhtml\"&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+
+#. Tag: title
+#: Conversations.xml:352
+#, no-c-format
+msgid "The conversation switcher"
+msgstr "El interruptor de conversaciones"
+
+#. Tag: para
+#: Conversations.xml:353
+#, no-c-format
+msgid ""
+"Include the following fragment in your JSP or facelets page to get a drop-"
+"down menu that lets you switch to any current conversation, or to any other "
+"page of the application:"
+msgstr ""
+"Incluya el siguiente fragmento en su JSP o en su página facelets para "
+"obtener un menú desplegable que le permite cambiar a cualquier conversación "
+"actual o a alguna otra página de la aplicación:"
+
+#. Tag: programlisting
+#: Conversations.xml:356
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{switcher.conversationIdOrOutcome}\"&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Find Issues\" itemValue=\"findIssue\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Create Issue\" itemValue=\"editIssue\"/"
+"&gt;\n"
+"    &lt;f:selectItems value=\"#{switcher.selectItems}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{switcher.select}\" value=\"Switch\"/&gt;"
+msgstr ""
+"&lt;h:selectOneMenu value=\"#{switcher.conversationIdOrOutcome}\"&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Find Issues\" itemValue=\"findIssue\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Create Issue\" itemValue=\"editIssue\"/"
+"&gt;\n"
+"    &lt;f:selectItems value=\"#{switcher.selectItems}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{switcher.select}\" value=\"Switch\"/&gt;"
+
+#. Tag: para
+#: Conversations.xml:357
+#, no-c-format
+msgid ""
+"In this example, we have a menu that includes an item for each conversation, "
+"together with two additional items that let the user begin a new "
+"conversation."
+msgstr ""
+"En este ejemplo tenemos un menú que incluye un item para cada conversación y "
+"dos elementos adicionales que le permiten al usuario iniciar una nueva "
+"conversación."
+
+#. Tag: title
+#: Conversations.xml:371
+#, no-c-format
+msgid "The conversation list"
+msgstr "La lista de conversación"
+
+#. Tag: para
+#: Conversations.xml:372
+#, no-c-format
+msgid ""
+"The conversation list is very similar to the conversation switcher, except "
+"that it is displayed as a table:"
+msgstr ""
+"La lista de conversación es muy similar al interruptor de conversación a "
+"excepción de que se muestra como una tabla:"
+
+#. Tag: programlisting
+#: Conversations.xml:375
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{conversationList}\" var=\"entry\"\n"
+"        rendered=\"#{not empty conversationList}\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Workspace&lt;/f:facet&gt;\n"
+"        &lt;h:commandLink action=\"#{entry.select}\" value=\"#{entry."
+"description}\"/&gt;\n"
+"        &lt;h:outputText value=\"[current]\" rendered=\"#{entry.current}\"/"
+"&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Activity&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{entry.startDatetime}\"&gt;\n"
+"            &lt;f:convertDateTime type=\"time\" pattern=\"hh:mm a\"/&gt;\n"
+"        &lt;/h:outputText&gt;\n"
+"        &lt;h:outputText value=\" - \"/&gt;\n"
+"        &lt;h:outputText value=\"#{entry.lastDatetime}\"&gt;\n"
+"            &lt;f:convertDateTime type=\"time\" pattern=\"hh:mm a\"/&gt;\n"
+"        &lt;/h:outputText&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"        &lt;h:commandButton action=\"#{entry.select}\" value=\"#{msg.Switch}"
+"\"/&gt;\n"
+"        &lt;h:commandButton action=\"#{entry.destroy}\" value=\"#{msg."
+"Destroy}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+"&lt;h:dataTable value=\"#{conversationList}\" var=\"entry\"\n"
+"        rendered=\"#{not empty conversationList}\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Workspace&lt;/f:facet&gt;\n"
+"        &lt;h:commandLink action=\"#{entry.select}\" value=\"#{entry."
+"description}\"/&gt;\n"
+"        &lt;h:outputText value=\"[current]\" rendered=\"#{entry.current}\"/"
+"&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Activity&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{entry.startDatetime}\"&gt;\n"
+"            &lt;f:convertDateTime type=\"time\" pattern=\"hh:mm a\"/&gt;\n"
+"        &lt;/h:outputText&gt;\n"
+"        &lt;h:outputText value=\" - \"/&gt;\n"
+"        &lt;h:outputText value=\"#{entry.lastDatetime}\"&gt;\n"
+"            &lt;f:convertDateTime type=\"time\" pattern=\"hh:mm a\"/&gt;\n"
+"        &lt;/h:outputText&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"        &lt;h:commandButton action=\"#{entry.select}\" value=\"#{msg.Switch}"
+"\"/&gt;\n"
+"        &lt;h:commandButton action=\"#{entry.destroy}\" value=\"#{msg."
+"Destroy}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+
+#. Tag: para
+#: Conversations.xml:376
+#, no-c-format
+msgid "We imagine that you will want to customize this for your own application."
+msgstr "Imaginamos que desea personalizarlo para su propia aplicación."
+
+#. Tag: para
+#: Conversations.xml:387
+#, no-c-format
+msgid ""
+"The conversation list is nice, but it takes up a lot of space on the page, "
+"so you probably don&#39;t want to put it on <emphasis>every</emphasis> page."
+msgstr ""
+"La lista de conversación está bien pero ocupa demasiado espacio en la página "
+"así que probablemente no sería buena idea ponerlo en <emphasis>toda</"
+"emphasis> página."
+
+#. Tag: para
+#: Conversations.xml:390
+#, no-c-format
+msgid "Notice that the conversation list lets the user destroy workspaces."
+msgstr ""
+"Note que la lista de conversación le deja al usuario destruir espacios de "
+"trabajo."
+
+#. Tag: title
+#: Conversations.xml:396
+#, no-c-format
+msgid "Breadcrumbs"
+msgstr "Caminos de navegación"
+
+#. Tag: para
+#: Conversations.xml:397
+#, no-c-format
+msgid ""
+"Breadcrumbs are useful in applications which use a nested conversation "
+"model. The breadcrumbs are a list of links to conversations in the current "
+"conversation stack:"
+msgstr ""
+"Los caminos de navegación son útiles en las aplicaciones que utilizan un "
+"modelo de conversación anidado. Los caminos de navegación son una lista de "
+"enlaces a conversaciones en la pila de conversaciones actuales:"
+
+#. Tag: programlisting
+#: Conversations.xml:400
+#, no-c-format
+msgid ""
+"&lt;t:dataList value=\"#{conversationStack}\" var=\"entry\"&gt;\n"
+"    &lt;h:outputText value=\" | \"/&gt; \n"
+"    &lt;h:commandLink value=\"#{entry.description}\" action=\"#{entry.select}"
+"\"/&gt;\n"
+"&lt;/t:dataList&gt;"
+msgstr ""
+"&lt;t:dataList value=\"#{conversationStack}\" var=\"entry\"&gt;\n"
+"    &lt;h:outputText value=\" | \"/&gt; \n"
+"    &lt;h:commandLink value=\"#{entry.description}\" action=\"#{entry.select}"
+"\"/&gt;\n"
+"&lt;/t:dataList&gt;"
+
+#. Tag: para
+#: Conversations.xml:413
+#, no-c-format
+msgid ""
+"Please refer to the Seam Issue Tracker demo to see all this functionality in "
+"action!"
+msgstr ""
+"Por favor vea la aplicación de demostración Seam Issue Tracker para ver esta "
+"funcionalidad en acción."
+
+#. Tag: title
+#: Conversations.xml:421
+#, no-c-format
+msgid "Conversational components and JSF component bindings"
+msgstr "Componentes de conversaciones y vínculos de componentes JSF"
+
+#. Tag: para
+#: Conversations.xml:422
+#, no-c-format
+msgid ""
+"Conversational components have one minor limitation: they cannot be used to "
+"hold bindings to JSF components. (We generally prefer not to use this "
+"feature of JSF unless absolutely necessary, since it creates a hard "
+"dependency from application logic to the view.) On a postback request, "
+"component bindings are updated during the Restore View phase, before the "
+"Seam conversation context has been restored."
+msgstr ""
+"Los componentes de conversaciones tienen una limitación menor: no se pueden "
+"usar para mantener vínculos a componentes JSF (generalmente preferimos no "
+"utilizar esta funcionalidad de JSF a menos de que sea absolutamente "
+"necesario, ya que crea dependencia desde la lógica de la aplicación hasta la "
+"vista). En una solicitud postback, los vínculos de componentes se actualizan "
+"durante la fase de restauración de las vistas antes de que la conversación "
+"Seam haya sido restaurada."
+
+#. Tag: para
+#: Conversations.xml:425
+#, no-c-format
+msgid ""
+"To work around this use an event scoped component to store the component "
+"bindings and inject it into the conversation scoped component that requires "
+"it."
+msgstr ""
+"Como solución, utilice un componente de ámbito de evento para almacenar los "
+"vínculos del componente e inyectarlo en el componente de ámbito de la "
+"conversación que lo requiera."
+
+#. Tag: programlisting
+#: Conversations.xml:428
+#, no-c-format
+msgid ""
+"@Name(\"grid\")\n"
+"@Scope(ScopeType.EVENT)\n"
+"public class Grid\n"
+"{\n"
+"    private HtmlPanelGrid htmlPanelGrid;\n"
+"\n"
+"    // getters and setters\n"
+"    ...\n"
+"}"
+msgstr ""
+"@Name(\"grid\")\n"
+"@Scope(ScopeType.EVENT)\n"
+"public class Grid\n"
+"{\n"
+"    private HtmlPanelGrid htmlPanelGrid;\n"
+"\n"
+"    // getters and setters\n"
+"    ...\n"
+"}"
+
+#. Tag: programlisting
+#: Conversations.xml:429
+#, no-c-format
+msgid ""
+"@Name(\"gridEditor\")\n"
+"@Scope(ScopeType.CONVERSATION)\n"
+"public class GridEditor\n"
+"{\n"
+"    @In(required=false)\n"
+"    private Grid grid;\n"
+"    \n"
+"    ...\n"
+"}"
+msgstr ""
+"@Name(\"gridEditor\")\n"
+"@Scope(ScopeType.CONVERSATION)\n"
+"public class GridEditor\n"
+"{\n"
+"    @In(required=false)\n"
+"    private Grid grid;\n"
+"    \n"
+"    ...\n"
+"}"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Drools.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Drools.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Drools.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,416 @@
+# translation of Drools.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Drools\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 01:04+0000\n"
+"PO-Revision-Date: 2007-09-18 13:27+1000\n"
+"Last-Translator: Angela Garcia\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Drools.xml:6
+#, no-c-format
+msgid "Seam and JBoss Rules"
+msgstr "Seam y JBoss Rules"
+
+#. Tag: para
+#: Drools.xml:7
+#, no-c-format
+msgid ""
+"Seam makes it easy to call JBoss Rules (Drools) rulebases from Seam "
+"components or jBPM process definitions."
+msgstr ""
+"Seam facilita la llamada a las bases de reglas JBoss Rules (Drools) desde "
+"los componentes Seam o desde las definiciones de procesos jBPM."
+
+#. Tag: title
+#: Drools.xml:11
+#, no-c-format
+msgid "Installing rules"
+msgstr "Instalación de reglas"
+
+#. Tag: para
+#: Drools.xml:12
+#, no-c-format
+msgid ""
+"The first step is to make an instance of <literal>org.drools.RuleBase</"
+"literal> available in a Seam context variable. In most rules-driven "
+"applications, rules need to be dynamically deployable, so you will need to "
+"implement some solution that allows you to deploy rules and make them "
+"available to Seam (a future release of Drools will provide a Rule Server "
+"that solves this problem). For testing purposes, Seam provides a built-in "
+"component that compiles a static set of rules from the classpath. You can "
+"install this component via <literal>components.xml</literal>:"
+msgstr ""
+"El primer paso es hacer disponible una instancia de <literal>org.drools."
+"RuleBase</literal> en una variable de contexto Seam. En la mayoría de las "
+"aplicaciones dirigidas por reglas, las reglas deben ser desplegables "
+"dinámicamente  así que necesitará implementar alguna solución que le permita "
+"desplegar reglas y hacerlas disponibles para Seam (un lanzamiento futuro de "
+"Drools proporcionará un servidor de reglas que resolverá este problema). "
+"Para poder probarlo, Seam proporciona un componente incluido que compila un "
+"grupo estático de reglas desde la ruta de clase. Puede instalar este "
+"componente por medio de <literal>components.xml</literal>:"
+
+#. Tag: programlisting
+#: Drools.xml:15
+#, no-c-format
+msgid ""
+"&lt;drools:rule-base name=\"policyPricingRules\"&gt;\n"
+"    &lt;drools:rule-files&gt;\n"
+"        &lt;value&gt;policyPricingRules&lt;/value&gt;\n"
+"    &lt;/drools:rule-files&gt;\n"
+"&lt;/drools:rule-base&gt;"
+msgstr ""
+"&lt;drools:rule-base name=\"policyPricingRules\"&gt;\n"
+"    &lt;drools:rule-files&gt;\n"
+"        &lt;value&gt;policyPricingRules&lt;/value&gt;\n"
+"    &lt;/drools:rule-files&gt;\n"
+"&lt;/drools:rule-base&gt;"
+
+#. Tag: para
+#: Drools.xml:16
+#, no-c-format
+msgid ""
+"This component compiles rules from a set of <literal>.drl</literal> files "
+"and caches an instance of <literal>org.drools.RuleBase</literal> in the Seam "
+"<literal>APPLICATION</literal> context. Note that it is quite likely that "
+"you will need to install multiple rule bases in a rule-driven application."
+msgstr ""
+"Este componente compila reglas desde un grupo de archivos <literal>.drl</"
+"literal> y guarda en memoria caché una instancia de <literal>org.drools."
+"RuleBase</literal> en el contexto Seam <literal>APPLICATION</literal>. "
+"Observe que es posible que necesite instalar múltiples bases de reglas en "
+"una aplicación dirigida por reglas."
+
+#. Tag: para
+#: Drools.xml:19
+#, no-c-format
+msgid ""
+"If you want to use a Drools DSL, you alse need to specify the DSL definition:"
+msgstr ""
+"Si quiere utilizar un Drools DSL también necesita especificar la definición "
+"DSL:"
+
+#. Tag: programlisting
+#: Drools.xml:22
+#, no-c-format
+msgid ""
+"&lt;drools:rule-base name=\"policyPricingRules\" dsl-file=\"policyPricing.dsl"
+"\"&gt;\n"
+"    &lt;drools:rule-files&gt;\n"
+"        &lt;value&gt;policyPricingRules&lt;/value&gt;\n"
+"    &lt;/drools:rule-files&gt;\n"
+"&lt;/drools:rule-base&gt;"
+msgstr ""
+"&lt;drools:rule-base name=\"policyPricingRules\" dsl-file=\"policyPricing.dsl"
+"\"&gt;\n"
+"    &lt;drools:rule-files&gt;\n"
+"        &lt;value&gt;policyPricingRules&lt;/value&gt;\n"
+"    &lt;/drools:rule-files&gt;\n"
+"&lt;/drools:rule-base&gt;"
+
+#. Tag: para
+#: Drools.xml:23
+#, no-c-format
+msgid ""
+"Next, we need to make an instance of <literal>org.drools.WorkingMemory</"
+"literal> available to each conversation. (Each <literal>WorkingMemory</"
+"literal> accumulates facts relating to the current conversation.)"
+msgstr ""
+"Después necesitamos hacer disponible una instancia de <literal>org.drools."
+"WorkingMemory</literal> para cada conversación (cada <literal>WorkingMemory</"
+"literal> acumula hechos relacionados con la conversación actual)."
+
+#. Tag: programlisting
+#: Drools.xml:26
+#, no-c-format
+msgid ""
+"&lt;drools:managed-working-memory name=\"policyPricingWorkingMemory\" auto-"
+"create=\"true\" rule-base=\"#{policyPricingRules}\"/&gt;"
+msgstr ""
+"&lt;drools:managed-working-memory name=\"policyPricingWorkingMemory\" auto-"
+"create=\"true\" rule-base=\"#{policyPricingRules}\"/&gt;"
+
+#. Tag: para
+#: Drools.xml:27
+#, no-c-format
+msgid ""
+"Notice that we gave the <literal>policyPricingWorkingMemory</literal> a "
+"reference back to our rule base via the <literal>ruleBase</literal> "
+"configuration property."
+msgstr ""
+"Observe que le dimos a <literal>policyPricingWorkingMemory</literal> una "
+"referencia con relación a nuestra base de reglas por medio de la propiedad "
+"de configuración <literal>ruleBase</literal>."
+
+#. Tag: title
+#: Drools.xml:33
+#, no-c-format
+msgid "Using rules from a Seam component"
+msgstr "Uso de reglas desde un componente Seam"
+
+#. Tag: para
+#: Drools.xml:34
+#, no-c-format
+msgid ""
+"We can now inject our <literal>WorkingMemory</literal> into any Seam "
+"component, assert facts, and fire rules:"
+msgstr ""
+"Ahora podemos inyectar nuestra <literal>WorkingMemory</literal> en cualquier "
+"componente Seam, declarar hechos y emitir reglas:"
+
+#. Tag: programlisting
+#: Drools.xml:37
+#, no-c-format
+msgid ""
+"@In WorkingMemory policyPricingWorkingMemory;\n"
+"\n"
+"@In Policy policy;\n"
+"@In Customer customer;\n"
+"\n"
+"public void pricePolicy() throws FactException\n"
+"{\n"
+"    policyPricingWorkingMemory.assertObject(policy);\n"
+"    policyPricingWorkingMemory.assertObject(customer);\n"
+"    policyPricingWorkingMemory.fireAllRules();\n"
+"}"
+msgstr ""
+"@In WorkingMemory policyPricingWorkingMemory;\n"
+"\n"
+"@In Policy policy;\n"
+"@In Customer customer;\n"
+"\n"
+"public void pricePolicy() throws FactException\n"
+"{\n"
+"    policyPricingWorkingMemory.assertObject(policy);\n"
+"    policyPricingWorkingMemory.assertObject(customer);\n"
+"    policyPricingWorkingMemory.fireAllRules();\n"
+"}"
+
+#. Tag: title
+#: Drools.xml:41
+#, no-c-format
+msgid "Using rules from a jBPM process definition"
+msgstr "Uso de reglas desde una definición de proceso jBPM"
+
+#. Tag: para
+#: Drools.xml:42
+#, no-c-format
+msgid ""
+"You can even allow a rule base to act as a jBPM action handler, decision "
+"handler, or assignment handler&mdash;in either a pageflow or business "
+"process definition."
+msgstr ""
+"Inclusive le puede permitir a una base de reglas que actúe como un manejador "
+"de acciones jBPM, un manejador de decisiones o un manejador de tareas ya sea "
+"en un flujo de páginas o en la definición de un proceso empresarial."
+
+#. Tag: programlisting
+#: Drools.xml:45
+#, no-c-format
+msgid ""
+"&lt;decision name=\"approval\"&gt;\n"
+"         \n"
+"    &lt;handler class=\"org.jboss.seam.drools.DroolsDecisionHandler\"&gt;\n"
+"        &lt;workingMemoryName&gt;orderApprovalRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"        &lt;assertObjects&gt;\n"
+"            &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"            &lt;element&gt;#{order}&lt;/element&gt;\n"
+"            &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"        &lt;/assertObjects&gt;\n"
+"    &lt;/handler&gt;\n"
+"    \n"
+"    &lt;transition name=\"approved\" to=\"ship\"&gt;\n"
+"        &lt;action class=\"org.jboss.seam.drools.DroolsActionHandler\"&gt;\n"
+"            &lt;workingMemoryName&gt;shippingRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"            &lt;assertObjects&gt;\n"
+"                &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"            &lt;/assertObjects&gt;\n"
+"        &lt;/action&gt;\n"
+"    &lt;/transition&gt;\n"
+"    \n"
+"    &lt;transition name=\"rejected\" to=\"cancelled\"/&gt;\n"
+"    \n"
+"&lt;/decision&gt;"
+msgstr ""
+"&lt;decision name=\"approval\"&gt;\n"
+"         \n"
+"    &lt;handler class=\"org.jboss.seam.drools.DroolsDecisionHandler\"&gt;\n"
+"        &lt;workingMemoryName&gt;orderApprovalRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"        &lt;assertObjects&gt;\n"
+"            &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"            &lt;element&gt;#{order}&lt;/element&gt;\n"
+"            &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"        &lt;/assertObjects&gt;\n"
+"    &lt;/handler&gt;\n"
+"    \n"
+"    &lt;transition name=\"approved\" to=\"ship\"&gt;\n"
+"        &lt;action class=\"org.jboss.seam.drools.DroolsActionHandler\"&gt;\n"
+"            &lt;workingMemoryName&gt;shippingRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"            &lt;assertObjects&gt;\n"
+"                &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"            &lt;/assertObjects&gt;\n"
+"        &lt;/action&gt;\n"
+"    &lt;/transition&gt;\n"
+"    \n"
+"    &lt;transition name=\"rejected\" to=\"cancelled\"/&gt;\n"
+"    \n"
+"&lt;/decision&gt;"
+
+#. Tag: para
+#: Drools.xml:46
+#, no-c-format
+msgid ""
+"The <literal>&lt;assertObjects&gt;</literal> element specifies EL "
+"expressions that return an object or collection of objects to be asserted as "
+"facts into the <literal>WorkingMemory</literal>."
+msgstr ""
+"El elemento <literal>&lt;assertObjects&gt;</literal> especifica expresiones "
+"EL que pueden devolver un objeto o una colección de objetos para ser "
+"declarados como hechos en <literal>WorkingMemory</literal>."
+
+#. Tag: para
+#: Drools.xml:49
+#, no-c-format
+msgid "There is also support for using Drools for jBPM task assignments:"
+msgstr "También hay soporte para utilizar Drools para tareas jBPM:"
+
+#. Tag: programlisting
+#: Drools.xml:52
+#, no-c-format
+msgid ""
+"&lt;task-node name=\"review\"&gt;\n"
+"    &lt;task name=\"review\" description=\"Review Order\"&gt;\n"
+"        &lt;assignment handler=\"org.jboss.seam.drools."
+"DroolsAssignmentHandler\"&gt;\n"
+"            &lt;workingMemoryName&gt;orderApprovalRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"            &lt;assertObjects&gt;\n"
+"                &lt;element&gt;#{actor}&lt;/element&gt;\n"
+"                &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"            &lt;/assertObjects&gt;\n"
+"        &lt;/assignment&gt;\n"
+"    &lt;/task&gt;\n"
+"    &lt;transition name=\"rejected\" to=\"cancelled\"/&gt;\n"
+"    &lt;transition name=\"approved\" to=\"approved\"/&gt;\n"
+"&lt;/task-node&gt;"
+msgstr ""
+"&lt;task-node name=\"review\"&gt;\n"
+"    &lt;task name=\"review\" description=\"Review Order\"&gt;\n"
+"        &lt;assignment handler=\"org.jboss.seam.drools."
+"DroolsAssignmentHandler\"&gt;\n"
+"            &lt;workingMemoryName&gt;orderApprovalRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"            &lt;assertObjects&gt;\n"
+"                &lt;element&gt;#{actor}&lt;/element&gt;\n"
+"                &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"            &lt;/assertObjects&gt;\n"
+"        &lt;/assignment&gt;\n"
+"    &lt;/task&gt;\n"
+"    &lt;transition name=\"rejected\" to=\"cancelled\"/&gt;\n"
+"    &lt;transition name=\"approved\" to=\"approved\"/&gt;\n"
+"&lt;/task-node&gt;"
+
+#. Tag: para
+#: Drools.xml:53
+#, no-c-format
+msgid ""
+"Certain objects are available to the rules as Drools globals, namely the "
+"jBPM <literal>Assignable</literal>, as <literal>assignable</literal> and a "
+"Seam <literal>Decision</literal> object, as <literal>decision</literal>. "
+"Rules which handle decisions should call <literal>decision.setOutcome"
+"(\"result\")</literal> to determine the result of the decision. Rules which "
+"perform assignments should set the actor id using the <literal>Assignable</"
+"literal>."
+msgstr ""
+"Ciertos objetos están disponibles para las reglas como Drools globales, a "
+"saber el jBPM <literal>Assignable</literal>, como <literal>assignable</"
+"literal> y un objeto Seam <literal>Decision</literal> como "
+"<literal>decision</literal>. Las reglas que manejan decisiones deben llamar "
+"a <literal>decision.setOutcome(\"result\")</literal> para determinar el "
+"resultado de la decisión. Las reglas que realizan tareas deben configurar la "
+"identificación de actor utilizando <literal>Assignable</literal>."
+
+#. Tag: programlisting
+#: Drools.xml:56
+#, no-c-format
+msgid ""
+"package org.jboss.seam.examples.shop\n"
+"\n"
+"import org.jboss.seam.drools.Decision\n"
+"\n"
+"global Decision decision\n"
+"\n"
+"rule \"Approve Order For Loyal Customer\"\n"
+"  when\n"
+"    Customer( loyaltyStatus == \"GOLD\" )\n"
+"    Order( totalAmount &lt;= 10000 )\n"
+"  then\n"
+"    decision.setOutcome(\"approved\");\n"
+"end"
+msgstr ""
+"package org.jboss.seam.examples.shop\n"
+"\n"
+"import org.jboss.seam.drools.Decision\n"
+"\n"
+"global Decision decision\n"
+"\n"
+"rule \"Approve Order For Loyal Customer\"\n"
+"  when\n"
+"    Customer( loyaltyStatus == \"GOLD\" )\n"
+"    Order( totalAmount &lt;= 10000 )\n"
+"  then\n"
+"    decision.setOutcome(\"approved\");\n"
+"end"
+
+#. Tag: programlisting
+#: Drools.xml:57
+#, no-c-format
+msgid ""
+"package org.jboss.seam.examples.shop\n"
+"\n"
+"import org.jbpm.taskmgmt.exe.Assignable\n"
+"\n"
+"global Assignable assignable\n"
+"\n"
+"rule \"Assign Review For Small Order\"\n"
+"  when\n"
+"    Order( totalAmount &lt;= 100 )\n"
+"  then\n"
+"    assignable.setPooledActors( new String[] {\"reviewers\"} );\n"
+"end"
+msgstr ""
+"package org.jboss.seam.examples.shop\n"
+"\n"
+"import org.jbpm.taskmgmt.exe.Assignable\n"
+"\n"
+"global Assignable assignable\n"
+"\n"
+"rule \"Assign Review For Small Order\"\n"
+"  when\n"
+"    Order( totalAmount &lt;= 100 )\n"
+"  then\n"
+"    assignable.setPooledActors( new String[] {\"reviewers\"} );\n"
+"end"

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Elenhancements.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Elenhancements.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Elenhancements.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,277 @@
+# translation of Elenhancements.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Elenhancements\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 01:04+0000\n"
+"PO-Revision-Date: 2007-10-22 12:41+1000\n"
+"Last-Translator: Angela Garcia\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Elenhancements.xml:6
+#, no-c-format
+msgid "Expression language enhancements"
+msgstr "Mejoras en el lenguage de expresiones"
+
+#. Tag: para
+#: Elenhancements.xml:7
+#, no-c-format
+msgid ""
+"The standard Unified Expression Language (EL) assumes that any parameters to "
+"a method expression will be provided by Java code. This means that a method "
+"with parameters cannot be used as a JSF method binding. Seam provides an "
+"enhancement to the EL that allows parameters to be included in a method "
+"expression itself. This applies to <emphasis>any</emphasis> Seam method "
+"expression, including any JSF method binding, for example:"
+msgstr ""
+"El estándar unificado EL ( por las siglas en inglés de standard Unified "
+"Expression Language) asume que cualquier parámetro para una expresión de "
+"método lo proporcionará el código Java. Esto significa que un método con "
+"parámetros no se puede utilizar como un método JSF de vinculación. Seam "
+"proporciona una mejora para EL que permite que los parámetros sean incluídos "
+"en la expresión de método. Esto aplica a <emphasis>cualquier</emphasis> "
+"expresión de método Seam incluyendo cualquier método JSF de vinculación, por "
+"ejemplo:"
+
+#. Tag: programlisting
+#: Elenhancements.xml:10
+#, no-c-format
+msgid ""
+"&lt;s:commandButton action=\"#{hotelBooking.bookHotel(hotel)}\" value=\"Book "
+"Hotel\"/&gt;"
+msgstr ""
+"&lt;s:commandButton action=\"#{hotelBooking.bookHotel(hotel)}\" value=\"Book "
+"Hotel\"/&gt;"
+
+#. Tag: title
+#: Elenhancements.xml:12
+#, no-c-format
+msgid "Configuration"
+msgstr "Configuración"
+
+#. Tag: para
+#: Elenhancements.xml:13
+#, no-c-format
+msgid ""
+"To use this feature in Facelets, you will need to declare a special view "
+"handler, <literal>SeamFaceletViewHandler</literal> in <literal>faces-config."
+"xml</literal>."
+msgstr ""
+"Para utilizar esta característica en Facelets necesitará declarar un "
+"manejador de vista especial, <literal>SeamFaceletViewHandler</literal> en "
+"<literal>faces-config.xml</literal>."
+
+#. Tag: programlisting
+#: Elenhancements.xml:16
+#, no-c-format
+msgid ""
+"&lt;faces-config&gt;\n"
+"    &lt;application&gt;\n"
+"        &lt;view-handler&gt;org.jboss.seam.ui.facelet."
+"SeamFaceletViewHandler&lt;/view-handler&gt;\n"
+"    &lt;/application&gt;\n"
+"&lt;/faces-config&gt;"
+msgstr ""
+"&lt;faces-config&gt;\n"
+"    &lt;application&gt;\n"
+"        &lt;view-handler&gt;org.jboss.seam.ui.facelet."
+"SeamFaceletViewHandler&lt;/view-handler&gt;\n"
+"    &lt;/application&gt;\n"
+"&lt;/faces-config&gt;"
+
+#. Tag: title
+#: Elenhancements.xml:20
+#, no-c-format
+msgid "Usage"
+msgstr "Uso"
+
+#. Tag: para
+#: Elenhancements.xml:21
+#, no-c-format
+msgid "Parameters are surrounded by parentheses, and separated by commas:"
+msgstr "Los parámetros se encuentran rodeados por paréntesis y separados por comas:"
+
+#. Tag: programlisting
+#: Elenhancements.xml:24
+#, no-c-format
+msgid ""
+"&lt;h:commandButton action=\"#{hotelBooking.bookHotel(hotel, user)}\" value="
+"\"Book Hotel\"/&gt;"
+msgstr ""
+"&lt;h:commandButton action=\"#{hotelBooking.bookHotel(hotel, user)}\" value="
+"\"Book Hotel\"/&gt;"
+
+#. Tag: para
+#: Elenhancements.xml:25
+#, no-c-format
+msgid ""
+"The parameters <literal>hotel</literal> and <literal>user</literal> will be "
+"evaluated as value expressions and passed to the <literal>bookHotel()</"
+"literal> method of the component. This gives you an alternative to the use "
+"of <literal>@In</literal>."
+msgstr ""
+"Los parámetros <literal>hotel</literal> y <literal>user</literal> serán "
+"evaluados como expresiones de valor y se pasarán al método <literal>bookHotel"
+"()</literal> del componente. Esto le proporciona una alternativa al uso de "
+"<literal>@In</literal>."
+
+#. Tag: para
+#: Elenhancements.xml:28
+#, no-c-format
+msgid "Any value expression may be used as a parameter:"
+msgstr "Cualquier expresión de valor se puede utilizar como parámetro:"
+
+#. Tag: programlisting
+#: Elenhancements.xml:31
+#, no-c-format
+msgid ""
+"&lt;h:commandButton action=\"#{hotelBooking.bookHotel(hotel.id, user."
+"username)}\" value=\"Book Hotel\"/&gt;"
+msgstr ""
+"&lt;h:commandButton action=\"#{hotelBooking.bookHotel(hotel.id, user."
+"username)}\" value=\"Book Hotel\"/&gt;"
+
+#. Tag: para
+#: Elenhancements.xml:32
+#, no-c-format
+msgid "You may even pass literal strings using single or double quotes:"
+msgstr "Incluso puede pasar cadenas literales utilizando comillas dobles o simples:"
+
+#. Tag: programlisting
+#: Elenhancements.xml:35
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=”#{printer.println( ‘Hello world!’ )}” "
+"value=”Hello”/&gt;"
+msgstr ""
+"&lt;h:commandLink action=”#{printer.println( ‘Hello world!’ )}” "
+"value=”Hello”/&gt;"
+
+#. Tag: programlisting
+#: Elenhancements.xml:36
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=’#{printer.println( “Hello again” )}’ value=’Hello’/"
+"&gt;"
+msgstr ""
+"&lt;h:commandLink action=’#{printer.println( “Hello again” )}’ value=’Hello’/"
+"&gt;"
+
+#. Tag: para
+#: Elenhancements.xml:37
+#, no-c-format
+msgid ""
+"You might even want to use this notation for all your action methods, even "
+"when you don’t have parameters to pass. This improves readability by making "
+"it clear that the expression is a method expression and not a value "
+"expression:"
+msgstr ""
+"Incluso puede que quiera utilizar esta anotación para todos sus métodos de "
+"acción inclusive cuando no cuenta con parámetros para pasar. Esto mejora la "
+"legibilidad al clarificar que la expresión es una expresión de método y no "
+"de valor:"
+
+#. Tag: programlisting
+#: Elenhancements.xml:40
+#, no-c-format
+msgid "&lt;s:link value=\"Cancel\" action=\"#{hotelBooking.cancel()}\"/&gt;"
+msgstr "&lt;s:link value=\"Cancel\" action=\"#{hotelBooking.cancel()}\"/&gt;"
+
+#. Tag: title
+#: Elenhancements.xml:44
+#, no-c-format
+msgid "Limitations"
+msgstr "Limitaciones"
+
+#. Tag: para
+#: Elenhancements.xml:45
+#, no-c-format
+msgid "Please be aware of the following limitations:"
+msgstr "Tenga en consideración las siguientes limitaciones:"
+
+#. Tag: title
+#: Elenhancements.xml:49
+#, no-c-format
+msgid "Incompatibility with JSP 2.1"
+msgstr "Incompatibilidad con JSP 2.1"
+
+#. Tag: para
+#: Elenhancements.xml:50
+#, no-c-format
+msgid ""
+"This extension is not currently compatible with JSP 2.1. So if you want to "
+"use this extension with JSF 1.2, you will need to use Facelets. The "
+"extension works correctly with JSP 2.0."
+msgstr ""
+"Actualmente esta extensión no es competible con JSP 2.1. Así que si quiere "
+"utilizar esta extensión con JSF 1.2 necesitará utilizar Facelets. La "
+"extensión funciona correctamenta con JSP 2.0."
+
+#. Tag: title
+#: Elenhancements.xml:56
+#, no-c-format
+msgid "Calling a <literal>MethodExpression</literal> from Java code"
+msgstr "Llamar un <literal>MethodExpression</literal> desde el código Java"
+
+#. Tag: para
+#: Elenhancements.xml:57
+#, no-c-format
+msgid ""
+"Normally, when a <literal>MethodExpression</literal> or "
+"<literal>MethodBinding</literal> is created, the parameter types are passed "
+"in by JSF. In the case of a method binding, JSF assumes that there are no "
+"parameters to pass. With this extension, we can’t know the parameter types "
+"until after the expression has been evaluated. This has two minor "
+"consequences:"
+msgstr ""
+"Normalmente, cuando se crea una <literal>MethodExpression</literal> o "
+"<literal>MethodBinding</literal> JSF pasa los tipos de parámetros. En el "
+"caso de una vinculación de método, JSF asume que no hay parámetros a pasar. "
+"Con esta extensión no podemos saber los tipos de parámetros después de que "
+"se ha evaluado la expresión . Esto tiene dos pequeñas consecuencias: "
+
+#. Tag: para
+#: Elenhancements.xml:62
+#, no-c-format
+msgid ""
+"When you invoke a <literal>MethodExpression</literal> in Java code, "
+"parameters you pass may be ignored. Parameters defined in the expression "
+"will take precedence."
+msgstr ""
+"Cuando invoca un <literal>MethodExpression</literal> en código Java, los "
+"parámetros que pasa se pueden ignorar. Los parámetros definidos en la "
+"expresión tendrán precedencia."
+
+#. Tag: para
+#: Elenhancements.xml:67
+#, no-c-format
+msgid ""
+"Ordinarily, it is safe to call <literal>methodExpression.getMethodInfo()."
+"getParamTypes()</literal> at any time. For an expression with parameters, "
+"you must first invoke the <literal>MethodExpression</literal> before calling "
+"<literal>getParamTypes()</literal>."
+msgstr ""
+"Usualmente es seguro llamar <literal>methodExpression.getMethodInfo()."
+"getParamTypes()</literal> en cualquier momento. Para una expresión con "
+"parámetros primero debe invocar el <literal>MethodExpression</literal> antes "
+"de llamar al <literal>getParamTypes()</literal>."
+
+#. Tag: para
+#: Elenhancements.xml:72
+#, no-c-format
+msgid ""
+"Both of these cases are exceedingly rare and only apply when you want to "
+"invoke the <literal>MethodExpression</literal> by hand in Java code."
+msgstr ""
+"Ambos casos son extremadamente raros y sólamente aplican cuando quiere "
+"invocar el <literal>MethodExpression</literal> manualmente en código Java."
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Events.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Events.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Events.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2090 @@
+# translation of Events.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Events\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 01:04+0000\n"
+"PO-Revision-Date: 2007-10-25 13:56+1000\n"
+"Last-Translator: Angela Garcia\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Events.xml:6
+#, no-c-format
+msgid "Events, interceptors and exception handling"
+msgstr "Manejo de excepciones, interceptores y eventos"
+
+#. Tag: para
+#: Events.xml:7
+#, no-c-format
+msgid ""
+"Complementing the contextual component model, there are two further basic "
+"concepts that facilitate the extreme loose-coupling that is the distinctive "
+"feature of Seam applications. The first is a strong event model where events "
+"may be mapped to event listeners via JSF-like method binding expressions. "
+"The second is the pervasive use of annotations and interceptors to apply "
+"cross-cutting concerns to components which implement business logic."
+msgstr ""
+"Complementando el modelo de componentes contextuales hay dos conceptos "
+"básicos más que facilitan el acoplamiento, lo cual es la característica "
+"distintiva de las aplicaciones Seam. El primer concepto es un fuerte modelo "
+"de eventos en donde se pueden mapear los eventos a los escuchas de eventos "
+"por medio de expresiones de vinculación de métodos como JSF. El segundo es "
+"el uso dominante de anotaciones e interceptores para aplicar "
+"transversalidades a componentes, los cuales implementan la lógica empresarial."
+
+#. Tag: title
+#: Events.xml:10
+#, no-c-format
+msgid "Seam events"
+msgstr "Eventos Seam"
+
+#. Tag: para
+#: Events.xml:11
+#, no-c-format
+msgid ""
+"The Seam component model was developed for use with <emphasis>event-driven "
+"applications</emphasis>, specifically to enable the development of fine-"
+"grained, loosely-coupled components in a fine-grained eventing model. Events "
+"in Seam come in several types, most of which we have already seen:"
+msgstr ""
+"El modelo de componentes Seam se desarrolló para utilizarse con "
+"<emphasis>aplicaciones dirigidas por eventos</emphasis>, especificamente "
+"para habilitar el desarrollo de componentes detallados de bajo acoplamiento "
+"en un modelo detallado de eventos. Los eventos en Seam vienen en varios "
+"tipos, muchos de los cuales ya hemos visto:"
+
+#. Tag: para
+#: Events.xml:16
+#, no-c-format
+msgid "JSF events"
+msgstr "Eventos JSF"
+
+#. Tag: para
+#: Events.xml:21
+#, no-c-format
+msgid "jBPM transition events"
+msgstr "Eventos de transición jBPM"
+
+#. Tag: para
+#: Events.xml:26
+#, no-c-format
+msgid "Seam page actions"
+msgstr "Acciones de página Seam "
+
+#. Tag: para
+#: Events.xml:31
+#, no-c-format
+msgid "Seam component-driven events"
+msgstr "Eventos dirigidos por componentes Seam"
+
+#. Tag: para
+#: Events.xml:36
+#, no-c-format
+msgid "Seam contextual events"
+msgstr "Eventos contextuales Seam"
+
+#. Tag: para
+#: Events.xml:41
+#, no-c-format
+msgid ""
+"All of these various kinds of events are mapped to Seam components via JSF "
+"EL method binding expressions. For a JSF event, this is defined in the JSF "
+"template:"
+msgstr ""
+"Todas estas varias clases de eventos son mapeadas a los componentes Seam por "
+"medio de expresiones de vinculación de métodos EL JSF. Para un evento JSF "
+"esto se define en la plantilla JSF:"
+
+#. Tag: programlisting
+#: Events.xml:44
+#, no-c-format
+msgid ""
+"&lt;h:commandButton value=\"Click me!\" action=\"#{helloWorld.sayHello}\"/"
+"&gt;"
+msgstr ""
+"&lt;h:commandButton value=\"Click me!\" action=\"#{helloWorld.sayHello}\"/"
+"&gt;"
+
+#. Tag: para
+#: Events.xml:45
+#, no-c-format
+msgid ""
+"For a jBPM transition event, it is specified in the jBPM process definition "
+"or pageflow definition:"
+msgstr ""
+"Para un evento de transición se especifica en la definición de proceso jBPM "
+"o en la definición del flujo de página:"
+
+#. Tag: programlisting
+#: Events.xml:48
+#, no-c-format
+msgid ""
+"&lt;start-page name=\"hello\" view-id=\"/hello.jsp\"&gt;\n"
+"    &lt;transition to=\"hello\"&gt;\n"
+"        &lt;action expression=\"#{helloWorld.sayHello}\"/&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/start-page&gt;"
+msgstr ""
+"&lt;start-page name=\"hello\" view-id=\"/hello.jsp\"&gt;\n"
+"    &lt;transition to=\"hello\"&gt;\n"
+"        &lt;action expression=\"#{helloWorld.sayHello}\"/&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/start-page&gt;"
+
+#. Tag: para
+#: Events.xml:49
+#, no-c-format
+msgid ""
+"You can find out more information about JSF events and jBPM events "
+"elsewhere. Lets concentrate for now upon the two additional kinds of events "
+"defined by Seam."
+msgstr ""
+"Encontrará más información sobre eventos JSF y jBPM en otras fuentes, por "
+"ahora vamos a concentrarnos en las dos clases adicionales de eventos que "
+"Seam define."
+
+#. Tag: title
+#: Events.xml:52
+#, no-c-format
+msgid "Page actions"
+msgstr "Acciones de página"
+
+#. Tag: para
+#: Events.xml:53
+#, no-c-format
+msgid ""
+"A Seam page action is an event that occurs just before we render a page. We "
+"declare page actions in <literal>WEB-INF/pages.xml</literal>. We can define "
+"a page action for either a particular JSF view id:"
+msgstr ""
+"Una acción de página Seam es un evento que ocurre justo antes de entregar "
+"una página. Declaramos las acciones de páginas en <literal>WEB-INF/pages."
+"xml</literal>. Podemos definir una acción de página para un id de vista JSF "
+"en particular:"
+
+#. Tag: programlisting
+#: Events.xml:56
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\" action=\"#{helloWorld.sayHello}\"/&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\" action=\"#{helloWorld.sayHello}\"/&gt;\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Events.xml:57
+#, no-c-format
+msgid ""
+"Or we can use a wildcard to specify an action that applies to all view ids "
+"that match the pattern:"
+msgstr ""
+"O podemos utilizar un comodín para especificar una acción que aplique a "
+"todos los ids que coincidan con el patrón:"
+
+#. Tag: programlisting
+#: Events.xml:60
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello/*\" action=\"#{helloWorld.sayHello}\"/&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello/*\" action=\"#{helloWorld.sayHello}\"/&gt;\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Events.xml:61
+#, no-c-format
+msgid ""
+"If multiple wildcarded page actions match the current view-id, Seam will "
+"call all the actions, in order of least-specific to most-specific."
+msgstr ""
+"Si múltiples acciones de página con comodines coinciden con el id de vista "
+"actual, Seam llamará todas las acciones en orden desde la menos hasta la más especifica."
+
+#. Tag: para
+#: Events.xml:64
+#, no-c-format
+msgid ""
+"The page action method can return a JSF outcome. If the outcome is non-null, "
+"Seam will use the defined navigation rules to navigate to a view."
+msgstr ""
+"El método de acción de página puede proporcionar una salida JSF. Si la "
+"salida no es nula, Seam utilizará las reglas de navegación para navegar "
+"hasta una vista."
+
+#. Tag: para
+#: Events.xml:67
+#, no-c-format
+msgid ""
+"Furthermore, the view id mentioned in the <literal>&lt;page&gt;</literal> "
+"element need not correspond to a real JSP or Facelets page! So, we can "
+"reproduce the functionality of a traditional action-oriented framework like "
+"Struts or WebWork using page actions. For example:"
+msgstr ""
+"Además, el id de vista que se mencionó en el elemento <literal>&lt;page&gt;</"
+"literal> no necesita corresponder a una ¡página Faceletes o JSP real! Así "
+"que podemos reproducir la funcionalidad de un marco de trabajo tradicional "
+"orientado a las acciones como Struts o WebWork utilizando acciones de "
+"página. Por ejemplo:"
+
+#. Tag: programlisting
+#: Events.xml:70
+#, no-c-format
+msgid "TODO: translate struts action into page action"
+msgstr "TODO: translate struts action into page action"
+
+#. Tag: para
+#: Events.xml:71
+#, no-c-format
+msgid ""
+"This is quite useful if you want to do complex things in response to non-"
+"faces requests (for example, HTTP GET requests)."
+msgstr ""
+"Esto es bastante útil si quiere hacer cosas complicadas en respuesta a "
+"pedidos que no son faces (por ejemplo, pedidos HTTP GET)."
+
+#. Tag: title
+#: Events.xml:74
+#, no-c-format
+msgid "Page parameters"
+msgstr "Parámetros de página"
+
+#. Tag: para
+#: Events.xml:75
+#, no-c-format
+msgid ""
+"A JSF faces request (a form submission) encapsulates both an \"action\" (a "
+"method binding) and \"parameters\" (input value bindings). A page action "
+"might also needs parameters!"
+msgstr ""
+"Un pedido faces JSF (una presentación de una forma) encapsula tanto una "
+"\"acción\" (una vinculación de métodos) como los \"parámetros"
+"\" (vinculaciones de valores de entrada). Una acción de página también puede "
+"llegar a necesitar ¡parámetros!"
+
+#. Tag: para
+#: Events.xml:78
+#, no-c-format
+msgid ""
+"Since GET requests are bookmarkable, page parameters are passed as human-"
+"readable request parameters. (Unlike JSF form inputs, which are anything "
+"but!)"
+msgstr ""
+"Ya que los pedidos GET se pueden guardar dentro de los favoritos, los "
+"parámetros de página se pasan como parámetros de pedidos fáciles de leer "
+"para humanos (¡caso contrario de las entradas JSF!)."
+
+#. Tag: para
+#: Events.xml:81
+#, no-c-format
+msgid ""
+"Seam lets us provide a value binding that maps a named request parameter to "
+"an attribute of a model object."
+msgstr ""
+"Seam le permite proporcionar una vinculación de valores que mapea un "
+"parámetro de pedido denominado a un atributo de un objeto modelo."
+
+#. Tag: programlisting
+#: Events.xml:84
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\" action=\"#{helloWorld.sayHello}\"&gt;\n"
+"        &lt;param name=\"firstName\" value=\"#{person.firstName}\"/&gt;\n"
+"        &lt;param name=\"lastName\" value=\"#{person.lastName}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\" action=\"#{helloWorld.sayHello}\"&gt;\n"
+"        &lt;param name=\"firstName\" value=\"#{person.firstName}\"/&gt;\n"
+"        &lt;param name=\"lastName\" value=\"#{person.lastName}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Events.xml:85
+#, no-c-format
+msgid ""
+"The <literal>&lt;param&gt;</literal> declaration is bidirectional, just like "
+"a value binding for a JSF input:"
+msgstr ""
+"La declaración <literal>&lt;param&gt;</literal> es bidireccional así como "
+"una vinculación de valor para una entrada JSF:"
+
+#. Tag: para
+#: Events.xml:90
+#, no-c-format
+msgid ""
+"When a non-faces (GET) request for the view id occurs, Seam sets the value "
+"of the named request parameter onto the model object, after performing "
+"appropriate type conversions."
+msgstr ""
+"Cuando ocurre una petición (GET) que no es de faces por el id de la vista, "
+"Seam configura el valor del parámetro de la petición llamada al objeto del "
+"modelo después de realizar las conversiones de tipo apropiadas."
+
+#. Tag: para
+#: Events.xml:95
+#, no-c-format
+msgid ""
+"Any <literal>&lt;s:link&gt;</literal> or <literal>&lt;s:button&gt;</literal> "
+"transparently includes the request parameter. The value of the parameter is "
+"determined by evaluating the value binding during the render phase (when the "
+"<literal>&lt;s:link&gt;</literal> is rendered)."
+msgstr ""
+"Cualquier <literal>&lt;s:link&gt;</literal> o <literal>&lt;s:button&gt;</"
+"literal> incluye transparentemente el parámetro de pedido. El valor del "
+"parámetro se determina evaluando la vinculación del valor durante la fase de "
+"entrega (cuando se entrega el <literal>&lt;s:link&gt;</literal>)."
+
+#. Tag: para
+#: Events.xml:100
+#, no-c-format
+msgid ""
+"Any navigation rule with a <literal>&lt;redirect/&gt;</literal> to the view "
+"id transparently includes the request parameter. The value of the parameter "
+"is determined by evaluating the value binding at the end of the invoke "
+"application phase."
+msgstr ""
+"Cualquier regla de navegación con una <literal>&lt;redirect/&gt;</literal> "
+"al id de la vista incluye de manera transparente el parámetro de la "
+"petición. El valor del parámetro se determina evaluando el valor de "
+"vinculación al final de la fase de aplicación de la invocación."
+
+#. Tag: para
+#: Events.xml:105
+#, no-c-format
+msgid ""
+"The value is transparently propagated with any JSF form submission for the "
+"page with the given view id. (This means that view parameters behave like "
+"<literal>PAGE</literal>-scoped context variables for faces requests."
+msgstr ""
+"El valor es propagado de manera transparente con cualquier envío de forma "
+"JSF para la página con el id de vista dado (esto significa que los "
+"parámetros de vista se comportan como variables de contexto de ámbito "
+"<literal>PAGE</literal> para peticiones de faces). "
+
+#. Tag: para
+#: Events.xml:110
+#, no-c-format
+msgid ""
+"The essential idea behind all this is that <emphasis>however</emphasis> we "
+"get from any other page to <literal>/hello.jsp</literal> (or from <literal>/"
+"hello.jsp</literal> back to <literal>/hello.jsp</literal>), the value of the "
+"model attribute referred to in the value binding is \"remembered\", without "
+"the need for a conversation (or other server-side state)."
+msgstr ""
+"La idea esencial detrás de todo esto es que <emphasis>apesar</emphasis> de "
+"que llegamos desde cualquier otra página a <literal>/hello.jsp</literal> (o "
+"desde <literal>/hello.jsp</literal> de regreso a <literal>/hello.jsp</"
+"literal>) el valor del atributo del modelo al que se hace referencia en la "
+"vinculación de valor se \"recuerda\" sin necesidad de que haya lugar una "
+"conversación (u otro estado del lado del servidor)."
+
+#. Tag: para
+#: Events.xml:113
+#, no-c-format
+msgid ""
+"This all sounds pretty complex, and you&#39;re probably wondering if such an "
+"exotic construct is really worth the effort. Actually, the idea is very "
+"natural once you \"get it\". It is definitely worth taking the time to "
+"understand this stuff. Page parameters are the most elegant way to propagate "
+"state across a non-faces request. They are especially cool for problems like "
+"search screens with bookmarkable results pages, where we would like to be "
+"able to write our application code to handle both POST and GET requests with "
+"the same code. Page parameters eliminate repetitive listing of request "
+"parameters in the view definition and make redirects much easier to code."
+msgstr ""
+"Todo esto suena bastante complejo y probablemente se estará preguntando si "
+"tal construcción tan exótica realmente vale la pena. De hecho, la idea es "
+"bastante natural una vez \"la entienda\". Definitivamente vale la pena tomar "
+"el tiempo para entender esto. Los parámetros de página es la manera más "
+"elegante de propagar un estado a través de una petición que no es de faces. "
+"En especial son bastante buenos para problemas como pantallas de búsquedas "
+"con páginas de resultados que se pueden incluir bajo sus favoritos, en donde "
+"nos gustaría poder escribir nuestro código de aplicación para manejar tanto "
+"peticiones POST como GET con el mismo código. Los parámetros de página "
+"eliminan los listados repetitivos de parámetros de peticiones en la "
+"definición de vista y hacen que los redireccionamientos sean mucho más "
+"fáciles de codificar. "
+
+#. Tag: para
+#: Events.xml:116
+#, no-c-format
+msgid ""
+"Note that you don&#39;t need an actual page action method binding to use a "
+"page parameter. The following is perfectly valid:"
+msgstr ""
+"Observe que no necesita una vinculación de método de acción de página real "
+"para utilizar un parámetro de página. Lo siguiente es perfectamente válido: "
+
+#. Tag: programlisting
+#: Events.xml:119
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\"&gt;\n"
+"        &lt;param name=\"firstName\" value=\"#{person.firstName}\"/&gt;\n"
+"        &lt;param name=\"lastName\" value=\"#{person.lastName}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\"&gt;\n"
+"        &lt;param name=\"firstName\" value=\"#{person.firstName}\"/&gt;\n"
+"        &lt;param name=\"lastName\" value=\"#{person.lastName}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Events.xml:120
+#, no-c-format
+msgid "You can even specify a JSF converter:"
+msgstr "Inclusive puede especificar un convertidor JSF:"
+
+#. Tag: programlisting
+#: Events.xml:123
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/calculator.jsp\" action=\"#{calculator.calculate}"
+"\"&gt;\n"
+"        &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"        &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"        &lt;param name=\"op\" converterId=\"com.my.calculator."
+"OperatorConverter\" value=\"#{calculator.op}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/calculator.jsp\" action=\"#{calculator.calculate}"
+"\"&gt;\n"
+"        &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"        &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"        &lt;param name=\"op\" converterId=\"com.my.calculator."
+"OperatorConverter\" value=\"#{calculator.op}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+
+#. Tag: programlisting
+#: Events.xml:124
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/calculator.jsp\" action=\"#{calculator.calculate}"
+"\"&gt;\n"
+"        &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"        &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"        &lt;param name=\"op\" converter=\"#{operatorConverter}\" value=\"#"
+"{calculator.op}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/calculator.jsp\" action=\"#{calculator.calculate}"
+"\"&gt;\n"
+"        &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"        &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"        &lt;param name=\"op\" converter=\"#{operatorConverter}\" value=\"#"
+"{calculator.op}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+
+#. Tag: title
+#: Events.xml:125
+#, no-c-format
+msgid "Navigation"
+msgstr "Navegación"
+
+#. Tag: para
+#: Events.xml:126
+#, no-c-format
+msgid ""
+"You can use standard JSF navigation rules defined in <literal>faces-config."
+"xml</literal> in a Seam application. However, JSF navigation rules have a "
+"number of annoying limitations:"
+msgstr ""
+"Puede utilizar las reglas de navegación JSF estándares definidas en "
+"<literal>faces-config.xml</literal> en una aplicación Seam. Sin embargo, las "
+"reglas de navegación JSF tienen un número de limitaciones molestas:"
+
+#. Tag: para
+#: Events.xml:131
+#, no-c-format
+msgid "It is not possible to specify request parameters to be used when redirecting."
+msgstr ""
+"No es posible especificar los parámetros de pedidos que se deben utilizar al "
+"redireccionar."
+
+#. Tag: para
+#: Events.xml:136
+#, no-c-format
+msgid "It is not possible to begin or end conversations from a rule."
+msgstr "No es posible iniciar o dar fin a conversaciones desde una regla."
+
+#. Tag: para
+#: Events.xml:141
+#, no-c-format
+msgid ""
+"Rules work by evaluating the return value of the action method; it is not "
+"possible to evaluate an arbitrary EL expression."
+msgstr ""
+"Las reglas funcionan evaluando el valor de retorno del método de acción, no "
+"es posible evaluar una expresión EL arbitraria."
+
+#. Tag: para
+#: Events.xml:146
+#, no-c-format
+msgid ""
+"A further problem is that \"orchestration\" logic gets scattered between "
+"<literal>pages.xml</literal> and <literal>faces-config.xml</literal>. It&#39;"
+"s better to unify this logic into <literal>pages.xml</literal>."
+msgstr ""
+"Otro problema es que la lógica de \"orquestación\" se dispersa entre "
+"<literal>pages.xml</literal> y <literal>faces-config.xml</literal>. Es mejor "
+"unificar esta lógica en <literal>pages.xml</literal>. "
+
+#. Tag: para
+#: Events.xml:149
+#, no-c-format
+msgid "This JSF navigation rule:"
+msgstr "Esta es una regla de navegación JSF:"
+
+#. Tag: programlisting
+#: Events.xml:152
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"    &lt;from-view-id&gt;/editDocument.xhtml&lt;/from-view-id&gt;\n"
+"    \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-action&gt;#{documentEditor.update}&lt;/from-action&gt;\n"
+"        &lt;from-outcome&gt;success&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/viewDocument.xhtml&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"    \n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+"&lt;navigation-rule&gt;\n"
+"    &lt;from-view-id&gt;/editDocument.xhtml&lt;/from-view-id&gt;\n"
+"    \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-action&gt;#{documentEditor.update}&lt;/from-action&gt;\n"
+"        &lt;from-outcome&gt;success&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/viewDocument.xhtml&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"    \n"
+"&lt;/navigation-rule&gt;"
+
+#. Tag: para
+#: Events.xml:153
+#, no-c-format
+msgid "Can be rewritten as follows:"
+msgstr "Se pueden reescribir así:"
+
+#. Tag: programlisting
+#: Events.xml:156
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if-outcome=\"success\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if-outcome=\"success\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Events.xml:157
+#, no-c-format
+msgid ""
+"But it would be even nicer if we didn&#39;t have to pollute our "
+"<literal>DocumentEditor</literal> component with string-valued return values "
+"(the JSF outcomes). So Seam lets us write:"
+msgstr ""
+"Pero sería aún mejor si no tuviesemos que contaminar nuestro componente "
+"<literal>DocumentEditor</literal> con valores de retorno de cadena (las "
+"salidas JSF). Así que Seam nos permite escribir: "
+
+#. Tag: programlisting
+#: Events.xml:160
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\" \n"
+"                   evaluate=\"#{documentEditor.errors.size}\"&gt;\n"
+"        &lt;rule if-outcome=\"0\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\" \n"
+"                   evaluate=\"#{documentEditor.errors.size}\"&gt;\n"
+"        &lt;rule if-outcome=\"0\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Events.xml:161
+#, no-c-format
+msgid "Or even:"
+msgstr "O incluso:"
+
+#. Tag: programlisting
+#: Events.xml:164
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Events.xml:165
+#, no-c-format
+msgid ""
+"The first form evaluates a value binding to determine the outcome value to "
+"be used by the subsequent rules. The second approach ignores the outcome and "
+"evaluates a value binding for each possible rule."
+msgstr ""
+"La primera forma evalúa un vínculo de valor para determinar el valor de "
+"salida que las reglas posteriores deben utilizar. El segundo enfoque ignora "
+"la salida y evalúa una vinculación de valor para cada regla posible."
+
+#. Tag: para
+#: Events.xml:168
+#, no-c-format
+msgid ""
+"Of course, when an update succeeds, we probably want to end the current "
+"conversation. We can do that like this:"
+msgstr ""
+"Por supuesto, cuando una actualización tiene éxito probablemente queremos "
+"dar fin a la conversación actual. Podemos hacerlo así: "
+
+#. Tag: programlisting
+#: Events.xml:171
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Events.xml:172
+#, no-c-format
+msgid ""
+"But ending the conversation loses any state associated with the "
+"conversation, including the document we are currently interested in! One "
+"solution would be to use an immediate render instead of a redirect:"
+msgstr ""
+"Pero al dar fin a la conversación se pierde cualquier estado asociado con "
+"esta incluyendo el documento en el que ¡estamos interesados! una solución "
+"podría ser una entrega inmediata en vez de un redireccionamiento:"
+
+#. Tag: programlisting
+#: Events.xml:175
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Events.xml:176
+#, no-c-format
+msgid "But the correct solution is to pass the document id as a request parameter:"
+msgstr ""
+"Pero la solución correcta es pasar el id del documento como parámetro del "
+"pedido:"
+
+#. Tag: programlisting
+#: Events.xml:179
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"&gt;\n"
+"                &lt;param name=\"documentId\" value=\"#{documentEditor."
+"documentId}\"/&gt;\n"
+"            &lt;/redirect&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"&gt;\n"
+"                &lt;param name=\"documentId\" value=\"#{documentEditor."
+"documentId}\"/&gt;\n"
+"            &lt;/redirect&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Events.xml:180
+#, no-c-format
+msgid ""
+"Null outcomes are a special case in JSF. The null outcome is interpreted to "
+"mean \"redisplay the page\". The following navigation rule matches any non-"
+"null outcome, but <emphasis>not</emphasis> the null outcome:"
+msgstr ""
+"Las salidas nulas son un caso especial en JSF. Las salidas nulas se "
+"interpretan como \"volver a presentar la página\". La siguiente regla de "
+"navegación coincide con cualquier salida que no sea nula pero <emphasis>no</"
+"emphasis> con la salida que sea nula:"
+
+#. Tag: programlisting
+#: Events.xml:183
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule&gt;\n"
+"            &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule&gt;\n"
+"            &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Events.xml:184
+#, no-c-format
+msgid ""
+"If you want to perform navigation when a null outcome occurs, use the "
+"following form instead:"
+msgstr ""
+"Si quiere navegar cuando se presenta una salida nula, en su lugar utilice la "
+"siguiente forma:"
+
+#. Tag: programlisting
+#: Events.xml:187
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+
+#. Tag: title
+#: Events.xml:188
+#, no-c-format
+msgid "Fine-grained files for definition of navigation, page actions and parameters"
+msgstr ""
+"Archivos detallados para la definición de navegación, acciones de página y "
+"parámetros"
+
+#. Tag: para
+#: Events.xml:189
+#, no-c-format
+msgid ""
+"If you have a lot of different page actions and page parameters, or even "
+"just a lot of navigation rules, you will almost certainly want to split the "
+"declarations up over multiple files. You can define actions and parameters "
+"for a page with the view id <literal>/calc/calculator.jsp</literal> in a "
+"resource named <literal>calc/calculator.page.xml</literal>. The root element "
+"in this case is the <literal>&lt;page&gt;</literal> element, and the view id "
+"is implied:"
+msgstr ""
+"Si tiene bastantes acciones de página diferentes y parámetros de página o "
+"inclusive bastantes reglas de navegación seguramente querrá dividir las "
+"declaraciones en múltiples archivos. Puede definir acciones y parámetros "
+"para una página con el id de vista <literal>/calc/calculator.jsp</literal> "
+"en un recurso llamado <literal>calc/calculator.page.xml</literal>. El "
+"elemento raíz en este caso es el elemento <literal>&lt;page&gt;</literal> y "
+"se supone el id de vista:"
+
+#. Tag: programlisting
+#: Events.xml:192
+#, no-c-format
+msgid ""
+"&lt;page action=\"#{calculator.calculate}\"&gt;\n"
+"    &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"    &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"    &lt;param name=\"op\" converter=\"#{operatorConverter}\" value=\"#"
+"{calculator.op}\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page action=\"#{calculator.calculate}\"&gt;\n"
+"    &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"    &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"    &lt;param name=\"op\" converter=\"#{operatorConverter}\" value=\"#"
+"{calculator.op}\"/&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: title
+#: Events.xml:193
+#, no-c-format
+msgid "Component-driven events"
+msgstr "Eventos dirigidos por componentes"
+
+#. Tag: para
+#: Events.xml:194
+#, no-c-format
+msgid ""
+"Seam components can interact by simply calling each others methods. Stateful "
+"components may even implement the observer/observable pattern. But to enable "
+"components to interact in a more loosely-coupled fashion than is possible "
+"when the components call each others methods directly, Seam provides "
+"<emphasis>component-driven events</emphasis>."
+msgstr ""
+"Los componentes Seam pueden interactuar simplemente con llamar los métodos "
+"del otro. Los componentes con estado incluso pueden implementar el patrón de "
+"observador/observado. Pero para habilitar los componentes para que "
+"interactúen de manera más independiente de lo que es posible cuando los "
+"componentes llaman los métodos de los otros directamente, Seam proporciona "
+"<emphasis>eventos dirigidos por componentes</emphasis>."
+
+#. Tag: para
+#: Events.xml:197
+#, no-c-format
+msgid "We specify event listeners (observers) in <literal>components.xml</literal>."
+msgstr ""
+"Especificamos escuchas de eventos (observadores) en <literal>components.xml</"
+"literal>."
+
+#. Tag: programlisting
+#: Events.xml:200
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;event type=\"hello\"&gt;\n"
+"        &lt;action expression=\"#{helloListener.sayHelloBack}\"/&gt;\n"
+"        &lt;action expression=\"#{logger.logHello}\"/&gt;\n"
+"    &lt;/event&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components&gt;\n"
+"    &lt;event type=\"hello\"&gt;\n"
+"        &lt;action expression=\"#{helloListener.sayHelloBack}\"/&gt;\n"
+"        &lt;action expression=\"#{logger.logHello}\"/&gt;\n"
+"    &lt;/event&gt;\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Events.xml:201
+#, no-c-format
+msgid "Where the <emphasis>event type</emphasis> is just an arbitrary string."
+msgstr ""
+"En donde el <emphasis>tipo de evento</emphasis> es sólo una cadena "
+"arbitraria."
+
+#. Tag: para
+#: Events.xml:204
+#, no-c-format
+msgid ""
+"When an event occurs, the actions registered for that event will be called "
+"in the order they appear in <literal>components.xml</literal>. How does a "
+"component raise an event? Seam provides a built-in component for this."
+msgstr ""
+"Cuando un evento ocurre, las acciones registradas para ese evento se "
+"llamarán en el orden en que aparecen en <literal>components.xml</literal>. "
+"¿Cómo hace un componente para provocar un evento? Seam proporciona un "
+"componente incorporado para esto."
+
+#. Tag: programlisting
+#: Events.xml:207
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World!\");\n"
+"        Events.instance().raiseEvent(\"hello\");\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World!\");\n"
+"        Events.instance().raiseEvent(\"hello\");\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Events.xml:208
+#, no-c-format
+msgid "Or you can use an annotation."
+msgstr "O puede utilizar una anotación:"
+
+#. Tag: programlisting
+#: Events.xml:211
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    @RaiseEvent(\"hello\")\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World!\");\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    @RaiseEvent(\"hello\")\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World!\");\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Events.xml:212
+#, no-c-format
+msgid ""
+"Notice that this event producer has no dependency upon event consumers. The "
+"event listener may now be implemented with absolutely no dependency upon the "
+"producer:"
+msgstr ""
+"Observe que este productor de eventos no depende de los consumidores de "
+"eventos. Ahora se puede implementar el escucha de eventos sin ninguna "
+"dependencia en el productor:"
+
+#. Tag: programlisting
+#: Events.xml:215
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    public void sayHelloBack() {\n"
+"        FacesMessages.instance().add(\"Hello to you too!\");\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    public void sayHelloBack() {\n"
+"        FacesMessages.instance().add(\"Hello to you too!\");\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Events.xml:216
+#, no-c-format
+msgid ""
+"The method binding defined in <literal>components.xml</literal> above takes "
+"care of mapping the event to the consumer. If you don&#39;t like futzing "
+"about in the <literal>components.xml</literal> file, you can use an "
+"annotation instead:"
+msgstr ""
+"El método de vinculación definido en <literal>components.xml</literal> se "
+"encarga de mapear el evento al consumidor. Si no le gusta preocuparse de los "
+"detalles en el archivo <literal>components.xml</literal>, en su lugar puede "
+"utilizar una anotación: "
+
+#. Tag: programlisting
+#: Events.xml:219
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    @Observer(\"hello\")\n"
+"    public void sayHelloBack() {\n"
+"        FacesMessages.instance().add(\"Hello to you too!\");\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    @Observer(\"hello\")\n"
+"    public void sayHelloBack() {\n"
+"        FacesMessages.instance().add(\"Hello to you too!\");\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Events.xml:220
+#, no-c-format
+msgid ""
+"You might wonder why I&#39;ve not mentioned anything about event objects in "
+"this discussion. In Seam, there is no need for an event object to propagate "
+"state between event producer and listener. State is held in the Seam "
+"contexts, and is shared between components. However, if you really want to "
+"pass an event object, you can:"
+msgstr ""
+"Se preguntará por qué no he mencionado nada sobre objetos de eventos en esta "
+"discusión. En Seam no hay necesidad de tener un objeto de eventos para poder "
+"propagar el estado entre el productor de eventos y el escuchante. El estado "
+"se mantiene en los contextos Seam y se comparte entre los componentes. Sin "
+"embargo, si realmente quiere pasar un objeto de eventos puede: "
+
+#. Tag: programlisting
+#: Events.xml:223
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    private String name;\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World, my name is #0.\", "
+"name);\n"
+"        Events.instance().raiseEvent(\"hello\", name);\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    private String name;\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World, my name is #0.\", "
+"name);\n"
+"        Events.instance().raiseEvent(\"hello\", name);\n"
+"    }\n"
+"}"
+
+#. Tag: programlisting
+#: Events.xml:224
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    @Observer(\"hello\")\n"
+"    public void sayHelloBack(String name) {\n"
+"        FacesMessages.instance().add(\"Hello #0!\", name);\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    @Observer(\"hello\")\n"
+"    public void sayHelloBack(String name) {\n"
+"        FacesMessages.instance().add(\"Hello #0!\", name);\n"
+"    }\n"
+"}"
+
+#. Tag: title
+#: Events.xml:225
+#, no-c-format
+msgid "Contextual events"
+msgstr "Eventos contextuales"
+
+#. Tag: para
+#: Events.xml:226
+#, no-c-format
+msgid ""
+"Seam defines a number of built-in events that the application can use to "
+"perform special kinds of framework integration. The events are:"
+msgstr ""
+"Seam define un número de eventos incorporados que las aplicaciones pueden "
+"utilizar para realizar clases especiales de integración del marco de "
+"trabajo. Los eventos son:"
+
+#. Tag: para
+#: Events.xml:231
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.validationFailed</literal> &mdash; called when JSF "
+"validation fails"
+msgstr ""
+"<literal>org.jboss.seam.validationFailed</literal> &mdash; se llama cuando "
+"falla una validación JSF"
+
+#. Tag: para
+#: Events.xml:236
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.noConversation</literal> &mdash; called when there "
+"is no long running conversation and a long running conversation is required"
+msgstr ""
+"<literal>org.jboss.seam.noConversation</literal> &mdash; se llama cuando no "
+"hay una conversación larga pero si se necesita"
+
+#. Tag: para
+#: Events.xml:241
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preSetVariable.&lt;name&gt;</literal> &mdash; called "
+"when the context variable &lt;name&gt; is set"
+msgstr ""
+"<literal>org.jboss.seam.preSetVariable.&lt;name&gt;</literal> &mdash; se "
+"llama cuando se configura la variable de contexto &lt;name&gt; "
+
+#. Tag: para
+#: Events.xml:246
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postSetVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is set"
+msgstr ""
+"<literal>org.jboss.seam.postSetVariable.&lt;name&gt;</literal> &mdash; se "
+"llama cuando se configura la variable de contexto &lt;name&gt; "
+
+#. Tag: para
+#: Events.xml:251
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preRemoveVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is unset"
+msgstr ""
+"<literal>org.jboss.seam.preRemoveVariable.&lt;name&gt;</literal> &mdash; se "
+"llama cuando no está configurada la variable de contexto &lt;name&gt;"
+
+#. Tag: para
+#: Events.xml:256
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postRemoveVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is unset"
+msgstr ""
+"<literal>org.jboss.seam.postRemoveVariable.&lt;name&gt;</literal> &mdash; se "
+"llama cuando no está configurada la variable de contexto &lt;name&gt;"
+
+#. Tag: para
+#: Events.xml:261
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preDestroyContext.&lt;SCOPE&gt;</literal> &mdash; "
+"called before the &lt;SCOPE&gt; context is destroyed"
+msgstr ""
+"<literal>org.jboss.seam.preDestroyContext.&lt;SCOPE&gt;</literal> &mdash; se "
+"llama antes de que el contexto &lt;SCOPE&gt; sea destruido"
+
+#. Tag: para
+#: Events.xml:266
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postDestroyContext.&lt;SCOPE&gt;</literal> &mdash; "
+"called after the &lt;SCOPE&gt; context is destroyed"
+msgstr ""
+"<literal>org.jboss.seam.postDestroyContext.&lt;SCOPE&gt;</literal> &mdash; "
+"se llama después de que el contexto &lt;SCOPE&gt; sea destruído"
+
+#. Tag: para
+#: Events.xml:271
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beginConversation </literal>&mdash; called whenever "
+"a long-running conversation begins"
+msgstr ""
+"<literal>org.jboss.seam.beginConversation </literal>&mdash; se llama cuando "
+"empieza una conversación larga"
+
+#. Tag: para
+#: Events.xml:276
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endConversation </literal>&mdash; called whenever a "
+"long-running conversation ends"
+msgstr ""
+"<literal>org.jboss.seam.endConversation </literal>&mdash; se llama cuando "
+"termina una conversación larga"
+
+#. Tag: para
+#: Events.xml:281
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beginPageflow.&lt;name&gt; </literal>&mdash; called "
+"when the pageflow &lt;name&gt; begins"
+msgstr ""
+"<literal>org.jboss.seam.beginPageflow.&lt;name&gt; </literal>&mdash; se "
+"llama cuando el flujo de página &lt;name&gt; inicia "
+
+#. Tag: para
+#: Events.xml:286
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endPageflow.&lt;name&gt; </literal>&mdash; called "
+"when the pageflow &lt;name&gt; ends"
+msgstr ""
+"<literal>org.jboss.seam.endPageflow.&lt;name&gt; </literal>&mdash; se llama "
+"cuando el flujo de página &lt;name&gt; termina"
+
+#. Tag: para
+#: Events.xml:291
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.createProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; is created"
+msgstr ""
+"<literal>org.jboss.seam.createProcess.&lt;name&gt; </literal>&mdash; se "
+"llama cuando se crea el proceso &lt;name&gt; "
+
+#. Tag: para
+#: Events.xml:296
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; ends"
+msgstr ""
+"<literal>org.jboss.seam.endProcess.&lt;name&gt; </literal>&mdash; se llama "
+"cuando se termina el proceso &lt;name&gt;"
+
+#. Tag: para
+#: Events.xml:301
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.initProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; is associated with the conversation"
+msgstr ""
+"<literal>org.jboss.seam.initProcess.&lt;name&gt; </literal>&mdash; se llama "
+"cuando el proceso &lt;name&gt; es asociado con la conversación"
+
+#. Tag: para
+#: Events.xml:306
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.initTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is associated with the conversation"
+msgstr ""
+"<literal>org.jboss.seam.initTask.&lt;name&gt; </literal>&mdash; se llama "
+"cuando la tarea &lt;name&gt; es asociada con la conversación"
+
+#. Tag: para
+#: Events.xml:311
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.startTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is started"
+msgstr ""
+"<literal>org.jboss.seam.startTask.&lt;name&gt; </literal>&mdash; se llama "
+"cuando se inicia la tarea &lt;name&gt;"
+
+#. Tag: para
+#: Events.xml:316
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is ended"
+msgstr ""
+"<literal>org.jboss.seam.endTask.&lt;name&gt; </literal>&mdash; se llama "
+"cuando se termina la tarea &lt;name&gt; "
+
+#. Tag: para
+#: Events.xml:321
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postCreate.&lt;name&gt; </literal>&mdash; called "
+"when the component &lt;name&gt; is created"
+msgstr ""
+"<literal>org.jboss.seam.postCreate.&lt;name&gt; </literal>&mdash; se llama "
+"cuando se crea el componente &lt;name&gt;"
+
+#. Tag: para
+#: Events.xml:326
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preDestroy.&lt;name&gt; </literal>&mdash; called "
+"when the component &lt;name&gt; is destroyed"
+msgstr ""
+"<literal>org.jboss.seam.preDestroy.&lt;name&gt; </literal>&mdash; se llama "
+"cuando se destruye el componente&lt;name&gt;"
+
+#. Tag: para
+#: Events.xml:331
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beforePhase </literal>&mdash; called before the "
+"start of a JSF phase"
+msgstr ""
+"<literal>org.jboss.seam.beforePhase </literal>&mdash; se llama antes del "
+"inicio de una fase JSF"
+
+#. Tag: para
+#: Events.xml:336
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.afterPhase </literal>&mdash; called after the end of "
+"a JSF phase"
+msgstr ""
+"<literal>org.jboss.seam.afterPhase </literal>&mdash; se llama después del "
+"final de una fase JSF"
+
+#. Tag: para
+#: Events.xml:341
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postAuthenticate.&lt;name&gt; </literal>&mdash; "
+"called after a user is authenticated"
+msgstr ""
+"<literal>org.jboss.seam.postAuthenticate.&lt;name&gt; </literal>&mdash; se "
+"llama después de que un usuario es autenticado"
+
+#. Tag: para
+#: Events.xml:346
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preAuthenticate.&lt;name&gt; </literal>&mdash; "
+"called before attempting to authenticate a user"
+msgstr ""
+"<literal>org.jboss.seam.preAuthenticate.&lt;name&gt; </literal>&mdash; se "
+"llama antes de intentar autenticar un usuario"
+
+#. Tag: para
+#: Events.xml:351
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.notLoggedIn</literal> &mdash; called there is no "
+"authenticated user and authentication is required"
+msgstr ""
+"<literal>org.jboss.seam.notLoggedIn</literal> &mdash; se llama si no hay un "
+"usuario autenticado y se necesita la autenticación"
+
+#. Tag: para
+#: Events.xml:356
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.rememberMe</literal> &mdash; occurs when Seam "
+"security detects the username in a cookie"
+msgstr ""
+"<literal>org.jboss.seam.rememberMe</literal> &mdash; ocurre cuando la "
+"seguridad de Seam detecta el nombre de un usuario en un cookie"
+
+#. Tag: para
+#: Events.xml:361
+#, no-c-format
+msgid ""
+"Seam components may observe any of these events in just the same way they "
+"observe any other component-driven events."
+msgstr ""
+"Los componentes Seam pueden observar cualquiera de estos eventos de la misma "
+"manera que estos observan cualquier otro evento dirigido por componentes."
+
+#. Tag: title
+#: Events.xml:364
+#, no-c-format
+msgid "Seam interceptors"
+msgstr "Interceptores Seam"
+
+#. Tag: para
+#: Events.xml:365
+#, no-c-format
+msgid ""
+"EJB 3.0 introduced a standard interceptor model for session bean components. "
+"To add an interceptor to a bean, you need to write a class with a method "
+"annotated <literal>@AroundInvoke</literal> and annotate the bean with an "
+"<literal>@Interceptors</literal> annotation that specifies the name of the "
+"interceptor class. For example, the following interceptor checks that the "
+"user is logged in before allowing invoking an action listener method:"
+msgstr ""
+"EJB 3.0 introdujo un modelo de interceptor estándar para componentes bean de "
+"sesión. Para añadir un interceptor a un bean necesita escribir una clase con "
+"un método anotado <literal>@AroundInvoke</literal> y anotar el bean usando "
+"una anotación <literal>@Interceptors</literal> que especifica el nombre de "
+"la clase de interceptor. Por ejemplo, el siguiente interceptor verifica que "
+"el usuario tiene una sesión abierta antes de permitir la invocación de un "
+"método para escucha de acciones:"
+
+#. Tag: programlisting
+#: Events.xml:368
+#, no-c-format
+msgid ""
+"public class LoggedInInterceptor {\n"
+"\n"
+"   @AroundInvoke\n"
+"   public Object checkLoggedIn(InvocationContext invocation) throws "
+"Exception {\n"
+"   \n"
+"      boolean isLoggedIn = Contexts.getSessionContext().get(\"loggedIn\")!"
+"=null;\n"
+"      if (isLoggedIn) {\n"
+"         //the user is already logged in\n"
+"         return invocation.proceed();\n"
+"      }\n"
+"      else {\n"
+"         //the user is not logged in, fwd to login page\n"
+"         return \"login\";\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+"public class LoggedInInterceptor {\n"
+"\n"
+"   @AroundInvoke\n"
+"   public Object checkLoggedIn(InvocationContext invocation) throws "
+"Exception {\n"
+"   \n"
+"      boolean isLoggedIn = Contexts.getSessionContext().get(\"loggedIn\")!"
+"=null;\n"
+"      if (isLoggedIn) {\n"
+"         //the user is already logged in\n"
+"         return invocation.proceed();\n"
+"      }\n"
+"      else {\n"
+"         //the user is not logged in, fwd to login page\n"
+"         return \"login\";\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+
+#. Tag: para
+#: Events.xml:369
+#, no-c-format
+msgid ""
+"To apply this interceptor to a session bean which acts as an action "
+"listener, we must annotate the session bean <literal>@Interceptors"
+"(LoggedInInterceptor.class)</literal>. This is a somewhat ugly annotation. "
+"Seam builds upon the interceptor framework in EJB3 by allowing you to use "
+"<literal>@Interceptors</literal> as a meta-annotation. In our example, we "
+"would create an <literal>@LoggedIn</literal> annotation, as follows:"
+msgstr ""
+"Para aplicar este interceptor a un bean de sesión el cual actúa como "
+"escuchante de acciones debemos anotar los beans de sesión "
+"<literal>@Interceptors(LoggedInInterceptor.class)</literal>. Esta es una "
+"anotación un poco fea. Seam construye con base en el marco de trabajo del "
+"interceptor en EJB· permitiéndole utilizar <literal>@Interceptors</literal> "
+"como una meta-anotación. En nuestro ejemplo crearíamos una anotación "
+"<literal>@LoggedIn</literal> como sigue:"
+
+#. Tag: programlisting
+#: Events.xml:372
+#, no-c-format
+msgid ""
+"@Target(TYPE)\n"
+"@Retention(RUNTIME)\n"
+"@Interceptors(LoggedInInterceptor.class)\n"
+"public @interface LoggedIn {}"
+msgstr ""
+"@Target(TYPE)\n"
+"@Retention(RUNTIME)\n"
+"@Interceptors(LoggedInInterceptor.class)\n"
+"public @interface LoggedIn {}"
+
+#. Tag: para
+#: Events.xml:373
+#, no-c-format
+msgid ""
+"We can now simply annotate our action listener bean with <literal>@LoggedIn</"
+"literal> to apply the interceptor."
+msgstr ""
+"Ahora simplemente podemos anotar nuestro bean escucha de acciones con "
+"<literal>@LoggedIn</literal> para aplicar el interceptor."
+
+#. Tag: programlisting
+#: Events.xml:376
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"changePasswordAction\")\n"
+"@LoggedIn\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class ChangePasswordAction implements ChangePassword { \n"
+"    \n"
+"    ...\n"
+"    \n"
+"    public String changePassword() { ... }\n"
+"    \n"
+"}"
+msgstr ""
+"@Stateless\n"
+"@Name(\"changePasswordAction\")\n"
+"@LoggedIn\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class ChangePasswordAction implements ChangePassword { \n"
+"    \n"
+"    ...\n"
+"    \n"
+"    public String changePassword() { ... }\n"
+"    \n"
+"}"
+
+#. Tag: para
+#: Events.xml:377
+#, no-c-format
+msgid ""
+"If interceptor ordering is important (it usually is), you can add "
+"<literal>@Interceptor</literal> annotations to your interceptor classes to "
+"specify a partial order of interceptors."
+msgstr ""
+"Si el ordenamiento del interceptor es importante (usualmente lo es) puede "
+"añadir anotaciones <literal>@Interceptor</literal> a sus clases de "
+"interceptores para especificar un orden parcial de interceptores."
+
+#. Tag: programlisting
+#: Events.xml:380
+#, no-c-format
+msgid ""
+"@Interceptor(around={BijectionInterceptor.class,\n"
+"                     ValidationInterceptor.class,\n"
+"                     ConversationInterceptor.class},\n"
+"             within=RemoveInterceptor.class)\n"
+"public class LoggedInInterceptor\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+"@Interceptor(around={BijectionInterceptor.class,\n"
+"                     ValidationInterceptor.class,\n"
+"                     ConversationInterceptor.class},\n"
+"             within=RemoveInterceptor.class)\n"
+"public class LoggedInInterceptor\n"
+"{\n"
+"    ...\n"
+"}"
+
+#. Tag: para
+#: Events.xml:381
+#, no-c-format
+msgid ""
+"You can even have a \"client-side\" interceptor, that runs around any of the "
+"built-in functionality of EJB3:"
+msgstr ""
+"Inclusive puede tener un interceptor \"del lado del cliente\" que ejecuta "
+"con cualquiera de las funcionalidades incorporadas de EJB3:"
+
+#. Tag: programlisting
+#: Events.xml:384
+#, no-c-format
+msgid ""
+"@Interceptor(type=CLIENT)\n"
+"public class LoggedInInterceptor\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+"@Interceptor(type=CLIENT)\n"
+"public class LoggedInInterceptor\n"
+"{\n"
+"    ...\n"
+"}"
+
+#. Tag: para
+#: Events.xml:385
+#, no-c-format
+msgid ""
+"EJB interceptors are stateful, with a lifecycle that is the same as the "
+"component they intercept. For interceptors which do not need to maintain "
+"state, Seam lets you get a performance optimization by specifying "
+"<literal>@Interceptor(stateless=true)</literal>."
+msgstr ""
+"Los interceptores EJB tienen estado con un ciclo de vida igual al del "
+"componente al que interceptan. Para los interceptores que no necesitan "
+"mantener estado, Seam le permite obtener una optimización de rendimiento "
+"especificando <literal>@Interceptor(stateless=true)</literal>."
+
+#. Tag: para
+#: Events.xml:388
+#, no-c-format
+msgid ""
+"Much of the functionality of Seam is implemented as a set of built-in Seam "
+"interceptors, including the interceptors named in the previous example. You "
+"don&#39;t have to explicitly specify these interceptors by annotating your "
+"components; they exist for all interceptable Seam components."
+msgstr ""
+"Gran parte de la funcionalidad de Seam se implementa como un grupo de "
+"interceptores incorporados en Seam incluyendo los interceptores nombrados en "
+"el ejemplo anterior. No tiene que especificar explícitamente estos "
+"interceptores anotando sus componentes, estos existen para todos los "
+"componentes Seam interceptables. "
+
+#. Tag: para
+#: Events.xml:391
+#, no-c-format
+msgid ""
+"You can even use Seam interceptors with JavaBean components, not just EJB3 "
+"beans!"
+msgstr ""
+"¡Inclusive puede utilizar interceptores Seam con componentes JavaBean y no "
+"sólo beans EJB!"
+
+#. Tag: para
+#: Events.xml:394
+#, no-c-format
+msgid ""
+"EJB defines interception not only for business methods (using "
+"<literal>@AroundInvoke</literal>), but also for the lifecycle methods "
+"<literal>@PostConstruct</literal>, <literal>@PreDestroy</literal>, "
+"<literal>@PrePassivate</literal> and <literal>@PostActive</literal>. Seam "
+"supports all these lifecycle methods on both component and interceptor not "
+"only for EJB3 beans, but also for JavaBean components (except "
+"<literal>@PreDestroy</literal> which is not meaningful for JavaBean "
+"components)."
+msgstr ""
+"EJB define intercepción no sólo para métodos empresariales (usando "
+"<literal>@AroundInvoke</literal>), sino también para los métodos de ciclo de "
+"vida <literal>@PostConstruct</literal>, <literal>@PreDestroy</literal>, "
+"<literal>@PrePassivate</literal> y <literal>@PostActive</literal>. Seam "
+"soporta todos estos métodos de ciclo de vida tanto en el componente como en "
+"el interceptor no sólo para beans EJB3 sino también para componentes "
+"JavaBean (a excepción de <literal>@PreDestroy</literal>, el cual no es "
+"importante para los componentes JavaBean)."
+
+#. Tag: title
+#: Events.xml:397
+#, no-c-format
+msgid "Managing exceptions"
+msgstr "Administración de excepciones"
+
+#. Tag: para
+#: Events.xml:398
+#, no-c-format
+msgid ""
+"JSF is surprisingly limited when it comes to exception handling. As a "
+"partial workaround for this problem, Seam lets you define how a particular "
+"class of exception is to be treated by annotating the exception class, or "
+"declaring the exception class in an XML file. This facility is meant to be "
+"combined with the EJB 3.0-standard <literal>@ApplicationException</literal> "
+"annotation which specifies whether the exception should cause a transaction "
+"rollback."
+msgstr ""
+"JSF es sorprendentemente limitado cuando se refiere al manejo de "
+"excepciones. Como una solución parcial para este problema Seam le permite "
+"definir como tratar una clase en particular de excepción ya sea anotando la "
+"clase de excepción o declarando la clase de excepción en un archivo XML. Se "
+"supone que esta utilidad se debe combinar con la anotación estándar "
+"<literal>@ApplicationException</literal> de EJB 3.0, la cual especifica si "
+"la excepción debe revertir una transacción."
+
+#. Tag: title
+#: Events.xml:401
+#, no-c-format
+msgid "Exceptions and transactions"
+msgstr "Excepciones y transacciones"
+
+#. Tag: para
+#: Events.xml:402
+#, no-c-format
+msgid ""
+"EJB specifies well-defined rules that let us control whether an exception "
+"immediately marks the current transaction for rollback when it is thrown by "
+"a business method of the bean: <emphasis>system exceptions</emphasis> always "
+"cause a transaction rollback, <emphasis>application exceptions</emphasis> do "
+"not cause a rollback by default, but they do if "
+"<literal>@ApplicationException(rollback=true)</literal> is specified. (An "
+"application exception is any checked exception, or any unchecked exception "
+"annotated <literal>@ApplicationException</literal>. A system exception is "
+"any unchecked exception without an <literal>@ApplicationException</literal> "
+"annotation.)"
+msgstr ""
+"EJB especifica reglas bien definidas que nos permiten controlar si una "
+"excepción marca de manera inmediata la transacción actual para revertir una "
+"transacción cuando es emitida por un método empresarial del bean: las "
+"<emphasis>excepciones del sistema</emphasis> siempre causan que una "
+"transacción se revierta, las <emphasis>excepciones de aplicaciones</"
+"emphasis> no hacen que una transacción se revierta por defecto pero sí lo "
+"hacen si se especifica <literal>@ApplicationException(rollback=true)</"
+"literal> (una excepción de aplicación es cualquier excepción verificada o "
+"cualquier excepción no verificada pero con anotaciones "
+"<literal>@ApplicationException</literal>. Una excepción del sistema es "
+"cualquier excepción no verificada que no cuenta con una anotación "
+"<literal>@ApplicationException</literal>)."
+
+#. Tag: para
+#: Events.xml:405
+#, no-c-format
+msgid ""
+"Note that there is a difference between marking a transaction for rollback, "
+"and actually rolling it back. The exception rules say that the transaction "
+"should be marked rollback only, but it may still be active after the "
+"exception is thrown."
+msgstr ""
+"Observe que hay una diferencia entre marcar una transacción para revertir "
+"una transacción y de hecho hacerlo. Las reglas de excepción dicen que la "
+"transacción debe ser marcada solamente para revertir una transacción pero "
+"puede que aún esté activa después de que se presenta la excepción."
+
+#. Tag: para
+#: Events.xml:408
+#, no-c-format
+msgid ""
+"Seam applies the EJB 3.0 exception rollback rules also to Seam JavaBean "
+"components."
+msgstr ""
+"Seam también aplica las reglas para revertir una transacción de la excepción "
+"de EJB3.0 a los componentes Seam JavaBean."
+
+#. Tag: para
+#: Events.xml:411
+#, no-c-format
+msgid ""
+"But these rules only apply in the Seam component layer. What about an "
+"exception that is uncaught and propagates out of the Seam component layer, "
+"and out of the JSF layer? Well, it is always wrong to leave a dangling "
+"transaction open, so Seam rolls back any active transaction when an "
+"exception occurs and is uncaught in the Seam component layer."
+msgstr ""
+"Pero estas reglas sólo aplican en la capa de componentes Seam. ¿y qué "
+"pasaría con una excepción que no es atrapada y se propaga por fuera de la "
+"capa de componentes Seam y fuera de la capa JSF? Pues bien, siempre está mal "
+"dejar una transacción pendiente abierta así que Seam revierte cualquier "
+"transacción activa cuando ocurre una excepción y no es atrapada en la capa "
+"de componentes Seam."
+
+#. Tag: title
+#: Events.xml:414
+#, no-c-format
+msgid "Enabling Seam exception handling"
+msgstr "Habilitación del manejo de excepciones Seam"
+
+#. Tag: para
+#: Events.xml:415
+#, no-c-format
+msgid ""
+"To enable Seam&#39;s exception handling, we need to make sure we have the "
+"master servlet filter declared in <literal>web.xml</literal>:"
+msgstr ""
+"Para habilitar el manejo de excepciones de Seam necesitamos asegurarnos de "
+"que tenemos declarado el filtro servlet maestro en <literal>web.xml</"
+"literal>: "
+
+#. Tag: programlisting
+#: Events.xml:418
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.servlet.SeamFilter&lt;/filter-"
+"class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;"
+msgstr ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.servlet.SeamFilter&lt;/filter-"
+"class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;"
+
+#. Tag: para
+#: Events.xml:419
+#, no-c-format
+msgid ""
+"You may also need to disable Facelets development mode in <literal>web.xml</"
+"literal> and Seam debug mode in <literal>components.xml</literal> if you "
+"want your exception handlers to fire."
+msgstr ""
+"Puede que también necesite deshabilitar el modo de desarrollo de Facelets en "
+"<literal>web.xml</literal> y el modo de depuración de Seam en "
+"<literal>components.xml</literal> si quiere que sus manejadores de "
+"excepciones se disparen."
+
+#. Tag: title
+#: Events.xml:422
+#, no-c-format
+msgid "Using annotations for exception handling"
+msgstr "Uso de anotaciones para el manejo de excepciones"
+
+#. Tag: para
+#: Events.xml:423
+#, no-c-format
+msgid ""
+"The following exception results in a HTTP 404 error whenever it propagates "
+"out of the Seam component layer. It does not roll back the current "
+"transaction immediately when thrown, but the transaction will be rolled back "
+"if it the exception is not caught by another Seam component."
+msgstr ""
+"La siguiente excepción causa un error HTTP 404 cuando se propaga por fuera "
+"de la capa de componentes Seam. No revierte la transacción actual de manera "
+"inmediata cuando se presenta pero la transacción será revertida si la "
+"excepción no es atrapada por otro componente Seam."
+
+#. Tag: programlisting
+#: Events.xml:426
+#, no-c-format
+msgid ""
+"@HttpError(errorCode=404)\n"
+"public class ApplicationException extends Exception { ... }"
+msgstr ""
+"@HttpError(errorCode=404)\n"
+"public class ApplicationException extends Exception { ... }"
+
+#. Tag: para
+#: Events.xml:427
+#, no-c-format
+msgid ""
+"This exception results in a browser redirect whenever it propagates out of "
+"the Seam component layer. It also ends the current conversation. It causes "
+"an immediate rollback of the current transaction."
+msgstr ""
+"Esta excepción resulta en un redireccionamiento del navegador cuando este "
+"propaga fuera de la capa de componentes Seam. También da fin a la "
+"conversación actual y revierte la transacción actual de manera inmediata."
+
+#. Tag: programlisting
+#: Events.xml:430
+#, no-c-format
+msgid ""
+"@Redirect(viewId=\"/failure.xhtml\", end=true)\n"
+"@ApplicationException(rollback=true)\n"
+"public class UnrecoverableApplicationException extends RuntimeException "
+"{ ... }"
+msgstr ""
+"@Redirect(viewId=\"/failure.xhtml\", end=true)\n"
+"@ApplicationException(rollback=true)\n"
+"public class UnrecoverableApplicationException extends RuntimeException "
+"{ ... }"
+
+#. Tag: para
+#: Events.xml:431
+#, no-c-format
+msgid ""
+"Note that <literal>@Redirect</literal> does not work for exceptions which "
+"occur during the render phase of the JSF lifecycle."
+msgstr ""
+"Observe que <literal>@Redirect</literal> no funciona para excepciones que "
+"ocurren durante la fase de presentación del ciclo de vida de JSF."
+
+#. Tag: para
+#: Events.xml:434
+#, no-c-format
+msgid ""
+"This exception results in a redirect, along with a message to the user, when "
+"it propagates out of the Seam component layer. It also immediately rolls "
+"back the current transaction."
+msgstr ""
+"Esta excepción resulta en una redirección junto con un mensaje al usuario "
+"cuando este se propaga fuera de la capa de componentes Seam. También "
+"revierte la transacción actual de manera inmediata. "
+
+#. Tag: programlisting
+#: Events.xml:437
+#, no-c-format
+msgid ""
+"@Redirect(viewId=\"/error.xhtml\", message=\"Unexpected error\")\n"
+"public class SystemException extends RuntimeException { ... }"
+msgstr ""
+"@Redirect(viewId=\"/error.xhtml\", message=\"Unexpected error\")\n"
+"public class SystemException extends RuntimeException { ... }"
+
+#. Tag: title
+#: Events.xml:438
+#, no-c-format
+msgid "Using XML for exception handling"
+msgstr "Uso de XML para manejo de excepciones"
+
+#. Tag: para
+#: Events.xml:439
+#, no-c-format
+msgid ""
+"Since we can&#39;t add annotations to all the exception classes we are "
+"interested in, Seam also lets us specify this functionality in "
+"<literal>pages.xml</literal>."
+msgstr ""
+"Ya que no podemos añadir anotaciones a todas las clases de excepciones en "
+"las que estamos interesados, Seam también nos permite especificar esta "
+"funcionalidad en <literal>pages.xml</literal>. "
+
+#. Tag: programlisting
+#: Events.xml:442
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   \n"
+"   &lt;exception class=\"javax.persistence.EntityNotFoundException\"&gt;\n"
+"      &lt;http-error error-code=\"404\"/&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"   &lt;exception class=\"javax.persistence.PersistenceException\"&gt;\n"
+"      &lt;end-conversation/&gt;\n"
+"      &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"          &lt;message&gt;Database access failed&lt;/message&gt;\n"
+"      &lt;/redirect&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"   &lt;exception&gt;\n"
+"      &lt;end-conversation/&gt;\n"
+"      &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"          &lt;message&gt;Unexpected failure&lt;/message&gt;\n"
+"      &lt;/redirect&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"   \n"
+"   &lt;exception class=\"javax.persistence.EntityNotFoundException\"&gt;\n"
+"      &lt;http-error error-code=\"404\"/&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"   &lt;exception class=\"javax.persistence.PersistenceException\"&gt;\n"
+"      &lt;end-conversation/&gt;\n"
+"      &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"          &lt;message&gt;Database access failed&lt;/message&gt;\n"
+"      &lt;/redirect&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"   &lt;exception&gt;\n"
+"      &lt;end-conversation/&gt;\n"
+"      &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"          &lt;message&gt;Unexpected failure&lt;/message&gt;\n"
+"      &lt;/redirect&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Events.xml:443
+#, no-c-format
+msgid ""
+"The last <literal>&lt;exception&gt;</literal> declaration does not specify a "
+"class, and is a catch-all for any exception for which handling is not "
+"otherwise specified via annotations or in <literal>pages.xml</literal>."
+msgstr ""
+"La última declaración <literal>&lt;exception&gt;</literal> no especifica una "
+"clase y atrapa toda excepción que no fue especificada por el manejador por "
+"medio de anotaciones o en <literal>pages.xml</literal>."
+
+#. Tag: para
+#: Events.xml:446
+#, no-c-format
+msgid ""
+"You can also access the handled exception instance through EL, Seam places "
+"it in the conversation context, e.g. to access the message of the exception:"
+msgstr ""
+"También puede acceder la instancia de excepciones manejadas por medio de EL, "
+"Seam lo pone en el contexto de conversación por ejemplo para acceder al "
+"mensaje de la excepción:"
+
+#. Tag: programlisting
+#: Events.xml:449
+#, no-c-format
+msgid ""
+"...\n"
+"throw new AuthorizationException(\"You are not allowed to do this!\");\n"
+"\n"
+"&lt;pages&gt;\n"
+"\n"
+"    &lt;exception class=\"org.jboss.seam.security.AuthorizationException"
+"\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"        &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"            &lt;message severity=\"WARN\"&gt;#{handledException.message}&lt;/"
+"message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"\n"
+"&lt;/pages&gt;"
+msgstr ""
+"...\n"
+"throw new AuthorizationException(\"You are not allowed to do this!\");\n"
+"\n"
+"&lt;pages&gt;\n"
+"\n"
+"    &lt;exception class=\"org.jboss.seam.security.AuthorizationException"
+"\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"        &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"            &lt;message severity=\"WARN\"&gt;#{handledException.message}&lt;/"
+"message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"\n"
+"&lt;/pages&gt;"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Framework.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Framework.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Framework.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1228 @@
+# translation of Framework.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Framework\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 01:04+0000\n"
+"PO-Revision-Date: 2007-10-10 13:29+1000\n"
+"Last-Translator: Angela Garcia\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Framework.xml:6
+#, no-c-format
+msgid "The Seam Application Framework"
+msgstr "Marco de trabajo de Seam Application"
+
+#. Tag: para
+#: Framework.xml:7
+#, no-c-format
+msgid ""
+"Seam makes it really easy to create applications by writing plain Java "
+"classes with annotations, which don&#39;t need to extend any special "
+"interfaces or superclasses. But we can simplify some common programming "
+"tasks even further, by providing a set of pre-built components which can be "
+"re-used either by configuration in <literal>components.xml</literal> (for "
+"very simple cases) or extension."
+msgstr ""
+"Seam facilita la creación de aplicaciones al escribir clases Java con "
+"anotaciones, las cuales no necesitan extender ninguna superclase o "
+"interfaces especiales. Pero podemos simplificar algunas tareas de "
+"programación comunes aún más proporcionando un grupo de componentes "
+"previamente construidos, los cuales se pueden reutilizar por la "
+"configuración en <literal>components.xml</literal> (para casos muy simples) "
+"o por extensiones. "
+
+#. Tag: para
+#: Framework.xml:10
+#, no-c-format
+msgid ""
+"The <emphasis>Seam Application Framework</emphasis> can reduce the amount of "
+"code you need to write when doing basic database access in a web "
+"application, using either Hibernate or JPA."
+msgstr ""
+"El <emphasis>marco de trabajo de Seam Application</emphasis> puede reducir "
+"la cantidad de código que necesita escribir al acceder bases de datos "
+"básicas en una aplicación web ya sea utilizando Hibernate o JPA."
+
+#. Tag: para
+#: Framework.xml:13
+#, no-c-format
+msgid ""
+"We should emphasize that the framework is extremely simple, just a handful "
+"of simple classes that are easy to understand and extend. The \"magic\" is "
+"in Seam itself&mdash;the same magic you use when creating any Seam "
+"application even without using this framework."
+msgstr ""
+"Deberíamos enfatizar que el marco de trabajo es extremadamente simple y sólo "
+"hay unas cuantas clases simples que son fáciles de entender y extender. La "
+"\"magia\" se encuentra en Seam - la misma magia que utiliza cuando crea "
+"cualquier aplicación Seam incluso sin utilizar este marco de trabajo."
+
+#. Tag: title
+#: Framework.xml:17
+#, no-c-format
+msgid "Introduction"
+msgstr "Introducción"
+
+#. Tag: para
+#: Framework.xml:18
+#, no-c-format
+msgid ""
+"The components provided by the Seam application framework may be used in one "
+"of two different approaches. The first way is to install and configure an "
+"instance of the component in <literal>components.xml</literal>, just like we "
+"have done with other kinds of built-in Seam components. For example, the "
+"following fragment from <literal>components.xml</literal> installs a "
+"component which can perform basic CRUD operations for a <literal>Contact</"
+"literal> entity:"
+msgstr ""
+"Los componentes que el marco de trabajo de Seam application proporciona se "
+"pueden utilizar en uno o dos enfoques diferentes. La primera manera es "
+"instalar y configurar una instancia del componente en <literal>components."
+"xml</literal> así como lo hemos hecho con otras clases de componentes Seam "
+"incorporados. Por ejemplo, el siguiente fragmento desde <literal>components."
+"xml</literal> instala un componente que puede realizar operaciones CRUD "
+"básicas para una entidad <literal>Contact</literal>:"
+
+#. Tag: programlisting
+#: Framework.xml:21
+#, no-c-format
+msgid ""
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" \n"
+"                       entity-manager=\"#{personDatabase}\"&gt;\n"
+"    &lt;framework:id&gt;#{param.personId}&lt;/framework:id&gt;\n"
+"&lt;/framework:entity-home&gt;"
+msgstr ""
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" \n"
+"                       entity-manager=\"#{personDatabase}\"&gt;\n"
+"    &lt;framework:id&gt;#{param.personId}&lt;/framework:id&gt;\n"
+"&lt;/framework:entity-home&gt;"
+
+#. Tag: para
+#: Framework.xml:22
+#, no-c-format
+msgid ""
+"If that looks a bit too much like \"programming in XML\" for your taste, you "
+"can use extension instead:"
+msgstr ""
+"Si eso es demasiado parecido a \"programación en XML\" para su gusto "
+"entonces en su lugar puede utilizar extensiones:"
+
+#. Tag: programlisting
+#: Framework.xml:25
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; implements "
+"LocalPersonHome {\n"
+"    @RequestParameter String personId;\n"
+"    @In EntityManager personDatabase;\n"
+"    \n"
+"    public Object getId() { return personId; }\n"
+"    public EntityManager getEntityManager() { return personDatabase; }\n"
+"    \n"
+"}"
+msgstr ""
+"@Stateful\n"
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; implements "
+"LocalPersonHome {\n"
+"    @RequestParameter String personId;\n"
+"    @In EntityManager personDatabase;\n"
+"    \n"
+"    public Object getId() { return personId; }\n"
+"    public EntityManager getEntityManager() { return personDatabase; }\n"
+"    \n"
+"}"
+
+#. Tag: para
+#: Framework.xml:26
+#, no-c-format
+msgid ""
+"The second approach has one huge advantage: you can easily add extra "
+"functionality, and override the built-in functionality (the framework "
+"classes were carefully designed for extension and customization)."
+msgstr ""
+"El segundo enfoque tiene una gran ventaja: puede añadir extra "
+"funcionalidades fácilmente y anular las clases de funcionalidades "
+"incorporadas (las clases del marco de trabajo fueron diseñadas "
+"cuidadosamente para extensiones y personalización)."
+
+#. Tag: para
+#: Framework.xml:29
+#, no-c-format
+msgid ""
+"A second advantage is that your classes may be EJB stateful sessin beans, if "
+"you like. (They do not have to be, they can be plain JavaBean components if "
+"you prefer.)"
+msgstr ""
+"Una segunda ventaja es que sus clases pueden ser beans de sesión EJB con "
+"estado si así lo quiere (no tiene que ser así, si lo prefiere pueden ser "
+"componentes JavaBean simples)."
+
+#. Tag: para
+#: Framework.xml:32
+#, no-c-format
+msgid ""
+"At this time, the Seam Application Framework provides just four built-in "
+"components: <literal>EntityHome</literal> and <literal>HibernateEntityHome</"
+"literal> for CRUD, along with <literal>EntityQuery</literal> and "
+"<literal>HibernateEntityQuery</literal> for queries."
+msgstr ""
+"En este momento, el marco de trabajo de Seam Application proporciona "
+"solamente cuatro componentes incorporados: <literal>EntityHome</literal> y "
+"<literal>HibernateEntityHome</literal> para CRUD junto con "
+"<literal>EntityQuery</literal> y <literal>HibernateEntityQuery</literal> "
+"para peticiones."
+
+#. Tag: para
+#: Framework.xml:35
+#, no-c-format
+msgid ""
+"The Home and Query components are written so that they can function with a "
+"scope of session, event or conversation. Which scope you use depends upon "
+"the state model you wish to use in your application."
+msgstr ""
+"Los componentes Home y Query son escritos para que puedan funcionar con un "
+"ámbito de sesión, evento o conversación. El tipo de ámbito que utilice "
+"depende del modelo de estado que quiere utilizar en su aplicación."
+
+#. Tag: para
+#: Framework.xml:38
+#, no-c-format
+msgid ""
+"The Seam Application Framework only works with Seam-managed persistence "
+"contexts. By default, the components will look for a persistence context "
+"named <literal>entityManager</literal>."
+msgstr ""
+"El marco de trabajo de Seam Application sólo funciona con contextos de "
+"persistencia administrados por Seam. Por defecto, los componentes buscarán "
+"un contexto de persistencia llamado <literal>entityManager</literal>."
+
+#. Tag: title
+#: Framework.xml:44
+#, no-c-format
+msgid "Home objects"
+msgstr "Objetos home"
+
+#. Tag: para
+#: Framework.xml:45
+#, no-c-format
+msgid ""
+"A Home object provides persistence operations for a particular entity class. "
+"Suppose we have our trusty <literal>Person</literal> class:"
+msgstr ""
+"Un objeto Home proporciona operaciones de persistencia para una clase de "
+"entidad en particular. Suponga que tenemos nuestra clase confiable "
+"<literal>Person</literal>:"
+
+#. Tag: programlisting
+#: Framework.xml:48
+#, no-c-format
+msgid ""
+"@Entity\n"
+"public class Person {\n"
+"    @Id private Long id;\n"
+"    private String firstName;\n"
+"    private String lastName;\n"
+"    private Country nationality;\n"
+"    \n"
+"    //getters and setters...\n"
+"}"
+msgstr ""
+"@Entity\n"
+"public class Person {\n"
+"    @Id private Long id;\n"
+"    private String firstName;\n"
+"    private String lastName;\n"
+"    private Country nationality;\n"
+"    \n"
+"    //getters and setters...\n"
+"}"
+
+#. Tag: para
+#: Framework.xml:49
+#, no-c-format
+msgid ""
+"We can define a <literal>personHome</literal> component either via "
+"configuration:"
+msgstr ""
+"Podemos modificar un componente <literal>personHome</literal> por medio de "
+"la configuración:"
+
+#. Tag: programlisting
+#: Framework.xml:52
+#, no-c-format
+msgid ""
+"&lt;framework:entity-home name=\"personHome\" entity-class=\"eg.Person\" /"
+"&gt;"
+msgstr ""
+"&lt;framework:entity-home name=\"personHome\" entity-class=\"eg.Person\" /"
+"&gt;"
+
+#. Tag: para
+#: Framework.xml:53
+#, no-c-format
+msgid "Or via extension:"
+msgstr "o por medio de una extensión:"
+
+#. Tag: programlisting
+#: Framework.xml:56
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {}"
+msgstr ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {}"
+
+#. Tag: para
+#: Framework.xml:57
+#, no-c-format
+msgid ""
+"A Home object provides the following operations: <literal>persist()</"
+"literal>, <literal>remove()</literal>, <literal>update()</literal> and "
+"<literal>getInstance()</literal>. Before you can call the <literal>remove()</"
+"literal>, or <literal>update()</literal> operations, you must first set the "
+"identifier of the object you are interested in, using the <literal>setId()</"
+"literal> method."
+msgstr ""
+"Un objeto home proporciona las siguientes operaciones: <literal>persist()</"
+"literal>, <literal>remove()</literal>, <literal>update()</literal> y "
+"<literal>getInstance()</literal>. Antes de poder llamar las operaciones "
+"<literal>remove()</literal>, o <literal>update()</literal> primero debe "
+"configurar el identificador del objeto en el que está interesado utilizando "
+"el método <literal>setId()</literal>."
+
+#. Tag: para
+#: Framework.xml:60
+#, no-c-format
+msgid "We can use a Home directly from a JSF page, for example:"
+msgstr ""
+"Podemos utilizar un home directamente desde una página JSF, por ejemplo:"
+
+#. Tag: programlisting
+#: Framework.xml:63
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Create Person&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{personHome.instance."
+"firstName}\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{personHome.instance."
+"lastName}\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h1&gt;Create Person&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{personHome.instance."
+"firstName}\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{personHome.instance."
+"lastName}\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+
+#. Tag: para
+#: Framework.xml:64
+#, no-c-format
+msgid ""
+"Usually, it is much nicer to be able to refer to the <literal>Person</"
+"literal> merely as <literal>person</literal>, so let&#39;s make that "
+"possible by adding a line to <literal>components.xml</literal>:"
+msgstr ""
+"Usualmente es mucho mejor el poder referirse a <literal>Person</literal> "
+"simplemente como <literal>person</literal> así que hagamos eso posible "
+"añadiendo una línea a <literal>components.xml</literal>:"
+
+#. Tag: programlisting
+#: Framework.xml:67
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" /&gt;"
+msgstr ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" /&gt;"
+
+#. Tag: para
+#: Framework.xml:68
+#, no-c-format
+msgid ""
+"(If we are using configuration.) Or by adding a <literal>@Factory</literal> "
+"method to <literal>PersonHome</literal>:"
+msgstr ""
+"-Si estamos utilizando configuración- o añadiendo un método "
+"<literal>@Factory</literal> a <literal>PersonHome</literal>:"
+
+#. Tag: programlisting
+#: Framework.xml:71
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"}"
+msgstr ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"}"
+
+#. Tag: para
+#: Framework.xml:72
+#, no-c-format
+msgid ""
+"(If we are using extension.) This change simplifies our JSF page to the "
+"following:"
+msgstr ""
+"Si estamos utilizando extensión- este cambio simplifica nuestra página JSF "
+"así:"
+
+#. Tag: programlisting
+#: Framework.xml:75
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Create Person&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{person.firstName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{person.lastName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h1&gt;Create Person&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{person.firstName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{person.lastName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+
+#. Tag: para
+#: Framework.xml:76
+#, no-c-format
+msgid ""
+"Well, that lets us create new <literal>Person</literal> entries. Yes, that "
+"is all the code that is required! Now, if we want to be able to display, "
+"update and delete pre-existing <literal>Person</literal> entries in the "
+"database, we need to be able to pass the entry identifier to the "
+"<literal>PersonHome</literal>. Page parameters are a great way to do that:"
+msgstr ""
+"Bien, eso nos permite crear nuevas entradas <literal>Person</literal>. Sí, "
+"¡ese es todo el código que necesita! Ahora, si queremos tener la habilidad "
+"de presentar, actualizar y borrar entradas <literal>Person</literal> pre-"
+"existentes en la base de datos, necesitamos poder pasar el identificador de "
+"entrada a <literal>PersonHome</literal>. Los parámetros de página son una "
+"gran manera de hacer esto:"
+
+#. Tag: programlisting
+#: Framework.xml:79
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/editPerson.jsp\"&gt;\n"
+"        &lt;param name=\"personId\" value=\"#{personHome.id}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/editPerson.jsp\"&gt;\n"
+"        &lt;param name=\"personId\" value=\"#{personHome.id}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Framework.xml:80
+#, no-c-format
+msgid "Now we can add the extra operations to our JSF page:"
+msgstr "Ahora podemos añadir las operaciones extras a nuestra página JSF:"
+
+#. Tag: programlisting
+#: Framework.xml:83
+#, no-c-format
+msgid ""
+"&lt;h1&gt;\n"
+"    &lt;h:outputText rendered=\"#{!personHome.managed}\" value=\"Create "
+"Person\"/&gt;\n"
+"    &lt;h:outputText rendered=\"#{personHome.managed}\" value=\"Edit Person"
+"\"/&gt;\n"
+"&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{person.firstName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{person.lastName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\" \n"
+"                             rendered=\"#{!personHome.managed}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Update Person\" action=\"#{personHome."
+"update}\" \n"
+"                             rendered=\"#{personHome.managed}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Delete Person\" action=\"#{personHome."
+"remove}\" \n"
+"                             rendered=\"#{personHome.managed}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h1&gt;\n"
+"    &lt;h:outputText rendered=\"#{!personHome.managed}\" value=\"Create "
+"Person\"/&gt;\n"
+"    &lt;h:outputText rendered=\"#{personHome.managed}\" value=\"Edit Person"
+"\"/&gt;\n"
+"&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{person.firstName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{person.lastName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\" \n"
+"                             rendered=\"#{!personHome.managed}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Update Person\" action=\"#{personHome."
+"update}\" \n"
+"                             rendered=\"#{personHome.managed}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Delete Person\" action=\"#{personHome."
+"remove}\" \n"
+"                             rendered=\"#{personHome.managed}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+
+#. Tag: para
+#: Framework.xml:84
+#, no-c-format
+msgid ""
+"When we link to the page with no request parameters, the page will be "
+"displayed as a \"Create Person\" page. When we provide a value for the "
+"<literal>personId</literal> request parameter, it will be an \"Edit Person\" "
+"page."
+msgstr ""
+"Cuando enlazamos a la página sin parámetros de pedido, la página se "
+"presentará como una página \"Crear Persona\". Cuando le damos un valor para "
+"el parámetro de pedido <literal>personId</literal> será una página "
+"\"Modificar Persona\"."
+
+#. Tag: para
+#: Framework.xml:87
+#, no-c-format
+msgid ""
+"Suppose we need to create <literal>Person</literal> entries with their "
+"nationality initialized. We can do that easily, via configuration:"
+msgstr ""
+"Suponga que necesitamos crear entradas <literal>Person</literal> con su "
+"nacionalidad iniciada. Podemos lograr esto fácilmente por medio de la "
+"configuración:"
+
+#. Tag: programlisting
+#: Framework.xml:90
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" \n"
+"                       new-instance=\"#{newPerson}\"/&gt;\n"
+"\n"
+"&lt;component name=\"newPerson\" \n"
+"           class=\"eg.Person\"&gt;\n"
+"    &lt;property name=\"nationality\"&gt;#{country}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" \n"
+"                       new-instance=\"#{newPerson}\"/&gt;\n"
+"\n"
+"&lt;component name=\"newPerson\" \n"
+"           class=\"eg.Person\"&gt;\n"
+"    &lt;property name=\"nationality\"&gt;#{country}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+
+#. Tag: para
+#: Framework.xml:91
+#, no-c-format
+msgid "Or by extension:"
+msgstr "O por extensión:"
+
+#. Tag: programlisting
+#: Framework.xml:94
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"}"
+
+#. Tag: para
+#: Framework.xml:95
+#, no-c-format
+msgid ""
+"Of course, the <literal>Country</literal> could be an object managed by "
+"another Home object, for example, <literal>CountryHome</literal>."
+msgstr ""
+"Por supuesto, el <literal>Country</literal> puede ser un objeto administrado "
+"por otro objeto home, por ejemplo, <literal>CountryHome</literal>."
+
+#. Tag: para
+#: Framework.xml:98
+#, no-c-format
+msgid ""
+"To add more sophisticated operations (association management, etc), we can "
+"just add methods to <literal>PersonHome</literal>."
+msgstr ""
+"Para añadir más operaciones sofisticadas (administración de asociación, etc) "
+"simplemente podemos añadir métodos a <literal>PersonHome</literal>."
+
+#. Tag: programlisting
+#: Framework.xml:101
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"    public void migrate()\n"
+"    {\n"
+"        getInstance().setCountry(country);\n"
+"        update();\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"    public void migrate()\n"
+"    {\n"
+"        getInstance().setCountry(country);\n"
+"        update();\n"
+"    }\n"
+"    \n"
+"}"
+
+#. Tag: para
+#: Framework.xml:102
+#, no-c-format
+msgid ""
+"The Home object automatically displays faces messages when an operation is "
+"successful. To customize these messages we can, again, use configuration:"
+msgstr ""
+"El objeto home presenta automáticamente mensajes de face cuando la operación "
+"tiene éxito. Para personalizar estos mensajes de nuevo podemos utilizar la "
+"configuración:"
+
+#. Tag: programlisting
+#: Framework.xml:105
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\"\n"
+"                       entity-class=\"eg.Person\"\n"
+"                       new-instance=\"#{newPerson}\"&gt;\n"
+"    &lt;framework:created-message&gt;New person #{person.firstName} #{person."
+"lastName} created&lt;/framework:created-message&gt;\n"
+"    &lt;framework:deleted-message&gt;Person #{person.firstName} #{person."
+"lastName} deleted&lt;/framework:deleted-message&gt;\n"
+"    &lt;framework:updated-message&gt;Person #{person.firstName} #{person."
+"lastName} updated&lt;/framework:updated-message&gt;\n"
+"&lt;/framework:entity-home&gt;\n"
+"\n"
+"&lt;component name=\"newPerson\" \n"
+"           class=\"eg.Person\"&gt;\n"
+"    &lt;property name=\"nationality\"&gt;#{country}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\"\n"
+"                       entity-class=\"eg.Person\"\n"
+"                       new-instance=\"#{newPerson}\"&gt;\n"
+"    &lt;framework:created-message&gt;New person #{person.firstName} #{person."
+"lastName} created&lt;/framework:created-message&gt;\n"
+"    &lt;framework:deleted-message&gt;Person #{person.firstName} #{person."
+"lastName} deleted&lt;/framework:deleted-message&gt;\n"
+"    &lt;framework:updated-message&gt;Person #{person.firstName} #{person."
+"lastName} updated&lt;/framework:updated-message&gt;\n"
+"&lt;/framework:entity-home&gt;\n"
+"\n"
+"&lt;component name=\"newPerson\" \n"
+"           class=\"eg.Person\"&gt;\n"
+"    &lt;property name=\"nationality\"&gt;#{country}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+
+#. Tag: para
+#: Framework.xml:106
+#, no-c-format
+msgid "Or extension:"
+msgstr "O extensión:"
+
+#. Tag: programlisting
+#: Framework.xml:109
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"    protected String getCreatedMessage() { return \"New person #{person."
+"firstName} \n"
+"      #{person.lastName} created\"; }\n"
+"    protected String getUpdatedMessage() { return \"Person #{person."
+"firstName} \n"
+"      #{person.lastName} updated\"; }\n"
+"    protected String getDeletedMessage() { return \"Person #{person."
+"firstName} \n"
+"      #{person.lastName} deleted\"; }\n"
+"    \n"
+"}"
+msgstr ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"    protected String getCreatedMessage() { return \"New person #{person."
+"firstName} \n"
+"      #{person.lastName} created\"; }\n"
+"    protected String getUpdatedMessage() { return \"Person #{person."
+"firstName} \n"
+"      #{person.lastName} updated\"; }\n"
+"    protected String getDeletedMessage() { return \"Person #{person."
+"firstName} \n"
+"      #{person.lastName} deleted\"; }\n"
+"    \n"
+"}"
+
+#. Tag: para
+#: Framework.xml:110
+#, no-c-format
+msgid ""
+"But the best way to specify the messages is to put them in a resource bundle "
+"known to Seam (the bundle named <literal>messages</literal>, by default)."
+msgstr ""
+"Pero la mejor manera de especificar los mensajes es ponerlos en un grupo de "
+"recursos conocido para Seam (por defecto el grupo se llama "
+"<literal>messages</literal>)."
+
+#. Tag: programlisting
+#: Framework.xml:113
+#, no-c-format
+msgid ""
+"Person_created=New person #{person.firstName} #{person.lastName} created\n"
+"Person_deleted=Person #{person.firstName} #{person.lastName} deleted\n"
+"Person_updated=Person #{person.firstName} #{person.lastName} updated"
+msgstr ""
+"Person_created=New person #{person.firstName} #{person.lastName} created\n"
+"Person_deleted=Person #{person.firstName} #{person.lastName} deleted\n"
+"Person_updated=Person #{person.firstName} #{person.lastName} updated"
+
+#. Tag: para
+#: Framework.xml:114
+#, no-c-format
+msgid ""
+"This enables internationalization, and keeps your code and configuration "
+"clean of presentation concerns."
+msgstr ""
+"Esto permite la internacionalización y mantiene su código y configuración "
+"libres de preocupaciones relacionados con la presentación."
+
+#. Tag: para
+#: Framework.xml:117
+#, no-c-format
+msgid ""
+"The final step is to add validation functionality to the page, using "
+"<literal>&lt;s:validateAll&gt;</literal> and <literal>&lt;s:decorate&gt;</"
+"literal>, but I&#39;ll leave that for you to figure out."
+msgstr ""
+"El paso final es añadir la funcionalidad de validación a la página "
+"utilizando <literal>&lt;s:validateAll&gt;</literal> y <literal>&lt;s:"
+"decorate&gt;</literal> pero le voy a dejar eso a usted. "
+
+#. Tag: title
+#: Framework.xml:123
+#, no-c-format
+msgid "Query objects"
+msgstr "Objetos query"
+
+#. Tag: para
+#: Framework.xml:124
+#, no-c-format
+msgid ""
+"If we need a list of all <literal>Person</literal> instance in the database, "
+"we can use a Query object. For example:"
+msgstr ""
+"Si necesitamos una lista de todas las instancias <literal>Person</literal> "
+"en la base de datos podemos utilizar el objeto query. Por ejemplo:"
+
+#. Tag: programlisting
+#: Framework.xml:127
+#, no-c-format
+msgid ""
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\"/&gt;"
+msgstr ""
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\"/&gt;"
+
+#. Tag: para
+#: Framework.xml:128
+#, no-c-format
+msgid "We can use it from a JSF page:"
+msgstr "Podemos utilizarlo desde una página JSF:"
+
+#. Tag: programlisting
+#: Framework.xml:131
+#, no-c-format
+msgid ""
+"&lt;h1&gt;List of people&lt;/h1&gt;\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+"&lt;h1&gt;List of people&lt;/h1&gt;\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+
+#. Tag: para
+#: Framework.xml:132
+#, no-c-format
+msgid "We probably need to support pagination:"
+msgstr "Probablemente necesitaremos soportar paginación:"
+
+#. Tag: programlisting
+#: Framework.xml:135
+#, no-c-format
+msgid ""
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\" \n"
+"                        order=\"lastName\" \n"
+"                        max-results=\"20\"/&gt;"
+msgstr ""
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\" \n"
+"                        order=\"lastName\" \n"
+"                        max-results=\"20\"/&gt;"
+
+#. Tag: para
+#: Framework.xml:136
+#, no-c-format
+msgid "We&#39;ll use a page parameter to determine the page to display:"
+msgstr ""
+"Utilizaremos un parámetro de página para determinar la página a presentar: "
+
+#. Tag: programlisting
+#: Framework.xml:139
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/searchPerson.jsp\"&gt;\n"
+"        &lt;param name=\"firstResult\" value=\"#{people.firstResult}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/searchPerson.jsp\"&gt;\n"
+"        &lt;param name=\"firstResult\" value=\"#{people.firstResult}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Framework.xml:140
+#, no-c-format
+msgid "The JSF code for a pagination control is a bit verbose, but manageable:"
+msgstr ""
+"El código JSF para control de paginación es un poco verboso pero manejable:"
+
+#. Tag: programlisting
+#: Framework.xml:143
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Search for people&lt;/h1&gt;\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.previousExists}\" "
+"value=\"First Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"0\"/&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.previousExists}\" "
+"value=\"Previous Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.previousFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.nextExists}\" value="
+"\"Next Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.nextFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.nextExists}\" value="
+"\"Last Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.lastFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;"
+msgstr ""
+"&lt;h1&gt;Search for people&lt;/h1&gt;\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.previousExists}\" "
+"value=\"First Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"0\"/&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.previousExists}\" "
+"value=\"Previous Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.previousFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.nextExists}\" value="
+"\"Next Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.nextFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.nextExists}\" value="
+"\"Last Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.lastFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;"
+
+#. Tag: para
+#: Framework.xml:144
+#, no-c-format
+msgid ""
+"Real search screens let the user enter a bunch of optional search criteria "
+"to narrow the list of results returned. The Query object lets you specify "
+"optional \"restrictions\" to support this important usecase:"
+msgstr ""
+"Las pantallas de búsqueda real le permiten al usuario introducir criterios "
+"de búsqueda opcionales para limitar mejor la lista de resultados. El objeto "
+"query le permite especificar las \"restricciones\" opcionales para soportar "
+"este importante ejemplo:"
+
+#. Tag: programlisting
+#: Framework.xml:147
+#, no-c-format
+msgid ""
+"&lt;component name=\"examplePerson\" class=\"Person\"/&gt;\n"
+"        \n"
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\" \n"
+"                        order=\"lastName\" \n"
+"                        max-results=\"20\"&gt;\n"
+"    &lt;framework:restrictions&gt;\n"
+"        &lt;value&gt;lower(firstName) like lower( #{examplePerson.firstName} "
+"+ &#39;%&#39; )&lt;/value&gt;\n"
+"        &lt;value&gt;lower(lastName) like lower( #{examplePerson.lastName} + "
+"&#39;%&#39; )&lt;/value&gt;\n"
+"    &lt;/framework:restrictions&gt;\n"
+"&lt;/framework:entity-query&gt;"
+msgstr ""
+"&lt;component name=\"examplePerson\" class=\"Person\"/&gt;\n"
+"        \n"
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\" \n"
+"                        order=\"lastName\" \n"
+"                        max-results=\"20\"&gt;\n"
+"    &lt;framework:restrictions&gt;\n"
+"        &lt;value&gt;lower(firstName) like lower( #{examplePerson.firstName} "
+"+ &#39;%&#39; )&lt;/value&gt;\n"
+"        &lt;value&gt;lower(lastName) like lower( #{examplePerson.lastName} + "
+"&#39;%&#39; )&lt;/value&gt;\n"
+"    &lt;/framework:restrictions&gt;\n"
+"&lt;/framework:entity-query&gt;"
+
+#. Tag: para
+#: Framework.xml:148
+#, no-c-format
+msgid "Notice the use of an \"example\" object."
+msgstr "Observe el uso de un objeto \"ejemplo\"."
+
+#. Tag: programlisting
+#: Framework.xml:151
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Search for people&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{examplePerson.firstName}"
+"\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{examplePerson.lastName}"
+"\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;&lt;h:commandButton value=\"Search\" action=\"/search.jsp\"/"
+"&gt;&lt;/div&gt;\n"
+"&lt;/h:form&gt;\n"
+"\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+"&lt;h1&gt;Search for people&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{examplePerson.firstName}"
+"\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{examplePerson.lastName}"
+"\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;&lt;h:commandButton value=\"Search\" action=\"/search.jsp\"/"
+"&gt;&lt;/div&gt;\n"
+"&lt;/h:form&gt;\n"
+"\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+
+#. Tag: para
+#: Framework.xml:152
+#, no-c-format
+msgid ""
+"The examples in this section have all shown reuse by configuration. However, "
+"reuse by extension is equally possible for Query objects."
+msgstr ""
+"Los ejemplos en esta sección han mostrado la reutilización por "
+"configuración. Sin embargo, la reutilización por extensión es igualmente "
+"posible para los objetos query."
+
+#. Tag: title
+#: Framework.xml:158
+#, no-c-format
+msgid "Controller objects"
+msgstr "Objetos controller"
+
+#. Tag: para
+#: Framework.xml:159
+#, no-c-format
+msgid ""
+"A totally optional part of the Seam Application Framework is the class "
+"<literal>Controller</literal> and its subclasses <literal>EntityController</"
+"literal><literal>HibernateEntityController</literal> and "
+"<literal>BusinessProcessController</literal>. These classes provide nothing "
+"more than some convenience methods for access to commonly used built-in "
+"components and methods of built-in components. They help save a few "
+"keystrokes (characters can add up!) and provide a great launchpad for new "
+"users to explore the rich functionality built in to Seam."
+msgstr ""
+"Una parte totalmente opcional del marco de trabajo de Seam Application es la "
+"clase <literal>Controller</literal> y sus subclases "
+"<literal>EntityController</literal><literal>HibernateEntityController</"
+"literal> y <literal>BusinessProcessController</literal>. Estas clases "
+"proporcionan simplemente algunos métodos convenientes para acceder a los "
+"componentes incorporados utilizados comúnmente y a los métodos de los "
+"componentes incorporados. Estos ayudan a ahorrar un gran numero de "
+"caracteres a escribir (¡se van sumando poco a poco!) y proporcionan una gran "
+"plataforma de lanzamiento para los nuevos usuarios para poder explorar la "
+"rica funcionalidad incorporada en Seam. "
+
+#. Tag: para
+#: Framework.xml:162
+#, no-c-format
+msgid ""
+"For example, here is what <literal>RegisterAction</literal> from the Seam "
+"registration example would look like:"
+msgstr ""
+"Por ejemplo, así se vería <literal>RegisterAction</literal> del ejemplo de "
+"registro de Seam:"
+
+#. Tag: programlisting
+#: Framework.xml:165
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"register\")\n"
+"public class RegisterAction extends EntityController implements Register\n"
+"{\n"
+"\n"
+"   @In private User user;\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = createQuery(\"select u.username from User u where u."
+"username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getResultList();\n"
+"      \n"
+"      if ( existing.size()==0 )\n"
+"      {\n"
+"         persist(user);\n"
+"         info(\"Registered new user #{user.username}\");\n"
+"         return \"/registered.jspx\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         addFacesMessage(\"User #{user.username} already exists\");\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+"@Stateless\n"
+"@Name(\"register\")\n"
+"public class RegisterAction extends EntityController implements Register\n"
+"{\n"
+"\n"
+"   @In private User user;\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = createQuery(\"select u.username from User u where u."
+"username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getResultList();\n"
+"      \n"
+"      if ( existing.size()==0 )\n"
+"      {\n"
+"         persist(user);\n"
+"         info(\"Registered new user #{user.username}\");\n"
+"         return \"/registered.jspx\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         addFacesMessage(\"User #{user.username} already exists\");\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+
+#. Tag: para
+#: Framework.xml:166
+#, no-c-format
+msgid "As you can see, its not an earthshattering improvement..."
+msgstr "Como lo puede ver esta no es una mejora impactante..."

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Gettingstarted.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Gettingstarted.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Gettingstarted.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1112 @@
+# translation of Gettingstarted.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Gettingstarted\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 01:04+0000\n"
+"PO-Revision-Date: 2007-10-15 10:57+1000\n"
+"Last-Translator: Angela Garcia\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Gettingstarted.xml:6
+#, no-c-format
+msgid "Getting started with Seam, using seam-gen"
+msgstr "Inicio con Seam utilizando seam-gen"
+
+#. Tag: para
+#: Gettingstarted.xml:7
+#, no-c-format
+msgid ""
+"The Seam distribution includes a command line utility that makes it really "
+"easy to set up an Eclipse project, generate some simple Seam skeleton code, "
+"and reverse engineer an application from a pre-existing database."
+msgstr ""
+"La distribución Seam incluye una utilidad de la línea de comandos que "
+"facilita configurar un proyecto Eclipse, generar esqueletos de código Seam "
+"simples e invertir una aplicación desde una base de datos pre-existente."
+
+#. Tag: para
+#: Gettingstarted.xml:10
+#, no-c-format
+msgid ""
+"This is the easy way to get your feet wet with Seam, and gives you some "
+"ammunition for next time you find yourself trapped in an elevator with one "
+"of those tedious Ruby guys ranting about how great and wonderful his new toy "
+"is for building totally trivial applications that put things in databases."
+msgstr ""
+"Esta es la manera más fácil de empaparse de Seam y le da algunas municiones "
+"para la próxima vez que se encuentre atrapado en un ascensor con uno de esos "
+"que sólo habla sobre su grandioso y maravilloso juguete nuevo con el que "
+"puede construir aplicaciones triviales para poner cosas en bases de datos."
+
+#. Tag: para
+#: Gettingstarted.xml:13
+#, no-c-format
+msgid ""
+"In this release, seam-gen works best for people with JBoss AS. You can use "
+"the generated project with other J2EE or Java EE 5 application servers by "
+"making a few manual changes to the project configuration."
+msgstr ""
+"En este lanzamiento seam-gen funciona mejor para aquellos que cuentan con "
+"JBoss AS. Puede utilizar el proyecto generado con otros servidores de "
+"aplicaciones J2EE o Java EE 5 haciendo unos pocos cambios manuales a la "
+"configuración del proyecto."
+
+#. Tag: para
+#: Gettingstarted.xml:16
+#, no-c-format
+msgid ""
+"You <emphasis>can</emphasis> use seam-gen without Eclipse, but in this "
+"tutorial, we want to show you how to use it in conjunction with Eclipse for "
+"debugging and integration testing. If you don&#39;t want to install Eclipse, "
+"you can still follow along with this tutorial&mdash;all steps can be "
+"peformed from the command line."
+msgstr ""
+"<emphasis>Puede</emphasis> utilizar seam-gen sin Eclipse pero en este "
+"tutorial le queremos mostrar como utilizarlo junto con Eclipse para "
+"depuración y prueba de integración. Si no quiere instalar Eclipse todavía "
+"puede seguir este tutorial -todos los pasos se pueden realizar desde la "
+"línea de comandos."
+
+#. Tag: para
+#: Gettingstarted.xml:19
+#, no-c-format
+msgid ""
+"Seam-gen is basically just a big ugly Ant script wrapped around Hibernate "
+"Tools, together with some templates. Which means it is easy to customize if "
+"you need to."
+msgstr ""
+"Seam-gen es básicamente un largo y feo script Ant envuelto alrededor de "
+"Hibernate Tools junto con algunas plantillas, lo cual significa que es fácil "
+"de personalizar si así lo quiere."
+
+#. Tag: title
+#: Gettingstarted.xml:23
+#, no-c-format
+msgid "Before you start"
+msgstr "Antes de iniciar"
+
+#. Tag: para
+#: Gettingstarted.xml:24
+#, no-c-format
+msgid ""
+"Make sure you have JDK 5 or JDK 6, JBoss AS 4.0.5 and Ant 1.6, along with "
+"recent versions of Eclipse, the JBoss IDE plugin for Eclipse and the TestNG "
+"plugin for Eclipse correctly installed before starting. Add your JBoss "
+"installation to the JBoss Server View in Eclipse. Start JBoss in debug mode. "
+"Finally, start a command prompt in the directory where you unzipped the Seam "
+"distribution."
+msgstr ""
+"Asegúrese de que cuenta con JDK 5 o JDK 6, JBoss AS 4.0.5 y Ant 1.6, junto "
+"con versiones recientes de Eclipse, el plugin JBoss IDE para Eclipse y el "
+"plugin TestNG para Eclipse correctamente instalado antes de iniciar. Añada "
+"su instalación de JBoss al JBoss Server View en Eclipse. Inicie JBoss en "
+"modo de depuración. Finalmente inicie un intérprete de comandos en el "
+"directorio en donde descomprimió la distribución Seam."
+
+#. Tag: para
+#: Gettingstarted.xml:27
+#, no-c-format
+msgid ""
+"JBoss has sophisticated support for hot re-deployment of WARs and EARs. "
+"Unfortunately, due to bugs in the JVM, repeated redeployment of an EAR&mdash;"
+"which is common during development&mdash;eventually causes the JVM to run "
+"out of perm gen space. For this reason, we recommend running JBoss in a JVM "
+"with a large perm gen space at development time. If you&#39;re running JBoss "
+"from JBoss IDE, you can configure this in the server launch configuration, "
+"under \"VM arguments\". We suggest the following values:"
+msgstr ""
+"JBoss cuenta con soporte sofisticado para el despliegue en vivo de WARs y "
+"EARs. Desafortunadamente, debido a los errores en la MVJ el repetido "
+"despliegue de un EAR - lo cual es bastante común durante el desarrollo - "
+"hace que eventualmente la MVJ se quede sin espacio generado permanente. Por "
+"esta razón le recomendamos ejecutar JBoss en una MVJ que cuente con bastante "
+"espacio generado permanente durante el desarrollo. Si está ejecutando JBoss "
+"desde JBoss IDE puede configurar esto en la configuración de lanzamiento del "
+"servidor bajo \"VM arguments\". Le sugerimos los siguientes valores:"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:30
+#, no-c-format
+msgid "-Xms512m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512"
+msgstr "-Xms512m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512"
+
+#. Tag: para
+#: Gettingstarted.xml:31
+#, no-c-format
+msgid ""
+"If you don&#39;t have so much memory available, the following is our minimum "
+"recommendation:"
+msgstr ""
+"Si no cuenta con tanta memoria disponible lo siguiente es nuestra "
+"recomendación mínima: "
+
+#. Tag: programlisting
+#: Gettingstarted.xml:34
+#, no-c-format
+msgid "-Xms256m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=256"
+msgstr "-Xms256m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=256"
+
+#. Tag: para
+#: Gettingstarted.xml:35
+#, no-c-format
+msgid ""
+"If you&#39;re running JBoss from the commandline, you can configure the JVM "
+"options in <literal>bin/run.conf</literal>."
+msgstr ""
+"Si está ejecutando JBoss desde la línea de comandos puede configurar las "
+"opciones de la MVJ en <literal>bin/run.conf</literal>."
+
+#. Tag: para
+#: Gettingstarted.xml:38
+#, no-c-format
+msgid ""
+"If you don&#39;t want to bother with this stuff now, you don&#39;t have "
+"to&mdash;come back to it later, when you get your first "
+"<literal>OutOfMemoryException</literal>."
+msgstr ""
+"Si no se quiere preocupar de estas cosas ahora no es necesario que lo haga "
+"en este momento, lo puede hacer más adelante cuando obtenga su primera "
+"<literal>OutOfMemoryException</literal>."
+
+#. Tag: title
+#: Gettingstarted.xml:44
+#, no-c-format
+msgid "Setting up a new Eclipse project"
+msgstr "Configuración de un nuevo proyecto Eclipse"
+
+#. Tag: para
+#: Gettingstarted.xml:45
+#, no-c-format
+msgid ""
+"The first thing we need to do is configure seam-gen for your environment: "
+"JBoss AS installation directory, Eclipse workspace, and database connection. "
+"It&#39;s easy, just type:"
+msgstr ""
+"La primera cosa que necesitamos hacer es configurar es seam-gen para su "
+"entorno: el directorio de instalación de JBoss AS, el espacio de trabajo de "
+"Eclipse y la conexión de la base de datos. Es fácil simplemente escriba: "
+
+#. Tag: programlisting
+#: Gettingstarted.xml:48
+#, no-c-format
+msgid ""
+"cd jboss-seam-1.1.x\n"
+"seam setup"
+msgstr ""
+"cd jboss-seam-1.1.x\n"
+"seam setup"
+
+#. Tag: para
+#: Gettingstarted.xml:49
+#, no-c-format
+msgid "And you will be prompted for the needed information:"
+msgstr "y se le pedirá la información necesaria:"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:52
+#, no-c-format
+msgid ""
+"C:\\Projects\\jboss-seam&gt;seam setup\n"
+"Buildfile: C:\\Projects\\jboss-seam\\seam-gen\\build.xml\n"
+"\n"
+"setup:\n"
+"    [echo] Welcome to seam-gen :-)\n"
+"    [input] Enter your Java project workspace [C:/Projects]\n"
+"\n"
+"    [input] Enter your JBoss home directory [C:/Program Files/jboss-4.0.5."
+"GA]\n"
+"\n"
+"    [input] Enter the project name [myproject]\n"
+"helloworld\n"
+"    [input] Is this project deployed as an EAR (with EJB components) or a "
+"WAR \n"
+"       (with no EJB support) [ear] (ear,war,)\n"
+"\n"
+"    [input] Enter the Java package name for your session beans [com.mydomain."
+"helloworld]\n"
+"org.jboss.helloworld\n"
+"    [input] Enter the Java package name for your entity beans [org.jboss."
+"helloworld]\n"
+"\n"
+"    [input] Enter the Java package name for your test cases [org.jboss."
+"helloworld.test]\n"
+"\n"
+"    [input] What kind of database are you using? [hsql] \n"
+"    (hsql,mysql,oracle,postgres,mssql,db2,sybase,)\n"
+"mysql\n"
+"    [input] Enter the Hibernate dialect for your database [org.hibernate."
+"dialect.MySQLDialect]\n"
+"\n"
+"    [input] Enter the filesystem path to the JDBC driver jar [lib/hsqldb."
+"jar]\n"
+"../../mysql-connector.jar\n"
+"    [input] Enter JDBC driver class for your database [com.mysql.jdbc."
+"Driver]\n"
+"\n"
+"    [input] Enter the JDBC URL for your database [jdbc:mysql:///test]\n"
+"\n"
+"    [input] Enter database username [sa]\n"
+"gavin\n"
+"    [input] Enter database password []\n"
+"\n"
+"    [input] Are you working with tables that already exist in the database? "
+"[n] (y,n,)\n"
+"y\n"
+"    [input] Do you want to drop and recreate the database tables and data in "
+"import.sql \n"
+"    each time you deploy? [n] (y,n,)\n"
+"n\n"
+"[propertyfile] Creating new property file: C:\\Projects\\jboss-seam\\seam-gen"
+"\\build.properties\n"
+"     [echo] Installing JDBC driver jar to JBoss server\n"
+"     [echo] Type &#39;seam new-project&#39; to create the new project\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 1 minute 17 seconds\n"
+"C:\\Projects\\jboss-seam&gt;"
+msgstr ""
+"C:\\Projects\\jboss-seam&gt;seam setup\n"
+"Buildfile: C:\\Projects\\jboss-seam\\seam-gen\\build.xml\n"
+"\n"
+"setup:\n"
+"    [echo] Welcome to seam-gen :-)\n"
+"    [input] Enter your Java project workspace [C:/Projects]\n"
+"\n"
+"    [input] Enter your JBoss home directory [C:/Program Files/jboss-4.0.5."
+"GA]\n"
+"\n"
+"    [input] Enter the project name [myproject]\n"
+"helloworld\n"
+"    [input] Is this project deployed as an EAR (with EJB components) or a "
+"WAR \n"
+"       (with no EJB support) [ear] (ear,war,)\n"
+"\n"
+"    [input] Enter the Java package name for your session beans [com.mydomain."
+"helloworld]\n"
+"org.jboss.helloworld\n"
+"    [input] Enter the Java package name for your entity beans [org.jboss."
+"helloworld]\n"
+"\n"
+"    [input] Enter the Java package name for your test cases [org.jboss."
+"helloworld.test]\n"
+"\n"
+"    [input] What kind of database are you using? [hsql] \n"
+"    (hsql,mysql,oracle,postgres,mssql,db2,sybase,)\n"
+"mysql\n"
+"    [input] Enter the Hibernate dialect for your database [org.hibernate."
+"dialect.MySQLDialect]\n"
+"\n"
+"    [input] Enter the filesystem path to the JDBC driver jar [lib/hsqldb."
+"jar]\n"
+"../../mysql-connector.jar\n"
+"    [input] Enter JDBC driver class for your database [com.mysql.jdbc."
+"Driver]\n"
+"\n"
+"    [input] Enter the JDBC URL for your database [jdbc:mysql:///test]\n"
+"\n"
+"    [input] Enter database username [sa]\n"
+"gavin\n"
+"    [input] Enter database password []\n"
+"\n"
+"    [input] Are you working with tables that already exist in the database? "
+"[n] (y,n,)\n"
+"y\n"
+"    [input] Do you want to drop and recreate the database tables and data in "
+"import.sql \n"
+"    each time you deploy? [n] (y,n,)\n"
+"n\n"
+"[propertyfile] Creating new property file: C:\\Projects\\jboss-seam\\seam-gen"
+"\\build.properties\n"
+"     [echo] Installing JDBC driver jar to JBoss server\n"
+"     [echo] Type &#39;seam new-project&#39; to create the new project\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 1 minute 17 seconds\n"
+"C:\\Projects\\jboss-seam&gt;"
+
+#. Tag: para
+#: Gettingstarted.xml:53
+#, no-c-format
+msgid ""
+"The tool provides sensible defaults, which you can accept by just pressing "
+"enter at the prompt."
+msgstr ""
+"La herramienta proporciona valores predeterminados sensatos, los cuales "
+"puede aceptar simplemente presionando la tecla intro en el intérprete de "
+"comandos."
+
+#. Tag: para
+#: Gettingstarted.xml:56
+#, no-c-format
+msgid ""
+"The most important choice you need to make is between EAR deployment and WAR "
+"deployment of your project. EAR projects support EJB 3.0 and require Java EE "
+"5. WAR projects do not support EJB 3.0, but may be deployed to a J2EE "
+"environment. The packaging of a WAR is also simpler to understand. If you "
+"installed JBoss with the ejb3 profile, choose <literal>ear</literal>. "
+"Otherwise, choose <literal>war</literal>. We&#39;ll assume that you&#39;ve "
+"chosen an EAR deployment for the rest of the tutorial, but you can follow "
+"exactly the same steps for a WAR deployment."
+msgstr ""
+"La elección más importante que debe realizar es entre el despliegue EAR y "
+"WAR de su proyecto. Los proyectos EAR soportan EJB 3.0 y requieren Java EE "
+"5. Los proyectos WAR no soportan EJB 3.0 pero se pueden desplegar en un "
+"entorno J2EE. El empaque de un WAR también es más simple de comprender. Si "
+"instaló JBoss con el perfil ejb3 escoja <literal>ear</literal>. De otra "
+"manera, escoja <literal>war</literal>. Vamos a asumir que escogió un "
+"despliegue EAR para el resto del tutorial pero puede seguir exactamente los "
+"mismos pasos para un despliegue WAR. "
+
+#. Tag: para
+#: Gettingstarted.xml:59
+#, no-c-format
+msgid ""
+"If you are working with an existing data model, make sure you tell seam-gen "
+"that the tables already exist in the database."
+msgstr ""
+"Si está trabajando con un modelo de datos existente asegúrese de decirle a "
+"seam-gen que las tablas ya existen en la base de datos."
+
+#. Tag: para
+#: Gettingstarted.xml:62
+#, no-c-format
+msgid ""
+"The settings are stored in <literal>seam-gen/build.properties</literal>, but "
+"you can also modify them simply by running <literal>seam setup</literal> a "
+"second time."
+msgstr ""
+"La configuración se almacena en <literal>seam-gen/build.properties</literal> "
+"pero también puede modificarla con simplemente ejecutar <literal>seam setup</"
+"literal> otra vez."
+
+#. Tag: para
+#: Gettingstarted.xml:65
+#, no-c-format
+msgid ""
+"Now we can create a new project in our Eclipse workspace directory, by "
+"typing:"
+msgstr ""
+"Ahora podemos crear un proyecto nuevo en nuestro directorio de trabajo de "
+"Eclipse escribiendo:"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:68
+#, no-c-format
+msgid "seam new-project"
+msgstr "seam new-project"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:69
+#, no-c-format
+msgid ""
+"C:\\Projects\\jboss-seam&gt;seam new-project\n"
+"Buildfile: C:\\Projects\\jboss-seam\\seam-gen\\build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"copy-lib:\n"
+"     [echo] Copying project jars ...\n"
+"     [copy] Copying 32 files to C:\\Projects\\helloworld\\lib\n"
+"     [copy] Copying 9 files to C:\\Projects\\helloworld\\embedded-ejb\n"
+"\n"
+"file-copy-wtp:\n"
+"\n"
+"file-copy:\n"
+"     [echo] Copying project resources ...\n"
+"     [copy] Copying 12 files to C:\\Projects\\helloworld\\resources\n"
+"     [copy] Copying 1 file to C:\\Projects\\helloworld\\resources\n"
+"     [copy] Copying 5 files to C:\\Projects\\helloworld\\view\n"
+"     [copy] Copying 5 files to C:\\Projects\\helloworld\n"
+"    [mkdir] Created dir: C:\\Projects\\helloworld\\src\n"
+"\n"
+"new-project:\n"
+"     [echo] A new Seam project named &#39;helloworld&#39; was created in "
+"the /Users/gavin/Documents/workspace directory\n"
+"     [echo] Type &#39;seam explode&#39; and go to http://localhost:8080/"
+"helloworld\n"
+"     [echo] Eclipse Users: Add the project into Eclipse using File &gt; New "
+"&gt; Project and select General &gt; Project (not Java Project)\n"
+"     [echo] NetBeans Users: Open the project in NetBeans\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 7 seconds\n"
+"C:\\Projects\\jboss-seam&gt;"
+msgstr ""
+"C:\\Projects\\jboss-seam&gt;seam new-project\n"
+"Buildfile: C:\\Projects\\jboss-seam\\seam-gen\\build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"copy-lib:\n"
+"     [echo] Copying project jars ...\n"
+"     [copy] Copying 32 files to C:\\Projects\\helloworld\\lib\n"
+"     [copy] Copying 9 files to C:\\Projects\\helloworld\\embedded-ejb\n"
+"\n"
+"file-copy-wtp:\n"
+"\n"
+"file-copy:\n"
+"     [echo] Copying project resources ...\n"
+"     [copy] Copying 12 files to C:\\Projects\\helloworld\\resources\n"
+"     [copy] Copying 1 file to C:\\Projects\\helloworld\\resources\n"
+"     [copy] Copying 5 files to C:\\Projects\\helloworld\\view\n"
+"     [copy] Copying 5 files to C:\\Projects\\helloworld\n"
+"    [mkdir] Created dir: C:\\Projects\\helloworld\\src\n"
+"\n"
+"new-project:\n"
+"     [echo] A new Seam project named &#39;helloworld&#39; was created in "
+"the /Users/gavin/Documents/workspace directory\n"
+"     [echo] Type &#39;seam explode&#39; and go to http://localhost:8080/"
+"helloworld\n"
+"     [echo] Eclipse Users: Add the project into Eclipse using File &gt; New "
+"&gt; Project and select General &gt; Project (not Java Project)\n"
+"     [echo] NetBeans Users: Open the project in NetBeans\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 7 seconds\n"
+"C:\\Projects\\jboss-seam&gt;"
+
+#. Tag: para
+#: Gettingstarted.xml:70
+#, no-c-format
+msgid ""
+"This copies the Seam jars, dependent jars and the JDBC driver jar to a new "
+"Eclipse project, and generates all needed resources and configuration files, "
+"a facelets template file and stylesheet, along with Eclipse metadata and an "
+"Ant build script. The Eclipse project will be automatically deployed to an "
+"exploded directory structure in JBoss AS as soon as you add the project "
+"using <literal>New -&gt; Project... -&gt; General -&gt; Project -&gt; Next</"
+"literal>, typing the <literal>Project name</literal> (<literal>helloworld</"
+"literal> in this case), and then clicking <literal>Finish</literal>. Do not "
+"select <literal>Java Project</literal> from the New Project wizard."
+msgstr ""
+"Esto copia las jars de Seam, las jars dependientes y el jar controlador JDBC "
+"en un nuevo proyecto Eclipse y genera todos los recursos y archivos de "
+"configuración que se necesitan, un archivo plantilla facelets y una hoja de "
+"estilo junto con los metadatos de Eclipse y un script de construcción Ant. "
+"El proyecto Eclipse se desplegará automáticamente en una estructura de "
+"directorio desplegada en JBoss AS tan pronto como añada el proyecto "
+"utilizando <literal>New -&gt; Project... -&gt; General -&gt; Project -&gt; "
+"Next</literal>, escrbiendo el nombre del proyecto en <literal>Project name</"
+"literal> (<literal>helloworld</literal> en este caso)y después haga click en "
+"<literal>Finish</literal> - terminar. No seleccione <literal>Java Project</"
+"literal> desde el ayudante de proyectos nuevos."
+
+#. Tag: para
+#: Gettingstarted.xml:73
+#, no-c-format
+msgid ""
+"If your default JDK in Eclipse is not a Java SE 5 or Java SE 6 JDK, you will "
+"need to select a Java SE 5 compliant JDK using <literal>Project -&gt; "
+"Properties -&gt; Java Compiler</literal>."
+msgstr ""
+"Si su JDK predeterminado en Eclipse no es Java SE 5 o Java SE 6 JDK "
+"necesitará seleccionar un Java SE 5 apropiado para JDK utilizando "
+"<literal>Project -&gt; Properties -&gt; Java Compiler</literal>."
+
+#. Tag: para
+#: Gettingstarted.xml:76
+#, no-c-format
+msgid ""
+"Alternatively, you can deploy the project from outside Eclipse by typing "
+"<literal>seam explode</literal>."
+msgstr ""
+"De otra manera, puede desplegar el proyecto desde fuera de Eclipse "
+"escribiendo <literal>seam explode</literal>."
+
+#. Tag: para
+#: Gettingstarted.xml:79
+#, no-c-format
+msgid ""
+"Go to <literal>http://localhost:8080/helloworld</literal> to see a welcome "
+"page. This is a facelets page, <literal>view/home.xhtml</literal>, using the "
+"template <literal>view/layout/template.xhtml</literal>. You can edit this "
+"page, or the template, in eclipse, and see the results "
+"<emphasis>immediately</emphasis>, by clicking refresh in your browser."
+msgstr ""
+"Vaya a <literal>http://localhost:8080/helloworld</literal> para ver la "
+"página de bienvenida. Esta es una página facelets, <literal>view/home.xhtml</"
+"literal>, utilizando la plantilla <literal>view/layout/template.xhtml</"
+"literal>. Puede modificar esta página o la plantilla en eclipse y ver los "
+"resultados <emphasis>inmediatamente</emphasis> al hacer click en el botón "
+"para refrescar en su navegador."
+
+#. Tag: para
+#: Gettingstarted.xml:82
+#, no-c-format
+msgid ""
+"Don&#39;t get scared by the XML configuration documents that were generated "
+"into the project directory. They are mostly standard Java EE stuff, the "
+"stuff you need to create once and then never look at again, and they are 90% "
+"the same between all Seam projects. (They are so easy to write that even "
+"seam-gen can do it.)"
+msgstr ""
+"No se asuste con los documentos de configuración XML que se generaron en el "
+"directorio del proyecto. La mayoría son cosas Java EE estándares, el tipo de "
+"cosas que es necesario crear una sola vez y no es necesario volver a mirar y "
+"es prácticamente todo lo mismo entre todos los proyectos Seam (son tan "
+"fáciles de escribir que inclusive seam-gen lo puede hacer)."
+
+#. Tag: para
+#: Gettingstarted.xml:85
+#, no-c-format
+msgid ""
+"The generated project includes three database and persistence "
+"configurations. The <literal>jboss-beans.xml</literal>, <literal>persistence-"
+"test.xml</literal> and <literal>import-test.sql</literal> files are used "
+"when running the TestNG unit tests against HSQLDB. The database schema and "
+"the test data in <literal>import-test.sql</literal> is always exported to "
+"the database before running tests. The <literal>myproject-dev-ds.xml</"
+"literal>, <literal>persistence-dev.xml</literal>and <literal>import-dev.sql</"
+"literal> files are for use when deploying the application to your "
+"development database. The schema might be exported automatically at "
+"deployment, depending upon whether you told seam-gen that you are working "
+"with an existing database. The <literal>myproject-prod-ds.xml</literal>, "
+"<literal>persistence-prod.xml</literal>and <literal>import-prod.sql</"
+"literal> files are for use when deploying the application to your production "
+"database. The schema is not exported automatically at deployment."
+msgstr ""
+"El proyecto generado incluye tres configuraciones de bases de datos y de "
+"persistencia. Los archivos <literal>jboss-beans.xml</literal>, "
+"<literal>persistence-test.xml</literal> y <literal>import-test.sql</literal> "
+"se utilizan al ejecuatr las pruebas de unidades TestNG frente a HSQLDB. El "
+"esquema de la base de datos y los datos de prueba en <literal>import-test."
+"sql</literal> siempre se exporta a la base de datos antes de ejecutar las "
+"pruebas. Los archivos <literal>myproject-dev-ds.xml</literal>, "
+"<literal>persistence-dev.xml</literal> y <literal>import-dev.sql</literal> "
+"se utilizan al desplegar la aplicación en su base de datos de desarrollo. El "
+"esquema se puede exportar automáticamente durante el despliegue dependiendo "
+"de si le dijo a seam-gen que está trabajando con una base de datos "
+"existente. Los archivos <literal>myproject-prod-ds.xml</literal>, "
+"<literal>persistence-prod.xml</literal> y <literal>import-prod.sql</literal> "
+"se utilizan al desplegar la aplicación en su base de datos de producción. El "
+"esquema no se exporta automáticamente durante el despliegue."
+
+#. Tag: title
+#: Gettingstarted.xml:91
+#, no-c-format
+msgid "Creating a new action"
+msgstr "Creación de una nueva acción"
+
+#. Tag: para
+#: Gettingstarted.xml:92
+#, no-c-format
+msgid ""
+"If you&#39;re used to traditional action-style web frameworks, you&#39;re "
+"probably wondering how you can create a simple webpage with a stateless "
+"action method in Java. If you type:"
+msgstr ""
+"Si está acostumbrado a los marcos de trabajo web tradicionales de estilo de "
+"acción probablemente se estará preguntando como puede crear una página web "
+"simple sin un método de acción sin estado en Java. Si escribe:"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:95
+#, no-c-format
+msgid "seam new-action"
+msgstr "seam new-action"
+
+#. Tag: para
+#: Gettingstarted.xml:96
+#, no-c-format
+msgid ""
+"Seam will prompt for some information, and generate a new facelets page and "
+"Seam component for your project."
+msgstr ""
+"Seam le pedirá cierta información y generará una paǵina facelets nueva y un "
+"componente Seam para su proyecto."
+
+#. Tag: programlisting
+#: Gettingstarted.xml:99
+#, no-c-format
+msgid ""
+"C:\\Projects\\jboss-seam&gt;seam new-action ping\n"
+"Buildfile: C:\\Projects\\jboss-seam\\seam-gen\\build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"action-input:\n"
+"    [input] Enter the Seam component name\n"
+"ping\n"
+"    [input] Enter the local interface name [Ping]\n"
+"\n"
+"    [input] Enter the bean class name [PingBean]\n"
+"\n"
+"    [input] Enter the action method name [ping]\n"
+"\n"
+"    [input] Enter the page name [ping]\n"
+"\n"
+"\n"
+"setup-filters:\n"
+"\n"
+"new-action:\n"
+"     [echo] Creating a new stateless session bean component with an action "
+"method\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\\test\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\\test\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\view\n"
+"     [echo] Type &#39;seam restart&#39; and go to \n"
+"     http://localhost:8080/helloworld/ping.seam\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 13 seconds\n"
+"C:\\Projects\\jboss-seam&gt;"
+msgstr ""
+"C:\\Projects\\jboss-seam&gt;seam new-action ping\n"
+"Buildfile: C:\\Projects\\jboss-seam\\seam-gen\\build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"action-input:\n"
+"    [input] Enter the Seam component name\n"
+"ping\n"
+"    [input] Enter the local interface name [Ping]\n"
+"\n"
+"    [input] Enter the bean class name [PingBean]\n"
+"\n"
+"    [input] Enter the action method name [ping]\n"
+"\n"
+"    [input] Enter the page name [ping]\n"
+"\n"
+"\n"
+"setup-filters:\n"
+"\n"
+"new-action:\n"
+"     [echo] Creating a new stateless session bean component with an action "
+"method\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\\test\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\\test\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\view\n"
+"     [echo] Type &#39;seam restart&#39; and go to \n"
+"     http://localhost:8080/helloworld/ping.seam\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 13 seconds\n"
+"C:\\Projects\\jboss-seam&gt;"
+
+#. Tag: para
+#: Gettingstarted.xml:100
+#, no-c-format
+msgid ""
+"Because we&#39;ve added a new Seam component, we need to restart the "
+"exploded directory deployment. You can do this by typing <literal>seam "
+"restart</literal>, or by running the <literal>restart</literal> target in "
+"the generated project <literal>build.xml</literal> file from inside Eclipse. "
+"Another way to force a restart is to edit the file <literal>resources/META-"
+"INF/application.xml</literal> in Eclipse. <emphasis>Note that you do not "
+"need to restart JBoss each time you change the application.</emphasis>"
+msgstr ""
+"Debido a que hemos agregado un nuevo componente Seam necesitamos reiniciar "
+"el despliegue del directorio expandido. Esto lo puede hacer escribiendo "
+"<literal>seam restart</literal>, o ejecutando el objetivo <literal>restart</"
+"literal> en el archivo <literal>build.xml</literal> del proyecto generado "
+"desde de Eclipse. Otra manera de forzar el reinicio es modificando el "
+"archivo <literal>resources/META-INF/application.xml</literal> en Eclipse. "
+"<emphasis>Observe que no necesita reiniciar JBoss cada vez que cambia la "
+"aplicación.</emphasis> "
+
+#. Tag: para
+#: Gettingstarted.xml:103
+#, no-c-format
+msgid ""
+"Now go to <literal>http://localhost:8080/helloworld/ping.seam</literal> and "
+"click the button. You can see the code behind this action by looking in the "
+"project <literal>src</literal> directory. Put a breakpoint in the "
+"<literal>ping()</literal> method, and click the button again."
+msgstr ""
+"Ahora vaya a <literal>http://localhost:8080/helloworld/ping.seam</literal> y "
+"haga click en el botón. Podrá ver el código detrás de esta acción al mirar "
+"en el directorio <literal>src</literal> del proyecto. Ponga un punto de "
+"ruptura en el método <literal>ping()</literal>y haga click en el botón de "
+"nuevo."
+
+#. Tag: para
+#: Gettingstarted.xml:106
+#, no-c-format
+msgid ""
+"Finally, locate the <literal>PingTest.xml</literal> file in the test package "
+"and run the integration tests using the TestNG plugin for Eclipse. "
+"Alternatively, run the tests using <literal>seam test</literal> or the "
+"<literal>test</literal> target of the generated build."
+msgstr ""
+"Finalmente ubique el archivo <literal>PingTest.xml</literal> en el paquete "
+"de prueba y ejecute las pruebas de integración utilizando el plugin TestNG "
+"para Eclipse. De otra forma ejecute las pruebas utilizando <literal>seam "
+"test</literal> o el objetivo <literal>test</literal>de la construcción "
+"generada."
+
+#. Tag: title
+#: Gettingstarted.xml:112
+#, no-c-format
+msgid "Creating a form with an action"
+msgstr "Creación de una forma con una acción"
+
+#. Tag: para
+#: Gettingstarted.xml:113
+#, no-c-format
+msgid "The next step is to create a form. Type:"
+msgstr "El próximo paso es crear una forma. Escriba:"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:116
+#, no-c-format
+msgid "seam new-form"
+msgstr "seam new-form"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:117
+#, no-c-format
+msgid ""
+"C:\\Projects\\jboss-seam&gt;seam new-form\n"
+"Buildfile: C:\\Projects\\jboss-seam\\seam-gen\\build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"action-input:\n"
+"    [input] Enter the Seam component name\n"
+"hello\n"
+"    [input] Enter the local interface name [Hello]\n"
+"\n"
+"    [input] Enter the bean class name [HelloBean]\n"
+"\n"
+"    [input] Enter the action method name [hello]\n"
+"\n"
+"    [input] Enter the page name [hello]\n"
+"\n"
+"\n"
+"setup-filters:\n"
+"\n"
+"new-form:\n"
+"     [echo] Creating a new stateful session bean component with an action "
+"method\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\\test\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\view\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\\test\n"
+"     [echo] Type &#39;seam restart&#39; and go to http://localhost:8080/"
+"hello/hello.seam\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 5 seconds\n"
+"C:\\Projects\\jboss-seam&gt;"
+msgstr ""
+"C:\\Projects\\jboss-seam&gt;seam new-form\n"
+"Buildfile: C:\\Projects\\jboss-seam\\seam-gen\\build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"action-input:\n"
+"    [input] Enter the Seam component name\n"
+"hello\n"
+"    [input] Enter the local interface name [Hello]\n"
+"\n"
+"    [input] Enter the bean class name [HelloBean]\n"
+"\n"
+"    [input] Enter the action method name [hello]\n"
+"\n"
+"    [input] Enter the page name [hello]\n"
+"\n"
+"\n"
+"setup-filters:\n"
+"\n"
+"new-form:\n"
+"     [echo] Creating a new stateful session bean component with an action "
+"method\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\\test\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\view\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\\test\n"
+"     [echo] Type &#39;seam restart&#39; and go to http://localhost:8080/"
+"hello/hello.seam\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 5 seconds\n"
+"C:\\Projects\\jboss-seam&gt;"
+
+#. Tag: para
+#: Gettingstarted.xml:118
+#, no-c-format
+msgid ""
+"Restart the application again, and go to <literal>http://localhost:8080/"
+"helloworld/hello.seam</literal>. Then take a look at the generated code. Run "
+"the test. Try adding some new fields to the form and Seam component "
+"(remember to restart the deploment each time you change the Java code)."
+msgstr ""
+"Reinicie la aplicación de nuevo y vaya a <literal>http://localhost:8080/"
+"helloworld/hello.seam</literal>. Después dele un vistazo al código generado. "
+"Ejecute la prueba. Trate de añadir algunos campos nuevos a la forma y al "
+"componente Seam (recuerde reiniciar el despliegue cada vez que cambie el "
+"código Java)."
+
+#. Tag: title
+#: Gettingstarted.xml:124
+#, no-c-format
+msgid "Generating an application from an existing database"
+msgstr "Generación de una aplicación desde una base de datos existente"
+
+#. Tag: para
+#: Gettingstarted.xml:125
+#, no-c-format
+msgid ""
+"Manually create some tables in your database. (If you need to switch to a "
+"different database, just run <literal>seam setup</literal> again.) Now type:"
+msgstr ""
+"Cree manualmente algunas tablas en su base de datos (si necesita cambiarse a "
+"una base de datos diferente simplemente ejecute <literal>seam setup</"
+"literal> de nuevo). Ahora escriba:"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:128
+#, no-c-format
+msgid "seam generate-entities"
+msgstr "seam generate-entities"
+
+#. Tag: para
+#: Gettingstarted.xml:129
+#, no-c-format
+msgid ""
+"Restart the deployment, and go to <literal>http://localhost:8080/helloworld</"
+"literal>. You can browse the database, edit existing objects, and create new "
+"objects. If you look at the generated code, you&#39;ll probably be amazed "
+"how simple it is! Seam was designed so that data access code is easy to "
+"write by hand, even for people who don&#39;t want to cheat by using seam-gen."
+msgstr ""
+"Reinicie el despliegue y vaya a <literal>http://localhost:8080/helloworld</"
+"literal>. Puede navegar la base de datos, modificar objetos existentes y "
+"crear objetos nuevos. Si mira el código generado probablemente ¡se asombrará "
+"de lo simple que es! Seam fue diseñado para que el código de acceso a los "
+"datos sea fácil de escribir a mano aún para aquellos que no quieren hacer "
+"trampa utilizando seam-gen. "
+
+#. Tag: title
+#: Gettingstarted.xml:135
+#, no-c-format
+msgid "Deploying the application as an EAR"
+msgstr "Despliegue de la aplicación como un EAR"
+
+#. Tag: para
+#: Gettingstarted.xml:136
+#, no-c-format
+msgid ""
+"Finally, we want to be able to deploy the application using standard Java EE "
+"5 packaging. First, we need to remove the exploded directory by running "
+"<literal>seam unexplode</literal>. To deploy the EAR, we can type "
+"<literal>seam deploy</literal> at the command prompt, or run the "
+"<literal>deploy</literal> target of the generated project build script. You "
+"can undeploy using <literal>seam undeploy</literal> or the "
+"<literal>undeploy</literal> target."
+msgstr ""
+"Finalmente queremos contar con la habilidad de desplegar la aplicación "
+"utilizando Java EE 5 packaging estándar. Primero necesitamos remover el "
+"directorio expandido ejecutando <literal>seam unexplode</literal>. Para "
+"desplegar EAR podemos escribir <literal>seam deploy</literal> en el "
+"intérprete de comandos o ejecute el objetivo <literal>deploy</literal> del "
+"script construido del proyecto generado. Puede desimplementar utilizando  "
+"<literal>seam undeploy</literal> o el objetivo <literal>undeploy</literal>."
+
+#. Tag: para
+#: Gettingstarted.xml:139
+#, no-c-format
+msgid ""
+"By default, the application will be deployed with the <emphasis>dev profile</"
+"emphasis>. The EAR will include the <literal>persistence-dev.xml</literal> "
+"and <literal>import-dev.sql</literal> files, and the <literal>myproject-dev-"
+"ds.xml</literal> file will be deployed. You can change the profile, and use "
+"the <emphasis>prod profile</emphasis>, by typing"
+msgstr ""
+"Por defecto, la aplicación se desplegará con el <emphasis>perfil dev</"
+"emphasis>. El EAR incluirá los archivos <literal>persistence-dev.xml</"
+"literal> y <literal>import-dev.sql</literal> y se desplegará el archivo "
+"<literal>myproject-dev-ds.xml</literal>. Puede cambiar el perfil y utilizar "
+"el <emphasis>perfil prod</emphasis> escribiendo"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:142
+#, no-c-format
+msgid "seam -Dprofile=prod deploy"
+msgstr "seam -Dprofile=prod deploy"
+
+#. Tag: para
+#: Gettingstarted.xml:143
+#, no-c-format
+msgid ""
+"You can even define new deployment profiles for your application. Just add "
+"appropriately named files to your project&mdash;for example, "
+"<literal>persistence-staging.xml</literal>, <literal>import-staging.sql</"
+"literal> and <literal>myproject-staging-ds.xml</literal>&mdash;and select "
+"the name of the profile using <literal>-Dprofile=staging</literal>."
+msgstr ""
+"Inclusive puede definir los nuevos perfiles de despliegue para su "
+"aplicación. Simplemente añada archivos nombrados apropiadamente a su "
+"proyecto por ejemplo <literal>persistence-staging.xml</literal>, "
+"<literal>import-staging.sql</literal> y <literal>myproject-staging-ds.xml</"
+"literal>&mdash; y seleccione el nombre del perfil utilizando <literal>-"
+"Dprofile=staging</literal>."
+
+#. Tag: title
+#: Gettingstarted.xml:149
+#, no-c-format
+msgid "Seam and incremental hot deployment"
+msgstr "Seam y despliegue en vivo creciente"
+
+#. Tag: para
+#: Gettingstarted.xml:150
+#, no-c-format
+msgid ""
+"When you deploy your Seam application as an exploded directory, you&#39;ll "
+"get some support for incremental hot deployment at development time. You "
+"need to enable debug mode in both Seam and Facelets, by adding this line to "
+"<literal>components.xml</literal>:"
+msgstr ""
+"Cuando despliegue su aplicación Seam como un directorio expandido obtendrá "
+"algo de soporte para el depliegue en vivo creciente durante el desarrollo. "
+"Es necesario que habilite el modo de depuración tanto en Seam como en "
+"Facelets añadiendo esta línea a <literal>components.xml</literal>:"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:153
+#, no-c-format
+msgid "&lt;core:init debug=\"true\"/&gt;"
+msgstr "&lt;core:init debug=\"true\"/&gt;"
+
+#. Tag: para
+#: Gettingstarted.xml:154
+#, no-c-format
+msgid ""
+"Now, the following files may be redeployed without requiring a full restart "
+"of the web application:"
+msgstr ""
+"Ahora se pueden volver a desplegar los siguientes archivos sin que sea "
+"necesario el reinicio de la aplicación web:"
+
+#. Tag: para
+#: Gettingstarted.xml:159
+#, no-c-format
+msgid "any facelets page"
+msgstr "cualquier página facelets "
+
+#. Tag: para
+#: Gettingstarted.xml:164
+#, no-c-format
+msgid "any <literal>pages.xml</literal> file"
+msgstr "cualquier archivo <literal>pages.xml</literal>"
+
+#. Tag: para
+#: Gettingstarted.xml:169
+#, no-c-format
+msgid ""
+"But if we want to change any Java code, we still need to do a full restart "
+"of the application. (In JBoss this may be accomplished by touching the "
+"toplevel deployment descriptor: <literal>application.xml</literal> for an "
+"EAR deployment, or <literal>web.xml</literal> for a WAR deployment.)"
+msgstr ""
+"Pero si queremos cambiar cualquier código Java aún será necesario reiniciar "
+"por completo la aplicación (en JBoss esto se puede lograr tocando el "
+"descriptor de despliegue en el nivel superior: <literal>application.xml</"
+"literal> para un despliegue EAR o <literal>web.xml</literal> para un "
+"despliegue WAR)."
+
+#. Tag: para
+#: Gettingstarted.xml:172
+#, no-c-format
+msgid ""
+"But if you really want a fast edit/compile/test cycle, Seam supports "
+"incremental redeployment of JavaBean components. To make use of this "
+"functionality, you must deploy the JavaBean components into the <literal>WEB-"
+"INF/dev</literal> directory, so that they will be loaded by a special Seam "
+"classloader, instead of by the WAR or EAR classloader."
+msgstr ""
+"Pero si realmente quiere un ciclo rápido de edición/compilación/prueba, Seam "
+"soporta un nuevo despliegue creciente de los componentes JavaBean. Para "
+"poder utilizar esta funcionalidad debe desplegar los componentes JavaBean en "
+"el directorio <literal>WEB-INF/dev</literal> para que sean cargados por un "
+"cargador especial de clase en vez de un cargador de clase EAR o WAR."
+
+#. Tag: para
+#: Gettingstarted.xml:175
+#, no-c-format
+msgid "You need to be aware of the following limitations:"
+msgstr "Necesita tomar en cuenta las siguientes limitaciones:"
+
+#. Tag: para
+#: Gettingstarted.xml:180
+#, no-c-format
+msgid ""
+"the components must be JavaBean components, they cannot be EJB3 beans (we "
+"are working on fixing this limitation)"
+msgstr ""
+"los componentes deben ser JavaBean y no pueden ser beans EJB3 (estamos "
+"trabajando para poder arreglar esta limitación)"
+
+#. Tag: para
+#: Gettingstarted.xml:185
+#, no-c-format
+msgid "entities can never be hot-deloyed"
+msgstr "las entidades nunca se pueden desplegar en vivo"
+
+#. Tag: para
+#: Gettingstarted.xml:190
+#, no-c-format
+msgid ""
+"components deployed via <literal>components.xml</literal> may not be hot-"
+"deployed"
+msgstr ""
+"los componentes desplegados por medio de <literal>components.xml</literal> "
+"no debe ser desplegables en vivo"
+
+#. Tag: para
+#: Gettingstarted.xml:195
+#, no-c-format
+msgid ""
+"the hot-deployable components will not be visible to any classes deployed "
+"outside of <literal>WEB-INF/dev</literal>"
+msgstr ""
+"los componentes que se pueden desplegar en vivo no serán visibles para "
+"ninguna de las clases deplegadas por fuera de <literal>WEB-INF/dev</literal>"
+
+#. Tag: para
+#: Gettingstarted.xml:200
+#, no-c-format
+msgid "Seam debug mode must be enabled"
+msgstr "Se debe habilitar el modo de depuración de Seam"
+
+#. Tag: para
+#: Gettingstarted.xml:205
+#, no-c-format
+msgid ""
+"If you create a WAR project using seam-gen, incremental hot deployment is "
+"available out of the box for classes in the <literal>src/action</literal> "
+"source directory. However, seam-gen does not support incremental hot "
+"deployment for EAR projects."
+msgstr ""
+"Si crea un proyecto WAR utilizando seam-gen el despliegue en vivo creciente "
+"se encuentra disponible para las clases en el directorio fuente <literal>src/"
+"action</literal>. Sin embargo, seam-gen no soporta depliegue en vivo "
+"creciente para los proyectos EAR."

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/I18n.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/I18n.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/I18n.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,690 @@
+# translation of I18n.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: I18n\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 01:04+0000\n"
+"PO-Revision-Date: 2007-10-29 11:42+1000\n"
+"Last-Translator: Angela Garcia\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: I18n.xml:6
+#, no-c-format
+msgid "Internationalization and themes"
+msgstr "Internacionalización y temas"
+
+#. Tag: para
+#: I18n.xml:7
+#, no-c-format
+msgid ""
+"Seam makes it easy to build internationalized applications by providing "
+"several built-in components for handling multi-language UI messages."
+msgstr ""
+"Seam facilita la construcción de aplicaciones internacionales proporcionando "
+"varios componentes incluídos para manejar mensajes multilenguaje UI."
+
+#. Tag: title
+#: I18n.xml:11
+#, no-c-format
+msgid "Locales"
+msgstr "Locales"
+
+#. Tag: para
+#: I18n.xml:12
+#, no-c-format
+msgid ""
+"Each user login session has an associated instance of <literal>java.util."
+"Locale</literal> (available to the application as a session-scoped component "
+"named <literal>locale</literal>). Under normal circumstances, you won&#39;t "
+"need to do any special configuration to set the locale. Seam just delegates "
+"to JSF to determine the active locale:"
+msgstr ""
+"Cada sesión de inicio de un usuario tiene una instancia asociada de "
+"<literal>java.util.Locale</literal> (disponible para la aplicación como un "
+"componente de sesión llamado <literal>locale</literal>). En circunstancias "
+"normales no necesitará ninguna configuración especial para modificar el "
+"local. Seam simplemente delega a JSF para determinar el local activo: "
+
+#. Tag: para
+#: I18n.xml:17
+#, no-c-format
+msgid ""
+"If there is a locale associated with the HTTP request (the browser locale), "
+"and that locale is in the list of supported locales from <literal>faces-"
+"config.xml</literal>, use that locale for the rest of the session."
+msgstr ""
+"Si hay un local asociado con el pedido HTTP (el navegador local) y ese local "
+"se encuentra en la lista de locales soportados desde <literal>faces-config."
+"xml</literal> utilice ese local para el resto de la sesión."
+
+#. Tag: para
+#: I18n.xml:20
+#, no-c-format
+msgid ""
+"Otherwise, if a default locale was specified in the <literal>faces-config."
+"xml</literal>, use that locale for the rest of the session."
+msgstr ""
+"De otra manera, si se especificó un local predeterminado en el "
+"<literal>faces-config.xml</literal> use ese local para el resto de la sesión."
+
+#. Tag: para
+#: I18n.xml:23
+#, no-c-format
+msgid "Otherwise, use the default locale of the server."
+msgstr "De otra manera utilice el local predeterminado del servidor."
+
+#. Tag: para
+#: I18n.xml:26
+#, no-c-format
+msgid ""
+"It is <emphasis>possible</emphasis> to set the locale manually via the Seam "
+"configuration properties <literal>org.jboss.seam.core.localeSelector."
+"language</literal>, <literal>org.jboss.seam.core.localeSelector.country</"
+"literal> and <literal>org.jboss.seam.core.localeSelector.variant</literal>, "
+"but we can&#39;t think of any good reason to ever do this."
+msgstr ""
+"Es <emphasis>posible</emphasis> configurar el local manualmente por medio de "
+"las propiedades de configuración Seam <literal>org.jboss.seam.core."
+"localeSelector.language</literal>, <literal>org.jboss.seam.core."
+"localeSelector.country</literal> y <literal>org.jboss.seam.core."
+"localeSelector.variant</literal>, pero no se no se me ocurre ninguna buena "
+"razón para que lo haga. "
+
+#. Tag: para
+#: I18n.xml:29
+#, no-c-format
+msgid ""
+"It is, however, useful to allow the user to set the locale manually via the "
+"application user interface. Seam provides built-in functionality for "
+"overriding the locale determined by the algorithm above. All you have to do "
+"is add the following fragment to a form in your JSP or Facelets page:"
+msgstr ""
+"Sin embargo, es bastante útil el permitirle al usuario que configure el "
+"local manualmente por medio de la interfaz de usuario de la aplicación. Seam "
+"proporciona una funcionalidad incorporada para anular el local determinado "
+"por el algoritmo anterior. Todo lo que tiene que hacer es añadir el "
+"siguiente fragmento a una forma en su página Facelets o JSP:"
+
+#. Tag: programlisting
+#: I18n.xml:32
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{localeSelector.language}\"&gt;\n"
+"    &lt;f:selectItem itemLabel=\"English\" itemValue=\"en\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Deutsch\" itemValue=\"de\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Francais\" itemValue=\"fr\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{localeSelector.select}\" value=\"#{messages"
+"[&#39;ChangeLanguage&#39;]}\"/&gt;"
+msgstr ""
+"&lt;h:selectOneMenu value=\"#{localeSelector.language}\"&gt;\n"
+"    &lt;f:selectItem itemLabel=\"English\" itemValue=\"en\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Deutsch\" itemValue=\"de\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Francais\" itemValue=\"fr\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{localeSelector.select}\" value=\"#{messages"
+"[&#39;ChangeLanguage&#39;]}\"/&gt;"
+
+#. Tag: para
+#: I18n.xml:33
+#, no-c-format
+msgid ""
+"Or, if you want a list of all supported locales from <literal>faces-config."
+"xml</literal>, just use:"
+msgstr ""
+"O si quiere una lista de todos los locales soportados desde <literal>faces-"
+"config.xml</literal> simplemente use:"
+
+#. Tag: programlisting
+#: I18n.xml:36
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{localeSelector.localeString}\"&gt;\n"
+"    &lt;f:selectItems value=\"#{localeSelector.supportedLocales}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{localeSelector.select}\" value=\"#{messages"
+"[&#39;ChangeLanguage&#39;]}\"/&gt;"
+msgstr ""
+"&lt;h:selectOneMenu value=\"#{localeSelector.localeString}\"&gt;\n"
+"    &lt;f:selectItems value=\"#{localeSelector.supportedLocales}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{localeSelector.select}\" value=\"#{messages"
+"[&#39;ChangeLanguage&#39;]}\"/&gt;"
+
+#. Tag: para
+#: I18n.xml:37
+#, no-c-format
+msgid ""
+"When this use selects an item from the drop-down, and clicks the button, the "
+"Seam and JSF locales will be overridden for the rest of the session."
+msgstr ""
+"Cuando este uso selecciona algo del menú desplegable y hace click en el "
+"botón, el Seam y los locales JSF serán anulados por el resto de la sesión."
+
+#. Tag: title
+#: I18n.xml:43
+#, no-c-format
+msgid "Labels"
+msgstr "Etiquetas"
+
+#. Tag: para
+#: I18n.xml:44
+#, no-c-format
+msgid ""
+"JSF supports internationalization of user interface labels and descriptive "
+"text via the use of <literal>&lt;f:loadBundle /&gt;</literal>. You can use "
+"this approach in Seam applications. Alternatively, you can take advantage of "
+"the Seam <literal>messages</literal> component to display templated labels "
+"with embedded EL expressions."
+msgstr ""
+"JSF soporta la internacionalización de las etiquetas de la interfaz de "
+"usuario y el texto descriptivo por medio del uso de <literal>&lt;f:"
+"loadBundle /&gt;</literal>. Puede utilizar este enfoque en las aplicaciones "
+"Seam. De manera alternativa puede sacar ventaja del componente Seam "
+"<literal>messages</literal> para presentar etiquetas en plantillas con "
+"expresiones EL incluídas."
+
+#. Tag: title
+#: I18n.xml:48
+#, no-c-format
+msgid "Defining labels"
+msgstr "Definición de etiquetas"
+
+#. Tag: para
+#: I18n.xml:49
+#, no-c-format
+msgid ""
+"Each login session has an associated instance of <literal>java.util."
+"ResourceBundle</literal> (available to the application as a session-scoped "
+"component named <literal>org.jboss.seam.core.resourceBundle</literal>). "
+"You&#39;ll need to make your internationalized labels available via this "
+"special resource bundle. By default, the resource bundle used by Seam is "
+"named <literal>messages</literal> and so you&#39;ll need to define your "
+"labels in files named <literal>messages.properties</literal>, "
+"<literal>messages_en.properties</literal>, <literal>messages_en_AU."
+"properties</literal>, etc. These files usually belong in the <literal>WEB-"
+"INF/classes</literal> directory."
+msgstr ""
+"Cada inicio de sesión tiene una instancia asociada de <literal>java.util."
+"ResourceBundle</literal> (disponible para la aplicación como un componente "
+"de sesión llamado <literal>org.jboss.seam.core.resourceBundle</literal>). "
+"Necesitará hacer que sus etiquetas internacionalizadas estén disponibles por "
+"medio de este paquete de recursos especiales. Por defecto, el paquete de "
+"recursos que Seam utiliza se denomina <literal>messages</literal> y por lo "
+"tanto necesitará definir sus etiquetas en archivos llamados "
+"<literal>messages.properties</literal>, <literal>messages_en.properties</"
+"literal>, <literal>messages_en_AU.properties</literal>, etc. Estos archivos "
+"usualmente pertenecen al directorio <literal>WEB-INF/classes</literal>."
+
+#. Tag: para
+#: I18n.xml:52
+#, no-c-format
+msgid "So, in <literal>messages_en.properties</literal>:"
+msgstr "Así que en <literal>messages_en.properties</literal>:"
+
+#. Tag: programlisting
+#: I18n.xml:55
+#, no-c-format
+msgid "Hello=Hello"
+msgstr "Hello=Hello"
+
+#. Tag: para
+#: I18n.xml:56
+#, no-c-format
+msgid "And in <literal>messages_en_AU.properties</literal>:"
+msgstr "y en <literal>messages_en_AU.properties</literal>:"
+
+#. Tag: programlisting
+#: I18n.xml:59
+#, no-c-format
+msgid "Hello=G&#39;day"
+msgstr "Hello=G&#39;day"
+
+#. Tag: para
+#: I18n.xml:60
+#, no-c-format
+msgid ""
+"You can select a different name for the resource bundle by setting the Seam "
+"configuration property named <literal>org.jboss.seam.core.resourceBundle."
+"bundleNames</literal>. You can even specify a list of resource bundle names "
+"to be searched (depth first) for messages."
+msgstr ""
+"Puede escoger un nombre diferente para la combinación de recursos "
+"configurando la propiedad de Seam llamada <literal>org.jboss.seam.core."
+"resourceBundle.bundleNames</literal>. Inclusive puede especificar una lista "
+"de nombres de recursos combinados en los que se deben buscar mensajes "
+"(primero a profundidad)."
+
+#. Tag: programlisting
+#: I18n.xml:63
+#, no-c-format
+msgid ""
+"&lt;core:resource-bundle&gt;\n"
+"    &lt;core:bundle-names&gt;\n"
+"        &lt;value&gt;mycompany_messages&lt;/value&gt;\n"
+"        &lt;value&gt;standard_messages&lt;/value&gt;       \n"
+"    &lt;/core:bundle-names&gt;\n"
+"&lt;/core:resource-bundle&gt;"
+msgstr ""
+"&lt;core:resource-bundle&gt;\n"
+"    &lt;core:bundle-names&gt;\n"
+"        &lt;value&gt;mycompany_messages&lt;/value&gt;\n"
+"        &lt;value&gt;standard_messages&lt;/value&gt;       \n"
+"    &lt;/core:bundle-names&gt;\n"
+"&lt;/core:resource-bundle&gt;"
+
+#. Tag: para
+#: I18n.xml:64
+#, no-c-format
+msgid ""
+"If you want to define a message just for a particular page, you can specify "
+"it in a resource bundle with the same name as the JSF view id, with the "
+"leading <literal>/</literal> and trailing file extension removed. So we "
+"could put our message in <literal>welcome/hello_en.properties</literal> if "
+"we only needed to display the message on <literal>/welcome/hello.jsp</"
+"literal>."
+msgstr ""
+"Si quiere definir un mensaje para una sólo página en particular puede "
+"especificarla en una combinación de recursos con el mismo nombre que el id "
+"de vista de JSF, con <literal>/</literal> al principio y removiendo la "
+"extensión del archivo. Así que podríamos poner nuestro mensaje en "
+"<literal>welcome/hello_en.properties</literal> si sólo necesitaramos "
+"presentar el mensaje en <literal>/welcome/hello.jsp</literal>."
+
+#. Tag: para
+#: I18n.xml:67
+#, no-c-format
+msgid "You can even specify an explicit bundle name in <literal>pages.xml</literal>:"
+msgstr ""
+"Inclusive puede especificar un nombre de la combinación de manera explícita "
+"en <literal>pages.xml</literal>:"
+
+#. Tag: programlisting
+#: I18n.xml:70
+#, no-c-format
+msgid "&lt;page view-id=\"/welcome/hello.jsp\" bundle=\"HelloMessages\"/&gt;"
+msgstr "&lt;page view-id=\"/welcome/hello.jsp\" bundle=\"HelloMessages\"/&gt;"
+
+#. Tag: para
+#: I18n.xml:71
+#, no-c-format
+msgid ""
+"Then we could use messages defined in <literal>HelloMessages.properties</"
+"literal> on <literal>/welcome/hello.jsp</literal>."
+msgstr ""
+"Después podríamos utilizar mensajes definidos en <literal>HelloMessages."
+"properties</literal> sobre <literal>/welcome/hello.jsp</literal>."
+
+#. Tag: title
+#: I18n.xml:77
+#, no-c-format
+msgid "Displaying labels"
+msgstr "Presentación de etiquetas "
+
+#. Tag: para
+#: I18n.xml:78
+#, no-c-format
+msgid ""
+"If you define your labels using the Seam resource bundle, you&#39;ll be able "
+"to use them without having to type <literal>&lt;f:loadBundle ... /&gt;</"
+"literal> on every page. Instead, you can simply type:"
+msgstr ""
+"Si define sus etiquetas utilizando la combinación de recursos de Seam podrá "
+"utilizarlas sin tener que escribir <literal>&lt;f:loadBundle ... /&gt;</"
+"literal> en todas las páginas. En su lugar simplemente puede escribir: "
+
+#. Tag: programlisting
+#: I18n.xml:81
+#, no-c-format
+msgid "&lt;h:outputText value=\"#{messages[&#39;Hello&#39;]}\"/&gt;"
+msgstr "&lt;h:outputText value=\"#{messages[&#39;Hello&#39;]}\"/&gt;"
+
+#. Tag: para
+#: I18n.xml:82
+#, no-c-format
+msgid "<para>or:</para>"
+msgstr "<para>o:</para>"
+
+#. Tag: programlisting
+#: I18n.xml:85
+#, no-c-format
+msgid "&lt;h:outputText value=\"#{messages.Hello}\"/&gt;"
+msgstr "&lt;h:outputText value=\"#{messages.Hello}\"/&gt;"
+
+#. Tag: para
+#: I18n.xml:86
+#, no-c-format
+msgid "Even better, the messages themselves may contain EL expressions:"
+msgstr "Aún mejor los mensajes mismos pueden contener expresiones EL:"
+
+#. Tag: programlisting
+#: I18n.xml:89
+#, no-c-format
+msgid "Hello=Hello, #{user.firstName} #{user.lastName}"
+msgstr "Hello=Hello, #{user.firstName} #{user.lastName}"
+
+#. Tag: programlisting
+#: I18n.xml:90
+#, no-c-format
+msgid "Hello=G&#39;day, #{user.firstName}"
+msgstr "Hello=G&#39;day, #{user.firstName}"
+
+#. Tag: para
+#: I18n.xml:91
+#, no-c-format
+msgid "You can even use the messages in your code:"
+msgstr "Inclusive puede utilizar los mensajes en su código:"
+
+#. Tag: programlisting
+#: I18n.xml:94
+#, no-c-format
+msgid "@In private Map&lt;String, String&gt; messages;"
+msgstr "@In private Map&lt;String, String&gt; messages;"
+
+#. Tag: programlisting
+#: I18n.xml:95
+#, no-c-format
+msgid "@In(\"#{messages[&#39;Hello&#39;]}\") private String helloMessage;"
+msgstr "@In(\"#{messages[&#39;Hello&#39;]}\") private String helloMessage;"
+
+#. Tag: title
+#: I18n.xml:99
+#, no-c-format
+msgid "Faces messages"
+msgstr "Mensajes de faces"
+
+#. Tag: para
+#: I18n.xml:100
+#, no-c-format
+msgid ""
+"The <literal>facesMessages</literal> component is a super-convenient way to "
+"display success or failure messages to the user. The functionality we just "
+"described also works for faces messages:"
+msgstr ""
+"El componente <literal>facesMessages</literal> es una manera super oportuna "
+"de presentar mensajes de éxito o de fallo al usuario. La funcionalidad que "
+"acabamos de describir también sirve para los mensajes faces:"
+
+#. Tag: programlisting
+#: I18n.xml:103
+#, no-c-format
+msgid ""
+"@Name(\"hello\")\n"
+"@Stateless\n"
+"public class HelloBean implements Hello {\n"
+"    @In FacesMessages facesMessages;\n"
+"    \n"
+"    public String sayIt() {\n"
+"        facesMessages.addFromResourceBundle(\"Hello\");\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"hello\")\n"
+"@Stateless\n"
+"public class HelloBean implements Hello {\n"
+"    @In FacesMessages facesMessages;\n"
+"    \n"
+"    public String sayIt() {\n"
+"        facesMessages.addFromResourceBundle(\"Hello\");\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: I18n.xml:104
+#, no-c-format
+msgid ""
+"This will display <literal>Hello, Gavin King</literal> or <literal>G&#39;"
+"day, Gavin</literal>, depending upon the user&#39;s locale."
+msgstr ""
+"Esto presentará <literal>Hello, Gavin King</literal> o <literal>G&#39;day, "
+"Gavin</literal> dependiendo del escenario local del usuario."
+
+#. Tag: title
+#: I18n.xml:112
+#, no-c-format
+msgid "Timezones"
+msgstr "Usos horarios"
+
+#. Tag: para
+#: I18n.xml:113
+#, no-c-format
+msgid ""
+"There is also a session-scoped instance of <literal>java.util.Timezone</"
+"literal>, named <literal>org.jboss.seam.core.timezone</literal>, and a Seam "
+"component for changing the timezone named <literal>org.jboss.seam.core."
+"timezoneSelector</literal>. By default, the timezone is the default timezone "
+"of the server. Unfortunately, the JSF specification says that all dates and "
+"times should be assumed to be UTC, and displayed as UTC, unless a timezone "
+"is explicitly specified using <literal>&lt;f:convertDateTime&gt;</literal>. "
+"This is an extremely inconvenient default behavior."
+msgstr ""
+"También hay una instancia de ámbito de sesión de <literal>java.util."
+"Timezone</literal> llamada <literal>org.jboss.seam.core.timezone</literal> y "
+"un componente para cambiar el uso horario llamado <literal>org.jboss.seam."
+"core.timezoneSelector</literal>. Por defecto, este uso horario es el "
+"predeterminado por el servidor. Desafortunadamente, la especificación JSF "
+"dice que se debe asumir que todas las fechas y horas son UTC y que se "
+"presentan como UTC a menos de que se especifique explícitamente un uso "
+"horario utilizando <literal>&lt;f:convertDateTime&gt;</literal>. Este es un "
+"comportamiento predeterminado poco práctico."
+
+#. Tag: para
+#: I18n.xml:116
+#, no-c-format
+msgid ""
+"Seam overrides this behavior, and defaults all dates and times to the Seam "
+"timezone. In addition, Seam provides the <literal>&lt;s:convertDateTime&gt;</"
+"literal> tag which always performs conversions in the Seam timezone."
+msgstr ""
+"Seam sobrescribe este comportamiento y utiliza las fechas y horas "
+"predeterminadas del uso horario de Seam. Además, Seam proporciona la "
+"etiqueta <literal>&lt;s:convertDateTime&gt;</literal>, la cual siempre "
+"realiza las conversaciones en el uso horario de Seam."
+
+#. Tag: title
+#: I18n.xml:122
+#, no-c-format
+msgid "Themes"
+msgstr "Temas"
+
+#. Tag: para
+#: I18n.xml:123
+#, no-c-format
+msgid ""
+"Seam applications are also very easily skinnable. The theme API is very "
+"similar to the localization API, but of course these two concerns are "
+"orthogonal, and some applications support both localization and themes."
+msgstr ""
+"Las aplicaciones Seam también son muy fáciles de personalizar. El API de "
+"tema es muy similar al API de localización pero estos dos conceptos se "
+"cruzan y algunas aplicaciones soportan tanto localización como temas."
+
+#. Tag: para
+#: I18n.xml:126
+#, no-c-format
+msgid "First, configure the set of supported themes:"
+msgstr "Primero, configure el grupo de temas soportados: "
+
+#. Tag: programlisting
+#: I18n.xml:129
+#, no-c-format
+msgid ""
+"&lt;theme:theme-selector cookie-enabled=\"true\"&gt;\n"
+"    &lt;theme:available-themes&gt;\n"
+"        &lt;value&gt;default&lt;/value&gt;\n"
+"        &lt;value&gt;accessible&lt;/value&gt;\n"
+"        &lt;value&gt;printable&lt;/value&gt;\n"
+"    &lt;/theme:available-themes&gt;\n"
+"&lt;/theme:theme-selector&gt;"
+msgstr ""
+"&lt;theme:theme-selector cookie-enabled=\"true\"&gt;\n"
+"    &lt;theme:available-themes&gt;\n"
+"        &lt;value&gt;default&lt;/value&gt;\n"
+"        &lt;value&gt;accessible&lt;/value&gt;\n"
+"        &lt;value&gt;printable&lt;/value&gt;\n"
+"    &lt;/theme:available-themes&gt;\n"
+"&lt;/theme:theme-selector&gt;"
+
+#. Tag: para
+#: I18n.xml:130
+#, no-c-format
+msgid "Note that the first theme listed is the default theme."
+msgstr "Observe que el primer tema listado es el predeterminado."
+
+#. Tag: para
+#: I18n.xml:133
+#, no-c-format
+msgid ""
+"Themes are defined in a properties file with the same name as the theme. For "
+"example, the <literal>default</literal> theme is defined as a set of entries "
+"in <literal>default.properties</literal>. For example, <literal>default."
+"properties</literal> might define:"
+msgstr ""
+"Los temas se definen en un archivo de propiedades con el mismo nombre que el "
+"tema. Por ejemplo, el tema <literal>default</literal> se define como un "
+"grupo de entradas en <literal>default.properties</literal>. Por ejemplo, "
+"<literal>default.properties</literal> define:"
+
+#. Tag: programlisting
+#: I18n.xml:136
+#, no-c-format
+msgid ""
+"css ../screen.css\n"
+"template template.xhtml"
+msgstr ""
+"css ../screen.css\n"
+"template template.xhtml"
+
+#. Tag: para
+#: I18n.xml:137
+#, no-c-format
+msgid ""
+"Usually the entries in a theme resource bundle will be paths to CSS styles "
+"or images and names of facelets templates (unlike localization resource "
+"bundles which are usually text)."
+msgstr ""
+"Usualmente las entradas en una combinación de recursos de temas serán la "
+"ruta a los estilos CSS o las imágenes y nombres de las plantillas facelets "
+"(de manera opuesta que la combinación de recursos de localización, los "
+"cuales usualmente son texto). "
+
+#. Tag: para
+#: I18n.xml:140
+#, no-c-format
+msgid ""
+"Now we can use these entries in our JSP or facelets pages. For example, to "
+"theme the stylesheet in a facelets page:"
+msgstr ""
+"Ahora podemos utilizar estas entradas en nuestras páginas facelets o JSP. "
+"Por ejemplo, para dar una temática a la hoja de estilo en una página "
+"facelets:"
+
+#. Tag: programlisting
+#: I18n.xml:143
+#, no-c-format
+msgid "&lt;link href=\"#{theme.css}\" rel=\"stylesheet\" type=\"text/css\" /&gt;"
+msgstr "&lt;link href=\"#{theme.css}\" rel=\"stylesheet\" type=\"text/css\" /&gt;"
+
+#. Tag: para
+#: I18n.xml:144
+#, no-c-format
+msgid ""
+"Most powerfully, facelets lets us theme the template used by a <literal>&lt;"
+"ui:composition&gt;</literal>:"
+msgstr ""
+"De manera más potente, los facelets nos permiten darle un tema a la "
+"plantilla que <literal>&lt;ui:composition&gt;</literal> utiliza:"
+
+#. Tag: programlisting
+#: I18n.xml:147
+#, no-c-format
+msgid ""
+"&lt;ui:composition xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"    xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"    xmlns:h=\"http://java.sun.com/jsf/html\"\n"
+"    xmlns:f=\"http://java.sun.com/jsf/core\"\n"
+"    template=\"#{theme.template}\"&gt;"
+msgstr ""
+"&lt;ui:composition xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"    xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"    xmlns:h=\"http://java.sun.com/jsf/html\"\n"
+"    xmlns:f=\"http://java.sun.com/jsf/core\"\n"
+"    template=\"#{theme.template}\"&gt;"
+
+#. Tag: para
+#: I18n.xml:148
+#, no-c-format
+msgid ""
+"Just like the locale selector, there is a built-in theme selector to allow "
+"the user to freely switch themes:"
+msgstr ""
+"Así como el seleccionador local hay un seleccionador de tema incorporado "
+"para permitirle al usuario que cambie entre temas de manera libre:"
+
+#. Tag: programlisting
+#: I18n.xml:151
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{themeSelector.theme}\"&gt;\n"
+"    &lt;f:selectItems value=\"#{themeSelector.themes}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{themeSelector.select}\" value=\"Select Theme"
+"\"/&gt;"
+msgstr ""
+"&lt;h:selectOneMenu value=\"#{themeSelector.theme}\"&gt;\n"
+"    &lt;f:selectItems value=\"#{themeSelector.themes}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{themeSelector.select}\" value=\"Select Theme"
+"\"/&gt;"
+
+#. Tag: title
+#: I18n.xml:155
+#, no-c-format
+msgid "Persisting locale and theme preferences via cookies"
+msgstr "Persistencia de las preferencias de tema y de escenario por medio de cookies"
+
+#. Tag: para
+#: I18n.xml:156
+#, no-c-format
+msgid ""
+"The locale selector, theme selector and timezone selector all support "
+"persistence of locale and theme preference to a cookie. Simply set the "
+"<literal>cookie-enabled</literal> configuration property:"
+msgstr ""
+"El seleccionador de escenario, de tema y de uso horario soportan la "
+"persistencia de estas preferencias en cookies. Simplemente configure la "
+"propiedad <literal>cookie-enabled</literal>:"
+
+#. Tag: programlisting
+#: I18n.xml:159
+#, no-c-format
+msgid ""
+"&lt;theme:theme-selector cookie-enabled=\"true\"&gt;\n"
+"    &lt;theme:available-themes&gt;\n"
+"        &lt;value&gt;default&lt;/value&gt;\n"
+"        &lt;value&gt;accessible&lt;/value&gt;\n"
+"        &lt;value&gt;printable&lt;/value&gt;\n"
+"    &lt;/theme:available-themes&gt;\n"
+"&lt;/theme:theme-selector&gt;\n"
+"\n"
+"&lt;core:locale-selector cookie-enabled=\"true\"/&gt;"
+msgstr ""
+"&lt;theme:theme-selector cookie-enabled=\"true\"&gt;\n"
+"    &lt;theme:available-themes&gt;\n"
+"        &lt;value&gt;default&lt;/value&gt;\n"
+"        &lt;value&gt;accessible&lt;/value&gt;\n"
+"        &lt;value&gt;printable&lt;/value&gt;\n"
+"    &lt;/theme:available-themes&gt;\n"
+"&lt;/theme:theme-selector&gt;\n"
+"\n"
+"&lt;core:locale-selector cookie-enabled=\"true\"/&gt;"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Itext.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Itext.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Itext.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1774 @@
+# translation of Itext.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Manuel Ospina <mospina at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Itext\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 01:04+0000\n"
+"PO-Revision-Date: 2007-10-29 14:16+1000\n"
+"Last-Translator: Angela Garcia\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Itext.xml:6
+#, no-c-format
+msgid "iText PDF generation"
+msgstr "Generación de PDF por iText"
+
+#. Tag: para
+#: Itext.xml:7
+#, no-c-format
+msgid ""
+"Seam now includes an component set for generating documents using iText. The "
+"primary focus of Seam&#39;s iText document support is for the generation of "
+"PDF doucuments, but Seam also offers basic support for RTF document "
+"generation."
+msgstr ""
+"Seam ahora incluye un conjunto de componentes para la generación de "
+"documentos utilizando iText. El enfoque principal del soporte de documentos "
+"con iText de Seam se encuentra en la generación de documentos en formato "
+"PDF. Sin embargo, Seam también soporta la generación de documentos en "
+"formato RTF. "
+
+#. Tag: title
+#: Itext.xml:11
+#, no-c-format
+msgid "Using PDF Support"
+msgstr "Uso del soporte para PDF"
+
+#. Tag: para
+#: Itext.xml:12
+#, no-c-format
+msgid ""
+"iText support is provided by <literal>jboss-seam-pdf.jar</literal>. This JAR "
+"contains the iText JSF controls, which are used to construct views that can "
+"render to PDF, and the DocumentStore component, which serves the rendered "
+"documents to the user. To include PDF support in your application, included "
+"<literal>jboss-seam-pdf.jar</literal> in your <literal>WEB-INF/lib</literal> "
+"directory along with the iText JAR file. There is no further configuration "
+"needed to use Seam&#39;s iText support."
+msgstr ""
+"El soporte de iText se proporciona a través de <literal>jboss-seam-pdf.jar</"
+"literal>. Este JAR contiene los controles JSF de iText, los cuales se "
+"utilizan para construir vistas que se pueden convertir en PDF, y el "
+"componente DocumentStore, el cual entrega el documento convertido al "
+"usuario. Para incluir soporte PDF en su aplicación, incluya <literal>jboss-"
+"seam-pdf.jar</literal> en su directorio <literal>WEB-INF/lib</literal> junto "
+"a los archivos iText JAR. No se necesita más configuraciones para utilizar "
+"el soporte iText de Seam. "
+
+#. Tag: para
+#: Itext.xml:15
+#, no-c-format
+msgid ""
+"The Seam iText module requires the use of Facelets as the view technology. "
+"Future versions of the library may also support the use of JSP. "
+"Additionally, it requires the use of the seam-ui package."
+msgstr ""
+"El módulo iText de Seam requiere el uso de Facelets como tecnología de "
+"vista. Versiones futuras de la biblioteca podrían soportar el uso de JSP. "
+"Además requiere el uso del paquete seam-ui."
+
+#. Tag: para
+#: Itext.xml:18
+#, no-c-format
+msgid ""
+"The <literal>examples/itext</literal> project contains an example of the PDF "
+"support in action. It demonstrates proper deployment packaging, and it "
+"contains a number examples that demonstrate the key PDF generation features "
+"current supported."
+msgstr ""
+"El proyecto <literal>examples/itext</literal> contiene un ejemplo del "
+"soporte de PDF en acción. Demuestra cómo construir un paquete para que sea "
+"implementado y contiene un número de ejemplos que demuestran las principales "
+"funcionalidades de generación de PDF actualmente soportadas."
+
+#. Tag: title
+#: Itext.xml:24
+#, no-c-format
+msgid "Creating a document"
+msgstr "Creación de un documento"
+
+#. Tag: para
+#: Itext.xml:25
+#, no-c-format
+msgid ""
+"Documents are generated by facelets documents using tags in the "
+"<literal>http://jboss.com/products/seam/pdf</literal> namespace. Documents "
+"should always have the <literal>document</literal> tag at the root of the "
+"document. The <literal>document</literal> tag prepares Seam to generate a "
+"document into the DocumentStore and renders an HTML redirect to that stored "
+"content. The following is a a small PDF document consisting only a single "
+"line of text:"
+msgstr ""
+"Los documentos se generan a través de documentos facelets utilizando "
+"etiquetas en el espacio de nombres <literal>http://jboss.com/products/seam/"
+"pdf</literal>. Los documentos siempre deben tener la etiqueta "
+"<literal>document</literal> como etiqueta raíz del documento. La etiqueta "
+"<literal>document</literal> prepara a Seam para generar un documento en "
+"DocumentStore y entregarlo en una redirección HTML al contenido almacenado. "
+"El siguiente es un pequeño documento en PDF que contiene una sola línea de "
+"texto:"
+
+#. Tag: programlisting
+#: Itext.xml:28
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf"
+"\"&gt;                                                      \n"
+"   The document goes "
+"here.                                                                                             \n"
+"&lt;/p:document&gt;"
+msgstr ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf"
+"\"&gt;                                                      \n"
+"   The document goes "
+"here.                                                                                             \n"
+"&lt;/p:document&gt;"
+
+#. Tag: title
+#: Itext.xml:30
+#, no-c-format
+msgid "p:document"
+msgstr "p:document"
+
+#. Tag: para
+#: Itext.xml:31
+#, no-c-format
+msgid "The <literal>p:document</literal> tag supports the following attributes:"
+msgstr "La etiqueta <literal>p:document</literal> soporta los siguientes atributos:"
+
+#. Tag: literal
+#: Itext.xml:36
+#, no-c-format
+msgid "type"
+msgstr "type"
+
+#. Tag: para
+#: Itext.xml:38
+#, no-c-format
+msgid ""
+"The type of the document to be produced. Valid values are <literal>PDF</"
+"literal>, <literal>RTF</literal> and <literal>HTML</literal> modes. Seam "
+"defaults to PDF generation, and many of the features only work correctly "
+"when generating PDF documents."
+msgstr ""
+"El tipo de documento a producir. Los valores válidos son: <literal>PDF</"
+"literal>, <literal>RTF</literal> y <literal>HTML</literal>. El valor "
+"predeterminado en Seam es la generación de PDF y muchas de las "
+"funcionalidades operan de forma correcta únicamente con los documentos PDF."
+
+#. Tag: literal
+#: Itext.xml:44
+#, no-c-format
+msgid "pageSize"
+msgstr "pageSize"
+
+#. Tag: para
+#: Itext.xml:46
+#, no-c-format
+msgid ""
+"The size of the page to be generate. The most commonly used values would be "
+"<literal>LETTER</literal> and <literal>A4</literal>. A full list of "
+"supported pages sizes can be found in <literal>com.lowagie.text.PageSize</"
+"literal> class. Alternatively, pageSize can provide the width and height of "
+"the page directly. The value \"612 792\", for example, is equizalent to the "
+"LETTER page size."
+msgstr ""
+"El tamaño de la página a generar. Los valores más usados son "
+"<literal>LETTER</literal> y <literal>A4</literal>. La lista completa de los "
+"tamaños de página soportados puede encontrarse en la clase <literal>com."
+"lowagie.text.PageSize</literal>. Alternativamente, pageSize puede "
+"proporcionar el ancho y el largo de la página de forma directa. El valor "
+"\"612 792\", por ejemplo, es equivalente al tamaño de página LETTER."
+
+#. Tag: literal
+#: Itext.xml:52
+#, no-c-format
+msgid "orientation"
+msgstr "orientation"
+
+#. Tag: para
+#: Itext.xml:54
+#, no-c-format
+msgid ""
+"The orientation of the page. Valid values are <literal>portrait</literal> "
+"and <literal>landscape</literal>. In landscape mode, the height and width "
+"page size values are reversed."
+msgstr ""
+"La orientación de la página. Los valores válidos son <literal>portrait</"
+"literal> y <literal>landscape</literal>. En el modo landscape, los valores "
+"de los tamaños de ancho y largo se invierten."
+
+#. Tag: literal
+#: Itext.xml:60
+#, no-c-format
+msgid "margins"
+msgstr "margins"
+
+#. Tag: para
+#: Itext.xml:62
+#, no-c-format
+msgid "The left, right, top and bottom margin values."
+msgstr ""
+"Los valores de las márgenes de la izquierda, la derecha, la parte superior y "
+"la inferior."
+
+#. Tag: literal
+#: Itext.xml:68
+#, no-c-format
+msgid "marginMirroring"
+msgstr "marginMirroring"
+
+#. Tag: para
+#: Itext.xml:70
+#, no-c-format
+msgid "Indicates that margin settings should be reversed an alternating pages."
+msgstr "Indica que las márgenes deben ser invertidas en las páginas impares."
+
+#. Tag: para
+#: Itext.xml:76
+#, no-c-format
+msgid ""
+"Document metadata is also set as attributes of the document tag. The "
+"following metadata fields are supported:"
+msgstr ""
+"Los metadatos del documento también se establecen como atributos de la "
+"etiqueta del documento. Se soportan los siguientes campos de metadatos:"
+
+#. Tag: literal
+#: Itext.xml:81
+#, no-c-format
+msgid "title"
+msgstr "title"
+
+#. Tag: para
+#: Itext.xml:83 Itext.xml:90 Itext.xml:97 Itext.xml:104 Itext.xml:111
+#: Itext.xml:135 Itext.xml:142 Itext.xml:149 Itext.xml:156 Itext.xml:179
+#: Itext.xml:186 Itext.xml:193 Itext.xml:328 Itext.xml:335 Itext.xml:358
+#: Itext.xml:365 Itext.xml:372 Itext.xml:387 Itext.xml:394 Itext.xml:686
+#: Itext.xml:693 Itext.xml:700 Itext.xml:707 Itext.xml:730 Itext.xml:737
+#: Itext.xml:744 Itext.xml:751 Itext.xml:799 Itext.xml:806 Itext.xml:813
+#: Itext.xml:820 Itext.xml:827 Itext.xml:834 Itext.xml:841 Itext.xml:848
+#: Itext.xml:855 Itext.xml:862 Itext.xml:869 Itext.xml:876 Itext.xml:883
+#: Itext.xml:890 Itext.xml:897 Itext.xml:904 Itext.xml:911
+#, no-c-format
+msgid "&#x200B;"
+msgstr "&#x200B;"
+
+#. Tag: literal
+#: Itext.xml:88
+#, no-c-format
+msgid "subject"
+msgstr "subject"
+
+#. Tag: literal
+#: Itext.xml:95
+#, no-c-format
+msgid "keywords"
+msgstr "keywords"
+
+#. Tag: literal
+#: Itext.xml:102
+#, no-c-format
+msgid "author"
+msgstr "author"
+
+#. Tag: literal
+#: Itext.xml:109
+#, no-c-format
+msgid "creator"
+msgstr "creator"
+
+#. Tag: title
+#: Itext.xml:121
+#, no-c-format
+msgid "Basic Text Elements"
+msgstr "Elementos de texto básicos"
+
+#. Tag: para
+#: Itext.xml:122
+#, no-c-format
+msgid ""
+"Useful documents will need to contain more than just text; however, the "
+"standard UI components are geared towards HTML generation and are not useful "
+"for generating PDF content. Instead, Seam provides a special UI components "
+"for generating suitable PDF content. Tags like <literal>&lt;p:image&gt;</"
+"literal> and <literal>&lt;p:paragraph&gt;</literal> are the basic "
+"foundations of simple documents. Tags like <literal>&lt;p:font&gt;</literal> "
+"provide style information to all the content surrounging them."
+msgstr ""
+"Para que un documento llegue a ser realmente útil debe contener algo más que "
+"solo textos; sin embargo, los componentes estándares de la interfaz del "
+"usuario están dirigidos a la generación de HTML y no son útiles para generar "
+"contenido en PDF. Seam proporciona componentes de interfaz de usuario "
+"especiales para la generación de contenido PDF. Etiquetas como <literal>&lt;"
+"p:image&gt;</literal> y <literal>&lt;p:paragraph&gt;</literal> son las "
+"etiquetas básicas para la creación de documentos sencillos. Etiquetas como "
+"<literal>&lt;p:font&gt;</literal> proporcionan información de estilo para "
+"todo el contenido que las rodea."
+
+#. Tag: programlisting
+#: Itext.xml:125
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"&gt; \n"
+"    &lt;p:image alignment=\"right\" wrap=\"true\" resource=\"/logo.jpg\" /"
+"&gt;\n"
+"    &lt;p:font size=\"24\"&gt;\n"
+"        &lt;p:paragraph spacingAfter=\"50\"&gt;My First Document&lt;/p:"
+"paragraph&gt;\n"
+"    &lt;/p:font&gt;\n"
+"\n"
+"    &lt;p:paragraph alignment=\"justify\"&gt;\n"
+"        This is a simple document.  It isn&#39;t very fancy.\n"
+"    &lt;/p:paragraph&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"&gt; \n"
+"    &lt;p:image alignment=\"right\" wrap=\"true\" resource=\"/logo.jpg\" /"
+"&gt;\n"
+"    &lt;p:font size=\"24\"&gt;\n"
+"        &lt;p:paragraph spacingAfter=\"50\"&gt;My First Document&lt;/p:"
+"paragraph&gt;\n"
+"    &lt;/p:font&gt;\n"
+"\n"
+"    &lt;p:paragraph alignment=\"justify\"&gt;\n"
+"        This is a simple document.  It isn&#39;t very fancy.\n"
+"    &lt;/p:paragraph&gt;\n"
+"&lt;/p:document&gt;"
+
+#. Tag: title
+#: Itext.xml:127
+#, no-c-format
+msgid "p:paragraph"
+msgstr "p:paragraph"
+
+#. Tag: para
+#: Itext.xml:128
+#, no-c-format
+msgid ""
+"Most uses of text should be sectioned into paragraphs so that text fragments "
+"can be flowed, formatted and styled in logical groups."
+msgstr ""
+"La mayoría de los textos deben ser divididos en párrafos para que la "
+"fragmentación del texto fluya y tenga un formato y un estilo que dependa de "
+"la lógica del grupo."
+
+#. Tag: literal
+#: Itext.xml:133
+#, no-c-format
+msgid "firstLineIndent"
+msgstr "firstLineIndent"
+
+#. Tag: literal
+#: Itext.xml:140 Itext.xml:832
+#, no-c-format
+msgid "extraParagraphSpace"
+msgstr "extraParagraphSpace"
+
+#. Tag: literal
+#: Itext.xml:147 Itext.xml:804
+#, no-c-format
+msgid "leading"
+msgstr "leading"
+
+#. Tag: literal
+#: Itext.xml:154 Itext.xml:811
+#, no-c-format
+msgid "multipliedLeading"
+msgstr "multipliedLeading"
+
+#. Tag: literal
+#: Itext.xml:161 Itext.xml:340 Itext.xml:712
+#, no-c-format
+msgid "spacingBefore"
+msgstr "spacingBefore"
+
+#. Tag: para
+#: Itext.xml:163 Itext.xml:342 Itext.xml:714
+#, no-c-format
+msgid "The blank space to be inserted before the element."
+msgstr "El espacio en blanco que se debe insertar antes del elemento."
+
+#. Tag: literal
+#: Itext.xml:169 Itext.xml:348 Itext.xml:720
+#, no-c-format
+msgid "spacingAfter"
+msgstr "spacingAfter"
+
+#. Tag: para
+#: Itext.xml:171 Itext.xml:350 Itext.xml:722
+#, no-c-format
+msgid "The blank space to be inserted after the element."
+msgstr "El espacio en blanco que se insertará después del elemento."
+
+#. Tag: literal
+#: Itext.xml:177 Itext.xml:326 Itext.xml:595
+#, no-c-format
+msgid "indentationLeft"
+msgstr "indentationLeft"
+
+#. Tag: literal
+#: Itext.xml:184 Itext.xml:333 Itext.xml:603
+#, no-c-format
+msgid "indentationRight"
+msgstr "indentationRight"
+
+#. Tag: literal
+#: Itext.xml:191 Itext.xml:749
+#, no-c-format
+msgid "keepTogether"
+msgstr "keepTogether"
+
+#. Tag: title
+#: Itext.xml:201
+#, no-c-format
+msgid "p:text"
+msgstr "p:text"
+
+#. Tag: para
+#: Itext.xml:202
+#, no-c-format
+msgid ""
+"The <literal>text</literal> tag allows text fragments to be produced from "
+"application data using normal JSF converter mechanisms. It is very similar "
+"to the <literal>outputText</literal> tag used when rendering HTML documents. "
+"Here is an example:"
+msgstr ""
+"La etiqueta <literal>text</literal> permite que los fragmentos de texto se "
+"produzcan desde los datos de la aplicación utilizando mecanismos normales de "
+"conversión de JSF. Es similar a la etiqueta <literal>outputText</literal> "
+"usada cuando se produce un elemento en HTML. Por ejemplo:"
+
+#. Tag: programlisting
+#: Itext.xml:205
+#, no-c-format
+msgid ""
+"&lt;p:paragraph&gt;\n"
+"    The item costs &lt;p:text value=\"#{product.price}\"&gt;\n"
+"        &lt;f:convertNumber type=\"currency\" currencySymbol=\"$\"/&gt;\n"
+"    &lt;/p:text&gt;\n"
+"&lt;/p:paragraph&gt;"
+msgstr ""
+"&lt;p:paragraph&gt;\n"
+"    The item costs &lt;p:text value=\"#{product.price}\"&gt;\n"
+"        &lt;f:convertNumber type=\"currency\" currencySymbol=\"$\"/&gt;\n"
+"    &lt;/p:text&gt;\n"
+"&lt;/p:paragraph&gt;"
+
+#. Tag: literal
+#: Itext.xml:208
+#, no-c-format
+msgid "value"
+msgstr "value"
+
+#. Tag: para
+#: Itext.xml:210
+#, no-c-format
+msgid "The value to be displayed. This will typically be a value binding expression."
+msgstr "El valor a mostrar. Generalmente una expresión de vinculación de valor."
+
+#. Tag: title
+#: Itext.xml:219
+#, no-c-format
+msgid "p:font"
+msgstr "p:font"
+
+#. Tag: para
+#: Itext.xml:220
+#, no-c-format
+msgid "Font declarations have no direct"
+msgstr "Las declaraciones relacionadas con el tipo de letra no tienen directo "
+
+#. Tag: literal
+#: Itext.xml:225
+#, no-c-format
+msgid "familyName"
+msgstr "familyName"
+
+#. Tag: para
+#: Itext.xml:227
+#, no-c-format
+msgid ""
+"The font family. One of: <literal>COURIER</literal>, <literal>HELVETICA</"
+"literal>, <literal>TIMES-ROMAN</literal>, <literal>SYMBOL</literal> or "
+"<literal>ZAPFDINGBATS</literal>."
+msgstr ""
+"La familia de la fuente. Puede ser <literal>COURIER</literal>, "
+"<literal>HELVETICA</literal>, <literal>TIMES-ROMAN</literal>, "
+"<literal>SYMBOL</literal> o <literal>ZAPFDINGBATS</literal>."
+
+#. Tag: literal
+#: Itext.xml:233
+#, no-c-format
+msgid "size"
+msgstr "size"
+
+#. Tag: para
+#: Itext.xml:235
+#, no-c-format
+msgid "The point size of the font."
+msgstr "El tamaño de la fuente en puntos."
+
+#. Tag: literal
+#: Itext.xml:241 Itext.xml:530
+#, no-c-format
+msgid "style"
+msgstr "style"
+
+#. Tag: para
+#: Itext.xml:243
+#, no-c-format
+msgid ""
+"The font styles. Any combination of : <literal>NORMAL</literal>, "
+"<literal>BOLD</literal>, <literal>ITALIC</literal>, <literal>OBLIQUE</"
+"literal>, <literal>UNDERLINE</literal>, <literal>LINE-THROUGH</literal>"
+msgstr ""
+"El estilo de la fuente. Una combinación de: <literal>NORMAL</literal>, "
+"<literal>BOLD</literal>, <literal>ITALIC</literal>, <literal>OBLIQUE</"
+"literal>, <literal>UNDERLINE</literal>, <literal>LINE-THROUGH</literal>"
+
+#. Tag: title
+#: Itext.xml:252
+#, no-c-format
+msgid "p:newPage"
+msgstr "p:newPage"
+
+#. Tag: para
+#: Itext.xml:253
+#, no-c-format
+msgid "<literal>p:newPage</literal> inserts a page break."
+msgstr "<literal>p:newPage</literal> inserta un salto de página."
+
+#. Tag: title
+#: Itext.xml:259
+#, no-c-format
+msgid "p:image"
+msgstr "p:image"
+
+#. Tag: para
+#: Itext.xml:260
+#, no-c-format
+msgid ""
+"<literal>p:image</literal> inserts an image into the document. Images can be "
+"be loaded from the classpath or from the web application context using the "
+"<literal>resource</literal> attribute."
+msgstr ""
+"<literal>p:image</literal> inserta una imagen en el documento. Las imágenes "
+"se pueden cargar desde la ruta de la clase o desde el contexto de la "
+"aplicación web utilizando el atributo <literal>resource</literal>."
+
+#. Tag: programlisting
+#: Itext.xml:263
+#, no-c-format
+msgid "&lt;p:image resource=\"/jboss.jpg\" /&gt;"
+msgstr "&lt;p:image resource=\"/jboss.jpg\" /&gt;"
+
+#. Tag: para
+#: Itext.xml:264
+#, no-c-format
+msgid ""
+"Resources can also be dynamically generated by application code. The "
+"<literal>imageData</literal> attribute can specify a value binding "
+"expression whose value is a <literal>java.awt.Image</literal> object."
+msgstr ""
+"Los recursos pueden ser también generados dinámicamente con código de "
+"aplicación. El atributo <literal>imageData</literal> puede especificar una "
+"expresión de vinculación de valores, cuyo valor es un objeto <literal>java.awt."
+"Image</literal>."
+
+#. Tag: programlisting
+#: Itext.xml:267
+#, no-c-format
+msgid "&lt;p:image imageData=\"#{images.chart}\" /&gt;"
+msgstr "&lt;p:image imageData=\"#{images.chart}\" /&gt;"
+
+#. Tag: literal
+#: Itext.xml:270
+#, no-c-format
+msgid "resource"
+msgstr "resource"
+
+#. Tag: para
+#: Itext.xml:272
+#, no-c-format
+msgid ""
+"The location of the image resource to be included. Resources should be "
+"relative to the document root of the web application."
+msgstr ""
+"La ubicación del recurso de imagen a incluir. Los recursos deben ser "
+"relativos a la raíz del documento de la aplicación web."
+
+#. Tag: literal
+#: Itext.xml:278
+#, no-c-format
+msgid "imageData"
+msgstr "imageData"
+
+#. Tag: para
+#: Itext.xml:280
+#, no-c-format
+msgid "A method expression binding to an application-generated image."
+msgstr ""
+"Una vinculación de expresión de método a una imagen generada por la "
+"aplicación."
+
+#. Tag: literal
+#: Itext.xml:286 Itext.xml:909
+#, no-c-format
+msgid "rotation"
+msgstr "rotation"
+
+#. Tag: para
+#: Itext.xml:288
+#, no-c-format
+msgid "The rotation of the image in degrees."
+msgstr "La rotación en grados de la imagen."
+
+#. Tag: literal
+#: Itext.xml:294
+#, no-c-format
+msgid "height"
+msgstr "height"
+
+#. Tag: para
+#: Itext.xml:296
+#, no-c-format
+msgid "The height of the image."
+msgstr "La altura de la imagen."
+
+#. Tag: literal
+#: Itext.xml:302
+#, no-c-format
+msgid "width"
+msgstr "width"
+
+#. Tag: para
+#: Itext.xml:304
+#, no-c-format
+msgid "The width of the image."
+msgstr "El ancho de la imagen."
+
+#. Tag: literal
+#: Itext.xml:310 Itext.xml:437 Itext.xml:587
+#, no-c-format
+msgid "alignment"
+msgstr "alignment"
+
+#. Tag: para
+#: Itext.xml:312
+#, no-c-format
+msgid ""
+"The alignment of the image. (see <xref linkend=\"Seam_Reference_Guide-"
+"Document_Constants-Alignment_Values\"/> for possible values)"
+msgstr ""
+"La alineación de la imagen (consulte la <xref linkend=\"Seam_Reference_Guide-"
+"Document_Constants-Alignment_Values\"/> para obtener los valores posibles)."
+
+#. Tag: literal
+#: Itext.xml:318
+#, no-c-format
+msgid "<literal>alt</literal>"
+msgstr "<literal>alt</literal>"
+
+#. Tag: para
+#: Itext.xml:320
+#, no-c-format
+msgid "Alternative text representation for the image."
+msgstr "Representación alternativa en texto para la imagen."
+
+#. Tag: literal
+#: Itext.xml:356 Itext.xml:668
+#, no-c-format
+msgid "widthPercentage"
+msgstr "widthPercentage"
+
+#. Tag: literal
+#: Itext.xml:363
+#, no-c-format
+msgid "initialRotation"
+msgstr "initialRotation"
+
+#. Tag: literal
+#: Itext.xml:370
+#, no-c-format
+msgid "<literal>dpi</literal>"
+msgstr "<literal>dpi</literal>"
+
+#. Tag: literal
+#: Itext.xml:377
+#, no-c-format
+msgid "scalePercent"
+msgstr "scalePercent"
+
+#. Tag: para
+#: Itext.xml:379
+#, no-c-format
+msgid ""
+"The scaling factor (as a percentage) to use for the image. This can be "
+"expressed as a single percentage value or as two percentage values "
+"representing separate x and y scaling percentages."
+msgstr ""
+"El factor de escalado (como porcentaje) para utilizar con la imagen. Esto se "
+"puede expresar como un valor de porcentaje sencillo o como dos valores de "
+"porcentaje que representan los valores de x y y."
+
+#. Tag: literal
+#: Itext.xml:385
+#, no-c-format
+msgid "wrap"
+msgstr "wrap"
+
+#. Tag: literal
+#: Itext.xml:392
+#, no-c-format
+msgid "underlying"
+msgstr "underlying"
+
+#. Tag: title
+#: Itext.xml:402
+#, no-c-format
+msgid "p:anchor"
+msgstr "p:anchor"
+
+#. Tag: para
+#: Itext.xml:403
+#, no-c-format
+msgid ""
+"<literal>p:anchor</literal> defines clickable links from a document. It "
+"supports the following attributes:"
+msgstr ""
+"<literal>p:anchor</literal> define enlaces desde el documento. Soporta los "
+"siguientes atributos:"
+
+#. Tag: literal
+#: Itext.xml:408
+#, no-c-format
+msgid "name"
+msgstr "name"
+
+#. Tag: para
+#: Itext.xml:410
+#, no-c-format
+msgid "The name of an in-document anchor destination."
+msgstr "El nombre de un destino anchor de documento."
+
+#. Tag: literal
+#: Itext.xml:416
+#, no-c-format
+msgid "reference"
+msgstr "reference"
+
+#. Tag: para
+#: Itext.xml:418
+#, no-c-format
+msgid ""
+"The destination the link refers to. Links to other points in the document "
+"should begin with a \"#\". For example, \"#link1\" to refer to an anchor "
+"postion with a <literal>name</literal> of <literal>link1</literal>. Links "
+"may also be a full URL to point to a resource outside of the document."
+msgstr ""
+"El destino del enlace. Los enlaces a otras partes del documento deben "
+"iniciar con \"#\". Por ejemplo, \"#enlace1\" para referirse a una posición "
+"con un <literal>name</literal> con valor <literal>link1</literal>. Los "
+"enlaces pueden ser también URL completas que apuntan a un recurso por fuera "
+"del documento."
+
+#. Tag: title
+#: Itext.xml:429
+#, no-c-format
+msgid "Headers and Footers"
+msgstr "Encabezado y pie de página"
+
+#. Tag: title
+#: Itext.xml:431
+#, no-c-format
+msgid "p:header and p:footer"
+msgstr "p:header y p:footer"
+
+#. Tag: para
+#: Itext.xml:432
+#, no-c-format
+msgid ""
+"The <literal>p:header</literal> and <literal>p:footer</literal> components "
+"provide the ability to place header and footer text on each page of a "
+"generated document, with the exception of the first page. Header and footer "
+"declarations should appear near the top of a document."
+msgstr ""
+"Los componentes <literal>p:header</literal> y <literal>p:footer</literal> "
+"ofrecen la posibilidad de ubicar encabezados y pies de página en cada página "
+"del documento a generar exceptuando la primera página. Las declaraciones de "
+"encabezamientos y pies de página aparecen cerca de la parte superior del "
+"documento."
+
+#. Tag: para
+#: Itext.xml:439
+#, no-c-format
+msgid ""
+"The alignment of the header/footer box section. (see <xref linkend="
+"\"Seam_Reference_Guide-Document_Constants-Alignment_Values\"/> for alignment "
+"values)"
+msgstr ""
+"El alineamiento de la sección de encabezamiento y pie de página (los valores "
+"de alineamiento se encuentran en la <xref linkend=\"Seam_Reference_Guide-"
+"Document_Constants-Alignment_Values\"/>)"
+
+#. Tag: literal
+#: Itext.xml:445
+#, no-c-format
+msgid "backgroundColor"
+msgstr "backgroundColor"
+
+#. Tag: para
+#: Itext.xml:447
+#, no-c-format
+msgid ""
+"The background color of the header/footer box. (see <xref linkend="
+"\"Seam_Reference_Guide-Document_Constants-Color_Values\"/> for color values)"
+msgstr ""
+"El color de fondo de la casilla de encabezamiento y pie de página (los "
+"valores pueden encontrarse en <xref linkend=\"Seam_Reference_Guide-"
+"Document_Constants-Color_Values\"/>)."
+
+#. Tag: literal
+#: Itext.xml:453
+#, no-c-format
+msgid "borderColor"
+msgstr "borderColor"
+
+#. Tag: para
+#: Itext.xml:455
+#, no-c-format
+msgid ""
+"The border color of the header/footer box. Individual border sides can be "
+"set using <literal>borderColorLeft</literal>, <literal>borderColorRight</"
+"literal>, <literal>borderColorTop</literal> and <literal>borderColorBottom</"
+"literal>.(see <xref linkend=\"Seam_Reference_Guide-Document_Constants-"
+"Color_Values\"/> for color values)"
+msgstr ""
+"El color del borde de la casilla del encabezamiento y pie de página. El "
+"tamaño de los bordes individuales puede establecerse con "
+"<literal>borderColorLeft</literal>, <literal>borderColorRight</literal>, "
+"<literal>borderColorTop</literal> y <literal>borderColorBottom</literal> "
+"(los valores del color pueden encontrarse en <xref linkend="
+"\"Seam_Reference_Guide-Document_Constants-Color_Values\"/>)"
+
+#. Tag: literal
+#: Itext.xml:461
+#, no-c-format
+msgid "borderWidth"
+msgstr "borderWidth"
+
+#. Tag: para
+#: Itext.xml:463
+#, no-c-format
+msgid ""
+"The width of the border. Inidvidual border sides can be specified using "
+"<literal>borderWidthLeft</literal>, <literal>borderWidthRight</literal>, "
+"<literal>borderWidthTop</literal> and <literal>borderWidthBottom</literal>."
+msgstr ""
+"El tamaño del borde. Los tamaños de los bordes individuales pueden ser "
+"especificados con <literal>borderWidthLeft</literal>, "
+"<literal>borderWidthRight</literal>, <literal>borderWidthTop</literal> y "
+"<literal>borderWidthBottom</literal>."
+
+#. Tag: title
+#: Itext.xml:472
+#, no-c-format
+msgid "p:pageNumber"
+msgstr "p:pageNumber"
+
+#. Tag: para
+#: Itext.xml:473
+#, no-c-format
+msgid ""
+"The current page number can be placed inside of a header or footer using the "
+"<literal>p:pageNumber</literal> tag. The page number tag can only be used in "
+"the context of a header or footer and can only be used once."
+msgstr ""
+"El número de página actual se puede ubicar entre un encabezado o pie de "
+"página con la etiqueta <literal>p:pageNumber</literal>. La etiqueta de "
+"número de página puede usarse solamente en los encabezados o pies de página "
+"y solo puede utilizarse una vez."
+
+#. Tag: title
+#: Itext.xml:481
+#, no-c-format
+msgid "Chapters and Sections"
+msgstr "Capítulos y secciones"
+
+#. Tag: para
+#: Itext.xml:482
+#, no-c-format
+msgid ""
+"If the generated document follows a book/article structure, the <literal>p:"
+"chapter</literal> and <literal>p:section</literal> tags can be used to "
+"provide the necessary structure. Sections can only be used inside of "
+"chapters, but they may be nested arbitrarily deep. Most PDF viewers provide "
+"easy navigation between chapters and sections in a document."
+msgstr ""
+"Si el documento generado sigue una estructura de un libro o articulo, las "
+"etiquetas <literal>p:chapter</literal> y <literal>p:section</literal> se "
+"pueden utilizar para generar la estructura necesaria. Las secciones sólo "
+"pueden ser utilizadas dentro de los capítulos, pero pueden ser anidadas de "
+"forma arbitraria. La mayoría de los visores PDF proporcionan facilidades de "
+"navegación a lo largo de capítulos y secciones de un documento."
+
+#. Tag: programlisting
+#: Itext.xml:485
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"\n"
+"            title=\"Hello\"&gt;\n"
+"\n"
+"   &lt;p:chapter number=\"1\"&gt;\n"
+"      &lt;p:title&gt;&lt;p:paragraph&gt;Hello&lt;/p:paragraph&gt;&lt;/p:"
+"title&gt;\n"
+"      &lt;p:paragraph&gt;Hello #{user.name}!&lt;/p:paragraph&gt;\n"
+"   &lt;/p:chapter&gt;\n"
+"\n"
+"   &lt;p:chapter number=\"2\"&gt;\n"
+"      &lt;p:title&gt;&lt;p:paragraph&gt;Goodbye&lt;/p:paragraph&gt;&lt;/p:"
+"title&gt;\n"
+"      &lt;p:paragraph&gt;Goodbye #{user.name}.&lt;/p:paragraph&gt;\n"
+"   &lt;/p:chapter&gt;\n"
+"\n"
+"&lt;/p:document&gt;"
+msgstr ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"\n"
+"            title=\"Hello\"&gt;\n"
+"\n"
+"   &lt;p:chapter number=\"1\"&gt;\n"
+"      &lt;p:title&gt;&lt;p:paragraph&gt;Hello&lt;/p:paragraph&gt;&lt;/p:"
+"title&gt;\n"
+"      &lt;p:paragraph&gt;Hello #{user.name}!&lt;/p:paragraph&gt;\n"
+"   &lt;/p:chapter&gt;\n"
+"\n"
+"   &lt;p:chapter number=\"2\"&gt;\n"
+"      &lt;p:title&gt;&lt;p:paragraph&gt;Goodbye&lt;/p:paragraph&gt;&lt;/p:"
+"title&gt;\n"
+"      &lt;p:paragraph&gt;Goodbye #{user.name}.&lt;/p:paragraph&gt;\n"
+"   &lt;/p:chapter&gt;\n"
+"\n"
+"&lt;/p:document&gt;"
+
+#. Tag: title
+#: Itext.xml:487
+#, no-c-format
+msgid "p:chapter and p:section"
+msgstr "p:chapter y p:section"
+
+#. Tag: literal
+#: Itext.xml:490
+#, no-c-format
+msgid "number"
+msgstr "number"
+
+#. Tag: para
+#: Itext.xml:492
+#, no-c-format
+msgid "The chapter number. Every chapter should be assigned a chapter number."
+msgstr "El número del capítulo. Cada capítulo debe tener un número de capítulo."
+
+#. Tag: literal
+#: Itext.xml:498
+#, no-c-format
+msgid "numberDepth"
+msgstr "numberDepth"
+
+#. Tag: para
+#: Itext.xml:500
+#, no-c-format
+msgid ""
+"The depth of numbering for section. All sections are numbered relative to "
+"their surrounding chapter/sections. The fourth section of of the first "
+"section of chapter three would be section 3.1.4, if displayed at the default "
+"number depth of three. To omit the chapter number, a number depth of 2 "
+"should be used. In that case, the section number would be displayed as 1.4."
+msgstr ""
+"La profundidad de la enumeración de la sección. Todas las secciones se numeran "
+"de acuerdo a los capítulos y secciones a su alrededor. La cuarta sección de "
+"la primera sección del tercer capítulo se mostraría como 3.1.4 de acuerdo a "
+"la profundidad de la enumeración predeterminada. Para omitir el número del "
+"capítulo se debe utilizar una profundidad de numeración de 2 (se mostrará "
+"1.4)."
+
+#. Tag: title
+#: Itext.xml:509
+#, no-c-format
+msgid "p:title"
+msgstr "p:title"
+
+#. Tag: para
+#: Itext.xml:510
+#, no-c-format
+msgid ""
+"Any chapter or section can contain a <literal>p:title</literal>. The title "
+"will be displayed next to the chapter/section number. The body of the title "
+"may contain raw text or may be a <literal>p:paragraph</literal>."
+msgstr ""
+"Cualquier capítulo o sección puede tener un <literal>p:title</literal>. El "
+"título se mostrará a lado del número del capítulo o la sección. El cuerpo del "
+"título puede contener texto puro o puede contener una sección <literal>p:"
+"paragraph</literal>."
+
+#. Tag: title
+#: Itext.xml:518
+#, no-c-format
+msgid "Lists"
+msgstr "Listas"
+
+#. Tag: para
+#: Itext.xml:519
+#, no-c-format
+msgid ""
+"List structures can be displayed using the <literal>p:list</literal> and "
+"<literal>p:listItem</literal> tags. Lists may contain arbitrarily-nested "
+"sublists. List items may not be used outside of a list. he following "
+"document uses the <literal>ui:repeat</literal> tag to to display a list of "
+"values retrieved from a Seam component."
+msgstr ""
+"Las estructuras de listas se pueden mostrar con las etiquetas <literal>p:"
+"list</literal> y <literal>p:listItem</literal>. Las listas pueden contener "
+"sublistas anidadas de forma arbitraria. Los elementos de la lista no se "
+"deben utilizar por fuera de una lista. El siguiente documento usa la "
+"etiqueta <literal>ui:repeat</literal> para mostrar una lista de valores que "
+"se toman desde un componente de Seam."
+
+#. Tag: programlisting
+#: Itext.xml:522
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"\n"
+"            xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"            title=\"Hello\"&gt;\n"
+"   &lt;p:list style=\"numbered\"&gt;\n"
+"      &lt;ui:repeat value=\"#{documents}\" var=\"doc\"&gt;\n"
+"         &lt;p:listItem&gt;#{doc.name}&lt;/p:listItem&gt;\n"
+"      &lt;/ui:repeat&gt;\n"
+"   &lt;/p:list&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"\n"
+"            xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"            title=\"Hello\"&gt;\n"
+"   &lt;p:list style=\"numbered\"&gt;\n"
+"      &lt;ui:repeat value=\"#{documents}\" var=\"doc\"&gt;\n"
+"         &lt;p:listItem&gt;#{doc.name}&lt;/p:listItem&gt;\n"
+"      &lt;/ui:repeat&gt;\n"
+"   &lt;/p:list&gt;\n"
+"&lt;/p:document&gt;"
+
+#. Tag: title
+#: Itext.xml:524
+#, no-c-format
+msgid "p:list"
+msgstr "p:list"
+
+#. Tag: para
+#: Itext.xml:525
+#, no-c-format
+msgid "<literal>p:list</literal> supports the following attributes:"
+msgstr "<literal>p:list</literal> soporta los siguientes atributos:"
+
+#. Tag: para
+#: Itext.xml:532
+#, no-c-format
+msgid ""
+"The ordering/bulleting style of list. One of: <literal>NUMBERED</literal>, "
+"<literal>LETTERED</literal>, <literal>GREEK</literal>, <literal>ROMAN</"
+"literal>, <literal>ZAPFDINGBATS</literal>, <literal>ZAPFDINGBATS_NUMBER</"
+"literal>. If no style is given, the list items are bulleted."
+msgstr ""
+"El estilo de la lista (ordenado o en viñetas). Puede ser uno de estos: "
+"<literal>NUMBERED</literal>, <literal>LETTERED</literal>, <literal>GREEK</"
+"literal>, <literal>ROMAN</literal>, <literal>ZAPFDINGBATS</literal>, "
+"<literal>ZAPFDINGBATS_NUMBER</literal>. Se utilizaran viñetas si no se especifica ningún "
+"estilo."
+
+#. Tag: literal
+#: Itext.xml:538 Itext.xml:611
+#, no-c-format
+msgid "listSymbol"
+msgstr "listSymbol"
+
+#. Tag: para
+#: Itext.xml:540
+#, no-c-format
+msgid "For bulleted lists, specifies the bullet symbol."
+msgstr "Para las listas en viñetas, especifica el símbolo a usar."
+
+#. Tag: literal
+#: Itext.xml:546 Itext.xml:818
+#, no-c-format
+msgid "indent"
+msgstr "indent"
+
+#. Tag: para
+#: Itext.xml:548
+#, no-c-format
+msgid "The indentation level of the list."
+msgstr "El nivel de sangría a utilizar en la lista."
+
+#. Tag: literal
+#: Itext.xml:554
+#, no-c-format
+msgid "lowerCase"
+msgstr "lowerCase"
+
+#. Tag: para
+#: Itext.xml:556
+#, no-c-format
+msgid ""
+"For list styles using letters, indicates whether the letters should be lower "
+"case."
+msgstr "Para las listas que utilizan letras, indica si éstas deben ser en minúsculas."
+
+#. Tag: literal
+#: Itext.xml:562
+#, no-c-format
+msgid "charNumber"
+msgstr "charNumber"
+
+#. Tag: para
+#: Itext.xml:564
+#, no-c-format
+msgid "For ZAPFDINGBATS, indicates the character code of the bullet character."
+msgstr "Para ZAPFDINGBATS, indica el código del carácter de la viñeta."
+
+#. Tag: literal
+#: Itext.xml:570
+#, no-c-format
+msgid "numberType"
+msgstr "numberType"
+
+#. Tag: para
+#: Itext.xml:572
+#, no-c-format
+msgid "For ZAPFDINGBATS_NUMBER, indicates the numbering style."
+msgstr "Para ZAPFDINGBATS_NUMBER, indica el estilo de numeración."
+
+#. Tag: title
+#: Itext.xml:581
+#, no-c-format
+msgid "p:listItem"
+msgstr "p:listItem"
+
+#. Tag: para
+#: Itext.xml:582
+#, no-c-format
+msgid "<literal>p:listItem</literal> supports the following attributes:"
+msgstr "<literal>p:listItem</literal> soporta los siguientes atributos:"
+
+#. Tag: para
+#: Itext.xml:589
+#, no-c-format
+msgid ""
+"The alignment of the list item. (See <xref linkend=\"Seam_Reference_Guide-"
+"Document_Constants-Alignment_Values\"/> for possible values)"
+msgstr ""
+"El alineamiento de los elementos de la lista (los valores pueden encontrarse "
+"en la <xref linkend=\"Seam_Reference_Guide-Document_Constants-Alignment_Values"
+"\"/>)"
+
+#. Tag: para
+#: Itext.xml:597
+#, no-c-format
+msgid "The left indentation amount."
+msgstr "La cantidad de sangría a la izquierda."
+
+#. Tag: para
+#: Itext.xml:605
+#, no-c-format
+msgid "The right indentation amount."
+msgstr "La cantidad de sangría a la derecha."
+
+#. Tag: para
+#: Itext.xml:613
+#, no-c-format
+msgid "Overrides the default list symbol for this list item."
+msgstr ""
+"Sobrescribir el símbolo de la lista predeterminado para este elemento de la "
+"lista."
+
+#. Tag: title
+#: Itext.xml:624
+#, no-c-format
+msgid "Tables"
+msgstr "Tablas"
+
+#. Tag: para
+#: Itext.xml:625
+#, no-c-format
+msgid ""
+"Table structures can be created using the <literal>p:table</literal> and "
+"<literal>p:cell</literal> tags. Unlike many table structures, there is no "
+"explicit row declaration. If a table has 3 columns, then every 3 cells will "
+"automatically form a row. Header and footer rows can be declared, and the "
+"headers and footers will be repeated in the event a table structure spans "
+"multiple pages."
+msgstr ""
+"Las estructuras de las tablas se deben crear utilizando las etiquetas "
+"<literal>p:table</literal> y <literal>p:cell</literal>. A diferencia de "
+"otras estructuras de tablas, no hay declaraciones explícitas de fila. Si una "
+"tabla tiene tres columnas, entonces cada 3 casillas serán automáticamente "
+"una fila. Las filas para encabezamiento o pie de página pueden ser "
+"declaradas y los encabezamientos y pie de páginas se pueden repetir si la "
+"estructura de la tabla se expande en varias páginas."
+
+#. Tag: programlisting
+#: Itext.xml:628
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"   \n"
+"            xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"            title=\"Hello\"&gt;   \n"
+"   &lt;p:table columns=\"3\" headerRows=\"1\"&gt;\n"
+"      &lt;p:cell&gt;name&lt;/p:cell&gt;\n"
+"      &lt;p:cell&gt;owner&lt;/p:cell&gt;\n"
+"      &lt;p:cell&gt;size&lt;/p:cell&gt;\n"
+"      &lt;ui:repeat value=\"#{documents}\" var=\"doc\"&gt;\n"
+"         &lt;p:cell&gt;#{doc.name}&lt;/p:cell&gt;\n"
+"         &lt;p:cell&gt;#{doc.user.name}&lt;/p:cell&gt;\n"
+"         &lt;p:cell&gt;#{doc.size}&lt;/p:cell&gt;\n"
+"      &lt;/ui:repeat&gt;\n"
+"   &lt;/p:table&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"   \n"
+"            xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"            title=\"Hello\"&gt;   \n"
+"   &lt;p:table columns=\"3\" headerRows=\"1\"&gt;\n"
+"      &lt;p:cell&gt;name&lt;/p:cell&gt;\n"
+"      &lt;p:cell&gt;owner&lt;/p:cell&gt;\n"
+"      &lt;p:cell&gt;size&lt;/p:cell&gt;\n"
+"      &lt;ui:repeat value=\"#{documents}\" var=\"doc\"&gt;\n"
+"         &lt;p:cell&gt;#{doc.name}&lt;/p:cell&gt;\n"
+"         &lt;p:cell&gt;#{doc.user.name}&lt;/p:cell&gt;\n"
+"         &lt;p:cell&gt;#{doc.size}&lt;/p:cell&gt;\n"
+"      &lt;/ui:repeat&gt;\n"
+"   &lt;/p:table&gt;\n"
+"&lt;/p:document&gt;"
+
+#. Tag: title
+#: Itext.xml:630
+#, no-c-format
+msgid "p:table"
+msgstr "p:table"
+
+#. Tag: para
+#: Itext.xml:631
+#, no-c-format
+msgid "<literal>p:table</literal> supports the following attributes."
+msgstr "<literal>p:table</literal> soporta los siguientes atributos."
+
+#. Tag: literal
+#: Itext.xml:636
+#, no-c-format
+msgid "columns"
+msgstr "columns"
+
+#. Tag: para
+#: Itext.xml:638
+#, no-c-format
+msgid "The number of columns (cells) that make up a table row."
+msgstr "El número de columnas (celdas) que conforman una fila de la tabla."
+
+#. Tag: literal
+#: Itext.xml:644
+#, no-c-format
+msgid "widths"
+msgstr "widths"
+
+#. Tag: para
+#: Itext.xml:646
+#, no-c-format
+msgid ""
+"The relative widths of each column. There should be one value for each "
+"column. For example: widths=\"2 1 1\" would indicate that there are 3 "
+"columns and the first column should be twice the size of the second and "
+"third column."
+msgstr ""
+"El ancho relativo de cada columna. Debe haber un valor para cada columna. "
+"Por ejemplo, widths=\"2 1 1\" indica que debe haber tres columnas y que la "
+"primera de ellas debe ser dos veces más grande que las otras dos."
+
+#. Tag: literal
+#: Itext.xml:652
+#, no-c-format
+msgid "headerRows"
+msgstr "headerRows"
+
+#. Tag: para
+#: Itext.xml:654
+#, no-c-format
+msgid ""
+"The initial number of rows which are considered to be headers or footer rows "
+"and should be repeated if the table spans multiple pages."
+msgstr ""
+"El número inicial de filas que se deben considerar como encabezamientos o pies "
+"de página y que deben repetirse si la tabla se expande en varias páginas."
+
+#. Tag: literal
+#: Itext.xml:660
+#, no-c-format
+msgid "footerRows"
+msgstr "footerRows"
+
+#. Tag: para
+#: Itext.xml:662
+#, no-c-format
+msgid ""
+"The number of rows that are considered to be footer rows. This value is "
+"subtracted from the <literal>headerRows</literal> value. If document has 2 "
+"rows which make up the header and one row that makes up the footer, "
+"<literal>headerRows</literal> should be set to 3 and <literal>footerRows</"
+"literal> should be set to 1"
+msgstr ""
+"El número de filas que se deben considerar como pies de página. Este "
+"valor se substrae del valor <literal>headerRows</literal>. Si el documento "
+"tiene dos filas para el encabezado y una fila para el pie de página, "
+"<literal>headerRows</literal> debe establecerse a 3 y <literal>footerRows</"
+"literal> a 1."
+
+#. Tag: para
+#: Itext.xml:670
+#, no-c-format
+msgid "The percentage of the page width that the table spans."
+msgstr "El porcentaje del ancho de la página en el cual la tabla se expande."
+
+#. Tag: literal
+#: Itext.xml:676 Itext.xml:773
+#, no-c-format
+msgid "horizontalAlignment"
+msgstr "horizontalAlignment"
+
+#. Tag: para
+#: Itext.xml:678
+#, no-c-format
+msgid ""
+"The horizontal alignment of the table. (See <xref linkend="
+"\"Seam_Reference_Guide-Document_Constants-Alignment_Values\"/> for possible "
+"values)"
+msgstr ""
+"La alineación horizontal de la tabla (los valores posibles se encuentran en la "
+"<xref linkend=\"Seam_Reference_Guide-Document_Constants-Alignment_Values\"/>)"
+
+#. Tag: literal
+#: Itext.xml:684
+#, no-c-format
+msgid "skipFirstHeader"
+msgstr "skipFirstHeader"
+
+#. Tag: literal
+#: Itext.xml:691 Itext.xml:881
+#, no-c-format
+msgid "runDirection"
+msgstr "runDirection"
+
+#. Tag: literal
+#: Itext.xml:698
+#, no-c-format
+msgid "lockedWidth"
+msgstr "lockedWidth"
+
+#. Tag: literal
+#: Itext.xml:705
+#, no-c-format
+msgid "splitRows"
+msgstr "splitRows"
+
+#. Tag: literal
+#: Itext.xml:728
+#, no-c-format
+msgid "extendLastRow"
+msgstr "extendLastRow"
+
+#. Tag: literal
+#: Itext.xml:735
+#, no-c-format
+msgid "headersInEvent"
+msgstr "headersInEvent"
+
+#. Tag: literal
+#: Itext.xml:742
+#, no-c-format
+msgid "splitLate"
+msgstr "splitLate"
+
+#. Tag: title
+#: Itext.xml:759
+#, no-c-format
+msgid "p:cell"
+msgstr "p:cell"
+
+#. Tag: para
+#: Itext.xml:760
+#, no-c-format
+msgid "<literal>p:cell</literal> supports the following attributes."
+msgstr "<literal>p:cell</literal> soporta los siguientes atributos."
+
+#. Tag: literal
+#: Itext.xml:765
+#, no-c-format
+msgid "colspan"
+msgstr "colspan"
+
+#. Tag: para
+#: Itext.xml:767
+#, no-c-format
+msgid ""
+"Cells can span more than one column by declaring a <literal>colspan</"
+"literal> greater than 1. Tables do not have the ability to span across "
+"multiple rows."
+msgstr ""
+"Las celdas pueden ocupar más de una columna si se declara <literal>colspan</"
+"literal> mayor que 1. Las tablas no tienen la habilidad de expandirse a lo "
+"largo de varias filas."
+
+#. Tag: para
+#: Itext.xml:775
+#, no-c-format
+msgid ""
+"The horizontal alignment of the cell. (see <xref linkend="
+"\"Seam_Reference_Guide-Document_Constants-Alignment_Values\"/> for possible "
+"values)"
+msgstr ""
+"La alineación horizontal de la celda (los posibles valores se pueden "
+"encontrar en la <xref linkend=\"Seam_Reference_Guide-Document_Constants-"
+"Alignment_Values\"/>)."
+
+#. Tag: literal
+#: Itext.xml:781 Itext.xml:825
+#, no-c-format
+msgid "verticalAlignment"
+msgstr "verticalAlignment"
+
+#. Tag: para
+#: Itext.xml:783
+#, no-c-format
+msgid ""
+"The vertical alignment of the cell. (see <xref linkend="
+"\"Seam_Reference_Guide-Document_Constants-Alignment_Values\"/> for possible "
+"values)"
+msgstr ""
+"La alineación vertical de la celda (los valores posibles se encuentran en la "
+"<xref linkend=\"Seam_Reference_Guide-Document_Constants-Alignment_Values\"/"
+">)."
+
+#. Tag: literal
+#: Itext.xml:789
+#, no-c-format
+msgid "padding"
+msgstr "padding"
+
+#. Tag: para
+#: Itext.xml:791
+#, no-c-format
+msgid ""
+"Padding on a given side can also be specified using <literal>paddingLeft</"
+"literal>, <literal>paddingRight</literal>, <literal>paddingTop</literal> and "
+"<literal>paddingBottom</literal>."
+msgstr ""
+"Se puede especificar el valor de relleno con <literal>paddingLeft</literal>, "
+"<literal>paddingRight</literal>, <literal>paddingTop</literal> y "
+"<literal>paddingBottom</literal>."
+
+#. Tag: literal
+#: Itext.xml:797
+#, no-c-format
+msgid "useBorderPadding"
+msgstr "useBorderPadding"
+
+#. Tag: literal
+#: Itext.xml:839
+#, no-c-format
+msgid "fixedHeight"
+msgstr "fixedHeight"
+
+#. Tag: literal
+#: Itext.xml:846
+#, no-c-format
+msgid "noWrap"
+msgstr "noWrap"
+
+#. Tag: literal
+#: Itext.xml:853
+#, no-c-format
+msgid "minimumHeight"
+msgstr "minimumHeight"
+
+#. Tag: literal
+#: Itext.xml:860
+#, no-c-format
+msgid "followingIndent"
+msgstr "followingIndent"
+
+#. Tag: literal
+#: Itext.xml:867
+#, no-c-format
+msgid "rightIndent"
+msgstr "rightIndent"
+
+#. Tag: literal
+#: Itext.xml:874
+#, no-c-format
+msgid "spaceCharRatio"
+msgstr "spaceCharRatio"
+
+#. Tag: literal
+#: Itext.xml:888
+#, no-c-format
+msgid "arabicOptions"
+msgstr "arabicOptions"
+
+#. Tag: literal
+#: Itext.xml:895
+#, no-c-format
+msgid "useAscender"
+msgstr "useAscender"
+
+#. Tag: literal
+#: Itext.xml:902
+#, no-c-format
+msgid "grayFill"
+msgstr "grayFill"
+
+#. Tag: title
+#: Itext.xml:921
+#, no-c-format
+msgid "Document Constants"
+msgstr "Constantes del documento"
+
+#. Tag: para
+#: Itext.xml:922
+#, no-c-format
+msgid ""
+"This section documents some of the constants shared by attributes on "
+"multiple tags."
+msgstr ""
+"Esta sección presenta algunas de las constantes que los atributos comparten "
+"en diferentes etiquetas."
+
+#. Tag: title
+#: Itext.xml:926
+#, no-c-format
+msgid "Color Values"
+msgstr "Valores de color"
+
+#. Tag: para
+#: Itext.xml:927
+#, no-c-format
+msgid ""
+"Seam documents do not yet support a full color specification. Currently, "
+"only named colors are supported. They are: <literal>white</literal>, "
+"<literal>gray</literal>, <literal>lightgray</literal>, <literal>darkgray</"
+"literal>, <literal>black</literal>, <literal>red</literal>, <literal>pink</"
+"literal>, <literal>yellow</literal>, <literal>green</literal>, "
+"<literal>magenta</literal>, <literal>cyan</literal> and <literal>blue</"
+"literal>."
+msgstr ""
+"Los documentos de Seam todavía no soportan una especificación de colores. "
+"Actualmente, solo se soportan los nombres de colores. Estos son :"
+"<literal>white</literal> (blanco), <literal>gray</literal> (gris), "
+"<literal>lightgray</literal> (gris claro), <literal>darkgray</literal> (gris "
+"oscuro), <literal>black</literal> (negro), <literal>red</literal> (rojo), "
+"<literal>pink</literal> (rosado), <literal>yellow</literal> (amarillo), "
+"<literal>green</literal> (verde), <literal>magenta</literal> (magenta), "
+"<literal>cyan</literal> (cian) y <literal>blue</literal> (azul)."
+
+#. Tag: title
+#: Itext.xml:933
+#, no-c-format
+msgid "Alignment Values"
+msgstr "Valores de alineación"
+
+#. Tag: para
+#: Itext.xml:934
+#, no-c-format
+msgid ""
+"Where alignment values are used, the Seam PDF supports the following "
+"horizontal alignment values: <literal>left</literal>, <literal>right</"
+"literal>, <literal>center</literal>, <literal>justify</literal> and "
+"<literal>justifyall</literal>. The vertical alignment values are "
+"<literal>top</literal>, <literal>middle</literal>, <literal>bottom</"
+"literal>, and <literal>baseline</literal>."
+msgstr ""
+"Seam soporta los siguientes valores de alineación horizontal <literal>left</"
+"literal> (izquierda), <literal>right</literal> (derecha), <literal>center</"
+"literal> (centro), <literal>justify</literal> (justificado) y "
+"<literal>justifyall</literal> (justificar todo). Los valores verticales "
+"soportados son <literal>top</literal> (arriba), <literal>middle</literal> "
+"(medio), <literal>bottom</literal> (abajo) y <literal>baseline</literal> "
+"(linea base)."
+
+#. Tag: title
+#: Itext.xml:942
+#, no-c-format
+msgid "Configuring iText"
+msgstr "Configuración de iText"
+
+#. Tag: para
+#: Itext.xml:943
+#, no-c-format
+msgid ""
+"Document generation works out of the box with no additional configuration "
+"needed. However, there are a few points of configuration that are needed for "
+"more serious applications."
+msgstr ""
+"La generación de documentos funciona sin necesidad de configuración "
+"adicional. Sin embargo, hay varios puntos de configuración que deben tenerse "
+"en cuenta para trabajar con aplicaciones complejas."
+
+#. Tag: para
+#: Itext.xml:946
+#, no-c-format
+msgid ""
+"The default implementation serves PDF documents from a generic URL, "
+"<literal>/seam-doc.seam</literal>. Many browsers (and users) would prefer to "
+"see URLs that contain the actual PDF name like <literal>/myDocument.pdf</"
+"literal>. This capability requires some configuration. To serve PDF files, "
+"all *.pdf resources should be mapped to the Seam Servlet Filter and to the "
+"DocumentStoreServlet:"
+msgstr ""
+"La implementación predeterminada sirve los documentos PDF desde una URL "
+"genérica: <literal>/seam-doc.seam</literal>. Sin embargo es preferible, "
+"utilizar una URL que contenga el nombre del documento: <literal>/myDocument."
+"pdf</literal>. Para servir archivos PDF, todos los recursos *.pdf deben "
+"estar relacionados con el filtro Seam Servlet y con DocumentStoreServlet:"
+
+#. Tag: programlisting
+#: Itext.xml:949
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.servlet.SeamServletFilter&lt;/filter-"
+"class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;\n"
+"\n"
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.pdf.DocumentStoreServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"\n"
+"&lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+msgstr ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.servlet.SeamServletFilter&lt;/filter-"
+"class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;\n"
+"\n"
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.pdf.DocumentStoreServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"\n"
+"&lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+
+#. Tag: para
+#: Itext.xml:950
+#, no-c-format
+msgid ""
+"The <literal>useExtensions</literal> option on the document store component "
+"completes the functionality by instructing the document store to generate "
+"URLs with the correct filename extension for the document type being "
+"generated."
+msgstr ""
+"La opción <literal>useExtensions</literal> en el componente de "
+"almacenamiento del documento completa la funcionalidad al introducir el "
+"almacenamiento del documento para generar URLs con la extensión de nombre de "
+"archivo correcta para el tipo de documento generado."
+
+#. Tag: programlisting
+#: Itext.xml:953
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pdf=\"http://jboss.com/products/seam/pdf\"&gt;\n"
+"    &lt;pdf:documentStore useExtensions=\"true\" /&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pdf=\"http://jboss.com/products/seam/pdf\"&gt;\n"
+"    &lt;pdf:documentStore useExtensions=\"true\" /&gt;\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Itext.xml:954
+#, no-c-format
+msgid ""
+"Generated documents are stored in conversation scope and will expire when "
+"the conversation ends. At that point, references to the document will be "
+"invalid. To You can specify a default view to be shown when a document does "
+"not exist using the <literal>errorPage</literal> property of the "
+"documentStore."
+msgstr ""
+"Los documentos generados son almacenados dentro del ámbito de la "
+"conversación y expirarán cuando la conversación finalice. En ese momento, "
+"las referencias al documento no serán válidas. Puede especificar una vista "
+"predeterminada que se mostrará cuando el documento no existe usando la "
+"propiedad <literal>errorPage</literal> de documentStore."
+
+#. Tag: programlisting
+#: Itext.xml:957
+#, no-c-format
+msgid ""
+"&lt;pdf:documentStore useExtensions=\"true\" errorPage=\"/pdfMissing.seam\" /"
+"&gt;"
+msgstr ""
+"&lt;pdf:documentStore useExtensions=\"true\" errorPage=\"/pdfMissing.seam\" /"
+"&gt;"
+
+#. Tag: title
+#: Itext.xml:961
+#, no-c-format
+msgid "iText links"
+msgstr "Enlaces sobre iText"
+
+#. Tag: para
+#: Itext.xml:962
+#, no-c-format
+msgid "For further information on iText, see:"
+msgstr "Para obtener mayor información sobre iText, consulte:"
+
+#. Tag: ulink
+#: Itext.xml:969
+#, no-c-format
+msgid "iText Home Page"
+msgstr "Página principal de iText"
+
+#. Tag: ulink
+#: Itext.xml:974
+#, no-c-format
+msgid "iText in Action"
+msgstr "Acción en iText"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Jbpm.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Jbpm.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Jbpm.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1666 @@
+# translation of Jbpm.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Jbpm\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 01:04+0000\n"
+"PO-Revision-Date: 2007-10-26 09:57+1000\n"
+"Last-Translator: Angela Garcia\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Jbpm.xml:6
+#, no-c-format
+msgid "Pageflows and business processes"
+msgstr "Flujos de página y procesos empresariales"
+
+#. Tag: para
+#: Jbpm.xml:7
+#, no-c-format
+msgid ""
+"JBoss jBPM is a business process management engine for any Java SE or EE "
+"environment. jBPM lets you represent a business process or user interaction "
+"as a graph of nodes representing wait states, decisions, tasks, web pages, "
+"etc. The graph is defined using a simple, very readable, XML dialect called "
+"jPDL, and may be edited and visualised graphically using an eclipse plugin. "
+"jPDL is an extensible language, and is suitable for a range of problems, "
+"from defining web application page flow, to traditional workflow management, "
+"all the way up to orchestration of services in a SOA environment."
+msgstr ""
+"JBoss jBPM es una máquina de administración de procesos empresariales para "
+"cualquier entorno Java SE o EE. jBPM le permite representar un proceso "
+"empresarial o una interacción con el usuario como un gráfico de nodos que "
+"representan diferentes estados como espera, decisiones, tareas, páginas web, "
+"etc. La gráfica se define utilizando un dialecto XML muy simple y fácil de "
+"leer llamado jDPL y se puede modificar y visualizar gráficamente utilizando "
+"un plugin eclipse. jPDL es un lenguaje de extensión y es apropiado para una "
+"variedad de problemas desde la definición del flujo de página de una "
+"aplicación web, la administración tradicional de un flujo de trabajo hasta "
+"la organización de servicios en un entorno SOA."
+
+#. Tag: para
+#: Jbpm.xml:10
+#, no-c-format
+msgid "Seam applications use jBPM for two different problems:"
+msgstr "Las aplicaciones Seam utilizan jBPM para dos problemas diferentes:"
+
+#. Tag: para
+#: Jbpm.xml:15
+#, no-c-format
+msgid ""
+"Defining the pageflow involved in complex user interactions. A jPDL process "
+"definition defines the page flow for a single conversation. A Seam "
+"conversation is considered to be a relatively short-running interaction with "
+"a single user."
+msgstr ""
+"Definición de flujos de paǵinas involucrados en interacciones de usuario "
+"complejas. Una definición de proceso jPDL establece el flujo de página para "
+"una sola conversación. Una conversación Seam se considera como una "
+"interacción relativamente corta con un sólo usuario."
+
+#. Tag: para
+#: Jbpm.xml:20
+#, no-c-format
+msgid ""
+"Defining the overarching business process. The business process may span "
+"multiple conversations with multiple users. Its state is persistent in the "
+"jBPM database, so it is considered long-running. Coordination of the "
+"activities of multiple users is a much more complex problem than scripting "
+"an interaction with a single user, so jBPM offers sophisticated facilities "
+"for task management and dealing with multiple concurrent paths of execution."
+msgstr ""
+"Definición del proceso empresarial. El proceso empresarial puede abarcar "
+"múltiples conversaciones con múltiples usuarios. Su estado es persistente en "
+"la base de datos jBPM así que se considera de larga ejecución. La "
+"coordinación de las actividades de usuarios múltiples es un problema mucho "
+"más complejo que el establecer un script para una interacción que sólo "
+"cuenta con un único usuario así que jBPM ofrece facilidades sofisticadas "
+"para la administración de tareas y para tratar con múltiples rutas de "
+"ejecución simultánea."
+
+#. Tag: para
+#: Jbpm.xml:25
+#, no-c-format
+msgid ""
+"Don&#39;t get these two things confused ! They operate at very different "
+"levels or granularity. <emphasis>Pageflow</emphasis>, "
+"<emphasis>conversation</emphasis> and <emphasis>task</emphasis> all refer to "
+"a single interaction with a single user. A business process spans many "
+"tasks. Futhermore, the two applications of jBPM are totally orthogonal. You "
+"can use them together or independently or not at all."
+msgstr ""
+"¡No se confunda con estas dos cosas! Operan en niveles muy diferentes. "
+"<emphasis>Flujo de página</emphasis>, <emphasis>conversación</emphasis> y "
+"<emphasis>tarea</emphasis> todas se refieren a una sola interacción con un "
+"sólo usuario. Un proceso empresarial abarca muchas tareas. Además las dos "
+"aplicaciones de jBPM son completamente ortogonales. Las puede utilizar "
+"juntas o de manera independiente o no utilizarlas. "
+
+#. Tag: para
+#: Jbpm.xml:28
+#, no-c-format
+msgid ""
+"You don&#39;t have to know jDPL to use Seam. If you&#39;re perfectly happy "
+"defining pageflow using JSF or Seam navigation rules, and if your "
+"application is more data-driven that process-driven, you probably don&#39;t "
+"need jBPM. But we&#39;re finding that thinking of user interaction in terms "
+"of a well-defined graphical representation is helping us build more robust "
+"applications."
+msgstr ""
+"No tiene que saber de jDPL para poder utilizar Seam. Si está feliz "
+"definiendo el flujo de página utilizando JSF o por medio de la reglas de "
+"navegación de Seam y si su aplicación tiene un enfoque más dirigido a datos "
+"que a procesos entonces probablemente no necesita jBPM. Pero hemos observado "
+"que el pensar en la interacción del usuario en términos de una "
+"representación gráfica bien definida nos está ayudando a construir "
+"aplicaciones más robustas. "
+
+#. Tag: title
+#: Jbpm.xml:32
+#, no-c-format
+msgid "Pageflow in Seam"
+msgstr "Flujo de página en Seam"
+
+#. Tag: para
+#: Jbpm.xml:33
+#, no-c-format
+msgid "There are two ways to define pageflow in Seam:"
+msgstr "Hay dos maneras de definir el flujo de página en Seam:"
+
+#. Tag: para
+#: Jbpm.xml:38
+#, no-c-format
+msgid ""
+"Using JSF or Seam navigation rules - the <emphasis>stateless navigation "
+"model</emphasis>"
+msgstr ""
+"Utilizando JSF o las reglas de navegación de Seam - el <emphasis>modelo de "
+"navegación sin estado</emphasis>"
+
+#. Tag: para
+#: Jbpm.xml:43
+#, no-c-format
+msgid "Using jPDL - the <emphasis>stateful navigation model</emphasis>"
+msgstr "Uso de jPDL - el <emphasis>modelo de navegación sin estado</emphasis>"
+
+#. Tag: para
+#: Jbpm.xml:48
+#, no-c-format
+msgid ""
+"Very simple applications will only need the stateless navigation model. Very "
+"complex applications will use both models in different places. Each model "
+"has its strengths and weaknesses!"
+msgstr ""
+"Las aplicaciones muy simples sólo necesitarán el modelo de navegación sin "
+"estado. Las aplicaciones muy complejas utilizarán ambos modelos en "
+"diferentes lugares. ¡Cada modelo tiene sus fortalezas y sus debilidades!"
+
+#. Tag: title
+#: Jbpm.xml:52
+#, no-c-format
+msgid "The two navigation models"
+msgstr "Los dos modelos de navegación"
+
+#. Tag: para
+#: Jbpm.xml:53
+#, no-c-format
+msgid ""
+"The stateless model defines a mapping from a set of named, logical outcomes "
+"of an event directly to the resulting page of the view. The navigation rules "
+"are entirely oblivious to any state held by the application other than what "
+"page was the source of the event. This means that your action listener "
+"methods must sometimes make decisions about the page flow, since only they "
+"have access to the current state of the application."
+msgstr ""
+"El modelo sin estado define un mapeo directamente desde un grupo de "
+"resultados lógicos y nombrados de un evento a la página resultante de la "
+"vista. Las reglas de navegación son completamente inconscientes de cualquier "
+"estado que la aplicación tenga a excepción de la página que fue la fuente "
+"del evento. Esto significa que sus métodos escuchas de acciones a veces "
+"deben tomar decisiones sobre el flujo de páginas ya que solamente ellos "
+"tienen acceso al estado actual de la aplicación."
+
+#. Tag: para
+#: Jbpm.xml:56
+#, no-c-format
+msgid "Here is an example page flow definition using JSF navigation rules:"
+msgstr ""
+"Este es un ejemplo de la definición de flujo de página utilizando las reglas "
+"de navegación JSF:"
+
+#. Tag: programlisting
+#: Jbpm.xml:59
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"    &lt;from-view-id&gt;/numberGuess.jsp&lt;/from-view-id&gt;\n"
+"        \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;guess&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/numberGuess.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;win&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/win.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"        \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;lose&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/lose.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+"&lt;navigation-rule&gt;\n"
+"    &lt;from-view-id&gt;/numberGuess.jsp&lt;/from-view-id&gt;\n"
+"        \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;guess&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/numberGuess.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;win&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/win.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"        \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;lose&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/lose.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"&lt;/navigation-rule&gt;"
+
+#. Tag: para
+#: Jbpm.xml:60
+#, no-c-format
+msgid "Here is the same example page flow definition using Seam navigation rules:"
+msgstr ""
+"Este es un ejemplo de la definición del flujo de página utilizando las "
+"reglas de navegación Seam:"
+
+#. Tag: programlisting
+#: Jbpm.xml:63
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/numberGuess.jsp\"&gt;\n"
+"        \n"
+"    &lt;navigation&gt;\n"
+"        &lt;rule if-outcome=\"guess\"&gt;\n"
+"            &lt;redirect view-id=\"/numberGuess.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"        &lt;rule if-outcome=\"win\"&gt;\n"
+"            &lt;redirect view-id=\"/win.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"        &lt;rule if-outcome=\"lose\"&gt;\n"
+"            &lt;redirect view-id=\"/lose.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+"&lt;page view-id=\"/numberGuess.jsp\"&gt;\n"
+"        \n"
+"    &lt;navigation&gt;\n"
+"        &lt;rule if-outcome=\"guess\"&gt;\n"
+"            &lt;redirect view-id=\"/numberGuess.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"        &lt;rule if-outcome=\"win\"&gt;\n"
+"            &lt;redirect view-id=\"/win.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"        &lt;rule if-outcome=\"lose\"&gt;\n"
+"            &lt;redirect view-id=\"/lose.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"&lt;/navigation-rule&gt;"
+
+#. Tag: para
+#: Jbpm.xml:64
+#, no-c-format
+msgid ""
+"If you find navigation rules overly verbose, you can return view ids "
+"directly from your action listener methods:"
+msgstr ""
+"Si encuentra las reglas de navegación demasiado verbosas puede devolver la "
+"vista de ids directamente desde los métodos escuchas de acciones:"
+
+#. Tag: programlisting
+#: Jbpm.xml:67
+#, no-c-format
+msgid ""
+"public String guess() {\n"
+"    if (guess==randomNumber) return \"/win.jsp\";\n"
+"    if (++guessCount==maxGuesses) return \"/lose.jsp\";\n"
+"    return null;\n"
+"}"
+msgstr ""
+"public String guess() {\n"
+"    if (guess==randomNumber) return \"/win.jsp\";\n"
+"    if (++guessCount==maxGuesses) return \"/lose.jsp\";\n"
+"    return null;\n"
+"}"
+
+#. Tag: para
+#: Jbpm.xml:68
+#, no-c-format
+msgid ""
+"Note that this results in a redirect. You can even specify parameters to be "
+"used in the redirect:"
+msgstr ""
+"Observe que esto provoca un redireccionamiento. Inclusive puede especificar "
+"los parámetros que se deben utilizar en la redirección:"
+
+#. Tag: programlisting
+#: Jbpm.xml:71
+#, no-c-format
+msgid ""
+"public String search() {\n"
+"    return \"/searchResults.jsp?searchPattern=#{searchAction.searchPattern}"
+"\";\n"
+"}"
+msgstr ""
+"public String search() {\n"
+"    return \"/searchResults.jsp?searchPattern=#{searchAction.searchPattern}"
+"\";\n"
+"}"
+
+#. Tag: para
+#: Jbpm.xml:72
+#, no-c-format
+msgid ""
+"The stateful model defines a set of transitions between a set of named, "
+"logical application states. In this model, it is possible to express the "
+"flow of any user interaction entirely in the jPDL pageflow definition, and "
+"write action listener methods that are completely unaware of the flow of the "
+"interaction."
+msgstr ""
+"El modelo con estado define un grupo de transiciones entre un grupo de "
+"estados de la aplicación lógicos y nombrados. En este modelo es posible "
+"expresar el flujo de cualquier interacción de usuario completamente en la "
+"definición del flujo de página jDPL y escribir métodos escuchas de acciones "
+"que son completamente inconscientes del flujo de la interacción."
+
+#. Tag: para
+#: Jbpm.xml:75
+#, no-c-format
+msgid "Here is an example page flow definition using jPDL:"
+msgstr "Este es un ejemplo de la definición del flujo de página utilizando jopad:"
+
+#. Tag: programlisting
+#: Jbpm.xml:78
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"numberGuess\"&gt;\n"
+"    \n"
+"   &lt;start-page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"              &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"      &lt;/transition&gt;\n"
+"   &lt;/start-page&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess."
+"correctGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateRemainingGuesses\" expression=\"#{numberGuess."
+"lastGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"lose\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"displayGuess\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"lose\" view-id=\"/lose.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+"&lt;pageflow-definition name=\"numberGuess\"&gt;\n"
+"    \n"
+"   &lt;start-page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"              &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"      &lt;/transition&gt;\n"
+"   &lt;/start-page&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess."
+"correctGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateRemainingGuesses\" expression=\"#{numberGuess."
+"lastGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"lose\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"displayGuess\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"lose\" view-id=\"/lose.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+
+#. Tag: para
+#: Jbpm.xml:87
+#, no-c-format
+msgid "There are two things we notice immediately here:"
+msgstr "Hay dos cosas que notamos de inmediato:"
+
+#. Tag: para
+#: Jbpm.xml:92
+#, no-c-format
+msgid ""
+"The JSF/Seam navigation rules are <emphasis>much</emphasis> simpler. "
+"(However, this obscures the fact that the underlying Java code is more "
+"complex.)"
+msgstr ""
+"Las reglas de navegación JSF/Seam son <emphasis>mucho</emphasis> más simples "
+"(sin embargo, esto oculta el hecho de que el código Java subyacente es más "
+"complejo). "
+
+#. Tag: para
+#: Jbpm.xml:97
+#, no-c-format
+msgid ""
+"The jPDL makes the user interaction immediately understandable, without us "
+"needing to even look at the JSP or Java code."
+msgstr ""
+"El jPDL hace que la interacción de usuario se entienda de inmediato sin "
+"necesidad de mirar el código Java o JSP."
+
+#. Tag: para
+#: Jbpm.xml:102
+#, no-c-format
+msgid ""
+"In addition, the stateful model is more <emphasis>constrained</emphasis>. "
+"For each logical state (each step in the page flow), there are a constrained "
+"set of possible transitions to other states. The stateless model is an "
+"<emphasis>ad hoc</emphasis> model which is suitable to relatively "
+"unconstrained, freeform navigation where the user decides where he/she wants "
+"to go next, not the application."
+msgstr ""
+"Además el modelo con estado es más <emphasis>rígido</emphasis>. Para cada "
+"estado lógico (cada paso en el flujo de página) hay un grupo restringido de "
+"transiciones posibles para otros estados. El modelo sin estado es un modelo "
+"<emphasis>ad hoc</emphasis>, el cual es apropiado para la navegación de "
+"manera libre relativamente no restringida en donde el usuario decide a donde "
+"quiere ir después y no es la aplicación la que decide."
+
+#. Tag: para
+#: Jbpm.xml:105
+#, no-c-format
+msgid ""
+"The stateful/stateless navigation distinction is quite similar to the "
+"traditional view of modal/modeless interaction. Now, Seam applications are "
+"not usually modal in the simple sense of the word - indeed, avoiding "
+"application modal behavior is one of the main reasons for having "
+"conversations! However, Seam applications can be, and often are, modal at "
+"the level of a particular conversation. It is well-known that modal behavior "
+"is something to avoid as much as possible; it is very difficult to predict "
+"the order in which your users are going to want to do things! However, there "
+"is no doubt that the stateful model has its place."
+msgstr ""
+"La diferencia entre la navegación con y sin estado es bastante similar a la "
+"vista tradicional de interacción con y sin modelo. Ahora las aplicaciones "
+"usualmente no son modales, de hecho, el evitar el comportamiento modelo de "
+"la aplicación es una de las razones principales ¡para tener conversaciones! "
+"Sin embargo, las aplicaciones Seam pueden ser y con frecuencia son modelos a "
+"nivel de una conversación en particular. Es bien sabido que el "
+"comportamiento modelo es algo que se debe evitar en lo posible, es muy "
+"difícil de predecir el orden en el que ¡los usuarios querrán hacer las "
+"cosas! Pero no hay duda alguna de que el modelo con estado tiene su lugar."
+
+#. Tag: para
+#: Jbpm.xml:108
+#, no-c-format
+msgid "The biggest contrast between the two models is the back-button behavior."
+msgstr ""
+"La diferencia más grande entre los dos modelos es el comportamiento del "
+"botón de regreso."
+
+#. Tag: title
+#: Jbpm.xml:114
+#, no-c-format
+msgid "Seam and the back button"
+msgstr "Seam y el botón de regreso"
+
+#. Tag: para
+#: Jbpm.xml:115
+#, no-c-format
+msgid ""
+"When JSF or Seam navigation rules are used, Seam lets the user freely "
+"navigate via the back, forward and refresh buttons. It is the responsibility "
+"of the application to ensure that conversational state remains internally "
+"consistent when this occurs. Experience with the combination of web "
+"application frameworks like Struts or WebWork - that do not support a "
+"conversational model - and stateless component models like EJB stateless "
+"session beans or the Spring framework has taught many developers that this "
+"is close to impossible to do! However, our experience is that in the context "
+"of Seam, where there is a well-defined conversational model, backed by "
+"stateful session beans, it is actually quite straightforward. Usually it is "
+"as simple as combining the use of <literal>no-conversation-view-id</literal> "
+"with null checks at the beginning of action listener methods. We consider "
+"support for freeform navigation to be almost always desirable."
+msgstr ""
+"Cuando se utilizan las reglas de navegación Seam o JSF, Seam le permite al "
+"usuario navegar libremente utilizando los botones para adelantar, refrescar "
+"o regresar. Es responsabilidad de la aplicación asegurarse de que el estado "
+"de la conversación permanezca consistente internamente cuando esto ocurre. "
+"Experimente con la combinación de marcos de trabajo de aplicaciones web como "
+"Struts o WebWork - que no soportan un modelo conversacional - y modelos de "
+"componentes sin estado como beans de sesión sin estado EJB o el marco de "
+"trabajo Spring le han enseñado a muchos desarrolladores que esto es ¡casi "
+"imposible de hacer! Sin embargo, nuestra experiencia es que en el contexto "
+"de Seam, en donde hay un modelo de conversación bien definido, respaldado "
+"por beans de sesión con estado, es bastante claro. Usualmente es tan simple "
+"como combinar el uso de <literal>no-conversation-view-id</literal> con "
+"verificaciones nulas al principio de los métodos escuchas de acciones. "
+"Consideramos que casi siempre es bueno contar con soporte para navegación de "
+"forma libre."
+
+#. Tag: para
+#: Jbpm.xml:118
+#, no-c-format
+msgid ""
+"In this case, the <literal>no-conversation-view-id</literal> declaration "
+"goes in <literal>pages.xml</literal>. It tells Seam to redirect to a "
+"different page if a request originates from a page rendered during a "
+"conversation, and that conversation no longer exists:"
+msgstr ""
+"En este caso, la declaración <literal>no-conversation-view-id</literal> va "
+"en <literal>pages.xml</literal> le dice a Seam que redireccione a una página "
+"diferente si surge una petición desde una página entregada durante una "
+"conversación y esa conversación ya no existe:"
+
+#. Tag: programlisting
+#: Jbpm.xml:121
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/checkout.xhtml\" \n"
+"        no-conversation-view-id=\"/main.xhtml\"/&gt;"
+msgstr ""
+"&lt;page view-id=\"/checkout.xhtml\" \n"
+"        no-conversation-view-id=\"/main.xhtml\"/&gt;"
+
+#. Tag: para
+#: Jbpm.xml:122
+#, no-c-format
+msgid ""
+"On the other hand, in the stateful model, backbuttoning is interpreted as an "
+"undefined transition back to a previous state. Since the stateful model "
+"enforces a defined set of transitions from the current state, back buttoning "
+"is be default disallowed in the stateful model! Seam transparently detects "
+"the use of the back button, and blocks any attempt to perform an action from "
+"a previous, \"stale\" page, and simply redirects the user to the \"current\" "
+"page (and displays a faces message). Whether you consider this a feature or "
+"a limitation of the stateful model depends upon your point of view: as an "
+"application developer, it is a feature; as a user, it might be frustrating! "
+"You can enable backbutton navigation from a particular page node by setting "
+"<literal>back=\"enabled\"</literal>."
+msgstr ""
+"Por otro lado, en el modelo con estado, el presionar el botón de regreso se "
+"interpreta como una transacción indefinida de regreso al estado anterior. "
+"Debido a que el modelo con estado refuerza un grupo de transiciones definido "
+"desde el estado actual, el uso del botón de regreso ¡no debe estar permitido "
+"en el modelo con estado! Seam detecta de manera transparente el uso del "
+"botón de regreso y bloquea cualquier intento para realizar cualquier acción "
+"desde una página anterior \"no actualizada\" y simplemente redirecciona al "
+"usuario a la página \"actual\" (y presenta un mensaje de faces). Depende de "
+"su punto de vista si toma esto como una ventaja o como una limitación del "
+"modelo de estado: como desarrollador de aplicaciones es una ventaja pero "
+"como usuario puede llegar a ser ¡frustrante! Puede habilitar la navegación "
+"del botón de regreso desde un nodo de página en particular configurando "
+"<literal>back=\"enabled\"</literal>."
+
+#. Tag: programlisting
+#: Jbpm.xml:125
+#, no-c-format
+msgid ""
+"&lt;page name=\"checkout\" \n"
+"        view-id=\"/checkout.xhtml\" \n"
+"        back=\"enabled\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"checkout\"/&gt;\n"
+"    &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page name=\"checkout\" \n"
+"        view-id=\"/checkout.xhtml\" \n"
+"        back=\"enabled\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"checkout\"/&gt;\n"
+"    &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Jbpm.xml:126
+#, no-c-format
+msgid ""
+"This allows backbuttoning <emphasis>from</emphasis> the <literal>checkout</"
+"literal> state to <emphasis>any previous state!</emphasis>"
+msgstr ""
+"Esto permite el uso del botón de regreso <emphasis>desde</emphasis> el "
+"estado <literal>checkout</literal> a <emphasis>¡cualquier estado previo!</"
+"emphasis>"
+
+#. Tag: para
+#: Jbpm.xml:129
+#, no-c-format
+msgid ""
+"Of course, we still need to define what happens if a request originates from "
+"a page rendered during a pageflow, and the conversation with the pageflow no "
+"longer exists. In this case, the <literal>no-conversation-view-id</literal> "
+"declaration goes into the pageflow definition:"
+msgstr ""
+"Por supuesto todavía necesitamos definir lo que pasa si una petición se "
+"origina desde una página entregada durante un flujo de página y la "
+"conversación con el flujo de página ya no existe. En este caso, la "
+"declaración <literal>no-conversation-view-id</literal> va en la definición "
+"de flujo de página:"
+
+#. Tag: programlisting
+#: Jbpm.xml:132
+#, no-c-format
+msgid ""
+"&lt;page name=\"checkout\" \n"
+"        view-id=\"/checkout.xhtml\" \n"
+"        back=\"enabled\" \n"
+"        no-conversation-view-id=\"/main.xhtml\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"checkout\"/&gt;\n"
+"    &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page name=\"checkout\" \n"
+"        view-id=\"/checkout.xhtml\" \n"
+"        back=\"enabled\" \n"
+"        no-conversation-view-id=\"/main.xhtml\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"checkout\"/&gt;\n"
+"    &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Jbpm.xml:134
+#, no-c-format
+msgid ""
+"In practice, both navigation models have their place, and you&#39;ll quickly "
+"learn to recognize when to prefer one model over the other."
+msgstr ""
+"En la práctica ambos modelos de navegación tienen su propio lugar y "
+"aprenderá rápidamente a reconocer cuando debe preferir un modelo en vez del "
+"otro. "
+
+#. Tag: title
+#: Jbpm.xml:142
+#, no-c-format
+msgid "Using jPDL pageflows"
+msgstr "Uso de flujos de página jPDL"
+
+#. Tag: title
+#: Jbpm.xml:144
+#, no-c-format
+msgid "Installing pageflows"
+msgstr "Instalación de flujos de página"
+
+#. Tag: para
+#: Jbpm.xml:145
+#, no-c-format
+msgid ""
+"We need to install the Seam jBPM-related components, and tell them where to "
+"find our pageflow definition. We can specify this Seam configuration in "
+"<literal>components.xml</literal>."
+msgstr ""
+"Necesitamos instalar los componentes relacionados con jBPM y es necesario "
+"decirles en donde encontrar la definición del flujo de página. Podemos "
+"especificar esta configuración Seam en <literal>components.xml</literal>."
+
+#. Tag: programlisting
+#: Jbpm.xml:148
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:pageflow-definitions&gt;\n"
+"        &lt;value&gt;pageflow.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:pageflow-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:pageflow-definitions&gt;\n"
+"        &lt;value&gt;pageflow.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:pageflow-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+
+#. Tag: para
+#: Jbpm.xml:149
+#, no-c-format
+msgid ""
+"The first line installs jBPM, the second points to a jPDL-based pageflow "
+"definition."
+msgstr ""
+"La primera línea instala jBPM, la segunda apunta a la definición del flujo "
+"de página con base en jDPL."
+
+#. Tag: title
+#: Jbpm.xml:155
+#, no-c-format
+msgid "Starting pageflows"
+msgstr "Inicio de flujos de página"
+
+#. Tag: para
+#: Jbpm.xml:156
+#, no-c-format
+msgid ""
+"We \"start\" a jPDL-based pageflow by specifying the name of the process "
+"definition using a <literal>@Begin</literal>, <literal>@BeginTask</literal> "
+"or <literal>@StartTask</literal> annotation:"
+msgstr ""
+"\"Iniciamos\" un flujo de página jDPL especificando el nombre de la "
+"definición del proceso utilizando una anotación <literal>@Begin</literal>, "
+"<literal>@BeginTask</literal> o <literal>@StartTask</literal>:"
+
+#. Tag: programlisting
+#: Jbpm.xml:159
+#, no-c-format
+msgid ""
+"@Begin(pageflow=\"numberguess\")\n"
+"public void begin() { ... }"
+msgstr ""
+"@Begin(pageflow=\"numberguess\")\n"
+"public void begin() { ... }"
+
+#. Tag: para
+#: Jbpm.xml:160
+#, no-c-format
+msgid "Alternatively we can start a pageflow using pages.xml:"
+msgstr "De manera alternativa podemos iniciar un flujo de página utlizando pages.xml:"
+
+#. Tag: programlisting
+#: Jbpm.xml:163
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"        &lt;begin-conversation pageflow=\"numberguess\"/&gt;\n"
+"    &lt;/page&gt;"
+msgstr ""
+"&lt;page&gt;\n"
+"        &lt;begin-conversation pageflow=\"numberguess\"/&gt;\n"
+"    &lt;/page&gt;"
+
+#. Tag: para
+#: Jbpm.xml:164
+#, no-c-format
+msgid ""
+"If we are beginning the pageflow during the <literal>RENDER_RESPONSE</"
+"literal> phase&mdash;during a <literal>@Factory</literal> or "
+"<literal>@Create</literal> method, for example&mdash;we consider ourselves "
+"to be already at the page being rendered, and use a <literal>&lt;start-"
+"page&gt;</literal> node as the first node in the pageflow, as in the example "
+"above."
+msgstr ""
+"Si estamos dando inicio al flujo de página durante la fase "
+"<literal>RENDER_RESPONSE</literal> - por ejemplo, durante un método "
+"<literal>@Factory</literal> o <literal>@Create</literal> - consideramos que "
+"ya nos encontramos en la página que se está entregando y utilizamos un nodo "
+"<literal>&lt;start-page&gt;</literal> como el primer nodo en el flujo de "
+"página como en el ejemplo anterior."
+
+#. Tag: para
+#: Jbpm.xml:167
+#, no-c-format
+msgid ""
+"But if the pageflow is begun as the result of an action listener invocation, "
+"the outcome of the action listener determines which is the first page to be "
+"rendered. In this case, we use a <literal>&lt;start-state&gt;</literal> as "
+"the first node in the pageflow, and declare a transition for each possible "
+"outcome:"
+msgstr ""
+"Pero si el flujo de página se inicia como resultado de una invocación del "
+"escucha de acciones, el resultado del escucha de acciones determina la "
+"primera página que se entregará. En este caso, utilizamos un <literal>&lt;"
+"start-state&gt;</literal> como el primer nodo en el flujo de página y "
+"declara una transición para cada resultado posible:"
+
+#. Tag: programlisting
+#: Jbpm.xml:170
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"viewEditDocument\"&gt;\n"
+"\n"
+"    &lt;start-state name=\"start\"&gt;\n"
+"        &lt;transition name=\"documentFound\" to=\"displayDocument\"/&gt;\n"
+"        &lt;transition name=\"documentNotFound\" to=\"notFound\"/&gt;\n"
+"    &lt;/start-state&gt;\n"
+"    \n"
+"    &lt;page name=\"displayDocument\" view-id=\"/document.jsp\"&gt;\n"
+"        &lt;transition name=\"edit\" to=\"editDocument\"/&gt;\n"
+"        &lt;transition name=\"done\" to=\"main\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"    \n"
+"    ...\n"
+"    \n"
+"    &lt;page name=\"notFound\" view-id=\"/404.jsp\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"    &lt;/page&gt;\n"
+"    \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+"&lt;pageflow-definition name=\"viewEditDocument\"&gt;\n"
+"\n"
+"    &lt;start-state name=\"start\"&gt;\n"
+"        &lt;transition name=\"documentFound\" to=\"displayDocument\"/&gt;\n"
+"        &lt;transition name=\"documentNotFound\" to=\"notFound\"/&gt;\n"
+"    &lt;/start-state&gt;\n"
+"    \n"
+"    &lt;page name=\"displayDocument\" view-id=\"/document.jsp\"&gt;\n"
+"        &lt;transition name=\"edit\" to=\"editDocument\"/&gt;\n"
+"        &lt;transition name=\"done\" to=\"main\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"    \n"
+"    ...\n"
+"    \n"
+"    &lt;page name=\"notFound\" view-id=\"/404.jsp\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"    &lt;/page&gt;\n"
+"    \n"
+"&lt;/pageflow-definition&gt;"
+
+#. Tag: title
+#: Jbpm.xml:174
+#, no-c-format
+msgid "Page nodes and transitions"
+msgstr "Nodos de página y transiciones"
+
+#. Tag: para
+#: Jbpm.xml:175
+#, no-c-format
+msgid ""
+"Each <literal>&lt;page&gt;</literal> node represents a state where the "
+"system is waiting for user input:"
+msgstr ""
+"Cada nodo <literal>&lt;page&gt;</literal> representa un estado en donde el "
+"sistema está esperando una entrada por parte del usuario:"
+
+#. Tag: programlisting
+#: Jbpm.xml:178
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"        &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"        &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Jbpm.xml:179
+#, no-c-format
+msgid ""
+"The <literal>view-id</literal> is the JSF view id. The <literal>&lt;redirect/"
+"&gt;</literal> element has the same effect as <literal>&lt;redirect/&gt;</"
+"literal> in a JSF navigation rule: namely, a post-then-redirect behavior, to "
+"overcome problems with the browser&#39;s refresh button. (Note that Seam "
+"propagates conversation contexts over these browser redirects. So there is "
+"no need for a Ruby on Rails style \"flash\" construct in Seam!)"
+msgstr ""
+"El <literal>view-id</literal> es el id de vista JSF. El elemento "
+"<literal>&lt;redirect/&gt;</literal> tiene el mismo efecto que <literal>&lt;"
+"redirect/&gt;</literal> en una regla de navegación JSF: a saber, un "
+"comportamiento post-luego-redireccionar, para superar problemas con el "
+"botón para refrescar del navegador (observe que Seam propaga contextos de "
+"conversación sobre estos redireccionamientos del navegador, así que no hay "
+"necesidad de una construcción \"extravagante\" de estilo Ruby on Rails ¡en "
+"Seam!)."
+
+#. Tag: para
+#: Jbpm.xml:182
+#, no-c-format
+msgid ""
+"The transition name is the name of a JSF outcome triggered by clicking a "
+"command button or command link in <literal>numberGuess.jsp</literal>."
+msgstr ""
+"El nombre de la transición es el nombre de un resultado JSF que se generó al "
+"hacer click en un botón de comandos o en un enlace en <literal>numberGuess."
+"jsp</literal>."
+
+#. Tag: programlisting
+#: Jbpm.xml:185
+#, no-c-format
+msgid "&lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"guess\"/&gt;"
+msgstr "&lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"guess\"/&gt;"
+
+#. Tag: para
+#: Jbpm.xml:186
+#, no-c-format
+msgid ""
+"When the transition is triggered by clicking this button, jBPM will activate "
+"the transition action by calling the <literal>guess()</literal> method of "
+"the <literal>numberGuess</literal> component. Notice that the syntax used "
+"for specifying actions in the jPDL is just a familiar JSF EL expression, and "
+"that the transition action handler is just a method of a Seam component in "
+"the current Seam contexts. So we have exactly the same event model for jBPM "
+"events that we already have for JSF events! (The <emphasis>One Kind of "
+"Stuff</emphasis> principle.)"
+msgstr ""
+"Cuando se genera la transición al hacer click en este botón, jBPM activará "
+"la acción de transición llamando el método <literal>guess()</literal> del "
+"componente <literal>numberGuess</literal>. Observe que la sintaxis que se "
+"utiliza para especificar acciones en el jPDL es simplemente una expresión EL "
+"JSF familiar y que el manejador de acciones de transición es sólo un método "
+"de un componente Seam en los contextos Seam actuales. Así que contamos "
+"exactamente con el mismo modelo de eventos para jBPM que el que ya tenemos "
+"para ¡eventos JSF! (el principio <emphasis>One Kind of Stuff</emphasis>)."
+
+#. Tag: para
+#: Jbpm.xml:189
+#, no-c-format
+msgid ""
+"In the case of a null outcome (for example, a command button with no "
+"<literal>action</literal> defined), Seam will signal the transition with no "
+"name if one exists, or else simply redisplay the page if all transitions "
+"have names. So we could slightly simplify our example pageflow and this "
+"button:"
+msgstr ""
+"En el caso de un resultado nulo (por ejemplo, un botón de comandos sin una "
+"<literal>action</literal> definida) Seam señalará la transición sin nombre "
+"si ya existe uno o de otra manera simplemente volverá a presentar la páginas "
+"si todas las transiciones tienen nombres. Así que podríamos simplificar un "
+"poco nuestro ejemplo de flujo de página y de este botón:"
+
+#. Tag: programlisting
+#: Jbpm.xml:192
+#, no-c-format
+msgid "&lt;h:commandButton type=\"submit\" value=\"Guess\"/&gt;"
+msgstr "&lt;h:commandButton type=\"submit\" value=\"Guess\"/&gt;"
+
+#. Tag: para
+#: Jbpm.xml:193
+#, no-c-format
+msgid "Would fire the following un-named transition:"
+msgstr "Lanzaría la siguiente transición sin nombre:"
+
+#. Tag: programlisting
+#: Jbpm.xml:196
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"evaluateGuess\"&gt;\n"
+"        &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"evaluateGuess\"&gt;\n"
+"        &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Jbpm.xml:197
+#, no-c-format
+msgid ""
+"It is even possible to have the button call an action method, in which case "
+"the action outcome will determine the transition to be taken:"
+msgstr ""
+"Inclusive es posible hacer que el botón llame un método de acción, en tal "
+"caso el resultado de la acción determinará la transición que se debe tomar:"
+
+#. Tag: programlisting
+#: Jbpm.xml:200
+#, no-c-format
+msgid ""
+"&lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"#{numberGuess."
+"guess}\"/&gt;"
+msgstr ""
+"&lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"#{numberGuess."
+"guess}\"/&gt;"
+
+#. Tag: programlisting
+#: Jbpm.xml:201
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;transition name=\"correctGuess\" to=\"win\"/&gt;\n"
+"    &lt;transition name=\"incorrectGuess\" to=\"evaluateGuess\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;transition name=\"correctGuess\" to=\"win\"/&gt;\n"
+"    &lt;transition name=\"incorrectGuess\" to=\"evaluateGuess\"/&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Jbpm.xml:202
+#, no-c-format
+msgid ""
+"However, this is considered an inferior style, since it moves responsibility "
+"for controlling the flow out of the pageflow definition and back into the "
+"other components. It is much better to centralize this concern in the "
+"pageflow itself."
+msgstr ""
+"Sin embargo, esto se considera como un estilo inferior ya que saca la "
+"responsabilidad de controlar el flujo fuera de la definición del flujo de "
+"página y lo pone de vuelta en los otros componentes. Es mucho mejor "
+"centralizar esta preocupación en el mismo flujo de página."
+
+#. Tag: title
+#: Jbpm.xml:208
+#, no-c-format
+msgid "Controlling the flow"
+msgstr "Control del flujo"
+
+#. Tag: para
+#: Jbpm.xml:209
+#, no-c-format
+msgid ""
+"Usually, we don&#39;t need the more powerful features of jPDL when defining "
+"pageflows. We do need the <literal>&lt;decision&gt;</literal> node, however:"
+msgstr ""
+"Con frecuencia no necesitamos más características potentes de jDPL al "
+"definir flujos de páginas. No necesitamos el nodo <literal>&lt;decision&gt;</"
+"literal> pero: "
+
+#. Tag: programlisting
+#: Jbpm.xml:212
+#, no-c-format
+msgid ""
+"&lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess.correctGuess}"
+"\"&gt;\n"
+"    &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"    &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"&lt;/decision&gt;"
+msgstr ""
+"&lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess.correctGuess}"
+"\"&gt;\n"
+"    &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"    &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"&lt;/decision&gt;"
+
+#. Tag: para
+#: Jbpm.xml:213
+#, no-c-format
+msgid "A decision is made by evaluating a JSF EL expression in the Seam contexts."
+msgstr "Se toma una decisión evaluando una expresión EL JSF en los contextos Seam."
+
+#. Tag: title
+#: Jbpm.xml:219
+#, no-c-format
+msgid "Ending the flow"
+msgstr "Finalización del flujo"
+
+#. Tag: para
+#: Jbpm.xml:220
+#, no-c-format
+msgid ""
+"We end the conversation using <literal>&lt;end-conversation&gt;</literal> or "
+"<literal>@End</literal>. (In fact, for readability, use of <emphasis>both</"
+"emphasis> is encouraged.)"
+msgstr ""
+"Vamos a finalizar la conversación utilizando <literal>&lt;end-"
+"conversation&gt;</literal> o <literal>@End</literal> (de hecho, se "
+"recomienda el uso de <emphasis>ambos</emphasis> para mayor facilidad al "
+"leer)."
+
+#. Tag: programlisting
+#: Jbpm.xml:223
+#, no-c-format
+msgid ""
+"&lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;end-conversation/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;end-conversation/&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Jbpm.xml:224
+#, no-c-format
+msgid ""
+"Optionally, we can end a task, specify a jBPM <literal>transition</literal> "
+"name. In this case, Seam will signal the end of the current task in the "
+"overarching business process."
+msgstr ""
+"De manera opcional, podemos dar fin a una tarea especificando un nombre jBPM "
+"<literal>transition</literal>. En este caso, Seam señalará el final de la "
+"tarea actual en el proceso empresarial."
+
+#. Tag: programlisting
+#: Jbpm.xml:227
+#, no-c-format
+msgid ""
+"&lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;end-task transition=\"success\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;end-task transition=\"success\"/&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: title
+#: Jbpm.xml:233
+#, no-c-format
+msgid "Business process management in Seam"
+msgstr "Administración de procesos empresariales en Seam"
+
+#. Tag: para
+#: Jbpm.xml:234
+#, no-c-format
+msgid ""
+"A business process is a well-defined set of tasks that must be performed by "
+"users or software systems according to well-defined rules about "
+"<emphasis>who</emphasis> can perform a task, and <emphasis>when</emphasis> "
+"it should be performed. Seam&#39;s jBPM integration makes it easy to display "
+"lists of tasks to users and let them manage their tasks. Seam also lets the "
+"application store state associated with the business process in the "
+"<literal>BUSINESS_PROCESS</literal> context, and have that state made "
+"persistent via jBPM variables."
+msgstr ""
+"Un proceso empresarial es un grupo de tareas bien definidas que los usuarios "
+"o los sistemas de software deben realizar de acuerdo con las reglas bien "
+"definidas en relación a <emphasis>quien</emphasis> puede realizar una tarea "
+"y <emphasis>cuando</emphasis> se debe realizar. La integración jBPM de Seam "
+"facilita el presentarle una lista de tareas a los usuarios y les permite "
+"administrar sus tareas. Seam también le permite a la aplicación almacenar "
+"estado asociado con el proceso empresarial en el contexto "
+"<literal>BUSINESS_PROCESS</literal> y hace ese estado persistente por medio "
+"de las variables jBPM."
+
+#. Tag: para
+#: Jbpm.xml:237
+#, no-c-format
+msgid ""
+"A simple business process definition looks much the same as a page flow "
+"definition (<emphasis>One Kind of Stuff</emphasis>), except that instead of "
+"<literal>&lt;page&gt;</literal> nodes, we have <literal>&lt;task-node&gt;</"
+"literal> nodes. In a long-running business process, the wait states are "
+"where the system is waiting for some user to log in and perform a task."
+msgstr ""
+"Una simple definición de proceso empresarial es casi igual a una definición "
+"de flujo de página (<emphasis>One Kind of Stuff</emphasis>) a excepción de "
+"que en vez de tener nodos de <literal>&lt;page&gt;</literal>, tenemos nodos "
+"<literal>&lt;task-node&gt;</literal>. En un proceso empresarial a largo "
+"plazo los estados de espera son precisamente cuando el sistema está en "
+"espera de que algún usuario inicie una sesión y realice una tarea."
+
+#. Tag: programlisting
+#: Jbpm.xml:240
+#, no-c-format
+msgid ""
+"&lt;process-definition name=\"todo\"&gt;\n"
+"   \n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"todo\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;task-node name=\"todo\"&gt;\n"
+"      &lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"         &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"      &lt;/task&gt;\n"
+"      &lt;transition to=\"done\"/&gt;\n"
+"   &lt;/task-node&gt;\n"
+"   \n"
+"   &lt;end-state name=\"done\"/&gt;\n"
+"   \n"
+"&lt;/process-definition&gt;"
+msgstr ""
+"&lt;process-definition name=\"todo\"&gt;\n"
+"   \n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"todo\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;task-node name=\"todo\"&gt;\n"
+"      &lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"         &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"      &lt;/task&gt;\n"
+"      &lt;transition to=\"done\"/&gt;\n"
+"   &lt;/task-node&gt;\n"
+"   \n"
+"   &lt;end-state name=\"done\"/&gt;\n"
+"   \n"
+"&lt;/process-definition&gt;"
+
+#. Tag: para
+#: Jbpm.xml:251
+#, no-c-format
+msgid ""
+"It is perfectly possible that we might have both jPDL business process "
+"definitions and jPDL pageflow definitions in the same project. If so, the "
+"relationship between the two is that a single <literal>&lt;task&gt;</"
+"literal> in a business process corresponds to a whole pageflow <literal>&lt;"
+"pageflow-definition&gt;</literal>"
+msgstr ""
+"Es perfectamente posible que tengamos la definición del proceso empresarial "
+"jDPL y la definición del flujo de página jPDL en el mismo proyecto. Si es "
+"así la relación entre las dos es que una sola <literal>&lt;task&gt;</"
+"literal> en un proceso empresarial corresponde a un flujo de página completo "
+"<literal>&lt;pageflow-definition&gt;</literal>."
+
+#. Tag: title
+#: Jbpm.xml:256
+#, no-c-format
+msgid "Using jPDL business process definitions"
+msgstr "Uso de definiciones de procesos empresariales jPDL "
+
+#. Tag: title
+#: Jbpm.xml:258
+#, no-c-format
+msgid "Installing process definitions"
+msgstr "Instalación de definiciones de procesos"
+
+#. Tag: para
+#: Jbpm.xml:259
+#, no-c-format
+msgid ""
+"We need to install jBPM, and tell it where to find the business process "
+"definitions:"
+msgstr ""
+"Necesitamos instalar jBPM y decirle en donde puede encontrar las "
+"definiciones de procesos empresariales:"
+
+#. Tag: programlisting
+#: Jbpm.xml:262
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;todo.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;todo.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+
+#. Tag: title
+#: Jbpm.xml:266
+#, no-c-format
+msgid "Initializing actor ids"
+msgstr "Inicialización de actor ids"
+
+#. Tag: para
+#: Jbpm.xml:267
+#, no-c-format
+msgid ""
+"We always need to know what user is currently logged in. jBPM \"knows\" "
+"users by their <emphasis>actor id</emphasis> and <emphasis>group actor ids</"
+"emphasis>. We specify the current actor ids using the built in Seam "
+"component named <literal>actor</literal>:"
+msgstr ""
+"Siempre es necesirio saber que usuarios tienen una sesión abierta en el "
+"momento. jBPM \"conoce\" a los usuarios por sus <emphasis>actor id</"
+"emphasis> y <emphasis>group actor ids</emphasis>. Especificamos los actor "
+"ids actuales utilizando el componente Seam incorporado llamado "
+"<literal>actor</literal>:"
+
+#. Tag: programlisting
+#: Jbpm.xml:270
+#, no-c-format
+msgid ""
+"@In Actor actor;\n"
+"\n"
+"public String login() {\n"
+"    ...\n"
+"    actor.setId( user.getUserName() );\n"
+"    actor.getGroupActorIds().addAll( user.getGroupNames() );\n"
+"    ...\n"
+"}"
+msgstr ""
+"@In Actor actor;\n"
+"\n"
+"public String login() {\n"
+"    ...\n"
+"    actor.setId( user.getUserName() );\n"
+"    actor.getGroupActorIds().addAll( user.getGroupNames() );\n"
+"    ...\n"
+"}"
+
+#. Tag: title
+#: Jbpm.xml:274
+#, no-c-format
+msgid "Initiating a business process"
+msgstr "Iniciación de un proceso empresarial"
+
+#. Tag: para
+#: Jbpm.xml:275
+#, no-c-format
+msgid ""
+"To initiate a business process instance, we use the <literal>@CreateProcess</"
+"literal> annotation:"
+msgstr ""
+"Para iniciar una instancia de proceso empresarial utilizamos la anotación "
+"<literal>@CreateProcess</literal>:"
+
+#. Tag: programlisting
+#: Jbpm.xml:278
+#, no-c-format
+msgid ""
+"@CreateProcess(definition=\"todo\")\n"
+"public void createTodo() { ... }"
+msgstr ""
+"@CreateProcess(definition=\"todo\")\n"
+"public void createTodo() { ... }"
+
+#. Tag: para
+#: Jbpm.xml:279
+#, no-c-format
+msgid "Alternatively we can initiate a business process using pages.xml:"
+msgstr ""
+"De manera alternativa podemos iniciar un proceso empresarial utilizando "
+"pages.xml:"
+
+#. Tag: programlisting
+#: Jbpm.xml:282
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;create-process definition=\"todo\" /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page&gt;\n"
+"    &lt;create-process definition=\"todo\" /&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: title
+#: Jbpm.xml:286
+#, no-c-format
+msgid "Task assignment"
+msgstr "Asignación de tareas"
+
+#. Tag: para
+#: Jbpm.xml:287
+#, no-c-format
+msgid ""
+"When a process starts, task instances are created. These must be assigned to "
+"users or user groups. We can either hardcode our actor ids, or delegate to a "
+"Seam component:"
+msgstr ""
+"Cuando un proceso inicia se crean las instancias de las tareas. Estas se "
+"deben asignar a usuarios o a grupos de usuarios. Podemos empezar desde cero "
+"con nuestros actor ids o podemos delegarlo a un componente Seam:"
+
+#. Tag: programlisting
+#: Jbpm.xml:290
+#, no-c-format
+msgid ""
+"&lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"    &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"&lt;/task&gt;"
+msgstr ""
+"&lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"    &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"&lt;/task&gt;"
+
+#. Tag: para
+#: Jbpm.xml:291
+#, no-c-format
+msgid ""
+"In this case, we have simply assigned the task to the current user. We can "
+"also assign tasks to a pool:"
+msgstr ""
+"En este caso simplemente hemos asignado la tarea al usuario actual. También "
+"podemos asignar tareas a un pool:"
+
+#. Tag: programlisting
+#: Jbpm.xml:294
+#, no-c-format
+msgid ""
+"&lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"    &lt;assignment pooled-actors=\"employees\"/&gt;\n"
+"&lt;/task&gt;"
+msgstr ""
+"&lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"    &lt;assignment pooled-actors=\"employees\"/&gt;\n"
+"&lt;/task&gt;"
+
+#. Tag: title
+#: Jbpm.xml:298
+#, no-c-format
+msgid "Task lists"
+msgstr "Listas de tareas"
+
+#. Tag: para
+#: Jbpm.xml:299
+#, no-c-format
+msgid ""
+"Several built-in Seam components make it easy to display task lists. The "
+"<literal>pooledTaskInstanceList</literal> is a list of pooled tasks that "
+"users may assign to themselves:"
+msgstr ""
+"Varios componentes incorporados en Seam facilitan el presentar las listas de "
+"tareas. La <literal>pooledTaskInstanceList</literal> es una lista de tareas "
+"en pool que los usuarios se pueden asignar a sí mismos:"
+
+#. Tag: programlisting
+#: Jbpm.xml:302
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{pooledTaskInstanceList}\" var=\"task\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Description&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{task.description}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link action=\"#{pooledTask.assignToCurrentActor}\" value="
+"\"Assign\" taskInstance=\"#{task}\"/&gt;\n"
+"    &lt;/h:column&gt;                    \n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+"&lt;h:dataTable value=\"#{pooledTaskInstanceList}\" var=\"task\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Description&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{task.description}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link action=\"#{pooledTask.assignToCurrentActor}\" value="
+"\"Assign\" taskInstance=\"#{task}\"/&gt;\n"
+"    &lt;/h:column&gt;                    \n"
+"&lt;/h:dataTable&gt;"
+
+#. Tag: para
+#: Jbpm.xml:303
+#, no-c-format
+msgid ""
+"Note that instead of <literal>&lt;s:link&gt;</literal> we could have used a "
+"plain JSF <literal>&lt;h:commandLink&gt;</literal>:"
+msgstr ""
+"Observe que en vez de <literal>&lt;s:link&gt;</literal> podríamos haber "
+"utilizado un JSF <literal>&lt;h:commandLink&gt;</literal>:"
+
+#. Tag: programlisting
+#: Jbpm.xml:306
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"#{pooledTask.assignToCurrentActor}\"&gt; \n"
+"    &lt;f:param name=\"taskId\" value=\"#{task.id}\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+"&lt;h:commandLink action=\"#{pooledTask.assignToCurrentActor}\"&gt; \n"
+"    &lt;f:param name=\"taskId\" value=\"#{task.id}\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+
+#. Tag: para
+#: Jbpm.xml:307
+#, no-c-format
+msgid ""
+"The <literal>pooledTask</literal> component is a built-in component that "
+"simply assigns the task to the current user."
+msgstr ""
+"El componente <literal>pooledTask</literal> es un componente incorporado que "
+"simplemente asigna la tarea al usuario actual."
+
+#. Tag: para
+#: Jbpm.xml:310
+#, no-c-format
+msgid ""
+"The <literal>taskInstanceListForType</literal> component includes tasks of a "
+"particular type that are assigned to the current user:"
+msgstr ""
+"El componente <literal>taskInstanceListByType</literal> incluye tareas de un "
+"tipo en particular que se asignan al usuario actual: "
+
+#. Tag: programlisting
+#: Jbpm.xml:313
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{taskInstanceListForType[&#39;todo&#39;]}\" var="
+"\"task\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Description&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{task.description}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link action=\"#{todoList.start}\" value=\"Start Work\" "
+"taskInstance=\"#{task}\"/&gt;\n"
+"    &lt;/h:column&gt;                    \n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+"&lt;h:dataTable value=\"#{taskInstanceListForType[&#39;todo&#39;]}\" var="
+"\"task\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Description&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{task.description}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link action=\"#{todoList.start}\" value=\"Start Work\" "
+"taskInstance=\"#{task}\"/&gt;\n"
+"    &lt;/h:column&gt;                    \n"
+"&lt;/h:dataTable&gt;"
+
+#. Tag: title
+#: Jbpm.xml:317
+#, no-c-format
+msgid "Performing a task"
+msgstr "Realizar una tarea"
+
+#. Tag: para
+#: Jbpm.xml:318
+#, no-c-format
+msgid ""
+"To begin work on a task, we use either <literal>@StartTask</literal> or "
+"<literal>@BeginTask</literal> on the listener method:"
+msgstr ""
+"Para empezar a trabajar en una tarea podemos utilizar <literal>@StartTask</"
+"literal> o <literal>@BeginTask</literal> en el método escucha:"
+
+#. Tag: programlisting
+#: Jbpm.xml:321
+#, no-c-format
+msgid ""
+"@StartTask\n"
+"public String start() { ... }"
+msgstr ""
+"@StartTask\n"
+"public String start() { ... }"
+
+#. Tag: para
+#: Jbpm.xml:322
+#, no-c-format
+msgid "Alternatively we can begin work on a task using pages.xml:"
+msgstr "De otra manera podemos empezar a trabajar en una tarea utilizando pages.xml:"
+
+#. Tag: programlisting
+#: Jbpm.xml:325
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;start-task /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page&gt;\n"
+"    &lt;start-task /&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Jbpm.xml:326
+#, no-c-format
+msgid ""
+"These annotations begin a special kind of conversation that has significance "
+"in terms of the overarching business process. Work done by this conversation "
+"has access to state held in the business process context."
+msgstr ""
+"Estas anotaciones dan inicio a una clase especial de conversación que tiene "
+"importancia en términos del proceso empresarial. El trabajo que esta "
+"conversación realiza tiene acceso al estado que se encuentra en el contexto "
+"del proceso empresarial."
+
+#. Tag: para
+#: Jbpm.xml:329
+#, no-c-format
+msgid ""
+"If we end the conversation using <literal>@EndTask</literal>, Seam will "
+"signal the completion of the task:"
+msgstr ""
+"Si damos fin a la conversación utilizando <literal>@EndTask</literal> Seam "
+"señalará cuando la tarea esté completa:"
+
+#. Tag: programlisting
+#: Jbpm.xml:332
+#, no-c-format
+msgid ""
+"@EndTask(transition=\"completed\")\n"
+"public String completed() { ... }"
+msgstr ""
+"@EndTask(transition=\"completed\")\n"
+"public String completed() { ... }"
+
+#. Tag: para
+#: Jbpm.xml:333
+#, no-c-format
+msgid "Alternatively we can use pages.xml:"
+msgstr "De otra manera puede utilizar pages.xml:"
+
+#. Tag: programlisting
+#: Jbpm.xml:336
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;end-task transition=\"completed\" /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page&gt;\n"
+"    &lt;end-task transition=\"completed\" /&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Jbpm.xml:337
+#, no-c-format
+msgid ""
+"(Alternatively, we could have used <literal>&lt;end-conversation&gt;</"
+"literal> as shown above.)"
+msgstr ""
+"-De otra forma, podríamos haber utilizado <literal>&lt;end-conversation&gt;</"
+"literal> como se muestra en el ejemplo anterior."
+
+#. Tag: para
+#: Jbpm.xml:340
+#, no-c-format
+msgid ""
+"At this point, jBPM takes over and continues executing the business process "
+"definition. (In more complex processes, several tasks might need to be "
+"completed before process execution can resume.)"
+msgstr ""
+"En este punto, jBPM se hace cargo y continua ejecutando la definición del "
+"proceso empresarial (en procesos más complejos puede que sea necesario "
+"completar varias tareas antes de poder reanudar el proceso de ejecución). "
+
+#. Tag: para
+#: Jbpm.xml:344
+#, no-c-format
+msgid ""
+"Please refer to the jBPM documentation for a more thorough overview of the "
+"sophisticated features that jBPM provides for managing complex business "
+"processes."
+msgstr ""
+"Consulte la documentación de jBPM para obtener una sinopsis más detallada "
+"sobre las sofisticadas características que jBPM proporciona para la "
+"administración de procesos empresariales complejos."
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Jms.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Jms.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Jms.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,752 @@
+# translation of Jms.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Jms\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-02-04 23:29+0000\n"
+"PO-Revision-Date: 2007-10-16 11:53+1000\n"
+"Last-Translator: Angela Garcia\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Jms.xml:6
+#, no-c-format
+msgid "Asynchronicity and messaging"
+msgstr "Asynchronicity y messaging"
+
+#. Tag: para
+#: Jms.xml:7
+#, no-c-format
+msgid ""
+"Seam makes it very easy to perform work asynchronously from a web request. "
+"When most people think of asynchronicity in Java EE, they think of using "
+"JMS. This is certainly one way to approach the problem in Seam, and is the "
+"right way when you have strict and well-defined quality of service "
+"requirements. Seam makes it easy to send and recieve JMS messages using Seam "
+"components."
+msgstr ""
+"Seam facilita realizar trabajos de manera asincrónica desde un pedido web. "
+"Cuando la mayoría de las personas piensan en asincrónico en Java EE, piensan "
+"en utilizar JMS. De seguro esta es una manera de abordar el problema en Seam "
+"y es la manera correcta cuando cuenta con requerimientos de servicio de "
+"calidad bien definidos y bastante estrictos. Seam facilita enviar y recibir "
+"mensajes JMS utilizando componentes Seam."
+
+#. Tag: para
+#: Jms.xml:10
+#, no-c-format
+msgid ""
+"But for many usecases, JMS is overkill. Seam layers a simple asynchronous "
+"method and event facility over the EJB 3.0 timer service."
+msgstr ""
+"Pero en muchos casos, JMS exagera. Seam pone un método asincrónico simple y "
+"las facilidades de eventos sobre el servicio temporizador EJB 3.0."
+
+#. Tag: title
+#: Jms.xml:13
+#, no-c-format
+msgid "Asynchronicity"
+msgstr "Asincronización"
+
+#. Tag: para
+#: Jms.xml:14
+#, no-c-format
+msgid ""
+"Asynchronous events and method calls have the same quality of service "
+"expectations as the container&#39;s EJB timer service. If you&#39;re not "
+"familiar with the Timer service, don&#39;t worry, you don&#39;t need to "
+"interact with it directly if you want to use asynchronous methods in Seam."
+msgstr ""
+"Las llamadas de métodos y eventos asincrónicos cuentan con las mismas "
+"expectativas de calidad de servicio que el servicio temporizador EJB del "
+"contenedor. Si no está familiarizado con el servicio del temporizador, no se "
+"preocupe ya que no necesita interactuar con él directamente si quiere "
+"utilizar los métodos asicrónicos en Seam."
+
+#. Tag: para
+#: Jms.xml:17
+#, no-c-format
+msgid ""
+"To use asynchronous methods and events, you need to add the following line "
+"to <literal>components.xml</literal>:"
+msgstr ""
+"Para utilizar los métodos y eventos asincrónicos necesita añadir la "
+"siguiente línea a <literal>components.xml</literal>:"
+
+#. Tag: programlisting
+#: Jms.xml:20
+#, no-c-format
+msgid "&lt;core:dispatcher/&gt;"
+msgstr "&lt;core:dispatcher/&gt;"
+
+#. Tag: para
+#: Jms.xml:21
+#, no-c-format
+msgid ""
+"Note that this functionality is not available in environments which do not "
+"support EJB 3.0."
+msgstr ""
+"Observe que esta funcionalidad no se encuentra disponible en entornos que no "
+"soportan EJB 3.0."
+
+#. Tag: title
+#: Jms.xml:24
+#, no-c-format
+msgid "Asynchronous methods"
+msgstr "Métodos asincrónicos"
+
+#. Tag: para
+#: Jms.xml:25
+#, no-c-format
+msgid ""
+"In simplest form, an asynchronous call just lets a method call be processed "
+"asynchronously (in a different thread) from the caller. We usually use an "
+"asynchronous call when we want to return an immediate response to the "
+"client, and let some expensive work be processed in the background. This "
+"pattern works very well in applications which use AJAX, where the client can "
+"automatically poll the server for the result of the work."
+msgstr ""
+"De manera simple, una llamada asincrónica sólo permite que una llamada de "
+"método se procese asincrónicamente (en un hilo diferente) desde el cliente. "
+"Usualmente utilizamos una llamada asincrónica cuando queremos devolver una "
+"respuesta inmediata al cliente y dejar que algo del trabajo costoso se "
+"procese en el fondo. Este patrón funciona bastante bien en aplicaciones que "
+"utilizan AJAX, en donde el cliente puede sondear automáticamente el servidor "
+"en busca del resultado del trabajo."
+
+#. Tag: para
+#: Jms.xml:28
+#, no-c-format
+msgid ""
+"For EJB components, we annotate the local interface to specify that a method "
+"is processed asynchronously."
+msgstr ""
+"Para los componentes EJB anotamos la interfaz local para especificar que un "
+"método se procesa de manera asincrónica."
+
+#. Tag: programlisting
+#: Jms.xml:31
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public void processPayment(Payment payment);\n"
+"}"
+msgstr ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public void processPayment(Payment payment);\n"
+"}"
+
+#. Tag: para
+#: Jms.xml:32
+#, no-c-format
+msgid ""
+"(For JavaBean components we can annotate the component implementation class "
+"if we like.)"
+msgstr ""
+"- Para los componentes JavaBean podemos anotar la clase de implementación "
+"del componente si lo desea."
+
+#. Tag: para
+#: Jms.xml:35
+#, no-c-format
+msgid "The use of asynchronicity is transparent to the bean class:"
+msgstr "El uso de este asincrónico es transparente para la clase bean:"
+
+#. Tag: programlisting
+#: Jms.xml:38
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"paymentHandler\")\n"
+"public class PaymentHandlerBean implements PaymentHandler\n"
+"{\n"
+"    public void processPayment(Payment payment)\n"
+"    {\n"
+"        //do some work!\n"
+"    }\n"
+"}"
+msgstr ""
+"@Stateless\n"
+"@Name(\"paymentHandler\")\n"
+"public class PaymentHandlerBean implements PaymentHandler\n"
+"{\n"
+"    public void processPayment(Payment payment)\n"
+"    {\n"
+"        //do some work!\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Jms.xml:39
+#, no-c-format
+msgid "And also transparent to the client:"
+msgstr "y también es transparente para el cliente:"
+
+#. Tag: programlisting
+#: Jms.xml:42
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String pay()\n"
+"    {\n"
+"        paymentHandler.processPayment( new Payment(bill) );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String pay()\n"
+"    {\n"
+"        paymentHandler.processPayment( new Payment(bill) );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Jms.xml:43
+#, no-c-format
+msgid ""
+"The asynchronous method is processed in a completely new event context and "
+"does not have access to the session or conversation context state of the "
+"caller. However, the business process context <emphasis>is</emphasis> "
+"propagated."
+msgstr ""
+"El método asincrónico se procesa en un contexto de evento completamente "
+"nuevo y no tiene acceso a la sesión o al estado del contexto de la "
+"conversación del cliente. Sin embargo, el contexto del proceso empresarial "
+"<emphasis>se</emphasis> propaga."
+
+#. Tag: para
+#: Jms.xml:46
+#, no-c-format
+msgid ""
+"Asynchronous method calls may be scheduled for later execution using the "
+"<literal>@Duration</literal>, <literal>@Expiration</literal> and "
+"<literal>@IntervalDuration</literal> annotations."
+msgstr ""
+"Las llamadas de método asincrónicas deben estar programadas para una "
+"ejecución posterior utilizando las anotaciones <literal>@Duration</literal>, "
+"<literal>@Expiration</literal> y <literal>@IntervalDuration</literal>."
+
+#. Tag: programlisting
+#: Jms.xml:49
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public void processScheduledPayment(Payment payment, @Expiration Date "
+"date);\n"
+"\n"
+"    @Asynchronous\n"
+"    public void processRecurringPayment(Payment payment, @Expiration Date "
+"date, \n"
+"      @IntervalDuration Long interval)&#39;\n"
+"}"
+msgstr ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public void processScheduledPayment(Payment payment, @Expiration Date "
+"date);\n"
+"\n"
+"    @Asynchronous\n"
+"    public void processRecurringPayment(Payment payment, @Expiration Date "
+"date, \n"
+"      @IntervalDuration Long interval)&#39;\n"
+"}"
+
+#. Tag: programlisting
+#: Jms.xml:50
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String schedulePayment()\n"
+"    {\n"
+"        paymentHandler.processScheduledPayment( new Payment(bill), bill."
+"getDueDate() );\n"
+"        return \"success\";\n"
+"    }\n"
+"\n"
+"    public String scheduleRecurringPayment()\n"
+"    {\n"
+"        paymentHandler.processRecurringPayment( new Payment(bill), bill."
+"getDueDate(), ONE_MONTH );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String schedulePayment()\n"
+"    {\n"
+"        paymentHandler.processScheduledPayment( new Payment(bill), bill."
+"getDueDate() );\n"
+"        return \"success\";\n"
+"    }\n"
+"\n"
+"    public String scheduleRecurringPayment()\n"
+"    {\n"
+"        paymentHandler.processRecurringPayment( new Payment(bill), bill."
+"getDueDate(), ONE_MONTH );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Jms.xml:51
+#, no-c-format
+msgid ""
+"Both client and server may access the <literal>Timer</literal> object "
+"associated with the invocation."
+msgstr ""
+"Tanto el cliente como el servidor pueden acceder al objeto <literal>Timer</"
+"literal> asociado con la invocación."
+
+#. Tag: programlisting
+#: Jms.xml:54
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public Timer processScheduledPayment(Payment payment, @Expiration Date "
+"date);\n"
+"}"
+msgstr ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public Timer processScheduledPayment(Payment payment, @Expiration Date "
+"date);\n"
+"}"
+
+#. Tag: programlisting
+#: Jms.xml:55
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"paymentHandler\")\n"
+"public class PaymentHandlerBean implements PaymentHandler\n"
+"{\n"
+"    @In Timer timer;\n"
+"    \n"
+"    public Timer processScheduledPayment(Payment payment, @Expiration Date "
+"date)\n"
+"    {\n"
+"        //do some work!\n"
+"        \n"
+"        return timer; //note that return value is completely ignored\n"
+"    }\n"
+"\n"
+"}"
+msgstr ""
+"@Stateless\n"
+"@Name(\"paymentHandler\")\n"
+"public class PaymentHandlerBean implements PaymentHandler\n"
+"{\n"
+"    @In Timer timer;\n"
+"    \n"
+"    public Timer processScheduledPayment(Payment payment, @Expiration Date "
+"date)\n"
+"    {\n"
+"        //do some work!\n"
+"        \n"
+"        return timer; //note that return value is completely ignored\n"
+"    }\n"
+"\n"
+"}"
+
+#. Tag: programlisting
+#: Jms.xml:56
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String schedulePayment()\n"
+"    {\n"
+"        Timer timer = paymentHandler.processScheduledPayment( new Payment"
+"(bill), bill.getDueDate() );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String schedulePayment()\n"
+"    {\n"
+"        Timer timer = paymentHandler.processScheduledPayment( new Payment"
+"(bill), bill.getDueDate() );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Jms.xml:57
+#, no-c-format
+msgid "Asynchronous methods cannot return any other value to the caller."
+msgstr ""
+"Los métodos asincrónicos no pueden devolver ningún otro valor al cliente."
+
+#. Tag: title
+#: Jms.xml:60
+#, no-c-format
+msgid "Asynchronous events"
+msgstr "Eventos asincrónicos"
+
+#. Tag: para
+#: Jms.xml:61
+#, no-c-format
+msgid ""
+"Component-driven events may also be asynchronous. To raise an event for "
+"asynchronous processing, simply call the <literal>raiseAsynchronousEvent()</"
+"literal> methods of the <literal>Events</literal> class. To schedule a timed "
+"event, call one of the <literal>raiseTimedEvent()</literal> methods. "
+"Components may observe asynchronous events in the usual way, but remember "
+"that only the business process context is propagated to the asynchronous "
+"thread."
+msgstr ""
+"Los elementos dirigidos por componentes también pueden ser asincrónicos. "
+"Para presentar un evento para procesamiento asincrónico simplemente llame el "
+"método <literal>raiseAsynchronousEvent()</literal> de la clase "
+"<literal>Events</literal>. Para programar un evento llame uno de los métodos "
+"<literal>raiseTimedEvent()</literal>. Los componentes pueden observar los "
+"eventos asincrónicos de la manera usual pero recuerde que sólamente el "
+"contexto de procesos empresariales es propagado al hilo asincrónico."
+
+#. Tag: title
+#: Jms.xml:64
+#, no-c-format
+msgid "Messaging in Seam"
+msgstr "Mensajería en Seam"
+
+#. Tag: para
+#: Jms.xml:65
+#, no-c-format
+msgid ""
+"Seam makes it easy to send and receive JMS messages to and from Seam "
+"components."
+msgstr ""
+"Seam facilita enviar y recibir mensajes JMS desde y hacia componentes Seam."
+
+#. Tag: title
+#: Jms.xml:68
+#, no-c-format
+msgid "Configuration"
+msgstr "Configuración"
+
+#. Tag: para
+#: Jms.xml:69
+#, no-c-format
+msgid ""
+"To configure Seam&#39;s infrastructure for sending JMS messages, you need to "
+"tell Seam about any topics and queues you want to send messages to, and also "
+"tell Seam where to find the <literal>QueueConnectionFactory</literal> and/or "
+"<literal>TopicConnectionFactory</literal>."
+msgstr ""
+"Para configurar la infraestructura de Seam para enviar mensajes JMS necesita "
+"decirle a Seam los temas y colas a donde quiere enviar mensajes y también es "
+"necesario decirle a Seam en donde encontrar el "
+"<literal>QueueConnectionFactory</literal> y/o "
+"<literal>TopicConnectionFactory</literal>. "
+
+#. Tag: para
+#: Jms.xml:72
+#, no-c-format
+msgid ""
+"Seam defaults to using <literal>UIL2ConnectionFactory</literal> which is the "
+"usual connection factory for use with JBossMQ. If you are using some other "
+"JMS provider, you need to set one or both of <literal>queueConnection."
+"queueConnectionFactoryJndiName</literal> and <literal>topicConnection."
+"topicConnectionFactoryJndiName</literal> in <literal>seam.properties</"
+"literal>, <literal>web.xml</literal> or <literal>components.xml</literal>."
+msgstr ""
+"Por defecto Seam utiliza <literal>UIL2ConnectionFactory</literal> el cual es "
+"la fábrica de conexiones común que se utiliza con JBossMQ. Si está "
+"utilizando algún otro proveedor JMS necesita configurar uno o ambos: "
+"<literal>queueConnection.queueConnectionFactoryJndiName</literal> y "
+"<literal>topicConnection.topicConnectionFactoryJndiName</literal> en "
+"<literal>seam.properties</literal>, <literal>web.xml</literal> o "
+"<literal>components.xml</literal>."
+
+#. Tag: para
+#: Jms.xml:75
+#, no-c-format
+msgid ""
+"You also need to list topics and queues in <literal>components.xml</literal> "
+"to install Seam managed <literal>TopicPublisher</literal>s and "
+"<literal>QueueSender</literal>s:"
+msgstr ""
+"También necesita enumerar los temas y colas en <literal>components.xml</"
+"literal> para instalar <literal>TopicPublisher</literal> administrado por "
+"Seam y <literal>QueueSender</literal>:"
+
+#. Tag: programlisting
+#: Jms.xml:78
+#, fuzzy, no-c-format
+msgid ""
+"&lt;jms:managed-topic-publisher name=\"stockTickerPublisher\" \n"
+"                   auto-create=\"true  topic-jndi-name=\"topic/"
+"stockTickerTopic\"/&gt;\n"
+"\n"
+"&lt;jms:managed-queue-sender name=\"paymentQueueSender\" auto-create=\"true"
+"\" \n"
+"    queue-jndi-name=\"queue/paymentQueue\"/&gt;"
+msgstr ""
+"&lt;jms:managed-topic-publisher name=\"stockTickerPublisher\" auto-create="
+"\"true  topic-jndi-name=\"topic/stockTickerTopic\"/&gt;\n"
+"\n"
+"&lt;jms:managed-queue-sender name=\"paymentQueueSender\" auto-create=\"true"
+"\" \n"
+"    queue-jndi-name=\"queue/paymentQueue\"/&gt;"
+
+#. Tag: title
+#: Jms.xml:81
+#, no-c-format
+msgid "Using JBoss Messaging"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:82
+#, no-c-format
+msgid ""
+"For using JBoss Messaging which comes with JBoss Enterprise Application "
+"Platform 4.3, you should first set the value of the properties "
+"'<literal>queueConnection.queueConnectionFactoryJndiName</literal>' and "
+"'<literal>topicConnection.topicConnectionFactoryJndiName</literal>' to "
+"'<literal>ConnectionFactory</literal>' which is the default connection "
+"factory for JBoss Messaging. Then set the value of the "
+"'<literal>connectionProvider</literal>' property to '<literal>org.jboss.seam."
+"remoting.messaging.JBossMessagingConnectionProvider</literal>' on the class "
+"component '<literal>org.jboss.seam.remoting.messaging.SubscriptionRegistry</"
+"literal>', which creates topic connections for jboss messaging. "
+"<programlisting>\n"
+"&lt;component name=\"org.jboss.seam.jms.topicConnection\"&gt;\n"
+"        &lt;property name=\"topicConnectionFactoryJndiName\"&gt;\n"
+"        ConnectionFactory\n"
+"        &lt;/property&gt;\n"
+"&lt;/component&gt;\n"
+"&lt;component class=\"org.jboss.seam.remoting.messaging.SubscriptionRegistry"
+"\" installed=\"true\"&gt;\n"
+"        &lt;property name=\"allowedTopics\"&gt;\n"
+"        chatroomTopic\n"
+"        &lt;/property&gt;\n"
+"        &lt;property name=\"connectionProvider\"&gt;\n"
+"        org.jboss.seam.remoting.messaging.JBossMessagingConnectionProvider\n"
+"        &lt;/property&gt;\n"
+"&lt;/component&gt;\n"
+"</programlisting> You also need to update the topics to use JBoss Messaging "
+"as shown in the code fragment below."
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:86
+#, no-c-format
+msgid ""
+"&lt;server&gt;\n"
+"        &lt;mbean code=\"org.jboss.jms.server.destination.TopicService\"\n"
+"               name=\"jboss.messaging.destination:service=Topic,"
+"name=chatroomTopic\"\n"
+"                                            xmbean-dd=\"xmdesc/Topic-xmbean."
+"xml\"&gt;\n"
+"                &lt;depends optional-attribute-name=\"ServerPeer\"&gt;\n"
+"                jboss.messaging:service=ServerPeer\n"
+"                &lt;/depends&gt;\n"
+"                &lt;depends&gt;\n"
+"                jboss.messaging:service=PostOffice\n"
+"                &lt;/depends&gt;\n"
+"                &lt;attribute name=\"SecurityConfig\"&gt;\n"
+"                        &lt;security&gt;\n"
+"                          &lt;role name=\"guest\" read=\"true\" write=\"true"
+"\"/&gt;\n"
+"                          &lt;role name=\"publisher\" read=\"true\" write="
+"\"true\" create=\"false\"/&gt;\n"
+"                          &lt;role name=\"durpublisher\" read=\"true\" write="
+"\"true\" create=\"true\"/&gt;\n"
+"                        &lt;/security&gt;\n"
+"                &lt;/attribute&gt;\n"
+"        &lt;/mbean&gt;\n"
+"&lt;/server&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:90
+#, no-c-format
+msgid "Sending messages"
+msgstr "Envío de mensajes"
+
+#. Tag: para
+#: Jms.xml:91
+#, no-c-format
+msgid ""
+"Now, you can inject a JMS <literal>TopicPublisher</literal> and "
+"<literal>TopicSession</literal> into any component:"
+msgstr ""
+"Ahora puede inyectar un JMS <literal>TopicPublisher</literal> y "
+"<literal>TopicSession</literal> en cualquier componente:"
+
+#. Tag: programlisting
+#: Jms.xml:94
+#, no-c-format
+msgid ""
+"@In \n"
+"private TopicPublisher stockTickerPublisher;   \n"
+"@In \n"
+"private TopicSession topicSession;\n"
+"\n"
+"public void publish(StockPrice price) {\n"
+"      try\n"
+"      {\n"
+"         topicPublisher.publish( topicSession.createObjectMessage(price) );\n"
+"      } \n"
+"      catch (Exception ex)\n"
+"      {\n"
+"         throw new RuntimeException(ex);\n"
+"      } \n"
+"}"
+msgstr ""
+"@In \n"
+"private TopicPublisher stockTickerPublisher;   \n"
+"@In \n"
+"private TopicSession topicSession;\n"
+"\n"
+"public void publish(StockPrice price) {\n"
+"      try\n"
+"      {\n"
+"         topicPublisher.publish( topicSession.createObjectMessage(price) );\n"
+"      } \n"
+"      catch (Exception ex)\n"
+"      {\n"
+"         throw new RuntimeException(ex);\n"
+"      } \n"
+"}"
+
+#. Tag: para
+#: Jms.xml:95
+#, no-c-format
+msgid "Or, for working with a queue:"
+msgstr "O para trabajar con una cola:"
+
+#. Tag: programlisting
+#: Jms.xml:98
+#, no-c-format
+msgid ""
+"@In\n"
+"private QueueSender paymentQueueSender;   \n"
+"@In\n"
+"private QueueSession queueSession;\n"
+"\n"
+"public void publish(Payment payment) {\n"
+"      try\n"
+"      {\n"
+"         paymentQueueSender.send( queueSession.createObjectMessage"
+"(payment) );\n"
+"      } \n"
+"      catch (Exception ex)\n"
+"      {\n"
+"         throw new RuntimeException(ex);\n"
+"      } \n"
+"}"
+msgstr ""
+"@In\n"
+"private QueueSender paymentQueueSender;   \n"
+"@In\n"
+"private QueueSession queueSession;\n"
+"\n"
+"public void publish(Payment payment) {\n"
+"      try\n"
+"      {\n"
+"         paymentQueueSender.send( queueSession.createObjectMessage"
+"(payment) );\n"
+"      } \n"
+"      catch (Exception ex)\n"
+"      {\n"
+"         throw new RuntimeException(ex);\n"
+"      } \n"
+"}"
+
+#. Tag: title
+#: Jms.xml:99
+#, no-c-format
+msgid "Receiving messages using a message-driven bean"
+msgstr "Recepción de mensajes utilizando un bean dirigido por mensajes"
+
+#. Tag: para
+#: Jms.xml:100
+#, no-c-format
+msgid ""
+"You can process messages using any EJB3 message driven bean. Message-driven "
+"beans may even be Seam components, in which case it is possible to inject "
+"other event and application scoped Seam components."
+msgstr ""
+"Puede procesar mensajes utilizando cualquier bean dirigido por mensajes "
+"EJB3. Estos beans dirigidos por mensajes incluso pueden ser componentes Seam "
+"y en tal caso es posible inyectar otro evento además de componentes Seam "
+"incluídos en la aplicación."
+
+#. Tag: title
+#: Jms.xml:103
+#, no-c-format
+msgid "Receiving messages in the client"
+msgstr "Recepción de mensajes en el cliente"
+
+#. Tag: para
+#: Jms.xml:104
+#, no-c-format
+msgid ""
+"Seam Remoting lets you subscribe to a JMS topic from client-side JavaScript. "
+"This is described in the next chapter."
+msgstr ""
+"Seam Remoting le permite suscribirse a un tema JMS desde JavaScript del lado "
+"del cliente."

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Mail.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Mail.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Mail.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1358 @@
+# translation of Mail.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Mail\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 01:04+0000\n"
+"PO-Revision-Date: 2007-10-16 11:09+1000\n"
+"Last-Translator: Angela Garcia\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Mail.xml:6
+#, no-c-format
+msgid "Email"
+msgstr "Email"
+
+#. Tag: para
+#: Mail.xml:7
+#, no-c-format
+msgid ""
+"Seam now includes an optional components for templating and sending emails."
+msgstr ""
+"Ahora Seam incluye un componente opcional para crear plantillas y enviar "
+"correos electrónicos."
+
+#. Tag: para
+#: Mail.xml:10
+#, no-c-format
+msgid ""
+"Email support is provided by <literal>jboss-seam-mail.jar</literal>. This "
+"JAR contains the mail JSF controls, which are used to construct emails, and "
+"the <literal>mailSession</literal> manager component."
+msgstr ""
+"<literal>jboss-seam-mail.jar</literal> proporciona soporte para el correo "
+"electrónico. Este JAR contiene los controles JSF de correo, los cuales se "
+"utilizan para construir correos electrónicos así como el componente "
+"administrador <literal>mailSession</literal>."
+
+#. Tag: para
+#: Mail.xml:13
+#, no-c-format
+msgid ""
+"The examples/mail project contains an example of the email support in "
+"action. It demonstrates proper packaging, and it contains a number of "
+"example that demonstrate the key features currently supported."
+msgstr ""
+"El proyecto de correo/ejemplos contiene un ejemplo del soporte de correo en "
+"acción. Demuestra el empaque de manera correcta y contiene un número de "
+"ejemplos que demuestran las características clave que se soportan "
+"actualmente. "
+
+#. Tag: title
+#: Mail.xml:17
+#, no-c-format
+msgid "Creating a message"
+msgstr "Creación de un mensaje"
+
+#. Tag: para
+#: Mail.xml:18
+#, no-c-format
+msgid ""
+"You don&#39;t need to learn a whole new templating language to use Seam "
+"Mail&mdash;an email is just facelet!"
+msgstr ""
+"No necesita aprender un lenguaje completamente nuevo de creación de "
+"plantillas para poder utilizar Seam Mail&mdash;un correo electrónico es "
+"simplemente un ¡facelet! "
+
+#. Tag: programlisting
+#: Mail.xml:21
+#, no-c-format
+msgid ""
+"&lt;m:message xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"    xmlns:m=\"http://jboss.com/products/seam/mail\"\n"
+"    xmlns:h=\"http://java.sun.com/jsf/html\"&gt;\n"
+"  \n"
+"    &lt;m:from name=\"Peter\" address=\"peter at example.com\" /&gt;\n"
+"    &lt;m:to name=\"#{person.firstname} #{person.lastname}\"&gt;#{person."
+"address}&lt;/m:to&gt;\n"
+"    &lt;m:subject&gt;Try out Seam!&lt;/m:subject&gt;\n"
+"    \n"
+"    &lt;m:body&gt;\n"
+"        &lt;p&gt;&lt;h:outputText value=\"Dear #{person.firstname}\" /&gt;,"
+"&lt;/p&gt;\n"
+"        &lt;p&gt;You can try out Seam by visiting \n"
+"        &lt;a href=\"http://labs.jboss.com/jbossseam\"&gt;http://labs.jboss."
+"com/jbossseam&lt;/a&gt;.&lt;/p&gt;\n"
+"        &lt;p&gt;Regards,&lt;/p&gt;\n"
+"        &lt;p&gt;Peter&lt;/p&gt;\n"
+"    &lt;/m:body&gt;\n"
+"    \n"
+"&lt;/m:message&gt;"
+msgstr ""
+"&lt;m:message xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"    xmlns:m=\"http://jboss.com/products/seam/mail\"\n"
+"    xmlns:h=\"http://java.sun.com/jsf/html\"&gt;\n"
+"  \n"
+"    &lt;m:from name=\"Peter\" address=\"peter at example.com\" /&gt;\n"
+"    &lt;m:to name=\"#{person.firstname} #{person.lastname}\"&gt;#{person."
+"address}&lt;/m:to&gt;\n"
+"    &lt;m:subject&gt;Try out Seam!&lt;/m:subject&gt;\n"
+"    \n"
+"    &lt;m:body&gt;\n"
+"        &lt;p&gt;&lt;h:outputText value=\"Dear #{person.firstname}\" /&gt;,"
+"&lt;/p&gt;\n"
+"        &lt;p&gt;You can try out Seam by visiting \n"
+"        &lt;a href=\"http://labs.jboss.com/jbossseam\"&gt;http://labs.jboss."
+"com/jbossseam&lt;/a&gt;.&lt;/p&gt;\n"
+"        &lt;p&gt;Regards,&lt;/p&gt;\n"
+"        &lt;p&gt;Peter&lt;/p&gt;\n"
+"    &lt;/m:body&gt;\n"
+"    \n"
+"&lt;/m:message&gt;"
+
+#. Tag: para
+#: Mail.xml:22
+#, no-c-format
+msgid ""
+"The <literal>&lt;m:message&gt;</literal> tag wraps the whole message, and "
+"tells Seam to start rendering an email. Inside the <literal>&lt;m:message&gt;"
+"</literal> tag we use an <literal>&lt;m:from&gt;</literal> tag to set who "
+"the message is from, a <literal>&lt;m:to&gt;</literal> tag to specify a "
+"sender (notice how we use EL as we would in a normal facelet), and a "
+"<literal>&lt;m:subject&gt;</literal> tag."
+msgstr ""
+"La etiqueta <literal>&lt;m:message&gt;</literal> envuelve todo el mensaje y "
+"le dice a Seam que empiece a entregar un correo electrónico. Dentro de la "
+"etiqueta <literal>&lt;m:message&gt;</literal> utilizamos una etiqueta "
+"<literal>&lt;m:from&gt;</literal> para configurar de quien es el mensaje, "
+"una etiqueta <literal>&lt;m:to&gt;</literal> para especificar a la persona a "
+"la que se envía el mensaje (observe como utilizamos EL como lo haríamos en "
+"un facelet normal) y una etiqueta <literal>&lt;m:subject&gt;</literal>."
+
+#. Tag: para
+#: Mail.xml:25
+#, no-c-format
+msgid ""
+"The <literal>&lt;m:body&gt;</literal> tag wraps the body of the email. You "
+"can use regular HTML tags inside the body as well as JSF components."
+msgstr ""
+"La etiqueta <literal>&lt;m:body&gt;</literal> envuelve el cuerpo del correo "
+"electrónico. Puede utilizar etiquetas HTML comunes dentro del cuerpo así "
+"como componentes JSF."
+
+#. Tag: para
+#: Mail.xml:28
+#, no-c-format
+msgid ""
+"So, now you have your email template, how do you go about sending it? Well, "
+"at the end of rendering the <literal>m:message</literal> the "
+"<literal>mailSession</literal> is called to send the email, so all you have "
+"to do is ask Seam to render the view:"
+msgstr ""
+"Ahora ya tiene su plantilla para el correo electrónico y ¿cómo lo envía? "
+"Bien, al terminar de entregar el <literal>m:message</literal> se llama a "
+"<literal>mailSession</literal> para enviar el correo electrónico así que "
+"todo lo que tiene que hacer es pedirle a Seam que presente la vista:"
+
+#. Tag: programlisting
+#: Mail.xml:31
+#, no-c-format
+msgid ""
+"@In(create=true)\n"
+"private Renderer renderer;\n"
+"   \n"
+"public void send() {\n"
+"    try {\n"
+"       renderer.render(\"/simple.xhtml\");\n"
+"       facesMessages.add(\"Email sent successfully\");\n"
+"   } \n"
+"   catch (Exception e) {\n"
+"       facesMessages.add(\"Email sending failed: \" + e.getMessage());\n"
+"   }\n"
+"}"
+msgstr ""
+"@In(create=true)\n"
+"private Renderer renderer;\n"
+"   \n"
+"public void send() {\n"
+"    try {\n"
+"       renderer.render(\"/simple.xhtml\");\n"
+"       facesMessages.add(\"Email sent successfully\");\n"
+"   } \n"
+"   catch (Exception e) {\n"
+"       facesMessages.add(\"Email sending failed: \" + e.getMessage());\n"
+"   }\n"
+"}"
+
+#. Tag: para
+#: Mail.xml:32
+#, no-c-format
+msgid ""
+"If, for example, you entered an invalid email address, then an exception "
+"would be thrown, which is caught and then displayed to the user."
+msgstr ""
+"Por ejemplo, si ingresó una dirección de correo electrónico inválida "
+"entonces se presentará una excepción, la cual se atrapa y se le presenta al "
+"usuario. "
+
+#. Tag: title
+#: Mail.xml:36
+#, no-c-format
+msgid "Attachments"
+msgstr "Anexos"
+
+#. Tag: para
+#: Mail.xml:37
+#, no-c-format
+msgid ""
+"Seam makes it easy to attach files to an email. It supports most of the "
+"standard java types used when working with files."
+msgstr ""
+"Seam facilita el anexo de archivos a un correo electrónico. Soporta la "
+"mayoría de los tipos estándares java que se utilizan al trabajar con "
+"archivos."
+
+#. Tag: para
+#: Mail.xml:40
+#, no-c-format
+msgid "If you wanted to email the <literal>jboss-seam-mail.jar</literal>:"
+msgstr ""
+"Si quisiera enviar por correo electrónico el <literal>jboss-seam-mail.jar</"
+"literal>:"
+
+#. Tag: programlisting
+#: Mail.xml:43
+#, no-c-format
+msgid "&lt;m:attachment value=\"/WEB-INF/lib/jboss-seam-mail.jar\"/&gt;"
+msgstr "&lt;m:attachment value=\"/WEB-INF/lib/jboss-seam-mail.jar\"/&gt;"
+
+#. Tag: para
+#: Mail.xml:44
+#, no-c-format
+msgid ""
+"Seam will load the file from the classpath, and attach it to the email. By "
+"default it would be attached as <literal>jboss-seam-mail.jar</literal>; if "
+"you wanted it to have another name you would just add the <literal>fileName</"
+"literal> attribute:"
+msgstr ""
+"Seam cargará el archivo desde la ruta de clase y lo anexará al correo "
+"electrónico. Por defecto será anexado como <literal>jboss-seam-mail.jar</"
+"literal>; si quiere darle otro nombre simplemente añada el atributo "
+"<literal>fileName</literal>:"
+
+#. Tag: programlisting
+#: Mail.xml:47
+#, no-c-format
+msgid ""
+"&lt;m:attachment value=\"/WEB-INF/lib/jboss-seam-mail.jar\" fileName=\"this-"
+"is-so-cool.jar\"/&gt;"
+msgstr ""
+"&lt;m:attachment value=\"/WEB-INF/lib/jboss-seam-mail.jar\" fileName=\"this-"
+"is-so-cool.jar\"/&gt;"
+
+#. Tag: para
+#: Mail.xml:48
+#, no-c-format
+msgid ""
+"You could also attach a <literal>java.io.File</literal>, a <literal>java.net."
+"URL</literal>:"
+msgstr ""
+"También puede adjuntar un <literal>java.io.File</literal>, una <literal>java."
+"net.URL</literal>: "
+
+#. Tag: programlisting
+#: Mail.xml:51
+#, no-c-format
+msgid "&lt;m:attachment value=\"#{numbers}\"/&gt;"
+msgstr "&lt;m:attachment value=\"#{numbers}\"/&gt;"
+
+#. Tag: para
+#: Mail.xml:52
+#, no-c-format
+msgid ""
+"Or a <literal>byte[]</literal> or a <literal>java.io.InputStream</literal>:"
+msgstr ""
+"O un <literal>byte[]</literal> o una <literal>java.io.InputStream</literal>:"
+
+#. Tag: programlisting
+#: Mail.xml:55
+#, no-c-format
+msgid ""
+"&lt;m:attachment value=\"#{person.photo}\" contentType=\"image/png\"/&gt;"
+msgstr ""
+"&lt;m:attachment value=\"#{person.photo}\" contentType=\"image/png\"/&gt;"
+
+#. Tag: para
+#: Mail.xml:56
+#, no-c-format
+msgid ""
+"You&#39;ll notice that for a <literal>byte[]</literal> and a <literal>java."
+"io.InputStream</literal> you need to specify the MIME type of the attachment "
+"(as that information is not carried as part of the file)."
+msgstr ""
+"Observará que para un <literal>byte[]</literal> y un <literal>java.io."
+"InputStream</literal> necesitará especificar el tipo MIME del anexo (ya que "
+"esa información no es parte del archivo)."
+
+#. Tag: para
+#: Mail.xml:59
+#, no-c-format
+msgid ""
+"And it gets even better, you can attach a Seam generated PDF, or any "
+"standard JSF view, just by wrapping a <literal>&lt;m:attachment&gt;</"
+"literal> around the normal tags you would use:"
+msgstr ""
+"Esto mejora aún más ya que puede adjuntar un PDF generado por Seam o "
+"cualquier vista JSF estándar simplemente envolviendo un <literal>&lt;m:"
+"attachment&gt;</literal> alrededor de las etiquetas normales que utilizaría: "
+
+#. Tag: programlisting
+#: Mail.xml:62
+#, no-c-format
+msgid ""
+"&lt;m:attachment fileName=\"tiny.pdf\"&gt;\n"
+"    &lt;p:"
+"document&gt;                                                      \n"
+"        A very tiny "
+"PDF                                                                                                \n"
+"    &lt;/p:document&gt;\n"
+"&lt;/m:attachment&gt;"
+msgstr ""
+"&lt;m:attachment fileName=\"tiny.pdf\"&gt;\n"
+"    &lt;p:"
+"document&gt;                                                      \n"
+"        A very tiny "
+"PDF                                                                                                \n"
+"    &lt;/p:document&gt;\n"
+"&lt;/m:attachment&gt;"
+
+#. Tag: para
+#: Mail.xml:63
+#, no-c-format
+msgid ""
+"If you had a set of files you wanted to attach (for example a set of "
+"pictures loaded from a database) you can just use a <literal>&lt;ui:"
+"repeat&gt;</literal>:"
+msgstr ""
+"Si tiene un grupo de archivos que quiere adjuntar (por ejemplo, un grupo de "
+"fotos cargadas desde una base de datos) simplemente puede utilizar un "
+"<literal>&lt;ui:repeat&gt;</literal>:"
+
+#. Tag: programlisting
+#: Mail.xml:66
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{people}\" var=\"person\"&gt;\n"
+"    &lt;m:attachment value=\"#{person.photo}\" contentType=\"image/jpeg\"\n"
+"    fileName=\"#{person.firstname}_#{person.lastname}.jpg\"/&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+"&lt;ui:repeat value=\"#{people}\" var=\"person\"&gt;\n"
+"    &lt;m:attachment value=\"#{person.photo}\" contentType=\"image/jpeg\"\n"
+"    fileName=\"#{person.firstname}_#{person.lastname}.jpg\"/&gt;\n"
+"&lt;/ui:repeat&gt;"
+
+#. Tag: title
+#: Mail.xml:70
+#, no-c-format
+msgid "HTML/Text alternative part"
+msgstr "Opción HTML/Texto"
+
+#. Tag: para
+#: Mail.xml:71
+#, no-c-format
+msgid ""
+"Whilst most mail readers nowadays support HTML, some don&#39;t, so you can "
+"add a plain text alternative to your email body:"
+msgstr ""
+"Aunque la mayoría de lectores de correo electrónico soportan hoy en día "
+"HTML, algunos otros no lo hacen así que puede añadir una opción de texto al "
+"cuerpo de su correo electrónico: "
+
+#. Tag: programlisting
+#: Mail.xml:74
+#, no-c-format
+msgid ""
+"&lt;m:body&gt;\n"
+"    &lt;f:facet name=\"alternative\"&gt;Sorry, your email reader can&#39;t "
+"show our fancy email, \n"
+"please go to http://labs.jboss.com/jbossseam to explore Seam.&lt;/f:"
+"facet&gt;\n"
+"&lt;/m:body&gt;"
+msgstr ""
+"&lt;m:body&gt;\n"
+"    &lt;f:facet name=\"alternative\"&gt;Sorry, your email reader can&#39;t "
+"show our fancy email, \n"
+"please go to http://labs.jboss.com/jbossseam to explore Seam.&lt;/f:"
+"facet&gt;\n"
+"&lt;/m:body&gt;"
+
+#. Tag: title
+#: Mail.xml:78
+#, no-c-format
+msgid "Multiple recipients"
+msgstr "Recipientes múltiples"
+
+#. Tag: para
+#: Mail.xml:79
+#, no-c-format
+msgid ""
+"Often you&#39;ll want to send an email to a group of recipients (for example "
+"your users). All of the recipient mail tags can be placed inside a "
+"<literal>&lt;ui:repeat&gt;</literal>:"
+msgstr ""
+"Con frecuencia querrá enviar un correo electrónico a un grupo de recipientes "
+"(por ejemplo sus usuarios). Todas las etiquetas del correo de los "
+"recipientes se pueden poner dentro de un <literal>&lt;ui:repeat&gt;</"
+"literal>: "
+
+#. Tag: programlisting
+#: Mail.xml:82
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{allUsers} var=\"user\"&gt;\n"
+"    &lt;m:to name=\"#{user.firstname} #{user.lastname}\" address=\"#{user."
+"emailAddress}\" /&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+"&lt;ui:repeat value=\"#{allUsers} var=\"user\"&gt;\n"
+"    &lt;m:to name=\"#{user.firstname} #{user.lastname}\" address=\"#{user."
+"emailAddress}\" /&gt;\n"
+"&lt;/ui:repeat&gt;"
+
+#. Tag: title
+#: Mail.xml:86
+#, no-c-format
+msgid "Multiple messages"
+msgstr "Mensajes múltiples"
+
+#. Tag: para
+#: Mail.xml:87
+#, no-c-format
+msgid ""
+"Sometimes, however, you need to send a slightly different message to each "
+"recipient (e.g. a password reset). The best way to do this is to place the "
+"whole message inside a <literal>&lt;ui:repeat&gt;</literal>:"
+msgstr ""
+"Sin embargo, a veces necesita enviar un mensaje un poco diferente a cada "
+"recipiente (por ejemplo, una nueva contraseña). La mejor manera de hacer "
+"esto es poniendo todo el mensaje dentro de un <literal>&lt;ui:repeat&gt;</"
+"literal>:"
+
+#. Tag: programlisting
+#: Mail.xml:90
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{people}\" var=\"p\"&gt;\n"
+"    &lt;m:message&gt;\n"
+"        &lt;m:from name=\"#{person.firstname} #{person.lastname}\"&gt;#"
+"{person.address}&lt;/m:from&gt;\n"
+"        &lt;m:to name=\"#{p.firstname}\"&gt;#{p.address}&lt;/m:to&gt;\n"
+"            ...\n"
+"    &lt;/m:message&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+"&lt;ui:repeat value=\"#{people}\" var=\"p\"&gt;\n"
+"    &lt;m:message&gt;\n"
+"        &lt;m:from name=\"#{person.firstname} #{person.lastname}\"&gt;#"
+"{person.address}&lt;/m:from&gt;\n"
+"        &lt;m:to name=\"#{p.firstname}\"&gt;#{p.address}&lt;/m:to&gt;\n"
+"            ...\n"
+"    &lt;/m:message&gt;\n"
+"&lt;/ui:repeat&gt;"
+
+#. Tag: title
+#: Mail.xml:94
+#, no-c-format
+msgid "Templating"
+msgstr "Plantillas"
+
+#. Tag: para
+#: Mail.xml:95
+#, no-c-format
+msgid ""
+"The mail templating example shows that facelets templating Just Works with "
+"the Seam mail tags."
+msgstr ""
+"El ejemplo para realizar plantillas de correo muestra que las plantillas "
+"facelets simplemente funcionan con las etiquetas de correo Seam."
+
+#. Tag: para
+#: Mail.xml:98
+#, no-c-format
+msgid "Our <literal>template.xhtml</literal> contains:"
+msgstr "Nuestro <literal>template.xhtml</literal> contiene:"
+
+#. Tag: programlisting
+#: Mail.xml:101
+#, no-c-format
+msgid ""
+"&lt;m:message&gt;\n"
+"   &lt;m:from name=\"Seam\" address=\"do-not-reply at jboss.com\" /&gt;\n"
+"   &lt;m:to name=\"#{person.firstname} #{person.lastname}\"&gt;#{person."
+"address}&lt;/m:to&gt;\n"
+"   &lt;m:subject&gt;#{subject}&lt;/m:subject&gt;\n"
+"   &lt;m:body&gt;\n"
+"       &lt;html&gt;\n"
+"           &lt;body&gt;\n"
+"               &lt;ui:insert name=\"body\"&gt;This is the default body, "
+"specified by the template.\n"
+"                                   &lt;/ui:insert&gt;\n"
+"           &lt;/body&gt;\n"
+"       &lt;/html&gt;\n"
+"   &lt;/m:body&gt;\n"
+"&lt;/m:message&gt;"
+msgstr ""
+"&lt;m:message&gt;\n"
+"   &lt;m:from name=\"Seam\" address=\"do-not-reply at jboss.com\" /&gt;\n"
+"   &lt;m:to name=\"#{person.firstname} #{person.lastname}\"&gt;#{person."
+"address}&lt;/m:to&gt;\n"
+"   &lt;m:subject&gt;#{subject}&lt;/m:subject&gt;\n"
+"   &lt;m:body&gt;\n"
+"       &lt;html&gt;\n"
+"           &lt;body&gt;\n"
+"               &lt;ui:insert name=\"body\"&gt;This is the default body, "
+"specified by the template.\n"
+"                                   &lt;/ui:insert&gt;\n"
+"           &lt;/body&gt;\n"
+"       &lt;/html&gt;\n"
+"   &lt;/m:body&gt;\n"
+"&lt;/m:message&gt;"
+
+#. Tag: para
+#: Mail.xml:102
+#, no-c-format
+msgid "Our <literal>templating.xhtml</literal> contains:"
+msgstr "Nuestro <literal>templating.xhtml</literal> contiene:"
+
+#. Tag: programlisting
+#: Mail.xml:105
+#, no-c-format
+msgid ""
+"&lt;ui:param name=\"subject\" value=\"Templating with Seam Mail\"/&gt;\n"
+"&lt;ui:define name=\"body\"&gt;\n"
+"    &lt;p&gt;This example demonstrates that you can easily use &lt;i&gt;"
+"facelets templating&lt;/i&gt; in email!&lt;/p&gt;\n"
+"&lt;/ui:define&gt;"
+msgstr ""
+"&lt;ui:param name=\"subject\" value=\"Templating with Seam Mail\"/&gt;\n"
+"&lt;ui:define name=\"body\"&gt;\n"
+"    &lt;p&gt;This example demonstrates that you can easily use &lt;i&gt;"
+"facelets templating&lt;/i&gt; in email!&lt;/p&gt;\n"
+"&lt;/ui:define&gt;"
+
+#. Tag: title
+#: Mail.xml:109
+#, no-c-format
+msgid "Internationalisation"
+msgstr "Internacionalización"
+
+#. Tag: para
+#: Mail.xml:110
+#, no-c-format
+msgid ""
+"Seam supports sending internationalised messages. By default, the encoding "
+"provided by JSF is used, but this can be overridden on the template:"
+msgstr ""
+"Seam soporta el envio de mensajes internacionalizados. Por defecto se "
+"utiliza el código que JSF proporciona pero esto se puede sobrescribir en la "
+"plantilla:"
+
+#. Tag: programlisting
+#: Mail.xml:113
+#, no-c-format
+msgid ""
+"&lt;m:message charset=\"UTF-8\"&gt;\n"
+"   ...\n"
+"&lt;/m:message&gt;"
+msgstr ""
+"&lt;m:message charset=\"UTF-8\"&gt;\n"
+"   ...\n"
+"&lt;/m:message&gt;"
+
+#. Tag: para
+#: Mail.xml:114
+#, no-c-format
+msgid ""
+"The body, subject and recipient (and from) name will be encoded. You&#39;ll "
+"need to make sure facelets uses the correct charset for parsing your pages "
+"by setting encoding of the template:"
+msgstr ""
+"El cuerpo, el tema y el recipiente (y el 'de') serán codificados. Necesitará "
+"asegurarse de que facelets utiliza el grupo de caracteres correcto para "
+"analizar su páginas sintácticamente configurando la codificación de la "
+"plantilla:"
+
+#. Tag: programlisting
+#: Mail.xml:117
+#, no-c-format
+msgid "&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;"
+msgstr "&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;"
+
+#. Tag: title
+#: Mail.xml:121
+#, no-c-format
+msgid "Other Headers"
+msgstr "Otros encabezados"
+
+#. Tag: para
+#: Mail.xml:122
+#, no-c-format
+msgid ""
+"Sometimes you&#39;ll want to add other headers to your email. Seam provides "
+"support for some (see <xref linkend=\"Seam_Reference_Guide-Email-Tags\"/>). "
+"For example, we can set the importance of the email, and ask for a read "
+"receipt:"
+msgstr ""
+"A veces necesitará añadir otros encabezados a su correo electrónico. Seam "
+"proporciona soporte para algunos (consulte la <xref linkend="
+"\"Seam_Reference_Guide-Email-Tags\"/>). Por ejemplo, podemos configurar la "
+"importancia del correo electrónico y pedirle un recibo de lectura: "
+
+#. Tag: programlisting
+#: Mail.xml:125
+#, no-c-format
+msgid ""
+"&lt;m:message xmlns:m=\"http://jboss.com/products/seam/mail\"\n"
+"           importance=\"low\"\n"
+"           requestReadReceipt=\"true\"/&gt;"
+msgstr ""
+"&lt;m:message xmlns:m=\"http://jboss.com/products/seam/mail\"\n"
+"           importance=\"low\"\n"
+"           requestReadReceipt=\"true\"/&gt;"
+
+#. Tag: para
+#: Mail.xml:126
+#, no-c-format
+msgid ""
+"Otherise you can add any header to the message using the <literal>&lt;m:"
+"header&gt;</literal> tag:"
+msgstr ""
+"De otra manera, le puede añadir el encabezado al mensaje utilizando la "
+"etiqueta <literal>&lt;m:header&gt;</literal>:"
+
+#. Tag: programlisting
+#: Mail.xml:129
+#, no-c-format
+msgid "&lt;m:header name=\"X-Sent-From\" value=\"JBoss Seam\"/&gt;"
+msgstr "&lt;m:header name=\"X-Sent-From\" value=\"JBoss Seam\"/&gt;"
+
+#. Tag: title
+#: Mail.xml:135
+#, no-c-format
+msgid "Receiving emails"
+msgstr "Recepción de correos electrónicos:"
+
+#. Tag: para
+#: Mail.xml:136
+#, no-c-format
+msgid ""
+"If you are using EJB then you can use a MDB (Message Driven Bean) to receive "
+"email. Seam comes with an improved version of <literal>mail-ra.rar</literal> "
+"as distributed in JBoss AS; until the improvements make there way into a "
+"released version of JBoss AS, replacing the default <literal>rar</literal> "
+"with the one distributed with Seam is recommended."
+msgstr ""
+"Si está utilizando EJB entonces puede utilizar un MDB (Message Driven Bean) "
+"para recibir correos electrónicos. Seam viene junto con una versión mejorada "
+"de <literal>mail-ra.rar</literal> tal como se distribuye en JBoss AS; se "
+"recomienda que hasta el momento en que las mejoras lleguen con una versión "
+"actualizada de JBoss AS, debería reemplazar el <literal>rar</literal> "
+"predeterminado con el que se distribuye con Seam."
+
+#. Tag: para
+#: Mail.xml:139
+#, no-c-format
+msgid "You can configure it like this:"
+msgstr "Lo puede configurar así:"
+
+#. Tag: programlisting
+#: Mail.xml:142
+#, no-c-format
+msgid ""
+"@MessageDriven(activationConfig={\n"
+"         @ActivationConfigProperty(propertyName=\"mailServer\", "
+"propertyValue=\"localhost\"),\n"
+"         @ActivationConfigProperty(propertyName=\"mailFolder\", "
+"propertyValue=\"INBOX\"),\n"
+"         @ActivationConfigProperty(propertyName=\"storeProtocol\", "
+"propertyValue=\"pop3\"),\n"
+"         @ActivationConfigProperty(propertyName=\"userName\", propertyValue="
+"\"seam\"),\n"
+"         @ActivationConfigProperty(propertyName=\"password\", propertyValue="
+"\"seam\")\n"
+"})\n"
+"@ResourceAdapter(\"mail-ra.rar\")\n"
+"@Name(\"mailListener\")\n"
+"public class MailListenerMDB implements MailListener {\n"
+"\n"
+"   @In(create=true)\n"
+"   private OrderProcessor orderProcessor;\n"
+"\n"
+"   public void onMessage(Message message) {\n"
+"      // Process the message\n"
+"      orderProcessor.process(message.getSubject());\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+"@MessageDriven(activationConfig={\n"
+"         @ActivationConfigProperty(propertyName=\"mailServer\", "
+"propertyValue=\"localhost\"),\n"
+"         @ActivationConfigProperty(propertyName=\"mailFolder\", "
+"propertyValue=\"INBOX\"),\n"
+"         @ActivationConfigProperty(propertyName=\"storeProtocol\", "
+"propertyValue=\"pop3\"),\n"
+"         @ActivationConfigProperty(propertyName=\"userName\", propertyValue="
+"\"seam\"),\n"
+"         @ActivationConfigProperty(propertyName=\"password\", propertyValue="
+"\"seam\")\n"
+"})\n"
+"@ResourceAdapter(\"mail-ra.rar\")\n"
+"@Name(\"mailListener\")\n"
+"public class MailListenerMDB implements MailListener {\n"
+"\n"
+"   @In(create=true)\n"
+"   private OrderProcessor orderProcessor;\n"
+"\n"
+"   public void onMessage(Message message) {\n"
+"      // Process the message\n"
+"      orderProcessor.process(message.getSubject());\n"
+"   }\n"
+"   \n"
+"}"
+
+#. Tag: para
+#: Mail.xml:143
+#, no-c-format
+msgid ""
+"Each message received will cause <literal>onMessage(Message message)</"
+"literal> to be called. Most seam annotations will work inside a MDB but you "
+"musn&#39;t access the persistence context."
+msgstr ""
+"Cada mensaje recibido hará que se llame a <literal>onMessage(Message message)"
+"</literal>. La mayoría de las anotaciones seam funcionarán dentro de un MDB "
+"pero no debe acceder el contexto de persistencia."
+
+#. Tag: para
+#: Mail.xml:146
+#, no-c-format
+msgid ""
+"You can find more information on the default <literal>mail-ra.rar</literal> "
+"at <ulink url=\"http://wiki.jboss.org/wiki/Wiki.jsp?page=InboundJavaMail"
+"\">http://wiki.jboss.org/wiki/Wiki.jsp?page=InboundJavaMail</ulink>. The "
+"version distributed with Seam also includes a <literal>debug</literal> "
+"property to enable JavaMail debugging, a <literal>flush</literal> property "
+"(by default true) to disable flushing a <literal>POP3</literal> mailbox "
+"after successfullying delivering a message to your MDB and a <literal>port</"
+"literal> property to override the default TCP port. Beware that the api for "
+"this may be altered as changes make there way into JBoss AS."
+msgstr ""
+"Puede encontrar más información sobre el <literal>mail-ra.rar</literal> "
+"predeterminado en <ulink url=\"http://wiki.jboss.org/wiki/Wiki.jsp?"
+"page=InboundJavaMail\">http://wiki.jboss.org/wiki/Wiki.jsp?"
+"page=InboundJavaMail</ulink>. La versión distribuida con Seam también "
+"incluye una propiedad <literal>debug</literal> para habilitar la depuración "
+"de JavaMail, una propiedad <literal>flush</literal> (por defecto es "
+"verdadera) para deshabilitar el vaciado de una bandeja de correo "
+"<literal>POP3</literal> después de entregar de manera exitosa un mensaje a "
+"su MDB y una propiedad <literal>port</literal> para sobrescribir el puerto "
+"TCp predeterminado. Tenga en cuenta que el api para esto se puede alterar "
+"cuando los cambios tengan lugar en JBoss AS."
+
+#. Tag: para
+#: Mail.xml:149
+#, no-c-format
+msgid ""
+"If you aren&#39;t using JBoss AS you can still use <literal>mail-ra.rar</"
+"literal> (included with Seam in the mail directory), or you may find your "
+"application server includes a similar adapter."
+msgstr ""
+"Si no está utilizando JBoss AS aún puede utilizar <literal>mail-ra.rar</"
+"literal> (incluído con Seam en el directorio de correo) o puede que su "
+"servidor de aplicaciones incluya un adaptador similar. "
+
+#. Tag: title
+#: Mail.xml:155
+#, no-c-format
+msgid "Configuration"
+msgstr "Configuración"
+
+#. Tag: para
+#: Mail.xml:156
+#, no-c-format
+msgid ""
+"To include Email support in your application, include <literal>jboss-seam-"
+"mail.jar</literal> in your WEB-INF/lib directory. If you are using JBoss AS "
+"there is no further configuration needed to use Seam&#39;s email support. "
+"Otherwise you need to make sure you have the JavaMail API, an implementation "
+"of the JavaMail API present (the API and impl used in JBoss AS are "
+"distributed with seam as <literal>lib/mail.jar</literal>), and a copy of the "
+"Java Activation Framework (distributed with seam as <literal>lib/activation."
+"jar</literal>."
+msgstr ""
+"Para incluir soporte de correo electrónico en su aplicación incluya "
+"<literal>jboss-seam-mail.jar</literal> en su directorio WEB-INF/lib. Si está "
+"utilizando JBoss AS no se necesita más configuraciones para poder utilizar "
+"el soporte de correo eletrónico de Seam. De otra manera necesitará "
+"asegurarse de que cuenta con el API de JavaMail, una implementación del API "
+"de JavaMail presente (la implementación y el API utilizado en JBoss AS se "
+"distribuyen con seam como <literal>lib/mail.jar</literal>) y una copia del "
+"Java Activation Framework (distribuido con seam como <literal>lib/activation."
+"jar</literal>). "
+
+#. Tag: para
+#: Mail.xml:159
+#, no-c-format
+msgid ""
+"The Seam Email module requires the use of Facelets as the view technology. "
+"Future versions of the library may also support the use of JSP. "
+"Additionally, it requires the use of the seam-ui package."
+msgstr ""
+"El módulo de Seam Email requiere el uso de Facelets como tecnología de "
+"vista. Las versiones futuras de la biblioteca también pueden soportar el uso "
+"de JSP. Además requiere el uso del paquete seam-ui."
+
+#. Tag: para
+#: Mail.xml:162
+#, no-c-format
+msgid ""
+"The <literal>mailSession</literal> component uses JavaMail to talk to a &#39;"
+"real&#39; SMTP server."
+msgstr ""
+"El componente <literal>mailSession</literal> usa JavaMail para hablarle al "
+"servidor SMTP 'real'. "
+
+#. Tag: literal
+#: Mail.xml:166
+#, no-c-format
+msgid "mailSession"
+msgstr "mailSession"
+
+#. Tag: para
+#: Mail.xml:167
+#, no-c-format
+msgid ""
+"A JavaMail Session may be available via a JNDI lookup if you are working in "
+"an JEE environment or you can use a Seam configured Session."
+msgstr ""
+"Un JavaMail Session se puede encontrar disponible por medio de una búsqueda "
+"JNDI si está trabajando en un entorno JEE o puede utilizar una sesión "
+"configurada por Seam."
+
+#. Tag: para
+#: Mail.xml:170
+#, no-c-format
+msgid ""
+"The mailSession component&#39;s properties are described in more detail in "
+"<xref linkend=\"Seam_Reference_Guide-Built_in_Seam_components-"
+"Mail_related_components\"/>."
+msgstr ""
+"Las propiedades del componente mailSession se describen en más detalle en la "
+"<xref linkend=\"Seam_Reference_Guide-Built_in_Seam_components-"
+"Mail_related_components\"/>."
+
+#. Tag: title
+#: Mail.xml:174
+#, no-c-format
+msgid "JNDI lookup in JBoss AS"
+msgstr "Búsqueda JNDI en JBoss AS"
+
+#. Tag: para
+#: Mail.xml:175
+#, no-c-format
+msgid ""
+"The JBossAS <literal>deploy/mail-service.xml</literal> configures a JavaMail "
+"session binding into JNDI. The default service configuration will need "
+"altering for your network. <ulink url=\"http://wiki.jboss.org/wiki/Wiki.jsp?"
+"page=JavaMail\">http://wiki.jboss.org/wiki/Wiki.jsp?page=JavaMail</ulink> "
+"describes the service in more detail."
+msgstr ""
+"El <literal>deploy/mail-service.xml</literal> de JBossAS configura una "
+"sesión JavaMail vinculándola a JNDI. Será necesario alterar la configuración "
+"predeterminada del servicio para su red de trabajo. <ulink url=\"http://wiki."
+"jboss.org/wiki/Wiki.jsp?page=JavaMail\">http://wiki.jboss.org/wiki/Wiki.jsp?"
+"page=JavaMail</ulink> describe el servicio en más detalle. "
+
+#. Tag: programlisting
+#: Mail.xml:178
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"        xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"        xmlns:mail=\"http://jboss.com/products/seam/mail\"&gt;\n"
+"        \n"
+"    &lt;mail:mail-session session-jndi-name=\"java:/Mail\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"        xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"        xmlns:mail=\"http://jboss.com/products/seam/mail\"&gt;\n"
+"        \n"
+"    &lt;mail:mail-session session-jndi-name=\"java:/Mail\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Mail.xml:179
+#, no-c-format
+msgid ""
+"Here we tell Seam to get the mail session bound to <literal>java:/Mail</"
+"literal> from JNDI."
+msgstr ""
+"Aquí le decimos a Seam que vincule la sesión de correo a <literal>java:/"
+"Mail</literal> desde JNDI."
+
+#. Tag: title
+#: Mail.xml:185
+#, no-c-format
+msgid "Seam configured Session"
+msgstr "Sesión configurada por Seam"
+
+#. Tag: para
+#: Mail.xml:186
+#, no-c-format
+msgid ""
+"A mail session can be configured via <literal>components.xml</literal>. Here "
+"we tell Seam to use <literal>smtp.example.com</literal> as the smtp server,"
+msgstr ""
+"Una sesión de correo se puede configurar por medio de <literal>components."
+"xml</literal>. Aquí le decimos a Seam que utilice <literal>smtp.example.com</"
+"literal> como el servidor smtp. "
+
+#. Tag: programlisting
+#: Mail.xml:189
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"        xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"        xmlns:mail=\"http://jboss.com/products/seam/mail\"&gt;\n"
+"        \n"
+"    &lt;mail:mail-session host=\"smtp.example.com\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"        xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"        xmlns:mail=\"http://jboss.com/products/seam/mail\"&gt;\n"
+"        \n"
+"    &lt;mail:mail-session host=\"smtp.example.com\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+
+#. Tag: title
+#: Mail.xml:197
+#, no-c-format
+msgid "Tags"
+msgstr "Etiquetas"
+
+#. Tag: para
+#: Mail.xml:198
+#, no-c-format
+msgid ""
+"Emails are generated using tags in the <literal>http://jboss.com/products/"
+"seam/mail</literal> namespace. Documents should always have the "
+"<literal>message</literal> tag at the root of the message. The message tag "
+"prepares Seam to generate an email."
+msgstr ""
+"Los correos electrónicos se generan utilizando etiquetas en el nombre de "
+"espacio <literal>http://jboss.com/products/seam/mail</literal>. Los "
+"documentos siempre deben tener la etiqueta <literal>message</literal> en la "
+"raíz del mensaje. La etiqueta del mensaje prepara a Seam para generar un "
+"correo electrónico."
+
+#. Tag: para
+#: Mail.xml:201
+#, no-c-format
+msgid ""
+"The standard templating tags of facelets can be used as normal. Inside the "
+"body you can use any JSF tag which doesn&#39;t require access to external "
+"resources (stylesheets, javascript)."
+msgstr ""
+"Las etiquetas de las plantillas estándares de facelets se pueden utilizar de "
+"manera normal. Dentro del cuerpo puede utilizar cualquier etiqueta JSF, la "
+"cual no requiere acceso a recursos externos (hojas de estilo, javascript)."
+
+#. Tag: term
+#: Mail.xml:206
+#, no-c-format
+msgid "&lt;m:message&gt;"
+msgstr "&lt;m:message&gt;"
+
+#. Tag: para
+#: Mail.xml:208
+#, no-c-format
+msgid "Root tag of a mail message"
+msgstr "Etiqueta raíz de un mensaje de correo"
+
+#. Tag: para
+#: Mail.xml:213
+#, no-c-format
+msgid ""
+"<literal>importance</literal> &mdash; low, normal or high. By default "
+"normal, this sets the importance of the mail message."
+msgstr ""
+"<literal>importance</literal> &mdash;baja, normal o alta. Por defecto es "
+"normal, esto configura la importancia del mensaje de correo."
+
+#. Tag: para
+#: Mail.xml:218
+#, no-c-format
+msgid ""
+"<literal>precedence</literal> &mdash; sets the precedence of the message (e."
+"g. bulk)."
+msgstr ""
+"<literal>precedence</literal> &mdash; configura la precedencia del mensaje "
+"(por ejemplo, el correo no deseado)."
+
+#. Tag: para
+#: Mail.xml:223
+#, no-c-format
+msgid ""
+"<literal>requestReadReceipt</literal> &mdash; by default false, if set, a "
+"read receipt will be request will be added, with the read receipt being sent "
+"to the <literal>From:</literal> address."
+msgstr ""
+"<literal>requestReadReceipt</literal> &mdash; por defecto es falso, si se "
+"configura se añadirá una petición para leer el recibo y este recibo se "
+"enviará a la dirección <literal>From:</literal>."
+
+#. Tag: para
+#: Mail.xml:228
+#, no-c-format
+msgid ""
+"<literal>urlBase</literal> &mdash; If set, the value is prepended to the "
+"<literal>requestContextPath</literal> allowing you to use components such as "
+"<literal>&lt;h:graphicImage&gt;</literal> in your emails."
+msgstr ""
+"<literal>urlBase</literal> &mdash; Si se configura el valor es añadido al "
+"<literal>requestContextPath</literal> permitiéndole utilizar componentes "
+"como <literal>&lt;h:graphicImage&gt;</literal> en sus correos electrónicos."
+
+#. Tag: term
+#: Mail.xml:236
+#, no-c-format
+msgid "&lt;m:from&gt;"
+msgstr "&lt;m:from&gt;"
+
+#. Tag: para
+#: Mail.xml:238
+#, no-c-format
+msgid ""
+"Set&#39;s the From: address for the email. You can only have one of these "
+"per email."
+msgstr ""
+"Configura el From: la dirección para el correo electrónico. Puede tener sólo "
+"uno de estos por correo electrónico. "
+
+#. Tag: para
+#: Mail.xml:243
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the name the email should come from."
+msgstr ""
+"<literal>name</literal> &mdash; el nombre desde donde debe provenir el "
+"correo electrónico."
+
+#. Tag: para
+#: Mail.xml:248 Mail.xml:263
+#, no-c-format
+msgid ""
+"<literal>address</literal> &mdash; the email address the email should come "
+"from."
+msgstr ""
+"<literal>address</literal> &mdash; la dirección de correo electrónico desde "
+"donde debe provenir el correo electrónico."
+
+#. Tag: term
+#: Mail.xml:256
+#, no-c-format
+msgid "&lt;m:replyTo&gt;"
+msgstr "&lt;m:replyTo&gt;"
+
+#. Tag: para
+#: Mail.xml:258
+#, no-c-format
+msgid ""
+"Set&#39;s the Reply-to: address for the email. You can only have one of "
+"these per email."
+msgstr ""
+"Configura Reply-to: la dirección para el correo electrónico. Solamente puede "
+"tener uno de estos por cada correo electrónico. "
+
+#. Tag: term
+#: Mail.xml:271
+#, no-c-format
+msgid "&lt;m:to&gt;"
+msgstr "&lt;m:to&gt;"
+
+#. Tag: para
+#: Mail.xml:273
+#, no-c-format
+msgid ""
+"Add a recipient to the email. Use multiple &lt;m:to&gt; tags for multiple "
+"recipients. This tag can be safely placed inside a repeat tag such as &lt;ui:"
+"repeat&gt;."
+msgstr ""
+"Añada un recipiente al correo electrónico. Utilice múltiples etiquetas &lt;m:"
+"to&gt; para recipientes múltiples. Esta etiqueta se puede poner de manera "
+"segura dentro de una etiqueta de repetición como &lt;ui:repeat&gt;."
+
+#. Tag: para
+#: Mail.xml:278 Mail.xml:298 Mail.xml:318
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the name of the recipient."
+msgstr "<literal>name</literal> &mdash; el nombre del recipiente."
+
+#. Tag: para
+#: Mail.xml:283 Mail.xml:303 Mail.xml:323
+#, no-c-format
+msgid "<literal>address</literal> &mdash; the email address of the recipient."
+msgstr ""
+"<literal>address</literal> &mdash; la dirección de correo electrónico del "
+"recipiente."
+
+#. Tag: term
+#: Mail.xml:291
+#, no-c-format
+msgid "&lt;m:cc&gt;"
+msgstr "&lt;m:cc&gt;"
+
+#. Tag: para
+#: Mail.xml:293
+#, no-c-format
+msgid ""
+"Add a cc recipient to the email. Use multiple &lt;m:cc&gt; tags for multiple "
+"ccs. This tag can be safely placed inside a repeat tag such as &lt;ui:"
+"repeat&gt;."
+msgstr ""
+"Añade un recipiente cc al correo. Utilice múltiples etiquetas &lt;m:cc&gt; "
+"para múltiples ccs. Esta etiqueta se puede poner dentro de una etiqueta de "
+"repetición de manera segura como &lt;ui:repeat&gt;."
+
+#. Tag: term
+#: Mail.xml:311
+#, no-c-format
+msgid "&lt;m:bcc&gt;"
+msgstr "&lt;m:bcc&gt;"
+
+#. Tag: para
+#: Mail.xml:313
+#, no-c-format
+msgid ""
+"Add a bcc recipient to the email. Use multiple &lt;m:bcc&gt; tags for "
+"multiple bccs. This tag can be safely placed inside a repeat tag such as &lt;"
+"ui:repeat&gt;."
+msgstr ""
+"Añade un recipiente bcc al correo. Utilice múltiples etiquetas &lt;m:bcc&gt; "
+"para múltiples bccs. Esta etiqueta se puede poner dentro de una etiqueta de "
+"repetición de manera segura tal como &lt;ui:repeat&gt;."
+
+#. Tag: term
+#: Mail.xml:331
+#, no-c-format
+msgid "&lt;m:header&gt;"
+msgstr "&lt;m:header&gt;"
+
+#. Tag: para
+#: Mail.xml:333
+#, no-c-format
+msgid ""
+"Add a header to the email (e.g. <literal>X-Sent-From: JBoss Seam</literal>"
+msgstr ""
+"Añade un encabezado al correo (por ejemplo, <literal>X-Sent-From: JBoss "
+"Seam</literal>)"
+
+#. Tag: para
+#: Mail.xml:338
+#, no-c-format
+msgid ""
+"<literal>name</literal> &mdash; The name of the header to add (e.g. "
+"<literal>X-Sent-From</literal>)."
+msgstr ""
+"<literal>name</literal> &mdash; El nombre del encabezado a añadir (por "
+"ejemplo, <literal>X-Sent-From</literal>)."
+
+#. Tag: para
+#: Mail.xml:343
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; The value of the header to add (e.g. "
+"<literal>JBoss Seam</literal>)."
+msgstr ""
+"<literal>value</literal> &mdash; El valor del encabezado a añadir (por "
+"ejemplo, <literal>JBoss Seam</literal>)."
+
+#. Tag: term
+#: Mail.xml:351
+#, no-c-format
+msgid "&lt;m:attachment&gt;"
+msgstr "&lt;m:attachment&gt;"
+
+#. Tag: para
+#: Mail.xml:353
+#, no-c-format
+msgid "Add an attachment to the email."
+msgstr "Añade un anexo al correo."
+
+#. Tag: para
+#: Mail.xml:358
+#, no-c-format
+msgid "<literal>value</literal> &mdash; The file to attach:"
+msgstr "<literal>value</literal> &mdash; El archivo a adjuntar:"
+
+#. Tag: para
+#: Mail.xml:363
+#, no-c-format
+msgid ""
+"<literal>String</literal> &mdash; A <literal>String</literal> is interpreted "
+"as a path to file within the classpath"
+msgstr ""
+"<literal>String</literal> &mdash; Un <literal>String</literal> se interpreta "
+"como una ruta a un archivo dentro de la ruta de clase."
+
+#. Tag: para
+#: Mail.xml:368
+#, no-c-format
+msgid ""
+"<literal>java.io.File</literal> &mdash; An EL expression can reference a "
+"<literal>File</literal> object"
+msgstr ""
+"<literal>java.io.File</literal> &mdash; Una expresión EL puede hacer "
+"referencia a un objeto <literal>File</literal>"
+
+#. Tag: para
+#: Mail.xml:373
+#, no-c-format
+msgid ""
+"<literal>java.net.URL</literal> &mdash; An EL expression can reference a "
+"<literal>URL</literal> object"
+msgstr ""
+"<literal>java.net.URL</literal> &mdash; Una expresión EL puede hacer "
+"referencia a un objeto<literal>URL</literal>"
+
+#. Tag: para
+#: Mail.xml:378
+#, no-c-format
+msgid ""
+"<literal>java.io.InputStream</literal> &mdash; An EL expression can "
+"reference an <literal>InputStream</literal>. In this case both a "
+"<literal>fileName</literal> and a <literal>contentType</literal> must be "
+"specified."
+msgstr ""
+"<literal>java.io.InputStream</literal> &mdash; Una expresión EL puede hacer "
+"referencia a un <literal>InputStream</literal>. En este caso se deben "
+"especificar tanto un <literal>fileName</literal> como un "
+"<literal>contentType</literal>."
+
+#. Tag: para
+#: Mail.xml:383
+#, no-c-format
+msgid ""
+"<literal>byte[]</literal> &mdash; An EL expression can reference an "
+"<literal>byte[]</literal>. In this case both a <literal>fileName</literal> "
+"and a <literal>contentType</literal> must be specified."
+msgstr ""
+"<literal>byte[]</literal> &mdash; Una expresión EL puede hacer referencia a "
+"un <literal>byte[]</literal>. En este caso se deben especificar tanto un "
+"<literal>fileName</literal> como un <literal>contentType</literal>."
+
+#. Tag: para
+#: Mail.xml:388
+#, no-c-format
+msgid "If the value attribute is ommitted:"
+msgstr "Si el atributo del valor se omite:"
+
+#. Tag: para
+#: Mail.xml:393
+#, no-c-format
+msgid ""
+"If this tag contains a <literal>&lt;p:document&gt;</literal> tag, the "
+"document described will be generated and attached to the email. A "
+"<literal>fileName</literal> should be specfied."
+msgstr ""
+"Si esta etiqueta contiene una etiqueta <literal>&lt;p:document&gt;</"
+"literal>, el documento descrito será generado y anexado al correo. Se debe "
+"especificar un <literal>fileName</literal>."
+
+#. Tag: para
+#: Mail.xml:398
+#, no-c-format
+msgid ""
+"If this tag contains other JSF tags a HTML document will be generated from "
+"them and attached to the email. A <literal>fileName</literal> should be "
+"specfied."
+msgstr ""
+"Si esta etiqueta contiene otras etiquetas JSF se generará un documento HTML "
+"y se anexará al correo. Se debe especificar un <literal>fileName</literal>."
+
+#. Tag: para
+#: Mail.xml:405
+#, no-c-format
+msgid ""
+"<literal>fileName</literal> &mdash; Specify the file name to use for the "
+"attached file."
+msgstr ""
+"<literal>fileName</literal> &mdash; Especifica el nombre del archivo a "
+"utilizar para el archivo anexado."
+
+#. Tag: para
+#: Mail.xml:410
+#, no-c-format
+msgid ""
+"<literal>contentType</literal> &mdash; Specify the MIME type of the attached "
+"file"
+msgstr ""
+"<literal>contentType</literal> &mdash; Especifica el tipo MIME del archivo "
+"anexado"
+
+#. Tag: term
+#: Mail.xml:418
+#, no-c-format
+msgid "&lt;m:subject&gt;"
+msgstr "&lt;m:subject&gt;"
+
+#. Tag: para
+#: Mail.xml:420
+#, no-c-format
+msgid "Set&#39;s the subject for the email."
+msgstr "Establece el tema del correo electrónico."
+
+#. Tag: term
+#: Mail.xml:426
+#, no-c-format
+msgid "&lt;m:body&gt;"
+msgstr "&lt;m:body&gt;"
+
+#. Tag: para
+#: Mail.xml:428
+#, no-c-format
+msgid ""
+"Set&#39;s the body for the email. Supports an <literal>alternative</literal> "
+"facet which, if an HTML email is generated can contain alternative text for "
+"a mail reader which doesn&#39;t support html."
+msgstr ""
+"Establece el cuerpo del correo. Soporta un facet <literal>alternative</"
+"literal>, el cual, si se genera un correo HTML puede contener texto "
+"alternativo para el lector de correos el cual no soporta html. "
+
+#. Tag: para
+#: Mail.xml:433
+#, no-c-format
+msgid ""
+"<literal>type</literal> &mdash; If set to <literal>plain</literal> then a "
+"plain text email will be generated otherwise an HTML email is generated."
+msgstr ""
+"<literal>type</literal> &mdash; Si se configura como <literal>plain</"
+"literal> entonces se generará un correo de texto plain o de otra manera se "
+"generará un correo HTML."

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Persistence.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Persistence.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Persistence.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1070 @@
+# translation of Persistence.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Persistence\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 01:04+0000\n"
+"PO-Revision-Date: 2007-10-10 13:01+1000\n"
+"Last-Translator: Angela Garcia\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Persistence.xml:6
+#, no-c-format
+msgid "Seam and Object/Relational Mapping"
+msgstr "Seam y el mapeo objeto/relacional"
+
+#. Tag: para
+#: Persistence.xml:7
+#, no-c-format
+msgid ""
+"Seam provides extensive support for the two most popular persistence "
+"architectures for Java: Hibernate3, and the Java Persistence API introduced "
+"with EJB 3.0. Seam&#39;s unique state-management architecture allows the "
+"most sophisticated ORM integration of any web application framework."
+msgstr ""
+"Seam proporciona soporte extensivo para las dos arquitecturas de "
+"persistencia más populares para Java: Hibernate3 y la API de persistencia de "
+"Java introducida con EJB 3.0. La arquitectura de administración de estado "
+"única de Seam permite la integración ORM más sofisticada de cualquier marco "
+"de trabajo de una aplicación web. "
+
+#. Tag: title
+#: Persistence.xml:11
+#, no-c-format
+msgid "Introduction"
+msgstr "Introducción"
+
+#. Tag: para
+#: Persistence.xml:12
+#, no-c-format
+msgid ""
+"Seam grew out of the frustration of the Hibernate team with the "
+"statelessness typical of the previous generation of Java application "
+"architectures. The state management architecture of Seam was originally "
+"designed to solve problems relating to persistence&mdash;in particular "
+"problems associated with <emphasis>optimistic transaction processing</"
+"emphasis>. Scalable online applications always use optimistic transactions. "
+"An atomic (database/JTA) level transaction should not span a user "
+"interaction unless the application is designed to support only a very small "
+"number of concurrent clients. But almost all interesting work involves first "
+"displaying data to a user, and then, slightly later, updating the same data. "
+"So Hibernate was designed to support the idea of a persistence context which "
+"spanned an optimistic transaction."
+msgstr ""
+"Seam surgió de la frustración del equipo de Hibernate en relación con la "
+"falta de estado típico de las arquitecturas de aplicaciones Java de la "
+"generación anterior. La arquitectura de administración de estado de Seam "
+"originalmente fue diseñada para resolver problemas relacionados con la "
+"persistencia, en particular los problemas asociados con <emphasis>el "
+"procesamiento de las transacciones optimistas</emphasis>. Las aplicaciones "
+"en línea escalables siempre utilizan transacciones optimistas. Una "
+"transacción a nivel atómico (base de datos/JTA) no debe abarcar una "
+"interacción de usuario a menos de que la aplicación esté diseñada para "
+"soportar solamente un pequeño número de clientes concurrentes. Pero la "
+"mayoría del trabajo interesante implica primero presentar datos al usuario y "
+"un poco después actualizar los mismos datos. Así que Hibernate se diseñó "
+"para soportar la idea de un contexto de persistencia el cual abarca una "
+"transacción optimista."
+
+#. Tag: para
+#: Persistence.xml:15
+#, no-c-format
+msgid ""
+"Unfortunately, the so-called \"stateless\" architectures that preceded Seam "
+"and EJB 3.0 had no construct for representing an optimistic transaction. So, "
+"instead, these architectures provided persistence contexts scoped to the "
+"atomic transaction. Of course, this resulted in many problems for users, and "
+"is the cause of the number one user complaint about Hibernate: the dreaded "
+"<literal>LazyInitializationException</literal>. What we need is a construct "
+"for representing an optimistic transaction in the application tier."
+msgstr ""
+"Desafortunadamente, las llamadas arquitecturas \"sin estado\" que "
+"precedieron a Seam y EJB 3.0 no tenían una construcción para representar una "
+"transacción optimista. Así que en su lugar, estas arquitecturas "
+"proporcionaban contextos de persistencia dentro de las transacciones "
+"atómicas. Por supuesto esto causó muchos problemas para los usuarios y es la "
+"razón de la queja número uno sobre Hibernate: el temido "
+"<literal>LazyInitializationException</literal>. Lo que necesitamos es una "
+"construcción para representar una transacción optimista en el nivel de "
+"aplicación."
+
+#. Tag: para
+#: Persistence.xml:18
+#, no-c-format
+msgid ""
+"EJB 3.0 recognizes this problem, and introduces the idea of a stateful "
+"component (a stateful session bean) with an <emphasis>extended persistence "
+"context</emphasis> scoped to the lifetime of the component. This is a "
+"partial solution to the problem (and is a useful construct in and of itself) "
+"however there are two problems:"
+msgstr ""
+"EJB 3.0 reconoce este problema e introduce la idea de un componente con "
+"estado (un bean de sesión con estado) con un <emphasis>contexto de "
+"persistencia extendido</emphasis> dentro del tiempo de vida del componente. "
+"Esta es una solución parcial al problema (y es una construcción útil dentro "
+"y para sí misma) pero existen dos problemas:"
+
+#. Tag: para
+#: Persistence.xml:23
+#, no-c-format
+msgid ""
+"The lifecycle of the stateful session bean must be managed manually via code "
+"in the web tier (it turns out that this is a subtle problem and much more "
+"difficult in practice than it sounds)."
+msgstr ""
+"El ciclo de vida de un bean de sesión con estado se debe administrar "
+"virtualmente por medio del código en la capa web (esto resulta ser un "
+"pequeño problema y es mucho más difícil en la práctica de lo que suena)."
+
+#. Tag: para
+#: Persistence.xml:28
+#, no-c-format
+msgid ""
+"Propagation of the persistence context between stateful components in the "
+"same optimistic transaction is possible, but tricky."
+msgstr ""
+"La propagación del contexto de persistencia entre componentes con estado en "
+"la misma transacción optimista es posible pero un poco difícil."
+
+#. Tag: para
+#: Persistence.xml:33
+#, no-c-format
+msgid ""
+"Seam solves the first problem by providing conversations, and stateful "
+"session bean components scoped to the conversation. (Most conversations "
+"actually represent optimistic transactions in the data layer.) This is "
+"sufficient for many simple applications (such as the Seam booking demo) "
+"where persistence context propagation is not needed. For more complex "
+"applications, with many loosly-interacting components in each conversation, "
+"propagation of the persistence context across components becomes an "
+"important issue. So Seam extends the persistence context management model of "
+"EJB 3.0, to provide conversation-scoped extended persistence contexts."
+msgstr ""
+"Seam resuelve el primer problema proporcionando conversaciones y componentes "
+"bean incluídos en la conversación (de hecho, la mayoría de las "
+"conversaciones representan transacciones optimistas en la capa de datos). "
+"Esto es suficiente para muchas de las aplicaciones simples ( tal como la "
+"demostración de Seam booking) en donde no se necesita la propagación del "
+"contexto de persistencia. Para aquellas aplicaciones más complejas, con "
+"muchos componentes interactuando indirectamente en cada conversación, la "
+"propagación del contexto de persistencia a través de componentes se "
+"convierte en un asunto importante. Así que Seam extiende el modelo de "
+"administración del contexto de persistencia de EJB 3.0 para proporcionar "
+"contextos de persistencia extendidos incluídos en la conversación."
+
+#. Tag: title
+#: Persistence.xml:39
+#, no-c-format
+msgid "Seam managed transactions"
+msgstr "Transacciones administradas por Seam"
+
+#. Tag: para
+#: Persistence.xml:40
+#, no-c-format
+msgid ""
+"EJB session beans feature declarative transaction management. The EJB "
+"container is able to start a transaction transparently when the bean is "
+"invoked, and end it when the invocation ends. If we write a session bean "
+"method that acts as a JSF action listener, we can do all the work associated "
+"with that action in one transaction, and be sure that it is committed or "
+"rolled back when we finish processing the action. This is a great feature, "
+"and all that is needed by some Seam applications."
+msgstr ""
+"Los beans de sesión EJB cuentan con la administración de transacciones "
+"declarativas. El contenedor EJB puede iniciar una transacción de manera "
+"transparente cuando se invoca el bean y terminarla cuando la invocación "
+"termina. Si escribimos un método de bean de sesión que actúe como un escucha "
+"de acciones JSF podemos hacer todo el trabajo realizado con esa acción en "
+"una sola transacción y asegúrese de que se guarde o se desinstale al "
+"terminar de procesar la acción. Esta es una característica fantástica y es "
+"todo lo que necesitan algunas aplicaciones Seam."
+
+#. Tag: para
+#: Persistence.xml:43
+#, no-c-format
+msgid ""
+"However, there is a problem with this approach. A Seam application may not "
+"perform all data access for a request from a single method call to a session "
+"bean."
+msgstr ""
+"Sin embargo, existe un problema con este enfoque. Puede que una aplicación "
+"Seam no realice todo el acceso a datos para un pedido desde una sola llamada "
+"de método a un bean de sesión."
+
+#. Tag: para
+#: Persistence.xml:48
+#, no-c-format
+msgid ""
+"The request might require processing by several loosly-coupled components, "
+"each of which is called independently from the web layer. It is common to "
+"see several or even many calls per request from the web layer to EJB "
+"components in Seam."
+msgstr ""
+"El pedido puede llegar a necesitar procesamiento por parte de varios "
+"componentes relacionados indirectamente, cada uno de los cuales se llama "
+"independientemente desde la capa web. Es común ver varias o inclusive muchas "
+"llamadas por pedido desde la capa web a los componentes EJB en Seam."
+
+#. Tag: para
+#: Persistence.xml:53
+#, no-c-format
+msgid "Rendering of the view might require lazy fetching of associations."
+msgstr ""
+"La presentación de la vista puede llegar a requerir búsqueda perezoza -lazy "
+"fetching- de asociaciones."
+
+#. Tag: para
+#: Persistence.xml:58
+#, no-c-format
+msgid ""
+"The more transactions per request, the more likely we are to encounter "
+"atomicity and isolation problems when our application is processing many "
+"concurrent requests. Certainly, all write operations should occur in the "
+"same transaction!"
+msgstr ""
+"Entre más transacciones por pedido habrá más posibilidades de encontrar "
+"problemas de atomicidad y aislamiento cuando nuestra aplicación está "
+"procesando muchos pedidos de manera simultánea. ¡Desde luego que todas las "
+"operaciones de escritura deben ocurrir en la misma transacción!"
+
+#. Tag: para
+#: Persistence.xml:61
+#, no-c-format
+msgid ""
+"Hibernate users developed the <emphasis>\"open session in view\"</emphasis> "
+"pattern to work around this problem. In the Hibernate community, \"open "
+"session in view\" was historically even more important because frameworks "
+"like Spring use transaction-scoped persistence contexts. So rendering the "
+"view would cause <literal>LazyInitializationException</literal>s when "
+"unfetched associations were accessed."
+msgstr ""
+"Los usuarios de Hibernate desarrollaron el patrón <emphasis>\"sesión abierta "
+"en vista\"</emphasis> para solucionar este problema. En la comunidad "
+"Hibernate, la \"sesión abierta en vista\" fue históricamente inclusive más "
+"importante ya que los marcos de trabajo como Spring utilizan contextos de "
+"persistencia incluídos en la transacción. Así que el entregar la vista "
+"causaría <literal>LazyInitializationException</literal>s cuando se acceden "
+"asociaciones no buscadas."
+
+#. Tag: para
+#: Persistence.xml:64
+#, no-c-format
+msgid ""
+"This pattern is usually implemented as a single transaction which spans the "
+"entire request. There are several problems with this implementation, the "
+"most serious being that we can never be sure that a transaction is "
+"successful until we commit it&mdash;but by the time the \"open session in "
+"view\" transaction is committed, the view is fully rendered, and the "
+"rendered response may already have been flushed to the client. How can we "
+"notify the user that their transaction was unsuccessful?"
+msgstr ""
+"Este patrón usualmente se implementa como una sola transacción que abarca "
+"todo el pedido. Hay varios problemas con esta implementación, el más serio "
+"es que nunca podemos estar seguros de que una transacción ha sido exitosa "
+"sino hasta que la guardamos, pero para el momento en que la transacción de "
+"la \"sesión abierta en vista\" se guarda, la vista se ha entregado por "
+"completo y la respuesta entregada puede haber sido vaciada al cliente. ¿Cómo "
+"podemos notificar al usuario que su transacción no fue exitosa?"
+
+#. Tag: para
+#: Persistence.xml:67
+#, no-c-format
+msgid ""
+"Seam solves both the transaction isolation problem and the association "
+"fetching problem, while working around the problems with \"open session in "
+"view\". The solution comes in two parts:"
+msgstr ""
+"Seam resuelve tanto el problema de aislamiento de transacciones como el "
+"problema de búsqueda de asociaciones y al mismo tiempo proporciona "
+"soluciones para los problemas relacionados con la \"sesión abierta en vista"
+"\". La solución consiste de dos partes:"
+
+#. Tag: para
+#: Persistence.xml:72
+#, no-c-format
+msgid ""
+"use an extended persistence context that is scoped to the conversation, "
+"instead of to the transaction"
+msgstr ""
+"utiliza un contexto de persistencia extendido que está incluido en la "
+"conversación en vez de estar incluido en la transacción."
+
+#. Tag: para
+#: Persistence.xml:77
+#, no-c-format
+msgid ""
+"use two transactions per request; the first spans the beginning of the "
+"update model values phase until the end of the invoke application phase; the "
+"second spans the render response phase"
+msgstr ""
+"utiliza dos transacciones por pedido, el primero abarca el comienzo de la "
+"fase de los valores del modelo de actualización hasta el final de la fase de "
+"la aplicación de la invocación, la segunda abarca la fase de entrega de la "
+"respuesta."
+
+#. Tag: para
+#: Persistence.xml:82
+#, no-c-format
+msgid ""
+"In the next section, we&#39;ll tell you how to set up a conversation-scope "
+"persistence context. But first we need to tell you how to enable Seam "
+"transaction management. Note that you can use conversation-scoped "
+"persistence contexts without Seam transaction management, and there are good "
+"reasons to use Seam transaction management even when you&#39;re not using "
+"Seam-managed persistence contexts. However, the two facilities were designed "
+"to work together, and work best when used together."
+msgstr ""
+"En la próxima sección le diremos como configurar un contexto de persistencia "
+"incluido en la conversación. Pero primero necesitamos decirle como habilitar "
+"la administración de transacciones Seam. Observe que puede utilizar "
+"contextos de persistencia incluídos en la conversación sin tener la "
+"administración de transacciones Seam y hay buenas razones para utilizar esta "
+"administración de transacciones de Seam aun cuando no se esté utilizando "
+"contextos de persistencia administrados por Seam. Sin embargo, las dos "
+"facilidades fueron diseñadas para que funcionen juntas y funcionan mucho "
+"mejor cuando trabajan juntas. "
+
+#. Tag: title
+#: Persistence.xml:86
+#, no-c-format
+msgid "Enabling Seam-managed transactions"
+msgstr "Habilitación de transacciones administradas por Seam "
+
+#. Tag: para
+#: Persistence.xml:87
+#, no-c-format
+msgid ""
+"To make use of <emphasis>Seam managed transactions</emphasis>, you need to "
+"use <literal>TransactionalSeamPhaseListener</literal> in place of "
+"<literal>SeamPhaseListener</literal>."
+msgstr ""
+"Para poder utilizar las <emphasis>transacciones administradas por Seam </"
+"emphasis> necesita utilizar <literal>TransactionalSeamPhaseListener</"
+"literal> en vez de <literal>SeamPhaseListener</literal>."
+
+#. Tag: programlisting
+#: Persistence.xml:90
+#, no-c-format
+msgid ""
+"&lt;lifecycle&gt;\n"
+"     &lt;phase-listener&gt;\n"
+"        org.jboss.seam.jsf.TransactionalSeamPhaseListener\n"
+"    &lt;/phase-listener&gt;\n"
+"&lt;/lifecycle&gt;"
+msgstr ""
+"&lt;lifecycle&gt;\n"
+"     &lt;phase-listener&gt;\n"
+"        org.jboss.seam.jsf.TransactionalSeamPhaseListener\n"
+"    &lt;/phase-listener&gt;\n"
+"&lt;/lifecycle&gt;"
+
+#. Tag: para
+#: Persistence.xml:91
+#, no-c-format
+msgid ""
+"Seam transaction management is useful even if you&#39;re using EJB 3.0 "
+"container-managed persistence contexts. But it is especially useful if you "
+"use Seam outside a Java EE 5 environment, or in any other case where you "
+"would use a Seam-managed persistence context."
+msgstr ""
+"La administración de transacciones Seam es útil inclusive si está utilizando "
+"contextos de persistencia administrados por el contenedor EJB 3.0. Pero en "
+"especial es bastante útil si utiliza Java Seam fuera de un entorno Java EE 5 "
+"o en cualquier caso en donde utilizaría un contexto de persistencia "
+"administrado por Seam. "
+
+#. Tag: title
+#: Persistence.xml:99
+#, no-c-format
+msgid "Seam-managed persistence contexts"
+msgstr "Contextos de persistencia administrados por Seam"
+
+#. Tag: para
+#: Persistence.xml:100
+#, no-c-format
+msgid ""
+"If you&#39;re using Seam outside of a Java EE 5 environment, you can&#39;t "
+"rely upon the container to manage the persistence context lifecycle for you. "
+"Even if you are in an EE 5 environment, you might have a complex application "
+"with many loosly coupled components that collaborate together in the scope "
+"of a single conversation, and in this case you might find that propagation "
+"of the persistence context between component is tricky and error-prone."
+msgstr ""
+"Si está utilizando Seam fuera de un entorno Java EE 5 no puede confiarse de "
+"que el contenedor administra el ciclo de vida del contexto de persistencia "
+"por usted. Aún si se encuentra en un entorno EE 5 puede que tenga una "
+"aplicación compleja con muchos componentes relacionados indirectamente que "
+"colaboran en el ámbito de una sola conversación y en este caso puede llegar "
+"a encontrar que la propagación del contexto de persistencia entre "
+"componentes es difícil y con tendencia a producir errores. "
+
+#. Tag: para
+#: Persistence.xml:103
+#, no-c-format
+msgid ""
+"In either case, you&#39;ll need to use a <emphasis>managed persistence "
+"context</emphasis> (for JPA) or a <emphasis>managed session</emphasis> (for "
+"Hibernate) in your components. A Seam-managed persistence context is just a "
+"built-in Seam component that manages an instance of <literal>EntityManager</"
+"literal> or <literal>Session</literal> in the conversation context. You can "
+"inject it with <literal>@In</literal>."
+msgstr ""
+"En cualquier caso necesitará utilizar un <emphasis>contexto de persistencia "
+"administrado</emphasis> (para JPA) o una <emphasis>sesión administrada</"
+"emphasis> (para Hibernate) en sus componentes. Un contexto de persistencia "
+"administrado por Seam es simplemente un componente Seam incorporado que "
+"administra una instancia del <literal>EntityManager</literal> o "
+"<literal>Session</literal> en el contexto de conversación. Lo puede inyectar "
+"con <literal>@In</literal>. "
+
+#. Tag: para
+#: Persistence.xml:106
+#, no-c-format
+msgid ""
+"Seam-managed persistence contexts are extremely efficient in a clustered "
+"environment. Seam is able to perform an optimization that EJB 3.0 "
+"specification does not allow containers to use for container-managed "
+"extended persistence contexts. Seam supports transparent failover of "
+"extended persisence contexts, without the need to replicate any persistence "
+"context state between nodes. (We hope to fix this oversight in the next "
+"revision of the EJB spec.)"
+msgstr ""
+"Los contextos de persistencia administrados por Seam son extremadamente "
+"eficientes en un entorno con clústers. Seam tiene la habilidad de realizar "
+"una optimización que la especificación EJB 3.0 no le permite a los "
+"contenedores utilizar para contextos de persistencia extendidos "
+"administrados por el contenedor. Seam soporta conmutación de servidores en "
+"caso de fallo de contextos de persistencia extendidos sin la necesidad de "
+"replicar ningún estado de contexto de persistencia entre nodos (esperamos "
+"poder arreglar esto en la próxima revisión de la especificación EJB)."
+
+#. Tag: title
+#: Persistence.xml:110
+#, no-c-format
+msgid "Using a Seam-managed persistence context with JPA"
+msgstr "Uso de un contexto de persistencia administrado por Seam con JPA"
+
+#. Tag: para
+#: Persistence.xml:111
+#, no-c-format
+msgid ""
+"Configuring a managed persistence context is easy. In <literal>components."
+"xml</literal>, we can write:"
+msgstr ""
+"Es fácil configurar un contexto de persistencia administrado. En "
+"<literal>components.xml</literal> podemos escribir:"
+
+#. Tag: programlisting
+#: Persistence.xml:114
+#, no-c-format
+msgid ""
+"&lt;core:managed-persistence-context name=\"bookingDatabase\" \n"
+"                           auto-create=\"true\"\n"
+"            persistence-unit-jndi-name=\"java:/EntityManagerFactories/"
+"bookingData\"/&gt;"
+msgstr ""
+"&lt;core:managed-persistence-context name=\"bookingDatabase\" \n"
+"                           auto-create=\"true\"\n"
+"            persistence-unit-jndi-name=\"java:/EntityManagerFactories/"
+"bookingData\"/&gt;"
+
+#. Tag: para
+#: Persistence.xml:115
+#, no-c-format
+msgid ""
+"This configuration creates a conversation-scoped Seam component named "
+"<literal>bookingDatabase</literal> that manages the lifecycle of "
+"<literal>EntityManager</literal> instances for the persistence unit "
+"(<literal>EntityManagerFactory</literal> instance) with JNDI name "
+"<literal>java:/EntityManagerFactories/bookingData</literal>."
+msgstr ""
+"Esta configuración crea un componente Seam incluido en la conversación "
+"llamado <literal>bookingDatabase</literal> que administra el ciclo de vida "
+"de las instancias <literal>EntityManager</literal> para la unidad de "
+"persistencia (la instancia <literal>EntityManagerFactory</literal>) con el "
+"nombre JNDI <literal>java:/EntityManagerFactories/bookingData</literal>."
+
+#. Tag: para
+#: Persistence.xml:118
+#, no-c-format
+msgid ""
+"Of course, you need to make sure that you have bound the "
+"<literal>EntityManagerFactory</literal> into JNDI. In JBoss, you can do this "
+"by adding the following property setting to <literal>persistence.xml</"
+"literal>."
+msgstr ""
+"Por supuesto necesita asegurarse de que ha vinculado el "
+"<literal>EntityManagerFactory</literal> a JNDI. En JBoss puede lograr esto "
+"añadiendo la siguiente propiedad de configuración a <literal>persistence."
+"xml</literal>."
+
+#. Tag: programlisting
+#: Persistence.xml:121
+#, no-c-format
+msgid ""
+"&lt;property name=\"jboss.entity.manager.factory.jndi.name\" \n"
+"          value=\"java:/EntityManagerFactories/bookingData\"/&gt;"
+msgstr ""
+"&lt;property name=\"jboss.entity.manager.factory.jndi.name\" \n"
+"          value=\"java:/EntityManagerFactories/bookingData\"/&gt;"
+
+#. Tag: para
+#: Persistence.xml:122
+#, no-c-format
+msgid "Now we can have our <literal>EntityManager</literal> injected using:"
+msgstr ""
+"Ahora podemos tener nuestro <literal>EntityManager</literal> inyectado "
+"utilizando: "
+
+#. Tag: programlisting
+#: Persistence.xml:125
+#, no-c-format
+msgid "@In EntityManager bookingDatabase;"
+msgstr "@In EntityManager bookingDatabase;"
+
+#. Tag: title
+#: Persistence.xml:129
+#, no-c-format
+msgid "Using a Seam-managed Hibernate session"
+msgstr "Uso de una sesión Hibernate administrada por Seam"
+
+#. Tag: para
+#: Persistence.xml:130
+#, no-c-format
+msgid ""
+"Seam-managed Hibernate sessions are similar. In <literal>components.xml</"
+"literal>:"
+msgstr ""
+"Las sesiones Hibernate administradas por Seam son similares. En "
+"<literal>components.xml</literal>:"
+
+#. Tag: programlisting
+#: Persistence.xml:133
+#, no-c-format
+msgid ""
+"&lt;core:hibernate-session-factory name=\"hibernateSessionFactory\"/&gt;\n"
+"\n"
+"&lt;core:managed-hibernate-session name=\"bookingDatabase\" \n"
+"                         auto-create=\"true\"\n"
+"           session-factory-jndi-name=\"java:/bookingSessionFactory\"/&gt;"
+msgstr ""
+"&lt;core:hibernate-session-factory name=\"hibernateSessionFactory\"/&gt;\n"
+"\n"
+"&lt;core:managed-hibernate-session name=\"bookingDatabase\" \n"
+"                         auto-create=\"true\"\n"
+"           session-factory-jndi-name=\"java:/bookingSessionFactory\"/&gt;"
+
+#. Tag: para
+#: Persistence.xml:134
+#, no-c-format
+msgid ""
+"Where <literal>java:/bookingSessionFactory</literal> is the name of the "
+"session factory specified in <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+"En donde <literal>java:/bookingSessionFactory</literal> es el nombre de la "
+"fábrica de sesiones que se especifica en <literal>hibernate.cfg.xml</"
+"literal>."
+
+#. Tag: programlisting
+#: Persistence.xml:137
+#, no-c-format
+msgid ""
+"&lt;session-factory name=\"java:/bookingSessionFactory\"&gt;\n"
+"    &lt;property name=\"transaction.flush_before_completion\"&gt;true&lt;/"
+"property&gt;\n"
+"    &lt;property name=\"connection.release_mode\"&gt;after_statement&lt;/"
+"property&gt;\n"
+"    &lt;property name=\"transaction.manager_lookup_class\"&gt;\n"
+"       org.hibernate.transaction.JBossTransactionManagerLookup\n"
+"    &lt;/property&gt;\n"
+"    &lt;property name=\"transaction.factory_class\"&gt;\n"
+"       org.hibernate.transaction.JTATransactionFactory\n"
+"    &lt;/property&gt;\n"
+"    &lt;property name=\"connection.datasource\"&gt;java:/"
+"bookingDatasource&lt;/property&gt;\n"
+"    ...\n"
+"&lt;/session-factory&gt;"
+msgstr ""
+"&lt;session-factory name=\"java:/bookingSessionFactory\"&gt;\n"
+"    &lt;property name=\"transaction.flush_before_completion\"&gt;true&lt;/"
+"property&gt;\n"
+"    &lt;property name=\"connection.release_mode\"&gt;after_statement&lt;/"
+"property&gt;\n"
+"    &lt;property name=\"transaction.manager_lookup_class\"&gt;\n"
+"       org.hibernate.transaction.JBossTransactionManagerLookup\n"
+"    &lt;/property&gt;\n"
+"    &lt;property name=\"transaction.factory_class\"&gt;\n"
+"       org.hibernate.transaction.JTATransactionFactory\n"
+"    &lt;/property&gt;\n"
+"    &lt;property name=\"connection.datasource\"&gt;java:/"
+"bookingDatasource&lt;/property&gt;\n"
+"    ...\n"
+"&lt;/session-factory&gt;"
+
+#. Tag: para
+#: Persistence.xml:138
+#, no-c-format
+msgid ""
+"Note that Seam does not flush the session, so you should always enable "
+"<literal>hibernate.transaction.flush_before_completion</literal> to ensure "
+"that the session is automatically flushed before the JTA transaction commits."
+msgstr ""
+"Observe que Seam no vacía la sesión así que siempre debe habilitar "
+"<literal>hibernate.transaction.flush_before_completion</literal> para "
+"asegurarse de que la sesión es vaciada automáticamente antes de guardar la "
+"transacción JTA."
+
+#. Tag: para
+#: Persistence.xml:141
+#, no-c-format
+msgid ""
+"We can now have a managed Hibernate <literal>Session</literal> injected into "
+"our JavaBean components using the following code:"
+msgstr ""
+"Ahora podemos inyectar una <literal>Session</literal> administrada por "
+"Hibernate en nuestros componentes JavaBean utilizando el siguiente código:"
+
+#. Tag: programlisting
+#: Persistence.xml:144
+#, no-c-format
+msgid "@In Session bookingDatabase;"
+msgstr "@In Session bookingDatabase;"
+
+#. Tag: title
+#: Persistence.xml:148
+#, no-c-format
+msgid "Seam-managed persistence contexts and atomic conversations"
+msgstr ""
+"Contextos de persistencia administrados por Seam y conversaciones atómicas"
+
+#. Tag: para
+#: Persistence.xml:149
+#, no-c-format
+msgid ""
+"Persistence contexts scoped to the conversation allows you to program "
+"optimistic transactions that span multiple requests to the server without "
+"the need to use the <literal>merge()</literal> operation , without the need "
+"to re-load data at the beginning of each request, and without the need to "
+"wrestle with the <literal>LazyInitializationException</literal> or "
+"<literal>NonUniqueObjectException</literal>."
+msgstr ""
+"Los contextos de persistencia incluídos en la conversación le permiten "
+"programar transacciones optimistas que abarcan múltiples pedidos al servidor "
+"sin la necesidad de utilizar la operación <literal>merge()</literal> o de "
+"tener que re-cargar datos al comienzo de cada pedido y sin tener que pelear "
+"con <literal>LazyInitializationException</literal> o "
+"<literal>NonUniqueObjectException</literal>."
+
+#. Tag: para
+#: Persistence.xml:152
+#, no-c-format
+msgid ""
+"As with any optimistic transaction management, transaction isolation and "
+"consistency can be achieved via use of optimistic locking. Fortunately, both "
+"Hibernate and EJB 3.0 make it very easy to use optimistic locking, by "
+"providing the <literal>@Version</literal> annotation."
+msgstr ""
+"Así como con cualquier administración de transacciones optimistas puede "
+"lograr el aislamiento de transacciones de manera consistente por medio del "
+"uso del bloqueo optimista. Afortunadamente tanto Hibernate como EJB 3.0 "
+"facilitan el uso del bloqueo optimista proporcionando la anotación "
+"<literal>@Version</literal>."
+
+#. Tag: para
+#: Persistence.xml:155
+#, no-c-format
+msgid ""
+"By default, the persistence context is flushed (synchronized with the "
+"database) at the end of each transaction. This is sometimes the desired "
+"behavior. But very often, we would prefer that all changes are held in "
+"memory and only written to the database when the conversation ends "
+"successfully. This allows for truly atomic conversations. As the result of a "
+"truly stupid and shortsighted decision by certain non-JBoss, non-Sun and non-"
+"Sybase members of the EJB 3.0 expert group, there is currently no simple, "
+"usable and portable way to implement atomic conversations using EJB 3.0 "
+"persistence. However, Hibernate provides this feature as a vendor extension "
+"to the <literal>FlushModeType</literal>s defined by the specification, and "
+"it is our expectation that other vendors will soon provide a similar "
+"extension."
+msgstr ""
+"Por defecto, el contexto de persistencia es vaciado (sincronizado con la "
+"base de datos) al final de cada transacción. A veces este es el "
+"comportamiento deseado. Pero a menudo preferimos que los cambios se "
+"mantengan en la memoria y que sólo sean escrito en la base de datos cuando "
+"la conversación termina exitosamente. Esto permite conversaciones "
+"verdaderamente atómicas. Como resultado de una decisión bastante tonta por "
+"parte de ciertas personas que no son miembros de JBoss, Sun o Sybase del "
+"grupo de expertos de EJB 3.0 actualmente no existe una manera simple y "
+"portátil de implementar conversaciones atómicas utilizando la persistencia "
+"EJB 3.0. Sin embargo, Hibernate proporciona esta característica como una "
+"extensión del vendedor para los <literal>FlushModeType</literal>s definidos "
+"por la especificación y esperamos que los otros vendedores proporcionen una "
+"extensión similar."
+
+#. Tag: para
+#: Persistence.xml:158
+#, no-c-format
+msgid ""
+"Seam lets you specify <literal>FlushModeType.MANUAL</literal> when beginning "
+"a conversation. Currently, this works only when Hibernate is the underlying "
+"persistence provider, but we plan to support other equivalent vendor "
+"extensions."
+msgstr ""
+"Seam le permite especificar <literal>FlushModeType.MANUAL</literal> al "
+"comenzar una conversación. Actualmente, esto funciona solamente cuando "
+"Hibernate es el que proporciona la persistencia subyacente pero tenemos "
+"planeado el soportar extensiones equivalentes de otros vendedores."
+
+#. Tag: programlisting
+#: Persistence.xml:161
+#, no-c-format
+msgid ""
+"@In EntityManager em; //a Seam-managed persistence context\n"
+"\n"
+"@Begin(flushMode=MANUAL)\n"
+"public void beginClaimWizard() {\n"
+"    claim = em.find(Claim.class, claimId);\n"
+"}"
+msgstr ""
+"@In EntityManager em; //a Seam-managed persistence context\n"
+"\n"
+"@Begin(flushMode=MANUAL)\n"
+"public void beginClaimWizard() {\n"
+"    claim = em.find(Claim.class, claimId);\n"
+"}"
+
+#. Tag: para
+#: Persistence.xml:162
+#, no-c-format
+msgid ""
+"Now, the <literal>claim</literal> object remains managed by the persistence "
+"context for the rest ot the conversation. We can make changes to the claim:"
+msgstr ""
+"Ahora el objeto <literal>claim</literal> permanece administrado por el "
+"contexto de persistencia para el resto de la conversación. Ahora podemos "
+"hacerle cambios a la afirmación:"
+
+#. Tag: programlisting
+#: Persistence.xml:165
+#, no-c-format
+msgid ""
+"public void addPartyToClaim() {\n"
+"    Party party = ....;\n"
+"    claim.addParty(party);\n"
+"}"
+msgstr ""
+"public void addPartyToClaim() {\n"
+"    Party party = ....;\n"
+"    claim.addParty(party);\n"
+"}"
+
+#. Tag: para
+#: Persistence.xml:166
+#, no-c-format
+msgid ""
+"But these changes will not be flushed to the database until we explicitly "
+"force the flush to occur:"
+msgstr ""
+"Pero estos cambios no serán vaciados a la base de datos hasta que forcemos "
+"el vaciado de manera explícita:"
+
+#. Tag: programlisting
+#: Persistence.xml:169
+#, no-c-format
+msgid ""
+"@End\n"
+"public void commitClaim() {\n"
+"    em.flush();\n"
+"}"
+msgstr ""
+"@End\n"
+"public void commitClaim() {\n"
+"    em.flush();\n"
+"}"
+
+#. Tag: title
+#: Persistence.xml:175
+#, no-c-format
+msgid "Using the JPA \"delegate\""
+msgstr "Uso del JPA \"delegado\""
+
+#. Tag: para
+#: Persistence.xml:176
+#, no-c-format
+msgid ""
+"The <literal>EntityManager</literal> interface lets you access a vendor-"
+"specific API via the <literal>getDelegate()</literal> method. Naturally, the "
+"most interesting vendor is Hibernate, and the most powerful delegate "
+"interface is <literal>org.hibernate.Session</literal>. You&#39;d be nuts to "
+"use anything else. Trust me, I&#39;m not biased at all."
+msgstr ""
+"La interfaz <literal>EntityManager</literal> le permite acceder a una API "
+"especifica del vendedor por medio del método <literal>getDelegate()</"
+"literal>. Naturalmente, el vendedor más importante es Hibernate y la "
+"interfaz delegada más potente es <literal>org.hibernate.Session</literal>. "
+"Estaría loco si utiliza algo diferente, creáme, soy objetivo. "
+
+#. Tag: para
+#: Persistence.xml:179
+#, no-c-format
+msgid ""
+"But regardless of whether you&#39;re using Hibernate (genius!) or something "
+"else (masochist, or just not very bright), you&#39;ll almost certainly want "
+"to use the delegate in your Seam components from time to time. One approach "
+"would be the following:"
+msgstr ""
+"Pero sin importar si está utilizando Hibernate (¡genio!) o algo diferente "
+"(masoquista o simplemente no es muy inteligente) casi de seguro querrá "
+"utilizar el delegado en sus componentes Seam de vez en cuando. Uno de los "
+"enfoques podría ser el siguiente: "
+
+#. Tag: programlisting
+#: Persistence.xml:182
+#, no-c-format
+msgid ""
+"@In EntityManager entityManager;\n"
+"\n"
+"@Create\n"
+"public void init() {\n"
+"    ( (Session) entityManager.getDelegate() ).enableFilter(\"currentVersions"
+"\");\n"
+"}"
+msgstr ""
+"@In EntityManager entityManager;\n"
+"\n"
+"@Create\n"
+"public void init() {\n"
+"    ( (Session) entityManager.getDelegate() ).enableFilter(\"currentVersions"
+"\");\n"
+"}"
+
+#. Tag: para
+#: Persistence.xml:183
+#, no-c-format
+msgid ""
+"But typecasts are unquestionably the ugliest syntax in the Java language, so "
+"most people avoid them whenever possible. Here&#39;s a different way to get "
+"at the delegate. First, add the following line to <literal>components.xml</"
+"literal>:"
+msgstr ""
+"Pero los cambios del tipo de datos de las variables -typecasts - son "
+"indiscutiblemente los peores en la sintaxis en el lenguaje Java así que la "
+"mayoría de la gente trata de evitarlos tanto como sea posible. Esta es una "
+"manera diferente de llegar al delegado. Primero añada la siguiente línea a "
+"<literal>components.xml</literal>:"
+
+#. Tag: programlisting
+#: Persistence.xml:186
+#, no-c-format
+msgid ""
+"&lt;factory name=\"session\" \n"
+"         scope=\"STATELESS\" \n"
+"         auto-create=\"true\" \n"
+"         value=\"#{entityManager.delegate}\"/&gt;"
+msgstr ""
+"&lt;factory name=\"session\" \n"
+"         scope=\"STATELESS\" \n"
+"         auto-create=\"true\" \n"
+"         value=\"#{entityManager.delegate}\"/&gt;"
+
+#. Tag: para
+#: Persistence.xml:187
+#, no-c-format
+msgid "Now we can inject the session directly:"
+msgstr "Ahora podemos inyectar la sesión directamente: "
+
+#. Tag: programlisting
+#: Persistence.xml:190
+#, no-c-format
+msgid ""
+"@In Session session;\n"
+"\n"
+"@Create\n"
+"public void init() {\n"
+"    session.enableFilter(\"currentVersions\");\n"
+"}"
+msgstr ""
+"@In Session session;\n"
+"\n"
+"@Create\n"
+"public void init() {\n"
+"    session.enableFilter(\"currentVersions\");\n"
+"}"
+
+#. Tag: title
+#: Persistence.xml:194
+#, no-c-format
+msgid "Using EL in EJB-QL/HQL"
+msgstr "Uso de EL en EJB-QL/HQL"
+
+#. Tag: para
+#: Persistence.xml:195
+#, no-c-format
+msgid ""
+"Seam proxies the <literal>EntityManager</literal> or <literal>Session</"
+"literal> object whenever you use a Seam-managed persistence context or "
+"inject a container managed persistence context using "
+"<literal>@PersistenceContext</literal>. This lets you use EL expressions in "
+"your query strings, safely and efficiently. For example, this:"
+msgstr ""
+"Seam realiza proxies del <literal>EntityManager</literal> o del objeto "
+"<literal>Session</literal> cuando se utiliza un contexto de persistencia "
+"administrado por Seam o cuando se inyecta un contexto de persistencia "
+"administrado por el contenedor utilizando <literal>@PersistenceContext</"
+"literal>. Esto le permite utilizar expresiones EL en sus cadenas de pedidos "
+"de manera segura y eficiente. Por ejemplo este:"
+
+#. Tag: programlisting
+#: Persistence.xml:198
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=#{user.username}\")\n"
+"         .getSingleResult();"
+msgstr ""
+"User user = em.createQuery(\"from User where username=#{user.username}\")\n"
+"         .getSingleResult();"
+
+#. Tag: para
+#: Persistence.xml:199
+#, no-c-format
+msgid "is equivalent to:"
+msgstr "es igual a:"
+
+#. Tag: programlisting
+#: Persistence.xml:202
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getSingleResult();"
+msgstr ""
+"User user = em.createQuery(\"from User where username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getSingleResult();"
+
+#. Tag: para
+#: Persistence.xml:203
+#, no-c-format
+msgid "Of course, you should never, ever write it like this:"
+msgstr "Por supuesto nunca debe escribir algo como esto:"
+
+#. Tag: programlisting
+#: Persistence.xml:206
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=\" + user.getUsername"
+"()) //BAD!\n"
+"         .getSingleResult();"
+msgstr ""
+"User user = em.createQuery(\"from User where username=\" + user.getUsername"
+"()) //BAD!\n"
+"         .getSingleResult();"
+
+#. Tag: para
+#: Persistence.xml:207
+#, no-c-format
+msgid "(It is inefficient and vulnerable to SQL injection attacks.)"
+msgstr "-Es ineficiente y vulnerable a ataques de inyección SQL."
+
+#. Tag: title
+#: Persistence.xml:213
+#, no-c-format
+msgid "Using Hibernate filters"
+msgstr "Uso de filtros Hibernate"
+
+#. Tag: para
+#: Persistence.xml:214
+#, no-c-format
+msgid ""
+"The coolest, and most unique, feature of Hibernate is <emphasis>filters</"
+"emphasis>. Filters let you provide a restricted view of the data in the "
+"database. You can find out more about filters in the Hibernate "
+"documentation. But we thought we&#39;d mention an easy way to incorporate "
+"filters into a Seam application, one that works especially well with the "
+"Seam Application Framework."
+msgstr ""
+"La mejor característica de Hibernate y la más especial son los "
+"<emphasis>filtros</emphasis>. Los filtros le permiten proporcionar una vista "
+"restringida de los datos en la base de datos. Puede encontrar más "
+"información sobre estos filtros en la documentación de Hibernate. Sin "
+"embargo, decidimos mencionar una manera fácil de incorporar los filtros en "
+"una aplicación Seam, en especial uno que funciona bien con el marco de "
+"trabajo de la aplicación Seam. "
+
+#. Tag: para
+#: Persistence.xml:217
+#, no-c-format
+msgid ""
+"Seam-managed persistence contexts may have a list of filters defined, which "
+"will be enabled whenever an <literal>EntityManager</literal> or Hibernate "
+"<literal>Session</literal> is first created. (Of course, they may only be "
+"used when Hibernate is the underlying persistence provider.)"
+msgstr ""
+"Los contextos de persistencia administrados por Seam pueden tener una lista "
+"de filtros definidos, la cual se debe habilitar cuando se crea por primera "
+"vez un <literal>EntityManager</literal> o una <literal>Session</literal> de "
+"Hibernate (por supuesto sólo se pueden utilizar cuando Hibernate es el que "
+"proporciona la persistencia subyacente)."
+
+#. Tag: programlisting
+#: Persistence.xml:220
+#, no-c-format
+msgid ""
+"&lt;core:filter name=\"regionFilter\"&gt;\n"
+"    &lt;core:name&gt;region&lt;/core:name&gt;\n"
+"    &lt;core:parameters&gt;\n"
+"        &lt;key&gt;regionCode&lt;/key&gt;\n"
+"        &lt;value&gt;#{region.code}&lt;/value&gt;\n"
+"    &lt;/core:parameters&gt;\n"
+"&lt;/core:filter&gt;\n"
+"\n"
+"&lt;core:filter name=\"currentFilter\"&gt;\n"
+"    &lt;core:name&gt;current&lt;/core:name&gt;\n"
+"    &lt;core:parameters&gt;\n"
+"        &lt;key&gt;date&lt;/key&gt;\n"
+"        &lt;value&gt;#{currentDate}&lt;/value&gt;\n"
+"    &lt;/core:parameters&gt;\n"
+"&lt;/core:filter&gt;\n"
+"\n"
+"&lt;core:managed-persistence-context name=\"personDatabase\"\n"
+"    persistence-unit-jndi-name=\"java:/EntityManagerFactories/personDatabase"
+"\"&gt;\n"
+"    &lt;core:filters&gt;\n"
+"        &lt;value&gt;#{regionFilter}&lt;/value&gt;\n"
+"        &lt;value&gt;#{currentFilter}&lt;/value&gt;\n"
+"    &lt;/core:filters&gt;\n"
+"&lt;/core:managed-persistence-context&gt;"
+msgstr ""
+"&lt;core:filter name=\"regionFilter\"&gt;\n"
+"    &lt;core:name&gt;region&lt;/core:name&gt;\n"
+"    &lt;core:parameters&gt;\n"
+"        &lt;key&gt;regionCode&lt;/key&gt;\n"
+"        &lt;value&gt;#{region.code}&lt;/value&gt;\n"
+"    &lt;/core:parameters&gt;\n"
+"&lt;/core:filter&gt;\n"
+"\n"
+"&lt;core:filter name=\"currentFilter\"&gt;\n"
+"    &lt;core:name&gt;current&lt;/core:name&gt;\n"
+"    &lt;core:parameters&gt;\n"
+"        &lt;key&gt;date&lt;/key&gt;\n"
+"        &lt;value&gt;#{currentDate}&lt;/value&gt;\n"
+"    &lt;/core:parameters&gt;\n"
+"&lt;/core:filter&gt;\n"
+"\n"
+"&lt;core:managed-persistence-context name=\"personDatabase\"\n"
+"    persistence-unit-jndi-name=\"java:/EntityManagerFactories/personDatabase"
+"\"&gt;\n"
+"    &lt;core:filters&gt;\n"
+"        &lt;value&gt;#{regionFilter}&lt;/value&gt;\n"
+"        &lt;value&gt;#{currentFilter}&lt;/value&gt;\n"
+"    &lt;/core:filters&gt;\n"
+"&lt;/core:managed-persistence-context&gt;"

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Remoting.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Remoting.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Remoting.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1982 @@
+# translation of Remoting.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Remoting\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 01:04+0000\n"
+"PO-Revision-Date: 2007-10-18 11:00+1000\n"
+"Last-Translator: Angela Garcia\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Remoting.xml:6
+#, no-c-format
+msgid "Remoting"
+msgstr "Uso remoto"
+
+#. Tag: para
+#: Remoting.xml:7
+#, no-c-format
+msgid ""
+"Seam provides a convenient method of remotely accessing components from a "
+"web page, using AJAX (Asynchronous Javascript and XML). The framework for "
+"this functionality is provided with almost no up-front development effort - "
+"your components only require simple annotating to become accessible via "
+"AJAX. This chapter describes the steps required to build an AJAX-enabled web "
+"page, then goes on to explain the features of the Seam Remoting framework in "
+"more detail."
+msgstr ""
+"Seam proporciona un método bastante conveniente para acceder componentes de "
+"manera remota desde una página web utilizando AJAX (por las siglas en inglés "
+"de Asynchronous Javascript and XML). El marco de trabajo para esta "
+"funcionalidad se proporciona sin casi ningún esfuerzo de desarrollo "
+"adelantado - y sus componentes sólo necesitan anotaciones simples para poder "
+"ser accesibles por medio de AJAX. Este capítulo describe los pasos "
+"necesarios para construir una página web habilitada para AJAX y después "
+"continua explicando en más detalle las características del marco de trabajo "
+"de Seam Remoting."
+
+#. Tag: title
+#: Remoting.xml:10 Remoting.xml:285
+#, no-c-format
+msgid "Configuration"
+msgstr "Configuración"
+
+#. Tag: para
+#: Remoting.xml:11
+#, no-c-format
+msgid ""
+"To use remoting, the Seam Resource servlet must first be configured in your "
+"<literal>web.xml</literal> file:"
+msgstr ""
+"Para poder utilizar los servicios remotos, primero el servlet Seam Resource "
+"debe estar configurado en su archivo <literal>web.xml</literal>:"
+
+#. Tag: programlisting
+#: Remoting.xml:14
+#, no-c-format
+msgid ""
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"  &lt;/servlet&gt;\n"
+"\n"
+"  &lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"  &lt;/servlet-mapping&gt;"
+msgstr ""
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"  &lt;/servlet&gt;\n"
+"\n"
+"  &lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"  &lt;/servlet-mapping&gt;"
+
+#. Tag: para
+#: Remoting.xml:15
+#, no-c-format
+msgid ""
+"The next step is to import the necessary Javascript into your web page. "
+"There are a minimum of two scripts that must be imported. The first one "
+"contains all the client-side framework code that enables remoting "
+"functionality:"
+msgstr ""
+"El siguiente paso es importar el Javascript necesario en su página web. Se "
+"debe importar como mínimo dos scripts. El primero contiene todo el código "
+"del marco de trabajo del lado del cliente que habilita la funcionalidad de "
+"acceso remoto."
+
+#. Tag: programlisting
+#: Remoting.xml:18
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/resource/"
+"remote.js\"&gt;&lt;/script&gt;"
+msgstr ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/resource/"
+"remote.js\"&gt;&lt;/script&gt;"
+
+#. Tag: para
+#: Remoting.xml:19
+#, no-c-format
+msgid ""
+"The second script contains the stubs and type definitions for the components "
+"you wish to call. It is generated dynamically based on the local interface "
+"of your components, and includes type definitions for all of the classes "
+"that can be used to call the remotable methods of the interface. The name of "
+"the script reflects the name of your component. For example, if you have a "
+"stateless session bean annotated with <literal>@Name(\"customerAction\")</"
+"literal>, then your script tag should look like this:"
+msgstr ""
+"El segundo script contiene las definiciones de tipo y de stubs para los "
+"componentes que desea llamar. Es generado dinámicamente con base en la "
+"interfaz local de sus componentes e incluye definiciones de tipo para todas "
+"las clases que se pueden utilizar para llamar los métodos remotos a la "
+"interfaz. El nombre del script refleja el nombre de su componente. Por "
+"ejemplo, si tiene un bean de sesión sin estado anotado con <literal>@Name"
+"(\"customerAction\")</literal> entonces la etiqueta de su script se debe ver "
+"así:"
+
+#. Tag: programlisting
+#: Remoting.xml:22
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?customerAction\"&gt;\n"
+"    &lt;/script&gt;"
+msgstr ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?customerAction\"&gt;\n"
+"    &lt;/script&gt;"
+
+#. Tag: para
+#: Remoting.xml:23
+#, no-c-format
+msgid ""
+"If you wish to access more than one component from the same page, then "
+"include them all as parameters of your script tag:"
+msgstr ""
+"Si desea acceder a más de un componente desde la misma página entonces "
+"incluya todos estos como parámetros de la etiqueta de su script:"
+
+#. Tag: programlisting
+#: Remoting.xml:26
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" \n"
+"     src=\"seam/resource/remoting/interface.js?customerAction&amp;"
+"accountAction\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+"&lt;script type=\"text/javascript\" \n"
+"     src=\"seam/resource/remoting/interface.js?customerAction&amp;"
+"accountAction\"&gt;\n"
+"  &lt;/script&gt;"
+
+#. Tag: title
+#: Remoting.xml:27
+#, no-c-format
+msgid "The \"Seam\" object"
+msgstr "El objeto \"Seam\" "
+
+#. Tag: para
+#: Remoting.xml:28
+#, no-c-format
+msgid ""
+"Client-side interaction with your components is all performed via the "
+"<literal>Seam</literal> Javascript object. This object is defined in "
+"<literal>remote.js</literal>, and you&#39;ll be using it to make "
+"asynchronous calls against your component. It is split into two areas of "
+"functionality; <literal>Seam.Component</literal> contains methods for "
+"working with components and <literal>Seam.Remoting</literal> contains "
+"methods for executing remote requests. The easiest way to become familiar "
+"with this object is to start with a simple example."
+msgstr ""
+"La interacción del lado del cliente con sus componentes se realiza por medio "
+"del objeto Javascript <literal>Seam</literal>. Este objeto se define en "
+"<literal>remote.js</literal> y lo utilizará para realizar llamadas "
+"asincrónicas frente a su componente. Se divide en dos áreas de "
+"funcionalidad; <literal>Seam.Component</literal> contiene métodos para "
+"trabajar con componentes y <literal>Seam.Remoting</literal> contiene métodos "
+"para ejecutar peticiones remotas. La manera más fácil de familiarizarse con "
+"este objeto es empezar con un ejemplo simple."
+
+#. Tag: title
+#: Remoting.xml:31
+#, no-c-format
+msgid "A Hello World example"
+msgstr "Un ejemplo con hello world"
+
+#. Tag: para
+#: Remoting.xml:32
+#, no-c-format
+msgid ""
+"Let&#39;s step through a simple example to see how the <literal>Seam</"
+"literal> object works. First of all, let&#39;s create a new Seam component "
+"called <literal>helloAction</literal>."
+msgstr ""
+"Vamos a ver un ejemplo simple para ver como funciona el objeto "
+"<literal>Seam</literal>. Primero que todo, vamos a crear un nuevo componente "
+"Seam llamado <literal>helloAction</literal>.  "
+
+#. Tag: programlisting
+#: Remoting.xml:35
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"  @Name(\"helloAction\")\n"
+"  public class HelloAction implements HelloLocal {\n"
+"    public String sayHello(String name) {\n"
+"      return \"Hello, \" + name;\n"
+"    }\n"
+"  }"
+msgstr ""
+"@Stateless\n"
+"  @Name(\"helloAction\")\n"
+"  public class HelloAction implements HelloLocal {\n"
+"    public String sayHello(String name) {\n"
+"      return \"Hello, \" + name;\n"
+"    }\n"
+"  }"
+
+#. Tag: para
+#: Remoting.xml:36
+#, no-c-format
+msgid ""
+"You also need to create a local interface for our new component - take "
+"special note of the <literal>@WebRemote</literal> annotation, as it&#39;s "
+"required to make our method accessible via remoting:"
+msgstr ""
+"También necesita crear una interfaz local para nuestro nuevo componente - "
+"observe cuidadosamente la anotación <literal>@WebRemote</literal> ya que se "
+"necesita para hacer que nuestro método sea accesible de manera remota:"
+
+#. Tag: programlisting
+#: Remoting.xml:39
+#, no-c-format
+msgid ""
+"@Local\n"
+"  public interface HelloLocal {\n"
+"    @WebRemote\n"
+"    public String sayHello(String name);\n"
+"  }"
+msgstr ""
+"@Local\n"
+"  public interface HelloLocal {\n"
+"    @WebRemote\n"
+"    public String sayHello(String name);\n"
+"  }"
+
+#. Tag: para
+#: Remoting.xml:40
+#, no-c-format
+msgid ""
+"That&#39;s all the server-side code we need to write. Now for our web page - "
+"create a new page and import the following scripts:"
+msgstr ""
+"Ese es todo el código del lado del servidor que necesitamos escribir. Ahora "
+"para nuestra página web - cree una nueva página e importe los siguientes "
+"scripts: "
+
+#. Tag: programlisting
+#: Remoting.xml:43
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/resource/"
+"remote.js\"&gt;&lt;/script&gt;\n"
+"  &lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?helloAction\"&gt;&lt;/script&gt;"
+msgstr ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/resource/"
+"remote.js\"&gt;&lt;/script&gt;\n"
+"  &lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?helloAction\"&gt;&lt;/script&gt;"
+
+#. Tag: para
+#: Remoting.xml:44
+#, no-c-format
+msgid ""
+"To make this a fully interactive user experience, let&#39;s add a button to "
+"our page:"
+msgstr ""
+"Para que esto sea una experiencia completamente interactiva para el usuario "
+"vamos a añadir un botón a nuestra página: "
+
+#. Tag: programlisting
+#: Remoting.xml:47
+#, no-c-format
+msgid ""
+"&lt;button onclick=\"javascript:sayHello()\"&gt;Say Hello&lt;/button&gt;"
+msgstr ""
+"&lt;button onclick=\"javascript:sayHello()\"&gt;Say Hello&lt;/button&gt;"
+
+#. Tag: para
+#: Remoting.xml:48
+#, no-c-format
+msgid ""
+"We&#39;ll also need to add some more script to make our button actually do "
+"something when it&#39;s clicked:"
+msgstr ""
+"También es necesario añadir un poco más de script para que nuestro botón "
+"realmente funcione cuando se haga click en el: "
+
+#. Tag: programlisting
+#: Remoting.xml:51
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\"&gt;\n"
+"    //&lt;![CDATA[\n"
+"\n"
+"    function sayHello() {\n"
+"      var name = prompt(\"What is your name?\");\n"
+"      Seam.Component.getInstance(\"helloAction\").sayHello(name, "
+"sayHelloCallback);\n"
+"    }\n"
+"\n"
+"    function sayHelloCallback(result) {\n"
+"      alert(result);\n"
+"    }\n"
+"\n"
+"    // ]]&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+"&lt;script type=\"text/javascript\"&gt;\n"
+"    //&lt;![CDATA[\n"
+"\n"
+"    function sayHello() {\n"
+"      var name = prompt(\"What is your name?\");\n"
+"      Seam.Component.getInstance(\"helloAction\").sayHello(name, "
+"sayHelloCallback);\n"
+"    }\n"
+"\n"
+"    function sayHelloCallback(result) {\n"
+"      alert(result);\n"
+"    }\n"
+"\n"
+"    // ]]&gt;\n"
+"  &lt;/script&gt;"
+
+#. Tag: para
+#: Remoting.xml:52
+#, no-c-format
+msgid ""
+"We&#39;re done! Deploy your application and browse to your page. Click the "
+"button, and enter a name when prompted. A message box will display the hello "
+"message confirming that the call was successful. If you want to save some "
+"time, you&#39;ll find the full source code for this Hello World example in "
+"Seam&#39;s <literal>/examples/remoting/helloworld</literal> directory."
+msgstr ""
+"¡Terminamos! Despliegue su aplicación y navegue hasta su página. Haga click "
+"en el botón e introduzca un nuevo nombre cuando se lo pida. Una ventana de "
+"mensajes presentará la palabra hello confirmando que la llamada fue exitosa. "
+"Si quiere ahorrarse un poco de tiempo encontrará todo el código fuente para "
+"este ejemplo de Hello World en el directorio <literal>/examples/remoting/"
+"helloworld</literal> de Seam. "
+
+#. Tag: para
+#: Remoting.xml:55
+#, no-c-format
+msgid ""
+"So what does the code of our script actually do? Let&#39;s break it down "
+"into smaller pieces. To start with, you can see from the Javascript code "
+"listing that we have implemented two methods - the first method is "
+"responsible for prompting the user for their name and then making a remote "
+"request. Take a look at the following line:"
+msgstr ""
+"Así que ¿qué hace realmente el código de nuestro script? Vamos a verlo parte "
+"por parte. Para empezar, puede ver del listado del código Javascript que "
+"hemos implementado dos métodos - el primer método es el responsable de "
+"perdirle al usuario su nombre y después realizar una petición remota. Mire "
+"la siguiente línea: "
+
+#. Tag: programlisting
+#: Remoting.xml:58
+#, no-c-format
+msgid ""
+"Seam.Component.getInstance(\"helloAction\").sayHello(name, sayHelloCallback);"
+msgstr ""
+"Seam.Component.getInstance(\"helloAction\").sayHello(name, sayHelloCallback);"
+
+#. Tag: para
+#: Remoting.xml:59
+#, no-c-format
+msgid ""
+"The first section of this line, <literal>Seam.Component.getInstance"
+"(\"helloAction\")</literal> returns a proxy, or \"stub\" for our "
+"<literal>helloAction</literal> component. We can invoke the methods of our "
+"component against this stub, which is exactly what happens with the "
+"remainder of the line: <literal>sayHello(name, sayHelloCallback);</literal>."
+msgstr ""
+"La primera sección de esta línea, <literal>Seam.Component.getInstance"
+"(\"helloAction\")</literal> devuelve un proxy o \"stub\" para nuestro "
+"componente <literal>helloAction</literal>. Podemos invocar los métodos de "
+"nuestro componente frente a este stub, lo cual es exactamente lo que pasa "
+"con lo que queda de la línea: <literal>sayHello(name, sayHelloCallback);</"
+"literal>."
+
+#. Tag: para
+#: Remoting.xml:62
+#, no-c-format
+msgid ""
+"What this line of code in its completeness does, is invoke the "
+"<literal>sayHello</literal> method of our component, passing in "
+"<literal>name</literal> as a parameter. The second parameter, "
+"<literal>sayHelloCallback</literal> isn&#39;t a parameter of our "
+"component&#39;s <literal>sayHello</literal> method, instead it tells the "
+"Seam Remoting framework that once it receives the response to our request, "
+"it should pass it to the <literal>sayHelloCallback</literal> Javascript "
+"method. This callback parameter is entirely optional, so feel free to leave "
+"it out if you&#39;re calling a method with a <literal>void</literal> return "
+"type or if you don&#39;t care about the result."
+msgstr ""
+"Lo que hace esta línea de código es invocar el método <literal>sayHello</"
+"literal> de nuestro componente pasando el <literal>name</literal> como "
+"parámetro. El segundo parámetro, <literal>sayHelloCallback</literal> no es "
+"un parámetro del método <literal>sayHello</literal> de nuestro componente, "
+"en lugar le dice al marco de trabajo Seam Remoting que una vez que reciba la "
+"respuesta de nuestra petición debe pasarla al método Javascript "
+"<literal>sayHelloCallback</literal>. Este parámetro de retorno de llamada es "
+"completamente opcional así que si quiere déjelo por fuera si está llamando "
+"un método con un tipo de retorno <literal>void</literal> o si simplemente no "
+"le importa el resultado. "
+
+#. Tag: para
+#: Remoting.xml:65
+#, no-c-format
+msgid ""
+"The <literal>sayHelloCallback</literal> method, once receiving the response "
+"to our remote request then pops up an alert message displaying the result of "
+"our method call."
+msgstr ""
+"El método <literal>sayHelloCallback</literal> una vez recibe la respuesta de "
+"nuestra petición remota entonces presenta un mensaje de alerta mostrando el "
+"resultado de nuestra llamada de método."
+
+#. Tag: title
+#: Remoting.xml:68
+#, no-c-format
+msgid "Seam.Component"
+msgstr "Seam.Component"
+
+#. Tag: para
+#: Remoting.xml:69
+#, no-c-format
+msgid ""
+"The <literal>Seam.Component</literal> Javascript object provides a number of "
+"client-side methods for working with your Seam components. The two main "
+"methods, <literal>newInstance()</literal> and <literal>getInstance()</"
+"literal> are documented in the following sections however their main "
+"difference is that <literal>newInstance()</literal> will always create a new "
+"instance of a component type, and <literal>getInstance()</literal> will "
+"return a singleton instance."
+msgstr ""
+"El objeto Javascript <literal>Seam.Component</literal> proporciona un número "
+"de métodos del lado del cliente para trabajar con sus componentes Seam. Los "
+"dos métodos principales <literal>newInstance()</literal> y "
+"<literal>getInstance()</literal> se documentan en las siguientes secciones "
+"pero la principal diferencia es que <literal>newInstance()</literal> siempre "
+"creará una nueva instancia de un tipo de componente y <literal>getInstance()"
+"</literal> devolverá una instancia singleton."
+
+#. Tag: title
+#: Remoting.xml:72
+#, no-c-format
+msgid "Seam.Component.newInstance()"
+msgstr "Seam.Component.newInstance()"
+
+#. Tag: para
+#: Remoting.xml:73
+#, no-c-format
+msgid ""
+"Use this method to create a new instance of an entity or Javabean component. "
+"The object returned by this method will have the same getter/setter methods "
+"as its server-side counterpart, or alternatively if you wish you can access "
+"its fields directly. Take the following Seam entity component for example:"
+msgstr ""
+"Utilice este método para crear una nueva instancia de una entidad o de un "
+"componente Javabean. El objeto que este método retorna tendrá los mismos "
+"métodos getter/setter que su contraparte del lado del servidor o "
+"alternativamente si lo desea puede acceder sus campos directamente. Tome "
+"como ejemplo el siguiente componente de entidad Seam:"
+
+#. Tag: programlisting
+#: Remoting.xml:76
+#, no-c-format
+msgid ""
+"@Name(\"customer\")\n"
+"  @Entity\n"
+"  public class Customer implements Serializable\n"
+"  {\n"
+"    private Integer customerId;\n"
+"    private String firstName;\n"
+"    private String lastName;\n"
+"    \n"
+"    @Column public Integer getCustomerId() { \n"
+"      return customerId; \n"
+"    }\n"
+"    \n"
+"    public void setCustomerId(Integer customerId} { \n"
+"      this.customerId = customerId; \n"
+"    }\n"
+"    \n"
+"    @Column public String getFirstName() { \n"
+"      return firstName; \n"
+"    }\n"
+"    \n"
+"    public void setFirstName(String firstName) {\n"
+"      this.firstName = firstName; \n"
+"    }\n"
+"    \n"
+"    @Column public String getLastName() {\n"
+"      return lastName;\n"
+"    }\n"
+"    \n"
+"    public void setLastName(String lastName) {\n"
+"      this.lastName = lastName;\n"
+"    }\n"
+"  }"
+msgstr ""
+"@Name(\"customer\")\n"
+"  @Entity\n"
+"  public class Customer implements Serializable\n"
+"  {\n"
+"    private Integer customerId;\n"
+"    private String firstName;\n"
+"    private String lastName;\n"
+"    \n"
+"    @Column public Integer getCustomerId() { \n"
+"      return customerId; \n"
+"    }\n"
+"    \n"
+"    public void setCustomerId(Integer customerId} { \n"
+"      this.customerId = customerId; \n"
+"    }\n"
+"    \n"
+"    @Column public String getFirstName() { \n"
+"      return firstName; \n"
+"    }\n"
+"    \n"
+"    public void setFirstName(String firstName) {\n"
+"      this.firstName = firstName; \n"
+"    }\n"
+"    \n"
+"    @Column public String getLastName() {\n"
+"      return lastName;\n"
+"    }\n"
+"    \n"
+"    public void setLastName(String lastName) {\n"
+"      this.lastName = lastName;\n"
+"    }\n"
+"  }"
+
+#. Tag: para
+#: Remoting.xml:77
+#, no-c-format
+msgid "To create a client-side Customer you would write the following code:"
+msgstr ""
+"Para crear un cliente del lado del cliente necesita escribir el siguiente "
+"código:"
+
+#. Tag: programlisting
+#: Remoting.xml:80
+#, no-c-format
+msgid "var customer = Seam.Component.newInstance(\"customer\");"
+msgstr "var customer = Seam.Component.newInstance(\"customer\");"
+
+#. Tag: para
+#: Remoting.xml:81
+#, no-c-format
+msgid "Then from here you can set the fields of the customer object:"
+msgstr "Desde aquí puede configurar los campos del objeto cliente:"
+
+#. Tag: programlisting
+#: Remoting.xml:84
+#, no-c-format
+msgid ""
+"customer.setFirstName(\"John\");\n"
+"  // Or you can set the fields directly\n"
+"  customer.lastName = \"Smith\";"
+msgstr ""
+"customer.setFirstName(\"John\");\n"
+"  // Or you can set the fields directly\n"
+"  customer.lastName = \"Smith\";"
+
+#. Tag: title
+#: Remoting.xml:85
+#, no-c-format
+msgid "Seam.Component.getInstance()"
+msgstr "Seam.Component.getInstance()"
+
+#. Tag: para
+#: Remoting.xml:86
+#, no-c-format
+msgid ""
+"The <literal>getInstance()</literal> method is used to get a reference to a "
+"Seam session bean component stub, which can then be used to remotely execute "
+"methods against your component. This method returns a singleton for the "
+"specified component, so calling it twice in a row with the same component "
+"name will return the same instance of the component."
+msgstr ""
+"El método <literal>getInstance()</literal> se utiliza para obtener una "
+"referencia a un stub componente de bean de sesión Seam, el cual se puede "
+"utilizar después para ejecutar métodos remotamente frente a su componente. "
+"Este método devuelve un singleton para el componente especificado así que si "
+"se le llama dos veces seguidas con el mismo nombre de componente devolverá "
+"la misma instancia del componente."
+
+#. Tag: para
+#: Remoting.xml:89
+#, no-c-format
+msgid ""
+"To continue our example from before, if we have created a new "
+"<literal>customer</literal> and we now wish to save it, we would pass it to "
+"the <literal>saveCustomer()</literal> method of our <literal>customerAction</"
+"literal> component:"
+msgstr ""
+"Para continuar con nuestro ejemplo de antes, si creamos un nuevo "
+"<literal>customer</literal> y ahora queremos guardarlo lo pasaríamos al "
+"método <literal>saveCustomer()</literal> de nuestro componente "
+"<literal>customerAction</literal>:"
+
+#. Tag: programlisting
+#: Remoting.xml:92
+#, no-c-format
+msgid "Seam.Component.getInstance(\"customerAction\").saveCustomer(customer);"
+msgstr "Seam.Component.getInstance(\"customerAction\").saveCustomer(customer);"
+
+#. Tag: title
+#: Remoting.xml:93
+#, no-c-format
+msgid "Seam.Component.getComponentName()"
+msgstr "Seam.Component.getComponentName()"
+
+#. Tag: para
+#: Remoting.xml:94
+#, no-c-format
+msgid ""
+"Passing an object into this method will return its component name if it is a "
+"component, or <literal>null</literal> if it is not."
+msgstr ""
+"El pasar un objeto a este método devolverá su nombre de componente si es un "
+"componente o devolverá <literal>null</literal> si no lo es."
+
+#. Tag: programlisting
+#: Remoting.xml:97
+#, no-c-format
+msgid ""
+"if (Seam.Component.getComponentName(instance) == \"customer\")\n"
+"    alert(\"Customer\");\n"
+"  else if (Seam.Component.getComponentName(instance) == \"staff\")\n"
+"    alert(\"Staff member\");"
+msgstr ""
+"if (Seam.Component.getComponentName(instance) == \"customer\")\n"
+"    alert(\"Customer\");\n"
+"  else if (Seam.Component.getComponentName(instance) == \"staff\")\n"
+"    alert(\"Staff member\");"
+
+#. Tag: title
+#: Remoting.xml:98
+#, no-c-format
+msgid "Seam.Remoting"
+msgstr "Seam.Remoting"
+
+#. Tag: para
+#: Remoting.xml:99
+#, no-c-format
+msgid ""
+"Most of the client side functionality for Seam Remoting is contained within "
+"the <literal>Seam.Remoting</literal> object. While you shouldn&#39;t need to "
+"directly call most of its methods, there are a couple of important ones "
+"worth mentioning."
+msgstr ""
+"La mayoría de las funcionalidades del lado del cliente para Seam Remoting se "
+"encuentran dentro del objeto <literal>Seam.Remoting</literal>. A pesar de "
+"que no es necesario que llame la mayoría de sus métodos de manera directa "
+"hay un par de ellos que son importantes y valen la pena mencionar. "
+
+#. Tag: title
+#: Remoting.xml:102
+#, no-c-format
+msgid "Seam.Remoting.createType()"
+msgstr "Seam.Remoting.createType()"
+
+#. Tag: para
+#: Remoting.xml:103
+#, no-c-format
+msgid ""
+"If your application contains or uses Javabean classes that aren&#39;t Seam "
+"components, you may need to create these types on the client side to pass as "
+"parameters into your component method. Use the <literal>createType()</"
+"literal> method to create an instance of your type. Pass in the fully "
+"qualified Java class name as a parameter:"
+msgstr ""
+"Si su aplicación tiene o utiliza clases Javabean que no son componentes Seam "
+"puede que necesite crear estos tipos en el lado del cliente para pasarlos "
+"como parámetros en su método de componentes. Utilice el método "
+"<literal>createType()</literal> para crear una instancia de su tipo. Pase el "
+"nombre de la clase Java completamente calificado como parámetro: "
+
+#. Tag: programlisting
+#: Remoting.xml:106
+#, no-c-format
+msgid "var widget = Seam.Remoting.createType(\"com.acme.widgets.MyWidget\");"
+msgstr "var widget = Seam.Remoting.createType(\"com.acme.widgets.MyWidget\");"
+
+#. Tag: title
+#: Remoting.xml:107
+#, no-c-format
+msgid "Seam.Remoting.getTypeName()"
+msgstr "Seam.Remoting.getTypeName()"
+
+#. Tag: para
+#: Remoting.xml:108
+#, no-c-format
+msgid ""
+"This method is the equivalent of <literal>Seam.Component.getComponentName()</"
+"literal> but for non-component types. It will return the name of the type "
+"for an object instance, or <literal>null</literal> if the type is not known. "
+"The name is the fully qualified name of the type&#39;s Java class."
+msgstr ""
+"Este método es el equivalente de <literal>Seam.Component.getComponentName()</"
+"literal> pero para tipos no componentes. Devolverá el nombre del tipo para "
+"una instancia de objeto o <literal>null</literal> si no se conoce el tipo. "
+"El nombre es el nombre completamente calificado de la clase Java del tipo. "
+
+#. Tag: title
+#: Remoting.xml:111
+#, no-c-format
+msgid "Client Interfaces"
+msgstr "Interfaces del cliente"
+
+#. Tag: para
+#: Remoting.xml:112
+#, no-c-format
+msgid ""
+"In the configuration section above, the interface, or \"stub\" for our "
+"component is imported into our page via <literal>seam/resource/remoting/"
+"interface.js</literal>:"
+msgstr ""
+"En la sección de configuración anterior, la interfaz o \"stub\" para nuestro "
+"componente se importa a nuestra página por medio de <literal>seam/resource/"
+"remoting/interface.js</literal>:"
+
+#. Tag: programlisting
+#: Remoting.xml:115
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?customerAction\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?customerAction\"&gt;\n"
+"  &lt;/script&gt;"
+
+#. Tag: para
+#: Remoting.xml:116
+#, no-c-format
+msgid ""
+"By including this script in our page, the interface definitions for our "
+"component, plus any other components or types that are required to execute "
+"the methods of our component are generated and made available for the "
+"remoting framework to use."
+msgstr ""
+"Al incluir este script en nuestra página, las definiciones de interfaz de "
+"nuestro componente más cualquier otro componente o tipos que se requieran "
+"para ejecutar los métodos de nuestro componente se generan y se hacen "
+"disponibles para que el marco de trabajo lo utilice de manera remota."
+
+#. Tag: para
+#: Remoting.xml:119
+#, no-c-format
+msgid ""
+"There are two types of client stub that can be generated, \"executable\" "
+"stubs and \"type\" stubs. Executable stubs are behavioural, and are used to "
+"execute methods against your session bean components, while type stubs "
+"contain state and represent the types that can be passed in as parameters or "
+"returned as a result."
+msgstr ""
+"Se pueden generar dos tipos de stubs de cliente, stubs \"ejecutables\" y "
+"stubs de \"tipo\". Los stubs ejecutables son de comportamiento y se utilizan "
+"para ejecutar métodos frente a los componentes bean de sesión mientras que "
+"los stubs de tipo contienen estado y representan los tipos que se pueden "
+"pasar como parámetros o que se pueden devolver como resultado."
+
+#. Tag: para
+#: Remoting.xml:122
+#, no-c-format
+msgid ""
+"The type of client stub that is generated depends on the type of your Seam "
+"component. If the component is a session bean, then an executable stub will "
+"be generated, otherwise if it&#39;s an entity or JavaBean, then a type stub "
+"will be generated. There is one exception to this rule; if your component is "
+"a JavaBean (ie it is not a session bean nor an entity bean) and any of its "
+"methods are annotated with @WebRemote, then an executable stub will be "
+"generated for it instead of a type stub. This allows you to use remoting to "
+"call methods of your JavaBean components in a non-EJB environment where you "
+"don&#39;t have access to session beans."
+msgstr ""
+"El tipo de stub de cliente se genera dependiendo del tipo de su componente "
+"Seam. Si el componente es un bean de sesión entonces el stub ejecutable se "
+"generará, de otra manera, si es una entidad o JavaBean entonces se generará "
+"un stub de tipo. Hay una sola excepción a esta regla, si su componente es un "
+"JavaBean (por ejemplo, no es un bean de sesión ni un bean de entidad) y "
+"cualquiera de sus métodos se encuentran anotados con @WebRemote después se "
+"generará un stub ejecutable para este en vez de un stub de tipo. Este le "
+"permite utilizar métodos de llamada remotos de nuestros componentes JavaBean "
+"en un entorno que no es EJB en donde no tenga acceso a beans de sesión. "
+
+#. Tag: title
+#: Remoting.xml:125
+#, no-c-format
+msgid "The Context"
+msgstr "El contexto"
+
+#. Tag: para
+#: Remoting.xml:126
+#, no-c-format
+msgid ""
+"The Seam Remoting Context contains additional information which is sent and "
+"received as part of a remoting request/response cycle. At this stage it only "
+"contains the conversation ID but may be expanded in the future."
+msgstr ""
+"El Seam Remoting Context contiene información adicional la cual se envía y "
+"se recibe como parte del ciclo de petición/respuesta remoto. En esta etapa "
+"solamente contiene el ID de conversación pero se puede expandir en el futuro."
+
+#. Tag: title
+#: Remoting.xml:129
+#, no-c-format
+msgid "Setting and reading the Conversation ID"
+msgstr "Configuración y lectura del id de conversación "
+
+#. Tag: para
+#: Remoting.xml:130
+#, no-c-format
+msgid ""
+"If you intend on using remote calls within the scope of a conversation then "
+"you need to be able to read or set the conversation ID in the Seam Remoting "
+"Context. To read the conversation ID after making a remote request call "
+"<literal>Seam.Remoting.getContext().getConversationId()</literal>. To set "
+"the conversation ID before making a request, call <literal>Seam.Remoting."
+"getContext().setConversationId()</literal>."
+msgstr ""
+"Si piensa utilizar las llamadas remotas dentro del ámbito de una "
+"conversación entonces necesita poder leer o configurar el ID de conversación "
+"en el Seam Remoting Context. Para leer el ID de conversacióndespués de "
+"realizar una petición remota llame a <literal>Seam.Remoting.getContext()."
+"getConversationId()</literal>. Para configurar el ID de conversación antes "
+"de realizar una petición llame a <literal>Seam.Remoting.getContext()."
+"setConversationId()</literal>."
+
+#. Tag: para
+#: Remoting.xml:133
+#, no-c-format
+msgid ""
+"If the conversation ID hasn&#39;t been explicitly set with <literal>Seam."
+"Remoting.getContext().setConversationId()</literal>, then it will be "
+"automatically assigned the first valid conversation ID that is returned by "
+"any remoting call. If you are working with multiple conversations within "
+"your page, then you may need to explicitly set the conversation ID before "
+"each call. If you are working with just a single conversation, then you "
+"don&#39;t need to do anything special."
+msgstr ""
+"Si el Id de conversación no se ha configurado de manera explícita con "
+"<literal>Seam.Remoting.getContext().setConversationId()</literal> entonces "
+"se asignará el primer id válido de conversación que cualquier llamada remota "
+"retorne. Si está trabajando con conversaciones múltiples dentro de su página "
+"entonces puede que necesite configurar explícitamente el id de conversación "
+"antes de cada llamada. Si solamente está trabajando con una llamada entonces "
+"no necesita hacer nada en especial. "
+
+#. Tag: title
+#: Remoting.xml:137
+#, no-c-format
+msgid "Batch Requests"
+msgstr "Peticiones por lote"
+
+#. Tag: para
+#: Remoting.xml:138
+#, no-c-format
+msgid ""
+"Seam Remoting allows multiple component calls to be executed within a single "
+"request. It is recommended that this feature is used wherever it is "
+"appropriate to reduce network traffic."
+msgstr ""
+"Seam Remoting permite ejecutar múltiples llamadas de componentes dentro de "
+"una sola petición. Se recomienda utilizar esta característica en donde sea "
+"apropiado reducir el tráfico de la red."
+
+#. Tag: para
+#: Remoting.xml:141
+#, no-c-format
+msgid ""
+"The method <literal>Seam.Remoting.startBatch()</literal> will start a new "
+"batch, and any component calls executed after starting a batch are queued, "
+"rather than being sent immediately. When all the desired component calls "
+"have been added to the batch, the <literal>Seam.Remoting.executeBatch()</"
+"literal> method will send a single request containing all of the queued "
+"calls to the server, where they will be executed in order. After the calls "
+"have been executed, a single response containining all return values will be "
+"returned to the client and the callback functions (if provided) triggered in "
+"the same order as execution."
+msgstr ""
+"El método <literal>Seam.Remoting.startBatch()</literal> iniciará un nuevo "
+"lote y se iniciará una cola con cualquier llamada de componentes que se "
+"ejecute después de iniciar un lote en vez de enviar la llamada "
+"inmediatamente. Cuando todas las llamadas de componentes deseadas se han "
+"añadido al lote, el método <literal>Seam.Remoting.executeBatch()</literal> "
+"enviará una sóla petición que contendrá todas las llamadas en cola hacia el "
+"servidor, en donde se ejecutarán en orden. Después de ejecutar las llamadas "
+"se devolverá una sola respuesta que contendrá todos los valores de retorno "
+"al cliente además de las funciones de retorno de llamadas (si se "
+"proporcionan) disparadas en el mismo orden que la ejecución."
+
+#. Tag: para
+#: Remoting.xml:144
+#, no-c-format
+msgid ""
+"If you start a new batch via the <literal>startBatch()</literal> method but "
+"then decide you don&#39;t want to send it, the <literal>Seam.Remoting."
+"cancelBatch()</literal> method will discard any calls that were queued and "
+"exit the batch mode."
+msgstr ""
+"Si inicia un nuevo lote por medio del método <literal>startBatch()</literal> "
+"pero después decide que no quiere enviarlo, el método <literal>Seam.Remoting."
+"cancelBatch()</literal> descartará cualquier llamada que se encuentre en la "
+"cola y saldrá del modo de uso de lotes. "
+
+#. Tag: para
+#: Remoting.xml:147
+#, no-c-format
+msgid ""
+"To see an example of a batch being used, take a look at <literal>/examples/"
+"remoting/chatroom</literal>."
+msgstr ""
+"Para ver un ejemplo de como se utiliza un lote déle un vistazo a <literal>/"
+"examples/remoting/chatroom</literal>."
+
+#. Tag: title
+#: Remoting.xml:150
+#, no-c-format
+msgid "Working with Data types"
+msgstr "Cómo trabajar con tipos de datos"
+
+#. Tag: title
+#: Remoting.xml:151
+#, no-c-format
+msgid "Primitives / Basic Types"
+msgstr "Tipos primitivo/básico"
+
+#. Tag: para
+#: Remoting.xml:152
+#, no-c-format
+msgid ""
+"This section describes the support for basic data types. On the server side "
+"these values are generally compatible with either their primitive type or "
+"their corresponding wrapper class."
+msgstr ""
+"Esta sección describe el soporte a tipos básicos de datos. Estos valores del "
+"lado del servidor generalmente son compatibles con su tipo primitivo o con "
+"su clase correspondiente para envolver."
+
+#. Tag: title
+#: Remoting.xml:155
+#, no-c-format
+msgid "String"
+msgstr "Cadena"
+
+#. Tag: para
+#: Remoting.xml:156
+#, no-c-format
+msgid ""
+"Simply use Javascript String objects when setting String parameter values."
+msgstr ""
+"Simplemente utilice objetos de cadena Javascript al configurar los valores "
+"de parámetros de cadena."
+
+#. Tag: title
+#: Remoting.xml:159
+#, no-c-format
+msgid "Number"
+msgstr "Número"
+
+#. Tag: para
+#: Remoting.xml:160
+#, no-c-format
+msgid ""
+"There is support for all number types supported by Java. On the client side, "
+"number values are always serialized as their String representation and then "
+"on the server side they are converted to the correct destination type. "
+"Conversion into either a primitive or wrapper type is supported for "
+"<literal>Byte</literal>, <literal>Double</literal>, <literal>Float</"
+"literal>, <literal>Integer</literal>, <literal>Long</literal> and "
+"<literal>Short</literal> types."
+msgstr ""
+"Hay soporte para todos los tipos de números que Java soporta. Del lado del "
+"cliente, los valores de números siempre son serializados como su "
+"representación de cadena y luego del lado del servidor se convierten al tipo "
+"correcto del destino. Los tipos <literal>Byte</literal>, <literal>Double</"
+"literal>, <literal>Float</literal>, <literal>Integer</literal>, "
+"<literal>Long</literal> y <literal>Short</literal> soportan las "
+"conversaciones de tipo primitivo o para envolver."
+
+#. Tag: title
+#: Remoting.xml:163
+#, no-c-format
+msgid "Boolean"
+msgstr "Boolean"
+
+#. Tag: para
+#: Remoting.xml:164
+#, no-c-format
+msgid ""
+"Booleans are represented client side by Javascript Boolean values, and "
+"server side by a Java boolean."
+msgstr ""
+"Los valores booleanos del lado del cliente se representan por medio de "
+"valores booleanos Javascript y del lado del servidor por medio de un valor "
+"boolean Java."
+
+#. Tag: title
+#: Remoting.xml:167
+#, no-c-format
+msgid "JavaBeans"
+msgstr "JavaBeans"
+
+#. Tag: para
+#: Remoting.xml:168
+#, no-c-format
+msgid ""
+"In general these will be either Seam entity or JavaBean components, or some "
+"other non-component class. Use the appropriate method (either <literal>Seam."
+"Component.newInstance()</literal> for Seam components or <literal>Seam."
+"Remoting.createType()</literal> for everything else) to create a new "
+"instance of the object."
+msgstr ""
+"En general estas son entidades Seam o componentes JavaBean o alguna otra "
+"clase de no componentes. Utilice el método apropiado (ya sea <literal>Seam."
+"Component.newInstance()</literal> para componentes Seam o <literal>Seam."
+"Remoting.createType()</literal> para el resto) para crear una nueva "
+"instancia del objeto."
+
+#. Tag: para
+#: Remoting.xml:171
+#, no-c-format
+msgid ""
+"It is important to note that only objects that are created by either of "
+"these two methods should be used as parameter values, where the parameter is "
+"not one of the other valid types mentioned anywhere else in this section. In "
+"some situations you may have a component method where the exact parameter "
+"type cannot be determined, such as:"
+msgstr ""
+"Es importante observar que los objetos que solamente se crean por medio de "
+"cualquiera de estos dos métodos se deben utilizar como valores de "
+"parámetros, en donde el parámetro no es uno de los otros tipos válidos "
+"mencionados en otro lugar de esta sección. En algunas situaciones puede que "
+"tenga un método de componente en donde no se puede determinar el tipo de "
+"parámetro exacto, por ejemplo:"
+
+#. Tag: programlisting
+#: Remoting.xml:174
+#, no-c-format
+msgid ""
+"@Name(\"myAction\")\n"
+"  public class MyAction implements MyActionLocal {\n"
+"    public void doSomethingWithObject(Object obj) {\n"
+"      // code\n"
+"    }\n"
+"  }"
+msgstr ""
+"@Name(\"myAction\")\n"
+"  public class MyAction implements MyActionLocal {\n"
+"    public void doSomethingWithObject(Object obj) {\n"
+"      // code\n"
+"    }\n"
+"  }"
+
+#. Tag: para
+#: Remoting.xml:175
+#, no-c-format
+msgid ""
+"In this case you might want to pass in an instance of your "
+"<literal>myWidget</literal> component, however the interface for "
+"<literal>myAction</literal> won&#39;t include <literal>myWidget</literal> as "
+"it is not directly referenced by any of its methods. To get around this, "
+"<literal>MyWidget</literal> needs to be explicitly imported:"
+msgstr ""
+"En este caso tal vez quiera pasar una instancia de su componente "
+"<literal>myWidget</literal>; sin embargo la interfaz para <literal>myAction</"
+"literal> no incluirá <literal>myWidget</literal> ya que no es referenciado "
+"de manera directa por ninguno de sus métodos. Para solucionar esto es "
+"necesario importar explícitamente <literal>MyWidget</literal>: "
+
+#. Tag: programlisting
+#: Remoting.xml:178
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?myAction&amp;myWidget\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?myAction&amp;myWidget\"&gt;\n"
+"  &lt;/script&gt;"
+
+#. Tag: para
+#: Remoting.xml:179
+#, no-c-format
+msgid ""
+"This will then allow a <literal>myWidget</literal> object to be created with "
+"<literal>Seam.Component.newInstance(\"myWidget\")</literal>, which can then "
+"be passed to <literal>myAction.doSomethingWithObject()</literal>."
+msgstr ""
+"Después esto le permitirá crear un objeto <literal>myWidget</literal> con "
+"<literal>Seam.Component.newInstance(\"myWidget\")</literal>, el cual después "
+"se puede pasar a <literal>myAction.doSomethingWithObject()</literal>."
+
+#. Tag: title
+#: Remoting.xml:182
+#, no-c-format
+msgid "Dates and Times"
+msgstr "Fechas y horas"
+
+#. Tag: para
+#: Remoting.xml:183
+#, no-c-format
+msgid ""
+"Date values are serialized into a String representation that is accurate to "
+"the millisecond. On the client side, use a Javascript Date object to work "
+"with date values. On the server side, use any <literal>java.util.Date</"
+"literal> (or descendent, such as <literal>java.sql.Date</literal> or "
+"<literal>java.sql.Timestamp</literal> class."
+msgstr ""
+"Los valores de los datos se serializan en una representación de cadena que "
+"precisa hasta en milisegundos. Del lado del cliente utilice un objeto "
+"Javascript Date para trabajar con los valores de fechas. Del lado del "
+"servidor utilice cualquier <literal>java.util.Date</literal> (o decendente "
+"como la clase <literal>java.sql.Date</literal> o <literal>java.sql."
+"Timestamp</literal>)."
+
+#. Tag: title
+#: Remoting.xml:186
+#, no-c-format
+msgid "Enums"
+msgstr "Enums"
+
+#. Tag: para
+#: Remoting.xml:187
+#, no-c-format
+msgid ""
+"On the client side, enums are treated the same as Strings. When setting the "
+"value for an enum parameter, simply use the String representation of the "
+"enum. Take the following component as an example:"
+msgstr ""
+"Del lado del cliente los enums se tratan de igual manera que las cadenas. Al "
+"configurar el valor para un parámetro enum simplemente utilice la "
+"representación de cadena del enum. Tome el siguiente componente como ejemplo:"
+
+#. Tag: programlisting
+#: Remoting.xml:190
+#, no-c-format
+msgid ""
+"@Name(\"paintAction\")\n"
+"  public class paintAction implements paintLocal {\n"
+"    public enum Color {red, green, blue, yellow, orange, purple};\n"
+"\n"
+"    public void paint(Color color) {\n"
+"      // code\n"
+"    }    \n"
+"  }"
+msgstr ""
+"@Name(\"paintAction\")\n"
+"  public class paintAction implements paintLocal {\n"
+"    public enum Color {red, green, blue, yellow, orange, purple};\n"
+"\n"
+"    public void paint(Color color) {\n"
+"      // code\n"
+"    }    \n"
+"  }"
+
+#. Tag: para
+#: Remoting.xml:191
+#, no-c-format
+msgid ""
+"To call the <literal>paint()</literal> method with the color <literal>red</"
+"literal>, pass the parameter value as a String literal:"
+msgstr ""
+"Para llamar el método <literal>paint()</literal> con el color <literal>red</"
+"literal> pase el valor del parámetro como un literal de cadena:"
+
+#. Tag: programlisting
+#: Remoting.xml:194
+#, no-c-format
+msgid "Seam.Component.getInstance(\"paintAction\").paint(\"red\");"
+msgstr "Seam.Component.getInstance(\"paintAction\").paint(\"red\");"
+
+#. Tag: para
+#: Remoting.xml:195
+#, no-c-format
+msgid ""
+"The inverse is also true - that is, if a component method returns an enum "
+"parameter (or contains an enum field anywhere in the returned object graph) "
+"then on the client-side it will be represented as a String."
+msgstr ""
+"Lo contrario también es verdadero - es decir si un método de componente "
+"devuelve un parámetro enum (o si contiene un campo enum en cualquier lugar "
+"de la gráfica del objeto devuelto) entonces del lado del cliente será "
+"representado como una cadena."
+
+#. Tag: title
+#: Remoting.xml:198
+#, no-c-format
+msgid "Collections"
+msgstr "Colecciones"
+
+#. Tag: title
+#: Remoting.xml:199
+#, no-c-format
+msgid "Bags"
+msgstr "Bags (bolsas)"
+
+#. Tag: para
+#: Remoting.xml:200
+#, no-c-format
+msgid ""
+"Bags cover all collection types including arrays, collections, lists, sets, "
+"(but excluding Maps - see the next section for those), and are implemented "
+"client-side as a Javascript array. When calling a component method that "
+"accepts one of these types as a parameter, your parameter should be a "
+"Javascript array. If a component method returns one of these types, then the "
+"return value will also be a Javascript array. The remoting framework is "
+"clever enough on the server side to convert the bag to an appropriate type "
+"for the component method call."
+msgstr ""
+"Bags (bolsas) cubren todos los tipos de colecciones incluyendo vectores, "
+"colecciones, listas, grupos (pero excluyendo mapas - encontrará más "
+"información sobre estos en la siguiente sección) y se implementan del lado "
+"del cliente como vectores Javascript. Al llamar un método de componente que "
+"acepta uno de estos tipos como parámetro, su parámetro debe ser un vector "
+"Javascript. Si un método de componente retorna uno de estos tipos entonces "
+"el valor de retorno también será un vector Javascript. El marco de trabajo "
+"remoto es los suficientemente inteligente del lado del servidor para "
+"convertir la bolsa a un tipo apropiado para la llamada de métodos de "
+"componente."
+
+#. Tag: title
+#: Remoting.xml:203
+#, no-c-format
+msgid "Maps"
+msgstr "Mapas"
+
+#. Tag: para
+#: Remoting.xml:204
+#, no-c-format
+msgid ""
+"As there is no native support for Maps within Javascript, a simple Map "
+"implementation is provided with the Seam Remoting framework. To create a Map "
+"which can be used as a parameter to a remote call, create a new "
+"<literal>Seam.Remoting.Map</literal> object:"
+msgstr ""
+"Ya que no hay soporte nativo para mapas dentro de Javascript, se proporciona "
+"una simple implementación de mapeo con el marco de trabajo Seam Remoting. "
+"Para crear un mapeo, el cual se puede utilizar como parámetro para una "
+"llamada remota, cree un nuevo objeto <literal>Seam.Remoting.Map</literal>:"
+
+#. Tag: programlisting
+#: Remoting.xml:207
+#, no-c-format
+msgid "var map = new Seam.Remoting.Map();"
+msgstr "var map = new Seam.Remoting.Map();"
+
+#. Tag: para
+#: Remoting.xml:208
+#, no-c-format
+msgid ""
+"This Javascript implementation provides basic methods for working with Maps: "
+"<literal>size()</literal>, <literal>isEmpty()</literal>, <literal>keySet()</"
+"literal>, <literal>values()</literal>, <literal>get(key)</literal>, "
+"<literal>put(key, value)</literal>, <literal>remove(key)</literal> and "
+"<literal>contains(key)</literal>. Each of these methods are equivalent to "
+"their Java counterpart. Where the method returns a collection, such as "
+"<literal>keySet()</literal> and <literal>values()</literal>, a Javascript "
+"Array object will be returned that contains the key or value objects "
+"(respectively)."
+msgstr ""
+"Esta implementación Javascript proporciona métodos básicos para trabajar con "
+"mapas: <literal>size()</literal>, <literal>isEmpty()</literal>, "
+"<literal>keySet()</literal>, <literal>values()</literal>, <literal>get(key)</"
+"literal>, <literal>put(key, value)</literal>, <literal>remove(key)</literal> "
+"y <literal>contains(key)</literal>. Cada uno de estos métodos es equivalente "
+"a su contraparte de Java. En donde el método devuelve una colección tal como "
+"<literal>keySet()</literal> y <literal>values()</literal>, se devolverá un "
+"objeto array Javascript que contiene la llave o los objetos de valor "
+"(respectivamente)."
+
+#. Tag: title
+#: Remoting.xml:211
+#, no-c-format
+msgid "Debugging"
+msgstr "Depuración"
+
+#. Tag: para
+#: Remoting.xml:212
+#, no-c-format
+msgid ""
+"To aid in tracking down bugs, it is possible to enable a debug mode which "
+"will display the contents of all the packets send back and forth between the "
+"client and server in a popup window. To enable debug mode, either execute "
+"the <literal>setDebug()</literal> method in Javascript:"
+msgstr ""
+"Para ayudar a la identificación de errores es posible habilitar el modo de "
+"depuración, el cual presentará el contenido de todos los paquetes enviados y "
+"recibidos entre el cliente y el servidor en una ventana emergente. Para "
+"habilitar el modo de depuración ejecute el método <literal>setDebug()</"
+"literal> en Javascript:"
+
+#. Tag: programlisting
+#: Remoting.xml:215
+#, no-c-format
+msgid "Seam.Remoting.setDebug(true);"
+msgstr "Seam.Remoting.setDebug(true);"
+
+#. Tag: para
+#: Remoting.xml:216
+#, no-c-format
+msgid "Or configure it via components.xml:"
+msgstr "O configúrelo por medio de components.xml:"
+
+#. Tag: programlisting
+#: Remoting.xml:219
+#, no-c-format
+msgid "&lt;remoting:remoting debug=\"true\"/&gt;"
+msgstr "&lt;remoting:remoting debug=\"true\"/&gt;"
+
+#. Tag: para
+#: Remoting.xml:220
+#, no-c-format
+msgid ""
+"To turn off debugging, call <literal>setDebug(false)</literal>. If you want "
+"to write your own messages to the debug log, call <literal>Seam.Remoting.log"
+"(message)</literal>."
+msgstr ""
+"Para deshabilitar la depuración llame a <literal>setDebug(false)</literal>. "
+"Si quiere escribir sus propios mensajes en el registro de depuración llame a "
+"<literal>Seam.Remoting.log(message)</literal>."
+
+#. Tag: title
+#: Remoting.xml:223
+#, no-c-format
+msgid "The Loading Message"
+msgstr "El mensaje al cargar"
+
+#. Tag: para
+#: Remoting.xml:224
+#, no-c-format
+msgid ""
+"The default loading message that appears in the top right corner of the "
+"screen can be modified, its rendering customised or even turned off "
+"completely."
+msgstr ""
+"El mensaje predeterminado al cargar que aparece en la esquina superior "
+"derecha de la pantalla se puede modificar, personalizar o incluso se puede "
+"apagar por completo."
+
+#. Tag: title
+#: Remoting.xml:227
+#, no-c-format
+msgid "Changing the message"
+msgstr "Cambiar el mensaje"
+
+#. Tag: para
+#: Remoting.xml:228
+#, no-c-format
+msgid ""
+"To change the message from the default \"Please Wait...\" to something "
+"different, set the value of <literal>Seam.Remoting.loadingMessage</literal>:"
+msgstr ""
+"Para cambiar el mensaje predeterminado \"Please Wait...\" a algo diferente "
+"configure el valor de <literal>Seam.Remoting.loadingMessage</literal>:"
+
+#. Tag: programlisting
+#: Remoting.xml:231
+#, no-c-format
+msgid "Seam.Remoting.loadingMessage = \"Loading...\";"
+msgstr "Seam.Remoting.loadingMessage = \"Loading...\";"
+
+#. Tag: title
+#: Remoting.xml:232
+#, no-c-format
+msgid "Hiding the loading message"
+msgstr "Ocultar el mensaje al cargar"
+
+#. Tag: para
+#: Remoting.xml:233
+#, no-c-format
+msgid ""
+"To completely suppress the display of the loading message, override the "
+"implementation of <literal>displayLoadingMessage()</literal> and "
+"<literal>hideLoadingMessage()</literal> with functions that instead do "
+"nothing:"
+msgstr ""
+"Para eliminar por completo el mensaje que aparece al cargar sobrescriba la "
+"implementación de <literal>displayLoadingMessage()</literal> y "
+"<literal>hideLoadingMessage()</literal> con funciones que en su lugar no "
+"hacen nada:"
+
+#. Tag: programlisting
+#: Remoting.xml:236
+#, no-c-format
+msgid ""
+"// don&#39;t display the loading indicator\n"
+"  Seam.Remoting.displayLoadingMessage = function() {};\n"
+"  Seam.Remoting.hideLoadingMessage = function() {};"
+msgstr ""
+"// don&#39;t display the loading indicator\n"
+"  Seam.Remoting.displayLoadingMessage = function() {};\n"
+"  Seam.Remoting.hideLoadingMessage = function() {};"
+
+#. Tag: title
+#: Remoting.xml:237
+#, no-c-format
+msgid "A Custom Loading Indicator"
+msgstr "Indicador de carga personalizado"
+
+#. Tag: para
+#: Remoting.xml:238
+#, no-c-format
+msgid ""
+"It is also possible to override the loading indicator to display an animated "
+"icon, or anything else that you want. To do this override the "
+"<literal>displayLoadingMessage()</literal> and <literal>hideLoadingMessage()"
+"</literal> messages with your own implementation:"
+msgstr ""
+"También es posible sobrescribir el indicador de carga para que presente un "
+"ícono animado o cualquier otra cosa que desee. Para lograr esto sobrescriba "
+"los mensajes <literal>displayLoadingMessage()</literal> y "
+"<literal>hideLoadingMessage()</literal> con su propia implementación:"
+
+#. Tag: programlisting
+#: Remoting.xml:241
+#, no-c-format
+msgid ""
+"Seam.Remoting.displayLoadingMessage = function() {\n"
+"    // Write code here to display the indicator\n"
+"  };\n"
+"  \n"
+"  Seam.Remoting.hideLoadingMessage = function() {\n"
+"    // Write code here to hide the indicator\n"
+"  };"
+msgstr ""
+"Seam.Remoting.displayLoadingMessage = function() {\n"
+"    // Write code here to display the indicator\n"
+"  };\n"
+"  \n"
+"  Seam.Remoting.hideLoadingMessage = function() {\n"
+"    // Write code here to hide the indicator\n"
+"  };"
+
+#. Tag: title
+#: Remoting.xml:242
+#, no-c-format
+msgid "Controlling what data is returned"
+msgstr "Control de los datos que se retornan"
+
+#. Tag: para
+#: Remoting.xml:243
+#, no-c-format
+msgid ""
+"When a remote method is executed, the result is serialized into an XML "
+"response that is returned to the client. This response is then unmarshaled "
+"by the client into a Javascript object. For complex types (i.e. Javabeans) "
+"that include references to other objects, all of these referenced objects "
+"are also serialized as part of the response. These objects may reference "
+"other objects, which may reference other objects, and so forth. If left "
+"unchecked, this object \"graph\" could potentially be enormous, depending on "
+"what relationships exist between your objects. And as a side issue (besides "
+"the potential verbosity of the response), you might also wish to prevent "
+"sensitive information from being exposed to the client."
+msgstr ""
+"Cuando se ejecuta un método remoto, el resultado se serializa en una "
+"respuesta XML que se retorna al cliente. Después el cliente desordena esta "
+"respuesta en un objeto Javascript. Para los tipos complejos (por ejemplo "
+"Javabeans) que incluyen referencias a otros objetos, todos estos objetos "
+"referenciados también son serializados como parte de la respuesta. Estos "
+"objetos pueden referenciar otros objetos , los cuales pueden referenciar "
+"otros objetos y así sucesivamente. Si no se chequea, este objeto \"gráfica\" "
+"puede ser potencialmente enorme, dependiendo de las relaciones que existen "
+"entre los objetos. Además otro factor que se debe tomar en cuenta (además de "
+"la potencial verbosidad de la respuesta) es que también se quiere prevenir "
+"que se exponga información importante al cliente."
+
+#. Tag: para
+#: Remoting.xml:246
+#, no-c-format
+msgid ""
+"Seam Remoting provides a simple means to \"constrain\" the object graph, by "
+"specifying the <literal>exclude</literal> field of the remote method&#39;s "
+"<literal>@WebRemote</literal> annotation. This field accepts a String array "
+"containing one or more paths specified using dot notation. When invoking a "
+"remote method, the objects in the result&#39;s object graph that match these "
+"paths are excluded from the serialized result packet."
+msgstr ""
+"Seam Remoting proporciona un medio simple para \"restringir\"la gráfica del "
+"objeto, especificando el campo <literal>exclude</literal> de la anotación "
+"<literal>@WebRemote</literal> del método remoto. Este campo acepta un vector "
+"cadena que contiene una o más rutas especificadas utilizando la notación de "
+"punto. Al invocar un método remoto, los objetos en la gráfica de objetos de "
+"resultado que coincide con estas rutas se excluyen del paquete de resultados "
+"serializados. "
+
+#. Tag: para
+#: Remoting.xml:249
+#, no-c-format
+msgid ""
+"For all our examples, we&#39;ll use the following <literal>Widget</literal> "
+"class:"
+msgstr ""
+"Para todos nuestros ejemplos vamos a utilizar la siguiente clase "
+"<literal>Widget</literal>: "
+
+#. Tag: programlisting
+#: Remoting.xml:252
+#, no-c-format
+msgid ""
+"@Name(\"widget\")\n"
+"public class Widget\n"
+"{\n"
+"  private String value;\n"
+"  private String secret;\n"
+"  private Widget child;\n"
+"  private Map&lt;String,Widget&gt; widgetMap;\n"
+"  private List&lt;Widget&gt; widgetList;\n"
+"  \n"
+"  // getters and setters for all fields\n"
+"}"
+msgstr ""
+"@Name(\"widget\")\n"
+"public class Widget\n"
+"{\n"
+"  private String value;\n"
+"  private String secret;\n"
+"  private Widget child;\n"
+"  private Map&lt;String,Widget&gt; widgetMap;\n"
+"  private List&lt;Widget&gt; widgetList;\n"
+"  \n"
+"  // getters and setters for all fields\n"
+"}"
+
+#. Tag: title
+#: Remoting.xml:253
+#, no-c-format
+msgid "Constraining normal fields"
+msgstr "Restricción de campos normales"
+
+#. Tag: para
+#: Remoting.xml:254
+#, no-c-format
+msgid ""
+"If your remote method returns an instance of <literal>Widget</literal>, but "
+"you don&#39;t want to expose the <literal>secret</literal> field because it "
+"contains sensitive information, you would constrain it like this:"
+msgstr ""
+"Si su método remoto devuelve una instancia de <literal>Widget</literal> pero "
+"no quiere exponer el campo <literal>secret</literal> ya que contiene "
+"información importante lo puede restringir así: "
+
+#. Tag: programlisting
+#: Remoting.xml:257
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+"@WebRemote(exclude = {\"secret\"})\n"
+"  public Widget getWidget();"
+
+#. Tag: para
+#: Remoting.xml:258
+#, no-c-format
+msgid ""
+"The value \"secret\" refers to the <literal>secret</literal> field of the "
+"returned object. Now, suppose that we don&#39;t care about exposing this "
+"particular field to the client. Instead, notice that the <literal>Widget</"
+"literal> value that is returned has a field <literal>child</literal> that is "
+"also a <literal>Widget</literal>. What if we want to hide the "
+"<literal>child</literal>&#39;s <literal>secret</literal> value instead? We "
+"can do this by using dot notation to specify this field&#39;s path within "
+"the result&#39;s object graph:"
+msgstr ""
+"El valor \"secreto\" se refiere al campo <literal>secret</literal> del "
+"objeto retornado. Ahora suponga que no nos importa exponer este campo en "
+"particular. En su lugar observe que el valor <literal>Widget</literal> que "
+"se devuelve como un campo <literal>child</literal> que también es un "
+"<literal>Widget</literal>. ¿Y si queremos ocultar el valor <literal>secret</"
+"literal>o del <literal>child</literal>? Podemos lograr esto utilizando la "
+"notación de punto para especificar la ruta del campo dentro de la gráfica "
+"del objeto del resultado: "
+
+#. Tag: programlisting
+#: Remoting.xml:261
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"child.secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+"@WebRemote(exclude = {\"child.secret\"})\n"
+"  public Widget getWidget();"
+
+#. Tag: title
+#: Remoting.xml:262
+#, no-c-format
+msgid "Constraining Maps and Collections"
+msgstr "Restricción de mapas y colecciones"
+
+#. Tag: para
+#: Remoting.xml:263
+#, no-c-format
+msgid ""
+"The other place that objects can exist within an object graph are within a "
+"<literal>Map</literal> or some kind of collection (<literal>List</literal>, "
+"<literal>Set</literal>, <literal>Array</literal>, etc). Collections are "
+"easy, and are treated like any other field. For example, if our "
+"<literal>Widget</literal> contained a list of other <literal>Widget</"
+"literal>s in its <literal>widgetList</literal> field, to constrain the "
+"<literal>secret</literal> field of the <literal>Widget</literal>s in this "
+"list the annotation would look like this:"
+msgstr ""
+"El otro lugar en donde pueden existir objetos dentro de una gráfica de "
+"objetos es dentro de un <literal>Map</literal> o alguna clase de colección "
+"(<literal>List</literal>, <literal>Set</literal>, <literal>Array</literal>, "
+"etc). Las colecciones son fáciles y se tratan de igual manera que cualquier "
+"otro campo. Por ejemplo, si nuestro <literal>Widget</literal> contiene una "
+"lista de otros <literal>Widget</literal>s en su campo <literal>widgetList</"
+"literal> para restringir el campo <literal>secret</literal> de los "
+"<literal>Widget</literal>s en esta lista la anotación se vería así:"
+
+#. Tag: programlisting
+#: Remoting.xml:266
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetList.secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+"@WebRemote(exclude = {\"widgetList.secret\"})\n"
+"  public Widget getWidget();"
+
+#. Tag: para
+#: Remoting.xml:267
+#, no-c-format
+msgid ""
+"To constrain a <literal>Map</literal>&#39;s key or value, the notation is "
+"slightly different. Appending <literal>[key]</literal> after the "
+"<literal>Map</literal>&#39;s field name will constrain the <literal>Map</"
+"literal>&#39;s key object values, while <literal>[value]</literal> will "
+"constrain the value object values. The following example demonstrates how "
+"the values of the <literal>widgetMap</literal> field have their "
+"<literal>secret</literal> field constrained:"
+msgstr ""
+"Para restringir la llave o el valor de un <literal>Map</literal>, la "
+"notación es un poco diferente. El añadir <literal>[key]</literal> después "
+"del nombre del campo de <literal>Map</literal> restringirá los valores del "
+"objeto de la llave del <literal>Map</literal> mientras que  <literal>[value]"
+"</literal> restringirá los valores de los objetos de valor. El siguiente "
+"ejemplo demuestra como los valores del campo <literal>widgetMap</literal> "
+"tienen su campo <literal>secret</literal> restringido: "
+
+#. Tag: programlisting
+#: Remoting.xml:270
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetMap[value].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+"@WebRemote(exclude = {\"widgetMap[value].secret\"})\n"
+"  public Widget getWidget();"
+
+#. Tag: title
+#: Remoting.xml:271
+#, no-c-format
+msgid "Constraining objects of a specific type"
+msgstr "Restricción de objetos de un tipo en particular"
+
+#. Tag: para
+#: Remoting.xml:272
+#, no-c-format
+msgid ""
+"There is one last notation that can be used to constrain the fields of a "
+"type of object no matter where in the result&#39;s object graph it appears. "
+"This notation uses either the name of the component (if the object is a Seam "
+"component) or the fully qualified class name (only if the object is not a "
+"Seam component) and is expressed using square brackets:"
+msgstr ""
+"Hay una última notación que se puede utilizar para restringir los campos de "
+"un tipo de objeto sin importar en donde aparezca en la gráfica de objetos "
+"del resultado. Esta notación utiliza el nombre del componente (si el objeto "
+"es un componente Seam) o el nombre de clase completamente calificado (sólo "
+"si el objeto no es un componente Seam) y se expresa utilizando corchetes: "
+
+#. Tag: programlisting
+#: Remoting.xml:275
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"[widget].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+"@WebRemote(exclude = {\"[widget].secret\"})\n"
+"  public Widget getWidget();"
+
+#. Tag: title
+#: Remoting.xml:276
+#, no-c-format
+msgid "Combining Constraints"
+msgstr "Combinación de restricciones"
+
+#. Tag: para
+#: Remoting.xml:277
+#, no-c-format
+msgid ""
+"Constraints can also be combined, to filter objects from multiple paths "
+"within the object graph:"
+msgstr ""
+"Las restricciones también se pueden combinar para filtrar objetos desde "
+"múltiples rutas dentro de la gráfica del objeto:"
+
+#. Tag: programlisting
+#: Remoting.xml:280
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetList.secret\", \"widgetMap[value].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+"@WebRemote(exclude = {\"widgetList.secret\", \"widgetMap[value].secret\"})\n"
+"  public Widget getWidget();"
+
+#. Tag: title
+#: Remoting.xml:281
+#, no-c-format
+msgid "JMS Messaging"
+msgstr "JMS Messaging"
+
+#. Tag: para
+#: Remoting.xml:282
+#, no-c-format
+msgid ""
+"Seam Remoting provides experimental support for JMS Messaging. This section "
+"describes the JMS support that is currently implemented, but please note "
+"that this may change in the future. It is currently not recommended that "
+"this feature is used within a production environment."
+msgstr ""
+"Seam Remoting proporciona soporte experimental para JMS Messaging. Esta "
+"sección describe el soporte JMS que actualmente se está implementado pero "
+"observe que esto puede cambiar en el futuro. Actualmente no se recomienda el "
+"uso de esta característica dentro de un entorno de producción."
+
+#. Tag: para
+#: Remoting.xml:286
+#, no-c-format
+msgid ""
+"Before you can subscribe to a JMS topic, you must first configure a list of "
+"the topics that can be subscribed to by Seam Remoting. List the topics under "
+"<literal>org.jboss.seam.remoting.messaging.subscriptionRegistry."
+"allowedTopics</literal> in <literal>seam.properties</literal>, <literal>web."
+"xml</literal> or <literal>components.xml</literal>."
+msgstr ""
+"Antes de que se pueda suscribir a un tema JMS primero debe configurar una "
+"lista de los temas que Seam Remoting puede suscribir. Enumere los temas bajo "
+"<literal>org.jboss.seam.remoting.messaging.subscriptionRegistry."
+"allowedTopics</literal> en <literal>seam.properties</literal>, <literal>web."
+"xml</literal> o <literal>components.xml</literal>."
+
+#. Tag: programlisting
+#: Remoting.xml:289 Remoting.xml:322
+#, no-c-format
+msgid "&lt;remoting:remoting poll-timeout=\"5\" poll-interval=\"1\"/&gt;"
+msgstr "&lt;remoting:remoting poll-timeout=\"5\" poll-interval=\"1\"/&gt;"
+
+#. Tag: title
+#: Remoting.xml:290
+#, no-c-format
+msgid "Subscribing to a JMS Topic"
+msgstr "Suscripción a un tema JMS"
+
+#. Tag: para
+#: Remoting.xml:291
+#, no-c-format
+msgid "The following example demonstrates how to subscribe to a JMS Topic:"
+msgstr "El siguiente ejemplo demuestra como suscribirse a un tema JMS:"
+
+#. Tag: programlisting
+#: Remoting.xml:294
+#, no-c-format
+msgid ""
+"function subscriptionCallback(message)\n"
+"  {\n"
+"    if (message instanceof Seam.Remoting.TextMessage)\n"
+"      alert(\"Received message: \" + message.getText());\n"
+"  }        \n"
+"        \n"
+"  Seam.Remoting.subscribe(\"topicName\", subscriptionCallback);"
+msgstr ""
+"function subscriptionCallback(message)\n"
+"  {\n"
+"    if (message instanceof Seam.Remoting.TextMessage)\n"
+"      alert(\"Received message: \" + message.getText());\n"
+"  }        \n"
+"        \n"
+"  Seam.Remoting.subscribe(\"topicName\", subscriptionCallback);"
+
+#. Tag: para
+#: Remoting.xml:295
+#, no-c-format
+msgid ""
+"The <literal>Seam.Remoting.subscribe()</literal> method accepts two "
+"parameters, the first being the name of the JMS Topic to subscribe to, the "
+"second being the callback function to invoke when a message is received."
+msgstr ""
+"El método <literal>Seam.Remoting.subscribe()</literal> acepta dos "
+"parámetros, el primero es el nombre del tema JMS al cual se va a suscribir, "
+"el segundo es la función de retorno de llamada para invocar cuando se recibe "
+"un mensaje."
+
+#. Tag: para
+#: Remoting.xml:298
+#, no-c-format
+msgid ""
+"There are two types of messages supported, Text messages and Object "
+"messages. If you need to test for the type of message that is passed to your "
+"callback function you can use the <literal>instanceof</literal> operator to "
+"test whether the message is a <literal>Seam.Remoting.TextMessage</literal> "
+"or <literal>Seam.Remoting.ObjectMessage</literal>. A <literal>TextMessage</"
+"literal> contains the text value in its <literal>text</literal> field (or "
+"alternatively call <literal>getText()</literal> on it), while an "
+"<literal>ObjectMessage</literal> contains its object value in its "
+"<literal>object</literal> field (or call its <literal>getObject()</literal> "
+"method)."
+msgstr ""
+"Hay dos tipos de mensajes soportados: mensajes de texto y de objetos. Si "
+"necesita probar el tipo de mensaje que se le pasa a su función de retorno de "
+"llamada puede utilizar el operador <literal>instanceof</literal> para probar "
+"si el mensaje es <literal>Seam.Remoting.TextMessage</literal> o "
+"<literal>Seam.Remoting.ObjectMessage</literal>. Un <literal>TextMessage</"
+"literal> contiene el valor de texto en su campo <literal>text</literal> (o "
+"de otra manera puede llamara a <literal>getText()</literal> en el) mientras "
+"que un <literal>ObjectMessage</literal> contiene su valor de objeto en su "
+"campo <literal>object</literal>(o llamar su método <literal>getObject()</"
+"literal>)."
+
+#. Tag: title
+#: Remoting.xml:301
+#, no-c-format
+msgid "Unsubscribing from a Topic"
+msgstr "Cancelación de la suscripción a un tema"
+
+#. Tag: para
+#: Remoting.xml:302
+#, no-c-format
+msgid ""
+"To unsubscribe from a topic, call <literal>Seam.Remoting.unsubscribe()</"
+"literal> and pass in the topic name:"
+msgstr ""
+"Para cancelar la suscripción a un tema llame a <literal>Seam.Remoting."
+"unsubscribe()</literal> y pase el nombre del tema:"
+
+#. Tag: programlisting
+#: Remoting.xml:305
+#, no-c-format
+msgid "Seam.Remoting.unsubscribe(\"topicName\");"
+msgstr "Seam.Remoting.unsubscribe(\"topicName\");"
+
+#. Tag: title
+#: Remoting.xml:306
+#, no-c-format
+msgid "Tuning the Polling Process"
+msgstr "Afinación del proceso de sondeo "
+
+#. Tag: para
+#: Remoting.xml:307
+#, no-c-format
+msgid ""
+"There are two parameters which you can modify to control how polling occurs. "
+"The first one is <literal>Seam.Remoting.pollInterval</literal>, which "
+"controls how long to wait between subsequent polls for new messages. This "
+"parameter is expressed in seconds, and its default setting is 10."
+msgstr ""
+"Puede modificar dos parámetros para poder controlar la manera en que tiene "
+"lugar el sondeo. El primer parámetro es <literal>Seam.Remoting.pollInterval</"
+"literal>, el cual controla el tiempo que debe esperar entre sondeos "
+"subsecuentes para mensajes nuevos. Este parámetro se expresa en segundos y "
+"su valor predeterminado es diez."
+
+#. Tag: para
+#: Remoting.xml:310
+#, no-c-format
+msgid ""
+"The second parameter is <literal>Seam.Remoting.pollTimeout</literal>, and is "
+"also expressed as seconds. It controls how long a request to the server "
+"should wait for a new message before timing out and sending an empty "
+"response. Its default is 0 seconds, which means that when the server is "
+"polled, if there are no messages ready for delivery then an empty response "
+"will be immediately returned."
+msgstr ""
+"El segundo parámetro es <literal>Seam.Remoting.pollTimeout</literal> y "
+"también se expresa en segundos. Controla cuanto tiempo debe esperar una "
+"petición al servidor en espera de un mensaje nuevo antes de desconectar y "
+"enviar una respuesta vacía. Su valor predeterminado es cero segundos, lo "
+"cual significa que cuando se sondea el servidor si no hay mensajes listos "
+"para entregar entonces se devolverá una respuesta vacía de manera inmediata."
+
+#. Tag: para
+#: Remoting.xml:313
+#, no-c-format
+msgid ""
+"Caution should be used when setting a high <literal>pollTimeout</literal> "
+"value; each request that has to wait for a message means that a server "
+"thread is tied up until a message is received, or until the request times "
+"out. If many such requests are being served simultaneously, it could mean a "
+"large number of threads become tied up because of this reason."
+msgstr ""
+"Debe tener cuidado al utilizar un valor <literal>pollTimeout</literal> alto; "
+"cada petición que tiene que esperar por un mensaje significa que un hilo del "
+"servidor se encuentra ocupado hasta que recibe un mensaje o hasta que la "
+"petición expira. Si se sirven muchas peticiones de manera simultánea puede "
+"implicar que se ocupe un gran número de hilos por esta razón."
+
+#. Tag: para
+#: Remoting.xml:316
+#, no-c-format
+msgid ""
+"It is recommended that you set these options via components.xml, however "
+"they can be overridden via Javascript if desired. The following example "
+"demonstrates how to configure the polling to occur much more aggressively. "
+"You should set these parameters to suitable values for your application:"
+msgstr ""
+"Se recomienda que configure estas opciones por medio de components.xml; sin "
+"embargo, estas se pueden sobrescribir utilizando Javascript si así se "
+"quiere. El siguiente ejemplo demuestra como configurar el sondeo para que "
+"ocurra de una manera mucho más agresiva. Debe configurar estos parámetros "
+"con valores apropiados para su aplicación:"
+
+#. Tag: para
+#: Remoting.xml:319
+#, no-c-format
+msgid "Via components.xml:"
+msgstr "Por medio de components.xml:"
+
+#. Tag: para
+#: Remoting.xml:323
+#, no-c-format
+msgid "Via JavaScript:"
+msgstr "Por medio de JavaScript:"
+
+#. Tag: programlisting
+#: Remoting.xml:326
+#, no-c-format
+msgid ""
+"// Only wait 1 second between receiving a poll response and sending the next "
+"poll request.\n"
+"  Seam.Remoting.pollInterval = 1;\n"
+"  \n"
+"  // Wait up to 5 seconds on the server for new messages\n"
+"  Seam.Remoting.pollTimeout = 5;"
+msgstr ""
+"// Only wait 1 second between receiving a poll response and sending the next "
+"poll request.\n"
+"  Seam.Remoting.pollInterval = 1;\n"
+"  \n"
+"  // Wait up to 5 seconds on the server for new messages\n"
+"  Seam.Remoting.pollTimeout = 5;"

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Seam_Reference_Guide.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Seam_Reference_Guide.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Seam_Reference_Guide.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,471 @@
+# translation of Seam_Reference_Guide.po to
+# translation of Reference_Guide.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Seam_Reference_Guide\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-02-04 23:29+0000\n"
+"PO-Revision-Date: 2007-10-23 11:29+1000\n"
+"Last-Translator: Angela Garcia\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Seam_Reference_Guide.xml:9
+#, no-c-format
+msgid "Introduction to JBoss Seam"
+msgstr "Introducción a JBoss Seam"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:10
+#, no-c-format
+msgid ""
+"Seam is an application framework for Java EE 5. It is inspired by the "
+"following principles:"
+msgstr ""
+"Seam es un marco de trabajo de aplicaciones para Java EE 5 y está inspirado "
+"en los siguientes principios:"
+
+#. Tag: emphasis
+#: Seam_Reference_Guide.xml:15
+#, no-c-format
+msgid "Integrate JSF with EJB 3.0"
+msgstr "Integración de JSF con EJB 3.0"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:17
+#, no-c-format
+msgid ""
+"JSF and EJB 3.0 are two of the best new features of Java EE 5. EJB3 is a "
+"brand new component model for server side business and persistence logic. "
+"Meanwhile, JSF is a great component model for the presentation tier. "
+"Unfortunately, neither component model is able to solve all problems in "
+"computing by itself. Indeed, JSF and EJB3 work best used together. But the "
+"Java EE 5 specification provides no standard way to integrate the two "
+"component models. Fortunately, the creators of both models foresaw this "
+"situation and provided standard extension points to allow extension and "
+"integration of other solutions."
+msgstr ""
+"JSF y EJB 3.0 son dos de las mejores características nuevas de Java EE 5. "
+"EJB3 es un nuevo modelo de componentes para la lógica de persistencia y para "
+"el servidor del lado empresarial. Al mismo tiempo JSF es un grandioso modelo "
+"de componentes para el nivel de presentación. Desafortunadamente, ningún "
+"modelo de componentes puede resolver todos los problemas por sí mismo. De "
+"hecho, JSF y EJB3 funcionan mejor si se utilizan juntos. Pero la "
+"especificación Java EE 5 no proporciona una manera estándar para integrar "
+"los dos modelos de componentes. Afortunadamente los creadores de ambos "
+"modelos previeron esta situación y proporcionaron puntos de extensión "
+"estándares para permitir la extensión e integración de otras soluciones."
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:20
+#, no-c-format
+msgid ""
+"Seam unifies the component models of JSF and EJB3, eliminating glue code, "
+"and letting the developer think about the business problem."
+msgstr ""
+"Seam unifica los modelos de componentes de JSF y EJB3, eliminando el código "
+"intermedio y permitiendo que el desarrollador se enfoque en pensar en el "
+"problema empresarial."
+
+#. Tag: emphasis
+#: Seam_Reference_Guide.xml:26
+#, no-c-format
+msgid "Integrated AJAX"
+msgstr "AJAX integrado"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:28
+#, no-c-format
+msgid ""
+"Seam supports two open source JSF-based AJAX solutions: ICEfaces and "
+"Ajax4JSF. These solutions let you add AJAX capability to your user interface "
+"without the need to write any JavaScript code."
+msgstr ""
+"Seam soporta dos soluciones AJAX de código libre basadas en JSF: ICEfaces y "
+"Ajax4JSF. Estas soluciones le permiten añadir las capacidades de AJAX a su "
+"interfaz de usuario sin la necesidad de escribir código JavaScript."
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:31
+#, no-c-format
+msgid ""
+"Seam also provides a built-in JavaScript remoting layer for EJB3 components. "
+"AJAX clients can easily call server-side components and subscribe to JMS "
+"topics, without the need for an intermediate action layer."
+msgstr ""
+"Seam también proporciona una capa remota JavaScript para componentes EJB3. "
+"Los clientes AJAX pueden llamar fácilmente componentes del lado del servidor "
+"y suscribirse a temas JMS sin la necesidad de una capa de acción intermedia."
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:34
+#, no-c-format
+msgid ""
+"Neither of these approaches would work well, were it not for Seam&#39;s "
+"built-in concurrency and state management, which ensures that many "
+"concurrent fine-grained, asynchronous AJAX requests are handled safely and "
+"efficiently on the server side."
+msgstr ""
+"Ninguno de estos enfoques funcionaría bien si no fuera por la administración "
+"de estado y concurrencia de Seam que aseguran que se manejen de manera "
+"segura y eficiente muchos pedidos AJAX asincrónicos y simultáneos del lado "
+"del servidor. "
+
+#. Tag: emphasis
+#: Seam_Reference_Guide.xml:40
+#, no-c-format
+msgid "Integrate Business Process as a First Class Construct"
+msgstr ""
+"Integración de un proceso empresarial como construcción de primera clase"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:42
+#, no-c-format
+msgid ""
+"Optionally, Seam integrates transparent business process management via "
+"jBPM. You won&#39;t believe how easy it is to implement complex workflows "
+"using jBPM and Seam."
+msgstr ""
+"Opcionalmente, Seam integra la administración de procesos empresariales "
+"transparentes por medio de jBPM. No va a creer lo fácil que es implementar "
+"flujos de trabajo complejos utilizando jBPM y Seam."
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:45
+#, no-c-format
+msgid ""
+"Seam even allows definition of presentation tier conversation flow by the "
+"same means."
+msgstr ""
+"Inclusive Seam permite la definición del flujo de conversación de la capa de "
+"presentación por medio de los mismos medios."
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:48
+#, no-c-format
+msgid ""
+"JSF provides an incredibly rich event model for the presentation tier. Seam "
+"enhances this model by exposing jBPM&#39;s business process related events "
+"via exactly the same event handling mechanism, providing a uniform event "
+"model for Seam&#39;s uniform component model."
+msgstr ""
+"JSF proporciona un modelo de eventos increiblemente rico para la capa de "
+"presentación. Seam mejora este modelo exponiendo los eventos relacionados "
+"con los procesos empresariales de jBPM por medio del mismo mecanismo de "
+"manejo de eventos, proporcionando un modelo de eventos uniformes para el "
+"modelo de componentes uniforme de Seam. "
+
+#. Tag: emphasis
+#: Seam_Reference_Guide.xml:54
+#, no-c-format
+msgid "One Kind of \"Stuff\""
+msgstr "Una clase de \"cosas\""
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:56
+#, no-c-format
+msgid ""
+"Seam provides a uniform component model. A Seam component may be stateful, "
+"with the state associated to any one of a number of contexts, ranging from "
+"the long-running business process to a single web request."
+msgstr ""
+"Seam proporciona un modelo de componentes uniforme. Un componente Seam puede "
+"tener estado, el cual puede estar asociado a cualquiera de los contextos, "
+"que va desde los procesos empresariales largos hasta un sólo pedido web."
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:59
+#, no-c-format
+msgid ""
+"There is no distinction between presentation tier components and business "
+"logic components in Seam. It is possible to write Seam applications where "
+"\"everything\" is an EJB. This may come as a surprise if you are used to "
+"thinking of EJBs as coarse-grained, heavyweight objects that are a pain in "
+"the backside to create! However, EJB 3.0 completely changes the nature of "
+"EJB from the point of view of the developer. An EJB is a fine-grained object "
+"- nothing more complex than an annotated JavaBean. Seam even encourages you "
+"to use session beans as JSF action listeners!"
+msgstr ""
+"No hay diferencia entre los componentes del nivel de presentación y loc "
+"componentes de la lógica empresarial en Seam. Es posible escribir "
+"aplicaciones Seam en donde \"todo\" es un EJB. Esto le puede sorprender si "
+"está acostumbrado a pensar que ¡los EJBs son objetos de peso pesado que son "
+"un fastidio de crear! Sin embargo, EJB 3.0 cambia por completo la naturaleza "
+"de EJB desde el punto de vista del desarrollador. Un EJB es un objeto "
+"detallado - nada más complejo que un JavaBean anotado. Incluso Seam le anima "
+"a que utilice beans de sesión como ¡escuhas de acciones JSF!"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:62
+#, no-c-format
+msgid ""
+"Unlike plain Java EE or J2EE components, Seam components may "
+"<emphasis>simultaneously</emphasis> access state associated with the web "
+"request and state held in transactional resources (without the need to "
+"propagate web request state manually via method parameters). You might "
+"object that the application layering imposed upon you by the old J2EE "
+"platform was a Good Thing. Well, nothing stops you creating an equivalent "
+"layered architecture using Seam - the difference is that <emphasis>you</"
+"emphasis> get to architect your own application and decide what the layers "
+"are and how they work together."
+msgstr ""
+"A diferencia de los componentes Java EE o J2EE, los componentes Seam pueden "
+"acceder <emphasis>simultaneamente</emphasis>  el estado asociado con los "
+"pedidos web y el estado que se mantiene en los recursos transaccionales (sin "
+"la necesidad de propagar el estado de los pedidos web manualmente por medio "
+"de los parámetros de métodos). Puede objetar que las capas de aplicaciones "
+"que la antigua plataforma J2EE le impuso era algo bueno. Bien, nada le "
+"detiene a crear una arquitectura en capas equivalente utilizando Seam - la "
+"diferencia es que <emphasis>usted</emphasis> necesita construir su propia "
+"aplicación y decidir cuales son las capas y como funcionan juntas."
+
+#. Tag: emphasis
+#: Seam_Reference_Guide.xml:68
+#, no-c-format
+msgid "Declarative State Management"
+msgstr "Administración del estado declarativo"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:70
+#, no-c-format
+msgid ""
+"We are all used to the concept of declarative transaction management and "
+"J2EE declarative security from EJB 2.x. EJB 3.0 even introduces declarative "
+"persistence context management. These are three examples of a broader "
+"problem of managing state that is associated with a particular "
+"<emphasis>context</emphasis>, while ensuring that all needed cleanup occurs "
+"when the context ends. Seam takes the concept of declarative state "
+"management much further and applies it to <emphasis>application state</"
+"emphasis>. Traditionally, J2EE applications almost always implement state "
+"management manually, by getting and setting servlet session and request "
+"attributes. This approach to state management is the source of many bugs and "
+"memory leaks when applications fail to clean up session attributes, or when "
+"session data associated with different workflows collides in a multi-window "
+"application. Seam has the potential to almost entirely eliminate this class "
+"of bugs."
+msgstr ""
+"Todos estamos acostumbrados al concepto de administración de transacciones "
+"declarativas y a la seguridad declarativa J2EE desde EJB 2.x. Inclusive EJB "
+"3.0 introduce la administración de contexto de persistencia declarativo. "
+"Estos son tres ejemplos de un problema aún más grande relacionado con la "
+"administración de estado que se asocia con un <emphasis>contexto</emphasis> "
+"en particular a su vez asegurándose de que todas las limpiezas necesarias "
+"tengan lugar cuando el contexto termina. Seam toma el concepto de "
+"administración de estado declarativo mucho más alla y lo aplica al "
+"<emphasis>estado de la aplicación</emphasis>. Tradicionalmente, las "
+"aplicaciones J2EE casi siempre implementan la administración de estado "
+"manualmente obteniendo y configurando sesiones de servlet y pidiendo "
+"atributos. Este enfoque a la administración de estado es la fuente de muchos "
+"errores y de escape de memoria cuando las aplicaciones no logran limpiar los "
+"atributos de sesión o cuando los datos de sesión asociados con diferentes "
+"flujos de trabajo chocan con una aplicación multi-ventanas. Seam tiene el "
+"potencial de eliminar casi por completo esta clase de errores."
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:73
+#, no-c-format
+msgid ""
+"Declarative application state management is made possible by the richness of "
+"the <emphasis>context model</emphasis> defined by Seam. Seam extends the "
+"context model defined by the servlet spec&mdash;request, session, "
+"application&mdash;with two new contexts&mdash;conversation and business "
+"process&mdash;that are more meaningful from the point of view of the "
+"business logic."
+msgstr ""
+"La administración de estado de aplicaciones declarativas es posible debido a "
+"la riqueza del <emphasis>modelo de contexto</emphasis> definido por Seam. "
+"Seam extiende el modelo de contexto definido por el pedido del servlet, la "
+"sesión, la aplicación con dos contextos nuevos, el proceso empresarial y de "
+"conversación que son más importantes desde el punto de vista de la lógica "
+"empresarial."
+
+#. Tag: emphasis
+#: Seam_Reference_Guide.xml:79
+#, no-c-format
+msgid "Bijection"
+msgstr "Biyección"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:81
+#, no-c-format
+msgid ""
+"The notion of <emphasis>Inversion of Control</emphasis> or "
+"<emphasis>dependency injection</emphasis> exists in both JSF and EJB3, as "
+"well as in numerous so-called \"lighweight containers\". Most of these "
+"containers emphasize injection of components that implement "
+"<emphasis>stateless services</emphasis>. Even when injection of stateful "
+"components is supported (such as in JSF), it is virtually useless for "
+"handling application state because the scope of the stateful component "
+"cannot be defined with sufficient flexibility."
+msgstr ""
+"La noción de <emphasis>Inversión de control</emphasis> o <emphasis>inyección "
+"de dependencia</emphasis> existe tanto en JSF como en EJB3 así como en "
+"muchos llamados \"contenedores de peso ligero\". La mayoría de estos "
+"contenedores enfatizan la inyección de componentes que implementan "
+"<emphasis>servicios sin estado</emphasis>. Aún cuando se soporta la "
+"inyección de componentes con estado (tal como en JSF) virtualmente es inútil "
+"para el manejo del estado de aplicaciones ya que el ámbito del componente "
+"con estado se puede definir con suficiente flexibilidad."
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:84
+#, no-c-format
+msgid ""
+"<emphasis>Bijection</emphasis> differs from IoC in that it is "
+"<emphasis>dynamic</emphasis>, <emphasis>contextual</emphasis>, and "
+"<emphasis>bidirectional</emphasis>. You can think of it as a mechanism for "
+"aliasing contextual variables (names in the various contexts bound to the "
+"current thread) to attributes of the component. Bijection allows auto-"
+"assembly of stateful components by the container. It even allows a component "
+"to safely and easily manipulate the value of a context variable, just by "
+"assigning to an attribute of the component."
+msgstr ""
+"La <emphasis>biyección</emphasis> es diferente de IoC ya que es "
+"<emphasis>dinámico</emphasis>, <emphasis>contextual</emphasis>, y "
+"<emphasis>bidireccional</emphasis>. Puede considerarlo como un mecanismo "
+"para usar alias para las variables contextuales (nombres en los varios "
+"contextos vinculados al hilo actual) con los atributos del componente. La "
+"biyección le permite al contenedor el auto-montaje de componentes con "
+"estado. Incluso le permite a un componente manipular de manera segura y "
+"fácil el valor de una variable de contexto con sólo asignar a un atributo "
+"del componente."
+
+#. Tag: emphasis
+#: Seam_Reference_Guide.xml:90
+#, no-c-format
+msgid "Workspace Management"
+msgstr "Administración del espacio de trabajo"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:92
+#, no-c-format
+msgid ""
+"Optionally, Seam applications may take advantage of <emphasis>workspace "
+"management</emphasis>, allowing users to freely switch between different "
+"conversations (workspaces) in a single browser window. Seam provides not "
+"only correct multi-window operation, but also multi-window-like operation in "
+"a single window!"
+msgstr ""
+"Opcionalmente, las aplicaciones Seam pueden sacar ventaja de la "
+"<emphasis>administración del espacio de trabajo</emphasis>, permitiéndole a "
+"los usuarios cambiar libremente entre conversaciones diferentes (espacios de "
+"trabajo) en una sola ventana del navegador. Seam proporciona no solamente "
+"una correcta operación para multi ventanas si no que también operación como "
+"si fuese multi ventanas pero ¡en una sola ventana!"
+
+#. Tag: emphasis
+#: Seam_Reference_Guide.xml:98
+#, no-c-format
+msgid "Annotated POJOs Everywhere"
+msgstr "POJOs anotados en todo lugar"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:100
+#, no-c-format
+msgid ""
+"EJB 3.0 embraces annotations and \"configuration by exception\" as the "
+"easiest way to provide information to the container in a declarative form. "
+"Unfortunately, JSF is still heavily dependent on verbose XML configuration "
+"files. Seam extends the annotations provided by EJB 3.0 with a set of "
+"annotations for declarative state management and declarative context "
+"demarcation. This lets you eliminate the noisy JSF managed bean declarations "
+"and reduce the required XML to just that information which truly belongs in "
+"XML (the JSF navigation rules)."
+msgstr ""
+"EJB 3.0 adopta las anotaciones y la \"configuración por excepción\" como la "
+"manera más fácil de proporcionar información al contenedor en una forma "
+"declarativa. Desafortunadamente JSF todavía es altamente dependiente de los "
+"archivos de configuración XML verbosos. Seam extiende las anotaciones que "
+"EJB 3.0 proporciona con un grupo de anotaciones para la administración de "
+"estado declarativo y la demarcación del contexto declarativo. Esto le "
+"permite eliminar las ruidosas declaraciones bean administradas por JSF y "
+"reducir el XML requerido a sólo esa información que realmente pertenece a "
+"XML (las reglas de navegación JSF)."
+
+#. Tag: emphasis
+#: Seam_Reference_Guide.xml:106
+#, no-c-format
+msgid "Testability as a Core Feature"
+msgstr "La habilidad para probar como una característica principal"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:108
+#, no-c-format
+msgid ""
+"Seam components, being POJOs, are by nature unit testable. But for complex "
+"applications, unit testing alone is insufficient. Integration testing has "
+"traditionally been a messy and difficult task for Java web applications. "
+"Therefore, Seam provides for testability of Seam applications as a core "
+"feature of the framework. You can easily write JUnit or TestNG tests that "
+"reproduce a whole interaction with a user, exercising all components of the "
+"system apart from the view (the JSP or Facelets page). You can run these "
+"tests directly inside your IDE, where Seam will automatically deploy EJB "
+"components into the JBoss Embeddable EJB3 container."
+msgstr ""
+"Los componentes Seam, siendo POJOs, por naturaleza se pueden probar como "
+"unidades. Pero para aplicaciones complejas la prueba de unidades por sí "
+"solas no es suficiente. Tradicionalmente la prueba de integración ha sido "
+"una tarea desordenada y difícil para las aplicaciones web de Java. Por "
+"consiguiente, Seam estipula la prueba de aplicaciones Seam como "
+"característica principal del marco de trabajo. Puede escribir fácilmente "
+"pruebas TestNG o JUnit que reproducen una interacción completa con un "
+"usuario ejercitando todos los componentes del sistema aparte de la vista (la "
+"página Facelets o JSP). Puede ejecutar estas pruebas directamente dentro de "
+"su IDE, en donde Seam desplegará automáticamente los componentes EJB en el "
+"contenedor JBoss Embeddable EJB3."
+
+#. Tag: emphasis
+#: Seam_Reference_Guide.xml:114
+#, no-c-format
+msgid "Get started now!"
+msgstr "¡Ya puede empezar!"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:116
+#, no-c-format
+msgid ""
+"Seam works in any application server that supports EJB 3.0. You can even use "
+"Seam in a servlet container like Tomcat, or in any J2EE application server, "
+"by leveraging the new JBoss Embeddable EJB3 container."
+msgstr ""
+"Seam funciona en cualquier servidor de aplicaciones que soporte EJB 3.0. "
+"Inclusive puede utilizar Seam en un contenedor servlet como Tomcat o en "
+"cualquier servidor de aplicaciones J2EE tomando ventaja del nuevo contenedor "
+"JBoss Embeddable EJB."
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:119
+#, no-c-format
+msgid ""
+"However, we realize that not everyone is ready to make the switch to EJB "
+"3.0. So, in the interim, you can use Seam as a framework for applications "
+"that use JSF for presentation, Hibernate (or plain JDBC) for persistence and "
+"JavaBeans for application logic. Then, when you&#39;re ready to make the "
+"switch to EJB 3.0, migration will be straightforward."
+msgstr ""
+"Sin embargo, nos damos cuenta de que no todo el mundo está listo para "
+"cambiar a EJB 3.0 así que mientras tanto puede utilizar Seam como marco de "
+"trabajo para aquellas aplicaciones que utilizan JSF para presentación, "
+"Hibernate (o JDBC plano) para persistencia y JavaBeans para lógica de "
+"aplicaciones. Entonces cuando se encuentre listo para cambiar a EJB 3.0 la "
+"migración será bastante fácil. "
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:133
+#, no-c-format
+msgid ""
+"It turns out that the combination of Seam, JSF and EJB3 is <emphasis>the</"
+"emphasis> simplest way to write a complex web application in Java. You "
+"won&#39;t believe how little code is required!"
+msgstr ""
+"Resulta que la combinación de Seam, JSF y EJB3 es la manera más "
+"<emphasis>simple</emphasis> de escribir una aplicación web compleja en Java. "
+"¡No va a creer el poco código que se necesita!"

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Security.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Security.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Security.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2569 @@
+# translation of Security.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Xi HUANG <xhuang at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Security\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 01:04+0000\n"
+"PO-Revision-Date: 2007-10-29 11:32+1000\n"
+"Last-Translator: Angela Garcia\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Security.xml:6
+#, no-c-format
+msgid "Security"
+msgstr "Seguridad"
+
+#. Tag: para
+#: Security.xml:7
+#, no-c-format
+msgid ""
+"The Seam Security API is an optional Seam feature that provides "
+"authentication and authorization features for securing both domain and page "
+"resources within your Seam project."
+msgstr ""
+"La API para seguridad de Seam es una característica opcional de Seam que "
+"proporciona facilidades de autenticación y autorización para asegurar tanto "
+"recursos de dominio como de página dentro de su proyecto Seam."
+
+#. Tag: title
+#: Security.xml:10
+#, no-c-format
+msgid "Overview"
+msgstr "Sinopsis"
+
+#. Tag: para
+#: Security.xml:11
+#, no-c-format
+msgid "Seam Security provides two different modes of operation:"
+msgstr "La seguridad para Seam proporciona dos modos diferentes de operación:"
+
+#. Tag: para
+#: Security.xml:16
+#, no-c-format
+msgid ""
+"<emphasis>simplified mode</emphasis> - this mode supports authentication "
+"services and simple role-based security checks."
+msgstr ""
+"<emphasis>modo simplificado</emphasis> - este modo soporta servicios de "
+"autenticación y chequeos de seguridad con base en roles."
+
+#. Tag: para
+#: Security.xml:21
+#, no-c-format
+msgid ""
+"<emphasis>advanced mode</emphasis> - this mode supports all the same "
+"features as the simplified mode, plus it offers rule-based security checks "
+"using JBoss Rules."
+msgstr ""
+"<emphasis>modo avanzado</emphasis> - este modo soporta las mismas "
+"características que el modo simplificado y además ofrece chequeos de "
+"seguridad con base en reglas utilizando JBoss Rules."
+
+#. Tag: title
+#: Security.xml:26
+#, no-c-format
+msgid "Which mode is right for my application?"
+msgstr "¿Qué modo es el adecuado para mi aplicación?"
+
+#. Tag: para
+#: Security.xml:27
+#, no-c-format
+msgid ""
+"That all depends on the requirements of your application. If you have "
+"minimal security requirements, for example if you only wish to restrict "
+"certain pages and actions to users who are logged in, or who belong to a "
+"certain role, then the simplified mode will probably be sufficient. The "
+"advantages of this is a more simplified configuration, significantly less "
+"libraries to include, and a smaller memory footprint."
+msgstr ""
+"Todo depende de los requerimientos de su aplicación. Si tiene requerimientos "
+"de seguridad mínimos, por ejemplo, si sólo desea restringir ciertas páginas "
+"y ciertas acciones para los usuarios que han iniciado sesión o que "
+"pertenencen a cierto rol entonces el modo simplificado probablemente será "
+"suficiente. Las ventajas de esto es que cuenta con una configuración más "
+"simplificada, muchas menos bibliotecas a incluir y huellas de memoria mucho "
+"más pequeñas."
+
+#. Tag: para
+#: Security.xml:30
+#, no-c-format
+msgid ""
+"If on the other hand, your application requires security checks based on "
+"contextual state or complex business rules, then you will require the "
+"features provided by the advanced mode."
+msgstr ""
+"Si por otro lado su aplicación requiere chequeos de seguridad con base en "
+"estado contextual o reglas empresariales complejas entonces necesitará las "
+"características que proporciona el modo avanzado."
+
+#. Tag: title
+#: Security.xml:33
+#, no-c-format
+msgid "Requirements"
+msgstr "Requerimientos"
+
+#. Tag: para
+#: Security.xml:34
+#, no-c-format
+msgid ""
+"If using the advanced mode features of Seam Security, the following jar "
+"files are required to be configured as modules in <literal>application.xml</"
+"literal>. If you are using Seam Security in simplified mode, these are "
+"<emphasis>not</emphasis> required:"
+msgstr ""
+"Si utiliza las características del modo avanzado de seguridad de Seam "
+"necesita que los siguientes archivos jar se configuren como módulos en "
+"<literal>application.xml</literal>. Si está utilizando seguridad para Seam "
+"en modo simplificado <emphasis>no</emphasis> los necesita:"
+
+#. Tag: para
+#: Security.xml:39
+#, no-c-format
+msgid "drools-compiler-3.0.5.jar"
+msgstr "drools-compiler-3.0.5.jar"
+
+#. Tag: para
+#: Security.xml:44
+#, no-c-format
+msgid "drools-core-3.0.5.jar"
+msgstr "drools-core-3.0.5.jar"
+
+#. Tag: para
+#: Security.xml:49
+#, no-c-format
+msgid "commons-jci-core-1.0-406301.jar"
+msgstr "commons-jci-core-1.0-406301.jar"
+
+#. Tag: para
+#: Security.xml:54
+#, no-c-format
+msgid "commons-jci-janino-2.4.3.jar"
+msgstr "commons-jci-janino-2.4.3.jar"
+
+#. Tag: para
+#: Security.xml:59
+#, no-c-format
+msgid "commons-lang-2.1.jar"
+msgstr "commons-lang-2.1.jar"
+
+#. Tag: para
+#: Security.xml:64
+#, no-c-format
+msgid "janino-2.4.3.jar"
+msgstr "janino-2.4.3.jar"
+
+#. Tag: para
+#: Security.xml:69
+#, no-c-format
+msgid "stringtemplate-2.3b6.jar"
+msgstr "stringtemplate-2.3b6.jar"
+
+#. Tag: para
+#: Security.xml:74
+#, no-c-format
+msgid "antlr-2.7.6.jar"
+msgstr "antlr-2.7.6.jar"
+
+#. Tag: para
+#: Security.xml:79
+#, no-c-format
+msgid "antlr-3.0ea8.jar"
+msgstr "antlr-3.0ea8.jar"
+
+#. Tag: para
+#: Security.xml:84
+#, no-c-format
+msgid ""
+"For web-based security, <literal>jboss-seam-ui.jar</literal> must also be "
+"included in the application&#39;s war file. Also, to make use of the "
+"security EL functions, <literal>SeamFaceletViewHandler</literal> must be "
+"used. Configure it in <literal>faces-config.xml</literal> like this:"
+msgstr ""
+"Para la seguridad con base en la web también se debe incluir <literal>jboss-"
+"seam-ui.jar</literal> en el archivo war de la aplicación. También para poder "
+"utilizar las funciones EL de seguridad se debe utilizar "
+"<literal>SeamFaceletViewHandler</literal>. Configúrelo en <literal>faces-"
+"config.xml</literal> así: "
+
+#. Tag: programlisting
+#: Security.xml:87
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;view-handler&gt;org.jboss.seam.ui.facelet.SeamFaceletViewHandler&lt;/"
+"view-handler&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+"&lt;application&gt;\n"
+"    &lt;view-handler&gt;org.jboss.seam.ui.facelet.SeamFaceletViewHandler&lt;/"
+"view-handler&gt;\n"
+"&lt;/application&gt;"
+
+#. Tag: title
+#: Security.xml:88
+#, no-c-format
+msgid "Authentication"
+msgstr "Autenticación"
+
+#. Tag: para
+#: Security.xml:89
+#, no-c-format
+msgid ""
+"The authentication features provided by Seam Security are built upon JAAS "
+"(Java Authentication and Authorization Service), and as such provide a "
+"robust and highly configurable API for handling user authentication. "
+"However, for less complex authentication requirements Seam offers a much "
+"more simplified method of authentication that hides the complexity of JAAS."
+msgstr ""
+"Las características de autenticación que la seguridad de Seam proporciona se "
+"contruyen sobre JAAS (del ingles Java Authentication and Authorization "
+"Service) y como tal proporciona una API altamente configurable y robusta "
+"para manejar la autenticación de usuarios. Sin embargo, para requerimientos "
+"de autenticación menos complejos Seam ofrece un método mucho más "
+"simplificado que oculta la complejidad de JAAS."
+
+#. Tag: title
+#: Security.xml:92
+#, no-c-format
+msgid "Configuration"
+msgstr "Configuración"
+
+#. Tag: para
+#: Security.xml:93
+#, no-c-format
+msgid ""
+"The simplified authentication method uses a built-in JAAS login module, "
+"<literal>SeamLoginModule</literal>, which delegates authentication to one of "
+"your own Seam components. This login module is already configured inside "
+"Seam as part of a default application policy and as such does not require "
+"any additional configuration files. It allows you to write an authentication "
+"method using the entity classes that are provided by your own application. "
+"Configuring this simplified form of authentication requires the "
+"<literal>identity</literal> component to be configured in "
+"<literal>components.xml</literal>:"
+msgstr ""
+"El método de autenticación simplificado utiliza un módulo de registro de "
+"entrada JAAS incorporado, <literal>SeamLoginModule</literal>, el cual delega "
+"la autenticación a uno de sus propios componentes Seam. Este módulo de "
+"registro de entrada ya se encuentra configurado dentro de Seam como parte de "
+"la política de aplicación predeterminada y como tal no requiere ningún "
+"archivo de configuración adicional. Le permite escribir un método de "
+"autenticación utilizando las clases de entidad que su propia aplicación "
+"proporciona. Para configurar esta forma simplificada de autenticación "
+"necesita configurar el componente <literal>identity</literal> en "
+"<literal>components.xml</literal>:"
+
+#. Tag: programlisting
+#: Security.xml:96
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:security=\"http://jboss.com/products/seam/security\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core http://jboss.com/"
+"products/seam/core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components http://jboss.com/"
+"products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/drools http://jboss.com/"
+"products/seam/drools-1.2.xsd\"\n"
+"                 http://jboss.com/products/seam/security http://jboss.com/"
+"products/seam/security-1.2.xsd\"&gt;                \n"
+"        \n"
+"    &lt;security:identity authenticate-method=\"#{authenticator.authenticate}"
+"\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:security=\"http://jboss.com/products/seam/security\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core http://jboss.com/"
+"products/seam/core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components http://jboss.com/"
+"products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/drools http://jboss.com/"
+"products/seam/drools-1.2.xsd\"\n"
+"                 http://jboss.com/products/seam/security http://jboss.com/"
+"products/seam/security-1.2.xsd\"&gt;                \n"
+"        \n"
+"    &lt;security:identity authenticate-method=\"#{authenticator.authenticate}"
+"\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Security.xml:97
+#, no-c-format
+msgid ""
+"If you wish to use the advanced security features such as rule-based "
+"permission checks, all you need to do is include the Drools (JBoss Rules) "
+"jars in your classpath, and add some additional configuration, described "
+"later."
+msgstr ""
+"Si desea utilizar las características avanzadas de seguridad tal como los "
+"chequeos de permisos con base en reglas todo lo que tiene que hacer es "
+"incluir las jars Drools (JBoss Rules) en su ruta de clase y añadir un poco "
+"de configuración adicional que se describe más adelante."
+
+#. Tag: para
+#: Security.xml:100
+#, no-c-format
+msgid ""
+"The EL expression <literal>#{authenticator.authenticate}</literal> is a "
+"method binding indicating that the <literal>authenticate</literal> method of "
+"the <literal>authenticator</literal> component will be used to authenticate "
+"the user."
+msgstr ""
+"La expresión EL <literal>#{authenticator.authenticate}</literal> es un "
+"método de vinculación que indica que el método <literal>authenticate</"
+"literal> del componente <literal>authenticator</literal> se utilizará para "
+"autenticar el usuario."
+
+#. Tag: title
+#: Security.xml:103
+#, no-c-format
+msgid "Writing an authentication method"
+msgstr "Cómo escribir un método de autenticación"
+
+#. Tag: para
+#: Security.xml:104
+#, no-c-format
+msgid ""
+"The <literal>authenticate-method</literal> property specified for "
+"<literal>identity</literal> in <literal>components.xml</literal> specifies "
+"which method will be used by <literal>SeamLoginModule</literal> to "
+"authenticate users. This method takes no parameters, and is expected to "
+"return a boolean indicating whether authentication is successful or not. The "
+"user&#39;s username and password can be obtained from <literal>Identity."
+"instance().getUsername()</literal> and <literal>Identity.instance()."
+"getPassword()</literal>, respectively. Any roles that the user is a member "
+"of should be assigned using <literal>Identity.instance().addRole()</"
+"literal>. Here&#39;s a complete example of an authentication method inside a "
+"JavaBean component:"
+msgstr ""
+"La propiedad <literal>authenticate-method</literal> especificada para "
+"<literal>identity</literal> en <literal>components.xml</literal> especifica "
+"que método <literal>SeamLoginModule</literal> utilizará para autenticar los "
+"usuarios. Este método no toma parámetros y se espera que devuelva un valor "
+"boolean indicando si la autenticación fue exitosa o no. El nombre del "
+"usuario y su contraseña se pueden obtener de <literal>Identity.instance()."
+"getUsername()</literal> e <literal>Identity.instance().getPassword()</"
+"literal> respectivamente. Cualquier rol del cual el usuario sea miembro se "
+"debe asignar utilizando <literal>Identity.instance().addRole()</literal>. "
+"Aquí encontrará un ejemplo completo de un método de autenticación dentro de "
+"un componente JavaBean:"
+
+#. Tag: programlisting
+#: Security.xml:107
+#, no-c-format
+msgid ""
+"@Name(\"authenticator\")\n"
+"public class Authenticator {\n"
+"   @In EntityManager entityManager;\n"
+"   \n"
+"   public boolean authenticate() {\n"
+"      try\n"
+"      {\n"
+"         User user = (User) entityManager.createQuery(\n"
+"            \"from User where username = :username and password = :password"
+"\")\n"
+"            .setParameter(\"username\", Identity.instance().getUsername())\n"
+"            .setParameter(\"password\", Identity.instance().getPassword())\n"
+"            .getSingleResult();\n"
+"\n"
+"         if (user.getRoles() != null)\n"
+"         {\n"
+"            for (UserRole mr : user.getRoles())\n"
+"               Identity.instance().addRole(mr.getName());\n"
+"         }\n"
+"\n"
+"         return true;\n"
+"      }\n"
+"      catch (NoResultException ex)\n"
+"      {\n"
+"         FacesMessages.instance().add(\"Invalid username/password\");\n"
+"         return false;\n"
+"      }\n"
+"      \n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+"@Name(\"authenticator\")\n"
+"public class Authenticator {\n"
+"   @In EntityManager entityManager;\n"
+"   \n"
+"   public boolean authenticate() {\n"
+"      try\n"
+"      {\n"
+"         User user = (User) entityManager.createQuery(\n"
+"            \"from User where username = :username and password = :password"
+"\")\n"
+"            .setParameter(\"username\", Identity.instance().getUsername())\n"
+"            .setParameter(\"password\", Identity.instance().getPassword())\n"
+"            .getSingleResult();\n"
+"\n"
+"         if (user.getRoles() != null)\n"
+"         {\n"
+"            for (UserRole mr : user.getRoles())\n"
+"               Identity.instance().addRole(mr.getName());\n"
+"         }\n"
+"\n"
+"         return true;\n"
+"      }\n"
+"      catch (NoResultException ex)\n"
+"      {\n"
+"         FacesMessages.instance().add(\"Invalid username/password\");\n"
+"         return false;\n"
+"      }\n"
+"      \n"
+"   }\n"
+"   \n"
+"}"
+
+#. Tag: para
+#: Security.xml:108
+#, no-c-format
+msgid ""
+"In the above example, both <literal>User</literal> and <literal>UserRole</"
+"literal> are application-specific entity beans. The <literal>roles</literal> "
+"parameter is populated with the roles that the user is a member of, which "
+"should be added to the <literal>Set</literal> as literal string values, e.g. "
+"\"admin\", \"user\". In this case, if the user record is not found and a "
+"<literal>NoResultException</literal> thrown, the authentication method "
+"returns <literal>false</literal> to indicate the authentication failed."
+msgstr ""
+"En el ejemplo anterior, <literal>User</literal> y <literal>UserRole</"
+"literal> son beans de entidad especificos a la aplicación. El parámetro "
+"<literal>roles</literal> se llena con los roles de los que el usuario es "
+"miembro, los cuales se deben añadir a <literal>Set</literal> como valores de "
+"cadena literales, por ejemplo, \"admin\", \"user\". En este caso, si no se "
+"encuentra el registro del usuario y se entrega una "
+"<literal>NoResultException</literal> entonces el método de autenticación "
+"devuelve <literal>false</literal> para indicar que la autenticación falló."
+
+#. Tag: title
+#: Security.xml:111
+#, no-c-format
+msgid "Writing a login form"
+msgstr "Cómo escribir un formato para iniciar una sesión"
+
+#. Tag: para
+#: Security.xml:112
+#, no-c-format
+msgid ""
+"The <literal>Identity</literal> component provides both <literal>username</"
+"literal> and <literal>password</literal> properties, catering for the most "
+"common authentication scenario. These properties can be bound directly to "
+"the username and password fields on a login form. Once these properties are "
+"set, calling the <literal>identity.login()</literal> method will "
+"authenticate the user using the provided credentials. Here&#39;s an example "
+"of a simple login form:"
+msgstr ""
+"El componente <literal>Identity</literal> proporciona las propiedades "
+"<literal>username</literal> y <literal>password</literal> que satisfacen los "
+"escenarios de autenticación más comunes. Estas propiedades se pueden "
+"vincular directamente a los campos de la contraseña y del nombre de usuario "
+"en un formulario para iniciar una sesión. Una vez estas propiedades están "
+"configuradas el llamar el método <literal>identity.login()</literal> "
+"autenticará el usuario utilizando las credenciales que se proporcionan. Este "
+"es un ejemplo de un formato simple de inicio de sesión:"
+
+#. Tag: programlisting
+#: Security.xml:115
+#, no-c-format
+msgid ""
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"name\" value=\"Username\"/&gt;\n"
+"    &lt;h:inputText id=\"name\" value=\"#{identity.username}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"password\" value=\"Password\"/&gt;\n"
+"    &lt;h:inputSecret id=\"password\" value=\"#{identity.password}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;div&gt;\n"
+"    &lt;h:commandButton value=\"Login\" action=\"#{identity.login}\"/&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"name\" value=\"Username\"/&gt;\n"
+"    &lt;h:inputText id=\"name\" value=\"#{identity.username}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"password\" value=\"Password\"/&gt;\n"
+"    &lt;h:inputSecret id=\"password\" value=\"#{identity.password}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;div&gt;\n"
+"    &lt;h:commandButton value=\"Login\" action=\"#{identity.login}\"/&gt;\n"
+"&lt;/div&gt;"
+
+#. Tag: para
+#: Security.xml:116
+#, no-c-format
+msgid ""
+"Similarly, logging out the user is done by calling <literal>#{identity."
+"logout}</literal>. Calling this action will clear the security state of the "
+"currently authenticated user."
+msgstr ""
+"De manera similar, para terminar la sesión se llama a <literal>#{identity."
+"logout}</literal>. El llamar esta acción limpiará el estado de seguridad del "
+"usuario actualmente autenticado."
+
+#. Tag: title
+#: Security.xml:119
+#, no-c-format
+msgid "Simplified Configuration - Summary"
+msgstr "Configuración simplificada - resumen"
+
+#. Tag: para
+#: Security.xml:120
+#, no-c-format
+msgid "So to sum up, there are the three easy steps to configure authentication:"
+msgstr ""
+"En resumen hay tres pasos fáciles de seguir para poder configurar la "
+"autenticación: "
+
+#. Tag: para
+#: Security.xml:125
+#, no-c-format
+msgid "Configure an authentication method in <literal>components.xml</literal>."
+msgstr "Configure un método de autenticación en <literal>components.xml</literal>."
+
+#. Tag: para
+#: Security.xml:130
+#, no-c-format
+msgid "Write an authentication method."
+msgstr "Escriba un método de autenticación."
+
+#. Tag: para
+#: Security.xml:135
+#, no-c-format
+msgid "Write a login form so that the user can authenticate."
+msgstr "Escriba un formulario de inicio de sesión que el usuario pueda autenticar."
+
+#. Tag: title
+#: Security.xml:140
+#, no-c-format
+msgid "Handling Security Exceptions"
+msgstr "Manejo de excepciones de seguridad"
+
+#. Tag: para
+#: Security.xml:141
+#, no-c-format
+msgid ""
+"To prevent users from receiving the default error page in response to a "
+"security error, it&#39;s recommended that <literal>pages.xml</literal> is "
+"configured to redirect security errors to a more \"pretty\" page. The two "
+"main types of exceptions thrown by the security API are:"
+msgstr ""
+"Para evitar que los usuarios reciban la página de error predeterminada en "
+"respuesta a un error de seguridad se recomienda que <literal>pages.xml</"
+"literal> se configure para redireccionar errores de seguridad a una página "
+"un poco más \"bonita\". Los dos tipos principales de excepciones que la API "
+"de seguridad emite son:"
+
+#. Tag: para
+#: Security.xml:146
+#, no-c-format
+msgid ""
+"<literal>NotLoggedInException</literal> - This exception is thrown if the "
+"user attempts to access a restricted action or page when they are not logged "
+"in."
+msgstr ""
+"<literal>NotLoggedInException</literal> - Esta excepción se presenta si el "
+"usuario trata de acceder a una acción o a una página restringida cuando no "
+"tiene una sesión abierta."
+
+#. Tag: para
+#: Security.xml:151
+#, no-c-format
+msgid ""
+"<literal>AuthorizationException</literal> - This exception is only thrown if "
+"the user is already logged in, and they have attempted to access a "
+"restricted action or page for which they do not have the necessary "
+"privileges."
+msgstr ""
+"<literal>AuthorizationException</literal> - Esta excepción sólamente se "
+"presenta si el usuario ya tiene una sesión abierta y si han tratado de "
+"acceder a una acción o página restringidas para las cuales no cuentan con "
+"los privilegios necesarios."
+
+#. Tag: para
+#: Security.xml:156
+#, no-c-format
+msgid ""
+"In the case of a <literal>NotLoggedInException</literal>, it is recommended "
+"that the user is redirected to either a login or registration page so that "
+"they can log in. For an <literal>AuthorizationException</literal>, it may be "
+"useful to redirect the user to an error page. Here&#39;s an example of a "
+"<literal>pages.xml</literal> file that redirects both of these security "
+"exceptions:"
+msgstr ""
+"En el caso de un <literal>NotLoggedInException</literal> se recomienda que "
+"se redireccione el usuario ya sea a una página de inicio de sesión o a una "
+"página de registro para que pueda iniciar la sesión. Para un "
+"<literal>AuthorizationException</literal> puede llegar a ser útil el "
+"redireccionar a una página de error. Este es un ejemplo de un archivo "
+"<literal>pages.xml</literal> que redirecciona estas excepciones de "
+"seguridad: "
+
+#. Tag: programlisting
+#: Security.xml:159
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"\n"
+"    ...\n"
+"    \n"
+"    &lt;exception class=\"org.jboss.seam.security.NotLoggedInException"
+"\"&gt;\n"
+"        &lt;redirect view-id=\"/login.xhtml\"&gt;\n"
+"            &lt;message&gt;You must be logged in to perform this action&lt;/"
+"message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"    \n"
+"    &lt;exception class=\"org.jboss.seam.security.AuthorizationException"
+"\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"        &lt;redirect view-id=\"/security_error.xhtml\"&gt;\n"
+"            &lt;message&gt;\n"
+"                              You do not have the necessary security "
+"privileges to perform this action.\n"
+"            &lt;/message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"  \n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"\n"
+"    ...\n"
+"    \n"
+"    &lt;exception class=\"org.jboss.seam.security.NotLoggedInException"
+"\"&gt;\n"
+"        &lt;redirect view-id=\"/login.xhtml\"&gt;\n"
+"            &lt;message&gt;You must be logged in to perform this action&lt;/"
+"message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"    \n"
+"    &lt;exception class=\"org.jboss.seam.security.AuthorizationException"
+"\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"        &lt;redirect view-id=\"/security_error.xhtml\"&gt;\n"
+"            &lt;message&gt;\n"
+"                              You do not have the necessary security "
+"privileges to perform this action.\n"
+"            &lt;/message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"  \n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Security.xml:160
+#, no-c-format
+msgid ""
+"Most web applications require even more sophisticated handling of login "
+"redirection, so Seam includes some special functionality for handling this "
+"problem."
+msgstr ""
+"La mayoría de las aplicaciones web requieren un manejo aún más sofisticado "
+"de la redirección a la pantalla de inicio de sesión así que Seam incluye "
+"algunas funcionalidades especiales para manejar este problema."
+
+#. Tag: title
+#: Security.xml:163
+#, no-c-format
+msgid "Login Redirection"
+msgstr "Redirección a la pantalla de inicio de sesión"
+
+#. Tag: para
+#: Security.xml:164
+#, no-c-format
+msgid ""
+"You can ask Seam to redirect the user to a login screen when an "
+"unauthenticated user tries to access a particular view (or wildcarded view "
+"id) as follows:"
+msgstr ""
+"Le puede pedir a Seam que redireccione el usuario a una pantalla de inicio "
+"de sesión cuando un usuario no autenticado trata de acceder a una vista en "
+"particular (o un id de vista con comodín) como se muestra a continuación:"
+
+#. Tag: programlisting
+#: Security.xml:167
+#, no-c-format
+msgid ""
+"&lt;pages login-view-id=\"/login.xhtml\"&gt;\n"
+"\n"
+"    &lt;page view-id=\"/members/*\" login-required=\"true\"/&gt;\n"
+"    \n"
+"    ...\n"
+"    \n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages login-view-id=\"/login.xhtml\"&gt;\n"
+"\n"
+"    &lt;page view-id=\"/members/*\" login-required=\"true\"/&gt;\n"
+"    \n"
+"    ...\n"
+"    \n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Security.xml:168
+#, no-c-format
+msgid ""
+"(This is less of a blunt instrument than the exception handler shown above, "
+"but should probably be used in conjunction with it.)"
+msgstr ""
+"-Este es un instrumento menos desatinado que el manejador de excepciones que "
+"se mostró anteriormente pero probablemente se debe utilizar junto con este."
+
+#. Tag: para
+#: Security.xml:171
+#, no-c-format
+msgid ""
+"After the user logs in, we want to automatically send them back where they "
+"came from, so they can retry the action that required logging in. If you add "
+"the following event listeners to <literal>components.xml</literal>, attempts "
+"to access a restricted view while not logged in will be remembered, so that "
+"upon the user successfully logging in they will be redirected to the "
+"originally requested view, with any page parameters that existed in the "
+"original request."
+msgstr ""
+"Después de que el usuario ha inicado la sesión queremos enviarlos "
+"automáticamente de regreso a donde se encontraban para que puedan re "
+"intentar la acción que requería que inciaran la sesión primero. Si añade los "
+"siguiente escuchas de eventos a <literal>components.xml</literal>, se "
+"recordarán los intentos de acceder a una vista restringida sin haber "
+"iniciado una sesión, de manera que una vez que el usuario ha iniciado la "
+"sesión de manera exitosa se le redireccionará a la vista que originalmente "
+"pidieron con cualquiera de los parámetros de página que existían en la "
+"petición original."
+
+#. Tag: programlisting
+#: Security.xml:174
+#, no-c-format
+msgid ""
+"&lt;event type=\"org.jboss.seam.notLoggedIn\"&gt;\n"
+"    &lt;action expression=\"#{redirect.captureCurrentView}\"/&gt;\n"
+"&lt;/event&gt;\n"
+"    \n"
+"&lt;event type=\"org.jboss.seam.postAuthenticate\"&gt;\n"
+"    &lt;action expression=\"#{redirect.returnToCapturedView}\"/&gt;\n"
+"&lt;/event&gt;"
+msgstr ""
+"&lt;event type=\"org.jboss.seam.notLoggedIn\"&gt;\n"
+"    &lt;action expression=\"#{redirect.captureCurrentView}\"/&gt;\n"
+"&lt;/event&gt;\n"
+"    \n"
+"&lt;event type=\"org.jboss.seam.postAuthenticate\"&gt;\n"
+"    &lt;action expression=\"#{redirect.returnToCapturedView}\"/&gt;\n"
+"&lt;/event&gt;"
+
+#. Tag: para
+#: Security.xml:175
+#, no-c-format
+msgid ""
+"Note that login redirection is implemented as a conversation-scoped "
+"mechanism, so don&#39;t end the conversation in your <literal>authenticate()"
+"</literal> method."
+msgstr ""
+"Observe que la redirección a la pantalla de inicio de sesión se implementa "
+"como un mecanismo de ámbito de conversación así que no de fin a la "
+"conversación en su método <literal>authenticate()</literal>. "
+
+#. Tag: title
+#: Security.xml:178
+#, no-c-format
+msgid "Advanced Authentication Features"
+msgstr "Características avanzadas de autenticación"
+
+#. Tag: para
+#: Security.xml:179
+#, no-c-format
+msgid ""
+"This section explores some of the advanced features provided by the security "
+"API for addressing more complex security requirements."
+msgstr ""
+"Esta sección explora algunas de las características avanzadas que el API de "
+"seguridad proporciona para abordar requerimientos de seguridad más complejos."
+
+#. Tag: title
+#: Security.xml:182
+#, no-c-format
+msgid "Using your container&#39;s JAAS configuration"
+msgstr "Uso de la configuración JAAS de su contenedor "
+
+#. Tag: para
+#: Security.xml:183
+#, no-c-format
+msgid ""
+"If you would rather not use the simplified JAAS configuration provided by "
+"the Seam Security API, you may instead delegate to the default system JAAS "
+"configuration by providing a <literal>jaasConfigName</literal> property in "
+"<literal>components.xml</literal>. For example, if you are using JBoss AS "
+"and wish to use the <literal>other</literal> policy (which uses the "
+"<literal>UsersRolesLoginModule</literal> login module provided by JBoss AS), "
+"then the entry in <literal>components.xml</literal> would look like this:"
+msgstr ""
+"Si prefiere no utilizar la configuración simplificada JAAS que la API de "
+"seguridad de Seam proporciona entonces puede delegar la configuración "
+"predeterminada JAAS del sistema proporcionando una propiedad "
+"<literal>jaasConfigName</literal> en <literal>components.xml</literal>. Por "
+"ejemplo, si está utilizando JBoss AS y desea utilizar la política "
+"<literal>other</literal> (la cual usa el módulo de inicio de sesión "
+"<literal>UsersRolesLoginModule</literal> que JBoss AS proporciona) entonces "
+"la entrada en <literal>components.xml</literal> se vería así:"
+
+#. Tag: programlisting
+#: Security.xml:186
+#, no-c-format
+msgid ""
+"&lt;security:identity authenticate-method=\"#{authenticator.authenticate}"
+"\" \n"
+"                      jaas-config-name=\"other\"/&gt;"
+msgstr ""
+"&lt;security:identity authenticate-method=\"#{authenticator.authenticate}"
+"\" \n"
+"                      jaas-config-name=\"other\"/&gt;"
+
+#. Tag: title
+#: Security.xml:187
+#, no-c-format
+msgid "Error Messages"
+msgstr "Mensajes de error"
+
+#. Tag: para
+#: Security.xml:188
+#, no-c-format
+msgid ""
+"The security API produces a number of default faces messages for various "
+"security-related events. The following table lists the message keys that can "
+"be used to override these messages by specifying them in a <literal>message."
+"properties</literal> resource file."
+msgstr ""
+"La API de seguridad produce un número de mensajes de faces predeterminados "
+"para varios de los eventos relacionados con seguridad. La siguiente tabla "
+"enumera las claves de mensajes que se pueden utilizar para sobrescribir "
+"estos mensajes especificándolos en un archivo de recursos <literal>message."
+"properties</literal>."
+
+#. Tag: title
+#: Security.xml:192
+#, no-c-format
+msgid "Security Message Keys"
+msgstr "Claves de mensajes de seguridad"
+
+#. Tag: literal
+#: Security.xml:200
+#, no-c-format
+msgid "org.jboss.seam.loginSuccessful"
+msgstr "org.jboss.seam.loginSuccessful"
+
+#. Tag: para
+#: Security.xml:204
+#, no-c-format
+msgid ""
+"This message is produced when a user successfully logs in via the security "
+"API."
+msgstr ""
+"Este mensaje se presenta cuando un usuario logra iniciar sesión por medio de "
+"la API de seguridad."
+
+#. Tag: literal
+#: Security.xml:212
+#, no-c-format
+msgid "org.jboss.seam.loginFailed"
+msgstr "org.jboss.seam.loginFailed"
+
+#. Tag: para
+#: Security.xml:216
+#, no-c-format
+msgid ""
+"This message is produced when the login process fails, either because the "
+"user provided an incorrect username or password, or because authentication "
+"failed in some other way."
+msgstr ""
+"Este mensaje se produce cuando el proceso de inicio de sesión falla ya sea "
+"porque el usuario proporcionó una contraseña o un nombre de usuario "
+"incorrecto o porque la autenticación falló en alguna manera."
+
+#. Tag: literal
+#: Security.xml:224
+#, no-c-format
+msgid "org.jboss.seam.NotLoggedIn"
+msgstr "org.jboss.seam.NotLoggedIn"
+
+#. Tag: para
+#: Security.xml:228
+#, no-c-format
+msgid ""
+"This message is produced when a user attempts to perform an action or access "
+"a page that requires a security check, and the user is not currently "
+"authenticated."
+msgstr ""
+"Este mensaje se produce cuando un usuario intenta realizar una acción o "
+"cuando trata de acceder una página que requiere un chequeo de seguridad y el "
+"usuario no se encuentra autenticado."
+
+#. Tag: title
+#: Security.xml:236
+#, no-c-format
+msgid "Authorization"
+msgstr "Autorización"
+
+#. Tag: para
+#: Security.xml:237
+#, no-c-format
+msgid ""
+"There are a number of authorization features provided by the Seam Security "
+"API for securing access to components, component methods, and pages. This "
+"section describes each of these. An important thing to note is that if you "
+"wish to use any of the advanced features (such as rule-based permissions) "
+"then your <literal>components.xml</literal> must be configured to support "
+"this - see the Configuration section above."
+msgstr ""
+"Hay un número de características de autorización que la API de seguridad de "
+"Seam proporciona para asegurar el acceso a componentes, métodos de "
+"componentes y páginas, esta sección describe cada uno de ellos. Una cosa "
+"importante que se debe observar es que si desea utilizar cualquiera de las "
+"características avanzadas (tal como los permisos con base en reglas) "
+"entonces su <literal>components.xml</literal> debe estar configurado para "
+"soportar esto - consulte la sección anterior sobre la configuración. "
+
+#. Tag: title
+#: Security.xml:240
+#, no-c-format
+msgid "Core concepts"
+msgstr "Conceptos esenciales"
+
+#. Tag: para
+#: Security.xml:241
+#, no-c-format
+msgid ""
+"Each of the authorization mechanisms provided by the Seam Security API are "
+"built upon the concept of a user being granted roles and/or permissions. A "
+"role is a <emphasis>group</emphasis>, or <emphasis>type</emphasis>, of user "
+"that may have been granted certain privileges for performing one or more "
+"specific actions within an application. A permission on the other hand is a "
+"privilege (sometimes once-off) for performing a single, specific action. It "
+"is entirely possible to build an application using nothing but permissions, "
+"however roles offer a higher level of convenience when granting privileges "
+"to groups of users."
+msgstr ""
+"Cada uno de los mecanismos de autorización que la API de seguridad de Seam "
+"proporciona se construyen sobre el concepto de un usuario al que se le "
+"otorgan roles y/o permisos. Un rol es un <emphasis>grupo</emphasis> o "
+"<emphasis>tipo</emphasis> de usuario al cual se le pueden haber otorgado "
+"ciertos privilegios para realizar una o más acciones específicas dentro de "
+"una aplicación. Por otro lado, un permiso es un privilegio ( que a veces "
+"aplica una sóla vez) para realizar una sóla acción específica. Es "
+"completamente posible el construir una aplicación utilizando sólamente "
+"permisos; sin embargo, los roles ofrecen una mayor facilidad al poder "
+"otorgar privilegios a grupos de usuarios."
+
+#. Tag: para
+#: Security.xml:244
+#, no-c-format
+msgid ""
+"Roles are simple, consisting of only a name such as \"admin\", \"user\", "
+"\"customer\", etc. Permissions consist of both a name and an action, and are "
+"represented within this documentation in the form <literal>name:action</"
+"literal>, for example <literal>customer:delete</literal>, or "
+"<literal>customer:insert</literal>."
+msgstr ""
+"Los roles son simples y consisten de sólamente un nombre como \"admin\", "
+"\"user\", \"customer\", etc. Los permisos consisten de nombre y acción y se "
+"representan dentro de esta documentación en la forma de <literal>name:"
+"action</literal>, por ejemplo, <literal>customer:delete</literal> o "
+"<literal>customer:insert</literal>."
+
+#. Tag: title
+#: Security.xml:247
+#, no-c-format
+msgid "Securing components"
+msgstr "Componentes de seguridad"
+
+#. Tag: para
+#: Security.xml:248
+#, no-c-format
+msgid ""
+"Let&#39;s start by examining the simplest form of authorization, component "
+"security, starting with the <literal>@Restrict</literal> annotation."
+msgstr ""
+"Vamos a empezar examinando la forma más simple de autorización, la seguridad "
+"de componentes, empezando con la anotación <literal>@Restrict</literal>. "
+
+#. Tag: title
+#: Security.xml:251
+#, no-c-format
+msgid "The @Restrict annotation"
+msgstr "La anotación @Restrict"
+
+#. Tag: para
+#: Security.xml:252
+#, no-c-format
+msgid ""
+"Seam components may be secured either at the method or the class level, "
+"using the <literal>@Restrict</literal> annotation. If both a method and "
+"it&#39;s declaring class are annotated with <literal>@Restrict</literal>, "
+"the method restriction will take precedence (and the class restriction will "
+"not apply). If a method invocation fails a security check, then an exception "
+"will be thrown as per the contract for <literal>Identity.checkRestriction()</"
+"literal> (see Inline Restrictions). A <literal>@Restrict</literal> on just "
+"the component class itself is equivalent to adding <literal>@Restrict</"
+"literal> to each of its methods."
+msgstr ""
+"Los componentes Seam se pueden asegurar ya sea a nivel de método o a nivel "
+"de clase utilizando la anotación <literal>@Restrict</literal>. Si tanto el "
+"método como su clase declarativa se anotan con <literal>@Restrict</literal> "
+"entonces la restricción de método tomará precedencia (y la restricción de la "
+"clase no aplicará). Si la invocación de un método no pasa un chequeo de "
+"seguridad entonces se presentará una excepción como en el contrato para "
+"<literal>Identity.checkRestriction()</literal> (consulte las restricciones "
+"en línea). Un <literal>@Restrict</literal> en la clase de componente misma "
+"es equivalente a añadir <literal>@Restrict</literal> a cada uno de sus "
+"métodos. "
+
+#. Tag: para
+#: Security.xml:255
+#, no-c-format
+msgid ""
+"An empty <literal>@Restrict</literal> implies a permission check of "
+"<literal>componentName:methodName</literal>. Take for example the following "
+"component method:"
+msgstr ""
+"Un <literal>@Restrict</literal> vacio implica un chequeo de permisos de "
+"<literal>componentName:methodName</literal>. Tome por ejemplo el siguiente "
+"método de componentes:"
+
+#. Tag: programlisting
+#: Security.xml:258
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class AccountAction {\n"
+"    @Restrict public void delete() {\n"
+"      ...\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"account\")\n"
+"public class AccountAction {\n"
+"    @Restrict public void delete() {\n"
+"      ...\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Security.xml:259
+#, no-c-format
+msgid ""
+"In this example, the implied permission required to call the <literal>delete"
+"()</literal> method is <literal>account:delete</literal>. The equivalent of "
+"this would be to write <literal>@Restrict(\"#{s:hasPermission(&#39;"
+"account&#39;,&#39;delete&#39;,null)}\")</literal>. Now let&#39;s look at "
+"another example:"
+msgstr ""
+"En este ejemplo, el permiso implicado que se requiere para llamar el método "
+"<literal>delete()</literal> es <literal>account:delete</literal>. Lo "
+"equivalente de esto sería escribir <literal>@Restrict(\"#{s:hasPermission"
+"(&#39;account&#39;,&#39;delete&#39;,null)}\")</literal>. Ahora vamos a mirar "
+"otro ejemplo:"
+
+#. Tag: programlisting
+#: Security.xml:262
+#, no-c-format
+msgid ""
+"@Restrict @Name(\"account\")\n"
+"public class AccountAction {\n"
+"    public void insert() {\n"
+"      ...\n"
+"    }\n"
+"    @Restrict(\"#{s:hasRole(&#39;admin&#39;)}\") \n"
+"    public void delete() {\n"
+"      ...\n"
+"    }\n"
+"}"
+msgstr ""
+"@Restrict @Name(\"account\")\n"
+"public class AccountAction {\n"
+"    public void insert() {\n"
+"      ...\n"
+"    }\n"
+"    @Restrict(\"#{s:hasRole(&#39;admin&#39;)}\") \n"
+"    public void delete() {\n"
+"      ...\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Security.xml:263
+#, no-c-format
+msgid ""
+"This time, the component class itself is annotated with <literal>@Restrict</"
+"literal>. This means that any methods without an overriding "
+"<literal>@Restrict</literal> annotation require an implicit permission "
+"check. In the case of this example, the <literal>insert()</literal> method "
+"requires a permission of <literal>account:insert</literal>, while the "
+"<literal>delete()</literal> method requires that the user is a member of the "
+"<literal>admin</literal> role."
+msgstr ""
+"Esta vez la clase de componente misma se anota con <literal>@Restrict</"
+"literal>. Esto significa que cualquier método sin una anotación "
+"<literal>@Restrict</literal> de anulación requiere un chequeo de permisos "
+"implícito. En el caso de este ejemplo, el método <literal>insert()</literal> "
+"requiere un permiso de <literal>account:insert</literal> mientras que el "
+"método <literal>delete()</literal> requiere que el usuario sea un miembro "
+"del rol <literal>admin</literal>."
+
+#. Tag: para
+#: Security.xml:266
+#, no-c-format
+msgid ""
+"Before we go any further, let&#39;s address the <literal>#{s:hasRole()}</"
+"literal> expression seen in the above example. Both <literal>s:hasRole</"
+"literal> and <literal>s:hasPermission</literal> are EL functions, which "
+"delegate to the correspondingly named methods of the <literal>Identity</"
+"literal> class. These functions can be used within any EL expression "
+"throughout the entirety of the security API."
+msgstr ""
+"Antes de avanzar más vamos a abordar la expresión <literal>#{s:hasRole()}</"
+"literal> que vimos en el ejemplo anterior. <literal>s:hasRole</literal> y "
+"<literal>s:hasPermission</literal> son funciones EL, las cuales delegan a "
+"los métodos nombrados correspondientemente de la clase <literal>Identity</"
+"literal>. Estas funciones se pueden utilizar dentro de cualquier expresión "
+"EL a través de toda la API de seguridad. "
+
+#. Tag: para
+#: Security.xml:269
+#, no-c-format
+msgid ""
+"Being an EL expression, the value of the <literal>@Restrict</literal> "
+"annotation may reference any objects that exist within a Seam context. This "
+"is extremely useful when performing permission checks for a specific object "
+"instance. Look at this example:"
+msgstr ""
+"Siendo una expresión EL, el valor de la anotación <literal>@Restrict</"
+"literal> puede referenciar cualquier objeto que exista dentro de un contexto "
+"Seam. Esto es extremadamente útil al realizar chequeos de permisos para una "
+"instancia de objeto específico. Vea este ejemplo:"
+
+#. Tag: programlisting
+#: Security.xml:272
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class AccountAction {\n"
+"    @In Account selectedAccount;\n"
+"    @Restrict(\"#{s:hasPermission(&#39;account&#39;,&#39;modify&#39;,"
+"selectedAccount)}\")\n"
+"    public void modify() {\n"
+"        selectedAccount.modify();\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"account\")\n"
+"public class AccountAction {\n"
+"    @In Account selectedAccount;\n"
+"    @Restrict(\"#{s:hasPermission(&#39;account&#39;,&#39;modify&#39;,"
+"selectedAccount)}\")\n"
+"    public void modify() {\n"
+"        selectedAccount.modify();\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Security.xml:273
+#, no-c-format
+msgid ""
+"The interesting thing to note from this example is the reference to "
+"<literal>selectedAccount</literal> seen within the <literal>hasPermission()</"
+"literal> function call. The value of this variable will be looked up from "
+"within the Seam context, and passed to the <literal>hasPermission()</"
+"literal> method in <literal>Identity</literal>, which in this case can then "
+"determine if the user has the required permission for modifying the "
+"specified <literal>Account</literal> object."
+msgstr ""
+"Lo interesante que se debe observar de este ejemplo es la referencia a "
+"<literal>selectedAccount</literal> que se ve dentro de la llamada de "
+"función <literal>hasPermission()</literal>. El valor de esta variable se "
+"buscará desde dentro del contexto Seam y se pasará al método "
+"<literal>hasPermission()</literal> en <literal>Identity</literal>, el cual "
+"en este caso puede determinar si el usuario tiene los permisos requeridos "
+"para modificar el objeto <literal>Account</literal> específico."
+
+#. Tag: title
+#: Security.xml:276
+#, no-c-format
+msgid "Inline restrictions"
+msgstr "Restricciones en línea  "
+
+#. Tag: para
+#: Security.xml:277
+#, no-c-format
+msgid ""
+"Sometimes it might be desirable to perform a security check in code, without "
+"using the <literal>@Restrict</literal> annotation. In this situation, simply "
+"use <literal>Identity.checkRestriction()</literal> to evaluate a security "
+"expression, like this:"
+msgstr ""
+"A veces puede que quiera realizar un chequeo de seguridad en código sin "
+"utilizar la anotación <literal>@Restrict</literal>. En esta situación "
+"simplemente utilice <literal>Identity.checkRestriction()</literal> para "
+"evaluar una expresión de seguridad como esta:"
+
+#. Tag: programlisting
+#: Security.xml:280
+#, no-c-format
+msgid ""
+"public void deleteCustomer() {\n"
+"    Identity.instance().checkRestriction(\"#{s:hasPermission(&#39;"
+"customer&#39;,&#39;delete&#39;,\n"
+"      selectedCustomer)}\");\n"
+"}"
+msgstr ""
+"public void deleteCustomer() {\n"
+"    Identity.instance().checkRestriction(\"#{s:hasPermission(&#39;"
+"customer&#39;,&#39;delete&#39;,\n"
+"      selectedCustomer)}\");\n"
+"}"
+
+#. Tag: para
+#: Security.xml:281
+#, no-c-format
+msgid ""
+"If the expression specified doesn&#39;t evaluate to <literal>true</literal>, "
+"either"
+msgstr "Si la expresión expecificada no evalua como <literal>true</literal>,"
+
+#. Tag: para
+#: Security.xml:286
+#, no-c-format
+msgid ""
+"if the user is not logged in, a <literal>NotLoggedInException</literal> "
+"exception is thrown or"
+msgstr ""
+"si el usuario no ha iniciado sesión entonces se presentará una excepción "
+"<literal>NotLoggedInException</literal> o "
+
+#. Tag: para
+#: Security.xml:291
+#, no-c-format
+msgid ""
+"if the user is logged in, an <literal>AuthorizationException</literal> "
+"exception is thrown."
+msgstr ""
+"si el usuario ha iniciado sesión se presentará una excepción "
+"<literal>AuthorizationException</literal>."
+
+#. Tag: para
+#: Security.xml:296
+#, no-c-format
+msgid ""
+"It is also possible to call the <literal>hasRole()</literal> and "
+"<literal>hasPermission()</literal> methods directly from Java code:"
+msgstr ""
+"También es posible llamar los métodos <literal>hasRole()</literal> y "
+"<literal>hasPermission()</literal> directamente desde el código Java:"
+
+#. Tag: programlisting
+#: Security.xml:299
+#, no-c-format
+msgid ""
+"if (!Identity.instance().hasRole(\"admin\"))\n"
+"     throw new AuthorizationException(\"Must be admin to perform this action"
+"\");\n"
+"\n"
+"if (!Identity.instance().hasPermission(\"customer\", \"create\", null))\n"
+"     throw new AuthorizationException(\"You may not create new customers\");"
+msgstr ""
+"if (!Identity.instance().hasRole(\"admin\"))\n"
+"     throw new AuthorizationException(\"Must be admin to perform this action"
+"\");\n"
+"\n"
+"if (!Identity.instance().hasPermission(\"customer\", \"create\", null))\n"
+"     throw new AuthorizationException(\"You may not create new customers\");"
+
+#. Tag: title
+#: Security.xml:300
+#, no-c-format
+msgid "Security in the user interface"
+msgstr "Seguridad en la interfaz del usuario"
+
+#. Tag: para
+#: Security.xml:301
+#, no-c-format
+msgid ""
+"One indication of a well designed user interface is that the user is not "
+"presented with options for which they don&#39;t have the necessary "
+"privileges to use. Seam Security allows conditional rendering of either 1) "
+"sections of a page or 2) individual controls, based upon the privileges of "
+"the user, using the very same EL expressions that are used for component "
+"security."
+msgstr ""
+"Una indicación de que la interfaz de usuario ha sido diseñada bien es que no "
+"se le presenta al usuario las opciones a las cuales no tiene los privilegios "
+"requeridos. Seam Security permite la entrega condicional ya sea de 1) "
+"secciones de una página o 2) controles individuales con base en los "
+"privilegios del usuario, utilizando las mismas expresiones EL que se "
+"utilizan para la seguridad de componentes. "
+
+#. Tag: para
+#: Security.xml:304
+#, no-c-format
+msgid ""
+"Let&#39;s take a look at some examples of interface security. First of all, "
+"let&#39;s pretend that we have a login form that should only be rendered if "
+"the user is not already logged in. Using the <literal>identity.isLoggedIn()</"
+"literal> property, we can write this:"
+msgstr ""
+"Vamos a mirar unos ejemplos sobre seguridad de la interfaz. Primero que todo "
+"vamos a imaginar que tenemos un formato de inicio de sesión que sólo se debe "
+"entregar si el usuario no ha iniciado sesión aún. Utilizando la propiedad "
+"<literal>identity.isLoggedIn()</literal> podemos escribir esto: "
+
+#. Tag: programlisting
+#: Security.xml:307
+#, no-c-format
+msgid "&lt;h:form class=\"loginForm\" rendered=\"#{not identity.loggedIn}\"&gt;"
+msgstr "&lt;h:form class=\"loginForm\" rendered=\"#{not identity.loggedIn}\"&gt;"
+
+#. Tag: para
+#: Security.xml:308
+#, no-c-format
+msgid ""
+"If the user isn&#39;t logged in, then the login form will be rendered - very "
+"straight forward so far. Now let&#39;s pretend there is a menu on the page "
+"that contains some actions which should only be accessible to users in the "
+"<literal>manager</literal> role. Here&#39;s one way that these could be "
+"written:"
+msgstr ""
+"Si el usuario no ha iniciado sesión entonces se entregará el formulario para "
+"iniciarla - muy simple hasta ahora. Ahora vamos a imaginar que hay un menú "
+"en la página y que contiene algunas acciones que sólo deberían ser "
+"accesibles para aquellos usuarios con el rol <literal>manager</literal>. "
+"Esta es una manera de escribir esto: "
+
+#. Tag: programlisting
+#: Security.xml:311
+#, no-c-format
+msgid ""
+"&lt;h:outputLink action=\"#{reports.listManagerReports}\" rendered=\"#{s:"
+"hasRole(&#39;manager&#39;)}\"&gt;\n"
+"    Manager Reports\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+"&lt;h:outputLink action=\"#{reports.listManagerReports}\" rendered=\"#{s:"
+"hasRole(&#39;manager&#39;)}\"&gt;\n"
+"    Manager Reports\n"
+"&lt;/h:outputLink&gt;"
+
+#. Tag: para
+#: Security.xml:312
+#, no-c-format
+msgid ""
+"This is also quite straight forward. If the user is not a member of the "
+"<literal>manager</literal> role, then the outputLink will not be rendered. "
+"The <literal>rendered</literal> attribute can generally be used on the "
+"control itself, or on a surrounding <literal>&lt;s:div&gt;</literal> or "
+"<literal>&lt;s:span&gt;</literal> control."
+msgstr ""
+"Esto también es bien simple. Si el usuario no es miembro del rol "
+"<literal>manager</literal> entonces no se entregará el outputLink. El "
+"atributo <literal>rendered</literal> generalmente se puede utilizar en el "
+"control mismo o en un control <literal>&lt;s:div&gt;</literal> o "
+"<literal>&lt;s:span&gt;</literal>."
+
+#. Tag: para
+#: Security.xml:315
+#, no-c-format
+msgid ""
+"Now for something more complex. Let&#39;s say you have a <literal>h:"
+"dataTable</literal> control on a page listing records for which you may or "
+"may not wish to render action links depending on the user&#39;s privileges. "
+"The <literal>s:hasPermission</literal> EL function allows us to pass in an "
+"object parameter which can be used to determine whether the user has the "
+"requested permission for that object or not. Here&#39;s how a dataTable with "
+"secured links might look:"
+msgstr ""
+"Ahora algo un poco más complejo. Vamos a decir que tiene un control "
+"<literal>h:dataTable</literal> en los registros del listado de página para "
+"los cuales puede que quiera o no entregar vínculos de acciones dependiendo "
+"de los privilegios del usuario. La función EL <literal>s:hasPermission</"
+"literal> nos permite pasar un parámetro de objeto que se puede utilizar para "
+"determinar si el usuario tiene el permiso requerido para ese objeto o no. "
+"Así se vería la tabla de datos con los enlaces asegurados:"
+
+#. Tag: programlisting
+#: Security.xml:318
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{clients}\" var=\"cl\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Name&lt;/f:facet&gt;\n"
+"        #{cl.name}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;City&lt;/f:facet&gt;\n"
+"        #{cl.city}\n"
+"    &lt;/h:column&gt;   \n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"        &lt;s:link value=\"Modify Client\" action=\"#{clientAction.modify}"
+"\"\n"
+"                rendered=\"#{s:hasPermission(&#39;client&#39;,&#39;"
+"modify&#39;,cl)\"/&gt;\n"
+"        &lt;s:link value=\"Delete Client\" action=\"#{clientAction.delete}"
+"\"\n"
+"                rendered=\"#{s:hasPermission(&#39;client&#39;,&#39;"
+"delete&#39;,cl)\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+"&lt;h:dataTable value=\"#{clients}\" var=\"cl\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Name&lt;/f:facet&gt;\n"
+"        #{cl.name}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;City&lt;/f:facet&gt;\n"
+"        #{cl.city}\n"
+"    &lt;/h:column&gt;   \n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"        &lt;s:link value=\"Modify Client\" action=\"#{clientAction.modify}"
+"\"\n"
+"                rendered=\"#{s:hasPermission(&#39;client&#39;,&#39;"
+"modify&#39;,cl)\"/&gt;\n"
+"        &lt;s:link value=\"Delete Client\" action=\"#{clientAction.delete}"
+"\"\n"
+"                rendered=\"#{s:hasPermission(&#39;client&#39;,&#39;"
+"delete&#39;,cl)\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+
+#. Tag: title
+#: Security.xml:319
+#, no-c-format
+msgid "Securing pages"
+msgstr "Seguridad de páginas"
+
+#. Tag: para
+#: Security.xml:320
+#, no-c-format
+msgid ""
+"Page security requires that the application is using a <literal>pages.xml</"
+"literal> file, however is extremely simple to configure. Simply include a "
+"<literal>&lt;restrict/&gt;</literal> element within the <literal>page</"
+"literal> elements that you wish to secure. By default, if a value is not "
+"provided for the <literal>restrict</literal> element, an implied permission "
+"of <literal>{viewId}:render</literal> will be checked for whenever accessing "
+"that page. Otherwise the value will be evaluated as a standard security "
+"expression. Here&#39;s a couple of examples:"
+msgstr ""
+"La seguridad de páginas requiere que la aplicación esté utilizando un "
+"archivo <literal>pages.xml</literal>, sin embargo, es extremadamente fácil "
+"de configurar. Simplemente incluya un elemento <literal>&lt;restrict/&gt;</"
+"literal> dentro de los elementos <literal>page</literal> que desee asegurar. "
+"Por defecto, si no se proporciona un valor para el elemento "
+"<literal>restrict</literal> entonces se chequeará un permiso implícito de "
+"<literal>{viewId}:render</literal> al acceder a esa página. De otra forma, "
+"el valor será evaluado como una expresión de seguridad estándar. Aquí hay un "
+"par de ejemplos: "
+
+#. Tag: programlisting
+#: Security.xml:323
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/settings.xhtml\"&gt;\n"
+"    &lt;restrict/&gt;\n"
+"&lt;/page&gt;\n"
+"        \n"
+"&lt;page view-id=\"/reports.xhtml\"&gt;    \n"
+"    &lt;restrict&gt;#{s:hasRole(&#39;admin&#39;)}&lt;/restrict&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page view-id=\"/settings.xhtml\"&gt;\n"
+"    &lt;restrict/&gt;\n"
+"&lt;/page&gt;\n"
+"        \n"
+"&lt;page view-id=\"/reports.xhtml\"&gt;    \n"
+"    &lt;restrict&gt;#{s:hasRole(&#39;admin&#39;)}&lt;/restrict&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Security.xml:324
+#, no-c-format
+msgid ""
+"In the above example, the first page has an implied permission restriction "
+"of <literal>/settings.xhtml:render</literal>, while the second one checks "
+"that the user is a member of the <literal>admin</literal> role."
+msgstr ""
+"En el ejemplo anterior, la primera página cuenta con una restricción de "
+"permisos implícitos de <literal>/settings.xhtml:render</literal> mientras "
+"que el segundo chequea que el usuario sea miembro del rol <literal>admin</"
+"literal>."
+
+#. Tag: title
+#: Security.xml:327
+#, no-c-format
+msgid "Securing Entities"
+msgstr "Entidades de seguridad"
+
+#. Tag: para
+#: Security.xml:328
+#, no-c-format
+msgid ""
+"Seam security also makes it possible to apply security restrictions to read, "
+"insert, update and delete actions for entities."
+msgstr ""
+"La seguridad de seam también hace posible aplicar restricciones de seguridad "
+"para leer, insertar, actualizar y borrar acciones para entidades."
+
+#. Tag: para
+#: Security.xml:331
+#, no-c-format
+msgid ""
+"To secure all actions for an entity class, add a <literal>@Restrict</"
+"literal> annotation on the class itself:"
+msgstr ""
+"Para asegurar todas las acciones de una clase de entidad añada una anotación "
+"<literal>@Restrict</literal> en la clase misma:"
+
+#. Tag: programlisting
+#: Security.xml:334
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"customer\")\n"
+"@Restrict\n"
+"public class Customer {\n"
+"  ...\n"
+"}"
+msgstr ""
+"@Entity\n"
+"@Name(\"customer\")\n"
+"@Restrict\n"
+"public class Customer {\n"
+"  ...\n"
+"}"
+
+#. Tag: para
+#: Security.xml:335
+#, no-c-format
+msgid ""
+"If no expression is specified in the <literal>@Restrict</literal> "
+"annotation, the default security check that is performed is a permission "
+"check of <literal>entityName:action</literal>, where <literal>entityName</"
+"literal> is the Seam component name of the entity (or the fully-qualified "
+"class name if no @Name is specified), and the <literal>action</literal> is "
+"either <literal>read</literal>, <literal>insert</literal>, <literal>update</"
+"literal> or <literal>delete</literal>."
+msgstr ""
+"Si no se especifica ninguna expresión en la anotación <literal>@Restrict</"
+"literal>, el chequeo de seguridad predeterminado que se realiza es un "
+"chequeo de permisos de <literal>entityName:action</literal> en donde "
+"<literal>entityName</literal> es el nombre de la entidad (o el nombre de la "
+"clase si no se especifica @Name) y la <literal>action</literal> puede ser "
+"<literal>read</literal>, <literal>insert</literal>, <literal>update</"
+"literal> o <literal>delete</literal>. "
+
+#. Tag: para
+#: Security.xml:338
+#, no-c-format
+msgid ""
+"It is also possible to only restrict certain actions, by placing a "
+"<literal>@Restrict</literal> annotation on the relevent entity lifecycle "
+"method (annotated as follows):"
+msgstr ""
+"También es posible sólamente restringir ciertas acciones incluyendo una "
+"anotación <literal>@Restrict</literal> en el método del ciclo de vida de la "
+"entidad relevante (anotado como a continuación):"
+
+#. Tag: para
+#: Security.xml:343
+#, no-c-format
+msgid ""
+"<literal>@PostLoad</literal> - Called after an entity instance is loaded "
+"from the database. Use this method to configure a <literal>read</literal> "
+"permission."
+msgstr ""
+"<literal>@PostLoad</literal> - se llama después de que se carga una "
+"instancia de entidad desde la base de datos. Utilice este método para "
+"configurar un permiso <literal>read</literal>."
+
+#. Tag: para
+#: Security.xml:348
+#, no-c-format
+msgid ""
+"<literal>@PrePersist</literal> - Called before a new instance of the entity "
+"is inserted. Use this method to configure an <literal>insert</literal> "
+"permission."
+msgstr ""
+"<literal>@PrePersist</literal> - llamado antes de insertar una nueva "
+"instancia de la entidad. Utilice este método para configurar un permiso "
+"<literal>insert</literal>."
+
+#. Tag: para
+#: Security.xml:353
+#, no-c-format
+msgid ""
+"<literal>@PreUpdate</literal> - Called before an entity is updated. Use this "
+"method to configure an <literal>update</literal> permission."
+msgstr ""
+"<literal>@PreUpdate</literal> - llamado antes de actualizar una entidad. "
+"Utilice este método para configurar un permiso <literal>update</literal>."
+
+#. Tag: para
+#: Security.xml:358
+#, no-c-format
+msgid ""
+"<literal>@PreRemove</literal> - Called before an entity is deleted. Use this "
+"method to configure a <literal>delete</literal> permission."
+msgstr ""
+"<literal>@PreRemove</literal> - se llama antes de borrar una entidad. "
+"Utilice este método para configurar un permiso <literal>delete</literal>."
+
+#. Tag: para
+#: Security.xml:363
+#, no-c-format
+msgid ""
+"Here&#39;s an example of how an entity would be configured to perform a "
+"security check for any <literal>insert</literal> operations. Please note "
+"that the method is not required to do anything, the only important thing in "
+"regard to security is how it is annotated:"
+msgstr ""
+"Este es un ejemplo de como se debe configurar una entidad para realizar un "
+"chequeo de seguridad para cualquier operación <literal>insert</literal>. "
+"Observe que no se necesita que el método haga nada, lo único que es "
+"importante en relación con la seguridad es el cómo se anota: "
+
+#. Tag: programlisting
+#: Security.xml:366
+#, no-c-format
+msgid ""
+"@PrePersist @Restrict\n"
+"  public void prePersist() {}"
+msgstr ""
+"@PrePersist @Restrict\n"
+"  public void prePersist() {}"
+
+#. Tag: para
+#: Security.xml:367
+#, no-c-format
+msgid ""
+"And here&#39;s an example of an entity permission rule that checks if the "
+"authenticated user is allowed to insert a new <literal>MemberBlog</literal> "
+"record (from the seamspace example). The entity for which the security check "
+"is being made is automatically asserted into the working memory (in this "
+"case <literal>MemberBlog</literal>):"
+msgstr ""
+"Este es un ejemplo de una regla de permiso de entidad que chequea si el "
+"usuario autenticado tiene permiso para crear un nuevo registro "
+"<literal>MemberBlog</literal> (del ejemplo de seamspace). La entidad para la "
+"cual se realiza el chequeo de seguridad se declara automáticamente en la "
+"memoria de trabajo (en este caso <literal>MemberBlog</literal>):"
+
+#. Tag: programlisting
+#: Security.xml:370
+#, no-c-format
+msgid ""
+"rule InsertMemberBlog\n"
+"  no-loop\n"
+"  activation-group \"permissions\"  \n"
+"when\n"
+"  check: PermissionCheck(name == \"memberBlog\", action == \"insert\", "
+"granted == false)\n"
+"  Principal(principalName : name)\n"
+"  MemberBlog(member : member -&gt; (member.getUsername().equals"
+"(principalName)))\n"
+"then\n"
+"  check.grant();\n"
+"end;"
+msgstr ""
+"rule InsertMemberBlog\n"
+"  no-loop\n"
+"  activation-group \"permissions\"  \n"
+"when\n"
+"  check: PermissionCheck(name == \"memberBlog\", action == \"insert\", "
+"granted == false)\n"
+"  Principal(principalName : name)\n"
+"  MemberBlog(member : member -&gt; (member.getUsername().equals"
+"(principalName)))\n"
+"then\n"
+"  check.grant();\n"
+"end;"
+
+#. Tag: para
+#: Security.xml:371
+#, no-c-format
+msgid ""
+"This rule will grant the permission <literal>memberBlog:insert</literal> if "
+"the currently authenticated user (indicated by the <literal>Principal</"
+"literal> fact) has the same name as the member for which the blog entry is "
+"being created. The \"<literal>name : name</literal>\" structure that can be "
+"seen in the <literal>Principal</literal> fact (and other places) is a "
+"variable binding - it binds the <literal>name</literal> property of the "
+"<literal>Principal</literal> to a variable called <literal>name</literal>. "
+"Variable bindings allow the value to be referred to in other places, such as "
+"the following line which compares the member&#39;s username to the "
+"<literal>Principal</literal> name. For more details, please refer to the "
+"JBoss Rules documentation."
+msgstr ""
+"Esta regla concederá el permiso <literal>memberBlog:insert</literal> si el "
+"usuario autenticado actualmente (indicado por el hecho <literal>Principal</"
+"literal>) tiene el mismo nombre que el miembro para el cual se está creando "
+"la entrada del blog. La estructura \"<literal>name : name</literal>\" que se "
+"puede ver en el hecho <literal>Principal</literal> (y en otros lugares) es "
+"una variable de vinculación - vincula la propiedad <literal>name</literal> "
+"del <literal>Principal</literal> a una variable llamada <literal>name</"
+"literal>. Las vinculaciones de variables permiten referir el valor en otros "
+"lugares tal como en la siguiente línea, la cual compara el nombre del "
+"usuario con el nombre <literal>Principal</literal>. Para más detalles "
+"consulte la documentación de JBoss Rules."
+
+#. Tag: para
+#: Security.xml:374
+#, no-c-format
+msgid ""
+"Finally, we need to install a listener class that integrates Seam security "
+"with your JPA provider."
+msgstr ""
+"Finalmente necesitamos instalar una clase escucha que integre la seguridad "
+"de Seam con su proveedor JPA."
+
+#. Tag: title
+#: Security.xml:377
+#, no-c-format
+msgid "Entity security with JPA"
+msgstr "Seguridad de entidades con JPA"
+
+#. Tag: para
+#: Security.xml:378
+#, no-c-format
+msgid ""
+"Security checks for EJB3 entity beans are performed with an "
+"<literal>EntityListener</literal>. You can install this listener by using "
+"the following <literal>META-INF/orm.xml</literal> file:"
+msgstr ""
+"Los chequeos de seguridad para los beans de entidad EJB3 se realizan con un "
+"<literal>EntityListener</literal>. Puede instalar este escucha utilizando el "
+"siguiente archivo <literal>META-INF/orm.xml</literal>:"
+
+#. Tag: programlisting
+#: Security.xml:381
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;entity-mappings xmlns=\"http://java.sun.com/xml/ns/persistence/orm\"\n"
+"                 xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"                 xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence/"
+"orm \n"
+"                                            http://java.sun.com/xml/ns/"
+"persistence/orm_1_0.xsd\"\n"
+"                 version=\"1.0\"&gt;\n"
+"                 \n"
+"    &lt;persistence-unit-metadata&gt;\n"
+"        &lt;persistence-unit-defaults&gt;\n"
+"            &lt;entity-listeners&gt;\n"
+"                &lt;entity-listener class=\"org.jboss.seam.security."
+"EntitySecurityListener\"/&gt;\n"
+"            &lt;/entity-listeners&gt;\n"
+"        &lt;/persistence-unit-defaults&gt;\n"
+"    &lt;/persistence-unit-metadata&gt;\n"
+"    \n"
+"&lt;/entity-mappings&gt;"
+msgstr ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;entity-mappings xmlns=\"http://java.sun.com/xml/ns/persistence/orm\"\n"
+"                 xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"                 xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence/"
+"orm \n"
+"                                            http://java.sun.com/xml/ns/"
+"persistence/orm_1_0.xsd\"\n"
+"                 version=\"1.0\"&gt;\n"
+"                 \n"
+"    &lt;persistence-unit-metadata&gt;\n"
+"        &lt;persistence-unit-defaults&gt;\n"
+"            &lt;entity-listeners&gt;\n"
+"                &lt;entity-listener class=\"org.jboss.seam.security."
+"EntitySecurityListener\"/&gt;\n"
+"            &lt;/entity-listeners&gt;\n"
+"        &lt;/persistence-unit-defaults&gt;\n"
+"    &lt;/persistence-unit-metadata&gt;\n"
+"    \n"
+"&lt;/entity-mappings&gt;"
+
+#. Tag: title
+#: Security.xml:382
+#, no-c-format
+msgid "Entity security with Hibernate"
+msgstr "Seguridad de entidades con Hibernate"
+
+#. Tag: para
+#: Security.xml:383
+#, no-c-format
+msgid ""
+"If you are using a Hibernate <literal>SessionFactory</literal> configured "
+"via Seam, you don&#39;t need to do anything special to use entity security."
+msgstr ""
+"Si está utilizando un <literal>SessionFactory</literal> de Hibernate "
+"configurado por medio de Seam entonces no necesita hacer nada en especial "
+"para poder utilizar la seguridad de entidades. "
+
+#. Tag: title
+#: Security.xml:386
+#, no-c-format
+msgid "Writing Security Rules"
+msgstr "Cómo escribir reglas de seguridad"
+
+#. Tag: para
+#: Security.xml:387
+#, no-c-format
+msgid ""
+"Up to this point there has been a lot of mention of permissions, but no "
+"information about how permissions are actually defined or granted. This "
+"section completes the picture, by explaining how permission checks are "
+"processed, and how to implement permission checks for a Seam application."
+msgstr ""
+"Hasta ahora hemos mencionado bastante los permisos pero no se ha dicho como "
+"se definen o se otorgan los permisos. Esta sección completa el tema "
+"explicando como se procesan los chequeos de permisos y cómo implementar los "
+"chequeos de permisos para una aplicación Seam."
+
+#. Tag: title
+#: Security.xml:390
+#, no-c-format
+msgid "Permissions Overview"
+msgstr "Sinopsis de los permisos"
+
+#. Tag: para
+#: Security.xml:391
+#, no-c-format
+msgid ""
+"So how does the security API know whether a user has the <literal>customer:"
+"modify</literal> permission for a specific customer? Seam Security provides "
+"quite a novel method for determining user permissions, based on JBoss Rules. "
+"A couple of the advantages of using a rule engine are 1) a centralized "
+"location for the business logic that is behind each user permission, and 2) "
+"speed - JBoss Rules uses very efficient algorithms for evaluating large "
+"numbers of complex rules involving multiple conditions."
+msgstr ""
+"Entonces ¿la API de seguridad cómo sabe si un usuario tiene el permiso "
+"<literal>customer:modify</literal> para un cliente en específico? Seam "
+"Security proporciona un método relativamente novedoso para determinar los "
+"permisos del usuario con base en JBoss Rules. Un par de ventajas de utilizar "
+"una máquina de reglas son: 1) ubicación centralizada para la lógica "
+"empresarial que se encuentra detrás de cada permiso de usuario y 2) "
+"velocidad - JBoss Rules utiliza algoritmos muy eficientes para evaluar un "
+"gran número de reglas complejas que involucran condiciones múltiples."
+
+#. Tag: title
+#: Security.xml:394
+#, no-c-format
+msgid "Configuring a rules file"
+msgstr "Configuración de un archivo de reglas"
+
+#. Tag: para
+#: Security.xml:395
+#, no-c-format
+msgid ""
+"Seam Security expects to find a <literal>RuleBase</literal> component called "
+"<literal>securityRules</literal> which it uses to evaluate permission "
+"checks. This is configured in <literal>components.xml</literal> as follows:"
+msgstr ""
+"Seam Security espera encontrar un componente <literal>RuleBase</literal> "
+"llamado <literal>securityRules</literal>, el cual utiliza para evaluar "
+"verificaciones de permisos. Esto se configura en <literal>components.xml</"
+"literal> como se ve a continuación:"
+
+#. Tag: programlisting
+#: Security.xml:398
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:security=\"http://jboss.com/products/seam/security\"\n"
+"            xmlns:drools=\"http://jboss.com/products/seam/drools\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                                              http://jboss.com/products/seam/"
+"core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components \n"
+"                                              http://jboss.com/products/seam/"
+"components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/drools \n"
+"                                              http://jboss.com/products/seam/"
+"drools-1.2.xsd\"\n"
+"                 http://jboss.com/products/seam/security \n"
+"                                              http://jboss.com/products/seam/"
+"security-1.2.xsd\"&gt;                 \n"
+"        \n"
+"   &lt;drools:rule-base name=\"securityRules\"&gt;\n"
+"       &lt;drools:rule-files&gt;\n"
+"           &lt;value&gt;/META-INF/security.drl&lt;/value&gt;\n"
+"       &lt;/drools:rule-files&gt;\n"
+"   &lt;/drools:rule-base&gt;    \n"
+"   \n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:security=\"http://jboss.com/products/seam/security\"\n"
+"            xmlns:drools=\"http://jboss.com/products/seam/drools\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                                              http://jboss.com/products/seam/"
+"core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components \n"
+"                                              http://jboss.com/products/seam/"
+"components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/drools \n"
+"                                              http://jboss.com/products/seam/"
+"drools-1.2.xsd\"\n"
+"                 http://jboss.com/products/seam/security \n"
+"                                              http://jboss.com/products/seam/"
+"security-1.2.xsd\"&gt;                 \n"
+"        \n"
+"   &lt;drools:rule-base name=\"securityRules\"&gt;\n"
+"       &lt;drools:rule-files&gt;\n"
+"           &lt;value&gt;/META-INF/security.drl&lt;/value&gt;\n"
+"       &lt;/drools:rule-files&gt;\n"
+"   &lt;/drools:rule-base&gt;    \n"
+"   \n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Security.xml:399
+#, no-c-format
+msgid ""
+"Once the <literal>RuleBase</literal> component is configured, it&#39;s time "
+"to write the security rules."
+msgstr ""
+"Una vez se ha configurado el componente <literal>RuleBase</literal> es hora "
+"de escribir las reglas de seguridad. "
+
+#. Tag: title
+#: Security.xml:402
+#, no-c-format
+msgid "Creating a security rules file"
+msgstr "Creación de un archivo de reglas de seguridad"
+
+#. Tag: para
+#: Security.xml:403
+#, no-c-format
+msgid ""
+"For this step you need to create a file called <literal>security.drl</"
+"literal> in the <literal>/META-INF</literal> directory of your "
+"application&#39;s jar file. In actual fact this file can be called anything "
+"you want, and exist in any location as long as it is configured "
+"appropriately in <literal>components.xml</literal>."
+msgstr ""
+"Para este paso necesita crear un archivo llamado <literal>security.drl</"
+"literal> en el directorio <literal>/META-INF</literal> del archivo jar de su "
+"aplicación. De hecho, este archivo se puede llamar de cualquier forma y "
+"existe en cualquier ubicación en tanto lo configure de manera apropiada en "
+"<literal>components.xml</literal>. "
+
+#. Tag: para
+#: Security.xml:406
+#, no-c-format
+msgid ""
+"So what should the security rules file contain? At this stage it might be a "
+"good idea to at least skim through the JBoss Rules documentation, however to "
+"get started here&#39;s an extremely simple example:"
+msgstr ""
+"Entonces ¿qué debe contener el archivo de reglas de seguridad? En esta etapa "
+"puede ser una buena idea el revisar la documentación de JBoss Rules pero "
+"para poder empezar aquí tiene un ejemplo extremadamente simple:"
+
+#. Tag: programlisting
+#: Security.xml:409
+#, no-c-format
+msgid ""
+"package MyApplicationPermissions;\n"
+"\n"
+"import org.jboss.seam.security.PermissionCheck;\n"
+"import org.jboss.seam.security.Role;\n"
+"\n"
+"rule CanUserDeleteCustomers\n"
+"when\n"
+"  c: PermissionCheck(name == \"customer\", action == \"delete\")\n"
+"  Role(name == \"admin\")\n"
+"then\n"
+"  c.grant();\n"
+"end;"
+msgstr ""
+"package MyApplicationPermissions;\n"
+"\n"
+"import org.jboss.seam.security.PermissionCheck;\n"
+"import org.jboss.seam.security.Role;\n"
+"\n"
+"rule CanUserDeleteCustomers\n"
+"when\n"
+"  c: PermissionCheck(name == \"customer\", action == \"delete\")\n"
+"  Role(name == \"admin\")\n"
+"then\n"
+"  c.grant();\n"
+"end;"
+
+#. Tag: para
+#: Security.xml:410
+#, no-c-format
+msgid ""
+"Let&#39;s break this down. The first thing we see is the package "
+"declaration. A package in JBoss Rules is essentially a collection of rules. "
+"The package name can be anything you want - it doesn&#39;t relate to "
+"anything else outside the scope of the rule base."
+msgstr ""
+"Vamos a ver parte por parte. La primera cosa que vemos es la declaración de "
+"paquetes. Un paquete en JBoss Rules es esencialmente una colección de "
+"reglas. El nombre del paquete puede ser cualquiera - no se relaciona con "
+"nada más fuera del ámbito de la base de las reglas. "
+
+#. Tag: para
+#: Security.xml:413
+#, no-c-format
+msgid ""
+"The next thing we can notice is a couple of import statements for the "
+"<literal>PermissionCheck</literal> and <literal>Role</literal> classes. "
+"These imports inform the rules engine that we&#39;ll be referencing these "
+"classes within our rules."
+msgstr ""
+"Lo siguiente que debe observar es un par de declaraciones para las clases "
+"<literal>PermissionCheck</literal> y <literal>Role</literal>. Estos importes "
+"le informan a la máquina de reglas que estaremos referenciando estas clases "
+"dentro de nuestras reglas. "
+
+#. Tag: para
+#: Security.xml:416
+#, no-c-format
+msgid ""
+"Finally we have the code for the rule. Each rule within a package should be "
+"given a unique name (usually describing the purpose of the rule). In this "
+"case our rule is called <literal>CanUserDeleteCustomers</literal> and will "
+"be used to check whether a user is allowed to delete a customer record."
+msgstr ""
+"Finalmente tenemos el código para la regla. Se le debe dar un nombre único a "
+"cada regla dentro de un paquete (usualmente describe el propósito de la "
+"regla). En este caso nuestra regla se llama <literal>CanUserDeleteCustomers</"
+"literal> y se utilizará para chequear si un usuario tiene permiso de borrar "
+"el registro de un cliente."
+
+#. Tag: para
+#: Security.xml:419
+#, no-c-format
+msgid ""
+"Looking at the body of the rule definition we can notice two distinct "
+"sections. Rules have what is known as a left hand side (LHS) and a right "
+"hand side (RHS). The LHS consists of the conditional part of the rule, i.e. "
+"a list of conditions which must be satisfied for the rule to fire. The LHS "
+"is represented by the <literal>when</literal> section. The RHS is the "
+"consequence, or action section of the rule that will only be fired if all of "
+"the conditions in the LHS are met. The RHS is represented by the "
+"<literal>then</literal> section. The end of the rule is denoted by the "
+"<literal>end;</literal> line."
+msgstr ""
+"Al mirar el cuerpo de la definición de reglas podemos observar dos secciones "
+"diferentes. Las reglas tienen lo que se conoce como un lado izquierdo (LHS "
+"del inglés left hand side) y un lado derecho (RHS del inglés right hand "
+"side). El lado izquierdo consiste de la parte condicional de la regla por "
+"ejemplo una lista de condiciones que se deben cumplir para que la regla se "
+"dispare. El lado izquierdo se representa por medio de la sección "
+"<literal>when</literal>. El lado derecho es la consecuencia o la sección de "
+"acción de la regla que sólo se dispará si todas las condiciones en el lado "
+"izquierdo se cumplen. El lado derecho se representa por medio de la sección "
+"<literal>then</literal>. El final de la regla se denota por la línea "
+"<literal>end;</literal>."
+
+#. Tag: para
+#: Security.xml:422
+#, no-c-format
+msgid ""
+"If we look at the LHS of the rule, we see two conditions listed there. "
+"Let&#39;s examine the first condition:"
+msgstr ""
+"Si miramos el lado izquierdo (LHS) de la regla vemos dos condiciones "
+"listadas. Vamos a examinar la primera condición: "
+
+#. Tag: programlisting
+#: Security.xml:425
+#, no-c-format
+msgid "c: PermissionCheck(name == \"customer\", action == \"delete\")"
+msgstr "c: PermissionCheck(name == \"customer\", action == \"delete\")"
+
+#. Tag: para
+#: Security.xml:426
+#, no-c-format
+msgid ""
+"In plain english, this condition is stating that there must exist a "
+"<literal>PermissionCheck</literal> object with a <literal>name</literal> "
+"property equal to \"customer\", and an <literal>action</literal> property "
+"equal to \"delete\" within the working memory. What is the working memory? "
+"It is a session-scoped object that contains the contextual information that "
+"is required by the rules engine to make a decision about a permission check. "
+"Each time the <literal>hasPermission()</literal> method is called, a "
+"temporary <literal>PermissionCheck</literal> object, or <emphasis>Fact</"
+"emphasis>, is asserted into the working memory. This "
+"<literal>PermissionCheck</literal> corresponds exactly to the permission "
+"that is being checked, so for example if you call <literal>hasPermission"
+"(\"account\", \"create\", null)</literal> then a <literal>PermissionCheck</"
+"literal> object with a <literal>name</literal> equal to \"account\" and "
+"<literal>action</literal> equal to \"create\" will be asserted into the "
+"working memory for the duration of the permission check."
+msgstr ""
+"En palabras simples esta condición afirma que debe existir un objeto "
+"<literal>PermissionCheck</literal> con una propiedad <literal>name</literal> "
+"igual al \"cliente\" y una propiedad <literal>action</literal> igual a "
+"\"borrar\" dentro de la memoria de trabajo. ¿Qué es la memoria de trabajo? "
+"Es un objeto de ámbito de sesión que contiene información contextual que la "
+"máquina de reglas necesita para poder tomar una decisión sobre una "
+"verificación de permiso. Cada vez que se llama al método "
+"<literal>hasPermission()</literal> se declara un objeto "
+"<literal>PermissionCheck</literal> object o <emphasis>Fact</emphasis> en la "
+"memoria de trabajo. Este <literal>PermissionCheck</literal> corresponde "
+"exactamente al permiso que se está chequeando así que si por ejemplo, si "
+"llama a <literal>hasPermission(\"account\",\"create\",nulo)</literal> "
+"entonces se declarará un objeto <literal>PermissionCheck</literal> con un "
+"<literal>name</literal> igual a \"account\" y <literal>action</literal> "
+"igual a \"create\" en la memoria de trabajo durante el chequeo del permiso."
+
+#. Tag: para
+#: Security.xml:429
+#, no-c-format
+msgid ""
+"So what else is in the working memory? Besides the short-lived temporary "
+"facts asserted during a permission check, there are some longer-lived "
+"objects in the working memory that stay there for the entire duration of a "
+"user being authenticated. These include any <literal>java.security."
+"Principal</literal> objects that are created as part of the authentication "
+"process, plus a <literal>org.jboss.seam.security.Role</literal> object for "
+"each of the roles that the user is a member of. It is also possible to "
+"assert additional long-lived facts into the working memory by calling "
+"<literal>RuleBasedIdentity.instance().getSecurityContext().assertObject()</"
+"literal>, passing the object as a parameter."
+msgstr ""
+"¿Qué más hay en la memoria de trabajo? Además de los hechos temporales de corta "
+"vida declarados durante una verificación de permisos, hay algunos objetos de "
+"larga vida que permanecen allí durante toda la duración de la autenticación "
+"de un usuario. Estos incluyen cualquier objeto <literal>java.security."
+"Principal</literal> que se crean como parte del proceso de autenticación "
+"además del objeto <literal>org.jboss.seam.security.Role</literal> para cada "
+"uno de los roles de los cuales el usuario es miembro. También es posible "
+"declarar hechos de larga vida adicionales en la memoria de trabajo llamando "
+"a <literal>RuleBasedIdentity.instance().getSecurityContext().assertObject()</"
+"literal> pasando el objeto como parámetro."
+
+#. Tag: para
+#: Security.xml:432
+#, no-c-format
+msgid ""
+"Getting back to our simple example, we can also notice that the first line "
+"of our LHS is prefixed with <literal>c:</literal>. This is a variable "
+"binding, and is used to refer back to the object that is matched by the "
+"condition. Moving onto the second line of our LHS, we see this:"
+msgstr ""
+"Volviendo a nuestro ejemplo simple también podemos observar que la primera "
+"línea de nuestro lado izquierdo (LHS) tiene el prefijo <literal>c:</"
+"literal>. Esta es una variable de vinculación y se utiliza para referirse al "
+"objeto que ha cumplido con la condición. Siguiendo la segunda línea de "
+"nuestro lado izquierdo (LHS), vemos esto:"
+
+#. Tag: programlisting
+#: Security.xml:435
+#, no-c-format
+msgid "Role(name == \"admin\")"
+msgstr "Role(name == \"admin\")"
+
+#. Tag: para
+#: Security.xml:436
+#, no-c-format
+msgid ""
+"This condition simply states that there must be a <literal>Role</literal> "
+"object with a <literal>name</literal> of \"admin\" within the working "
+"memory. As mentioned, user roles are asserted into the working memory as "
+"long-lived facts. So, putting both conditions together, this rule is "
+"essentially saying \"I will fire if you are checking for the "
+"<literal>customer:delete</literal> permission and the user is a member of "
+"the <literal>admin</literal> role\"."
+msgstr ""
+"Esta condición simplemente establece que debe haber un objeto <literal>Role</"
+"literal> con un <literal>name</literal> de \"admin\" dentro de la memoria de "
+"trabajo. Como se mencionó anteriormente los roles del usuario se declaran en "
+"la memoria de trabajo como hechos de larga vida. Así que al poner ambas "
+"codiciones juntas esta regla esencialmente dice \"Dispararé si al "
+"chequear el permiso <literal>customer:delete</literal> el usuario es un "
+"miembro del rol <literal>admin</literal>\"."
+
+#. Tag: para
+#: Security.xml:439
+#, no-c-format
+msgid ""
+"So what is the consequence of the rule firing? Let&#39;s take a look at the "
+"RHS of the rule:"
+msgstr ""
+"¿Cuáles son las consecuencias de disparar reglas? Vamos a ver el lado "
+"derecho de la regla: "
+
+#. Tag: programlisting
+#: Security.xml:442
+#, no-c-format
+msgid "c.grant()"
+msgstr "c.grant()"
+
+#. Tag: para
+#: Security.xml:443
+#, no-c-format
+msgid ""
+"The RHS consists of Java code, and in this case is invoking the "
+"<literal>grant()</literal> method of the <literal>c</literal> object, which "
+"as already mentioned is a variable binding for the <literal>PermissionCheck</"
+"literal> object. Besides the <literal>name</literal> and <literal>action</"
+"literal> properties of the <literal>PermissionCheck</literal> object, there "
+"is also a <literal>granted</literal> property which is initially set to "
+"<literal>false</literal>. Calling <literal>grant()</literal> on a "
+"<literal>PermissionCheck</literal> sets the <literal>granted</literal> "
+"property to <literal>true</literal>, which means that the permission check "
+"was successful, allowing the user to carry out whatever action the "
+"permission check was intended for."
+msgstr ""
+"El lado derecho consiste de código Java y en este caso está invocando el "
+"método <literal>grant()</literal> del objeto <literal>c</literal>, el cual "
+"como ya se mencionó es una variable de vinculación para el objeto "
+"<literal>PermissionCheck</literal>. Además las propiedades <literal>name</"
+"literal> y <literal>action</literal> del objeto <literal>PermissionCheck</"
+"literal> también hay una propiedad <literal>granted</literal>, la cual "
+"inicialmente está configurada como <literal>false</literal>. El llamar a "
+"<literal>grant()</literal> en un <literal>PermissionCheck</literal> "
+"configura la propiedad <literal>granted</literal> como <literal>true</"
+"literal>, lo cual significa que la verificación de permiso fue exitosa "
+"permitiéndole al usuario llevar a cabo la acción para la cual se realizó la "
+"verificación de permiso."
+
+#. Tag: title
+#: Security.xml:446
+#, no-c-format
+msgid "Wildcard permission checks"
+msgstr "Comodines de verificación de permisos "
+
+#. Tag: para
+#: Security.xml:447
+#, no-c-format
+msgid ""
+"It is possible to implement a wildcard permission check (which allows all "
+"actions for a given permission name), by omitting the <literal>action</"
+"literal> constraint for the <literal>PermissionCheck</literal> in your rule, "
+"like this:"
+msgstr ""
+"Es posible implementar un comodín de verificación de permisos (el cual "
+"permite todas las acciones para un nombre de permiso dado) omitiendo la "
+"restricción <literal>action</literal> para el <literal>PermissionCheck</"
+"literal> en su regla, como este:"
+
+#. Tag: programlisting
+#: Security.xml:450
+#, no-c-format
+msgid ""
+"rule CanDoAnythingToCustomersIfYouAreAnAdmin\n"
+"when\n"
+"  c: PermissionCheck(name == \"customer\")\n"
+"  Role(name == \"admin\")\n"
+"then\n"
+"  c.grant();\n"
+"end;"
+msgstr ""
+"rule CanDoAnythingToCustomersIfYouAreAnAdmin\n"
+"when\n"
+"  c: PermissionCheck(name == \"customer\")\n"
+"  Role(name == \"admin\")\n"
+"then\n"
+"  c.grant();\n"
+"end;"
+
+#. Tag: para
+#: Security.xml:451
+#, no-c-format
+msgid ""
+"This rule allows users with the <literal>admin</literal> role to perform "
+"<emphasis>any</emphasis> action for any <literal>customer</literal> "
+"permission check."
+msgstr ""
+"Esta regla le permite a los usuarios con el rol <literal>admin</literal> "
+"realizar <emphasis>cualquier</emphasis> acción para cualquier "
+"<literal>customer</literal>"
+
+#. Tag: title
+#: Security.xml:454
+#, no-c-format
+msgid "SSL Security"
+msgstr "Seguridad SSL"
+
+#. Tag: para
+#: Security.xml:455
+#, no-c-format
+msgid ""
+"Seam includes basic support for serving sensitive pages via the HTTPS "
+"protocol. This is easily configured by specifying a <literal>scheme</"
+"literal> for the page in <literal>pages.xml</literal>. The following example "
+"shows how the view <literal>/login.xhtml</literal> is configured to use "
+"HTTPS:"
+msgstr ""
+"Seam incluye soporte básico para servir páginas sensibles por medio del "
+"protocolo HTTPS. Esto se configura fácilmente especificando un "
+"<literal>scheme</literal> para la página en <literal>pages.xml</literal>. El "
+"siguiente ejemplo muestra como se configura la vista <literal>/login.xhtml</"
+"literal> para utilizar HTTPS:"
+
+#. Tag: programlisting
+#: Security.xml:458
+#, no-c-format
+msgid "&lt;page view-id=\"/login.xhtml\" scheme=\"https\"&gt;"
+msgstr "&lt;page view-id=\"/login.xhtml\" scheme=\"https\"&gt;"
+
+#. Tag: para
+#: Security.xml:459
+#, no-c-format
+msgid ""
+"This configuration is automatically extended to both <literal>s:link</"
+"literal> and <literal>s:button</literal> JSF controls, which (when "
+"specifying the <literal>view</literal>) will also render the link using the "
+"correct protocol. Based on the previous example, the following link will use "
+"the HTTPS protocol because <literal>/login.xhtml</literal> is configured to "
+"use it:"
+msgstr ""
+"Esta configuración se extiende de manera automática a ambos controles JSF "
+"<literal>s:link</literal> y <literal>s:button</literal>, los cuales también "
+"presentan el enlace (cuando se especifica <literal>view</literal>) "
+"utilizando el protocolo correcto. Con base en el ejemplo anterior, el siguiente "
+"vinculo utilizará el protocolo HTTPS ya que <literal>/login.xhtml</"
+"literal> está configurado para usarlo:"
+
+#. Tag: programlisting
+#: Security.xml:462
+#, no-c-format
+msgid "&lt;s:link view=\"/login.xhtml\" value=\"Login\"/&gt;"
+msgstr "&lt;s:link view=\"/login.xhtml\" value=\"Login\"/&gt;"
+
+#. Tag: para
+#: Security.xml:463
+#, no-c-format
+msgid ""
+"Browsing directly to a view when using the <emphasis>incorrect</emphasis> "
+"protocol will cause a redirect to the same view using the <emphasis>correct</"
+"emphasis> protocol. For example, browsing to a page that has <literal>scheme="
+"\"https\"</literal> using HTTP will cause a redirect to the same page using "
+"HTTPS."
+msgstr ""
+"El navegar directamente a una vista utilizando un protocolo "
+"<emphasis>incorrecto</emphasis> causará una redirección a la misma vista "
+"utilizando el protocolo <emphasis>correcto</emphasis>. Por ejemplo, el "
+"navegar a una página que tiene <literal>scheme=\"https\"</literal> usando "
+"HTTP causará una redirección a la misma página utilizando HTTPS."
+
+#. Tag: para
+#: Security.xml:466
+#, no-c-format
+msgid ""
+"It is also possible to configure a default <literal>scheme</literal> for all "
+"pages. This is actually quite important, as you might only wish to use HTTPS "
+"for a few pages, and if no default scheme is specified then the default "
+"behavior is to continue using the current scheme. What this means is that "
+"once you enter a page with HTTPS, then HTTPS will continue to be used even "
+"if you navigate away to other non-HTTPS pages (a bad thing!). So it is "
+"strongly recommended to include a default <literal>scheme</literal>, by "
+"configuring it on the default (<literal>\"*\"</literal>) view:"
+msgstr ""
+"También es posible configurar un <literal>scheme</literal> predeterminado "
+"para todas las páginas. De hecho, esto es bastante importante ya que puede "
+"que sólo quiera utilizar HTTPS para unas pocas páginas y si no se especifica "
+"un esquema predeterminado entonces el comportamiento predeterminado "
+"continuará utilizando el esquema actual. Esto significa que una vez entre a "
+"una página con HTTPS entonces este se utilizará aún si navega a otras "
+"páginas que no son HTTPS (¡qué mal!). Así que se recomienda bastante que "
+"incluya un <literal>scheme</literal> predeterminado configurándolo en la "
+"vista predeterminada (<literal>\"*\"</literal>): "
+
+#. Tag: programlisting
+#: Security.xml:469
+#, no-c-format
+msgid "&lt;page view-id=\"*\" scheme=\"http\"&gt;"
+msgstr "&lt;page view-id=\"*\" scheme=\"http\"&gt;"
+
+#. Tag: para
+#: Security.xml:470
+#, no-c-format
+msgid ""
+"Of course, if <emphasis>none</emphasis> of the pages in your application use "
+"HTTPS then it is not required to specify a default scheme."
+msgstr ""
+"Por supuesto, si <emphasis>ninguna</emphasis> de las páginas en su "
+"aplicación utiliza HTTPS entonces no es necesario especificar un esquema "
+"predeterminado."
+
+#. Tag: title
+#: Security.xml:473
+#, no-c-format
+msgid "Implementing a Captcha Test"
+msgstr "Implementación de una prueba Captcha"
+
+#. Tag: para
+#: Security.xml:474
+#, no-c-format
+msgid ""
+"Though strictly not part of the security API, it might be useful in certain "
+"circumstances (such as new user registrations, posting to a public blog or "
+"forum) to implement a Captcha (<emphasis>C</emphasis>ompletely <emphasis>A</"
+"emphasis>utomated <emphasis>P</emphasis>ublic <emphasis>T</emphasis>uring "
+"test to tell <emphasis>C</emphasis>omputers and <emphasis>H</emphasis>umans "
+"<emphasis>A</emphasis>part) to prevent automated bots from interacting with "
+"your application. Seam provides seamless integration with JCaptcha, an "
+"excellent library for generating Captcha challenges. If you wish to use the "
+"captcha feature in your application you need to include the jcaptcha-* jar "
+"file from the Seam lib directory in your project, and register it in "
+"<literal>application.xml</literal> as a java module."
+msgstr ""
+"Aunque no es estrictamente parte de la API de seguridad puede llegar a ser "
+"útil en ciertas circumstancias (tal como en el registro de nuevos usuarios, "
+"anunciando en un blog público o en un foro) el implementar un Captcha (por las "
+"siglas del inglés <emphasis>C</emphasis>ompletely <emphasis>A</"
+"emphasis>utomated <emphasis>P</emphasis>ublic <emphasis>T</emphasis>uring "
+"test to tell <emphasis>C</emphasis>omputers and <emphasis>H</emphasis>umans "
+"<emphasis>A</emphasis>part) para evitar que programas automatizados "
+"interactúen con su aplicación. Seam proporciona integración seamless con "
+"JCaptcha, una biblioteca excelente para generar retos Captcha. Si desea "
+"utilizar la característica captcha en su aplicación necesita incluir el "
+"archivo jcaptcha-* jar desde el directorio de la libreria de Seam en su "
+"proyecto y registrarlo en <literal>application.xml</literal> como un módulo "
+"java."
+
+#. Tag: title
+#: Security.xml:477
+#, no-c-format
+msgid "Configuring the Captcha Servlet"
+msgstr "Configuración del servlet Captcha"
+
+#. Tag: para
+#: Security.xml:478
+#, no-c-format
+msgid ""
+"To get up and running, it is necessary to configure the Seam Resource "
+"Servlet, which will provide the Captcha challenge images to your pages. This "
+"requires the following entry in <literal>web.xml</literal>:"
+msgstr ""
+"Para poder empezar es necesario configurar el Seam Resource Servlet, el cual "
+"proporcionará las imágenes de desafio Captcha para sus páginas. Esto "
+"requiere la siguiente entrada en <literal>web.xml</literal>:"
+
+#. Tag: programlisting
+#: Security.xml:481
+#, no-c-format
+msgid ""
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"    \n"
+"&lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+msgstr ""
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"    \n"
+"&lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+
+#. Tag: title
+#: Security.xml:482
+#, no-c-format
+msgid "Adding a Captcha to a page"
+msgstr "Añadir una prueba Captcha a una página"
+
+#. Tag: para
+#: Security.xml:483
+#, no-c-format
+msgid ""
+"Adding a captcha challenge to a page is extremely easy. Seam provides a page-"
+"scoped component, <literal>captcha</literal>, which provides everything that "
+"is required, including built-in captcha validation. Here&#39;s an example:"
+msgstr ""
+"El añadir un desafio captcha a una página es extremadamente fácil. Seam "
+"proporciona un componente de ámbito de página, <literal>captcha</literal>, "
+"el cual proporciona todo lo que se necesita, incluyendo la validación "
+"captcha incorporada. Este es un ejemplo: "
+
+#. Tag: programlisting
+#: Security.xml:486
+#, no-c-format
+msgid ""
+"&lt;div&gt;\n"
+"    &lt;h:graphicImage value=\"/seam/resource/captcha?#{captcha.id}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"  \n"
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"verifyCaptcha\"&gt;Enter the above letters&lt;/h:"
+"outputLabel&gt;\n"
+"    &lt;h:inputText id=\"verifyCaptcha\" value=\"#{captcha.response}\" "
+"required=\"true\"/&gt;\n"
+"    &lt;div class=\"validationError\"&gt;&lt;h:message for=\"verifyCaptcha\"/"
+"&gt;&lt;/div&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+"&lt;div&gt;\n"
+"    &lt;h:graphicImage value=\"/seam/resource/captcha?#{captcha.id}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"  \n"
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"verifyCaptcha\"&gt;Enter the above letters&lt;/h:"
+"outputLabel&gt;\n"
+"    &lt;h:inputText id=\"verifyCaptcha\" value=\"#{captcha.response}\" "
+"required=\"true\"/&gt;\n"
+"    &lt;div class=\"validationError\"&gt;&lt;h:message for=\"verifyCaptcha\"/"
+"&gt;&lt;/div&gt;\n"
+"&lt;/div&gt;"
+
+#. Tag: para
+#: Security.xml:487
+#, no-c-format
+msgid ""
+"That&#39;s all there is to it. The <literal>graphicImage</literal> control "
+"displays the Captcha challenge, and the <literal>inputText</literal> "
+"receives the user&#39;s response. The response is automatically validated "
+"against the Captcha when the form is submitted."
+msgstr ""
+"Eso es todo. El control <literal>graphicImage</literal> presenta el desafio "
+"Captcha e <literal>inputText</literal> recibe la respuesta del usuario. La "
+"respuesta se valida de manera automática frente al Captcha cuando se "
+"presenta el formato. "
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Spring.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Spring.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Spring.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,675 @@
+# translation of Spring.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Spring\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 01:04+0000\n"
+"PO-Revision-Date: 2007-10-19 09:48+1000\n"
+"Last-Translator: Angela Garcia\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Spring.xml:6
+#, no-c-format
+msgid "Spring Framework integration"
+msgstr "Integración del marco de trabajo spring"
+
+#. Tag: para
+#: Spring.xml:7
+#, no-c-format
+msgid ""
+"The Spring integration module allows easy migration of Spring-based projects "
+"to Seam and allows Spring applications to take advantage of key Seam "
+"features like conversations and Seam&#39;s more sophisticated persistence "
+"context management."
+msgstr ""
+"El módulo de integración Spring permite una migración fácil de proyectos "
+"basados en Spring a Seam y permite que las aplicaciones Spring tomen ventaja "
+"de las características clave de Seam tal como las conversaciones y la "
+"administración de contexto de persistencia más sofisticados de Seam. "
+
+#. Tag: para
+#: Spring.xml:10
+#, no-c-format
+msgid "Seam&#39;s support for Spring provides the ability to:"
+msgstr "El soporte de Seam para Spring proporciona la habilidad para: "
+
+#. Tag: para
+#: Spring.xml:15
+#, no-c-format
+msgid "inject Seam component instances into Spring beans"
+msgstr "inyectar instancias de componentes Seam en beans Spring"
+
+#. Tag: para
+#: Spring.xml:20
+#, no-c-format
+msgid "inject Spring beans into Seam components"
+msgstr "inyectar beans Spring en componentes Seam"
+
+#. Tag: para
+#: Spring.xml:25
+#, no-c-format
+msgid "turn Spring beans into Seam components"
+msgstr "convertir beans Spring en componentes Seam"
+
+#. Tag: para
+#: Spring.xml:30
+#, no-c-format
+msgid "allow Spring beans to live in any Seam context"
+msgstr "permiten que las beans Spring vivan en cualquier contexto Seam"
+
+#. Tag: para
+#: Spring.xml:35
+#, no-c-format
+msgid "start a spring WebApplicationContext with a Seam component"
+msgstr "iniciar un WebApplicationContext spring con un componente Seam"
+
+#. Tag: title
+#: Spring.xml:41
+#, no-c-format
+msgid "Injecting Seam components into Spring beans"
+msgstr "Inyección de componentes Seam en beans Spring"
+
+#. Tag: para
+#: Spring.xml:42
+#, no-c-format
+msgid ""
+"Injecting Seam component instances into Spring beans is accomplished using "
+"the <literal>&lt;seam:instance/&gt;</literal> namespace handler. To enable "
+"the Seam namespace handler, the Seam namespace must be added to the Spring "
+"beans definition file:"
+msgstr ""
+"El inyectar instancias de componentes Seam en beans Spring se logra "
+"utilizando el manejador de espacios de nombres <literal>&lt;seam:instance/"
+"&gt;</literal>. Para habilitar el manejador de espacios de nombres Seam, el "
+"espacio de nombre de Seam se debe añadir al archivo de definición de los "
+"beans Spring:"
+
+#. Tag: programlisting
+#: Spring.xml:45
+#, no-c-format
+msgid ""
+"&lt;beans xmlns=\"http://www.springframework.org/schema/beans\"\n"
+"    xmlns:seam=\"http://jboss.com/products/seam/spring-seam\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://www.springframework.org/schema/beans \n"
+"                        http://www.springframework.org/schema/beans/spring-"
+"beans-2.0.xsd\n"
+"                        http://jboss.com/products/seam/spring-seam \n"
+"                        http://jboss.com/products/seam/spring-seam-1.2.xsd"
+"\"&gt;"
+msgstr ""
+"&lt;beans xmlns=\"http://www.springframework.org/schema/beans\"\n"
+"    xmlns:seam=\"http://jboss.com/products/seam/spring-seam\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://www.springframework.org/schema/beans \n"
+"                        http://www.springframework.org/schema/beans/spring-"
+"beans-2.0.xsd\n"
+"                        http://jboss.com/products/seam/spring-seam \n"
+"                        http://jboss.com/products/seam/spring-seam-1.2.xsd"
+"\"&gt;"
+
+#. Tag: para
+#: Spring.xml:46
+#, no-c-format
+msgid "Now any Seam component may be injected into any Spring bean:"
+msgstr ""
+"Ahora se puede inyectar cualquier componente Seam a cualquier bean Spring:"
+
+#. Tag: programlisting
+#: Spring.xml:49
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\"&gt;\n"
+"        &lt;seam:instance name=\"someComponent\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\"&gt;\n"
+"        &lt;seam:instance name=\"someComponent\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+
+#. Tag: para
+#: Spring.xml:50
+#, no-c-format
+msgid "An EL expression may be used instead of a component name:"
+msgstr "Se puede utilizar una expresión EL en vez del nombre de un componente:"
+
+#. Tag: programlisting
+#: Spring.xml:53
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\"&gt;\n"
+"        &lt;seam:instance name=\"#{someExpression}\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\"&gt;\n"
+"        &lt;seam:instance name=\"#{someExpression}\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+
+#. Tag: para
+#: Spring.xml:54
+#, no-c-format
+msgid ""
+"Seam component instances may even be made available for injection into "
+"Spring beans by a Spring bean id."
+msgstr ""
+"Las instancias del componente Seam se pueden hacer disponibles para "
+"inyección en los beans Spring por medio de una identificación (id) del bean "
+"Spring."
+
+#. Tag: programlisting
+#: Spring.xml:57
+#, no-c-format
+msgid ""
+"&lt;seam:instance name=\"someComponent\" id=\"someSeamComponentInstance\"/"
+"&gt;\n"
+"\n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\" ref=\"someSeamComponentInstance"
+"\"&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+"&lt;seam:instance name=\"someComponent\" id=\"someSeamComponentInstance\"/"
+"&gt;\n"
+"\n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\" ref=\"someSeamComponentInstance"
+"\"&gt;\n"
+"&lt;/bean&gt;"
+
+#. Tag: para
+#: Spring.xml:58
+#, no-c-format
+msgid "Now for the caveat!"
+msgstr "¡Ahora las advertencias!"
+
+#. Tag: para
+#: Spring.xml:61
+#, no-c-format
+msgid ""
+"Seam was designed from the ground up to support a stateful component model "
+"with multiple contexts. Spring was not. Unlike Seam bijection, Spring "
+"injection does not occur at method invocation time. Instead, injection "
+"happens only when the Spring bean is instantiated. So the instance available "
+"when the bean is instantiated will be the same instance that the bean uses "
+"for the entire life of the bean. For example, if a Seam "
+"<literal>CONVERSATION</literal>-scoped component instance is directly "
+"injected into a singleton Spring bean, that singleton will hold a reference "
+"to the same instance long after the conversation is over! We call this "
+"problem <emphasis>scope impedance</emphasis>. Seam bijection ensures that "
+"scope impedance is maintained naturally as an invocation flows through the "
+"system. In Spring, we need to inject a proxy of the Seam component, and "
+"resolve the reference when the proxy is invoked."
+msgstr ""
+"Desde el principio Seam se diseñó para soportar un modelo de componentes con "
+"estado con contextos múltiples y Spring no lo era. De manera opuesta que la "
+"biyección de Seam, la inyección Spring no ocurre en el momento de invocación "
+"del método. En cambio la inyección ocurre solo cuando se instancia el bean "
+"Spring. Así que la instancia disponible cuando se instancia el bean será la "
+"misma instancia que el bean utiliza para toda la vida del bean. Por ejemplo, "
+"si una instancia del componente en el ámbito <literal>CONVERSATION</literal> "
+"de Seam se inyecta directamente al bean Spring singleton, ese singleton "
+"mantendrá una referencia de la misma ¡mucho después de que se ha terminado "
+"la conversación! Denominamos este problema como <emphasis>obstrucción de "
+"ámbito</emphasis>. La biyección de Seam asegura que esta obstrucción de "
+"ámbito se mantenga naturalmente mientras las invocaciones fluyen por el "
+"sistema. En Spring necesitamos inyectar un proxy del componente Seam y "
+"resolver la referencia cuando se invoca el proxy."
+
+#. Tag: para
+#: Spring.xml:64
+#, no-c-format
+msgid ""
+"The <literal>&lt;seam:instance/&gt;</literal> tag lets us automatically "
+"proxy the Seam component."
+msgstr ""
+"La etiqueta <literal>&lt;seam:instance/&gt;</literal> permite realizar un "
+"proxy automáticamente en el componente Seam."
+
+#. Tag: programlisting
+#: Spring.xml:67
+#, no-c-format
+msgid ""
+"&lt;seam:instance id=\"seamManagedEM\" name=\"someManagedEMComponent\" proxy="
+"\"true\"/&gt;\n"
+"        \n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\"&gt;\n"
+"    &lt;property name=\"entityManager\" ref=\"seamManagedEM\"&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+"&lt;seam:instance id=\"seamManagedEM\" name=\"someManagedEMComponent\" proxy="
+"\"true\"/&gt;\n"
+"        \n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\"&gt;\n"
+"    &lt;property name=\"entityManager\" ref=\"seamManagedEM\"&gt;\n"
+"&lt;/bean&gt;"
+
+#. Tag: para
+#: Spring.xml:68
+#, no-c-format
+msgid ""
+"This example shows one way to use a Seam-managed persistence context from a "
+"Spring bean. (A more robust way to use Seam-managed persistence contexts as "
+"a replacement for the Spring <literal>OpenEntityManagerInView</literal> "
+"filter will be provided in a future release)"
+msgstr ""
+"Este ejemplo muestra una manera de utilizar un contexto de persistencia "
+"administrado por Seam desde un bean Spring (en un lanzamiento futuro se "
+"proporcionará una manera robusta de utilizar contextos de persistencia "
+"administrados por Seam como reemplazo para el filtro Spring "
+"<literal>OpenEntityManagerInView</literal>). "
+
+#. Tag: title
+#: Spring.xml:74
+#, no-c-format
+msgid "Injecting Spring beans into Seam components"
+msgstr "Inyección de beans Spring en componentes Seam"
+
+#. Tag: para
+#: Spring.xml:75
+#, no-c-format
+msgid ""
+"It is even easier to inject Spring beans into Seam component instances. "
+"Actually, there are two possible approaches:"
+msgstr ""
+"Es todavía más fácil el inyectar beans Spring en las instancias de "
+"componentes Seam. De hecho hay dos enfoques posibles:"
+
+#. Tag: para
+#: Spring.xml:80
+#, no-c-format
+msgid "inject a Spring bean using an EL expression"
+msgstr "inyectar un bean Spring utilizando una expresión EL"
+
+#. Tag: para
+#: Spring.xml:85
+#, no-c-format
+msgid "make the Spring bean a Seam component"
+msgstr "hacer del bean Spring un componente Seam"
+
+#. Tag: para
+#: Spring.xml:90
+#, no-c-format
+msgid ""
+"We&#39;ll discuss the second option in the next section. The easiest "
+"approach is to access the Spring beans via EL."
+msgstr ""
+"Discutiremos nuestra segunda opción en la próxima sección. El enfoque más "
+"fácil es acceder a los beans Spring por medio de EL. "
+
+#. Tag: para
+#: Spring.xml:93
+#, no-c-format
+msgid ""
+"The Spring <literal>DelegatingVariableResolver</literal> is an integration "
+"point Spring provides for integrating Spring with JSF. This "
+"<literal>VariableResolver</literal> makes all Spring beans available in EL "
+"by their bean id. You&#39;ll need to add the "
+"<literal>DelegatingVariableResolver</literal> to <literal>faces-config.xml</"
+"literal>:"
+msgstr ""
+"El <literal>DelegatingVariableResolver</literal> de Spring es un punto de "
+"integración que Spring proporciona para poder integrar JSF con Spring. Este "
+"<literal>VariableResolver</literal> hace disponibles todos los beans Spring "
+"en EL por medio de su id (identificación) de bean. Necesitará añadir el "
+"<literal>DelegatingVariableResolver</literal> a <literal>faces-config.xml</"
+"literal>:"
+
+#. Tag: programlisting
+#: Spring.xml:96
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;variable-resolver&gt;\n"
+"        org.springframework.web.jsf.DelegatingVariableResolver\n"
+"    &lt;/variable-resolver&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+"&lt;application&gt;\n"
+"    &lt;variable-resolver&gt;\n"
+"        org.springframework.web.jsf.DelegatingVariableResolver\n"
+"    &lt;/variable-resolver&gt;\n"
+"&lt;/application&gt;"
+
+#. Tag: para
+#: Spring.xml:97
+#, no-c-format
+msgid "Then you can inject Spring beans using <literal>@In</literal>:"
+msgstr "Después puede inyectar beans Spring usando <literal>@In</literal>:"
+
+#. Tag: programlisting
+#: Spring.xml:100
+#, no-c-format
+msgid ""
+"@In(\"#{bookingService}\")\n"
+"private BookingService bookingService;"
+msgstr ""
+"@In(\"#{bookingService}\")\n"
+"private BookingService bookingService;"
+
+#. Tag: para
+#: Spring.xml:101
+#, no-c-format
+msgid ""
+"The use of Spring beans in EL is not limited to injection. Spring beans may "
+"be used anywhere that EL expressions are used in Seam: process and pageflow "
+"definitions, working memory assertions, etc..."
+msgstr ""
+"El uso de beans Spring en EL no se limita a la inyección. Los beans Spring "
+"se pueden utilizar en cualquier lugar en donde se utilicen expresiones EL "
+"que se usen en Seam: definiciones de procesos y de flujos de página, "
+"verificaciones de memoria en uso, etc."
+
+#. Tag: title
+#: Spring.xml:107
+#, no-c-format
+msgid "Making a Spring bean into a Seam component"
+msgstr "Cómo convertir un bean Spring en un componente Seam"
+
+#. Tag: para
+#: Spring.xml:108
+#, no-c-format
+msgid ""
+"The <literal>&lt;seam:component/&gt;</literal> namespace handler can be used "
+"to make any Spring bean a Seam component. Just place the <literal>&lt;seam:"
+"component/&gt;</literal> tag within the declaration of the bean that you "
+"wish to be a Seam component:"
+msgstr ""
+"El manejador de espacios de nombres <literal>&lt;seam:component/&gt;</"
+"literal> se puede utilizar para convertir cualquier bean Spring en un "
+"componente Seam. Tan sólo ponga la etiqueta <literal>&lt;seam:component/&gt;"
+"</literal> dentro de la declaración del bean que quiere que sea un "
+"componente Seam:"
+
+#. Tag: programlisting
+#: Spring.xml:111
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;seam:component/&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;seam:component/&gt;\n"
+"&lt;/bean&gt;"
+
+#. Tag: para
+#: Spring.xml:112
+#, no-c-format
+msgid ""
+"By default, <literal>&lt;seam:component/&gt;</literal> will create a "
+"<literal>STATELESS</literal> Seam component with class and name provided in "
+"the bean definition. Occasionally, such as when a <literal>FactoryBean</"
+"literal> is used, the class of the Spring bean may not be the class "
+"appearing in the bean definition. In such cases the <literal>class</literal> "
+"should be explicitly specified. A Seam component name may be explicitly "
+"specified in cases where there is potential for a naming conflict."
+msgstr ""
+"Por defecto, <literal>&lt;seam:component/&gt;</literal> creará un componente "
+"Seam <literal>STATELESS</literal> con la clase y nombre incluido en la "
+"definición bean. Ocasionalmente, como cuando se utiliza un "
+"<literal>FactoryBean</literal>, la clase del bean Spring puede que no sea la "
+"clase que aparece en la definición bean. En tales casos <literal>class</"
+"literal> se debe especificar explícitamente. Se puede especificar "
+"explícitamente un nombre de componente Seam en aquellos casos en que existe "
+"un potencial conflicto de nombres."
+
+#. Tag: para
+#: Spring.xml:115
+#, no-c-format
+msgid ""
+"The <literal>scope</literal> attribute of <literal>&lt;seam:component/&gt;</"
+"literal> may be used if you wish the Spring bean to be managed in a "
+"particular Seam scope. The Spring bean must be scoped to <literal>prototype</"
+"literal> if the Seam scope specified is anything other than "
+"<literal>STATELESS</literal>. Pre-existing Spring beans usually have a "
+"fundamentally stateless character, so this attribute is not usually needed."
+msgstr ""
+"El atributo <literal>scope</literal> de <literal>&lt;seam:component/&gt;</"
+"literal> se puede utilizar si quiere que el bean Spring sea administrado en "
+"un ámbito Seam en particular. El bean Spring debe tener el ámbito "
+"<literal>prototype</literal> si el ámbito Seam especificado es diferente de "
+"<literal>STATELESS</literal>. Los beans Spring pre existentes usualmente "
+"tienen un carácter fundamentalmente sin estado así que este atributo no se "
+"necesita con frecuencia."
+
+#. Tag: title
+#: Spring.xml:121
+#, no-c-format
+msgid "Seam-scoped Spring beans"
+msgstr "Beans Spring con ámbito Seam"
+
+#. Tag: para
+#: Spring.xml:122
+#, no-c-format
+msgid ""
+"The Seam integration package also lets you use Seam&#39;s contexts as Spring "
+"2.0 style custom scopes. This lets you declare any Spring bean in any of "
+"Seam&#39;s contexts. However, note once again that Spring&#39;s component "
+"model was never architected to support statefulness, so please use this "
+"feature with great care. In particular, clustering of session or "
+"conversation scoped Spring beans is deeply problematic, and care must be "
+"taken when injecting a bean or component from a wider scope into a bean of a "
+"narrower scope."
+msgstr ""
+"El paquete de integración Seam también le permite utilizar los contextos de "
+"Seam como ámbitos personalizados de estilo Spring 2.0. Esto le permite "
+"declarar cualquier bean Spring en cualquiera de los contextos de Seam. Sin "
+"embargo, observe una vez más que el modelo de componentes de Spring nunca se "
+"diseñó para soportar estado así que utilice esta característica con mucho "
+"cuidado. En particular, el crear clústers de sesión o beans Spring en un "
+"ámbito de conversación es bastante problemático y se debe tener mucho "
+"cuidado al inyectar un bean o un componente desde un ámbito más amplio a un "
+"ámbito más restringido de un bean. "
+
+#. Tag: para
+#: Spring.xml:125
+#, no-c-format
+msgid ""
+"By specifying <literal>&lt;seam:configure-scopes/&gt;</literal> once in a "
+"Spring bean factory configuration, all of the Seam scopes will be available "
+"to Spring beans as custom scopes. To associate a Spring bean with a "
+"particular Seam scope, specify the Seam scope in the <literal>scope</"
+"literal> attribute of the bean definition."
+msgstr ""
+"Al especificar <literal>&lt;seam:configure-scopes/&gt;</literal> una vez en "
+"una configuración factory bean Spring, todos los ámbitos Seam se encontrarán "
+"disponibles para los beans Spring como ámbitos personalizados. Para asociar "
+"un bean Spring con un ámbito Seam en particular especifique el ámbito Seam "
+"en el atributo de la definición del bean."
+
+#. Tag: programlisting
+#: Spring.xml:128
+#, no-c-format
+msgid ""
+"&lt;!-- Only needs to be specified once per bean factory--&gt;\n"
+"&lt;seam:configure-scopes/&gt;\n"
+"\n"
+"...\n"
+"\n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope=\"seam."
+"CONVERSATION\"/&gt;"
+msgstr ""
+"&lt;!-- Sólo es necesario especificarlo una vez por cada bean factory--&gt;\n"
+"&lt;seam:configure-scopes/&gt;\n"
+"\n"
+"...\n"
+"\n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope=\"seam."
+"CONVERSATION\"/&gt;"
+
+#. Tag: para
+#: Spring.xml:129
+#, no-c-format
+msgid ""
+"The prefix of the scope name may be changed by specifying the "
+"<literal>prefix</literal> attribute in the <literal>configure-scopes</"
+"literal> definition. (The default prefix is <literal>seam.</literal>)"
+msgstr ""
+"El prefijo del nombre de ámbito se puede cambiar especificando el atributo "
+"<literal>prefix</literal> en la definición <literal>configure-scopes</"
+"literal> (el prefijo predeterminado es <literal>seam.</literal>)"
+
+#. Tag: para
+#: Spring.xml:132
+#, no-c-format
+msgid ""
+"Seam-scoped Spring beans defined this way can be injected into other Spring "
+"beans without the use of <literal>&lt;seam:instance/&gt;</literal>. However, "
+"care must be taken to ensure scope impedance is maintained. The normal "
+"approach used in Spring is to specify <literal>&lt;aop:scoped-proxy/&gt;</"
+"literal> in the bean definition. However, Seam-scoped Spring beans are "
+"<emphasis>not</emphasis> compatible with <literal>&lt;aop:scoped-proxy/&gt;</"
+"literal>. So if you need to inject a Seam-scoped Spring bean into a "
+"singleton, <literal>&lt;seam:instance/&gt;</literal> must be used:"
+msgstr ""
+"Los beans Spring con ámbito Seam definidos de esta manera se pueden inyectar "
+"en otros beans Spring sin utilizar <literal>&lt;seam:instance/&gt;</"
+"literal>. Sin embargo debe tener mucho cuidado y debe asegurarse de que se "
+"mantiene la obstrucción del ámbito. El enfoque normal utilizado en Spring es "
+"especificar <literal>&lt;aop:scoped-proxy/&gt;</literal> en la definición "
+"bean. Sin embargo, los beans Spring con ámbito Seam <emphasis>no</emphasis> "
+"son compatibles con <literal>&lt;aop:scoped-proxy/&gt;</literal>. Así que si "
+"necesita inyectar un bean Spring con ámbito Seam en un singleton debe "
+"utilizar <literal>&lt;seam:instance/&gt;</literal>:"
+
+#. Tag: programlisting
+#: Spring.xml:135
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope=\"seam."
+"CONVERSATION\"/&gt;\n"
+"\n"
+"...\n"
+"\n"
+"&lt;bean id=\"someSingleton\"&gt;\n"
+"    &lt;property name=\"someSeamScopedSpringBean\"&gt;\n"
+"        &lt;seam:instance name=\"someSpringBean\" proxy=\"true\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope=\"seam."
+"CONVERSATION\"/&gt;\n"
+"\n"
+"...\n"
+"\n"
+"&lt;bean id=\"someSingleton\"&gt;\n"
+"    &lt;property name=\"someSeamScopedSpringBean\"&gt;\n"
+"        &lt;seam:instance name=\"someSpringBean\" proxy=\"true\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+
+#. Tag: title
+#: Spring.xml:139
+#, no-c-format
+msgid "Spring Application Context as a Seam Component"
+msgstr "Spring Application Context como un componente Seam"
+
+#. Tag: para
+#: Spring.xml:140
+#, no-c-format
+msgid ""
+"Although it is possible to use the Spring <literal>ContextLoaderListener</"
+"literal> to start your application&#39;s Spring ApplicationContext there are "
+"a couple of limitations."
+msgstr ""
+"Aunque es posible utilizar el <literal>ContextLoaderListener</literal> de "
+"Spring para iniciar su Spring ApplicationContext de Spring hay un par de "
+"limitaciones."
+
+#. Tag: para
+#: Spring.xml:145
+#, no-c-format
+msgid ""
+"the Spring ApplicationContext must be started <emphasis>after</emphasis> the "
+"<literal>SeamListener</literal>"
+msgstr ""
+"el Spring ApplicationContext se debe iniciar <emphasis>después </emphasis> "
+"del <literal>SeamListener</literal>"
+
+#. Tag: para
+#: Spring.xml:150
+#, no-c-format
+msgid ""
+"it can be tricky starting a Spring ApplicationContext for use in Seam unit "
+"and integration tests"
+msgstr ""
+"puede ser un poco dificil iniciar un Spring ApplicationContext para "
+"utilizarlo en pruebas de integración y unidades Seam."
+
+#. Tag: para
+#: Spring.xml:155
+#, no-c-format
+msgid ""
+"To overcome these two limitations the Spring integration includes a Seam "
+"component that will start a Spring ApplicationContext. To use this Seam "
+"component place the <literal>&lt;spring:context-loader/&gt;</literal> "
+"definition in the <literal>components.xml</literal>. Specify your Spring "
+"context file location in the <literal>config-locations</literal> attribute. "
+"If more than one config file is needed you can place them in the nested "
+"<literal>&lt;spring:config-locations/&gt;</literal> element following "
+"standard <literal>components.xml</literal> multi value practices."
+msgstr ""
+"Para superar estas dos limitaciones la integración de Spring incluye un "
+"componente Seam que iniciará un Spring ApplicationContext. Para utilizar "
+"este componente Seam, ponga la definición <literal>&lt;spring:context-loader/"
+"&gt;</literal> en el <literal>components.xml</literal>. Especifique la "
+"ubicación de su archivo de contexto Spring en el atributo <literal>config-"
+"locations</literal>. Si se necesita más de un archivo de configuración puede "
+"ponerlos en el elemento anidado <literal>&lt;spring:config-locations/&gt;</"
+"literal> siguiendo las siguientes prácticas multi valores "
+"<literal>components.xml</literal>."
+
+#. Tag: programlisting
+#: Spring.xml:158
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:spring=\"http://jboss.com/products/seam/spring\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"http://jboss.com/products/seam/components "
+"http://jboss.com/products/seam/components-1.2.xsd\n"
+"                                http://jboss.com/products/seam/spring http://"
+"jboss.com/products/seam/spring-1.2.xsd\"&gt;\n"
+"\n"
+"        &lt;spring:context-loader context-locations=\"/WEB-INF/"
+"applicationContext.xml\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:spring=\"http://jboss.com/products/seam/spring\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"http://jboss.com/products/seam/components "
+"http://jboss.com/products/seam/components-1.2.xsd\n"
+"                                http://jboss.com/products/seam/spring http://"
+"jboss.com/products/seam/spring-1.2.xsd\"&gt;\n"
+"\n"
+"        &lt;spring:context-loader context-locations=\"/WEB-INF/"
+"applicationContext.xml\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Testing.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Testing.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Testing.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,634 @@
+# translation of Testing.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Testing\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 01:04+0000\n"
+"PO-Revision-Date: 2007-10-22 14:03+1000\n"
+"Last-Translator: Angela Garcia\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Testing.xml:6
+#, no-c-format
+msgid "Testing Seam applications"
+msgstr "Prueba de las aplicaciones Seam "
+
+#. Tag: para
+#: Testing.xml:7
+#, no-c-format
+msgid ""
+"Most Seam applications will need at least two kinds of automated tests: "
+"<emphasis>unit tests</emphasis>, which test a particular Seam component in "
+"isolation, and scripted <emphasis>integration tests</emphasis> which "
+"exercise all Java layers of the application (that is, everything except the "
+"view pages)."
+msgstr ""
+"La mayoría de las aplicaciones Seam necesitarán por lo menos dos clases de "
+"pruebas automatizadas: <emphasis>pruebas de unidades</emphasis>, las cuales "
+"prueban un componente Seam en particular aisladamente y <emphasis>pruebas de "
+"integración</emphasis> con scripts , las cuales ejercitan todas las capas "
+"Java de la aplicación (es decir, todo a excepción de las páginas de vista)."
+
+#. Tag: para
+#: Testing.xml:10
+#, no-c-format
+msgid "Both kinds of tests are very easy to write."
+msgstr "Ambas clases de pruebas son fáciles de escribir."
+
+#. Tag: title
+#: Testing.xml:14
+#, no-c-format
+msgid "Unit testing Seam components"
+msgstr "Componentes Seam para prueba de unidades"
+
+#. Tag: para
+#: Testing.xml:15
+#, no-c-format
+msgid ""
+"All Seam components are POJOs. This is a great place to start if you want "
+"easy unit testing. And since Seam emphasises the use of bijection for inter-"
+"component interactions and access to contextual objects, it&#39;s very easy "
+"to test a Seam component outside of its normal runtime environment."
+msgstr ""
+"Todos los componentes Seam son POJOs. Este es un buen punto para empezar si "
+"quiere probar unidades de manera fácil. Ya que debido a que Seam enfatiza el "
+"uso de biyección para las interacciones entre los componentes y el acceso a "
+"objetos contextuales es muy fácil probar un componente Seam fuera de su "
+"entorno de ejecución normal. "
+
+#. Tag: para
+#: Testing.xml:18
+#, no-c-format
+msgid "Consider the following Seam component:"
+msgstr "Considere el siguiente componente Seam:"
+
+#. Tag: programlisting
+#: Testing.xml:21
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Scope(EVENT)\n"
+"@Name(\"register\")\n"
+"public class RegisterAction implements Register\n"
+"{\n"
+"   private User user;\n"
+"   private EntityManager em;\n"
+"\n"
+"   @In\n"
+"   public void setUser(User user) {\n"
+"       this.user = user;\n"
+"   }\n"
+"   \n"
+"   @PersistenceContext\n"
+"   public void setBookingDatabase(EntityManager em) {\n"
+"       this.em = em;\n"
+"   }\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = em.createQuery(\"select username from User where "
+"username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getResultList();\n"
+"      if (existing.size()==0)\n"
+"      {\n"
+"         em.persist(user);\n"
+"         return \"success\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+"@Stateless\n"
+"@Scope(EVENT)\n"
+"@Name(\"register\")\n"
+"public class RegisterAction implements Register\n"
+"{\n"
+"   private User user;\n"
+"   private EntityManager em;\n"
+"\n"
+"   @In\n"
+"   public void setUser(User user) {\n"
+"       this.user = user;\n"
+"   }\n"
+"   \n"
+"   @PersistenceContext\n"
+"   public void setBookingDatabase(EntityManager em) {\n"
+"       this.em = em;\n"
+"   }\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = em.createQuery(\"select username from User where "
+"username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getResultList();\n"
+"      if (existing.size()==0)\n"
+"      {\n"
+"         em.persist(user);\n"
+"         return \"success\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+
+#. Tag: para
+#: Testing.xml:22
+#, no-c-format
+msgid "We could write a TestNG test for this component as follows:"
+msgstr "Podríamos escribir una prueba TestNG para este componente como la siguiente:"
+
+#. Tag: programlisting
+#: Testing.xml:25
+#, no-c-format
+msgid ""
+"public class RegisterActionTest\n"
+"{\n"
+"\n"
+"    @Test\n"
+"    public testRegisterAction()\n"
+"    {\n"
+"        EntityManager em = getEntityManagerFactory().createEntityManager();\n"
+"        em.getTransaction().begin();\n"
+"        \n"
+"        User gavin = new User();\n"
+"        gavin.setName(\"Gavin King\");\n"
+"        gavin.setUserName(\"1ovthafew\");\n"
+"        gavin.setPassword(\"secret\");\n"
+"        \n"
+"        RegisterAction action = new RegisterAction();\n"
+"        action.setUser(gavin);\n"
+"        action.setBookingDatabase(em);\n"
+"        \n"
+"        assert \"success\".equals( action.register() );\n"
+"        \n"
+"        em.getTransaction().commit();\n"
+"        em.close();\n"
+"    }\n"
+"    \n"
+"    \n"
+"    private EntityManagerFactory emf;\n"
+"    \n"
+"    public EntityManagerFactory getEntityManagerFactory()\n"
+"    {\n"
+"        return emf;\n"
+"    }\n"
+"    \n"
+"    @Configuration(beforeTestClass=true)\n"
+"    public void init() \n"
+"    {\n"
+"        emf = Persistence.createEntityManagerFactory"
+"(\"myResourceLocalEntityManager\");\n"
+"    }\n"
+"    \n"
+"    @Configuration(afterTestClass=true)\n"
+"    public void destroy()\n"
+"    {\n"
+"        emf.close();\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+"public class RegisterActionTest\n"
+"{\n"
+"\n"
+"    @Test\n"
+"    public testRegisterAction()\n"
+"    {\n"
+"        EntityManager em = getEntityManagerFactory().createEntityManager();\n"
+"        em.getTransaction().begin();\n"
+"        \n"
+"        User gavin = new User();\n"
+"        gavin.setName(\"Gavin King\");\n"
+"        gavin.setUserName(\"1ovthafew\");\n"
+"        gavin.setPassword(\"secret\");\n"
+"        \n"
+"        RegisterAction action = new RegisterAction();\n"
+"        action.setUser(gavin);\n"
+"        action.setBookingDatabase(em);\n"
+"        \n"
+"        assert \"success\".equals( action.register() );\n"
+"        \n"
+"        em.getTransaction().commit();\n"
+"        em.close();\n"
+"    }\n"
+"    \n"
+"    \n"
+"    private EntityManagerFactory emf;\n"
+"    \n"
+"    public EntityManagerFactory getEntityManagerFactory()\n"
+"    {\n"
+"        return emf;\n"
+"    }\n"
+"    \n"
+"    @Configuration(beforeTestClass=true)\n"
+"    public void init() \n"
+"    {\n"
+"        emf = Persistence.createEntityManagerFactory"
+"(\"myResourceLocalEntityManager\");\n"
+"    }\n"
+"    \n"
+"    @Configuration(afterTestClass=true)\n"
+"    public void destroy()\n"
+"    {\n"
+"        emf.close();\n"
+"    }\n"
+"    \n"
+"}"
+
+#. Tag: para
+#: Testing.xml:26
+#, no-c-format
+msgid ""
+"Seam components don&#39;t usually depend directly upon container "
+"infrastructure, so most unit testing as as easy as that!"
+msgstr ""
+"Los componentes Seam no muy usualmente dependen directamente de la "
+"infraestructura del contenedor así que la mayoría de las pruebas de unidades "
+"¡son tan fáciles como eso!"
+
+#. Tag: title
+#: Testing.xml:32
+#, no-c-format
+msgid "Integration testing Seam applications"
+msgstr "Aplicaciones Seam para prueba de integración"
+
+#. Tag: para
+#: Testing.xml:33
+#, no-c-format
+msgid ""
+"Integration testing is slightly more difficult. In this case, we can&#39;t "
+"eliminate the container infrastructure; indeed, that is part of what is "
+"being tested! At the same time, we don&#39;t want to be forced to deploy our "
+"application to an application server to run the automated tests. We need to "
+"be able to reproduce just enough of the container infrastructure inside our "
+"testing environment to be able to exercise the whole application, without "
+"hurting performance too much."
+msgstr ""
+"La prueba de integración es un poco más difícil. En este caso no podemos "
+"eliminar la infraestructura del contenedor, de hecho, ¡esto es parte de lo "
+"que se está probando! Al mismo tiempo, no queremos que nos fuercen a "
+"desplegar nuestra aplicación en un servidor de aplicaciones para ejecutar "
+"las pruebas automatizadas. Necesitamos poder reproducir sólo lo suficiente "
+"de la infraestructura del contenedor dentro de nuestro entorno de prueba "
+"para poder ejercitar toda la aplicación sin afectar mucho el rendimiento. "
+
+#. Tag: para
+#: Testing.xml:36
+#, no-c-format
+msgid ""
+"A second problem is emulating user interactions. A third problem is where to "
+"put our assertions. Some test frameworks let us test the whole application "
+"by reproducing user interactions with the web browser. These frameworks have "
+"their place, but they are not appropriate for use at development time."
+msgstr ""
+"El segundo problema es emular las interacciones del usuario. El tercer "
+"problema es dónde poner nuestras afirmaciones. Algunas estructuras de prueba "
+"nos permiten probar toda la aplicación reproduciendo las interacciones de "
+"los usuarios con el navegador web. Estas estructuras tienen su lugar pero no "
+"es apropiado utilizarlas durante el desarrollo."
+
+#. Tag: para
+#: Testing.xml:39
+#, no-c-format
+msgid ""
+"The approach taken by Seam is to let you write tests that script your "
+"components while running inside a pruned down container environment (Seam, "
+"together with the JBoss Embeddable EJB container). The role of the test "
+"script is basically to reproduce the interaction between the view and the "
+"Seam components. In other words, you get to pretend you are the JSF "
+"implementation!"
+msgstr ""
+"El enfoque que Seam toma es dejarle escribir pruebas que proporcionan el "
+"script de sus componentes al ejecutar dentro de un entorno de contenedor "
+"reducido (Seam junto con el contenedor JBoss Embeddable EJB). El papel de "
+"este script de prueba es básicamente reproducir la interacción entre la "
+"vista y los componentes Seam. En otras palabras puede hacerse pasar por ¡la "
+"implementación JSF!"
+
+#. Tag: para
+#: Testing.xml:42
+#, no-c-format
+msgid "This approach tests everything except the view."
+msgstr "Este enfoque prueba todo a excepción de la vista."
+
+#. Tag: para
+#: Testing.xml:45
+#, no-c-format
+msgid "Let&#39;s consider a JSP view for the component we unit tested above:"
+msgstr ""
+"Vamos a considerar una vista JSP para el componente que probamos "
+"anteriormente:"
+
+#. Tag: programlisting
+#: Testing.xml:48
+#, no-c-format
+msgid ""
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Register New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;table border=\"0\"&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Username&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputText value=\"#{user.username}\"/&gt;&lt;/"
+"td&gt;\n"
+"       &lt;/tr&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Real Name&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputText value=\"#{user.name}\"/&gt;&lt;/td&gt;\n"
+"       &lt;/tr&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Password&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputSecret value=\"#{user.password}\"/&gt;&lt;/"
+"td&gt;\n"
+"       &lt;/tr&gt;\n"
+"     &lt;/table&gt;\n"
+"     &lt;h:messages/&gt;\n"
+"     &lt;h:commandButton type=\"submit\" value=\"Register\" action=\"#"
+"{register.register}\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Register New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;table border=\"0\"&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Username&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputText value=\"#{user.username}\"/&gt;&lt;/"
+"td&gt;\n"
+"       &lt;/tr&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Real Name&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputText value=\"#{user.name}\"/&gt;&lt;/td&gt;\n"
+"       &lt;/tr&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Password&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputSecret value=\"#{user.password}\"/&gt;&lt;/"
+"td&gt;\n"
+"       &lt;/tr&gt;\n"
+"     &lt;/table&gt;\n"
+"     &lt;h:messages/&gt;\n"
+"     &lt;h:commandButton type=\"submit\" value=\"Register\" action=\"#"
+"{register.register}\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+
+#. Tag: para
+#: Testing.xml:49
+#, no-c-format
+msgid ""
+"We want to test the registration functionality of our application (the stuff "
+"that happens when the user clicks the Register button). We&#39;ll reproduce "
+"the JSF request lifecycle in an automated TestNG test:"
+msgstr ""
+"Queremos probar la funcionalidad de registro de nuestra aplicación (lo que "
+"pasa cuando el usuario hace click en el botón de registro). Vamos a "
+"reproducir el ciclo de vida del pedido JSF en una prueba TestNG automatizada:"
+
+#. Tag: programlisting
+#: Testing.xml:52
+#, no-c-format
+msgid ""
+"public class RegisterTest extends SeamTest\n"
+"{\n"
+"   \n"
+"   @Test\n"
+"   public void testRegister() throws Exception\n"
+"   {\n"
+"            \n"
+"      new FacesRequest() {\n"
+"\n"
+"         @Override\n"
+"         protected void processValidations() throws Exception\n"
+"         {\n"
+"            validateValue(\"#{user.username}\", \"1ovthafew\");\n"
+"            validateValue(\"#{user.name}\", \"Gavin King\");\n"
+"            validateValue(\"#{user.password}\", \"secret\");\n"
+"            assert !isValidationFailure();\n"
+"         }\n"
+"         \n"
+"         @Override\n"
+"         protected void updateModelValues() throws Exception\n"
+"         {\n"
+"            setValue(\"#{user.username}\", \"1ovthafew\");\n"
+"            setValue(\"#{user.name}\", \"Gavin King\");\n"
+"            setValue(\"#{user.password}\", \"secret\");\n"
+"         }\n"
+"\n"
+"         @Override\n"
+"         protected void invokeApplication()\n"
+"         {\n"
+"            assert invokeMethod(\"#{register.register}\").equals(\"success"
+"\");\n"
+"         }\n"
+"\n"
+"         @Override\n"
+"         protected void renderResponse()\n"
+"         {\n"
+"            assert getValue(\"#{user.username}\").equals(\"1ovthafew\");\n"
+"            assert getValue(\"#{user.name}\").equals(\"Gavin King\");\n"
+"            assert getValue(\"#{user.password}\").equals(\"secret\");\n"
+"         }\n"
+"         \n"
+"      }.run();\n"
+"      \n"
+"   }\n"
+"\n"
+"   ...\n"
+"   \n"
+"}"
+msgstr ""
+"public class RegisterTest extends SeamTest\n"
+"{\n"
+"   \n"
+"   @Test\n"
+"   public void testRegister() throws Exception\n"
+"   {\n"
+"            \n"
+"      new FacesRequest() {\n"
+"\n"
+"         @Override\n"
+"         protected void processValidations() throws Exception\n"
+"         {\n"
+"            validateValue(\"#{user.username}\", \"1ovthafew\");\n"
+"            validateValue(\"#{user.name}\", \"Gavin King\");\n"
+"            validateValue(\"#{user.password}\", \"secret\");\n"
+"            assert !isValidationFailure();\n"
+"         }\n"
+"         \n"
+"         @Override\n"
+"         protected void updateModelValues() throws Exception\n"
+"         {\n"
+"            setValue(\"#{user.username}\", \"1ovthafew\");\n"
+"            setValue(\"#{user.name}\", \"Gavin King\");\n"
+"            setValue(\"#{user.password}\", \"secret\");\n"
+"         }\n"
+"\n"
+"         @Override\n"
+"         protected void invokeApplication()\n"
+"         {\n"
+"            assert invokeMethod(\"#{register.register}\").equals(\"success"
+"\");\n"
+"         }\n"
+"\n"
+"         @Override\n"
+"         protected void renderResponse()\n"
+"         {\n"
+"            assert getValue(\"#{user.username}\").equals(\"1ovthafew\");\n"
+"            assert getValue(\"#{user.name}\").equals(\"Gavin King\");\n"
+"            assert getValue(\"#{user.password}\").equals(\"secret\");\n"
+"         }\n"
+"         \n"
+"      }.run();\n"
+"      \n"
+"   }\n"
+"\n"
+"   ...\n"
+"   \n"
+"}"
+
+#. Tag: para
+#: Testing.xml:53
+#, no-c-format
+msgid ""
+"Notice that we&#39;ve extended <literal>SeamTest</literal>, which provides a "
+"Seam environment for our components, and written our test script as an "
+"anonymous class that extends <literal>SeamTest.FacesRequest</literal>, which "
+"provides an emulated JSF request lifecycle. (There is also a "
+"<literal>SeamTest.NonFacesRequest</literal> for testing GET requests.) "
+"We&#39;ve written our code in methods which are named for the various JSF "
+"phases, to emulate the calls that JSF would make to our components. Then "
+"we&#39;ve thrown in various assertions."
+msgstr ""
+"Observe que hemos extendido <literal>SeamTest</literal>, el cual proporciona "
+"un entorno Seam para nuestros componentes y que hemos escrito nuestro script "
+"de prueba como una clase anónima que extiende <literal>SeamTest."
+"FacesRequest</literal>, el cual proporciona un ciclo de vida del pedido JSF "
+"emulado (también hay un <literal>SeamTest.NonFacesRequest</literal> para "
+"probar los pedidos GET). Hemos escrito nuestro código en métodos, los cuales "
+"están nombrados para las variadas fases JSF, para emular las llamadas que "
+"JSF le haría a nuestros componentes. Después hemos añadido varias "
+"afirmaciones."
+
+#. Tag: para
+#: Testing.xml:56
+#, no-c-format
+msgid ""
+"You&#39;ll find plenty of integration tests for the Seam example "
+"applications which demonstrate more complex cases. There are instructions "
+"for running these tests using Ant, or using the TestNG plugin for eclipse:"
+msgstr ""
+"Encontrará bastantes pruebas de integración para las aplicaciones de muestra "
+"Seam, las cuales demuestran casos más complejos. Hay instrucciones para "
+"ejecutar esas pruebas utilizando Ant o utilizando el plugin TestNG para "
+"eclipse: "
+
+#. Tag: title
+#: Testing.xml:68
+#, no-c-format
+msgid "Using mocks in integration tests"
+msgstr "Uso de simulaciones en pruebas de integración "
+
+#. Tag: para
+#: Testing.xml:69
+#, no-c-format
+msgid ""
+"Occasionally, we need to be able to replace the implementation of some Seam "
+"component that depends upon resources which are not available in the "
+"integration test environment. For example, suppose we have some Seam "
+"component which is a facade to some payment processing system:"
+msgstr ""
+"Ocasionalmente es necesario reemplazar la implementación de algunos "
+"componentes Seam que dependen de recursos, los cuales no se encuentran "
+"disponibles en el entorno de prueba de integración. Por ejemplo, supongamos "
+"que tenemos algunos componentes Seam, los cuales son una fachada para algunos "
+"sistemas de procesamiento de pagos:"
+
+#. Tag: programlisting
+#: Testing.xml:72
+#, no-c-format
+msgid ""
+"@Name(\"paymentProcessor\")\n"
+"public class PaymentProcessor {\n"
+"    public boolean processPayment(Payment payment) { .... }\n"
+"}"
+msgstr ""
+"@Name(\"paymentProcessor\")\n"
+"public class PaymentProcessor {\n"
+"    public boolean processPayment(Payment payment) { .... }\n"
+"}"
+
+#. Tag: para
+#: Testing.xml:73
+#, no-c-format
+msgid "For integration tests, we can mock out this component as follows:"
+msgstr ""
+"Para las pruebas de integración podríamos simular este componente como a "
+"continuación:"
+
+#. Tag: programlisting
+#: Testing.xml:76
+#, no-c-format
+msgid ""
+"@Name(\"paymentProcessor\")\n"
+"@Install(precedence=MOCK)\n"
+"public class MockPaymentProcessor extends PaymentProcessor {\n"
+"    public void processPayment(Payment payment) {\n"
+"        return true;\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"paymentProcessor\")\n"
+"@Install(precedence=MOCK)\n"
+"public class MockPaymentProcessor extends PaymentProcessor {\n"
+"    public void processPayment(Payment payment) {\n"
+"        return true;\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Testing.xml:77
+#, no-c-format
+msgid ""
+"Since the <literal>MOCK</literal> precedence is higher than the default "
+"precedence of application components, Seam will install the mock "
+"implementation whenever it is in the classpath. When deployed into "
+"production, the mock implementation is absent, so the real component will be "
+"installed."
+msgstr ""
+"Debido a que la precedencia <literal>MOCK</literal> es mayor que la "
+"precedencia predeterminada de los componentes de la aplicación, Seam "
+"instalará la implementación simulada cuando se encuentre en la ruta de "
+"clase. Cuando se despliega en producción la implementación simulada se "
+"encuentra ausente así que se instalará el componente real."
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Text.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Text.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Text.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,502 @@
+# translation of Text.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Text\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 01:04+0000\n"
+"PO-Revision-Date: 2007-10-29 11:44+1000\n"
+"Last-Translator: Angela Garcia\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Text.xml:6
+#, no-c-format
+msgid "Seam Text"
+msgstr "Seam Text"
+
+#. Tag: para
+#: Text.xml:7
+#, no-c-format
+msgid ""
+"Collaboration-oriented websites require a human-friendly markup language for "
+"easy entry of formatted text in forum posts, wiki pages, blogs, comments, "
+"etc. Seam provides the <literal>&lt;s:formattedText/&gt;</literal> control "
+"for display of formatted text that conforms to the <emphasis>Seam Text</"
+"emphasis> language. Seam Text is implemented using an ANTLR-based parser. "
+"You don&#39;t need to know anything about ANTLR to use it, however."
+msgstr ""
+"Los sitios web con enfoque a la colaboración requieren un lenguaje de fácil "
+"uso para poder introducir de manera conveniente texto formateado en foros, "
+"blogs, páginas wiki, comentarios, etc. Seam proporciona el control "
+"<literal>&lt;s:formattedText/&gt;</literal> para poder presentar texto "
+"formateado que se ajuste al lenguaje <emphasis>Seam Text</emphasis>. Seam "
+"Text se implementa utilizando un analizador sintáctico con base en ANTLR. "
+"Sin embargo, no necesita saber nada sobre ANTLR para poder utilizarlo. "
+
+#. Tag: title
+#: Text.xml:11
+#, no-c-format
+msgid "Basic fomatting"
+msgstr "Formateo básico"
+
+#. Tag: para
+#: Text.xml:12
+#, no-c-format
+msgid "Here is a simple example:"
+msgstr "Aquí está un ejemplo simple:"
+
+#. Tag: programlisting
+#: Text.xml:15
+#, no-c-format
+msgid ""
+"It&#39;s easy to make *bold text*, /italic text/, |monospace|, \n"
+"~deleted text~, super^scripts^ or _underlines_."
+msgstr ""
+"Es fácil producir *texto en negrilla*, /texto en itálica/, |monoespacio|, \n"
+"~texto borrado~, super^scripts^ o _subrayar_. "
+
+#. Tag: para
+#: Text.xml:16
+#, no-c-format
+msgid ""
+"If we display this using <literal>&lt;s:formattedText/&gt;</literal>, we "
+"will get the following HTML produced:"
+msgstr ""
+"Si presentamos esto utilizando <literal>&lt;s:formattedText/&gt;</literal> "
+"vamos a obtener el siguiente HTML:"
+
+#. Tag: programlisting
+#: Text.xml:19
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"It&#39;s easy to make &lt;b&gt;bold text&lt;/b&gt;, &lt;i&gt;italic text&lt;/"
+"i&gt;, &lt;tt&gt;monospace&lt;/tt&gt;\n"
+"&lt;del&gt;deleted text&lt;/del&gt;, super&lt;sup&gt;scripts&lt;/sup&gt; or "
+"&lt;u&gt;underlines&lt;/u&gt;.\n"
+"&lt;/p&gt;"
+msgstr ""
+"&lt;p&gt;\n"
+"Es fácil producir &lt;b&gt;texto en negrilla&lt;/b&gt;, &lt;i&gt;texto en "
+"itálica&lt;/i&gt;, &lt;tt&gt;monoespacio&lt;/tt&gt;\n"
+"&lt;del&gt;texto borrado&lt;/del&gt;, super&lt;sup&gt;scripts&lt;/sup&gt; o "
+"&lt;u&gt;subrayar&lt;/u&gt;.\n"
+"&lt;/p&gt; "
+
+#. Tag: para
+#: Text.xml:20
+#, no-c-format
+msgid ""
+"We can use a blank line to indicate a new paragraph, and <literal>+</"
+"literal> to indicate a heading:"
+msgstr ""
+"Podemos utilizar una línea en blanco para indicar un nuevo párrafo y "
+"<literal>+</literal> para indicar un título:"
+
+#. Tag: programlisting
+#: Text.xml:23
+#, no-c-format
+msgid ""
+"+This is a big heading\n"
+"You /must/ have some text following a heading!\n"
+" \n"
+"++This is a smaller heading\n"
+"This is the first paragraph. We can split it across multiple \n"
+"lines, but we must end it with a blank line.\n"
+"\n"
+"This is the second paragraph."
+msgstr ""
+"+Este es un título grande\n"
+"¡Debe /tener/ algo de texto después de un título!\n"
+" \n"
+"++Este es un título más pequeño\n"
+"Este es el primer párrafo. Lo podemos dividir en varias \n"
+"líneas pero se debe terminar con una línea en blanco.\n"
+"\n"
+"Este es el segundo párrafo."
+
+#. Tag: para
+#: Text.xml:24
+#, no-c-format
+msgid ""
+"(Note that a simple newline is ignored, you need an additional blank line to "
+"wrap text into a new paragraph.) This is the HTML that results:"
+msgstr ""
+"-Observe que se ignora una nueva línea simple, necesita una línea en blanco "
+"adicional para poder poner el texto en un párrafo nuevo. Este es el HTML que "
+"se obtiene:"
+
+#. Tag: programlisting
+#: Text.xml:27
+#, no-c-format
+msgid ""
+"&lt;h1&gt;This is a big heading&lt;/h1&gt;\n"
+"&lt;p&gt;\n"
+"You &lt;i&gt;must&lt;/i&gt; have some text following a heading!\n"
+"&lt;/p&gt;\n"
+" \n"
+"&lt;h2&gt;This is a smaller heading&lt;/h2&gt;\n"
+"&lt;p&gt;\n"
+"This is the first paragraph. We can split it across multiple \n"
+"lines, but we must end it with a blank line.\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"This is the second paragraph.\n"
+"&lt;/p&gt;"
+msgstr ""
+"&lt;h1&gt;Este es un título grande&lt;/h1&gt;\n"
+"&lt;p&gt;\n"
+"¡Debe &lt;i&gt;tener&lt;/i&gt; algo de texto después de un título!\n"
+"&lt;/p&gt;\n"
+" \n"
+"&lt;h2&gt;Este es un título más pequeño&lt;/h2&gt;\n"
+"&lt;p&gt;\n"
+"Este es el primer párrafo. Lo podemos dividir en varias \n"
+"líneas pero se debe terminar con una línea en blanco.\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"Este es el segundo párrafo.\n"
+"&lt;/p&gt;"
+
+#. Tag: para
+#: Text.xml:28
+#, no-c-format
+msgid ""
+"Ordered lists are created using the <literal>#</literal> character. "
+"Unordered lists use the <literal>=</literal> character:"
+msgstr ""
+"Las listas ordenadas se crean utilizando el carácter <literal>#</literal>. "
+"Las listas desordenadas utilizan el caracter <literal>=</literal>:"
+
+#. Tag: programlisting
+#: Text.xml:31
+#, no-c-format
+msgid ""
+"An ordered list:\n"
+"        \n"
+"#first item\n"
+"#second item\n"
+"#and even the /third/ item\n"
+"\n"
+"An unordered list:\n"
+"\n"
+"=an item\n"
+"=another item"
+msgstr ""
+"Una lista ordenada:\n"
+"        \n"
+"#primero\n"
+"#segundo\n"
+"#e inclusive el /tercero/\n"
+"\n"
+"Una lista desordenada:\n"
+"\n"
+"=uno\n"
+"=otro"
+
+#. Tag: programlisting
+#: Text.xml:32
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"An ordered list:\n"
+"&lt;/p&gt;\n"
+" \n"
+"&lt;ol&gt;       \n"
+"&lt;li&gt;first item&lt;/li&gt;\n"
+"&lt;li&gt;second item&lt;/li&gt;\n"
+"&lt;li&gt;and even the &lt;i&gt;third&lt;/i&gt; item&lt;/li&gt;\n"
+"&lt;/ol&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"An unordered list:\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;ul&gt;\n"
+"&lt;li&gt;an item&lt;/li&gt;\n"
+"&lt;li&gt;another item&lt;/li&gt;\n"
+"&lt;/ul&gt;"
+msgstr ""
+"&lt;p&gt;\n"
+"Una lista ordenada:\n"
+"&lt;/p&gt;\n"
+" \n"
+"&lt;ol&gt;       \n"
+"&lt;li&gt;primero&lt;/li&gt;\n"
+"&lt;li&gt;segundo&lt;/li&gt;\n"
+"&lt;li&gt;e incluso &lt;i&gt;el&lt;/i&gt; tercero&lt;/li&gt;\n"
+"&lt;/ol&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"Una lista desordenada:\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;ul&gt;\n"
+"&lt;li&gt;uno&lt;/li&gt;\n"
+"&lt;li&gt;otro&lt;/li&gt;\n"
+"&lt;/ul&gt;"
+
+#. Tag: para
+#: Text.xml:33
+#, no-c-format
+msgid "Quoted sections should be surrounded in double quotes:"
+msgstr "Las citas deben estar entre comillas:"
+
+#. Tag: programlisting
+#: Text.xml:36
+#, no-c-format
+msgid ""
+"The other guy said:\n"
+"        \n"
+"\"Nyeah nyeah-nee \n"
+"/nyeah/ nyeah!\"\n"
+"\n"
+"But what do you think he means by \"nyeah-nee\"?"
+msgstr ""
+"El otro chico dijo:\n"
+"        \n"
+"\"Nea nea-nee \n"
+"/nea/ nea!\"\n"
+"\n"
+"¿Qué crees que significa \"nea-nee\"?"
+
+#. Tag: programlisting
+#: Text.xml:37
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"The other guy said:\n"
+"&lt;/p&gt;\n"
+"        \n"
+"&lt;q&gt;Nyeah nyeah-nee\n"
+"&lt;i&gt;nyeah&lt;/i&gt; nyeah!&lt;/q&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"But what do you think he means by &lt;q&gt;nyeah-nee&lt;/q&gt;?\n"
+"&lt;/p&gt;"
+msgstr ""
+"&lt;p&gt;\n"
+"El otro chico dijo:\n"
+"&lt;/p&gt;\n"
+"        \n"
+"&lt;q&gt;Nea nea-nee\n"
+"&lt;i&gt;nea&lt;/i&gt; nea!&lt;/q&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"¿Qué crees que significa &lt;q&gt;nea-nee&lt;/q&gt;?\n"
+"&lt;/p&gt;"
+
+#. Tag: title
+#: Text.xml:41
+#, no-c-format
+msgid "Entering code and text with special characters"
+msgstr "Introducción de código y de texto con caracteres especiales"
+
+#. Tag: para
+#: Text.xml:42
+#, no-c-format
+msgid ""
+"Special characters such as <literal>*</literal>, <literal>|</literal> and "
+"<literal>#</literal>, along with HTML characters such as <literal>&lt;</"
+"literal>, <literal>&gt;</literal> and <literal>&amp;</literal> may be "
+"escaped using <literal>\\</literal>:"
+msgstr ""
+"Los caracteres especiales tales como <literal>*</literal>, <literal>|</"
+"literal> y <literal>#</literal> junto con los caracteres HTML tales como "
+"<literal>&lt;</literal>, <literal>&gt;</literal> y <literal>&amp;</literal> "
+"se pueden escapar utilizando <literal>\\</literal>:"
+
+#. Tag: programlisting
+#: Text.xml:45
+#, no-c-format
+msgid ""
+"You can write down equations like 2\\*3\\=6 and HTML tags\n"
+"like \\&lt;body\\&gt; using the escape character: \\\\."
+msgstr ""
+"Puede escribir ecuaciones como 2\\*3\\=6 y etiquetas HTML\n"
+"como \\&lt;body\\&gt; usando el caracter de escape: \\\\."
+
+#. Tag: programlisting
+#: Text.xml:46
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"You can write down equations like 2*3=6 and HTML tags\n"
+"like &lt;body&gt; using the escape character: \\.\n"
+"&lt;/p&gt;"
+msgstr ""
+"&lt;p&gt;\n"
+"Puede escribir ecuaciones como 2*3=6 y etiquetas HTML\n"
+"como &lt;body&gt; usando el caracter de escape: \\.\n"
+"&lt;/p&gt;"
+
+#. Tag: para
+#: Text.xml:47
+#, no-c-format
+msgid "And we can quote code blocks using backticks:"
+msgstr "También podemos citar bloques de código utilizando comillas simples:"
+
+#. Tag: programlisting
+#: Text.xml:50
+#, no-c-format
+msgid ""
+"My code doesn&#39;t work:\n"
+"\n"
+"`for (int i=0; i&lt;100; i--)\n"
+"{\n"
+"    doSomething();\n"
+"}`\n"
+"\n"
+"Any ideas?"
+msgstr ""
+"My code doesn&#39;t work:\n"
+"\n"
+"`for (int i=0; i&lt;100; i--)\n"
+"{\n"
+"    doSomething();\n"
+"}`\n"
+"\n"
+"Any ideas?"
+
+#. Tag: programlisting
+#: Text.xml:51
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"My code doesn&#39;t work:\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;pre&gt;for (int i=0; i&lt;100; i--)\n"
+"{\n"
+"    doSomething();\n"
+"}&lt;/pre&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"Any ideas?\n"
+"&lt;/p&gt;"
+msgstr ""
+"&lt;p&gt;\n"
+"Mi código no funciona:\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;pre&gt;for (int i=0; i&lt;100; i--)\n"
+"{\n"
+"    doSomething();\n"
+"}&lt;/pre&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"¿Alguna idea?\n"
+"&lt;/p&gt; "
+
+#. Tag: title
+#: Text.xml:55
+#, no-c-format
+msgid "Links"
+msgstr "Enlaces"
+
+#. Tag: para
+#: Text.xml:56
+#, no-c-format
+msgid "A link may be created using the following syntax:"
+msgstr "Se puede crear un enlace utilizando la siguiente sintaxis: "
+
+#. Tag: programlisting
+#: Text.xml:59
+#, no-c-format
+msgid "Go to the Seam website at [=&gt;http://jboss.com/products/seam]."
+msgstr "Diríjase al sito web de Seam [=&gt;http://jboss.com/products/seam]."
+
+#. Tag: para
+#: Text.xml:60
+#, no-c-format
+msgid "Or, if you want to specify the text of the link:"
+msgstr "O si quiere especificar el texto del vínculo:"
+
+#. Tag: programlisting
+#: Text.xml:63
+#, no-c-format
+msgid "Go to [the Seam website=&gt;http://jboss.com/products/seam]."
+msgstr "Vaya al [sitio web de Seam=&gt;http://jboss.com/products/seam]."
+
+#. Tag: para
+#: Text.xml:64
+#, no-c-format
+msgid ""
+"For advanced users, it is even possible to customize the Seam Text parser to "
+"understand wikiword links written using this syntax."
+msgstr ""
+"Para los usuarios avanzados inclusive es posible personalizar el analizador "
+"sintáctico Seam Text para entender vínculos de palabras wiki escritos "
+"utilizando esta sintaxis."
+
+#. Tag: title
+#: Text.xml:70
+#, no-c-format
+msgid "Entering HTML"
+msgstr "Introducción de HTML"
+
+#. Tag: para
+#: Text.xml:71
+#, no-c-format
+msgid ""
+"Text may even include a certain limited subset of HTML (don&#39;t worry, the "
+"subset is chosen to be safe from cross-site scripting attacks). This is "
+"useful for creating links:"
+msgstr ""
+"El texto inclusive puede incluir un subgrupo limitado de HTML (no se "
+"preocupe, el subgrupo se escoge para que esté seguro de ataques de scripts a "
+"través de diferentes sitos). Esto es útil para crear enlaces: "
+
+#. Tag: programlisting
+#: Text.xml:74
+#, no-c-format
+msgid ""
+"You might want to link to &lt;a href=\"http://jboss.com/products/seam\"&gt;"
+"something\n"
+"cool&lt;/a&gt;, or even include an image: &lt;img src=\"/logo.jpg\"/&gt;"
+msgstr ""
+"Puede que quiera incluir un enlace a &lt;a href=\"http://jboss.com/products/"
+"seam\"&gt;algo \n"
+"interesante&lt;/a&gt;, o incluso incluir una imagen: &lt;img src=\"/logo.jpg"
+"\"/&gt;"
+
+#. Tag: para
+#: Text.xml:75
+#, no-c-format
+msgid "And for creating tables:"
+msgstr "Para crear tablas:"
+
+#. Tag: programlisting
+#: Text.xml:78
+#, no-c-format
+msgid ""
+"&lt;table&gt;\n"
+"    &lt;tr&gt;&lt;td&gt;First name:&lt;/td&gt;&lt;td&gt;Gavin&lt;/td&gt;&lt;/"
+"tr&gt;\n"
+"    &lt;tr&gt;&lt;td&gt;Last name:&lt;/td&gt;&lt;td&gt;King&lt;/td&gt;&lt;/"
+"tr&gt;\n"
+"&lt;/table&gt;"
+msgstr ""
+"&lt;table&gt;\n"
+"    &lt;tr&gt;&lt;td&gt;Nombre:&lt;/td&gt;&lt;td&gt;Gavin&lt;/td&gt;&lt;/"
+"tr&gt;\n"
+"    &lt;tr&gt;&lt;td&gt;Apellido:&lt;/td&gt;&lt;td&gt;King&lt;/td&gt;&lt;/"
+"tr&gt;\n"
+"&lt;/table&gt;"
+
+#. Tag: para
+#: Text.xml:79
+#, no-c-format
+msgid "But you can do much more if you want!"
+msgstr "¡Puede hacer mucho más si quiere!"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Tools.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Tools.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Tools.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,945 @@
+# translation of Tools.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Tools\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 01:04+0000\n"
+"PO-Revision-Date: 2007-10-22 14:39+1000\n"
+"Last-Translator: Angela Garcia\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Tools.xml:6
+#, no-c-format
+msgid "Seam tools"
+msgstr "Herramientas Seam"
+
+#. Tag: title
+#: Tools.xml:8
+#, no-c-format
+msgid "jBPM designer and viewer"
+msgstr "jBPM designer y viewer"
+
+#. Tag: para
+#: Tools.xml:9
+#, no-c-format
+msgid ""
+"The jBPM designer and viewer will let you design and view in a nice way your "
+"business processes and your pageflows. This convenient tool is part of JBoss "
+"Eclipse IDE and more details can be found in the jBPM&#39;s documentation "
+"(http://docs.jboss.com/jbpm/v3/gpd/)"
+msgstr ""
+"jBPM designer y viewer le permitirán diseñar y ver de una manera agradable "
+"sus procesos empresariales y sus flujos de página. Esta práctica "
+"herramienta es parte de JBoss Eclipse IDE y puede encontrar más detalles en "
+"la documentación de jBPM (http://docs.jboss.com/jbpm/v3/gpd/)."
+
+#. Tag: title
+#: Tools.xml:13
+#, no-c-format
+msgid "<title>Business process designer</title>"
+msgstr "<title>Diseñador de procesos empresariales</title>"
+
+#. Tag: para
+#: Tools.xml:14
+#, no-c-format
+msgid "This tool lets you design your own business process in a graphical way."
+msgstr ""
+"Esta herramienta le permite diseñar sus propios procesos empresariales de "
+"manera gráfica."
+
+#. Tag: screeninfo
+#: Tools.xml:17 Tools.xml:33
+#, no-c-format
+msgid "<screeninfo>Business process designer</screeninfo>"
+msgstr "<screeninfo>Business process designer</screeninfo>"
+
+#. Tag: title
+#: Tools.xml:29
+#, no-c-format
+msgid "Pageflow viewer"
+msgstr "Pageflow viewer"
+
+#. Tag: para
+#: Tools.xml:30
+#, no-c-format
+msgid ""
+"This tool let you design to some extend your pageflows and let you build "
+"graphical views of them so you can easily share and compare ideas on how it "
+"should be designed."
+msgstr ""
+"Esta herramienta le permite diseñar hasta cierto punto los flujos de página y "
+"le permite construir vistas gráficas de estas para poder compartir y "
+"comparar ideas de manera fácil sobre como se debe diseñar."
+
+#. Tag: title
+#: Tools.xml:47
+#, no-c-format
+msgid "CRUD-application generator"
+msgstr "Generador de aplicaciones CRUD"
+
+#. Tag: para
+#: Tools.xml:48
+#, no-c-format
+msgid ""
+"This chapter, will give you a short overview of the support for Seam that is "
+"available in the Hibernate Tools. Hibernate Tools is a set of tools for "
+"working with Hibernate and related technologies, such as JBoss Seam and "
+"EJB3. The tools are available as a set of eclipse plugins and Ant tasks. You "
+"can download the Hibernate Tools from the JBoss Eclipse IDE or Hibernate "
+"Tools websites."
+msgstr ""
+"En este capítulo le daremos una pequeña sinopsis del soporte para Seam que "
+"se encuentra disponible en Hibernate Tools. Hibernate Tools es un grupo de "
+"herramientas para trabajar con Hibernate y otras tecnologías relacionadas "
+"tal como JBoss Seam y EJB3. Las herramientas se encuentran disponibles como "
+"un grupo de plugins eclipse y de tareas Ant. Puede descargar Hibernate Tools "
+"de los sitios web de JBoss Eclipse IDE o Hibernate Tools."
+
+#. Tag: para
+#: Tools.xml:51
+#, no-c-format
+msgid ""
+"The specific support for Seam that is currently available is generation of a "
+"fully functional Seam based CRUD-application. The CRUD-application can be "
+"generated based on your existing Hibernate mapping files or EJB3 annotated "
+"POJO&#39;s or even fully reverse engineered from your existing database "
+"schema."
+msgstr ""
+"El soporte específico para Seam que se encuentra actualmente disponible es "
+"una generación de una aplicación CRUD con base en Seam completamente "
+"funcional. La aplicación CRUD se puede generar con base en sus archivos de "
+"mapeo Hibernate existentes o en sus POJOs anotados EJB3 o incluso "
+"completamente como ingeniería inversa de su esquema de base de datos "
+"existente."
+
+#. Tag: para
+#: Tools.xml:54
+#, no-c-format
+msgid ""
+"The following sections is focused on the features required to understand for "
+"usage with Seam. The content is derived from the the Hibernate Tools "
+"reference documentation. Thus if you need more detailed information please "
+"refer to the Hibernate Tools documentation."
+msgstr ""
+"Las siguientes secciones se enfocan en las características que se necesitan "
+"para comprender el uso con Seam. El contenido se deriva de la documentación "
+"de referencia de Hibernate Tools. Por lo tanto si necesita información "
+"detallada consulte la documentación de Hibernate Tools."
+
+#. Tag: title
+#: Tools.xml:58
+#, no-c-format
+msgid "Creating a Hibernate configuration file"
+msgstr "Creación de un archivo de configuración Hibernate"
+
+#. Tag: para
+#: Tools.xml:59
+#, no-c-format
+msgid ""
+"To be able to reverse engineer and generate code a hibernate.properties or "
+"hibernate.cfg.xml file is needed. The Hibernate Tools provide a wizard for "
+"generating the hibernate.cfg.xml file if you do not already have such file."
+msgstr ""
+"Es necesario contar con un archivo hibernate.properties o hibernate.cfg.xml "
+"para poder realizar ingeniería inversa y generar código. Hibernate Tools "
+"proporciona una guía paso a paso para generar el archivo hibernate.cfg.xml "
+"si no cuenta con este archivo."
+
+#. Tag: para
+#: Tools.xml:62
+#, no-c-format
+msgid ""
+"Start the wizard by clicking \"New Wizard\" (Ctrl+N), select the Hibernate/"
+"Hibernate Configuration file (cfg.xml) wizard and press \"Next\". After "
+"selecting the wanted location for the hibernate.cfg.xml file, you will see "
+"the following page:"
+msgstr ""
+"Inicie el asistente haciendo click en \"New Wizard\" (Ctrl+N), seleccione el "
+"archivo de configuración de Hibernate/Hibernate Configuration file (cfg.xml) "
+"wizard y haga click en \"Next\". Después de seleccionar la ubicación deseada para el archivo hibernate.cfg.xml entonces verá la siguiente página:"
+
+#. Tag: para
+#: Tools.xml:73
+#, no-c-format
+msgid ""
+"Tip: The contents in the combo boxes for the JDBC driver class and JDBC URL "
+"change automatically, depending on the Dialect and actual driver you have "
+"chosen."
+msgstr ""
+"Consejo: el contenido en las cajas combo para la clase del controlador JDBC "
+"y la URL JDBC cambian automáticamente dependiendo del dialecto y del "
+"controlador real que ha escogido."
+
+#. Tag: para
+#: Tools.xml:76
+#, no-c-format
+msgid ""
+"Enter your configuration information in this dialog. Details about the "
+"configuration options can be found in Hibernate reference documentation."
+msgstr ""
+"Introduzca la información sobre la configuración en este diálogo. Puede "
+"encontrar los detalles sobre las opciones de configuración en la "
+"documentación de referencia de Hibernate."
+
+#. Tag: para
+#: Tools.xml:79
+#, no-c-format
+msgid ""
+"Press \"Finish\" to create the configuration file, after optionally creating "
+"a Console onfiguration, the hibernate.cfg.xml will be automatically opened "
+"in an editor. The last option \"Create Console Configuration\" is enabled by "
+"default and when enabled i will automatically use the hibernate.cfg.xml for "
+"the basis of a \"Console Configuration\""
+msgstr ""
+"Oprima \"Finish\" para crear el archivo de configuración, después de crear "
+"opcionalmente una configuración de la consola se abrirá automáticamente "
+"hibernate.cfg.xml en un editor. La última opción \"Create Console "
+"Configuration\" se habilita por defecto y cuando esto sucede utilizará de "
+"manera automática hibernate.cfg.xml como base de una \"Console Configuration"
+"\" - configuración de consola."
+
+#. Tag: title
+#: Tools.xml:85
+#, no-c-format
+msgid "<title>Creating a Hibernate Console configuration</title>"
+msgstr "<title>Creación de una configuración de consola Hibernate</title> "
+
+#. Tag: para
+#: Tools.xml:86
+#, no-c-format
+msgid ""
+"A Console Configuration describes to the Hibernate plugin which "
+"configuration files should be used to configure hibernate, including which "
+"classpath is needed to load the POJO&#39;s, JDBC drivers etc. It is required "
+"to make usage of query prototyping, reverse engineering and code generation. "
+"You can have multiple named console configurations. Normally you would just "
+"need one per project, but more (or less) is definitly possible."
+msgstr ""
+"Una configuración de consola le muestra al plugin Hibernate los archivos de "
+"configuración que se deben utilizar para configurar hibernate incluyendo la "
+"ruta de clase que se necesita para cargar los POJOs, los controladores JDBC, "
+"etc. Es necesario utilizar prototipos de peticiones, ingeniería inversa y "
+"generación de código. Puede tener múltiples configuraciones de consola "
+"nombradas. Normalmente sólo necesitaría una por proyecto pero es posible "
+"tener más (o menos). "
+
+#. Tag: para
+#: Tools.xml:89
+#, no-c-format
+msgid ""
+"You create a console configuration by running the Console Configuration "
+"wizard, shown in the following screenshot. The same wizard will also be used "
+"if you are coming from the hibernate.cfg.xml wizard and had enabled \"Create "
+"Console Configuration\"."
+msgstr ""
+"Puede crear una configuración de consola ejecutando el asistente de "
+"configuración de consola que se muestra en la siguiente captura de pantalla. "
+"Se utilizará el mismo asistente si viene del asistente hibernate.cfg.xml y "
+"si ha habilitado \"Create Console Configuration\"- creación de configuración "
+"de consola."
+
+#. Tag: caption
+#: Tools.xml:100
+#, no-c-format
+msgid "<caption>Creating a Hibernate Console configuration</caption>"
+msgstr "<caption>Creación de la configuración de la consola Hibernate</caption>"
+
+#. Tag: para
+#: Tools.xml:102
+#, no-c-format
+msgid ""
+"The following table describes the relevant settings. The wizard can "
+"automatically detect default values for most of these if you started the "
+"Wizard with the relevant java project selected"
+msgstr ""
+"La siguiente tabla describe la configuración relevante. El asistente puede "
+"detectar de manera automática los valores predeterminados para la mayoría de "
+"estos si inició el asistente con el proyecto java relevante seleccionado."
+
+#. Tag: title
+#: Tools.xml:106
+#, no-c-format
+msgid "Hibernate Console Configuration Parameters"
+msgstr "Parámetros de configuración de la consola Hibernate"
+
+#. Tag: para
+#: Tools.xml:114
+#, no-c-format
+msgid "Parameter"
+msgstr "Parámetro"
+
+#. Tag: para
+#: Tools.xml:119 Tools.xml:306 Tools.xml:456
+#, no-c-format
+msgid "Description"
+msgstr "Descripción"
+
+#. Tag: para
+#: Tools.xml:124
+#, no-c-format
+msgid "Auto detected value"
+msgstr "Valor auto detectado"
+
+#. Tag: para
+#: Tools.xml:133
+#, no-c-format
+msgid "Name"
+msgstr "Nombre"
+
+#. Tag: para
+#: Tools.xml:138
+#, no-c-format
+msgid "The unique name of the configuration"
+msgstr "El nombre único de la configuración"
+
+#. Tag: para
+#: Tools.xml:143
+#, no-c-format
+msgid "Name of the selected project"
+msgstr "Nombre del proyecto seleccionado"
+
+#. Tag: para
+#: Tools.xml:150
+#, no-c-format
+msgid "Property file"
+msgstr "Archivo de propiedades"
+
+#. Tag: para
+#: Tools.xml:155
+#, no-c-format
+msgid "Path to a hibernate.properties file"
+msgstr "Ruta al archivo hibernate.properties"
+
+#. Tag: para
+#: Tools.xml:160
+#, no-c-format
+msgid "First hibernate.properties file found in the selected project"
+msgstr ""
+"Primer archivo hibernate.properties que se encontró en el proyecto "
+"seleccionado"
+
+#. Tag: para
+#: Tools.xml:167
+#, no-c-format
+msgid "Configuration file"
+msgstr "Archivo de configuración"
+
+#. Tag: para
+#: Tools.xml:172
+#, no-c-format
+msgid "Path to a hibernate.cfg.xml file"
+msgstr "Ruta al archivo hibernate.cfg.xml"
+
+#. Tag: para
+#: Tools.xml:177
+#, no-c-format
+msgid "First hibernate.cfg.xml file found in the selected project"
+msgstr "Primer archivo hibernate.cfg.xml que se encontró en el proyecto seleccionado"
+
+#. Tag: para
+#: Tools.xml:184
+#, no-c-format
+msgid "Enable Hibernate ejb3/annotations"
+msgstr "Habilitar Hibernate ejb3/anotaciones"
+
+#. Tag: para
+#: Tools.xml:189
+#, no-c-format
+msgid ""
+"Selecting this option enables usage of annotated classes. hbm.xml files are "
+"of course still possible to use too. This feature requires running the "
+"Eclipse IDE with a JDK 5 runtime, otherwise you will get classloading and/or "
+"version errors."
+msgstr ""
+"El seleccionar esta opción habilita el uso de clases anotadas. También se "
+"pueden utilizar los archivos hbm.xml por supuesto. Esta característica "
+"requiere ejecutar el IDE Eclipse con un tiempo de ejecución JDK 5 de otra "
+"forma obtendrá errores de carga de clases y/o de versiones."
+
+#. Tag: para
+#: Tools.xml:194
+#, no-c-format
+msgid "Not enabled"
+msgstr "Deshabilitado"
+
+#. Tag: para
+#: Tools.xml:201
+#, no-c-format
+msgid "Mapping files"
+msgstr "Mapeo de archivos"
+
+#. Tag: para
+#: Tools.xml:206
+#, no-c-format
+msgid ""
+"List of additional mapping files that should be loaded. Note: A hibernate."
+"cfg.xml can also contain mappings. Thus if these a duplicated here, you will "
+"get \"Duplicate mapping\" errors when using the console configuration."
+msgstr ""
+"Lista de los archivos de mapeo adicionales que se deben cargar. Nota: Un "
+"hibernate.cfg.xml también puede contener mapeos. Por lo tanto si estos se "
+"duplican aquí obtendrá errores de \"mapeo duplicado\" al utilizar la "
+"configuración de la consola."
+
+#. Tag: para
+#: Tools.xml:211
+#, no-c-format
+msgid ""
+"If no hibernate.cfg.xml file is found, all hbm.xml files found in the "
+"selected project"
+msgstr ""
+"Si no se encuentra un archivo hibernate.cfg.xml, todos los archivos hbm.xml "
+"que se encuentran en el proyecto seleccionado."
+
+#. Tag: para
+#: Tools.xml:218
+#, no-c-format
+msgid "Classpath"
+msgstr "Ruta de clase"
+
+#. Tag: para
+#: Tools.xml:223
+#, no-c-format
+msgid ""
+"The classpath for loading POJO and JDBC drivers. Do not add Hibernate core "
+"libraries or dependencies, they are already included. If you get "
+"ClassNotFound errors then check this list for possible missing or redundant "
+"directories/jars."
+msgstr ""
+"La ruta de clase para cargar POJO y controladores JDBC. No añada bibliotecas "
+"o dependencias claves de Hibernate ya que ya se encuentran incluídas. Si "
+"recibe errores de ClassNotFound entonces chequee esta lista para ver si hay "
+"directorios o jars que faltan o que son redundates."
+
+#. Tag: para
+#: Tools.xml:228
+#, no-c-format
+msgid ""
+"The default build output directory and any JARs with a class implementing "
+"java.sql.Driver in the selected project"
+msgstr ""
+"El directorio de salida construído por defecto y cualquier JAR con una clase "
+"que implemente java.sql.Driver en el proyecto seleccionado."
+
+#. Tag: para
+#: Tools.xml:236
+#, no-c-format
+msgid ""
+"Clicking \"Finish\" creates the configuration and shows it in the "
+"\"Hibernate Configurations\" view"
+msgstr ""
+"Al hacer click en \"Finish\" crea la configuración y aparece en la vista "
+"\"Hibernate Configurations\" -configuraciones de Hibernate."
+
+#. Tag: caption
+#: Tools.xml:247
+#, no-c-format
+msgid "Console overview"
+msgstr "Sinopsis de la consola"
+
+#. Tag: title
+#: Tools.xml:252
+#, no-c-format
+msgid "Reverse engineering and code generation"
+msgstr "Ingeniería inversa y generación de código"
+
+#. Tag: para
+#: Tools.xml:253
+#, no-c-format
+msgid ""
+"A very simple \"click-and-generate\" reverse engineering and code generation "
+"facility is available. It is this facility that allows you to generate the "
+"skeleton for a full Seam CRUD application."
+msgstr ""
+"Tiene disponible un simple ingeniería inversa y generación de código \"haga "
+"click-y-genera\". Esto le permite generar el esqueleto para una completa "
+"aplicación CRUD Seam."
+
+#. Tag: para
+#: Tools.xml:256
+#, no-c-format
+msgid ""
+"To start working with this process, start the \"Hibernate Code Generation\" "
+"which is available in the toolbar via the Hibernate icon or via the \"Run/"
+"Hibernate Code Generation\" menu item."
+msgstr ""
+"Para empezar a trabajar con este proceso inicie la \"Generación del código "
+"de Hibernate\" (\"Hibernate Code Generation\"), el cual se encuentra "
+"disponible en la barra de herramientas por medio del ícono de Hibernate o por "
+"medio del ítem en el menú \"Ejecutar/Generación del código de Hibernate"
+"\" (\"Run/Hibernate Code Generation\")."
+
+#. Tag: title
+#: Tools.xml:260
+#, no-c-format
+msgid "Code Generation Launcher"
+msgstr "Lanzador de generación de código"
+
+#. Tag: para
+#: Tools.xml:261
+#, no-c-format
+msgid ""
+"When you click on \"Hibernate Code Generation\" the standard Eclipse "
+"launcher dialog will appear. In this dialog you can create, edit and delete "
+"named Hibernate code generation \"launchers\"."
+msgstr ""
+"Cuando hace click en \"Generación del código de Hibernate\" (\"Hibernate "
+"Code Generation\") aparecerá el diálogo de lanzamiento de Eclipse estándar. "
+"En este diálogo puede crear, modificar y borrar \"lanzadores\" de generación "
+"de código Hibernate."
+
+#. Tag: para
+#: Tools.xml:272
+#, no-c-format
+msgid ""
+"The dialog has the standard tabs \"Refresh\" and \"Common\" that can be used "
+"to configure which directories should be automatically refreshed and various "
+"general settings launchers, such as saving them in a project for sharing the "
+"launcher within a team."
+msgstr ""
+"Este diálogo tiene las pestañas estándares \"Refrescar\" y \"Común"
+"\" (\"Refresh\" y \"Common\") que se pueden utilizar para configurar los "
+"directorios que se deben refrescar de manera automática además de varios "
+"lanzadores de configuraciones en general tal como cuando es necesario guardarlos en un proyecto "
+"para compartir el lanzador dentro de un grupo."
+
+#. Tag: para
+#: Tools.xml:283
+#, no-c-format
+msgid ""
+"The first time you create a code generation launcher you should give it a "
+"meaningfull name, otherwise the default prefix \"New_Generation\" will be "
+"used."
+msgstr ""
+"La primera vez que crea un lanzador de generación de código debe darle un "
+"nombre significativo de otra manera se utilizará el prefijo predeterminado "
+"\"Nueva_Generación\" (\"New_Generation\")."
+
+#. Tag: para
+#: Tools.xml:286
+#, no-c-format
+msgid ""
+"Note: The \"At least one exporter option must be selected\" is just a "
+"warning stating that for this launch to work you need to select an exporter "
+"on the Exporter tab. When an exporter has been selected the warning will "
+"disappear."
+msgstr ""
+"Nota: \"Se debe seleccionar por lo menos una opción de exportador\" es "
+"simplemente una advertencia que dice que para que este lanzamiento funcione "
+"necesita seleccionar un exportador en la pestaña de exportador. Cuando ha "
+"seleccionado un exportador la advertencia desaparecerá."
+
+#. Tag: para
+#: Tools.xml:289
+#, no-c-format
+msgid "On the \"Main\" tab you the following fields:"
+msgstr "Encontrará los siguientes campos en la pestaña \"Main\":"
+
+#. Tag: title
+#: Tools.xml:293
+#, no-c-format
+msgid "Code generation \"Main\" tab fields"
+msgstr "Pestaña \"Main\" de egenración de código"
+
+#. Tag: para
+#: Tools.xml:301 Tools.xml:451
+#, no-c-format
+msgid "Field"
+msgstr "Campo "
+
+#. Tag: para
+#: Tools.xml:315
+#, no-c-format
+msgid "Console Configuration"
+msgstr "Configuración de la consola"
+
+#. Tag: para
+#: Tools.xml:320
+#, no-c-format
+msgid ""
+"The name of the console configuration which should be used when code "
+"generating."
+msgstr ""
+"El nombre de la configuración de la consola que se debe utilizar al generar "
+"código."
+
+#. Tag: para
+#: Tools.xml:327
+#, no-c-format
+msgid "Output directory"
+msgstr "Directorio de salidas"
+
+#. Tag: para
+#: Tools.xml:332
+#, no-c-format
+msgid ""
+"Path to a directory into where all output will be written by default. Be "
+"aware that existing files will be overwritten, so be sure to specify the "
+"correct directory."
+msgstr ""
+"Ruta al directorio en donde se escribirán todas las salidas por defecto. "
+"Observe que los archivos existentes se sobreescribirán así que asegúrese de "
+"especificar el directorio correcto."
+
+#. Tag: para
+#: Tools.xml:339
+#, no-c-format
+msgid "Reverse engineer from JDBC Connection"
+msgstr "Ingeniería inversa desde una conexión JDBC"
+
+#. Tag: para
+#: Tools.xml:344
+#, no-c-format
+msgid ""
+"If enabled the tools will reverse engineer the database available via the "
+"connection information in the selected Hibernate Console Configuration and "
+"generate code based on the database schema. If not enabled the code "
+"generation will just be based on the mappings already specified in the "
+"Hibernate Console configuration."
+msgstr ""
+"Si se encuentra habilitado las herramientas realizarán una ingeniería "
+"inversa en la base de datos disponible por medio de la información de "
+"conexión en la configuración de la consola de Hibernate seleccionada y "
+"generará código con base en el esquema de la base de datos. Si no se "
+"encuentra habilitado la generación de código se basará solamente en los "
+"mapeos que ya se especificaron en la configuración de la consola de "
+"Hibernate."
+
+#. Tag: para
+#: Tools.xml:351
+#, no-c-format
+msgid "Package"
+msgstr "Paquete"
+
+#. Tag: para
+#: Tools.xml:356
+#, no-c-format
+msgid ""
+"The package name here is used as the default package name for any entities "
+"found when reverse engineering."
+msgstr ""
+"El nombre del paquete que se utiliza aquí es el nombre predeterminado del "
+"paquete para cualquier entidad que se encuentre al realizar una ingeniería "
+"inversa."
+
+#. Tag: para
+#: Tools.xml:363
+#, no-c-format
+msgid "reveng.xml"
+msgstr "reveng.xml"
+
+#. Tag: para
+#: Tools.xml:368
+#, no-c-format
+msgid ""
+"Path to a reveng.xml file. A reveng.xml file allows you to control certain "
+"aspects of the reverse engineering. e.g. how jdbc types are mapped to "
+"hibernate types and especially important which tables are included/excluded "
+"from the process. Clicking \"setup\" allows you to select an existing reveng."
+"xml file or create a new one.."
+msgstr ""
+"Ruta a un archivo reveng.xml. Un archivo reveng.xml le permite controlar "
+"ciertos aspectos de la ingeniería reversa, por ejemplo, como se mapean los "
+"tipos jdbc a los tipos hibernate y en especial muy importante las tablas que "
+"se incluyen o se excluyen del proceso. El hacer click en \"configuración"
+"\" (\"setup\") le permitirá seleccionar un archivo reveng.xml ya existente o "
+"crear uno nuevo."
+
+#. Tag: para
+#: Tools.xml:375
+#, no-c-format
+msgid "reveng. strategy"
+msgstr "reveng. strategy"
+
+#. Tag: para
+#: Tools.xml:380
+#, no-c-format
+msgid ""
+"If reveng.xml does not provide enough customization you can provide your own "
+"implementation of an ReverseEngineeringStrategy. The class need to be in the "
+"claspath of the Console Configuration, otherwise you will get class not "
+"found exceptions."
+msgstr ""
+"Si reveng.xml no proporciona suficiente personalización entonces puede usar "
+"su propia implementación de una ReverseEngineeringStrategy. Es necesario que "
+"la clase esté en la ruta de clase de la configuración de la consola de otra "
+"manera obtendrá una clase sin excepciones encontradas."
+
+#. Tag: para
+#: Tools.xml:387
+#, no-c-format
+msgid "Generate basic typed composite ids"
+msgstr "Generación de ids compuestos de tipo básico"
+
+#. Tag: para
+#: Tools.xml:392
+#, no-c-format
+msgid ""
+"This field should always be enabled when generating the Seam CRUD "
+"application. A table that has a multi-colum primary key a &lt;composite-"
+"id&gt; mapping will always be created. If this option is enabled and there "
+"are matching foreign-keys each key column is still considered a &#39;"
+"basic&#39; scalar (string, long, etc.) instead of a reference to an entity. "
+"If you disable this option a &lt;key-many-to-one&gt; instead. Note: a &lt;"
+"many-to-one&gt; property is still created, but is simply marked as non-"
+"updatable and non-insertable."
+msgstr ""
+"Este campo siempre debe estar habilitado al generar la aplicación CRUD Seam. "
+"Una tabla que tiene una clave primaria multi columna - un id compuesto- el "
+"mapeo siempre se creará. Si esta opción está habilitada y si hay claves "
+"foráneas que coincidan cada columna clave aún es considerada como un escalar "
+"'básico' (cadena, largo, etc) en vez de una referencia a una entidad. Si "
+"desactiva esta opción se considerará como una &lt;clave-muchos-a-uno&gt; "
+"(&lt;key-many-to-one&gt;). Nota: aún se crea una propiedad &lt;clave-muchos-"
+"a-uno&gt; (&lt;key-many-to-one&gt;) pero simplemente se marca como no-"
+"actualizable y no-insertable. "
+
+#. Tag: para
+#: Tools.xml:399
+#, no-c-format
+msgid "Use custom templates"
+msgstr "Uso de plantillas personalizadas"
+
+#. Tag: para
+#: Tools.xml:404
+#, no-c-format
+msgid ""
+"If enabled, the Template directory will be searched first when looking up "
+"the velocity templates, allowing you to redefine how the individual "
+"templates process the hibernate mapping model."
+msgstr ""
+"Si se activa, primero se buscarán las plantillas de velocidad en el "
+"directorio de plantillas, lo cual le permite redefinir la manera en que las "
+"plantillas individuales procesan el modelo de mapeo de hibernate."
+
+#. Tag: para
+#: Tools.xml:411
+#, no-c-format
+msgid "Template directory"
+msgstr "Directorio de plantillas "
+
+#. Tag: para
+#: Tools.xml:416
+#, no-c-format
+msgid "A path to a directory with custom velocity templates."
+msgstr "Una ruta a un directorio con plantillas de velocidad personalizadas."
+
+#. Tag: title
+#: Tools.xml:427
+#, no-c-format
+msgid "Exporters"
+msgstr "Exportadores"
+
+#. Tag: para
+#: Tools.xml:428
+#, no-c-format
+msgid ""
+"The exporters tab is used to specify which type of code that should be "
+"generated. Each selection represents an \"Exporter\" that are responsible "
+"for generating the code, hence the name."
+msgstr ""
+"La pestaña de exportadores se utiliza para especificar el tipo de código que "
+"se debe generar. Cada selección representa un \"Exportador\" que es "
+"responsable de generar el código y de ahí proviene el nombre."
+
+#. Tag: para
+#: Tools.xml:439
+#, no-c-format
+msgid ""
+"The following table describes in short the various exporters. The most "
+"relevant for Seam is of course the \"JBoss Seam Skeleton app\"."
+msgstr ""
+"La siguiente tabla describe en breve los varios exportadores. Los más "
+"relevantes para Seam es por supuesto \"JBoss Seam Skeleton app\"."
+
+#. Tag: title
+#: Tools.xml:443
+#, no-c-format
+msgid "Code generation \"Exporter\" tab fields"
+msgstr "Generación de código con el uso de las pestañas \"Exporter\""
+
+#. Tag: para
+#: Tools.xml:465
+#, no-c-format
+msgid "Generate domain code"
+msgstr "Generar código de dominio"
+
+#. Tag: para
+#: Tools.xml:470
+#, no-c-format
+msgid ""
+"Generates POJO&#39;s for all the persistent classes and components found in "
+"the given Hibernate configuration."
+msgstr ""
+"Genera POJO's para todas las clases persistentes y los componentes que se "
+"encuentran en la configuración dada de Hibernate. "
+
+#. Tag: para
+#: Tools.xml:477
+#, no-c-format
+msgid "JDK 1.5 constructs"
+msgstr "Construcciones JDK 1.5"
+
+#. Tag: para
+#: Tools.xml:482
+#, no-c-format
+msgid "When enabled the POJO&#39;s will use JDK 1.5 constructs."
+msgstr "Cuando están habilitados los POJOs utilizarán construcciones JDK 1.5."
+
+#. Tag: para
+#: Tools.xml:489
+#, no-c-format
+msgid "EJB3/JSR-220 annotations"
+msgstr "Anotaciones EJB3/JSR-220 "
+
+#. Tag: para
+#: Tools.xml:494
+#, no-c-format
+msgid ""
+"When enabled the POJO&#39;s will be annotated according to the EJB3/JSR-220 "
+"persistency specification."
+msgstr ""
+"Cuando se habilitan los POJOs se anotarán de acuerdo con la especificación "
+"de persistencia EJB3/JSR-220. "
+
+#. Tag: para
+#: Tools.xml:501
+#, no-c-format
+msgid "Generate DAO code"
+msgstr "Generación de código DAO "
+
+#. Tag: para
+#: Tools.xml:506
+#, no-c-format
+msgid "Generates a set of DAO&#39;s for each entity found."
+msgstr "Genera un grupo de DAOs para cada entidad que se encuentra. "
+
+#. Tag: para
+#: Tools.xml:513
+#, no-c-format
+msgid "Generate Mappings"
+msgstr "Generación de mapeos"
+
+#. Tag: para
+#: Tools.xml:518
+#, no-c-format
+msgid "Generate mapping (hbm.xml) files for each entity"
+msgstr "Genera archivos de mapeos (hbm.xml) para cada entidad"
+
+#. Tag: para
+#: Tools.xml:525
+#, no-c-format
+msgid "Generate hibernate configuration file"
+msgstr "Generación del archivo de configuración de hibernate"
+
+#. Tag: para
+#: Tools.xml:530
+#, no-c-format
+msgid ""
+"Generate a hibernate.cfg.xml file. Used to keep the hibernate.cfg.xml "
+"uptodate with any new found mapping files."
+msgstr ""
+"Genera un archivo hibernate.cfg.xml. Se utiliza para mantener hibernate.cfg."
+"xml actualizado con cualquier archivo de mapeo nuevo."
+
+#. Tag: para
+#: Tools.xml:537
+#, no-c-format
+msgid "Generate schema html-documentation"
+msgstr "Generación de un esquema html-documentation"
+
+#. Tag: para
+#: Tools.xml:542
+#, no-c-format
+msgid ""
+"Generates set of html pages that documents the database schema and some of "
+"the mappings."
+msgstr ""
+"Genera un grupo de páginas html que documentan el esquema de la base de "
+"datos y algunos de los mapeos."
+
+#. Tag: para
+#: Tools.xml:549
+#, no-c-format
+msgid "Generate JBoss Seam skeleton app (beta)"
+msgstr "Generación de la aplicación esqueleto de JBoss Seam (beta)"
+
+#. Tag: para
+#: Tools.xml:554
+#, no-c-format
+msgid ""
+"Generates a complete JBoss Seam skeleton app. The generation will include "
+"annotated POJO&#39;s, Seam controller beans and a JSP for the presentation "
+"layer. See the generated readme.txt for how to use it."
+msgstr ""
+"Genera una aplicación esqueleto completa de JBoss Seam. La generación "
+"incluirá los POJOs anotados, los beans controladores de Seam y un JSP para "
+"la capa de presentación. Vea el readme.txt generado para ver cómo se "
+"utiliza. "
+
+#. Tag: para
+#: Tools.xml:557
+#, no-c-format
+msgid ""
+"Note: this exporter generates a full application, including a build.xml thus "
+"you will get the best results if you use an output directory which is the "
+"root of your project."
+msgstr ""
+"Nota: este exportador genera una aplicación completa incluyendo un build.xml "
+"y por lo tanto obtendrá mejores resultados si utiliza un directorio de "
+"salidas, el cual es la raíz de su proyecto."
+
+#. Tag: title
+#: Tools.xml:568
+#, no-c-format
+msgid "Generating and using the code"
+msgstr "Generación y uso del código"
+
+#. Tag: para
+#: Tools.xml:569
+#, no-c-format
+msgid ""
+"When you have finished filling out the settings, simply press \"Run\" to "
+"start the generation of code. This might take a little while if you are "
+"reverse engineering from a database."
+msgstr ""
+"Cuando ha terminado de llenar esta configuración simplemente presione \"Run"
+"\" para empezar con la generación del código. Esto puede llegar a tomar un "
+"poco de tiempo si está realizando ingeniería inversa desde una base de datos."
+
+#. Tag: para
+#: Tools.xml:572
+#, no-c-format
+msgid ""
+"When the generation have finished you should now have a complete skeleton "
+"Seam application in the output directory. In the output directory there is a "
+"<literal>readme.txt</literal> file describing the steps needed to deploy and "
+"run the example."
+msgstr ""
+"Cuando la generación termine debe tener un esqueleto completo de la "
+"aplicación Seam en el directorio de salidas. En este directorio hay un "
+"archivo <literal>readme.txt</literal> que describe los pasos que se "
+"necesitan para desplegar y ejecutar el ejemplo."
+
+#. Tag: para
+#: Tools.xml:575
+#, no-c-format
+msgid ""
+"If you want to regenerate/update the skeleton code then simply run the code "
+"generation again by selecting the \"Hibernate Code Generation\" in the "
+"toolbar or \"Run\" menu. Enjoy."
+msgstr ""
+"Si quiere regenerar/actualizar el código esqueleto entonces simplemente "
+"ejecute el código de generación de nuevo seleccionando \"Hibernate Code "
+"Generation\" en la barra de herramientas del menú o \"ejecute\" menú. Qué lo "
+"disfrute."
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Tutorial.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Tutorial.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Tutorial.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,6055 @@
+# translation of Tutorial.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Tutorial\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-02-04 23:29+0000\n"
+"PO-Revision-Date: 2007-10-23 16:43+1000\n"
+"Last-Translator: Angela Garcia\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Tutorial.xml:6
+#, no-c-format
+msgid "Seam Tutorial"
+msgstr "Tutorial de Seam"
+
+#. Tag: title
+#: Tutorial.xml:8
+#, no-c-format
+msgid "Try the examples"
+msgstr "Pruebe los ejemplos"
+
+#. Tag: para
+#: Tutorial.xml:9
+#, no-c-format
+msgid ""
+"In this tutorial, we'll assume that you are using JBoss AS 4.2 with Seam, as "
+"in the case of JBoss Enterprise Application Platform."
+msgstr ""
+"En este tutorial vamos a asumir que está utilizando JBoss AS 4.2 con Seam "
+"como en el caso de JBoss Enterprise Application Platform."
+
+#. Tag: para
+#: Tutorial.xml:12
+#, no-c-format
+msgid "The directory structure of each example in Seam follows this pattern:"
+msgstr ""
+"La estructura del directorio de cada uno de los ejemplos en Seam sigue este "
+"patrón:"
+
+#. Tag: para
+#: Tutorial.xml:17
+#, no-c-format
+msgid ""
+"Web pages, images and stylesheets may be found in <filename>examples/"
+"<replaceable>registration</replaceable>/view</filename>"
+msgstr ""
+"Las páginas web, las imágenes y las hojas de estilo se pueden encontrar en "
+"<filename>examples/<replaceable>registration</replaceable>/view</filename>. "
+
+#. Tag: para
+#: Tutorial.xml:22
+#, no-c-format
+msgid ""
+"Resources such as deployment descriptors and data import scripts may be "
+"found in <filename>examples/<replaceable>registration</replaceable>/"
+"resources</filename>"
+msgstr ""
+"Los recursos como los descriptores de despliegue y los scripts de "
+"importación de datos se pueden encontrar en <filename>examples/"
+"<replaceable>registration</replaceable>/resources</filename>."
+
+#. Tag: para
+#: Tutorial.xml:27
+#, no-c-format
+msgid ""
+"Java source code may be found in <filename>examples/"
+"<replaceable>registration</replaceable>/src</filename>"
+msgstr ""
+"El código fuente de Java se encuentra en <filename>examples/"
+"<replaceable>registration</replaceable>/src</filename>"
+
+#. Tag: para
+#: Tutorial.xml:32
+#, no-c-format
+msgid ""
+"The Ant build script is <filename>examples/<replaceable>registration</"
+"replaceable>/build.xml</filename>"
+msgstr ""
+"El script de construcción Ant está en <filename>examples/"
+"<replaceable>registration</replaceable>/build.xml</filename>"
+
+#. Tag: title
+#: Tutorial.xml:38
+#, no-c-format
+msgid "Running the examples on JBoss AS"
+msgstr "Ejecución de los ejemplos en JBoss AS"
+
+#. Tag: para
+#: Tutorial.xml:39
+#, no-c-format
+msgid ""
+"First, make sure you have Ant correctly installed, with <literal>&#36;"
+"ANT_HOME</literal> and <literal>&#36;JAVA_HOME</literal> set correctly. "
+"Next, make sure you set the location of your JBoss AS installation in the "
+"<literal>build.properties</literal> file in the root folder of your Seam "
+"installation. If you haven't already done so, start JBoss AS now by typing "
+"<literal>bin/run.sh</literal> or <literal>bin/run.bat</literal> in the root "
+"directory of your JBoss installation."
+msgstr ""
+"Primero asegúrese de que tiene instalado correctamente Ant y de que cuenta "
+"con <literal>&#36;ANT_HOME</literal> y <literal>&#36;JAVA_HOME</literal> "
+"configurados de manera correcta. Después asegúrese de configurar la "
+"ubicación de su instalación JBoss AS en el archivo <literal>build."
+"properties</literal> en el directorio del usuario root de su instalación "
+"Seam. Si todavía no lo ha hecho inicie JBoss AS escribiendo <literal>bin/run."
+"sh</literal> o <literal>bin/run.bat</literal> en el directorio raíz de su "
+"instalación de JBoss."
+
+#. Tag: para
+#: Tutorial.xml:42
+#, no-c-format
+msgid ""
+"By default the examples will deploy to the default configuration of the "
+"server. These examples should be deployed to the production configuration if "
+"they are to be used with JBoss Enterprise Application Platform 4.2, and the "
+"example <literal>build.xml</literal> file should be modified to reflect this "
+"before building and deploying. Two lines should be changed in this file:"
+msgstr ""
+"Por defecto los ejemplos se desplegarán con la configuración predeterminada "
+"del servidor. Si va a utilizar estos ejemplos con JBoss Enterprise "
+"Application Platform 4.2 entonces se deben desplegar en la configuración de "
+"producción y además el archivo <literal>build.xml</literal> de ejemplo se "
+"debe modificar para que refleje esto antes de construir y desplegar. Hay que "
+"cambiarle dos líneas a este archivo:"
+
+#. Tag: screen
+#: Tutorial.xml:45
+#, no-c-format
+msgid ""
+"&lt;property name=\"deploy.dir\"           value=\"${jboss.home}/server/"
+"production/deploy\"/&gt;"
+msgstr ""
+"&lt;property name=\"deploy.dir\"           value=\"${jboss.home}/server/"
+"production/deploy\"/&gt;"
+
+#. Tag: screen
+#: Tutorial.xml:46
+#, no-c-format
+msgid ""
+"&lt;property name=\"webroot.dir\"         \n"
+"        value=\"${deploy.dir}/jboss-web.deployer/ROOT.war\"/&gt;"
+msgstr ""
+"&lt;property name=\"webroot.dir\"         \n"
+"        value=\"${deploy.dir}/jboss-web.deployer/ROOT.war\"/&gt;"
+
+#. Tag: para
+#: Tutorial.xml:47
+#, no-c-format
+msgid ""
+"Now, build and deploy the example by typing <literal>ant deploy</literal> in "
+"the <filename>examples/<replaceable>registration</replaceable></filename> "
+"directory."
+msgstr ""
+"Ahora construya y despliegue el ejemplo escribiendo <literal>ant deploy</"
+"literal> en el directorio <filename>examples/<replaceable>registration</"
+"replaceable></filename>."
+
+#. Tag: para
+#: Tutorial.xml:50
+#, no-c-format
+msgid ""
+"Try it out by accessing <ulink url=\"http://localhost:8080/seam-registration/"
+"\"><literal>http://localhost:8080/seam-registration/</literal></ulink> with "
+"your web browser."
+msgstr ""
+"Pruébelo accediendo a <ulink url=\"http://localhost:8080/seam-registration/"
+"\"><literal>http://localhost:8080/seam-registration/</literal></ulink> con "
+"su navegador web."
+
+#. Tag: title
+#: Tutorial.xml:56
+#, no-c-format
+msgid "Running the examples on Tomcat"
+msgstr "Ejecución de los ejemplos en Tomcat"
+
+#. Tag: para
+#: Tutorial.xml:57
+#, no-c-format
+msgid ""
+"First, make sure you have Ant correctly installed, with <literal>&#36;"
+"ANT_HOME</literal> and <literal>&#36;JAVA_HOME</literal> set correctly. "
+"Next, make sure you set the location of your Tomcat installation in the "
+"<literal>build.properties</literal> file in the root folder of your Seam "
+"installation."
+msgstr ""
+"Primero asegúrese de que Ant está instalado correctamente con <literal>&#36;"
+"ANT_HOME</literal> y <literal>&#36;JAVA_HOME</literal> configurados "
+"apropiadamente. Después verifique de que ha configurado la ubicación de su "
+"instalación Tomcat en el archivo <literal>build.properties</literal> en el "
+"directorio del usuario root de su instalación Seam."
+
+#. Tag: para
+#: Tutorial.xml:60
+#, no-c-format
+msgid ""
+"Now, build and deploy the example by typing <literal>ant deploy.tomcat</"
+"literal> in the <filename>examples/<replaceable>registration</replaceable></"
+"filename> directory."
+msgstr ""
+"Ahora construya y despliegue el ejemplo escribiendo <literal>ant deploy."
+"tomcat</literal> en el directorio <filename>examples/"
+"<replaceable>registration</replaceable></filename>."
+
+#. Tag: para
+#: Tutorial.xml:63
+#, no-c-format
+msgid "Finally, start Tomcat."
+msgstr "Finalmente inicie Tomcat."
+
+#. Tag: para
+#: Tutorial.xml:66
+#, no-c-format
+msgid ""
+"Try it out by accessing <ulink url=\"http://localhost:8080/jboss-seam-"
+"registration/\"><literal>http://localhost:8080/jboss-seam-registration/</"
+"literal></ulink> with your web browser."
+msgstr ""
+"Pruébelo accediendo a <ulink url=\"http://localhost:8080/jboss-seam-"
+"registration/\"><literal>http://localhost:8080/jboss-seam-registration/</"
+"literal></ulink> con su navegador web."
+
+#. Tag: para
+#: Tutorial.xml:69
+#, no-c-format
+msgid ""
+"When you deploy the example to Tomcat, any EJB3 components will run inside "
+"the JBoss Embeddable EJB3 container, a complete standalone EJB3 container "
+"environment."
+msgstr ""
+"Cuando despliegue el ejemplo en Tomcat cualquier componente de EJB3 "
+"ejecutará dentro del contenedor JBoss Embeddable EJB3, un entorno de "
+"contenedor EJB3 autónomo y completo."
+
+#. Tag: title
+#: Tutorial.xml:75
+#, no-c-format
+msgid "Running the example tests"
+msgstr "Ejecución de las pruebas del ejemplo"
+
+#. Tag: para
+#: Tutorial.xml:76
+#, no-c-format
+msgid ""
+"Most of the examples come with a suite of TestNG integration tests. The "
+"easiest way to run the tests is to run <literal>ant testexample</literal> "
+"inside the <filename>examples/<replaceable>registration</replaceable></"
+"filename> directory. It is also possible to run the tests inside your IDE "
+"using the TestNG plugin."
+msgstr ""
+"La mayoría de los ejemplos vienen junto con una suite de pruebas de "
+"integración TestNG. La manera más fácil de ejecutar las pruebas es "
+"ejecutando <literal>ant testexample</literal> dentro del directorio "
+"<filename>examples/<replaceable>registration</replaceable></filename>. "
+"También es posible ejecutar las pruebas dentro de su IDE utilizando el "
+"conector TestNG."
+
+#. Tag: title
+#: Tutorial.xml:84
+#, no-c-format
+msgid "Your first Seam application: the registration example"
+msgstr "Su primera aplicación Seam: el ejemplo del registro"
+
+#. Tag: para
+#: Tutorial.xml:85
+#, no-c-format
+msgid ""
+"The registration example is a fairly trivial application that lets a new "
+"user store his username, real name and password in the database. The example "
+"isn&#39;t intended to show off all of the cool functionality of Seam. "
+"However, it demonstrates the use of an EJB3 session bean as a JSF action "
+"listener, and basic configuration of Seam."
+msgstr ""
+"El ejemplo del registro es una aplicación más bien trivial que le permite a "
+"un usuario nuevo almacenar su nombre de usuario, su nombre real y la "
+"contraseña en la base de datos. El propósito de este ejemplo no es hacer "
+"alarde de todas las funcionalidades excepcionales de Seam. Sin embargo, "
+"demuestra el uso de un bean de sesión EJB3 como un escucha de acciones JSF y "
+"la configuración básica de Seam. "
+
+#. Tag: para
+#: Tutorial.xml:88
+#, no-c-format
+msgid ""
+"We&#39;ll go slowly, since we realize you might not yet be familiar with EJB "
+"3.0."
+msgstr ""
+"Vamos a ir despacio ya que estamos concientes de que es posible que no esté "
+"familiariazado con EJB 3.0. "
+
+#. Tag: para
+#: Tutorial.xml:91
+#, no-c-format
+msgid ""
+"The start page displays a very basic form with three input fields. Try "
+"filling them in and then submitting the form. This will save a user object "
+"in the database."
+msgstr ""
+"La página inicial presenta un formulario muy básico con tres entradas. "
+"Intente llenarlas y luego envíelo. Esto guardará el objeto de usuario en la "
+"base de datos."
+
+#. Tag: title
+#: Tutorial.xml:103 Tutorial.xml:415 Tutorial.xml:554 Tutorial.xml:714
+#, no-c-format
+msgid "Understanding the code"
+msgstr "Comprensión del código"
+
+#. Tag: para
+#: Tutorial.xml:104
+#, no-c-format
+msgid ""
+"The example is implemented with two JSP pages, one entity bean and one "
+"stateless session bean."
+msgstr ""
+"El ejemplo se implementa con dos páginas JSP, un bean de entidad y un bean "
+"de sesión sin estado."
+
+#. Tag: para
+#: Tutorial.xml:115
+#, no-c-format
+msgid "Let&#39;s take a look at the code, starting from the \"bottom\"."
+msgstr "Vamos a mirar el código empezando desde la parte de \"abajo\". "
+
+#. Tag: title
+#: Tutorial.xml:119
+#, no-c-format
+msgid "The entity bean: <literal>User.java</literal>"
+msgstr "El bean de entidad: <literal>User.java</literal>"
+
+#. Tag: para
+#: Tutorial.xml:120
+#, no-c-format
+msgid ""
+"We need an EJB entity bean for user data. This class defines "
+"<emphasis>persistence</emphasis> and <emphasis>validation</emphasis> "
+"declaratively, via annotations. It also needs some extra annotations that "
+"define the class as a Seam component."
+msgstr ""
+"Necesitamos un bean de entidad EJB para los datos del usuario. Esta clase "
+"define la <emphasis>persistencia</emphasis> y la <emphasis>validación</"
+"emphasis> declarativamente por medio de anotaciones. También necesita "
+"anotaciones extras que definan la clase como un componente Seam. "
+
+#. Tag: programlisting
+#: Tutorial.xml:135
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"user\")\n"
+"@Scope(SESSION)\n"
+"@Table(name=\"users\")\n"
+"public class User implements Serializable\n"
+"{\n"
+"   private static final long serialVersionUID = 1881413500711441951L;\n"
+"   \n"
+"   private String username;\n"
+"   private String password;\n"
+"   private String name;\n"
+"   \n"
+"   public User(String name, String password, String username)\n"
+"   {\n"
+"      this.name = name;\n"
+"      this.password = password;\n"
+"      this.username = username;\n"
+"   }\n"
+"   \n"
+"   public User() {}\n"
+"   \n"
+"   @NotNull @Length(min=5, max=15)\n"
+"   public String getPassword()\n"
+"   {\n"
+"      return password;\n"
+"   }\n"
+"\n"
+"   public void setPassword(String password)\n"
+"   {\n"
+"      this.password = password;\n"
+"   }\n"
+"   \n"
+"   @NotNull\n"
+"   public String getName()\n"
+"   {\n"
+"      return name;\n"
+"   }\n"
+"\n"
+"   public void setName(String name)\n"
+"   {\n"
+"      this.name = name;\n"
+"   }\n"
+"   \n"
+"   @Id @NotNull @Length(min=5, max=15)\n"
+"   public String getUsername()\n"
+"   {\n"
+"      return username;\n"
+"   }\n"
+"\n"
+"   public void setUsername(String username)\n"
+"   {\n"
+"      this.username = username;\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+"@Entity\n"
+"@Name(\"user\")\n"
+"@Scope(SESSION)\n"
+"@Table(name=\"users\")\n"
+"public class User implements Serializable\n"
+"{\n"
+"   private static final long serialVersionUID = 1881413500711441951L;\n"
+"   \n"
+"   private String username;\n"
+"   private String password;\n"
+"   private String name;\n"
+"   \n"
+"   public User(String name, String password, String username)\n"
+"   {\n"
+"      this.name = name;\n"
+"      this.password = password;\n"
+"      this.username = username;\n"
+"   }\n"
+"   \n"
+"   public User() {}\n"
+"   \n"
+"   @NotNull @Length(min=5, max=15)\n"
+"   public String getPassword()\n"
+"   {\n"
+"      return password;\n"
+"   }\n"
+"\n"
+"   public void setPassword(String password)\n"
+"   {\n"
+"      this.password = password;\n"
+"   }\n"
+"   \n"
+"   @NotNull\n"
+"   public String getName()\n"
+"   {\n"
+"      return name;\n"
+"   }\n"
+"\n"
+"   public void setName(String name)\n"
+"   {\n"
+"      this.name = name;\n"
+"   }\n"
+"   \n"
+"   @Id @NotNull @Length(min=5, max=15)\n"
+"   public String getUsername()\n"
+"   {\n"
+"      return username;\n"
+"   }\n"
+"\n"
+"   public void setUsername(String username)\n"
+"   {\n"
+"      this.username = username;\n"
+"   }\n"
+"\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:138
+#, no-c-format
+msgid ""
+"The EJB3 standard <literal>@Entity</literal> annotation indicates that the "
+"<literal>User</literal> class is an entity bean."
+msgstr ""
+"La anotación estándar <literal>@Entity</literal> indica que la clase "
+"<literal>User</literal> es un bean de entidad. "
+
+#. Tag: para
+#: Tutorial.xml:143
+#, no-c-format
+msgid ""
+"A Seam component needs a <emphasis>component name</emphasis> specified by "
+"the <link linkend=\"name-annotation\"><literal>@Name</literal></link> "
+"annotation. This name must be unique within the Seam application. When JSF "
+"asks Seam to resolve a context variable with a name that is the same as a "
+"Seam component name, and the context variable is currently undefined (null), "
+"Seam will instantiate that component, and bind the new instance to the "
+"context variable. In this case, Seam will instantiate a <literal>User</"
+"literal> the first time JSF encounters a variable named <literal>user</"
+"literal>."
+msgstr ""
+"Un componente Seam necesita un <emphasis>nombre de componente </emphasis> "
+"especificado por la anotación <link linkend=\"name-annotation"
+"\"><literal>@Name</literal></link>. Este nombre debe ser único dentro de la "
+"aplicación Seam. Cuando JSF le pide a Seam que resuelva una variable de "
+"contexto con un nombre que es igual al nombre del componente Seam y la "
+"variable de contexto actualmente no se encuentra definida (nula) Seam "
+"instanciará ese componente y vinculará la nueva instancia a la variable de "
+"contexto. En este caso, Seam instanciará un <literal>User</literal> la "
+"primera vez que JSF se encuentre con una variable llamada <literal>user</"
+"literal>."
+
+#. Tag: para
+#: Tutorial.xml:148
+#, no-c-format
+msgid ""
+"Whenever Seam instantiates a component, it binds the new instance to a "
+"context variable in the component&#39;s <emphasis>default context</"
+"emphasis>. The default context is specified using the <link linkend=\"scope-"
+"annotation\"><literal>@Scope</literal></link> annotation. The <literal>User</"
+"literal> bean is a session scoped component."
+msgstr ""
+"Cuando Seam instancia un componente vincula la nueva instancia a una "
+"variable de contexto en el <emphasis>contexto predeterminado</emphasis> del "
+"componente. Este contexto se especifica utilizando la anotación <link "
+"linkend=\"scope-annotation\"><literal>@Scope</literal></link>. El bean "
+"<literal>User</literal> es un componente de sesión. "
+
+#. Tag: para
+#: Tutorial.xml:153
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Table</literal> annotation indicates that the "
+"<literal>User</literal> class is mapped to the <literal>users</literal> "
+"table."
+msgstr ""
+"La anotación <literal>@Table</literal> estándar de EJB indica que la clase "
+"<literal>User</literal> se mapea en la tabla <literal>users</literal>."
+
+#. Tag: para
+#: Tutorial.xml:158
+#, no-c-format
+msgid ""
+"<literal>name</literal>, <literal>password</literal> and <literal>username</"
+"literal> are the persistent attributes of the entity bean. All of our "
+"persistent attributes define accessor methods. These are needed when this "
+"component is used by JSF in the render response and update model values "
+"phases."
+msgstr ""
+"<literal>name</literal>, <literal>password</literal> y <literal>username</"
+"literal> son los atributos persistentes del bean de entidad. Todos nuestros "
+"atributos de persistencia definen métodos de acceso. Estos se necesitan "
+"cuando este componente JSF utiliza este componente en las fases de valores "
+"de modelo de actualización y de entrega de respuestas."
+
+#. Tag: para
+#: Tutorial.xml:163
+#, no-c-format
+msgid ""
+"An empty constructor is both required by both the EJB specification and by "
+"Seam."
+msgstr "Tanto Seam como la especificación EJB requieren un constructor vacío."
+
+#. Tag: para
+#: Tutorial.xml:168
+#, no-c-format
+msgid ""
+"The <literal>@NotNull</literal> and <literal>@Length</literal> annotations "
+"are part of the Hibernate Validator framework. Seam integrates Hibernate "
+"Validator and lets you use it for data validation (even if you are not using "
+"Hibernate for persistence)."
+msgstr ""
+"Las anotaciones <literal>@NotNull</literal> y <literal>@Length</literal> son "
+"parte de la estructura de Hibernate Validator. Seam integra Hibernate "
+"Validator y le permite utilizarlo para la validación de datos (aún si no "
+"está utilizando Hibernate para persistencia)."
+
+#. Tag: para
+#: Tutorial.xml:173
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Id</literal> annotation indicates the primary key "
+"attribute of the entity bean."
+msgstr ""
+"La anotación <literal>@Id</literal> estándar de EJB indica el atributo de la "
+"clave primaria del bean de entidad. "
+
+#. Tag: para
+#: Tutorial.xml:180
+#, no-c-format
+msgid ""
+"The most important things to notice in this example are the <literal>@Name</"
+"literal> and <literal>@Scope</literal> annotations. These annotations "
+"establish that this class is a Seam component."
+msgstr ""
+"Las cosas más importantes que se deben tener en cuenta en este ejemplo son "
+"las anotaciones <literal>@Name</literal> y <literal>@Scope</literal>. Estas "
+"anotaciones establecen que esta clase es un componente Seam."
+
+#. Tag: para
+#: Tutorial.xml:183
+#, no-c-format
+msgid ""
+"We&#39;ll see below that the properties of our <literal>User</literal> class "
+"are bound to directly to JSF components and are populated by JSF during the "
+"update model values phase. We don&#39;t need any tedious glue code to copy "
+"data back and forth between the JSP pages and the entity bean domain model."
+msgstr ""
+"A continuación veremos que las propiedades de nuestra clase <literal>User</"
+"literal> se encuentran vinculadas directamente a los componentes JSF y JSF "
+"los llena durante la fase de valores del modelo de actualización. No "
+"necesitamos ningún tedioso código de pegado para poder copiar los datos "
+"entre las páginas JSP y el modelo de dominio del bean de entidad."
+
+#. Tag: para
+#: Tutorial.xml:186
+#, no-c-format
+msgid ""
+"However, entity beans shouldn&#39;t do transaction management or database "
+"access. So we can&#39;t use this component as a JSF action listener. For "
+"that we need a session bean."
+msgstr ""
+"Sin embargo, los beans de entidad no deben realizar la administración de "
+"transacciones o el acceso de bases de datos. Así que no podemos utilizar "
+"este componente como un escucha de acciones JSF, por lo cual necesitamos un "
+"bean de sesión."
+
+#. Tag: title
+#: Tutorial.xml:193
+#, no-c-format
+msgid ""
+"The stateless session bean class: <literal>RegisterAction.java</literal>"
+msgstr ""
+"La clase de bean de sesión sin estado: <literal>RegisterAction.java</literal>"
+
+#. Tag: para
+#: Tutorial.xml:194
+#, no-c-format
+msgid ""
+"Most Seam application use session beans as JSF action listeners (you can use "
+"JavaBeans instead if you like)."
+msgstr ""
+"La mayoría de las aplicaciones Seam utilizan beans de sesión como escuchas "
+"de acciones de JSF (puede utilizar JavaBeans en su lugar si así lo prefiere)."
+
+#. Tag: para
+#: Tutorial.xml:197
+#, no-c-format
+msgid ""
+"We have exactly one JSF action in our application, and one session bean "
+"method attached to it. In this case, we&#39;ll use a stateless session bean, "
+"since all the state associated with our action is held by the <literal>User</"
+"literal> bean."
+msgstr ""
+"Tenemos exactamente una acción JSF en nuestra aplicación y un método de bean "
+"de sesión adjunto a este. En este caso, vamos a utilizar un bean de sesión "
+"sin estado ya que todo el estado asociado con nuestra acción se encuentra en "
+"el bean <literal>User</literal>."
+
+#. Tag: para
+#: Tutorial.xml:200
+#, no-c-format
+msgid "This is the only really interesting code in the example!"
+msgstr "¡Este es el único código realmente interesante en el ejemplo!"
+
+#. Tag: programlisting
+#: Tutorial.xml:215
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"register\")\n"
+"public class RegisterAction implements Register\n"
+"{\n"
+"\n"
+"   @In\n"
+"   private User user;\n"
+"   \n"
+"   @PersistenceContext\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @Logger\n"
+"   private Log log;\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = em.createQuery(\n"
+"         \"select username from User where username=#{user.username}\")\n"
+"         .getResultList();\n"
+"         \n"
+"      if (existing.size()==0)\n"
+"      {\n"
+"         em.persist(user);\n"
+"         log.info(\"Registered new user #{user.username}\");\n"
+"         return \"/registered.jsp\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         FacesMessages.instance().add(\"User #{user.username} already exists"
+"\");\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+"@Stateless\n"
+"@Name(\"register\")\n"
+"public class RegisterAction implements Register\n"
+"{\n"
+"\n"
+"   @In\n"
+"   private User user;\n"
+"   \n"
+"   @PersistenceContext\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @Logger\n"
+"   private Log log;\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = em.createQuery(\n"
+"         \"select username from User where username=#{user.username}\")\n"
+"         .getResultList();\n"
+"         \n"
+"      if (existing.size()==0)\n"
+"      {\n"
+"         em.persist(user);\n"
+"         log.info(\"Registered new user #{user.username}\");\n"
+"         return \"/registered.jsp\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         FacesMessages.instance().add(\"User #{user.username} already exists"
+"\");\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:218
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Stateless</literal> annotation marks this class "
+"as stateless session bean."
+msgstr ""
+"La anotación <literal>@Stateless</literal> estándar de EJB marca esta clase "
+"como un bean de sesión sin estado."
+
+#. Tag: para
+#: Tutorial.xml:223
+#, no-c-format
+msgid ""
+"The <link linkend=\"in-annotation\"><literal>@In</literal></link> annotation "
+"marks an attribute of the bean as injected by Seam. In this case, the "
+"attribute is injected from a context variable named <literal>user</literal> "
+"(the instance variable name)."
+msgstr ""
+"La anotación <link linkend=\"in-annotation\"><literal>@In</literal></link> "
+"marca un atributo del bean como inyectado por Seam. En este caso, el "
+"atributo se inyecta desde una variable de contexto llamada <literal>user</"
+"literal> (el nombre de la variable de instancia)."
+
+#. Tag: para
+#: Tutorial.xml:228
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@PersistenceContext</literal> annotation is used "
+"to inject the EJB3 entity manager."
+msgstr ""
+"La anotación <literal>@PersistenceContext</literal> estándar EJB se utiliza "
+"para inyectar el administrador de entidades EJB3."
+
+#. Tag: para
+#: Tutorial.xml:233
+#, no-c-format
+msgid ""
+"The Seam <literal>@Logger</literal> annotation is used to inject the "
+"component&#39;s <literal>Log</literal> instance."
+msgstr ""
+"La anotación <literal>@Logger</literal> Seam se utiliza para inyectar la "
+"instancia <literal>Log</literal> del componente. "
+
+#. Tag: para
+#: Tutorial.xml:238
+#, no-c-format
+msgid ""
+"The action listener method uses the standard EJB3 <literal>EntityManager</"
+"literal> API to interact with the database, and returns the JSF outcome. "
+"Note that, since this is a sesson bean, a transaction is automatically begun "
+"when the <literal>register()</literal> method is called, and committed when "
+"it completes."
+msgstr ""
+"El método de escucha para acciones utiliza el API <literal>EntityManager</"
+"literal> EJB3 estándar para interactuar con la base de datos y devuelve el "
+"resultado JSF. Observe que debido a que este es un bean de sesión se inicia "
+"automáticamente una transacción cuando se llama el método <literal>register()"
+"</literal> y se guarda cuando se completa."
+
+#. Tag: para
+#: Tutorial.xml:243
+#, no-c-format
+msgid ""
+"Notice that Seam lets you use a JSF EL expression inside EJB-QL. Under the "
+"covers, this results in an ordinary JPA <literal>setParameter()</literal> "
+"call on the standard JPA <literal>Query</literal> object. Nice, huh?"
+msgstr ""
+"Observe que Seam le permite utilizar una expresión JSF EL dentro de EJB-QL. "
+"En realidad esto resulta como una llamada <literal>setParameter()</literal> "
+"JPA común al objeto <literal>Query</literal> JPA estándar. Bien, ¿no le "
+"parece?"
+
+#. Tag: para
+#: Tutorial.xml:248
+#, no-c-format
+msgid ""
+"The <literal>Log</literal> API lets us easily display templated log messages."
+msgstr ""
+"La API <literal>Log</literal> nos deja presentar de manera descomplicada los "
+"mensajes de registro en plantillas."
+
+#. Tag: para
+#: Tutorial.xml:253
+#, no-c-format
+msgid ""
+"JSF action listener methods return a string-valued outcome that determines "
+"what page will be displayed next. A null outcome (or a void action listener "
+"method) redisplays the previous page. In plain JSF, it is normal to always "
+"use a JSF <emphasis>navigation rule</emphasis> to determine the JSF view id "
+"from the outcome. For complex application this indirection is useful and a "
+"good practice. However, for very simple examples like this one, Seam lets "
+"you use the JSF view id as the outcome, eliminating the requirement for a "
+"navigation rule. <emphasis>Note that when you use a view id as an outcome, "
+"Seam always performs a browser redirect.</emphasis>"
+msgstr ""
+"Los métodos de escucha de acciones JSF retornan una cadena que determina la "
+"siguiente página a mostrar. Una salida nula (o un método nulo de escucha de "
+"acciones) vuelve a presentar la página anterior. En JSF simple es normal "
+"utilizar siempre una <emphasis>regla de navegación</emphasis> JSF para "
+"determinar el id del JSF de la salida. Esta indirección es bastante útil "
+"además de recomendable para aplicaciones complejas. Sin embargo, para "
+"ejemplos tan simples como este Seam le permite utilizar la vista de id del "
+"JSF como salida, eliminando la necesidad de una regla de navegación."
+"<emphasis> Observe que cuando utiliza una vista de id como salida, Seam "
+"siempre realiza una redirección en su navegador.</emphasis>"
+
+#. Tag: para
+#: Tutorial.xml:258
+#, no-c-format
+msgid ""
+"Seam provides a number of <emphasis>built-in components</emphasis> to help "
+"solve common problems. The <literal>FacesMessages</literal> component makes "
+"it easy to display templated error or success messages. Built-in Seam "
+"components may be obtained by injection, or by calling an <literal>instance()"
+"</literal> method."
+msgstr ""
+"Seam proporciona un número de <emphasis>componentes incorporados</emphasis> "
+"para ayudar a resolver problemas comunes. El componente "
+"<literal>FacesMessages</literal> facilita presentar los mensajes de éxito o "
+"de error en plantillas. Los componentes de Seam incorporados se pueden "
+"obtener por inyección o llamando a un método <literal>instance()</literal>."
+
+#. Tag: para
+#: Tutorial.xml:265
+#, no-c-format
+msgid ""
+"Note that we did not explicitly specify a <literal>@Scope</literal> this "
+"time. Each Seam component type has a default scope if not explicitly "
+"specified. For stateless session beans, the default scope is the stateless "
+"context. Actually, <emphasis>all</emphasis> stateless session beans belong "
+"in the stateless context."
+msgstr ""
+"Observe que no especificamos de manera explícita un <literal>@Scope</"
+"literal> esta vez. Cada tipo de componente Seam tiene un ámbito "
+"predeterminado si no se especifica explícitamente. Para los beans de sesión "
+"sin estado el ámbito predeterminado es el contexto sin estado. De hecho, "
+"<emphasis>todos</emphasis> los beans de sesión sin estado pertenecen al "
+"contexto sin estado."
+
+#. Tag: para
+#: Tutorial.xml:268
+#, no-c-format
+msgid ""
+"Our session bean action listener performs the business and persistence logic "
+"for our mini-application. In more complex applications, we might need to "
+"layer the code and refactor persistence logic into a dedicated data access "
+"component. That&#39;s perfectly trivial to do. But notice that Seam does not "
+"force you into any particular strategy for application layering."
+msgstr ""
+"Nuestro escucha de acciones de beans de sesión realiza la lógica de "
+"persistencia y la lógica empresarial para nuestra mini-aplicación. En "
+"aplicaciones más complejas puede que necesitemos poner el código y "
+"refactorizar la lógica de persistencia en un componente de acceso de datos "
+"dedicado. Eso es bastante fácil de hacer, pero observe que Seam no le forza "
+"a utilizar ninguna estrategia en particular para el uso en aplicaciones con "
+"capas. "
+
+#. Tag: para
+#: Tutorial.xml:271
+#, no-c-format
+msgid ""
+"Furthermore, notice that our session bean has simultaneous access to context "
+"associated with the web request (the form values in the <literal>User</"
+"literal> object, for example), and state held in transactional resources "
+"(the <literal>EntityManager</literal> object). This is a break from "
+"traditional J2EE architectures. Again, if you are more comfortable with the "
+"traditional J2EE layering, you can certainly implement that in a Seam "
+"application. But for many applications, it&#39;s simply not very useful."
+msgstr ""
+"Además observe que nuestro bean de sesión tiene acceso simultáneo al "
+"contexto asociado con la solicitud a la web (por ejemplo, los valores en el "
+"objeto <literal>User</literal>) y el estado que se encuentra en los recursos "
+"transaccionales (el objeto <literal>EntityManager</literal>). Esto se aleja "
+"un poco de las arquitecturas tradicionales J2EE. De nuevo, si se siente "
+"mejor con las capas J2EE tradicionales de seguro puede implementarlo en una "
+"aplicación Seam, pero simplemente para muchas de las aplicaciones no es muy "
+"útil. "
+
+#. Tag: title
+#: Tutorial.xml:278
+#, no-c-format
+msgid "The session bean local interface: <literal>Register.java</literal>"
+msgstr "La interfaz local del bean de sesión: <literal>Register.java</literal>"
+
+#. Tag: para
+#: Tutorial.xml:279
+#, no-c-format
+msgid "Naturally, our session bean needs a local interface."
+msgstr "Naturalmente nuestro bean de sesión necesita una interfaz local."
+
+#. Tag: programlisting
+#: Tutorial.xml:282
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface Register\n"
+"{\n"
+"   public String register();\n"
+"}"
+msgstr ""
+"@Local\n"
+"public interface Register\n"
+"{\n"
+"   public String register();\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:283
+#, no-c-format
+msgid ""
+"That&#39;s the end of the Java code. Now onto the deployment descriptors."
+msgstr ""
+"Ese es todo el código Java. Ahora veamos los descriptores de despliegue. "
+
+#. Tag: title
+#: Tutorial.xml:289
+#, no-c-format
+msgid ""
+"The Seam component deployment descriptor: <literal>components.xml</literal>"
+msgstr ""
+"El descriptor de despliegue del componente Seam: <literal>components.xml</"
+"literal>"
+
+#. Tag: para
+#: Tutorial.xml:290
+#, no-c-format
+msgid ""
+"If you&#39;ve used many Java frameworks before, you&#39;ll be used to having "
+"to declare all your component classes in some kind of XML file that "
+"gradually grows more and more unmanageable as your project matures. You&#39;"
+"ll be relieved to know that Seam does not require that application "
+"components be accompanied by XML. Most Seam applications require a very "
+"small amount of XML that does not grow very much as the project gets bigger."
+msgstr ""
+"Si ha utilizado bastantes marcos de trabajo Java previamente ya estará "
+"acostumbrado a declarar todas sus clases de componentes en algún tipo de "
+"archivo XML que crece cada vez más y más de manera inmanejable al madurar su "
+"proyecto. Se alegrará de saber que Seam no requiere que los componentes de "
+"la aplicación estén acompañados de XML. La mayoría de las aplicaciones Seam "
+"necesitan una pequeña cantidad de XML que no crece mucho cuando el proyecto "
+"se extiende."
+
+#. Tag: para
+#: Tutorial.xml:293
+#, no-c-format
+msgid ""
+"Nevertheless, it is often useful to be able to provide for <emphasis>some</"
+"emphasis> external configuration of <emphasis>some</emphasis> components "
+"(particularly the components built in to Seam). You have a couple of options "
+"here, but the most flexible option is to provide this configuration in a "
+"file called <literal>components.xml</literal>, located in the <literal>WEB-"
+"INF</literal> directory. We&#39;ll use the <literal>components.xml</literal> "
+"file to tell Seam how to find our EJB components in JNDI:"
+msgstr ""
+"Sin embargo, con frecuencia es bastante útil el poder mantener "
+"<emphasis>algunas</emphasis> configuraciones externas de <emphasis>algunos</"
+"emphasis> componentes (en particular los componentes incluídos en Seam). "
+"Aquí tiene un par de posibilidades pero la opción más flexible es "
+"proporcionar esta configuración en un archivo llamado <literal>components."
+"xml</literal>, que se encuentran en el directorio <literal>WEB-INF</"
+"literal>. Vamos a utilizar el archivo <literal>components.xml</literal> para "
+"decirle a Seam cómo encontrar nuestros componentes EJB en JNDI:"
+
+#. Tag: programlisting
+#: Tutorial.xml:296
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"&gt;\n"
+"     &lt;core:init jndi-pattern=\"@jndiPattern@\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"&gt;\n"
+"     &lt;core:init jndi-pattern=\"@jndiPattern@\"/&gt;\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Tutorial.xml:297
+#, no-c-format
+msgid ""
+"This code configures a property named <literal>jndiPattern</literal> of a "
+"built-in Seam component named <literal>org.jboss.seam.core.init</literal>."
+msgstr ""
+"Este código configura una propiedad llamada <literal>jndiPattern</literal> "
+"de un componente Seam incorporado llamado <literal>org.jboss.seam.core.init</"
+"literal>."
+
+#. Tag: title
+#: Tutorial.xml:303
+#, no-c-format
+msgid "The web deployment description: <literal>web.xml</literal>"
+msgstr "La descripción del despliegue web: <literal>web.xml</literal>"
+
+#. Tag: para
+#: Tutorial.xml:304
+#, no-c-format
+msgid ""
+"The presentation layer for our mini-application will be deployed in a WAR. "
+"So we&#39;ll need a web deployment descriptor."
+msgstr ""
+"La capa de presentación de nuestra mini aplicación será desplegada en un WAR "
+"así que necesitaremos un descriptor de despliegue web. "
+
+#. Tag: programlisting
+#: Tutorial.xml:307
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;web-app version=\"2.5\"\n"
+"    xmlns=\"http://java.sun.com/xml/ns/javaee\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n"
+"        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\"&gt;\n"
+"\n"
+"    &lt;!- - Seam - -&gt;\n"
+"\n"
+"    &lt;listener&gt;\n"
+"        &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/"
+"listener-class&gt;\n"
+"    &lt;/listener&gt;\n"
+"    \n"
+"     &lt;listener&gt;\n"
+"         &lt;listener-class&gt;com.sun.faces.config.ConfigureListener&lt;/"
+"listener-class&gt;\n"
+"    &lt;/listener&gt;\n"
+"\n"
+"    &lt;context-param&gt;\n"
+"        &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-"
+"name&gt;\n"
+"        &lt;param-value&gt;client&lt;/param-value&gt;\n"
+"    &lt;/context-param&gt;\n"
+"\n"
+"    &lt;context-param&gt;\n"
+"        &lt;param-name&gt;javax.faces.DEFAULT_SUFFIX&lt;/param-name&gt;\n"
+"        &lt;param-value&gt;.jspx&lt;/param-value&gt;\n"
+"    &lt;/context-param&gt;\n"
+"\n"
+"        &lt;servlet&gt;\n"
+"                &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;\n"
+"                &lt;servlet-class&gt;javax.faces.webapp.FacesServlet&lt;/"
+"servlet-class&gt;\n"
+"                &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;\n"
+"        &lt;/servlet&gt;\n"
+"\n"
+"        <!-- Faces Servlet Mapping -->\n"
+"        &lt;servlet-mapping&gt;\n"
+"                &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;\n"
+"                &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;\n"
+"        &lt;/servlet-mapping&gt;\n"
+"\n"
+"&lt;/web-app&gt;"
+msgstr ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;web-app version=\"2.5\"\n"
+"    xmlns=\"http://java.sun.com/xml/ns/javaee\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n"
+"        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\"&gt;\n"
+"\n"
+"    &lt;!- - Seam - -&gt;\n"
+"\n"
+"    &lt;listener&gt;\n"
+"        &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/"
+"listener-class&gt;\n"
+"    &lt;/listener&gt;\n"
+"    \n"
+"     &lt;listener&gt;\n"
+"         &lt;listener-class&gt;com.sun.faces.config.ConfigureListener&lt;/"
+"listener-class&gt;\n"
+"    &lt;/listener&gt;\n"
+"\n"
+"    &lt;context-param&gt;\n"
+"        &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-"
+"name&gt;\n"
+"        &lt;param-value&gt;client&lt;/param-value&gt;\n"
+"    &lt;/context-param&gt;\n"
+"\n"
+"    &lt;context-param&gt;\n"
+"        &lt;param-name&gt;javax.faces.DEFAULT_SUFFIX&lt;/param-name&gt;\n"
+"        &lt;param-value&gt;.jspx&lt;/param-value&gt;\n"
+"    &lt;/context-param&gt;\n"
+"\n"
+"        &lt;servlet&gt;\n"
+"                &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;\n"
+"                &lt;servlet-class&gt;javax.faces.webapp.FacesServlet&lt;/"
+"servlet-class&gt;\n"
+"                &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;\n"
+"        &lt;/servlet&gt;\n"
+"\n"
+"        <!-- Faces Servlet Mapping -->\n"
+"        &lt;servlet-mapping&gt;\n"
+"                &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;\n"
+"                &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;\n"
+"        &lt;/servlet-mapping&gt;\n"
+"\n"
+"&lt;/web-app&gt;"
+
+#. Tag: para
+#: Tutorial.xml:308
+#, no-c-format
+msgid ""
+"This <literal>web.xml</literal> file configures Seam and Glassfish. The "
+"configuration you see here is pretty much identical in all Seam applications."
+msgstr ""
+"Este archivo <literal>web.xml</literal> configura Seam y Glassfish. La "
+"configuración que ve aquí es prácticamente idéntica en todas las "
+"aplicaciones Seam."
+
+#. Tag: title
+#: Tutorial.xml:314
+#, no-c-format
+msgid "The JSF configration: <literal>faces-config.xml</literal>"
+msgstr "La configuración JSF: <literal>faces-config.xml</literal>"
+
+#. Tag: para
+#: Tutorial.xml:315
+#, no-c-format
+msgid ""
+"All Seam applications use JSF views as the presentation layer. So we&#39;ll "
+"need <literal>faces-config.xml</literal>."
+msgstr ""
+"Todas las aplicaciones Seam utilizan vistas JSF como capa de presentación "
+"así que necesitaremos <literal>faces-config.xml</literal>. "
+
+#. Tag: programlisting
+#: Tutorial.xml:318
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;!DOCTYPE faces-config \n"
+"PUBLIC \"-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN\"\n"
+"                            \"http://java.sun.com/dtd/web-facesconfig_1_0.dtd"
+"\"&gt;\n"
+"&lt;faces-config&gt;\n"
+"\n"
+"    &lt;!- - A phase listener is needed by all Seam applications - -&gt;\n"
+"    \n"
+"    &lt;lifecycle&gt;\n"
+"        &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-"
+"listener&gt;\n"
+"    &lt;/lifecycle&gt;\n"
+"\n"
+"&lt;/faces-config&gt;"
+msgstr ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;!DOCTYPE faces-config \n"
+"PUBLIC \"-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN\"\n"
+"                            \"http://java.sun.com/dtd/web-facesconfig_1_0.dtd"
+"\"&gt;\n"
+"&lt;faces-config&gt;\n"
+"\n"
+"    &lt;!- - A phase listener is needed by all Seam applications - -&gt;\n"
+"    \n"
+"    &lt;lifecycle&gt;\n"
+"        &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-"
+"listener&gt;\n"
+"    &lt;/lifecycle&gt;\n"
+"\n"
+"&lt;/faces-config&gt;"
+
+#. Tag: para
+#: Tutorial.xml:319
+#, no-c-format
+msgid ""
+"The <literal>faces-config.xml</literal> file integrates Seam into JSF. Note "
+"that we don&#39;t need any JSF managed bean declarations! The managed beans "
+"are the Seam components. In Seam applications, the <literal>faces-config."
+"xml</literal> is used much less often than in plain JSF."
+msgstr ""
+"El archivo <literal>faces-config.xml</literal> integra Seam en JSF. Observe "
+"que ¡no necesitamos ninguna declaración bean administrada por JSF! Los beans "
+"administrados son los componentes Seam. En las aplicaciones Seam se utiliza "
+"<literal>faces-config.xml</literal> con menos frecuencia que en JSF simple. "
+
+#. Tag: para
+#: Tutorial.xml:322
+#, no-c-format
+msgid ""
+"In fact, once you have all the basic descriptors set up, the <emphasis>only</"
+"emphasis> XML you need to write as you add new functionality to a Seam "
+"application is the navigation rules, and possibly jBPM process definitions. "
+"Seam takes the view that <emphasis>process flow</emphasis> and "
+"<emphasis>configuration data</emphasis> are the only things that truly "
+"belong in XML."
+msgstr ""
+"De hecho, una vez que tenga todos los descriptores básicos configurados, el "
+"<emphasis>único</emphasis> XML que necesitará escribir al añadir nuevas "
+"funcionalidades a una aplicación Seam son las reglas de navegación y "
+"posiblemente las definiciones de procesos jBPM. Seam considera que el "
+"<emphasis>flujo del proceso</emphasis> y los <emphasis>datos de "
+"configuración</emphasis> son las únicas cosas que verdaderamente pertenecen "
+"a XML. "
+
+#. Tag: para
+#: Tutorial.xml:325
+#, no-c-format
+msgid ""
+"In this simple example, we don&#39;t even need a navigation rule, since we "
+"decided to embed the view id in our action code."
+msgstr ""
+"En este simple ejemplo ni siquiera necesitamos una regla de navegación ya "
+"que decidimos incluir la vista de id en nuestro código de acción. "
+
+#. Tag: title
+#: Tutorial.xml:330
+#, no-c-format
+msgid "The EJB deployment descriptor: <literal>ejb-jar.xml</literal>"
+msgstr "El descriptor de despliegue EJB: <literal>ejb-jar.xml</literal>"
+
+#. Tag: para
+#: Tutorial.xml:331
+#, no-c-format
+msgid ""
+"The <literal>ejb-jar.xml</literal> file integrates Seam with EJB3, by "
+"attaching the <literal>SeamInterceptor</literal> to all session beans in the "
+"archive."
+msgstr ""
+"El archivo <literal>ejb-jar.xml</literal> integra Seam con EJB3 adjuntando "
+"<literal>SeamInterceptor</literal> a todos los beans de sesión en el fichero."
+
+#. Tag: programlisting
+#: Tutorial.xml:334
+#, no-c-format
+msgid ""
+"&lt;ejb-jar xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \n"
+"         xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee \n"
+"                           http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"
+"\"\n"
+"         version=\"3.0\"&gt;\n"
+"         \n"
+"   &lt;interceptors&gt;\n"
+"     &lt;interceptor&gt;\n"
+"       &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"     &lt;/interceptor&gt;\n"
+"   &lt;/interceptors&gt;\n"
+"   \n"
+"   &lt;assembly-descriptor&gt;\n"
+"      &lt;interceptor-binding&gt;\n"
+"         &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"         &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"      &lt;/interceptor-binding&gt;\n"
+"   &lt;/assembly-descriptor&gt;\n"
+"   \n"
+"&lt;/ejb-jar&gt;"
+msgstr ""
+"&lt;ejb-jar xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \n"
+"         xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee \n"
+"                           http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"
+"\"\n"
+"         version=\"3.0\"&gt;\n"
+"         \n"
+"   &lt;interceptors&gt;\n"
+"     &lt;interceptor&gt;\n"
+"       &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"     &lt;/interceptor&gt;\n"
+"   &lt;/interceptors&gt;\n"
+"   \n"
+"   &lt;assembly-descriptor&gt;\n"
+"      &lt;interceptor-binding&gt;\n"
+"         &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"         &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"      &lt;/interceptor-binding&gt;\n"
+"   &lt;/assembly-descriptor&gt;\n"
+"   \n"
+"&lt;/ejb-jar&gt;"
+
+#. Tag: title
+#: Tutorial.xml:338
+#, no-c-format
+msgid ""
+"The EJB persistence deployment descriptor: <literal>persistence.xml</literal>"
+msgstr ""
+"El descriptor de despliegue de persistencia EJB: <literal>persistence.xml</"
+"literal>"
+
+#. Tag: para
+#: Tutorial.xml:339
+#, no-c-format
+msgid ""
+"The <literal>persistence.xml</literal> file tells the EJB persistence "
+"provider where to find the datasource, and contains some vendor-specific "
+"settings. In this case, enables automatic schema export at startup time."
+msgstr ""
+"El archivo <literal>persistence.xml</literal> le dice al proveedor de "
+"persistencia EJB en donde encontrar la fuente de datos y esta contiene "
+"algunas de las configuraciones específicas del vendedor. En este caso "
+"habilita la exportación de esquemas de manera automática durante el arranque."
+
+#. Tag: programlisting
+#: Tutorial.xml:342
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;persistence xmlns=\"http://java.sun.com/xml/ns/persistence\" \n"
+"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence \n"
+"                           http://java.sun.com/xml/ns/persistence/"
+"persistence_1_0.xsd\" \n"
+"             version=\"1.0\"&gt;\n"
+"    &lt;persistence-unit name=\"userDatabase\"&gt;\n"
+"      &lt;provider&gt;org.hibernate.ejb.HibernatePersistence&lt;/"
+"provider&gt;\n"
+"      &lt;jta-data-source&gt;java:/DefaultDS&lt;/jta-data-source&gt;\n"
+"      &lt;properties&gt;\n"
+"         &lt;property name=\"hibernate.hbm2ddl.auto\" value=\"create-drop\"/"
+"&gt;\n"
+"      &lt;/properties&gt;\n"
+"    &lt;/persistence-unit&gt;\n"
+"&lt;/persistence&gt;"
+msgstr ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;persistence xmlns=\"http://java.sun.com/xml/ns/persistence\" \n"
+"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence \n"
+"                           http://java.sun.com/xml/ns/persistence/"
+"persistence_1_0.xsd\" \n"
+"             version=\"1.0\"&gt;\n"
+"    &lt;persistence-unit name=\"userDatabase\"&gt;\n"
+"      &lt;provider&gt;org.hibernate.ejb.HibernatePersistence&lt;/"
+"provider&gt;\n"
+"      &lt;jta-data-source&gt;java:/DefaultDS&lt;/jta-data-source&gt;\n"
+"      &lt;properties&gt;\n"
+"         &lt;property name=\"hibernate.hbm2ddl.auto\" value=\"create-drop\"/"
+"&gt;\n"
+"      &lt;/properties&gt;\n"
+"    &lt;/persistence-unit&gt;\n"
+"&lt;/persistence&gt;"
+
+#. Tag: title
+#: Tutorial.xml:346
+#, no-c-format
+msgid ""
+"The view: <literal>register.jsp</literal> and <literal>registered.jsp</"
+"literal>"
+msgstr ""
+"Las vistas: <literal>register.jsp</literal> y <literal>registered.jsp</"
+"literal>"
+
+#. Tag: para
+#: Tutorial.xml:347
+#, no-c-format
+msgid ""
+"The view pages for a Seam application could be implemented using any "
+"technology that supports JSF. In this example we use JSP, since it is "
+"familiar to most developers and since we have minimal requirements here "
+"anyway. (But if you take our advice, you&#39;ll use Facelets for your own "
+"applications.)"
+msgstr ""
+"Las páginas de vista para una aplicación Seam se pueden implementar "
+"utilizando cualquier tecnología que soporte JSF. En este ejemplo utilizamos "
+"JSP ya que la mayoría de los desarrolladores deben estar familiarizados con "
+"él y debido a que tenemos requerimientos mínimos aquí de todas formas (pero "
+"si sigue nuestro consejo utilice Facelets para sus propias aplicaciones). "
+
+#. Tag: programlisting
+#: Tutorial.xml:350
+#, no-c-format
+msgid ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://jboss.com/products/seam/taglib\" prefix=\"s\" %"
+"&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Register New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;table border=\"0\"&gt;\n"
+"       &lt;s:validateAll&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Username&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputText value=\"#{user.username}\"/&gt;&lt;/"
+"td&gt;\n"
+"         &lt;/tr&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Real Name&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputText value=\"#{user.name}\"/&gt;&lt;/td&gt;\n"
+"         &lt;/tr&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Password&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputSecret value=\"#{user.password}\"/&gt;&lt;/"
+"td&gt;\n"
+"         &lt;/tr&gt;\n"
+"       &lt;/s:validateAll&gt;\n"
+"     &lt;/table&gt;\n"
+"     &lt;h:messages/&gt;\n"
+"     &lt;h:commandButton type=\"submit\" value=\"Register\" action=\"#"
+"{register.register}\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://jboss.com/products/seam/taglib\" prefix=\"s\" %"
+"&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Register New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;table border=\"0\"&gt;\n"
+"       &lt;s:validateAll&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Username&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputText value=\"#{user.username}\"/&gt;&lt;/"
+"td&gt;\n"
+"         &lt;/tr&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Real Name&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputText value=\"#{user.name}\"/&gt;&lt;/td&gt;\n"
+"         &lt;/tr&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Password&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputSecret value=\"#{user.password}\"/&gt;&lt;/"
+"td&gt;\n"
+"         &lt;/tr&gt;\n"
+"       &lt;/s:validateAll&gt;\n"
+"     &lt;/table&gt;\n"
+"     &lt;h:messages/&gt;\n"
+"     &lt;h:commandButton type=\"submit\" value=\"Register\" action=\"#"
+"{register.register}\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+
+#. Tag: para
+#: Tutorial.xml:351
+#, no-c-format
+msgid ""
+"The only thing here that is specific to Seam is the <literal>&lt;s:"
+"validateAll&gt;</literal> tag. This JSF component tells JSF to validate all "
+"the contained input fields against the Hibernate Validator annotations "
+"specified on the entity bean."
+msgstr ""
+"La única cosa que es específica para Seam es la etiqueta <literal>&lt;s:"
+"validateAll&gt;</literal>. Este componente JSF le dice a JSF que valide "
+"todos los campos de entradas frente a las anotaciones de Hibernate Validator "
+"especificadas en el bean de entidad."
+
+#. Tag: programlisting
+#: Tutorial.xml:354
+#, no-c-format
+msgid ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" %&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Successfully Registered New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"    Welcome, &lt;h:outputText value=\"#{user.name}\"/&gt;, \n"
+"    you are successfully registered as &lt;h:outputText value=\"#{user."
+"username}\"/&gt;.\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" %&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Successfully Registered New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"    Welcome, &lt;h:outputText value=\"#{user.name}\"/&gt;, \n"
+"    you are successfully registered as &lt;h:outputText value=\"#{user."
+"username}\"/&gt;.\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+
+#. Tag: para
+#: Tutorial.xml:355
+#, no-c-format
+msgid ""
+"This is a boring old JSP pages using standard JSF components. There is "
+"nothing specific to Seam here."
+msgstr ""
+"Esta es una vieja y aburrida página JSP que utiliza componentes JSF "
+"estándares. Aquí no hay nada específico para Seam."
+
+#. Tag: title
+#: Tutorial.xml:361
+#, no-c-format
+msgid "The EAR deployment descriptor: <literal>application.xml</literal>"
+msgstr "El descriptor de despliegue EAR: <literal>application.xml</literal>"
+
+#. Tag: para
+#: Tutorial.xml:362
+#, no-c-format
+msgid ""
+"Finally, since our application is deployed as an EAR, we need a deployment "
+"descriptor there, too."
+msgstr ""
+"Finalmente debido a que nuestra aplicación se despliega como un EAR "
+"necesitamos un descriptor de despliegue aquí también."
+
+#. Tag: programlisting
+#: Tutorial.xml:365
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;application xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee \n"
+"                                   http://java.sun.com/xml/ns/javaee/"
+"application_5.xsd\"\n"
+"             version=\"5\"&gt;\n"
+"             \n"
+"    &lt;display-name&gt;Seam Registration&lt;/display-name&gt;\n"
+"\n"
+"    &lt;module&gt;\n"
+"        &lt;web&gt;\n"
+"            &lt;web-uri&gt;jboss-seam-registration.war&lt;/web-uri&gt;\n"
+"            &lt;context-root&gt;/seam-registration&lt;/context-root&gt;\n"
+"        &lt;/web&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;ejb&gt;jboss-seam-registration.jar&lt;/ejb&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;jboss-seam.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;el-ri.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    \n"
+"&lt;/application&gt;"
+msgstr ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;application xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee \n"
+"                                   http://java.sun.com/xml/ns/javaee/"
+"application_5.xsd\"\n"
+"             version=\"5\"&gt;\n"
+"             \n"
+"    &lt;display-name&gt;Seam Registration&lt;/display-name&gt;\n"
+"\n"
+"    &lt;module&gt;\n"
+"        &lt;web&gt;\n"
+"            &lt;web-uri&gt;jboss-seam-registration.war&lt;/web-uri&gt;\n"
+"            &lt;context-root&gt;/seam-registration&lt;/context-root&gt;\n"
+"        &lt;/web&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;ejb&gt;jboss-seam-registration.jar&lt;/ejb&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;jboss-seam.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;el-ri.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    \n"
+"&lt;/application&gt;"
+
+#. Tag: para
+#: Tutorial.xml:366
+#, no-c-format
+msgid ""
+"This deployment descriptor links modules in the enterprise archive and binds "
+"the web application to the context root <literal>/seam-registration</"
+"literal>."
+msgstr ""
+"Este descriptor de despliegue enlaza módulos en el fichero empresarial y "
+"vincula la aplicación web a la raíz de contexto <literal>/seam-registration</"
+"literal>."
+
+#. Tag: title
+#: Tutorial.xml:378 Tutorial.xml:526 Tutorial.xml:689 Tutorial.xml:804
+#, no-c-format
+msgid "How it works"
+msgstr "Cómo funciona"
+
+#. Tag: para
+#: Tutorial.xml:379
+#, no-c-format
+msgid ""
+"When the form is submitted, JSF asks Seam to resolve the variable named "
+"<literal>user</literal>. Since there is no value already bound to that name "
+"(in any Seam context), Seam instantiates the <literal>user</literal> "
+"component, and returns the resulting <literal>User</literal> entity bean "
+"instance to JSF after storing it in the Seam session context."
+msgstr ""
+"Cuando el formulario JSF se presenta, este le pide a Seam que resuelva la "
+"variable llamada <literal>user</literal>. Ya que no hay un valor vinculado "
+"previamente a ese nombre (en cualquier contexto Seam), Seam instancia el "
+"componente <literal>user</literal> y retorna la interfaz del bean de entidad "
+"<literal>User</literal> resultante a JSF después de almacenarlo en el "
+"contexto de la sesión Seam."
+
+#. Tag: para
+#: Tutorial.xml:382
+#, no-c-format
+msgid ""
+"The form input values are now validated against the Hibernate Validator "
+"constraints specified on the <literal>User</literal> entity. If the "
+"constraints are violated, JSF redisplays the page. Otherwise, JSF binds the "
+"form input values to properties of the <literal>User</literal> entity bean."
+msgstr ""
+"Los valores incluídos en el formulario ahora se validan frente a las "
+"restricciones de Hibernate Validator expecificadas en la entidad "
+"<literal>User</literal>. Si se violan las restricciones entonces JSF vuelve "
+"a presentar la página. De otra manera, JSF vincula los valores introducidos "
+"en el formulario con las propiedades del bean de entidad <literal>User</"
+"literal>."
+
+#. Tag: para
+#: Tutorial.xml:385
+#, no-c-format
+msgid ""
+"Next, JSF asks Seam to resolve the variable named <literal>register</"
+"literal>. Seam finds the <literal>RegisterAction</literal> stateless session "
+"bean in the stateless context and returns it. JSF invokes the "
+"<literal>register()</literal> action listener method."
+msgstr ""
+"Después JSF le pide a Seam que resuelva la variable llamada "
+"<literal>register</literal>. Seam encuentra el bean de sesión sin estado "
+"<literal>RegisterAction</literal> en el contexto sin estado y lo retorna. "
+"JSF invoca el método de escucha de acciones <literal>register()</literal>."
+
+#. Tag: para
+#: Tutorial.xml:388
+#, no-c-format
+msgid ""
+"Seam intercepts the method call and injects the <literal>User</literal> "
+"entity from the Seam session context, before continuing the invocation."
+msgstr ""
+"Seam intercepta la llamada del método e inyecta la entidad <literal>User</"
+"literal> desde el contexto de sesión Seam antes de continuar con la "
+"invocación."
+
+#. Tag: para
+#: Tutorial.xml:391
+#, no-c-format
+msgid ""
+"The <literal>register()</literal> method checks if a user with the entered "
+"username already exists. If so, an error message is queued with the "
+"<literal>FacesMessages</literal> component, and a null outcome is returned, "
+"causing a page redisplay. The <literal>FacesMessages</literal> component "
+"interpolates the JSF expression embedded in the message string and adds a "
+"JSF <literal>FacesMessage</literal> to the view."
+msgstr ""
+"El método<literal>register()</literal> chequea si ya hay un usuario con el "
+"nombre de usuario ingresado. Si sí es así entonces se envía un mensaje de "
+"error a la cola con el componente <literal>FacesMessages</literal> y se "
+"retorna una salida nula lo cual causa que la página vuelva a presentarse. El "
+"componente <literal>FacesMessages</literal> interpola la expresión JSF "
+"incluída en la cadena de mensajes y le añade un <literal>FacesMessage</"
+"literal> JSF a la vista."
+
+#. Tag: para
+#: Tutorial.xml:394
+#, no-c-format
+msgid ""
+"If no user with that username exists, the <literal>\"/registered.jsp\"</"
+"literal> outcome triggers a browser redirect to the <literal>registered.jsp</"
+"literal> page. When JSF comes to render the page, it asks Seam to resolve "
+"the variable named <literal>user</literal> and uses property values of the "
+"returned <literal>User</literal> entity from Seam&#39;s session scope."
+msgstr ""
+"Si no existe un usuario con ese nombre entonces la salida <literal>\"/"
+"registered.jsp\"</literal> hace que el navegador se redireccione a la página "
+"<literal>registered.jsp</literal>. Cuando JSF va a presentar la página, este "
+"le pide a Seam que resuelva la variable llamada <literal>user</literal> y "
+"utiliza los valores de propiedad de la entidad <literal>User</literal> "
+"retornada desde el ámbito de la sesión de Seam. "
+
+#. Tag: title
+#: Tutorial.xml:402
+#, no-c-format
+msgid "Clickable lists in Seam: the messages example"
+msgstr "Listas interactivas en Seam: el ejemplo de los mensajes"
+
+#. Tag: para
+#: Tutorial.xml:403
+#, no-c-format
+msgid ""
+"Clickable lists of database search results are such an important part of any "
+"online application that Seam provides special functionality on top of JSF to "
+"make it easier to query data using EJB-QL or HQL and display it as a "
+"clickable list using a JSF <literal>&lt;h:dataTable&gt;</literal>. The "
+"messages example demonstrates this functionality."
+msgstr ""
+"Las listas interactivas - aquellas en donde se puede hacer click- de "
+"resultados de búsqueda en bases de datos son una parte tan importante de "
+"cualquier aplicación en línea que Seam proporciona una funcionalidad "
+"especial además de JSF para poder hacer más fácil la consulta de datos "
+"utilizando EJB-QL o HQL y de esta manera presentarla como una lista en donde "
+"se puede hacer click utilizando un JSF <literal>&lt;h:dataTable&gt;</"
+"literal>. El ejemplo de los mensajes demuestra esta funcionalidad."
+
+#. Tag: para
+#: Tutorial.xml:416
+#, no-c-format
+msgid ""
+"The message list example has one entity bean, <literal>Message</literal>, "
+"one session bean, <literal>MessageListBean</literal> and one JSP."
+msgstr ""
+"El ejemplo de la lista de mensajes tiene un bean de entidad, un bean de "
+"sesión <literal>Message</literal>, <literal>MessageListBean</literal> y un "
+"JSP."
+
+#. Tag: title
+#: Tutorial.xml:420
+#, no-c-format
+msgid "The entity bean: <literal>Message.java</literal>"
+msgstr "El bean de entidad: <literal>Message.java</literal>"
+
+#. Tag: para
+#: Tutorial.xml:421
+#, no-c-format
+msgid ""
+"The <literal>Message</literal> entity defines the title, text, date and time "
+"of a message, and a flag indicating whether the message has been read:"
+msgstr ""
+"La entidad <literal>Message</literal> define el título, texto, fecha y hora "
+"de un mensaje y contiene una bandera indicando si el mensaje ha sido leído:"
+
+#. Tag: programlisting
+#: Tutorial.xml:424
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"message\")\n"
+"@Scope(EVENT)\n"
+"public class Message implements Serializable\n"
+"{\n"
+"   private Long id;\n"
+"   private String title;\n"
+"   private String text;\n"
+"   private boolean read;\n"
+"   private Date datetime;\n"
+"   \n"
+"   @Id @GeneratedValue\n"
+"   public Long getId() {\n"
+"      return id;\n"
+"   }\n"
+"   public void setId(Long id) {\n"
+"      this.id = id;\n"
+"   }\n"
+"   \n"
+"   @NotNull @Length(max=100)\n"
+"   public String getTitle() {\n"
+"      return title;\n"
+"   }\n"
+"   public void setTitle(String title) {\n"
+"      this.title = title;\n"
+"   }\n"
+"   \n"
+"   @NotNull @Lob\n"
+"   public String getText() {\n"
+"      return text;\n"
+"   }\n"
+"   public void setText(String text) {\n"
+"      this.text = text;\n"
+"   }\n"
+"   \n"
+"   @NotNull\n"
+"   public boolean isRead() {\n"
+"      return read;\n"
+"   }\n"
+"   public void setRead(boolean read) {\n"
+"      this.read = read;\n"
+"   }\n"
+"   \n"
+"   @NotNull \n"
+"   @Basic @Temporal(TemporalType.TIMESTAMP)\n"
+"   public Date getDatetime() {\n"
+"      return datetime;\n"
+"   }\n"
+"   public void setDatetime(Date datetime) {\n"
+"      this.datetime = datetime;\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+"@Entity\n"
+"@Name(\"message\")\n"
+"@Scope(EVENT)\n"
+"public class Message implements Serializable\n"
+"{\n"
+"   private Long id;\n"
+"   private String title;\n"
+"   private String text;\n"
+"   private boolean read;\n"
+"   private Date datetime;\n"
+"   \n"
+"   @Id @GeneratedValue\n"
+"   public Long getId() {\n"
+"      return id;\n"
+"   }\n"
+"   public void setId(Long id) {\n"
+"      this.id = id;\n"
+"   }\n"
+"   \n"
+"   @Tonillo @Length(max=100)\n"
+"   public String getTitle() {\n"
+"      return title;\n"
+"   }\n"
+"   public void setTitle(String title) {\n"
+"      this.title = title;\n"
+"   }\n"
+"   \n"
+"   @Tonillo @Lob\n"
+"   public String getText() {\n"
+"      return text;\n"
+"   }\n"
+"   public void setText(String text) {\n"
+"      this.text = text;\n"
+"   }\n"
+"   \n"
+"   @Tonillo\n"
+"   public boolean isRead() {\n"
+"      return read;\n"
+"   }\n"
+"   public void setRead(boolean read) {\n"
+"      this.read = read;\n"
+"   }\n"
+"   \n"
+"   @Tonillo \n"
+"   @Basic @Temporal(TemporalType.TIMESTAMP)\n"
+"   public Date getDatetime() {\n"
+"      return datetime;\n"
+"   }\n"
+"   public void setDatetime(Date datetime) {\n"
+"      this.datetime = datetime;\n"
+"   }\n"
+"   \n"
+"}"
+
+#. Tag: title
+#: Tutorial.xml:429
+#, no-c-format
+msgid "The stateful session bean: <literal>MessageManagerBean.java</literal>"
+msgstr ""
+"El bean de sesión con estado: <literal>MessageManagerBean.java</literal>"
+
+#. Tag: para
+#: Tutorial.xml:430
+#, no-c-format
+msgid ""
+"Just like in the previous example, we have a session bean, "
+"<literal>MessageManagerBean</literal>, which defines the action listener "
+"methods for the two buttons on our form. One of the buttons selects a "
+"message from the list, and displays that message. The other button deletes a "
+"message. So far, this is not so different to the previous example."
+msgstr ""
+"Así como en el ejemplo anterior también tenemos un bean de sesion, "
+"<literal>MessageManagerBean</literal>, el cual define los métodos del "
+"escucha de acciones (action listener) para los dos botones en nuestro "
+"formulario. Uno de los botones selecciona un mensaje de la lista y presenta "
+"ese mensaje. El otro botón borra un mensaje. Hasta ahora esto no difiere "
+"mucho del ejemplo anterior."
+
+#. Tag: para
+#: Tutorial.xml:433
+#, no-c-format
+msgid ""
+"But <literal>MessageManagerBean</literal> is also responsible for fetching "
+"the list of messages the first time we navigate to the message list page. "
+"There are various ways the user could navigate to the page, and not all of "
+"them are preceded by a JSF action&mdash;the user might have bookmarked the "
+"page, for example. So the job of fetching the message list takes place in a "
+"Seam <emphasis>factory method</emphasis>, instead of in an action listener "
+"method."
+msgstr ""
+"Sin embargo, <literal>MessageManagerBean</literal> también es responsable de "
+"buscar la lista de mensajes la primera vez que navegamos a la página de la "
+"lista de mensajes. Hay varias maneras en que el usuario puede navegar a la "
+"página y no todas están precedidas por una acción JSF &mdash;, por ejemplo, "
+"puede que el usuario la haya incluído dentro de sus enlaces favoritos. Así "
+"que el trabajo de ir por la lista de mensajes tiene lugar en una "
+"<emphasis>fábrica de métodos</emphasis> de Seam en vez de un método de "
+"escucha de acciones."
+
+#. Tag: para
+#: Tutorial.xml:436
+#, no-c-format
+msgid ""
+"We want to cache the list of messages in memory between server requests, so "
+"we will make this a stateful session bean."
+msgstr ""
+"Queremos guardar la lista de mensajes en la memoria entre los pedidos del "
+"servidor así que haremos que esta sesión sea un bean de sesión con estado."
+
+#. Tag: programlisting
+#: Tutorial.xml:450
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Scope(SESSION)\n"
+"@Name(\"messageManager\")\n"
+"public class MessageManagerBean implements Serializable, MessageManager\n"
+"{\n"
+"\n"
+"   @DataModel\n"
+"   private List&lt;Message&gt; messageList;\n"
+"   \n"
+"   @DataModelSelection\n"
+"   @Out(required=false)\n"
+"   private Message message;\n"
+"   \n"
+"   @PersistenceContext(type=EXTENDED)\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @Factory(\"messageList\")\n"
+"   public void findMessages()\n"
+"   {\n"
+"      messageList = em.createQuery(\"from Message msg order by msg.datetime "
+"desc\").getResultList();\n"
+"   }\n"
+"   \n"
+"   public void select()\n"
+"   {\n"
+"      message.setRead(true);\n"
+"   }\n"
+"   \n"
+"   public void delete()\n"
+"   {\n"
+"      messageList.remove(message);\n"
+"      em.remove(message);\n"
+"      message=null;\n"
+"   }\n"
+"   \n"
+"   @Remove @Destroy\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+"@Stateful\n"
+"@Scope(SESSION)\n"
+"@Name(\"messageManager\")\n"
+"public class MessageManagerBean implements Serializable, MessageManager\n"
+"{\n"
+"\n"
+"   @DataModel\n"
+"   private List&lt;Message&gt; messageList;\n"
+"   \n"
+"   @DataModelSelection\n"
+"   @Out(required=false)\n"
+"   private Message message;\n"
+"   \n"
+"   @PersistenceContext(type=EXTENDED)\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @Factory(\"messageList\")\n"
+"   public void findMessages()\n"
+"   {\n"
+"      messageList = em.createQuery(\"from Message msg order by msg.datetime "
+"desc\").getResultList();\n"
+"   }\n"
+"   \n"
+"   public void select()\n"
+"   {\n"
+"      message.setRead(true);\n"
+"   }\n"
+"   \n"
+"   public void delete()\n"
+"   {\n"
+"      messageList.remove(message);\n"
+"      em.remove(message);\n"
+"      message=null;\n"
+"   }\n"
+"   \n"
+"   @Remove @Destroy\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:453
+#, no-c-format
+msgid ""
+"The <literal>@DataModel</literal> annotation exposes an attibute of type "
+"<literal>java.util.List</literal> to the JSF page as an instance of "
+"<literal>javax.faces.model.DataModel</literal>. This allows us to use the "
+"list in a JSF <literal>&lt;h:dataTable&gt;</literal> with clickable links "
+"for each row. In this case, the <literal>DataModel</literal> is made "
+"available in a session context variable named <literal>messageList</literal>."
+msgstr ""
+"La anotación <literal>@DataModel</literal> expone un atributo del tipo "
+"<literal>java.util.List</literal> a la página JSF como una instancia de "
+"<literal>javax.faces.model.DataModel</literal>. Esto nos permite utilizar la "
+"lista en un JSF <literal>&lt;h:dataTable&gt;</literal> con enlaces para cada "
+"fila. En este caso, el <literal>DataModel</literal> se hace disponible en "
+"una variable de contexto de sesión llamada <literal>messageList</literal>."
+
+#. Tag: para
+#: Tutorial.xml:458
+#, no-c-format
+msgid ""
+"The <literal>@DataModelSelection</literal> annotation tells Seam to inject "
+"the <literal>List</literal> element that corresponded to the clicked link."
+msgstr ""
+"La anotación <literal>@DataModelSelection</literal> le dice a Seam que "
+"inyecte el elemento <literal>List</literal> que corresponde al vínculo en el "
+"que se hizo click."
+
+#. Tag: para
+#: Tutorial.xml:463
+#, no-c-format
+msgid ""
+"The <literal>@Out</literal> annotation then exposes the selected value "
+"directly to the page. So ever time a row of the clickable list is selected, "
+"the <literal>Message</literal> is injected to the attribute of the stateful "
+"bean, and the subsequently <emphasis>outjected</emphasis> to the event "
+"context variable named <literal>message</literal>."
+msgstr ""
+"Después la anotación <literal>@Out</literal> presenta el valor seleccionado "
+"directamente en la página. Así que cada vez que se selecciona una fila de la "
+"lista el <literal>Message</literal> se inyecta al atributo del bean con "
+"estado y posteriormente es <emphasis>eyectado</emphasis> a la variable de "
+"contexto del evento llamado <literal>message</literal>."
+
+#. Tag: para
+#: Tutorial.xml:468
+#, no-c-format
+msgid ""
+"This stateful bean has an EJB3 <emphasis>extended persistence context</"
+"emphasis>. The messages retrieved in the query remain in the managed state "
+"as long as the bean exists, so any subsequent method calls to the stateful "
+"bean can update them without needing to make any explicit call to the "
+"<literal>EntityManager</literal>."
+msgstr ""
+"Este bean con estado cuenta con un <emphasis>contexto de persistencia "
+"extendido</emphasis> EJB3. Los mensajes que se recuperan en la petición "
+"permanecen en el estado administrado en tanto el bean exista así que "
+"cualquier llamada de método posterior al bean con estado puede actualizarlas "
+"sin la necesidad de realizar ninguna llamada explícita al "
+"<literal>EntityManager</literal>."
+
+#. Tag: para
+#: Tutorial.xml:473
+#, no-c-format
+msgid ""
+"The first time we navigate to the JSP page, there will be no value in the "
+"<literal>messageList</literal> context variable. The <literal>@Factory</"
+"literal> annotation tells Seam to create an instance of "
+"<literal>MessageManagerBean</literal> and invoke the <literal>findMessages()"
+"</literal> method to initialize the value. We call <literal>findMessages()</"
+"literal> a <emphasis>factory method</emphasis> for <literal>messages</"
+"literal>."
+msgstr ""
+"La primera vez que navegamos a la página JSP no habrá valor en la variable "
+"de contexto <literal>messageList</literal>. La anotación <literal>@Factory</"
+"literal> le dice a Seam que cree una instancia de "
+"<literal>MessageManagerBean</literal> y que invoque el método "
+"<literal>findMessages()</literal> para inicializar el valor. Llamamos a "
+"<literal>findMessages()</literal> un <emphasis>método de fabricación</"
+"emphasis> para <literal>messages</literal>."
+
+#. Tag: para
+#: Tutorial.xml:478
+#, no-c-format
+msgid ""
+"The <literal>select()</literal> action listener method marks the selected "
+"<literal>Message</literal> as read, and updates it in the database."
+msgstr ""
+"El método de escucha de acciones <literal>select()</literal> marca el "
+"<literal>Message</literal> seleccionado como leído y lo actualiza en la base "
+"de datos."
+
+#. Tag: para
+#: Tutorial.xml:483
+#, no-c-format
+msgid ""
+"The <literal>delete()</literal> action listener method removes the selected "
+"<literal>Message</literal> from the database."
+msgstr ""
+"El método de escucha de acciones <literal>delete()</literal> remueve el "
+"<literal>Message</literal> seleccionado de la base de datos."
+
+#. Tag: para
+#: Tutorial.xml:488
+#, no-c-format
+msgid ""
+"All stateful session bean Seam components <emphasis>must</emphasis> have a "
+"method marked <literal>@Remove @Destroy</literal> to ensure that Seam will "
+"remove the stateful bean when the Seam context ends, and clean up any server-"
+"side state."
+msgstr ""
+"Todos los componentes Seam del bean de sesión con estado <emphasis>tienen</"
+"emphasis> que tener un método marcado como <literal>@Remove @Destroy</"
+"literal> para asegurarse de que Seam eliminará el bean con estado cuando el "
+"contexto Seam termine y limpiará cualquier estado del lado del servidor."
+
+#. Tag: para
+#: Tutorial.xml:495
+#, no-c-format
+msgid ""
+"Note that this is a session-scoped Seam component. It is associated with the "
+"user login session, and all requests from a login session share the same "
+"instance of the component. (In Seam applications, we usually use session-"
+"scoped components sparingly.)"
+msgstr "Observe que este es un componente Seam con ámbito de sesión "
+
+#. Tag: title
+#: Tutorial.xml:501
+#, no-c-format
+msgid ""
+"The session bean local interface: <literal>MessageManager.java</literal>"
+msgstr ""
+"La interfaz local del bean de sesión: <literal>MessageManager.java</literal>"
+
+#. Tag: para
+#: Tutorial.xml:502
+#, no-c-format
+msgid "All session beans have a business interface, of course."
+msgstr ""
+"Todos los beans de sesión tienen una interfaz empresarial por supuesto."
+
+#. Tag: programlisting
+#: Tutorial.xml:505
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface MessageManager\n"
+"{\n"
+"   public void findMessages();\n"
+"   public void select();\n"
+"   public void delete();\n"
+"   public void destroy();\n"
+"}"
+msgstr ""
+"@Local\n"
+"public interface MessageManager\n"
+"{\n"
+"   public void findMessages();\n"
+"   public void select();\n"
+"   public void delete();\n"
+"   public void destroy();\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:506
+#, no-c-format
+msgid "From now on, we won&#39;t show local interfaces in our code examples."
+msgstr ""
+"De ahora en adelante no vamos a mostrar interfaces locales en nuestros "
+"ejemplos de código. "
+
+#. Tag: para
+#: Tutorial.xml:509
+#, no-c-format
+msgid ""
+"Let&#39;s skip over <literal>components.xml</literal>, <literal>persistence."
+"xml</literal>, <literal>web.xml</literal>, <literal>ejb-jar.xml</literal>, "
+"<literal>faces-config.xml</literal> and <literal>application.xml</literal> "
+"since they are much the same as the previous example, and go straight to the "
+"JSP."
+msgstr ""
+"Vamos a saltarnos <literal>components.xml</literal>, <literal>persistence."
+"xml</literal>, <literal>web.xml</literal>, <literal>ejb-jar.xml</literal>, "
+"<literal>faces-config.xml</literal> y <literal>application.xml</literal> ya "
+"que son muy parecidos al ejemplo anterior y vamos directamente al JSP. "
+
+#. Tag: title
+#: Tutorial.xml:515
+#, no-c-format
+msgid "The view: <literal>messages.jsp</literal>"
+msgstr "La vista: <literal>messages.jsp</literal>"
+
+#. Tag: para
+#: Tutorial.xml:516
+#, no-c-format
+msgid ""
+"The JSP page is a straightforward use of the JSF <literal>&lt;h:dataTable&gt;"
+"</literal> component. Again, nothing specific to Seam."
+msgstr ""
+"La página JSP tiene un uso muy simple del componente <literal>&lt;h:"
+"dataTable&gt;</literal> JSF. De nuevo, nada específico de Seam."
+
+#. Tag: programlisting
+#: Tutorial.xml:519
+#, no-c-format
+msgid ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" %&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Messages&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;h2&gt;Message List&lt;/h2&gt;\n"
+"     &lt;h:outputText value=\"No messages to display\" rendered=\"#"
+"{messageList.rowCount==0}\"/&gt;\n"
+"     &lt;h:dataTable var=\"msg\" value=\"#{messageList}\" rendered=\"#"
+"{messageList.rowCount&gt;0}\"&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Read\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:selectBooleanCheckbox value=\"#{msg.read}\" disabled=\"true"
+"\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Title\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:commandLink value=\"#{msg.title}\" action=\"#"
+"{messageManager.select}\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Date/Time\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:outputText value=\"#{msg.datetime}\"&gt;\n"
+"              &lt;f:convertDateTime type=\"both\" dateStyle=\"medium\" "
+"timeStyle=\"short\"/&gt;\n"
+"           &lt;/h:outputText&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;h:commandButton value=\"Delete\" action=\"#{messageManager."
+"delete}\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"     &lt;/h:dataTable&gt;\n"
+"     &lt;h3&gt;&lt;h:outputText value=\"#{message.title}\"/&gt;&lt;/h3&gt;\n"
+"     &lt;div&gt;&lt;h:outputText value=\"#{message.text}\"/&gt;&lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" %&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Messages&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;h2&gt;Message List&lt;/h2&gt;\n"
+"     &lt;h:outputText value=\"No messages to display\" rendered=\"#"
+"{messageList.rowCount==0}\"/&gt;\n"
+"     &lt;h:dataTable var=\"msg\" value=\"#{messageList}\" rendered=\"#"
+"{messageList.rowCount&gt;0}\"&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Read\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:selectBooleanCheckbox value=\"#{msg.read}\" disabled=\"true"
+"\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Title\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:commandLink value=\"#{msg.title}\" action=\"#"
+"{messageManager.select}\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Date/Time\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:outputText value=\"#{msg.datetime}\"&gt;\n"
+"              &lt;f:convertDateTime type=\"both\" dateStyle=\"medium\" "
+"timeStyle=\"short\"/&gt;\n"
+"           &lt;/h:outputText&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;h:commandButton value=\"Delete\" action=\"#{messageManager."
+"delete}\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"     &lt;/h:dataTable&gt;\n"
+"     &lt;h3&gt;&lt;h:outputText value=\"#{message.title}\"/&gt;&lt;/h3&gt;\n"
+"     &lt;div&gt;&lt;h:outputText value=\"#{message.text}\"/&gt;&lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+
+#. Tag: para
+#: Tutorial.xml:527
+#, no-c-format
+msgid ""
+"The first time we navigate to the <literal>messages.jsp</literal> page, "
+"whether by a JSF postback (faces request) or a direct browser GET request "
+"(non-faces request), the page will try to resolve the <literal>messageList</"
+"literal> context variable. Since this context variable is not initialized, "
+"Seam will call the factory method <literal>findMessages()</literal>, which "
+"performs a query against the database and results in a <literal>DataModel</"
+"literal> being outjected. This <literal>DataModel</literal> provides the row "
+"data needed for rendering the <literal>&lt;h:dataTable&gt;</literal>."
+msgstr ""
+"La primera vez que navegamos a la página <literal>messages.jsp</literal> ya "
+"sea por medio de un postback JSF (una petición de faces) o por medio de una "
+"petición GET del navegador de manera directa (una petición que no es de "
+"faces), la página tratará de resolver la variable de contexto "
+"<literal>messageList</literal>. Debido a que esta variable de contexto no es "
+"inicializada Seam llamará al método de fabricación <literal>findMessages()</"
+"literal>, el cual realiza una petición frente a la base de datos y resulta "
+"en una eyección del <literal>DataModel</literal>. Este <literal>DataModel</"
+"literal> proporciona la fila de datos que se necesitan para presentar la "
+"<literal>&lt;h:dataTable&gt;</literal>."
+
+#. Tag: para
+#: Tutorial.xml:530
+#, no-c-format
+msgid ""
+"When the user clicks the <literal>&lt;h:commandLink&gt;</literal>, JSF calls "
+"the <literal>select()</literal> action listener. Seam intercepts this call "
+"and injects the selected row data into the <literal>message</literal> "
+"attribute of the <literal>messageManager</literal> component. The action "
+"listener fires, marking the selected <literal>Message</literal> as read. At "
+"the end of the call, Seam outjects the selected <literal>Message</literal> "
+"to the context variable named <literal>message</literal>. Next, the EJB "
+"container commits the transaction, and the change to the <literal>Message</"
+"literal> is flushed to the database. Finally, the page is re-rendered, "
+"redisplaying the message list, and displaying the selected message below it."
+msgstr ""
+"Cuando el usuario hace click en el <literal>&lt;h:commandLink&gt;</literal>, "
+"JSF llama al escucha de acciones (action listener) <literal>select()</"
+"literal>. Seam intercepta esta llamada e inyecta los datos de la fila "
+"seleccionada en el atributo del <literal>message</literal> del componente "
+"<literal>messageManager</literal>. El escucha de acciones lanza,marcando el "
+"<literal>Message</literal> seleccionado como leído. Al final de la llamada, "
+"Seam eyecta el <literal>Message</literal> seleccionado a la variable de "
+"contexto llamada <literal>message</literal>. Después el contenedor EJB "
+"guarda la transacción y el cambio al <literal>Message</literal> es vaciado "
+"en la base de datos. Finalmente, la página es re-entregada volviendo a "
+"presentar la lista de mensajes y presentando el mensaje seleccionado después "
+"de este."
+
+#. Tag: para
+#: Tutorial.xml:533
+#, no-c-format
+msgid ""
+"If the user clicks the <literal>&lt;h:commandButton&gt;</literal>, JSF calls "
+"the <literal>delete()</literal> action listener. Seam intercepts this call "
+"and injects the selected row data into the <literal>message</literal> "
+"attribute of the <literal>messageList</literal> component. The action "
+"listener fires, removing the selected <literal>Message</literal> from the "
+"list, and also calling <literal>remove()</literal> on the "
+"<literal>EntityManager</literal>. At the end of the call, Seam refreshes the "
+"<literal>messageList</literal> context variable and clears the context "
+"variable named <literal>message</literal>. The EJB container commits the "
+"transaction, and deletes the <literal>Message</literal> from the database. "
+"Finally, the page is re-rendered, redisplaying the message list."
+msgstr ""
+"Si el usuario hace click en el <literal>&lt;h:commandButton&gt;</literal>, "
+"JSF llama al escucha de acciones <literal>delete()</literal>. Seam "
+"intercepta esta llamada e inyecta los datos de la fila seleccionada en el "
+"atributo <literal>message</literal> del componente <literal>messageList</"
+"literal>. El escucha de acción dispara quitando el <literal>Message</"
+"literal> seleccionado de la lista y también llamando a <literal>remove()</"
+"literal> en el <literal>EntityManager</literal>. Al final de la llamada, "
+"Seam refresca la variable de contexto <literal>messageList</literal> y "
+"limpia la variable de contexto llamada <literal>message</literal>. El "
+"contenedor EJB guarda la transacción y borra el <literal>Message</literal> "
+"de la base de datos. Finalmente, la página es re-entregada volviendo a "
+"presentar la lista de mensajes."
+
+#. Tag: title
+#: Tutorial.xml:541
+#, no-c-format
+msgid "Seam and jBPM: the todo list example"
+msgstr "Seam y jBPM: el ejemplo de la lista de cosas por hacer"
+
+#. Tag: para
+#: Tutorial.xml:542
+#, no-c-format
+msgid ""
+"jBPM provides sophisticated functionality for workflow and task management. "
+"To get a small taste of how jBPM integrates with Seam, we&#39;ll show you a "
+"simple \"todo list\" application. Since managing lists of tasks is such core "
+"functionality for jBPM, there is hardly any Java code at all in this example."
+msgstr ""
+"jBPM proprociona funcionalidades sofisticadas para la administración de "
+"tareas y el flujo de trabajo. Para que pueda probar un poco de como jBPM se "
+"integra con Seam le vamos a mostrar una simple aplicación de una \"lista de "
+"cosas por hacer\". Ya que la administración de las de listas de tareas es "
+"una de las funcionalidades más importantes para jBPM, hay muy poco código "
+"Java en este ejemplo."
+
+#. Tag: para
+#: Tutorial.xml:555
+#, no-c-format
+msgid ""
+"The center of this example is the jBPM process definition. There are also "
+"two JSPs and two trivial JavaBeans (There was no reason to use session "
+"beans, since they do not access the database, or have any other "
+"transactional behavior). Let&#39;s start with the process definition:"
+msgstr ""
+"El punto central de este ejemplo es la definición del proceso jBPM. También "
+"hay dos JSPs y dos JavaBeans triviales (no había razón alguna para utilizar "
+"los beans de sesión ya que no tienen acceso a la base de datos ni tienen "
+"ningún otro comportamiento transaccional). Vamos a empezar con la definición "
+"del proceso: "
+
+#. Tag: programlisting
+#: Tutorial.xml:566
+#, no-c-format
+msgid ""
+"&lt;process-definition name=\"todo\"&gt;\n"
+"   \n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"todo\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;task-node name=\"todo\"&gt;\n"
+"      &lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"         &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"      &lt;/task&gt;\n"
+"      &lt;transition to=\"done\"/&gt;\n"
+"   &lt;/task-node&gt;\n"
+"   \n"
+"   &lt;end-state name=\"done\"/&gt;\n"
+"   \n"
+"&lt;/process-definition&gt;"
+msgstr ""
+"&lt;process-definition name=\"todo\"&gt;\n"
+"   \n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"todo\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;task-node name=\"todo\"&gt;\n"
+"      &lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"         &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"      &lt;/task&gt;\n"
+"      &lt;transition to=\"done\"/&gt;\n"
+"   &lt;/task-node&gt;\n"
+"   \n"
+"   &lt;end-state name=\"done\"/&gt;\n"
+"   \n"
+"&lt;/process-definition&gt;"
+
+#. Tag: para
+#: Tutorial.xml:569
+#, no-c-format
+msgid ""
+"The <literal>&lt;start-state&gt;</literal> node represents the logical start "
+"of the process. When the process starts, it immediately transitions to the "
+"<literal>todo</literal> node."
+msgstr ""
+"El nodo <literal>&lt;start-state&gt;</literal> representa el inicio lógico "
+"del proceso. Cuando el proceso inicia realiza una transición de manera "
+"inmediata al nodo <literal>todo</literal>."
+
+#. Tag: para
+#: Tutorial.xml:574
+#, no-c-format
+msgid ""
+"The <literal>&lt;task-node&gt;</literal> node represents a <emphasis>wait "
+"state</emphasis>, where business process execution pauses, waiting for one "
+"or more tasks to be performed."
+msgstr ""
+"El nodo <literal>&lt;task-node&gt;</literal> representa un <emphasis>estado "
+"de espera</emphasis>, en donde la ejecución del proceso empresarial realiza "
+"una pausa en espera de una o dos tareas a realizar."
+
+#. Tag: para
+#: Tutorial.xml:579
+#, no-c-format
+msgid ""
+"The <literal>&lt;task&gt;</literal> element defines a task to be performed "
+"by a user. Since there is only one task defined on this node, when it is "
+"complete, execution resumes, and we transition to the end state. The task "
+"gets its description from a Seam component named <literal>todoList</literal> "
+"(one of the JavaBeans)."
+msgstr ""
+"El elemento <literal>&lt;task&gt;</literal> define una tarea que un usuario "
+"debe realizar. Ya que sólamente hay una tarea definida en este nodo, cuando "
+"se completa se reanuda la ejecución y se realiza la transición al estado "
+"final. La tarea obtiene su descripción de un componente Seam llamado "
+"<literal>todoList</literal> (una de las JavaBeans)."
+
+#. Tag: para
+#: Tutorial.xml:584
+#, no-c-format
+msgid ""
+"Tasks need to be assigned to a user or group of users when they are created. "
+"In this case, the task is assigned to the current user, which we get from a "
+"built-in Seam component named <literal>actor</literal>. Any Seam component "
+"may be used to perform task assignment."
+msgstr ""
+"Cuando se crean las tareas estas deben ser asignadas al usuario o a un grupo "
+"de usuarios. En este caso, la tarea se asigna al usuario actual, el cual se "
+"obtiene de un componente Seam incorporado llamado <literal>actor</literal>. "
+"Se puede utilizar cualquier componente para realizar la asignación de tareas."
+
+#. Tag: para
+#: Tutorial.xml:589
+#, no-c-format
+msgid ""
+"The <literal>&lt;end-state&gt;</literal> node defines the logical end of the "
+"business process. When execution reaches this node, the process instance is "
+"destroyed."
+msgstr ""
+"El nodo <literal>&lt;end-state&gt;</literal> define el final lógico del "
+"proceso empresarial. Cuando la ejecución llega hasta este nodo se destruye "
+"la instancia del proceso."
+
+#. Tag: para
+#: Tutorial.xml:596
+#, no-c-format
+msgid ""
+"If we view this process definition using the process definition editor "
+"provided by JBossIDE, this is what it looks like:"
+msgstr ""
+"Si vemos la definición del proceso utilizando el editor de definiciones de "
+"procesos que JBossIDE proporciona, se vería así:"
+
+#. Tag: para
+#: Tutorial.xml:607
+#, no-c-format
+msgid ""
+"This document defines our <emphasis>business process</emphasis> as a graph "
+"of nodes. This is the most trivial possible business process: there is one "
+"<emphasis>task</emphasis> to be performed, and when that task is complete, "
+"the business process ends."
+msgstr ""
+"Este documento define nuestro <emphasis>proceso empresarial</emphasis> como "
+"un gráfico de nodos. Este es el proceso empresarial más trivial posible: hay "
+"una <emphasis>tarea</emphasis> a realizar y cuando se completa esa tarea el "
+"proceso empresarial termina."
+
+#. Tag: para
+#: Tutorial.xml:610
+#, no-c-format
+msgid ""
+"The first JavaBean handles the login screen <literal>login.jsp</literal>. "
+"Its job is just to initialize the jBPM actor id using the <literal>actor</"
+"literal> component. (In a real application, it would also need to "
+"authenticate the user.)"
+msgstr ""
+"El primer JavaBean maneja la pantalla para iniciar sesión <literal>login."
+"jsp</literal>. Su trabajo es simplemente inicializar el id actor jBPM "
+"utilizando el componente <literal>actor</literal> (en una aplicación real "
+"también necesitaría autenticar el usuario)."
+
+#. Tag: programlisting
+#: Tutorial.xml:613
+#, no-c-format
+msgid ""
+"@Name(\"login\")\n"
+"public class Login {\n"
+"   \n"
+"   @In\n"
+"   private Actor actor;\n"
+"   \n"
+"   private String user;\n"
+"\n"
+"   public String getUser() {\n"
+"      return user;\n"
+"   }\n"
+"\n"
+"   public void setUser(String user) {\n"
+"      this.user = user;\n"
+"   }\n"
+"   \n"
+"   public String login()\n"
+"   {\n"
+"      actor.setId(user);\n"
+"      return \"/todo.jsp\";\n"
+"   }\n"
+"}"
+msgstr ""
+"@Name(\"login\")\n"
+"public class Login {\n"
+"   \n"
+"   @In\n"
+"   private Actor actor;\n"
+"   \n"
+"   private String user;\n"
+"\n"
+"   public String getUser() {\n"
+"      return user;\n"
+"   }\n"
+"\n"
+"   public void setUser(String user) {\n"
+"      this.user = user;\n"
+"   }\n"
+"   \n"
+"   public String login()\n"
+"   {\n"
+"      actor.setId(user);\n"
+"      return \"/todo.jsp\";\n"
+"   }\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:614
+#, no-c-format
+msgid ""
+"Here we see the use of <literal>@In</literal> to inject the built-in "
+"<literal>Actor</literal> component."
+msgstr ""
+"Aquí vemos el uso de <literal>@In</literal> para inyectar el componente "
+"incorporado <literal>Actor</literal>."
+
+#. Tag: para
+#: Tutorial.xml:617
+#, no-c-format
+msgid "The JSP itself is trivial:"
+msgstr "El JSP mismo es trivial:"
+
+#. Tag: programlisting
+#: Tutorial.xml:620
+#, no-c-format
+msgid ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"%&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"%&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Login&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Login&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    &lt;h:form&gt;\n"
+"      &lt;div&gt;\n"
+"        &lt;h:inputText value=\"#{login.user}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Login\" action=\"#{login.login}\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"    &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"%&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"%&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Login&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Login&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    &lt;h:form&gt;\n"
+"      &lt;div&gt;\n"
+"        &lt;h:inputText value=\"#{login.user}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Login\" action=\"#{login.login}\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"    &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+
+#. Tag: para
+#: Tutorial.xml:621
+#, no-c-format
+msgid ""
+"The second JavaBean is responsible for starting business process instances, "
+"and ending tasks."
+msgstr ""
+"El segundo JavaBean es el responsable de iniciar las instancias de los "
+"procesos empresariales y de darle fin a las tareas."
+
+#. Tag: programlisting
+#: Tutorial.xml:630
+#, no-c-format
+msgid ""
+"@Name(\"todoList\")\n"
+"public class TodoList {\n"
+"   \n"
+"   private String description;\n"
+"   \n"
+"   public String getDescription()\n"
+"   {\n"
+"      return description;\n"
+"   }\n"
+"\n"
+"   public void setDescription(String description) {\n"
+"      this.description = description;\n"
+"   }\n"
+"   \n"
+"   @CreateProcess(definition=\"todo\")\n"
+"   public void createTodo() {}\n"
+"   \n"
+"   @StartTask @EndTask\n"
+"   public void done() {}\n"
+"\n"
+"}"
+msgstr ""
+"@Name(\"todoList\")\n"
+"public class TodoList {\n"
+"   \n"
+"   private String description;\n"
+"   \n"
+"   public String getDescription()\n"
+"   {\n"
+"      return description;\n"
+"   }\n"
+"\n"
+"   public void setDescription(String description) {\n"
+"      this.description = description;\n"
+"   }\n"
+"   \n"
+"   @CreateProcess(definition=\"todo\")\n"
+"   public void createTodo() {}\n"
+"   \n"
+"   @StartTask @EndTask\n"
+"   public void done() {}\n"
+"\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:633
+#, no-c-format
+msgid ""
+"The description property accepts user input form the JSP page, and exposes "
+"it to the process definition, allowing the task description to be set."
+msgstr ""
+"La propiedad de descripción acepta entradas por parte del usuario desde la "
+"página JSP y la presenta a la definición del proceso permitiendo configurar "
+"la descripción de la tarea."
+
+#. Tag: para
+#: Tutorial.xml:638
+#, no-c-format
+msgid ""
+"The Seam <literal>@CreateProcess</literal> annotation creates a new jBPM "
+"process instance for the named process definition."
+msgstr ""
+"La anotación <literal>@CreateProcess</literal> de Seam crea una nueva "
+"instancia del proceso jBPM para la definición del proceso nombrado."
+
+#. Tag: para
+#: Tutorial.xml:643
+#, no-c-format
+msgid ""
+"The Seam <literal>@StartTask</literal> annotation starts work on a task. The "
+"<literal>@EndTask</literal> ends the task, and allows the business process "
+"execution to resume."
+msgstr ""
+"La anotación <literal>@StartTask</literal> de Seam empieza a trabajar en una "
+"tarea. <literal>@EndTask</literal> termina la tarea y permite que se reanude "
+"la ejecución del proceso empresarial."
+
+#. Tag: para
+#: Tutorial.xml:650
+#, no-c-format
+msgid ""
+"In a more realistic example, <literal>@StartTask</literal> and "
+"<literal>@EndTask</literal> would not appear on the same method, because "
+"there is usually work to be done using the application in order to complete "
+"the task."
+msgstr ""
+"En un ejemplo más realista, <literal>@StartTask</literal> y "
+"<literal>@EndTask</literal> no aparecerían en el mismo método ya que "
+"usualmente hay cosas por hacer utilizando la aplicación con el fin de poder "
+"completar la tarea."
+
+#. Tag: para
+#: Tutorial.xml:653
+#, no-c-format
+msgid "Finally, the meat of the application is in <literal>todo.jsp</literal>:"
+msgstr ""
+"Finalmente, lo jugoso de la aplicación se encuentra en <literal>todo.jsp</"
+"literal>:"
+
+#. Tag: programlisting
+#: Tutorial.xml:656
+#, no-c-format
+msgid ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://jboss.com/products/seam/taglib\" prefix=\"s\" %"
+"&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Todo List&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Todo List&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"   &lt;h:form id=\"list\"&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:outputText value=\"There are no todo items.\" rendered=\"#"
+"{empty \n"
+"                                       taskInstanceList}\"/&gt;\n"
+"         &lt;h:dataTable value=\"#{taskInstanceList}\" var=\"task\" rendered="
+"\"#{not empty \n"
+"                                       taskInstanceList}\"&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Description\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.description}\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Created\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:outputText value=\"#{task.taskMgmtInstance."
+"processInstance.start}\"&gt;\n"
+"                    &lt;f:convertDateTime type=\"date\"/&gt;\n"
+"                &lt;/h:outputText&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Priority\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.priority}\" style=\"width: 30"
+"\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Due Date\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.dueDate}\" style=\"width: 100"
+"\"&gt;\n"
+"                    &lt;f:convertDateTime type=\"date\" dateStyle=\"short\"/"
+"&gt;\n"
+"                &lt;/h:inputText&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;s:button value=\"Done\" action=\"#{todoList.done}\" "
+"taskInstance=\"#{task}\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"         &lt;/h:dataTable&gt;\n"
+"      &lt;/div&gt;\n"
+"      &lt;div&gt;\n"
+"      &lt;h:messages/&gt;\n"
+"      &lt;/div&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:commandButton value=\"Update Items\" action=\"update\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"   &lt;h:form id=\"new\"&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:inputText value=\"#{todoList.description}\"/&gt;\n"
+"         &lt;h:commandButton value=\"Create New Item\" action=\"#{todoList."
+"createTodo}\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://jboss.com/products/seam/taglib\" prefix=\"s\" %"
+"&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Todo List&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Todo List&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"   &lt;h:form id=\"list\"&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:outputText value=\"There are no todo items.\" rendered=\"#"
+"{empty \n"
+"                                       taskInstanceList}\"/&gt;\n"
+"         &lt;h:dataTable value=\"#{taskInstanceList}\" var=\"task\" rendered="
+"\"#{not empty \n"
+"                                       taskInstanceList}\"&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Description\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.description}\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Created\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:outputText value=\"#{task.taskMgmtInstance."
+"processInstance.start}\"&gt;\n"
+"                    &lt;f:convertDateTime type=\"date\"/&gt;\n"
+"                &lt;/h:outputText&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Priority\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.priority}\" style=\"width: 30"
+"\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Due Date\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.dueDate}\" style=\"width: 100"
+"\"&gt;\n"
+"                    &lt;f:convertDateTime type=\"date\" dateStyle=\"short\"/"
+"&gt;\n"
+"                &lt;/h:inputText&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;s:button value=\"Done\" action=\"#{todoList.done}\" "
+"taskInstance=\"#{task}\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"         &lt;/h:dataTable&gt;\n"
+"      &lt;/div&gt;\n"
+"      &lt;div&gt;\n"
+"      &lt;h:messages/&gt;\n"
+"      &lt;/div&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:commandButton value=\"Update Items\" action=\"update\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"   &lt;h:form id=\"new\"&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:inputText value=\"#{todoList.description}\"/&gt;\n"
+"         &lt;h:commandButton value=\"Create New Item\" action=\"#{todoList."
+"createTodo}\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+
+#. Tag: para
+#: Tutorial.xml:657
+#, no-c-format
+msgid "Let&#39;s take this one piece at a time."
+msgstr "Vamos a ver parte por parte. "
+
+#. Tag: para
+#: Tutorial.xml:660
+#, no-c-format
+msgid ""
+"The page renders a list of tasks, which it gets from a built-in Seam "
+"component named <literal>taskInstanceList</literal>. The list is defined "
+"inside a JSF form."
+msgstr ""
+"La página presenta una lista de tareas que obtiene desde un componente Seam "
+"incorporado llamado <literal>taskInstanceList</literal>. La lista se define "
+"dentro de una forma JSF. "
+
+#. Tag: programlisting
+#: Tutorial.xml:663
+#, no-c-format
+msgid ""
+"&lt;h:form id=\"list\"&gt;\n"
+"   &lt;div&gt;\n"
+"      &lt;h:outputText value=\"There are no todo items.\" rendered=\"#{empty "
+"taskInstanceList}\"/&gt;\n"
+"      &lt;h:dataTable value=\"#{taskInstanceList}\" var=\"task\" rendered=\"#"
+"{not empty taskInstanceList}\"&gt;\n"
+"         ...\n"
+"      &lt;/h:dataTable&gt;\n"
+"   &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h:form id=\"list\"&gt;\n"
+"   &lt;div&gt;\n"
+"      &lt;h:outputText value=\"There are no todo items.\" rendered=\"#{empty "
+"taskInstanceList}\"/&gt;\n"
+"      &lt;h:dataTable value=\"#{taskInstanceList}\" var=\"task\" rendered=\"#"
+"{not empty taskInstanceList}\"&gt;\n"
+"         ...\n"
+"      &lt;/h:dataTable&gt;\n"
+"   &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+
+#. Tag: para
+#: Tutorial.xml:664
+#, no-c-format
+msgid ""
+"Each element of the list is an instance of the jBPM class "
+"<literal>TaskInstance</literal>. The following code simply displays the "
+"interesting properties of each task in the list. For the description, "
+"priority and due date, we use input controls, to allow the user to update "
+"these values."
+msgstr ""
+"Cada elemento de la lista es una instancia de la clase jBPM "
+"<literal>TaskInstance</literal>. El siguiente código simplemente presenta "
+"las propiedades interesantes de cada tarea en la lista. Para la descripción, "
+"las prioridades y la fecha límite utilizamos los controles de entrada para "
+"permitirle al usuario que actualice estos valores."
+
+#. Tag: programlisting
+#: Tutorial.xml:667
+#, no-c-format
+msgid ""
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"       &lt;h:outputText value=\"Description\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.description}\"/&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Created\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:outputText value=\"#{task.taskMgmtInstance.processInstance.start}"
+"\"&gt;\n"
+"        &lt;f:convertDateTime type=\"date\"/&gt;\n"
+"    &lt;/h:outputText&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Priority\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.priority}\" style=\"width: 30\"/&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Due Date\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.dueDate}\" style=\"width: 100\"&gt;\n"
+"        &lt;f:convertDateTime type=\"date\" dateStyle=\"short\"/&gt;\n"
+"    &lt;/h:inputText&gt;\n"
+"&lt;/h:column&gt;"
+msgstr ""
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"       &lt;h:outputText value=\"Description\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.description}\"/&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Created\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:outputText value=\"#{task.taskMgmtInstance.processInstance.start}"
+"\"&gt;\n"
+"        &lt;f:convertDateTime type=\"date\"/&gt;\n"
+"    &lt;/h:outputText&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Priority\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.priority}\" style=\"width: 30\"/&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Due Date\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.dueDate}\" style=\"width: 100\"&gt;\n"
+"        &lt;f:convertDateTime type=\"date\" dateStyle=\"short\"/&gt;\n"
+"    &lt;/h:inputText&gt;\n"
+"&lt;/h:column&gt;"
+
+#. Tag: para
+#: Tutorial.xml:668
+#, no-c-format
+msgid ""
+"This button ends the task by calling the action method annotated "
+"<literal>@StartTask @EndTask</literal>. It passes the task id to Seam as a "
+"request parameter:"
+msgstr ""
+"Este botón da fin a la tarea llamando al método de acción anotado "
+"<literal>@StartTask @EndTask</literal>. Pasa el id de la tarea a Seam como "
+"un parámetro de petición:"
+
+#. Tag: programlisting
+#: Tutorial.xml:671
+#, no-c-format
+msgid ""
+"&lt;h:column&gt;\n"
+"    &lt;s:button value=\"Done\" action=\"#{todoList.done}\" taskInstance=\"#"
+"{task}\"/&gt;\n"
+"&lt;/h:column&gt;"
+msgstr ""
+"&lt;h:column&gt;\n"
+"    &lt;s:button value=\"Done\" action=\"#{todoList.done}\" taskInstance=\"#"
+"{task}\"/&gt;\n"
+"&lt;/h:column&gt;"
+
+#. Tag: para
+#: Tutorial.xml:672
+#, no-c-format
+msgid ""
+"(Note that this is using a Seam <literal>&lt;s:button&gt;</literal> JSF "
+"control from the <literal>seam-ui.jar</literal> package.)"
+msgstr ""
+"(Observe que esto es utilizando un control JSF <literal>&lt;s:button&gt;</"
+"literal> Seam desde el paquete <literal>seam-ui.jar</literal>)."
+
+#. Tag: para
+#: Tutorial.xml:675
+#, no-c-format
+msgid ""
+"This button is used to update the properties of the tasks. When the form is "
+"submitted, Seam and jBPM will make any changes to the tasks persistent. "
+"There is no need for any action listener method:"
+msgstr ""
+"Este botón se utiliza para actualizar las propiedades de las tareas. Cuando "
+"el formulario se envía, Seam y jBPM harán los cambios persistentes en las "
+"tareas. No hay necesidad de tener ningún método de escucha de acciones:"
+
+#. Tag: programlisting
+#: Tutorial.xml:678
+#, no-c-format
+msgid "&lt;h:commandButton value=\"Update Items\" action=\"update\"/&gt;"
+msgstr "&lt;h:commandButton value=\"Update Items\" action=\"update\"/&gt;"
+
+#. Tag: para
+#: Tutorial.xml:679
+#, no-c-format
+msgid ""
+"A second form on the page is used to create new items, by calling the action "
+"method annotated <literal>@CreateProcess</literal>."
+msgstr ""
+"La segunda forma que se encuentra en la página se utiliza para crear nuevos "
+"ítems llamando al método de acción anotado <literal>@CreateProcess</literal>."
+
+#. Tag: programlisting
+#: Tutorial.xml:682
+#, no-c-format
+msgid ""
+"&lt;h:form id=\"new\"&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:inputText value=\"#{todoList.description}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Create New Item\" action=\"#{todoList."
+"createTodo}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h:form id=\"new\"&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:inputText value=\"#{todoList.description}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Create New Item\" action=\"#{todoList."
+"createTodo}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+
+#. Tag: para
+#: Tutorial.xml:683
+#, no-c-format
+msgid ""
+"There are several other files needed for the example, but they are just "
+"standard jBPM and Seam configuration and not very interesting."
+msgstr ""
+"Se necesitan otros archivos para este ejemplo pero son simplemente archivos "
+"de configuración de Seam y jBPM y no son muy interesantes que digamos."
+
+#. Tag: para
+#: Tutorial.xml:690 Tutorial.xml:805 Tutorial.xml:1145 Tutorial.xml:1171
+#: Tutorial.xml:1184
+#, no-c-format
+msgid "TODO"
+msgstr "TODO"
+
+#. Tag: title
+#: Tutorial.xml:698
+#, no-c-format
+msgid "Seam pageflow: the numberguess example"
+msgstr "Flujo de página de Seam: el ejemplo adivine-el-número"
+
+#. Tag: para
+#: Tutorial.xml:699
+#, no-c-format
+msgid ""
+"For Seam applications with relatively freeform (ad hoc) navigation, JSF/Seam "
+"navigation rules are a perfectly good way to define the page flow. For "
+"applications with a more constrained style of navigation, especially for "
+"user interfaces which are more stateful, navigation rules make it difficult "
+"to really understand the flow of the system. To understand the flow, you "
+"need to piece it together from the view pages, the actions and the "
+"navigation rules."
+msgstr ""
+"Para las aplicaciones Seam que cuentan con relativa libertad de navegación "
+"(ad hoc), las reglas de navegación JSF/Seam son una manera perfecta de "
+"definir el flujo de página. Para las aplicaciones con un estilo de "
+"navegación más restringido, especialmente para las interfaces de usuario que "
+"tienen más estado, las reglas de navegación hacen más difícil el entender el "
+"flujo del sistema. Para comprender el flujo, es necesario que reuna las "
+"acciones y las reglas de navegación desde las páginas de vista."
+
+#. Tag: para
+#: Tutorial.xml:702
+#, no-c-format
+msgid ""
+"Seam allows you to use a jPDL process definition to define pageflow. The "
+"simple number guessing example shows how this is done."
+msgstr ""
+"Seam le permite utilizar una definición de proceso jPDL para definir el "
+"flujo de página. El simple ejemplo de adivinar el número nos muestra como se "
+"logra esto."
+
+#. Tag: para
+#: Tutorial.xml:715
+#, no-c-format
+msgid ""
+"The example is implemented using one JavaBean, three JSP pages and a jPDL "
+"pageflow definition. Let&#39;s begin with the pageflow:"
+msgstr ""
+"El ejemplo es implementado utilizando un JavaBean , tres páginas JSP y una "
+"definición de flujo de página jPDL. Vamos a comenzar con el flujo de página: "
+
+#. Tag: programlisting
+#: Tutorial.xml:725
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"numberGuess\"&gt;\n"
+"   \n"
+"   &lt;start-page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"          &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"      &lt;/transition&gt;\n"
+"   &lt;/start-page&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess."
+"correctGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateRemainingGuesses\" expression=\"#{numberGuess."
+"lastGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"lose\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"displayGuess\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"lose\" view-id=\"/lose.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+"&lt;pageflow-definition name=\"numberGuess\"&gt;\n"
+"   \n"
+"   &lt;start-page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"          &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"      &lt;/transition&gt;\n"
+"   &lt;/start-page&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess."
+"correctGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateRemainingGuesses\" expression=\"#{numberGuess."
+"lastGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"lose\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"displayGuess\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"lose\" view-id=\"/lose.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+
+#. Tag: para
+#: Tutorial.xml:728
+#, no-c-format
+msgid ""
+"The <literal>&lt;page&gt;</literal> element defines a wait state where the "
+"system displays a particular JSF view and waits for user input. The "
+"<literal>view-id</literal> is the same JSF view id used in plain JSF "
+"navigation rules. The <literal>redirect</literal> attribute tells Seam to "
+"use post-then-redirect when navigating to the page. (This results in "
+"friendly browser URLs.)"
+msgstr ""
+"El elemento <literal>&lt;page&gt;</literal> define un estado de espera en "
+"donde el sistema presenta una vista JSF en particular y espera una entrada "
+"por parte del usuario. El <literal>view-id</literal> es el mismo que el id "
+"de vista JSF que se utiliza en las reglas de navegación JSF. El atributo "
+"<literal>redirect</literal> le dice a Seam que utilice la post-redirección "
+"al navegar la página (esto genera URLs de fácil uso). "
+
+#. Tag: para
+#: Tutorial.xml:733
+#, no-c-format
+msgid ""
+"The <literal>&lt;transition&gt;</literal> element names a JSF outcome. The "
+"transition is triggered when a JSF action results in that outcome. Execution "
+"will then proceed to the next node of the pageflow graph, after invocation "
+"of any jBPM transition actions."
+msgstr ""
+"El elemento <literal>&lt;transition&gt;</literal> nombra una salida JSF. La "
+"transición se dispara cuando una acción JSF genera esa salida. Entonces la "
+"ejecución continuará hacia el siguiente nodo del gráfico de flujo de página "
+"después de la invocación de cualquier acción de transición de jBPM."
+
+#. Tag: para
+#: Tutorial.xml:738
+#, no-c-format
+msgid ""
+"A transition <literal>&lt;action&gt;</literal> is just like a JSF action, "
+"except that it occurs when a jBPM transition occurs. The transition action "
+"can invoke any Seam component."
+msgstr ""
+"Una transición <literal>&lt;action&gt;</literal> es simplemente como una "
+"acción JSF, a excepción de que esta ocurre cuando tiene lugar una transición "
+"jBPM. La acción de transición puede invocar cualquier componente Seam."
+
+#. Tag: para
+#: Tutorial.xml:743
+#, no-c-format
+msgid ""
+"A <literal>&lt;decision&gt;</literal> node branches the pageflow, and "
+"determines the next node to execute by evaluating a JSF EL expression."
+msgstr ""
+"Un nodo <literal>&lt;decision&gt;</literal> bifurca el flujo de página y "
+"determina el siguiente nodo que se debe ejecutar evaluando una expresión EL "
+"JSF."
+
+#. Tag: para
+#: Tutorial.xml:750
+#, no-c-format
+msgid "Here is what the pageflow looks like in the JBossIDE pageflow editor:"
+msgstr "Así se ve un flujo de página en el editor de flujo de página JBossIDE:"
+
+#. Tag: para
+#: Tutorial.xml:761
+#, no-c-format
+msgid ""
+"Now that we have seen the pageflow, it is very, very easy to understand the "
+"rest of the application!"
+msgstr ""
+"Ahora que ya vimos el flujo de página es muy fácil de comprender ¡el resto "
+"de la aplicación!"
+
+#. Tag: para
+#: Tutorial.xml:764
+#, no-c-format
+msgid ""
+"Here is the main page of the application, <literal>numberGuess.jsp</literal>:"
+msgstr ""
+"Esta es la página principal de la aplicación <literal>numberGuess.jsp</"
+"literal>:"
+
+#. Tag: programlisting
+#: Tutorial.xml:767
+#, no-c-format
+msgid ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"%&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"%&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Guess a number...&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Guess a number...&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    &lt;h:form&gt;\n"
+"        &lt;h:outputText value=\"Higher!\" rendered=\"#{numberGuess."
+"randomNumber&gt;numberGuess.currentGuess}\" /&gt;\n"
+"        &lt;h:outputText value=\"Lower!\" rendered=\"#{numberGuess."
+"randomNumber&lt;numberGuess.currentGuess}\" /&gt;\n"
+"        &lt;br /&gt;\n"
+"        I&#39;m thinking of a number between &lt;h:outputText value=\"#"
+"{numberGuess.smallest}\" /&gt; and \n"
+"        &lt;h:outputText value=\"#{numberGuess.biggest}\" /&gt;. You have \n"
+"        &lt;h:outputText value=\"#{numberGuess.remainingGuesses}\" /&gt; "
+"guesses.\n"
+"        &lt;br /&gt;\n"
+"        Your guess: \n"
+"        &lt;h:inputText value=\"#{numberGuess.currentGuess}\" id=\"guess\" "
+"required=\"true\"&gt;\n"
+"            &lt;f:validateLongRange\n"
+"                maximum=\"#{numberGuess.biggest}\" \n"
+"                minimum=\"#{numberGuess.smallest}\"/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"        &lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"guess"
+"\" /&gt;\n"
+"        &lt;br/&gt;\n"
+"        &lt;h:message for=\"guess\" style=\"color: red\"/&gt;\n"
+"    &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"%&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"%&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Guess a number...&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Guess a number...&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    &lt;h:form&gt;\n"
+"        &lt;h:outputText value=\"Higher!\" rendered=\"#{numberGuess."
+"randomNumber&gt;numberGuess.currentGuess}\" /&gt;\n"
+"        &lt;h:outputText value=\"Lower!\" rendered=\"#{numberGuess."
+"randomNumber&lt;numberGuess.currentGuess}\" /&gt;\n"
+"        &lt;br /&gt;\n"
+"        I&#39;m thinking of a number between &lt;h:outputText value=\"#"
+"{numberGuess.smallest}\" /&gt; and \n"
+"        &lt;h:outputText value=\"#{numberGuess.biggest}\" /&gt;. You have \n"
+"        &lt;h:outputText value=\"#{numberGuess.remainingGuesses}\" /&gt; "
+"guesses.\n"
+"        &lt;br /&gt;\n"
+"        Your guess: \n"
+"        &lt;h:inputText value=\"#{numberGuess.currentGuess}\" id=\"guess\" "
+"required=\"true\"&gt;\n"
+"            &lt;f:validateLongRange\n"
+"                maximum=\"#{numberGuess.biggest}\" \n"
+"                minimum=\"#{numberGuess.smallest}\"/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"        &lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"guess"
+"\" /&gt;\n"
+"        &lt;br/&gt;\n"
+"        &lt;h:message for=\"guess\" style=\"color: red\"/&gt;\n"
+"    &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+
+#. Tag: para
+#: Tutorial.xml:768
+#, no-c-format
+msgid ""
+"Notice how the command button names the <literal>guess</literal> transition "
+"instead of calling an action directly."
+msgstr ""
+"Observe como el botón de comandos nombra la transición <literal>guess</"
+"literal> en vez de llamar una acción directamente."
+
+#. Tag: para
+#: Tutorial.xml:771
+#, no-c-format
+msgid "The <literal>win.jsp</literal> page is predictable:"
+msgstr "La página <literal>win.jsp</literal> es predecible:"
+
+#. Tag: programlisting
+#: Tutorial.xml:774
+#, no-c-format
+msgid ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"%&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"%&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;You won!&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;You won!&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    Yes, the answer was &lt;h:outputText value=\"#{numberGuess.currentGuess}"
+"\" /&gt;.\n"
+"    It took you &lt;h:outputText value=\"#{numberGuess.guessCount}\" /&gt; "
+"guesses.\n"
+"    Would you like to &lt;a href=\"numberGuess.seam\"&gt;play again&lt;/"
+"a&gt;?\n"
+"  &lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"%&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"%&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;You won!&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;You won!&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    Yes, the answer was &lt;h:outputText value=\"#{numberGuess.currentGuess}"
+"\" /&gt;.\n"
+"    It took you &lt;h:outputText value=\"#{numberGuess.guessCount}\" /&gt; "
+"guesses.\n"
+"    Would you like to &lt;a href=\"numberGuess.seam\"&gt;play again&lt;/"
+"a&gt;?\n"
+"  &lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+
+#. Tag: para
+#: Tutorial.xml:775
+#, no-c-format
+msgid ""
+"As is <literal>lose.jsp</literal> (which I can&#39;t be bothered copy/"
+"pasting). Finally, the JavaBean Seam component:"
+msgstr ""
+"Así como <literal>lose.jsp</literal> (el cual ni me molesto en copiar/"
+"pegar). Finalmente, el componente Seam JavaBean: "
+
+#. Tag: programlisting
+#: Tutorial.xml:783
+#, no-c-format
+msgid ""
+"@Name(\"numberGuess\")\n"
+"@Scope(ScopeType.CONVERSATION)\n"
+"public class NumberGuess {\n"
+"   \n"
+"   private int randomNumber;\n"
+"   private Integer currentGuess;\n"
+"   private int biggest;\n"
+"   private int smallest;\n"
+"   private int guessCount;\n"
+"   private int maxGuesses;\n"
+"   \n"
+"   @Create \n"
+"   @Begin(pageflow=\"numberGuess\")\n"
+"   public void begin()\n"
+"   {\n"
+"      randomNumber = new Random().nextInt(100);\n"
+"      guessCount = 0;\n"
+"      biggest = 100;\n"
+"      smallest = 1;\n"
+"   }\n"
+"   \n"
+"   public void setCurrentGuess(Integer guess)\n"
+"   {\n"
+"      this.currentGuess = guess;\n"
+"   }\n"
+"   \n"
+"   public Integer getCurrentGuess()\n"
+"   {\n"
+"      return currentGuess;\n"
+"   }\n"
+"   \n"
+"   public void guess()\n"
+"   {\n"
+"      if (currentGuess&gt;randomNumber)\n"
+"      {\n"
+"         biggest = currentGuess - 1;\n"
+"      }\n"
+"      if (currentGuess&lt;randomNumber)\n"
+"      {\n"
+"         smallest = currentGuess + 1;\n"
+"      }\n"
+"      guessCount ++;\n"
+"   }\n"
+"   \n"
+"   public boolean isCorrectGuess()\n"
+"   {\n"
+"      return currentGuess==randomNumber;\n"
+"   }\n"
+"   \n"
+"   public int getBiggest()\n"
+"   {\n"
+"      return biggest;\n"
+"   }\n"
+"   \n"
+"   public int getSmallest()\n"
+"   {\n"
+"      return smallest;\n"
+"   }\n"
+"   \n"
+"   public int getGuessCount()\n"
+"   {\n"
+"      return guessCount;\n"
+"   }\n"
+"   \n"
+"   public boolean isLastGuess()\n"
+"   {\n"
+"      return guessCount==maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getRemainingGuesses() {\n"
+"      return maxGuesses-guessCount;\n"
+"   }\n"
+"\n"
+"   public void setMaxGuesses(int maxGuesses) {\n"
+"      this.maxGuesses = maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getMaxGuesses() {\n"
+"      return maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getRandomNumber() {\n"
+"      return randomNumber;\n"
+"   }\n"
+"}"
+msgstr ""
+"@Name(\"numberGuess\")\n"
+"@Scope(ScopeType.CONVERSATION)\n"
+"public class NumberGuess {\n"
+"   \n"
+"   private int randomNumber;\n"
+"   private Integer currentGuess;\n"
+"   private int biggest;\n"
+"   private int smallest;\n"
+"   private int guessCount;\n"
+"   private int maxGuesses;\n"
+"   \n"
+"   @Create \n"
+"   @Begin(pageflow=\"numberGuess\")\n"
+"   public void begin()\n"
+"   {\n"
+"      randomNumber = new Random().nextInt(100);\n"
+"      guessCount = 0;\n"
+"      biggest = 100;\n"
+"      smallest = 1;\n"
+"   }\n"
+"   \n"
+"   public void setCurrentGuess(Integer guess)\n"
+"   {\n"
+"      this.currentGuess = guess;\n"
+"   }\n"
+"   \n"
+"   public Integer getCurrentGuess()\n"
+"   {\n"
+"      return currentGuess;\n"
+"   }\n"
+"   \n"
+"   public void guess()\n"
+"   {\n"
+"      if (currentGuess&gt;randomNumber)\n"
+"      {\n"
+"         biggest = currentGuess - 1;\n"
+"      }\n"
+"      if (currentGuess&lt;randomNumber)\n"
+"      {\n"
+"         smallest = currentGuess + 1;\n"
+"      }\n"
+"      guessCount ++;\n"
+"   }\n"
+"   \n"
+"   public boolean isCorrectGuess()\n"
+"   {\n"
+"      return currentGuess==randomNumber;\n"
+"   }\n"
+"   \n"
+"   public int getBiggest()\n"
+"   {\n"
+"      return biggest;\n"
+"   }\n"
+"   \n"
+"   public int getSmallest()\n"
+"   {\n"
+"      return smallest;\n"
+"   }\n"
+"   \n"
+"   public int getGuessCount()\n"
+"   {\n"
+"      return guessCount;\n"
+"   }\n"
+"   \n"
+"   public boolean isLastGuess()\n"
+"   {\n"
+"      return guessCount==maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getRemainingGuesses() {\n"
+"      return maxGuesses-guessCount;\n"
+"   }\n"
+"\n"
+"   public void setMaxGuesses(int maxGuesses) {\n"
+"      this.maxGuesses = maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getMaxGuesses() {\n"
+"      return maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getRandomNumber() {\n"
+"      return randomNumber;\n"
+"   }\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:786
+#, no-c-format
+msgid ""
+"The first time a JSP page asks for a <literal>numberGuess</literal> "
+"component, Seam will create a new one for it, and the <literal>@Create</"
+"literal> method will be invoked, allowing the component to initialize itself."
+msgstr ""
+"La primera vez que una página JSP pide un componente <literal>numberGuess</"
+"literal>, Seam creará uno nuevo para este y se invocará el método "
+"<literal>@Create</literal> permitiéndole al mismo componente que se auto-"
+"inicialice."
+
+#. Tag: para
+#: Tutorial.xml:791
+#, no-c-format
+msgid ""
+"The <literal>@Begin</literal> annotation starts a Seam "
+"<emphasis>conversation</emphasis> (much more about that later), and "
+"specifies the pageflow definition to use for the conversation&#39;s page "
+"flow."
+msgstr ""
+"La anotación <literal>@Begin</literal> da inicio a una "
+"<emphasis>conversación</emphasis> Seam (profundizaremos más adelante en "
+"esto) y especifica la definición del flujo de página que se debe utilizar "
+"para el flujo de página de la conversación. "
+
+#. Tag: para
+#: Tutorial.xml:798
+#, no-c-format
+msgid ""
+"As you can see, this Seam component is pure business logic! It doesn&#39;t "
+"need to know anything at all about the user interaction flow. This makes the "
+"component potentially more reuseable."
+msgstr ""
+"Como lo puede ver, este componente Seam es ¡pura lógica empresarial! No "
+"necesita saber nada sobre todo el flujo de interacción del usuario. Esto "
+"hace que el componente sea potencialmente más re-utilizable. "
+
+#. Tag: title
+#: Tutorial.xml:813
+#, no-c-format
+msgid "A complete Seam application: the Hotel Booking example"
+msgstr "Una aplicación Seam completa: el ejemplo de la reservación de hotel"
+
+#. Tag: title
+#: Tutorial.xml:815
+#, no-c-format
+msgid "Introduction"
+msgstr "Introducción"
+
+#. Tag: para
+#: Tutorial.xml:816
+#, no-c-format
+msgid ""
+"The booking application is a complete hotel room reservation system "
+"incorporating the following features:"
+msgstr ""
+"La aplicación para realizar reservaciones es un sistema de reservación de "
+"habitaciones de hotel que incorpora las siguientes características:"
+
+#. Tag: para
+#: Tutorial.xml:821
+#, no-c-format
+msgid "User registration"
+msgstr "Registro del usuario"
+
+#. Tag: para
+#: Tutorial.xml:826
+#, no-c-format
+msgid "Login"
+msgstr "Inicio de la sesión"
+
+#. Tag: para
+#: Tutorial.xml:831
+#, no-c-format
+msgid "Logout"
+msgstr "Finalización de la sesión"
+
+#. Tag: para
+#: Tutorial.xml:836
+#, no-c-format
+msgid "Set password"
+msgstr "Configuración de la contraseña"
+
+#. Tag: para
+#: Tutorial.xml:841
+#, no-c-format
+msgid "Hotel search"
+msgstr "Búsqueda de hotel"
+
+#. Tag: para
+#: Tutorial.xml:846
+#, no-c-format
+msgid "Hotel selection"
+msgstr "Selección del hotel"
+
+#. Tag: para
+#: Tutorial.xml:851
+#, no-c-format
+msgid "Room reservation"
+msgstr "Reservación de la habitación"
+
+#. Tag: para
+#: Tutorial.xml:856
+#, no-c-format
+msgid "Reservation confirmation"
+msgstr "Confirmación de la reservación"
+
+#. Tag: para
+#: Tutorial.xml:861
+#, no-c-format
+msgid "Existing reservation list"
+msgstr "Lista de reservaciones previas"
+
+#. Tag: screeninfo
+#: Tutorial.xml:866
+#, no-c-format
+msgid "Booking example"
+msgstr "Ejemplo de reservación"
+
+#. Tag: para
+#: Tutorial.xml:874
+#, no-c-format
+msgid ""
+"The booking application uses JSF, EJB 3.0 and Seam, together with Facelets "
+"for the view. There is also a port of this application to JSF, Facelets, "
+"Seam, JavaBeans and Hibernate3."
+msgstr ""
+"La aplicación para realizar reservaciones utiliza JSF, EJB 3.0 y Seam junto "
+"con Facelets para la vista. También hay un puerto de esta aplicación para "
+"JSF, Facelets, Seam, JavaBeans y Hibernate3."
+
+#. Tag: para
+#: Tutorial.xml:877
+#, no-c-format
+msgid ""
+"One of the things you&#39;ll notice if you play with this application for "
+"long enough is that it is extremely <emphasis>robust</emphasis>. You can "
+"play with back buttons and browser refresh and opening multiple windows and "
+"entering nonsensical data as much as you like and you will find it very "
+"difficult to make the application crash. You might think that we spent weeks "
+"testing and fixing bugs to achive this. Actually, this is not the case. Seam "
+"was designed to make it very straightforward to build robust web "
+"applications and a lot of robustness that you are probably used to having to "
+"code yourself comes naturally and automatically with Seam."
+msgstr ""
+"Una de las cosas que observará si juega un poco con esta aplicación es que "
+"es extremadamente <emphasis>robusta</emphasis>. Puede jugar con los botones "
+"de regreso, refrescar y abrir múltiples ventanas e introducir datos absurdos "
+"tanto como quiera y verá que es muy difícil hacer fallar la aplicación. "
+"Pensará que hemos tomado semanas para probar y arreglar los posibles errores "
+"para poder llegar a lograr esto pero de hecho no fue así. Seam fue diseñado "
+"para poder construir aplicaciones web robustas de manera simple y gran parte "
+"de la robustez a la que usted está acostumbrado proviene naturalmente y "
+"automáticamente de Seam. "
+
+#. Tag: para
+#: Tutorial.xml:880
+#, no-c-format
+msgid ""
+"As you browse the sourcecode of the example application, and learn how the "
+"application works, observe how the declarative state management and "
+"integrated validation has been used to achieve this robustness."
+msgstr ""
+"Mientras navega el código fuente de la aplicación de ejemplo y al mismo "
+"tiempo aprende como funciona la aplicación observe la administración del "
+"estado declarativo y la validación integrada que se utiliza para lograr esta "
+"robustez."
+
+#. Tag: title
+#: Tutorial.xml:886
+#, no-c-format
+msgid "Overview of the booking example"
+msgstr "Sinopsis del ejemplo de la reservación"
+
+#. Tag: para
+#: Tutorial.xml:887
+#, no-c-format
+msgid ""
+"The project structure is identical to the previous one, to install and "
+"deploy this application, please refer to <xref linkend="
+"\"Seam_Reference_Guide-Seam_Tutorial-Try_the_examples\"/>. Once you&#39;ve "
+"successfully started the application, you can access it by pointing your "
+"browser to <ulink url=\"http://localhost:8080/seam-booking/"
+"\"><literal>http://localhost:8080/seam-booking/</literal></ulink>"
+msgstr ""
+"La estructura del proyecto es idéntica a la anterior. Para instalar y "
+"desplegar esta aplicación consulte la <xref linkend=\"Seam_Reference_Guide-"
+"Seam_Tutorial-Try_the_examples\"/>. Una vez que ha iniciado la aplicación de "
+"manera exitosa puede acceder a esta dirigiendo su navegador a <ulink url="
+"\"http://localhost:8080/seam-booking/\"><literal>http://localhost:8080/seam-"
+"booking/</literal></ulink>."
+
+#. Tag: para
+#: Tutorial.xml:890
+#, no-c-format
+msgid ""
+"Just nine classes (plus six session beans local interfaces) where used to "
+"implement this application. Six session bean action listeners contain all "
+"the business logic for the listed features."
+msgstr ""
+"Para implementar esta aplicación sólo se utilizaron nueve clases (más seis "
+"interfaces locales de beans de sesión). Seis escuchas de acción de beans de "
+"sesión contienen toda la lógica empresarial para las características "
+"enumeradas."
+
+#. Tag: para
+#: Tutorial.xml:895
+#, no-c-format
+msgid ""
+"<literal>BookingListAction</literal> retrieves existing bookings for the "
+"currently logged in user."
+msgstr ""
+"<literal>BookingListAction</literal> recupera las reservas previas para el "
+"usuario con una sesión actualmente abierta."
+
+#. Tag: para
+#: Tutorial.xml:898
+#, no-c-format
+msgid ""
+"<literal>ChangePasswordAction</literal> updates the password of the "
+"currently logged in user."
+msgstr ""
+"<literal>ChangePasswordAction</literal> actualiza la contraseña del usuario "
+"con una sesión actualmente abierta."
+
+#. Tag: para
+#: Tutorial.xml:901
+#, no-c-format
+msgid ""
+"<literal>HotelBookingAction</literal> implements the core functionality of "
+"the application: hotel room searching, selection, booking and booking "
+"confirmation. This functionality is implemented as a <emphasis>conversation</"
+"emphasis>, so this is the most interesting class in the application."
+msgstr ""
+"<literal>HotelBookingAction</literal> implementa la funcionalidad principal "
+"de la aplicación: búsqueda de habitación, selección, reservación y "
+"confirmación. Esta funcionalidad se implementa como una "
+"<emphasis>conversación</emphasis> así que esta es la clase más interesante "
+"en la aplicación."
+
+#. Tag: para
+#: Tutorial.xml:904
+#, no-c-format
+msgid "<literal>RegisterAction</literal> registers a new system user."
+msgstr ""
+"<literal>RegisterAction</literal> registra un nuevo usuario del sistema."
+
+#. Tag: para
+#: Tutorial.xml:907
+#, no-c-format
+msgid ""
+"Three entity beans implement the application&#39;s persistent domain model."
+msgstr ""
+"Tres beans de entidad implementan el modelo de dominio persistente de la "
+"aplicación. "
+
+#. Tag: para
+#: Tutorial.xml:912
+#, no-c-format
+msgid "<literal>Hotel</literal> is an entity bean that represents a hotel"
+msgstr ""
+"<literal>Hotel</literal> es un bean de entidad que representa un hotel "
+
+#. Tag: para
+#: Tutorial.xml:917
+#, no-c-format
+msgid ""
+"<literal>Booking</literal> is an entity bean that represents an existing "
+"booking"
+msgstr ""
+"<literal>Booking</literal> es un bean de entidad que representa una "
+"reservación ya existente"
+
+#. Tag: para
+#: Tutorial.xml:922
+#, no-c-format
+msgid ""
+"<literal>User</literal> is an entity bean to represents a user who can make "
+"hotel bookings"
+msgstr ""
+"<literal>User</literal> es un bean de entidad que representa un usuario que "
+"puede hacer reservaciones de hotel"
+
+#. Tag: title
+#: Tutorial.xml:930
+#, no-c-format
+msgid "Understanding Seam conversations"
+msgstr "Comprensión de las conversaciones Seam"
+
+#. Tag: para
+#: Tutorial.xml:931
+#, no-c-format
+msgid ""
+"We encourage you browse the sourcecode at your pleasure. In this tutorial "
+"we&#39;ll concentrate upon one particular piece of functionality: hotel "
+"search, selection, booking and confirmation. From the point of view of the "
+"user, everything from selecting a hotel to confirming a booking is one "
+"continuous unit of work, a <emphasis>conversation</emphasis>. Searching, "
+"however, is <emphasis>not</emphasis> part of the conversation. The user can "
+"select multiple hotels from the same search results page, in different "
+"browser tabs."
+msgstr ""
+"Le animamos a que examine el código fuente. En este tutorial nos vamos a "
+"concentrar en una funcionalidad en particular: la búsqueda de hotel, la "
+"selección, la reserva y la confirmación. Desde el punto de vista del usuario "
+"todo es una sola unidad de trabajo desde la selección del hotel hasta la "
+"confirmación de la reservación, todo es una <emphasis>conversación</"
+"emphasis>. Sin embargo, la búsqueda <emphasis>no</emphasis> es parte de la "
+"conversación. El usuario puede seleccionar múltiples hoteles desde la misma "
+"página de resultados de la búsqueda utilizando diferentes pestañas del "
+"navegador."
+
+#. Tag: para
+#: Tutorial.xml:934
+#, no-c-format
+msgid ""
+"Most web application architectures have no first class construct to "
+"represent a conversation. This causes enormous problems managing state "
+"associated with the conversation. Usually, Java web applications use a "
+"combination of two techniques: first, some state is thrown into the "
+"<literal>HttpSession</literal>; second, persistable state is flushed to the "
+"database after every request, and reconstructed from the database at the "
+"beginning of each new request."
+msgstr ""
+"La mayoría de las arquitecturas de aplicaciones web no tienen una "
+"construcción de primera clase para representar una conversación. Esto genera "
+"grandes problemas en la administración del estado asociado con la "
+"conversación. Usualmente, las aplicaciones web de Java utilizan una "
+"combinación de dos técnicas: primero se lanza algún estado a la "
+"<literal>HttpSession</literal>; segundo, el estado persistente se vacía en "
+"la base de datos después de cada petición y se reconstruye desde la base de "
+"datos al comienzo de cada petición nueva."
+
+#. Tag: para
+#: Tutorial.xml:937
+#, no-c-format
+msgid ""
+"Since the database is the least scalable tier, this often results in an "
+"utterly unacceptable lack of scalability. Added latency is also a problem, "
+"due to the extra traffic to and from the database on every request. To "
+"reduce this redundant traffic, Java applications often introduce a data "
+"(second-level) cache that keeps commonly accessed data between requests. "
+"This cache is necessarily inefficient, because invalidation is based upon an "
+"LRU policy instead of being based upon when the user has finished working "
+"with the data. Furthermore, because the cache is shared between many "
+"concurrent transactions, we&#39;ve introduced a whole raft of problem&#39;s "
+"associated with keeping the cached state consistent with the database."
+msgstr ""
+"Debido a que la base de datos es el nivel menos escalable, con frecuencia "
+"esto genera una completa falta de escalabilidad inaceptable. La latencia "
+"añadida también es un problema debido al trafico extra desde y hasta la base "
+"de datos en cada petición. Para reducir este tráfico redundante, las "
+"aplicaciones Java con frecuencia introducen un caché de datos (de segundo "
+"nivel) que mantiene los datos de acceso común entre pedidos. Este caché es "
+"necesariamente ineficiente ya que la invalidación se basa en una política "
+"LRU en vez de basarse en lo que resulta cuando el usuario ha terminado de "
+"trabajar con los datos. Además debido a que el caché se comparte entre "
+"muchas transacciones actuales hemos introducido una serie de problemas "
+"asociados con el mantener el estado en caché de manera consistente con la "
+"base de datos."
+
+#. Tag: para
+#: Tutorial.xml:940
+#, no-c-format
+msgid ""
+"Now consider the state held in the <literal>HttpSession</literal>. By very "
+"careful programming, we might be able to control the size of the session "
+"data. This is a lot more difficult than it sounds, since web browsers permit "
+"ad hoc non-linear navigation. But suppose we suddenly discover a system "
+"requirement that says that a user is allowed to have <emphasis>mutiple "
+"concurrent conversations</emphasis>, halfway through the development of the "
+"system (this has happened to me). Developing mechanisms to isolate session "
+"state associated with different concurrent conversations, and incorporating "
+"failsafes to ensure that conversation state is destroyed when the user "
+"aborts one of the conversations by closing a browser window or tab is not "
+"for the faint hearted (I&#39;ve implemented this stuff twice so far, once "
+"for a client application, once for Seam, but I&#39;m famously psychotic)."
+msgstr ""
+"Ahora considere el estado que se encuentra en <literal>HttpSession</"
+"literal>. Con una programación muy cuidadosa puede que sea posible controlar "
+"el tamaño de los datos de sesión. Esto es mucho más difícil de lo que suena "
+"ya que los navegadores web permiten navegación ad hoc no linear. Pero "
+"suponga que de pronto descubrimos un requerimiento del sistema que dice que "
+"a un usuario se le permite tener <emphasis>múltiple conversaciones "
+"simultáneas</emphasis> a medio camino del desarrollo del sistema (esto me "
+"pasó a mi). No es para los débiles el desarrollar mecanismos para aislar "
+"estados de sesión asociados con diferentes conversaciones simultáneas e "
+"incorporando mecanismos de seguridad para asegurarse de que el estado de "
+"conversación sea destruido cuando el usuario aborta una de las "
+"conversaciones al cerrar una ventana del navegador o una pestaña (he "
+"implementado esto ya dos veces, una vez para una aplicación del cliente y "
+"otra vez para Seam pero tengo fama de ser psicótico). "
+
+#. Tag: para
+#: Tutorial.xml:943
+#, no-c-format
+msgid "Now there is a better way."
+msgstr "Ahora hay una mejor manera."
+
+#. Tag: para
+#: Tutorial.xml:946
+#, no-c-format
+msgid ""
+"Seam introduces the <emphasis>conversation context</emphasis> as a first "
+"class construct. You can safely keep conversational state in this context, "
+"and be assured that it will have a well-defined lifecycle. Even better, you "
+"won&#39;t need to be continually pushing data back and forth between the "
+"application server and the database, since the conversation context is a "
+"natural cache of data that the user is currently working with."
+msgstr ""
+"Seam introduce el <emphasis>contexto de conversación</emphasis> como una "
+"construcción de primera clase. Puede mantener de manera segura el estado de "
+"conversación en este contexto y esté seguro de que tendrá un ciclo de vida "
+"bien definido. Aún mejor, no necesitará estar trayendo y llevando datos "
+"entre el servidor de aplicaciones y la base de datos ya que el contexto de "
+"conversación es un caché natural de datos en el que el usuario se encuentra "
+"trabajando actualmente. "
+
+#. Tag: para
+#: Tutorial.xml:949
+#, no-c-format
+msgid ""
+"Usually, the components we keep in the conversation context are stateful "
+"session beans. (We can also keep entity beans and JavaBeans in the "
+"conversation context.) There is an ancient canard in the Java community that "
+"stateful session beans are a scalability killer. This may have been true in "
+"1998 when WebFoobar 1.0 was released. It is no longer true today. "
+"Application servers like JBoss 4.0 have extremely sophisticated mechanisms "
+"for stateful session bean state replication. (For example, the JBoss EJB3 "
+"container performs fine-grained replication, replicating only those bean "
+"attribute values which actually changed.) Note that all the traditional "
+"technical arguments for why stateful beans are inefficient apply equally to "
+"the <literal>HttpSession</literal>, so the practice of shifting state from "
+"business tier stateful session bean components to the web session to try and "
+"improve performance is unbelievably misguided. It is certainly possible to "
+"write unscalable applications using stateful session beans, by using "
+"stateful beans incorrectly, or by using them for the wrong thing. But that "
+"doesn&#39;t mean you should <emphasis>never</emphasis> use them. Anyway, "
+"Seam guides you toward a safe usage model. Welcome to 2005."
+msgstr ""
+"Usualmente, los componentes que mantenemos en el contexto de conversación "
+"son beans de sesión con estado (también podemos mantener los beans de "
+"entidad y los JavaBeans en el contexto de conversación). En la comunidad "
+"Java hay una antigua creencia que dice que los bean de sesión con estado "
+"acaban con la escalabilidad. Esto pudo haber sido cierto en 1998 cuando se "
+"publicó WebFoobar 1.0, pero hoy en día esto ya no es válido. Los servidores "
+"de aplicaciones como JBoss 4.0 cuentan con mecanismos extremadamente "
+"sofisticados para la réplica de estado de beans de sesión con estado (por "
+"ejemplo, el contenedor JBoss EJB realiza réplicas detalladas, replicando "
+"solamente los valores de los atributos beans que de hecho cambiaron). "
+"Observe que todos los argumentos técnicos tradicionales del por qué los "
+"beans con estado son ineficientes aplican de igual manera al "
+"<literal>HttpSession</literal>, así que la práctica de cambio de estado "
+"desde los componentes beans de sesión con estado del nivel empresarial hasta "
+"la sesión web para tratar de mejorar el rendimiento es totalmente "
+"equivocado. Ciertamente es posible escribir aplicaciones no escalables "
+"utilizando beans de sesión con estado ya sea usando incorrectamente los "
+"beans con estado o utilizándolos para lo que no es. Pero eso no significa "
+"que <emphasis>nunca</emphasis> deba utilizarlas. De cualquier forma, Seam le "
+"dirige hacia el modelo de uso seguro. Bienvenido al 2005. "
+
+#. Tag: para
+#: Tutorial.xml:952
+#, no-c-format
+msgid "OK, I&#39;ll stop ranting now, and get back to the tutorial."
+msgstr "Está bien, es suficiente, es hora de regresar al tutorial. "
+
+#. Tag: para
+#: Tutorial.xml:955
+#, no-c-format
+msgid ""
+"The booking example application shows how stateful components with different "
+"scopes can collaborate together to achieve complex behaviors. The main page "
+"of the booking application allows the user to search for hotels. The search "
+"results are kept in the Seam session scope. When the user navigates to one "
+"of these hotels, a conversation begins, and a conversation scoped component "
+"calls back to the session scoped component to retrieve the selected hotel."
+msgstr ""
+"La aplicación del ejemplo de la reserva muestra como los componentes con "
+"estado con diferentes ámbitos pueden colaborar todos juntos para lograr "
+"comportamientos complejos. La página principal de la aplicación de la "
+"reserva le permite al usuario buscar hoteles. Los resultados de la búsqueda "
+"se mantienen en el ámbito de sesión de Seam. Cuando el usuario navega a uno "
+"de estos hoteles se da inicio a una conversación y un componente con ámbito "
+"de conversación llama al componente con ámbito de sesión para recuperar el "
+"hotel seleccionado."
+
+#. Tag: para
+#: Tutorial.xml:958
+#, no-c-format
+msgid ""
+"The booking example also demonstrates the use of Ajax4JSF to implement rich "
+"client behavior without the use of handwritten JavaScript."
+msgstr ""
+"El ejemplo de la reserva también demuestra el uso de Ajax4JSF para "
+"implementar un rico comportamiento por parte del cliente sin utilizar "
+"JavaScript escrito a mano."
+
+#. Tag: para
+#: Tutorial.xml:961
+#, no-c-format
+msgid ""
+"The search functionality is implemented using a session-scope stateful "
+"session bean, similar to the one we saw in the message list example above."
+msgstr ""
+"La búsqueda de la funcionalidad se implementa utilizando un bean de sesión "
+"con estado de ámbito de sesión, similar al que vimos en el ejemplo de la "
+"lista de mensajes anterior."
+
+#. Tag: programlisting
+#: Tutorial.xml:971
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"hotelSearch\")\n"
+"@Scope(ScopeType.SESSION)\n"
+"@Restrict(\"#{identity.loggedIn}\")\n"
+"public class HotelSearchingAction implements HotelSearching\n"
+"{\n"
+"   \n"
+"   @PersistenceContext\n"
+"   private EntityManager em;\n"
+"   \n"
+"   private String searchString;\n"
+"   private int pageSize = 10;\n"
+"   private int page;\n"
+"   \n"
+"   @DataModel\n"
+"   private List&lt;Hotel&gt; hotels;\n"
+"   \n"
+"   public String find()\n"
+"   {\n"
+"      page = 0;\n"
+"      queryHotels();   \n"
+"      return \"main\";\n"
+"   }\n"
+"\n"
+"   public String nextPage()\n"
+"   {\n"
+"      page++;\n"
+"      queryHotels();\n"
+"      return \"main\";\n"
+"   }\n"
+"      \n"
+"   private void queryHotels()\n"
+"   {\n"
+"      String searchPattern = searchString==null ? \"%\" : &#39;%&#39; + \n"
+"         searchString.toLowerCase().replace(&#39;*&#39;, &#39;%&#39;) + &#39;"
+"%&#39;;\n"
+"      hotels = em.createQuery(\"select h from Hotel h where lower(h.name) "
+"like \n"
+"        :search or lower(h.city) like :search \n"
+"        or lower(h.zip) like :search or lower(h.address) like :search\")\n"
+"            .setParameter(\"search\", searchPattern)\n"
+"            .setMaxResults(pageSize)\n"
+"            .setFirstResult( page * pageSize )\n"
+"            .getResultList();\n"
+"   }\n"
+"   \n"
+"   public boolean isNextPageAvailable()\n"
+"   {\n"
+"      return hotels!=null &amp;&amp; hotels.size()==pageSize;\n"
+"   }\n"
+"   \n"
+"   public int getPageSize() {\n"
+"      return pageSize;\n"
+"   }\n"
+"\n"
+"   public void setPageSize(int pageSize) {\n"
+"      this.pageSize = pageSize;\n"
+"   }\n"
+"\n"
+"   public String getSearchString()\n"
+"   {\n"
+"      return searchString;\n"
+"   }\n"
+"\n"
+"   public void setSearchString(String searchString)\n"
+"   {\n"
+"      this.searchString = searchString;\n"
+"   }\n"
+"   \n"
+"   @Destroy @Remove\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+"@Stateful\n"
+"@Name(\"hotelSearch\")\n"
+"@Scope(ScopeType.SESSION)\n"
+"@Restrict(\"#{identity.loggedIn}\")\n"
+"public class HotelSearchingAction implements HotelSearching\n"
+"{\n"
+"   \n"
+"   @PersistenceContext\n"
+"   private EntityManager em;\n"
+"   \n"
+"   private String searchString;\n"
+"   private int pageSize = 10;\n"
+"   private int page;\n"
+"   \n"
+"   @DataModel\n"
+"   private List&lt;Hotel&gt; hotels;\n"
+"   \n"
+"   public String find()\n"
+"   {\n"
+"      page = 0;\n"
+"      queryHotels();   \n"
+"      return \"main\";\n"
+"   }\n"
+"\n"
+"   public String nextPage()\n"
+"   {\n"
+"      page++;\n"
+"      queryHotels();\n"
+"      return \"main\";\n"
+"   }\n"
+"      \n"
+"   private void queryHotels()\n"
+"   {\n"
+"      String searchPattern = searchString==null ? \"%\" : &#39;%&#39; + \n"
+"         searchString.toLowerCase().replace(&#39;*&#39;, &#39;%&#39;) + &#39;"
+"%&#39;;\n"
+"      hotels = em.createQuery(\"select h from Hotel h where lower(h.name) "
+"like \n"
+"        :search or lower(h.city) like :search \n"
+"        or lower(h.zip) like :search or lower(h.address) like :search\")\n"
+"            .setParameter(\"search\", searchPattern)\n"
+"            .setMaxResults(pageSize)\n"
+"            .setFirstResult( page * pageSize )\n"
+"            .getResultList();\n"
+"   }\n"
+"   \n"
+"   public boolean isNextPageAvailable()\n"
+"   {\n"
+"      return hotels!=null &amp;&amp; hotels.size()==pageSize;\n"
+"   }\n"
+"   \n"
+"   public int getPageSize() {\n"
+"      return pageSize;\n"
+"   }\n"
+"\n"
+"   public void setPageSize(int pageSize) {\n"
+"      this.pageSize = pageSize;\n"
+"   }\n"
+"\n"
+"   public String getSearchString()\n"
+"   {\n"
+"      return searchString;\n"
+"   }\n"
+"\n"
+"   public void setSearchString(String searchString)\n"
+"   {\n"
+"      this.searchString = searchString;\n"
+"   }\n"
+"   \n"
+"   @Destroy @Remove\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:974
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Stateful</literal> annotation identifies this "
+"class as a stateful session bean. Stateful session beans are scoped to the "
+"conversation context by default."
+msgstr ""
+"La anotación <literal>@Stateful</literal> estándar EJB identifica esta clase "
+"como un bean de sesión con estado. Los beans de sesión con estado se "
+"incluyen en el ámbito del contexto de conversación por defecto."
+
+#. Tag: para
+#: Tutorial.xml:979
+#, no-c-format
+msgid ""
+"The <literal>@Restrict</literal> annotation applies a security restriction "
+"to the component. It restricts access to the component allowing only logged-"
+"in users. The security chapter explains more about security in Seam."
+msgstr ""
+"La anotación <literal>@Restrict</literal> aplica una resticción de seguridad "
+"al componente. Restringe acceso al componente permitiendo solamente a "
+"usuarios que han iniciado sesión. El capítulo sobre seguridad explica más "
+"sobre la seguridad en Seam."
+
+#. Tag: para
+#: Tutorial.xml:984
+#, no-c-format
+msgid ""
+"The <link linkend=\"datamodel-annotation\"><literal>@DataModel</literal></"
+"link> annotation exposes a <literal>List</literal> as a JSF "
+"<literal>ListDataModel</literal>. This makes it easy to implement clickable "
+"lists for search screens. In this case, the list of hotels is exposed to the "
+"page as a <literal>ListDataModel</literal> in the conversation variable "
+"named <literal>hotels</literal>."
+msgstr ""
+"La anotación <link linkend=\"datamodel-annotation\"><literal>@DataModel</"
+"literal></link> expone un <literal>List</literal> como un "
+"<literal>ListDataModel</literal> JSF. Esto facilita la implementación de "
+"listas interactivas para pantallas de búsqueda. En este caso, la lista de "
+"hoteles se presenta a la página como un <literal>ListDataModel</literal> en "
+"la variable de conversación llamada <literal>hotels</literal>."
+
+#. Tag: para
+#: Tutorial.xml:989
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Remove</literal> annotation specifies that a "
+"stateful session bean should be removed and its state destroyed after "
+"invocation of the annotated method. In Seam, all stateful session beans "
+"should define a method marked <literal>@Destroy @Remove</literal>. This is "
+"the EJB remove method that will be called when Seam destroys the session "
+"context. Actually, the <link linkend=\"destroy-annotation"
+"\"><literal>@Destroy</literal></link> annotation is of more general "
+"usefulness, since it can be used for any kind of cleanup that should happen "
+"when any Seam context ends. If you don&#39;t have an <literal>@Destroy "
+"@Remove</literal> method, state will leak and you will suffer performance "
+"problems."
+msgstr ""
+"La anotación <literal>@Remove</literal> estándar EJB especifica que un bean "
+"de sesión con estado se debe remover y su estado se debe destruir después de "
+"la invocación del método anotado. En Seam, todos los beans de sesión con "
+"estado deben definir un método marcado <literal>@Destroy @Remove</literal>. "
+"Este es el método para remover de EJB que se llamará cuando Seam destruya el "
+"contexto de sesión. De hecho, la anotación <link linkend=\"destroy-annotation"
+"\"><literal>@Destroy</literal></link> es más de uso general ya que se puede "
+"utilizar para cualquier clase de limpieza que se deba realizar cuando se da "
+"fin a cualquier contexto Seam. Si no cuenta con un método <literal>@Destroy "
+"@Remove</literal>, el estado se filtrará y sufrirá problemas de rendimiento. "
+
+#. Tag: para
+#: Tutorial.xml:996
+#, no-c-format
+msgid ""
+"The main page of the application is a Facelets page. Let&#39;s look at the "
+"fragment which relates to searching for hotels:"
+msgstr ""
+"La página principal de la aplicación es una página Facelets. Vamos a mirar "
+"el fragmento que se relaciona con la búsqueda de hoteles: "
+
+#. Tag: programlisting
+#: Tutorial.xml:1006
+#, no-c-format
+msgid ""
+"&lt;div class=\"section\"&gt;\n"
+"&lt;h:form&gt;\n"
+"  \n"
+"  &lt;span class=\"errors\"&gt;\n"
+"    &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"  &lt;/span&gt;\n"
+"    \n"
+"  &lt;h1&gt;Search Hotels&lt;/h1&gt;\n"
+"  &lt;fieldset&gt; \n"
+"     &lt;h:inputText value=\"#{hotelSearch.searchString}\" style=\"width: "
+"165px;\"&gt;\n"
+"        &lt;a:support event=\"onkeyup\" actionListener=\"#{hotelSearch.find}"
+"\" \n"
+"                   reRender=\"searchResults\" /&gt;\n"
+"     &lt;/h:inputText&gt;\n"
+"     &#160;\n"
+"     &lt;a:commandButton value=\"Find Hotels\" action=\"#{hotelSearch.find}"
+"\" \n"
+"                      styleClass=\"button\" reRender=\"searchResults\"/&gt;\n"
+"     &#160;\n"
+"     &lt;a:status&gt;\n"
+"        &lt;f:facet name=\"start\"&gt;\n"
+"           &lt;h:graphicImage value=\"/img/spinner.gif\"/&gt;\n"
+"        &lt;/f:facet&gt;\n"
+"     &lt;/a:status&gt;\n"
+"     &lt;br/&gt;\n"
+"     &lt;h:outputLabel for=\"pageSize\"&gt;Maximum results:&lt;/h:"
+"outputLabel&gt;&#160;\n"
+"     &lt;h:selectOneMenu value=\"#{hotelSearch.pageSize}\" id=\"pageSize"
+"\"&gt;\n"
+"        &lt;f:selectItem itemLabel=\"5\" itemValue=\"5\"/&gt;\n"
+"        &lt;f:selectItem itemLabel=\"10\" itemValue=\"10\"/&gt;\n"
+"        &lt;f:selectItem itemLabel=\"20\" itemValue=\"20\"/&gt;\n"
+"     &lt;/h:selectOneMenu&gt;\n"
+"  &lt;/fieldset&gt;\n"
+"    \n"
+"&lt;/h:form&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;a:outputPanel id=\"searchResults\"&gt;\n"
+"  &lt;div class=\"section\"&gt;\n"
+"  &lt;h:outputText value=\"No Hotels Found\" \n"
+"                rendered=\"#{hotels != null and hotels.rowCount==0}\"/&gt;\n"
+"  &lt;h:dataTable value=\"#{hotels}\" var=\"hot\" rendered=\"#{hotels."
+"rowCount&gt;0}\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Name&lt;/f:facet&gt;\n"
+"      #{hot.name}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Address&lt;/f:facet&gt;\n"
+"      #{hot.address}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;City, State&lt;/f:facet&gt;\n"
+"      #{hot.city}, #{hot.state}, #{hot.country}\n"
+"    &lt;/h:column&gt; \n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Zip&lt;/f:facet&gt;\n"
+"      #{hot.zip}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"      &lt;s:link value=\"View Hotel\" action=\"#{hotelBooking.selectHotel"
+"(hot)}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"  &lt;/h:dataTable&gt;\n"
+"  &lt;s:link value=\"More results\" action=\"#{hotelSearch.nextPage}\" \n"
+"          rendered=\"#{hotelSearch.nextPageAvailable}\"/&gt;\n"
+"  &lt;/div&gt;\n"
+"&lt;/a:outputPanel&gt;"
+msgstr ""
+"&lt;div class=\"section\"&gt;\n"
+"&lt;h:form&gt;\n"
+"  \n"
+"  &lt;span class=\"errors\"&gt;\n"
+"    &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"  &lt;/span&gt;\n"
+"    \n"
+"  &lt;h1&gt;Search Hotels&lt;/h1&gt;\n"
+"  &lt;fieldset&gt; \n"
+"     &lt;h:inputText value=\"#{hotelSearch.searchString}\" style=\"width: "
+"165px;\"&gt;\n"
+"        &lt;a:support event=\"onkeyup\" actionListener=\"#{hotelSearch.find}"
+"\" \n"
+"                   reRender=\"searchResults\" /&gt;\n"
+"     &lt;/h:inputText&gt;\n"
+"     &#160;\n"
+"     &lt;a:commandButton value=\"Find Hotels\" action=\"#{hotelSearch.find}"
+"\" \n"
+"                      styleClass=\"button\" reRender=\"searchResults\"/&gt;\n"
+"     &#160;\n"
+"     &lt;a:status&gt;\n"
+"        &lt;f:facet name=\"start\"&gt;\n"
+"           &lt;h:graphicImage value=\"/img/spinner.gif\"/&gt;\n"
+"        &lt;/f:facet&gt;\n"
+"     &lt;/a:status&gt;\n"
+"     &lt;br/&gt;\n"
+"     &lt;h:outputLabel for=\"pageSize\"&gt;Maximum results:&lt;/h:"
+"outputLabel&gt;&#160;\n"
+"     &lt;h:selectOneMenu value=\"#{hotelSearch.pageSize}\" id=\"pageSize"
+"\"&gt;\n"
+"        &lt;f:selectItem itemLabel=\"5\" itemValue=\"5\"/&gt;\n"
+"        &lt;f:selectItem itemLabel=\"10\" itemValue=\"10\"/&gt;\n"
+"        &lt;f:selectItem itemLabel=\"20\" itemValue=\"20\"/&gt;\n"
+"     &lt;/h:selectOneMenu&gt;\n"
+"  &lt;/fieldset&gt;\n"
+"    \n"
+"&lt;/h:form&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;a:outputPanel id=\"searchResults\"&gt;\n"
+"  &lt;div class=\"section\"&gt;\n"
+"  &lt;h:outputText value=\"No Hotels Found\" \n"
+"                rendered=\"#{hotels != null and hotels.rowCount==0}\"/&gt;\n"
+"  &lt;h:dataTable value=\"#{hotels}\" var=\"hot\" rendered=\"#{hotels."
+"rowCount&gt;0}\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Name&lt;/f:facet&gt;\n"
+"      #{hot.name}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Address&lt;/f:facet&gt;\n"
+"      #{hot.address}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;City, State&lt;/f:facet&gt;\n"
+"      #{hot.city}, #{hot.state}, #{hot.country}\n"
+"    &lt;/h:column&gt; \n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Zip&lt;/f:facet&gt;\n"
+"      #{hot.zip}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"      &lt;s:link value=\"View Hotel\" action=\"#{hotelBooking.selectHotel"
+"(hot)}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"  &lt;/h:dataTable&gt;\n"
+"  &lt;s:link value=\"More results\" action=\"#{hotelSearch.nextPage}\" \n"
+"          rendered=\"#{hotelSearch.nextPageAvailable}\"/&gt;\n"
+"  &lt;/div&gt;\n"
+"&lt;/a:outputPanel&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1009
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:support&gt;</literal> tag allows a JSF action "
+"event listener to be called by asynchronous <literal>XMLHttpRequest</"
+"literal> when a JavaScript event like <literal>onkeyup</literal> occurs. "
+"Even better, the <literal>reRender</literal> attribute lets us render a "
+"fragment of the JSF page and perform a partial page update when the "
+"asynchronous response is received."
+msgstr ""
+"La etiqueta <literal>&lt;a:support&gt;</literal> Ajax4JSF permite que un "
+"<literal>XMLHttpRequest</literal> asincrónico llame a un escucha de eventos "
+"de accciones JSF cuando ocurre un evento JavaScript como <literal>onkeyup</"
+"literal>. Aún mejor, el atributo <literal>reRender</literal> nos permite "
+"presentar un fragmento de una página JSF y realizar una actualización "
+"parcial de la página cuando se recibe la respuesta asincrónica."
+
+#. Tag: para
+#: Tutorial.xml:1014
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:status&gt;</literal> tag lets us display a "
+"cheesy annimated image while we wait for asynchronous requests to return."
+msgstr ""
+"La etiqueta <literal>&lt;a:status&gt;</literal> Ajax4JSF nos permite "
+"presentar una imagen animada mientras que esperamos el retorno de las "
+"peticiones asincrónicas."
+
+#. Tag: para
+#: Tutorial.xml:1019
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:outputPanel&gt;</literal> tag defines a region "
+"of the page which can be re-rendered by an asynchronous request."
+msgstr ""
+"La etiqueta <literal>&lt;a:outputPanel&gt;</literal> Ajax4JSF define una "
+"región de la página que se puede volver a presentar por medio de una "
+"petición asincrónica."
+
+#. Tag: para
+#: Tutorial.xml:1024
+#, no-c-format
+msgid ""
+"The Seam <literal>&lt;s:link&gt;</literal> tag lets us attach a JSF action "
+"listener to an ordinary (non-JavaScript) HTML link. The advantage of this "
+"over the standard JSF <literal>&lt;h:commandLink&gt;</literal> is that it "
+"preserves the operation of \"open in new window\" and \"open in new tab\". "
+"Also notice that we use a method binding with a parameter: <literal>#"
+"{hotelBooking.selectHotel(hot)}</literal>. This is not possible in the "
+"standard Unified EL, but Seam provides an extension to the EL that lets you "
+"use parameters on any method binding expression."
+msgstr ""
+"La etiqueta <literal>&lt;s:link&gt;</literal> Seam nos permite adjuntar un "
+"escucha de acciones JSF a un enlace HTML (no-JavaScript) común. La ventaja "
+"de este sobre el estándar <literal>&lt;h:commandLink&gt;</literal> JSF es "
+"que este preserva la operación de \"abrir en una nueva ventana\" y \"abrir "
+"en una nueva pestaña\". También observe que utilizamos un método en "
+"vinculación con un parámetro: <literal>#{hotelBooking.selectHotel(hot)}</"
+"literal>. Esto no es posible en el estándar EL unificado pero Seam "
+"proporciona una extensión al EL que le permite utilizar parámetros en "
+"cualquier expresión de vinculación de método."
+
+#. Tag: para
+#: Tutorial.xml:1031
+#, no-c-format
+msgid ""
+"This page displays the search results dynamically as we type, and lets us "
+"choose a hotel and pass it to the <literal>selectHotel()</literal> method of "
+"the <literal>HotelBookingAction</literal>, which is where the "
+"<emphasis>really</emphasis> interesting stuff is going to happen."
+msgstr ""
+"Esta página presenta los resultados de la búsqueda de manera dinámica "
+"mientras escribimos y nos permite seleccionar un hotel y pasarlo al método "
+"<literal>selectHotel()</literal> del <literal>HotelBookingAction</literal>, "
+"el cual es donde tiene lugar lo que <emphasis>realmente</emphasis> es "
+"interesante."
+
+#. Tag: para
+#: Tutorial.xml:1034
+#, no-c-format
+msgid ""
+"Now lets see how the booking example application uses a conversation-scoped "
+"stateful session bean to achieve a natural cache of persistent data related "
+"to the conversation. The following code example is pretty long. But if you "
+"think of it as a list of scripted actions that implement the various steps "
+"of the conversation, it&#39;s understandable. Read the class from top to "
+"bottom, as if it were a story."
+msgstr ""
+"Ahora vamos a ver como la aplicación del ejemplo de reserva utiliza un bean "
+"de sesión con estado con ámbito de conversación para lograr un caché natural "
+"de datos persistentes relacionados con la conversación. El siguiente ejemplo "
+"de código es bastante largo. Pero lo entenderá mejor si lo mira como una "
+"lista de acciones con scripts que implementan los variados pasos de la "
+"conversación. Lea toda la clase como si fuese una historia. "
+
+#. Tag: programlisting
+#: Tutorial.xml:1045
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"hotelBooking\")\n"
+"@Restrict(\"#{identity.loggedIn}\")\n"
+"public class HotelBookingAction implements HotelBooking\n"
+"{\n"
+"   \n"
+"   @PersistenceContext(type=EXTENDED)\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @In \n"
+"   private User user;\n"
+"   \n"
+"   @In(required=false) @Out\n"
+"   private Hotel hotel;\n"
+"   \n"
+"   @In(required=false) \n"
+"   @Out(required=false)\n"
+"   private Booking booking;\n"
+"     \n"
+"   @In\n"
+"   private FacesMessages facesMessages;\n"
+"      \n"
+"   @In\n"
+"   private Events events;\n"
+"   \n"
+"   @Logger \n"
+"   private Log log;\n"
+"   \n"
+"   @Begin\n"
+"   public String selectHotel(Hotel selectedHotel)\n"
+"   {\n"
+"      hotel = em.merge(selectedHotel);\n"
+"      return \"hotel\";\n"
+"   }\n"
+"   \n"
+"   public String bookHotel()\n"
+"   {      \n"
+"      booking = new Booking(hotel, user);\n"
+"      Calendar calendar = Calendar.getInstance();\n"
+"      booking.setCheckinDate( calendar.getTime() );\n"
+"      calendar.add(Calendar.DAY_OF_MONTH, 1);\n"
+"      booking.setCheckoutDate( calendar.getTime() );\n"
+"      \n"
+"      return \"book\";\n"
+"   }\n"
+"\n"
+"   public String setBookingDetails()\n"
+"   {\n"
+"      if (booking==null || hotel==null) return \"main\";\n"
+"      if ( !booking.getCheckinDate().before( booking.getCheckoutDate() ) )\n"
+"      {\n"
+"         facesMessages.add(\"Check out date must be later than check in date"
+"\");\n"
+"         return null;\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return \"confirm\";\n"
+"      }\n"
+"   }\n"
+"\n"
+"   @End\n"
+"   public String confirm()\n"
+"   {\n"
+"      if (booking==null || hotel==null) return \"main\";\n"
+"      em.persist(booking);\n"
+"      facesMessages.add\n"
+"       (\"Thank you, #{user.name}, your confimation number for #{hotel.name} "
+"is #{booking.id}\");\n"
+"      log.info(\"New booking: #{booking.id} for #{user.username}\");\n"
+"      events.raiseEvent(\"bookingConfirmed\");\n"
+"      return \"confirmed\";\n"
+"   }\n"
+"   \n"
+"   @End\n"
+"   public String cancel()\n"
+"   {\n"
+"      return \"main\";\n"
+"   }\n"
+"   \n"
+"   @Destroy @Remove\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+"@Stateful\n"
+"@Name(\"hotelBooking\")\n"
+"@Restrict(\"#{identity.loggedIn}\")\n"
+"public class HotelBookingAction implements HotelBooking\n"
+"{\n"
+"   \n"
+"   @PersistenceContext(type=EXTENDED)\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @In \n"
+"   private User user;\n"
+"   \n"
+"   @In(required=false) @Out\n"
+"   private Hotel hotel;\n"
+"   \n"
+"   @In(required=false) \n"
+"   @Out(required=false)\n"
+"   private Booking booking;\n"
+"     \n"
+"   @In\n"
+"   private FacesMessages facesMessages;\n"
+"      \n"
+"   @In\n"
+"   private Events events;\n"
+"   \n"
+"   @Logger \n"
+"   private Log log;\n"
+"   \n"
+"   @Begin\n"
+"   public String selectHotel(Hotel selectedHotel)\n"
+"   {\n"
+"      hotel = em.merge(selectedHotel);\n"
+"      return \"hotel\";\n"
+"   }\n"
+"   \n"
+"   public String bookHotel()\n"
+"   {      \n"
+"      booking = new Booking(hotel, user);\n"
+"      Calendar calendar = Calendar.getInstance();\n"
+"      booking.setCheckinDate( calendar.getTime() );\n"
+"      calendar.add(Calendar.DAY_OF_MONTH, 1);\n"
+"      booking.setCheckoutDate( calendar.getTime() );\n"
+"      \n"
+"      return \"book\";\n"
+"   }\n"
+"\n"
+"   public String setBookingDetails()\n"
+"   {\n"
+"      if (booking==null || hotel==null) return \"main\";\n"
+"      if ( !booking.getCheckinDate().before( booking.getCheckoutDate() ) )\n"
+"      {\n"
+"         facesMessages.add(\"Check out date must be later than check in date"
+"\");\n"
+"         return null;\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return \"confirm\";\n"
+"      }\n"
+"   }\n"
+"\n"
+"   @End\n"
+"   public String confirm()\n"
+"   {\n"
+"      if (booking==null || hotel==null) return \"main\";\n"
+"      em.persist(booking);\n"
+"      facesMessages.add\n"
+"       (\"Thank you, #{user.name}, your confimation number for #{hotel.name} "
+"is #{booking.id}\");\n"
+"      log.info(\"New booking: #{booking.id} for #{user.username}\");\n"
+"      events.raiseEvent(\"bookingConfirmed\");\n"
+"      return \"confirmed\";\n"
+"   }\n"
+"   \n"
+"   @End\n"
+"   public String cancel()\n"
+"   {\n"
+"      return \"main\";\n"
+"   }\n"
+"   \n"
+"   @Destroy @Remove\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:1048
+#, no-c-format
+msgid ""
+"This bean uses an EJB3 <emphasis>extended persistence context</emphasis>, so "
+"that any entity instances remain managed for the whole lifecycle of the "
+"stateful session bean."
+msgstr ""
+"Este bean utiliza un <emphasis>contexto de persistencia extendido</emphasis> "
+"EJB3 de modo que ninguna de las instancias de entidad permanezcan "
+"administradas durante todo el ciclo de vida del bean de sesión con estado."
+
+#. Tag: para
+#: Tutorial.xml:1053
+#, no-c-format
+msgid ""
+"The <link linkend=\"out-annotation\"><literal>@Out</literal></link> "
+"annotation declares that an attribute value is <emphasis>outjected</"
+"emphasis> to a context variable after method invocations. In this case, the "
+"context variable named <literal>hotel</literal> will be set to the value of "
+"the <literal>hotel</literal> instance variable after every action listener "
+"invocation completes."
+msgstr ""
+"La anotación <link linkend=\"out-annotation\"><literal>@Out</literal></link> "
+"declara que el valor de un atributo es <emphasis>eyectado</emphasis> a una "
+"variable de contexto después de las invocaciones del método. En este caso, "
+"la variable de contexto llamada <literal>hotel</literal> será configurada al "
+"valor de la variable instancia <literal>hotel</literal> después de que se "
+"complete toda invocación del escucha de acciones."
+
+#. Tag: para
+#: Tutorial.xml:1058
+#, no-c-format
+msgid ""
+"The <link linkend=\"begin-annotation\"><literal>@Begin</literal></link> "
+"annotation specifies that the annotated method begins a <emphasis>long-"
+"running conversation</emphasis>, so the current conversation context will "
+"not be destroyed at the end of the request. Instead, it will be reassociated "
+"with every request from the current window, and destroyed either by timeout "
+"due to conversation inactivity or invocation of a matching <literal>@End</"
+"literal> method."
+msgstr ""
+"La anotación <link linkend=\"begin-annotation\"><literal>@Begin</literal></"
+"link> especifica que el método anotado inicia una <emphasis>conversación "
+"larga</emphasis>, así que el contexto de conversación actual no será "
+"destruido al final de la petición. En cambio será reasociado con toda "
+"petición desde la ventana actual y será destruido ya sea por la desconexión "
+"por tiempo de inactividad de la conversación o por la invocación de un "
+"método <literal>@End</literal> que coincide."
+
+#. Tag: para
+#: Tutorial.xml:1063
+#, no-c-format
+msgid ""
+"The <link linkend=\"end-annotation\"><literal>@End</literal></link> "
+"annotation specifies that the annotated method ends the current long-running "
+"conversation, so the current conversation context will be destroyed at the "
+"end of the request."
+msgstr ""
+"La anotación <link linkend=\"end-annotation\"><literal>@End</literal></link> "
+"especifica que el método anotado da fin a la conversación larga así que el "
+"contexto de conversación actual será destruido al final de la petición."
+
+#. Tag: para
+#: Tutorial.xml:1068
+#, no-c-format
+msgid ""
+"This EJB remove method will be called when Seam destroys the conversation "
+"context. Don&#39;t ever forget to define this method!"
+msgstr ""
+"El método de eliminación EJB será llamado cuando Seam destruya el contexto "
+"de la conversación. ¡Nunca olvide definir este método! "
+
+#. Tag: para
+#: Tutorial.xml:1075
+#, no-c-format
+msgid ""
+"<literal>HotelBookingAction</literal> contains all the action listener "
+"methods that implement selection, booking and booking confirmation, and "
+"holds state related to this work in its instance variables. We think you&#39;"
+"ll agree that this code is much cleaner and simpler than getting and setting "
+"<literal>HttpSession</literal> attributes."
+msgstr ""
+"<literal>HotelBookingAction</literal> contiene todos los métodos de escucha "
+"de acciones que implementan la selección, haciendo reservas, confirmándolas "
+"y también mantiene el estado relacionado con este trabajo en sus variables "
+"de instancia. Pensamos que usted va a estar de acuerdo en que este código es "
+"mucho más limpio y simple que el obtener y configurar atributos "
+"<literal>HttpSession</literal>. "
+
+#. Tag: para
+#: Tutorial.xml:1078
+#, no-c-format
+msgid ""
+"Even better, a user can have multiple isolated conversations per login "
+"session. Try it! Log in, run a search, and navigate to different hotel pages "
+"in multiple browser tabs. You&#39;ll be able to work on creating two "
+"different hotel reservations at the same time. If you leave any one "
+"conversation inactive for long enough, Seam will eventually time out that "
+"conversation and destroy its state. If, after ending a conversation, you "
+"backbutton to a page of that conversation and try to perform an action, Seam "
+"will detect that the conversation was already ended, and redirect you to the "
+"search page."
+msgstr ""
+"Aún mejor, un usuario puede tener múltiples conversaciones aisladas con cada "
+"inicio de sesión. ¡Inténtelo! Inicie una sesión, ejecute una búsqueda y "
+"navegue diferentes páginas de hoteles en múltiples pestañas del navegador. "
+"Podrá crear dos reservaciones de hotel diferentes al mismo tiempo. Si deja "
+"una de las conversaciones inactiva por cierto tiempo , Seam eventualmente "
+"dará fin a la conversación cuando el tiempo expire y destruirá su estado. Si "
+"después de dar fin a la conversación utiliza el botón de regreso en una "
+"página de esa conversación y si trata de realizar una acción, Seam detectará "
+"que esa conversación ya se terminó y le redireccionará a la página de "
+"búsqueda. "
+
+#. Tag: title
+#: Tutorial.xml:1084
+#, no-c-format
+msgid "The Seam UI control library"
+msgstr "La biblioteca de control UI de Seam"
+
+#. Tag: para
+#: Tutorial.xml:1085
+#, no-c-format
+msgid ""
+"If you check inside the WAR file for the booking application, you&#39;ll "
+"find <literal>seam-ui.jar</literal> in the <literal>WEB-INF/lib</literal> "
+"directory. This package contains a number of JSF custom controls that "
+"integrate with Seam. The booking application uses the <literal>&lt;s:link&gt;"
+"</literal> control for navigation from the search screen to the hotel page:"
+msgstr ""
+"Si chequea dentro del archivo WAR de la aplicación para realizar "
+"reservaciones encontrará <literal>seam-ui.jar</literal> en el directorio "
+"<literal>WEB-INF/lib</literal>. Este paquete contiene un número de controles "
+"personalizados JSF que se integran con Seam. La aplicación de las reservas "
+"utiliza el control <literal>&lt;s:link&gt;</literal> para la navegación "
+"desde la pantalla de búsqueda hasta la página del hotel: "
+
+#. Tag: programlisting
+#: Tutorial.xml:1088
+#, no-c-format
+msgid ""
+"&lt;s:link value=\"View Hotel\" action=\"#{hotelBooking.selectHotel}\"/&gt;"
+msgstr ""
+"&lt;s:link value=\"View Hotel\" action=\"#{hotelBooking.selectHotel}\"/&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1089
+#, no-c-format
+msgid ""
+"The use of <literal>&lt;s:link&gt;</literal> here allows us to attach an "
+"action listener to a HTML link without breaking the browser&#39;s \"open in "
+"new window\" feature. The standard JSF <literal>&lt;h:commandLink&gt;</"
+"literal> does not work with \"open in new window\". We&#39;ll see later that "
+"<literal>&lt;s:link&gt;</literal> also offers a number of other useful "
+"features, including conversation propagation rules."
+msgstr ""
+"El uso de <literal>&lt;s:link&gt;</literal> aquí nos permite adjuntar un "
+"escucha de acciones a un enlace HTML sin dañar la característica del "
+"navegador \"abrir en una nueva ventana\". El estándar JSF <literal>&lt;h:"
+"commandLink&gt;</literal> no funciona con \"abrir en una nueva ventana\". "
+"Veremos más adelante que <literal>&lt;s:link&gt;</literal> también ofrece "
+"otras características bastante útiles, incluyendo las reglas de propagación "
+"de conversación. "
+
+#. Tag: para
+#: Tutorial.xml:1092
+#, no-c-format
+msgid ""
+"The booking application uses some other Seam and Ajax4JSF controls, "
+"especially on the <literal>/book.xhtml</literal> page. We won&#39;t get into "
+"the details of those controls here, but if you want to understand this code, "
+"please refer to the chapter covering Seam&#39;s functionality for JSF form "
+"validation."
+msgstr ""
+"La aplicación de las reservas utiliza otros controles Ajax4JSF y Seam, "
+"especialmente en la página <literal>/book.xhtml</literal>. No vamos a ver "
+"los detalles de esos controles aquí pero si quiere comprender este código "
+"consulte el capítulo que aborda la funcionalidad de Seam para la validación "
+"de forma JSF. "
+
+#. Tag: title
+#: Tutorial.xml:1098
+#, no-c-format
+msgid "The Seam Debug Page"
+msgstr "La página de depuración de Seam"
+
+#. Tag: para
+#: Tutorial.xml:1099
+#, no-c-format
+msgid ""
+"The WAR also includes <literal>seam-debug.jar</literal>. If this jar is "
+"deployed in <literal>WEB-INF/lib</literal>, along with the Facelets, and if "
+"you set the following Seam property in <literal>web.xml</literal> or "
+"<literal>seam.properties</literal>:"
+msgstr ""
+"El WAR también incluye <literal>seam-debug.jar</literal>. Si este jar se "
+"despliega en <literal>WEB-INF/lib</literal> junto con los Facelets y si "
+"configura la siguiente propiedad Seam en <literal>web.xml</literal> o "
+"<literal>seam.properties</literal>:"
+
+#. Tag: programlisting
+#: Tutorial.xml:1102
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;org.jboss.seam.core.init.debug&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;true&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;org.jboss.seam.core.init.debug&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;true&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1103
+#, no-c-format
+msgid ""
+"Then the Seam debug page will be available. This page lets you browse and "
+"inspect the Seam components in any of the Seam contexts associated with your "
+"current login session. Just point your browser at <ulink url=\"http://"
+"localhost:8080/seam-booking/debug.seam\"><literal>http://localhost:8080/seam-"
+"booking/debug.seam</literal></ulink>."
+msgstr ""
+"Después la página de depuración de Seam estará disponible. Esta página le "
+"permite navegar e inspeccionar los componentes Seam en cualquiera de los "
+"contextos asociados con su sesión actual. Dirijase a <ulink url=\"http://"
+"localhost:8080/seam-booking/debug.seam\"><literal>http://localhost:8080/seam-"
+"booking/debug.seam</literal></ulink>."
+
+#. Tag: title
+#: Tutorial.xml:1119
+#, no-c-format
+msgid "A complete application featuring Seam and jBPM: the DVD Store example"
+msgstr ""
+"Una aplicación completa que cuenta con Seam y jBPM: el ejemplo de la tienda "
+"de DVDs"
+
+#. Tag: para
+#: Tutorial.xml:1120
+#, no-c-format
+msgid ""
+"The DVD Store demo application shows the practical usage of jBPM for both "
+"task management and pageflow."
+msgstr ""
+"La aplicación de demostración de la tienda de DVDs muestra el uso práctico "
+"de jBPM tanto para la administración de tareas como para el flujo de páginas."
+
+#. Tag: para
+#: Tutorial.xml:1123
+#, no-c-format
+msgid ""
+"The user screens take advantage of a jPDL pageflow to implement searching "
+"and shopping cart functionality."
+msgstr ""
+"Las pantallas del usuario toman ventaja de un flujo de página jPDL para "
+"poder implementar las funcionalidades de búsqueda y el carro de compras."
+
+#. Tag: screeninfo
+#: Tutorial.xml:1126 Tutorial.xml:1137 Tutorial.xml:1163
+#, no-c-format
+msgid "DVD Store example"
+msgstr "Ejemplo de la tienda de DVDs"
+
+#. Tag: para
+#: Tutorial.xml:1134
+#, no-c-format
+msgid ""
+"The administration screens take use jBPM to manage the approval and shipping "
+"cycle for orders. The business process may even be changed dynamically, by "
+"selecting a different process definition!"
+msgstr ""
+"Las pantallas de administración toman el uso de jBPM para administrar la "
+"aprobación y el ciclo de envío de las órdenes. Incluso se puede cambiar "
+"dinámicamente el proceso empresarial seleccionando ¡una definición de "
+"proceso diferente!"
+
+#. Tag: para
+#: Tutorial.xml:1148
+#, no-c-format
+msgid "Look in the <literal>dvdstore</literal> directory."
+msgstr "Mire en el directorio <literal>dvdstore</literal>."
+
+#. Tag: title
+#: Tutorial.xml:1154
+#, no-c-format
+msgid ""
+"A complete application featuring Seam workspace management: the Issue "
+"Tracker example"
+msgstr ""
+"Una aplicación completa que presenta la administración del espacio de "
+"trabajo de Seam: el ejemplo del rastreador de publicaciones"
+
+#. Tag: para
+#: Tutorial.xml:1155
+#, no-c-format
+msgid ""
+"The Issue Tracker demo shows off Seam&#39;s workspace management "
+"functionality: the conversation switcher, conversation list and breadcrumbs."
+msgstr ""
+"La demostración del rastreador de publicaciones resalta la funcionalidad de "
+"administración del espacio de trabajo Seam: el interruptor de "
+"conversaciones, la lista de conversaciones y los caminos de navegación. "
+
+#. Tag: para
+#: Tutorial.xml:1160
+#, no-c-format
+msgid ""
+"To log into the Issue Tracker demo you must provide a username and password. "
+"You can find this in the <filename>resources/import.sql</filename> file or "
+"use \"gavin\" and \"foobar\" for username and password respectively."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1174
+#, no-c-format
+msgid "Look in the <literal>issues</literal> directory."
+msgstr "Mire en el directorio <literal>issues</literal>."
+
+#. Tag: title
+#: Tutorial.xml:1180
+#, no-c-format
+msgid "An example of Seam with Hibernate: the Hibernate Booking example"
+msgstr ""
+"Un ejemplo de Seam con Hibernate: el ejemplo de las reservaciones con "
+"Hibernate"
+
+#. Tag: para
+#: Tutorial.xml:1181
+#, no-c-format
+msgid ""
+"The Hibernate Booking demo is a straight port of the Booking demo to an "
+"alternative architecture that uses Hibernate for persistence and JavaBeans "
+"instead of session beans."
+msgstr ""
+"La demostración de las reservaciones con Hibernate es una parte muy simple "
+"de la demostración de una arquitectura alterna que utiliza Hibernate para "
+"persistencia y JavaBeans en vez de beans de sesión."
+
+#. Tag: para
+#: Tutorial.xml:1187
+#, no-c-format
+msgid "Look in the <literal>hibernate</literal> directory."
+msgstr "Mire en el directorio <literal>hibernate</literal>."
+
+#. Tag: title
+#: Tutorial.xml:1193
+#, no-c-format
+msgid "A RESTful Seam application: the Blog example"
+msgstr "Una aplicación Seam RESTful: el ejemplo del blog"
+
+#. Tag: para
+#: Tutorial.xml:1194
+#, no-c-format
+msgid ""
+"Seam makes it very easy to implement applications which keep state on the "
+"server-side. However, server-side state is not always appropriate, "
+"especially in for functionality that serves up <emphasis>content</emphasis>. "
+"For this kind of problem we often need to let the user bookmark pages and "
+"have a relatively stateless server, so that any page can be accessed at any "
+"time, via the bookmark. The Blog example shows how to a implement RESTful "
+"application using Seam. Every page of the application can be bookmarked, "
+"including the search results page."
+msgstr ""
+"Seam facilita la implementación de aplicaciones que mantienen el estado en "
+"el lado del servidor. Sin embargo, el estado del lado del servidor no "
+"siempre es apropiado, especialmente para la funcionalidad que sirve el "
+"<emphasis>contenido</emphasis>. Para esta clase de problema con frecuencia "
+"necesitamos dejar al usuario que incluya las páginas dentro de sus favoritos "
+"y al mismo tiempo contar con un servidor relativamente sin estado de modo "
+"que se pueda acceder cualquier página en cualquier momento por medio de sus "
+"favoritos. El ejemplo del blog muestra como implementar una aplicación "
+"RESTful utilizando Seam. Toda página de la aplicación se puede incluir bajo "
+"sus favoritos incluyendo la página de resultados de búsqueda."
+
+#. Tag: screeninfo
+#: Tutorial.xml:1197
+#, no-c-format
+msgid "Blog example"
+msgstr "Ejemplo del blog"
+
+#. Tag: para
+#: Tutorial.xml:1205
+#, no-c-format
+msgid ""
+"The Blog example demonstrates the use of \"pull\"-style MVC, where instead "
+"of using action listener methods to retrieve data and prepare the data for "
+"the view, the view pulls data from components as it is being rendered."
+msgstr ""
+"El ejemplo del blog demuestra el uso del estilo \"pull\" MVC, en donde en "
+"vez de utilizar métodos de escucha de acciones para recuperar datos y "
+"prepararlos para la vista, al presentarse la vista se toman los datos de los "
+"componentes."
+
+#. Tag: title
+#: Tutorial.xml:1209
+#, no-c-format
+msgid "Using \"pull\"-style MVC"
+msgstr "Uso del estilo \"pull\" MVC"
+
+#. Tag: para
+#: Tutorial.xml:1210
+#, no-c-format
+msgid ""
+"This snippet from the <literal>index.xhtml</literal> facelets page displays "
+"a list of recent blog entries:"
+msgstr ""
+"El pedazo de la página facelets <literal>index.xhtml</literal> presenta una "
+"lista de entradas blog recientes:"
+
+#. Tag: programlisting
+#: Tutorial.xml:1213
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{blog.recentBlogEntries}\" var=\"blogEntry\" rows="
+"\"3\"&gt;\n"
+"   &lt;h:column&gt;\n"
+"      &lt;div class=\"blogEntry\"&gt;\n"
+"         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"         &lt;div&gt;\n"
+"            &lt;h:outputText escape=\"false\" \n"
+"                  value=\"#{blogEntry.excerpt==null ? blogEntry.body : "
+"blogEntry.excerpt}\"/&gt;\n"
+"         &lt;/div&gt;\n"
+"         &lt;p&gt;\n"
+"            &lt;h:outputLink value=\"entry.seam\" rendered=\"#{blogEntry."
+"excerpt!=null}\"&gt;\n"
+"               &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/"
+"&gt;\n"
+"               Read more...\n"
+"            &lt;/h:outputLink&gt;\n"
+"         &lt;/p&gt;\n"
+"         &lt;p&gt;\n"
+"            [Posted on \n"
+"            &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"               &lt;f:convertDateTime timeZone=\"#{blog.timeZone}\" locale=\"#"
+"{blog.locale}\" \n"
+"                                     type=\"both\"/&gt;\n"
+"            &lt;/h:outputText&gt;]\n"
+"            &#160;\n"
+"            &lt;h:outputLink value=\"entry.seam\"&gt;[Link]\n"
+"               &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/"
+"&gt;\n"
+"            &lt;/h:outputLink&gt;\n"
+"         &lt;/p&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+"&lt;h:dataTable value=\"#{blog.recentBlogEntries}\" var=\"blogEntry\" rows="
+"\"3\"&gt;\n"
+"   &lt;h:column&gt;\n"
+"      &lt;div class=\"blogEntry\"&gt;\n"
+"         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"         &lt;div&gt;\n"
+"            &lt;h:outputText escape=\"false\" \n"
+"                  value=\"#{blogEntry.excerpt==null ? blogEntry.body : "
+"blogEntry.excerpt}\"/&gt;\n"
+"         &lt;/div&gt;\n"
+"         &lt;p&gt;\n"
+"            &lt;h:outputLink value=\"entry.seam\" rendered=\"#{blogEntry."
+"excerpt!=null}\"&gt;\n"
+"               &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/"
+"&gt;\n"
+"               Read more...\n"
+"            &lt;/h:outputLink&gt;\n"
+"         &lt;/p&gt;\n"
+"         &lt;p&gt;\n"
+"            [Posted on \n"
+"            &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"               &lt;f:convertDateTime timeZone=\"#{blog.timeZone}\" locale=\"#"
+"{blog.locale}\" \n"
+"                                     type=\"both\"/&gt;\n"
+"            &lt;/h:outputText&gt;]\n"
+"            &#160;\n"
+"            &lt;h:outputLink value=\"entry.seam\"&gt;[Link]\n"
+"               &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/"
+"&gt;\n"
+"            &lt;/h:outputLink&gt;\n"
+"         &lt;/p&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1214
+#, no-c-format
+msgid ""
+"If we navigate to this page from a bookmark, how does the data used by the "
+"<literal>&lt;h:dataTable&gt;</literal> actually get initialized? Well, what "
+"happens is that the <literal>Blog</literal> is retrieved lazily&mdash;"
+"\"pulled\"&mdash;when needed, by a Seam component named <literal>blog</"
+"literal>. This is the opposite flow of control to what is usual in "
+"traditional web action-based frameworks like Struts."
+msgstr ""
+"Si navegamos a esta página desde sus favoritos ¿cómo se inicializan los "
+"datos que <literal>&lt;h:dataTable&gt;</literal> utiliza? Pues bien lo que "
+"pasa es que el <literal>Blog</literal> es recuperado de manera lenta y un "
+"componente llamado <literal>blog</literal> &mdash;\"lo saca\"&mdash; cuando "
+"se necesita. Esto es lo opuesto a lo que usualmente pasa en los marcos de "
+"trabajo con base en acciones web tradicionales tal como Struts."
+
+#. Tag: programlisting
+#: Tutorial.xml:1222
+#, no-c-format
+msgid ""
+"@Name(\"blog\")\n"
+"@Scope(ScopeType.STATELESS)\n"
+"public class BlogService \n"
+"{\n"
+"   \n"
+"   @In\n"
+"   private EntityManager entityManager;\n"
+"  \n"
+"   @Unwrap\n"
+"   public Blog getBlog()\n"
+"   {\n"
+"      return (Blog) entityManager.createQuery(\"from Blog b left join fetch "
+"b.blogEntries\")\n"
+"            .setHint(\"org.hibernate.cacheable\", true)\n"
+"            .getSingleResult();\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+"@Name(\"blog\")\n"
+"@Scope(ScopeType.STATELESS)\n"
+"public class BlogService \n"
+"{\n"
+"   \n"
+"   @In\n"
+"   private EntityManager entityManager;\n"
+"  \n"
+"   @Unwrap\n"
+"   public Blog getBlog()\n"
+"   {\n"
+"      return (Blog) entityManager.createQuery(\"from Blog b left join fetch "
+"b.blogEntries\")\n"
+"            .setHint(\"org.hibernate.cacheable\", true)\n"
+"            .getSingleResult();\n"
+"   }\n"
+"\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:1225
+#, no-c-format
+msgid ""
+"This component uses a <emphasis>seam-managed persistence context</emphasis>. "
+"Unlike the other examples we&#39;ve seen, this persistence context is "
+"managed by Seam, instead of by the EJB3 container. The persistence context "
+"spans the entire web request, allowing us to avoid any exceptions that occur "
+"when accessing unfetched associations in the view."
+msgstr ""
+"Este componente utiliza un <emphasis>contexto de persistencia administrado "
+"por seam</emphasis>. De manera opuesta a lo que hemos visto en los otros "
+"ejemplos, Seam administra este contexto de persistencia y no el contenedor "
+"EJB3. El contexto de persistencia abarca la petición web entera "
+"permitiéndonos evitar cualquier excepción que ocurra al acceder a "
+"asociaciones no buscadas en la vista. "
+
+#. Tag: para
+#: Tutorial.xml:1230
+#, no-c-format
+msgid ""
+"The <literal>@Unwrap</literal> annotation tells Seam to provide the return "
+"value of the method&mdash;the <literal>Blog</literal>&mdash;instead of the "
+"actual <literal>BlogService</literal> component to clients. This is the Seam "
+"<emphasis>manager component pattern</emphasis>."
+msgstr ""
+"La anotación <literal>@Unwrap</literal> le dice a Seam que proporcione el "
+"valor de retorno del método &mdash;el <literal>Blog</literal>&mdash; en vez "
+"del componente <literal>BlogService</literal> real a los clientes. Este es "
+"el <emphasis>patrón de componentes de administración</emphasis> Seam."
+
+#. Tag: para
+#: Tutorial.xml:1237
+#, no-c-format
+msgid ""
+"This is good so far, but what about bookmarking the result of form "
+"submissions, such as a search results page?"
+msgstr ""
+"Hasta ahora todo bien, pero y si incluimos los resultados dentro de los "
+"favoritos ¿por ejemplo la página de resultados de una búsqueda?"
+
+#. Tag: title
+#: Tutorial.xml:1243
+#, no-c-format
+msgid "Bookmarkable search results page"
+msgstr "Página de resultados de búsqueda incluida entre sus favoritos"
+
+#. Tag: para
+#: Tutorial.xml:1244
+#, no-c-format
+msgid ""
+"The blog example has a tiny form in the top right of each page that allows "
+"the user to search for blog entries. This is defined in a file, "
+"<literal>menu.xhtml</literal>, included by the facelets template, "
+"<literal>template.xhtml</literal>:"
+msgstr ""
+"El ejemplo del blog tiene un pequeño formulario en la parte superior derecha "
+"de cada página que le permite al usuario buscar entradas blog. Esto se "
+"define en un archivo, <literal>menu.xhtml</literal>, incluído por la "
+"plantilla facelets, <literal>template.xhtml</literal>:"
+
+#. Tag: programlisting
+#: Tutorial.xml:1247
+#, no-c-format
+msgid ""
+"&lt;div id=\"search\"&gt;\n"
+"   &lt;h:form&gt;\n"
+"      &lt;h:inputText value=\"#{searchAction.searchPattern}\"/&gt;\n"
+"      &lt;h:commandButton value=\"Search\" action=\"/search.xhtml\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+"&lt;div id=\"search\"&gt;\n"
+"   &lt;h:form&gt;\n"
+"      &lt;h:inputText value=\"#{searchAction.searchPattern}\"/&gt;\n"
+"      &lt;h:commandButton value=\"Search\" action=\"/search.xhtml\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/div&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1248
+#, no-c-format
+msgid ""
+"To implement a bookmarkable search results page, we need to perform a "
+"browser redirect after processing the search form submission. Because we "
+"used the JSF view id as the action outcome, Seam automatically redirects to "
+"the view id when the form is submitted. Alternatively, we could have defined "
+"a navigation rule like this:"
+msgstr ""
+"Para implementar una página de resultados de búsqueda que se encuentra "
+"dentro de sus favoritos necesitamos redireccionar el navegador después de "
+"procesar el formulario de búsqueda. Ya que utilizamos el id de vista JSF "
+"como la salida de acción, Seam redirecciona automáticamente al id de vista "
+"cuando se presenta el formulario. De otra manera, podríamos haber definido "
+"una regla de navegación como esta:"
+
+#. Tag: programlisting
+#: Tutorial.xml:1251
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"   &lt;navigation-case&gt;\n"
+"      &lt;from-outcome&gt;searchResults&lt;/from-outcome&gt;\n"
+"      &lt;to-view-id&gt;/search.xhtml&lt;/to-view-id&gt;\n"
+"      &lt;redirect/&gt;\n"
+"   &lt;/navigation-case&gt;\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+"&lt;navigation-rule&gt;\n"
+"   &lt;navigation-case&gt;\n"
+"      &lt;from-outcome&gt;searchResults&lt;/from-outcome&gt;\n"
+"      &lt;to-view-id&gt;/search.xhtml&lt;/to-view-id&gt;\n"
+"      &lt;redirect/&gt;\n"
+"   &lt;/navigation-case&gt;\n"
+"&lt;/navigation-rule&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1252
+#, no-c-format
+msgid "Then the form would have looked like this:"
+msgstr "La forma se vería así: "
+
+#. Tag: programlisting
+#: Tutorial.xml:1255
+#, no-c-format
+msgid ""
+"&lt;div id=\"search\"&gt;\n"
+"   &lt;h:form&gt;\n"
+"      &lt;h:inputText value=\"#{searchAction.searchPattern}\"/&gt;\n"
+"      &lt;h:commandButton value=\"Search\" action=\"searchResults\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+"&lt;div id=\"search\"&gt;\n"
+"   &lt;h:form&gt;\n"
+"      &lt;h:inputText value=\"#{searchAction.searchPattern}\"/&gt;\n"
+"      &lt;h:commandButton value=\"Search\" action=\"searchResults\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/div&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1256
+#, no-c-format
+msgid ""
+"But when we redirect, we need to include the values submitted with the form "
+"as request parameters, to get a bookmarkable URL like <literal>http://"
+"localhost:8080/seam-blog/search.seam?searchPattern=seam</literal>. JSF does "
+"not provide an easy way to do this, but Seam does. We use a Seam "
+"<emphasis>page parameter</emphasis>, defined in <literal>WEB-INF/pages.xml</"
+"literal>:"
+msgstr ""
+"Pero cuando redireccionamos necesitamos incluir los valores que se "
+"presentaron con el formulario como parámetros de petición para obtener una "
+"URL que se pueda incluir dentro de los favoritos como <literal>http://"
+"localhost:8080/seam-blog/search.seam?searchPattern=seam</literal>. JSF no "
+"proporciona una manera fácil de hacer esto, pero Seam sí. Utilizamos un "
+"<emphasis>parámetro de página</emphasis> Seam definido en <literal>WEB-INF/"
+"pages.xml</literal>:"
+
+#. Tag: programlisting
+#: Tutorial.xml:1259
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   &lt;page view-id=\"/search.xhtml\"&gt;\n"
+"      &lt;param name=\"searchPattern\" value=\"#{searchService.searchPattern}"
+"\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"   &lt;page view-id=\"/search.xhtml\"&gt;\n"
+"      &lt;param name=\"searchPattern\" value=\"#{searchService.searchPattern}"
+"\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   ...\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1260
+#, no-c-format
+msgid ""
+"This tells Seam to include the value of <literal>#{searchService."
+"searchPattern}</literal> as a request parameter named "
+"<literal>searchPattern</literal> when redirecting to the page, and then re-"
+"apply the value of that parameter to the model before rendering the page."
+msgstr ""
+"Esto le dice a Seam que incluya el valor de <literal>#{searchService."
+"searchPattern}</literal> como un parámetro de petición llamado "
+"<literal>searchPattern</literal> al redireccionar a la página y después re-"
+"aplicar el valor de ese parámetro al modelo antes de presentar la página."
+
+#. Tag: para
+#: Tutorial.xml:1263
+#, no-c-format
+msgid "The redirect takes us to the <literal>search.xhtml</literal> page:"
+msgstr "La redirección nos toma a la página <literal>search.xhtml</literal>:"
+
+#. Tag: programlisting
+#: Tutorial.xml:1266
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{searchResults}\" var=\"blogEntry\"&gt;\n"
+"   &lt;h:column&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:outputLink value=\"entry.seam\"&gt;\n"
+"            &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"            #{blogEntry.title}\n"
+"         &lt;/h:outputLink&gt;\n"
+"         posted on \n"
+"         &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"            &lt;f:convertDateTime timeZone=\"#{blog.timeZone}\" locale=\"#"
+"{blog.locale}\" type=\"both\"/&gt;\n"
+"         &lt;/h:outputText&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+"&lt;h:dataTable value=\"#{searchResults}\" var=\"blogEntry\"&gt;\n"
+"   &lt;h:column&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:outputLink value=\"entry.seam\"&gt;\n"
+"            &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"            #{blogEntry.title}\n"
+"         &lt;/h:outputLink&gt;\n"
+"         posted on \n"
+"         &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"            &lt;f:convertDateTime timeZone=\"#{blog.timeZone}\" locale=\"#"
+"{blog.locale}\" type=\"both\"/&gt;\n"
+"         &lt;/h:outputText&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1267
+#, no-c-format
+msgid ""
+"Which again uses \"pull\"-style MVC to retrieve the actual search results:"
+msgstr ""
+"Que de nuevo utiliza un MVC de estilo \"pull\" para recuperar los resultados "
+"de la búsqueda real:"
+
+#. Tag: programlisting
+#: Tutorial.xml:1270
+#, no-c-format
+msgid ""
+"@Name(\"searchService\")\n"
+"public class SearchService \n"
+"{\n"
+"   \n"
+"   @In\n"
+"   private EntityManager entityManager;\n"
+"   \n"
+"   private String searchPattern;\n"
+"   \n"
+"   @Factory(\"searchResults\")\n"
+"   public List&lt;BlogEntry&gt; getSearchResults()\n"
+"   {\n"
+"      if (searchPattern==null)\n"
+"      {\n"
+"         return null;\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return entityManager.createQuery(\"select be from BlogEntry be "
+"where lower(be.title) \n"
+"                               like :searchPattern or lower(be.body) like :"
+"searchPattern \n"
+"                               order by be.date desc\")\n"
+"               .setParameter( \"searchPattern\", getSqlSearchPattern() )\n"
+"               .setMaxResults(100)\n"
+"               .getResultList();\n"
+"      }\n"
+"   }\n"
+"\n"
+"   private String getSqlSearchPattern()\n"
+"   {\n"
+"      return searchPattern==null ? \"\" : &#39;%&#39; + \n"
+"        searchPattern.toLowerCase().replace(&#39;*&#39;, &#39;%&#39;).replace"
+"(&#39;?&#39;, &#39;_&#39;) \n"
+"           + &#39;%&#39;;\n"
+"   }\n"
+"\n"
+"   public String getSearchPattern()\n"
+"   {\n"
+"      return searchPattern;\n"
+"   }\n"
+"\n"
+"   public void setSearchPattern(String searchPattern)\n"
+"   {\n"
+"      this.searchPattern = searchPattern;\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+"@Name(\"searchService\")\n"
+"public class SearchService \n"
+"{\n"
+"   \n"
+"   @In\n"
+"   private EntityManager entityManager;\n"
+"   \n"
+"   private String searchPattern;\n"
+"   \n"
+"   @Factory(\"searchResults\")\n"
+"   public List&lt;BlogEntry&gt; getSearchResults()\n"
+"   {\n"
+"      if (searchPattern==null)\n"
+"      {\n"
+"         return null;\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return entityManager.createQuery(\"select be from BlogEntry be "
+"where lower(be.title) \n"
+"                               like :searchPattern or lower(be.body) like :"
+"searchPattern \n"
+"                               order by be.date desc\")\n"
+"               .setParameter( \"searchPattern\", getSqlSearchPattern() )\n"
+"               .setMaxResults(100)\n"
+"               .getResultList();\n"
+"      }\n"
+"   }\n"
+"\n"
+"   private String getSqlSearchPattern()\n"
+"   {\n"
+"      return searchPattern==null ? \"\" : &#39;%&#39; + \n"
+"        searchPattern.toLowerCase().replace(&#39;*&#39;, &#39;%&#39;).replace"
+"(&#39;?&#39;, &#39;_&#39;) \n"
+"           + &#39;%&#39;;\n"
+"   }\n"
+"\n"
+"   public String getSearchPattern()\n"
+"   {\n"
+"      return searchPattern;\n"
+"   }\n"
+"\n"
+"   public void setSearchPattern(String searchPattern)\n"
+"   {\n"
+"      this.searchPattern = searchPattern;\n"
+"   }\n"
+"\n"
+"}"
+
+#. Tag: title
+#: Tutorial.xml:1275
+#, no-c-format
+msgid "Using \"push\"-style MVC in a RESTful application"
+msgstr "Uso de MVC de estilo \"push\" en una aplicación RESTful"
+
+#. Tag: para
+#: Tutorial.xml:1276
+#, no-c-format
+msgid ""
+"Very occasionally, it makes more sense to use push-style MVC for processing "
+"RESTful pages, and so Seam provides the notion of a <emphasis>page action</"
+"emphasis>. The Blog example uses a page action for the blog entry page, "
+"<literal>entry.xhtml</literal>. Note that this is a little bit contrived, it "
+"would have been easier to use pull-style MVC here as well."
+msgstr ""
+"Muy ocasionalmente tiene más sentido utilizar MVC de estilo push para el "
+"procesamiento de páginas RESTful y por lo tanto Seam proporciona la noción "
+"de una <emphasis>acción de página</emphasis>. El ejemplo del blog utiliza "
+"una acción de página para la página de entrada del blog, <literal>entry."
+"xhtml</literal>. Observe que esto es un poco fabricado, también hubiese sido "
+"más fácil utilizar MVC de estilo pull."
+
+#. Tag: para
+#: Tutorial.xml:1279
+#, no-c-format
+msgid ""
+"The <literal>entryAction</literal> component works much like an action class "
+"in a traditional push-MVC action-oriented framework like Struts:"
+msgstr ""
+"El componente <literal>entryAction</literal> funciona de manera muy similar "
+"que una clase de acción en un marco tradicional de trabajo orientado a la "
+"acción MVC de estilo push como Struts: "
+
+#. Tag: programlisting
+#: Tutorial.xml:1282
+#, no-c-format
+msgid ""
+"@Name(\"entryAction\")\n"
+"@Scope(STATELESS)\n"
+"public class EntryAction\n"
+"{\n"
+"   @In(create=true) \n"
+"   private Blog blog;\n"
+"   \n"
+"   @Out\n"
+"   private BlogEntry blogEntry;\n"
+"   \n"
+"   public void loadBlogEntry(String id) throws EntryNotFoundException\n"
+"   {\n"
+"      blogEntry = blog.getBlogEntry(id);\n"
+"      if (blogEntry==null) throw new EntryNotFoundException(id);\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+"@Name(\"entryAction\")\n"
+"@Scope(STATELESS)\n"
+"public class EntryAction\n"
+"{\n"
+"   @In(create=true) \n"
+"   private Blog blog;\n"
+"   \n"
+"   @Out\n"
+"   private BlogEntry blogEntry;\n"
+"   \n"
+"   public void loadBlogEntry(String id) throws EntryNotFoundException\n"
+"   {\n"
+"      blogEntry = blog.getBlogEntry(id);\n"
+"      if (blogEntry==null) throw new EntryNotFoundException(id);\n"
+"   }\n"
+"   \n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:1283
+#, no-c-format
+msgid "Page actions are also declared in <literal>pages.xml</literal>:"
+msgstr ""
+"Las acciones de página también se declaran en <literal>pages.xml</literal>:"
+
+#. Tag: programlisting
+#: Tutorial.xml:1286
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   ...\n"
+"\n"
+"   &lt;page view-id=\"/entry.xhtml\" action=\"#{entryAction.loadBlogEntry"
+"(blogEntry.id)}\"&gt;\n"
+"      &lt;param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"\n"
+"   &lt;page view-id=\"/post.xhtml\" action=\"#{loginAction.challenge}\"/"
+"&gt;\n"
+"\n"
+"   &lt;page view-id=\"*\" action=\"#{blog.hitCount.hit}\"/&gt;\n"
+"\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"   ...\n"
+"\n"
+"   &lt;page view-id=\"/entry.xhtml\" action=\"#{entryAction.loadBlogEntry"
+"(blogEntry.id)}\"&gt;\n"
+"      &lt;param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"\n"
+"   &lt;page view-id=\"/post.xhtml\" action=\"#{loginAction.challenge}\"/"
+"&gt;\n"
+"\n"
+"   &lt;page view-id=\"*\" action=\"#{blog.hitCount.hit}\"/&gt;\n"
+"\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1287
+#, no-c-format
+msgid ""
+"Notice that the example is using page actions for some other "
+"functionality&mdash;the login challenge, and the pageview counter. Also "
+"notice the use of a parameter in the page action method binding. This is not "
+"a standard feature of JSF EL, but Seam lets you use it, not just for page "
+"actions, but also in JSF method bindings."
+msgstr ""
+"Observe que el ejemplo está utilizando acciones de página para otras "
+"funcionalidades &mdash; las peticiones de inicio de sesión y el contador de "
+"vistas de página. Observe también el uso de un parámetro en la vinculación "
+"de métodos de acciones de página. Esta no es una característica estándar de "
+"JSF EL pero Seam le permite utilizarla no sólo para acciones de página sino "
+"también en vínculos de métodos JSF."
+
+#. Tag: para
+#: Tutorial.xml:1290
+#, no-c-format
+msgid ""
+"When the <literal>entry.xhtml</literal> page is requested, Seam first binds "
+"the page parameter <literal>blogEntryId</literal> to the model, then runs "
+"the page action, which retrieves the needed data&mdash;the "
+"<literal>blogEntry</literal>&mdash;and places it in the Seam event context. "
+"Finally, the following is rendered:"
+msgstr ""
+"Cuando se solicita la página <literal>entry.xhtml</literal>, Seam primero "
+"vincula el parámetro de página <literal>blogEntryId</literal> al modelo y "
+"después ejecuta la acción de página, la cual recupera los datos necesarios - "
+"el <literal>blogEntry</literal>&mdash; y lo pone en el contexto de eventos "
+"Seam. Finalmente se entrega lo siguiente: "
+
+#. Tag: programlisting
+#: Tutorial.xml:1293
+#, no-c-format
+msgid ""
+"&lt;div class=\"blogEntry\"&gt;\n"
+"   &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"   &lt;div&gt;\n"
+"      &lt;h:outputText escape=\"false\" value=\"#{blogEntry.body}\"/&gt;\n"
+"   &lt;/div&gt;\n"
+"   &lt;p&gt;\n"
+"      [Posted on&#160;\n"
+"      &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"         &lt;f:convertDateTime timezone=\"#{blog.timeZone}\" locale=\"#{blog."
+"locale}\" type=\"both\"/&gt;\n"
+"      &lt;/h:outputText&gt;]\n"
+"   &lt;/p&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+"&lt;div class=\"blogEntry\"&gt;\n"
+"   &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"   &lt;div&gt;\n"
+"      &lt;h:outputText escape=\"false\" value=\"#{blogEntry.body}\"/&gt;\n"
+"   &lt;/div&gt;\n"
+"   &lt;p&gt;\n"
+"      [Posted on&#160;\n"
+"      &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"         &lt;f:convertDateTime timezone=\"#{blog.timeZone}\" locale=\"#{blog."
+"locale}\" type=\"both\"/&gt;\n"
+"      &lt;/h:outputText&gt;]\n"
+"   &lt;/p&gt;\n"
+"&lt;/div&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1294
+#, no-c-format
+msgid ""
+"If the blog entry is not found in the database, the "
+"<literal>EntryNotFoundException</literal> exception is thrown. We want this "
+"exception to result in a 404 error, not a 505, so we annotate the exception "
+"class:"
+msgstr ""
+"Si la entrada del blog no se encuentra en la base de datos, se presenta la "
+"excepción <literal>EntryNotFoundException</literal>. Queremos que esta "
+"excepción presente un error 404 y no un 505 así que anotamos la clase de la "
+"excepción:"
+
+#. Tag: programlisting
+#: Tutorial.xml:1297
+#, no-c-format
+msgid ""
+"@ApplicationException(rollback=true)\n"
+"@HttpError(errorCode=HttpServletResponse.SC_NOT_FOUND)\n"
+"public class EntryNotFoundException extends Exception\n"
+"{\n"
+"   EntryNotFoundException(String id)\n"
+"   {\n"
+"      super(\"entry not found: \" + id);\n"
+"   }\n"
+"}"
+msgstr ""
+"@ApplicationException(rollback=true)\n"
+"@HttpError(errorCode=HttpServletResponse.SC_NOT_FOUND)\n"
+"public class EntryNotFoundException extends Exception\n"
+"{\n"
+"   EntryNotFoundException(String id)\n"
+"   {\n"
+"      super(\"entry not found: \" + id);\n"
+"   }\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:1298
+#, no-c-format
+msgid ""
+"An alternative implementation of the example does not use the parameter in "
+"the method binding:"
+msgstr ""
+"Otra implementación posible del ejemplo no utiliza el parámetro en la "
+"vinculación de métodos:"
+
+#. Tag: programlisting
+#: Tutorial.xml:1301
+#, no-c-format
+msgid ""
+"@Name(\"entryAction\")\n"
+"@Scope(STATELESS)\n"
+"public class EntryAction\n"
+"{\n"
+"   @In(create=true) \n"
+"   private Blog blog;\n"
+"   \n"
+"   @In @Out\n"
+"   private BlogEntry blogEntry;\n"
+"   \n"
+"   public void loadBlogEntry() throws EntryNotFoundException\n"
+"   {\n"
+"      blogEntry = blog.getBlogEntry( blogEntry.getId() );\n"
+"      if (blogEntry==null) throw new EntryNotFoundException(id);\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+"@Name(\"entryAction\")\n"
+"@Scope(STATELESS)\n"
+"public class EntryAction\n"
+"{\n"
+"   @In(create=true) \n"
+"   private Blog blog;\n"
+"   \n"
+"   @In @Out\n"
+"   private BlogEntry blogEntry;\n"
+"   \n"
+"   public void loadBlogEntry() throws EntryNotFoundException\n"
+"   {\n"
+"      blogEntry = blog.getBlogEntry( blogEntry.getId() );\n"
+"      if (blogEntry==null) throw new EntryNotFoundException(id);\n"
+"   }\n"
+"   \n"
+"}"
+
+#. Tag: programlisting
+#: Tutorial.xml:1302
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   ...\n"
+"\n"
+"   &lt;page view-id=\"/entry.xhtml\" action=\"#{entryAction.loadBlogEntry}"
+"\"&gt;\n"
+"      &lt;param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"   ...\n"
+"\n"
+"   &lt;page view-id=\"/entry.xhtml\" action=\"#{entryAction.loadBlogEntry}"
+"\"&gt;\n"
+"      &lt;param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   ...\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1303
+#, no-c-format
+msgid "It is a matter of taste which implementation you prefer."
+msgstr "Ya es cuestión de gustos la implementación que quiera usar."

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Validation.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Validation.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Validation.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,618 @@
+# translation of Validation.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Validation\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 01:04+0000\n"
+"PO-Revision-Date: 2007-10-26 11:07+1000\n"
+"Last-Translator: Angela Garcia\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Validation.xml:6
+#, no-c-format
+msgid "JSF form validation in Seam"
+msgstr "Validación JSF en Seam "
+
+#. Tag: para
+#: Validation.xml:7
+#, no-c-format
+msgid "In plain JSF, validation is defined in the view:"
+msgstr "En JSF simple, la validación se define en la vista:"
+
+#. Tag: programlisting
+#: Validation.xml:10
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;h:messages/&gt;\n"
+"\n"
+"    &lt;div&gt;\n"
+"        Country:\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;my:validateCountry/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    \n"
+"    &lt;div&gt;\n"
+"        Zip code:\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;my:validateZip/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"\n"
+"    &lt;h:commandButton/&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h:form&gt;\n"
+"    &lt;h:messages/&gt;\n"
+"\n"
+"    &lt;div&gt;\n"
+"        Country:\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;my:validateCountry/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    \n"
+"    &lt;div&gt;\n"
+"        Zip code:\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;my:validateZip/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"\n"
+"    &lt;h:commandButton/&gt;\n"
+"&lt;/h:form&gt;"
+
+#. Tag: para
+#: Validation.xml:11
+#, no-c-format
+msgid ""
+"In practice, this approach usually violates DRY, since most \"validation\" "
+"actually enforces constraints that are part of the data model, and exist all "
+"the way down to the database schema definition. Seam provides support for "
+"model-based constraints defined using Hibernate Validator."
+msgstr ""
+"En la práctica este enfoque usualmente viola DRY ya que la mayoría de las "
+"\"validaciones\" realmente refuerzan restricciones que son parte del modelo "
+"de datos y existen hasta la definición del esquema de la base de datos. Seam "
+"proporciona soporte para restricciones con base en modelos definidos "
+"utilizando Hibernate Validator."
+
+#. Tag: para
+#: Validation.xml:14
+#, no-c-format
+msgid ""
+"Let&#39;s start by defining our constraints, on our <literal>Location</"
+"literal> class:"
+msgstr ""
+"Vamos a empezar por definir nuestras restricciones en nuestra clase "
+"<literal>Location</literal>:  "
+
+#. Tag: programlisting
+#: Validation.xml:17
+#, no-c-format
+msgid ""
+"public class Location {\n"
+"    private String country;\n"
+"    private String zip;\n"
+"    \n"
+"    @NotNull\n"
+"    @Length(max=30)\n"
+"    public String getCountry() { return country; }\n"
+"    public void setCountry(String c) { country = c; }\n"
+"\n"
+"    @NotNull\n"
+"    @Length(max=6)\n"
+"    @Pattern(\"^\\d*$\")\n"
+"    public String getZip() { return zip; }\n"
+"    public void setZip(String z) { zip = z; }\n"
+"}"
+msgstr ""
+"public class Location {\n"
+"    private String country;\n"
+"    private String zip;\n"
+"    \n"
+"    @NotNull\n"
+"    @Length(max=30)\n"
+"    public String getCountry() { return country; }\n"
+"    public void setCountry(String c) { country = c; }\n"
+"\n"
+"    @NotNull\n"
+"    @Length(max=6)\n"
+"    @Pattern(\"^\\d*$\")\n"
+"    public String getZip() { return zip; }\n"
+"    public void setZip(String z) { zip = z; }\n"
+"}"
+
+#. Tag: para
+#: Validation.xml:18
+#, no-c-format
+msgid ""
+"Well, that&#39;s a decent first cut, but in practice it might be more "
+"elegant to use custom constraints instead of the ones built into Hibernate "
+"Validator:"
+msgstr ""
+"Ese es un primer corte admisible pero en la práctica puede ser más elegante "
+"el utilizar restricciones personalizadas en vez de las que se encuentran "
+"incluídas en Hibernate Validator: "
+
+#. Tag: programlisting
+#: Validation.xml:21
+#, no-c-format
+msgid ""
+"public class Location {\n"
+"    private String country;\n"
+"    private String zip;\n"
+"    \n"
+"    @NotNull\n"
+"    @Country\n"
+"    public String getCountry() { return country; }\n"
+"    public void setCountry(String c) { country = c; }\n"
+"\n"
+"    @NotNull\n"
+"    @ZipCode\n"
+"    public String getZip() { return zip; }\n"
+"    public void setZip(String z) { zip = z; }\n"
+"}"
+msgstr ""
+"public class Location {\n"
+"    private String country;\n"
+"    private String zip;\n"
+"    \n"
+"    @NotNull\n"
+"    @Country\n"
+"    public String getCountry() { return country; }\n"
+"    public void setCountry(String c) { country = c; }\n"
+"\n"
+"    @NotNull\n"
+"    @ZipCode\n"
+"    public String getZip() { return zip; }\n"
+"    public void setZip(String z) { zip = z; }\n"
+"}"
+
+#. Tag: para
+#: Validation.xml:22
+#, no-c-format
+msgid ""
+"Whichever route we take, we no longer need to specify the type of validation "
+"to be used in the JSF page. Instead, we can use <literal>&lt;s:validate&gt;</"
+"literal> to validate against the constraint defined on the model object."
+msgstr ""
+"Cualquier ruta que tome ya no es necesario especificar el tipo de validación "
+"que se debe utilizar en la página JSF. En su lugar podemos utilizar "
+"<literal>&lt;s:validate&gt;</literal> para validar frente a la restricción "
+"definida en el objeto modelo."
+
+#. Tag: programlisting
+#: Validation.xml:25
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;h:messages/&gt;\n"
+"\n"
+"    &lt;div&gt;\n"
+"        Country:\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;s:validate/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    \n"
+"    &lt;div&gt;\n"
+"        Zip code:\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;s:validate/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    \n"
+"    &lt;h:commandButton/&gt;\n"
+"\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h:form&gt;\n"
+"    &lt;h:messages/&gt;\n"
+"\n"
+"    &lt;div&gt;\n"
+"        Country:\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;s:validate/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    \n"
+"    &lt;div&gt;\n"
+"        Zip code:\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;s:validate/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    \n"
+"    &lt;h:commandButton/&gt;\n"
+"\n"
+"&lt;/h:form&gt;"
+
+#. Tag: para
+#: Validation.xml:26
+#, no-c-format
+msgid ""
+"<emphasis>Note:</emphasis> specifying <literal>@NotNull</literal> on the "
+"model does <emphasis>not</emphasis> eliminate the requirement for "
+"<literal>required=\"true\"</literal> to appear on the control! This is due "
+"to a limitation of the JSF validation architecture."
+msgstr ""
+"<emphasis>Nota:</emphasis> el especificar <literal>@NotNull</literal> en el "
+"modelo <emphasis>no</emphasis> elimina la necesidad de que "
+"¡<literal>required=\"true\"</literal> aparezca en el control! Esto se debe a "
+"una limitación de la arquitectura de validación JSF."
+
+#. Tag: para
+#: Validation.xml:29
+#, no-c-format
+msgid ""
+"This approach <emphasis>defines</emphasis> constraints on the model, and "
+"<emphasis>presents</emphasis> constraint violations in the view&mdash;a "
+"significantly better design."
+msgstr ""
+"Este enfoque <emphasis>define</emphasis> las restricciones en el modelo y "
+"<emphasis>presenta</emphasis> violaciones de restricciones en la vista - un "
+"diseño mucho mejor."
+
+#. Tag: para
+#: Validation.xml:32
+#, no-c-format
+msgid ""
+"However, it is not much less verbose than what we started with, so let&#39;s "
+"try <literal>&lt;s:validateAll&gt;</literal>:"
+msgstr ""
+"Esta versión no es mucho menos verbosa que con lo que empezamos así que "
+"intentemos <literal>&lt;s:validateAll&gt;</literal>: "
+
+#. Tag: programlisting
+#: Validation.xml:35
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    \n"
+"    &lt;h:messages/&gt;\n"
+"\n"
+"    &lt;s:validateAll&gt;\n"
+"\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;h:inputText value=\"#{location.country}\" required=\"true\"/"
+"&gt;\n"
+"        &lt;/div&gt;\n"
+"\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/"
+"&gt;\n"
+"        &lt;/div&gt;\n"
+"\n"
+"        &lt;h:commandButton/&gt;\n"
+"\n"
+"    &lt;/s:validateAll&gt;\n"
+"\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h:form&gt;\n"
+"    \n"
+"    &lt;h:messages/&gt;\n"
+"\n"
+"    &lt;s:validateAll&gt;\n"
+"\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;h:inputText value=\"#{location.country}\" required=\"true\"/"
+"&gt;\n"
+"        &lt;/div&gt;\n"
+"\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/"
+"&gt;\n"
+"        &lt;/div&gt;\n"
+"\n"
+"        &lt;h:commandButton/&gt;\n"
+"\n"
+"    &lt;/s:validateAll&gt;\n"
+"\n"
+"&lt;/h:form&gt;"
+
+#. Tag: para
+#: Validation.xml:36
+#, no-c-format
+msgid ""
+"This tag simply adds an <literal>&lt;s:validate&gt;</literal> to every input "
+"in the form. For a large form, it can save a lot of typing!"
+msgstr ""
+"Esta etiqueta simplemente añade un <literal>&lt;s:validate&gt;</literal> a "
+"todas las entradas en el formulario. ¡Se puede ahorrar bastante trabajo en "
+"un formulario largo!"
+
+#. Tag: para
+#: Validation.xml:39
+#, no-c-format
+msgid ""
+"Now we need to do something about displaying feedback to the user when "
+"validation fails. Currently we are displaying all messages at the top of the "
+"form. What we would really like to do is display the message next to the "
+"field with the error (this is possible in plain JSF), highlight the field "
+"and label (this is not possible) and, for good measure, display some image "
+"next the the field (also not possible). We also want to display a little "
+"colored asterisk next to the label for each required form field."
+msgstr ""
+"Ahora necesitamos presentar algún tipo de comentario al usuario cuando la "
+"validación no tiene éxito. Actualmente estamos presentando todos los "
+"mensajes en la parte superior del formulario. Lo que nos gustaría hacer en "
+"realidad es presentar el mensaje al lado del campo que contiene el error "
+"(esto es posible en JSF simple), resaltar el campo (esto no es posible) y "
+"presentar alguna imagen al lado del campo (tampoco es posible). También nos "
+"gustaría presentar un pequeño asterisco a color al lado de la etiqueta para "
+"cada campo requerido del formulario."
+
+#. Tag: para
+#: Validation.xml:42
+#, no-c-format
+msgid ""
+"That&#39;s quite a lot of functionality we need for each field of our form. "
+"We wouldn&#39;t want to have to specify higlighting and the layout of the "
+"image, message and input field for every field on the form. So, instead, "
+"we&#39;ll specify the common layout in a facelets template:"
+msgstr ""
+"Eso representa bastante funcionalidad para cada campo de nuestro formulario. No nos "
+"gustaría tener que especificar el esquema de la imagen, del mensaje y del "
+"campo de entrada para todo campo del formulario. Así que en su lugar vamos a "
+"necesitar especificar el esquema común en una plantilla facelets: "
+
+#. Tag: programlisting
+#: Validation.xml:45
+#, no-c-format
+msgid ""
+"&lt;ui:composition xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"                xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"                xmlns:h=\"http://java.sun.com/jsf/html\"\n"
+"                xmlns:f=\"http://java.sun.com/jsf/core\"\n"
+"                xmlns:s=\"http://jboss.com/products/seam/taglib\"&gt;\n"
+"                 \n"
+"    &lt;div&gt;\n"
+"    \n"
+"        &lt;s:label styleClass=\"#{invalid?&#39;error&#39;:&#39;&#39;}"
+"\"&gt;\n"
+"            &lt;ui:insert name=\"label\"/&gt;\n"
+"            &lt;s:span styleClass=\"required\" rendered=\"#{required}\"&gt;"
+"*&lt;/s:span&gt;\n"
+"        &lt;/s:label&gt;\n"
+"        \n"
+"        &lt;span class=\"#{invalid?&#39;error&#39;:&#39;&#39;}\"&gt;\n"
+"            &lt;h:graphicImage src=\"img/error.gif\" rendered=\"#{invalid}\"/"
+"&gt;\n"
+"            &lt;s:validateAll&gt;\n"
+"                &lt;ui:insert/&gt;\n"
+"            &lt;/s:validateAll&gt;\n"
+"        &lt;/span&gt;\n"
+"        \n"
+"        &lt;s:message styleClass=\"error\"/&gt;\n"
+"        \n"
+"    &lt;/div&gt;\n"
+"    \n"
+"&lt;/ui:composition&gt;"
+msgstr ""
+"&lt;ui:composition xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"                xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"                xmlns:h=\"http://java.sun.com/jsf/html\"\n"
+"                xmlns:f=\"http://java.sun.com/jsf/core\"\n"
+"                xmlns:s=\"http://jboss.com/products/seam/taglib\"&gt;\n"
+"                 \n"
+"    &lt;div&gt;\n"
+"    \n"
+"        &lt;s:label styleClass=\"#{invalid?&#39;error&#39;:&#39;&#39;}"
+"\"&gt;\n"
+"            &lt;ui:insert name=\"label\"/&gt;\n"
+"            &lt;s:span styleClass=\"required\" rendered=\"#{required}\"&gt;"
+"*&lt;/s:span&gt;\n"
+"        &lt;/s:label&gt;\n"
+"        \n"
+"        &lt;span class=\"#{invalid?&#39;error&#39;:&#39;&#39;}\"&gt;\n"
+"            &lt;h:graphicImage src=\"img/error.gif\" rendered=\"#{invalid}\"/"
+"&gt;\n"
+"            &lt;s:validateAll&gt;\n"
+"                &lt;ui:insert/&gt;\n"
+"            &lt;/s:validateAll&gt;\n"
+"        &lt;/span&gt;\n"
+"        \n"
+"        &lt;s:message styleClass=\"error\"/&gt;\n"
+"        \n"
+"    &lt;/div&gt;\n"
+"    \n"
+"&lt;/ui:composition&gt;"
+
+#. Tag: para
+#: Validation.xml:46
+#, no-c-format
+msgid ""
+"We can include this template for each of our form fields using <literal>&lt;"
+"s:decorate&gt;</literal>."
+msgstr ""
+"Podemos incluir esta plantilla para cada uno de nuestros campos del "
+"formulario usando <literal>&lt;s:decorate&gt;</literal>."
+
+#. Tag: programlisting
+#: Validation.xml:49
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"\n"
+"    &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"\n"
+"    &lt;s:decorate template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Country:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"/"
+"&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"    \n"
+"    &lt;s:decorate template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Zip code:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"\n"
+"    &lt;h:commandButton/&gt;\n"
+"\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h:form&gt;\n"
+"\n"
+"    &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"\n"
+"    &lt;s:decorate template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Country:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"/"
+"&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"    \n"
+"    &lt;s:decorate template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Zip code:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"\n"
+"    &lt;h:commandButton/&gt;\n"
+"\n"
+"&lt;/h:form&gt;"
+
+#. Tag: para
+#: Validation.xml:50
+#, no-c-format
+msgid ""
+"Finally, we can use Ajax4JSF to display validation messages as the user is "
+"navigating around the form:"
+msgstr ""
+"Finalmente, podemos utilizar Ajax4JSF para presentar mensajes de validación "
+"mientras el usuario se encuentra navegando en el formulario:"
+
+#. Tag: programlisting
+#: Validation.xml:53
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"\n"
+"    &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"\n"
+"    &lt;s:decorate id=\"countryDecoration\" template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Country:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;a:support event=\"onblur\" reRender=\"countryDecoration\"/"
+"&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"    \n"
+"    &lt;s:decorate id=\"zipDecoration\" template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Zip code:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;a:support event=\"onblur\" reRender=\"zipDecoration\"/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"\n"
+"    &lt;h:commandButton/&gt;\n"
+"\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h:form&gt;\n"
+"\n"
+"    &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"\n"
+"    &lt;s:decorate id=\"countryDecoration\" template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Country:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;a:support event=\"onblur\" reRender=\"countryDecoration\"/"
+"&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"    \n"
+"    &lt;s:decorate id=\"zipDecoration\" template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Zip code:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;a:support event=\"onblur\" reRender=\"zipDecoration\"/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"\n"
+"    &lt;h:commandButton/&gt;\n"
+"\n"
+"&lt;/h:form&gt;"
+
+#. Tag: para
+#: Validation.xml:54
+#, no-c-format
+msgid ""
+"As a final note, it&#39;s better style to define explicit ids for important "
+"controls on the page, especially if you want to do automated testing for the "
+"UI, using some toolkit like Selenium. If you don&#39;t provide explicit ids, "
+"JSF will generate them, but the generated values will change if you change "
+"anything on the page."
+msgstr ""
+"Como nota final es mejor definir ids explícitos para controles importantes "
+"en la página, especialmente si quiere realizar pruebas automatizadas para la "
+"interfaz de usuario utilizando algún kit de herramientas como Selenium. Si "
+"no porporciona ids de manera explícita JSF los generará pero los valores "
+"generados cambiarán si cambia algo en la página."
+
+#. Tag: programlisting
+#: Validation.xml:57
+#, no-c-format
+msgid ""
+"&lt;h:form id=\"form\"&gt;\n"
+"\n"
+"    &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"\n"
+"    &lt;s:decorate id=\"countryDecoration\" template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Country:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText id=\"country\" value=\"#{location.country}\" "
+"required=\"true\"&gt;\n"
+"            &lt;a:support event=\"onblur\" reRender=\"countryDecoration\"/"
+"&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"    \n"
+"    &lt;s:decorate id=\"zipDecoration\" template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Zip code:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText id=\"zip\" value=\"#{location.zip}\" required=\"true"
+"\"&gt;\n"
+"            &lt;a:support event=\"onblur\" reRender=\"zipDecoration\"/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"\n"
+"    &lt;h:commandButton/&gt;\n"
+"\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h:form id=\"form\"&gt;\n"
+"\n"
+"    &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"\n"
+"    &lt;s:decorate id=\"countryDecoration\" template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Country:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText id=\"country\" value=\"#{location.country}\" "
+"required=\"true\"&gt;\n"
+"            &lt;a:support event=\"onblur\" reRender=\"countryDecoration\"/"
+"&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"    \n"
+"    &lt;s:decorate id=\"zipDecoration\" template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Zip code:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText id=\"zip\" value=\"#{location.zip}\" required=\"true"
+"\"&gt;\n"
+"            &lt;a:support event=\"onblur\" reRender=\"zipDecoration\"/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"\n"
+"    &lt;h:commandButton/&gt;\n"
+"\n"
+"&lt;/h:form&gt;"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Xml.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Xml.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/es-ES/Xml.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1314 @@
+# translation of Xml.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Xml\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 01:04+0000\n"
+"PO-Revision-Date: 2007-10-10 12:34+1000\n"
+"Last-Translator: Angela Garcia\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Xml.xml:6
+#, no-c-format
+msgid "Configuring Seam components"
+msgstr "Configuración de componentes Seam "
+
+#. Tag: para
+#: Xml.xml:7
+#, no-c-format
+msgid ""
+"The philosophy of minimizing XML-based configuration is extremely strong in "
+"Seam. Nevertheless, there are various reasons why we might want to configure "
+"a Seam component using XML: to isolate deployment-specific information from "
+"the Java code, to enable the creation of re-usable frameworks, to configure "
+"Seam&#39;s built-in functionality, etc. Seam provides two basic approaches "
+"to configuring components: configuration via property settings in a "
+"properties file or <literal>web.xml</literal>, and configuration via "
+"<literal>components.xml</literal>."
+msgstr ""
+"La filosofía de minimizar la configuración basada en XML es extremadamente "
+"fuerte en Seam. Sin embargo, existen varias razones por las cuales "
+"quisiéramos configurar un componente Seam utilizando XML: para aislar "
+"información especifica del despliegue del código Java, para habilitar la "
+"creación de marcos de trabajo re-utilizables, para configurar "
+"funcionalidades incluídas en Seam, etc. Seam proporciona dos enfoques "
+"básicos para configurar componentes: configuración por medio de ajustes de "
+"propiedades en un archivo de propiedades o <literal>web.xml</literal> y "
+"configuración por medio de <literal>components.xml</literal>."
+
+#. Tag: title
+#: Xml.xml:10
+#, no-c-format
+msgid "Configuring components via property settings"
+msgstr "Configuración de componentes por medio de ajustes a las propiedades "
+
+#. Tag: para
+#: Xml.xml:11
+#, no-c-format
+msgid ""
+"Seam components may be provided with configuration properties either via "
+"servlet context parameters, or via a properties file named <literal>seam."
+"properties</literal> in the root of the classpath."
+msgstr ""
+"Puede que los componentes Seam se proporcionen con propiedades de "
+"configuración ya sea por medio de parámetros de contexto servlet o por medio "
+"del archivo de propiedades llamado <literal>seam.properties</literal> en la "
+"raíz de la ruta de clase."
+
+#. Tag: para
+#: Xml.xml:14
+#, no-c-format
+msgid ""
+"The configurable Seam component must expose JavaBeans-style property setter "
+"methods for the configurable attributes. If a seam component named "
+"<literal>com.jboss.myapp.settings</literal> has a setter method named "
+"<literal>setLocale()</literal>, we can provide a property named <literal>com."
+"jboss.myapp.settings.locale</literal> in the <literal>seam.properties</"
+"literal> file or as a servlet context parameter, and Seam will set the value "
+"of the <literal>locale</literal> attribute whenever it instantiates the "
+"component."
+msgstr ""
+"El componente Seam configurable debe exponer los métodos setter de "
+"propiedades del estilo JavaBeans para los atributos configurables. Si un "
+"componente seam llamado <literal>com.jboss.myapp.settings</literal> tiene un "
+"método setter llamado <literal>setLocale()</literal>, podemos proporcionar "
+"una propiedad llamada <literal>com.jboss.myapp.settings.locale</literal> en "
+"el archivo <literal>seam.properties</literal> o como parámetro de contexto "
+"del servlet y Seam configurará el valor del atributo <literal>locale</"
+"literal> cuando instancie el componente."
+
+#. Tag: para
+#: Xml.xml:17
+#, no-c-format
+msgid ""
+"The same mechanism is used to configure Seam itself. For example, to set the "
+"conversation timeout, we provide a value for <literal>org.jboss.seam.core."
+"manager.conversationTimeout</literal> in <literal>web.xml</literal> or "
+"<literal>seam.properties</literal>. (There is a built-in Seam component "
+"named <literal>org.jboss.seam.core.manager</literal> with a setter method "
+"named <literal>setConversationTimeout()</literal>.)"
+msgstr ""
+"Se utiliza el mismo mecanismo para configurar Seam. Por ejemplo, para "
+"configurar el tiempo de espera de las conversaciones proporcionamos un valor "
+"para <literal>org.jboss.seam.core.manager.conversationTimeout</literal> en "
+"<literal>web.xml</literal> o <literal>seam.properties</literal> (hay un "
+"componente Seam incorporado llamado <literal>org.jboss.seam.core.manager</"
+"literal> con un método setter   llamado <literal>setConversationTimeout()</"
+"literal>)."
+
+#. Tag: title
+#: Xml.xml:20
+#, no-c-format
+msgid "Configuring components via components.xml"
+msgstr "Configuración de componentes por medio de components.xml"
+
+#. Tag: para
+#: Xml.xml:21
+#, no-c-format
+msgid ""
+"The <literal>components.xml</literal> file is a bit more powerful than "
+"property settings. It lets you:"
+msgstr ""
+"El archivo <literal>components.xml</literal> es un poco más potente que la "
+"configuración de propiedades. Le permite:"
+
+#. Tag: para
+#: Xml.xml:26
+#, no-c-format
+msgid ""
+"Configure components that have been installed automatically&mdash;including "
+"both built-in components, and application components that have been "
+"annotated with the <literal>@Name</literal> annotation and picked up by "
+"Seam&#39;s deployment scanner."
+msgstr ""
+"Configurar componentes que han sido instalados automáticamente - incluyendo "
+"ambos componentes incorporados y los componentes de aplicaciones que han "
+"sido anotados con <literal>@Name</literal> y que han sido observados por el "
+"escáner de despliegue de Seam. "
+
+#. Tag: para
+#: Xml.xml:31
+#, no-c-format
+msgid ""
+"Install classes with no <literal>@Name</literal> annotation as Seam "
+"components&mdash;this is most useful for certain kinds of infrastructural "
+"components which can be installed multiple times different names (for "
+"example Seam-managed persistence contexts)."
+msgstr ""
+"Instalar las clases sin anotaciones <literal>@Name</literal> como "
+"componentes Seam - esto es muy útil para ciertas clases de componentes de "
+"infraestructura los cuales se pueden instalar múltiples veces con nombres "
+"diferentes ( por ejemplo contextos de persistencia administrados por Seam)."
+
+#. Tag: para
+#: Xml.xml:36
+#, no-c-format
+msgid ""
+"Install components that <emphasis>do</emphasis> have a <literal>@Name</"
+"literal> annotation but are not installed by default because of an "
+"<literal>@Install</literal> annotation that indicates the component should "
+"not be installed."
+msgstr ""
+"Instale los componentes que <emphasis>si</emphasis> tienen una anotación "
+"<literal>@Name</literal> pero no están instalados por defecto debido a una "
+"anotación <literal>@Install</literal> que indica que el componente no se "
+"debe instalar."
+
+#. Tag: para
+#: Xml.xml:41
+#, no-c-format
+msgid "Override the scope of a component."
+msgstr "Sobrescribir el ámbito de un componente."
+
+#. Tag: para
+#: Xml.xml:46
+#, no-c-format
+msgid ""
+"A <literal>components.xml</literal> file may appear in one of three "
+"different places:"
+msgstr ""
+"Un archivo <literal>components.xml</literal> puede aparecer en uno de estos "
+"tres lugares: "
+
+#. Tag: para
+#: Xml.xml:51
+#, no-c-format
+msgid "The <literal>WEB-INF</literal> directory of a <literal>war</literal>."
+msgstr "El directorio <literal>WEB-INF</literal> de un <literal>war</literal>."
+
+#. Tag: para
+#: Xml.xml:56
+#, no-c-format
+msgid "The <literal>META-INF</literal> directory of a <literal>jar</literal>."
+msgstr ""
+"El directorio <literal>META-INF</literal> de un <literal>jar</literal>."
+
+#. Tag: para
+#: Xml.xml:61
+#, no-c-format
+msgid ""
+"Any directory of a <literal>jar</literal> that contains classes with an "
+"<literal>@Name</literal> annotation."
+msgstr ""
+"Cualquier directorio de un <literal>jar</literal> que contiene clases con "
+"una anotación <literal>@Name</literal>."
+
+#. Tag: para
+#: Xml.xml:66
+#, no-c-format
+msgid ""
+"Usually, Seam components are installed when the deployment scanner discovers "
+"a class with a <literal>@Name</literal> annotation sitting in an archive "
+"with a <literal>seam.properties</literal> file or a <literal>META-INF/"
+"components.xml</literal> file. (Unless the component has an "
+"<literal>@Install</literal> annotation indicating it should not be installed "
+"by default.) The <literal>components.xml</literal> file lets us handle "
+"special cases where we need to override the annotations."
+msgstr ""
+"Usualmente los componentes Seam se instalan cuando el escáner de despliegue "
+"descubre una clase con una anotación <literal>@Name</literal> que se "
+"encuentra en un fichero con un archivo <literal>seam.properties</literal> o "
+"un archivo <literal>META-INF/components.xml</literal> (a menos que el "
+"componente tenga una anotación <literal>@Install</literal> indicando que no "
+"debe ser instalado por defecto). El archivo <literal>components.xml</"
+"literal> nos permite manejar casos especiales en donde necesitamos "
+"sobrescribir las anotaciones."
+
+#. Tag: para
+#: Xml.xml:69
+#, no-c-format
+msgid ""
+"For example, the following <literal>components.xml</literal> file installs "
+"the JBoss Embeddable EJB3 container:"
+msgstr ""
+"Por ejemplo, el siguiente archivo <literal>components.xml</literal> instala "
+"el contenedor JBoss Embeddable EJB3:"
+
+#. Tag: programlisting
+#: Xml.xml:72
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"&gt;\n"
+"    &lt;core:ejb/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"&gt;\n"
+"    &lt;core:ejb/&gt;\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:73
+#, no-c-format
+msgid "This example does the same thing:"
+msgstr "Este ejemplo hace lo mismo:"
+
+#. Tag: programlisting
+#: Xml.xml:76
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component class=\"org.jboss.seam.core.Ejb\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components&gt;\n"
+"    &lt;component class=\"org.jboss.seam.core.Ejb\"/&gt;\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:77
+#, no-c-format
+msgid ""
+"This one installs and configures two different Seam-managed persistence "
+"contexts:"
+msgstr ""
+"Este instala y configura dos contextos de persistencia administrados por "
+"Seam:"
+
+#. Tag: programlisting
+#: Xml.xml:80
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"    &lt;core:managed-persistence-context name=\"customerDatabase\"\n"
+"                persistence-unit-jndi-name=\"java:/"
+"customerEntityManagerFactory\"/&gt;\n"
+"        \n"
+"    &lt;core:managed-persistence-context name=\"accountingDatabase\"\n"
+"                persistence-unit-jndi-name=\"java:/"
+"accountingEntityManagerFactory\"/&gt;            \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"    &lt;core:managed-persistence-context name=\"customerDatabase\"\n"
+"                persistence-unit-jndi-name=\"java:/"
+"customerEntityManagerFactory\"/&gt;\n"
+"        \n"
+"    &lt;core:managed-persistence-context name=\"accountingDatabase\"\n"
+"                persistence-unit-jndi-name=\"java:/"
+"accountingEntityManagerFactory\"/&gt;            \n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:81
+#, no-c-format
+msgid "As does this one:"
+msgstr "así como este:"
+
+#. Tag: programlisting
+#: Xml.xml:84
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component name=\"customerDatabase\" \n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"customerEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"    \n"
+"    &lt;component name=\"accountingDatabase\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"accountingEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components&gt;\n"
+"    &lt;component name=\"customerDatabase\" \n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"customerEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"    \n"
+"    &lt;component name=\"accountingDatabase\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"accountingEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:85
+#, no-c-format
+msgid ""
+"This example creates a session-scoped Seam-managed persistence context (this "
+"is not recommended in practice):"
+msgstr ""
+"Este ejemplo crea un contexto de persistencia administrado por Seam  en un "
+"ámbito de sesión (esto no se recomienda en la práctica):"
+
+#. Tag: programlisting
+#: Xml.xml:88
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"  &lt;core:managed-persistence-context name=\"productDatabase\" \n"
+"                                   scope=\"session\"\n"
+"              persistence-unit-jndi-name=\"java:/productEntityManagerFactory"
+"\"/&gt;        \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"  &lt;core:managed-persistence-context name=\"productDatabase\" \n"
+"                                   scope=\"session\"\n"
+"              persistence-unit-jndi-name=\"java:/productEntityManagerFactory"
+"\"/&gt;        \n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: programlisting
+#: Xml.xml:89
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"            \n"
+"    &lt;component name=\"productDatabase\"\n"
+"              scope=\"session\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"productEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components&gt;\n"
+"            \n"
+"    &lt;component name=\"productDatabase\"\n"
+"              scope=\"session\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"productEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:90
+#, no-c-format
+msgid ""
+"It is common to use the <literal>auto-create</literal> option for "
+"infrastructural objects like persistence contexts, which saves you from "
+"having to explicitly specify <literal>create=true</literal> when you use the "
+"<literal>@In</literal> annotation."
+msgstr ""
+"Es común utilizar la opción <literal>auto-create</literal> para objetos "
+"infraestructurales como contextos de persistencia , lo cual le evita el "
+"tener que especificar explícitamente <literal>create=true</literal> cuando "
+"utiliza la anotación <literal>@In</literal>."
+
+#. Tag: programlisting
+#: Xml.xml:93
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"  &lt;core:managed-persistence-context name=\"productDatabase\" \n"
+"                             auto-create=\"true\"\n"
+"              persistence-unit-jndi-name=\"java:/productEntityManagerFactory"
+"\"/&gt;        \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"  &lt;core:managed-persistence-context name=\"productDatabase\" \n"
+"                             auto-create=\"true\"\n"
+"              persistence-unit-jndi-name=\"java:/productEntityManagerFactory"
+"\"/&gt;        \n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: programlisting
+#: Xml.xml:94
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"            \n"
+"    &lt;component name=\"productDatabase\"\n"
+"        auto-create=\"true\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"productEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components&gt;\n"
+"            \n"
+"    &lt;component name=\"productDatabase\"\n"
+"        auto-create=\"true\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"productEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:95
+#, no-c-format
+msgid ""
+"The <literal>&lt;factory&gt;</literal> declaration lets you specify a value "
+"or method binding expression that will be evaluated to initialize the value "
+"of a context variable when it is first referenced."
+msgstr ""
+"La declaración  <literal>&lt;factory&gt;</literal> le permite especificar un "
+"valor o una expresión de vinculación de método que será evaluada para "
+"inicializar el valor de una variable de contexto cuando se referencia por "
+"primera vez."
+
+#. Tag: programlisting
+#: Xml.xml:98
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"contact\" method=\"#{contactManager.loadContact}\" "
+"scope=\"CONVERSATION\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"contact\" method=\"#{contactManager.loadContact}\" "
+"scope=\"CONVERSATION\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:99
+#, no-c-format
+msgid ""
+"You can create an \"alias\" (a second name) for a Seam component like so:"
+msgstr ""
+"Puede crear un \"alias\" (otro nombre) para un componente Seam como este:"
+
+#. Tag: programlisting
+#: Xml.xml:102
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"user\" value=\"#{actor}\" scope=\"STATELESS\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"user\" value=\"#{actor}\" scope=\"STATELESS\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:103
+#, no-c-format
+msgid "You can even create an \"alias\" for a commonly used expression:"
+msgstr ""
+"Inclusive puede crear un \"alias\" para una expresión utilizada comúnmente:"
+
+#. Tag: programlisting
+#: Xml.xml:106
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"contact\" value=\"#{contactManager.contact}\" scope="
+"\"STATELESS\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"contact\" value=\"#{contactManager.contact}\" scope="
+"\"STATELESS\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:107
+#, no-c-format
+msgid ""
+"It is especially common to see the use of <literal>auto-create=\"true\"</"
+"literal> with the <literal>&lt;factory&gt;</literal> declaration:"
+msgstr ""
+"En especial es muy común ver el uso de <literal>auto-create=\"true\"</"
+"literal> con la declaración <literal>&lt;factory&gt;</literal>:"
+
+#. Tag: programlisting
+#: Xml.xml:110
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"session\" value=\"#{entityManager.delegate}\" scope="
+"\"STATELESS\" \n"
+"       auto-create=\"true\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"session\" value=\"#{entityManager.delegate}\" scope="
+"\"STATELESS\" \n"
+"       auto-create=\"true\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:111
+#, no-c-format
+msgid ""
+"Sometimes we want to reuse the same <literal>components.xml</literal> file "
+"with minor changes during both deployment and testing. Seam lets you place "
+"wildcards of the form <literal>@wildcard@</literal> in the "
+"<literal>components.xml</literal> file which can be replaced either by your "
+"Ant build script (at deployment time) or by providing a file named "
+"<literal>components.properties</literal> in the classpath (at development "
+"time). You&#39;ll see this approach used in the Seam examples."
+msgstr ""
+"Aveces queremos reutilizar el mismo archivo <literal>components.xml</"
+"literal> con pequeños cambios durante el despliegue y prueba. Seam le "
+"permite poner comodines de la forma <literal>@wildcard@</literal> en el "
+"archivo <literal>components.xml</literal>, el cual se puede reemplazar ya "
+"sea por su script de construcción Ant (al momento del despliegue) o "
+"proporcionando un archivo llamado <literal>components.properties</literal> "
+"en la ruta de clase (en el momento del despliegue). Verá este enfoque en los "
+"ejemplos Seam."
+
+#. Tag: title
+#: Xml.xml:114
+#, no-c-format
+msgid "Fine-grained configuration files"
+msgstr "Archivos de configuración detallados"
+
+#. Tag: para
+#: Xml.xml:115
+#, no-c-format
+msgid ""
+"If you have a large number of components that need to be configured in XML, "
+"it makes much more sense to split up the information in <literal>components."
+"xml</literal> into many small files. Seam lets you put configuration for a "
+"class named, for example, <literal>com.helloworld.Hello</literal> in a "
+"resource named <literal>com/helloworld/Hello.component.xml</literal>. (You "
+"might be familiar with this pattern, since it is the same one we use in "
+"Hibernate.) The root element of the file may be either a <literal>&lt;"
+"components&gt;</literal> or <literal>&lt;component&gt;</literal> element."
+msgstr ""
+"Si tiene un número grande de componentes que necesitan ser configurados en "
+"XML; es mucho más lógico dividir la información en <literal>components.xml</"
+"literal> en muchos archivos pequeños. Seam le permite poner una "
+"configuración para una clase llamada, por ejemplo, <literal>com.helloworld."
+"Hello</literal> en un recurso llamado <literal>com/helloworld/Hello."
+"component.xml</literal>."
+
+#. Tag: para
+#: Xml.xml:118
+#, no-c-format
+msgid "The first option lets you define multiple components in the file:"
+msgstr ""
+"Esta primera opción le permite definir múltiples componentes en el archivo:"
+
+#. Tag: programlisting
+#: Xml.xml:121
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component class=\"com.helloworld.Hello\" name=\"hello\"&gt;\n"
+"        &lt;property name=\"name\"&gt;#{user.name}&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"    &lt;factory name=\"message\" value=\"#{hello.message}\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components&gt;\n"
+"    &lt;component class=\"com.helloworld.Hello\" name=\"hello\"&gt;\n"
+"        &lt;property name=\"name\"&gt;#{user.name}&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"    &lt;factory name=\"message\" value=\"#{hello.message}\"/&gt;\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:122
+#, no-c-format
+msgid ""
+"The second option only lets you define or configure one component, but is "
+"less noisy:"
+msgstr ""
+"La segunda opción le permite definir o configurar un componente pero es "
+"menos ruidoso:"
+
+#. Tag: programlisting
+#: Xml.xml:125
+#, no-c-format
+msgid ""
+"&lt;component name=\"hello\"&gt;\n"
+"    &lt;property name=\"name\"&gt;#{user.name}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+"&lt;component name=\"hello\"&gt;\n"
+"    &lt;property name=\"name\"&gt;#{user.name}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+
+#. Tag: para
+#: Xml.xml:126
+#, no-c-format
+msgid ""
+"In the second option, the class name is implied by the file in which the "
+"component definition appears."
+msgstr ""
+"En la segunda opción, el archivo en el que aparece la definición del "
+"componente implica el nombre de la clase."
+
+#. Tag: para
+#: Xml.xml:129
+#, no-c-format
+msgid ""
+"Alternatively, you may put configuration for all classes in the <literal>com."
+"helloworld</literal> package in <literal>com/helloworld/components.xml</"
+"literal>."
+msgstr ""
+"De otra manera puede poner la configuración para todas las clases en el "
+"paquete <literal>com.helloworld</literal> en <literal>com/helloworld/"
+"components.xml</literal>."
+
+#. Tag: title
+#: Xml.xml:132
+#, no-c-format
+msgid "Configurable property types"
+msgstr "Tipos de propiedades configurables"
+
+#. Tag: para
+#: Xml.xml:133
+#, no-c-format
+msgid ""
+"Properties of string, primitive or primitive wrapper type may be configured "
+"just as you would expect:"
+msgstr ""
+"Las propiedades de tipo cadena, primitivo o envoltura de primitivos se "
+"pueden configurar como se lo imagina:"
+
+#. Tag: programlisting
+#: Xml.xml:136
+#, no-c-format
+msgid "org.jboss.seam.core.manager.conversationTimeout 60000"
+msgstr "org.jboss.seam.core.manager.conversationTimeout 60000"
+
+#. Tag: programlisting
+#: Xml.xml:137
+#, no-c-format
+msgid "&lt;core:manager conversation-timeout=\"60000\"/&gt;"
+msgstr "&lt;core:manager conversation-timeout=\"60000\"/&gt;"
+
+#. Tag: programlisting
+#: Xml.xml:138
+#, no-c-format
+msgid ""
+"&lt;component name=\"org.jboss.seam.core.manager\"&gt;\n"
+"    &lt;property name=\"conversationTimeout\"&gt;60000&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+"&lt;component name=\"org.jboss.seam.core.manager\"&gt;\n"
+"    &lt;property name=\"conversationTimeout\"&gt;60000&lt;/property&gt;\n"
+"&lt;/component&gt;"
+
+#. Tag: para
+#: Xml.xml:139
+#, no-c-format
+msgid "Arrays, sets and lists of strings or primitives are also supported:"
+msgstr "También se soportan listas o grupos de cadenas o primitivos:"
+
+#. Tag: programlisting
+#: Xml.xml:142
+#, no-c-format
+msgid ""
+"org.jboss.seam.core.jbpm.processDefinitions order.jpdl.xml, return.jpdl.xml, "
+"inventory.jpdl.xml"
+msgstr ""
+"org.jboss.seam.core.jbpm.processDefinitions order.jpdl.xml, return.jpdl.xml, "
+"inventory.jpdl.xml"
+
+#. Tag: programlisting
+#: Xml.xml:143
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;order.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;return.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;order.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;return.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+
+#. Tag: programlisting
+#: Xml.xml:144
+#, no-c-format
+msgid ""
+"&lt;component name=\"org.jboss.seam.core.jbpm\"&gt;\n"
+"    &lt;property name=\"processDefinitions\"&gt;\n"
+"        &lt;value&gt;order.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;return.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+"&lt;component name=\"org.jboss.seam.core.jbpm\"&gt;\n"
+"    &lt;property name=\"processDefinitions\"&gt;\n"
+"        &lt;value&gt;order.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;return.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/component&gt;"
+
+#. Tag: para
+#: Xml.xml:145
+#, no-c-format
+msgid ""
+"Even maps with String-valued keys and string or primitive values are "
+"supported:"
+msgstr ""
+"Inclusive se soportan mapeos de claves con valores de cadenas y valores "
+"primitivos o de cadenas: "
+
+#. Tag: programlisting
+#: Xml.xml:148
+#, no-c-format
+msgid ""
+"&lt;component name=\"issueEditor\"&gt;\n"
+"    &lt;property name=\"issueStatuses\"&gt;\n"
+"        &lt;key&gt;open&lt;/key&gt; &lt;value&gt;open issue&lt;/value&gt;\n"
+"        &lt;key&gt;resolved&lt;/key&gt; &lt;value&gt;issue resolved by "
+"developer&lt;/value&gt;\n"
+"        &lt;key&gt;closed&lt;/key&gt; &lt;value&gt;resolution accepted by "
+"user&lt;/value&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+"&lt;component name=\"issueEditor\"&gt;\n"
+"    &lt;property name=\"issueStatuses\"&gt;\n"
+"        &lt;key&gt;open&lt;/key&gt; &lt;value&gt;open issue&lt;/value&gt;\n"
+"        &lt;key&gt;resolved&lt;/key&gt; &lt;value&gt;issue resolved by "
+"developer&lt;/value&gt;\n"
+"        &lt;key&gt;closed&lt;/key&gt; &lt;value&gt;resolution accepted by "
+"user&lt;/value&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/component&gt;"
+
+#. Tag: para
+#: Xml.xml:149
+#, no-c-format
+msgid ""
+"Finally, you may wire together components using a value-binding expression. "
+"Note that this is quite different to injection using <literal>@In</literal>, "
+"since it happens at component instantiation time instead of invocation time. "
+"It is therefore much more similar to the dependency injection facilities "
+"offered by traditional IoC containers like JSF or Spring."
+msgstr ""
+"Finalmente puede conectar componentes utilizando una expresión de "
+"vinculación de valores. Observe que esto es bastante diferente a la "
+"inyección utilizando <literal>@In</literal> ya que esto sucede en el momento "
+"de instanciación del componente en vez del momento de invocación. Por lo "
+"tanto es mucho más similar a las facilidades de inyección de dependencias "
+"que ofrecen los contenedores tradicionales IoC como JSF o Spring."
+
+#. Tag: programlisting
+#: Xml.xml:152
+#, no-c-format
+msgid ""
+"&lt;drools:managed-working-memory name=\"policyPricingWorkingMemory\" rule-"
+"base=\"#{policyPricingRules}\"/&gt;"
+msgstr ""
+"&lt;drools:managed-working-memory name=\"policyPricingWorkingMemory\" rule-"
+"base=\"#{policyPricingRules}\"/&gt;"
+
+#. Tag: programlisting
+#: Xml.xml:153
+#, no-c-format
+msgid ""
+"&lt;component name=\"policyPricingWorkingMemory\"\n"
+"          class=\"org.jboss.seam.drools.ManagedWorkingMemory\"&gt;\n"
+"    &lt;property name=\"ruleBase\"&gt;#{policyPricingRules}&lt;/"
+"property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+"&lt;component name=\"policyPricingWorkingMemory\"\n"
+"          class=\"org.jboss.seam.drools.ManagedWorkingMemory\"&gt;\n"
+"    &lt;property name=\"ruleBase\"&gt;#{policyPricingRules}&lt;/"
+"property&gt;\n"
+"&lt;/component&gt;"
+
+#. Tag: title
+#: Xml.xml:154
+#, no-c-format
+msgid "Using XML Namespaces"
+msgstr "Uso de espacios de nombres XML "
+
+#. Tag: para
+#: Xml.xml:155
+#, no-c-format
+msgid ""
+"Throughout the examples, there have been two competing ways of declaring "
+"components: with and without the use of XML namespaces. The following shows "
+"a typical <literal>components.xml</literal> file without namespaces. It uses "
+"the Seam Components DTD:"
+msgstr ""
+"En todos los ejemplos se han presentado dos maneras de declarar componentes: "
+"con y sin el uso de espacios de nombres XML. Lo siguiente muestra un archivo "
+"<literal>components.xml</literal> típico sin espacios de nombres. Utiliza "
+"los componentes Seam DTD:"
+
+#. Tag: programlisting
+#: Xml.xml:158
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"&gt;\n"
+"&lt;!DOCTYPE components PUBLIC \"-//JBoss/Seam Component Configuration DTD "
+"1.2//EN\"\n"
+"                            \"http://jboss.com/products/seam/components-1.2."
+"dtd\"&gt;\n"
+"&lt;components&gt;\n"
+"\n"
+"    &lt;component class=\"org.jboss.seam.core.init\"&gt;\n"
+"        &lt;property name=\"debug\"&gt;true&lt;/property&gt;\n"
+"        &lt;property name=\"jndiPattern\"&gt;@jndiPattern@&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"    &lt;component name=\"org.jboss.sean.core.ejb\" installed=\"@embeddedEjb@"
+"\" /&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"&gt;\n"
+"&lt;!DOCTYPE components PUBLIC \"-//JBoss/Seam Component Configuration DTD "
+"1.2//EN\"\n"
+"                            \"http://jboss.com/products/seam/components-1.2."
+"dtd\"&gt;\n"
+"&lt;components&gt;\n"
+"\n"
+"    &lt;component class=\"org.jboss.seam.core.init\"&gt;\n"
+"        &lt;property name=\"debug\"&gt;true&lt;/property&gt;\n"
+"        &lt;property name=\"jndiPattern\"&gt;@jndiPattern@&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"    &lt;component name=\"org.jboss.sean.core.ejb\" installed=\"@embeddedEjb@"
+"\" /&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:159
+#, no-c-format
+msgid ""
+"As you can see, this is somewhat verbose. Even worse, the component and "
+"attribute names cannot be validated at development time."
+msgstr ""
+"Como lo puede ver esto es un poco verboso y lo peor es que el componente y "
+"los nombres de los atributos no se pueden validar durante el desarrollo."
+
+#. Tag: para
+#: Xml.xml:162
+#, no-c-format
+msgid "The namespaced version looks like this:"
+msgstr "La versión con espacios de nombres se ve así:"
+
+#. Tag: programlisting
+#: Xml.xml:165
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                                        http://jboss.com/products/seam/core-"
+"1.2.xsd \n"
+"                 http://jboss.com/products/seam/components \n"
+"                                        http://jboss.com/products/seam/"
+"components-1.2.xsd\"&gt;\n"
+"\n"
+"    &lt;core:init debug=\"true\" jndi-pattern=\"@jndiPattern@\"/&gt;\n"
+"\n"
+"    &lt;core:ejb installed=\"@embeddedEjb@\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                                        http://jboss.com/products/seam/core-"
+"1.2.xsd \n"
+"                 http://jboss.com/products/seam/components \n"
+"                                        http://jboss.com/products/seam/"
+"components-1.2.xsd\"&gt;\n"
+"\n"
+"    &lt;core:init debug=\"true\" jndi-pattern=\"@jndiPattern@\"/&gt;\n"
+"\n"
+"    &lt;core:ejb installed=\"@embeddedEjb@\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:166
+#, no-c-format
+msgid ""
+"Even though the schema declarations are verbose, the actual XML content is "
+"lean and easy to understand. The schemas provide detailed information about "
+"each component and the attributes available, allowing XML editors to offer "
+"intelligent autocomplete. The use of namespaced elements makes generating "
+"and maintaining correct <literal>components.xml</literal> files much simpler."
+msgstr ""
+"Aún cuando las declaraciones de esquema son verbosas, el contenido XML real "
+"es faćil de comprender. Los esquemas proporcionan información detallada "
+"sobre cada componente y los atributos disponibles permitiendo que los "
+"editores XML ofrezcan auto-completación inteligente. El uso de elementos con "
+"espacios de nombres facilita mucho más el generar y mantener archivos "
+"<literal>components.xml</literal> correctos. "
+
+#. Tag: para
+#: Xml.xml:169
+#, no-c-format
+msgid ""
+"Now, this works great for the built-in Seam components, but what about user "
+"components? There are two options. First, Seam supports mixing the two "
+"models, allowing the use of the generic <literal>&lt;component&gt;</literal> "
+"declarations for user components, along with namespaced declarations for "
+"built-in components. But even better, Seam allows you to quickly declare "
+"namespaces for your own components."
+msgstr ""
+"Esto funciona muy bien para los componentes Seam incorporados pero ¿qué pasa "
+"con los componentes del usuario? Existen dos opciones. Primero, Seam soporta "
+"la mezcla de los dos modelos permitiendo el uso de las declaraciones "
+"genéricas <literal>&lt;component&gt;</literal> para componentes de usuario "
+"junto con declaraciones con espacios de nombres para componentes "
+"incorporados. Pero aún mejor Seam le permite declarar de manera rápida los "
+"espacios de nombres para sus propios componentes."
+
+#. Tag: para
+#: Xml.xml:172
+#, no-c-format
+msgid ""
+"Any Java package can be associated with an XML namespace by annotating the "
+"package with the <literal>@Namespace</literal> annotation. (Package-level "
+"annotations are declared in a file named <literal>package-info.java</"
+"literal> in the package directory.) Here is an example from the seampay demo:"
+msgstr ""
+"Cualquier paquete Java se puede asociar con un nombre de espacio XML "
+"anotando el paquete con <literal>@Namespace</literal> (las anotaciones a "
+"nivel de paquete se declaran en un archivo llamado <literal>package-info."
+"java</literal> en el directorio de paquete). Este es un ejemplo de la "
+"demostración de seampay:"
+
+#. Tag: programlisting
+#: Xml.xml:175
+#, no-c-format
+msgid ""
+"@Namespace(value=\"http://jboss.com/products/seam/examples/seampay\")\n"
+"package org.jboss.seam.example.seampay;\n"
+"\n"
+"import org.jboss.seam.annotations.Namespace;"
+msgstr ""
+"@Namespace(value=\"http://jboss.com/products/seam/examples/seampay\")\n"
+"package org.jboss.seam.example.seampay;\n"
+"\n"
+"import org.jboss.seam.annotations.Namespace;"
+
+#. Tag: para
+#: Xml.xml:176
+#, no-c-format
+msgid ""
+"That is all you need to do to use the namespaced style in "
+"<literal>components.xml</literal>! Now we can write:"
+msgstr ""
+"¡Eso es todo lo que necesita hacer para poder utilizar el estilo de espacio "
+"de nombre en <literal>components.xml</literal>! Ahora podemos escribir:"
+
+#. Tag: programlisting
+#: Xml.xml:179
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pay=\"http://jboss.com/products/seam/examples/seampay\"\n"
+"            ... &gt;\n"
+"\n"
+"    &lt;pay:payment-home new-instance=\"#{newPayment}\"\n"
+"                      created-message=\"Created a new payment to #"
+"{newPayment.payee}\" /&gt;\n"
+"\n"
+"    &lt;pay:payment name=\"newPayment\"\n"
+"                 payee=\"Somebody\"\n"
+"                 account=\"#{selectedAccount}\"\n"
+"                 payment-date=\"#{currentDatetime}\"\n"
+"                 created-date=\"#{currentDatetime}\" /&gt;\n"
+"     ...\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pay=\"http://jboss.com/products/seam/examples/seampay\"\n"
+"            ... &gt;\n"
+"\n"
+"    &lt;pay:payment-home new-instance=\"#{newPayment}\"\n"
+"                      created-message=\"Created a new payment to #"
+"{newPayment.payee}\" /&gt;\n"
+"\n"
+"    &lt;pay:payment name=\"newPayment\"\n"
+"                 payee=\"Somebody\"\n"
+"                 account=\"#{selectedAccount}\"\n"
+"                 payment-date=\"#{currentDatetime}\"\n"
+"                 created-date=\"#{currentDatetime}\" /&gt;\n"
+"     ...\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:180
+#, no-c-format
+msgid "<para>Or:</para>"
+msgstr "<para>o :</para>"
+
+#. Tag: programlisting
+#: Xml.xml:183
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pay=\"http://jboss.com/products/seam/examples/seampay\"\n"
+"            ... &gt;\n"
+"\n"
+"    &lt;pay:payment-home&gt;\n"
+"        &lt;pay:new-instance&gt;\"#{newPayment}\"&lt;/pay:new-instance&gt;\n"
+"        &lt;pay:created-message&gt;Created a new payment to #{newPayment."
+"payee}&lt;/pay:created-message&gt;\n"
+"    &lt;/pay:payment-home&gt;\n"
+"    \n"
+"    &lt;pay:payment name=\"newPayment\"&gt;\n"
+"        &lt;pay:payee&gt;Somebody\"&lt;/pay:payee&gt;\n"
+"        &lt;pay:account&gt;#{selectedAccount}&lt;/pay:account&gt;\n"
+"        &lt;pay:payment-date&gt;#{currentDatetime}&lt;/pay:payment-date&gt;\n"
+"        &lt;pay:created-date&gt;#{currentDatetime}&lt;/pay:created-date&gt;\n"
+"     &lt;/pay:payment&gt;\n"
+"     ...\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pay=\"http://jboss.com/products/seam/examples/seampay\"\n"
+"            ... &gt;\n"
+"\n"
+"    &lt;pay:payment-home&gt;\n"
+"        &lt;pay:new-instance&gt;\"#{newPayment}\"&lt;/pay:new-instance&gt;\n"
+"        &lt;pay:created-message&gt;Created a new payment to #{newPayment."
+"payee}&lt;/pay:created-message&gt;\n"
+"    &lt;/pay:payment-home&gt;\n"
+"    \n"
+"    &lt;pay:payment name=\"newPayment\"&gt;\n"
+"        &lt;pay:payee&gt;Somebody\"&lt;/pay:payee&gt;\n"
+"        &lt;pay:account&gt;#{selectedAccount}&lt;/pay:account&gt;\n"
+"        &lt;pay:payment-date&gt;#{currentDatetime}&lt;/pay:payment-date&gt;\n"
+"        &lt;pay:created-date&gt;#{currentDatetime}&lt;/pay:created-date&gt;\n"
+"     &lt;/pay:payment&gt;\n"
+"     ...\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:184
+#, no-c-format
+msgid ""
+"These examples illustrate the two usage models of a namespaced element. In "
+"the first declaration, the <literal>&lt;pay:payment-home&gt;</literal> "
+"references the <literal>paymentHome</literal> component:"
+msgstr ""
+"Estos ejemplos ilustran los dos modelos de uso de un elemento con espacio de "
+"nombre. En la primera declaración, <literal>&lt;pay:payment-home&gt;</"
+"literal> referencia el componente <literal>paymentHome</literal>:"
+
+#. Tag: programlisting
+#: Xml.xml:187
+#, no-c-format
+msgid ""
+"package org.jboss.seam.example.seampay;\n"
+"...\n"
+"@Name(\"paymentHome\")\n"
+"public class PaymentController\n"
+"    extends EntityHome&lt;Payment&gt;\n"
+"{\n"
+"    ... \n"
+"}"
+msgstr ""
+"package org.jboss.seam.example.seampay;\n"
+"...\n"
+"@Name(\"paymentHome\")\n"
+"public class PaymentController\n"
+"    extends EntityHome&lt;Payment&gt;\n"
+"{\n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Xml.xml:188
+#, no-c-format
+msgid ""
+"The element name is the hyphenated form of the component name. The "
+"attributes of the element are the hyphenated form of the property names."
+msgstr ""
+"El nombre del elemento es el nombre del componente con guiones. Los "
+"atributos del elemento son los nombres de la propiedad con guiones."
+
+#. Tag: para
+#: Xml.xml:191
+#, no-c-format
+msgid ""
+"In the second declaration, the <literal>&lt;pay:payment&gt;</literal> "
+"element refers to the <literal>Payment</literal> class in the <literal>org."
+"jboss.seam.example.seampay</literal> package. In this case <literal>Payment</"
+"literal> is an entity that is being declared as a Seam component:"
+msgstr ""
+"En la segunda declaración el elemento <literal>&lt;pay:payment&gt;</literal> "
+"se refiere a la clase <literal>Payment</literal> en el paquete <literal>org."
+"jboss.seam.example.seampay</literal>. En este caso <literal>Payment</"
+"literal> es una entidad que se está declarando como un componente Seam:"
+
+#. Tag: programlisting
+#: Xml.xml:194
+#, no-c-format
+msgid ""
+"package org.jboss.seam.example.seampay;\n"
+"...\n"
+"@Entity\n"
+"public class Payment\n"
+"    implements Serializable\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+"package org.jboss.seam.example.seampay;\n"
+"...\n"
+"@Entity\n"
+"public class Payment\n"
+"    implements Serializable\n"
+"{\n"
+"    ...\n"
+"}"
+
+#. Tag: para
+#: Xml.xml:195
+#, no-c-format
+msgid ""
+"If we want validation and autocompletion to work for user-defined "
+"components, we will need a schema. Seam does not yet provide a mechanism to "
+"automatically generate a schema for a set of components, so it is necessary "
+"to generate one manually. The schema definitions for the standard Seam "
+"packages can be used for guidance."
+msgstr ""
+"Si queremos que la validación y el auto completamiento funcionen para los "
+"componentes definidos por el usuario vamos a necesitar un esquema. Seam "
+"todavía no proporciona un mecanismo para generar de manera automática un "
+"esquema para un grupo de componentes así que es necesario generar uno "
+"manualmente. Puede utilizar como guía las definiciones del esquema para los "
+"paquetes Seam estándares. "
+
+#. Tag: para
+#: Xml.xml:198
+#, no-c-format
+msgid "The following are the the namespaces used by Seam:"
+msgstr "Los siguientes son los espacios de nombre que Seam utiliza:"
+
+#. Tag: para
+#: Xml.xml:203
+#, no-c-format
+msgid ""
+"components &mdash; <literal>http://jboss.com/products/seam/components</"
+"literal>"
+msgstr ""
+"componentes &mdash; <literal>http://jboss.com/products/seam/components</"
+"literal>"
+
+#. Tag: para
+#: Xml.xml:208
+#, no-c-format
+msgid "core &mdash; <literal>http://jboss.com/products/seam/core</literal>"
+msgstr "core &mdash; <literal>http://jboss.com/products/seam/core</literal>"
+
+#. Tag: para
+#: Xml.xml:213
+#, no-c-format
+msgid "drools &mdash; <literal>http://jboss.com/products/seam/drools</literal>"
+msgstr ""
+"drools &mdash; <literal>http://jboss.com/products/seam/drools</literal>"
+
+#. Tag: para
+#: Xml.xml:218
+#, no-c-format
+msgid ""
+"framework &mdash; <literal>http://jboss.com/products/seam/framework</literal>"
+msgstr ""
+"framework &mdash; <literal>http://jboss.com/products/seam/framework</literal>"
+
+#. Tag: para
+#: Xml.xml:223
+#, no-c-format
+msgid "jms &mdash; <literal>http://jboss.com/products/seam/jms</literal>"
+msgstr "jms &mdash; <literal>http://jboss.com/products/seam/jms</literal>"
+
+#. Tag: para
+#: Xml.xml:228
+#, no-c-format
+msgid ""
+"remoting &mdash; <literal>http://jboss.com/products/seam/remoting</literal>"
+msgstr ""
+"remoting &mdash; <literal>http://jboss.com/products/seam/remoting</literal>"
+
+#. Tag: para
+#: Xml.xml:233
+#, no-c-format
+msgid "theme &mdash; <literal>http://jboss.com/products/seam/theme</literal>"
+msgstr "theme &mdash; <literal>http://jboss.com/products/seam/theme</literal>"
+
+#. Tag: para
+#: Xml.xml:238
+#, no-c-format
+msgid ""
+"security &mdash; <literal>http://jboss.com/products/seam/security</literal>"
+msgstr ""
+"security &mdash; <literal>http://jboss.com/products/seam/security</literal>"
+
+#. Tag: para
+#: Xml.xml:243
+#, no-c-format
+msgid "mail &mdash; <literal>http://jboss.com/products/seam/mail</literal>"
+msgstr "mail &mdash; <literal>http://jboss.com/products/seam/mail</literal>"
+
+#. Tag: para
+#: Xml.xml:248
+#, no-c-format
+msgid "web &mdash; <literal>http://jboss.com/products/seam/web</literal>"
+msgstr "web &mdash; <literal>http://jboss.com/products/seam/web</literal>"

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Annotations.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Annotations.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Annotations.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2468 @@
+# translation of Annotations.po to french
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# myriam malga <mmalga at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Annotations\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2007-08-03 14:02+1000\n"
+"Last-Translator: myriam malga <mmalga at redhat.com>\n"
+"Language-Team: french\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Annotations.xml:6
+#, no-c-format
+msgid "Seam annotations"
+msgstr "Annotations Seam"
+
+#. Tag: para
+#: Annotations.xml:7
+#, fuzzy, no-c-format
+msgid ""
+"When you write a Seam application, you&#39;ll use a lot of annotations. Seam "
+"lets you use annotations to achieve a declarative style of programming. Most "
+"of the annotations you&#39;ll use are defined by the EJB 3.0 specification. "
+"The annotations for data validation are defined by the Hibernate Validator "
+"package. Finally, Seam defines its own set of annotations, which we&#39;ll "
+"describe in this chapter."
+msgstr ""
+"Quand vous écrivez une application Seam, vous utiliserez de nombreuses "
+"annotations. Seam vous permet d'utiliser les annotations pour arriver à un "
+"style de programmation déclaratif. La plupart des annotations utilisées sont "
+"définies par les spécifications EJB 3.0. Les annotations pour la validation "
+"des données sont définies par le paquetage Hibernate Validator. Enfin, Seam "
+"définit son propre ensemble d'annotations, que nous décrivons dans ce "
+"chapitre. "
+
+#. Tag: para
+#: Annotations.xml:10
+#, no-c-format
+msgid ""
+"All of these annotations are defined in the package <literal>org.jboss.seam."
+"annotations</literal>."
+msgstr ""
+"Toutes ces annotations sont définies dans le paquetage <literal>org.jboss."
+"seam.annotations</literal>."
+
+#. Tag: title
+#: Annotations.xml:14
+#, no-c-format
+msgid "Annotations for component definition"
+msgstr "Les annotations pour la définition de composant"
+
+#. Tag: para
+#: Annotations.xml:15
+#, no-c-format
+msgid ""
+"The first group of annotations lets you define a Seam component. These "
+"annotations appear on the component class."
+msgstr ""
+"Le premier groupe d'annotations vous permet de définir un composant Seam. "
+"Ces annotations apparaissent sur la classe du composant. "
+
+#. Tag: literal
+#: Annotations.xml:20
+#, no-c-format
+msgid "@Name"
+msgstr "@Name"
+
+#. Tag: programlisting
+#: Annotations.xml:22
+#, no-c-format
+msgid "@Name(\"componentName\")"
+msgstr "@Name(\"componentName\")"
+
+#. Tag: para
+#: Annotations.xml:23
+#, no-c-format
+msgid ""
+"Defines the Seam component name for a class. This annotation is required for "
+"all Seam components."
+msgstr ""
+"Définit le nom du composant Seam pour une classe. Cette annotation est "
+"nécessaire pour les composants Seam. "
+
+#. Tag: literal
+#: Annotations.xml:29
+#, no-c-format
+msgid "@Scope"
+msgstr "@Scope"
+
+#. Tag: programlisting
+#: Annotations.xml:31
+#, no-c-format
+msgid "@Scope(ScopeType.CONVERSATION)"
+msgstr "@Scope(ScopeType.CONVERSATION)"
+
+#. Tag: para
+#: Annotations.xml:32
+#, no-c-format
+msgid ""
+"Defines the default context of the component. The possible values are "
+"defined by the <literal>ScopeType</literal> enumeration: <literal>EVENT, "
+"PAGE, CONVERSATION, SESSION, BUSINESS_PROCESS, APPLICATION, STATELESS</"
+"literal>."
+msgstr ""
+"Définit le contexte par défaut du composant. Les valeurs possibles sont "
+"définies par l'énumération <literal>ScopeType</literal> : <literal>EVENT, "
+"PAGE, CONVERSATION, SESSION, BUSINESS_PROCESS, APPLICATION, STATELESS</"
+"literal>."
+
+#. Tag: para
+#: Annotations.xml:35
+#, no-c-format
+msgid ""
+"When no scope is explicitly specified, the default depends upon the "
+"component type. For stateless session beans, the default is "
+"<literal>STATELESS</literal>. For entity beans and stateful session beans, "
+"the default is <literal>CONVERSATION</literal>. For JavaBeans, the default "
+"is <literal>EVENT</literal>."
+msgstr ""
+"Quand aucune étendue n'est spécifiée explicitement, la valeur par défaut "
+"dépend du type de composant.<literal>STATELESS</literal>. Pour les beans "
+"session stateless, la valeur par défaut est <literal>CONVERSATION</literal>. "
+"Pour les JavaBeans, la valeur par défaut est <literal>EVENT</literal>."
+
+#. Tag: literal
+#: Annotations.xml:41
+#, no-c-format
+msgid "@Role"
+msgstr "@Role"
+
+#. Tag: programlisting
+#: Annotations.xml:43
+#, no-c-format
+msgid "@Role(name=\"roleName\", scope=ScopeType.SESSION)"
+msgstr "@Role(name=\"roleName\", scope=ScopeType.SESSION)"
+
+#. Tag: para
+#: Annotations.xml:44
+#, no-c-format
+msgid ""
+"Allows a Seam component to be bound to multiple contexts variables. The "
+"<literal>@Name</literal>/<literal>@Scope</literal> annotations define a "
+"\"default role\". Each <literal>@Role</literal> annotation defines an "
+"additional role."
+msgstr ""
+"Permet à un composant Seam d'être lié à de multiples variables de contexte. "
+"Les annotations <literal>@Name</literal>/<literal>@Scope</literal> "
+"définissent un \"rôle par défaut\". Chaque annotation <literal>@Role</"
+"literal> définit un rôle supplémentaire. "
+
+#. Tag: para
+#: Annotations.xml:49
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the context variable name."
+msgstr "<literal>name</literal> &mdash; le nom de la variable de contexte."
+
+#. Tag: para
+#: Annotations.xml:54
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; the context variable scope. When no scope "
+"is explicitly specified, the default depends upon the component type, as "
+"above."
+msgstr ""
+"<literal>scope</literal> &mdash; l'étendue de la variable de contexte. Quand "
+"aucune étendue n'est spécifiée explicitement, la valeur par défaut dépend du "
+"type de composant, comme ci-dessus. "
+
+#. Tag: literal
+#: Annotations.xml:62
+#, no-c-format
+msgid "@Roles"
+msgstr ". at Roles"
+
+#. Tag: programlisting
+#: Annotations.xml:64
+#, no-c-format
+msgid ""
+"@Roles({\n"
+"        @Role(name=\"user\", scope=ScopeType.CONVERSATION),\n"
+"        @Role(name=\"currentUser\", scope=ScopeType.SESSION)\n"
+"    })"
+msgstr ""
+"@Roles({\n"
+"        @Role(name=\"user\", scope=ScopeType.CONVERSATION),\n"
+"        @Role(name=\"currentUser\", scope=ScopeType.SESSION)\n"
+"    })"
+
+#. Tag: para
+#: Annotations.xml:65
+#, no-c-format
+msgid "Allows specification of multiple additional roles."
+msgstr "Permet les spécifications de multiples rôles supplémentaires. "
+
+#. Tag: literal
+#: Annotations.xml:71
+#, no-c-format
+msgid "@Intercept"
+msgstr "@Intercept"
+
+#. Tag: programlisting
+#: Annotations.xml:73
+#, no-c-format
+msgid "@Intercept(InterceptionType.ALWAYS)"
+msgstr "@Intercept(InterceptionType.ALWAYS)"
+
+#. Tag: para
+#: Annotations.xml:74
+#, no-c-format
+msgid ""
+"Determines when Seam interceptors are active. The possible values are "
+"defined by the <literal>InterceptionType</literal> enumeration: "
+"<literal>ALWAYS, AFTER_RESTORE_VIEW, AFTER_UPDATE_MODEL_VALUES, "
+"INVOKE_APPLICATION, NEVER</literal>."
+msgstr ""
+"Détermine quand les intercepteurs Seam sont actifs. Les valeurs possibles "
+"sont définies par l'énumération <literal>InterceptionType</literal> : "
+"<literal>ALWAYS, AFTER_RESTORE_VIEW, AFTER_UPDATE_MODEL_VALUES, "
+"INVOKE_APPLICATION, NEVER</literal>."
+
+#. Tag: para
+#: Annotations.xml:77
+#, no-c-format
+msgid ""
+"When no interception type is explicitly specified, the default depends upon "
+"the component type. For entity beans, the default is <literal>NEVER</"
+"literal>. For session beans, message driven beans and JavaBeans, the default "
+"is <literal>ALWAYS</literal>."
+msgstr ""
+"Quand aucun type d'interception n'est explicitement spécifié, la valeur par "
+"défaut dépend du type de composant. Pour les beans entité, la valeur par "
+"défaut est <literal>NEVER</literal>. Pour les beans session, les beans "
+"message driven et les JavaBeans, la valeur par défaut est <literal>ALWAYS</"
+"literal>."
+
+#. Tag: literal
+#: Annotations.xml:83
+#, no-c-format
+msgid "@JndiName"
+msgstr "@JndiName"
+
+#. Tag: programlisting
+#: Annotations.xml:85
+#, no-c-format
+msgid "@JndiName(\"my/jndi/name\")"
+msgstr "@JndiName(\"my/jndi/name\")"
+
+#. Tag: para
+#: Annotations.xml:86
+#, no-c-format
+msgid ""
+"Specifies the JNDI name that Seam will use to look up the EJB component. If "
+"no JNDI name is explicitly specified, Seam will use the JNDI pattern "
+"specified by <literal>org.jboss.seam.core.init.jndiPattern</literal>."
+msgstr ""
+"Spécifie le nom du JNDI que Seam utilisera pour rechercher le composant EJB. "
+"S'il le nom du JNDI n'est pas spécifié, Seam utilisera le modèle JNDI "
+"spécifié par <literal>org.jboss.seam.core.init.jndiPattern</literal>."
+
+#. Tag: literal
+#: Annotations.xml:92
+#, no-c-format
+msgid "@Conversational"
+msgstr "@Conversational"
+
+#. Tag: programlisting
+#: Annotations.xml:94
+#, no-c-format
+msgid "@Conversational(ifNotBegunOutcome=\"error\")"
+msgstr "@Conversational(ifNotBegunOutcome=\"error\")"
+
+#. Tag: para
+#: Annotations.xml:95
+#, no-c-format
+msgid ""
+"Specifies that a conversation scope component is conversational, meaning "
+"that no method of the component can be called unless a long-running "
+"conversation started by this component is active (unless the method would "
+"begin a new long-running conversation)."
+msgstr ""
+"Spécifie qu'un composant d'étendue de conversation est conversationnel, "
+"c'est-à-dire qu'aucune méthode de composant ne peut être appelée à moins "
+"qu'une conversation de longue durée, commencée par ce composant ne soit "
+"active (à moins que la méthode ne commence une conversation de longue durée)."
+
+#. Tag: literal
+#: Annotations.xml:101
+#, no-c-format
+msgid "<literal>@Startup</literal>"
+msgstr "<literal>@Startup</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:103
+#, no-c-format
+msgid "@Startup(depends={\"org.jboss.core.jndi\", \"org.jboss.core.jta\"})"
+msgstr "@Startup(depends={\"org.jboss.core.jndi\", \"org.jboss.core.jta\"})"
+
+#. Tag: para
+#: Annotations.xml:104
+#, no-c-format
+msgid ""
+"Specifies that an application scope component is started immediately at "
+"initialization time. This is mainly used for certain built-in components "
+"that bootstrap critical infrastructure such as JNDI, datasources, etc."
+msgstr ""
+"Spécifie qu'un composant d'étendue d'application est démarré immédiatement "
+"au moment de l'initialisation. Cela est utilisé en particulier, pour "
+"certains composants intégrés qui amorcent une infrastructure critique comme "
+"JNDI, les sources de données, etc. "
+
+#. Tag: programlisting
+#: Annotations.xml:107
+#, no-c-format
+msgid "<programlisting>@Startup</programlisting>"
+msgstr "<programlisting>@Startup</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:108
+#, no-c-format
+msgid ""
+"Specifies that a session scope component is started immediately at session "
+"creation time."
+msgstr ""
+"Spécifie qu'un composant d'étendue de session est immédiatement démarré au "
+"moment de la création de la session. "
+
+#. Tag: para
+#: Annotations.xml:113
+#, no-c-format
+msgid ""
+"<literal>depends</literal> &mdash; specifies that the named components must "
+"be started first, if they are installed."
+msgstr ""
+"<literal>depends</literal> &mdash; spécifie que les composants nommés "
+"doivent être démarrés en premier, s'ils sont installés. "
+
+#. Tag: literal
+#: Annotations.xml:121
+#, no-c-format
+msgid "@Install"
+msgstr "@Install"
+
+#. Tag: programlisting
+#: Annotations.xml:123
+#, no-c-format
+msgid "@Install(false)"
+msgstr "@Install(false)"
+
+#. Tag: para
+#: Annotations.xml:124
+#, no-c-format
+msgid ""
+"Specifies whether or not a component should be installed by default. The "
+"lack of an @Install annotation indicates a component should be installed."
+msgstr ""
+"Spécifie si un composant doit être installé ou non par défaut. L'absence "
+"d'une annotation @Install indique qu'un composant doit être installé. "
+
+#. Tag: programlisting
+#: Annotations.xml:127
+#, no-c-format
+msgid "@Install(dependencies=\"org.jboss.seam.core.jbpm\")"
+msgstr "@Install(dependencies=\"org.jboss.seam.core.jbpm\")"
+
+#. Tag: para
+#: Annotations.xml:128
+#, no-c-format
+msgid ""
+"Specifies that a component should only be stalled if the components listed "
+"as dependencies are also installed."
+msgstr ""
+"Spécifie qu'un composant doit être installé uniquement si les composants "
+"listés en tant que dépendances sont également installés."
+
+#. Tag: programlisting
+#: Annotations.xml:131
+#, no-c-format
+msgid "@Install(genericDependencies=ManagedQueueSender.class)"
+msgstr "@Install(genericDependencies=ManagedQueueSender.class)"
+
+#. Tag: para
+#: Annotations.xml:132
+#, fuzzy, no-c-format
+msgid ""
+"Specifies that a component should only be installed if a component that is "
+"implemented by a certain class is installed. This is useful when the "
+"dependency doesn&#39;t have a single well-known name."
+msgstr ""
+"Spécifie qu'un composant ne devrait être installé que lorsqu'un composant "
+"qui est implémenté par une classe particulière, est installé. "
+
+#. Tag: programlisting
+#: Annotations.xml:135
+#, no-c-format
+msgid "@Install(classDependencies=\"org.hibernate.Session\")"
+msgstr "@Install(classDependencies=\"org.hibernate.Session\")"
+
+#. Tag: para
+#: Annotations.xml:136
+#, no-c-format
+msgid ""
+"Specifies that a component should only be installed if the named class is in "
+"the classpath."
+msgstr ""
+"Spécifie qu'un composant devrait être installé uniquement si la classe "
+"nommée est dans le chemin de classe. "
+
+#. Tag: programlisting
+#: Annotations.xml:139
+#, no-c-format
+msgid "@Install(precedence=BUILT_IN)"
+msgstr "@Install(precedence=BUILT_IN)"
+
+#. Tag: para
+#: Annotations.xml:140
+#, fuzzy, no-c-format
+msgid ""
+"Specifies the precedence of the component. If multiple components with the "
+"same name exist, the one with the higher precedence will be installed. The "
+"defined precendence values are (in ascending order):"
+msgstr ""
+"Spécifie la précédence d'un composant. Si de multiples composants avec le "
+"même nom existent, celui qui a la précédence la plus élevée sera installé. "
+"Les valeurs de précédence définies sont :"
+
+#. Tag: para
+#: Annotations.xml:145
+#, no-c-format
+msgid ""
+"<literal>BUILT_IN</literal> &mdash; Precedence of all built-in Seam "
+"components"
+msgstr ""
+"<literal>BUILT_IN</literal> &mdash; la précédence des composants Seam "
+"imbriqués"
+
+#. Tag: para
+#: Annotations.xml:150
+#, no-c-format
+msgid ""
+"<literal>FRAMEWORK</literal> &mdash; Precedence to use for components of "
+"frameworks which extend Seam"
+msgstr ""
+"<literal>FRAMEWORK</literal> &mdash; la précédence à utiliser pour les "
+"composants des frameworks qui étendent Seam"
+
+#. Tag: para
+#: Annotations.xml:155
+#, no-c-format
+msgid ""
+"<literal>APPLICATION</literal> &mdash; Predence of application components "
+"(the default precedence)"
+msgstr ""
+"<literal>APPLICATION</literal> &mdash; la précédence des composants "
+"d'application (la précédence par défaut)"
+
+#. Tag: para
+#: Annotations.xml:160
+#, no-c-format
+msgid ""
+"<literal>DEPLOYMENT</literal> &mdash; Precedence to use for components which "
+"override application components in a particular deployment"
+msgstr ""
+"<literal>DEPLOYMENT</literal> &mdash; la précédence à utiliser pour les "
+"composants qui ignorent les composants d'application dans un déploiement "
+"particulier. "
+
+#. Tag: para
+#: Annotations.xml:165
+#, fuzzy, no-c-format
+msgid ""
+"<literal>MOCK</literal> &mdash; Precedence for mock objects used in testing"
+msgstr ""
+"<literal>FRAMEWORK</literal> &mdash; la précédence à utiliser pour les "
+"composants des frameworks qui étendent Seam"
+
+#. Tag: literal
+#: Annotations.xml:173
+#, no-c-format
+msgid "@Synchronized"
+msgstr "@Synchronized"
+
+#. Tag: programlisting
+#: Annotations.xml:175
+#, no-c-format
+msgid "@Synchronized(timeout=1000)"
+msgstr "@Synchronized(timeout=1000)"
+
+#. Tag: para
+#: Annotations.xml:176
+#, no-c-format
+msgid ""
+"Specifies that a component is accessed concurrently by multiple clients, and "
+"that Seam should serialize requests. If a request is not able to obtain its "
+"lock on the component in the given timeout period, an exception will be "
+"raised."
+msgstr ""
+"Spécifie que de multiples clients ont eu accès au composant simultanément et "
+"que Seam devrait sérialisé les requêtes. Si une requête ne peut obtenir son "
+"verrou sur le composant dans un délai déterminé, une exception sera lancée. "
+
+#. Tag: literal
+#: Annotations.xml:182
+#, no-c-format
+msgid "<literal>@ReadOnly</literal>"
+msgstr "<literal>@ReadOnly</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:184
+#, no-c-format
+msgid "<programlisting>@ReadOnly</programlisting>"
+msgstr "<programlisting>@ReadOnly</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:185
+#, no-c-format
+msgid ""
+"Specifies that a JavaBean component or component method does not require "
+"state replication at the end of the invocation."
+msgstr ""
+"Spécifie que le composant JavaBean ou la méthode du composant ne demande pas "
+"de réplication d'état à la fin de l'invocation. "
+
+#. Tag: title
+#: Annotations.xml:194
+#, no-c-format
+msgid "Annotations for bijection"
+msgstr "Annotations par bijection"
+
+#. Tag: para
+#: Annotations.xml:195
+#, no-c-format
+msgid ""
+"The next two annotations control bijection. These attributes occur on "
+"component instance variables or property accessor methods."
+msgstr ""
+"Les deux bijections de contrôle d'annotations qui suivent. Ces attributs "
+"surviennent sur les variables d'instance de composant ou les méthodes "
+"d'accesseur de propriété. "
+
+#. Tag: literal
+#: Annotations.xml:200
+#, no-c-format
+msgid "<literal>@In</literal>"
+msgstr "<literal>@In</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:202
+#, no-c-format
+msgid "<programlisting>@In</programlisting>"
+msgstr "<programlisting>@In</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:203
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. If the context "
+"variable is null, an exception will be thrown."
+msgstr ""
+"Spécifie qu'un attribut de composant doit être injecté d'une variable de "
+"contexte au début de chaque invocation de composant. Si la variable de "
+"contexte est nulle, une exception sera lancée. "
+
+#. Tag: programlisting
+#: Annotations.xml:206
+#, no-c-format
+msgid "@In(required=false)"
+msgstr "@In(required=false)"
+
+#. Tag: para
+#: Annotations.xml:207
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. The context variable "
+"may be null."
+msgstr ""
+"Spécifie que l'attribut du composant doit être injecté de la variable de "
+"contexte au début de chaque appel de composant. La variable de contexte "
+"pourra être nulle. "
+
+#. Tag: programlisting
+#: Annotations.xml:210
+#, no-c-format
+msgid "@In(create=true)"
+msgstr "@In(create=true)"
+
+#. Tag: para
+#: Annotations.xml:211
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. If the context "
+"variable is null, an instance of the component is instantiated by Seam."
+msgstr ""
+"Spécifie que l'attribut du composant doit être injecté d'une variable de "
+"contexte au début de chaque appel de composant. Si la variable de contexte "
+"est null, une instance du composant est instanciée par Seam. "
+
+#. Tag: programlisting
+#: Annotations.xml:214
+#, no-c-format
+msgid "@In(value=\"contextVariableName\")"
+msgstr "@In(value=\"contextVariableName\")"
+
+#. Tag: para
+#: Annotations.xml:215 Annotations.xml:260
+#, no-c-format
+msgid ""
+"Specifies the name of the context variable explicitly, instead of using the "
+"annotated instance variable name."
+msgstr ""
+"Spécifie le nom de la variable de contexte explicitement, au lieu d'utiliser "
+"le nom de la variable d'instance annotée. "
+
+#. Tag: programlisting
+#: Annotations.xml:218
+#, fuzzy, no-c-format
+msgid "@In(value=\"#{customer.addresses[&#39;shipping&#39;]}\")"
+msgstr "@In(value=\"#{customer.addresses['shipping']}\")"
+
+#. Tag: para
+#: Annotations.xml:219
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected by evaluating a JSF "
+"EL expression at the beginning of each component invocation."
+msgstr ""
+"Spécifie qu'un attribut du composant doit être injecté en évaluant une "
+"expression JSF EL au début de chaque appel de composant. "
+
+#. Tag: para
+#: Annotations.xml:224
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"Default to the name of the component attribute. Alternatively, specifies a "
+"JSF EL expression, surrounded by <literal>#{...}</literal>."
+msgstr ""
+"<literal>value</literal> &mdash; spécifie le même nom de la variable de "
+"contexte. Prend par défaut le nom de l'attribut du composant. "
+"Alternativement, spécifie une expression JSF EL, entourée de <literal>#{...}"
+"</literal>."
+
+#. Tag: para
+#: Annotations.xml:229
+#, no-c-format
+msgid ""
+"<literal>create</literal> &mdash; specifies that Seam should instantiate the "
+"component with the same name as the context variable if the context variable "
+"is undefined (null) in all contexts. Default to false."
+msgstr ""
+"<literal>create</literal> &mdash; spécifie que Seam devrait instancier le "
+"composant avec le même nom que la variable de contexte si la variable de "
+"contexte est non-définie (null) dans tous les contextes. Prend la valeur "
+"false par défaut. "
+
+#. Tag: para
+#: Annotations.xml:234
+#, no-c-format
+msgid ""
+"<literal>required</literal> &mdash; specifies Seam should throw an exception "
+"if the context variable is undefined in all contexts."
+msgstr ""
+"<literal>required</literal> &mdash; spécifie que Seam devrait lancer "
+"exception si la variable de contexte est non-définie dans tous les "
+"contextes. "
+
+#. Tag: literal
+#: Annotations.xml:242
+#, no-c-format
+msgid "<literal>@Out</literal>"
+msgstr "<literal>@Out</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:244
+#, no-c-format
+msgid "<programlisting>@Out</programlisting>"
+msgstr "<programlisting>@Out</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:245
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is a Seam component is to be "
+"outjected to its context variable at the end of the invocation. If the "
+"attribute is null, an exception is thrown."
+msgstr ""
+"Spécifie qu'un attribut du composant qui est un composant Seam, doit être "
+"outjecté à sa variable de contexte à la fin de l'appel.  Si l'attribut est "
+"null, une exception sera lancée. "
+
+#. Tag: programlisting
+#: Annotations.xml:248
+#, no-c-format
+msgid "@Out(required=false)"
+msgstr "@Out(required=false)"
+
+#. Tag: para
+#: Annotations.xml:249
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is a Seam component is to be "
+"outjected to its context variable at the end of the invocation. The "
+"attribute may be null."
+msgstr ""
+"Spécifie qu'un attribut du composant qui est un composant Seam, doit être "
+"outjecté à sa variable de contexte à la fin de l'appel. L'attribut peut être "
+"null. "
+
+#. Tag: programlisting
+#: Annotations.xml:252
+#, no-c-format
+msgid "@Out(scope=ScopeType.SESSION)"
+msgstr "@Out(scope=ScopeType.SESSION)"
+
+#. Tag: para
+#: Annotations.xml:253
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is <emphasis>not</emphasis> a Seam "
+"component type is to be outjected to a specific scope at the end of the "
+"invocation."
+msgstr ""
+"Spécifie que l'attribut du composant qui n'est <emphasis>pas</emphasis> un "
+"type de composant Seam doit être outjecté à une étendue spécifique à la fin "
+"de l'appel. "
+
+#. Tag: para
+#: Annotations.xml:256
+#, no-c-format
+msgid ""
+"Alternatively, if no scope is explicitly specified, the scope of the "
+"component with the <literal>@Out</literal> attribute is used (or the "
+"<literal>EVENT</literal> scope if the component is stateless)."
+msgstr ""
+"Alternativement, si aucune étendue n'est explicitement spécifiée, l'étendue "
+"du composant avec l'attribut <literal>@Out</literal> est utilisée (ou "
+"l'étendue y<literal>EVENT</literal>si le composant ests stateless)."
+
+#. Tag: programlisting
+#: Annotations.xml:259
+#, no-c-format
+msgid "@Out(value=\"contextVariableName\")"
+msgstr "@Out(value=\"contextVariableName\")"
+
+#. Tag: para
+#: Annotations.xml:265
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"Default to the name of the component attribute."
+msgstr ""
+"<literal>value</literal> &mdash; spécifie le nom de la variable de contexte. "
+"Prend par défaut le nom de l'attribut du composant. "
+
+#. Tag: para
+#: Annotations.xml:270
+#, no-c-format
+msgid ""
+"<literal>required</literal> &mdash; specifies Seam should throw an exception "
+"if the component attribute is null during outjection."
+msgstr ""
+"<literal>required</literal> &mdash; indique à Seam de lancer une exception "
+"si l'attribut du composant est null durant l'outjection."
+
+#. Tag: para
+#: Annotations.xml:278
+#, no-c-format
+msgid ""
+"Note that it is quite common for these annotations to occur together, for "
+"example:"
+msgstr ""
+"Notez qu'il est assez fréquent de voir ces annotations ensemble, par "
+"exemple : "
+
+#. Tag: programlisting
+#: Annotations.xml:281
+#, no-c-format
+msgid "@In(create=true) @Out private User currentUser;"
+msgstr "@In(create=true) @Out private User currentUser;"
+
+#. Tag: para
+#: Annotations.xml:282
+#, no-c-format
+msgid ""
+"The next annotation supports the <emphasis>manager component</emphasis> "
+"pattern, where a Seam component that manages the lifecycle of an instance of "
+"some other class that is to be injected. It appears on a component getter "
+"method."
+msgstr ""
+"La prochaine annotation supporte le modèle <emphasis>manager component</"
+"emphasis> où un composant Seam qui gère le cycle de vie d'une instance d'une "
+"autre classe, doit être injectée. Il apparaît sur une méthode du mécanisme "
+"d'obtention de composant. "
+
+#. Tag: literal
+#: Annotations.xml:287
+#, no-c-format
+msgid "<literal>@Unwrap</literal>"
+msgstr "<literal>@Unwrap</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:289
+#, no-c-format
+msgid "<programlisting>@Unwrap</programlisting>"
+msgstr "<programlisting>@Unwrap</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:290
+#, no-c-format
+msgid ""
+"Specifies that the object returned by the annotated getter method is the "
+"thing that is injected instead of the component instance itself."
+msgstr ""
+"Spécifie qu'un objet retourné par la méthode du mécanisme d'obtention "
+"annotée, est ce qui est injecté au lieu de l'instance du composant en soi."
+
+#. Tag: para
+#: Annotations.xml:296
+#, no-c-format
+msgid ""
+"The next annotation supports the <emphasis>factory component</emphasis> "
+"pattern, where a Seam component is responsible for initializing the value of "
+"a context variable. This is especially useful for initializing any state "
+"needed for rendering the response to a non-faces request. It appears on a "
+"component method."
+msgstr ""
+"La prochaine annotation supporte le modèle <emphasis>factory component</"
+"emphasis>, où le composant Seam component est responsable d'initialiser la "
+"valeur de la variable de contexte. Cela est particulièrement utile pour "
+"initialiser tout état nécessaire pour afficher la réponse à une requête non-"
+"faces. Elle apparaît sur une méthode de composant. "
+
+#. Tag: literal
+#: Annotations.xml:301
+#, no-c-format
+msgid "@Factory"
+msgstr "@Factory"
+
+#. Tag: programlisting
+#: Annotations.xml:303
+#, no-c-format
+msgid "@Factory(\"processInstance\")"
+msgstr "@Factory(\"processInstance\")"
+
+#. Tag: para
+#: Annotations.xml:304
+#, no-c-format
+msgid ""
+"Specifies that the method of the component is used to initialize the value "
+"of the named context variable, when the context variable has no value. This "
+"style is used with methods that return <literal>void</literal>."
+msgstr ""
+"Spécifie que la méthode du composant est utilisée pour initialiser la valeur "
+"de la variable de contexte nommée, quand une variable de contexte n'a pas de "
+"valeur. Ce style est utilisé avec des méthodes qui retournent <literal>void</"
+"literal>."
+
+#. Tag: programlisting
+#: Annotations.xml:307
+#, no-c-format
+msgid "@Factory(\"processInstance\", scope=CONVERSATION)"
+msgstr "@Factory(\"processInstance\", scope=CONVERSATION)"
+
+#. Tag: para
+#: Annotations.xml:308
+#, no-c-format
+msgid ""
+"Specifies that the method returns a value that Seam should use to initialize "
+"the value of the named context variable, when the context variable has no "
+"value. This style is used with methods that return a value. If no scope is "
+"explicitly specified, the scope of the component with the <literal>@Factory</"
+"literal> method is used (unless the component is stateless, in which case "
+"the <literal>EVENT</literal> context is used)."
+msgstr ""
+"Spécifie que la méthode retourne une valeur que Sean devrait utiliser pour "
+"initialiser la valeur de la variable de contexte nommée, quand la variable "
+"de contexte n'a pas de valeur. Ce style est utilisé avec des méthodes qui "
+"retournent une valeur. Si aucune étendue n'est explicitement spécifiée, "
+"l'étendue du composant avec la méthode <literal>@Factory</literal> est "
+"utilisée (à moins que le composant ne soit stateless, dans ce cas le "
+"contexte <literal>EVENT</literal> est utilisé)."
+
+#. Tag: para
+#: Annotations.xml:313
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"If the method is a getter method, default to the JavaBeans property name."
+msgstr ""
+"<literal>value</literal> &mdash; spécifie le nom de la variable de contexte. "
+"Si la méthode est une méthode d'obtention, prenez par défaut le nom de la "
+"propriété des JavaBeans."
+
+#. Tag: para
+#: Annotations.xml:318
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; specifies the scope that Seam should bind "
+"the returned value to. Only meaningful for factory methods which return a "
+"value."
+msgstr ""
+"<literal>scope</literal> &mdash; spécifie l'étendue à laquelle Seam devrait "
+"lier la valeur retournée. Uniquement significatif pour les méthodes de "
+"fabrique qui retournent une valeur. "
+
+#. Tag: para
+#: Annotations.xml:326
+#, no-c-format
+msgid "This annotation lets you inject a <literal>Log</literal>:"
+msgstr "Cette annotation vous permet d'injecter un <literal>Log</literal>:"
+
+#. Tag: literal
+#: Annotations.xml:331
+#, no-c-format
+msgid "@Logger"
+msgstr "@Logger"
+
+#. Tag: programlisting
+#: Annotations.xml:333
+#, no-c-format
+msgid "@Logger(\"categoryName\")"
+msgstr "@Logger(\"categoryName\")"
+
+#. Tag: para
+#: Annotations.xml:334
+#, fuzzy, no-c-format
+msgid ""
+"Specifies that a component field is to be injected with an instance of "
+"<literal>org.jboss.seam.log.Log</literal>. For entity beans, the field must "
+"be declared as static."
+msgstr ""
+"Spécifie qu'un champ de composant doit être injecté avec une instance de "
+"<literal>org.jboss.seam.log.Log</literal>."
+
+#. Tag: para
+#: Annotations.xml:339
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the log category. "
+"Default to the name of the component class."
+msgstr ""
+"<literal>value</literal> &mdash; spécifie le nom de la catégorie du journal. "
+"Utilisez par défaut le nom de la classe du composant. "
+
+#. Tag: para
+#: Annotations.xml:347
+#, no-c-format
+msgid "The last annotation lets you inject a request parameter value:"
+msgstr ""
+"La dernière annotation vous permet d'injecter une valeur de paramètre de "
+"requête :"
+
+#. Tag: literal
+#: Annotations.xml:352
+#, no-c-format
+msgid "@RequestParameter"
+msgstr "@RequestParameter"
+
+#. Tag: programlisting
+#: Annotations.xml:354
+#, no-c-format
+msgid "@RequestParameter(\"parameterName\")"
+msgstr "@RequestParameter(\"parameterName\")"
+
+#. Tag: para
+#: Annotations.xml:355
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected with the value of a "
+"request parameter. Basic type conversions are performed automatically."
+msgstr ""
+"Spécifie  que l'attribut du composant doit être injecté avec la valeur d'un "
+"paramètre de requête. Les conversations typiques sont effectuées "
+"automatiquement. "
+
+#. Tag: para
+#: Annotations.xml:360
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the request "
+"parameter. Default to the name of the component attribute."
+msgstr ""
+"<literal>value</literal> &mdash; spécifie le nom du paramètre de la requête. "
+"Utilisez par défaut le nom de l'attribut du composant. "
+
+#. Tag: title
+#: Annotations.xml:371
+#, no-c-format
+msgid "Annotations for component lifecycle methods"
+msgstr "Les annotations pour les méthodes de cycle de vie du composant"
+
+#. Tag: para
+#: Annotations.xml:372
+#, no-c-format
+msgid ""
+"These annotations allow a component to react to its own lifecycle events. "
+"They occur on methods of the component. There may be only one of each per "
+"component class."
+msgstr ""
+"Ces annotations permettent à un composant de réagir à ses propres évènements "
+"de cycle de vie. Elles ont lieu sur les méthodes du composant. Il peut n'y "
+"en avoir qu'une par classe de composant. "
+
+#. Tag: literal
+#: Annotations.xml:377
+#, no-c-format
+msgid "<literal>@Create</literal>"
+msgstr "<literal>@Create</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:379
+#, no-c-format
+msgid "<programlisting>@Create</programlisting>"
+msgstr "<programlisting>@Create</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:380
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when an instance of the component "
+"is instantiated by Seam. Note that create methods are only supported for "
+"JavaBeans and stateful session beans."
+msgstr ""
+"Spécifie que la méthode devrait être appelée quand une instance du composant "
+"est instanciée par Seam. Notez que les méthodes create ne sont supportées "
+"que par les JavaBeans et beans session stateful. "
+
+#. Tag: literal
+#: Annotations.xml:386
+#, no-c-format
+msgid "<literal>@Destroy</literal>"
+msgstr "<literal>@Destroy</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:388
+#, no-c-format
+msgid "<programlisting>@Destroy</programlisting>"
+msgstr "<programlisting>@Destroy</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:389
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when the context ends and its "
+"context variables are destroyed. Note that create methods are only supported "
+"for JavaBeans and stateful session beans."
+msgstr ""
+"Spécifie que la méthode devrait être appelée quand le contexte se termine et "
+"ses variables de contexte sont détruites. Notez que les méthodes create ne "
+"sont supportées que par les JavaBeans et les beans session stateful. "
+
+#. Tag: para
+#: Annotations.xml:392
+#, no-c-format
+msgid ""
+"Note that all stateful session bean components <emphasis>must</emphasis> "
+"define a method annotated <literal>@Destroy @Remove</literal> in order to "
+"guarantee destruction of the stateful bean when a context ends."
+msgstr ""
+"Notez que tous les composants de bean session <emphasis>doivent</emphasis> "
+"définir une méthode annotée <literal>@Destroy @Remove</literal> pour "
+"garantir la destruction du bean stateful quand un contexte se termine. "
+
+#. Tag: para
+#: Annotations.xml:395
+#, no-c-format
+msgid ""
+"Destroy methods should be used only for cleanup. <emphasis>Seam catches, "
+"logs and swallows any exception that propagates out of a destroy method.</"
+"emphasis>"
+msgstr ""
+"Les méthodes destroy ne devraient être utilisées que pour le nettoyage. "
+"<emphasis>Seam attrape, consigne et intègre toute exception qui se propage "
+"hors d'une méthode destroy.</emphasis>"
+
+#. Tag: literal
+#: Annotations.xml:401
+#, no-c-format
+msgid "@Observer"
+msgstr "@Observer"
+
+#. Tag: programlisting
+#: Annotations.xml:403
+#, no-c-format
+msgid "@Observer(\"somethingChanged\")"
+msgstr "@Observer(\"somethingChanged\")"
+
+#. Tag: para
+#: Annotations.xml:404
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when a component-driven event of "
+"the specified type occurs."
+msgstr ""
+"Spécifie que la méthode devrait être appelée quand un évènement piloté par "
+"le composant, du type spécifié a lieu."
+
+#. Tag: programlisting
+#: Annotations.xml:407
+#, no-c-format
+msgid "@Observer(value=\"somethingChanged\",create=false)"
+msgstr "@Observer(value=\"somethingChanged\",create=false)"
+
+#. Tag: para
+#: Annotations.xml:408
+#, fuzzy, no-c-format
+msgid ""
+"Specifies that the method should be called when an event of the specified "
+"type occurs but that an instance should not be created if one doesn&#39;t "
+"exist. If an instance does not exist and create is false, the event will not "
+"be observed. The default value for create is true."
+msgstr ""
+"Spécifie que la méthode devrait être appelée quand un évènement du type "
+"spécifié a lieu mais qu'une instance ne devrait pas être créée s'il n'en "
+"existe pas. Si une instance n'existe pas et create est false, l'évènement ne "
+"sera pas observé. La valeur par défaut pour create est true. "
+
+#. Tag: title
+#: Annotations.xml:417
+#, no-c-format
+msgid "Annotations for context demarcation"
+msgstr "Les annotations pour la démarcation du contexte"
+
+#. Tag: para
+#: Annotations.xml:418
+#, no-c-format
+msgid ""
+"These annotations provide declarative conversation demarcation. They appear "
+"on methods of Seam components, usually action listener methods."
+msgstr ""
+"Ces annotations fournissent une démarcation de conversation déclarative. "
+"Elles apparaissent sur les méthodes des composants Seam, généralement des "
+"méthodes de listener d'actions. "
+
+#. Tag: para
+#: Annotations.xml:421
+#, no-c-format
+msgid ""
+"Every web request has a conversation context associated with it. Most of "
+"these conversations end at the end of the request. If you want a "
+"conversation that span multiple requests, you must \"promote\" the current "
+"conversation to a <emphasis>long-running conversation</emphasis> by calling "
+"a method marked with <literal>@Begin</literal>."
+msgstr ""
+"Chaque requête web a un contexte de conversation associé. La plupart de ces "
+"conversations se terminent à la finà la fin de la requête. Si vous désirez "
+"une conversation qui s'étende sur de multiples requêtes, vous devez "
+"\"promouvoir\" la conversation courante à une <emphasis>conversation de "
+"longue durée</emphasis> en appelant une méthode marquée avec "
+"<literal>@Begin</literal>."
+
+#. Tag: literal
+#: Annotations.xml:426
+#, no-c-format
+msgid "<literal>@Begin</literal>"
+msgstr "<literal>@Begin</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:430
+#, no-c-format
+msgid "<programlisting>@Begin</programlisting>"
+msgstr "<programlisting>@Begin</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:431
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation begins when this method returns a "
+"non-null outcome without exception."
+msgstr ""
+"Spécifie qu'une conversation de longue durée commence quand cette méthode "
+"retourne un résultat non-nulle sans exception. "
+
+#. Tag: programlisting
+#: Annotations.xml:436
+#, no-c-format
+msgid "@Begin(ifOutcome={\"success\", \"continue\"})"
+msgstr "@Begin(ifOutcome={\"success\", \"continue\"})"
+
+#. Tag: para
+#: Annotations.xml:437
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation begins when this action listener "
+"method returns with one of the given outcomes."
+msgstr ""
+"Spécifie qu'une conversation de longue durée commence quand cette méthode de "
+"listener d'actions retourne avec un des résultats donnés. "
+
+#. Tag: programlisting
+#: Annotations.xml:442
+#, no-c-format
+msgid "@Begin(join=true)"
+msgstr "@Begin(join=true)"
+
+#. Tag: para
+#: Annotations.xml:443
+#, no-c-format
+msgid ""
+"Specifies that if a long-running conversation is already in progress, the "
+"conversation context is simply propagated."
+msgstr ""
+"Spécifie que quand une conversation de longue durée est déjà en cours, le "
+"contexte de conversation est simplement propagé. "
+
+#. Tag: programlisting
+#: Annotations.xml:448
+#, no-c-format
+msgid "@Begin(nested=true)"
+msgstr "@Begin(nested=true)"
+
+#. Tag: para
+#: Annotations.xml:449
+#, no-c-format
+msgid ""
+"Specifies that if a long-running conversation is already in progress, a new "
+"<emphasis>nested</emphasis> conversation context begins. The nested "
+"conversation will end when the next <literal>@End</literal> is encountered, "
+"and the outer conversation will resume. It is perfectly legal for multiple "
+"nested conversations to exist concurrently in the same outer conversation."
+msgstr ""
+"Spécifie que si une conversation est déjà en cours, un nouveau contexte de "
+"conversation <emphasis>imbriqué</emphasis> commence. La conversation "
+"intégrée se terminera quand le prochain <literal>@End</literal> est "
+"rencontré, et que la conversation extérieure recommence. Il est parfaitement "
+"légal pour de multiples conversations imbriquées d'exister simultanément "
+"dans la même conversation extérieure. "
+
+#. Tag: programlisting
+#: Annotations.xml:454
+#, no-c-format
+msgid "@Begin(pageflow=\"process definition name\")"
+msgstr "@Begin(pageflow=\"process definition name\")"
+
+#. Tag: para
+#: Annotations.xml:455
+#, no-c-format
+msgid ""
+"Specifies a jBPM process definition name that defines the pageflow for this "
+"conversation."
+msgstr ""
+"Spécifie le nom de la définition du processus jBPM qui définit le flux de "
+"page pour cette conversation. "
+
+#. Tag: programlisting
+#: Annotations.xml:460
+#, no-c-format
+msgid "@Begin(flushMode=FlushModeType.MANUAL)"
+msgstr "@Begin(flushMode=FlushModeType.MANUAL)"
+
+#. Tag: para
+#: Annotations.xml:461
+#, no-c-format
+msgid ""
+"Specify the flush mode of any Seam-managed persistence contexts. "
+"<literal>flushMode=FlushModeType.MANUAL</literal> supports the use of "
+"<emphasis>atomic conversations</emphasis> where all write operations are "
+"queued in the conversation context until an explicit call to <literal>flush()"
+"</literal> (which usually occurs at the end of the conversation)."
+msgstr ""
+"Spécifie le mode flush de tous les contextes de persistance, gérés par Seam. "
+"<literal>flushMode=FlushModeType.MANUAL</literal> prend en charge "
+"l'utilisation de <emphasis>conversations atomiques</emphasis> où toutes les "
+"opérations sont en file d'attente dans le contexte de conversation jusqu'à "
+"un appel explicite de <literal>flush()</literal> (qui généralement a lieu à "
+"la fin de la conversation)."
+
+#. Tag: para
+#: Annotations.xml:468
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in a new long-running conversation context."
+msgstr ""
+"<literal>ifOutcome</literal> &mdash; spécifie le résultat JSF outcome ou les "
+"résultats qui résultent dans un nouveau contexte de conversation de longue "
+"durée. "
+
+#. Tag: para
+#: Annotations.xml:473
+#, no-c-format
+msgid ""
+"<literal>join</literal> &mdash; determines the behavior when a long-running "
+"conversation is already in progress. If <literal>true</literal>, the context "
+"is propagated. If <literal>false</literal>, an exception is thrown. Default "
+"to <literal>false</literal>. This setting is ignored when "
+"<literal>nested=true</literal> is specified"
+msgstr ""
+"<literal>join</literal> &mdash; détermine le comportement quand une "
+"conversation de longue durée est déjà en cours. Si à <literal>true</"
+"literal>, le contexte est propagé. Si à <literal>false</literal>, une "
+"exception est lancée. Utilisez la valeur par défaut <literal>false</"
+"literal>. Ce paramétrage est ignoré quand<literal>nested=true</literal> est "
+"spécifié"
+
+#. Tag: para
+#: Annotations.xml:478
+#, no-c-format
+msgid ""
+"<literal>nested</literal> &mdash; specifies that a nested conversation "
+"should be started if a long-running conversation is already in progress."
+msgstr ""
+"<literal>nested</literal> &mdash; spécifie qu'une conversation intégrée "
+"devrait être commencée si une conversation de longue durée est déjà en "
+"cours. "
+
+#. Tag: para
+#: Annotations.xml:483 Annotations.xml:550 Annotations.xml:574
+#, no-c-format
+msgid ""
+"<literal>flushMode</literal> &mdash; set the flush mode of any Seam-managed "
+"Hibernate sessions or JPA persistence contexts that are created during this "
+"conversation."
+msgstr ""
+"<literal>flushMode</literal> &mdash; définit le mode flush de toutes les "
+"sessions Hibernate, gérées par Seamou des contextes de persistance JPA qui "
+"sont créés durant la conversation. "
+
+#. Tag: para
+#: Annotations.xml:488
+#, no-c-format
+msgid ""
+"<literal>pageflow</literal> &mdash; a process definition name of a jBPM "
+"process definition deployed via <literal>org.jboss.seam.core.jbpm."
+"pageflowDefinitions.</literal>"
+msgstr ""
+"<literal>pageflow</literal> &mdash; le nom d'une définition de processus "
+"jBPM, déployée via <literal>org.jboss.seam.core.jbpm.pageflowDefinitions.</"
+"literal>"
+
+#. Tag: literal
+#: Annotations.xml:498
+#, no-c-format
+msgid "<literal>@End</literal>"
+msgstr "<literal>@End</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:504
+#, no-c-format
+msgid "<programlisting>@End</programlisting>"
+msgstr "<programlisting>@End</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:505
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation ends when this method returns a "
+"non-null outcome without exception."
+msgstr ""
+"Spécifie qu'une conversation de longue durée se termine quand cette méthode "
+"retourne un résultat non nulle sans exception."
+
+#. Tag: programlisting
+#: Annotations.xml:510
+#, no-c-format
+msgid ""
+"@End(ifOutcome={\"success\", \"error\"}, evenIfException={SomeException."
+"class, OtherException.class})"
+msgstr ""
+"@End(ifOutcome={\"success\", \"error\"}, evenIfException={SomeException."
+"class, OtherException.class})"
+
+#. Tag: para
+#: Annotations.xml:511
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation ends when this action listener "
+"method returns with one of the given outcomes or throws one of the specified "
+"classes of exception."
+msgstr ""
+"Spécifie qu'une conversation de longue durée se termine quand cette méthode "
+"de listener d'actions retourne avec un des résultats donnés ou lance une des "
+"classes d'exception spécifiées. "
+
+#. Tag: para
+#: Annotations.xml:518
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in the end of the current long-running conversation."
+msgstr ""
+"<literal>ifOutcome</literal> &mdash; spécifie le résultat JSF ou les "
+"résultats qui entraînent la fin de la conversation de longue durée courante. "
+
+#. Tag: para
+#: Annotations.xml:523 Annotations.xml:617
+#, no-c-format
+msgid ""
+"<literal>beforeRedirect</literal> &mdash; by default, the conversation will "
+"not actually be destroyed until after any redirect has occurred. Setting "
+"<literal>beforeRedirect=true</literal> specifies that the conversation "
+"should be destroyed at the end of the current request, and that the redirect "
+"will be processed in a new temporary conversation context."
+msgstr ""
+"<literal>beforeRedirect</literal> &mdash; par défaut, la conversation ne "
+"sera pas effectivement détruite avant qu'une redirection n'ait lieu. "
+"<literal>beforeRedirect=true</literal> spécifie que la conversation devrait "
+"être détruite à la fin de la requête courante et que la redirection sera "
+"traitée dans un nouveau contexte de conversation temporaire. "
+
+#. Tag: literal
+#: Annotations.xml:534
+#, no-c-format
+msgid "<literal>@StartTask</literal>"
+msgstr "<literal>@StartTask</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:536
+#, no-c-format
+msgid "<programlisting>@StartTask</programlisting>"
+msgstr "<programlisting>@StartTask</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:537
+#, no-c-format
+msgid ""
+"\"Starts\" a jBPM task. Specifies that a long-running conversation begins "
+"when this method returns a non-null outcome without exception. This "
+"conversation is associated with the jBPM task specified in the named request "
+"parameter. Within the context of this conversation, a business process "
+"context is also defined, for the business process instance of the task "
+"instance."
+msgstr ""
+"\"Démarre\" une tâche jBPM. Spécifie qu'une conversation de longue durée "
+"commence quand cette méthode retourne un résultat non nulle sans exception. "
+"Cette conversation est associée à la tâche jBPM spécifiée dans le paramètre "
+"de requête nommé. Dans le contexte de cette conversation, un contexte de "
+"processus métier est également défini, pour l'instance du processus métier "
+"de l'instance de la tâche. "
+
+#. Tag: para
+#: Annotations.xml:540
+#, no-c-format
+msgid ""
+"The jBPM <literal>TaskInstance</literal> will be available in a request "
+"context variable named <literal>taskInstance</literal>. The jPBM "
+"<literal>ProcessInstance</literal> will be available in a request context "
+"variable named <literal>processInstance</literal>. (Of course, these objects "
+"are available for injection via <literal>@In</literal>.)"
+msgstr ""
+"La <literal>TaskInstance</literal> jBPM sera disponible dans une variable de "
+"contexte de requête, appelée <literal>taskInstance</literal>. La "
+"<literal>ProcessInstance</literal> jBPM sera disponible dans une variable de "
+"contexte de requête, appelée  <literal>processInstance</literal>. "
+"(Évidemment, ces objets sont disponibles à l'injection via <literal>@In</"
+"literal>.)"
+
+#. Tag: para
+#: Annotations.xml:545 Annotations.xml:569
+#, no-c-format
+msgid ""
+"<literal>taskIdParameter</literal> &mdash; the name of a request parameter "
+"which holds the id of the task. Default to <literal>\"taskId\"</literal>, "
+"which is also the default used by the Seam <literal>taskList</literal> JSF "
+"component."
+msgstr ""
+"<literal>taskIdParameter</literal> &mdash; le nom du paramètre de requête "
+"qui stocke l'id de la tâche. Par défaut à <literal>\"taskId\"</literal>, qui "
+"est aussi la valeur par défaut utilisée par le composant <literal>taskList</"
+"literal> JSF de Seam. "
+
+#. Tag: literal
+#: Annotations.xml:558
+#, no-c-format
+msgid "<literal>@BeginTask</literal>"
+msgstr "<literal>@BeginTask</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:560
+#, no-c-format
+msgid "<programlisting>@BeginTask</programlisting>"
+msgstr "<programlisting>@BeginTask</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:561
+#, no-c-format
+msgid ""
+"Resumes work on an incomplete jBPM task. Specifies that a long-running "
+"conversation begins when this method returns a non-null outcome without "
+"exception. This conversation is associated with the jBPM task specified in "
+"the named request parameter. Within the context of this conversation, a "
+"business process context is also defined, for the business process instance "
+"of the task instance."
+msgstr ""
+"Reprend le travail d'une tâche jBPM incomplète. Spécifie qu'une conversation "
+"de longue durée commence quand cette méthode retourne un résultat non nulle "
+"sansexception. Cette conversation est associée à la tâche jBPM spécifiée "
+"dans le paramètre de requête nommé. Dans le contexte de cette conversation, "
+"un contexte de processus métier est également défini, pour l'instance du "
+"processus métier de l'instance de la tâche."
+
+#. Tag: para
+#: Annotations.xml:564
+#, no-c-format
+msgid ""
+"The jBPM <literal>TaskInstance</literal> will be available in a request "
+"context variable named <literal>taskInstance</literal>. The jPBM "
+"<literal>ProcessInstance</literal> will be available in a request context "
+"variable named <literal>processInstance</literal>."
+msgstr ""
+"La <literal>TaskInstance</literal> jBPM sera disponible dans une variable de "
+"contexte de requête, appelée<literal>taskInstance</literal>. "
+"La<literal>ProcessInstance</literal> jBPM sera disponible dans une variable "
+"de contexte de requête, appelée <literal>processInstance</literal>."
+
+#. Tag: literal
+#: Annotations.xml:582
+#, no-c-format
+msgid "<literal>@EndTask</literal>"
+msgstr "<literal>@EndTask</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:587
+#, no-c-format
+msgid "<programlisting>@EndTask</programlisting>"
+msgstr "<programlisting>@EndTask</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:588
+#, no-c-format
+msgid ""
+"\"Ends\" a jBPM task. Specifies that a long-running conversation ends when "
+"this method returns a non-null outcome, and that the current task is "
+"complete. Triggers a jBPM transition. The actual transition triggered will "
+"be the default transition unless the application has called "
+"<literal>Transition.setName()</literal> on the built-in component named "
+"<literal>transition</literal>."
+msgstr ""
+"\"Termine\" une tâche jBPM. Spécifie qu'une conversation de longue durée se "
+"termine quand cette méthode retourne un résultat non nulle, et que la tâche "
+"courante est complète. Déclenche une transition jBPM. La transition réelle "
+"déclenchée sera la transition par défaut à moins que l'application n'ait "
+"appelé <literal>Transition.setName()</literal> sur le composant imbriqué, "
+"appelé <literal>transition</literal>."
+
+#. Tag: programlisting
+#: Annotations.xml:593
+#, no-c-format
+msgid "@EndTask(transition=\"transitionName\")"
+msgstr "@EndTask(transition=\"transitionName\")"
+
+#. Tag: para
+#: Annotations.xml:594
+#, no-c-format
+msgid "Triggers the given jBPM transition."
+msgstr "Déclenche la transition jBPM donnée."
+
+#. Tag: programlisting
+#: Annotations.xml:599
+#, no-c-format
+msgid "@EndTask(ifOutcome={\"success\", \"continue\"})"
+msgstr "@EndTask(ifOutcome={\"success\", \"continue\"})"
+
+#. Tag: para
+#: Annotations.xml:600
+#, no-c-format
+msgid ""
+"Specifies that the task ends when this method returns one of the listed "
+"outcomes."
+msgstr ""
+"Spécifie que la tâche se termine quand cette méthode retourne un des "
+"résultats listés. "
+
+#. Tag: para
+#: Annotations.xml:607
+#, no-c-format
+msgid ""
+"<literal>transition</literal> &mdash; the name of the jBPM transition to be "
+"triggered when ending the task. Defaults to the default transition."
+msgstr ""
+"<literal>transition</literal> &mdash; le nom de la transition jBPM à "
+"déclencher quand la tâche se termine. Par défaut utilise la transition par "
+"défaut. "
+
+#. Tag: para
+#: Annotations.xml:612
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in the end of the task."
+msgstr ""
+"<literal>ifOutcome</literal> &mdash; spécifie le résultat JSF ou les "
+"résultats qui entraînent la fin de la tâche. "
+
+#. Tag: literal
+#: Annotations.xml:628
+#, no-c-format
+msgid "@CreateProcess"
+msgstr "@CreateProcess"
+
+#. Tag: programlisting
+#: Annotations.xml:630
+#, no-c-format
+msgid "@CreateProcess(definition=\"process definition name\")"
+msgstr "@CreateProcess(definition=\"process definition name\")"
+
+#. Tag: para
+#: Annotations.xml:631
+#, no-c-format
+msgid ""
+"Creates a new jBPM process instance when the method returns a non-null "
+"outcome without exception. The <literal>ProcessInstance</literal> object "
+"will be available in a context variable named <literal>processInstance</"
+"literal>."
+msgstr ""
+"Crée une nouvelle instance de processus jBPM quand la méthode retourne un "
+"résultat non nulle sans exception. L'objet <literal>ProcessInstance</"
+"literal> sera disponible dans une variable de contexte, appelée "
+"<literal>processInstance</literal>."
+
+#. Tag: para
+#: Annotations.xml:636
+#, no-c-format
+msgid ""
+"<literal>definition</literal> &mdash; the name of the jBPM process "
+"definition deployed via <literal>org.jboss.seam.core.jbpm."
+"processDefinitions</literal>."
+msgstr ""
+"<literal>definition</literal> &mdash; le nom de la définition du processus "
+"jBPM, déployé via <literal>org.jboss.seam.core.jbpm.processDefinitions</"
+"literal>."
+
+#. Tag: literal
+#: Annotations.xml:644
+#, no-c-format
+msgid "@ResumeProcess"
+msgstr "@ResumeProcess"
+
+#. Tag: programlisting
+#: Annotations.xml:646
+#, no-c-format
+msgid "@ResumeProcess(processIdParameter=\"processId\")"
+msgstr "@ResumeProcess(processIdParameter=\"processId\")"
+
+#. Tag: para
+#: Annotations.xml:647
+#, no-c-format
+msgid ""
+"Re-enters the scope of an existing jBPM process instance when the method "
+"returns a non-null outcome without exception. The <literal>ProcessInstance</"
+"literal> object will be available in a context variable named "
+"<literal>processInstance</literal>."
+msgstr ""
+"Re-saisit l'étendue d'une instance de processus jBPM existante quand la "
+"méthode retourne un résultat non nulle sans exception. L'objet "
+"<literal>ProcessInstance</literal> sera disponible dans une variable de "
+"contexte, appelée <literal>processInstance</literal>."
+
+#. Tag: para
+#: Annotations.xml:652
+#, no-c-format
+msgid ""
+"<literal>processIdParameter</literal> &mdash; the name a request parameter "
+"holding the process id. Default to <literal>\"processId\"</literal>."
+msgstr ""
+"<literal>processIdParameter</literal> &mdash; le nom d'un paramètre de "
+"requête contenant l'id du processus. Par défaut à <literal>\"processId\"</"
+"literal>."
+
+#. Tag: title
+#: Annotations.xml:663
+#, no-c-format
+msgid "Annotations for transaction demarcation"
+msgstr "Annotations pour la démarcation de transaction"
+
+#. Tag: para
+#: Annotations.xml:664
+#, no-c-format
+msgid ""
+"Seam provides an annotation that lets you force a rollback of the JTA "
+"transaction for certain action listener outcomes."
+msgstr ""
+"Seam fournit une annotation qui vous permet de forcer une annulation de "
+"transaction JTA transaction pour certains résultats de listener d'actions. "
+
+#. Tag: literal
+#: Annotations.xml:669
+#, no-c-format
+msgid "@Rollback"
+msgstr "@Rollback"
+
+#. Tag: programlisting
+#: Annotations.xml:671
+#, no-c-format
+msgid "@Rollback(ifOutcome={\"failure\", \"not-found\"})"
+msgstr "@Rollback(ifOutcome={\"failure\", \"not-found\"})"
+
+#. Tag: para
+#: Annotations.xml:672
+#, fuzzy, no-c-format
+msgid ""
+"If the outcome of the method matches any of the listed outcomes, or if no "
+"outcomes are listed, set the transaction to rollback only when the method "
+"completes."
+msgstr ""
+"Si le résultat de la méthode correspond à un des résultats listés, ou si "
+"aucun résultat n'est listé, ne définissez la transaction à annulation, que "
+"si la méthode s'achève."
+
+#. Tag: para
+#: Annotations.xml:677
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; the JSF outcomes that cause a "
+"transaction rollback (no outcomes is interpreted to mean any outcome)."
+msgstr ""
+"<literal>ifOutcome</literal> &mdash; les résultats JSF qui entraînent une "
+"annulation de transaction(aucun résultat est interprété pour signifier "
+"n'importe quel résultat). "
+
+#. Tag: literal
+#: Annotations.xml:685
+#, no-c-format
+msgid "<literal>@Transactional</literal>"
+msgstr "<literal>@Transactional</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:687
+#, no-c-format
+msgid "<programlisting>@Transactional</programlisting>"
+msgstr "<programlisting>@Transactional</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:688
+#, no-c-format
+msgid ""
+"Specifies that a JavaBean component should have a similar transactional "
+"behavior to the default behavior of a session bean component. ie. method "
+"invocations should take place in a transaction, and if no transaction exists "
+"when the method is called, a transaction will be started just for that "
+"method. This annotation may be applied at either class or method level."
+msgstr ""
+"Spécifie qu'un composant JavaBean devrait avoir un comportement "
+"transactionnel similaire au comportement par défaut d'un composant de bean "
+"session. C'est-à-dire que les appels de méthodes devraient avoir lieu dans "
+"une transaction, et si aucune transaction n'existe quand la méthode est "
+"appelée, une transaction sera démarrée uniquement pour cette méthode. Cette "
+"annotation pourra être appliquée au niveau de la classe ou de la méthode. "
+
+#. Tag: para
+#: Annotations.xml:694
+#, no-c-format
+msgid ""
+"Seam applications usually use the standard EJB3 annotations for all other "
+"transaction demarcation needs."
+msgstr ""
+"Les applications Seam utilisent généralement des annotations EJB3 standard "
+"pour toute autre exigence de démarcation de transaction."
+
+#. Tag: title
+#: Annotations.xml:700
+#, no-c-format
+msgid "Annotations for exceptions"
+msgstr "Annotations pour les exceptions"
+
+#. Tag: para
+#: Annotations.xml:701
+#, no-c-format
+msgid ""
+"These annotations let you specify how Seam should handle an exception that "
+"propagates out of a Seam component."
+msgstr ""
+"Ces annotations vous permettent de spécifier comment Seam doit traiter une "
+"exception qui se propage à partir d'un composant Seam. "
+
+#. Tag: literal
+#: Annotations.xml:706
+#, no-c-format
+msgid "@Redirect"
+msgstr "@Redirect"
+
+#. Tag: programlisting
+#: Annotations.xml:708
+#, no-c-format
+msgid "@Redirect(viewId=\"error.jsp\")"
+msgstr "@Redirect(viewId=\"error.jsp\")"
+
+#. Tag: para
+#: Annotations.xml:709
+#, no-c-format
+msgid ""
+"Specifies that the annotated exception causes a browser redirect to a "
+"specified view id."
+msgstr ""
+"Spécifie que l'exception annotée entraîne une redirection du navigateur vers "
+"un id d'affichage spécifié."
+
+#. Tag: para
+#: Annotations.xml:714
+#, no-c-format
+msgid ""
+"<literal>viewId</literal> &mdash; specifies the JSF view id to redirect to."
+msgstr ""
+"<literal>viewId</literal> &mdash; spécifie l'id d'affichage JSF auquel "
+"effectuer la redirection."
+
+#. Tag: para
+#: Annotations.xml:719
+#, no-c-format
+msgid ""
+"<literal>message</literal> &mdash; a message to be displayed, default to the "
+"exception message."
+msgstr ""
+"<literal>message</literal> &mdash; un message à afficher, par défaut au "
+"message d'exception. "
+
+#. Tag: para
+#: Annotations.xml:724 Annotations.xml:750
+#, no-c-format
+msgid ""
+"<literal>end</literal> &mdash; specifies that the long-running conversation "
+"should end, default to <literal>false</literal>."
+msgstr ""
+"<literal>end</literal> &mdash; spécifie que la conversation de longue durée "
+"devrait se terminer, par défaut à <literal>false</literal>."
+
+#. Tag: literal
+#: Annotations.xml:732
+#, no-c-format
+msgid "@HttpError"
+msgstr "@HttpError"
+
+#. Tag: programlisting
+#: Annotations.xml:734
+#, no-c-format
+msgid "@HttpError(errorCode=404)"
+msgstr "@HttpError(errorCode=404)"
+
+#. Tag: para
+#: Annotations.xml:735
+#, no-c-format
+msgid "Specifies that the annotated exception causes a HTTP error to be sent."
+msgstr "Spécifie que l'exception annotée entraîne une erreur HTTP à envoyer. "
+
+#. Tag: para
+#: Annotations.xml:740
+#, no-c-format
+msgid ""
+"<literal>errorCode</literal> &mdash; the HTTP error code, default to "
+"<literal>500</literal>."
+msgstr ""
+"<literal>errorCode</literal> &mdash; le code d'erreur HTTP, par défaut à "
+"<literal>500</literal>."
+
+#. Tag: para
+#: Annotations.xml:745
+#, no-c-format
+msgid ""
+"<literal>message</literal> &mdash; a message to be sent with the HTTP error, "
+"default to the exception message."
+msgstr ""
+"<literal>message</literal> &mdash; un message à envoyer avec l'erreur HTTP, "
+"par défaut à un message d'exception."
+
+#. Tag: title
+#: Annotations.xml:761
+#, no-c-format
+msgid "Annotations for validation"
+msgstr "Annotations pour la validation"
+
+#. Tag: para
+#: Annotations.xml:762
+#, no-c-format
+msgid ""
+"This annotation triggers Hibernate Validator. It appears on a method of a "
+"Seam component, almost always an action listener method."
+msgstr ""
+"Cette annotation déclenche le Hibernate Validator. Elle apparaît sur une "
+"méthode d'un composant Seam, presque toujours une méthode de listener "
+"d'actions. "
+
+#. Tag: para
+#: Annotations.xml:765
+#, no-c-format
+msgid ""
+"Please refer to the documentation for the Hibernate Annotations package for "
+"information about the annotations defined by the Hibernate Validator "
+"framework."
+msgstr ""
+"Veuillez consulter la documentation pour le paquetage des Annotations "
+"Hibernate pour les informations sur les annotations définies par le "
+"framework Hibernate Validator."
+
+#. Tag: emphasis
+#: Annotations.xml:769
+#, no-c-format
+msgid ""
+"Note that use of <literal>@IfInvalid</literal> is now semi-deprecated and "
+"<literal>&lt;s:validateAll&gt;</literal> is now preferred."
+msgstr ""
+"Notez que l'utilisation de <literal>@IfInvalid</literal> est maintenant semi-"
+"abandonnée et qu'il est préférable d'utiliser <literal>&lt;s:validateAll&gt;"
+"</literal>."
+
+#. Tag: literal
+#: Annotations.xml:773
+#, no-c-format
+msgid "@IfInvalid"
+msgstr "@IfInvalid"
+
+#. Tag: programlisting
+#: Annotations.xml:775
+#, no-c-format
+msgid "@IfInvalid(outcome=\"invalid\", refreshEntities=true)"
+msgstr "@IfInvalid(outcome=\"invalid\", refreshEntities=true)"
+
+#. Tag: para
+#: Annotations.xml:776
+#, no-c-format
+msgid ""
+"Specifies that Hibernate Validator should validate the component before the "
+"method is invoked. If the invocation fails, the specified outcome will be "
+"returned, and the validation failure messages returned by Hibernate "
+"Validator will be added to the <literal>FacesContext</literal>. Otherwise, "
+"the invocation will proceed."
+msgstr ""
+"Spécifie que le Hibernate Validator devrait valider le composant avec que la "
+"méthode ne soit appelée. Si l'appel échoue, le résultat spécifié sera "
+"retourné, et les messages d'échec de validation retournés par le Hibernate "
+"Validator seront ajoutés au <literal>FacesContext</literal>. Dans le cas "
+"contraire, l'appel sera effectué."
+
+#. Tag: para
+#: Annotations.xml:781
+#, no-c-format
+msgid ""
+"<literal>outcome</literal> &mdash; the JSF outcome when validation fails."
+msgstr ""
+"<literal>outcome</literal> &mdash; le résultat JSF quand la validation "
+"échoue. "
+
+#. Tag: para
+#: Annotations.xml:786
+#, no-c-format
+msgid ""
+"<literal>refreshEntities</literal> &mdash; specifies that any invalid entity "
+"in the managed state should be refreshed from the database when validation "
+"fails. Default to <literal>false</literal>. (Useful with extended "
+"persistence contexts.)"
+msgstr ""
+"<literal>refreshEntities</literal> &mdash; spécifie que toute entité "
+"invalide dans l'état géré devrait être actualisé à partir de la base de "
+"données quand la validation échoue. Par défaut à <literal>false</literal>. "
+"(Utile avec les contextes de persistance étendus.)"
+
+#. Tag: title
+#: Annotations.xml:797
+#, no-c-format
+msgid "Annotations for Seam Remoting"
+msgstr "Annotations pour Seam Remoting"
+
+#. Tag: para
+#: Annotations.xml:798
+#, no-c-format
+msgid ""
+"Seam Remoting requires that the local interface of a session bean be "
+"annotated with the following annotation:"
+msgstr ""
+"Seam Remoting exige que l'interface locale d'un bean session soit annoté "
+"avec l'annotation suivante :"
+
+#. Tag: literal
+#: Annotations.xml:803
+#, no-c-format
+msgid "@WebRemote"
+msgstr "@WebRemote"
+
+#. Tag: programlisting
+#: Annotations.xml:805
+#, no-c-format
+msgid "@WebRemote(exclude=\"path.to.exclude\")"
+msgstr "@WebRemote(exclude=\"path.to.exclude\")"
+
+#. Tag: para
+#: Annotations.xml:806
+#, fuzzy, no-c-format
+msgid ""
+"Indicates that the annotated method may be called from client-side "
+"JavaScript. The <literal>exclude</literal> property is optional and allows "
+"objects to be excluded from the result&#39;s object graph (see the Remoting "
+"chapter for more details)."
+msgstr ""
+"Indique qu'une méthode annotée peut être appelée depuis JavaScript, côté "
+"client. JavaScript. La propriété <literal>exclude</literal> est optionnelle "
+"et permet aux objets d'être exclus du graphe des résulats d'objet (voir le "
+"chapitre Remoting pour de plus amples informations)."
+
+#. Tag: title
+#: Annotations.xml:815
+#, no-c-format
+msgid "Annotations for Seam interceptors"
+msgstr "Annotations pour les intercepteurs Seam "
+
+#. Tag: para
+#: Annotations.xml:816
+#, no-c-format
+msgid "The following annotations appear on Seam interceptor classes."
+msgstr ""
+"Les annotations suivantes apparaissent sur les classes d'intercepteurs Seam "
+
+#. Tag: para
+#: Annotations.xml:819
+#, no-c-format
+msgid ""
+"Please refer to the documentation for the EJB 3.0 specification for "
+"information about the annotations required for EJB interceptor definition."
+msgstr ""
+"Veuillez consulter la documentation pour les spécifications EJB 3.0 pour "
+"plus d'informations sur les annotations requises pour la définition de "
+"l'intercepteur EJB."
+
+#. Tag: literal
+#: Annotations.xml:824
+#, no-c-format
+msgid "@Interceptor"
+msgstr "@Interceptor"
+
+#. Tag: programlisting
+#: Annotations.xml:829
+#, no-c-format
+msgid "@Interceptor(stateless=true)"
+msgstr "@Interceptor(stateless=true)"
+
+#. Tag: para
+#: Annotations.xml:830
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is stateless and Seam may optimize "
+"replication."
+msgstr ""
+"Spécifie que l'intercepteur est stateless et que Seam pourra optimiser la "
+"réplication."
+
+#. Tag: programlisting
+#: Annotations.xml:835
+#, no-c-format
+msgid "@Interceptor(type=CLIENT)"
+msgstr "@Interceptor(type=CLIENT)"
+
+#. Tag: para
+#: Annotations.xml:836
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is a \"client-side\" interceptor that is "
+"called before the EJB container."
+msgstr ""
+"Spécifie que l'intercepteur est un intercepteur \"côté client\" qui est "
+"appelé avant le conteneur EJB."
+
+#. Tag: programlisting
+#: Annotations.xml:841
+#, no-c-format
+msgid "@Interceptor(around={SomeInterceptor.class, OtherInterceptor.class})"
+msgstr "@Interceptor(around={SomeInterceptor.class, OtherInterceptor.class})"
+
+#. Tag: para
+#: Annotations.xml:842
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is positioned higher in the stack than the "
+"given interceptors."
+msgstr ""
+"Spécifie que cet intercepteur est plus haut dans la pile que les "
+"intercepteurs donnés. "
+
+#. Tag: programlisting
+#: Annotations.xml:847
+#, no-c-format
+msgid "@Interceptor(within={SomeInterceptor.class, OtherInterceptor.class})"
+msgstr "@Interceptor(within={SomeInterceptor.class, OtherInterceptor.class})"
+
+#. Tag: para
+#: Annotations.xml:848
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is positioned deeper in the stack than the "
+"given interceptors."
+msgstr ""
+"Spécifie que cet intercepteur est plus en profondeur dans la pile que les "
+"intercepteurs donnés. "
+
+#. Tag: title
+#: Annotations.xml:860
+#, no-c-format
+msgid "Annotations for asynchronicity"
+msgstr "Annotations pour l'asynchronicité"
+
+#. Tag: para
+#: Annotations.xml:861
+#, no-c-format
+msgid ""
+"The following annotations are used to declare an asynchronous method, for "
+"example:"
+msgstr ""
+"Les annotations suivantes sont utilisées pour déclarer une méthode "
+"asynchrone, par exemple :"
+
+#. Tag: programlisting
+#: Annotations.xml:864
+#, no-c-format
+msgid ""
+"@Asynchronous public void scheduleAlert(Alert alert, @Expiration Date date) "
+"{ ... }"
+msgstr ""
+"@Asynchronous public void scheduleAlert(Alert alert, @Expiration Date date) "
+"{ ... }"
+
+#. Tag: programlisting
+#: Annotations.xml:865
+#, fuzzy, no-c-format
+msgid ""
+"@Asynchronous public Timer scheduleAlerts(Alert alert, @Expiration Date "
+"date, \n"
+"@IntervalDuration long interval) { ... }"
+msgstr ""
+"@Asynchronous public Timer scheduleAlerts(Alert alert, @Expiration Date "
+"date, \n"
+"    @IntervalDuration long interval) { ... }"
+
+#. Tag: literal
+#: Annotations.xml:868
+#, no-c-format
+msgid "<literal>@Asynchronous</literal>"
+msgstr "<literal>@Asynchronous</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:870
+#, no-c-format
+msgid "<programlisting>@Asynchronous</programlisting>"
+msgstr "<programlisting>@Asynchronous</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:871
+#, no-c-format
+msgid "Specifies that the method call is processed asynchronously."
+msgstr "Spécifie que l'appel de la méthode est traitée de façon asynchrone. "
+
+#. Tag: literal
+#: Annotations.xml:877
+#, no-c-format
+msgid "<literal>@Duration</literal>"
+msgstr "<literal>@Duration</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:879
+#, no-c-format
+msgid "<programlisting>@Duration</programlisting>"
+msgstr "<programlisting>@Duration</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:880
+#, no-c-format
+msgid ""
+"Specifies that a parameter of the asynchronous call is the duration before "
+"the call is processed (or first processed for recurring calls)."
+msgstr ""
+"Spécifie qu'un paramètre d'appel asynchrone est la durée avant que l'appel "
+"soit traité (ou traité initialement pour les appels récurrents)."
+
+#. Tag: literal
+#: Annotations.xml:886
+#, no-c-format
+msgid "<literal>@Expiration</literal>"
+msgstr "<literal>@Expiration</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:888
+#, no-c-format
+msgid "<programlisting>@Expiration</programlisting>"
+msgstr "<programlisting>@Expiration</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:889
+#, no-c-format
+msgid ""
+"Specifies that a parameter of the asynchronous call is the datetime at which "
+"the call is processed (or first processed for recurring calls)."
+msgstr ""
+"Spécifies qu'un paramètre d'appel asynchrone est la date et l'heure "
+"auxquelles l'appel est traité (ou traité initialement pour les appels "
+"récurrents). "
+
+#. Tag: literal
+#: Annotations.xml:895
+#, no-c-format
+msgid "<literal>@IntervalDuration</literal>"
+msgstr "<literal>@IntervalDuration</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:897
+#, no-c-format
+msgid "<programlisting>@IntervalDuration</programlisting>"
+msgstr "<programlisting>@IntervalDuration</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:898
+#, no-c-format
+msgid ""
+"Specifies that an asynchronous method call recurs, and that the annotationed "
+"parameter is duration between recurrences."
+msgstr ""
+"Spécifie qu'un appel de méthode asynchrone se reproduit et que le paramètre "
+"annoté est la durée entre les récurrences. "
+
+#. Tag: title
+#: Annotations.xml:907
+#, no-c-format
+msgid "Annotations for use with JSF <literal>dataTable</literal>"
+msgstr ""
+"Annotations pour l'utilisation avec la <literal>dataTable</literal> JSF "
+
+#. Tag: para
+#: Annotations.xml:908
+#, no-c-format
+msgid ""
+"The following annotations make it easy to implement clickable lists backed "
+"by a stateful session bean. They appear on attributes."
+msgstr ""
+"Les annotations suivantes facilitent l'implémentation des listes cliquables, "
+"avec le support d'un bean session stateful. Elles apparaissent sur les "
+"attributs. "
+
+#. Tag: literal
+#: Annotations.xml:913
+#, no-c-format
+msgid "@DataModel"
+msgstr "@DataModel"
+
+#. Tag: programlisting
+#: Annotations.xml:915
+#, no-c-format
+msgid "@DataModel(\"variableName\")"
+msgstr "@DataModel(\"variableName\")"
+
+#. Tag: para
+#: Annotations.xml:916
+#, fuzzy, no-c-format
+msgid ""
+"Exposes an attribute of type <literal>List</literal>, <literal>Map</"
+"literal>, <literal>Set</literal> or <literal>Object[]</literal> as a JSF "
+"<literal>DataModel</literal> into the scope of the owning component (or the "
+"<literal>EVENT</literal> scope if the owning component is "
+"<literal>STATELESS</literal>). In the case of <literal>Map</literal>, each "
+"row of the <literal>DataModel</literal> is a <literal>Map.Entry</literal>."
+msgstr ""
+"Expose un attribut de type <literal>List</literal>, <literal>Map</literal>, "
+"<literal>Set</literal> ou <literal>Object[]</literal> en tant que "
+"<literal>DataModel</literal> JSF dans l'étendue du composant (ou l'étendue "
+"<literal>EVENT</literal> si le composant est <literal>STATELESS</literal>). "
+"Dans le cas de <literal>Map</literal>, chaque rangée du <literal>DataModel</"
+"literal> est un <literal>Map.Entry</literal>."
+
+#. Tag: para
+#: Annotations.xml:921
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; name of the conversation context variable. "
+"Default to the attribute name."
+msgstr ""
+"<literal>value</literal> &mdash; nom de la variable de contexte de "
+"conversation. Par défaut au nom de l'attribut. "
+
+#. Tag: para
+#: Annotations.xml:926
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; if <literal>scope=ScopeType.PAGE</literal> "
+"is explicitly specified, the <literal>DataModel</literal> will be kept in "
+"the <literal>PAGE</literal> context."
+msgstr ""
+"<literal>scope</literal> &mdash; si <literal>scope=ScopeType.PAGE</literal> "
+"est explicitement spécifié, le <literal>DataModel</literal> sera stocké dans "
+"le contexte <literal>PAGE</literal>."
+
+#. Tag: literal
+#: Annotations.xml:934
+#, no-c-format
+msgid "<literal>@DataModelSelection</literal>"
+msgstr "<literal>@DataModelSelection</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:936
+#, no-c-format
+msgid "<programlisting>@DataModelSelection</programlisting>"
+msgstr "<programlisting>@DataModelSelection</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:937
+#, no-c-format
+msgid ""
+"Injects the selected value from the JSF <literal>DataModel</literal> (this "
+"is the element of the underlying collection, or the map value)."
+msgstr ""
+"Injecte la valeur sélectionnée depuis le <literal>DataModel</literal> JSF "
+"(c'est l'élément de la collection sous-jacente, ou la valeur de la mappe)."
+
+#. Tag: para
+#: Annotations.xml:942 Annotations.xml:958
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; name of the conversation context variable. "
+"Not needed if there is exactly one <literal>@DataModel</literal> in the "
+"component."
+msgstr ""
+"<literal>value</literal> &mdash; nom de la variable de contexte de la "
+"conversation. Pas nécessaire s'il existe exactement un <literal>@DataModel</"
+"literal> dans le composant. "
+
+#. Tag: literal
+#: Annotations.xml:950
+#, no-c-format
+msgid "<literal>@DataModelSelectionIndex</literal>"
+msgstr "<literal>@DataModelSelectionIndex</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:952
+#, no-c-format
+msgid "<programlisting>@DataModelSelectionIndex</programlisting>"
+msgstr "<programlisting>@DataModelSelectionIndex</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:953
+#, no-c-format
+msgid ""
+"Exposes the selection index of the JSF <literal>DataModel</literal> as an "
+"attribute of the component (this is the row number of the underlying "
+"collection, or the map key)."
+msgstr ""
+"Expose l'index de sélection du <literal>DataModel</literal> JSF en tant "
+"qu'attribut du composant (c'est le numéro de la rangée de la collection sous-"
+"jacente, ou la clé de la mappe)."
+
+#. Tag: title
+#: Annotations.xml:969
+#, no-c-format
+msgid "Meta-annotations for databinding"
+msgstr "Méta-annotations pour la liaison des données"
+
+#. Tag: para
+#: Annotations.xml:970
+#, no-c-format
+msgid ""
+"These meta-annotations make it possible to implement similar functionality "
+"to <literal>@DataModel</literal> and <literal>@DataModelSelection</literal> "
+"for other datastructures apart from lists."
+msgstr ""
+"Ces méta-annotations offre la possibilité d'implémenter une fonctionnalité "
+"similaire à <literal>@DataModel</literal> et <literal>@DataModelSelection</"
+"literal> pour d'autres structures de données que les listes. "
+
+#. Tag: literal
+#: Annotations.xml:975
+#, no-c-format
+msgid "@DataBinderClass"
+msgstr "@DataBinderClass"
+
+#. Tag: programlisting
+#: Annotations.xml:977
+#, no-c-format
+msgid "@DataBinderClass(DataModelBinder.class)"
+msgstr "@DataBinderClass(DataModelBinder.class)"
+
+#. Tag: para
+#: Annotations.xml:978
+#, no-c-format
+msgid "Specifies that an annotation is a databinding annotation."
+msgstr "Spécifie qu'une annotation est une annotation de liaison de données."
+
+#. Tag: literal
+#: Annotations.xml:984
+#, no-c-format
+msgid "@DataSelectorClass"
+msgstr "@DataSelectorClass"
+
+#. Tag: programlisting
+#: Annotations.xml:986
+#, no-c-format
+msgid "@DataSelectorClass(DataModelSelector.class)"
+msgstr "@DataSelectorClass(DataModelSelector.class)"
+
+#. Tag: para
+#: Annotations.xml:987
+#, no-c-format
+msgid "Specifies that an annotation is a dataselection annotation."
+msgstr ""
+"Spécifie qu'une annotation est une annotation de sélection de données.  "
+
+#. Tag: title
+#: Annotations.xml:996
+#, no-c-format
+msgid "Annotations for packaging"
+msgstr "Annotations pour l'empaquetage"
+
+#. Tag: para
+#: Annotations.xml:997
+#, no-c-format
+msgid ""
+"This annotation provides a mechanism for declaring information about a set "
+"of components that are packaged together. It can be applied to any Java "
+"package."
+msgstr ""
+"Cette annotation fournit un mécanisme pour déclarer des informations sur un "
+"ensemble de composants qui sont empaquetés ensemble. Il peut être appliqué à "
+"tout paquetage Java."
+
+#. Tag: literal
+#: Annotations.xml:1002
+#, no-c-format
+msgid "@Namespace"
+msgstr "@Namespace"
+
+#. Tag: programlisting
+#: Annotations.xml:1004
+#, no-c-format
+msgid "@Namespace(value=\"http://jboss.com/products/seam/example/seampay\")"
+msgstr "@Namespace(value=\"http://jboss.com/products/seam/example/seampay\")"
+
+#. Tag: para
+#: Annotations.xml:1005
+#, no-c-format
+msgid ""
+"Specifies that components in the current package are associated with the "
+"given namespace. The declared namespace can be used as an XML namespace in a "
+"<literal>components.xml</literal> file to simplify application configuration."
+msgstr ""
+"Spécifie que les composants dans le paquetage courant sont associés à "
+"l'espace de nom donné. L'espace de nom déclaré peut être utilisé en tant "
+"qu'espace de nom XML dans un fichier <literal>components.xml</literal> pour "
+"simplifier la configuration de l'application. "
+
+#. Tag: programlisting
+#: Annotations.xml:1008
+#, no-c-format
+msgid ""
+"@Namespace(value=\"http://jboss.com/products/seam/core\", prefix=\"org.jboss."
+"seam.core\")"
+msgstr ""
+"@Namespace(value=\"http://jboss.com/products/seam/core\", prefix=\"org.jboss."
+"seam.core\")"
+
+#. Tag: para
+#: Annotations.xml:1009
+#, no-c-format
+msgid ""
+"Specifies a namespace to associate with a given package. Additionally, it "
+"specifies a component name prefix to be applied to component names specified "
+"in the XML file. For example, an XML element named <literal>microcontainer</"
+"literal> that is associated with this namespace would be understood to "
+"actually refere to a component named <literal>org.jboss.seam.core."
+"microcontainer</literal>."
+msgstr ""
+"Spécifie un espace de nom à associer à un paquetage donné. Par ailleurs, il "
+"spécifie un préfixe de nom de composant à appliquer à des noms de composant "
+"spécifiés dans le fichier XML. Par exemple, un élément XML, appelé "
+"<literal>microcontainer</literal> qui est associé à cet espace de nom, "
+"serait considéré comme se référant à un composant, appelé <literal>org.jboss."
+"seam.core.microcontainer</literal>."

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Book_Info.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Book_Info.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Book_Info.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,56 @@
+# translation of Book_Info.po to french
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# myriam malga <mmalga at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Book_Info\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-02-04 23:29+0000\n"
+"PO-Revision-Date: 2007-07-02 10:24+1000\n"
+"Last-Translator: myriam malga <mmalga at redhat.com>\n"
+"Language-Team: french\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Book_Info.xml:5
+#, no-c-format
+msgid "Seam Reference Guide"
+msgstr ""
+
+#. Tag: subtitle
+#: Book_Info.xml:6
+#, no-c-format
+msgid "JBoss Enterprise Application Platform"
+msgstr ""
+
+#. Tag: para
+#: Book_Info.xml:11
+#, no-c-format
+msgid ""
+"This book is a Reference Guide to Seam 1.2 for JBoss Enterprise Application "
+"Platform 4.3."
+msgstr ""
+
+#. Tag: holder
+#: Book_Info.xml:22
+#, no-c-format
+msgid "&HOLDER;"
+msgstr ""
+
+#~ msgid "Seam - Contextual Components"
+#~ msgstr "Seam - Composants contextuels"
+
+#~ msgid "A Framework for Java EE 5"
+#~ msgstr "Un framework pour Java EE 5"
+
+#~ msgid "This book is a Reference Guide for Seam"
+#~ msgstr "Ce livre est un Guide de Référence pour Seam"
+
+#~ msgid "&FORMAL-RHI;"
+#~ msgstr "&FORMAL-RHI;"

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Cache.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Cache.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Cache.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,457 @@
+# translation of Cache.po to french
+# myriam malga <mmalga at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Cache\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2007-07-17 14:44+1000\n"
+"Last-Translator: myriam malga <mmalga at redhat.com>\n"
+"Language-Team: french\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Cache.xml:6
+#, no-c-format
+msgid "Caching"
+msgstr "Cache"
+
+#. Tag: para
+#: Cache.xml:7
+#, fuzzy, no-c-format
+msgid ""
+"In almost all enterprise applications, the database is the primary "
+"bottleneck, and the least scalable tier of the runtime environment. People "
+"from a PHP/Ruby environment will try to tell you that so-called \"shared "
+"nothing\" architectures scale well. While that may be literally true, I "
+"don&#39;t know of many interesting multi-user applications which can be "
+"implemented with no sharing of resources between different nodes of the "
+"cluster. What these silly people are really thinking of is a \"share nothing "
+"except for the database\" architecture. Of course, sharing the database is "
+"the primary problem with scaling a multi-user application&mdash;so the claim "
+"that this architecture is highly scalable is absurd, and tells you a lot "
+"about the kind of applications that these folks spend most of their time "
+"working on."
+msgstr ""
+"Dans la plupart des applications d'entreprise, la base de données représente "
+"le premier goulet d'étranglement, et le tier le moins scalable de "
+"l'environnement en exécution. Des personnes des environnements PHP/Ruby "
+"essaierons de vous dire que ces architectures \"sans partage\" sont "
+"facilement scalables. Même si cela peut littéralement être vrai, je ne "
+"connais aucune application multi utilisateurs intéressante qui puisse être "
+"implémentée sans partage de ressources entre différents noeuds d'un cluster. "
+"Ces personnes bizarres pensent en fait à des architectures qui \"ne "
+"partagent rien, exceptée base de données\". Bien sûr, le partage de la base "
+"de données est le problème majeur pour assurer la scalabilité des "
+"applications multi utilisateurs - donc leurs propos sont complètement "
+"absurdes, et cela nous en apprend beaucoup sur le type d'applications que "
+"ces personnes passent leur temps à écrire."
+
+#. Tag: para
+#: Cache.xml:10
+#, no-c-format
+msgid ""
+"Almost anything we can possibly do to share the database <emphasis>less "
+"often</emphasis> is worth doing."
+msgstr ""
+"Tout ce que nous pouvons faire pour partager la base de données <emphasis>le "
+"moins souvent possible</emphasis> vaut la peine de le faire."
+
+#. Tag: para
+#: Cache.xml:13
+#, no-c-format
+msgid ""
+"This calls for a cache. Well, not just one cache. A well designed Seam "
+"application will feature a rich, multi-layered caching strategy that impacts "
+"every layer of the application:"
+msgstr ""
+"Cela requiert un cache. En fait, pas seuleument un cache. Une application "
+"Seam bien conçue fournira une stratégie de cache fine, en plusieurs couches "
+"qui impacte toutes les couches de l'application:"
+
+#. Tag: para
+#: Cache.xml:18
+#, fuzzy, no-c-format
+msgid ""
+"The database, of course, has its own cache. This is super-important, but "
+"can&#39;t scale like a cache in the application tier."
+msgstr ""
+"La base de données a, bien sur, son propre cache. Il est très important, "
+"mais ne scale pas comme un cache au niveau du tier applicatif."
+
+#. Tag: para
+#: Cache.xml:23
+#, no-c-format
+msgid ""
+"Your ORM solution (Hibernate, or some other JPA implementation) has a second-"
+"level cache of data from the database. This is a very powerful capability, "
+"but is often misused. In a clustered environment, keeping the data in the "
+"cache transactionally consistent across the whole cluster, and with the "
+"database, is quite expensive. It makes most sense for data which is shared "
+"between many users, and is updated rarely. In traditional stateless "
+"architectures, people often try to use the second-level cache for "
+"conversational state. This is always bad, and is especially wrong in Seam."
+msgstr ""
+"Votre solution de mapping objet relationnnel (Hibernate ou quelques autres "
+"implémentations de JPA) possède un cache de second niveau pour les données "
+"provenant de la base de données. C'est un cache très puissant, mais parfois "
+"mal utilisé. Dans un environnement clusterisé, garder le le cache consistent "
+"de manière transactionnelle sur tout le cluster et avec la base de données "
+"est une tâche couteuse. Cela est adapté pour des données partagées par "
+"plusieurs utilisateurs et qui ne sont mises à jour que rarement. Dans les "
+"architectures traditionnelles sans état, les personnes utilisent le cache de "
+"second niveau pour l'état conversationnel. Ceci est toujours mauvais, et "
+"plus spécialement avec Seam."
+
+#. Tag: para
+#: Cache.xml:28
+#, no-c-format
+msgid ""
+"The Seam conversation context is a cache of conversational state. Components "
+"you put into the conversation context can hold and cache state relating to "
+"the current user interaction."
+msgstr ""
+"Le contexte conversation de Seam est un cache pour l'état de conversation. "
+"Les composants que vous placez dans ce contexte peuvent contenir (et donc "
+"avoir en cache) des états en relation avec l'interaction courante avec "
+"l'utlisateur."
+
+#. Tag: para
+#: Cache.xml:33
+#, fuzzy, no-c-format
+msgid ""
+"In particular, the Seam-managed persistence context (or an extended EJB "
+"container-managed persistence context associated with a conversation-scoped "
+"stateful session bean) acts as a cache of data that has been read in the "
+"current conversation. This cache tends to have a pretty high hitrate! Seam "
+"optimizes the replication of Seam-managed persistence contexts in a "
+"clustered environment, and there is no requirement for transactional "
+"consistency with the database (optimistic locking is sufficient) so you "
+"don&#39;t need to worry too much about the performance implications of this "
+"cache, unless you read thousands of objects into a single persistence "
+"context."
+msgstr ""
+"En particulier, le contexte de persistance géré par Seam (ou le contexte de "
+"persistence EJB étendu géré par le conteneur associé au bean session avec "
+"état porté par la conversation) agit comme un cache de données qui ont été "
+"lus par la conversation courante. Ce cache tend à avoir beaucoup de débit. "
+"Seam optimise la réplication des contextes de persistence géré par Seam dans "
+"les environnements clusterisés, et il n'est pas besoin de consistence "
+"transactionnelle avec la base de données (les verrous optimistes sont "
+"suffisants), vous n'avez donc pas à vous souciez des impacts de performance "
+"liés à ce cache, à moins que vous ne lisez des milliers d'objets dans un "
+"même contexte de persistence."
+
+#. Tag: para
+#: Cache.xml:38
+#, no-c-format
+msgid ""
+"The application can cache non-transactional state in the Seam application "
+"context. State kept in the application context is of course not visible to "
+"other nodes in the cluster."
+msgstr ""
+"L'application peut mettre en cache des états non transactionnels dans le "
+"contexte d'application de Seam. Les états gardés dans ce contexte sont bien "
+"sûr invisibles des autres noeuds du cluster."
+
+#. Tag: para
+#: Cache.xml:43
+#, no-c-format
+msgid ""
+"The application can cache transactional state using the Seam "
+"<literal>pojoCache</literal> component, which integrates JBossCache into the "
+"Seam environment. This state will be visible to other nodes if you run JBoss "
+"cache in a clustered mode."
+msgstr ""
+"L'application peut mettre en cache des états transactionnels en utilisant le "
+"composant <literal>pojoCache</literal> de Seam, qui intègre JBossCache dans "
+"l'environnement Seam. Ces états seront visibles des autres noeuds Seam si "
+"vous exécutez JBoss cache dans un mode clusterisé."
+
+#. Tag: para
+#: Cache.xml:48
+#, no-c-format
+msgid ""
+"Finally, Seam lets you cache rendered fragments of a JSF page. Unlike the "
+"ORM second-level cache, this cache is not automatically invalidated when "
+"data changes, so you need to write application code to perform explicit "
+"invalidation, or set appropriate expiration policies."
+msgstr ""
+"Enfin, Seam vous permet de mettre en cache des fragments de page JSF. "
+"Contrairement à un cache de second niveau d'un ORM, ce cache n'est pas "
+"automatiquement invalidé lorsque les données changent, vous devez donc coder "
+"manuellement l'invalidation du cache, ou configurer les modes d'expiration "
+"appropriés."
+
+#. Tag: para
+#: Cache.xml:53
+#, fuzzy, no-c-format
+msgid ""
+"For more information about the second-level cache, you&#39;ll need to refer "
+"to the documentation of your ORM solution, since this is an extremely "
+"complex topic. In this section we&#39;ll discuss the use of JBossCache "
+"directly, via the <literal>pojoCache</literal> component, or as the page "
+"fragment cache, via the <literal>&lt;s:cache&gt;</literal> control."
+msgstr ""
+"Pour plus d'explications sur le cache de second niveau, vous devrez vous "
+"referrer à la documentation de votre ORM, il s'agit d'un point très "
+"complexe. Dans cette section, nous allons discuter de JBossCache, via le "
+"compsant <literal>pojoCache</literal>, ou par le contrôle <literal>&lt;s:"
+"cache&gt;</literal> pour le cache de fragments de page JSF."
+
+#. Tag: title
+#: Cache.xml:57
+#, no-c-format
+msgid "Using JBossCache in Seam"
+msgstr "Utiliser JBossCache dans Seam"
+
+#. Tag: para
+#: Cache.xml:58
+#, fuzzy, no-c-format
+msgid ""
+"The built-in <literal>pojoCache</literal> component manages an instance of "
+"<literal>org.jboss.cache.aop.PojoCache</literal>. You can safely put any "
+"immutable Java object in the cache, and it will be replicated across the "
+"cluster (assuming that replication is enabled). If you want to keep mutable "
+"objects in the cache, you&#39;ll need to run the JBossCache bytecode "
+"preprocessor to ensure that changes to the objects will be automatically "
+"detected and replicated."
+msgstr ""
+"Le composant <literal>pojoCache</literal> gère une instance de <literal>org."
+"jboss.cache.aop.PojoCache</literal>. Vous pouvez, en toute sécurité, y "
+"mettre des objets java immuables, et ils seront répliqués sur le cluster (si "
+"vous avez activez la réplication). Si vous souhaitez y garder des objets "
+"modifiables, vous devrez exécutez le préprocesseur de bytecode de JBoss "
+"Cache pour vous assurez que les modifications apportées aux objets seront "
+"détectées et répliquées."
+
+#. Tag: para
+#: Cache.xml:61
+#, fuzzy, no-c-format
+msgid ""
+"To use <literal>pojoCache</literal>, all you need to do is put the "
+"JBossCache jars in the classpath, and provide a resource named "
+"<literal>treecache.xml</literal> with an appropriate cache configuration. "
+"JBossCache has many scary and confusing configuration settings, so we "
+"won&#39;t discuss them here. Please refer to the JBossCache documentation "
+"for more information."
+msgstr ""
+"Pour utiliser <literal>pojoCache</literal>, vous devez juste placer les jars "
+"de JBossCache dans votre classpath et fournir une ressource nommée "
+"<literal>treecache.xml</literal> avec une configuration de cache appropriée "
+"que nous ne détaillerons pas ici. Lisez la documentation de JBossCache pour "
+"plus d'information."
+
+#. Tag: para
+#: Cache.xml:64
+#, no-c-format
+msgid ""
+"For an EAR depoyment of Seam, we recommend that the JBossCache jars and "
+"configuration go directly into the EAR. Make sure you declare the jars in "
+"<literal>application.xml</literal>."
+msgstr ""
+"Pour un déploiement EAR de Seam, nous recommandons que les jars JBossCache "
+"et les configurations soient directement dans le EAR. Assurez vous de "
+"déclarer les jars dans <literal>application.xml</literal>."
+
+#. Tag: para
+#: Cache.xml:67
+#, no-c-format
+msgid "Now you can inject the cache into any Seam component:"
+msgstr ""
+"Maintenant, vous pouvez injecter le cache dans chacun des composants Seam:"
+
+#. Tag: programlisting
+#: Cache.xml:70
+#, no-c-format
+msgid ""
+"@Name(\"chatroom\")\n"
+"public class Chatroom {\n"
+"    @In PojoCache pojoCache;\n"
+"    \n"
+"    public void join(String username) {\n"
+"      try\n"
+"      {\n"
+"         Set&lt;String&gt; userList = (Set&lt;String&gt;) pojoCache.get"
+"(\"chatroom\", \"userList\");\n"
+"         if (userList==null) \n"
+"         {\n"
+"            userList = new HashSet&lt;String&gt;();\n"
+"            pojoCache.put(\"chatroom\", \"userList\", userList);\n"
+"         }\n"
+"         userList.put(username);\n"
+"      }\n"
+"      catch (CacheException ce)\n"
+"      {\n"
+"         throw new RuntimeException(ce);\n"
+"      }\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"chatroom\")\n"
+"public class Chatroom {\n"
+"    @In PojoCache pojoCache;\n"
+"    \n"
+"    public void join(String username) {\n"
+"      try\n"
+"      {\n"
+"         Set&lt;String&gt; userList = (Set&lt;String&gt;) pojoCache.get"
+"(\"chatroom\", \"userList\");\n"
+"         if (userList==null) \n"
+"         {\n"
+"            userList = new HashSet&lt;String&gt;();\n"
+"            pojoCache.put(\"chatroom\", \"userList\", userList);\n"
+"         }\n"
+"         userList.put(username);\n"
+"      }\n"
+"      catch (CacheException ce)\n"
+"      {\n"
+"         throw new RuntimeException(ce);\n"
+"      }\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Cache.xml:71
+#, no-c-format
+msgid ""
+"If you want to have multiple JBossCache configurations in your application, "
+"use <literal>components.xml</literal>:"
+msgstr ""
+"Si vous voulez avoir plusieurs configurations de cache dans votre "
+"application, utilisez <literal>components.xml</literal>:"
+
+#. Tag: programlisting
+#: Cache.xml:74
+#, no-c-format
+msgid ""
+"&lt;core:pojo-cache name=\"myCache\" cfg-resource-name=\"myown/cache.xml\"/"
+"&gt;"
+msgstr ""
+"&lt;core:pojo-cache name=\"myCache\" cfg-resource-name=\"myown/cache.xml\"/"
+"&gt;"
+
+#. Tag: title
+#: Cache.xml:78
+#, no-c-format
+msgid "Page fragment caching"
+msgstr "Cache de fragment de page"
+
+#. Tag: para
+#: Cache.xml:79
+#, fuzzy, no-c-format
+msgid ""
+"The most interesting user of JBossCache is the <literal>&lt;s:cache&gt;</"
+"literal> tag, Seam&#39;s solution to the problem of page fragment caching in "
+"JSF. <literal>&lt;s:cache&gt;</literal> uses <literal>pojoCache</literal> "
+"internally, so you need to follow the steps listed above before you can use "
+"it. (Put the jars in the EAR, wade through the scary configuration options, "
+"etc.)"
+msgstr ""
+"L'utilisation la plus intéressante de JBossCache est l'élément <literal>&lt;"
+"s:cache&gt;</literal>, qui est la solution de Seam au problème de cache de "
+"fragment dans JSF. <literal>&lt;s:cache&gt;</literal> utilise "
+"<literal>pojoCache</literal>. Vous devez suivre les étapes précédentes avant "
+"de l'utiliser. (placez les jars dans l'EAR, les configs...)."
+
+#. Tag: para
+#: Cache.xml:82
+#, no-c-format
+msgid ""
+"<literal>&lt;s:cache&gt;</literal> is used for caching some rendered content "
+"which changes rarely. For example, the welcome page of our blog displays the "
+"recent blog entries:"
+msgstr ""
+"<literal>&lt;s:cache&gt;</literal> est utilisé pour la mise en cache "
+"d'éléments de vue qui changent rarement. Par exemple, la page d'accueil de "
+"notre blog qui affiche les entrées récentes du blog:"
+
+#. Tag: programlisting
+#: Cache.xml:85
+#, no-c-format
+msgid ""
+"&lt;s:cache key=\"recentEntries-#{blog.id}\" region=\"welcomePageFragments"
+"\"&gt;\n"
+"   &lt;h:dataTable value=\"#{blog.recentEntries}\" var=\"blogEntry\"&gt;\n"
+"      &lt;h:column&gt;\n"
+"         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"         &lt;div&gt;\n"
+"            &lt;s:formattedText value=\"#{blogEntry.body}\"/&gt;\n"
+"         &lt;/div&gt;\n"
+"      &lt;/h:column&gt;\n"
+"   &lt;/h:dataTable&gt;\n"
+"&lt;/s:cache&gt;"
+msgstr ""
+"&lt;s:cache key=\"recentEntries-#{blog.id}\" region=\"welcomePageFragments"
+"\"&gt;\n"
+"   &lt;h:dataTable value=\"#{blog.recentEntries}\" var=\"blogEntry\"&gt;\n"
+"      &lt;h:column&gt;\n"
+"         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"         &lt;div&gt;\n"
+"            &lt;s:formattedText value=\"#{blogEntry.body}\"/&gt;\n"
+"         &lt;/div&gt;\n"
+"      &lt;/h:column&gt;\n"
+"   &lt;/h:dataTable&gt;\n"
+"&lt;/s:cache&gt;"
+
+#. Tag: para
+#: Cache.xml:86
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>key</literal> let&#39;s you have multiple cached versions of "
+"each page fragment. In this case, there is one cached version per blog. The "
+"<literal>region</literal> determines the JBossCache node that all version "
+"will be stored in. Different nodes may have different expiry policies. "
+"(That&#39;s the stuff you set up using the aforementioned scary "
+"configuration options.)"
+msgstr ""
+"La <literal>key</literal> vous permet d'avoir de multiples versions de "
+"chaque fragement de page en cache. Dans ce cas, il y a une version en cache "
+"par blog. La <literal>region</literal> détermine le noeud de JBossCache où "
+"seront stockées les versions. Différents noeuds peuvent avoir différents "
+"modes d'expiration. (options de configuration)"
+
+#. Tag: para
+#: Cache.xml:89
+#, no-c-format
+msgid ""
+"Of course, the big problem with <literal>&lt;s:cache&gt;</literal> is that "
+"it is too stupid to know when the underlying data changes (for example, when "
+"the blogger posts a new entry). So you need to evict the cached fragment "
+"manually:"
+msgstr ""
+"Bien sûr, le gros problème de <literal>&lt;s:cache&gt;</literal> est qu'il "
+"est trop stupide pour savoir quand les données utilisées changent (par "
+"exemple, lorsque les bloggers ajoutent une entrée). Vous devez donc faire "
+"l'éviction du fragment manuellement:"
+
+#. Tag: programlisting
+#: Cache.xml:92
+#, no-c-format
+msgid ""
+"public void post() {\n"
+"    ...\n"
+"    entityManager.persist(blogEntry);\n"
+"    pojoCache.remove(\"welcomePageFragments\", \"recentEntries-\" + blog."
+"getId() );\n"
+"}"
+msgstr ""
+"public void post() {\n"
+"    ...\n"
+"    entityManager.persist(blogEntry);\n"
+"    pojoCache.remove(\"welcomePageFragments\", \"recentEntries-\" + blog."
+"getId() );\n"
+"}"
+
+#. Tag: para
+#: Cache.xml:93
+#, no-c-format
+msgid ""
+"Alternatively, if it is not critical that changes are immediately visible to "
+"the user, you could set a short expiry time on the JbossCache node."
+msgstr ""
+"Alternativement, si ce n'est pas critique que les changements soient "
+"immédiatement visibles, vous pouvez laisser faire l'expiration."

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Components.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Components.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Components.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2361 @@
+# translation of Components.po to french
+# myriam malga <mmalga at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Components\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2007-08-01 16:16+1000\n"
+"Last-Translator: myriam malga <mmalga at redhat.com>\n"
+"Language-Team: french\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Components.xml:6
+#, no-c-format
+msgid "Built-in Seam components"
+msgstr "Les composants intégrés de Seam"
+
+#. Tag: para
+#: Components.xml:7
+#, fuzzy, no-c-format
+msgid ""
+"This chapter describes Seam&#39;s built-in components, and their "
+"configuration properties."
+msgstr ""
+"Ce chapitre décrit les composants intégrés de Seam, et la configuration de "
+"leurs propriétés."
+
+#. Tag: para
+#: Components.xml:10
+#, no-c-format
+msgid ""
+"Note that you can replace any of the built in components with your own "
+"implementations simply by specifying the name of one of the built in "
+"components on your own class using <literal>@Name</literal>."
+msgstr ""
+"Notez que vous pouvez remplacer chacun de ces composants par votre propre "
+"implémentation en spécifiant simplement le nom du composant de votre propre "
+"classe en utilisant <literal>@Name</literal>."
+
+#. Tag: para
+#: Components.xml:13
+#, no-c-format
+msgid ""
+"Note also that even though all the built in components use a qualified name, "
+"most of them are aliased to unqualified names by default. These aliases "
+"specify <literal>auto-create=\"true\"</literal>, so you do not need to use "
+"<literal>create=true</literal> when injecting built-in components by their "
+"unqualified name."
+msgstr ""
+"Notez aussi que, bien que tous les composants intégrés utilisent un nom "
+"qualifié, la plupart ont un alias par défaut vers le même nom non qualifié. "
+"La création de ces alias est faite grâce à <literal>auto-create=\"true\"</"
+"literal>, vous n'avez donc pas besoin d'utiliser <literal>create=true</"
+"literal> lorsque vous injectez des composants intégrés par leur nom non "
+"qualifiés."
+
+#. Tag: title
+#: Components.xml:17
+#, no-c-format
+msgid "Context injection components"
+msgstr "Les composants d'injection de contexte"
+
+#. Tag: para
+#: Components.xml:18
+#, no-c-format
+msgid ""
+"The first set of built in components exist purely to support injection of "
+"various contextual objects. For example, the following component instance "
+"variable would have the Seam session context object injected:"
+msgstr ""
+"Le premier lot de composants intégrés existent pour l'injection des "
+"différents objets contextuels. Par exemple, l'instance de variable suivante "
+"a l'objet de context de session Seam injecté:"
+
+#. Tag: programlisting
+#: Components.xml:21
+#, no-c-format
+msgid "@In private Context sessionContext;"
+msgstr "@In private Context sessionContext;"
+
+#. Tag: literal
+#: Components.xml:24
+#, no-c-format
+msgid "org.jboss.seam.core.eventContext"
+msgstr "org.jboss.seam.core.eventContext"
+
+#. Tag: para
+#: Components.xml:26
+#, no-c-format
+msgid "Manager component for the event context object"
+msgstr ""
+"Composant gestionnaire pour l'object de contexte évènementiel(event context)."
+
+#. Tag: literal
+#: Components.xml:32
+#, no-c-format
+msgid "org.jboss.seam.core.pageContext"
+msgstr "org.jboss.seam.core.pageContext"
+
+#. Tag: para
+#: Components.xml:34
+#, no-c-format
+msgid "Manager component for the page context object"
+msgstr ""
+"Composant gestionnaire pour l'object de contexte de page(page context)."
+
+#. Tag: literal
+#: Components.xml:40
+#, no-c-format
+msgid "org.jboss.seam.core.conversationContext"
+msgstr "org.jboss.seam.core.conversationContext"
+
+#. Tag: para
+#: Components.xml:42
+#, no-c-format
+msgid "Manager component for the conversation context object"
+msgstr ""
+"Composant gestionnaire pour l'object de contexte de conversation "
+"(conversation context)."
+
+#. Tag: literal
+#: Components.xml:48
+#, no-c-format
+msgid "org.jboss.seam.core.sessionContext"
+msgstr "org.jboss.seam.core.sessionContext"
+
+#. Tag: para
+#: Components.xml:50
+#, no-c-format
+msgid "Manager component for the session context object"
+msgstr "Composant gestionnaire pour l'object de contexte de session."
+
+#. Tag: literal
+#: Components.xml:56
+#, no-c-format
+msgid "org.jboss.seam.core.applicationContext"
+msgstr "org.jboss.seam.core.applicationContext"
+
+#. Tag: para
+#: Components.xml:58
+#, no-c-format
+msgid "Manager component for the appication context object"
+msgstr "Composant gestionnaire pour l'object de contexte d'application."
+
+#. Tag: literal
+#: Components.xml:64
+#, no-c-format
+msgid "org.jboss.seam.core.businessProcessContext"
+msgstr "org.jboss.seam.core.businessProcessContext"
+
+#. Tag: para
+#: Components.xml:66
+#, no-c-format
+msgid "Manager component for the business process context object"
+msgstr "Composant gestionnaire pour l'object de contexte du process métier."
+
+#. Tag: literal
+#: Components.xml:72
+#, no-c-format
+msgid "org.jboss.seam.core.facesContext"
+msgstr "org.jboss.seam.core.facesContext"
+
+#. Tag: para
+#: Components.xml:74
+#, no-c-format
+msgid ""
+"Manager component for the <literal>FacesContext</literal> context object "
+"(not a true Seam context)"
+msgstr ""
+"Composant gestionnaire pour l'object de contexte <literal>FacesContext</"
+"literal> (qui n'est pas un vrai contexte Seam)"
+
+#. Tag: para
+#: Components.xml:80 Components.xml:263 Components.xml:437 Components.xml:568
+#, no-c-format
+msgid "All of these components are always installed."
+msgstr "Tous ces composants sont toujours installés. "
+
+#. Tag: title
+#: Components.xml:86
+#, no-c-format
+msgid "Utility components"
+msgstr "Les composants utilitaires"
+
+#. Tag: para
+#: Components.xml:87
+#, no-c-format
+msgid "These components are merely useful."
+msgstr "Ces composants sont utiles."
+
+#. Tag: literal
+#: Components.xml:92
+#, no-c-format
+msgid "org.jboss.seam.core.facesMessages"
+msgstr "org.jboss.seam.core.facesMessages"
+
+#. Tag: para
+#: Components.xml:94
+#, no-c-format
+msgid "Allows faces success messages to propagate across a browser redirect."
+msgstr ""
+"Permet de propager les messages de succès des faces à travers une "
+"redirection du navigateur."
+
+#. Tag: para
+#: Components.xml:99
+#, no-c-format
+msgid ""
+"<literal>add(FacesMessage facesMessage)</literal> &mdash; add a faces "
+"message, which will be displayed during the next render response phase that "
+"occurs in the current conversation."
+msgstr ""
+"<literal>add(FacesMessage facesMessage)</literal> - ajoute un message faces, "
+"qui sera affiché durant la phase de rendu de la réponse suivante qui "
+"survient dans la conversation courante. "
+
+#. Tag: para
+#: Components.xml:104
+#, no-c-format
+msgid ""
+"<literal>add(String messageTemplate)</literal> &mdash; add a faces message, "
+"rendered from the given message template which may contain EL expressions."
+msgstr ""
+"<literal>add(String messageTemplate)</literal> - ajoute un message face, "
+"rendu depuis le modèle de message indiqué et qui peut contenir des "
+"expressions EL."
+
+#. Tag: para
+#: Components.xml:109
+#, no-c-format
+msgid ""
+"<literal>add(Severity severity, String messageTemplate)</literal> &mdash; "
+"add a faces message, rendered from the given message template which may "
+"contain EL expressions."
+msgstr ""
+"<literal>add(Severity severity, String messageTemplate)</literal> - ajoute "
+"un message face, rendu depuis le modèle de message indiqué et qui peut "
+"contenir des expressions EL."
+
+#. Tag: para
+#: Components.xml:114
+#, no-c-format
+msgid ""
+"<literal>addFromResourceBundle(String key)</literal> &mdash; add a faces "
+"message, rendered from a message template defined in the Seam resource "
+"bundle which may contain EL expressions."
+msgstr ""
+"<literal>addFromResourceBundle(String key)</literal> - ajoute un message "
+"face, rendu depuis le modèle de message défini dans le lot de ressources de "
+"Seam, et qui peut contenir des expressions EL."
+
+#. Tag: para
+#: Components.xml:119
+#, no-c-format
+msgid ""
+"<literal>addFromResourceBundle(Severity severity, String key)</literal> "
+"&mdash; add a faces message, rendered from a message template defined in the "
+"Seam resource bundle which may contain EL expressions."
+msgstr ""
+"<literal>addFromResourceBundle(Severity severity, String key)</literal> - "
+"ajoute un message face, rendu depuis le modèle de message défini dans le lot "
+"ressources de Seam, et qui peut contenir des expressions EL."
+
+#. Tag: para
+#: Components.xml:124
+#, no-c-format
+msgid "<literal>clear()</literal> &mdash; clear all messages."
+msgstr "<literal>clear()</literal> - efface tous les messages. "
+
+#. Tag: literal
+#: Components.xml:132
+#, no-c-format
+msgid "org.jboss.seam.core.redirect"
+msgstr "org.jboss.seam.core.redirect"
+
+#. Tag: para
+#: Components.xml:134
+#, no-c-format
+msgid ""
+"A convenient API for performing redirects with parameters (this is "
+"especially useful for bookmarkable search results screens)."
+msgstr ""
+"Un API utile pour effectuer des redirections avec paramètres (ce qui est "
+"utile pour des pages de résultats de recherche que l'on veut mettre en "
+"signet)."
+
+#. Tag: para
+#: Components.xml:139
+#, no-c-format
+msgid ""
+"<literal>redirect.viewId</literal> &mdash; the JSF view id to redirect to."
+msgstr ""
+"<literal>redirect.viewId</literal> - L'id de la vue JSF vers laquelle "
+"effectuer la redirection."
+
+#. Tag: para
+#: Components.xml:144
+#, no-c-format
+msgid ""
+"<literal>redirect.conversationPropagationEnabled</literal> &mdash; "
+"determines whether the conversation will propagate across the redirect."
+msgstr ""
+"<literal>redirect.conversationPropagationEnabled</literal> - détermine si la "
+"conversation se propagera au travers de la redirection."
+
+#. Tag: para
+#: Components.xml:149
+#, no-c-format
+msgid ""
+"<literal>redirect.parameters</literal> &mdash; a map of request parameter "
+"name to value, to be passed in the redirect request."
+msgstr ""
+"<literal>redirect.parameters</literal> - une mappe de paramètres de requête, "
+"nom à valeur à passer dans la requête de redirection."
+
+#. Tag: para
+#: Components.xml:154
+#, no-c-format
+msgid "<literal>execute()</literal> &mdash; perform the redirect immediately."
+msgstr "<literal>execute()</literal> - effectue la redirection immédiatement."
+
+#. Tag: para
+#: Components.xml:159
+#, no-c-format
+msgid ""
+"<literal>captureCurrentRequest()</literal> &mdash; stores the view id and "
+"request parameters of the current GET request (in the conversation context), "
+"for later use by calling <literal>execute()</literal>."
+msgstr ""
+"<literal>captureCurrentRequest()</literal> - stocke l'id de la vue et les "
+"paramètres de la requête GET en cours (dans le context de conversation), en "
+"vue d'une utilisation ultérieure en appelant <literal>execute()</literal>."
+
+#. Tag: literal
+#: Components.xml:167
+#, no-c-format
+msgid "org.jboss.seam.core.httpError"
+msgstr "org.jboss.seam.core.httpError"
+
+#. Tag: para
+#: Components.xml:169
+#, no-c-format
+msgid "A convenient API for sending HTTP errors."
+msgstr "Un API pratique pour envoyer des erreurs HTTP."
+
+#. Tag: literal
+#: Components.xml:175
+#, no-c-format
+msgid "org.jboss.seam.core.events"
+msgstr "org.jboss.seam.core.events"
+
+#. Tag: para
+#: Components.xml:177
+#, no-c-format
+msgid ""
+"An API for raising events that can be observed via <literal>@Observer</"
+"literal> methods, or method bindings in <literal>components.xml</literal>."
+msgstr ""
+"Une API pour soulever des évènements qui peuvent être observés, via les "
+"méthodes <literal>@Observer</literal>, ou via les associations de méthodes "
+"dans <literal>components.xml</literal>."
+
+#. Tag: para
+#: Components.xml:182
+#, no-c-format
+msgid ""
+"<literal>raiseEvent(String type)</literal> &mdash; raise an event of a "
+"particular type and distribute to all observers."
+msgstr ""
+"<literal>raiseEvent(String type)</literal> - soulève un évènement d'un type "
+"particulier et le distribue à tous les observateurs."
+
+#. Tag: para
+#: Components.xml:187
+#, no-c-format
+msgid ""
+"<literal>raiseAsynchronousEvent(String type)</literal> &mdash; raise an "
+"event to be processed asynchronously by the EJB3 timer service."
+msgstr ""
+"<literal>raiseAsynchronousEvent(String type)</literal> - soulève un "
+"évènement qui sera traité de manière asynchrone par le timer service EJB3. "
+
+#. Tag: para
+#: Components.xml:192
+#, no-c-format
+msgid ""
+"<literal>raiseTimedEvent(String type, ....)</literal> &mdash; schedule an "
+"event to be processed asynchronously by the EJB3 timer service."
+msgstr ""
+"<literal>raiseTimedEvent(String type, ....)</literal> - planifie un "
+"évènement qui sera traité de manière asynchrone par le timer service EJB3. "
+
+#. Tag: para
+#: Components.xml:197
+#, no-c-format
+msgid ""
+"<literal>addListener(String type, String methodBinding)</literal> &mdash; "
+"add an observer for a particular event type."
+msgstr ""
+"<literal>addListener(String type, String methodBinding)</literal> - ajoute "
+"un observateur pour un type particulier d'évènement. "
+
+#. Tag: literal
+#: Components.xml:205
+#, no-c-format
+msgid "org.jboss.seam.core.interpolator"
+msgstr "org.jboss.seam.core.interpolator"
+
+#. Tag: para
+#: Components.xml:207
+#, no-c-format
+msgid "An API for interpolating the values of JSF EL expressions in Strings."
+msgstr ""
+"Une API pour interpoler les valeurs d'expression JSF EL en chaîne de "
+"caractères."
+
+#. Tag: para
+#: Components.xml:212
+#, no-c-format
+msgid ""
+"<literal>interpolate(String template)</literal> &mdash; scan the template "
+"for JSF EL expressions of the form <literal>#{...}</literal> and replace "
+"them with their evaluated values."
+msgstr ""
+"<literal>interpolate(String template)</literal> - scanne le modèle pour les "
+"expressions JSF EL du formulaire <literal>#{...}</literal> et les remplace "
+"par leur valeur évaluée."
+
+#. Tag: literal
+#: Components.xml:220
+#, no-c-format
+msgid "org.jboss.seam.core.expressions"
+msgstr "org.jboss.seam.core.expressions"
+
+#. Tag: para
+#: Components.xml:222
+#, no-c-format
+msgid "An API for creating value and method bindings."
+msgstr "Un API pour créer des associations de méthodes et de valeurs."
+
+#. Tag: para
+#: Components.xml:227
+#, no-c-format
+msgid ""
+"<literal>createValueBinding(String expression)</literal> &mdash; create a "
+"value binding object."
+msgstr ""
+"<literal>createValueBinding(String expression)</literal> - Créer un objet "
+"d'association de valeurs."
+
+#. Tag: para
+#: Components.xml:232
+#, no-c-format
+msgid ""
+"<literal>createMethodBinding(String expression)</literal> &mdash; create a "
+"method binding object."
+msgstr ""
+"<literal>createMethodBinding(String expression)</literal> - Créer un objet "
+"d'association de méthodes."
+
+#. Tag: literal
+#: Components.xml:240
+#, no-c-format
+msgid "org.jboss.seam.core.pojoCache"
+msgstr "org.jboss.seam.core.pojoCache"
+
+#. Tag: para
+#: Components.xml:242
+#, no-c-format
+msgid ""
+"Manager component for a JBoss Cache <literal>PojoCache</literal> instance."
+msgstr ""
+"Composant de gestion pour une instance de JBoss Cache <literal>PojoCache</"
+"literal>."
+
+#. Tag: para
+#: Components.xml:247
+#, no-c-format
+msgid ""
+"<literal>pojoCache.cfgResourceName</literal> &mdash; the name of the "
+"configuration file. Default to <literal>treecache.xml</literal>."
+msgstr ""
+"<literal>pojoCache.cfgResourceName</literal> - Le nom du fichier de "
+"configuration. Par défaut <literal>treecache.xml</literal>. "
+
+#. Tag: literal
+#: Components.xml:255
+#, no-c-format
+msgid "org.jboss.seam.core.uiComponent"
+msgstr "org.jboss.seam.core.uiComponent"
+
+#. Tag: para
+#: Components.xml:257
+#, fuzzy, no-c-format
+msgid ""
+"Allows access to a JSF <literal>UIComponent</literal> by its id from the EL. "
+"For example, we can write <literal>@In(\"#{uiComponent[&#39;myForm:"
+"address&#39;].value}\")</literal>."
+msgstr ""
+"Autorise l'accès à un <literal>UIComponent</literal> JSF par son id depuis "
+"EL. Par exemple, nous pouvons écrire <literal>@In(\"#{uiComponent['myForm:"
+"address'].value}\")</literal>."
+
+#. Tag: title
+#: Components.xml:269
+#, no-c-format
+msgid "Components for internationalization and themes"
+msgstr "Composants pour l'internationnalisation et les thèmes"
+
+#. Tag: para
+#: Components.xml:270
+#, no-c-format
+msgid ""
+"The next group of components make it easy to build internationalized user "
+"interfaces using Seam."
+msgstr ""
+"Le groupe de composants suivant permet de construire des interfaces "
+"utilisateur internationalisées qui utilisent Seam."
+
+#. Tag: literal
+#: Components.xml:275
+#, no-c-format
+msgid "org.jboss.seam.core.locale"
+msgstr "org.jboss.seam.core.locale"
+
+#. Tag: para
+#: Components.xml:277
+#, no-c-format
+msgid "The Seam locale. The locale is session scoped."
+msgstr "Le lieu (locale) de Seam qui est tenue par la session."
+
+#. Tag: literal
+#: Components.xml:283
+#, no-c-format
+msgid "org.jboss.seam.core.timezone"
+msgstr "org.jboss.seam.core.timezone"
+
+#. Tag: para
+#: Components.xml:285
+#, no-c-format
+msgid "The Seam timezone. The timezone is session scoped."
+msgstr "La timezone de Seam qui est tenue par la session."
+
+#. Tag: literal
+#: Components.xml:291
+#, no-c-format
+msgid "org.jboss.seam.core.resourceBundle"
+msgstr "org.jboss.seam.core.resourceBundle"
+
+#. Tag: para
+#: Components.xml:293
+#, no-c-format
+msgid ""
+"The Seam resource bundle. The resource bundle is session scoped. The Seam "
+"resource bundle performs a depth-first search for keys in a list of Java "
+"resource bundles."
+msgstr ""
+"Le resource bundle de Seam qui est tenue par la session. Le resource bundle "
+"de Seam effectue une recherche approfondie des clés dans une liste de "
+"resource bundles Java."
+
+#. Tag: para
+#: Components.xml:298
+#, no-c-format
+msgid ""
+"<literal>resourceBundle.bundleNames</literal> &mdash; the names of the Java "
+"resource bundles to search. Default to <literal>messages</literal>."
+msgstr ""
+"<literal>resourceBundle.bundleNames</literal> - les noms des lots de "
+"ressources Java à rechercher. Par défaut à <literal>messages</literal>."
+
+#. Tag: literal
+#: Components.xml:306
+#, no-c-format
+msgid "org.jboss.seam.core.localeSelector"
+msgstr "org.jboss.seam.core.localeSelector"
+
+#. Tag: para
+#: Components.xml:308
+#, no-c-format
+msgid ""
+"Supports selection of the locale either at configuration time, or by the "
+"user at runtime."
+msgstr ""
+"Supporte la sélection du lieu (locale) soit au moment de la configuration, "
+"soit par l'utilisateur à l'exécution."
+
+#. Tag: para
+#: Components.xml:313 Components.xml:363
+#, no-c-format
+msgid "<literal>select()</literal> &mdash; select the specified locale."
+msgstr ""
+"<literal>select()</literal> - sélectionne le paramètre de lieu spécifié."
+
+#. Tag: para
+#: Components.xml:318
+#, no-c-format
+msgid ""
+"<literal>localeSelector.locale</literal> &mdash; the actual <literal>java."
+"util.Locale</literal>."
+msgstr ""
+"<literal>localeSelector.locale</literal> - le <literal>java.util.Locale</"
+"literal> réel. "
+
+#. Tag: para
+#: Components.xml:323
+#, no-c-format
+msgid ""
+"<literal>localeSelector.localeString</literal> &mdash; the stringified "
+"representation of the locale."
+msgstr ""
+"<literal>localeSelector.localeString</literal> - la représentation en chaîne "
+"de caractère du paramètre de lieu."
+
+#. Tag: para
+#: Components.xml:328
+#, no-c-format
+msgid ""
+"<literal>localeSelector.language</literal> &mdash; the language for the "
+"specified locale."
+msgstr ""
+"<literal>localeSelector.language</literal> - la langue pour le paramètre de "
+"lieu spécifié."
+
+#. Tag: para
+#: Components.xml:333
+#, no-c-format
+msgid ""
+"<literal>localeSelector.country</literal> &mdash; the country for the "
+"specified locale."
+msgstr ""
+"<literal>localeSelector.country</literal> - le pays pour le paramètre de "
+"lieu spécifié."
+
+#. Tag: para
+#: Components.xml:338
+#, no-c-format
+msgid ""
+"<literal>localeSelector.variant</literal> &mdash; the variant for the "
+"specified locale."
+msgstr ""
+"<literal>localeSelector.variant</literal> - la variante pour le paramètre de "
+"lieu spécifié."
+
+#. Tag: para
+#: Components.xml:343
+#, no-c-format
+msgid ""
+"<literal>localeSelector.supportedLocales</literal> &mdash; a list of "
+"<literal>SelectItem</literal>s representing the supported locales listed in "
+"<literal>jsf-config.xml</literal>."
+msgstr ""
+"<literal>localeSelector.supportedLocales</literal> - une liste de "
+"<literal>SelectItem</literal>s représentant les paramètres de lieu supportés "
+"et listés dans <literal>jsf-config.xml</literal>."
+
+#. Tag: para
+#: Components.xml:348
+#, no-c-format
+msgid ""
+"<literal>localeSelector.cookieEnabled</literal> &mdash; specifies that the "
+"locale selection should be persisted via a cookie."
+msgstr ""
+"<literal>localeSelector.cookieEnabled</literal> - spécifie que la sélection "
+"du paramètre de lieu doit être rendu persistant via un cookie."
+
+#. Tag: literal
+#: Components.xml:356
+#, no-c-format
+msgid "org.jboss.seam.core.timezoneSelector"
+msgstr "org.jboss.seam.core.timezoneSelector"
+
+#. Tag: para
+#: Components.xml:358
+#, no-c-format
+msgid ""
+"Supports selection of the timezone either at configuration time, or by the "
+"user at runtime."
+msgstr ""
+"Supporte la sélection de la timezone soit au moment de la configuration, "
+"soit par l'utilisateur à l'exécution."
+
+#. Tag: para
+#: Components.xml:368
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.timezone</literal> &mdash; the actual "
+"<literal>java.util.TimeZone</literal>."
+msgstr ""
+"<literal>timezoneSelector.timezone</literal> - le <literal>java.util."
+"TimeZone</literal> réel. "
+
+#. Tag: para
+#: Components.xml:373
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.timeZoneId</literal> &mdash; the stringified "
+"representation of the timezone."
+msgstr ""
+"<literal>timezoneSelector.timeZoneId</literal> - la représentation en chaîne "
+"de caractères du fuseau horaire."
+
+#. Tag: para
+#: Components.xml:378
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.cookieEnabled</literal> &mdash; specifies that the "
+"timezone selection should be persisted via a cookie."
+msgstr ""
+"<literal>timezoneSelector.cookieEnabled</literal> - indique que la sélection "
+"du fuseau horaire doit être rendue persistante via un cookie."
+
+#. Tag: literal
+#: Components.xml:386
+#, no-c-format
+msgid "org.jboss.seam.core.messages"
+msgstr "org.jboss.seam.core.messages"
+
+#. Tag: para
+#: Components.xml:388
+#, no-c-format
+msgid ""
+"A map containing internationalized messages rendered from message templates "
+"defined in the Seam resource bundle."
+msgstr ""
+"Une map qui contient les messages internationalisés, rendus depuis les "
+"modèles de message définis dans le resource bundle de Seam."
+
+#. Tag: literal
+#: Components.xml:394
+#, no-c-format
+msgid "org.jboss.seam.theme.themeSelector"
+msgstr "org.jboss.seam.theme.themeSelector"
+
+#. Tag: para
+#: Components.xml:396
+#, no-c-format
+msgid ""
+"Supports selection of the theme either at configuration time, or by the user "
+"at runtime."
+msgstr ""
+"Supporte la sélection du thème au moment de la configuration ou à "
+"l'exécution, par l'utilisateur."
+
+#. Tag: para
+#: Components.xml:401
+#, no-c-format
+msgid "<literal>select()</literal> &mdash; select the specified theme."
+msgstr "<literal>select()</literal> - sélectionne le thème spécifié. "
+
+#. Tag: para
+#: Components.xml:406
+#, no-c-format
+msgid ""
+"<literal>theme.availableThemes</literal> &mdash; the list of defined themes."
+msgstr ""
+"<literal>theme.availableThemes</literal> - la liste des thèmes définis. "
+
+#. Tag: para
+#: Components.xml:411
+#, no-c-format
+msgid "<literal>themeSelector.theme</literal> &mdash; the selected theme."
+msgstr "<literal>themeSelector.theme</literal> - le thème sélectionné. "
+
+#. Tag: para
+#: Components.xml:416
+#, no-c-format
+msgid ""
+"<literal>themeSelector.themes</literal> &mdash; a list of "
+"<literal>SelectItem</literal>s representing the defined themes."
+msgstr ""
+"<literal>themeSelector.themes</literal> - une liste de <literal>SelectItem</"
+"literal>s représentant les thèmes définis. "
+
+#. Tag: para
+#: Components.xml:421
+#, no-c-format
+msgid ""
+"<literal>themeSelector.cookieEnabled</literal> &mdash; specifies that the "
+"theme selection should be persisted via a cookie."
+msgstr ""
+"<literal>themeSelector.cookieEnabled</literal> - spécifie que le thème "
+"sélectionné doit être rendu persistant via un cookie. "
+
+#. Tag: literal
+#: Components.xml:429
+#, no-c-format
+msgid "org.jboss.seam.theme.theme"
+msgstr "org.jboss.seam.theme.theme"
+
+#. Tag: para
+#: Components.xml:431
+#, no-c-format
+msgid "A map containing theme entries."
+msgstr "Une map contenant les entrées de thème."
+
+#. Tag: title
+#: Components.xml:443
+#, no-c-format
+msgid "Components for controlling conversations"
+msgstr "Composants pour contrôler les conversations"
+
+#. Tag: para
+#: Components.xml:444
+#, no-c-format
+msgid ""
+"The next group of components allow control of conversations by the "
+"application or user interface."
+msgstr ""
+"L'ensemble de composants suivant permet le contrôle des conversations par "
+"l'application ou l'interface utilisateur."
+
+#. Tag: literal
+#: Components.xml:449
+#, no-c-format
+msgid "org.jboss.seam.core.conversation"
+msgstr "org.jboss.seam.core.conversation"
+
+#. Tag: para
+#: Components.xml:451
+#, no-c-format
+msgid ""
+"API for application control of attributes of the current Seam conversation."
+msgstr "L'API pour le contrôle des attributs de la conversation Seam en cours."
+
+#. Tag: para
+#: Components.xml:456 Components.xml:471
+#, no-c-format
+msgid "<literal>getId()</literal> &mdash; returns the current conversation id"
+msgstr ""
+"<literal>getParentId()</literal> - retourne l'id de la conversation en cours."
+
+#. Tag: para
+#: Components.xml:461
+#, no-c-format
+msgid ""
+"<literal>isNested()</literal> &mdash; is the current conversation a nested "
+"conversation?"
+msgstr ""
+"<literal>isNested()</literal> - la conversation en cours est-elle imbriquée ?"
+
+#. Tag: para
+#: Components.xml:466
+#, no-c-format
+msgid ""
+"<literal>isLongRunning()</literal> &mdash; is the current conversation a "
+"long-running conversation?"
+msgstr ""
+"<literal>isLongRunning()</literal> - la conversation en cours est-elle de "
+"longue durée ?"
+
+#. Tag: para
+#: Components.xml:476
+#, no-c-format
+msgid ""
+"<literal>getParentId()</literal> &mdash; returns the conversation id of the "
+"parent conversation"
+msgstr ""
+"<literal>getParentId()</literal> - retourne l'id de la conversation de la "
+"conversation parente."
+
+#. Tag: para
+#: Components.xml:481
+#, no-c-format
+msgid ""
+"<literal>getRootId()</literal> &mdash; returns the conversation id of the "
+"root conversation"
+msgstr ""
+"<literal>getRootId()</literal> - retourne l'id de la conversation de la "
+"conversation racine."
+
+#. Tag: para
+#: Components.xml:486
+#, no-c-format
+msgid ""
+"<literal>setTimeout(int timeout)</literal> &mdash; sets the timeout for the "
+"current conversation"
+msgstr ""
+"<literal>setTimeout(int timeout)</literal> - définit le timeout pour la "
+"conversation en cours."
+
+#. Tag: para
+#: Components.xml:491
+#, no-c-format
+msgid ""
+"<literal>setViewId(String outcome)</literal> &mdash; sets the view id to be "
+"used when switching back to the current conversation from the conversation "
+"switcher, conversation list, or breadcrumbs."
+msgstr ""
+"<literal>setViewId(String outcome)</literal> - définit l'id de la vue à "
+"utiliser lorsque que l'on revient dans la conversation en cours, depuis le "
+"commutateur de conversations, la liste des conversations, ou les breadcrumbs."
+
+#. Tag: para
+#: Components.xml:496
+#, no-c-format
+msgid ""
+"<literal>setDescription(String description)</literal> &mdash; sets the "
+"description of the current conversation to be displayed in the conversation "
+"switcher, conversation list, or breadcrumbs."
+msgstr ""
+"<literal>setDescription(String description)</literal> - définit la "
+"description de la conversation en cours pour l'affichage dans le commutateur "
+"de conversations, la liste des conversations, ou les breadcrumbs."
+
+#. Tag: para
+#: Components.xml:501
+#, no-c-format
+msgid ""
+"<literal>redirect()</literal> &mdash; redirect to the last well-defined view "
+"id for this conversation (useful after login challenges)."
+msgstr ""
+"<literal>redirect()</literal> - redirige vers le dernier id de vue "
+"correctement défini, pour cette conversation (utile après la demande de "
+"connexion)."
+
+#. Tag: para
+#: Components.xml:506
+#, no-c-format
+msgid ""
+"<literal>leave()</literal> &mdash; exit the scope of this conversation, "
+"without actually ending the conversation."
+msgstr ""
+"<literal>leave()</literal> - quitte la portée de cette conversation sans "
+"réllement terminer la conversation."
+
+#. Tag: para
+#: Components.xml:511
+#, no-c-format
+msgid ""
+"<literal>begin()</literal> &mdash; begin a long-running conversation "
+"(equivalent to <literal>@Begin</literal>)."
+msgstr ""
+"<literal>begin()</literal> - démarre une conversation de longue durée "
+"(equivaut à <literal>@Begin</literal>). "
+
+#. Tag: para
+#: Components.xml:516
+#, no-c-format
+msgid ""
+"<literal>beginPageflow(String pageflowName)</literal> &mdash; begin a long-"
+"running conversation with a pageflow (equivalent to <literal>@Begin(pageflow="
+"\"...\")</literal>)."
+msgstr ""
+"<literal>beginPageflow(String pageflowName)</literal> - démarre une "
+"conversation de longue durée avec un flux de page (équivaut à <literal>@Begin"
+"(pageflow=\"...\")</literal>)."
+
+#. Tag: para
+#: Components.xml:521
+#, no-c-format
+msgid ""
+"<literal>end()</literal> &mdash; end a long-running conversation (equivalent "
+"to <literal>@End</literal>)."
+msgstr ""
+"<literal>end()</literal> - termine une conversation de longue durée "
+"(équivaut à <literal>@End</literal>)."
+
+#. Tag: para
+#: Components.xml:526
+#, no-c-format
+msgid ""
+"<literal>pop()</literal> &mdash; pop the conversation stack, returning to "
+"the parent conversation."
+msgstr ""
+"<literal>pop()</literal> - dépile la pile de conversation, retournant ainsi "
+"dans la conversation parente."
+
+#. Tag: para
+#: Components.xml:531
+#, no-c-format
+msgid ""
+"<literal>root()</literal> &mdash; return to the root conversation of the "
+"conversation stack."
+msgstr ""
+"<literal>root()</literal> - retourne dans la conversation racine de la pile "
+"de conversations. "
+
+#. Tag: para
+#: Components.xml:536
+#, no-c-format
+msgid ""
+"<literal>changeFlushMode(FlushModeType flushMode)</literal> &mdash; change "
+"the flush mode of the conversation."
+msgstr ""
+"<literal>changeFlushMode(FlushModeType flushMode)</literal> - modifie le "
+"mode flush de la conversation. "
+
+#. Tag: literal
+#: Components.xml:544
+#, no-c-format
+msgid "org.jboss.seam.core.conversationList"
+msgstr "org.jboss.seam.core.conversationList"
+
+#. Tag: para
+#: Components.xml:546
+#, no-c-format
+msgid "Manager component for the conversation list."
+msgstr "Composant de gestion pour la liste des conversations."
+
+#. Tag: literal
+#: Components.xml:552
+#, no-c-format
+msgid "org.jboss.seam.core.conversationStack"
+msgstr "org.jboss.seam.core.conversationStack"
+
+#. Tag: para
+#: Components.xml:554
+#, no-c-format
+msgid "Manager component for the conversation stack (breadcrumbs)."
+msgstr "Composant de gestion pour la pile de conversations (breadcrumbs)."
+
+#. Tag: literal
+#: Components.xml:560
+#, no-c-format
+msgid "org.jboss.seam.core.switcher"
+msgstr "org.jboss.seam.core.switcher"
+
+#. Tag: para
+#: Components.xml:562
+#, no-c-format
+msgid "The conversation switcher."
+msgstr "Le commutateur de conversations."
+
+#. Tag: title
+#: Components.xml:574
+#, no-c-format
+msgid "jBPM-related components"
+msgstr "Composants associés à jBPM"
+
+#. Tag: para
+#: Components.xml:575
+#, no-c-format
+msgid "These components are for use with jBPM."
+msgstr "Ces composants sont à utiliser avec jBPM."
+
+#. Tag: literal
+#: Components.xml:580
+#, no-c-format
+msgid "org.jboss.seam.core.pageflow"
+msgstr "org.jboss.seam.core.pageflow"
+
+#. Tag: para
+#: Components.xml:582
+#, no-c-format
+msgid "API control of Seam pageflows."
+msgstr "Contrôle API des flux de page Seam."
+
+#. Tag: para
+#: Components.xml:587
+#, no-c-format
+msgid ""
+"<literal>isInProcess()</literal> &mdash; returns <literal>true</literal> if "
+"there is currently a pageflow in process"
+msgstr ""
+"<literal>isInProcess()</literal> - retourne <literal>true</literal> s'il "
+"existe actuellement un flux de page en cours "
+
+#. Tag: para
+#: Components.xml:592
+#, no-c-format
+msgid ""
+"<literal>getProcessInstance()</literal> &mdash; returns jBPM "
+"<literal>ProcessInstance</literal> for the current pageflow"
+msgstr ""
+"<literal>getProcessInstance()</literal> &mdash; retourne "
+"<literal>ProcessInstance</literal> jBPM pour le flux de page en cours "
+
+#. Tag: para
+#: Components.xml:597
+#, no-c-format
+msgid ""
+"<literal>begin(String pageflowName)</literal> &mdash; begin a pageflow in "
+"the context of the current conversation"
+msgstr ""
+"<literal>setTimeout(int timeout)</literal> - commence un flux de page dans "
+"le contexte de la conversation courante."
+
+#. Tag: para
+#: Components.xml:602
+#, no-c-format
+msgid ""
+"<literal>reposition(String nodeName)</literal> &mdash; reposition the "
+"current pageflow to a particular node"
+msgstr ""
+"<literal>reposition(String nodeName)</literal> - repositionne le flux de "
+"page courant à un noeud particulier "
+
+#. Tag: literal
+#: Components.xml:610
+#, no-c-format
+msgid "org.jboss.seam.core.actor"
+msgstr "org.jboss.seam.core.actor"
+
+#. Tag: para
+#: Components.xml:612
+#, no-c-format
+msgid ""
+"API for application control of attributes of the jBPM actor associated with "
+"the current session."
+msgstr ""
+"API pour les attributs de contrôle d'application de l'acteur jBPM associé à "
+"la session courante. "
+
+#. Tag: para
+#: Components.xml:617
+#, no-c-format
+msgid ""
+"<literal>setId(String actorId)</literal> &mdash; sets the jBPM actor id of "
+"the current user."
+msgstr ""
+"<literal>setTimeout(int timeout)</literal> - définit l'id de l'acteur jBPM "
+"de l'utilisateur courant."
+
+#. Tag: para
+#: Components.xml:622
+#, no-c-format
+msgid ""
+"<literal>getGroupActorIds()</literal> &mdash; returns a <literal>Set</"
+"literal> to which jBPM actor ids for the current users groups may be added."
+msgstr ""
+"<literal>getGroupActorIds()</literal> &mdash; retourne un <literal>Set</"
+"literal> auquel des ids d'acteur jBPM peuvent être ajoutés pour les groupes "
+"d'utilisateurs courants. "
+
+#. Tag: literal
+#: Components.xml:630
+#, no-c-format
+msgid "org.jboss.seam.core.transition"
+msgstr "org.jboss.seam.core.transition"
+
+#. Tag: para
+#: Components.xml:632
+#, no-c-format
+msgid ""
+"API for application control of the jBPM transition for the current task."
+msgstr ""
+"L'API pour le contrôle d'application de la transition jBPM pour la tâche "
+"courante. "
+
+#. Tag: para
+#: Components.xml:637
+#, no-c-format
+msgid ""
+"<literal>setName(String transitionName)</literal> &mdash; sets the jBPM "
+"transition name to be used when the current task is ended via "
+"<literal>@EndTask</literal>."
+msgstr ""
+"<literal>setName(String transitionName)</literal> - définit le nom de la "
+"transition jBPM à utiliser quand la tâche courante est terminée via "
+"<literal>@EndTask</literal>."
+
+#. Tag: literal
+#: Components.xml:645
+#, no-c-format
+msgid "org.jboss.seam.core.businessProcess"
+msgstr "org.jboss.seam.core.businessProcess"
+
+#. Tag: para
+#: Components.xml:647
+#, no-c-format
+msgid ""
+"API for programmatic control of the association between the conversation and "
+"business process."
+msgstr ""
+"L'API pour le contrôle de programmation de l'association entre la "
+"conversation et le processus métier."
+
+#. Tag: para
+#: Components.xml:652
+#, no-c-format
+msgid ""
+"<literal>businessProcess.taskId</literal> &mdash; the id of the task "
+"associated with the current conversation."
+msgstr ""
+"<literal>businessProcess.taskId</literal> - l'id de la tâche associée à la "
+"conversation courante. "
+
+#. Tag: para
+#: Components.xml:657
+#, no-c-format
+msgid ""
+"<literal>businessProcess.processId</literal> &mdash; the id of the process "
+"associated with the current conversation."
+msgstr ""
+"<literal>businessProcess.processId</literal> - l'id du processus associé à "
+"la conversation courante. "
+
+#. Tag: para
+#: Components.xml:662
+#, no-c-format
+msgid ""
+"<literal>businessProcess.hasCurrentTask()</literal> &mdash; is a task "
+"instance associated with the current conversation?"
+msgstr ""
+"<literal>businessProcess.hasCurrentTask()</literal> - est-ce une instance de "
+"tâche associée à la conversation courante ?"
+
+#. Tag: para
+#: Components.xml:667
+#, no-c-format
+msgid ""
+"<literal>businessProcess.hasCurrentProcess()</literal> &mdash; is a process "
+"instance associated with the current conversation."
+msgstr ""
+"<literal>businessProcess.hasCurrentProcess()</literal> - est une instance de "
+"processus associée à la conversation courante. "
+
+#. Tag: para
+#: Components.xml:672
+#, no-c-format
+msgid ""
+"<literal>createProcess(String name)</literal> &mdash; create an instance of "
+"the named process definition and associate it with the current conversation."
+msgstr ""
+"<literal>createProcess(String name)</literal> - crée une instance de la "
+"définition du processus nommée et l'associe à la conversation courante. "
+
+#. Tag: para
+#: Components.xml:677
+#, no-c-format
+msgid ""
+"<literal>startTask()</literal> &mdash; start the task associated with the "
+"current conversation."
+msgstr ""
+"<literal>startTask()</literal> - commence la tâche associée à la "
+"conversation courante. "
+
+#. Tag: para
+#: Components.xml:682
+#, no-c-format
+msgid ""
+"<literal>endTask(String transitionName)</literal> &mdash; end the task "
+"associated with the current conversation."
+msgstr ""
+"<literal>endTask(String transitionName)</literal> - termine la tâche "
+"associée à la conversation courante."
+
+#. Tag: para
+#: Components.xml:687
+#, no-c-format
+msgid ""
+"<literal>resumeTask(Long id)</literal> &mdash; associate the task with the "
+"given id with the current conversation."
+msgstr ""
+"<literal>resumeTask(Long id)</literal> - associe la tâche à l'id indiqué "
+"avec la conversation courante."
+
+#. Tag: para
+#: Components.xml:692
+#, no-c-format
+msgid ""
+"<literal>resumeProcess(Long id)</literal> &mdash; associate the process with "
+"the given id with the current conversation."
+msgstr ""
+"<literal>resumeProcess(Long id)</literal> - associe le processus à l'id "
+"indiqué avec la conversation courante. "
+
+#. Tag: para
+#: Components.xml:697
+#, no-c-format
+msgid ""
+"<literal>transition(String transitionName)</literal> &mdash; trigger the "
+"transition."
+msgstr ""
+"<literal>transition(String transitionName)</literal> - déclenche la "
+"transition."
+
+#. Tag: literal
+#: Components.xml:705
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstance"
+msgstr "org.jboss.seam.core.taskInstance"
+
+#. Tag: para
+#: Components.xml:707
+#, no-c-format
+msgid "Manager component for the jBPM <literal>TaskInstance</literal>."
+msgstr "Composant de gestion pour la <literal>TaskInstance</literal> jBPM."
+
+#. Tag: literal
+#: Components.xml:713
+#, no-c-format
+msgid "org.jboss.seam.core.processInstance"
+msgstr "org.jboss.seam.core.processInstance"
+
+#. Tag: para
+#: Components.xml:715
+#, no-c-format
+msgid "Manager component for the jBPM <literal>ProcessInstance</literal>."
+msgstr "Composant de gestion pour la <literal>ProcessInstance</literal> jBPM."
+
+#. Tag: literal
+#: Components.xml:721
+#, no-c-format
+msgid "org.jboss.seam.core.jbpmContext"
+msgstr "org.jboss.seam.core.jbpmContext"
+
+#. Tag: para
+#: Components.xml:723
+#, no-c-format
+msgid "Manager component for an event-scoped <literal>JbpmContext</literal>."
+msgstr ""
+"Composant de gestion pour un <literal>JbpmContext</literal> event-scoped."
+
+#. Tag: literal
+#: Components.xml:729
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstanceList"
+msgstr "org.jboss.seam.core.taskInstanceList"
+
+#. Tag: para
+#: Components.xml:731
+#, no-c-format
+msgid "Manager component for the jBPM task list."
+msgstr "Composant de gestion pour la liste de tâches jBPM."
+
+#. Tag: literal
+#: Components.xml:737
+#, no-c-format
+msgid "org.jboss.seam.core.pooledTaskInstanceList"
+msgstr "org.jboss.seam.core.pooledTaskInstanceList"
+
+#. Tag: para
+#: Components.xml:739
+#, no-c-format
+msgid "Manager component for the jBPM pooled task list."
+msgstr "Composant de gestion pour la liste de tâches jBPM partagées. "
+
+#. Tag: literal
+#: Components.xml:745
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstanceListForType"
+msgstr "org.jboss.seam.core.taskInstanceListForType"
+
+#. Tag: para
+#: Components.xml:747
+#, no-c-format
+msgid "Manager component for the jBPM task lists."
+msgstr "Composant de gestion pour les listes de tâches jBPM."
+
+#. Tag: literal
+#: Components.xml:753
+#, no-c-format
+msgid "org.jboss.seam.core.pooledTask"
+msgstr "org.jboss.seam.core.pooledTask"
+
+#. Tag: para
+#: Components.xml:755
+#, no-c-format
+msgid "Action handler for pooled task assignment."
+msgstr "Gestionnaire d'actions pour les attributions de tâches partagées."
+
+#. Tag: para
+#: Components.xml:761
+#, no-c-format
+msgid ""
+"All of these components are installed whenever the component <literal>org."
+"jboss.seam.core.jbpm</literal> is installed."
+msgstr ""
+"Tous ces composants sont installés à chaque fois que le composant "
+"<literal>org.jboss.seam.core.jbpm</literal> est installé. "
+
+#. Tag: title
+#: Components.xml:767
+#, no-c-format
+msgid "Security-related components"
+msgstr "Composants liés à la sécurité"
+
+#. Tag: para
+#: Components.xml:768
+#, no-c-format
+msgid "These components relate to web-tier security."
+msgstr "Ces composants sont liés à la sécurité web-tier."
+
+#. Tag: literal
+#: Components.xml:773
+#, no-c-format
+msgid "org.jboss.seam.core.userPrincipal"
+msgstr "org.jboss.seam.core.userPrincipal"
+
+#. Tag: para
+#: Components.xml:775
+#, no-c-format
+msgid "Manager component for the current user <literal>Principal</literal>."
+msgstr ""
+"Composant de gestion pour l'utilisateur courant <literal>Principal</literal>."
+
+#. Tag: literal
+#: Components.xml:781
+#, no-c-format
+msgid "org.jboss.seam.core.isUserInRole"
+msgstr "org.jboss.seam.core.isUserInRole"
+
+#. Tag: para
+#: Components.xml:783
+#, fuzzy, no-c-format
+msgid ""
+"Allows JSF pages to choose to render a control, depending upon the roles "
+"available to the current principal. <literal>&lt;h:commandButton value=\"edit"
+"\" rendered=\"#{isUserInRole[&#39;admin&#39;]}\"/&gt;</literal>."
+msgstr ""
+"Permet aux pages JSF de choisir d'afficher un contrôle, selon les rôles "
+"disponibles au principal courant. <literal>&lt;h:commandButton value=\"edit"
+"\" rendered=\"#{isUserInRole['admin']}\"/&gt;</literal>."
+
+#. Tag: title
+#: Components.xml:792
+#, no-c-format
+msgid "JMS-related components"
+msgstr "Composants liés à JMS"
+
+#. Tag: para
+#: Components.xml:793
+#, no-c-format
+msgid ""
+"These components are for use with managed <literal>TopicPublisher</literal>s "
+"and <literal>QueueSender</literal>s (see below)."
+msgstr ""
+"Ces composants sont à utiliser avec des <literal>TopicPublisher</literal>s "
+"et <literal>QueueSender</literal>s gérés (voir ci-dessous)."
+
+#. Tag: literal
+#: Components.xml:798
+#, no-c-format
+msgid "org.jboss.seam.jms.queueSession"
+msgstr "org.jboss.seam.jms.queueSession"
+
+#. Tag: para
+#: Components.xml:800
+#, no-c-format
+msgid "Manager component for a JMS <literal>QueueSession</literal> ."
+msgstr "Composant de gestion pour une <literal>QueueSession</literal> JMS."
+
+#. Tag: literal
+#: Components.xml:806
+#, no-c-format
+msgid "org.jboss.seam.jms.topicSession"
+msgstr "org.jboss.seam.jms.topicSession"
+
+#. Tag: para
+#: Components.xml:808
+#, no-c-format
+msgid "Manager component for a JMS <literal>TopicSession</literal> ."
+msgstr "Composant de gestion pour une <literal>TopicSession</literal> JMS."
+
+#. Tag: title
+#: Components.xml:817
+#, no-c-format
+msgid "Mail-related components"
+msgstr "Composants liés au courriel"
+
+#. Tag: para
+#: Components.xml:818
+#, fuzzy, no-c-format
+msgid "These components are for use with Seam&#39;s Email support"
+msgstr ""
+"Ces composants sont à utiliser avec la prise en charge de courriel de Seam"
+
+#. Tag: literal
+#: Components.xml:823
+#, no-c-format
+msgid "org.jboss.seam.mail.mailSession"
+msgstr "org.jboss.seam.mail.mailSession"
+
+#. Tag: para
+#: Components.xml:825
+#, no-c-format
+msgid "Manager component for a JavaMail <literal>Session</literal> ."
+msgstr "Composant de gestion pour une <literal>Session</literal> JavaMail."
+
+#. Tag: para
+#: Components.xml:830
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.host</literal> &mdash; the hostname "
+"of the SMTP server to use"
+msgstr ""
+"<literal>org.jboss.seam.mail.mailSession.host</literal> - le nom d'hôte du "
+"serveurSMTP à utiliser"
+
+#. Tag: para
+#: Components.xml:835
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.port</literal> &mdash; the port of "
+"the SMTP server to use"
+msgstr ""
+"<literal>org.jboss.seam.mail.mailSession.port</literal> - le port du serveur "
+"SMTP à utiliser"
+
+#. Tag: para
+#: Components.xml:840
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.username</literal> &mdash; the "
+"username to use to connect to the SMTP server."
+msgstr ""
+"<literal>org.jboss.seam.mail.mailSession.username</literal> - le nom "
+"d'utilisateur à utiliser pour se connecter au serveur SMTP."
+
+#. Tag: para
+#: Components.xml:845
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.password</literal> &mdash; the "
+"password to use to connect to the SMTP server"
+msgstr ""
+"<literal>org.jboss.seam.mail.mailSession.password</literal> - le mot de "
+"passe à utiliser pour se connecter au serveur SMTP"
+
+#. Tag: para
+#: Components.xml:850
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.debug</literal> &mdash; enable "
+"JavaMail debugging (very verbose)"
+msgstr ""
+"<literal>org.jboss.seam.mail.mailSession.debug</literal> - active le "
+"débogage JavaMail (très détaillé)"
+
+#. Tag: para
+#: Components.xml:855
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.sessionJndiName</literal> &mdash; "
+"name under which a javax.mail.Session is bound to JNDI"
+msgstr ""
+"<literal>org.jboss.seam.mail.mailSession.sessionJndiName</literal> - nom "
+"sous lequel un javax.mail.Session est lié au JNDI"
+
+#. Tag: title
+#: Components.xml:866
+#, no-c-format
+msgid "Infrastructural components"
+msgstr "Composants infrastructurels"
+
+#. Tag: para
+#: Components.xml:867
+#, no-c-format
+msgid ""
+"These components provide critical platform infrastructure. You can install a "
+"component by including its class name in the <literal>org.jboss.seam.core."
+"init.componentClasses</literal> configuration property."
+msgstr ""
+"Ces composants fournissent une infrastructure de plate-forme critique. Vous "
+"pouvez installer un composant en incluant son nom de classe dans la "
+"propriété de configuration <literal>org.jboss.seam.core.init."
+"componentClasses</literal>."
+
+#. Tag: literal
+#: Components.xml:872
+#, no-c-format
+msgid "org.jboss.seam.core.init"
+msgstr "org.jboss.seam.core.init"
+
+#. Tag: para
+#: Components.xml:874
+#, no-c-format
+msgid "Initialization settings for Seam. Always installed."
+msgstr "Paramètres d'initialisation pour Seam. Toujours installés."
+
+#. Tag: para
+#: Components.xml:879
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.jndiPattern</literal> &mdash; the JNDI "
+"pattern used for looking up session beans"
+msgstr ""
+"<literal>org.jboss.seam.core.init.jndiPattern</literal> - le modèle JNDI "
+"utilisé pour rechercher les beans session"
+
+#. Tag: para
+#: Components.xml:884
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.debug</literal> &mdash; enable Seam debug "
+"mode"
+msgstr ""
+"<literal>org.jboss.seam.core.init.debug</literal> - active le mode de "
+"débogage Seam "
+
+#. Tag: para
+#: Components.xml:889
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.clientSideConversations</literal> &mdash; "
+"if set to <literal>true</literal>, Seam will save conversation context "
+"variables in the client instead of in the <literal>HttpSession</literal>."
+msgstr ""
+"<literal>org.jboss.seam.core.init.clientSideConversations</literal> - si "
+"défini à <literal>true</literal>, Seam enregistrera les variables de "
+"contexte de conversation dans le client et non dans la <literal>HttpSession</"
+"literal>."
+
+#. Tag: para
+#: Components.xml:894
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.userTransactionName</literal> &mdash; the "
+"JNDI name to use when looking up the JTA <literal>UserTransaction</literal> "
+"object."
+msgstr ""
+"<literal>org.jboss.seam.core.init.userTransactionName</literal> - le nom "
+"JNDI à utiliser quand on recherche l'objet <literal>UserTransaction</"
+"literal> JTA."
+
+#. Tag: literal
+#: Components.xml:902
+#, no-c-format
+msgid "org.jboss.seam.core.manager"
+msgstr "org.jboss.seam.core.manager"
+
+#. Tag: para
+#: Components.xml:904
+#, no-c-format
+msgid ""
+"Internal component for Seam page and conversation context management. Always "
+"installed."
+msgstr ""
+"Composant interne pour la gestion de la page Seam et du contexte de "
+"conversation. Toujours installé. "
+
+#. Tag: para
+#: Components.xml:909
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationTimeout</literal> &mdash; "
+"the conversation context timeout in milliseconds."
+msgstr ""
+"<literal>org.jboss.seam.core.manager.conversationTimeout</literal> - le "
+"timeout du contexte de conversation en millisecondes."
+
+#. Tag: para
+#: Components.xml:914
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.concurrentRequestTimeout</literal> "
+"&mdash; maximum wait time for a thread attempting to gain a lock on the long-"
+"running conversation context."
+msgstr ""
+"<literal>org.jboss.seam.core.manager.concurrentRequestTimeout</literal> - "
+"durée d'attente maximum pour un thread qui essaye d'obtenir un verrou sur un "
+"contexte de conversation de longue durée. "
+
+#. Tag: para
+#: Components.xml:919
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationIdParameter</literal> "
+"&mdash; the request parameter used to propagate the conversation id, default "
+"to <literal>conversationId</literal>."
+msgstr ""
+"<literal>org.jboss.seam.core.manager.conversationIdParameter</literal> - le "
+"paramètre de requête utilisé pour propager l'id de conversation, par défaut "
+"à <literal>conversationId</literal>."
+
+#. Tag: para
+#: Components.xml:924
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationIsLongRunningParameter</"
+"literal> &mdash; the request parameter used to propagate information about "
+"whether the conversation is long-running, default to "
+"<literal>conversationIsLongRunning</literal>."
+msgstr ""
+"<literal>org.jboss.seam.core.manager.conversationIsLongRunningParameter</"
+"literal> - le paramètre de requête utilisé pour propager les information "
+"pour savoir si la conversation est de longue durée, par défaut à "
+"<literal>conversationIsLongRunning</literal>."
+
+#. Tag: literal
+#: Components.xml:932
+#, no-c-format
+msgid "org.jboss.seam.core.pages"
+msgstr "org.jboss.seam.core.pages"
+
+#. Tag: para
+#: Components.xml:934
+#, no-c-format
+msgid "Internal component for Seam workspace management. Always installed."
+msgstr ""
+"Composant pour la gestion de l'espace de travail Seam. Toujours installé. "
+
+#. Tag: para
+#: Components.xml:939
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.pages.noConversationViewId</literal> &mdash; "
+"global setting for the view id to redirect to when a conversation entry is "
+"not found on the server side."
+msgstr ""
+"<literal>org.jboss.seam.core.pages.noConversationViewId</literal> - réglage "
+"global pour l'id de l'affichage auquel rediriger quand une conversation "
+"n'est pas trouvée côté serveur. "
+
+#. Tag: literal
+#: Components.xml:947
+#, no-c-format
+msgid "org.jboss.seam.core.ejb"
+msgstr "org.jboss.seam.core.ejb"
+
+#. Tag: para
+#: Components.xml:949
+#, no-c-format
+msgid ""
+"Bootstraps the JBoss Embeddable EJB3 container. Install as class "
+"<literal>org.jboss.seam.core.Ejb</literal>. This is useful when using Seam "
+"with EJB components outside the context of a Java EE 5 application server."
+msgstr ""
+"Amorce le conteneur JBoss Embeddable EJB3. Installez-le en tant que classe "
+"<literal>org.jboss.seam.core.Ejb</literal>. Cela est utilse quand on utilise "
+"Seam avec des composants EJB hors du contexte d'un serveur d'applicaiton "
+"Java EE 5."
+
+#. Tag: para
+#: Components.xml:952
+#, no-c-format
+msgid ""
+"The basic Embedded EJB configuration is defined in <literal>jboss-embedded-"
+"beans.xml</literal>. Additional microcontainer configuration (for example, "
+"extra datasources) may be specified by <literal>jboss-beans.xml</literal> or "
+"<literal>META-INF/jboss-beans.xml</literal> in the classpath."
+msgstr ""
+"La configuration de base de l'EJB imbriqué est définie dans <literal>jboss-"
+"embedded-beans.xml</literal>. Une configuration supplémentaire du micro-"
+"conteneur (par exemple, des sources de données supplémentaires) peut être "
+"spécifiée par <literal>jboss-beans.xml</literal> ou <literal>META-INF/jboss-"
+"beans.xml</literal> dans le chemin de classe. "
+
+#. Tag: literal
+#: Components.xml:958
+#, no-c-format
+msgid "org.jboss.seam.core.microcontainer"
+msgstr "org.jboss.seam.core.microcontainer"
+
+#. Tag: para
+#: Components.xml:960
+#, no-c-format
+msgid ""
+"Bootstraps the JBoss microcontainer. Install as class <literal>org.jboss."
+"seam.core.Microcontainer</literal>. This is useful when using Seam with "
+"Hibernate and no EJB components outside the context of a Java EE application "
+"server. The microcontainer can provide a partial EE environment with JNDI, "
+"JTA, a JCA datasource and Hibernate."
+msgstr ""
+"Amorce le micro-conteneur JBoss. Installez-le en tant que classe "
+"<literal>org.jboss.seam.core.Microcontainer</literal>. Cela est utile quand "
+"on utilise Seam avec Hibernate et aucun composant EJB hors du contexte d'un "
+"serveur d'applications Java EE. Le micro-conteneur peut fournir un "
+"environnement EE partiel avec JNDI, JTA, une source de données JCA et "
+"Hibernate."
+
+#. Tag: para
+#: Components.xml:963
+#, no-c-format
+msgid ""
+"The microcontainer configuration may be specified by <literal>jboss-beans."
+"xml</literal> or <literal>META-INF/jboss-beans.xml</literal> in the "
+"classpath."
+msgstr ""
+"La configuration du micro-conteneur peut être spécifiée par <literal>jboss-"
+"beans.xml</literal> ou <literal>META-INF/jboss-beans.xml</literal> dans le "
+"chemin de classe."
+
+#. Tag: literal
+#: Components.xml:969
+#, no-c-format
+msgid "org.jboss.seam.core.jbpm"
+msgstr "org.jboss.seam.core.jbpm"
+
+#. Tag: para
+#: Components.xml:971
+#, no-c-format
+msgid ""
+"Bootstraps a <literal>JbpmConfiguration</literal>. Install as class "
+"<literal>org.jboss.seam.core.Jbpm</literal>."
+msgstr ""
+"Amorce un <literal>JbpmConfiguration</literal>. Installez-le en tant que "
+"classe <literal>org.jboss.seam.core.Jbpm</literal>."
+
+#. Tag: para
+#: Components.xml:976
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.jbpm.processDefinitions</literal> &mdash; a "
+"list of resource names of jPDL files to be used for orchestration of "
+"business processes."
+msgstr ""
+"<literal>org.jboss.seam.core.jbpm.processDefinitions</literal> - une liste "
+"de noms de ressources des fichiers jPDL à utiliser pour l'orchestration du "
+"processus métier."
+
+#. Tag: para
+#: Components.xml:981
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.jbpm.pageflowDefinitions</literal> &mdash; a "
+"list of resource names of jPDL files to be used for orchestration of "
+"conversation page flows."
+msgstr ""
+"<literal>org.jboss.seam.core.jbpm.pageflowDefinitions</literal> - une liste "
+"de noms de ressources des fichiers jPDL à utiliser pour l'orchestration des "
+"flux de page de la conversation."
+
+#. Tag: literal
+#: Components.xml:989
+#, no-c-format
+msgid "org.jboss.seam.core.conversationEntries"
+msgstr "org.jboss.seam.core.conversationEntries"
+
+#. Tag: para
+#: Components.xml:991
+#, no-c-format
+msgid ""
+"Internal session-scoped component recording the active long-running "
+"conversations between requests."
+msgstr ""
+"Composants internes session-scoped qui enregistrent les conversations de "
+"longue durée actives entre les requêtes. "
+
+#. Tag: literal
+#: Components.xml:997
+#, no-c-format
+msgid "org.jboss.seam.core.facesPage"
+msgstr "org.jboss.seam.core.facesPage"
+
+#. Tag: para
+#: Components.xml:999
+#, no-c-format
+msgid ""
+"Internal page-scoped component recording the conversation context associated "
+"with a page."
+msgstr ""
+"Composant interne page-scoped qui enregistre le contexte de conversation "
+"associé à la page. "
+
+#. Tag: literal
+#: Components.xml:1005
+#, no-c-format
+msgid "org.jboss.seam.core.persistenceContexts"
+msgstr "org.jboss.seam.core.persistenceContexts"
+
+#. Tag: para
+#: Components.xml:1007
+#, no-c-format
+msgid ""
+"Internal component recording the persistence contexts which were used in the "
+"current conversation."
+msgstr ""
+"Composant interne qui enregistre les contextes de persistance utilisés dans "
+"la conversation en cours. "
+
+#. Tag: literal
+#: Components.xml:1013
+#, no-c-format
+msgid "org.jboss.seam.jms.queueConnection"
+msgstr "org.jboss.seam.jms.queueConnection"
+
+#. Tag: para
+#: Components.xml:1015
+#, no-c-format
+msgid ""
+"Manages a JMS <literal>QueueConnection</literal>. Installed whenever managed "
+"managed <literal>QueueSender</literal> is installed."
+msgstr ""
+"Gère un JMS <literal>QueueConnection</literal>. Installé à chaque fois qu'un "
+"<literal>QueueSender</literal> géré, est installé. "
+
+#. Tag: para
+#: Components.xml:1020
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.jms.queueConnection.queueConnectionFactoryJndiName</"
+"literal> &mdash; the JNDI name of a JMS <literal>QueueConnectionFactory</"
+"literal>. Default to <literal>UIL2ConnectionFactory</literal>"
+msgstr ""
+"<literal>org.jboss.seam.jms.queueConnection.queueConnectionFactoryJndiName</"
+"literal> - le nom JNDI d'une <literal>QueueConnectionFactory</literal> JMS. "
+"Par défaut à <literal>UIL2ConnectionFactory</literal>"
+
+#. Tag: literal
+#: Components.xml:1028
+#, no-c-format
+msgid "org.jboss.seam.jms.topicConnection"
+msgstr "org.jboss.seam.jms.topicConnection"
+
+#. Tag: para
+#: Components.xml:1030
+#, no-c-format
+msgid ""
+"Manages a JMS <literal>TopicConnection</literal>. Installed whenever managed "
+"managed <literal>TopicPublisher</literal> is installed."
+msgstr ""
+"Gère une <literal>TopicConnection</literal> JMS. Installé "
+"<literal>TopicPublisher</literal> géré, est installé. "
+
+#. Tag: para
+#: Components.xml:1035
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.jms.topicConnection.topicConnectionFactoryJndiName</"
+"literal> &mdash; the JNDI name of a JMS <literal>TopicConnectionFactory</"
+"literal>. Default to <literal>UIL2ConnectionFactory</literal>"
+msgstr ""
+"<literal>org.jboss.seam.jms.topicConnection.topicConnectionFactoryJndiName</"
+"literal> - le nom JNDI d'une <literal>TopicConnectionFactory</literal> JMS. "
+"Par défaut à <literal>UIL2ConnectionFactory</literal>"
+
+#. Tag: literal
+#: Components.xml:1043
+#, no-c-format
+msgid "org.jboss.seam.persistence.persistenceProvider"
+msgstr "org.jboss.seam.persistence.persistenceProvider"
+
+#. Tag: para
+#: Components.xml:1045
+#, no-c-format
+msgid "Abstraction layer for non-standardized features of JPA provider."
+msgstr ""
+"Couche d'abstraction pour des fonctionnalités non-standardisées du "
+"fournisseur JPA."
+
+#. Tag: literal
+#: Components.xml:1051
+#, no-c-format
+msgid "org.jboss.seam.core.validation"
+msgstr "org.jboss.seam.core.validation"
+
+#. Tag: para
+#: Components.xml:1053
+#, no-c-format
+msgid "Internal component for Hibernate Validator support."
+msgstr "Composant interne pour la prise en charge du Hibernate Validator."
+
+#. Tag: literal
+#: Components.xml:1059
+#, no-c-format
+msgid "org.jboss.seam.debug.introspector"
+msgstr "org.jboss.seam.debug.introspector"
+
+#. Tag: para
+#: Components.xml:1061 Components.xml:1069
+#, no-c-format
+msgid "Support for the Seam Debug Page."
+msgstr "Support pour la page de débogage Seam."
+
+#. Tag: literal
+#: Components.xml:1067
+#, no-c-format
+msgid "org.jboss.seam.debug.contexts"
+msgstr "org.jboss.seam.debug.contexts"
+
+#. Tag: title
+#: Components.xml:1078
+#, no-c-format
+msgid "Special components"
+msgstr "Composants particuliers"
+
+#. Tag: para
+#: Components.xml:1079
+#, no-c-format
+msgid ""
+"Certain special Seam component classes are installable multiple times under "
+"names specified in the Seam configuration. For example, the following lines "
+"in <literal>components.xml</literal> install and configure two Seam "
+"components:"
+msgstr ""
+"Certaines classes de composants Seam particulières sont installables de "
+"multiples fois sous des noms spécifiés dans la configuration Seam. Par "
+"exemple, les lignes suivantes dans <literal>components.xml</literal>, "
+"installe et configure deux composants Seam :"
+
+#. Tag: programlisting
+#: Components.xml:1082
+#, no-c-format
+msgid ""
+"&lt;component name=\"bookingDatabase\"\n"
+"          class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"    &lt;property name=\"persistenceUnitJndiName\"&gt;java:/comp/emf/"
+"bookingPersistence&lt;/property&gt;\n"
+"&lt;/component&gt;\n"
+"\n"
+"&lt;component name=\"userDatabase\"\n"
+"          class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"    &lt;property name=\"persistenceUnitJndiName\"&gt;java:/comp/emf/"
+"userPersistence&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+"&lt;component name=\"bookingDatabase\"\n"
+"          class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"    &lt;property name=\"persistenceUnitJndiName\"&gt;java:/comp/emf/"
+"bookingPersistence&lt;/property&gt;\n"
+"&lt;/component&gt;\n"
+"\n"
+"&lt;component name=\"userDatabase\"\n"
+"          class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"    &lt;property name=\"persistenceUnitJndiName\"&gt;java:/comp/emf/"
+"userPersistence&lt;/property&gt;\n"
+"&lt;/component&gt;"
+
+#. Tag: para
+#: Components.xml:1083
+#, no-c-format
+msgid ""
+"The Seam component names are <literal>bookingDatabase</literal> and "
+"<literal>userDatabase</literal>."
+msgstr ""
+"Les noms de composants Seam sont <literal>bookingDatabase</literal> et "
+"<literal>userDatabase</literal>."
+
+#. Tag: literal
+#: Components.xml:1088
+#, no-c-format
+msgid "&lt;entityManager&gt;"
+msgstr "&lt;entityManager&gt;"
+
+#. Tag: literal
+#: Components.xml:1089
+#, no-c-format
+msgid "org.jboss.seam.core.ManagedPersistenceContext"
+msgstr "org.jboss.seam.core.ManagedPersistenceContext"
+
+#. Tag: para
+#: Components.xml:1091
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed <literal>EntityManager</"
+"literal> with an extended persistence context."
+msgstr ""
+"Composant de gestion pour une conversation, scoped managed "
+"<literal>EntityManager</literal> avec un contexte de persistance étendu. "
+
+#. Tag: para
+#: Components.xml:1096
+#, fuzzy, no-c-format
+msgid ""
+"<literal> &lt;entityManager&gt; .entityManagerFactory</literal> &mdash; a "
+"value binding expression that evaluates to an instance of "
+"<literal>EntityManagerFactory</literal>."
+msgstr ""
+"<literal>&lt;entityManager&gt;.entityManagerFactory</literal> - une "
+"expression d'association de valeurs qui évalue à une instance de "
+"<literal>EntityManagerFactory</literal>."
+
+#. Tag: para
+#: Components.xml:1099
+#, fuzzy, no-c-format
+msgid ""
+"<literal> &lt;entityManager&gt; .persistenceUnitJndiName</literal> &mdash; "
+"the JNDI name of the entity manager factory, default to <literal>java:/ &lt;"
+"managedPersistenceContext&gt; </literal>."
+msgstr ""
+"<literal>&lt;entityManager&gt;.persistenceUnitJndiName</literal> - le nom "
+"JNDI de la fabrique du gestionnaire d'entités, par défaut à <literal>java:/"
+"&lt;managedPersistenceContext&gt;</literal>."
+
+#. Tag: literal
+#: Components.xml:1107
+#, no-c-format
+msgid "&lt;entityManagerFactory&gt;"
+msgstr "&lt;entityManagerFactory&gt;"
+
+#. Tag: literal
+#: Components.xml:1108
+#, no-c-format
+msgid "org.jboss.seam.core.EntityManagerFactory"
+msgstr "org.jboss.seam.core.EntityManagerFactory"
+
+#. Tag: para
+#: Components.xml:1110
+#, no-c-format
+msgid ""
+"Manages a JPA <literal>EntityManagerFactory</literal>. This is most useful "
+"when using JPA outside of an EJB 3.0 supporting environment."
+msgstr ""
+"Gère une <literal>EntityManagerFactory</literal> JPA. Cela est très utile "
+"quand on utilise JPA hors d'un environnement supportant EJB 3.0."
+
+#. Tag: para
+#: Components.xml:1115
+#, no-c-format
+msgid ""
+"<literal>entityManagerFactory.persistenceUnitName</literal> &mdash; the name "
+"of the persistence unit."
+msgstr ""
+"<literal>entityManagerFactory.persistenceUnitName</literal> - le nom de "
+"l'unité de persistance. "
+
+#. Tag: para
+#: Components.xml:1120 Components.xml:1158
+#, no-c-format
+msgid "See the API JavaDoc for further configuration properties."
+msgstr ""
+"Consultez l'API JavaDoc pour des propriétés de configuration supplémentaires."
+
+#. Tag: literal
+#: Components.xml:1126
+#, no-c-format
+msgid "&lt;session&gt;"
+msgstr "&lt;session&gt;"
+
+#. Tag: literal
+#: Components.xml:1127
+#, no-c-format
+msgid "org.jboss.seam.core.ManagedSession"
+msgstr "org.jboss.seam.core.ManagedSession"
+
+#. Tag: para
+#: Components.xml:1129
+#, fuzzy, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed Hibernate "
+"<literal>Session</literal>."
+msgstr ""
+"Composant de gestion pour une conversation scoped, gérée <literal>Session</"
+"literal> Hibernate."
+
+#. Tag: para
+#: Components.xml:1134
+#, fuzzy, no-c-format
+msgid ""
+"<literal> &lt;session&gt; .sessionFactory</literal> &mdash; a value binding "
+"expression that evaluates to an instance of <literal>SessionFactory</"
+"literal>."
+msgstr ""
+"<literal>&lt;session&gt;.sessionFactory</literal> - une expression "
+"d'association de valeurs qui évalue à une instance de "
+"<literal>SessionFactory</literal>."
+
+#. Tag: para
+#: Components.xml:1137
+#, fuzzy, no-c-format
+msgid ""
+"<literal> &lt;session&gt; .sessionFactoryJndiName</literal> &mdash; the JNDI "
+"name of the session factory, default to <literal>java:/ &lt;"
+"managedSession&gt; </literal>."
+msgstr ""
+"<literal>&lt;session&gt;.sessionFactoryJndiName</literal> - le nom JNDI de "
+"la fabrique de session, par défaut à <literal>java:/&lt;managedSession&gt;</"
+"literal>."
+
+#. Tag: literal
+#: Components.xml:1145
+#, no-c-format
+msgid "&lt;sessionFactory&gt;"
+msgstr "&lt;sessionFactory&gt;"
+
+#. Tag: literal
+#: Components.xml:1146
+#, no-c-format
+msgid "org.jboss.seam.core.HibernateSessionFactory"
+msgstr "org.jboss.seam.core.HibernateSessionFactory"
+
+#. Tag: para
+#: Components.xml:1148
+#, no-c-format
+msgid "Manages a Hibernate <literal>SessionFactory</literal>."
+msgstr "Gère une <literal>SessionFactory</literal> Hibernate."
+
+#. Tag: para
+#: Components.xml:1153
+#, no-c-format
+msgid ""
+"<literal>&lt;sessionFactory&gt;.cfgResourceName</literal> &mdash; the path "
+"to the configuration file. Default to <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+"<literal>&lt;sessionFactory&gt;.cfgResourceName</literal> - le chemin du "
+"fichier de configuration. Par défaut à <literal>hibernate.cfg.xml</literal>."
+
+#. Tag: literal
+#: Components.xml:1164
+#, no-c-format
+msgid "&lt;managedQueueSender&gt;"
+msgstr "&lt;managedQueueSender&gt;"
+
+#. Tag: literal
+#: Components.xml:1165
+#, no-c-format
+msgid "org.jboss.seam.jms.ManagedQueueSender"
+msgstr "org.jboss.seam.jms.ManagedQueueSender"
+
+#. Tag: para
+#: Components.xml:1167
+#, no-c-format
+msgid ""
+"Manager component for an event scoped managed JMS <literal>QueueSender</"
+"literal>."
+msgstr ""
+"Composant de gestion pour un évènement, scoped géré par "
+"<literal>QueueSender</literal> JMS."
+
+#. Tag: para
+#: Components.xml:1172
+#, fuzzy, no-c-format
+msgid ""
+"<literal> &lt;managedQueueSender&gt; .queueJndiName</literal> &mdash; the "
+"JNDI name of the JMS queue."
+msgstr ""
+"<literal>&lt;managedQueueSender&gt;.queueJndiName</literal> - le nom JNDI de "
+"la file d'attente JMS."
+
+#. Tag: literal
+#: Components.xml:1180
+#, no-c-format
+msgid "&lt;managedTopicPublisher&gt;"
+msgstr "&lt;managedTopicPublisher&gt;"
+
+#. Tag: literal
+#: Components.xml:1181
+#, no-c-format
+msgid "org.jboss.seam.jms.ManagedTopicPublisher"
+msgstr "org.jboss.seam.jms.ManagedTopicPublisher"
+
+#. Tag: para
+#: Components.xml:1183
+#, fuzzy, no-c-format
+msgid ""
+"Manager component for an event scoped managed JMS <literal>TopicPublisher</"
+"literal>."
+msgstr ""
+"Composant de gestion pour un évènement scoped, géré par "
+"<literal>TopicPublisher</literal> JMS."
+
+#. Tag: para
+#: Components.xml:1188
+#, fuzzy, no-c-format
+msgid ""
+"<literal> &lt;managedTopicPublisher&gt; .topicJndiName</literal> &mdash; the "
+"JNDI name of the JMS topic."
+msgstr ""
+"<literal>&lt;managedTopicPublisher&gt;.topicJndiName</literal> - le nom JNDI "
+"du topic JMS."
+
+#. Tag: literal
+#: Components.xml:1196
+#, no-c-format
+msgid "&lt;managedWorkingMemory&gt;"
+msgstr "&lt;managedWorkingMemory&gt;"
+
+#. Tag: literal
+#: Components.xml:1197
+#, no-c-format
+msgid "org.jboss.seam.drools.ManagedWorkingMemory"
+msgstr "org.jboss.seam.drools.ManagedWorkingMemory"
+
+#. Tag: para
+#: Components.xml:1199
+#, fuzzy, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed Drools "
+"<literal>WorkingMemory</literal>."
+msgstr ""
+"Composant de gestion pour une conversation scoped, gérée par "
+"<literal>WorkingMemory</literal> Drools."
+
+#. Tag: para
+#: Components.xml:1204
+#, fuzzy, no-c-format
+msgid ""
+"<literal> &lt;managedWorkingMemory&gt; .ruleBase</literal> &mdash; a value "
+"expression that evaluates to an instance of <literal>RuleBase</literal>."
+msgstr ""
+"<literal>&lt;managedWorkingMemory&gt;.ruleBase</literal> - une expression de "
+"la valeur qui évalue à une instance de <literal>RuleBase</literal>."
+
+#. Tag: literal
+#: Components.xml:1212
+#, no-c-format
+msgid "&lt;ruleBase&gt;"
+msgstr "&lt;ruleBase&gt;"
+
+#. Tag: literal
+#: Components.xml:1213
+#, no-c-format
+msgid "org.jboss.seam.drools.RuleBase"
+msgstr "org.jboss.seam.drools.RuleBase"
+
+#. Tag: para
+#: Components.xml:1215
+#, fuzzy, no-c-format
+msgid ""
+"Manager component for an application scoped Drools <literal>RuleBase</"
+"literal>. Note that this is not really intended for production usage, since "
+"it does not support dynamic installation of new rules."
+msgstr ""
+"Composant de gestion pour une application scoped <literal>RuleBase</literal> "
+"Drools . <emphasis>Notez que cela n'est pas conçu pour l'utilisation en "
+"production, étant donné que cela ne supporte pas l'installation dynamique de "
+"nouvelles règles.</emphasis>"
+
+#. Tag: para
+#: Components.xml:1220
+#, fuzzy, no-c-format
+msgid ""
+"<literal> &lt;ruleBase&gt; .ruleFiles</literal> &mdash; a list of files "
+"containing Drools rules."
+msgstr ""
+"<literal>&lt;ruleBase&gt;.ruleFiles</literal> - une liste de fichiers "
+"contenant des règles Drools. "
+
+#. Tag: para
+#: Components.xml:1223
+#, fuzzy, no-c-format
+msgid ""
+"<literal> &lt;ruleBase&gt; .dslFile</literal> &mdash; a Drools DSL "
+"definition."
+msgstr ""
+"<literal>&lt;ruleBase&gt;.dslFile</literal> - une définition DSL Drools."
+
+#. Tag: literal
+#: Components.xml:1231
+#, no-c-format
+msgid "&lt;entityHome&gt;"
+msgstr "&lt;entityHome&gt;"
+
+#. Tag: literal
+#: Components.xml:1232
+#, no-c-format
+msgid "org.jboss.seam.framework.EntityHome"
+msgstr "org.jboss.seam.framework.EntityHome"
+
+#. Tag: literal
+#: Components.xml:1238
+#, no-c-format
+msgid "&lt;hibernateEntityHome&gt;"
+msgstr "&lt;hibernateEntityHome&gt;"
+
+#. Tag: literal
+#: Components.xml:1239
+#, no-c-format
+msgid "org.jboss.seam.framework.HibernateEntityHome"
+msgstr "org.jboss.seam.framework.HibernateEntityHome"
+
+#. Tag: literal
+#: Components.xml:1245
+#, no-c-format
+msgid "&lt;entityQuery&gt;"
+msgstr "&lt;entityQuery&gt;"
+
+#. Tag: literal
+#: Components.xml:1246
+#, no-c-format
+msgid "org.jboss.seam.framework.EntityQuery"
+msgstr "org.jboss.seam.framework.EntityQuery"
+
+#. Tag: literal
+#: Components.xml:1252
+#, no-c-format
+msgid "&lt;hibernateEntityQuery&gt;"
+msgstr "&lt;hibernateEntityQuery&gt;"
+
+#. Tag: literal
+#: Components.xml:1253
+#, no-c-format
+msgid "org.jboss.seam.framework.HibernateEntityQuery"
+msgstr "org.jboss.seam.framework.HibernateEntityQuery"

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Concepts.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Concepts.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Concepts.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2717 @@
+# translation of Concepts.po to french
+# myriam malga <mmalga at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Concepts\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2007-08-03 14:12+1000\n"
+"Last-Translator: myriam malga <mmalga at redhat.com>\n"
+"Language-Team: french\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Concepts.xml:6
+#, no-c-format
+msgid "The contextual component model"
+msgstr "Le modèle de composant contextuel"
+
+#. Tag: para
+#: Concepts.xml:7
+#, no-c-format
+msgid ""
+"The two core concepts in Seam are the notion of a <emphasis>context</"
+"emphasis> and the notion of a <emphasis>component</emphasis>. Components are "
+"stateful objects, usually EJBs, and an instance of a component is associated "
+"with a context, and given a name in that context. <emphasis>Bijection</"
+"emphasis> provides a mechanism for aliasing internal component names "
+"(instance variables) to contextual names, allowing component trees to be "
+"dynamically assembled, and reassembled by Seam."
+msgstr ""
+"Les deux concepts essentiels de Seam sont la notion de <emphasis>contexte</"
+"emphasis> et la notion de <emphasis>composant</emphasis>. Les composants "
+"sont des objets stateful, généralement des EJB, et une instance de composant "
+"est associée à un contexte, et on lui donne un nom dans ce contexte. La "
+"<emphasis>Bijection</emphasis> fournit un mécanisme pour affecter des alias "
+"aux noms des composants internes (variables d'instance) vers les noms "
+"contextuels, ce qui permet à Seam d'assembler et de réassembler "
+"dynamiquement des arborescences de composants."
+
+#. Tag: para
+#: Concepts.xml:10
+#, fuzzy, no-c-format
+msgid "Let&#39;s start by describing the contexts built in to Seam."
+msgstr "Commençons par décrire les contextes intégrés dans Seam."
+
+#. Tag: title
+#: Concepts.xml:13
+#, no-c-format
+msgid "Seam contexts"
+msgstr "Les contextes Seam"
+
+#. Tag: para
+#: Concepts.xml:14
+#, no-c-format
+msgid ""
+"Seam contexts are created and destroyed by the framework. The application "
+"does not control context demarcation via explicit Java API calls. Context "
+"are usually implicit. In some cases, however, contexts are demarcated via "
+"annotations."
+msgstr ""
+"Les contextes de Seam sont créés et détruits par le framework. L'application "
+"ne contrôle pas la démarcation des contextes par des appels explicites d'API "
+"Java. Le contexte est généralement implicite. Dans certains cas, cependant, "
+"les contextes sont démarqués via des annotations."
+
+#. Tag: para
+#: Concepts.xml:17
+#, no-c-format
+msgid "The basic Seam contexts are:"
+msgstr "Les contextes de base de Seam sont :"
+
+#. Tag: para
+#: Concepts.xml:22
+#, no-c-format
+msgid "<para>Stateless context</para>"
+msgstr "<para>Contexte stateless</para>"
+
+#. Tag: para
+#: Concepts.xml:27
+#, no-c-format
+msgid "Event (or request) context"
+msgstr "Le contexte d'évènement (ou de requête)"
+
+#. Tag: para
+#: Concepts.xml:32 Concepts.xml:147
+#, no-c-format
+msgid "<para>Page context</para>"
+msgstr "<para>Contexte de page</para>"
+
+#. Tag: para
+#: Concepts.xml:37 Concepts.xml:152
+#, no-c-format
+msgid "<para>Conversation context</para>"
+msgstr "<para>Contexte de conversation</para>"
+
+#. Tag: para
+#: Concepts.xml:42 Concepts.xml:157
+#, no-c-format
+msgid "<para>Session context</para>"
+msgstr "<para>Contexte de session</para>"
+
+#. Tag: para
+#: Concepts.xml:47 Concepts.xml:162
+#, no-c-format
+msgid "<para>Business process context</para>"
+msgstr "<para>Contexte du processus métier</para>"
+
+#. Tag: para
+#: Concepts.xml:52 Concepts.xml:167
+#, no-c-format
+msgid "<para>Application context</para>"
+msgstr "<para>Contexte d'application</para>"
+
+#. Tag: para
+#: Concepts.xml:57
+#, no-c-format
+msgid ""
+"You will recognize some of these contexts from servlet and related "
+"specifications. However, two of them might be new to you: "
+"<emphasis>conversation context</emphasis>, and <emphasis>business process "
+"context</emphasis>. One reason state management in web applications is so "
+"fragile and error-prone is that the three built-in contexts (request, "
+"session and application) are not especially meaningful from the point of "
+"view of the business logic. A user login session, for example, is a fairly "
+"arbitrary construct in terms of the actual application work flow. Therefore, "
+"most Seam components are scoped to the conversation or business process "
+"contexts, since they are the contexts which are most meaningful in terms of "
+"the application."
+msgstr ""
+"Vous reconnaîtrez certains de ces contextes dans les servlet et les "
+"spécifications associées. Cependant, deux de ces contextes peuvent être "
+"nouveaux pour vous : <emphasis>le contexte de conversation </emphasis>, et "
+"<emphasis>le contexte de process métier</emphasis>. Une des raisons pour "
+"lesquelles la gestion d'états dans les applications web est sujette aux "
+"erreurs est que les trois contextes de base (requête, session et "
+"application) n'ont pas de sens spécifique du point de vue de la logique "
+"métier. Une session de connexion d'un utilisateur, par exemple, est une "
+"construction plutôt arbitraire par rapport au réel flux de production de "
+"l'application. Ainsi, les composants Seam sont tenus par les contextes de "
+"conversation ou de processus métier, puisqu'il s'agit des contextes les plus "
+"significatifs en ce qui concerne l'application. "
+
+#. Tag: para
+#: Concepts.xml:60
+#, fuzzy, no-c-format
+msgid "Let&#39;s look at each context in turn."
+msgstr "Regardons chaque contexte."
+
+#. Tag: title
+#: Concepts.xml:63
+#, no-c-format
+msgid "<title>Stateless context</title>"
+msgstr "<title>Contexte stateless</title>"
+
+#. Tag: para
+#: Concepts.xml:64
+#, no-c-format
+msgid ""
+"Components which are truly stateless (stateless session beans, primarily) "
+"always live in the stateless context (this is really a non-context). "
+"Stateless components are not very interesting, and are arguably not very "
+"object-oriented. Nevertheless, they are important and often useful."
+msgstr ""
+"Les composants qui sont vraiments stateless (bean session stateless "
+"principalement) vivent toujours dans le contexte stateless (c'est en fait, "
+"un non-contexte). Les composants stateless ne sont pas très intéressants, et "
+"ne sont pas vraiment orientés objet. Néanmoins, ils sont importants et "
+"souvent utiles."
+
+#. Tag: title
+#: Concepts.xml:67
+#, no-c-format
+msgid "<title>Event context</title>"
+msgstr "<title>Contexte d'évèmenent</title>"
+
+#. Tag: para
+#: Concepts.xml:68
+#, no-c-format
+msgid ""
+"The event context is the \"narrowest\" stateful context, and is a "
+"generalization of the notion of the web request context to cover other kinds "
+"of events. Nevertheless, the event context associated with the lifecycle of "
+"a JSF request is the most important example of an event context, and the one "
+"you will work with most often. Components associated with the event context "
+"are destroyed at the end of the request, but their state is available and "
+"well-defined for at least the lifecycle of the request."
+msgstr ""
+"Le contexte d'évènement est le premier contexte stateful, il est une "
+"généralisation de la notion de contexte de requête web pour couvrir d'autres "
+"sortes d'évènements. Toutefois, le contexte d'évènement associé au cycle de "
+"vie d'une requête JSF est l'exemple le plus important du contexte "
+"d'évènement, et celui avec lequel vous travaillerez le plus fréquemment. Les "
+"composants associés avec le contexte d'évènement sont détruits à la fin de "
+"la requête, mais leur état est disponible et bien défini, au minimum, "
+"pendant le cycle de vie de la requête."
+
+#. Tag: para
+#: Concepts.xml:71
+#, no-c-format
+msgid ""
+"When you invoke a Seam component via RMI, or Seam Remoting, the event "
+"context is created and destroyed just for the invocation."
+msgstr ""
+"Lorsque vous invoquez un composant Seam via RMI, ou Seam Remoting, le "
+"contexte d'évènement est créé et détruit simplement pour l'invocation."
+
+#. Tag: title
+#: Concepts.xml:74
+#, no-c-format
+msgid "<title>Page context</title>"
+msgstr "<title>Contexte de page</title>"
+
+#. Tag: para
+#: Concepts.xml:75
+#, no-c-format
+msgid ""
+"The page context allows you to associate state with a particular instance of "
+"a rendered page. You can initialize state in your event listener, or while "
+"actually rendering the page, and then have access to it from any event that "
+"originates from that page. This is especially useful for functionality like "
+"clickable lists, where the list is backed by changing data on the server "
+"side. The state is actually serialized to the client, so this construct is "
+"extremely robust with respect to multi-window operation and the back button."
+msgstr ""
+"Le contexte de page vous permet d'associer l'état avec une instance "
+"particulière d'une page rendue. Vous pouvez initialiser l'état dans votre "
+"listener d'évènements, ou lors du rendu effectif de la page, et puis y avoir "
+"accès depuis les évènements issus de cette page. C'est particulièrement "
+"utile pour les fonctionnalités comme les listes cliquables, où la liste "
+"engendre des changements de données sur le serveur. L'état est en fait "
+"sérialisé sur le client, ce mécanisme est donc extrêmement robuste par "
+"rapport aux opérations de multi-fenêtrage et au bouton retour."
+
+#. Tag: title
+#: Concepts.xml:78
+#, no-c-format
+msgid "<title>Conversation context</title>"
+msgstr "<title>Contexte de conversation</title>"
+
+#. Tag: para
+#: Concepts.xml:79
+#, no-c-format
+msgid ""
+"The conversation context is a truly central concept in Seam. A "
+"<emphasis>conversation</emphasis> is a unit of work from the point of view "
+"of the user. It might span several interactions with the user, several "
+"requests, and several database transactions. But to the user, a conversation "
+"solves a single problem. For example, \"book hotel\", \"approve contract\", "
+"\"create order\" are all conversations. You might like to think of a "
+"conversation implementing a single \"use case\" or \"user story\", but the "
+"relationship is not necessarily quite exact."
+msgstr ""
+"Le contexte de conversation est un concept vraiment essentiel dans Seam. Une "
+"<emphasis>conversation</emphasis> est une unité de travail du point de vue "
+"de l'utilisateur. Il peut inclure plusieurs interactions avec l'utilisateur, "
+"plusieurs requêtes, et plusieurs transactions avec la base de données. Mais "
+"pour l'utilisateur, une conversation ne résout qu'un problème. Par exemple, "
+"\"réserver un hôtel\", \"approuver un contact\", \"créer une commande\" sont "
+"des conversations. Vous pourriez assimiler la conversation comme étant "
+"l'implémentation d'un \"cas d'utilisation\", mais la relation n'est pas "
+"nécessairement exacte."
+
+#. Tag: para
+#: Concepts.xml:82
+#, no-c-format
+msgid ""
+"A conversation holds state associated with \"what the user is doing now, in "
+"this window\". A single user may have multiple conversations in progress at "
+"any point in time, usually in multiple windows. The conversation context "
+"allows us to ensure that state from the different conversations does not "
+"collide and cause bugs."
+msgstr ""
+"Une conversation contient l'état associé à \"ce que l'utilisateur effectue "
+"au moment présent dans cette fenêtre\". Un simple utilisateur peut avoir "
+"plusieurs conversations en cours à tout moment, dans différentes fenêtres. "
+"Le contexte de conversation permet de s'assurer que les états des "
+"différentes conversations n'entrent pas en collision et ne causent pas de "
+"bogues."
+
+#. Tag: para
+#: Concepts.xml:85
+#, fuzzy, no-c-format
+msgid ""
+"It might take you some time to get used to thinking of applications in terms "
+"of conversations. But once you get used to it, we think you&#39;ll love the "
+"notion, and never be able to not think in terms of conversations again!"
+msgstr ""
+"Vous aurez peut être besoin de temps pour vous habituer à penser vos "
+"applications en terme de conversations. Mais une fois que vous en aurez "
+"l'habitude, nous pensons que vous aimerez cette notion, et que vous ne serez "
+"plus capable de penser autrement !"
+
+#. Tag: para
+#: Concepts.xml:88
+#, no-c-format
+msgid ""
+"Some conversations last for just a single request. Conversations that span "
+"multiple requests must be demarcated using annotations provided by Seam."
+msgstr ""
+"Certaines conversations ne durent que le temps d'une requête. Les "
+"conversations qui s'étendent sur plusieurs requêtes doivent être démarquées "
+"en utilisant les annotations fournies par Seam."
+
+#. Tag: para
+#: Concepts.xml:91
+#, no-c-format
+msgid ""
+"Some conversations are also <emphasis>tasks</emphasis>. A task is a "
+"conversation that is significant in terms of a long-running business "
+"process, and has the potential to trigger a business process state "
+"transition when it is successfully completed. Seam provides a special set of "
+"annotations for task demarcation."
+msgstr ""
+"Certaines conversations sont aussi des <emphasis>tâches</emphasis>. Une "
+"tâche est une conversation qui a un sens en terme de processus métier long, "
+"et qui a le potentiel de déclencher une transition de l'état du processus "
+"métier lorsqu'elle a réussi. Seam fournit un ensemble particulier "
+"d'annotations pour la démarcation de tâche."
+
+#. Tag: para
+#: Concepts.xml:94
+#, no-c-format
+msgid ""
+"Conversations may be <emphasis>nested</emphasis>, with one conversation "
+"taking place \"inside\" a wider conversation. This is an advanced feature."
+msgstr ""
+"Les conversations peuvent être <emphasis>imbriquées</emphasis>, avec une "
+"conversation qui prend place \"à l'intérieur\" d'une conversation plus "
+"large. C'est une fonctionnalité avancée."
+
+#. Tag: para
+#: Concepts.xml:97
+#, no-c-format
+msgid ""
+"Usually, conversation state is actually held by Seam in the servlet session "
+"between requests. Seam implements configurable <emphasis>conversation "
+"timeout</emphasis>, automatically destroying inactive conversations, and "
+"thus ensuring that the state held by a single user login session does not "
+"grow without bound if the user abandons conversations."
+msgstr ""
+"Habituellement, l'état de la conversation est en fait tenu par Seam dans la "
+"session de la servlet entre les requêtes. Seam implémente un <emphasis>délai "
+"de conversation</emphasis> configurable, qui permet de détruire "
+"automatiquement les conversations inactives, s'assurant ainsi que l'état "
+"tenu par la session d'un utilisateur connecté ne grossisse pas sans limite, "
+"si l'utilisateur abandonne ses conversations."
+
+#. Tag: para
+#: Concepts.xml:100
+#, no-c-format
+msgid ""
+"Seam serializes processing of concurrent requests that take place in the "
+"same long-running conversation context, in the same process."
+msgstr ""
+"Seam sérialise les traitements des requêtes concurrentes qui prennent place "
+"dans le même contexte de conversation long, dans le même processus."
+
+#. Tag: para
+#: Concepts.xml:103
+#, no-c-format
+msgid ""
+"Alternatively, Seam may be configured to keep conversational state in the "
+"client browser."
+msgstr ""
+"Alternativement, Seam peut être configuré pour conserver l'état "
+"conversationnel sur le navigateur du client."
+
+#. Tag: title
+#: Concepts.xml:106
+#, no-c-format
+msgid "<title>Session context</title>"
+msgstr "<title>Contexte de session</title>"
+
+#. Tag: para
+#: Concepts.xml:107
+#, no-c-format
+msgid ""
+"A session context holds state associated with the user login session. While "
+"there are some cases where it is useful to share state between several "
+"conversations, we generally frown on the use of session context for holding "
+"components other than global information about the logged in user."
+msgstr ""
+"Un contexte de session stocke l'état associé avec la session de "
+"l'utilisateur connecté. Bien qu'il existe quelques cas où il est utile de "
+"partager des états entre plusieurs conversations, nous déconseillons "
+"généralement l'utlisation du contexte de session pour stocker les composants "
+"autres que les informations globales à propos de l'utilisateur connecté."
+
+#. Tag: para
+#: Concepts.xml:110
+#, no-c-format
+msgid ""
+"In a JSR-168 portal environment, the session context represents the portlet "
+"session."
+msgstr ""
+"Dans un environnement de portail JSR-168, le contexte de session représente "
+"une session portlet."
+
+#. Tag: title
+#: Concepts.xml:113
+#, no-c-format
+msgid "<title>Business process context</title>"
+msgstr "<title>Contexte de processus métier</title>"
+
+#. Tag: para
+#: Concepts.xml:114
+#, no-c-format
+msgid ""
+"The business process context holds state associated with the long running "
+"business process. This state is managed and made persistent by the BPM "
+"engine (JBoss jBPM). The business process spans multiple interactions with "
+"multiple users, so this state is shared between multiple users, but in a "
+"well-defined manner. The current task determines the current business "
+"process instance, and the lifecycle of the business process is defined "
+"externally using a <emphasis>process definition language</emphasis>, so "
+"there are no special annotations for business process demarcation."
+msgstr ""
+"Le contexte de process métier tient l'état associé avec un processus métier "
+"long. Cet état est géré et rendu persistant par le moteur BPM (JBoss jBPM). "
+"Le processus métier peut s'étendre sur plusieurs interactions avec de "
+"multiples utilisateurs, cet état est donc partagé entre différents "
+"utilisateurs, mais d'une façon bien définie. La tâche courante détermine "
+"l'instance du processus métier courant, et le cycle de vie du processus "
+"métier est défini extérieurement, en utilisant un <emphasis>langage de "
+"définition de processus</emphasis>, il n'y a donc pas d'annotations "
+"particulières pour la démarcation du processus métier."
+
+#. Tag: title
+#: Concepts.xml:117
+#, no-c-format
+msgid "<title>Application context</title>"
+msgstr "<title>Contexte d'application</title>"
+
+#. Tag: para
+#: Concepts.xml:118
+#, no-c-format
+msgid ""
+"The application context is the familiar servlet context from the servlet "
+"spec. Application context is mainly useful for holding static information "
+"such as configuration data, reference data or metamodels. For example, Seam "
+"stores its own configuration and metamodel in the application context."
+msgstr ""
+"Le contexte d'application est le contexte de sevlet familier provenant des "
+"spécifications servlet. Le contexte d'application est surtout utile pour "
+"stocker des informations statiques comme les données de configuration, les "
+"données de référence et les méta-modèles. Par exemple, Seam stocke sa propre "
+"configuration et son propre méta-modèle dans le contexte d'application."
+
+#. Tag: title
+#: Concepts.xml:121
+#, no-c-format
+msgid "Context variables"
+msgstr "Les variables de contexte"
+
+#. Tag: para
+#: Concepts.xml:122
+#, no-c-format
+msgid ""
+"A context defines a namespace, a set of <emphasis>context variables</"
+"emphasis>. These work much the same as session or request attributes in the "
+"servlet spec. You may bind any value you like to a context variable, but "
+"usually we bind Seam component instances to context variables."
+msgstr ""
+"Un contexte définit un espace de nommage, un ensemble de <emphasis>variables "
+"de contexte</emphasis>. Cela fonctionne quasiement comme les attributs de "
+"requête ou de session de la spec servlet. Vous pouvez lier toutes les "
+"valeurs que vous souhaitez à une variable de contexte, mais généralement "
+"nous associons des instances de composants Seam aux variables de contexte."
+
+#. Tag: para
+#: Concepts.xml:125
+#, no-c-format
+msgid ""
+"So, within a context, a component instance is identified by the context "
+"variable name (this is usually, but not always, the same as the component "
+"name). You may programatically access a named component instance in a "
+"particular scope via the <literal>Contexts</literal> class, which provides "
+"access to several thread-bound instances of the <literal>Context</literal> "
+"interface:"
+msgstr ""
+"Dans un contexte, une instance de composant est identifiée par le nom de la "
+"variable de contexte (en général, mais pas toujours, le même nom que le nom "
+"du composant). Vous pouvez accéder de manière programmatique à une instance "
+"de composant, nommée dans une étendue particulière, via les classes "
+"<literal>Contexts</literal>, qui fournissent l'accès à plusieurs instances "
+"de l'interface <literal>Context</literal>, liées au thread courant :"
+
+#. Tag: programlisting
+#: Concepts.xml:128
+#, no-c-format
+msgid "User user = (User) Contexts.getSessionContext().get(\"user\");"
+msgstr "User user = (User) Contexts.getSessionContext().get(\"user\");"
+
+#. Tag: para
+#: Concepts.xml:129
+#, no-c-format
+msgid "You may also set or change the value associated with a name:"
+msgstr "Vous pouvez aussi définir ou changer la valeur associée avec le nom :"
+
+#. Tag: programlisting
+#: Concepts.xml:132
+#, no-c-format
+msgid "Contexts.getSessionContext().set(\"user\", user);"
+msgstr "Contexts.getSessionContext().set(\"user\", user);"
+
+#. Tag: para
+#: Concepts.xml:133
+#, no-c-format
+msgid ""
+"Usually, however, we obtain components from a context via injection, and put "
+"component instances into a context via outjection."
+msgstr ""
+"Cependant, nous obtenons généralement les composants des contextes par "
+"injection, et affectons les instances de composant au contexte via "
+"l'outjection."
+
+#. Tag: title
+#: Concepts.xml:136
+#, no-c-format
+msgid "Context search priority"
+msgstr "Priorité de recherche dans les contextes"
+
+#. Tag: para
+#: Concepts.xml:137
+#, no-c-format
+msgid ""
+"Sometimes, as above, component instances are obtained from a particular "
+"known scope. Other times, all stateful scopes are searched, in "
+"<emphasis>priority order</emphasis>. The order is as follows:"
+msgstr ""
+"Parfois, comme ci dessus, les instances de contexte sont obtenues depuis une "
+"étendue particulière connue. D'autres fois, une recherche est effectuée dans "
+"toutes les étendues stateful, par <emphasis>ordre de priorité</emphasis>. "
+"L'ordre est le suivant :"
+
+#. Tag: para
+#: Concepts.xml:142
+#, no-c-format
+msgid "<para>Event context</para>"
+msgstr "<para>Contexte d'évènement</para>"
+
+#. Tag: para
+#: Concepts.xml:172
+#, no-c-format
+msgid ""
+"You can perform a priority search by calling <literal>Contexts."
+"lookupInStatefulContexts()</literal>. Whenever you access a component by "
+"name from a JSF page, a priority search occurs."
+msgstr ""
+"Vous pouvez faire une recherche prioritaire en appelant <literal>Contexts."
+"lookupInStatefulContexts()</literal>. À chaque fois que vous accédez à un "
+"composant par son nom depuis une page JSF, une recherche prioritaire a lieu."
+
+#. Tag: title
+#: Concepts.xml:175
+#, no-c-format
+msgid "Concurrency model"
+msgstr "Modèle d'accès simultané"
+
+#. Tag: para
+#: Concepts.xml:176
+#, no-c-format
+msgid ""
+"Neither the servlet nor EJB specifications define any facilities for "
+"managing concurrent requests originating from the same client. The servlet "
+"container simply lets all threads run concurrently and leaves enforcing "
+"threadsafeness to application code. The EJB container allows stateless "
+"components to be accessed concurrently, and throws an exception if multiple "
+"threads access a stateful session bean."
+msgstr ""
+"Ni la spec servlet, ni la spec EJB ne définissent des moyens pour gérer les "
+"requêtes concurrentes provenant du même client. Le conteneur de servlet "
+"permet simplement à tous les threads de s'exécuter de manière concurrente et "
+"laisse au code d'application, le soin de garantir la sécurité par rapport au "
+"threading. Le conteneur EJB permet que les composants stateless soient "
+"accédés de manière concurrente, et soulève une exception si un bean session "
+"stateful est touché par de multiples threads."
+
+#. Tag: para
+#: Concepts.xml:179
+#, no-c-format
+msgid ""
+"This behavior might have been okay in old-style web applications which were "
+"based around fine-grained, synchronous requests. But for modern applications "
+"which make heavy use of many fine-grained, asynchronous (AJAX) requests, "
+"concurrency is a fact of life, and must be supported by the programming "
+"model. Seam weaves a concurrency management layer into its context model."
+msgstr ""
+"Ce comportement aurait pu être acceptable dans des applications web plus "
+"anciennes, celles-ci étant basées sur des requêtes synchrones à fine "
+"granularité. Mais pour les applications modernes qui utilisent intensivement "
+"des requêtes fines et asynchrones (AJAX), l'accès simultané est un fait "
+"réel, et doit être supporté par le modèle de programmation. Seam inclut une "
+"couche de gestion de l'accès simultané dans son modèle de contextes."
+
+#. Tag: para
+#: Concepts.xml:182
+#, no-c-format
+msgid ""
+"The Seam session and application contexts are multithreaded. Seam will allow "
+"concurrent requests in a context to be processed concurrently. The event and "
+"page contexts are by nature single threaded. The business process context is "
+"strictly speaking multi-threaded, but in practice concurrency is "
+"sufficiently rare that this fact may be disregarded most of the time. "
+"Finally, Seam enforces a <emphasis>single thread per conversation per "
+"process</emphasis> model for the conversation context by serializing "
+"concurrent requests in the same long-running conversation context."
+msgstr ""
+"Les contextes session et application de Seam sont multithreadés. Seam "
+"permettra à des requêtes concurrentes d'être traitées dans un contexte. Les "
+"contextes d'évènement et de page ne sont, par nature pas multithreadés. Le "
+"contexte de processus métier est, dans l'absolu, multi-threadé, mais en "
+"pratique la concurrence est suffisament rare pour être le plus souvent "
+"ignorée. Enfin, Seam applique un modèle <emphasis>de thread unique par "
+"conversation par processus</emphasis> pour le contexte de conversation en "
+"sérialisant les requêtes concurrentes dans le même contexte de conversation "
+"long."
+
+#. Tag: para
+#: Concepts.xml:185
+#, no-c-format
+msgid ""
+"Since the session context is multithreaded, and often contains volatile "
+"state, session scope components are always protected by Seam from concurrent "
+"access. Seam serializes requests to session scope session beans and "
+"JavaBeans by default (and detects and breaks any deadlocks that occur). This "
+"is not the default behaviour for application scoped components however, "
+"since application scoped components do not usually hold volatile state and "
+"because synchronization at the global level is <emphasis>extremely</"
+"emphasis> expensive. However, you can force a serialized threading model on "
+"any session bean or JavaBean component by adding the <literal>@Synchronized</"
+"literal> annotation."
+msgstr ""
+"Puisque le contexte de session est multithreadé, et contient parfois un état "
+"volatile, les composants portés par la session sont toujours protégés par "
+"Seam des accès concurrents. Par défaut, Seam sérialise les requêtes vers les "
+"beans session et javabeans portés par la session (et détecte et casse les "
+"deadlocks qui surviennent). Ce n'est cependant pas le comportement par "
+"défaut des composants portés par l'application, étant donné qu'ils ne "
+"contiennent généralement pas d'état volatile et puisque la synchronisation "
+"au niveau global est <emphasis>extrêmement</emphasis> coûteuse. Cependant, "
+"vous pouvez forcer un modèle de threading sérialisé sur n'importe quel bean "
+"session ou composant javabean en ajoutant l'annotation "
+"<literal>@Synchronized</literal>."
+
+#. Tag: para
+#: Concepts.xml:188
+#, no-c-format
+msgid ""
+"This concurrency model means that AJAX clients can safely use volatile "
+"session and conversational state, without the need for any special work on "
+"the part of the developer."
+msgstr ""
+"Ce modèle d'accès simultané signifie que les clients AJAX peuvent utiliser "
+"facilement des états de session et de conversation volatiles, sans effort "
+"spécifique à fournir de la part du développeur."
+
+#. Tag: title
+#: Concepts.xml:191
+#, no-c-format
+msgid "Seam components"
+msgstr "Les composants Seam"
+
+#. Tag: para
+#: Concepts.xml:192
+#, no-c-format
+msgid ""
+"Seam components are POJOs (Plain Old Java Objects). In particular, they are "
+"JavaBeans or EJB 3.0 enterprise beans. While Seam does not require that "
+"components be EJBs and can even be used without an EJB 3.0 compliant "
+"container, Seam was designed with EJB 3.0 in mind and includes deep "
+"integration with EJB 3.0. Seam supports the following <emphasis>component "
+"types</emphasis>."
+msgstr ""
+"Les composants Seam sont des POJOs (Plain Old Java Objects). En particulier, "
+"ce sont des JavaBeans ou des EJB 3.0. Même si Seam n'exige pas que les "
+"composants soient des EJB et peut même être utilisé sans un conteneur EJB "
+"supportant EJB 3.0, Seam a été conçu en fonction d'EJB 3.0 et inclut une "
+"intégration profonde avec EJB 3.0. Seam supporte les <emphasis>types de "
+"composant</emphasis> suivants :"
+
+#. Tag: para
+#: Concepts.xml:197
+#, no-c-format
+msgid "EJB 3.0 stateless session beans"
+msgstr "Beans session stateless EJB 3.0 "
+
+#. Tag: para
+#: Concepts.xml:202
+#, no-c-format
+msgid "EJB 3.0 stateful session beans"
+msgstr "Beans session stateful EJB 3.0 "
+
+#. Tag: para
+#: Concepts.xml:207
+#, no-c-format
+msgid "EJB 3.0 entity beans"
+msgstr "Beans entité EJB 3.0 "
+
+#. Tag: para
+#: Concepts.xml:212
+#, no-c-format
+msgid "<para>JavaBeans</para>"
+msgstr "<para>JavaBeans</para>"
+
+#. Tag: para
+#: Concepts.xml:217
+#, no-c-format
+msgid "EJB 3.0 message-driven beans"
+msgstr "Beans message-driven EJB 3.0 "
+
+#. Tag: title
+#: Concepts.xml:222
+#, no-c-format
+msgid "Stateless session beans"
+msgstr "Beans session stateless "
+
+#. Tag: para
+#: Concepts.xml:223
+#, no-c-format
+msgid ""
+"Stateless session bean components are not able to hold state across multiple "
+"invocations. Therefore, they usually work by operating upon the state of "
+"other components in the various Seam contexts. They may be used as JSF "
+"action listeners, but cannot provide properties to JSF components for "
+"display."
+msgstr ""
+"Les composants beans session stateless ne sont pas capables de maintenir un "
+"état entre différentes invocations. Par conséquent, ils fonctionnent "
+"généralement en opérant sur l'état d'autres composants dans différents "
+"contextes Seam. Ils peuvent être utilisés comme des listener d'actions JSF, "
+"mais ne peuvent fournir de propriétés aux composants JSF pour l'affichage."
+
+#. Tag: para
+#: Concepts.xml:226
+#, no-c-format
+msgid "Stateless session beans always live in the stateless context."
+msgstr ""
+"Les beans session stateless vivent toujours dans le contexte stateless."
+
+#. Tag: para
+#: Concepts.xml:229
+#, no-c-format
+msgid ""
+"Stateless session beans are the least interesting kind of Seam component."
+msgstr ""
+"Les beans session stateless sont le type de composant Seam le moins "
+"intéressant."
+
+#. Tag: title
+#: Concepts.xml:232
+#, no-c-format
+msgid "Stateful session beans"
+msgstr "Beans session stateful"
+
+#. Tag: para
+#: Concepts.xml:233
+#, no-c-format
+msgid ""
+"Stateful session bean components are able to hold state not only across "
+"multiple invocations of the bean, but also across multiple requests. "
+"Application state that does not belong in the database should usually be "
+"held by stateful session beans. This is a major difference between Seam and "
+"many other web application frameworks. Instead of sticking information about "
+"the current conversation directly in the <literal>HttpSession</literal>, you "
+"should keep it in instance variables of a stateful session bean that is "
+"bound to the conversation context. This allows Seam to manage the lifecycle "
+"of this state for you, and ensure that there are no collisions between state "
+"relating to different concurrent conversations."
+msgstr ""
+"Les composants beans session stateful sont capables de maintenir un état "
+"entre différentes invocations du bean, mais aussi entre de multiples "
+"requêtes. L'état d'application qui n'est pas dans la base de données devrait "
+"être tenu par les beans session avec état. C'est une différence majeure "
+"entre Seam et beaucoup d'autres frameworks web. Au lieu de coller les "
+"informations de la conversation courante à la <literal>HttpSession</"
+"literal>, vous devriez garder ces informations comme variables d'instance de "
+"beans session stateful liés au contexte de conversation. Cela permet à Seam "
+"de gérer le cycle de vie de cet état pour vous, et de s'assurer qu'il n'y a "
+"pas de collision entre les états relatifs à des conversations concurrentes."
+
+#. Tag: para
+#: Concepts.xml:236
+#, no-c-format
+msgid ""
+"Stateful session beans are often used as JSF action listener, and as backing "
+"beans that provide properties to JSF components for display or form "
+"submission."
+msgstr ""
+"Les beans session stateful sont aussi parfois utilisés comme listener "
+"d'actions JSF, et comme beans de secours, fournissant les propriétés aux "
+"composants JSF pour l'affichage ou la soumission de formulaire."
+
+#. Tag: para
+#: Concepts.xml:239
+#, no-c-format
+msgid ""
+"By default, stateful session beans are bound to the conversation context. "
+"They may never be bound to the page or stateless contexts."
+msgstr ""
+"Par défaut, les beans session stateful sont liés au contexte de "
+"conversation. Ils ne peuvent jamais être liés au contexte de page ou au "
+"contexte stateless."
+
+#. Tag: para
+#: Concepts.xml:242
+#, no-c-format
+msgid ""
+"Concurrent requests to session-scoped stateful session beans are always "
+"serialized by Seam."
+msgstr ""
+"Les requêtes concurrentes vers les beans session stateful, session-scoped "
+"sont toujours sérialisés par Seam."
+
+#. Tag: title
+#: Concepts.xml:245
+#, no-c-format
+msgid "Entity beans"
+msgstr "Beans entité"
+
+#. Tag: para
+#: Concepts.xml:246
+#, no-c-format
+msgid ""
+"Entity beans may be bound to a context variable and function as a seam "
+"component. Because entities have a persistent identity in addition to their "
+"contextual identity, entity instances are usually bound explicitly in Java "
+"code, rather than being instantiated implicitly by Seam."
+msgstr ""
+"Les beans entité peuvent être liés à une variable de contexte et "
+"fonctionnent comme un composant Seam. Parce que les entités ont une identité "
+"persistante en plus de leur identité contextuelle, les instances d'entité "
+"sont généralement liées explicitement dans le code java, au lieu d'être "
+"instanciées implicitement par Seam."
+
+#. Tag: para
+#: Concepts.xml:249
+#, no-c-format
+msgid ""
+"Entity bean components do not support bijection or context demarcation. Nor "
+"does invocation of an entity bean trigger validation."
+msgstr ""
+"Les composants bean entité ne supportent pas la bijection ou la démarcation "
+"de contexte. L'invocation d'une entité ne déclenche pas non plus de "
+"validation."
+
+#. Tag: para
+#: Concepts.xml:252
+#, no-c-format
+msgid ""
+"Entity beans are not usually used as JSF action listeners, but do often "
+"function as backing beans that provide properties to JSF components for "
+"display or form submission. In particular, it is common to use an entity as "
+"a backing bean, together with a stateless session bean action listener to "
+"implement create/update/delete type functionality."
+msgstr ""
+"Les beans entité ne sont généralement pas utilisés comme listeners d'actions "
+"JSF, mais fonctionnent souvent comme beans de secours, fournissant des "
+"propriétés vers des composants JSF pour l'affichage et la soumission de "
+"formulaire. Il est commun d'utiliser une entité comme bean de secours, "
+"utilisée avec un bean session stateless comme listener d'actions pour "
+"implémenter les fonctionnalités de type create/update/delete."
+
+#. Tag: para
+#: Concepts.xml:255
+#, no-c-format
+msgid ""
+"By default, entity beans are bound to the conversation context. They may "
+"never be bound to the stateless context."
+msgstr ""
+"Par défaut, les entités sont liées au contexte de conversation. Elles ne "
+"doivent jamais être liées au contexte stateless."
+
+#. Tag: para
+#: Concepts.xml:258
+#, no-c-format
+msgid ""
+"Note that it in a clustered environment is somewhat less efficient to bind "
+"an entity bean directly to a conversation or session scoped Seam context "
+"variable than it would be to hold a reference to the entity bean in a "
+"stateful session bean. For this reason, not all Seam applications define "
+"entity beans to be Seam components."
+msgstr ""
+"Notez que dans un environnement clusterisé, il est moins efficace de lier "
+"une entité directement à une variable de contexte de conversation ou de "
+"session, que de tenir une référence directement vers l'entité depuis un bean "
+"session stateful. Par conséquent, toutes les applications Seam ne "
+"définissent pas les entités comme des composants Seam."
+
+#. Tag: title
+#: Concepts.xml:261
+#, no-c-format
+msgid "<title>JavaBeans</title>"
+msgstr "<title>JavaBeans</title>"
+
+#. Tag: para
+#: Concepts.xml:262
+#, no-c-format
+msgid ""
+"Javabeans may be used just like a stateless or stateful session bean. "
+"However, they do not provide the functionality of a session bean "
+"(declarative transaction demarcation, declarative security, efficient "
+"clustered state replication, EJB 3.0 persistence, timeout methods, etc)."
+msgstr ""
+"Les Javabeans peuvent être utilisés comme des bean session stateless ou "
+"stateful. Cependant, ils ne fournissent pas les fonctionnalités d'un bean "
+"session (démarcation déclarative des transactions, sécurité déclarative, "
+"réplication efficace en cluster, persistance EJB 3.0, timeout de méthode, "
+"etc...)."
+
+#. Tag: para
+#: Concepts.xml:265
+#, no-c-format
+msgid ""
+"In a later chapter, we show you how to use Seam and Hibernate without an EJB "
+"container. In this use case, components are JavaBeans instead of session "
+"beans. Note, however, that in many application servers it is somewhat less "
+"efficient to cluster conversation or session scoped Seam JavaBean components "
+"than it is to cluster stateful session bean components."
+msgstr ""
+"Dans un chapitre suivant, nous montrons comment utiliser Seam et Hibernate "
+"sans conteneur EJB. Dans ce cas d'utilisation, les composants sont des "
+"javabeans et non des beans session. Notez cependant, que dans beaucoup de "
+"serveurs d'application, il est parfois moins efficace de clusteriser des "
+"Javabeans Seam tenus par la session ou la conversation, que de clusteriser "
+"des composants bean session stateful."
+
+#. Tag: para
+#: Concepts.xml:268
+#, no-c-format
+msgid "By default, JavaBeans are bound to the event context."
+msgstr "Par défaut, les javabeans sont liés au contexte d'évènement."
+
+#. Tag: para
+#: Concepts.xml:271
+#, no-c-format
+msgid ""
+"Concurrent requests to session-scoped JavaBeans are always serialized by "
+"Seam."
+msgstr ""
+"Les requêtes concurrentes vers les javabeans, portés par la session sont "
+"toujours sérialisées par Seam."
+
+#. Tag: title
+#: Concepts.xml:274
+#, no-c-format
+msgid "Message-driven beans"
+msgstr "Beans message-driven "
+
+#. Tag: para
+#: Concepts.xml:275
+#, no-c-format
+msgid ""
+"Message-driven beans may function as a seam component. However, message-"
+"driven beans are called quite differently to other Seam components - instead "
+"of invoking them via the context variable, they listen for messages sent to "
+"a JMS queue or topic."
+msgstr ""
+"Les beans message-driven peuvent fonctionner comme des composants Seam. "
+"Cependant ils sont différents des autres composants Seam - au lieu de les "
+"invoquer via des variables de contexte, ils écoutent les messages envoyés "
+"vers une file d'attente ou un topic."
+
+#. Tag: para
+#: Concepts.xml:278
+#, no-c-format
+msgid ""
+"Message-driven beans may not be bound to a Seam context. Nor do they have "
+"access to the session or conversation state of their \"caller\". However, "
+"they do support bijection and some other Seam functionality."
+msgstr ""
+"Les beans message-driven ne doivent par être liés à un contexte Seam. Ils "
+"n'ont pas non plus accès à l'état de la conversation ou de la session de "
+"leur \"appelant\". Cependant, ils supportent la bijection et quelques autres "
+"des fonctionnalités de Seam."
+
+#. Tag: title
+#: Concepts.xml:281
+#, no-c-format
+msgid "Interception"
+msgstr "Interception"
+
+#. Tag: para
+#: Concepts.xml:282
+#, no-c-format
+msgid ""
+"In order to perform its magic (bijection, context demarcation, validation, "
+"etc), Seam must intercept component invocations. For JavaBeans, Seam is in "
+"full control of instantiation of the component, and no special configuration "
+"is needed. For entity beans, interception is not required since bijection "
+"and context demarcation are not defined. For session beans, we must register "
+"an EJB interceptor for the session bean component. We could use an "
+"annotation, as follows:"
+msgstr ""
+"Pour effectuer sa magie (bijection, démarcation de contexte, "
+"validation,...), Seam doit intercepter les invocations de composant. Pour "
+"les javabeans, Seam contrôle complètement l'instanciation du composant, et "
+"aucune configuration spéciale n'est requise. Pour les entités, "
+"l'interception n'est pas requise puisque la bijection et la démarcation de "
+"contexte ne sont pas définis. Pour les beans session, nous devons définir un "
+"intercepteur EJB pour le composant. On peut utiliser une annotation, comme "
+"suit :"
+
+#. Tag: programlisting
+#: Concepts.xml:285
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:286
+#, no-c-format
+msgid ""
+"But a much better way is to define the interceptor in <literal>ejb-jar.xml</"
+"literal>."
+msgstr ""
+"Une meilleure façon de faire est de définir l'intercepteur dans <literal>ejb-"
+"jar.xml</literal>."
+
+#. Tag: programlisting
+#: Concepts.xml:289
+#, no-c-format
+msgid ""
+"&lt;interceptors&gt;\n"
+"   &lt;interceptor&gt;\n"
+"      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"   &lt;/interceptor&gt;\n"
+"&lt;/interceptors&gt;\n"
+"   \n"
+"&lt;assembly-descriptor&gt;\n"
+"   &lt;interceptor-binding&gt;\n"
+"      &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"   &lt;/interceptor-binding&gt;\n"
+"&lt;/assembly-descriptor&gt;"
+msgstr ""
+"&lt;interceptors&gt;\n"
+"   &lt;interceptor&gt;\n"
+"      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"   &lt;/interceptor&gt;\n"
+"&lt;/interceptors&gt;\n"
+"   \n"
+"&lt;assembly-descriptor&gt;\n"
+"   &lt;interceptor-binding&gt;\n"
+"      &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"   &lt;/interceptor-binding&gt;\n"
+"&lt;/assembly-descriptor&gt;"
+
+#. Tag: title
+#: Concepts.xml:290
+#, no-c-format
+msgid "Component names"
+msgstr "Noms des composants"
+
+#. Tag: para
+#: Concepts.xml:291
+#, no-c-format
+msgid ""
+"All seam components need a name. We can assign a name to a component using "
+"the <literal>@Name</literal> annotation:"
+msgstr ""
+"Tous les composants Seam ont besoin d'un nom. On peut assigner un nom à un "
+"composant en utilisant l'annotation <literal>@Name</literal> :"
+
+#. Tag: programlisting
+#: Concepts.xml:294
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:295
+#, no-c-format
+msgid ""
+"This name is the <emphasis>seam component name</emphasis> and is not related "
+"to any other name defined by the EJB specification. However, seam component "
+"names work just like JSF managed bean names and you can think of the two "
+"concepts as identical."
+msgstr ""
+"Ce nom est le <emphasis>nom du composant seam</emphasis> et n'a pas de "
+"rapport avec les autres noms définis par la spec EJB3. Cependant, les "
+"composants seam fonctionnent comme les noms des beans gérés JSF et vous "
+"pouvez considérer que ces concepts sont identiques."
+
+#. Tag: para
+#: Concepts.xml:298
+#, fuzzy, no-c-format
+msgid ""
+"<literal>@Name</literal> is not the only way to define a component name, but "
+"we always need to specify the name <emphasis>somewhere</emphasis>. If we "
+"don&#39;t, then none of the other Seam annotations will function."
+msgstr ""
+"<literal>@Name</literal> n'est pas le seul moyen de définir un nom de "
+"composant mais nous avons toujours besoin de spécifier le nom "
+"<emphasis>quelque part</emphasis>. Sinon, aucune des autres annotations Seam "
+"ne fonctionnera."
+
+#. Tag: para
+#: Concepts.xml:301
+#, no-c-format
+msgid ""
+"Just like in JSF, a seam component instance is usually bound to a context "
+"variable with the same name as the component name. So, for example, we would "
+"access the <literal>LoginAction</literal> using <literal>Contexts."
+"getStatelessContext().get(\"loginAction\")</literal>. In particular, "
+"whenever Seam itself instantiates a component, it binds the new instance to "
+"a variable with the component name. However, again like JSF, it is possible "
+"for the application to bind a component to some other context variable by "
+"programmatic API call. This is only useful if a particular component serves "
+"more than one role in the system. For example, the currently logged in "
+"<literal>User</literal> might be bound to the <literal>currentUser</literal> "
+"session context variable, while a <literal>User</literal> that is the "
+"subject of some administration functionality might be bound to the "
+"<literal>user</literal> conversation context variable."
+msgstr ""
+"Tout comme dans JSF, une instance de composant Seam est généralement liée à "
+"une variable de contexte avec le même nom que le nom du composant. Par "
+"exemple, nous accèderons à <literal>LoginAction</literal> en utilisant "
+"<literal>Contexts.getStatelessContext().get(\"loginAction\")</literal>. À "
+"chaque fois que Seam instancie lui même un composant, il lie la nouvelle "
+"instance à une variable avec le nom du composant. Cependant, comme JSF, il "
+"est possible pour l'application de lier un composant à une autre variable de "
+"contexte via un appel programmatique à un API. Ceci est utile si un "
+"composant particulier a plus d'un rôle dans le système. Par exemple, le "
+"<literal>User</literal> connecté pourrait être lié à la variable de contexte "
+"<literal>currentUser</literal> alors qu'un <literal>User</literal> qui est "
+"sujet à une fonctionnalité d'administration pourrait être lié à la variable "
+"de contexte <literal>user</literal>."
+
+#. Tag: para
+#: Concepts.xml:304
+#, no-c-format
+msgid ""
+"For very large applications, and for built-in seam components, qualified "
+"names are often used."
+msgstr ""
+"Pour de très larges applications, et pour les composants internes de Seam, "
+"les noms qualifiés sont parfois utilisés."
+
+#. Tag: programlisting
+#: Concepts.xml:307
+#, no-c-format
+msgid ""
+"@Name(\"com.jboss.myapp.loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"com.jboss.myapp.loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:308
+#, fuzzy, no-c-format
+msgid ""
+"We may use the qualified component name both in Java code and in JSF&#39;s "
+"expression language:"
+msgstr ""
+"Nous pouvons utiliser le nom qualifié du composant dans le code Java et dans "
+"le langage d'expression JSF :"
+
+#. Tag: programlisting
+#: Concepts.xml:311
+#, no-c-format
+msgid ""
+"&lt;h:commandButton type=\"submit\" value=\"Login\"\n"
+"                 action=\"#{com.jboss.myapp.loginAction.login}\"/&gt;"
+msgstr ""
+"&lt;h:commandButton type=\"submit\" value=\"Login\"\n"
+"                 action=\"#{com.jboss.myapp.loginAction.login}\"/&gt;"
+
+#. Tag: para
+#: Concepts.xml:312
+#, fuzzy, no-c-format
+msgid ""
+"Since this is noisy, Seam also provides a means of aliasing a qualified name "
+"to a simple name. Add a line like this to the <literal>components.xml</"
+"literal> file:"
+msgstr ""
+"Etant donné que c'est verbeux, Seam fournit aussi un moyen de créer un alias "
+"pour un nom qualifié vers un nom simple. Ajoutez une ligne comme celle-ci "
+"dans le <literal>components.xml</literal> :"
+
+#. Tag: programlisting
+#: Concepts.xml:315
+#, no-c-format
+msgid ""
+"&lt;factory name=\"loginAction\" scope=\"STATELESS\" value=\"#{com.jboss."
+"myapp.loginAction}\"/&gt;"
+msgstr ""
+"&lt;factory name=\"loginAction\" scope=\"STATELESS\" value=\"#{com.jboss."
+"myapp.loginAction}\"/&gt;"
+
+#. Tag: para
+#: Concepts.xml:316
+#, no-c-format
+msgid ""
+"All of the built-in Seam components have qualified names, but most of them "
+"are aliased to a simple name by the <literal>components.xml</literal> file "
+"included in the Seam jar."
+msgstr ""
+"Tous les composants intégrés dans Seam ont des noms qualifiés, mais la "
+"plupart ont un simple alias par le fichier <literal>components.xml</literal> "
+"inclus dans le jar Seam."
+
+#. Tag: title
+#: Concepts.xml:319
+#, no-c-format
+msgid "Defining the component scope"
+msgstr "Définir l'étendue d'un composant"
+
+#. Tag: para
+#: Concepts.xml:320
+#, no-c-format
+msgid ""
+"We can override the default scope (context) of a component using the "
+"<literal>@Scope</literal> annotation. This lets us define what context a "
+"component instance is bound to, when it is instantiated by Seam."
+msgstr ""
+"On peut surcharger l'étendue par défaut (contexte) d'un composant en "
+"utilisant l'annotation <literal>@Scope</literal>. Cela nous permet de "
+"définir à quel contexte l'instance de composant est liée, lorsqu'elle est "
+"instanciée par Seam."
+
+#. Tag: programlisting
+#: Concepts.xml:323
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(SESSION)\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(SESSION)\n"
+"public class User { \n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:324
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.ScopeType</literal> defines an enumeration of "
+"possible scopes."
+msgstr ""
+"<literal>org.jboss.seam.ScopeType</literal> définit une énumération des "
+"étendues possibles."
+
+#. Tag: title
+#: Concepts.xml:327
+#, no-c-format
+msgid "Components with multiple roles"
+msgstr "Composants avec de multiples rôles"
+
+#. Tag: para
+#: Concepts.xml:328
+#, no-c-format
+msgid ""
+"Some Seam component classes can fulfill more than one role in the system. "
+"For example, we often have a <literal>User</literal> class which is usually "
+"used as a session-scoped component representing the current user but is used "
+"in user administration screens as a conversation-scoped component. The "
+"<literal>@Role</literal> annotation lets us define an additional named role "
+"for a component, with a different scope&mdash;it lets us bind the same "
+"component class to different context variables. (Any Seam component "
+"<emphasis>instance</emphasis> may be bound to multiple context variables, "
+"but this lets us do it at the class level, and take advantage of auto-"
+"instantiation.)"
+msgstr ""
+"Certaines classes de composants Seam peuvent avoir plusieurs rôles dans le "
+"système. Par exemple, nous avons souvent une classe <literal>User</literal> "
+"qui est généralement utilisée comme composant, porté par la session pour "
+"représenter l'utilisateur connecté, mais qui peut aussi être utilisée dans "
+"des écrans d'administration d'utilisateur comme composant, porté par une "
+"conversation. L'annotation <literal>@Role</literal> nous permet de définir "
+"des noms de rôles additionnels pour un composant, avec une portée "
+"différente, elle nous permet de lier la même classe de composant à des "
+"variables de contextes différentes. (toute <emphasis>instance</emphasis> de "
+"composant Seam peut être liée à des variables de contextes différentes, mais "
+"l'annotation nous permet de le faire au niveau de la classe et ainsi, de "
+"tirer avantage de l'auto-instanciation.)"
+
+#. Tag: programlisting
+#: Concepts.xml:331
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(CONVERSATION)\n"
+"@Role(name=\"currentUser\", scope=SESSION)\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(CONVERSATION)\n"
+"@Role(name=\"currentUser\", scope=SESSION)\n"
+"public class User { \n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:332
+#, no-c-format
+msgid ""
+"The <literal>@Roles</literal> annotation lets us specify as many additional "
+"roles as we like."
+msgstr ""
+"L'annotation <literal>@Roles</literal> nous permet de spécifier autant de "
+"rôles additionnels que nous le souhaitons."
+
+#. Tag: programlisting
+#: Concepts.xml:335
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(CONVERSATION)\n"
+"@Roles({@Role(name=\"currentUser\", scope=SESSION)\n"
+"        @Role(name=\"tempUser\", scope=EVENT)})\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(CONVERSATION)\n"
+"@Roles({@Role(name=\"currentUser\", scope=SESSION)\n"
+"        @Role(name=\"tempUser\", scope=EVENT)})\n"
+"public class User { \n"
+"    ... \n"
+"}"
+
+#. Tag: title
+#: Concepts.xml:336
+#, no-c-format
+msgid "Built-in components"
+msgstr "Composants intégrés "
+
+#. Tag: para
+#: Concepts.xml:337
+#, no-c-format
+msgid ""
+"Like many good frameworks, Seam eats its own dogfood and is implemented "
+"mostly as a set of built-in Seam interceptors (see later) and Seam "
+"components. This makes it easy for applications to interact with built-in "
+"components at runtime or even customize the basic functionality of Seam by "
+"replacing the built-in components with custom implementations. The built-in "
+"components are defined in the Seam namespace <literal>org.jboss.seam.core</"
+"literal> and the Java package of the same name."
+msgstr ""
+"Comme beaucoup de bons frameworks, Seam utilise son propre matériel et est "
+"principalement implémenté sur un ensemble d'intercepteurs intégrés (que nous "
+"verrons plus tard) et de composants Seam. Cela facilite l'interaction entre "
+"les applications et les composants intégrés de Seam en exécution et permet "
+"même de personnaliser les fonctionnalités de base de Seam en remplaçant les "
+"composants intégrés par des implémentations personnalisées. Les composants "
+"intégrés de Seam sont définis dans l'espace de nommage Seam <literal>org."
+"jboss.seam.core</literal> et le paquetage Java du même nom. "
+
+#. Tag: para
+#: Concepts.xml:340
+#, no-c-format
+msgid ""
+"The built-in components may be injected, just like any Seam components, but "
+"they also provide convenient static <literal>instance()</literal> methods:"
+msgstr ""
+"Les composants intégrés peuvent être injectés, comme d'autres composants "
+"Seam, mais ils fournissent aussi des méthodes statiques pratiques "
+"<literal>instance()</literal> :"
+
+#. Tag: programlisting
+#: Concepts.xml:343
+#, no-c-format
+msgid "FacesMessages.instance().add(\"Welcome back, #{user.name}!\");"
+msgstr "FacesMessages.instance().add(\"Welcome back, #{user.name}!\");"
+
+#. Tag: para
+#: Concepts.xml:344
+#, fuzzy, no-c-format
+msgid ""
+"Seam was designed to integrate tightly in a Java EE 5 environment. However, "
+"we understand that there are many projects which are not running in a full "
+"EE environment. We also realize the critical importance of easy unit and "
+"integration testing using frameworks such as TestNG and JUnit. So, we&#39;ve "
+"made it easy to run Seam in Java SE environments by allowing you to boostrap "
+"certain critical infrastructure normally only found in EE environments by "
+"installing built-in Seam components."
+msgstr ""
+"Seam a été conçu pour s'intégrer facilement à un environnement Java EE 5. "
+"Cependant, nous comprenons qu'il y a beaucoup de projets qui ne tournent pas "
+"dans un environnement EE complet. Nous réalisons aussi l'importance critique "
+"de pouvoir facilement écrire des tests unitaires et d'intégration via des "
+"frameworks comme JUnit ou TestNG. Ainsi, nous avons facilité l'exécution des "
+"applications Seam dans des environnements SE en vous permettant "
+"d'initialiser certaines infrastructures critiques que l'on ne trouve "
+"normalement que dans les environnements EE, par l'installation de composants "
+"intégrés Seam."
+
+#. Tag: para
+#: Concepts.xml:347
+#, no-c-format
+msgid ""
+"For example, you can run your EJB3 components in Tomcat or an integration "
+"test suite just by installing the built-in component <literal>org.jboss.seam."
+"core.ejb</literal>, which automatically bootstraps the JBoss Embeddable EJB3 "
+"container and deploys your EJB components."
+msgstr ""
+"Par exemple, vous pouvez exécuter vos composants EJB3 dans Tomcat ou dans "
+"une suite de tests d'intégration en installant simplement le composant "
+"intégré <literal>org.jboss.seam.core.ejb</literal>, qui initialise "
+"automatiquement le conteneur JBoss Embeddable EJB3 et déploie vos composants "
+"EJB."
+
+#. Tag: para
+#: Concepts.xml:350
+#, fuzzy, no-c-format
+msgid ""
+"Or, if you&#39;re not quite ready for the Brave New World of EJB 3.0, you "
+"can write a Seam application that uses only JavaBean components, together "
+"with Hibernate3 for persistence, by installing a built-in component that "
+"manages a Hibernate <literal>SessionFactory</literal>. When using Hibernate "
+"outside of a J2EE environment, you will also probably need a JTA transaction "
+"manager and JNDI server, which are available via the built-in component "
+"<literal>org.jboss.seam.core.microcontainer</literal>. This lets you use the "
+"bulletproof JTA/JCA pooling datasource from JBoss application server in an "
+"SE environment like Tomcat!"
+msgstr ""
+"Ou, si vous n'êtes pas encore prêts pour EJB3.0, vous pouvez écrire une "
+"application Seam qui n'utilise que des composants Javabeans, avec Hibernate3 "
+"pour la persistance, en installant le composant intégré qui gère une "
+"<literal>SessionFactory</literal> Hibernate. Lorsque vous utilisez Hibernate "
+"en dehors d'un environnement J2EE, il vous faudra probablement un "
+"gestionnaire de transactions JTA et un serveur JNDI, qui sont disponibles "
+"via le composant intégré <literal>org.jboss.seam.core.microcontainer</"
+"literal>. Ceci vous permet d'utiliser la source de données robuste de JBoss "
+"AS pour le pooling JTA/JCA dans un environnement SE comme Tomcat ! "
+
+#. Tag: title
+#: Concepts.xml:353
+#, no-c-format
+msgid "Bijection"
+msgstr "Bijection"
+
+#. Tag: para
+#: Concepts.xml:354
+#, no-c-format
+msgid ""
+"<emphasis>Dependency injection</emphasis> or <emphasis>inversion of control</"
+"emphasis> is by now a familiar concept to most Java developers. Dependency "
+"injection allows a component to obtain a reference to another component by "
+"having the container \"inject\" the other component to a setter method or "
+"instance variable. In all dependency injection implementations that we have "
+"seen, injection occurs when the component is constructed, and the reference "
+"does not subsequently change for the lifetime of the component instance. For "
+"stateless components, this is reasonable. From the point of view of a "
+"client, all instances of a particular stateless component are "
+"interchangeable. On the other hand, Seam emphasizes the use of stateful "
+"components. So traditional dependency injection is no longer a very useful "
+"construct. Seam introduces the notion of <emphasis>bijection</emphasis> as a "
+"generalization of injection. In contrast to injection, bijection is:"
+msgstr ""
+"<emphasis>L'injection de dépendance</emphasis> ou <emphasis>inversion de "
+"contrôle</emphasis> est désormais un concept familier pour la plupart des "
+"développeurs Java. L'injection de dépendance permet à un composant d'obtenir "
+"une référence vers un autre composant grâce au conteneur qui \"injecte\" "
+"l'autre composant dans une méthode setter ou une variable d'instance. Dans "
+"toutes les implémentations d'injection de dépendance que nous avons vues, "
+"l'injection intervient lorsque le composant est compilé, et la référence ne "
+"change pas pour tout le cycle de vie de l'instance du composant. Pour des "
+"composants stateless, cela est raisonnable. Du point de vue du client, "
+"toutes les instances d'un composant stateless particulier sont "
+"interchangeables. D'un autre côté, Seam met en avant l'utilisation de "
+"composants stateful. L'injection de dépendance traditionnelle n'est donc "
+"plus adaptée/utile. Seam introduit la notion de <emphasis>bijection</"
+"emphasis> comme généralisation de l'injection. Contrairement à l'injection, "
+"la bijection est :"
+
+#. Tag: para
+#: Concepts.xml:359
+#, no-c-format
+msgid ""
+"<emphasis>contextual</emphasis> - bijection is used to assemble stateful "
+"components from various different contexts (a component from a \"wider\" "
+"context may even have a reference to a component from a \"narrower\" context)"
+msgstr ""
+"<emphasis>contextuelle</emphasis> - la bijection est utilisée pour assembler "
+"des composants stateful depuis différents contextes variés (un composant "
+"d'un contexte \"plus large\" peut même avoir une référence vers un contexte "
+"\"plus petit\")"
+
+#. Tag: para
+#: Concepts.xml:364
+#, no-c-format
+msgid ""
+"<emphasis>bidirectional</emphasis> - values are injected from context "
+"variables into attributes of the component being invoked, and also "
+"<emphasis>outjected</emphasis> from the component attributes back out to the "
+"context, allowing the component being invoked to manipulate the values of "
+"contextual variables simply by setting its own instance variables"
+msgstr ""
+"<emphasis>bidirectionnelle</emphasis> - les valeurs sont injectées depuis "
+"les variables de contexte vers les attributs du composant invoqué, mais "
+"aussi <emphasis>outjectées</emphasis> depuis les attributs du composant en "
+"retour vers le contexte, ce qui permet au composant invoqué de manipuler des "
+"valeurs de variables contextuelles en définissant simplement ses propres "
+"variables d'instance"
+
+#. Tag: para
+#: Concepts.xml:369
+#, no-c-format
+msgid ""
+"<emphasis>dynamic</emphasis> - since the value of contextual variables "
+"changes over time, and since Seam components are stateful, bijection takes "
+"place every time a component is invoked"
+msgstr ""
+"<emphasis>dynamique</emphasis> - puisque la valeur des variables "
+"contextuelles change avec le temps, et puisque les composants Seam ont un "
+"état, la bijection s'effectue chaque fois qu'un composant est invoqué"
+
+#. Tag: para
+#: Concepts.xml:374
+#, no-c-format
+msgid ""
+"In essence, bijection lets you alias a context variable to a component "
+"instance variable, by specifying that the value of the instance variable is "
+"injected, outjected, or both. Of course, we use annotations to enable "
+"bijection."
+msgstr ""
+"La bijection vous permet de lier une variable de contexte à une variable "
+"d'instance d'un composant en créant un alias, tout en spécifiant si la "
+"valeur de la variable d'instance est injectée, outjectée, ou les deux. Bien "
+"sûr, nous utilisons des annotations pour activer la bijection."
+
+#. Tag: para
+#: Concepts.xml:377
+#, no-c-format
+msgid ""
+"The <literal>@In</literal> annotation specifies that a value should be "
+"injected, either into an instance variable:"
+msgstr ""
+"L'annoation <literal>@In</literal> spécifie que la valeur doit être "
+"outjectée, soit dans la variable d'instance :"
+
+#. Tag: programlisting
+#: Concepts.xml:380
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In User user;\n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:381
+#, no-c-format
+msgid "or into a setter method:"
+msgstr "soit dans une méthode setter :"
+
+#. Tag: programlisting
+#: Concepts.xml:384
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @In\n"
+"    public void setUser(User user) {\n"
+"        this.user=user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @In\n"
+"    public void setUser(User user) {\n"
+"        this.user=user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:385
+#, no-c-format
+msgid ""
+"By default, Seam will do a priority search of all contexts, using the name "
+"of the property or instance variable that is being injected. You may wish to "
+"specify the context variable name explicitly, using, for example, "
+"<literal>@In(\"currentUser\")</literal>."
+msgstr ""
+"Par défaut, Seam effectuera une recherche prioritaire de tous les contextes, "
+"en utilisant le nom de la propriété ou de la variable d'instance qui doit "
+"être injectée. Vous pouvez spécifier le nom de la variable de contexte "
+"explicitement, en utilisant, par exemple, <literal>@In(\"currentUser\")</"
+"literal>."
+
+#. Tag: para
+#: Concepts.xml:388
+#, no-c-format
+msgid ""
+"If you want Seam to create an instance of the component when there is no "
+"existing component instance bound to the named context variable, you should "
+"specify <literal>@In(create=true)</literal>. If the value is optional (it "
+"can be null), specify <literal>@In(required=false)</literal>."
+msgstr ""
+"Si vous souhaitez que Seam crée une instance du composant lorsqu'il n'existe "
+"aucune instance du composant liée à la variable de contexte, vous pouvez "
+"spécifier <literal>@In(create=true)</literal>. Si la valeur est optionnelle "
+"(elle peut être nulle), spécifiez <literal>@In(required=false)</literal>."
+
+#. Tag: para
+#: Concepts.xml:391
+#, no-c-format
+msgid ""
+"For some components, it can be repetitive to have to specify <literal>@In"
+"(create=true)</literal> everywhere they are used. In such cases, you can "
+"annotate the component <literal>@AutoCreate</literal>, and then it will "
+"always be created, whenever needed, even without the explicit use of "
+"<literal>create=true</literal>."
+msgstr ""
+"Pour certains composants, cela peut être trop répétitif de spécifier "
+"<literal>@In(create=true)</literal> partout, où ils sont utilisés. Dans ces "
+"cas particuliers, vous pouvez annoter le composant avec "
+"<literal>@AutoCreate</literal>, il sera alors créé quand cela est "
+"nécessaire, même sans l'utilisation explicite de <literal>create=true</"
+"literal>."
+
+#. Tag: para
+#: Concepts.xml:394
+#, no-c-format
+msgid "You can even inject the value of an expression:"
+msgstr "Vous pouvez même injecter la valeur d'une expression :"
+
+#. Tag: programlisting
+#: Concepts.xml:397
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In(\"#{user.username}\") String username;\n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In(\"#{user.username}\") String username;\n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:398
+#, no-c-format
+msgid ""
+"(There is much more information about component lifecycle and injection in "
+"the next chapter.)"
+msgstr ""
+"(Il y a beaucoup plus d'informations sur le cycle de vie et l'injection dans "
+"le chapitre suivant.)"
+
+#. Tag: para
+#: Concepts.xml:401
+#, no-c-format
+msgid ""
+"The <literal>@Out</literal> annotation specifies that an attribute should be "
+"outjected, either from an instance variable:"
+msgstr ""
+"L'annotation <literal>@Out</literal> spécifie qu'un attribut doit être "
+"outjecté, depuis une variable d'instance :"
+
+#. Tag: programlisting
+#: Concepts.xml:404
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @Out User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @Out User user;\n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:405
+#, no-c-format
+msgid "or from a getter method:"
+msgstr "ou depuis une méthode getter :"
+
+#. Tag: programlisting
+#: Concepts.xml:408
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @Out\n"
+"    public User getUser() {\n"
+"        return user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @Out\n"
+"    public User getUser() {\n"
+"        return user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:409
+#, no-c-format
+msgid "An attribute may be both injected and outjected:"
+msgstr "Un attribut peut être à la fois injecté et outjecté :"
+
+#. Tag: programlisting
+#: Concepts.xml:412
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In @Out User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In @Out User user;\n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:413
+#, no-c-format
+msgid "<para>or:</para>"
+msgstr "<para>ou :</para>"
+
+#. Tag: programlisting
+#: Concepts.xml:416
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @In\n"
+"    public void setUser(User user) {\n"
+"        this.user=user;\n"
+"    }\n"
+"    \n"
+"    @Out\n"
+"    public User getUser() {\n"
+"        return user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @In\n"
+"    public void setUser(User user) {\n"
+"        this.user=user;\n"
+"    }\n"
+"    \n"
+"    @Out\n"
+"    public User getUser() {\n"
+"        return user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+
+#. Tag: title
+#: Concepts.xml:417
+#, no-c-format
+msgid "Lifecycle methods"
+msgstr "Méthodes de cycles de vie"
+
+#. Tag: para
+#: Concepts.xml:418
+#, no-c-format
+msgid ""
+"Session bean and entity bean Seam components support all the usual EJB 3.0 "
+"lifecycle callback (<literal>@PostConstruct</literal>, <literal>@PreDestroy</"
+"literal>, etc). Seam extends all of these callbacks except "
+"<literal>@PreDestroy</literal> to JavaBean components. But Seam also defines "
+"its own component lifecycle callbacks."
+msgstr ""
+"Les composants bean session et bean entité supportent tous les rappels de "
+"cycle de vie habituels d'EJB3.0 (<literal>@PostConstruct</literal>, "
+"<literal>@PreDestroy</literal>, etc). Seam étend ceux-ci aux composants "
+"Javabean à l'exception de <literal>@PreDestroy</literal>. Mais Seam définit "
+"aussi ses propres rappels de cycle de vie de composant."
+
+#. Tag: para
+#: Concepts.xml:421
+#, no-c-format
+msgid ""
+"The <literal>@Create</literal> method is called every time Seam instantiates "
+"a component. Unlike the <literal>@PostConstruct</literal> method, this "
+"method is called after the component is fully constructed by the EJB "
+"container, and has access to all the usual Seam functionality (bijection, "
+"etc). Components may define only one <literal>@Create</literal> method."
+msgstr ""
+"La méthode <literal>@Create</literal> est appelée chaque fois que Seam "
+"instancie un composant. Contrairement à la méthode <literal>@PostConstruct</"
+"literal>, cette méthode est invoquée après la contruction complète du "
+"composant par le conteneur EJB, et a accès à toutes les fonctionnalités "
+"habituelles de Seam (bijection, etc). Les composants peuvent définir une "
+"seule méthode <literal>@Create</literal>."
+
+#. Tag: para
+#: Concepts.xml:424
+#, no-c-format
+msgid ""
+"The <literal>@Destroy</literal> method is called when the context that the "
+"Seam component is bound to ends. Components may define only one "
+"<literal>@Destroy</literal> method. Stateful session bean components "
+"<emphasis>must</emphasis> define a method annotated <literal>@Destroy "
+"@Remove</literal>."
+msgstr ""
+"La méthode <literal>@Destroy</literal> est invoquée lorsque le contexte "
+"auquel le composant Seam est lié, se termine. Les composants peuvent définir "
+"une seule méthode <literal>@Destroy</literal>. Les beans session stateful "
+"<emphasis>doivent</emphasis> définir une méthode annotée <literal>@Destroy "
+"@Remove</literal>."
+
+#. Tag: para
+#: Concepts.xml:427
+#, no-c-format
+msgid ""
+"Finally, a related annotation is the <literal>@Startup</literal> annotation, "
+"which may be applied to any application or session scoped component. The "
+"<literal>@Startup</literal> annotation tells Seam to instantiate the "
+"component immediately, when the context begins, instead of waiting until it "
+"is first referenced by a client. It is possible to control the order of "
+"instantiation of startup components by specifying <literal>@Startup(depends="
+"{....})</literal>."
+msgstr ""
+"Enfin, une annotation associée est l'annotation <literal>@Startup</literal>, "
+"qui peut être appliquée à des composant de portée application ou session. "
+"L'annotation <literal>@Startup</literal> indique à Seam d'instancier "
+"immédiatement le composant, lorsque le contexte commence, au lieu d'attendre "
+"qu'il soit d'abord référencé par un client. Il est possible de contrôler "
+"l'ordre d'instanciation des composants de démarrage, en spécifiant "
+"<literal>@Startup(depends={....})</literal>."
+
+#. Tag: title
+#: Concepts.xml:430
+#, no-c-format
+msgid "Conditional installation"
+msgstr "Installation conditionnelle"
+
+#. Tag: para
+#: Concepts.xml:431
+#, no-c-format
+msgid ""
+"The <literal>@Install</literal> annotation lets you control conditional "
+"installation of components that are required in some deployment scenarios "
+"and not in others. This is useful if:"
+msgstr ""
+"L'annotation <literal>@Install</literal> vous permet de contrôler "
+"l'installation conditionnelle de composants qui sont requis dans certains "
+"scénarios de déploiement et non dans d'autres. Cela est utile si :"
+
+#. Tag: para
+#: Concepts.xml:436
+#, no-c-format
+msgid "You want to mock out some infrastructural component in tests."
+msgstr ""
+"vous voulez simuler certains composants d'infrastructure dans les tests."
+
+#. Tag: para
+#: Concepts.xml:441
+#, no-c-format
+msgid ""
+"You want change the implementation of a component in certain deployment "
+"scenarios."
+msgstr ""
+"vous souhaitez changer l'implémentation d'un certain composant dans certains "
+"scénarios de déploiement."
+
+#. Tag: para
+#: Concepts.xml:446
+#, no-c-format
+msgid ""
+"You want to install some components only if their dependencies are available "
+"(useful for framework authors)."
+msgstr ""
+"vous voulez installer certains composants uniquement si leurs dépendances "
+"sont disponibles (utile pour des auteurs de frameworks)."
+
+#. Tag: para
+#: Concepts.xml:451
+#, no-c-format
+msgid ""
+"<literal>@Install</literal> works by letting you specify "
+"<emphasis>precedence</emphasis> and <emphasis>dependencies</emphasis>."
+msgstr ""
+"<literal>@Install</literal> fonctionne en vous laissant spécifier la "
+"<emphasis>précédence</emphasis> et les <emphasis>dépendances</emphasis>."
+
+#. Tag: para
+#: Concepts.xml:454
+#, fuzzy, no-c-format
+msgid ""
+"The precedence of a component is a number that Seam uses to decide which "
+"component to install when there are multiple classes with the same component "
+"name in the classpath. Seam will choose the component with the higher "
+"precendence. There are some predefined precedence values (in ascending "
+"order):"
+msgstr ""
+"La précédence d'un composant est un nombre que Seam utilise et qui détermine "
+"quel composant installer lorsque plusieurs classes avec le même nom de "
+"composant sont dans le chemin de classe. Seam choisira le composant avec la "
+"priorité la plus élevée. Il y a plusieurs valeurs de précédence prédéfinies :"
+
+#. Tag: para
+#: Concepts.xml:459
+#, no-c-format
+msgid ""
+"<literal>BUILT_IN</literal> &mdash; the lowest precedece components are the "
+"components built in to Seam."
+msgstr ""
+"<literal>BUILT_IN</literal> - les composants avec la moindre priorité sont "
+"les composants imbriqués dans Seam."
+
+#. Tag: para
+#: Concepts.xml:464
+#, no-c-format
+msgid ""
+"<literal>FRAMEWORK</literal> &mdash; components defined by third-party "
+"frameworks may override built-in components, but are overridden by "
+"application components."
+msgstr ""
+"<literal>FRAMEWORK</literal> - les composants définis par des frameworks "
+"tiers peuvent surcharger les composants imbriqués, mais sont surchargés par "
+"des composants d'application."
+
+#. Tag: para
+#: Concepts.xml:469
+#, no-c-format
+msgid ""
+"<literal>APPLICATION</literal> &mdash; the default precedence. This is "
+"appropriate for most application components."
+msgstr ""
+"<literal>APPLICATION</literal> - la précédence par défaut. Elle est "
+"appropriée pour la plupart des composants d'application."
+
+#. Tag: para
+#: Concepts.xml:474
+#, no-c-format
+msgid ""
+"<literal>DEPLOYMENT</literal> &mdash; for application components which are "
+"deployment-specific."
+msgstr ""
+"<literal>DEPLOYMENT</literal> - pour les composants d'application qui sont "
+"spécifiques au déploiement."
+
+#. Tag: para
+#: Concepts.xml:479
+#, no-c-format
+msgid "<literal>MOCK</literal> &mdash; for mock objects used in testing."
+msgstr ""
+"<literal>MOCK</literal> - pour les objets de simulation utilisés pour les "
+"tests."
+
+#. Tag: para
+#: Concepts.xml:484
+#, no-c-format
+msgid ""
+"Suppose we have a component named <literal>messageSender</literal> that "
+"talks to a JMS queue."
+msgstr ""
+"Supposons que nous ayons un composant, nommé <literal>messageSender</"
+"literal> qui discute avec une file d'attente JMS."
+
+#. Tag: programlisting
+#: Concepts.xml:487
+#, no-c-format
+msgid ""
+"@Name(\"messageSender\") \n"
+"public class MessageSender {\n"
+"    public void sendMessage() {\n"
+"        //do something with JMS\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"messageSender\") \n"
+"public class MessageSender {\n"
+"    public void sendMessage() {\n"
+"        //do something with JMS\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:488
+#, fuzzy, no-c-format
+msgid ""
+"In our unit tests, we don&#39;t have a JMS queue available, so we would like "
+"to stub out this method. We&#39;ll create a <emphasis>mock</emphasis> "
+"component that exists in the classpath when unit tests are running, but is "
+"never deployed with the application:"
+msgstr ""
+"Dans nos tests unitaires, nous n'avons pas de file d'attente JMS disponible, "
+"nous voudrions donc bouchonner cette méthode. Nous allons créer un composant "
+"de <emphasis>simulation</emphasis> qui existe dans le chemin de classe "
+"lorsque les tests unitaires sont exécutés, mais qui n'est jamais déployé "
+"avec l'application :"
+
+#. Tag: programlisting
+#: Concepts.xml:491
+#, no-c-format
+msgid ""
+"@Name(\"messageSender\") \n"
+"@Install(precedence=MOCK)\n"
+"public class MockMessageSender extends MessageSender {\n"
+"    public void sendMessage() {\n"
+"        //do nothing!\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"messageSender\") \n"
+"@Install(precedence=MOCK)\n"
+"public class MockMessageSender extends MessageSender {\n"
+"    public void sendMessage() {\n"
+"        //do nothing!\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:492
+#, no-c-format
+msgid ""
+"The <literal>precedence</literal> helps Seam decide which version to use "
+"when it finds both components in the classpath."
+msgstr ""
+"La <literal>precedence</literal> aide Seam à décider de la version à "
+"utiliser, lorsqu'il trouve les deux composants dans le chemin de classe."
+
+#. Tag: para
+#: Concepts.xml:495
+#, fuzzy, no-c-format
+msgid ""
+"This is nice if we are able to control exactly which classes are in the "
+"classpath. But if I&#39;m writing a reusable framework with many "
+"dependecies, I don&#39;t want to have to break that framework across many "
+"jars. I want to be able to decide which components to install depending upon "
+"what other components are installed, and upon what classes are available in "
+"the classpath. The <literal>@Install</literal> annotation also controls this "
+"functionality. Seam uses this mechanism internally to enable conditional "
+"installation of many of the built-in components. However, you probably "
+"won&#39;t need to use it in your application."
+msgstr ""
+"C'est bien si nous sommes en mesure de contrôler exactement quelles classes "
+"se trouvent dans le chemin de classe. Mais si je code un framework "
+"réutilisable avec plusieurs dépendances, je n'ai pas à casser ce framework "
+"en plusieurs jars. Je veux être en mesure de décider quels composants "
+"installer par rapport à d'autres composants installés, et selon la "
+"disponibilité de certaines classes dans le chemin de classe. L'annotation "
+"<literal>@Install</literal> contrôle aussi cette fonctionnalité. Seam "
+"utilise ce mécanisme en interne pour activer l'installation conditionnelle "
+"de plusieurs composants intégrés. Cependant, vous n'aurez probablement pas à "
+"l'utiliser dans votre application."
+
+#. Tag: title
+#: Concepts.xml:498
+#, no-c-format
+msgid "Logging"
+msgstr "Journalisation"
+
+#. Tag: para
+#: Concepts.xml:499
+#, no-c-format
+msgid "Who is not totally fed up with seeing noisy code like this?"
+msgstr "Qui n'en a pas marre de voir du code pollueur comme celui ci ?"
+
+#. Tag: programlisting
+#: Concepts.xml:502
+#, no-c-format
+msgid ""
+"private static final Log log = LogFactory.getLog(CreateOrderAction.class);\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    if ( log.isDebugEnabled() ) {\n"
+"        log.debug(\"Creating new order for user: \" + user.username() + \n"
+"            \" product: \" + product.name() \n"
+"            + \" quantity: \" + quantity);\n"
+"    }\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+"private static final Log log = LogFactory.getLog(CreateOrderAction.class);\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    if ( log.isDebugEnabled() ) {\n"
+"        log.debug(\"Creating new order for user: \" + user.username() + \n"
+"            \" product: \" + product.name() \n"
+"            + \" quantity: \" + quantity);\n"
+"    }\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:503
+#, no-c-format
+msgid ""
+"It is difficult to imagine how the code for a simple log message could "
+"possibly be more verbose. There is more lines of code tied up in logging "
+"than in the actual business logic! I remain totally astonished that the Java "
+"community has not come up with anything better in 10 years."
+msgstr ""
+"Il est difficile d'imaginer comment le code pour un simple message journal "
+"pourrait être plus verbeux. Il y a plus de lignes de code pour la "
+"journalisation que pour la logique métier en soi ! Je suis étonné que la "
+"communauté Java n'ait rien sorti de mieux en 10 ans."
+
+#. Tag: para
+#: Concepts.xml:506
+#, fuzzy, no-c-format
+msgid "Seam provides a logging API that simplifies this code significantly:"
+msgstr ""
+"Seam fournit un API de journalisation construit sur les commons-logging "
+"d'Apache, qui simplifie ce code de manière significative :"
+
+#. Tag: programlisting
+#: Concepts.xml:509
+#, fuzzy, no-c-format
+msgid ""
+"@Logger private Log log;\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    log.debug(\"Creating new order for user: #0 product: #1 quantity: #2\", "
+"user.username(), \n"
+"      product.name(), quantity);\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+"@Logger private Log log;\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    log.debug(\"Creating new order for user: #0 product: #1 quantity: #2\", "
+"user.username(), \n"
+"       product.name(), quantity);\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:510
+#, fuzzy, no-c-format
+msgid ""
+"It doesn&#39;t matter if you declare the <literal>log</literal> variable "
+"static or not&mdash;it will work either way, except for entity bean "
+"components which require the <literal>log</literal> variable to be static."
+msgstr ""
+"Il n'importe pas de déclarer la variable <literal>log</literal> comme "
+"statique ou non - cela fonctionnera de toute façon."
+
+#. Tag: para
+#: Concepts.xml:513
+#, fuzzy, no-c-format
+msgid ""
+"Note that we don&#39;t need the noisy <literal>if ( log.isDebugEnabled() )</"
+"literal> guard, since string concatenation happens <emphasis>inside</"
+"emphasis> the <literal>debug()</literal> method. Note also that we don&#39;t "
+"usually need to specify the log category explicitly, since Seam knows what "
+"component it is injecting the <literal>Log</literal> into."
+msgstr ""
+"Notez que nous n'avons pas besoin de la protection verbeuse <literal>if "
+"( log.isDebugEnabled() )</literal> puisque la concaténation de chaîne "
+"intervient <emphasis>dans</emphasis> la méthode <literal>debug()</literal>. "
+"Notez aussi que nous n'avons pas spécifier explicitement la catégorie "
+"journal, puisque Seam sait dans quel composant le <literal>Log</literal> est "
+"injecté."
+
+#. Tag: para
+#: Concepts.xml:516
+#, no-c-format
+msgid ""
+"If <literal>User</literal> and <literal>Product</literal> are Seam "
+"components available in the current contexts, it gets even better:"
+msgstr ""
+"Si <literal>User</literal> et <literal>Product</literal> sont des composants "
+"Seam disponibles dans les contextes en cours, c'est encore mieux :"
+
+#. Tag: programlisting
+#: Concepts.xml:519
+#, fuzzy, no-c-format
+msgid ""
+"@Logger private Log log;\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    log.debug(\"Creating new order for user: #{user.username} product: #"
+"{product.name} \n"
+"      quantity: #0\", quantity);\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+"@Logger private Log log;\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    log.debug(\"Creating new order for user: #{user.username} product: #"
+"{product.name}\n"
+"       quantity: #0\", quantity);\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:520
+#, no-c-format
+msgid ""
+"Seam logging automagically chooses whether to send output to log4j or JDK "
+"logging. If log4j is in the classpath, Seam with use it. If it is not, Seam "
+"will use JDK logging."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:523
+#, no-c-format
+msgid ""
+"The <literal>Mutable</literal> interface and <literal>@ReadOnly</literal>"
+msgstr "L'interface <literal>Mutable</literal> et <literal>@ReadOnly</literal>"
+
+#. Tag: para
+#: Concepts.xml:524
+#, no-c-format
+msgid ""
+"Many application servers feature an amazingly broken implementation of "
+"<literal>HttpSession</literal> clustering, where changes to the state of "
+"mutable objects bound to the session are only replicated when the "
+"application calls <literal>setAttribute()</literal> explicitly. This is a "
+"source of bugs that can not effectively be tested for at development time, "
+"since they will only manifest when failover occurs. Furthermore, the actual "
+"replication message contains the entire serialized object graph bound to the "
+"session attribute, which is inefficient."
+msgstr ""
+"Plusieurs serveurs d'applications fournissent une implémentation désastreuse "
+"de la clusterisation de <literal>HttpSession</literal>, qui ne réplique les "
+"modifications apportées aux objets liés à la session que lors d'un appel "
+"explicite à <literal>setAttribute()</literal>. C'est une source de bogues "
+"qui ne peut être testée au moment du développement, puisqu'ils "
+"n'interviennent qu'en cas de basculement. De plus, le message de réplication "
+"réel contient le graphe entier d'objets sérialisés, lié à l'attribut de la "
+"session, ce qui n'est pas efficace."
+
+#. Tag: para
+#: Concepts.xml:527
+#, no-c-format
+msgid ""
+"Of course, EJB stateful session beans must perform automatic dirty checking "
+"and replication of mutable state and a sophisticated EJB container can "
+"introduce optimizations such as attribute-level replication. Unfortunately, "
+"not all Seam users have the good fortune to be working in an environment "
+"that supports EJB 3.0. So, for session and conversation scoped JavaBean and "
+"entity bean components, Seam provides an extra layer of cluster-safe state "
+"management over the top of the web container session clustering."
+msgstr ""
+"Bien sûr, les EJB session stateful doivent opérer une vérification modifiée "
+"automatique et une réplication des états mutables et un conteneur EJB "
+"sophistiqué peut introduire des optimisations comme la réplication fine, "
+"niveau attribut. Malheureusement, tous les utilisateurs de Seam n'ont pas eu "
+"la chance de travailler dans un environnement qui supporte EJB 3.0.. Ainsi, "
+"pour les Javabean et beans entités, portés par la session ou la "
+"conversation, Seam fournit une couche pour la gestion d'état sécurisée en "
+"cluster, cette couche intervient au dessus de la clusterisation du conteneur "
+"web pour la session."
+
+#. Tag: para
+#: Concepts.xml:530
+#, no-c-format
+msgid ""
+"For session or conversation scoped JavaBean components, Seam automatically "
+"forces replication to occur by calling <literal>setAttribute()</literal> "
+"once in every request that the component was invoked by the application. Of "
+"course, this strategy is inefficient for read-mostly components. You can "
+"control this behavior by implementing the <literal>org.jboss.seam.core."
+"Mutable</literal> interface, or by extending <literal>org.jboss.seam.core."
+"AbstractMutable</literal>, and writing your own dirty-checking logic inside "
+"the component. For example,"
+msgstr ""
+"Pour les composants Javabean portés par la session ou conversation, Seam "
+"force automatiquement la réplication en invoquant <literal>setAttribute()</"
+"literal> une fois par requête, où le composant a été invoqué par "
+"l'application. Bien sûr, cette stratégie n'est pas efficace pour les "
+"composants qui ne sont que lus. Vous pouvez contrôler ce comportement en "
+"implémentant l'interface <literal>org.jboss.seam.core.Mutable</literal>, ou "
+"en étendant <literal>org.jboss.seam.core.AbstractMutable</literal>, et vous "
+"pouvez coder votre propre logique de vérification modifiée dans le "
+"composant. Par exemple,"
+
+#. Tag: programlisting
+#: Concepts.xml:533
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class Account extends AbstractMutable\n"
+"{\n"
+"    private BigDecimal balance;\n"
+"    \n"
+"    public void setBalance(BigDecimal balance)\n"
+"    {\n"
+"        setDirty(this.balance, balance);\n"
+"        this.balance = balance;\n"
+"    }\n"
+"    \n"
+"    public BigDecimal getBalance()\n"
+"    {\n"
+"        return balance;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+"@Name(\"account\")\n"
+"public class Account extends AbstractMutable\n"
+"{\n"
+"    private BigDecimal balance;\n"
+"    \n"
+"    public void setBalance(BigDecimal balance)\n"
+"    {\n"
+"        setDirty(this.balance, balance);\n"
+"        this.balance = balance;\n"
+"    }\n"
+"    \n"
+"    public BigDecimal getBalance()\n"
+"    {\n"
+"        return balance;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:534
+#, no-c-format
+msgid ""
+"Or, you can use the <literal>@ReadOnly</literal> annotation to achieve a "
+"similar effect:"
+msgstr ""
+"Ou, vous pouvez utiliser l'annotation <literal>@ReadOnly</literal> pour "
+"obtenir le même effet :"
+
+#. Tag: programlisting
+#: Concepts.xml:537
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class Account\n"
+"{\n"
+"    private BigDecimal balance;\n"
+"    \n"
+"    public void setBalance(BigDecimal balance)\n"
+"    {\n"
+"        this.balance = balance;\n"
+"    }\n"
+"    \n"
+"    @ReadOnly\n"
+"    public BigDecimal getBalance()\n"
+"    {\n"
+"        return balance;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+"@Name(\"account\")\n"
+"public class Account\n"
+"{\n"
+"    private BigDecimal balance;\n"
+"    \n"
+"    public void setBalance(BigDecimal balance)\n"
+"    {\n"
+"        this.balance = balance;\n"
+"    }\n"
+"    \n"
+"    @ReadOnly\n"
+"    public BigDecimal getBalance()\n"
+"    {\n"
+"        return balance;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:538
+#, no-c-format
+msgid ""
+"For session or conversation scoped entity bean components, Seam "
+"automatically forces replication to occur by calling <literal>setAttribute()"
+"</literal> once in every request, <emphasis>unless the (conversation-scoped) "
+"entity is currently associated with a Seam-managed persistence context, in "
+"which case no replication is needed</emphasis>. This strategy is not "
+"necessarily efficient, so session or conversation scope entity beans should "
+"be used with care. You can always write a stateful session bean or JavaBean "
+"component to \"manage\" the entity bean instance. For example,"
+msgstr ""
+"Pour les composants beans entité, portés par la session ou la conversation, "
+"Seam force automatiquement la réplication en invoquant <literal>setAttribute"
+"()</literal> une fois par requête, <emphasis>sauf si l'entité (portée par la "
+"conversation) est actuellement associée à un contexte de persistance géré "
+"par Seam, auquel cas, la réplication est inutile</emphasis>. Cette stratégie "
+"n'est pas forcément efficace, il faut utiliser avec précaution les beans "
+"entités liés à la session ou conversation. Vous pouvez toujours coder un "
+"bean session stateful, ou un composant Javabean pour \"gérer\" une instance "
+"de bean entité. Par exemple,"
+
+#. Tag: programlisting
+#: Concepts.xml:541
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"account\")\n"
+"public class AccountManager extends AbstractMutable\n"
+"{\n"
+"    private Account account; // an entity bean\n"
+"    \n"
+"    @Unwrap\n"
+"    public void getAccount()\n"
+"    {\n"
+"        return account;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+"@Stateful\n"
+"@Name(\"account\")\n"
+"public class AccountManager extends AbstractMutable\n"
+"{\n"
+"    private Account account; // an entity bean\n"
+"    \n"
+"    @Unwrap\n"
+"    public void getAccount()\n"
+"    {\n"
+"        return account;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:542
+#, no-c-format
+msgid ""
+"Note that the <literal>EntityHome</literal> class in the Seam Application "
+"Framework provides a great example of this pattern."
+msgstr ""
+"Notez que la classe <literal>EntityHome</literal> dans Seam Application "
+"Framework fournit un bel exemple de ce modèle."
+
+#. Tag: title
+#: Concepts.xml:545
+#, fuzzy, no-c-format
+msgid "Factory and manager components"
+msgstr "Composants de fabrique et de gestionnaire"
+
+#. Tag: para
+#: Concepts.xml:546
+#, no-c-format
+msgid ""
+"We often need to work with objects that are not Seam components. But we "
+"still want to be able to inject them into our components using <literal>@In</"
+"literal> and use them in value and method binding expressions, etc. "
+"Sometimes, we even need to tie them into the Seam context lifecycle "
+"(<literal>@Destroy</literal>, for example). So the Seam contexts can contain "
+"objects which are not Seam components, and Seam provides a couple of nice "
+"features that make it easier to work with non-component objects bound to "
+"contexts."
+msgstr ""
+"Nous devons parfois travailler avec des objects qui ne sont pas des "
+"composants Seam. Mais nous souhaitons toujours être capables de les injecter "
+"dans nos composants en utilisant <literal>@In</literal> et de les utiliser "
+"dans des expressions de liaison de méthodes ou de valeurs, etc. Parfois, "
+"nous avons même besoin de les impliquer au cycle de vie du contexte Seam "
+"(<literal>@Destroy</literal>, par exemple). Ainsi, les contextes Seam "
+"peuvent contenir des objects qui ne sont pas des composants Seam, et Seam "
+"fournit quelques bonnes fonctionnalités qui permettent de travailler plus "
+"facilement avec des objets non-composants, liés aux contextes."
+
+#. Tag: para
+#: Concepts.xml:549
+#, fuzzy, no-c-format
+msgid ""
+"The <emphasis>factory component pattern</emphasis> lets a Seam component act "
+"as the instantiator for a non-component object. A <emphasis>factory method</"
+"emphasis> will be called when a context variable is referenced but has no "
+"value bound to it. We define factory methods using the <literal>@Factory</"
+"literal> annotation. The factory method binds a value to the context "
+"variable, and determines the scope of the bound value. There are two styles "
+"of factory method. The first style returns a value, which is bound to the "
+"context by Seam:"
+msgstr ""
+"Le <emphasis>modèle de composant de fabrique</emphasis> permet a un "
+"composant Seam d'agir comme un instanciateur pour un objet non-composant. "
+"Une <emphasis>méthode de fabrique</emphasis> sera invoquée lorsqu'une "
+"variable de contexte est référencée mais n'a pas de valeur qui lui est liée. "
+"On définit les méthodes de fabrique en utilisant l'annotation "
+"<literal>@Factory</literal>. La méthode de fabrique lie une valeur à une "
+"variable de contexte, et détermine la portée de la valeur liée. Il existe "
+"deux types de méthodes de fabrique. Le premier retourne une valeur, qui est "
+"liée au contexte par Seam :"
+
+#. Tag: programlisting
+#: Concepts.xml:552
+#, no-c-format
+msgid ""
+"@Factory(scope=CONVERSATION)\n"
+"public List&lt;Customer&gt; getCustomerList() { \n"
+"    return ... ;\n"
+"}"
+msgstr ""
+"@Factory(scope=CONVERSATION)\n"
+"public List&lt;Customer&gt; getCustomerList() { \n"
+"    return ... ;\n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:553
+#, no-c-format
+msgid ""
+"The second style is a method of type <literal>void</literal> which binds the "
+"value to the context variable itself:"
+msgstr ""
+"Le second type est une méthode de type <literal>void</literal> qui lie la "
+"valeur à la variable de contexte elle même :"
+
+#. Tag: programlisting
+#: Concepts.xml:556
+#, no-c-format
+msgid ""
+"@DataModel List&lt;Customer&gt; customerList;\n"
+"\n"
+"@Factory(\"customerList\")\n"
+"public void initCustomerList() { \n"
+"    customerList = ...  ;\n"
+"}"
+msgstr ""
+"@DataModel List&lt;Customer&gt; customerList;\n"
+"\n"
+"@Factory(\"customerList\")\n"
+"public void initCustomerList() { \n"
+"    customerList = ...  ;\n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:557
+#, fuzzy, no-c-format
+msgid ""
+"In both cases, the factory method is called when we reference the "
+"<literal>customerList</literal> context variable and its value is null, and "
+"then has no further part to play in the lifecycle of the value. An even more "
+"powerful pattern is the <emphasis>manager component pattern</emphasis>. In "
+"this case, we have a Seam component that is bound to a context variable, "
+"that manages the value of the context variable, while remaining invisible to "
+"clients."
+msgstr ""
+"Dans les deux cas, la méthode de fabrique est invoquée lorsque nous "
+"référençons la variable de contexte <literal>customerList</literal> et que "
+"celle-ci est nulle, et qu'elle n'a donc plus aucun rôle à jouer dans le "
+"cycle de vie de la valeur. Un modèle encore plus puissant est le "
+"<emphasis>modèle composant de gestionnaire</emphasis>. Dans ce cas, nous "
+"avons un composant Seam qui est lié à la variable de contexte, qui gère la "
+"valeur de la variable de contexte, alors qu'il reste invisible aux clients. "
+
+#. Tag: para
+#: Concepts.xml:560
+#, no-c-format
+msgid ""
+"A manager component is any component with an <literal>@Unwrap</literal> "
+"method. This method returns the value that will be visable to clients, and "
+"is called <emphasis>every time</emphasis> a context variable is referenced."
+msgstr ""
+"Un composant gestionnaire est un composant qui possède une méthode "
+"<literal>@Unwrap</literal>. Cette méthode retourne la valeur qui sera "
+"visible par les clients, et est invoquée <emphasis>à chaque fois</emphasis> "
+"qu'une variable de contexte est référencée."
+
+#. Tag: programlisting
+#: Concepts.xml:563
+#, no-c-format
+msgid ""
+"@Name(\"customerList\")\n"
+"@Scope(CONVERSATION)\n"
+"public class CustomerListManager\n"
+"{\n"
+"    ...\n"
+"    \n"
+"    @Unwrap\n"
+"    public List&lt;Customer&gt; getCustomerList() { \n"
+"        return ... ;\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"customerList\")\n"
+"@Scope(CONVERSATION)\n"
+"public class CustomerListManager\n"
+"{\n"
+"    ...\n"
+"    \n"
+"    @Unwrap\n"
+"    public List&lt;Customer&gt; getCustomerList() { \n"
+"        return ... ;\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:564
+#, fuzzy, no-c-format
+msgid ""
+"This pattern is especially useful if we have some heavyweight object that "
+"needs a cleanup operation when the context ends. In this case, the manager "
+"component may perform cleanup in the <literal>@Destroy</literal> method."
+msgstr ""
+"Ce modèle est particulièrement utile si nous avons un objet lourd qui "
+"nécessite une opération de nettoyage lorsque le contexte se termine. Dans ce "
+"cas, le composant de gestionnaire peut effectuer le nettoyage dans la "
+"méthode <literal>@Destroy</literal>."

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Configuration.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Configuration.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Configuration.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2239 @@
+# translation of Configuration.po to french
+# myriam malga <mmalga at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Configuration\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2007-08-03 16:24+1000\n"
+"Last-Translator: myriam malga <mmalga at redhat.com>\n"
+"Language-Team: french\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Configuration.xml:6
+#, no-c-format
+msgid "Configuring Seam and packaging Seam applications"
+msgstr "Configurer Seam et empaqueter des applications Seam"
+
+#. Tag: para
+#: Configuration.xml:7
+#, fuzzy, no-c-format
+msgid ""
+"Configuration is a very boring topic and an extremely tedious pastime. "
+"Unfortunately, several lines of XML are required to integrate Seam into your "
+"JSF implementation and servlet container. There&#39;s no need to be too put "
+"off by the following sections; you&#39;ll never need to type any of this "
+"stuff yourself, since you can just copy and paste from the example "
+"applications!"
+msgstr ""
+"La configuration est un point ennuyeux et consommateur de beaucoup de temps. "
+"Malheureusement, quelques lignes de XML sont requises pour intégrer Seam à "
+"votre implémentation JSF et à votre conteneur de servlet. Ne soyez pas "
+"effrayé par ce qui suit, vous ne devrez jamais écrire ces choses par vous "
+"même, il suffit de les copier depuis les applications exemples !"
+
+#. Tag: title
+#: Configuration.xml:10
+#, no-c-format
+msgid "Basic Seam configuration"
+msgstr "Configuration de base de Seam"
+
+#. Tag: para
+#: Configuration.xml:11
+#, fuzzy, no-c-format
+msgid ""
+"First, let&#39;s look at the basic configuration that is needed whenever we "
+"use Seam with JSF."
+msgstr ""
+"Premièrement, regardons la configuration basique requise chaque fois que "
+"vous utilisez Seam avec JSF."
+
+#. Tag: title
+#: Configuration.xml:14
+#, no-c-format
+msgid "Integrating Seam with JSF and your servlet container"
+msgstr "Intégrer Seam à JSF et à votre conteneur de servlet"
+
+#. Tag: para
+#: Configuration.xml:15
+#, no-c-format
+msgid ""
+"Seam requires the following entry in your <literal>web.xml</literal> file:"
+msgstr ""
+"Seam nécessite la ligne suivante de votre fichier <literal>web.xml</"
+"literal> :"
+
+#. Tag: programlisting
+#: Configuration.xml:18
+#, no-c-format
+msgid ""
+"&lt;listener&gt;\n"
+"    &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/listener-"
+"class&gt;\n"
+"&lt;/listener&gt;"
+msgstr ""
+"&lt;listener&gt;\n"
+"    &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/listener-"
+"class&gt;\n"
+"&lt;/listener&gt;"
+
+#. Tag: para
+#: Configuration.xml:19
+#, no-c-format
+msgid ""
+"This listener is responsible for bootstrapping Seam, and for destroying "
+"session and application contexts."
+msgstr ""
+"Ce listener est responsable de l'initialiation de Seam, et de la destruction "
+"des contextes de session et d'application."
+
+#. Tag: para
+#: Configuration.xml:22
+#, no-c-format
+msgid ""
+"To integrate with the JSF request lifecycle, we also need a JSF "
+"<literal>PhaseListener</literal> registered in in the <literal>faces-config."
+"xml</literal> file:"
+msgstr ""
+"Pour s'intégrer dans le cycle de vie de la requête JSF, nous avons aussi "
+"besoin d'un <literal>PhaseListener</literal> JSF enregistré dans le fichier "
+"<literal>faces-config.xml</literal> :"
+
+#. Tag: programlisting
+#: Configuration.xml:25
+#, no-c-format
+msgid ""
+"&lt;lifecycle&gt;\n"
+"    &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-"
+"listener&gt;\n"
+"&lt;/lifecycle&gt;"
+msgstr ""
+"&lt;lifecycle&gt;\n"
+"    &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-"
+"listener&gt;\n"
+"&lt;/lifecycle&gt;"
+
+#. Tag: para
+#: Configuration.xml:26
+#, no-c-format
+msgid ""
+"The actual listener class here varies depending upon how you want to manage "
+"transaction demarcation (more on this below)."
+msgstr ""
+"La classe listener ici varie selon la manière dont vous souhaitez gérer la "
+"démarcation des transactions (en détails plus loin)."
+
+#. Tag: para
+#: Configuration.xml:29
+#, fuzzy, no-c-format
+msgid ""
+"If you are using Sun&#39;s JSF 1.2 reference implementation, you should also "
+"add this to <literal>faces-config.xml</literal>:"
+msgstr ""
+"Si vous utilisez l'implémentation de référence de Sun de JSF 1.2, vous devez "
+"aussi ajouter cela à <literal>faces-config.xml</literal> :"
+
+#. Tag: programlisting
+#: Configuration.xml:32
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;el-resolver&gt;org.jboss.seam.jsf.SeamELResolver&lt;/el-"
+"resolver&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+"&lt;application&gt;\n"
+"    &lt;el-resolver&gt;org.jboss.seam.jsf.SeamELResolver&lt;/el-"
+"resolver&gt;\n"
+"&lt;/application&gt;"
+
+#. Tag: para
+#: Configuration.xml:33
+#, no-c-format
+msgid ""
+"(This line should not strictly speaking be necessary, but it works around a "
+"minor bug in the RI.)"
+msgstr ""
+"(Cette ligne n'est pas strictement nécessaire, mais elle contourne un bogue "
+"mineur dans la RI.)"
+
+#. Tag: para
+#: Configuration.xml:36
+#, fuzzy, no-c-format
+msgid ""
+"Some JSF implementations have a broken implementation of server-side state "
+"saving that interferes with Seam&#39;s conversation propagation. If you have "
+"problems with conversation propagation during form submissions, try "
+"switching to client-side state saving. You&#39;ll need this in <literal>web."
+"xml</literal>:"
+msgstr ""
+"Certaines implémentations JSF ont une implémentation corrompue de la "
+"sauvegarde de l'état, côté serveur qui interfère avec la propagation de "
+"conversation Seam. Si vous avez des problèmes de propagation de conversation "
+"pendant la soumission de formulaires, essayez d'activer la sauvegarde "
+"d'état, côté client. Vous aurez besoin de cela dans <literal>web.xml</"
+"literal> :"
+
+#. Tag: programlisting
+#: Configuration.xml:39
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;client&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;client&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+
+#. Tag: title
+#: Configuration.xml:40
+#, no-c-format
+msgid "Seam Resource Servlet"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:41
+#, no-c-format
+msgid ""
+"The Seam Resource Servlet provides resources used by Seam Remoting, captchas "
+"(see the security chapter) and some JSF UI controls. Configuring the Seam "
+"Resource Servlet requires the following entry in <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:44
+#, fuzzy, no-c-format
+msgid ""
+"&lt;servlet&gt;\n"
+"  &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"  &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"    \n"
+"&lt;servlet-mapping&gt;\n"
+"  &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"  &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+msgstr ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;/*&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;"
+
+#. Tag: title
+#: Configuration.xml:45
+#, no-c-format
+msgid "Seam servlet filters"
+msgstr "Filtres de servlet Seam"
+
+#. Tag: para
+#: Configuration.xml:46
+#, fuzzy, no-c-format
+msgid ""
+"Seam doesn&#39;t need any servlet filters for basic operation. However, "
+"there are several features which depend upon the use of filters. To make "
+"things easier for you guys, Seam lets you add and configure servlet filters "
+"just like you would configure other built-in Seam components. To take "
+"advantage of this feature, we must first install a master filter in "
+"<literal>web.xml</literal>:"
+msgstr ""
+"Seam n'a pas besoin de filtre de servlet pour les opérations de base. "
+"Cependant, il y a quelques fonctionnalités qui dépendent de l'utilisation "
+"des filtres. Pour vous simplifier la tâche, Seam vous permet de configurer "
+"les filtres de servlet comme n'importe quel autre composant intégré de Seam. "
+"Pour tirer profit de cet avantage, nous devons d'abord installer un filtre "
+"maître dans <literal>web.xml</literal> :"
+
+#. Tag: programlisting
+#: Configuration.xml:49
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;/*&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;"
+msgstr ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;/*&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;"
+
+#. Tag: para
+#: Configuration.xml:50
+#, no-c-format
+msgid "Adding the master filter enables the following built-in filters."
+msgstr "Ajouter le filtre maître active les filtres intégrés suivants."
+
+#. Tag: title
+#: Configuration.xml:53
+#, no-c-format
+msgid "Exception handling"
+msgstr "Gestion d'exception"
+
+#. Tag: para
+#: Configuration.xml:54
+#, fuzzy, no-c-format
+msgid ""
+"This filter provides the exception mapping functionality in <literal>pages."
+"xml</literal> (almost all applications will need this). It also takes care "
+"of rolling back uncommitted transactions when uncaught exceptions occur. "
+"(According to the Java EE specification, the web container should do this "
+"automatically, but we&#39;ve found that this behavior cannot be relied upon "
+"in all application servers. And it is certainly not required of plain "
+"servlet engines like Tomcat.)"
+msgstr ""
+"Ce filtre fournit une fonctionnalité de mapping d'exception dans "
+"<literal>pages.xml</literal> (quasiemen toutes les applications en ont "
+"besoin). Il s'occupe aussi d'effectuer un rollback sur les transactions, non "
+"committée lorsque des exceptions ne sont pas capturées. (Selon la spec Java "
+"EE, le conteneur Web devrait faire cela automatiquement, mais nous avons "
+"remarqué que nous ne pouvions pas nous y fier sur tous les serveurs "
+"d'applications. Et ce n'est certainement pas requis pour les moteurs de "
+"servlet comme Tomcat.)"
+
+#. Tag: para
+#: Configuration.xml:57
+#, no-c-format
+msgid ""
+"By default, the exception handling filter will process all requests, however "
+"this behavior may be adjusted by adding a <literal>&lt;web:exception-"
+"filter&gt;</literal> entry to <literal>components.xml</literal>, as shown in "
+"this example:"
+msgstr ""
+"Par défaut, le filtre de gestion d'exception traitera toutes les requêtes, "
+"cependant ce comportement peut être ajusté en ajoutant une entrée "
+"<literal>&lt;web:exception-filter&gt;</literal> à <literal>components.xml</"
+"literal>, comme dans l'exemple:"
+
+#. Tag: programlisting
+#: Configuration.xml:60
+#, fuzzy, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:web=\"http://jboss.com/products/seam/web\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                                                      http://jboss.com/"
+"products/seam/core-1.2.xsd\n"
+"                 http://jboss.com/products/seam/components \n"
+"                                                      http://jboss.com/"
+"products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/web \n"
+"                                                      http://jboss.com/"
+"products/seam/web-1.2.xsd\"&gt;\n"
+"\n"
+"    &lt;web:exception-filter url-pattern=\"*.seam\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:web=\"http://jboss.com/products/seam/web\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                    http://jboss.com/products/seam/core-1.2.xsd\n"
+"                 http://jboss.com/products/seam/components \n"
+"                     http://jboss.com/products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/web \n"
+"                     http://jboss.com/products/seam/web-1.2.xsd\"&gt;\n"
+"\n"
+"    &lt;web:exception-filter url-pattern=\"*.seam\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Configuration.xml:63 Configuration.xml:78 Configuration.xml:100
+#: Configuration.xml:125
+#, no-c-format
+msgid ""
+"<literal>url-pattern</literal> &mdash; Used to specify which requests are "
+"filtered, the default is all requests."
+msgstr ""
+"<literal>url-pattern</literal> - Utilisé pour spécifier les requêtes sont "
+"filtrées, par défaut, toutes les requêtes le sont. "
+
+#. Tag: title
+#: Configuration.xml:68
+#, no-c-format
+msgid "Conversation propagation with redirects"
+msgstr "Propagation de conversation avec redirections"
+
+#. Tag: para
+#: Configuration.xml:69
+#, no-c-format
+msgid ""
+"This filter allows Seam to propagate the conversation context across browser "
+"redirects. It intercepts any browser redirects and adds a request parameter "
+"that specifies the Seam conversation identifier."
+msgstr ""
+"Ce filtre permet a Seam de propager le contexte de conversation sur des "
+"redirections de navigateur. Il intercepte toutes les redirections de "
+"navigateur et ajoute le paramètre de requête qui spécifie l'identifiant de "
+"conversation Seam."
+
+#. Tag: para
+#: Configuration.xml:72
+#, no-c-format
+msgid ""
+"The redirect filter will process all requests by default, but this behavior "
+"can also be adjusted in <literal>components.xml</literal>:"
+msgstr ""
+"Le filtre de redirection traitera toutes les requêtes par défaut, mais ce "
+"comportement peut être ajusté dans <literal>components.xml</literal> :"
+
+#. Tag: programlisting
+#: Configuration.xml:75
+#, no-c-format
+msgid "&lt;web:redirect-filter url-pattern=\"*.seam\"/&gt;"
+msgstr "&lt;web:redirect-filter url-pattern=\"*.seam\"/&gt;"
+
+#. Tag: title
+#: Configuration.xml:83
+#, no-c-format
+msgid "Multipart form submissions"
+msgstr "Soumission de formulaires multipart"
+
+#. Tag: para
+#: Configuration.xml:84
+#, fuzzy, no-c-format
+msgid ""
+"This feature is necessary when using the Seam file upload JSF control. It "
+"detects multipart form requests and processes them according to the "
+"multipart/form-data specification (RFC-2388). To override the default "
+"settings, add the following entry to <literal>components.xml</literal>:"
+msgstr ""
+"Cette fonctionnalité est nécessaire lorsque le contrôle JSF de l'envoi de "
+"fichiers Seam est utilisé. Il détecte les requêtes de formulaires multipart "
+"et les traite selon la spécification multipart/form-data (RFC-2388). Pour "
+"surcharger les paramètres par défaut, ajoutez l'entrée suivante à "
+"<literal>components.xml</literal> :"
+
+#. Tag: programlisting
+#: Configuration.xml:87
+#, no-c-format
+msgid ""
+"&lt;web:multipart-filter create-temp-files=\"true\" \n"
+"        max-request-size=\"1000000\" \n"
+"        url-pattern=\"*.seam\"/&gt;"
+msgstr ""
+"&lt;web:multipart-filter create-temp-files=\"true\" \n"
+"        max-request-size=\"1000000\" \n"
+"        url-pattern=\"*.seam\"/&gt;"
+
+#. Tag: para
+#: Configuration.xml:90
+#, no-c-format
+msgid ""
+"<literal>create-temp-files</literal> &mdash; If set to <literal>true</"
+"literal>, uploaded files are written to a temporary file (instead of held in "
+"memory). This may be an important consideration if large file uploads are "
+"expected. The default setting is <literal>false</literal>."
+msgstr ""
+"<literal>create-temp-files</literal> - Si définis à <literal>true</literal>, "
+"les fichiers téléchargés en amont sont écrits dans un fichier temporaire (et "
+"non en mémoire). Ceci peut être important si des téléchargements de fichiers "
+"volumineux sont attendus. Le paramètre par défaut est <literal>false</"
+"literal>."
+
+#. Tag: para
+#: Configuration.xml:95
+#, no-c-format
+msgid ""
+"<literal>max-request-size</literal> &mdash; If the size of a file upload "
+"request (determined by reading the <literal>Content-Length</literal> header "
+"in the request) exceeds this value, the request will be aborted. The default "
+"setting is 0 (no size limit)."
+msgstr ""
+"<literal>max-request-size</literal> - Si la taille de la requête de "
+"téléchargement de fichier (déterminée via la lecture de l'en-tête "
+"<literal>Content-Length</literal> dans la requête) dépasse cette valeur, la "
+"requête sera annulée. La valeur par défaut est zéro (pas de taille limite)."
+
+#. Tag: title
+#: Configuration.xml:105
+#, no-c-format
+msgid "Character encoding"
+msgstr "Codage des caractères"
+
+#. Tag: para
+#: Configuration.xml:106
+#, no-c-format
+msgid "Sets the character encoding of submitted form data."
+msgstr "Paramètre l'encodage de caractère des données soumises par formulaire."
+
+#. Tag: para
+#: Configuration.xml:109 Configuration.xml:137
+#, no-c-format
+msgid ""
+"This filter is not installed by default and requires an entry in "
+"<literal>components.xml</literal> to enable it:"
+msgstr ""
+"Ce filtre n'est pas installé par défaut et exige une entrée dans "
+"<literal>components.xml</literal> pour l'activer :"
+
+#. Tag: programlisting
+#: Configuration.xml:112
+#, no-c-format
+msgid ""
+"&lt;web:character-encoding-filter encoding=\"UTF-16\" \n"
+"        override-client=\"true\" \n"
+"        url-pattern=\"*.seam\"/&gt;"
+msgstr ""
+"&lt;web:character-encoding-filter encoding=\"UTF-16\" \n"
+"        override-client=\"true\" \n"
+"        url-pattern=\"*.seam\"/&gt;"
+
+#. Tag: para
+#: Configuration.xml:115
+#, no-c-format
+msgid "<literal>encoding</literal> &mdash; The encoding to use."
+msgstr "<literal>encoding</literal> - Le chiffrement à utiliser. "
+
+#. Tag: para
+#: Configuration.xml:120
+#, fuzzy, no-c-format
+msgid ""
+"<literal>override-client</literal> &mdash; If this is set to <literal>true</"
+"literal>, the request encoding will be set to whatever is specified by "
+"<literal>encoding</literal> no matter whether the request already specifies "
+"an encoding or not. If set to <literal>false</literal>, the request encoding "
+"will only be set if the request doesn&#39;t already specify an encoding. The "
+"default setting is <literal>false</literal>."
+msgstr ""
+"<literal>override-client</literal> - Si cela est défini à <literal>true</"
+"literal>, le chiffrement de la requête sera celui paramétré par "
+"<literal>encoding</literal>, peu importe si la requête spécifie déjà un "
+"chiffrement ou non. Si à <literal>false</literal>, le chiffrement de la "
+"requête ne sera défini que si la requête ne définit pas de chiffrement. Le "
+"paramètre par défaut est <literal>false</literal>."
+
+#. Tag: title
+#: Configuration.xml:130
+#, no-c-format
+msgid "Context management for custom servlets"
+msgstr "Gestion de contexte pour des servlets personnalisés"
+
+#. Tag: para
+#: Configuration.xml:131
+#, no-c-format
+msgid ""
+"Requests sent direct to some servlet other than the JSF servlet are not "
+"processed through the JSF lifecycle, so Seam provides a servlet filter that "
+"can be applied to any other servlet that needs access to Seam components."
+msgstr ""
+"Les requêtes envoyées directement à certains servlets, autres que les "
+"servlets JSF ne sont pas traitées à travers les cycles de vie JSF, Seam "
+"fournit donc un filtre de servlet qui s'applique à tous les servlets qui "
+"doivent accéder aux composants Seam."
+
+#. Tag: para
+#: Configuration.xml:134
+#, no-c-format
+msgid ""
+"This filter allows custom servlets to interact with the Seam contexts. It "
+"sets up the Seam contexts at the beginning of each request, and tears them "
+"down at the end of the request. You should make sure that this filter is "
+"<emphasis>never</emphasis> applied to the JSF <literal>FacesServlet</"
+"literal>. Seam uses the phase listener for context management in a JSF "
+"request."
+msgstr ""
+"Ce filtre permet à des servlets personnalisés d'interagir avec les contextes "
+"Seam. Il définit les contextes Seam au début de chaque requête, et les "
+"détache à la fin de chaque requête. Vous devez vous assurer que ce filtre "
+"n'est <emphasis>jamais</emphasis> appliqué à la <literal>FacesServlet</"
+"literal> JSF. Seam utilise la phase listener pour la gestion de contexte "
+"dans une requête JSF."
+
+#. Tag: programlisting
+#: Configuration.xml:140
+#, no-c-format
+msgid "&lt;web:context-filter url-pattern=\"/media/*\"/&gt;"
+msgstr "&lt;web:context-filter url-pattern=\"/media/*\"/&gt;"
+
+#. Tag: para
+#: Configuration.xml:143
+#, no-c-format
+msgid ""
+"<literal>url-pattern</literal> &mdash; Used to specify which requests are "
+"filtered, the default is all requests. If the url-pattern is specified for "
+"the context filter, then the filter will be enabled (unless explicitly "
+"disabled)."
+msgstr ""
+"<literal>url-pattern</literal> - Utilisé pour spécifier quelles requêtes "
+"sont filtrées, par défaut, toutes les requêtes le sont. Si url-pattern est "
+"spécifié pour le filtre de contexte, alors le filtre sera activé (à moins "
+"d'être explicitement désactivé)."
+
+#. Tag: para
+#: Configuration.xml:148
+#, no-c-format
+msgid ""
+"The context filter expects to find the conversation id of any conversation "
+"context in a request parameter named <literal>conversationId</literal>. You "
+"are responsible for ensuring that it gets sent in the request."
+msgstr ""
+"Ce filtre de contexte s'attend à trouver l'id de conversation des contextes "
+"de conversation dans un paramètre de requête, nommé <literal>conversationId</"
+"literal>. Vous avez la responsabilité d'assurer qu'un tel paramètre est "
+"envoyé dans la requête."
+
+#. Tag: para
+#: Configuration.xml:151
+#, no-c-format
+msgid ""
+"You are also responsible for ensuring propagation of any new conversation id "
+"back to the client. Seam exposes the conversation id as a property of the "
+"built in component <literal>conversation</literal>."
+msgstr ""
+"Vous êtes aussi responsable de vous assurer de la propagation de tout nouvel "
+"id de conversation en retour vers le client. Seam expose l'id de "
+"conversation comme propriété du composant intégré <literal>conversation</"
+"literal>."
+
+#. Tag: title
+#: Configuration.xml:154
+#, no-c-format
+msgid "Integrating Seam with your EJB container"
+msgstr "Intégrer Seam avec votre conteneur EJB"
+
+#. Tag: para
+#: Configuration.xml:155
+#, no-c-format
+msgid ""
+"We need to apply the <literal>SeamInterceptor</literal> to our Seam "
+"components. The simplest way to do this is to add the following interceptor "
+"binding to the <literal>&lt;assembly-descriptor&gt;</literal> in "
+"<literal>ejb-jar.xml</literal>:"
+msgstr ""
+"Nous devons appliquer le <literal>SeamInterceptor</literal> à nos composants "
+"Seam. Le moyen le plus facile est d'ajouter la liaison vers l'intercepteur "
+"suivant au <literal>&lt;assembly-descriptor&gt;</literal> dans <literal>ejb-"
+"jar.xml</literal> :"
+
+#. Tag: programlisting
+#: Configuration.xml:158
+#, no-c-format
+msgid ""
+"&lt;interceptor-binding&gt;\n"
+"    &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"    &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"&lt;/interceptor-binding&gt;"
+msgstr ""
+"&lt;interceptor-binding&gt;\n"
+"    &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"    &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"&lt;/interceptor-binding&gt;"
+
+#. Tag: para
+#: Configuration.xml:159
+#, no-c-format
+msgid ""
+"Seam needs to know where to go to find session beans in JNDI. One way to do "
+"this is specify the <literal>@JndiName</literal> annotation on every session "
+"bean Seam component. However, this is quite tedious. A better approach is to "
+"specify a pattern that Seam can use to calculate the JNDI name from the EJB "
+"name. Unfortunately, there is no standard mapping to global JNDI defined in "
+"the EJB3 specification, so this mapping is vendor-specific. We usually "
+"specify this option in <literal>components.xml</literal>."
+msgstr ""
+"Seam a besoin de savoir où aller pour trouver les beans session dans JNDI. "
+"Pour ce faire, il suffit spécifier l'annotation <literal>@JndiName</literal> "
+"sur chaque bean session. Cependant, c'est un peu fastidieux. Une meilleure "
+"approche est de spécifier un modèle que Seam peut utiliser pour calculer le "
+"nom JNDI depuis le nom EJB. Malheureusement, il n'y a pas de l'association "
+"standard vers JNDI global défini dans la spec EJB3, ce mapping est donc "
+"spécifique au vendeur. Nous spécifions généralement cette option dans "
+"<literal>components.xml</literal>."
+
+#. Tag: para
+#: Configuration.xml:162
+#, no-c-format
+msgid "For JBoss AS, the following pattern is correct:"
+msgstr "Pour JBoss AS, le modèle suivant est correct :"
+
+#. Tag: programlisting
+#: Configuration.xml:165
+#, no-c-format
+msgid "&lt;core:init jndi-name=\"myEarName/#{ejbName}/local\" /&gt;"
+msgstr "&lt;core:init jndi-name=\"myEarName/#{ejbName}/local\" /&gt;"
+
+#. Tag: para
+#: Configuration.xml:166
+#, no-c-format
+msgid ""
+"Where <literal>myEarName</literal> is the name of the EAR in which the bean "
+"is deployed."
+msgstr ""
+"Où <literal>myEarName</literal> est le nom de l'EAR où le bean est déployé."
+
+#. Tag: para
+#: Configuration.xml:169
+#, no-c-format
+msgid ""
+"Outside the context of an EAR (when using the JBoss Embeddable EJB3 "
+"container), the following pattern is the one to use:"
+msgstr ""
+"En dehors du contexte d'un EAR (lorsque vous utilisez le conteneur JBoss "
+"EJB3 Embeddable), le modèle suivant doit être utilisé :"
+
+#. Tag: programlisting
+#: Configuration.xml:172
+#, no-c-format
+msgid "&lt;core:init jndi-name=\"#{ejbName}/local\" /&gt;"
+msgstr "&lt;core:init jndi-name=\"#{ejbName}/local\" /&gt;"
+
+#. Tag: para
+#: Configuration.xml:173
+#, fuzzy, no-c-format
+msgid ""
+"You&#39;ll have to experiment to find the right setting for other "
+"application servers. Note that some servers (such as GlassFish) require you "
+"to specify JNDI names for all EJB components explicitly (and tediously). In "
+"this case, you can pick your own pattern ;-)"
+msgstr ""
+"Vous devrez expérimenter pour trouver le bon paramétrage sur d'autres "
+"serveurs d'applications. Notez que certains serveurs (comme GlassFish) "
+"nécessitent que vous spécifiez les noms JNDI pour tous les composants "
+"explicitement (et fastidieusement). Dans ce cas, vous pouvez choisir votre "
+"propre modèle ;-)"
+
+#. Tag: title
+#: Configuration.xml:176
+#, no-c-format
+msgid "Using facelets"
+msgstr "Utiliser facelets"
+
+#. Tag: para
+#: Configuration.xml:177
+#, no-c-format
+msgid ""
+"If you want follow our advice and use facelets instead of JSP, add the "
+"following lines to <literal>faces-config.xml</literal>:"
+msgstr ""
+"Si vous souhaitez suivre notre conseil et utiliser facelets au lieu de JSP, "
+"ajoutez les lignes suivantes dans <literal>faces-config.xml</literal>:"
+
+#. Tag: programlisting
+#: Configuration.xml:180
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;view-handler&gt;com.sun.facelets.FaceletViewHandler&lt;/view-"
+"handler&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+"&lt;application&gt;\n"
+"    &lt;view-handler&gt;com.sun.facelets.FaceletViewHandler&lt;/view-"
+"handler&gt;\n"
+"&lt;/application&gt;"
+
+#. Tag: para
+#: Configuration.xml:181
+#, no-c-format
+msgid "And the following lines to <literal>web.xml</literal>:"
+msgstr "Et celles-ci dans <literal>web.xml</literal> :"
+
+#. Tag: programlisting
+#: Configuration.xml:184
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;javax.faces.DEFAULT_SUFFIX&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;.xhtml&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;javax.faces.DEFAULT_SUFFIX&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;.xhtml&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+
+#. Tag: title
+#: Configuration.xml:185
+#, fuzzy, no-c-format
+msgid "Don&#39;t forget!"
+msgstr "N'oubliez pas !"
+
+#. Tag: para
+#: Configuration.xml:186
+#, no-c-format
+msgid ""
+"There is one final item you need to know about. You must place a "
+"<literal>seam.properties</literal>, <literal>META-INF/seam.properties</"
+"literal> or <literal>META-INF/components.xml</literal> file in any archive "
+"in which your Seam components are deployed (even an empty properties file "
+"will do). At startup, Seam will scan any archives with <literal>seam."
+"properties</literal> files for seam components."
+msgstr ""
+"Il y a un dernier point que vous devez connaître. Vous devez placer un "
+"fichier <literal>seam.properties</literal>, <literal>META-INF/seam."
+"properties</literal> ou <literal>META-INF/components.xml</literal> dans les "
+"archives dans lesquelles les composants Seam sont déployés (même un fichier "
+"vide fera l'affaire). Au démarrage, Seam scannera chaque archive avec "
+"<literal>seam.properties</literal> pour les composants Seam."
+
+#. Tag: para
+#: Configuration.xml:189
+#, fuzzy, no-c-format
+msgid ""
+"In a web archive (WAR) file, you must place a <literal>seam.properties</"
+"literal> file in the <literal>WEB-INF/classes</literal> directory if you "
+"have any Seam components included here."
+msgstr ""
+"Si vous voulez utiliser les facelets (notre recommandation), vous devez "
+"inclure <literal>jsf-facelets.jar</literal> dans le répertoire <literal>WEB-"
+"INF/lib</literal> de votre WAR."
+
+#. Tag: para
+#: Configuration.xml:192
+#, fuzzy, no-c-format
+msgid ""
+"That&#39;s why all the Seam examples have an empty <literal>seam.properties</"
+"literal> file. You can&#39;t just delete this file and expect everything to "
+"still work!"
+msgstr ""
+"C'est pourquoi tous les exemples Seam ont une fichier <literal>seam."
+"properties</literal> vide. Vous pouvez simplement effacer ce fichier et vous "
+"attendre à ce que tout fonctionnera !"
+
+#. Tag: para
+#: Configuration.xml:195
+#, fuzzy, no-c-format
+msgid ""
+"You might think this is silly and what kind of idiot framework designers "
+"would make an empty file affect the behavior of their software?? Well, this "
+"is a workaround for a limitation of the JVM&mdash;if we didn&#39;t use this "
+"mechanism, our next best option would be to force you to list every "
+"component explicitly in <literal>components.xml</literal>, just like some "
+"other competing frameworks do! I think you&#39;ll like our way better."
+msgstr ""
+"Vous pouvez trouver idiot que des concepteurs d'un framework tiennent compte "
+"d'un fichier vide pour affecter le comportement de leur framework. En fait, "
+"il s'agit d'une astuce pour contourner une limitation de la JVM, si nous "
+"n'utilisions pas ce mécanisme, l'autre solution serait de lister "
+"explicitement tous les composants dans <literal>components.xml</literal>, "
+"comme d'autres frameworks concurrents le font ! Je pense que vous préférerez "
+"notre approche."
+
+#. Tag: title
+#: Configuration.xml:198
+#, no-c-format
+msgid "Configuring Seam in Java EE 5"
+msgstr "Configurer Seam dans Java EE 5"
+
+#. Tag: para
+#: Configuration.xml:207
+#, fuzzy, no-c-format
+msgid ""
+"If you&#39;re running in a Java EE 5 environment, this is all the "
+"configuration required to start using Seam!"
+msgstr ""
+"Si vous exécutez Seam dans un environnement Java EE 5, c'est tout ce dont "
+"vous avez besoin !"
+
+#. Tag: title
+#: Configuration.xml:210 Configuration.xml:276 Configuration.xml:321
+#: Configuration.xml:360 Configuration.xml:377
+#, no-c-format
+msgid "Packaging"
+msgstr "Empaquetage"
+
+#. Tag: para
+#: Configuration.xml:211
+#, fuzzy, no-c-format
+msgid ""
+"Once you&#39;ve packaged all this stuff together into an EAR, the archive "
+"structure will look something like this:"
+msgstr ""
+"Une fois que vous avez empaqueté tout ça dans un EAR, la structure de "
+"l'archive ressemblera à cela :"
+
+#. Tag: programlisting
+#: Configuration.xml:214
+#, no-c-format
+msgid ""
+"my-application.ear/\n"
+"    jboss-seam.jar\n"
+"    el-api.jar\n"
+"    el-ri.jar\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"        application.xml\n"
+"    my-application.war/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"        WEB-INF/\n"
+"            web.xml\n"
+"            components.xml\n"
+"            faces-config.xml\n"
+"            lib/\n"
+"                jsf-facelets.jar\n"
+"                jboss-seam-ui.jar\n"
+"        login.jsp\n"
+"        register.jsp\n"
+"        ...\n"
+"    my-application.jar/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"            persistence.xml\n"
+"        seam.properties\n"
+"        org/\n"
+"            jboss/\n"
+"                myapplication/\n"
+"                    User.class\n"
+"                    Login.class\n"
+"                    LoginBean.class\n"
+"                    Register.class\n"
+"                    RegisterBean.class\n"
+"                    ..."
+msgstr ""
+"my-application.ear/\n"
+"    jboss-seam.jar\n"
+"    el-api.jar\n"
+"    el-ri.jar\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"        application.xml\n"
+"    my-application.war/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"        WEB-INF/\n"
+"            web.xml\n"
+"            components.xml\n"
+"            faces-config.xml\n"
+"            lib/\n"
+"                jsf-facelets.jar\n"
+"                jboss-seam-ui.jar\n"
+"        login.jsp\n"
+"        register.jsp\n"
+"        ...\n"
+"    my-application.jar/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"            persistence.xml\n"
+"        seam.properties\n"
+"        org/\n"
+"            jboss/\n"
+"                myapplication/\n"
+"                    User.class\n"
+"                    Login.class\n"
+"                    LoginBean.class\n"
+"                    Register.class\n"
+"                    RegisterBean.class\n"
+"                    ..."
+
+#. Tag: para
+#: Configuration.xml:215
+#, no-c-format
+msgid ""
+"You must include <literal>jboss-seam.jar</literal>, <literal>el-api.jar</"
+"literal> and <literal>el-ri.jar</literal> in the EAR classpath. Make sure "
+"you reference all of these jars from <literal>application.xml</literal>."
+msgstr ""
+"Vous devez inclure <literal>jboss-seam.jar</literal>, <literal>el-api.jar</"
+"literal> et <literal>el-ri.jar</literal> dans le chemin de classe de l'EAR. "
+"Assurez-vous de les référencer depuis <literal>application.xml</literal>."
+
+#. Tag: para
+#: Configuration.xml:218
+#, no-c-format
+msgid ""
+"If you want to use jBPM or Drools, you must include the needed jars in the "
+"EAR classpath. Make sure you reference all of the jars from "
+"<literal>application.xml</literal>."
+msgstr ""
+"Vous souhaitez utiliser jBPM ou Drools, vous devez inclure les jars requis "
+"dans le classpath de l'EAR. Assurez-vous de les référencer depuis "
+"<literal>application.xml</literal>."
+
+#. Tag: para
+#: Configuration.xml:221
+#, no-c-format
+msgid ""
+"If you want to use facelets (our recommendation), you must include "
+"<literal>jsf-facelets.jar</literal> in the <literal>WEB-INF/lib</literal> "
+"directory of the WAR."
+msgstr ""
+"Si vous voulez utiliser les facelets (notre recommandation), vous devez "
+"inclure <literal>jsf-facelets.jar</literal> dans le répertoire <literal>WEB-"
+"INF/lib</literal> de votre WAR."
+
+#. Tag: para
+#: Configuration.xml:224
+#, no-c-format
+msgid ""
+"If you want to use the Seam tag library (most Seam applications do), you "
+"must include <literal>jboss-seam-ui.jar</literal> in the <literal>WEB-INF/"
+"lib</literal> directory of the WAR. If you want to use the PDF or email tag "
+"libraries, you need to put <literal>jboss-seam-pdf.jar</literal> or "
+"<literal>jboss-seam-mail.jar</literal> in <literal>WEB-INF/lib</literal>."
+msgstr ""
+"Si vous voulez utiliser la bibliothèque de balises Seam (la plupart des "
+"applications le font), vous devez inclure <literal>jboss-seam-ui.jar</"
+"literal> dans le répertoire <literal>WEB-INF/lib</literal> du WAR. Si vous "
+"souhaitez utiliser les bibliothèques de balises PDF ou de courriel, vous "
+"devez placer <literal>jboss-seam-pdf.jar</literal> ou <literal>jboss-seam-"
+"mail.jar</literal> dans <literal>WEB-INF/lib</literal>."
+
+#. Tag: para
+#: Configuration.xml:227
+#, no-c-format
+msgid ""
+"If you want to use the Seam debug page (only works for applications using "
+"facelets), you must include <literal>jboss-seam-debug.jar</literal> in the "
+"<literal>WEB-INF/lib</literal> directory of the WAR."
+msgstr ""
+"Si vous voulez utiliser la page de débogage Seam (ne fonctionne que pour les "
+"applications qui utilisent facelets), vous devez inclure <literal>jboss-seam-"
+"debug.jar</literal> dans le répertoire <literal>WEB-INF/lib</literal> du WAR."
+
+#. Tag: para
+#: Configuration.xml:230
+#, no-c-format
+msgid ""
+"Seam ships with several example applications that are deployable in any Java "
+"EE container that supports EJB 3.0."
+msgstr ""
+"Seam fournit plusieurs exemples d'applications qui sont déployables dans les "
+"conteneurs Java EE qui supportent EJB 3.0."
+
+#. Tag: para
+#: Configuration.xml:233
+#, no-c-format
+msgid ""
+"I really wish that was all there was to say on the topic of configuration "
+"but unfortunately we&#39;re only about a third of the way there. If you&#39;"
+"re too overwhelmed by all this tedious configuration stuff, feel free to "
+"skip over the rest of this section and come back to it later."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:237
+#, no-c-format
+msgid "Configuring Seam in Java SE, with the JBoss Embeddable EJB3 container"
+msgstr "Configurer Seam dans Java SE, avec le conteneur JBoss Embeddable EJB3"
+
+#. Tag: para
+#: Configuration.xml:238
+#, no-c-format
+msgid ""
+"The JBoss Embeddable EJB3 container lets you run EJB3 components outside the "
+"context of the Java EE 5 application server. This is especially, but not "
+"only, useful for testing."
+msgstr ""
+"Le conteneur JBoss Embeddable EJB3 vous permet d'exécuter les composants "
+"EJB3 en dehors du contexte des serveurs d'applications EJB3. C'est utile, "
+"entre autres, pour tester. "
+
+#. Tag: para
+#: Configuration.xml:241
+#, no-c-format
+msgid ""
+"The Seam booking example application includes a TestNG integration test "
+"suite that runs on the Embeddable EJB3 container."
+msgstr ""
+"L'application exemple de réservation inclut une suite de tests d'intégration "
+"TestNG qui s'exécute dans le conteneur Embeddable EJB3."
+
+#. Tag: para
+#: Configuration.xml:252
+#, no-c-format
+msgid "The booking example application may even be deployed to Tomcat."
+msgstr ""
+"L'application exemple de réservation peut même être déployée sous Tomcat."
+
+#. Tag: title
+#: Configuration.xml:263
+#, no-c-format
+msgid "Installing the Embeddable EJB3 container"
+msgstr "Installer  le conteneur Embeddable EJB3"
+
+#. Tag: para
+#: Configuration.xml:264
+#, no-c-format
+msgid ""
+"Seam ships with a build of the Embeddable EJB3 container in the "
+"<literal>embedded-ejb</literal> directory. To use the Embeddable EJB3 "
+"container with Seam, add the <literal>embedded-ejb/conf</literal> directory, "
+"and all jars in the <literal>lib</literal> and <literal>embedded-ejb/lib</"
+"literal> directories to your classpath. Then, add the following line to "
+"<literal>components.xml</literal>:"
+msgstr ""
+"Seam est fourni avec le conteneur Embeddable EJB3 dans le "
+"répertoire<literal>embedded-ejb</literal>. Pour l'utiliser, ajouter le "
+"répertoire <literal>embedded-ejb/conf</literal>, ainsi que tous les jars "
+"présents dans les répertoires <literal>lib</literal> et <literal>embedded-"
+"ejb/lib</literal> dans votre chemin de classe. Enfin, ajoutez la ligne "
+"suivante dans <literal>components.xml</literal> :"
+
+#. Tag: programlisting
+#: Configuration.xml:267
+#, no-c-format
+msgid "&lt;core:ejb /&gt;"
+msgstr "&lt;core:ejb /&gt;"
+
+#. Tag: para
+#: Configuration.xml:268
+#, no-c-format
+msgid ""
+"This setting installs the built-in component named <literal>org.jboss.seam."
+"core.ejb</literal>. This component is responsible for bootstrapping the EJB "
+"container when Seam is started, and shutting it down when the web "
+"application is undeployed."
+msgstr ""
+"Ce paramètre installe le composant intégré, nommé<literal>org.jboss.seam."
+"core.ejb</literal>. Ce composant doit initialiser le conteneur EJB lorsque "
+"Seam démarre, et l'éteindre lorsque l'application web n'est plus déployée."
+
+#. Tag: title
+#: Configuration.xml:271
+#, no-c-format
+msgid "Configuring a datasource with the Embeddable EJB3 container"
+msgstr "Configurer une source de données avec le conteneur Embeddable EJB3"
+
+#. Tag: para
+#: Configuration.xml:272
+#, fuzzy, no-c-format
+msgid ""
+"You should refer to the Embeddable EJB3 container documentation for more "
+"information about configuring the container. You&#39;ll probably at least "
+"need to set up your own datasource. Embeddable EJB3 is implemented using the "
+"JBoss Microcontainer, so it&#39;s very easy to add new services to the "
+"minimal set of services provided by default. For example, I can add a new "
+"datasource by putting this <literal>jboss-beans.xml</literal> file in my "
+"classpath:"
+msgstr ""
+"Référez-vous à la documentation du conteneur Embeddable EJB3 pour plus "
+"d'informations sur sa configuration. Vous aurez certainement besoin de "
+"paramétrer votre propre source de données. Embeddable EJB3 est implémenté en "
+"utilisant le MicroConteneur JBoss. Par exemple, je peux ajouter une nouvelle "
+"source de données, en ajoutant ce fichier <literal>jboss-beans.xml</literal> "
+"dans mon chemin de classe :"
+
+#. Tag: programlisting
+#: Configuration.xml:275
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"\n"
+"&lt;deployment xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"urn:jboss:bean-deployer bean-deployer_1_0."
+"xsd\"\n"
+"            xmlns=\"urn:jboss:bean-deployer\"&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasourceBootstrap\"\n"
+"        class=\"org.jboss.resource.adapter.jdbc.local.LocalTxDataSource"
+"\"&gt;\n"
+"      &lt;property name=\"driverClass\"&gt;org.hsqldb.jdbcDriver&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"connectionURL\"&gt;jdbc:hsqldb:.&lt;/property&gt;\n"
+"      &lt;property name=\"userName\"&gt;sa&lt;/property&gt;\n"
+"      &lt;property name=\"jndiName\"&gt;java:/bookingDatasource&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"minSize\"&gt;0&lt;/property&gt;\n"
+"      &lt;property name=\"maxSize\"&gt;10&lt;/property&gt;\n"
+"      &lt;property name=\"blockingTimeout\"&gt;1000&lt;/property&gt;\n"
+"      &lt;property name=\"idleTimeout\"&gt;100000&lt;/property&gt;\n"
+"      &lt;property name=\"transactionManager\"&gt;\n"
+"        &lt;inject bean=\"TransactionManager\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"      &lt;property name=\"cachedConnectionManager\"&gt;\n"
+"        &lt;inject bean=\"CachedConnectionManager\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"      &lt;property name=\"initialContextProperties\"&gt;\n"
+"        &lt;inject bean=\"InitialContextProperties\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasource\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getDatasource\"&gt;\n"
+"         &lt;factory bean=\"bookingDatasourceBootstrap\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"&lt;/deployment&gt;"
+msgstr ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"\n"
+"&lt;deployment xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"urn:jboss:bean-deployer bean-deployer_1_0."
+"xsd\"\n"
+"            xmlns=\"urn:jboss:bean-deployer\"&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasourceBootstrap\"\n"
+"        class=\"org.jboss.resource.adapter.jdbc.local.LocalTxDataSource"
+"\"&gt;\n"
+"      &lt;property name=\"driverClass\"&gt;org.hsqldb.jdbcDriver&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"connectionURL\"&gt;jdbc:hsqldb:.&lt;/property&gt;\n"
+"      &lt;property name=\"userName\"&gt;sa&lt;/property&gt;\n"
+"      &lt;property name=\"jndiName\"&gt;java:/bookingDatasource&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"minSize\"&gt;0&lt;/property&gt;\n"
+"      &lt;property name=\"maxSize\"&gt;10&lt;/property&gt;\n"
+"      &lt;property name=\"blockingTimeout\"&gt;1000&lt;/property&gt;\n"
+"      &lt;property name=\"idleTimeout\"&gt;100000&lt;/property&gt;\n"
+"      &lt;property name=\"transactionManager\"&gt;\n"
+"        &lt;inject bean=\"TransactionManager\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"      &lt;property name=\"cachedConnectionManager\"&gt;\n"
+"        &lt;inject bean=\"CachedConnectionManager\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"      &lt;property name=\"initialContextProperties\"&gt;\n"
+"        &lt;inject bean=\"InitialContextProperties\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasource\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getDatasource\"&gt;\n"
+"         &lt;factory bean=\"bookingDatasourceBootstrap\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"&lt;/deployment&gt;"
+
+#. Tag: para
+#: Configuration.xml:277
+#, no-c-format
+msgid ""
+"The archive structure of a WAR-based deployment on an servlet engine like "
+"Tomcat will look something like this:"
+msgstr ""
+"La structure de l'archive basée sur WAR, déployée sur un moteur de servlet "
+"comme Tomcat ressemblera à ce qui suit :"
+
+#. Tag: programlisting
+#: Configuration.xml:280
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            myfaces-api.jar\n"
+"            myfaces-impl.jar\n"
+"            jboss-ejb3.jar\n"
+"            jboss-jca.jar\n"
+"            jboss-j2ee.jar\n"
+"            ...\n"
+"            mc-conf.jar/\n"
+"                ejb3-interceptors-aop.xml\n"
+"                embedded-jboss-beans.xml\n"
+"                default.persistence.properties\n"
+"                jndi.properties\n"
+"                login-config.xml\n"
+"                security-beans.xml\n"
+"                log4j.xml\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                    MANIFEST.MF\n"
+"                    persistence.xml\n"
+"                    jboss-beans.xml\n"
+"                log4j.xml\n"
+"                seam.properties\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            LoginBean.class\n"
+"                            Register.class\n"
+"                            RegisterBean.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            myfaces-api.jar\n"
+"            myfaces-impl.jar\n"
+"            jboss-ejb3.jar\n"
+"            jboss-jca.jar\n"
+"            jboss-j2ee.jar\n"
+"            ...\n"
+"            mc-conf.jar/\n"
+"                ejb3-interceptors-aop.xml\n"
+"                embedded-jboss-beans.xml\n"
+"                default.persistence.properties\n"
+"                jndi.properties\n"
+"                login-config.xml\n"
+"                security-beans.xml\n"
+"                log4j.xml\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                    MANIFEST.MF\n"
+"                    persistence.xml\n"
+"                    jboss-beans.xml\n"
+"                log4j.xml\n"
+"                seam.properties\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            LoginBean.class\n"
+"                            Register.class\n"
+"                            RegisterBean.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+
+#. Tag: para
+#: Configuration.xml:281
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>mc-conf.jar</literal> just contains the standard JBoss "
+"Microcontainer configuration files for Embeddable EJB3. You won&#39;t "
+"usually need to edit these files yourself."
+msgstr ""
+"<literal>mc-conf.jar</literal> ne contient que les fichiers de configuration "
+"standards du micro-conteneur JBoss pour Embeddable EJB3. Vous n'aurez pas à "
+"modifier ces fichiers vous-même."
+
+#. Tag: para
+#: Configuration.xml:284
+#, no-c-format
+msgid ""
+"Most of the Seam example applications may be deployed to Tomcat by running "
+"<literal>ant deploy.tomcat</literal>."
+msgstr ""
+"La plupart des applications exemples Seam peuvent être déployées sur Tomcat "
+"en exécutant <literal>ant deploy.tomcat</literal>."
+
+#. Tag: title
+#: Configuration.xml:287
+#, no-c-format
+msgid "Configuring Seam in J2EE"
+msgstr "Configurer Seam dans J2EE"
+
+#. Tag: para
+#: Configuration.xml:288
+#, fuzzy, no-c-format
+msgid ""
+"Seam is useful even if you&#39;re not yet ready to take the plunge into EJB "
+"3.0. In this case you would use Hibernate3 or JPA instead of EJB 3.0 "
+"persistence, and plain JavaBeans instead of session beans. You&#39;ll miss "
+"out on some of the nice features of session beans but it will be very easy "
+"to migrate to EJB 3.0 when you&#39;re ready and, in the meantime, you&#39;ll "
+"be able to take advantage of Seam&#39;s unique declarative state management "
+"architecture."
+msgstr ""
+"Seam est utile même si vous n'êtes pas prêt à vous lancer avec EJB 3.0. Dans "
+"ce cas vous utiliserez Hibernate 3 ou JPA au lieu de la persistance EJB 3.0, "
+"et de simples Javabeans au lieu de beans session. Vous ne pourrez utiliser "
+"certaines fonctionnalités cools des beans session mais il vous sera très "
+"facile de passer à EJB 3.0 lorsque vous serez prêt, entretemps, vous tirerez "
+"profit de l'architecture unique de gestion déclarative des états de Seam."
+
+#. Tag: para
+#: Configuration.xml:299
+#, no-c-format
+msgid ""
+"Seam JavaBean components do not provide declarative transaction demarcation "
+"like session beans do. You <emphasis>could</emphasis> manage your "
+"transactions manually using the JTA <literal>UserTransaction</literal> (you "
+"could even implement your own declarative transaction management in a Seam "
+"interceptor). But most applications will use Seam managed transactions when "
+"using Hibernate with JavaBeans. Follow the instructions in the persistence "
+"chapter to install <literal>TransactionalSeamPhaseListener</literal>."
+msgstr ""
+"Les composants JavaBean de Seam ne proposent pas de démarcation déclarative "
+"des transactions comme les beans session. Il est <emphasis>possible</"
+"emphasis> de gérer vos transactions manuellement en utilisant "
+"<literal>UserTransaction</literal> de JTA (vous pourriez même implémenter "
+"votre propre gestion de transactions déclarative dans un intercepteur Seam). "
+"Mais la plupart des applications utiliseront les transactions gérées par "
+"Seam lorsque vous utiliserez Hibernate avec des Javabeans. Suivez les "
+"instructions du chapitre sur la persistance pour installer "
+"<literal>TransactionalSeamPhaseListener</literal>."
+
+#. Tag: para
+#: Configuration.xml:302
+#, no-c-format
+msgid ""
+"The Seam distribution includes a version of the booking example application "
+"that uses Hibernate3 and JavaBeans instead of EJB3, and another version that "
+"uses JPA and JavaBeans. These example applications are ready to deploy into "
+"any J2EE application server."
+msgstr ""
+"La distribution Seam contient une version de l'application exemple de "
+"réservation qui utilise Hibernate 3 et des JavaBean au lieu d'EJB3, et une "
+"autre version utilisant JPA et des JavaBeans. Ces applications exemple sont "
+"prêtes à être déployées dans tout serveur d'applications J2EE."
+
+#. Tag: title
+#: Configuration.xml:305
+#, no-c-format
+msgid "Boostrapping Hibernate in Seam"
+msgstr "Initialiser Hibernate dans Seam"
+
+#. Tag: para
+#: Configuration.xml:306
+#, no-c-format
+msgid ""
+"Seam will bootstrap a Hibernate <literal>SessionFactory</literal> from your "
+"<literal>hibernate.cfg.xml</literal> file if you install a built-in "
+"component:"
+msgstr ""
+"Seam initialisera une <literal>SessionFactory</literal> Hibernate à partir "
+"du fichier <literal>hibernate.cfg.xml</literal> si vous installez le "
+"composant intégré :"
+
+#. Tag: programlisting
+#: Configuration.xml:309
+#, no-c-format
+msgid ""
+"&lt;core:hibernate-session-factory name=\"hibernateSessionFactory\"/&gt;"
+msgstr ""
+"&lt;core:hibernate-session-factory name=\"hibernateSessionFactory\"/&gt;"
+
+#. Tag: para
+#: Configuration.xml:310
+#, no-c-format
+msgid ""
+"You will also need to configure a <emphasis>managed session</emphasis> if "
+"you want a Seam managed Hibernate <literal>Session</literal> to be available "
+"via injection."
+msgstr ""
+"Vous devrez aussi configurer une <emphasis>session gérée</emphasis> si vous "
+"voulez qu'une <literal>Session</literal> Hibernate gérée par Seam soit "
+"disponible par injection."
+
+#. Tag: title
+#: Configuration.xml:313
+#, no-c-format
+msgid "Boostrapping JPA in Seam"
+msgstr "Initialiser JPA dans Seam"
+
+#. Tag: para
+#: Configuration.xml:314
+#, no-c-format
+msgid ""
+"Seam will bootstrap a JPA <literal>EntityManagerFactory</literal> from your "
+"<literal>persistence.xml</literal> file if you install this built-in "
+"component:"
+msgstr ""
+"Seam initialisera une <literal>EntityManagerFactory</literal> JPA à partir "
+"du fichier <literal>persistence.xml</literal> si vous installez le composant "
+"intégré :"
+
+#. Tag: programlisting
+#: Configuration.xml:317
+#, no-c-format
+msgid "&lt;core:entity-manager-factory name=\"entityManagerFactory\"/&gt;"
+msgstr "&lt;core:entity-manager-factory name=\"entityManagerFactory\"/&gt;"
+
+#. Tag: para
+#: Configuration.xml:318
+#, no-c-format
+msgid ""
+"You will also need to configure a <emphasis>managed persistencece context</"
+"emphasis> if you want a Seam managed JPA <literal>EntityManager</literal> to "
+"be available via injection."
+msgstr ""
+"Il faudra également configurer <emphasis>un contexte de persistance géré</"
+"emphasis> si vous souhaitez qu'un <literal>EntityManager</literal> géré par "
+"Seam soit disponible par injection."
+
+#. Tag: para
+#: Configuration.xml:322
+#, no-c-format
+msgid "We can package our application as a WAR, in the following structure:"
+msgstr ""
+"Nous pouvons empaqueter notre application comme un WAR, dans la structure "
+"suivante :"
+
+#. Tag: programlisting
+#: Configuration.xml:325
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            hibernate3.jar\n"
+"            hibernate-annotations.jar\n"
+"            ...\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                   MANIFEST.MF\n"
+"                seam.properties\n"
+"                hibernate.cfg.xml\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            Register.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            hibernate3.jar\n"
+"            hibernate-annotations.jar\n"
+"            ...\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                   MANIFEST.MF\n"
+"                seam.properties\n"
+"                hibernate.cfg.xml\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            Register.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+
+#. Tag: para
+#: Configuration.xml:326
+#, no-c-format
+msgid ""
+"If we want to deploy Hibernate in a non-J2EE environment like Tomcat or "
+"TestNG, we need to do a little bit more work."
+msgstr ""
+"Si nous voulons déployer Hibernate dans un environnement non J2EE comme "
+"Tomcat ou TestNG, cela nécessite un peu plus d'effort. "
+
+#. Tag: title
+#: Configuration.xml:330
+#, no-c-format
+msgid "Configuring Seam in Java SE, with the JBoss Microcontainer"
+msgstr "Configurer Seam dans Java SE, avec le JBoss Microcontainer"
+
+#. Tag: para
+#: Configuration.xml:331
+#, no-c-format
+msgid ""
+"The Seam support for Hibernate and JPA requires JTA and a JCA datasource. If "
+"you are running in a non-EE environment like Tomcat or TestNG you can run "
+"these services, and Hibernate itself, in the JBoss Microcontainer."
+msgstr ""
+"Le support de Hibernate et JPA dans Seam exigent JTA et une source de "
+"données JCA. Si vous exécutez dans un environnement non-EE comme Tomcat ou "
+"TestNG, vous pouvez exécuter ces services, et Hibernate lui-même, dans le "
+"micro-conteneur JBoss."
+
+#. Tag: para
+#: Configuration.xml:334
+#, no-c-format
+msgid ""
+"You can even deploy the Hibernate and JPA versions of the booking example in "
+"Tomcat."
+msgstr ""
+"Vous pouvez même déployer les versions Hibernate et JPA de l'exemple de "
+"réservation dans Tomcat."
+
+#. Tag: para
+#: Configuration.xml:345
+#, no-c-format
+msgid ""
+"Seam ships with an example Microcontainer configuration in "
+"<literal>microcontainer/conf/jboss-beans.xml</literal> that provides all the "
+"things you need to run Seam with Hibernate in any non-EE environment. Just "
+"add the <literal>microcontainer/conf</literal> directory, and all jars in "
+"the <literal>lib</literal> and <literal>microcontainer/lib</literal> "
+"directories to your classpath. Refer to the documentation for the JBoss "
+"Microcontainer for more information."
+msgstr ""
+"Seam est fourni avec un exemple de configuration du micro-conteneur dans "
+"<literal>microcontainer/conf/jboss-beans.xml</literal> qui fournit tout ce "
+"dont vous avez besoin pour exécuter Seam avec Hibernate dans n'importe quel "
+"environnement non-EE. Ajoutez juste le répertoire <literal>microcontainer/"
+"conf</literal>, et tous les jars présents dans les répertoires <literal>lib</"
+"literal> et <literal>microcontainer/lib</literal> dans votre chemin de "
+"classe. Consultez la documentation du micro-conteneur JBoss pour plus "
+"d'informations."
+
+#. Tag: title
+#: Configuration.xml:348
+#, no-c-format
+msgid "Using Hibernate and the JBoss Microcontainer"
+msgstr "Utiliser Hibernate et le micro-conteneur JBoss"
+
+#. Tag: para
+#: Configuration.xml:349
+#, no-c-format
+msgid ""
+"The built-in Seam component named <literal>org.jboss.seam.core."
+"microcontainer</literal> bootstraps the microcontainer. As before, we "
+"probably want to use a Seam managed session."
+msgstr ""
+"Le composant intégré de Seam, appelé <literal>org.jboss.seam.core."
+"microcontainer</literal> initialise le micro-conteneur. Comme avant, nous "
+"souhaiterons probablement utiliser une session gérée par Seam."
+
+#. Tag: programlisting
+#: Configuration.xml:352
+#, no-c-format
+msgid ""
+"&lt;core:microcontainer/&gt;\n"
+"\n"
+"&lt;core:managed-hibernate-session name=\"bookingDatabase\" auto-create="
+"\"true\"\n"
+"    session-factory-jndi-name=\"java:/bookingSessionFactory\"/&gt;"
+msgstr ""
+"&lt;core:microcontainer/&gt;\n"
+"\n"
+"&lt;core:managed-hibernate-session name=\"bookingDatabase\" auto-create="
+"\"true\"\n"
+"    session-factory-jndi-name=\"java:/bookingSessionFactory\"/&gt;"
+
+#. Tag: para
+#: Configuration.xml:353
+#, no-c-format
+msgid ""
+"Where <literal>java:/bookingSessionFactory</literal> is the name of the "
+"Hibernate session factory specified in <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+"Où <literal>java:/bookingSessionFactory</literal> est le nom de la "
+"sessionfactory Hibernate, spécifiée dans <literal>hibernate.cfg.xml</"
+"literal>."
+
+#. Tag: para
+#: Configuration.xml:356
+#, fuzzy, no-c-format
+msgid ""
+"You&#39;ll need to provide a <literal>jboss-beans.xml</literal> file that "
+"installs JNDI, JTA, your JCA datasource and Hibernate into the "
+"microcontainer:"
+msgstr ""
+"Il faudra fournir un fichier <literal>jboss-beans.xml</literal> qui installe "
+"JNDI, JTA, votre source de données JCA et Hibernate dans le micro-conteneur :"
+
+#. Tag: programlisting
+#: Configuration.xml:359
+#, fuzzy, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"\n"
+"&lt;deployment xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"urn:jboss:bean-deployer bean-deployer_1_0."
+"xsd\"\n"
+"            xmlns=\"urn:jboss:bean-deployer\"&gt;\n"
+"\n"
+"   &lt;bean name=\"Naming\" class=\"org.jnp.server.SingletonNamingServer\"/"
+"&gt;\n"
+"\n"
+"   &lt;bean name=\"TransactionManagerFactory\" \n"
+"      class=\"org.jboss.seam.microcontainer.TransactionManagerFactory\"/"
+"&gt;\n"
+"   &lt;bean name=\"TransactionManager\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getTransactionManager\"&gt;\n"
+"         &lt;factory bean=\"TransactionManagerFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasourceFactory\" class=\"org.jboss.seam."
+"microcontainer.DataSourceFactory\"&gt;\n"
+"      &lt;property name=\"driverClass\"&gt;org.hsqldb.jdbcDriver&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"connectionUrl\"&gt;jdbc:hsqldb:.&lt;/property&gt;\n"
+"      &lt;property name=\"userName\"&gt;sa&lt;/property&gt;\n"
+"      &lt;property name=\"jndiName\"&gt;java:/hibernateDatasource&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"minSize\"&gt;0&lt;/property&gt;\n"
+"      &lt;property name=\"maxSize\"&gt;10&lt;/property&gt;\n"
+"      &lt;property name=\"blockingTimeout\"&gt;1000&lt;/property&gt;\n"
+"      &lt;property name=\"idleTimeout\"&gt;100000&lt;/property&gt;\n"
+"      &lt;property name=\"transactionManager\"&gt;&lt;inject bean="
+"\"TransactionManager\"/&gt;&lt;/property&gt;\n"
+"   &lt;/bean&gt;\n"
+"   &lt;bean name=\"bookingDatasource\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getDataSource\"&gt;\n"
+"         &lt;factory bean=\"bookingDatasourceFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingSessionFactoryFactory\" \n"
+"      class=\"org.jboss.seam.microcontainer.HibernateFactory\"/&gt;\n"
+"   &lt;bean name=\"bookingSessionFactory\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getSessionFactory\"&gt;\n"
+"         &lt;factory bean=\"bookingSessionFactoryFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"      &lt;depends&gt;bookingDatasource&lt;/depends&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"&lt;/deployment&gt;"
+msgstr ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"\n"
+"&lt;deployment xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"urn:jboss:bean-deployer bean-deployer_1_0."
+"xsd\"\n"
+"            xmlns=\"urn:jboss:bean-deployer\"&gt;\n"
+"\n"
+"   &lt;bean name=\"Naming\" class=\"org.jnp.server.SingletonNamingServer\"/"
+"&gt;\n"
+"\n"
+"   &lt;bean name=\"TransactionManagerFactory\"\n"
+"       class=\"org.jboss.seam.microcontainer.TransactionManagerFactory\"/"
+"&gt;\n"
+"   &lt;bean name=\"TransactionManager\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getTransactionManager\"&gt;\n"
+"         &lt;factory bean=\"TransactionManagerFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasourceFactory\" class=\"org.jboss.seam."
+"microcontainer.DataSourceFactory\"&gt;\n"
+"      &lt;property name=\"driverClass\"&gt;org.hsqldb.jdbcDriver&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"connectionUrl\"&gt;jdbc:hsqldb:.&lt;/property&gt;\n"
+"      &lt;property name=\"userName\"&gt;sa&lt;/property&gt;\n"
+"      &lt;property name=\"jndiName\"&gt;java:/hibernateDatasource&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"minSize\"&gt;0&lt;/property&gt;\n"
+"      &lt;property name=\"maxSize\"&gt;10&lt;/property&gt;\n"
+"      &lt;property name=\"blockingTimeout\"&gt;1000&lt;/property&gt;\n"
+"      &lt;property name=\"idleTimeout\"&gt;100000&lt;/property&gt;\n"
+"      &lt;property name=\"transactionManager\"&gt;&lt;inject bean="
+"\"TransactionManager\"/&gt;&lt;/property&gt;\n"
+"   &lt;/bean&gt;\n"
+"   &lt;bean name=\"bookingDatasource\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getDataSource\"&gt;\n"
+"         &lt;factory bean=\"bookingDatasourceFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingSessionFactoryFactory\"\n"
+"       class=\"org.jboss.seam.microcontainer.HibernateFactory\"/&gt;\n"
+"   &lt;bean name=\"bookingSessionFactory\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getSessionFactory\"&gt;\n"
+"         &lt;factory bean=\"bookingSessionFactoryFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"      &lt;depends&gt;bookingDatasource&lt;/depends&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"&lt;/deployment&gt;"
+
+#. Tag: para
+#: Configuration.xml:361
+#, no-c-format
+msgid "The WAR could have the following structure:"
+msgstr "Le WAR peut avoir la structure suivante :"
+
+#. Tag: programlisting
+#: Configuration.xml:364
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            hibernate3.jar\n"
+"            ...\n"
+"            jboss-microcontainer.jar\n"
+"            jboss-jca.jar\n"
+"            ...\n"
+"            myfaces-api.jar\n"
+"            myfaces-impl.jar\n"
+"            mc-conf.jar/\n"
+"                jndi.properties\n"
+"                log4j.xml\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                    MANIFEST.MF\n"
+"                    jboss-beans.xml\n"
+"                seam.properties\n"
+"                hibernate.cfg.xml\n"
+"                log4j.xml\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            Register.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            hibernate3.jar\n"
+"            ...\n"
+"            jboss-microcontainer.jar\n"
+"            jboss-jca.jar\n"
+"            ...\n"
+"            myfaces-api.jar\n"
+"            myfaces-impl.jar\n"
+"            mc-conf.jar/\n"
+"                jndi.properties\n"
+"                log4j.xml\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                    MANIFEST.MF\n"
+"                    jboss-beans.xml\n"
+"                seam.properties\n"
+"                hibernate.cfg.xml\n"
+"                log4j.xml\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            Register.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+
+#. Tag: title
+#: Configuration.xml:365
+#, no-c-format
+msgid "Configuring jBPM in Seam"
+msgstr "Configurer jBPM dans Seam"
+
+#. Tag: para
+#: Configuration.xml:366
+#, fuzzy, no-c-format
+msgid ""
+"Seam&#39;s jBPM integration is not installed by default, so you&#39;ll need "
+"to enable jBPM by installing a built-in component. You&#39;ll also need to "
+"explicitly list your process and pageflow definitions. In "
+"<literal>components.xml</literal>:"
+msgstr ""
+"L'intégration de jBPM n'est pas installée par défaut, il faudra donc activer "
+"jBPM en installant le composant intégré. Listez également explicitement vos "
+"définitions de processus et de flux de page dans <literal>components.xml</"
+"literal>:"
+
+#. Tag: programlisting
+#: Configuration.xml:369
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:pageflow-definitions&gt;\n"
+"        &lt;value&gt;createDocument.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;editDocument.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;approveDocument.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:pageflow-definitions&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;documentLifecycle.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:pageflow-definitions&gt;\n"
+"        &lt;value&gt;createDocument.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;editDocument.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;approveDocument.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:pageflow-definitions&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;documentLifecycle.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+
+#. Tag: para
+#: Configuration.xml:370
+#, no-c-format
+msgid ""
+"No further special configuration is needed if you only have pageflows. If "
+"you do have business process definitions, you need to provide a jBPM "
+"configuration, and a Hibernate configuration for jBPM. The Seam DVD Store "
+"demo includes example <literal>jbpm.cfg.xml</literal> and <literal>hibernate."
+"cfg.xml</literal> files that will work with Seam:"
+msgstr ""
+"Une configuration spéciale supplémentaire n'est pas nécessaire si vous "
+"n'avez que des flux de page. Si vous avez des définitions de processus "
+"métier, vous devez fournir une configuration jBPM, et une configuration "
+"Hibernate pour jBPM. La démonstration magasin de DVD de Seam inclut un "
+"exemple de fichiers <literal>jbpm.cfg.xml</literal> et <literal>hibernate."
+"cfg.xml</literal> qui foncitonneront avec Seam :"
+
+#. Tag: programlisting
+#: Configuration.xml:373
+#, fuzzy, no-c-format
+msgid ""
+"&lt;jbpm-configuration&gt;\n"
+"\n"
+"  &lt;jbpm-context&gt;\n"
+"    &lt;service name=\"persistence\"&gt;\n"
+"       &lt;factory&gt;\n"
+"          &lt;bean class=\"org.jbpm.persistence.db."
+"DbPersistenceServiceFactory\"&gt;\n"
+"             &lt;field name=\"isTransactionEnabled\"&gt;&lt;false/&gt;&lt;/"
+"field&gt;\n"
+"          &lt;/bean&gt;\n"
+"       &lt;/factory&gt;\n"
+"    &lt;/service&gt;\n"
+"    &lt;service name=\"message\" factory=\"org.jbpm.msg.db."
+"DbMessageServiceFactory\" /&gt;\n"
+"    &lt;service name=\"scheduler\" factory=\"org.jbpm.scheduler.db."
+"DbSchedulerServiceFactory\" /&gt;\n"
+"    &lt;service name=\"logging\" factory=\"org.jbpm.logging.db."
+"DbLoggingServiceFactory\" /&gt;\n"
+"    &lt;service name=\"authentication\" \n"
+"       factory=\"org.jbpm.security.authentication."
+"DefaultAuthenticationServiceFactory\" /&gt;\n"
+"  &lt;/jbpm-context&gt;\n"
+"\n"
+"&lt;/jbpm-configuration&gt;"
+msgstr ""
+"&lt;jbpm-configuration&gt;\n"
+"\n"
+"  &lt;jbpm-context&gt;\n"
+"    &lt;service name=\"persistence\"&gt;\n"
+"       &lt;factory&gt;\n"
+"          &lt;bean class=\"org.jbpm.persistence.db."
+"DbPersistenceServiceFactory\"&gt;\n"
+"             &lt;field name=\"isTransactionEnabled\"&gt;&lt;false/&gt;&lt;/"
+"field&gt;\n"
+"          &lt;/bean&gt;\n"
+"       &lt;/factory&gt;\n"
+"    &lt;/service&gt;\n"
+"    &lt;service name=\"message\" factory=\"org.jbpm.msg.db."
+"DbMessageServiceFactory\" /&gt;\n"
+"    &lt;service name=\"scheduler\" factory=\"org.jbpm.scheduler.db."
+"DbSchedulerServiceFactory\" /&gt;\n"
+"    &lt;service name=\"logging\" factory=\"org.jbpm.logging.db."
+"DbLoggingServiceFactory\" /&gt;\n"
+"    &lt;service name=\"authentication\" \n"
+"        factory=\"org.jbpm.security.authentication."
+"DefaultAuthenticationServiceFactory\" /&gt;\n"
+"  &lt;/jbpm-context&gt;\n"
+"\n"
+"&lt;/jbpm-configuration&gt;"
+
+#. Tag: para
+#: Configuration.xml:374
+#, no-c-format
+msgid ""
+"The most important thing to notice here is that jBPM transaction control is "
+"disabled. Seam or EJB3 should control the JTA transactions."
+msgstr ""
+"La chose la plus importante est que le contrôle des transactions jBPM est "
+"désactivé. Seam ou EJB3 devrait contrôler les transactions JTA."
+
+#. Tag: para
+#: Configuration.xml:378
+#, fuzzy, no-c-format
+msgid ""
+"There is not yet any well-defined packaging format for jBPM configuration "
+"and process/pageflow definition files. In the Seam examples we&#39;ve "
+"decided to simply package all these files into the root of the EAR. In "
+"future, we will probably design some other standard packaging format. So the "
+"EAR looks something like this:"
+msgstr ""
+"Il n'y a pas encore de format d'empaquetage bien défini pour les fichiers de "
+"configuration et les définitions de processus/flux de page. Dans les "
+"exemples Seam, nous avons décidé de simplifier l'empaquetage de tous ces "
+"fichiers et de les mettre à la racine de l'EAR. Plus tard, nous créerons "
+"sans doute une autre conception standard de l'empaquetage. Ainsi le EAR "
+"ressemble à ce qui suit :"
+
+#. Tag: programlisting
+#: Configuration.xml:381
+#, no-c-format
+msgid ""
+"my-application.ear/\n"
+"    jboss-seam.jar\n"
+"    el-api.jar\n"
+"    el-ri.jar\n"
+"    jbpm-3.1.jar\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"        application.xml\n"
+"    my-application.war/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"        WEB-INF/\n"
+"            web.xml\n"
+"            components.xml\n"
+"            faces-config.xml\n"
+"            lib/\n"
+"                jsf-facelets.jar\n"
+"                jboss-seam-ui.jar\n"
+"        login.jsp\n"
+"        register.jsp\n"
+"        ...\n"
+"    my-application.jar/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"            persistence.xml\n"
+"        seam.properties\n"
+"        org/\n"
+"            jboss/\n"
+"                myapplication/\n"
+"                    User.class\n"
+"                    Login.class\n"
+"                    LoginBean.class\n"
+"                    Register.class\n"
+"                    RegisterBean.class\n"
+"                    ...\n"
+"    jbpm.cfg.xml\n"
+"    hibernate.cfg.xml\n"
+"    createDocument.jpdl.xml\n"
+"    editDocument.jpdl.xml\n"
+"    approveDocument.jpdl.xml\n"
+"    documentLifecycle.jpdl.xml"
+msgstr ""
+"my-application.ear/\n"
+"    jboss-seam.jar\n"
+"    el-api.jar\n"
+"    el-ri.jar\n"
+"    jbpm-3.1.jar\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"        application.xml\n"
+"    my-application.war/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"        WEB-INF/\n"
+"            web.xml\n"
+"            components.xml\n"
+"            faces-config.xml\n"
+"            lib/\n"
+"                jsf-facelets.jar\n"
+"                jboss-seam-ui.jar\n"
+"        login.jsp\n"
+"        register.jsp\n"
+"        ...\n"
+"    my-application.jar/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"            persistence.xml\n"
+"        seam.properties\n"
+"        org/\n"
+"            jboss/\n"
+"                myapplication/\n"
+"                    User.class\n"
+"                    Login.class\n"
+"                    LoginBean.class\n"
+"                    Register.class\n"
+"                    RegisterBean.class\n"
+"                    ...\n"
+"    jbpm.cfg.xml\n"
+"    hibernate.cfg.xml\n"
+"    createDocument.jpdl.xml\n"
+"    editDocument.jpdl.xml\n"
+"    approveDocument.jpdl.xml\n"
+"    documentLifecycle.jpdl.xml"
+
+#. Tag: para
+#: Configuration.xml:382
+#, no-c-format
+msgid ""
+"Remember to add <literal>jbpm-3.1.jar</literal> to the manifest of your EJB-"
+"JAR and WAR."
+msgstr ""
+"Pensez à ajouter <literal>jbpm-3.1.jar</literal> dans le manifeste de vos "
+"EJB-JAR et WAR."
+
+#. Tag: title
+#: Configuration.xml:385
+#, no-c-format
+msgid "Configuring Seam in a Portal"
+msgstr "Configurer Seam dans un portail"
+
+#. Tag: para
+#: Configuration.xml:386
+#, fuzzy, no-c-format
+msgid ""
+"To run a Seam application as a portlet, you&#39;ll need to provide certain "
+"portlet metadata (<literal>portlet.xml</literal>, etc) in addition to the "
+"usual Java EE metadata. See the <literal>examples/portal</literal> directory "
+"for an example of the booking demo preconfigured to run on JBoss Portal."
+msgstr ""
+"Pour exécuter une application Seam comme portlet, il faudra fournir "
+"certaines métadonnées de portlet (<literal>portlet.xml</literal>, etc) en "
+"plus des habituelles métadonnées Java EE. Voir le répertoire "
+"<literal>examples/portal</literal> pour un exemple de la démonstration de "
+"réservation pré-configurée, à éxécuter dans JBoss Portal."
+
+#. Tag: para
+#: Configuration.xml:389
+#, fuzzy, no-c-format
+msgid ""
+"In addition, you&#39;ll need to use a portlet-specific phase listener "
+"instead of <literal>SeamPhaseListener</literal> or "
+"<literal>TransactionalSeamPhaseListener</literal>. The "
+"<literal>SeamPortletPhaseListener</literal> and "
+"<literal>TransactionalSeamPortletPhaseListener</literal> are adapted to the "
+"portlet lifecycle. I would like to offer my sincerest apologies for the name "
+"of that last class. I really couldn&#39;t think of anything better. Sorry."
+msgstr ""
+"Par ailleurs, il faudra utiliser un listener de phase, spécifique aux "
+"portails au lieu de <literal>SeamPhaseListener</literal> ou de "
+"<literal>TransactionalSeamPhaseListener</literal>. Les "
+"<literal>SeamPortletPhaseListener</literal> et "
+"<literal>TransactionalSeamPortletPhaseListener</literal> sont adaptés au "
+"cycle de vie d'un portlet. Pardonnez-moi le nom de cette dernière classe. Je "
+"ne suis pas arrivé à trouver quelque chose de plus approprié."
+
+#. Tag: title
+#: Configuration.xml:392
+#, no-c-format
+msgid "Configuring SFSB and Session Timeouts in JBoss AS"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:393
+#, no-c-format
+msgid ""
+"It is very important that the timeout for Stateful Session Beans is set "
+"higher than the timeout for HTTP Sessions, otherwise SFSB&#39;s may time out "
+"before the user&#39;s HTTP session has ended. JBoss Application Server has a "
+"default session bean timeout of 30 minutes, which is configured in "
+"<literal>server/default/conf/standardjboss.xml</literal> (replace "
+"<emphasis>default</emphasis> with your own configuration)."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:396
+#, no-c-format
+msgid ""
+"The default SFSB timeout can be adjusted by modifying the value of "
+"<literal>max-bean-life</literal> in the "
+"<literal>LRUStatefulContextCachePolicy</literal> cache configuration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:399
+#, no-c-format
+msgid ""
+"&lt;container-cache-conf&gt;\n"
+"        &lt;cache-policy&gt;org.jboss.ejb.plugins."
+"LRUStatefulContextCachePolicy&lt;/cache-policy&gt;\n"
+"        &lt;cache-policy-conf&gt;\n"
+"          &lt;min-capacity&gt;50&lt;/min-capacity&gt;\n"
+"          &lt;max-capacity&gt;1000000&lt;/max-capacity&gt;\n"
+"          &lt;remover-period&gt;1800&lt;/remover-period&gt;\n"
+"\n"
+"          &lt;!-- SFSB timeout in seconds; 1800 seconds == 30 minutes --"
+"&gt;\n"
+"          &lt;max-bean-life&gt;1800&lt;/max-bean-life&gt;  \n"
+"          \n"
+"          &lt;overager-period&gt;300&lt;/overager-period&gt;\n"
+"          &lt;max-bean-age&gt;600&lt;/max-bean-age&gt;\n"
+"          &lt;resizer-period&gt;400&lt;/resizer-period&gt;\n"
+"          &lt;max-cache-miss-period&gt;60&lt;/max-cache-miss-period&gt;\n"
+"          &lt;min-cache-miss-period&gt;1&lt;/min-cache-miss-period&gt;\n"
+"          &lt;cache-load-factor&gt;0.75&lt;/cache-load-factor&gt;\n"
+"        &lt;/cache-policy-conf&gt;\n"
+"      &lt;/container-cache-conf&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:400
+#, no-c-format
+msgid ""
+"The default HTTP session timeout can be modified in <literal>server/default/"
+"deploy/jbossweb-tomcat55.sar/conf/web.xml</literal> for JBoss 4.0.x, or in "
+"<literal>server/default/deploy/jboss-web.deployer/conf/web.xml</literal> for "
+"JBoss 4.2.x. The following entry in this file controls the default session "
+"timeout for all web applications:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:403
+#, no-c-format
+msgid ""
+"&lt;session-config&gt;\n"
+"      &lt;!-- HTTP Session timeout, in minutes --&gt;\n"
+"      &lt;session-timeout&gt;30&lt;/session-timeout&gt;\n"
+"   &lt;/session-config&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:404
+#, no-c-format
+msgid ""
+"To override this value for your own application, simply include this entry "
+"in your application&#39;s own <literal>web.xml</literal>."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Controls.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Controls.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Controls.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1333 @@
+# translation of Controls.po to french
+# myriam malga <mmalga at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Controls\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2007-08-03 16:50+1000\n"
+"Last-Translator: myriam malga <mmalga at redhat.com>\n"
+"Language-Team: french\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Controls.xml:6
+#, no-c-format
+msgid "Seam JSF controls"
+msgstr "Contrôles JSF de Seam "
+
+#. Tag: para
+#: Controls.xml:7
+#, no-c-format
+msgid ""
+"Seam includes a number of JSF controls that are useful for working with "
+"Seam. These are intended to complement the built-in JSF controls, and "
+"controls from other third-party libraries. We recommend the Ajax4JSF and ADF "
+"faces (now Trinidad) tag libraries for use with Seam. We do not recommend "
+"the use of the Tomahawk tag library."
+msgstr ""
+"Seam inclut des contrôles JSF qui sont utiles pour travailler avec Seam. Ils "
+"sont un complément aux contrôles intégrés de JSF et d'autres bibliothèques "
+"annexes. Nous recommandons les bibliothèques de balises Ajax4JSF et ADF "
+"faces (Trinidad) pour l'utilisation avec Seam. Nous déconseillons "
+"l'utilisation de la bibliothèque de balises Tomahawk."
+
+#. Tag: para
+#: Controls.xml:10
+#, no-c-format
+msgid ""
+"To use these controls, define the \"<literal>s</literal>\" namespace in your "
+"page as follows (facelets only):"
+msgstr ""
+
+#. Tag: programlisting
+#: Controls.xml:13
+#, no-c-format
+msgid ""
+"&lt;html xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"      xmlns:s=\"http://jboss.com/products/seam/taglib\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:14
+#, no-c-format
+msgid "The ui example demonstrates the use of a number of these tags."
+msgstr "L'exemple ui démontre l'utilisation de plusieurs de ces balises."
+
+#. Tag: title
+#: Controls.xml:18
+#, fuzzy, no-c-format
+msgid "Seam JSF Control Reference"
+msgstr "Contrôles JSF de Seam "
+
+#. Tag: literal
+#: Controls.xml:26
+#, no-c-format
+msgid "&lt;s:validate&gt;"
+msgstr "&lt;s:validate&gt;"
+
+#. Tag: emphasis
+#: Controls.xml:31 Controls.xml:56 Controls.xml:81 Controls.xml:121
+#: Controls.xml:146 Controls.xml:171 Controls.xml:203 Controls.xml:239
+#: Controls.xml:295 Controls.xml:396 Controls.xml:423 Controls.xml:477
+#: Controls.xml:504 Controls.xml:531 Controls.xml:558 Controls.xml:585
+#: Controls.xml:626 Controls.xml:687 Controls.xml:748 Controls.xml:901
+#: Controls.xml:937 Controls.xml:964 Controls.xml:991
+#, no-c-format
+msgid "Description"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:33
+#, fuzzy, no-c-format
+msgid ""
+"A non-visual control, validates a JSF input field against the bound property "
+"using Hibernate Validator."
+msgstr ""
+"Valide un champ d'entrée JSF contre la propriété à laquelle il est lié, en "
+"utilisant Hibernate Validator."
+
+#. Tag: emphasis
+#: Controls.xml:37 Controls.xml:62 Controls.xml:87 Controls.xml:127
+#: Controls.xml:152 Controls.xml:180 Controls.xml:209 Controls.xml:245
+#: Controls.xml:304 Controls.xml:402 Controls.xml:448 Controls.xml:483
+#: Controls.xml:510 Controls.xml:537 Controls.xml:564 Controls.xml:591
+#: Controls.xml:632 Controls.xml:693 Controls.xml:754 Controls.xml:907
+#: Controls.xml:943 Controls.xml:970 Controls.xml:1024
+#, no-c-format
+msgid "Attributes"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:39 Controls.xml:64 Controls.xml:129 Controls.xml:154
+#: Controls.xml:182 Controls.xml:404 Controls.xml:450 Controls.xml:485
+#: Controls.xml:512 Controls.xml:539 Controls.xml:566 Controls.xml:945
+#: Controls.xml:972
+#, no-c-format
+msgid "None."
+msgstr ""
+
+#. Tag: emphasis
+#: Controls.xml:43 Controls.xml:68 Controls.xml:97 Controls.xml:133
+#: Controls.xml:158 Controls.xml:190 Controls.xml:224 Controls.xml:280
+#: Controls.xml:381 Controls.xml:408 Controls.xml:454 Controls.xml:489
+#: Controls.xml:516 Controls.xml:543 Controls.xml:570 Controls.xml:611
+#: Controls.xml:672 Controls.xml:733 Controls.xml:779 Controls.xml:922
+#: Controls.xml:949 Controls.xml:976 Controls.xml:1059
+#, no-c-format
+msgid "Usage"
+msgstr ""
+
+#. Tag: programlisting
+#: Controls.xml:45
+#, no-c-format
+msgid ""
+"&lt;h:inputText id=\"userName\" required=\"true\" value=\"#{customer."
+"userName}\"&gt;\n"
+"  &lt;s:validate /&gt;\n"
+"&lt;/h:inputText&gt;\n"
+"&lt;h:message for=\"userName\" styleClass=\"error\" /&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:51
+#, no-c-format
+msgid "&lt;s:validateAll&gt;"
+msgstr "&lt;s:validateAll&gt;"
+
+#. Tag: para
+#: Controls.xml:58
+#, fuzzy, no-c-format
+msgid ""
+"A non-visual control, validates all child JSF input fields against their "
+"bound properties using Hibernate Validator."
+msgstr ""
+"Valide tous les champs enfants de l'entrée JSF contre la propriété à "
+"laquelle il est lié, en utilisant Hibernate Validator."
+
+#. Tag: programlisting
+#: Controls.xml:70
+#, no-c-format
+msgid ""
+"&lt;s:validateAll&gt;\n"
+"  &lt;div class=\"entry\"&gt;\n"
+"    &lt;h:outputLabel for=\"username\"&gt;Username:&lt;/h:outputLabel&gt;\n"
+"    &lt;h:inputText id=\"username\" value=\"#{user.username}\" required="
+"\"true\"/&gt;\n"
+"    &lt;h:message for=\"username\" styleClass=\"error\" /&gt;\n"
+"  &lt;/div&gt;\n"
+"  &lt;div class=\"entry\"&gt;\n"
+"    &lt;h:outputLabel for=\"password\"&gt;Password:&lt;/h:outputLabel&gt;\n"
+"    &lt;h:inputSecret id=\"password\" value=\"#{user.password}\" required="
+"\"true\"/&gt;\n"
+"    &lt;h:message for=\"password\" styleClass=\"error\" /&gt;\n"
+"  &lt;/div&gt;\n"
+"  &lt;div class=\"entry\"&gt;\n"
+"    &lt;h:outputLabel for=\"verify\"&gt;Verify Password:&lt;/h:"
+"outputLabel&gt;\n"
+"    &lt;h:inputSecret id=\"verify\" value=\"#{register.verify}\" required="
+"\"true\"/&gt;\n"
+"    &lt;h:message for=\"verify\" styleClass=\"error\" /&gt;\n"
+"  &lt;/div&gt;\n"
+"&lt;/s:validateAll&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:76
+#, no-c-format
+msgid "&lt;s:formattedText&gt;"
+msgstr "&lt;s:formattedText&gt;"
+
+#. Tag: para
+#: Controls.xml:83
+#, no-c-format
+msgid ""
+"Outputs <emphasis>Seam Text</emphasis>, a rich text markup useful for blogs, "
+"wikis and other applications that might use rich text. See the Seam Text "
+"chapter for full usage."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:91
+#, fuzzy, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; an EL expression specifying the rich text "
+"markup to render."
+msgstr ""
+"<literal>value</literal> - une expression EL qui spécifie les données, "
+"supportant le <literal>List&lt;SelectItem&gt;</literal>"
+
+#. Tag: programlisting
+#: Controls.xml:99
+#, fuzzy, no-c-format
+msgid "&lt;s:formattedText value=\"#{blog.text}\"/&gt;"
+msgstr "&lt;s:formattedText&gt;"
+
+#. Tag: emphasis
+#: Controls.xml:101 Controls.xml:785
+#, no-c-format
+msgid "Example"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:116
+#, no-c-format
+msgid "&lt;s:convertDateTime&gt;"
+msgstr "&lt;s:convertDateTime&gt;"
+
+#. Tag: para
+#: Controls.xml:123
+#, no-c-format
+msgid "Perform date or time conversions in the Seam timezone."
+msgstr ""
+"Effectue des conversions de date et heure dans le fuseau horaire de Seam."
+
+#. Tag: literal
+#: Controls.xml:141
+#, no-c-format
+msgid "&lt;s:convertEnum&gt;"
+msgstr "&lt;s:convertEnum&gt;"
+
+#. Tag: para
+#: Controls.xml:148
+#, no-c-format
+msgid ""
+"Assigns an enum converter to the current component. This is primarily useful "
+"for radio button and dropdown controls."
+msgstr ""
+"Assigne un convertisseur enum au composant courant. Cela est essentiellement "
+"utile pour le bouton radio et les contrôles déroulants. "
+
+#. Tag: literal
+#: Controls.xml:166
+#, fuzzy, no-c-format
+msgid "&lt;s:convertEntity&gt;"
+msgstr "&lt;s:convertEnum&gt;"
+
+#. Tag: para
+#: Controls.xml:173
+#, fuzzy, no-c-format
+msgid ""
+"Assigns an entity converter to the current component. This is primarily "
+"useful for radio button and dropdown controls."
+msgstr ""
+"Assigne un convertisseur enum au composant courant. Cela est essentiellement "
+"utile pour le bouton radio et les contrôles déroulants. "
+
+#. Tag: para
+#: Controls.xml:176
+#, no-c-format
+msgid ""
+"The converter works with any entity which has an <literal>@Id</literal> "
+"annotation - either simple or composite. If your <emphasis>Managed "
+"Persistence Context</emphasis> isn&#39;t called <literal>entityManager</"
+"literal>, then you need to set it in components.xml:"
+msgstr ""
+
+#. Tag: emphasis
+#: Controls.xml:186 Controls.xml:1002
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: programlisting
+#: Controls.xml:188
+#, fuzzy, no-c-format
+msgid ""
+"&lt;component name=\"org.jboss.seam.ui.entityConverter\"&gt;\n"
+"      &lt;property name=\"entityManager\"&gt;#{em}&lt;/property&gt;\n"
+"  &lt;/component&gt;"
+msgstr ""
+"&lt;component class=\"org.jboss.seam.servlet.MultipartConfig\"&gt;\n"
+"        &lt;property name=\"createTempFiles\"&gt;true&lt;/property&gt;\n"
+"        &lt;property name=\"maxRequestSize\"&gt;1000000&lt;/property&gt;\n"
+"    &lt;/component&gt;"
+
+#. Tag: programlisting
+#: Controls.xml:192
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{person.continent}\" required=\"true\"&gt;\n"
+"    &lt;s:selectItems value=\"#{continents.resultList}\" var=\"continent\" "
+"label=\"#{continent.name}\" noSelectionLabel=\"Please Select...\"/&gt;\n"
+"    &lt;s:convertEntity /&gt;\n"
+"&lt;/h:selectOneMenu&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:198
+#, no-c-format
+msgid "&lt;s:enumItem&gt;"
+msgstr "&lt;s:enumItem&gt;"
+
+#. Tag: para
+#: Controls.xml:205
+#, no-c-format
+msgid "Creates a <literal>SelectItem</literal> from an enum value."
+msgstr "Crée un <literal>SelectItem</literal> depuis une valeur enum."
+
+#. Tag: para
+#: Controls.xml:213
+#, no-c-format
+msgid ""
+"<literal>enumValue</literal> &mdash; the string representation of the enum "
+"value."
+msgstr ""
+"<literal>enumValue</literal> - la représentation de chaîne de la valeur enum."
+
+#. Tag: para
+#: Controls.xml:218
+#, no-c-format
+msgid ""
+"<literal>label</literal> &mdash; the label to be used when rendering the "
+"<literal>SelectItem</literal>."
+msgstr ""
+"<literal>label</literal> - l'étiquette à utiliser quand le "
+"<literal>SelectItem</literal> est affiché."
+
+#. Tag: literal
+#: Controls.xml:234
+#, no-c-format
+msgid "&lt;s:selectItems&gt;"
+msgstr "&lt;s:selectItems&gt;"
+
+#. Tag: para
+#: Controls.xml:241
+#, no-c-format
+msgid ""
+"Creates a <literal>List&lt;SelectItem&gt;</literal> from a List, Set, "
+"DataModel or Array."
+msgstr ""
+"Crée un <literal>List&lt;SelectItem&gt;</literal> depuis une Liste, "
+"Ensemble, DataModel ou Tableau. "
+
+#. Tag: para
+#: Controls.xml:249
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; an EL expression specifying the data that "
+"backs the <literal>List&lt;SelectItem&gt;</literal>"
+msgstr ""
+"<literal>value</literal> - une expression EL qui spécifie les données, "
+"supportant le <literal>List&lt;SelectItem&gt;</literal>"
+
+#. Tag: para
+#: Controls.xml:254
+#, no-c-format
+msgid ""
+"<literal>var</literal> &mdash; defines the name of the local variable that "
+"holds the current object during iteration"
+msgstr ""
+"<literal>var</literal> - définit le nom de la variable locale qui contient "
+"l'objet courant durant l'itération"
+
+#. Tag: para
+#: Controls.xml:259
+#, no-c-format
+msgid ""
+"<literal>label</literal> &mdash; the label to be used when rendering the "
+"<literal>SelectItem</literal>. Can reference the <literal>var</literal> "
+"variable"
+msgstr ""
+"<literal>label</literal> - l'étiquette à utiliser quand <literal>SelectItem</"
+"literal> est affiché. Peut référencer la variable <literal>var</literal> "
+
+#. Tag: para
+#: Controls.xml:264
+#, no-c-format
+msgid ""
+"<literal>disabled</literal> &mdash; if true the <literal>SelectItem</"
+"literal> will be rendered disabled. Can reference the <literal>var</literal> "
+"variable"
+msgstr ""
+"<literal>disabled</literal> - si sur true, le <literal>SelectItem</literal> "
+"sera désactivé. Peut référencer la variable <literal>var</literal> "
+
+#. Tag: para
+#: Controls.xml:269
+#, no-c-format
+msgid ""
+"<literal>noSelectionLabel</literal> &mdash; specifies the (optional) label "
+"to place at the top of list (if <literal>required=\"true\"</literal> is also "
+"specified then selecting this value will cause a validation error)"
+msgstr ""
+"<literal>noSelectionLabel</literal> - spécifie l'étiquette (optionnelle) à "
+"placer au haut de la liste (si <literal>required=\"true\"</literal> est "
+"également spécifié, la sélection de cette valeur entraînera une erreur de "
+"validation)"
+
+#. Tag: para
+#: Controls.xml:274
+#, no-c-format
+msgid ""
+"<literal>hideNoSelectionLabel</literal> &mdash; if true, the "
+"<literal>noSelectionLabel</literal> will be hidden when a value is selected"
+msgstr ""
+"<literal>hideNoSelectionLabel</literal> - si sur true, le "
+"<literal>noSelectionLabel</literal> sera caché quand la valeur est "
+"sélectionnée"
+
+#. Tag: programlisting
+#: Controls.xml:283
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{person.age}\"  converter=\"#{converters."
+"ageConverter}\"&gt;\n"
+"    &lt;s:selectItems value=\"#{ages}\" var=\"age\" label=\"#{age}\" /&gt;\n"
+"&lt;/h:selectOneMenu&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:290
+#, fuzzy, no-c-format
+msgid "&lt;s:graphicImage&gt;"
+msgstr "&lt;s:message&gt;"
+
+#. Tag: para
+#: Controls.xml:297
+#, no-c-format
+msgid ""
+"An extended <literal>&lt;h:graphicImage&gt;</literal> that allows the image "
+"to be created in a Seam Component; further transforms can be applied to the "
+"image. <emphasis>Facelets only.</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:300
+#, no-c-format
+msgid ""
+"All attributes for <literal>&lt;h:graphicImage&gt;</literal> are supported, "
+"as well as:"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:308
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; image to display. Can be a path "
+"<literal>String</literal> (loaded from the classpath), a <literal>byte[]</"
+"literal>, a <literal>java.io.File</literal>, a <literal>java.io.InputStream</"
+"literal> or a <literal>java.net.URL</literal>. Currently supported image "
+"formats are <literal>image/png</literal>, <literal>image/jpeg</literal> and "
+"<literal>image/gif</literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:313
+#, no-c-format
+msgid ""
+"<literal>fileName</literal> &mdash; if not specified the served image will "
+"have a generated file name. If you want to name your file, you should "
+"specify it here. This name should be unique"
+msgstr ""
+
+#. Tag: emphasis
+#: Controls.xml:319
+#, no-c-format
+msgid "Transformations"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:321
+#, no-c-format
+msgid ""
+"To apply a transform to the image, you would nest a tag specifying the "
+"transform to apply. Seam currently supports these transforms:"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:326
+#, fuzzy, no-c-format
+msgid "&lt;s:transformImageSize&gt;"
+msgstr "&lt;s:formattedText&gt;"
+
+#. Tag: para
+#: Controls.xml:330
+#, fuzzy, no-c-format
+msgid "<literal>width</literal> &mdash; new width of the image"
+msgstr "<literal>disabled</literal> &mdash; le lien est-il désactivé ?"
+
+#. Tag: para
+#: Controls.xml:335
+#, fuzzy, no-c-format
+msgid "<literal>height</literal> &mdash; new height of the image"
+msgstr "<literal>value</literal> &mdash; l'étiquette."
+
+#. Tag: para
+#: Controls.xml:340
+#, no-c-format
+msgid ""
+"<literal>maintainRatio</literal> &mdash; if <literal>true</literal>, and "
+"<emphasis>one</emphasis> of <literal>width</literal>/<literal>height</"
+"literal> are specified, the image will be resized with the dimension not "
+"specified being calculated to maintain the aspect ratio."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:345
+#, fuzzy, no-c-format
+msgid "<literal>factor</literal> &mdash; scale the image by the given factor"
+msgstr "<literal>view</literal> &mdash; l'id d'affichage JSF auquel se lier."
+
+#. Tag: literal
+#: Controls.xml:353
+#, fuzzy, no-c-format
+msgid "&lt;s:transformImageBlur&gt;"
+msgstr "&lt;s:fragment&gt;"
+
+#. Tag: para
+#: Controls.xml:357
+#, fuzzy, no-c-format
+msgid ""
+"<literal>radius</literal> &mdash; perform a convolution blur with the given "
+"radius"
+msgstr "<literal>disabled</literal> &mdash; le lien est-il désactivé ?"
+
+#. Tag: literal
+#: Controls.xml:365
+#, fuzzy, no-c-format
+msgid "&lt;s:transformImageType&gt;"
+msgstr "&lt;s:formattedText&gt;"
+
+#. Tag: para
+#: Controls.xml:369
+#, fuzzy, no-c-format
+msgid ""
+"<literal>contentType</literal> &mdash; alter the type of the image to either "
+"<literal>image/jpeg</literal> or <literal>image/png</literal>"
+msgstr ""
+"<literal>accept</literal> &mdash; une liste, de types de contenus séparés "
+"par des virgules à accepter, qui peut ne pas être supportée par le "
+"navigateur. Par ex., <literal>\"images/png,images/jpg\"</literal>, <literal>"
+"\"images/*\"</literal>."
+
+#. Tag: para
+#: Controls.xml:377
+#, no-c-format
+msgid ""
+"It&#39;s easy to create your own transform - create a <literal>UIComponent</"
+"literal> which <literal>implements</literal><literal>org.jboss.seam.ui."
+"graphicImage.ImageTransform</literal>. Inside the <literal>applyTransform()</"
+"literal>method use <literal>image.getBufferedImage()</literal> to get the "
+"original image and <literal>image.setBufferedImage()</literal> to set your "
+"transformed image. Transforms are applied in the order specified in the view."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:391
+#, no-c-format
+msgid "&lt;s:decorate&gt;"
+msgstr "&lt;s:decorate&gt;"
+
+#. Tag: para
+#: Controls.xml:398
+#, fuzzy, no-c-format
+msgid ""
+"\"Decorate\" a JSF input field when validation fails or when "
+"<literal>required=\"true\"</literal> is set."
+msgstr "\"Décore\" un champ d'entrée JSF quand la validation échoue."
+
+#. Tag: literal
+#: Controls.xml:418
+#, fuzzy, no-c-format
+msgid "&lt;s:layoutForm&gt;"
+msgstr "&lt;s:button&gt;"
+
+#. Tag: para
+#: Controls.xml:425
+#, no-c-format
+msgid ""
+"A layout component for producing a \"standard\" form layout. Each child "
+"component will be treated as a row, and if the child is a <literal>&lt;s:"
+"decorate&gt;</literal>, additional formatting will be applied:"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:428
+#, no-c-format
+msgid ""
+"Label &mdash; if a <literal>label</literal> facet is on the <literal>&lt;s:"
+"decorate&gt;</literal> then it&#39;s contents will be used as the label for "
+"this field. The labels are rendered right-aligned in a column"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:431
+#, fuzzy, no-c-format
+msgid ""
+"Some further decoration facets are supported - <literal>beforeLabel</"
+"literal>, <literal>afterLabel</literal>, <literal>aroundLabel</literal>, "
+"<literal>beforeInvalidLabel</literal>, <literal>afterInvalidLabel</literal> "
+"and <literal>aroundInvalidLabel</literal>."
+msgstr ""
+"<literal>propagation</literal> &mdash; détermine le style de la propagation "
+"de conversation : <literal>begin</literal>, <literal>join</literal>, "
+"<literal>nest</literal>, <literal>none</literal> ou <literal>end</literal>."
+
+#. Tag: para
+#: Controls.xml:436
+#, no-c-format
+msgid ""
+"Other text &mdash; if a <literal>belowLabel</literal> facet or/and a "
+"<literal>belowField</literal> facet are present on <literal>&lt;s:"
+"decorate&gt;</literal> then it&#39;s contents will be placed below the label "
+"or the field"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:441
+#, no-c-format
+msgid ""
+"Required &mdash; if <literal>required=\"true\"</literal> is set on the "
+"field, then the <literal>aroundRequiredField</literal>, "
+"<literal>beforeRequiredField</literal>, <literal>afterRequiredField</"
+"literal>, <literal>aroundRequiredLabel</literal>, "
+"<literal>beforeRequiredLabel</literal> and <literal>afterRequiredLabel</"
+"literal> will be applied."
+msgstr ""
+
+#. Tag: programlisting
+#: Controls.xml:457
+#, no-c-format
+msgid ""
+"&lt;s:layoutForm&gt;\n"
+"   &lt;f:facet name=\"aroundInvalidField\"&gt;\n"
+"       &lt;s:span styleClass=\"error\"/&gt;\n"
+"   &lt;/f:facet&gt;\n"
+"   &lt;f:facet name=\"afterInvalidField\"&gt;\n"
+"       &lt;s:message /&gt;\n"
+"   &lt;/f:facet&gt;\n"
+"   &lt;f:facet name=\"beforeRequiredLabel\"&gt;\n"
+"           &lt;s:span&gt;&lowast;&lt;/s:span&gt;\n"
+"   &lt;/f:facet&gt;\n"
+"   &lt;f:facet name=\"aroundLabel\"&gt;\n"
+"           &lt;s:span style=\"text-align:right;\" /&gt;\n"
+"   &lt;/f:facet&gt;\n"
+"   &lt;f:facet name=\"aroundInvalidLabel\"&gt;\n"
+"           &lt;s:span style=\"text-align:right;\" styleClass=\"error\" /"
+"&gt;\n"
+"   &lt;/f:facet&gt;\n"
+"   &lt;s:decorate&gt;\n"
+"        &lt;f:facet name=\"label\"&gt;\n"
+"                    &lt;h:outputText value=\"Name\" /&gt;\n"
+"        &lt;/f:facet&gt;\n"
+"        &lt;h:inputText value=\"#{person.name}\" required=\"true\"/&gt;\n"
+"        &lt;f:facet name=\"belowField\"&gt;\n"
+"            &lt;h:outputText styleClass=\"help\" \n"
+"               value=\"Enter your name as it appears \n"
+"                  on your passport\" /&gt;\n"
+"        &lt;/f:facet&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"&lt;/s:layoutForm&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:472
+#, no-c-format
+msgid "&lt;s:message&gt;"
+msgstr "&lt;s:message&gt;"
+
+#. Tag: para
+#: Controls.xml:479
+#, no-c-format
+msgid "\"Decorate\" a JSF input field with the validation error message."
+msgstr ""
+"\"Décore\" un champ d'entrée JSF avec le message d'erreur de validation."
+
+#. Tag: literal
+#: Controls.xml:499
+#, no-c-format
+msgid "&lt;s:span&gt;"
+msgstr "&lt;s:span&gt;"
+
+#. Tag: para
+#: Controls.xml:506
+#, no-c-format
+msgid "Render a HTML <literal>&lt;span&gt;</literal>."
+msgstr "Affiche un HTML <literal>&lt;span&gt;</literal>."
+
+#. Tag: literal
+#: Controls.xml:526
+#, no-c-format
+msgid "&lt;s:div&gt;"
+msgstr "&lt;s:div&gt;"
+
+#. Tag: para
+#: Controls.xml:533
+#, no-c-format
+msgid "Render a HTML <literal>&lt;div&gt;</literal>."
+msgstr "Affiche un HTML <literal>&lt;div&gt;</literal>."
+
+#. Tag: literal
+#: Controls.xml:553
+#, no-c-format
+msgid "&lt;s:fragment&gt;"
+msgstr "&lt;s:fragment&gt;"
+
+#. Tag: para
+#: Controls.xml:560
+#, fuzzy, no-c-format
+msgid ""
+"A non-rendering component useful for enabling/disabling rendering of it&#39;"
+"s children."
+msgstr ""
+"Un composant non-rendu, utile pour l'activation/la désactivation du rendu de "
+"ses enfants"
+
+#. Tag: literal
+#: Controls.xml:580
+#, no-c-format
+msgid "&lt;s:cache&gt;"
+msgstr "&lt;s:cache&gt;"
+
+#. Tag: para
+#: Controls.xml:587
+#, no-c-format
+msgid ""
+"Cache the rendered page fragment using JBoss Cache. Note that <literal>&lt;s:"
+"cache&gt;</literal> actually uses the instance of JBoss Cache managed by the "
+"built-in <literal>pojoCache</literal> component."
+msgstr ""
+"Mettez en cache le fragment d'affichage de la page en utilisant JBoss Cache. "
+"Notez que <literal>&lt;s:cache&gt;</literal> utilise effectivement "
+"l'instance de JBoss Cache, géré par le composant imbriqué "
+"<literal>pojoCache</literal>."
+
+#. Tag: para
+#: Controls.xml:595
+#, no-c-format
+msgid ""
+"<literal>key</literal> &mdash; the key to cache rendered content, often a "
+"value expression. For example, if we were caching a page fragment that "
+"displays a document, we might use <literal>key=\"Document-#{document.id}\"</"
+"literal>."
+msgstr ""
+"<literal>key</literal> &mdash; la clé du contenu de rendu en cache, souvent "
+"une expression de la valeur. Par exemple, si nous mettons en cache le "
+"fragment de page qui affiche un document, nous pouvons utiliser <literal>key="
+"\"Document-#{document.id}\"</literal>."
+
+#. Tag: para
+#: Controls.xml:600
+#, fuzzy, no-c-format
+msgid ""
+"<literal>enabled</literal> &mdash; a value expression that determines if the "
+"cache should be used."
+msgstr ""
+"<literal>enabled</literal> &mdash; une expression de la valeur qui détermine "
+"si le cache devrait être utilisé. "
+
+#. Tag: para
+#: Controls.xml:605
+#, no-c-format
+msgid ""
+"<literal>region</literal> &mdash; a JBoss Cache node to use (different nodes "
+"can have different expiry policies)."
+msgstr ""
+"<literal>region</literal> &mdash; un noeud du JBoss Cache à utiliser "
+"(différent noeuds peuvent avoir différentes politiques d'expiration)."
+
+#. Tag: literal
+#: Controls.xml:621
+#, no-c-format
+msgid "&lt;s:link&gt;"
+msgstr "&lt;s:link&gt;"
+
+#. Tag: para
+#: Controls.xml:628
+#, no-c-format
+msgid ""
+"A link that supports invocation of an action with control over conversation "
+"propagation. <emphasis>Does not submit the form.</emphasis>"
+msgstr ""
+"Un lien supportant l'appel d'une action avec le contrôle sur la propagation "
+"de la conversation. <emphasis>Ne soumet pas le formulaire.</emphasis>"
+
+#. Tag: para
+#: Controls.xml:636 Controls.xml:697
+#, no-c-format
+msgid "<literal>value</literal> &mdash; the label."
+msgstr "<literal>value</literal> &mdash; l'étiquette."
+
+#. Tag: para
+#: Controls.xml:641 Controls.xml:702
+#, no-c-format
+msgid ""
+"<literal>action</literal> &mdash; a method binding that specified the action "
+"listener."
+msgstr ""
+"<literal>action</literal> &mdash; une méthode d'association qui spécifie le "
+"listener d'actions. "
+
+#. Tag: para
+#: Controls.xml:646 Controls.xml:707
+#, no-c-format
+msgid "<literal>view</literal> &mdash; the JSF view id to link to."
+msgstr "<literal>view</literal> &mdash; l'id d'affichage JSF auquel se lier."
+
+#. Tag: para
+#: Controls.xml:651 Controls.xml:712
+#, no-c-format
+msgid "<literal>fragment</literal> &mdash; the fragment identifier to link to."
+msgstr ""
+"<literal>fragment</literal> &mdash; l'identificateur de fragment auquel se "
+"lier."
+
+#. Tag: para
+#: Controls.xml:656 Controls.xml:717
+#, no-c-format
+msgid "<literal>disabled</literal> &mdash; is the link disabled?"
+msgstr "<literal>disabled</literal> &mdash; le lien est-il désactivé ?"
+
+#. Tag: para
+#: Controls.xml:661 Controls.xml:722 Controls.xml:911
+#, no-c-format
+msgid ""
+"<literal>propagation</literal> &mdash; determines the conversation "
+"propagation style: <literal>begin</literal>, <literal>join</literal>, "
+"<literal>nest</literal>, <literal>none</literal> or <literal>end</literal>."
+msgstr ""
+"<literal>propagation</literal> &mdash; détermine le style de la propagation "
+"de conversation : <literal>begin</literal>, <literal>join</literal>, "
+"<literal>nest</literal>, <literal>none</literal> ou <literal>end</literal>."
+
+#. Tag: para
+#: Controls.xml:666 Controls.xml:727 Controls.xml:916
+#, no-c-format
+msgid ""
+"<literal>pageflow</literal> &mdash; a pageflow definition to begin. (This is "
+"only useful when <literal>propagation=\"begin\"</literal> or "
+"<literal>propagation=\"join\"</literal>.)"
+msgstr ""
+"<literal>pageflow</literal> &mdash; une définition de flux de page à "
+"commencer. (Cela n'est utilie qu'avec <literal>propagation=\"begin\"</"
+"literal> ou <literal>propagation=\"join\"</literal>.)"
+
+#. Tag: literal
+#: Controls.xml:682
+#, no-c-format
+msgid "&lt;s:button&gt;"
+msgstr "&lt;s:button&gt;"
+
+#. Tag: para
+#: Controls.xml:689
+#, no-c-format
+msgid ""
+"A button that supports invocation of an action with control over "
+"conversation propagation. <emphasis>Does not submit the form.</emphasis>"
+msgstr ""
+"Un bouton qui supporte l'appel d'une action avec le contrôle sur la "
+"propagation de conversation. <emphasis>Ne soumet pas le formulaire.</"
+"emphasis>"
+
+#. Tag: literal
+#: Controls.xml:743
+#, no-c-format
+msgid "&lt;s:selectDate&gt;"
+msgstr "&lt;s:selectDate&gt;"
+
+#. Tag: para
+#: Controls.xml:750
+#, fuzzy, no-c-format
+msgid ""
+"Displays a dynamic date picker component that selects a date for the "
+"specified input field. The body of the <literal>selectDate</literal> element "
+"should contain HTML elements, such as text or an image, that prompt the user "
+"to click to display the date picker. The date picker <emphasis>must</"
+"emphasis> be styled using CSS. An example CSS file can be found in the Seam "
+"booking demo as <literal>date.css</literal>, or can be generated using seam-"
+"gen. The CSS styles used to control the appearance of the date picker are "
+"also described below."
+msgstr ""
+"Affiche un composant d'agenda dynamique qui sélectionne une date pour le "
+"champ d'entrée spécifique. Le corps de l'élément <literal>selectDate</"
+"literal> devrait contenir des éléments HTML, comme du texte ou une image, "
+"qui invite l'utilisateur à cliquer pour afficher l'agenda. L'agenda peut "
+"être stylisé avec CSS. Vous trouverez un exemple de fichier CSS dans la "
+"démonstration de réservation Seam, sous <literal>date.css</literal>."
+
+#. Tag: para
+#: Controls.xml:758
+#, no-c-format
+msgid ""
+"<literal>for</literal> &mdash; The id of the input field that the date "
+"picker will insert the selected date into."
+msgstr ""
+"<literal>for</literal> &mdash; L'id du champ d'entrée dans lequel l'agenda "
+"insèrera la date sélectionnée."
+
+#. Tag: para
+#: Controls.xml:763
+#, no-c-format
+msgid ""
+"<literal>dateFormat</literal> &mdash; The date format string. This should "
+"match the date format of the input field."
+msgstr ""
+"<literal>dateFormat</literal> &mdash; La chaîne de format de date. Cela "
+"devrait correspondre au format de la date du champ d'entrée. "
+
+#. Tag: para
+#: Controls.xml:768
+#, fuzzy, no-c-format
+msgid ""
+"<literal>startYear</literal> &mdash; The popup year selector range will "
+"start at this year."
+msgstr "<literal>style</literal> &mdash; Le style de contrôle"
+
+#. Tag: para
+#: Controls.xml:773
+#, fuzzy, no-c-format
+msgid ""
+"<literal>endYear</literal> &mdash; The popup year selector range will end at "
+"this year."
+msgstr ""
+"<literal>enumValue</literal> - la représentation de chaîne de la valeur enum."
+
+#. Tag: programlisting
+#: Controls.xml:782
+#, no-c-format
+msgid ""
+"&lt;div class=\"row\"&gt;\n"
+"    &lt;h:outputLabel for=\"dob\"&gt;Date of birth&lt;em&gt;*&lt;/em&gt;&lt;/"
+"h:outputLabel&gt;\n"
+"    &lt;h:inputText id=\"dob\" value=\"#{user.dob}\" required=\"true\"&gt;\n"
+"      &lt;s:convertDateTime pattern=\"MM/dd/yyyy\"/&gt;\n"
+"    &lt;/h:inputText&gt;\n"
+"    &lt;s:selectDate for=\"dob\" startYear=\"1910\" endYear=\"2007\"&gt;&lt;"
+"img src=\"img/datepicker.png\"/&gt;&lt;/s:selectDate&gt;\n"
+"    &lt;div class=\"validationError\"&gt;&lt;h:message for=\"dob\"/&gt;&lt;/"
+"div&gt;\n"
+"  &lt;/div&gt;"
+msgstr ""
+
+#. Tag: emphasis
+#: Controls.xml:796
+#, no-c-format
+msgid "CSS Styling"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:798
+#, no-c-format
+msgid ""
+"The following list describes the CSS class names that are used to control "
+"the style of the selectDate control."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:803
+#, no-c-format
+msgid ""
+"<literal>seam-date</literal> &mdash; This class is applied to the outer "
+"<literal>div</literal> containing the popup calendar. (1) It is also applied "
+"to the <literal>table</literal> that controls the inner layout of the "
+"calendar. (2)"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:808
+#, fuzzy, no-c-format
+msgid ""
+"<literal>seam-date-header</literal> &mdash; This class is applied to the "
+"calendar header table row (<literal>tr</literal>) and header table cells "
+"(<literal>td</literal>). (3)"
+msgstr ""
+"<literal>label</literal> - l'étiquette à utiliser quand <literal>SelectItem</"
+"literal> est affiché. Peut référencer la variable <literal>var</literal> "
+
+#. Tag: para
+#: Controls.xml:813
+#, no-c-format
+msgid ""
+"<literal>seam-date-header-prevMonth</literal> &mdash; This class is applied "
+"to the \"previous month\" table cell, (<literal>td</literal>), which when "
+"clicked causes the calendar to display the month prior to the one currently "
+"displayed. (4)"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:818
+#, no-c-format
+msgid ""
+"<literal>seam-date-header-nextMonth</literal> &mdash; This class is applied "
+"to the \"next month\" table cell, (<literal>td</literal>), which when "
+"clicked causes the calendar to display the month following the one currently "
+"displayed. (5)"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:823
+#, no-c-format
+msgid ""
+"<literal>seam-date-headerDays</literal> &mdash; This class is applied to the "
+"calendar days header row (<literal>tr</literal>), which contains the names "
+"of the week days. (6)"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:828
+#, no-c-format
+msgid ""
+"<literal>seam-date-footer</literal> &mdash; This class is applied to the "
+"calendar footer row (<literal>tr</literal>), which displays the current "
+"date. (7)"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:833
+#, no-c-format
+msgid ""
+"<literal>seam-date-inMonth</literal> &mdash; This class is applied to the "
+"table cell (<literal>td</literal>) elements that contain a date within the "
+"month currently displayed. (8)"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:838
+#, no-c-format
+msgid ""
+"<literal>seam-date-outMonth</literal> &mdash; This class is applied to the "
+"table cell (<literal>td</literal>) elements that contain a date outside of "
+"the month currently displayed. (9)"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:843
+#, no-c-format
+msgid ""
+"<literal>seam-date-selected</literal> &mdash; This class is applied to the "
+"table cell (<literal>td</literal>) element that contains the currently "
+"selected date. (10)"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:848
+#, no-c-format
+msgid ""
+"<literal>seam-date-dayOff-inMonth</literal> &mdash; This class is applied to "
+"the table cell (<literal>td</literal>) elements that contain a \"day off\" "
+"date (i.e. weekend days, Saturday and Sunday) within the currently selected "
+"month. (11)"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:853
+#, no-c-format
+msgid ""
+"<literal>seam-date-dayOff-outMonth</literal> &mdash; This class is applied "
+"to the table cell (<literal>td</literal>) elements that contain a \"day off"
+"\" date (i.e. weekend days, Saturday and Sunday) outside of the currently "
+"selected month. (12)"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:858
+#, no-c-format
+msgid ""
+"<literal>seam-date-hover</literal> &mdash; This class is applied to the "
+"table cell (<literal>td</literal>) element over which the cursor is "
+"hovering. (13)"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:863
+#, no-c-format
+msgid ""
+"<literal>seam-date-monthNames</literal> &mdash; This class is applied to the "
+"<literal>div</literal> control that contains the popup month selector. (14)"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:868
+#, no-c-format
+msgid ""
+"<literal>seam-date-monthNameLink</literal> &mdash; This class is applied to "
+"the anchor (<literal>a</literal>) controls that contain the popup month "
+"names. (15)"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:873
+#, no-c-format
+msgid ""
+"<literal>seam-date-years </literal> &mdash; This class is applied to the "
+"<literal>div</literal> control that contains the popup year selector. (16)"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:878
+#, no-c-format
+msgid ""
+"<literal>seam-date-yearLink</literal> &mdash; This class is applied to the "
+"anchor (<literal>a</literal>) controls that contain the popup years. (15)"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:896
+#, no-c-format
+msgid "&lt;s:conversationPropagation&gt;"
+msgstr "&lt;s:conversationPropagation&gt;"
+
+#. Tag: para
+#: Controls.xml:903
+#, no-c-format
+msgid ""
+"Customize the conversation propagation for a command link or button (or "
+"similar JSF control). <emphasis>Facelets only.</emphasis>"
+msgstr ""
+"Personnalisez la propagation de conversation pour un lien de commande ou un "
+"bouton (ou un contrôle JSF similaire). <emphasis>Facelets uniquement.</"
+"emphasis>"
+
+#. Tag: literal
+#: Controls.xml:932
+#, no-c-format
+msgid "&lt;s:conversationId&gt;"
+msgstr "&lt;s:conversationId&gt;"
+
+#. Tag: para
+#: Controls.xml:939
+#, no-c-format
+msgid ""
+"Add the conversation id to an output link (or similar JSF control). "
+"<emphasis>Facelets only.</emphasis>"
+msgstr ""
+"Ajouter l'id de conversation à un lien de sortie (ou un contrôle JSF "
+"similaire). <emphasis>Facelets uniquement.</emphasis>"
+
+#. Tag: literal
+#: Controls.xml:959
+#, no-c-format
+msgid "&lt;s:taskId&gt;"
+msgstr "&lt;s:taskId&gt;"
+
+#. Tag: para
+#: Controls.xml:966
+#, no-c-format
+msgid ""
+"Add the task id to an output link (or similar JSF control), when the task is "
+"available via <literal>#{task}</literal>. <emphasis>Facelets only.</emphasis>"
+msgstr ""
+"Ajoutez l'id de tâche à un lien de sortie (ou un contrôle JSF similaire), "
+"quand la tâche est disponible, via <literal>#{task}</literal>. "
+"<emphasis>Facelets uniquement.</emphasis>"
+
+#. Tag: literal
+#: Controls.xml:986
+#, no-c-format
+msgid "&lt;s:fileUpload&gt;"
+msgstr "&lt;s:fileUpload&gt;"
+
+#. Tag: para
+#: Controls.xml:993
+#, no-c-format
+msgid ""
+"Renders a file upload control. This control must be used within a form with "
+"an encoding type of <literal>multipart/form-data</literal>, i.e:"
+msgstr ""
+"Donne le rendu d'un contrôle de chargement de fichier. Ce contrôle doit être "
+"utilisé dans un formulaire avec un type d'encodage de <literal>multipart/"
+"form-data</literal>, c'est-à-dire :"
+
+#. Tag: programlisting
+#: Controls.xml:996
+#, no-c-format
+msgid "&lt;h:form enctype=\"multipart/form-data\"&gt;"
+msgstr "&lt;h:form enctype=\"multipart/form-data\"&gt;"
+
+#. Tag: para
+#: Controls.xml:997
+#, no-c-format
+msgid ""
+"For multipart requests, the Seam Multipart servlet filter must also be "
+"configured in <literal>web.xml</literal>:"
+msgstr ""
+"Pour des requêtes multipart, le filtre de servlet de Seam Multipart doit "
+"être également configuré dans <literal>web.xml</literal> :"
+
+#. Tag: programlisting
+#: Controls.xml:1000
+#, fuzzy, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-class&gt;\n"
+"  &lt;/filter&gt;\n"
+"\n"
+"  &lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;/*&lt;/url-pattern&gt;\n"
+"  &lt;/filter-mapping&gt;"
+msgstr ""
+"&lt;filter&gt;\n"
+"      &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"      &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-"
+"class&gt;\n"
+"    &lt;/filter&gt;\n"
+"    \n"
+"    &lt;filter-mapping&gt;\n"
+"      &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"      &lt;url-pattern&gt;/*&lt;/url-pattern&gt;\n"
+"    &lt;/filter-mapping&gt;"
+
+#. Tag: para
+#: Controls.xml:1004
+#, no-c-format
+msgid ""
+"The following configuration options for multipart requests may be configured "
+"in components.xml:"
+msgstr ""
+"Les options de configuration suivantes pour des requêtes multipart peuvent "
+"être configurées dans components.xml :"
+
+#. Tag: para
+#: Controls.xml:1009
+#, no-c-format
+msgid ""
+"<literal>createTempFiles</literal> &mdash; if this option is set to true, "
+"uploaded files are streamed to a temporary file instead of in memory."
+msgstr ""
+"<literal>createTempFiles</literal> &mdash; si cette option est définie à "
+"true, les fichiers téléchargés en amont sont envoyés à un fichier temporaire "
+"et non en mémoire. "
+
+#. Tag: para
+#: Controls.xml:1014
+#, no-c-format
+msgid ""
+"<literal>maxRequestSize</literal> &mdash; the maximum size of a file upload "
+"request, in bytes."
+msgstr ""
+"<literal>maxRequestSize</literal> &mdash; la taille maximum d'une requête de "
+"téléchargement de fichier, en octets."
+
+#. Tag: para
+#: Controls.xml:1019
+#, fuzzy, no-c-format
+msgid "Here&#39;s an example:"
+msgstr "En voici un exemple :"
+
+#. Tag: programlisting
+#: Controls.xml:1022
+#, fuzzy, no-c-format
+msgid ""
+"&lt;component class=\"org.jboss.seam.web.MultipartFilter\"&gt;\n"
+"      &lt;property name=\"createTempFiles\"&gt;true&lt;/property&gt;\n"
+"      &lt;property name=\"maxRequestSize\"&gt;1000000&lt;/property&gt;\n"
+"  &lt;/component&gt;"
+msgstr ""
+"&lt;component class=\"org.jboss.seam.servlet.MultipartConfig\"&gt;\n"
+"        &lt;property name=\"createTempFiles\"&gt;true&lt;/property&gt;\n"
+"        &lt;property name=\"maxRequestSize\"&gt;1000000&lt;/property&gt;\n"
+"    &lt;/component&gt;"
+
+#. Tag: para
+#: Controls.xml:1028
+#, no-c-format
+msgid ""
+"<literal>data</literal> &mdash; this value binding receives the binary file "
+"data. The receiving field should be declared as a <literal>byte[]</literal> "
+"or <literal>InputStream</literal> (required)."
+msgstr ""
+"<literal>data</literal> &mdash; cette association de valeur reçoit les "
+"données de fichier binaire. Le champ réceptionnaire devrait être déclaré "
+"comme un <literal>byte[]</literal> ou <literal>InputStream</literal> "
+"(nécessaire)."
+
+#. Tag: para
+#: Controls.xml:1033
+#, fuzzy, no-c-format
+msgid ""
+"<literal>contentType</literal> &mdash; this value binding receives the "
+"file&#39;s content type (optional)."
+msgstr ""
+"<literal>contentType</literal> &mdash; cette association de valeur reçoit le "
+"type de contenu de fichier (optionnel)."
+
+#. Tag: para
+#: Controls.xml:1038
+#, no-c-format
+msgid ""
+"<literal>fileName</literal> &mdash; this value binding receives the filename "
+"(optional)."
+msgstr ""
+"<literal>fileName</literal> &mdash; cette association de valeur reçoit le "
+"nom du fichier (optionnel)."
+
+#. Tag: para
+#: Controls.xml:1043
+#, no-c-format
+msgid ""
+"<literal>accept</literal> &mdash; a comma-separated list of content types to "
+"accept, may not be supported by the browser. E.g. <literal>\"images/png,"
+"images/jpg\"</literal>, <literal>\"images/*\"</literal>."
+msgstr ""
+"<literal>accept</literal> &mdash; une liste, de types de contenus séparés "
+"par des virgules à accepter, qui peut ne pas être supportée par le "
+"navigateur. Par ex., <literal>\"images/png,images/jpg\"</literal>, <literal>"
+"\"images/*\"</literal>."
+
+#. Tag: para
+#: Controls.xml:1048
+#, fuzzy, no-c-format
+msgid "<literal>style</literal> &mdash; The control&#39;s style"
+msgstr "<literal>style</literal> &mdash; Le style de contrôle"
+
+#. Tag: para
+#: Controls.xml:1053
+#, fuzzy, no-c-format
+msgid "<literal>styleClass</literal> &mdash; The control&#39;s style class"
+msgstr "<literal>styleClass</literal> &mdash; La classe de style de contrôle"
+
+#~ msgid "Output <emphasis>Seam Text</emphasis>."
+#~ msgstr "Sortie <emphasis>Texte Seam</emphasis>."
+
+#~ msgid ""
+#~ "And here's a list of the supported attributes for the "
+#~ "<literal>fileUpload</literal> control:"
+#~ msgstr ""
+#~ "Et voici une liste des attributs supportés pour le contrôle "
+#~ "<literal>fileUpload</literal> :"

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Conversations.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Conversations.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Conversations.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1703 @@
+# translation of Conversations.po to french
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# myriam malga <mmalga at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Conversations\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2007-08-03 17:49+1000\n"
+"Last-Translator: myriam malga <mmalga at redhat.com>\n"
+"Language-Team: french\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Conversations.xml:6
+#, no-c-format
+msgid "Conversations and workspace management"
+msgstr "Gestion des conversations et de l'espace de travail"
+
+#. Tag: para
+#: Conversations.xml:7
+#, fuzzy, no-c-format
+msgid ""
+"It&#39;s time to understand Seam&#39;s conversation model in more detail."
+msgstr ""
+"Il est temps de comprendre le modèle de conversation de Seam de façon plus "
+"détaillée."
+
+#. Tag: para
+#: Conversations.xml:10
+#, no-c-format
+msgid ""
+"Historically, the notion of a Seam \"conversation\" came about as a merger "
+"of three different ideas:"
+msgstr ""
+"Historiquement, la notion de \"conversation\" Seam est apparue en tant que "
+"fusion de trois idées différentes : "
+
+#. Tag: para
+#: Conversations.xml:15
+#, no-c-format
+msgid ""
+"The idea of a <emphasis>workspace</emphasis>, which I encountered in a "
+"project for the Victorian government in 2002. In this project I was forced "
+"to implement workspace management on top of Struts, an experience I pray "
+"never to repeat."
+msgstr ""
+"l'idée d'un <emphasis>espace de travail</emphasis>, que j'ai rencontré en "
+"2002, dans un projet pour le gouvernement de l'état du Victoria. Dans ce "
+"projet j'ai dû implémenter une gestion de l'espace de travail en plus de "
+"Struts, une expérience que j'espère ne jamais avoir à refaire. "
+
+#. Tag: para
+#: Conversations.xml:20
+#, fuzzy, no-c-format
+msgid ""
+"The idea of an <emphasis>application transaction</emphasis> with optimistic "
+"semantics, and the realization that existing frameworks based around a "
+"stateless architecture could not provide effective management of extended "
+"persistence contexts. (The Hibernate team is truly fed up with copping the "
+"blame for <literal>LazyInitializationException</literal>s, which are not "
+"really Hibernate&#39;s fault, but rather the fault of the extremely limiting "
+"persistence context model supported by stateless architectures such as the "
+"Spring framework or the traditional <emphasis>stateless session facade</"
+"emphasis> (anti)pattern in J2EE.)"
+msgstr ""
+"l'idée d'une <emphasis>transaction d'application</emphasis> avec une "
+"sémantique optimiste,et la réalisation que des frameworks existants, basés "
+"sur une architecture stateless, ne pourraient pas fournir une gestion "
+"efficace des contextes de persistance. (L'équipe Hibernate en a vraiment "
+"assez d'être blâmée pour les<literal>LazyInitializationException</literal>, "
+"qui ne sont pas vraiment la faute de Hibernate, mais plutôt la faute d'un "
+"modèle de contexte de persistance extrêmement limité et supporté par des "
+"architectures stateless comme le framework Spring, ou la traditionnelle "
+"<emphasis>façade de session stateless</emphasis> (anti)schéma dans J2EE.)"
+
+#. Tag: para
+#: Conversations.xml:25
+#, no-c-format
+msgid "The idea of a workflow <emphasis>task</emphasis>."
+msgstr "l'idée d'une <emphasis>tâche</emphasis> de flux de travail."
+
+#. Tag: para
+#: Conversations.xml:30
+#, no-c-format
+msgid ""
+"By unifying these ideas and providing deep support in the framework, we have "
+"a powerful construct that lets us build richer and more efficient "
+"applications with less code than before."
+msgstr ""
+"Grâce à l'unification de ces idées et au support approfondi dans le "
+"framework, nous avons un concept puissant qui nous permet de construire des "
+"applications plus riches et plus efficaces avec moins de code qu'auparavant. "
+
+#. Tag: title
+#: Conversations.xml:34
+#, fuzzy, no-c-format
+msgid "Seam&#39;s conversation model"
+msgstr "Modèle de conversation de Seam"
+
+#. Tag: para
+#: Conversations.xml:35
+#, no-c-format
+msgid ""
+"The examples we have seen so far make use of a very simple conversation "
+"model that follows these rules:"
+msgstr ""
+"Les exemples que nous avons traités jusqu'à présent utilisent un modèle de "
+"conversation très simple qui suit les règles suivantes :"
+
+#. Tag: para
+#: Conversations.xml:40
+#, fuzzy, no-c-format
+msgid ""
+"There is always a conversation context active during the apply request "
+"values, process validations, update model values, invoke application and "
+"render response phases of the JSF request lifecycle."
+msgstr ""
+"Il y a toujours un contexte de conversation actif durant les valeurs "
+"\"appliquer la requête\", les validations de processus, les valeurs de "
+"modèle de mise à jour, l'application invoke et les phases d'affichage de "
+"réponse du cycle de vie de la requête JSF. "
+
+#. Tag: para
+#: Conversations.xml:45
+#, no-c-format
+msgid ""
+"At the end of the restore view phase of the JSF request lifecycle, Seam "
+"attempts to restore any previous long-running conversation context. If none "
+"exists, Seam creates a new temporary conversation context."
+msgstr ""
+"À la fin de la phase restaurer l'affichage d'un cycle de vie d'une requête "
+"JSF, Seam tente de restaurer tout contexte précédent de conversation longue. "
+"Si aucun contexte n'existe, Seam crée un nouveau contexte de conversation "
+"temporaire. "
+
+#. Tag: para
+#: Conversations.xml:50
+#, no-c-format
+msgid ""
+"When an <literal>@Begin</literal> method is encountered, the temporary "
+"conversation context is promoted to a long running conversation."
+msgstr ""
+"Quand une méthode <literal>@Begin</literal> est rencontrée, le contexte de "
+"conversation temporaire est promu à une conversation à long terme."
+
+#. Tag: para
+#: Conversations.xml:55
+#, no-c-format
+msgid ""
+"When an <literal>@End</literal> method is encountered, any long-running "
+"conversation context is demoted to a temporary conversation."
+msgstr ""
+"Quand une méthode <literal>@End</literal> est rencontrée, tout contexte de "
+"conversation à long terme est rétrogradé à une conversation temporaire. "
+
+#. Tag: para
+#: Conversations.xml:60
+#, no-c-format
+msgid ""
+"At the end of the render response phase of the JSF request lifecycle, Seam "
+"stores the contents of a long running conversation context or destroys the "
+"contents of a temporary conversation context."
+msgstr ""
+"À la fin d'une phase d'affichage de réponse du cycle de vie de la requête "
+"JSF, Seam stocke le contenu dans un contexte de conversation à long terme, "
+"ou détruit le contenu d'un contexte de conversation temporaire. "
+
+#. Tag: para
+#: Conversations.xml:65
+#, no-c-format
+msgid ""
+"Any faces request (a JSF postback) will propagate the conversation context. "
+"By default, non-faces requests (GET requests, for example) do not propagate "
+"the conversation context, but see below for more information on this."
+msgstr ""
+"Toute requête faces (un postback JSF) propagerea le contexte de "
+"conversation. Par défaut, les requêtes non faces (requêtes GET, par exemple) "
+"ne propagent pas le contexte de conversation, voir ci-dessous pour plus "
+"d'informations à ce sujet."
+
+#. Tag: para
+#: Conversations.xml:70
+#, no-c-format
+msgid ""
+"If the JSF request lifecycle is foreshortened by a redirect, Seam "
+"transparently stores and restores the current conversation context&mdash;"
+"unless the conversation was already ended via <literal>@End"
+"(beforeRedirect=true)</literal>."
+msgstr ""
+"Si le cycle de vie de la requête JSF est réduite par une redirection, Seam "
+"stocke et restaure de façon transparente le contexte de conversation "
+"courant&mdash;à moins que la conversation ne soit déjà terminée, via "
+"<literal>@End(beforeRedirect=true)</literal>."
+
+#. Tag: para
+#: Conversations.xml:75
+#, fuzzy, no-c-format
+msgid ""
+"Seam transparently propagates the conversation context across JSF postbacks "
+"and redirects. If you don&#39;t do anything special, a <emphasis>non-faces "
+"request</emphasis> (a GET request for example) will not propagate the "
+"conversation context and will be processed in a new temporary conversation. "
+"This is usually - but not always - the desired behavior."
+msgstr ""
+"Seam propage de façon transparente, le contexte de conversation sur tous les "
+"postbacks et les redirections JSF. Si vous n'effectuez rien de spécial, une "
+"<emphasis>requête non-faces</emphasis> (une requête GET par exemple) ne "
+"propagera pas le contexte de conversation et sera traitée dans une nouvelle "
+"conversation temporaire. C'est en général - pas toujours - le comportement "
+"désiré."
+
+#. Tag: para
+#: Conversations.xml:78
+#, no-c-format
+msgid ""
+"If you want to propagate a Seam conversation across a non-faces request, you "
+"need to explicitly code the Seam <emphasis>conversation id</emphasis> as a "
+"request parameter:"
+msgstr ""
+"Si vous désirez propager une conversation Seam sur toute une requête non-"
+"faces, vous devez explicitement coder <emphasis>l'id de conversation</"
+"emphasis> Seam, en tant que paramètre de requête :"
+
+#. Tag: programlisting
+#: Conversations.xml:81
+#, no-c-format
+msgid ""
+"&lt;a href=\"main.jsf?conversationId=#{conversation.id}\"&gt;Continue&lt;/"
+"a&gt;"
+msgstr ""
+"&lt;a href=\"main.jsf?conversationId=#{conversation.id}\"&gt;Continue&lt;/"
+"a&gt;"
+
+#. Tag: para
+#: Conversations.xml:82
+#, no-c-format
+msgid "Or, the more JSF-ish:"
+msgstr "Ou, plus encore JSF :"
+
+#. Tag: programlisting
+#: Conversations.xml:85
+#, no-c-format
+msgid ""
+"&lt;h:outputLink value=\"main.jsf\"&gt;\n"
+"    &lt;f:param name=\"conversationId\" value=\"#{conversation.id}\"/&gt;\n"
+"    &lt;h:outputText value=\"Continue\"/&gt;\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+"&lt;h:outputLink value=\"main.jsf\"&gt;\n"
+"    &lt;f:param name=\"conversationId\" value=\"#{conversation.id}\"/&gt;\n"
+"    &lt;h:outputText value=\"Continue\"/&gt;\n"
+"&lt;/h:outputLink&gt;"
+
+#. Tag: para
+#: Conversations.xml:86 Conversations.xml:94
+#, no-c-format
+msgid "If you use the Seam tag library, this is equivalent:"
+msgstr "Si vous utilisez la bibliothèque de balises Seam, cela équivaut à :"
+
+#. Tag: programlisting
+#: Conversations.xml:89
+#, no-c-format
+msgid ""
+"&lt;h:outputLink value=\"main.jsf\"&gt;\n"
+"    &lt;s:conversationId/&gt;\n"
+"    &lt;h:outputText value=\"Continue\"/&gt;\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+"&lt;h:outputLink value=\"main.jsf\"&gt;\n"
+"    &lt;s:conversationId/&gt;\n"
+"    &lt;h:outputText value=\"Continue\"/&gt;\n"
+"&lt;/h:outputLink&gt;"
+
+#. Tag: para
+#: Conversations.xml:90
+#, no-c-format
+msgid ""
+"If you wish to disable propagation of the conversation context for a "
+"postback, a similar trick is used:"
+msgstr ""
+"Si vous désirez désactiver la propagation du contexte de conversation pour "
+"un postback, une astuce similaire est utilisée :"
+
+#. Tag: programlisting
+#: Conversations.xml:93
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;f:param name=\"conversationPropagation\" value=\"none\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;f:param name=\"conversationPropagation\" value=\"none\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+
+#. Tag: programlisting
+#: Conversations.xml:97
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"none\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"none\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+
+#. Tag: para
+#: Conversations.xml:98
+#, no-c-format
+msgid ""
+"Note that disabling conversation context propagation is absolutely not the "
+"same thing as ending the conversation."
+msgstr ""
+"Notez que la désactivation de la propagation du contexte de conversation "
+"n'est absolument pas la même chose que de terminer la conversation. "
+
+#. Tag: para
+#: Conversations.xml:101
+#, no-c-format
+msgid ""
+"The <literal>conversationPropagation</literal> request parameter, or the "
+"<literal>&lt;s:conversationPropagation&gt;</literal> tag may even be used to "
+"begin and end conversation, or begin a nested conversation."
+msgstr ""
+"Le paramètre de requête <literal>conversationPropagation</literal>, ou la "
+"balise <literal>&lt;s:conversationPropagation&gt;</literal> peuvent même "
+"être utilisés pour commencer ou terminer une conversation, ou commencer une "
+"conversaton imbriquée. "
+
+#. Tag: programlisting
+#: Conversations.xml:104
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"end\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"end\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+
+#. Tag: programlisting
+#: Conversations.xml:105
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Child\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"nested\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+"&lt;h:commandLink action=\"main\" value=\"Select Child\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"nested\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+
+#. Tag: programlisting
+#: Conversations.xml:106
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Hotel\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"begin\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+"&lt;h:commandLink action=\"main\" value=\"Select Hotel\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"begin\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+
+#. Tag: programlisting
+#: Conversations.xml:107
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Hotel\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"join\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+"&lt;h:commandLink action=\"main\" value=\"Select Hotel\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"join\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+
+#. Tag: para
+#: Conversations.xml:108
+#, no-c-format
+msgid ""
+"This conversation model makes it easy to build applications which behave "
+"correctly with respect to multi-window operation. For many applications, "
+"this is all that is needed. Some complex applications have either or both of "
+"the following additional requirements:"
+msgstr ""
+"Ce modèle de conversation facilite la construction des applications qui se "
+"comportent correctement en ce qui concerne l'opération de multi-fenêtres. "
+"Pour de nombreuses applications, c'est tout ce dont vous avez besoin. "
+"Plusieurs applications complexes ont l'une ou l'autre, ou encore les deux "
+"exigences supplémentaires suivantes :"
+
+#. Tag: para
+#: Conversations.xml:113
+#, no-c-format
+msgid ""
+"A conversation spans many smaller units of user interaction, which execute "
+"serially or even concurrently. The smaller <emphasis>nested conversations</"
+"emphasis> have their own isolated set of conversation state, and also have "
+"access to the state of the outer conversation."
+msgstr ""
+"Une conversation s'étend sur de nombreuses unités plus petites d'interaction "
+"utilisateur, exécutant en série ou même concurremment. Les "
+"<emphasis>conversations imbriquées</emphasis> plus petites ont leur propre "
+"ensemble isolé d'états de conversation, et ont aussi accès à l'état de la "
+"conversation externe."
+
+#. Tag: para
+#: Conversations.xml:118
+#, no-c-format
+msgid ""
+"The user is able to switch between many conversations within the same "
+"browser window. This feature is called <emphasis>workspace management</"
+"emphasis>."
+msgstr ""
+"L'utilisateur est en mesure de passer entre de nombreuses conversations, à "
+"l'intérieur de la même fenêtre de navigateur. Cette fonction est appelée "
+"<emphasis>gestion de l'espace de travail</emphasis>."
+
+#. Tag: title
+#: Conversations.xml:126
+#, no-c-format
+msgid "Nested conversations"
+msgstr "Conversations imbriquées"
+
+#. Tag: para
+#: Conversations.xml:127
+#, fuzzy, no-c-format
+msgid ""
+"A nested conversation is created by invoking a method marked <literal>@Begin"
+"(nested=true)</literal> inside the scope of an existing conversation. A "
+"nested conversation has its own conversation context, and also has read-only "
+"access to the context of the outer conversation. (It can read the outer "
+"conversation&#39;s context variables, but not write to them.) When an "
+"<literal>@End</literal> is subsequently encountered, the nested conversation "
+"will be destroyed, and the outer conversation will resume, by \"popping\" "
+"the conversation stack. Conversations may be nested to any arbitrary depth."
+msgstr ""
+"Une conversation imbriquée est créée en invoquant la méthode "
+"marquée<literal>@Begin(nested=true)</literal> à l'intérieur de l'étendue "
+"d'une conversation existante. Une conversation imbriquée a son propre "
+"contexte de conversation, et a un accès en lecture seule, au contexte de la "
+"conversation externe. (Il peut lire les variables de contexte de "
+"conversation mais ne peut pas les écrire.) Quand un <literal>@End</literal> "
+"est rencontré subséquemment, la conversation imbriquée sera détruite et la "
+"conversation externe recommencera, en \"dépilant\" la pile de la "
+"conversation. Les conversations peuvent être imbriquées à une profondeur "
+"arbitraire."
+
+#. Tag: para
+#: Conversations.xml:130
+#, no-c-format
+msgid ""
+"Certain user activity (workspace management, or the back button) can cause "
+"the outer conversation to be resumed before the inner conversation is ended. "
+"In this case it is possible to have multiple concurrent nested conversations "
+"belonging to the same outer conversation. If the outer conversation ends "
+"before a nested conversation ends, Seam destroys all nested conversation "
+"contexts along with the outer context."
+msgstr ""
+"Certaines activités utilisateur (gestion de l'espace de travail, ou le "
+"bouton retour) peuvent entraîner la reprise de la conversation externe avant "
+"la fin de la conversation interne. Dans ce cas, il est possible d'avoir des "
+"conversations imbriquées multiples et concurrentes et appartenant à la même "
+"conversation externe. Si la conversation externe se termine avant la fin "
+"d'une conversation imbriquée, Seam détruit tous les contextes de "
+"conversation imbriqués, de même que le contexte externe. "
+
+#. Tag: para
+#: Conversations.xml:133
+#, no-c-format
+msgid ""
+"A conversation may be thought of as a <emphasis>continuable state</"
+"emphasis>. Nested conversations allow the application to capture a "
+"consistent continuable state at various points in a user interaction, thus "
+"insuring truly correct behavior in the face of backbuttoning and workspace "
+"management."
+msgstr ""
+"Une conversation peut être considérée comme un <emphasis>état continuable</"
+"emphasis>. Les conversations imbriquées permettent à l'application de "
+"capturer un état consistant et continuable à différents moments dans une "
+"interaction utilisateur, assurant ainsi un comportement réellement correct "
+"dans le contexte de l'utilisation du bouton de retour et de la gestion de "
+"l'espace de travail. "
+
+#. Tag: para
+#: Conversations.xml:136
+#, no-c-format
+msgid ""
+"TODO: an example to show how a nested conversation prevents bad stuff "
+"happening when you backbutton."
+msgstr ""
+"TODO : un exemple pour montrer comment une conversation imbriquée évite les "
+"problèmes quand un bouton retour est utilisé."
+
+#. Tag: para
+#: Conversations.xml:139
+#, no-c-format
+msgid ""
+"Usually, if a component exists in a parent conversation of the current "
+"nested conversation, the nested conversation will use the same instance. "
+"Occasionally, it is useful to have a different instance in each nested "
+"conversation, so that the component instance that exists in the parent "
+"conversation is invisible to its child conversations. You can achieve this "
+"behavior by annotating the component <literal>@PerNestedConversation</"
+"literal>."
+msgstr ""
+"Généralement, si un composant existe dans une conversation parent de la "
+"conversation imbriquée courante, la conversation imbriquée utilisera la même "
+"instance. Parfois, il est utile d'avoir une instance différente dans chaque "
+"conversation imbriquée, afin que l'instance de composant qui existe dans "
+"laconversation parent soit invisible à ses conversations enfants. Vous "
+"pouvez arriver à ce comportement, en annotant le composant "
+"<literal>@PerNestedConversation</literal>."
+
+#. Tag: title
+#: Conversations.xml:145
+#, no-c-format
+msgid "Starting conversations with GET requests"
+msgstr "Commencer les conversations avec des requêtes GET"
+
+#. Tag: para
+#: Conversations.xml:146
+#, no-c-format
+msgid ""
+"JSF does not define any kind of action listener that is triggered when a "
+"page is accessed via a non-faces request (for example, a HTTP GET request). "
+"This can occur if the user bookmarks the page, or if we navigate to the page "
+"via an <literal>&lt;h:outputLink&gt;</literal>."
+msgstr ""
+"JSF ne définit aucun type de listener d'action, déclenché quand une page est "
+"accédée via une requête non-faces (par exemple, une requête HTTP GET). Cela "
+"peut arriver quand un utilisateur met en signet la page, ou si vous naviguez "
+"à la page via un <literal>&lt;h:outputLink&gt;</literal>."
+
+#. Tag: para
+#: Conversations.xml:149
+#, fuzzy, no-c-format
+msgid ""
+"Sometimes we want to begin a conversation immediately the page is accessed. "
+"Since there is no JSF action method, we can&#39;t solve the problem in the "
+"usual way, by annotating the action with <literal>@Begin</literal>."
+msgstr ""
+"Quelquefois on souhaite commencer une conversation aussitôt qu'on accède à "
+"la page. Étant donné qu'il n'y a pas de méthode d'action JSF, nous pouvons "
+"résoudre le problème de la manière la plus usitée, en annotant l'action avec "
+"<literal>@Begin</literal>."
+
+#. Tag: para
+#: Conversations.xml:152
+#, fuzzy, no-c-format
+msgid ""
+"A further problem arises if the page needs some state to be fetched into a "
+"context variable. We&#39;ve already seen two ways to solve this problem. If "
+"that state is held in a Seam component, we can fetch the state in a "
+"<literal>@Create</literal> method. If not, we can define a "
+"<literal>@Factory</literal> method for the context variable."
+msgstr ""
+"Un autre problème survient quand la page doit extraire un état d'une "
+"variable de contexte. Nous avons déjà vu deux façons de résoudre ce "
+"problème. Si cet état est dans un composant Seam, nous pouvons l'extraire "
+"d'une méthode <literal>@Create</literal>. Si ce n'est pas le cas, nous "
+"pouvons définir une méthode <literal>@Factory</literal> pour la variable de "
+"contexte."
+
+#. Tag: para
+#: Conversations.xml:155
+#, no-c-format
+msgid ""
+"If none of these options works for you, Seam lets you define a "
+"<emphasis>page action</emphasis> in the <literal>pages.xml</literal> file."
+msgstr ""
+"Si aucune de ces options ne fonctionnent pour vous, Seam vous permet de "
+"définir une <emphasis>action de page</emphasis> dans le fichier "
+"<literal>pages.xml</literal>."
+
+#. Tag: programlisting
+#: Conversations.xml:158
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\" action=\"#{messageManager.list}\"/"
+"&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\" action=\"#{messageManager.list}\"/"
+"&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Conversations.xml:159
+#, no-c-format
+msgid ""
+"This action method is called at the beginning of the render response phase, "
+"any time the page is about to be rendered. If a page action returns a non-"
+"null outcome, Seam will process any appropriate JSF and Seam navigation "
+"rules, possibly resulting in a completely different page being rendered."
+msgstr ""
+"Cette méthode d'action est appelée au commencement de la phase d'affichage "
+"de la réponse, à tout moment où la page va être affichée. Si une action de "
+"page retourne un résultat non nulle, Seam traitera toute règle de navigation "
+"Seam et JSF appropriée, ce qui entraînera sans doute le rendu d'une page "
+"complètement différente."
+
+#. Tag: para
+#: Conversations.xml:162
+#, no-c-format
+msgid ""
+"If <emphasis>all</emphasis> you want to do before rendering the page is "
+"begin a conversation, you could use a built-in action method that does just "
+"that:"
+msgstr ""
+"Si <emphasis>tout</emphasis> ce que vous souhaitez effectuer avant le rendu "
+"de la page est de commencer une conversation, vous pourriez utiliser une "
+"méthode d'action intégrée qui effectue exactement cela :"
+
+#. Tag: programlisting
+#: Conversations.xml:165
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\" action=\"#{conversation.begin}\"/"
+"&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\" action=\"#{conversation.begin}\"/"
+"&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Conversations.xml:166
+#, no-c-format
+msgid ""
+"Note that you can also call this built-in action from a JSF control, and, "
+"similarly, you can use <literal>#{conversation.end}</literal> to end "
+"conversations."
+msgstr ""
+"Notez que vous pouvez également appeler cette action intégrée depuis un "
+"contrôle JSF, et de même vous pouvez utiliser <literal>#{conversation.end}</"
+"literal> pour terminer les conversations. "
+
+#. Tag: para
+#: Conversations.xml:169
+#, no-c-format
+msgid ""
+"If you want more control, to join existing conversations or begin a nested "
+"conversion, to begin a pageflow or an atomic conversation, you should use "
+"the <literal>&lt;begin-conversation&gt;</literal> element."
+msgstr ""
+"Si vous désirez plus de contrôle, ou lier des conversations existantes ou "
+"commencer une conversation imbriquée, ou commencer un flux de page ou une "
+"conversation atomique, utilisez l'élément <literal>&lt;begin-conversation&gt;"
+"</literal>."
+
+#. Tag: programlisting
+#: Conversations.xml:172
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\"&gt;\n"
+"       &lt;begin-conversation nested=\"true\" pageflow=\"AddItem\"/&gt;\n"
+"    &lt;page&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\"&gt;\n"
+"       &lt;begin-conversation nested=\"true\" pageflow=\"AddItem\"/&gt;\n"
+"    &lt;page&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Conversations.xml:173
+#, no-c-format
+msgid "There is also an <literal>&lt;end-conversation&gt;</literal> element."
+msgstr ""
+"Il y a également l'élément <literal>&lt;end-conversation&gt;</literal>."
+
+#. Tag: programlisting
+#: Conversations.xml:176
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/home.jsp\"&gt;\n"
+"       &lt;end-conversation/&gt;\n"
+"    &lt;page&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/home.jsp\"&gt;\n"
+"       &lt;end-conversation/&gt;\n"
+"    &lt;page&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Conversations.xml:177
+#, no-c-format
+msgid "To solve the first problem, we now have five options:"
+msgstr ""
+"Pour résoudre le premier problème, nous avons maintenant cinq options :"
+
+#. Tag: para
+#: Conversations.xml:182
+#, no-c-format
+msgid ""
+"Annotate the <literal>@Create</literal> method with <literal>@Begin</literal>"
+msgstr ""
+"Annoter la méthode <literal>@Create</literal> avec <literal>@Begin</literal>"
+
+#. Tag: para
+#: Conversations.xml:187
+#, no-c-format
+msgid ""
+"Annotate the <literal>@Factory</literal> method with <literal>@Begin</"
+"literal>"
+msgstr ""
+"Annoter la méthode <literal>@Factory</literal> avec <literal>@Begin</literal>"
+
+#. Tag: para
+#: Conversations.xml:192
+#, no-c-format
+msgid "Annotate the Seam page action method with <literal>@Begin</literal>"
+msgstr ""
+"Annoter la méthode d'action de page Seam avec <literal>@Begin</literal>"
+
+#. Tag: para
+#: Conversations.xml:197
+#, no-c-format
+msgid ""
+"Use <literal>&lt;begin-conversation&gt;</literal> in <literal>pages.xml</"
+"literal>."
+msgstr ""
+"Utiliser <literal>&lt;begin-conversation&gt;</literal> dans <literal>pages."
+"xml</literal>."
+
+#. Tag: para
+#: Conversations.xml:202
+#, no-c-format
+msgid ""
+"Use <literal>#{conversation.begin}</literal> as the Seam page action method"
+msgstr ""
+"Utiliser <literal>#{conversation.begin}</literal> en tant que méthode "
+"d'action de page Seam "
+
+#. Tag: title
+#: Conversations.xml:210
+#, no-c-format
+msgid ""
+"Using <literal>&lt;s:link&gt;</literal> and <literal>&lt;s:button&gt;</"
+"literal>"
+msgstr ""
+"Quand on utilise <literal>&lt;s:link&gt;</literal> et <literal>&lt;s:"
+"button&gt;</literal>"
+
+#. Tag: para
+#: Conversations.xml:211
+#, fuzzy, no-c-format
+msgid ""
+"JSF command links always perform a form submission via JavaScript, which "
+"breaks the web browser&#39;s \"open in new window\" or \"open in new tab\" "
+"feature. In plain JSF, you need to use an <literal>&lt;h:outputLink&gt;</"
+"literal> if you need this functionality. But there are two major limitations "
+"to <literal>&lt;h:outputLink&gt;</literal>."
+msgstr ""
+"les liens de commande JSF effectuent toujours une soumission de formulaire, "
+"via JavaScript, qui casse la fonction du navigateur web \"ouvrir dans une "
+"nouvelle fenêtre\" ou \"ouvrir dans un nouvel onglet\". En simple JSF, vous "
+"devez utiliser <literal>&lt;h:outputLink&gt;</literal> si vous avez besoin "
+"de cette fonctionnalité. Mais il existe deux limitations majeures à "
+"<literal>&lt;h:outputLink&gt;</literal>."
+
+#. Tag: para
+#: Conversations.xml:216
+#, no-c-format
+msgid ""
+"JSF provides no way to attach an action listener to an <literal>&lt;h:"
+"outputLink&gt;</literal>."
+msgstr ""
+"JSF n'offre aucune possibilité d'attacher un listener d'action à un "
+"<literal>&lt;h:outputLink&gt;</literal>."
+
+#. Tag: para
+#: Conversations.xml:221
+#, no-c-format
+msgid ""
+"JSF does not propagate the selected row of a <literal>DataModel</literal> "
+"since there is no actual form submission."
+msgstr ""
+"JSF ne propage pas la rangée sélectionnée d'un <literal>DataModel</literal> "
+"étant donné qu'il n'y a pas de réelle soumission de formulaire. "
+
+#. Tag: para
+#: Conversations.xml:226
+#, fuzzy, no-c-format
+msgid ""
+"Seam provides the notion of a <emphasis>page action</emphasis> to help solve "
+"the first problem, but this does nothing to help us with the second problem. "
+"We <emphasis>could</emphasis> work around this by using the RESTful approach "
+"of passing a request parameter and requerying for the selected object on the "
+"server side. In some cases&mdash;such as the Seam blog example "
+"application&mdash;this is indeed the best approach. The RESTful style "
+"supports bookmarking, since it does not require server-side state. In other "
+"cases, where we don&#39;t care about bookmarks, the use of "
+"<literal>@DataModel</literal> and <literal>@DataModelSelection</literal> is "
+"just so convenient and transparent!"
+msgstr ""
+"Seam fournit la notion d'une <emphasis>action de page</emphasis> pour vous "
+"aider à résoudre le premier problème, mais cela ne vous assiste aucunement "
+"dans la résolution du second. Nous <emphasis>pourrions</emphasis> contourner "
+"cela en utilisant l'approche RESTful qui passe un paramètre de requête et "
+"requiert les objets sélectionnés, côté serveur. Dans certains cas - comme "
+"avec l'exemple d'application seam blog - c'est de loin la meilleure "
+"approche. Le style RESTful supporte la mise en signet, étant donné qu'il ne "
+"demande pas l'état, côté serveur. Dans d'autres cas, où les signets n'ont "
+"pas d'importance, l'utilisation de <literal>@DataModel</literal> et de "
+"<literal>@DataModelSelection</literal> est tellement commode et "
+"transparente !"
+
+#. Tag: para
+#: Conversations.xml:229
+#, no-c-format
+msgid ""
+"To fill in this missing functionality, and to make conversation propagation "
+"even simpler to manage, Seam provides the <literal>&lt;s:link&gt;</literal> "
+"JSF tag."
+msgstr ""
+"Pour remplacer cette fonctionnalité manquante, pour faciliter encore plus la "
+"gestion la propagation de conversation, Seam fournit la balise <literal>&lt;"
+"s:link&gt;</literal> JSF."
+
+#. Tag: para
+#: Conversations.xml:232
+#, no-c-format
+msgid "The link may specify just the JSF view id:"
+msgstr "Le lien peut spécifier uniquement l'id d'affichage JSF :"
+
+#. Tag: programlisting
+#: Conversations.xml:235
+#, fuzzy, no-c-format
+msgid "&lt;s:link view=“/login.xhtml” value=“Login”/&gt;"
+msgstr ""
+"&lt;s:link view=&#8220;/login.xhtml&#8221; value=&#8220;Login&#8221;/&gt;"
+
+#. Tag: para
+#: Conversations.xml:236
+#, no-c-format
+msgid ""
+"Or, it may specify an action method (in which case the action outcome "
+"determines the page that results):"
+msgstr ""
+"Ou, il peut spécifier une méthode d'action (dans ce cas le résultat de "
+"l'action détermine la page qui en résulte) : "
+
+#. Tag: programlisting
+#: Conversations.xml:239
+#, fuzzy, no-c-format
+msgid "&lt;s:link action=“#{login.logout}” value=“Logout”/&gt;"
+msgstr ""
+"&lt;s:link action=&#8220;#{login.logout}&#8221; value=&#8220;Logout&#8221;/"
+"&gt;"
+
+#. Tag: para
+#: Conversations.xml:240
+#, fuzzy, no-c-format
+msgid ""
+"If you specify <emphasis>both</emphasis> a JSF view id and an action method, "
+"the &#39;view&#39; will be used <emphasis>unless</emphasis> the action "
+"method returns a non-null outcome:"
+msgstr ""
+"Si vous spécifiez <emphasis>à la fois</emphasis> un id d'affichage JSF et "
+"une méthode d'action, l'affichage' sera utilisé <emphasis>à moins que</"
+"emphasis> la méthode d'action ne retourne un résultat non nulle :"
+
+#. Tag: programlisting
+#: Conversations.xml:243
+#, fuzzy, no-c-format
+msgid ""
+"&lt;s:link view=\"/loggedOut.xhtml\"  action=“#{login.logout}” "
+"value=“Logout”/&gt;"
+msgstr ""
+"&lt;s:link view=\"/loggedOut.xhtml\"  action=&#8220;#{login.logout}&#8221; "
+"value=&#8220;Logout&#8221;/&gt;"
+
+#. Tag: para
+#: Conversations.xml:244
+#, fuzzy, no-c-format
+msgid ""
+"The link automatically propagates the selected row of a <literal>DataModel</"
+"literal> using inside <literal>&lt;h:dataTable&gt;</literal>:"
+msgstr ""
+"Le lien propage automatiquement la rangée sélectionnée d'un "
+"<literal>DataModel</literal> en utilisant <literal>&lt;h:dataTable&gt;</"
+"literal> intérieur :"
+
+#. Tag: programlisting
+#: Conversations.xml:247
+#, fuzzy, no-c-format
+msgid ""
+"&lt;s:link view=“/hotel.xhtml” action=“#{hotelSearch.selectHotel}” value=“#"
+"{hotel.name}”/&gt;"
+msgstr ""
+"&lt;s:link view=&#8220;/hotel.xhtml&#8221; action=&#8220;#{hotelSearch."
+"selectHotel}&#8221; value=&#8220;#{hotel.name}&#8221;/&gt;"
+
+#. Tag: para
+#: Conversations.xml:248
+#, no-c-format
+msgid "You can leave the scope of an existing conversation:"
+msgstr "Vous pouvez laisser l'étendue d'une conversation existante :"
+
+#. Tag: programlisting
+#: Conversations.xml:251
+#, fuzzy, no-c-format
+msgid "&lt;s:link view=“/main.xhtml” propagation=“none”/&gt;"
+msgstr ""
+"&lt;s:link view=&#8220;/main.xhtml&#8221; propagation=&#8220;none&#8221;/&gt;"
+
+#. Tag: para
+#: Conversations.xml:252
+#, no-c-format
+msgid "You can begin, end, or nest conversations:"
+msgstr "Vous pouvez commencer, terminer ou imbriquer des conversations :"
+
+#. Tag: programlisting
+#: Conversations.xml:255
+#, fuzzy, no-c-format
+msgid "&lt;s:link action=“#{issueEditor.viewComment}” propagation=“nest”/&gt;"
+msgstr ""
+"&lt;s:link action=&#8220;#{issueEditor.viewComment}&#8221; "
+"propagation=&#8220;nest&#8221;/&gt;"
+
+#. Tag: para
+#: Conversations.xml:256
+#, no-c-format
+msgid ""
+"If the link begins a conversation, you can even specify a pageflow to be "
+"used:"
+msgstr ""
+"Si le lien commence une conversation, vous pouvez spécifier le flux de page "
+"à utiliser :"
+
+#. Tag: programlisting
+#: Conversations.xml:259
+#, fuzzy, no-c-format
+msgid ""
+"&lt;s:link action=“#{documentEditor.getDocument}” propagation=“begin” \n"
+"        pageflow=“EditDocument”/&gt;"
+msgstr ""
+"&lt;s:link action=&#8220;#{documentEditor.getDocument}&#8221; "
+"propagation=&#8220;begin&#8221; \n"
+"        pageflow=&#8220;EditDocument&#8221;/&gt;"
+
+#. Tag: para
+#: Conversations.xml:260
+#, no-c-format
+msgid ""
+"The <literal>taskInstance</literal> attribute if for use in jBPM task lists:"
+msgstr ""
+"L'attribut <literal>taskInstance</literal> si utilisé dans les listes de "
+"tâches jBPM :"
+
+#. Tag: programlisting
+#: Conversations.xml:263
+#, fuzzy, no-c-format
+msgid ""
+"&lt;s:link action=“#{documentApproval.approveOrReject}” taskInstance=“#"
+"{task}”/&gt;"
+msgstr ""
+"&lt;s:link action=&#8220;#{documentApproval.approveOrReject}&#8221; "
+"taskInstance=&#8220;#{task}&#8221;/&gt;"
+
+#. Tag: para
+#: Conversations.xml:264
+#, no-c-format
+msgid "(See the DVD Store demo application for examples of this.)"
+msgstr ""
+"(Consultez l'application de la démonstration DVD Store pour les exemples de "
+"cela.)"
+
+#. Tag: para
+#: Conversations.xml:267
+#, no-c-format
+msgid ""
+"Finally, if you need the \"link\" to be rendered as a button, use "
+"<literal>&lt;s:button&gt;</literal>:"
+msgstr ""
+"Enfin si vous avez besoin d'afficher le \"lien\" en tant que bouton, "
+"utiliser <literal>&lt;s:button&gt;</literal> :"
+
+#. Tag: programlisting
+#: Conversations.xml:270
+#, fuzzy, no-c-format
+msgid "&lt;s:button action=“#{login.logout}” value=“Logout”/&gt;"
+msgstr ""
+"&lt;s:button action=&#8220;#{login.logout}&#8221; value=&#8220;Logout&#8221;/"
+"&gt;"
+
+#. Tag: title
+#: Conversations.xml:274
+#, no-c-format
+msgid "Success messages"
+msgstr "Messages de réussite"
+
+#. Tag: para
+#: Conversations.xml:275
+#, no-c-format
+msgid ""
+"It is quite common to display a message to the user indicating success or "
+"failure of an action. It is convenient to use a JSF <literal>FacesMessage</"
+"literal> for this. Unfortunately, a successful action often requires a "
+"browser redirect, and JSF does not propagate faces messages across "
+"redirects. This makes it quite difficult to display success messages in "
+"plain JSF."
+msgstr ""
+"Il est assez fréquent d'afficher un message à l'utilisateur pour indiquer la "
+"réussite ou l'échec d'une action. À cet effet, il est commode d'utiliser un "
+"<literal>FacesMessage</literal> JSF. Malheureusement une action réussie "
+"exige souvent une redirection du navigateur, et JSF ne propage pas les "
+"messages faces sur toutes les redirections. Il est donc difficile d'afficher "
+"des messages de réussite, via le JSF simple. "
+
+#. Tag: para
+#: Conversations.xml:278
+#, no-c-format
+msgid ""
+"The built in conversation-scoped Seam component named "
+"<literal>facesMessages</literal> solves this problem. (You must have the "
+"Seam redirect filter installed.)"
+msgstr ""
+"Le composant Seam imbriqué et porté par la conversation, appelé "
+"<literal>facesMessages</literal> résout ce problème. (Vous devez avoir "
+"installé le filtre de redirection Seam.)"
+
+#. Tag: programlisting
+#: Conversations.xml:281
+#, no-c-format
+msgid ""
+"@Name(\"editDocumentAction\")\n"
+"@Stateless\n"
+"public class EditDocumentBean implements EditDocument {\n"
+"    @In EntityManager em;\n"
+"    @In Document document;\n"
+"    @In FacesMessages facesMessages;\n"
+"    \n"
+"    public String update() {\n"
+"        em.merge(document);\n"
+"        facesMessages.add(\"Document updated\");\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"editDocumentAction\")\n"
+"@Stateless\n"
+"public class EditDocumentBean implements EditDocument {\n"
+"    @In EntityManager em;\n"
+"    @In Document document;\n"
+"    @In FacesMessages facesMessages;\n"
+"    \n"
+"    public String update() {\n"
+"        em.merge(document);\n"
+"        facesMessages.add(\"Document updated\");\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Conversations.xml:282
+#, no-c-format
+msgid ""
+"Any message added to <literal>facesMessages</literal> is used in the very "
+"next render response phase for the current conversation. This even works "
+"when there is no long-running conversation since Seam preserves even "
+"temporary conversation contexts across redirects."
+msgstr ""
+"Tout message ajouté à <literal>facesMessages</literal> est utilisé dans la "
+"prochaine phase de réponse de rendu pour la conversation courante. Cela "
+"fonctionne même quand il n'y a pas de conversation longue, étant donné que "
+"Seam préserve même les contextes de conversation temporaires sur toutes les "
+"redirections. "
+
+#. Tag: para
+#: Conversations.xml:285
+#, no-c-format
+msgid "You can even include JSF EL expressions in a faces message summary:"
+msgstr ""
+"Vous pouvez même inclure les expressions JSF EL dans le résumé d'un message "
+"faces :"
+
+#. Tag: programlisting
+#: Conversations.xml:288
+#, no-c-format
+msgid "facesMessages.add(\"Document #{document.title} was updated\");"
+msgstr "facesMessages.add(\"Document #{document.title} was updated\");"
+
+#. Tag: para
+#: Conversations.xml:289
+#, no-c-format
+msgid "You may display the messages in the usual way, for example:"
+msgstr "Vous pouvez afficher les messages comme d'habitude, par exemple :"
+
+#. Tag: programlisting
+#: Conversations.xml:292
+#, no-c-format
+msgid "&lt;h:messages globalOnly=\"true\"/&gt;"
+msgstr "&lt;h:messages globalOnly=\"true\"/&gt;"
+
+#. Tag: title
+#: Conversations.xml:296
+#, no-c-format
+msgid "Using an \"explicit\" conversation id"
+msgstr "Utilisation d'un id de conversation \"explicite\""
+
+#. Tag: para
+#: Conversations.xml:297
+#, no-c-format
+msgid ""
+"Ordinarily, Seam generates a meaningless unique id for each conversation in "
+"each session. You can customize the id value when you begin the conversation."
+msgstr ""
+"Généralement, Seam génère un id unique insignifiant pour chaque "
+"conversation, dans chaque session. Vous pouvez personnaliser la valeur de "
+"l'id quand vous commencez une conversation."
+
+#. Tag: para
+#: Conversations.xml:300
+#, no-c-format
+msgid ""
+"This feature can be used to customize the conversation id generation "
+"algorithm like so:"
+msgstr ""
+"Cette fonction peut être utilisée pour personnaliser l'algorithme de "
+"création de l'id de conversation de la façon suivante :"
+
+#. Tag: programlisting
+#: Conversations.xml:303
+#, no-c-format
+msgid ""
+"@Begin(id=\"#{myConversationIdGenerator.nextId}\") \n"
+"public void editHotel() { ... }"
+msgstr ""
+"@Begin(id=\"#{myConversationIdGenerator.nextId}\") \n"
+"public void editHotel() { ... }"
+
+#. Tag: para
+#: Conversations.xml:304
+#, no-c-format
+msgid "Or it can be used to assign a meaningful conversation id:"
+msgstr ""
+"Ou il peut être utilisé pour assigner un id de conversation significatif :"
+
+#. Tag: programlisting
+#: Conversations.xml:307
+#, no-c-format
+msgid ""
+"@Begin(id=\"hotel#{hotel.id}\") \n"
+"public String editHotel() { ... }"
+msgstr ""
+"@Begin(id=\"hotel#{hotel.id}\") \n"
+"public String editHotel() { ... }"
+
+#. Tag: programlisting
+#: Conversations.xml:308
+#, no-c-format
+msgid ""
+"@Begin(id=\"hotel#{hotelsDataModel.rowData.id}\") \n"
+"public String selectHotel() { ... }"
+msgstr ""
+"@Begin(id=\"hotel#{hotelsDataModel.rowData.id}\") \n"
+"public String selectHotel() { ... }"
+
+#. Tag: programlisting
+#: Conversations.xml:309
+#, fuzzy, no-c-format
+msgid ""
+"@Begin(id=\"entry#{params[&#39;blogId&#39;]}\")\n"
+"public String viewBlogEntry() { ... }"
+msgstr ""
+"@Begin(id=\"entry#{params['blogId']}\")\n"
+"public String viewBlogEntry() { ... }"
+
+#. Tag: programlisting
+#: Conversations.xml:310
+#, no-c-format
+msgid ""
+"@BeginTask(id=\"task#{taskInstance.id}\") \n"
+"public String approveDocument() { ... }"
+msgstr ""
+"@BeginTask(id=\"task#{taskInstance.id}\") \n"
+"public String approveDocument() { ... }"
+
+#. Tag: para
+#: Conversations.xml:311
+#, no-c-format
+msgid ""
+"Clearly, these example result in the same conversation id every time a "
+"particular hotel, blog or task is selected. So what happens if a "
+"conversation with the same conversation id already exists when the new "
+"conversation begins? Well, Seam detects the existing conversation and "
+"redirects to that conversation without running the <literal>@Begin</literal> "
+"method again. This feature helps control the number of workspaces that are "
+"created when using workspace management."
+msgstr ""
+"Il est clair que ces exemples entraînent le même id de conversation à chaque "
+"fois qu'un hôtel particulier, blogue ou tâche est sélectionné. Mais que se "
+"passe-t-il si une conversation avec le même id de conversation existe déjà "
+"quand la nouvelle conversation commence ? Seam détecte la conversation "
+"existante et redirige vers cette conversation sans exécuter à nouveau, la "
+"méthode <literal>@Begin</literal>. Cette fonction aide à contrôler le nombre "
+"d'espaces de travail créés quand on utilise la gestion de l'espace de "
+"travail. "
+
+#. Tag: title
+#: Conversations.xml:317
+#, no-c-format
+msgid "Workspace management"
+msgstr "Gestion de l'espace de travail"
+
+#. Tag: para
+#: Conversations.xml:318
+#, no-c-format
+msgid ""
+"Workspace management is the ability to \"switch\" conversations in a single "
+"window. Seam makes workspace management completely transparent at the level "
+"of the Java code. To enable workspace management, all you need to do is:"
+msgstr ""
+"La gestion de l'espace de travail est la capacité de \"passer d'une "
+"conversation à l'autre\" dans une seule fenêtre. Seam rend la gestion de "
+"l'espace de travail complètement transparente au niveau du code Java. Pour "
+"activer la gestion de l'espace de travail, il vous suffit d'effectuer ce qui "
+"suit : "
+
+#. Tag: para
+#: Conversations.xml:323
+#, no-c-format
+msgid ""
+"Provide <emphasis>description</emphasis> text for each view id (when using "
+"JSF or Seam navigation rules) or page node (when using jPDL pageflows). This "
+"description text is displayed to the user by the workspace switchers."
+msgstr ""
+"Fournir le texte de <emphasis>description</emphasis> pour chaque id "
+"d'affichage (quand vous utilisez JSF ou les règles de navigation Seam) ou le "
+"noeud de page (quand vous utilisez les flux de page jPDL). Ce texte de "
+"description est affiché à l'utilisateur par les commutateurs d'espace de "
+"travail. "
+
+#. Tag: para
+#: Conversations.xml:328
+#, no-c-format
+msgid ""
+"Include one or more of the standard workspace switcher JSP or facelets "
+"fragments in your pages. The standard fragments support workspace management "
+"via a drop down menu, a list of conversations, or breadcrumbs."
+msgstr ""
+"Inclure un ou plusieurs commutateurs d'espace de travail JSP standards ou "
+"fragments de facelets dans vos pages. Les fragments standards supportent la "
+"gestion de l'espace de travail, via un menu déroulant, une liste de "
+"conversations, ou des breadcrumbs. "
+
+#. Tag: title
+#: Conversations.xml:333
+#, no-c-format
+msgid "Workspace management and JSF navigation"
+msgstr "Gestion de l'espace de travail et navigation JSF"
+
+#. Tag: para
+#: Conversations.xml:334
+#, no-c-format
+msgid ""
+"When you use JSF or Seam navigation rules, Seam switches to a conversation "
+"by restoring the current <literal>view-id</literal> for that conversation. "
+"The descriptive text for the workspace is defined in a file called "
+"<literal>pages.xml</literal> that Seam expects to find in the <literal>WEB-"
+"INF</literal> directory, right next to <literal>faces-config.xml</literal>:"
+msgstr ""
+"Quand vous utilisez JSF ou les règles de navigation Seam, Seam passe à une "
+"conversation en restaurant la <literal>view-id</literal> courante pour cette "
+"conversation. Le texte descriptif de l'espace de travail est défini dans un "
+"fichier, appelé <literal>pages.xml</literal> que Seam s'attend à trouver "
+"dans le répertoire <literal>WEB-INF</literal>, juste à côté de "
+"<literal>faces-config.xml</literal> :"
+
+#. Tag: programlisting
+#: Conversations.xml:337
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/main.xhtml\"&gt;Search hotels: #{hotelBooking."
+"searchString}&lt;/page&gt;\n"
+"    &lt;page view-id=\"/hotel.xhtml\"&gt;View hotel: #{hotel.name}&lt;/"
+"page&gt;\n"
+"    &lt;page view-id=\"/book.xhtml\"&gt;Book hotel: #{hotel.name}&lt;/"
+"page&gt;\n"
+"    &lt;page view-id=\"/confirm.xhtml\"&gt;Confirm: #{booking.description}"
+"&lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/main.xhtml\"&gt;Search hotels: #{hotelBooking."
+"searchString}&lt;/page&gt;\n"
+"    &lt;page view-id=\"/hotel.xhtml\"&gt;View hotel: #{hotel.name}&lt;/"
+"page&gt;\n"
+"    &lt;page view-id=\"/book.xhtml\"&gt;Book hotel: #{hotel.name}&lt;/"
+"page&gt;\n"
+"    &lt;page view-id=\"/confirm.xhtml\"&gt;Confirm: #{booking.description}"
+"&lt;/page&gt;\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Conversations.xml:338
+#, no-c-format
+msgid ""
+"Note that if this file is missing, the Seam application will continue to "
+"work perfectly! The only missing functionality will be the ability to switch "
+"workspaces."
+msgstr ""
+"Notez que si ce fichier manque, l'application Seam continuera de fonctionner "
+"parfaitement ! La seule fonctionnalité manquante sera la capacité de passer "
+"d'un espace de travail à un autre. "
+
+#. Tag: title
+#: Conversations.xml:344
+#, no-c-format
+msgid "Workspace management and jPDL pageflow"
+msgstr "Gestion de l'espace de travail et flux de page jPDL"
+
+#. Tag: para
+#: Conversations.xml:345
+#, no-c-format
+msgid ""
+"When you use a jPDL pageflow definition, Seam switches to a conversation by "
+"restoring the current jBPM process state. This is a more flexible model "
+"since it allows the same <literal>view-id</literal> to have different "
+"descriptions depending upon the current <literal>&lt;page&gt;</literal> "
+"node. The description text is defined by the <literal>&lt;page&gt;</literal> "
+"node:"
+msgstr ""
+"Quand vous utilisez la définition du flux de page jPDL, Seam passe à une "
+"conversation en restaurant l'état du processus jBPM. C'est un modèle plus "
+"flexible étant donné qu'il permet au même <literal>view-id</literal> d'avoir "
+"des descriptions différentes selon le noeud <literal>&lt;page&gt;</literal> "
+"courant. Le texte de description est défini par le noeud <literal>&lt;"
+"page&gt;</literal> :"
+
+#. Tag: programlisting
+#: Conversations.xml:348
+#, fuzzy, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"shopping\"&gt;\n"
+"\n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"browse\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;page name=\"browse\" view-id=\"/browse.xhtml\"&gt;\n"
+"      &lt;description&gt;DVD Search: #{search.searchPattern}&lt;/"
+"description&gt;\n"
+"      &lt;transition to=\"browse\"/&gt;\n"
+"      &lt;transition name=\"checkout\" to=\"checkout\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"checkout\" view-id=\"/checkout.xhtml\"&gt;\n"
+"      &lt;description&gt;Purchase: $#{cart.total}&lt;/description&gt;\n"
+"      &lt;transition to=\"checkout\"/&gt;\n"
+"      &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"complete\" view-id=\"/complete.xhtml\"&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+"&lt;pageflow-definition name=\"shopping\"&gt;\n"
+"\n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"browse\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;page name=\"browse\" view-id=\"/browse.xhtml\"&gt;\n"
+"      &lt;description&gt;DVD Search: #{search.searchPattern}&lt;/"
+"description&gt;\n"
+"      &lt;transition to=\"browse\"/&gt;\n"
+"      &lt;transition name=\"checkout\" to=\"checkout\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"checkout\" view-id=\"/checkout.xhtml\"&gt;\n"
+"      &lt;description&gt;Purchase: &#36;#{cart.total}&lt;/description&gt;\n"
+"      &lt;transition to=\"checkout\"/&gt;\n"
+"      &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"complete\" view-id=\"/complete.xhtml\"&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+
+#. Tag: title
+#: Conversations.xml:352
+#, no-c-format
+msgid "The conversation switcher"
+msgstr "Le commutateur de conversation "
+
+#. Tag: para
+#: Conversations.xml:353
+#, no-c-format
+msgid ""
+"Include the following fragment in your JSP or facelets page to get a drop-"
+"down menu that lets you switch to any current conversation, or to any other "
+"page of the application:"
+msgstr ""
+"Inclut le fragment suivant dans votre JSP ou page de facelets pour obtenir "
+"un menu déroulant qui vous permet de passer à n'importe quelle conversation "
+"courante, ou à n'importe quelle autre page de l'application :"
+
+#. Tag: programlisting
+#: Conversations.xml:356
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{switcher.conversationIdOrOutcome}\"&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Find Issues\" itemValue=\"findIssue\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Create Issue\" itemValue=\"editIssue\"/"
+"&gt;\n"
+"    &lt;f:selectItems value=\"#{switcher.selectItems}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{switcher.select}\" value=\"Switch\"/&gt;"
+msgstr ""
+"&lt;h:selectOneMenu value=\"#{switcher.conversationIdOrOutcome}\"&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Find Issues\" itemValue=\"findIssue\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Create Issue\" itemValue=\"editIssue\"/"
+"&gt;\n"
+"    &lt;f:selectItems value=\"#{switcher.selectItems}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{switcher.select}\" value=\"Switch\"/&gt;"
+
+#. Tag: para
+#: Conversations.xml:357
+#, no-c-format
+msgid ""
+"In this example, we have a menu that includes an item for each conversation, "
+"together with two additional items that let the user begin a new "
+"conversation."
+msgstr ""
+"Dans cet exemple, nous avons un menu qui inclut un élément pour chaque "
+"conversation, avec également deux éléments supplémentaires qui permettent à "
+"l'utilisateur de commencer une nouvelle conversation. "
+
+#. Tag: title
+#: Conversations.xml:371
+#, no-c-format
+msgid "The conversation list"
+msgstr "La liste des conversations"
+
+#. Tag: para
+#: Conversations.xml:372
+#, no-c-format
+msgid ""
+"The conversation list is very similar to the conversation switcher, except "
+"that it is displayed as a table:"
+msgstr ""
+"La liste des conversations est très similaire au commutateur de "
+"conversations, sauf qu'elle est affichée en tant que table :"
+
+#. Tag: programlisting
+#: Conversations.xml:375
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{conversationList}\" var=\"entry\"\n"
+"        rendered=\"#{not empty conversationList}\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Workspace&lt;/f:facet&gt;\n"
+"        &lt;h:commandLink action=\"#{entry.select}\" value=\"#{entry."
+"description}\"/&gt;\n"
+"        &lt;h:outputText value=\"[current]\" rendered=\"#{entry.current}\"/"
+"&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Activity&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{entry.startDatetime}\"&gt;\n"
+"            &lt;f:convertDateTime type=\"time\" pattern=\"hh:mm a\"/&gt;\n"
+"        &lt;/h:outputText&gt;\n"
+"        &lt;h:outputText value=\" - \"/&gt;\n"
+"        &lt;h:outputText value=\"#{entry.lastDatetime}\"&gt;\n"
+"            &lt;f:convertDateTime type=\"time\" pattern=\"hh:mm a\"/&gt;\n"
+"        &lt;/h:outputText&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"        &lt;h:commandButton action=\"#{entry.select}\" value=\"#{msg.Switch}"
+"\"/&gt;\n"
+"        &lt;h:commandButton action=\"#{entry.destroy}\" value=\"#{msg."
+"Destroy}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+"&lt;h:dataTable value=\"#{conversationList}\" var=\"entry\"\n"
+"        rendered=\"#{not empty conversationList}\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Workspace&lt;/f:facet&gt;\n"
+"        &lt;h:commandLink action=\"#{entry.select}\" value=\"#{entry."
+"description}\"/&gt;\n"
+"        &lt;h:outputText value=\"[current]\" rendered=\"#{entry.current}\"/"
+"&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Activity&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{entry.startDatetime}\"&gt;\n"
+"            &lt;f:convertDateTime type=\"time\" pattern=\"hh:mm a\"/&gt;\n"
+"        &lt;/h:outputText&gt;\n"
+"        &lt;h:outputText value=\" - \"/&gt;\n"
+"        &lt;h:outputText value=\"#{entry.lastDatetime}\"&gt;\n"
+"            &lt;f:convertDateTime type=\"time\" pattern=\"hh:mm a\"/&gt;\n"
+"        &lt;/h:outputText&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"        &lt;h:commandButton action=\"#{entry.select}\" value=\"#{msg.Switch}"
+"\"/&gt;\n"
+"        &lt;h:commandButton action=\"#{entry.destroy}\" value=\"#{msg."
+"Destroy}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+
+#. Tag: para
+#: Conversations.xml:376
+#, no-c-format
+msgid ""
+"We imagine that you will want to customize this for your own application."
+msgstr ""
+"Nous présumons que vous souhaitez personnaliser cela pour votre propre "
+"application."
+
+#. Tag: para
+#: Conversations.xml:387
+#, fuzzy, no-c-format
+msgid ""
+"The conversation list is nice, but it takes up a lot of space on the page, "
+"so you probably don&#39;t want to put it on <emphasis>every</emphasis> page."
+msgstr ""
+"La liste des conversations est bien, mais elle prend beaucoup d'espace sur "
+"la page, il est donc recommandé de ne pas la mettre sur <emphasis>chaque</"
+"emphasis> page."
+
+#. Tag: para
+#: Conversations.xml:390
+#, no-c-format
+msgid "Notice that the conversation list lets the user destroy workspaces."
+msgstr ""
+"Notez que la liste des conversations permet à l'utilisateur de détruire les "
+"espaces de travail. "
+
+#. Tag: title
+#: Conversations.xml:396
+#, no-c-format
+msgid "Breadcrumbs"
+msgstr "Breadcrumbs"
+
+#. Tag: para
+#: Conversations.xml:397
+#, no-c-format
+msgid ""
+"Breadcrumbs are useful in applications which use a nested conversation "
+"model. The breadcrumbs are a list of links to conversations in the current "
+"conversation stack:"
+msgstr ""
+"Les breadcrumbs sont utiles dans les applications utilisant un modèle de "
+"conversation imbriqué. Les breadcrumbs sont une liste de liens vers des "
+"conversations dans la pile de conversations courante :"
+
+#. Tag: programlisting
+#: Conversations.xml:400
+#, no-c-format
+msgid ""
+"&lt;t:dataList value=\"#{conversationStack}\" var=\"entry\"&gt;\n"
+"    &lt;h:outputText value=\" | \"/&gt; \n"
+"    &lt;h:commandLink value=\"#{entry.description}\" action=\"#{entry.select}"
+"\"/&gt;\n"
+"&lt;/t:dataList&gt;"
+msgstr ""
+"&lt;t:dataList value=\"#{conversationStack}\" var=\"entry\"&gt;\n"
+"    &lt;h:outputText value=\" | \"/&gt; \n"
+"    &lt;h:commandLink value=\"#{entry.description}\" action=\"#{entry.select}"
+"\"/&gt;\n"
+"&lt;/t:dataList&gt;"
+
+#. Tag: para
+#: Conversations.xml:413
+#, no-c-format
+msgid ""
+"Please refer to the Seam Issue Tracker demo to see all this functionality in "
+"action!"
+msgstr ""
+"Veuillez consulter la démonstration, Seam Issue Tracker pour observer toutes "
+"ces fonctionnalités en action !"
+
+#. Tag: title
+#: Conversations.xml:421
+#, no-c-format
+msgid "Conversational components and JSF component bindings"
+msgstr "Composants de conversation et associations de composants JSF"
+
+#. Tag: para
+#: Conversations.xml:422
+#, no-c-format
+msgid ""
+"Conversational components have one minor limitation: they cannot be used to "
+"hold bindings to JSF components. (We generally prefer not to use this "
+"feature of JSF unless absolutely necessary, since it creates a hard "
+"dependency from application logic to the view.) On a postback request, "
+"component bindings are updated during the Restore View phase, before the "
+"Seam conversation context has been restored."
+msgstr ""
+"Les composants de conversation ont une limitation mineure : ils ne peuvent "
+"pas être utilisés pour stocker des associations à des composants JSF. (Nous "
+"préférons généralement ne pas utiliser cette fonction de JSF, à moins que ce "
+"ne soit absolument nécessaire, vu qu'elle crée une dépendance dure, de la "
+"logique d'application vers l'affichage.) Sur une requête postback, les "
+"associations de composants sont mises à jour durant la phase \"restaurer "
+"l'affichage\", avant la restauration du contexte de conversation Seam."
+
+#. Tag: para
+#: Conversations.xml:425
+#, fuzzy, no-c-format
+msgid ""
+"To work around this use an event scoped component to store the component "
+"bindings and inject it into the conversation scoped component that requires "
+"it."
+msgstr ""
+"Pour contourner ce problème, utilisez un composant d'évènement scoped pour "
+"stocker les associations de composants et injectez-le dans le composant de "
+"conversation scoped qui l'exige. "
+
+#. Tag: programlisting
+#: Conversations.xml:428
+#, no-c-format
+msgid ""
+"@Name(\"grid\")\n"
+"@Scope(ScopeType.EVENT)\n"
+"public class Grid\n"
+"{\n"
+"    private HtmlPanelGrid htmlPanelGrid;\n"
+"\n"
+"    // getters and setters\n"
+"    ...\n"
+"}"
+msgstr ""
+"@Name(\"grid\")\n"
+"@Scope(ScopeType.EVENT)\n"
+"public class Grid\n"
+"{\n"
+"    private HtmlPanelGrid htmlPanelGrid;\n"
+"\n"
+"    // getters and setters\n"
+"    ...\n"
+"}"
+
+#. Tag: programlisting
+#: Conversations.xml:429
+#, no-c-format
+msgid ""
+"@Name(\"gridEditor\")\n"
+"@Scope(ScopeType.CONVERSATION)\n"
+"public class GridEditor\n"
+"{\n"
+"    @In(required=false)\n"
+"    private Grid grid;\n"
+"    \n"
+"    ...\n"
+"}"
+msgstr ""
+"@Name(\"gridEditor\")\n"
+"@Scope(ScopeType.CONVERSATION)\n"
+"public class GridEditor\n"
+"{\n"
+"    @In(required=false)\n"
+"    private Grid grid;\n"
+"    \n"
+"    ...\n"
+"}"
+
+#~ msgid ""
+#~ "Notice that here we are using the MyFaces <literal>&lt;t:dataList&gt;</"
+#~ "literal> component, since JSF amazingly does not provide any standard "
+#~ "component for looping."
+#~ msgstr ""
+#~ "Notez qu'ici nous utilisons le composant, MyFaces <literal>&lt;t:"
+#~ "dataList&gt;</literal>, étant donné que JSF ne fournit aucun composant "
+#~ "standard pour le bouclage, ce qui est surprenant. "

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Drools.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Drools.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Drools.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,421 @@
+# translation of Drools.po to french
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# myriam malga <mmalga at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Drools\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2007-08-03 17:55+1000\n"
+"Last-Translator: myriam malga <mmalga at redhat.com>\n"
+"Language-Team: french\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Drools.xml:6
+#, no-c-format
+msgid "Seam and JBoss Rules"
+msgstr "Règles Seam et JBoss "
+
+#. Tag: para
+#: Drools.xml:7
+#, no-c-format
+msgid ""
+"Seam makes it easy to call JBoss Rules (Drools) rulebases from Seam "
+"components or jBPM process definitions."
+msgstr ""
+"Seam facilite l'appel des bases de règle de JBoss Rules (Drools) depuis les "
+"composants Seam ou les définitions du processus jBPM."
+
+#. Tag: title
+#: Drools.xml:11
+#, no-c-format
+msgid "Installing rules"
+msgstr "Installation des règles"
+
+#. Tag: para
+#: Drools.xml:12
+#, no-c-format
+msgid ""
+"The first step is to make an instance of <literal>org.drools.RuleBase</"
+"literal> available in a Seam context variable. In most rules-driven "
+"applications, rules need to be dynamically deployable, so you will need to "
+"implement some solution that allows you to deploy rules and make them "
+"available to Seam (a future release of Drools will provide a Rule Server "
+"that solves this problem). For testing purposes, Seam provides a built-in "
+"component that compiles a static set of rules from the classpath. You can "
+"install this component via <literal>components.xml</literal>:"
+msgstr ""
+"La première étape est de créer une instance de <literal>org.drools.RuleBase</"
+"literal> disponible dans une variable de contexte Seam. Dans la plupart des "
+"applications rules-driven, les règles doivent être déployables "
+"dynamiquement, il vous faudra alors implémenter une solution qui vous "
+"permette de déployer les règles et de les rendre disponibles à Seam (une "
+"version future de Drools fournira un Rule Server qui résoudra ce problème). "
+"Pour les tests, Seam fournit un composant imbriqué qui compile un ensemble "
+"de règles statiques depuis le chemin de classe. Vous pouvez installer ce "
+"composant via <literal>components.xml</literal> :"
+
+#. Tag: programlisting
+#: Drools.xml:15
+#, no-c-format
+msgid ""
+"&lt;drools:rule-base name=\"policyPricingRules\"&gt;\n"
+"    &lt;drools:rule-files&gt;\n"
+"        &lt;value&gt;policyPricingRules&lt;/value&gt;\n"
+"    &lt;/drools:rule-files&gt;\n"
+"&lt;/drools:rule-base&gt;"
+msgstr ""
+"&lt;drools:rule-base name=\"policyPricingRules\"&gt;\n"
+"    &lt;drools:rule-files&gt;\n"
+"        &lt;value&gt;policyPricingRules&lt;/value&gt;\n"
+"    &lt;/drools:rule-files&gt;\n"
+"&lt;/drools:rule-base&gt;"
+
+#. Tag: para
+#: Drools.xml:16
+#, no-c-format
+msgid ""
+"This component compiles rules from a set of <literal>.drl</literal> files "
+"and caches an instance of <literal>org.drools.RuleBase</literal> in the Seam "
+"<literal>APPLICATION</literal> context. Note that it is quite likely that "
+"you will need to install multiple rule bases in a rule-driven application."
+msgstr ""
+"Ce composant compile les règles d'un ensemble de fichiers <literal>.drl</"
+"literal> et met en cache une instance de <literal>org.drools.RuleBase</"
+"literal> dans le contexte Seam <literal>APPLICATION</literal>. Notez qu'il "
+"est probable que dans une application rule-driven, vous devrez installer de "
+"multiples bases de règles."
+
+#. Tag: para
+#: Drools.xml:19
+#, no-c-format
+msgid ""
+"If you want to use a Drools DSL, you alse need to specify the DSL definition:"
+msgstr ""
+"Si vous souhaitez utiliser Drools DSL, il vous faudra également spécifier la "
+"définition DSL :"
+
+#. Tag: programlisting
+#: Drools.xml:22
+#, no-c-format
+msgid ""
+"&lt;drools:rule-base name=\"policyPricingRules\" dsl-file=\"policyPricing.dsl"
+"\"&gt;\n"
+"    &lt;drools:rule-files&gt;\n"
+"        &lt;value&gt;policyPricingRules&lt;/value&gt;\n"
+"    &lt;/drools:rule-files&gt;\n"
+"&lt;/drools:rule-base&gt;"
+msgstr ""
+"&lt;drools:rule-base name=\"policyPricingRules\" dsl-file=\"policyPricing.dsl"
+"\"&gt;\n"
+"    &lt;drools:rule-files&gt;\n"
+"        &lt;value&gt;policyPricingRules&lt;/value&gt;\n"
+"    &lt;/drools:rule-files&gt;\n"
+"&lt;/drools:rule-base&gt;"
+
+#. Tag: para
+#: Drools.xml:23
+#, no-c-format
+msgid ""
+"Next, we need to make an instance of <literal>org.drools.WorkingMemory</"
+"literal> available to each conversation. (Each <literal>WorkingMemory</"
+"literal> accumulates facts relating to the current conversation.)"
+msgstr ""
+"Ensuite, nous devons créer une instance de <literal>org.drools."
+"WorkingMemory</literal> disponible à chaque conversation. (Chaque "
+"<literal>WorkingMemory</literal> accumule des faits en relation avec la "
+"conversation courante.)"
+
+#. Tag: programlisting
+#: Drools.xml:26
+#, no-c-format
+msgid ""
+"&lt;drools:managed-working-memory name=\"policyPricingWorkingMemory\" auto-"
+"create=\"true\" rule-base=\"#{policyPricingRules}\"/&gt;"
+msgstr ""
+"&lt;drools:managed-working-memory name=\"policyPricingWorkingMemory\" auto-"
+"create=\"true\" rule-base=\"#{policyPricingRules}\"/&gt;"
+
+#. Tag: para
+#: Drools.xml:27
+#, no-c-format
+msgid ""
+"Notice that we gave the <literal>policyPricingWorkingMemory</literal> a "
+"reference back to our rule base via the <literal>ruleBase</literal> "
+"configuration property."
+msgstr ""
+"Notez que nous avons donné une référence à "
+"<literal>policyPricingWorkingMemory</literal> vers notre base de règle, via "
+"la propriété de configuration <literal>ruleBase</literal>. "
+
+#. Tag: title
+#: Drools.xml:33
+#, no-c-format
+msgid "Using rules from a Seam component"
+msgstr "Utilisation de règles depuis un composant Seam"
+
+#. Tag: para
+#: Drools.xml:34
+#, no-c-format
+msgid ""
+"We can now inject our <literal>WorkingMemory</literal> into any Seam "
+"component, assert facts, and fire rules:"
+msgstr ""
+"Nous pouvons maintenant injecter notre <literal>WorkingMemory</literal> dans "
+"tout composant Seam, déclarer des faits, et exécuter des règles :"
+
+#. Tag: programlisting
+#: Drools.xml:37
+#, no-c-format
+msgid ""
+"@In WorkingMemory policyPricingWorkingMemory;\n"
+"\n"
+"@In Policy policy;\n"
+"@In Customer customer;\n"
+"\n"
+"public void pricePolicy() throws FactException\n"
+"{\n"
+"    policyPricingWorkingMemory.assertObject(policy);\n"
+"    policyPricingWorkingMemory.assertObject(customer);\n"
+"    policyPricingWorkingMemory.fireAllRules();\n"
+"}"
+msgstr ""
+"@In WorkingMemory policyPricingWorkingMemory;\n"
+"\n"
+"@In Policy policy;\n"
+"@In Customer customer;\n"
+"\n"
+"public void pricePolicy() throws FactException\n"
+"{\n"
+"    policyPricingWorkingMemory.assertObject(policy);\n"
+"    policyPricingWorkingMemory.assertObject(customer);\n"
+"    policyPricingWorkingMemory.fireAllRules();\n"
+"}"
+
+#. Tag: title
+#: Drools.xml:41
+#, no-c-format
+msgid "Using rules from a jBPM process definition"
+msgstr "Utilisation de règles depuis une définition de processus jBPM"
+
+#. Tag: para
+#: Drools.xml:42
+#, no-c-format
+msgid ""
+"You can even allow a rule base to act as a jBPM action handler, decision "
+"handler, or assignment handler&mdash;in either a pageflow or business "
+"process definition."
+msgstr ""
+"Vous pouvez même permettre à une base de règle d'agir en tant que "
+"gestionnaire d'actions jBPM, gestionnaire de décisions, ou gestionnaire de "
+"tâches&mdash;dans tous les cas, un flux de page ou une définition du "
+"processus métier."
+
+#. Tag: programlisting
+#: Drools.xml:45
+#, no-c-format
+msgid ""
+"&lt;decision name=\"approval\"&gt;\n"
+"         \n"
+"    &lt;handler class=\"org.jboss.seam.drools.DroolsDecisionHandler\"&gt;\n"
+"        &lt;workingMemoryName&gt;orderApprovalRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"        &lt;assertObjects&gt;\n"
+"            &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"            &lt;element&gt;#{order}&lt;/element&gt;\n"
+"            &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"        &lt;/assertObjects&gt;\n"
+"    &lt;/handler&gt;\n"
+"    \n"
+"    &lt;transition name=\"approved\" to=\"ship\"&gt;\n"
+"        &lt;action class=\"org.jboss.seam.drools.DroolsActionHandler\"&gt;\n"
+"            &lt;workingMemoryName&gt;shippingRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"            &lt;assertObjects&gt;\n"
+"                &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"            &lt;/assertObjects&gt;\n"
+"        &lt;/action&gt;\n"
+"    &lt;/transition&gt;\n"
+"    \n"
+"    &lt;transition name=\"rejected\" to=\"cancelled\"/&gt;\n"
+"    \n"
+"&lt;/decision&gt;"
+msgstr ""
+"&lt;decision name=\"approval\"&gt;\n"
+"         \n"
+"    &lt;handler class=\"org.jboss.seam.drools.DroolsDecisionHandler\"&gt;\n"
+"        &lt;workingMemoryName&gt;orderApprovalRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"        &lt;assertObjects&gt;\n"
+"            &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"            &lt;element&gt;#{order}&lt;/element&gt;\n"
+"            &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"        &lt;/assertObjects&gt;\n"
+"    &lt;/handler&gt;\n"
+"    \n"
+"    &lt;transition name=\"approved\" to=\"ship\"&gt;\n"
+"        &lt;action class=\"org.jboss.seam.drools.DroolsActionHandler\"&gt;\n"
+"            &lt;workingMemoryName&gt;shippingRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"            &lt;assertObjects&gt;\n"
+"                &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"            &lt;/assertObjects&gt;\n"
+"        &lt;/action&gt;\n"
+"    &lt;/transition&gt;\n"
+"    \n"
+"    &lt;transition name=\"rejected\" to=\"cancelled\"/&gt;\n"
+"    \n"
+"&lt;/decision&gt;"
+
+#. Tag: para
+#: Drools.xml:46
+#, no-c-format
+msgid ""
+"The <literal>&lt;assertObjects&gt;</literal> element specifies EL "
+"expressions that return an object or collection of objects to be asserted as "
+"facts into the <literal>WorkingMemory</literal>."
+msgstr ""
+"L'élément <literal>&lt;assertObjects&gt;</literal> spécifie les expressions "
+"EL qui retournent un objet ou une collection d'objets à déclarer en tant que "
+"faits dans le <literal>WorkingMemory</literal>."
+
+#. Tag: para
+#: Drools.xml:49
+#, no-c-format
+msgid "There is also support for using Drools for jBPM task assignments:"
+msgstr ""
+"Il y a églement un support pour l'utilisation des Drools pour les "
+"attributions de tâches jBPM :"
+
+#. Tag: programlisting
+#: Drools.xml:52
+#, no-c-format
+msgid ""
+"&lt;task-node name=\"review\"&gt;\n"
+"    &lt;task name=\"review\" description=\"Review Order\"&gt;\n"
+"        &lt;assignment handler=\"org.jboss.seam.drools."
+"DroolsAssignmentHandler\"&gt;\n"
+"            &lt;workingMemoryName&gt;orderApprovalRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"            &lt;assertObjects&gt;\n"
+"                &lt;element&gt;#{actor}&lt;/element&gt;\n"
+"                &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"            &lt;/assertObjects&gt;\n"
+"        &lt;/assignment&gt;\n"
+"    &lt;/task&gt;\n"
+"    &lt;transition name=\"rejected\" to=\"cancelled\"/&gt;\n"
+"    &lt;transition name=\"approved\" to=\"approved\"/&gt;\n"
+"&lt;/task-node&gt;"
+msgstr ""
+"&lt;task-node name=\"review\"&gt;\n"
+"    &lt;task name=\"review\" description=\"Review Order\"&gt;\n"
+"        &lt;assignment handler=\"org.jboss.seam.drools."
+"DroolsAssignmentHandler\"&gt;\n"
+"            &lt;workingMemoryName&gt;orderApprovalRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"            &lt;assertObjects&gt;\n"
+"                &lt;element&gt;#{actor}&lt;/element&gt;\n"
+"                &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"            &lt;/assertObjects&gt;\n"
+"        &lt;/assignment&gt;\n"
+"    &lt;/task&gt;\n"
+"    &lt;transition name=\"rejected\" to=\"cancelled\"/&gt;\n"
+"    &lt;transition name=\"approved\" to=\"approved\"/&gt;\n"
+"&lt;/task-node&gt;"
+
+#. Tag: para
+#: Drools.xml:53
+#, no-c-format
+msgid ""
+"Certain objects are available to the rules as Drools globals, namely the "
+"jBPM <literal>Assignable</literal>, as <literal>assignable</literal> and a "
+"Seam <literal>Decision</literal> object, as <literal>decision</literal>. "
+"Rules which handle decisions should call <literal>decision.setOutcome"
+"(\"result\")</literal> to determine the result of the decision. Rules which "
+"perform assignments should set the actor id using the <literal>Assignable</"
+"literal>."
+msgstr ""
+"Certains objets sont disponibles aux règles en tant que Drools globaux, "
+"c'est-à-dire <literal>Assignable</literal> jBPM, comme <literal>assignable</"
+"literal> et un objet Seam <literal>Decision</literal>, comme "
+"<literal>decision</literal>. Les règles qui traitent les décisions devraient "
+"appeler <literal>decision.setOutcome(\"result\")</literal> pour déterminer "
+"le résultat de la décision. Les règles qui effectuent des attributions "
+"devraient définir l'id d'acteur, avec le <literal>Assignable</literal>."
+
+#. Tag: programlisting
+#: Drools.xml:56
+#, no-c-format
+msgid ""
+"package org.jboss.seam.examples.shop\n"
+"\n"
+"import org.jboss.seam.drools.Decision\n"
+"\n"
+"global Decision decision\n"
+"\n"
+"rule \"Approve Order For Loyal Customer\"\n"
+"  when\n"
+"    Customer( loyaltyStatus == \"GOLD\" )\n"
+"    Order( totalAmount &lt;= 10000 )\n"
+"  then\n"
+"    decision.setOutcome(\"approved\");\n"
+"end"
+msgstr ""
+"package org.jboss.seam.examples.shop\n"
+"\n"
+"import org.jboss.seam.drools.Decision\n"
+"\n"
+"global Decision decision\n"
+"\n"
+"rule \"Approve Order For Loyal Customer\"\n"
+"  when\n"
+"    Customer( loyaltyStatus == \"GOLD\" )\n"
+"    Order( totalAmount &lt;= 10000 )\n"
+"  then\n"
+"    decision.setOutcome(\"approved\");\n"
+"end"
+
+#. Tag: programlisting
+#: Drools.xml:57
+#, no-c-format
+msgid ""
+"package org.jboss.seam.examples.shop\n"
+"\n"
+"import org.jbpm.taskmgmt.exe.Assignable\n"
+"\n"
+"global Assignable assignable\n"
+"\n"
+"rule \"Assign Review For Small Order\"\n"
+"  when\n"
+"    Order( totalAmount &lt;= 100 )\n"
+"  then\n"
+"    assignable.setPooledActors( new String[] {\"reviewers\"} );\n"
+"end"
+msgstr ""
+"package org.jboss.seam.examples.shop\n"
+"\n"
+"import org.jbpm.taskmgmt.exe.Assignable\n"
+"\n"
+"global Assignable assignable\n"
+"\n"
+"rule \"Assign Review For Small Order\"\n"
+"  when\n"
+"    Order( totalAmount &lt;= 100 )\n"
+"  then\n"
+"    assignable.setPooledActors( new String[] {\"reviewers\"} );\n"
+"end"

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Elenhancements.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Elenhancements.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Elenhancements.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,283 @@
+# translation of Elenhancements.po to french
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# myriam malga <mmalga at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Elenhancements\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2007-08-03 18:02+1000\n"
+"Last-Translator: myriam malga <mmalga at redhat.com>\n"
+"Language-Team: french\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Elenhancements.xml:6
+#, no-c-format
+msgid "Expression language enhancements"
+msgstr "Améliorations du langage d'expression "
+
+#. Tag: para
+#: Elenhancements.xml:7
+#, no-c-format
+msgid ""
+"The standard Unified Expression Language (EL) assumes that any parameters to "
+"a method expression will be provided by Java code. This means that a method "
+"with parameters cannot be used as a JSF method binding. Seam provides an "
+"enhancement to the EL that allows parameters to be included in a method "
+"expression itself. This applies to <emphasis>any</emphasis> Seam method "
+"expression, including any JSF method binding, for example:"
+msgstr ""
+"Le Unified Expression Language (EL) standard présume que tous les paramètres "
+"à l'expression d'une méthode sont fournis par le code Java. Cela signifie "
+"qu'une méthode avec des paramètres ne peut pas être utilisée comme une "
+"association de méthode JSF. Seam fournit une amélioration à EL qui permet "
+"aux paramètres d'être inclus dans l'expression elle-même. Cela s'applique à "
+"<emphasis>toute</emphasis> expression de la méthode Seam, y compris à toute "
+"association de méthode JSF, par exemple :"
+
+#. Tag: programlisting
+#: Elenhancements.xml:10
+#, no-c-format
+msgid ""
+"&lt;s:commandButton action=\"#{hotelBooking.bookHotel(hotel)}\" value=\"Book "
+"Hotel\"/&gt;"
+msgstr ""
+"&lt;s:commandButton action=\"#{hotelBooking.bookHotel(hotel)}\" value=\"Book "
+"Hotel\"/&gt;"
+
+#. Tag: title
+#: Elenhancements.xml:12
+#, no-c-format
+msgid "Configuration"
+msgstr "Configuration"
+
+#. Tag: para
+#: Elenhancements.xml:13
+#, no-c-format
+msgid ""
+"To use this feature in Facelets, you will need to declare a special view "
+"handler, <literal>SeamFaceletViewHandler</literal> in <literal>faces-config."
+"xml</literal>."
+msgstr ""
+"Pour utiliser cette fonctionnalité dans Facelets, il vous sera nécessaire de "
+"déclarer un gestionnaire d'affichage particulier, "
+"<literal>SeamFaceletViewHandler</literal> dans <literal>faces-config.xml</"
+"literal>."
+
+#. Tag: programlisting
+#: Elenhancements.xml:16
+#, no-c-format
+msgid ""
+"&lt;faces-config&gt;\n"
+"    &lt;application&gt;\n"
+"        &lt;view-handler&gt;org.jboss.seam.ui.facelet."
+"SeamFaceletViewHandler&lt;/view-handler&gt;\n"
+"    &lt;/application&gt;\n"
+"&lt;/faces-config&gt;"
+msgstr ""
+"&lt;faces-config&gt;\n"
+"    &lt;application&gt;\n"
+"        &lt;view-handler&gt;org.jboss.seam.ui.facelet."
+"SeamFaceletViewHandler&lt;/view-handler&gt;\n"
+"    &lt;/application&gt;\n"
+"&lt;/faces-config&gt;"
+
+#. Tag: title
+#: Elenhancements.xml:20
+#, no-c-format
+msgid "Usage"
+msgstr "Usage"
+
+#. Tag: para
+#: Elenhancements.xml:21
+#, no-c-format
+msgid "Parameters are surrounded by parentheses, and separated by commas:"
+msgstr ""
+"Les paramètres sont entourés de parenthèses, et séparés par des virgules :"
+
+#. Tag: programlisting
+#: Elenhancements.xml:24
+#, no-c-format
+msgid ""
+"&lt;h:commandButton action=\"#{hotelBooking.bookHotel(hotel, user)}\" value="
+"\"Book Hotel\"/&gt;"
+msgstr ""
+"&lt;h:commandButton action=\"#{hotelBooking.bookHotel(hotel, user)}\" value="
+"\"Book Hotel\"/&gt;"
+
+#. Tag: para
+#: Elenhancements.xml:25
+#, no-c-format
+msgid ""
+"The parameters <literal>hotel</literal> and <literal>user</literal> will be "
+"evaluated as value expressions and passed to the <literal>bookHotel()</"
+"literal> method of the component. This gives you an alternative to the use "
+"of <literal>@In</literal>."
+msgstr ""
+"Les paramètres <literal>hotel</literal> et <literal>user</literal> seront "
+"évalués en tant qu'expressions de valeur et passés à la méthode "
+"<literal>bookHotel()</literal> du composant. Cela vous offre une alternative "
+"à l'utilisation de <literal>@In</literal>."
+
+#. Tag: para
+#: Elenhancements.xml:28
+#, no-c-format
+msgid "Any value expression may be used as a parameter:"
+msgstr "Toute valeur d'expression peut être utilisée en tant que paramètre :"
+
+#. Tag: programlisting
+#: Elenhancements.xml:31
+#, no-c-format
+msgid ""
+"&lt;h:commandButton action=\"#{hotelBooking.bookHotel(hotel.id, user."
+"username)}\" value=\"Book Hotel\"/&gt;"
+msgstr ""
+"&lt;h:commandButton action=\"#{hotelBooking.bookHotel(hotel.id, user."
+"username)}\" value=\"Book Hotel\"/&gt;"
+
+#. Tag: para
+#: Elenhancements.xml:32
+#, no-c-format
+msgid "You may even pass literal strings using single or double quotes:"
+msgstr ""
+"Vous pouvez même passer des chaînes littérales en utilisant des guillemets "
+"doubles ou simples :"
+
+#. Tag: programlisting
+#: Elenhancements.xml:35
+#, fuzzy, no-c-format
+msgid ""
+"&lt;h:commandLink action=”#{printer.println( ‘Hello world!’ )}” "
+"value=”Hello”/&gt;"
+msgstr ""
+"&lt;h:commandLink action=&#8221;#{printer.println( &#8216;Hello world!"
+"&#8217; )}&#8221; value=&#8221;Hello&#8221;/&gt;"
+
+#. Tag: programlisting
+#: Elenhancements.xml:36
+#, fuzzy, no-c-format
+msgid ""
+"&lt;h:commandLink action=’#{printer.println( “Hello again” )}’ value=’Hello’/"
+"&gt;"
+msgstr ""
+"&lt;h:commandLink action=&#8217;#{printer.println( &#8220;Hello "
+"again&#8221; )}&#8217; value=&#8217;Hello&#8217;/&gt;"
+
+#. Tag: para
+#: Elenhancements.xml:37
+#, fuzzy, no-c-format
+msgid ""
+"You might even want to use this notation for all your action methods, even "
+"when you don’t have parameters to pass. This improves readability by making "
+"it clear that the expression is a method expression and not a value "
+"expression:"
+msgstr ""
+"Vous pourrez également utiliser cette notation pour toutes vos méthodes "
+"d'action, même quand vous n'avez pas de paramètres à passer. Cela améliore "
+"la lisibilité en indiquant que l'expression est une méthode d'expression et "
+"non une expression de la valeur :"
+
+#. Tag: programlisting
+#: Elenhancements.xml:40
+#, no-c-format
+msgid "&lt;s:link value=\"Cancel\" action=\"#{hotelBooking.cancel()}\"/&gt;"
+msgstr "&lt;s:link value=\"Cancel\" action=\"#{hotelBooking.cancel()}\"/&gt;"
+
+#. Tag: title
+#: Elenhancements.xml:44
+#, no-c-format
+msgid "Limitations"
+msgstr "Limitations"
+
+#. Tag: para
+#: Elenhancements.xml:45
+#, no-c-format
+msgid "Please be aware of the following limitations:"
+msgstr "Veuillez considérer les limitations suivantes :"
+
+#. Tag: title
+#: Elenhancements.xml:49
+#, no-c-format
+msgid "Incompatibility with JSP 2.1"
+msgstr "Incompatibilité avec JSP 2.1"
+
+#. Tag: para
+#: Elenhancements.xml:50
+#, no-c-format
+msgid ""
+"This extension is not currently compatible with JSP 2.1. So if you want to "
+"use this extension with JSF 1.2, you will need to use Facelets. The "
+"extension works correctly with JSP 2.0."
+msgstr ""
+"Cette extension n'est pas actuellement compatible avec JSP 2.1. Par "
+"conséquent, si vous souhaitez utiliser cette extension avec JSF 1.2, il vous "
+"sera nécessaire d'utiliser Facelets. L'extension fonctionne parfaitement "
+"avec JSP 2.0."
+
+#. Tag: title
+#: Elenhancements.xml:56
+#, no-c-format
+msgid "Calling a <literal>MethodExpression</literal> from Java code"
+msgstr "Appel d'une <literal>MethodExpression</literal> depuis le code Java"
+
+#. Tag: para
+#: Elenhancements.xml:57
+#, fuzzy, no-c-format
+msgid ""
+"Normally, when a <literal>MethodExpression</literal> or "
+"<literal>MethodBinding</literal> is created, the parameter types are passed "
+"in by JSF. In the case of a method binding, JSF assumes that there are no "
+"parameters to pass. With this extension, we can’t know the parameter types "
+"until after the expression has been evaluated. This has two minor "
+"consequences:"
+msgstr ""
+"Normalement, quand une <literal>MethodExpression</literal> ou "
+"<literal>MethodBinding</literal> est créée, les types de paramètres sont "
+"passés par JSF. Dans le cas d'une association de méthode, JSF présume qu'il "
+"n'y a pas de paramètres à passer. Avec cette extension, nous ne pouvons "
+"connaître les types de paramètres qu'après l'évaluation de l'expression. "
+"Cela a deux conséquences mineures :"
+
+#. Tag: para
+#: Elenhancements.xml:62
+#, no-c-format
+msgid ""
+"When you invoke a <literal>MethodExpression</literal> in Java code, "
+"parameters you pass may be ignored. Parameters defined in the expression "
+"will take precedence."
+msgstr ""
+"Quand vous invoquez une <literal>MethodExpression</literal> en code Java, "
+"les paramètres que vous passez peuvent être ignorés. Les paramètres dans "
+"l'expression seront prioritaires. "
+
+#. Tag: para
+#: Elenhancements.xml:67
+#, no-c-format
+msgid ""
+"Ordinarily, it is safe to call <literal>methodExpression.getMethodInfo()."
+"getParamTypes()</literal> at any time. For an expression with parameters, "
+"you must first invoke the <literal>MethodExpression</literal> before calling "
+"<literal>getParamTypes()</literal>."
+msgstr ""
+"Généralement, il est sûr d'appeler <literal>methodExpression.getMethodInfo()."
+"getParamTypes()</literal> à tout moment. Pour une expression avec des "
+"paramètres, vous devez d'abord appeler la <literal>MethodExpression</"
+"literal> avant d'appeler <literal>getParamTypes()</literal>."
+
+#. Tag: para
+#: Elenhancements.xml:72
+#, no-c-format
+msgid ""
+"Both of these cases are exceedingly rare and only apply when you want to "
+"invoke the <literal>MethodExpression</literal> by hand in Java code."
+msgstr ""
+"Ces deux cas sont extrêmement rares et ne s'appliquent que quand vous "
+"désirez appeler la <literal>MethodExpression</literal> manuellement, en code "
+"Java."

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Events.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Events.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Events.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2081 @@
+# translation of Events.po to french
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# myriam malga <mmalga at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Events\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2007-08-06 10:26+1000\n"
+"Last-Translator: myriam malga <mmalga at redhat.com>\n"
+"Language-Team: french\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Events.xml:6
+#, no-c-format
+msgid "Events, interceptors and exception handling"
+msgstr "Gestion des évènements, intercepteurs et exceptions"
+
+#. Tag: para
+#: Events.xml:7
+#, no-c-format
+msgid ""
+"Complementing the contextual component model, there are two further basic "
+"concepts that facilitate the extreme loose-coupling that is the distinctive "
+"feature of Seam applications. The first is a strong event model where events "
+"may be mapped to event listeners via JSF-like method binding expressions. "
+"The second is the pervasive use of annotations and interceptors to apply "
+"cross-cutting concerns to components which implement business logic."
+msgstr ""
+"Pour compléter le modèle de composant contextuel, il existe deux autres "
+"concepts de base qui facilitent un extrême loose-coupling qui est une "
+"fonctionnalité particulière des applications Seam. Le premier est un modèle "
+"d'évènement puissant, où les évènements peuvent être mappés aux auditeurs "
+"d'évènements via les expressions d'association de méthodes. Le deuxième est "
+"l'utilisation généralisée des annotations et intercepteurs pour appliquer "
+"les préoccupations transverses aux composants qui implémentent la logique "
+"métier. "
+
+#. Tag: title
+#: Events.xml:10
+#, no-c-format
+msgid "Seam events"
+msgstr "Évènements Seam"
+
+#. Tag: para
+#: Events.xml:11
+#, no-c-format
+msgid ""
+"The Seam component model was developed for use with <emphasis>event-driven "
+"applications</emphasis>, specifically to enable the development of fine-"
+"grained, loosely-coupled components in a fine-grained eventing model. Events "
+"in Seam come in several types, most of which we have already seen:"
+msgstr ""
+"Le modèle de composant Seam a été développé pour une utilisation avec des "
+"<emphasis>applications event-driven</emphasis>, spécifiquement pour activer "
+"le développement de composants à fine granularité, et à faible dépendance "
+"dans un modèle d'évènement à fine granularité. Les évènements dans Seam sont "
+"de plusieurs types, et nous les avons traités pour la plupart : "
+
+#. Tag: para
+#: Events.xml:16
+#, no-c-format
+msgid "JSF events"
+msgstr "Évènements JSF "
+
+#. Tag: para
+#: Events.xml:21
+#, no-c-format
+msgid "jBPM transition events"
+msgstr "Évènements de transition jBPM"
+
+#. Tag: para
+#: Events.xml:26
+#, no-c-format
+msgid "Seam page actions"
+msgstr "Actions de page Seam"
+
+#. Tag: para
+#: Events.xml:31
+#, fuzzy, no-c-format
+msgid "Seam component-driven events"
+msgstr "Évènements component-driven Seam"
+
+#. Tag: para
+#: Events.xml:36
+#, no-c-format
+msgid "Seam contextual events"
+msgstr "Évènements contextuels Seam"
+
+#. Tag: para
+#: Events.xml:41
+#, no-c-format
+msgid ""
+"All of these various kinds of events are mapped to Seam components via JSF "
+"EL method binding expressions. For a JSF event, this is defined in the JSF "
+"template:"
+msgstr ""
+"Tous ces types différents d'évènements sont mappés aux composants Seam via "
+"les expressions d'associations de méthodes JSF EL. Pour un évèmenent JSF, "
+"cela est défini dans la matrice JSF :"
+
+#. Tag: programlisting
+#: Events.xml:44
+#, no-c-format
+msgid ""
+"&lt;h:commandButton value=\"Click me!\" action=\"#{helloWorld.sayHello}\"/"
+"&gt;"
+msgstr ""
+"&lt;h:commandButton value=\"Click me!\" action=\"#{helloWorld.sayHello}\"/"
+"&gt;"
+
+#. Tag: para
+#: Events.xml:45
+#, no-c-format
+msgid ""
+"For a jBPM transition event, it is specified in the jBPM process definition "
+"or pageflow definition:"
+msgstr ""
+"Pour un évènement de transition jBPM, il est spécifié dans la définition du "
+"processus ou la définition du flux de la page :"
+
+#. Tag: programlisting
+#: Events.xml:48
+#, no-c-format
+msgid ""
+"&lt;start-page name=\"hello\" view-id=\"/hello.jsp\"&gt;\n"
+"    &lt;transition to=\"hello\"&gt;\n"
+"        &lt;action expression=\"#{helloWorld.sayHello}\"/&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/start-page&gt;"
+msgstr ""
+"&lt;start-page name=\"hello\" view-id=\"/hello.jsp\"&gt;\n"
+"    &lt;transition to=\"hello\"&gt;\n"
+"        &lt;action expression=\"#{helloWorld.sayHello}\"/&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/start-page&gt;"
+
+#. Tag: para
+#: Events.xml:49
+#, no-c-format
+msgid ""
+"You can find out more information about JSF events and jBPM events "
+"elsewhere. Lets concentrate for now upon the two additional kinds of events "
+"defined by Seam."
+msgstr ""
+"Vous pouvez en apprendre plus sur les évènements JSF et les évènements jBPM "
+"ailleurs. Concentrons-nous pour l'instant sur deux types d'évènements "
+"définis par Seam."
+
+#. Tag: title
+#: Events.xml:52
+#, no-c-format
+msgid "Page actions"
+msgstr "Actions de page"
+
+#. Tag: para
+#: Events.xml:53
+#, no-c-format
+msgid ""
+"A Seam page action is an event that occurs just before we render a page. We "
+"declare page actions in <literal>WEB-INF/pages.xml</literal>. We can define "
+"a page action for either a particular JSF view id:"
+msgstr ""
+"Une action de page Seam est un évènement qui a lieu juste avant de donner le "
+"rendu d'une page. Nous déclarons les actions de page dans <literal>WEB-INF/"
+"pages.xml</literal>. Nous pouvons définir une action de page pour un un id "
+"d'affichage JSF particulier."
+
+#. Tag: programlisting
+#: Events.xml:56
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\" action=\"#{helloWorld.sayHello}\"/&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\" action=\"#{helloWorld.sayHello}\"/&gt;\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Events.xml:57
+#, no-c-format
+msgid ""
+"Or we can use a wildcard to specify an action that applies to all view ids "
+"that match the pattern:"
+msgstr ""
+"Ou nous pouvons utiliser un caractère générique pour spécifier une action "
+"qui s'applique à tous les ids d'affichage qui correspondent au modèle : "
+
+#. Tag: programlisting
+#: Events.xml:60
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello/*\" action=\"#{helloWorld.sayHello}\"/&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello/*\" action=\"#{helloWorld.sayHello}\"/&gt;\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Events.xml:61
+#, no-c-format
+msgid ""
+"If multiple wildcarded page actions match the current view-id, Seam will "
+"call all the actions, in order of least-specific to most-specific."
+msgstr ""
+"Si des actions de page de caractères génériques multiples correspondent à "
+"l'id d'affichage courant, Seam appellera toutes les actions, allant de la "
+"moins spécifique à la plus spécifique. "
+
+#. Tag: para
+#: Events.xml:64
+#, fuzzy, no-c-format
+msgid ""
+"The page action method can return a JSF outcome. If the outcome is non-null, "
+"Seam will use the defined navigation rules to navigate to a view."
+msgstr ""
+"La méthode d'action de page peut retourner un résultat JSF. Si le résultat "
+"est non-nulle, Seam délèguera aux règles de navigation définies Seam JSFadn "
+"et un affichage différent pourra être rendu."
+
+#. Tag: para
+#: Events.xml:67
+#, no-c-format
+msgid ""
+"Furthermore, the view id mentioned in the <literal>&lt;page&gt;</literal> "
+"element need not correspond to a real JSP or Facelets page! So, we can "
+"reproduce the functionality of a traditional action-oriented framework like "
+"Struts or WebWork using page actions. For example:"
+msgstr ""
+"Par ailleurs, l'id d'affichage mentionné dans l'élément <literal>&lt;page&gt;"
+"</literal> doit correspondre à un réel JSP ou à une page Facelets ! Ainsi, "
+"nous pouvons reproduire la fonctionnalité d'un framework traditionnel "
+"orienté action comme Struts ou WebWork utilisant les actions de page. Par "
+"exemple :"
+
+#. Tag: programlisting
+#: Events.xml:70
+#, no-c-format
+msgid "TODO: translate struts action into page action"
+msgstr "TODO : traduit l'action struts dans l'action de page"
+
+#. Tag: para
+#: Events.xml:71
+#, no-c-format
+msgid ""
+"This is quite useful if you want to do complex things in response to non-"
+"faces requests (for example, HTTP GET requests)."
+msgstr ""
+"Cela est bien utile si vous désirez effectuer des opérations complexes en "
+"réponse aux requêtes non-faces (par exemple, les requêtes HTTP GET)."
+
+#. Tag: title
+#: Events.xml:74
+#, no-c-format
+msgid "Page parameters"
+msgstr "Paramètres de page"
+
+#. Tag: para
+#: Events.xml:75
+#, no-c-format
+msgid ""
+"A JSF faces request (a form submission) encapsulates both an \"action\" (a "
+"method binding) and \"parameters\" (input value bindings). A page action "
+"might also needs parameters!"
+msgstr ""
+"Une requête faces JSF (une soumission de formulaire) comprend à la fois une "
+"\"action\" (une association de méthodes) et des \"paramètres\" (des "
+"associations de valeurs d'entrée). Une action de page peut aussi exiger des "
+"paramètres !"
+
+#. Tag: para
+#: Events.xml:78
+#, no-c-format
+msgid ""
+"Since GET requests are bookmarkable, page parameters are passed as human-"
+"readable request parameters. (Unlike JSF form inputs, which are anything "
+"but!)"
+msgstr ""
+"Étant donné que les requêtes GET peuvent être mises en signet, les "
+"paramètres de page sont passés comme des paramètres de requêtes, humainement "
+"lisibles. (Contrairement aux entrées de formulaires JSF, qui ne sont pas du "
+"tout pareils !)"
+
+#. Tag: para
+#: Events.xml:81
+#, no-c-format
+msgid ""
+"Seam lets us provide a value binding that maps a named request parameter to "
+"an attribute of a model object."
+msgstr ""
+"Seam nous permet de fournir une association de valeur qui mappe un paramètre "
+"de requête nommé à un attribut d'objet modèle."
+
+#. Tag: programlisting
+#: Events.xml:84
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\" action=\"#{helloWorld.sayHello}\"&gt;\n"
+"        &lt;param name=\"firstName\" value=\"#{person.firstName}\"/&gt;\n"
+"        &lt;param name=\"lastName\" value=\"#{person.lastName}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\" action=\"#{helloWorld.sayHello}\"&gt;\n"
+"        &lt;param name=\"firstName\" value=\"#{person.firstName}\"/&gt;\n"
+"        &lt;param name=\"lastName\" value=\"#{person.lastName}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Events.xml:85
+#, no-c-format
+msgid ""
+"The <literal>&lt;param&gt;</literal> declaration is bidirectional, just like "
+"a value binding for a JSF input:"
+msgstr ""
+"La déclaration <literal>&lt;param&gt;</literal> est bi-directionnelle, tout "
+"comme une association de valeur pour une entrée JSF :"
+
+#. Tag: para
+#: Events.xml:90
+#, no-c-format
+msgid ""
+"When a non-faces (GET) request for the view id occurs, Seam sets the value "
+"of the named request parameter onto the model object, after performing "
+"appropriate type conversions."
+msgstr ""
+"Quand une requête non-faces (GET) pour l'id d'affichage a lieu, Seam définit "
+"la valeur du paramètre de requête nommé sur l'objet modèle, après avoir "
+"effectué les conversions de type approprié."
+
+#. Tag: para
+#: Events.xml:95
+#, no-c-format
+msgid ""
+"Any <literal>&lt;s:link&gt;</literal> or <literal>&lt;s:button&gt;</literal> "
+"transparently includes the request parameter. The value of the parameter is "
+"determined by evaluating the value binding during the render phase (when the "
+"<literal>&lt;s:link&gt;</literal> is rendered)."
+msgstr ""
+"Tout <literal>&lt;s:link&gt;</literal> ou <literal>&lt;s:button&gt;</"
+"literal> inclut le paramètre de requête de façon transparente. La valeur du "
+"paramètre est déterminée en évaluant l'association de la valeur durant la "
+"phase du rendu (quand le <literal>&lt;s:link&gt;</literal> est affiché)."
+
+#. Tag: para
+#: Events.xml:100
+#, no-c-format
+msgid ""
+"Any navigation rule with a <literal>&lt;redirect/&gt;</literal> to the view "
+"id transparently includes the request parameter. The value of the parameter "
+"is determined by evaluating the value binding at the end of the invoke "
+"application phase."
+msgstr ""
+"Toute règle de navigation avec un <literal>&lt;redirect/&gt;</literal> vers "
+"l'id de l'affichage inclut de façon transparente le paramètre de requête. La "
+"valeur du paramètre est déterminée par l'évaluation de l'association de la "
+"valeur à la fin de la phase d'application de l'appel."
+
+#. Tag: para
+#: Events.xml:105
+#, no-c-format
+msgid ""
+"The value is transparently propagated with any JSF form submission for the "
+"page with the given view id. (This means that view parameters behave like "
+"<literal>PAGE</literal>-scoped context variables for faces requests."
+msgstr ""
+"La valeur est propagée de façon transparente avec toute soumission de "
+"formulaire JSF pour la page avec l'id d'affichage donné. (Cela signifie que "
+"les paramètres d'affichage se comportent comme les variables de "
+"contexte<literal>PAGE</literal>-scoped pour des requêtes faces."
+
+#. Tag: para
+#: Events.xml:110
+#, no-c-format
+msgid ""
+"The essential idea behind all this is that <emphasis>however</emphasis> we "
+"get from any other page to <literal>/hello.jsp</literal> (or from <literal>/"
+"hello.jsp</literal> back to <literal>/hello.jsp</literal>), the value of the "
+"model attribute referred to in the value binding is \"remembered\", without "
+"the need for a conversation (or other server-side state)."
+msgstr ""
+"L'idée essentielle dans tout cela, est que <emphasis>quelque soit</emphasis> "
+"la façon dont on arrive, depuis toute autre page à <literal>/hello.jsp</"
+"literal> (ou depuis <literal>/hello.jsp</literal> à <literal>/hello.jsp</"
+"literal>), la valeur de l'attribut modèle auquel on se réfère dans "
+"l'association de valeurs est \"remémorée\", sans la nécessité d'une "
+"conversation (ou autre état, côté serveur)."
+
+#. Tag: para
+#: Events.xml:113
+#, fuzzy, no-c-format
+msgid ""
+"This all sounds pretty complex, and you&#39;re probably wondering if such an "
+"exotic construct is really worth the effort. Actually, the idea is very "
+"natural once you \"get it\". It is definitely worth taking the time to "
+"understand this stuff. Page parameters are the most elegant way to propagate "
+"state across a non-faces request. They are especially cool for problems like "
+"search screens with bookmarkable results pages, where we would like to be "
+"able to write our application code to handle both POST and GET requests with "
+"the same code. Page parameters eliminate repetitive listing of request "
+"parameters in the view definition and make redirects much easier to code."
+msgstr ""
+"Tout cela semble plutôt complexe, et vous vous demandez probablement si un "
+"tel concept excentrique vaut vraiment l'effort. En réalité, l'idée est très "
+"naturelle une fois que vous la \"saisissez\". Il est certain que cela vaut "
+"la peine de prendre le temps de comprendre le tout. Les paramètres de page "
+"sont la façon la plus élégante de propager l'état sur toute une requête non-"
+"faces. Ils sont particulièrement cool pour des problèmes comme la recherche "
+"d'écrans avec des pages de résultats pouvant être mises en signet et où nous "
+"aimerions être en mesure d'écrire notre code d'application pour gérer les "
+"requêtes POST et GET avec le même code. Les paramètres de page éliminent le "
+"listing répétitif des paramètres de requête dans la définition d'affichage "
+"et facilitent l'encodage des redirections."
+
+#. Tag: para
+#: Events.xml:116
+#, fuzzy, no-c-format
+msgid ""
+"Note that you don&#39;t need an actual page action method binding to use a "
+"page parameter. The following is perfectly valid:"
+msgstr ""
+"Notez que pour utiliser un paramètre de page, vous n'avez pas besoin d'une "
+"association de méthode d'action de page. Ce qui suit est parfaitement "
+"valide :"
+
+#. Tag: programlisting
+#: Events.xml:119
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\"&gt;\n"
+"        &lt;param name=\"firstName\" value=\"#{person.firstName}\"/&gt;\n"
+"        &lt;param name=\"lastName\" value=\"#{person.lastName}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\"&gt;\n"
+"        &lt;param name=\"firstName\" value=\"#{person.firstName}\"/&gt;\n"
+"        &lt;param name=\"lastName\" value=\"#{person.lastName}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Events.xml:120
+#, no-c-format
+msgid "You can even specify a JSF converter:"
+msgstr "Vous pouvez même spécifier un convertisseur JSF :"
+
+#. Tag: programlisting
+#: Events.xml:123
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/calculator.jsp\" action=\"#{calculator.calculate}"
+"\"&gt;\n"
+"        &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"        &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"        &lt;param name=\"op\" converterId=\"com.my.calculator."
+"OperatorConverter\" value=\"#{calculator.op}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/calculator.jsp\" action=\"#{calculator.calculate}"
+"\"&gt;\n"
+"        &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"        &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"        &lt;param name=\"op\" converterId=\"com.my.calculator."
+"OperatorConverter\" value=\"#{calculator.op}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+
+#. Tag: programlisting
+#: Events.xml:124
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/calculator.jsp\" action=\"#{calculator.calculate}"
+"\"&gt;\n"
+"        &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"        &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"        &lt;param name=\"op\" converter=\"#{operatorConverter}\" value=\"#"
+"{calculator.op}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/calculator.jsp\" action=\"#{calculator.calculate}"
+"\"&gt;\n"
+"        &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"        &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"        &lt;param name=\"op\" converter=\"#{operatorConverter}\" value=\"#"
+"{calculator.op}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+
+#. Tag: title
+#: Events.xml:125
+#, no-c-format
+msgid "Navigation"
+msgstr "Navigation"
+
+#. Tag: para
+#: Events.xml:126
+#, no-c-format
+msgid ""
+"You can use standard JSF navigation rules defined in <literal>faces-config."
+"xml</literal> in a Seam application. However, JSF navigation rules have a "
+"number of annoying limitations:"
+msgstr ""
+"Vous pouvez utiliser des règles de navigation JSF standards, définies dans "
+"<literal>faces-config.xml</literal> dans une application Seam. Toutefois, "
+"les règles de navigation JSF ont plusieurs limitations pénibles :"
+
+#. Tag: para
+#: Events.xml:131
+#, no-c-format
+msgid ""
+"It is not possible to specify request parameters to be used when redirecting."
+msgstr ""
+"Il n'est pas possible de spécifier les paramètres de requête à utiliser dans "
+"la redirection."
+
+#. Tag: para
+#: Events.xml:136
+#, no-c-format
+msgid "It is not possible to begin or end conversations from a rule."
+msgstr ""
+"Il n'est pas possible de commencer ou de finir des conversations depuis une "
+"règle."
+
+#. Tag: para
+#: Events.xml:141
+#, no-c-format
+msgid ""
+"Rules work by evaluating the return value of the action method; it is not "
+"possible to evaluate an arbitrary EL expression."
+msgstr ""
+"Les règles fonctionnent en évaluant la valeur de retour de la méthode "
+"d'action, il n'est pas possible d'évaluer une expression EL arbitraire. "
+
+#. Tag: para
+#: Events.xml:146
+#, fuzzy, no-c-format
+msgid ""
+"A further problem is that \"orchestration\" logic gets scattered between "
+"<literal>pages.xml</literal> and <literal>faces-config.xml</literal>. It&#39;"
+"s better to unify this logic into <literal>pages.xml</literal>."
+msgstr ""
+"Un autre problème est que la logique d'\"orchestration\" se perd entre "
+"<literal>pages.xml</literal> et <literal>faces-config.xml</literal>. Il est "
+"préférable d'unifier cette logique dans <literal>pages.xml</literal>."
+
+#. Tag: para
+#: Events.xml:149
+#, no-c-format
+msgid "This JSF navigation rule:"
+msgstr "Cette règle de navigation JSF :"
+
+#. Tag: programlisting
+#: Events.xml:152
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"    &lt;from-view-id&gt;/editDocument.xhtml&lt;/from-view-id&gt;\n"
+"    \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-action&gt;#{documentEditor.update}&lt;/from-action&gt;\n"
+"        &lt;from-outcome&gt;success&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/viewDocument.xhtml&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"    \n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+"&lt;navigation-rule&gt;\n"
+"    &lt;from-view-id&gt;/editDocument.xhtml&lt;/from-view-id&gt;\n"
+"    \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-action&gt;#{documentEditor.update}&lt;/from-action&gt;\n"
+"        &lt;from-outcome&gt;success&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/viewDocument.xhtml&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"    \n"
+"&lt;/navigation-rule&gt;"
+
+#. Tag: para
+#: Events.xml:153
+#, no-c-format
+msgid "Can be rewritten as follows:"
+msgstr "peut être réécrite de la manière suivante :"
+
+#. Tag: programlisting
+#: Events.xml:156
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if-outcome=\"success\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if-outcome=\"success\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Events.xml:157
+#, fuzzy, no-c-format
+msgid ""
+"But it would be even nicer if we didn&#39;t have to pollute our "
+"<literal>DocumentEditor</literal> component with string-valued return values "
+"(the JSF outcomes). So Seam lets us write:"
+msgstr ""
+"Mais ce serait encore mieux si nous n'avions pas à polluer notre composant "
+"<literal>DocumentEditor</literal> avec des valeurs de retour string-valued "
+"(les résultats JSF). Ainsi Stream nous permet d'écrire :"
+
+#. Tag: programlisting
+#: Events.xml:160
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\" \n"
+"                   evaluate=\"#{documentEditor.errors.size}\"&gt;\n"
+"        &lt;rule if-outcome=\"0\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\" \n"
+"                   evaluate=\"#{documentEditor.errors.size}\"&gt;\n"
+"        &lt;rule if-outcome=\"0\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Events.xml:161
+#, no-c-format
+msgid "Or even:"
+msgstr "Ou même :"
+
+#. Tag: programlisting
+#: Events.xml:164
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Events.xml:165
+#, no-c-format
+msgid ""
+"The first form evaluates a value binding to determine the outcome value to "
+"be used by the subsequent rules. The second approach ignores the outcome and "
+"evaluates a value binding for each possible rule."
+msgstr ""
+"La première approche évalue une association de valeurs pour déterminer la "
+"valeur du résultat à utiliser par les règles qui suivent. La seconde "
+"approche ignore le résultat et évalue une association de valeurs pour chaque "
+"règle possible."
+
+#. Tag: para
+#: Events.xml:168
+#, no-c-format
+msgid ""
+"Of course, when an update succeeds, we probably want to end the current "
+"conversation. We can do that like this:"
+msgstr ""
+"Évidemment quand une mise à jour réussit, vous désirerez sans doute terminer "
+"la conversation en cours. Voici la manière de le faire :"
+
+#. Tag: programlisting
+#: Events.xml:171
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Events.xml:172
+#, no-c-format
+msgid ""
+"But ending the conversation loses any state associated with the "
+"conversation, including the document we are currently interested in! One "
+"solution would be to use an immediate render instead of a redirect:"
+msgstr ""
+"Mais terminer la conversation perd tout état associé à la conversation, y "
+"compris le document auquel nous sommes intéressés actuellement ! Une "
+"solution serait d'utiliser un rendu immédiat au lieu d'une redirection :"
+
+#. Tag: programlisting
+#: Events.xml:175
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Events.xml:176
+#, no-c-format
+msgid ""
+"But the correct solution is to pass the document id as a request parameter:"
+msgstr ""
+"Mais la solution juste est de passer l'id du document en tant que paramètre "
+"de requête :"
+
+#. Tag: programlisting
+#: Events.xml:179
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"&gt;\n"
+"                &lt;param name=\"documentId\" value=\"#{documentEditor."
+"documentId}\"/&gt;\n"
+"            &lt;/redirect&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"&gt;\n"
+"                &lt;param name=\"documentId\" value=\"#{documentEditor."
+"documentId}\"/&gt;\n"
+"            &lt;/redirect&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Events.xml:180
+#, no-c-format
+msgid ""
+"Null outcomes are a special case in JSF. The null outcome is interpreted to "
+"mean \"redisplay the page\". The following navigation rule matches any non-"
+"null outcome, but <emphasis>not</emphasis> the null outcome:"
+msgstr ""
+"Les résultats nulles dans JSF sont des cas spéciaux. Le résultat nulle est "
+"interprété pour signifier \"réafficher la page\". La règle de navigation "
+"suivante correspond à tout résultat non-nulle, et <emphasis>non</emphasis> "
+"au résultat nulle :"
+
+#. Tag: programlisting
+#: Events.xml:183
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule&gt;\n"
+"            &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule&gt;\n"
+"            &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Events.xml:184
+#, no-c-format
+msgid ""
+"If you want to perform navigation when a null outcome occurs, use the "
+"following form instead:"
+msgstr ""
+"Si vous désirez effectuer la navigation quand un résultat nulle a lieu, "
+"utilisez l'approche suivante à la place :"
+
+#. Tag: programlisting
+#: Events.xml:187
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+
+#. Tag: title
+#: Events.xml:188
+#, no-c-format
+msgid ""
+"Fine-grained files for definition of navigation, page actions and parameters"
+msgstr ""
+"Les fichiers à fine granularité pour la définition de la navigation, les "
+"actions de page et les paramètres"
+
+#. Tag: para
+#: Events.xml:189
+#, no-c-format
+msgid ""
+"If you have a lot of different page actions and page parameters, or even "
+"just a lot of navigation rules, you will almost certainly want to split the "
+"declarations up over multiple files. You can define actions and parameters "
+"for a page with the view id <literal>/calc/calculator.jsp</literal> in a "
+"resource named <literal>calc/calculator.page.xml</literal>. The root element "
+"in this case is the <literal>&lt;page&gt;</literal> element, and the view id "
+"is implied:"
+msgstr ""
+"Si vous avez de nombreux actions et paramètres de page différents, ou même "
+"de nombreuses règles de navigation, il sera préférable de diviser les "
+"déclarations sur des fichiers multiples. Vous pouvez définir les actions et "
+"les paramètres pour une page avec l'id d'affichage <literal>/calc/calculator."
+"jsp</literal> dans une ressource, appelée <literal>calc/calculator.page.xml</"
+"literal>. L'élément racine dans ce cas, est l'élément <literal>&lt;page&gt;</"
+"literal>, et l'id d'affichage est sous-entendu :"
+
+#. Tag: programlisting
+#: Events.xml:192
+#, no-c-format
+msgid ""
+"&lt;page action=\"#{calculator.calculate}\"&gt;\n"
+"    &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"    &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"    &lt;param name=\"op\" converter=\"#{operatorConverter}\" value=\"#"
+"{calculator.op}\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page action=\"#{calculator.calculate}\"&gt;\n"
+"    &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"    &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"    &lt;param name=\"op\" converter=\"#{operatorConverter}\" value=\"#"
+"{calculator.op}\"/&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: title
+#: Events.xml:193
+#, fuzzy, no-c-format
+msgid "Component-driven events"
+msgstr "Les évènements component-driven"
+
+#. Tag: para
+#: Events.xml:194
+#, no-c-format
+msgid ""
+"Seam components can interact by simply calling each others methods. Stateful "
+"components may even implement the observer/observable pattern. But to enable "
+"components to interact in a more loosely-coupled fashion than is possible "
+"when the components call each others methods directly, Seam provides "
+"<emphasis>component-driven events</emphasis>."
+msgstr ""
+"Les composants Seam peuvent interagir en appelant simplement leurs méthodes "
+"respectives. Les composants stateful peuvent même implémenter le modèle "
+"observateur/observable. Mais pour permettre aux composants d'interagir avec "
+"de plus faibles dépendances, que cela n'est possible quand les composants "
+"appellent leurs méthodes respectives directement, Seam fournit des "
+"<emphasis>évènements component-driven</emphasis>."
+
+#. Tag: para
+#: Events.xml:197
+#, no-c-format
+msgid ""
+"We specify event listeners (observers) in <literal>components.xml</literal>."
+msgstr ""
+"Nous spécifions les listeners d'évènements (observateurs) dans "
+"<literal>components.xml</literal>."
+
+#. Tag: programlisting
+#: Events.xml:200
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;event type=\"hello\"&gt;\n"
+"        &lt;action expression=\"#{helloListener.sayHelloBack}\"/&gt;\n"
+"        &lt;action expression=\"#{logger.logHello}\"/&gt;\n"
+"    &lt;/event&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components&gt;\n"
+"    &lt;event type=\"hello\"&gt;\n"
+"        &lt;action expression=\"#{helloListener.sayHelloBack}\"/&gt;\n"
+"        &lt;action expression=\"#{logger.logHello}\"/&gt;\n"
+"    &lt;/event&gt;\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Events.xml:201
+#, no-c-format
+msgid "Where the <emphasis>event type</emphasis> is just an arbitrary string."
+msgstr ""
+"Où le <emphasis>type d'évènement</emphasis> est juste une chaîne arbitraire."
+
+#. Tag: para
+#: Events.xml:204
+#, no-c-format
+msgid ""
+"When an event occurs, the actions registered for that event will be called "
+"in the order they appear in <literal>components.xml</literal>. How does a "
+"component raise an event? Seam provides a built-in component for this."
+msgstr ""
+"Quand un évènement a lieu, les actions enregistrées pour cet évènement "
+"seront appelées dans l'ordre dans lequel elles apparaissent dans "
+"<literal>components.xml</literal>. Comment est-ce qu'un composant soulève un "
+"évènement ? À cet effet, Seam fournit un composant imbriqué."
+
+#. Tag: programlisting
+#: Events.xml:207
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World!\");\n"
+"        Events.instance().raiseEvent(\"hello\");\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World!\");\n"
+"        Events.instance().raiseEvent(\"hello\");\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Events.xml:208
+#, no-c-format
+msgid "Or you can use an annotation."
+msgstr "Ou vous pouvez utiliser une annotation."
+
+#. Tag: programlisting
+#: Events.xml:211
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    @RaiseEvent(\"hello\")\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World!\");\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    @RaiseEvent(\"hello\")\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World!\");\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Events.xml:212
+#, no-c-format
+msgid ""
+"Notice that this event producer has no dependency upon event consumers. The "
+"event listener may now be implemented with absolutely no dependency upon the "
+"producer:"
+msgstr ""
+"Notez que ce producteur d'évènements n'a aucune dépendance sur les "
+"consommateurs d'évènements. Le listener d'évènements peut maintenant être "
+"implémenté sans aucune dépendance sur le producteur :"
+
+#. Tag: programlisting
+#: Events.xml:215
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    public void sayHelloBack() {\n"
+"        FacesMessages.instance().add(\"Hello to you too!\");\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    public void sayHelloBack() {\n"
+"        FacesMessages.instance().add(\"Hello to you too!\");\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Events.xml:216
+#, fuzzy, no-c-format
+msgid ""
+"The method binding defined in <literal>components.xml</literal> above takes "
+"care of mapping the event to the consumer. If you don&#39;t like futzing "
+"about in the <literal>components.xml</literal> file, you can use an "
+"annotation instead:"
+msgstr ""
+"L'association de méthode définie dans <literal>components.xml</literal> ci-"
+"dessus prend en charge l'association de l'évènement au consommateur. Si vous "
+"n'aimez pas perdre de temps dans le fichier <literal>components.xml</"
+"literal>, vous pouvez utiliser une annotation à la place :"
+
+#. Tag: programlisting
+#: Events.xml:219
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    @Observer(\"hello\")\n"
+"    public void sayHelloBack() {\n"
+"        FacesMessages.instance().add(\"Hello to you too!\");\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    @Observer(\"hello\")\n"
+"    public void sayHelloBack() {\n"
+"        FacesMessages.instance().add(\"Hello to you too!\");\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Events.xml:220
+#, fuzzy, no-c-format
+msgid ""
+"You might wonder why I&#39;ve not mentioned anything about event objects in "
+"this discussion. In Seam, there is no need for an event object to propagate "
+"state between event producer and listener. State is held in the Seam "
+"contexts, and is shared between components. However, if you really want to "
+"pass an event object, you can:"
+msgstr ""
+"Vous vous demandez peut-être pourquoi je n'ai rien mentionné au sujet des "
+"objets évènement dans cette discussion. Dans Seam, un objet évènement n'est "
+"pas nécessaire pour propager l'état entre le producteur d'évènements et le "
+"listener. L'état est contenu dans les contextes Seam et partagé entre les "
+"composants. Toutefois, si vous désirez absolument passer un objet évènement, "
+"vous pouvez le faire :"
+
+#. Tag: programlisting
+#: Events.xml:223
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    private String name;\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World, my name is #0.\", "
+"name);\n"
+"        Events.instance().raiseEvent(\"hello\", name);\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    private String name;\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World, my name is #0.\", "
+"name);\n"
+"        Events.instance().raiseEvent(\"hello\", name);\n"
+"    }\n"
+"}"
+
+#. Tag: programlisting
+#: Events.xml:224
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    @Observer(\"hello\")\n"
+"    public void sayHelloBack(String name) {\n"
+"        FacesMessages.instance().add(\"Hello #0!\", name);\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    @Observer(\"hello\")\n"
+"    public void sayHelloBack(String name) {\n"
+"        FacesMessages.instance().add(\"Hello #0!\", name);\n"
+"    }\n"
+"}"
+
+#. Tag: title
+#: Events.xml:225
+#, no-c-format
+msgid "Contextual events"
+msgstr "Évènements contextuels"
+
+#. Tag: para
+#: Events.xml:226
+#, no-c-format
+msgid ""
+"Seam defines a number of built-in events that the application can use to "
+"perform special kinds of framework integration. The events are:"
+msgstr ""
+"Seam définit plusieurs évènements imbriqués que l'application peut utiliser "
+"pour effectuer une intégration de framework spéciale. Les évènements sont :"
+
+#. Tag: para
+#: Events.xml:231
+#, fuzzy, no-c-format
+msgid ""
+"<literal>org.jboss.seam.validationFailed</literal> &mdash; called when JSF "
+"validation fails"
+msgstr ""
+"<literal>org.jboss.seam.endConversation </literal>&mdash; appelé à chaque "
+"fois qu'une conversation à long terme se termine"
+
+#. Tag: para
+#: Events.xml:236
+#, fuzzy, no-c-format
+msgid ""
+"<literal>org.jboss.seam.noConversation</literal> &mdash; called when there "
+"is no long running conversation and a long running conversation is required"
+msgstr ""
+"<literal>org.jboss.seam.endConversation </literal>&mdash; appelé à chaque "
+"fois qu'une conversation à long terme se termine"
+
+#. Tag: para
+#: Events.xml:241
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preSetVariable.&lt;name&gt;</literal> &mdash; called "
+"when the context variable &lt;name&gt; is set"
+msgstr ""
+"<literal>org.jboss.seam.preSetVariable.&lt;name&gt;</literal> &mdash; appelé "
+"quand la variable de contexte &lt;name&gt; est définie"
+
+#. Tag: para
+#: Events.xml:246
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postSetVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is set"
+msgstr ""
+"<literal>org.jboss.seam.postSetVariable.&lt;name&gt;</literal> &mdash; "
+"appelé quand la variable de contexte &lt;name&gt; est définie"
+
+#. Tag: para
+#: Events.xml:251
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preRemoveVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is unset"
+msgstr ""
+"<literal>org.jboss.seam.preRemoveVariable.&lt;name&gt;</literal> &mdash; "
+"appelé quand la variable de contexte &lt;name&gt; est unset"
+
+#. Tag: para
+#: Events.xml:256
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postRemoveVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is unset"
+msgstr ""
+"<literal>org.jboss.seam.postRemoveVariable.&lt;name&gt;</literal> &mdash; "
+"appelé quand la variable de contexte &lt;name&gt; est non-définie"
+
+#. Tag: para
+#: Events.xml:261
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preDestroyContext.&lt;SCOPE&gt;</literal> &mdash; "
+"called before the &lt;SCOPE&gt; context is destroyed"
+msgstr ""
+"<literal>org.jboss.seam.preDestroyContext.&lt;SCOPE&gt;</literal> &mdash; "
+"appelé avant que le contexte &lt;SCOPE&gt; ne soit détruit"
+
+#. Tag: para
+#: Events.xml:266
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postDestroyContext.&lt;SCOPE&gt;</literal> &mdash; "
+"called after the &lt;SCOPE&gt; context is destroyed"
+msgstr ""
+"<literal>org.jboss.seam.postDestroyContext.&lt;SCOPE&gt;</literal> &mdash; "
+"appelé après que le contexte &lt;SCOPE&gt; soit détruit"
+
+#. Tag: para
+#: Events.xml:271
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beginConversation </literal>&mdash; called whenever "
+"a long-running conversation begins"
+msgstr ""
+"<literal>org.jboss.seam.beginConversation </literal>&mdash; appelé à chaque "
+"fois qu'une conversation à long terme commence"
+
+#. Tag: para
+#: Events.xml:276
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endConversation </literal>&mdash; called whenever a "
+"long-running conversation ends"
+msgstr ""
+"<literal>org.jboss.seam.endConversation </literal>&mdash; appelé à chaque "
+"fois qu'une conversation à long terme se termine"
+
+#. Tag: para
+#: Events.xml:281
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beginPageflow.&lt;name&gt; </literal>&mdash; called "
+"when the pageflow &lt;name&gt; begins"
+msgstr ""
+"<literal>org.jboss.seam.beginPageflow.&lt;name&gt; </literal>&mdash; "
+"appeléquand le flux de la page &lt;name&gt; commence"
+
+#. Tag: para
+#: Events.xml:286
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endPageflow.&lt;name&gt; </literal>&mdash; called "
+"when the pageflow &lt;name&gt; ends"
+msgstr ""
+"<literal>org.jboss.seam.endPageflow.&lt;name&gt; </literal>&mdash; appelé "
+"quand le flux de la page &lt;name&gt; se termine"
+
+#. Tag: para
+#: Events.xml:291
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.createProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; is created"
+msgstr ""
+"<literal>org.jboss.seam.createProcess.&lt;name&gt; </literal>&mdash; appelé "
+"quand le processus &lt;name&gt; est créé"
+
+#. Tag: para
+#: Events.xml:296
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; ends"
+msgstr ""
+"<literal>org.jboss.seam.endProcess.&lt;name&gt; </literal>&mdash; appelé "
+"quand le processus &lt;name&gt; se termine"
+
+#. Tag: para
+#: Events.xml:301
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.initProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; is associated with the conversation"
+msgstr ""
+"<literal>org.jboss.seam.initProcess.&lt;name&gt; </literal>&mdash; appelé "
+"quand le processus &lt;name&gt; est associé à la conversation"
+
+#. Tag: para
+#: Events.xml:306
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.initTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is associated with the conversation"
+msgstr ""
+"<literal>org.jboss.seam.initTask.&lt;name&gt; </literal>&mdash; appelé quand "
+"la tâche &lt;name&gt; est associée à la conversation"
+
+#. Tag: para
+#: Events.xml:311
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.startTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is started"
+msgstr ""
+"<literal>org.jboss.seam.startTask.&lt;name&gt; </literal>&mdash; appelé "
+"quand la tâche &lt;name&gt; est commencée"
+
+#. Tag: para
+#: Events.xml:316
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is ended"
+msgstr ""
+"<literal>org.jboss.seam.endTask.&lt;name&gt; </literal>&mdash; appelé quand "
+"la tâche &lt;name&gt; est terminée"
+
+#. Tag: para
+#: Events.xml:321
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postCreate.&lt;name&gt; </literal>&mdash; called "
+"when the component &lt;name&gt; is created"
+msgstr ""
+"<literal>org.jboss.seam.postCreate.&lt;name&gt; </literal>&mdash; appelé "
+"quand le composant &lt;name&gt; est créé"
+
+#. Tag: para
+#: Events.xml:326
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preDestroy.&lt;name&gt; </literal>&mdash; called "
+"when the component &lt;name&gt; is destroyed"
+msgstr ""
+"<literal>org.jboss.seam.preDestroy.&lt;name&gt; </literal>&mdash; appelé "
+"quand le composant &lt;name&gt; est détruit"
+
+#. Tag: para
+#: Events.xml:331
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beforePhase </literal>&mdash; called before the "
+"start of a JSF phase"
+msgstr ""
+"<literal>org.jboss.seam.beforePhase </literal>&mdash; appelé avant le "
+"commencement d'un phase JSF"
+
+#. Tag: para
+#: Events.xml:336
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.afterPhase </literal>&mdash; called after the end of "
+"a JSF phase"
+msgstr ""
+"<literal>org.jboss.seam.afterPhase </literal>&mdash; appelé après la fin "
+"d'une phase JSF "
+
+#. Tag: para
+#: Events.xml:341
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postAuthenticate.&lt;name&gt; </literal>&mdash; "
+"called after a user is authenticated"
+msgstr ""
+"<literal>org.jboss.seam.postAuthenticate.&lt;name&gt; </literal>&mdash; "
+"appelé après l'authentification d'un utilisateur"
+
+#. Tag: para
+#: Events.xml:346
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preAuthenticate.&lt;name&gt; </literal>&mdash; "
+"called before attempting to authenticate a user"
+msgstr ""
+"<literal>org.jboss.seam.preAuthenticate.&lt;name&gt; </literal>&mdash; "
+"appelé avant la tentative d'authentification d'un utilisateur"
+
+#. Tag: para
+#: Events.xml:351
+#, fuzzy, no-c-format
+msgid ""
+"<literal>org.jboss.seam.notLoggedIn</literal> &mdash; called there is no "
+"authenticated user and authentication is required"
+msgstr ""
+"<literal>org.jboss.seam.postAuthenticate.&lt;name&gt; </literal>&mdash; "
+"appelé après l'authentification d'un utilisateur"
+
+#. Tag: para
+#: Events.xml:356
+#, fuzzy, no-c-format
+msgid ""
+"<literal>org.jboss.seam.rememberMe</literal> &mdash; occurs when Seam "
+"security detects the username in a cookie"
+msgstr ""
+"<literal>org.jboss.seam.afterPhase </literal>&mdash; appelé après la fin "
+"d'une phase JSF "
+
+#. Tag: para
+#: Events.xml:361
+#, no-c-format
+msgid ""
+"Seam components may observe any of these events in just the same way they "
+"observe any other component-driven events."
+msgstr ""
+"Les composants Seam peuvent observer n'importe lequel de ces évènements de "
+"la même façon qu'ils observent n'importe quel autre évènement component-"
+"driven."
+
+#. Tag: title
+#: Events.xml:364
+#, no-c-format
+msgid "Seam interceptors"
+msgstr "Intercepteurs Seam"
+
+#. Tag: para
+#: Events.xml:365
+#, no-c-format
+msgid ""
+"EJB 3.0 introduced a standard interceptor model for session bean components. "
+"To add an interceptor to a bean, you need to write a class with a method "
+"annotated <literal>@AroundInvoke</literal> and annotate the bean with an "
+"<literal>@Interceptors</literal> annotation that specifies the name of the "
+"interceptor class. For example, the following interceptor checks that the "
+"user is logged in before allowing invoking an action listener method:"
+msgstr ""
+"EJB 3.0 introduit un modèle d'intercepteur standard pour les composants bean "
+"session. Pour ajouter un intercepteur à un bean, vous devez écrire une "
+"classe avec une méthode annotée <literal>@AroundInvoke</literal> et annoter "
+"le bean avec une annotation <literal>@Interceptors</literal> qui spécifie le "
+"nom de la classe de l'intercepteur. Par exemple, l'intercepteur suivant "
+"vérifie que l'utilisateur est connecté avant de permettre l'appel d'une "
+"méthode de listener d'actions :"
+
+#. Tag: programlisting
+#: Events.xml:368
+#, no-c-format
+msgid ""
+"public class LoggedInInterceptor {\n"
+"\n"
+"   @AroundInvoke\n"
+"   public Object checkLoggedIn(InvocationContext invocation) throws "
+"Exception {\n"
+"   \n"
+"      boolean isLoggedIn = Contexts.getSessionContext().get(\"loggedIn\")!"
+"=null;\n"
+"      if (isLoggedIn) {\n"
+"         //the user is already logged in\n"
+"         return invocation.proceed();\n"
+"      }\n"
+"      else {\n"
+"         //the user is not logged in, fwd to login page\n"
+"         return \"login\";\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+"public class LoggedInInterceptor {\n"
+"\n"
+"   @AroundInvoke\n"
+"   public Object checkLoggedIn(InvocationContext invocation) throws "
+"Exception {\n"
+"   \n"
+"      boolean isLoggedIn = Contexts.getSessionContext().get(\"loggedIn\")!"
+"=null;\n"
+"      if (isLoggedIn) {\n"
+"         //the user is already logged in\n"
+"         return invocation.proceed();\n"
+"      }\n"
+"      else {\n"
+"         //the user is not logged in, fwd to login page\n"
+"         return \"login\";\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+
+#. Tag: para
+#: Events.xml:369
+#, no-c-format
+msgid ""
+"To apply this interceptor to a session bean which acts as an action "
+"listener, we must annotate the session bean <literal>@Interceptors"
+"(LoggedInInterceptor.class)</literal>. This is a somewhat ugly annotation. "
+"Seam builds upon the interceptor framework in EJB3 by allowing you to use "
+"<literal>@Interceptors</literal> as a meta-annotation. In our example, we "
+"would create an <literal>@LoggedIn</literal> annotation, as follows:"
+msgstr ""
+"Pour appliquer cet intercepteur à un bean session qui agit en tant que "
+"listener d'actions, nous devons annoter le bean session "
+"<literal>@Interceptors(LoggedInInterceptor.class)</literal>. Cela est une "
+"annotation assez laide. Seam tire avantage du framework de l'intercepteur "
+"dans EJB3, en permettant d'utiliser <literal>@Interceptors</literal> en tant "
+"que méta-annotation. Dans notre exemple, nous serions en mesure de créer une "
+"annotation <literal>@LoggedIn</literal>, comme suit :"
+
+#. Tag: programlisting
+#: Events.xml:372
+#, no-c-format
+msgid ""
+"@Target(TYPE)\n"
+"@Retention(RUNTIME)\n"
+"@Interceptors(LoggedInInterceptor.class)\n"
+"public @interface LoggedIn {}"
+msgstr ""
+"@Target(TYPE)\n"
+"@Retention(RUNTIME)\n"
+"@Interceptors(LoggedInInterceptor.class)\n"
+"public @interface LoggedIn {}"
+
+#. Tag: para
+#: Events.xml:373
+#, no-c-format
+msgid ""
+"We can now simply annotate our action listener bean with <literal>@LoggedIn</"
+"literal> to apply the interceptor."
+msgstr ""
+"Nous pouvons maintenant simplement annoter notre bean listener "
+"d'actions<literal>@LoggedIn</literal> pour appliquer l'intercepteur. "
+
+#. Tag: programlisting
+#: Events.xml:376
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"changePasswordAction\")\n"
+"@LoggedIn\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class ChangePasswordAction implements ChangePassword { \n"
+"    \n"
+"    ...\n"
+"    \n"
+"    public String changePassword() { ... }\n"
+"    \n"
+"}"
+msgstr ""
+"@Stateless\n"
+"@Name(\"changePasswordAction\")\n"
+"@LoggedIn\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class ChangePasswordAction implements ChangePassword { \n"
+"    \n"
+"    ...\n"
+"    \n"
+"    public String changePassword() { ... }\n"
+"    \n"
+"}"
+
+#. Tag: para
+#: Events.xml:377
+#, no-c-format
+msgid ""
+"If interceptor ordering is important (it usually is), you can add "
+"<literal>@Interceptor</literal> annotations to your interceptor classes to "
+"specify a partial order of interceptors."
+msgstr ""
+"Si l'ordre de l'intercepteur est important (il l'est habituellement), vous "
+"pouvez ajouter les annotations <literal>@Interceptor</literal> à vos classes "
+"d'intercepteur pour spécifier un ordre partiel des intercepteurs. "
+
+#. Tag: programlisting
+#: Events.xml:380
+#, no-c-format
+msgid ""
+"@Interceptor(around={BijectionInterceptor.class,\n"
+"                     ValidationInterceptor.class,\n"
+"                     ConversationInterceptor.class},\n"
+"             within=RemoveInterceptor.class)\n"
+"public class LoggedInInterceptor\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+"@Interceptor(around={BijectionInterceptor.class,\n"
+"                     ValidationInterceptor.class,\n"
+"                     ConversationInterceptor.class},\n"
+"             within=RemoveInterceptor.class)\n"
+"public class LoggedInInterceptor\n"
+"{\n"
+"    ...\n"
+"}"
+
+#. Tag: para
+#: Events.xml:381
+#, no-c-format
+msgid ""
+"You can even have a \"client-side\" interceptor, that runs around any of the "
+"built-in functionality of EJB3:"
+msgstr ""
+"Vous pouvez même avoir un intercepteur \"côté client\", qui exécute autour "
+"de toutes les fonctionnalités imbriquées d'EJB3 :"
+
+#. Tag: programlisting
+#: Events.xml:384
+#, no-c-format
+msgid ""
+"@Interceptor(type=CLIENT)\n"
+"public class LoggedInInterceptor\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+"@Interceptor(type=CLIENT)\n"
+"public class LoggedInInterceptor\n"
+"{\n"
+"    ...\n"
+"}"
+
+#. Tag: para
+#: Events.xml:385
+#, no-c-format
+msgid ""
+"EJB interceptors are stateful, with a lifecycle that is the same as the "
+"component they intercept. For interceptors which do not need to maintain "
+"state, Seam lets you get a performance optimization by specifying "
+"<literal>@Interceptor(stateless=true)</literal>."
+msgstr ""
+"Les intercepteurs EJB sont stateful, avec un cycle de vie identique au "
+"composant qu'ils interceptent. Pour les intercepteurs qui ne doivent pas "
+"maintenir l'état, Seam vous permet d'obtenir une optimisation de performance "
+"en spécifiant <literal>@Interceptor(stateless=true)</literal>."
+
+#. Tag: para
+#: Events.xml:388
+#, fuzzy, no-c-format
+msgid ""
+"Much of the functionality of Seam is implemented as a set of built-in Seam "
+"interceptors, including the interceptors named in the previous example. You "
+"don&#39;t have to explicitly specify these interceptors by annotating your "
+"components; they exist for all interceptable Seam components."
+msgstr ""
+"De nombreuses fonctionnalités de Seam sont implémentées en tant qu'ensemble "
+"d'intercepteurs Seam imbriqués, y compris les intercepteurs appelés dans "
+"l'exemple précédent. Vous ne devez pas spécifier explicitement ces "
+"intercepteurs en annotant vos composants, ils existent pour tous les "
+"composants Seam interceptables. "
+
+#. Tag: para
+#: Events.xml:391
+#, no-c-format
+msgid ""
+"You can even use Seam interceptors with JavaBean components, not just EJB3 "
+"beans!"
+msgstr ""
+"Vous pouvez utiliser les intercepteurs Seam avec des composants JavaBean, et "
+"non pas seulement avec des beans EJB3 !"
+
+#. Tag: para
+#: Events.xml:394
+#, no-c-format
+msgid ""
+"EJB defines interception not only for business methods (using "
+"<literal>@AroundInvoke</literal>), but also for the lifecycle methods "
+"<literal>@PostConstruct</literal>, <literal>@PreDestroy</literal>, "
+"<literal>@PrePassivate</literal> and <literal>@PostActive</literal>. Seam "
+"supports all these lifecycle methods on both component and interceptor not "
+"only for EJB3 beans, but also for JavaBean components (except "
+"<literal>@PreDestroy</literal> which is not meaningful for JavaBean "
+"components)."
+msgstr ""
+"EJB définit l'interception non seulement pour les méthodes métier (à l'aide "
+"de <literal>@AroundInvoke</literal>), mais également pour les méthodes de "
+"cycle de vie <literal>@PostConstruct</literal>, <literal>@PreDestroy</"
+"literal>, <literal>@PrePassivate</literal> et <literal>@PostActive</"
+"literal>. Seam supporte toutes ces méthodes de cycle de vie sur le composant "
+"et l'intercepteur, non seulement pour les beans EJB3, mais aussi pour les "
+"composants JavaBean (sauf <literal>@PreDestroy</literal> qui n'est pas "
+"important pour les composants JavaBean)."
+
+#. Tag: title
+#: Events.xml:397
+#, no-c-format
+msgid "Managing exceptions"
+msgstr "Gestion des exceptions"
+
+#. Tag: para
+#: Events.xml:398
+#, no-c-format
+msgid ""
+"JSF is surprisingly limited when it comes to exception handling. As a "
+"partial workaround for this problem, Seam lets you define how a particular "
+"class of exception is to be treated by annotating the exception class, or "
+"declaring the exception class in an XML file. This facility is meant to be "
+"combined with the EJB 3.0-standard <literal>@ApplicationException</literal> "
+"annotation which specifies whether the exception should cause a transaction "
+"rollback."
+msgstr ""
+"JSF est limité de façon surprenante quand il s'agit de la gestion des "
+"exceptions. En tant que solution de rechange partielle pour ce problème, "
+"Seam vous laisse définir comment une classe d'exception particulière doit "
+"être traitée en annotant la classe d'exception, ou en déclarant la classe "
+"d'exception dans un fichier XML. Cette fonction est supposée être combinée "
+"avec l'annotation EJB 3.0 standard<literal>@ApplicationException</literal>, "
+"qui spécifie si l'exception doit entraîner un retour en arrière de "
+"transaction."
+
+#. Tag: title
+#: Events.xml:401
+#, no-c-format
+msgid "Exceptions and transactions"
+msgstr "Exceptions et transactions"
+
+#. Tag: para
+#: Events.xml:402
+#, no-c-format
+msgid ""
+"EJB specifies well-defined rules that let us control whether an exception "
+"immediately marks the current transaction for rollback when it is thrown by "
+"a business method of the bean: <emphasis>system exceptions</emphasis> always "
+"cause a transaction rollback, <emphasis>application exceptions</emphasis> do "
+"not cause a rollback by default, but they do if "
+"<literal>@ApplicationException(rollback=true)</literal> is specified. (An "
+"application exception is any checked exception, or any unchecked exception "
+"annotated <literal>@ApplicationException</literal>. A system exception is "
+"any unchecked exception without an <literal>@ApplicationException</literal> "
+"annotation.)"
+msgstr ""
+"EJB spécifie des règles bien définies qui nous permettent de contrôler si "
+"une exception marque immédiatement la transaction courante pour un retour en "
+"arrière quand elle est lancée par la méthode métier du bean :les "
+"<emphasis>exceptions de système</emphasis> entraînent toujours un retour en "
+"arrière de la transaction, les <emphasis>exceptions d'application</emphasis> "
+"n'entraînent pas de retour en arrière par défaut, mais c'est le cas si "
+"<literal>@ApplicationException(rollback=true)</literal> est spécifié. (Une "
+"exception d'application est toute exception vérifiée, ou toute exception non "
+"vérifée annotée <literal>@ApplicationException</literal>. Une exception de "
+"système est toute exception non vérifiée sans annotation "
+"<literal>@ApplicationException</literal>.)"
+
+#. Tag: para
+#: Events.xml:405
+#, no-c-format
+msgid ""
+"Note that there is a difference between marking a transaction for rollback, "
+"and actually rolling it back. The exception rules say that the transaction "
+"should be marked rollback only, but it may still be active after the "
+"exception is thrown."
+msgstr ""
+"Remarquez qu'il y a une différence entre marquer une transaction pour un "
+"retour en arrière et le retour en arrière effectif de la transaction. Les "
+"règles d'exception stipulent que la transaction devrait être marquée pour le "
+"retour en arrière seulement, mais il peut encore être actif quand "
+"l'exception est lancée. "
+
+#. Tag: para
+#: Events.xml:408
+#, no-c-format
+msgid ""
+"Seam applies the EJB 3.0 exception rollback rules also to Seam JavaBean "
+"components."
+msgstr ""
+"Seam applique également les règles de retour en arrière d'exception EJB 3.0 "
+"aux composants JavaBean Seam."
+
+#. Tag: para
+#: Events.xml:411
+#, no-c-format
+msgid ""
+"But these rules only apply in the Seam component layer. What about an "
+"exception that is uncaught and propagates out of the Seam component layer, "
+"and out of the JSF layer? Well, it is always wrong to leave a dangling "
+"transaction open, so Seam rolls back any active transaction when an "
+"exception occurs and is uncaught in the Seam component layer."
+msgstr ""
+"Mais ces règles ne s'appliquent que dans la couche du composant Seam. Qu'en "
+"est-il d'une exception qui n'est pas attrapée et se propage hors de la "
+"couche du composant Seam, et hors de la couche JSF ? Enfin, il n'est jamais "
+"recommandé de laisser une transaction ouverte, car Seam effectue un retour "
+"en arrière sur toute transaction quand une exception a lieu et n'est pas "
+"attrapée dans la couche du composant Seam. "
+
+#. Tag: title
+#: Events.xml:414
+#, no-c-format
+msgid "Enabling Seam exception handling"
+msgstr "Activation de la gestion des exceptions dans Seam"
+
+#. Tag: para
+#: Events.xml:415
+#, fuzzy, no-c-format
+msgid ""
+"To enable Seam&#39;s exception handling, we need to make sure we have the "
+"master servlet filter declared in <literal>web.xml</literal>:"
+msgstr ""
+"Pour activer la gestion des exceptions dans Seam, nous devons nous assurer "
+"que nous avons le filtre de servlet maître, déclaré dans <literal>web.xml</"
+"literal> :"
+
+#. Tag: programlisting
+#: Events.xml:418
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.servlet.SeamFilter&lt;/filter-"
+"class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;"
+msgstr ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.servlet.SeamFilter&lt;/filter-"
+"class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;"
+
+#. Tag: para
+#: Events.xml:419
+#, no-c-format
+msgid ""
+"You may also need to disable Facelets development mode in <literal>web.xml</"
+"literal> and Seam debug mode in <literal>components.xml</literal> if you "
+"want your exception handlers to fire."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:422
+#, no-c-format
+msgid "Using annotations for exception handling"
+msgstr "Utilisation des annotations pour la gestion d'exceptions"
+
+#. Tag: para
+#: Events.xml:423
+#, no-c-format
+msgid ""
+"The following exception results in a HTTP 404 error whenever it propagates "
+"out of the Seam component layer. It does not roll back the current "
+"transaction immediately when thrown, but the transaction will be rolled back "
+"if it the exception is not caught by another Seam component."
+msgstr ""
+"L'exception suivante entraîne une erreur HTTP 404 à chaque fois qu'elle se "
+"propage hors de la couche du composant Seam. Elle ne retourne pas en arrière "
+"la transaction immédiatement quand elle est lancée, mais la transaction sera "
+"retournée en arrière si l'exception n'est pas attrapée par un autre "
+"composant Seam."
+
+#. Tag: programlisting
+#: Events.xml:426
+#, no-c-format
+msgid ""
+"@HttpError(errorCode=404)\n"
+"public class ApplicationException extends Exception { ... }"
+msgstr ""
+"@HttpError(errorCode=404)\n"
+"public class ApplicationException extends Exception { ... }"
+
+#. Tag: para
+#: Events.xml:427
+#, no-c-format
+msgid ""
+"This exception results in a browser redirect whenever it propagates out of "
+"the Seam component layer. It also ends the current conversation. It causes "
+"an immediate rollback of the current transaction."
+msgstr ""
+"Cet exception entraîne une redirection du navigateur à chaque fois qu'elle "
+"se propage hors de la couche du composant Seam. Elle termine également la "
+"conversation courante. Elle cause un retour en arrière immédiat de la "
+"transaction courante."
+
+#. Tag: programlisting
+#: Events.xml:430
+#, no-c-format
+msgid ""
+"@Redirect(viewId=\"/failure.xhtml\", end=true)\n"
+"@ApplicationException(rollback=true)\n"
+"public class UnrecoverableApplicationException extends RuntimeException "
+"{ ... }"
+msgstr ""
+"@Redirect(viewId=\"/failure.xhtml\", end=true)\n"
+"@ApplicationException(rollback=true)\n"
+"public class UnrecoverableApplicationException extends RuntimeException "
+"{ ... }"
+
+#. Tag: para
+#: Events.xml:431
+#, no-c-format
+msgid ""
+"Note that <literal>@Redirect</literal> does not work for exceptions which "
+"occur during the render phase of the JSF lifecycle."
+msgstr ""
+"Notez que <literal>@Redirect</literal> ne fonctionne pas pour les exceptions "
+"qui ont lieu durant la phase du rendu du cycle de vie JSF."
+
+#. Tag: para
+#: Events.xml:434
+#, no-c-format
+msgid ""
+"This exception results in a redirect, along with a message to the user, when "
+"it propagates out of the Seam component layer. It also immediately rolls "
+"back the current transaction."
+msgstr ""
+"Cette exception entraîne une redirection, de même qu'un message à "
+"l'utilisateur quand elle se propage hors de la couche du composant Seam. De "
+"même, elle retourne immédiatement en arrière la transaction courante. "
+
+#. Tag: programlisting
+#: Events.xml:437
+#, no-c-format
+msgid ""
+"@Redirect(viewId=\"/error.xhtml\", message=\"Unexpected error\")\n"
+"public class SystemException extends RuntimeException { ... }"
+msgstr ""
+"@Redirect(viewId=\"/error.xhtml\", message=\"Unexpected error\")\n"
+"public class SystemException extends RuntimeException { ... }"
+
+#. Tag: title
+#: Events.xml:438
+#, no-c-format
+msgid "Using XML for exception handling"
+msgstr "Utilisation de XML pour la gestion des exceptions"
+
+#. Tag: para
+#: Events.xml:439
+#, fuzzy, no-c-format
+msgid ""
+"Since we can&#39;t add annotations to all the exception classes we are "
+"interested in, Seam also lets us specify this functionality in "
+"<literal>pages.xml</literal>."
+msgstr ""
+"Étant donné que nous ne pouvons pas ajouter d'annotations à toutes les "
+"classes d'exception qui nous intéressent, Seam nous permet également de "
+"spécifier cette fonctionnalité dans <literal>pages.xml</literal>."
+
+#. Tag: programlisting
+#: Events.xml:442
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   \n"
+"   &lt;exception class=\"javax.persistence.EntityNotFoundException\"&gt;\n"
+"      &lt;http-error error-code=\"404\"/&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"   &lt;exception class=\"javax.persistence.PersistenceException\"&gt;\n"
+"      &lt;end-conversation/&gt;\n"
+"      &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"          &lt;message&gt;Database access failed&lt;/message&gt;\n"
+"      &lt;/redirect&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"   &lt;exception&gt;\n"
+"      &lt;end-conversation/&gt;\n"
+"      &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"          &lt;message&gt;Unexpected failure&lt;/message&gt;\n"
+"      &lt;/redirect&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"   \n"
+"   &lt;exception class=\"javax.persistence.EntityNotFoundException\"&gt;\n"
+"      &lt;http-error error-code=\"404\"/&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"   &lt;exception class=\"javax.persistence.PersistenceException\"&gt;\n"
+"      &lt;end-conversation/&gt;\n"
+"      &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"          &lt;message&gt;Database access failed&lt;/message&gt;\n"
+"      &lt;/redirect&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"   &lt;exception&gt;\n"
+"      &lt;end-conversation/&gt;\n"
+"      &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"          &lt;message&gt;Unexpected failure&lt;/message&gt;\n"
+"      &lt;/redirect&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Events.xml:443
+#, no-c-format
+msgid ""
+"The last <literal>&lt;exception&gt;</literal> declaration does not specify a "
+"class, and is a catch-all for any exception for which handling is not "
+"otherwise specified via annotations or in <literal>pages.xml</literal>."
+msgstr ""
+"La dernière déclaration <literal>&lt;exception&gt;</literal> ne spécifie pas "
+"de classe, et est un catch-all pour toute exception dont la gestion n'est "
+"pas spécifiée, via les annotations ou dans <literal>pages.xml</literal>."
+
+#. Tag: para
+#: Events.xml:446
+#, no-c-format
+msgid ""
+"You can also access the handled exception instance through EL, Seam places "
+"it in the conversation context, e.g. to access the message of the exception:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:449
+#, no-c-format
+msgid ""
+"...\n"
+"throw new AuthorizationException(\"You are not allowed to do this!\");\n"
+"\n"
+"&lt;pages&gt;\n"
+"\n"
+"    &lt;exception class=\"org.jboss.seam.security.AuthorizationException"
+"\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"        &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"            &lt;message severity=\"WARN\"&gt;#{handledException.message}&lt;/"
+"message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"\n"
+"&lt;/pages&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Framework.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Framework.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Framework.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1239 @@
+# translation of Framework.po to french
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# myriam malga <mmalga at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Framework\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2007-08-06 10:47+1000\n"
+"Last-Translator: myriam malga <mmalga at redhat.com>\n"
+"Language-Team: french\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Framework.xml:6
+#, no-c-format
+msgid "The Seam Application Framework"
+msgstr "Le Framework d'application Seam"
+
+#. Tag: para
+#: Framework.xml:7
+#, fuzzy, no-c-format
+msgid ""
+"Seam makes it really easy to create applications by writing plain Java "
+"classes with annotations, which don&#39;t need to extend any special "
+"interfaces or superclasses. But we can simplify some common programming "
+"tasks even further, by providing a set of pre-built components which can be "
+"re-used either by configuration in <literal>components.xml</literal> (for "
+"very simple cases) or extension."
+msgstr ""
+"Seam facilite vraiment la création d'applications grâce à l'écriture de "
+"classes Java simples avec annotations, qui ne doivent pas étendre des "
+"interfaces ou superclasses particulières. Nous pouvons toutefois simplifier "
+"plus avant, quelques tâches de programmation fréquentes en fournissant un "
+"ensemble de composants imbriqués qui peuvent être ré-utilisés soit par la "
+"configuration dans <literal>components.xml</literal> (pour tous les cas "
+"simples) ou par extension."
+
+#. Tag: para
+#: Framework.xml:10
+#, no-c-format
+msgid ""
+"The <emphasis>Seam Application Framework</emphasis> can reduce the amount of "
+"code you need to write when doing basic database access in a web "
+"application, using either Hibernate or JPA."
+msgstr ""
+"Le <emphasis>Framework d'application Seam</emphasis> peut réduire la "
+"quantité de code à écrire quand vous effectuez des accès de base de données "
+"dans une application web, avec soit Hibernate soit JPA."
+
+#. Tag: para
+#: Framework.xml:13
+#, no-c-format
+msgid ""
+"We should emphasize that the framework is extremely simple, just a handful "
+"of simple classes that are easy to understand and extend. The \"magic\" is "
+"in Seam itself&mdash;the same magic you use when creating any Seam "
+"application even without using this framework."
+msgstr ""
+"Nous devons insister sur le fait que le framework est extrêmement simple, "
+"juste quelques classes simples, faciles à comprendre et à étendre. La "
+"\"formule magique\" réside à l'intérieur de Seam&mdash;la même formule "
+"magique que quand vous créez toute application Seam, même sans utiliser ce "
+"framework. "
+
+#. Tag: title
+#: Framework.xml:17
+#, no-c-format
+msgid "Introduction"
+msgstr "Introduction"
+
+#. Tag: para
+#: Framework.xml:18
+#, no-c-format
+msgid ""
+"The components provided by the Seam application framework may be used in one "
+"of two different approaches. The first way is to install and configure an "
+"instance of the component in <literal>components.xml</literal>, just like we "
+"have done with other kinds of built-in Seam components. For example, the "
+"following fragment from <literal>components.xml</literal> installs a "
+"component which can perform basic CRUD operations for a <literal>Contact</"
+"literal> entity:"
+msgstr ""
+"Les composants fournis par le framework d'application de Seam peut être "
+"utilisé de deux façons différentes. La première est d'installer et de "
+"configurer une instance du composant dans <literal>components.xml</literal>, "
+"exactement comme nous l'avons fait avec d'autres composants imbriqués dans "
+"Seam. Par exemple, le fragment suivant du <literal>components.xml</literal> "
+"installe un composant qui peut effectuer des opérations CRUD de base pour "
+"une entité <literal>Contact</literal> :"
+
+#. Tag: programlisting
+#: Framework.xml:21
+#, no-c-format
+msgid ""
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" \n"
+"                       entity-manager=\"#{personDatabase}\"&gt;\n"
+"    &lt;framework:id&gt;#{param.personId}&lt;/framework:id&gt;\n"
+"&lt;/framework:entity-home&gt;"
+msgstr ""
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" \n"
+"                       entity-manager=\"#{personDatabase}\"&gt;\n"
+"    &lt;framework:id&gt;#{param.personId}&lt;/framework:id&gt;\n"
+"&lt;/framework:entity-home&gt;"
+
+#. Tag: para
+#: Framework.xml:22
+#, no-c-format
+msgid ""
+"If that looks a bit too much like \"programming in XML\" for your taste, you "
+"can use extension instead:"
+msgstr ""
+"Si à votre goût, cela ressemble un peu trop à la \"programmation dans XML\", "
+"vous pouvez utilisez l'extension à la place :"
+
+#. Tag: programlisting
+#: Framework.xml:25
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; implements "
+"LocalPersonHome {\n"
+"    @RequestParameter String personId;\n"
+"    @In EntityManager personDatabase;\n"
+"    \n"
+"    public Object getId() { return personId; }\n"
+"    public EntityManager getEntityManager() { return personDatabase; }\n"
+"    \n"
+"}"
+msgstr ""
+"@Stateful\n"
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; implements "
+"LocalPersonHome {\n"
+"    @RequestParameter String personId;\n"
+"    @In EntityManager personDatabase;\n"
+"    \n"
+"    public Object getId() { return personId; }\n"
+"    public EntityManager getEntityManager() { return personDatabase; }\n"
+"    \n"
+"}"
+
+#. Tag: para
+#: Framework.xml:26
+#, no-c-format
+msgid ""
+"The second approach has one huge advantage: you can easily add extra "
+"functionality, and override the built-in functionality (the framework "
+"classes were carefully designed for extension and customization)."
+msgstr ""
+"La seconde approche a un gros avantage : vous pouvez facilement ajouter des "
+"fonctionnalités supplémentaires, et surcharger la fonctionnalité imbriquée "
+"(les classes du framework ont été soigneusement conçues pour l'extension et "
+"la personnalisation)."
+
+#. Tag: para
+#: Framework.xml:29
+#, no-c-format
+msgid ""
+"A second advantage is that your classes may be EJB stateful sessin beans, if "
+"you like. (They do not have to be, they can be plain JavaBean components if "
+"you prefer.)"
+msgstr ""
+"Le second avantage est que vos classes peuvent être des beans session EJB "
+"stateful, si vous le souhaitez. (Ce n'est pas une obligation, ce peuvent "
+"être des composants JavaBean simples si vous préférez.)"
+
+#. Tag: para
+#: Framework.xml:32
+#, no-c-format
+msgid ""
+"At this time, the Seam Application Framework provides just four built-in "
+"components: <literal>EntityHome</literal> and <literal>HibernateEntityHome</"
+"literal> for CRUD, along with <literal>EntityQuery</literal> and "
+"<literal>HibernateEntityQuery</literal> for queries."
+msgstr ""
+"À ce jour, le framework d'application Seam fournit à peine quatre composants "
+"imbriqués : <literal>EntityHome</literal> et <literal>HibernateEntityHome</"
+"literal> pour CRUD, de même que <literal>EntityQuery</literal> et "
+"<literal>HibernateEntityQuery</literal> pour les questions."
+
+#. Tag: para
+#: Framework.xml:35
+#, no-c-format
+msgid ""
+"The Home and Query components are written so that they can function with a "
+"scope of session, event or conversation. Which scope you use depends upon "
+"the state model you wish to use in your application."
+msgstr ""
+"Les composants Home et Query sont écrits de façon à ce qu'ils fonctionnent "
+"avec une étendue de session, évènement ou conversation. L'étendue utilisée "
+"dépend du modèle de l'état que vous désirez utiliser dans votre application. "
+
+#. Tag: para
+#: Framework.xml:38
+#, no-c-format
+msgid ""
+"The Seam Application Framework only works with Seam-managed persistence "
+"contexts. By default, the components will look for a persistence context "
+"named <literal>entityManager</literal>."
+msgstr ""
+"Le framework d'application Seam ne fonctionne qu'avec des contextes de "
+"persistance gérés par Seam. Par défaut, les composants rechercheront le "
+"contexte de persistance, appelé <literal>entityManager</literal>."
+
+#. Tag: title
+#: Framework.xml:44
+#, no-c-format
+msgid "Home objects"
+msgstr "Objets Home "
+
+#. Tag: para
+#: Framework.xml:45
+#, no-c-format
+msgid ""
+"A Home object provides persistence operations for a particular entity class. "
+"Suppose we have our trusty <literal>Person</literal> class:"
+msgstr ""
+"Un objet Home fournit des opérations de persistance pour une classe d'entité "
+"particulière. Supposez que nous ayons notre classe <literal>Person</literal> "
+"de confiance :"
+
+#. Tag: programlisting
+#: Framework.xml:48
+#, no-c-format
+msgid ""
+"@Entity\n"
+"public class Person {\n"
+"    @Id private Long id;\n"
+"    private String firstName;\n"
+"    private String lastName;\n"
+"    private Country nationality;\n"
+"    \n"
+"    //getters and setters...\n"
+"}"
+msgstr ""
+"@Entity\n"
+"public class Person {\n"
+"    @Id private Long id;\n"
+"    private String firstName;\n"
+"    private String lastName;\n"
+"    private Country nationality;\n"
+"    \n"
+"    //getters and setters...\n"
+"}"
+
+#. Tag: para
+#: Framework.xml:49
+#, no-c-format
+msgid ""
+"We can define a <literal>personHome</literal> component either via "
+"configuration:"
+msgstr ""
+"Nous pouvons définir un composant <literal>personHome</literal> via la "
+"configuration :"
+
+#. Tag: programlisting
+#: Framework.xml:52
+#, no-c-format
+msgid ""
+"&lt;framework:entity-home name=\"personHome\" entity-class=\"eg.Person\" /"
+"&gt;"
+msgstr ""
+"&lt;framework:entity-home name=\"personHome\" entity-class=\"eg.Person\" /"
+"&gt;"
+
+#. Tag: para
+#: Framework.xml:53
+#, no-c-format
+msgid "Or via extension:"
+msgstr "Ou via l'extension :"
+
+#. Tag: programlisting
+#: Framework.xml:56
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {}"
+msgstr ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {}"
+
+#. Tag: para
+#: Framework.xml:57
+#, no-c-format
+msgid ""
+"A Home object provides the following operations: <literal>persist()</"
+"literal>, <literal>remove()</literal>, <literal>update()</literal> and "
+"<literal>getInstance()</literal>. Before you can call the <literal>remove()</"
+"literal>, or <literal>update()</literal> operations, you must first set the "
+"identifier of the object you are interested in, using the <literal>setId()</"
+"literal> method."
+msgstr ""
+"Un objet Home fournit les opérations suivantes : <literal>persist()</"
+"literal>, <literal>remove()</literal>, <literal>update()</literal> et "
+"<literal>getInstance()</literal>. Avant de pouvoir appeler les opérations "
+"<literal>remove()</literal>, ou <literal>update()</literal>, vous devez "
+"d'abord définir l'identificateur d'objet qui vous intéresse, en utilisant la "
+"méthode <literal>setId()</literal>."
+
+#. Tag: para
+#: Framework.xml:60
+#, no-c-format
+msgid "We can use a Home directly from a JSF page, for example:"
+msgstr ""
+"Vous pouvez utiliser un Home directement à partir d'une page JSF, par "
+"exemple :"
+
+#. Tag: programlisting
+#: Framework.xml:63
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Create Person&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{personHome.instance."
+"firstName}\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{personHome.instance."
+"lastName}\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h1&gt;Create Person&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{personHome.instance."
+"firstName}\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{personHome.instance."
+"lastName}\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+
+#. Tag: para
+#: Framework.xml:64
+#, fuzzy, no-c-format
+msgid ""
+"Usually, it is much nicer to be able to refer to the <literal>Person</"
+"literal> merely as <literal>person</literal>, so let&#39;s make that "
+"possible by adding a line to <literal>components.xml</literal>:"
+msgstr ""
+"Généralement, il est préférable de se référer à <literal>Person</literal> en "
+"tant que <literal>person</literal>, faisons-le en ajoutant une ligne au "
+"<literal>components.xml</literal> :"
+
+#. Tag: programlisting
+#: Framework.xml:67
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" /&gt;"
+msgstr ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" /&gt;"
+
+#. Tag: para
+#: Framework.xml:68
+#, no-c-format
+msgid ""
+"(If we are using configuration.) Or by adding a <literal>@Factory</literal> "
+"method to <literal>PersonHome</literal>:"
+msgstr ""
+"(Si nous utilisons la configuration.) Ou en ajoutant une méthode "
+"<literal>@Factory</literal> au <literal>PersonHome</literal> :"
+
+#. Tag: programlisting
+#: Framework.xml:71
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"}"
+msgstr ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"}"
+
+#. Tag: para
+#: Framework.xml:72
+#, no-c-format
+msgid ""
+"(If we are using extension.) This change simplifies our JSF page to the "
+"following:"
+msgstr ""
+"(Si nous utilisons l'extension.) Cette modification réduit notre page JSF à "
+"ce qui suit :"
+
+#. Tag: programlisting
+#: Framework.xml:75
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Create Person&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{person.firstName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{person.lastName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h1&gt;Create Person&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{person.firstName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{person.lastName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+
+#. Tag: para
+#: Framework.xml:76
+#, no-c-format
+msgid ""
+"Well, that lets us create new <literal>Person</literal> entries. Yes, that "
+"is all the code that is required! Now, if we want to be able to display, "
+"update and delete pre-existing <literal>Person</literal> entries in the "
+"database, we need to be able to pass the entry identifier to the "
+"<literal>PersonHome</literal>. Page parameters are a great way to do that:"
+msgstr ""
+"Cela nous permet de créer de nouvelles entrées <literal>Person</literal>. "
+"Oui, c'est bien tout le code nécessaire ! Maintenant, si nous souhaitons "
+"être afficher, mettre à jour et supprimer les entrées <literal>Person</"
+"literal> dans la base de données, nous devons être en mesure de passer "
+"l'identificateur d'entrée au <literal>PersonHome</literal>. À cet effet, les "
+"paramètres de page sont parfaits :"
+
+#. Tag: programlisting
+#: Framework.xml:79
+#, fuzzy, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/editPerson.jsp\"&gt;\n"
+"        &lt;param name=\"personId\" value=\"#{personHome.id}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page viewid=\"/editPerson.jsp\"&gt;\n"
+"        &lt;param name=\"personId\" value=\"#{personHome.id}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Framework.xml:80
+#, no-c-format
+msgid "Now we can add the extra operations to our JSF page:"
+msgstr ""
+"Maintenant, nous pouvons ajouter les opérations supplémentaires à notre page "
+"JSF :"
+
+#. Tag: programlisting
+#: Framework.xml:83
+#, fuzzy, no-c-format
+msgid ""
+"&lt;h1&gt;\n"
+"    &lt;h:outputText rendered=\"#{!personHome.managed}\" value=\"Create "
+"Person\"/&gt;\n"
+"    &lt;h:outputText rendered=\"#{personHome.managed}\" value=\"Edit Person"
+"\"/&gt;\n"
+"&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{person.firstName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{person.lastName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\" \n"
+"                             rendered=\"#{!personHome.managed}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Update Person\" action=\"#{personHome."
+"update}\" \n"
+"                             rendered=\"#{personHome.managed}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Delete Person\" action=\"#{personHome."
+"remove}\" \n"
+"                             rendered=\"#{personHome.managed}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h1&gt;\n"
+"    &lt;h:outputText rendered=\"#{!personHome.managed}\" value=\"Create "
+"Person\"/&gt;\n"
+"    &lt;h:outputText rendered=\"#{personHome.managed}\" value=\"Edit Person"
+"\"/&gt;\n"
+"&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{person.firstName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{person.lastName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\" \n"
+"            rendered=\"#{!personHome.managed}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Update Person\" action=\"#{personHome."
+"update}\" \n"
+"            rendered=\"#{personHome.managed}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Delete Person\" action=\"#{personHome."
+"remove}\" \n"
+"            rendered=\"#{personHome.managed}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+
+#. Tag: para
+#: Framework.xml:84
+#, no-c-format
+msgid ""
+"When we link to the page with no request parameters, the page will be "
+"displayed as a \"Create Person\" page. When we provide a value for the "
+"<literal>personId</literal> request parameter, it will be an \"Edit Person\" "
+"page."
+msgstr ""
+"Quand nous accédons à la page avec les paramètres sans requête, la page sera "
+"affichée en tant que page\"Créer Person\". Quand nous fournissons une valeur "
+"pour le paramètre de requête<literal>personId</literal>, ce sera une page "
+"\"Éditer Person\"."
+
+#. Tag: para
+#: Framework.xml:87
+#, no-c-format
+msgid ""
+"Suppose we need to create <literal>Person</literal> entries with their "
+"nationality initialized. We can do that easily, via configuration:"
+msgstr ""
+"Supposez que nous dussions créer des entrées <literal>Person</literal> avec "
+"leur nationalité initialisée. Nous pouvons effectuer cela facilement, via la "
+"configuration :"
+
+#. Tag: programlisting
+#: Framework.xml:90
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" \n"
+"                       new-instance=\"#{newPerson}\"/&gt;\n"
+"\n"
+"&lt;component name=\"newPerson\" \n"
+"           class=\"eg.Person\"&gt;\n"
+"    &lt;property name=\"nationality\"&gt;#{country}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" \n"
+"                       new-instance=\"#{newPerson}\"/&gt;\n"
+"\n"
+"&lt;component name=\"newPerson\" \n"
+"           class=\"eg.Person\"&gt;\n"
+"    &lt;property name=\"nationality\"&gt;#{country}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+
+#. Tag: para
+#: Framework.xml:91
+#, no-c-format
+msgid "Or by extension:"
+msgstr "Ou par l'extension :"
+
+#. Tag: programlisting
+#: Framework.xml:94
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"}"
+
+#. Tag: para
+#: Framework.xml:95
+#, no-c-format
+msgid ""
+"Of course, the <literal>Country</literal> could be an object managed by "
+"another Home object, for example, <literal>CountryHome</literal>."
+msgstr ""
+"Évidemment le <literal>Country</literal> pourrait être un objet géré par un "
+"autre objetHome, par exemple, <literal>CountryHome</literal>."
+
+#. Tag: para
+#: Framework.xml:98
+#, no-c-format
+msgid ""
+"To add more sophisticated operations (association management, etc), we can "
+"just add methods to <literal>PersonHome</literal>."
+msgstr ""
+"Pour ajouter des opérations plus sophistiquées (gestion d'associations, "
+"etc), il nous suffit d'ajouter des méthodes au <literal>PersonHome</literal>."
+
+#. Tag: programlisting
+#: Framework.xml:101
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"    public void migrate()\n"
+"    {\n"
+"        getInstance().setCountry(country);\n"
+"        update();\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"    public void migrate()\n"
+"    {\n"
+"        getInstance().setCountry(country);\n"
+"        update();\n"
+"    }\n"
+"    \n"
+"}"
+
+#. Tag: para
+#: Framework.xml:102
+#, no-c-format
+msgid ""
+"The Home object automatically displays faces messages when an operation is "
+"successful. To customize these messages we can, again, use configuration:"
+msgstr ""
+"L'objet Home affiche automatiquement des messages quand une opération a "
+"réussi. Pour personnaliser ces messages, nous pouvons, à nouveau, utiliser "
+"la configuration :"
+
+#. Tag: programlisting
+#: Framework.xml:105
+#, fuzzy, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\"\n"
+"                       entity-class=\"eg.Person\"\n"
+"                       new-instance=\"#{newPerson}\"&gt;\n"
+"    &lt;framework:created-message&gt;New person #{person.firstName} #{person."
+"lastName} created&lt;/framework:created-message&gt;\n"
+"    &lt;framework:deleted-message&gt;Person #{person.firstName} #{person."
+"lastName} deleted&lt;/framework:deleted-message&gt;\n"
+"    &lt;framework:updated-message&gt;Person #{person.firstName} #{person."
+"lastName} updated&lt;/framework:updated-message&gt;\n"
+"&lt;/framework:entity-home&gt;\n"
+"\n"
+"&lt;component name=\"newPerson\" \n"
+"           class=\"eg.Person\"&gt;\n"
+"    &lt;property name=\"nationality\"&gt;#{country}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\"\n"
+"                       entity-class=\"eg.Person\"\n"
+"                       new-instance=\"#{newPerson}\"&gt;\n"
+"    &lt;framework:created-message&gt;New person #{person.firstName} #{person."
+"lastName} \n"
+"        created&lt;/framework:created-message&gt;\n"
+"    &lt;framework:deleted-message&gt;Person #{person.firstName} #{person."
+"lastName}\n"
+"        deleted&lt;/framework:deleted-message&gt;\n"
+"    &lt;framework:updated-message&gt;Person #{person.firstName} #{person."
+"lastName} \n"
+"        updated&lt;/framework:updated-message&gt;\n"
+"&lt;/framework:entity-home&gt;\n"
+"\n"
+"&lt;component name=\"newPerson\" \n"
+"           class=\"eg.Person\"&gt;\n"
+"    &lt;property name=\"nationality\"&gt;#{country}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+
+#. Tag: para
+#: Framework.xml:106
+#, no-c-format
+msgid "Or extension:"
+msgstr "Ou l'extension :"
+
+#. Tag: programlisting
+#: Framework.xml:109
+#, fuzzy, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"    protected String getCreatedMessage() { return \"New person #{person."
+"firstName} \n"
+"      #{person.lastName} created\"; }\n"
+"    protected String getUpdatedMessage() { return \"Person #{person."
+"firstName} \n"
+"      #{person.lastName} updated\"; }\n"
+"    protected String getDeletedMessage() { return \"Person #{person."
+"firstName} \n"
+"      #{person.lastName} deleted\"; }\n"
+"    \n"
+"}"
+msgstr ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"    protected String getCreatedMessage() { return \"New person #{person."
+"firstName} \n"
+"        #{person.lastName} created\"; }\n"
+"    protected String getUpdatedMessage() { return \"Person #{person."
+"firstName} \n"
+"        #{person.lastName} updated\"; }\n"
+"    protected String getDeletedMessage() { return \"Person #{person."
+"firstName} \n"
+"        #{person.lastName} deleted\"; }\n"
+"    \n"
+"}"
+
+#. Tag: para
+#: Framework.xml:110
+#, no-c-format
+msgid ""
+"But the best way to specify the messages is to put them in a resource bundle "
+"known to Seam (the bundle named <literal>messages</literal>, by default)."
+msgstr ""
+"Mais la meilleure façon de spécifier les messages est de les mettre dans un "
+"paquet de ressources, connu de Seam (le paquet, appelé <literal>messages</"
+"literal>, par défaut)."
+
+#. Tag: programlisting
+#: Framework.xml:113
+#, no-c-format
+msgid ""
+"Person_created=New person #{person.firstName} #{person.lastName} created\n"
+"Person_deleted=Person #{person.firstName} #{person.lastName} deleted\n"
+"Person_updated=Person #{person.firstName} #{person.lastName} updated"
+msgstr ""
+"Person_created=New person #{person.firstName} #{person.lastName} created\n"
+"Person_deleted=Person #{person.firstName} #{person.lastName} deleted\n"
+"Person_updated=Person #{person.firstName} #{person.lastName} updated"
+
+#. Tag: para
+#: Framework.xml:114
+#, no-c-format
+msgid ""
+"This enables internationalization, and keeps your code and configuration "
+"clean of presentation concerns."
+msgstr ""
+"Cela permet l'internationalisation, et votre code et configuration n'auront "
+"pas de problèmes de présentation. "
+
+#. Tag: para
+#: Framework.xml:117
+#, fuzzy, no-c-format
+msgid ""
+"The final step is to add validation functionality to the page, using "
+"<literal>&lt;s:validateAll&gt;</literal> and <literal>&lt;s:decorate&gt;</"
+"literal>, but I&#39;ll leave that for you to figure out."
+msgstr ""
+"La dernière étape est d'ajouter la fonctionnalité de validation à la page, "
+"avec<literal>&lt;s:validateAll&gt;</literal> et <literal>&lt;s:decorate&gt;</"
+"literal>, mais je vous laisse deviner comment le faire. "
+
+#. Tag: title
+#: Framework.xml:123
+#, no-c-format
+msgid "Query objects"
+msgstr "Objets questions"
+
+#. Tag: para
+#: Framework.xml:124
+#, no-c-format
+msgid ""
+"If we need a list of all <literal>Person</literal> instance in the database, "
+"we can use a Query object. For example:"
+msgstr ""
+"Si nous avons besoin d'une liste de toutes les instances <literal>Person</"
+"literal> dans la base de données, nous pouvons utiliser un objet question. "
+"Par exemple :"
+
+#. Tag: programlisting
+#: Framework.xml:127
+#, no-c-format
+msgid ""
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\"/&gt;"
+msgstr ""
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\"/&gt;"
+
+#. Tag: para
+#: Framework.xml:128
+#, no-c-format
+msgid "We can use it from a JSF page:"
+msgstr "Nous pouvons l'utiliser d'une page JSF :"
+
+#. Tag: programlisting
+#: Framework.xml:131
+#, fuzzy, no-c-format
+msgid ""
+"&lt;h1&gt;List of people&lt;/h1&gt;\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+"&lt;h1&gt;List of people&lt;/h1&gt;\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view-id=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+
+#. Tag: para
+#: Framework.xml:132
+#, no-c-format
+msgid "We probably need to support pagination:"
+msgstr "Il nous faudra sans doute supporter la pagination :"
+
+#. Tag: programlisting
+#: Framework.xml:135
+#, no-c-format
+msgid ""
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\" \n"
+"                        order=\"lastName\" \n"
+"                        max-results=\"20\"/&gt;"
+msgstr ""
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\" \n"
+"                        order=\"lastName\" \n"
+"                        max-results=\"20\"/&gt;"
+
+#. Tag: para
+#: Framework.xml:136
+#, fuzzy, no-c-format
+msgid "We&#39;ll use a page parameter to determine the page to display:"
+msgstr ""
+"Nous utiliserons un paramètre de page pour déterminer la page à afficher :"
+
+#. Tag: programlisting
+#: Framework.xml:139
+#, fuzzy, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/searchPerson.jsp\"&gt;\n"
+"        &lt;param name=\"firstResult\" value=\"#{people.firstResult}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page viewid=\"/searchPerson.jsp\"&gt;\n"
+"        &lt;param name=\"firstResult\" value=\"#{people.firstResult}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Framework.xml:140
+#, no-c-format
+msgid "The JSF code for a pagination control is a bit verbose, but manageable:"
+msgstr ""
+"Le code JSF pour un contrôle de pagination est un peu trop détaillé, mais "
+"pas trop difficile à gérer :"
+
+#. Tag: programlisting
+#: Framework.xml:143
+#, fuzzy, no-c-format
+msgid ""
+"&lt;h1&gt;Search for people&lt;/h1&gt;\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.previousExists}\" "
+"value=\"First Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"0\"/&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.previousExists}\" "
+"value=\"Previous Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.previousFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.nextExists}\" value="
+"\"Next Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.nextFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.nextExists}\" value="
+"\"Last Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.lastFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;"
+msgstr ""
+"&lt;h1&gt;Search for people&lt;/h1&gt;\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view-id=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.previousExists}\" "
+"value=\"First Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"0\"/&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.previousExists}\" "
+"value=\"Previous Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.previousFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.nextExists}\" value="
+"\"Next Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.nextFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.nextExists}\" value="
+"\"Last Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.lastFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;"
+
+#. Tag: para
+#: Framework.xml:144
+#, no-c-format
+msgid ""
+"Real search screens let the user enter a bunch of optional search criteria "
+"to narrow the list of results returned. The Query object lets you specify "
+"optional \"restrictions\" to support this important usecase:"
+msgstr ""
+"Les vrais écrans de recherche permettent à l'utilisateur d'entrer des "
+"critères de recherche optionnels pour réduire la liste des résultats "
+"retournés. L'objet question vous permet de spécifier les \"restrictions\" "
+"optionnelles pour supporter ce cas d'usage important."
+
+#. Tag: programlisting
+#: Framework.xml:147
+#, fuzzy, no-c-format
+msgid ""
+"&lt;component name=\"examplePerson\" class=\"Person\"/&gt;\n"
+"        \n"
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\" \n"
+"                        order=\"lastName\" \n"
+"                        max-results=\"20\"&gt;\n"
+"    &lt;framework:restrictions&gt;\n"
+"        &lt;value&gt;lower(firstName) like lower( #{examplePerson.firstName} "
+"+ &#39;%&#39; )&lt;/value&gt;\n"
+"        &lt;value&gt;lower(lastName) like lower( #{examplePerson.lastName} + "
+"&#39;%&#39; )&lt;/value&gt;\n"
+"    &lt;/framework:restrictions&gt;\n"
+"&lt;/framework:entity-query&gt;"
+msgstr ""
+"&lt;component name=\"examplePerson\" class=\"Person\"/&gt;\n"
+"        \n"
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\" \n"
+"                        order=\"lastName\" \n"
+"                        max-results=\"20\"&gt;\n"
+"    &lt;framework:restrictions&gt;\n"
+"        &lt;value&gt;lower(firstName) like lower( #{examplePerson.firstName} "
+"+ '&#37;' )&lt;/value&gt;\n"
+"        &lt;value&gt;lower(lastName) like lower( #{examplePerson.lastName} + "
+"'&#37;' )&lt;/value&gt;\n"
+"    &lt;/framework:restrictions&gt;\n"
+"&lt;/framework:entity-query&gt;"
+
+#. Tag: para
+#: Framework.xml:148
+#, no-c-format
+msgid "Notice the use of an \"example\" object."
+msgstr "Remarquez l'utilisation de l'objet \"exemple\"."
+
+#. Tag: programlisting
+#: Framework.xml:151
+#, fuzzy, no-c-format
+msgid ""
+"&lt;h1&gt;Search for people&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{examplePerson.firstName}"
+"\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{examplePerson.lastName}"
+"\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;&lt;h:commandButton value=\"Search\" action=\"/search.jsp\"/"
+"&gt;&lt;/div&gt;\n"
+"&lt;/h:form&gt;\n"
+"\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+"&lt;h1&gt;Search for people&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{examplePerson.firstName}"
+"\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{examplePerson.lastName}"
+"\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;&lt;h:commandButton value=\"Search\" action=\"/search.jsp\"/"
+"&gt;&lt;/div&gt;\n"
+"&lt;/h:form&gt;\n"
+"\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view-id=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+
+#. Tag: para
+#: Framework.xml:152
+#, no-c-format
+msgid ""
+"The examples in this section have all shown reuse by configuration. However, "
+"reuse by extension is equally possible for Query objects."
+msgstr ""
+"Dans cette section, ces exemples ont tous indiqué reuse par la "
+"configuration. Cependant, reuse par l'extension est aussi possible pour les "
+"objets questions. "
+
+#. Tag: title
+#: Framework.xml:158
+#, no-c-format
+msgid "Controller objects"
+msgstr "Contrôleur d'objets"
+
+#. Tag: para
+#: Framework.xml:159
+#, no-c-format
+msgid ""
+"A totally optional part of the Seam Application Framework is the class "
+"<literal>Controller</literal> and its subclasses <literal>EntityController</"
+"literal><literal>HibernateEntityController</literal> and "
+"<literal>BusinessProcessController</literal>. These classes provide nothing "
+"more than some convenience methods for access to commonly used built-in "
+"components and methods of built-in components. They help save a few "
+"keystrokes (characters can add up!) and provide a great launchpad for new "
+"users to explore the rich functionality built in to Seam."
+msgstr ""
+"Une partie totalement optionnelle du framework d'application Seam est la "
+"classe <literal>Controller</literal> et ses sous-classes "
+"<literal>EntityController</literal><literal>HibernateEntityController</"
+"literal> et <literal>BusinessProcessController</literal>. Ces classes ne "
+"fournissent rien de plus que quelques méthodes commodes pour accéder aux "
+"composants imbriqués, fréquemment utilisés et des méthodes de composants "
+"imbriqués. Elles aident à éviter quelques frappes (les caractères peuvent "
+"n'en plus finir !) et fournissent une plate-forme de lancement parfaite pour "
+"les nouveaux utilisateurs qui explorent les riches fonctionnalités "
+"imbriquées dans Seam. "
+
+#. Tag: para
+#: Framework.xml:162
+#, no-c-format
+msgid ""
+"For example, here is what <literal>RegisterAction</literal> from the Seam "
+"registration example would look like:"
+msgstr ""
+"Par exemple, voici à quoi ressemblerait le <literal>RegisterAction</literal> "
+"de l'exemple d'enregistrement Seam : "
+
+#. Tag: programlisting
+#: Framework.xml:165
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"register\")\n"
+"public class RegisterAction extends EntityController implements Register\n"
+"{\n"
+"\n"
+"   @In private User user;\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = createQuery(\"select u.username from User u where u."
+"username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getResultList();\n"
+"      \n"
+"      if ( existing.size()==0 )\n"
+"      {\n"
+"         persist(user);\n"
+"         info(\"Registered new user #{user.username}\");\n"
+"         return \"/registered.jspx\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         addFacesMessage(\"User #{user.username} already exists\");\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+"@Stateless\n"
+"@Name(\"register\")\n"
+"public class RegisterAction extends EntityController implements Register\n"
+"{\n"
+"\n"
+"   @In private User user;\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = createQuery(\"select u.username from User u where u."
+"username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getResultList();\n"
+"      \n"
+"      if ( existing.size()==0 )\n"
+"      {\n"
+"         persist(user);\n"
+"         info(\"Registered new user #{user.username}\");\n"
+"         return \"/registered.jspx\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         addFacesMessage(\"User #{user.username} already exists\");\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+
+#. Tag: para
+#: Framework.xml:166
+#, no-c-format
+msgid "As you can see, its not an earthshattering improvement..."
+msgstr ""
+"Comme vous pouvez le constater, ce n'est pas une amélioration "
+"bouleversante..."

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Gettingstarted.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Gettingstarted.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Gettingstarted.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1073 @@
+# translation of Gettingstarted.po to french
+# myriam malga <mmalga at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Gettingstarted\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2007-08-06 11:29+1000\n"
+"Last-Translator: myriam malga <mmalga at redhat.com>\n"
+"Language-Team: french\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Gettingstarted.xml:6
+#, no-c-format
+msgid "Getting started with Seam, using seam-gen"
+msgstr "Commencer avec Seam, en utilisant seam-gen"
+
+#. Tag: para
+#: Gettingstarted.xml:7
+#, no-c-format
+msgid ""
+"The Seam distribution includes a command line utility that makes it really "
+"easy to set up an Eclipse project, generate some simple Seam skeleton code, "
+"and reverse engineer an application from a pre-existing database."
+msgstr ""
+"La distribution Seam inclut un utilitaire en ligne de commande qui permet de "
+"créer facilement un projet Eclipse, puis de générer quelque squelette de "
+"code Seam simple, et d'effectuer du reverse engineering sur une application, "
+"depuis une base de données existante."
+
+#. Tag: para
+#: Gettingstarted.xml:10
+#, no-c-format
+msgid ""
+"This is the easy way to get your feet wet with Seam, and gives you some "
+"ammunition for next time you find yourself trapped in an elevator with one "
+"of those tedious Ruby guys ranting about how great and wonderful his new toy "
+"is for building totally trivial applications that put things in databases."
+msgstr ""
+"C'est un moyen simple de mettre la main à la pâte avec Seam, et de vous "
+"armer pour la prochaine fois pour une rencontre dans un ascenseur face à des "
+"fans de Ruby, qui vantent la facilité magique que cet outil a de créer des "
+"applicaitons complètement triviales pour mettre des choses en base de "
+"données."
+
+#. Tag: para
+#: Gettingstarted.xml:13
+#, no-c-format
+msgid ""
+"In this release, seam-gen works best for people with JBoss AS. You can use "
+"the generated project with other J2EE or Java EE 5 application servers by "
+"making a few manual changes to the project configuration."
+msgstr ""
+"Dans cette distribution, seam-gen fonctionne mieux pour les personnes "
+"équipées de JBoss AS. Vous pouvez l'utiliser pour des projets générés pour "
+"d'autres serveurs d'application J2EE ou Java EE 5 en effectuant quelques "
+"changements manuels à la configuration du projet."
+
+#. Tag: para
+#: Gettingstarted.xml:16
+#, fuzzy, no-c-format
+msgid ""
+"You <emphasis>can</emphasis> use seam-gen without Eclipse, but in this "
+"tutorial, we want to show you how to use it in conjunction with Eclipse for "
+"debugging and integration testing. If you don&#39;t want to install Eclipse, "
+"you can still follow along with this tutorial&mdash;all steps can be "
+"peformed from the command line."
+msgstr ""
+"Vous <emphasis>pouvez</emphasis> utiliser seam-gen sans Eclipse, mais dans "
+"ce tutoriel, nous vous montrons comment l'utiliser avec Eclipse pour les "
+"tests de débogage et d'intégration. Si vous ne désirez pas installer "
+"Eclipse, vous pouvez quand même suivre ce tutoriel - toutes les étapes "
+"peuvent être effectuées depuis la ligne de commande."
+
+#. Tag: para
+#: Gettingstarted.xml:19
+#, no-c-format
+msgid ""
+"Seam-gen is basically just a big ugly Ant script wrapped around Hibernate "
+"Tools, together with some templates. Which means it is easy to customize if "
+"you need to."
+msgstr ""
+"Seam-gen n'est essentiellement qu'un grand script Ant très laid et qui "
+"encapsule les outils Hibernate, avec quelques modèles. Ce qui signifie qu'il "
+"est facile à personnaliser si besoin est."
+
+#. Tag: title
+#: Gettingstarted.xml:23
+#, no-c-format
+msgid "Before you start"
+msgstr "Avant de commencer"
+
+#. Tag: para
+#: Gettingstarted.xml:24
+#, no-c-format
+msgid ""
+"Make sure you have JDK 5 or JDK 6, JBoss AS 4.0.5 and Ant 1.6, along with "
+"recent versions of Eclipse, the JBoss IDE plugin for Eclipse and the TestNG "
+"plugin for Eclipse correctly installed before starting. Add your JBoss "
+"installation to the JBoss Server View in Eclipse. Start JBoss in debug mode. "
+"Finally, start a command prompt in the directory where you unzipped the Seam "
+"distribution."
+msgstr ""
+"Assurez vous d'avoir JDK 5 OU 6, JBoss AS 4.0.5 et Ant 1.6, ainsi que des "
+"versions récentes d'Eclipse, des plugins JBoss IDE et TestNG, correctement "
+"installées avant de commencer. Ajoutez votre installation JBoss dans la vue "
+"JBoss Server d'Eclipse. Démarrez JBoss en mode debug. Enfin, ouvrez un "
+"invite de commande dans le répertoire où vous avez décompressé la "
+"distribution Seam."
+
+#. Tag: para
+#: Gettingstarted.xml:27
+#, no-c-format
+msgid ""
+"JBoss has sophisticated support for hot re-deployment of WARs and EARs. "
+"Unfortunately, due to bugs in the JVM, repeated redeployment of an EAR&mdash;"
+"which is common during development&mdash;eventually causes the JVM to run "
+"out of perm gen space. For this reason, we recommend running JBoss in a JVM "
+"with a large perm gen space at development time. If you&#39;re running JBoss "
+"from JBoss IDE, you can configure this in the server launch configuration, "
+"under \"VM arguments\". We suggest the following values:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:30
+#, no-c-format
+msgid "-Xms512m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:31
+#, no-c-format
+msgid ""
+"If you don&#39;t have so much memory available, the following is our minimum "
+"recommendation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:34
+#, no-c-format
+msgid "-Xms256m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=256"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:35
+#, no-c-format
+msgid ""
+"If you&#39;re running JBoss from the commandline, you can configure the JVM "
+"options in <literal>bin/run.conf</literal>."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:38
+#, no-c-format
+msgid ""
+"If you don&#39;t want to bother with this stuff now, you don&#39;t have "
+"to&mdash;come back to it later, when you get your first "
+"<literal>OutOfMemoryException</literal>."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:44
+#, no-c-format
+msgid "Setting up a new Eclipse project"
+msgstr "Mettre en place un nouveau projet Eclipse"
+
+#. Tag: para
+#: Gettingstarted.xml:45
+#, fuzzy, no-c-format
+msgid ""
+"The first thing we need to do is configure seam-gen for your environment: "
+"JBoss AS installation directory, Eclipse workspace, and database connection. "
+"It&#39;s easy, just type:"
+msgstr ""
+"Notre première étape est de configurer seam-gen pour votre environnement : "
+"répertoire d'installation JBoss, espace de travail Eclipse, et connexion à "
+"la base de données. C'est facile, il suffit de saisir :"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:48
+#, no-c-format
+msgid ""
+"cd jboss-seam-1.1.x\n"
+"seam setup"
+msgstr ""
+"cd jboss-seam-1.1.x\n"
+"seam setup"
+
+#. Tag: para
+#: Gettingstarted.xml:49
+#, no-c-format
+msgid "And you will be prompted for the needed information:"
+msgstr "Et on vous demandera les informations requises :"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:52
+#, fuzzy, no-c-format
+msgid ""
+"C:\\Projects\\jboss-seam&gt;seam setup\n"
+"Buildfile: C:\\Projects\\jboss-seam\\seam-gen\\build.xml\n"
+"\n"
+"setup:\n"
+"    [echo] Welcome to seam-gen :-)\n"
+"    [input] Enter your Java project workspace [C:/Projects]\n"
+"\n"
+"    [input] Enter your JBoss home directory [C:/Program Files/jboss-4.0.5."
+"GA]\n"
+"\n"
+"    [input] Enter the project name [myproject]\n"
+"helloworld\n"
+"    [input] Is this project deployed as an EAR (with EJB components) or a "
+"WAR \n"
+"       (with no EJB support) [ear] (ear,war,)\n"
+"\n"
+"    [input] Enter the Java package name for your session beans [com.mydomain."
+"helloworld]\n"
+"org.jboss.helloworld\n"
+"    [input] Enter the Java package name for your entity beans [org.jboss."
+"helloworld]\n"
+"\n"
+"    [input] Enter the Java package name for your test cases [org.jboss."
+"helloworld.test]\n"
+"\n"
+"    [input] What kind of database are you using? [hsql] \n"
+"    (hsql,mysql,oracle,postgres,mssql,db2,sybase,)\n"
+"mysql\n"
+"    [input] Enter the Hibernate dialect for your database [org.hibernate."
+"dialect.MySQLDialect]\n"
+"\n"
+"    [input] Enter the filesystem path to the JDBC driver jar [lib/hsqldb."
+"jar]\n"
+"../../mysql-connector.jar\n"
+"    [input] Enter JDBC driver class for your database [com.mysql.jdbc."
+"Driver]\n"
+"\n"
+"    [input] Enter the JDBC URL for your database [jdbc:mysql:///test]\n"
+"\n"
+"    [input] Enter database username [sa]\n"
+"gavin\n"
+"    [input] Enter database password []\n"
+"\n"
+"    [input] Are you working with tables that already exist in the database? "
+"[n] (y,n,)\n"
+"y\n"
+"    [input] Do you want to drop and recreate the database tables and data in "
+"import.sql \n"
+"    each time you deploy? [n] (y,n,)\n"
+"n\n"
+"[propertyfile] Creating new property file: C:\\Projects\\jboss-seam\\seam-gen"
+"\\build.properties\n"
+"     [echo] Installing JDBC driver jar to JBoss server\n"
+"     [echo] Type &#39;seam new-project&#39; to create the new project\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 1 minute 17 seconds\n"
+"C:\\Projects\\jboss-seam&gt;"
+msgstr ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam setup\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"setup:\n"
+"    [echo] Welcome to seam-gen :-)\n"
+"    [input] Enter your Java project workspace [C:/Projects]\n"
+"\n"
+"    [input] Enter your JBoss home directory [C:/Program Files/jboss-4.0.5."
+"GA]\n"
+"\n"
+"    [input] Enter the project name [myproject]\n"
+"helloworld\n"
+"    [input] Is this project deployed as an EAR (with EJB components) or a "
+"WAR \n"
+"        (with no EJB support) [ear] (ear,war,)\n"
+"\n"
+"    [input] Enter the Java package name for your session beans [com.mydomain."
+"helloworld]\n"
+"org.jboss.helloworld\n"
+"    [input] Enter the Java package name for your entity beans [org.jboss."
+"helloworld]\n"
+"\n"
+"    [input] Enter the Java package name for your test cases [org.jboss."
+"helloworld.test]\n"
+"\n"
+"    [input] What kind of database are you using? [hsql]\n"
+"    (hsql,mysql,oracle,postgres,mssql,db2,sybase,)\n"
+"mysql\n"
+"    [input] Enter the Hibernate dialect for your database [org.hibernate."
+"dialect.MySQLDialect]\n"
+"\n"
+"    [input] Enter the filesystem path to the JDBC driver jar [lib/hsqldb."
+"jar]\n"
+"../../mysql-connector.jar\n"
+"    [input] Enter JDBC driver class for your database [com.mysql.jdbc."
+"Driver]\n"
+"\n"
+"    [input] Enter the JDBC URL for your database [jdbc:mysql:///test]\n"
+"\n"
+"    [input] Enter database username [sa]\n"
+"gavin\n"
+"    [input] Enter database password []\n"
+"\n"
+"    [input] Are you working with tables that already exist in the database? "
+"[n] (y,n,)\n"
+"y\n"
+"    [input] Do you want to drop and recreate the database tables and data in "
+"import.sql \n"
+"    each time you deploy? [n] (y,n,)\n"
+"n\n"
+"[propertyfile] Creating new property file: C:&#92;Projects&#92;jboss-"
+"seam&#92;seam-gen&#92;build.properties\n"
+"     [echo] Installing JDBC driver jar to JBoss server\n"
+"     [echo] Type 'seam new-project' to create the new project\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 1 minute 17 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+
+#. Tag: para
+#: Gettingstarted.xml:53
+#, no-c-format
+msgid ""
+"The tool provides sensible defaults, which you can accept by just pressing "
+"enter at the prompt."
+msgstr ""
+"L'outil fournit des valeurs par défaut raisonnables, que vous pouvez "
+"accepter en appuyant sur entrée."
+
+#. Tag: para
+#: Gettingstarted.xml:56
+#, fuzzy, no-c-format
+msgid ""
+"The most important choice you need to make is between EAR deployment and WAR "
+"deployment of your project. EAR projects support EJB 3.0 and require Java EE "
+"5. WAR projects do not support EJB 3.0, but may be deployed to a J2EE "
+"environment. The packaging of a WAR is also simpler to understand. If you "
+"installed JBoss with the ejb3 profile, choose <literal>ear</literal>. "
+"Otherwise, choose <literal>war</literal>. We&#39;ll assume that you&#39;ve "
+"chosen an EAR deployment for the rest of the tutorial, but you can follow "
+"exactly the same steps for a WAR deployment."
+msgstr ""
+"Le plus important consiste à choisir entre un déploiement de votre projet "
+"EAR ou WAR. EAR supporte EJB 3.0 et nécessite Java EE 5. Les projets WAR ne "
+"supportent pas EJB 3.0, mais peuvent être déployés dans des environnements "
+"J2EE. L'empaquetage d'un WAR est aussi plus simple à comprendre. Si vous "
+"avez installé JBoss avec le profil ejb3, choisissez <literal>ear</literal>. "
+"Sinon, choisissez <literal>war</literal>. Nous supposerons que vous avez "
+"choisi le déploiement EAR pour le reste du tutoriel, mais vous pouvez suivre "
+"exactement les mêmes étapes pour un déploiement WAR."
+
+#. Tag: para
+#: Gettingstarted.xml:59
+#, no-c-format
+msgid ""
+"If you are working with an existing data model, make sure you tell seam-gen "
+"that the tables already exist in the database."
+msgstr ""
+"Si vous travaillez avec un modèle de données existant, assurez-vous "
+"d'avertir seam-gen de l'existance de la base de données"
+
+#. Tag: para
+#: Gettingstarted.xml:62
+#, no-c-format
+msgid ""
+"The settings are stored in <literal>seam-gen/build.properties</literal>, but "
+"you can also modify them simply by running <literal>seam setup</literal> a "
+"second time."
+msgstr ""
+"Les paramètres se trouvent dans <literal>seam-gen/build.properties</"
+"literal>, mais vous pouvez aussi les modifier en lançant <literal>seam "
+"setup</literal> une seconde fois."
+
+#. Tag: para
+#: Gettingstarted.xml:65
+#, no-c-format
+msgid ""
+"Now we can create a new project in our Eclipse workspace directory, by "
+"typing:"
+msgstr ""
+"Nous pouvons désormais créer un nouveau projet le répertoire de notre espace "
+"de travail Eclipse, en saisissant :"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:68
+#, no-c-format
+msgid "seam new-project"
+msgstr "seam new-project"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:69
+#, fuzzy, no-c-format
+msgid ""
+"C:\\Projects\\jboss-seam&gt;seam new-project\n"
+"Buildfile: C:\\Projects\\jboss-seam\\seam-gen\\build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"copy-lib:\n"
+"     [echo] Copying project jars ...\n"
+"     [copy] Copying 32 files to C:\\Projects\\helloworld\\lib\n"
+"     [copy] Copying 9 files to C:\\Projects\\helloworld\\embedded-ejb\n"
+"\n"
+"file-copy-wtp:\n"
+"\n"
+"file-copy:\n"
+"     [echo] Copying project resources ...\n"
+"     [copy] Copying 12 files to C:\\Projects\\helloworld\\resources\n"
+"     [copy] Copying 1 file to C:\\Projects\\helloworld\\resources\n"
+"     [copy] Copying 5 files to C:\\Projects\\helloworld\\view\n"
+"     [copy] Copying 5 files to C:\\Projects\\helloworld\n"
+"    [mkdir] Created dir: C:\\Projects\\helloworld\\src\n"
+"\n"
+"new-project:\n"
+"     [echo] A new Seam project named &#39;helloworld&#39; was created in "
+"the /Users/gavin/Documents/workspace directory\n"
+"     [echo] Type &#39;seam explode&#39; and go to http://localhost:8080/"
+"helloworld\n"
+"     [echo] Eclipse Users: Add the project into Eclipse using File &gt; New "
+"&gt; Project and select General &gt; Project (not Java Project)\n"
+"     [echo] NetBeans Users: Open the project in NetBeans\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 7 seconds\n"
+"C:\\Projects\\jboss-seam&gt;"
+msgstr ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam new-project\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"copy-lib:\n"
+"     [echo] Copying project jars ...\n"
+"     [copy] Copying 32 files to C:&#92;Projects&#92;helloworld&#92;lib\n"
+"     [copy] Copying 9 files to C:&#92;Projects&#92;helloworld&#92;embedded-"
+"ejb\n"
+"\n"
+"file-copy-wtp:\n"
+"\n"
+"file-copy:\n"
+"     [echo] Copying project resources ...\n"
+"     [copy] Copying 12 files to C:&#92;Projects&#92;helloworld&#92;"
+"resources\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;helloworld&#92;resources\n"
+"     [copy] Copying 5 files to C:&#92;Projects&#92;helloworld&#92;view\n"
+"     [copy] Copying 5 files to C:&#92;Projects&#92;helloworld\n"
+"    [mkdir] Created dir: C:&#92;Projects&#92;helloworld&#92;src\n"
+"\n"
+"new-project:\n"
+"     [echo] A new Seam project was created in the C:/Projects directory\n"
+"     [echo] Add the project from inside Eclipse (or type 'seam explode') and "
+"go to http://localhost:\n"
+"8080/helloworld\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 7 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+
+#. Tag: para
+#: Gettingstarted.xml:70
+#, fuzzy, no-c-format
+msgid ""
+"This copies the Seam jars, dependent jars and the JDBC driver jar to a new "
+"Eclipse project, and generates all needed resources and configuration files, "
+"a facelets template file and stylesheet, along with Eclipse metadata and an "
+"Ant build script. The Eclipse project will be automatically deployed to an "
+"exploded directory structure in JBoss AS as soon as you add the project "
+"using <literal>New -&gt; Project... -&gt; General -&gt; Project -&gt; Next</"
+"literal>, typing the <literal>Project name</literal> (<literal>helloworld</"
+"literal> in this case), and then clicking <literal>Finish</literal>. Do not "
+"select <literal>Java Project</literal> from the New Project wizard."
+msgstr ""
+"Cela copie les jars Seam, les jars dépendants et le jar du pilote JDBC vers "
+"un nouveau projet Eclipse, et génère toutes les ressources et fichiers de "
+"configuration nécessaires, ainsi qu'un fichier modèle facelets et une "
+"feuille de style, les méta-données Eclipse et un script de montage Ant. Le "
+"projet Eclipse sera automatiquement déployé à une structure éclatée dans "
+"JBoss AS dès que vous ajoutez le projet, en utilisant <literal>New -&gt; "
+"Project... -&gt; General -&gt; Project -&gt; Next</literal>, et en "
+"saisissant le <literal>Project name</literal> (<literal>myproject</literal> "
+"dans ce cas), puis en sélectionnant votre Java SE 5 ou Java SE 6 JRE et en "
+"cliquand sur <literal>Finish</literal>. Ne sélectionnez pas <literal>Create "
+"new project from existing source</literal>. Alternativement, vous pouvez "
+"déployer le projet en dehors d'Eclipse, en saisissant <literal>seam explode</"
+"literal>."
+
+#. Tag: para
+#: Gettingstarted.xml:73
+#, no-c-format
+msgid ""
+"If your default JDK in Eclipse is not a Java SE 5 or Java SE 6 JDK, you will "
+"need to select a Java SE 5 compliant JDK using <literal>Project -&gt; "
+"Properties -&gt; Java Compiler</literal>."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:76
+#, no-c-format
+msgid ""
+"Alternatively, you can deploy the project from outside Eclipse by typing "
+"<literal>seam explode</literal>."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:79
+#, no-c-format
+msgid ""
+"Go to <literal>http://localhost:8080/helloworld</literal> to see a welcome "
+"page. This is a facelets page, <literal>view/home.xhtml</literal>, using the "
+"template <literal>view/layout/template.xhtml</literal>. You can edit this "
+"page, or the template, in eclipse, and see the results "
+"<emphasis>immediately</emphasis>, by clicking refresh in your browser."
+msgstr ""
+"Allez sur <literal>http://localhost:8080/helloworld</literal> Pour voir la "
+"page d'accueil. C'est une page facelet, <literal>view/home.xhtml</literal>, "
+"qui utilise le modèle <literal>view/layout/template.xhtml</literal>. Vous "
+"pouvez éditer cette page, ou le modèle, dans Eclipse, et voir les résultats "
+"immédiatement, en cliquant simplement sur rafraîchir dans votre navigateur."
+
+#. Tag: para
+#: Gettingstarted.xml:82
+#, fuzzy, no-c-format
+msgid ""
+"Don&#39;t get scared by the XML configuration documents that were generated "
+"into the project directory. They are mostly standard Java EE stuff, the "
+"stuff you need to create once and then never look at again, and they are 90% "
+"the same between all Seam projects. (They are so easy to write that even "
+"seam-gen can do it.)"
+msgstr ""
+"N'ayez pas peur des documents de configuration XML qui ont été générés dans "
+"le répertoire du projet. Ce sont principalement des choses standards Java "
+"EE, à créer une fois sans aucune autre modification et à 90%, elles sont "
+"identiques dans tous les projets Seam. (Elles sont tellement faciles à "
+"écrire que même seam-gen peut le faire.)"
+
+#. Tag: para
+#: Gettingstarted.xml:85
+#, no-c-format
+msgid ""
+"The generated project includes three database and persistence "
+"configurations. The <literal>jboss-beans.xml</literal>, <literal>persistence-"
+"test.xml</literal> and <literal>import-test.sql</literal> files are used "
+"when running the TestNG unit tests against HSQLDB. The database schema and "
+"the test data in <literal>import-test.sql</literal> is always exported to "
+"the database before running tests. The <literal>myproject-dev-ds.xml</"
+"literal>, <literal>persistence-dev.xml</literal>and <literal>import-dev.sql</"
+"literal> files are for use when deploying the application to your "
+"development database. The schema might be exported automatically at "
+"deployment, depending upon whether you told seam-gen that you are working "
+"with an existing database. The <literal>myproject-prod-ds.xml</literal>, "
+"<literal>persistence-prod.xml</literal>and <literal>import-prod.sql</"
+"literal> files are for use when deploying the application to your production "
+"database. The schema is not exported automatically at deployment."
+msgstr ""
+"Le projet généré inclus trois bases de données et configurations de "
+"persistance. Les fichiers <literal>jboss-beans.xml</literal>, "
+"<literal>persistence-test.xml</literal> et <literal>import-test.sql</"
+"literal> sont utilisés lorsque les tests TestNG sont exécutés sur HSQLDB. Le "
+"schéma de base de données et les données dans <literal>import-test.sql</"
+"literal> sont toujours exportés vers la base de données avant l'exécution "
+"des tests. Les fichiers <literal>myproject-dev-ds.xml</literal>, "
+"<literal>persistence-dev.xml</literal> et <literal>import-dev.sql</literal> "
+"sont utilisés lorsque vous déployez l'application vers votre base de données "
+"de développement. Le schéma peut être exporté automatiquement lors du "
+"déploiement, en fonction de ce que vous avez déclaré à seam-gen, si vous "
+"avez stipulé que vous travaillez avec une base de données existante. Les "
+"fichiers <literal>myproject-prod-ds.xml</literal>, <literal>persistence-prod."
+"xml</literal> et <literal>import-prod.sql</literal> sont à utiliser lorsque "
+"vous déployez l'application vers votre base de données de production. Le "
+"schéma n'est pas exporté automatiquement lors du déploiment."
+
+#. Tag: title
+#: Gettingstarted.xml:91
+#, no-c-format
+msgid "Creating a new action"
+msgstr "Créer une nouvelle action"
+
+#. Tag: para
+#: Gettingstarted.xml:92
+#, fuzzy, no-c-format
+msgid ""
+"If you&#39;re used to traditional action-style web frameworks, you&#39;re "
+"probably wondering how you can create a simple webpage with a stateless "
+"action method in Java. If you type:"
+msgstr ""
+"Si vous êtes habitué aus frameworks web traditionnels de type action, vous "
+"vous demandez sûrement comment créer une page web simple avec une action "
+"sans état en java. Si vous saisissez :"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:95
+#, no-c-format
+msgid "seam new-action"
+msgstr "seam new-action"
+
+#. Tag: para
+#: Gettingstarted.xml:96
+#, no-c-format
+msgid ""
+"Seam will prompt for some information, and generate a new facelets page and "
+"Seam component for your project."
+msgstr ""
+"Seam demandera quelques informaitons, et génèrera une nouvelle page facelets "
+"et un composant Seam pour votre projet."
+
+#. Tag: programlisting
+#: Gettingstarted.xml:99
+#, fuzzy, no-c-format
+msgid ""
+"C:\\Projects\\jboss-seam&gt;seam new-action ping\n"
+"Buildfile: C:\\Projects\\jboss-seam\\seam-gen\\build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"action-input:\n"
+"    [input] Enter the Seam component name\n"
+"ping\n"
+"    [input] Enter the local interface name [Ping]\n"
+"\n"
+"    [input] Enter the bean class name [PingBean]\n"
+"\n"
+"    [input] Enter the action method name [ping]\n"
+"\n"
+"    [input] Enter the page name [ping]\n"
+"\n"
+"\n"
+"setup-filters:\n"
+"\n"
+"new-action:\n"
+"     [echo] Creating a new stateless session bean component with an action "
+"method\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\\test\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\\test\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\view\n"
+"     [echo] Type &#39;seam restart&#39; and go to \n"
+"     http://localhost:8080/helloworld/ping.seam\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 13 seconds\n"
+"C:\\Projects\\jboss-seam&gt;"
+msgstr ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam new-action ping\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"action-input:\n"
+"    [input] Enter the Seam component name\n"
+"ping\n"
+"    [input] Enter the local interface name [Ping]\n"
+"\n"
+"    [input] Enter the bean class name [PingBean]\n"
+"\n"
+"    [input] Enter the action method name [ping]\n"
+"\n"
+"    [input] Enter the page name [ping]\n"
+"\n"
+"\n"
+"setup-filters:\n"
+"\n"
+"new-action:\n"
+"     [echo] Creating a new stateless session bean component with an action "
+"method\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;view\n"
+"     [echo] Type 'seam restart' and go to \n"
+"     http://localhost:8080/helloworld/ping.seam\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 13 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+
+#. Tag: para
+#: Gettingstarted.xml:100
+#, fuzzy, no-c-format
+msgid ""
+"Because we&#39;ve added a new Seam component, we need to restart the "
+"exploded directory deployment. You can do this by typing <literal>seam "
+"restart</literal>, or by running the <literal>restart</literal> target in "
+"the generated project <literal>build.xml</literal> file from inside Eclipse. "
+"Another way to force a restart is to edit the file <literal>resources/META-"
+"INF/application.xml</literal> in Eclipse. <emphasis>Note that you do not "
+"need to restart JBoss each time you change the application.</emphasis>"
+msgstr ""
+"A cause de l'ajout d'un nouveau composant Seam, nous devons redémarrez le "
+"déploiement du répertoire éclaté. Vous pouvez le faire via <literal>seam "
+"restart</literal>, ou en exécutant la cible <literal>restart</literal> du "
+"fichier <literal>build.xml</literal> du projet généré depuis Eclipse. Un "
+"autre moyen de forcer le redémarrage est d'éditer <literal>resources/META-"
+"INF/application.xml</literal> dans Eclipse. <emphasis>Notez que vous n'avez "
+"pas besoin de redémarrer JBoss à chaque fois que vous changez l'application."
+"</emphasis>"
+
+#. Tag: para
+#: Gettingstarted.xml:103
+#, no-c-format
+msgid ""
+"Now go to <literal>http://localhost:8080/helloworld/ping.seam</literal> and "
+"click the button. You can see the code behind this action by looking in the "
+"project <literal>src</literal> directory. Put a breakpoint in the "
+"<literal>ping()</literal> method, and click the button again."
+msgstr ""
+"Allez sur <literal>http://localhost:8080/helloworld/ping.seam</literal> et "
+"cliquez sur le bouton. Vous pouvez voir le code derrière cette action en "
+"regardant dans le répertoire <literal>src</literal> du projet. Ajoutez un "
+"point d'arrêt dans la méthode <literal>ping()</literal> et cliquez à nouveau "
+"sur le bouton."
+
+#. Tag: para
+#: Gettingstarted.xml:106
+#, no-c-format
+msgid ""
+"Finally, locate the <literal>PingTest.xml</literal> file in the test package "
+"and run the integration tests using the TestNG plugin for Eclipse. "
+"Alternatively, run the tests using <literal>seam test</literal> or the "
+"<literal>test</literal> target of the generated build."
+msgstr ""
+"Enfin, localisez le fichier <literal>PingTest.xml</literal> dans le "
+"paquetage test et exécutez les tests d'intégration en utilisant le plugin "
+"TestNG pour Eclipse. Alternativement, exécutez les tests en utilisant "
+"<literal>seam test</literal> ou la cible <literal>test</literal> du fichier "
+"de construction généré."
+
+#. Tag: title
+#: Gettingstarted.xml:112
+#, no-c-format
+msgid "Creating a form with an action"
+msgstr "Créer un formulaire avec une action"
+
+#. Tag: para
+#: Gettingstarted.xml:113
+#, no-c-format
+msgid "The next step is to create a form. Type:"
+msgstr "La prochaine étape consiste à créer un formulaire. Saisissez :"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:116
+#, no-c-format
+msgid "seam new-form"
+msgstr "seam new-form"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:117
+#, fuzzy, no-c-format
+msgid ""
+"C:\\Projects\\jboss-seam&gt;seam new-form\n"
+"Buildfile: C:\\Projects\\jboss-seam\\seam-gen\\build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"action-input:\n"
+"    [input] Enter the Seam component name\n"
+"hello\n"
+"    [input] Enter the local interface name [Hello]\n"
+"\n"
+"    [input] Enter the bean class name [HelloBean]\n"
+"\n"
+"    [input] Enter the action method name [hello]\n"
+"\n"
+"    [input] Enter the page name [hello]\n"
+"\n"
+"\n"
+"setup-filters:\n"
+"\n"
+"new-form:\n"
+"     [echo] Creating a new stateful session bean component with an action "
+"method\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\\test\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\view\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\\test\n"
+"     [echo] Type &#39;seam restart&#39; and go to http://localhost:8080/"
+"hello/hello.seam\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 5 seconds\n"
+"C:\\Projects\\jboss-seam&gt;"
+msgstr ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam new-form\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"action-input:\n"
+"    [input] Enter the Seam component name\n"
+"hello\n"
+"    [input] Enter the local interface name [Hello]\n"
+"\n"
+"    [input] Enter the bean class name [HelloBean]\n"
+"\n"
+"    [input] Enter the action method name [hello]\n"
+"\n"
+"    [input] Enter the page name [hello]\n"
+"\n"
+"\n"
+"setup-filters:\n"
+"\n"
+"new-form:\n"
+"     [echo] Creating a new stateful session bean component with an action "
+"method\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;view\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [echo] Type 'seam restart' and go to http://localhost:8080/hello/hello."
+"seam\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 5 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+
+#. Tag: para
+#: Gettingstarted.xml:118
+#, no-c-format
+msgid ""
+"Restart the application again, and go to <literal>http://localhost:8080/"
+"helloworld/hello.seam</literal>. Then take a look at the generated code. Run "
+"the test. Try adding some new fields to the form and Seam component "
+"(remember to restart the deploment each time you change the Java code)."
+msgstr ""
+"Redémarrez l'application et allez sur <literal>http://localhost:8080/"
+"helloworld/hello.seam</literal>. Puis, regardez le code généré. Exécutez le "
+"test. Essayez d'ajouter d'autres champs au formulaire et au composant Seam "
+"(pensez à redémarrer le déploiement chaque fois que vous changez le code "
+"Java)."
+
+#. Tag: title
+#: Gettingstarted.xml:124
+#, no-c-format
+msgid "Generating an application from an existing database"
+msgstr "Générer une application depuis une base de données existante"
+
+#. Tag: para
+#: Gettingstarted.xml:125
+#, no-c-format
+msgid ""
+"Manually create some tables in your database. (If you need to switch to a "
+"different database, just run <literal>seam setup</literal> again.) Now type:"
+msgstr ""
+"Créer manuellement quelques tables dans votre base de données. (Si vous "
+"devez permuter entre différentes bases, exécuter <literal>seam setup</"
+"literal> à nouveau.) Maintenant saisissez :"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:128
+#, no-c-format
+msgid "seam generate-entities"
+msgstr "seam generate-entities"
+
+#. Tag: para
+#: Gettingstarted.xml:129
+#, fuzzy, no-c-format
+msgid ""
+"Restart the deployment, and go to <literal>http://localhost:8080/helloworld</"
+"literal>. You can browse the database, edit existing objects, and create new "
+"objects. If you look at the generated code, you&#39;ll probably be amazed "
+"how simple it is! Seam was designed so that data access code is easy to "
+"write by hand, even for people who don&#39;t want to cheat by using seam-gen."
+msgstr ""
+"Redémarrez le déploiement, et allez sur <literal>http://localhost:8080/"
+"helloworld</literal>. Vous pouvez naviguer sur votre base de données, éditer "
+"des objets existants, en créer de nouveaux. Si vous regarder le code, vous "
+"serez probablement surpris par sa simplicité ! Seam a été conçu pour que le "
+"code d'accès à la base de données soit facile à écrire, même pour les "
+"personnes ne souhaitant pas utiliser seam-gen."
+
+#. Tag: title
+#: Gettingstarted.xml:135
+#, no-c-format
+msgid "Deploying the application as an EAR"
+msgstr "Déployer l'application comme un EAR"
+
+#. Tag: para
+#: Gettingstarted.xml:136
+#, no-c-format
+msgid ""
+"Finally, we want to be able to deploy the application using standard Java EE "
+"5 packaging. First, we need to remove the exploded directory by running "
+"<literal>seam unexplode</literal>. To deploy the EAR, we can type "
+"<literal>seam deploy</literal> at the command prompt, or run the "
+"<literal>deploy</literal> target of the generated project build script. You "
+"can undeploy using <literal>seam undeploy</literal> or the "
+"<literal>undeploy</literal> target."
+msgstr ""
+"Finalement, nous souhaitons pouvoir déployer l'application en utilisant "
+"l'empaquetage standard Java EE 5. D'abord, nous devons retirer le répertoire "
+"éclaté en exécutant <literal>seam unexplode</literal>. Pour déployer l'EAR "
+"vous pouvez taper <literal>seam deploy</literal> en ligne de commande, ou "
+"exécuter la cible <literal>deploy</literal> du fichier de construction "
+"généré. Vous pouvez retirer l'application en appelant les cibles "
+"<literal>seam undeploy</literal> ou <literal>undeploy</literal>."
+
+#. Tag: para
+#: Gettingstarted.xml:139
+#, no-c-format
+msgid ""
+"By default, the application will be deployed with the <emphasis>dev profile</"
+"emphasis>. The EAR will include the <literal>persistence-dev.xml</literal> "
+"and <literal>import-dev.sql</literal> files, and the <literal>myproject-dev-"
+"ds.xml</literal> file will be deployed. You can change the profile, and use "
+"the <emphasis>prod profile</emphasis>, by typing"
+msgstr ""
+"Par défaut, l'application sera déployée avec le <emphasis>profil dev</"
+"emphasis>. L'EAR incluera les fichiers <literal>persistence-dev.xml</"
+"literal> et <literal>import-dev.sql</literal> et le fichier "
+"<literal>myproject-dev-ds.xml</literal> sera déployé. Vous pouvez changer le "
+"profil, et utiliser le <emphasis>profil de prod</emphasis>, en saisissant"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:142
+#, no-c-format
+msgid "seam -Dprofile=prod deploy"
+msgstr "seam -Dprofile=prod deploy"
+
+#. Tag: para
+#: Gettingstarted.xml:143
+#, no-c-format
+msgid ""
+"You can even define new deployment profiles for your application. Just add "
+"appropriately named files to your project&mdash;for example, "
+"<literal>persistence-staging.xml</literal>, <literal>import-staging.sql</"
+"literal> and <literal>myproject-staging-ds.xml</literal>&mdash;and select "
+"the name of the profile using <literal>-Dprofile=staging</literal>."
+msgstr ""
+"Vous pouvez même définir un nouveau profil de déploiement pour votre "
+"application. Ajoutez silmplement les fichiers correctement nommés à votre "
+"projet - par exemple : <literal>persistence-staging.xml</literal>, "
+"<literal>import-staging.sql</literal> et <literal>myproject-staging-ds.xml</"
+"literal> - et sélectionnez le nom du profil, en utilisant <literal>-"
+"Dprofile=staging</literal>."
+
+#. Tag: title
+#: Gettingstarted.xml:149
+#, no-c-format
+msgid "Seam and incremental hot deployment"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:150
+#, no-c-format
+msgid ""
+"When you deploy your Seam application as an exploded directory, you&#39;ll "
+"get some support for incremental hot deployment at development time. You "
+"need to enable debug mode in both Seam and Facelets, by adding this line to "
+"<literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:153
+#, no-c-format
+msgid "&lt;core:init debug=\"true\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:154
+#, no-c-format
+msgid ""
+"Now, the following files may be redeployed without requiring a full restart "
+"of the web application:"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:159
+#, no-c-format
+msgid "any facelets page"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:164
+#, no-c-format
+msgid "any <literal>pages.xml</literal> file"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:169
+#, no-c-format
+msgid ""
+"But if we want to change any Java code, we still need to do a full restart "
+"of the application. (In JBoss this may be accomplished by touching the "
+"toplevel deployment descriptor: <literal>application.xml</literal> for an "
+"EAR deployment, or <literal>web.xml</literal> for a WAR deployment.)"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:172
+#, no-c-format
+msgid ""
+"But if you really want a fast edit/compile/test cycle, Seam supports "
+"incremental redeployment of JavaBean components. To make use of this "
+"functionality, you must deploy the JavaBean components into the <literal>WEB-"
+"INF/dev</literal> directory, so that they will be loaded by a special Seam "
+"classloader, instead of by the WAR or EAR classloader."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:175
+#, no-c-format
+msgid "You need to be aware of the following limitations:"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:180
+#, no-c-format
+msgid ""
+"the components must be JavaBean components, they cannot be EJB3 beans (we "
+"are working on fixing this limitation)"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:185
+#, no-c-format
+msgid "entities can never be hot-deloyed"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:190
+#, no-c-format
+msgid ""
+"components deployed via <literal>components.xml</literal> may not be hot-"
+"deployed"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:195
+#, no-c-format
+msgid ""
+"the hot-deployable components will not be visible to any classes deployed "
+"outside of <literal>WEB-INF/dev</literal>"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:200
+#, no-c-format
+msgid "Seam debug mode must be enabled"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:205
+#, no-c-format
+msgid ""
+"If you create a WAR project using seam-gen, incremental hot deployment is "
+"available out of the box for classes in the <literal>src/action</literal> "
+"source directory. However, seam-gen does not support incremental hot "
+"deployment for EAR projects."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/I18n.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/I18n.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/I18n.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,706 @@
+# translation of I18n.po to french
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# myriam malga <mmalga at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: I18n\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2007-08-06 11:45+1000\n"
+"Last-Translator: myriam malga <mmalga at redhat.com>\n"
+"Language-Team: french\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: I18n.xml:6
+#, no-c-format
+msgid "Internationalization and themes"
+msgstr "Internationalisation et thèmes"
+
+#. Tag: para
+#: I18n.xml:7
+#, no-c-format
+msgid ""
+"Seam makes it easy to build internationalized applications by providing "
+"several built-in components for handling multi-language UI messages."
+msgstr ""
+"Seam facilite la compilation d'applications internationalisées en "
+"fournissant plusieurs composants imbriqués pour le traitement des messages "
+"UI multi-langages."
+
+#. Tag: title
+#: I18n.xml:11
+#, no-c-format
+msgid "Locales"
+msgstr "Paramètres de lieu"
+
+#. Tag: para
+#: I18n.xml:12
+#, fuzzy, no-c-format
+msgid ""
+"Each user login session has an associated instance of <literal>java.util."
+"Locale</literal> (available to the application as a session-scoped component "
+"named <literal>locale</literal>). Under normal circumstances, you won&#39;t "
+"need to do any special configuration to set the locale. Seam just delegates "
+"to JSF to determine the active locale:"
+msgstr ""
+"Chaque session de connexion d'utilisateur a une instance associée de "
+"<literal>java.util.Locale</literal> (disponible à l'application en tant que "
+"composant porté par la session, appelé <literal>locale</literal>). En temps "
+"normal, vous n'aurez pas besoin d'effectuer de configuration particulière "
+"pour définir le paramètre de lieu. Seam délègue simplement à JSF pour "
+"déterminer le paramètre de lieu actif :"
+
+#. Tag: para
+#: I18n.xml:17
+#, no-c-format
+msgid ""
+"If there is a locale associated with the HTTP request (the browser locale), "
+"and that locale is in the list of supported locales from <literal>faces-"
+"config.xml</literal>, use that locale for the rest of the session."
+msgstr ""
+"S'il existe un paramètre de lieu associé à la requête HTTP (le paramètre de "
+"lieu du navigateur), et que le paramètre de lieu est dans la liste des "
+"paramètres de lieu supportés du <literal>faces-config.xml</literal>, "
+"utilisez ce paramètre de lieu pour le reste de la session."
+
+#. Tag: para
+#: I18n.xml:20
+#, no-c-format
+msgid ""
+"Otherwise, if a default locale was specified in the <literal>faces-config."
+"xml</literal>, use that locale for the rest of the session."
+msgstr ""
+"Autrement, si un paramètre de lieu par défaut a été spécifié dans "
+"<literal>faces-config.xml</literal>, utilisez ce paramètre de lieu pour le "
+"reste de la session."
+
+#. Tag: para
+#: I18n.xml:23
+#, no-c-format
+msgid "Otherwise, use the default locale of the server."
+msgstr "Alternativement, utilisez le paramètre de lieu par défaut du serveur."
+
+#. Tag: para
+#: I18n.xml:26
+#, fuzzy, no-c-format
+msgid ""
+"It is <emphasis>possible</emphasis> to set the locale manually via the Seam "
+"configuration properties <literal>org.jboss.seam.core.localeSelector."
+"language</literal>, <literal>org.jboss.seam.core.localeSelector.country</"
+"literal> and <literal>org.jboss.seam.core.localeSelector.variant</literal>, "
+"but we can&#39;t think of any good reason to ever do this."
+msgstr ""
+"Il est <emphasis>possible</emphasis> de définir le paramètre de lieu "
+"manuellement, via les propriétés de configuration Seam <literal>org.jboss."
+"seam.core.localeSelector.language</literal>, <literal>org.jboss.seam.core."
+"localeSelector.country</literal> et <literal>org.jboss.seam.core."
+"localeSelector.variant</literal>, mais quelle idée !"
+
+#. Tag: para
+#: I18n.xml:29
+#, no-c-format
+msgid ""
+"It is, however, useful to allow the user to set the locale manually via the "
+"application user interface. Seam provides built-in functionality for "
+"overriding the locale determined by the algorithm above. All you have to do "
+"is add the following fragment to a form in your JSP or Facelets page:"
+msgstr ""
+"Il est cependant utile de permettre à l'utilisateur de définir le paramètre "
+"de lieu manuellement via l'interface de l'utilisateur de l'application. Seam "
+"fournit une fonctionnalité imbriquée pour surcharger le paramètre de lieu "
+"déterminé par l'algorithme ci-dessus. Il vous suffit d'ajouter le fragment "
+"suivant à un formulaire dans votre JSP ou page Facelets : "
+
+#. Tag: programlisting
+#: I18n.xml:32
+#, fuzzy, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{localeSelector.language}\"&gt;\n"
+"    &lt;f:selectItem itemLabel=\"English\" itemValue=\"en\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Deutsch\" itemValue=\"de\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Francais\" itemValue=\"fr\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{localeSelector.select}\" value=\"#{messages"
+"[&#39;ChangeLanguage&#39;]}\"/&gt;"
+msgstr ""
+"&lt;h:selectOneMenu value=\"#{localeSelector.language}\"&gt;\n"
+"    &lt;f:selectItem itemLabel=\"English\" itemValue=\"en\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Deutsch\" itemValue=\"de\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Francais\" itemValue=\"fr\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{localeSelector.select}\" value=\"#{messages"
+"['ChangeLanguage']}\"/&gt;"
+
+#. Tag: para
+#: I18n.xml:33
+#, no-c-format
+msgid ""
+"Or, if you want a list of all supported locales from <literal>faces-config."
+"xml</literal>, just use:"
+msgstr ""
+"Ou, si vous souhaitez obtenir une liste de paramètres de lieu depuis "
+"<literal>faces-config.xml</literal>, utilisez simplement :"
+
+#. Tag: programlisting
+#: I18n.xml:36
+#, fuzzy, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{localeSelector.localeString}\"&gt;\n"
+"    &lt;f:selectItems value=\"#{localeSelector.supportedLocales}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{localeSelector.select}\" value=\"#{messages"
+"[&#39;ChangeLanguage&#39;]}\"/&gt;"
+msgstr ""
+"&lt;h:selectOneMenu value=\"#{localeSelector.localeString}\"&gt;\n"
+"    &lt;f:selectItems value=\"#{localeSelector.supportedLocales}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{localeSelector.select}\" value=\"#{messages"
+"['ChangeLanguage']}\"/&gt;"
+
+#. Tag: para
+#: I18n.xml:37
+#, no-c-format
+msgid ""
+"When this use selects an item from the drop-down, and clicks the button, the "
+"Seam and JSF locales will be overridden for the rest of the session."
+msgstr ""
+"Quand cette utilisation sélectionne un élément du menu déroulant, et clique "
+"sur le bouton, les paramètres de lieu Seam et JSF seront surchargés pour le "
+"reste de la session."
+
+#. Tag: title
+#: I18n.xml:43
+#, no-c-format
+msgid "Labels"
+msgstr "Étiquettes"
+
+#. Tag: para
+#: I18n.xml:44
+#, no-c-format
+msgid ""
+"JSF supports internationalization of user interface labels and descriptive "
+"text via the use of <literal>&lt;f:loadBundle /&gt;</literal>. You can use "
+"this approach in Seam applications. Alternatively, you can take advantage of "
+"the Seam <literal>messages</literal> component to display templated labels "
+"with embedded EL expressions."
+msgstr ""
+"JSF supporte l'internationalisation des étiquettes d'interfaces et de texte "
+"descriptif de l'utilisateur via l'utilisation de <literal>&lt;f:loadBundle /"
+"&gt;</literal>. Vous pouvez utiliser cette approche dans les applications "
+"Seam. Alternativement, vous pouvez tirer avantage du composant "
+"<literal>messages</literal> Seam pour afficher des étiquettes modélisées "
+"avec des expressions EL imbriquées. "
+
+#. Tag: title
+#: I18n.xml:48
+#, no-c-format
+msgid "Defining labels"
+msgstr "Définition des étiquettes"
+
+#. Tag: para
+#: I18n.xml:49
+#, fuzzy, no-c-format
+msgid ""
+"Each login session has an associated instance of <literal>java.util."
+"ResourceBundle</literal> (available to the application as a session-scoped "
+"component named <literal>org.jboss.seam.core.resourceBundle</literal>). "
+"You&#39;ll need to make your internationalized labels available via this "
+"special resource bundle. By default, the resource bundle used by Seam is "
+"named <literal>messages</literal> and so you&#39;ll need to define your "
+"labels in files named <literal>messages.properties</literal>, "
+"<literal>messages_en.properties</literal>, <literal>messages_en_AU."
+"properties</literal>, etc. These files usually belong in the <literal>WEB-"
+"INF/classes</literal> directory."
+msgstr ""
+"Chaque session de connexion a une instance associée de <literal>java.util."
+"ResourceBundle</literal> (disponible à l'application en tant que composant "
+"porté par la session, appelé <literal>org.jboss.seam.core.resourceBundle</"
+"literal>). Il sera nécessaire de rendre disponible vos étiquettes "
+"internationalisées via ce lot de ressources particulier. Par défaut, le lot "
+"de ressources utilisé par Seam est appelé <literal>messages</literal>, par "
+"conséquent vous devrez définir vos étiquettes dans des fichiers, appelés "
+"<literal>messages.properties</literal>, <literal>messages_en.properties</"
+"literal>, <literal>messages_en_AU.properties</literal>, etc. Ces fichiers "
+"appartiennent généralement au répertoire <literal>WEB-INF/classes</literal>."
+
+#. Tag: para
+#: I18n.xml:52
+#, no-c-format
+msgid "So, in <literal>messages_en.properties</literal>:"
+msgstr "Ainsi, dans <literal>messages_en.properties</literal> :"
+
+#. Tag: programlisting
+#: I18n.xml:55
+#, no-c-format
+msgid "Hello=Hello"
+msgstr "Hello=Hello"
+
+#. Tag: para
+#: I18n.xml:56
+#, no-c-format
+msgid "And in <literal>messages_en_AU.properties</literal>:"
+msgstr "Et dans <literal>messages_en_AU.properties</literal> :"
+
+#. Tag: programlisting
+#: I18n.xml:59
+#, fuzzy, no-c-format
+msgid "Hello=G&#39;day"
+msgstr "Hello=G'day"
+
+#. Tag: para
+#: I18n.xml:60
+#, no-c-format
+msgid ""
+"You can select a different name for the resource bundle by setting the Seam "
+"configuration property named <literal>org.jboss.seam.core.resourceBundle."
+"bundleNames</literal>. You can even specify a list of resource bundle names "
+"to be searched (depth first) for messages."
+msgstr ""
+"Vous pouvez sélectionner un nom différent pour le lot de ressources, en "
+"définissant la propriété de configuration Seam, appelée <literal>org.jboss."
+"seam.core.resourceBundle.bundleNames</literal>. Vous pouvez également "
+"spécifier une liste de noms de lots de ressources à rechercher (profondeur "
+"d'abord) pour des messages."
+
+#. Tag: programlisting
+#: I18n.xml:63
+#, no-c-format
+msgid ""
+"&lt;core:resource-bundle&gt;\n"
+"    &lt;core:bundle-names&gt;\n"
+"        &lt;value&gt;mycompany_messages&lt;/value&gt;\n"
+"        &lt;value&gt;standard_messages&lt;/value&gt;       \n"
+"    &lt;/core:bundle-names&gt;\n"
+"&lt;/core:resource-bundle&gt;"
+msgstr ""
+"&lt;core:resource-bundle&gt;\n"
+"    &lt;core:bundle-names&gt;\n"
+"        &lt;value&gt;mycompany_messages&lt;/value&gt;\n"
+"        &lt;value&gt;standard_messages&lt;/value&gt;       \n"
+"    &lt;/core:bundle-names&gt;\n"
+"&lt;/core:resource-bundle&gt;"
+
+#. Tag: para
+#: I18n.xml:64
+#, no-c-format
+msgid ""
+"If you want to define a message just for a particular page, you can specify "
+"it in a resource bundle with the same name as the JSF view id, with the "
+"leading <literal>/</literal> and trailing file extension removed. So we "
+"could put our message in <literal>welcome/hello_en.properties</literal> if "
+"we only needed to display the message on <literal>/welcome/hello.jsp</"
+"literal>."
+msgstr ""
+"Si vous désirez définir un message juste pour une page particulière, vous "
+"pouvez le spécifer dans un lot de ressources avec le même nom que l'id "
+"d'affichage du JSF en supprimant le principal <literal>/</literal> et le "
+"fichier d'extension arrière. Nous pourrions alors placer notre message dans "
+"<literal>welcome/hello_en.properties</literal> si nous ne devions afficher "
+"le message que sur <literal>/welcome/hello.jsp</literal>."
+
+#. Tag: para
+#: I18n.xml:67
+#, no-c-format
+msgid ""
+"You can even specify an explicit bundle name in <literal>pages.xml</literal>:"
+msgstr ""
+"Vous pouvez également spécifier un nom de lot explicite dans <literal>pages."
+"xml</literal> :"
+
+#. Tag: programlisting
+#: I18n.xml:70
+#, no-c-format
+msgid "&lt;page view-id=\"/welcome/hello.jsp\" bundle=\"HelloMessages\"/&gt;"
+msgstr "&lt;page view-id=\"/welcome/hello.jsp\" bundle=\"HelloMessages\"/&gt;"
+
+#. Tag: para
+#: I18n.xml:71
+#, no-c-format
+msgid ""
+"Then we could use messages defined in <literal>HelloMessages.properties</"
+"literal> on <literal>/welcome/hello.jsp</literal>."
+msgstr ""
+"Nous pourrions alors utiliser les messages définis dans "
+"<literal>HelloMessages.properties</literal> sur <literal>/welcome/hello.jsp</"
+"literal>."
+
+#. Tag: title
+#: I18n.xml:77
+#, no-c-format
+msgid "Displaying labels"
+msgstr "Affichage des étiquettes"
+
+#. Tag: para
+#: I18n.xml:78
+#, fuzzy, no-c-format
+msgid ""
+"If you define your labels using the Seam resource bundle, you&#39;ll be able "
+"to use them without having to type <literal>&lt;f:loadBundle ... /&gt;</"
+"literal> on every page. Instead, you can simply type:"
+msgstr ""
+"Si vous définissez vos étiquettes en utilisant le lot de ressources Seam, "
+"vous serez en mesure de les utiliser sans avoir à saisir <literal>&lt;f:"
+"loadBundle ... /&gt;</literal> sur chaque page. À la place, vous pouvez "
+"simplement saisir :"
+
+#. Tag: programlisting
+#: I18n.xml:81
+#, fuzzy, no-c-format
+msgid "&lt;h:outputText value=\"#{messages[&#39;Hello&#39;]}\"/&gt;"
+msgstr "&lt;h:outputText value=\"#{messages['Hello']}\"/&gt;"
+
+#. Tag: para
+#: I18n.xml:82
+#, no-c-format
+msgid "<para>or:</para>"
+msgstr "<para>ou :</para>"
+
+#. Tag: programlisting
+#: I18n.xml:85
+#, no-c-format
+msgid "&lt;h:outputText value=\"#{messages.Hello}\"/&gt;"
+msgstr "&lt;h:outputText value=\"#{messages.Hello}\"/&gt;"
+
+#. Tag: para
+#: I18n.xml:86
+#, no-c-format
+msgid "Even better, the messages themselves may contain EL expressions:"
+msgstr ""
+"Encore mieux, les messages eux-mêmes peuvent contenir des expressions EL :"
+
+#. Tag: programlisting
+#: I18n.xml:89
+#, no-c-format
+msgid "Hello=Hello, #{user.firstName} #{user.lastName}"
+msgstr "Hello=Hello, #{user.firstName} #{user.lastName}"
+
+#. Tag: programlisting
+#: I18n.xml:90
+#, fuzzy, no-c-format
+msgid "Hello=G&#39;day, #{user.firstName}"
+msgstr "Hello=G'day, #{user.firstName}"
+
+#. Tag: para
+#: I18n.xml:91
+#, no-c-format
+msgid "You can even use the messages in your code:"
+msgstr "Vous pouvez même utiliser les messages dans votre code :"
+
+#. Tag: programlisting
+#: I18n.xml:94
+#, no-c-format
+msgid "@In private Map&lt;String, String&gt; messages;"
+msgstr "@In private Map&lt;String, String&gt; messages;"
+
+#. Tag: programlisting
+#: I18n.xml:95
+#, fuzzy, no-c-format
+msgid "@In(\"#{messages[&#39;Hello&#39;]}\") private String helloMessage;"
+msgstr "@In(\"#{messages['Hello']}\") private String helloMessage;"
+
+#. Tag: title
+#: I18n.xml:99
+#, no-c-format
+msgid "Faces messages"
+msgstr "Messages faces"
+
+#. Tag: para
+#: I18n.xml:100
+#, no-c-format
+msgid ""
+"The <literal>facesMessages</literal> component is a super-convenient way to "
+"display success or failure messages to the user. The functionality we just "
+"described also works for faces messages:"
+msgstr ""
+"Le composant <literal>facesMessages</literal> est une façon super commode "
+"d'afficher les messages de réussite ou d'échec à l'utilisateur. La "
+"fonctionnalité que nous venons de décrire fonctionne également pour les "
+"messages faces :"
+
+#. Tag: programlisting
+#: I18n.xml:103
+#, no-c-format
+msgid ""
+"@Name(\"hello\")\n"
+"@Stateless\n"
+"public class HelloBean implements Hello {\n"
+"    @In FacesMessages facesMessages;\n"
+"    \n"
+"    public String sayIt() {\n"
+"        facesMessages.addFromResourceBundle(\"Hello\");\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"hello\")\n"
+"@Stateless\n"
+"public class HelloBean implements Hello {\n"
+"    @In FacesMessages facesMessages;\n"
+"    \n"
+"    public String sayIt() {\n"
+"        facesMessages.addFromResourceBundle(\"Hello\");\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: I18n.xml:104
+#, fuzzy, no-c-format
+msgid ""
+"This will display <literal>Hello, Gavin King</literal> or <literal>G&#39;"
+"day, Gavin</literal>, depending upon the user&#39;s locale."
+msgstr ""
+"Cela affichera <literal>Hello, Gavin King</literal> ou <literal>G'day, "
+"Gavin</literal>, selon le paramètre de lieu de l'utilisateur. "
+
+#. Tag: title
+#: I18n.xml:112
+#, no-c-format
+msgid "Timezones"
+msgstr "Fuseaux horaires"
+
+#. Tag: para
+#: I18n.xml:113
+#, no-c-format
+msgid ""
+"There is also a session-scoped instance of <literal>java.util.Timezone</"
+"literal>, named <literal>org.jboss.seam.core.timezone</literal>, and a Seam "
+"component for changing the timezone named <literal>org.jboss.seam.core."
+"timezoneSelector</literal>. By default, the timezone is the default timezone "
+"of the server. Unfortunately, the JSF specification says that all dates and "
+"times should be assumed to be UTC, and displayed as UTC, unless a timezone "
+"is explicitly specified using <literal>&lt;f:convertDateTime&gt;</literal>. "
+"This is an extremely inconvenient default behavior."
+msgstr ""
+"Il y a également une instance session-scoped de <literal>java.util.Timezone</"
+"literal>, appelée <literal>org.jboss.seam.core.timezone</literal>, et un "
+"composant Seam pour changer le fuseau horaire, appelé <literal>org.jboss."
+"seam.core.timezoneSelector</literal>. Par défaut, le fuseau horaire est le "
+"fuseau horaire par défaut du serveur. Malheureusement, les spécifications "
+"JSF indiquent que toutes les dates et les heures devraient vraisemblablement "
+"être UTC (Temps universel coordonné), et affichées comme UTC, à moins qu'un "
+"fuseau horaire ne soit explicitement spécifié en utilisant <literal>&lt;f:"
+"convertDateTime&gt;</literal>. Ceci est un comportement par défaut "
+"extrêmement incommode. "
+
+#. Tag: para
+#: I18n.xml:116
+#, no-c-format
+msgid ""
+"Seam overrides this behavior, and defaults all dates and times to the Seam "
+"timezone. In addition, Seam provides the <literal>&lt;s:convertDateTime&gt;</"
+"literal> tag which always performs conversions in the Seam timezone."
+msgstr ""
+"Seam surcharge ce comportement et les dates et heures prennent par défaut "
+"les valeurs du fuseau horaire Seam. Par ailleurs, Seam fournit la balise "
+"<literal>&lt;s:convertDateTime&gt;</literal> qui effectue toujours des "
+"conversions dans le fuseau horaire Seam."
+
+#. Tag: title
+#: I18n.xml:122
+#, no-c-format
+msgid "Themes"
+msgstr "Thèmes"
+
+#. Tag: para
+#: I18n.xml:123
+#, no-c-format
+msgid ""
+"Seam applications are also very easily skinnable. The theme API is very "
+"similar to the localization API, but of course these two concerns are "
+"orthogonal, and some applications support both localization and themes."
+msgstr ""
+"Les applications Seam sont aussi facilement habillables. L'API de thèmes est "
+"très similaire à l'API de localisation, mais évidemment ces deux "
+"préoccupations sont orthogonales, et plusieurs applications supportent à la "
+"fois la localisation et les thèmes."
+
+#. Tag: para
+#: I18n.xml:126
+#, no-c-format
+msgid "First, configure the set of supported themes:"
+msgstr "Configurez d'abord l'ensemble des thèmes supportés :"
+
+#. Tag: programlisting
+#: I18n.xml:129
+#, no-c-format
+msgid ""
+"&lt;theme:theme-selector cookie-enabled=\"true\"&gt;\n"
+"    &lt;theme:available-themes&gt;\n"
+"        &lt;value&gt;default&lt;/value&gt;\n"
+"        &lt;value&gt;accessible&lt;/value&gt;\n"
+"        &lt;value&gt;printable&lt;/value&gt;\n"
+"    &lt;/theme:available-themes&gt;\n"
+"&lt;/theme:theme-selector&gt;"
+msgstr ""
+"&lt;theme:theme-selector cookie-enabled=\"true\"&gt;\n"
+"    &lt;theme:available-themes&gt;\n"
+"        &lt;value&gt;default&lt;/value&gt;\n"
+"        &lt;value&gt;accessible&lt;/value&gt;\n"
+"        &lt;value&gt;printable&lt;/value&gt;\n"
+"    &lt;/theme:available-themes&gt;\n"
+"&lt;/theme:theme-selector&gt;"
+
+#. Tag: para
+#: I18n.xml:130
+#, no-c-format
+msgid "Note that the first theme listed is the default theme."
+msgstr "Notez que le premier thème listé est le thème par défaut. "
+
+#. Tag: para
+#: I18n.xml:133
+#, no-c-format
+msgid ""
+"Themes are defined in a properties file with the same name as the theme. For "
+"example, the <literal>default</literal> theme is defined as a set of entries "
+"in <literal>default.properties</literal>. For example, <literal>default."
+"properties</literal> might define:"
+msgstr ""
+"Les thèmes sont définis dans un fichier de propriétés avec le même nom que "
+"le thème. Par exemple, le thème <literal>default</literal> est défini en "
+"tant qu'ensemble d'entrées dans <literal>default.properties</literal>. Par "
+"exemple, <literal>default.properties</literal> peut définir :"
+
+#. Tag: programlisting
+#: I18n.xml:136
+#, no-c-format
+msgid ""
+"css ../screen.css\n"
+"template template.xhtml"
+msgstr ""
+"css ../screen.css\n"
+"template template.xhtml"
+
+#. Tag: para
+#: I18n.xml:137
+#, no-c-format
+msgid ""
+"Usually the entries in a theme resource bundle will be paths to CSS styles "
+"or images and names of facelets templates (unlike localization resource "
+"bundles which are usually text)."
+msgstr ""
+"En général, les entrées dans un lot de ressources de thème seront des "
+"chemins vers les styles CSS ou images et noms des modèles facelets "
+"(contrairement aux lots de ressources de localisation qui sont souvent du "
+"texte). "
+
+#. Tag: para
+#: I18n.xml:140
+#, no-c-format
+msgid ""
+"Now we can use these entries in our JSP or facelets pages. For example, to "
+"theme the stylesheet in a facelets page:"
+msgstr ""
+"Nous pouvons utiliser ces entrées dans notre JSP ou pages Facelets. Par "
+"exemple, pour donner un thème à une feuille de style dans une page "
+"facelets : "
+
+#. Tag: programlisting
+#: I18n.xml:143
+#, no-c-format
+msgid ""
+"&lt;link href=\"#{theme.css}\" rel=\"stylesheet\" type=\"text/css\" /&gt;"
+msgstr ""
+"&lt;link href=\"#{theme.css}\" rel=\"stylesheet\" type=\"text/css\" /&gt;"
+
+#. Tag: para
+#: I18n.xml:144
+#, no-c-format
+msgid ""
+"Most powerfully, facelets lets us theme the template used by a <literal>&lt;"
+"ui:composition&gt;</literal>:"
+msgstr ""
+"De manière puissante, facelets nous permet de donner un thème au modèle, "
+"utilisé par un <literal>&lt;ui:composition&gt;</literal> :"
+
+#. Tag: programlisting
+#: I18n.xml:147
+#, no-c-format
+msgid ""
+"&lt;ui:composition xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"    xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"    xmlns:h=\"http://java.sun.com/jsf/html\"\n"
+"    xmlns:f=\"http://java.sun.com/jsf/core\"\n"
+"    template=\"#{theme.template}\"&gt;"
+msgstr ""
+"&lt;ui:composition xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"    xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"    xmlns:h=\"http://java.sun.com/jsf/html\"\n"
+"    xmlns:f=\"http://java.sun.com/jsf/core\"\n"
+"    template=\"#{theme.template}\"&gt;"
+
+#. Tag: para
+#: I18n.xml:148
+#, no-c-format
+msgid ""
+"Just like the locale selector, there is a built-in theme selector to allow "
+"the user to freely switch themes:"
+msgstr ""
+"Juste comme le sélecteur de paramètres de lieu, il existe un sélecteur de "
+"thèmes imbriqué pour permettre à l'utilisateur de changer de thème "
+"facilement :"
+
+#. Tag: programlisting
+#: I18n.xml:151
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{themeSelector.theme}\"&gt;\n"
+"    &lt;f:selectItems value=\"#{themeSelector.themes}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{themeSelector.select}\" value=\"Select Theme"
+"\"/&gt;"
+msgstr ""
+"&lt;h:selectOneMenu value=\"#{themeSelector.theme}\"&gt;\n"
+"    &lt;f:selectItems value=\"#{themeSelector.themes}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{themeSelector.select}\" value=\"Select Theme"
+"\"/&gt;"
+
+#. Tag: title
+#: I18n.xml:155
+#, no-c-format
+msgid "Persisting locale and theme preferences via cookies"
+msgstr ""
+"Persister les préférences de paramètres de lieu et de thèmes via les cookies"
+
+#. Tag: para
+#: I18n.xml:156
+#, no-c-format
+msgid ""
+"The locale selector, theme selector and timezone selector all support "
+"persistence of locale and theme preference to a cookie. Simply set the "
+"<literal>cookie-enabled</literal> configuration property:"
+msgstr ""
+"Le sélecteur de paramètres de lieu, le sélecteur de thèmes et le sélecteur "
+"de fuseaux horaires supportent tous la persistance des paramètres de lieu et "
+"des thèmes à un cookie. Définissez simplement la propriété de configuration "
+"<literal>cookie-enabled</literal> :"
+
+#. Tag: programlisting
+#: I18n.xml:159
+#, no-c-format
+msgid ""
+"&lt;theme:theme-selector cookie-enabled=\"true\"&gt;\n"
+"    &lt;theme:available-themes&gt;\n"
+"        &lt;value&gt;default&lt;/value&gt;\n"
+"        &lt;value&gt;accessible&lt;/value&gt;\n"
+"        &lt;value&gt;printable&lt;/value&gt;\n"
+"    &lt;/theme:available-themes&gt;\n"
+"&lt;/theme:theme-selector&gt;\n"
+"\n"
+"&lt;core:locale-selector cookie-enabled=\"true\"/&gt;"
+msgstr ""
+"&lt;theme:theme-selector cookie-enabled=\"true\"&gt;\n"
+"    &lt;theme:available-themes&gt;\n"
+"        &lt;value&gt;default&lt;/value&gt;\n"
+"        &lt;value&gt;accessible&lt;/value&gt;\n"
+"        &lt;value&gt;printable&lt;/value&gt;\n"
+"    &lt;/theme:available-themes&gt;\n"
+"&lt;/theme:theme-selector&gt;\n"
+"\n"
+"&lt;core:locale-selector cookie-enabled=\"true\"/&gt;"

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Itext.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Itext.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Itext.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1778 @@
+# translation of Itext.po to french
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# myriam malga <mmalga at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Itext\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2007-08-06 13:58+1000\n"
+"Last-Translator: myriam malga <mmalga at redhat.com>\n"
+"Language-Team: french\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Itext.xml:6
+#, no-c-format
+msgid "iText PDF generation"
+msgstr "Génération de PDF iText "
+
+#. Tag: para
+#: Itext.xml:7
+#, fuzzy, no-c-format
+msgid ""
+"Seam now includes an component set for generating documents using iText. The "
+"primary focus of Seam&#39;s iText document support is for the generation of "
+"PDF doucuments, but Seam also offers basic support for RTF document "
+"generation."
+msgstr ""
+"Seam inclut maintenant un ensemble de composants pour la génération de "
+"documents avec iText. L'objectif principal du support de documents iText de "
+"Seam est la génération de documents PDF mais Seam offre également un support "
+"de base pour la génération de documents RTF."
+
+#. Tag: title
+#: Itext.xml:11
+#, no-c-format
+msgid "Using PDF Support"
+msgstr "Utiliser le support PDF "
+
+#. Tag: para
+#: Itext.xml:12
+#, fuzzy, no-c-format
+msgid ""
+"iText support is provided by <literal>jboss-seam-pdf.jar</literal>. This JAR "
+"contains the iText JSF controls, which are used to construct views that can "
+"render to PDF, and the DocumentStore component, which serves the rendered "
+"documents to the user. To include PDF support in your application, included "
+"<literal>jboss-seam-pdf.jar</literal> in your <literal>WEB-INF/lib</literal> "
+"directory along with the iText JAR file. There is no further configuration "
+"needed to use Seam&#39;s iText support."
+msgstr ""
+"Le support iText est fourni par <literal>jboss-seam-pdf.jar</literal>. Ce "
+"JAR contient les contrôles JSF iText, qui sont utilisés pour construire des "
+"vues qui affichent en format PDF, et le composant DocumentStore, qui sert "
+"les documents affichés à l'utilisateur. Pour inclure le support PDF dans "
+"votre application, incluez <literal>jboss-seam-pdf.jar</literal> dans votre "
+"répertoire <literal>WEB-INF/lib</literal> de même que le fichier JAR iText. "
+"Vous n'avez besoin d'aucune autre configuration pour utiliser le support "
+"iText de Seam. "
+
+#. Tag: para
+#: Itext.xml:15
+#, no-c-format
+msgid ""
+"The Seam iText module requires the use of Facelets as the view technology. "
+"Future versions of the library may also support the use of JSP. "
+"Additionally, it requires the use of the seam-ui package."
+msgstr ""
+"Le module iText Seam exige l'utilisation de Facelets en tant que view "
+"technology. De futures versions de la bibliothèque pourront aussi supporter "
+"l'utilisation de JSF. Par ailleurs, il requiert l'utilisation du paquetage "
+"seam-ui."
+
+#. Tag: para
+#: Itext.xml:18
+#, no-c-format
+msgid ""
+"The <literal>examples/itext</literal> project contains an example of the PDF "
+"support in action. It demonstrates proper deployment packaging, and it "
+"contains a number examples that demonstrate the key PDF generation features "
+"current supported."
+msgstr ""
+"Le projet <literal>examples/itext</literal> contient un exemple de support "
+"de PDF en action. Il illustre un emballage de déploiement correct et "
+"contient plusieurs exemples qui démontrent les fonctionnalités de génération "
+"de PDF clés et actuellement supportées. "
+
+#. Tag: title
+#: Itext.xml:24
+#, no-c-format
+msgid "Creating a document"
+msgstr "Création d'un document"
+
+#. Tag: para
+#: Itext.xml:25
+#, no-c-format
+msgid ""
+"Documents are generated by facelets documents using tags in the "
+"<literal>http://jboss.com/products/seam/pdf</literal> namespace. Documents "
+"should always have the <literal>document</literal> tag at the root of the "
+"document. The <literal>document</literal> tag prepares Seam to generate a "
+"document into the DocumentStore and renders an HTML redirect to that stored "
+"content. The following is a a small PDF document consisting only a single "
+"line of text:"
+msgstr ""
+"Les documents sont générés par des documents facelets en utilisant des "
+"balises dans l'espace de noms <literal>http://jboss.com/products/seam/pdf</"
+"literal>. Les documents devraient toujours avoir la balise "
+"<literal>document</literal> à la racine du document. La balise "
+"<literal>document</literal> prépare Seam à générer un document dans le "
+"DocumentStore et affiche une redirection HTML vers ce contenu stocké. Ce qui "
+"suit est un petit document PDF qui consiste en une seule ligne de texte :"
+
+#. Tag: programlisting
+#: Itext.xml:28
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf"
+"\"&gt;                                                      \n"
+"   The document goes "
+"here.                                                                                             \n"
+"&lt;/p:document&gt;"
+msgstr ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf"
+"\"&gt;                                                      \n"
+"   The document goes "
+"here.                                                                                             \n"
+"&lt;/p:document&gt;"
+
+#. Tag: title
+#: Itext.xml:30
+#, no-c-format
+msgid "p:document"
+msgstr "p:document"
+
+#. Tag: para
+#: Itext.xml:31
+#, no-c-format
+msgid ""
+"The <literal>p:document</literal> tag supports the following attributes:"
+msgstr ""
+"La balise <literal>p:document</literal> supporte les attributs suivants :"
+
+#. Tag: literal
+#: Itext.xml:36
+#, no-c-format
+msgid "type"
+msgstr "type"
+
+#. Tag: para
+#: Itext.xml:38
+#, no-c-format
+msgid ""
+"The type of the document to be produced. Valid values are <literal>PDF</"
+"literal>, <literal>RTF</literal> and <literal>HTML</literal> modes. Seam "
+"defaults to PDF generation, and many of the features only work correctly "
+"when generating PDF documents."
+msgstr ""
+"Le type de document à produire. Les valeurs valides sont les modes "
+"<literal>PDF</literal>, <literal>RTF</literal> et <literal>HTML</literal>. "
+"Par défaut, Seam utilisera la création de PDF, et de nombreuses "
+"fonctionnalités ne fonctionnent correctement que quand des documents PDF "
+"sont générés. "
+
+#. Tag: literal
+#: Itext.xml:44
+#, no-c-format
+msgid "pageSize"
+msgstr "pageSize"
+
+#. Tag: para
+#: Itext.xml:46
+#, no-c-format
+msgid ""
+"The size of the page to be generate. The most commonly used values would be "
+"<literal>LETTER</literal> and <literal>A4</literal>. A full list of "
+"supported pages sizes can be found in <literal>com.lowagie.text.PageSize</"
+"literal> class. Alternatively, pageSize can provide the width and height of "
+"the page directly. The value \"612 792\", for example, is equizalent to the "
+"LETTER page size."
+msgstr ""
+"La taille de la page à générer. Les valeurs utilisées le plus fréquemment "
+"sont <literal>LETTER</literal> et <literal>A4</literal>. Une liste complète "
+"des tailles de pages supportées se trouve dans la classe <literal>com."
+"lowagie.text.PageSize</literal>. Alternativement, pageSize peut fournir la "
+"largeur et la hauteur de la page directement. La valeur \"612 792\", par "
+"exemple, équivaut à la taille de page de LETTER. "
+
+#. Tag: literal
+#: Itext.xml:52
+#, no-c-format
+msgid "orientation"
+msgstr "orientation"
+
+#. Tag: para
+#: Itext.xml:54
+#, no-c-format
+msgid ""
+"The orientation of the page. Valid values are <literal>portrait</literal> "
+"and <literal>landscape</literal>. In landscape mode, the height and width "
+"page size values are reversed."
+msgstr ""
+"L'orientation de la page. Les valeurs valides sont <literal>portrait</"
+"literal> et <literal>landscape</literal>. En mode horizontal, les valeurs de "
+"la page en hauteur et en largeursont reversées."
+
+#. Tag: literal
+#: Itext.xml:60
+#, no-c-format
+msgid "margins"
+msgstr "margins"
+
+#. Tag: para
+#: Itext.xml:62
+#, no-c-format
+msgid "The left, right, top and bottom margin values."
+msgstr "Les valeurs des marges du bas, du haut, droites et gauches."
+
+#. Tag: literal
+#: Itext.xml:68
+#, no-c-format
+msgid "marginMirroring"
+msgstr "marginMirroring"
+
+#. Tag: para
+#: Itext.xml:70
+#, no-c-format
+msgid "Indicates that margin settings should be reversed an alternating pages."
+msgstr ""
+"Indique que les réglages de marge devraient être reversés sur les pages "
+"alternantes."
+
+#. Tag: para
+#: Itext.xml:76
+#, no-c-format
+msgid ""
+"Document metadata is also set as attributes of the document tag. The "
+"following metadata fields are supported:"
+msgstr ""
+"Les méta-données du document sont aussi définies en tant qu'attributs de la "
+"balise du document. Les champs de méta-données suivants sont supportés :"
+
+#. Tag: literal
+#: Itext.xml:81
+#, no-c-format
+msgid "title"
+msgstr "title"
+
+#. Tag: para
+#: Itext.xml:83 Itext.xml:90 Itext.xml:97 Itext.xml:104 Itext.xml:111
+#: Itext.xml:135 Itext.xml:142 Itext.xml:149 Itext.xml:156 Itext.xml:179
+#: Itext.xml:186 Itext.xml:193 Itext.xml:328 Itext.xml:335 Itext.xml:358
+#: Itext.xml:365 Itext.xml:372 Itext.xml:387 Itext.xml:394 Itext.xml:686
+#: Itext.xml:693 Itext.xml:700 Itext.xml:707 Itext.xml:730 Itext.xml:737
+#: Itext.xml:744 Itext.xml:751 Itext.xml:799 Itext.xml:806 Itext.xml:813
+#: Itext.xml:820 Itext.xml:827 Itext.xml:834 Itext.xml:841 Itext.xml:848
+#: Itext.xml:855 Itext.xml:862 Itext.xml:869 Itext.xml:876 Itext.xml:883
+#: Itext.xml:890 Itext.xml:897 Itext.xml:904 Itext.xml:911
+#, no-c-format
+msgid "&#x200B;"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:88
+#, no-c-format
+msgid "subject"
+msgstr "subject"
+
+#. Tag: literal
+#: Itext.xml:95
+#, no-c-format
+msgid "keywords"
+msgstr "keywords"
+
+#. Tag: literal
+#: Itext.xml:102
+#, no-c-format
+msgid "author"
+msgstr "author"
+
+#. Tag: literal
+#: Itext.xml:109
+#, no-c-format
+msgid "creator"
+msgstr "creator"
+
+#. Tag: title
+#: Itext.xml:121
+#, no-c-format
+msgid "Basic Text Elements"
+msgstr "Éléments de texte de base"
+
+#. Tag: para
+#: Itext.xml:122
+#, no-c-format
+msgid ""
+"Useful documents will need to contain more than just text; however, the "
+"standard UI components are geared towards HTML generation and are not useful "
+"for generating PDF content. Instead, Seam provides a special UI components "
+"for generating suitable PDF content. Tags like <literal>&lt;p:image&gt;</"
+"literal> and <literal>&lt;p:paragraph&gt;</literal> are the basic "
+"foundations of simple documents. Tags like <literal>&lt;p:font&gt;</literal> "
+"provide style information to all the content surrounging them."
+msgstr ""
+"Les documents utiles devront contenir plus que du texte ; cependant les "
+"composants UI standards sont orientés vers la génération de HTML et ne sont "
+"pas utiles dans la génération de contenu PDF. À la place, Seam fournit un "
+"composant UI particulier pour la génération de contenu PDF approprié. Les "
+"balises comme <literal>&lt;p:image&gt;</literal> et <literal>&lt;p:"
+"paragraph&gt;</literal> sont les fondements essentiels des documents simples."
+"Les balises comme <literal>&lt;p:font&gt;</literal> fournissent des "
+"informations de style à tout contenu qui les entoure. "
+
+#. Tag: programlisting
+#: Itext.xml:125
+#, fuzzy, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"&gt; \n"
+"    &lt;p:image alignment=\"right\" wrap=\"true\" resource=\"/logo.jpg\" /"
+"&gt;\n"
+"    &lt;p:font size=\"24\"&gt;\n"
+"        &lt;p:paragraph spacingAfter=\"50\"&gt;My First Document&lt;/p:"
+"paragraph&gt;\n"
+"    &lt;/p:font&gt;\n"
+"\n"
+"    &lt;p:paragraph alignment=\"justify\"&gt;\n"
+"        This is a simple document.  It isn&#39;t very fancy.\n"
+"    &lt;/p:paragraph&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"&gt; \n"
+"    &lt;p:image alignment=\"right\" wrap=\"true\" resource=\"/logo.jpg\" /"
+"&gt;\n"
+"    &lt;p:font size=\"24\"&gt;\n"
+"        &lt;p:paragraph spacingAfter=\"50\"&gt;My First Document&lt;/p:"
+"paragraph&gt;\n"
+"    &lt;/p:font&gt;\n"
+"\n"
+"    &lt;p:paragraph alignment=\"justify\"&gt;\n"
+"        This is a simple document.  It isn't very fancy.\n"
+"    &lt;/p:paragraph&gt;\n"
+"&lt;/p:document&gt;"
+
+#. Tag: title
+#: Itext.xml:127
+#, no-c-format
+msgid "p:paragraph"
+msgstr "p:paragraph"
+
+#. Tag: para
+#: Itext.xml:128
+#, no-c-format
+msgid ""
+"Most uses of text should be sectioned into paragraphs so that text fragments "
+"can be flowed, formatted and styled in logical groups."
+msgstr ""
+"La plupart des usages de texte devraient être partitionnés en paragraphes "
+"afin que les fragments de texte puissent être répendus, formatés et stylisés "
+"en groupes logiques. "
+
+#. Tag: literal
+#: Itext.xml:133
+#, no-c-format
+msgid "firstLineIndent"
+msgstr "firstLineIndent"
+
+#. Tag: literal
+#: Itext.xml:140 Itext.xml:832
+#, no-c-format
+msgid "extraParagraphSpace"
+msgstr "extraParagraphSpace"
+
+#. Tag: literal
+#: Itext.xml:147 Itext.xml:804
+#, no-c-format
+msgid "leading"
+msgstr "leading"
+
+#. Tag: literal
+#: Itext.xml:154 Itext.xml:811
+#, no-c-format
+msgid "multipliedLeading"
+msgstr "multipliedLeading"
+
+#. Tag: literal
+#: Itext.xml:161 Itext.xml:340 Itext.xml:712
+#, no-c-format
+msgid "spacingBefore"
+msgstr "spacingBefore"
+
+#. Tag: para
+#: Itext.xml:163 Itext.xml:342 Itext.xml:714
+#, no-c-format
+msgid "The blank space to be inserted before the element."
+msgstr "L'espace vierge à insérer avant l'élément."
+
+#. Tag: literal
+#: Itext.xml:169 Itext.xml:348 Itext.xml:720
+#, no-c-format
+msgid "spacingAfter"
+msgstr "spacingAfter"
+
+#. Tag: para
+#: Itext.xml:171 Itext.xml:350 Itext.xml:722
+#, no-c-format
+msgid "The blank space to be inserted after the element."
+msgstr "L'espace vierge à insérer après l'élément."
+
+#. Tag: literal
+#: Itext.xml:177 Itext.xml:326 Itext.xml:595
+#, no-c-format
+msgid "indentationLeft"
+msgstr "indentationLeft"
+
+#. Tag: literal
+#: Itext.xml:184 Itext.xml:333 Itext.xml:603
+#, no-c-format
+msgid "indentationRight"
+msgstr "indentationRight"
+
+#. Tag: literal
+#: Itext.xml:191 Itext.xml:749
+#, no-c-format
+msgid "keepTogether"
+msgstr "keepTogether"
+
+#. Tag: title
+#: Itext.xml:201
+#, no-c-format
+msgid "p:text"
+msgstr "p:text"
+
+#. Tag: para
+#: Itext.xml:202
+#, no-c-format
+msgid ""
+"The <literal>text</literal> tag allows text fragments to be produced from "
+"application data using normal JSF converter mechanisms. It is very similar "
+"to the <literal>outputText</literal> tag used when rendering HTML documents. "
+"Here is an example:"
+msgstr ""
+"La balise <literal>text</literal> permet aux fragments de texte d'être créés "
+"à partir des données de l'application en utilisant les mécanismes de "
+"conversion JSF ordinaires. Elle est très similaire à la balise "
+"<literal>outputText</literal> utilisée lors du rendu des documents HTML. En "
+"voici un exemple :"
+
+#. Tag: programlisting
+#: Itext.xml:205
+#, fuzzy, no-c-format
+msgid ""
+"&lt;p:paragraph&gt;\n"
+"    The item costs &lt;p:text value=\"#{product.price}\"&gt;\n"
+"        &lt;f:convertNumber type=\"currency\" currencySymbol=\"$\"/&gt;\n"
+"    &lt;/p:text&gt;\n"
+"&lt;/p:paragraph&gt;"
+msgstr ""
+"&lt;p:paragraph&gt;\n"
+"    The item costs &lt;p:text value=\"#{product.price}\"&gt;\n"
+"        &lt;f:convertNumber type=\"currency\" currencySymbol=\"&#36;\"/&gt;\n"
+"    &lt;/p:text&gt;\n"
+"&lt;/p:paragraph&gt;"
+
+#. Tag: literal
+#: Itext.xml:208
+#, no-c-format
+msgid "value"
+msgstr "value"
+
+#. Tag: para
+#: Itext.xml:210
+#, no-c-format
+msgid ""
+"The value to be displayed. This will typically be a value binding expression."
+msgstr ""
+"La valeur à afficher. Cela sera typiquement une expression d'association de "
+"valeurs."
+
+#. Tag: title
+#: Itext.xml:219
+#, no-c-format
+msgid "p:font"
+msgstr "p:font"
+
+#. Tag: para
+#: Itext.xml:220
+#, fuzzy, no-c-format
+msgid "Font declarations have no direct"
+msgstr "Les déclarations de police n'ont pas de direct"
+
+#. Tag: literal
+#: Itext.xml:225
+#, no-c-format
+msgid "familyName"
+msgstr "familyName"
+
+#. Tag: para
+#: Itext.xml:227
+#, no-c-format
+msgid ""
+"The font family. One of: <literal>COURIER</literal>, <literal>HELVETICA</"
+"literal>, <literal>TIMES-ROMAN</literal>, <literal>SYMBOL</literal> or "
+"<literal>ZAPFDINGBATS</literal>."
+msgstr ""
+"Le famille de polices. Une parmi : <literal>COURIER</literal>, "
+"<literal>HELVETICA</literal>, <literal>TIMES-ROMAN</literal>, "
+"<literal>SYMBOL</literal> ou <literal>ZAPFDINGBATS</literal>."
+
+#. Tag: literal
+#: Itext.xml:233
+#, no-c-format
+msgid "size"
+msgstr "size"
+
+#. Tag: para
+#: Itext.xml:235
+#, no-c-format
+msgid "The point size of the font."
+msgstr "Taille du point de la police."
+
+#. Tag: literal
+#: Itext.xml:241 Itext.xml:530
+#, no-c-format
+msgid "style"
+msgstr "style"
+
+#. Tag: para
+#: Itext.xml:243
+#, no-c-format
+msgid ""
+"The font styles. Any combination of : <literal>NORMAL</literal>, "
+"<literal>BOLD</literal>, <literal>ITALIC</literal>, <literal>OBLIQUE</"
+"literal>, <literal>UNDERLINE</literal>, <literal>LINE-THROUGH</literal>"
+msgstr ""
+"Les styles de polices. Toute combinaison de : <literal>NORMAL</literal>, "
+"<literal>BOLD</literal>, <literal>ITALIC</literal>, <literal>OBLIQUE</"
+"literal>, <literal>UNDERLINE</literal>, <literal>LINE-THROUGH</literal>"
+
+#. Tag: title
+#: Itext.xml:252
+#, no-c-format
+msgid "p:newPage"
+msgstr "p:newPage"
+
+#. Tag: para
+#: Itext.xml:253
+#, no-c-format
+msgid "<literal>p:newPage</literal> inserts a page break."
+msgstr "<literal>p:newPage</literal> insère un saut de page."
+
+#. Tag: title
+#: Itext.xml:259
+#, no-c-format
+msgid "p:image"
+msgstr "p:image"
+
+#. Tag: para
+#: Itext.xml:260
+#, no-c-format
+msgid ""
+"<literal>p:image</literal> inserts an image into the document. Images can be "
+"be loaded from the classpath or from the web application context using the "
+"<literal>resource</literal> attribute."
+msgstr ""
+"<literal>p:image</literal> insère une image dans le document. Les images "
+"peuvent être chargées depuis le chemin de classe ou depuis le contexte de "
+"l'application web en utilisant l'attribut <literal>resource</literal>."
+
+#. Tag: programlisting
+#: Itext.xml:263
+#, no-c-format
+msgid "&lt;p:image resource=\"/jboss.jpg\" /&gt;"
+msgstr "&lt;p:image resource=\"/jboss.jpg\" /&gt;"
+
+#. Tag: para
+#: Itext.xml:264
+#, no-c-format
+msgid ""
+"Resources can also be dynamically generated by application code. The "
+"<literal>imageData</literal> attribute can specify a value binding "
+"expression whose value is a <literal>java.awt.Image</literal> object."
+msgstr ""
+"Les ressources peuvent aussi être générées dynamiquement par le code "
+"d'application. L'attribut <literal>imageData</literal> peut spécifier une "
+"expression d'association de valeurs dont la valeur est un objet "
+"<literal>java.awt.Image</literal>."
+
+#. Tag: programlisting
+#: Itext.xml:267
+#, no-c-format
+msgid "&lt;p:image imageData=\"#{images.chart}\" /&gt;"
+msgstr "&lt;p:image imageData=\"#{images.chart}\" /&gt;"
+
+#. Tag: literal
+#: Itext.xml:270
+#, no-c-format
+msgid "resource"
+msgstr "resource"
+
+#. Tag: para
+#: Itext.xml:272
+#, no-c-format
+msgid ""
+"The location of the image resource to be included. Resources should be "
+"relative to the document root of the web application."
+msgstr ""
+"L'emplacement de la ressource de l'image à inclure. Les ressources devraient "
+"être relatives à la racine du document de l'application web."
+
+#. Tag: literal
+#: Itext.xml:278
+#, no-c-format
+msgid "imageData"
+msgstr "imageData"
+
+#. Tag: para
+#: Itext.xml:280
+#, no-c-format
+msgid "A method expression binding to an application-generated image."
+msgstr ""
+"Une association d'expressions de méthodes à une image générée par "
+"l'application.  "
+
+#. Tag: literal
+#: Itext.xml:286 Itext.xml:909
+#, no-c-format
+msgid "rotation"
+msgstr "rotation"
+
+#. Tag: para
+#: Itext.xml:288
+#, no-c-format
+msgid "The rotation of the image in degrees."
+msgstr "La rotation de l'image en degrés."
+
+#. Tag: literal
+#: Itext.xml:294
+#, no-c-format
+msgid "height"
+msgstr "height"
+
+#. Tag: para
+#: Itext.xml:296
+#, no-c-format
+msgid "The height of the image."
+msgstr "La hauteur de l'image. "
+
+#. Tag: literal
+#: Itext.xml:302
+#, no-c-format
+msgid "width"
+msgstr "width"
+
+#. Tag: para
+#: Itext.xml:304
+#, no-c-format
+msgid "The width of the image."
+msgstr "La largeur de l'image."
+
+#. Tag: literal
+#: Itext.xml:310 Itext.xml:437 Itext.xml:587
+#, no-c-format
+msgid "alignment"
+msgstr "alignment"
+
+#. Tag: para
+#: Itext.xml:312
+#, fuzzy, no-c-format
+msgid ""
+"The alignment of the image. (see <xref linkend=\"Seam_Reference_Guide-"
+"Document_Constants-Alignment_Values\"/> for possible values)"
+msgstr ""
+"L'alignement de l'image. (consultez <xref linkend=\"Document_Constants-"
+"Alignment_Values\"/> pour des valeurs possibles)"
+
+#. Tag: literal
+#: Itext.xml:318
+#, no-c-format
+msgid "<literal>alt</literal>"
+msgstr "<literal>alt</literal>"
+
+#. Tag: para
+#: Itext.xml:320
+#, no-c-format
+msgid "Alternative text representation for the image."
+msgstr "Représentation de texte alternative pour l'image."
+
+#. Tag: literal
+#: Itext.xml:356 Itext.xml:668
+#, no-c-format
+msgid "widthPercentage"
+msgstr "widthPercentage"
+
+#. Tag: literal
+#: Itext.xml:363
+#, no-c-format
+msgid "initialRotation"
+msgstr "initialRotation"
+
+#. Tag: literal
+#: Itext.xml:370
+#, no-c-format
+msgid "<literal>dpi</literal>"
+msgstr "<literal>dpi</literal>"
+
+#. Tag: literal
+#: Itext.xml:377
+#, no-c-format
+msgid "scalePercent"
+msgstr "scalePercent"
+
+#. Tag: para
+#: Itext.xml:379
+#, no-c-format
+msgid ""
+"The scaling factor (as a percentage) to use for the image. This can be "
+"expressed as a single percentage value or as two percentage values "
+"representing separate x and y scaling percentages."
+msgstr ""
+"Le facteur de la mise à échelle (en pourcentage) à utiliser pour l'image. "
+"Cela peut être exprimé comme une valeur de pourcentage unique ou deux "
+"valeurs de pourcentage, représentant des pourcentages de mise à échelle x et "
+"y séparés. "
+
+#. Tag: literal
+#: Itext.xml:385
+#, no-c-format
+msgid "wrap"
+msgstr "wrap"
+
+#. Tag: literal
+#: Itext.xml:392
+#, no-c-format
+msgid "underlying"
+msgstr "underlying"
+
+#. Tag: title
+#: Itext.xml:402
+#, no-c-format
+msgid "p:anchor"
+msgstr "p:anchor"
+
+#. Tag: para
+#: Itext.xml:403
+#, no-c-format
+msgid ""
+"<literal>p:anchor</literal> defines clickable links from a document. It "
+"supports the following attributes:"
+msgstr ""
+"<literal>p:anchor</literal> définit les liens cliquables d'un document. Cela "
+"supporte les attributs suivants :"
+
+#. Tag: literal
+#: Itext.xml:408
+#, no-c-format
+msgid "name"
+msgstr "name"
+
+#. Tag: para
+#: Itext.xml:410
+#, no-c-format
+msgid "The name of an in-document anchor destination."
+msgstr "Le nom d'une destination d'ancre dans le document."
+
+#. Tag: literal
+#: Itext.xml:416
+#, no-c-format
+msgid "reference"
+msgstr "reference"
+
+#. Tag: para
+#: Itext.xml:418
+#, no-c-format
+msgid ""
+"The destination the link refers to. Links to other points in the document "
+"should begin with a \"#\". For example, \"#link1\" to refer to an anchor "
+"postion with a <literal>name</literal> of <literal>link1</literal>. Links "
+"may also be a full URL to point to a resource outside of the document."
+msgstr ""
+"La destination auquel le lien se réfère. Les liens à d'autres points dans le "
+"documents devraient commencerpar un \"#\". Par exemple, \"#link1\" pour se "
+"référer à la position d'une ancre avec un <literal>name</literal> de "
+"<literal>link1</literal>. Les liens peuvent également être un URL complet "
+"pour pointer vers une ressource hors du document. "
+
+#. Tag: title
+#: Itext.xml:429
+#, no-c-format
+msgid "Headers and Footers"
+msgstr "En-têtes et pieds de page"
+
+#. Tag: title
+#: Itext.xml:431
+#, no-c-format
+msgid "p:header and p:footer"
+msgstr "p:header et p:footer"
+
+#. Tag: para
+#: Itext.xml:432
+#, no-c-format
+msgid ""
+"The <literal>p:header</literal> and <literal>p:footer</literal> components "
+"provide the ability to place header and footer text on each page of a "
+"generated document, with the exception of the first page. Header and footer "
+"declarations should appear near the top of a document."
+msgstr ""
+"Les composants <literal>p:header</literal> et <literal>p:footer</literal> "
+"fournissent la possibilité de placer le texte de l'en-tête et du pied de "
+"page sur chaque page d'un document généré, à l'exception de la première "
+"page. Les déclarations d'en-tête et de pied de page devraient apparaître "
+"vers le haut d'un document. "
+
+#. Tag: para
+#: Itext.xml:439
+#, fuzzy, no-c-format
+msgid ""
+"The alignment of the header/footer box section. (see <xref linkend="
+"\"Seam_Reference_Guide-Document_Constants-Alignment_Values\"/> for alignment "
+"values)"
+msgstr ""
+"L'alignement de l'en-tête/pied de page de la section de la boîte. (consultez "
+"<xref linkend=\"Document_Constants-Alignment_Values\"/> pour les valeurs "
+"d'alignement)"
+
+#. Tag: literal
+#: Itext.xml:445
+#, no-c-format
+msgid "backgroundColor"
+msgstr "backgroundColor"
+
+#. Tag: para
+#: Itext.xml:447
+#, fuzzy, no-c-format
+msgid ""
+"The background color of the header/footer box. (see <xref linkend="
+"\"Seam_Reference_Guide-Document_Constants-Color_Values\"/> for color values)"
+msgstr ""
+"La couleur de fond de l'en-tête/pied de page de la boîte. (consultez <xref "
+"linkend=\"Document_Constants-Color_Values\"/> pour les valeurs de couleur)"
+
+#. Tag: literal
+#: Itext.xml:453
+#, no-c-format
+msgid "borderColor"
+msgstr "borderColor"
+
+#. Tag: para
+#: Itext.xml:455
+#, fuzzy, no-c-format
+msgid ""
+"The border color of the header/footer box. Individual border sides can be "
+"set using <literal>borderColorLeft</literal>, <literal>borderColorRight</"
+"literal>, <literal>borderColorTop</literal> and <literal>borderColorBottom</"
+"literal>.(see <xref linkend=\"Seam_Reference_Guide-Document_Constants-"
+"Color_Values\"/> for color values)"
+msgstr ""
+"La couleur de la bordure de la boîte de l'en-tête/pied de page. Les côtés "
+"individuels des bordures peuvent être définis en utilisant "
+"<literal>borderColorLeft</literal>, <literal>borderColorRight</literal>, "
+"<literal>borderColorTop</literal> et <literal>borderColorBottom</literal>. "
+"(consultez <xref linkend=\"Document_Constants-Color_Values\"/> pour les "
+"valeurs de couleur)"
+
+#. Tag: literal
+#: Itext.xml:461
+#, no-c-format
+msgid "borderWidth"
+msgstr "borderWidth"
+
+#. Tag: para
+#: Itext.xml:463
+#, no-c-format
+msgid ""
+"The width of the border. Inidvidual border sides can be specified using "
+"<literal>borderWidthLeft</literal>, <literal>borderWidthRight</literal>, "
+"<literal>borderWidthTop</literal> and <literal>borderWidthBottom</literal>."
+msgstr ""
+"La largeur de la bordure. Les côtés individuels des bordures peuvent être "
+"spécifiés en utilisant <literal>borderWidthLeft</literal>, "
+"<literal>borderWidthRight</literal>, <literal>borderWidthTop</literal> et "
+"<literal>borderWidthBottom</literal>."
+
+#. Tag: title
+#: Itext.xml:472
+#, no-c-format
+msgid "p:pageNumber"
+msgstr "p:pageNumber"
+
+#. Tag: para
+#: Itext.xml:473
+#, no-c-format
+msgid ""
+"The current page number can be placed inside of a header or footer using the "
+"<literal>p:pageNumber</literal> tag. The page number tag can only be used in "
+"the context of a header or footer and can only be used once."
+msgstr ""
+"Le numéro courant de la page peut être placé à l'intérieur de l'en-tête ou "
+"du pied de page en utilisant la balise <literal>p:pageNumber</literal>. La "
+"balise du numéro de la page ne peut être utilisée que dans le contexte d'un "
+"en-tête ou d'un pied de page et ne peut être utilisée qu'une fois. "
+
+#. Tag: title
+#: Itext.xml:481
+#, no-c-format
+msgid "Chapters and Sections"
+msgstr "Chapitres et sections"
+
+#. Tag: para
+#: Itext.xml:482
+#, no-c-format
+msgid ""
+"If the generated document follows a book/article structure, the <literal>p:"
+"chapter</literal> and <literal>p:section</literal> tags can be used to "
+"provide the necessary structure. Sections can only be used inside of "
+"chapters, but they may be nested arbitrarily deep. Most PDF viewers provide "
+"easy navigation between chapters and sections in a document."
+msgstr ""
+"Si le document généré se conforme à une structure de livre/article, les "
+"balises <literal>p:chapter</literal> et <literal>p:section</literal> peuvent "
+"être utilisées pour fournir la structure nécessaire. Les sections peuvent "
+"être utilisées uniquement dans les chapitres mais peuvent être intégrées "
+"arbitrairement en profondeur. La plupart des visionneurs PDF fournissent une "
+"navigation facile entre les chapitres et les sections dans un document. "
+
+#. Tag: programlisting
+#: Itext.xml:485
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"\n"
+"            title=\"Hello\"&gt;\n"
+"\n"
+"   &lt;p:chapter number=\"1\"&gt;\n"
+"      &lt;p:title&gt;&lt;p:paragraph&gt;Hello&lt;/p:paragraph&gt;&lt;/p:"
+"title&gt;\n"
+"      &lt;p:paragraph&gt;Hello #{user.name}!&lt;/p:paragraph&gt;\n"
+"   &lt;/p:chapter&gt;\n"
+"\n"
+"   &lt;p:chapter number=\"2\"&gt;\n"
+"      &lt;p:title&gt;&lt;p:paragraph&gt;Goodbye&lt;/p:paragraph&gt;&lt;/p:"
+"title&gt;\n"
+"      &lt;p:paragraph&gt;Goodbye #{user.name}.&lt;/p:paragraph&gt;\n"
+"   &lt;/p:chapter&gt;\n"
+"\n"
+"&lt;/p:document&gt;"
+msgstr ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"\n"
+"            title=\"Hello\"&gt;\n"
+"\n"
+"   &lt;p:chapter number=\"1\"&gt;\n"
+"      &lt;p:title&gt;&lt;p:paragraph&gt;Hello&lt;/p:paragraph&gt;&lt;/p:"
+"title&gt;\n"
+"      &lt;p:paragraph&gt;Hello #{user.name}!&lt;/p:paragraph&gt;\n"
+"   &lt;/p:chapter&gt;\n"
+"\n"
+"   &lt;p:chapter number=\"2\"&gt;\n"
+"      &lt;p:title&gt;&lt;p:paragraph&gt;Goodbye&lt;/p:paragraph&gt;&lt;/p:"
+"title&gt;\n"
+"      &lt;p:paragraph&gt;Goodbye #{user.name}.&lt;/p:paragraph&gt;\n"
+"   &lt;/p:chapter&gt;\n"
+"\n"
+"&lt;/p:document&gt;"
+
+#. Tag: title
+#: Itext.xml:487
+#, no-c-format
+msgid "p:chapter and p:section"
+msgstr "p:chapter et p:section"
+
+#. Tag: literal
+#: Itext.xml:490
+#, no-c-format
+msgid "number"
+msgstr "number"
+
+#. Tag: para
+#: Itext.xml:492
+#, no-c-format
+msgid "The chapter number. Every chapter should be assigned a chapter number."
+msgstr ""
+"Le numéro du chapitre. Chaque chapitre devrait comporter un numéro de "
+"chapitre."
+
+#. Tag: literal
+#: Itext.xml:498
+#, no-c-format
+msgid "numberDepth"
+msgstr "numberDepth"
+
+#. Tag: para
+#: Itext.xml:500
+#, no-c-format
+msgid ""
+"The depth of numbering for section. All sections are numbered relative to "
+"their surrounding chapter/sections. The fourth section of of the first "
+"section of chapter three would be section 3.1.4, if displayed at the default "
+"number depth of three. To omit the chapter number, a number depth of 2 "
+"should be used. In that case, the section number would be displayed as 1.4."
+msgstr ""
+"La profondeur de la numérotation par section. Toutes les sections sont "
+"numérotées selon leurs chapitres/sections environnants. La quatrième section "
+"de la première section du chapitre trois serait la section 3.1.4, si elle "
+"est affichée à la profondeur du numéro trois par défaut. Pour omettre le "
+"numéro du chapitre, une profondeur de numérotation de 2 devra être utilisée. "
+"Dans ce cas, le numéro de la section sera affiché comme 1.4. "
+
+#. Tag: title
+#: Itext.xml:509
+#, no-c-format
+msgid "p:title"
+msgstr "p:title"
+
+#. Tag: para
+#: Itext.xml:510
+#, no-c-format
+msgid ""
+"Any chapter or section can contain a <literal>p:title</literal>. The title "
+"will be displayed next to the chapter/section number. The body of the title "
+"may contain raw text or may be a <literal>p:paragraph</literal>."
+msgstr ""
+"Tout chapitre ou section peut contenir un <literal>p:title</literal>. Le "
+"titre sera affiché à côté du numéro du chapitre/de la section. Le corps du "
+"titre peut contenir du texte brut ou peut-être un <literal>p:paragraph</"
+"literal>."
+
+#. Tag: title
+#: Itext.xml:518
+#, no-c-format
+msgid "Lists"
+msgstr "Lists"
+
+#. Tag: para
+#: Itext.xml:519
+#, no-c-format
+msgid ""
+"List structures can be displayed using the <literal>p:list</literal> and "
+"<literal>p:listItem</literal> tags. Lists may contain arbitrarily-nested "
+"sublists. List items may not be used outside of a list. he following "
+"document uses the <literal>ui:repeat</literal> tag to to display a list of "
+"values retrieved from a Seam component."
+msgstr ""
+"Les structures de liste peuvent être affichées en utilisant les balises "
+"<literal>p:list</literal> et <literal>p:listItem</literal>. Les listes "
+"peuvent contenir des sous-listes arbitrairement imbriquées. Les éléments de "
+"liste peuvent ne pas être utilisés en dehors d'une liste. Le document "
+"suivant utilise la balise <literal>ui:repeat</literal> pour afficher une "
+"liste de valeurs récupérées d'un composant Seam. "
+
+#. Tag: programlisting
+#: Itext.xml:522
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"\n"
+"            xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"            title=\"Hello\"&gt;\n"
+"   &lt;p:list style=\"numbered\"&gt;\n"
+"      &lt;ui:repeat value=\"#{documents}\" var=\"doc\"&gt;\n"
+"         &lt;p:listItem&gt;#{doc.name}&lt;/p:listItem&gt;\n"
+"      &lt;/ui:repeat&gt;\n"
+"   &lt;/p:list&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"\n"
+"            xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"            title=\"Hello\"&gt;\n"
+"   &lt;p:list style=\"numbered\"&gt;\n"
+"      &lt;ui:repeat value=\"#{documents}\" var=\"doc\"&gt;\n"
+"         &lt;p:listItem&gt;#{doc.name}&lt;/p:listItem&gt;\n"
+"      &lt;/ui:repeat&gt;\n"
+"   &lt;/p:list&gt;\n"
+"&lt;/p:document&gt;"
+
+#. Tag: title
+#: Itext.xml:524
+#, no-c-format
+msgid "p:list"
+msgstr "p:list"
+
+#. Tag: para
+#: Itext.xml:525
+#, no-c-format
+msgid "<literal>p:list</literal> supports the following attributes:"
+msgstr "<literal>p:list</literal> supporte les attributs suivants :"
+
+#. Tag: para
+#: Itext.xml:532
+#, no-c-format
+msgid ""
+"The ordering/bulleting style of list. One of: <literal>NUMBERED</literal>, "
+"<literal>LETTERED</literal>, <literal>GREEK</literal>, <literal>ROMAN</"
+"literal>, <literal>ZAPFDINGBATS</literal>, <literal>ZAPFDINGBATS_NUMBER</"
+"literal>. If no style is given, the list items are bulleted."
+msgstr ""
+"Le style d'ordre/de puces de la liste. Une parmi : <literal>NUMBERED</"
+"literal>, <literal>LETTERED</literal>, <literal>GREEK</literal>, "
+"<literal>ROMAN</literal>, <literal>ZAPFDINGBATS</literal>, "
+"<literal>ZAPFDINGBATS_NUMBER</literal>. Si aucun style n'a été spécifié, les "
+"éléments de la liste sont à puces. "
+
+#. Tag: literal
+#: Itext.xml:538 Itext.xml:611
+#, no-c-format
+msgid "listSymbol"
+msgstr "listSymbol"
+
+#. Tag: para
+#: Itext.xml:540
+#, no-c-format
+msgid "For bulleted lists, specifies the bullet symbol."
+msgstr "Pour les listes à puces, indique le symbole de la puce."
+
+#. Tag: literal
+#: Itext.xml:546 Itext.xml:818
+#, no-c-format
+msgid "indent"
+msgstr "indent"
+
+#. Tag: para
+#: Itext.xml:548
+#, no-c-format
+msgid "The indentation level of the list."
+msgstr "Le niveau d'indentation de la liste."
+
+#. Tag: literal
+#: Itext.xml:554
+#, no-c-format
+msgid "lowerCase"
+msgstr "lowerCase"
+
+#. Tag: para
+#: Itext.xml:556
+#, no-c-format
+msgid ""
+"For list styles using letters, indicates whether the letters should be lower "
+"case."
+msgstr ""
+"Pour les listes de styles qui utilisent des lettres, indique si les lettres "
+"devraient être en minuscules. "
+
+#. Tag: literal
+#: Itext.xml:562
+#, no-c-format
+msgid "charNumber"
+msgstr "charNumber"
+
+#. Tag: para
+#: Itext.xml:564
+#, no-c-format
+msgid "For ZAPFDINGBATS, indicates the character code of the bullet character."
+msgstr "Pour les ZAPFDINGBATS, indique le code du caratère du caractère puce."
+
+#. Tag: literal
+#: Itext.xml:570
+#, no-c-format
+msgid "numberType"
+msgstr "numberType"
+
+#. Tag: para
+#: Itext.xml:572
+#, no-c-format
+msgid "For ZAPFDINGBATS_NUMBER, indicates the numbering style."
+msgstr "Pour ZAPFDINGBATS_NUMBER, indique le style de numérotation."
+
+#. Tag: title
+#: Itext.xml:581
+#, no-c-format
+msgid "p:listItem"
+msgstr "p:listItem"
+
+#. Tag: para
+#: Itext.xml:582
+#, no-c-format
+msgid "<literal>p:listItem</literal> supports the following attributes:"
+msgstr "<literal>p:listItem</literal> supporte les attributs suivants : "
+
+#. Tag: para
+#: Itext.xml:589
+#, fuzzy, no-c-format
+msgid ""
+"The alignment of the list item. (See <xref linkend=\"Seam_Reference_Guide-"
+"Document_Constants-Alignment_Values\"/> for possible values)"
+msgstr ""
+"L'alignement de l'élément de la liste. (Consultez <xref linkend="
+"\"Document_Constants-Alignment_Values\"/> pour des valeurs possibles)"
+
+#. Tag: para
+#: Itext.xml:597
+#, no-c-format
+msgid "The left indentation amount."
+msgstr "La quantité d'indentation gauche."
+
+#. Tag: para
+#: Itext.xml:605
+#, no-c-format
+msgid "The right indentation amount."
+msgstr "La quantité d'indentation droite"
+
+#. Tag: para
+#: Itext.xml:613
+#, no-c-format
+msgid "Overrides the default list symbol for this list item."
+msgstr "Ignore le symbole de la liste par défaut pour cet élément de liste."
+
+#. Tag: title
+#: Itext.xml:624
+#, no-c-format
+msgid "Tables"
+msgstr "Tables"
+
+#. Tag: para
+#: Itext.xml:625
+#, no-c-format
+msgid ""
+"Table structures can be created using the <literal>p:table</literal> and "
+"<literal>p:cell</literal> tags. Unlike many table structures, there is no "
+"explicit row declaration. If a table has 3 columns, then every 3 cells will "
+"automatically form a row. Header and footer rows can be declared, and the "
+"headers and footers will be repeated in the event a table structure spans "
+"multiple pages."
+msgstr ""
+"Les structures de table peuvent être créées en utilisant les balises "
+"<literal>p:table</literal> et <literal>p:cell</literal>. Contrairement à de "
+"nombreuses structures de table, il n'y a pas de déclaration de rangée "
+"explicite. Si la table a 3 colonnes, alors 3 cellules formeront "
+"automatiquement une rangée. Les rangées d'en-tête et de pied de page peuvent "
+"être déclarées et les en-têtes et pieds de page seront répétés au cas où une "
+"structure de table s'étendrait sur de multiples pages. "
+
+#. Tag: programlisting
+#: Itext.xml:628
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"   \n"
+"            xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"            title=\"Hello\"&gt;   \n"
+"   &lt;p:table columns=\"3\" headerRows=\"1\"&gt;\n"
+"      &lt;p:cell&gt;name&lt;/p:cell&gt;\n"
+"      &lt;p:cell&gt;owner&lt;/p:cell&gt;\n"
+"      &lt;p:cell&gt;size&lt;/p:cell&gt;\n"
+"      &lt;ui:repeat value=\"#{documents}\" var=\"doc\"&gt;\n"
+"         &lt;p:cell&gt;#{doc.name}&lt;/p:cell&gt;\n"
+"         &lt;p:cell&gt;#{doc.user.name}&lt;/p:cell&gt;\n"
+"         &lt;p:cell&gt;#{doc.size}&lt;/p:cell&gt;\n"
+"      &lt;/ui:repeat&gt;\n"
+"   &lt;/p:table&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"   \n"
+"            xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"            title=\"Hello\"&gt;   \n"
+"   &lt;p:table columns=\"3\" headerRows=\"1\"&gt;\n"
+"      &lt;p:cell&gt;name&lt;/p:cell&gt;\n"
+"      &lt;p:cell&gt;owner&lt;/p:cell&gt;\n"
+"      &lt;p:cell&gt;size&lt;/p:cell&gt;\n"
+"      &lt;ui:repeat value=\"#{documents}\" var=\"doc\"&gt;\n"
+"         &lt;p:cell&gt;#{doc.name}&lt;/p:cell&gt;\n"
+"         &lt;p:cell&gt;#{doc.user.name}&lt;/p:cell&gt;\n"
+"         &lt;p:cell&gt;#{doc.size}&lt;/p:cell&gt;\n"
+"      &lt;/ui:repeat&gt;\n"
+"   &lt;/p:table&gt;\n"
+"&lt;/p:document&gt;"
+
+#. Tag: title
+#: Itext.xml:630
+#, no-c-format
+msgid "p:table"
+msgstr "p:table"
+
+#. Tag: para
+#: Itext.xml:631
+#, no-c-format
+msgid "<literal>p:table</literal> supports the following attributes."
+msgstr "<literal>p:table</literal> supporte les attributs suivants."
+
+#. Tag: literal
+#: Itext.xml:636
+#, no-c-format
+msgid "columns"
+msgstr "columns"
+
+#. Tag: para
+#: Itext.xml:638
+#, no-c-format
+msgid "The number of columns (cells) that make up a table row."
+msgstr "Le nombre de colonnes (cellules) qui forment une rangée de table. "
+
+#. Tag: literal
+#: Itext.xml:644
+#, no-c-format
+msgid "widths"
+msgstr "widths"
+
+#. Tag: para
+#: Itext.xml:646
+#, no-c-format
+msgid ""
+"The relative widths of each column. There should be one value for each "
+"column. For example: widths=\"2 1 1\" would indicate that there are 3 "
+"columns and the first column should be twice the size of the second and "
+"third column."
+msgstr ""
+"La largeur relative de chaque colonne. Il ne devrait y avoir qu'une valeur "
+"par colonne. Par exemple : widths=\"2 1 1\" indiquerait qu'il y a 3 colonnes "
+"et que la taille de la première devrait être le double de la seconde et de "
+"la troisième colonne. "
+
+#. Tag: literal
+#: Itext.xml:652
+#, no-c-format
+msgid "headerRows"
+msgstr "headerRows"
+
+#. Tag: para
+#: Itext.xml:654
+#, no-c-format
+msgid ""
+"The initial number of rows which are considered to be headers or footer rows "
+"and should be repeated if the table spans multiple pages."
+msgstr ""
+"Le nombre initial de rangées qui sont considérées comme des rangées d'en-"
+"tête et de pied de page et devraient être répétées si la table s'étend sur "
+"de muliples pages."
+
+#. Tag: literal
+#: Itext.xml:660
+#, no-c-format
+msgid "footerRows"
+msgstr "footerRows"
+
+#. Tag: para
+#: Itext.xml:662
+#, no-c-format
+msgid ""
+"The number of rows that are considered to be footer rows. This value is "
+"subtracted from the <literal>headerRows</literal> value. If document has 2 "
+"rows which make up the header and one row that makes up the footer, "
+"<literal>headerRows</literal> should be set to 3 and <literal>footerRows</"
+"literal> should be set to 1"
+msgstr ""
+"Le nombre de rangées qui sont considérées comme des rangées d'en-tête. Cette "
+"valeur est soustraite de la valeur <literal>headerRows</literal>. Si le "
+"document a 2 rangées qui forment l'en-tête et une rangée qui forme le pied "
+"de page, <literal>headerRows</literal> devrait être défini à 3 et "
+"<literal>footerRows</literal> à 1"
+
+#. Tag: para
+#: Itext.xml:670
+#, no-c-format
+msgid "The percentage of the page width that the table spans."
+msgstr "Le pourcentage de la largeur de la page sur lequel la table s'étend. "
+
+#. Tag: literal
+#: Itext.xml:676 Itext.xml:773
+#, no-c-format
+msgid "horizontalAlignment"
+msgstr "horizontalAlignment"
+
+#. Tag: para
+#: Itext.xml:678
+#, fuzzy, no-c-format
+msgid ""
+"The horizontal alignment of the table. (See <xref linkend="
+"\"Seam_Reference_Guide-Document_Constants-Alignment_Values\"/> for possible "
+"values)"
+msgstr ""
+"L'alignement horizontal de la table. (Consultez <xref linkend="
+"\"Document_Constants-Alignment_Values\"/> pour des valeurs possibles)"
+
+#. Tag: literal
+#: Itext.xml:684
+#, no-c-format
+msgid "skipFirstHeader"
+msgstr "skipFirstHeader"
+
+#. Tag: literal
+#: Itext.xml:691 Itext.xml:881
+#, no-c-format
+msgid "runDirection"
+msgstr "runDirection"
+
+#. Tag: literal
+#: Itext.xml:698
+#, no-c-format
+msgid "lockedWidth"
+msgstr "lockedWidth"
+
+#. Tag: literal
+#: Itext.xml:705
+#, no-c-format
+msgid "splitRows"
+msgstr "splitRows"
+
+#. Tag: literal
+#: Itext.xml:728
+#, no-c-format
+msgid "extendLastRow"
+msgstr "extendLastRow"
+
+#. Tag: literal
+#: Itext.xml:735
+#, no-c-format
+msgid "headersInEvent"
+msgstr "headersInEvent"
+
+#. Tag: literal
+#: Itext.xml:742
+#, no-c-format
+msgid "splitLate"
+msgstr "splitLate"
+
+#. Tag: title
+#: Itext.xml:759
+#, no-c-format
+msgid "p:cell"
+msgstr "p:cell"
+
+#. Tag: para
+#: Itext.xml:760
+#, no-c-format
+msgid "<literal>p:cell</literal> supports the following attributes."
+msgstr "<literal>p:cell</literal> supporte les attributs suivants."
+
+#. Tag: literal
+#: Itext.xml:765
+#, no-c-format
+msgid "colspan"
+msgstr "colspan"
+
+#. Tag: para
+#: Itext.xml:767
+#, no-c-format
+msgid ""
+"Cells can span more than one column by declaring a <literal>colspan</"
+"literal> greater than 1. Tables do not have the ability to span across "
+"multiple rows."
+msgstr ""
+"Les cellules peuvent s'étendre sur plus d'une colonne en déclarant un "
+"<literal>colspan</literal> plus élevé que 1. Les tables n'ont pas la "
+"possibilité de s'étendre sur des rangées multiples. "
+
+#. Tag: para
+#: Itext.xml:775
+#, fuzzy, no-c-format
+msgid ""
+"The horizontal alignment of the cell. (see <xref linkend="
+"\"Seam_Reference_Guide-Document_Constants-Alignment_Values\"/> for possible "
+"values)"
+msgstr ""
+"L'alignement horizontal de la cellule. (consultez <xref linkend="
+"\"Document_Constants-Alignment_Values\"/> pour des valeurs possibles)"
+
+#. Tag: literal
+#: Itext.xml:781 Itext.xml:825
+#, no-c-format
+msgid "verticalAlignment"
+msgstr "verticalAlignment"
+
+#. Tag: para
+#: Itext.xml:783
+#, fuzzy, no-c-format
+msgid ""
+"The vertical alignment of the cell. (see <xref linkend="
+"\"Seam_Reference_Guide-Document_Constants-Alignment_Values\"/> for possible "
+"values)"
+msgstr ""
+"L'alignement vertical de la cellule. (consultez <xref linkend="
+"\"Document_Constants-Alignment_Values\"/> pour des valeurs possibles)"
+
+#. Tag: literal
+#: Itext.xml:789
+#, no-c-format
+msgid "padding"
+msgstr "padding"
+
+#. Tag: para
+#: Itext.xml:791
+#, no-c-format
+msgid ""
+"Padding on a given side can also be specified using <literal>paddingLeft</"
+"literal>, <literal>paddingRight</literal>, <literal>paddingTop</literal> and "
+"<literal>paddingBottom</literal>."
+msgstr ""
+"Le remplissage sur un côté donné peut aussi être spécifié en utilisant "
+"<literal>paddingLeft</literal>, <literal>paddingRight</literal>, "
+"<literal>paddingTop</literal> et <literal>paddingBottom</literal>."
+
+#. Tag: literal
+#: Itext.xml:797
+#, no-c-format
+msgid "useBorderPadding"
+msgstr "useBorderPadding"
+
+#. Tag: literal
+#: Itext.xml:839
+#, no-c-format
+msgid "fixedHeight"
+msgstr "fixedHeight"
+
+#. Tag: literal
+#: Itext.xml:846
+#, no-c-format
+msgid "noWrap"
+msgstr "noWrap"
+
+#. Tag: literal
+#: Itext.xml:853
+#, no-c-format
+msgid "minimumHeight"
+msgstr "minimumHeight"
+
+#. Tag: literal
+#: Itext.xml:860
+#, no-c-format
+msgid "followingIndent"
+msgstr "followingIndent"
+
+#. Tag: literal
+#: Itext.xml:867
+#, no-c-format
+msgid "rightIndent"
+msgstr "rightIndent"
+
+#. Tag: literal
+#: Itext.xml:874
+#, no-c-format
+msgid "spaceCharRatio"
+msgstr "spaceCharRatio"
+
+#. Tag: literal
+#: Itext.xml:888
+#, no-c-format
+msgid "arabicOptions"
+msgstr "arabicOptions"
+
+#. Tag: literal
+#: Itext.xml:895
+#, no-c-format
+msgid "useAscender"
+msgstr "useAscender"
+
+#. Tag: literal
+#: Itext.xml:902
+#, no-c-format
+msgid "grayFill"
+msgstr "grayFill"
+
+#. Tag: title
+#: Itext.xml:921
+#, no-c-format
+msgid "Document Constants"
+msgstr "Constantes de document "
+
+#. Tag: para
+#: Itext.xml:922
+#, no-c-format
+msgid ""
+"This section documents some of the constants shared by attributes on "
+"multiple tags."
+msgstr ""
+"Cette section documente quelques-unes des constantes partagées par les "
+"attributs sur de multiples balises. "
+
+#. Tag: title
+#: Itext.xml:926
+#, no-c-format
+msgid "Color Values"
+msgstr "Valeurs de couleur"
+
+#. Tag: para
+#: Itext.xml:927
+#, no-c-format
+msgid ""
+"Seam documents do not yet support a full color specification. Currently, "
+"only named colors are supported. They are: <literal>white</literal>, "
+"<literal>gray</literal>, <literal>lightgray</literal>, <literal>darkgray</"
+"literal>, <literal>black</literal>, <literal>red</literal>, <literal>pink</"
+"literal>, <literal>yellow</literal>, <literal>green</literal>, "
+"<literal>magenta</literal>, <literal>cyan</literal> and <literal>blue</"
+"literal>."
+msgstr ""
+"Les documents Seam ne prennent pas encore en charge des spécifications de "
+"couleur complètes. Actuellement, seules les couleurs nommées sont "
+"supportées. Elles sont : <literal>white</literal>, <literal>gray</literal>, "
+"<literal>lightgray</literal>, <literal>darkgray</literal>, <literal>black</"
+"literal>, <literal>red</literal>, <literal>pink</literal>, <literal>yellow</"
+"literal>, <literal>green</literal>, <literal>magenta</literal>, "
+"<literal>cyan</literal> et <literal>blue</literal>."
+
+#. Tag: title
+#: Itext.xml:933
+#, no-c-format
+msgid "Alignment Values"
+msgstr "Valeurs d'alignement"
+
+#. Tag: para
+#: Itext.xml:934
+#, no-c-format
+msgid ""
+"Where alignment values are used, the Seam PDF supports the following "
+"horizontal alignment values: <literal>left</literal>, <literal>right</"
+"literal>, <literal>center</literal>, <literal>justify</literal> and "
+"<literal>justifyall</literal>. The vertical alignment values are "
+"<literal>top</literal>, <literal>middle</literal>, <literal>bottom</"
+"literal>, and <literal>baseline</literal>."
+msgstr ""
+"Là où des valeurs d'alignement sont utilisées, le PDF Seam prend en charge "
+"les valeurs d'alignement horizontales suivantes :  <literal>left</literal>, "
+"<literal>right</literal>, <literal>center</literal>, <literal>justify</"
+"literal> et <literal>justifyall</literal>. Les valeurs d'alignement "
+"verticales sont <literal>top</literal>, <literal>middle</literal>, "
+"<literal>bottom</literal>, et <literal>baseline</literal>."
+
+#. Tag: title
+#: Itext.xml:942
+#, no-c-format
+msgid "Configuring iText"
+msgstr "Configuration de iText"
+
+#. Tag: para
+#: Itext.xml:943
+#, no-c-format
+msgid ""
+"Document generation works out of the box with no additional configuration "
+"needed. However, there are a few points of configuration that are needed for "
+"more serious applications."
+msgstr ""
+"La génération de documents fonctionne telle quelle, sans aucune "
+"configuration supplémentaire. Cependant, il y a quelques points de "
+"configuration qui sont nécessaires pour des applications plus critiques. "
+
+#. Tag: para
+#: Itext.xml:946
+#, no-c-format
+msgid ""
+"The default implementation serves PDF documents from a generic URL, "
+"<literal>/seam-doc.seam</literal>. Many browsers (and users) would prefer to "
+"see URLs that contain the actual PDF name like <literal>/myDocument.pdf</"
+"literal>. This capability requires some configuration. To serve PDF files, "
+"all *.pdf resources should be mapped to the Seam Servlet Filter and to the "
+"DocumentStoreServlet:"
+msgstr ""
+"L'implémentation par défaut sert les documents PDF d'un URL générique,"
+"<literal>/seam-doc.seam</literal>. De nombreux navigateurs (et utilisateurs) "
+"préfèreraient voir des URL contenant le nom du PDF réel, comme <literal>/"
+"myDocument.pdf</literal>. Cette fonctionnalité demande une certaine "
+"configuration. Pour servir les fichiers PDF, toutes les ressources *.pdf "
+"devraient être mappées au Seam Servlet Filter et au DocumentStoreServlet :"
+
+#. Tag: programlisting
+#: Itext.xml:949
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.servlet.SeamServletFilter&lt;/filter-"
+"class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;\n"
+"\n"
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.pdf.DocumentStoreServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"\n"
+"&lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+msgstr ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.servlet.SeamServletFilter&lt;/filter-"
+"class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;\n"
+"\n"
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.pdf.DocumentStoreServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"\n"
+"&lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+
+#. Tag: para
+#: Itext.xml:950
+#, no-c-format
+msgid ""
+"The <literal>useExtensions</literal> option on the document store component "
+"completes the functionality by instructing the document store to generate "
+"URLs with the correct filename extension for the document type being "
+"generated."
+msgstr ""
+"L'option <literal>useExtensions</literal> sur le composant du magasin du "
+"document complète la fonctionnalité en indiquant au magasin du document de "
+"générer des URL avec l'extension de nom de fichier correcte pour le type de "
+"document généré. "
+
+#. Tag: programlisting
+#: Itext.xml:953
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pdf=\"http://jboss.com/products/seam/pdf\"&gt;\n"
+"    &lt;pdf:documentStore useExtensions=\"true\" /&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pdf=\"http://jboss.com/products/seam/pdf\"&gt;\n"
+"    &lt;pdf:documentStore useExtensions=\"true\" /&gt;\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Itext.xml:954
+#, no-c-format
+msgid ""
+"Generated documents are stored in conversation scope and will expire when "
+"the conversation ends. At that point, references to the document will be "
+"invalid. To You can specify a default view to be shown when a document does "
+"not exist using the <literal>errorPage</literal> property of the "
+"documentStore."
+msgstr ""
+"Les documents générés sont stockés dans l'étendue de la conversation et "
+"expireront quand la conversation se termine. À ce stade, les références au "
+"document seront invalides. Vous pouvez spécifier une vue par défaut à "
+"afficher quand un document n'existe pas, en utilisant la propriété "
+"<literal>errorPage</literal> du documentStore. "
+
+#. Tag: programlisting
+#: Itext.xml:957
+#, no-c-format
+msgid ""
+"&lt;pdf:documentStore useExtensions=\"true\" errorPage=\"/pdfMissing.seam\" /"
+"&gt;"
+msgstr ""
+"&lt;pdf:documentStore useExtensions=\"true\" errorPage=\"/pdfMissing.seam\" /"
+"&gt;"
+
+#. Tag: title
+#: Itext.xml:961
+#, no-c-format
+msgid "iText links"
+msgstr "Liens iText"
+
+#. Tag: para
+#: Itext.xml:962
+#, no-c-format
+msgid "For further information on iText, see:"
+msgstr "Pour plus d'informations sur iText, consultez :"
+
+#. Tag: ulink
+#: Itext.xml:969
+#, no-c-format
+msgid "iText Home Page"
+msgstr "Page d'accueil iText "
+
+#. Tag: ulink
+#: Itext.xml:974
+#, no-c-format
+msgid "iText in Action"
+msgstr "iText en action"

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Jbpm.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Jbpm.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Jbpm.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1682 @@
+# translation of Jbpm.po to french
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# myriam malga <mmalga at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Jbpm\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2007-08-06 15:00+1000\n"
+"Last-Translator: myriam malga <mmalga at redhat.com>\n"
+"Language-Team: french\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Jbpm.xml:6
+#, no-c-format
+msgid "Pageflows and business processes"
+msgstr "Les flux de page et les processus métier"
+
+#. Tag: para
+#: Jbpm.xml:7
+#, no-c-format
+msgid ""
+"JBoss jBPM is a business process management engine for any Java SE or EE "
+"environment. jBPM lets you represent a business process or user interaction "
+"as a graph of nodes representing wait states, decisions, tasks, web pages, "
+"etc. The graph is defined using a simple, very readable, XML dialect called "
+"jPDL, and may be edited and visualised graphically using an eclipse plugin. "
+"jPDL is an extensible language, and is suitable for a range of problems, "
+"from defining web application page flow, to traditional workflow management, "
+"all the way up to orchestration of services in a SOA environment."
+msgstr ""
+"JBoss jBPM est un moteur de gestion de processus métier pour tout "
+"environnement Java SE ou EE. jBPM vous permet de représenter un processus "
+"métier ou une interaction utilisateur en tant que graphe de noeuds "
+"représentant les états d'attente, décisions, tâches, pages web, etc. Le "
+"graphe est défini à l'aide d'un simple dialect XML très lisible, appelé "
+"jPDL, et il peut être édité et visualisé graphiquement par l'utilisation "
+"d'un plugin Eclipse.jPDL est un langage extensible applicable à de nombreux "
+"problèmes, allant de la définition du flux de page des applications web à la "
+"gestion du flux de production traditionnel, et même jusqu'à l'orchestration "
+"des services dans l'environnement SOA. "
+
+#. Tag: para
+#: Jbpm.xml:10
+#, no-c-format
+msgid "Seam applications use jBPM for two different problems:"
+msgstr "Les applications Seam utilisent jBPM pour deux problèmes différents :"
+
+#. Tag: para
+#: Jbpm.xml:15
+#, no-c-format
+msgid ""
+"Defining the pageflow involved in complex user interactions. A jPDL process "
+"definition defines the page flow for a single conversation. A Seam "
+"conversation is considered to be a relatively short-running interaction with "
+"a single user."
+msgstr ""
+"Définition du flux de page engagé dans des interactions complexes avec "
+"l'utilisateur. Une définition de processus jPDL définit le flux de page pour "
+"une conversation unique. Une conversation Seam est considérée comme une "
+"interaction relativement courte avec un seul utilisateur."
+
+#. Tag: para
+#: Jbpm.xml:20
+#, no-c-format
+msgid ""
+"Defining the overarching business process. The business process may span "
+"multiple conversations with multiple users. Its state is persistent in the "
+"jBPM database, so it is considered long-running. Coordination of the "
+"activities of multiple users is a much more complex problem than scripting "
+"an interaction with a single user, so jBPM offers sophisticated facilities "
+"for task management and dealing with multiple concurrent paths of execution."
+msgstr ""
+"Définition d'un processus métier primordial. Le processus métier peut "
+"s'étendre sur de multiples conversations avec de multiples utilisateurs. Son "
+"état est persistant dans la base de données jBPM, il est donc considéré à "
+"long terme. La coordination des activités d'utilisateurs multiples est un "
+"problème beaucoup plus complexe que l'écriture de scripts d'une interaction "
+"avec un seul utilisateur, ainsi jBPM offre des fonctions sophistiquée pour "
+"la gestion de tâches et le traitement de multiples chemins d'exécution "
+"concurrents."
+
+#. Tag: para
+#: Jbpm.xml:25
+#, fuzzy, no-c-format
+msgid ""
+"Don&#39;t get these two things confused ! They operate at very different "
+"levels or granularity. <emphasis>Pageflow</emphasis>, "
+"<emphasis>conversation</emphasis> and <emphasis>task</emphasis> all refer to "
+"a single interaction with a single user. A business process spans many "
+"tasks. Futhermore, the two applications of jBPM are totally orthogonal. You "
+"can use them together or independently or not at all."
+msgstr ""
+"Ne confondez pas les deux ! Ils opèrent à des niveaux très différents ou "
+"granularité.<emphasis>Flux de page</emphasis>, <emphasis>conversation</"
+"emphasis> et <emphasis>tâche</emphasis> se réfèrent tous à une interaction "
+"unique avec un utilisateur unique. Un processus métier s'étend sur de "
+"nombreuses tâches. Par ailleurs, les deux applications de jBPM sont "
+"totalement orthogonales. Vous pouvez les utiliser ensemble ou indépendamment "
+"ou pas du tout. "
+
+#. Tag: para
+#: Jbpm.xml:28
+#, fuzzy, no-c-format
+msgid ""
+"You don&#39;t have to know jDPL to use Seam. If you&#39;re perfectly happy "
+"defining pageflow using JSF or Seam navigation rules, and if your "
+"application is more data-driven that process-driven, you probably don&#39;t "
+"need jBPM. But we&#39;re finding that thinking of user interaction in terms "
+"of a well-defined graphical representation is helping us build more robust "
+"applications."
+msgstr ""
+"Vous ne devez pas connaître jDPL pour utiliser Seam. Si vous êtes satisfait "
+"d'utiliser JSF ou les règles de navigation Seam pour définir le flux de "
+"page, et si votre application est plus basée sur les données que sur le "
+"processus, vous n'avez sans doute pas besoin de jBPM. Mais nous constatons "
+"que la notion d'interaction avec l'utilisateur en tant que représentation "
+"graphique bien définie, nous aide à construire des applications plus "
+"robustes. "
+
+#. Tag: title
+#: Jbpm.xml:32
+#, no-c-format
+msgid "Pageflow in Seam"
+msgstr "Flux de page dans Seam"
+
+#. Tag: para
+#: Jbpm.xml:33
+#, no-c-format
+msgid "There are two ways to define pageflow in Seam:"
+msgstr "Dans Seam, il y a deux façons de définir le flux de page :"
+
+#. Tag: para
+#: Jbpm.xml:38
+#, no-c-format
+msgid ""
+"Using JSF or Seam navigation rules - the <emphasis>stateless navigation "
+"model</emphasis>"
+msgstr ""
+"En utilisant JSF ou les règles de navigation Seam - le <emphasis>modèle de "
+"navigation stateless</emphasis>"
+
+#. Tag: para
+#: Jbpm.xml:43
+#, no-c-format
+msgid "Using jPDL - the <emphasis>stateful navigation model</emphasis>"
+msgstr ""
+"En utilisant jPDL - le <emphasis>modèle de navigation stateful</emphasis>"
+
+#. Tag: para
+#: Jbpm.xml:48
+#, no-c-format
+msgid ""
+"Very simple applications will only need the stateless navigation model. Very "
+"complex applications will use both models in different places. Each model "
+"has its strengths and weaknesses!"
+msgstr ""
+"Les applications très simples n'utiliseront que le modèle de navigation "
+"stateless. Les applications très complexes utiliseront les deux modèles dans "
+"différents endroits. Chaque modèle a ses avantages et désavantages !"
+
+#. Tag: title
+#: Jbpm.xml:52
+#, no-c-format
+msgid "The two navigation models"
+msgstr "Les deux modèles de navigation "
+
+#. Tag: para
+#: Jbpm.xml:53
+#, no-c-format
+msgid ""
+"The stateless model defines a mapping from a set of named, logical outcomes "
+"of an event directly to the resulting page of the view. The navigation rules "
+"are entirely oblivious to any state held by the application other than what "
+"page was the source of the event. This means that your action listener "
+"methods must sometimes make decisions about the page flow, since only they "
+"have access to the current state of the application."
+msgstr ""
+"Le modèle stateless définit l'association d'un ensemble de résultats nommés "
+"et logiques d'un évènement directement vers la page résultant de "
+"l'affichage. Les règles de navigation font entièrement abstraction de tout "
+"état contenu dans l'application, autre que la page étant la source de "
+"l'évènement. Cela signifie que vos méthodes de listener d'actions doivent "
+"quelquefois prendre des décisions sur le flux de page, puisqu'elles seules "
+"ont accès à l'état actuel de l'application."
+
+#. Tag: para
+#: Jbpm.xml:56
+#, no-c-format
+msgid "Here is an example page flow definition using JSF navigation rules:"
+msgstr ""
+"Voici un exemple de définition de flux de page avec les règles de navigation "
+"JSF :"
+
+#. Tag: programlisting
+#: Jbpm.xml:59
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"    &lt;from-view-id&gt;/numberGuess.jsp&lt;/from-view-id&gt;\n"
+"        \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;guess&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/numberGuess.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;win&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/win.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"        \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;lose&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/lose.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+"&lt;navigation-rule&gt;\n"
+"    &lt;from-view-id&gt;/numberGuess.jsp&lt;/from-view-id&gt;\n"
+"        \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;guess&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/numberGuess.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;win&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/win.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"        \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;lose&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/lose.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"&lt;/navigation-rule&gt;"
+
+#. Tag: para
+#: Jbpm.xml:60
+#, no-c-format
+msgid ""
+"Here is the same example page flow definition using Seam navigation rules:"
+msgstr ""
+"Voici le même exemple de définition de flux de page avec les règles de "
+"navigation Seam :"
+
+#. Tag: programlisting
+#: Jbpm.xml:63
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/numberGuess.jsp\"&gt;\n"
+"        \n"
+"    &lt;navigation&gt;\n"
+"        &lt;rule if-outcome=\"guess\"&gt;\n"
+"            &lt;redirect view-id=\"/numberGuess.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"        &lt;rule if-outcome=\"win\"&gt;\n"
+"            &lt;redirect view-id=\"/win.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"        &lt;rule if-outcome=\"lose\"&gt;\n"
+"            &lt;redirect view-id=\"/lose.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+"&lt;page view-id=\"/numberGuess.jsp\"&gt;\n"
+"        \n"
+"    &lt;navigation&gt;\n"
+"        &lt;rule if-outcome=\"guess\"&gt;\n"
+"            &lt;redirect view-id=\"/numberGuess.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"        &lt;rule if-outcome=\"win\"&gt;\n"
+"            &lt;redirect view-id=\"/win.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"        &lt;rule if-outcome=\"lose\"&gt;\n"
+"            &lt;redirect view-id=\"/lose.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"&lt;/navigation-rule&gt;"
+
+#. Tag: para
+#: Jbpm.xml:64
+#, no-c-format
+msgid ""
+"If you find navigation rules overly verbose, you can return view ids "
+"directly from your action listener methods:"
+msgstr ""
+"Si vous trouvez les règles de navigation trop détaillées, vous pouvez "
+"retournez des ids d'affichage directement depuis vos méthodes de listener "
+"d'actions :"
+
+#. Tag: programlisting
+#: Jbpm.xml:67
+#, no-c-format
+msgid ""
+"public String guess() {\n"
+"    if (guess==randomNumber) return \"/win.jsp\";\n"
+"    if (++guessCount==maxGuesses) return \"/lose.jsp\";\n"
+"    return null;\n"
+"}"
+msgstr ""
+"public String guess() {\n"
+"    if (guess==randomNumber) return \"/win.jsp\";\n"
+"    if (++guessCount==maxGuesses) return \"/lose.jsp\";\n"
+"    return null;\n"
+"}"
+
+#. Tag: para
+#: Jbpm.xml:68
+#, no-c-format
+msgid ""
+"Note that this results in a redirect. You can even specify parameters to be "
+"used in the redirect:"
+msgstr ""
+"Notez que cela entraîne une redirection. Vous pouvez même spécifier les "
+"paramètres à utiliser dans la redirection :"
+
+#. Tag: programlisting
+#: Jbpm.xml:71
+#, no-c-format
+msgid ""
+"public String search() {\n"
+"    return \"/searchResults.jsp?searchPattern=#{searchAction.searchPattern}"
+"\";\n"
+"}"
+msgstr ""
+"public String search() {\n"
+"    return \"/searchResults.jsp?searchPattern=#{searchAction.searchPattern}"
+"\";\n"
+"}"
+
+#. Tag: para
+#: Jbpm.xml:72
+#, no-c-format
+msgid ""
+"The stateful model defines a set of transitions between a set of named, "
+"logical application states. In this model, it is possible to express the "
+"flow of any user interaction entirely in the jPDL pageflow definition, and "
+"write action listener methods that are completely unaware of the flow of the "
+"interaction."
+msgstr ""
+"Le modèle stateful définit un ensemble de transitions entre un ensemle "
+"d'états d'application logiques et nommés. Dans ce modèle, il est possible "
+"d'exprimer le flux de toute interaction utilisateur entièrement dans la "
+"définition de flux de page jPDL et écrire les méthodes de listener d'actions "
+"qui font complètement abstraction du flux de l'interaction. "
+
+#. Tag: para
+#: Jbpm.xml:75
+#, no-c-format
+msgid "Here is an example page flow definition using jPDL:"
+msgstr "Voici un exemple de définition de flux de page avec jPDL :"
+
+#. Tag: programlisting
+#: Jbpm.xml:78
+#, fuzzy, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"numberGuess\"&gt;\n"
+"    \n"
+"   &lt;start-page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"              &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"      &lt;/transition&gt;\n"
+"   &lt;/start-page&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess."
+"correctGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateRemainingGuesses\" expression=\"#{numberGuess."
+"lastGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"lose\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"displayGuess\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"lose\" view-id=\"/lose.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+"&lt;pageflow-definition name=\"numberGuess\"&gt;\n"
+"    \n"
+"   &lt;start-page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"      &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"      &lt;/transition&gt;\n"
+"   &lt;/start-page&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess."
+"correctGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateRemainingGuesses\" expression=\"#{numberGuess."
+"lastGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"lose\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"displayGuess\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"lose\" view-id=\"/lose.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+
+#. Tag: para
+#: Jbpm.xml:87
+#, no-c-format
+msgid "There are two things we notice immediately here:"
+msgstr "Dans ce cas, il y a deux choses que nous remarquons immédiatement :"
+
+#. Tag: para
+#: Jbpm.xml:92
+#, no-c-format
+msgid ""
+"The JSF/Seam navigation rules are <emphasis>much</emphasis> simpler. "
+"(However, this obscures the fact that the underlying Java code is more "
+"complex.)"
+msgstr ""
+"Les règles de navigation JSF/Seam sont <emphasis>beaucoup</emphasis> plus "
+"simples. (Toutefois, cela cache le fait que le code Java sous-jacent est "
+"plus complexe.)"
+
+#. Tag: para
+#: Jbpm.xml:97
+#, no-c-format
+msgid ""
+"The jPDL makes the user interaction immediately understandable, without us "
+"needing to even look at the JSP or Java code."
+msgstr ""
+"Le jPDL rend l'interaction de l'utilisateur immédiatement compréhensible, "
+"sans que nous ayons même besoin de regarder le JSP ou le code Java. "
+
+#. Tag: para
+#: Jbpm.xml:102
+#, no-c-format
+msgid ""
+"In addition, the stateful model is more <emphasis>constrained</emphasis>. "
+"For each logical state (each step in the page flow), there are a constrained "
+"set of possible transitions to other states. The stateless model is an "
+"<emphasis>ad hoc</emphasis> model which is suitable to relatively "
+"unconstrained, freeform navigation where the user decides where he/she wants "
+"to go next, not the application."
+msgstr ""
+"Par ailleurs, le modèle stateful est plus <emphasis>limité</emphasis>. Pour "
+"chaque état logique (chaque étape dans le flux de page), il y a un ensemble "
+"limité de transactions possibles vers d'autres états. Le modèle stateless "
+"est un modèle <emphasis>ad hoc</emphasis> qui est approprié pour une "
+"navigation relativement peu limitée et en structure libre, où l'utilisateur "
+"décide de là où il veut aller, et non pas l'application. "
+
+#. Tag: para
+#: Jbpm.xml:105
+#, no-c-format
+msgid ""
+"The stateful/stateless navigation distinction is quite similar to the "
+"traditional view of modal/modeless interaction. Now, Seam applications are "
+"not usually modal in the simple sense of the word - indeed, avoiding "
+"application modal behavior is one of the main reasons for having "
+"conversations! However, Seam applications can be, and often are, modal at "
+"the level of a particular conversation. It is well-known that modal behavior "
+"is something to avoid as much as possible; it is very difficult to predict "
+"the order in which your users are going to want to do things! However, there "
+"is no doubt that the stateful model has its place."
+msgstr ""
+"La distinction entre la navigation stateful/stateless est assez semblable à "
+"la notion traditionnelle d'interaction modal/modeless. Maintenant, les "
+"applications Seam ne sont pas généralement modales dans le sens simple du "
+"terme - en réalité, éviter le comportement modal des applications est une "
+"des raisons principales de l'utilisation des conversations ! Toutefois les "
+"applications Seam peuvent être et sont souvent modales au niveau d'une "
+"conversation particulière. Il est bien connu que le comportement modal est à "
+"éviter le plus possible ; il est difficile de prédire l'ordre dans lequel "
+"vos utilisateurs vont choisir de faire les choses ! Toutefois, il n'y a "
+"aucun doute que le modèle stateful a sa place. "
+
+#. Tag: para
+#: Jbpm.xml:108
+#, no-c-format
+msgid ""
+"The biggest contrast between the two models is the back-button behavior."
+msgstr ""
+"Le plus grand contraste entre les deux modèles est le comportement du bouton "
+"retour."
+
+#. Tag: title
+#: Jbpm.xml:114
+#, no-c-format
+msgid "Seam and the back button"
+msgstr "Seam et le bouton retour"
+
+#. Tag: para
+#: Jbpm.xml:115
+#, no-c-format
+msgid ""
+"When JSF or Seam navigation rules are used, Seam lets the user freely "
+"navigate via the back, forward and refresh buttons. It is the responsibility "
+"of the application to ensure that conversational state remains internally "
+"consistent when this occurs. Experience with the combination of web "
+"application frameworks like Struts or WebWork - that do not support a "
+"conversational model - and stateless component models like EJB stateless "
+"session beans or the Spring framework has taught many developers that this "
+"is close to impossible to do! However, our experience is that in the context "
+"of Seam, where there is a well-defined conversational model, backed by "
+"stateful session beans, it is actually quite straightforward. Usually it is "
+"as simple as combining the use of <literal>no-conversation-view-id</literal> "
+"with null checks at the beginning of action listener methods. We consider "
+"support for freeform navigation to be almost always desirable."
+msgstr ""
+"Quand JSF ou les règles de navigation Seam sont utilisés, Seam permet à "
+"l'utilisateur de naviguer via les boutons retour, avancer ou rafraîchir. "
+"C'est la responsabilité de l'application d'assurer que l'état de "
+"conversation reste cohérent intérieurement quand cela a lieu. L'expérience "
+"avec la combinaison de frameworks d'application web, comme Struts ou WebWork "
+"- qui ne prennent pas en charge un modèle de conversation - et les modèles "
+"de composant stateless, comme les beans session stateless EJB ou le "
+"framework Spring, a appris aux développeurs que cela est presque impossible "
+"à réaliser !Toutefois, notre expérience montre que dans le contexte de Seam, "
+"là où il existe un modèle de conversation bien défini, avec le support de "
+"beans session stateful, cela est relativement simple. En général, c'est "
+"aussi simple que de combiner l'utilisation de <literal>no-conversation-view-"
+"id</literal> avec des vérifications nulles au commencement de méthodes de "
+"listener d'actions. Nous considérons que le support pour la navigation libre "
+"est presque toujours préférable. "
+
+#. Tag: para
+#: Jbpm.xml:118
+#, no-c-format
+msgid ""
+"In this case, the <literal>no-conversation-view-id</literal> declaration "
+"goes in <literal>pages.xml</literal>. It tells Seam to redirect to a "
+"different page if a request originates from a page rendered during a "
+"conversation, and that conversation no longer exists:"
+msgstr ""
+"Dans ce cas, la déclaration <literal>no-conversation-view-id</literal> va "
+"dans <literal>pages.xml</literal>. Elle indique à Seam de rediriger vers une "
+"page différente si une requête vient d'une page affichée durant une "
+"conversation et que cette conversation n'existe plus :"
+
+#. Tag: programlisting
+#: Jbpm.xml:121
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/checkout.xhtml\" \n"
+"        no-conversation-view-id=\"/main.xhtml\"/&gt;"
+msgstr ""
+"&lt;page view-id=\"/checkout.xhtml\" \n"
+"        no-conversation-view-id=\"/main.xhtml\"/&gt;"
+
+#. Tag: para
+#: Jbpm.xml:122
+#, fuzzy, no-c-format
+msgid ""
+"On the other hand, in the stateful model, backbuttoning is interpreted as an "
+"undefined transition back to a previous state. Since the stateful model "
+"enforces a defined set of transitions from the current state, back buttoning "
+"is be default disallowed in the stateful model! Seam transparently detects "
+"the use of the back button, and blocks any attempt to perform an action from "
+"a previous, \"stale\" page, and simply redirects the user to the \"current\" "
+"page (and displays a faces message). Whether you consider this a feature or "
+"a limitation of the stateful model depends upon your point of view: as an "
+"application developer, it is a feature; as a user, it might be frustrating! "
+"You can enable backbutton navigation from a particular page node by setting "
+"<literal>back=\"enabled\"</literal>."
+msgstr ""
+"Par ailleurs, dans le modèle stateful, l'utilisation du bouton retour est "
+"interprétée en tant que transition non définie vers un état précédent. Étant "
+"donné que le modèle stateful applique un ensemblede transitions défini du "
+"modèle actuel, l'utilisation du bouton retour est default disallowed dans le "
+"modèle stateful ! Seam détecte de façon transparente, l'utilisation du "
+"bouton retour et bloque tout effort d'effectuer une action depuis une page "
+"\"périmée\" précédente et redirige simplement l'utilisateur vers la page "
+"\"actuelle\" (et affiche un message faces). À vous de voir si vous "
+"considériez cela comme un avantage ou une limitation du modèle stateful : en "
+"tant que développeur d'applications, c'est un avantage, en tant "
+"qu'utilisateur, cela peut être frustrant ! Vous pouvez activer la navigation "
+"avec le bouton retour à partir d'un noeud de page particulier en définissant "
+"<literal>back=\"enabled\"</literal>."
+
+#. Tag: programlisting
+#: Jbpm.xml:125
+#, no-c-format
+msgid ""
+"&lt;page name=\"checkout\" \n"
+"        view-id=\"/checkout.xhtml\" \n"
+"        back=\"enabled\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"checkout\"/&gt;\n"
+"    &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page name=\"checkout\" \n"
+"        view-id=\"/checkout.xhtml\" \n"
+"        back=\"enabled\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"checkout\"/&gt;\n"
+"    &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Jbpm.xml:126
+#, no-c-format
+msgid ""
+"This allows backbuttoning <emphasis>from</emphasis> the <literal>checkout</"
+"literal> state to <emphasis>any previous state!</emphasis>"
+msgstr ""
+"Cela permet l'utilisation du bouton retour <emphasis>depuis</emphasis> "
+"l'état de <literal>vérification</literal> à <emphasis>tout état précédent !</"
+"emphasis>"
+
+#. Tag: para
+#: Jbpm.xml:129
+#, no-c-format
+msgid ""
+"Of course, we still need to define what happens if a request originates from "
+"a page rendered during a pageflow, and the conversation with the pageflow no "
+"longer exists. In this case, the <literal>no-conversation-view-id</literal> "
+"declaration goes into the pageflow definition:"
+msgstr ""
+"Évidemment, nous devons encore définir ce qui se passe quand une requête "
+"vient d'une page affichée durant un flux de page, et quand la conversation "
+"avec le flux de page n'existe plus. Dans ce cas, la déclaration <literal>no-"
+"conversation-view-id</literal> va dans la définition du flux de page :"
+
+#. Tag: programlisting
+#: Jbpm.xml:132
+#, no-c-format
+msgid ""
+"&lt;page name=\"checkout\" \n"
+"        view-id=\"/checkout.xhtml\" \n"
+"        back=\"enabled\" \n"
+"        no-conversation-view-id=\"/main.xhtml\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"checkout\"/&gt;\n"
+"    &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page name=\"checkout\" \n"
+"        view-id=\"/checkout.xhtml\" \n"
+"        back=\"enabled\" \n"
+"        no-conversation-view-id=\"/main.xhtml\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"checkout\"/&gt;\n"
+"    &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Jbpm.xml:134
+#, fuzzy, no-c-format
+msgid ""
+"In practice, both navigation models have their place, and you&#39;ll quickly "
+"learn to recognize when to prefer one model over the other."
+msgstr ""
+"En pratique, les deux modèles de navigation ont leur place, et vous "
+"reconnaîtrez rapidement quand utiliser l'un ou l'autre modèle."
+
+#. Tag: title
+#: Jbpm.xml:142
+#, no-c-format
+msgid "Using jPDL pageflows"
+msgstr "Utilisation des flux de page jPDL"
+
+#. Tag: title
+#: Jbpm.xml:144
+#, no-c-format
+msgid "Installing pageflows"
+msgstr "Installation des flux de page"
+
+#. Tag: para
+#: Jbpm.xml:145
+#, no-c-format
+msgid ""
+"We need to install the Seam jBPM-related components, and tell them where to "
+"find our pageflow definition. We can specify this Seam configuration in "
+"<literal>components.xml</literal>."
+msgstr ""
+"Nous devons installer les composants associés au jBPM Seam, et leur indiquer "
+"où trouver notre définition de flux de page. Nous pouvons spécifier cette "
+"configuration Seam dans <literal>components.xml</literal>."
+
+#. Tag: programlisting
+#: Jbpm.xml:148
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:pageflow-definitions&gt;\n"
+"        &lt;value&gt;pageflow.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:pageflow-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:pageflow-definitions&gt;\n"
+"        &lt;value&gt;pageflow.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:pageflow-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+
+#. Tag: para
+#: Jbpm.xml:149
+#, no-c-format
+msgid ""
+"The first line installs jBPM, the second points to a jPDL-based pageflow "
+"definition."
+msgstr ""
+"La première ligne installe jBPM, la seconde pointe vers une définition de "
+"flux de page, basé sur jPDL."
+
+#. Tag: title
+#: Jbpm.xml:155
+#, no-c-format
+msgid "Starting pageflows"
+msgstr "Commencer les flux de page"
+
+#. Tag: para
+#: Jbpm.xml:156
+#, no-c-format
+msgid ""
+"We \"start\" a jPDL-based pageflow by specifying the name of the process "
+"definition using a <literal>@Begin</literal>, <literal>@BeginTask</literal> "
+"or <literal>@StartTask</literal> annotation:"
+msgstr ""
+"Nous \"commençons\" un flux de page, basé sur jPDL en spécifiant le nom de "
+"la définition du processus, en utilisant un <literal>@Begin</literal>, "
+"<literal>@BeginTask</literal> ou une annotation <literal>@StartTask</"
+"literal> :"
+
+#. Tag: programlisting
+#: Jbpm.xml:159
+#, no-c-format
+msgid ""
+"@Begin(pageflow=\"numberguess\")\n"
+"public void begin() { ... }"
+msgstr ""
+"@Begin(pageflow=\"numberguess\")\n"
+"public void begin() { ... }"
+
+#. Tag: para
+#: Jbpm.xml:160
+#, no-c-format
+msgid "Alternatively we can start a pageflow using pages.xml:"
+msgstr ""
+"Alternativement nous pouvons commencer un flux de page à l'aide de pages."
+"xml :"
+
+#. Tag: programlisting
+#: Jbpm.xml:163
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"        &lt;begin-conversation pageflow=\"numberguess\"/&gt;\n"
+"    &lt;/page&gt;"
+msgstr ""
+"&lt;page&gt;\n"
+"        &lt;begin-conversation pageflow=\"numberguess\"/&gt;\n"
+"    &lt;/page&gt;"
+
+#. Tag: para
+#: Jbpm.xml:164
+#, no-c-format
+msgid ""
+"If we are beginning the pageflow during the <literal>RENDER_RESPONSE</"
+"literal> phase&mdash;during a <literal>@Factory</literal> or "
+"<literal>@Create</literal> method, for example&mdash;we consider ourselves "
+"to be already at the page being rendered, and use a <literal>&lt;start-"
+"page&gt;</literal> node as the first node in the pageflow, as in the example "
+"above."
+msgstr ""
+"Si nous commençons le flux de page durant la phase <literal>RENDER_RESPONSE</"
+"literal>&mdash;durant une méthode <literal>@Factory</literal> ou "
+"<literal>@Create</literal>, par exemple - nous considérons que nous sommes "
+"déjà à la page affichée, et utilisons un noeud <literal>&lt;start-page&gt;</"
+"literal> comme le premier noeud dans le flux de page, comme dans l'exemple "
+"ci-dessus. "
+
+#. Tag: para
+#: Jbpm.xml:167
+#, no-c-format
+msgid ""
+"But if the pageflow is begun as the result of an action listener invocation, "
+"the outcome of the action listener determines which is the first page to be "
+"rendered. In this case, we use a <literal>&lt;start-state&gt;</literal> as "
+"the first node in the pageflow, and declare a transition for each possible "
+"outcome:"
+msgstr ""
+"Mais si le flux de page est commencé, comme le résultat d'une invocation à "
+"un listener d'actions, le résultat du listener d'actions détermine la "
+"première page à afficher. Dans ce cas, nous utilisons un <literal>&lt;start-"
+"state&gt;</literal> en tant que premier noeud dans le flux de page et "
+"déclarons une transition pour chaque résultat possible :"
+
+#. Tag: programlisting
+#: Jbpm.xml:170
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"viewEditDocument\"&gt;\n"
+"\n"
+"    &lt;start-state name=\"start\"&gt;\n"
+"        &lt;transition name=\"documentFound\" to=\"displayDocument\"/&gt;\n"
+"        &lt;transition name=\"documentNotFound\" to=\"notFound\"/&gt;\n"
+"    &lt;/start-state&gt;\n"
+"    \n"
+"    &lt;page name=\"displayDocument\" view-id=\"/document.jsp\"&gt;\n"
+"        &lt;transition name=\"edit\" to=\"editDocument\"/&gt;\n"
+"        &lt;transition name=\"done\" to=\"main\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"    \n"
+"    ...\n"
+"    \n"
+"    &lt;page name=\"notFound\" view-id=\"/404.jsp\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"    &lt;/page&gt;\n"
+"    \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+"&lt;pageflow-definition name=\"viewEditDocument\"&gt;\n"
+"\n"
+"    &lt;start-state name=\"start\"&gt;\n"
+"        &lt;transition name=\"documentFound\" to=\"displayDocument\"/&gt;\n"
+"        &lt;transition name=\"documentNotFound\" to=\"notFound\"/&gt;\n"
+"    &lt;/start-state&gt;\n"
+"    \n"
+"    &lt;page name=\"displayDocument\" view-id=\"/document.jsp\"&gt;\n"
+"        &lt;transition name=\"edit\" to=\"editDocument\"/&gt;\n"
+"        &lt;transition name=\"done\" to=\"main\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"    \n"
+"    ...\n"
+"    \n"
+"    &lt;page name=\"notFound\" view-id=\"/404.jsp\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"    &lt;/page&gt;\n"
+"    \n"
+"&lt;/pageflow-definition&gt;"
+
+#. Tag: title
+#: Jbpm.xml:174
+#, no-c-format
+msgid "Page nodes and transitions"
+msgstr "Noeuds de page et transitions"
+
+#. Tag: para
+#: Jbpm.xml:175
+#, no-c-format
+msgid ""
+"Each <literal>&lt;page&gt;</literal> node represents a state where the "
+"system is waiting for user input:"
+msgstr ""
+"Chaque noeud <literal>&lt;page&gt;</literal> représente un état où le "
+"système attend les entrées de l'utilisateur :"
+
+#. Tag: programlisting
+#: Jbpm.xml:178
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"        &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"        &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Jbpm.xml:179
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>view-id</literal> is the JSF view id. The <literal>&lt;redirect/"
+"&gt;</literal> element has the same effect as <literal>&lt;redirect/&gt;</"
+"literal> in a JSF navigation rule: namely, a post-then-redirect behavior, to "
+"overcome problems with the browser&#39;s refresh button. (Note that Seam "
+"propagates conversation contexts over these browser redirects. So there is "
+"no need for a Ruby on Rails style \"flash\" construct in Seam!)"
+msgstr ""
+"Le <literal>view-id</literal> est l'id de l'affichage JSF. L'élément "
+"<literal>&lt;redirect/&gt;</literal> a le même effet que <literal>&lt;"
+"redirect/&gt;</literal> dans une règle de navigation JSF : c'est-à-dire, un "
+"comportement poster-et-rediriger, pour résoudre les problèmes avec les "
+"boutouns rafraîchir du navigateur. (Notez que Seam propage les contextes de "
+"conversation sur ces redirections de navigateur. Dans Seam, il n'y a donc "
+"pas besoin d'un concept\"flash\" style Ruby on Rails !)"
+
+#. Tag: para
+#: Jbpm.xml:182
+#, no-c-format
+msgid ""
+"The transition name is the name of a JSF outcome triggered by clicking a "
+"command button or command link in <literal>numberGuess.jsp</literal>."
+msgstr ""
+"Le nom de la transition est le nom d'un résultat JSF, déclenché en cliquant "
+"un bouton de commande ou un lien de commande dans <literal>numberGuess.jsp</"
+"literal>."
+
+#. Tag: programlisting
+#: Jbpm.xml:185
+#, no-c-format
+msgid ""
+"&lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"guess\"/&gt;"
+msgstr ""
+"&lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"guess\"/&gt;"
+
+#. Tag: para
+#: Jbpm.xml:186
+#, no-c-format
+msgid ""
+"When the transition is triggered by clicking this button, jBPM will activate "
+"the transition action by calling the <literal>guess()</literal> method of "
+"the <literal>numberGuess</literal> component. Notice that the syntax used "
+"for specifying actions in the jPDL is just a familiar JSF EL expression, and "
+"that the transition action handler is just a method of a Seam component in "
+"the current Seam contexts. So we have exactly the same event model for jBPM "
+"events that we already have for JSF events! (The <emphasis>One Kind of "
+"Stuff</emphasis> principle.)"
+msgstr ""
+"Quand la transition est déclenchée en cliquant sur ce bouton, jBPM active "
+"l'action de transition en appelant la méthode <literal>guess()</literal> du "
+"composant <literal>numberGuess</literal>. Notez que la syntaxe utilisée pour "
+"spécifier les actions dans le jPDL est juste une expression connue JSF EL et "
+"que le gestionnaire d'actions de transition est juste une méthode de "
+"composant Seam dans les contextes Seam actuels. Nous avons donc exactement "
+"le même modèle d'évènements pour les évènements jBPM que celui que nous "
+"avons déjà pour les évènements JSF ! (Le principe <emphasis>One Kind of "
+"Stuff</emphasis>.)"
+
+#. Tag: para
+#: Jbpm.xml:189
+#, no-c-format
+msgid ""
+"In the case of a null outcome (for example, a command button with no "
+"<literal>action</literal> defined), Seam will signal the transition with no "
+"name if one exists, or else simply redisplay the page if all transitions "
+"have names. So we could slightly simplify our example pageflow and this "
+"button:"
+msgstr ""
+"Dans le cas d'un résultat nulle (par exemple, un bouton de commande, sans "
+"aucune<literal>action</literal> définie), Seam signale la transition sans "
+"nom s'il en existe une, ou bien il affiche simplement la page si toutes les "
+"transitions ont des noms. Nous pourrions donc quelque peu simplifier notre "
+"exemple de flux de page et ce bouton :"
+
+#. Tag: programlisting
+#: Jbpm.xml:192
+#, no-c-format
+msgid "&lt;h:commandButton type=\"submit\" value=\"Guess\"/&gt;"
+msgstr "&lt;h:commandButton type=\"submit\" value=\"Guess\"/&gt;"
+
+#. Tag: para
+#: Jbpm.xml:193
+#, no-c-format
+msgid "Would fire the following un-named transition:"
+msgstr "exécuterait la transition non-nommée suivante :"
+
+#. Tag: programlisting
+#: Jbpm.xml:196
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"evaluateGuess\"&gt;\n"
+"        &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"evaluateGuess\"&gt;\n"
+"        &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Jbpm.xml:197
+#, no-c-format
+msgid ""
+"It is even possible to have the button call an action method, in which case "
+"the action outcome will determine the transition to be taken:"
+msgstr ""
+"Il est même possible de faire en sorte que le button appelle une méthode "
+"d'action, dans ce cas le résultat de l'action détermine la transition à "
+"prendre :"
+
+#. Tag: programlisting
+#: Jbpm.xml:200
+#, no-c-format
+msgid ""
+"&lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"#{numberGuess."
+"guess}\"/&gt;"
+msgstr ""
+"&lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"#{numberGuess."
+"guess}\"/&gt;"
+
+#. Tag: programlisting
+#: Jbpm.xml:201
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;transition name=\"correctGuess\" to=\"win\"/&gt;\n"
+"    &lt;transition name=\"incorrectGuess\" to=\"evaluateGuess\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;transition name=\"correctGuess\" to=\"win\"/&gt;\n"
+"    &lt;transition name=\"incorrectGuess\" to=\"evaluateGuess\"/&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Jbpm.xml:202
+#, no-c-format
+msgid ""
+"However, this is considered an inferior style, since it moves responsibility "
+"for controlling the flow out of the pageflow definition and back into the "
+"other components. It is much better to centralize this concern in the "
+"pageflow itself."
+msgstr ""
+"Cependant, cela est considéré comme un style inférieur, étant donné qu'il "
+"déplace la responsabilité de contrôler le flux vers la définition du flux de "
+"page et vers d'autres composants. Il est préférable de centraliser cette "
+"préoccupation dans le flux de page lui-même. "
+
+#. Tag: title
+#: Jbpm.xml:208
+#, no-c-format
+msgid "Controlling the flow"
+msgstr "Contrôle du flux"
+
+#. Tag: para
+#: Jbpm.xml:209
+#, fuzzy, no-c-format
+msgid ""
+"Usually, we don&#39;t need the more powerful features of jPDL when defining "
+"pageflows. We do need the <literal>&lt;decision&gt;</literal> node, however:"
+msgstr ""
+"Généralement, nous n'avons pas besoin des fonctions puissantes de jPDL quand "
+"nous définissons les flux de page. Nous n'avons pas besoin du noeud "
+"<literal>&lt;decision&gt;</literal>, toutefois :"
+
+#. Tag: programlisting
+#: Jbpm.xml:212
+#, no-c-format
+msgid ""
+"&lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess.correctGuess}"
+"\"&gt;\n"
+"    &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"    &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"&lt;/decision&gt;"
+msgstr ""
+"&lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess.correctGuess}"
+"\"&gt;\n"
+"    &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"    &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"&lt;/decision&gt;"
+
+#. Tag: para
+#: Jbpm.xml:213
+#, no-c-format
+msgid ""
+"A decision is made by evaluating a JSF EL expression in the Seam contexts."
+msgstr ""
+"Une décision est prise en évaluant l'expression JSF EL dans les contextes "
+"Seam."
+
+#. Tag: title
+#: Jbpm.xml:219
+#, no-c-format
+msgid "Ending the flow"
+msgstr "Terminer le flux"
+
+#. Tag: para
+#: Jbpm.xml:220
+#, no-c-format
+msgid ""
+"We end the conversation using <literal>&lt;end-conversation&gt;</literal> or "
+"<literal>@End</literal>. (In fact, for readability, use of <emphasis>both</"
+"emphasis> is encouraged.)"
+msgstr ""
+"Nous terminons la conversation à l'aide de <literal>&lt;end-conversation&gt;"
+"</literal> ou <literal>@End</literal>. (En définitive, pour la lisibilité, "
+"il est recommandé d'utiliser <emphasis>les deux</emphasis>.)"
+
+#. Tag: programlisting
+#: Jbpm.xml:223
+#, no-c-format
+msgid ""
+"&lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;end-conversation/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;end-conversation/&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Jbpm.xml:224
+#, no-c-format
+msgid ""
+"Optionally, we can end a task, specify a jBPM <literal>transition</literal> "
+"name. In this case, Seam will signal the end of the current task in the "
+"overarching business process."
+msgstr ""
+"Alternativement, nous pouvons terminer une tâche, spécifier un nom de "
+"<literal>transition</literal> jBPM. Dans ce cas, Seam signale la fin de la "
+"tâche actuelle dans le processus métier primordial."
+
+#. Tag: programlisting
+#: Jbpm.xml:227
+#, no-c-format
+msgid ""
+"&lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;end-task transition=\"success\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;end-task transition=\"success\"/&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: title
+#: Jbpm.xml:233
+#, no-c-format
+msgid "Business process management in Seam"
+msgstr "Gestion du processus métier dans Seam"
+
+#. Tag: para
+#: Jbpm.xml:234
+#, fuzzy, no-c-format
+msgid ""
+"A business process is a well-defined set of tasks that must be performed by "
+"users or software systems according to well-defined rules about "
+"<emphasis>who</emphasis> can perform a task, and <emphasis>when</emphasis> "
+"it should be performed. Seam&#39;s jBPM integration makes it easy to display "
+"lists of tasks to users and let them manage their tasks. Seam also lets the "
+"application store state associated with the business process in the "
+"<literal>BUSINESS_PROCESS</literal> context, and have that state made "
+"persistent via jBPM variables."
+msgstr ""
+"Un processus métier est un ensemble de tâches, bien définies qui doivent "
+"être effectuées par les utilisateurs ou les systèmes logiciels selon des "
+"règles bien définies, sur <emphasis>qui</emphasis> peut effectuer une tâche, "
+"et <emphasis>quand</emphasis> elle devrait être effectuée. L'intégration "
+"jBPM de Seam facilite l'affichage des listes de tâches pour les utilisateurs "
+"et leur permet de gérer leurs tâches. Seam permet également à l'application "
+"de stocker l'état associé au processus métier dans le contexte "
+"<literal>BUSINESS_PROCESS</literal> et de rendre l'état persistant, via les "
+"variables jBPM."
+
+#. Tag: para
+#: Jbpm.xml:237
+#, no-c-format
+msgid ""
+"A simple business process definition looks much the same as a page flow "
+"definition (<emphasis>One Kind of Stuff</emphasis>), except that instead of "
+"<literal>&lt;page&gt;</literal> nodes, we have <literal>&lt;task-node&gt;</"
+"literal> nodes. In a long-running business process, the wait states are "
+"where the system is waiting for some user to log in and perform a task."
+msgstr ""
+"Une simple définition de processus métier ressemble beaucoup à une "
+"définition de flux de page (<emphasis>One Kind of Stuff</emphasis>), sauf "
+"qu'au lieu des noeuds <literal>&lt;page&gt;</literal>, nous avons les noeuds "
+"<literal>&lt;task-node&gt;</literal>. Dans un processus métier long, les "
+"états d'attente sont où le système attend que des utilisateurs se connectent "
+"et effectuent une tâche. "
+
+#. Tag: programlisting
+#: Jbpm.xml:240
+#, no-c-format
+msgid ""
+"&lt;process-definition name=\"todo\"&gt;\n"
+"   \n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"todo\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;task-node name=\"todo\"&gt;\n"
+"      &lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"         &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"      &lt;/task&gt;\n"
+"      &lt;transition to=\"done\"/&gt;\n"
+"   &lt;/task-node&gt;\n"
+"   \n"
+"   &lt;end-state name=\"done\"/&gt;\n"
+"   \n"
+"&lt;/process-definition&gt;"
+msgstr ""
+"&lt;process-definition name=\"todo\"&gt;\n"
+"   \n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"todo\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;task-node name=\"todo\"&gt;\n"
+"      &lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"         &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"      &lt;/task&gt;\n"
+"      &lt;transition to=\"done\"/&gt;\n"
+"   &lt;/task-node&gt;\n"
+"   \n"
+"   &lt;end-state name=\"done\"/&gt;\n"
+"   \n"
+"&lt;/process-definition&gt;"
+
+#. Tag: para
+#: Jbpm.xml:251
+#, no-c-format
+msgid ""
+"It is perfectly possible that we might have both jPDL business process "
+"definitions and jPDL pageflow definitions in the same project. If so, the "
+"relationship between the two is that a single <literal>&lt;task&gt;</"
+"literal> in a business process corresponds to a whole pageflow <literal>&lt;"
+"pageflow-definition&gt;</literal>"
+msgstr ""
+"Il est tout à fait possible que nous ayons à la fois, les définitions de "
+"processus métier jPDL et les définitions de flux de page jPDL dans le même "
+"projet. Si c'est le cas, la relation entre les deux est qu'une <literal>&lt;"
+"task&gt;</literal> unique dans un processus métier correspond au flux de la "
+"page total <literal>&lt;pageflow-definition&gt;</literal>"
+
+#. Tag: title
+#: Jbpm.xml:256
+#, no-c-format
+msgid "Using jPDL business process definitions"
+msgstr "Utilisation des définitions du processus métier jPDL "
+
+#. Tag: title
+#: Jbpm.xml:258
+#, no-c-format
+msgid "Installing process definitions"
+msgstr "Installation des définitions de processus"
+
+#. Tag: para
+#: Jbpm.xml:259
+#, no-c-format
+msgid ""
+"We need to install jBPM, and tell it where to find the business process "
+"definitions:"
+msgstr ""
+"Nous devons installer jBPM, et lui indiquer où trouver les définitions du "
+"processus métier :"
+
+#. Tag: programlisting
+#: Jbpm.xml:262
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;todo.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;todo.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+
+#. Tag: title
+#: Jbpm.xml:266
+#, no-c-format
+msgid "Initializing actor ids"
+msgstr "Initialisation des ids d'acteur"
+
+#. Tag: para
+#: Jbpm.xml:267
+#, no-c-format
+msgid ""
+"We always need to know what user is currently logged in. jBPM \"knows\" "
+"users by their <emphasis>actor id</emphasis> and <emphasis>group actor ids</"
+"emphasis>. We specify the current actor ids using the built in Seam "
+"component named <literal>actor</literal>:"
+msgstr ""
+"Nous devons toujours savoir quel utilisateur est actuellement connecté. jBPM "
+"\"connaît\" les utilisateurs par leur <emphasis>id d'acteur</emphasis> et "
+"<emphasis>ids de groupe d'acteur</emphasis>. Nous spécifions les ids "
+"d'acteur actuels, en utilisant les composants intégrés dans Seam, appelés "
+"<literal>actor</literal> :"
+
+#. Tag: programlisting
+#: Jbpm.xml:270
+#, no-c-format
+msgid ""
+"@In Actor actor;\n"
+"\n"
+"public String login() {\n"
+"    ...\n"
+"    actor.setId( user.getUserName() );\n"
+"    actor.getGroupActorIds().addAll( user.getGroupNames() );\n"
+"    ...\n"
+"}"
+msgstr ""
+"@In Actor actor;\n"
+"\n"
+"public String login() {\n"
+"    ...\n"
+"    actor.setId( user.getUserName() );\n"
+"    actor.getGroupActorIds().addAll( user.getGroupNames() );\n"
+"    ...\n"
+"}"
+
+#. Tag: title
+#: Jbpm.xml:274
+#, no-c-format
+msgid "Initiating a business process"
+msgstr "Création d'un processus métier"
+
+#. Tag: para
+#: Jbpm.xml:275
+#, no-c-format
+msgid ""
+"To initiate a business process instance, we use the <literal>@CreateProcess</"
+"literal> annotation:"
+msgstr ""
+"Pour initier une instance de processus métier, nous utilisons l'annotation "
+"<literal>@CreateProcess</literal> :"
+
+#. Tag: programlisting
+#: Jbpm.xml:278
+#, no-c-format
+msgid ""
+"@CreateProcess(definition=\"todo\")\n"
+"public void createTodo() { ... }"
+msgstr ""
+"@CreateProcess(definition=\"todo\")\n"
+"public void createTodo() { ... }"
+
+#. Tag: para
+#: Jbpm.xml:279
+#, no-c-format
+msgid "Alternatively we can initiate a business process using pages.xml:"
+msgstr ""
+"Alternativement nous pouvons initier un processus métier en utilisant pages."
+"xml :"
+
+#. Tag: programlisting
+#: Jbpm.xml:282
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;create-process definition=\"todo\" /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page&gt;\n"
+"    &lt;create-process definition=\"todo\" /&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: title
+#: Jbpm.xml:286
+#, no-c-format
+msgid "Task assignment"
+msgstr "Attribution de tâche"
+
+#. Tag: para
+#: Jbpm.xml:287
+#, no-c-format
+msgid ""
+"When a process starts, task instances are created. These must be assigned to "
+"users or user groups. We can either hardcode our actor ids, or delegate to a "
+"Seam component:"
+msgstr ""
+"Quand un processus commence, les instances de tâches sont crées. Celles-ci "
+"doivent être attribuées aux utilisateurs et aux groupes d'utilisateurs. Nous "
+"pouvons soit coder dur nos ids d'acteur, soit déléguer à un composant Seam :"
+
+#. Tag: programlisting
+#: Jbpm.xml:290
+#, no-c-format
+msgid ""
+"&lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"    &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"&lt;/task&gt;"
+msgstr ""
+"&lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"    &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"&lt;/task&gt;"
+
+#. Tag: para
+#: Jbpm.xml:291
+#, no-c-format
+msgid ""
+"In this case, we have simply assigned the task to the current user. We can "
+"also assign tasks to a pool:"
+msgstr ""
+"Dans ce cas, nous avons simplement attribué la tâche à l'utilisateur actuel. "
+"Nous pouvons aussi attribuer les tâches à un groupe :"
+
+#. Tag: programlisting
+#: Jbpm.xml:294
+#, no-c-format
+msgid ""
+"&lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"    &lt;assignment pooled-actors=\"employees\"/&gt;\n"
+"&lt;/task&gt;"
+msgstr ""
+"&lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"    &lt;assignment pooled-actors=\"employees\"/&gt;\n"
+"&lt;/task&gt;"
+
+#. Tag: title
+#: Jbpm.xml:298
+#, no-c-format
+msgid "Task lists"
+msgstr "Listes des tâches"
+
+#. Tag: para
+#: Jbpm.xml:299
+#, no-c-format
+msgid ""
+"Several built-in Seam components make it easy to display task lists. The "
+"<literal>pooledTaskInstanceList</literal> is a list of pooled tasks that "
+"users may assign to themselves:"
+msgstr ""
+"Plusieurs composants intégrés de Seam facilite l'affichage des listes de "
+"tâches. Le <literal>pooledTaskInstanceList</literal> est une liste de tâches "
+"groupées que les utilisateurs peuvent assigner à eux-mêmes. "
+
+#. Tag: programlisting
+#: Jbpm.xml:302
+#, fuzzy, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{pooledTaskInstanceList}\" var=\"task\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Description&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{task.description}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link action=\"#{pooledTask.assignToCurrentActor}\" value="
+"\"Assign\" taskInstance=\"#{task}\"/&gt;\n"
+"    &lt;/h:column&gt;                    \n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+"&lt;h:dataTable value=\"#{pooledTaskInstanceList}\" var=\"task\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Description&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{task.description}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link action=\"#{pooledTask.assignToCurrentActor}\" value="
+"\"Assign\" taskInstance=\"#{task}\"/&gt;\n"
+"    &lt;/h:column&gt;            \n"
+"&lt;/h:dataTable&gt;"
+
+#. Tag: para
+#: Jbpm.xml:303
+#, no-c-format
+msgid ""
+"Note that instead of <literal>&lt;s:link&gt;</literal> we could have used a "
+"plain JSF <literal>&lt;h:commandLink&gt;</literal>:"
+msgstr ""
+"Notez qu'au lieu de <literal>&lt;s:link&gt;</literal>, nous aurions pu "
+"utiliser un simple <literal>&lt;h:commandLink&gt;</literal> JSF :"
+
+#. Tag: programlisting
+#: Jbpm.xml:306
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"#{pooledTask.assignToCurrentActor}\"&gt; \n"
+"    &lt;f:param name=\"taskId\" value=\"#{task.id}\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+"&lt;h:commandLink action=\"#{pooledTask.assignToCurrentActor}\"&gt; \n"
+"    &lt;f:param name=\"taskId\" value=\"#{task.id}\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+
+#. Tag: para
+#: Jbpm.xml:307
+#, no-c-format
+msgid ""
+"The <literal>pooledTask</literal> component is a built-in component that "
+"simply assigns the task to the current user."
+msgstr ""
+"Le composant <literal>pooledTask</literal> est un composant intégré qui "
+"assigne simplement la tâche à l'utilisateur actuel. "
+
+#. Tag: para
+#: Jbpm.xml:310
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>taskInstanceListForType</literal> component includes tasks of a "
+"particular type that are assigned to the current user:"
+msgstr ""
+"Le composant <literal>taskInstanceListByType</literal> inclut les tâches de "
+"type particulier qui sont assignées à l'utilisateur actuel :"
+
+#. Tag: programlisting
+#: Jbpm.xml:313
+#, fuzzy, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{taskInstanceListForType[&#39;todo&#39;]}\" var="
+"\"task\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Description&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{task.description}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link action=\"#{todoList.start}\" value=\"Start Work\" "
+"taskInstance=\"#{task}\"/&gt;\n"
+"    &lt;/h:column&gt;                    \n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+"&lt;h:dataTable value=\"#{taskInstanceListByType['todo']}\" var=\"task"
+"\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Description&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{task.description}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link action=\"#{todoList.start}\" value=\"Start Work\" "
+"taskInstance=\"#{task}\"/&gt;\n"
+"    &lt;/h:column&gt;            \n"
+"&lt;/h:dataTable&gt;"
+
+#. Tag: title
+#: Jbpm.xml:317
+#, no-c-format
+msgid "Performing a task"
+msgstr "Effectuer une tâche"
+
+#. Tag: para
+#: Jbpm.xml:318
+#, no-c-format
+msgid ""
+"To begin work on a task, we use either <literal>@StartTask</literal> or "
+"<literal>@BeginTask</literal> on the listener method:"
+msgstr ""
+"Pour commencer à travailler sur une tâche, nous utilisons "
+"<literal>@StartTask</literal> ou <literal>@BeginTask</literal> sur la "
+"méthode de listener :"
+
+#. Tag: programlisting
+#: Jbpm.xml:321
+#, no-c-format
+msgid ""
+"@StartTask\n"
+"public String start() { ... }"
+msgstr ""
+"@StartTask\n"
+"public String start() { ... }"
+
+#. Tag: para
+#: Jbpm.xml:322
+#, no-c-format
+msgid "Alternatively we can begin work on a task using pages.xml:"
+msgstr ""
+"Alternativement, nous pouvons commencer à travailler sur une tâche à l'aide "
+"de pages.xml :"
+
+#. Tag: programlisting
+#: Jbpm.xml:325
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;start-task /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page&gt;\n"
+"    &lt;start-task /&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Jbpm.xml:326
+#, no-c-format
+msgid ""
+"These annotations begin a special kind of conversation that has significance "
+"in terms of the overarching business process. Work done by this conversation "
+"has access to state held in the business process context."
+msgstr ""
+"Ces annotations commencent un type particulier de conversation qui est "
+"significatif en ce qui concerne le processus métier primordial. Le travail "
+"effectué par cette conversation a accès à l'état contenu dans le contexte du "
+"processus métier. "
+
+#. Tag: para
+#: Jbpm.xml:329
+#, no-c-format
+msgid ""
+"If we end the conversation using <literal>@EndTask</literal>, Seam will "
+"signal the completion of the task:"
+msgstr ""
+"Si nous terminons la conversation avec <literal>@EndTask</literal>, Seam "
+"signale la fin de la tâche :"
+
+#. Tag: programlisting
+#: Jbpm.xml:332
+#, no-c-format
+msgid ""
+"@EndTask(transition=\"completed\")\n"
+"public String completed() { ... }"
+msgstr ""
+"@EndTask(transition=\"completed\")\n"
+"public String completed() { ... }"
+
+#. Tag: para
+#: Jbpm.xml:333
+#, no-c-format
+msgid "Alternatively we can use pages.xml:"
+msgstr "Alternativement nous pouvons utiliser pages.xml :"
+
+#. Tag: programlisting
+#: Jbpm.xml:336
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;end-task transition=\"completed\" /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page&gt;\n"
+"    &lt;end-task transition=\"completed\" /&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Jbpm.xml:337
+#, no-c-format
+msgid ""
+"(Alternatively, we could have used <literal>&lt;end-conversation&gt;</"
+"literal> as shown above.)"
+msgstr ""
+"(Nous aurions également pu utiliser <literal>&lt;end-conversation&gt;</"
+"literal> comme indiqué ci-dessus.)"
+
+#. Tag: para
+#: Jbpm.xml:340
+#, no-c-format
+msgid ""
+"At this point, jBPM takes over and continues executing the business process "
+"definition. (In more complex processes, several tasks might need to be "
+"completed before process execution can resume.)"
+msgstr ""
+"À ce stade, jBPM intervient et continue d'exécuter la définition du "
+"processus métier. (Dans des processus plus complexes, plusieurs tâches "
+"peuvent devoir être résolues avant que l'exécution du processus ne puisse "
+"recommencer.)"
+
+#. Tag: para
+#: Jbpm.xml:344
+#, no-c-format
+msgid ""
+"Please refer to the jBPM documentation for a more thorough overview of the "
+"sophisticated features that jBPM provides for managing complex business "
+"processes."
+msgstr ""
+"Veuillez consulter la documentation jBPM pour une vue plus approfondie des "
+"fonctions sophistiquées que jBPM offre pour la gestion de processus métier "
+"complexes."

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Jms.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Jms.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Jms.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,760 @@
+# translation of Jms.po to french
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# myriam malga <mmalga at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Jms\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-02-04 23:29+0000\n"
+"PO-Revision-Date: 2007-08-06 15:10+1000\n"
+"Last-Translator: myriam malga <mmalga at redhat.com>\n"
+"Language-Team: french\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Jms.xml:6
+#, no-c-format
+msgid "Asynchronicity and messaging"
+msgstr "Asynchronicité et messagerie"
+
+#. Tag: para
+#: Jms.xml:7
+#, no-c-format
+msgid ""
+"Seam makes it very easy to perform work asynchronously from a web request. "
+"When most people think of asynchronicity in Java EE, they think of using "
+"JMS. This is certainly one way to approach the problem in Seam, and is the "
+"right way when you have strict and well-defined quality of service "
+"requirements. Seam makes it easy to send and recieve JMS messages using Seam "
+"components."
+msgstr ""
+"Seam facilite le travail asynchrone depuis une requête web. Quand la plupart "
+"des gens conçoivent l'asynchronicité dans Java EE, ils pensent à utiliser "
+"JMS. C'est une des façons d'aborder le problème dans Seam, et c'est la "
+"meilleure manière quand vous avez des exigences strictes et bien définies de "
+"qualité du service. Seam rend l'envoi et la réception de messages JMS "
+"faciles grâce aux composants Seam."
+
+#. Tag: para
+#: Jms.xml:10
+#, no-c-format
+msgid ""
+"But for many usecases, JMS is overkill. Seam layers a simple asynchronous "
+"method and event facility over the EJB 3.0 timer service."
+msgstr ""
+"Mais dans de nombreux cas d'utilisation, JMS est disproportionné. Seam "
+"dispose en couches une simple méthode asynchrone et une fonctionnalité "
+"d'évènement sur le timer service EJB 3.0. "
+
+#. Tag: title
+#: Jms.xml:13
+#, no-c-format
+msgid "Asynchronicity"
+msgstr "Asynchronicité"
+
+#. Tag: para
+#: Jms.xml:14
+#, fuzzy, no-c-format
+msgid ""
+"Asynchronous events and method calls have the same quality of service "
+"expectations as the container&#39;s EJB timer service. If you&#39;re not "
+"familiar with the Timer service, don&#39;t worry, you don&#39;t need to "
+"interact with it directly if you want to use asynchronous methods in Seam."
+msgstr ""
+"Les évènements asynchrones et les appels de méthode ont les mêmes exigences "
+"de qualité de service que le timer service EJB du conteneur. Si vous ne "
+"connaissez pas le Timer service, ne vous inquiétez pas, vous ne devez pas "
+"interagir avec directement quand vous souhaitez utiliser les méthodes "
+"asynchrones dans Seam."
+
+#. Tag: para
+#: Jms.xml:17
+#, no-c-format
+msgid ""
+"To use asynchronous methods and events, you need to add the following line "
+"to <literal>components.xml</literal>:"
+msgstr ""
+"Pour utiliser les méthoes et évènements asynchrones, vous devez ajouter la "
+"ligne suivante au <literal>components.xml</literal> :"
+
+#. Tag: programlisting
+#: Jms.xml:20
+#, no-c-format
+msgid "&lt;core:dispatcher/&gt;"
+msgstr "&lt;core:dispatcher/&gt;"
+
+#. Tag: para
+#: Jms.xml:21
+#, no-c-format
+msgid ""
+"Note that this functionality is not available in environments which do not "
+"support EJB 3.0."
+msgstr ""
+"Notez que cette fonctionnalité n'est pas disponible dans des environnements "
+"qui ne supportent pas EJB 3.0."
+
+#. Tag: title
+#: Jms.xml:24
+#, no-c-format
+msgid "Asynchronous methods"
+msgstr "Méthodes asynchrones"
+
+#. Tag: para
+#: Jms.xml:25
+#, no-c-format
+msgid ""
+"In simplest form, an asynchronous call just lets a method call be processed "
+"asynchronously (in a different thread) from the caller. We usually use an "
+"asynchronous call when we want to return an immediate response to the "
+"client, and let some expensive work be processed in the background. This "
+"pattern works very well in applications which use AJAX, where the client can "
+"automatically poll the server for the result of the work."
+msgstr ""
+"Dans sa forme la plus simple, un appel asynchrone permet à un appel de "
+"méthode d'être traité de façon asynchrone (dans différents threads) depuis "
+"l'appelant. Nous utilisons généralement un appel asynchrone quand nous "
+"souhaitons retourner une réponse immédiate au client, et permettre le "
+"traitement d'un travail coûteux en arrière-plan. Ce modèle fonctionne très "
+"bien dans les applications qui utilisent AJAX, où le client peut "
+"automatiquement interroger le serveur pour le résultat du travail. "
+
+#. Tag: para
+#: Jms.xml:28
+#, no-c-format
+msgid ""
+"For EJB components, we annotate the local interface to specify that a method "
+"is processed asynchronously."
+msgstr ""
+"Pour les composants EJB, nous annotons l'interface locale pour spécifier "
+"qu'une méthode est traitée de façon asynchrone."
+
+#. Tag: programlisting
+#: Jms.xml:31
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public void processPayment(Payment payment);\n"
+"}"
+msgstr ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public void processPayment(Payment payment);\n"
+"}"
+
+#. Tag: para
+#: Jms.xml:32
+#, no-c-format
+msgid ""
+"(For JavaBean components we can annotate the component implementation class "
+"if we like.)"
+msgstr ""
+"(Pour les composants JavaBean nous pouvons annoté la classe d'implémentation "
+"du composant, si nous le souhaitons.)"
+
+#. Tag: para
+#: Jms.xml:35
+#, no-c-format
+msgid "The use of asynchronicity is transparent to the bean class:"
+msgstr ""
+"L'utilisation de l'asynchronicité est transparente à la classe du bean :"
+
+#. Tag: programlisting
+#: Jms.xml:38
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"paymentHandler\")\n"
+"public class PaymentHandlerBean implements PaymentHandler\n"
+"{\n"
+"    public void processPayment(Payment payment)\n"
+"    {\n"
+"        //do some work!\n"
+"    }\n"
+"}"
+msgstr ""
+"@Stateless\n"
+"@Name(\"paymentHandler\")\n"
+"public class PaymentHandlerBean implements PaymentHandler\n"
+"{\n"
+"    public void processPayment(Payment payment)\n"
+"    {\n"
+"        //do some work!\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Jms.xml:39
+#, no-c-format
+msgid "And also transparent to the client:"
+msgstr "Et de même, elle est transparente au client :"
+
+#. Tag: programlisting
+#: Jms.xml:42
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String pay()\n"
+"    {\n"
+"        paymentHandler.processPayment( new Payment(bill) );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String pay()\n"
+"    {\n"
+"        paymentHandler.processPayment( new Payment(bill) );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Jms.xml:43
+#, no-c-format
+msgid ""
+"The asynchronous method is processed in a completely new event context and "
+"does not have access to the session or conversation context state of the "
+"caller. However, the business process context <emphasis>is</emphasis> "
+"propagated."
+msgstr ""
+"La méthode asynchrone est traitée dans un contexte d'évènement complètement "
+"neuf et n'a pas accès à la session ou à l'état du contexte de conversation "
+"de l'appelant. Toutefois, le contexte du processus métier <emphasis>est</"
+"emphasis> propagé."
+
+#. Tag: para
+#: Jms.xml:46
+#, no-c-format
+msgid ""
+"Asynchronous method calls may be scheduled for later execution using the "
+"<literal>@Duration</literal>, <literal>@Expiration</literal> and "
+"<literal>@IntervalDuration</literal> annotations."
+msgstr ""
+"Les appels d'une méthodes asynchrone peuvent être ordonnancés pour une "
+"exécution ultérieure avec les annotations <literal>@Duration</literal>, "
+"<literal>@Expiration</literal> et <literal>@IntervalDuration</literal>."
+
+#. Tag: programlisting
+#: Jms.xml:49
+#, fuzzy, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public void processScheduledPayment(Payment payment, @Expiration Date "
+"date);\n"
+"\n"
+"    @Asynchronous\n"
+"    public void processRecurringPayment(Payment payment, @Expiration Date "
+"date, \n"
+"      @IntervalDuration Long interval)&#39;\n"
+"}"
+msgstr ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public void processScheduledPayment(Payment payment, @Expiration Date "
+"date);\n"
+"\n"
+"    @Asynchronous\n"
+"    public void processRecurringPayment(Payment payment, @Expiration Date "
+"date, \n"
+"        @IntervalDuration Long interval)'\n"
+"}"
+
+#. Tag: programlisting
+#: Jms.xml:50
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String schedulePayment()\n"
+"    {\n"
+"        paymentHandler.processScheduledPayment( new Payment(bill), bill."
+"getDueDate() );\n"
+"        return \"success\";\n"
+"    }\n"
+"\n"
+"    public String scheduleRecurringPayment()\n"
+"    {\n"
+"        paymentHandler.processRecurringPayment( new Payment(bill), bill."
+"getDueDate(), ONE_MONTH );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String schedulePayment()\n"
+"    {\n"
+"        paymentHandler.processScheduledPayment( new Payment(bill), bill."
+"getDueDate() );\n"
+"        return \"success\";\n"
+"    }\n"
+"\n"
+"    public String scheduleRecurringPayment()\n"
+"    {\n"
+"        paymentHandler.processRecurringPayment( new Payment(bill), bill."
+"getDueDate(), ONE_MONTH );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Jms.xml:51
+#, no-c-format
+msgid ""
+"Both client and server may access the <literal>Timer</literal> object "
+"associated with the invocation."
+msgstr ""
+"Le client et le serveur peuvent accéder à l'objet <literal>Timer</literal>, "
+"associé à l'invocation."
+
+#. Tag: programlisting
+#: Jms.xml:54
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public Timer processScheduledPayment(Payment payment, @Expiration Date "
+"date);\n"
+"}"
+msgstr ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public Timer processScheduledPayment(Payment payment, @Expiration Date "
+"date);\n"
+"}"
+
+#. Tag: programlisting
+#: Jms.xml:55
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"paymentHandler\")\n"
+"public class PaymentHandlerBean implements PaymentHandler\n"
+"{\n"
+"    @In Timer timer;\n"
+"    \n"
+"    public Timer processScheduledPayment(Payment payment, @Expiration Date "
+"date)\n"
+"    {\n"
+"        //do some work!\n"
+"        \n"
+"        return timer; //note that return value is completely ignored\n"
+"    }\n"
+"\n"
+"}"
+msgstr ""
+"@Stateless\n"
+"@Name(\"paymentHandler\")\n"
+"public class PaymentHandlerBean implements PaymentHandler\n"
+"{\n"
+"    @In Timer timer;\n"
+"    \n"
+"    public Timer processScheduledPayment(Payment payment, @Expiration Date "
+"date)\n"
+"    {\n"
+"        //do some work!\n"
+"        \n"
+"        return timer; //note that return value is completely ignored\n"
+"    }\n"
+"\n"
+"}"
+
+#. Tag: programlisting
+#: Jms.xml:56
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String schedulePayment()\n"
+"    {\n"
+"        Timer timer = paymentHandler.processScheduledPayment( new Payment"
+"(bill), bill.getDueDate() );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String schedulePayment()\n"
+"    {\n"
+"        Timer timer = paymentHandler.processScheduledPayment( new Payment"
+"(bill), bill.getDueDate() );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Jms.xml:57
+#, no-c-format
+msgid "Asynchronous methods cannot return any other value to the caller."
+msgstr ""
+"Les méthodes asynchrones ne peuvent retourner aucune autre valeur à "
+"l'appelant. "
+
+#. Tag: title
+#: Jms.xml:60
+#, no-c-format
+msgid "Asynchronous events"
+msgstr "Évènements asynchrones"
+
+#. Tag: para
+#: Jms.xml:61
+#, fuzzy, no-c-format
+msgid ""
+"Component-driven events may also be asynchronous. To raise an event for "
+"asynchronous processing, simply call the <literal>raiseAsynchronousEvent()</"
+"literal> methods of the <literal>Events</literal> class. To schedule a timed "
+"event, call one of the <literal>raiseTimedEvent()</literal> methods. "
+"Components may observe asynchronous events in the usual way, but remember "
+"that only the business process context is propagated to the asynchronous "
+"thread."
+msgstr ""
+"Les évènements orientés composant peuvent également être asynchrones. Pour "
+"lever un évènement pour le traitement asynchrone, appelez simplement les "
+"méthodes <literal>raiseAsynchronousEvent()</literal> de la classe "
+"<literal>Events</literal>. Pour ordonnancer un évènement temporisé, appelez "
+"une des méthodes <literal>raiseTimedEvent()</literal>. Les composants "
+"peuvent observer des évènements asynchrones de manière usuelle, mais "
+"rappelez-vous que seul le contexte du processus métier est propagé au thread "
+"asynchrone. "
+
+#. Tag: title
+#: Jms.xml:64
+#, no-c-format
+msgid "Messaging in Seam"
+msgstr "Messagerie dans Seam"
+
+#. Tag: para
+#: Jms.xml:65
+#, no-c-format
+msgid ""
+"Seam makes it easy to send and receive JMS messages to and from Seam "
+"components."
+msgstr ""
+"Seam facilite l'envoi et la réception de messages JMS depuis et vers les "
+"composants Seam."
+
+#. Tag: title
+#: Jms.xml:68
+#, no-c-format
+msgid "Configuration"
+msgstr "Configuration"
+
+#. Tag: para
+#: Jms.xml:69
+#, fuzzy, no-c-format
+msgid ""
+"To configure Seam&#39;s infrastructure for sending JMS messages, you need to "
+"tell Seam about any topics and queues you want to send messages to, and also "
+"tell Seam where to find the <literal>QueueConnectionFactory</literal> and/or "
+"<literal>TopicConnectionFactory</literal>."
+msgstr ""
+"Pour configurer l'infrastructure de Seam afin d'envoyer des messages JMS, "
+"vous devez informer Seam de tous les topics et files d'attente auxquels vous "
+"désirez envoyer des messages, et indiquer également où trouver "
+"<literal>QueueConnectionFactory</literal> et/ou "
+"<literal>TopicConnectionFactory</literal>."
+
+#. Tag: para
+#: Jms.xml:72
+#, fuzzy, no-c-format
+msgid ""
+"Seam defaults to using <literal>UIL2ConnectionFactory</literal> which is the "
+"usual connection factory for use with JBossMQ. If you are using some other "
+"JMS provider, you need to set one or both of <literal>queueConnection."
+"queueConnectionFactoryJndiName</literal> and <literal>topicConnection."
+"topicConnectionFactoryJndiName</literal> in <literal>seam.properties</"
+"literal>, <literal>web.xml</literal> or <literal>components.xml</literal>."
+msgstr ""
+"Seam utilise par défaut <literal>UIL2ConnectionFactory</literal>, la "
+"fabrique de connexions la plus fréquente pour une utilisation avec JBossMQ. "
+"Si vous utilisez un autre fournisseur JMS, vous devez en définir un ou deux, "
+"des <literal>queueConnection.queueConnectionFactoryJndiName</literal> et "
+"<literal>topicConnection.topicConnectionFactoryJndiName</literal> dans "
+"<literal>seam.properties</literal>, <literal>web.xml</literal> ou "
+"<literal>components.xml</literal>."
+
+#. Tag: para
+#: Jms.xml:75
+#, no-c-format
+msgid ""
+"You also need to list topics and queues in <literal>components.xml</literal> "
+"to install Seam managed <literal>TopicPublisher</literal>s and "
+"<literal>QueueSender</literal>s:"
+msgstr ""
+"Vous devez également lister les topics et les files d'attente dans "
+"<literal>components.xml</literal> pour installer des "
+"<literal>TopicPublisher</literal>s et des <literal>QueueSender</literal>s, "
+"gérés par Seam."
+
+#. Tag: programlisting
+#: Jms.xml:78
+#, fuzzy, no-c-format
+msgid ""
+"&lt;jms:managed-topic-publisher name=\"stockTickerPublisher\" \n"
+"                   auto-create=\"true  topic-jndi-name=\"topic/"
+"stockTickerTopic\"/&gt;\n"
+"\n"
+"&lt;jms:managed-queue-sender name=\"paymentQueueSender\" auto-create=\"true"
+"\" \n"
+"    queue-jndi-name=\"queue/paymentQueue\"/&gt;"
+msgstr ""
+"&lt;jms:managed-topic-publisher name=\"stockTickerPublisher\" auto-create="
+"\"true\" \n"
+"    topic-jndi-name=\"topic/stockTickerTopic\"/&gt;\n"
+"\n"
+"&lt;jms:managed-queue-sender name=\"paymentQueueSender\" auto-create=\"true"
+"\" \n"
+"    queue-jndi-name=\"queue/paymentQueue\"/&gt;"
+
+#. Tag: title
+#: Jms.xml:81
+#, no-c-format
+msgid "Using JBoss Messaging"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:82
+#, no-c-format
+msgid ""
+"For using JBoss Messaging which comes with JBoss Enterprise Application "
+"Platform 4.3, you should first set the value of the properties "
+"'<literal>queueConnection.queueConnectionFactoryJndiName</literal>' and "
+"'<literal>topicConnection.topicConnectionFactoryJndiName</literal>' to "
+"'<literal>ConnectionFactory</literal>' which is the default connection "
+"factory for JBoss Messaging. Then set the value of the "
+"'<literal>connectionProvider</literal>' property to '<literal>org.jboss.seam."
+"remoting.messaging.JBossMessagingConnectionProvider</literal>' on the class "
+"component '<literal>org.jboss.seam.remoting.messaging.SubscriptionRegistry</"
+"literal>', which creates topic connections for jboss messaging. "
+"<programlisting>\n"
+"&lt;component name=\"org.jboss.seam.jms.topicConnection\"&gt;\n"
+"        &lt;property name=\"topicConnectionFactoryJndiName\"&gt;\n"
+"        ConnectionFactory\n"
+"        &lt;/property&gt;\n"
+"&lt;/component&gt;\n"
+"&lt;component class=\"org.jboss.seam.remoting.messaging.SubscriptionRegistry"
+"\" installed=\"true\"&gt;\n"
+"        &lt;property name=\"allowedTopics\"&gt;\n"
+"        chatroomTopic\n"
+"        &lt;/property&gt;\n"
+"        &lt;property name=\"connectionProvider\"&gt;\n"
+"        org.jboss.seam.remoting.messaging.JBossMessagingConnectionProvider\n"
+"        &lt;/property&gt;\n"
+"&lt;/component&gt;\n"
+"</programlisting> You also need to update the topics to use JBoss Messaging "
+"as shown in the code fragment below."
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:86
+#, no-c-format
+msgid ""
+"&lt;server&gt;\n"
+"        &lt;mbean code=\"org.jboss.jms.server.destination.TopicService\"\n"
+"               name=\"jboss.messaging.destination:service=Topic,"
+"name=chatroomTopic\"\n"
+"                                            xmbean-dd=\"xmdesc/Topic-xmbean."
+"xml\"&gt;\n"
+"                &lt;depends optional-attribute-name=\"ServerPeer\"&gt;\n"
+"                jboss.messaging:service=ServerPeer\n"
+"                &lt;/depends&gt;\n"
+"                &lt;depends&gt;\n"
+"                jboss.messaging:service=PostOffice\n"
+"                &lt;/depends&gt;\n"
+"                &lt;attribute name=\"SecurityConfig\"&gt;\n"
+"                        &lt;security&gt;\n"
+"                          &lt;role name=\"guest\" read=\"true\" write=\"true"
+"\"/&gt;\n"
+"                          &lt;role name=\"publisher\" read=\"true\" write="
+"\"true\" create=\"false\"/&gt;\n"
+"                          &lt;role name=\"durpublisher\" read=\"true\" write="
+"\"true\" create=\"true\"/&gt;\n"
+"                        &lt;/security&gt;\n"
+"                &lt;/attribute&gt;\n"
+"        &lt;/mbean&gt;\n"
+"&lt;/server&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:90
+#, no-c-format
+msgid "Sending messages"
+msgstr "Envoi de messages"
+
+#. Tag: para
+#: Jms.xml:91
+#, no-c-format
+msgid ""
+"Now, you can inject a JMS <literal>TopicPublisher</literal> and "
+"<literal>TopicSession</literal> into any component:"
+msgstr ""
+"Maintenant, vous pouvez injecter un JMS <literal>TopicPublisher</literal> et "
+"un <literal>TopicSession</literal> dans tout composant :"
+
+#. Tag: programlisting
+#: Jms.xml:94
+#, no-c-format
+msgid ""
+"@In \n"
+"private TopicPublisher stockTickerPublisher;   \n"
+"@In \n"
+"private TopicSession topicSession;\n"
+"\n"
+"public void publish(StockPrice price) {\n"
+"      try\n"
+"      {\n"
+"         topicPublisher.publish( topicSession.createObjectMessage(price) );\n"
+"      } \n"
+"      catch (Exception ex)\n"
+"      {\n"
+"         throw new RuntimeException(ex);\n"
+"      } \n"
+"}"
+msgstr ""
+"@In \n"
+"private TopicPublisher stockTickerPublisher;   \n"
+"@In \n"
+"private TopicSession topicSession;\n"
+"\n"
+"public void publish(StockPrice price) {\n"
+"      try\n"
+"      {\n"
+"         topicPublisher.publish( topicSession.createObjectMessage(price) );\n"
+"      } \n"
+"      catch (Exception ex)\n"
+"      {\n"
+"         throw new RuntimeException(ex);\n"
+"      } \n"
+"}"
+
+#. Tag: para
+#: Jms.xml:95
+#, no-c-format
+msgid "Or, for working with a queue:"
+msgstr "Ou, pour travailler avec une file d'attente :"
+
+#. Tag: programlisting
+#: Jms.xml:98
+#, no-c-format
+msgid ""
+"@In\n"
+"private QueueSender paymentQueueSender;   \n"
+"@In\n"
+"private QueueSession queueSession;\n"
+"\n"
+"public void publish(Payment payment) {\n"
+"      try\n"
+"      {\n"
+"         paymentQueueSender.send( queueSession.createObjectMessage"
+"(payment) );\n"
+"      } \n"
+"      catch (Exception ex)\n"
+"      {\n"
+"         throw new RuntimeException(ex);\n"
+"      } \n"
+"}"
+msgstr ""
+"@In\n"
+"private QueueSender paymentQueueSender;   \n"
+"@In\n"
+"private QueueSession queueSession;\n"
+"\n"
+"public void publish(Payment payment) {\n"
+"      try\n"
+"      {\n"
+"         paymentQueueSender.send( queueSession.createObjectMessage"
+"(payment) );\n"
+"      } \n"
+"      catch (Exception ex)\n"
+"      {\n"
+"         throw new RuntimeException(ex);\n"
+"      } \n"
+"}"
+
+#. Tag: title
+#: Jms.xml:99
+#, no-c-format
+msgid "Receiving messages using a message-driven bean"
+msgstr "Reception de messages en utilisant un bean message-driven"
+
+#. Tag: para
+#: Jms.xml:100
+#, fuzzy, no-c-format
+msgid ""
+"You can process messages using any EJB3 message driven bean. Message-driven "
+"beans may even be Seam components, in which case it is possible to inject "
+"other event and application scoped Seam components."
+msgstr ""
+"Vous pouvez traiter les messages en utilisant n'importe quel bean message-"
+"driven EJB3. Les beans message-driven peuvent aussi être des composants "
+"Seam, dans ce cas il est possible d'injecter d'autres composants Seam, "
+"scoped évènement et application."
+
+#. Tag: title
+#: Jms.xml:103
+#, no-c-format
+msgid "Receiving messages in the client"
+msgstr "Réception de messages dans le client"
+
+#. Tag: para
+#: Jms.xml:104
+#, no-c-format
+msgid ""
+"Seam Remoting lets you subscribe to a JMS topic from client-side JavaScript. "
+"This is described in the next chapter."
+msgstr ""
+"Seam Remoting vous permet de vous abonner à un topic JMS depuis un "
+"JavaScript, côté client. Cela est décrit dans le prochain chapitre."

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Mail.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Mail.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Mail.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1349 @@
+# translation of Mail.po to french
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# myriam malga <mmalga at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Mail\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2007-08-06 15:55+1000\n"
+"Last-Translator: myriam malga <mmalga at redhat.com>\n"
+"Language-Team: french\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Mail.xml:6
+#, no-c-format
+msgid "Email"
+msgstr "Courriel"
+
+#. Tag: para
+#: Mail.xml:7
+#, no-c-format
+msgid ""
+"Seam now includes an optional components for templating and sending emails."
+msgstr ""
+"Seam inclut maintenant un composant optionnel pour la modélisation et "
+"l'envoi de courriels."
+
+#. Tag: para
+#: Mail.xml:10
+#, no-c-format
+msgid ""
+"Email support is provided by <literal>jboss-seam-mail.jar</literal>. This "
+"JAR contains the mail JSF controls, which are used to construct emails, and "
+"the <literal>mailSession</literal> manager component."
+msgstr ""
+"La prise en charge du courriel est fournie par <literal>jboss-seam-mail.jar</"
+"literal>. Ce JAR contient les contrôles du courrier JSF, qui sont utilisés "
+"pour construire les courriels et le composant du gestionnaire "
+"<literal>mailSession</literal>."
+
+#. Tag: para
+#: Mail.xml:13
+#, no-c-format
+msgid ""
+"The examples/mail project contains an example of the email support in "
+"action. It demonstrates proper packaging, and it contains a number of "
+"example that demonstrate the key features currently supported."
+msgstr ""
+"Les exemples/projet de courrier contiennent un exemple de prise en charge de "
+"courriel en action. Il illustre un empaquetage approprié et contient "
+"plusieurs exemples, expliquant les fonctionnalités clés actuellement prises "
+"en charge."
+
+#. Tag: title
+#: Mail.xml:17
+#, no-c-format
+msgid "Creating a message"
+msgstr "Création d'un message"
+
+#. Tag: para
+#: Mail.xml:18
+#, fuzzy, no-c-format
+msgid ""
+"You don&#39;t need to learn a whole new templating language to use Seam "
+"Mail&mdash;an email is just facelet!"
+msgstr ""
+"Il ne vous est pas nécessaire d'apprendre un nouveau langage de modélisation "
+"pour utiliser Seam Mail - un courriel est juste facelet !"
+
+#. Tag: programlisting
+#: Mail.xml:21
+#, no-c-format
+msgid ""
+"&lt;m:message xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"    xmlns:m=\"http://jboss.com/products/seam/mail\"\n"
+"    xmlns:h=\"http://java.sun.com/jsf/html\"&gt;\n"
+"  \n"
+"    &lt;m:from name=\"Peter\" address=\"peter at example.com\" /&gt;\n"
+"    &lt;m:to name=\"#{person.firstname} #{person.lastname}\"&gt;#{person."
+"address}&lt;/m:to&gt;\n"
+"    &lt;m:subject&gt;Try out Seam!&lt;/m:subject&gt;\n"
+"    \n"
+"    &lt;m:body&gt;\n"
+"        &lt;p&gt;&lt;h:outputText value=\"Dear #{person.firstname}\" /&gt;,"
+"&lt;/p&gt;\n"
+"        &lt;p&gt;You can try out Seam by visiting \n"
+"        &lt;a href=\"http://labs.jboss.com/jbossseam\"&gt;http://labs.jboss."
+"com/jbossseam&lt;/a&gt;.&lt;/p&gt;\n"
+"        &lt;p&gt;Regards,&lt;/p&gt;\n"
+"        &lt;p&gt;Peter&lt;/p&gt;\n"
+"    &lt;/m:body&gt;\n"
+"    \n"
+"&lt;/m:message&gt;"
+msgstr ""
+"&lt;m:message xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"    xmlns:m=\"http://jboss.com/products/seam/mail\"\n"
+"    xmlns:h=\"http://java.sun.com/jsf/html\"&gt;\n"
+"  \n"
+"    &lt;m:from name=\"Peter\" address=\"peter at example.com\" /&gt;\n"
+"    &lt;m:to name=\"#{person.firstname} #{person.lastname}\"&gt;#{person."
+"address}&lt;/m:to&gt;\n"
+"    &lt;m:subject&gt;Try out Seam!&lt;/m:subject&gt;\n"
+"    \n"
+"    &lt;m:body&gt;\n"
+"        &lt;p&gt;&lt;h:outputText value=\"Dear #{person.firstname}\" /&gt;,"
+"&lt;/p&gt;\n"
+"        &lt;p&gt;You can try out Seam by visiting \n"
+"        &lt;a href=\"http://labs.jboss.com/jbossseam\"&gt;http://labs.jboss."
+"com/jbossseam&lt;/a&gt;.&lt;/p&gt;\n"
+"        &lt;p&gt;Regards,&lt;/p&gt;\n"
+"        &lt;p&gt;Peter&lt;/p&gt;\n"
+"    &lt;/m:body&gt;\n"
+"    \n"
+"&lt;/m:message&gt;"
+
+#. Tag: para
+#: Mail.xml:22
+#, no-c-format
+msgid ""
+"The <literal>&lt;m:message&gt;</literal> tag wraps the whole message, and "
+"tells Seam to start rendering an email. Inside the <literal>&lt;m:message&gt;"
+"</literal> tag we use an <literal>&lt;m:from&gt;</literal> tag to set who "
+"the message is from, a <literal>&lt;m:to&gt;</literal> tag to specify a "
+"sender (notice how we use EL as we would in a normal facelet), and a "
+"<literal>&lt;m:subject&gt;</literal> tag."
+msgstr ""
+"La balise <literal>&lt;m:message&gt;</literal> enveloppe tout le message et "
+"indique à Seam de commencer à afficher un courriel. À l'intérieur de la "
+"balise <literal>&lt;m:message&gt;</literal>, nous utilisons une balise "
+"<literal>&lt;m:from&gt;</literal> pour déterminer de qui provient le "
+"message, une balise <literal>&lt;m:to&gt;</literal> pour spécifier un "
+"expéditeur (remarquez comment nous utilisons EL, exactement comme nous le "
+"ferions dans un facelet ordinaire), et une balise <literal>&lt;m:subject&gt;"
+"</literal>."
+
+#. Tag: para
+#: Mail.xml:25
+#, no-c-format
+msgid ""
+"The <literal>&lt;m:body&gt;</literal> tag wraps the body of the email. You "
+"can use regular HTML tags inside the body as well as JSF components."
+msgstr ""
+"La balise <literal>&lt;m:body&gt;</literal> enveloppe le corps du courriel. "
+"Vous pouvez utilisez des balises HTML régulières à l'intérieur du corps en "
+"tant que composants JSF."
+
+#. Tag: para
+#: Mail.xml:28
+#, no-c-format
+msgid ""
+"So, now you have your email template, how do you go about sending it? Well, "
+"at the end of rendering the <literal>m:message</literal> the "
+"<literal>mailSession</literal> is called to send the email, so all you have "
+"to do is ask Seam to render the view:"
+msgstr ""
+"Maintenant que vous avez votre modèle de courriel, comment faire pour "
+"l'envoyer ? À la fin de l'affichage de <literal>m:message</literal>, la "
+"<literal>mailSession</literal> est appelée pour envoyer le courriel, par "
+"conséquent tout ce que vous avez à effectuer est d'indiquer à Seam "
+"d'afficher la vue :"
+
+#. Tag: programlisting
+#: Mail.xml:31
+#, no-c-format
+msgid ""
+"@In(create=true)\n"
+"private Renderer renderer;\n"
+"   \n"
+"public void send() {\n"
+"    try {\n"
+"       renderer.render(\"/simple.xhtml\");\n"
+"       facesMessages.add(\"Email sent successfully\");\n"
+"   } \n"
+"   catch (Exception e) {\n"
+"       facesMessages.add(\"Email sending failed: \" + e.getMessage());\n"
+"   }\n"
+"}"
+msgstr ""
+"@In(create=true)\n"
+"private Renderer renderer;\n"
+"   \n"
+"public void send() {\n"
+"    try {\n"
+"       renderer.render(\"/simple.xhtml\");\n"
+"       facesMessages.add(\"Email sent successfully\");\n"
+"   } \n"
+"   catch (Exception e) {\n"
+"       facesMessages.add(\"Email sending failed: \" + e.getMessage());\n"
+"   }\n"
+"}"
+
+#. Tag: para
+#: Mail.xml:32
+#, no-c-format
+msgid ""
+"If, for example, you entered an invalid email address, then an exception "
+"would be thrown, which is caught and then displayed to the user."
+msgstr ""
+"Si par exemple, vous avez saisi une adresse courriel incorrecte, une "
+"exception sera lancée qui est attrapée et affichée à l'utilisateur. "
+
+#. Tag: title
+#: Mail.xml:36
+#, no-c-format
+msgid "Attachments"
+msgstr "Pièces jointes"
+
+#. Tag: para
+#: Mail.xml:37
+#, no-c-format
+msgid ""
+"Seam makes it easy to attach files to an email. It supports most of the "
+"standard java types used when working with files."
+msgstr ""
+"Seam facilite l'ajout de fichiers à un courriel. Il prend en charge la "
+"plupart des types java standards, utilisés quand on travaille avec des "
+"fichiers. "
+
+#. Tag: para
+#: Mail.xml:40
+#, no-c-format
+msgid "If you wanted to email the <literal>jboss-seam-mail.jar</literal>:"
+msgstr ""
+"Si vous souhaitez envoyer <literal>jboss-seam-mail.jar</literal> par "
+"courrier électronique :"
+
+#. Tag: programlisting
+#: Mail.xml:43
+#, no-c-format
+msgid "&lt;m:attachment value=\"/WEB-INF/lib/jboss-seam-mail.jar\"/&gt;"
+msgstr "&lt;m:attachment value=\"/WEB-INF/lib/jboss-seam-mail.jar\"/&gt;"
+
+#. Tag: para
+#: Mail.xml:44
+#, no-c-format
+msgid ""
+"Seam will load the file from the classpath, and attach it to the email. By "
+"default it would be attached as <literal>jboss-seam-mail.jar</literal>; if "
+"you wanted it to have another name you would just add the <literal>fileName</"
+"literal> attribute:"
+msgstr ""
+"Seam chargera le fichier depuis le chemin de la classe et le joindra au "
+"courriel. Par défaut, il sera attaché en tant que <literal>jboss-seam-mail."
+"jar</literal>; si vous désirez un autre nom, vous pouvez simplement ajouter "
+"l'attribut <literal>fileName</literal> :"
+
+#. Tag: programlisting
+#: Mail.xml:47
+#, no-c-format
+msgid ""
+"&lt;m:attachment value=\"/WEB-INF/lib/jboss-seam-mail.jar\" fileName=\"this-"
+"is-so-cool.jar\"/&gt;"
+msgstr ""
+"&lt;m:attachment value=\"/WEB-INF/lib/jboss-seam-mail.jar\" fileName=\"this-"
+"is-so-cool.jar\"/&gt;"
+
+#. Tag: para
+#: Mail.xml:48
+#, no-c-format
+msgid ""
+"You could also attach a <literal>java.io.File</literal>, a <literal>java.net."
+"URL</literal>:"
+msgstr ""
+"Vous pourriez également joindre un <literal>java.io.File</literal>, un "
+"<literal>java.net.URL</literal> :"
+
+#. Tag: programlisting
+#: Mail.xml:51
+#, no-c-format
+msgid "&lt;m:attachment value=\"#{numbers}\"/&gt;"
+msgstr "&lt;m:attachment value=\"#{numbers}\"/&gt;"
+
+#. Tag: para
+#: Mail.xml:52
+#, no-c-format
+msgid ""
+"Or a <literal>byte[]</literal> or a <literal>java.io.InputStream</literal>:"
+msgstr ""
+"Ou un <literal>byte[]</literal> ou un <literal>java.io.InputStream</"
+"literal> :"
+
+#. Tag: programlisting
+#: Mail.xml:55
+#, no-c-format
+msgid ""
+"&lt;m:attachment value=\"#{person.photo}\" contentType=\"image/png\"/&gt;"
+msgstr ""
+"&lt;m:attachment value=\"#{person.photo}\" contentType=\"image/png\"/&gt;"
+
+#. Tag: para
+#: Mail.xml:56
+#, fuzzy, no-c-format
+msgid ""
+"You&#39;ll notice that for a <literal>byte[]</literal> and a <literal>java."
+"io.InputStream</literal> you need to specify the MIME type of the attachment "
+"(as that information is not carried as part of the file)."
+msgstr ""
+"Vous remarquerez que pour un <literal>byte[]</literal> et un <literal>java."
+"io.InputStream</literal>, vous devez spécifier le type MIME de la pièce "
+"attachée (étant donné que ces informations ne sont pas considérées comme "
+"faisant partie du fichier)."
+
+#. Tag: para
+#: Mail.xml:59
+#, no-c-format
+msgid ""
+"And it gets even better, you can attach a Seam generated PDF, or any "
+"standard JSF view, just by wrapping a <literal>&lt;m:attachment&gt;</"
+"literal> around the normal tags you would use:"
+msgstr ""
+"Et c'est de mieux en mieux, vous pouvez joindre une PDF, générée par Seam, "
+"ou tout affichage JSF standard en enveloppant simplement un <literal>&lt;m:"
+"attachment&gt;</literal> autour des balises que vous utiliseriez "
+"habituellement :"
+
+#. Tag: programlisting
+#: Mail.xml:62
+#, no-c-format
+msgid ""
+"&lt;m:attachment fileName=\"tiny.pdf\"&gt;\n"
+"    &lt;p:"
+"document&gt;                                                      \n"
+"        A very tiny "
+"PDF                                                                                                \n"
+"    &lt;/p:document&gt;\n"
+"&lt;/m:attachment&gt;"
+msgstr ""
+"&lt;m:attachment fileName=\"tiny.pdf\"&gt;\n"
+"    &lt;p:"
+"document&gt;                                                      \n"
+"        A very tiny "
+"PDF                                                                                                \n"
+"    &lt;/p:document&gt;\n"
+"&lt;/m:attachment&gt;"
+
+#. Tag: para
+#: Mail.xml:63
+#, no-c-format
+msgid ""
+"If you had a set of files you wanted to attach (for example a set of "
+"pictures loaded from a database) you can just use a <literal>&lt;ui:"
+"repeat&gt;</literal>:"
+msgstr ""
+"Si vous avez un ensemble de fichiers que vous désirez joindre (par exemple, "
+"un ensemble d'images téléchargées de la base de données), vous pouvez "
+"simplement utiliser un <literal>&lt;ui:repeat&gt;</literal> :"
+
+#. Tag: programlisting
+#: Mail.xml:66
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{people}\" var=\"person\"&gt;\n"
+"    &lt;m:attachment value=\"#{person.photo}\" contentType=\"image/jpeg\"\n"
+"    fileName=\"#{person.firstname}_#{person.lastname}.jpg\"/&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+"&lt;ui:repeat value=\"#{people}\" var=\"person\"&gt;\n"
+"    &lt;m:attachment value=\"#{person.photo}\" contentType=\"image/jpeg\"\n"
+"    fileName=\"#{person.firstname}_#{person.lastname}.jpg\"/&gt;\n"
+"&lt;/ui:repeat&gt;"
+
+#. Tag: title
+#: Mail.xml:70
+#, no-c-format
+msgid "HTML/Text alternative part"
+msgstr "Partie alternative du HTML/Texte "
+
+#. Tag: para
+#: Mail.xml:71
+#, fuzzy, no-c-format
+msgid ""
+"Whilst most mail readers nowadays support HTML, some don&#39;t, so you can "
+"add a plain text alternative to your email body:"
+msgstr ""
+"Actuellement la plupart des lecteurs de courriel prennent en charge HTML, "
+"certains non, mais vous pouvez ajouter un texte en clair alternatif au corps "
+"de votre courriel :"
+
+#. Tag: programlisting
+#: Mail.xml:74
+#, fuzzy, no-c-format
+msgid ""
+"&lt;m:body&gt;\n"
+"    &lt;f:facet name=\"alternative\"&gt;Sorry, your email reader can&#39;t "
+"show our fancy email, \n"
+"please go to http://labs.jboss.com/jbossseam to explore Seam.&lt;/f:"
+"facet&gt;\n"
+"&lt;/m:body&gt;"
+msgstr ""
+"&lt;m:body&gt;\n"
+"    &lt;f:facet name=\"alternative\"&gt;Sorry, your email reader can't show "
+"our fancy email, \n"
+"please go to http://labs.jboss.com/jbossseam to explore Seam.&lt;/f:"
+"facet&gt;\n"
+"&lt;/m:body&gt;"
+
+#. Tag: title
+#: Mail.xml:78
+#, no-c-format
+msgid "Multiple recipients"
+msgstr "Destinataires multiples"
+
+#. Tag: para
+#: Mail.xml:79
+#, fuzzy, no-c-format
+msgid ""
+"Often you&#39;ll want to send an email to a group of recipients (for example "
+"your users). All of the recipient mail tags can be placed inside a "
+"<literal>&lt;ui:repeat&gt;</literal>:"
+msgstr ""
+"Vous souhaiterez souvent envoyer un courriel à un groupe de destinataires "
+"(par exemple vos utilisateurs). Toutes les balises de courriel du "
+"destinataire peuvent être placées à l'intérieur de <literal>&lt;ui:repeat&gt;"
+"</literal> :"
+
+#. Tag: programlisting
+#: Mail.xml:82
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{allUsers} var=\"user\"&gt;\n"
+"    &lt;m:to name=\"#{user.firstname} #{user.lastname}\" address=\"#{user."
+"emailAddress}\" /&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+"&lt;ui:repeat value=\"#{allUsers} var=\"user\"&gt;\n"
+"    &lt;m:to name=\"#{user.firstname} #{user.lastname}\" address=\"#{user."
+"emailAddress}\" /&gt;\n"
+"&lt;/ui:repeat&gt;"
+
+#. Tag: title
+#: Mail.xml:86
+#, no-c-format
+msgid "Multiple messages"
+msgstr "Messages multiples"
+
+#. Tag: para
+#: Mail.xml:87
+#, no-c-format
+msgid ""
+"Sometimes, however, you need to send a slightly different message to each "
+"recipient (e.g. a password reset). The best way to do this is to place the "
+"whole message inside a <literal>&lt;ui:repeat&gt;</literal>:"
+msgstr ""
+"Cependant, quelquefois, vous devez envoyer un message un peu différent à "
+"chaque destinataire (par ex. une réinitialisation du mot de passe). La "
+"meilleure façon est de placer le message entier dans un <literal>&lt;ui:"
+"repeat&gt;</literal> :"
+
+#. Tag: programlisting
+#: Mail.xml:90
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{people}\" var=\"p\"&gt;\n"
+"    &lt;m:message&gt;\n"
+"        &lt;m:from name=\"#{person.firstname} #{person.lastname}\"&gt;#"
+"{person.address}&lt;/m:from&gt;\n"
+"        &lt;m:to name=\"#{p.firstname}\"&gt;#{p.address}&lt;/m:to&gt;\n"
+"            ...\n"
+"    &lt;/m:message&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+"&lt;ui:repeat value=\"#{people}\" var=\"p\"&gt;\n"
+"    &lt;m:message&gt;\n"
+"        &lt;m:from name=\"#{person.firstname} #{person.lastname}\"&gt;#"
+"{person.address}&lt;/m:from&gt;\n"
+"        &lt;m:to name=\"#{p.firstname}\"&gt;#{p.address}&lt;/m:to&gt;\n"
+"            ...\n"
+"    &lt;/m:message&gt;\n"
+"&lt;/ui:repeat&gt;"
+
+#. Tag: title
+#: Mail.xml:94
+#, no-c-format
+msgid "Templating"
+msgstr "Modélisation"
+
+#. Tag: para
+#: Mail.xml:95
+#, no-c-format
+msgid ""
+"The mail templating example shows that facelets templating Just Works with "
+"the Seam mail tags."
+msgstr ""
+"L'exemple de modélisation du courriel indique que la modélisation facelets "
+"fonctionne avec les balises de courriel Seam.  "
+
+#. Tag: para
+#: Mail.xml:98
+#, no-c-format
+msgid "Our <literal>template.xhtml</literal> contains:"
+msgstr "Notre <literal>template.xhtml</literal> contient :"
+
+#. Tag: programlisting
+#: Mail.xml:101
+#, fuzzy, no-c-format
+msgid ""
+"&lt;m:message&gt;\n"
+"   &lt;m:from name=\"Seam\" address=\"do-not-reply at jboss.com\" /&gt;\n"
+"   &lt;m:to name=\"#{person.firstname} #{person.lastname}\"&gt;#{person."
+"address}&lt;/m:to&gt;\n"
+"   &lt;m:subject&gt;#{subject}&lt;/m:subject&gt;\n"
+"   &lt;m:body&gt;\n"
+"       &lt;html&gt;\n"
+"           &lt;body&gt;\n"
+"               &lt;ui:insert name=\"body\"&gt;This is the default body, "
+"specified by the template.\n"
+"                                   &lt;/ui:insert&gt;\n"
+"           &lt;/body&gt;\n"
+"       &lt;/html&gt;\n"
+"   &lt;/m:body&gt;\n"
+"&lt;/m:message&gt;"
+msgstr ""
+"&lt;m:message&gt;\n"
+"   &lt;m:from name=\"Seam\" address=\"do-not-reply at jboss.com\" /&gt;\n"
+"   &lt;m:to name=\"#{person.firstname} #{person.lastname}\"&gt;#{person."
+"address}&lt;/m:to&gt;\n"
+"   &lt;m:subject&gt;#{subject}&lt;/m:subject&gt;\n"
+"   &lt;m:body&gt;\n"
+"       &lt;html&gt;\n"
+"           &lt;body&gt;\n"
+"               &lt;ui:insert name=\"body\"&gt;This is the default body, "
+"specified by the template.\n"
+"               &lt;/ui:insert&gt;\n"
+"           &lt;/body&gt;\n"
+"       &lt;/html&gt;\n"
+"   &lt;/m:body&gt;\n"
+"&lt;/m:message&gt;"
+
+#. Tag: para
+#: Mail.xml:102
+#, no-c-format
+msgid "Our <literal>templating.xhtml</literal> contains:"
+msgstr "Notre <literal>templating.xhtml</literal> contient :"
+
+#. Tag: programlisting
+#: Mail.xml:105
+#, no-c-format
+msgid ""
+"&lt;ui:param name=\"subject\" value=\"Templating with Seam Mail\"/&gt;\n"
+"&lt;ui:define name=\"body\"&gt;\n"
+"    &lt;p&gt;This example demonstrates that you can easily use &lt;i&gt;"
+"facelets templating&lt;/i&gt; in email!&lt;/p&gt;\n"
+"&lt;/ui:define&gt;"
+msgstr ""
+"&lt;ui:param name=\"subject\" value=\"Templating with Seam Mail\"/&gt;\n"
+"&lt;ui:define name=\"body\"&gt;\n"
+"    &lt;p&gt;This example demonstrates that you can easily use &lt;i&gt;"
+"facelets templating&lt;/i&gt; in email!&lt;/p&gt;\n"
+"&lt;/ui:define&gt;"
+
+#. Tag: title
+#: Mail.xml:109
+#, no-c-format
+msgid "Internationalisation"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:110
+#, no-c-format
+msgid ""
+"Seam supports sending internationalised messages. By default, the encoding "
+"provided by JSF is used, but this can be overridden on the template:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:113
+#, no-c-format
+msgid ""
+"&lt;m:message charset=\"UTF-8\"&gt;\n"
+"   ...\n"
+"&lt;/m:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:114
+#, no-c-format
+msgid ""
+"The body, subject and recipient (and from) name will be encoded. You&#39;ll "
+"need to make sure facelets uses the correct charset for parsing your pages "
+"by setting encoding of the template:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:117
+#, no-c-format
+msgid "&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:121
+#, no-c-format
+msgid "Other Headers"
+msgstr "Autres en-têtes"
+
+#. Tag: para
+#: Mail.xml:122
+#, fuzzy, no-c-format
+msgid ""
+"Sometimes you&#39;ll want to add other headers to your email. Seam provides "
+"support for some (see <xref linkend=\"Seam_Reference_Guide-Email-Tags\"/>). "
+"For example, we can set the importance of the email, and ask for a read "
+"receipt:"
+msgstr ""
+"Quelquefois vous souhaiterez ajouter d'autres en-têtes à votre courriel. "
+"Seam fournit la prise en charge de quelques-uns (consultez <xref linkend="
+"\"Email-Tags\"/>). Par exemple, nous pouvons définir l'importance du "
+"courriel et demander un accusé de réception :"
+
+#. Tag: programlisting
+#: Mail.xml:125
+#, no-c-format
+msgid ""
+"&lt;m:message xmlns:m=\"http://jboss.com/products/seam/mail\"\n"
+"           importance=\"low\"\n"
+"           requestReadReceipt=\"true\"/&gt;"
+msgstr ""
+"&lt;m:message xmlns:m=\"http://jboss.com/products/seam/mail\"\n"
+"           importance=\"low\"\n"
+"           requestReadReceipt=\"true\"/&gt;"
+
+#. Tag: para
+#: Mail.xml:126
+#, no-c-format
+msgid ""
+"Otherise you can add any header to the message using the <literal>&lt;m:"
+"header&gt;</literal> tag:"
+msgstr ""
+"Alternativement, vous pouvez ajouter un en-tête quelconque au message, en "
+"utilisant la balise <literal>&lt;m:header&gt;</literal> :"
+
+#. Tag: programlisting
+#: Mail.xml:129
+#, no-c-format
+msgid "&lt;m:header name=\"X-Sent-From\" value=\"JBoss Seam\"/&gt;"
+msgstr "&lt;m:header name=\"X-Sent-From\" value=\"JBoss Seam\"/&gt;"
+
+#. Tag: title
+#: Mail.xml:135
+#, no-c-format
+msgid "Receiving emails"
+msgstr "Réception de courriel"
+
+#. Tag: para
+#: Mail.xml:136
+#, no-c-format
+msgid ""
+"If you are using EJB then you can use a MDB (Message Driven Bean) to receive "
+"email. Seam comes with an improved version of <literal>mail-ra.rar</literal> "
+"as distributed in JBoss AS; until the improvements make there way into a "
+"released version of JBoss AS, replacing the default <literal>rar</literal> "
+"with the one distributed with Seam is recommended."
+msgstr ""
+"Si vous utilisez EJB vous pouvez utiliser un MDB (Message Driven Bean) pour "
+"recevoir du courriel. Seam est accompagné d'une version améliorée de "
+"<literal>mail-ra.rar</literal> comme distribuée dans JBoss AS; jusqu'à ce "
+"que ces améliorations parviennent à une version distribuée de JBoss AS, il "
+"est recommandé de remplacer la valeur par défaut <literal>rar</literal> avec "
+"celle qui est distribuée avec Seam."
+
+#. Tag: para
+#: Mail.xml:139
+#, no-c-format
+msgid "You can configure it like this:"
+msgstr "Vous pouvez la configurer de la façon suivante :"
+
+#. Tag: programlisting
+#: Mail.xml:142
+#, no-c-format
+msgid ""
+"@MessageDriven(activationConfig={\n"
+"         @ActivationConfigProperty(propertyName=\"mailServer\", "
+"propertyValue=\"localhost\"),\n"
+"         @ActivationConfigProperty(propertyName=\"mailFolder\", "
+"propertyValue=\"INBOX\"),\n"
+"         @ActivationConfigProperty(propertyName=\"storeProtocol\", "
+"propertyValue=\"pop3\"),\n"
+"         @ActivationConfigProperty(propertyName=\"userName\", propertyValue="
+"\"seam\"),\n"
+"         @ActivationConfigProperty(propertyName=\"password\", propertyValue="
+"\"seam\")\n"
+"})\n"
+"@ResourceAdapter(\"mail-ra.rar\")\n"
+"@Name(\"mailListener\")\n"
+"public class MailListenerMDB implements MailListener {\n"
+"\n"
+"   @In(create=true)\n"
+"   private OrderProcessor orderProcessor;\n"
+"\n"
+"   public void onMessage(Message message) {\n"
+"      // Process the message\n"
+"      orderProcessor.process(message.getSubject());\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+"@MessageDriven(activationConfig={\n"
+"         @ActivationConfigProperty(propertyName=\"mailServer\", "
+"propertyValue=\"localhost\"),\n"
+"         @ActivationConfigProperty(propertyName=\"mailFolder\", "
+"propertyValue=\"INBOX\"),\n"
+"         @ActivationConfigProperty(propertyName=\"storeProtocol\", "
+"propertyValue=\"pop3\"),\n"
+"         @ActivationConfigProperty(propertyName=\"userName\", propertyValue="
+"\"seam\"),\n"
+"         @ActivationConfigProperty(propertyName=\"password\", propertyValue="
+"\"seam\")\n"
+"})\n"
+"@ResourceAdapter(\"mail-ra.rar\")\n"
+"@Name(\"mailListener\")\n"
+"public class MailListenerMDB implements MailListener {\n"
+"\n"
+"   @In(create=true)\n"
+"   private OrderProcessor orderProcessor;\n"
+"\n"
+"   public void onMessage(Message message) {\n"
+"      // Process the message\n"
+"      orderProcessor.process(message.getSubject());\n"
+"   }\n"
+"   \n"
+"}"
+
+#. Tag: para
+#: Mail.xml:143
+#, fuzzy, no-c-format
+msgid ""
+"Each message received will cause <literal>onMessage(Message message)</"
+"literal> to be called. Most seam annotations will work inside a MDB but you "
+"musn&#39;t access the persistence context."
+msgstr ""
+"Chaque message reçu entraînera l'appel de <literal>onMessage(Message message)"
+"</literal>. La plupart des annotations Seam fonctionneront dans un MDB mais "
+"vous ne devez pas accéder au contexte de persistance. "
+
+#. Tag: para
+#: Mail.xml:146
+#, no-c-format
+msgid ""
+"You can find more information on the default <literal>mail-ra.rar</literal> "
+"at <ulink url=\"http://wiki.jboss.org/wiki/Wiki.jsp?page=InboundJavaMail"
+"\">http://wiki.jboss.org/wiki/Wiki.jsp?page=InboundJavaMail</ulink>. The "
+"version distributed with Seam also includes a <literal>debug</literal> "
+"property to enable JavaMail debugging, a <literal>flush</literal> property "
+"(by default true) to disable flushing a <literal>POP3</literal> mailbox "
+"after successfullying delivering a message to your MDB and a <literal>port</"
+"literal> property to override the default TCP port. Beware that the api for "
+"this may be altered as changes make there way into JBoss AS."
+msgstr ""
+"Vous trouverez de plus amples informations sur la valeur par défaut à "
+"<literal>mail-ra.rar</literal> <ulink url=\"http://wiki.jboss.org/wiki/Wiki."
+"jsp?page=InboundJavaMail\">http://wiki.jboss.org/wiki/Wiki.jsp?"
+"page=InboundJavaMail</ulink>. La version distribuée avec Seam inclut "
+"également une propriété <literal>debug</literal> pour activer le débogage "
+"JavaMail, une propriété <literal>flush</literal> (à true, par défaut) pour "
+"désactiver le vidage d'une boîte à lettre <literal>POP3</literal> après "
+"avoir réussi l'envoi d'un message à votre MDB et une propriété "
+"<literal>port</literal> pour surcharger le port TCP. Attention, à cet effet, "
+"l'API peut être modifié alors que les changements parviennent à JBoss AS."
+
+#. Tag: para
+#: Mail.xml:149
+#, fuzzy, no-c-format
+msgid ""
+"If you aren&#39;t using JBoss AS you can still use <literal>mail-ra.rar</"
+"literal> (included with Seam in the mail directory), or you may find your "
+"application server includes a similar adapter."
+msgstr ""
+"Si vous n'utilisez pas JBoss AS, vous pouvez encore utiliser <literal>mail-"
+"ra.rar</literal> (y compris avec Seam dans le répertoire de courriel), ou "
+"vous constaterez que votre serveur d'applications inclut un adaptateur "
+"similaire. "
+
+#. Tag: title
+#: Mail.xml:155
+#, no-c-format
+msgid "Configuration"
+msgstr "Configuration"
+
+#. Tag: para
+#: Mail.xml:156
+#, fuzzy, no-c-format
+msgid ""
+"To include Email support in your application, include <literal>jboss-seam-"
+"mail.jar</literal> in your WEB-INF/lib directory. If you are using JBoss AS "
+"there is no further configuration needed to use Seam&#39;s email support. "
+"Otherwise you need to make sure you have the JavaMail API, an implementation "
+"of the JavaMail API present (the API and impl used in JBoss AS are "
+"distributed with seam as <literal>lib/mail.jar</literal>), and a copy of the "
+"Java Activation Framework (distributed with seam as <literal>lib/activation."
+"jar</literal>."
+msgstr ""
+"Pour inclure la prise en charge de courriel dans votre application, incluez "
+"<literal>jboss-seam-mail.jar</literal> dans votre répertoire WEB-INF/lib. Si "
+"vous utilisez JBoss AS, une configuration supplémentaire n'est pas "
+"nécessaire pour utiliser la prise en charge du courriel de Seam. Autrement, "
+"vous devez vous assurer que vous avez l'API JavaMail, une implémentation de "
+"l'API JavaMail présent (l'API et l'implémentation utilisés dans JBoss AS "
+"sont distribués avec Seam en tant que <literal>lib/mail.jar</literal>), de "
+"même qu'une copie du Java Activation Framework (distribué avec Seam en tant "
+"que <literal>lib/activation.jar</literal>."
+
+#. Tag: para
+#: Mail.xml:159
+#, no-c-format
+msgid ""
+"The Seam Email module requires the use of Facelets as the view technology. "
+"Future versions of the library may also support the use of JSP. "
+"Additionally, it requires the use of the seam-ui package."
+msgstr ""
+"Le module de courriel Seam requiert l'utilisation de Facelets en tant "
+"qu'affichage de la technologie. De futures versions de la bibliothèque "
+"pourront aussi prendre en charge l'utilisation de JSP. Par ailleurs, il "
+"exige l'utilisation du paquetage seam-ui."
+
+#. Tag: para
+#: Mail.xml:162
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>mailSession</literal> component uses JavaMail to talk to a &#39;"
+"real&#39; SMTP server."
+msgstr ""
+"Le composant <literal>mailSession</literal> utilise JavaMail pour parler à "
+"un 'vrai' serveur SMTP."
+
+#. Tag: literal
+#: Mail.xml:166
+#, no-c-format
+msgid "mailSession"
+msgstr "mailSession"
+
+#. Tag: para
+#: Mail.xml:167
+#, no-c-format
+msgid ""
+"A JavaMail Session may be available via a JNDI lookup if you are working in "
+"an JEE environment or you can use a Seam configured Session."
+msgstr ""
+"Une session JavaMail peut être disponible, via une recherche JNDI si vous "
+"travaillez dans un environnement JEE ou vous pouvez utilisez une session "
+"Seam configurée. "
+
+#. Tag: para
+#: Mail.xml:170
+#, fuzzy, no-c-format
+msgid ""
+"The mailSession component&#39;s properties are described in more detail in "
+"<xref linkend=\"Seam_Reference_Guide-Built_in_Seam_components-"
+"Mail_related_components\"/>."
+msgstr ""
+"Les propriétés du composant mailSession sont décrites en détails dans <xref "
+"linkend=\"Built_in_Seam_components-Mail_related_components\"/>."
+
+#. Tag: title
+#: Mail.xml:174
+#, no-c-format
+msgid "JNDI lookup in JBoss AS"
+msgstr "Recherche JNDI dans JBoss AS"
+
+#. Tag: para
+#: Mail.xml:175
+#, no-c-format
+msgid ""
+"The JBossAS <literal>deploy/mail-service.xml</literal> configures a JavaMail "
+"session binding into JNDI. The default service configuration will need "
+"altering for your network. <ulink url=\"http://wiki.jboss.org/wiki/Wiki.jsp?"
+"page=JavaMail\">http://wiki.jboss.org/wiki/Wiki.jsp?page=JavaMail</ulink> "
+"describes the service in more detail."
+msgstr ""
+"Le <literal>deploy/mail-service.xml</literal> de JBossAS configure une "
+"association de sessions JavaMail dans JNDI. La configuration du service par "
+"défaut devra être modifiée pour votre réseau. <ulink url=\"http://wiki.jboss."
+"org/wiki/Wiki.jsp?page=JavaMail\">http://wiki.jboss.org/wiki/Wiki.jsp?"
+"page=JavaMail</ulink> décrit le service de façon plus détaillée."
+
+#. Tag: programlisting
+#: Mail.xml:178
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"        xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"        xmlns:mail=\"http://jboss.com/products/seam/mail\"&gt;\n"
+"        \n"
+"    &lt;mail:mail-session session-jndi-name=\"java:/Mail\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"        xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"        xmlns:mail=\"http://jboss.com/products/seam/mail\"&gt;\n"
+"        \n"
+"    &lt;mail:mail-session session-jndi-name=\"java:/Mail\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Mail.xml:179
+#, fuzzy, no-c-format
+msgid ""
+"Here we tell Seam to get the mail session bound to <literal>java:/Mail</"
+"literal> from JNDI."
+msgstr ""
+"Ici nous indiquons à Seam de lier session de courriel à <literal>java:/Mail</"
+"literal> depuis JNDI."
+
+#. Tag: title
+#: Mail.xml:185
+#, no-c-format
+msgid "Seam configured Session"
+msgstr "Session configurée Seam "
+
+#. Tag: para
+#: Mail.xml:186
+#, no-c-format
+msgid ""
+"A mail session can be configured via <literal>components.xml</literal>. Here "
+"we tell Seam to use <literal>smtp.example.com</literal> as the smtp server,"
+msgstr ""
+"Une session de courriel peut être configurée, via <literal>components.xml</"
+"literal>. Ici nous indiquons à Seam d'utiliser <literal>smtp.example.com</"
+"literal> comme le serveur smtp,"
+
+#. Tag: programlisting
+#: Mail.xml:189
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"        xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"        xmlns:mail=\"http://jboss.com/products/seam/mail\"&gt;\n"
+"        \n"
+"    &lt;mail:mail-session host=\"smtp.example.com\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"        xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"        xmlns:mail=\"http://jboss.com/products/seam/mail\"&gt;\n"
+"        \n"
+"    &lt;mail:mail-session host=\"smtp.example.com\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+
+#. Tag: title
+#: Mail.xml:197
+#, no-c-format
+msgid "Tags"
+msgstr "Balises"
+
+#. Tag: para
+#: Mail.xml:198
+#, no-c-format
+msgid ""
+"Emails are generated using tags in the <literal>http://jboss.com/products/"
+"seam/mail</literal> namespace. Documents should always have the "
+"<literal>message</literal> tag at the root of the message. The message tag "
+"prepares Seam to generate an email."
+msgstr ""
+"Les courriels sont générés en utilisant des balises dans l'espace de noms "
+"<literal>http://jboss.com/products/seam/mail</literal>. Les documents "
+"devraient toujours avoir la balise <literal>message</literal> à la racine du "
+"message. La balise du message prépare Seam à générer un courriel. "
+
+#. Tag: para
+#: Mail.xml:201
+#, fuzzy, no-c-format
+msgid ""
+"The standard templating tags of facelets can be used as normal. Inside the "
+"body you can use any JSF tag which doesn&#39;t require access to external "
+"resources (stylesheets, javascript)."
+msgstr ""
+"Les balises de modélisation standards de facelets peuvent être utilisées "
+"comme à l'accoutumée. À l'intérieur du corps vous pouvez utiliser toute "
+"balise JSF qui n'exige pas d'accès à des ressources externes (feuilles de "
+"style, javascript)."
+
+#. Tag: term
+#: Mail.xml:206
+#, no-c-format
+msgid "&lt;m:message&gt;"
+msgstr "&lt;m:message&gt;"
+
+#. Tag: para
+#: Mail.xml:208
+#, no-c-format
+msgid "Root tag of a mail message"
+msgstr "Balise racine d'un message courriel"
+
+#. Tag: para
+#: Mail.xml:213
+#, no-c-format
+msgid ""
+"<literal>importance</literal> &mdash; low, normal or high. By default "
+"normal, this sets the importance of the mail message."
+msgstr ""
+"<literal>importance</literal> - faible, normale ou forte. Par défaut,"
+"normale, cela définit l'importance du message courriel."
+
+#. Tag: para
+#: Mail.xml:218
+#, no-c-format
+msgid ""
+"<literal>precedence</literal> &mdash; sets the precedence of the message (e."
+"g. bulk)."
+msgstr ""
+"<literal>precedence</literal> &mdash; définit la précédence du message (par "
+"ex. envoi en masse)."
+
+#. Tag: para
+#: Mail.xml:223
+#, no-c-format
+msgid ""
+"<literal>requestReadReceipt</literal> &mdash; by default false, if set, a "
+"read receipt will be request will be added, with the read receipt being sent "
+"to the <literal>From:</literal> address."
+msgstr ""
+"<literal>requestReadReceipt</literal> &mdash; par défaut, à false, s'il est "
+"défini, un accusé de réception sera ajouté et l'accusé de réception sera "
+"envoyé à l'adresse <literal>From:</literal>."
+
+#. Tag: para
+#: Mail.xml:228
+#, fuzzy, no-c-format
+msgid ""
+"<literal>urlBase</literal> &mdash; If set, the value is prepended to the "
+"<literal>requestContextPath</literal> allowing you to use components such as "
+"<literal>&lt;h:graphicImage&gt;</literal> in your emails."
+msgstr ""
+"<literal>urlBase</literal> - Si elle est définie, la valeur est placée en "
+"avant de <literal>requestContextPath</literal>, ce qui vous permet "
+"d'utiliser les composants tels que <literal>&lt;h:graphicImage&gt;</literal> "
+"dans vos courriels. "
+
+#. Tag: term
+#: Mail.xml:236
+#, no-c-format
+msgid "&lt;m:from&gt;"
+msgstr "&lt;m:from&gt;"
+
+#. Tag: para
+#: Mail.xml:238
+#, fuzzy, no-c-format
+msgid ""
+"Set&#39;s the From: address for the email. You can only have one of these "
+"per email."
+msgstr ""
+"Définit l'adresse From: pour le courriel. Vous ne pouvez en avoir qu'un par "
+"courriel."
+
+#. Tag: para
+#: Mail.xml:243
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the name the email should come from."
+msgstr ""
+"<literal>name</literal> &mdash; le nom duquel le courriel devrait provenir."
+
+#. Tag: para
+#: Mail.xml:248 Mail.xml:263
+#, no-c-format
+msgid ""
+"<literal>address</literal> &mdash; the email address the email should come "
+"from."
+msgstr ""
+"<literal>address</literal> - l'adresse courriel d'où devrait provenir le "
+"courriel."
+
+#. Tag: term
+#: Mail.xml:256
+#, no-c-format
+msgid "&lt;m:replyTo&gt;"
+msgstr "&lt;m:replyTo&gt;"
+
+#. Tag: para
+#: Mail.xml:258
+#, fuzzy, no-c-format
+msgid ""
+"Set&#39;s the Reply-to: address for the email. You can only have one of "
+"these per email."
+msgstr ""
+"Définit l'adresse Reply-to: pour le courriel. Vous ne pouvez en avoir qu'un "
+"par courriel."
+
+#. Tag: term
+#: Mail.xml:271
+#, no-c-format
+msgid "&lt;m:to&gt;"
+msgstr "&lt;m:to&gt;"
+
+#. Tag: para
+#: Mail.xml:273
+#, no-c-format
+msgid ""
+"Add a recipient to the email. Use multiple &lt;m:to&gt; tags for multiple "
+"recipients. This tag can be safely placed inside a repeat tag such as &lt;ui:"
+"repeat&gt;."
+msgstr ""
+"Ajoute un destinataire au courriel. Utilisez de multiples &lt;m:to&gt; "
+"balises pour de multiples destinataires. Cette balise peut être placée de "
+"façon sécurisée dans une balise repeat, comme &lt;ui:repeat&gt;."
+
+#. Tag: para
+#: Mail.xml:278 Mail.xml:298 Mail.xml:318
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the name of the recipient."
+msgstr "<literal>name</literal> &mdash; le nom du destinataire."
+
+#. Tag: para
+#: Mail.xml:283 Mail.xml:303 Mail.xml:323
+#, no-c-format
+msgid "<literal>address</literal> &mdash; the email address of the recipient."
+msgstr "<literal>address</literal> &mdash; l'adresse courriel du destinataire."
+
+#. Tag: term
+#: Mail.xml:291
+#, no-c-format
+msgid "&lt;m:cc&gt;"
+msgstr "&lt;m:cc&gt;"
+
+#. Tag: para
+#: Mail.xml:293
+#, no-c-format
+msgid ""
+"Add a cc recipient to the email. Use multiple &lt;m:cc&gt; tags for multiple "
+"ccs. This tag can be safely placed inside a repeat tag such as &lt;ui:"
+"repeat&gt;."
+msgstr ""
+"Ajoute un destinataire cc au courriel. Utilisez de multiples &lt;m:cc&gt; "
+"balises pour de multiples ccs. Cette balise peut être placée de façon "
+"sécurisée dans une balise repeat, comme &lt;ui:repeat&gt;."
+
+#. Tag: term
+#: Mail.xml:311
+#, no-c-format
+msgid "&lt;m:bcc&gt;"
+msgstr "&lt;m:bcc&gt;"
+
+#. Tag: para
+#: Mail.xml:313
+#, no-c-format
+msgid ""
+"Add a bcc recipient to the email. Use multiple &lt;m:bcc&gt; tags for "
+"multiple bccs. This tag can be safely placed inside a repeat tag such as &lt;"
+"ui:repeat&gt;."
+msgstr ""
+"Ajoute un destinataire bcc au courriel. Utilisez de multiples &lt;m:bcc&gt; "
+"balises pour de multiples bccs. Cette balise peut être placée de façon "
+"sécurisée dans une balise repeat, comme &lt;ui:repeat&gt;."
+
+#. Tag: term
+#: Mail.xml:331
+#, no-c-format
+msgid "&lt;m:header&gt;"
+msgstr "&lt;m:header&gt;"
+
+#. Tag: para
+#: Mail.xml:333
+#, no-c-format
+msgid ""
+"Add a header to the email (e.g. <literal>X-Sent-From: JBoss Seam</literal>"
+msgstr ""
+"Ajoute un en-tête au courriel (par ex. <literal>X-Sent-From: JBoss Seam</"
+"literal>"
+
+#. Tag: para
+#: Mail.xml:338
+#, no-c-format
+msgid ""
+"<literal>name</literal> &mdash; The name of the header to add (e.g. "
+"<literal>X-Sent-From</literal>)."
+msgstr ""
+"<literal>name</literal> &mdash; Le nom de l'en-tête à ajouter (par ex. "
+"<literal>X-Sent-From</literal>)."
+
+#. Tag: para
+#: Mail.xml:343
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; The value of the header to add (e.g. "
+"<literal>JBoss Seam</literal>)."
+msgstr ""
+"<literal>value</literal> &mdash; La valeur de l'en-tête à ajouter (par ex. "
+"<literal>JBoss Seam</literal>)."
+
+#. Tag: term
+#: Mail.xml:351
+#, no-c-format
+msgid "&lt;m:attachment&gt;"
+msgstr "&lt;m:attachment&gt;"
+
+#. Tag: para
+#: Mail.xml:353
+#, no-c-format
+msgid "Add an attachment to the email."
+msgstr "Ajoute une pièce jointe au courriel."
+
+#. Tag: para
+#: Mail.xml:358
+#, no-c-format
+msgid "<literal>value</literal> &mdash; The file to attach:"
+msgstr "<literal>value</literal> &mdash; Le fichier à attacher :"
+
+#. Tag: para
+#: Mail.xml:363
+#, no-c-format
+msgid ""
+"<literal>String</literal> &mdash; A <literal>String</literal> is interpreted "
+"as a path to file within the classpath"
+msgstr ""
+"<literal>String</literal> &mdash; Une <literal>String</literal> est "
+"interprétée comme un chemin vers un fichier dans un chemin de classe. "
+
+#. Tag: para
+#: Mail.xml:368
+#, no-c-format
+msgid ""
+"<literal>java.io.File</literal> &mdash; An EL expression can reference a "
+"<literal>File</literal> object"
+msgstr ""
+"<literal>java.io.File</literal> &mdash; Une expression EL peut référencer un "
+"objet <literal>File</literal> "
+
+#. Tag: para
+#: Mail.xml:373
+#, no-c-format
+msgid ""
+"<literal>java.net.URL</literal> &mdash; An EL expression can reference a "
+"<literal>URL</literal> object"
+msgstr ""
+"<literal>java.net.URL</literal> &mdash; Une expression EL peut référencer un "
+"objet<literal>URL</literal> "
+
+#. Tag: para
+#: Mail.xml:378
+#, no-c-format
+msgid ""
+"<literal>java.io.InputStream</literal> &mdash; An EL expression can "
+"reference an <literal>InputStream</literal>. In this case both a "
+"<literal>fileName</literal> and a <literal>contentType</literal> must be "
+"specified."
+msgstr ""
+"<literal>java.io.InputStream</literal> &mdash; Une expression EL peut "
+"référencer un <literal>InputStream</literal>. Dans ce cas, à la fois un "
+"<literal>fileName</literal> et un <literal>contentType</literal> doivent "
+"être spécifiés."
+
+#. Tag: para
+#: Mail.xml:383
+#, no-c-format
+msgid ""
+"<literal>byte[]</literal> &mdash; An EL expression can reference an "
+"<literal>byte[]</literal>. In this case both a <literal>fileName</literal> "
+"and a <literal>contentType</literal> must be specified."
+msgstr ""
+"<literal>byte[]</literal> &mdash; Une expression EL peut référencer "
+"<literal>byte[]</literal>. Dans ce cas, à la fois un <literal>fileName</"
+"literal> et un <literal>contentType</literal> peuvent être spécifiés."
+
+#. Tag: para
+#: Mail.xml:388
+#, no-c-format
+msgid "If the value attribute is ommitted:"
+msgstr "Si l'attribut de la valeur est omis :"
+
+#. Tag: para
+#: Mail.xml:393
+#, no-c-format
+msgid ""
+"If this tag contains a <literal>&lt;p:document&gt;</literal> tag, the "
+"document described will be generated and attached to the email. A "
+"<literal>fileName</literal> should be specfied."
+msgstr ""
+"Si cette balise contient une balise <literal>&lt;p:document&gt;</literal>, "
+"le document décrit sera généré et joint au courriel. Un <literal>fileName</"
+"literal> devra être spécifié."
+
+#. Tag: para
+#: Mail.xml:398
+#, no-c-format
+msgid ""
+"If this tag contains other JSF tags a HTML document will be generated from "
+"them and attached to the email. A <literal>fileName</literal> should be "
+"specfied."
+msgstr ""
+"Si cette balise contient d'autres balises JSF, un document HTML en sera "
+"généré et il sera joint au courriel. Un <literal>fileName</literal> devrait "
+"être spécifié."
+
+#. Tag: para
+#: Mail.xml:405
+#, no-c-format
+msgid ""
+"<literal>fileName</literal> &mdash; Specify the file name to use for the "
+"attached file."
+msgstr ""
+"<literal>fileName</literal> &mdash; Indique le nom du fichier à utiliser "
+"pour le fichier joint. "
+
+#. Tag: para
+#: Mail.xml:410
+#, no-c-format
+msgid ""
+"<literal>contentType</literal> &mdash; Specify the MIME type of the attached "
+"file"
+msgstr ""
+"<literal>contentType</literal> &mdash; indique le type MIME du fichier joint"
+
+#. Tag: term
+#: Mail.xml:418
+#, no-c-format
+msgid "&lt;m:subject&gt;"
+msgstr "&lt;m:subject&gt;"
+
+#. Tag: para
+#: Mail.xml:420
+#, fuzzy, no-c-format
+msgid "Set&#39;s the subject for the email."
+msgstr "Définit le sujet du courriel."
+
+#. Tag: term
+#: Mail.xml:426
+#, no-c-format
+msgid "&lt;m:body&gt;"
+msgstr "&lt;m:body&gt;"
+
+#. Tag: para
+#: Mail.xml:428
+#, fuzzy, no-c-format
+msgid ""
+"Set&#39;s the body for the email. Supports an <literal>alternative</literal> "
+"facet which, if an HTML email is generated can contain alternative text for "
+"a mail reader which doesn&#39;t support html."
+msgstr ""
+"Définit le corps du courriel. Prend en charge un facet <literal>alternative</"
+"literal> qui, si un courriel HTML est généré, peut contenir un texte "
+"alternatif pour un lecteur de courriel qui ne prend pas en charge html. "
+
+#. Tag: para
+#: Mail.xml:433
+#, no-c-format
+msgid ""
+"<literal>type</literal> &mdash; If set to <literal>plain</literal> then a "
+"plain text email will be generated otherwise an HTML email is generated."
+msgstr ""
+"<literal>type</literal> &mdash; si défini à <literal>plain</literal>, un "
+"courriel en texte clairsera généré, autrement un courriel HTML est généré."

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Persistence.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Persistence.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Persistence.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1068 @@
+# translation of Persistence.po to french
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# myriam malga <mmalga at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Persistence\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2007-08-07 10:29+1000\n"
+"Last-Translator: myriam malga <mmalga at redhat.com>\n"
+"Language-Team: french\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Persistence.xml:6
+#, no-c-format
+msgid "Seam and Object/Relational Mapping"
+msgstr "Seam et objet/association relationnelle"
+
+#. Tag: para
+#: Persistence.xml:7
+#, fuzzy, no-c-format
+msgid ""
+"Seam provides extensive support for the two most popular persistence "
+"architectures for Java: Hibernate3, and the Java Persistence API introduced "
+"with EJB 3.0. Seam&#39;s unique state-management architecture allows the "
+"most sophisticated ORM integration of any web application framework."
+msgstr ""
+"Seam offre un support extensif pour les deux architectures de persistance "
+"les plus populaires avec Java : Hibernate3, et l'API de Persistance Java, "
+"introduits dans EJB 3.0. L'unique architecture de gestion d'état Seam permet "
+"une intégration ORM de tout framework d'application web, des plus "
+"sophistiquées. "
+
+#. Tag: title
+#: Persistence.xml:11
+#, no-c-format
+msgid "Introduction"
+msgstr "Introduction"
+
+#. Tag: para
+#: Persistence.xml:12
+#, no-c-format
+msgid ""
+"Seam grew out of the frustration of the Hibernate team with the "
+"statelessness typical of the previous generation of Java application "
+"architectures. The state management architecture of Seam was originally "
+"designed to solve problems relating to persistence&mdash;in particular "
+"problems associated with <emphasis>optimistic transaction processing</"
+"emphasis>. Scalable online applications always use optimistic transactions. "
+"An atomic (database/JTA) level transaction should not span a user "
+"interaction unless the application is designed to support only a very small "
+"number of concurrent clients. But almost all interesting work involves first "
+"displaying data to a user, and then, slightly later, updating the same data. "
+"So Hibernate was designed to support the idea of a persistence context which "
+"spanned an optimistic transaction."
+msgstr ""
+"Au départ, Seam est issu de la frustration de l'équipe Hibernate avec le "
+"manque d'état (de l'anglais statelessness) typique de la génération "
+"précédente des architectures d'application Java. L'architecture de gestion "
+"d'état de Seam était conçue à l'origine pour résoudre les problèmes liés à "
+"la persistance&mdash;en particulier les problèmes associés au "
+"<emphasis>traitement de transactions optimistes</emphasis>. Les applications "
+"évolutives en ligne utilisent toujours des transactions optimistes. Une "
+"transaction, niveau atomique (base de données/JTA) ne devrait pas s'étendre "
+"sur une interaction utilisateur à moins que l'application ne soit conçue "
+"pour supporter uniquement un très petit nombrede clients concurrents. Mais "
+"presque tout le travail le plus intéressant engage d'abord l'affichage des "
+"données à un utilisateur, et ensuite, un peu plus tard, la mise à jour de "
+"ces mêmes données. Ainsi Hibernate a été conçu pour supporter l'idée d'un "
+"contexte persistant qui s'étendrait sur une transaction optimiste. "
+
+#. Tag: para
+#: Persistence.xml:15
+#, no-c-format
+msgid ""
+"Unfortunately, the so-called \"stateless\" architectures that preceded Seam "
+"and EJB 3.0 had no construct for representing an optimistic transaction. So, "
+"instead, these architectures provided persistence contexts scoped to the "
+"atomic transaction. Of course, this resulted in many problems for users, and "
+"is the cause of the number one user complaint about Hibernate: the dreaded "
+"<literal>LazyInitializationException</literal>. What we need is a construct "
+"for representing an optimistic transaction in the application tier."
+msgstr ""
+"Malheureusement, les architectures appelées \"stateless\" qui ont précédé "
+"Seam et EJB 3.0 n'avaient pas de concept capable de représenter une "
+"transaction optimiste. Ainsi, à la place les architectures fournissaient des "
+"contextes de persistance scoped à la transaction atomique. Évidemment, cela "
+"a entraîné de nombreux problèmes pour les utilisateurs, et c'est la cause "
+"essentielle des plaintes d'utilisateurs à propos de Hibernate : la terrible "
+"<literal>LazyInitializationException</literal>. Nous avons besoin d'un "
+"concept pour représenter une transaction optimiste dans le niveau "
+"application. "
+
+#. Tag: para
+#: Persistence.xml:18
+#, no-c-format
+msgid ""
+"EJB 3.0 recognizes this problem, and introduces the idea of a stateful "
+"component (a stateful session bean) with an <emphasis>extended persistence "
+"context</emphasis> scoped to the lifetime of the component. This is a "
+"partial solution to the problem (and is a useful construct in and of itself) "
+"however there are two problems:"
+msgstr ""
+"EJB 3.0 reconnaît ce problème, et introduit l'idée d'un composant stateful "
+"(un bean session stateful) avec un <emphasis>contexte de persistance étendu</"
+"emphasis> scoped au cycle de vie du composant. Ce n'est qu'une solution "
+"partielle au problème (et c'est un concept utile en lui-même) toutefois il "
+"existe deux problèmes :"
+
+#. Tag: para
+#: Persistence.xml:23
+#, no-c-format
+msgid ""
+"The lifecycle of the stateful session bean must be managed manually via code "
+"in the web tier (it turns out that this is a subtle problem and much more "
+"difficult in practice than it sounds)."
+msgstr ""
+"Le cycle de vie du bean session stateful doit être géré manuellement via le "
+"code dans le niveau web (cela devient un problème subtile et beaucoup plus "
+"difficile à résoudre en pratique qu'il n'y paraît). "
+
+#. Tag: para
+#: Persistence.xml:28
+#, no-c-format
+msgid ""
+"Propagation of the persistence context between stateful components in the "
+"same optimistic transaction is possible, but tricky."
+msgstr ""
+"La propagation du contexte de persistance entre les composants stateful dans "
+"la transaction optimiste est possible mais compliquée."
+
+#. Tag: para
+#: Persistence.xml:33
+#, no-c-format
+msgid ""
+"Seam solves the first problem by providing conversations, and stateful "
+"session bean components scoped to the conversation. (Most conversations "
+"actually represent optimistic transactions in the data layer.) This is "
+"sufficient for many simple applications (such as the Seam booking demo) "
+"where persistence context propagation is not needed. For more complex "
+"applications, with many loosly-interacting components in each conversation, "
+"propagation of the persistence context across components becomes an "
+"important issue. So Seam extends the persistence context management model of "
+"EJB 3.0, to provide conversation-scoped extended persistence contexts."
+msgstr ""
+"Seam résout le premier problème en fournissant des conversations, et des "
+"composants bean session stateful scoped à la conversation. (La plupart des "
+"conversations représentent des transactions optimistes dans la couche de "
+"données) Cela est suffisant pour de nombreuses applications simples (comme "
+"la démonstration de réservation Seam) où la propagation du contexte de "
+"persistance n'est pas nécessaire. Pour des applications plus complexes, avec "
+"de nombreux composants, à faible interaction dans chaque conversation, la "
+"propagation du contexte de persistance sur tous les composants devient un "
+"problème important. Ainsi, Seam étend la gestion du modèle de contexte de "
+"persistance de l'EJB 3.0 pour fournir des contextes de persistance étendus, "
+"conversation scoped. "
+
+#. Tag: title
+#: Persistence.xml:39
+#, no-c-format
+msgid "Seam managed transactions"
+msgstr "Transactions gérées par Seam"
+
+#. Tag: para
+#: Persistence.xml:40
+#, no-c-format
+msgid ""
+"EJB session beans feature declarative transaction management. The EJB "
+"container is able to start a transaction transparently when the bean is "
+"invoked, and end it when the invocation ends. If we write a session bean "
+"method that acts as a JSF action listener, we can do all the work associated "
+"with that action in one transaction, and be sure that it is committed or "
+"rolled back when we finish processing the action. This is a great feature, "
+"and all that is needed by some Seam applications."
+msgstr ""
+"Les beans session EJB offre une gestion de transactions déclarative. Le "
+"conteneur EJB doit commencer une transaction de façon transparente quand le "
+"bean est invoqué, et le terminer quand l'invocation se termine. Si nous "
+"écrivons une méthode de bean sessionqui fonctionne comme un listener "
+"d'actions JSF, nous pouvons effectuer tout le travail associé à l'action "
+"dans une transaction et être sûr qu'il est sauvegardé ou retourné en arrière "
+"quand nous finissons le traitement de l'action. C'est une fonction superbe "
+"et tout ce dont vous avez besoin pour certaines applications Seam."
+
+#. Tag: para
+#: Persistence.xml:43
+#, no-c-format
+msgid ""
+"However, there is a problem with this approach. A Seam application may not "
+"perform all data access for a request from a single method call to a session "
+"bean."
+msgstr ""
+"Cependant il existe un problème avec cette approche. Une application Seam "
+"peut ne pas effectuer tous les accès de données pour une requête depuis un "
+"seul appel de méthode à un bean session. "
+
+#. Tag: para
+#: Persistence.xml:48
+#, no-c-format
+msgid ""
+"The request might require processing by several loosly-coupled components, "
+"each of which is called independently from the web layer. It is common to "
+"see several or even many calls per request from the web layer to EJB "
+"components in Seam."
+msgstr ""
+"La requête peut demander le traitement de plusieurs composants à faible "
+"dépendance, chacun d'entre eux étant appelé indépendamment depuis la couche "
+"web. Il est fréquent de voir plusieurs ou même de nombreux appels par "
+"requête depuis la couche web, aux composants EJB dans Seam."
+
+#. Tag: para
+#: Persistence.xml:53
+#, no-c-format
+msgid "Rendering of the view might require lazy fetching of associations."
+msgstr ""
+"Le rendu de l'affichage peut exiger une récupération paresseuse des "
+"associations."
+
+#. Tag: para
+#: Persistence.xml:58
+#, no-c-format
+msgid ""
+"The more transactions per request, the more likely we are to encounter "
+"atomicity and isolation problems when our application is processing many "
+"concurrent requests. Certainly, all write operations should occur in the "
+"same transaction!"
+msgstr ""
+"Plus il y a de transactions par requête, plus il est possible de rencontrer "
+"des problèmes d'atomicité et d'isolation quand notre application traite de "
+"nombreuses requêtes concurrentes. Certainement, toutes les opérations "
+"d'écriture devraient survenir dans la même transaction !"
+
+#. Tag: para
+#: Persistence.xml:61
+#, fuzzy, no-c-format
+msgid ""
+"Hibernate users developed the <emphasis>\"open session in view\"</emphasis> "
+"pattern to work around this problem. In the Hibernate community, \"open "
+"session in view\" was historically even more important because frameworks "
+"like Spring use transaction-scoped persistence contexts. So rendering the "
+"view would cause <literal>LazyInitializationException</literal>s when "
+"unfetched associations were accessed."
+msgstr ""
+"Les utilisateurs de Hibernate ont développé le schéma <emphasis>\"ouvrir la "
+"session dans l'affichage\"</emphasis> pour contourner ce problème. Dans la "
+"communauté Hibernate, \"ouvrir la session dans l'affichage\" était même "
+"historiquement plus important parce que les frameworks comme Spring "
+"utilisent des contextes de persistance, transaction-scoped. Donc le rendu de "
+"l'affichage entraînerait des <literal>LazyInitializationException</literal>s "
+"quand des associations unfetched sont accédées."
+
+#. Tag: para
+#: Persistence.xml:64
+#, no-c-format
+msgid ""
+"This pattern is usually implemented as a single transaction which spans the "
+"entire request. There are several problems with this implementation, the "
+"most serious being that we can never be sure that a transaction is "
+"successful until we commit it&mdash;but by the time the \"open session in "
+"view\" transaction is committed, the view is fully rendered, and the "
+"rendered response may already have been flushed to the client. How can we "
+"notify the user that their transaction was unsuccessful?"
+msgstr ""
+"Ce schéma est généralement implémenté en tant que transaction unique qui "
+"s'étend sur toute la requête. Il y a plusieurs problèmes avec cette "
+"implémentation, le plus sérieux étant que nous ne pouvons savoir si la "
+"transaction a réussi, qu'au moment de la sauvegarde - mais une fois la "
+"transaction \"ouvrir la session dans l'affichage\" sauvegardée, l'affichage "
+"est complet et la réponse affichée pourra déjà avoir été vidée au client. "
+"Comment pouvons-nous informer l'utilisateur que leur transaction n'a pas "
+"réussi ?"
+
+#. Tag: para
+#: Persistence.xml:67
+#, no-c-format
+msgid ""
+"Seam solves both the transaction isolation problem and the association "
+"fetching problem, while working around the problems with \"open session in "
+"view\". The solution comes in two parts:"
+msgstr ""
+"Seam résout à la fois le problème de l'isolation de transaction et le "
+"problème d'extraction d'association de même qu'il résout les problèmes avec "
+"\"ouvrir la session dans l'affichage\". La solution est à deux volets :"
+
+#. Tag: para
+#: Persistence.xml:72
+#, no-c-format
+msgid ""
+"use an extended persistence context that is scoped to the conversation, "
+"instead of to the transaction"
+msgstr ""
+"utiliser un contexte de persistance étendu qui est scoped à la conversation, "
+"et non à la transaction"
+
+#. Tag: para
+#: Persistence.xml:77
+#, no-c-format
+msgid ""
+"use two transactions per request; the first spans the beginning of the "
+"update model values phase until the end of the invoke application phase; the "
+"second spans the render response phase"
+msgstr ""
+"utiliser deux transactions par requête; la première s'étend sur le "
+"commencement de la phase des valeurs du modèle de mise à jour jusqu'à la fin "
+"de la phase invoke de l'application ; la seconde s'étend sur la phase de "
+"réponse du rendu "
+
+#. Tag: para
+#: Persistence.xml:82
+#, fuzzy, no-c-format
+msgid ""
+"In the next section, we&#39;ll tell you how to set up a conversation-scope "
+"persistence context. But first we need to tell you how to enable Seam "
+"transaction management. Note that you can use conversation-scoped "
+"persistence contexts without Seam transaction management, and there are good "
+"reasons to use Seam transaction management even when you&#39;re not using "
+"Seam-managed persistence contexts. However, the two facilities were designed "
+"to work together, and work best when used together."
+msgstr ""
+"Dans la prochaine section, nous vous montrons comment créer un contexte de "
+"persistance conversation-scope. Mais d'abord, regardons comment activer la "
+"gestion de transactions Seam. Notez que vous pouvez utiliser les contextes "
+"de persistance, conversation-scoped sans la gestion de transactions Seam, et "
+"il y a de bonnes raisons pour utiliser la gestion de transactions Seam, même "
+"si vous n'utilisez pas les contextes de persistance gérés par Seam. "
+"Cependant, les deux fonctions ont été conçues pour collaborer et "
+"fonctionnent parfaitement quand elles sont utilisées ensemble."
+
+#. Tag: title
+#: Persistence.xml:86
+#, no-c-format
+msgid "Enabling Seam-managed transactions"
+msgstr "Activation des transactions gérées par Seam"
+
+#. Tag: para
+#: Persistence.xml:87
+#, no-c-format
+msgid ""
+"To make use of <emphasis>Seam managed transactions</emphasis>, you need to "
+"use <literal>TransactionalSeamPhaseListener</literal> in place of "
+"<literal>SeamPhaseListener</literal>."
+msgstr ""
+"Pour utiliser des <emphasis>transactions gérées par Seam</emphasis>, vous "
+"devez utiliser <literal>TransactionalSeamPhaseListener</literal> au lieu de "
+"<literal>SeamPhaseListener</literal>."
+
+#. Tag: programlisting
+#: Persistence.xml:90
+#, no-c-format
+msgid ""
+"&lt;lifecycle&gt;\n"
+"     &lt;phase-listener&gt;\n"
+"        org.jboss.seam.jsf.TransactionalSeamPhaseListener\n"
+"    &lt;/phase-listener&gt;\n"
+"&lt;/lifecycle&gt;"
+msgstr ""
+"&lt;lifecycle&gt;\n"
+"     &lt;phase-listener&gt;\n"
+"        org.jboss.seam.jsf.TransactionalSeamPhaseListener\n"
+"    &lt;/phase-listener&gt;\n"
+"&lt;/lifecycle&gt;"
+
+#. Tag: para
+#: Persistence.xml:91
+#, fuzzy, no-c-format
+msgid ""
+"Seam transaction management is useful even if you&#39;re using EJB 3.0 "
+"container-managed persistence contexts. But it is especially useful if you "
+"use Seam outside a Java EE 5 environment, or in any other case where you "
+"would use a Seam-managed persistence context."
+msgstr ""
+"La gestion des transactions Seam est utile même si vous utilisez les "
+"contextes de persistance gérés par le conteneur EJB 3.0. Mais elle est "
+"particulièrement utile si vous utilisez Seam en dehors de l'environnement "
+"Java EE 5, ou dans tout autre cas où vous utiliseriez un contexte de "
+"persistance géré par Seam. "
+
+#. Tag: title
+#: Persistence.xml:99
+#, no-c-format
+msgid "Seam-managed persistence contexts"
+msgstr "Contextes de persistance gérés par Seam"
+
+#. Tag: para
+#: Persistence.xml:100
+#, fuzzy, no-c-format
+msgid ""
+"If you&#39;re using Seam outside of a Java EE 5 environment, you can&#39;t "
+"rely upon the container to manage the persistence context lifecycle for you. "
+"Even if you are in an EE 5 environment, you might have a complex application "
+"with many loosly coupled components that collaborate together in the scope "
+"of a single conversation, and in this case you might find that propagation "
+"of the persistence context between component is tricky and error-prone."
+msgstr ""
+"Si vous utilisez Seam hors de l'environnement Java EE 5, vous pouvez vous "
+"fier au conteneurpour gérer le cycle de vie du contexte de persistance. Même "
+"si vous êtes dans un environnement EE 5, vous avez peut-être une application "
+"complexe avec de nombreux composants, à faible dépendance qui collaborent "
+"ensemble dans l'étendue d'une conversation unique, et dans ce cas vous "
+"trouverez sans doute que la propagation du contexte de persistance entre "
+"composants est difficile et sujette à erreurs."
+
+#. Tag: para
+#: Persistence.xml:103
+#, fuzzy, no-c-format
+msgid ""
+"In either case, you&#39;ll need to use a <emphasis>managed persistence "
+"context</emphasis> (for JPA) or a <emphasis>managed session</emphasis> (for "
+"Hibernate) in your components. A Seam-managed persistence context is just a "
+"built-in Seam component that manages an instance of <literal>EntityManager</"
+"literal> or <literal>Session</literal> in the conversation context. You can "
+"inject it with <literal>@In</literal>."
+msgstr ""
+"Quoiqu'il en soit, il vous faudra utiliser un <emphasis>contexte de "
+"persistance géré</emphasis> (pour JPA) ou une <emphasis>session gérée</"
+"emphasis> (pour Hibernate) dans vos composants. Un contexte de persistance "
+"géré par Seam est juste un composant intégré dans Seam qui gère une instance "
+"de <literal>EntityManager</literal> ou <literal>Session</literal> dans le "
+"contexte de conversation. Vous pouvez l'injecter avec <literal>@In</literal>."
+
+#. Tag: para
+#: Persistence.xml:106
+#, no-c-format
+msgid ""
+"Seam-managed persistence contexts are extremely efficient in a clustered "
+"environment. Seam is able to perform an optimization that EJB 3.0 "
+"specification does not allow containers to use for container-managed "
+"extended persistence contexts. Seam supports transparent failover of "
+"extended persisence contexts, without the need to replicate any persistence "
+"context state between nodes. (We hope to fix this oversight in the next "
+"revision of the EJB spec.)"
+msgstr ""
+"Les contextes de persistance gérés par Seam sont extrêmement efficaces dans "
+"un environnement cluterisé. Seam est capable d'effectuer une optimisation, "
+"que les spécifications EJB 3.0 ne permettent pas aux conteneurs d'utiliser "
+"pour les contextes de persistance étendus et gérés conteneur. Seam supporte "
+"le failover transparent des contextes de persistance étendus, sans avoir à "
+"répliquer tout état de contexte de persistance entre les noeuds. (Nous "
+"espérons résoudre cette erreur d'inadvertance dans notre prochaine révision "
+"des spécifications EJB.)"
+
+#. Tag: title
+#: Persistence.xml:110
+#, no-c-format
+msgid "Using a Seam-managed persistence context with JPA"
+msgstr "Utilisation du contexte de persistance géré par Seam avec JPA"
+
+#. Tag: para
+#: Persistence.xml:111
+#, no-c-format
+msgid ""
+"Configuring a managed persistence context is easy. In <literal>components."
+"xml</literal>, we can write:"
+msgstr ""
+"La configuration d'un contexte de persistance géré est facile. Dans "
+"<literal>components.xml</literal>, nous écrivons :"
+
+#. Tag: programlisting
+#: Persistence.xml:114
+#, no-c-format
+msgid ""
+"&lt;core:managed-persistence-context name=\"bookingDatabase\" \n"
+"                           auto-create=\"true\"\n"
+"            persistence-unit-jndi-name=\"java:/EntityManagerFactories/"
+"bookingData\"/&gt;"
+msgstr ""
+"&lt;core:managed-persistence-context name=\"bookingDatabase\" \n"
+"                           auto-create=\"true\"\n"
+"            persistence-unit-jndi-name=\"java:/EntityManagerFactories/"
+"bookingData\"/&gt;"
+
+#. Tag: para
+#: Persistence.xml:115
+#, no-c-format
+msgid ""
+"This configuration creates a conversation-scoped Seam component named "
+"<literal>bookingDatabase</literal> that manages the lifecycle of "
+"<literal>EntityManager</literal> instances for the persistence unit "
+"(<literal>EntityManagerFactory</literal> instance) with JNDI name "
+"<literal>java:/EntityManagerFactories/bookingData</literal>."
+msgstr ""
+"Cette configuration crée un composant Seam scoped à la conversation, appelé "
+"<literal>bookingDatabase</literal> qui gère le cycle de vie des instances "
+"<literal>EntityManager</literal> pour l'unité de persistance (instance "
+"<literal>EntityManagerFactory</literal>) avec le nom JNDI <literal>java:/"
+"EntityManagerFactories/bookingData</literal>."
+
+#. Tag: para
+#: Persistence.xml:118
+#, no-c-format
+msgid ""
+"Of course, you need to make sure that you have bound the "
+"<literal>EntityManagerFactory</literal> into JNDI. In JBoss, you can do this "
+"by adding the following property setting to <literal>persistence.xml</"
+"literal>."
+msgstr ""
+"Évidemment vous devez vous assurer que vous avez lié "
+"<literal>EntityManagerFactory</literal> dans JNDI. Dans JBoss, vous pouvez "
+"effectuer cela en ajoutant le paramètre de propriété suivant à "
+"<literal>persistence.xml</literal>."
+
+#. Tag: programlisting
+#: Persistence.xml:121
+#, no-c-format
+msgid ""
+"&lt;property name=\"jboss.entity.manager.factory.jndi.name\" \n"
+"          value=\"java:/EntityManagerFactories/bookingData\"/&gt;"
+msgstr ""
+"&lt;property name=\"jboss.entity.manager.factory.jndi.name\" \n"
+"          value=\"java:/EntityManagerFactories/bookingData\"/&gt;"
+
+#. Tag: para
+#: Persistence.xml:122
+#, no-c-format
+msgid "Now we can have our <literal>EntityManager</literal> injected using:"
+msgstr ""
+"Maintenant nous pouvons avoir notre <literal>EntityManager</literal> "
+"injecté, en utilisant :"
+
+#. Tag: programlisting
+#: Persistence.xml:125
+#, no-c-format
+msgid "@In EntityManager bookingDatabase;"
+msgstr "@In EntityManager bookingDatabase;"
+
+#. Tag: title
+#: Persistence.xml:129
+#, no-c-format
+msgid "Using a Seam-managed Hibernate session"
+msgstr "Utilisation de la session Hibernate gérée par Seam"
+
+#. Tag: para
+#: Persistence.xml:130
+#, no-c-format
+msgid ""
+"Seam-managed Hibernate sessions are similar. In <literal>components.xml</"
+"literal>:"
+msgstr ""
+"Les sessions Hibernate gérées par Seam sont similaires. Dans "
+"<literal>components.xml</literal> :"
+
+#. Tag: programlisting
+#: Persistence.xml:133
+#, no-c-format
+msgid ""
+"&lt;core:hibernate-session-factory name=\"hibernateSessionFactory\"/&gt;\n"
+"\n"
+"&lt;core:managed-hibernate-session name=\"bookingDatabase\" \n"
+"                         auto-create=\"true\"\n"
+"           session-factory-jndi-name=\"java:/bookingSessionFactory\"/&gt;"
+msgstr ""
+"&lt;core:hibernate-session-factory name=\"hibernateSessionFactory\"/&gt;\n"
+"\n"
+"&lt;core:managed-hibernate-session name=\"bookingDatabase\" \n"
+"                         auto-create=\"true\"\n"
+"           session-factory-jndi-name=\"java:/bookingSessionFactory\"/&gt;"
+
+#. Tag: para
+#: Persistence.xml:134
+#, no-c-format
+msgid ""
+"Where <literal>java:/bookingSessionFactory</literal> is the name of the "
+"session factory specified in <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+"Où <literal>java:/bookingSessionFactory</literal> est le nom de la fabrique "
+"de session spécifié dans <literal>hibernate.cfg.xml</literal>."
+
+#. Tag: programlisting
+#: Persistence.xml:137
+#, fuzzy, no-c-format
+msgid ""
+"&lt;session-factory name=\"java:/bookingSessionFactory\"&gt;\n"
+"    &lt;property name=\"transaction.flush_before_completion\"&gt;true&lt;/"
+"property&gt;\n"
+"    &lt;property name=\"connection.release_mode\"&gt;after_statement&lt;/"
+"property&gt;\n"
+"    &lt;property name=\"transaction.manager_lookup_class\"&gt;\n"
+"       org.hibernate.transaction.JBossTransactionManagerLookup\n"
+"    &lt;/property&gt;\n"
+"    &lt;property name=\"transaction.factory_class\"&gt;\n"
+"       org.hibernate.transaction.JTATransactionFactory\n"
+"    &lt;/property&gt;\n"
+"    &lt;property name=\"connection.datasource\"&gt;java:/"
+"bookingDatasource&lt;/property&gt;\n"
+"    ...\n"
+"&lt;/session-factory&gt;"
+msgstr ""
+"&lt;session-factory name=\"java:/bookingSessionFactory\"&gt;\n"
+"    &lt;property name=\"transaction.flush_before_completion\"&gt;true&lt;/"
+"property&gt;\n"
+"    &lt;property name=\"connection.release_mode\"&gt;after_statement&lt;/"
+"property&gt;\n"
+"    &lt;property name=\"transaction.manager_lookup_class\"&gt;\n"
+"        org.hibernate.transaction.JBossTransactionManagerLookup\n"
+"    &lt;/property&gt;\n"
+"    &lt;property name=\"transaction.factory_class\"&gt;\n"
+"        org.hibernate.transaction.JTATransactionFactory\n"
+"    &lt;/property&gt;\n"
+"    &lt;property name=\"connection.datasource\"&gt;java:/"
+"bookingDatasource&lt;/property&gt;\n"
+"    ...\n"
+"&lt;/session-factory&gt;"
+
+#. Tag: para
+#: Persistence.xml:138
+#, no-c-format
+msgid ""
+"Note that Seam does not flush the session, so you should always enable "
+"<literal>hibernate.transaction.flush_before_completion</literal> to ensure "
+"that the session is automatically flushed before the JTA transaction commits."
+msgstr ""
+"Notez que Seam ne vide pas la session, ainsi vous devriez toujours activer "
+"<literal>hibernate.transaction.flush_before_completion</literal> pour "
+"assurer que la session est automatiquement vidée avant les sauvegardes de la "
+"transaction JTA."
+
+#. Tag: para
+#: Persistence.xml:141
+#, no-c-format
+msgid ""
+"We can now have a managed Hibernate <literal>Session</literal> injected into "
+"our JavaBean components using the following code:"
+msgstr ""
+"Nous pouvons maintenant avoir une <literal>Session</literal> Hibernate "
+"injectée dans nos composants JavaBean en utilisant le code suivant :"
+
+#. Tag: programlisting
+#: Persistence.xml:144
+#, no-c-format
+msgid "@In Session bookingDatabase;"
+msgstr "@In Session bookingDatabase;"
+
+#. Tag: title
+#: Persistence.xml:148
+#, no-c-format
+msgid "Seam-managed persistence contexts and atomic conversations"
+msgstr ""
+"Les contextes de persistance et les conversations atomiques gérés par Seam "
+
+#. Tag: para
+#: Persistence.xml:149
+#, no-c-format
+msgid ""
+"Persistence contexts scoped to the conversation allows you to program "
+"optimistic transactions that span multiple requests to the server without "
+"the need to use the <literal>merge()</literal> operation , without the need "
+"to re-load data at the beginning of each request, and without the need to "
+"wrestle with the <literal>LazyInitializationException</literal> or "
+"<literal>NonUniqueObjectException</literal>."
+msgstr ""
+"Les contextes de persistance scoped à la conversation vous permettent de "
+"programmer des transactions optimistes qui s'étendent sur de multiples "
+"requêtes au serveur, sans avoir à utiliser l'opération <literal>merge()</"
+"literal>, ou à recharger les données au commencement de chaque requête, ou à "
+"lutter avec <literal>LazyInitializationException</literal> ou "
+"<literal>NonUniqueObjectException</literal>."
+
+#. Tag: para
+#: Persistence.xml:152
+#, no-c-format
+msgid ""
+"As with any optimistic transaction management, transaction isolation and "
+"consistency can be achieved via use of optimistic locking. Fortunately, both "
+"Hibernate and EJB 3.0 make it very easy to use optimistic locking, by "
+"providing the <literal>@Version</literal> annotation."
+msgstr ""
+"Comme avec toute gestion de transaction optimiste, nous pouvons réussir "
+"l'isolation et la cohérence de transaction en utilisant le verrouillage "
+"optimiste. Heureusement, à la fois Hibernate et EJB 3.0 rendent "
+"l'utilisation du verrouillage optimiste très facile, grâce à l'annotation "
+"<literal>@Version</literal>."
+
+#. Tag: para
+#: Persistence.xml:155
+#, no-c-format
+msgid ""
+"By default, the persistence context is flushed (synchronized with the "
+"database) at the end of each transaction. This is sometimes the desired "
+"behavior. But very often, we would prefer that all changes are held in "
+"memory and only written to the database when the conversation ends "
+"successfully. This allows for truly atomic conversations. As the result of a "
+"truly stupid and shortsighted decision by certain non-JBoss, non-Sun and non-"
+"Sybase members of the EJB 3.0 expert group, there is currently no simple, "
+"usable and portable way to implement atomic conversations using EJB 3.0 "
+"persistence. However, Hibernate provides this feature as a vendor extension "
+"to the <literal>FlushModeType</literal>s defined by the specification, and "
+"it is our expectation that other vendors will soon provide a similar "
+"extension."
+msgstr ""
+"Par défaut, le contexte de persistance est vidé (synchronisé avec la base de "
+"données) à la fin de chaque transaction. C'est parfois le comportement "
+"désiré. Mais très souvent, nous préférons que toutes les modifications "
+"soient gardées en mémoire et écrites seulement dans la base de données quand "
+"la conversation se termine avec succès. Cela permet des conversations "
+"réellement atomiques. À cause d'une décision vraiment stupide et à court "
+"terme prise par certains membres non JBoss, non Sun et non Sybase du groupe "
+"d'experts EJB 3.0, il n'y a actuellement pas de manière simple, "
+"fonctionnelle et portable d'implémenter les conversations atomiques, en "
+"utilisant la persistance EJB 3.0. Cependant, Hibernate fournit cette "
+"fonctionnalité en tant qu'extension de vendeur, aux <literal>FlushModeType</"
+"literal> définis par les spécifications, et nous espérons que d'autres "
+"vendeurs fourniront bientôt une extension similaire."
+
+#. Tag: para
+#: Persistence.xml:158
+#, no-c-format
+msgid ""
+"Seam lets you specify <literal>FlushModeType.MANUAL</literal> when beginning "
+"a conversation. Currently, this works only when Hibernate is the underlying "
+"persistence provider, but we plan to support other equivalent vendor "
+"extensions."
+msgstr ""
+"Seam vous permet de spécifier <literal>FlushModeType.MANUAL</literal> quand "
+"la conversation commence. Actuellement cela fonctionne uniquement quand "
+"Hibernate est le fournisseur de persistance sous-jacent, mais nous avons "
+"l'intention de supporter d'autres extensions de vendeur équivalentes. "
+
+#. Tag: programlisting
+#: Persistence.xml:161
+#, no-c-format
+msgid ""
+"@In EntityManager em; //a Seam-managed persistence context\n"
+"\n"
+"@Begin(flushMode=MANUAL)\n"
+"public void beginClaimWizard() {\n"
+"    claim = em.find(Claim.class, claimId);\n"
+"}"
+msgstr ""
+"@In EntityManager em; //a Seam-managed persistence context\n"
+"\n"
+"@Begin(flushMode=MANUAL)\n"
+"public void beginClaimWizard() {\n"
+"    claim = em.find(Claim.class, claimId);\n"
+"}"
+
+#. Tag: para
+#: Persistence.xml:162
+#, fuzzy, no-c-format
+msgid ""
+"Now, the <literal>claim</literal> object remains managed by the persistence "
+"context for the rest ot the conversation. We can make changes to the claim:"
+msgstr ""
+"claimMaintenant, l'objet <literal>claim</literal> reste géré par le contexte "
+"de persistance pour le reste de la conversation. Nous pouvons effectuer des "
+"modifications sur la réclamation :"
+
+#. Tag: programlisting
+#: Persistence.xml:165
+#, no-c-format
+msgid ""
+"public void addPartyToClaim() {\n"
+"    Party party = ....;\n"
+"    claim.addParty(party);\n"
+"}"
+msgstr ""
+"public void addPartyToClaim() {\n"
+"    Party party = ....;\n"
+"    claim.addParty(party);\n"
+"}"
+
+#. Tag: para
+#: Persistence.xml:166
+#, no-c-format
+msgid ""
+"But these changes will not be flushed to the database until we explicitly "
+"force the flush to occur:"
+msgstr ""
+"Mais ces modifications ne seront pas vidées dans la base de données jusqu'à "
+"ce que nous forcions explicitement le vidage :"
+
+#. Tag: programlisting
+#: Persistence.xml:169
+#, no-c-format
+msgid ""
+"@End\n"
+"public void commitClaim() {\n"
+"    em.flush();\n"
+"}"
+msgstr ""
+"@End\n"
+"public void commitClaim() {\n"
+"    em.flush();\n"
+"}"
+
+#. Tag: title
+#: Persistence.xml:175
+#, no-c-format
+msgid "Using the JPA \"delegate\""
+msgstr "Utilisation du \"delegate\" JPA "
+
+#. Tag: para
+#: Persistence.xml:176
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>EntityManager</literal> interface lets you access a vendor-"
+"specific API via the <literal>getDelegate()</literal> method. Naturally, the "
+"most interesting vendor is Hibernate, and the most powerful delegate "
+"interface is <literal>org.hibernate.Session</literal>. You&#39;d be nuts to "
+"use anything else. Trust me, I&#39;m not biased at all."
+msgstr ""
+"L'interface <literal>EntityManager</literal> vous permet d'accéder à un API "
+"spécifique au vendeur, via la méthode <literal>getDelegate()</literal>. "
+"Naturellement, le vendeur le plus intéressant est Hibernate, et l'interface "
+"delegate la plus puissante, est <literal>org.hibernate.Session</literal>. Ce "
+"serait fou d'utiliser autre chose. Faites-moi confiance, je ne suis pas "
+"biaisé du tout."
+
+#. Tag: para
+#: Persistence.xml:179
+#, fuzzy, no-c-format
+msgid ""
+"But regardless of whether you&#39;re using Hibernate (genius!) or something "
+"else (masochist, or just not very bright), you&#39;ll almost certainly want "
+"to use the delegate in your Seam components from time to time. One approach "
+"would be the following:"
+msgstr ""
+"Mais que vous utilisiez Hibernate ou non (génie!) ou quelque chose d'autre "
+"(masochiste, ou pas très malin), il est presque certain que vous désirerez "
+"utiliser de temps en temps, le delegate dans vos composants Seam. Une "
+"approche serait la suivante :"
+
+#. Tag: programlisting
+#: Persistence.xml:182
+#, no-c-format
+msgid ""
+"@In EntityManager entityManager;\n"
+"\n"
+"@Create\n"
+"public void init() {\n"
+"    ( (Session) entityManager.getDelegate() ).enableFilter(\"currentVersions"
+"\");\n"
+"}"
+msgstr ""
+"@In EntityManager entityManager;\n"
+"\n"
+"@Create\n"
+"public void init() {\n"
+"    ( (Session) entityManager.getDelegate() ).enableFilter(\"currentVersions"
+"\");\n"
+"}"
+
+#. Tag: para
+#: Persistence.xml:183
+#, fuzzy, no-c-format
+msgid ""
+"But typecasts are unquestionably the ugliest syntax in the Java language, so "
+"most people avoid them whenever possible. Here&#39;s a different way to get "
+"at the delegate. First, add the following line to <literal>components.xml</"
+"literal>:"
+msgstr ""
+"Mais les typecasts sont sans aucun doute la syntaxe la plus affreuse dans le "
+"langage Java, c'est pourquoi la plupart des gens les évitent le plus souvent "
+"possible. Voici une façon différente d'obtenir le delegate. D'abord, ajoutez "
+"la ligne suivante à <literal>components.xml</literal> :"
+
+#. Tag: programlisting
+#: Persistence.xml:186
+#, no-c-format
+msgid ""
+"&lt;factory name=\"session\" \n"
+"         scope=\"STATELESS\" \n"
+"         auto-create=\"true\" \n"
+"         value=\"#{entityManager.delegate}\"/&gt;"
+msgstr ""
+"&lt;factory name=\"session\" \n"
+"         scope=\"STATELESS\" \n"
+"         auto-create=\"true\" \n"
+"         value=\"#{entityManager.delegate}\"/&gt;"
+
+#. Tag: para
+#: Persistence.xml:187
+#, no-c-format
+msgid "Now we can inject the session directly:"
+msgstr "Maintenant nous pouvons injecter la session directement :"
+
+#. Tag: programlisting
+#: Persistence.xml:190
+#, no-c-format
+msgid ""
+"@In Session session;\n"
+"\n"
+"@Create\n"
+"public void init() {\n"
+"    session.enableFilter(\"currentVersions\");\n"
+"}"
+msgstr ""
+"@In Session session;\n"
+"\n"
+"@Create\n"
+"public void init() {\n"
+"    session.enableFilter(\"currentVersions\");\n"
+"}"
+
+#. Tag: title
+#: Persistence.xml:194
+#, no-c-format
+msgid "Using EL in EJB-QL/HQL"
+msgstr "Utilisation d'EL dans EJB-QL/HQL"
+
+#. Tag: para
+#: Persistence.xml:195
+#, no-c-format
+msgid ""
+"Seam proxies the <literal>EntityManager</literal> or <literal>Session</"
+"literal> object whenever you use a Seam-managed persistence context or "
+"inject a container managed persistence context using "
+"<literal>@PersistenceContext</literal>. This lets you use EL expressions in "
+"your query strings, safely and efficiently. For example, this:"
+msgstr ""
+"Seam réexpédie par mandataire le <literal>EntityManager</literal> ou l'objet "
+"<literal>Session</literal> à chaque fois que vous utilisez le contexte de "
+"persistance, géré par Seam, ou que vous injectez un contexte de persistance "
+"géré conteneur en utilisant <literal>@PersistenceContext</literal>. Cela "
+"vous permet d'utiliser les expressions EL dans vos chaînes de requête, de "
+"façon efficace et sécurisée. Par exemple, ce qui suit :"
+
+#. Tag: programlisting
+#: Persistence.xml:198
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=#{user.username}\")\n"
+"         .getSingleResult();"
+msgstr ""
+"User user = em.createQuery(\"from User where username=#{user.username}\")\n"
+"         .getSingleResult();"
+
+#. Tag: para
+#: Persistence.xml:199
+#, no-c-format
+msgid "is equivalent to:"
+msgstr "est équivalent à :"
+
+#. Tag: programlisting
+#: Persistence.xml:202
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getSingleResult();"
+msgstr ""
+"User user = em.createQuery(\"from User where username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getSingleResult();"
+
+#. Tag: para
+#: Persistence.xml:203
+#, no-c-format
+msgid "Of course, you should never, ever write it like this:"
+msgstr "Il est évident que vous ne devriez jamais écrire :"
+
+#. Tag: programlisting
+#: Persistence.xml:206
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=\" + user.getUsername"
+"()) //BAD!\n"
+"         .getSingleResult();"
+msgstr ""
+"User user = em.createQuery(\"from User where username=\" + user.getUsername"
+"()) //BAD!\n"
+"         .getSingleResult();"
+
+#. Tag: para
+#: Persistence.xml:207
+#, no-c-format
+msgid "(It is inefficient and vulnerable to SQL injection attacks.)"
+msgstr "(Cela est inefficace et vulnérable aux attaques d'injection SQL.)"
+
+#. Tag: title
+#: Persistence.xml:213
+#, no-c-format
+msgid "Using Hibernate filters"
+msgstr "Utilisation des filtres Hibernate"
+
+#. Tag: para
+#: Persistence.xml:214
+#, fuzzy, no-c-format
+msgid ""
+"The coolest, and most unique, feature of Hibernate is <emphasis>filters</"
+"emphasis>. Filters let you provide a restricted view of the data in the "
+"database. You can find out more about filters in the Hibernate "
+"documentation. But we thought we&#39;d mention an easy way to incorporate "
+"filters into a Seam application, one that works especially well with the "
+"Seam Application Framework."
+msgstr ""
+"La fonctionnalité la plus cool et la plus unique de Hibernate, sont les "
+"<emphasis>filtres</emphasis>. Les filtres vous permettent de fournir un "
+"affichage restreint des données dans la base de données. Vous pouvez en "
+"apprendre plus sur les filtres dans la documentation Hibernate. Nous avons "
+"pensé à vous informer d'une manière facile d'incorporer les filtres dans "
+"l'application Seam, une approche qui fonctionne particulièrement bien avec "
+"le Seam Application Framework."
+
+#. Tag: para
+#: Persistence.xml:217
+#, no-c-format
+msgid ""
+"Seam-managed persistence contexts may have a list of filters defined, which "
+"will be enabled whenever an <literal>EntityManager</literal> or Hibernate "
+"<literal>Session</literal> is first created. (Of course, they may only be "
+"used when Hibernate is the underlying persistence provider.)"
+msgstr ""
+"Les contextes de persistance, gérés par Seam, peuvent comporter une liste de "
+"filtres définis, qui seront activés à chaque fois qu'un "
+"<literal>EntityManager</literal> ou qu'une <literal>Session</literal> "
+"Hibernate est crée pour la première fois. (Bien sûr, ils ne seront peut-être "
+"utilisés que quand Hibernate est le fournisseur de persistance sous-jacent.)"
+
+#. Tag: programlisting
+#: Persistence.xml:220
+#, no-c-format
+msgid ""
+"&lt;core:filter name=\"regionFilter\"&gt;\n"
+"    &lt;core:name&gt;region&lt;/core:name&gt;\n"
+"    &lt;core:parameters&gt;\n"
+"        &lt;key&gt;regionCode&lt;/key&gt;\n"
+"        &lt;value&gt;#{region.code}&lt;/value&gt;\n"
+"    &lt;/core:parameters&gt;\n"
+"&lt;/core:filter&gt;\n"
+"\n"
+"&lt;core:filter name=\"currentFilter\"&gt;\n"
+"    &lt;core:name&gt;current&lt;/core:name&gt;\n"
+"    &lt;core:parameters&gt;\n"
+"        &lt;key&gt;date&lt;/key&gt;\n"
+"        &lt;value&gt;#{currentDate}&lt;/value&gt;\n"
+"    &lt;/core:parameters&gt;\n"
+"&lt;/core:filter&gt;\n"
+"\n"
+"&lt;core:managed-persistence-context name=\"personDatabase\"\n"
+"    persistence-unit-jndi-name=\"java:/EntityManagerFactories/personDatabase"
+"\"&gt;\n"
+"    &lt;core:filters&gt;\n"
+"        &lt;value&gt;#{regionFilter}&lt;/value&gt;\n"
+"        &lt;value&gt;#{currentFilter}&lt;/value&gt;\n"
+"    &lt;/core:filters&gt;\n"
+"&lt;/core:managed-persistence-context&gt;"
+msgstr ""
+"&lt;core:filter name=\"regionFilter\"&gt;\n"
+"    &lt;core:name&gt;region&lt;/core:name&gt;\n"
+"    &lt;core:parameters&gt;\n"
+"        &lt;key&gt;regionCode&lt;/key&gt;\n"
+"        &lt;value&gt;#{region.code}&lt;/value&gt;\n"
+"    &lt;/core:parameters&gt;\n"
+"&lt;/core:filter&gt;\n"
+"\n"
+"&lt;core:filter name=\"currentFilter\"&gt;\n"
+"    &lt;core:name&gt;current&lt;/core:name&gt;\n"
+"    &lt;core:parameters&gt;\n"
+"        &lt;key&gt;date&lt;/key&gt;\n"
+"        &lt;value&gt;#{currentDate}&lt;/value&gt;\n"
+"    &lt;/core:parameters&gt;\n"
+"&lt;/core:filter&gt;\n"
+"\n"
+"&lt;core:managed-persistence-context name=\"personDatabase\"\n"
+"    persistence-unit-jndi-name=\"java:/EntityManagerFactories/personDatabase"
+"\"&gt;\n"
+"    &lt;core:filters&gt;\n"
+"        &lt;value&gt;#{regionFilter}&lt;/value&gt;\n"
+"        &lt;value&gt;#{currentFilter}&lt;/value&gt;\n"
+"    &lt;/core:filters&gt;\n"
+"&lt;/core:managed-persistence-context&gt;"

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Remoting.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Remoting.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Remoting.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1797 @@
+# translation of Remoting.po to French
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# myriam malga <mmalga at redhat.com>, 2007.
+# Decroux Fabien <fdecroux at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Remoting\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2007-09-24 15:58+1000\n"
+"Last-Translator: Decroux Fabien <fdecroux at redhat.com>\n"
+"Language-Team: French <fr at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Remoting.xml:6
+#, no-c-format
+msgid "Remoting"
+msgstr "Remoting"
+
+#. Tag: para
+#: Remoting.xml:7
+#, fuzzy, no-c-format
+msgid ""
+"Seam provides a convenient method of remotely accessing components from a "
+"web page, using AJAX (Asynchronous Javascript and XML). The framework for "
+"this functionality is provided with almost no up-front development effort - "
+"your components only require simple annotating to become accessible via "
+"AJAX. This chapter describes the steps required to build an AJAX-enabled web "
+"page, then goes on to explain the features of the Seam Remoting framework in "
+"more detail."
+msgstr ""
+"Seam offre une méthode pratique afin d'accèder à distance aux composants à "
+"partir d'une page Web, en utilisant AJAX (de l'anglais Asynchronous "
+"Javascript and XML). Le framework pour cette fonctionnalité est fourni avec "
+"quasiment aucun effort de développement initial - vos composants ne "
+"demandent que des annotations simples pour être accessibles via AJAX. Ce "
+"chapitre décrit les étapes requises pour construire une page Web avec AJAX "
+"et explique ensuite les fonctionnalités du framework Seam Remoting en "
+"détails."
+
+#. Tag: title
+#: Remoting.xml:10 Remoting.xml:285
+#, no-c-format
+msgid "Configuration"
+msgstr "Configuration"
+
+#. Tag: para
+#: Remoting.xml:11
+#, no-c-format
+msgid ""
+"To use remoting, the Seam Resource servlet must first be configured in your "
+"<literal>web.xml</literal> file:"
+msgstr ""
+"Pour utiliser remoting, le servlet Seam Resource doit être configuré dans "
+"votre fichier <literal>web.xml</literal>&nbsp;:"
+
+#. Tag: programlisting
+#: Remoting.xml:14
+#, no-c-format
+msgid ""
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"  &lt;/servlet&gt;\n"
+"\n"
+"  &lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"  &lt;/servlet-mapping&gt;"
+msgstr ""
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"  &lt;/servlet&gt;\n"
+"\n"
+"  &lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"  &lt;/servlet-mapping&gt;"
+
+#. Tag: para
+#: Remoting.xml:15
+#, no-c-format
+msgid ""
+"The next step is to import the necessary Javascript into your web page. "
+"There are a minimum of two scripts that must be imported. The first one "
+"contains all the client-side framework code that enables remoting "
+"functionality:"
+msgstr ""
+"La prochaine étape consiste à importer le Javascript nécessaire dans votre "
+"page web. Il y a un minimum de deux scripts qui doivent être importés. Le "
+"premier contient tout le code du framework côté client, permettant la "
+"fonctionnalité remoting&nbsp;:"
+
+#. Tag: programlisting
+#: Remoting.xml:18
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/resource/"
+"remote.js\"&gt;&lt;/script&gt;"
+msgstr ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/resource/"
+"remote.js\"&gt;&lt;/script&gt;"
+
+#. Tag: para
+#: Remoting.xml:19
+#, no-c-format
+msgid ""
+"The second script contains the stubs and type definitions for the components "
+"you wish to call. It is generated dynamically based on the local interface "
+"of your components, and includes type definitions for all of the classes "
+"that can be used to call the remotable methods of the interface. The name of "
+"the script reflects the name of your component. For example, if you have a "
+"stateless session bean annotated with <literal>@Name(\"customerAction\")</"
+"literal>, then your script tag should look like this:"
+msgstr ""
+"Le second script contient les définitions de stubs et de type pour les "
+"composants que vous désirez appeler. Il est généré dynamiquement et avec à "
+"la base l'interface locale de vos composants. Il inclut les définitions de "
+"type pour toutes les classes qui peuvent être utilisées pour appeler les "
+"méthodes \"remotable\" de l'interface. Le nom du script reflète le nom de "
+"votre composant. Par exemple, si vous avez un bean session stateless, annoté "
+"avec <literal>@Name(\"customerAction\")</literal>, vos balises de script "
+"devraient ressembler à ce qui suit&nbsp;:"
+
+#. Tag: programlisting
+#: Remoting.xml:22
+#, fuzzy, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?customerAction\"&gt;\n"
+"    &lt;/script&gt;"
+msgstr ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?customerAction\"&gt;\n"
+"      &lt;/script&gt;"
+
+#. Tag: para
+#: Remoting.xml:23
+#, no-c-format
+msgid ""
+"If you wish to access more than one component from the same page, then "
+"include them all as parameters of your script tag:"
+msgstr ""
+"Si vous désirez accéder à plus d'un composant depuis la même page, incluez-"
+"les tous en tant que paramètres de votre balise de script&nbsp;:"
+
+#. Tag: programlisting
+#: Remoting.xml:26
+#, fuzzy, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" \n"
+"     src=\"seam/resource/remoting/interface.js?customerAction&amp;"
+"accountAction\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+"&lt;script type=\"text/javascript\" \n"
+"      src=\"seam/resource/remoting/interface.js?customerAction&amp;"
+"accountAction\"&gt;\n"
+"  &lt;/script&gt;"
+
+#. Tag: title
+#: Remoting.xml:27
+#, no-c-format
+msgid "The \"Seam\" object"
+msgstr "L'objet \"Seam\""
+
+#. Tag: para
+#: Remoting.xml:28
+#, fuzzy, no-c-format
+msgid ""
+"Client-side interaction with your components is all performed via the "
+"<literal>Seam</literal> Javascript object. This object is defined in "
+"<literal>remote.js</literal>, and you&#39;ll be using it to make "
+"asynchronous calls against your component. It is split into two areas of "
+"functionality; <literal>Seam.Component</literal> contains methods for "
+"working with components and <literal>Seam.Remoting</literal> contains "
+"methods for executing remote requests. The easiest way to become familiar "
+"with this object is to start with a simple example."
+msgstr ""
+"L'intéraction côté client avec vos composants est effectuée via l'objet "
+"javascript <literal>Seam</literal>. Cet objet est défini dans "
+"<literal>remote.js</literal> et vous l'utiliserez afin d'effectuer des "
+"appels asynchrones vers vos composants. Il est partagé en deux domaines de "
+"fonctionnalités, <literal>Seam.Component</literal> contient des méthodes "
+"pour travailler avec les composants et <literal>Seam.Remoting</literal> "
+"contient des méthodes pour l'exécution de requêtes distantes. La façon la "
+"plus simple de devenir familier avec cet objet est de commencer avec un "
+"exemple facile."
+
+#. Tag: title
+#: Remoting.xml:31
+#, no-c-format
+msgid "A Hello World example"
+msgstr "Un exemple Hello World"
+
+#. Tag: para
+#: Remoting.xml:32
+#, fuzzy, no-c-format
+msgid ""
+"Let&#39;s step through a simple example to see how the <literal>Seam</"
+"literal> object works. First of all, let&#39;s create a new Seam component "
+"called <literal>helloAction</literal>."
+msgstr ""
+"Passons à un exemple simple pour voir comment l'objet <literal>Seam</"
+"literal> fonctionne. Commençons par créer un nouveau composant Seam, appelé "
+"<literal>helloAction</literal>."
+
+#. Tag: programlisting
+#: Remoting.xml:35
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"  @Name(\"helloAction\")\n"
+"  public class HelloAction implements HelloLocal {\n"
+"    public String sayHello(String name) {\n"
+"      return \"Hello, \" + name;\n"
+"    }\n"
+"  }"
+msgstr ""
+"@Stateless\n"
+"  @Name(\"helloAction\")\n"
+"  public class HelloAction implements HelloLocal {\n"
+"    public String sayHello(String name) {\n"
+"      return \"Hello, \" + name;\n"
+"    }\n"
+"  }"
+
+#. Tag: para
+#: Remoting.xml:36
+#, fuzzy, no-c-format
+msgid ""
+"You also need to create a local interface for our new component - take "
+"special note of the <literal>@WebRemote</literal> annotation, as it&#39;s "
+"required to make our method accessible via remoting:"
+msgstr ""
+"Vous devez également créer une interface locale pour votre nouveau composant "
+"- prenez note de l'annotation <literal>@WebRemote</literal> car elle est "
+"requise pour que votre méthode soit accessible à distance&nbsp;:"
+
+#. Tag: programlisting
+#: Remoting.xml:39
+#, no-c-format
+msgid ""
+"@Local\n"
+"  public interface HelloLocal {\n"
+"    @WebRemote\n"
+"    public String sayHello(String name);\n"
+"  }"
+msgstr ""
+"@Local\n"
+"  public interface HelloLocal {\n"
+"    @WebRemote\n"
+"    public String sayHello(String name);\n"
+"  }"
+
+#. Tag: para
+#: Remoting.xml:40
+#, fuzzy, no-c-format
+msgid ""
+"That&#39;s all the server-side code we need to write. Now for our web page - "
+"create a new page and import the following scripts:"
+msgstr ""
+"Il s'agit du code côté serveur que nous devons écrire. Passons à la page Web "
+"- créez une nouvelle page et importez les scripts suivants&nbsp;:"
+
+#. Tag: programlisting
+#: Remoting.xml:43
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/resource/"
+"remote.js\"&gt;&lt;/script&gt;\n"
+"  &lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?helloAction\"&gt;&lt;/script&gt;"
+msgstr ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/resource/"
+"remote.js\"&gt;&lt;/script&gt;\n"
+"  &lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?helloAction\"&gt;&lt;/script&gt;"
+
+#. Tag: para
+#: Remoting.xml:44
+#, fuzzy, no-c-format
+msgid ""
+"To make this a fully interactive user experience, let&#39;s add a button to "
+"our page:"
+msgstr ""
+"Pour que l'expérience utilisateur soit complètement interactive, ajoutons un "
+"bouton à notre page&nbsp;:"
+
+#. Tag: programlisting
+#: Remoting.xml:47
+#, no-c-format
+msgid ""
+"&lt;button onclick=\"javascript:sayHello()\"&gt;Say Hello&lt;/button&gt;"
+msgstr ""
+"&lt;button onclick=\"javascript:sayHello()\"&gt;Say Hello&lt;/button&gt;"
+
+#. Tag: para
+#: Remoting.xml:48
+#, fuzzy, no-c-format
+msgid ""
+"We&#39;ll also need to add some more script to make our button actually do "
+"something when it&#39;s clicked:"
+msgstr ""
+"Nous devons égalemennt ajouter d'autres scripts pour que notre bouton puisse "
+"actuellement faire quelque chose."
+
+#. Tag: programlisting
+#: Remoting.xml:51
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\"&gt;\n"
+"    //&lt;![CDATA[\n"
+"\n"
+"    function sayHello() {\n"
+"      var name = prompt(\"What is your name?\");\n"
+"      Seam.Component.getInstance(\"helloAction\").sayHello(name, "
+"sayHelloCallback);\n"
+"    }\n"
+"\n"
+"    function sayHelloCallback(result) {\n"
+"      alert(result);\n"
+"    }\n"
+"\n"
+"    // ]]&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+"&lt;script type=\"text/javascript\"&gt;\n"
+"    //&lt;![CDATA[\n"
+"\n"
+"    function sayHello() {\n"
+"      var name = prompt(\"What is your name?\");\n"
+"      Seam.Component.getInstance(\"helloAction\").sayHello(name, "
+"sayHelloCallback);\n"
+"    }\n"
+"\n"
+"    function sayHelloCallback(result) {\n"
+"      alert(result);\n"
+"    }\n"
+"\n"
+"    // ]]&gt;\n"
+"  &lt;/script&gt;"
+
+#. Tag: para
+#: Remoting.xml:52
+#, fuzzy, no-c-format
+msgid ""
+"We&#39;re done! Deploy your application and browse to your page. Click the "
+"button, and enter a name when prompted. A message box will display the hello "
+"message confirming that the call was successful. If you want to save some "
+"time, you&#39;ll find the full source code for this Hello World example in "
+"Seam&#39;s <literal>/examples/remoting/helloworld</literal> directory."
+msgstr ""
+"C'est fait&nbsp;! Déployez votre application et naviguez sur votre page. "
+"Cliquez sur le bouton et entrez un nom lorsqu'on vous le demande. Une boîte "
+"affichera le message hello et confirmera ainsi que votre appel a réussi. Si "
+"vous voulez gagner du temps, vous trouverez le code source complet de cet "
+"exemple Hello World dans le répertoire Seam <literal>/examples/remoting/"
+"helloworld</literal>."
+
+#. Tag: para
+#: Remoting.xml:55
+#, fuzzy, no-c-format
+msgid ""
+"So what does the code of our script actually do? Let&#39;s break it down "
+"into smaller pieces. To start with, you can see from the Javascript code "
+"listing that we have implemented two methods - the first method is "
+"responsible for prompting the user for their name and then making a remote "
+"request. Take a look at the following line:"
+msgstr ""
+"Qu'est-ce que le code de notre script fait exactement&nbsp;? Séparons le "
+"code en plusieurs parties. Pour commencer, vous pouvez voir dans le code que "
+"nous avons implémenté deux méthodes - la première méthode demande à "
+"l'utilisateur son nom et effectue ensuite une requête distante. Regardons "
+"les lignes suivantes&nbsp;:"
+
+#. Tag: programlisting
+#: Remoting.xml:58
+#, no-c-format
+msgid ""
+"Seam.Component.getInstance(\"helloAction\").sayHello(name, sayHelloCallback);"
+msgstr ""
+"Seam.Component.getInstance(\"helloAction\").sayHello(name, sayHelloCallback);"
+
+#. Tag: para
+#: Remoting.xml:59
+#, no-c-format
+msgid ""
+"The first section of this line, <literal>Seam.Component.getInstance"
+"(\"helloAction\")</literal> returns a proxy, or \"stub\" for our "
+"<literal>helloAction</literal> component. We can invoke the methods of our "
+"component against this stub, which is exactly what happens with the "
+"remainder of the line: <literal>sayHello(name, sayHelloCallback);</literal>."
+msgstr ""
+"Le première section de cette ligne, <literal>Seam.Component.getInstance"
+"(\"helloAction\")</literal> retourne un proxy, ou \"stub\" pour notre "
+"composant <literal>helloAction</literal>. Nous pouvons invoquer les méthodes "
+"de notre composant sur ce proxy, comme le fait la fin de cette ligne&nbsp;: "
+"<literal>sayHello(name, sayHelloCallback);</literal>."
+
+#. Tag: para
+#: Remoting.xml:62
+#, fuzzy, no-c-format
+msgid ""
+"What this line of code in its completeness does, is invoke the "
+"<literal>sayHello</literal> method of our component, passing in "
+"<literal>name</literal> as a parameter. The second parameter, "
+"<literal>sayHelloCallback</literal> isn&#39;t a parameter of our "
+"component&#39;s <literal>sayHello</literal> method, instead it tells the "
+"Seam Remoting framework that once it receives the response to our request, "
+"it should pass it to the <literal>sayHelloCallback</literal> Javascript "
+"method. This callback parameter is entirely optional, so feel free to leave "
+"it out if you&#39;re calling a method with a <literal>void</literal> return "
+"type or if you don&#39;t care about the result."
+msgstr ""
+"De manière globale, cette ligne invoque la méthode <literal>sayHello</"
+"literal> de notre composant, en lui passant <literal>name</literal> en tant "
+"que paramètre. Le deuxième paramètre, <literal>sayHelloCallback</literal>, "
+"n'est pas un paramètre de la méthode <literal>sayHello</literal> de notre "
+"composant. Ce paramètre est là pour indiquer au framework Seam Remoting de "
+"passer la réponse à la méthode javascript <literal>sayHelloCallback</"
+"literal> lorsqu'il la reçoit à partir de notre requête."
+
+#. Tag: para
+#: Remoting.xml:65
+#, no-c-format
+msgid ""
+"The <literal>sayHelloCallback</literal> method, once receiving the response "
+"to our remote request then pops up an alert message displaying the result of "
+"our method call."
+msgstr ""
+"La méthode <literal>sayHelloCallback</literal>, une fois qu'elle reçoit la "
+"réponse à notre requête distante, génère un message d'alerte affichant le "
+"résultat de notre appel à la méthode."
+
+#. Tag: title
+#: Remoting.xml:68
+#, no-c-format
+msgid "Seam.Component"
+msgstr "Seam.Component"
+
+#. Tag: para
+#: Remoting.xml:69
+#, no-c-format
+msgid ""
+"The <literal>Seam.Component</literal> Javascript object provides a number of "
+"client-side methods for working with your Seam components. The two main "
+"methods, <literal>newInstance()</literal> and <literal>getInstance()</"
+"literal> are documented in the following sections however their main "
+"difference is that <literal>newInstance()</literal> will always create a new "
+"instance of a component type, and <literal>getInstance()</literal> will "
+"return a singleton instance."
+msgstr ""
+"L'objet javascript <literal>Seam.Component</literal> fournit un nombre de "
+"méthodes côté client pour vos composants Seam. Les deux méthodes "
+"principales, <literal>newInstance()</literal> et <literal>getInstance()</"
+"literal> sont documentées dans les sections suivantes, notez cependant que "
+"leur principale différence est que <literal>newInstance()</literal> crée "
+"toujours une nouvelle instance d'un type de composant alors "
+"<literal>getInstance()</literal> retourne une instance singleton."
+
+#. Tag: title
+#: Remoting.xml:72
+#, no-c-format
+msgid "Seam.Component.newInstance()"
+msgstr "Seam.Component.newInstance()"
+
+#. Tag: para
+#: Remoting.xml:73
+#, no-c-format
+msgid ""
+"Use this method to create a new instance of an entity or Javabean component. "
+"The object returned by this method will have the same getter/setter methods "
+"as its server-side counterpart, or alternatively if you wish you can access "
+"its fields directly. Take the following Seam entity component for example:"
+msgstr ""
+"Utilisez cette méthode pour créer une nouvelle instance d'une entitié ou "
+"d'un composant Javabean. L'objet retourné par cette méthode aura les mêmes "
+"méthodes getter/setter que la partie similaire côté serveur, ou de façon "
+"alternative, vous pouvez également accéder à ces champs directement. Prenez "
+"par exemple le composant entité Seam suivant&nbsp;:"
+
+#. Tag: programlisting
+#: Remoting.xml:76
+#, no-c-format
+msgid ""
+"@Name(\"customer\")\n"
+"  @Entity\n"
+"  public class Customer implements Serializable\n"
+"  {\n"
+"    private Integer customerId;\n"
+"    private String firstName;\n"
+"    private String lastName;\n"
+"    \n"
+"    @Column public Integer getCustomerId() { \n"
+"      return customerId; \n"
+"    }\n"
+"    \n"
+"    public void setCustomerId(Integer customerId} { \n"
+"      this.customerId = customerId; \n"
+"    }\n"
+"    \n"
+"    @Column public String getFirstName() { \n"
+"      return firstName; \n"
+"    }\n"
+"    \n"
+"    public void setFirstName(String firstName) {\n"
+"      this.firstName = firstName; \n"
+"    }\n"
+"    \n"
+"    @Column public String getLastName() {\n"
+"      return lastName;\n"
+"    }\n"
+"    \n"
+"    public void setLastName(String lastName) {\n"
+"      this.lastName = lastName;\n"
+"    }\n"
+"  }"
+msgstr ""
+"@Name(\"customer\")\n"
+"  @Entity\n"
+"  public class Customer implements Serializable\n"
+"  {\n"
+"    private Integer customerId;\n"
+"    private String firstName;\n"
+"    private String lastName;\n"
+"    \n"
+"    @Column public Integer getCustomerId() { \n"
+"      return customerId; \n"
+"    }\n"
+"    \n"
+"    public void setCustomerId(Integer customerId} { \n"
+"      this.customerId = customerId; \n"
+"    }\n"
+"    \n"
+"    @Column public String getFirstName() { \n"
+"      return firstName; \n"
+"    }\n"
+"    \n"
+"    public void setFirstName(String firstName) {\n"
+"      this.firstName = firstName; \n"
+"    }\n"
+"    \n"
+"    @Column public String getLastName() {\n"
+"      return lastName;\n"
+"    }\n"
+"    \n"
+"    public void setLastName(String lastName) {\n"
+"      this.lastName = lastName;\n"
+"    }\n"
+"  }"
+
+#. Tag: para
+#: Remoting.xml:77
+#, no-c-format
+msgid "To create a client-side Customer you would write the following code:"
+msgstr ""
+"Pour créer un \"customer\" côté client vous écririez le code suivant&nbsp;:"
+
+#. Tag: programlisting
+#: Remoting.xml:80
+#, no-c-format
+msgid "var customer = Seam.Component.newInstance(\"customer\");"
+msgstr "var customer = Seam.Component.newInstance(\"customer\");"
+
+#. Tag: para
+#: Remoting.xml:81
+#, no-c-format
+msgid "Then from here you can set the fields of the customer object:"
+msgstr ""
+"Ensuite à partir d'ici vous pouvez définir les champs de l'objet "
+"client&nbsp;:"
+
+#. Tag: programlisting
+#: Remoting.xml:84
+#, no-c-format
+msgid ""
+"customer.setFirstName(\"John\");\n"
+"  // Or you can set the fields directly\n"
+"  customer.lastName = \"Smith\";"
+msgstr ""
+"customer.setFirstName(\"John\");\n"
+"  // Or you can set the fields directly\n"
+"  customer.lastName = \"Smith\";"
+
+#. Tag: title
+#: Remoting.xml:85
+#, no-c-format
+msgid "Seam.Component.getInstance()"
+msgstr "Seam.Component.getInstance()"
+
+#. Tag: para
+#: Remoting.xml:86
+#, no-c-format
+msgid ""
+"The <literal>getInstance()</literal> method is used to get a reference to a "
+"Seam session bean component stub, which can then be used to remotely execute "
+"methods against your component. This method returns a singleton for the "
+"specified component, so calling it twice in a row with the same component "
+"name will return the same instance of the component."
+msgstr ""
+"La méthode <literal>getInstance()</literal> est utilisée pour obtenir une "
+"référence au stub composant du bean de session Seam, qui peut ensuite être "
+"utilisée pour exécuter à distance des méthodes contre votre composant. Cette "
+"méthode retourne un singleton pour le composant spécifié, ainsi, l'appeler "
+"deux fois dans une ligne avec le même nom de composant retournera la même "
+"instance du composant."
+
+#. Tag: para
+#: Remoting.xml:89
+#, no-c-format
+msgid ""
+"To continue our example from before, if we have created a new "
+"<literal>customer</literal> and we now wish to save it, we would pass it to "
+"the <literal>saveCustomer()</literal> method of our <literal>customerAction</"
+"literal> component:"
+msgstr ""
+"Pour continuer notre exemple précédent, si nous avons créé un nouveau "
+"<literal>customer</literal> et que nous désirons maintenant l'enregistrer, "
+"nous lui passerions à la méthode <literal>saveCustomer()</literal> de notre "
+"composant <literal>customerAction</literal>&nbsp;:"
+
+#. Tag: programlisting
+#: Remoting.xml:92
+#, no-c-format
+msgid "Seam.Component.getInstance(\"customerAction\").saveCustomer(customer);"
+msgstr "Seam.Component.getInstance(\"customerAction\").saveCustomer(customer);"
+
+#. Tag: title
+#: Remoting.xml:93
+#, no-c-format
+msgid "Seam.Component.getComponentName()"
+msgstr "Seam.Component.getComponentName()"
+
+#. Tag: para
+#: Remoting.xml:94
+#, no-c-format
+msgid ""
+"Passing an object into this method will return its component name if it is a "
+"component, or <literal>null</literal> if it is not."
+msgstr ""
+"Lorsqu'un un objet est passé à cette méthode, elle retourne le nom de son "
+"composant s'il s'agit d'un composant ou <literal>null</literal> dans le cas "
+"contraire."
+
+#. Tag: programlisting
+#: Remoting.xml:97
+#, no-c-format
+msgid ""
+"if (Seam.Component.getComponentName(instance) == \"customer\")\n"
+"    alert(\"Customer\");\n"
+"  else if (Seam.Component.getComponentName(instance) == \"staff\")\n"
+"    alert(\"Staff member\");"
+msgstr ""
+"if (Seam.Component.getComponentName(instance) == \"customer\")\n"
+"    alert(\"Customer\");\n"
+"  else if (Seam.Component.getComponentName(instance) == \"staff\")\n"
+"    alert(\"Staff member\");"
+
+#. Tag: title
+#: Remoting.xml:98
+#, no-c-format
+msgid "Seam.Remoting"
+msgstr "Seam.Remoting"
+
+#. Tag: para
+#: Remoting.xml:99
+#, fuzzy, no-c-format
+msgid ""
+"Most of the client side functionality for Seam Remoting is contained within "
+"the <literal>Seam.Remoting</literal> object. While you shouldn&#39;t need to "
+"directly call most of its methods, there are a couple of important ones "
+"worth mentioning."
+msgstr ""
+"La plupart des fonctionnalités côté client pour Seam Remoting se trouvent "
+"dans l'objet <literal>Seam.Remoting</literal>. Bien que vous ne devriez pas "
+"avoir besoin d'appeler directement la plupart de ces méthodes, il y en a "
+"quelques unes qui valent la peine d'être mentionnées."
+
+#. Tag: title
+#: Remoting.xml:102
+#, no-c-format
+msgid "Seam.Remoting.createType()"
+msgstr "Seam.Remoting.createType()"
+
+#. Tag: para
+#: Remoting.xml:103
+#, fuzzy, no-c-format
+msgid ""
+"If your application contains or uses Javabean classes that aren&#39;t Seam "
+"components, you may need to create these types on the client side to pass as "
+"parameters into your component method. Use the <literal>createType()</"
+"literal> method to create an instance of your type. Pass in the fully "
+"qualified Java class name as a parameter:"
+msgstr ""
+"Si votre application contient ou utilise des classes Javabean qui ne sont "
+"pas des composants Seam, vous pourriez avoir besoin de créer ces types du "
+"côté client afin de les passer comme paramètres dans la méthode de votre "
+"composant. Utilisez la méthode <literal>createType()</literal> pour créer "
+"une instance de votre type. Passez le nom de la classe Java pleinement "
+"qualifiée en tant que paramètre&nbsp;:"
+
+#. Tag: programlisting
+#: Remoting.xml:106
+#, no-c-format
+msgid "var widget = Seam.Remoting.createType(\"com.acme.widgets.MyWidget\");"
+msgstr "var widget = Seam.Remoting.createType(\"com.acme.widgets.MyWidget\");"
+
+#. Tag: title
+#: Remoting.xml:107
+#, no-c-format
+msgid "Seam.Remoting.getTypeName()"
+msgstr "Seam.Remoting.getTypeName()"
+
+#. Tag: para
+#: Remoting.xml:108
+#, fuzzy, no-c-format
+msgid ""
+"This method is the equivalent of <literal>Seam.Component.getComponentName()</"
+"literal> but for non-component types. It will return the name of the type "
+"for an object instance, or <literal>null</literal> if the type is not known. "
+"The name is the fully qualified name of the type&#39;s Java class."
+msgstr ""
+"Cette méthode est l'équivalent de <literal>Seam.Component.getComponentName()"
+"</literal> mais pour les types qui ne sont pas des composants. Elle "
+"retournera le nom d'un type pour l'instance d'un objet, ou <literal>null</"
+"literal> si le type n'est pas connu. Le nom est le nom pleinement qualifié "
+"du type de la classe Java."
+
+#. Tag: title
+#: Remoting.xml:111
+#, no-c-format
+msgid "Client Interfaces"
+msgstr "Les interfaces client"
+
+#. Tag: para
+#: Remoting.xml:112
+#, no-c-format
+msgid ""
+"In the configuration section above, the interface, or \"stub\" for our "
+"component is imported into our page via <literal>seam/resource/remoting/"
+"interface.js</literal>:"
+msgstr ""
+"Dans la section de configuration ci-dessus, l'interface, ou \"stub\" pour "
+"notre composant est importé dans notre page via <literal>seam/resource/"
+"remoting/interface.js</literal>&nbsp;:"
+
+#. Tag: programlisting
+#: Remoting.xml:115
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?customerAction\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?customerAction\"&gt;\n"
+"  &lt;/script&gt;"
+
+#. Tag: para
+#: Remoting.xml:116
+#, no-c-format
+msgid ""
+"By including this script in our page, the interface definitions for our "
+"component, plus any other components or types that are required to execute "
+"the methods of our component are generated and made available for the "
+"remoting framework to use."
+msgstr ""
+"En incluant ce script dans notre page, les définitions de l'interface pour "
+"notre composant, ainsi que les autres composants ou types requis pour "
+"exécuter les méthodes de notre composant sont générés et rendus disponibles "
+"pour que le framework Remoting puisse les utiliser."
+
+#. Tag: para
+#: Remoting.xml:119
+#, no-c-format
+msgid ""
+"There are two types of client stub that can be generated, \"executable\" "
+"stubs and \"type\" stubs. Executable stubs are behavioural, and are used to "
+"execute methods against your session bean components, while type stubs "
+"contain state and represent the types that can be passed in as parameters or "
+"returned as a result."
+msgstr ""
+"Il y a deux types de stub client qui peuvent être générés, des stubs "
+"\"executable\" et des stubs \"type\". Les stubs exécutables sont liés au "
+"comportement et utilisés afin d'exécuter des méthodes contre des composants "
+"bean session alors que les stubs de type contiennent l'état et représentent "
+"les types qui peuvent être passés en paramètre ou retourné comme résultat."
+
+#. Tag: para
+#: Remoting.xml:122
+#, fuzzy, no-c-format
+msgid ""
+"The type of client stub that is generated depends on the type of your Seam "
+"component. If the component is a session bean, then an executable stub will "
+"be generated, otherwise if it&#39;s an entity or JavaBean, then a type stub "
+"will be generated. There is one exception to this rule; if your component is "
+"a JavaBean (ie it is not a session bean nor an entity bean) and any of its "
+"methods are annotated with @WebRemote, then an executable stub will be "
+"generated for it instead of a type stub. This allows you to use remoting to "
+"call methods of your JavaBean components in a non-EJB environment where you "
+"don&#39;t have access to session beans."
+msgstr ""
+"Le type de stub client qui généré dépend du type de votre composant Seam. Si "
+"le composant est un bean session, alors un stub exécutable sera généré, "
+"sinon, s'il s'agit d'une entité ou d'un JavaBean, alors un stub de type sera "
+"généré. Il y a une exception à cette règle&nbsp;; si votre composant est un "
+"JavaBean (par exemple s'il ne s'agit ni d'un bean session ni d'un bean "
+"entité) et qu'une de ces méthodes est annotée avec l'élément @WebRemote, "
+"alors un stub executable sera généré plutôt qu'un stub de type. Cela vous "
+"permet d'utiliser le remoting pour appeler des méthodes de votre JavaBean "
+"dans un environnement non-EJB où vous n'avez pas accès aux beans session."
+
+#. Tag: title
+#: Remoting.xml:125
+#, no-c-format
+msgid "The Context"
+msgstr "Le contexte"
+
+#. Tag: para
+#: Remoting.xml:126
+#, no-c-format
+msgid ""
+"The Seam Remoting Context contains additional information which is sent and "
+"received as part of a remoting request/response cycle. At this stage it only "
+"contains the conversation ID but may be expanded in the future."
+msgstr ""
+"Le contexte Seam Remoting contient des informations supplémentaires qui sont "
+"envoyées et reçues dans le cadre d'un cycle requête/réponse remoting. Pour "
+"le moment il ne contient que l'ID de conversation mais d'autres attributs "
+"pourraient être ajoutés par la suite."
+
+#. Tag: title
+#: Remoting.xml:129
+#, no-c-format
+msgid "Setting and reading the Conversation ID"
+msgstr "Définir et lire l'ID de conversation"
+
+#. Tag: para
+#: Remoting.xml:130
+#, no-c-format
+msgid ""
+"If you intend on using remote calls within the scope of a conversation then "
+"you need to be able to read or set the conversation ID in the Seam Remoting "
+"Context. To read the conversation ID after making a remote request call "
+"<literal>Seam.Remoting.getContext().getConversationId()</literal>. To set "
+"the conversation ID before making a request, call <literal>Seam.Remoting."
+"getContext().setConversationId()</literal>."
+msgstr ""
+"Si vous avez l'intention d'utiliser les appels distants dans la cadre d'une "
+"conversation vous devez alors être capable de lire et définir l'ID de "
+"conversation dans le contexte Seam Remoting. Pour lire l'ID de conversation "
+"après avoir effectué une requête distante, appelez la fonction <literal>Seam."
+"Remoting.getContext().getConversationId()</literal>. Pour définir l'ID de "
+"conversation avant d'effectuer une requête, appelez la fonction "
+"<literal>Seam.Remoting.getContext().setConversationId()</literal>."
+
+#. Tag: para
+#: Remoting.xml:133
+#, fuzzy, no-c-format
+msgid ""
+"If the conversation ID hasn&#39;t been explicitly set with <literal>Seam."
+"Remoting.getContext().setConversationId()</literal>, then it will be "
+"automatically assigned the first valid conversation ID that is returned by "
+"any remoting call. If you are working with multiple conversations within "
+"your page, then you may need to explicitly set the conversation ID before "
+"each call. If you are working with just a single conversation, then you "
+"don&#39;t need to do anything special."
+msgstr ""
+"Si l'ID de conversation n'a pas été défini explicitement avec la fonction "
+"<literal>Seam.Remoting.getContext().setConversationId()</literal>, sa valeur "
+"sera déterminée automatiquement à partir du premier ID de conversation "
+"retourné par un appel distant. Si vous travaillez avec plusieurs "
+"conversations au sein de votre page, vous devrez peut être définir "
+"explicitement l'ID de conversation avant chaque appel. Si vous travaillez "
+"avec un seul ID de conversation, vous n'avez rien besoin de faire."
+
+#. Tag: title
+#: Remoting.xml:137
+#, no-c-format
+msgid "Batch Requests"
+msgstr "Groupes de requêtes"
+
+#. Tag: para
+#: Remoting.xml:138
+#, no-c-format
+msgid ""
+"Seam Remoting allows multiple component calls to be executed within a single "
+"request. It is recommended that this feature is used wherever it is "
+"appropriate to reduce network traffic."
+msgstr ""
+"Seam Remoting permet l'exécution de multiples appels de composants au sein "
+"d'une seule requête. Nous vous recommandons d'utiliser cette fonctionnalité "
+"lorsque la réduction du traffic réseau est appropriée."
+
+#. Tag: para
+#: Remoting.xml:141
+#, no-c-format
+msgid ""
+"The method <literal>Seam.Remoting.startBatch()</literal> will start a new "
+"batch, and any component calls executed after starting a batch are queued, "
+"rather than being sent immediately. When all the desired component calls "
+"have been added to the batch, the <literal>Seam.Remoting.executeBatch()</"
+"literal> method will send a single request containing all of the queued "
+"calls to the server, where they will be executed in order. After the calls "
+"have been executed, a single response containining all return values will be "
+"returned to the client and the callback functions (if provided) triggered in "
+"the same order as execution."
+msgstr ""
+"La méthode <literal>Seam.Remoting.startBatch()</literal> démarrera un "
+"nouveau groupe et tous les appels de composants exécutés après le démarrage "
+"d'un groupe seront mis en file d'attente, plutôt que d'être envoyés "
+"immédiatement. Lorsque tous les appels de composants désirés ont été ajoutés "
+"au groupe, la méthode <literal>Seam.Remoting.executeBatch()</literal> "
+"enverra une seule requête contenant tous les appels en file d'attente, vers "
+"le serveur où ils seront exécutés dans l'ordre. Après que les appels aient "
+"été exécutés, une seule réponse contenant toutes les valeurs de retour sera "
+"retournée au client et les fonctions de rappel (si elles sont fournies) "
+"seront déclenchées dans le même ordre qu'à l'exécution."
+
+#. Tag: para
+#: Remoting.xml:144
+#, fuzzy, no-c-format
+msgid ""
+"If you start a new batch via the <literal>startBatch()</literal> method but "
+"then decide you don&#39;t want to send it, the <literal>Seam.Remoting."
+"cancelBatch()</literal> method will discard any calls that were queued and "
+"exit the batch mode."
+msgstr ""
+"Si vous démarrez un nouveau groupe via la méthode <literal>startBatch()</"
+"literal> mais ensuite décidez de ne pas l'envoyer, la méthode <literal>Seam."
+"Remoting.cancelBatch()</literal> ignorera les appels qui étaient en file "
+"d'attente et sortira du mode groupe."
+
+#. Tag: para
+#: Remoting.xml:147
+#, no-c-format
+msgid ""
+"To see an example of a batch being used, take a look at <literal>/examples/"
+"remoting/chatroom</literal>."
+msgstr ""
+"Pour visualisé un exemple de groupe en cours d'utilisation, regardez "
+"<literal>/examples/remoting/chatroom</literal>."
+
+#. Tag: title
+#: Remoting.xml:150
+#, no-c-format
+msgid "Working with Data types"
+msgstr "Travailler avec les types de données"
+
+#. Tag: title
+#: Remoting.xml:151
+#, no-c-format
+msgid "Primitives / Basic Types"
+msgstr "Les types primitifs/basiques"
+
+#. Tag: para
+#: Remoting.xml:152
+#, no-c-format
+msgid ""
+"This section describes the support for basic data types. On the server side "
+"these values are generally compatible with either their primitive type or "
+"their corresponding wrapper class."
+msgstr ""
+"Cette section décrit la prise en charge des types de données basiques. Du "
+"côté serveur, ces valeurs sont généralement compatibles avec les types "
+"primitifs ou leur classe wrapper correspondante."
+
+#. Tag: title
+#: Remoting.xml:155
+#, no-c-format
+msgid "String"
+msgstr "String"
+
+#. Tag: para
+#: Remoting.xml:156
+#, no-c-format
+msgid ""
+"Simply use Javascript String objects when setting String parameter values."
+msgstr ""
+"Utilisez simplement les objets String Javascript lorsque vous définissez des "
+"valeurs de paramètre String."
+
+#. Tag: title
+#: Remoting.xml:159
+#, no-c-format
+msgid "Number"
+msgstr "Number"
+
+#. Tag: para
+#: Remoting.xml:160
+#, no-c-format
+msgid ""
+"There is support for all number types supported by Java. On the client side, "
+"number values are always serialized as their String representation and then "
+"on the server side they are converted to the correct destination type. "
+"Conversion into either a primitive or wrapper type is supported for "
+"<literal>Byte</literal>, <literal>Double</literal>, <literal>Float</"
+"literal>, <literal>Integer</literal>, <literal>Long</literal> and "
+"<literal>Short</literal> types."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:163
+#, no-c-format
+msgid "Boolean"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:164
+#, no-c-format
+msgid ""
+"Booleans are represented client side by Javascript Boolean values, and "
+"server side by a Java boolean."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:167
+#, no-c-format
+msgid "JavaBeans"
+msgstr "JavaBeans"
+
+#. Tag: para
+#: Remoting.xml:168
+#, no-c-format
+msgid ""
+"In general these will be either Seam entity or JavaBean components, or some "
+"other non-component class. Use the appropriate method (either <literal>Seam."
+"Component.newInstance()</literal> for Seam components or <literal>Seam."
+"Remoting.createType()</literal> for everything else) to create a new "
+"instance of the object."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:171
+#, no-c-format
+msgid ""
+"It is important to note that only objects that are created by either of "
+"these two methods should be used as parameter values, where the parameter is "
+"not one of the other valid types mentioned anywhere else in this section. In "
+"some situations you may have a component method where the exact parameter "
+"type cannot be determined, such as:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:174
+#, no-c-format
+msgid ""
+"@Name(\"myAction\")\n"
+"  public class MyAction implements MyActionLocal {\n"
+"    public void doSomethingWithObject(Object obj) {\n"
+"      // code\n"
+"    }\n"
+"  }"
+msgstr ""
+"@Name(\"myAction\")\n"
+"  public class MyAction implements MyActionLocal {\n"
+"    public void doSomethingWithObject(Object obj) {\n"
+"      // code\n"
+"    }\n"
+"  }"
+
+#. Tag: para
+#: Remoting.xml:175
+#, no-c-format
+msgid ""
+"In this case you might want to pass in an instance of your "
+"<literal>myWidget</literal> component, however the interface for "
+"<literal>myAction</literal> won&#39;t include <literal>myWidget</literal> as "
+"it is not directly referenced by any of its methods. To get around this, "
+"<literal>MyWidget</literal> needs to be explicitly imported:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:178
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?myAction&amp;myWidget\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?myAction&amp;myWidget\"&gt;\n"
+"  &lt;/script&gt;"
+
+#. Tag: para
+#: Remoting.xml:179
+#, no-c-format
+msgid ""
+"This will then allow a <literal>myWidget</literal> object to be created with "
+"<literal>Seam.Component.newInstance(\"myWidget\")</literal>, which can then "
+"be passed to <literal>myAction.doSomethingWithObject()</literal>."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:182
+#, no-c-format
+msgid "Dates and Times"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:183
+#, no-c-format
+msgid ""
+"Date values are serialized into a String representation that is accurate to "
+"the millisecond. On the client side, use a Javascript Date object to work "
+"with date values. On the server side, use any <literal>java.util.Date</"
+"literal> (or descendent, such as <literal>java.sql.Date</literal> or "
+"<literal>java.sql.Timestamp</literal> class."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:186
+#, no-c-format
+msgid "Enums"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:187
+#, no-c-format
+msgid ""
+"On the client side, enums are treated the same as Strings. When setting the "
+"value for an enum parameter, simply use the String representation of the "
+"enum. Take the following component as an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:190
+#, no-c-format
+msgid ""
+"@Name(\"paintAction\")\n"
+"  public class paintAction implements paintLocal {\n"
+"    public enum Color {red, green, blue, yellow, orange, purple};\n"
+"\n"
+"    public void paint(Color color) {\n"
+"      // code\n"
+"    }    \n"
+"  }"
+msgstr ""
+"@Name(\"paintAction\")\n"
+"  public class paintAction implements paintLocal {\n"
+"    public enum Color {red, green, blue, yellow, orange, purple};\n"
+"\n"
+"    public void paint(Color color) {\n"
+"      // code\n"
+"    }    \n"
+"  }"
+
+#. Tag: para
+#: Remoting.xml:191
+#, no-c-format
+msgid ""
+"To call the <literal>paint()</literal> method with the color <literal>red</"
+"literal>, pass the parameter value as a String literal:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:194
+#, no-c-format
+msgid "Seam.Component.getInstance(\"paintAction\").paint(\"red\");"
+msgstr "Seam.Component.getInstance(\"paintAction\").paint(\"red\");"
+
+#. Tag: para
+#: Remoting.xml:195
+#, no-c-format
+msgid ""
+"The inverse is also true - that is, if a component method returns an enum "
+"parameter (or contains an enum field anywhere in the returned object graph) "
+"then on the client-side it will be represented as a String."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:198
+#, no-c-format
+msgid "Collections"
+msgstr "Collections"
+
+#. Tag: title
+#: Remoting.xml:199
+#, no-c-format
+msgid "Bags"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:200
+#, no-c-format
+msgid ""
+"Bags cover all collection types including arrays, collections, lists, sets, "
+"(but excluding Maps - see the next section for those), and are implemented "
+"client-side as a Javascript array. When calling a component method that "
+"accepts one of these types as a parameter, your parameter should be a "
+"Javascript array. If a component method returns one of these types, then the "
+"return value will also be a Javascript array. The remoting framework is "
+"clever enough on the server side to convert the bag to an appropriate type "
+"for the component method call."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:203
+#, no-c-format
+msgid "Maps"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:204
+#, no-c-format
+msgid ""
+"As there is no native support for Maps within Javascript, a simple Map "
+"implementation is provided with the Seam Remoting framework. To create a Map "
+"which can be used as a parameter to a remote call, create a new "
+"<literal>Seam.Remoting.Map</literal> object:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:207
+#, no-c-format
+msgid "var map = new Seam.Remoting.Map();"
+msgstr "var map = new Seam.Remoting.Map();"
+
+#. Tag: para
+#: Remoting.xml:208
+#, no-c-format
+msgid ""
+"This Javascript implementation provides basic methods for working with Maps: "
+"<literal>size()</literal>, <literal>isEmpty()</literal>, <literal>keySet()</"
+"literal>, <literal>values()</literal>, <literal>get(key)</literal>, "
+"<literal>put(key, value)</literal>, <literal>remove(key)</literal> and "
+"<literal>contains(key)</literal>. Each of these methods are equivalent to "
+"their Java counterpart. Where the method returns a collection, such as "
+"<literal>keySet()</literal> and <literal>values()</literal>, a Javascript "
+"Array object will be returned that contains the key or value objects "
+"(respectively)."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:211
+#, no-c-format
+msgid "Debugging"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:212
+#, no-c-format
+msgid ""
+"To aid in tracking down bugs, it is possible to enable a debug mode which "
+"will display the contents of all the packets send back and forth between the "
+"client and server in a popup window. To enable debug mode, either execute "
+"the <literal>setDebug()</literal> method in Javascript:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:215
+#, no-c-format
+msgid "Seam.Remoting.setDebug(true);"
+msgstr "Seam.Remoting.setDebug(true);"
+
+#. Tag: para
+#: Remoting.xml:216
+#, no-c-format
+msgid "Or configure it via components.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:219
+#, no-c-format
+msgid "&lt;remoting:remoting debug=\"true\"/&gt;"
+msgstr "&lt;remoting:remoting debug=\"true\"/&gt;"
+
+#. Tag: para
+#: Remoting.xml:220
+#, no-c-format
+msgid ""
+"To turn off debugging, call <literal>setDebug(false)</literal>. If you want "
+"to write your own messages to the debug log, call <literal>Seam.Remoting.log"
+"(message)</literal>."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:223
+#, no-c-format
+msgid "The Loading Message"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:224
+#, no-c-format
+msgid ""
+"The default loading message that appears in the top right corner of the "
+"screen can be modified, its rendering customised or even turned off "
+"completely."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:227
+#, no-c-format
+msgid "Changing the message"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:228
+#, no-c-format
+msgid ""
+"To change the message from the default \"Please Wait...\" to something "
+"different, set the value of <literal>Seam.Remoting.loadingMessage</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:231
+#, no-c-format
+msgid "Seam.Remoting.loadingMessage = \"Loading...\";"
+msgstr "Seam.Remoting.loadingMessage = \"Loading...\";"
+
+#. Tag: title
+#: Remoting.xml:232
+#, no-c-format
+msgid "Hiding the loading message"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:233
+#, no-c-format
+msgid ""
+"To completely suppress the display of the loading message, override the "
+"implementation of <literal>displayLoadingMessage()</literal> and "
+"<literal>hideLoadingMessage()</literal> with functions that instead do "
+"nothing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:236
+#, fuzzy, no-c-format
+msgid ""
+"// don&#39;t display the loading indicator\n"
+"  Seam.Remoting.displayLoadingMessage = function() {};\n"
+"  Seam.Remoting.hideLoadingMessage = function() {};"
+msgstr ""
+"// don't display the loading indicator\n"
+"  Seam.Remoting.displayLoadingMessage = function() {};\n"
+"  Seam.Remoting.hideLoadingMessage = function() {};"
+
+#. Tag: title
+#: Remoting.xml:237
+#, no-c-format
+msgid "A Custom Loading Indicator"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:238
+#, no-c-format
+msgid ""
+"It is also possible to override the loading indicator to display an animated "
+"icon, or anything else that you want. To do this override the "
+"<literal>displayLoadingMessage()</literal> and <literal>hideLoadingMessage()"
+"</literal> messages with your own implementation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:241
+#, no-c-format
+msgid ""
+"Seam.Remoting.displayLoadingMessage = function() {\n"
+"    // Write code here to display the indicator\n"
+"  };\n"
+"  \n"
+"  Seam.Remoting.hideLoadingMessage = function() {\n"
+"    // Write code here to hide the indicator\n"
+"  };"
+msgstr ""
+"Seam.Remoting.displayLoadingMessage = function() {\n"
+"    // Write code here to display the indicator\n"
+"  };\n"
+"  \n"
+"  Seam.Remoting.hideLoadingMessage = function() {\n"
+"    // Write code here to hide the indicator\n"
+"  };"
+
+#. Tag: title
+#: Remoting.xml:242
+#, no-c-format
+msgid "Controlling what data is returned"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:243
+#, no-c-format
+msgid ""
+"When a remote method is executed, the result is serialized into an XML "
+"response that is returned to the client. This response is then unmarshaled "
+"by the client into a Javascript object. For complex types (i.e. Javabeans) "
+"that include references to other objects, all of these referenced objects "
+"are also serialized as part of the response. These objects may reference "
+"other objects, which may reference other objects, and so forth. If left "
+"unchecked, this object \"graph\" could potentially be enormous, depending on "
+"what relationships exist between your objects. And as a side issue (besides "
+"the potential verbosity of the response), you might also wish to prevent "
+"sensitive information from being exposed to the client."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:246
+#, no-c-format
+msgid ""
+"Seam Remoting provides a simple means to \"constrain\" the object graph, by "
+"specifying the <literal>exclude</literal> field of the remote method&#39;s "
+"<literal>@WebRemote</literal> annotation. This field accepts a String array "
+"containing one or more paths specified using dot notation. When invoking a "
+"remote method, the objects in the result&#39;s object graph that match these "
+"paths are excluded from the serialized result packet."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:249
+#, no-c-format
+msgid ""
+"For all our examples, we&#39;ll use the following <literal>Widget</literal> "
+"class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:252
+#, no-c-format
+msgid ""
+"@Name(\"widget\")\n"
+"public class Widget\n"
+"{\n"
+"  private String value;\n"
+"  private String secret;\n"
+"  private Widget child;\n"
+"  private Map&lt;String,Widget&gt; widgetMap;\n"
+"  private List&lt;Widget&gt; widgetList;\n"
+"  \n"
+"  // getters and setters for all fields\n"
+"}"
+msgstr ""
+"@Name(\"widget\")\n"
+"public class Widget\n"
+"{\n"
+"  private String value;\n"
+"  private String secret;\n"
+"  private Widget child;\n"
+"  private Map&lt;String,Widget&gt; widgetMap;\n"
+"  private List&lt;Widget&gt; widgetList;\n"
+"  \n"
+"  // getters and setters for all fields\n"
+"}"
+
+#. Tag: title
+#: Remoting.xml:253
+#, no-c-format
+msgid "Constraining normal fields"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:254
+#, no-c-format
+msgid ""
+"If your remote method returns an instance of <literal>Widget</literal>, but "
+"you don&#39;t want to expose the <literal>secret</literal> field because it "
+"contains sensitive information, you would constrain it like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:257
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+"@WebRemote(exclude = {\"secret\"})\n"
+"  public Widget getWidget();"
+
+#. Tag: para
+#: Remoting.xml:258
+#, no-c-format
+msgid ""
+"The value \"secret\" refers to the <literal>secret</literal> field of the "
+"returned object. Now, suppose that we don&#39;t care about exposing this "
+"particular field to the client. Instead, notice that the <literal>Widget</"
+"literal> value that is returned has a field <literal>child</literal> that is "
+"also a <literal>Widget</literal>. What if we want to hide the "
+"<literal>child</literal>&#39;s <literal>secret</literal> value instead? We "
+"can do this by using dot notation to specify this field&#39;s path within "
+"the result&#39;s object graph:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:261
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"child.secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+"@WebRemote(exclude = {\"child.secret\"})\n"
+"  public Widget getWidget();"
+
+#. Tag: title
+#: Remoting.xml:262
+#, no-c-format
+msgid "Constraining Maps and Collections"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:263
+#, no-c-format
+msgid ""
+"The other place that objects can exist within an object graph are within a "
+"<literal>Map</literal> or some kind of collection (<literal>List</literal>, "
+"<literal>Set</literal>, <literal>Array</literal>, etc). Collections are "
+"easy, and are treated like any other field. For example, if our "
+"<literal>Widget</literal> contained a list of other <literal>Widget</"
+"literal>s in its <literal>widgetList</literal> field, to constrain the "
+"<literal>secret</literal> field of the <literal>Widget</literal>s in this "
+"list the annotation would look like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:266
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetList.secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+"@WebRemote(exclude = {\"widgetList.secret\"})\n"
+"  public Widget getWidget();"
+
+#. Tag: para
+#: Remoting.xml:267
+#, no-c-format
+msgid ""
+"To constrain a <literal>Map</literal>&#39;s key or value, the notation is "
+"slightly different. Appending <literal>[key]</literal> after the "
+"<literal>Map</literal>&#39;s field name will constrain the <literal>Map</"
+"literal>&#39;s key object values, while <literal>[value]</literal> will "
+"constrain the value object values. The following example demonstrates how "
+"the values of the <literal>widgetMap</literal> field have their "
+"<literal>secret</literal> field constrained:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:270
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetMap[value].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+"@WebRemote(exclude = {\"widgetMap[value].secret\"})\n"
+"  public Widget getWidget();"
+
+#. Tag: title
+#: Remoting.xml:271
+#, no-c-format
+msgid "Constraining objects of a specific type"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:272
+#, no-c-format
+msgid ""
+"There is one last notation that can be used to constrain the fields of a "
+"type of object no matter where in the result&#39;s object graph it appears. "
+"This notation uses either the name of the component (if the object is a Seam "
+"component) or the fully qualified class name (only if the object is not a "
+"Seam component) and is expressed using square brackets:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:275
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"[widget].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+"@WebRemote(exclude = {\"[widget].secret\"})\n"
+"  public Widget getWidget();"
+
+#. Tag: title
+#: Remoting.xml:276
+#, no-c-format
+msgid "Combining Constraints"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:277
+#, no-c-format
+msgid ""
+"Constraints can also be combined, to filter objects from multiple paths "
+"within the object graph:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:280
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetList.secret\", \"widgetMap[value].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+"@WebRemote(exclude = {\"widgetList.secret\", \"widgetMap[value].secret\"})\n"
+"  public Widget getWidget();"
+
+#. Tag: title
+#: Remoting.xml:281
+#, no-c-format
+msgid "JMS Messaging"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:282
+#, no-c-format
+msgid ""
+"Seam Remoting provides experimental support for JMS Messaging. This section "
+"describes the JMS support that is currently implemented, but please note "
+"that this may change in the future. It is currently not recommended that "
+"this feature is used within a production environment."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:286
+#, no-c-format
+msgid ""
+"Before you can subscribe to a JMS topic, you must first configure a list of "
+"the topics that can be subscribed to by Seam Remoting. List the topics under "
+"<literal>org.jboss.seam.remoting.messaging.subscriptionRegistry."
+"allowedTopics</literal> in <literal>seam.properties</literal>, <literal>web."
+"xml</literal> or <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:289 Remoting.xml:322
+#, no-c-format
+msgid "&lt;remoting:remoting poll-timeout=\"5\" poll-interval=\"1\"/&gt;"
+msgstr "&lt;remoting:remoting poll-timeout=\"5\" poll-interval=\"1\"/&gt;"
+
+#. Tag: title
+#: Remoting.xml:290
+#, no-c-format
+msgid "Subscribing to a JMS Topic"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:291
+#, no-c-format
+msgid "The following example demonstrates how to subscribe to a JMS Topic:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:294
+#, no-c-format
+msgid ""
+"function subscriptionCallback(message)\n"
+"  {\n"
+"    if (message instanceof Seam.Remoting.TextMessage)\n"
+"      alert(\"Received message: \" + message.getText());\n"
+"  }        \n"
+"        \n"
+"  Seam.Remoting.subscribe(\"topicName\", subscriptionCallback);"
+msgstr ""
+"function subscriptionCallback(message)\n"
+"  {\n"
+"    if (message instanceof Seam.Remoting.TextMessage)\n"
+"      alert(\"Received message: \" + message.getText());\n"
+"  }        \n"
+"        \n"
+"  Seam.Remoting.subscribe(\"topicName\", subscriptionCallback);"
+
+#. Tag: para
+#: Remoting.xml:295
+#, no-c-format
+msgid ""
+"The <literal>Seam.Remoting.subscribe()</literal> method accepts two "
+"parameters, the first being the name of the JMS Topic to subscribe to, the "
+"second being the callback function to invoke when a message is received."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:298
+#, no-c-format
+msgid ""
+"There are two types of messages supported, Text messages and Object "
+"messages. If you need to test for the type of message that is passed to your "
+"callback function you can use the <literal>instanceof</literal> operator to "
+"test whether the message is a <literal>Seam.Remoting.TextMessage</literal> "
+"or <literal>Seam.Remoting.ObjectMessage</literal>. A <literal>TextMessage</"
+"literal> contains the text value in its <literal>text</literal> field (or "
+"alternatively call <literal>getText()</literal> on it), while an "
+"<literal>ObjectMessage</literal> contains its object value in its "
+"<literal>object</literal> field (or call its <literal>getObject()</literal> "
+"method)."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:301
+#, no-c-format
+msgid "Unsubscribing from a Topic"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:302
+#, no-c-format
+msgid ""
+"To unsubscribe from a topic, call <literal>Seam.Remoting.unsubscribe()</"
+"literal> and pass in the topic name:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:305
+#, no-c-format
+msgid "Seam.Remoting.unsubscribe(\"topicName\");"
+msgstr "Seam.Remoting.unsubscribe(\"topicName\");"
+
+#. Tag: title
+#: Remoting.xml:306
+#, no-c-format
+msgid "Tuning the Polling Process"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:307
+#, no-c-format
+msgid ""
+"There are two parameters which you can modify to control how polling occurs. "
+"The first one is <literal>Seam.Remoting.pollInterval</literal>, which "
+"controls how long to wait between subsequent polls for new messages. This "
+"parameter is expressed in seconds, and its default setting is 10."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:310
+#, no-c-format
+msgid ""
+"The second parameter is <literal>Seam.Remoting.pollTimeout</literal>, and is "
+"also expressed as seconds. It controls how long a request to the server "
+"should wait for a new message before timing out and sending an empty "
+"response. Its default is 0 seconds, which means that when the server is "
+"polled, if there are no messages ready for delivery then an empty response "
+"will be immediately returned."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:313
+#, no-c-format
+msgid ""
+"Caution should be used when setting a high <literal>pollTimeout</literal> "
+"value; each request that has to wait for a message means that a server "
+"thread is tied up until a message is received, or until the request times "
+"out. If many such requests are being served simultaneously, it could mean a "
+"large number of threads become tied up because of this reason."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:316
+#, no-c-format
+msgid ""
+"It is recommended that you set these options via components.xml, however "
+"they can be overridden via Javascript if desired. The following example "
+"demonstrates how to configure the polling to occur much more aggressively. "
+"You should set these parameters to suitable values for your application:"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:319
+#, no-c-format
+msgid "Via components.xml:"
+msgstr "Via components.xml:"
+
+#. Tag: para
+#: Remoting.xml:323
+#, no-c-format
+msgid "Via JavaScript:"
+msgstr "Via JavaScript:"
+
+#. Tag: programlisting
+#: Remoting.xml:326
+#, no-c-format
+msgid ""
+"// Only wait 1 second between receiving a poll response and sending the next "
+"poll request.\n"
+"  Seam.Remoting.pollInterval = 1;\n"
+"  \n"
+"  // Wait up to 5 seconds on the server for new messages\n"
+"  Seam.Remoting.pollTimeout = 5;"
+msgstr ""
+"// Only wait 1 second between receiving a poll response and sending the next "
+"poll request.\n"
+"  Seam.Remoting.pollInterval = 1;\n"
+"  \n"
+"  // Wait up to 5 seconds on the server for new messages\n"
+"  Seam.Remoting.pollTimeout = 5;"

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Seam_Reference_Guide.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Seam_Reference_Guide.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Seam_Reference_Guide.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,473 @@
+# translation of Reference_Guide.po to french
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# myriam malga <mmalga at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Reference_Guide\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-02-04 23:29+0000\n"
+"PO-Revision-Date: 2007-08-07 10:54+1000\n"
+"Last-Translator: myriam malga <mmalga at redhat.com>\n"
+"Language-Team: french\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Seam_Reference_Guide.xml:9
+#, no-c-format
+msgid "Introduction to JBoss Seam"
+msgstr "Introduction à Seam de JBoss"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:10
+#, no-c-format
+msgid ""
+"Seam is an application framework for Java EE 5. It is inspired by the "
+"following principles:"
+msgstr ""
+"Seam est un framework d'application pour Java EE 5. Il s'inspire des "
+"principes suivants :"
+
+#. Tag: emphasis
+#: Seam_Reference_Guide.xml:15
+#, no-c-format
+msgid "Integrate JSF with EJB 3.0"
+msgstr "Intégrer JSF avec EJB 3.0"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:17
+#, no-c-format
+msgid ""
+"JSF and EJB 3.0 are two of the best new features of Java EE 5. EJB3 is a "
+"brand new component model for server side business and persistence logic. "
+"Meanwhile, JSF is a great component model for the presentation tier. "
+"Unfortunately, neither component model is able to solve all problems in "
+"computing by itself. Indeed, JSF and EJB3 work best used together. But the "
+"Java EE 5 specification provides no standard way to integrate the two "
+"component models. Fortunately, the creators of both models foresaw this "
+"situation and provided standard extension points to allow extension and "
+"integration of other solutions."
+msgstr ""
+"JSF et EJB 3.0 font partie des deux meilleures fonctionnalités nouvelles de "
+"Java EE 5. EJB3 est un modèle de composants tout à fait nouveau pour la "
+"logique de persistance et métier, côté serveur. Par ailleurs, JSF est un "
+"excellent modèle de composants pour le niveau de présentation. "
+"Malheureusement, aucun des modèles de composants n'est en mesure de résoudre "
+"tous les problèmes à lui seul.En pratique, JSF et EJB3 sont plus performants "
+"quand ils travaillent ensemble. Les spécifications Java EE 5 ne fournissent "
+"pas de manière standard pour intégrer les deux modèles de composants. "
+"Heureusement, les créateurs des deux modèles avaient prévu cette situation "
+"et fournissent des points d'extension standards pour permettre l'extension "
+"et l'intégration des autres solutions."
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:20
+#, no-c-format
+msgid ""
+"Seam unifies the component models of JSF and EJB3, eliminating glue code, "
+"and letting the developer think about the business problem."
+msgstr ""
+"Seam unifie les modèles de composants JSF et EJB3, élimine le code collé, "
+"etlaisse au développeur la résolution des problèmes d'affaires."
+
+#. Tag: emphasis
+#: Seam_Reference_Guide.xml:26
+#, no-c-format
+msgid "Integrated AJAX"
+msgstr "AJAX intégré"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:28
+#, no-c-format
+msgid ""
+"Seam supports two open source JSF-based AJAX solutions: ICEfaces and "
+"Ajax4JSF. These solutions let you add AJAX capability to your user interface "
+"without the need to write any JavaScript code."
+msgstr ""
+"Seam supporte deux solutions open source AJAX basées sur JSF : ICEfaces et "
+"Ajax4JSF. Ces solutions vous donnent la possibilité d'ajouter les capacités "
+"AJAX à votre interface d'utilisateur sans la contrainte d'écrire du code "
+"JavaScript."
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:31
+#, no-c-format
+msgid ""
+"Seam also provides a built-in JavaScript remoting layer for EJB3 components. "
+"AJAX clients can easily call server-side components and subscribe to JMS "
+"topics, without the need for an intermediate action layer."
+msgstr ""
+"Seam offre également une couche remoting JavaScript pour les composants "
+"EJB3. Les clients d'AJAX peuvent facilement appeler les composants côté "
+"serveur et souscrire aux sujets JMS, sans couche d'action intermédiaire."
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:34
+#, fuzzy, no-c-format
+msgid ""
+"Neither of these approaches would work well, were it not for Seam&#39;s "
+"built-in concurrency and state management, which ensures that many "
+"concurrent fine-grained, asynchronous AJAX requests are handled safely and "
+"efficiently on the server side."
+msgstr ""
+"Aucune de ces approches ne fonctionnerait bien, si la gestion intégrée "
+"d'état et de colatéralité de Seam n'existait pas. Celle-ci garantit le "
+"traitement sécurisé et efficace de nombreuses requêtes AJAX concurrentes, à "
+"granularité fine et asynchrones côté serveur."
+
+#. Tag: emphasis
+#: Seam_Reference_Guide.xml:40
+#, no-c-format
+msgid "Integrate Business Process as a First Class Construct"
+msgstr "Intégrer le processus métier en tant que concept de première classe"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:42
+#, fuzzy, no-c-format
+msgid ""
+"Optionally, Seam integrates transparent business process management via "
+"jBPM. You won&#39;t believe how easy it is to implement complex workflows "
+"using jBPM and Seam."
+msgstr ""
+"En option, Seam intègre une gestion transparente du processus métier via "
+"jBPM. Difficile de concevoir la facilité avec laquelle on implémente des "
+"flux de production complexes grâce à jBPM et Seam."
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:45
+#, no-c-format
+msgid ""
+"Seam even allows definition of presentation tier conversation flow by the "
+"same means."
+msgstr ""
+"De la même manière, Seam vous permet même la définition du flux de "
+"conversation du niveau de présentation. "
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:48
+#, fuzzy, no-c-format
+msgid ""
+"JSF provides an incredibly rich event model for the presentation tier. Seam "
+"enhances this model by exposing jBPM&#39;s business process related events "
+"via exactly the same event handling mechanism, providing a uniform event "
+"model for Seam&#39;s uniform component model."
+msgstr ""
+"JSF fournit un modèle d'évènements incroyablement riche pour le niveau de "
+"présentation. Seam rehausse ce modèle en exposant les évènements liés au "
+"processus métier de jBPM, via un mécanisme de gestion d'évènements "
+"identique, fournissant ainsi un modèle d'évènements uniforme pour le modèle "
+"de composants de Seam. "
+
+#. Tag: emphasis
+#: Seam_Reference_Guide.xml:54
+#, no-c-format
+msgid "One Kind of \"Stuff\""
+msgstr "One Kind of \"Stuff\" "
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:56
+#, no-c-format
+msgid ""
+"Seam provides a uniform component model. A Seam component may be stateful, "
+"with the state associated to any one of a number of contexts, ranging from "
+"the long-running business process to a single web request."
+msgstr ""
+"Seam offre un modèle de composants uniforme. Un composant Seam peut être "
+"stateful, avec un état associé à toutes sortes de contextes, allant du "
+"processus métier à long terme à une requête web unique. "
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:59
+#, no-c-format
+msgid ""
+"There is no distinction between presentation tier components and business "
+"logic components in Seam. It is possible to write Seam applications where "
+"\"everything\" is an EJB. This may come as a surprise if you are used to "
+"thinking of EJBs as coarse-grained, heavyweight objects that are a pain in "
+"the backside to create! However, EJB 3.0 completely changes the nature of "
+"EJB from the point of view of the developer. An EJB is a fine-grained object "
+"- nothing more complex than an annotated JavaBean. Seam even encourages you "
+"to use session beans as JSF action listeners!"
+msgstr ""
+"Il n'y a pas de distinction entre les composants du niveau de présentation "
+"et les composants de logique métier de Seam. Il est possible d'écrire des "
+"applications Seam où \"tout\" est un EJB. Cela peut vous surprendre si vous "
+"êtes habitués à voir les EJB comme des objets lourds à faible granularité et "
+"particulièrement difficiles à créer ! Cependant, EJB 3.0 modifie totalement "
+"la nature de l'EJB du point de vue du développeur. Un EJB est un objet à "
+"fine granularité - rien de plus complexe qu'un JavaBean annoté. Seam vous "
+"encourage même à utiliser les beans session en tant que listeners d'action "
+"JSF !"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:62
+#, no-c-format
+msgid ""
+"Unlike plain Java EE or J2EE components, Seam components may "
+"<emphasis>simultaneously</emphasis> access state associated with the web "
+"request and state held in transactional resources (without the need to "
+"propagate web request state manually via method parameters). You might "
+"object that the application layering imposed upon you by the old J2EE "
+"platform was a Good Thing. Well, nothing stops you creating an equivalent "
+"layered architecture using Seam - the difference is that <emphasis>you</"
+"emphasis> get to architect your own application and decide what the layers "
+"are and how they work together."
+msgstr ""
+"Contrairement aux composants simples de Java EE ou J2EE, les composants de "
+"Seam peuvent accéder <emphasis>simultanément</emphasis> à l'état associé à "
+"la requête web et à l'état situé dans les ressources transactionnelles (sans "
+"avoir à propager l'état des requêtes web manuellement via les paramètres de "
+"méthode). Vous pensez sans doute que l'organisation en couches de "
+"l'application, imposée par l'ancienne plateforme J2EE était une bonne chose. "
+"Rien ne vous empêche de créer une archictecture d'organisation en couches "
+"équivalente en utilisant Seam - à la différence que c'est <emphasis>vous</"
+"emphasis> qui créez votre propre architecture d'application et qui décidez "
+"des couches et de la façon dont elles fonctionnent les unes avec les autres. "
+
+#. Tag: emphasis
+#: Seam_Reference_Guide.xml:68
+#, no-c-format
+msgid "Declarative State Management"
+msgstr "Gestion déclarative de l'état"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:70
+#, no-c-format
+msgid ""
+"We are all used to the concept of declarative transaction management and "
+"J2EE declarative security from EJB 2.x. EJB 3.0 even introduces declarative "
+"persistence context management. These are three examples of a broader "
+"problem of managing state that is associated with a particular "
+"<emphasis>context</emphasis>, while ensuring that all needed cleanup occurs "
+"when the context ends. Seam takes the concept of declarative state "
+"management much further and applies it to <emphasis>application state</"
+"emphasis>. Traditionally, J2EE applications almost always implement state "
+"management manually, by getting and setting servlet session and request "
+"attributes. This approach to state management is the source of many bugs and "
+"memory leaks when applications fail to clean up session attributes, or when "
+"session data associated with different workflows collides in a multi-window "
+"application. Seam has the potential to almost entirely eliminate this class "
+"of bugs."
+msgstr ""
+"Nous sommes tous habitués au concept de la gestion déclarative des "
+"transactions et de la sécurité déclarative J2EE de EJB 2.x. EJB 3.0 "
+"introduit même une gestion de contexte de persistance déclarative. Voici "
+"trois exemples d'un problème plus général dans la gestion d'état associée à "
+"un <emphasis>contexte</emphasis> particulier, alors que tout vidage "
+"nécessaire est garanti être effectué quand le contexte se termine. Seam "
+"élargit plus encore le concept de la gestion déclarative de l'état et "
+"l'applique à <emphasis>l'état d'application</emphasis>. Traditionnellement, "
+"les applications J2EE implémentent presque toujours la gestion de l'état "
+"manuellement, en récupérant et paramétrant les attributs de session et de "
+"requête des servlets. Cette approche de la gestion d'état est la source de "
+"nombreux bogues et fuites de mémoire quand les applications ne réussissent "
+"pas à vider les attributs de session ou quand les données de session "
+"associées à différents flux de production sont incompatibles dans une "
+"application multi-fenêtres. Seam a le potentiel d'éliminer presque "
+"entièrement ce genre de bogue. "
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:73
+#, no-c-format
+msgid ""
+"Declarative application state management is made possible by the richness of "
+"the <emphasis>context model</emphasis> defined by Seam. Seam extends the "
+"context model defined by the servlet spec&mdash;request, session, "
+"application&mdash;with two new contexts&mdash;conversation and business "
+"process&mdash;that are more meaningful from the point of view of the "
+"business logic."
+msgstr ""
+"La gestion déclarative de l'état d'application est possible grâce à la "
+"richesse du <emphasis>modèle de contexte</emphasis>, défini par Seam. Seam "
+"augmente le modèle de contexte défini par les spécifications du servlet - "
+"requête, session, application - avec deux nouveaux contextes - conversation "
+"et processus métier - qui sont plus significatifs du point de vue de la "
+"logique métier. "
+
+#. Tag: emphasis
+#: Seam_Reference_Guide.xml:79
+#, no-c-format
+msgid "Bijection"
+msgstr "Bijection"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:81
+#, no-c-format
+msgid ""
+"The notion of <emphasis>Inversion of Control</emphasis> or "
+"<emphasis>dependency injection</emphasis> exists in both JSF and EJB3, as "
+"well as in numerous so-called \"lighweight containers\". Most of these "
+"containers emphasize injection of components that implement "
+"<emphasis>stateless services</emphasis>. Even when injection of stateful "
+"components is supported (such as in JSF), it is virtually useless for "
+"handling application state because the scope of the stateful component "
+"cannot be defined with sufficient flexibility."
+msgstr ""
+"La notion d'<emphasis>Inversion de contrôle</emphasis> ou d' "
+"<emphasis>injection de dépendance</emphasis> existe dans JSF et EJB3, de "
+"même que dans de nombreux conteneurs, appelés \"conteneurs légers\". La "
+"plupart de ces conteneurs accentuent l'injection des composants qui "
+"implémentent les <emphasis>services stateless</emphasis>. Même quand "
+"l'injection de composants stateful est prise en charge (comme dans JSF), "
+"elle est pratiquement inutile dans la gestion de l'état d'application parce "
+"que la portée du composant stateful ne peut être définie avec suffisamment "
+"de flexibilité. "
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:84
+#, no-c-format
+msgid ""
+"<emphasis>Bijection</emphasis> differs from IoC in that it is "
+"<emphasis>dynamic</emphasis>, <emphasis>contextual</emphasis>, and "
+"<emphasis>bidirectional</emphasis>. You can think of it as a mechanism for "
+"aliasing contextual variables (names in the various contexts bound to the "
+"current thread) to attributes of the component. Bijection allows auto-"
+"assembly of stateful components by the container. It even allows a component "
+"to safely and easily manipulate the value of a context variable, just by "
+"assigning to an attribute of the component."
+msgstr ""
+"<emphasis>Bijection</emphasis> diffère de IoC car elle est "
+"<emphasis>dynamique</emphasis>, <emphasis>contextuelle</emphasis>, et "
+"<emphasis>bidirectionnelle</emphasis>. Vous pouvez la considérer comme un "
+"mécanisme de création d'alias de variables (noms dans les divers contextes "
+"liés au thread courant) aux attributs du composant. La bijection permet "
+"l'auto-assemblage des composants stateful par le conteneur. Elle permet même "
+"au composant de manipuler facilement et sûrement la valeur d'une variable de "
+"contexte, juste par l'attribution à un attribut du composant. "
+
+#. Tag: emphasis
+#: Seam_Reference_Guide.xml:90
+#, no-c-format
+msgid "Workspace Management"
+msgstr "Gestion de l'espace de travail"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:92
+#, no-c-format
+msgid ""
+"Optionally, Seam applications may take advantage of <emphasis>workspace "
+"management</emphasis>, allowing users to freely switch between different "
+"conversations (workspaces) in a single browser window. Seam provides not "
+"only correct multi-window operation, but also multi-window-like operation in "
+"a single window!"
+msgstr ""
+"En option, les applications Seam peuvent tirer profit de la "
+"<emphasis>gestion de l'espace de travail</emphasis>, permettant aux "
+"utilisateurs de passer librement entre les différentes conversations "
+"(espaces de travail) dans une seule fenêtre de navigateur. Seam ne fournit "
+"pas seulement une opération multi-fenêtres correcte, mais également une "
+"opération semblable à l'opération multi-fenêtres dans une seule fenêtre !"
+
+#. Tag: emphasis
+#: Seam_Reference_Guide.xml:98
+#, no-c-format
+msgid "Annotated POJOs Everywhere"
+msgstr "Des POJO annotés partout"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:100
+#, no-c-format
+msgid ""
+"EJB 3.0 embraces annotations and \"configuration by exception\" as the "
+"easiest way to provide information to the container in a declarative form. "
+"Unfortunately, JSF is still heavily dependent on verbose XML configuration "
+"files. Seam extends the annotations provided by EJB 3.0 with a set of "
+"annotations for declarative state management and declarative context "
+"demarcation. This lets you eliminate the noisy JSF managed bean declarations "
+"and reduce the required XML to just that information which truly belongs in "
+"XML (the JSF navigation rules)."
+msgstr ""
+"EJB 3.0 adopte les annotations et la \"configuration par exception\" comme "
+"la façon la plus simple de fournir les informations au conteneur dans une "
+"forme déclarative. Malheureusement, JSF est encore très dépendant des "
+"fichiers de configuration XML très détaillés. Seam augmente les annotations "
+"fournies par EJB 3.0 avec un ensemble d'annotations pour la gestion "
+"déclarative de l'état et la démarcation déclarative du contexte. Cela vous "
+"permet d'éliminer les déclarations bruyantes de bean, gérées par JSF et de "
+"réduire le XML exigé, à des informations qui appartiennent réellement au XML "
+"(les règles de navigation JSF). "
+
+#. Tag: emphasis
+#: Seam_Reference_Guide.xml:106
+#, no-c-format
+msgid "Testability as a Core Feature"
+msgstr "Testabilité comme fonctionnalité majeure"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:108
+#, no-c-format
+msgid ""
+"Seam components, being POJOs, are by nature unit testable. But for complex "
+"applications, unit testing alone is insufficient. Integration testing has "
+"traditionally been a messy and difficult task for Java web applications. "
+"Therefore, Seam provides for testability of Seam applications as a core "
+"feature of the framework. You can easily write JUnit or TestNG tests that "
+"reproduce a whole interaction with a user, exercising all components of the "
+"system apart from the view (the JSP or Facelets page). You can run these "
+"tests directly inside your IDE, where Seam will automatically deploy EJB "
+"components into the JBoss Embeddable EJB3 container."
+msgstr ""
+"Les composants de Seam étant des POJO, ils peuvent par nature être testés "
+"par unité. Mais pour les applications complexes, les tests unitaires ne sont "
+"pas suffisants. Les tests d'intégration ont toujours été des tâches peu "
+"soignées et difficiles pour les applications web Java. Par conséquent, Seam "
+"fournit la testabilité des applications Seam comme une fonctionnalité "
+"majeure du framework. Vous pouvez facilement écrire les tests JUnit ou "
+"TestNG qui reproduisent une interaction complète avec un utilisateur, et qui "
+"utilisent tous les composants du système mis à part l'affichage (le JSP ou "
+"la page Facelets). Vous avez également la possibilité d'exécuter ces tests "
+"directement à l'intérieur de votre IDE, où Seam déploiera automatiquement "
+"les composants EJB dans le conteneur JBoss Embeddable EJB3."
+
+#. Tag: emphasis
+#: Seam_Reference_Guide.xml:114
+#, no-c-format
+msgid "Get started now!"
+msgstr "Commençons maintenant !"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:116
+#, no-c-format
+msgid ""
+"Seam works in any application server that supports EJB 3.0. You can even use "
+"Seam in a servlet container like Tomcat, or in any J2EE application server, "
+"by leveraging the new JBoss Embeddable EJB3 container."
+msgstr ""
+"Seam fonctionne dans un serveur d'applications supportant EJB 3.0. Vous "
+"pouvez également utiliser Seam dans un conteneur de servlets comme Tomcat, "
+"ou dans tout autre serveur d'applications J2EE, en tirant profit du nouveau "
+"conteneur JBoss Embeddable EJB3."
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:119
+#, fuzzy, no-c-format
+msgid ""
+"However, we realize that not everyone is ready to make the switch to EJB "
+"3.0. So, in the interim, you can use Seam as a framework for applications "
+"that use JSF for presentation, Hibernate (or plain JDBC) for persistence and "
+"JavaBeans for application logic. Then, when you&#39;re ready to make the "
+"switch to EJB 3.0, migration will be straightforward."
+msgstr ""
+"Cependant, nous sommes conscients du fait que tout le monde ne peut pas "
+"passer à EJB 3.0. Donc en attendant, vous pouvez utiliser Seam en tant que "
+"framework pour les applications utilisant la présentation JSF, Hibernate (ou "
+"le simple JDBC) pour la persistance et les JavaBeans pour la logique "
+"d'application. Ensuite, quand vous serez prêt à passer à EJB 3.0, la "
+"migration sera très simple."
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:133
+#, fuzzy, no-c-format
+msgid ""
+"It turns out that the combination of Seam, JSF and EJB3 is <emphasis>the</"
+"emphasis> simplest way to write a complex web application in Java. You "
+"won&#39;t believe how little code is required!"
+msgstr ""
+"En pratique la combinaison de Seam, JSF et EJB3 est <emphasis>la</emphasis> "
+"manière la plus simple d'écrire une application web complexe dans Java. Vous "
+"n'en croirez pas vos yeux, si peu de code !"

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Security.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Security.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Security.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2535 @@
+# translation of Security.po to french
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# myriam malga <mmalga at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Security\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2007-08-07 11:43+1000\n"
+"Last-Translator: myriam malga <mmalga at redhat.com>\n"
+"Language-Team: french\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Security.xml:6
+#, no-c-format
+msgid "Security"
+msgstr "Sécurité"
+
+#. Tag: para
+#: Security.xml:7
+#, no-c-format
+msgid ""
+"The Seam Security API is an optional Seam feature that provides "
+"authentication and authorization features for securing both domain and page "
+"resources within your Seam project."
+msgstr ""
+"Le Seam Security API est une fonctionnalité optionnelle de Seam qui fournit "
+"les fonctions d'identification et d'autorisation pour sécuriser à la fois "
+"les ressources de domaine et de page à l'intérieur de votre projet Seam."
+
+#. Tag: title
+#: Security.xml:10
+#, no-c-format
+msgid "Overview"
+msgstr "Vue d'ensemble"
+
+#. Tag: para
+#: Security.xml:11
+#, no-c-format
+msgid "Seam Security provides two different modes of operation:"
+msgstr "La sécurité Seam offre deux modes d'opération différents :"
+
+#. Tag: para
+#: Security.xml:16
+#, no-c-format
+msgid ""
+"<emphasis>simplified mode</emphasis> - this mode supports authentication "
+"services and simple role-based security checks."
+msgstr ""
+"le <emphasis>mode simplifié</emphasis> - ce mode supporte les services "
+"d'identification et de simples vérifications de sécurité, basées sur les "
+"rôles."
+
+#. Tag: para
+#: Security.xml:21
+#, no-c-format
+msgid ""
+"<emphasis>advanced mode</emphasis> - this mode supports all the same "
+"features as the simplified mode, plus it offers rule-based security checks "
+"using JBoss Rules."
+msgstr ""
+"le <emphasis>mode avancé</emphasis> - ce mode supporte les mêmes "
+"fonctionnalités que le mode simplifié, et offre en supplément des "
+"vérifications de sécurité basées sur les règles, avec les JBoss Rules."
+
+#. Tag: title
+#: Security.xml:26
+#, no-c-format
+msgid "Which mode is right for my application?"
+msgstr "Quel est le mode approprié à mon application ?"
+
+#. Tag: para
+#: Security.xml:27
+#, no-c-format
+msgid ""
+"That all depends on the requirements of your application. If you have "
+"minimal security requirements, for example if you only wish to restrict "
+"certain pages and actions to users who are logged in, or who belong to a "
+"certain role, then the simplified mode will probably be sufficient. The "
+"advantages of this is a more simplified configuration, significantly less "
+"libraries to include, and a smaller memory footprint."
+msgstr ""
+"Cela dépend des exigences de votre application. Si vous avez des exigences "
+"de sécurité minimes, par exemple, si vous ne désirez que limiter certaines "
+"pages et actions aux utilisateurs qui sont connectés, ou qui appartiennent à "
+"un certain rôle, le mode simplifié sera probablement suffisant. Les "
+"avantages sont une configuration plus simple, beaucoup moins de "
+"bibliothèques à inclure, et une empreinte de mémoire réduite. "
+
+#. Tag: para
+#: Security.xml:30
+#, no-c-format
+msgid ""
+"If on the other hand, your application requires security checks based on "
+"contextual state or complex business rules, then you will require the "
+"features provided by the advanced mode."
+msgstr ""
+"Si toutefois votre application demande des vérifications de sécurité, basées "
+"sur l'état contextuel ou des règles d'affaires complexes, les "
+"fonctionnalités fournies par le mode avancé seront nécessaires. "
+
+#. Tag: title
+#: Security.xml:33
+#, no-c-format
+msgid "Requirements"
+msgstr "Exigences"
+
+#. Tag: para
+#: Security.xml:34
+#, no-c-format
+msgid ""
+"If using the advanced mode features of Seam Security, the following jar "
+"files are required to be configured as modules in <literal>application.xml</"
+"literal>. If you are using Seam Security in simplified mode, these are "
+"<emphasis>not</emphasis> required:"
+msgstr ""
+"Si vous utilisez les fonctionnalités du mode avancé de la sécurité Seam, les "
+"fichiers jar suivants doivent être configurés en tant que modules dans "
+"<literal>application.xml</literal>. Si vous utilisez la sécurité Seam dans "
+"le mode simplifié, les suivants ne sont <emphasis>pas</emphasis> "
+"nécessaires :"
+
+#. Tag: para
+#: Security.xml:39
+#, no-c-format
+msgid "drools-compiler-3.0.5.jar"
+msgstr "drools-compiler-3.0.5.jar"
+
+#. Tag: para
+#: Security.xml:44
+#, no-c-format
+msgid "drools-core-3.0.5.jar"
+msgstr "drools-core-3.0.5.jar"
+
+#. Tag: para
+#: Security.xml:49
+#, no-c-format
+msgid "commons-jci-core-1.0-406301.jar"
+msgstr "commons-jci-core-1.0-406301.jar"
+
+#. Tag: para
+#: Security.xml:54
+#, no-c-format
+msgid "commons-jci-janino-2.4.3.jar"
+msgstr "commons-jci-janino-2.4.3.jar"
+
+#. Tag: para
+#: Security.xml:59
+#, no-c-format
+msgid "commons-lang-2.1.jar"
+msgstr "commons-lang-2.1.jar"
+
+#. Tag: para
+#: Security.xml:64
+#, no-c-format
+msgid "janino-2.4.3.jar"
+msgstr "janino-2.4.3.jar"
+
+#. Tag: para
+#: Security.xml:69
+#, no-c-format
+msgid "stringtemplate-2.3b6.jar"
+msgstr "stringtemplate-2.3b6.jar"
+
+#. Tag: para
+#: Security.xml:74
+#, no-c-format
+msgid "antlr-2.7.6.jar"
+msgstr "antlr-2.7.6.jar"
+
+#. Tag: para
+#: Security.xml:79
+#, no-c-format
+msgid "antlr-3.0ea8.jar"
+msgstr "antlr-3.0ea8.jar"
+
+#. Tag: para
+#: Security.xml:84
+#, fuzzy, no-c-format
+msgid ""
+"For web-based security, <literal>jboss-seam-ui.jar</literal> must also be "
+"included in the application&#39;s war file. Also, to make use of the "
+"security EL functions, <literal>SeamFaceletViewHandler</literal> must be "
+"used. Configure it in <literal>faces-config.xml</literal> like this:"
+msgstr ""
+"Pour la sécurité internet, <literal>jboss-seam-ui.jar</literal> doit aussi "
+"être inclut dans le fichier war de l'application. De même pour utiliser les "
+"fonctions EL de sécurité,  <literal>SeamFaceletViewHandler</literal> doit "
+"être utilisé. Configurez-le dans <literal>faces-config.xml</literal>, comme "
+"suit :"
+
+#. Tag: programlisting
+#: Security.xml:87
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;view-handler&gt;org.jboss.seam.ui.facelet.SeamFaceletViewHandler&lt;/"
+"view-handler&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+"&lt;application&gt;\n"
+"    &lt;view-handler&gt;org.jboss.seam.ui.facelet.SeamFaceletViewHandler&lt;/"
+"view-handler&gt;\n"
+"&lt;/application&gt;"
+
+#. Tag: title
+#: Security.xml:88
+#, no-c-format
+msgid "Authentication"
+msgstr "Identification"
+
+#. Tag: para
+#: Security.xml:89
+#, no-c-format
+msgid ""
+"The authentication features provided by Seam Security are built upon JAAS "
+"(Java Authentication and Authorization Service), and as such provide a "
+"robust and highly configurable API for handling user authentication. "
+"However, for less complex authentication requirements Seam offers a much "
+"more simplified method of authentication that hides the complexity of JAAS."
+msgstr ""
+"Les fonctionnalités d'identification fournies par la Sécurité Seam sont "
+"basées sur JAAS (Java Authentication and Authorization Service), et en tant "
+"que telles, fournissent un API robuste et hautement configurable pour la "
+"gestion de l'identification d'utilisateur. Cependant, pour des exigences "
+"d'identification moins complexes, Seam offre une méthode d'identification "
+"beaucoup plus simplifiée, qui cache la complexité de JAAS."
+
+#. Tag: title
+#: Security.xml:92
+#, no-c-format
+msgid "Configuration"
+msgstr "Configuration"
+
+#. Tag: para
+#: Security.xml:93
+#, no-c-format
+msgid ""
+"The simplified authentication method uses a built-in JAAS login module, "
+"<literal>SeamLoginModule</literal>, which delegates authentication to one of "
+"your own Seam components. This login module is already configured inside "
+"Seam as part of a default application policy and as such does not require "
+"any additional configuration files. It allows you to write an authentication "
+"method using the entity classes that are provided by your own application. "
+"Configuring this simplified form of authentication requires the "
+"<literal>identity</literal> component to be configured in "
+"<literal>components.xml</literal>:"
+msgstr ""
+"La méthode d'identification simplifiée utilise un module de connexion JAAS, "
+"<literal>SeamLoginModule</literal>, qui délègue l'identification à l'un de "
+"vos propres composants Seam. Ce module de connexion est déjà configuré dans "
+"Seam et fait partie d'une politique d'application par défaut qui n'exige pas "
+"de fichiers de configuration supplémentaires. Il vous permet d'écrire une "
+"méthode d'identification, utilisant les classes d'entité, fournies par votre "
+"propre application. La configuration de cette forme d'identification "
+"simplifiée exige la configuration du composant <literal>identity</literal> "
+"dans <literal>components.xml</literal> :"
+
+#. Tag: programlisting
+#: Security.xml:96
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:security=\"http://jboss.com/products/seam/security\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core http://jboss.com/"
+"products/seam/core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components http://jboss.com/"
+"products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/drools http://jboss.com/"
+"products/seam/drools-1.2.xsd\"\n"
+"                 http://jboss.com/products/seam/security http://jboss.com/"
+"products/seam/security-1.2.xsd\"&gt;                \n"
+"        \n"
+"    &lt;security:identity authenticate-method=\"#{authenticator.authenticate}"
+"\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:security=\"http://jboss.com/products/seam/security\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core http://jboss.com/"
+"products/seam/core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components http://jboss.com/"
+"products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/drools http://jboss.com/"
+"products/seam/drools-1.2.xsd\"\n"
+"                 http://jboss.com/products/seam/security http://jboss.com/"
+"products/seam/security-1.2.xsd\"&gt;                \n"
+"        \n"
+"    &lt;security:identity authenticate-method=\"#{authenticator.authenticate}"
+"\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Security.xml:97
+#, no-c-format
+msgid ""
+"If you wish to use the advanced security features such as rule-based "
+"permission checks, all you need to do is include the Drools (JBoss Rules) "
+"jars in your classpath, and add some additional configuration, described "
+"later."
+msgstr ""
+"Si vous souhaitez utiliser les fonctionnalités de sécurité avancées, comme "
+"les vérifications de permissions basées sur les règles, il vous suffit "
+"d'inclure les jars Drools (JBoss Rules) dans le chemin de classe et "
+"d'ajouter une configuration supplémentaire que nous décrirons plus loin. "
+
+#. Tag: para
+#: Security.xml:100
+#, no-c-format
+msgid ""
+"The EL expression <literal>#{authenticator.authenticate}</literal> is a "
+"method binding indicating that the <literal>authenticate</literal> method of "
+"the <literal>authenticator</literal> component will be used to authenticate "
+"the user."
+msgstr ""
+"L'expression EL <literal>#{authenticator.authenticate}</literal> est une "
+"association de méthode qui indique que la méthode <literal>authenticate</"
+"literal> du composant <literal>authenticator</literal> sera utilisée pour "
+"l'identification de l'utilisateur. "
+
+#. Tag: title
+#: Security.xml:103
+#, no-c-format
+msgid "Writing an authentication method"
+msgstr "Écrire une méthode d'identification"
+
+#. Tag: para
+#: Security.xml:104
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>authenticate-method</literal> property specified for "
+"<literal>identity</literal> in <literal>components.xml</literal> specifies "
+"which method will be used by <literal>SeamLoginModule</literal> to "
+"authenticate users. This method takes no parameters, and is expected to "
+"return a boolean indicating whether authentication is successful or not. The "
+"user&#39;s username and password can be obtained from <literal>Identity."
+"instance().getUsername()</literal> and <literal>Identity.instance()."
+"getPassword()</literal>, respectively. Any roles that the user is a member "
+"of should be assigned using <literal>Identity.instance().addRole()</"
+"literal>. Here&#39;s a complete example of an authentication method inside a "
+"JavaBean component:"
+msgstr ""
+"La propriété <literal>authenticate-method</literal> spécifiée pour "
+"<literal>identity</literal> dans <literal>components.xml</literal> spécifie "
+"la méthode qui sera utilisée par <literal>SeamLoginModule</literal> afin "
+"d'authentifier les utilisateurs. Cette méthode ne prend pas de paramètres et "
+"il est prévu qu'elle retourne un boléen, indiquant si l'identification a "
+"réussi ou non. Le nom d'utilisateur et le mot de passe de l'utilisateur "
+"peuvent être obtenus de <literal>Identity.instance().getUsername()</literal> "
+"et de <literal>Identity.instance().getPassword()</literal>, respectivement. "
+"Tout rôle dont l'utilisateur est membre, doit être assigné en utilisant "
+"<literal>Identity.instance().addRole()</literal>. Voici un exemple complet "
+"d'une méthode d'identification à l'intérieur d'un composant JavaBean :"
+
+#. Tag: programlisting
+#: Security.xml:107
+#, no-c-format
+msgid ""
+"@Name(\"authenticator\")\n"
+"public class Authenticator {\n"
+"   @In EntityManager entityManager;\n"
+"   \n"
+"   public boolean authenticate() {\n"
+"      try\n"
+"      {\n"
+"         User user = (User) entityManager.createQuery(\n"
+"            \"from User where username = :username and password = :password"
+"\")\n"
+"            .setParameter(\"username\", Identity.instance().getUsername())\n"
+"            .setParameter(\"password\", Identity.instance().getPassword())\n"
+"            .getSingleResult();\n"
+"\n"
+"         if (user.getRoles() != null)\n"
+"         {\n"
+"            for (UserRole mr : user.getRoles())\n"
+"               Identity.instance().addRole(mr.getName());\n"
+"         }\n"
+"\n"
+"         return true;\n"
+"      }\n"
+"      catch (NoResultException ex)\n"
+"      {\n"
+"         FacesMessages.instance().add(\"Invalid username/password\");\n"
+"         return false;\n"
+"      }\n"
+"      \n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+"@Name(\"authenticator\")\n"
+"public class Authenticator {\n"
+"   @In EntityManager entityManager;\n"
+"   \n"
+"   public boolean authenticate() {\n"
+"      try\n"
+"      {\n"
+"         User user = (User) entityManager.createQuery(\n"
+"            \"from User where username = :username and password = :password"
+"\")\n"
+"            .setParameter(\"username\", Identity.instance().getUsername())\n"
+"            .setParameter(\"password\", Identity.instance().getPassword())\n"
+"            .getSingleResult();\n"
+"\n"
+"         if (user.getRoles() != null)\n"
+"         {\n"
+"            for (UserRole mr : user.getRoles())\n"
+"               Identity.instance().addRole(mr.getName());\n"
+"         }\n"
+"\n"
+"         return true;\n"
+"      }\n"
+"      catch (NoResultException ex)\n"
+"      {\n"
+"         FacesMessages.instance().add(\"Invalid username/password\");\n"
+"         return false;\n"
+"      }\n"
+"      \n"
+"   }\n"
+"   \n"
+"}"
+
+#. Tag: para
+#: Security.xml:108
+#, no-c-format
+msgid ""
+"In the above example, both <literal>User</literal> and <literal>UserRole</"
+"literal> are application-specific entity beans. The <literal>roles</literal> "
+"parameter is populated with the roles that the user is a member of, which "
+"should be added to the <literal>Set</literal> as literal string values, e.g. "
+"\"admin\", \"user\". In this case, if the user record is not found and a "
+"<literal>NoResultException</literal> thrown, the authentication method "
+"returns <literal>false</literal> to indicate the authentication failed."
+msgstr ""
+"Dans l'exemple ci-dessus, <literal>User</literal> et <literal>UserRole</"
+"literal> sont des beans entité spécifiques à l'application. Le paramètre "
+"<literal>roles</literal> est peuplé avec les rôles dont l'utilisateur est "
+"membre et qui devraient être ajoutés au <literal>Set</literal> en tant que "
+"valeurs de chaînes littérales, par ex. \"admin\", \"user\". Dans ce cas, si "
+"l'enregistrement de l'utilisateur n'est pas détecté et "
+"une<literal>NoResultException</literal> est lancée, la méthode "
+"d'identification retourne <literal>false</literal> pour indiquer que "
+"l'identification a échoué. "
+
+#. Tag: title
+#: Security.xml:111
+#, no-c-format
+msgid "Writing a login form"
+msgstr "Écrire un formulaire de connexion"
+
+#. Tag: para
+#: Security.xml:112
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>Identity</literal> component provides both <literal>username</"
+"literal> and <literal>password</literal> properties, catering for the most "
+"common authentication scenario. These properties can be bound directly to "
+"the username and password fields on a login form. Once these properties are "
+"set, calling the <literal>identity.login()</literal> method will "
+"authenticate the user using the provided credentials. Here&#39;s an example "
+"of a simple login form:"
+msgstr ""
+"Le composant <literal>Identity</literal> fournit à la fois les propriétés "
+"<literal>username</literal> et <literal>password</literal>, couvrant ainsi "
+"le scénario d'identification le plus fréquent. Ces propriétés peuvent être "
+"liées directement aux champs du nom d'utilisateur et du mot de passe sur le "
+"formulaire de connexion. Une fois ces propriétés définies, l'appel de la "
+"méthode <literal>identity.login()</literal> identifiera l'utilisateur, à "
+"l'aide des données d'identification fournies. Voici un exemple d'un "
+"formulaire de connexion simple :"
+
+#. Tag: programlisting
+#: Security.xml:115
+#, no-c-format
+msgid ""
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"name\" value=\"Username\"/&gt;\n"
+"    &lt;h:inputText id=\"name\" value=\"#{identity.username}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"password\" value=\"Password\"/&gt;\n"
+"    &lt;h:inputSecret id=\"password\" value=\"#{identity.password}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;div&gt;\n"
+"    &lt;h:commandButton value=\"Login\" action=\"#{identity.login}\"/&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"name\" value=\"Username\"/&gt;\n"
+"    &lt;h:inputText id=\"name\" value=\"#{identity.username}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"password\" value=\"Password\"/&gt;\n"
+"    &lt;h:inputSecret id=\"password\" value=\"#{identity.password}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;div&gt;\n"
+"    &lt;h:commandButton value=\"Login\" action=\"#{identity.login}\"/&gt;\n"
+"&lt;/div&gt;"
+
+#. Tag: para
+#: Security.xml:116
+#, no-c-format
+msgid ""
+"Similarly, logging out the user is done by calling <literal>#{identity."
+"logout}</literal>. Calling this action will clear the security state of the "
+"currently authenticated user."
+msgstr ""
+"De la même façon, la déconnexion de l'utilisateur est effectuée en appelant "
+"<literal>#{identity.logout}</literal>. L'appel de cette action résoudra "
+"l'état de sécurité de l'utilisateur actuel identifié."
+
+#. Tag: title
+#: Security.xml:119
+#, no-c-format
+msgid "Simplified Configuration - Summary"
+msgstr "Configuration simplifiée - Sommaire"
+
+#. Tag: para
+#: Security.xml:120
+#, no-c-format
+msgid ""
+"So to sum up, there are the three easy steps to configure authentication:"
+msgstr ""
+"Pour résumer, il existe trois étapes simples pour configurer "
+"l'identification :"
+
+#. Tag: para
+#: Security.xml:125
+#, no-c-format
+msgid ""
+"Configure an authentication method in <literal>components.xml</literal>."
+msgstr ""
+"Configurer une méthode d'identification dans <literal>components.xml</"
+"literal>."
+
+#. Tag: para
+#: Security.xml:130
+#, no-c-format
+msgid "Write an authentication method."
+msgstr "Écrire une méthode d'identification."
+
+#. Tag: para
+#: Security.xml:135
+#, no-c-format
+msgid "Write a login form so that the user can authenticate."
+msgstr ""
+"Écrire un formulaire de connexion de façon à identifier l'utilisateur. "
+
+#. Tag: title
+#: Security.xml:140
+#, no-c-format
+msgid "Handling Security Exceptions"
+msgstr "Gestion des exceptions de sécurité"
+
+#. Tag: para
+#: Security.xml:141
+#, fuzzy, no-c-format
+msgid ""
+"To prevent users from receiving the default error page in response to a "
+"security error, it&#39;s recommended that <literal>pages.xml</literal> is "
+"configured to redirect security errors to a more \"pretty\" page. The two "
+"main types of exceptions thrown by the security API are:"
+msgstr ""
+"Pour éviter que les utilisateurs ne reçoivent la page d'erreur par défaut en "
+"réponse à une erreur de sécurité, il est recommandé de configurer "
+"<literal>pages.xml</literal> pour rediriger les erreurs de sécurité vers une "
+"page plus \"pretty\". Les deux types principaux d'exceptions lancées par "
+"l'API de sécurité sont :"
+
+#. Tag: para
+#: Security.xml:146
+#, no-c-format
+msgid ""
+"<literal>NotLoggedInException</literal> - This exception is thrown if the "
+"user attempts to access a restricted action or page when they are not logged "
+"in."
+msgstr ""
+"<literal>NotLoggedInException</literal> - Cette exception est lancée si "
+"l'utilisateur tente d'accéder à une action ou à une page restreinte, quand "
+"il n'est pas connecté. "
+
+#. Tag: para
+#: Security.xml:151
+#, no-c-format
+msgid ""
+"<literal>AuthorizationException</literal> - This exception is only thrown if "
+"the user is already logged in, and they have attempted to access a "
+"restricted action or page for which they do not have the necessary "
+"privileges."
+msgstr ""
+"<literal>AuthorizationException</literal> - Cette exception n'est lancée que "
+"si l'utilisateur est déjà connecté, et il a essayé d'accéder à une action ou "
+"page restreinte pour laquelle il n'a pas les privilèges nécessaires. "
+
+#. Tag: para
+#: Security.xml:156
+#, fuzzy, no-c-format
+msgid ""
+"In the case of a <literal>NotLoggedInException</literal>, it is recommended "
+"that the user is redirected to either a login or registration page so that "
+"they can log in. For an <literal>AuthorizationException</literal>, it may be "
+"useful to redirect the user to an error page. Here&#39;s an example of a "
+"<literal>pages.xml</literal> file that redirects both of these security "
+"exceptions:"
+msgstr ""
+"Dans le cas d'une <literal>NotLoggedInException</literal>, il est recommandé "
+"de rediriger l'utilisateur vers une page de connexion ou d'enregistrement "
+"pour qu'il puisse se connecter. Pour une <literal>AuthorizationException</"
+"literal>, il est serait sans doute utile de rediriger l'utilisateur vers une "
+"page d'erreur. Voici un exemple de fichier <literal>pages.xml</literal> qui "
+"redirige ces deux exceptions de sécurité :"
+
+#. Tag: programlisting
+#: Security.xml:159
+#, fuzzy, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"\n"
+"    ...\n"
+"    \n"
+"    &lt;exception class=\"org.jboss.seam.security.NotLoggedInException"
+"\"&gt;\n"
+"        &lt;redirect view-id=\"/login.xhtml\"&gt;\n"
+"            &lt;message&gt;You must be logged in to perform this action&lt;/"
+"message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"    \n"
+"    &lt;exception class=\"org.jboss.seam.security.AuthorizationException"
+"\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"        &lt;redirect view-id=\"/security_error.xhtml\"&gt;\n"
+"            &lt;message&gt;\n"
+"                              You do not have the necessary security "
+"privileges to perform this action.\n"
+"            &lt;/message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"  \n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"\n"
+"    ...\n"
+"    \n"
+"    &lt;exception class=\"org.jboss.seam.security.NotLoggedInException"
+"\"&gt;\n"
+"        &lt;redirect view-id=\"/login.xhtml\"&gt;\n"
+"            &lt;message&gt;You must be logged in to perform this action&lt;/"
+"message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"    \n"
+"    &lt;exception class=\"org.jboss.seam.security.AuthorizationException"
+"\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"        &lt;redirect view-id=\"/security_error.xhtml\"&gt;\n"
+"            &lt;message&gt;\n"
+"                You do not have the necessary security privileges to perform "
+"this action.\n"
+"            &lt;/message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"  \n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Security.xml:160
+#, no-c-format
+msgid ""
+"Most web applications require even more sophisticated handling of login "
+"redirection, so Seam includes some special functionality for handling this "
+"problem."
+msgstr ""
+"La plupart des applications web requièrent une gestion de la redirection de "
+"connexion encore plus sophistiquée, ainsi Seam inclut quelques "
+"fonctionnalités particulières pour la gestion de ce problème. "
+
+#. Tag: title
+#: Security.xml:163
+#, no-c-format
+msgid "Login Redirection"
+msgstr "Redirection de connexion"
+
+#. Tag: para
+#: Security.xml:164
+#, no-c-format
+msgid ""
+"You can ask Seam to redirect the user to a login screen when an "
+"unauthenticated user tries to access a particular view (or wildcarded view "
+"id) as follows:"
+msgstr ""
+"Vous pouvez demander à Seam de rediriger l'utilisateur vers un écran de "
+"connexion quand un utilisateur non-identifié essaye d'accéder à un affichage "
+"particulier (ou id d'affichage remplacé par une structure générique) comme "
+"suit :"
+
+#. Tag: programlisting
+#: Security.xml:167
+#, no-c-format
+msgid ""
+"&lt;pages login-view-id=\"/login.xhtml\"&gt;\n"
+"\n"
+"    &lt;page view-id=\"/members/*\" login-required=\"true\"/&gt;\n"
+"    \n"
+"    ...\n"
+"    \n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages login-view-id=\"/login.xhtml\"&gt;\n"
+"\n"
+"    &lt;page view-id=\"/members/*\" login-required=\"true\"/&gt;\n"
+"    \n"
+"    ...\n"
+"    \n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Security.xml:168
+#, no-c-format
+msgid ""
+"(This is less of a blunt instrument than the exception handler shown above, "
+"but should probably be used in conjunction with it.)"
+msgstr ""
+"(C'est un instrument un peu moins émoussé que le gestionnaire d'exception "
+"indiqué ci-dessus, mais qui devrait être utilisé conjointement avec celui-"
+"ci.)"
+
+#. Tag: para
+#: Security.xml:171
+#, no-c-format
+msgid ""
+"After the user logs in, we want to automatically send them back where they "
+"came from, so they can retry the action that required logging in. If you add "
+"the following event listeners to <literal>components.xml</literal>, attempts "
+"to access a restricted view while not logged in will be remembered, so that "
+"upon the user successfully logging in they will be redirected to the "
+"originally requested view, with any page parameters that existed in the "
+"original request."
+msgstr ""
+"Quand l'utilisateur s'est connecté, notre but est de le renvoyer d'où il "
+"vient, pour qu'il ré-essaye l'action qui demandait la connexion. Si vous "
+"ajoutez les listeners d'évènements suivants à <literal>components.xml</"
+"literal>, les tentatives d'accession à un affichage restreint alors que l'on "
+"n'est pas connecté, seront mémorisées, de manière à ce que lorsque "
+"l'utilisateur se connecte avec succès, il soit redirigé vers l'affichage "
+"qu'il avait demandé initialement, avec tous les paramètres de page qui "
+"existaient dans la requête initiale."
+
+#. Tag: programlisting
+#: Security.xml:174
+#, no-c-format
+msgid ""
+"&lt;event type=\"org.jboss.seam.notLoggedIn\"&gt;\n"
+"    &lt;action expression=\"#{redirect.captureCurrentView}\"/&gt;\n"
+"&lt;/event&gt;\n"
+"    \n"
+"&lt;event type=\"org.jboss.seam.postAuthenticate\"&gt;\n"
+"    &lt;action expression=\"#{redirect.returnToCapturedView}\"/&gt;\n"
+"&lt;/event&gt;"
+msgstr ""
+"&lt;event type=\"org.jboss.seam.notLoggedIn\"&gt;\n"
+"    &lt;action expression=\"#{redirect.captureCurrentView}\"/&gt;\n"
+"&lt;/event&gt;\n"
+"    \n"
+"&lt;event type=\"org.jboss.seam.postAuthenticate\"&gt;\n"
+"    &lt;action expression=\"#{redirect.returnToCapturedView}\"/&gt;\n"
+"&lt;/event&gt;"
+
+#. Tag: para
+#: Security.xml:175
+#, fuzzy, no-c-format
+msgid ""
+"Note that login redirection is implemented as a conversation-scoped "
+"mechanism, so don&#39;t end the conversation in your <literal>authenticate()"
+"</literal> method."
+msgstr ""
+"Notez que la redirection de connexion est implémentée en tant que mécanisme "
+"conversation-scoped, par conséquent, ne terminez pas la conversation dans "
+"votre méthode <literal>authenticate()</literal>."
+
+#. Tag: title
+#: Security.xml:178
+#, no-c-format
+msgid "Advanced Authentication Features"
+msgstr "Fonctionnalités d'identification avancées"
+
+#. Tag: para
+#: Security.xml:179
+#, no-c-format
+msgid ""
+"This section explores some of the advanced features provided by the security "
+"API for addressing more complex security requirements."
+msgstr ""
+"Cette section explore quelques-unes des fonctionnalités avancées fournies "
+"par l'API de sécurité pour aborder des exigences de sécurité plus complexes. "
+
+#. Tag: title
+#: Security.xml:182
+#, fuzzy, no-c-format
+msgid "Using your container&#39;s JAAS configuration"
+msgstr "Utilisation de votre configuration de conteneur JAAS"
+
+#. Tag: para
+#: Security.xml:183
+#, no-c-format
+msgid ""
+"If you would rather not use the simplified JAAS configuration provided by "
+"the Seam Security API, you may instead delegate to the default system JAAS "
+"configuration by providing a <literal>jaasConfigName</literal> property in "
+"<literal>components.xml</literal>. For example, if you are using JBoss AS "
+"and wish to use the <literal>other</literal> policy (which uses the "
+"<literal>UsersRolesLoginModule</literal> login module provided by JBoss AS), "
+"then the entry in <literal>components.xml</literal> would look like this:"
+msgstr ""
+"Si vous ne souhaitez pas utiliser la configuration simplifiée JAAS fournie "
+"par l'API de Sécurité Seam, vous pouvez à la place déléguer à la "
+"configuration JAAS du système par défaut en fournissant une propriété "
+"<literal>jaasConfigName</literal> dans <literal>components.xml</literal>. "
+"Par exemple, si vous utilisez JBoss AS et désirez utiliser la politique "
+"<literal>other</literal> (qui utilise le module de connexion "
+"<literal>UsersRolesLoginModule</literal> fourni par JBoss AS), l'entrée dans "
+"<literal>components.xml</literal> sera comme suit :"
+
+#. Tag: programlisting
+#: Security.xml:186
+#, no-c-format
+msgid ""
+"&lt;security:identity authenticate-method=\"#{authenticator.authenticate}"
+"\" \n"
+"                      jaas-config-name=\"other\"/&gt;"
+msgstr ""
+"&lt;security:identity authenticate-method=\"#{authenticator.authenticate}"
+"\" \n"
+"                      jaas-config-name=\"other\"/&gt;"
+
+#. Tag: title
+#: Security.xml:187
+#, no-c-format
+msgid "Error Messages"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:188
+#, no-c-format
+msgid ""
+"The security API produces a number of default faces messages for various "
+"security-related events. The following table lists the message keys that can "
+"be used to override these messages by specifying them in a <literal>message."
+"properties</literal> resource file."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:192
+#, fuzzy, no-c-format
+msgid "Security Message Keys"
+msgstr "Sécurisation des pages"
+
+#. Tag: literal
+#: Security.xml:200
+#, no-c-format
+msgid "org.jboss.seam.loginSuccessful"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:204
+#, no-c-format
+msgid ""
+"This message is produced when a user successfully logs in via the security "
+"API."
+msgstr ""
+
+#. Tag: literal
+#: Security.xml:212
+#, no-c-format
+msgid "org.jboss.seam.loginFailed"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:216
+#, no-c-format
+msgid ""
+"This message is produced when the login process fails, either because the "
+"user provided an incorrect username or password, or because authentication "
+"failed in some other way."
+msgstr ""
+
+#. Tag: literal
+#: Security.xml:224
+#, no-c-format
+msgid "org.jboss.seam.NotLoggedIn"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:228
+#, no-c-format
+msgid ""
+"This message is produced when a user attempts to perform an action or access "
+"a page that requires a security check, and the user is not currently "
+"authenticated."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:236
+#, no-c-format
+msgid "Authorization"
+msgstr "Identification"
+
+#. Tag: para
+#: Security.xml:237
+#, no-c-format
+msgid ""
+"There are a number of authorization features provided by the Seam Security "
+"API for securing access to components, component methods, and pages. This "
+"section describes each of these. An important thing to note is that if you "
+"wish to use any of the advanced features (such as rule-based permissions) "
+"then your <literal>components.xml</literal> must be configured to support "
+"this - see the Configuration section above."
+msgstr ""
+"Il y a plusieurs fonctionnalités d'identification fournies par l'API de "
+"Sécurité Seam pour sécuriser l'accès aux composants, méthodes de composants "
+"et pages. Cette section décrit ces fonctionnalités. Il est important de "
+"noter que si vous souhaitez utiliser une quelconque fonctionnalité avancée "
+"(comme les permissions basées sur les règles), votre <literal>components."
+"xml</literal> devra être configuré pour supporter cela - consultez la "
+"section sur la configuration ci-dessus."
+
+#. Tag: title
+#: Security.xml:240
+#, no-c-format
+msgid "Core concepts"
+msgstr "Concepts essentiels"
+
+#. Tag: para
+#: Security.xml:241
+#, no-c-format
+msgid ""
+"Each of the authorization mechanisms provided by the Seam Security API are "
+"built upon the concept of a user being granted roles and/or permissions. A "
+"role is a <emphasis>group</emphasis>, or <emphasis>type</emphasis>, of user "
+"that may have been granted certain privileges for performing one or more "
+"specific actions within an application. A permission on the other hand is a "
+"privilege (sometimes once-off) for performing a single, specific action. It "
+"is entirely possible to build an application using nothing but permissions, "
+"however roles offer a higher level of convenience when granting privileges "
+"to groups of users."
+msgstr ""
+"Chacun des mécanismes d'identification fournis par l'API de Sécurité Seam, "
+"est basé sur le concept de l'utilisateur auquel on a autorisé des rôles ou "
+"des permissions. Un rôle est un <emphasis>groupe</emphasis>, ou "
+"<emphasis>type</emphasis> d'utilisateur, auquel on aura donné certains "
+"privilèges pour effectuer une ou plusieurs actions spécifiques dans une "
+"application. Par contre, une permission est un privilège (même, une fois "
+"seulement) pour effectuer une action unique et spécifique. Il est tout à "
+"fait possible de construire une application en utilisant que des "
+"permissions, cependant les rôles offrent plus de commodité quand il s'agit "
+"d'accorder les privilèges aux groupes d'utilisateurs. "
+
+#. Tag: para
+#: Security.xml:244
+#, no-c-format
+msgid ""
+"Roles are simple, consisting of only a name such as \"admin\", \"user\", "
+"\"customer\", etc. Permissions consist of both a name and an action, and are "
+"represented within this documentation in the form <literal>name:action</"
+"literal>, for example <literal>customer:delete</literal>, or "
+"<literal>customer:insert</literal>."
+msgstr ""
+"Les rôles sont simples, ils comportent un nom uniquement, comme \"admin\", "
+"\"user\", \"customer\", etc. Les permissions comportent un nom et une "
+"action, et sont représentées dans cette documentation sous forme de "
+"<literal>name:action</literal>, par exemple <literal>customer:delete</"
+"literal>, ou <literal>customer:insert</literal>."
+
+#. Tag: title
+#: Security.xml:247
+#, no-c-format
+msgid "Securing components"
+msgstr "Sécuriser les composants"
+
+#. Tag: para
+#: Security.xml:248
+#, fuzzy, no-c-format
+msgid ""
+"Let&#39;s start by examining the simplest form of authorization, component "
+"security, starting with the <literal>@Restrict</literal> annotation."
+msgstr ""
+"Examinons la forme la plus simple d'identification, la sécurité des "
+"composants, en commençant par l'annotation <literal>@Restrict</literal>."
+
+#. Tag: title
+#: Security.xml:251
+#, no-c-format
+msgid "The @Restrict annotation"
+msgstr "L'annotation @Restrict "
+
+#. Tag: para
+#: Security.xml:252
+#, fuzzy, no-c-format
+msgid ""
+"Seam components may be secured either at the method or the class level, "
+"using the <literal>@Restrict</literal> annotation. If both a method and "
+"it&#39;s declaring class are annotated with <literal>@Restrict</literal>, "
+"the method restriction will take precedence (and the class restriction will "
+"not apply). If a method invocation fails a security check, then an exception "
+"will be thrown as per the contract for <literal>Identity.checkRestriction()</"
+"literal> (see Inline Restrictions). A <literal>@Restrict</literal> on just "
+"the component class itself is equivalent to adding <literal>@Restrict</"
+"literal> to each of its methods."
+msgstr ""
+"Les composants Seam peuvent être sécurisés au niveau de la méthode ou de la "
+"classe, grâce à l'annotation <literal>@Restrict</literal>. Si une méthode et "
+"sa classe déclarante sont annotées avec <literal>@Restrict</literal>, la "
+"restriction de la méthode aura priorité (et la restriction de la classe ne "
+"sera pas appliquée). Si l'appel d'une méthode échoue lors d'une vérification "
+"de sécurité, une exception sera lancée selon le contrat pour "
+"<literal>Identity.checkRestriction()</literal> (consultez Restrictions en "
+"ligne). Un <literal>@Restrict</literal> sur juste la classe du composant "
+"équivaut à ajouter <literal>@Restrict</literal> à chacune de ses méthodes."
+
+#. Tag: para
+#: Security.xml:255
+#, no-c-format
+msgid ""
+"An empty <literal>@Restrict</literal> implies a permission check of "
+"<literal>componentName:methodName</literal>. Take for example the following "
+"component method:"
+msgstr ""
+"Un <literal>@Restrict</literal> vide implique une vérification de permission "
+"de <literal>componentName:methodName</literal>. Prenez par exemple, la "
+"méthode de composants suivante :"
+
+#. Tag: programlisting
+#: Security.xml:258
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class AccountAction {\n"
+"    @Restrict public void delete() {\n"
+"      ...\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"account\")\n"
+"public class AccountAction {\n"
+"    @Restrict public void delete() {\n"
+"      ...\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Security.xml:259
+#, fuzzy, no-c-format
+msgid ""
+"In this example, the implied permission required to call the <literal>delete"
+"()</literal> method is <literal>account:delete</literal>. The equivalent of "
+"this would be to write <literal>@Restrict(\"#{s:hasPermission(&#39;"
+"account&#39;,&#39;delete&#39;,null)}\")</literal>. Now let&#39;s look at "
+"another example:"
+msgstr ""
+"Dans cet exemple, la permission tacite nécessaire pour appeler la méthode "
+"<literal>delete()</literal> est <literal>account:delete</literal>. Cela "
+"équivaudrait à écrire <literal>@Restrict(\"#{s:hasPermission"
+"('account','delete',null)}\")</literal>. Maintenant examinons un autre "
+"exemple :"
+
+#. Tag: programlisting
+#: Security.xml:262
+#, fuzzy, no-c-format
+msgid ""
+"@Restrict @Name(\"account\")\n"
+"public class AccountAction {\n"
+"    public void insert() {\n"
+"      ...\n"
+"    }\n"
+"    @Restrict(\"#{s:hasRole(&#39;admin&#39;)}\") \n"
+"    public void delete() {\n"
+"      ...\n"
+"    }\n"
+"}"
+msgstr ""
+"@Restrict @Name(\"account\")\n"
+"public class AccountAction {\n"
+"    public void insert() {\n"
+"      ...\n"
+"    }\n"
+"    @Restrict(\"#{s:hasRole('admin')}\") \n"
+"    public void delete() {\n"
+"      ...\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Security.xml:263
+#, no-c-format
+msgid ""
+"This time, the component class itself is annotated with <literal>@Restrict</"
+"literal>. This means that any methods without an overriding "
+"<literal>@Restrict</literal> annotation require an implicit permission "
+"check. In the case of this example, the <literal>insert()</literal> method "
+"requires a permission of <literal>account:insert</literal>, while the "
+"<literal>delete()</literal> method requires that the user is a member of the "
+"<literal>admin</literal> role."
+msgstr ""
+"Cette fois, la classe de composants elle-même est annotée avec "
+"<literal>@Restrict</literal>. Cela signifie que toutes les méthodes sans "
+"annotation prédominante <literal>@Restrict</literal> demandent une "
+"vérification de permission implicite. Dans cet exemple, la méthode "
+"<literal>insert()</literal> requiert une permission de <literal>account:"
+"insert</literal>, alors que la méthode <literal>delete()</literal> exige que "
+"l'utilisateur soit membre du rôle <literal>admin</literal>."
+
+#. Tag: para
+#: Security.xml:266
+#, fuzzy, no-c-format
+msgid ""
+"Before we go any further, let&#39;s address the <literal>#{s:hasRole()}</"
+"literal> expression seen in the above example. Both <literal>s:hasRole</"
+"literal> and <literal>s:hasPermission</literal> are EL functions, which "
+"delegate to the correspondingly named methods of the <literal>Identity</"
+"literal> class. These functions can be used within any EL expression "
+"throughout the entirety of the security API."
+msgstr ""
+"Avant d'aller plus loin, abordons l'expression <literal>#{s:hasRole()}</"
+"literal> vue dans l'exemple ci-dessus. <literal>s:hasRole</literal> et "
+"<literal>s:hasPermission</literal> sont des fonctions EL, qui délèguent aux "
+"méthodes nommées correspondantes de la classe <literal>Identity</literal>. "
+"Ces fonctions peuvent être utilisées à l'intérieur de toute expression EL "
+"dans la totalité de l'API."
+
+#. Tag: para
+#: Security.xml:269
+#, no-c-format
+msgid ""
+"Being an EL expression, the value of the <literal>@Restrict</literal> "
+"annotation may reference any objects that exist within a Seam context. This "
+"is extremely useful when performing permission checks for a specific object "
+"instance. Look at this example:"
+msgstr ""
+"En tant qu'expression EL, la valeur de l'annotation <literal>@Restrict</"
+"literal> peut référencer tous les objets qui existent dans le contexte Seam. "
+"Cela est extrêmement utile quand on effectue des vérifications de permission "
+"pour une instance d'objet particulière. Regardez cet exemple :"
+
+#. Tag: programlisting
+#: Security.xml:272
+#, fuzzy, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class AccountAction {\n"
+"    @In Account selectedAccount;\n"
+"    @Restrict(\"#{s:hasPermission(&#39;account&#39;,&#39;modify&#39;,"
+"selectedAccount)}\")\n"
+"    public void modify() {\n"
+"        selectedAccount.modify();\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"account\")\n"
+"public class AccountAction {\n"
+"    @In Account selectedAccount;\n"
+"    @Restrict(\"#{s:hasPermission('account','modify',selectedAccount)}\")\n"
+"    public void modify() {\n"
+"        selectedAccount.modify();\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Security.xml:273
+#, no-c-format
+msgid ""
+"The interesting thing to note from this example is the reference to "
+"<literal>selectedAccount</literal> seen within the <literal>hasPermission()</"
+"literal> function call. The value of this variable will be looked up from "
+"within the Seam context, and passed to the <literal>hasPermission()</"
+"literal> method in <literal>Identity</literal>, which in this case can then "
+"determine if the user has the required permission for modifying the "
+"specified <literal>Account</literal> object."
+msgstr ""
+"Dans cet exemple il est intéressant de remarquer la référence à "
+"<literal>selectedAccount</literal> vu dans l'appel de la fonction "
+"<literal>hasPermission()</literal>. La valeur de cette variable sera "
+"recherchée depuis le contexte Seam, et passée à la méthode "
+"<literal>hasPermission()</literal> dans <literal>Identity</literal>, qui "
+"dans ce cas, peut déterminer si l'utilisateur a la permission requise pour "
+"modifier l'objet <literal>Account</literal> spécifié."
+
+#. Tag: title
+#: Security.xml:276
+#, no-c-format
+msgid "Inline restrictions"
+msgstr "Restrictions en ligne"
+
+#. Tag: para
+#: Security.xml:277
+#, no-c-format
+msgid ""
+"Sometimes it might be desirable to perform a security check in code, without "
+"using the <literal>@Restrict</literal> annotation. In this situation, simply "
+"use <literal>Identity.checkRestriction()</literal> to evaluate a security "
+"expression, like this:"
+msgstr ""
+"Quelquefois il est préférable d'effectuer une vérification de sécurité en "
+"code, sans utiliser l'annotation <literal>@Restrict</literal>. Dans cette "
+"situation, utilisez simplement <literal>Identity.checkRestriction()</"
+"literal> pour évaluer une expression de sécurité, comme suit :"
+
+#. Tag: programlisting
+#: Security.xml:280
+#, fuzzy, no-c-format
+msgid ""
+"public void deleteCustomer() {\n"
+"    Identity.instance().checkRestriction(\"#{s:hasPermission(&#39;"
+"customer&#39;,&#39;delete&#39;,\n"
+"      selectedCustomer)}\");\n"
+"}"
+msgstr ""
+"public void deleteCustomer() {\n"
+"    Identity.instance().checkRestriction(\"#{s:hasPermission"
+"('customer','delete',\n"
+"        selectedCustomer)}\");\n"
+"}"
+
+#. Tag: para
+#: Security.xml:281
+#, fuzzy, no-c-format
+msgid ""
+"If the expression specified doesn&#39;t evaluate to <literal>true</literal>, "
+"either"
+msgstr "Si l'expression spécifiée n'évalue pas à <literal>true</literal>, "
+
+#. Tag: para
+#: Security.xml:286
+#, no-c-format
+msgid ""
+"if the user is not logged in, a <literal>NotLoggedInException</literal> "
+"exception is thrown or"
+msgstr ""
+"si l'utilisateur n'est pas connecté, une exception "
+"<literal>NotLoggedInException</literal> est lancée ou"
+
+#. Tag: para
+#: Security.xml:291
+#, no-c-format
+msgid ""
+"if the user is logged in, an <literal>AuthorizationException</literal> "
+"exception is thrown."
+msgstr ""
+"si l'utilisateur est connecté, une exception "
+"<literal>AuthorizationException</literal> est lancée."
+
+#. Tag: para
+#: Security.xml:296
+#, no-c-format
+msgid ""
+"It is also possible to call the <literal>hasRole()</literal> and "
+"<literal>hasPermission()</literal> methods directly from Java code:"
+msgstr ""
+"Il est également possible d'appeler les méthodes <literal>hasRole()</"
+"literal> et <literal>hasPermission()</literal> directement depuis le code "
+"Java :"
+
+#. Tag: programlisting
+#: Security.xml:299
+#, no-c-format
+msgid ""
+"if (!Identity.instance().hasRole(\"admin\"))\n"
+"     throw new AuthorizationException(\"Must be admin to perform this action"
+"\");\n"
+"\n"
+"if (!Identity.instance().hasPermission(\"customer\", \"create\", null))\n"
+"     throw new AuthorizationException(\"You may not create new customers\");"
+msgstr ""
+"if (!Identity.instance().hasRole(\"admin\"))\n"
+"     throw new AuthorizationException(\"Must be admin to perform this action"
+"\");\n"
+"\n"
+"if (!Identity.instance().hasPermission(\"customer\", \"create\", null))\n"
+"     throw new AuthorizationException(\"You may not create new customers\");"
+
+#. Tag: title
+#: Security.xml:300
+#, no-c-format
+msgid "Security in the user interface"
+msgstr "La sécurité dans l'interface utilisateur"
+
+#. Tag: para
+#: Security.xml:301
+#, fuzzy, no-c-format
+msgid ""
+"One indication of a well designed user interface is that the user is not "
+"presented with options for which they don&#39;t have the necessary "
+"privileges to use. Seam Security allows conditional rendering of either 1) "
+"sections of a page or 2) individual controls, based upon the privileges of "
+"the user, using the very same EL expressions that are used for component "
+"security."
+msgstr ""
+"On peut distinguer une interface d'utilisateur bien conçue quand elle ne "
+"présente pas à l'utilisateur des options pour lesquelles il n'a pas les "
+"privilèges nécessaires. La Sécurité Seam permet un rendu conditionnel 1) des "
+"sections d'une page ou 2) des contrôles individuels, basés sur les "
+"privilèges de l'utilisateur, en utilisant exactement les mêmes expressions "
+"EL que pour la sécurité des composants. "
+
+#. Tag: para
+#: Security.xml:304
+#, fuzzy, no-c-format
+msgid ""
+"Let&#39;s take a look at some examples of interface security. First of all, "
+"let&#39;s pretend that we have a login form that should only be rendered if "
+"the user is not already logged in. Using the <literal>identity.isLoggedIn()</"
+"literal> property, we can write this:"
+msgstr ""
+"Examinons plusieurs exemples de sécurité d'interface. Tout d'abord, "
+"supposons que nous ayons un formulaire de connexion qui ne devrait être "
+"affiché que si l'utilisateur n'est pas encore connecté. À l'aide de la "
+"propriété <literal>identity.isLoggedIn()</literal>, nous pouvons écrire :"
+
+#. Tag: programlisting
+#: Security.xml:307
+#, no-c-format
+msgid ""
+"&lt;h:form class=\"loginForm\" rendered=\"#{not identity.loggedIn}\"&gt;"
+msgstr ""
+"&lt;h:form class=\"loginForm\" rendered=\"#{not identity.loggedIn}\"&gt;"
+
+#. Tag: para
+#: Security.xml:308
+#, fuzzy, no-c-format
+msgid ""
+"If the user isn&#39;t logged in, then the login form will be rendered - very "
+"straight forward so far. Now let&#39;s pretend there is a menu on the page "
+"that contains some actions which should only be accessible to users in the "
+"<literal>manager</literal> role. Here&#39;s one way that these could be "
+"written:"
+msgstr ""
+"Si l'utilisateur n'est pas connecté, le formulaire de connexion sera affiché "
+"- très simple jusqu'à maintenant. Supposons qu'il existe un menu sur la "
+"page, contenant des actions qui devraient être accessibles uniquement aux "
+"utilisateurs dans le rôle <literal>manager</literal>. Voici une façon de les "
+"écrire :"
+
+#. Tag: programlisting
+#: Security.xml:311
+#, fuzzy, no-c-format
+msgid ""
+"&lt;h:outputLink action=\"#{reports.listManagerReports}\" rendered=\"#{s:"
+"hasRole(&#39;manager&#39;)}\"&gt;\n"
+"    Manager Reports\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+"&lt;h:outputLink action=\"#{reports.listManagerReports}\" rendered=\"#{s:"
+"hasRole('manager')}\"&gt;\n"
+"    Manager Reports\n"
+"&lt;/h:outputLink&gt;"
+
+#. Tag: para
+#: Security.xml:312
+#, no-c-format
+msgid ""
+"This is also quite straight forward. If the user is not a member of the "
+"<literal>manager</literal> role, then the outputLink will not be rendered. "
+"The <literal>rendered</literal> attribute can generally be used on the "
+"control itself, or on a surrounding <literal>&lt;s:div&gt;</literal> or "
+"<literal>&lt;s:span&gt;</literal> control."
+msgstr ""
+"Cela aussi est assez simple. Si l'utilisateur n'est pas un membre du rôle "
+"<literal>manager</literal>, le outputLink ne sera pas affiché. L'attribut "
+"<literal>rendered</literal> peut généralement être utilisé sur le contrôle, "
+"ou sur un contrôle avoisinnant <literal>&lt;s:div&gt;</literal> ou "
+"<literal>&lt;s:span&gt;</literal>."
+
+#. Tag: para
+#: Security.xml:315
+#, fuzzy, no-c-format
+msgid ""
+"Now for something more complex. Let&#39;s say you have a <literal>h:"
+"dataTable</literal> control on a page listing records for which you may or "
+"may not wish to render action links depending on the user&#39;s privileges. "
+"The <literal>s:hasPermission</literal> EL function allows us to pass in an "
+"object parameter which can be used to determine whether the user has the "
+"requested permission for that object or not. Here&#39;s how a dataTable with "
+"secured links might look:"
+msgstr ""
+"Passons à quelque chose de plus complexe. Supposons que vous ayez un "
+"contrôle <literal>h:dataTable</literal> sur les données de listing de page "
+"pour lesquels vous souhaitez ou ne souhaitez pas afficher les liens "
+"d'action, en fonction des privilèges de l'utilisateur. La fonction EL "
+"<literal>s:hasPermission</literal> nous permet de passer un paramètre "
+"d'objet, pouvant être utilisé pour déterminer si l'utilisateur a les "
+"permissions requises pour cet objet ou non. Voici à quoi ressemble une "
+"dataTable avec des liens sécurisés : "
+
+#. Tag: programlisting
+#: Security.xml:318
+#, fuzzy, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{clients}\" var=\"cl\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Name&lt;/f:facet&gt;\n"
+"        #{cl.name}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;City&lt;/f:facet&gt;\n"
+"        #{cl.city}\n"
+"    &lt;/h:column&gt;   \n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"        &lt;s:link value=\"Modify Client\" action=\"#{clientAction.modify}"
+"\"\n"
+"                rendered=\"#{s:hasPermission(&#39;client&#39;,&#39;"
+"modify&#39;,cl)\"/&gt;\n"
+"        &lt;s:link value=\"Delete Client\" action=\"#{clientAction.delete}"
+"\"\n"
+"                rendered=\"#{s:hasPermission(&#39;client&#39;,&#39;"
+"delete&#39;,cl)\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+"&lt;h:dataTable value=\"#{clients}\" var=\"cl\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Name&lt;/f:facet&gt;\n"
+"        #{cl.name}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;City&lt;/f:facet&gt;\n"
+"        #{cl.city}\n"
+"    &lt;/h:column&gt;   \n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"        &lt;s:link value=\"Modify Client\" action=\"#{clientAction.modify}"
+"\"\n"
+"                rendered=\"#{s:hasPermission('client','modify',cl)\"/&gt;\n"
+"        &lt;s:link value=\"Delete Client\" action=\"#{clientAction.delete}"
+"\"\n"
+"                rendered=\"#{s:hasPermission('client','delete',cl)\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+
+#. Tag: title
+#: Security.xml:319
+#, no-c-format
+msgid "Securing pages"
+msgstr "Sécurisation des pages"
+
+#. Tag: para
+#: Security.xml:320
+#, fuzzy, no-c-format
+msgid ""
+"Page security requires that the application is using a <literal>pages.xml</"
+"literal> file, however is extremely simple to configure. Simply include a "
+"<literal>&lt;restrict/&gt;</literal> element within the <literal>page</"
+"literal> elements that you wish to secure. By default, if a value is not "
+"provided for the <literal>restrict</literal> element, an implied permission "
+"of <literal>{viewId}:render</literal> will be checked for whenever accessing "
+"that page. Otherwise the value will be evaluated as a standard security "
+"expression. Here&#39;s a couple of examples:"
+msgstr ""
+"La sécurité des pages exige que l'application utilise un fichier "
+"<literal>pages.xml</literal>, par contre il est extrêmement facile à "
+"configurer. Incluez simplement un élément <literal>&lt;restrict/&gt;</"
+"literal> dans les éléments <literal>page</literal> que vous désirez "
+"sécuriser. Par défaut, si une valeur n'est pas fournie pour l'élément "
+"<literal>restrict</literal>, une permission tacite de <literal>{viewId}:"
+"render</literal> sera vérifiée pour le moment où cette page sera consultée. "
+"Autrement la valeur sera évaluée en tant qu'expression de sécurité standard. "
+"Voici deux exemples :"
+
+#. Tag: programlisting
+#: Security.xml:323
+#, fuzzy, no-c-format
+msgid ""
+"&lt;page view-id=\"/settings.xhtml\"&gt;\n"
+"    &lt;restrict/&gt;\n"
+"&lt;/page&gt;\n"
+"        \n"
+"&lt;page view-id=\"/reports.xhtml\"&gt;    \n"
+"    &lt;restrict&gt;#{s:hasRole(&#39;admin&#39;)}&lt;/restrict&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page view-id=\"/settings.xhtml\"&gt;\n"
+"    &lt;restrict/&gt;\n"
+"&lt;/page&gt;\n"
+"        \n"
+"&lt;page view-id=\"/reports.xhtml\"&gt;    \n"
+"    &lt;restrict&gt;#{s:hasRole('admin')}&lt;/restrict&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Security.xml:324
+#, no-c-format
+msgid ""
+"In the above example, the first page has an implied permission restriction "
+"of <literal>/settings.xhtml:render</literal>, while the second one checks "
+"that the user is a member of the <literal>admin</literal> role."
+msgstr ""
+"Dans l'exemple ci-dessus, la première page a une restriction de permission "
+"tacite de <literal>/settings.xhtml:render</literal>, alors que la seconde "
+"vérifie que l'utilisateur est membre du rôle <literal>admin</literal>."
+
+#. Tag: title
+#: Security.xml:327
+#, no-c-format
+msgid "Securing Entities"
+msgstr "Sécuriser les entités"
+
+#. Tag: para
+#: Security.xml:328
+#, no-c-format
+msgid ""
+"Seam security also makes it possible to apply security restrictions to read, "
+"insert, update and delete actions for entities."
+msgstr ""
+"La sécurité Seam permet d'appliquer les restrictions de sécurité pour lire, "
+"insérer, mettre à jour et supprimer les actions pour les entités. "
+
+#. Tag: para
+#: Security.xml:331
+#, no-c-format
+msgid ""
+"To secure all actions for an entity class, add a <literal>@Restrict</"
+"literal> annotation on the class itself:"
+msgstr ""
+"Pour sécuriser toutes les actions pour une classe d'entité, ajoutez une "
+"annotation <literal>@Restrict</literal> sur la classe elle-même :"
+
+#. Tag: programlisting
+#: Security.xml:334
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"customer\")\n"
+"@Restrict\n"
+"public class Customer {\n"
+"  ...\n"
+"}"
+msgstr ""
+"@Entity\n"
+"@Name(\"customer\")\n"
+"@Restrict\n"
+"public class Customer {\n"
+"  ...\n"
+"}"
+
+#. Tag: para
+#: Security.xml:335
+#, fuzzy, no-c-format
+msgid ""
+"If no expression is specified in the <literal>@Restrict</literal> "
+"annotation, the default security check that is performed is a permission "
+"check of <literal>entityName:action</literal>, where <literal>entityName</"
+"literal> is the Seam component name of the entity (or the fully-qualified "
+"class name if no @Name is specified), and the <literal>action</literal> is "
+"either <literal>read</literal>, <literal>insert</literal>, <literal>update</"
+"literal> or <literal>delete</literal>."
+msgstr ""
+"Si aucune expression n'est spécifiée dans l'annotation <literal>@Restrict</"
+"literal> la vérification de sécurité par défaut qui est effectuée, est une "
+"vérification de permission de <literal>entityName:action</literal>, où "
+"<literal>entityName</literal> est le nom de l'entité (ou le nom de la classe "
+"si aucun @Name n'est spécifié), et l'<literal>action</literal> est "
+"<literal>read</literal>, <literal>insert</literal>, <literal>update</"
+"literal> ou <literal>delete</literal>."
+
+#. Tag: para
+#: Security.xml:338
+#, no-c-format
+msgid ""
+"It is also possible to only restrict certain actions, by placing a "
+"<literal>@Restrict</literal> annotation on the relevent entity lifecycle "
+"method (annotated as follows):"
+msgstr ""
+"Il est également possible de ne restreindre que certaines actions, en "
+"plaçant une annotation <literal>@Restrict</literal> sur la méthode de cycle "
+"de vie appropriée (annotée comme suit) :"
+
+#. Tag: para
+#: Security.xml:343
+#, no-c-format
+msgid ""
+"<literal>@PostLoad</literal> - Called after an entity instance is loaded "
+"from the database. Use this method to configure a <literal>read</literal> "
+"permission."
+msgstr ""
+"<literal>@PostLoad</literal> - Appelé après qu'une instance d'entité est "
+"téléchargée depuis la base de données. Utilisez cette méthode pour "
+"configurer une permission <literal>read</literal>."
+
+#. Tag: para
+#: Security.xml:348
+#, no-c-format
+msgid ""
+"<literal>@PrePersist</literal> - Called before a new instance of the entity "
+"is inserted. Use this method to configure an <literal>insert</literal> "
+"permission."
+msgstr ""
+"<literal>@PrePersist</literal> - Appelé avant qu'une nouvelle instance de "
+"l'entité ne soit insérée. Utilisez cette méthode pour configurer une "
+"permission <literal>insert</literal>. "
+
+#. Tag: para
+#: Security.xml:353
+#, no-c-format
+msgid ""
+"<literal>@PreUpdate</literal> - Called before an entity is updated. Use this "
+"method to configure an <literal>update</literal> permission."
+msgstr ""
+"<literal>@PreUpdate</literal> - Appelé avant qu'une entité ne soit mise à "
+"jour. Utilisez cette méthode pour configurer une permission <literal>update</"
+"literal>."
+
+#. Tag: para
+#: Security.xml:358
+#, no-c-format
+msgid ""
+"<literal>@PreRemove</literal> - Called before an entity is deleted. Use this "
+"method to configure a <literal>delete</literal> permission."
+msgstr ""
+"<literal>@PreRemove</literal> - Appelé avant qu'une entité ne soit "
+"supprimée. Utilisez cette méthode pour configurer une permission "
+"<literal>delete</literal>."
+
+#. Tag: para
+#: Security.xml:363
+#, fuzzy, no-c-format
+msgid ""
+"Here&#39;s an example of how an entity would be configured to perform a "
+"security check for any <literal>insert</literal> operations. Please note "
+"that the method is not required to do anything, the only important thing in "
+"regard to security is how it is annotated:"
+msgstr ""
+"Voici un exemple de la façon dont une entité serait configurée pour "
+"effectuer une vérification de sécurité pour toutes les opérations "
+"<literal>insert</literal>. Veuillez noter que la méthode n'est aucunement "
+"requise, la seule chose qui importe en ce qui concerne la sécurité est "
+"comment elle est annotée :"
+
+#. Tag: programlisting
+#: Security.xml:366
+#, no-c-format
+msgid ""
+"@PrePersist @Restrict\n"
+"  public void prePersist() {}"
+msgstr ""
+"@PrePersist @Restrict\n"
+"  public void prePersist() {}"
+
+#. Tag: para
+#: Security.xml:367
+#, fuzzy, no-c-format
+msgid ""
+"And here&#39;s an example of an entity permission rule that checks if the "
+"authenticated user is allowed to insert a new <literal>MemberBlog</literal> "
+"record (from the seamspace example). The entity for which the security check "
+"is being made is automatically asserted into the working memory (in this "
+"case <literal>MemberBlog</literal>):"
+msgstr ""
+"Voici un exemple d'une règle de permission d'entité qui vérifie si "
+"l'utilisateur identifié est autorisé à créer une nouvelle entrée de blogue "
+"(depuis l'exemple seamspace) :"
+
+#. Tag: programlisting
+#: Security.xml:370
+#, fuzzy, no-c-format
+msgid ""
+"rule InsertMemberBlog\n"
+"  no-loop\n"
+"  activation-group \"permissions\"  \n"
+"when\n"
+"  check: PermissionCheck(name == \"memberBlog\", action == \"insert\", "
+"granted == false)\n"
+"  Principal(principalName : name)\n"
+"  MemberBlog(member : member -&gt; (member.getUsername().equals"
+"(principalName)))\n"
+"then\n"
+"  check.grant();\n"
+"end;"
+msgstr ""
+"rule InsertMemberBlog\n"
+"  no-loop\n"
+"  activation-group \"permissions\"\n"
+"when\n"
+"  c: PermissionCheck(name == \"memberBlog\", action == \"insert\", granted "
+"== false)\n"
+"  Principal(nm : name)\n"
+"  MemberBlog(mbr : member -&gt; (mbr.getUsername().equals(nm)))\n"
+"then\n"
+"  c.grant();\n"
+"  modify(c);\n"
+"end;"
+
+#. Tag: para
+#: Security.xml:371
+#, no-c-format
+msgid ""
+"This rule will grant the permission <literal>memberBlog:insert</literal> if "
+"the currently authenticated user (indicated by the <literal>Principal</"
+"literal> fact) has the same name as the member for which the blog entry is "
+"being created. The \"<literal>name : name</literal>\" structure that can be "
+"seen in the <literal>Principal</literal> fact (and other places) is a "
+"variable binding - it binds the <literal>name</literal> property of the "
+"<literal>Principal</literal> to a variable called <literal>name</literal>. "
+"Variable bindings allow the value to be referred to in other places, such as "
+"the following line which compares the member&#39;s username to the "
+"<literal>Principal</literal> name. For more details, please refer to the "
+"JBoss Rules documentation."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:374
+#, no-c-format
+msgid ""
+"Finally, we need to install a listener class that integrates Seam security "
+"with your JPA provider."
+msgstr ""
+"Enfin, il faudra installer une classe de listener qui intègre la Sécurité "
+"Seam à votre fournisseur JPA."
+
+#. Tag: title
+#: Security.xml:377
+#, no-c-format
+msgid "Entity security with JPA"
+msgstr "Sécurité de l'entité avec JPA"
+
+#. Tag: para
+#: Security.xml:378
+#, no-c-format
+msgid ""
+"Security checks for EJB3 entity beans are performed with an "
+"<literal>EntityListener</literal>. You can install this listener by using "
+"the following <literal>META-INF/orm.xml</literal> file:"
+msgstr ""
+"Les vérifications de sécurité pour les beans entité EJB3 sont effectuées "
+"avec un <literal>EntityListener</literal>. Vous pouvez installer ce listener "
+"en utilisant le fichier <literal>META-INF/orm.xml</literal> suivant :"
+
+#. Tag: programlisting
+#: Security.xml:381
+#, fuzzy, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;entity-mappings xmlns=\"http://java.sun.com/xml/ns/persistence/orm\"\n"
+"                 xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"                 xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence/"
+"orm \n"
+"                                            http://java.sun.com/xml/ns/"
+"persistence/orm_1_0.xsd\"\n"
+"                 version=\"1.0\"&gt;\n"
+"                 \n"
+"    &lt;persistence-unit-metadata&gt;\n"
+"        &lt;persistence-unit-defaults&gt;\n"
+"            &lt;entity-listeners&gt;\n"
+"                &lt;entity-listener class=\"org.jboss.seam.security."
+"EntitySecurityListener\"/&gt;\n"
+"            &lt;/entity-listeners&gt;\n"
+"        &lt;/persistence-unit-defaults&gt;\n"
+"    &lt;/persistence-unit-metadata&gt;\n"
+"    \n"
+"&lt;/entity-mappings&gt;"
+msgstr ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;entity-mappings xmlns=\"http://java.sun.com/xml/ns/persistence/orm\"\n"
+"                 xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"                 xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence/"
+"orm \n"
+"                 http://java.sun.com/xml/ns/persistence/orm_1_0.xsd\"\n"
+"                 version=\"1.0\"&gt;\n"
+"                 \n"
+"    &lt;persistence-unit-metadata&gt;\n"
+"        &lt;persistence-unit-defaults&gt;\n"
+"            &lt;entity-listeners&gt;\n"
+"                &lt;entity-listener class=\"org.jboss.seam.security."
+"EntitySecurityListener\"/&gt;\n"
+"            &lt;/entity-listeners&gt;\n"
+"        &lt;/persistence-unit-defaults&gt;\n"
+"    &lt;/persistence-unit-metadata&gt;\n"
+"    \n"
+"&lt;/entity-mappings&gt;"
+
+#. Tag: title
+#: Security.xml:382
+#, no-c-format
+msgid "Entity security with Hibernate"
+msgstr "La sécurité de l'entité avec Hibernate"
+
+#. Tag: para
+#: Security.xml:383
+#, fuzzy, no-c-format
+msgid ""
+"If you are using a Hibernate <literal>SessionFactory</literal> configured "
+"via Seam, you don&#39;t need to do anything special to use entity security."
+msgstr ""
+"Si vous utilisez une <literal>SessionFactory</literal> Hibernate configurée "
+"via Seam, vous n'avez rien de spécial à effectuer pour utiliser la sécurité "
+"de l'entité."
+
+#. Tag: title
+#: Security.xml:386
+#, no-c-format
+msgid "Writing Security Rules"
+msgstr "Écrire les règles de sécurité"
+
+#. Tag: para
+#: Security.xml:387
+#, no-c-format
+msgid ""
+"Up to this point there has been a lot of mention of permissions, but no "
+"information about how permissions are actually defined or granted. This "
+"section completes the picture, by explaining how permission checks are "
+"processed, and how to implement permission checks for a Seam application."
+msgstr ""
+"Jusqu'à maintenant nous avons beaucoup mentionné les permissions, mais nous "
+"n'avons pas indiqué comment les permissions sont définies ou accordées en "
+"pratique. Cette section complète ces informations, en expliquant comment les "
+"vérifications de permission sont traitées, et comment implémenter les "
+"vérifications de permission pour une application Seam. "
+
+#. Tag: title
+#: Security.xml:390
+#, no-c-format
+msgid "Permissions Overview"
+msgstr "Vue d'ensemble des permissions "
+
+#. Tag: para
+#: Security.xml:391
+#, no-c-format
+msgid ""
+"So how does the security API know whether a user has the <literal>customer:"
+"modify</literal> permission for a specific customer? Seam Security provides "
+"quite a novel method for determining user permissions, based on JBoss Rules. "
+"A couple of the advantages of using a rule engine are 1) a centralized "
+"location for the business logic that is behind each user permission, and 2) "
+"speed - JBoss Rules uses very efficient algorithms for evaluating large "
+"numbers of complex rules involving multiple conditions."
+msgstr ""
+"Comment l'API de sécurité reconnaît-il si un utilisateur a une permission "
+"<literal>customer:modify</literal> pour un client particulier ? La Sécurité "
+"Seam offre une méthode assez novatrice pour déterminer les permissions des "
+"utilisateurs, en se basant sur les JBoss Rules. Il y a deux avantages en ce "
+"qui concerne l'utilisation d'un moteur de règles 1) un emplacement "
+"centralisé pour la logique d'affaires qui est sous-jacente à chaque "
+"permission d'utilisateur, et 2) la vitesse - JBoss Rules utilise des "
+"algorithmes très efficaces pour évaluer une grande quantité de règles "
+"complexes, engageant de multiples conditions."
+
+#. Tag: title
+#: Security.xml:394
+#, no-c-format
+msgid "Configuring a rules file"
+msgstr "Configurer un fichier de règles"
+
+#. Tag: para
+#: Security.xml:395
+#, no-c-format
+msgid ""
+"Seam Security expects to find a <literal>RuleBase</literal> component called "
+"<literal>securityRules</literal> which it uses to evaluate permission "
+"checks. This is configured in <literal>components.xml</literal> as follows:"
+msgstr ""
+"La Sécurité Seam s'attend à trouver un composant <literal>RuleBase</"
+"literal>, appelé <literal>securityRules</literal> qu'elle utilise pour "
+"évaluer les vérifications de permission. Cela est configuré dans "
+"<literal>components.xml</literal>, comme suit :"
+
+#. Tag: programlisting
+#: Security.xml:398
+#, fuzzy, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:security=\"http://jboss.com/products/seam/security\"\n"
+"            xmlns:drools=\"http://jboss.com/products/seam/drools\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                                              http://jboss.com/products/seam/"
+"core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components \n"
+"                                              http://jboss.com/products/seam/"
+"components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/drools \n"
+"                                              http://jboss.com/products/seam/"
+"drools-1.2.xsd\"\n"
+"                 http://jboss.com/products/seam/security \n"
+"                                              http://jboss.com/products/seam/"
+"security-1.2.xsd\"&gt;                 \n"
+"        \n"
+"   &lt;drools:rule-base name=\"securityRules\"&gt;\n"
+"       &lt;drools:rule-files&gt;\n"
+"           &lt;value&gt;/META-INF/security.drl&lt;/value&gt;\n"
+"       &lt;/drools:rule-files&gt;\n"
+"   &lt;/drools:rule-base&gt;    \n"
+"   \n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:security=\"http://jboss.com/products/seam/security\"\n"
+"            xmlns:drools=\"http://jboss.com/products/seam/drools\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                     http://jboss.com/products/seam/core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components  \n"
+"                     http://jboss.com/products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/drools \n"
+"                     http://jboss.com/products/seam/drools-1.2.xsd\"\n"
+"                 http://jboss.com/products/seam/security \n"
+"                     http://jboss.com/products/seam/security-1.2.xsd"
+"\"&gt;                 \n"
+"        \n"
+"   &lt;drools:rule-base name=\"securityRules\"&gt;\n"
+"       &lt;drools:rule-files&gt;\n"
+"           &lt;value&gt;/META-INF/security.drl&lt;/value&gt;\n"
+"       &lt;/drools:rule-files&gt;\n"
+"   &lt;/drools:rule-base&gt;    \n"
+"   \n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Security.xml:399
+#, fuzzy, no-c-format
+msgid ""
+"Once the <literal>RuleBase</literal> component is configured, it&#39;s time "
+"to write the security rules."
+msgstr ""
+"Une fois le composant <literal>RuleBase</literal> configuré, c'est le moment "
+"d'écrire les règles de sécurité."
+
+#. Tag: title
+#: Security.xml:402
+#, no-c-format
+msgid "Creating a security rules file"
+msgstr "Créer un fichier de règles de sécurité"
+
+#. Tag: para
+#: Security.xml:403
+#, fuzzy, no-c-format
+msgid ""
+"For this step you need to create a file called <literal>security.drl</"
+"literal> in the <literal>/META-INF</literal> directory of your "
+"application&#39;s jar file. In actual fact this file can be called anything "
+"you want, and exist in any location as long as it is configured "
+"appropriately in <literal>components.xml</literal>."
+msgstr ""
+"Pour cette étape, vous devez créer un fichier appelé <literal>security.drl</"
+"literal> dans le répertoire <literal>/META-INF</literal> du fichier jar de "
+"votre application. En réalité vous pouvez donner n'importe quel nom à ce "
+"fichier, et il peut exister dans n'importe quel emplacement du moment qu'il "
+"est configuré correctement dans <literal>components.xml</literal>."
+
+#. Tag: para
+#: Security.xml:406
+#, fuzzy, no-c-format
+msgid ""
+"So what should the security rules file contain? At this stage it might be a "
+"good idea to at least skim through the JBoss Rules documentation, however to "
+"get started here&#39;s an extremely simple example:"
+msgstr ""
+"Par conséquent, que doivent contenir les fichiers de règles de sécurité ? À "
+"ce stade il est recommandé de parcourir la documentation sur JBoss Rules, "
+"cependant pour débuter, voici un exemple extrêmement simple :"
+
+#. Tag: programlisting
+#: Security.xml:409
+#, no-c-format
+msgid ""
+"package MyApplicationPermissions;\n"
+"\n"
+"import org.jboss.seam.security.PermissionCheck;\n"
+"import org.jboss.seam.security.Role;\n"
+"\n"
+"rule CanUserDeleteCustomers\n"
+"when\n"
+"  c: PermissionCheck(name == \"customer\", action == \"delete\")\n"
+"  Role(name == \"admin\")\n"
+"then\n"
+"  c.grant();\n"
+"end;"
+msgstr ""
+"package MyApplicationPermissions;\n"
+"\n"
+"import org.jboss.seam.security.PermissionCheck;\n"
+"import org.jboss.seam.security.Role;\n"
+"\n"
+"rule CanUserDeleteCustomers\n"
+"when\n"
+"  c: PermissionCheck(name == \"customer\", action == \"delete\")\n"
+"  Role(name == \"admin\")\n"
+"then\n"
+"  c.grant();\n"
+"end;"
+
+#. Tag: para
+#: Security.xml:410
+#, fuzzy, no-c-format
+msgid ""
+"Let&#39;s break this down. The first thing we see is the package "
+"declaration. A package in JBoss Rules is essentially a collection of rules. "
+"The package name can be anything you want - it doesn&#39;t relate to "
+"anything else outside the scope of the rule base."
+msgstr ""
+"Procédons à une décomposition. La première chose que nous constatons est la "
+"déclaration du paquetage. Un paquetage dans JBoss Rules est essentiellement "
+"un ensemble de règles. Choisissez n'importe quel nom pour le paquetage - il "
+"ne se rapporte à rien d'autre hormis l'étendue de la base de règles. "
+
+#. Tag: para
+#: Security.xml:413
+#, fuzzy, no-c-format
+msgid ""
+"The next thing we can notice is a couple of import statements for the "
+"<literal>PermissionCheck</literal> and <literal>Role</literal> classes. "
+"These imports inform the rules engine that we&#39;ll be referencing these "
+"classes within our rules."
+msgstr ""
+"Nous remarquons également deux déclarations d'import pour les classes "
+"<literal>PermissionCheck</literal> et <literal>Role</literal>. Ces imports "
+"informent le moteur de règles que nous référencerons ces classes dans nos "
+"règles. "
+
+#. Tag: para
+#: Security.xml:416
+#, no-c-format
+msgid ""
+"Finally we have the code for the rule. Each rule within a package should be "
+"given a unique name (usually describing the purpose of the rule). In this "
+"case our rule is called <literal>CanUserDeleteCustomers</literal> and will "
+"be used to check whether a user is allowed to delete a customer record."
+msgstr ""
+"Enfin nous avons le code pour la règle. Chaque règle dans un paquetage "
+"devrait obtenir un nom unique (décrivant généralement l'objectif de la "
+"règle). Dans ce cas, notre règle est appelée "
+"<literal>CanUserDeleteCustomers</literal> et sera utilisée pour vérifier si "
+"un utilisateur est autorisé à supprimer les enregistrements d'un client. "
+
+#. Tag: para
+#: Security.xml:419
+#, no-c-format
+msgid ""
+"Looking at the body of the rule definition we can notice two distinct "
+"sections. Rules have what is known as a left hand side (LHS) and a right "
+"hand side (RHS). The LHS consists of the conditional part of the rule, i.e. "
+"a list of conditions which must be satisfied for the rule to fire. The LHS "
+"is represented by the <literal>when</literal> section. The RHS is the "
+"consequence, or action section of the rule that will only be fired if all of "
+"the conditions in the LHS are met. The RHS is represented by the "
+"<literal>then</literal> section. The end of the rule is denoted by the "
+"<literal>end;</literal> line."
+msgstr ""
+"Quand on regarde le corps de la définition des règles, nous remarquons deux "
+"sections distinctes. Les règles ont ce que l'on appelle, un côté gauche "
+"(LHS) et un côté droit (RHS). Le LHS comprend la partie conditionnelle de la "
+"règle, c'est-à-dire une liste de conditions qui doivent être satisfaites "
+"pour que la règle s'exécute. Le LHS est représenté par la section "
+"<literal>when</literal>. Le RHS est la conséquence, ou section d'action de "
+"la règle qui ne sera exécutée que si toutes les conditions dans le LHS sont "
+"réunies. Le RHS est représenté par la section <literal>then</literal>. La "
+"fin de la règle est annoncée par la ligne <literal>end;</literal>."
+
+#. Tag: para
+#: Security.xml:422
+#, fuzzy, no-c-format
+msgid ""
+"If we look at the LHS of the rule, we see two conditions listed there. "
+"Let&#39;s examine the first condition:"
+msgstr ""
+"Si nous regardons le LHS de la règle, nous observons deux conditions listées "
+"à cet endroit. Examinons la première condition :"
+
+#. Tag: programlisting
+#: Security.xml:425
+#, no-c-format
+msgid "c: PermissionCheck(name == \"customer\", action == \"delete\")"
+msgstr "c: PermissionCheck(name == \"customer\", action == \"delete\")"
+
+#. Tag: para
+#: Security.xml:426
+#, no-c-format
+msgid ""
+"In plain english, this condition is stating that there must exist a "
+"<literal>PermissionCheck</literal> object with a <literal>name</literal> "
+"property equal to \"customer\", and an <literal>action</literal> property "
+"equal to \"delete\" within the working memory. What is the working memory? "
+"It is a session-scoped object that contains the contextual information that "
+"is required by the rules engine to make a decision about a permission check. "
+"Each time the <literal>hasPermission()</literal> method is called, a "
+"temporary <literal>PermissionCheck</literal> object, or <emphasis>Fact</"
+"emphasis>, is asserted into the working memory. This "
+"<literal>PermissionCheck</literal> corresponds exactly to the permission "
+"that is being checked, so for example if you call <literal>hasPermission"
+"(\"account\", \"create\", null)</literal> then a <literal>PermissionCheck</"
+"literal> object with a <literal>name</literal> equal to \"account\" and "
+"<literal>action</literal> equal to \"create\" will be asserted into the "
+"working memory for the duration of the permission check."
+msgstr ""
+"En bon français, cette condition déclare qu'il doit exister un objet "
+"<literal>PermissionCheck</literal> avec une propriété <literal>name</"
+"literal> égale à \"customer\", et une propriété <literal>action</literal> "
+"égale à \"delete\" à l'intérieur de la mémoire de travail. Qu'est-ce que la "
+"mémoire de travail ? C'est un objet session-scoped qui contient les "
+"informations contextuelles requises par le moteur de règlespour prendre une "
+"décision sur une vérification de permission. À chaque fois que la méthode "
+"<literal>hasPermission()</literal> est appelée, un objet "
+"<literal>PermissionCheck</literal>, ou <emphasis>Fact</emphasis> temporaire, "
+"est déclaré dans la mémoire de travail. Ce <literal>PermissionCheck</"
+"literal> correspond exactement à la permission qui est en train d'être "
+"vérifiée, ainsi, si vous appelez par exemple <literal>hasPermission(\"account"
+"\", \"create\", null)</literal> et puis un objet <literal>PermissionCheck</"
+"literal> avec un <literal>name</literal> égal à \"account\" et "
+"<literal>action</literal> égal à \"create\", ils seront déclarés dans la "
+"mémoire de travail pour la durée de la vérification de permission. "
+
+#. Tag: para
+#: Security.xml:429
+#, fuzzy, no-c-format
+msgid ""
+"So what else is in the working memory? Besides the short-lived temporary "
+"facts asserted during a permission check, there are some longer-lived "
+"objects in the working memory that stay there for the entire duration of a "
+"user being authenticated. These include any <literal>java.security."
+"Principal</literal> objects that are created as part of the authentication "
+"process, plus a <literal>org.jboss.seam.security.Role</literal> object for "
+"each of the roles that the user is a member of. It is also possible to "
+"assert additional long-lived facts into the working memory by calling "
+"<literal>RuleBasedIdentity.instance().getSecurityContext().assertObject()</"
+"literal>, passing the object as a parameter."
+msgstr ""
+"Qu'y a-t-il d'autre dans la mémoire de travail ? À côté des faits "
+"temporaires de courte durée, déclarés durant la vérification de permission, "
+"il existe des objets de plus longue durée dans la mémoire de travail qui y "
+"restent pour toute la durée pendant laquelle un utilisateur est identifié. "
+"Ils incluent tous les objets <literal>java.security.Principal</literal> qui "
+"sont créés et font partie du processus d'identification, avec en plus un "
+"objet <literal>org.jboss.seam.security.Role</literal> pour chacun des rôles "
+"dont l'utilisateur est membre. Il est également possible de déclarer des "
+"faits supplémentaires de longue durée dans la mémoire de travail en appelant "
+"<literal>Identity.instance().getSecurityContext().assertObject()</literal>, "
+"et en passant l'objet en tant que paramètre. "
+
+#. Tag: para
+#: Security.xml:432
+#, no-c-format
+msgid ""
+"Getting back to our simple example, we can also notice that the first line "
+"of our LHS is prefixed with <literal>c:</literal>. This is a variable "
+"binding, and is used to refer back to the object that is matched by the "
+"condition. Moving onto the second line of our LHS, we see this:"
+msgstr ""
+"Pour en revenir à notre exemple simple, nous remarquons également que la "
+"première ligne de notre LHS est précédée d'un préfixe <literal>c:</literal>. "
+"C'est une association de variable, et elle est utilisée pour renvoyer à "
+"l'objet qui correspond à la condition. Lorsque nous passons à la deuxième "
+"ligne de notre LHS, voici :"
+
+#. Tag: programlisting
+#: Security.xml:435
+#, no-c-format
+msgid "Role(name == \"admin\")"
+msgstr "Role(name == \"admin\")"
+
+#. Tag: para
+#: Security.xml:436
+#, no-c-format
+msgid ""
+"This condition simply states that there must be a <literal>Role</literal> "
+"object with a <literal>name</literal> of \"admin\" within the working "
+"memory. As mentioned, user roles are asserted into the working memory as "
+"long-lived facts. So, putting both conditions together, this rule is "
+"essentially saying \"I will fire if you are checking for the "
+"<literal>customer:delete</literal> permission and the user is a member of "
+"the <literal>admin</literal> role\"."
+msgstr ""
+"Cette condition déclare simplement qu'il doit y avoir un objet "
+"<literal>Role</literal> avec un <literal>name</literal> de \"admin\" dans la "
+"mémoire de travail. Comme nous l'avons mentionné, les rôles d'utilisateur "
+"sont déclarés dans la mémoire de travail en tant que faits de longue durée. "
+"Ainsi si l'on rassemble ces deux conditions, cette règle indique "
+"essentiellement \"J'exécute si l'on vérifie la permission <literal>customer:"
+"delete</literal> et l'utilisateur est membre du rôle <literal>admin</literal>"
+"\"."
+
+#. Tag: para
+#: Security.xml:439
+#, fuzzy, no-c-format
+msgid ""
+"So what is the consequence of the rule firing? Let&#39;s take a look at the "
+"RHS of the rule:"
+msgstr ""
+"Quelle est donc la conséquence de l'exécution de la règle ? Examinons le RHS "
+"de la règle :"
+
+#. Tag: programlisting
+#: Security.xml:442
+#, no-c-format
+msgid "c.grant()"
+msgstr "c.grant()"
+
+#. Tag: para
+#: Security.xml:443
+#, no-c-format
+msgid ""
+"The RHS consists of Java code, and in this case is invoking the "
+"<literal>grant()</literal> method of the <literal>c</literal> object, which "
+"as already mentioned is a variable binding for the <literal>PermissionCheck</"
+"literal> object. Besides the <literal>name</literal> and <literal>action</"
+"literal> properties of the <literal>PermissionCheck</literal> object, there "
+"is also a <literal>granted</literal> property which is initially set to "
+"<literal>false</literal>. Calling <literal>grant()</literal> on a "
+"<literal>PermissionCheck</literal> sets the <literal>granted</literal> "
+"property to <literal>true</literal>, which means that the permission check "
+"was successful, allowing the user to carry out whatever action the "
+"permission check was intended for."
+msgstr ""
+"Le RHS comporte le code Java, et dans ce cas il appelle la méthode "
+"<literal>grant()</literal> de l'objet <literal>c</literal> qui comme nous "
+"l'avons déjà mentionné, est une association de variable pour l'objet "
+"<literal>PermissionCheck</literal>. À côté des propriétés <literal>name</"
+"literal> et <literal>action</literal> de l'objet <literal>PermissionCheck</"
+"literal>, il y a aussi une propriété <literal>granted</literal> qui est "
+"définie initialement à <literal>false</literal>. Appeler <literal>grant()</"
+"literal> sur une <literal>PermissionCheck</literal>, définit la propriété "
+"<literal>granted</literal> à <literal>true</literal>, ce qui signifie que la "
+"vérification de permission a réussi, ce qui permet à l'utilisateur "
+"d'effectuer toute action pour laquelle la vérification de permission était "
+"prévue."
+
+#. Tag: title
+#: Security.xml:446
+#, no-c-format
+msgid "Wildcard permission checks"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:447
+#, no-c-format
+msgid ""
+"It is possible to implement a wildcard permission check (which allows all "
+"actions for a given permission name), by omitting the <literal>action</"
+"literal> constraint for the <literal>PermissionCheck</literal> in your rule, "
+"like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:450
+#, no-c-format
+msgid ""
+"rule CanDoAnythingToCustomersIfYouAreAnAdmin\n"
+"when\n"
+"  c: PermissionCheck(name == \"customer\")\n"
+"  Role(name == \"admin\")\n"
+"then\n"
+"  c.grant();\n"
+"end;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:451
+#, no-c-format
+msgid ""
+"This rule allows users with the <literal>admin</literal> role to perform "
+"<emphasis>any</emphasis> action for any <literal>customer</literal> "
+"permission check."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:454
+#, no-c-format
+msgid "SSL Security"
+msgstr "Sécurité SSL "
+
+#. Tag: para
+#: Security.xml:455
+#, no-c-format
+msgid ""
+"Seam includes basic support for serving sensitive pages via the HTTPS "
+"protocol. This is easily configured by specifying a <literal>scheme</"
+"literal> for the page in <literal>pages.xml</literal>. The following example "
+"shows how the view <literal>/login.xhtml</literal> is configured to use "
+"HTTPS:"
+msgstr ""
+"Seam inclut un support de base pour servir les pages sensibles, via le "
+"protocole HTTPS. Cela est généralement configuré en spécifiant un "
+"<literal>scheme</literal> pour la page dans <literal>pages.xml</literal>. "
+"L'exemple suivant montre comment l'affichage <literal>/login.xhtml</literal> "
+"est configuré pour utiliser HTTPS :"
+
+#. Tag: programlisting
+#: Security.xml:458
+#, no-c-format
+msgid "&lt;page view-id=\"/login.xhtml\" scheme=\"https\"&gt;"
+msgstr "&lt;page view-id=\"/login.xhtml\" scheme=\"https\"&gt;"
+
+#. Tag: para
+#: Security.xml:459
+#, no-c-format
+msgid ""
+"This configuration is automatically extended to both <literal>s:link</"
+"literal> and <literal>s:button</literal> JSF controls, which (when "
+"specifying the <literal>view</literal>) will also render the link using the "
+"correct protocol. Based on the previous example, the following link will use "
+"the HTTPS protocol because <literal>/login.xhtml</literal> is configured to "
+"use it:"
+msgstr ""
+"Cette configuration est automatiquement étendue aux contrôles JSF <literal>s:"
+"link</literal> et <literal>s:button</literal>, qui (quand on spécifie "
+"<literal>view</literal>) afficheront également le lien en utilisant le "
+"protocole correct. Selon l'exemple précédent, le lien suivant utilisera le "
+"protocole HTTPS parce que <literal>/login.xhtml</literal> est configuré pour "
+"l'utiliser :"
+
+#. Tag: programlisting
+#: Security.xml:462
+#, no-c-format
+msgid "&lt;s:link view=\"/login.xhtml\" value=\"Login\"/&gt;"
+msgstr "&lt;s:link view=\"/login.xhtml\" value=\"Login\"/&gt;"
+
+#. Tag: para
+#: Security.xml:463
+#, no-c-format
+msgid ""
+"Browsing directly to a view when using the <emphasis>incorrect</emphasis> "
+"protocol will cause a redirect to the same view using the <emphasis>correct</"
+"emphasis> protocol. For example, browsing to a page that has <literal>scheme="
+"\"https\"</literal> using HTTP will cause a redirect to the same page using "
+"HTTPS."
+msgstr ""
+"Naviguer directement vers un affichage en utilisant un protocole "
+"<emphasis>incorrect</emphasis>, entraînera une redirection vers le même "
+"affichage, à l'aide du protocole <emphasis>correct</emphasis>. Par exemple, "
+"naviguer vers une page qui a <literal>scheme=\"https\"</literal> avec HTTP "
+"entraînera une redirection vers la même page, viaHTTPS."
+
+#. Tag: para
+#: Security.xml:466
+#, no-c-format
+msgid ""
+"It is also possible to configure a default <literal>scheme</literal> for all "
+"pages. This is actually quite important, as you might only wish to use HTTPS "
+"for a few pages, and if no default scheme is specified then the default "
+"behavior is to continue using the current scheme. What this means is that "
+"once you enter a page with HTTPS, then HTTPS will continue to be used even "
+"if you navigate away to other non-HTTPS pages (a bad thing!). So it is "
+"strongly recommended to include a default <literal>scheme</literal>, by "
+"configuring it on the default (<literal>\"*\"</literal>) view:"
+msgstr ""
+"Il est également possible de configurer un <literal>scheme</literal> par "
+"défaut pour toutes les pages. Cela est assez important, car vous souhaiterez "
+"peut-être n'utiliser HTTPS que pour quelques pages, et si aucun \"schéma\" "
+"n'est spécifié par défaut, alors le comportement par défaut continuera en "
+"utilisant le \"schéma\" courant. Cela signifie qu'une fois que vous avez "
+"ouvert une page avec HTTPS, HTTPS continuera d'être utilisé même si vous "
+"naviguez vers des pages non-HTTPS (une mauvaise chose !). Il est donc "
+"vivement recommandé d'inclure un <literal>scheme</literal> par défaut, en le "
+"configurant sur l'affichage (<literal>\"*\"</literal>) par défaut :"
+
+#. Tag: programlisting
+#: Security.xml:469
+#, no-c-format
+msgid "&lt;page view-id=\"*\" scheme=\"http\"&gt;"
+msgstr "&lt;page view-id=\"*\" scheme=\"http\"&gt;"
+
+#. Tag: para
+#: Security.xml:470
+#, no-c-format
+msgid ""
+"Of course, if <emphasis>none</emphasis> of the pages in your application use "
+"HTTPS then it is not required to specify a default scheme."
+msgstr ""
+"Évidemment, si <emphasis>aucune</emphasis> des pages dans votre application "
+"n'utilise HTTPS, il n'est alors pas nécessaire de spécifier un \"schéma\" "
+"par défaut."
+
+#. Tag: title
+#: Security.xml:473
+#, no-c-format
+msgid "Implementing a Captcha Test"
+msgstr "Implémenter un test Captcha "
+
+#. Tag: para
+#: Security.xml:474
+#, no-c-format
+msgid ""
+"Though strictly not part of the security API, it might be useful in certain "
+"circumstances (such as new user registrations, posting to a public blog or "
+"forum) to implement a Captcha (<emphasis>C</emphasis>ompletely <emphasis>A</"
+"emphasis>utomated <emphasis>P</emphasis>ublic <emphasis>T</emphasis>uring "
+"test to tell <emphasis>C</emphasis>omputers and <emphasis>H</emphasis>umans "
+"<emphasis>A</emphasis>part) to prevent automated bots from interacting with "
+"your application. Seam provides seamless integration with JCaptcha, an "
+"excellent library for generating Captcha challenges. If you wish to use the "
+"captcha feature in your application you need to include the jcaptcha-* jar "
+"file from the Seam lib directory in your project, and register it in "
+"<literal>application.xml</literal> as a java module."
+msgstr ""
+"Bien que ne faisant pas partie de la sécurité de l'API, il peut être utile "
+"dans certaines circonstances (comme les enregistrements de nouveaux "
+"utilisateurs, l'envoi à un blogue public ou forum) d'implémenter un Captcha "
+"(de l'anglais <emphasis>C</emphasis>ompletely <emphasis>A</emphasis>utomated "
+"<emphasis>P</emphasis>ublic <emphasis>T</emphasis>uring test to tell "
+"<emphasis>C</emphasis>omputers and <emphasis>H</emphasis>umans <emphasis>A</"
+"emphasis>part, en français test de turing complètement automatisé pour "
+"différencier un utilisateur humain d'un ordinateur) pour éviter des bots "
+"automatisés d'interagir avec votre application. Seam fournit une intégration "
+"sans failles avec JCaptcha, une excellente bibliothèque pour générer des "
+"challenges Captcha. Si vous désirez utiliser la fonctionnalité Captcha dans "
+"votre application, il faut inclure dans votre projet, le jcaptcha-* fichier "
+"jar du répertoire lib de Seam et l'enregister dans <literal>application.xml</"
+"literal> en tant que module java. "
+
+#. Tag: title
+#: Security.xml:477
+#, no-c-format
+msgid "Configuring the Captcha Servlet"
+msgstr "Configurer le servlet Captcha "
+
+#. Tag: para
+#: Security.xml:478
+#, no-c-format
+msgid ""
+"To get up and running, it is necessary to configure the Seam Resource "
+"Servlet, which will provide the Captcha challenge images to your pages. This "
+"requires the following entry in <literal>web.xml</literal>:"
+msgstr ""
+"Pour se lancer, il est nécessaire de configurer le servlet de ressources "
+"Seam, qui fournit les images du challenge Captcha à vos pages. Cela demande "
+"l'entrée suivante dans <literal>web.xml</literal> :"
+
+#. Tag: programlisting
+#: Security.xml:481
+#, no-c-format
+msgid ""
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"    \n"
+"&lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+msgstr ""
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"    \n"
+"&lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+
+#. Tag: title
+#: Security.xml:482
+#, no-c-format
+msgid "Adding a Captcha to a page"
+msgstr "Ajout d'un Captcha à une page"
+
+#. Tag: para
+#: Security.xml:483
+#, fuzzy, no-c-format
+msgid ""
+"Adding a captcha challenge to a page is extremely easy. Seam provides a page-"
+"scoped component, <literal>captcha</literal>, which provides everything that "
+"is required, including built-in captcha validation. Here&#39;s an example:"
+msgstr ""
+"Ajouter un challenge captcha à une page est extrêmement facile. Seam fournit "
+"un composant page-scoped, <literal>captcha</literal>, qui fournit tout ce "
+"qui est nécessaire, y compris la validation captcha imbriquée. En voici un "
+"exemple :"
+
+#. Tag: programlisting
+#: Security.xml:486
+#, no-c-format
+msgid ""
+"&lt;div&gt;\n"
+"    &lt;h:graphicImage value=\"/seam/resource/captcha?#{captcha.id}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"  \n"
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"verifyCaptcha\"&gt;Enter the above letters&lt;/h:"
+"outputLabel&gt;\n"
+"    &lt;h:inputText id=\"verifyCaptcha\" value=\"#{captcha.response}\" "
+"required=\"true\"/&gt;\n"
+"    &lt;div class=\"validationError\"&gt;&lt;h:message for=\"verifyCaptcha\"/"
+"&gt;&lt;/div&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+"&lt;div&gt;\n"
+"    &lt;h:graphicImage value=\"/seam/resource/captcha?#{captcha.id}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"  \n"
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"verifyCaptcha\"&gt;Enter the above letters&lt;/h:"
+"outputLabel&gt;\n"
+"    &lt;h:inputText id=\"verifyCaptcha\" value=\"#{captcha.response}\" "
+"required=\"true\"/&gt;\n"
+"    &lt;div class=\"validationError\"&gt;&lt;h:message for=\"verifyCaptcha\"/"
+"&gt;&lt;/div&gt;\n"
+"&lt;/div&gt;"
+
+#. Tag: para
+#: Security.xml:487
+#, fuzzy, no-c-format
+msgid ""
+"That&#39;s all there is to it. The <literal>graphicImage</literal> control "
+"displays the Captcha challenge, and the <literal>inputText</literal> "
+"receives the user&#39;s response. The response is automatically validated "
+"against the Captcha when the form is submitted."
+msgstr ""
+"C'est aussi simple que ça. Le contrôle <literal>graphicImage</literal> "
+"affiche le challenge Captcha, et le <literal>inputText</literal> reçoit la "
+"réponse de l'utilisateur. La réponse est automatiquement validée contre le "
+"Captcha quand le formulaire est soumis. "

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Spring.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Spring.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Spring.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,655 @@
+# translation of Spring.po to french
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# myriam malga <mmalga at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Spring\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2007-08-07 11:56+1000\n"
+"Last-Translator: myriam malga <mmalga at redhat.com>\n"
+"Language-Team: french\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Spring.xml:6
+#, no-c-format
+msgid "Spring Framework integration"
+msgstr "Intégration du framework Spring"
+
+#. Tag: para
+#: Spring.xml:7
+#, fuzzy, no-c-format
+msgid ""
+"The Spring integration module allows easy migration of Spring-based projects "
+"to Seam and allows Spring applications to take advantage of key Seam "
+"features like conversations and Seam&#39;s more sophisticated persistence "
+"context management."
+msgstr ""
+"Le module d'intégration Spring permet une migration facile des projets "
+"Spring vers Seam et permet aux applications Spring de tirer avantage des "
+"fonctionnalités clés de Seam, comme des conversations et une gestion du "
+"contexte de persistance plus sophisitiquée. "
+
+#. Tag: para
+#: Spring.xml:10
+#, fuzzy, no-c-format
+msgid "Seam&#39;s support for Spring provides the ability to:"
+msgstr "Le support de Seam pour Spring offre la capacité :"
+
+#. Tag: para
+#: Spring.xml:15
+#, no-c-format
+msgid "inject Seam component instances into Spring beans"
+msgstr "d'injecter les instances de composants Seam dans les beans Spring"
+
+#. Tag: para
+#: Spring.xml:20
+#, no-c-format
+msgid "inject Spring beans into Seam components"
+msgstr "d'injecter les beans Spring dans les composants Seam"
+
+#. Tag: para
+#: Spring.xml:25
+#, no-c-format
+msgid "turn Spring beans into Seam components"
+msgstr "de changer les beans Spring en composants Seam"
+
+#. Tag: para
+#: Spring.xml:30
+#, no-c-format
+msgid "allow Spring beans to live in any Seam context"
+msgstr "de permettre aux beans Spring de résider dans tout contexte Seam"
+
+#. Tag: para
+#: Spring.xml:35
+#, fuzzy, no-c-format
+msgid "start a spring WebApplicationContext with a Seam component"
+msgstr "Changer un bean Spring en un composant Seam"
+
+#. Tag: title
+#: Spring.xml:41
+#, no-c-format
+msgid "Injecting Seam components into Spring beans"
+msgstr "Injection des composants Seam dans les beans Spring"
+
+#. Tag: para
+#: Spring.xml:42
+#, no-c-format
+msgid ""
+"Injecting Seam component instances into Spring beans is accomplished using "
+"the <literal>&lt;seam:instance/&gt;</literal> namespace handler. To enable "
+"the Seam namespace handler, the Seam namespace must be added to the Spring "
+"beans definition file:"
+msgstr ""
+"Injecter les instances de composants Seam dans les beans Spring est effectué "
+"en utilisant le gestionnaire d'espaces de noms <literal>&lt;seam:instance/"
+"&gt;</literal>. Pour activer le gestionnaire d'espaces de noms, l'espace de "
+"noms Seam doit être ajouté au fichier de définition des beans Spring :"
+
+#. Tag: programlisting
+#: Spring.xml:45
+#, fuzzy, no-c-format
+msgid ""
+"&lt;beans xmlns=\"http://www.springframework.org/schema/beans\"\n"
+"    xmlns:seam=\"http://jboss.com/products/seam/spring-seam\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://www.springframework.org/schema/beans \n"
+"                        http://www.springframework.org/schema/beans/spring-"
+"beans-2.0.xsd\n"
+"                        http://jboss.com/products/seam/spring-seam \n"
+"                        http://jboss.com/products/seam/spring-seam-1.2.xsd"
+"\"&gt;"
+msgstr ""
+"&lt;beans xmlns=\"http://www.springframework.org/schema/beans\"\n"
+"    xmlns:seam=\"http://jboss.com/products/seam/spring\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://www.springframework.org/schema/beans \n"
+"                        http://www.springframework.org/schema/beans/spring-"
+"beans-2.0.xsd\n"
+"                        http://jboss.com/products/seam/spring \n"
+"                        http://jboss.com/products/seam/spring-1.2.xsd\"&gt;"
+
+#. Tag: para
+#: Spring.xml:46
+#, no-c-format
+msgid "Now any Seam component may be injected into any Spring bean:"
+msgstr "Alors tout composant Seam peut être injecté dans tout bean Spring :"
+
+#. Tag: programlisting
+#: Spring.xml:49
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\"&gt;\n"
+"        &lt;seam:instance name=\"someComponent\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\"&gt;\n"
+"        &lt;seam:instance name=\"someComponent\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+
+#. Tag: para
+#: Spring.xml:50
+#, no-c-format
+msgid "An EL expression may be used instead of a component name:"
+msgstr "Une expression EL peut être utilisée au lieu d'un nom de composant :"
+
+#. Tag: programlisting
+#: Spring.xml:53
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\"&gt;\n"
+"        &lt;seam:instance name=\"#{someExpression}\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\"&gt;\n"
+"        &lt;seam:instance name=\"#{someExpression}\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+
+#. Tag: para
+#: Spring.xml:54
+#, no-c-format
+msgid ""
+"Seam component instances may even be made available for injection into "
+"Spring beans by a Spring bean id."
+msgstr ""
+"Les instances de composants Seam peuvent aussi être rendus disponibles à "
+"l'injection dans les beans Spring par un id de bean Spring. "
+
+#. Tag: programlisting
+#: Spring.xml:57
+#, no-c-format
+msgid ""
+"&lt;seam:instance name=\"someComponent\" id=\"someSeamComponentInstance\"/"
+"&gt;\n"
+"\n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\" ref=\"someSeamComponentInstance"
+"\"&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+"&lt;seam:instance name=\"someComponent\" id=\"someSeamComponentInstance\"/"
+"&gt;\n"
+"\n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\" ref=\"someSeamComponentInstance"
+"\"&gt;\n"
+"&lt;/bean&gt;"
+
+#. Tag: para
+#: Spring.xml:58
+#, no-c-format
+msgid "Now for the caveat!"
+msgstr "Voici un avertissement !"
+
+#. Tag: para
+#: Spring.xml:61
+#, no-c-format
+msgid ""
+"Seam was designed from the ground up to support a stateful component model "
+"with multiple contexts. Spring was not. Unlike Seam bijection, Spring "
+"injection does not occur at method invocation time. Instead, injection "
+"happens only when the Spring bean is instantiated. So the instance available "
+"when the bean is instantiated will be the same instance that the bean uses "
+"for the entire life of the bean. For example, if a Seam "
+"<literal>CONVERSATION</literal>-scoped component instance is directly "
+"injected into a singleton Spring bean, that singleton will hold a reference "
+"to the same instance long after the conversation is over! We call this "
+"problem <emphasis>scope impedance</emphasis>. Seam bijection ensures that "
+"scope impedance is maintained naturally as an invocation flows through the "
+"system. In Spring, we need to inject a proxy of the Seam component, and "
+"resolve the reference when the proxy is invoked."
+msgstr ""
+"Seam a été conçu dès le départ pour supporter un modèle de composants "
+"stateful avec de multiples contextes. Ce n'est pas le cas de Spring. "
+"Contrairement à la bijection Seam, l'injection Spring n'apparaît pas au "
+"moment de l'appel de la méthode. À la place, l'injection n'a lieu que quand "
+"le bean Spring est instancié. Par conséquent, l'instance disponible quand le "
+"bean est instancié sera la même instance que le bean utilise pour la durée "
+"de vie complète du bean. Par exemple, si une instance de composant "
+"<literal>CONVERSATION</literal>-scoped de Seam est directement injectée dans "
+"un bean singleton Spring, ce singleton contiendra une référence à la même "
+"instance, longtemps après la la fin de la conversation ! Ce problème est "
+"appelé <emphasis>impédance de l'étendue</emphasis>. La bijection Seam assure "
+"que l'impédance de l'étendue est maintenue naturellement alors qu'un appel "
+"circule dans le système. Dans Spring, nous devons injecter un proxy du "
+"composant Seam et résoudre la référence quand le proxy est appelé. "
+
+#. Tag: para
+#: Spring.xml:64
+#, no-c-format
+msgid ""
+"The <literal>&lt;seam:instance/&gt;</literal> tag lets us automatically "
+"proxy the Seam component."
+msgstr ""
+"La balise <literal>&lt;seam:instance/&gt;</literal> nous permet "
+"automatiquement de substituer le composant Seam."
+
+#. Tag: programlisting
+#: Spring.xml:67
+#, no-c-format
+msgid ""
+"&lt;seam:instance id=\"seamManagedEM\" name=\"someManagedEMComponent\" proxy="
+"\"true\"/&gt;\n"
+"        \n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\"&gt;\n"
+"    &lt;property name=\"entityManager\" ref=\"seamManagedEM\"&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+"&lt;seam:instance id=\"seamManagedEM\" name=\"someManagedEMComponent\" proxy="
+"\"true\"/&gt;\n"
+"        \n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\"&gt;\n"
+"    &lt;property name=\"entityManager\" ref=\"seamManagedEM\"&gt;\n"
+"&lt;/bean&gt;"
+
+#. Tag: para
+#: Spring.xml:68
+#, no-c-format
+msgid ""
+"This example shows one way to use a Seam-managed persistence context from a "
+"Spring bean. (A more robust way to use Seam-managed persistence contexts as "
+"a replacement for the Spring <literal>OpenEntityManagerInView</literal> "
+"filter will be provided in a future release)"
+msgstr ""
+"Cet exemple indique une façon d'utiliser un contexte de persistance, géré "
+"par Seam depuis un bean Spring. (Une manière plus robuste d'utiliser le "
+"contexte de persistance géré par Seam, en tant que remplacement pour le "
+"filtre <literal>OpenEntityManagerInView</literal> Spring sera fournie dans "
+"une version future)"
+
+#. Tag: title
+#: Spring.xml:74
+#, no-c-format
+msgid "Injecting Spring beans into Seam components"
+msgstr "Injection des beans Spring dans les composants Seam"
+
+#. Tag: para
+#: Spring.xml:75
+#, no-c-format
+msgid ""
+"It is even easier to inject Spring beans into Seam component instances. "
+"Actually, there are two possible approaches:"
+msgstr ""
+"Il est encore plus facile d'injecter des beans Spring dans les instances de "
+"composants Seam. Il y a effectivement deux approches possibles :"
+
+#. Tag: para
+#: Spring.xml:80
+#, no-c-format
+msgid "inject a Spring bean using an EL expression"
+msgstr "injecter un bean Spring en utilisant une expression EL "
+
+#. Tag: para
+#: Spring.xml:85
+#, no-c-format
+msgid "make the Spring bean a Seam component"
+msgstr "changer le bean Spring en composant Seam"
+
+#. Tag: para
+#: Spring.xml:90
+#, fuzzy, no-c-format
+msgid ""
+"We&#39;ll discuss the second option in the next section. The easiest "
+"approach is to access the Spring beans via EL."
+msgstr ""
+"Nous parlerons de la seconde option dans la prochaine section. L'approche la "
+"plus facile est d'accéder aux beans Spring via EL."
+
+#. Tag: para
+#: Spring.xml:93
+#, fuzzy, no-c-format
+msgid ""
+"The Spring <literal>DelegatingVariableResolver</literal> is an integration "
+"point Spring provides for integrating Spring with JSF. This "
+"<literal>VariableResolver</literal> makes all Spring beans available in EL "
+"by their bean id. You&#39;ll need to add the "
+"<literal>DelegatingVariableResolver</literal> to <literal>faces-config.xml</"
+"literal>:"
+msgstr ""
+"Le <literal>DelegatingVariableResolver</literal> Spring est un point "
+"d'intégration que Spring fournit pour intégrer Spring dans JSF. Ce "
+"<literal>VariableResolver</literal> rend tous les beans Spring disponibles "
+"dans EL par leur id de bean. Il vous faudra ajouter "
+"le<literal>DelegatingVariableResolver</literal> au <literal>faces-config."
+"xml</literal> :"
+
+#. Tag: programlisting
+#: Spring.xml:96
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;variable-resolver&gt;\n"
+"        org.springframework.web.jsf.DelegatingVariableResolver\n"
+"    &lt;/variable-resolver&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+"&lt;application&gt;\n"
+"    &lt;variable-resolver&gt;\n"
+"        org.springframework.web.jsf.DelegatingVariableResolver\n"
+"    &lt;/variable-resolver&gt;\n"
+"&lt;/application&gt;"
+
+#. Tag: para
+#: Spring.xml:97
+#, no-c-format
+msgid "Then you can inject Spring beans using <literal>@In</literal>:"
+msgstr ""
+"Vous pouvez alors injecter les beans Spring en utilisant <literal>@In</"
+"literal> :"
+
+#. Tag: programlisting
+#: Spring.xml:100
+#, no-c-format
+msgid ""
+"@In(\"#{bookingService}\")\n"
+"private BookingService bookingService;"
+msgstr ""
+"@In(\"#{bookingService}\")\n"
+"private BookingService bookingService;"
+
+#. Tag: para
+#: Spring.xml:101
+#, no-c-format
+msgid ""
+"The use of Spring beans in EL is not limited to injection. Spring beans may "
+"be used anywhere that EL expressions are used in Seam: process and pageflow "
+"definitions, working memory assertions, etc..."
+msgstr ""
+"L'utilisation des beans Spring dans EL n'est pas limité à l'injection. Les "
+"beans Spring peuvent être utilisés partout où les expressions EL sont "
+"utilisées dans Seam : définitions de processus et flux de page, assertions "
+"de mémoire de travail, etc..."
+
+#. Tag: title
+#: Spring.xml:107
+#, no-c-format
+msgid "Making a Spring bean into a Seam component"
+msgstr "Changer un bean Spring en un composant Seam"
+
+#. Tag: para
+#: Spring.xml:108
+#, no-c-format
+msgid ""
+"The <literal>&lt;seam:component/&gt;</literal> namespace handler can be used "
+"to make any Spring bean a Seam component. Just place the <literal>&lt;seam:"
+"component/&gt;</literal> tag within the declaration of the bean that you "
+"wish to be a Seam component:"
+msgstr ""
+"Le gestionnaire d'espaces de noms <literal>&lt;seam:component/&gt;</literal> "
+"peut être utilisé pour faire d'un bean Spring un composant Seam. Placez "
+"simplement la balise <literal>&lt;seam:component/&gt;</literal> dans le "
+"déclaration du bean que vous souhaitez changer en composant Seam :"
+
+#. Tag: programlisting
+#: Spring.xml:111
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;seam:component/&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;seam:component/&gt;\n"
+"&lt;/bean&gt;"
+
+#. Tag: para
+#: Spring.xml:112
+#, fuzzy, no-c-format
+msgid ""
+"By default, <literal>&lt;seam:component/&gt;</literal> will create a "
+"<literal>STATELESS</literal> Seam component with class and name provided in "
+"the bean definition. Occasionally, such as when a <literal>FactoryBean</"
+"literal> is used, the class of the Spring bean may not be the class "
+"appearing in the bean definition. In such cases the <literal>class</literal> "
+"should be explicitly specified. A Seam component name may be explicitly "
+"specified in cases where there is potential for a naming conflict."
+msgstr ""
+"Par défaut, <literal>&lt;seam:component/&gt;</literal> créera un composant "
+"<literal>STATELESS</literal> Seam avec la classe et le nom fournis dans la "
+"définition du bean. Parfois, comme quand un <literal>FactoryBean</literal> "
+"est utilisé, la classe du bean Spring peut ne pas être la classe qui "
+"apparaît dans la définition du bean. Dans de tels cas, <literal>beanClass</"
+"literal> devrait être explicitement spécifié. Un nom de composant peut être "
+"explicitement spécifié dans les cas où il existe potentiellement un conflit "
+"de noms."
+
+#. Tag: para
+#: Spring.xml:115
+#, no-c-format
+msgid ""
+"The <literal>scope</literal> attribute of <literal>&lt;seam:component/&gt;</"
+"literal> may be used if you wish the Spring bean to be managed in a "
+"particular Seam scope. The Spring bean must be scoped to <literal>prototype</"
+"literal> if the Seam scope specified is anything other than "
+"<literal>STATELESS</literal>. Pre-existing Spring beans usually have a "
+"fundamentally stateless character, so this attribute is not usually needed."
+msgstr ""
+"L'attribut du <literal>scope</literal> de <literal>&lt;seam:component/&gt;</"
+"literal> peut être utilisé si vous souhaitez que le bean Spring soit géré "
+"dans un scope Seam particulier. Le bean Spring doit être scoped à "
+"<literal>prototype</literal> si l'étendue Seam spécifiée est autre chose que "
+"<literal>STATELESS</literal>. Des beans Spring pré-existants ont "
+"généralement un caractère fondamentalement stateless, par conséquent cet "
+"attribut n'est généralement pas nécessaire. "
+
+#. Tag: title
+#: Spring.xml:121
+#, no-c-format
+msgid "Seam-scoped Spring beans"
+msgstr "Beans Spring Seam-scoped "
+
+#. Tag: para
+#: Spring.xml:122
+#, fuzzy, no-c-format
+msgid ""
+"The Seam integration package also lets you use Seam&#39;s contexts as Spring "
+"2.0 style custom scopes. This lets you declare any Spring bean in any of "
+"Seam&#39;s contexts. However, note once again that Spring&#39;s component "
+"model was never architected to support statefulness, so please use this "
+"feature with great care. In particular, clustering of session or "
+"conversation scoped Spring beans is deeply problematic, and care must be "
+"taken when injecting a bean or component from a wider scope into a bean of a "
+"narrower scope."
+msgstr ""
+"Le paquetage d'intégration de Seam vous permet également d'utiliser les "
+"contextes de Seam, en tant qu'étendues personnalisées du style Spring 2.0. "
+"Cela vous permet de déclarer tout bean Spring dans n'importe quel contexte "
+"de Seam. Cependant, notez à nouveau que le modèle de composants de Spring "
+"n'a jamais été conçu pour supporter le statefulness, par conséquent veuillez "
+"utiliser cette fonction avec beaucoup de précaution. En particulier, la "
+"clusterisation de session ou les beans Spring, conversation scoped, est "
+"extrêmement problématique, et il est recommandé d'être prudent quand on "
+"injecte un bean ou un composant depuis une étendue plus vaste dans un bean "
+"avec une étendue plus étroite. "
+
+#. Tag: para
+#: Spring.xml:125
+#, no-c-format
+msgid ""
+"By specifying <literal>&lt;seam:configure-scopes/&gt;</literal> once in a "
+"Spring bean factory configuration, all of the Seam scopes will be available "
+"to Spring beans as custom scopes. To associate a Spring bean with a "
+"particular Seam scope, specify the Seam scope in the <literal>scope</"
+"literal> attribute of the bean definition."
+msgstr ""
+"Quand on spécifie <literal>&lt;seam:configure-scopes/&gt;</literal> une fois "
+"dans une configuration de fabrique de beans Spring, toutes les étendues Seam "
+"seront disponibles aux beans Spring en tant qu'étendues personnalisées. Pour "
+"associer un bean Spring avec une étendue Seam particulière, spécifiez "
+"l'étendue Seam dans l'attribut <literal>scope</literal> de la définition du "
+"bean."
+
+#. Tag: programlisting
+#: Spring.xml:128
+#, no-c-format
+msgid ""
+"&lt;!-- Only needs to be specified once per bean factory--&gt;\n"
+"&lt;seam:configure-scopes/&gt;\n"
+"\n"
+"...\n"
+"\n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope=\"seam."
+"CONVERSATION\"/&gt;"
+msgstr ""
+"&lt;!-- Only needs to be specified once per bean factory--&gt;\n"
+"&lt;seam:configure-scopes/&gt;\n"
+"\n"
+"...\n"
+"\n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope=\"seam."
+"CONVERSATION\"/&gt;"
+
+#. Tag: para
+#: Spring.xml:129
+#, no-c-format
+msgid ""
+"The prefix of the scope name may be changed by specifying the "
+"<literal>prefix</literal> attribute in the <literal>configure-scopes</"
+"literal> definition. (The default prefix is <literal>seam.</literal>)"
+msgstr ""
+"Le préfixe du nom de l'étendue peut être modifié en spécifiant l'attribut "
+"<literal>prefix</literal> dans la définition <literal>configure-scopes</"
+"literal>. (Le préfixe par défaut est <literal>seam.</literal>)"
+
+#. Tag: para
+#: Spring.xml:132
+#, no-c-format
+msgid ""
+"Seam-scoped Spring beans defined this way can be injected into other Spring "
+"beans without the use of <literal>&lt;seam:instance/&gt;</literal>. However, "
+"care must be taken to ensure scope impedance is maintained. The normal "
+"approach used in Spring is to specify <literal>&lt;aop:scoped-proxy/&gt;</"
+"literal> in the bean definition. However, Seam-scoped Spring beans are "
+"<emphasis>not</emphasis> compatible with <literal>&lt;aop:scoped-proxy/&gt;</"
+"literal>. So if you need to inject a Seam-scoped Spring bean into a "
+"singleton, <literal>&lt;seam:instance/&gt;</literal> must be used:"
+msgstr ""
+"Les beans Spring Seam-scoped définis de cette façon, peuvent être injectés "
+"dans les autres beans Spring sans utiliser <literal>&lt;seam:instance/&gt;</"
+"literal>. Toutefois, on doit s'assurer que l'impédance de l'étendue est "
+"maintenue. L'approche normale utilisée dans Spring est de spécifier "
+"<literal>&lt;aop:scoped-proxy/&gt;</literal> dans la définition du bean. "
+"Mais les beans Spring Seam-scoped ne sont <emphasis>pas</emphasis> "
+"compatibles avec <literal>&lt;aop:scoped-proxy/&gt;</literal>. Ainsi, si "
+"vous devez injecter un bean Spring Seam-scoped dans un singleton, "
+"<literal>&lt;seam:instance/&gt;</literal> doit être utilisé :"
+
+#. Tag: programlisting
+#: Spring.xml:135
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope=\"seam."
+"CONVERSATION\"/&gt;\n"
+"\n"
+"...\n"
+"\n"
+"&lt;bean id=\"someSingleton\"&gt;\n"
+"    &lt;property name=\"someSeamScopedSpringBean\"&gt;\n"
+"        &lt;seam:instance name=\"someSpringBean\" proxy=\"true\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope=\"seam."
+"CONVERSATION\"/&gt;\n"
+"\n"
+"...\n"
+"\n"
+"&lt;bean id=\"someSingleton\"&gt;\n"
+"    &lt;property name=\"someSeamScopedSpringBean\"&gt;\n"
+"        &lt;seam:instance name=\"someSpringBean\" proxy=\"true\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+
+#. Tag: title
+#: Spring.xml:139
+#, fuzzy, no-c-format
+msgid "Spring Application Context as a Seam Component"
+msgstr "Changer un bean Spring en un composant Seam"
+
+#. Tag: para
+#: Spring.xml:140
+#, no-c-format
+msgid ""
+"Although it is possible to use the Spring <literal>ContextLoaderListener</"
+"literal> to start your application&#39;s Spring ApplicationContext there are "
+"a couple of limitations."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:145
+#, no-c-format
+msgid ""
+"the Spring ApplicationContext must be started <emphasis>after</emphasis> the "
+"<literal>SeamListener</literal>"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:150
+#, no-c-format
+msgid ""
+"it can be tricky starting a Spring ApplicationContext for use in Seam unit "
+"and integration tests"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:155
+#, no-c-format
+msgid ""
+"To overcome these two limitations the Spring integration includes a Seam "
+"component that will start a Spring ApplicationContext. To use this Seam "
+"component place the <literal>&lt;spring:context-loader/&gt;</literal> "
+"definition in the <literal>components.xml</literal>. Specify your Spring "
+"context file location in the <literal>config-locations</literal> attribute. "
+"If more than one config file is needed you can place them in the nested "
+"<literal>&lt;spring:config-locations/&gt;</literal> element following "
+"standard <literal>components.xml</literal> multi value practices."
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:158
+#, fuzzy, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:spring=\"http://jboss.com/products/seam/spring\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"http://jboss.com/products/seam/components "
+"http://jboss.com/products/seam/components-1.2.xsd\n"
+"                                http://jboss.com/products/seam/spring http://"
+"jboss.com/products/seam/spring-1.2.xsd\"&gt;\n"
+"\n"
+"        &lt;spring:context-loader context-locations=\"/WEB-INF/"
+"applicationContext.xml\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;beans xmlns=\"http://www.springframework.org/schema/beans\"\n"
+"    xmlns:seam=\"http://jboss.com/products/seam/spring\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://www.springframework.org/schema/beans \n"
+"                        http://www.springframework.org/schema/beans/spring-"
+"beans-2.0.xsd\n"
+"                        http://jboss.com/products/seam/spring \n"
+"                        http://jboss.com/products/seam/spring-1.2.xsd\"&gt;"

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Testing.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Testing.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Testing.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,613 @@
+# translation of Testing.po to french
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# myriam malga <mmalga at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Testing\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2007-08-07 12:01+1000\n"
+"Last-Translator: myriam malga <mmalga at redhat.com>\n"
+"Language-Team: french\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Testing.xml:6
+#, no-c-format
+msgid "Testing Seam applications"
+msgstr "Tester les applications Seam "
+
+#. Tag: para
+#: Testing.xml:7
+#, no-c-format
+msgid ""
+"Most Seam applications will need at least two kinds of automated tests: "
+"<emphasis>unit tests</emphasis>, which test a particular Seam component in "
+"isolation, and scripted <emphasis>integration tests</emphasis> which "
+"exercise all Java layers of the application (that is, everything except the "
+"view pages)."
+msgstr ""
+"La plupart des applications Seam nécessiteront au moins deux sortes de tests "
+"automatisés : les <emphasis>tests unitaires</emphasis>, qui testent un "
+"composant Seam particulier en isolation, et les <emphasis>tests "
+"d'intégration</emphasis> scriptés qui testent toutes les couches Java de "
+"l'application (c'est-à-dire tout sauf les pages d'affichage)."
+
+#. Tag: para
+#: Testing.xml:10
+#, no-c-format
+msgid "Both kinds of tests are very easy to write."
+msgstr "Ces deux types de tests sont très faciles à écrire."
+
+#. Tag: title
+#: Testing.xml:14
+#, no-c-format
+msgid "Unit testing Seam components"
+msgstr "Tests unitaires sur les composants Seam "
+
+#. Tag: para
+#: Testing.xml:15
+#, fuzzy, no-c-format
+msgid ""
+"All Seam components are POJOs. This is a great place to start if you want "
+"easy unit testing. And since Seam emphasises the use of bijection for inter-"
+"component interactions and access to contextual objects, it&#39;s very easy "
+"to test a Seam component outside of its normal runtime environment."
+msgstr ""
+"Tous les composants Seam sont des POJO. C'est un bon commencement si vous "
+"désirez effectuer des tests unitaires faciles. Et comme Seam insiste sur "
+"l'utilisation de la bijection pour les interactions entre composants et "
+"l'accès aux objets contextuels, il est très facile de tester un composant "
+"Seam, hors de son environnement d'exécution normal."
+
+#. Tag: para
+#: Testing.xml:18
+#, no-c-format
+msgid "Consider the following Seam component:"
+msgstr "Considérez le composant Seam suivant :"
+
+#. Tag: programlisting
+#: Testing.xml:21
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Scope(EVENT)\n"
+"@Name(\"register\")\n"
+"public class RegisterAction implements Register\n"
+"{\n"
+"   private User user;\n"
+"   private EntityManager em;\n"
+"\n"
+"   @In\n"
+"   public void setUser(User user) {\n"
+"       this.user = user;\n"
+"   }\n"
+"   \n"
+"   @PersistenceContext\n"
+"   public void setBookingDatabase(EntityManager em) {\n"
+"       this.em = em;\n"
+"   }\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = em.createQuery(\"select username from User where "
+"username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getResultList();\n"
+"      if (existing.size()==0)\n"
+"      {\n"
+"         em.persist(user);\n"
+"         return \"success\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+"@Stateless\n"
+"@Scope(EVENT)\n"
+"@Name(\"register\")\n"
+"public class RegisterAction implements Register\n"
+"{\n"
+"   private User user;\n"
+"   private EntityManager em;\n"
+"\n"
+"   @In\n"
+"   public void setUser(User user) {\n"
+"       this.user = user;\n"
+"   }\n"
+"   \n"
+"   @PersistenceContext\n"
+"   public void setBookingDatabase(EntityManager em) {\n"
+"       this.em = em;\n"
+"   }\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = em.createQuery(\"select username from User where "
+"username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getResultList();\n"
+"      if (existing.size()==0)\n"
+"      {\n"
+"         em.persist(user);\n"
+"         return \"success\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+
+#. Tag: para
+#: Testing.xml:22
+#, no-c-format
+msgid "We could write a TestNG test for this component as follows:"
+msgstr "Nous pourrions écrire un test TestNG pour ce composant comme suit :"
+
+#. Tag: programlisting
+#: Testing.xml:25
+#, no-c-format
+msgid ""
+"public class RegisterActionTest\n"
+"{\n"
+"\n"
+"    @Test\n"
+"    public testRegisterAction()\n"
+"    {\n"
+"        EntityManager em = getEntityManagerFactory().createEntityManager();\n"
+"        em.getTransaction().begin();\n"
+"        \n"
+"        User gavin = new User();\n"
+"        gavin.setName(\"Gavin King\");\n"
+"        gavin.setUserName(\"1ovthafew\");\n"
+"        gavin.setPassword(\"secret\");\n"
+"        \n"
+"        RegisterAction action = new RegisterAction();\n"
+"        action.setUser(gavin);\n"
+"        action.setBookingDatabase(em);\n"
+"        \n"
+"        assert \"success\".equals( action.register() );\n"
+"        \n"
+"        em.getTransaction().commit();\n"
+"        em.close();\n"
+"    }\n"
+"    \n"
+"    \n"
+"    private EntityManagerFactory emf;\n"
+"    \n"
+"    public EntityManagerFactory getEntityManagerFactory()\n"
+"    {\n"
+"        return emf;\n"
+"    }\n"
+"    \n"
+"    @Configuration(beforeTestClass=true)\n"
+"    public void init() \n"
+"    {\n"
+"        emf = Persistence.createEntityManagerFactory"
+"(\"myResourceLocalEntityManager\");\n"
+"    }\n"
+"    \n"
+"    @Configuration(afterTestClass=true)\n"
+"    public void destroy()\n"
+"    {\n"
+"        emf.close();\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+"public class RegisterActionTest\n"
+"{\n"
+"\n"
+"    @Test\n"
+"    public testRegisterAction()\n"
+"    {\n"
+"        EntityManager em = getEntityManagerFactory().createEntityManager();\n"
+"        em.getTransaction().begin();\n"
+"        \n"
+"        User gavin = new User();\n"
+"        gavin.setName(\"Gavin King\");\n"
+"        gavin.setUserName(\"1ovthafew\");\n"
+"        gavin.setPassword(\"secret\");\n"
+"        \n"
+"        RegisterAction action = new RegisterAction();\n"
+"        action.setUser(gavin);\n"
+"        action.setBookingDatabase(em);\n"
+"        \n"
+"        assert \"success\".equals( action.register() );\n"
+"        \n"
+"        em.getTransaction().commit();\n"
+"        em.close();\n"
+"    }\n"
+"    \n"
+"    \n"
+"    private EntityManagerFactory emf;\n"
+"    \n"
+"    public EntityManagerFactory getEntityManagerFactory()\n"
+"    {\n"
+"        return emf;\n"
+"    }\n"
+"    \n"
+"    @Configuration(beforeTestClass=true)\n"
+"    public void init() \n"
+"    {\n"
+"        emf = Persistence.createEntityManagerFactory"
+"(\"myResourceLocalEntityManager\");\n"
+"    }\n"
+"    \n"
+"    @Configuration(afterTestClass=true)\n"
+"    public void destroy()\n"
+"    {\n"
+"        emf.close();\n"
+"    }\n"
+"    \n"
+"}"
+
+#. Tag: para
+#: Testing.xml:26
+#, fuzzy, no-c-format
+msgid ""
+"Seam components don&#39;t usually depend directly upon container "
+"infrastructure, so most unit testing as as easy as that!"
+msgstr ""
+"Les composants Seam ne dépendent généralement pas directement de "
+"l'infrastructure du conteneur, par conséquent la plupart des tests unitaires "
+"sont faciles !"
+
+#. Tag: title
+#: Testing.xml:32
+#, no-c-format
+msgid "Integration testing Seam applications"
+msgstr "Tests d'intégration sur les applications Seam "
+
+#. Tag: para
+#: Testing.xml:33
+#, fuzzy, no-c-format
+msgid ""
+"Integration testing is slightly more difficult. In this case, we can&#39;t "
+"eliminate the container infrastructure; indeed, that is part of what is "
+"being tested! At the same time, we don&#39;t want to be forced to deploy our "
+"application to an application server to run the automated tests. We need to "
+"be able to reproduce just enough of the container infrastructure inside our "
+"testing environment to be able to exercise the whole application, without "
+"hurting performance too much."
+msgstr ""
+"Les tests d'intégration sont un peu plus difficiles. Dans ce cas, nous ne "
+"pouvons éliminer l'infrastructure du conteneur, car elle fait partie de ce "
+"qui est testé ! Par contre, nous ne voulons pas être forcé de déployer notre "
+"application à un serveur d'applications pour exécuter les tests automatisés. "
+"Nous devons être en mesure de reproduire une partie suffisamment grande de "
+"l'infrastructure du conteneur à l'intérieur de notre environnement de test "
+"pour arriver à tester toute l'application, sans affecter de trop la "
+"performance. "
+
+#. Tag: para
+#: Testing.xml:36
+#, no-c-format
+msgid ""
+"A second problem is emulating user interactions. A third problem is where to "
+"put our assertions. Some test frameworks let us test the whole application "
+"by reproducing user interactions with the web browser. These frameworks have "
+"their place, but they are not appropriate for use at development time."
+msgstr ""
+"Un second problème est l'émulation des interactions d'utilisateur. Un "
+"troisième problème est de savoir où placer nos assertions. Quelques "
+"frameworks de test nous permettent de tester l'application dans sa totalité "
+"en reproduisant les interactions d'utilisateur avec le navigateur web. Ces "
+"frameworks ont leur place, mais ils ne sont pas appropriés pour une "
+"utilisation lors du développement."
+
+#. Tag: para
+#: Testing.xml:39
+#, no-c-format
+msgid ""
+"The approach taken by Seam is to let you write tests that script your "
+"components while running inside a pruned down container environment (Seam, "
+"together with the JBoss Embeddable EJB container). The role of the test "
+"script is basically to reproduce the interaction between the view and the "
+"Seam components. In other words, you get to pretend you are the JSF "
+"implementation!"
+msgstr ""
+"L'approche de Seam est de vous permettre d'écrire des tests qui scriptent "
+"vos composants alors que qu'ils exécutent dans un environnement de conteneur "
+"réduit (Seam, avec le conteneur EJB imbriquable de JBoss). Le rôle du script "
+"de test est principalement de reproduire l'interaction entre l'affichage et "
+"les composants Seam. En d'autres termes, vous prétendrez être "
+"l'implémentation JSF !"
+
+#. Tag: para
+#: Testing.xml:42
+#, no-c-format
+msgid "This approach tests everything except the view."
+msgstr "Cette approche teste tout, excepté l'affichage."
+
+#. Tag: para
+#: Testing.xml:45
+#, fuzzy, no-c-format
+msgid "Let&#39;s consider a JSP view for the component we unit tested above:"
+msgstr ""
+"Considérons un affichage JSP pour le composant sur lequel nous avons "
+"effectué le test unitaire ci-dessus :"
+
+#. Tag: programlisting
+#: Testing.xml:48
+#, no-c-format
+msgid ""
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Register New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;table border=\"0\"&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Username&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputText value=\"#{user.username}\"/&gt;&lt;/"
+"td&gt;\n"
+"       &lt;/tr&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Real Name&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputText value=\"#{user.name}\"/&gt;&lt;/td&gt;\n"
+"       &lt;/tr&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Password&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputSecret value=\"#{user.password}\"/&gt;&lt;/"
+"td&gt;\n"
+"       &lt;/tr&gt;\n"
+"     &lt;/table&gt;\n"
+"     &lt;h:messages/&gt;\n"
+"     &lt;h:commandButton type=\"submit\" value=\"Register\" action=\"#"
+"{register.register}\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Register New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;table border=\"0\"&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Username&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputText value=\"#{user.username}\"/&gt;&lt;/"
+"td&gt;\n"
+"       &lt;/tr&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Real Name&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputText value=\"#{user.name}\"/&gt;&lt;/td&gt;\n"
+"       &lt;/tr&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Password&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputSecret value=\"#{user.password}\"/&gt;&lt;/"
+"td&gt;\n"
+"       &lt;/tr&gt;\n"
+"     &lt;/table&gt;\n"
+"     &lt;h:messages/&gt;\n"
+"     &lt;h:commandButton type=\"submit\" value=\"Register\" action=\"#"
+"{register.register}\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+
+#. Tag: para
+#: Testing.xml:49
+#, fuzzy, no-c-format
+msgid ""
+"We want to test the registration functionality of our application (the stuff "
+"that happens when the user clicks the Register button). We&#39;ll reproduce "
+"the JSF request lifecycle in an automated TestNG test:"
+msgstr ""
+"Nous désirons tester la fonctionnalité d'enregistrement de votre application "
+"(ce qui arrive quand l'utilisateur appuye sur le bouton Enregistrer). Nous "
+"reproduirons le cycle de vie de la requête dans un test automatisé TestNG :"
+
+#. Tag: programlisting
+#: Testing.xml:52
+#, no-c-format
+msgid ""
+"public class RegisterTest extends SeamTest\n"
+"{\n"
+"   \n"
+"   @Test\n"
+"   public void testRegister() throws Exception\n"
+"   {\n"
+"            \n"
+"      new FacesRequest() {\n"
+"\n"
+"         @Override\n"
+"         protected void processValidations() throws Exception\n"
+"         {\n"
+"            validateValue(\"#{user.username}\", \"1ovthafew\");\n"
+"            validateValue(\"#{user.name}\", \"Gavin King\");\n"
+"            validateValue(\"#{user.password}\", \"secret\");\n"
+"            assert !isValidationFailure();\n"
+"         }\n"
+"         \n"
+"         @Override\n"
+"         protected void updateModelValues() throws Exception\n"
+"         {\n"
+"            setValue(\"#{user.username}\", \"1ovthafew\");\n"
+"            setValue(\"#{user.name}\", \"Gavin King\");\n"
+"            setValue(\"#{user.password}\", \"secret\");\n"
+"         }\n"
+"\n"
+"         @Override\n"
+"         protected void invokeApplication()\n"
+"         {\n"
+"            assert invokeMethod(\"#{register.register}\").equals(\"success"
+"\");\n"
+"         }\n"
+"\n"
+"         @Override\n"
+"         protected void renderResponse()\n"
+"         {\n"
+"            assert getValue(\"#{user.username}\").equals(\"1ovthafew\");\n"
+"            assert getValue(\"#{user.name}\").equals(\"Gavin King\");\n"
+"            assert getValue(\"#{user.password}\").equals(\"secret\");\n"
+"         }\n"
+"         \n"
+"      }.run();\n"
+"      \n"
+"   }\n"
+"\n"
+"   ...\n"
+"   \n"
+"}"
+msgstr ""
+"public class RegisterTest extends SeamTest\n"
+"{\n"
+"   \n"
+"   @Test\n"
+"   public void testRegister() throws Exception\n"
+"   {\n"
+"            \n"
+"      new FacesRequest() {\n"
+"\n"
+"         @Override\n"
+"         protected void processValidations() throws Exception\n"
+"         {\n"
+"            validateValue(\"#{user.username}\", \"1ovthafew\");\n"
+"            validateValue(\"#{user.name}\", \"Gavin King\");\n"
+"            validateValue(\"#{user.password}\", \"secret\");\n"
+"            assert !isValidationFailure();\n"
+"         }\n"
+"         \n"
+"         @Override\n"
+"         protected void updateModelValues() throws Exception\n"
+"         {\n"
+"            setValue(\"#{user.username}\", \"1ovthafew\");\n"
+"            setValue(\"#{user.name}\", \"Gavin King\");\n"
+"            setValue(\"#{user.password}\", \"secret\");\n"
+"         }\n"
+"\n"
+"         @Override\n"
+"         protected void invokeApplication()\n"
+"         {\n"
+"            assert invokeMethod(\"#{register.register}\").equals(\"success"
+"\");\n"
+"         }\n"
+"\n"
+"         @Override\n"
+"         protected void renderResponse()\n"
+"         {\n"
+"            assert getValue(\"#{user.username}\").equals(\"1ovthafew\");\n"
+"            assert getValue(\"#{user.name}\").equals(\"Gavin King\");\n"
+"            assert getValue(\"#{user.password}\").equals(\"secret\");\n"
+"         }\n"
+"         \n"
+"      }.run();\n"
+"      \n"
+"   }\n"
+"\n"
+"   ...\n"
+"   \n"
+"}"
+
+#. Tag: para
+#: Testing.xml:53
+#, fuzzy, no-c-format
+msgid ""
+"Notice that we&#39;ve extended <literal>SeamTest</literal>, which provides a "
+"Seam environment for our components, and written our test script as an "
+"anonymous class that extends <literal>SeamTest.FacesRequest</literal>, which "
+"provides an emulated JSF request lifecycle. (There is also a "
+"<literal>SeamTest.NonFacesRequest</literal> for testing GET requests.) "
+"We&#39;ve written our code in methods which are named for the various JSF "
+"phases, to emulate the calls that JSF would make to our components. Then "
+"we&#39;ve thrown in various assertions."
+msgstr ""
+"Notez que nous avons étendu <literal>SeamTest</literal>, qui fournit un "
+"environnement Seam à nos composants, et nous avons écrit nos scripts de test "
+"en tant que classe anonyme qui étend <literal>SeamTest.FacesRequest</"
+"literal>, qui fournit une émulation de cycle de vie de la requête JSF.(Il y "
+"a également <literal>SeamTest.NonFacesRequest</literal> pour tester les "
+"requêtes GET.) Nous avons écrit notre code dans des méthodes qui sont "
+"nommées pour les différentes phases JSF, afin d'émuler les appels que JSF "
+"effectuerait vers nos composants. Ensuite nous avons ajouté quelques "
+"assertions. "
+
+#. Tag: para
+#: Testing.xml:56
+#, fuzzy, no-c-format
+msgid ""
+"You&#39;ll find plenty of integration tests for the Seam example "
+"applications which demonstrate more complex cases. There are instructions "
+"for running these tests using Ant, or using the TestNG plugin for eclipse:"
+msgstr ""
+"Vous trouverez de nombreux tests d'intégration pour les exemples "
+"d'application qui illustrent des cas plus complexes. Il y a des instructions "
+"pour exécuter ces tests en utilisant Ant, ou en utilisant le plugin TestNG "
+"pour Eclipse :"
+
+#. Tag: title
+#: Testing.xml:68
+#, no-c-format
+msgid "Using mocks in integration tests"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:69
+#, no-c-format
+msgid ""
+"Occasionally, we need to be able to replace the implementation of some Seam "
+"component that depends upon resources which are not available in the "
+"integration test environment. For example, suppose we have some Seam "
+"component which is a facade to some payment processing system:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:72
+#, no-c-format
+msgid ""
+"@Name(\"paymentProcessor\")\n"
+"public class PaymentProcessor {\n"
+"    public boolean processPayment(Payment payment) { .... }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:73
+#, fuzzy, no-c-format
+msgid "For integration tests, we can mock out this component as follows:"
+msgstr "Nous pourrions écrire un test TestNG pour ce composant comme suit :"
+
+#. Tag: programlisting
+#: Testing.xml:76
+#, no-c-format
+msgid ""
+"@Name(\"paymentProcessor\")\n"
+"@Install(precedence=MOCK)\n"
+"public class MockPaymentProcessor extends PaymentProcessor {\n"
+"    public void processPayment(Payment payment) {\n"
+"        return true;\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:77
+#, no-c-format
+msgid ""
+"Since the <literal>MOCK</literal> precedence is higher than the default "
+"precedence of application components, Seam will install the mock "
+"implementation whenever it is in the classpath. When deployed into "
+"production, the mock implementation is absent, so the real component will be "
+"installed."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Text.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Text.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Text.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,513 @@
+# translation of Text.po to french
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# myriam malga <mmalga at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Text\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2007-08-07 12:06+1000\n"
+"Last-Translator: myriam malga <mmalga at redhat.com>\n"
+"Language-Team: french\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Text.xml:6
+#, no-c-format
+msgid "Seam Text"
+msgstr "Texte Seam "
+
+#. Tag: para
+#: Text.xml:7
+#, fuzzy, no-c-format
+msgid ""
+"Collaboration-oriented websites require a human-friendly markup language for "
+"easy entry of formatted text in forum posts, wiki pages, blogs, comments, "
+"etc. Seam provides the <literal>&lt;s:formattedText/&gt;</literal> control "
+"for display of formatted text that conforms to the <emphasis>Seam Text</"
+"emphasis> language. Seam Text is implemented using an ANTLR-based parser. "
+"You don&#39;t need to know anything about ANTLR to use it, however."
+msgstr ""
+"Les sites web orientés collaboration requièrent un langage de marquage "
+"facilement lisible pour des entrées faciles de texte formaté dans les forum "
+"posts, pages wiki, blogues, commentaires, etc. Seam fournit le contrôle "
+"<literal>&lt;s:formattedText/&gt;</literal> pour l'affichage de texte "
+"formaté, conforme au langage <emphasis>Texte Seam</emphasis>. Le Texte Seam "
+"est implémenté en utilisant un parseur, basé sur ANTLR. Toutefois, vous ne "
+"devez connaître ANTLR pour l'utiliser."
+
+#. Tag: title
+#: Text.xml:11
+#, no-c-format
+msgid "Basic fomatting"
+msgstr "Formatage de base"
+
+#. Tag: para
+#: Text.xml:12
+#, no-c-format
+msgid "Here is a simple example:"
+msgstr "Voici un exemple simple :"
+
+#. Tag: programlisting
+#: Text.xml:15
+#, fuzzy, no-c-format
+msgid ""
+"It&#39;s easy to make *bold text*, /italic text/, |monospace|, \n"
+"~deleted text~, super^scripts^ or _underlines_."
+msgstr ""
+"It's easy to make *bold text*, /italic text/, |monospace|, \n"
+"~deleted text~, super^scripts^ or _underlines_."
+
+#. Tag: para
+#: Text.xml:16
+#, no-c-format
+msgid ""
+"If we display this using <literal>&lt;s:formattedText/&gt;</literal>, we "
+"will get the following HTML produced:"
+msgstr ""
+"Si nous affichons cela en utilisant <literal>&lt;s:formattedText/&gt;</"
+"literal>, nous obtiendrons le HTML suivant :"
+
+#. Tag: programlisting
+#: Text.xml:19
+#, fuzzy, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"It&#39;s easy to make &lt;b&gt;bold text&lt;/b&gt;, &lt;i&gt;italic text&lt;/"
+"i&gt;, &lt;tt&gt;monospace&lt;/tt&gt;\n"
+"&lt;del&gt;deleted text&lt;/del&gt;, super&lt;sup&gt;scripts&lt;/sup&gt; or "
+"&lt;u&gt;underlines&lt;/u&gt;.\n"
+"&lt;/p&gt;"
+msgstr ""
+"&lt;p&gt;\n"
+"It's easy to make &lt;b&gt;bold text&lt;/b&gt;, &lt;i&gt;italic text&lt;/"
+"i&gt;, &lt;tt&gt;monospace&lt;/tt&gt;\n"
+"&lt;del&gt;deleted text&lt;/del&gt;, super&lt;sup&gt;scripts&lt;/sup&gt; or "
+"&lt;u&gt;underlines&lt;/u&gt;.\n"
+"&lt;/p&gt;"
+
+#. Tag: para
+#: Text.xml:20
+#, no-c-format
+msgid ""
+"We can use a blank line to indicate a new paragraph, and <literal>+</"
+"literal> to indicate a heading:"
+msgstr ""
+"Nous pouvons utiliser une ligne vierge pour indiquer un nouveau paragraphe, "
+"et <literal>+</literal> pour indiquer un titre :"
+
+#. Tag: programlisting
+#: Text.xml:23
+#, no-c-format
+msgid ""
+"+This is a big heading\n"
+"You /must/ have some text following a heading!\n"
+" \n"
+"++This is a smaller heading\n"
+"This is the first paragraph. We can split it across multiple \n"
+"lines, but we must end it with a blank line.\n"
+"\n"
+"This is the second paragraph."
+msgstr ""
+"+This is a big heading\n"
+"You /must/ have some text following a heading!\n"
+" \n"
+"++This is a smaller heading\n"
+"This is the first paragraph. We can split it across multiple \n"
+"lines, but we must end it with a blank line.\n"
+"\n"
+"This is the second paragraph."
+
+#. Tag: para
+#: Text.xml:24
+#, no-c-format
+msgid ""
+"(Note that a simple newline is ignored, you need an additional blank line to "
+"wrap text into a new paragraph.) This is the HTML that results:"
+msgstr ""
+"(Notez qu'une nouvelle ligne simple est ignorée, il vous faut une ligne "
+"vierge supplémentaire pour envelopper le texte dans un nouveau paragraphe.) "
+"Voici l'HTML qui en résulte :"
+
+#. Tag: programlisting
+#: Text.xml:27
+#, no-c-format
+msgid ""
+"&lt;h1&gt;This is a big heading&lt;/h1&gt;\n"
+"&lt;p&gt;\n"
+"You &lt;i&gt;must&lt;/i&gt; have some text following a heading!\n"
+"&lt;/p&gt;\n"
+" \n"
+"&lt;h2&gt;This is a smaller heading&lt;/h2&gt;\n"
+"&lt;p&gt;\n"
+"This is the first paragraph. We can split it across multiple \n"
+"lines, but we must end it with a blank line.\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"This is the second paragraph.\n"
+"&lt;/p&gt;"
+msgstr ""
+"&lt;h1&gt;This is a big heading&lt;/h1&gt;\n"
+"&lt;p&gt;\n"
+"You &lt;i&gt;must&lt;/i&gt; have some text following a heading!\n"
+"&lt;/p&gt;\n"
+" \n"
+"&lt;h2&gt;This is a smaller heading&lt;/h2&gt;\n"
+"&lt;p&gt;\n"
+"This is the first paragraph. We can split it across multiple \n"
+"lines, but we must end it with a blank line.\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"This is the second paragraph.\n"
+"&lt;/p&gt;"
+
+#. Tag: para
+#: Text.xml:28
+#, no-c-format
+msgid ""
+"Ordered lists are created using the <literal>#</literal> character. "
+"Unordered lists use the <literal>=</literal> character:"
+msgstr ""
+"Des listes ordonnées sont créées en utilisant le caractère <literal>#</"
+"literal>. Les listes non ordonnées utilisent le caractère <literal>=</"
+"literal> :"
+
+#. Tag: programlisting
+#: Text.xml:31
+#, no-c-format
+msgid ""
+"An ordered list:\n"
+"        \n"
+"#first item\n"
+"#second item\n"
+"#and even the /third/ item\n"
+"\n"
+"An unordered list:\n"
+"\n"
+"=an item\n"
+"=another item"
+msgstr ""
+"An ordered list:\n"
+"        \n"
+"#first item\n"
+"#second item\n"
+"#and even the /third/ item\n"
+"\n"
+"An unordered list:\n"
+"\n"
+"=an item\n"
+"=another item"
+
+#. Tag: programlisting
+#: Text.xml:32
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"An ordered list:\n"
+"&lt;/p&gt;\n"
+" \n"
+"&lt;ol&gt;       \n"
+"&lt;li&gt;first item&lt;/li&gt;\n"
+"&lt;li&gt;second item&lt;/li&gt;\n"
+"&lt;li&gt;and even the &lt;i&gt;third&lt;/i&gt; item&lt;/li&gt;\n"
+"&lt;/ol&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"An unordered list:\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;ul&gt;\n"
+"&lt;li&gt;an item&lt;/li&gt;\n"
+"&lt;li&gt;another item&lt;/li&gt;\n"
+"&lt;/ul&gt;"
+msgstr ""
+"&lt;p&gt;\n"
+"An ordered list:\n"
+"&lt;/p&gt;\n"
+" \n"
+"&lt;ol&gt;       \n"
+"&lt;li&gt;first item&lt;/li&gt;\n"
+"&lt;li&gt;second item&lt;/li&gt;\n"
+"&lt;li&gt;and even the &lt;i&gt;third&lt;/i&gt; item&lt;/li&gt;\n"
+"&lt;/ol&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"An unordered list:\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;ul&gt;\n"
+"&lt;li&gt;an item&lt;/li&gt;\n"
+"&lt;li&gt;another item&lt;/li&gt;\n"
+"&lt;/ul&gt;"
+
+#. Tag: para
+#: Text.xml:33
+#, no-c-format
+msgid "Quoted sections should be surrounded in double quotes:"
+msgstr "Les sections citées devraient être entourées de guillemets doubles :"
+
+#. Tag: programlisting
+#: Text.xml:36
+#, no-c-format
+msgid ""
+"The other guy said:\n"
+"        \n"
+"\"Nyeah nyeah-nee \n"
+"/nyeah/ nyeah!\"\n"
+"\n"
+"But what do you think he means by \"nyeah-nee\"?"
+msgstr ""
+"The other guy said:\n"
+"        \n"
+"\"Nyeah nyeah-nee \n"
+"/nyeah/ nyeah!\"\n"
+"\n"
+"But what do you think he means by \"nyeah-nee\"?"
+
+#. Tag: programlisting
+#: Text.xml:37
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"The other guy said:\n"
+"&lt;/p&gt;\n"
+"        \n"
+"&lt;q&gt;Nyeah nyeah-nee\n"
+"&lt;i&gt;nyeah&lt;/i&gt; nyeah!&lt;/q&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"But what do you think he means by &lt;q&gt;nyeah-nee&lt;/q&gt;?\n"
+"&lt;/p&gt;"
+msgstr ""
+"&lt;p&gt;\n"
+"The other guy said:\n"
+"&lt;/p&gt;\n"
+"        \n"
+"&lt;q&gt;Nyeah nyeah-nee\n"
+"&lt;i&gt;nyeah&lt;/i&gt; nyeah!&lt;/q&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"But what do you think he means by &lt;q&gt;nyeah-nee&lt;/q&gt;?\n"
+"&lt;/p&gt;"
+
+#. Tag: title
+#: Text.xml:41
+#, no-c-format
+msgid "Entering code and text with special characters"
+msgstr "Entrer du code et du texte avec des caractères particuliers"
+
+#. Tag: para
+#: Text.xml:42
+#, fuzzy, no-c-format
+msgid ""
+"Special characters such as <literal>*</literal>, <literal>|</literal> and "
+"<literal>#</literal>, along with HTML characters such as <literal>&lt;</"
+"literal>, <literal>&gt;</literal> and <literal>&amp;</literal> may be "
+"escaped using <literal>\\</literal>:"
+msgstr ""
+"Des caractères particuliers comme <literal>*</literal>, <literal>|</literal> "
+"et <literal>#</literal>, de même que les caractères HTML comme <literal>&lt;"
+"</literal>, <literal>&gt;</literal> et <literal>&amp;</literal> peuvent être "
+"échappés en utilisant <literal>&#92;</literal> :"
+
+#. Tag: programlisting
+#: Text.xml:45
+#, fuzzy, no-c-format
+msgid ""
+"You can write down equations like 2\\*3\\=6 and HTML tags\n"
+"like \\&lt;body\\&gt; using the escape character: \\\\."
+msgstr ""
+"&lt;p&gt;\n"
+"You can write down equations like 2*3=6 and HTML tags\n"
+"like &lt;body&gt; using the escape character: &#92;.\n"
+"&lt;/p&gt;"
+
+#. Tag: programlisting
+#: Text.xml:46
+#, fuzzy, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"You can write down equations like 2*3=6 and HTML tags\n"
+"like &lt;body&gt; using the escape character: \\.\n"
+"&lt;/p&gt;"
+msgstr ""
+"&lt;p&gt;\n"
+"You can write down equations like 2*3=6 and HTML tags\n"
+"like &lt;body&gt; using the escape character: &#92;.\n"
+"&lt;/p&gt;"
+
+#. Tag: para
+#: Text.xml:47
+#, no-c-format
+msgid "And we can quote code blocks using backticks:"
+msgstr ""
+"Et nous pouvons citer des blocs de code en utilisant des guillemets "
+"obliques :"
+
+#. Tag: programlisting
+#: Text.xml:50
+#, fuzzy, no-c-format
+msgid ""
+"My code doesn&#39;t work:\n"
+"\n"
+"`for (int i=0; i&lt;100; i--)\n"
+"{\n"
+"    doSomething();\n"
+"}`\n"
+"\n"
+"Any ideas?"
+msgstr ""
+"My code doesn't work:\n"
+"\n"
+"`for (int i=0; i&lt;100; i--)\n"
+"{\n"
+"    doSomething();\n"
+"}`\n"
+"\n"
+"Any ideas?"
+
+#. Tag: programlisting
+#: Text.xml:51
+#, fuzzy, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"My code doesn&#39;t work:\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;pre&gt;for (int i=0; i&lt;100; i--)\n"
+"{\n"
+"    doSomething();\n"
+"}&lt;/pre&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"Any ideas?\n"
+"&lt;/p&gt;"
+msgstr ""
+"&lt;p&gt;\n"
+"My code doesn't work:\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;pre&gt;for (int i=0; i&lt;100; i--)\n"
+"{\n"
+"    doSomething();\n"
+"}&lt;/pre&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"Any ideas?\n"
+"&lt;/p&gt;"
+
+#. Tag: title
+#: Text.xml:55
+#, no-c-format
+msgid "Links"
+msgstr "Liens"
+
+#. Tag: para
+#: Text.xml:56
+#, no-c-format
+msgid "A link may be created using the following syntax:"
+msgstr "Un lien peut être créé en utilisant la syntaxe suivante :"
+
+#. Tag: programlisting
+#: Text.xml:59
+#, no-c-format
+msgid "Go to the Seam website at [=&gt;http://jboss.com/products/seam]."
+msgstr "Go to the Seam website at [=&gt;http://jboss.com/products/seam]."
+
+#. Tag: para
+#: Text.xml:60
+#, no-c-format
+msgid "Or, if you want to specify the text of the link:"
+msgstr "Ou, si vous souhaitez spécifier le texte du lien :"
+
+#. Tag: programlisting
+#: Text.xml:63
+#, no-c-format
+msgid "Go to [the Seam website=&gt;http://jboss.com/products/seam]."
+msgstr "Go to [the Seam website=&gt;http://jboss.com/products/seam]."
+
+#. Tag: para
+#: Text.xml:64
+#, no-c-format
+msgid ""
+"For advanced users, it is even possible to customize the Seam Text parser to "
+"understand wikiword links written using this syntax."
+msgstr ""
+"Pour les utilisateurs avancés, il est même possible de personnaliser le "
+"parseur du Texte Seam pour comprendre les liens wikiwords écrits à l'aide de "
+"cette syntaxe."
+
+#. Tag: title
+#: Text.xml:70
+#, no-c-format
+msgid "Entering HTML"
+msgstr "Entrer du HTML"
+
+#. Tag: para
+#: Text.xml:71
+#, fuzzy, no-c-format
+msgid ""
+"Text may even include a certain limited subset of HTML (don&#39;t worry, the "
+"subset is chosen to be safe from cross-site scripting attacks). This is "
+"useful for creating links:"
+msgstr ""
+"Le texte peut même inclure un certain sous-ensemble limité de HTML (ne vous "
+"inquiétez pas, le sous-ensemble est choisi pour se protéger des attaques de "
+"scripts entre sites). Cela est utile pour créer des liens :"
+
+#. Tag: programlisting
+#: Text.xml:74
+#, no-c-format
+msgid ""
+"You might want to link to &lt;a href=\"http://jboss.com/products/seam\"&gt;"
+"something\n"
+"cool&lt;/a&gt;, or even include an image: &lt;img src=\"/logo.jpg\"/&gt;"
+msgstr ""
+"You might want to link to &lt;a href=\"http://jboss.com/products/seam\"&gt;"
+"something\n"
+"cool&lt;/a&gt;, or even include an image: &lt;img src=\"/logo.jpg\"/&gt;"
+
+#. Tag: para
+#: Text.xml:75
+#, no-c-format
+msgid "And for creating tables:"
+msgstr "Et pour créer des tables :"
+
+#. Tag: programlisting
+#: Text.xml:78
+#, no-c-format
+msgid ""
+"&lt;table&gt;\n"
+"    &lt;tr&gt;&lt;td&gt;First name:&lt;/td&gt;&lt;td&gt;Gavin&lt;/td&gt;&lt;/"
+"tr&gt;\n"
+"    &lt;tr&gt;&lt;td&gt;Last name:&lt;/td&gt;&lt;td&gt;King&lt;/td&gt;&lt;/"
+"tr&gt;\n"
+"&lt;/table&gt;"
+msgstr ""
+"&lt;table&gt;\n"
+"    &lt;tr&gt;&lt;td&gt;First name:&lt;/td&gt;&lt;td&gt;Gavin&lt;/td&gt;&lt;/"
+"tr&gt;\n"
+"    &lt;tr&gt;&lt;td&gt;Last name:&lt;/td&gt;&lt;td&gt;King&lt;/td&gt;&lt;/"
+"tr&gt;\n"
+"&lt;/table&gt;"
+
+#. Tag: para
+#: Text.xml:79
+#, no-c-format
+msgid "But you can do much more if you want!"
+msgstr "Mais si vous le voulez, vous pouvez aller plus loin !"
+
+#~ msgid ""
+#~ "You can write down equations like 2&#92;*3&#92;=6 and HTML tags\n"
+#~ "like &#92;&lt;body&#92;&gt; using the escape character: &#92;&#92;."
+#~ msgstr ""
+#~ "You can write down equations like 2&#92;*3&#92;=6 and HTML tags\n"
+#~ "like &#92;&lt;body&#92;&gt; using the escape character: &#92;&#92;."

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Tools.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Tools.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Tools.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,813 @@
+# translation of Tools.po to french
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# myriam malga <mmalga at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Tools\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2007-08-07 16:58+1000\n"
+"Last-Translator: myriam malga <mmalga at redhat.com>\n"
+"Language-Team: french\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Tools.xml:6
+#, no-c-format
+msgid "Seam tools"
+msgstr "Outils Seam"
+
+#. Tag: title
+#: Tools.xml:8
+#, no-c-format
+msgid "jBPM designer and viewer"
+msgstr "Designer et visionneur jBPM "
+
+#. Tag: para
+#: Tools.xml:9
+#, fuzzy, no-c-format
+msgid ""
+"The jBPM designer and viewer will let you design and view in a nice way your "
+"business processes and your pageflows. This convenient tool is part of JBoss "
+"Eclipse IDE and more details can be found in the jBPM&#39;s documentation "
+"(http://docs.jboss.com/jbpm/v3/gpd/)"
+msgstr ""
+"Les designer et visionneur jBPM vous permettront de concevoir et de "
+"visionner vos processus métier et vos flux de page de la meilleure façon. "
+"Cet outil commode fait partie du JBoss Eclipse IDE, vous trouverez plus "
+"d'informations à ce sujet dans la documentation de jBPM (http://docs.jboss."
+"com/jbpm/v3/gpd/)"
+
+#. Tag: title
+#: Tools.xml:13
+#, no-c-format
+msgid "<title>Business process designer</title>"
+msgstr "<title>Créateur du processus métier</title>"
+
+#. Tag: para
+#: Tools.xml:14
+#, no-c-format
+msgid "This tool lets you design your own business process in a graphical way."
+msgstr ""
+"Cet outil vous permet de concevoir votre propre processus métier "
+"graphiquement."
+
+#. Tag: screeninfo
+#: Tools.xml:17 Tools.xml:33
+#, no-c-format
+msgid "<screeninfo>Business process designer</screeninfo>"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:29
+#, no-c-format
+msgid "Pageflow viewer"
+msgstr "Visionneur de flux de page"
+
+#. Tag: para
+#: Tools.xml:30
+#, no-c-format
+msgid ""
+"This tool let you design to some extend your pageflows and let you build "
+"graphical views of them so you can easily share and compare ideas on how it "
+"should be designed."
+msgstr ""
+"Cet outil vous permet en partie de concevoir vos flux de page et d'en "
+"construire des vues graphiques afin que vous puissiez facilement partager et "
+"comparer les idées sur la façon dont ils devraient être créés."
+
+#. Tag: title
+#: Tools.xml:47
+#, no-c-format
+msgid "CRUD-application generator"
+msgstr "Générateur de CRUD-application "
+
+#. Tag: para
+#: Tools.xml:48
+#, no-c-format
+msgid ""
+"This chapter, will give you a short overview of the support for Seam that is "
+"available in the Hibernate Tools. Hibernate Tools is a set of tools for "
+"working with Hibernate and related technologies, such as JBoss Seam and "
+"EJB3. The tools are available as a set of eclipse plugins and Ant tasks. You "
+"can download the Hibernate Tools from the JBoss Eclipse IDE or Hibernate "
+"Tools websites."
+msgstr ""
+"Ce chapitre vous donnera une courte vue d'ensemble du support pour Seam, "
+"disponible dans les Hibernate Tools. Hibernate Tools est un ensemble "
+"d'outils pour travailler avec Hibernate et des technologies associées, comme "
+"JBoss Seam et EJB3. Les outils sont disponibles en tant qu'ensemble de "
+"plugins eclipse et tâches Ant. Vous pouvez télécharger les Hibernate Tools "
+"depuis les sites web JBoss Eclipse IDE ou Hibernate Tools."
+
+#. Tag: para
+#: Tools.xml:51
+#, fuzzy, no-c-format
+msgid ""
+"The specific support for Seam that is currently available is generation of a "
+"fully functional Seam based CRUD-application. The CRUD-application can be "
+"generated based on your existing Hibernate mapping files or EJB3 annotated "
+"POJO&#39;s or even fully reverse engineered from your existing database "
+"schema."
+msgstr ""
+"Le support spécifique à Seam actuellement disponible est la génération d'une "
+"CRUD-application Seam totalement fonctionnelle. La CRUD-application peut "
+"être générée en se basant sur les fichiers d'association Hibernate ou des "
+"POJO annotés EJB3 ou même totalement reverese engineered depuis votre schéma "
+"de base de données existante."
+
+#. Tag: para
+#: Tools.xml:54
+#, no-c-format
+msgid ""
+"The following sections is focused on the features required to understand for "
+"usage with Seam. The content is derived from the the Hibernate Tools "
+"reference documentation. Thus if you need more detailed information please "
+"refer to the Hibernate Tools documentation."
+msgstr ""
+"Les sections suivantes se concentrent sur les fonctionnalités à comprendre "
+"pour une utilisation avec Seam. Le contenu est dérivé de la documentation de "
+"référence des Hibernate Tools. Par conséquent, si vous avez besoin "
+"d'informations plus détaillées, veuillez consulter la documentation sur les "
+"Hibernate Tools. "
+
+#. Tag: title
+#: Tools.xml:58
+#, no-c-format
+msgid "Creating a Hibernate configuration file"
+msgstr "Création d'un fichier de configuration Hibernate"
+
+#. Tag: para
+#: Tools.xml:59
+#, no-c-format
+msgid ""
+"To be able to reverse engineer and generate code a hibernate.properties or "
+"hibernate.cfg.xml file is needed. The Hibernate Tools provide a wizard for "
+"generating the hibernate.cfg.xml file if you do not already have such file."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:62
+#, no-c-format
+msgid ""
+"Start the wizard by clicking \"New Wizard\" (Ctrl+N), select the Hibernate/"
+"Hibernate Configuration file (cfg.xml) wizard and press \"Next\". After "
+"selecting the wanted location for the hibernate.cfg.xml file, you will see "
+"the following page:"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:73
+#, no-c-format
+msgid ""
+"Tip: The contents in the combo boxes for the JDBC driver class and JDBC URL "
+"change automatically, depending on the Dialect and actual driver you have "
+"chosen."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:76
+#, no-c-format
+msgid ""
+"Enter your configuration information in this dialog. Details about the "
+"configuration options can be found in Hibernate reference documentation."
+msgstr ""
+"Entrez vos informations de configuration dans cette boîte de dialogue. Les "
+"informations sur les options de configuration se trouvent dans la "
+"documentation de référence de Hibernate."
+
+#. Tag: para
+#: Tools.xml:79
+#, no-c-format
+msgid ""
+"Press \"Finish\" to create the configuration file, after optionally creating "
+"a Console onfiguration, the hibernate.cfg.xml will be automatically opened "
+"in an editor. The last option \"Create Console Configuration\" is enabled by "
+"default and when enabled i will automatically use the hibernate.cfg.xml for "
+"the basis of a \"Console Configuration\""
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:85
+#, no-c-format
+msgid "<title>Creating a Hibernate Console configuration</title>"
+msgstr "<title>Création d'une configuration de console Hibernate</title>"
+
+#. Tag: para
+#: Tools.xml:86
+#, fuzzy, no-c-format
+msgid ""
+"A Console Configuration describes to the Hibernate plugin which "
+"configuration files should be used to configure hibernate, including which "
+"classpath is needed to load the POJO&#39;s, JDBC drivers etc. It is required "
+"to make usage of query prototyping, reverse engineering and code generation. "
+"You can have multiple named console configurations. Normally you would just "
+"need one per project, but more (or less) is definitly possible."
+msgstr ""
+"Une configuration de console indique au plugin Hibernate quels fichiers de "
+"configuration doivent être utiliser pour configurer Hibernate, y compris le "
+"chemin de classe requis pour télécharger les POJO, les pilotes JDBC etc. Il "
+"est nécessaire d'utiliser le prototypage de requête, le reverse engineering "
+"et la génération de code. Vous pouvez avoir de multiples configurations de "
+"console nommées. Ordinairement, il vous suffira d'en avoir une par projet, "
+"mais il est possible également d'en avoir plus ou moins. "
+
+#. Tag: para
+#: Tools.xml:89
+#, no-c-format
+msgid ""
+"You create a console configuration by running the Console Configuration "
+"wizard, shown in the following screenshot. The same wizard will also be used "
+"if you are coming from the hibernate.cfg.xml wizard and had enabled \"Create "
+"Console Configuration\"."
+msgstr ""
+
+#. Tag: caption
+#: Tools.xml:100
+#, no-c-format
+msgid "<caption>Creating a Hibernate Console configuration</caption>"
+msgstr "<caption>Création d'une configuration de console Hibernate</caption>"
+
+#. Tag: para
+#: Tools.xml:102
+#, no-c-format
+msgid ""
+"The following table describes the relevant settings. The wizard can "
+"automatically detect default values for most of these if you started the "
+"Wizard with the relevant java project selected"
+msgstr ""
+"La table suivante décrit les paramètres importants. L'assistant peut "
+"automatiquement détecté les valeurs par défaut pour la plupart si vous avez "
+"démarré le Wizard avec les projets java séléctionnés et appropriés "
+
+#. Tag: title
+#: Tools.xml:106
+#, no-c-format
+msgid "Hibernate Console Configuration Parameters"
+msgstr "Paramètres de configuration de console Hibernate "
+
+#. Tag: para
+#: Tools.xml:114
+#, no-c-format
+msgid "Parameter"
+msgstr "Paramètre"
+
+#. Tag: para
+#: Tools.xml:119 Tools.xml:306 Tools.xml:456
+#, no-c-format
+msgid "Description"
+msgstr "Description"
+
+#. Tag: para
+#: Tools.xml:124
+#, no-c-format
+msgid "Auto detected value"
+msgstr "Valeur auto-détectée"
+
+#. Tag: para
+#: Tools.xml:133
+#, no-c-format
+msgid "Name"
+msgstr "Nom"
+
+#. Tag: para
+#: Tools.xml:138
+#, no-c-format
+msgid "The unique name of the configuration"
+msgstr "Le nom unique de la configuration"
+
+#. Tag: para
+#: Tools.xml:143
+#, no-c-format
+msgid "Name of the selected project"
+msgstr "Nom du projet sélectionné"
+
+#. Tag: para
+#: Tools.xml:150
+#, no-c-format
+msgid "Property file"
+msgstr "Fichier de propriété"
+
+#. Tag: para
+#: Tools.xml:155
+#, no-c-format
+msgid "Path to a hibernate.properties file"
+msgstr "Chemin vers un fichier hibernate.properties "
+
+#. Tag: para
+#: Tools.xml:160
+#, no-c-format
+msgid "First hibernate.properties file found in the selected project"
+msgstr "Premier fichier hibernate.properties trouvé dans le projet sélectionné"
+
+#. Tag: para
+#: Tools.xml:167
+#, no-c-format
+msgid "Configuration file"
+msgstr "Fichier de configuration "
+
+#. Tag: para
+#: Tools.xml:172
+#, no-c-format
+msgid "Path to a hibernate.cfg.xml file"
+msgstr "Chemin vers un fichier hibernate.cfg.xml"
+
+#. Tag: para
+#: Tools.xml:177
+#, no-c-format
+msgid "First hibernate.cfg.xml file found in the selected project"
+msgstr "Premier fichier hibernate.cfg.xml trouvé dans le projet sélectionné"
+
+#. Tag: para
+#: Tools.xml:184
+#, no-c-format
+msgid "Enable Hibernate ejb3/annotations"
+msgstr "Activation des Hibernate ejb3/annotations"
+
+#. Tag: para
+#: Tools.xml:189
+#, no-c-format
+msgid ""
+"Selecting this option enables usage of annotated classes. hbm.xml files are "
+"of course still possible to use too. This feature requires running the "
+"Eclipse IDE with a JDK 5 runtime, otherwise you will get classloading and/or "
+"version errors."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:194
+#, no-c-format
+msgid "Not enabled"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:201
+#, no-c-format
+msgid "Mapping files"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:206
+#, no-c-format
+msgid ""
+"List of additional mapping files that should be loaded. Note: A hibernate."
+"cfg.xml can also contain mappings. Thus if these a duplicated here, you will "
+"get \"Duplicate mapping\" errors when using the console configuration."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:211
+#, no-c-format
+msgid ""
+"If no hibernate.cfg.xml file is found, all hbm.xml files found in the "
+"selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:218
+#, no-c-format
+msgid "Classpath"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:223
+#, no-c-format
+msgid ""
+"The classpath for loading POJO and JDBC drivers. Do not add Hibernate core "
+"libraries or dependencies, they are already included. If you get "
+"ClassNotFound errors then check this list for possible missing or redundant "
+"directories/jars."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:228
+#, no-c-format
+msgid ""
+"The default build output directory and any JARs with a class implementing "
+"java.sql.Driver in the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:236
+#, no-c-format
+msgid ""
+"Clicking \"Finish\" creates the configuration and shows it in the "
+"\"Hibernate Configurations\" view"
+msgstr ""
+
+#. Tag: caption
+#: Tools.xml:247
+#, no-c-format
+msgid "Console overview"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:252
+#, no-c-format
+msgid "Reverse engineering and code generation"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:253
+#, no-c-format
+msgid ""
+"A very simple \"click-and-generate\" reverse engineering and code generation "
+"facility is available. It is this facility that allows you to generate the "
+"skeleton for a full Seam CRUD application."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:256
+#, no-c-format
+msgid ""
+"To start working with this process, start the \"Hibernate Code Generation\" "
+"which is available in the toolbar via the Hibernate icon or via the \"Run/"
+"Hibernate Code Generation\" menu item."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:260
+#, no-c-format
+msgid "Code Generation Launcher"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:261
+#, no-c-format
+msgid ""
+"When you click on \"Hibernate Code Generation\" the standard Eclipse "
+"launcher dialog will appear. In this dialog you can create, edit and delete "
+"named Hibernate code generation \"launchers\"."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:272
+#, no-c-format
+msgid ""
+"The dialog has the standard tabs \"Refresh\" and \"Common\" that can be used "
+"to configure which directories should be automatically refreshed and various "
+"general settings launchers, such as saving them in a project for sharing the "
+"launcher within a team."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:283
+#, no-c-format
+msgid ""
+"The first time you create a code generation launcher you should give it a "
+"meaningfull name, otherwise the default prefix \"New_Generation\" will be "
+"used."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:286
+#, no-c-format
+msgid ""
+"Note: The \"At least one exporter option must be selected\" is just a "
+"warning stating that for this launch to work you need to select an exporter "
+"on the Exporter tab. When an exporter has been selected the warning will "
+"disappear."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:289
+#, no-c-format
+msgid "On the \"Main\" tab you the following fields:"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:293
+#, no-c-format
+msgid "Code generation \"Main\" tab fields"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:301 Tools.xml:451
+#, no-c-format
+msgid "Field"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:315
+#, no-c-format
+msgid "Console Configuration"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:320
+#, no-c-format
+msgid ""
+"The name of the console configuration which should be used when code "
+"generating."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:327
+#, no-c-format
+msgid "Output directory"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:332
+#, no-c-format
+msgid ""
+"Path to a directory into where all output will be written by default. Be "
+"aware that existing files will be overwritten, so be sure to specify the "
+"correct directory."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:339
+#, no-c-format
+msgid "Reverse engineer from JDBC Connection"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:344
+#, no-c-format
+msgid ""
+"If enabled the tools will reverse engineer the database available via the "
+"connection information in the selected Hibernate Console Configuration and "
+"generate code based on the database schema. If not enabled the code "
+"generation will just be based on the mappings already specified in the "
+"Hibernate Console configuration."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:351
+#, no-c-format
+msgid "Package"
+msgstr "Paquetage"
+
+#. Tag: para
+#: Tools.xml:356
+#, no-c-format
+msgid ""
+"The package name here is used as the default package name for any entities "
+"found when reverse engineering."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:363
+#, no-c-format
+msgid "reveng.xml"
+msgstr "reveng.xml"
+
+#. Tag: para
+#: Tools.xml:368
+#, no-c-format
+msgid ""
+"Path to a reveng.xml file. A reveng.xml file allows you to control certain "
+"aspects of the reverse engineering. e.g. how jdbc types are mapped to "
+"hibernate types and especially important which tables are included/excluded "
+"from the process. Clicking \"setup\" allows you to select an existing reveng."
+"xml file or create a new one.."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:375
+#, no-c-format
+msgid "reveng. strategy"
+msgstr "reveng. strategy"
+
+#. Tag: para
+#: Tools.xml:380
+#, no-c-format
+msgid ""
+"If reveng.xml does not provide enough customization you can provide your own "
+"implementation of an ReverseEngineeringStrategy. The class need to be in the "
+"claspath of the Console Configuration, otherwise you will get class not "
+"found exceptions."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:387
+#, no-c-format
+msgid "Generate basic typed composite ids"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:392
+#, no-c-format
+msgid ""
+"This field should always be enabled when generating the Seam CRUD "
+"application. A table that has a multi-colum primary key a &lt;composite-"
+"id&gt; mapping will always be created. If this option is enabled and there "
+"are matching foreign-keys each key column is still considered a &#39;"
+"basic&#39; scalar (string, long, etc.) instead of a reference to an entity. "
+"If you disable this option a &lt;key-many-to-one&gt; instead. Note: a &lt;"
+"many-to-one&gt; property is still created, but is simply marked as non-"
+"updatable and non-insertable."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:399
+#, no-c-format
+msgid "Use custom templates"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:404
+#, no-c-format
+msgid ""
+"If enabled, the Template directory will be searched first when looking up "
+"the velocity templates, allowing you to redefine how the individual "
+"templates process the hibernate mapping model."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:411
+#, no-c-format
+msgid "Template directory"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:416
+#, no-c-format
+msgid "A path to a directory with custom velocity templates."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:427
+#, no-c-format
+msgid "Exporters"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:428
+#, no-c-format
+msgid ""
+"The exporters tab is used to specify which type of code that should be "
+"generated. Each selection represents an \"Exporter\" that are responsible "
+"for generating the code, hence the name."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:439
+#, no-c-format
+msgid ""
+"The following table describes in short the various exporters. The most "
+"relevant for Seam is of course the \"JBoss Seam Skeleton app\"."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:443
+#, no-c-format
+msgid "Code generation \"Exporter\" tab fields"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:465
+#, no-c-format
+msgid "Generate domain code"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:470
+#, no-c-format
+msgid ""
+"Generates POJO&#39;s for all the persistent classes and components found in "
+"the given Hibernate configuration."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:477
+#, no-c-format
+msgid "JDK 1.5 constructs"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:482
+#, no-c-format
+msgid "When enabled the POJO&#39;s will use JDK 1.5 constructs."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:489
+#, no-c-format
+msgid "EJB3/JSR-220 annotations"
+msgstr "Annotations EJB3/JSR-220 "
+
+#. Tag: para
+#: Tools.xml:494
+#, no-c-format
+msgid ""
+"When enabled the POJO&#39;s will be annotated according to the EJB3/JSR-220 "
+"persistency specification."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:501
+#, no-c-format
+msgid "Generate DAO code"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:506
+#, no-c-format
+msgid "Generates a set of DAO&#39;s for each entity found."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:513
+#, no-c-format
+msgid "Generate Mappings"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:518
+#, no-c-format
+msgid "Generate mapping (hbm.xml) files for each entity"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:525
+#, no-c-format
+msgid "Generate hibernate configuration file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:530
+#, no-c-format
+msgid ""
+"Generate a hibernate.cfg.xml file. Used to keep the hibernate.cfg.xml "
+"uptodate with any new found mapping files."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:537
+#, no-c-format
+msgid "Generate schema html-documentation"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:542
+#, no-c-format
+msgid ""
+"Generates set of html pages that documents the database schema and some of "
+"the mappings."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:549
+#, no-c-format
+msgid "Generate JBoss Seam skeleton app (beta)"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:554
+#, no-c-format
+msgid ""
+"Generates a complete JBoss Seam skeleton app. The generation will include "
+"annotated POJO&#39;s, Seam controller beans and a JSP for the presentation "
+"layer. See the generated readme.txt for how to use it."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:557
+#, no-c-format
+msgid ""
+"Note: this exporter generates a full application, including a build.xml thus "
+"you will get the best results if you use an output directory which is the "
+"root of your project."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:568
+#, no-c-format
+msgid "Generating and using the code"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:569
+#, no-c-format
+msgid ""
+"When you have finished filling out the settings, simply press \"Run\" to "
+"start the generation of code. This might take a little while if you are "
+"reverse engineering from a database."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:572
+#, no-c-format
+msgid ""
+"When the generation have finished you should now have a complete skeleton "
+"Seam application in the output directory. In the output directory there is a "
+"<literal>readme.txt</literal> file describing the steps needed to deploy and "
+"run the example."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:575
+#, no-c-format
+msgid ""
+"If you want to regenerate/update the skeleton code then simply run the code "
+"generation again by selecting the \"Hibernate Code Generation\" in the "
+"toolbar or \"Run\" menu. Enjoy."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Tutorial.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Tutorial.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Tutorial.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,6194 @@
+# translation of Tutorial.po to french
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# myriam malga <mmalga at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Tutorial\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-02-04 23:29+0000\n"
+"PO-Revision-Date: 2007-08-07 15:40+1000\n"
+"Last-Translator: myriam malga <mmalga at redhat.com>\n"
+"Language-Team: french\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Tutorial.xml:6
+#, no-c-format
+msgid "Seam Tutorial"
+msgstr "Tutoriel de Seam"
+
+#. Tag: title
+#: Tutorial.xml:8
+#, no-c-format
+msgid "Try the examples"
+msgstr "Essayer les exemples"
+
+#. Tag: para
+#: Tutorial.xml:9
+#, no-c-format
+msgid ""
+"In this tutorial, we'll assume that you are using JBoss AS 4.2 with Seam, as "
+"in the case of JBoss Enterprise Application Platform."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:12
+#, no-c-format
+msgid "The directory structure of each example in Seam follows this pattern:"
+msgstr ""
+"La structure du répertoire de chaque exemple dans Seam suit le modèle "
+"suivant :"
+
+#. Tag: para
+#: Tutorial.xml:17
+#, no-c-format
+msgid ""
+"Web pages, images and stylesheets may be found in <filename>examples/"
+"<replaceable>registration</replaceable>/view</filename>"
+msgstr ""
+"Les pages web, images et feuilles de style sont situées dans "
+"<filename>exemples/<replaceable>inscription</replaceable>/affichage</"
+"filename>"
+
+#. Tag: para
+#: Tutorial.xml:22
+#, no-c-format
+msgid ""
+"Resources such as deployment descriptors and data import scripts may be "
+"found in <filename>examples/<replaceable>registration</replaceable>/"
+"resources</filename>"
+msgstr ""
+"Les ressources comme les descripteurs de déploiement et les scripts "
+"d'importation de données sont situés dans <filename>exemples/"
+"<replaceable>inscription</replaceable>/ressources</filename>"
+
+#. Tag: para
+#: Tutorial.xml:27
+#, no-c-format
+msgid ""
+"Java source code may be found in <filename>examples/"
+"<replaceable>registration</replaceable>/src</filename>"
+msgstr ""
+"Le code source Java est situé dans <filename>exemples/"
+"<replaceable>inscription</replaceable>/src</filename>"
+
+#. Tag: para
+#: Tutorial.xml:32
+#, no-c-format
+msgid ""
+"The Ant build script is <filename>examples/<replaceable>registration</"
+"replaceable>/build.xml</filename>"
+msgstr ""
+"Le script de montage Ant est dans <filename>exemples/"
+"<replaceable>inscription</replaceable>/build.xml</filename>"
+
+#. Tag: title
+#: Tutorial.xml:38
+#, no-c-format
+msgid "Running the examples on JBoss AS"
+msgstr "Exécuter les exemples sur JBoss AS"
+
+#. Tag: para
+#: Tutorial.xml:39
+#, fuzzy, no-c-format
+msgid ""
+"First, make sure you have Ant correctly installed, with <literal>&#36;"
+"ANT_HOME</literal> and <literal>&#36;JAVA_HOME</literal> set correctly. "
+"Next, make sure you set the location of your JBoss AS installation in the "
+"<literal>build.properties</literal> file in the root folder of your Seam "
+"installation. If you haven't already done so, start JBoss AS now by typing "
+"<literal>bin/run.sh</literal> or <literal>bin/run.bat</literal> in the root "
+"directory of your JBoss installation."
+msgstr ""
+"D'abord, assurez-vous que Ant est correctement installé avec <literal>&#36;"
+"ANT_HOME</literal> et <literal>&#36;JAVA_HOME</literal> définis "
+"correctement. Ensuite, vérifiez que vous avez déterminé l'emplacement de "
+"l'installation de JBoss AS 4.0.5 dans le fichier <literal>build.properties</"
+"literal> dans le dossier racine de votre installation Seam. Si ce n'est pas "
+"déjà fait, démarrez JBoss AS maintenant en saisissant <literal>bin/run.sh</"
+"literal> ou <literal>bin/run.bat</literal> dans le répertoire racine de "
+"votre installation JBoss. "
+
+#. Tag: para
+#: Tutorial.xml:42
+#, fuzzy, no-c-format
+msgid ""
+"By default the examples will deploy to the default configuration of the "
+"server. These examples should be deployed to the production configuration if "
+"they are to be used with JBoss Enterprise Application Platform 4.2, and the "
+"example <literal>build.xml</literal> file should be modified to reflect this "
+"before building and deploying. Two lines should be changed in this file:"
+msgstr ""
+"Par défaut, les exemples déploieront la configuration par défaut du serveur. "
+"Si le serveur a été démarré en utilisant une configuration autre que la "
+"configuration par défaut, le fichier exemple <literal>build.xml</literal> "
+"devra être modifié pour refléter cela avant de monter et de déployer. Deux "
+"lignes devraient être modifiées dans ce fichier :"
+
+#. Tag: screen
+#: Tutorial.xml:45
+#, fuzzy, no-c-format
+msgid ""
+"&lt;property name=\"deploy.dir\"           value=\"${jboss.home}/server/"
+"production/deploy\"/&gt;"
+msgstr ""
+"&lt;property name=\"deploy.dir\"           value=\"${jboss.home}/server/"
+"default/deploy\"/&gt;"
+
+#. Tag: screen
+#: Tutorial.xml:46
+#, no-c-format
+msgid ""
+"&lt;property name=\"webroot.dir\"         \n"
+"        value=\"${deploy.dir}/jboss-web.deployer/ROOT.war\"/&gt;"
+msgstr ""
+"&lt;property name=\"webroot.dir\"         \n"
+"        value=\"${deploy.dir}/jboss-web.deployer/ROOT.war\"/&gt;"
+
+#. Tag: para
+#: Tutorial.xml:47
+#, no-c-format
+msgid ""
+"Now, build and deploy the example by typing <literal>ant deploy</literal> in "
+"the <filename>examples/<replaceable>registration</replaceable></filename> "
+"directory."
+msgstr ""
+"Maintenant montez et déployez l'exemple en saisissant <literal>ant deploy</"
+"literal> dans le répertoire <filename>exemples/<replaceable>inscription</"
+"replaceable></filename>."
+
+#. Tag: para
+#: Tutorial.xml:50
+#, no-c-format
+msgid ""
+"Try it out by accessing <ulink url=\"http://localhost:8080/seam-registration/"
+"\"><literal>http://localhost:8080/seam-registration/</literal></ulink> with "
+"your web browser."
+msgstr ""
+"Vérifiez en allant à <ulink url=\"http://localhost:8080/seam-registration/"
+"\"><literal>http://localhost:8080/seam-registration/</literal></ulink> avec "
+"votre navigateur web."
+
+#. Tag: title
+#: Tutorial.xml:56
+#, no-c-format
+msgid "Running the examples on Tomcat"
+msgstr "Exécuter les exemples sur Tomcat"
+
+#. Tag: para
+#: Tutorial.xml:57
+#, fuzzy, no-c-format
+msgid ""
+"First, make sure you have Ant correctly installed, with <literal>&#36;"
+"ANT_HOME</literal> and <literal>&#36;JAVA_HOME</literal> set correctly. "
+"Next, make sure you set the location of your Tomcat installation in the "
+"<literal>build.properties</literal> file in the root folder of your Seam "
+"installation."
+msgstr ""
+"Tout d'abord, vérifiez que vous avez installé Ant correctement avec "
+"<literal>&#36;ANT_HOME</literal> et <literal>&#36;JAVA_HOME</literal> "
+"correctement définis. Ensuite, assurez-vous de déterminer l'emplacement de "
+"votre installation Tomcat 5.5 dans le fichier <literal>build.properties</"
+"literal> dans le dossier racine de votre installation Seam."
+
+#. Tag: para
+#: Tutorial.xml:60
+#, no-c-format
+msgid ""
+"Now, build and deploy the example by typing <literal>ant deploy.tomcat</"
+"literal> in the <filename>examples/<replaceable>registration</replaceable></"
+"filename> directory."
+msgstr ""
+"Maintenant, montez et déployez l'exemple en saisissant <literal>ant deploy."
+"tomcat</literal> dans le répertoire <filename>exemples/"
+"<replaceable>inscription</replaceable></filename>."
+
+#. Tag: para
+#: Tutorial.xml:63
+#, no-c-format
+msgid "Finally, start Tomcat."
+msgstr "Enfin, démarrez Tomcat."
+
+#. Tag: para
+#: Tutorial.xml:66
+#, no-c-format
+msgid ""
+"Try it out by accessing <ulink url=\"http://localhost:8080/jboss-seam-"
+"registration/\"><literal>http://localhost:8080/jboss-seam-registration/</"
+"literal></ulink> with your web browser."
+msgstr ""
+"Vérifiez en allant à <ulink url=\"http://localhost:8080/jboss-seam-"
+"registration/\"><literal>http://localhost:8080/jboss-seam-registration/</"
+"literal></ulink> avec votre navigateur web. "
+
+#. Tag: para
+#: Tutorial.xml:69
+#, no-c-format
+msgid ""
+"When you deploy the example to Tomcat, any EJB3 components will run inside "
+"the JBoss Embeddable EJB3 container, a complete standalone EJB3 container "
+"environment."
+msgstr ""
+"Quand vous déployez votre exemple dans Tomcat, tous les composants EJB3 "
+"exécuteront dans le conteneur JBoss Embeddable EJB3, un environnement de "
+"conteneur EJB3 complètement autonome. "
+
+#. Tag: title
+#: Tutorial.xml:75
+#, no-c-format
+msgid "Running the example tests"
+msgstr "Exécuter les tests exemples"
+
+#. Tag: para
+#: Tutorial.xml:76
+#, no-c-format
+msgid ""
+"Most of the examples come with a suite of TestNG integration tests. The "
+"easiest way to run the tests is to run <literal>ant testexample</literal> "
+"inside the <filename>examples/<replaceable>registration</replaceable></"
+"filename> directory. It is also possible to run the tests inside your IDE "
+"using the TestNG plugin."
+msgstr ""
+"La plupart des exemples sont accompagnés d'une série de tests d'intégration "
+"TestNG. La manière la plus facile d'exécuter les tests est d'exécuter "
+"<literal>ant testexample</literal> dans le répertoire <filename>exemples/"
+"<replaceable>inscription</replaceable></filename>. Il est également possible "
+"d'exécuter les tests à l'intérieur de votre IDE en utilisant le plugin "
+"TestNG."
+
+#. Tag: title
+#: Tutorial.xml:84
+#, no-c-format
+msgid "Your first Seam application: the registration example"
+msgstr "Votre première application Seam : l'exemple d'inscription"
+
+#. Tag: para
+#: Tutorial.xml:85
+#, fuzzy, no-c-format
+msgid ""
+"The registration example is a fairly trivial application that lets a new "
+"user store his username, real name and password in the database. The example "
+"isn&#39;t intended to show off all of the cool functionality of Seam. "
+"However, it demonstrates the use of an EJB3 session bean as a JSF action "
+"listener, and basic configuration of Seam."
+msgstr ""
+"L'exemple d'inscription est une application plutôt banale qui permet au "
+"nouvel utilisateur de stocker son nom d'utilisateur, son vrai nom et son mot "
+"de passe dans la base de données. L'exemple n'est pas conçu pour étaler "
+"toutes les fonctionnalités cool de Seam. Cependant, il démontre "
+"l'utilisation d'un bean session EJB3 en tant que listener d'actions JSF, et "
+"configuration de base de Seam. "
+
+#. Tag: para
+#: Tutorial.xml:88
+#, fuzzy, no-c-format
+msgid ""
+"We&#39;ll go slowly, since we realize you might not yet be familiar with EJB "
+"3.0."
+msgstr ""
+"Nous procèderons lentement, car vous ne connaissez peut-être pas encore EJB "
+"3.0."
+
+#. Tag: para
+#: Tutorial.xml:91
+#, no-c-format
+msgid ""
+"The start page displays a very basic form with three input fields. Try "
+"filling them in and then submitting the form. This will save a user object "
+"in the database."
+msgstr ""
+"La page de démarrage affiche un formulaire très simple avec trois champs "
+"d'entrée. Essayez de les remplir et de soumettre le formulaire. Cela "
+"enregistrera un objet d'utilisateur dans la base de données."
+
+#. Tag: title
+#: Tutorial.xml:103 Tutorial.xml:415 Tutorial.xml:554 Tutorial.xml:714
+#, no-c-format
+msgid "Understanding the code"
+msgstr "Comprendre le code"
+
+#. Tag: para
+#: Tutorial.xml:104
+#, no-c-format
+msgid ""
+"The example is implemented with two JSP pages, one entity bean and one "
+"stateless session bean."
+msgstr ""
+"L'exemple est implémenté avec deux pages JSP, un bean entité et un bean "
+"session stateless."
+
+#. Tag: para
+#: Tutorial.xml:115
+#, fuzzy, no-c-format
+msgid "Let&#39;s take a look at the code, starting from the \"bottom\"."
+msgstr "Examinons le code, en commençant par le \"bas\"."
+
+#. Tag: title
+#: Tutorial.xml:119
+#, no-c-format
+msgid "The entity bean: <literal>User.java</literal>"
+msgstr "Le bean entité : <literal>User.java</literal>"
+
+#. Tag: para
+#: Tutorial.xml:120
+#, no-c-format
+msgid ""
+"We need an EJB entity bean for user data. This class defines "
+"<emphasis>persistence</emphasis> and <emphasis>validation</emphasis> "
+"declaratively, via annotations. It also needs some extra annotations that "
+"define the class as a Seam component."
+msgstr ""
+"Nous avons besoin d'un bean entité EJB pour les données d'utilisateur. Cette "
+"classe définit la <emphasis>persistance</emphasis> et la "
+"<emphasis>validation</emphasis> de façon déclarative, via les annotations. "
+"Elle exige également des annotations supplémentaires qui définissent la "
+"classe, en tant que composant Seam."
+
+#. Tag: programlisting
+#: Tutorial.xml:135
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"user\")\n"
+"@Scope(SESSION)\n"
+"@Table(name=\"users\")\n"
+"public class User implements Serializable\n"
+"{\n"
+"   private static final long serialVersionUID = 1881413500711441951L;\n"
+"   \n"
+"   private String username;\n"
+"   private String password;\n"
+"   private String name;\n"
+"   \n"
+"   public User(String name, String password, String username)\n"
+"   {\n"
+"      this.name = name;\n"
+"      this.password = password;\n"
+"      this.username = username;\n"
+"   }\n"
+"   \n"
+"   public User() {}\n"
+"   \n"
+"   @NotNull @Length(min=5, max=15)\n"
+"   public String getPassword()\n"
+"   {\n"
+"      return password;\n"
+"   }\n"
+"\n"
+"   public void setPassword(String password)\n"
+"   {\n"
+"      this.password = password;\n"
+"   }\n"
+"   \n"
+"   @NotNull\n"
+"   public String getName()\n"
+"   {\n"
+"      return name;\n"
+"   }\n"
+"\n"
+"   public void setName(String name)\n"
+"   {\n"
+"      this.name = name;\n"
+"   }\n"
+"   \n"
+"   @Id @NotNull @Length(min=5, max=15)\n"
+"   public String getUsername()\n"
+"   {\n"
+"      return username;\n"
+"   }\n"
+"\n"
+"   public void setUsername(String username)\n"
+"   {\n"
+"      this.username = username;\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+"@Entity\n"
+"@Name(\"user\")\n"
+"@Scope(SESSION)\n"
+"@Table(name=\"users\")\n"
+"public class User implements Serializable\n"
+"{\n"
+"   private static final long serialVersionUID = 1881413500711441951L;\n"
+"   \n"
+"   private String username;\n"
+"   private String password;\n"
+"   private String name;\n"
+"   \n"
+"   public User(String name, String password, String username)\n"
+"   {\n"
+"      this.name = name;\n"
+"      this.password = password;\n"
+"      this.username = username;\n"
+"   }\n"
+"   \n"
+"   public User() {}\n"
+"   \n"
+"   @NotNull @Length(min=5, max=15)\n"
+"   public String getPassword()\n"
+"   {\n"
+"      return password;\n"
+"   }\n"
+"\n"
+"   public void setPassword(String password)\n"
+"   {\n"
+"      this.password = password;\n"
+"   }\n"
+"   \n"
+"   @NotNull\n"
+"   public String getName()\n"
+"   {\n"
+"      return name;\n"
+"   }\n"
+"\n"
+"   public void setName(String name)\n"
+"   {\n"
+"      this.name = name;\n"
+"   }\n"
+"   \n"
+"   @Id @NotNull @Length(min=5, max=15)\n"
+"   public String getUsername()\n"
+"   {\n"
+"      return username;\n"
+"   }\n"
+"\n"
+"   public void setUsername(String username)\n"
+"   {\n"
+"      this.username = username;\n"
+"   }\n"
+"\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:138
+#, no-c-format
+msgid ""
+"The EJB3 standard <literal>@Entity</literal> annotation indicates that the "
+"<literal>User</literal> class is an entity bean."
+msgstr ""
+"L'annotation de l'EJB3 standard <literal>@Entity</literal> indique que la "
+"classe <literal>User</literal> est un bean entité."
+
+#. Tag: para
+#: Tutorial.xml:143
+#, no-c-format
+msgid ""
+"A Seam component needs a <emphasis>component name</emphasis> specified by "
+"the <link linkend=\"name-annotation\"><literal>@Name</literal></link> "
+"annotation. This name must be unique within the Seam application. When JSF "
+"asks Seam to resolve a context variable with a name that is the same as a "
+"Seam component name, and the context variable is currently undefined (null), "
+"Seam will instantiate that component, and bind the new instance to the "
+"context variable. In this case, Seam will instantiate a <literal>User</"
+"literal> the first time JSF encounters a variable named <literal>user</"
+"literal>."
+msgstr ""
+"Un composant Seam exige un <emphasis>nom de composant</emphasis> spécifié "
+"par l'annotation <link linkend=\"name-annotation\"><literal>@Name</literal></"
+"link>. Ce nom doit être unique à l'intérieur de l'application Seam. Quand "
+"JSF demande à Seam de résoudre la variable de contexte avec un nom identique "
+"à celui du nom du composant Seam, et la variable de contexte est couramment "
+"non-définie (nulle), Seam instanciera ce composant, et liera la nouvelle "
+"instance à la variable de contexte. Dans ce cas, Seam instanciera un "
+"<literal>User</literal> la première fois que JSF rencontrera une variable "
+"appelée<literal>user</literal>."
+
+#. Tag: para
+#: Tutorial.xml:148
+#, fuzzy, no-c-format
+msgid ""
+"Whenever Seam instantiates a component, it binds the new instance to a "
+"context variable in the component&#39;s <emphasis>default context</"
+"emphasis>. The default context is specified using the <link linkend=\"scope-"
+"annotation\"><literal>@Scope</literal></link> annotation. The <literal>User</"
+"literal> bean is a session scoped component."
+msgstr ""
+"À chaque fois que Seam instancie un composant, il lie la nouvelle instance à "
+"une variable de contexte dans le<emphasis>contexte par défaut</emphasis> du "
+"composant. Le contexte par défaut est spécifié en utilisant l'annotation "
+"<link linkend=\"scope-annotation\"><literal>@Scope</literal></link>. Le bean "
+"<literal>User</literal> est un composant porté par la session."
+
+#. Tag: para
+#: Tutorial.xml:153
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Table</literal> annotation indicates that the "
+"<literal>User</literal> class is mapped to the <literal>users</literal> "
+"table."
+msgstr ""
+"L'annotation de l'EJB standard <literal>@Table</literal> indique que la "
+"classe <literal>User</literal> est associée à la table <literal>users</"
+"literal>."
+
+#. Tag: para
+#: Tutorial.xml:158
+#, no-c-format
+msgid ""
+"<literal>name</literal>, <literal>password</literal> and <literal>username</"
+"literal> are the persistent attributes of the entity bean. All of our "
+"persistent attributes define accessor methods. These are needed when this "
+"component is used by JSF in the render response and update model values "
+"phases."
+msgstr ""
+"<literal>name</literal>, <literal>password</literal> et <literal>username</"
+"literal> sont les attributs persistants du bean entité. Tous nos attributs "
+"persistants définissent des méthodes d'accesseur. Celles-ci sont nécessaires "
+"quand ce composant est utilisé par JSF dans les phases, render response "
+"(soumettre la réponse) et update model (mise à jour du modèle)."
+
+#. Tag: para
+#: Tutorial.xml:163
+#, no-c-format
+msgid ""
+"An empty constructor is both required by both the EJB specification and by "
+"Seam."
+msgstr ""
+"Un constructeur vide est requis à la fois par les spécifications EJB et par "
+"Seam."
+
+#. Tag: para
+#: Tutorial.xml:168
+#, no-c-format
+msgid ""
+"The <literal>@NotNull</literal> and <literal>@Length</literal> annotations "
+"are part of the Hibernate Validator framework. Seam integrates Hibernate "
+"Validator and lets you use it for data validation (even if you are not using "
+"Hibernate for persistence)."
+msgstr ""
+"Les annotations <literal>@NotNull</literal> et <literal>@Length</literal> "
+"font partie du framework Hibernate Validator. Seam intègre le Hibernate "
+"Validator et vous permet de l'utiliser pour la validation des données (même "
+"si vous n'utilisez pas Hibernate pour la persistance)."
+
+#. Tag: para
+#: Tutorial.xml:173
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Id</literal> annotation indicates the primary key "
+"attribute of the entity bean."
+msgstr ""
+"L'annotation de l'EJB standard <literal>@Id</literal> indique l'attribut de "
+"la clé primaire du bean entité."
+
+#. Tag: para
+#: Tutorial.xml:180
+#, no-c-format
+msgid ""
+"The most important things to notice in this example are the <literal>@Name</"
+"literal> and <literal>@Scope</literal> annotations. These annotations "
+"establish that this class is a Seam component."
+msgstr ""
+"Ce qu'il y a de plus important à noter dans cet exemple sont les "
+"annotations, <literal>@Name</literal> et <literal>@Scope</literal>. Ces "
+"annotations établissent que cette classe est un composant Seam."
+
+#. Tag: para
+#: Tutorial.xml:183
+#, fuzzy, no-c-format
+msgid ""
+"We&#39;ll see below that the properties of our <literal>User</literal> class "
+"are bound to directly to JSF components and are populated by JSF during the "
+"update model values phase. We don&#39;t need any tedious glue code to copy "
+"data back and forth between the JSP pages and the entity bean domain model."
+msgstr ""
+"Nous verrons ci-dessous que les propriétés de notre classe <literal>User</"
+"literal> sont liées directement aux composants JSF et sont peuplées par JSF "
+"durant la phase de mise à jour des valeurs du modèle. Nous n'avons pas "
+"besoin de code collé fastidieux pour copier les données entre les pages JSP "
+"et le modèle de domaine du bean entité. "
+
+#. Tag: para
+#: Tutorial.xml:186
+#, fuzzy, no-c-format
+msgid ""
+"However, entity beans shouldn&#39;t do transaction management or database "
+"access. So we can&#39;t use this component as a JSF action listener. For "
+"that we need a session bean."
+msgstr ""
+"Toutefois, les beans entités ne devraient pas effectuer de gestion de "
+"transactions ou d'accès de base de données. Par conséquent, nous ne pouvons "
+"pas utiliser ce composant en tant que listener d'actions JSF. Pour cela nous "
+"avons besoin d'un bean session."
+
+#. Tag: title
+#: Tutorial.xml:193
+#, no-c-format
+msgid ""
+"The stateless session bean class: <literal>RegisterAction.java</literal>"
+msgstr ""
+"La classe de bean session stateless : <literal>RegisterAction.java</literal>"
+
+#. Tag: para
+#: Tutorial.xml:194
+#, no-c-format
+msgid ""
+"Most Seam application use session beans as JSF action listeners (you can use "
+"JavaBeans instead if you like)."
+msgstr ""
+"La plupart des applications Seam utilisent les beans session en tant que "
+"listener d'actions JSF (vous pouvez utiliser les JavaBeans à la place si "
+"vous le désirez)."
+
+#. Tag: para
+#: Tutorial.xml:197
+#, fuzzy, no-c-format
+msgid ""
+"We have exactly one JSF action in our application, and one session bean "
+"method attached to it. In this case, we&#39;ll use a stateless session bean, "
+"since all the state associated with our action is held by the <literal>User</"
+"literal> bean."
+msgstr ""
+"Nous avons exactement une action JSF dans notre application et une méthode "
+"de bean session lui étant attachée. Dans ce cas, nous utiliserons un bean "
+"session stateless, puisque tout l'état associé à notre action est contenu "
+"dans le bean <literal>User</literal>."
+
+#. Tag: para
+#: Tutorial.xml:200
+#, no-c-format
+msgid "This is the only really interesting code in the example!"
+msgstr "Voici le seul code réellement intéressant dans cet exemple !"
+
+#. Tag: programlisting
+#: Tutorial.xml:215
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"register\")\n"
+"public class RegisterAction implements Register\n"
+"{\n"
+"\n"
+"   @In\n"
+"   private User user;\n"
+"   \n"
+"   @PersistenceContext\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @Logger\n"
+"   private Log log;\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = em.createQuery(\n"
+"         \"select username from User where username=#{user.username}\")\n"
+"         .getResultList();\n"
+"         \n"
+"      if (existing.size()==0)\n"
+"      {\n"
+"         em.persist(user);\n"
+"         log.info(\"Registered new user #{user.username}\");\n"
+"         return \"/registered.jsp\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         FacesMessages.instance().add(\"User #{user.username} already exists"
+"\");\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+"@Stateless\n"
+"@Name(\"register\")\n"
+"public class RegisterAction implements Register\n"
+"{\n"
+"\n"
+"   @In\n"
+"   private User user;\n"
+"   \n"
+"   @PersistenceContext\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @Logger\n"
+"   private Log log;\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = em.createQuery(\n"
+"         \"select username from User where username=#{user.username}\")\n"
+"         .getResultList();\n"
+"         \n"
+"      if (existing.size()==0)\n"
+"      {\n"
+"         em.persist(user);\n"
+"         log.info(\"Registered new user #{user.username}\");\n"
+"         return \"/registered.jsp\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         FacesMessages.instance().add(\"User #{user.username} already exists"
+"\");\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:218
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Stateless</literal> annotation marks this class "
+"as stateless session bean."
+msgstr ""
+"L'annotation de l'EJB standard <literal>@Stateless</literal> marque cette "
+"classe en tant que bean session stateless. "
+
+#. Tag: para
+#: Tutorial.xml:223
+#, no-c-format
+msgid ""
+"The <link linkend=\"in-annotation\"><literal>@In</literal></link> annotation "
+"marks an attribute of the bean as injected by Seam. In this case, the "
+"attribute is injected from a context variable named <literal>user</literal> "
+"(the instance variable name)."
+msgstr ""
+"L'annotation <link linkend=\"in-annotation\"><literal>@In</literal></link> "
+"marque un attribut du bean comme injecté par Seam. Dans ce cas, l'attribut "
+"est injecté depuis une variable de contexte, appelée <literal>user</literal> "
+"(le nom de la variable d'instance)."
+
+#. Tag: para
+#: Tutorial.xml:228
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@PersistenceContext</literal> annotation is used "
+"to inject the EJB3 entity manager."
+msgstr ""
+"L'annotation de l'EJB standard <literal>@PersistenceContext</literal> est "
+"utilisée pour injecter le gestionnaire d'entités EJB3."
+
+#. Tag: para
+#: Tutorial.xml:233
+#, fuzzy, no-c-format
+msgid ""
+"The Seam <literal>@Logger</literal> annotation is used to inject the "
+"component&#39;s <literal>Log</literal> instance."
+msgstr ""
+"L'annotation Seam <literal>@Logger</literal> est utilisée pour injecter "
+"l'instance du composant <literal>Log</literal>."
+
+#. Tag: para
+#: Tutorial.xml:238
+#, no-c-format
+msgid ""
+"The action listener method uses the standard EJB3 <literal>EntityManager</"
+"literal> API to interact with the database, and returns the JSF outcome. "
+"Note that, since this is a sesson bean, a transaction is automatically begun "
+"when the <literal>register()</literal> method is called, and committed when "
+"it completes."
+msgstr ""
+"La méthode du listener d'actions utilise l'API standard du "
+"<literal>EntityManager</literal> d'EJB3 pour interagir avec la base de "
+"données et retourne le résultat JSF. Notez qu'étant donné que ceci est un "
+"bean session, une transaction est automatiquement commencée quand la méthode "
+"<literal>register()</literal> est appelée, et sauvegardée quand elle est "
+"terminée. "
+
+#. Tag: para
+#: Tutorial.xml:243
+#, no-c-format
+msgid ""
+"Notice that Seam lets you use a JSF EL expression inside EJB-QL. Under the "
+"covers, this results in an ordinary JPA <literal>setParameter()</literal> "
+"call on the standard JPA <literal>Query</literal> object. Nice, huh?"
+msgstr ""
+"Remarquez que Seam vous permet d'utiliser une expression JSF EL à "
+"l'intérieur de EJB-QL. En arrière plan, cela entraîne un appel ordinaire "
+"<literal>setParameter()</literal> JPA sur l'objet standard <literal>Query</"
+"literal> JPA . Pas mal, hein ?"
+
+#. Tag: para
+#: Tutorial.xml:248
+#, no-c-format
+msgid ""
+"The <literal>Log</literal> API lets us easily display templated log messages."
+msgstr ""
+"L'API <literal>Log</literal> nous permet d'afficher facilement des messages "
+"journal modélisés."
+
+#. Tag: para
+#: Tutorial.xml:253
+#, no-c-format
+msgid ""
+"JSF action listener methods return a string-valued outcome that determines "
+"what page will be displayed next. A null outcome (or a void action listener "
+"method) redisplays the previous page. In plain JSF, it is normal to always "
+"use a JSF <emphasis>navigation rule</emphasis> to determine the JSF view id "
+"from the outcome. For complex application this indirection is useful and a "
+"good practice. However, for very simple examples like this one, Seam lets "
+"you use the JSF view id as the outcome, eliminating the requirement for a "
+"navigation rule. <emphasis>Note that when you use a view id as an outcome, "
+"Seam always performs a browser redirect.</emphasis>"
+msgstr ""
+"Les méthodes de listener d'actions JSF retournent un résultat string-valued "
+"qui détermine la prochaine page à afficher. Un résultat nulle (ou une "
+"méthode de listener d'action vide) ré-affiche la page précédente. Dans le "
+"JSF simple, il est normal de toujours utiliser une <emphasis>règle de "
+"navigation</emphasis> JSF pour déterminer l'identifiant de l'affichage JSF à "
+"partir du résultat. Cependant, pour des exemples très simples comme celui-"
+"ci, Seam vous permet d'utiliser l'identifiant de l'affichage JSF en tant que "
+"résultat, éliminant ainsi la nécessité d'une règle de navigation. "
+"<emphasis>Notez que quand vous utilisez un identifiant d'affichage comme "
+"résultat, Seam effectue toujours une redirection du navigateur.</emphasis>"
+
+#. Tag: para
+#: Tutorial.xml:258
+#, no-c-format
+msgid ""
+"Seam provides a number of <emphasis>built-in components</emphasis> to help "
+"solve common problems. The <literal>FacesMessages</literal> component makes "
+"it easy to display templated error or success messages. Built-in Seam "
+"components may be obtained by injection, or by calling an <literal>instance()"
+"</literal> method."
+msgstr ""
+"Seam fournit un certain nombre de <emphasis>composants imbriqués</emphasis> "
+"pour vous aider à résoudre des problèmes fréquents. Le composant "
+"<literal>FacesMessages</literal> facilite l'affichage modélisé de messages "
+"d'erreur ou de réussite. Les composants imbriqués de Seam peuvent être "
+"obtenus par injection, ou en appelant une méthode <literal>instance()</"
+"literal>."
+
+#. Tag: para
+#: Tutorial.xml:265
+#, no-c-format
+msgid ""
+"Note that we did not explicitly specify a <literal>@Scope</literal> this "
+"time. Each Seam component type has a default scope if not explicitly "
+"specified. For stateless session beans, the default scope is the stateless "
+"context. Actually, <emphasis>all</emphasis> stateless session beans belong "
+"in the stateless context."
+msgstr ""
+"Notez que cette fois-ci, nous n'avons pas explicitement spécifié de "
+"<literal>@Scope</literal>. Chaque type de composant Seam a une portée par "
+"défaut si celle-ci n'est pas spécifiée explicitement. Pour les beans session "
+"stateless, la portée par défaut est le contexte stateless. En fait, "
+"<emphasis>tous</emphasis> les beans session stateless appartiennent au "
+"contexte stateless. "
+
+#. Tag: para
+#: Tutorial.xml:268
+#, fuzzy, no-c-format
+msgid ""
+"Our session bean action listener performs the business and persistence logic "
+"for our mini-application. In more complex applications, we might need to "
+"layer the code and refactor persistence logic into a dedicated data access "
+"component. That&#39;s perfectly trivial to do. But notice that Seam does not "
+"force you into any particular strategy for application layering."
+msgstr ""
+"Notre listener d'actions de bean session effectue la logique de persistance "
+"et métier pour notre mini application. Dans des applications plus complexes, "
+"il vous faudra peut-être mettre le code en couches et réusiner la logique de "
+"persistance en un composant d'accès aux données dédié. Cette opération est "
+"parfaitement banale. Mais remarquez que Seam ne vous force pas à utiliser "
+"une stratégie particulière pour la mise en couches de l'application. "
+
+#. Tag: para
+#: Tutorial.xml:271
+#, fuzzy, no-c-format
+msgid ""
+"Furthermore, notice that our session bean has simultaneous access to context "
+"associated with the web request (the form values in the <literal>User</"
+"literal> object, for example), and state held in transactional resources "
+"(the <literal>EntityManager</literal> object). This is a break from "
+"traditional J2EE architectures. Again, if you are more comfortable with the "
+"traditional J2EE layering, you can certainly implement that in a Seam "
+"application. But for many applications, it&#39;s simply not very useful."
+msgstr ""
+"Par ailleurs, notez que notre bean session a un accès simultané au contexte "
+"associé à la requête web (les valeurs du formulaire dans l'objet "
+"<literal>User</literal> par exemple), et à l'état contenu dans les "
+"ressources transactionnelles (l'objet <literal>EntityManager</literal>). "
+"C'est un changement par rapport aux architectures J2EE traditionnelles. "
+"Toutefois si vous êtes plus habitué à la mise en couches J2EE "
+"traditionnelle, vous pouvez certainement l'implémenter dans une application "
+"Seam. Mais pour de nombreuses applications, ce n'est pas très utile."
+
+#. Tag: title
+#: Tutorial.xml:278
+#, no-c-format
+msgid "The session bean local interface: <literal>Register.java</literal>"
+msgstr "L'interface locale du bean session : <literal>Register.java</literal>"
+
+#. Tag: para
+#: Tutorial.xml:279
+#, no-c-format
+msgid "Naturally, our session bean needs a local interface."
+msgstr "Évidemment notre bean session a besoin d'une interface locale. "
+
+#. Tag: programlisting
+#: Tutorial.xml:282
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface Register\n"
+"{\n"
+"   public String register();\n"
+"}"
+msgstr ""
+"@Local\n"
+"public interface Register\n"
+"{\n"
+"   public String register();\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:283
+#, fuzzy, no-c-format
+msgid ""
+"That&#39;s the end of the Java code. Now onto the deployment descriptors."
+msgstr ""
+"Voilà pour le code Java. Maintenant passons aux descripteurs de déploiement."
+
+#. Tag: title
+#: Tutorial.xml:289
+#, no-c-format
+msgid ""
+"The Seam component deployment descriptor: <literal>components.xml</literal>"
+msgstr ""
+"Le descripteur de déploiement du composant Seam : <literal>components.xml</"
+"literal>"
+
+#. Tag: para
+#: Tutorial.xml:290
+#, fuzzy, no-c-format
+msgid ""
+"If you&#39;ve used many Java frameworks before, you&#39;ll be used to having "
+"to declare all your component classes in some kind of XML file that "
+"gradually grows more and more unmanageable as your project matures. You&#39;"
+"ll be relieved to know that Seam does not require that application "
+"components be accompanied by XML. Most Seam applications require a very "
+"small amount of XML that does not grow very much as the project gets bigger."
+msgstr ""
+"Si vous avez utilisé de nombreux frameworks Java auparavant, vous êtes "
+"habitué à déclarer toutes vos classes de composants dans un type quelconque "
+"de fichier XML qui devient de plus en plus difficile à gérer, plus le projet "
+"avance. Vous serez soulagé d'apprendre que Seam n'exige pas que les "
+"composants d'application soient accompagnés de XML. La plupart des "
+"applications Seam requièrent un très petit nombre de XML, qui ne grandissent "
+"que peu au fure et à mesure que le projet avance. "
+
+#. Tag: para
+#: Tutorial.xml:293
+#, fuzzy, no-c-format
+msgid ""
+"Nevertheless, it is often useful to be able to provide for <emphasis>some</"
+"emphasis> external configuration of <emphasis>some</emphasis> components "
+"(particularly the components built in to Seam). You have a couple of options "
+"here, but the most flexible option is to provide this configuration in a "
+"file called <literal>components.xml</literal>, located in the <literal>WEB-"
+"INF</literal> directory. We&#39;ll use the <literal>components.xml</literal> "
+"file to tell Seam how to find our EJB components in JNDI:"
+msgstr ""
+"Toutefois, il est souvent utile d'être en mesure de fournir "
+"<emphasis>quelque</emphasis> configuration externe de <emphasis>quelques</"
+"emphasis> componsants (particulièrement les composants imbriqués dans Seam). "
+"Là, vous avez deux options, mais l'option la plus flexible est de fournir "
+"cette configuration dans un fichier appelé <literal>components.xml</"
+"literal>, situé dans le répertoire <literal>WEB-INF</literal>. Nous "
+"utiliserons le fichier <literal>components.xml</literal> pour indiquer à "
+"Seam comment trouver les composants EJB dans le JNDI :"
+
+#. Tag: programlisting
+#: Tutorial.xml:296
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"&gt;\n"
+"     &lt;core:init jndi-pattern=\"@jndiPattern@\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"&gt;\n"
+"     &lt;core:init jndi-pattern=\"@jndiPattern@\"/&gt;\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Tutorial.xml:297
+#, no-c-format
+msgid ""
+"This code configures a property named <literal>jndiPattern</literal> of a "
+"built-in Seam component named <literal>org.jboss.seam.core.init</literal>."
+msgstr ""
+"Ce code configure une propriété appelée <literal>jndiPattern</literal> d'un "
+"composant Seam imbriqué, appelé <literal>org.jboss.seam.core.init</literal>."
+
+#. Tag: title
+#: Tutorial.xml:303
+#, no-c-format
+msgid "The web deployment description: <literal>web.xml</literal>"
+msgstr "La description du déploiement web : <literal>web.xml</literal>"
+
+#. Tag: para
+#: Tutorial.xml:304
+#, fuzzy, no-c-format
+msgid ""
+"The presentation layer for our mini-application will be deployed in a WAR. "
+"So we&#39;ll need a web deployment descriptor."
+msgstr ""
+"La couche de présentation pour notre mini application sera déployée dans un "
+"WAR. Par conséquent, il nous faudra un descripteur de déploiement web. "
+
+#. Tag: programlisting
+#: Tutorial.xml:307
+#, fuzzy, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;web-app version=\"2.5\"\n"
+"    xmlns=\"http://java.sun.com/xml/ns/javaee\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n"
+"        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\"&gt;\n"
+"\n"
+"    &lt;!- - Seam - -&gt;\n"
+"\n"
+"    &lt;listener&gt;\n"
+"        &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/"
+"listener-class&gt;\n"
+"    &lt;/listener&gt;\n"
+"    \n"
+"     &lt;listener&gt;\n"
+"         &lt;listener-class&gt;com.sun.faces.config.ConfigureListener&lt;/"
+"listener-class&gt;\n"
+"    &lt;/listener&gt;\n"
+"\n"
+"    &lt;context-param&gt;\n"
+"        &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-"
+"name&gt;\n"
+"        &lt;param-value&gt;client&lt;/param-value&gt;\n"
+"    &lt;/context-param&gt;\n"
+"\n"
+"    &lt;context-param&gt;\n"
+"        &lt;param-name&gt;javax.faces.DEFAULT_SUFFIX&lt;/param-name&gt;\n"
+"        &lt;param-value&gt;.jspx&lt;/param-value&gt;\n"
+"    &lt;/context-param&gt;\n"
+"\n"
+"        &lt;servlet&gt;\n"
+"                &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;\n"
+"                &lt;servlet-class&gt;javax.faces.webapp.FacesServlet&lt;/"
+"servlet-class&gt;\n"
+"                &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;\n"
+"        &lt;/servlet&gt;\n"
+"\n"
+"        <!-- Faces Servlet Mapping -->\n"
+"        &lt;servlet-mapping&gt;\n"
+"                &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;\n"
+"                &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;\n"
+"        &lt;/servlet-mapping&gt;\n"
+"\n"
+"&lt;/web-app&gt;"
+msgstr ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;web-app version=\"2.5\"\n"
+"    xmlns=\"http://java.sun.com/xml/ns/javaee\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n"
+"        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\"&gt;\n"
+"\n"
+"    &lt;!-- Seam --&gt;\n"
+"\n"
+"    &lt;listener&gt;\n"
+"        &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/"
+"listener-class&gt;\n"
+"    &lt;/listener&gt;\n"
+"\n"
+"    &lt;!-- MyFaces --&gt;\n"
+"\n"
+"    &lt;listener&gt;\n"
+"        &lt;listener-class&gt;\n"
+"            org.apache.myfaces.webapp.StartupServletContextListener\n"
+"        &lt;/listener-class&gt;\n"
+"    &lt;/listener&gt;\n"
+"\n"
+"    &lt;context-param&gt;\n"
+"        &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-"
+"name&gt;\n"
+"        &lt;param-value&gt;client&lt;/param-value&gt;\n"
+"    &lt;/context-param&gt;\n"
+"\n"
+"    &lt;servlet&gt;\n"
+"        &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;\n"
+"        &lt;servlet-class&gt;javax.faces.webapp.FacesServlet&lt;/servlet-"
+"class&gt;\n"
+"        &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;\n"
+"    &lt;/servlet&gt;\n"
+"\n"
+"    &lt;!-- Faces Servlet Mapping --&gt;\n"
+"    &lt;servlet-mapping&gt;\n"
+"        &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;\n"
+"        &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;\n"
+"    &lt;/servlet-mapping&gt;\n"
+"\n"
+"&lt;/web-app&gt;"
+
+#. Tag: para
+#: Tutorial.xml:308
+#, fuzzy, no-c-format
+msgid ""
+"This <literal>web.xml</literal> file configures Seam and Glassfish. The "
+"configuration you see here is pretty much identical in all Seam applications."
+msgstr ""
+"Ce fichier <literal>web.xml</literal> configure Seam et MyFaces. La "
+"configuration que vous voyez ici est presqu'identique dans toutes les "
+"applications Seam."
+
+#. Tag: title
+#: Tutorial.xml:314
+#, no-c-format
+msgid "The JSF configration: <literal>faces-config.xml</literal>"
+msgstr "La configuration JSF : <literal>faces-config.xml</literal>"
+
+#. Tag: para
+#: Tutorial.xml:315
+#, fuzzy, no-c-format
+msgid ""
+"All Seam applications use JSF views as the presentation layer. So we&#39;ll "
+"need <literal>faces-config.xml</literal>."
+msgstr ""
+"Toutes les applications Seam utilisent les affichages JSF comme la couche de "
+"présentation. Donc il nous faudra <literal>faces-config.xml</literal>."
+
+#. Tag: programlisting
+#: Tutorial.xml:318
+#, fuzzy, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;!DOCTYPE faces-config \n"
+"PUBLIC \"-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN\"\n"
+"                            \"http://java.sun.com/dtd/web-facesconfig_1_0.dtd"
+"\"&gt;\n"
+"&lt;faces-config&gt;\n"
+"\n"
+"    &lt;!- - A phase listener is needed by all Seam applications - -&gt;\n"
+"    \n"
+"    &lt;lifecycle&gt;\n"
+"        &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-"
+"listener&gt;\n"
+"    &lt;/lifecycle&gt;\n"
+"\n"
+"&lt;/faces-config&gt;"
+msgstr ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;!DOCTYPE faces-config \n"
+"PUBLIC \"-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN\"\n"
+"                            \"http://java.sun.com/dtd/web-facesconfig_1_0.dtd"
+"\"&gt;\n"
+"&lt;faces-config&gt;\n"
+"\n"
+"    &lt;!-- A phase listener is needed by all Seam applications --&gt;\n"
+"    \n"
+"    &lt;lifecycle&gt;\n"
+"        &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-"
+"listener&gt;\n"
+"    &lt;/lifecycle&gt;\n"
+"\n"
+"&lt;/faces-config&gt;"
+
+#. Tag: para
+#: Tutorial.xml:319
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>faces-config.xml</literal> file integrates Seam into JSF. Note "
+"that we don&#39;t need any JSF managed bean declarations! The managed beans "
+"are the Seam components. In Seam applications, the <literal>faces-config."
+"xml</literal> is used much less often than in plain JSF."
+msgstr ""
+"Le fichier <literal>faces-config.xml</literal> intègre Seam dans JSF. Notez "
+"que nous n'avons pas besoin de déclarations de beans gérés par JSF ! Les "
+"beans beans gérés sont les composants Seam. Dans les applications Seam, "
+"<literal>faces-config.xml</literal> est beaucoup moins utilisé qu'en JSF "
+"simple."
+
+#. Tag: para
+#: Tutorial.xml:322
+#, no-c-format
+msgid ""
+"In fact, once you have all the basic descriptors set up, the <emphasis>only</"
+"emphasis> XML you need to write as you add new functionality to a Seam "
+"application is the navigation rules, and possibly jBPM process definitions. "
+"Seam takes the view that <emphasis>process flow</emphasis> and "
+"<emphasis>configuration data</emphasis> are the only things that truly "
+"belong in XML."
+msgstr ""
+"En fait, une fois que tous les descripteurs de base sont en place, le "
+"<emphasis>seul</emphasis> XML que vous devez écrire, alors que vous ajoutez "
+"de nouvelles fonctionnalités à une application Seam, est la règle de "
+"navigation et peut-être également les définitions des processus jBPM. Seam "
+"est d'avis que seul le <emphasis>flux de processus</emphasis> et "
+"<emphasis>les données de configuration</emphasis> ont réellement leur place "
+"dans le XML."
+
+#. Tag: para
+#: Tutorial.xml:325
+#, fuzzy, no-c-format
+msgid ""
+"In this simple example, we don&#39;t even need a navigation rule, since we "
+"decided to embed the view id in our action code."
+msgstr ""
+"Dans cet exemple simple, nous n'avons pas besoin de règle de navigation, "
+"étant donné que nous avons décidé d'imbriquer l'identifiant d'affichage dans "
+"notre code d'action."
+
+#. Tag: title
+#: Tutorial.xml:330
+#, no-c-format
+msgid "The EJB deployment descriptor: <literal>ejb-jar.xml</literal>"
+msgstr "Le descripteur de déploiement d'EJB : <literal>ejb-jar.xml</literal>"
+
+#. Tag: para
+#: Tutorial.xml:331
+#, no-c-format
+msgid ""
+"The <literal>ejb-jar.xml</literal> file integrates Seam with EJB3, by "
+"attaching the <literal>SeamInterceptor</literal> to all session beans in the "
+"archive."
+msgstr ""
+"Le fichier <literal>ejb-jar.xml</literal> intègre Seam au EJB3, en attachant "
+"<literal>SeamInterceptor</literal> à tous les beans session dans l'archive."
+
+#. Tag: programlisting
+#: Tutorial.xml:334
+#, fuzzy, no-c-format
+msgid ""
+"&lt;ejb-jar xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \n"
+"         xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee \n"
+"                           http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"
+"\"\n"
+"         version=\"3.0\"&gt;\n"
+"         \n"
+"   &lt;interceptors&gt;\n"
+"     &lt;interceptor&gt;\n"
+"       &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"     &lt;/interceptor&gt;\n"
+"   &lt;/interceptors&gt;\n"
+"   \n"
+"   &lt;assembly-descriptor&gt;\n"
+"      &lt;interceptor-binding&gt;\n"
+"         &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"         &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"      &lt;/interceptor-binding&gt;\n"
+"   &lt;/assembly-descriptor&gt;\n"
+"   \n"
+"&lt;/ejb-jar&gt;"
+msgstr ""
+"&lt;ejb-jar xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \n"
+"         xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n"
+"         http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd\"\n"
+"         version=\"3.0\"&gt;\n"
+"         \n"
+"   &lt;interceptors&gt;\n"
+"     &lt;interceptor&gt;\n"
+"       &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"     &lt;/interceptor&gt;\n"
+"   &lt;/interceptors&gt;\n"
+"   \n"
+"   &lt;assembly-descriptor&gt;\n"
+"      &lt;interceptor-binding&gt;\n"
+"         &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"         &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"      &lt;/interceptor-binding&gt;\n"
+"   &lt;/assembly-descriptor&gt;\n"
+"   \n"
+"&lt;/ejb-jar&gt;"
+
+#. Tag: title
+#: Tutorial.xml:338
+#, no-c-format
+msgid ""
+"The EJB persistence deployment descriptor: <literal>persistence.xml</literal>"
+msgstr ""
+"Le descripteur de déploiement de persistance d'EJB : <literal>persistence."
+"xml</literal>"
+
+#. Tag: para
+#: Tutorial.xml:339
+#, no-c-format
+msgid ""
+"The <literal>persistence.xml</literal> file tells the EJB persistence "
+"provider where to find the datasource, and contains some vendor-specific "
+"settings. In this case, enables automatic schema export at startup time."
+msgstr ""
+"Le fichier <literal>persistence.xml</literal> indique au fournisseur de "
+"persistance de l'EJB où trouver la source de données et contient quelques "
+"paramètres spécifiques au vendeur. Dans ce cas, il permet l'export "
+"automatique du schéma au démarrage. "
+
+#. Tag: programlisting
+#: Tutorial.xml:342
+#, fuzzy, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;persistence xmlns=\"http://java.sun.com/xml/ns/persistence\" \n"
+"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence \n"
+"                           http://java.sun.com/xml/ns/persistence/"
+"persistence_1_0.xsd\" \n"
+"             version=\"1.0\"&gt;\n"
+"    &lt;persistence-unit name=\"userDatabase\"&gt;\n"
+"      &lt;provider&gt;org.hibernate.ejb.HibernatePersistence&lt;/"
+"provider&gt;\n"
+"      &lt;jta-data-source&gt;java:/DefaultDS&lt;/jta-data-source&gt;\n"
+"      &lt;properties&gt;\n"
+"         &lt;property name=\"hibernate.hbm2ddl.auto\" value=\"create-drop\"/"
+"&gt;\n"
+"      &lt;/properties&gt;\n"
+"    &lt;/persistence-unit&gt;\n"
+"&lt;/persistence&gt;"
+msgstr ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;persistence xmlns=\"http://java.sun.com/xml/ns/persistence\" \n"
+"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence \n"
+"             http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd\" \n"
+"             version=\"1.0\"&gt;\n"
+"    &lt;persistence-unit name=\"userDatabase\"&gt;\n"
+"      &lt;provider&gt;org.hibernate.ejb.HibernatePersistence&lt;/"
+"provider&gt;\n"
+"      &lt;jta-data-source&gt;java:/DefaultDS&lt;/jta-data-source&gt;\n"
+"      &lt;properties&gt;\n"
+"         &lt;property name=\"hibernate.hbm2ddl.auto\" value=\"create-drop\"/"
+"&gt;\n"
+"      &lt;/properties&gt;\n"
+"    &lt;/persistence-unit&gt;\n"
+"&lt;/persistence&gt;"
+
+#. Tag: title
+#: Tutorial.xml:346
+#, no-c-format
+msgid ""
+"The view: <literal>register.jsp</literal> and <literal>registered.jsp</"
+"literal>"
+msgstr ""
+"L'affichage : <literal>register.jsp</literal> et <literal>registered.jsp</"
+"literal>"
+
+#. Tag: para
+#: Tutorial.xml:347
+#, fuzzy, no-c-format
+msgid ""
+"The view pages for a Seam application could be implemented using any "
+"technology that supports JSF. In this example we use JSP, since it is "
+"familiar to most developers and since we have minimal requirements here "
+"anyway. (But if you take our advice, you&#39;ll use Facelets for your own "
+"applications.)"
+msgstr ""
+"Les pages d'affichage pour une application Seam pourraient être implémentées "
+"en utilisant une technologie qui supporte JSF. Dans cet exemple, nous "
+"utilisons JSP, étant donné que la plupart des développeurs y sont habitués "
+"et vu les exigences minimales requises ici. (Mais si vous suivez nos "
+"conseils, vous utiliserez Facelets dans vos propres applications.)"
+
+#. Tag: programlisting
+#: Tutorial.xml:350
+#, fuzzy, no-c-format
+msgid ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://jboss.com/products/seam/taglib\" prefix=\"s\" %"
+"&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Register New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;table border=\"0\"&gt;\n"
+"       &lt;s:validateAll&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Username&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputText value=\"#{user.username}\"/&gt;&lt;/"
+"td&gt;\n"
+"         &lt;/tr&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Real Name&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputText value=\"#{user.name}\"/&gt;&lt;/td&gt;\n"
+"         &lt;/tr&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Password&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputSecret value=\"#{user.password}\"/&gt;&lt;/"
+"td&gt;\n"
+"         &lt;/tr&gt;\n"
+"       &lt;/s:validateAll&gt;\n"
+"     &lt;/table&gt;\n"
+"     &lt;h:messages/&gt;\n"
+"     &lt;h:commandButton type=\"submit\" value=\"Register\" action=\"#"
+"{register.register}\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://jboss.com/products/seam/taglib\" prefix=\"s\" "
+"&#37;&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Register New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;table border=\"0\"&gt;\n"
+"       &lt;s:validateAll&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Username&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputText value=\"#{user.username}\"/&gt;&lt;/"
+"td&gt;\n"
+"         &lt;/tr&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Real Name&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputText value=\"#{user.name}\"/&gt;&lt;/td&gt;\n"
+"         &lt;/tr&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Password&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputSecret value=\"#{user.password}\"/&gt;&lt;/"
+"td&gt;\n"
+"         &lt;/tr&gt;\n"
+"       &lt;/s:validateAll&gt;\n"
+"     &lt;/table&gt;\n"
+"     &lt;h:messages/&gt;\n"
+"     &lt;h:commandButton type=\"submit\" value=\"Register\" action=\"#"
+"{register.register}\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+
+#. Tag: para
+#: Tutorial.xml:351
+#, no-c-format
+msgid ""
+"The only thing here that is specific to Seam is the <literal>&lt;s:"
+"validateAll&gt;</literal> tag. This JSF component tells JSF to validate all "
+"the contained input fields against the Hibernate Validator annotations "
+"specified on the entity bean."
+msgstr ""
+"Ici la seule chose spécifique à Seam est la balise <literal>&lt;s:"
+"validateAll&gt;</literal>. Ce composant JSF indique à JSF de valider tous "
+"les champs d'entrée contenus pour les annotations de Hibernate Validator "
+"spécifiées sur le bean entité. "
+
+#. Tag: programlisting
+#: Tutorial.xml:354
+#, fuzzy, no-c-format
+msgid ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" %&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Successfully Registered New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"    Welcome, &lt;h:outputText value=\"#{user.name}\"/&gt;, \n"
+"    you are successfully registered as &lt;h:outputText value=\"#{user."
+"username}\"/&gt;.\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Successfully Registered New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"    Welcome, &lt;h:outputText value=\"#{user.name}\"/&gt;, \n"
+"    you are successfully registered as &lt;h:outputText value=\"#{user."
+"username}\"/&gt;.\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+
+#. Tag: para
+#: Tutorial.xml:355
+#, no-c-format
+msgid ""
+"This is a boring old JSP pages using standard JSF components. There is "
+"nothing specific to Seam here."
+msgstr ""
+"Voilà une page ancienne et ennuyeuse de JSP qui utilise les composants JSF "
+"standards. Ici rien n'est spécifique à Seam. "
+
+#. Tag: title
+#: Tutorial.xml:361
+#, no-c-format
+msgid "The EAR deployment descriptor: <literal>application.xml</literal>"
+msgstr "Le descripteur de déploiement EAR : <literal>application.xml</literal>"
+
+#. Tag: para
+#: Tutorial.xml:362
+#, no-c-format
+msgid ""
+"Finally, since our application is deployed as an EAR, we need a deployment "
+"descriptor there, too."
+msgstr ""
+"Enfin, étant donné que notre application est déployée en tant que EAR, il "
+"nous faut un descripteur de déploiement ici aussi."
+
+#. Tag: programlisting
+#: Tutorial.xml:365
+#, fuzzy, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;application xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee \n"
+"                                   http://java.sun.com/xml/ns/javaee/"
+"application_5.xsd\"\n"
+"             version=\"5\"&gt;\n"
+"             \n"
+"    &lt;display-name&gt;Seam Registration&lt;/display-name&gt;\n"
+"\n"
+"    &lt;module&gt;\n"
+"        &lt;web&gt;\n"
+"            &lt;web-uri&gt;jboss-seam-registration.war&lt;/web-uri&gt;\n"
+"            &lt;context-root&gt;/seam-registration&lt;/context-root&gt;\n"
+"        &lt;/web&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;ejb&gt;jboss-seam-registration.jar&lt;/ejb&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;jboss-seam.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;el-ri.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    \n"
+"&lt;/application&gt;"
+msgstr ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;application xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee \n"
+"             http://java.sun.com/xml/ns/javaee/application_5.xsd\"\n"
+"             version=\"5\"&gt;\n"
+"             \n"
+"    &lt;display-name&gt;Seam Registration&lt;/display-name&gt;\n"
+"\n"
+"    &lt;module&gt;\n"
+"        &lt;web&gt;\n"
+"            &lt;web-uri&gt;jboss-seam-registration.war&lt;/web-uri&gt;\n"
+"            &lt;context-root&gt;/seam-registration&lt;/context-root&gt;\n"
+"        &lt;/web&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;ejb&gt;jboss-seam-registration.jar&lt;/ejb&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;jboss-seam.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;el-api.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;el-ri.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    \n"
+"&lt;/application&gt;"
+
+#. Tag: para
+#: Tutorial.xml:366
+#, no-c-format
+msgid ""
+"This deployment descriptor links modules in the enterprise archive and binds "
+"the web application to the context root <literal>/seam-registration</"
+"literal>."
+msgstr ""
+"Ce descripteur de déploiement lie les modules dans l'archive d'entreprise et "
+"lie l'application web au contexte racine <literal>/seam-registration</"
+"literal>."
+
+#. Tag: title
+#: Tutorial.xml:378 Tutorial.xml:526 Tutorial.xml:689 Tutorial.xml:804
+#, no-c-format
+msgid "How it works"
+msgstr "Comment cela fonctionne"
+
+#. Tag: para
+#: Tutorial.xml:379
+#, no-c-format
+msgid ""
+"When the form is submitted, JSF asks Seam to resolve the variable named "
+"<literal>user</literal>. Since there is no value already bound to that name "
+"(in any Seam context), Seam instantiates the <literal>user</literal> "
+"component, and returns the resulting <literal>User</literal> entity bean "
+"instance to JSF after storing it in the Seam session context."
+msgstr ""
+"Quand le formulaire est soumis, JSF demande à Seam de résoudre la variable, "
+"appelée <literal>user</literal>. Étant donné qu'il n'y a pas de valeur déjà "
+"liée à ce nom (dans tous les contextes Seam), Seam instancie le composant "
+"<literal>user</literal>, et retourne à JSF l'instance de bean entité "
+"<literal>User</literal> qui résulte, après l'avoir stockée dans le contexte "
+"de session de Seam. "
+
+#. Tag: para
+#: Tutorial.xml:382
+#, no-c-format
+msgid ""
+"The form input values are now validated against the Hibernate Validator "
+"constraints specified on the <literal>User</literal> entity. If the "
+"constraints are violated, JSF redisplays the page. Otherwise, JSF binds the "
+"form input values to properties of the <literal>User</literal> entity bean."
+msgstr ""
+"Les valeurs d'entrée du formulaire sont maintenant validées pour les "
+"contraintes d'Hibernate Validator, spécifiées sur l'entité <literal>User</"
+"literal>. Si les contraintes sont enfreintes, JSF ré-affiche la page. "
+"Autrement, JSF lie les valeurs d'entrée du formulaire aux propriétés du bean "
+"entité <literal>User</literal>."
+
+#. Tag: para
+#: Tutorial.xml:385
+#, no-c-format
+msgid ""
+"Next, JSF asks Seam to resolve the variable named <literal>register</"
+"literal>. Seam finds the <literal>RegisterAction</literal> stateless session "
+"bean in the stateless context and returns it. JSF invokes the "
+"<literal>register()</literal> action listener method."
+msgstr ""
+"Ensuite, JSF demande à Seam de résoudre la variable, appelée "
+"<literal>register</literal>. Seam trouve le bean session "
+"<literal>RegisterAction</literal> stateless dans le contexte stateless et le "
+"retourne. JSF appelle la méthode du listener d'actions <literal>register()</"
+"literal>."
+
+#. Tag: para
+#: Tutorial.xml:388
+#, no-c-format
+msgid ""
+"Seam intercepts the method call and injects the <literal>User</literal> "
+"entity from the Seam session context, before continuing the invocation."
+msgstr ""
+"Seam intercepte l'appel de la méthode et injecte l'entité <literal>User</"
+"literal> depuis le contexte de session Seam, avant de poursuivre l'appel."
+
+#. Tag: para
+#: Tutorial.xml:391
+#, no-c-format
+msgid ""
+"The <literal>register()</literal> method checks if a user with the entered "
+"username already exists. If so, an error message is queued with the "
+"<literal>FacesMessages</literal> component, and a null outcome is returned, "
+"causing a page redisplay. The <literal>FacesMessages</literal> component "
+"interpolates the JSF expression embedded in the message string and adds a "
+"JSF <literal>FacesMessage</literal> to the view."
+msgstr ""
+"La méthode <literal>register()</literal> vérifie si un utilisateur avec le "
+"nom d'utilisateur saisi, existe. Si c'est le cas, un message d'erreur est "
+"mis en file d'attente avec le composant <literal>FacesMessages</literal>, et "
+"un résultat nulle est retourné, ce qui entraîne le ré-affichage de la page. "
+"Le composant <literal>FacesMessages</literal> interpole l'expression JSF "
+"imbriquée dans la chaîne de messages et ajoute un JSF <literal>FacesMessage</"
+"literal> à l'affichage."
+
+#. Tag: para
+#: Tutorial.xml:394
+#, fuzzy, no-c-format
+msgid ""
+"If no user with that username exists, the <literal>\"/registered.jsp\"</"
+"literal> outcome triggers a browser redirect to the <literal>registered.jsp</"
+"literal> page. When JSF comes to render the page, it asks Seam to resolve "
+"the variable named <literal>user</literal> and uses property values of the "
+"returned <literal>User</literal> entity from Seam&#39;s session scope."
+msgstr ""
+"Si aucun utilisateur avec ce nom d'utilisateur n'existe, le résultat "
+"<literal>\"/registered.jsp\"</literal> entraîne la redirection du navigateur "
+"vers la page <literal>registered.jsp</literal>. Quand JSF veut effectuer le "
+"rendu de la page, il demande à Seam de résoudre la variable, appelée "
+"<literal>user</literal> et utilise les valeurs de propriété de l'entité "
+"<literal>User</literal> retournée depuis l'étendue de la session de Seam."
+
+#. Tag: title
+#: Tutorial.xml:402
+#, no-c-format
+msgid "Clickable lists in Seam: the messages example"
+msgstr "Listes cliquables dans Seam : l'exemple des messages "
+
+#. Tag: para
+#: Tutorial.xml:403
+#, no-c-format
+msgid ""
+"Clickable lists of database search results are such an important part of any "
+"online application that Seam provides special functionality on top of JSF to "
+"make it easier to query data using EJB-QL or HQL and display it as a "
+"clickable list using a JSF <literal>&lt;h:dataTable&gt;</literal>. The "
+"messages example demonstrates this functionality."
+msgstr ""
+"Les listes cliquables des résultats de recherche de la base de données sont "
+"tellement importantes dans toutes les applications en ligne, que Seam offre "
+"une fonctionnalité spéciale en plus de JSF, pour faciliter l'interrogation "
+"des données à l'aide de EJB-QL ou HQL et pour l'afficher en tant que liste "
+"cliquable, utilisant une <literal>&lt;h:dataTable&gt;</literal> JSF. "
+"L'exemple des messages illustre cette fonctionnalité."
+
+#. Tag: para
+#: Tutorial.xml:416
+#, no-c-format
+msgid ""
+"The message list example has one entity bean, <literal>Message</literal>, "
+"one session bean, <literal>MessageListBean</literal> and one JSP."
+msgstr ""
+"L'exemple de liste de messages a un bean entité, <literal>Message</literal>, "
+"un bean session, <literal>MessageListBean</literal> et un JSP."
+
+#. Tag: title
+#: Tutorial.xml:420
+#, no-c-format
+msgid "The entity bean: <literal>Message.java</literal>"
+msgstr "Le bean entité : <literal>Message.java</literal>"
+
+#. Tag: para
+#: Tutorial.xml:421
+#, no-c-format
+msgid ""
+"The <literal>Message</literal> entity defines the title, text, date and time "
+"of a message, and a flag indicating whether the message has been read:"
+msgstr ""
+"L'entité <literal>Message</literal> définit le titre, texte, la date et "
+"l'heure d'un message, et un drapeau indiquant si le message a bien été lu :"
+
+#. Tag: programlisting
+#: Tutorial.xml:424
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"message\")\n"
+"@Scope(EVENT)\n"
+"public class Message implements Serializable\n"
+"{\n"
+"   private Long id;\n"
+"   private String title;\n"
+"   private String text;\n"
+"   private boolean read;\n"
+"   private Date datetime;\n"
+"   \n"
+"   @Id @GeneratedValue\n"
+"   public Long getId() {\n"
+"      return id;\n"
+"   }\n"
+"   public void setId(Long id) {\n"
+"      this.id = id;\n"
+"   }\n"
+"   \n"
+"   @NotNull @Length(max=100)\n"
+"   public String getTitle() {\n"
+"      return title;\n"
+"   }\n"
+"   public void setTitle(String title) {\n"
+"      this.title = title;\n"
+"   }\n"
+"   \n"
+"   @NotNull @Lob\n"
+"   public String getText() {\n"
+"      return text;\n"
+"   }\n"
+"   public void setText(String text) {\n"
+"      this.text = text;\n"
+"   }\n"
+"   \n"
+"   @NotNull\n"
+"   public boolean isRead() {\n"
+"      return read;\n"
+"   }\n"
+"   public void setRead(boolean read) {\n"
+"      this.read = read;\n"
+"   }\n"
+"   \n"
+"   @NotNull \n"
+"   @Basic @Temporal(TemporalType.TIMESTAMP)\n"
+"   public Date getDatetime() {\n"
+"      return datetime;\n"
+"   }\n"
+"   public void setDatetime(Date datetime) {\n"
+"      this.datetime = datetime;\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+"@Entity\n"
+"@Name(\"message\")\n"
+"@Scope(EVENT)\n"
+"public class Message implements Serializable\n"
+"{\n"
+"   private Long id;\n"
+"   private String title;\n"
+"   private String text;\n"
+"   private boolean read;\n"
+"   private Date datetime;\n"
+"   \n"
+"   @Id @GeneratedValue\n"
+"   public Long getId() {\n"
+"      return id;\n"
+"   }\n"
+"   public void setId(Long id) {\n"
+"      this.id = id;\n"
+"   }\n"
+"   \n"
+"   @NotNull @Length(max=100)\n"
+"   public String getTitle() {\n"
+"      return title;\n"
+"   }\n"
+"   public void setTitle(String title) {\n"
+"      this.title = title;\n"
+"   }\n"
+"   \n"
+"   @NotNull @Lob\n"
+"   public String getText() {\n"
+"      return text;\n"
+"   }\n"
+"   public void setText(String text) {\n"
+"      this.text = text;\n"
+"   }\n"
+"   \n"
+"   @NotNull\n"
+"   public boolean isRead() {\n"
+"      return read;\n"
+"   }\n"
+"   public void setRead(boolean read) {\n"
+"      this.read = read;\n"
+"   }\n"
+"   \n"
+"   @NotNull \n"
+"   @Basic @Temporal(TemporalType.TIMESTAMP)\n"
+"   public Date getDatetime() {\n"
+"      return datetime;\n"
+"   }\n"
+"   public void setDatetime(Date datetime) {\n"
+"      this.datetime = datetime;\n"
+"   }\n"
+"   \n"
+"}"
+
+#. Tag: title
+#: Tutorial.xml:429
+#, no-c-format
+msgid "The stateful session bean: <literal>MessageManagerBean.java</literal>"
+msgstr "Le bean session stateful : <literal>MessageManagerBean.java</literal>"
+
+#. Tag: para
+#: Tutorial.xml:430
+#, no-c-format
+msgid ""
+"Just like in the previous example, we have a session bean, "
+"<literal>MessageManagerBean</literal>, which defines the action listener "
+"methods for the two buttons on our form. One of the buttons selects a "
+"message from the list, and displays that message. The other button deletes a "
+"message. So far, this is not so different to the previous example."
+msgstr ""
+"Comme dans l'exemple précédent, nous avons un bean session, "
+"<literal>MessageManagerBean</literal>, qui définit les méthodes du listener "
+"d'actions pour les deux boutons sur notre formulaire. Un de ces boutons "
+"sélectionne un message sur la liste, et affiche ce message. L'autre bouton "
+"supprime un message. Jusque là, tout est comme dans l'exemple précédent."
+
+#. Tag: para
+#: Tutorial.xml:433
+#, no-c-format
+msgid ""
+"But <literal>MessageManagerBean</literal> is also responsible for fetching "
+"the list of messages the first time we navigate to the message list page. "
+"There are various ways the user could navigate to the page, and not all of "
+"them are preceded by a JSF action&mdash;the user might have bookmarked the "
+"page, for example. So the job of fetching the message list takes place in a "
+"Seam <emphasis>factory method</emphasis>, instead of in an action listener "
+"method."
+msgstr ""
+"Cependant, la première fois que nous naviguons vers la page de la liste des "
+"messages, <literal>MessageManagerBean</literal> est également responsable "
+"d'extraire la liste des messages. Il y a plusieurs façons pour l'utilisateur "
+"de naviguer vers cette page, et toutes ne sont pas précédées d'une action "
+"JSF - par exemple, l'utilisateur aura peut-être mis la page en signet. "
+"Ainsi, la tâche de récupération de la liste des messages est effectuée dans "
+"une <emphasis>méthode de fabrication</emphasis> de Seam, et non dans une "
+"méthode de listener d'actions."
+
+#. Tag: para
+#: Tutorial.xml:436
+#, no-c-format
+msgid ""
+"We want to cache the list of messages in memory between server requests, so "
+"we will make this a stateful session bean."
+msgstr ""
+"Nous désirons mettre en mémoire cache la liste des messages entre les "
+"requêtes du serveur, par conséquent le bean session sera stateful."
+
+#. Tag: programlisting
+#: Tutorial.xml:450
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Scope(SESSION)\n"
+"@Name(\"messageManager\")\n"
+"public class MessageManagerBean implements Serializable, MessageManager\n"
+"{\n"
+"\n"
+"   @DataModel\n"
+"   private List&lt;Message&gt; messageList;\n"
+"   \n"
+"   @DataModelSelection\n"
+"   @Out(required=false)\n"
+"   private Message message;\n"
+"   \n"
+"   @PersistenceContext(type=EXTENDED)\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @Factory(\"messageList\")\n"
+"   public void findMessages()\n"
+"   {\n"
+"      messageList = em.createQuery(\"from Message msg order by msg.datetime "
+"desc\").getResultList();\n"
+"   }\n"
+"   \n"
+"   public void select()\n"
+"   {\n"
+"      message.setRead(true);\n"
+"   }\n"
+"   \n"
+"   public void delete()\n"
+"   {\n"
+"      messageList.remove(message);\n"
+"      em.remove(message);\n"
+"      message=null;\n"
+"   }\n"
+"   \n"
+"   @Remove @Destroy\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+"@Stateful\n"
+"@Scope(SESSION)\n"
+"@Name(\"messageManager\")\n"
+"public class MessageManagerBean implements Serializable, MessageManager\n"
+"{\n"
+"\n"
+"   @DataModel\n"
+"   private List&lt;Message&gt; messageList;\n"
+"   \n"
+"   @DataModelSelection\n"
+"   @Out(required=false)\n"
+"   private Message message;\n"
+"   \n"
+"   @PersistenceContext(type=EXTENDED)\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @Factory(\"messageList\")\n"
+"   public void findMessages()\n"
+"   {\n"
+"      messageList = em.createQuery(\"from Message msg order by msg.datetime "
+"desc\").getResultList();\n"
+"   }\n"
+"   \n"
+"   public void select()\n"
+"   {\n"
+"      message.setRead(true);\n"
+"   }\n"
+"   \n"
+"   public void delete()\n"
+"   {\n"
+"      messageList.remove(message);\n"
+"      em.remove(message);\n"
+"      message=null;\n"
+"   }\n"
+"   \n"
+"   @Remove @Destroy\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:453
+#, no-c-format
+msgid ""
+"The <literal>@DataModel</literal> annotation exposes an attibute of type "
+"<literal>java.util.List</literal> to the JSF page as an instance of "
+"<literal>javax.faces.model.DataModel</literal>. This allows us to use the "
+"list in a JSF <literal>&lt;h:dataTable&gt;</literal> with clickable links "
+"for each row. In this case, the <literal>DataModel</literal> is made "
+"available in a session context variable named <literal>messageList</literal>."
+msgstr ""
+"L'annotation <literal>@DataModel</literal> expose un attribut de type "
+"<literal>java.util.List</literal> à la page JSF en tant qu'instance de "
+"<literal>javax.faces.model.DataModel</literal>. Cela nous permet d'utiliser "
+"la liste dans un <literal>&lt;h:dataTable&gt;</literal> de JSF, avec des "
+"liens cliquables pour chaque rangée. Dans ce cas, le <literal>DataModel</"
+"literal> est rendu disponible dans une variable de contexte de session, "
+"appelée <literal>messageList</literal>."
+
+#. Tag: para
+#: Tutorial.xml:458
+#, no-c-format
+msgid ""
+"The <literal>@DataModelSelection</literal> annotation tells Seam to inject "
+"the <literal>List</literal> element that corresponded to the clicked link."
+msgstr ""
+"L'annotation <literal>@DataModelSelection</literal> indique à Seam "
+"d'injecter l'élément de la <literal>List</literal> qui correspondait au lien "
+"cliqué."
+
+#. Tag: para
+#: Tutorial.xml:463
+#, no-c-format
+msgid ""
+"The <literal>@Out</literal> annotation then exposes the selected value "
+"directly to the page. So ever time a row of the clickable list is selected, "
+"the <literal>Message</literal> is injected to the attribute of the stateful "
+"bean, and the subsequently <emphasis>outjected</emphasis> to the event "
+"context variable named <literal>message</literal>."
+msgstr ""
+"L'annotation <literal>@Out</literal> expose alors le répertoire de la valeur "
+"sélectionnée à la page. Ainsi, à chaque fois qu'une rangée de la liste "
+"cliquable est sélectionnée, le <literal>Message</literal> est injecté à "
+"l'attribut du bean stateful, et ensuite il est <emphasis>outjecté</emphasis> "
+"vers la variable de contexte d'évènement, appelée <literal>message</literal>."
+
+#. Tag: para
+#: Tutorial.xml:468
+#, no-c-format
+msgid ""
+"This stateful bean has an EJB3 <emphasis>extended persistence context</"
+"emphasis>. The messages retrieved in the query remain in the managed state "
+"as long as the bean exists, so any subsequent method calls to the stateful "
+"bean can update them without needing to make any explicit call to the "
+"<literal>EntityManager</literal>."
+msgstr ""
+"Ce bean stateful a un <emphasis>contexte de persistance étendu</emphasis> "
+"EJB3. Les messages extraits dans la requête restent dans un état géré, aussi "
+"longtemps que le bean existe, ainsi tous les appels de méthodes subséquents "
+"aux beans stateful peuvent les mettre à jour sans avoir à lancer un appel "
+"explicite au <literal>EntityManager</literal>."
+
+#. Tag: para
+#: Tutorial.xml:473
+#, no-c-format
+msgid ""
+"The first time we navigate to the JSP page, there will be no value in the "
+"<literal>messageList</literal> context variable. The <literal>@Factory</"
+"literal> annotation tells Seam to create an instance of "
+"<literal>MessageManagerBean</literal> and invoke the <literal>findMessages()"
+"</literal> method to initialize the value. We call <literal>findMessages()</"
+"literal> a <emphasis>factory method</emphasis> for <literal>messages</"
+"literal>."
+msgstr ""
+"La première fois que nous naviguons vers la page JSP, il n'y aura pas de "
+"valeur dans la variable de contexte <literal>messageList</literal>. "
+"L'annotation <literal>@Factory</literal> indique à Seam de créer une "
+"instance de <literal>MessageManagerBean</literal> et d'appeler la méthode "
+"<literal>findMessages()</literal> pour initialiser la valeur. Nous appelons "
+"<literal>findMessages()</literal> une <emphasis>méthode de fabrication</"
+"emphasis> pour <literal>messages</literal>."
+
+#. Tag: para
+#: Tutorial.xml:478
+#, no-c-format
+msgid ""
+"The <literal>select()</literal> action listener method marks the selected "
+"<literal>Message</literal> as read, and updates it in the database."
+msgstr ""
+"La méthode de listener d'actions <literal>select()</literal> marque le "
+"<literal>Message</literal> sélectionné comme lu, et le met à jour dans la "
+"base de données. "
+
+#. Tag: para
+#: Tutorial.xml:483
+#, no-c-format
+msgid ""
+"The <literal>delete()</literal> action listener method removes the selected "
+"<literal>Message</literal> from the database."
+msgstr ""
+"La méthode de listener d'actions <literal>delete()</literal> supprime le "
+"<literal>Message</literal> sélectionné de la base de données."
+
+#. Tag: para
+#: Tutorial.xml:488
+#, no-c-format
+msgid ""
+"All stateful session bean Seam components <emphasis>must</emphasis> have a "
+"method marked <literal>@Remove @Destroy</literal> to ensure that Seam will "
+"remove the stateful bean when the Seam context ends, and clean up any server-"
+"side state."
+msgstr ""
+"Tous les composants Seam de bean session stateful <emphasis>doivent</"
+"emphasis> avoir une méthode marquée <literal>@Remove @Destroy</literal> pour "
+"assurer que Seam supprimera le bean stateful quand le contexte Seam se "
+"termine et videra tout état côté serveur. "
+
+#. Tag: para
+#: Tutorial.xml:495
+#, no-c-format
+msgid ""
+"Note that this is a session-scoped Seam component. It is associated with the "
+"user login session, and all requests from a login session share the same "
+"instance of the component. (In Seam applications, we usually use session-"
+"scoped components sparingly.)"
+msgstr ""
+"Notez que c'est un composant Seam, porté par la session. Il est associé à la "
+"session de connexion de l'utilisateur, et toutes les requêtes d'une session "
+"de connexion partagent la même instance du composant. (En général dans les "
+"applications Seam, nous utilisons les composants, portés par la session avec "
+"parsimonie.)"
+
+#. Tag: title
+#: Tutorial.xml:501
+#, no-c-format
+msgid ""
+"The session bean local interface: <literal>MessageManager.java</literal>"
+msgstr ""
+"L'interface du bean session locale : <literal>MessageManager.java</literal>"
+
+#. Tag: para
+#: Tutorial.xml:502
+#, no-c-format
+msgid "All session beans have a business interface, of course."
+msgstr "Tous les beans session ont évidemment une interface métier. "
+
+#. Tag: programlisting
+#: Tutorial.xml:505
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface MessageManager\n"
+"{\n"
+"   public void findMessages();\n"
+"   public void select();\n"
+"   public void delete();\n"
+"   public void destroy();\n"
+"}"
+msgstr ""
+"@Local\n"
+"public interface MessageManager\n"
+"{\n"
+"   public void findMessages();\n"
+"   public void select();\n"
+"   public void delete();\n"
+"   public void destroy();\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:506
+#, fuzzy, no-c-format
+msgid "From now on, we won&#39;t show local interfaces in our code examples."
+msgstr ""
+"À partir de maintenant, nous ne montrerons pas les interfaces locales dans "
+"nos exemples de code."
+
+#. Tag: para
+#: Tutorial.xml:509
+#, fuzzy, no-c-format
+msgid ""
+"Let&#39;s skip over <literal>components.xml</literal>, <literal>persistence."
+"xml</literal>, <literal>web.xml</literal>, <literal>ejb-jar.xml</literal>, "
+"<literal>faces-config.xml</literal> and <literal>application.xml</literal> "
+"since they are much the same as the previous example, and go straight to the "
+"JSP."
+msgstr ""
+"Laissons de côté <literal>components.xml</literal>, <literal>persistence."
+"xml</literal>, <literal>web.xml</literal>, <literal>ejb-jar.xml</literal>, "
+"<literal>faces-config.xml</literal> et <literal>application.xml</literal> "
+"puisqu'ils sont pratiquement identiques aux exemples précédents et passons "
+"directement au JSP."
+
+#. Tag: title
+#: Tutorial.xml:515
+#, no-c-format
+msgid "The view: <literal>messages.jsp</literal>"
+msgstr "L'affichage : <literal>messages.jsp</literal>"
+
+#. Tag: para
+#: Tutorial.xml:516
+#, no-c-format
+msgid ""
+"The JSP page is a straightforward use of the JSF <literal>&lt;h:dataTable&gt;"
+"</literal> component. Again, nothing specific to Seam."
+msgstr ""
+"La page JSP est une utilisation simple du composant <literal>&lt;h:"
+"dataTable&gt;</literal> JSF. Encore une fois, rien de spécifique à Seam."
+
+#. Tag: programlisting
+#: Tutorial.xml:519
+#, fuzzy, no-c-format
+msgid ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" %&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Messages&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;h2&gt;Message List&lt;/h2&gt;\n"
+"     &lt;h:outputText value=\"No messages to display\" rendered=\"#"
+"{messageList.rowCount==0}\"/&gt;\n"
+"     &lt;h:dataTable var=\"msg\" value=\"#{messageList}\" rendered=\"#"
+"{messageList.rowCount&gt;0}\"&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Read\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:selectBooleanCheckbox value=\"#{msg.read}\" disabled=\"true"
+"\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Title\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:commandLink value=\"#{msg.title}\" action=\"#"
+"{messageManager.select}\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Date/Time\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:outputText value=\"#{msg.datetime}\"&gt;\n"
+"              &lt;f:convertDateTime type=\"both\" dateStyle=\"medium\" "
+"timeStyle=\"short\"/&gt;\n"
+"           &lt;/h:outputText&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;h:commandButton value=\"Delete\" action=\"#{messageManager."
+"delete}\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"     &lt;/h:dataTable&gt;\n"
+"     &lt;h3&gt;&lt;h:outputText value=\"#{message.title}\"/&gt;&lt;/h3&gt;\n"
+"     &lt;div&gt;&lt;h:outputText value=\"#{message.text}\"/&gt;&lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Messages&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;h2&gt;Message List&lt;/h2&gt;\n"
+"     &lt;h:outputText value=\"No messages to display\" rendered=\"#"
+"{messageList.rowCount==0}\"/&gt;\n"
+"     &lt;h:dataTable var=\"msg\" value=\"#{messageList}\" rendered=\"#"
+"{messageList.rowCount&gt;0}\"&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Read\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:selectBooleanCheckbox value=\"#{msg.read}\" disabled=\"true"
+"\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Title\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:commandLink value=\"#{msg.title}\" action=\"#"
+"{messageManager.select}\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Date/Time\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:outputText value=\"#{msg.datetime}\"&gt;\n"
+"              &lt;f:convertDateTime type=\"both\" dateStyle=\"medium\" "
+"timeStyle=\"short\"/&gt;\n"
+"           &lt;/h:outputText&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;h:commandButton value=\"Delete\" action=\"#{messageManager."
+"delete}\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"     &lt;/h:dataTable&gt;\n"
+"     &lt;h3&gt;&lt;h:outputText value=\"#{message.title}\"/&gt;&lt;/h3&gt;\n"
+"     &lt;div&gt;&lt;h:outputText value=\"#{message.text}\"/&gt;&lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+
+#. Tag: para
+#: Tutorial.xml:527
+#, no-c-format
+msgid ""
+"The first time we navigate to the <literal>messages.jsp</literal> page, "
+"whether by a JSF postback (faces request) or a direct browser GET request "
+"(non-faces request), the page will try to resolve the <literal>messageList</"
+"literal> context variable. Since this context variable is not initialized, "
+"Seam will call the factory method <literal>findMessages()</literal>, which "
+"performs a query against the database and results in a <literal>DataModel</"
+"literal> being outjected. This <literal>DataModel</literal> provides the row "
+"data needed for rendering the <literal>&lt;h:dataTable&gt;</literal>."
+msgstr ""
+"La première fois que nous naviguons à la page <literal>messages.jsp</"
+"literal>, que ce soit par un postback JSF (requête faces) ou une requête "
+"directe navigateur GET (requête non-faces), la page tentera de résoudre la "
+"variable de contexte <literal>messageList</literal>. Étant donné que cette "
+"variable de contexte n'est pas initialisée, Seam appellera la méthode de "
+"fabrication <literal>findMessages()</literal>, qui effectue une requête par "
+"rapport à la base de données et aux résultats dans un <literal>DataModel</"
+"literal> qui est outjecté. Ce <literal>DataModel</literal> fournit les "
+"données de rangée nécessaires pour le rendu de <literal>&lt;h:dataTable&gt;</"
+"literal>."
+
+#. Tag: para
+#: Tutorial.xml:530
+#, no-c-format
+msgid ""
+"When the user clicks the <literal>&lt;h:commandLink&gt;</literal>, JSF calls "
+"the <literal>select()</literal> action listener. Seam intercepts this call "
+"and injects the selected row data into the <literal>message</literal> "
+"attribute of the <literal>messageManager</literal> component. The action "
+"listener fires, marking the selected <literal>Message</literal> as read. At "
+"the end of the call, Seam outjects the selected <literal>Message</literal> "
+"to the context variable named <literal>message</literal>. Next, the EJB "
+"container commits the transaction, and the change to the <literal>Message</"
+"literal> is flushed to the database. Finally, the page is re-rendered, "
+"redisplaying the message list, and displaying the selected message below it."
+msgstr ""
+"Quand l'utilisateur clique sur le <literal>&lt;h:commandLink&gt;</literal>, "
+"JSF appelle le listener d'actions <literal>select()</literal>. Seam "
+"intercepte cet appel et injecte les données de la rangée sélectionnée dans "
+"l'attribut <literal>message</literal> du composant <literal>messageManager</"
+"literal>. Le listener d'actions s'exécute, et marque le <literal>Message</"
+"literal> sélectionné, comme lu. À la fin de l'appel, Seam outjecte le "
+"<literal>Message</literal> sélectionné à la variable de contexte, appelée "
+"<literal>message</literal>. Puis, le conteneur d'EJB sauvegarde la "
+"transaction, et la modificaiton sur le <literal>Message</literal> est vidée "
+"dans la base de données. Enfin, la page est réaffichée, avec la liste des "
+"messages, et indiquant le message sélectionné en dessous."
+
+#. Tag: para
+#: Tutorial.xml:533
+#, no-c-format
+msgid ""
+"If the user clicks the <literal>&lt;h:commandButton&gt;</literal>, JSF calls "
+"the <literal>delete()</literal> action listener. Seam intercepts this call "
+"and injects the selected row data into the <literal>message</literal> "
+"attribute of the <literal>messageList</literal> component. The action "
+"listener fires, removing the selected <literal>Message</literal> from the "
+"list, and also calling <literal>remove()</literal> on the "
+"<literal>EntityManager</literal>. At the end of the call, Seam refreshes the "
+"<literal>messageList</literal> context variable and clears the context "
+"variable named <literal>message</literal>. The EJB container commits the "
+"transaction, and deletes the <literal>Message</literal> from the database. "
+"Finally, the page is re-rendered, redisplaying the message list."
+msgstr ""
+"Si l'utilisateur clique sur le <literal>&lt;h:commandButton&gt;</literal>, "
+"JSF appelle le listener d'actions <literal>delete()</literal>. Seam "
+"intercepte cet appel et injecte les données de la rangée sélectionnée dans "
+"l'attribut <literal>message</literal> du composant <literal>messageList</"
+"literal>. Le listener d'actions s'exécute, vide le <literal>Message</"
+"literal> de la liste et appelle également <literal>remove()</literal> sur le "
+"<literal>EntityManager</literal>. À la fin de l'appel, Seam rafraîchit la "
+"variable de contexte <literal>messageList</literal> et supprime la variable "
+"de contexte, appelée <literal>message</literal>. Le conteneur d'EJB "
+"sauvegarde la transaction, et supprime le <literal>Message</literal> de la "
+"base de données. Enfin, la page est re-affichée, et elle ré-affiche la liste "
+"de messages."
+
+#. Tag: title
+#: Tutorial.xml:541
+#, no-c-format
+msgid "Seam and jBPM: the todo list example"
+msgstr "Seam et jBPM : l'exemple de la liste todo "
+
+#. Tag: para
+#: Tutorial.xml:542
+#, fuzzy, no-c-format
+msgid ""
+"jBPM provides sophisticated functionality for workflow and task management. "
+"To get a small taste of how jBPM integrates with Seam, we&#39;ll show you a "
+"simple \"todo list\" application. Since managing lists of tasks is such core "
+"functionality for jBPM, there is hardly any Java code at all in this example."
+msgstr ""
+"jBPM fournit une fonctionnalité sophistiquée pour la gestion de tâches et le "
+"flux de production. Pour un aperçu de la manière dont jBPM intègre Seam, "
+"nous vous montrons une simple application \"liste todo\". Étant donné que la "
+"gestion des listes de tâches est une fonctionnalité majeure pour jBPM, il "
+"n'y a pratiquement pas de code Java dans cet exemple. "
+
+#. Tag: para
+#: Tutorial.xml:555
+#, fuzzy, no-c-format
+msgid ""
+"The center of this example is the jBPM process definition. There are also "
+"two JSPs and two trivial JavaBeans (There was no reason to use session "
+"beans, since they do not access the database, or have any other "
+"transactional behavior). Let&#39;s start with the process definition:"
+msgstr ""
+"Le coeur de cet exemple est la définition du processus jBPM. Il y a "
+"également deux JSP et deux JavaBeans triviaux (Il n'y pas de raison "
+"d'utiliser les beans session, étant donné qu'ils n'accèdent pas à la base de "
+"données, ou qu'ils n'ont aucun autre comportement transactionnel). "
+"Commençons par la définition du processus :"
+
+#. Tag: programlisting
+#: Tutorial.xml:566
+#, no-c-format
+msgid ""
+"&lt;process-definition name=\"todo\"&gt;\n"
+"   \n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"todo\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;task-node name=\"todo\"&gt;\n"
+"      &lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"         &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"      &lt;/task&gt;\n"
+"      &lt;transition to=\"done\"/&gt;\n"
+"   &lt;/task-node&gt;\n"
+"   \n"
+"   &lt;end-state name=\"done\"/&gt;\n"
+"   \n"
+"&lt;/process-definition&gt;"
+msgstr ""
+"&lt;process-definition name=\"todo\"&gt;\n"
+"   \n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"todo\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;task-node name=\"todo\"&gt;\n"
+"      &lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"         &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"      &lt;/task&gt;\n"
+"      &lt;transition to=\"done\"/&gt;\n"
+"   &lt;/task-node&gt;\n"
+"   \n"
+"   &lt;end-state name=\"done\"/&gt;\n"
+"   \n"
+"&lt;/process-definition&gt;"
+
+#. Tag: para
+#: Tutorial.xml:569
+#, no-c-format
+msgid ""
+"The <literal>&lt;start-state&gt;</literal> node represents the logical start "
+"of the process. When the process starts, it immediately transitions to the "
+"<literal>todo</literal> node."
+msgstr ""
+"Le noeud <literal>&lt;start-state&gt;</literal> représente le commencement "
+"logique du processus. Quand ce processus démarre, il passe immédiatement au "
+"noeud <literal>todo</literal>."
+
+#. Tag: para
+#: Tutorial.xml:574
+#, no-c-format
+msgid ""
+"The <literal>&lt;task-node&gt;</literal> node represents a <emphasis>wait "
+"state</emphasis>, where business process execution pauses, waiting for one "
+"or more tasks to be performed."
+msgstr ""
+"Le noeud <literal>&lt;task-node&gt;</literal> représente un <emphasis>état "
+"d'attente</emphasis>, dans lequel l'exécution du processus métier fait une "
+"pause, en attendant une ou plusieurs tâches à accomplir. "
+
+#. Tag: para
+#: Tutorial.xml:579
+#, no-c-format
+msgid ""
+"The <literal>&lt;task&gt;</literal> element defines a task to be performed "
+"by a user. Since there is only one task defined on this node, when it is "
+"complete, execution resumes, and we transition to the end state. The task "
+"gets its description from a Seam component named <literal>todoList</literal> "
+"(one of the JavaBeans)."
+msgstr ""
+"L'élément <literal>&lt;task&gt;</literal> définit une tâche à effectuer par "
+"un utilisateur. Vu qu'il n'y a qu'une tâche définie dans ce mode, quand elle "
+"est terminée, l'exécution reprend, et nous passons à l'état final. La tâche "
+"obtient sa description d'un composant Seam, appelé <literal>todoList</"
+"literal> (un des JavaBeans)."
+
+#. Tag: para
+#: Tutorial.xml:584
+#, no-c-format
+msgid ""
+"Tasks need to be assigned to a user or group of users when they are created. "
+"In this case, the task is assigned to the current user, which we get from a "
+"built-in Seam component named <literal>actor</literal>. Any Seam component "
+"may be used to perform task assignment."
+msgstr ""
+"Les tâches doivent être attribuées à un utilisateur ou groupe d'utilisateurs "
+"quand elles sont crées. Dans ce cas, la tâche est attribuée à l'utilisateur "
+"courant, que nous obtenons depuis le composant Seam imbriqué, appelé "
+"<literal>actor</literal>. Tout composant Seam peut être utilisé pour "
+"effectuer une attribution de tâche."
+
+#. Tag: para
+#: Tutorial.xml:589
+#, no-c-format
+msgid ""
+"The <literal>&lt;end-state&gt;</literal> node defines the logical end of the "
+"business process. When execution reaches this node, the process instance is "
+"destroyed."
+msgstr ""
+"Le noeud <literal>&lt;end-state&gt;</literal> définit la fin logique du "
+"processus métier. Quand l'exécution parvient à ce noeud, l'instance du "
+"processus est détruite. "
+
+#. Tag: para
+#: Tutorial.xml:596
+#, no-c-format
+msgid ""
+"If we view this process definition using the process definition editor "
+"provided by JBossIDE, this is what it looks like:"
+msgstr ""
+"Si nous affichons cette définition de processus en utilisant l'éditeur de "
+"définition de processus fourni par JBossIDE, voici à quoi elle ressemble :"
+
+#. Tag: para
+#: Tutorial.xml:607
+#, no-c-format
+msgid ""
+"This document defines our <emphasis>business process</emphasis> as a graph "
+"of nodes. This is the most trivial possible business process: there is one "
+"<emphasis>task</emphasis> to be performed, and when that task is complete, "
+"the business process ends."
+msgstr ""
+"Ce document définit notre <emphasis>processus métier</emphasis> en tant que "
+"graphe de noeuds. C'est un des processus métier les plus triviaux : il y a "
+"une <emphasis>tâche</emphasis> à effectuer, et quand cette tâche est "
+"incomplète, le processus métier se termine."
+
+#. Tag: para
+#: Tutorial.xml:610
+#, no-c-format
+msgid ""
+"The first JavaBean handles the login screen <literal>login.jsp</literal>. "
+"Its job is just to initialize the jBPM actor id using the <literal>actor</"
+"literal> component. (In a real application, it would also need to "
+"authenticate the user.)"
+msgstr ""
+"Le premier JavaBean traite l'écran de connexion <literal>login.jsp</"
+"literal>. Son travail est juste d'initialiser l'id de l'acteur jBPM, avec le "
+"composant <literal>actor</literal>. (Dans une vraie application, il devra "
+"aussi identifier l'utilisateur.)"
+
+#. Tag: programlisting
+#: Tutorial.xml:613
+#, no-c-format
+msgid ""
+"@Name(\"login\")\n"
+"public class Login {\n"
+"   \n"
+"   @In\n"
+"   private Actor actor;\n"
+"   \n"
+"   private String user;\n"
+"\n"
+"   public String getUser() {\n"
+"      return user;\n"
+"   }\n"
+"\n"
+"   public void setUser(String user) {\n"
+"      this.user = user;\n"
+"   }\n"
+"   \n"
+"   public String login()\n"
+"   {\n"
+"      actor.setId(user);\n"
+"      return \"/todo.jsp\";\n"
+"   }\n"
+"}"
+msgstr ""
+"@Name(\"login\")\n"
+"public class Login {\n"
+"   \n"
+"   @In\n"
+"   private Actor actor;\n"
+"   \n"
+"   private String user;\n"
+"\n"
+"   public String getUser() {\n"
+"      return user;\n"
+"   }\n"
+"\n"
+"   public void setUser(String user) {\n"
+"      this.user = user;\n"
+"   }\n"
+"   \n"
+"   public String login()\n"
+"   {\n"
+"      actor.setId(user);\n"
+"      return \"/todo.jsp\";\n"
+"   }\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:614
+#, no-c-format
+msgid ""
+"Here we see the use of <literal>@In</literal> to inject the built-in "
+"<literal>Actor</literal> component."
+msgstr ""
+"Ici nous observons l'utilisation de <literal>@In</literal> pour injecter le "
+"composant imbriqué <literal>Actor</literal>."
+
+#. Tag: para
+#: Tutorial.xml:617
+#, no-c-format
+msgid "The JSP itself is trivial:"
+msgstr "Le JSP lui même est trivial :"
+
+#. Tag: programlisting
+#: Tutorial.xml:620
+#, fuzzy, no-c-format
+msgid ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"%&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"%&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Login&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Login&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    &lt;h:form&gt;\n"
+"      &lt;div&gt;\n"
+"        &lt;h:inputText value=\"#{login.user}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Login\" action=\"#{login.login}\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"    &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"&#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"&#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Login&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Login&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    &lt;h:form&gt;\n"
+"      &lt;div&gt;\n"
+"        &lt;h:inputText value=\"#{login.user}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Login\" action=\"#{login.login}\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"    &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+
+#. Tag: para
+#: Tutorial.xml:621
+#, no-c-format
+msgid ""
+"The second JavaBean is responsible for starting business process instances, "
+"and ending tasks."
+msgstr ""
+"Le second JavaBean a la responsabilité de démarrer les instances de "
+"processus métier et de terminer les tâches."
+
+#. Tag: programlisting
+#: Tutorial.xml:630
+#, no-c-format
+msgid ""
+"@Name(\"todoList\")\n"
+"public class TodoList {\n"
+"   \n"
+"   private String description;\n"
+"   \n"
+"   public String getDescription()\n"
+"   {\n"
+"      return description;\n"
+"   }\n"
+"\n"
+"   public void setDescription(String description) {\n"
+"      this.description = description;\n"
+"   }\n"
+"   \n"
+"   @CreateProcess(definition=\"todo\")\n"
+"   public void createTodo() {}\n"
+"   \n"
+"   @StartTask @EndTask\n"
+"   public void done() {}\n"
+"\n"
+"}"
+msgstr ""
+"@Name(\"todoList\")\n"
+"public class TodoList {\n"
+"   \n"
+"   private String description;\n"
+"   \n"
+"   public String getDescription()\n"
+"   {\n"
+"      return description;\n"
+"   }\n"
+"\n"
+"   public void setDescription(String description) {\n"
+"      this.description = description;\n"
+"   }\n"
+"   \n"
+"   @CreateProcess(definition=\"todo\")\n"
+"   public void createTodo() {}\n"
+"   \n"
+"   @StartTask @EndTask\n"
+"   public void done() {}\n"
+"\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:633
+#, no-c-format
+msgid ""
+"The description property accepts user input form the JSP page, and exposes "
+"it to the process definition, allowing the task description to be set."
+msgstr ""
+"La propriété de description accepte l'entrée de l'utilisateur depuis la page "
+"JSP, et l'expose à la définition du processus, permettant ainsi la "
+"définition de la description de la tâche."
+
+#. Tag: para
+#: Tutorial.xml:638
+#, no-c-format
+msgid ""
+"The Seam <literal>@CreateProcess</literal> annotation creates a new jBPM "
+"process instance for the named process definition."
+msgstr ""
+"L'annotation <literal>@CreateProcess</literal> de Seam crée une nouvelle "
+"instance du processus jBPM pour la définition du processus nommée. "
+
+#. Tag: para
+#: Tutorial.xml:643
+#, no-c-format
+msgid ""
+"The Seam <literal>@StartTask</literal> annotation starts work on a task. The "
+"<literal>@EndTask</literal> ends the task, and allows the business process "
+"execution to resume."
+msgstr ""
+"L'annotation <literal>@StartTask</literal> de Seam, commence à travailler "
+"sur une tâche. Le <literal>@EndTask</literal> termine la tâche et permet à "
+"l'exécution du processus métier de reprendre."
+
+#. Tag: para
+#: Tutorial.xml:650
+#, no-c-format
+msgid ""
+"In a more realistic example, <literal>@StartTask</literal> and "
+"<literal>@EndTask</literal> would not appear on the same method, because "
+"there is usually work to be done using the application in order to complete "
+"the task."
+msgstr ""
+"Dans un exemple plus réaliste, <literal>@StartTask</literal> et "
+"<literal>@EndTask</literal> n'apparaîtrait pas sur la même méthode, parce "
+"qu'en général, il y a du travail à effectuer à l'aide de l'application afin "
+"de terminer la tâche. "
+
+#. Tag: para
+#: Tutorial.xml:653
+#, no-c-format
+msgid "Finally, the meat of the application is in <literal>todo.jsp</literal>:"
+msgstr ""
+"Enfin, l'essentiel de l'application est dans <literal>todo.jsp</literal> :"
+
+#. Tag: programlisting
+#: Tutorial.xml:656
+#, fuzzy, no-c-format
+msgid ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://jboss.com/products/seam/taglib\" prefix=\"s\" %"
+"&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Todo List&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Todo List&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"   &lt;h:form id=\"list\"&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:outputText value=\"There are no todo items.\" rendered=\"#"
+"{empty \n"
+"                                       taskInstanceList}\"/&gt;\n"
+"         &lt;h:dataTable value=\"#{taskInstanceList}\" var=\"task\" rendered="
+"\"#{not empty \n"
+"                                       taskInstanceList}\"&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Description\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.description}\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Created\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:outputText value=\"#{task.taskMgmtInstance."
+"processInstance.start}\"&gt;\n"
+"                    &lt;f:convertDateTime type=\"date\"/&gt;\n"
+"                &lt;/h:outputText&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Priority\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.priority}\" style=\"width: 30"
+"\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Due Date\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.dueDate}\" style=\"width: 100"
+"\"&gt;\n"
+"                    &lt;f:convertDateTime type=\"date\" dateStyle=\"short\"/"
+"&gt;\n"
+"                &lt;/h:inputText&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;s:button value=\"Done\" action=\"#{todoList.done}\" "
+"taskInstance=\"#{task}\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"         &lt;/h:dataTable&gt;\n"
+"      &lt;/div&gt;\n"
+"      &lt;div&gt;\n"
+"      &lt;h:messages/&gt;\n"
+"      &lt;/div&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:commandButton value=\"Update Items\" action=\"update\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"   &lt;h:form id=\"new\"&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:inputText value=\"#{todoList.description}\"/&gt;\n"
+"         &lt;h:commandButton value=\"Create New Item\" action=\"#{todoList."
+"createTodo}\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://jboss.com/products/seam/taglib\" prefix=\"s\" "
+"&#37;&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Todo List&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Todo List&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"   &lt;h:form id=\"list\"&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:outputText value=\"There are no todo items.\" rendered=\"#"
+"{empty \n"
+"             taskInstanceList}\"/&gt;\n"
+"         &lt;h:dataTable value=\"#{taskInstanceList}\" var=\"task\" rendered="
+"\"#{not empty taskInstanceList}\"&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Description\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.description}\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Created\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:outputText value=\"#{task.taskMgmtInstance."
+"processInstance.start}\"&gt;\n"
+"                    &lt;f:convertDateTime type=\"date\"/&gt;\n"
+"                &lt;/h:outputText&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Priority\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.priority}\" style=\"width: 30"
+"\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Due Date\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.dueDate}\" style=\"width: 100"
+"\"&gt;\n"
+"                    &lt;f:convertDateTime type=\"date\" dateStyle=\"short\"/"
+"&gt;\n"
+"                &lt;/h:inputText&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;s:button value=\"Done\" action=\"#{todoList.done}\" "
+"taskInstance=\"#{task}\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"         &lt;/h:dataTable&gt;\n"
+"      &lt;/div&gt;\n"
+"      &lt;div&gt;\n"
+"      &lt;h:messages/&gt;\n"
+"      &lt;/div&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:commandButton value=\"Update Items\" action=\"update\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"   &lt;h:form id=\"new\"&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:inputText value=\"#{todoList.description}\"/&gt;\n"
+"         &lt;h:commandButton value=\"Create New Item\" action=\"#{todoList."
+"createTodo}\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+
+#. Tag: para
+#: Tutorial.xml:657
+#, fuzzy, no-c-format
+msgid "Let&#39;s take this one piece at a time."
+msgstr "Procédons étape par étape."
+
+#. Tag: para
+#: Tutorial.xml:660
+#, no-c-format
+msgid ""
+"The page renders a list of tasks, which it gets from a built-in Seam "
+"component named <literal>taskInstanceList</literal>. The list is defined "
+"inside a JSF form."
+msgstr ""
+"La page affiche une liste de tâches, qu'elle obtient d'un composant imbriqué "
+"de Seam, appelé<literal>taskInstanceList</literal>. La liste est définie à "
+"l'intérieur d'un formulaire JSF."
+
+#. Tag: programlisting
+#: Tutorial.xml:663
+#, no-c-format
+msgid ""
+"&lt;h:form id=\"list\"&gt;\n"
+"   &lt;div&gt;\n"
+"      &lt;h:outputText value=\"There are no todo items.\" rendered=\"#{empty "
+"taskInstanceList}\"/&gt;\n"
+"      &lt;h:dataTable value=\"#{taskInstanceList}\" var=\"task\" rendered=\"#"
+"{not empty taskInstanceList}\"&gt;\n"
+"         ...\n"
+"      &lt;/h:dataTable&gt;\n"
+"   &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h:form id=\"list\"&gt;\n"
+"   &lt;div&gt;\n"
+"      &lt;h:outputText value=\"There are no todo items.\" rendered=\"#{empty "
+"taskInstanceList}\"/&gt;\n"
+"      &lt;h:dataTable value=\"#{taskInstanceList}\" var=\"task\" rendered=\"#"
+"{not empty taskInstanceList}\"&gt;\n"
+"         ...\n"
+"      &lt;/h:dataTable&gt;\n"
+"   &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+
+#. Tag: para
+#: Tutorial.xml:664
+#, no-c-format
+msgid ""
+"Each element of the list is an instance of the jBPM class "
+"<literal>TaskInstance</literal>. The following code simply displays the "
+"interesting properties of each task in the list. For the description, "
+"priority and due date, we use input controls, to allow the user to update "
+"these values."
+msgstr ""
+"Chaque élément de la liste est une instance de la classe "
+"<literal>TaskInstance</literal>jBPM. Le code suivant affiche simplement les "
+"propriétés intéressantes de chaque tâche de la liste. Pour une description, "
+"priorité et échéance, nous utilisons des contrôles d'entrée pour permettre à "
+"l'utilisateur de mettre à jour ces valeurs. "
+
+#. Tag: programlisting
+#: Tutorial.xml:667
+#, no-c-format
+msgid ""
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"       &lt;h:outputText value=\"Description\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.description}\"/&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Created\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:outputText value=\"#{task.taskMgmtInstance.processInstance.start}"
+"\"&gt;\n"
+"        &lt;f:convertDateTime type=\"date\"/&gt;\n"
+"    &lt;/h:outputText&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Priority\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.priority}\" style=\"width: 30\"/&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Due Date\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.dueDate}\" style=\"width: 100\"&gt;\n"
+"        &lt;f:convertDateTime type=\"date\" dateStyle=\"short\"/&gt;\n"
+"    &lt;/h:inputText&gt;\n"
+"&lt;/h:column&gt;"
+msgstr ""
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"       &lt;h:outputText value=\"Description\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.description}\"/&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Created\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:outputText value=\"#{task.taskMgmtInstance.processInstance.start}"
+"\"&gt;\n"
+"        &lt;f:convertDateTime type=\"date\"/&gt;\n"
+"    &lt;/h:outputText&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Priority\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.priority}\" style=\"width: 30\"/&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Due Date\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.dueDate}\" style=\"width: 100\"&gt;\n"
+"        &lt;f:convertDateTime type=\"date\" dateStyle=\"short\"/&gt;\n"
+"    &lt;/h:inputText&gt;\n"
+"&lt;/h:column&gt;"
+
+#. Tag: para
+#: Tutorial.xml:668
+#, no-c-format
+msgid ""
+"This button ends the task by calling the action method annotated "
+"<literal>@StartTask @EndTask</literal>. It passes the task id to Seam as a "
+"request parameter:"
+msgstr ""
+"Ce bouton termine la tâche en appelant la méthode d'actions "
+"annotée<literal>@StartTask @EndTask</literal>. Il passe l'id de la tâche à "
+"Seam en tant que paramètre de requête :"
+
+#. Tag: programlisting
+#: Tutorial.xml:671
+#, no-c-format
+msgid ""
+"&lt;h:column&gt;\n"
+"    &lt;s:button value=\"Done\" action=\"#{todoList.done}\" taskInstance=\"#"
+"{task}\"/&gt;\n"
+"&lt;/h:column&gt;"
+msgstr ""
+"&lt;h:column&gt;\n"
+"    &lt;s:button value=\"Done\" action=\"#{todoList.done}\" taskInstance=\"#"
+"{task}\"/&gt;\n"
+"&lt;/h:column&gt;"
+
+#. Tag: para
+#: Tutorial.xml:672
+#, no-c-format
+msgid ""
+"(Note that this is using a Seam <literal>&lt;s:button&gt;</literal> JSF "
+"control from the <literal>seam-ui.jar</literal> package.)"
+msgstr ""
+"(Notez qu'on utilise un <literal>&lt;s:button&gt;</literal> Seam de contrôle "
+"JSF, provenant du paquetage <literal>seam-ui.jar</literal>.)"
+
+#. Tag: para
+#: Tutorial.xml:675
+#, no-c-format
+msgid ""
+"This button is used to update the properties of the tasks. When the form is "
+"submitted, Seam and jBPM will make any changes to the tasks persistent. "
+"There is no need for any action listener method:"
+msgstr ""
+"Ce bouton est utilisé pour mettre à jour les propriétés des tâches. Quand le "
+"formulaire est soumis, Seam et jBPM rendront tous les changements "
+"persistants. Il n'y a pas lieu d'utiliser la méthode de listener d'actions :"
+
+#. Tag: programlisting
+#: Tutorial.xml:678
+#, no-c-format
+msgid "&lt;h:commandButton value=\"Update Items\" action=\"update\"/&gt;"
+msgstr "&lt;h:commandButton value=\"Update Items\" action=\"update\"/&gt;"
+
+#. Tag: para
+#: Tutorial.xml:679
+#, no-c-format
+msgid ""
+"A second form on the page is used to create new items, by calling the action "
+"method annotated <literal>@CreateProcess</literal>."
+msgstr ""
+"Un second formulaire sur la page est utilisé pour créer de nouveaux "
+"articles, en appelant la méthode d'actions annotée <literal>@CreateProcess</"
+"literal>."
+
+#. Tag: programlisting
+#: Tutorial.xml:682
+#, no-c-format
+msgid ""
+"&lt;h:form id=\"new\"&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:inputText value=\"#{todoList.description}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Create New Item\" action=\"#{todoList."
+"createTodo}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h:form id=\"new\"&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:inputText value=\"#{todoList.description}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Create New Item\" action=\"#{todoList."
+"createTodo}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+
+#. Tag: para
+#: Tutorial.xml:683
+#, no-c-format
+msgid ""
+"There are several other files needed for the example, but they are just "
+"standard jBPM and Seam configuration and not very interesting."
+msgstr ""
+"Il y a plusieurs autres fichiers nécessaires à l'exemple, mais ils ont la "
+"configuration jBPM et Seam standard et ne sont pas très intéressants. "
+
+#. Tag: para
+#: Tutorial.xml:690 Tutorial.xml:805 Tutorial.xml:1145 Tutorial.xml:1171
+#: Tutorial.xml:1184
+#, no-c-format
+msgid "TODO"
+msgstr "TODO"
+
+#. Tag: title
+#: Tutorial.xml:698
+#, no-c-format
+msgid "Seam pageflow: the numberguess example"
+msgstr "Flux des pages de Seam : l'exemple numberguess"
+
+#. Tag: para
+#: Tutorial.xml:699
+#, no-c-format
+msgid ""
+"For Seam applications with relatively freeform (ad hoc) navigation, JSF/Seam "
+"navigation rules are a perfectly good way to define the page flow. For "
+"applications with a more constrained style of navigation, especially for "
+"user interfaces which are more stateful, navigation rules make it difficult "
+"to really understand the flow of the system. To understand the flow, you "
+"need to piece it together from the view pages, the actions and the "
+"navigation rules."
+msgstr ""
+"Pour les applications Seam avec une navigation relativement libre (ad hoc), "
+"les règles de navigation JSF/Seam sont une manière parfaite de définir le "
+"flux des pages. Pour les applications avec une style de navigation plus "
+"limité, en particulier pour les interfaces utilisateur qui sont plus "
+"stateful, les règles de navigation font que le flux du système est plus "
+"difficile à cerner. Pour comprendre ce flux, vous devez le reconstituer "
+"depuis les pages d'affichage, les actions et les règles de navigation. "
+
+#. Tag: para
+#: Tutorial.xml:702
+#, no-c-format
+msgid ""
+"Seam allows you to use a jPDL process definition to define pageflow. The "
+"simple number guessing example shows how this is done."
+msgstr ""
+"Seam vous permet d'utiliser une définition du processus jPDL pour définir le "
+"flux des pages. L'exemple simple 'deviner le nombre' indique comment cela "
+"est effectué."
+
+#. Tag: para
+#: Tutorial.xml:715
+#, fuzzy, no-c-format
+msgid ""
+"The example is implemented using one JavaBean, three JSP pages and a jPDL "
+"pageflow definition. Let&#39;s begin with the pageflow:"
+msgstr ""
+"L'exemple est implémenté en utilisant un JavaBean, trois pages JSP et une "
+"définition de flux de pages jPDL. Commençons par le flux de page :"
+
+#. Tag: programlisting
+#: Tutorial.xml:725
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"numberGuess\"&gt;\n"
+"   \n"
+"   &lt;start-page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"          &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"      &lt;/transition&gt;\n"
+"   &lt;/start-page&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess."
+"correctGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateRemainingGuesses\" expression=\"#{numberGuess."
+"lastGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"lose\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"displayGuess\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"lose\" view-id=\"/lose.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+"&lt;pageflow-definition name=\"numberGuess\"&gt;\n"
+"   \n"
+"   &lt;start-page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"          &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"      &lt;/transition&gt;\n"
+"   &lt;/start-page&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess."
+"correctGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateRemainingGuesses\" expression=\"#{numberGuess."
+"lastGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"lose\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"displayGuess\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"lose\" view-id=\"/lose.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+
+#. Tag: para
+#: Tutorial.xml:728
+#, no-c-format
+msgid ""
+"The <literal>&lt;page&gt;</literal> element defines a wait state where the "
+"system displays a particular JSF view and waits for user input. The "
+"<literal>view-id</literal> is the same JSF view id used in plain JSF "
+"navigation rules. The <literal>redirect</literal> attribute tells Seam to "
+"use post-then-redirect when navigating to the page. (This results in "
+"friendly browser URLs.)"
+msgstr ""
+"L'élément <literal>&lt;page&gt;</literal> définit un état d'attente où le "
+"système affiche une vue JSF et attend l'entrée de l'utilisateur. Le "
+"<literal>view-id</literal> est le même id d'affichage JSF que celui utilisé "
+"dans les règles de navigation simples JSF. L'attribut <literal>redirect</"
+"literal> indique à Seam d'utiliser poster et rediriger (de l'anglais post-"
+"then-redirect) quand on navigue vers la page. (Cela entraîne des URL de "
+"navigateur amicaux.)"
+
+#. Tag: para
+#: Tutorial.xml:733
+#, no-c-format
+msgid ""
+"The <literal>&lt;transition&gt;</literal> element names a JSF outcome. The "
+"transition is triggered when a JSF action results in that outcome. Execution "
+"will then proceed to the next node of the pageflow graph, after invocation "
+"of any jBPM transition actions."
+msgstr ""
+"L'élément <literal>&lt;transition&gt;</literal> nomme un résultat JSF. La "
+"transition est déclenchée quand une action JSF entraîne ce résultat. "
+"L'exécution passera alors au prochain noeud du graphe du flux de page, après "
+"invocation de n'importe quelle action de transition jBPM."
+
+#. Tag: para
+#: Tutorial.xml:738
+#, no-c-format
+msgid ""
+"A transition <literal>&lt;action&gt;</literal> is just like a JSF action, "
+"except that it occurs when a jBPM transition occurs. The transition action "
+"can invoke any Seam component."
+msgstr ""
+"Une transition <literal>&lt;action&gt;</literal> est comme une action JSF, "
+"sauf qu'elle a lieu quand une transition jBPM a lieu. L'action de transition "
+"peut appeler n'importe quel composant Seam."
+
+#. Tag: para
+#: Tutorial.xml:743
+#, no-c-format
+msgid ""
+"A <literal>&lt;decision&gt;</literal> node branches the pageflow, and "
+"determines the next node to execute by evaluating a JSF EL expression."
+msgstr ""
+"Un noeud <literal>&lt;decision&gt;</literal> ramifie le flux de page, et "
+"détermine le prochain noeud à exécuter en évaluant une expression JSF EL."
+
+#. Tag: para
+#: Tutorial.xml:750
+#, no-c-format
+msgid "Here is what the pageflow looks like in the JBossIDE pageflow editor:"
+msgstr ""
+"Voici à quoi ressemble le flux de page comme dans l'éditeur de flux de page "
+"JBossIDE :"
+
+#. Tag: para
+#: Tutorial.xml:761
+#, no-c-format
+msgid ""
+"Now that we have seen the pageflow, it is very, very easy to understand the "
+"rest of the application!"
+msgstr ""
+"Maintenant que vous avez vu le flux de page, il est très, très facile de "
+"comprendre le reste de l'application !"
+
+#. Tag: para
+#: Tutorial.xml:764
+#, no-c-format
+msgid ""
+"Here is the main page of the application, <literal>numberGuess.jsp</literal>:"
+msgstr ""
+"Voici la page de manuel de l'application, <literal>numberGuess.jsp</"
+"literal> :"
+
+#. Tag: programlisting
+#: Tutorial.xml:767
+#, fuzzy, no-c-format
+msgid ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"%&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"%&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Guess a number...&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Guess a number...&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    &lt;h:form&gt;\n"
+"        &lt;h:outputText value=\"Higher!\" rendered=\"#{numberGuess."
+"randomNumber&gt;numberGuess.currentGuess}\" /&gt;\n"
+"        &lt;h:outputText value=\"Lower!\" rendered=\"#{numberGuess."
+"randomNumber&lt;numberGuess.currentGuess}\" /&gt;\n"
+"        &lt;br /&gt;\n"
+"        I&#39;m thinking of a number between &lt;h:outputText value=\"#"
+"{numberGuess.smallest}\" /&gt; and \n"
+"        &lt;h:outputText value=\"#{numberGuess.biggest}\" /&gt;. You have \n"
+"        &lt;h:outputText value=\"#{numberGuess.remainingGuesses}\" /&gt; "
+"guesses.\n"
+"        &lt;br /&gt;\n"
+"        Your guess: \n"
+"        &lt;h:inputText value=\"#{numberGuess.currentGuess}\" id=\"guess\" "
+"required=\"true\"&gt;\n"
+"            &lt;f:validateLongRange\n"
+"                maximum=\"#{numberGuess.biggest}\" \n"
+"                minimum=\"#{numberGuess.smallest}\"/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"        &lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"guess"
+"\" /&gt;\n"
+"        &lt;br/&gt;\n"
+"        &lt;h:message for=\"guess\" style=\"color: red\"/&gt;\n"
+"    &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"&#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"&#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Guess a number...&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Guess a number...&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    &lt;h:form&gt;\n"
+"        &lt;h:outputText value=\"Higher!\" rendered=\"#{numberGuess."
+"randomNumber&gt;numberGuess.currentGuess}\" /&gt;\n"
+"        &lt;h:outputText value=\"Lower!\" rendered=\"#{numberGuess."
+"randomNumber&lt;numberGuess.currentGuess}\" /&gt;\n"
+"        &lt;br /&gt;\n"
+"        I'm thinking of a number between &lt;h:outputText value=\"#"
+"{numberGuess.smallest}\" /&gt; and \n"
+"        &lt;h:outputText value=\"#{numberGuess.biggest}\" /&gt;. You have \n"
+"        &lt;h:outputText value=\"#{numberGuess.remainingGuesses}\" /&gt; "
+"guesses.\n"
+"        &lt;br /&gt;\n"
+"        Your guess: \n"
+"        &lt;h:inputText value=\"#{numberGuess.currentGuess}\" id=\"guess\" "
+"required=\"true\"&gt;\n"
+"            &lt;f:validateLongRange\n"
+"                maximum=\"#{numberGuess.biggest}\" \n"
+"                minimum=\"#{numberGuess.smallest}\"/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"        &lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"guess"
+"\" /&gt;\n"
+"        &lt;br/&gt;\n"
+"        &lt;h:message for=\"guess\" style=\"color: red\"/&gt;\n"
+"    &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+
+#. Tag: para
+#: Tutorial.xml:768
+#, no-c-format
+msgid ""
+"Notice how the command button names the <literal>guess</literal> transition "
+"instead of calling an action directly."
+msgstr ""
+"Remarquez comment le bouton de commande nomme la transition <literal>guess</"
+"literal> au lieu d'appeler une action directement. "
+
+#. Tag: para
+#: Tutorial.xml:771
+#, no-c-format
+msgid "The <literal>win.jsp</literal> page is predictable:"
+msgstr "La page <literal>win.jsp</literal> est prévisible :"
+
+#. Tag: programlisting
+#: Tutorial.xml:774
+#, fuzzy, no-c-format
+msgid ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"%&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"%&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;You won!&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;You won!&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    Yes, the answer was &lt;h:outputText value=\"#{numberGuess.currentGuess}"
+"\" /&gt;.\n"
+"    It took you &lt;h:outputText value=\"#{numberGuess.guessCount}\" /&gt; "
+"guesses.\n"
+"    Would you like to &lt;a href=\"numberGuess.seam\"&gt;play again&lt;/"
+"a&gt;?\n"
+"  &lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"&#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"&#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;You won!&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;You won!&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    Yes, the answer was &lt;h:outputText value=\"#{numberGuess.currentGuess}"
+"\" /&gt;.\n"
+"    It took you &lt;h:outputText value=\"#{numberGuess.guessCount}\" /&gt; "
+"guesses.\n"
+"    Would you like to &lt;a href=\"numberGuess.seam\"&gt;play again&lt;/"
+"a&gt;?\n"
+"  &lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+
+#. Tag: para
+#: Tutorial.xml:775
+#, fuzzy, no-c-format
+msgid ""
+"As is <literal>lose.jsp</literal> (which I can&#39;t be bothered copy/"
+"pasting). Finally, the JavaBean Seam component:"
+msgstr ""
+"Tel quel <literal>lose.jsp</literal> (aucune envie de copier/coller). Enfin, "
+"le composant JavaBean Seam :"
+
+#. Tag: programlisting
+#: Tutorial.xml:783
+#, no-c-format
+msgid ""
+"@Name(\"numberGuess\")\n"
+"@Scope(ScopeType.CONVERSATION)\n"
+"public class NumberGuess {\n"
+"   \n"
+"   private int randomNumber;\n"
+"   private Integer currentGuess;\n"
+"   private int biggest;\n"
+"   private int smallest;\n"
+"   private int guessCount;\n"
+"   private int maxGuesses;\n"
+"   \n"
+"   @Create \n"
+"   @Begin(pageflow=\"numberGuess\")\n"
+"   public void begin()\n"
+"   {\n"
+"      randomNumber = new Random().nextInt(100);\n"
+"      guessCount = 0;\n"
+"      biggest = 100;\n"
+"      smallest = 1;\n"
+"   }\n"
+"   \n"
+"   public void setCurrentGuess(Integer guess)\n"
+"   {\n"
+"      this.currentGuess = guess;\n"
+"   }\n"
+"   \n"
+"   public Integer getCurrentGuess()\n"
+"   {\n"
+"      return currentGuess;\n"
+"   }\n"
+"   \n"
+"   public void guess()\n"
+"   {\n"
+"      if (currentGuess&gt;randomNumber)\n"
+"      {\n"
+"         biggest = currentGuess - 1;\n"
+"      }\n"
+"      if (currentGuess&lt;randomNumber)\n"
+"      {\n"
+"         smallest = currentGuess + 1;\n"
+"      }\n"
+"      guessCount ++;\n"
+"   }\n"
+"   \n"
+"   public boolean isCorrectGuess()\n"
+"   {\n"
+"      return currentGuess==randomNumber;\n"
+"   }\n"
+"   \n"
+"   public int getBiggest()\n"
+"   {\n"
+"      return biggest;\n"
+"   }\n"
+"   \n"
+"   public int getSmallest()\n"
+"   {\n"
+"      return smallest;\n"
+"   }\n"
+"   \n"
+"   public int getGuessCount()\n"
+"   {\n"
+"      return guessCount;\n"
+"   }\n"
+"   \n"
+"   public boolean isLastGuess()\n"
+"   {\n"
+"      return guessCount==maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getRemainingGuesses() {\n"
+"      return maxGuesses-guessCount;\n"
+"   }\n"
+"\n"
+"   public void setMaxGuesses(int maxGuesses) {\n"
+"      this.maxGuesses = maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getMaxGuesses() {\n"
+"      return maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getRandomNumber() {\n"
+"      return randomNumber;\n"
+"   }\n"
+"}"
+msgstr ""
+"@Name(\"numberGuess\")\n"
+"@Scope(ScopeType.CONVERSATION)\n"
+"public class NumberGuess {\n"
+"   \n"
+"   private int randomNumber;\n"
+"   private Integer currentGuess;\n"
+"   private int biggest;\n"
+"   private int smallest;\n"
+"   private int guessCount;\n"
+"   private int maxGuesses;\n"
+"   \n"
+"   @Create \n"
+"   @Begin(pageflow=\"numberGuess\")\n"
+"   public void begin()\n"
+"   {\n"
+"      randomNumber = new Random().nextInt(100);\n"
+"      guessCount = 0;\n"
+"      biggest = 100;\n"
+"      smallest = 1;\n"
+"   }\n"
+"   \n"
+"   public void setCurrentGuess(Integer guess)\n"
+"   {\n"
+"      this.currentGuess = guess;\n"
+"   }\n"
+"   \n"
+"   public Integer getCurrentGuess()\n"
+"   {\n"
+"      return currentGuess;\n"
+"   }\n"
+"   \n"
+"   public void guess()\n"
+"   {\n"
+"      if (currentGuess&gt;randomNumber)\n"
+"      {\n"
+"         biggest = currentGuess - 1;\n"
+"      }\n"
+"      if (currentGuess&lt;randomNumber)\n"
+"      {\n"
+"         smallest = currentGuess + 1;\n"
+"      }\n"
+"      guessCount ++;\n"
+"   }\n"
+"   \n"
+"   public boolean isCorrectGuess()\n"
+"   {\n"
+"      return currentGuess==randomNumber;\n"
+"   }\n"
+"   \n"
+"   public int getBiggest()\n"
+"   {\n"
+"      return biggest;\n"
+"   }\n"
+"   \n"
+"   public int getSmallest()\n"
+"   {\n"
+"      return smallest;\n"
+"   }\n"
+"   \n"
+"   public int getGuessCount()\n"
+"   {\n"
+"      return guessCount;\n"
+"   }\n"
+"   \n"
+"   public boolean isLastGuess()\n"
+"   {\n"
+"      return guessCount==maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getRemainingGuesses() {\n"
+"      return maxGuesses-guessCount;\n"
+"   }\n"
+"\n"
+"   public void setMaxGuesses(int maxGuesses) {\n"
+"      this.maxGuesses = maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getMaxGuesses() {\n"
+"      return maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getRandomNumber() {\n"
+"      return randomNumber;\n"
+"   }\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:786
+#, no-c-format
+msgid ""
+"The first time a JSP page asks for a <literal>numberGuess</literal> "
+"component, Seam will create a new one for it, and the <literal>@Create</"
+"literal> method will be invoked, allowing the component to initialize itself."
+msgstr ""
+"La première fois qu'une page JSP demande un composant <literal>numberGuess</"
+"literal>, Seam en créera un nouveau pour celle-ci, et la méthode "
+"<literal>@Create</literal> sera appelée, permettant au composant de "
+"l'initialiser. "
+
+#. Tag: para
+#: Tutorial.xml:791
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>@Begin</literal> annotation starts a Seam "
+"<emphasis>conversation</emphasis> (much more about that later), and "
+"specifies the pageflow definition to use for the conversation&#39;s page "
+"flow."
+msgstr ""
+"L'annotation <literal>@Begin</literal> lance une <emphasis>conversation</"
+"emphasis> Seam (nous y reviendrons plus en détails plus tard), et indique la "
+"définition du flux de page à utiliser pour le flux de page de la "
+"conversation."
+
+#. Tag: para
+#: Tutorial.xml:798
+#, fuzzy, no-c-format
+msgid ""
+"As you can see, this Seam component is pure business logic! It doesn&#39;t "
+"need to know anything at all about the user interaction flow. This makes the "
+"component potentially more reuseable."
+msgstr ""
+"Comme vous pouvez le constater, ce composant Seam est une pure logique "
+"métier ! Il ne doit rien connaître du flux d'interactions de l'utilisateur. "
+"Cela rend le composant potentiellement plus réutilisable. "
+
+#. Tag: title
+#: Tutorial.xml:813
+#, no-c-format
+msgid "A complete Seam application: the Hotel Booking example"
+msgstr ""
+"Une application Seam complète : l'exemple Hotel Booking (réservation d'hôtel)"
+
+#. Tag: title
+#: Tutorial.xml:815
+#, no-c-format
+msgid "Introduction"
+msgstr "Introduction"
+
+#. Tag: para
+#: Tutorial.xml:816
+#, no-c-format
+msgid ""
+"The booking application is a complete hotel room reservation system "
+"incorporating the following features:"
+msgstr ""
+"L'application de réservation est un système de réservation de chambre "
+"d'hôtel complète incorporant les fonctionnalités suivantes :"
+
+#. Tag: para
+#: Tutorial.xml:821
+#, no-c-format
+msgid "User registration"
+msgstr "Enregistrement de l'utilisateur"
+
+#. Tag: para
+#: Tutorial.xml:826
+#, no-c-format
+msgid "Login"
+msgstr "Connexion"
+
+#. Tag: para
+#: Tutorial.xml:831
+#, no-c-format
+msgid "Logout"
+msgstr "Déconnexion"
+
+#. Tag: para
+#: Tutorial.xml:836
+#, no-c-format
+msgid "Set password"
+msgstr "Définir le mot de passe"
+
+#. Tag: para
+#: Tutorial.xml:841
+#, no-c-format
+msgid "Hotel search"
+msgstr "Recherche d'hôtels"
+
+#. Tag: para
+#: Tutorial.xml:846
+#, no-c-format
+msgid "Hotel selection"
+msgstr "Sélection de l'hôtel"
+
+#. Tag: para
+#: Tutorial.xml:851
+#, no-c-format
+msgid "Room reservation"
+msgstr "Réservation de chambre"
+
+#. Tag: para
+#: Tutorial.xml:856
+#, no-c-format
+msgid "Reservation confirmation"
+msgstr "Confirmation de la réservation"
+
+#. Tag: para
+#: Tutorial.xml:861
+#, no-c-format
+msgid "Existing reservation list"
+msgstr "Liste existante des réservations"
+
+#. Tag: screeninfo
+#: Tutorial.xml:866
+#, no-c-format
+msgid "Booking example"
+msgstr "Exemple de réservation"
+
+#. Tag: para
+#: Tutorial.xml:874
+#, no-c-format
+msgid ""
+"The booking application uses JSF, EJB 3.0 and Seam, together with Facelets "
+"for the view. There is also a port of this application to JSF, Facelets, "
+"Seam, JavaBeans and Hibernate3."
+msgstr ""
+"L'application de réservation utilise JSF, EJB 3.0 et Seam, avec Facelets "
+"pour l'affichage. Il y a également un port de cette application pour JSF, "
+"Facelets, Seam, JavaBeans et Hibernate3."
+
+#. Tag: para
+#: Tutorial.xml:877
+#, fuzzy, no-c-format
+msgid ""
+"One of the things you&#39;ll notice if you play with this application for "
+"long enough is that it is extremely <emphasis>robust</emphasis>. You can "
+"play with back buttons and browser refresh and opening multiple windows and "
+"entering nonsensical data as much as you like and you will find it very "
+"difficult to make the application crash. You might think that we spent weeks "
+"testing and fixing bugs to achive this. Actually, this is not the case. Seam "
+"was designed to make it very straightforward to build robust web "
+"applications and a lot of robustness that you are probably used to having to "
+"code yourself comes naturally and automatically with Seam."
+msgstr ""
+"Si vous testez cette application, vous remarquerez qu'elle est "
+"particulièrement <emphasis>robuste</emphasis>. Vous pouvez vous amuser avec "
+"les boutons 'retour' et la page 'actualiser' du navigateur, ouvrir de "
+"multiples fenêtres, entrer des données sans aucun sens, sans réussir à faire "
+"planter l'application. Vous pensez sans doute que nous avons passé des "
+"semaines à tester et à corriger les bogues pour arriver à ce résultat. En "
+"réalité, ce n'est pas le cas. Seam a été conçu pour construire très "
+"simplement des applications web robustes et la robustesse pour laquelle vous "
+"aviez sans doute l'habitude de créer du code, vient naturellement et "
+"automatiquement avec Seam. "
+
+#. Tag: para
+#: Tutorial.xml:880
+#, no-c-format
+msgid ""
+"As you browse the sourcecode of the example application, and learn how the "
+"application works, observe how the declarative state management and "
+"integrated validation has been used to achieve this robustness."
+msgstr ""
+"Quand vous parcourez le code source de l'application exemple et apprenez "
+"comment l'application fonctionne, obervez comment la gestion déclarative "
+"d'état et la validation intégrée a été utilisée pour arriver à cette "
+"robustesse."
+
+#. Tag: title
+#: Tutorial.xml:886
+#, no-c-format
+msgid "Overview of the booking example"
+msgstr "Vue d'ensemble de l'exemple sur les réservations"
+
+#. Tag: para
+#: Tutorial.xml:887
+#, fuzzy, no-c-format
+msgid ""
+"The project structure is identical to the previous one, to install and "
+"deploy this application, please refer to <xref linkend="
+"\"Seam_Reference_Guide-Seam_Tutorial-Try_the_examples\"/>. Once you&#39;ve "
+"successfully started the application, you can access it by pointing your "
+"browser to <ulink url=\"http://localhost:8080/seam-booking/"
+"\"><literal>http://localhost:8080/seam-booking/</literal></ulink>"
+msgstr ""
+"La structure du projet est identique à la précédente, pour installer et "
+"déployer cette application, veuillez consulter <xref linkend=\"Seam_Tutorial-"
+"Try_the_examples\"/>. Une fois que vous avez démarré cette application avec "
+"succès, vous pouvez y accéder avec votre navigateur Web en allant à <ulink "
+"url=\"http://localhost:8080/seam-booking/\"><literal>http://localhost:8080/"
+"seam-booking/</literal></ulink>"
+
+#. Tag: para
+#: Tutorial.xml:890
+#, fuzzy, no-c-format
+msgid ""
+"Just nine classes (plus six session beans local interfaces) where used to "
+"implement this application. Six session bean action listeners contain all "
+"the business logic for the listed features."
+msgstr ""
+"Dix classes en tout (plus six interfaces locales de beans session et une "
+"interface d'annotation) ont été utilisées pour implémenter cette "
+"application. Six listeners de beans session contiennent toute la logique "
+"métier pour les fonctionnalités listées. "
+
+#. Tag: para
+#: Tutorial.xml:895
+#, no-c-format
+msgid ""
+"<literal>BookingListAction</literal> retrieves existing bookings for the "
+"currently logged in user."
+msgstr ""
+"<literal>BookingListAction</literal> récupère les réservations existantes "
+"pour l'utilisateur actuellement connecté."
+
+#. Tag: para
+#: Tutorial.xml:898
+#, no-c-format
+msgid ""
+"<literal>ChangePasswordAction</literal> updates the password of the "
+"currently logged in user."
+msgstr ""
+"<literal>ChangePasswordAction</literal> met à jour le mot de passe de "
+"l'utilisateur actuellement connecté."
+
+#. Tag: para
+#: Tutorial.xml:901
+#, no-c-format
+msgid ""
+"<literal>HotelBookingAction</literal> implements the core functionality of "
+"the application: hotel room searching, selection, booking and booking "
+"confirmation. This functionality is implemented as a <emphasis>conversation</"
+"emphasis>, so this is the most interesting class in the application."
+msgstr ""
+"<literal>HotelBookingAction</literal> implémente la fonctionnalité "
+"essentielle de l'application : recherche de chambre d'hôtel, sélection, "
+"réservation et confirmation de réservation. Cette fonctionnalité est "
+"implémentée en tant que <emphasis>conversation</emphasis>, c'est donc la "
+"classe la plus intéressante dans cette application."
+
+#. Tag: para
+#: Tutorial.xml:904
+#, no-c-format
+msgid "<literal>RegisterAction</literal> registers a new system user."
+msgstr ""
+"<literal>RegisterAction</literal> inscrit une nouvel utilisateur du système."
+
+#. Tag: para
+#: Tutorial.xml:907
+#, fuzzy, no-c-format
+msgid ""
+"Three entity beans implement the application&#39;s persistent domain model."
+msgstr ""
+"Trois beans entité implémentent le modèle de domaine de persistance de "
+"l'applicaiton."
+
+#. Tag: para
+#: Tutorial.xml:912
+#, fuzzy, no-c-format
+msgid "<literal>Hotel</literal> is an entity bean that represents a hotel"
+msgstr "<literal>Hotel</literal> est un bean entité qui représente un hôtel"
+
+#. Tag: para
+#: Tutorial.xml:917
+#, no-c-format
+msgid ""
+"<literal>Booking</literal> is an entity bean that represents an existing "
+"booking"
+msgstr ""
+"<literal>Booking</literal> est un bean entité qui représente une résrevation "
+"existante"
+
+#. Tag: para
+#: Tutorial.xml:922
+#, no-c-format
+msgid ""
+"<literal>User</literal> is an entity bean to represents a user who can make "
+"hotel bookings"
+msgstr ""
+"<literal>User</literal> est un bean entité qui représente un utilisateur "
+"pouvant effectuer des réservations d'hôtel"
+
+#. Tag: title
+#: Tutorial.xml:930
+#, no-c-format
+msgid "Understanding Seam conversations"
+msgstr "Comprendre les conversations Seam "
+
+#. Tag: para
+#: Tutorial.xml:931
+#, fuzzy, no-c-format
+msgid ""
+"We encourage you browse the sourcecode at your pleasure. In this tutorial "
+"we&#39;ll concentrate upon one particular piece of functionality: hotel "
+"search, selection, booking and confirmation. From the point of view of the "
+"user, everything from selecting a hotel to confirming a booking is one "
+"continuous unit of work, a <emphasis>conversation</emphasis>. Searching, "
+"however, is <emphasis>not</emphasis> part of the conversation. The user can "
+"select multiple hotels from the same search results page, in different "
+"browser tabs."
+msgstr ""
+"Nous vous encourageons à naviguer le code source à votre gré. Dans ce "
+"tutoriel, nous mettons l'accent sur un fragment particulier de la "
+"fonctionnalité : recherche d'hôtels, sélection, réservation et confirmation. "
+"Du point de vue de l'utilisateur, tout, de la sélection de l'hôtel à la "
+"confirmation de la réservation, est une unité de travail, une "
+"<emphasis>conversation</emphasis>. Cependant, la recherche ne fait "
+"<emphasis>pas</emphasis> partie de la conversation. L'utilisateur peut "
+"sélectionner de multiples hôtels depuis la même page de résultats de "
+"recherche dans différents onglets du navigateur."
+
+#. Tag: para
+#: Tutorial.xml:934
+#, no-c-format
+msgid ""
+"Most web application architectures have no first class construct to "
+"represent a conversation. This causes enormous problems managing state "
+"associated with the conversation. Usually, Java web applications use a "
+"combination of two techniques: first, some state is thrown into the "
+"<literal>HttpSession</literal>; second, persistable state is flushed to the "
+"database after every request, and reconstructed from the database at the "
+"beginning of each new request."
+msgstr ""
+"La plupart des architectures d'applications web n'ont pas de conception de "
+"première classe pour représenter une conversation. Cela cause d'énormes "
+"problèmes dans la gestion d'états associés à la conversation. En général, "
+"les applications web Java utilisent une combinaison de deux techniques : "
+"d'abord, un état quelconque est envoyé dans <literal>HttpSession</literal> ; "
+"ensuite, l'état persistable est vidé dans la base de données après chaque "
+"requête, et reconstruit depuis la base de données au début de chaque "
+"nouvelle requête. "
+
+#. Tag: para
+#: Tutorial.xml:937
+#, fuzzy, no-c-format
+msgid ""
+"Since the database is the least scalable tier, this often results in an "
+"utterly unacceptable lack of scalability. Added latency is also a problem, "
+"due to the extra traffic to and from the database on every request. To "
+"reduce this redundant traffic, Java applications often introduce a data "
+"(second-level) cache that keeps commonly accessed data between requests. "
+"This cache is necessarily inefficient, because invalidation is based upon an "
+"LRU policy instead of being based upon when the user has finished working "
+"with the data. Furthermore, because the cache is shared between many "
+"concurrent transactions, we&#39;ve introduced a whole raft of problem&#39;s "
+"associated with keeping the cached state consistent with the database."
+msgstr ""
+"Étant donné que la base de données est le niveau le moins extensible, cela "
+"résulte souvent dans un manque inacceptable d'extensibilité. Un temps "
+"d'attente supplémentaire est également problématique, dû au trafic "
+"supplémentaire en provenance et vers la base de données à chaque requête. "
+"Pour réduire ce trafic redondant, les applications Java introduisent souvent "
+"un cache de données (second niveau), qui stocke les données fréquemment "
+"accédées entre les requêtes. Ce cache est nécessairement inefficace, parce "
+"que l'invalidation est basée sur la politique LRU au lieu d'être basée sur "
+"le moment où l'utilisateur a terminé de travailler avec les données. Par "
+"ailleurs, vu que le cache est partagé entre de nombreuses transactions "
+"concurrentes, nous avons introduit une mulitude de problèmes associés à la "
+"cohérence entre l'état du cache et la base de données. "
+
+#. Tag: para
+#: Tutorial.xml:940
+#, fuzzy, no-c-format
+msgid ""
+"Now consider the state held in the <literal>HttpSession</literal>. By very "
+"careful programming, we might be able to control the size of the session "
+"data. This is a lot more difficult than it sounds, since web browsers permit "
+"ad hoc non-linear navigation. But suppose we suddenly discover a system "
+"requirement that says that a user is allowed to have <emphasis>mutiple "
+"concurrent conversations</emphasis>, halfway through the development of the "
+"system (this has happened to me). Developing mechanisms to isolate session "
+"state associated with different concurrent conversations, and incorporating "
+"failsafes to ensure that conversation state is destroyed when the user "
+"aborts one of the conversations by closing a browser window or tab is not "
+"for the faint hearted (I&#39;ve implemented this stuff twice so far, once "
+"for a client application, once for Seam, but I&#39;m famously psychotic)."
+msgstr ""
+"Maintenan considérez l'état situé dans le <literal>HttpSession</literal>. "
+"Avec une programmation particulièrement circonspecte, nous serions peut-être "
+"en mesure de contrôler la taille des données de la session. Cela est "
+"beaucoup plus difficile qu'on ne croit, étant donné que les navigateurs web "
+"autorisent une navigation non linéaire ad hoc. Mais supposez qu'à mi-chemin "
+"dans le développement du système, nous découvrions soudainement une exigence "
+"qui stipule que l'utilisateur est autorisé à avoir de <emphasis>mutiples "
+"conversations simultanées</emphasis>, (cela m'est arrivé). Le développement "
+"de mécanismes pour isoler l'état de la session associé à différentes "
+"conversations simultanées, et l'incorporation de sécurités intégrées pour "
+"assurer que l'état de la conversation est détruit quand l'utilisateur "
+"abandonne une des conversations en fermant la fenêtre du navigateur ou un "
+"onglet, n'est pas pour les craintifs (j'ai implémenté cela deux foix jusqu'à "
+"maintenant, une fois pour une application client, une fois pour Seam, mais "
+"je suis connu pour être psychotique)."
+
+#. Tag: para
+#: Tutorial.xml:943
+#, no-c-format
+msgid "Now there is a better way."
+msgstr "Il y a sûrement une meilleure solution."
+
+#. Tag: para
+#: Tutorial.xml:946
+#, fuzzy, no-c-format
+msgid ""
+"Seam introduces the <emphasis>conversation context</emphasis> as a first "
+"class construct. You can safely keep conversational state in this context, "
+"and be assured that it will have a well-defined lifecycle. Even better, you "
+"won&#39;t need to be continually pushing data back and forth between the "
+"application server and the database, since the conversation context is a "
+"natural cache of data that the user is currently working with."
+msgstr ""
+"Seam introduit le <emphasis>contexte de conversation</emphasis> en tant que "
+"concept de première classe. Vous pouvez garder l'état de la conversation "
+"dans ce contexte de façon sécurisée, et être sûr qu'il aura un cycle de vie "
+"bien défini. Même mieux, vous n'aurez pas à gérer le va-et-vient des données "
+"entre le serveur d'applications et la base de données, car le contexte de "
+"conversation est un cache de données naturel que l'utilisateur utilise "
+"actuellement. "
+
+#. Tag: para
+#: Tutorial.xml:949
+#, fuzzy, no-c-format
+msgid ""
+"Usually, the components we keep in the conversation context are stateful "
+"session beans. (We can also keep entity beans and JavaBeans in the "
+"conversation context.) There is an ancient canard in the Java community that "
+"stateful session beans are a scalability killer. This may have been true in "
+"1998 when WebFoobar 1.0 was released. It is no longer true today. "
+"Application servers like JBoss 4.0 have extremely sophisticated mechanisms "
+"for stateful session bean state replication. (For example, the JBoss EJB3 "
+"container performs fine-grained replication, replicating only those bean "
+"attribute values which actually changed.) Note that all the traditional "
+"technical arguments for why stateful beans are inefficient apply equally to "
+"the <literal>HttpSession</literal>, so the practice of shifting state from "
+"business tier stateful session bean components to the web session to try and "
+"improve performance is unbelievably misguided. It is certainly possible to "
+"write unscalable applications using stateful session beans, by using "
+"stateful beans incorrectly, or by using them for the wrong thing. But that "
+"doesn&#39;t mean you should <emphasis>never</emphasis> use them. Anyway, "
+"Seam guides you toward a safe usage model. Welcome to 2005."
+msgstr ""
+"En général, les composants stockés dans le contexte de conversation sont des "
+"beans session stateful. (Nous pouvons aussi stocker des beans entité et des "
+"JavaBeans dans le contexte de conversation.) Il y a une vieille histoire "
+"dans la communauté Java qui dit que les beans session stateful sont des "
+"tueurs d'extensibilité. Cela était peut-être vrai en 1998 quand WebFoobar "
+"1.0 a été lancé. Ce n'est plus le cas aujourd'hui. Les serveurs "
+"d'applications comme JBoss 4.0 ont des mécanismes extrêmement sophistiqués "
+"pour la réplication d'état de bean session stateful. (Par exemple, le "
+"conteneur JBoss EJB3 effectue une réplication à granularité fine, ne "
+"répliquant que les valeurs d'attribut de bean qui changent.) Notez que tous "
+"les arguments techniques traditionnels concernant l'inefficacité des beans "
+"stateful s'appliquent également à <literal>HttpSession</literal>, donc la "
+"pratique qui consiste à déplacer l'état de composants beans session stateful "
+"niveau métier à la session web pour tenter d'améliorer les performances est "
+"totalement erronée. Il est tout à fait possible d'écrire des applications "
+"non-extensibles en utilisant des beans session stateful, ou en utilisant des "
+"beans session incorrectement, ou en les utilisant à mauvais escient. Mais "
+"cela ne veut pas dire qu'il ne faut <emphasis>jamais</emphasis> les "
+"utiliser. De toute façon, Seam vous guide vers un modèle d'utilisation sûr. "
+"Bienvenue en 2007. "
+
+#. Tag: para
+#: Tutorial.xml:952
+#, fuzzy, no-c-format
+msgid "OK, I&#39;ll stop ranting now, and get back to the tutorial."
+msgstr "OK, j'arrête de déclamer maintenant, et je retourne au tutoriel."
+
+#. Tag: para
+#: Tutorial.xml:955
+#, no-c-format
+msgid ""
+"The booking example application shows how stateful components with different "
+"scopes can collaborate together to achieve complex behaviors. The main page "
+"of the booking application allows the user to search for hotels. The search "
+"results are kept in the Seam session scope. When the user navigates to one "
+"of these hotels, a conversation begins, and a conversation scoped component "
+"calls back to the session scoped component to retrieve the selected hotel."
+msgstr ""
+"L'application de réservation exemple indique comment les composants stateful "
+"avec différentes étendues peuvent collaborer pour effectuer des "
+"comportements complexes. La page principale de l'aplication de réservation "
+"permet à l'utilisateur de chercher des hôtels. Les résultats de recherche "
+"sont stockés dans l'étendue de la session Seam. Quand l'utilisateur navigue "
+"vers un de ces hôtels, une conversation commence, et un composant de "
+"conversation scoped rappelle le composant de la session scoped pour "
+"récupérer l'hôtel sélectionné."
+
+#. Tag: para
+#: Tutorial.xml:958
+#, no-c-format
+msgid ""
+"The booking example also demonstrates the use of Ajax4JSF to implement rich "
+"client behavior without the use of handwritten JavaScript."
+msgstr ""
+"L'exemple de réservation démontre également l'utilisation de Ajax4JSF pour "
+"implémenter un comportement client riche sans utiliser de JavaScript, écrit "
+"à la main."
+
+#. Tag: para
+#: Tutorial.xml:961
+#, no-c-format
+msgid ""
+"The search functionality is implemented using a session-scope stateful "
+"session bean, similar to the one we saw in the message list example above."
+msgstr ""
+"La fonctionnalité de recherche est implémentée en utilisant le bean session "
+"stateful session-scope, similaire à celui que nous avons vu dans l'exemple "
+"de la liste des message ci-dessus."
+
+#. Tag: programlisting
+#: Tutorial.xml:971
+#, fuzzy, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"hotelSearch\")\n"
+"@Scope(ScopeType.SESSION)\n"
+"@Restrict(\"#{identity.loggedIn}\")\n"
+"public class HotelSearchingAction implements HotelSearching\n"
+"{\n"
+"   \n"
+"   @PersistenceContext\n"
+"   private EntityManager em;\n"
+"   \n"
+"   private String searchString;\n"
+"   private int pageSize = 10;\n"
+"   private int page;\n"
+"   \n"
+"   @DataModel\n"
+"   private List&lt;Hotel&gt; hotels;\n"
+"   \n"
+"   public String find()\n"
+"   {\n"
+"      page = 0;\n"
+"      queryHotels();   \n"
+"      return \"main\";\n"
+"   }\n"
+"\n"
+"   public String nextPage()\n"
+"   {\n"
+"      page++;\n"
+"      queryHotels();\n"
+"      return \"main\";\n"
+"   }\n"
+"      \n"
+"   private void queryHotels()\n"
+"   {\n"
+"      String searchPattern = searchString==null ? \"%\" : &#39;%&#39; + \n"
+"         searchString.toLowerCase().replace(&#39;*&#39;, &#39;%&#39;) + &#39;"
+"%&#39;;\n"
+"      hotels = em.createQuery(\"select h from Hotel h where lower(h.name) "
+"like \n"
+"        :search or lower(h.city) like :search \n"
+"        or lower(h.zip) like :search or lower(h.address) like :search\")\n"
+"            .setParameter(\"search\", searchPattern)\n"
+"            .setMaxResults(pageSize)\n"
+"            .setFirstResult( page * pageSize )\n"
+"            .getResultList();\n"
+"   }\n"
+"   \n"
+"   public boolean isNextPageAvailable()\n"
+"   {\n"
+"      return hotels!=null &amp;&amp; hotels.size()==pageSize;\n"
+"   }\n"
+"   \n"
+"   public int getPageSize() {\n"
+"      return pageSize;\n"
+"   }\n"
+"\n"
+"   public void setPageSize(int pageSize) {\n"
+"      this.pageSize = pageSize;\n"
+"   }\n"
+"\n"
+"   public String getSearchString()\n"
+"   {\n"
+"      return searchString;\n"
+"   }\n"
+"\n"
+"   public void setSearchString(String searchString)\n"
+"   {\n"
+"      this.searchString = searchString;\n"
+"   }\n"
+"   \n"
+"   @Destroy @Remove\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+"@Stateful\n"
+"@Name(\"hotelSearch\")\n"
+"@Scope(ScopeType.SESSION)\n"
+"@LoggedIn\n"
+"public class HotelSearchingAction implements HotelSearching\n"
+"{\n"
+"   \n"
+"   @PersistenceContext\n"
+"   private EntityManager em;\n"
+"   \n"
+"   private String searchString;\n"
+"   private int pageSize = 10;\n"
+"   private int page;\n"
+"   \n"
+"   @DataModel\n"
+"   private List&lt;Hotel&gt; hotels;\n"
+"   \n"
+"   public String find()\n"
+"   {\n"
+"      page = 0;\n"
+"      queryHotels();   \n"
+"      return \"main\";\n"
+"   }\n"
+"\n"
+"   public String nextPage()\n"
+"   {\n"
+"      page++;\n"
+"      queryHotels();\n"
+"      return \"main\";\n"
+"   }\n"
+"      \n"
+"   private void queryHotels()\n"
+"   {\n"
+"      String searchPattern = searchString==null ? \"&#37;\" : '&#37;' + \n"
+"          searchString.toLowerCase().replace('*', '&#37;') + '&#37;';\n"
+"      hotels = em.createQuery(\"select h from Hotel h where lower(h.name) "
+"like\n"
+"          :search or lower(h.city) like :search \n"
+"          or lower(h.zip) like :search or lower(h.address) like :search\")\n"
+"            .setParameter(\"search\", searchPattern)\n"
+"            .setMaxResults(pageSize)\n"
+"            .setFirstResult( page * pageSize )\n"
+"            .getResultList();\n"
+"   }\n"
+"   \n"
+"   public boolean isNextPageAvailable()\n"
+"   {\n"
+"      return hotels!=null &amp;&amp; hotels.size()==pageSize;\n"
+"   }\n"
+"   \n"
+"   public int getPageSize() {\n"
+"      return pageSize;\n"
+"   }\n"
+"\n"
+"   public void setPageSize(int pageSize) {\n"
+"      this.pageSize = pageSize;\n"
+"   }\n"
+"\n"
+"   public String getSearchString()\n"
+"   {\n"
+"      return searchString;\n"
+"   }\n"
+"\n"
+"   public void setSearchString(String searchString)\n"
+"   {\n"
+"      this.searchString = searchString;\n"
+"   }\n"
+"   \n"
+"   @Destroy @Remove\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:974
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Stateful</literal> annotation identifies this "
+"class as a stateful session bean. Stateful session beans are scoped to the "
+"conversation context by default."
+msgstr ""
+"L'annotation <literal>@Stateful</literal> EJB standard identifie cette "
+"classe en tant que bean session stateful. Les beans session stateful sont "
+"scoped au contexte de conversation par défaut."
+
+#. Tag: para
+#: Tutorial.xml:979
+#, no-c-format
+msgid ""
+"The <literal>@Restrict</literal> annotation applies a security restriction "
+"to the component. It restricts access to the component allowing only logged-"
+"in users. The security chapter explains more about security in Seam."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:984
+#, no-c-format
+msgid ""
+"The <link linkend=\"datamodel-annotation\"><literal>@DataModel</literal></"
+"link> annotation exposes a <literal>List</literal> as a JSF "
+"<literal>ListDataModel</literal>. This makes it easy to implement clickable "
+"lists for search screens. In this case, the list of hotels is exposed to the "
+"page as a <literal>ListDataModel</literal> in the conversation variable "
+"named <literal>hotels</literal>."
+msgstr ""
+"L'annotation <link linkend=\"datamodel-annotation\"><literal>@DataModel</"
+"literal></link> expose une <literal>List</literal> en tant que "
+"<literal>ListDataModel</literal> JSF . Cela facilite l'implémentation de "
+"listes cliquables pour les écrans de recherche. Dans ce cas, la liste des "
+"hôtels est exposée à la page en tant que <literal>ListDataModel</literal> "
+"dans la variable de conversation, appelée <literal>hotels</literal>."
+
+#. Tag: para
+#: Tutorial.xml:989
+#, fuzzy, no-c-format
+msgid ""
+"The EJB standard <literal>@Remove</literal> annotation specifies that a "
+"stateful session bean should be removed and its state destroyed after "
+"invocation of the annotated method. In Seam, all stateful session beans "
+"should define a method marked <literal>@Destroy @Remove</literal>. This is "
+"the EJB remove method that will be called when Seam destroys the session "
+"context. Actually, the <link linkend=\"destroy-annotation"
+"\"><literal>@Destroy</literal></link> annotation is of more general "
+"usefulness, since it can be used for any kind of cleanup that should happen "
+"when any Seam context ends. If you don&#39;t have an <literal>@Destroy "
+"@Remove</literal> method, state will leak and you will suffer performance "
+"problems."
+msgstr ""
+"L'annotation<literal>@Remove</literal> EJB standard indique qu'un bean "
+"session stateful devrait être supprimer et son état détruit après "
+"l'invocation de la méthode annotée. Dans Seam, tous les beans session "
+"stateful devraient définir une méthode marquée <literal>@Destroy @Remove</"
+"literal>. C'est la méthode de suppression de l'EJB qui sera appelée quand "
+"Seam détruit le contexte de session. En réalité, l'annotation <link linkend="
+"\"destroy-annotation\"><literal>@Destroy</literal></link> est d'utilité plus "
+"générale quand n'importe quel contexte Seam se termine. Si vous n'avez pas "
+"de méthode <literal>@Destroy @Remove</literal>, l'état fuira et vous aurez "
+"des problèmes de performance. "
+
+#. Tag: para
+#: Tutorial.xml:996
+#, fuzzy, no-c-format
+msgid ""
+"The main page of the application is a Facelets page. Let&#39;s look at the "
+"fragment which relates to searching for hotels:"
+msgstr ""
+"La page principale de l'application est une page Facelets. Examinons le "
+"fragment qui concerne la recherche d'hôtels :"
+
+#. Tag: programlisting
+#: Tutorial.xml:1006
+#, fuzzy, no-c-format
+msgid ""
+"&lt;div class=\"section\"&gt;\n"
+"&lt;h:form&gt;\n"
+"  \n"
+"  &lt;span class=\"errors\"&gt;\n"
+"    &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"  &lt;/span&gt;\n"
+"    \n"
+"  &lt;h1&gt;Search Hotels&lt;/h1&gt;\n"
+"  &lt;fieldset&gt; \n"
+"     &lt;h:inputText value=\"#{hotelSearch.searchString}\" style=\"width: "
+"165px;\"&gt;\n"
+"        &lt;a:support event=\"onkeyup\" actionListener=\"#{hotelSearch.find}"
+"\" \n"
+"                   reRender=\"searchResults\" /&gt;\n"
+"     &lt;/h:inputText&gt;\n"
+"     &#160;\n"
+"     &lt;a:commandButton value=\"Find Hotels\" action=\"#{hotelSearch.find}"
+"\" \n"
+"                      styleClass=\"button\" reRender=\"searchResults\"/&gt;\n"
+"     &#160;\n"
+"     &lt;a:status&gt;\n"
+"        &lt;f:facet name=\"start\"&gt;\n"
+"           &lt;h:graphicImage value=\"/img/spinner.gif\"/&gt;\n"
+"        &lt;/f:facet&gt;\n"
+"     &lt;/a:status&gt;\n"
+"     &lt;br/&gt;\n"
+"     &lt;h:outputLabel for=\"pageSize\"&gt;Maximum results:&lt;/h:"
+"outputLabel&gt;&#160;\n"
+"     &lt;h:selectOneMenu value=\"#{hotelSearch.pageSize}\" id=\"pageSize"
+"\"&gt;\n"
+"        &lt;f:selectItem itemLabel=\"5\" itemValue=\"5\"/&gt;\n"
+"        &lt;f:selectItem itemLabel=\"10\" itemValue=\"10\"/&gt;\n"
+"        &lt;f:selectItem itemLabel=\"20\" itemValue=\"20\"/&gt;\n"
+"     &lt;/h:selectOneMenu&gt;\n"
+"  &lt;/fieldset&gt;\n"
+"    \n"
+"&lt;/h:form&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;a:outputPanel id=\"searchResults\"&gt;\n"
+"  &lt;div class=\"section\"&gt;\n"
+"  &lt;h:outputText value=\"No Hotels Found\" \n"
+"                rendered=\"#{hotels != null and hotels.rowCount==0}\"/&gt;\n"
+"  &lt;h:dataTable value=\"#{hotels}\" var=\"hot\" rendered=\"#{hotels."
+"rowCount&gt;0}\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Name&lt;/f:facet&gt;\n"
+"      #{hot.name}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Address&lt;/f:facet&gt;\n"
+"      #{hot.address}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;City, State&lt;/f:facet&gt;\n"
+"      #{hot.city}, #{hot.state}, #{hot.country}\n"
+"    &lt;/h:column&gt; \n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Zip&lt;/f:facet&gt;\n"
+"      #{hot.zip}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"      &lt;s:link value=\"View Hotel\" action=\"#{hotelBooking.selectHotel"
+"(hot)}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"  &lt;/h:dataTable&gt;\n"
+"  &lt;s:link value=\"More results\" action=\"#{hotelSearch.nextPage}\" \n"
+"          rendered=\"#{hotelSearch.nextPageAvailable}\"/&gt;\n"
+"  &lt;/div&gt;\n"
+"&lt;/a:outputPanel&gt;"
+msgstr ""
+"&lt;div class=\"section\"&gt;\n"
+"&lt;h:form&gt;\n"
+"  \n"
+"  &lt;span class=\"errors\"&gt;\n"
+"    &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"  &lt;/span&gt;\n"
+"    \n"
+"  &lt;h1&gt;Search Hotels&lt;/h1&gt;\n"
+"  &lt;fieldset&gt; \n"
+"     &lt;h:inputText value=\"#{hotelSearch.searchString}\" style=\"width: "
+"165px;\"&gt;\n"
+"        &lt;a:support event=\"onkeyup\" actionListener=\"#{hotelSearch.find}"
+"\" \n"
+"                   reRender=\"searchResults\" /&gt;\n"
+"     &lt;/h:inputText&gt;\n"
+"     &amp;#160;\n"
+"     &lt;a:commandButton value=\"Find Hotels\" action=\"#{hotelSearch.find}"
+"\" \n"
+"                      styleClass=\"button\" reRender=\"searchResults\"/&gt;\n"
+"     &amp;#160;\n"
+"     &lt;a:status&gt;\n"
+"        &lt;f:facet name=\"start\"&gt;\n"
+"           &lt;h:graphicImage value=\"/img/spinner.gif\"/&gt;\n"
+"        &lt;/f:facet&gt;\n"
+"     &lt;/a:status&gt;\n"
+"     &lt;br/&gt;\n"
+"     &lt;h:outputLabel for=\"pageSize\"&gt;Maximum results:&lt;/h:"
+"outputLabel&gt;&amp;#160;\n"
+"     &lt;h:selectOneMenu value=\"#{hotelSearch.pageSize}\" id=\"pageSize"
+"\"&gt;\n"
+"        &lt;f:selectItem itemLabel=\"5\" itemValue=\"5\"/&gt;\n"
+"        &lt;f:selectItem itemLabel=\"10\" itemValue=\"10\"/&gt;\n"
+"        &lt;f:selectItem itemLabel=\"20\" itemValue=\"20\"/&gt;\n"
+"     &lt;/h:selectOneMenu&gt;\n"
+"  &lt;/fieldset&gt;\n"
+"    \n"
+"&lt;/h:form&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;a:outputPanel id=\"searchResults\"&gt;\n"
+"  &lt;div class=\"section\"&gt;\n"
+"  &lt;h:outputText value=\"No Hotels Found\" \n"
+"                rendered=\"#{hotels != null and hotels.rowCount==0}\"/&gt;\n"
+"  &lt;h:dataTable value=\"#{hotels}\" var=\"hot\" rendered=\"#{hotels."
+"rowCount&gt;0}\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Name&lt;/f:facet&gt;\n"
+"      #{hot.name}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Address&lt;/f:facet&gt;\n"
+"      #{hot.address}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;City, State&lt;/f:facet&gt;\n"
+"      #{hot.city}, #{hot.state}, #{hot.country}\n"
+"    &lt;/h:column&gt; \n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Zip&lt;/f:facet&gt;\n"
+"      #{hot.zip}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"      &lt;s:link value=\"View Hotel\" action=\"#{hotelBooking.selectHotel"
+"(hot)}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"  &lt;/h:dataTable&gt;\n"
+"  &lt;s:link value=\"More results\" action=\"#{hotelSearch.nextPage}\" \n"
+"          rendered=\"#{hotelSearch.nextPageAvailable}\"/&gt;\n"
+"  &lt;/div&gt;\n"
+"&lt;/a:outputPanel&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1009
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:support&gt;</literal> tag allows a JSF action "
+"event listener to be called by asynchronous <literal>XMLHttpRequest</"
+"literal> when a JavaScript event like <literal>onkeyup</literal> occurs. "
+"Even better, the <literal>reRender</literal> attribute lets us render a "
+"fragment of the JSF page and perform a partial page update when the "
+"asynchronous response is received."
+msgstr ""
+"La balise <literal>&lt;a:support&gt;</literal> Ajax4JSF permet à un listener "
+"d'évènement d'action JSF d'être appelé par <literal>XMLHttpRequest</literal> "
+"asynchrone quand un évènement JavaScript, comme <literal>onkeyup</literal> a "
+"lieu. Même mieux, l'attribut <literal>reRender</literal> nous laisse "
+"afficher un fragment de la page JSF et effectuer une mise à jour de page "
+"partielle quand la réponse asynchrone est reçue."
+
+#. Tag: para
+#: Tutorial.xml:1014
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:status&gt;</literal> tag lets us display a "
+"cheesy annimated image while we wait for asynchronous requests to return."
+msgstr ""
+"La balise <literal>&lt;a:status&gt;</literal> Ajax4JSF nous laisse afficher "
+"une image animée ridicule alors que nous attendons le retour des requêtes "
+"asynchrones. "
+
+#. Tag: para
+#: Tutorial.xml:1019
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:outputPanel&gt;</literal> tag defines a region "
+"of the page which can be re-rendered by an asynchronous request."
+msgstr ""
+"La balise <literal>&lt;a:outputPanel&gt;</literal> Ajax4JSF définit une zone "
+"de la page qui peut être ré-affichée par une requête asynchrone."
+
+#. Tag: para
+#: Tutorial.xml:1024
+#, no-c-format
+msgid ""
+"The Seam <literal>&lt;s:link&gt;</literal> tag lets us attach a JSF action "
+"listener to an ordinary (non-JavaScript) HTML link. The advantage of this "
+"over the standard JSF <literal>&lt;h:commandLink&gt;</literal> is that it "
+"preserves the operation of \"open in new window\" and \"open in new tab\". "
+"Also notice that we use a method binding with a parameter: <literal>#"
+"{hotelBooking.selectHotel(hot)}</literal>. This is not possible in the "
+"standard Unified EL, but Seam provides an extension to the EL that lets you "
+"use parameters on any method binding expression."
+msgstr ""
+"La balise <literal>&lt;s:link&gt;</literal> Seam nous permet d'attacher un "
+"listener d'actions JSF à un lien HTML (non-JavaScript). L'avantage de cela "
+"sur le <literal>&lt;h:commandLink&gt;</literal> JFS standard est qu'il "
+"conserve l'opération \"ouvrir dans une nouvelle fenêtre\" et \"ouvrir dans "
+"un nouvel onglet\". Notez également que nous utilisons une méthode de "
+"liaison avec un paramètre : <literal>#{hotelBooking.selectHotel(hot)}</"
+"literal>. Cela n'est pas possible dans le Unified EL standard, cependant "
+"Seam fournit une extension au EL qui vous permet d'utiliser des paramètres "
+"sur toute expression de la méthode de liaison. "
+
+#. Tag: para
+#: Tutorial.xml:1031
+#, no-c-format
+msgid ""
+"This page displays the search results dynamically as we type, and lets us "
+"choose a hotel and pass it to the <literal>selectHotel()</literal> method of "
+"the <literal>HotelBookingAction</literal>, which is where the "
+"<emphasis>really</emphasis> interesting stuff is going to happen."
+msgstr ""
+"La page affiche les résultats de recherche dynamiquement alors que vous "
+"tapez, et vous permet de choisir un hôtel et de le passer à la méthode "
+"<literal>selectHotel()</literal> de <literal>HotelBookingAction</literal>, "
+"et c'est là que cela devient <emphasis>intéressant</emphasis>."
+
+#. Tag: para
+#: Tutorial.xml:1034
+#, fuzzy, no-c-format
+msgid ""
+"Now lets see how the booking example application uses a conversation-scoped "
+"stateful session bean to achieve a natural cache of persistent data related "
+"to the conversation. The following code example is pretty long. But if you "
+"think of it as a list of scripted actions that implement the various steps "
+"of the conversation, it&#39;s understandable. Read the class from top to "
+"bottom, as if it were a story."
+msgstr ""
+"Voyons comment l'application de l'exemple de réservation utilise un bean "
+"session stateful de conversation-scoped pour arriver à un cache naturel de "
+"données persistantes associées à la conversation. L'exemple de code suivant "
+"est plutôt long. Mais si vous y réfléchissez, c'est clair puisque c'est une "
+"liste d'actions scriptées qui implémente les différentes étapes de la "
+"conversation. Lisez la classe de haut en bas, comme si c'était une histoire."
+
+#. Tag: programlisting
+#: Tutorial.xml:1045
+#, fuzzy, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"hotelBooking\")\n"
+"@Restrict(\"#{identity.loggedIn}\")\n"
+"public class HotelBookingAction implements HotelBooking\n"
+"{\n"
+"   \n"
+"   @PersistenceContext(type=EXTENDED)\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @In \n"
+"   private User user;\n"
+"   \n"
+"   @In(required=false) @Out\n"
+"   private Hotel hotel;\n"
+"   \n"
+"   @In(required=false) \n"
+"   @Out(required=false)\n"
+"   private Booking booking;\n"
+"     \n"
+"   @In\n"
+"   private FacesMessages facesMessages;\n"
+"      \n"
+"   @In\n"
+"   private Events events;\n"
+"   \n"
+"   @Logger \n"
+"   private Log log;\n"
+"   \n"
+"   @Begin\n"
+"   public String selectHotel(Hotel selectedHotel)\n"
+"   {\n"
+"      hotel = em.merge(selectedHotel);\n"
+"      return \"hotel\";\n"
+"   }\n"
+"   \n"
+"   public String bookHotel()\n"
+"   {      \n"
+"      booking = new Booking(hotel, user);\n"
+"      Calendar calendar = Calendar.getInstance();\n"
+"      booking.setCheckinDate( calendar.getTime() );\n"
+"      calendar.add(Calendar.DAY_OF_MONTH, 1);\n"
+"      booking.setCheckoutDate( calendar.getTime() );\n"
+"      \n"
+"      return \"book\";\n"
+"   }\n"
+"\n"
+"   public String setBookingDetails()\n"
+"   {\n"
+"      if (booking==null || hotel==null) return \"main\";\n"
+"      if ( !booking.getCheckinDate().before( booking.getCheckoutDate() ) )\n"
+"      {\n"
+"         facesMessages.add(\"Check out date must be later than check in date"
+"\");\n"
+"         return null;\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return \"confirm\";\n"
+"      }\n"
+"   }\n"
+"\n"
+"   @End\n"
+"   public String confirm()\n"
+"   {\n"
+"      if (booking==null || hotel==null) return \"main\";\n"
+"      em.persist(booking);\n"
+"      facesMessages.add\n"
+"       (\"Thank you, #{user.name}, your confimation number for #{hotel.name} "
+"is #{booking.id}\");\n"
+"      log.info(\"New booking: #{booking.id} for #{user.username}\");\n"
+"      events.raiseEvent(\"bookingConfirmed\");\n"
+"      return \"confirmed\";\n"
+"   }\n"
+"   \n"
+"   @End\n"
+"   public String cancel()\n"
+"   {\n"
+"      return \"main\";\n"
+"   }\n"
+"   \n"
+"   @Destroy @Remove\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+"@Stateful\n"
+"@Name(\"hotelBooking\")\n"
+"@LoggedIn\n"
+"public class HotelBookingAction implements HotelBooking\n"
+"{\n"
+"   \n"
+"   @PersistenceContext(type=EXTENDED)\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @In \n"
+"   private User user;\n"
+"   \n"
+"   @In(required=false) @Out\n"
+"   private Hotel hotel;\n"
+"   \n"
+"   @In(required=false) \n"
+"   @Out(required=false)\n"
+"   private Booking booking;\n"
+"     \n"
+"   @In\n"
+"   private FacesMessages facesMessages;\n"
+"      \n"
+"   @In\n"
+"   private Events events;\n"
+"   \n"
+"   @Logger \n"
+"   private Log log;\n"
+"   \n"
+"   @Begin\n"
+"   public String selectHotel(Hotel selectedHotel)\n"
+"   {\n"
+"      hotel = em.merge(selectedHotel);\n"
+"      return \"hotel\";\n"
+"   }\n"
+"   \n"
+"   public String bookHotel()\n"
+"   {      \n"
+"      booking = new Booking(hotel, user);\n"
+"      Calendar calendar = Calendar.getInstance();\n"
+"      booking.setCheckinDate( calendar.getTime() );\n"
+"      calendar.add(Calendar.DAY_OF_MONTH, 1);\n"
+"      booking.setCheckoutDate( calendar.getTime() );\n"
+"      \n"
+"      return \"book\";\n"
+"   }\n"
+"\n"
+"   public String setBookingDetails()\n"
+"   {\n"
+"      if (booking==null || hotel==null) return \"main\";\n"
+"      if ( !booking.getCheckinDate().before( booking.getCheckoutDate() ) )\n"
+"      {\n"
+"         facesMessages.add(\"Check out date must be later than check in date"
+"\");\n"
+"         return null;\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return \"confirm\";\n"
+"      }\n"
+"   }\n"
+"\n"
+"   @End\n"
+"   public String confirm()\n"
+"   {\n"
+"      if (booking==null || hotel==null) return \"main\";\n"
+"      em.persist(booking);\n"
+"      facesMessages.add\n"
+"          (\"Thank you, #{user.name}, your confimation number for #{hotel."
+"name} is #{booking.id}\");\n"
+"      log.info(\"New booking: #{booking.id} for #{user.username}\");\n"
+"      events.raiseEvent(\"bookingConfirmed\");\n"
+"      return \"confirmed\";\n"
+"   }\n"
+"   \n"
+"   @End\n"
+"   public String cancel()\n"
+"   {\n"
+"      return \"main\";\n"
+"   }\n"
+"   \n"
+"   @Destroy @Remove\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:1048
+#, no-c-format
+msgid ""
+"This bean uses an EJB3 <emphasis>extended persistence context</emphasis>, so "
+"that any entity instances remain managed for the whole lifecycle of the "
+"stateful session bean."
+msgstr ""
+"Ce bean utilise un <emphasis>contexte de persistance étendu</emphasis> "
+"EJB3 , de manière à ce que toutes les instances d'entité restent gérées pour "
+"tout le cycle de vie du bean session stateful."
+
+#. Tag: para
+#: Tutorial.xml:1053
+#, no-c-format
+msgid ""
+"The <link linkend=\"out-annotation\"><literal>@Out</literal></link> "
+"annotation declares that an attribute value is <emphasis>outjected</"
+"emphasis> to a context variable after method invocations. In this case, the "
+"context variable named <literal>hotel</literal> will be set to the value of "
+"the <literal>hotel</literal> instance variable after every action listener "
+"invocation completes."
+msgstr ""
+"L'annotation <link linkend=\"out-annotation\"><literal>@Out</literal></link> "
+"déclare qu'une valeur d'attribut est <emphasis>outjectée</emphasis> à une "
+"variable de contexte après les invocations de la méthode. Dans ce cas, la "
+"variable de contexte, appelée <literal>hotel</literal> sera définie à la "
+"valeur de la variable d'instance <literal>hotel</literal> après que chaque "
+"appel du listener d'actions se termine."
+
+#. Tag: para
+#: Tutorial.xml:1058
+#, no-c-format
+msgid ""
+"The <link linkend=\"begin-annotation\"><literal>@Begin</literal></link> "
+"annotation specifies that the annotated method begins a <emphasis>long-"
+"running conversation</emphasis>, so the current conversation context will "
+"not be destroyed at the end of the request. Instead, it will be reassociated "
+"with every request from the current window, and destroyed either by timeout "
+"due to conversation inactivity or invocation of a matching <literal>@End</"
+"literal> method."
+msgstr ""
+"L'annotation <link linkend=\"begin-annotation\"><literal>@Begin</literal></"
+"link> indique que la méthode annotée commence une <emphasis>conversation à "
+"long terme</emphasis>, de façon à ce que le contexte de conversation ne soit "
+"pas détruit à la fin de la requête. À la place, il sera ré-associé avec "
+"chaque requête depuis la fenêtre actuelle, et détruit soit par le timeout, "
+"dû au manque d'activité de la conversation, soit par l'appel d'une "
+"méthode<literal>@End</literal> correspondante."
+
+#. Tag: para
+#: Tutorial.xml:1063
+#, no-c-format
+msgid ""
+"The <link linkend=\"end-annotation\"><literal>@End</literal></link> "
+"annotation specifies that the annotated method ends the current long-running "
+"conversation, so the current conversation context will be destroyed at the "
+"end of the request."
+msgstr ""
+"L'annotation <link linkend=\"end-annotation\"><literal>@End</literal></link> "
+"indique que la méthode annotée termine la conversation à long terme "
+"actuelle, de manière à ce que le contexte de conversation actuel soit "
+"détruit à la fin de la requête."
+
+#. Tag: para
+#: Tutorial.xml:1068
+#, fuzzy, no-c-format
+msgid ""
+"This EJB remove method will be called when Seam destroys the conversation "
+"context. Don&#39;t ever forget to define this method!"
+msgstr ""
+"Cette méthode supprimer l'EJB sera appelée quand Seam détruit le contexte de "
+"conversation. N'oubliez jamais de définir cette méthode !"
+
+#. Tag: para
+#: Tutorial.xml:1075
+#, fuzzy, no-c-format
+msgid ""
+"<literal>HotelBookingAction</literal> contains all the action listener "
+"methods that implement selection, booking and booking confirmation, and "
+"holds state related to this work in its instance variables. We think you&#39;"
+"ll agree that this code is much cleaner and simpler than getting and setting "
+"<literal>HttpSession</literal> attributes."
+msgstr ""
+"<literal>HotelBookingAction</literal> contient toutes les méthodes du "
+"listener d'actions qui implémentent la sélection, la réservation et la "
+"confirmation de réservation, et détient l'état associé à ce travail dans ses "
+"variables d'instance. Nous pensons que vous serez d'accord pour dire que ce "
+"code est plus propre et plus simple que les attributs <literal>HttpSession</"
+"literal> getting et setting. "
+
+#. Tag: para
+#: Tutorial.xml:1078
+#, fuzzy, no-c-format
+msgid ""
+"Even better, a user can have multiple isolated conversations per login "
+"session. Try it! Log in, run a search, and navigate to different hotel pages "
+"in multiple browser tabs. You&#39;ll be able to work on creating two "
+"different hotel reservations at the same time. If you leave any one "
+"conversation inactive for long enough, Seam will eventually time out that "
+"conversation and destroy its state. If, after ending a conversation, you "
+"backbutton to a page of that conversation and try to perform an action, Seam "
+"will detect that the conversation was already ended, and redirect you to the "
+"search page."
+msgstr ""
+"Mieux encore, un utilisateur peut avoir de multiples conversations isolées "
+"par session de connexion. Essayez vous-même ! Connectez-vous, lancez une "
+"recherche et naviguez à différentes pages d'hôtel dans de multiples onglets "
+"de navigateur. Vous serez en mesure de créer deux réservations d'hôtel en "
+"même temps. Si vous laissez une des conversations inactive un certain temps, "
+"la conversation arrivera au bout de son délai et Seam détruira son état. Si "
+"après la fin de la conversation, vous retournez grâce au bouton retour, vers "
+"une page de cette conversation et essayez d'effectuer une action, Seam "
+"détectera que la conversation était déjà terminée et vous redirigera vers la "
+"page de recherche. "
+
+#. Tag: title
+#: Tutorial.xml:1084
+#, no-c-format
+msgid "The Seam UI control library"
+msgstr "La bibliothèque de contrôle Seam UI "
+
+#. Tag: para
+#: Tutorial.xml:1085
+#, fuzzy, no-c-format
+msgid ""
+"If you check inside the WAR file for the booking application, you&#39;ll "
+"find <literal>seam-ui.jar</literal> in the <literal>WEB-INF/lib</literal> "
+"directory. This package contains a number of JSF custom controls that "
+"integrate with Seam. The booking application uses the <literal>&lt;s:link&gt;"
+"</literal> control for navigation from the search screen to the hotel page:"
+msgstr ""
+"Si vous vérifiez à l'intérieur du fichier WAR pour l'application de "
+"réservation, vous trouverez <literal>seam-ui.jar</literal> dans le "
+"répertoire <literal>WEB-INF/lib</literal>. Ce paquetage contient un certain "
+"nombre de contrôles JSF qui s'intègrent à Seam. L'application de réservation "
+"utilise le contrôle <literal>&lt;s:link&gt;</literal> pour la navigation "
+"depuis l'écran de recherche vers la page de l'hôtel."
+
+#. Tag: programlisting
+#: Tutorial.xml:1088
+#, no-c-format
+msgid ""
+"&lt;s:link value=\"View Hotel\" action=\"#{hotelBooking.selectHotel}\"/&gt;"
+msgstr ""
+"&lt;s:link value=\"View Hotel\" action=\"#{hotelBooking.selectHotel}\"/&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1089
+#, fuzzy, no-c-format
+msgid ""
+"The use of <literal>&lt;s:link&gt;</literal> here allows us to attach an "
+"action listener to a HTML link without breaking the browser&#39;s \"open in "
+"new window\" feature. The standard JSF <literal>&lt;h:commandLink&gt;</"
+"literal> does not work with \"open in new window\". We&#39;ll see later that "
+"<literal>&lt;s:link&gt;</literal> also offers a number of other useful "
+"features, including conversation propagation rules."
+msgstr ""
+"Ici l'utilisation de <literal>&lt;s:link&gt;</literal> nous permet "
+"d'attacher un listener d'actions à un lien HTML sans casser la "
+"fonctionnalité \"ouvrir dans une nouvelle fenêtre\". Le JSF standard "
+"<literal>&lt;h:commandLink&gt;</literal> ne fonctionne pas avec \"ouvrir "
+"dans une nouvelle fenêtre\". Nous verrons plus tard que <literal>&lt;s:"
+"link&gt;</literal> offre également plusieurs autres fonctionnalités utiles, "
+"y compris des règles de propagation de conversation. "
+
+#. Tag: para
+#: Tutorial.xml:1092
+#, fuzzy, no-c-format
+msgid ""
+"The booking application uses some other Seam and Ajax4JSF controls, "
+"especially on the <literal>/book.xhtml</literal> page. We won&#39;t get into "
+"the details of those controls here, but if you want to understand this code, "
+"please refer to the chapter covering Seam&#39;s functionality for JSF form "
+"validation."
+msgstr ""
+"L'application de réservation utilise Seam et les contrôles Ajax4JSF, en "
+"particulier sur la page <literal>/book.xhtml</literal>. Nous n'entrerons pas "
+"dans les détails de ces contrôles, mais si vous désirez comprendre ce code, "
+"veuillez consulter le chapitre qui traite de la fonctionnalité de Seam pour "
+"la validation du formulaire JSF."
+
+#. Tag: title
+#: Tutorial.xml:1098
+#, no-c-format
+msgid "The Seam Debug Page"
+msgstr "La Page Seam Debug"
+
+#. Tag: para
+#: Tutorial.xml:1099
+#, no-c-format
+msgid ""
+"The WAR also includes <literal>seam-debug.jar</literal>. If this jar is "
+"deployed in <literal>WEB-INF/lib</literal>, along with the Facelets, and if "
+"you set the following Seam property in <literal>web.xml</literal> or "
+"<literal>seam.properties</literal>:"
+msgstr ""
+"Le WAR inclut également <literal>seam-debug.jar</literal>. Si ce jar est "
+"déployé dans <literal>WEB-INF/lib</literal>, avec Facelets, et si vous "
+"définissez la propriété Seam suivante dans <literal>web.xml</literal> ou "
+"<literal>seam.properties</literal> :"
+
+#. Tag: programlisting
+#: Tutorial.xml:1102
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;org.jboss.seam.core.init.debug&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;true&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;org.jboss.seam.core.init.debug&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;true&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1103
+#, no-c-format
+msgid ""
+"Then the Seam debug page will be available. This page lets you browse and "
+"inspect the Seam components in any of the Seam contexts associated with your "
+"current login session. Just point your browser at <ulink url=\"http://"
+"localhost:8080/seam-booking/debug.seam\"><literal>http://localhost:8080/seam-"
+"booking/debug.seam</literal></ulink>."
+msgstr ""
+"La page Seam debug sera disponible. Cette page vous laisse naviguer et "
+"inspecter les composants Seam dans les contextes Seam associés à la session "
+"de connexion actuelle. Dans votre navigateur, allez à <ulink url=\"http://"
+"localhost:8080/seam-booking/debug.seam\"><literal>http://localhost:8080/seam-"
+"booking/debug.seam</literal></ulink>."
+
+#. Tag: title
+#: Tutorial.xml:1119
+#, no-c-format
+msgid "A complete application featuring Seam and jBPM: the DVD Store example"
+msgstr ""
+"Une application complète offrant Seam et jBPM : l'exemple magasin DVD (DVD "
+"store)"
+
+#. Tag: para
+#: Tutorial.xml:1120
+#, no-c-format
+msgid ""
+"The DVD Store demo application shows the practical usage of jBPM for both "
+"task management and pageflow."
+msgstr ""
+"L'application de démonstration DVD Store illustre l'utilisation pratique de "
+"jBPM pour la gestion des tâches et le flux de page. "
+
+#. Tag: para
+#: Tutorial.xml:1123
+#, no-c-format
+msgid ""
+"The user screens take advantage of a jPDL pageflow to implement searching "
+"and shopping cart functionality."
+msgstr ""
+"Les écrans d'utilisateur tire avantage d'un flux de page jPDL pour "
+"implémenter à la fois les fonctionnalités de recherche et de panier."
+
+#. Tag: screeninfo
+#: Tutorial.xml:1126 Tutorial.xml:1137 Tutorial.xml:1163
+#, no-c-format
+msgid "DVD Store example"
+msgstr "Exemple DVD Store "
+
+#. Tag: para
+#: Tutorial.xml:1134
+#, no-c-format
+msgid ""
+"The administration screens take use jBPM to manage the approval and shipping "
+"cycle for orders. The business process may even be changed dynamically, by "
+"selecting a different process definition!"
+msgstr ""
+"Les écrans d'administration utilisent jBPM pour gérer l'approbation et le "
+"cycle de livraison pour les commandes. Le processus métier peut même être "
+"changé dynamiquement en sélectionnant une définition de processus "
+"différente !"
+
+#. Tag: para
+#: Tutorial.xml:1148
+#, no-c-format
+msgid "Look in the <literal>dvdstore</literal> directory."
+msgstr "Regardez dans le répertoire <literal>dvdstore</literal>."
+
+#. Tag: title
+#: Tutorial.xml:1154
+#, no-c-format
+msgid ""
+"A complete application featuring Seam workspace management: the Issue "
+"Tracker example"
+msgstr ""
+"Une application complète offrant la gestion de l'espace de travail Seam : "
+"l'exemple Issue Tracker"
+
+#. Tag: para
+#: Tutorial.xml:1155
+#, fuzzy, no-c-format
+msgid ""
+"The Issue Tracker demo shows off Seam&#39;s workspace management "
+"functionality: the conversation switcher, conversation list and breadcrumbs."
+msgstr ""
+"La démonstration Issue Tracker illustre bien les fonctionnalités de la "
+"gestion de l'espace de travail Seam :le commutateur de conversation, la "
+"liste des conversations et les chemins de navigation (breadcrumbs)."
+
+#. Tag: para
+#: Tutorial.xml:1160
+#, no-c-format
+msgid ""
+"To log into the Issue Tracker demo you must provide a username and password. "
+"You can find this in the <filename>resources/import.sql</filename> file or "
+"use \"gavin\" and \"foobar\" for username and password respectively."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1174
+#, no-c-format
+msgid "Look in the <literal>issues</literal> directory."
+msgstr "Regardez dans le répertoire <literal>issues</literal>."
+
+#. Tag: title
+#: Tutorial.xml:1180
+#, no-c-format
+msgid "An example of Seam with Hibernate: the Hibernate Booking example"
+msgstr "Un exemple de Seam avec Hibernate : l'exemple Hibernate Booking"
+
+#. Tag: para
+#: Tutorial.xml:1181
+#, no-c-format
+msgid ""
+"The Hibernate Booking demo is a straight port of the Booking demo to an "
+"alternative architecture that uses Hibernate for persistence and JavaBeans "
+"instead of session beans."
+msgstr ""
+"La démonstration Hibernate Booking est un port direct de la démonstration "
+"Booking vers une architecture alternative, utilisant Hibernate pour la "
+"persistance et les JavaBeans à la place de beans session. "
+
+#. Tag: para
+#: Tutorial.xml:1187
+#, no-c-format
+msgid "Look in the <literal>hibernate</literal> directory."
+msgstr "Regardez le répertoire <literal>hibernate</literal>."
+
+#. Tag: title
+#: Tutorial.xml:1193
+#, no-c-format
+msgid "A RESTful Seam application: the Blog example"
+msgstr "Une application Seam RESTful : l'exemple Blog"
+
+#. Tag: para
+#: Tutorial.xml:1194
+#, no-c-format
+msgid ""
+"Seam makes it very easy to implement applications which keep state on the "
+"server-side. However, server-side state is not always appropriate, "
+"especially in for functionality that serves up <emphasis>content</emphasis>. "
+"For this kind of problem we often need to let the user bookmark pages and "
+"have a relatively stateless server, so that any page can be accessed at any "
+"time, via the bookmark. The Blog example shows how to a implement RESTful "
+"application using Seam. Every page of the application can be bookmarked, "
+"including the search results page."
+msgstr ""
+"Seam facilite énormément l'implémentation des applications qui gardent "
+"l'état, côté serveur. Cependant, l'état côté serveur n'est pas toujours "
+"approprié, en particulier pour la fonctionnalité qui sert des "
+"<emphasis>contenus</emphasis>. Pour ce genre de problème, nous devons "
+"souvent permettre à l'utilisateur de mettre les pages en signet et d'avoir "
+"un serveur relativement stateless, de manière à ce que chaque page puisse "
+"être accessible à tout moment, via le signet. L'exemple Blog montre comment "
+"implémenter l'application RESTful avec Seam. Chaque page de l'application "
+"peut être mise en signet, y compris la page des résultats de recherche."
+
+#. Tag: screeninfo
+#: Tutorial.xml:1197
+#, no-c-format
+msgid "Blog example"
+msgstr "L'exemple Blog "
+
+#. Tag: para
+#: Tutorial.xml:1205
+#, no-c-format
+msgid ""
+"The Blog example demonstrates the use of \"pull\"-style MVC, where instead "
+"of using action listener methods to retrieve data and prepare the data for "
+"the view, the view pulls data from components as it is being rendered."
+msgstr ""
+"L'exemple Blog démontre l'utilisation de \"pull\"-style MVC, où au lieu "
+"d'utiliser les méthodes du listener d'actionS pour récupérer des données et "
+"préparer les données pour l'affichage, l'affichage tirent les données des "
+"composants alors que l'affichage a lieu. "
+
+#. Tag: title
+#: Tutorial.xml:1209
+#, no-c-format
+msgid "Using \"pull\"-style MVC"
+msgstr "Utilisation de \"pull\"-style MVC"
+
+#. Tag: para
+#: Tutorial.xml:1210
+#, no-c-format
+msgid ""
+"This snippet from the <literal>index.xhtml</literal> facelets page displays "
+"a list of recent blog entries:"
+msgstr ""
+"Ce fragment de la page facelets <literal>index.xhtml</literal> affiche une "
+"liste d'entrées de blog récentes :"
+
+#. Tag: programlisting
+#: Tutorial.xml:1213
+#, fuzzy, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{blog.recentBlogEntries}\" var=\"blogEntry\" rows="
+"\"3\"&gt;\n"
+"   &lt;h:column&gt;\n"
+"      &lt;div class=\"blogEntry\"&gt;\n"
+"         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"         &lt;div&gt;\n"
+"            &lt;h:outputText escape=\"false\" \n"
+"                  value=\"#{blogEntry.excerpt==null ? blogEntry.body : "
+"blogEntry.excerpt}\"/&gt;\n"
+"         &lt;/div&gt;\n"
+"         &lt;p&gt;\n"
+"            &lt;h:outputLink value=\"entry.seam\" rendered=\"#{blogEntry."
+"excerpt!=null}\"&gt;\n"
+"               &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/"
+"&gt;\n"
+"               Read more...\n"
+"            &lt;/h:outputLink&gt;\n"
+"         &lt;/p&gt;\n"
+"         &lt;p&gt;\n"
+"            [Posted on \n"
+"            &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"               &lt;f:convertDateTime timeZone=\"#{blog.timeZone}\" locale=\"#"
+"{blog.locale}\" \n"
+"                                     type=\"both\"/&gt;\n"
+"            &lt;/h:outputText&gt;]\n"
+"            &#160;\n"
+"            &lt;h:outputLink value=\"entry.seam\"&gt;[Link]\n"
+"               &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/"
+"&gt;\n"
+"            &lt;/h:outputLink&gt;\n"
+"         &lt;/p&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+"&lt;h:dataTable value=\"#{blog.recentBlogEntries}\" var=\"blogEntry\" rows="
+"\"3\"&gt;\n"
+"   &lt;h:column&gt;\n"
+"      &lt;div class=\"blogEntry\"&gt;\n"
+"         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"         &lt;div&gt;\n"
+"            &lt;h:outputText escape=\"false\" \n"
+"                  value=\"#{blogEntry.excerpt==null ? blogEntry.body : "
+"blogEntry.excerpt}\"/&gt;\n"
+"         &lt;/div&gt;\n"
+"         &lt;p&gt;\n"
+"            &lt;h:outputLink value=\"entry.seam\" rendered=\"#{blogEntry."
+"excerpt!=null}\"&gt;\n"
+"               &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/"
+"&gt;\n"
+"               Read more...\n"
+"            &lt;/h:outputLink&gt;\n"
+"         &lt;/p&gt;\n"
+"         &lt;p&gt;\n"
+"            [Posted on \n"
+"            &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"               &lt;f:convertDateTime timeZone=\"#{blog.timeZone}\" locale=\"#"
+"{blog.locale}\" \n"
+"                   type=\"both\"/&gt;\n"
+"            &lt;/h:outputText&gt;]\n"
+"            &amp;#160;\n"
+"            &lt;h:outputLink value=\"entry.seam\"&gt;[Link]\n"
+"               &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/"
+"&gt;\n"
+"            &lt;/h:outputLink&gt;\n"
+"         &lt;/p&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1214
+#, fuzzy, no-c-format
+msgid ""
+"If we navigate to this page from a bookmark, how does the data used by the "
+"<literal>&lt;h:dataTable&gt;</literal> actually get initialized? Well, what "
+"happens is that the <literal>Blog</literal> is retrieved lazily&mdash;"
+"\"pulled\"&mdash;when needed, by a Seam component named <literal>blog</"
+"literal>. This is the opposite flow of control to what is usual in "
+"traditional web action-based frameworks like Struts."
+msgstr ""
+"Si nous allons à cette page depuis notre signet, comment les données "
+"utilisées par <literal>&lt;h:dataTable&gt;</literal> sont-elles "
+"effectivement initialisées ? Ce qui se passe, c'est que le <literal>Blog</"
+"literal> est extrait de façon paresseuse (lazily) - \"pulled\" - quand cela "
+"est nécessaire, par un composant Seam, appelé <literal>blog</literal>. C'est "
+"l'opposé du contrôle de flux usuel dans les web frameworks, basé action, "
+"comme Struts."
+
+#. Tag: programlisting
+#: Tutorial.xml:1222
+#, no-c-format
+msgid ""
+"@Name(\"blog\")\n"
+"@Scope(ScopeType.STATELESS)\n"
+"public class BlogService \n"
+"{\n"
+"   \n"
+"   @In\n"
+"   private EntityManager entityManager;\n"
+"  \n"
+"   @Unwrap\n"
+"   public Blog getBlog()\n"
+"   {\n"
+"      return (Blog) entityManager.createQuery(\"from Blog b left join fetch "
+"b.blogEntries\")\n"
+"            .setHint(\"org.hibernate.cacheable\", true)\n"
+"            .getSingleResult();\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+"@Name(\"blog\")\n"
+"@Scope(ScopeType.STATELESS)\n"
+"public class BlogService \n"
+"{\n"
+"   \n"
+"   @In\n"
+"   private EntityManager entityManager;\n"
+"  \n"
+"   @Unwrap\n"
+"   public Blog getBlog()\n"
+"   {\n"
+"      return (Blog) entityManager.createQuery(\"from Blog b left join fetch "
+"b.blogEntries\")\n"
+"            .setHint(\"org.hibernate.cacheable\", true)\n"
+"            .getSingleResult();\n"
+"   }\n"
+"\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:1225
+#, fuzzy, no-c-format
+msgid ""
+"This component uses a <emphasis>seam-managed persistence context</emphasis>. "
+"Unlike the other examples we&#39;ve seen, this persistence context is "
+"managed by Seam, instead of by the EJB3 container. The persistence context "
+"spans the entire web request, allowing us to avoid any exceptions that occur "
+"when accessing unfetched associations in the view."
+msgstr ""
+"Ce composant utilise un <emphasis>contexte de persistance géré par Seam</"
+"emphasis>. Contrairement aux autres exemples que nous avons traités, ce "
+"contexte de persistance est géré par Seam, et non par le conteneur EJB3. Le "
+"contexte de persistance s'étend sur toute la requête web, permettant ainsi "
+"d'éviter toute exception survenant quand on accède aux associations "
+"unfetched dans l'affichage. "
+
+#. Tag: para
+#: Tutorial.xml:1230
+#, no-c-format
+msgid ""
+"The <literal>@Unwrap</literal> annotation tells Seam to provide the return "
+"value of the method&mdash;the <literal>Blog</literal>&mdash;instead of the "
+"actual <literal>BlogService</literal> component to clients. This is the Seam "
+"<emphasis>manager component pattern</emphasis>."
+msgstr ""
+"Les annotations <literal>@Unwrap</literal> indiquent à Seam de fournir la "
+"valeur de retour de la méthode - le <literal>Blog</literal> - et non le "
+"composant actuel <literal>BlogService</literal> aux clients. C'est le "
+"<emphasis>schéma du composant gestionnaire</emphasis> dans Seam."
+
+#. Tag: para
+#: Tutorial.xml:1237
+#, no-c-format
+msgid ""
+"This is good so far, but what about bookmarking the result of form "
+"submissions, such as a search results page?"
+msgstr ""
+"Jusque là tout va bien, mais qu'en est-il de mettre en signet le résultat "
+"des soumissions de formulaire, comme une page de résultats de recherche ?"
+
+#. Tag: title
+#: Tutorial.xml:1243
+#, no-c-format
+msgid "Bookmarkable search results page"
+msgstr "Page de résultats de recherche à mettre en signet"
+
+#. Tag: para
+#: Tutorial.xml:1244
+#, no-c-format
+msgid ""
+"The blog example has a tiny form in the top right of each page that allows "
+"the user to search for blog entries. This is defined in a file, "
+"<literal>menu.xhtml</literal>, included by the facelets template, "
+"<literal>template.xhtml</literal>:"
+msgstr ""
+"L'exemple blog a un formulaire très minime en haut et à droite de chaque "
+"page qui permet à l'utilisateur de rechercher les entrées de blog. Cela est "
+"défini dans un fichier, <literal>menu.xhtml</literal>, inclus dans la "
+"matrice facelets, <literal>template.xhtml</literal> :"
+
+#. Tag: programlisting
+#: Tutorial.xml:1247
+#, no-c-format
+msgid ""
+"&lt;div id=\"search\"&gt;\n"
+"   &lt;h:form&gt;\n"
+"      &lt;h:inputText value=\"#{searchAction.searchPattern}\"/&gt;\n"
+"      &lt;h:commandButton value=\"Search\" action=\"/search.xhtml\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+"&lt;div id=\"search\"&gt;\n"
+"   &lt;h:form&gt;\n"
+"      &lt;h:inputText value=\"#{searchAction.searchPattern}\"/&gt;\n"
+"      &lt;h:commandButton value=\"Search\" action=\"/search.xhtml\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/div&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1248
+#, no-c-format
+msgid ""
+"To implement a bookmarkable search results page, we need to perform a "
+"browser redirect after processing the search form submission. Because we "
+"used the JSF view id as the action outcome, Seam automatically redirects to "
+"the view id when the form is submitted. Alternatively, we could have defined "
+"a navigation rule like this:"
+msgstr ""
+"Pour implémenter une page de résultats de recherche à mettre en signet, nous "
+"devons effectuer une redirection de navigateur après le traitement de la "
+"soumission du formulaire de recherche. Étant donné que nous avons utilisé "
+"l'id de l'affichage JSF en tant que résultat d'action, Seam redirige "
+"automatiquement vers l'id de l'affichage quand le formulaire est soumis. "
+"Alternativement, nous pouvons définir une règle de navigation comme suit :"
+
+#. Tag: programlisting
+#: Tutorial.xml:1251
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"   &lt;navigation-case&gt;\n"
+"      &lt;from-outcome&gt;searchResults&lt;/from-outcome&gt;\n"
+"      &lt;to-view-id&gt;/search.xhtml&lt;/to-view-id&gt;\n"
+"      &lt;redirect/&gt;\n"
+"   &lt;/navigation-case&gt;\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+"&lt;navigation-rule&gt;\n"
+"   &lt;navigation-case&gt;\n"
+"      &lt;from-outcome&gt;searchResults&lt;/from-outcome&gt;\n"
+"      &lt;to-view-id&gt;/search.xhtml&lt;/to-view-id&gt;\n"
+"      &lt;redirect/&gt;\n"
+"   &lt;/navigation-case&gt;\n"
+"&lt;/navigation-rule&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1252
+#, no-c-format
+msgid "Then the form would have looked like this:"
+msgstr "Alors le formulaire sera comme suit :"
+
+#. Tag: programlisting
+#: Tutorial.xml:1255
+#, no-c-format
+msgid ""
+"&lt;div id=\"search\"&gt;\n"
+"   &lt;h:form&gt;\n"
+"      &lt;h:inputText value=\"#{searchAction.searchPattern}\"/&gt;\n"
+"      &lt;h:commandButton value=\"Search\" action=\"searchResults\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+"&lt;div id=\"search\"&gt;\n"
+"   &lt;h:form&gt;\n"
+"      &lt;h:inputText value=\"#{searchAction.searchPattern}\"/&gt;\n"
+"      &lt;h:commandButton value=\"Search\" action=\"searchResults\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/div&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1256
+#, no-c-format
+msgid ""
+"But when we redirect, we need to include the values submitted with the form "
+"as request parameters, to get a bookmarkable URL like <literal>http://"
+"localhost:8080/seam-blog/search.seam?searchPattern=seam</literal>. JSF does "
+"not provide an easy way to do this, but Seam does. We use a Seam "
+"<emphasis>page parameter</emphasis>, defined in <literal>WEB-INF/pages.xml</"
+"literal>:"
+msgstr ""
+"Mais quand nous redirigeons, nous devons inclure les valeurs soumises avec "
+"le formulaire, en tant que paramètres de requête, pour obtenir un URL "
+"pouvant être mis en signet, comme <literal>http://localhost:8080/seam-blog/"
+"search.seam?searchPattern=seam</literal>. À cet effet, JSF n'offre pas de "
+"solution facile, contrairement à Seam. Nous utilisons un <emphasis>paramètre "
+"de page</emphasis> Seam, défini dans <literal>WEB-INF/pages.xml</literal> :"
+
+#. Tag: programlisting
+#: Tutorial.xml:1259
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   &lt;page view-id=\"/search.xhtml\"&gt;\n"
+"      &lt;param name=\"searchPattern\" value=\"#{searchService.searchPattern}"
+"\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"   &lt;page view-id=\"/search.xhtml\"&gt;\n"
+"      &lt;param name=\"searchPattern\" value=\"#{searchService.searchPattern}"
+"\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   ...\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1260
+#, no-c-format
+msgid ""
+"This tells Seam to include the value of <literal>#{searchService."
+"searchPattern}</literal> as a request parameter named "
+"<literal>searchPattern</literal> when redirecting to the page, and then re-"
+"apply the value of that parameter to the model before rendering the page."
+msgstr ""
+"Cela indique à Seam d'inclure la valeur de <literal>#{searchService."
+"searchPattern}</literal> en tant que paramètre de requête, appelé "
+"<literal>searchPattern</literal> quand on redirige vers la page, et que l'on "
+"réapplique la valeur de ce paramètre au modèle, avant d'afficher la page. "
+
+#. Tag: para
+#: Tutorial.xml:1263
+#, no-c-format
+msgid "The redirect takes us to the <literal>search.xhtml</literal> page:"
+msgstr "La redirection nous amène à la page <literal>search.xhtml</literal> :"
+
+#. Tag: programlisting
+#: Tutorial.xml:1266
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{searchResults}\" var=\"blogEntry\"&gt;\n"
+"   &lt;h:column&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:outputLink value=\"entry.seam\"&gt;\n"
+"            &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"            #{blogEntry.title}\n"
+"         &lt;/h:outputLink&gt;\n"
+"         posted on \n"
+"         &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"            &lt;f:convertDateTime timeZone=\"#{blog.timeZone}\" locale=\"#"
+"{blog.locale}\" type=\"both\"/&gt;\n"
+"         &lt;/h:outputText&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+"&lt;h:dataTable value=\"#{searchResults}\" var=\"blogEntry\"&gt;\n"
+"   &lt;h:column&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:outputLink value=\"entry.seam\"&gt;\n"
+"            &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"            #{blogEntry.title}\n"
+"         &lt;/h:outputLink&gt;\n"
+"         posted on \n"
+"         &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"            &lt;f:convertDateTime timeZone=\"#{blog.timeZone}\" locale=\"#"
+"{blog.locale}\" type=\"both\"/&gt;\n"
+"         &lt;/h:outputText&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1267
+#, no-c-format
+msgid ""
+"Which again uses \"pull\"-style MVC to retrieve the actual search results:"
+msgstr ""
+"Qui par la suite utilise \"pull\"-style MVC pour extraire les résultats "
+"réels de la recherche :"
+
+#. Tag: programlisting
+#: Tutorial.xml:1270
+#, fuzzy, no-c-format
+msgid ""
+"@Name(\"searchService\")\n"
+"public class SearchService \n"
+"{\n"
+"   \n"
+"   @In\n"
+"   private EntityManager entityManager;\n"
+"   \n"
+"   private String searchPattern;\n"
+"   \n"
+"   @Factory(\"searchResults\")\n"
+"   public List&lt;BlogEntry&gt; getSearchResults()\n"
+"   {\n"
+"      if (searchPattern==null)\n"
+"      {\n"
+"         return null;\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return entityManager.createQuery(\"select be from BlogEntry be "
+"where lower(be.title) \n"
+"                               like :searchPattern or lower(be.body) like :"
+"searchPattern \n"
+"                               order by be.date desc\")\n"
+"               .setParameter( \"searchPattern\", getSqlSearchPattern() )\n"
+"               .setMaxResults(100)\n"
+"               .getResultList();\n"
+"      }\n"
+"   }\n"
+"\n"
+"   private String getSqlSearchPattern()\n"
+"   {\n"
+"      return searchPattern==null ? \"\" : &#39;%&#39; + \n"
+"        searchPattern.toLowerCase().replace(&#39;*&#39;, &#39;%&#39;).replace"
+"(&#39;?&#39;, &#39;_&#39;) \n"
+"           + &#39;%&#39;;\n"
+"   }\n"
+"\n"
+"   public String getSearchPattern()\n"
+"   {\n"
+"      return searchPattern;\n"
+"   }\n"
+"\n"
+"   public void setSearchPattern(String searchPattern)\n"
+"   {\n"
+"      this.searchPattern = searchPattern;\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+"@Name(\"searchService\")\n"
+"public class SearchService \n"
+"{\n"
+"   \n"
+"   @In\n"
+"   private EntityManager entityManager;\n"
+"   \n"
+"   private String searchPattern;\n"
+"   \n"
+"   @Factory(\"searchResults\")\n"
+"   public List&lt;BlogEntry&gt; getSearchResults()\n"
+"   {\n"
+"      if (searchPattern==null)\n"
+"      {\n"
+"         return null;\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return entityManager.createQuery(\"select be from BlogEntry be "
+"where lower(be.title)\n"
+"             like :searchPattern or lower(be.body) like :searchPattern \n"
+"             order by be.date desc\")\n"
+"               .setParameter( \"searchPattern\", getSqlSearchPattern() )\n"
+"               .setMaxResults(100)\n"
+"               .getResultList();\n"
+"      }\n"
+"   }\n"
+"\n"
+"   private String getSqlSearchPattern()\n"
+"   {\n"
+"      return searchPattern==null ? \"\" : '&#37;' + \n"
+"          searchPattern.toLowerCase().replace('*', '&#37;').replace('?', "
+"'_') + '&#37;';\n"
+"   }\n"
+"\n"
+"   public String getSearchPattern()\n"
+"   {\n"
+"      return searchPattern;\n"
+"   }\n"
+"\n"
+"   public void setSearchPattern(String searchPattern)\n"
+"   {\n"
+"      this.searchPattern = searchPattern;\n"
+"   }\n"
+"\n"
+"}"
+
+#. Tag: title
+#: Tutorial.xml:1275
+#, no-c-format
+msgid "Using \"push\"-style MVC in a RESTful application"
+msgstr "Utilisation de \"push\"-style MVC dans une application RESTful "
+
+#. Tag: para
+#: Tutorial.xml:1276
+#, no-c-format
+msgid ""
+"Very occasionally, it makes more sense to use push-style MVC for processing "
+"RESTful pages, and so Seam provides the notion of a <emphasis>page action</"
+"emphasis>. The Blog example uses a page action for the blog entry page, "
+"<literal>entry.xhtml</literal>. Note that this is a little bit contrived, it "
+"would have been easier to use pull-style MVC here as well."
+msgstr ""
+"Dans de rares cas, il est plus logique d'utiliser push-style MVC pour le "
+"traitement de pages RESTful, ainsi Seam fournit la notion d'une "
+"<emphasis>action de page</emphasis>. L'exemple Blog utilise une action de "
+"page pour la page d'entrée du blogue, <literal>entry.xhtml</literal>. Notez "
+"que cela est un peu artificiel, ici aussi, il aurait été plus facile "
+"d'utiliser pull-style MVC."
+
+#. Tag: para
+#: Tutorial.xml:1279
+#, no-c-format
+msgid ""
+"The <literal>entryAction</literal> component works much like an action class "
+"in a traditional push-MVC action-oriented framework like Struts:"
+msgstr ""
+"Le composant <literal>entryAction</literal> est similaire dans son "
+"fonctionnement à une classe d'action dans un framework traditionnel push-MVC "
+"orienté action, comme Struts :"
+
+#. Tag: programlisting
+#: Tutorial.xml:1282
+#, no-c-format
+msgid ""
+"@Name(\"entryAction\")\n"
+"@Scope(STATELESS)\n"
+"public class EntryAction\n"
+"{\n"
+"   @In(create=true) \n"
+"   private Blog blog;\n"
+"   \n"
+"   @Out\n"
+"   private BlogEntry blogEntry;\n"
+"   \n"
+"   public void loadBlogEntry(String id) throws EntryNotFoundException\n"
+"   {\n"
+"      blogEntry = blog.getBlogEntry(id);\n"
+"      if (blogEntry==null) throw new EntryNotFoundException(id);\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+"@Name(\"entryAction\")\n"
+"@Scope(STATELESS)\n"
+"public class EntryAction\n"
+"{\n"
+"   @In(create=true) \n"
+"   private Blog blog;\n"
+"   \n"
+"   @Out\n"
+"   private BlogEntry blogEntry;\n"
+"   \n"
+"   public void loadBlogEntry(String id) throws EntryNotFoundException\n"
+"   {\n"
+"      blogEntry = blog.getBlogEntry(id);\n"
+"      if (blogEntry==null) throw new EntryNotFoundException(id);\n"
+"   }\n"
+"   \n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:1283
+#, no-c-format
+msgid "Page actions are also declared in <literal>pages.xml</literal>:"
+msgstr ""
+"Les actions de page sont également déclarées dans <literal>pages.xml</"
+"literal> :"
+
+#. Tag: programlisting
+#: Tutorial.xml:1286
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   ...\n"
+"\n"
+"   &lt;page view-id=\"/entry.xhtml\" action=\"#{entryAction.loadBlogEntry"
+"(blogEntry.id)}\"&gt;\n"
+"      &lt;param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"\n"
+"   &lt;page view-id=\"/post.xhtml\" action=\"#{loginAction.challenge}\"/"
+"&gt;\n"
+"\n"
+"   &lt;page view-id=\"*\" action=\"#{blog.hitCount.hit}\"/&gt;\n"
+"\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"   ...\n"
+"\n"
+"   &lt;page view-id=\"/entry.xhtml\" action=\"#{entryAction.loadBlogEntry"
+"(blogEntry.id)}\"&gt;\n"
+"      &lt;param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"\n"
+"   &lt;page view-id=\"/post.xhtml\" action=\"#{loginAction.challenge}\"/"
+"&gt;\n"
+"\n"
+"   &lt;page view-id=\"*\" action=\"#{blog.hitCount.hit}\"/&gt;\n"
+"\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1287
+#, no-c-format
+msgid ""
+"Notice that the example is using page actions for some other "
+"functionality&mdash;the login challenge, and the pageview counter. Also "
+"notice the use of a parameter in the page action method binding. This is not "
+"a standard feature of JSF EL, but Seam lets you use it, not just for page "
+"actions, but also in JSF method bindings."
+msgstr ""
+"Remarquez que l'exemple utilise des actions de page pour quelques autres "
+"fonctionnalités - la demande de connexion et le compteur d'affichage de "
+"page. Notez également l'utilisation d'un paramètre dans l'association de "
+"méthodes d'actions de page. Ce n'est pas une fonctionnalité standard de JSF "
+"EL, mais Seam vous permet de l'utiliser, non seulement pour les actions de "
+"page mais aussi dans les associations de méthode JSF. "
+
+#. Tag: para
+#: Tutorial.xml:1290
+#, no-c-format
+msgid ""
+"When the <literal>entry.xhtml</literal> page is requested, Seam first binds "
+"the page parameter <literal>blogEntryId</literal> to the model, then runs "
+"the page action, which retrieves the needed data&mdash;the "
+"<literal>blogEntry</literal>&mdash;and places it in the Seam event context. "
+"Finally, the following is rendered:"
+msgstr ""
+"Quand la page est requise <literal>entry.xhtml</literal>, Seam associe "
+"d'abord le paramètre de la page<literal>blogEntryId</literal> au modèle, et "
+"puis il exécute l'action de la page, qui récupère les données nécessaires - "
+"la <literal>blogEntry</literal> - et la place dans le contexte d'évèmenents "
+"Seam. Enfin, ce qui suit est affiché :"
+
+#. Tag: programlisting
+#: Tutorial.xml:1293
+#, fuzzy, no-c-format
+msgid ""
+"&lt;div class=\"blogEntry\"&gt;\n"
+"   &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"   &lt;div&gt;\n"
+"      &lt;h:outputText escape=\"false\" value=\"#{blogEntry.body}\"/&gt;\n"
+"   &lt;/div&gt;\n"
+"   &lt;p&gt;\n"
+"      [Posted on&#160;\n"
+"      &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"         &lt;f:convertDateTime timezone=\"#{blog.timeZone}\" locale=\"#{blog."
+"locale}\" type=\"both\"/&gt;\n"
+"      &lt;/h:outputText&gt;]\n"
+"   &lt;/p&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+"&lt;div class=\"blogEntry\"&gt;\n"
+"   &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"   &lt;div&gt;\n"
+"      &lt;h:outputText escape=\"false\" value=\"#{blogEntry.body}\"/&gt;\n"
+"   &lt;/div&gt;\n"
+"   &lt;p&gt;\n"
+"      [Posted on&amp;#160;\n"
+"      &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"         &lt;f:convertDateTime timezone=\"#{blog.timeZone}\" locale=\"#{blog."
+"locale}\" type=\"both\"/&gt;\n"
+"      &lt;/h:outputText&gt;]\n"
+"   &lt;/p&gt;\n"
+"&lt;/div&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1294
+#, no-c-format
+msgid ""
+"If the blog entry is not found in the database, the "
+"<literal>EntryNotFoundException</literal> exception is thrown. We want this "
+"exception to result in a 404 error, not a 505, so we annotate the exception "
+"class:"
+msgstr ""
+"Si les entrées du blogue ne sont pas dans la base de données, l'exception "
+"<literal>EntryNotFoundException</literal> est lancée. Cette exception "
+"devrait entraîner un erreur 404, et non une erreur 505, donc nous annotons "
+"la classe d'exception : "
+
+#. Tag: programlisting
+#: Tutorial.xml:1297
+#, no-c-format
+msgid ""
+"@ApplicationException(rollback=true)\n"
+"@HttpError(errorCode=HttpServletResponse.SC_NOT_FOUND)\n"
+"public class EntryNotFoundException extends Exception\n"
+"{\n"
+"   EntryNotFoundException(String id)\n"
+"   {\n"
+"      super(\"entry not found: \" + id);\n"
+"   }\n"
+"}"
+msgstr ""
+"@ApplicationException(rollback=true)\n"
+"@HttpError(errorCode=HttpServletResponse.SC_NOT_FOUND)\n"
+"public class EntryNotFoundException extends Exception\n"
+"{\n"
+"   EntryNotFoundException(String id)\n"
+"   {\n"
+"      super(\"entry not found: \" + id);\n"
+"   }\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:1298
+#, no-c-format
+msgid ""
+"An alternative implementation of the example does not use the parameter in "
+"the method binding:"
+msgstr ""
+"Une implémentation alternative de l'exemple n'utilise pas le paramètre dans "
+"l'association de méthode :"
+
+#. Tag: programlisting
+#: Tutorial.xml:1301
+#, no-c-format
+msgid ""
+"@Name(\"entryAction\")\n"
+"@Scope(STATELESS)\n"
+"public class EntryAction\n"
+"{\n"
+"   @In(create=true) \n"
+"   private Blog blog;\n"
+"   \n"
+"   @In @Out\n"
+"   private BlogEntry blogEntry;\n"
+"   \n"
+"   public void loadBlogEntry() throws EntryNotFoundException\n"
+"   {\n"
+"      blogEntry = blog.getBlogEntry( blogEntry.getId() );\n"
+"      if (blogEntry==null) throw new EntryNotFoundException(id);\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+"@Name(\"entryAction\")\n"
+"@Scope(STATELESS)\n"
+"public class EntryAction\n"
+"{\n"
+"   @In(create=true) \n"
+"   private Blog blog;\n"
+"   \n"
+"   @In @Out\n"
+"   private BlogEntry blogEntry;\n"
+"   \n"
+"   public void loadBlogEntry() throws EntryNotFoundException\n"
+"   {\n"
+"      blogEntry = blog.getBlogEntry( blogEntry.getId() );\n"
+"      if (blogEntry==null) throw new EntryNotFoundException(id);\n"
+"   }\n"
+"   \n"
+"}"
+
+#. Tag: programlisting
+#: Tutorial.xml:1302
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   ...\n"
+"\n"
+"   &lt;page view-id=\"/entry.xhtml\" action=\"#{entryAction.loadBlogEntry}"
+"\"&gt;\n"
+"      &lt;param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"   ...\n"
+"\n"
+"   &lt;page view-id=\"/entry.xhtml\" action=\"#{entryAction.loadBlogEntry}"
+"\"&gt;\n"
+"      &lt;param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   ...\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1303
+#, no-c-format
+msgid "It is a matter of taste which implementation you prefer."
+msgstr "C'est à vous de choisir l'implémentation que vous préférez utiliser."
+
+#~ msgid ""
+#~ "<literal>LoginAction</literal> validates the login details and retrieves "
+#~ "the logged in user."
+#~ msgstr ""
+#~ "<literal>LoginAction</literal> valide les informations de connexion et "
+#~ "récupère l'utilisateur connecté. "
+
+#~ msgid "<literal>LogoutAction</literal> ends the login session."
+#~ msgstr "<literal>LogoutAction</literal> termine la session de connexion."
+
+#~ msgid ""
+#~ "Finally, the <literal>LoggedIn</literal> annotation and the "
+#~ "<literal>LoggedInInterceptor</literal> are used to protect actions that "
+#~ "require a logged in user."
+#~ msgstr ""
+#~ "Enfin, l'annotation <literal>LoggedIn</literal> et le "
+#~ "<literal>LoggedInInterceptor</literal> sont utilisés pour protéger les "
+#~ "actions qui nécessitent un utilisateur connecté."
+
+#~ msgid ""
+#~ "The <literal>@LoggedIn</literal> annotation applies a custom Seam "
+#~ "interceptor to the component. This works because <literal>@LoggedIn</"
+#~ "literal> is marked with an <literal>@Interceptor</literal> meta-"
+#~ "annotation."
+#~ msgstr ""
+#~ "L'annotation <literal>@LoggedIn</literal> applique un intercepteur "
+#~ "personnalisé Seam au composant. Cela fonctionne parce que "
+#~ "<literal>@LoggedIn</literal> est marqué avec une méta-annotation "
+#~ "<literal>@Interceptor</literal>."
+
+#~ msgid ""
+#~ "In this tutorial, we'll assume that you have downloaded JBoss AS 4.0.5 "
+#~ "and installed the EJB 3.0 profile (using the JBoss AS installer). You "
+#~ "should also have a copy of Seam downloaded and extracted to a work "
+#~ "directory."
+#~ msgstr ""
+#~ "Dans ce tutoriel, nous présumons que vous avez téléchargé JBoss AS 4.0.5 "
+#~ "et installé le profile EJB 3.0 (en utilisant l'installateur JBoss AS). "
+#~ "Vous devriez également avoir une copie de Seam, téléchargée et extraite "
+#~ "pour un répertoire de travail. "
+
+#~ msgid "Running the Seam examples in JBoss using the JSF 1.2 RI"
+#~ msgstr "Utilisation des exemples Seam dans JBoss avec JSF 1.2 RI"
+
+#~ msgid ""
+#~ "JBoss AS 4.0 ships with the Apache MyFaces implementation of JSF 1.1. "
+#~ "After many months of waiting, there is <emphasis>still</emphasis> no "
+#~ "implementation of JSF 1.2 from MyFaces. For this and other reasons, JBoss "
+#~ "AS 4.2 will embed the JSF 1.2 Reference Implementation by default. Soon "
+#~ "after the release of 4.2, we will migrate the Seam examples to JSF 1.2."
+#~ msgstr ""
+#~ "JBoss AS 4.0 est distribué avec l'implémentation Apache MyFaces de JSF "
+#~ "1.1. Après de nombreux mois d'attente, il n'y a <emphasis>toujours pas</"
+#~ "emphasis> d'implémentation de JSF 1.2 depuis MyFaces. C'est pourquoi, "
+#~ "JBoss AS 4.2 intègrera JSF 1.2 Reference Implementation par défaut. Peu "
+#~ "après la publication de la version 4.2, nous migrerons les exemples Seam "
+#~ "vers JSF 1.2."
+
+#~ msgid ""
+#~ "For those who can't wait, Seam is already compatible with JSF 1.2, and "
+#~ "it's easy to get the Seam examples running with JSF 1.2 in JBoss 4.0.5. "
+#~ "Let's start with the famous booking example:"
+#~ msgstr ""
+#~ "Pour les impatients, Seam est déjà compatible avec JSF 1.2, et il est "
+#~ "facile d'utiliser les exemples Seam avec JSF 1.2 dans JBoss 4.0.5. "
+#~ "Commençons par le fameux exemple de réservation :"
+
+#~ msgid ""
+#~ "copy <literal>jsf-api.jar</literal>, <literal>jsf-impl.jar</literal>, "
+#~ "<literal>el-api.jar</literal>, <literal>el-impl.jar</literal> to "
+#~ "<literal>server/default/deploy/tomcat/jbossweb-tomcat55.sar/jsf-libs</"
+#~ "literal>."
+#~ msgstr ""
+#~ "copiez <literal>jsf-api.jar</literal>, <literal>jsf-impl.jar</literal>, "
+#~ "<literal>el-api.jar</literal>, <literal>el-impl.jar</literal> au "
+#~ "<literal>server/default/deploy/tomcat/jbossweb-tomcat55.sar/jsf-libs</"
+#~ "literal>."
+
+#~ msgid ""
+#~ "delete <literal>myfaces-api.jar</literal> and <literal>myfaces-impl.jar</"
+#~ "literal> from <literal>server/default/deploy/tomcat/jbossweb-tomcat55.sar/"
+#~ "jsf-libs</literal>."
+#~ msgstr ""
+#~ "supprimez <literal>myfaces-api.jar</literal> et <literal>myfaces-impl."
+#~ "jar</literal> du <literal>server/default/deploy/tomcat/jbossweb-tomcat55."
+#~ "sar/jsf-libs</literal>."
+
+#~ msgid ""
+#~ "edit <literal>server/default/deploy/tomcat/jbossweb-tomcat55.sar/conf/web."
+#~ "xml</literal>, replacing <literal>myfaces-impl.jar</literal> with "
+#~ "<literal>jsf-impl.jar</literal>."
+#~ msgstr ""
+#~ "éditez <literal>server/default/deploy/tomcat/jbossweb-tomcat55.sar/conf/"
+#~ "web.xml</literal>, en remplaçant <literal>myfaces-impl.jar</literal> par "
+#~ "<literal>jsf-impl.jar</literal>."
+
+#~ msgid ""
+#~ "edit <literal>examples/booking/resources/WEB-INF/web.xml</literal>, "
+#~ "deleting the MyFaces listener, uncommenting the RI listener"
+#~ msgstr ""
+#~ "éditez <literal>examples/booking/resources/WEB-INF/web.xml</literal>, en "
+#~ "supprimant le listener MyFaces, et en décommentant le listener RI "
+
+#~ msgid ""
+#~ "edit <literal>examples/booking/resources/WEB-INF/faces-config.xml</"
+#~ "literal>, uncommenting the lines that install the "
+#~ "<literal>SeamELResolver</literal> using the new JSF 1.2 XML schema "
+#~ "declaration."
+#~ msgstr ""
+#~ "éditez <literal>examples/booking/resources/WEB-INF/faces-config.xml</"
+#~ "literal>, en décommentant les lignes qui installent "
+#~ "<literal>SeamELResolver</literal> en utilisant la déclaration de schéma "
+#~ "JSF 1.2 XML."
+
+#~ msgid ""
+#~ "edit <literal>examples/booking/resources/META-INF/application.xml</"
+#~ "literal>, deleting the lines that declare <literal>el-api.jar</literal> "
+#~ "and <literal>el-impl.jar</literal> as Java modules."
+#~ msgstr ""
+#~ "éditez <literal>examples/booking/resources/META-INF/application.xml</"
+#~ "literal>, en supprimant les lignes qui déclarent <literal>el-api.jar</"
+#~ "literal> et <literal>el-impl.jar</literal> en tant que modules Java."
+
+#~ msgid ""
+#~ "Restart JBoss, and type <literal>ant</literal> in the <literal>examples/"
+#~ "booking</literal> directory."
+#~ msgstr ""
+#~ "Redémarrez JBoss, et saisissez <literal>ant</literal> dans le répertoire "
+#~ "<literal>examples/booking</literal>."

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Validation.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Validation.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Validation.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,803 @@
+# translation of Validation.po to french
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# myriam malga <mmalga at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Validation\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2007-08-01 16:25+1000\n"
+"Last-Translator: myriam malga <mmalga at redhat.com>\n"
+"Language-Team: french\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Validation.xml:6
+#, no-c-format
+msgid "JSF form validation in Seam"
+msgstr "Validation du formulaire JSF dans Seam"
+
+#. Tag: para
+#: Validation.xml:7
+#, no-c-format
+msgid "In plain JSF, validation is defined in the view:"
+msgstr "En JSF simple, la validation est définie dans l'affichage : "
+
+#. Tag: programlisting
+#: Validation.xml:10
+#, fuzzy, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;h:messages/&gt;\n"
+"\n"
+"    &lt;div&gt;\n"
+"        Country:\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;my:validateCountry/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    \n"
+"    &lt;div&gt;\n"
+"        Zip code:\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;my:validateZip/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"\n"
+"    &lt;h:commandButton/&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Country:\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;my:validateCountry/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Zip code:\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;my:validateZip/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+
+#. Tag: para
+#: Validation.xml:11
+#, no-c-format
+msgid ""
+"In practice, this approach usually violates DRY, since most \"validation\" "
+"actually enforces constraints that are part of the data model, and exist all "
+"the way down to the database schema definition. Seam provides support for "
+"model-based constraints defined using Hibernate Validator."
+msgstr ""
+"En pratique, cette approche usurpe généralement DRY, étant donné que la "
+"plupart des \"validations\" appliquent les contraintes qui font partie du "
+"modèle de données, et existent jusque dans la définition du schéma de la "
+"base de données. Seam fournit le support pour les contraintes orientées "
+"modèle, définies avec Hibernate Validator."
+
+#. Tag: para
+#: Validation.xml:14
+#, fuzzy, no-c-format
+msgid ""
+"Let&#39;s start by defining our constraints, on our <literal>Location</"
+"literal> class:"
+msgstr ""
+"Commençons par définir nos contraintes, sur notre classe <literal>Location</"
+"literal> :"
+
+#. Tag: programlisting
+#: Validation.xml:17
+#, fuzzy, no-c-format
+msgid ""
+"public class Location {\n"
+"    private String country;\n"
+"    private String zip;\n"
+"    \n"
+"    @NotNull\n"
+"    @Length(max=30)\n"
+"    public String getCountry() { return country; }\n"
+"    public void setCountry(String c) { country = c; }\n"
+"\n"
+"    @NotNull\n"
+"    @Length(max=6)\n"
+"    @Pattern(\"^\\d*$\")\n"
+"    public String getZip() { return zip; }\n"
+"    public void setZip(String z) { zip = z; }\n"
+"}"
+msgstr ""
+"public class Location {\n"
+"    private String country;\n"
+"    private String zip;\n"
+"    \n"
+"    @NotNull\n"
+"    @Length(max=30)\n"
+"    public String getCountry() { return country; }\n"
+"    public void setCountry(String c) { country = c; }\n"
+"\n"
+"    @NotNull\n"
+"    @Length(max=6)\n"
+"    @Pattern(\"^&#92;d*&#36;\")\n"
+"    public String getZip() { return zip; }\n"
+"    public void setZip(String z) { zip = z; }\n"
+"}"
+
+#. Tag: para
+#: Validation.xml:18
+#, fuzzy, no-c-format
+msgid ""
+"Well, that&#39;s a decent first cut, but in practice it might be more "
+"elegant to use custom constraints instead of the ones built into Hibernate "
+"Validator:"
+msgstr ""
+"C'est un bon début, mais en pratique il serait plus élégant d'utiliser des "
+"contraintes personnalisées au lieu de celles qui sont imbriquées dans "
+"Hibernate Validator :"
+
+#. Tag: programlisting
+#: Validation.xml:21
+#, no-c-format
+msgid ""
+"public class Location {\n"
+"    private String country;\n"
+"    private String zip;\n"
+"    \n"
+"    @NotNull\n"
+"    @Country\n"
+"    public String getCountry() { return country; }\n"
+"    public void setCountry(String c) { country = c; }\n"
+"\n"
+"    @NotNull\n"
+"    @ZipCode\n"
+"    public String getZip() { return zip; }\n"
+"    public void setZip(String z) { zip = z; }\n"
+"}"
+msgstr ""
+"public class Location {\n"
+"    private String country;\n"
+"    private String zip;\n"
+"    \n"
+"    @NotNull\n"
+"    @Country\n"
+"    public String getCountry() { return country; }\n"
+"    public void setCountry(String c) { country = c; }\n"
+"\n"
+"    @NotNull\n"
+"    @ZipCode\n"
+"    public String getZip() { return zip; }\n"
+"    public void setZip(String z) { zip = z; }\n"
+"}"
+
+#. Tag: para
+#: Validation.xml:22
+#, no-c-format
+msgid ""
+"Whichever route we take, we no longer need to specify the type of validation "
+"to be used in the JSF page. Instead, we can use <literal>&lt;s:validate&gt;</"
+"literal> to validate against the constraint defined on the model object."
+msgstr ""
+"Quelque soit votre approche, nous ne devons plus spécifier le type de "
+"validation à utiliser dans la page JSF. À la place, nous utiliserons "
+"<literal>&lt;s:validate&gt;</literal> pour valider contre la contrainte "
+"définie sur l'objet du modèle."
+
+#. Tag: programlisting
+#: Validation.xml:25
+#, fuzzy, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;h:messages/&gt;\n"
+"\n"
+"    &lt;div&gt;\n"
+"        Country:\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;s:validate/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    \n"
+"    &lt;div&gt;\n"
+"        Zip code:\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;s:validate/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    \n"
+"    &lt;h:commandButton/&gt;\n"
+"\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Country:\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;s:validate/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Zip code:\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;s:validate/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+
+#. Tag: para
+#: Validation.xml:26
+#, no-c-format
+msgid ""
+"<emphasis>Note:</emphasis> specifying <literal>@NotNull</literal> on the "
+"model does <emphasis>not</emphasis> eliminate the requirement for "
+"<literal>required=\"true\"</literal> to appear on the control! This is due "
+"to a limitation of the JSF validation architecture."
+msgstr ""
+"<emphasis>Note :</emphasis> spécifier <literal>@NotNull</literal> sur le "
+"modèle <emphasis>n'élimine pas</emphasis> l'exigence pour <literal>required="
+"\"true\"</literal> d'apparaître sur le contrôle ! Cela est dû à une "
+"limitation de l'architecture de validation JSF."
+
+#. Tag: para
+#: Validation.xml:29
+#, no-c-format
+msgid ""
+"This approach <emphasis>defines</emphasis> constraints on the model, and "
+"<emphasis>presents</emphasis> constraint violations in the view&mdash;a "
+"significantly better design."
+msgstr ""
+"Cette approche <emphasis>définit</emphasis> les contraintes sur le modèle et "
+"<emphasis>présente</emphasis> les violations de contraintes dans "
+"l'affichage&mdash;une bien meilleure conception. "
+
+#. Tag: para
+#: Validation.xml:32
+#, fuzzy, no-c-format
+msgid ""
+"However, it is not much less verbose than what we started with, so let&#39;s "
+"try <literal>&lt;s:validateAll&gt;</literal>:"
+msgstr ""
+"Cette version n'est pas moins détaillée que celle avec laquelle nous avons "
+"commencé, essayons <literal>&lt;s:validateAll&gt;</literal> :"
+
+#. Tag: programlisting
+#: Validation.xml:35
+#, fuzzy, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    \n"
+"    &lt;h:messages/&gt;\n"
+"\n"
+"    &lt;s:validateAll&gt;\n"
+"\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;h:inputText value=\"#{location.country}\" required=\"true\"/"
+"&gt;\n"
+"        &lt;/div&gt;\n"
+"\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/"
+"&gt;\n"
+"        &lt;/div&gt;\n"
+"\n"
+"        &lt;h:commandButton/&gt;\n"
+"\n"
+"    &lt;/s:validateAll&gt;\n"
+"\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;h:inputText value=\"#{location.country}\" required=\"true\"/"
+"&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/"
+"&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+
+#. Tag: para
+#: Validation.xml:36
+#, no-c-format
+msgid ""
+"This tag simply adds an <literal>&lt;s:validate&gt;</literal> to every input "
+"in the form. For a large form, it can save a lot of typing!"
+msgstr ""
+"Cette balise ajoute simplement un <literal>&lt;s:validate&gt;</literal> à "
+"chaque entrée dans le formulaire. Dans un long formulaire, cela peut vous "
+"éviter beaucoup de frappes !"
+
+#. Tag: para
+#: Validation.xml:39
+#, fuzzy, no-c-format
+msgid ""
+"Now we need to do something about displaying feedback to the user when "
+"validation fails. Currently we are displaying all messages at the top of the "
+"form. What we would really like to do is display the message next to the "
+"field with the error (this is possible in plain JSF), highlight the field "
+"and label (this is not possible) and, for good measure, display some image "
+"next the the field (also not possible). We also want to display a little "
+"colored asterisk next to the label for each required form field."
+msgstr ""
+"Maintenant nous devons nous préoccuper de l'affichage du feedback à "
+"l'utilisateur quand une validation échoue. Actuellement, nous affichons tous "
+"les messages au haut du formulaire. Nous souhaiterions afficher le message à "
+"côté du champ avec l'erreur (cela est possible en JSF simple), surligner le "
+"champ (cela n'est pas possible) et, pour ne rien oublier, afficher une image "
+"à côté du champ (cela n'est pas possible, non plus). "
+
+#. Tag: para
+#: Validation.xml:42
+#, no-c-format
+msgid ""
+"That&#39;s quite a lot of functionality we need for each field of our form. "
+"We wouldn&#39;t want to have to specify higlighting and the layout of the "
+"image, message and input field for every field on the form. So, instead, "
+"we&#39;ll specify the common layout in a facelets template:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:45
+#, no-c-format
+msgid ""
+"&lt;ui:composition xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"                xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"                xmlns:h=\"http://java.sun.com/jsf/html\"\n"
+"                xmlns:f=\"http://java.sun.com/jsf/core\"\n"
+"                xmlns:s=\"http://jboss.com/products/seam/taglib\"&gt;\n"
+"                 \n"
+"    &lt;div&gt;\n"
+"    \n"
+"        &lt;s:label styleClass=\"#{invalid?&#39;error&#39;:&#39;&#39;}"
+"\"&gt;\n"
+"            &lt;ui:insert name=\"label\"/&gt;\n"
+"            &lt;s:span styleClass=\"required\" rendered=\"#{required}\"&gt;"
+"*&lt;/s:span&gt;\n"
+"        &lt;/s:label&gt;\n"
+"        \n"
+"        &lt;span class=\"#{invalid?&#39;error&#39;:&#39;&#39;}\"&gt;\n"
+"            &lt;h:graphicImage src=\"img/error.gif\" rendered=\"#{invalid}\"/"
+"&gt;\n"
+"            &lt;s:validateAll&gt;\n"
+"                &lt;ui:insert/&gt;\n"
+"            &lt;/s:validateAll&gt;\n"
+"        &lt;/span&gt;\n"
+"        \n"
+"        &lt;s:message styleClass=\"error\"/&gt;\n"
+"        \n"
+"    &lt;/div&gt;\n"
+"    \n"
+"&lt;/ui:composition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:46
+#, fuzzy, no-c-format
+msgid ""
+"We can include this template for each of our form fields using <literal>&lt;"
+"s:decorate&gt;</literal>."
+msgstr "Maintenant, essayons <literal>&lt;s:decorate&gt;</literal> :"
+
+#. Tag: programlisting
+#: Validation.xml:49
+#, fuzzy, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"\n"
+"    &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"\n"
+"    &lt;s:decorate template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Country:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"/"
+"&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"    \n"
+"    &lt;s:decorate template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Zip code:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"\n"
+"    &lt;h:commandButton/&gt;\n"
+"\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;h:inputText value=\"#{location.country}\" required=\"true\"/"
+"&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/"
+"&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+
+#. Tag: para
+#: Validation.xml:50
+#, fuzzy, no-c-format
+msgid ""
+"Finally, we can use Ajax4JSF to display validation messages as the user is "
+"navigating around the form:"
+msgstr ""
+"Finalement, nous pouvons utiliser Ajax4JSF pour afficher les messages de "
+"validation alors que l'utilisateur est en train de taper :"
+
+#. Tag: programlisting
+#: Validation.xml:53
+#, fuzzy, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"\n"
+"    &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"\n"
+"    &lt;s:decorate id=\"countryDecoration\" template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Country:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;a:support event=\"onblur\" reRender=\"countryDecoration\"/"
+"&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"    \n"
+"    &lt;s:decorate id=\"zipDecoration\" template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Zip code:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;a:support event=\"onblur\" reRender=\"zipDecoration\"/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"\n"
+"    &lt;h:commandButton/&gt;\n"
+"\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Country:\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;my:validateCountry/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Zip code:\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;my:validateZip/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+
+#. Tag: para
+#: Validation.xml:54
+#, no-c-format
+msgid ""
+"As a final note, it&#39;s better style to define explicit ids for important "
+"controls on the page, especially if you want to do automated testing for the "
+"UI, using some toolkit like Selenium. If you don&#39;t provide explicit ids, "
+"JSF will generate them, but the generated values will change if you change "
+"anything on the page."
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:57
+#, fuzzy, no-c-format
+msgid ""
+"&lt;h:form id=\"form\"&gt;\n"
+"\n"
+"    &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"\n"
+"    &lt;s:decorate id=\"countryDecoration\" template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Country:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText id=\"country\" value=\"#{location.country}\" "
+"required=\"true\"&gt;\n"
+"            &lt;a:support event=\"onblur\" reRender=\"countryDecoration\"/"
+"&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"    \n"
+"    &lt;s:decorate id=\"zipDecoration\" template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Zip code:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText id=\"zip\" value=\"#{location.zip}\" required=\"true"
+"\"&gt;\n"
+"            &lt;a:support event=\"onblur\" reRender=\"zipDecoration\"/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"\n"
+"    &lt;h:commandButton/&gt;\n"
+"\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Country:\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;my:validateCountry/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Zip code:\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;my:validateZip/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+
+#~ msgid ""
+#~ "&lt;h:form&gt;\n"
+#~ "    &lt;div&gt;\n"
+#~ "        &lt;h:messages globalOnly=\"true\"/&gt;\n"
+#~ "    &lt;/div&gt;\n"
+#~ "    &lt;s:validateAll&gt;\n"
+#~ "        &lt;div&gt;\n"
+#~ "            Country:\n"
+#~ "            &lt;s:decorate&gt;\n"
+#~ "                &lt;f:facet name=\"beforeInvalidField\"&gt;&lt;h:"
+#~ "graphicImage src=\"img/error.gif\"/&gt;&lt;/f:facet&gt;\n"
+#~ "                &lt;f:facet name=\"afterInvalidField\"&gt;&lt;s:message/"
+#~ "&gt;&lt;/f:facet&gt;\n"
+#~ "                &lt;f:facet name=\"aroundInvalidField\"&gt;&lt;s:span "
+#~ "styleClass=\"error\"/&gt;&lt;/f:facet&gt;\n"
+#~ "                &lt;h:inputText value=\"#{location.country}\" required="
+#~ "\"true\"/&gt;\n"
+#~ "            &lt;/s:decorate&gt;\n"
+#~ "        &lt;/div&gt;\n"
+#~ "        &lt;div&gt;\n"
+#~ "            Zip code:\n"
+#~ "            &lt;s:decorate&gt;\n"
+#~ "                &lt;f:facet name=\"beforeInvalidField\"&gt;&lt;h:"
+#~ "graphicImage src=\"img/error.gif\"/&gt;&lt;/f:facet&gt;\n"
+#~ "                &lt;f:facet name=\"afterInvalidField\"&gt;&lt;s:message/"
+#~ "&gt;&lt;/f:facet&gt;\n"
+#~ "                &lt;f:facet name=\"aroundInvalidField\"&gt;&lt;s:span "
+#~ "styleClass=\"error\"/&gt;&lt;/f:facet&gt;\n"
+#~ "                &lt;h:inputText value=\"#{location.zip}\" required=\"true"
+#~ "\"/&gt;\n"
+#~ "            &lt;/s:decorate&gt;\n"
+#~ "        &lt;/div&gt;\n"
+#~ "        &lt;div&gt;\n"
+#~ "            &lt;h:commandButton/&gt;\n"
+#~ "        &lt;/div&gt;\n"
+#~ "    &lt;/s:validateAll&gt;\n"
+#~ "&lt;/h:form&gt;"
+#~ msgstr ""
+#~ "&lt;h:form&gt;\n"
+#~ "    &lt;div&gt;\n"
+#~ "        &lt;h:messages globalOnly=\"true\"/&gt;\n"
+#~ "    &lt;/div&gt;\n"
+#~ "    &lt;s:validateAll&gt;\n"
+#~ "        &lt;div&gt;\n"
+#~ "            Country:\n"
+#~ "            &lt;s:decorate&gt;\n"
+#~ "                &lt;f:facet name=\"beforeInvalidField\"&gt;&lt;h:"
+#~ "graphicImage src=\"img/error.gif\"/&gt;&lt;/f:facet&gt;\n"
+#~ "                &lt;f:facet name=\"afterInvalidField\"&gt;&lt;s:message/"
+#~ "&gt;&lt;/f:facet&gt;\n"
+#~ "                &lt;f:facet name=\"aroundInvalidField\"&gt;&lt;s:span "
+#~ "styleClass=\"error\"/&gt;&lt;/f:facet&gt;\n"
+#~ "                &lt;h:inputText value=\"#{location.country}\" required="
+#~ "\"true\"/&gt;\n"
+#~ "            &lt;/s:decorate&gt;\n"
+#~ "        &lt;/div&gt;\n"
+#~ "        &lt;div&gt;\n"
+#~ "            Zip code:\n"
+#~ "            &lt;s:decorate&gt;\n"
+#~ "                &lt;f:facet name=\"beforeInvalidField\"&gt;&lt;h:"
+#~ "graphicImage src=\"img/error.gif\"/&gt;&lt;/f:facet&gt;\n"
+#~ "                &lt;f:facet name=\"afterInvalidField\"&gt;&lt;s:message/"
+#~ "&gt;&lt;/f:facet&gt;\n"
+#~ "                &lt;f:facet name=\"aroundInvalidField\"&gt;&lt;s:span "
+#~ "styleClass=\"error\"/&gt;&lt;/f:facet&gt;\n"
+#~ "                &lt;h:inputText value=\"#{location.zip}\" required=\"true"
+#~ "\"/&gt;\n"
+#~ "            &lt;/s:decorate&gt;\n"
+#~ "        &lt;/div&gt;\n"
+#~ "        &lt;div&gt;\n"
+#~ "            &lt;h:commandButton/&gt;\n"
+#~ "        &lt;/div&gt;\n"
+#~ "    &lt;/s:validateAll&gt;\n"
+#~ "&lt;/h:form&gt;"
+
+#~ msgid ""
+#~ "Well, that looks much better to the user, but it is extremely verbose. "
+#~ "Fortunately, the facets of <literal>&lt;s:decorate&gt;</literal> may be "
+#~ "defined on any parent element:"
+#~ msgstr ""
+#~ "Enfin, cela est beaucoup mieux pour l'utilisateur, mais c'est extrêmement "
+#~ "détaillé. Heureusement les facets de <literal>&lt;s:decorate&gt;</"
+#~ "literal> peuvent être définis sur tout élément parent :"
+
+#~ msgid ""
+#~ "&lt;h:form&gt;\n"
+#~ "    &lt;f:facet name=\"beforeInvalidField\"&gt;\n"
+#~ "        &lt;h:graphicImage src=\"img/error.gif\"/&gt;\n"
+#~ "    &lt;/f:facet&gt;\n"
+#~ "    &lt;f:facet name=\"afterInvalidField\"&gt;\n"
+#~ "        &lt;s:message/&gt;\n"
+#~ "    &lt;/f:facet&gt;\n"
+#~ "    &lt;f:facet name=\"aroundInvalidField\"&gt;\n"
+#~ "        &lt;s:span styleClass=\"error\"/&gt;\n"
+#~ "    &lt;/f:facet&gt;\n"
+#~ "    &lt;div&gt;\n"
+#~ "        &lt;h:messages globalOnly=\"true\"/&gt;\n"
+#~ "    &lt;/div&gt;\n"
+#~ "    &lt;s:validateAll&gt;\n"
+#~ "        &lt;div&gt;\n"
+#~ "            Country:\n"
+#~ "            &lt;s:decorate&gt;\n"
+#~ "                &lt;h:inputText value=\"#{location.country}\" required="
+#~ "\"true\"/&gt;\n"
+#~ "            &lt;/s:decorate&gt;\n"
+#~ "        &lt;/div&gt;\n"
+#~ "        &lt;div&gt;\n"
+#~ "            Zip code:\n"
+#~ "            &lt;s:decorate&gt;\n"
+#~ "                &lt;h:inputText value=\"#{location.zip}\" required=\"true"
+#~ "\"/&gt;\n"
+#~ "            &lt;/s:decorate&gt;\n"
+#~ "        &lt;/div&gt;\n"
+#~ "        &lt;div&gt;\n"
+#~ "            &lt;h:commandButton/&gt;\n"
+#~ "        &lt;/div&gt;\n"
+#~ "    &lt;/s:validateAll&gt;\n"
+#~ "&lt;/h:form&gt;"
+#~ msgstr ""
+#~ "&lt;h:form&gt;\n"
+#~ "    &lt;f:facet name=\"beforeInvalidField\"&gt;\n"
+#~ "        &lt;h:graphicImage src=\"img/error.gif\"/&gt;\n"
+#~ "    &lt;/f:facet&gt;\n"
+#~ "    &lt;f:facet name=\"afterInvalidField\"&gt;\n"
+#~ "        &lt;s:message/&gt;\n"
+#~ "    &lt;/f:facet&gt;\n"
+#~ "    &lt;f:facet name=\"aroundInvalidField\"&gt;\n"
+#~ "        &lt;s:span styleClass=\"error\"/&gt;\n"
+#~ "    &lt;/f:facet&gt;\n"
+#~ "    &lt;div&gt;\n"
+#~ "        &lt;h:messages globalOnly=\"true\"/&gt;\n"
+#~ "    &lt;/div&gt;\n"
+#~ "    &lt;s:validateAll&gt;\n"
+#~ "        &lt;div&gt;\n"
+#~ "            Country:\n"
+#~ "            &lt;s:decorate&gt;\n"
+#~ "                &lt;h:inputText value=\"#{location.country}\" required="
+#~ "\"true\"/&gt;\n"
+#~ "            &lt;/s:decorate&gt;\n"
+#~ "        &lt;/div&gt;\n"
+#~ "        &lt;div&gt;\n"
+#~ "            Zip code:\n"
+#~ "            &lt;s:decorate&gt;\n"
+#~ "                &lt;h:inputText value=\"#{location.zip}\" required=\"true"
+#~ "\"/&gt;\n"
+#~ "            &lt;/s:decorate&gt;\n"
+#~ "        &lt;/div&gt;\n"
+#~ "        &lt;div&gt;\n"
+#~ "            &lt;h:commandButton/&gt;\n"
+#~ "        &lt;/div&gt;\n"
+#~ "    &lt;/s:validateAll&gt;\n"
+#~ "&lt;/h:form&gt;"
+
+#~ msgid ""
+#~ "&lt;h:form&gt;\n"
+#~ "    &lt;f:facet name=\"beforeInvalidField\"&gt;\n"
+#~ "        &lt;h:graphicImage src=\"img/error.gif\"/&gt;\n"
+#~ "    &lt;/f:facet&gt;\n"
+#~ "    &lt;f:facet name=\"afterInvalidField\"&gt;\n"
+#~ "        &lt;s:message/&gt;\n"
+#~ "    &lt;/f:facet&gt;\n"
+#~ "    &lt;f:facet name=\"aroundInvalidField\"&gt;\n"
+#~ "        &lt;s:span styleClass=\"error\"/&gt;\n"
+#~ "    &lt;/f:facet&gt;\n"
+#~ "    &lt;div&gt;\n"
+#~ "        &lt;h:messages globalOnly=\"true\"/&gt;\n"
+#~ "    &lt;/div&gt;\n"
+#~ "    &lt;s:validateAll&gt;\n"
+#~ "        &lt;div&gt;\n"
+#~ "            Country:\n"
+#~ "            &lt;s:decorate id=\"country\"&gt;\n"
+#~ "                &lt;h:inputText value=\"#{location.country}\" required="
+#~ "\"true\"&gt;\n"
+#~ "                    &lt;a:support event=\"onblur\" reRender=\"country\"/"
+#~ "&gt;\n"
+#~ "                &lt;/h:inputText&gt;\n"
+#~ "            &lt;/s:decorate&gt;\n"
+#~ "        &lt;/div&gt;\n"
+#~ "        &lt;div&gt;\n"
+#~ "            Zip code:\n"
+#~ "            &lt;s:decorate id=\"zip\"&gt;\n"
+#~ "                &lt;h:inputText value=\"#{location.zip}\" required=\"true"
+#~ "\"&gt;\n"
+#~ "                    &lt;a:support event=\"onblur\" reRender=\"zip\"/&gt;\n"
+#~ "                &lt;/h:inputText&gt;\n"
+#~ "            &lt;/s:decorate&gt;\n"
+#~ "        &lt;/div&gt;\n"
+#~ "        &lt;div&gt;\n"
+#~ "            &lt;h:commandButton/&gt;\n"
+#~ "        &lt;/div&gt;\n"
+#~ "    &lt;/s:validateAll&gt;\n"
+#~ "&lt;/h:form&gt;"
+#~ msgstr ""
+#~ "&lt;h:form&gt;\n"
+#~ "    &lt;f:facet name=\"beforeInvalidField\"&gt;\n"
+#~ "        &lt;h:graphicImage src=\"img/error.gif\"/&gt;\n"
+#~ "    &lt;/f:facet&gt;\n"
+#~ "    &lt;f:facet name=\"afterInvalidField\"&gt;\n"
+#~ "        &lt;s:message/&gt;\n"
+#~ "    &lt;/f:facet&gt;\n"
+#~ "    &lt;f:facet name=\"aroundInvalidField\"&gt;\n"
+#~ "        &lt;s:span styleClass=\"error\"/&gt;\n"
+#~ "    &lt;/f:facet&gt;\n"
+#~ "    &lt;div&gt;\n"
+#~ "        &lt;h:messages globalOnly=\"true\"/&gt;\n"
+#~ "    &lt;/div&gt;\n"
+#~ "    &lt;s:validateAll&gt;\n"
+#~ "        &lt;div&gt;\n"
+#~ "            Country:\n"
+#~ "            &lt;s:decorate id=\"country\"&gt;\n"
+#~ "                &lt;h:inputText value=\"#{location.country}\" required="
+#~ "\"true\"&gt;\n"
+#~ "                    &lt;a:support event=\"onblur\" reRender=\"country\"/"
+#~ "&gt;\n"
+#~ "                &lt;/h:inputText&gt;\n"
+#~ "            &lt;/s:decorate&gt;\n"
+#~ "        &lt;/div&gt;\n"
+#~ "        &lt;div&gt;\n"
+#~ "            Zip code:\n"
+#~ "            &lt;s:decorate id=\"zip\"&gt;\n"
+#~ "                &lt;h:inputText value=\"#{location.zip}\" required=\"true"
+#~ "\"&gt;\n"
+#~ "                    &lt;a:support event=\"onblur\" reRender=\"zip\"/&gt;\n"
+#~ "                &lt;/h:inputText&gt;\n"
+#~ "            &lt;/s:decorate&gt;\n"
+#~ "        &lt;/div&gt;\n"
+#~ "        &lt;div&gt;\n"
+#~ "            &lt;h:commandButton/&gt;\n"
+#~ "        &lt;/div&gt;\n"
+#~ "    &lt;/s:validateAll&gt;\n"
+#~ "&lt;/h:form&gt;"

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Xml.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Xml.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/fr-FR/Xml.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1324 @@
+# translation of Xml.po to french
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# myriam malga <mmalga at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Xml\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2007-08-07 16:14+1000\n"
+"Last-Translator: myriam malga <mmalga at redhat.com>\n"
+"Language-Team: french\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Xml.xml:6
+#, no-c-format
+msgid "Configuring Seam components"
+msgstr "Configuration des composants Seam"
+
+#. Tag: para
+#: Xml.xml:7
+#, fuzzy, no-c-format
+msgid ""
+"The philosophy of minimizing XML-based configuration is extremely strong in "
+"Seam. Nevertheless, there are various reasons why we might want to configure "
+"a Seam component using XML: to isolate deployment-specific information from "
+"the Java code, to enable the creation of re-usable frameworks, to configure "
+"Seam&#39;s built-in functionality, etc. Seam provides two basic approaches "
+"to configuring components: configuration via property settings in a "
+"properties file or <literal>web.xml</literal>, and configuration via "
+"<literal>components.xml</literal>."
+msgstr ""
+"Minimiser la configuration basée sur XML est particulièrement important dans "
+"Seam. Toutefois, il y a différentes raisons pour configurer les composants "
+"Seam en utilisant XML : pour isoler du code Java, les informations "
+"spécifiques au déploiement, pour activer la création de frameworks "
+"réutilisables, pour configurer la fonctionnalité imbriquée dans Seam, etc. "
+"Seam fournit deux approches de base pour configurer les composants : la "
+"configuration via les paramètres de propriété dans un fichier de propriétés "
+"ou <literal>web.xml</literal>, et la configuration via <literal>components."
+"xml</literal>."
+
+#. Tag: title
+#: Xml.xml:10
+#, no-c-format
+msgid "Configuring components via property settings"
+msgstr "Configuration des composants via les paramètres de propriété"
+
+#. Tag: para
+#: Xml.xml:11
+#, no-c-format
+msgid ""
+"Seam components may be provided with configuration properties either via "
+"servlet context parameters, or via a properties file named <literal>seam."
+"properties</literal> in the root of the classpath."
+msgstr ""
+"Les composants Seam peuvent être fournis avec des propriétés de "
+"configuration, soit via les paramètres de contexte du servlet, soit via le "
+"fichier de propriétés, appelé <literal>seam.properties</literal> dans la "
+"racine du chemin de classe."
+
+#. Tag: para
+#: Xml.xml:14
+#, no-c-format
+msgid ""
+"The configurable Seam component must expose JavaBeans-style property setter "
+"methods for the configurable attributes. If a seam component named "
+"<literal>com.jboss.myapp.settings</literal> has a setter method named "
+"<literal>setLocale()</literal>, we can provide a property named <literal>com."
+"jboss.myapp.settings.locale</literal> in the <literal>seam.properties</"
+"literal> file or as a servlet context parameter, and Seam will set the value "
+"of the <literal>locale</literal> attribute whenever it instantiates the "
+"component."
+msgstr ""
+"Le composant configurable de Seam doit exposer les méthodes de réglage de "
+"propriétés, style JavaBeans pour les attributs configurables. Si un "
+"composant Seam, appelé <literal>com.jboss.myapp.settings</literal> possède "
+"une méthode de réglage, appelée <literal>setLocale()</literal>, nous pouvons "
+"fournir une propriété, appelée <literal>com.jboss.myapp.settings.locale</"
+"literal> dans le fichier <literal>seam.properties</literal> ou comme "
+"paramètre de contexte du servlet, et Seam définira la valeur de l'attribut "
+"<literal>locale</literal> à chaque fois qu'il instancie le composant."
+
+#. Tag: para
+#: Xml.xml:17
+#, no-c-format
+msgid ""
+"The same mechanism is used to configure Seam itself. For example, to set the "
+"conversation timeout, we provide a value for <literal>org.jboss.seam.core."
+"manager.conversationTimeout</literal> in <literal>web.xml</literal> or "
+"<literal>seam.properties</literal>. (There is a built-in Seam component "
+"named <literal>org.jboss.seam.core.manager</literal> with a setter method "
+"named <literal>setConversationTimeout()</literal>.)"
+msgstr ""
+"Le même mécanisme est utilisé pour configurer Seam. Par exemple, pour "
+"définir le délai de conversation, nous fournissons une valeur pour "
+"<literal>org.jboss.seam.core.manager.conversationTimeout</literal> dans "
+"<literal>web.xml</literal> ou <literal>seam.properties</literal>. (Il existe "
+"un composant imbriqué dans Seam, appelé <literal>org.jboss.seam.core."
+"manager</literal> avec une méthode de réglage, appelée "
+"<literal>setConversationTimeout()</literal>.)"
+
+#. Tag: title
+#: Xml.xml:20
+#, no-c-format
+msgid "Configuring components via components.xml"
+msgstr "Configuration des composants via components.xml"
+
+#. Tag: para
+#: Xml.xml:21
+#, no-c-format
+msgid ""
+"The <literal>components.xml</literal> file is a bit more powerful than "
+"property settings. It lets you:"
+msgstr ""
+"Le fichier <literal>components.xml</literal> est un peu plus puissant que "
+"les paramètres de propriété. Il vous permet de :"
+
+#. Tag: para
+#: Xml.xml:26
+#, fuzzy, no-c-format
+msgid ""
+"Configure components that have been installed automatically&mdash;including "
+"both built-in components, and application components that have been "
+"annotated with the <literal>@Name</literal> annotation and picked up by "
+"Seam&#39;s deployment scanner."
+msgstr ""
+"configurer les composants qui ont été installés automatiquement - y compris "
+"les composants imbriqués et les composants d'application qui ont été annotés "
+"avec l'annotation <literal>@Name</literal> et détectés par le scanner de "
+"déploiement de Seam. "
+
+#. Tag: para
+#: Xml.xml:31
+#, no-c-format
+msgid ""
+"Install classes with no <literal>@Name</literal> annotation as Seam "
+"components&mdash;this is most useful for certain kinds of infrastructural "
+"components which can be installed multiple times different names (for "
+"example Seam-managed persistence contexts)."
+msgstr ""
+"installer des classes sans annotation <literal>@Name</literal> en tant que "
+"composants Seam - cela est fort utile pour certains types de composants "
+"infrastructurels qui peuvent être installés de nombreuses fois, avec "
+"différents noms (par exemple, les contextes de persistance gérés par Seam)."
+
+#. Tag: para
+#: Xml.xml:36
+#, no-c-format
+msgid ""
+"Install components that <emphasis>do</emphasis> have a <literal>@Name</"
+"literal> annotation but are not installed by default because of an "
+"<literal>@Install</literal> annotation that indicates the component should "
+"not be installed."
+msgstr ""
+"installer les composants qui <emphasis>possèdent</emphasis> une annotation "
+"<literal>@Name</literal> mais ne sont pas installés par défaut parce qu'une "
+"annotation <literal>@Install</literal> indique que le composant ne devrait "
+"pas être installé. "
+
+#. Tag: para
+#: Xml.xml:41
+#, no-c-format
+msgid "Override the scope of a component."
+msgstr "surcharger l'étendue d'un composant. "
+
+#. Tag: para
+#: Xml.xml:46
+#, no-c-format
+msgid ""
+"A <literal>components.xml</literal> file may appear in one of three "
+"different places:"
+msgstr ""
+"Un fichier <literal>components.xml</literal> peut apparaître dans un des "
+"trois emplacements suivants :"
+
+#. Tag: para
+#: Xml.xml:51
+#, no-c-format
+msgid "The <literal>WEB-INF</literal> directory of a <literal>war</literal>."
+msgstr "Le répertoire <literal>WEB-INF</literal> d'un <literal>war</literal>."
+
+#. Tag: para
+#: Xml.xml:56
+#, no-c-format
+msgid "The <literal>META-INF</literal> directory of a <literal>jar</literal>."
+msgstr "Le répertoire <literal>META-INF</literal> d'un <literal>jar</literal>."
+
+#. Tag: para
+#: Xml.xml:61
+#, no-c-format
+msgid ""
+"Any directory of a <literal>jar</literal> that contains classes with an "
+"<literal>@Name</literal> annotation."
+msgstr ""
+"Tout répertoire d'un <literal>jar</literal> contenant des classes avec une "
+"annotation <literal>@Name</literal>."
+
+#. Tag: para
+#: Xml.xml:66
+#, no-c-format
+msgid ""
+"Usually, Seam components are installed when the deployment scanner discovers "
+"a class with a <literal>@Name</literal> annotation sitting in an archive "
+"with a <literal>seam.properties</literal> file or a <literal>META-INF/"
+"components.xml</literal> file. (Unless the component has an "
+"<literal>@Install</literal> annotation indicating it should not be installed "
+"by default.) The <literal>components.xml</literal> file lets us handle "
+"special cases where we need to override the annotations."
+msgstr ""
+"En général, les composants Seam sont installés quand le scanner de "
+"déploiement détecte une classe avec une annotation <literal>@Name</literal>, "
+"située dans une archive avec un fichier <literal>seam.properties</literal> "
+"ou un fichier <literal>META-INF/components.xml</literal>. (À moins que le "
+"composant ait une annotation <literal>@Install</literal> indiquant qu'il "
+"devrait être installé par défaut). Le fichier <literal>components.xml</"
+"literal> vous laisse gérer les cas particuliers, où il faut ignorer les "
+"annotations."
+
+#. Tag: para
+#: Xml.xml:69
+#, no-c-format
+msgid ""
+"For example, the following <literal>components.xml</literal> file installs "
+"the JBoss Embeddable EJB3 container:"
+msgstr ""
+"Par exemple, le fichier <literal>components.xml</literal> installe le "
+"conteneur JBoss Embeddable EJB3 :"
+
+#. Tag: programlisting
+#: Xml.xml:72
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"&gt;\n"
+"    &lt;core:ejb/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"&gt;\n"
+"    &lt;core:ejb/&gt;\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:73
+#, no-c-format
+msgid "This example does the same thing:"
+msgstr "Cet exemple fait la même chose :"
+
+#. Tag: programlisting
+#: Xml.xml:76
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component class=\"org.jboss.seam.core.Ejb\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components&gt;\n"
+"    &lt;component class=\"org.jboss.seam.core.Ejb\"/&gt;\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:77
+#, no-c-format
+msgid ""
+"This one installs and configures two different Seam-managed persistence "
+"contexts:"
+msgstr ""
+"Celui-ci installe et configure deux contextes de persistance différents, "
+"gérés par Seam :"
+
+#. Tag: programlisting
+#: Xml.xml:80
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"    &lt;core:managed-persistence-context name=\"customerDatabase\"\n"
+"                persistence-unit-jndi-name=\"java:/"
+"customerEntityManagerFactory\"/&gt;\n"
+"        \n"
+"    &lt;core:managed-persistence-context name=\"accountingDatabase\"\n"
+"                persistence-unit-jndi-name=\"java:/"
+"accountingEntityManagerFactory\"/&gt;            \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"    &lt;core:managed-persistence-context name=\"customerDatabase\"\n"
+"                persistence-unit-jndi-name=\"java:/"
+"customerEntityManagerFactory\"/&gt;\n"
+"        \n"
+"    &lt;core:managed-persistence-context name=\"accountingDatabase\"\n"
+"                persistence-unit-jndi-name=\"java:/"
+"accountingEntityManagerFactory\"/&gt;            \n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:81
+#, no-c-format
+msgid "As does this one:"
+msgstr "Comme celui-ci :"
+
+#. Tag: programlisting
+#: Xml.xml:84
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component name=\"customerDatabase\" \n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"customerEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"    \n"
+"    &lt;component name=\"accountingDatabase\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"accountingEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components&gt;\n"
+"    &lt;component name=\"customerDatabase\" \n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"customerEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"    \n"
+"    &lt;component name=\"accountingDatabase\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"accountingEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:85
+#, fuzzy, no-c-format
+msgid ""
+"This example creates a session-scoped Seam-managed persistence context (this "
+"is not recommended in practice):"
+msgstr ""
+"Cet exemple crée un contexte de persistance, géré par Seam et session scoped "
+"(cela n'est pas recommandé dans la pratique) :"
+
+#. Tag: programlisting
+#: Xml.xml:88
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"  &lt;core:managed-persistence-context name=\"productDatabase\" \n"
+"                                   scope=\"session\"\n"
+"              persistence-unit-jndi-name=\"java:/productEntityManagerFactory"
+"\"/&gt;        \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"  &lt;core:managed-persistence-context name=\"productDatabase\" \n"
+"                                   scope=\"session\"\n"
+"              persistence-unit-jndi-name=\"java:/productEntityManagerFactory"
+"\"/&gt;        \n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: programlisting
+#: Xml.xml:89
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"            \n"
+"    &lt;component name=\"productDatabase\"\n"
+"              scope=\"session\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"productEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components&gt;\n"
+"            \n"
+"    &lt;component name=\"productDatabase\"\n"
+"              scope=\"session\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"productEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:90
+#, no-c-format
+msgid ""
+"It is common to use the <literal>auto-create</literal> option for "
+"infrastructural objects like persistence contexts, which saves you from "
+"having to explicitly specify <literal>create=true</literal> when you use the "
+"<literal>@In</literal> annotation."
+msgstr ""
+"Il est fréquent d'utiliser l'option <literal>auto-create</literal> pour les "
+"objets infrastructurels comme les contextes de persistance, qui vous évitent "
+"de spécifier explicitement <literal>create=true</literal> quand vous "
+"utilisez l'annotation <literal>@In</literal>."
+
+#. Tag: programlisting
+#: Xml.xml:93
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"  &lt;core:managed-persistence-context name=\"productDatabase\" \n"
+"                             auto-create=\"true\"\n"
+"              persistence-unit-jndi-name=\"java:/productEntityManagerFactory"
+"\"/&gt;        \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"  &lt;core:managed-persistence-context name=\"productDatabase\" \n"
+"                             auto-create=\"true\"\n"
+"              persistence-unit-jndi-name=\"java:/productEntityManagerFactory"
+"\"/&gt;        \n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: programlisting
+#: Xml.xml:94
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"            \n"
+"    &lt;component name=\"productDatabase\"\n"
+"        auto-create=\"true\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"productEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components&gt;\n"
+"            \n"
+"    &lt;component name=\"productDatabase\"\n"
+"        auto-create=\"true\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"productEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:95
+#, no-c-format
+msgid ""
+"The <literal>&lt;factory&gt;</literal> declaration lets you specify a value "
+"or method binding expression that will be evaluated to initialize the value "
+"of a context variable when it is first referenced."
+msgstr ""
+"La déclaration <literal>&lt;factory&gt;</literal> vous permet de spécifier "
+"une valeur ou une expression de méthode d'association qui peut être évaluée "
+"pour initialiser la valeur d'une variable de contexte quand elle est "
+"référencée pour la première fois. "
+
+#. Tag: programlisting
+#: Xml.xml:98
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"contact\" method=\"#{contactManager.loadContact}\" "
+"scope=\"CONVERSATION\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"contact\" method=\"#{contactManager.loadContact}\" "
+"scope=\"CONVERSATION\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:99
+#, no-c-format
+msgid ""
+"You can create an \"alias\" (a second name) for a Seam component like so:"
+msgstr ""
+"Vous pouvez créer un \"alias\" (un deuxième nom) pour un composant Seam de "
+"la façon suivante :"
+
+#. Tag: programlisting
+#: Xml.xml:102
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"user\" value=\"#{actor}\" scope=\"STATELESS\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"user\" value=\"#{actor}\" scope=\"STATELESS\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:103
+#, no-c-format
+msgid "You can even create an \"alias\" for a commonly used expression:"
+msgstr ""
+"Vous pouvez même créer un \"alias\" pour une expression fréquemment "
+"utilisée :"
+
+#. Tag: programlisting
+#: Xml.xml:106
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"contact\" value=\"#{contactManager.contact}\" scope="
+"\"STATELESS\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"contact\" value=\"#{contactManager.contact}\" scope="
+"\"STATELESS\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:107
+#, no-c-format
+msgid ""
+"It is especially common to see the use of <literal>auto-create=\"true\"</"
+"literal> with the <literal>&lt;factory&gt;</literal> declaration:"
+msgstr ""
+"Il est particulièrement fréquent de voir l'utilisation de <literal>auto-"
+"create=\"true\"</literal> avec la déclaration <literal>&lt;factory&gt;</"
+"literal> :"
+
+#. Tag: programlisting
+#: Xml.xml:110
+#, fuzzy, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"session\" value=\"#{entityManager.delegate}\" scope="
+"\"STATELESS\" \n"
+"       auto-create=\"true\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"session\" value=\"#{entityManager.delegate}\" scope="
+"\"STATELESS\" \n"
+"        auto-create=\"true\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:111
+#, fuzzy, no-c-format
+msgid ""
+"Sometimes we want to reuse the same <literal>components.xml</literal> file "
+"with minor changes during both deployment and testing. Seam lets you place "
+"wildcards of the form <literal>@wildcard@</literal> in the "
+"<literal>components.xml</literal> file which can be replaced either by your "
+"Ant build script (at deployment time) or by providing a file named "
+"<literal>components.properties</literal> in the classpath (at development "
+"time). You&#39;ll see this approach used in the Seam examples."
+msgstr ""
+"Quelquefois nous désirons réutiliser le même fichier <literal>components."
+"xml</literal> avec des modifications mineures durant le déploiement et les "
+"tests. Seam vous permet de placer des caractères de remplacement avec la "
+"forme <literal>@wildcard@</literal> dans le fichier <literal>components.xml</"
+"literal> qui peut être remplacé, par votre script de montage Ant (au "
+"démarrage) ou en fournissant un fichier appelé <literal>components."
+"properties</literal> dans le chemin de classe (au moment du développement). "
+"Vous verrez cette approche dans les exemples Seam. "
+
+#. Tag: title
+#: Xml.xml:114
+#, no-c-format
+msgid "Fine-grained configuration files"
+msgstr "Fichiers de configuration à fine granularité"
+
+#. Tag: para
+#: Xml.xml:115
+#, no-c-format
+msgid ""
+"If you have a large number of components that need to be configured in XML, "
+"it makes much more sense to split up the information in <literal>components."
+"xml</literal> into many small files. Seam lets you put configuration for a "
+"class named, for example, <literal>com.helloworld.Hello</literal> in a "
+"resource named <literal>com/helloworld/Hello.component.xml</literal>. (You "
+"might be familiar with this pattern, since it is the same one we use in "
+"Hibernate.) The root element of the file may be either a <literal>&lt;"
+"components&gt;</literal> or <literal>&lt;component&gt;</literal> element."
+msgstr ""
+"Si vous avez un grand nombre de composants devant être configurés dans XML, "
+"il est plus logique de diviser les informations dans <literal>components."
+"xml</literal> en de nombreux petits fichiers. Seam vous permet de placer la "
+"configuration d'une classe appelée par exemple, <literal>com.helloworld."
+"Hello</literal> dans une ressource, appelée <literal>com/helloworld/Hello."
+"component.xml</literal>. (Vous connaissez peut-être ce modèle, puisque nous "
+"utilisons le même dans Hibernate.) L'élément racine de ce fichier peut être "
+"un élément <literal>&lt;components&gt;</literal>, ou un élément <literal>&lt;"
+"component&gt;</literal>."
+
+#. Tag: para
+#: Xml.xml:118
+#, no-c-format
+msgid "The first option lets you define multiple components in the file:"
+msgstr ""
+"La première option vous permet de définir de multiples composants dans le "
+"fichier :"
+
+#. Tag: programlisting
+#: Xml.xml:121
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component class=\"com.helloworld.Hello\" name=\"hello\"&gt;\n"
+"        &lt;property name=\"name\"&gt;#{user.name}&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"    &lt;factory name=\"message\" value=\"#{hello.message}\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components&gt;\n"
+"    &lt;component class=\"com.helloworld.Hello\" name=\"hello\"&gt;\n"
+"        &lt;property name=\"name\"&gt;#{user.name}&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"    &lt;factory name=\"message\" value=\"#{hello.message}\"/&gt;\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:122
+#, no-c-format
+msgid ""
+"The second option only lets you define or configure one component, but is "
+"less noisy:"
+msgstr ""
+"La seconde option vous permet seulement de définir ou de configurer un "
+"composant, mais elle est moins longue :"
+
+#. Tag: programlisting
+#: Xml.xml:125
+#, no-c-format
+msgid ""
+"&lt;component name=\"hello\"&gt;\n"
+"    &lt;property name=\"name\"&gt;#{user.name}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+"&lt;component name=\"hello\"&gt;\n"
+"    &lt;property name=\"name\"&gt;#{user.name}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+
+#. Tag: para
+#: Xml.xml:126
+#, no-c-format
+msgid ""
+"In the second option, the class name is implied by the file in which the "
+"component definition appears."
+msgstr ""
+"Dans la seconde option, le nom de la classe est sous entendue par le fichier "
+"dans lequel la définition du composant apparaît. "
+
+#. Tag: para
+#: Xml.xml:129
+#, no-c-format
+msgid ""
+"Alternatively, you may put configuration for all classes in the <literal>com."
+"helloworld</literal> package in <literal>com/helloworld/components.xml</"
+"literal>."
+msgstr ""
+"Alternativement, vous pouvez placer la configuration pour toutes les classes "
+"dans le paquetage <literal>com.helloworld</literal> dans <literal>com/"
+"helloworld/components.xml</literal>."
+
+#. Tag: title
+#: Xml.xml:132
+#, no-c-format
+msgid "Configurable property types"
+msgstr "Types de propriétés configurables"
+
+#. Tag: para
+#: Xml.xml:133
+#, no-c-format
+msgid ""
+"Properties of string, primitive or primitive wrapper type may be configured "
+"just as you would expect:"
+msgstr ""
+"Les propriétés de chaîne, de type primitif ou classe primitive enveloppante "
+"peuvent être configurées comme vous pourriez vous y attendre :"
+
+#. Tag: programlisting
+#: Xml.xml:136
+#, no-c-format
+msgid "org.jboss.seam.core.manager.conversationTimeout 60000"
+msgstr "org.jboss.seam.core.manager.conversationTimeout 60000"
+
+#. Tag: programlisting
+#: Xml.xml:137
+#, no-c-format
+msgid "&lt;core:manager conversation-timeout=\"60000\"/&gt;"
+msgstr "&lt;core:manager conversation-timeout=\"60000\"/&gt;"
+
+#. Tag: programlisting
+#: Xml.xml:138
+#, no-c-format
+msgid ""
+"&lt;component name=\"org.jboss.seam.core.manager\"&gt;\n"
+"    &lt;property name=\"conversationTimeout\"&gt;60000&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+"&lt;component name=\"org.jboss.seam.core.manager\"&gt;\n"
+"    &lt;property name=\"conversationTimeout\"&gt;60000&lt;/property&gt;\n"
+"&lt;/component&gt;"
+
+#. Tag: para
+#: Xml.xml:139
+#, no-c-format
+msgid "Arrays, sets and lists of strings or primitives are also supported:"
+msgstr ""
+"Les tableaux, ensembles et listes de chaînes ou valeurs primitives sont "
+"également pris en charge :"
+
+#. Tag: programlisting
+#: Xml.xml:142
+#, no-c-format
+msgid ""
+"org.jboss.seam.core.jbpm.processDefinitions order.jpdl.xml, return.jpdl.xml, "
+"inventory.jpdl.xml"
+msgstr ""
+"org.jboss.seam.core.jbpm.processDefinitions order.jpdl.xml, return.jpdl.xml, "
+"inventory.jpdl.xml"
+
+#. Tag: programlisting
+#: Xml.xml:143
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;order.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;return.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;order.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;return.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+
+#. Tag: programlisting
+#: Xml.xml:144
+#, no-c-format
+msgid ""
+"&lt;component name=\"org.jboss.seam.core.jbpm\"&gt;\n"
+"    &lt;property name=\"processDefinitions\"&gt;\n"
+"        &lt;value&gt;order.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;return.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+"&lt;component name=\"org.jboss.seam.core.jbpm\"&gt;\n"
+"    &lt;property name=\"processDefinitions\"&gt;\n"
+"        &lt;value&gt;order.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;return.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/component&gt;"
+
+#. Tag: para
+#: Xml.xml:145
+#, no-c-format
+msgid ""
+"Even maps with String-valued keys and string or primitive values are "
+"supported:"
+msgstr ""
+"Toutes les mappes avec des clés string-valued et chaînes ou valeurs "
+"primitives sont prises en charge :"
+
+#. Tag: programlisting
+#: Xml.xml:148
+#, no-c-format
+msgid ""
+"&lt;component name=\"issueEditor\"&gt;\n"
+"    &lt;property name=\"issueStatuses\"&gt;\n"
+"        &lt;key&gt;open&lt;/key&gt; &lt;value&gt;open issue&lt;/value&gt;\n"
+"        &lt;key&gt;resolved&lt;/key&gt; &lt;value&gt;issue resolved by "
+"developer&lt;/value&gt;\n"
+"        &lt;key&gt;closed&lt;/key&gt; &lt;value&gt;resolution accepted by "
+"user&lt;/value&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+"&lt;component name=\"issueEditor\"&gt;\n"
+"    &lt;property name=\"issueStatuses\"&gt;\n"
+"        &lt;key&gt;open&lt;/key&gt; &lt;value&gt;open issue&lt;/value&gt;\n"
+"        &lt;key&gt;resolved&lt;/key&gt; &lt;value&gt;issue resolved by "
+"developer&lt;/value&gt;\n"
+"        &lt;key&gt;closed&lt;/key&gt; &lt;value&gt;resolution accepted by "
+"user&lt;/value&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/component&gt;"
+
+#. Tag: para
+#: Xml.xml:149
+#, no-c-format
+msgid ""
+"Finally, you may wire together components using a value-binding expression. "
+"Note that this is quite different to injection using <literal>@In</literal>, "
+"since it happens at component instantiation time instead of invocation time. "
+"It is therefore much more similar to the dependency injection facilities "
+"offered by traditional IoC containers like JSF or Spring."
+msgstr ""
+"Enfin, vous pouvez connecter les composants en utilisant une expression "
+"d'association de valeur. Notez que cela est assez différent de l'injection à "
+"l'aide de <literal>@In</literal>, étant donné que cela a lieu au moment de "
+"l'instanciation du composant au lieu du moment de l'appel. Par conséquent, "
+"cela est plus proche des fonctions d'injection de dépendance offertes par "
+"les conteneurs traditionnels loC, comme JSF ou Spring. "
+
+#. Tag: programlisting
+#: Xml.xml:152
+#, no-c-format
+msgid ""
+"&lt;drools:managed-working-memory name=\"policyPricingWorkingMemory\" rule-"
+"base=\"#{policyPricingRules}\"/&gt;"
+msgstr ""
+"&lt;drools:managed-working-memory name=\"policyPricingWorkingMemory\" rule-"
+"base=\"#{policyPricingRules}\"/&gt;"
+
+#. Tag: programlisting
+#: Xml.xml:153
+#, no-c-format
+msgid ""
+"&lt;component name=\"policyPricingWorkingMemory\"\n"
+"          class=\"org.jboss.seam.drools.ManagedWorkingMemory\"&gt;\n"
+"    &lt;property name=\"ruleBase\"&gt;#{policyPricingRules}&lt;/"
+"property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+"&lt;component name=\"policyPricingWorkingMemory\"\n"
+"          class=\"org.jboss.seam.drools.ManagedWorkingMemory\"&gt;\n"
+"    &lt;property name=\"ruleBase\"&gt;#{policyPricingRules}&lt;/"
+"property&gt;\n"
+"&lt;/component&gt;"
+
+#. Tag: title
+#: Xml.xml:154
+#, no-c-format
+msgid "Using XML Namespaces"
+msgstr "Utilisation des espaces de noms XML "
+
+#. Tag: para
+#: Xml.xml:155
+#, no-c-format
+msgid ""
+"Throughout the examples, there have been two competing ways of declaring "
+"components: with and without the use of XML namespaces. The following shows "
+"a typical <literal>components.xml</literal> file without namespaces. It uses "
+"the Seam Components DTD:"
+msgstr ""
+"À travers tous les exemples, il y a deux façons concurrentes de déclarer des "
+"composants : avec ou sans l'utilisation des espaces de noms XML. Ce qui suit "
+"montre un fichier typique <literal>components.xml</literal> sans les espaces "
+"de noms. Il utilise les composants DTD Seam :"
+
+#. Tag: programlisting
+#: Xml.xml:158
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"&gt;\n"
+"&lt;!DOCTYPE components PUBLIC \"-//JBoss/Seam Component Configuration DTD "
+"1.2//EN\"\n"
+"                            \"http://jboss.com/products/seam/components-1.2."
+"dtd\"&gt;\n"
+"&lt;components&gt;\n"
+"\n"
+"    &lt;component class=\"org.jboss.seam.core.init\"&gt;\n"
+"        &lt;property name=\"debug\"&gt;true&lt;/property&gt;\n"
+"        &lt;property name=\"jndiPattern\"&gt;@jndiPattern@&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"    &lt;component name=\"org.jboss.sean.core.ejb\" installed=\"@embeddedEjb@"
+"\" /&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"&gt;\n"
+"&lt;!DOCTYPE components PUBLIC \"-//JBoss/Seam Component Configuration DTD "
+"1.2//EN\"\n"
+"                            \"http://jboss.com/products/seam/components-1.2."
+"dtd\"&gt;\n"
+"&lt;components&gt;\n"
+"\n"
+"    &lt;component class=\"org.jboss.seam.core.init\"&gt;\n"
+"        &lt;property name=\"debug\"&gt;true&lt;/property&gt;\n"
+"        &lt;property name=\"jndiPattern\"&gt;@jndiPattern@&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"    &lt;component name=\"org.jboss.sean.core.ejb\" installed=\"@embeddedEjb@"
+"\" /&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:159
+#, no-c-format
+msgid ""
+"As you can see, this is somewhat verbose. Even worse, the component and "
+"attribute names cannot be validated at development time."
+msgstr ""
+"Comme vous pouvez le constater, cela est assez détaillé. Et pire, le "
+"composant et les noms d'attributs ne peuvent pas être validés au moment du "
+"développement. "
+
+#. Tag: para
+#: Xml.xml:162
+#, no-c-format
+msgid "The namespaced version looks like this:"
+msgstr "La version namespaced ressemble à ce qui suit :"
+
+#. Tag: programlisting
+#: Xml.xml:165
+#, fuzzy, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                                        http://jboss.com/products/seam/core-"
+"1.2.xsd \n"
+"                 http://jboss.com/products/seam/components \n"
+"                                        http://jboss.com/products/seam/"
+"components-1.2.xsd\"&gt;\n"
+"\n"
+"    &lt;core:init debug=\"true\" jndi-pattern=\"@jndiPattern@\"/&gt;\n"
+"\n"
+"    &lt;core:ejb installed=\"@embeddedEjb@\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                http://jboss.com/products/seam/core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components \n"
+"                 http://jboss.com/products/seam/components-1.2.xsd\"&gt;\n"
+"\n"
+"    &lt;core:init debug=\"true\" jndi-pattern=\"@jndiPattern@\"/&gt;\n"
+"\n"
+"    &lt;core:ejb installed=\"@embeddedEjb@\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:166
+#, no-c-format
+msgid ""
+"Even though the schema declarations are verbose, the actual XML content is "
+"lean and easy to understand. The schemas provide detailed information about "
+"each component and the attributes available, allowing XML editors to offer "
+"intelligent autocomplete. The use of namespaced elements makes generating "
+"and maintaining correct <literal>components.xml</literal> files much simpler."
+msgstr ""
+"Même si les déclarations de schéma sont détaillées, le contenu XML actuel "
+"est allégé et facile à comprendre. Les schémas fournissent des informations "
+"détaillées sur chaque composant et les attributs disponibles, permettant aux "
+"éditeurs XML de fournir une auto-complétion intelligente. L'utilisation "
+"d'éléments namespaced facilite la génération et le maintien des fichiers "
+"<literal>components.xml</literal> corrects. "
+
+#. Tag: para
+#: Xml.xml:169
+#, no-c-format
+msgid ""
+"Now, this works great for the built-in Seam components, but what about user "
+"components? There are two options. First, Seam supports mixing the two "
+"models, allowing the use of the generic <literal>&lt;component&gt;</literal> "
+"declarations for user components, along with namespaced declarations for "
+"built-in components. But even better, Seam allows you to quickly declare "
+"namespaces for your own components."
+msgstr ""
+"Cela fonctionne bien pour les composants Seam imbriqués, mais qu'en est-il "
+"des composants de l'utilisateur ? Il existe deux options. Premièrement, Seam "
+"prend en charge l'amalgame des deux modèles, permettant l'utilisation des "
+"déclarations génériques <literal>&lt;component&gt;</literal> pour les "
+"composants d'utilisateur, avec également les déclarations namespaced pour "
+"les composants imbriqués. Mieux encore, Seam vous permet de déclarer "
+"rapidement les espaces de noms pour vos propres composants. "
+
+#. Tag: para
+#: Xml.xml:172
+#, no-c-format
+msgid ""
+"Any Java package can be associated with an XML namespace by annotating the "
+"package with the <literal>@Namespace</literal> annotation. (Package-level "
+"annotations are declared in a file named <literal>package-info.java</"
+"literal> in the package directory.) Here is an example from the seampay demo:"
+msgstr ""
+"Tout paquetage Java peut être associé à l'espace de nom XML, en annotant le "
+"paquetage avec l'annotation <literal>@Namespace</literal>. (Les annotations "
+"niveau paquetage sont déclarées dans un fichier, appelé <literal>package-"
+"info.java</literal> dans le répertoire du paquetage.) Voici un exemple de la "
+"démonstration seampay :"
+
+#. Tag: programlisting
+#: Xml.xml:175
+#, no-c-format
+msgid ""
+"@Namespace(value=\"http://jboss.com/products/seam/examples/seampay\")\n"
+"package org.jboss.seam.example.seampay;\n"
+"\n"
+"import org.jboss.seam.annotations.Namespace;"
+msgstr ""
+"@Namespace(value=\"http://jboss.com/products/seam/examples/seampay\")\n"
+"package org.jboss.seam.example.seampay;\n"
+"\n"
+"import org.jboss.seam.annotations.Namespace;"
+
+#. Tag: para
+#: Xml.xml:176
+#, no-c-format
+msgid ""
+"That is all you need to do to use the namespaced style in "
+"<literal>components.xml</literal>! Now we can write:"
+msgstr ""
+"C'est tout ce que vous avez à faire pour utiliser le style namespaced dans "
+"<literal>components.xml</literal> ! Maintenant, nous pouvons écrire :"
+
+#. Tag: programlisting
+#: Xml.xml:179
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pay=\"http://jboss.com/products/seam/examples/seampay\"\n"
+"            ... &gt;\n"
+"\n"
+"    &lt;pay:payment-home new-instance=\"#{newPayment}\"\n"
+"                      created-message=\"Created a new payment to #"
+"{newPayment.payee}\" /&gt;\n"
+"\n"
+"    &lt;pay:payment name=\"newPayment\"\n"
+"                 payee=\"Somebody\"\n"
+"                 account=\"#{selectedAccount}\"\n"
+"                 payment-date=\"#{currentDatetime}\"\n"
+"                 created-date=\"#{currentDatetime}\" /&gt;\n"
+"     ...\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pay=\"http://jboss.com/products/seam/examples/seampay\"\n"
+"            ... &gt;\n"
+"\n"
+"    &lt;pay:payment-home new-instance=\"#{newPayment}\"\n"
+"                      created-message=\"Created a new payment to #"
+"{newPayment.payee}\" /&gt;\n"
+"\n"
+"    &lt;pay:payment name=\"newPayment\"\n"
+"                 payee=\"Somebody\"\n"
+"                 account=\"#{selectedAccount}\"\n"
+"                 payment-date=\"#{currentDatetime}\"\n"
+"                 created-date=\"#{currentDatetime}\" /&gt;\n"
+"     ...\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:180
+#, no-c-format
+msgid "<para>Or:</para>"
+msgstr "<para>Ou :</para>"
+
+#. Tag: programlisting
+#: Xml.xml:183
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pay=\"http://jboss.com/products/seam/examples/seampay\"\n"
+"            ... &gt;\n"
+"\n"
+"    &lt;pay:payment-home&gt;\n"
+"        &lt;pay:new-instance&gt;\"#{newPayment}\"&lt;/pay:new-instance&gt;\n"
+"        &lt;pay:created-message&gt;Created a new payment to #{newPayment."
+"payee}&lt;/pay:created-message&gt;\n"
+"    &lt;/pay:payment-home&gt;\n"
+"    \n"
+"    &lt;pay:payment name=\"newPayment\"&gt;\n"
+"        &lt;pay:payee&gt;Somebody\"&lt;/pay:payee&gt;\n"
+"        &lt;pay:account&gt;#{selectedAccount}&lt;/pay:account&gt;\n"
+"        &lt;pay:payment-date&gt;#{currentDatetime}&lt;/pay:payment-date&gt;\n"
+"        &lt;pay:created-date&gt;#{currentDatetime}&lt;/pay:created-date&gt;\n"
+"     &lt;/pay:payment&gt;\n"
+"     ...\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pay=\"http://jboss.com/products/seam/examples/seampay\"\n"
+"            ... &gt;\n"
+"\n"
+"    &lt;pay:payment-home&gt;\n"
+"        &lt;pay:new-instance&gt;\"#{newPayment}\"&lt;/pay:new-instance&gt;\n"
+"        &lt;pay:created-message&gt;Created a new payment to #{newPayment."
+"payee}&lt;/pay:created-message&gt;\n"
+"    &lt;/pay:payment-home&gt;\n"
+"    \n"
+"    &lt;pay:payment name=\"newPayment\"&gt;\n"
+"        &lt;pay:payee&gt;Somebody\"&lt;/pay:payee&gt;\n"
+"        &lt;pay:account&gt;#{selectedAccount}&lt;/pay:account&gt;\n"
+"        &lt;pay:payment-date&gt;#{currentDatetime}&lt;/pay:payment-date&gt;\n"
+"        &lt;pay:created-date&gt;#{currentDatetime}&lt;/pay:created-date&gt;\n"
+"     &lt;/pay:payment&gt;\n"
+"     ...\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:184
+#, no-c-format
+msgid ""
+"These examples illustrate the two usage models of a namespaced element. In "
+"the first declaration, the <literal>&lt;pay:payment-home&gt;</literal> "
+"references the <literal>paymentHome</literal> component:"
+msgstr ""
+"Ces exemples illustrent les deux modèles d'utilisation d'un élément "
+"namespaced. Dans la première déclaration, le <literal>&lt;pay:payment-"
+"home&gt;</literal> référence le composant <literal>paymentHome</literal> :"
+
+#. Tag: programlisting
+#: Xml.xml:187
+#, no-c-format
+msgid ""
+"package org.jboss.seam.example.seampay;\n"
+"...\n"
+"@Name(\"paymentHome\")\n"
+"public class PaymentController\n"
+"    extends EntityHome&lt;Payment&gt;\n"
+"{\n"
+"    ... \n"
+"}"
+msgstr ""
+"package org.jboss.seam.example.seampay;\n"
+"...\n"
+"@Name(\"paymentHome\")\n"
+"public class PaymentController\n"
+"    extends EntityHome&lt;Payment&gt;\n"
+"{\n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Xml.xml:188
+#, no-c-format
+msgid ""
+"The element name is the hyphenated form of the component name. The "
+"attributes of the element are the hyphenated form of the property names."
+msgstr ""
+"Le nom de l'élément est la forme avec le trait d'union du nom du composant. "
+"Les attributs de l'élément sont la forme avec le trait d'union des noms de "
+"la propriété."
+
+#. Tag: para
+#: Xml.xml:191
+#, no-c-format
+msgid ""
+"In the second declaration, the <literal>&lt;pay:payment&gt;</literal> "
+"element refers to the <literal>Payment</literal> class in the <literal>org."
+"jboss.seam.example.seampay</literal> package. In this case <literal>Payment</"
+"literal> is an entity that is being declared as a Seam component:"
+msgstr ""
+"Dans la seconde déclaration, l'élément <literal>&lt;pay:payment&gt;</"
+"literal> se réfère à la classe <literal>Payment</literal> dans le paquetage "
+"<literal>org.jboss.seam.example.seampay</literal>. Dans ce cas, "
+"<literal>Payment</literal> est une entité qui est déclarée en tant que "
+"composant Seam :"
+
+#. Tag: programlisting
+#: Xml.xml:194
+#, no-c-format
+msgid ""
+"package org.jboss.seam.example.seampay;\n"
+"...\n"
+"@Entity\n"
+"public class Payment\n"
+"    implements Serializable\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+"package org.jboss.seam.example.seampay;\n"
+"...\n"
+"@Entity\n"
+"public class Payment\n"
+"    implements Serializable\n"
+"{\n"
+"    ...\n"
+"}"
+
+#. Tag: para
+#: Xml.xml:195
+#, no-c-format
+msgid ""
+"If we want validation and autocompletion to work for user-defined "
+"components, we will need a schema. Seam does not yet provide a mechanism to "
+"automatically generate a schema for a set of components, so it is necessary "
+"to generate one manually. The schema definitions for the standard Seam "
+"packages can be used for guidance."
+msgstr ""
+"Si nous voulons que la validation et l'auto-complétion fonctionnent avec les "
+"composants définis utilisateur, il nous faudra un schéma. Seam ne fournit "
+"pas encore de mécanisme pour générer automatiquement un schéma pour un "
+"ensemble de composants, il est donc nécessaire de le générer manuellement. "
+"Les définitions de schéma pour les paquetages Seam standards peuvent être "
+"utilisés comme guides."
+
+#. Tag: para
+#: Xml.xml:198
+#, no-c-format
+msgid "The following are the the namespaces used by Seam:"
+msgstr "Les espaces de noms suivants sont ceux qui sont utilisés par Seam :"
+
+#. Tag: para
+#: Xml.xml:203
+#, no-c-format
+msgid ""
+"components &mdash; <literal>http://jboss.com/products/seam/components</"
+"literal>"
+msgstr ""
+"components &mdash; <literal>http://jboss.com/products/seam/components</"
+"literal>"
+
+#. Tag: para
+#: Xml.xml:208
+#, no-c-format
+msgid "core &mdash; <literal>http://jboss.com/products/seam/core</literal>"
+msgstr "core &mdash; <literal>http://jboss.com/products/seam/core</literal>"
+
+#. Tag: para
+#: Xml.xml:213
+#, no-c-format
+msgid "drools &mdash; <literal>http://jboss.com/products/seam/drools</literal>"
+msgstr ""
+"drools &mdash; <literal>http://jboss.com/products/seam/drools</literal>"
+
+#. Tag: para
+#: Xml.xml:218
+#, no-c-format
+msgid ""
+"framework &mdash; <literal>http://jboss.com/products/seam/framework</literal>"
+msgstr ""
+"framework &mdash; <literal>http://jboss.com/products/seam/framework</literal>"
+
+#. Tag: para
+#: Xml.xml:223
+#, no-c-format
+msgid "jms &mdash; <literal>http://jboss.com/products/seam/jms</literal>"
+msgstr "jms &mdash; <literal>http://jboss.com/products/seam/jms</literal>"
+
+#. Tag: para
+#: Xml.xml:228
+#, no-c-format
+msgid ""
+"remoting &mdash; <literal>http://jboss.com/products/seam/remoting</literal>"
+msgstr ""
+"remoting &mdash; <literal>http://jboss.com/products/seam/remoting</literal>"
+
+#. Tag: para
+#: Xml.xml:233
+#, no-c-format
+msgid "theme &mdash; <literal>http://jboss.com/products/seam/theme</literal>"
+msgstr "theme &mdash; <literal>http://jboss.com/products/seam/theme</literal>"
+
+#. Tag: para
+#: Xml.xml:238
+#, no-c-format
+msgid ""
+"security &mdash; <literal>http://jboss.com/products/seam/security</literal>"
+msgstr ""
+"security &mdash; <literal>http://jboss.com/products/seam/security</literal>"
+
+#. Tag: para
+#: Xml.xml:243
+#, no-c-format
+msgid "mail &mdash; <literal>http://jboss.com/products/seam/mail</literal>"
+msgstr "mail &mdash; <literal>http://jboss.com/products/seam/mail</literal>"
+
+#. Tag: para
+#: Xml.xml:248
+#, no-c-format
+msgid "web &mdash; <literal>http://jboss.com/products/seam/web</literal>"
+msgstr "web &mdash; <literal>http://jboss.com/products/seam/web</literal>"

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Annotations.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Annotations.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Annotations.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2030 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Annotations.xml:10
+#, no-c-format
+msgid "Seam annotations"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:11
+#, no-c-format
+msgid ""
+"When you write a Seam application, you'll use a lot of annotations. Seam "
+"lets you use annotations to achieve a declarative style of programming. Most "
+"of the annotations you'll use are defined by the EJB 3.0 specification. The "
+"annotations for data validation are defined by the Hibernate Validator "
+"package. Finally, Seam defines its own set of annotations, which we'll "
+"describe in this chapter."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:14
+#, no-c-format
+msgid ""
+"All of these annotations are defined in the package <literal>org.jboss.seam."
+"annotations</literal>."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:18
+#, no-c-format
+msgid "Annotations for component definition"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:19
+#, no-c-format
+msgid ""
+"The first group of annotations lets you define a Seam component. These "
+"annotations appear on the component class."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:24
+#, no-c-format
+msgid "@Name"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:26
+#, no-c-format
+msgid "@Name(\"componentName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:27
+#, no-c-format
+msgid ""
+"Defines the Seam component name for a class. This annotation is required for "
+"all Seam components."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:33
+#, no-c-format
+msgid "@Scope"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:35
+#, no-c-format
+msgid "@Scope(ScopeType.CONVERSATION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:36
+#, no-c-format
+msgid ""
+"Defines the default context of the component. The possible values are "
+"defined by the <literal>ScopeType</literal> enumeration: <literal>EVENT, "
+"PAGE, CONVERSATION, SESSION, BUSINESS_PROCESS, APPLICATION, STATELESS</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:39
+#, no-c-format
+msgid ""
+"When no scope is explicitly specified, the default depends upon the "
+"component type. For stateless session beans, the default is "
+"<literal>STATELESS</literal>. For entity beans and stateful session beans, "
+"the default is <literal>CONVERSATION</literal>. For JavaBeans, the default "
+"is <literal>EVENT</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:45
+#, no-c-format
+msgid "@Role"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:47
+#, no-c-format
+msgid "@Role(name=\"roleName\", scope=ScopeType.SESSION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:48
+#, no-c-format
+msgid ""
+"Allows a Seam component to be bound to multiple contexts variables. The "
+"<literal>@Name</literal>/<literal>@Scope</literal> annotations define a "
+"\"default role\". Each <literal>@Role</literal> annotation defines an "
+"additional role."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:53
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the context variable name."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:58
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; the context variable scope. When no scope "
+"is explicitly specified, the default depends upon the component type, as "
+"above."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:66
+#, no-c-format
+msgid "@Roles"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:68
+#, no-c-format
+msgid ""
+"@Roles({\n"
+"        @Role(name=\"user\", scope=ScopeType.CONVERSATION),\n"
+"        @Role(name=\"currentUser\", scope=ScopeType.SESSION)\n"
+"    })"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:69
+#, no-c-format
+msgid "Allows specification of multiple additional roles."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:75
+#, no-c-format
+msgid "@Intercept"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:77
+#, no-c-format
+msgid "@Intercept(InterceptionType.ALWAYS)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:78
+#, no-c-format
+msgid ""
+"Determines when Seam interceptors are active. The possible values are "
+"defined by the <literal>InterceptionType</literal> enumeration: "
+"<literal>ALWAYS, AFTER_RESTORE_VIEW, AFTER_UPDATE_MODEL_VALUES, "
+"INVOKE_APPLICATION, NEVER</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:81
+#, no-c-format
+msgid ""
+"When no interception type is explicitly specified, the default depends upon "
+"the component type. For entity beans, the default is <literal>NEVER</"
+"literal>. For session beans, message driven beans and JavaBeans, the default "
+"is <literal>ALWAYS</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:87
+#, no-c-format
+msgid "@JndiName"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:89
+#, no-c-format
+msgid "@JndiName(\"my/jndi/name\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:90
+#, no-c-format
+msgid ""
+"Specifies the JNDI name that Seam will use to look up the EJB component. If "
+"no JNDI name is explicitly specified, Seam will use the JNDI pattern "
+"specified by <literal>org.jboss.seam.core.init.jndiPattern</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:96
+#, no-c-format
+msgid "@Conversational"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:98
+#, no-c-format
+msgid "@Conversational(ifNotBegunOutcome=\"error\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:99
+#, no-c-format
+msgid ""
+"Specifies that a conversation scope component is conversational, meaning "
+"that no method of the component can be called unless a long-running "
+"conversation started by this component is active (unless the method would "
+"begin a new long-running conversation)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:105
+#, no-c-format
+msgid "<literal>@Startup</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:107
+#, no-c-format
+msgid "@Startup(depends={\"org.jboss.core.jndi\", \"org.jboss.core.jta\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:108
+#, no-c-format
+msgid ""
+"Specifies that an application scope component is started immediately at "
+"initialization time. This is mainly used for certain built-in components "
+"that bootstrap critical infrastructure such as JNDI, datasources, etc."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:111
+#, no-c-format
+msgid "<programlisting>@Startup</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:112
+#, no-c-format
+msgid ""
+"Specifies that a session scope component is started immediately at session "
+"creation time."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:117
+#, no-c-format
+msgid ""
+"<literal>depends</literal> &mdash; specifies that the named components must "
+"be started first, if they are installed."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:125
+#, no-c-format
+msgid "@Install"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:127
+#, no-c-format
+msgid "@Install(false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:128
+#, no-c-format
+msgid ""
+"Specifies whether or not a component should be installed by default. The "
+"lack of an @Install annotation indicates a component should be installed."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:131
+#, no-c-format
+msgid "@Install(dependencies=\"org.jboss.seam.core.jbpm\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:132
+#, no-c-format
+msgid ""
+"Specifies that a component should only be stalled if the components listed "
+"as dependencies are also installed."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:135
+#, no-c-format
+msgid "@Install(genericDependencies=ManagedQueueSender.class)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:136
+#, no-c-format
+msgid ""
+"Specifies that a component should only be installed if a component that is "
+"implemented by a certain class is installed. This is useful when the "
+"dependency doesn't have a single well-known name."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:139
+#, no-c-format
+msgid "@Install(classDependencies=\"org.hibernate.Session\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:140
+#, no-c-format
+msgid ""
+"Specifies that a component should only be installed if the named class is in "
+"the classpath."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:143
+#, no-c-format
+msgid "@Install(precedence=BUILT_IN)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:144
+#, no-c-format
+msgid ""
+"Specifies the precedence of the component. If multiple components with the "
+"same name exist, the one with the higher precedence will be installed. The "
+"defined precendence values are:"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:149
+#, no-c-format
+msgid ""
+"<literal>BUILT_IN</literal> &mdash; Precedence of all built-in Seam "
+"components"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:154
+#, no-c-format
+msgid ""
+"<literal>FRAMEWORK</literal> &mdash; Precedence to use for components of "
+"frameworks which extend Seam"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:159
+#, no-c-format
+msgid ""
+"<literal>APPLICATION</literal> &mdash; Predence of application components "
+"(the default precedence)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:164
+#, no-c-format
+msgid ""
+"<literal>DEPLOYMENT</literal> &mdash; Precedence to use for components which "
+"override application components in a particular deployment"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:172
+#, no-c-format
+msgid "@Synchronized"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:174
+#, no-c-format
+msgid "@Synchronized(timeout=1000)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:175
+#, no-c-format
+msgid ""
+"Specifies that a component is accessed concurrently by multiple clients, and "
+"that Seam should serialize requests. If a request is not able to obtain its "
+"lock on the component in the given timeout period, an exception will be "
+"raised."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:181
+#, no-c-format
+msgid "<literal>@ReadOnly</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:183
+#, no-c-format
+msgid "<programlisting>@ReadOnly</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:184
+#, no-c-format
+msgid ""
+"Specifies that a JavaBean component or component method does not require "
+"state replication at the end of the invocation."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:193
+#, no-c-format
+msgid "Annotations for bijection"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:194
+#, no-c-format
+msgid ""
+"The next two annotations control bijection. These attributes occur on "
+"component instance variables or property accessor methods."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:199
+#, no-c-format
+msgid "<literal>@In</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:201
+#, no-c-format
+msgid "<programlisting>@In</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:202
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. If the context "
+"variable is null, an exception will be thrown."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:205
+#, no-c-format
+msgid "@In(required=false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:206
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. The context variable "
+"may be null."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:209
+#, no-c-format
+msgid "@In(create=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:210
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. If the context "
+"variable is null, an instance of the component is instantiated by Seam."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:213
+#, no-c-format
+msgid "@In(value=\"contextVariableName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:214 Annotations.xml:259
+#, no-c-format
+msgid ""
+"Specifies the name of the context variable explicitly, instead of using the "
+"annotated instance variable name."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:217
+#, no-c-format
+msgid "@In(value=\"#{customer.addresses['shipping']}\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:218
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected by evaluating a JSF "
+"EL expression at the beginning of each component invocation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:223
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"Default to the name of the component attribute. Alternatively, specifies a "
+"JSF EL expression, surrounded by <literal>#{...}</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:228
+#, no-c-format
+msgid ""
+"<literal>create</literal> &mdash; specifies that Seam should instantiate the "
+"component with the same name as the context variable if the context variable "
+"is undefined (null) in all contexts. Default to false."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:233
+#, no-c-format
+msgid ""
+"<literal>required</literal> &mdash; specifies Seam should throw an exception "
+"if the context variable is undefined in all contexts."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:241
+#, no-c-format
+msgid "<literal>@Out</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:243
+#, no-c-format
+msgid "<programlisting>@Out</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:244
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is a Seam component is to be "
+"outjected to its context variable at the end of the invocation. If the "
+"attribute is null, an exception is thrown."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:247
+#, no-c-format
+msgid "@Out(required=false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:248
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is a Seam component is to be "
+"outjected to its context variable at the end of the invocation. The "
+"attribute may be null."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:251
+#, no-c-format
+msgid "@Out(scope=ScopeType.SESSION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:252
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is <emphasis>not</emphasis> a Seam "
+"component type is to be outjected to a specific scope at the end of the "
+"invocation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:255
+#, no-c-format
+msgid ""
+"Alternatively, if no scope is explicitly specified, the scope of the "
+"component with the <literal>@Out</literal> attribute is used (or the "
+"<literal>EVENT</literal> scope if the component is stateless)."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:258
+#, no-c-format
+msgid "@Out(value=\"contextVariableName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:264
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"Default to the name of the component attribute."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:269
+#, no-c-format
+msgid ""
+"<literal>required</literal> &mdash; specifies Seam should throw an exception "
+"if the component attribute is null during outjection."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:277
+#, no-c-format
+msgid ""
+"Note that it is quite common for these annotations to occur together, for "
+"example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:280
+#, no-c-format
+msgid "@In(create=true) @Out private User currentUser;"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:281
+#, no-c-format
+msgid ""
+"The next annotation supports the <emphasis>manager component</emphasis> "
+"pattern, where a Seam component that manages the lifecycle of an instance of "
+"some other class that is to be injected. It appears on a component getter "
+"method."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:286
+#, no-c-format
+msgid "<literal>@Unwrap</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:288
+#, no-c-format
+msgid "<programlisting>@Unwrap</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:289
+#, no-c-format
+msgid ""
+"Specifies that the object returned by the annotated getter method is the "
+"thing that is injected instead of the component instance itself."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:295
+#, no-c-format
+msgid ""
+"The next annotation supports the <emphasis>factory component</emphasis> "
+"pattern, where a Seam component is responsible for initializing the value of "
+"a context variable. This is especially useful for initializing any state "
+"needed for rendering the response to a non-faces request. It appears on a "
+"component method."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:300
+#, no-c-format
+msgid "@Factory"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:302
+#, no-c-format
+msgid "@Factory(\"processInstance\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:303
+#, no-c-format
+msgid ""
+"Specifies that the method of the component is used to initialize the value "
+"of the named context variable, when the context variable has no value. This "
+"style is used with methods that return <literal>void</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:306
+#, no-c-format
+msgid "@Factory(\"processInstance\", scope=CONVERSATION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:307
+#, no-c-format
+msgid ""
+"Specifies that the method returns a value that Seam should use to initialize "
+"the value of the named context variable, when the context variable has no "
+"value. This style is used with methods that return a value. If no scope is "
+"explicitly specified, the scope of the component with the <literal>@Factory</"
+"literal> method is used (unless the component is stateless, in which case "
+"the <literal>EVENT</literal> context is used)."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:312
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"If the method is a getter method, default to the JavaBeans property name."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:317
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; specifies the scope that Seam should bind "
+"the returned value to. Only meaningful for factory methods which return a "
+"value."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:325
+#, no-c-format
+msgid "This annotation lets you inject a <literal>Log</literal>:"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:330
+#, no-c-format
+msgid "@Logger"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:332
+#, no-c-format
+msgid "@Logger(\"categoryName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:333
+#, no-c-format
+msgid ""
+"Specifies that a component field is to be injected with an instance of "
+"<literal>org.jboss.seam.log.Log</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:338
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the log category. "
+"Default to the name of the component class."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:346
+#, no-c-format
+msgid "The last annotation lets you inject a request parameter value:"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:351
+#, no-c-format
+msgid "@RequestParameter"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:353
+#, no-c-format
+msgid "@RequestParameter(\"parameterName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:354
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected with the value of a "
+"request parameter. Basic type conversions are performed automatically."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:359
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the request "
+"parameter. Default to the name of the component attribute."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:370
+#, no-c-format
+msgid "Annotations for component lifecycle methods"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:371
+#, no-c-format
+msgid ""
+"These annotations allow a component to react to its own lifecycle events. "
+"They occur on methods of the component. There may be only one of each per "
+"component class."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:376
+#, no-c-format
+msgid "<literal>@Create</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:378
+#, no-c-format
+msgid "<programlisting>@Create</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:379
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when an instance of the component "
+"is instantiated by Seam. Note that create methods are only supported for "
+"JavaBeans and stateful session beans."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:385
+#, no-c-format
+msgid "<literal>@Destroy</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:387
+#, no-c-format
+msgid "<programlisting>@Destroy</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:388
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when the context ends and its "
+"context variables are destroyed. Note that create methods are only supported "
+"for JavaBeans and stateful session beans."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:391
+#, no-c-format
+msgid ""
+"Note that all stateful session bean components <emphasis>must</emphasis> "
+"define a method annotated <literal>@Destroy @Remove</literal> in order to "
+"guarantee destruction of the stateful bean when a context ends."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:394
+#, no-c-format
+msgid ""
+"Destroy methods should be used only for cleanup. <emphasis>Seam catches, "
+"logs and swallows any exception that propagates out of a destroy method.</"
+"emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:400
+#, no-c-format
+msgid "@Observer"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:402
+#, no-c-format
+msgid "@Observer(\"somethingChanged\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:403
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when a component-driven event of "
+"the specified type occurs."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:406
+#, no-c-format
+msgid "@Observer(value=\"somethingChanged\",create=false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:407
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when an event of the specified "
+"type occurs but that an instance should not be created if one doesn't exist. "
+"If an instance does not exist and create is false, the event will not be "
+"observed. The default value for create is true."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:416
+#, no-c-format
+msgid "Annotations for context demarcation"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:417
+#, no-c-format
+msgid ""
+"These annotations provide declarative conversation demarcation. They appear "
+"on methods of Seam components, usually action listener methods."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:420
+#, no-c-format
+msgid ""
+"Every web request has a conversation context associated with it. Most of "
+"these conversations end at the end of the request. If you want a "
+"conversation that span multiple requests, you must \"promote\" the current "
+"conversation to a <emphasis>long-running conversation</emphasis> by calling "
+"a method marked with <literal>@Begin</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:425
+#, no-c-format
+msgid "<literal>@Begin</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:427
+#, no-c-format
+msgid "<programlisting>@Begin</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:428
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation begins when this method returns a "
+"non-null outcome without exception."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:431
+#, no-c-format
+msgid "@Begin(ifOutcome={\"success\", \"continue\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:432
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation begins when this action listener "
+"method returns with one of the given outcomes."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:435
+#, no-c-format
+msgid "@Begin(join=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:436
+#, no-c-format
+msgid ""
+"Specifies that if a long-running conversation is already in progress, the "
+"conversation context is simply propagated."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:439
+#, no-c-format
+msgid "@Begin(nested=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:440
+#, no-c-format
+msgid ""
+"Specifies that if a long-running conversation is already in progress, a new "
+"<emphasis>nested</emphasis> conversation context begins. The nested "
+"conversation will end when the next <literal>@End</literal> is encountered, "
+"and the outer conversation will resume. It is perfectly legal for multiple "
+"nested conversations to exist concurrently in the same outer conversation."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:443
+#, no-c-format
+msgid "@Begin(pageflow=\"process definition name\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:444
+#, no-c-format
+msgid ""
+"Specifies a jBPM process definition name that defines the pageflow for this "
+"conversation."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:447
+#, no-c-format
+msgid "@Begin(flushMode=FlushModeType.MANUAL)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:448
+#, no-c-format
+msgid ""
+"Specify the flush mode of any Seam-managed persistence contexts. "
+"<literal>flushMode=FlushModeType.MANUAL</literal> supports the use of "
+"<emphasis>atomic conversations</emphasis> where all write operations are "
+"queued in the conversation context until an explicit call to <literal>flush()"
+"</literal> (which usually occurs at the end of the conversation)."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:454
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in a new long-running conversation context."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:459
+#, no-c-format
+msgid ""
+"<literal>join</literal> &mdash; determines the behavior when a long-running "
+"conversation is already in progress. If <literal>true</literal>, the context "
+"is propagated. If <literal>false</literal>, an exception is thrown. Default "
+"to <literal>false</literal>. This setting is ignored when "
+"<literal>nested=true</literal> is specified"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:464
+#, no-c-format
+msgid ""
+"<literal>nested</literal> &mdash; specifies that a nested conversation "
+"should be started if a long-running conversation is already in progress."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:469 Annotations.xml:526 Annotations.xml:550
+#, no-c-format
+msgid ""
+"<literal>flushMode</literal> &mdash; set the flush mode of any Seam-managed "
+"Hibernate sessions or JPA persistence contexts that are created during this "
+"conversation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:474
+#, no-c-format
+msgid ""
+"<literal>pageflow</literal> &mdash; a process definition name of a jBPM "
+"process definition deployed via <literal>org.jboss.seam.core.jbpm."
+"pageflowDefinitions.</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:483
+#, no-c-format
+msgid "<literal>@End</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:485
+#, no-c-format
+msgid "<programlisting>@End</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:486
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation ends when this method returns a "
+"non-null outcome without exception."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:489
+#, no-c-format
+msgid ""
+"@End(ifOutcome={\"success\", \"error\"}, evenIfException={SomeException."
+"class, OtherException.class})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:490
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation ends when this action listener "
+"method returns with one of the given outcomes or throws one of the specified "
+"classes of exception."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:496
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in the end of the current long-running conversation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:501 Annotations.xml:585
+#, no-c-format
+msgid ""
+"<literal>beforeRedirect</literal> &mdash; by default, the conversation will "
+"not actually be destroyed until after any redirect has occurred. Setting "
+"<literal>beforeRedirect=true</literal> specifies that the conversation "
+"should be destroyed at the end of the current request, and that the redirect "
+"will be processed in a new temporary conversation context."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:510
+#, no-c-format
+msgid "<literal>@StartTask</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:512
+#, no-c-format
+msgid "<programlisting>@StartTask</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:513
+#, no-c-format
+msgid ""
+"\"Starts\" a jBPM task. Specifies that a long-running conversation begins "
+"when this method returns a non-null outcome without exception. This "
+"conversation is associated with the jBPM task specified in the named request "
+"parameter. Within the context of this conversation, a business process "
+"context is also defined, for the business process instance of the task "
+"instance."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:516
+#, no-c-format
+msgid ""
+"The jBPM <literal>TaskInstance</literal> will be available in a request "
+"context variable named <literal>taskInstance</literal>. The jPBM "
+"<literal>ProcessInstance</literal> will be available in a request context "
+"variable named <literal>processInstance</literal>. (Of course, these objects "
+"are available for injection via <literal>@In</literal>.)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:521 Annotations.xml:545
+#, no-c-format
+msgid ""
+"<literal>taskIdParameter</literal> &mdash; the name of a request parameter "
+"which holds the id of the task. Default to <literal>\"taskId\"</literal>, "
+"which is also the default used by the Seam <literal>taskList</literal> JSF "
+"component."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:534
+#, no-c-format
+msgid "<literal>@BeginTask</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:536
+#, no-c-format
+msgid "<programlisting>@BeginTask</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:537
+#, no-c-format
+msgid ""
+"Resumes work on an incomplete jBPM task. Specifies that a long-running "
+"conversation begins when this method returns a non-null outcome without "
+"exception. This conversation is associated with the jBPM task specified in "
+"the named request parameter. Within the context of this conversation, a "
+"business process context is also defined, for the business process instance "
+"of the task instance."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:540
+#, no-c-format
+msgid ""
+"The jBPM <literal>TaskInstance</literal> will be available in a request "
+"context variable named <literal>taskInstance</literal>. The jPBM "
+"<literal>ProcessInstance</literal> will be available in a request context "
+"variable named <literal>processInstance</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:558
+#, no-c-format
+msgid "<literal>@EndTask</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:560
+#, no-c-format
+msgid "<programlisting>@EndTask</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:561
+#, no-c-format
+msgid ""
+"\"Ends\" a jBPM task. Specifies that a long-running conversation ends when "
+"this method returns a non-null outcome, and that the current task is "
+"complete. Triggers a jBPM transition. The actual transition triggered will "
+"be the default transition unless the application has called "
+"<literal>Transition.setName()</literal> on the built-in component named "
+"<literal>transition</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:564
+#, no-c-format
+msgid "@EndTask(transition=\"transitionName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:565
+#, no-c-format
+msgid "Triggers the given jBPM transition."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:568
+#, no-c-format
+msgid "@EndTask(ifOutcome={\"success\", \"continue\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:569
+#, no-c-format
+msgid ""
+"Specifies that the task ends when this method returns one of the listed "
+"outcomes."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:575
+#, no-c-format
+msgid ""
+"<literal>transition</literal> &mdash; the name of the jBPM transition to be "
+"triggered when ending the task. Defaults to the default transition."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:580
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in the end of the task."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:594
+#, no-c-format
+msgid "@CreateProcess"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:596
+#, no-c-format
+msgid "@CreateProcess(definition=\"process definition name\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:597
+#, no-c-format
+msgid ""
+"Creates a new jBPM process instance when the method returns a non-null "
+"outcome without exception. The <literal>ProcessInstance</literal> object "
+"will be available in a context variable named <literal>processInstance</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:602
+#, no-c-format
+msgid ""
+"<literal>definition</literal> &mdash; the name of the jBPM process "
+"definition deployed via <literal>org.jboss.seam.core.jbpm."
+"processDefinitions</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:610
+#, no-c-format
+msgid "@ResumeProcess"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:612
+#, no-c-format
+msgid "@ResumeProcess(processIdParameter=\"processId\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:613
+#, no-c-format
+msgid ""
+"Re-enters the scope of an existing jBPM process instance when the method "
+"returns a non-null outcome without exception. The <literal>ProcessInstance</"
+"literal> object will be available in a context variable named "
+"<literal>processInstance</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:618
+#, no-c-format
+msgid ""
+"<literal>processIdParameter</literal> &mdash; the name a request parameter "
+"holding the process id. Default to <literal>\"processId\"</literal>."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:629
+#, no-c-format
+msgid "Annotations for transaction demarcation"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:630
+#, no-c-format
+msgid ""
+"Seam provides an annotation that lets you force a rollback of the JTA "
+"transaction for certain action listener outcomes."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:635
+#, no-c-format
+msgid "@Rollback"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:637
+#, no-c-format
+msgid "@Rollback(ifOutcome={\"failure\", \"not-found\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:638
+#, no-c-format
+msgid ""
+"If the outcome of the method matches any of the listed outcomes, or if no "
+"outcomes are listed, set the transaction to rollback only when the method "
+"completes."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:643
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; the JSF outcomes that cause a "
+"transaction rollback (no outcomes is interpreted to mean any outcome)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:651
+#, no-c-format
+msgid "<literal>@Transactional</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:653
+#, no-c-format
+msgid "<programlisting>@Transactional</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:654
+#, no-c-format
+msgid ""
+"Specifies that a JavaBean component should have a similar transactional "
+"behavior to the default behavior of a session bean component. ie. method "
+"invocations should take place in a transaction, and if no transaction exists "
+"when the method is called, a transaction will be started just for that "
+"method. This annotation may be applied at either class or method level."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:660
+#, no-c-format
+msgid ""
+"Seam applications usually use the standard EJB3 annotations for all other "
+"transaction demarcation needs."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:666
+#, no-c-format
+msgid "Annotations for exceptions"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:667
+#, no-c-format
+msgid ""
+"These annotations let you specify how Seam should handle an exception that "
+"propagates out of a Seam component."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:672
+#, no-c-format
+msgid "@Redirect"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:674
+#, no-c-format
+msgid "@Redirect(viewId=\"error.jsp\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:675
+#, no-c-format
+msgid ""
+"Specifies that the annotated exception causes a browser redirect to a "
+"specified view id."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:680
+#, no-c-format
+msgid ""
+"<literal>viewId</literal> &mdash; specifies the JSF view id to redirect to."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:685
+#, no-c-format
+msgid ""
+"<literal>message</literal> &mdash; a message to be displayed, default to the "
+"exception message."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:690 Annotations.xml:716
+#, no-c-format
+msgid ""
+"<literal>end</literal> &mdash; specifies that the long-running conversation "
+"should end, default to <literal>false</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:698
+#, no-c-format
+msgid "@HttpError"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:700
+#, no-c-format
+msgid "@HttpError(errorCode=404)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:701
+#, no-c-format
+msgid "Specifies that the annotated exception causes a HTTP error to be sent."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:706
+#, no-c-format
+msgid ""
+"<literal>errorCode</literal> &mdash; the HTTP error code, default to "
+"<literal>500</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:711
+#, no-c-format
+msgid ""
+"<literal>message</literal> &mdash; a message to be sent with the HTTP error, "
+"default to the exception message."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:727
+#, no-c-format
+msgid "Annotations for validation"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:728
+#, no-c-format
+msgid ""
+"This annotation triggers Hibernate Validator. It appears on a method of a "
+"Seam component, almost always an action listener method."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:731
+#, no-c-format
+msgid ""
+"Please refer to the documentation for the Hibernate Annotations package for "
+"information about the annotations defined by the Hibernate Validator "
+"framework."
+msgstr ""
+
+#. Tag: emphasis
+#: Annotations.xml:735
+#, no-c-format
+msgid ""
+"Note that use of <literal>@IfInvalid</literal> is now semi-deprecated and "
+"<literal>&lt;s:validateAll&gt;</literal> is now preferred."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:739
+#, no-c-format
+msgid "@IfInvalid"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:741
+#, no-c-format
+msgid "@IfInvalid(outcome=\"invalid\", refreshEntities=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:742
+#, no-c-format
+msgid ""
+"Specifies that Hibernate Validator should validate the component before the "
+"method is invoked. If the invocation fails, the specified outcome will be "
+"returned, and the validation failure messages returned by Hibernate "
+"Validator will be added to the <literal>FacesContext</literal>. Otherwise, "
+"the invocation will proceed."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:747
+#, no-c-format
+msgid ""
+"<literal>outcome</literal> &mdash; the JSF outcome when validation fails."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:752
+#, no-c-format
+msgid ""
+"<literal>refreshEntities</literal> &mdash; specifies that any invalid entity "
+"in the managed state should be refreshed from the database when validation "
+"fails. Default to <literal>false</literal>. (Useful with extended "
+"persistence contexts.)"
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:763
+#, no-c-format
+msgid "Annotations for Seam Remoting"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:764
+#, no-c-format
+msgid ""
+"Seam Remoting requires that the local interface of a session bean be "
+"annotated with the following annotation:"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:769
+#, no-c-format
+msgid "@WebRemote"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:771
+#, no-c-format
+msgid "@WebRemote(exclude=\"path.to.exclude\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:772
+#, no-c-format
+msgid ""
+"Indicates that the annotated method may be called from client-side "
+"JavaScript. The <literal>exclude</literal> property is optional and allows "
+"objects to be excluded from the result's object graph (see the Remoting "
+"chapter for more details)."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:781
+#, no-c-format
+msgid "Annotations for Seam interceptors"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:782
+#, no-c-format
+msgid "The following annotations appear on Seam interceptor classes."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:785
+#, no-c-format
+msgid ""
+"Please refer to the documentation for the EJB 3.0 specification for "
+"information about the annotations required for EJB interceptor definition."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:790
+#, no-c-format
+msgid "@Interceptor"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:792
+#, no-c-format
+msgid "@Interceptor(stateless=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:793
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is stateless and Seam may optimize "
+"replication."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:796
+#, no-c-format
+msgid "@Interceptor(type=CLIENT)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:797
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is a \"client-side\" interceptor that is "
+"called before the EJB container."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:800
+#, no-c-format
+msgid "@Interceptor(around={SomeInterceptor.class, OtherInterceptor.class})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:801
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is positioned higher in the stack than the "
+"given interceptors."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:804
+#, no-c-format
+msgid "@Interceptor(within={SomeInterceptor.class, OtherInterceptor.class})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:805
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is positioned deeper in the stack than the "
+"given interceptors."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:814
+#, no-c-format
+msgid "Annotations for asynchronicity"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:815
+#, no-c-format
+msgid ""
+"The following annotations are used to declare an asynchronous method, for "
+"example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:818
+#, no-c-format
+msgid ""
+"@Asynchronous public void scheduleAlert(Alert alert, @Expiration Date date) "
+"{ ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:819
+#, no-c-format
+msgid ""
+"@Asynchronous public Timer scheduleAlerts(Alert alert, @Expiration Date "
+"date, \n"
+"    @IntervalDuration long interval) { ... }"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:822
+#, no-c-format
+msgid "<literal>@Asynchronous</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:824
+#, no-c-format
+msgid "<programlisting>@Asynchronous</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:825
+#, no-c-format
+msgid "Specifies that the method call is processed asynchronously."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:831
+#, no-c-format
+msgid "<literal>@Duration</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:833
+#, no-c-format
+msgid "<programlisting>@Duration</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:834
+#, no-c-format
+msgid ""
+"Specifies that a parameter of the asynchronous call is the duration before "
+"the call is processed (or first processed for recurring calls)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:840
+#, no-c-format
+msgid "<literal>@Expiration</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:842
+#, no-c-format
+msgid "<programlisting>@Expiration</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:843
+#, no-c-format
+msgid ""
+"Specifies that a parameter of the asynchronous call is the datetime at which "
+"the call is processed (or first processed for recurring calls)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:849
+#, no-c-format
+msgid "<literal>@IntervalDuration</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:851
+#, no-c-format
+msgid "<programlisting>@IntervalDuration</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:852
+#, no-c-format
+msgid ""
+"Specifies that an asynchronous method call recurs, and that the annotationed "
+"parameter is duration between recurrences."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:861
+#, no-c-format
+msgid "Annotations for use with JSF <literal>dataTable</literal>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:862
+#, no-c-format
+msgid ""
+"The following annotations make it easy to implement clickable lists backed "
+"by a stateful session bean. They appear on attributes."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:867
+#, no-c-format
+msgid "@DataModel"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:869
+#, no-c-format
+msgid "@DataModel(\"variableName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:870
+#, no-c-format
+msgid ""
+"Exposes an attribute of type <literal>List</literal>, <literal>Map</"
+"literal>, <literal>Set</literal> or <literal>Object[]</literal> as a JSF "
+"<literal>DataModel</literal> into the scope of the owning component (or the "
+"<literal>EVENT</literal> scope if the owning component is "
+"<literal>STATELESS</literal>). In the case of <literal>Map</literal>, each "
+"row of the <literal>DataModel</literal> is a <literal>Map.Entry</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:875
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; name of the conversation context variable. "
+"Default to the attribute name."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:880
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; if <literal>scope=ScopeType.PAGE</literal> "
+"is explicitly specified, the <literal>DataModel</literal> will be kept in "
+"the <literal>PAGE</literal> context."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:888
+#, no-c-format
+msgid "<literal>@DataModelSelection</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:890
+#, no-c-format
+msgid "<programlisting>@DataModelSelection</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:891
+#, no-c-format
+msgid ""
+"Injects the selected value from the JSF <literal>DataModel</literal> (this "
+"is the element of the underlying collection, or the map value)."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:896 Annotations.xml:912
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; name of the conversation context variable. "
+"Not needed if there is exactly one <literal>@DataModel</literal> in the "
+"component."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:904
+#, no-c-format
+msgid "<literal>@DataModelSelectionIndex</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:906
+#, no-c-format
+msgid "<programlisting>@DataModelSelectionIndex</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:907
+#, no-c-format
+msgid ""
+"Exposes the selection index of the JSF <literal>DataModel</literal> as an "
+"attribute of the component (this is the row number of the underlying "
+"collection, or the map key)."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:923
+#, no-c-format
+msgid "Meta-annotations for databinding"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:924
+#, no-c-format
+msgid ""
+"These meta-annotations make it possible to implement similar functionality "
+"to <literal>@DataModel</literal> and <literal>@DataModelSelection</literal> "
+"for other datastructures apart from lists."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:929
+#, no-c-format
+msgid "@DataBinderClass"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:931
+#, no-c-format
+msgid "@DataBinderClass(DataModelBinder.class)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:932
+#, no-c-format
+msgid "Specifies that an annotation is a databinding annotation."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:938
+#, no-c-format
+msgid "@DataSelectorClass"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:940
+#, no-c-format
+msgid "@DataSelectorClass(DataModelSelector.class)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:941
+#, no-c-format
+msgid "Specifies that an annotation is a dataselection annotation."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:950
+#, no-c-format
+msgid "Annotations for packaging"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:951
+#, no-c-format
+msgid ""
+"This annotation provides a mechanism for declaring information about a set "
+"of components that are packaged together. It can be applied to any Java "
+"package."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:956
+#, no-c-format
+msgid "@Namespace"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:958
+#, no-c-format
+msgid "@Namespace(value=\"http://jboss.com/products/seam/example/seampay\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:959
+#, no-c-format
+msgid ""
+"Specifies that components in the current package are associated with the "
+"given namespace. The declared namespace can be used as an XML namespace in a "
+"<literal>components.xml</literal> file to simplify application configuration."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:962
+#, no-c-format
+msgid ""
+"@Namespace(value=\"http://jboss.com/products/seam/core\", prefix=\"org.jboss."
+"seam.core\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:963
+#, no-c-format
+msgid ""
+"Specifies a namespace to associate with a given package. Additionally, it "
+"specifies a component name prefix to be applied to component names specified "
+"in the XML file. For example, an XML element named <literal>microcontainer</"
+"literal> that is associated with this namespace would be understood to "
+"actually refere to a component named <literal>org.jboss.seam.core."
+"microcontainer</literal>."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Book_Info.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Book_Info.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Book_Info.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,38 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Book_Info.xml:10
+#, no-c-format
+msgid "Seam - Contextual Components"
+msgstr ""
+
+#. Tag: subtitle
+#: Book_Info.xml:11
+#, no-c-format
+msgid "A Framework for Java EE 5"
+msgstr ""
+
+#. Tag: para
+#: Book_Info.xml:15
+#, no-c-format
+msgid "This book is a Reference Guide for Seam"
+msgstr ""
+
+#. Tag: holder
+#: Book_Info.xml:36
+#, no-c-format
+msgid "&FORMAL-RHI;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Cache.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Cache.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Cache.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,318 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Cache.xml:10
+#, no-c-format
+msgid "Caching"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:11
+#, no-c-format
+msgid ""
+"In almost all enterprise applications, the database is the primary "
+"bottleneck, and the least scalable tier of the runtime environment. People "
+"from a PHP/Ruby environment will try to tell you that so-called \"shared "
+"nothing\" architectures scale well. While that may be literally true, I "
+"don't know of many interesting multi-user applications which can be "
+"implemented with no sharing of resources between different nodes of the "
+"cluster. What these silly people are really thinking of is a \"share nothing "
+"except for the database\" architecture. Of course, sharing the database is "
+"the primary problem with scaling a multi-user application&mdash;so the claim "
+"that this architecture is highly scalable is absurd, and tells you a lot "
+"about the kind of applications that these folks spend most of their time "
+"working on."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:14
+#, no-c-format
+msgid ""
+"Almost anything we can possibly do to share the database <emphasis>less "
+"often</emphasis> is worth doing."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:17
+#, no-c-format
+msgid ""
+"This calls for a cache. Well, not just one cache. A well designed Seam "
+"application will feature a rich, multi-layered caching strategy that impacts "
+"every layer of the application:"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:22
+#, no-c-format
+msgid ""
+"The database, of course, has its own cache. This is super-important, but "
+"can't scale like a cache in the application tier."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:27
+#, no-c-format
+msgid ""
+"Your ORM solution (Hibernate, or some other JPA implementation) has a second-"
+"level cache of data from the database. This is a very powerful capability, "
+"but is often misused. In a clustered environment, keeping the data in the "
+"cache transactionally consistent across the whole cluster, and with the "
+"database, is quite expensive. It makes most sense for data which is shared "
+"between many users, and is updated rarely. In traditional stateless "
+"architectures, people often try to use the second-level cache for "
+"conversational state. This is always bad, and is especially wrong in Seam."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:32
+#, no-c-format
+msgid ""
+"The Seam conversation context is a cache of conversational state. Components "
+"you put into the conversation context can hold and cache state relating to "
+"the current user interaction."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:37
+#, no-c-format
+msgid ""
+"In particular, the Seam-managed persistence context (or an extended EJB "
+"container-managed persistence context associated with a conversation-scoped "
+"stateful session bean) acts as a cache of data that has been read in the "
+"current conversation. This cache tends to have a pretty high hitrate! Seam "
+"optimizes the replication of Seam-managed persistence contexts in a "
+"clustered environment, and there is no requirement for transactional "
+"consistency with the database (optimistic locking is sufficient) so you "
+"don't need to worry too much about the performance implications of this "
+"cache, unless you read thousands of objects into a single persistence "
+"context."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:42
+#, no-c-format
+msgid ""
+"The application can cache non-transactional state in the Seam application "
+"context. State kept in the application context is of course not visible to "
+"other nodes in the cluster."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:47
+#, no-c-format
+msgid ""
+"The application can cache transactional state using the Seam "
+"<literal>pojoCache</literal> component, which integrates JBossCache into the "
+"Seam environment. This state will be visible to other nodes if you run JBoss "
+"cache in a clustered mode."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:52
+#, no-c-format
+msgid ""
+"Finally, Seam lets you cache rendered fragments of a JSF page. Unlike the "
+"ORM second-level cache, this cache is not automatically invalidated when "
+"data changes, so you need to write application code to perform explicit "
+"invalidation, or set appropriate expiration policies."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:57
+#, no-c-format
+msgid ""
+"For more information about the second-level cache, you'll need to refer to "
+"the documentation of your ORM solution, since this is an extremely complex "
+"topic. In this section we'll discuss the use of JBossCache directly, via the "
+"<literal>pojoCache</literal> component, or as the page fragment cache, via "
+"the <literal>&lt;s:cache&gt;</literal> control."
+msgstr ""
+
+#. Tag: title
+#: Cache.xml:61
+#, no-c-format
+msgid "Using JBossCache in Seam"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:62
+#, no-c-format
+msgid ""
+"The built-in <literal>pojoCache</literal> component manages an instance of "
+"<literal>org.jboss.cache.aop.PojoCache</literal>. You can safely put any "
+"immutable Java object in the cache, and it will be replicated across the "
+"cluster (assuming that replication is enabled). If you want to keep mutable "
+"objects in the cache, you'll need to run the JBossCache bytecode "
+"preprocessor to ensure that changes to the objects will be automatically "
+"detected and replicated."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:65
+#, no-c-format
+msgid ""
+"To use <literal>pojoCache</literal>, all you need to do is put the "
+"JBossCache jars in the classpath, and provide a resource named "
+"<literal>treecache.xml</literal> with an appropriate cache configuration. "
+"JBossCache has many scary and confusing configuration settings, so we won't "
+"discuss them here. Please refer to the JBossCache documentation for more "
+"information."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:68
+#, no-c-format
+msgid ""
+"For an EAR depoyment of Seam, we recommend that the JBossCache jars and "
+"configuration go directly into the EAR. Make sure you declare the jars in "
+"<literal>application.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:71
+#, no-c-format
+msgid "Now you can inject the cache into any Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:74
+#, no-c-format
+msgid ""
+"@Name(\"chatroom\")\n"
+"public class Chatroom {\n"
+"    @In PojoCache pojoCache;\n"
+"    \n"
+"    public void join(String username) {\n"
+"      try\n"
+"      {\n"
+"         Set&lt;String&gt; userList = (Set&lt;String&gt;) pojoCache.get"
+"(\"chatroom\", \"userList\");\n"
+"         if (userList==null) \n"
+"         {\n"
+"            userList = new HashSet&lt;String&gt;();\n"
+"            pojoCache.put(\"chatroom\", \"userList\", userList);\n"
+"         }\n"
+"         userList.put(username);\n"
+"      }\n"
+"      catch (CacheException ce)\n"
+"      {\n"
+"         throw new RuntimeException(ce);\n"
+"      }\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:75
+#, no-c-format
+msgid ""
+"If you want to have multiple JBossCache configurations in your application, "
+"use <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:78
+#, no-c-format
+msgid ""
+"&lt;core:pojo-cache name=\"myCache\" cfg-resource-name=\"myown/cache.xml\"/"
+"&gt;"
+msgstr ""
+
+#. Tag: title
+#: Cache.xml:82
+#, no-c-format
+msgid "Page fragment caching"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:83
+#, no-c-format
+msgid ""
+"The most interesting user of JBossCache is the <literal>&lt;s:cache&gt;</"
+"literal> tag, Seam's solution to the problem of page fragment caching in "
+"JSF. <literal>&lt;s:cache&gt;</literal> uses <literal>pojoCache</literal> "
+"internally, so you need to follow the steps listed above before you can use "
+"it. (Put the jars in the EAR, wade through the scary configuration options, "
+"etc.)"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:86
+#, no-c-format
+msgid ""
+"<literal>&lt;s:cache&gt;</literal> is used for caching some rendered content "
+"which changes rarely. For example, the welcome page of our blog displays the "
+"recent blog entries:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:89
+#, no-c-format
+msgid ""
+"&lt;s:cache key=\"recentEntries-#{blog.id}\" region=\"welcomePageFragments"
+"\"&gt;\n"
+"   &lt;h:dataTable value=\"#{blog.recentEntries}\" var=\"blogEntry\"&gt;\n"
+"      &lt;h:column&gt;\n"
+"         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"         &lt;div&gt;\n"
+"            &lt;s:formattedText value=\"#{blogEntry.body}\"/&gt;\n"
+"         &lt;/div&gt;\n"
+"      &lt;/h:column&gt;\n"
+"   &lt;/h:dataTable&gt;\n"
+"&lt;/s:cache&gt;"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:90
+#, no-c-format
+msgid ""
+"The <literal>key</literal> let's you have multiple cached versions of each "
+"page fragment. In this case, there is one cached version per blog. The "
+"<literal>region</literal> determines the JBossCache node that all version "
+"will be stored in. Different nodes may have different expiry policies. "
+"(That's the stuff you set up using the aforementioned scary configuration "
+"options.)"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:93
+#, no-c-format
+msgid ""
+"Of course, the big problem with <literal>&lt;s:cache&gt;</literal> is that "
+"it is too stupid to know when the underlying data changes (for example, when "
+"the blogger posts a new entry). So you need to evict the cached fragment "
+"manually:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:96
+#, no-c-format
+msgid ""
+"public void post() {\n"
+"    ...\n"
+"    entityManager.persist(blogEntry);\n"
+"    pojoCache.remove(\"welcomePageFragments\", \"recentEntries-\" + blog."
+"getId() );\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:97
+#, no-c-format
+msgid ""
+"Alternatively, if it is not critical that changes are immediately visible to "
+"the user, you could set a short expiry time on the JbossCache node."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Components.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Components.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Components.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2007 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Components.xml:10
+#, no-c-format
+msgid "Built-in Seam components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:11
+#, no-c-format
+msgid ""
+"This chapter describes Seam's built-in components, and their configuration "
+"properties."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:14
+#, no-c-format
+msgid ""
+"Note that you can replace any of the built in components with your own "
+"implementations simply by specifying the name of one of the built in "
+"components on your own class using <literal>@Name</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:17
+#, no-c-format
+msgid ""
+"Note also that even though all the built in components use a qualified name, "
+"most of them are aliased to unqualified names by default. These aliases "
+"specify <literal>auto-create=\"true\"</literal>, so you do not need to use "
+"<literal>create=true</literal> when injecting built-in components by their "
+"unqualified name."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:21
+#, no-c-format
+msgid "Context injection components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:22
+#, no-c-format
+msgid ""
+"The first set of built in components exist purely to support injection of "
+"various contextual objects. For example, the following component instance "
+"variable would have the Seam session context object injected:"
+msgstr ""
+
+#. Tag: programlisting
+#: Components.xml:25
+#, no-c-format
+msgid "@In private Context sessionContext;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:28
+#, no-c-format
+msgid "org.jboss.seam.core.eventContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:30
+#, no-c-format
+msgid "Manager component for the event context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:36
+#, no-c-format
+msgid "org.jboss.seam.core.pageContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:38
+#, no-c-format
+msgid "Manager component for the page context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:44
+#, no-c-format
+msgid "org.jboss.seam.core.conversationContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:46
+#, no-c-format
+msgid "Manager component for the conversation context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:52
+#, no-c-format
+msgid "org.jboss.seam.core.sessionContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:54
+#, no-c-format
+msgid "Manager component for the session context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:60
+#, no-c-format
+msgid "org.jboss.seam.core.applicationContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:62
+#, no-c-format
+msgid "Manager component for the appication context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:68
+#, no-c-format
+msgid "org.jboss.seam.core.businessProcessContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:70
+#, no-c-format
+msgid "Manager component for the business process context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:76
+#, no-c-format
+msgid "org.jboss.seam.core.facesContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:78
+#, no-c-format
+msgid ""
+"Manager component for the <literal>FacesContext</literal> context object "
+"(not a true Seam context)"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:84 Components.xml:267 Components.xml:441 Components.xml:572
+#, no-c-format
+msgid "All of these components are always installed."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:90
+#, no-c-format
+msgid "Utility components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:91
+#, no-c-format
+msgid "These components are merely useful."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:96
+#, no-c-format
+msgid "org.jboss.seam.core.facesMessages"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:98
+#, no-c-format
+msgid "Allows faces success messages to propagate across a browser redirect."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:103
+#, no-c-format
+msgid ""
+"<literal>add(FacesMessage facesMessage)</literal> &mdash; add a faces "
+"message, which will be displayed during the next render response phase that "
+"occurs in the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:108
+#, no-c-format
+msgid ""
+"<literal>add(String messageTemplate)</literal> &mdash; add a faces message, "
+"rendered from the given message template which may contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:113
+#, no-c-format
+msgid ""
+"<literal>add(Severity severity, String messageTemplate)</literal> &mdash; "
+"add a faces message, rendered from the given message template which may "
+"contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:118
+#, no-c-format
+msgid ""
+"<literal>addFromResourceBundle(String key)</literal> &mdash; add a faces "
+"message, rendered from a message template defined in the Seam resource "
+"bundle which may contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:123
+#, no-c-format
+msgid ""
+"<literal>addFromResourceBundle(Severity severity, String key)</literal> "
+"&mdash; add a faces message, rendered from a message template defined in the "
+"Seam resource bundle which may contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:128
+#, no-c-format
+msgid "<literal>clear()</literal> &mdash; clear all messages."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:136
+#, no-c-format
+msgid "org.jboss.seam.core.redirect"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:138
+#, no-c-format
+msgid ""
+"A convenient API for performing redirects with parameters (this is "
+"especially useful for bookmarkable search results screens)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:143
+#, no-c-format
+msgid ""
+"<literal>redirect.viewId</literal> &mdash; the JSF view id to redirect to."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:148
+#, no-c-format
+msgid ""
+"<literal>redirect.conversationPropagationEnabled</literal> &mdash; "
+"determines whether the conversation will propagate across the redirect."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:153
+#, no-c-format
+msgid ""
+"<literal>redirect.parameters</literal> &mdash; a map of request parameter "
+"name to value, to be passed in the redirect request."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:158
+#, no-c-format
+msgid "<literal>execute()</literal> &mdash; perform the redirect immediately."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:163
+#, no-c-format
+msgid ""
+"<literal>captureCurrentRequest()</literal> &mdash; stores the view id and "
+"request parameters of the current GET request (in the conversation context), "
+"for later use by calling <literal>execute()</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:171
+#, no-c-format
+msgid "org.jboss.seam.core.httpError"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:173
+#, no-c-format
+msgid "A convenient API for sending HTTP errors."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:179
+#, no-c-format
+msgid "org.jboss.seam.core.events"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:181
+#, no-c-format
+msgid ""
+"An API for raising events that can be observed via <literal>@Observer</"
+"literal> methods, or method bindings in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:186
+#, no-c-format
+msgid ""
+"<literal>raiseEvent(String type)</literal> &mdash; raise an event of a "
+"particular type and distribute to all observers."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:191
+#, no-c-format
+msgid ""
+"<literal>raiseAsynchronousEvent(String type)</literal> &mdash; raise an "
+"event to be processed asynchronously by the EJB3 timer service."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:196
+#, no-c-format
+msgid ""
+"<literal>raiseTimedEvent(String type, ....)</literal> &mdash; schedule an "
+"event to be processed asynchronously by the EJB3 timer service."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:201
+#, no-c-format
+msgid ""
+"<literal>addListener(String type, String methodBinding)</literal> &mdash; "
+"add an observer for a particular event type."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:209
+#, no-c-format
+msgid "org.jboss.seam.core.interpolator"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:211
+#, no-c-format
+msgid "An API for interpolating the values of JSF EL expressions in Strings."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:216
+#, no-c-format
+msgid ""
+"<literal>interpolate(String template)</literal> &mdash; scan the template "
+"for JSF EL expressions of the form <literal>#{...}</literal> and replace "
+"them with their evaluated values."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:224
+#, no-c-format
+msgid "org.jboss.seam.core.expressions"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:226
+#, no-c-format
+msgid "An API for creating value and method bindings."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:231
+#, no-c-format
+msgid ""
+"<literal>createValueBinding(String expression)</literal> &mdash; create a "
+"value binding object."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:236
+#, no-c-format
+msgid ""
+"<literal>createMethodBinding(String expression)</literal> &mdash; create a "
+"method binding object."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:244
+#, no-c-format
+msgid "org.jboss.seam.core.pojoCache"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:246
+#, no-c-format
+msgid ""
+"Manager component for a JBoss Cache <literal>PojoCache</literal> instance."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:251
+#, no-c-format
+msgid ""
+"<literal>pojoCache.cfgResourceName</literal> &mdash; the name of the "
+"configuration file. Default to <literal>treecache.xml</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:259
+#, no-c-format
+msgid "org.jboss.seam.core.uiComponent"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:261
+#, no-c-format
+msgid ""
+"Allows access to a JSF <literal>UIComponent</literal> by its id from the EL. "
+"For example, we can write <literal>@In(\"#{uiComponent['myForm:address']."
+"value}\")</literal>."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:273
+#, no-c-format
+msgid "Components for internationalization and themes"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:274
+#, no-c-format
+msgid ""
+"The next group of components make it easy to build internationalized user "
+"interfaces using Seam."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:279
+#, no-c-format
+msgid "org.jboss.seam.core.locale"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:281
+#, no-c-format
+msgid "The Seam locale. The locale is session scoped."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:287
+#, no-c-format
+msgid "org.jboss.seam.core.timezone"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:289
+#, no-c-format
+msgid "The Seam timezone. The timezone is session scoped."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:295
+#, no-c-format
+msgid "org.jboss.seam.core.resourceBundle"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:297
+#, no-c-format
+msgid ""
+"The Seam resource bundle. The resource bundle is session scoped. The Seam "
+"resource bundle performs a depth-first search for keys in a list of Java "
+"resource bundles."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:302
+#, no-c-format
+msgid ""
+"<literal>resourceBundle.bundleNames</literal> &mdash; the names of the Java "
+"resource bundles to search. Default to <literal>messages</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:310
+#, no-c-format
+msgid "org.jboss.seam.core.localeSelector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:312
+#, no-c-format
+msgid ""
+"Supports selection of the locale either at configuration time, or by the "
+"user at runtime."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:317 Components.xml:367
+#, no-c-format
+msgid "<literal>select()</literal> &mdash; select the specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:322
+#, no-c-format
+msgid ""
+"<literal>localeSelector.locale</literal> &mdash; the actual <literal>java."
+"util.Locale</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:327
+#, no-c-format
+msgid ""
+"<literal>localeSelector.localeString</literal> &mdash; the stringified "
+"representation of the locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:332
+#, no-c-format
+msgid ""
+"<literal>localeSelector.language</literal> &mdash; the language for the "
+"specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:337
+#, no-c-format
+msgid ""
+"<literal>localeSelector.country</literal> &mdash; the country for the "
+"specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:342
+#, no-c-format
+msgid ""
+"<literal>localeSelector.variant</literal> &mdash; the variant for the "
+"specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:347
+#, no-c-format
+msgid ""
+"<literal>localeSelector.supportedLocales</literal> &mdash; a list of "
+"<literal>SelectItem</literal>s representing the supported locales listed in "
+"<literal>jsf-config.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:352
+#, no-c-format
+msgid ""
+"<literal>localeSelector.cookieEnabled</literal> &mdash; specifies that the "
+"locale selection should be persisted via a cookie."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:360
+#, no-c-format
+msgid "org.jboss.seam.core.timezoneSelector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:362
+#, no-c-format
+msgid ""
+"Supports selection of the timezone either at configuration time, or by the "
+"user at runtime."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:372
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.timezone</literal> &mdash; the actual "
+"<literal>java.util.TimeZone</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:377
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.timeZoneId</literal> &mdash; the stringified "
+"representation of the timezone."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:382
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.cookieEnabled</literal> &mdash; specifies that the "
+"timezone selection should be persisted via a cookie."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:390
+#, no-c-format
+msgid "org.jboss.seam.core.messages"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:392
+#, no-c-format
+msgid ""
+"A map containing internationalized messages rendered from message templates "
+"defined in the Seam resource bundle."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:398
+#, no-c-format
+msgid "org.jboss.seam.theme.themeSelector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:400
+#, no-c-format
+msgid ""
+"Supports selection of the theme either at configuration time, or by the user "
+"at runtime."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:405
+#, no-c-format
+msgid "<literal>select()</literal> &mdash; select the specified theme."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:410
+#, no-c-format
+msgid ""
+"<literal>theme.availableThemes</literal> &mdash; the list of defined themes."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:415
+#, no-c-format
+msgid "<literal>themeSelector.theme</literal> &mdash; the selected theme."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:420
+#, no-c-format
+msgid ""
+"<literal>themeSelector.themes</literal> &mdash; a list of "
+"<literal>SelectItem</literal>s representing the defined themes."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:425
+#, no-c-format
+msgid ""
+"<literal>themeSelector.cookieEnabled</literal> &mdash; specifies that the "
+"theme selection should be persisted via a cookie."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:433
+#, no-c-format
+msgid "org.jboss.seam.theme.theme"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:435
+#, no-c-format
+msgid "A map containing theme entries."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:447
+#, no-c-format
+msgid "Components for controlling conversations"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:448
+#, no-c-format
+msgid ""
+"The next group of components allow control of conversations by the "
+"application or user interface."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:453
+#, no-c-format
+msgid "org.jboss.seam.core.conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:455
+#, no-c-format
+msgid ""
+"API for application control of attributes of the current Seam conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:460 Components.xml:475
+#, no-c-format
+msgid "<literal>getId()</literal> &mdash; returns the current conversation id"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:465
+#, no-c-format
+msgid ""
+"<literal>isNested()</literal> &mdash; is the current conversation a nested "
+"conversation?"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:470
+#, no-c-format
+msgid ""
+"<literal>isLongRunning()</literal> &mdash; is the current conversation a "
+"long-running conversation?"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:480
+#, no-c-format
+msgid ""
+"<literal>getParentId()</literal> &mdash; returns the conversation id of the "
+"parent conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:485
+#, no-c-format
+msgid ""
+"<literal>getRootId()</literal> &mdash; returns the conversation id of the "
+"root conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:490
+#, no-c-format
+msgid ""
+"<literal>setTimeout(int timeout)</literal> &mdash; sets the timeout for the "
+"current conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:495
+#, no-c-format
+msgid ""
+"<literal>setViewId(String outcome)</literal> &mdash; sets the view id to be "
+"used when switching back to the current conversation from the conversation "
+"switcher, conversation list, or breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:500
+#, no-c-format
+msgid ""
+"<literal>setDescription(String description)</literal> &mdash; sets the "
+"description of the current conversation to be displayed in the conversation "
+"switcher, conversation list, or breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:505
+#, no-c-format
+msgid ""
+"<literal>redirect()</literal> &mdash; redirect to the last well-defined view "
+"id for this conversation (useful after login challenges)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:510
+#, no-c-format
+msgid ""
+"<literal>leave()</literal> &mdash; exit the scope of this conversation, "
+"without actually ending the conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:515
+#, no-c-format
+msgid ""
+"<literal>begin()</literal> &mdash; begin a long-running conversation "
+"(equivalent to <literal>@Begin</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:520
+#, no-c-format
+msgid ""
+"<literal>beginPageflow(String pageflowName)</literal> &mdash; begin a long-"
+"running conversation with a pageflow (equivalent to <literal>@Begin(pageflow="
+"\"...\")</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:525
+#, no-c-format
+msgid ""
+"<literal>end()</literal> &mdash; end a long-running conversation (equivalent "
+"to <literal>@End</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:530
+#, no-c-format
+msgid ""
+"<literal>pop()</literal> &mdash; pop the conversation stack, returning to "
+"the parent conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:535
+#, no-c-format
+msgid ""
+"<literal>root()</literal> &mdash; return to the root conversation of the "
+"conversation stack."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:540
+#, no-c-format
+msgid ""
+"<literal>changeFlushMode(FlushModeType flushMode)</literal> &mdash; change "
+"the flush mode of the conversation."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:548
+#, no-c-format
+msgid "org.jboss.seam.core.conversationList"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:550
+#, no-c-format
+msgid "Manager component for the conversation list."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:556
+#, no-c-format
+msgid "org.jboss.seam.core.conversationStack"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:558
+#, no-c-format
+msgid "Manager component for the conversation stack (breadcrumbs)."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:564
+#, no-c-format
+msgid "org.jboss.seam.core.switcher"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:566
+#, no-c-format
+msgid "The conversation switcher."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:578
+#, no-c-format
+msgid "jBPM-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:579
+#, no-c-format
+msgid "These components are for use with jBPM."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:584
+#, no-c-format
+msgid "org.jboss.seam.core.pageflow"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:586
+#, no-c-format
+msgid "API control of Seam pageflows."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:591
+#, no-c-format
+msgid ""
+"<literal>isInProcess()</literal> &mdash; returns <literal>true</literal> if "
+"there is currently a pageflow in process"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:596
+#, no-c-format
+msgid ""
+"<literal>getProcessInstance()</literal> &mdash; returns jBPM "
+"<literal>ProcessInstance</literal> for the current pageflow"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:601
+#, no-c-format
+msgid ""
+"<literal>begin(String pageflowName)</literal> &mdash; begin a pageflow in "
+"the context of the current conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:606
+#, no-c-format
+msgid ""
+"<literal>reposition(String nodeName)</literal> &mdash; reposition the "
+"current pageflow to a particular node"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:614
+#, no-c-format
+msgid "org.jboss.seam.core.actor"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:616
+#, no-c-format
+msgid ""
+"API for application control of attributes of the jBPM actor associated with "
+"the current session."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:621
+#, no-c-format
+msgid ""
+"<literal>setId(String actorId)</literal> &mdash; sets the jBPM actor id of "
+"the current user."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:626
+#, no-c-format
+msgid ""
+"<literal>getGroupActorIds()</literal> &mdash; returns a <literal>Set</"
+"literal> to which jBPM actor ids for the current users groups may be added."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:634
+#, no-c-format
+msgid "org.jboss.seam.core.transition"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:636
+#, no-c-format
+msgid ""
+"API for application control of the jBPM transition for the current task."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:641
+#, no-c-format
+msgid ""
+"<literal>setName(String transitionName)</literal> &mdash; sets the jBPM "
+"transition name to be used when the current task is ended via "
+"<literal>@EndTask</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:649
+#, no-c-format
+msgid "org.jboss.seam.core.businessProcess"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:651
+#, no-c-format
+msgid ""
+"API for programmatic control of the association between the conversation and "
+"business process."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:656
+#, no-c-format
+msgid ""
+"<literal>businessProcess.taskId</literal> &mdash; the id of the task "
+"associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:661
+#, no-c-format
+msgid ""
+"<literal>businessProcess.processId</literal> &mdash; the id of the process "
+"associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:666
+#, no-c-format
+msgid ""
+"<literal>businessProcess.hasCurrentTask()</literal> &mdash; is a task "
+"instance associated with the current conversation?"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:671
+#, no-c-format
+msgid ""
+"<literal>businessProcess.hasCurrentProcess()</literal> &mdash; is a process "
+"instance associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:676
+#, no-c-format
+msgid ""
+"<literal>createProcess(String name)</literal> &mdash; create an instance of "
+"the named process definition and associate it with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:681
+#, no-c-format
+msgid ""
+"<literal>startTask()</literal> &mdash; start the task associated with the "
+"current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:686
+#, no-c-format
+msgid ""
+"<literal>endTask(String transitionName)</literal> &mdash; end the task "
+"associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:691
+#, no-c-format
+msgid ""
+"<literal>resumeTask(Long id)</literal> &mdash; associate the task with the "
+"given id with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:696
+#, no-c-format
+msgid ""
+"<literal>resumeProcess(Long id)</literal> &mdash; associate the process with "
+"the given id with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:701
+#, no-c-format
+msgid ""
+"<literal>transition(String transitionName)</literal> &mdash; trigger the "
+"transition."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:709
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstance"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:711
+#, no-c-format
+msgid "Manager component for the jBPM <literal>TaskInstance</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:717
+#, no-c-format
+msgid "org.jboss.seam.core.processInstance"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:719
+#, no-c-format
+msgid "Manager component for the jBPM <literal>ProcessInstance</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:725
+#, no-c-format
+msgid "org.jboss.seam.core.jbpmContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:727
+#, no-c-format
+msgid "Manager component for an event-scoped <literal>JbpmContext</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:733
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstanceList"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:735
+#, no-c-format
+msgid "Manager component for the jBPM task list."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:741
+#, no-c-format
+msgid "org.jboss.seam.core.pooledTaskInstanceList"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:743
+#, no-c-format
+msgid "Manager component for the jBPM pooled task list."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:749
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstanceListForType"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:751
+#, no-c-format
+msgid "Manager component for the jBPM task lists."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:757
+#, no-c-format
+msgid "org.jboss.seam.core.pooledTask"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:759
+#, no-c-format
+msgid "Action handler for pooled task assignment."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:765
+#, no-c-format
+msgid ""
+"All of these components are installed whenever the component <literal>org."
+"jboss.seam.core.jbpm</literal> is installed."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:771
+#, no-c-format
+msgid "Security-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:772
+#, no-c-format
+msgid "These components relate to web-tier security."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:777
+#, no-c-format
+msgid "org.jboss.seam.core.userPrincipal"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:779
+#, no-c-format
+msgid "Manager component for the current user <literal>Principal</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:785
+#, no-c-format
+msgid "org.jboss.seam.core.isUserInRole"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:787
+#, no-c-format
+msgid ""
+"Allows JSF pages to choose to render a control, depending upon the roles "
+"available to the current principal. <literal>&lt;h:commandButton value=\"edit"
+"\" rendered=\"#{isUserInRole['admin']}\"/&gt;</literal>."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:796
+#, no-c-format
+msgid "JMS-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:797
+#, no-c-format
+msgid ""
+"These components are for use with managed <literal>TopicPublisher</literal>s "
+"and <literal>QueueSender</literal>s (see below)."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:802
+#, no-c-format
+msgid "org.jboss.seam.jms.queueSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:804
+#, no-c-format
+msgid "Manager component for a JMS <literal>QueueSession</literal> ."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:810
+#, no-c-format
+msgid "org.jboss.seam.jms.topicSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:812
+#, no-c-format
+msgid "Manager component for a JMS <literal>TopicSession</literal> ."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:821
+#, no-c-format
+msgid "Mail-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:822
+#, no-c-format
+msgid "These components are for use with Seam's Email support"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:827
+#, no-c-format
+msgid "org.jboss.seam.mail.mailSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:829
+#, no-c-format
+msgid "Manager component for a JavaMail <literal>Session</literal> ."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:834
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.host</literal> &mdash; the hostname "
+"of the SMTP server to use"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:839
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.port</literal> &mdash; the port of "
+"the SMTP server to use"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:844
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.username</literal> &mdash; the "
+"username to use to connect to the SMTP server."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:849
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.password</literal> &mdash; the "
+"password to use to connect to the SMTP server"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:854
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.debug</literal> &mdash; enable "
+"JavaMail debugging (very verbose)"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:859
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.sessionJndiName</literal> &mdash; "
+"name under which a javax.mail.Session is bound to JNDI"
+msgstr ""
+
+#. Tag: title
+#: Components.xml:870
+#, no-c-format
+msgid "Infrastructural components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:871
+#, no-c-format
+msgid ""
+"These components provide critical platform infrastructure. You can install a "
+"component by including its class name in the <literal>org.jboss.seam.core."
+"init.componentClasses</literal> configuration property."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:876
+#, no-c-format
+msgid "org.jboss.seam.core.init"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:878
+#, no-c-format
+msgid "Initialization settings for Seam. Always installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:883
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.jndiPattern</literal> &mdash; the JNDI "
+"pattern used for looking up session beans"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:888
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.debug</literal> &mdash; enable Seam debug "
+"mode"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:893
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.clientSideConversations</literal> &mdash; "
+"if set to <literal>true</literal>, Seam will save conversation context "
+"variables in the client instead of in the <literal>HttpSession</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:898
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.userTransactionName</literal> &mdash; the "
+"JNDI name to use when looking up the JTA <literal>UserTransaction</literal> "
+"object."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:906
+#, no-c-format
+msgid "org.jboss.seam.core.manager"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:908
+#, no-c-format
+msgid ""
+"Internal component for Seam page and conversation context management. Always "
+"installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:913
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationTimeout</literal> &mdash; "
+"the conversation context timeout in milliseconds."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:918
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.concurrentRequestTimeout</literal> "
+"&mdash; maximum wait time for a thread attempting to gain a lock on the long-"
+"running conversation context."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:923
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationIdParameter</literal> "
+"&mdash; the request parameter used to propagate the conversation id, default "
+"to <literal>conversationId</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:928
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationIsLongRunningParameter</"
+"literal> &mdash; the request parameter used to propagate information about "
+"whether the conversation is long-running, default to "
+"<literal>conversationIsLongRunning</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:936
+#, no-c-format
+msgid "org.jboss.seam.core.pages"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:938
+#, no-c-format
+msgid "Internal component for Seam workspace management. Always installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:943
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.pages.noConversationViewId</literal> &mdash; "
+"global setting for the view id to redirect to when a conversation entry is "
+"not found on the server side."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:951
+#, no-c-format
+msgid "org.jboss.seam.core.ejb"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:953
+#, no-c-format
+msgid ""
+"Bootstraps the JBoss Embeddable EJB3 container. Install as class "
+"<literal>org.jboss.seam.core.Ejb</literal>. This is useful when using Seam "
+"with EJB components outside the context of a Java EE 5 application server."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:956
+#, no-c-format
+msgid ""
+"The basic Embedded EJB configuration is defined in <literal>jboss-embedded-"
+"beans.xml</literal>. Additional microcontainer configuration (for example, "
+"extra datasources) may be specified by <literal>jboss-beans.xml</literal> or "
+"<literal>META-INF/jboss-beans.xml</literal> in the classpath."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:962
+#, no-c-format
+msgid "org.jboss.seam.core.microcontainer"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:964
+#, no-c-format
+msgid ""
+"Bootstraps the JBoss microcontainer. Install as class <literal>org.jboss."
+"seam.core.Microcontainer</literal>. This is useful when using Seam with "
+"Hibernate and no EJB components outside the context of a Java EE application "
+"server. The microcontainer can provide a partial EE environment with JNDI, "
+"JTA, a JCA datasource and Hibernate."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:967
+#, no-c-format
+msgid ""
+"The microcontainer configuration may be specified by <literal>jboss-beans."
+"xml</literal> or <literal>META-INF/jboss-beans.xml</literal> in the "
+"classpath."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:973
+#, no-c-format
+msgid "org.jboss.seam.core.jbpm"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:975
+#, no-c-format
+msgid ""
+"Bootstraps a <literal>JbpmConfiguration</literal>. Install as class "
+"<literal>org.jboss.seam.core.Jbpm</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:980
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.jbpm.processDefinitions</literal> &mdash; a "
+"list of resource names of jPDL files to be used for orchestration of "
+"business processes."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:985
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.jbpm.pageflowDefinitions</literal> &mdash; a "
+"list of resource names of jPDL files to be used for orchestration of "
+"conversation page flows."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:993
+#, no-c-format
+msgid "org.jboss.seam.core.conversationEntries"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:995
+#, no-c-format
+msgid ""
+"Internal session-scoped component recording the active long-running "
+"conversations between requests."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1001
+#, no-c-format
+msgid "org.jboss.seam.core.facesPage"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1003
+#, no-c-format
+msgid ""
+"Internal page-scoped component recording the conversation context associated "
+"with a page."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1009
+#, no-c-format
+msgid "org.jboss.seam.core.persistenceContexts"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1011
+#, no-c-format
+msgid ""
+"Internal component recording the persistence contexts which were used in the "
+"current conversation."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1017
+#, no-c-format
+msgid "org.jboss.seam.jms.queueConnection"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1019
+#, no-c-format
+msgid ""
+"Manages a JMS <literal>QueueConnection</literal>. Installed whenever managed "
+"managed <literal>QueueSender</literal> is installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1024
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.jms.queueConnection.queueConnectionFactoryJndiName</"
+"literal> &mdash; the JNDI name of a JMS <literal>QueueConnectionFactory</"
+"literal>. Default to <literal>UIL2ConnectionFactory</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1032
+#, no-c-format
+msgid "org.jboss.seam.jms.topicConnection"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1034
+#, no-c-format
+msgid ""
+"Manages a JMS <literal>TopicConnection</literal>. Installed whenever managed "
+"managed <literal>TopicPublisher</literal> is installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1039
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.jms.topicConnection.topicConnectionFactoryJndiName</"
+"literal> &mdash; the JNDI name of a JMS <literal>TopicConnectionFactory</"
+"literal>. Default to <literal>UIL2ConnectionFactory</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1047
+#, no-c-format
+msgid "org.jboss.seam.persistence.persistenceProvider"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1049
+#, no-c-format
+msgid "Abstraction layer for non-standardized features of JPA provider."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1055
+#, no-c-format
+msgid "org.jboss.seam.core.validation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1057
+#, no-c-format
+msgid "Internal component for Hibernate Validator support."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1063
+#, no-c-format
+msgid "org.jboss.seam.debug.introspector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1065 Components.xml:1073
+#, no-c-format
+msgid "Support for the Seam Debug Page."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1071
+#, no-c-format
+msgid "org.jboss.seam.debug.contexts"
+msgstr ""
+
+#. Tag: title
+#: Components.xml:1082
+#, no-c-format
+msgid "Special components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1083
+#, no-c-format
+msgid ""
+"Certain special Seam component classes are installable multiple times under "
+"names specified in the Seam configuration. For example, the following lines "
+"in <literal>components.xml</literal> install and configure two Seam "
+"components:"
+msgstr ""
+
+#. Tag: programlisting
+#: Components.xml:1086
+#, no-c-format
+msgid ""
+"&lt;component name=\"bookingDatabase\"\n"
+"          class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"    &lt;property name=\"persistenceUnitJndiName\"&gt;java:/comp/emf/"
+"bookingPersistence&lt;/property&gt;\n"
+"&lt;/component&gt;\n"
+"\n"
+"&lt;component name=\"userDatabase\"\n"
+"          class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"    &lt;property name=\"persistenceUnitJndiName\"&gt;java:/comp/emf/"
+"userPersistence&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1087
+#, no-c-format
+msgid ""
+"The Seam component names are <literal>bookingDatabase</literal> and "
+"<literal>userDatabase</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1092
+#, no-c-format
+msgid "&lt;entityManager&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1093
+#, no-c-format
+msgid "org.jboss.seam.core.ManagedPersistenceContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1095
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed <literal>EntityManager</"
+"literal> with an extended persistence context."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1100
+#, no-c-format
+msgid ""
+"<literal>&lt;entityManager&gt;.entityManagerFactory</literal> &mdash; a "
+"value binding expression that evaluates to an instance of "
+"<literal>EntityManagerFactory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1103
+#, no-c-format
+msgid ""
+"<literal>&lt;entityManager&gt;.persistenceUnitJndiName</literal> &mdash; the "
+"JNDI name of the entity manager factory, default to <literal>java:/&lt;"
+"managedPersistenceContext&gt;</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1111
+#, no-c-format
+msgid "&lt;entityManagerFactory&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1112
+#, no-c-format
+msgid "org.jboss.seam.core.EntityManagerFactory"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1114
+#, no-c-format
+msgid ""
+"Manages a JPA <literal>EntityManagerFactory</literal>. This is most useful "
+"when using JPA outside of an EJB 3.0 supporting environment."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1119
+#, no-c-format
+msgid ""
+"<literal>entityManagerFactory.persistenceUnitName</literal> &mdash; the name "
+"of the persistence unit."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1124 Components.xml:1162
+#, no-c-format
+msgid "See the API JavaDoc for further configuration properties."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1130
+#, no-c-format
+msgid "&lt;session&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1131
+#, no-c-format
+msgid "org.jboss.seam.core.ManagedSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1133
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed Hibernate "
+"<literal>Session</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1138
+#, no-c-format
+msgid ""
+"<literal>&lt;session&gt;.sessionFactory</literal> &mdash; a value binding "
+"expression that evaluates to an instance of <literal>SessionFactory</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1141
+#, no-c-format
+msgid ""
+"<literal>&lt;session&gt;.sessionFactoryJndiName</literal> &mdash; the JNDI "
+"name of the session factory, default to <literal>java:/&lt;managedSession&gt;"
+"</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1149
+#, no-c-format
+msgid "&lt;sessionFactory&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1150
+#, no-c-format
+msgid "org.jboss.seam.core.HibernateSessionFactory"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1152
+#, no-c-format
+msgid "Manages a Hibernate <literal>SessionFactory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1157
+#, no-c-format
+msgid ""
+"<literal>&lt;sessionFactory&gt;.cfgResourceName</literal> &mdash; the path "
+"to the configuration file. Default to <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1168
+#, no-c-format
+msgid "&lt;managedQueueSender&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1169
+#, no-c-format
+msgid "org.jboss.seam.jms.ManagedQueueSender"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1171
+#, no-c-format
+msgid ""
+"Manager component for an event scoped managed JMS <literal>QueueSender</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1176
+#, no-c-format
+msgid ""
+"<literal>&lt;managedQueueSender&gt;.queueJndiName</literal> &mdash; the JNDI "
+"name of the JMS queue."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1184
+#, no-c-format
+msgid "&lt;managedTopicPublisher&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1185
+#, no-c-format
+msgid "org.jboss.seam.jms.ManagedTopicPublisher"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1187
+#, no-c-format
+msgid ""
+"Manager component for an event scoped managed JMS <literal>TopicPublisher</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1192
+#, no-c-format
+msgid ""
+"<literal>&lt;managedTopicPublisher&gt;.topicJndiName</literal> &mdash; the "
+"JNDI name of the JMS topic."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1200
+#, no-c-format
+msgid "&lt;managedWorkingMemory&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1201
+#, no-c-format
+msgid "org.jboss.seam.drools.ManagedWorkingMemory"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1203
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed Drools "
+"<literal>WorkingMemory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1208
+#, no-c-format
+msgid ""
+"<literal>&lt;managedWorkingMemory&gt;.ruleBase</literal> &mdash; a value "
+"expression that evaluates to an instance of <literal>RuleBase</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1216
+#, no-c-format
+msgid "&lt;ruleBase&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1217
+#, no-c-format
+msgid "org.jboss.seam.drools.RuleBase"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1219
+#, no-c-format
+msgid ""
+"Manager component for an application scoped Drools <literal>RuleBase</"
+"literal>. <emphasis>Note that this is not really intended for production "
+"usage, since it does not support dynamic installation of new rules.</"
+"emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1224
+#, no-c-format
+msgid ""
+"<literal>&lt;ruleBase&gt;.ruleFiles</literal> &mdash; a list of files "
+"containing Drools rules."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1227
+#, no-c-format
+msgid ""
+"<literal>&lt;ruleBase&gt;.dslFile</literal> &mdash; a Drools DSL definition."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1235
+#, no-c-format
+msgid "&lt;entityHome&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1236
+#, no-c-format
+msgid "org.jboss.seam.framework.EntityHome"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1240
+#, no-c-format
+msgid "&lt;hibernateEntityHome&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1241
+#, no-c-format
+msgid "org.jboss.seam.framework.HibernateEntityHome"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1245
+#, no-c-format
+msgid "&lt;entityQuery&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1246
+#, no-c-format
+msgid "org.jboss.seam.framework.EntityQuery"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1250
+#, no-c-format
+msgid "&lt;hibernateEntityQuery&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1251
+#, no-c-format
+msgid "org.jboss.seam.framework.HibernateEntityQuery"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Concepts.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Concepts.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Concepts.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1922 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Concepts.xml:10
+#, no-c-format
+msgid "The contextual component model"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:11
+#, no-c-format
+msgid ""
+"The two core concepts in Seam are the notion of a <emphasis>context</"
+"emphasis> and the notion of a <emphasis>component</emphasis>. Components are "
+"stateful objects, usually EJBs, and an instance of a component is associated "
+"with a context, and given a name in that context. <emphasis>Bijection</"
+"emphasis> provides a mechanism for aliasing internal component names "
+"(instance variables) to contextual names, allowing component trees to be "
+"dynamically assembled, and reassembled by Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:14
+#, no-c-format
+msgid "Let's start by describing the contexts built in to Seam."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:17
+#, no-c-format
+msgid "Seam contexts"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:18
+#, no-c-format
+msgid ""
+"Seam contexts are created and destroyed by the framework. The application "
+"does not control context demarcation via explicit Java API calls. Context "
+"are usually implicit. In some cases, however, contexts are demarcated via "
+"annotations."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:21
+#, no-c-format
+msgid "The basic Seam contexts are:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:26
+#, no-c-format
+msgid "<para>Stateless context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:31
+#, no-c-format
+msgid "Event (or request) context"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:36 Concepts.xml:151
+#, no-c-format
+msgid "<para>Page context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:41 Concepts.xml:156
+#, no-c-format
+msgid "<para>Conversation context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:46 Concepts.xml:161
+#, no-c-format
+msgid "<para>Session context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:51 Concepts.xml:166
+#, no-c-format
+msgid "<para>Business process context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:56 Concepts.xml:171
+#, no-c-format
+msgid "<para>Application context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:61
+#, no-c-format
+msgid ""
+"You will recognize some of these contexts from servlet and related "
+"specifications. However, two of them might be new to you: "
+"<emphasis>conversation context</emphasis>, and <emphasis>business process "
+"context</emphasis>. One reason state management in web applications is so "
+"fragile and error-prone is that the three built-in contexts (request, "
+"session and application) are not especially meaningful from the point of "
+"view of the business logic. A user login session, for example, is a fairly "
+"arbitrary construct in terms of the actual application work flow. Therefore, "
+"most Seam components are scoped to the conversation or business process "
+"contexts, since they are the contexts which are most meaningful in terms of "
+"the application."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:64
+#, no-c-format
+msgid "Let's look at each context in turn."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:67
+#, no-c-format
+msgid "<title>Stateless context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:68
+#, no-c-format
+msgid ""
+"Components which are truly stateless (stateless session beans, primarily) "
+"always live in the stateless context (this is really a non-context). "
+"Stateless components are not very interesting, and are arguably not very "
+"object-oriented. Nevertheless, they are important and often useful."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:71
+#, no-c-format
+msgid "<title>Event context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:72
+#, no-c-format
+msgid ""
+"The event context is the \"narrowest\" stateful context, and is a "
+"generalization of the notion of the web request context to cover other kinds "
+"of events. Nevertheless, the event context associated with the lifecycle of "
+"a JSF request is the most important example of an event context, and the one "
+"you will work with most often. Components associated with the event context "
+"are destroyed at the end of the request, but their state is available and "
+"well-defined for at least the lifecycle of the request."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:75
+#, no-c-format
+msgid ""
+"When you invoke a Seam component via RMI, or Seam Remoting, the event "
+"context is created and destroyed just for the invocation."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:78
+#, no-c-format
+msgid "<title>Page context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:79
+#, no-c-format
+msgid ""
+"The page context allows you to associate state with a particular instance of "
+"a rendered page. You can initialize state in your event listener, or while "
+"actually rendering the page, and then have access to it from any event that "
+"originates from that page. This is especially useful for functionality like "
+"clickable lists, where the list is backed by changing data on the server "
+"side. The state is actually serialized to the client, so this construct is "
+"extremely robust with respect to multi-window operation and the back button."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:82
+#, no-c-format
+msgid "<title>Conversation context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:83
+#, no-c-format
+msgid ""
+"The conversation context is a truly central concept in Seam. A "
+"<emphasis>conversation</emphasis> is a unit of work from the point of view "
+"of the user. It might span several interactions with the user, several "
+"requests, and several database transactions. But to the user, a conversation "
+"solves a single problem. For example, \"book hotel\", \"approve contract\", "
+"\"create order\" are all conversations. You might like to think of a "
+"conversation implementing a single \"use case\" or \"user story\", but the "
+"relationship is not necessarily quite exact."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:86
+#, no-c-format
+msgid ""
+"A conversation holds state associated with \"what the user is doing now, in "
+"this window\". A single user may have multiple conversations in progress at "
+"any point in time, usually in multiple windows. The conversation context "
+"allows us to ensure that state from the different conversations does not "
+"collide and cause bugs."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:89
+#, no-c-format
+msgid ""
+"It might take you some time to get used to thinking of applications in terms "
+"of conversations. But once you get used to it, we think you'll love the "
+"notion, and never be able to not think in terms of conversations again!"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:92
+#, no-c-format
+msgid ""
+"Some conversations last for just a single request. Conversations that span "
+"multiple requests must be demarcated using annotations provided by Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:95
+#, no-c-format
+msgid ""
+"Some conversations are also <emphasis>tasks</emphasis>. A task is a "
+"conversation that is significant in terms of a long-running business "
+"process, and has the potential to trigger a business process state "
+"transition when it is successfully completed. Seam provides a special set of "
+"annotations for task demarcation."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:98
+#, no-c-format
+msgid ""
+"Conversations may be <emphasis>nested</emphasis>, with one conversation "
+"taking place \"inside\" a wider conversation. This is an advanced feature."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:101
+#, no-c-format
+msgid ""
+"Usually, conversation state is actually held by Seam in the servlet session "
+"between requests. Seam implements configurable <emphasis>conversation "
+"timeout</emphasis>, automatically destroying inactive conversations, and "
+"thus ensuring that the state held by a single user login session does not "
+"grow without bound if the user abandons conversations."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:104
+#, no-c-format
+msgid ""
+"Seam serializes processing of concurrent requests that take place in the "
+"same long-running conversation context, in the same process."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:107
+#, no-c-format
+msgid ""
+"Alternatively, Seam may be configured to keep conversational state in the "
+"client browser."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:110
+#, no-c-format
+msgid "<title>Session context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:111
+#, no-c-format
+msgid ""
+"A session context holds state associated with the user login session. While "
+"there are some cases where it is useful to share state between several "
+"conversations, we generally frown on the use of session context for holding "
+"components other than global information about the logged in user."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:114
+#, no-c-format
+msgid ""
+"In a JSR-168 portal environment, the session context represents the portlet "
+"session."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:117
+#, no-c-format
+msgid "<title>Business process context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:118
+#, no-c-format
+msgid ""
+"The business process context holds state associated with the long running "
+"business process. This state is managed and made persistent by the BPM "
+"engine (JBoss jBPM). The business process spans multiple interactions with "
+"multiple users, so this state is shared between multiple users, but in a "
+"well-defined manner. The current task determines the current business "
+"process instance, and the lifecycle of the business process is defined "
+"externally using a <emphasis>process definition language</emphasis>, so "
+"there are no special annotations for business process demarcation."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:121
+#, no-c-format
+msgid "<title>Application context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:122
+#, no-c-format
+msgid ""
+"The application context is the familiar servlet context from the servlet "
+"spec. Application context is mainly useful for holding static information "
+"such as configuration data, reference data or metamodels. For example, Seam "
+"stores its own configuration and metamodel in the application context."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:125
+#, no-c-format
+msgid "Context variables"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:126
+#, no-c-format
+msgid ""
+"A context defines a namespace, a set of <emphasis>context variables</"
+"emphasis>. These work much the same as session or request attributes in the "
+"servlet spec. You may bind any value you like to a context variable, but "
+"usually we bind Seam component instances to context variables."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:129
+#, no-c-format
+msgid ""
+"So, within a context, a component instance is identified by the context "
+"variable name (this is usually, but not always, the same as the component "
+"name). You may programatically access a named component instance in a "
+"particular scope via the <literal>Contexts</literal> class, which provides "
+"access to several thread-bound instances of the <literal>Context</literal> "
+"interface:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:132
+#, no-c-format
+msgid "User user = (User) Contexts.getSessionContext().get(\"user\");"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:133
+#, no-c-format
+msgid "You may also set or change the value associated with a name:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:136
+#, no-c-format
+msgid "Contexts.getSessionContext().set(\"user\", user);"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:137
+#, no-c-format
+msgid ""
+"Usually, however, we obtain components from a context via injection, and put "
+"component instances into a context via outjection."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:140
+#, no-c-format
+msgid "Context search priority"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:141
+#, no-c-format
+msgid ""
+"Sometimes, as above, component instances are obtained from a particular "
+"known scope. Other times, all stateful scopes are searched, in "
+"<emphasis>priority order</emphasis>. The order is as follows:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:146
+#, no-c-format
+msgid "<para>Event context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:176
+#, no-c-format
+msgid ""
+"You can perform a priority search by calling <literal>Contexts."
+"lookupInStatefulContexts()</literal>. Whenever you access a component by "
+"name from a JSF page, a priority search occurs."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:179
+#, no-c-format
+msgid "Concurrency model"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:180
+#, no-c-format
+msgid ""
+"Neither the servlet nor EJB specifications define any facilities for "
+"managing concurrent requests originating from the same client. The servlet "
+"container simply lets all threads run concurrently and leaves enforcing "
+"threadsafeness to application code. The EJB container allows stateless "
+"components to be accessed concurrently, and throws an exception if multiple "
+"threads access a stateful session bean."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:183
+#, no-c-format
+msgid ""
+"This behavior might have been okay in old-style web applications which were "
+"based around fine-grained, synchronous requests. But for modern applications "
+"which make heavy use of many fine-grained, asynchronous (AJAX) requests, "
+"concurrency is a fact of life, and must be supported by the programming "
+"model. Seam weaves a concurrency management layer into its context model."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:186
+#, no-c-format
+msgid ""
+"The Seam session and application contexts are multithreaded. Seam will allow "
+"concurrent requests in a context to be processed concurrently. The event and "
+"page contexts are by nature single threaded. The business process context is "
+"strictly speaking multi-threaded, but in practice concurrency is "
+"sufficiently rare that this fact may be disregarded most of the time. "
+"Finally, Seam enforces a <emphasis>single thread per conversation per "
+"process</emphasis> model for the conversation context by serializing "
+"concurrent requests in the same long-running conversation context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:189
+#, no-c-format
+msgid ""
+"Since the session context is multithreaded, and often contains volatile "
+"state, session scope components are always protected by Seam from concurrent "
+"access. Seam serializes requests to session scope session beans and "
+"JavaBeans by default (and detects and breaks any deadlocks that occur). This "
+"is not the default behaviour for application scoped components however, "
+"since application scoped components do not usually hold volatile state and "
+"because synchronization at the global level is <emphasis>extremely</"
+"emphasis> expensive. However, you can force a serialized threading model on "
+"any session bean or JavaBean component by adding the <literal>@Synchronized</"
+"literal> annotation."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:192
+#, no-c-format
+msgid ""
+"This concurrency model means that AJAX clients can safely use volatile "
+"session and conversational state, without the need for any special work on "
+"the part of the developer."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:195
+#, no-c-format
+msgid "Seam components"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:196
+#, no-c-format
+msgid ""
+"Seam components are POJOs (Plain Old Java Objects). In particular, they are "
+"JavaBeans or EJB 3.0 enterprise beans. While Seam does not require that "
+"components be EJBs and can even be used without an EJB 3.0 compliant "
+"container, Seam was designed with EJB 3.0 in mind and includes deep "
+"integration with EJB 3.0. Seam supports the following <emphasis>component "
+"types</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:201
+#, no-c-format
+msgid "EJB 3.0 stateless session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:206
+#, no-c-format
+msgid "EJB 3.0 stateful session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:211
+#, no-c-format
+msgid "EJB 3.0 entity beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:216
+#, no-c-format
+msgid "<para>JavaBeans</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:221
+#, no-c-format
+msgid "EJB 3.0 message-driven beans"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:226
+#, no-c-format
+msgid "Stateless session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:227
+#, no-c-format
+msgid ""
+"Stateless session bean components are not able to hold state across multiple "
+"invocations. Therefore, they usually work by operating upon the state of "
+"other components in the various Seam contexts. They may be used as JSF "
+"action listeners, but cannot provide properties to JSF components for "
+"display."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:230
+#, no-c-format
+msgid "Stateless session beans always live in the stateless context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:233
+#, no-c-format
+msgid ""
+"Stateless session beans are the least interesting kind of Seam component."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:236
+#, no-c-format
+msgid "Stateful session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:237
+#, no-c-format
+msgid ""
+"Stateful session bean components are able to hold state not only across "
+"multiple invocations of the bean, but also across multiple requests. "
+"Application state that does not belong in the database should usually be "
+"held by stateful session beans. This is a major difference between Seam and "
+"many other web application frameworks. Instead of sticking information about "
+"the current conversation directly in the <literal>HttpSession</literal>, you "
+"should keep it in instance variables of a stateful session bean that is "
+"bound to the conversation context. This allows Seam to manage the lifecycle "
+"of this state for you, and ensure that there are no collisions between state "
+"relating to different concurrent conversations."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:240
+#, no-c-format
+msgid ""
+"Stateful session beans are often used as JSF action listener, and as backing "
+"beans that provide properties to JSF components for display or form "
+"submission."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:243
+#, no-c-format
+msgid ""
+"By default, stateful session beans are bound to the conversation context. "
+"They may never be bound to the page or stateless contexts."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:246
+#, no-c-format
+msgid ""
+"Concurrent requests to session-scoped stateful session beans are always "
+"serialized by Seam."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:249
+#, no-c-format
+msgid "Entity beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:250
+#, no-c-format
+msgid ""
+"Entity beans may be bound to a context variable and function as a seam "
+"component. Because entities have a persistent identity in addition to their "
+"contextual identity, entity instances are usually bound explicitly in Java "
+"code, rather than being instantiated implicitly by Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:253
+#, no-c-format
+msgid ""
+"Entity bean components do not support bijection or context demarcation. Nor "
+"does invocation of an entity bean trigger validation."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:256
+#, no-c-format
+msgid ""
+"Entity beans are not usually used as JSF action listeners, but do often "
+"function as backing beans that provide properties to JSF components for "
+"display or form submission. In particular, it is common to use an entity as "
+"a backing bean, together with a stateless session bean action listener to "
+"implement create/update/delete type functionality."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:259
+#, no-c-format
+msgid ""
+"By default, entity beans are bound to the conversation context. They may "
+"never be bound to the stateless context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:262
+#, no-c-format
+msgid ""
+"Note that it in a clustered environment is somewhat less efficient to bind "
+"an entity bean directly to a conversation or session scoped Seam context "
+"variable than it would be to hold a reference to the entity bean in a "
+"stateful session bean. For this reason, not all Seam applications define "
+"entity beans to be Seam components."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:265
+#, no-c-format
+msgid "<title>JavaBeans</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:266
+#, no-c-format
+msgid ""
+"Javabeans may be used just like a stateless or stateful session bean. "
+"However, they do not provide the functionality of a session bean "
+"(declarative transaction demarcation, declarative security, efficient "
+"clustered state replication, EJB 3.0 persistence, timeout methods, etc)."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:269
+#, no-c-format
+msgid ""
+"In a later chapter, we show you how to use Seam and Hibernate without an EJB "
+"container. In this use case, components are JavaBeans instead of session "
+"beans. Note, however, that in many application servers it is somewhat less "
+"efficient to cluster conversation or session scoped Seam JavaBean components "
+"than it is to cluster stateful session bean components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:272
+#, no-c-format
+msgid "By default, JavaBeans are bound to the event context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:275
+#, no-c-format
+msgid ""
+"Concurrent requests to session-scoped JavaBeans are always serialized by "
+"Seam."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:278
+#, no-c-format
+msgid "Message-driven beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:279
+#, no-c-format
+msgid ""
+"Message-driven beans may function as a seam component. However, message-"
+"driven beans are called quite differently to other Seam components - instead "
+"of invoking them via the context variable, they listen for messages sent to "
+"a JMS queue or topic."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:282
+#, no-c-format
+msgid ""
+"Message-driven beans may not be bound to a Seam context. Nor do they have "
+"access to the session or conversation state of their \"caller\". However, "
+"they do support bijection and some other Seam functionality."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:285
+#, no-c-format
+msgid "Interception"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:286
+#, no-c-format
+msgid ""
+"In order to perform its magic (bijection, context demarcation, validation, "
+"etc), Seam must intercept component invocations. For JavaBeans, Seam is in "
+"full control of instantiation of the component, and no special configuration "
+"is needed. For entity beans, interception is not required since bijection "
+"and context demarcation are not defined. For session beans, we must register "
+"an EJB interceptor for the session bean component. We could use an "
+"annotation, as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:289
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:290
+#, no-c-format
+msgid ""
+"But a much better way is to define the interceptor in <literal>ejb-jar.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:293
+#, no-c-format
+msgid ""
+"&lt;interceptors&gt;\n"
+"   &lt;interceptor&gt;\n"
+"      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"   &lt;/interceptor&gt;\n"
+"&lt;/interceptors&gt;\n"
+"   \n"
+"&lt;assembly-descriptor&gt;\n"
+"   &lt;interceptor-binding&gt;\n"
+"      &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"   &lt;/interceptor-binding&gt;\n"
+"&lt;/assembly-descriptor&gt;"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:294
+#, no-c-format
+msgid "Component names"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:295
+#, no-c-format
+msgid ""
+"All seam components need a name. We can assign a name to a component using "
+"the <literal>@Name</literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:298
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:299
+#, no-c-format
+msgid ""
+"This name is the <emphasis>seam component name</emphasis> and is not related "
+"to any other name defined by the EJB specification. However, seam component "
+"names work just like JSF managed bean names and you can think of the two "
+"concepts as identical."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:302
+#, no-c-format
+msgid ""
+"<literal>@Name</literal> is not the only way to define a component name, but "
+"we always need to specify the name <emphasis>somewhere</emphasis>. If we "
+"don't, then none of the other Seam annotations will function."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:305
+#, no-c-format
+msgid ""
+"Just like in JSF, a seam component instance is usually bound to a context "
+"variable with the same name as the component name. So, for example, we would "
+"access the <literal>LoginAction</literal> using <literal>Contexts."
+"getStatelessContext().get(\"loginAction\")</literal>. In particular, "
+"whenever Seam itself instantiates a component, it binds the new instance to "
+"a variable with the component name. However, again like JSF, it is possible "
+"for the application to bind a component to some other context variable by "
+"programmatic API call. This is only useful if a particular component serves "
+"more than one role in the system. For example, the currently logged in "
+"<literal>User</literal> might be bound to the <literal>currentUser</literal> "
+"session context variable, while a <literal>User</literal> that is the "
+"subject of some administration functionality might be bound to the "
+"<literal>user</literal> conversation context variable."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:308
+#, no-c-format
+msgid ""
+"For very large applications, and for built-in seam components, qualified "
+"names are often used."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:311
+#, no-c-format
+msgid ""
+"@Name(\"com.jboss.myapp.loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:312
+#, no-c-format
+msgid ""
+"We may use the qualified component name both in Java code and in JSF's "
+"expression language:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:315
+#, no-c-format
+msgid ""
+"&lt;h:commandButton type=\"submit\" value=\"Login\"\n"
+"                 action=\"#{com.jboss.myapp.loginAction.login}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:316
+#, no-c-format
+msgid ""
+"Since this is noisy, Seam also provides a means of aliasing a qualified name "
+"to a simple name. Add a line like this to the <literal>components.xml</"
+"literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:319
+#, no-c-format
+msgid ""
+"&lt;factory name=\"loginAction\" scope=\"STATELESS\" value=\"#{com.jboss."
+"myapp.loginAction}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:320
+#, no-c-format
+msgid ""
+"All of the built-in Seam components have qualified names, but most of them "
+"are aliased to a simple name by the <literal>components.xml</literal> file "
+"included in the Seam jar."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:323
+#, no-c-format
+msgid "Defining the component scope"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:324
+#, no-c-format
+msgid ""
+"We can override the default scope (context) of a component using the "
+"<literal>@Scope</literal> annotation. This lets us define what context a "
+"component instance is bound to, when it is instantiated by Seam."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:327
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(SESSION)\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:328
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.ScopeType</literal> defines an enumeration of "
+"possible scopes."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:331
+#, no-c-format
+msgid "Components with multiple roles"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:332
+#, no-c-format
+msgid ""
+"Some Seam component classes can fulfill more than one role in the system. "
+"For example, we often have a <literal>User</literal> class which is usually "
+"used as a session-scoped component representing the current user but is used "
+"in user administration screens as a conversation-scoped component. The "
+"<literal>@Role</literal> annotation lets us define an additional named role "
+"for a component, with a different scope&mdash;it lets us bind the same "
+"component class to different context variables. (Any Seam component "
+"<emphasis>instance</emphasis> may be bound to multiple context variables, "
+"but this lets us do it at the class level, and take advantage of auto-"
+"instantiation.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:335
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(CONVERSATION)\n"
+"@Role(name=\"currentUser\", scope=SESSION)\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:336
+#, no-c-format
+msgid ""
+"The <literal>@Roles</literal> annotation lets us specify as many additional "
+"roles as we like."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:339
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(CONVERSATION)\n"
+"@Roles({@Role(name=\"currentUser\", scope=SESSION)\n"
+"        @Role(name=\"tempUser\", scope=EVENT)})\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:340
+#, no-c-format
+msgid "Built-in components"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:341
+#, no-c-format
+msgid ""
+"Like many good frameworks, Seam eats its own dogfood and is implemented "
+"mostly as a set of built-in Seam interceptors (see later) and Seam "
+"components. This makes it easy for applications to interact with built-in "
+"components at runtime or even customize the basic functionality of Seam by "
+"replacing the built-in components with custom implementations. The built-in "
+"components are defined in the Seam namespace <literal>org.jboss.seam.core</"
+"literal> and the Java package of the same name."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:344
+#, no-c-format
+msgid ""
+"The built-in components may be injected, just like any Seam components, but "
+"they also provide convenient static <literal>instance()</literal> methods:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:347
+#, no-c-format
+msgid "FacesMessages.instance().add(\"Welcome back, #{user.name}!\");"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:348
+#, no-c-format
+msgid ""
+"Seam was designed to integrate tightly in a Java EE 5 environment. However, "
+"we understand that there are many projects which are not running in a full "
+"EE environment. We also realize the critical importance of easy unit and "
+"integration testing using frameworks such as TestNG and JUnit. So, we've "
+"made it easy to run Seam in Java SE environments by allowing you to boostrap "
+"certain critical infrastructure normally only found in EE environments by "
+"installing built-in Seam components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:351
+#, no-c-format
+msgid ""
+"For example, you can run your EJB3 components in Tomcat or an integration "
+"test suite just by installing the built-in component <literal>org.jboss.seam."
+"core.ejb</literal>, which automatically bootstraps the JBoss Embeddable EJB3 "
+"container and deploys your EJB components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:354
+#, no-c-format
+msgid ""
+"Or, if you're not quite ready for the Brave New World of EJB 3.0, you can "
+"write a Seam application that uses only JavaBean components, together with "
+"Hibernate3 for persistence, by installing a built-in component that manages "
+"a Hibernate <literal>SessionFactory</literal>. When using Hibernate outside "
+"of a J2EE environment, you will also probably need a JTA transaction manager "
+"and JNDI server, which are available via the built-in component <literal>org."
+"jboss.seam.core.microcontainer</literal>. This lets you use the bulletproof "
+"JTA/JCA pooling datasource from JBoss application server in an SE "
+"environment like Tomcat!"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:357
+#, no-c-format
+msgid "Bijection"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:358
+#, no-c-format
+msgid ""
+"<emphasis>Dependency injection</emphasis> or <emphasis>inversion of control</"
+"emphasis> is by now a familiar concept to most Java developers. Dependency "
+"injection allows a component to obtain a reference to another component by "
+"having the container \"inject\" the other component to a setter method or "
+"instance variable. In all dependency injection implementations that we have "
+"seen, injection occurs when the component is constructed, and the reference "
+"does not subsequently change for the lifetime of the component instance. For "
+"stateless components, this is reasonable. From the point of view of a "
+"client, all instances of a particular stateless component are "
+"interchangeable. On the other hand, Seam emphasizes the use of stateful "
+"components. So traditional dependency injection is no longer a very useful "
+"construct. Seam introduces the notion of <emphasis>bijection</emphasis> as a "
+"generalization of injection. In contrast to injection, bijection is:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:363
+#, no-c-format
+msgid ""
+"<emphasis>contextual</emphasis> - bijection is used to assemble stateful "
+"components from various different contexts (a component from a \"wider\" "
+"context may even have a reference to a component from a \"narrower\" context)"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:368
+#, no-c-format
+msgid ""
+"<emphasis>bidirectional</emphasis> - values are injected from context "
+"variables into attributes of the component being invoked, and also "
+"<emphasis>outjected</emphasis> from the component attributes back out to the "
+"context, allowing the component being invoked to manipulate the values of "
+"contextual variables simply by setting its own instance variables"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:373
+#, no-c-format
+msgid ""
+"<emphasis>dynamic</emphasis> - since the value of contextual variables "
+"changes over time, and since Seam components are stateful, bijection takes "
+"place every time a component is invoked"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:378
+#, no-c-format
+msgid ""
+"In essence, bijection lets you alias a context variable to a component "
+"instance variable, by specifying that the value of the instance variable is "
+"injected, outjected, or both. Of course, we use annotations to enable "
+"bijection."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:381
+#, no-c-format
+msgid ""
+"The <literal>@In</literal> annotation specifies that a value should be "
+"injected, either into an instance variable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:384
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:385
+#, no-c-format
+msgid "or into a setter method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:388
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @In\n"
+"    public void setUser(User user) {\n"
+"        this.user=user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:389
+#, no-c-format
+msgid ""
+"By default, Seam will do a priority search of all contexts, using the name "
+"of the property or instance variable that is being injected. You may wish to "
+"specify the context variable name explicitly, using, for example, "
+"<literal>@In(\"currentUser\")</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:392
+#, no-c-format
+msgid ""
+"If you want Seam to create an instance of the component when there is no "
+"existing component instance bound to the named context variable, you should "
+"specify <literal>@In(create=true)</literal>. If the value is optional (it "
+"can be null), specify <literal>@In(required=false)</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:395
+#, no-c-format
+msgid ""
+"For some components, it can be repetitive to have to specify <literal>@In"
+"(create=true)</literal> everywhere they are used. In such cases, you can "
+"annotate the component <literal>@AutoCreate</literal>, and then it will "
+"always be created, whenever needed, even without the explicit use of "
+"<literal>create=true</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:398
+#, no-c-format
+msgid "You can even inject the value of an expression:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:401
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In(\"#{user.username}\") String username;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:402
+#, no-c-format
+msgid ""
+"(There is much more information about component lifecycle and injection in "
+"the next chapter.)"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:405
+#, no-c-format
+msgid ""
+"The <literal>@Out</literal> annotation specifies that an attribute should be "
+"outjected, either from an instance variable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:408
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @Out User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:409
+#, no-c-format
+msgid "or from a getter method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:412
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @Out\n"
+"    public User getUser() {\n"
+"        return user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:413
+#, no-c-format
+msgid "An attribute may be both injected and outjected:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:416
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In @Out User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:417
+#, no-c-format
+msgid "<para>or:</para>"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:420
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @In\n"
+"    public void setUser(User user) {\n"
+"        this.user=user;\n"
+"    }\n"
+"    \n"
+"    @Out\n"
+"    public User getUser() {\n"
+"        return user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:421
+#, no-c-format
+msgid "Lifecycle methods"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:422
+#, no-c-format
+msgid ""
+"Session bean and entity bean Seam components support all the usual EJB 3.0 "
+"lifecycle callback (<literal>@PostConstruct</literal>, <literal>@PreDestroy</"
+"literal>, etc). Seam extends all of these callbacks except "
+"<literal>@PreDestroy</literal> to JavaBean components. But Seam also defines "
+"its own component lifecycle callbacks."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:425
+#, no-c-format
+msgid ""
+"The <literal>@Create</literal> method is called every time Seam instantiates "
+"a component. Unlike the <literal>@PostConstruct</literal> method, this "
+"method is called after the component is fully constructed by the EJB "
+"container, and has access to all the usual Seam functionality (bijection, "
+"etc). Components may define only one <literal>@Create</literal> method."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:428
+#, no-c-format
+msgid ""
+"The <literal>@Destroy</literal> method is called when the context that the "
+"Seam component is bound to ends. Components may define only one "
+"<literal>@Destroy</literal> method. Stateful session bean components "
+"<emphasis>must</emphasis> define a method annotated <literal>@Destroy "
+"@Remove</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:431
+#, no-c-format
+msgid ""
+"Finally, a related annotation is the <literal>@Startup</literal> annotation, "
+"which may be applied to any application or session scoped component. The "
+"<literal>@Startup</literal> annotation tells Seam to instantiate the "
+"component immediately, when the context begins, instead of waiting until it "
+"is first referenced by a client. It is possible to control the order of "
+"instantiation of startup components by specifying <literal>@Startup(depends="
+"{....})</literal>."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:434
+#, no-c-format
+msgid "Conditional installation"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:435
+#, no-c-format
+msgid ""
+"The <literal>@Install</literal> annotation lets you control conditional "
+"installation of components that are required in some deployment scenarios "
+"and not in others. This is useful if:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:440
+#, no-c-format
+msgid "You want to mock out some infrastructural component in tests."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:445
+#, no-c-format
+msgid ""
+"You want change the implementation of a component in certain deployment "
+"scenarios."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:450
+#, no-c-format
+msgid ""
+"You want to install some components only if their dependencies are available "
+"(useful for framework authors)."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:455
+#, no-c-format
+msgid ""
+"<literal>@Install</literal> works by letting you specify "
+"<emphasis>precedence</emphasis> and <emphasis>dependencies</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:458
+#, no-c-format
+msgid ""
+"The precedence of a component is a number that Seam uses to decide which "
+"component to install when there are multiple classes with the same component "
+"name in the classpath. Seam will choose the component with the higher "
+"precendence. There are some predefined precedence values:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:463
+#, no-c-format
+msgid ""
+"<literal>BUILT_IN</literal> &mdash; the lowest precedece components are the "
+"components built in to Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:468
+#, no-c-format
+msgid ""
+"<literal>FRAMEWORK</literal> &mdash; components defined by third-party "
+"frameworks may override built-in components, but are overridden by "
+"application components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:473
+#, no-c-format
+msgid ""
+"<literal>APPLICATION</literal> &mdash; the default precedence. This is "
+"appropriate for most application components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:478
+#, no-c-format
+msgid ""
+"<literal>DEPLOYMENT</literal> &mdash; for application components which are "
+"deployment-specific."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:483
+#, no-c-format
+msgid "<literal>MOCK</literal> &mdash; for mock objects used in testing."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:488
+#, no-c-format
+msgid ""
+"Suppose we have a component named <literal>messageSender</literal> that "
+"talks to a JMS queue."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:491
+#, no-c-format
+msgid ""
+"@Name(\"messageSender\") \n"
+"public class MessageSender {\n"
+"    public void sendMessage() {\n"
+"        //do something with JMS\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:492
+#, no-c-format
+msgid ""
+"In our unit tests, we don't have a JMS queue available, so we would like to "
+"stub out this method. We'll create a <emphasis>mock</emphasis> component "
+"that exists in the classpath when unit tests are running, but is never "
+"deployed with the application:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:495
+#, no-c-format
+msgid ""
+"@Name(\"messageSender\") \n"
+"@Install(precedence=MOCK)\n"
+"public class MockMessageSender extends MessageSender {\n"
+"    public void sendMessage() {\n"
+"        //do nothing!\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:496
+#, no-c-format
+msgid ""
+"The <literal>precedence</literal> helps Seam decide which version to use "
+"when it finds both components in the classpath."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:499
+#, no-c-format
+msgid ""
+"This is nice if we are able to control exactly which classes are in the "
+"classpath. But if I'm writing a reusable framework with many dependecies, I "
+"don't want to have to break that framework across many jars. I want to be "
+"able to decide which components to install depending upon what other "
+"components are installed, and upon what classes are available in the "
+"classpath. The <literal>@Install</literal> annotation also controls this "
+"functionality. Seam uses this mechanism internally to enable conditional "
+"installation of many of the built-in components. However, you probably won't "
+"need to use it in your application."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:502
+#, no-c-format
+msgid "Logging"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:503
+#, no-c-format
+msgid "Who is not totally fed up with seeing noisy code like this?"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:506
+#, no-c-format
+msgid ""
+"private static final Log log = LogFactory.getLog(CreateOrderAction.class);\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    if ( log.isDebugEnabled() ) {\n"
+"        log.debug(\"Creating new order for user: \" + user.username() + \n"
+"            \" product: \" + product.name() \n"
+"            + \" quantity: \" + quantity);\n"
+"    }\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:507
+#, no-c-format
+msgid ""
+"It is difficult to imagine how the code for a simple log message could "
+"possibly be more verbose. There is more lines of code tied up in logging "
+"than in the actual business logic! I remain totally astonished that the Java "
+"community has not come up with anything better in 10 years."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:510
+#, no-c-format
+msgid ""
+"Seam provides a logging API built on top of Apache commons-logging that "
+"simplifies this code significantly:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:513
+#, no-c-format
+msgid ""
+"@Logger private Log log;\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    log.debug(\"Creating new order for user: #0 product: #1 quantity: #2\", "
+"user.username(), \n"
+"       product.name(), quantity);\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:514
+#, no-c-format
+msgid ""
+"It doesn't matter if you declare the <literal>log</literal> variable static "
+"or not&mdash;it will work either way."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:517
+#, no-c-format
+msgid ""
+"Note that we don't need the noisy <literal>if ( log.isDebugEnabled() )</"
+"literal> guard, since string concatenation happens <emphasis>inside</"
+"emphasis> the <literal>debug()</literal> method. Note also that we don't "
+"usually need to specify the log category explicitly, since Seam knows what "
+"component it is injecting the <literal>Log</literal> into."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:520
+#, no-c-format
+msgid ""
+"If <literal>User</literal> and <literal>Product</literal> are Seam "
+"components available in the current contexts, it gets even better:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:523
+#, no-c-format
+msgid ""
+"@Logger private Log log;\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    log.debug(\"Creating new order for user: #{user.username} product: #"
+"{product.name}\n"
+"       quantity: #0\", quantity);\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:524
+#, no-c-format
+msgid ""
+"The <literal>Mutable</literal> interface and <literal>@ReadOnly</literal>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:525
+#, no-c-format
+msgid ""
+"Many application servers feature an amazingly broken implementation of "
+"<literal>HttpSession</literal> clustering, where changes to the state of "
+"mutable objects bound to the session are only replicated when the "
+"application calls <literal>setAttribute()</literal> explicitly. This is a "
+"source of bugs that can not effectively be tested for at development time, "
+"since they will only manifest when failover occurs. Furthermore, the actual "
+"replication message contains the entire serialized object graph bound to the "
+"session attribute, which is inefficient."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:528
+#, no-c-format
+msgid ""
+"Of course, EJB stateful session beans must perform automatic dirty checking "
+"and replication of mutable state and a sophisticated EJB container can "
+"introduce optimizations such as attribute-level replication. Unfortunately, "
+"not all Seam users have the good fortune to be working in an environment "
+"that supports EJB 3.0. So, for session and conversation scoped JavaBean and "
+"entity bean components, Seam provides an extra layer of cluster-safe state "
+"management over the top of the web container session clustering."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:531
+#, no-c-format
+msgid ""
+"For session or conversation scoped JavaBean components, Seam automatically "
+"forces replication to occur by calling <literal>setAttribute()</literal> "
+"once in every request that the component was invoked by the application. Of "
+"course, this strategy is inefficient for read-mostly components. You can "
+"control this behavior by implementing the <literal>org.jboss.seam.core."
+"Mutable</literal> interface, or by extending <literal>org.jboss.seam.core."
+"AbstractMutable</literal>, and writing your own dirty-checking logic inside "
+"the component. For example,"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:534
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class Account extends AbstractMutable\n"
+"{\n"
+"    private BigDecimal balance;\n"
+"    \n"
+"    public void setBalance(BigDecimal balance)\n"
+"    {\n"
+"        setDirty(this.balance, balance);\n"
+"        this.balance = balance;\n"
+"    }\n"
+"    \n"
+"    public BigDecimal getBalance()\n"
+"    {\n"
+"        return balance;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:535
+#, no-c-format
+msgid ""
+"Or, you can use the <literal>@ReadOnly</literal> annotation to achieve a "
+"similar effect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:538
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class Account\n"
+"{\n"
+"    private BigDecimal balance;\n"
+"    \n"
+"    public void setBalance(BigDecimal balance)\n"
+"    {\n"
+"        this.balance = balance;\n"
+"    }\n"
+"    \n"
+"    @ReadOnly\n"
+"    public BigDecimal getBalance()\n"
+"    {\n"
+"        return balance;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:539
+#, no-c-format
+msgid ""
+"For session or conversation scoped entity bean components, Seam "
+"automatically forces replication to occur by calling <literal>setAttribute()"
+"</literal> once in every request, <emphasis>unless the (conversation-scoped) "
+"entity is currently associated with a Seam-managed persistence context, in "
+"which case no replication is needed</emphasis>. This strategy is not "
+"necessarily efficient, so session or conversation scope entity beans should "
+"be used with care. You can always write a stateful session bean or JavaBean "
+"component to \"manage\" the entity bean instance. For example,"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:542
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"account\")\n"
+"public class AccountManager extends AbstractMutable\n"
+"{\n"
+"    private Account account; // an entity bean\n"
+"    \n"
+"    @Unwrap\n"
+"    public void getAccount()\n"
+"    {\n"
+"        return account;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:543
+#, no-c-format
+msgid ""
+"Note that the <literal>EntityHome</literal> class in the Seam Application "
+"Framework provides a great example of this pattern."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:546
+#, no-c-format
+msgid "Factory and manager components"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:547
+#, no-c-format
+msgid ""
+"We often need to work with objects that are not Seam components. But we "
+"still want to be able to inject them into our components using <literal>@In</"
+"literal> and use them in value and method binding expressions, etc. "
+"Sometimes, we even need to tie them into the Seam context lifecycle "
+"(<literal>@Destroy</literal>, for example). So the Seam contexts can contain "
+"objects which are not Seam components, and Seam provides a couple of nice "
+"features that make it easier to work with non-component objects bound to "
+"contexts."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:550
+#, no-c-format
+msgid ""
+"The <emphasis>factory component pattern</emphasis> lets a Seam component act "
+"as the instantiator for a non-component object. A <emphasis>factory method</"
+"emphasis> will be called when a context variable is referenced but has no "
+"value bound to it. We define factory methods using the <literal>@Factory</"
+"literal> annotation. The factory method binds a value to the context "
+"variable, and determines the scope of the bound value. There are two styles "
+"of factory method. The first style returns a value, which is bound to the "
+"context by Seam:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:553
+#, no-c-format
+msgid ""
+"@Factory(scope=CONVERSATION)\n"
+"public List&lt;Customer&gt; getCustomerList() { \n"
+"    return ... ;\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:554
+#, no-c-format
+msgid ""
+"The second style is a method of type <literal>void</literal> which binds the "
+"value to the context variable itself:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:557
+#, no-c-format
+msgid ""
+"@DataModel List&lt;Customer&gt; customerList;\n"
+"\n"
+"@Factory(\"customerList\")\n"
+"public void initCustomerList() { \n"
+"    customerList = ...  ;\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:558
+#, no-c-format
+msgid ""
+"In both cases, the factory method is called when we reference the "
+"<literal>customerList</literal> context variable and its value is null, and "
+"then has no further part to play in the lifecycle of the value. An even more "
+"powerful pattern is the <emphasis>manager component pattern</emphasis>. In "
+"this case, we have a Seam component that is bound to a context variable, "
+"that manages the value of the context variable, while remaining invisible to "
+"clients."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:561
+#, no-c-format
+msgid ""
+"A manager component is any component with an <literal>@Unwrap</literal> "
+"method. This method returns the value that will be visable to clients, and "
+"is called <emphasis>every time</emphasis> a context variable is referenced."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:564
+#, no-c-format
+msgid ""
+"@Name(\"customerList\")\n"
+"@Scope(CONVERSATION)\n"
+"public class CustomerListManager\n"
+"{\n"
+"    ...\n"
+"    \n"
+"    @Unwrap\n"
+"    public List&lt;Customer&gt; getCustomerList() { \n"
+"        return ... ;\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:565
+#, no-c-format
+msgid ""
+"This pattern is especially useful if we have some heavyweight object that "
+"needs a cleanup operation when the context ends. In this case, the manager "
+"component may perform cleanup in the <literal>@Destroy</literal> method."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Configuration.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Configuration.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Configuration.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1435 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Configuration.xml:10
+#, no-c-format
+msgid "Configuring Seam and packaging Seam applications"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:11
+#, no-c-format
+msgid ""
+"Configuration is a very boring topic and an extremely tedious pastime. "
+"Unfortunately, several lines of XML are required to integrate Seam into your "
+"JSF implementation and servlet container. There's no need to be too put off "
+"by the following sections; you'll never need to type any of this stuff "
+"yourself, since you can just copy and paste from the example applications!"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:14
+#, no-c-format
+msgid "Basic Seam configuration"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:15
+#, no-c-format
+msgid ""
+"First, let's look at the basic configuration that is needed whenever we use "
+"Seam with JSF."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:18
+#, no-c-format
+msgid "Integrating Seam with JSF and your servlet container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:19
+#, no-c-format
+msgid ""
+"Seam requires the following entry in your <literal>web.xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:22
+#, no-c-format
+msgid ""
+"&lt;listener&gt;\n"
+"    &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/listener-"
+"class&gt;\n"
+"&lt;/listener&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:23
+#, no-c-format
+msgid ""
+"This listener is responsible for bootstrapping Seam, and for destroying "
+"session and application contexts."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:26
+#, no-c-format
+msgid ""
+"To integrate with the JSF request lifecycle, we also need a JSF "
+"<literal>PhaseListener</literal> registered in in the <literal>faces-config."
+"xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:29
+#, no-c-format
+msgid ""
+"&lt;lifecycle&gt;\n"
+"    &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-"
+"listener&gt;\n"
+"&lt;/lifecycle&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:30
+#, no-c-format
+msgid ""
+"The actual listener class here varies depending upon how you want to manage "
+"transaction demarcation (more on this below)."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:33
+#, no-c-format
+msgid ""
+"If you are using Sun's JSF 1.2 reference implementation, you should also add "
+"this to <literal>faces-config.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:36
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;el-resolver&gt;org.jboss.seam.jsf.SeamELResolver&lt;/el-"
+"resolver&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:37
+#, no-c-format
+msgid ""
+"(This line should not strictly speaking be necessary, but it works around a "
+"minor bug in the RI.)"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:40
+#, no-c-format
+msgid ""
+"Some JSF implementations have a broken implementation of server-side state "
+"saving that interferes with Seam's conversation propagation. If you have "
+"problems with conversation propagation during form submissions, try "
+"switching to client-side state saving. You'll need this in <literal>web.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:43
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;client&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:44
+#, no-c-format
+msgid "Seam servlet filters"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:45
+#, no-c-format
+msgid ""
+"Seam doesn't need any servlet filters for basic operation. However, there "
+"are several features which depend upon the use of filters. To make things "
+"easier for you guys, Seam lets you add and configure servlet filters just "
+"like you would configure other built-in Seam components. To take advantage "
+"of this feature, we must first install a master filter in <literal>web.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:48
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;/*&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:49
+#, no-c-format
+msgid "Adding the master filter enables the following built-in filters."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:52
+#, no-c-format
+msgid "Exception handling"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:53
+#, no-c-format
+msgid ""
+"This filter provides the exception mapping functionality in <literal>pages."
+"xml</literal> (almost all applications will need this). It also takes care "
+"of rolling back uncommitted transactions when uncaught exceptions occur. "
+"(According to the Java EE specification, the web container should do this "
+"automatically, but we've found that this behavior cannot be relied upon in "
+"all application servers. And it is certainly not required of plain servlet "
+"engines like Tomcat.)"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:56
+#, no-c-format
+msgid ""
+"By default, the exception handling filter will process all requests, however "
+"this behavior may be adjusted by adding a <literal>&lt;web:exception-"
+"filter&gt;</literal> entry to <literal>components.xml</literal>, as shown in "
+"this example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:59
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:web=\"http://jboss.com/products/seam/web\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                    http://jboss.com/products/seam/core-1.2.xsd\n"
+"                 http://jboss.com/products/seam/components \n"
+"                     http://jboss.com/products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/web \n"
+"                     http://jboss.com/products/seam/web-1.2.xsd\"&gt;\n"
+"\n"
+"    &lt;web:exception-filter url-pattern=\"*.seam\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:62 Configuration.xml:77 Configuration.xml:99
+#: Configuration.xml:124
+#, no-c-format
+msgid ""
+"<literal>url-pattern</literal> &mdash; Used to specify which requests are "
+"filtered, the default is all requests."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:67
+#, no-c-format
+msgid "Conversation propagation with redirects"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:68
+#, no-c-format
+msgid ""
+"This filter allows Seam to propagate the conversation context across browser "
+"redirects. It intercepts any browser redirects and adds a request parameter "
+"that specifies the Seam conversation identifier."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:71
+#, no-c-format
+msgid ""
+"The redirect filter will process all requests by default, but this behavior "
+"can also be adjusted in <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:74
+#, no-c-format
+msgid "&lt;web:redirect-filter url-pattern=\"*.seam\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:82
+#, no-c-format
+msgid "Multipart form submissions"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:83
+#, no-c-format
+msgid ""
+"This feature is necessary when using the Seam file upload JSF control. It "
+"detects multipart form requests and processes them according to the "
+"multipart/form-data specification (RFC-2388). To override the default "
+"settings, add the following entry to <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:86
+#, no-c-format
+msgid ""
+"&lt;web:multipart-filter create-temp-files=\"true\" \n"
+"        max-request-size=\"1000000\" \n"
+"        url-pattern=\"*.seam\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:89
+#, no-c-format
+msgid ""
+"<literal>create-temp-files</literal> &mdash; If set to <literal>true</"
+"literal>, uploaded files are written to a temporary file (instead of held in "
+"memory). This may be an important consideration if large file uploads are "
+"expected. The default setting is <literal>false</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:94
+#, no-c-format
+msgid ""
+"<literal>max-request-size</literal> &mdash; If the size of a file upload "
+"request (determined by reading the <literal>Content-Length</literal> header "
+"in the request) exceeds this value, the request will be aborted. The default "
+"setting is 0 (no size limit)."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:104
+#, no-c-format
+msgid "Character encoding"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:105
+#, no-c-format
+msgid "Sets the character encoding of submitted form data."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:108 Configuration.xml:136
+#, no-c-format
+msgid ""
+"This filter is not installed by default and requires an entry in "
+"<literal>components.xml</literal> to enable it:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:111
+#, no-c-format
+msgid ""
+"&lt;web:character-encoding-filter encoding=\"UTF-16\" \n"
+"        override-client=\"true\" \n"
+"        url-pattern=\"*.seam\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:114
+#, no-c-format
+msgid "<literal>encoding</literal> &mdash; The encoding to use."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:119
+#, no-c-format
+msgid ""
+"<literal>override-client</literal> &mdash; If this is set to <literal>true</"
+"literal>, the request encoding will be set to whatever is specified by "
+"<literal>encoding</literal> no matter whether the request already specifies "
+"an encoding or not. If set to <literal>false</literal>, the request encoding "
+"will only be set if the request doesn't already specify an encoding. The "
+"default setting is <literal>false</literal>."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:129
+#, no-c-format
+msgid "Context management for custom servlets"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:130
+#, no-c-format
+msgid ""
+"Requests sent direct to some servlet other than the JSF servlet are not "
+"processed through the JSF lifecycle, so Seam provides a servlet filter that "
+"can be applied to any other servlet that needs access to Seam components."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:133
+#, no-c-format
+msgid ""
+"This filter allows custom servlets to interact with the Seam contexts. It "
+"sets up the Seam contexts at the beginning of each request, and tears them "
+"down at the end of the request. You should make sure that this filter is "
+"<emphasis>never</emphasis> applied to the JSF <literal>FacesServlet</"
+"literal>. Seam uses the phase listener for context management in a JSF "
+"request."
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:139
+#, no-c-format
+msgid "&lt;web:context-filter url-pattern=\"/media/*\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:142
+#, no-c-format
+msgid ""
+"<literal>url-pattern</literal> &mdash; Used to specify which requests are "
+"filtered, the default is all requests. If the url-pattern is specified for "
+"the context filter, then the filter will be enabled (unless explicitly "
+"disabled)."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:147
+#, no-c-format
+msgid ""
+"The context filter expects to find the conversation id of any conversation "
+"context in a request parameter named <literal>conversationId</literal>. You "
+"are responsible for ensuring that it gets sent in the request."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:150
+#, no-c-format
+msgid ""
+"You are also responsible for ensuring propagation of any new conversation id "
+"back to the client. Seam exposes the conversation id as a property of the "
+"built in component <literal>conversation</literal>."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:153
+#, no-c-format
+msgid "Integrating Seam with your EJB container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:154
+#, no-c-format
+msgid ""
+"We need to apply the <literal>SeamInterceptor</literal> to our Seam "
+"components. The simplest way to do this is to add the following interceptor "
+"binding to the <literal>&lt;assembly-descriptor&gt;</literal> in "
+"<literal>ejb-jar.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:157
+#, no-c-format
+msgid ""
+"&lt;interceptor-binding&gt;\n"
+"    &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"    &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"&lt;/interceptor-binding&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:158
+#, no-c-format
+msgid ""
+"Seam needs to know where to go to find session beans in JNDI. One way to do "
+"this is specify the <literal>@JndiName</literal> annotation on every session "
+"bean Seam component. However, this is quite tedious. A better approach is to "
+"specify a pattern that Seam can use to calculate the JNDI name from the EJB "
+"name. Unfortunately, there is no standard mapping to global JNDI defined in "
+"the EJB3 specification, so this mapping is vendor-specific. We usually "
+"specify this option in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:161
+#, no-c-format
+msgid "For JBoss AS, the following pattern is correct:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:164
+#, no-c-format
+msgid "&lt;core:init jndi-name=\"myEarName/#{ejbName}/local\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:165
+#, no-c-format
+msgid ""
+"Where <literal>myEarName</literal> is the name of the EAR in which the bean "
+"is deployed."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:168
+#, no-c-format
+msgid ""
+"Outside the context of an EAR (when using the JBoss Embeddable EJB3 "
+"container), the following pattern is the one to use:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:171
+#, no-c-format
+msgid "&lt;core:init jndi-name=\"#{ejbName}/local\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:172
+#, no-c-format
+msgid ""
+"You'll have to experiment to find the right setting for other application "
+"servers. Note that some servers (such as GlassFish) require you to specify "
+"JNDI names for all EJB components explicitly (and tediously). In this case, "
+"you can pick your own pattern ;-)"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:175
+#, no-c-format
+msgid "Using facelets"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:176
+#, no-c-format
+msgid ""
+"If you want follow our advice and use facelets instead of JSP, add the "
+"following lines to <literal>faces-config.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:179
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;view-handler&gt;com.sun.facelets.FaceletViewHandler&lt;/view-"
+"handler&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:180
+#, no-c-format
+msgid "And the following lines to <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:183
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;javax.faces.DEFAULT_SUFFIX&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;.xhtml&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:184
+#, no-c-format
+msgid "Don't forget!"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:185
+#, no-c-format
+msgid ""
+"There is one final item you need to know about. You must place a "
+"<literal>seam.properties</literal>, <literal>META-INF/seam.properties</"
+"literal> or <literal>META-INF/components.xml</literal> file in any archive "
+"in which your Seam components are deployed (even an empty properties file "
+"will do). At startup, Seam will scan any archives with <literal>seam."
+"properties</literal> files for seam components."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:188
+#, no-c-format
+msgid ""
+"That's why all the Seam examples have an empty <literal>seam.properties</"
+"literal> file. You can't just delete this file and expect everything to "
+"still work!"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:191
+#, no-c-format
+msgid ""
+"You might think this is silly and what kind of idiot framework designers "
+"would make an empty file affect the behavior of their software?? Well, this "
+"is a workaround for a limitation of the JVM&mdash;if we didn't use this "
+"mechanism, our next best option would be to force you to list every "
+"component explicitly in <literal>components.xml</literal>, just like some "
+"other competing frameworks do! I think you'll like our way better."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:195
+#, no-c-format
+msgid "Configuring Seam in Java EE 5"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:204
+#, no-c-format
+msgid ""
+"If you're running in a Java EE 5 environment, this is all the configuration "
+"required to start using Seam!"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:207 Configuration.xml:270 Configuration.xml:318
+#: Configuration.xml:354 Configuration.xml:371
+#, no-c-format
+msgid "Packaging"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:208
+#, no-c-format
+msgid ""
+"Once you've packaged all this stuff together into an EAR, the archive "
+"structure will look something like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:211
+#, no-c-format
+msgid ""
+"my-application.ear/\n"
+"    jboss-seam.jar\n"
+"    el-api.jar\n"
+"    el-ri.jar\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"        application.xml\n"
+"    my-application.war/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"        WEB-INF/\n"
+"            web.xml\n"
+"            components.xml\n"
+"            faces-config.xml\n"
+"            lib/\n"
+"                jsf-facelets.jar\n"
+"                jboss-seam-ui.jar\n"
+"        login.jsp\n"
+"        register.jsp\n"
+"        ...\n"
+"    my-application.jar/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"            persistence.xml\n"
+"        seam.properties\n"
+"        org/\n"
+"            jboss/\n"
+"                myapplication/\n"
+"                    User.class\n"
+"                    Login.class\n"
+"                    LoginBean.class\n"
+"                    Register.class\n"
+"                    RegisterBean.class\n"
+"                    ..."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:212
+#, no-c-format
+msgid ""
+"You must include <literal>jboss-seam.jar</literal>, <literal>el-api.jar</"
+"literal> and <literal>el-ri.jar</literal> in the EAR classpath. Make sure "
+"you reference all of these jars from <literal>application.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:215
+#, no-c-format
+msgid ""
+"If you want to use jBPM or Drools, you must include the needed jars in the "
+"EAR classpath. Make sure you reference all of the jars from "
+"<literal>application.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:218
+#, no-c-format
+msgid ""
+"If you want to use facelets (our recommendation), you must include "
+"<literal>jsf-facelets.jar</literal> in the <literal>WEB-INF/lib</literal> "
+"directory of the WAR."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:221
+#, no-c-format
+msgid ""
+"If you want to use the Seam tag library (most Seam applications do), you "
+"must include <literal>jboss-seam-ui.jar</literal> in the <literal>WEB-INF/"
+"lib</literal> directory of the WAR. If you want to use the PDF or email tag "
+"libraries, you need to put <literal>jboss-seam-pdf.jar</literal> or "
+"<literal>jboss-seam-mail.jar</literal> in <literal>WEB-INF/lib</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:224
+#, no-c-format
+msgid ""
+"If you want to use the Seam debug page (only works for applications using "
+"facelets), you must include <literal>jboss-seam-debug.jar</literal> in the "
+"<literal>WEB-INF/lib</literal> directory of the WAR."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:227
+#, no-c-format
+msgid ""
+"Seam ships with several example applications that are deployable in any Java "
+"EE container that supports EJB 3.0."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:231
+#, no-c-format
+msgid "Configuring Seam in Java SE, with the JBoss Embeddable EJB3 container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:232
+#, no-c-format
+msgid ""
+"The JBoss Embeddable EJB3 container lets you run EJB3 components outside the "
+"context of the Java EE 5 application server. This is especially, but not "
+"only, useful for testing."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:235
+#, no-c-format
+msgid ""
+"The Seam booking example application includes a TestNG integration test "
+"suite that runs on the Embeddable EJB3 container."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:246
+#, no-c-format
+msgid "The booking example application may even be deployed to Tomcat."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:257
+#, no-c-format
+msgid "Installing the Embeddable EJB3 container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:258
+#, no-c-format
+msgid ""
+"Seam ships with a build of the Embeddable EJB3 container in the "
+"<literal>embedded-ejb</literal> directory. To use the Embeddable EJB3 "
+"container with Seam, add the <literal>embedded-ejb/conf</literal> directory, "
+"and all jars in the <literal>lib</literal> and <literal>embedded-ejb/lib</"
+"literal> directories to your classpath. Then, add the following line to "
+"<literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:261
+#, no-c-format
+msgid "&lt;core:ejb /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:262
+#, no-c-format
+msgid ""
+"This setting installs the built-in component named <literal>org.jboss.seam."
+"core.ejb</literal>. This component is responsible for bootstrapping the EJB "
+"container when Seam is started, and shutting it down when the web "
+"application is undeployed."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:265
+#, no-c-format
+msgid "Configuring a datasource with the Embeddable EJB3 container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:266
+#, no-c-format
+msgid ""
+"You should refer to the Embeddable EJB3 container documentation for more "
+"information about configuring the container. You'll probably at least need "
+"to set up your own datasource. Embeddable EJB3 is implemented using the "
+"JBoss Microcontainer, so it's very easy to add new services to the minimal "
+"set of services provided by default. For example, I can add a new datasource "
+"by putting this <literal>jboss-beans.xml</literal> file in my classpath:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:269
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"\n"
+"&lt;deployment xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"urn:jboss:bean-deployer bean-deployer_1_0."
+"xsd\"\n"
+"            xmlns=\"urn:jboss:bean-deployer\"&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasourceBootstrap\"\n"
+"        class=\"org.jboss.resource.adapter.jdbc.local.LocalTxDataSource"
+"\"&gt;\n"
+"      &lt;property name=\"driverClass\"&gt;org.hsqldb.jdbcDriver&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"connectionURL\"&gt;jdbc:hsqldb:.&lt;/property&gt;\n"
+"      &lt;property name=\"userName\"&gt;sa&lt;/property&gt;\n"
+"      &lt;property name=\"jndiName\"&gt;java:/bookingDatasource&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"minSize\"&gt;0&lt;/property&gt;\n"
+"      &lt;property name=\"maxSize\"&gt;10&lt;/property&gt;\n"
+"      &lt;property name=\"blockingTimeout\"&gt;1000&lt;/property&gt;\n"
+"      &lt;property name=\"idleTimeout\"&gt;100000&lt;/property&gt;\n"
+"      &lt;property name=\"transactionManager\"&gt;\n"
+"        &lt;inject bean=\"TransactionManager\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"      &lt;property name=\"cachedConnectionManager\"&gt;\n"
+"        &lt;inject bean=\"CachedConnectionManager\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"      &lt;property name=\"initialContextProperties\"&gt;\n"
+"        &lt;inject bean=\"InitialContextProperties\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasource\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getDatasource\"&gt;\n"
+"         &lt;factory bean=\"bookingDatasourceBootstrap\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"&lt;/deployment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:271
+#, no-c-format
+msgid ""
+"The archive structure of a WAR-based deployment on an servlet engine like "
+"Tomcat will look something like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:274
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            myfaces-api.jar\n"
+"            myfaces-impl.jar\n"
+"            jboss-ejb3.jar\n"
+"            jboss-jca.jar\n"
+"            jboss-j2ee.jar\n"
+"            ...\n"
+"            mc-conf.jar/\n"
+"                ejb3-interceptors-aop.xml\n"
+"                embedded-jboss-beans.xml\n"
+"                default.persistence.properties\n"
+"                jndi.properties\n"
+"                login-config.xml\n"
+"                security-beans.xml\n"
+"                log4j.xml\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                    MANIFEST.MF\n"
+"                    persistence.xml\n"
+"                    jboss-beans.xml\n"
+"                log4j.xml\n"
+"                seam.properties\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            LoginBean.class\n"
+"                            Register.class\n"
+"                            RegisterBean.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:275
+#, no-c-format
+msgid ""
+"The <literal>mc-conf.jar</literal> just contains the standard JBoss "
+"Microcontainer configuration files for Embeddable EJB3. You won't usually "
+"need to edit these files yourself."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:278
+#, no-c-format
+msgid ""
+"Most of the Seam example applications may be deployed to Tomcat by running "
+"<literal>ant deploy.tomcat</literal>."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:281
+#, no-c-format
+msgid "Configuring Seam in J2EE"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:282
+#, no-c-format
+msgid ""
+"Seam is useful even if you're not yet ready to take the plunge into EJB 3.0. "
+"In this case you would use Hibernate3 or JPA instead of EJB 3.0 persistence, "
+"and plain JavaBeans instead of session beans. You'll miss out on some of the "
+"nice features of session beans but it will be very easy to migrate to EJB "
+"3.0 when you're ready and, in the meantime, you'll be able to take advantage "
+"of Seam's unique declarative state management architecture."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:293
+#, no-c-format
+msgid ""
+"Seam JavaBean components do not provide declarative transaction demarcation "
+"like session beans do. You <emphasis>could</emphasis> manage your "
+"transactions manually using the JTA <literal>UserTransaction</literal> (you "
+"could even implement your own declarative transaction management in a Seam "
+"interceptor). But most applications will use Seam managed transactions when "
+"using Hibernate with JavaBeans. Follow the instructions in the persistence "
+"chapter to install <literal>TransactionalSeamPhaseListener</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:296
+#, no-c-format
+msgid ""
+"The Seam distribution includes a version of the booking example application "
+"that uses Hibernate3 and JavaBeans instead of EJB3, and another version that "
+"uses JPA and JavaBeans. These example applications are ready to deploy into "
+"any J2EE application server."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:299
+#, no-c-format
+msgid ""
+"If we want to deploy Hibernate in a non-J2EE environment like Tomcat or "
+"TestNG, we need to do a little bit more work."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:302
+#, no-c-format
+msgid "Boostrapping Hibernate in Seam"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:303
+#, no-c-format
+msgid ""
+"Seam will bootstrap a Hibernate <literal>SessionFactory</literal> from your "
+"<literal>hibernate.cfg.xml</literal> file if you install a built-in "
+"component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:306
+#, no-c-format
+msgid ""
+"&lt;core:hibernate-session-factory name=\"hibernateSessionFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:307
+#, no-c-format
+msgid ""
+"You will also need to configure a <emphasis>managed session</emphasis> if "
+"you want a Seam managed Hibernate <literal>Session</literal> to be available "
+"via injection."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:310
+#, no-c-format
+msgid "Boostrapping JPA in Seam"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:311
+#, no-c-format
+msgid ""
+"Seam will bootstrap a JPA <literal>EntityManagerFactory</literal> from your "
+"<literal>persistence.xml</literal> file if you install this built-in "
+"component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:314
+#, no-c-format
+msgid "&lt;core:entity-manager-factory name=\"entityManagerFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:315
+#, no-c-format
+msgid ""
+"You will also need to configure a <emphasis>managed persistencece context</"
+"emphasis> if you want a Seam managed JPA <literal>EntityManager</literal> to "
+"be available via injection."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:319
+#, no-c-format
+msgid "We can package our application as a WAR, in the following structure:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:322
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            hibernate3.jar\n"
+"            hibernate-annotations.jar\n"
+"            ...\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                   MANIFEST.MF\n"
+"                seam.properties\n"
+"                hibernate.cfg.xml\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            Register.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:324
+#, no-c-format
+msgid "Configuring Seam in Java SE, with the JBoss Microcontainer"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:325
+#, no-c-format
+msgid ""
+"The Seam support for Hibernate and JPA requires JTA and a JCA datasource. If "
+"you are running in a non-EE environment like Tomcat or TestNG you can run "
+"these services, and Hibernate itself, in the JBoss Microcontainer."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:328
+#, no-c-format
+msgid ""
+"You can even deploy the Hibernate and JPA versions of the booking example in "
+"Tomcat."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:339
+#, no-c-format
+msgid ""
+"Seam ships with an example Microcontainer configuration in "
+"<literal>microcontainer/conf/jboss-beans.xml</literal> that provides all the "
+"things you need to run Seam with Hibernate in any non-EE environment. Just "
+"add the <literal>microcontainer/conf</literal> directory, and all jars in "
+"the <literal>lib</literal> and <literal>microcontainer/lib</literal> "
+"directories to your classpath. Refer to the documentation for the JBoss "
+"Microcontainer for more information."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:342
+#, no-c-format
+msgid "Using Hibernate and the JBoss Microcontainer"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:343
+#, no-c-format
+msgid ""
+"The built-in Seam component named <literal>org.jboss.seam.core."
+"microcontainer</literal> bootstraps the microcontainer. As before, we "
+"probably want to use a Seam managed session."
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:346
+#, no-c-format
+msgid ""
+"&lt;core:microcontainer/&gt;\n"
+"\n"
+"&lt;core:managed-hibernate-session name=\"bookingDatabase\" auto-create="
+"\"true\"\n"
+"    session-factory-jndi-name=\"java:/bookingSessionFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:347
+#, no-c-format
+msgid ""
+"Where <literal>java:/bookingSessionFactory</literal> is the name of the "
+"Hibernate session factory specified in <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:350
+#, no-c-format
+msgid ""
+"You'll need to provide a <literal>jboss.beans.xml</literal> file that "
+"installs JNDI, JTA, your JCA datasource and Hibernate into the "
+"microcontainer:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:353
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"\n"
+"&lt;deployment xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"urn:jboss:bean-deployer bean-deployer_1_0."
+"xsd\"\n"
+"            xmlns=\"urn:jboss:bean-deployer\"&gt;\n"
+"\n"
+"   &lt;bean name=\"Naming\" class=\"org.jnp.server.SingletonNamingServer\"/"
+"&gt;\n"
+"\n"
+"   &lt;bean name=\"TransactionManagerFactory\"\n"
+"       class=\"org.jboss.seam.microcontainer.TransactionManagerFactory\"/"
+"&gt;\n"
+"   &lt;bean name=\"TransactionManager\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getTransactionManager\"&gt;\n"
+"         &lt;factory bean=\"TransactionManagerFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasourceFactory\" class=\"org.jboss.seam."
+"microcontainer.DataSourceFactory\"&gt;\n"
+"      &lt;property name=\"driverClass\"&gt;org.hsqldb.jdbcDriver&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"connectionUrl\"&gt;jdbc:hsqldb:.&lt;/property&gt;\n"
+"      &lt;property name=\"userName\"&gt;sa&lt;/property&gt;\n"
+"      &lt;property name=\"jndiName\"&gt;java:/hibernateDatasource&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"minSize\"&gt;0&lt;/property&gt;\n"
+"      &lt;property name=\"maxSize\"&gt;10&lt;/property&gt;\n"
+"      &lt;property name=\"blockingTimeout\"&gt;1000&lt;/property&gt;\n"
+"      &lt;property name=\"idleTimeout\"&gt;100000&lt;/property&gt;\n"
+"      &lt;property name=\"transactionManager\"&gt;&lt;inject bean="
+"\"TransactionManager\"/&gt;&lt;/property&gt;\n"
+"   &lt;/bean&gt;\n"
+"   &lt;bean name=\"bookingDatasource\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getDataSource\"&gt;\n"
+"         &lt;factory bean=\"bookingDatasourceFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingSessionFactoryFactory\"\n"
+"       class=\"org.jboss.seam.microcontainer.HibernateFactory\"/&gt;\n"
+"   &lt;bean name=\"bookingSessionFactory\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getSessionFactory\"&gt;\n"
+"         &lt;factory bean=\"bookingSessionFactoryFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"      &lt;depends&gt;bookingDatasource&lt;/depends&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"&lt;/deployment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:355
+#, no-c-format
+msgid "The WAR could have the following structure:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:358
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            hibernate3.jar\n"
+"            ...\n"
+"            jboss-microcontainer.jar\n"
+"            jboss-jca.jar\n"
+"            ...\n"
+"            myfaces-api.jar\n"
+"            myfaces-impl.jar\n"
+"            mc-conf.jar/\n"
+"                jndi.properties\n"
+"                log4j.xml\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                    MANIFEST.MF\n"
+"                    jboss-beans.xml\n"
+"                seam.properties\n"
+"                hibernate.cfg.xml\n"
+"                log4j.xml\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            Register.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:359
+#, no-c-format
+msgid "Configuring jBPM in Seam"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:360
+#, no-c-format
+msgid ""
+"Seam's jBPM integration is not installed by default, so you'll need to "
+"enable jBPM by installing a built-in component. You'll also need to "
+"explicitly list your process and pageflow definitions. In "
+"<literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:363
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:pageflow-definitions&gt;\n"
+"        &lt;value&gt;createDocument.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;editDocument.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;approveDocument.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:pageflow-definitions&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;documentLifecycle.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:364
+#, no-c-format
+msgid ""
+"No further special configuration is needed if you only have pageflows. If "
+"you do have business process definitions, you need to provide a jBPM "
+"configuration, and a Hibernate configuration for jBPM. The Seam DVD Store "
+"demo includes example <literal>jbpm.cfg.xml</literal> and <literal>hibernate."
+"cfg.xml</literal> files that will work with Seam:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:367
+#, no-c-format
+msgid ""
+"&lt;jbpm-configuration&gt;\n"
+"\n"
+"  &lt;jbpm-context&gt;\n"
+"    &lt;service name=\"persistence\"&gt;\n"
+"       &lt;factory&gt;\n"
+"          &lt;bean class=\"org.jbpm.persistence.db."
+"DbPersistenceServiceFactory\"&gt;\n"
+"             &lt;field name=\"isTransactionEnabled\"&gt;&lt;false/&gt;&lt;/"
+"field&gt;\n"
+"          &lt;/bean&gt;\n"
+"       &lt;/factory&gt;\n"
+"    &lt;/service&gt;\n"
+"    &lt;service name=\"message\" factory=\"org.jbpm.msg.db."
+"DbMessageServiceFactory\" /&gt;\n"
+"    &lt;service name=\"scheduler\" factory=\"org.jbpm.scheduler.db."
+"DbSchedulerServiceFactory\" /&gt;\n"
+"    &lt;service name=\"logging\" factory=\"org.jbpm.logging.db."
+"DbLoggingServiceFactory\" /&gt;\n"
+"    &lt;service name=\"authentication\" \n"
+"        factory=\"org.jbpm.security.authentication."
+"DefaultAuthenticationServiceFactory\" /&gt;\n"
+"  &lt;/jbpm-context&gt;\n"
+"\n"
+"&lt;/jbpm-configuration&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:368
+#, no-c-format
+msgid ""
+"The most important thing to notice here is that jBPM transaction control is "
+"disabled. Seam or EJB3 should control the JTA transactions."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:372
+#, no-c-format
+msgid ""
+"There is not yet any well-defined packaging format for jBPM configuration "
+"and process/pageflow definition files. In the Seam examples we've decided to "
+"simply package all these files into the root of the EAR. In future, we will "
+"probably design some other standard packaging format. So the EAR looks "
+"something like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:375
+#, no-c-format
+msgid ""
+"my-application.ear/\n"
+"    jboss-seam.jar\n"
+"    el-api.jar\n"
+"    el-ri.jar\n"
+"    jbpm-3.1.jar\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"        application.xml\n"
+"    my-application.war/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"        WEB-INF/\n"
+"            web.xml\n"
+"            components.xml\n"
+"            faces-config.xml\n"
+"            lib/\n"
+"                jsf-facelets.jar\n"
+"                jboss-seam-ui.jar\n"
+"        login.jsp\n"
+"        register.jsp\n"
+"        ...\n"
+"    my-application.jar/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"            persistence.xml\n"
+"        seam.properties\n"
+"        org/\n"
+"            jboss/\n"
+"                myapplication/\n"
+"                    User.class\n"
+"                    Login.class\n"
+"                    LoginBean.class\n"
+"                    Register.class\n"
+"                    RegisterBean.class\n"
+"                    ...\n"
+"    jbpm.cfg.xml\n"
+"    hibernate.cfg.xml\n"
+"    createDocument.jpdl.xml\n"
+"    editDocument.jpdl.xml\n"
+"    approveDocument.jpdl.xml\n"
+"    documentLifecycle.jpdl.xml"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:376
+#, no-c-format
+msgid ""
+"Remember to add <literal>jbpm-3.1.jar</literal> to the manifest of your EJB-"
+"JAR and WAR."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:379
+#, no-c-format
+msgid "Configuring Seam in a Portal"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:380
+#, no-c-format
+msgid ""
+"To run a Seam application as a portlet, you'll need to provide certain "
+"portlet metadata (<literal>portlet.xml</literal>, etc) in addition to the "
+"usual Java EE metadata. See the <literal>examples/portal</literal> directory "
+"for an example of the booking demo preconfigured to run on JBoss Portal."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:383
+#, no-c-format
+msgid ""
+"In addition, you'll need to use a portlet-specific phase listener instead of "
+"<literal>SeamPhaseListener</literal> or "
+"<literal>TransactionalSeamPhaseListener</literal>. The "
+"<literal>SeamPortletPhaseListener</literal> and "
+"<literal>TransactionalSeamPortletPhaseListener</literal> are adapted to the "
+"portlet lifecycle. I would like to offer my sincerest apologies for the name "
+"of that last class. I really couldn't think of anything better. Sorry."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Controls.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Controls.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Controls.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,591 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Controls.xml:10
+#, no-c-format
+msgid "Seam JSF controls"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:11
+#, no-c-format
+msgid ""
+"Seam includes a number of JSF controls that are useful for working with "
+"Seam. These are intended to complement the built-in JSF controls, and "
+"controls from other third-party libraries. We recommend the Ajax4JSF and ADF "
+"faces (now Trinidad) tag libraries for use with Seam. We do not recommend "
+"the use of the Tomahawk tag library."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:14
+#, no-c-format
+msgid "The ui example demonstrates the use of a number of these tags."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:19
+#, no-c-format
+msgid "&lt;s:validate&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:21
+#, no-c-format
+msgid ""
+"Validate a JSF input field against the bound property using Hibernate "
+"Validator."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:27
+#, no-c-format
+msgid "&lt;s:validateAll&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:29
+#, no-c-format
+msgid ""
+"Validate all child JSF input fields against the bound propertys using "
+"Hibernate Validator."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:35
+#, no-c-format
+msgid "&lt;s:formattedText&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:37
+#, no-c-format
+msgid "Output <emphasis>Seam Text</emphasis>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:43
+#, no-c-format
+msgid "&lt;s:convertDateTime&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:45
+#, no-c-format
+msgid "Perform date or time conversions in the Seam timezone."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:51
+#, no-c-format
+msgid "&lt;s:convertEnum&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:53
+#, no-c-format
+msgid ""
+"Assigns an enum converter to the current component. This is primarily useful "
+"for radio button and dropdown controls."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:59
+#, no-c-format
+msgid "&lt;s:enumItem&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:61
+#, no-c-format
+msgid "Creates a <literal>SelectItem</literal> from an enum value."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:66
+#, no-c-format
+msgid ""
+"<literal>enumValue</literal> &mdash; the string representation of the enum "
+"value."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:71
+#, no-c-format
+msgid ""
+"<literal>label</literal> &mdash; the label to be used when rendering the "
+"<literal>SelectItem</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:79
+#, no-c-format
+msgid "&lt;s:selectItems&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:81
+#, no-c-format
+msgid ""
+"Creates a <literal>List&lt;SelectItem&gt;</literal> from a List, Set, "
+"DataModel or Array."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:86
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; an EL expression specifying the data that "
+"backs the <literal>List&lt;SelectItem&gt;</literal>"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:91
+#, no-c-format
+msgid ""
+"<literal>var</literal> &mdash; defines the name of the local variable that "
+"holds the current object during iteration"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:96
+#, no-c-format
+msgid ""
+"<literal>label</literal> &mdash; the label to be used when rendering the "
+"<literal>SelectItem</literal>. Can reference the <literal>var</literal> "
+"variable"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:101
+#, no-c-format
+msgid ""
+"<literal>disabled</literal> &mdash; if true the <literal>SelectItem</"
+"literal> will be rendered disabled. Can reference the <literal>var</literal> "
+"variable"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:106
+#, no-c-format
+msgid ""
+"<literal>noSelectionLabel</literal> &mdash; specifies the (optional) label "
+"to place at the top of list (if <literal>required=\"true\"</literal> is also "
+"specified then selecting this value will cause a validation error)"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:111
+#, no-c-format
+msgid ""
+"<literal>hideNoSelectionLabel</literal> &mdash; if true, the "
+"<literal>noSelectionLabel</literal> will be hidden when a value is selected"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:119
+#, no-c-format
+msgid "&lt;s:decorate&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:121
+#, no-c-format
+msgid "\"Decorate\" a JSF input field when validation fails."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:127
+#, no-c-format
+msgid "&lt;s:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:129
+#, no-c-format
+msgid "\"Decorate\" a JSF input field with the validation error message."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:135
+#, no-c-format
+msgid "&lt;s:span&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:137
+#, no-c-format
+msgid "Render a HTML <literal>&lt;span&gt;</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:143
+#, no-c-format
+msgid "&lt;s:div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:145
+#, no-c-format
+msgid "Render a HTML <literal>&lt;div&gt;</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:151
+#, no-c-format
+msgid "&lt;s:fragment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:153
+#, no-c-format
+msgid ""
+"A non-rendering component useful for enabling/disabling rendering of it's "
+"children"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:159
+#, no-c-format
+msgid "&lt;s:cache&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:161
+#, no-c-format
+msgid ""
+"Cache the rendered page fragment using JBoss Cache. Note that <literal>&lt;s:"
+"cache&gt;</literal> actually uses the instance of JBoss Cache managed by the "
+"built-in <literal>pojoCache</literal> component."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:166
+#, no-c-format
+msgid ""
+"<literal>key</literal> &mdash; the key to cache rendered content, often a "
+"value expression. For example, if we were caching a page fragment that "
+"displays a document, we might use <literal>key=\"Document-#{document.id}\"</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:171
+#, no-c-format
+msgid ""
+"<literal>enabled</literal> &mdash; a value expression that determines if the "
+"cache should be used."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:176
+#, no-c-format
+msgid ""
+"<literal>region</literal> &mdash; a JBoss Cache node to use (different nodes "
+"can have different expiry policies)."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:184
+#, no-c-format
+msgid "&lt;s:link&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:186
+#, no-c-format
+msgid ""
+"A link that supports invocation of an action with control over conversation "
+"propagation. <emphasis>Does not submit the form.</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:191 Controls.xml:236
+#, no-c-format
+msgid "<literal>value</literal> &mdash; the label."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:196 Controls.xml:241
+#, no-c-format
+msgid ""
+"<literal>action</literal> &mdash; a method binding that specified the action "
+"listener."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:201 Controls.xml:246
+#, no-c-format
+msgid "<literal>view</literal> &mdash; the JSF view id to link to."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:206 Controls.xml:251
+#, no-c-format
+msgid "<literal>fragment</literal> &mdash; the fragment identifier to link to."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:211 Controls.xml:256
+#, no-c-format
+msgid "<literal>disabled</literal> &mdash; is the link disabled?"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:216 Controls.xml:261 Controls.xml:301
+#, no-c-format
+msgid ""
+"<literal>propagation</literal> &mdash; determines the conversation "
+"propagation style: <literal>begin</literal>, <literal>join</literal>, "
+"<literal>nest</literal>, <literal>none</literal> or <literal>end</literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:221 Controls.xml:266 Controls.xml:306
+#, no-c-format
+msgid ""
+"<literal>pageflow</literal> &mdash; a pageflow definition to begin. (This is "
+"only useful when <literal>propagation=\"begin\"</literal> or "
+"<literal>propagation=\"join\"</literal>.)"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:229
+#, no-c-format
+msgid "&lt;s:button&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:231
+#, no-c-format
+msgid ""
+"A button that supports invocation of an action with control over "
+"conversation propagation. <emphasis>Does not submit the form.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:274
+#, no-c-format
+msgid "&lt;s:selectDate&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:276
+#, no-c-format
+msgid ""
+"Displays a dynamic date picker component that selects a date for the "
+"specified input field. The body of the <literal>selectDate</literal> element "
+"should contain HTML elements, such as text or an image, that prompt the user "
+"to click to display the date picker. The date picker can be styled using "
+"CSS. An example CSS file can be found in the Seam booking demo as "
+"<literal>date.css</literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:281
+#, no-c-format
+msgid ""
+"<literal>for</literal> &mdash; The id of the input field that the date "
+"picker will insert the selected date into."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:286
+#, no-c-format
+msgid ""
+"<literal>dateFormat</literal> &mdash; The date format string. This should "
+"match the date format of the input field."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:294
+#, no-c-format
+msgid "&lt;s:conversationPropagation&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:296
+#, no-c-format
+msgid ""
+"Customize the conversation propagation for a command link or button (or "
+"similar JSF control). <emphasis>Facelets only.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:314
+#, no-c-format
+msgid "&lt;s:conversationId&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:316
+#, no-c-format
+msgid ""
+"Add the conversation id to an output link (or similar JSF control). "
+"<emphasis>Facelets only.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:322
+#, no-c-format
+msgid "&lt;s:taskId&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:324
+#, no-c-format
+msgid ""
+"Add the task id to an output link (or similar JSF control), when the task is "
+"available via <literal>#{task}</literal>. <emphasis>Facelets only.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:330
+#, no-c-format
+msgid "&lt;s:fileUpload&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:332
+#, no-c-format
+msgid ""
+"Renders a file upload control. This control must be used within a form with "
+"an encoding type of <literal>multipart/form-data</literal>, i.e:"
+msgstr ""
+
+#. Tag: programlisting
+#: Controls.xml:335
+#, no-c-format
+msgid "&lt;h:form enctype=\"multipart/form-data\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:336
+#, no-c-format
+msgid ""
+"For multipart requests, the Seam Multipart servlet filter must also be "
+"configured in <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Controls.xml:339
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"      &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"      &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-"
+"class&gt;\n"
+"    &lt;/filter&gt;\n"
+"    \n"
+"    &lt;filter-mapping&gt;\n"
+"      &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"      &lt;url-pattern&gt;/*&lt;/url-pattern&gt;\n"
+"    &lt;/filter-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:340
+#, no-c-format
+msgid ""
+"The following configuration options for multipart requests may be configured "
+"in components.xml:"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:345
+#, no-c-format
+msgid ""
+"<literal>createTempFiles</literal> &mdash; if this option is set to true, "
+"uploaded files are streamed to a temporary file instead of in memory."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:350
+#, no-c-format
+msgid ""
+"<literal>maxRequestSize</literal> &mdash; the maximum size of a file upload "
+"request, in bytes."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:355
+#, no-c-format
+msgid "Here's an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Controls.xml:358
+#, no-c-format
+msgid ""
+"&lt;component class=\"org.jboss.seam.servlet.MultipartConfig\"&gt;\n"
+"        &lt;property name=\"createTempFiles\"&gt;true&lt;/property&gt;\n"
+"        &lt;property name=\"maxRequestSize\"&gt;1000000&lt;/property&gt;\n"
+"    &lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:359
+#, no-c-format
+msgid ""
+"And here's a list of the supported attributes for the <literal>fileUpload</"
+"literal> control:"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:364
+#, no-c-format
+msgid ""
+"<literal>data</literal> &mdash; this value binding receives the binary file "
+"data. The receiving field should be declared as a <literal>byte[]</literal> "
+"or <literal>InputStream</literal> (required)."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:369
+#, no-c-format
+msgid ""
+"<literal>contentType</literal> &mdash; this value binding receives the "
+"file's content type (optional)."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:374
+#, no-c-format
+msgid ""
+"<literal>fileName</literal> &mdash; this value binding receives the filename "
+"(optional)."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:379
+#, no-c-format
+msgid ""
+"<literal>accept</literal> &mdash; a comma-separated list of content types to "
+"accept, may not be supported by the browser. E.g. <literal>\"images/png,"
+"images/jpg\"</literal>, <literal>\"images/*\"</literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:384
+#, no-c-format
+msgid "<literal>style</literal> &mdash; The control's style"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:389
+#, no-c-format
+msgid "<literal>styleClass</literal> &mdash; The control's style class"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Conversations.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Conversations.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Conversations.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1248 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Conversations.xml:10
+#, no-c-format
+msgid "Conversations and workspace management"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:11
+#, no-c-format
+msgid "It's time to understand Seam's conversation model in more detail."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:14
+#, no-c-format
+msgid ""
+"Historically, the notion of a Seam \"conversation\" came about as a merger "
+"of three different ideas:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:19
+#, no-c-format
+msgid ""
+"The idea of a <emphasis>workspace</emphasis>, which I encountered in a "
+"project for the Victorian government in 2002. In this project I was forced "
+"to implement workspace management on top of Struts, an experience I pray "
+"never to repeat."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:24
+#, no-c-format
+msgid ""
+"The idea of an <emphasis>application transaction</emphasis> with optimistic "
+"semantics, and the realization that existing frameworks based around a "
+"stateless architecture could not provide effective management of extended "
+"persistence contexts. (The Hibernate team is truly fed up with copping the "
+"blame for <literal>LazyInitializationException</literal>s, which are not "
+"really Hibernate's fault, but rather the fault of the extremely limiting "
+"persistence context model supported by stateless architectures such as the "
+"Spring framework or the traditional <emphasis>stateless session facade</"
+"emphasis> (anti)pattern in J2EE.)"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:29
+#, no-c-format
+msgid "The idea of a workflow <emphasis>task</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:34
+#, no-c-format
+msgid ""
+"By unifying these ideas and providing deep support in the framework, we have "
+"a powerful construct that lets us build richer and more efficient "
+"applications with less code than before."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:38
+#, no-c-format
+msgid "Seam's conversation model"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:39
+#, no-c-format
+msgid ""
+"The examples we have seen so far make use of a very simple conversation "
+"model that follows these rules:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:44
+#, no-c-format
+msgid ""
+"There is always a conversation context active during the apply request "
+"values, process validations, update model values, invoke application and "
+"render response phases of the JSF request lifecycle."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:49
+#, no-c-format
+msgid ""
+"At the end of the restore view phase of the JSF request lifecycle, Seam "
+"attempts to restore any previous long-running conversation context. If none "
+"exists, Seam creates a new temporary conversation context."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:54
+#, no-c-format
+msgid ""
+"When an <literal>@Begin</literal> method is encountered, the temporary "
+"conversation context is promoted to a long running conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:59
+#, no-c-format
+msgid ""
+"When an <literal>@End</literal> method is encountered, any long-running "
+"conversation context is demoted to a temporary conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:64
+#, no-c-format
+msgid ""
+"At the end of the render response phase of the JSF request lifecycle, Seam "
+"stores the contents of a long running conversation context or destroys the "
+"contents of a temporary conversation context."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:69
+#, no-c-format
+msgid ""
+"Any faces request (a JSF postback) will propagate the conversation context. "
+"By default, non-faces requests (GET requests, for example) do not propagate "
+"the conversation context, but see below for more information on this."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:74
+#, no-c-format
+msgid ""
+"If the JSF request lifecycle is foreshortened by a redirect, Seam "
+"transparently stores and restores the current conversation context&mdash;"
+"unless the conversation was already ended via <literal>@End"
+"(beforeRedirect=true)</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:79
+#, no-c-format
+msgid ""
+"Seam transparently propagates the conversation context across JSF postbacks "
+"and redirects. If you don't do anything special, a <emphasis>non-faces "
+"request</emphasis> (a GET request for example) will not propagate the "
+"conversation context and will be processed in a new temporary conversation. "
+"This is usually - but not always - the desired behavior."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:82
+#, no-c-format
+msgid ""
+"If you want to propagate a Seam conversation across a non-faces request, you "
+"need to explicitly code the Seam <emphasis>conversation id</emphasis> as a "
+"request parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:85
+#, no-c-format
+msgid ""
+"&lt;a href=\"main.jsf?conversationId=#{conversation.id}\"&gt;Continue&lt;/"
+"a&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:86
+#, no-c-format
+msgid "Or, the more JSF-ish:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:89
+#, no-c-format
+msgid ""
+"&lt;h:outputLink value=\"main.jsf\"&gt;\n"
+"    &lt;f:param name=\"conversationId\" value=\"#{conversation.id}\"/&gt;\n"
+"    &lt;h:outputText value=\"Continue\"/&gt;\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:90 Conversations.xml:98
+#, no-c-format
+msgid "If you use the Seam tag library, this is equivalent:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:93
+#, no-c-format
+msgid ""
+"&lt;h:outputLink value=\"main.jsf\"&gt;\n"
+"    &lt;s:conversationId/&gt;\n"
+"    &lt;h:outputText value=\"Continue\"/&gt;\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:94
+#, no-c-format
+msgid ""
+"If you wish to disable propagation of the conversation context for a "
+"postback, a similar trick is used:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:97
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;f:param name=\"conversationPropagation\" value=\"none\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:101
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"none\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:102
+#, no-c-format
+msgid ""
+"Note that disabling conversation context propagation is absolutely not the "
+"same thing as ending the conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:105
+#, no-c-format
+msgid ""
+"The <literal>conversationPropagation</literal> request parameter, or the "
+"<literal>&lt;s:conversationPropagation&gt;</literal> tag may even be used to "
+"begin and end conversation, or begin a nested conversation."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:108
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"end\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:109
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Child\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"nested\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:110
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Hotel\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"begin\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:111
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Hotel\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"join\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:112
+#, no-c-format
+msgid ""
+"This conversation model makes it easy to build applications which behave "
+"correctly with respect to multi-window operation. For many applications, "
+"this is all that is needed. Some complex applications have either or both of "
+"the following additional requirements:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:117
+#, no-c-format
+msgid ""
+"A conversation spans many smaller units of user interaction, which execute "
+"serially or even concurrently. The smaller <emphasis>nested conversations</"
+"emphasis> have their own isolated set of conversation state, and also have "
+"access to the state of the outer conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:122
+#, no-c-format
+msgid ""
+"The user is able to switch between many conversations within the same "
+"browser window. This feature is called <emphasis>workspace management</"
+"emphasis>."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:130
+#, no-c-format
+msgid "Nested conversations"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:131
+#, no-c-format
+msgid ""
+"A nested conversation is created by invoking a method marked <literal>@Begin"
+"(nested=true)</literal> inside the scope of an existing conversation. A "
+"nested conversation has its own conversation context, and also has read-only "
+"access to the context of the outer conversation. (It can read the outer "
+"conversation's context variables, but not write to them.) When an "
+"<literal>@End</literal> is subsequently encountered, the nested conversation "
+"will be destroyed, and the outer conversation will resume, by \"popping\" "
+"the conversation stack. Conversations may be nested to any arbitrary depth."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:134
+#, no-c-format
+msgid ""
+"Certain user activity (workspace management, or the back button) can cause "
+"the outer conversation to be resumed before the inner conversation is ended. "
+"In this case it is possible to have multiple concurrent nested conversations "
+"belonging to the same outer conversation. If the outer conversation ends "
+"before a nested conversation ends, Seam destroys all nested conversation "
+"contexts along with the outer context."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:137
+#, no-c-format
+msgid ""
+"A conversation may be thought of as a <emphasis>continuable state</"
+"emphasis>. Nested conversations allow the application to capture a "
+"consistent continuable state at various points in a user interaction, thus "
+"insuring truly correct behavior in the face of backbuttoning and workspace "
+"management."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:140
+#, no-c-format
+msgid ""
+"TODO: an example to show how a nested conversation prevents bad stuff "
+"happening when you backbutton."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:143
+#, no-c-format
+msgid ""
+"Usually, if a component exists in a parent conversation of the current "
+"nested conversation, the nested conversation will use the same instance. "
+"Occasionally, it is useful to have a different instance in each nested "
+"conversation, so that the component instance that exists in the parent "
+"conversation is invisible to its child conversations. You can achieve this "
+"behavior by annotating the component <literal>@PerNestedConversation</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:149
+#, no-c-format
+msgid "Starting conversations with GET requests"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:150
+#, no-c-format
+msgid ""
+"JSF does not define any kind of action listener that is triggered when a "
+"page is accessed via a non-faces request (for example, a HTTP GET request). "
+"This can occur if the user bookmarks the page, or if we navigate to the page "
+"via an <literal>&lt;h:outputLink&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:153
+#, no-c-format
+msgid ""
+"Sometimes we want to begin a conversation immediately the page is accessed. "
+"Since there is no JSF action method, we can't solve the problem in the usual "
+"way, by annotating the action with <literal>@Begin</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:156
+#, no-c-format
+msgid ""
+"A further problem arises if the page needs some state to be fetched into a "
+"context variable. We've already seen two ways to solve this problem. If that "
+"state is held in a Seam component, we can fetch the state in a "
+"<literal>@Create</literal> method. If not, we can define a "
+"<literal>@Factory</literal> method for the context variable."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:159
+#, no-c-format
+msgid ""
+"If none of these options works for you, Seam lets you define a "
+"<emphasis>page action</emphasis> in the <literal>pages.xml</literal> file."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:162
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\" action=\"#{messageManager.list}\"/"
+"&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:163
+#, no-c-format
+msgid ""
+"This action method is called at the beginning of the render response phase, "
+"any time the page is about to be rendered. If a page action returns a non-"
+"null outcome, Seam will process any appropriate JSF and Seam navigation "
+"rules, possibly resulting in a completely different page being rendered."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:166
+#, no-c-format
+msgid ""
+"If <emphasis>all</emphasis> you want to do before rendering the page is "
+"begin a conversation, you could use a built-in action method that does just "
+"that:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:169
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\" action=\"#{conversation.begin}\"/"
+"&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:170
+#, no-c-format
+msgid ""
+"Note that you can also call this built-in action from a JSF control, and, "
+"similarly, you can use <literal>#{conversation.end}</literal> to end "
+"conversations."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:173
+#, no-c-format
+msgid ""
+"If you want more control, to join existing conversations or begin a nested "
+"conversion, to begin a pageflow or an atomic conversation, you should use "
+"the <literal>&lt;begin-conversation&gt;</literal> element."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:176
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\"&gt;\n"
+"       &lt;begin-conversation nested=\"true\" pageflow=\"AddItem\"/&gt;\n"
+"    &lt;page&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:177
+#, no-c-format
+msgid "There is also an <literal>&lt;end-conversation&gt;</literal> element."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:180
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/home.jsp\"&gt;\n"
+"       &lt;end-conversation/&gt;\n"
+"    &lt;page&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:181
+#, no-c-format
+msgid "To solve the first problem, we now have five options:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:186
+#, no-c-format
+msgid ""
+"Annotate the <literal>@Create</literal> method with <literal>@Begin</literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:191
+#, no-c-format
+msgid ""
+"Annotate the <literal>@Factory</literal> method with <literal>@Begin</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:196
+#, no-c-format
+msgid "Annotate the Seam page action method with <literal>@Begin</literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:201
+#, no-c-format
+msgid ""
+"Use <literal>&lt;begin-conversation&gt;</literal> in <literal>pages.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:206
+#, no-c-format
+msgid ""
+"Use <literal>#{conversation.begin}</literal> as the Seam page action method"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:214
+#, no-c-format
+msgid ""
+"Using <literal>&lt;s:link&gt;</literal> and <literal>&lt;s:button&gt;</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:215
+#, no-c-format
+msgid ""
+"JSF command links always perform a form submission via JavaScript, which "
+"breaks the web browser's \"open in new window\" or \"open in new tab\" "
+"feature. In plain JSF, you need to use an <literal>&lt;h:outputLink&gt;</"
+"literal> if you need this functionality. But there are two major limitations "
+"to <literal>&lt;h:outputLink&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:220
+#, no-c-format
+msgid ""
+"JSF provides no way to attach an action listener to an <literal>&lt;h:"
+"outputLink&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:225
+#, no-c-format
+msgid ""
+"JSF does not propagate the selected row of a <literal>DataModel</literal> "
+"since there is no actual form submission."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:230
+#, no-c-format
+msgid ""
+"Seam provides the notion of a <emphasis>page action</emphasis> to help solve "
+"the first problem, but this does nothing to help us with the second problem. "
+"We <emphasis>could</emphasis> work around this by using the RESTful approach "
+"of passing a request parameter and requerying for the selected object on the "
+"server side. In some cases&mdash;such as the Seam blog example "
+"application&mdash;this is indeed the best approach. The RESTful style "
+"supports bookmarking, since it does not require server-side state. In other "
+"cases, where we don't care about bookmarks, the use of <literal>@DataModel</"
+"literal> and <literal>@DataModelSelection</literal> is just so convenient "
+"and transparent!"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:233
+#, no-c-format
+msgid ""
+"To fill in this missing functionality, and to make conversation propagation "
+"even simpler to manage, Seam provides the <literal>&lt;s:link&gt;</literal> "
+"JSF tag."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:236
+#, no-c-format
+msgid "The link may specify just the JSF view id:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:239
+#, no-c-format
+msgid ""
+"&lt;s:link view=&#8220;/login.xhtml&#8221; value=&#8220;Login&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:240
+#, no-c-format
+msgid ""
+"Or, it may specify an action method (in which case the action outcome "
+"determines the page that results):"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:243
+#, no-c-format
+msgid ""
+"&lt;s:link action=&#8220;#{login.logout}&#8221; value=&#8220;Logout&#8221;/"
+"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:244
+#, no-c-format
+msgid ""
+"If you specify <emphasis>both</emphasis> a JSF view id and an action method, "
+"the 'view' will be used <emphasis>unless</emphasis> the action method "
+"returns a non-null outcome:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:247
+#, no-c-format
+msgid ""
+"&lt;s:link view=\"/loggedOut.xhtml\"  action=&#8220;#{login.logout}&#8221; "
+"value=&#8220;Logout&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:248
+#, no-c-format
+msgid ""
+"The link automatically propagates the selected row of a <literal>DataModel</"
+"literal> using inside <literal>&lt;h:dataTable&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:251
+#, no-c-format
+msgid ""
+"&lt;s:link view=&#8220;/hotel.xhtml&#8221; action=&#8220;#{hotelSearch."
+"selectHotel}&#8221; value=&#8220;#{hotel.name}&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:252
+#, no-c-format
+msgid "You can leave the scope of an existing conversation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:255
+#, no-c-format
+msgid ""
+"&lt;s:link view=&#8220;/main.xhtml&#8221; propagation=&#8220;none&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:256
+#, no-c-format
+msgid "You can begin, end, or nest conversations:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:259
+#, no-c-format
+msgid ""
+"&lt;s:link action=&#8220;#{issueEditor.viewComment}&#8221; "
+"propagation=&#8220;nest&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:260
+#, no-c-format
+msgid ""
+"If the link begins a conversation, you can even specify a pageflow to be "
+"used:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:263
+#, no-c-format
+msgid ""
+"&lt;s:link action=&#8220;#{documentEditor.getDocument}&#8221; "
+"propagation=&#8220;begin&#8221; \n"
+"        pageflow=&#8220;EditDocument&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:264
+#, no-c-format
+msgid ""
+"The <literal>taskInstance</literal> attribute if for use in jBPM task lists:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:267
+#, no-c-format
+msgid ""
+"&lt;s:link action=&#8220;#{documentApproval.approveOrReject}&#8221; "
+"taskInstance=&#8220;#{task}&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:268
+#, no-c-format
+msgid "(See the DVD Store demo application for examples of this.)"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:271
+#, no-c-format
+msgid ""
+"Finally, if you need the \"link\" to be rendered as a button, use "
+"<literal>&lt;s:button&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:274
+#, no-c-format
+msgid ""
+"&lt;s:button action=&#8220;#{login.logout}&#8221; value=&#8220;Logout&#8221;/"
+"&gt;"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:278
+#, no-c-format
+msgid "Success messages"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:279
+#, no-c-format
+msgid ""
+"It is quite common to display a message to the user indicating success or "
+"failure of an action. It is convenient to use a JSF <literal>FacesMessage</"
+"literal> for this. Unfortunately, a successful action often requires a "
+"browser redirect, and JSF does not propagate faces messages across "
+"redirects. This makes it quite difficult to display success messages in "
+"plain JSF."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:282
+#, no-c-format
+msgid ""
+"The built in conversation-scoped Seam component named "
+"<literal>facesMessages</literal> solves this problem. (You must have the "
+"Seam redirect filter installed.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:285
+#, no-c-format
+msgid ""
+"@Name(\"editDocumentAction\")\n"
+"@Stateless\n"
+"public class EditDocumentBean implements EditDocument {\n"
+"    @In EntityManager em;\n"
+"    @In Document document;\n"
+"    @In FacesMessages facesMessages;\n"
+"    \n"
+"    public String update() {\n"
+"        em.merge(document);\n"
+"        facesMessages.add(\"Document updated\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:286
+#, no-c-format
+msgid ""
+"Any message added to <literal>facesMessages</literal> is used in the very "
+"next render response phase for the current conversation. This even works "
+"when there is no long-running conversation since Seam preserves even "
+"temporary conversation contexts across redirects."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:289
+#, no-c-format
+msgid "You can even include JSF EL expressions in a faces message summary:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:292
+#, no-c-format
+msgid "facesMessages.add(\"Document #{document.title} was updated\");"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:293
+#, no-c-format
+msgid "You may display the messages in the usual way, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:296
+#, no-c-format
+msgid "&lt;h:messages globalOnly=\"true\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:300
+#, no-c-format
+msgid "Using an \"explicit\" conversation id"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:301
+#, no-c-format
+msgid ""
+"Ordinarily, Seam generates a meaningless unique id for each conversation in "
+"each session. You can customize the id value when you begin the conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:304
+#, no-c-format
+msgid ""
+"This feature can be used to customize the conversation id generation "
+"algorithm like so:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:307
+#, no-c-format
+msgid ""
+"@Begin(id=\"#{myConversationIdGenerator.nextId}\") \n"
+"public void editHotel() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:308
+#, no-c-format
+msgid "Or it can be used to assign a meaningful conversation id:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:311
+#, no-c-format
+msgid ""
+"@Begin(id=\"hotel#{hotel.id}\") \n"
+"public String editHotel() { ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:312
+#, no-c-format
+msgid ""
+"@Begin(id=\"hotel#{hotelsDataModel.rowData.id}\") \n"
+"public String selectHotel() { ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:313
+#, no-c-format
+msgid ""
+"@Begin(id=\"entry#{params['blogId']}\")\n"
+"public String viewBlogEntry() { ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:314
+#, no-c-format
+msgid ""
+"@BeginTask(id=\"task#{taskInstance.id}\") \n"
+"public String approveDocument() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:315
+#, no-c-format
+msgid ""
+"Clearly, these example result in the same conversation id every time a "
+"particular hotel, blog or task is selected. So what happens if a "
+"conversation with the same conversation id already exists when the new "
+"conversation begins? Well, Seam detects the existing conversation and "
+"redirects to that conversation without running the <literal>@Begin</literal> "
+"method again. This feature helps control the number of workspaces that are "
+"created when using workspace management."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:321
+#, no-c-format
+msgid "Workspace management"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:322
+#, no-c-format
+msgid ""
+"Workspace management is the ability to \"switch\" conversations in a single "
+"window. Seam makes workspace management completely transparent at the level "
+"of the Java code. To enable workspace management, all you need to do is:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:327
+#, no-c-format
+msgid ""
+"Provide <emphasis>description</emphasis> text for each view id (when using "
+"JSF or Seam navigation rules) or page node (when using jPDL pageflows). This "
+"description text is displayed to the user by the workspace switchers."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:332
+#, no-c-format
+msgid ""
+"Include one or more of the standard workspace switcher JSP or facelets "
+"fragments in your pages. The standard fragments support workspace management "
+"via a drop down menu, a list of conversations, or breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:335
+#, no-c-format
+msgid ""
+"Please refer to the Seam Issue Tracker demo to see all this functionality in "
+"action!"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:339
+#, no-c-format
+msgid "Workspace management and JSF navigation"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:340
+#, no-c-format
+msgid ""
+"When you use JSF or Seam navigation rules, Seam switches to a conversation "
+"by restoring the current <literal>view-id</literal> for that conversation. "
+"The descriptive text for the workspace is defined in a file called "
+"<literal>pages.xml</literal> that Seam expects to find in the <literal>WEB-"
+"INF</literal> directory, right next to <literal>faces-config.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:343
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/main.xhtml\"&gt;Search hotels: #{hotelBooking."
+"searchString}&lt;/page&gt;\n"
+"    &lt;page view-id=\"/hotel.xhtml\"&gt;View hotel: #{hotel.name}&lt;/"
+"page&gt;\n"
+"    &lt;page view-id=\"/book.xhtml\"&gt;Book hotel: #{hotel.name}&lt;/"
+"page&gt;\n"
+"    &lt;page view-id=\"/confirm.xhtml\"&gt;Confirm: #{booking.description}"
+"&lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:344
+#, no-c-format
+msgid ""
+"Note that if this file is missing, the Seam application will continue to "
+"work perfectly! The only missing functionality will be the ability to switch "
+"workspaces."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:350
+#, no-c-format
+msgid "Workspace management and jPDL pageflow"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:351
+#, no-c-format
+msgid ""
+"When you use a jPDL pageflow definition, Seam switches to a conversation by "
+"restoring the current jBPM process state. This is a more flexible model "
+"since it allows the same <literal>view-id</literal> to have different "
+"descriptions depending upon the current <literal>&lt;page&gt;</literal> "
+"node. The description text is defined by the <literal>&lt;page&gt;</literal> "
+"node:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:354
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"shopping\"&gt;\n"
+"\n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"browse\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;page name=\"browse\" view-id=\"/browse.xhtml\"&gt;\n"
+"      &lt;description&gt;DVD Search: #{search.searchPattern}&lt;/"
+"description&gt;\n"
+"      &lt;transition to=\"browse\"/&gt;\n"
+"      &lt;transition name=\"checkout\" to=\"checkout\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"checkout\" view-id=\"/checkout.xhtml\"&gt;\n"
+"      &lt;description&gt;Purchase: &#36;#{cart.total}&lt;/description&gt;\n"
+"      &lt;transition to=\"checkout\"/&gt;\n"
+"      &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"complete\" view-id=\"/complete.xhtml\"&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:358
+#, no-c-format
+msgid "The conversation switcher"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:359
+#, no-c-format
+msgid ""
+"Include the following fragment in your JSP or facelets page to get a drop-"
+"down menu that lets you switch to any current conversation, or to any other "
+"page of the application:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:362
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{switcher.conversationIdOrOutcome}\"&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Find Issues\" itemValue=\"findIssue\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Create Issue\" itemValue=\"editIssue\"/"
+"&gt;\n"
+"    &lt;f:selectItems value=\"#{switcher.selectItems}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{switcher.select}\" value=\"Switch\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:363
+#, no-c-format
+msgid ""
+"In this example, we have a menu that includes an item for each conversation, "
+"together with two additional items that let the user begin a new "
+"conversation."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:377
+#, no-c-format
+msgid "The conversation list"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:378
+#, no-c-format
+msgid ""
+"The conversation list is very similar to the conversation switcher, except "
+"that it is displayed as a table:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:381
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{conversationList}\" var=\"entry\"\n"
+"        rendered=\"#{not empty conversationList}\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Workspace&lt;/f:facet&gt;\n"
+"        &lt;h:commandLink action=\"#{entry.select}\" value=\"#{entry."
+"description}\"/&gt;\n"
+"        &lt;h:outputText value=\"[current]\" rendered=\"#{entry.current}\"/"
+"&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Activity&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{entry.startDatetime}\"&gt;\n"
+"            &lt;f:convertDateTime type=\"time\" pattern=\"hh:mm a\"/&gt;\n"
+"        &lt;/h:outputText&gt;\n"
+"        &lt;h:outputText value=\" - \"/&gt;\n"
+"        &lt;h:outputText value=\"#{entry.lastDatetime}\"&gt;\n"
+"            &lt;f:convertDateTime type=\"time\" pattern=\"hh:mm a\"/&gt;\n"
+"        &lt;/h:outputText&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"        &lt;h:commandButton action=\"#{entry.select}\" value=\"#{msg.Switch}"
+"\"/&gt;\n"
+"        &lt;h:commandButton action=\"#{entry.destroy}\" value=\"#{msg."
+"Destroy}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:382
+#, no-c-format
+msgid ""
+"We imagine that you will want to customize this for your own application."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:393
+#, no-c-format
+msgid ""
+"The conversation list is nice, but it takes up a lot of space on the page, "
+"so you probably don't want to put it on <emphasis>every</emphasis> page."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:396
+#, no-c-format
+msgid "Notice that the conversation list lets the user destroy workspaces."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:402
+#, no-c-format
+msgid "Breadcrumbs"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:403
+#, no-c-format
+msgid ""
+"Breadcrumbs are useful in applications which use a nested conversation "
+"model. The breadcrumbs are a list of links to conversations in the current "
+"conversation stack:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:406
+#, no-c-format
+msgid ""
+"&lt;t:dataList value=\"#{conversationStack}\" var=\"entry\"&gt;\n"
+"    &lt;h:outputText value=\" | \"/&gt; \n"
+"    &lt;h:commandLink value=\"#{entry.description}\" action=\"#{entry.select}"
+"\"/&gt;\n"
+"&lt;/t:dataList&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:407
+#, no-c-format
+msgid ""
+"Notice that here we are using the MyFaces <literal>&lt;t:dataList&gt;</"
+"literal> component, since JSF amazingly does not provide any standard "
+"component for looping."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:424
+#, no-c-format
+msgid "Conversational components and JSF component bindings"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:425
+#, no-c-format
+msgid ""
+"Conversational components have one minor limitation: they cannot be used to "
+"hold bindings to JSF components. (We generally prefer not to use this "
+"feature of JSF unless absolutely necessary, since it creates a hard "
+"dependency from application logic to the view.) On a postback request, "
+"component bindings are updated during the Restore View phase, before the "
+"Seam conversation context has been restored."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:428
+#, no-c-format
+msgid ""
+"To work around this use an event scoped component to store the component "
+"bindings and inject it into the conversation scoped component that requires "
+"it."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:431
+#, no-c-format
+msgid ""
+"@Name(\"grid\")\n"
+"@Scope(ScopeType.EVENT)\n"
+"public class Grid\n"
+"{\n"
+"    private HtmlPanelGrid htmlPanelGrid;\n"
+"\n"
+"    // getters and setters\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:432
+#, no-c-format
+msgid ""
+"@Name(\"gridEditor\")\n"
+"@Scope(ScopeType.CONVERSATION)\n"
+"public class GridEditor\n"
+"{\n"
+"    @In(required=false)\n"
+"    private Grid grid;\n"
+"    \n"
+"    ...\n"
+"}"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Drools.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Drools.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Drools.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,281 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Drools.xml:10
+#, no-c-format
+msgid "Seam and JBoss Rules"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:11
+#, no-c-format
+msgid ""
+"Seam makes it easy to call JBoss Rules (Drools) rulebases from Seam "
+"components or jBPM process definitions."
+msgstr ""
+
+#. Tag: title
+#: Drools.xml:15
+#, no-c-format
+msgid "Installing rules"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:16
+#, no-c-format
+msgid ""
+"The first step is to make an instance of <literal>org.drools.RuleBase</"
+"literal> available in a Seam context variable. In most rules-driven "
+"applications, rules need to be dynamically deployable, so you will need to "
+"implement some solution that allows you to deploy rules and make them "
+"available to Seam (a future release of Drools will provide a Rule Server "
+"that solves this problem). For testing purposes, Seam provides a built-in "
+"component that compiles a static set of rules from the classpath. You can "
+"install this component via <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:19
+#, no-c-format
+msgid ""
+"&lt;drools:rule-base name=\"policyPricingRules\"&gt;\n"
+"    &lt;drools:rule-files&gt;\n"
+"        &lt;value&gt;policyPricingRules&lt;/value&gt;\n"
+"    &lt;/drools:rule-files&gt;\n"
+"&lt;/drools:rule-base&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:20
+#, no-c-format
+msgid ""
+"This component compiles rules from a set of <literal>.drl</literal> files "
+"and caches an instance of <literal>org.drools.RuleBase</literal> in the Seam "
+"<literal>APPLICATION</literal> context. Note that it is quite likely that "
+"you will need to install multiple rule bases in a rule-driven application."
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:23
+#, no-c-format
+msgid ""
+"If you want to use a Drools DSL, you alse need to specify the DSL definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:26
+#, no-c-format
+msgid ""
+"&lt;drools:rule-base name=\"policyPricingRules\" dsl-file=\"policyPricing.dsl"
+"\"&gt;\n"
+"    &lt;drools:rule-files&gt;\n"
+"        &lt;value&gt;policyPricingRules&lt;/value&gt;\n"
+"    &lt;/drools:rule-files&gt;\n"
+"&lt;/drools:rule-base&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:27
+#, no-c-format
+msgid ""
+"Next, we need to make an instance of <literal>org.drools.WorkingMemory</"
+"literal> available to each conversation. (Each <literal>WorkingMemory</"
+"literal> accumulates facts relating to the current conversation.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:30
+#, no-c-format
+msgid ""
+"&lt;drools:managed-working-memory name=\"policyPricingWorkingMemory\" auto-"
+"create=\"true\" rule-base=\"#{policyPricingRules}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:31
+#, no-c-format
+msgid ""
+"Notice that we gave the <literal>policyPricingWorkingMemory</literal> a "
+"reference back to our rule base via the <literal>ruleBase</literal> "
+"configuration property."
+msgstr ""
+
+#. Tag: title
+#: Drools.xml:37
+#, no-c-format
+msgid "Using rules from a Seam component"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:38
+#, no-c-format
+msgid ""
+"We can now inject our <literal>WorkingMemory</literal> into any Seam "
+"component, assert facts, and fire rules:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:41
+#, no-c-format
+msgid ""
+"@In WorkingMemory policyPricingWorkingMemory;\n"
+"\n"
+"@In Policy policy;\n"
+"@In Customer customer;\n"
+"\n"
+"public void pricePolicy() throws FactException\n"
+"{\n"
+"    policyPricingWorkingMemory.assertObject(policy);\n"
+"    policyPricingWorkingMemory.assertObject(customer);\n"
+"    policyPricingWorkingMemory.fireAllRules();\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Drools.xml:45
+#, no-c-format
+msgid "Using rules from a jBPM process definition"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:46
+#, no-c-format
+msgid ""
+"You can even allow a rule base to act as a jBPM action handler, decision "
+"handler, or assignment handler&mdash;in either a pageflow or business "
+"process definition."
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:49
+#, no-c-format
+msgid ""
+"&lt;decision name=\"approval\"&gt;\n"
+"         \n"
+"    &lt;handler class=\"org.jboss.seam.drools.DroolsDecisionHandler\"&gt;\n"
+"        &lt;workingMemoryName&gt;orderApprovalRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"        &lt;assertObjects&gt;\n"
+"            &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"            &lt;element&gt;#{order}&lt;/element&gt;\n"
+"            &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"        &lt;/assertObjects&gt;\n"
+"    &lt;/handler&gt;\n"
+"    \n"
+"    &lt;transition name=\"approved\" to=\"ship\"&gt;\n"
+"        &lt;action class=\"org.jboss.seam.drools.DroolsActionHandler\"&gt;\n"
+"            &lt;workingMemoryName&gt;shippingRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"            &lt;assertObjects&gt;\n"
+"                &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"            &lt;/assertObjects&gt;\n"
+"        &lt;/action&gt;\n"
+"    &lt;/transition&gt;\n"
+"    \n"
+"    &lt;transition name=\"rejected\" to=\"cancelled\"/&gt;\n"
+"    \n"
+"&lt;/decision&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:50
+#, no-c-format
+msgid ""
+"The <literal>&lt;assertObjects&gt;</literal> element specifies EL "
+"expressions that return an object or collection of objects to be asserted as "
+"facts into the <literal>WorkingMemory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:53
+#, no-c-format
+msgid "There is also support for using Drools for jBPM task assignments:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:56
+#, no-c-format
+msgid ""
+"&lt;task-node name=\"review\"&gt;\n"
+"    &lt;task name=\"review\" description=\"Review Order\"&gt;\n"
+"        &lt;assignment handler=\"org.jboss.seam.drools."
+"DroolsAssignmentHandler\"&gt;\n"
+"            &lt;workingMemoryName&gt;orderApprovalRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"            &lt;assertObjects&gt;\n"
+"                &lt;element&gt;#{actor}&lt;/element&gt;\n"
+"                &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"            &lt;/assertObjects&gt;\n"
+"        &lt;/assignment&gt;\n"
+"    &lt;/task&gt;\n"
+"    &lt;transition name=\"rejected\" to=\"cancelled\"/&gt;\n"
+"    &lt;transition name=\"approved\" to=\"approved\"/&gt;\n"
+"&lt;/task-node&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:57
+#, no-c-format
+msgid ""
+"Certain objects are available to the rules as Drools globals, namely the "
+"jBPM <literal>Assignable</literal>, as <literal>assignable</literal> and a "
+"Seam <literal>Decision</literal> object, as <literal>decision</literal>. "
+"Rules which handle decisions should call <literal>decision.setOutcome"
+"(\"result\")</literal> to determine the result of the decision. Rules which "
+"perform assignments should set the actor id using the <literal>Assignable</"
+"literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:60
+#, no-c-format
+msgid ""
+"package org.jboss.seam.examples.shop\n"
+"\n"
+"import org.jboss.seam.drools.Decision\n"
+"\n"
+"global Decision decision\n"
+"\n"
+"rule \"Approve Order For Loyal Customer\"\n"
+"  when\n"
+"    Customer( loyaltyStatus == \"GOLD\" )\n"
+"    Order( totalAmount &lt;= 10000 )\n"
+"  then\n"
+"    decision.setOutcome(\"approved\");\n"
+"end"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:61
+#, no-c-format
+msgid ""
+"package org.jboss.seam.examples.shop\n"
+"\n"
+"import org.jbpm.taskmgmt.exe.Assignable\n"
+"\n"
+"global Assignable assignable\n"
+"\n"
+"rule \"Assign Review For Small Order\"\n"
+"  when\n"
+"    Order( totalAmount &lt;= 100 )\n"
+"  then\n"
+"    assignable.setPooledActors( new String[] {\"reviewers\"} );\n"
+"end"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Elenhancements.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Elenhancements.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Elenhancements.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,221 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Elenhancements.xml:10
+#, no-c-format
+msgid "Expression language enhancements"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:11
+#, no-c-format
+msgid ""
+"The standard Unified Expression Language (EL) assumes that any parameters to "
+"a method expression will be provided by Java code. This means that a method "
+"with parameters cannot be used as a JSF method binding. Seam provides an "
+"enhancement to the EL that allows parameters to be included in a method "
+"expression itself. This applies to <emphasis>any</emphasis> Seam method "
+"expression, including any JSF method binding, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:14
+#, no-c-format
+msgid ""
+"&lt;s:commandButton action=\"#{hotelBooking.bookHotel(hotel)}\" value=\"Book "
+"Hotel\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:16
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:17
+#, no-c-format
+msgid ""
+"To use this feature in Facelets, you will need to declare a special view "
+"handler, <literal>SeamFaceletViewHandler</literal> in <literal>faces-config."
+"xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:20
+#, no-c-format
+msgid ""
+"&lt;faces-config&gt;\n"
+"    &lt;application&gt;\n"
+"        &lt;view-handler&gt;org.jboss.seam.ui.facelet."
+"SeamFaceletViewHandler&lt;/view-handler&gt;\n"
+"    &lt;/application&gt;\n"
+"&lt;/faces-config&gt;"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:24
+#, no-c-format
+msgid "Usage"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:25
+#, no-c-format
+msgid "Parameters are surrounded by parentheses, and separated by commas:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:28
+#, no-c-format
+msgid ""
+"&lt;h:commandButton action=\"#{hotelBooking.bookHotel(hotel, user)}\" value="
+"\"Book Hotel\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:29
+#, no-c-format
+msgid ""
+"The parameters <literal>hotel</literal> and <literal>user</literal> will be "
+"evaluated as value expressions and passed to the <literal>bookHotel()</"
+"literal> method of the component. This gives you an alternative to the use "
+"of <literal>@In</literal>."
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:32
+#, no-c-format
+msgid "Any value expression may be used as a parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:35
+#, no-c-format
+msgid ""
+"&lt;h:commandButton action=\"#{hotelBooking.bookHotel(hotel.id, user."
+"username)}\" value=\"Book Hotel\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:36
+#, no-c-format
+msgid "You may even pass literal strings using single or double quotes:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:39
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=&#8221;#{printer.println( &#8216;Hello world!"
+"&#8217; )}&#8221; value=&#8221;Hello&#8221;/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:40
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=&#8217;#{printer.println( &#8220;Hello "
+"again&#8221; )}&#8217; value=&#8217;Hello&#8217;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:41
+#, no-c-format
+msgid ""
+"You might even want to use this notation for all your action methods, even "
+"when you don&#8217;t have parameters to pass. This improves readability by "
+"making it clear that the expression is a method expression and not a value "
+"expression:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:44
+#, no-c-format
+msgid "&lt;s:link value=\"Cancel\" action=\"#{hotelBooking.cancel()}\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:48
+#, no-c-format
+msgid "Limitations"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:49
+#, no-c-format
+msgid "Please be aware of the following limitations:"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:53
+#, no-c-format
+msgid "Incompatibility with JSP 2.1"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:54
+#, no-c-format
+msgid ""
+"This extension is not currently compatible with JSP 2.1. So if you want to "
+"use this extension with JSF 1.2, you will need to use Facelets. The "
+"extension works correctly with JSP 2.0."
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:60
+#, no-c-format
+msgid "Calling a <literal>MethodExpression</literal> from Java code"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:61
+#, no-c-format
+msgid ""
+"Normally, when a <literal>MethodExpression</literal> or "
+"<literal>MethodBinding</literal> is created, the parameter types are passed "
+"in by JSF. In the case of a method binding, JSF assumes that there are no "
+"parameters to pass. With this extension, we can&#8217;t know the parameter "
+"types until after the expression has been evaluated. This has two minor "
+"consequences:"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:66
+#, no-c-format
+msgid ""
+"When you invoke a <literal>MethodExpression</literal> in Java code, "
+"parameters you pass may be ignored. Parameters defined in the expression "
+"will take precedence."
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:71
+#, no-c-format
+msgid ""
+"Ordinarily, it is safe to call <literal>methodExpression.getMethodInfo()."
+"getParamTypes()</literal> at any time. For an expression with parameters, "
+"you must first invoke the <literal>MethodExpression</literal> before calling "
+"<literal>getParamTypes()</literal>."
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:76
+#, no-c-format
+msgid ""
+"Both of these cases are exceedingly rare and only apply when you want to "
+"invoke the <literal>MethodExpression</literal> by hand in Java code."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Events.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Events.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Events.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1430 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Events.xml:10
+#, no-c-format
+msgid "Events, interceptors and exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:11
+#, no-c-format
+msgid ""
+"Complementing the contextual component model, there are two further basic "
+"concepts that facilitate the extreme loose-coupling that is the distinctive "
+"feature of Seam applications. The first is a strong event model where events "
+"may be mapped to event listeners via JSF-like method binding expressions. "
+"The second is the pervasive use of annotations and interceptors to apply "
+"cross-cutting concerns to components which implement business logic."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:14
+#, no-c-format
+msgid "Seam events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:15
+#, no-c-format
+msgid ""
+"The Seam component model was developed for use with <emphasis>event-driven "
+"applications</emphasis>, specifically to enable the development of fine-"
+"grained, loosely-coupled components in a fine-grained eventing model. Events "
+"in Seam come in several types, most of which we have already seen:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:20
+#, no-c-format
+msgid "JSF events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:25
+#, no-c-format
+msgid "jBPM transition events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:30
+#, no-c-format
+msgid "Seam page actions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:35
+#, no-c-format
+msgid "Seam component-driven events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:40
+#, no-c-format
+msgid "Seam contextual events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:45
+#, no-c-format
+msgid ""
+"All of these various kinds of events are mapped to Seam components via JSF "
+"EL method binding expressions. For a JSF event, this is defined in the JSF "
+"template:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:48
+#, no-c-format
+msgid ""
+"&lt;h:commandButton value=\"Click me!\" action=\"#{helloWorld.sayHello}\"/"
+"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:49
+#, no-c-format
+msgid ""
+"For a jBPM transition event, it is specified in the jBPM process definition "
+"or pageflow definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:52
+#, no-c-format
+msgid ""
+"&lt;start-page name=\"hello\" view-id=\"/hello.jsp\"&gt;\n"
+"    &lt;transition to=\"hello\"&gt;\n"
+"        &lt;action expression=\"#{helloWorld.sayHello}\"/&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/start-page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:53
+#, no-c-format
+msgid ""
+"You can find out more information about JSF events and jBPM events "
+"elsewhere. Lets concentrate for now upon the two additional kinds of events "
+"defined by Seam."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:56
+#, no-c-format
+msgid "Page actions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:57
+#, no-c-format
+msgid ""
+"A Seam page action is an event that occurs just before we render a page. We "
+"declare page actions in <literal>WEB-INF/pages.xml</literal>. We can define "
+"a page action for either a particular JSF view id:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:60
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\" action=\"#{helloWorld.sayHello}\"/&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:61
+#, no-c-format
+msgid ""
+"Or we can use a wildcard to specify an action that applies to all view ids "
+"that match the pattern:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:64
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello/*\" action=\"#{helloWorld.sayHello}\"/&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:65
+#, no-c-format
+msgid ""
+"If multiple wildcarded page actions match the current view-id, Seam will "
+"call all the actions, in order of least-specific to most-specific."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:68
+#, no-c-format
+msgid ""
+"The page action method can return a JSF outcome. If the outcome is non-null, "
+"Seam will delegate to the defined JSFadn Seam navigation rules and a "
+"different view may end up being rendered."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:71
+#, no-c-format
+msgid ""
+"Furthermore, the view id mentioned in the <literal>&lt;page&gt;</literal> "
+"element need not correspond to a real JSP or Facelets page! So, we can "
+"reproduce the functionality of a traditional action-oriented framework like "
+"Struts or WebWork using page actions. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:74
+#, no-c-format
+msgid "TODO: translate struts action into page action"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:75
+#, no-c-format
+msgid ""
+"This is quite useful if you want to do complex things in response to non-"
+"faces requests (for example, HTTP GET requests)."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:78
+#, no-c-format
+msgid "Page parameters"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:79
+#, no-c-format
+msgid ""
+"A JSF faces request (a form submission) encapsulates both an \"action\" (a "
+"method binding) and \"parameters\" (input value bindings). A page action "
+"might also needs parameters!"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:82
+#, no-c-format
+msgid ""
+"Since GET requests are bookmarkable, page parameters are passed as human-"
+"readable request parameters. (Unlike JSF form inputs, which are anything "
+"but!)"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:85
+#, no-c-format
+msgid ""
+"Seam lets us provide a value binding that maps a named request parameter to "
+"an attribute of a model object."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:88
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\" action=\"#{helloWorld.sayHello}\"&gt;\n"
+"        &lt;param name=\"firstName\" value=\"#{person.firstName}\"/&gt;\n"
+"        &lt;param name=\"lastName\" value=\"#{person.lastName}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:89
+#, no-c-format
+msgid ""
+"The <literal>&lt;param&gt;</literal> declaration is bidirectional, just like "
+"a value binding for a JSF input:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:94
+#, no-c-format
+msgid ""
+"When a non-faces (GET) request for the view id occurs, Seam sets the value "
+"of the named request parameter onto the model object, after performing "
+"appropriate type conversions."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:99
+#, no-c-format
+msgid ""
+"Any <literal>&lt;s:link&gt;</literal> or <literal>&lt;s:button&gt;</literal> "
+"transparently includes the request parameter. The value of the parameter is "
+"determined by evaluating the value binding during the render phase (when the "
+"<literal>&lt;s:link&gt;</literal> is rendered)."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:104
+#, no-c-format
+msgid ""
+"Any navigation rule with a <literal>&lt;redirect/&gt;</literal> to the view "
+"id transparently includes the request parameter. The value of the parameter "
+"is determined by evaluating the value binding at the end of the invoke "
+"application phase."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:109
+#, no-c-format
+msgid ""
+"The value is transparently propagated with any JSF form submission for the "
+"page with the given view id. (This means that view parameters behave like "
+"<literal>PAGE</literal>-scoped context variables for faces requests."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:114
+#, no-c-format
+msgid ""
+"The essential idea behind all this is that <emphasis>however</emphasis> we "
+"get from any other page to <literal>/hello.jsp</literal> (or from <literal>/"
+"hello.jsp</literal> back to <literal>/hello.jsp</literal>), the value of the "
+"model attribute referred to in the value binding is \"remembered\", without "
+"the need for a conversation (or other server-side state)."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:117
+#, no-c-format
+msgid ""
+"This all sounds pretty complex, and you're probably wondering if such an "
+"exotic construct is really worth the effort. Actually, the idea is very "
+"natural once you \"get it\". It is definitely worth taking the time to "
+"understand this stuff. Page parameters are the most elegant way to propagate "
+"state across a non-faces request. They are especially cool for problems like "
+"search screens with bookmarkable results pages, where we would like to be "
+"able to write our application code to handle both POST and GET requests with "
+"the same code. Page parameters eliminate repetitive listing of request "
+"parameters in the view definition and make redirects much easier to code."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:120
+#, no-c-format
+msgid ""
+"Note that you don't need an actual page action method binding to use a page "
+"parameter. The following is perfectly valid:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:123
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\"&gt;\n"
+"        &lt;param name=\"firstName\" value=\"#{person.firstName}\"/&gt;\n"
+"        &lt;param name=\"lastName\" value=\"#{person.lastName}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:124
+#, no-c-format
+msgid "You can even specify a JSF converter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:127
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/calculator.jsp\" action=\"#{calculator.calculate}"
+"\"&gt;\n"
+"        &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"        &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"        &lt;param name=\"op\" converterId=\"com.my.calculator."
+"OperatorConverter\" value=\"#{calculator.op}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:128
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/calculator.jsp\" action=\"#{calculator.calculate}"
+"\"&gt;\n"
+"        &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"        &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"        &lt;param name=\"op\" converter=\"#{operatorConverter}\" value=\"#"
+"{calculator.op}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:129
+#, no-c-format
+msgid "Navigation"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:130
+#, no-c-format
+msgid ""
+"You can use standard JSF navigation rules defined in <literal>faces-config."
+"xml</literal> in a Seam application. However, JSF navigation rules have a "
+"number of annoying limitations:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:135
+#, no-c-format
+msgid ""
+"It is not possible to specify request parameters to be used when redirecting."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:140
+#, no-c-format
+msgid "It is not possible to begin or end conversations from a rule."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:145
+#, no-c-format
+msgid ""
+"Rules work by evaluating the return value of the action method; it is not "
+"possible to evaluate an arbitrary EL expression."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:150
+#, no-c-format
+msgid ""
+"A further problem is that \"orchestration\" logic gets scattered between "
+"<literal>pages.xml</literal> and <literal>faces-config.xml</literal>. It's "
+"better to unify this logic into <literal>pages.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:153
+#, no-c-format
+msgid "This JSF navigation rule:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:156
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"    &lt;from-view-id&gt;/editDocument.xhtml&lt;/from-view-id&gt;\n"
+"    \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-action&gt;#{documentEditor.update}&lt;/from-action&gt;\n"
+"        &lt;from-outcome&gt;success&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/viewDocument.xhtml&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"    \n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:157
+#, no-c-format
+msgid "Can be rewritten as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:160
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if-outcome=\"success\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:161
+#, no-c-format
+msgid ""
+"But it would be even nicer if we didn't have to pollute our "
+"<literal>DocumentEditor</literal> component with string-valued return values "
+"(the JSF outcomes). So Seam lets us write:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:164
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\" \n"
+"                   evaluate=\"#{documentEditor.errors.size}\"&gt;\n"
+"        &lt;rule if-outcome=\"0\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:165
+#, no-c-format
+msgid "Or even:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:168
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:169
+#, no-c-format
+msgid ""
+"The first form evaluates a value binding to determine the outcome value to "
+"be used by the subsequent rules. The second approach ignores the outcome and "
+"evaluates a value binding for each possible rule."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:172
+#, no-c-format
+msgid ""
+"Of course, when an update succeeds, we probably want to end the current "
+"conversation. We can do that like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:175
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:176
+#, no-c-format
+msgid ""
+"But ending the conversation loses any state associated with the "
+"conversation, including the document we are currently interested in! One "
+"solution would be to use an immediate render instead of a redirect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:179
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:180
+#, no-c-format
+msgid ""
+"But the correct solution is to pass the document id as a request parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:183
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"&gt;\n"
+"                &lt;param name=\"documentId\" value=\"#{documentEditor."
+"documentId}\"/&gt;\n"
+"            &lt;/redirect&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:184
+#, no-c-format
+msgid ""
+"Null outcomes are a special case in JSF. The null outcome is interpreted to "
+"mean \"redisplay the page\". The following navigation rule matches any non-"
+"null outcome, but <emphasis>not</emphasis> the null outcome:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:187
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule&gt;\n"
+"            &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:188
+#, no-c-format
+msgid ""
+"If you want to perform navigation when a null outcome occurs, use the "
+"following form instead:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:191
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:192
+#, no-c-format
+msgid ""
+"Fine-grained files for definition of navigation, page actions and parameters"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:193
+#, no-c-format
+msgid ""
+"If you have a lot of different page actions and page parameters, or even "
+"just a lot of navigation rules, you will almost certainly want to split the "
+"declarations up over multiple files. You can define actions and parameters "
+"for a page with the view id <literal>/calc/calculator.jsp</literal> in a "
+"resource named <literal>calc/calculator.page.xml</literal>. The root element "
+"in this case is the <literal>&lt;page&gt;</literal> element, and the view id "
+"is implied:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:196
+#, no-c-format
+msgid ""
+"&lt;page action=\"#{calculator.calculate}\"&gt;\n"
+"    &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"    &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"    &lt;param name=\"op\" converter=\"#{operatorConverter}\" value=\"#"
+"{calculator.op}\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:197
+#, no-c-format
+msgid "Component-driven events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:198
+#, no-c-format
+msgid ""
+"Seam components can interact by simply calling each others methods. Stateful "
+"components may even implement the observer/observable pattern. But to enable "
+"components to interact in a more loosely-coupled fashion than is possible "
+"when the components call each others methods directly, Seam provides "
+"<emphasis>component-driven events</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:201
+#, no-c-format
+msgid ""
+"We specify event listeners (observers) in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:204
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;event type=\"hello\"&gt;\n"
+"        &lt;action expression=\"#{helloListener.sayHelloBack}\"/&gt;\n"
+"        &lt;action expression=\"#{logger.logHello}\"/&gt;\n"
+"    &lt;/event&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:205
+#, no-c-format
+msgid "Where the <emphasis>event type</emphasis> is just an arbitrary string."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:208
+#, no-c-format
+msgid ""
+"When an event occurs, the actions registered for that event will be called "
+"in the order they appear in <literal>components.xml</literal>. How does a "
+"component raise an event? Seam provides a built-in component for this."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:211
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World!\");\n"
+"        Events.instance().raiseEvent(\"hello\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:212
+#, no-c-format
+msgid "Or you can use an annotation."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:215
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    @RaiseEvent(\"hello\")\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World!\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:216
+#, no-c-format
+msgid ""
+"Notice that this event producer has no dependency upon event consumers. The "
+"event listener may now be implemented with absolutely no dependency upon the "
+"producer:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:219
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    public void sayHelloBack() {\n"
+"        FacesMessages.instance().add(\"Hello to you too!\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:220
+#, no-c-format
+msgid ""
+"The method binding defined in <literal>components.xml</literal> above takes "
+"care of mapping the event to the consumer. If you don't like futzing about "
+"in the <literal>components.xml</literal> file, you can use an annotation "
+"instead:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:223
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    @Observer(\"hello\")\n"
+"    public void sayHelloBack() {\n"
+"        FacesMessages.instance().add(\"Hello to you too!\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:224
+#, no-c-format
+msgid ""
+"You might wonder why I've not mentioned anything about event objects in this "
+"discussion. In Seam, there is no need for an event object to propagate state "
+"between event producer and listener. State is held in the Seam contexts, and "
+"is shared between components. However, if you really want to pass an event "
+"object, you can:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:227
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    private String name;\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World, my name is #0.\", "
+"name);\n"
+"        Events.instance().raiseEvent(\"hello\", name);\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:228
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    @Observer(\"hello\")\n"
+"    public void sayHelloBack(String name) {\n"
+"        FacesMessages.instance().add(\"Hello #0!\", name);\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:229
+#, no-c-format
+msgid "Contextual events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:230
+#, no-c-format
+msgid ""
+"Seam defines a number of built-in events that the application can use to "
+"perform special kinds of framework integration. The events are:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:235
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preSetVariable.&lt;name&gt;</literal> &mdash; called "
+"when the context variable &lt;name&gt; is set"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:240
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postSetVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is set"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:245
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preRemoveVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is unset"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:250
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postRemoveVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is unset"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:255
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preDestroyContext.&lt;SCOPE&gt;</literal> &mdash; "
+"called before the &lt;SCOPE&gt; context is destroyed"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:260
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postDestroyContext.&lt;SCOPE&gt;</literal> &mdash; "
+"called after the &lt;SCOPE&gt; context is destroyed"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:265
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beginConversation </literal>&mdash; called whenever "
+"a long-running conversation begins"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:270
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endConversation </literal>&mdash; called whenever a "
+"long-running conversation ends"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:275
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beginPageflow.&lt;name&gt; </literal>&mdash; called "
+"when the pageflow &lt;name&gt; begins"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:280
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endPageflow.&lt;name&gt; </literal>&mdash; called "
+"when the pageflow &lt;name&gt; ends"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:285
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.createProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; is created"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:290
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; ends"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:295
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.initProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; is associated with the conversation"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:300
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.initTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is associated with the conversation"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:305
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.startTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is started"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:310
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is ended"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:315
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postCreate.&lt;name&gt; </literal>&mdash; called "
+"when the component &lt;name&gt; is created"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:320
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preDestroy.&lt;name&gt; </literal>&mdash; called "
+"when the component &lt;name&gt; is destroyed"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:325
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beforePhase </literal>&mdash; called before the "
+"start of a JSF phase"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:330
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.afterPhase </literal>&mdash; called after the end of "
+"a JSF phase"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:335
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postAuthenticate.&lt;name&gt; </literal>&mdash; "
+"called after a user is authenticated"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:340
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preAuthenticate.&lt;name&gt; </literal>&mdash; "
+"called before attempting to authenticate a user"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:345
+#, no-c-format
+msgid ""
+"Seam components may observe any of these events in just the same way they "
+"observe any other component-driven events."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:348
+#, no-c-format
+msgid "Seam interceptors"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:349
+#, no-c-format
+msgid ""
+"EJB 3.0 introduced a standard interceptor model for session bean components. "
+"To add an interceptor to a bean, you need to write a class with a method "
+"annotated <literal>@AroundInvoke</literal> and annotate the bean with an "
+"<literal>@Interceptors</literal> annotation that specifies the name of the "
+"interceptor class. For example, the following interceptor checks that the "
+"user is logged in before allowing invoking an action listener method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:352
+#, no-c-format
+msgid ""
+"public class LoggedInInterceptor {\n"
+"\n"
+"   @AroundInvoke\n"
+"   public Object checkLoggedIn(InvocationContext invocation) throws "
+"Exception {\n"
+"   \n"
+"      boolean isLoggedIn = Contexts.getSessionContext().get(\"loggedIn\")!"
+"=null;\n"
+"      if (isLoggedIn) {\n"
+"         //the user is already logged in\n"
+"         return invocation.proceed();\n"
+"      }\n"
+"      else {\n"
+"         //the user is not logged in, fwd to login page\n"
+"         return \"login\";\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:353
+#, no-c-format
+msgid ""
+"To apply this interceptor to a session bean which acts as an action "
+"listener, we must annotate the session bean <literal>@Interceptors"
+"(LoggedInInterceptor.class)</literal>. This is a somewhat ugly annotation. "
+"Seam builds upon the interceptor framework in EJB3 by allowing you to use "
+"<literal>@Interceptors</literal> as a meta-annotation. In our example, we "
+"would create an <literal>@LoggedIn</literal> annotation, as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:356
+#, no-c-format
+msgid ""
+"@Target(TYPE)\n"
+"@Retention(RUNTIME)\n"
+"@Interceptors(LoggedInInterceptor.class)\n"
+"public @interface LoggedIn {}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:357
+#, no-c-format
+msgid ""
+"We can now simply annotate our action listener bean with <literal>@LoggedIn</"
+"literal> to apply the interceptor."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:360
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"changePasswordAction\")\n"
+"@LoggedIn\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class ChangePasswordAction implements ChangePassword { \n"
+"    \n"
+"    ...\n"
+"    \n"
+"    public String changePassword() { ... }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:361
+#, no-c-format
+msgid ""
+"If interceptor ordering is important (it usually is), you can add "
+"<literal>@Interceptor</literal> annotations to your interceptor classes to "
+"specify a partial order of interceptors."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:364
+#, no-c-format
+msgid ""
+"@Interceptor(around={BijectionInterceptor.class,\n"
+"                     ValidationInterceptor.class,\n"
+"                     ConversationInterceptor.class},\n"
+"             within=RemoveInterceptor.class)\n"
+"public class LoggedInInterceptor\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:365
+#, no-c-format
+msgid ""
+"You can even have a \"client-side\" interceptor, that runs around any of the "
+"built-in functionality of EJB3:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:368
+#, no-c-format
+msgid ""
+"@Interceptor(type=CLIENT)\n"
+"public class LoggedInInterceptor\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:369
+#, no-c-format
+msgid ""
+"EJB interceptors are stateful, with a lifecycle that is the same as the "
+"component they intercept. For interceptors which do not need to maintain "
+"state, Seam lets you get a performance optimization by specifying "
+"<literal>@Interceptor(stateless=true)</literal>."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:372
+#, no-c-format
+msgid ""
+"Much of the functionality of Seam is implemented as a set of built-in Seam "
+"interceptors, including the interceptors named in the previous example. You "
+"don't have to explicitly specify these interceptors by annotating your "
+"components; they exist for all interceptable Seam components."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:375
+#, no-c-format
+msgid ""
+"You can even use Seam interceptors with JavaBean components, not just EJB3 "
+"beans!"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:378
+#, no-c-format
+msgid ""
+"EJB defines interception not only for business methods (using "
+"<literal>@AroundInvoke</literal>), but also for the lifecycle methods "
+"<literal>@PostConstruct</literal>, <literal>@PreDestroy</literal>, "
+"<literal>@PrePassivate</literal> and <literal>@PostActive</literal>. Seam "
+"supports all these lifecycle methods on both component and interceptor not "
+"only for EJB3 beans, but also for JavaBean components (except "
+"<literal>@PreDestroy</literal> which is not meaningful for JavaBean "
+"components)."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:381
+#, no-c-format
+msgid "Managing exceptions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:382
+#, no-c-format
+msgid ""
+"JSF is surprisingly limited when it comes to exception handling. As a "
+"partial workaround for this problem, Seam lets you define how a particular "
+"class of exception is to be treated by annotating the exception class, or "
+"declaring the exception class in an XML file. This facility is meant to be "
+"combined with the EJB 3.0-standard <literal>@ApplicationException</literal> "
+"annotation which specifies whether the exception should cause a transaction "
+"rollback."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:385
+#, no-c-format
+msgid "Exceptions and transactions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:386
+#, no-c-format
+msgid ""
+"EJB specifies well-defined rules that let us control whether an exception "
+"immediately marks the current transaction for rollback when it is thrown by "
+"a business method of the bean: <emphasis>system exceptions</emphasis> always "
+"cause a transaction rollback, <emphasis>application exceptions</emphasis> do "
+"not cause a rollback by default, but they do if "
+"<literal>@ApplicationException(rollback=true)</literal> is specified. (An "
+"application exception is any checked exception, or any unchecked exception "
+"annotated <literal>@ApplicationException</literal>. A system exception is "
+"any unchecked exception without an <literal>@ApplicationException</literal> "
+"annotation.)"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:389
+#, no-c-format
+msgid ""
+"Note that there is a difference between marking a transaction for rollback, "
+"and actually rolling it back. The exception rules say that the transaction "
+"should be marked rollback only, but it may still be active after the "
+"exception is thrown."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:392
+#, no-c-format
+msgid ""
+"Seam applies the EJB 3.0 exception rollback rules also to Seam JavaBean "
+"components."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:395
+#, no-c-format
+msgid ""
+"But these rules only apply in the Seam component layer. What about an "
+"exception that is uncaught and propagates out of the Seam component layer, "
+"and out of the JSF layer? Well, it is always wrong to leave a dangling "
+"transaction open, so Seam rolls back any active transaction when an "
+"exception occurs and is uncaught in the Seam component layer."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:398
+#, no-c-format
+msgid "Enabling Seam exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:399
+#, no-c-format
+msgid ""
+"To enable Seam's exception handling, we need to make sure we have the master "
+"servlet filter declared in <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:402
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.servlet.SeamFilter&lt;/filter-"
+"class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:403
+#, no-c-format
+msgid "Using annotations for exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:404
+#, no-c-format
+msgid ""
+"The following exception results in a HTTP 404 error whenever it propagates "
+"out of the Seam component layer. It does not roll back the current "
+"transaction immediately when thrown, but the transaction will be rolled back "
+"if it the exception is not caught by another Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:407
+#, no-c-format
+msgid ""
+"@HttpError(errorCode=404)\n"
+"public class ApplicationException extends Exception { ... }"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:408
+#, no-c-format
+msgid ""
+"This exception results in a browser redirect whenever it propagates out of "
+"the Seam component layer. It also ends the current conversation. It causes "
+"an immediate rollback of the current transaction."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:411
+#, no-c-format
+msgid ""
+"@Redirect(viewId=\"/failure.xhtml\", end=true)\n"
+"@ApplicationException(rollback=true)\n"
+"public class UnrecoverableApplicationException extends RuntimeException "
+"{ ... }"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:412
+#, no-c-format
+msgid ""
+"Note that <literal>@Redirect</literal> does not work for exceptions which "
+"occur during the render phase of the JSF lifecycle."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:415
+#, no-c-format
+msgid ""
+"This exception results in a redirect, along with a message to the user, when "
+"it propagates out of the Seam component layer. It also immediately rolls "
+"back the current transaction."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:418
+#, no-c-format
+msgid ""
+"@Redirect(viewId=\"/error.xhtml\", message=\"Unexpected error\")\n"
+"public class SystemException extends RuntimeException { ... }"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:419
+#, no-c-format
+msgid "Using XML for exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:420
+#, no-c-format
+msgid ""
+"Since we can't add annotations to all the exception classes we are "
+"interested in, Seam also lets us specify this functionality in "
+"<literal>pages.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:423
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   \n"
+"   &lt;exception class=\"javax.persistence.EntityNotFoundException\"&gt;\n"
+"      &lt;http-error error-code=\"404\"/&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"   &lt;exception class=\"javax.persistence.PersistenceException\"&gt;\n"
+"      &lt;end-conversation/&gt;\n"
+"      &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"          &lt;message&gt;Database access failed&lt;/message&gt;\n"
+"      &lt;/redirect&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"   &lt;exception&gt;\n"
+"      &lt;end-conversation/&gt;\n"
+"      &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"          &lt;message&gt;Unexpected failure&lt;/message&gt;\n"
+"      &lt;/redirect&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:424
+#, no-c-format
+msgid ""
+"The last <literal>&lt;exception&gt;</literal> declaration does not specify a "
+"class, and is a catch-all for any exception for which handling is not "
+"otherwise specified via annotations or in <literal>pages.xml</literal>."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Framework.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Framework.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Framework.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,828 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Framework.xml:10
+#, no-c-format
+msgid "The Seam Application Framework"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:11
+#, no-c-format
+msgid ""
+"Seam makes it really easy to create applications by writing plain Java "
+"classes with annotations, which don't need to extend any special interfaces "
+"or superclasses. But we can simplify some common programming tasks even "
+"further, by providing a set of pre-built components which can be re-used "
+"either by configuration in <literal>components.xml</literal> (for very "
+"simple cases) or extension."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:14
+#, no-c-format
+msgid ""
+"The <emphasis>Seam Application Framework</emphasis> can reduce the amount of "
+"code you need to write when doing basic database access in a web "
+"application, using either Hibernate or JPA."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:17
+#, no-c-format
+msgid ""
+"We should emphasize that the framework is extremely simple, just a handful "
+"of simple classes that are easy to understand and extend. The \"magic\" is "
+"in Seam itself&mdash;the same magic you use when creating any Seam "
+"application even without using this framework."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:21
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:22
+#, no-c-format
+msgid ""
+"The components provided by the Seam application framework may be used in one "
+"of two different approaches. The first way is to install and configure an "
+"instance of the component in <literal>components.xml</literal>, just like we "
+"have done with other kinds of built-in Seam components. For example, the "
+"following fragment from <literal>components.xml</literal> installs a "
+"component which can perform basic CRUD operations for a <literal>Contact</"
+"literal> entity:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:25
+#, no-c-format
+msgid ""
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" \n"
+"                       entity-manager=\"#{personDatabase}\"&gt;\n"
+"    &lt;framework:id&gt;#{param.personId}&lt;/framework:id&gt;\n"
+"&lt;/framework:entity-home&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:26
+#, no-c-format
+msgid ""
+"If that looks a bit too much like \"programming in XML\" for your taste, you "
+"can use extension instead:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:29
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; implements "
+"LocalPersonHome {\n"
+"    @RequestParameter String personId;\n"
+"    @In EntityManager personDatabase;\n"
+"    \n"
+"    public Object getId() { return personId; }\n"
+"    public EntityManager getEntityManager() { return personDatabase; }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:30
+#, no-c-format
+msgid ""
+"The second approach has one huge advantage: you can easily add extra "
+"functionality, and override the built-in functionality (the framework "
+"classes were carefully designed for extension and customization)."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:33
+#, no-c-format
+msgid ""
+"A second advantage is that your classes may be EJB stateful sessin beans, if "
+"you like. (They do not have to be, they can be plain JavaBean components if "
+"you prefer.)"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:36
+#, no-c-format
+msgid ""
+"At this time, the Seam Application Framework provides just four built-in "
+"components: <literal>EntityHome</literal> and <literal>HibernateEntityHome</"
+"literal> for CRUD, along with <literal>EntityQuery</literal> and "
+"<literal>HibernateEntityQuery</literal> for queries."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:39
+#, no-c-format
+msgid ""
+"The Home and Query components are written so that they can function with a "
+"scope of session, event or conversation. Which scope you use depends upon "
+"the state model you wish to use in your application."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:42
+#, no-c-format
+msgid ""
+"The Seam Application Framework only works with Seam-managed persistence "
+"contexts. By default, the components will look for a persistence context "
+"named <literal>entityManager</literal>."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:48
+#, no-c-format
+msgid "Home objects"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:49
+#, no-c-format
+msgid ""
+"A Home object provides persistence operations for a particular entity class. "
+"Suppose we have our trusty <literal>Person</literal> class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:52
+#, no-c-format
+msgid ""
+"@Entity\n"
+"public class Person {\n"
+"    @Id private Long id;\n"
+"    private String firstName;\n"
+"    private String lastName;\n"
+"    private Country nationality;\n"
+"    \n"
+"    //getters and setters...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:53
+#, no-c-format
+msgid ""
+"We can define a <literal>personHome</literal> component either via "
+"configuration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:56
+#, no-c-format
+msgid ""
+"&lt;framework:entity-home name=\"personHome\" entity-class=\"eg.Person\" /"
+"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:57
+#, no-c-format
+msgid "Or via extension:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:60
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:61
+#, no-c-format
+msgid ""
+"A Home object provides the following operations: <literal>persist()</"
+"literal>, <literal>remove()</literal>, <literal>update()</literal> and "
+"<literal>getInstance()</literal>. Before you can call the <literal>remove()</"
+"literal>, or <literal>update()</literal> operations, you must first set the "
+"identifier of the object you are interested in, using the <literal>setId()</"
+"literal> method."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:64
+#, no-c-format
+msgid "We can use a Home directly from a JSF page, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:67
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Create Person&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{personHome.instance."
+"firstName}\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{personHome.instance."
+"lastName}\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:68
+#, no-c-format
+msgid ""
+"Usually, it is much nicer to be able to refer to the <literal>Person</"
+"literal> merely as <literal>person</literal>, so let's make that possible by "
+"adding a line to <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:71
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:72
+#, no-c-format
+msgid ""
+"(If we are using configuration.) Or by adding a <literal>@Factory</literal> "
+"method to <literal>PersonHome</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:75
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:76
+#, no-c-format
+msgid ""
+"(If we are using extension.) This change simplifies our JSF page to the "
+"following:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:79
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Create Person&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{person.firstName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{person.lastName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:80
+#, no-c-format
+msgid ""
+"Well, that lets us create new <literal>Person</literal> entries. Yes, that "
+"is all the code that is required! Now, if we want to be able to display, "
+"update and delete pre-existing <literal>Person</literal> entries in the "
+"database, we need to be able to pass the entry identifier to the "
+"<literal>PersonHome</literal>. Page parameters are a great way to do that:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:83
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page viewid=\"/editPerson.jsp\"&gt;\n"
+"        &lt;param name=\"personId\" value=\"#{personHome.id}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:84
+#, no-c-format
+msgid "Now we can add the extra operations to our JSF page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:87
+#, no-c-format
+msgid ""
+"&lt;h1&gt;\n"
+"    &lt;h:outputText rendered=\"#{!personHome.managed}\" value=\"Create "
+"Person\"/&gt;\n"
+"    &lt;h:outputText rendered=\"#{personHome.managed}\" value=\"Edit Person"
+"\"/&gt;\n"
+"&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{person.firstName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{person.lastName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\" \n"
+"            rendered=\"#{!personHome.managed}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Update Person\" action=\"#{personHome."
+"update}\" \n"
+"            rendered=\"#{personHome.managed}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Delete Person\" action=\"#{personHome."
+"remove}\" \n"
+"            rendered=\"#{personHome.managed}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:88
+#, no-c-format
+msgid ""
+"When we link to the page with no request parameters, the page will be "
+"displayed as a \"Create Person\" page. When we provide a value for the "
+"<literal>personId</literal> request parameter, it will be an \"Edit Person\" "
+"page."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:91
+#, no-c-format
+msgid ""
+"Suppose we need to create <literal>Person</literal> entries with their "
+"nationality initialized. We can do that easily, via configuration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:94
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" \n"
+"                       new-instance=\"#{newPerson}\"/&gt;\n"
+"\n"
+"&lt;component name=\"newPerson\" \n"
+"           class=\"eg.Person\"&gt;\n"
+"    &lt;property name=\"nationality\"&gt;#{country}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:95
+#, no-c-format
+msgid "Or by extension:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:98
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:99
+#, no-c-format
+msgid ""
+"Of course, the <literal>Country</literal> could be an object managed by "
+"another Home object, for example, <literal>CountryHome</literal>."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:102
+#, no-c-format
+msgid ""
+"To add more sophisticated operations (association management, etc), we can "
+"just add methods to <literal>PersonHome</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:105
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"    public void migrate()\n"
+"    {\n"
+"        getInstance().setCountry(country);\n"
+"        update();\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:106
+#, no-c-format
+msgid ""
+"The Home object automatically displays faces messages when an operation is "
+"successful. To customize these messages we can, again, use configuration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:109
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\"\n"
+"                       entity-class=\"eg.Person\"\n"
+"                       new-instance=\"#{newPerson}\"&gt;\n"
+"    &lt;framework:created-message&gt;New person #{person.firstName} #{person."
+"lastName} \n"
+"        created&lt;/framework:created-message&gt;\n"
+"    &lt;framework:deleted-message&gt;Person #{person.firstName} #{person."
+"lastName}\n"
+"        deleted&lt;/framework:deleted-message&gt;\n"
+"    &lt;framework:updated-message&gt;Person #{person.firstName} #{person."
+"lastName} \n"
+"        updated&lt;/framework:updated-message&gt;\n"
+"&lt;/framework:entity-home&gt;\n"
+"\n"
+"&lt;component name=\"newPerson\" \n"
+"           class=\"eg.Person\"&gt;\n"
+"    &lt;property name=\"nationality\"&gt;#{country}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:110
+#, no-c-format
+msgid "Or extension:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:113
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"    protected String getCreatedMessage() { return \"New person #{person."
+"firstName} \n"
+"        #{person.lastName} created\"; }\n"
+"    protected String getUpdatedMessage() { return \"Person #{person."
+"firstName} \n"
+"        #{person.lastName} updated\"; }\n"
+"    protected String getDeletedMessage() { return \"Person #{person."
+"firstName} \n"
+"        #{person.lastName} deleted\"; }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:114
+#, no-c-format
+msgid ""
+"But the best way to specify the messages is to put them in a resource bundle "
+"known to Seam (the bundle named <literal>messages</literal>, by default)."
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:117
+#, no-c-format
+msgid ""
+"Person_created=New person #{person.firstName} #{person.lastName} created\n"
+"Person_deleted=Person #{person.firstName} #{person.lastName} deleted\n"
+"Person_updated=Person #{person.firstName} #{person.lastName} updated"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:118
+#, no-c-format
+msgid ""
+"This enables internationalization, and keeps your code and configuration "
+"clean of presentation concerns."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:121
+#, no-c-format
+msgid ""
+"The final step is to add validation functionality to the page, using "
+"<literal>&lt;s:validateAll&gt;</literal> and <literal>&lt;s:decorate&gt;</"
+"literal>, but I'll leave that for you to figure out."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:127
+#, no-c-format
+msgid "Query objects"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:128
+#, no-c-format
+msgid ""
+"If we need a list of all <literal>Person</literal> instance in the database, "
+"we can use a Query object. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:131
+#, no-c-format
+msgid ""
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:132
+#, no-c-format
+msgid "We can use it from a JSF page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:135
+#, no-c-format
+msgid ""
+"&lt;h1&gt;List of people&lt;/h1&gt;\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view-id=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:136
+#, no-c-format
+msgid "We probably need to support pagination:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:139
+#, no-c-format
+msgid ""
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\" \n"
+"                        order=\"lastName\" \n"
+"                        max-results=\"20\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:140
+#, no-c-format
+msgid "We'll use a page parameter to determine the page to display:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:143
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page viewid=\"/searchPerson.jsp\"&gt;\n"
+"        &lt;param name=\"firstResult\" value=\"#{people.firstResult}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:144
+#, no-c-format
+msgid "The JSF code for a pagination control is a bit verbose, but manageable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:147
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Search for people&lt;/h1&gt;\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view-id=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.previousExists}\" "
+"value=\"First Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"0\"/&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.previousExists}\" "
+"value=\"Previous Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.previousFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.nextExists}\" value="
+"\"Next Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.nextFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.nextExists}\" value="
+"\"Last Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.lastFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:148
+#, no-c-format
+msgid ""
+"Real search screens let the user enter a bunch of optional search criteria "
+"to narrow the list of results returned. The Query object lets you specify "
+"optional \"restrictions\" to support this important usecase:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:151
+#, no-c-format
+msgid ""
+"&lt;component name=\"examplePerson\" class=\"Person\"/&gt;\n"
+"        \n"
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\" \n"
+"                        order=\"lastName\" \n"
+"                        max-results=\"20\"&gt;\n"
+"    &lt;framework:restrictions&gt;\n"
+"        &lt;value&gt;lower(firstName) like lower( #{examplePerson.firstName} "
+"+ '&#37;' )&lt;/value&gt;\n"
+"        &lt;value&gt;lower(lastName) like lower( #{examplePerson.lastName} + "
+"'&#37;' )&lt;/value&gt;\n"
+"    &lt;/framework:restrictions&gt;\n"
+"&lt;/framework:entity-query&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:152
+#, no-c-format
+msgid "Notice the use of an \"example\" object."
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:155
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Search for people&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{examplePerson.firstName}"
+"\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{examplePerson.lastName}"
+"\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;&lt;h:commandButton value=\"Search\" action=\"/search.jsp\"/"
+"&gt;&lt;/div&gt;\n"
+"&lt;/h:form&gt;\n"
+"\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view-id=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:156
+#, no-c-format
+msgid ""
+"The examples in this section have all shown reuse by configuration. However, "
+"reuse by extension is equally possible for Query objects."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:162
+#, no-c-format
+msgid "Controller objects"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:163
+#, no-c-format
+msgid ""
+"A totally optional part of the Seam Application Framework is the class "
+"<literal>Controller</literal> and its subclasses <literal>EntityController</"
+"literal><literal>HibernateEntityController</literal> and "
+"<literal>BusinessProcessController</literal>. These classes provide nothing "
+"more than some convenience methods for access to commonly used built-in "
+"components and methods of built-in components. They help save a few "
+"keystrokes (characters can add up!) and provide a great launchpad for new "
+"users to explore the rich functionality built in to Seam."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:166
+#, no-c-format
+msgid ""
+"For example, here is what <literal>RegisterAction</literal> from the Seam "
+"registration example would look like:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:169
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"register\")\n"
+"public class RegisterAction extends EntityController implements Register\n"
+"{\n"
+"\n"
+"   @In private User user;\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = createQuery(\"select u.username from User u where u."
+"username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getResultList();\n"
+"      \n"
+"      if ( existing.size()==0 )\n"
+"      {\n"
+"         persist(user);\n"
+"         info(\"Registered new user #{user.username}\");\n"
+"         return \"/registered.jspx\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         addFacesMessage(\"User #{user.username} already exists\");\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:170
+#, no-c-format
+msgid "As you can see, its not an earthshattering improvement..."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Gettingstarted.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Gettingstarted.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Gettingstarted.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,588 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Gettingstarted.xml:10
+#, no-c-format
+msgid "Getting started with Seam, using seam-gen"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:11
+#, no-c-format
+msgid ""
+"The Seam distribution includes a command line utility that makes it really "
+"easy to set up an Eclipse project, generate some simple Seam skeleton code, "
+"and reverse engineer an application from a pre-existing database."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:14
+#, no-c-format
+msgid ""
+"This is the easy way to get your feet wet with Seam, and gives you some "
+"ammunition for next time you find yourself trapped in an elevator with one "
+"of those tedious Ruby guys ranting about how great and wonderful his new toy "
+"is for building totally trivial applications that put things in databases."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:17
+#, no-c-format
+msgid ""
+"In this release, seam-gen works best for people with JBoss AS. You can use "
+"the generated project with other J2EE or Java EE 5 application servers by "
+"making a few manual changes to the project configuration."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:20
+#, no-c-format
+msgid ""
+"You <emphasis>can</emphasis> use seam-gen without Eclipse, but in this "
+"tutorial, we want to show you how to use it in conjunction with Eclipse for "
+"debugging and integration testing. If you don't want to install Eclipse, you "
+"can still follow along with this tutorial&mdash;all steps can be peformed "
+"from the command line."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:23
+#, no-c-format
+msgid ""
+"Seam-gen is basically just a big ugly Ant script wrapped around Hibernate "
+"Tools, together with some templates. Which means it is easy to customize if "
+"you need to."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:27
+#, no-c-format
+msgid "Before you start"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:28
+#, no-c-format
+msgid ""
+"Make sure you have JDK 5 or JDK 6, JBoss AS 4.0.5 and Ant 1.6, along with "
+"recent versions of Eclipse, the JBoss IDE plugin for Eclipse and the TestNG "
+"plugin for Eclipse correctly installed before starting. Add your JBoss "
+"installation to the JBoss Server View in Eclipse. Start JBoss in debug mode. "
+"Finally, start a command prompt in the directory where you unzipped the Seam "
+"distribution."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:34
+#, no-c-format
+msgid "Setting up a new Eclipse project"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:35
+#, no-c-format
+msgid ""
+"The first thing we need to do is configure seam-gen for your environment: "
+"JBoss AS installation directory, Eclipse workspace, and database connection. "
+"It's easy, just type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:38
+#, no-c-format
+msgid ""
+"cd jboss-seam-1.1.x\n"
+"seam setup"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:39
+#, no-c-format
+msgid "And you will be prompted for the needed information:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:42
+#, no-c-format
+msgid ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam setup\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"setup:\n"
+"    [echo] Welcome to seam-gen :-)\n"
+"    [input] Enter your Java project workspace [C:/Projects]\n"
+"\n"
+"    [input] Enter your JBoss home directory [C:/Program Files/jboss-4.0.5."
+"GA]\n"
+"\n"
+"    [input] Enter the project name [myproject]\n"
+"helloworld\n"
+"    [input] Is this project deployed as an EAR (with EJB components) or a "
+"WAR \n"
+"        (with no EJB support) [ear] (ear,war,)\n"
+"\n"
+"    [input] Enter the Java package name for your session beans [com.mydomain."
+"helloworld]\n"
+"org.jboss.helloworld\n"
+"    [input] Enter the Java package name for your entity beans [org.jboss."
+"helloworld]\n"
+"\n"
+"    [input] Enter the Java package name for your test cases [org.jboss."
+"helloworld.test]\n"
+"\n"
+"    [input] What kind of database are you using? [hsql]\n"
+"    (hsql,mysql,oracle,postgres,mssql,db2,sybase,)\n"
+"mysql\n"
+"    [input] Enter the Hibernate dialect for your database [org.hibernate."
+"dialect.MySQLDialect]\n"
+"\n"
+"    [input] Enter the filesystem path to the JDBC driver jar [lib/hsqldb."
+"jar]\n"
+"../../mysql-connector.jar\n"
+"    [input] Enter JDBC driver class for your database [com.mysql.jdbc."
+"Driver]\n"
+"\n"
+"    [input] Enter the JDBC URL for your database [jdbc:mysql:///test]\n"
+"\n"
+"    [input] Enter database username [sa]\n"
+"gavin\n"
+"    [input] Enter database password []\n"
+"\n"
+"    [input] Are you working with tables that already exist in the database? "
+"[n] (y,n,)\n"
+"y\n"
+"    [input] Do you want to drop and recreate the database tables and data in "
+"import.sql \n"
+"    each time you deploy? [n] (y,n,)\n"
+"n\n"
+"[propertyfile] Creating new property file: C:&#92;Projects&#92;jboss-"
+"seam&#92;seam-gen&#92;build.properties\n"
+"     [echo] Installing JDBC driver jar to JBoss server\n"
+"     [echo] Type 'seam new-project' to create the new project\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 1 minute 17 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:43
+#, no-c-format
+msgid ""
+"The tool provides sensible defaults, which you can accept by just pressing "
+"enter at the prompt."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:46
+#, no-c-format
+msgid ""
+"The most important choice you need to make is between EAR deployment and WAR "
+"deployment of your project. EAR projects support EJB 3.0 and require Java EE "
+"5. WAR projects do not support EJB 3.0, but may be deployed to a J2EE "
+"environment. The packaging of a WAR is also simpler to understand. If you "
+"installed JBoss with the ejb3 profile, choose <literal>ear</literal>. "
+"Otherwise, choose <literal>war</literal>. We'll assume that you've chosen an "
+"EAR deployment for the rest of the tutorial, but you can follow exactly the "
+"same steps for a WAR deployment."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:49
+#, no-c-format
+msgid ""
+"If you are working with an existing data model, make sure you tell seam-gen "
+"that the tables already exist in the database."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:52
+#, no-c-format
+msgid ""
+"The settings are stored in <literal>seam-gen/build.properties</literal>, but "
+"you can also modify them simply by running <literal>seam setup</literal> a "
+"second time."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:55
+#, no-c-format
+msgid ""
+"Now we can create a new project in our Eclipse workspace directory, by "
+"typing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:58
+#, no-c-format
+msgid "seam new-project"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:59
+#, no-c-format
+msgid ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam new-project\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"copy-lib:\n"
+"     [echo] Copying project jars ...\n"
+"     [copy] Copying 32 files to C:&#92;Projects&#92;helloworld&#92;lib\n"
+"     [copy] Copying 9 files to C:&#92;Projects&#92;helloworld&#92;embedded-"
+"ejb\n"
+"\n"
+"file-copy-wtp:\n"
+"\n"
+"file-copy:\n"
+"     [echo] Copying project resources ...\n"
+"     [copy] Copying 12 files to C:&#92;Projects&#92;helloworld&#92;"
+"resources\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;helloworld&#92;resources\n"
+"     [copy] Copying 5 files to C:&#92;Projects&#92;helloworld&#92;view\n"
+"     [copy] Copying 5 files to C:&#92;Projects&#92;helloworld\n"
+"    [mkdir] Created dir: C:&#92;Projects&#92;helloworld&#92;src\n"
+"\n"
+"new-project:\n"
+"     [echo] A new Seam project was created in the C:/Projects directory\n"
+"     [echo] Add the project from inside Eclipse (or type 'seam explode') and "
+"go to http://localhost:\n"
+"8080/helloworld\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 7 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:60
+#, no-c-format
+msgid ""
+"This copies the Seam jars, dependent jars and the JDBC driver jar to a new "
+"Eclipse project, and generates all needed resources and configuration files, "
+"a facelets template file and stylesheet, along with Eclipse metadata and an "
+"Ant build script. The Eclipse project will be automatically deployed to an "
+"exploded directory structure in JBoss AS as soon as you add the project "
+"using <literal>New -&gt; Project... -&gt; Java Project -&gt; Next</literal>, "
+"typing the <literal>Project name</literal> (<literal>myproject</literal> in "
+"this case), selecting your Java SE 5 or Java SE 6 JRE and then clicking "
+"<literal>Finish</literal>. Do not select <literal>Create new project from "
+"existing source</literal>. Alternatively, you can deploy the project from "
+"outside Eclipse by typing <literal>seam explode</literal>."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:63
+#, no-c-format
+msgid ""
+"Go to <literal>http://localhost:8080/helloworld</literal> to see a welcome "
+"page. This is a facelets page, <literal>view/home.xhtml</literal>, using the "
+"template <literal>view/layout/template.xhtml</literal>. You can edit this "
+"page, or the template, in eclipse, and see the results "
+"<emphasis>immediately</emphasis>, by clicking refresh in your browser."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:66
+#, no-c-format
+msgid ""
+"Don't get scared by the XML configuration documents that were generated into "
+"the project directory. They are mostly standard Java EE stuff, the stuff you "
+"need to create once and then never look at again, and they are 90&#37; the "
+"same between all Seam projects. (They are so easy to write that even seam-"
+"gen can do it.)"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:69
+#, no-c-format
+msgid ""
+"The generated project includes three database and persistence "
+"configurations. The <literal>jboss-beans.xml</literal>, <literal>persistence-"
+"test.xml</literal> and <literal>import-test.sql</literal> files are used "
+"when running the TestNG unit tests against HSQLDB. The database schema and "
+"the test data in <literal>import-test.sql</literal> is always exported to "
+"the database before running tests. The <literal>myproject-dev-ds.xml</"
+"literal>, <literal>persistence-dev.xml</literal>and <literal>import-dev.sql</"
+"literal> files are for use when deploying the application to your "
+"development database. The schema might be exported automatically at "
+"deployment, depending upon whether you told seam-gen that you are working "
+"with an existing database. The <literal>myproject-prod-ds.xml</literal>, "
+"<literal>persistence-prod.xml</literal>and <literal>import-prod.sql</"
+"literal> files are for use when deploying the application to your production "
+"database. The schema is not exported automatically at deployment."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:75
+#, no-c-format
+msgid "Creating a new action"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:76
+#, no-c-format
+msgid ""
+"If you're used to traditional action-style web frameworks, you're probably "
+"wondering how you can create a simple webpage with a stateless action method "
+"in Java. If you type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:79
+#, no-c-format
+msgid "seam new-action"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:80
+#, no-c-format
+msgid ""
+"Seam will prompt for some information, and generate a new facelets page and "
+"Seam component for your project."
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:83
+#, no-c-format
+msgid ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam new-action ping\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"action-input:\n"
+"    [input] Enter the Seam component name\n"
+"ping\n"
+"    [input] Enter the local interface name [Ping]\n"
+"\n"
+"    [input] Enter the bean class name [PingBean]\n"
+"\n"
+"    [input] Enter the action method name [ping]\n"
+"\n"
+"    [input] Enter the page name [ping]\n"
+"\n"
+"\n"
+"setup-filters:\n"
+"\n"
+"new-action:\n"
+"     [echo] Creating a new stateless session bean component with an action "
+"method\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;view\n"
+"     [echo] Type 'seam restart' and go to \n"
+"     http://localhost:8080/helloworld/ping.seam\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 13 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:84
+#, no-c-format
+msgid ""
+"Because we've added a new Seam component, we need to restart the exploded "
+"directory deployment. You can do this by typing <literal>seam restart</"
+"literal>, or by running the <literal>restart</literal> target in the "
+"generated project <literal>build.xml</literal> file from inside Eclipse. "
+"Another way to force a restart is to edit the file <literal>resources/META-"
+"INF/application.xml</literal> in Eclipse. <emphasis>Note that you do not "
+"need to restart JBoss each time you change the application.</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:87
+#, no-c-format
+msgid ""
+"Now go to <literal>http://localhost:8080/helloworld/ping.seam</literal> and "
+"click the button. You can see the code behind this action by looking in the "
+"project <literal>src</literal> directory. Put a breakpoint in the "
+"<literal>ping()</literal> method, and click the button again."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:90
+#, no-c-format
+msgid ""
+"Finally, locate the <literal>PingTest.xml</literal> file in the test package "
+"and run the integration tests using the TestNG plugin for Eclipse. "
+"Alternatively, run the tests using <literal>seam test</literal> or the "
+"<literal>test</literal> target of the generated build."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:96
+#, no-c-format
+msgid "Creating a form with an action"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:97
+#, no-c-format
+msgid "The next step is to create a form. Type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:100
+#, no-c-format
+msgid "seam new-form"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:101
+#, no-c-format
+msgid ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam new-form\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"action-input:\n"
+"    [input] Enter the Seam component name\n"
+"hello\n"
+"    [input] Enter the local interface name [Hello]\n"
+"\n"
+"    [input] Enter the bean class name [HelloBean]\n"
+"\n"
+"    [input] Enter the action method name [hello]\n"
+"\n"
+"    [input] Enter the page name [hello]\n"
+"\n"
+"\n"
+"setup-filters:\n"
+"\n"
+"new-form:\n"
+"     [echo] Creating a new stateful session bean component with an action "
+"method\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;view\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [echo] Type 'seam restart' and go to http://localhost:8080/hello/hello."
+"seam\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 5 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:102
+#, no-c-format
+msgid ""
+"Restart the application again, and go to <literal>http://localhost:8080/"
+"helloworld/hello.seam</literal>. Then take a look at the generated code. Run "
+"the test. Try adding some new fields to the form and Seam component "
+"(remember to restart the deploment each time you change the Java code)."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:108
+#, no-c-format
+msgid "Generating an application from an existing database"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:109
+#, no-c-format
+msgid ""
+"Manually create some tables in your database. (If you need to switch to a "
+"different database, just run <literal>seam setup</literal> again.) Now type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:112
+#, no-c-format
+msgid "seam generate-entities"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:113
+#, no-c-format
+msgid ""
+"Restart the deployment, and go to <literal>http://localhost:8080/helloworld</"
+"literal>. You can browse the database, edit existing objects, and create new "
+"objects. If you look at the generated code, you'll probably be amazed how "
+"simple it is! Seam was designed so that data access code is easy to write by "
+"hand, even for people who don't want to cheat by using seam-gen."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:119
+#, no-c-format
+msgid "Deploying the application as an EAR"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:120
+#, no-c-format
+msgid ""
+"Finally, we want to be able to deploy the application using standard Java EE "
+"5 packaging. First, we need to remove the exploded directory by running "
+"<literal>seam unexplode</literal>. To deploy the EAR, we can type "
+"<literal>seam deploy</literal> at the command prompt, or run the "
+"<literal>deploy</literal> target of the generated project build script. You "
+"can undeploy using <literal>seam undeploy</literal> or the "
+"<literal>undeploy</literal> target."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:123
+#, no-c-format
+msgid ""
+"By default, the application will be deployed with the <emphasis>dev profile</"
+"emphasis>. The EAR will include the <literal>persistence-dev.xml</literal> "
+"and <literal>import-dev.sql</literal> files, and the <literal>myproject-dev-"
+"ds.xml</literal> file will be deployed. You can change the profile, and use "
+"the <emphasis>prod profile</emphasis>, by typing"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:126
+#, no-c-format
+msgid "seam -Dprofile=prod deploy"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:127
+#, no-c-format
+msgid ""
+"You can even define new deployment profiles for your application. Just add "
+"appropriately named files to your project&mdash;for example, "
+"<literal>persistence-staging.xml</literal>, <literal>import-staging.sql</"
+"literal> and <literal>myproject-staging-ds.xml</literal>&mdash;and select "
+"the name of the profile using <literal>-Dprofile=staging</literal>."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/I18n.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/I18n.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/I18n.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,533 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: I18n.xml:10
+#, no-c-format
+msgid "Internationalization and themes"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:11
+#, no-c-format
+msgid ""
+"Seam makes it easy to build internationalized applications by providing "
+"several built-in components for handling multi-language UI messages."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:15
+#, no-c-format
+msgid "Locales"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:16
+#, no-c-format
+msgid ""
+"Each user login session has an associated instance of <literal>java.util."
+"Locale</literal> (available to the application as a session-scoped component "
+"named <literal>locale</literal>). Under normal circumstances, you won't need "
+"to do any special configuration to set the locale. Seam just delegates to "
+"JSF to determine the active locale:"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:21
+#, no-c-format
+msgid ""
+"If there is a locale associated with the HTTP request (the browser locale), "
+"and that locale is in the list of supported locales from <literal>faces-"
+"config.xml</literal>, use that locale for the rest of the session."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:24
+#, no-c-format
+msgid ""
+"Otherwise, if a default locale was specified in the <literal>faces-config."
+"xml</literal>, use that locale for the rest of the session."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:27
+#, no-c-format
+msgid "Otherwise, use the default locale of the server."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:30
+#, no-c-format
+msgid ""
+"It is <emphasis>possible</emphasis> to set the locale manually via the Seam "
+"configuration properties <literal>org.jboss.seam.core.localeSelector."
+"language</literal>, <literal>org.jboss.seam.core.localeSelector.country</"
+"literal> and <literal>org.jboss.seam.core.localeSelector.variant</literal>, "
+"but we can't think of any good reason to ever do this."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:33
+#, no-c-format
+msgid ""
+"It is, however, useful to allow the user to set the locale manually via the "
+"application user interface. Seam provides built-in functionality for "
+"overriding the locale determined by the algorithm above. All you have to do "
+"is add the following fragment to a form in your JSP or Facelets page:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:36
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{localeSelector.language}\"&gt;\n"
+"    &lt;f:selectItem itemLabel=\"English\" itemValue=\"en\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Deutsch\" itemValue=\"de\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Francais\" itemValue=\"fr\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{localeSelector.select}\" value=\"#{messages"
+"['ChangeLanguage']}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:37
+#, no-c-format
+msgid ""
+"Or, if you want a list of all supported locales from <literal>faces-config."
+"xml</literal>, just use:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:40
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{localeSelector.localeString}\"&gt;\n"
+"    &lt;f:selectItems value=\"#{localeSelector.supportedLocales}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{localeSelector.select}\" value=\"#{messages"
+"['ChangeLanguage']}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:41
+#, no-c-format
+msgid ""
+"When this use selects an item from the drop-down, and clicks the button, the "
+"Seam and JSF locales will be overridden for the rest of the session."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:47
+#, no-c-format
+msgid "Labels"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:48
+#, no-c-format
+msgid ""
+"JSF supports internationalization of user interface labels and descriptive "
+"text via the use of <literal>&lt;f:loadBundle /&gt;</literal>. You can use "
+"this approach in Seam applications. Alternatively, you can take advantage of "
+"the Seam <literal>messages</literal> component to display templated labels "
+"with embedded EL expressions."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:52
+#, no-c-format
+msgid "Defining labels"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:53
+#, no-c-format
+msgid ""
+"Each login session has an associated instance of <literal>java.util."
+"ResourceBundle</literal> (available to the application as a session-scoped "
+"component named <literal>org.jboss.seam.core.resourceBundle</literal>). "
+"You'll need to make your internationalized labels available via this special "
+"resource bundle. By default, the resource bundle used by Seam is named "
+"<literal>messages</literal> and so you'll need to define your labels in "
+"files named <literal>messages.properties</literal>, <literal>messages_en."
+"properties</literal>, <literal>messages_en_AU.properties</literal>, etc. "
+"These files usually belong in the <literal>WEB-INF/classes</literal> "
+"directory."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:56
+#, no-c-format
+msgid "So, in <literal>messages_en.properties</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:59
+#, no-c-format
+msgid "Hello=Hello"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:60
+#, no-c-format
+msgid "And in <literal>messages_en_AU.properties</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:63
+#, no-c-format
+msgid "Hello=G'day"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:64
+#, no-c-format
+msgid ""
+"You can select a different name for the resource bundle by setting the Seam "
+"configuration property named <literal>org.jboss.seam.core.resourceBundle."
+"bundleNames</literal>. You can even specify a list of resource bundle names "
+"to be searched (depth first) for messages."
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:67
+#, no-c-format
+msgid ""
+"&lt;core:resource-bundle&gt;\n"
+"    &lt;core:bundle-names&gt;\n"
+"        &lt;value&gt;mycompany_messages&lt;/value&gt;\n"
+"        &lt;value&gt;standard_messages&lt;/value&gt;       \n"
+"    &lt;/core:bundle-names&gt;\n"
+"&lt;/core:resource-bundle&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:68
+#, no-c-format
+msgid ""
+"If you want to define a message just for a particular page, you can specify "
+"it in a resource bundle with the same name as the JSF view id, with the "
+"leading <literal>/</literal> and trailing file extension removed. So we "
+"could put our message in <literal>welcome/hello_en.properties</literal> if "
+"we only needed to display the message on <literal>/welcome/hello.jsp</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:71
+#, no-c-format
+msgid ""
+"You can even specify an explicit bundle name in <literal>pages.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:74
+#, no-c-format
+msgid "&lt;page view-id=\"/welcome/hello.jsp\" bundle=\"HelloMessages\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:75
+#, no-c-format
+msgid ""
+"Then we could use messages defined in <literal>HelloMessages.properties</"
+"literal> on <literal>/welcome/hello.jsp</literal>."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:81
+#, no-c-format
+msgid "Displaying labels"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:82
+#, no-c-format
+msgid ""
+"If you define your labels using the Seam resource bundle, you'll be able to "
+"use them without having to type <literal>&lt;f:loadBundle ... /&gt;</"
+"literal> on every page. Instead, you can simply type:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:85
+#, no-c-format
+msgid "&lt;h:outputText value=\"#{messages['Hello']}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:86
+#, no-c-format
+msgid "<para>or:</para>"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:89
+#, no-c-format
+msgid "&lt;h:outputText value=\"#{messages.Hello}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:90
+#, no-c-format
+msgid "Even better, the messages themselves may contain EL expressions:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:93
+#, no-c-format
+msgid "Hello=Hello, #{user.firstName} #{user.lastName}"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:94
+#, no-c-format
+msgid "Hello=G'day, #{user.firstName}"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:95
+#, no-c-format
+msgid "You can even use the messages in your code:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:98
+#, no-c-format
+msgid "@In private Map&lt;String, String&gt; messages;"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:99
+#, no-c-format
+msgid "@In(\"#{messages['Hello']}\") private String helloMessage;"
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:103
+#, no-c-format
+msgid "Faces messages"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:104
+#, no-c-format
+msgid ""
+"The <literal>facesMessages</literal> component is a super-convenient way to "
+"display success or failure messages to the user. The functionality we just "
+"described also works for faces messages:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:107
+#, no-c-format
+msgid ""
+"@Name(\"hello\")\n"
+"@Stateless\n"
+"public class HelloBean implements Hello {\n"
+"    @In FacesMessages facesMessages;\n"
+"    \n"
+"    public String sayIt() {\n"
+"        facesMessages.addFromResourceBundle(\"Hello\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:108
+#, no-c-format
+msgid ""
+"This will display <literal>Hello, Gavin King</literal> or <literal>G'day, "
+"Gavin</literal>, depending upon the user's locale."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:116
+#, no-c-format
+msgid "Timezones"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:117
+#, no-c-format
+msgid ""
+"There is also a session-scoped instance of <literal>java.util.Timezone</"
+"literal>, named <literal>org.jboss.seam.core.timezone</literal>, and a Seam "
+"component for changing the timezone named <literal>org.jboss.seam.core."
+"timezoneSelector</literal>. By default, the timezone is the default timezone "
+"of the server. Unfortunately, the JSF specification says that all dates and "
+"times should be assumed to be UTC, and displayed as UTC, unless a timezone "
+"is explicitly specified using <literal>&lt;f:convertDateTime&gt;</literal>. "
+"This is an extremely inconvenient default behavior."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:120
+#, no-c-format
+msgid ""
+"Seam overrides this behavior, and defaults all dates and times to the Seam "
+"timezone. In addition, Seam provides the <literal>&lt;s:convertDateTime&gt;</"
+"literal> tag which always performs conversions in the Seam timezone."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:126
+#, no-c-format
+msgid "Themes"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:127
+#, no-c-format
+msgid ""
+"Seam applications are also very easily skinnable. The theme API is very "
+"similar to the localization API, but of course these two concerns are "
+"orthogonal, and some applications support both localization and themes."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:130
+#, no-c-format
+msgid "First, configure the set of supported themes:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:133
+#, no-c-format
+msgid ""
+"&lt;theme:theme-selector cookie-enabled=\"true\"&gt;\n"
+"    &lt;theme:available-themes&gt;\n"
+"        &lt;value&gt;default&lt;/value&gt;\n"
+"        &lt;value&gt;accessible&lt;/value&gt;\n"
+"        &lt;value&gt;printable&lt;/value&gt;\n"
+"    &lt;/theme:available-themes&gt;\n"
+"&lt;/theme:theme-selector&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:134
+#, no-c-format
+msgid "Note that the first theme listed is the default theme."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:137
+#, no-c-format
+msgid ""
+"Themes are defined in a properties file with the same name as the theme. For "
+"example, the <literal>default</literal> theme is defined as a set of entries "
+"in <literal>default.properties</literal>. For example, <literal>default."
+"properties</literal> might define:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:140
+#, no-c-format
+msgid ""
+"css ../screen.css\n"
+"template template.xhtml"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:141
+#, no-c-format
+msgid ""
+"Usually the entries in a theme resource bundle will be paths to CSS styles "
+"or images and names of facelets templates (unlike localization resource "
+"bundles which are usually text)."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:144
+#, no-c-format
+msgid ""
+"Now we can use these entries in our JSP or facelets pages. For example, to "
+"theme the stylesheet in a facelets page:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:147
+#, no-c-format
+msgid ""
+"&lt;link href=\"#{theme.css}\" rel=\"stylesheet\" type=\"text/css\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:148
+#, no-c-format
+msgid ""
+"Most powerfully, facelets lets us theme the template used by a <literal>&lt;"
+"ui:composition&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:151
+#, no-c-format
+msgid ""
+"&lt;ui:composition xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"    xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"    xmlns:h=\"http://java.sun.com/jsf/html\"\n"
+"    xmlns:f=\"http://java.sun.com/jsf/core\"\n"
+"    template=\"#{theme.template}\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:152
+#, no-c-format
+msgid ""
+"Just like the locale selector, there is a built-in theme selector to allow "
+"the user to freely switch themes:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:155
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{themeSelector.theme}\"&gt;\n"
+"    &lt;f:selectItems value=\"#{themeSelector.themes}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{themeSelector.select}\" value=\"Select Theme"
+"\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:159
+#, no-c-format
+msgid "Persisting locale and theme preferences via cookies"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:160
+#, no-c-format
+msgid ""
+"The locale selector, theme selector and timezone selector all support "
+"persistence of locale and theme preference to a cookie. Simply set the "
+"<literal>cookie-enabled</literal> configuration property:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:163
+#, no-c-format
+msgid ""
+"&lt;theme:theme-selector cookie-enabled=\"true\"&gt;\n"
+"    &lt;theme:available-themes&gt;\n"
+"        &lt;value&gt;default&lt;/value&gt;\n"
+"        &lt;value&gt;accessible&lt;/value&gt;\n"
+"        &lt;value&gt;printable&lt;/value&gt;\n"
+"    &lt;/theme:available-themes&gt;\n"
+"&lt;/theme:theme-selector&gt;\n"
+"\n"
+"&lt;core:locale-selector cookie-enabled=\"true\"/&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Itext.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Itext.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Itext.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1452 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Itext.xml:10
+#, no-c-format
+msgid "iText PDF generation"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:11
+#, no-c-format
+msgid ""
+"Seam now includes an component set for generating documents using iText. The "
+"primary focus of Seam's iText document support is for the generation of PDF "
+"doucuments, but Seam also offers basic support for RTF document generation."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:15
+#, no-c-format
+msgid "Using PDF Support"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:16
+#, no-c-format
+msgid ""
+"iText support is provided by <literal>jboss-seam-pdf.jar</literal>. This JAR "
+"contains the iText JSF controls, which are used to construct views that can "
+"render to PDF, and the DocumentStore component, which serves the rendered "
+"documents to the user. To include PDF support in your application, included "
+"<literal>jboss-seam-pdf.jar</literal> in your <literal>WEB-INF/lib</literal> "
+"directory along with the iText JAR file. There is no further configuration "
+"needed to use Seam's iText support."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:19
+#, no-c-format
+msgid ""
+"The Seam iText module requires the use of Facelets as the view technology. "
+"Future versions of the library may also support the use of JSP. "
+"Additionally, it requires the use of the seam-ui package."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:22
+#, no-c-format
+msgid ""
+"The <literal>examples/itext</literal> project contains an example of the PDF "
+"support in action. It demonstrates proper deployment packaging, and it "
+"contains a number examples that demonstrate the key PDF generation features "
+"current supported."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:28
+#, no-c-format
+msgid "Creating a document"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:29
+#, no-c-format
+msgid ""
+"Documents are generated by facelets documents using tags in the "
+"<literal>http://jboss.com/products/seam/pdf</literal> namespace. Documents "
+"should always have the <literal>document</literal> tag at the root of the "
+"document. The <literal>document</literal> tag prepares Seam to generate a "
+"document into the DocumentStore and renders an HTML redirect to that stored "
+"content. The following is a a small PDF document consisting only a single "
+"line of text:"
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:32
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf"
+"\"&gt;                                                      \n"
+"   The document goes "
+"here.                                                                                             \n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:34
+#, no-c-format
+msgid "p:document"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:35
+#, no-c-format
+msgid ""
+"The <literal>p:document</literal> tag supports the following attributes:"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:40
+#, no-c-format
+msgid "type"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:42
+#, no-c-format
+msgid ""
+"The type of the document to be produced. Valid values are <literal>PDF</"
+"literal>, <literal>RTF</literal> and <literal>HTML</literal> modes. Seam "
+"defaults to PDF generation, and many of the features only work correctly "
+"when generating PDF documents."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:48
+#, no-c-format
+msgid "pageSize"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:50
+#, no-c-format
+msgid ""
+"The size of the page to be generate. The most commonly used values would be "
+"<literal>LETTER</literal> and <literal>A4</literal>. A full list of "
+"supported pages sizes can be found in <literal>com.lowagie.text.PageSize</"
+"literal> class. Alternatively, pageSize can provide the width and height of "
+"the page directly. The value \"612 792\", for example, is equizalent to the "
+"LETTER page size."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:56
+#, no-c-format
+msgid "orientation"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:58
+#, no-c-format
+msgid ""
+"The orientation of the page. Valid values are <literal>portrait</literal> "
+"and <literal>landscape</literal>. In landscape mode, the height and width "
+"page size values are reversed."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:64
+#, no-c-format
+msgid "margins"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:66
+#, no-c-format
+msgid "The left, right, top and bottom margin values."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:72
+#, no-c-format
+msgid "marginMirroring"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:74
+#, no-c-format
+msgid "Indicates that margin settings should be reversed an alternating pages."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:80
+#, no-c-format
+msgid ""
+"Document metadata is also set as attributes of the document tag. The "
+"following metadata fields are supported:"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:85
+#, no-c-format
+msgid "title"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:92
+#, no-c-format
+msgid "subject"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:99
+#, no-c-format
+msgid "keywords"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:106
+#, no-c-format
+msgid "author"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:113
+#, no-c-format
+msgid "creator"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:125
+#, no-c-format
+msgid "Basic Text Elements"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:126
+#, no-c-format
+msgid ""
+"Useful documents will need to contain more than just text; however, the "
+"standard UI components are geared towards HTML generation and are not useful "
+"for generating PDF content. Instead, Seam provides a special UI components "
+"for generating suitable PDF content. Tags like <literal>&lt;p:image&gt;</"
+"literal> and <literal>&lt;p:paragraph&gt;</literal> are the basic "
+"foundations of simple documents. Tags like <literal>&lt;p:font&gt;</literal> "
+"provide style information to all the content surrounging them."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:129
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"&gt; \n"
+"    &lt;p:image alignment=\"right\" wrap=\"true\" resource=\"/logo.jpg\" /"
+"&gt;\n"
+"    &lt;p:font size=\"24\"&gt;\n"
+"        &lt;p:paragraph spacingAfter=\"50\"&gt;My First Document&lt;/p:"
+"paragraph&gt;\n"
+"    &lt;/p:font&gt;\n"
+"\n"
+"    &lt;p:paragraph alignment=\"justify\"&gt;\n"
+"        This is a simple document.  It isn't very fancy.\n"
+"    &lt;/p:paragraph&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:131
+#, no-c-format
+msgid "p:paragraph"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:132
+#, no-c-format
+msgid ""
+"Most uses of text should be sectioned into paragraphs so that text fragments "
+"can be flowed, formatted and styled in logical groups."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:137
+#, no-c-format
+msgid "firstLineIndent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:144 Itext.xml:836
+#, no-c-format
+msgid "extraParagraphSpace"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:151 Itext.xml:808
+#, no-c-format
+msgid "leading"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:158 Itext.xml:815
+#, no-c-format
+msgid "multipliedLeading"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:165 Itext.xml:344 Itext.xml:716
+#, no-c-format
+msgid "spacingBefore"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:167 Itext.xml:346 Itext.xml:718
+#, no-c-format
+msgid "The blank space to be inserted before the element."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:173 Itext.xml:352 Itext.xml:724
+#, no-c-format
+msgid "spacingAfter"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:175 Itext.xml:354 Itext.xml:726
+#, no-c-format
+msgid "The blank space to be inserted after the element."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:181 Itext.xml:330 Itext.xml:599
+#, no-c-format
+msgid "indentationLeft"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:188 Itext.xml:337 Itext.xml:607
+#, no-c-format
+msgid "indentationRight"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:195 Itext.xml:753
+#, no-c-format
+msgid "keepTogether"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:205
+#, no-c-format
+msgid "p:text"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:206
+#, no-c-format
+msgid ""
+"The <literal>text</literal> tag allows text fragments to be produced from "
+"application data using normal JSF converter mechanisms. It is very similar "
+"to the <literal>outputText</literal> tag used when rendering HTML documents. "
+"Here is an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:209
+#, no-c-format
+msgid ""
+"&lt;p:paragraph&gt;\n"
+"    The item costs &lt;p:text value=\"#{product.price}\"&gt;\n"
+"        &lt;f:convertNumber type=\"currency\" currencySymbol=\"&#36;\"/&gt;\n"
+"    &lt;/p:text&gt;\n"
+"&lt;/p:paragraph&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:212
+#, no-c-format
+msgid "value"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:214
+#, no-c-format
+msgid ""
+"The value to be displayed. This will typically be a value binding expression."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:223
+#, no-c-format
+msgid "p:font"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:224
+#, no-c-format
+msgid "Font declarations have no direct"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:229
+#, no-c-format
+msgid "familyName"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:231
+#, no-c-format
+msgid ""
+"The font family. One of: <literal>COURIER</literal>, <literal>HELVETICA</"
+"literal>, <literal>TIMES-ROMAN</literal>, <literal>SYMBOL</literal> or "
+"<literal>ZAPFDINGBATS</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:237
+#, no-c-format
+msgid "size"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:239
+#, no-c-format
+msgid "The point size of the font."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:245 Itext.xml:534
+#, no-c-format
+msgid "style"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:247
+#, no-c-format
+msgid ""
+"The font styles. Any combination of : <literal>NORMAL</literal>, "
+"<literal>BOLD</literal>, <literal>ITALIC</literal>, <literal>OBLIQUE</"
+"literal>, <literal>UNDERLINE</literal>, <literal>LINE-THROUGH</literal>"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:256
+#, no-c-format
+msgid "p:newPage"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:257
+#, no-c-format
+msgid "<literal>p:newPage</literal> inserts a page break."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:263
+#, no-c-format
+msgid "p:image"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:264
+#, no-c-format
+msgid ""
+"<literal>p:image</literal> inserts an image into the document. Images can be "
+"be loaded from the classpath or from the web application context using the "
+"<literal>resource</literal> attribute."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:267
+#, no-c-format
+msgid "&lt;p:image resource=\"/jboss.jpg\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:268
+#, no-c-format
+msgid ""
+"Resources can also be dynamically generated by application code. The "
+"<literal>imageData</literal> attribute can specify a value binding "
+"expression whose value is a <literal>java.awt.Image</literal> object."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:271
+#, no-c-format
+msgid "&lt;p:image imageData=\"#{images.chart}\" /&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:274
+#, no-c-format
+msgid "resource"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:276
+#, no-c-format
+msgid ""
+"The location of the image resource to be included. Resources should be "
+"relative to the document root of the web application."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:282
+#, no-c-format
+msgid "imageData"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:284
+#, no-c-format
+msgid "A method expression binding to an application-generated image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:290 Itext.xml:913
+#, no-c-format
+msgid "rotation"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:292
+#, no-c-format
+msgid "The rotation of the image in degrees."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:298
+#, no-c-format
+msgid "height"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:300
+#, no-c-format
+msgid "The height of the image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:306
+#, no-c-format
+msgid "width"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:308
+#, no-c-format
+msgid "The width of the image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:314 Itext.xml:441 Itext.xml:591
+#, no-c-format
+msgid "alignment"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:316
+#, no-c-format
+msgid ""
+"The alignment of the image. (see <xref linkend=\"Document_Constants-"
+"Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:322
+#, no-c-format
+msgid "<literal>alt</literal>"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:324
+#, no-c-format
+msgid "Alternative text representation for the image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:360 Itext.xml:672
+#, no-c-format
+msgid "widthPercentage"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:367
+#, no-c-format
+msgid "initialRotation"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:374
+#, no-c-format
+msgid "<literal>dpi</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:381
+#, no-c-format
+msgid "scalePercent"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:383
+#, no-c-format
+msgid ""
+"The scaling factor (as a percentage) to use for the image. This can be "
+"expressed as a single percentage value or as two percentage values "
+"representing separate x and y scaling percentages."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:389
+#, no-c-format
+msgid "wrap"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:396
+#, no-c-format
+msgid "underlying"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:406
+#, no-c-format
+msgid "p:anchor"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:407
+#, no-c-format
+msgid ""
+"<literal>p:anchor</literal> defines clickable links from a document. It "
+"supports the following attributes:"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:412
+#, no-c-format
+msgid "name"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:414
+#, no-c-format
+msgid "The name of an in-document anchor destination."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:420
+#, no-c-format
+msgid "reference"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:422
+#, no-c-format
+msgid ""
+"The destination the link refers to. Links to other points in the document "
+"should begin with a \"#\". For example, \"#link1\" to refer to an anchor "
+"postion with a <literal>name</literal> of <literal>link1</literal>. Links "
+"may also be a full URL to point to a resource outside of the document."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:433
+#, no-c-format
+msgid "Headers and Footers"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:435
+#, no-c-format
+msgid "p:header and p:footer"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:436
+#, no-c-format
+msgid ""
+"The <literal>p:header</literal> and <literal>p:footer</literal> components "
+"provide the ability to place header and footer text on each page of a "
+"generated document, with the exception of the first page. Header and footer "
+"declarations should appear near the top of a document."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:443
+#, no-c-format
+msgid ""
+"The alignment of the header/footer box section. (see <xref linkend="
+"\"Document_Constants-Alignment_Values\"/> for alignment values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:449
+#, no-c-format
+msgid "backgroundColor"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:451
+#, no-c-format
+msgid ""
+"The background color of the header/footer box. (see <xref linkend="
+"\"Document_Constants-Color_Values\"/> for color values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:457
+#, no-c-format
+msgid "borderColor"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:459
+#, no-c-format
+msgid ""
+"The border color of the header/footer box. Individual border sides can be "
+"set using <literal>borderColorLeft</literal>, <literal>borderColorRight</"
+"literal>, <literal>borderColorTop</literal> and <literal>borderColorBottom</"
+"literal>.(see <xref linkend=\"Document_Constants-Color_Values\"/> for color "
+"values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:465
+#, no-c-format
+msgid "borderWidth"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:467
+#, no-c-format
+msgid ""
+"The width of the border. Inidvidual border sides can be specified using "
+"<literal>borderWidthLeft</literal>, <literal>borderWidthRight</literal>, "
+"<literal>borderWidthTop</literal> and <literal>borderWidthBottom</literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:476
+#, no-c-format
+msgid "p:pageNumber"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:477
+#, no-c-format
+msgid ""
+"The current page number can be placed inside of a header or footer using the "
+"<literal>p:pageNumber</literal> tag. The page number tag can only be used in "
+"the context of a header or footer and can only be used once."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:485
+#, no-c-format
+msgid "Chapters and Sections"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:486
+#, no-c-format
+msgid ""
+"If the generated document follows a book/article structure, the <literal>p:"
+"chapter</literal> and <literal>p:section</literal> tags can be used to "
+"provide the necessary structure. Sections can only be used inside of "
+"chapters, but they may be nested arbitrarily deep. Most PDF viewers provide "
+"easy navigation between chapters and sections in a document."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:489
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"\n"
+"            title=\"Hello\"&gt;\n"
+"\n"
+"   &lt;p:chapter number=\"1\"&gt;\n"
+"      &lt;p:title&gt;&lt;p:paragraph&gt;Hello&lt;/p:paragraph&gt;&lt;/p:"
+"title&gt;\n"
+"      &lt;p:paragraph&gt;Hello #{user.name}!&lt;/p:paragraph&gt;\n"
+"   &lt;/p:chapter&gt;\n"
+"\n"
+"   &lt;p:chapter number=\"2\"&gt;\n"
+"      &lt;p:title&gt;&lt;p:paragraph&gt;Goodbye&lt;/p:paragraph&gt;&lt;/p:"
+"title&gt;\n"
+"      &lt;p:paragraph&gt;Goodbye #{user.name}.&lt;/p:paragraph&gt;\n"
+"   &lt;/p:chapter&gt;\n"
+"\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:491
+#, no-c-format
+msgid "p:chapter and p:section"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:494
+#, no-c-format
+msgid "number"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:496
+#, no-c-format
+msgid "The chapter number. Every chapter should be assigned a chapter number."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:502
+#, no-c-format
+msgid "numberDepth"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:504
+#, no-c-format
+msgid ""
+"The depth of numbering for section. All sections are numbered relative to "
+"their surrounding chapter/sections. The fourth section of of the first "
+"section of chapter three would be section 3.1.4, if displayed at the default "
+"number depth of three. To omit the chapter number, a number depth of 2 "
+"should be used. In that case, the section number would be displayed as 1.4."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:513
+#, no-c-format
+msgid "p:title"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:514
+#, no-c-format
+msgid ""
+"Any chapter or section can contain a <literal>p:title</literal>. The title "
+"will be displayed next to the chapter/section number. The body of the title "
+"may contain raw text or may be a <literal>p:paragraph</literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:522
+#, no-c-format
+msgid "Lists"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:523
+#, no-c-format
+msgid ""
+"List structures can be displayed using the <literal>p:list</literal> and "
+"<literal>p:listItem</literal> tags. Lists may contain arbitrarily-nested "
+"sublists. List items may not be used outside of a list. he following "
+"document uses the <literal>ui:repeat</literal> tag to to display a list of "
+"values retrieved from a Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:526
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"\n"
+"            xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"            title=\"Hello\"&gt;\n"
+"   &lt;p:list style=\"numbered\"&gt;\n"
+"      &lt;ui:repeat value=\"#{documents}\" var=\"doc\"&gt;\n"
+"         &lt;p:listItem&gt;#{doc.name}&lt;/p:listItem&gt;\n"
+"      &lt;/ui:repeat&gt;\n"
+"   &lt;/p:list&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:528
+#, no-c-format
+msgid "p:list"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:529
+#, no-c-format
+msgid "<literal>p:list</literal> supports the following attributes:"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:536
+#, no-c-format
+msgid ""
+"The ordering/bulleting style of list. One of: <literal>NUMBERED</literal>, "
+"<literal>LETTERED</literal>, <literal>GREEK</literal>, <literal>ROMAN</"
+"literal>, <literal>ZAPFDINGBATS</literal>, <literal>ZAPFDINGBATS_NUMBER</"
+"literal>. If no style is given, the list items are bulleted."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:542 Itext.xml:615
+#, no-c-format
+msgid "listSymbol"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:544
+#, no-c-format
+msgid "For bulleted lists, specifies the bullet symbol."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:550 Itext.xml:822
+#, no-c-format
+msgid "indent"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:552
+#, no-c-format
+msgid "The indentation level of the list."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:558
+#, no-c-format
+msgid "lowerCase"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:560
+#, no-c-format
+msgid ""
+"For list styles using letters, indicates whether the letters should be lower "
+"case."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:566
+#, no-c-format
+msgid "charNumber"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:568
+#, no-c-format
+msgid "For ZAPFDINGBATS, indicates the character code of the bullet character."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:574
+#, no-c-format
+msgid "numberType"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:576
+#, no-c-format
+msgid "For ZAPFDINGBATS_NUMBER, indicates the numbering style."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:585
+#, no-c-format
+msgid "p:listItem"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:586
+#, no-c-format
+msgid "<literal>p:listItem</literal> supports the following attributes:"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:593
+#, no-c-format
+msgid ""
+"The alignment of the list item. (See <xref linkend=\"Document_Constants-"
+"Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:601
+#, no-c-format
+msgid "The left indentation amount."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:609
+#, no-c-format
+msgid "The right indentation amount."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:617
+#, no-c-format
+msgid "Overrides the default list symbol for this list item."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:628
+#, no-c-format
+msgid "Tables"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:629
+#, no-c-format
+msgid ""
+"Table structures can be created using the <literal>p:table</literal> and "
+"<literal>p:cell</literal> tags. Unlike many table structures, there is no "
+"explicit row declaration. If a table has 3 columns, then every 3 cells will "
+"automatically form a row. Header and footer rows can be declared, and the "
+"headers and footers will be repeated in the event a table structure spans "
+"multiple pages."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:632
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"   \n"
+"            xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"            title=\"Hello\"&gt;   \n"
+"   &lt;p:table columns=\"3\" headerRows=\"1\"&gt;\n"
+"      &lt;p:cell&gt;name&lt;/p:cell&gt;\n"
+"      &lt;p:cell&gt;owner&lt;/p:cell&gt;\n"
+"      &lt;p:cell&gt;size&lt;/p:cell&gt;\n"
+"      &lt;ui:repeat value=\"#{documents}\" var=\"doc\"&gt;\n"
+"         &lt;p:cell&gt;#{doc.name}&lt;/p:cell&gt;\n"
+"         &lt;p:cell&gt;#{doc.user.name}&lt;/p:cell&gt;\n"
+"         &lt;p:cell&gt;#{doc.size}&lt;/p:cell&gt;\n"
+"      &lt;/ui:repeat&gt;\n"
+"   &lt;/p:table&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:634
+#, no-c-format
+msgid "p:table"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:635
+#, no-c-format
+msgid "<literal>p:table</literal> supports the following attributes."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:640
+#, no-c-format
+msgid "columns"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:642
+#, no-c-format
+msgid "The number of columns (cells) that make up a table row."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:648
+#, no-c-format
+msgid "widths"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:650
+#, no-c-format
+msgid ""
+"The relative widths of each column. There should be one value for each "
+"column. For example: widths=\"2 1 1\" would indicate that there are 3 "
+"columns and the first column should be twice the size of the second and "
+"third column."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:656
+#, no-c-format
+msgid "headerRows"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:658
+#, no-c-format
+msgid ""
+"The initial number of rows which are considered to be headers or footer rows "
+"and should be repeated if the table spans multiple pages."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:664
+#, no-c-format
+msgid "footerRows"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:666
+#, no-c-format
+msgid ""
+"The number of rows that are considered to be footer rows. This value is "
+"subtracted from the <literal>headerRows</literal> value. If document has 2 "
+"rows which make up the header and one row that makes up the footer, "
+"<literal>headerRows</literal> should be set to 3 and <literal>footerRows</"
+"literal> should be set to 1"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:674
+#, no-c-format
+msgid "The percentage of the page width that the table spans."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:680 Itext.xml:777
+#, no-c-format
+msgid "horizontalAlignment"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:682
+#, no-c-format
+msgid ""
+"The horizontal alignment of the table. (See <xref linkend="
+"\"Document_Constants-Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:688
+#, no-c-format
+msgid "skipFirstHeader"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:695 Itext.xml:885
+#, no-c-format
+msgid "runDirection"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:702
+#, no-c-format
+msgid "lockedWidth"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:709
+#, no-c-format
+msgid "splitRows"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:732
+#, no-c-format
+msgid "extendLastRow"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:739
+#, no-c-format
+msgid "headersInEvent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:746
+#, no-c-format
+msgid "splitLate"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:763
+#, no-c-format
+msgid "p:cell"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:764
+#, no-c-format
+msgid "<literal>p:cell</literal> supports the following attributes."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:769
+#, no-c-format
+msgid "colspan"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:771
+#, no-c-format
+msgid ""
+"Cells can span more than one column by declaring a <literal>colspan</"
+"literal> greater than 1. Tables do not have the ability to span across "
+"multiple rows."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:779
+#, no-c-format
+msgid ""
+"The horizontal alignment of the cell. (see <xref linkend="
+"\"Document_Constants-Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:785 Itext.xml:829
+#, no-c-format
+msgid "verticalAlignment"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:787
+#, no-c-format
+msgid ""
+"The vertical alignment of the cell. (see <xref linkend=\"Document_Constants-"
+"Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:793
+#, no-c-format
+msgid "padding"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:795
+#, no-c-format
+msgid ""
+"Padding on a given side can also be specified using <literal>paddingLeft</"
+"literal>, <literal>paddingRight</literal>, <literal>paddingTop</literal> and "
+"<literal>paddingBottom</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:801
+#, no-c-format
+msgid "useBorderPadding"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:843
+#, no-c-format
+msgid "fixedHeight"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:850
+#, no-c-format
+msgid "noWrap"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:857
+#, no-c-format
+msgid "minimumHeight"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:864
+#, no-c-format
+msgid "followingIndent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:871
+#, no-c-format
+msgid "rightIndent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:878
+#, no-c-format
+msgid "spaceCharRatio"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:892
+#, no-c-format
+msgid "arabicOptions"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:899
+#, no-c-format
+msgid "useAscender"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:906
+#, no-c-format
+msgid "grayFill"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:925
+#, no-c-format
+msgid "Document Constants"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:926
+#, no-c-format
+msgid ""
+"This section documents some of the constants shared by attributes on "
+"multiple tags."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:930
+#, no-c-format
+msgid "Color Values"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:931
+#, no-c-format
+msgid ""
+"Seam documents do not yet support a full color specification. Currently, "
+"only named colors are supported. They are: <literal>white</literal>, "
+"<literal>gray</literal>, <literal>lightgray</literal>, <literal>darkgray</"
+"literal>, <literal>black</literal>, <literal>red</literal>, <literal>pink</"
+"literal>, <literal>yellow</literal>, <literal>green</literal>, "
+"<literal>magenta</literal>, <literal>cyan</literal> and <literal>blue</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:937
+#, no-c-format
+msgid "Alignment Values"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:938
+#, no-c-format
+msgid ""
+"Where alignment values are used, the Seam PDF supports the following "
+"horizontal alignment values: <literal>left</literal>, <literal>right</"
+"literal>, <literal>center</literal>, <literal>justify</literal> and "
+"<literal>justifyall</literal>. The vertical alignment values are "
+"<literal>top</literal>, <literal>middle</literal>, <literal>bottom</"
+"literal>, and <literal>baseline</literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:946
+#, no-c-format
+msgid "Configuring iText"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:947
+#, no-c-format
+msgid ""
+"Document generation works out of the box with no additional configuration "
+"needed. However, there are a few points of configuration that are needed for "
+"more serious applications."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:950
+#, no-c-format
+msgid ""
+"The default implementation serves PDF documents from a generic URL, "
+"<literal>/seam-doc.seam</literal>. Many browsers (and users) would prefer to "
+"see URLs that contain the actual PDF name like <literal>/myDocument.pdf</"
+"literal>. This capability requires some configuration. To serve PDF files, "
+"all *.pdf resources should be mapped to the Seam Servlet Filter and to the "
+"DocumentStoreServlet:"
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:953
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.servlet.SeamServletFilter&lt;/filter-"
+"class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;\n"
+"\n"
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.pdf.DocumentStoreServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"\n"
+"&lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:954
+#, no-c-format
+msgid ""
+"The <literal>useExtensions</literal> option on the document store component "
+"completes the functionality by instructing the document store to generate "
+"URLs with the correct filename extension for the document type being "
+"generated."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:957
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pdf=\"http://jboss.com/products/seam/pdf\"&gt;\n"
+"    &lt;pdf:documentStore useExtensions=\"true\" /&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:958
+#, no-c-format
+msgid ""
+"Generated documents are stored in conversation scope and will expire when "
+"the conversation ends. At that point, references to the document will be "
+"invalid. To You can specify a default view to be shown when a document does "
+"not exist using the <literal>errorPage</literal> property of the "
+"documentStore."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:961
+#, no-c-format
+msgid ""
+"&lt;pdf:documentStore useExtensions=\"true\" errorPage=\"/pdfMissing.seam\" /"
+"&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:965
+#, no-c-format
+msgid "iText links"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:966
+#, no-c-format
+msgid "For further information on iText, see:"
+msgstr ""
+
+#. Tag: ulink
+#: Itext.xml:973
+#, no-c-format
+msgid "iText Home Page"
+msgstr ""
+
+#. Tag: ulink
+#: Itext.xml:978
+#, no-c-format
+msgid "iText in Action"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Jbpm.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Jbpm.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Jbpm.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1189 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Jbpm.xml:10
+#, no-c-format
+msgid "Pageflows and business processes"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:11
+#, no-c-format
+msgid ""
+"JBoss jBPM is a business process management engine for any Java SE or EE "
+"environment. jBPM lets you represent a business process or user interaction "
+"as a graph of nodes representing wait states, decisions, tasks, web pages, "
+"etc. The graph is defined using a simple, very readable, XML dialect called "
+"jPDL, and may be edited and visualised graphically using an eclipse plugin. "
+"jPDL is an extensible language, and is suitable for a range of problems, "
+"from defining web application page flow, to traditional workflow management, "
+"all the way up to orchestration of services in a SOA environment."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:14
+#, no-c-format
+msgid "Seam applications use jBPM for two different problems:"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:20
+#, no-c-format
+msgid ""
+"Defining the pageflow involved in complex user interactions. A jPDL process "
+"definition defines the page flow for a single conversation. A Seam "
+"conversation is considered to be a relatively short-running interaction with "
+"a single user."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:25
+#, no-c-format
+msgid ""
+"Defining the overarching business process. The business process may span "
+"multiple conversations with multiple users. Its state is persistent in the "
+"jBPM database, so it is considered long-running. Coordination of the "
+"activities of multiple users is a much more complex problem than scripting "
+"an interaction with a single user, so jBPM offers sophisticated facilities "
+"for task management and dealing with multiple concurrent paths of execution."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:31
+#, no-c-format
+msgid ""
+"Don't get these two things confused ! They operate at very different levels "
+"or granularity. <emphasis>Pageflow</emphasis>, <emphasis>conversation</"
+"emphasis> and <emphasis>task</emphasis> all refer to a single interaction "
+"with a single user. A business process spans many tasks. Futhermore, the two "
+"applications of jBPM are totally orthogonal. You can use them together or "
+"independently or not at all."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:34
+#, no-c-format
+msgid ""
+"You don't have to know jDPL to use Seam. If you're perfectly happy defining "
+"pageflow using JSF or Seam navigation rules, and if your application is more "
+"data-driven that process-driven, you probably don't need jBPM. But we're "
+"finding that thinking of user interaction in terms of a well-defined "
+"graphical representation is helping us build more robust applications."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:37
+#, no-c-format
+msgid ""
+"Please refer to the jBPM documentation for a more thorough overview of the "
+"sophisticated features that jBPM provides for managing complex business "
+"processes."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:41
+#, no-c-format
+msgid "Pageflow in Seam"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:42
+#, no-c-format
+msgid "There are two ways to define pageflow in Seam:"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:47
+#, no-c-format
+msgid ""
+"Using JSF or Seam navigation rules - the <emphasis>stateless navigation "
+"model</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:52
+#, no-c-format
+msgid "Using jPDL - the <emphasis>stateful navigation model</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:57
+#, no-c-format
+msgid ""
+"Very simple applications will only need the stateless navigation model. Very "
+"complex applications will use both models in different places. Each model "
+"has its strengths and weaknesses!"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:60
+#, no-c-format
+msgid ""
+"In practice, both navigation models have their place, and you'll quickly "
+"learn to recognize when to prefer one model over the other."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:64
+#, no-c-format
+msgid "The two navigation models"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:65
+#, no-c-format
+msgid ""
+"The stateless model defines a mapping from a set of named, logical outcomes "
+"of an event directly to the resulting page of the view. The navigation rules "
+"are entirely oblivious to any state held by the application other than what "
+"page was the source of the event. This means that your action listener "
+"methods must sometimes make decisions about the page flow, since only they "
+"have access to the current state of the application."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:68
+#, no-c-format
+msgid "Here is an example page flow definition using JSF navigation rules:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:71
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"    &lt;from-view-id&gt;/numberGuess.jsp&lt;/from-view-id&gt;\n"
+"        \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;guess&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/numberGuess.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;win&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/win.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"        \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;lose&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/lose.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:72
+#, no-c-format
+msgid ""
+"Here is the same example page flow definition using Seam navigation rules:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:75
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/numberGuess.jsp\"&gt;\n"
+"        \n"
+"    &lt;navigation&gt;\n"
+"        &lt;rule if-outcome=\"guess\"&gt;\n"
+"            &lt;redirect view-id=\"/numberGuess.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"        &lt;rule if-outcome=\"win\"&gt;\n"
+"            &lt;redirect view-id=\"/win.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"        &lt;rule if-outcome=\"lose\"&gt;\n"
+"            &lt;redirect view-id=\"/lose.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:76
+#, no-c-format
+msgid ""
+"If you find navigation rules overly verbose, you can return view ids "
+"directly from your action listener methods:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:79
+#, no-c-format
+msgid ""
+"public String guess() {\n"
+"    if (guess==randomNumber) return \"/win.jsp\";\n"
+"    if (++guessCount==maxGuesses) return \"/lose.jsp\";\n"
+"    return null;\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:80
+#, no-c-format
+msgid ""
+"Note that this results in a redirect. You can even specify parameters to be "
+"used in the redirect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:83
+#, no-c-format
+msgid ""
+"public String search() {\n"
+"    return \"/searchResults.jsp?searchPattern=#{searchAction.searchPattern}"
+"\";\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:84
+#, no-c-format
+msgid ""
+"The stateful model defines a set of transitions between a set of named, "
+"logical application states. In this model, it is possible to express the "
+"flow of any user interaction entirely in the jPDL pageflow definition, and "
+"write action listener methods that are completely unaware of the flow of the "
+"interaction."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:87
+#, no-c-format
+msgid "Here is an example page flow definition using jPDL:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:90
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"numberGuess\"&gt;\n"
+"    \n"
+"   &lt;start-page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"      &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"      &lt;/transition&gt;\n"
+"   &lt;/start-page&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess."
+"correctGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateRemainingGuesses\" expression=\"#{numberGuess."
+"lastGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"lose\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"displayGuess\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"lose\" view-id=\"/lose.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:99
+#, no-c-format
+msgid "There are two things we notice immediately here:"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:104
+#, no-c-format
+msgid ""
+"The JSF/Seam navigation rules are <emphasis>much</emphasis> simpler. "
+"(However, this obscures the fact that the underlying Java code is more "
+"complex.)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:109
+#, no-c-format
+msgid ""
+"The jPDL makes the user interaction immediately understandable, without us "
+"needing to even look at the JSP or Java code."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:114
+#, no-c-format
+msgid ""
+"In addition, the stateful model is more <emphasis>constrained</emphasis>. "
+"For each logical state (each step in the page flow), there are a constrained "
+"set of possible transitions to other states. The stateless model is an "
+"<emphasis>ad hoc</emphasis> model which is suitable to relatively "
+"unconstrained, freeform navigation where the user decides where he/she wants "
+"to go next, not the application."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:117
+#, no-c-format
+msgid ""
+"The stateful/stateless navigation distinction is quite similar to the "
+"traditional view of modal/modeless interaction. Now, Seam applications are "
+"not usually modal in the simple sense of the word - indeed, avoiding "
+"application modal behavior is one of the main reasons for having "
+"conversations! However, Seam applications can be, and often are, modal at "
+"the level of a particular conversation. It is well-known that modal behavior "
+"is something to avoid as much as possible; it is very difficult to predict "
+"the order in which your users are going to want to do things! However, there "
+"is no doubt that the stateful model has its place."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:120
+#, no-c-format
+msgid ""
+"The biggest contrast between the two models is the back-button behavior."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:126
+#, no-c-format
+msgid "Seam and the back button"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:127
+#, no-c-format
+msgid ""
+"When JSF or Seam navigation rules are used, Seam lets the user freely "
+"navigate via the back, forward and refresh buttons. It is the responsibility "
+"of the application to ensure that conversational state remains internally "
+"consistent when this occurs. Experience with the combination of web "
+"application frameworks like Struts or WebWork - that do not support a "
+"conversational model - and stateless component models like EJB stateless "
+"session beans or the Spring framework has taught many developers that this "
+"is close to impossible to do! However, our experience is that in the context "
+"of Seam, where there is a well-defined conversational model, backed by "
+"stateful session beans, it is actually quite straightforward. Usually it is "
+"as simple as combining the use of <literal>no-conversation-view-id</literal> "
+"with null checks at the beginning of action listener methods. We consider "
+"support for freeform navigation to be almost always desirable."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:130
+#, no-c-format
+msgid ""
+"In this case, the <literal>no-conversation-view-id</literal> declaration "
+"goes in <literal>pages.xml</literal>. It tells Seam to redirect to a "
+"different page if a request originates from a page rendered during a "
+"conversation, and that conversation no longer exists:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:133
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/checkout.xhtml\" \n"
+"        no-conversation-view-id=\"/main.xhtml\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:134
+#, no-c-format
+msgid ""
+"On the other hand, in the stateful model, backbuttoning is interpreted as an "
+"undefined transition back to a previous state. Since the stateful model "
+"enforces a defined set of transitions from the current state, back buttoning "
+"is be default disallowed in the stateful model! Seam transparently detects "
+"the use of the back button, and blocks any attempt to perform an action from "
+"a previous, \"stale\" page, and simply redirects the user to the \"current\" "
+"page (and displays a faces message). Whether you consider this a feature or "
+"a limitation of the stateful model depends upon your point of view: as an "
+"application developer, it is a feature; as a user, it might be frustrating! "
+"You can enable backbutton navigation from a particular page node by setting "
+"<literal>back=\"enabled\"</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:137
+#, no-c-format
+msgid ""
+"&lt;page name=\"checkout\" \n"
+"        view-id=\"/checkout.xhtml\" \n"
+"        back=\"enabled\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"checkout\"/&gt;\n"
+"    &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:138
+#, no-c-format
+msgid ""
+"This allows backbuttoning <emphasis>from</emphasis> the <literal>checkout</"
+"literal> state to <emphasis>any previous state!</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:141
+#, no-c-format
+msgid ""
+"Of course, we still need to define what happens if a request originates from "
+"a page rendered during a pageflow, and the conversation with the pageflow no "
+"longer exists. In this case, the <literal>no-conversation-view-id</literal> "
+"declaration goes into the pageflow definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:144
+#, no-c-format
+msgid ""
+"&lt;page name=\"checkout\" \n"
+"        view-id=\"/checkout.xhtml\" \n"
+"        back=\"enabled\" \n"
+"        no-conversation-view-id=\"/main.xhtml\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"checkout\"/&gt;\n"
+"    &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:151
+#, no-c-format
+msgid "Using jPDL pageflows"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:153
+#, no-c-format
+msgid "Installing pageflows"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:154
+#, no-c-format
+msgid ""
+"We need to install the Seam jBPM-related components, and tell them where to "
+"find our pageflow definition. We can specify this Seam configuration in "
+"<literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:157
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:pageflow-definitions&gt;\n"
+"        &lt;value&gt;pageflow.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:pageflow-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:158
+#, no-c-format
+msgid ""
+"The first line installs jBPM, the second points to a jPDL-based pageflow "
+"definition."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:164
+#, no-c-format
+msgid "Starting pageflows"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:165
+#, no-c-format
+msgid ""
+"We \"start\" a jPDL-based pageflow by specifying the name of the process "
+"definition using a <literal>@Begin</literal>, <literal>@BeginTask</literal> "
+"or <literal>@StartTask</literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:168
+#, no-c-format
+msgid ""
+"@Begin(pageflow=\"numberguess\")\n"
+"public void begin() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:169
+#, no-c-format
+msgid "Alternatively we can start a pageflow using pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:172
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"        &lt;begin-conversation pageflow=\"numberguess\"/&gt;\n"
+"    &lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:173
+#, no-c-format
+msgid ""
+"If we are beginning the pageflow during the <literal>RENDER_RESPONSE</"
+"literal> phase&mdash;during a <literal>@Factory</literal> or "
+"<literal>@Create</literal> method, for example&mdash;we consider ourselves "
+"to be already at the page being rendered, and use a <literal>&lt;start-"
+"page&gt;</literal> node as the first node in the pageflow, as in the example "
+"above."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:176
+#, no-c-format
+msgid ""
+"But if the pageflow is begun as the result of an action listener invocation, "
+"the outcome of the action listener determines which is the first page to be "
+"rendered. In this case, we use a <literal>&lt;start-state&gt;</literal> as "
+"the first node in the pageflow, and declare a transition for each possible "
+"outcome:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:179
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"viewEditDocument\"&gt;\n"
+"\n"
+"    &lt;start-state name=\"start\"&gt;\n"
+"        &lt;transition name=\"documentFound\" to=\"displayDocument\"/&gt;\n"
+"        &lt;transition name=\"documentNotFound\" to=\"notFound\"/&gt;\n"
+"    &lt;/start-state&gt;\n"
+"    \n"
+"    &lt;page name=\"displayDocument\" view-id=\"/document.jsp\"&gt;\n"
+"        &lt;transition name=\"edit\" to=\"editDocument\"/&gt;\n"
+"        &lt;transition name=\"done\" to=\"main\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"    \n"
+"    ...\n"
+"    \n"
+"    &lt;page name=\"notFound\" view-id=\"/404.jsp\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"    &lt;/page&gt;\n"
+"    \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:183
+#, no-c-format
+msgid "Page nodes and transitions"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:184
+#, no-c-format
+msgid ""
+"Each <literal>&lt;page&gt;</literal> node represents a state where the "
+"system is waiting for user input:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:187
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"        &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:188
+#, no-c-format
+msgid ""
+"The <literal>view-id</literal> is the JSF view id. The <literal>&lt;redirect/"
+"&gt;</literal> element has the same effect as <literal>&lt;redirect/&gt;</"
+"literal> in a JSF navigation rule: namely, a post-then-redirect behavior, to "
+"overcome problems with the browser's refresh button. (Note that Seam "
+"propagates conversation contexts over these browser redirects. So there is "
+"no need for a Ruby on Rails style \"flash\" construct in Seam!)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:191
+#, no-c-format
+msgid ""
+"The transition name is the name of a JSF outcome triggered by clicking a "
+"command button or command link in <literal>numberGuess.jsp</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:194
+#, no-c-format
+msgid ""
+"&lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"guess\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:195
+#, no-c-format
+msgid ""
+"When the transition is triggered by clicking this button, jBPM will activate "
+"the transition action by calling the <literal>guess()</literal> method of "
+"the <literal>numberGuess</literal> component. Notice that the syntax used "
+"for specifying actions in the jPDL is just a familiar JSF EL expression, and "
+"that the transition action handler is just a method of a Seam component in "
+"the current Seam contexts. So we have exactly the same event model for jBPM "
+"events that we already have for JSF events! (The <emphasis>One Kind of "
+"Stuff</emphasis> principle.)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:198
+#, no-c-format
+msgid ""
+"In the case of a null outcome (for example, a command button with no "
+"<literal>action</literal> defined), Seam will signal the transition with no "
+"name if one exists, or else simply redisplay the page if all transitions "
+"have names. So we could slightly simplify our example pageflow and this "
+"button:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:201
+#, no-c-format
+msgid "&lt;h:commandButton type=\"submit\" value=\"Guess\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:202
+#, no-c-format
+msgid "Would fire the following un-named transition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:205
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"evaluateGuess\"&gt;\n"
+"        &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:206
+#, no-c-format
+msgid ""
+"It is even possible to have the button call an action method, in which case "
+"the action outcome will determine the transition to be taken:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:209
+#, no-c-format
+msgid ""
+"&lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"#{numberGuess."
+"guess}\"/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:210
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;transition name=\"correctGuess\" to=\"win\"/&gt;\n"
+"    &lt;transition name=\"incorrectGuess\" to=\"evaluateGuess\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:211
+#, no-c-format
+msgid ""
+"However, this is considered an inferior style, since it moves responsibility "
+"for controlling the flow out of the pageflow definition and back into the "
+"other components. It is much better to centralize this concern in the "
+"pageflow itself."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:217
+#, no-c-format
+msgid "Controlling the flow"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:218
+#, no-c-format
+msgid ""
+"Usually, we don't need the more powerful features of jPDL when defining "
+"pageflows. We do need the <literal>&lt;decision&gt;</literal> node, however:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:221
+#, no-c-format
+msgid ""
+"&lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess.correctGuess}"
+"\"&gt;\n"
+"    &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"    &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"&lt;/decision&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:222
+#, no-c-format
+msgid ""
+"A decision is made by evaluating a JSF EL expression in the Seam contexts."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:228
+#, no-c-format
+msgid "Ending the flow"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:229
+#, no-c-format
+msgid ""
+"We end the conversation using <literal>&lt;end-conversation&gt;</literal> or "
+"<literal>@End</literal>. (In fact, for readability, use of <emphasis>both</"
+"emphasis> is encouraged.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:232
+#, no-c-format
+msgid ""
+"&lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;end-conversation/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:233
+#, no-c-format
+msgid ""
+"Optionally, we can end a task, specify a jBPM <literal>transition</literal> "
+"name. In this case, Seam will signal the end of the current task in the "
+"overarching business process."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:236
+#, no-c-format
+msgid ""
+"&lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;end-task transition=\"success\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:242
+#, no-c-format
+msgid "Business process management in Seam"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:243
+#, no-c-format
+msgid ""
+"A business process is a well-defined set of tasks that must be performed by "
+"users or software systems according to well-defined rules about "
+"<emphasis>who</emphasis> can perform a task, and <emphasis>when</emphasis> "
+"it should be performed. Seam's jBPM integration makes it easy to display "
+"lists of tasks to users and let them manage their tasks. Seam also lets the "
+"application store state associated with the business process in the "
+"<literal>BUSINESS_PROCESS</literal> context, and have that state made "
+"persistent via jBPM variables."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:246
+#, no-c-format
+msgid ""
+"A simple business process definition looks much the same as a page flow "
+"definition (<emphasis>One Kind of Stuff</emphasis>), except that instead of "
+"<literal>&lt;page&gt;</literal> nodes, we have <literal>&lt;task-node&gt;</"
+"literal> nodes. In a long-running business process, the wait states are "
+"where the system is waiting for some user to log in and perform a task."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:249
+#, no-c-format
+msgid ""
+"&lt;process-definition name=\"todo\"&gt;\n"
+"   \n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"todo\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;task-node name=\"todo\"&gt;\n"
+"      &lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"         &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"      &lt;/task&gt;\n"
+"      &lt;transition to=\"done\"/&gt;\n"
+"   &lt;/task-node&gt;\n"
+"   \n"
+"   &lt;end-state name=\"done\"/&gt;\n"
+"   \n"
+"&lt;/process-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:260
+#, no-c-format
+msgid ""
+"It is perfectly possible that we might have both jPDL business process "
+"definitions and jPDL pageflow definitions in the same project. If so, the "
+"relationship between the two is that a single <literal>&lt;task&gt;</"
+"literal> in a business process corresponds to a whole pageflow <literal>&lt;"
+"pageflow-definition&gt;</literal>"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:265
+#, no-c-format
+msgid "Using jPDL business process definitions"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:267
+#, no-c-format
+msgid "Installing process definitions"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:268
+#, no-c-format
+msgid ""
+"We need to install jBPM, and tell it where to find the business process "
+"definitions:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:271
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;todo.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:275
+#, no-c-format
+msgid "Initializing actor ids"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:276
+#, no-c-format
+msgid ""
+"We always need to know what user is currently logged in. jBPM \"knows\" "
+"users by their <emphasis>actor id</emphasis> and <emphasis>group actor ids</"
+"emphasis>. We specify the current actor ids using the built in Seam "
+"component named <literal>actor</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:279
+#, no-c-format
+msgid ""
+"@In Actor actor;\n"
+"\n"
+"public String login() {\n"
+"    ...\n"
+"    actor.setId( user.getUserName() );\n"
+"    actor.getGroupActorIds().addAll( user.getGroupNames() );\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:283
+#, no-c-format
+msgid "Initiating a business process"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:284
+#, no-c-format
+msgid ""
+"To initiate a business process instance, we use the <literal>@CreateProcess</"
+"literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:287
+#, no-c-format
+msgid ""
+"@CreateProcess(definition=\"todo\")\n"
+"public void createTodo() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:288
+#, no-c-format
+msgid "Alternatively we can initiate a business process using pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:291
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;create-process definition=\"todo\" /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:295
+#, no-c-format
+msgid "Task assignment"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:296
+#, no-c-format
+msgid ""
+"When a process starts, task instances are created. These must be assigned to "
+"users or user groups. We can either hardcode our actor ids, or delegate to a "
+"Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:299
+#, no-c-format
+msgid ""
+"&lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"    &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"&lt;/task&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:300
+#, no-c-format
+msgid ""
+"In this case, we have simply assigned the task to the current user. We can "
+"also assign tasks to a pool:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:303
+#, no-c-format
+msgid ""
+"&lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"    &lt;assignment pooled-actors=\"employees\"/&gt;\n"
+"&lt;/task&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:307
+#, no-c-format
+msgid "Task lists"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:308
+#, no-c-format
+msgid ""
+"Several built-in Seam components make it easy to display task lists. The "
+"<literal>pooledTaskInstanceList</literal> is a list of pooled tasks that "
+"users may assign to themselves:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:311
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{pooledTaskInstanceList}\" var=\"task\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Description&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{task.description}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link action=\"#{pooledTask.assignToCurrentActor}\" value="
+"\"Assign\" taskInstance=\"#{task}\"/&gt;\n"
+"    &lt;/h:column&gt;            \n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:312
+#, no-c-format
+msgid ""
+"Note that instead of <literal>&lt;s:link&gt;</literal> we could have used a "
+"plain JSF <literal>&lt;h:commandLink&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:315
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"#{pooledTask.assignToCurrentActor}\"&gt; \n"
+"    &lt;f:param name=\"taskId\" value=\"#{task.id}\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:316
+#, no-c-format
+msgid ""
+"The <literal>pooledTask</literal> component is a built-in component that "
+"simply assigns the task to the current user."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:319
+#, no-c-format
+msgid ""
+"The <literal>taskInstanceListByType</literal> component includes tasks of a "
+"particular type that are assigned to the current user:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:322
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{taskInstanceListByType['todo']}\" var=\"task"
+"\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Description&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{task.description}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link action=\"#{todoList.start}\" value=\"Start Work\" "
+"taskInstance=\"#{task}\"/&gt;\n"
+"    &lt;/h:column&gt;            \n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:326
+#, no-c-format
+msgid "Performing a task"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:327
+#, no-c-format
+msgid ""
+"To begin work on a task, we use either <literal>@StartTask</literal> or "
+"<literal>@BeginTask</literal> on the listener method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:330
+#, no-c-format
+msgid ""
+"@StartTask\n"
+"public String start() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:331
+#, no-c-format
+msgid "Alternatively we can begin work on a task using pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:334
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;start-task /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:335
+#, no-c-format
+msgid ""
+"These annotations begin a special kind of conversation that has significance "
+"in terms of the overarching business process. Work done by this conversation "
+"has access to state held in the business process context."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:338
+#, no-c-format
+msgid ""
+"If we end the conversation using <literal>@EndTask</literal>, Seam will "
+"signal the completion of the task:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:341
+#, no-c-format
+msgid ""
+"@EndTask(transition=\"completed\")\n"
+"public String completed() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:342
+#, no-c-format
+msgid "Alternatively we can use pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:345
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;end-task transition=\"completed\" /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:346
+#, no-c-format
+msgid ""
+"(Alternatively, we could have used <literal>&lt;end-conversation&gt;</"
+"literal> as shown above.)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:349
+#, no-c-format
+msgid ""
+"At this point, jBPM takes over and continues executing the business process "
+"definition. (In more complex processes, several tasks might need to be "
+"completed before process execution can resume.)"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Jms.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Jms.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Jms.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,477 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Jms.xml:10
+#, no-c-format
+msgid "Asynchronicity and messaging"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:11
+#, no-c-format
+msgid ""
+"Seam makes it very easy to perform work asynchronously from a web request. "
+"When most people think of asynchronicity in Java EE, they think of using "
+"JMS. This is certainly one way to approach the problem in Seam, and is the "
+"right way when you have strict and well-defined quality of service "
+"requirements. Seam makes it easy to send and recieve JMS messages using Seam "
+"components."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:14
+#, no-c-format
+msgid ""
+"But for many usecases, JMS is overkill. Seam layers a simple asynchronous "
+"method and event facility over the EJB 3.0 timer service."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:17
+#, no-c-format
+msgid "Asynchronicity"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:18
+#, no-c-format
+msgid ""
+"Asynchronous events and method calls have the same quality of service "
+"expectations as the container's EJB timer service. If you're not familiar "
+"with the Timer service, don't worry, you don't need to interact with it "
+"directly if you want to use asynchronous methods in Seam."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:21
+#, no-c-format
+msgid ""
+"To use asynchronous methods and events, you need to add the following line "
+"to <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:24
+#, no-c-format
+msgid "&lt;core:dispatcher/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:25
+#, no-c-format
+msgid ""
+"Note that this functionality is not available in environments which do not "
+"support EJB 3.0."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:28
+#, no-c-format
+msgid "Asynchronous methods"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:29
+#, no-c-format
+msgid ""
+"In simplest form, an asynchronous call just lets a method call be processed "
+"asynchronously (in a different thread) from the caller. We usually use an "
+"asynchronous call when we want to return an immediate response to the "
+"client, and let some expensive work be processed in the background. This "
+"pattern works very well in applications which use AJAX, where the client can "
+"automatically poll the server for the result of the work."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:32
+#, no-c-format
+msgid ""
+"For EJB components, we annotate the local interface to specify that a method "
+"is processed asynchronously."
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:35
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public void processPayment(Payment payment);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:36
+#, no-c-format
+msgid ""
+"(For JavaBean components we can annotate the component implementation class "
+"if we like.)"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:39
+#, no-c-format
+msgid "The use of asynchronicity is transparent to the bean class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:42
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"paymentHandler\")\n"
+"public class PaymentHandlerBean implements PaymentHandler\n"
+"{\n"
+"    public void processPayment(Payment payment)\n"
+"    {\n"
+"        //do some work!\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:43
+#, no-c-format
+msgid "And also transparent to the client:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:46
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String pay()\n"
+"    {\n"
+"        paymentHandler.processPayment( new Payment(bill) );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:47
+#, no-c-format
+msgid ""
+"The asynchronous method is processed in a completely new event context and "
+"does not have access to the session or conversation context state of the "
+"caller. However, the business process context <emphasis>is</emphasis> "
+"propagated."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:50
+#, no-c-format
+msgid ""
+"Asynchronous method calls may be scheduled for later execution using the "
+"<literal>@Duration</literal>, <literal>@Expiration</literal> and "
+"<literal>@IntervalDuration</literal> annotations."
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:53
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public void processScheduledPayment(Payment payment, @Expiration Date "
+"date);\n"
+"\n"
+"    @Asynchronous\n"
+"    public void processRecurringPayment(Payment payment, @Expiration Date "
+"date, \n"
+"        @IntervalDuration Long interval)'\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:54
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String schedulePayment()\n"
+"    {\n"
+"        paymentHandler.processScheduledPayment( new Payment(bill), bill."
+"getDueDate() );\n"
+"        return \"success\";\n"
+"    }\n"
+"\n"
+"    public String scheduleRecurringPayment()\n"
+"    {\n"
+"        paymentHandler.processRecurringPayment( new Payment(bill), bill."
+"getDueDate(), ONE_MONTH );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:55
+#, no-c-format
+msgid ""
+"Both client and server may access the <literal>Timer</literal> object "
+"associated with the invocation."
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:58
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public Timer processScheduledPayment(Payment payment, @Expiration Date "
+"date);\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:59
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"paymentHandler\")\n"
+"public class PaymentHandlerBean implements PaymentHandler\n"
+"{\n"
+"    @In Timer timer;\n"
+"    \n"
+"    public Timer processScheduledPayment(Payment payment, @Expiration Date "
+"date)\n"
+"    {\n"
+"        //do some work!\n"
+"        \n"
+"        return timer; //note that return value is completely ignored\n"
+"    }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:60
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String schedulePayment()\n"
+"    {\n"
+"        Timer timer = paymentHandler.processScheduledPayment( new Payment"
+"(bill), bill.getDueDate() );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:61
+#, no-c-format
+msgid "Asynchronous methods cannot return any other value to the caller."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:64
+#, no-c-format
+msgid "Asynchronous events"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:65
+#, no-c-format
+msgid ""
+"Component-driven events may also be asynchronous. To raise an event for "
+"asynchronous processing, simply call the <literal>raiseAsynchronousEvent()</"
+"literal> methods of the <literal>Events</literal> class. To schedule a timed "
+"event, call one of the <literal>raiseTimedEvent()</literal> methods. "
+"Components may observe asynchronous events in the usual way, but remember "
+"that only the business process context is propagated to the asynchronous "
+"thread."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:68
+#, no-c-format
+msgid "Messaging in Seam"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:69
+#, no-c-format
+msgid ""
+"Seam makes it easy to send and receive JMS messages to and from Seam "
+"components."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:72
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:73
+#, no-c-format
+msgid ""
+"To configure Seam's infrastructure for sending JMS messages, you need to "
+"tell Seam about any topics and queues you want to send messages to, and also "
+"tell Seam where to find the <literal>QueueConnectionFactory</literal> and/or "
+"<literal>TopicConnectionFactory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:76
+#, no-c-format
+msgid ""
+"Seam defaults to using <literal>UIL2ConnectionFactory</literal> which is the "
+"usual connection factory for use with JBossMQ. If you are using some other "
+"JMS provider, you need to set one or both of <literal>queueConnection."
+"queueConnectionFactoryJndiName</literal> and <literal>topicConnection."
+"topicConnectionFactoryJndiName</literal> in <literal>seam.properties</"
+"literal>, <literal>web.xml</literal> or <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:79
+#, no-c-format
+msgid ""
+"You also need to list topics and queues in <literal>components.xml</literal> "
+"to install Seam managed <literal>TopicPublisher</literal>s and "
+"<literal>QueueSender</literal>s:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:82
+#, no-c-format
+msgid ""
+"&lt;jms:managed-topic-publisher name=\"stockTickerPublisher\" auto-create="
+"\"true\" \n"
+"    topic-jndi-name=\"topic/stockTickerTopic\"/&gt;\n"
+"\n"
+"&lt;jms:managed-queue-sender name=\"paymentQueueSender\" auto-create=\"true"
+"\" \n"
+"    queue-jndi-name=\"queue/paymentQueue\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:83
+#, no-c-format
+msgid "Sending messages"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:84
+#, no-c-format
+msgid ""
+"Now, you can inject a JMS <literal>TopicPublisher</literal> and "
+"<literal>TopicSession</literal> into any component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:87
+#, no-c-format
+msgid ""
+"@In \n"
+"private TopicPublisher stockTickerPublisher;   \n"
+"@In \n"
+"private TopicSession topicSession;\n"
+"\n"
+"public void publish(StockPrice price) {\n"
+"      try\n"
+"      {\n"
+"         topicPublisher.publish( topicSession.createObjectMessage(price) );\n"
+"      } \n"
+"      catch (Exception ex)\n"
+"      {\n"
+"         throw new RuntimeException(ex);\n"
+"      } \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:88
+#, no-c-format
+msgid "Or, for working with a queue:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:91
+#, no-c-format
+msgid ""
+"@In\n"
+"private QueueSender paymentQueueSender;   \n"
+"@In\n"
+"private QueueSession queueSession;\n"
+"\n"
+"public void publish(Payment payment) {\n"
+"      try\n"
+"      {\n"
+"         paymentQueueSender.send( queueSession.createObjectMessage"
+"(payment) );\n"
+"      } \n"
+"      catch (Exception ex)\n"
+"      {\n"
+"         throw new RuntimeException(ex);\n"
+"      } \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:92
+#, no-c-format
+msgid "Receiving messages using a message-driven bean"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:93
+#, no-c-format
+msgid ""
+"You can process messages using any EJB3 message driven bean. Message-driven "
+"beans may even be Seam components, in which case it is possible to inject "
+"other event and application scoped Seam components."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:96
+#, no-c-format
+msgid "Receiving messages in the client"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:97
+#, no-c-format
+msgid ""
+"Seam Remoting lets you subscribe to a JMS topic from client-side JavaScript. "
+"This is described in the next chapter."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Mail.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Mail.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Mail.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,985 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Mail.xml:10
+#, no-c-format
+msgid "Email"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:11
+#, no-c-format
+msgid ""
+"Seam now includes an optional components for templating and sending emails."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:14
+#, no-c-format
+msgid ""
+"Email support is provided by <literal>jboss-seam-mail.jar</literal>. This "
+"JAR contains the mail JSF controls, which are used to construct emails, and "
+"the <literal>mailSession</literal> manager component."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:17
+#, no-c-format
+msgid ""
+"The examples/mail project contains an example of the email support in "
+"action. It demonstrates proper packaging, and it contains a number of "
+"example that demonstrate the key features currently supported."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:21
+#, no-c-format
+msgid "Creating a message"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:22
+#, no-c-format
+msgid ""
+"You don't need to learn a whole new templating language to use Seam "
+"Mail&mdash;an email is just facelet!"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:25
+#, no-c-format
+msgid ""
+"&lt;m:message xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"    xmlns:m=\"http://jboss.com/products/seam/mail\"\n"
+"    xmlns:h=\"http://java.sun.com/jsf/html\"&gt;\n"
+"  \n"
+"    &lt;m:from name=\"Peter\" address=\"peter at example.com\" /&gt;\n"
+"    &lt;m:to name=\"#{person.firstname} #{person.lastname}\"&gt;#{person."
+"address}&lt;/m:to&gt;\n"
+"    &lt;m:subject&gt;Try out Seam!&lt;/m:subject&gt;\n"
+"    \n"
+"    &lt;m:body&gt;\n"
+"        &lt;p&gt;&lt;h:outputText value=\"Dear #{person.firstname}\" /&gt;,"
+"&lt;/p&gt;\n"
+"        &lt;p&gt;You can try out Seam by visiting \n"
+"        &lt;a href=\"http://labs.jboss.com/jbossseam\"&gt;http://labs.jboss."
+"com/jbossseam&lt;/a&gt;.&lt;/p&gt;\n"
+"        &lt;p&gt;Regards,&lt;/p&gt;\n"
+"        &lt;p&gt;Peter&lt;/p&gt;\n"
+"    &lt;/m:body&gt;\n"
+"    \n"
+"&lt;/m:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:26
+#, no-c-format
+msgid ""
+"The <literal>&lt;m:message&gt;</literal> tag wraps the whole message, and "
+"tells Seam to start rendering an email. Inside the <literal>&lt;m:message&gt;"
+"</literal> tag we use an <literal>&lt;m:from&gt;</literal> tag to set who "
+"the message is from, a <literal>&lt;m:to&gt;</literal> tag to specify a "
+"sender (notice how we use EL as we would in a normal facelet), and a "
+"<literal>&lt;m:subject&gt;</literal> tag."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:29
+#, no-c-format
+msgid ""
+"The <literal>&lt;m:body&gt;</literal> tag wraps the body of the email. You "
+"can use regular HTML tags inside the body as well as JSF components."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:32
+#, no-c-format
+msgid ""
+"So, now you have your email template, how do you go about sending it? Well, "
+"at the end of rendering the <literal>m:message</literal> the "
+"<literal>mailSession</literal> is called to send the email, so all you have "
+"to do is ask Seam to render the view:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:35
+#, no-c-format
+msgid ""
+"@In(create=true)\n"
+"private Renderer renderer;\n"
+"   \n"
+"public void send() {\n"
+"    try {\n"
+"       renderer.render(\"/simple.xhtml\");\n"
+"       facesMessages.add(\"Email sent successfully\");\n"
+"   } \n"
+"   catch (Exception e) {\n"
+"       facesMessages.add(\"Email sending failed: \" + e.getMessage());\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:36
+#, no-c-format
+msgid ""
+"If, for example, you entered an invalid email address, then an exception "
+"would be thrown, which is caught and then displayed to the user."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:40
+#, no-c-format
+msgid "Attachments"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:41
+#, no-c-format
+msgid ""
+"Seam makes it easy to attach files to an email. It supports most of the "
+"standard java types used when working with files."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:44
+#, no-c-format
+msgid "If you wanted to email the <literal>jboss-seam-mail.jar</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:47
+#, no-c-format
+msgid "&lt;m:attachment value=\"/WEB-INF/lib/jboss-seam-mail.jar\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:48
+#, no-c-format
+msgid ""
+"Seam will load the file from the classpath, and attach it to the email. By "
+"default it would be attached as <literal>jboss-seam-mail.jar</literal>; if "
+"you wanted it to have another name you would just add the <literal>fileName</"
+"literal> attribute:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:51
+#, no-c-format
+msgid ""
+"&lt;m:attachment value=\"/WEB-INF/lib/jboss-seam-mail.jar\" fileName=\"this-"
+"is-so-cool.jar\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:52
+#, no-c-format
+msgid ""
+"You could also attach a <literal>java.io.File</literal>, a <literal>java.net."
+"URL</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:55
+#, no-c-format
+msgid "&lt;m:attachment value=\"#{numbers}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:56
+#, no-c-format
+msgid ""
+"Or a <literal>byte[]</literal> or a <literal>java.io.InputStream</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:59
+#, no-c-format
+msgid ""
+"&lt;m:attachment value=\"#{person.photo}\" contentType=\"image/png\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:60
+#, no-c-format
+msgid ""
+"You'll notice that for a <literal>byte[]</literal> and a <literal>java.io."
+"InputStream</literal> you need to specify the MIME type of the attachment "
+"(as that information is not carried as part of the file)."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:63
+#, no-c-format
+msgid ""
+"And it gets even better, you can attach a Seam generated PDF, or any "
+"standard JSF view, just by wrapping a <literal>&lt;m:attachment&gt;</"
+"literal> around the normal tags you would use:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:66
+#, no-c-format
+msgid ""
+"&lt;m:attachment fileName=\"tiny.pdf\"&gt;\n"
+"    &lt;p:"
+"document&gt;                                                      \n"
+"        A very tiny "
+"PDF                                                                                                \n"
+"    &lt;/p:document&gt;\n"
+"&lt;/m:attachment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:67
+#, no-c-format
+msgid ""
+"If you had a set of files you wanted to attach (for example a set of "
+"pictures loaded from a database) you can just use a <literal>&lt;ui:"
+"repeat&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:70
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{people}\" var=\"person\"&gt;\n"
+"    &lt;m:attachment value=\"#{person.photo}\" contentType=\"image/jpeg\"\n"
+"    fileName=\"#{person.firstname}_#{person.lastname}.jpg\"/&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:74
+#, no-c-format
+msgid "HTML/Text alternative part"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:75
+#, no-c-format
+msgid ""
+"Whilst most mail readers nowadays support HTML, some don't, so you can add a "
+"plain text alternative to your email body:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:78
+#, no-c-format
+msgid ""
+"&lt;m:body&gt;\n"
+"    &lt;f:facet name=\"alternative\"&gt;Sorry, your email reader can't show "
+"our fancy email, \n"
+"please go to http://labs.jboss.com/jbossseam to explore Seam.&lt;/f:"
+"facet&gt;\n"
+"&lt;/m:body&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:82
+#, no-c-format
+msgid "Multiple recipients"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:83
+#, no-c-format
+msgid ""
+"Often you'll want to send an email to a group of recipients (for example "
+"your users). All of the recipient mail tags can be placed inside a "
+"<literal>&lt;ui:repeat&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:86
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{allUsers} var=\"user\"&gt;\n"
+"    &lt;m:to name=\"#{user.firstname} #{user.lastname}\" address=\"#{user."
+"emailAddress}\" /&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:90
+#, no-c-format
+msgid "Multiple messages"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:91
+#, no-c-format
+msgid ""
+"Sometimes, however, you need to send a slightly different message to each "
+"recipient (e.g. a password reset). The best way to do this is to place the "
+"whole message inside a <literal>&lt;ui:repeat&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:94
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{people}\" var=\"p\"&gt;\n"
+"    &lt;m:message&gt;\n"
+"        &lt;m:from name=\"#{person.firstname} #{person.lastname}\"&gt;#"
+"{person.address}&lt;/m:from&gt;\n"
+"        &lt;m:to name=\"#{p.firstname}\"&gt;#{p.address}&lt;/m:to&gt;\n"
+"            ...\n"
+"    &lt;/m:message&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:98
+#, no-c-format
+msgid "Templating"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:99
+#, no-c-format
+msgid ""
+"The mail templating example shows that facelets templating Just Works with "
+"the Seam mail tags."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:102
+#, no-c-format
+msgid "Our <literal>template.xhtml</literal> contains:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:105
+#, no-c-format
+msgid ""
+"&lt;m:message&gt;\n"
+"   &lt;m:from name=\"Seam\" address=\"do-not-reply at jboss.com\" /&gt;\n"
+"   &lt;m:to name=\"#{person.firstname} #{person.lastname}\"&gt;#{person."
+"address}&lt;/m:to&gt;\n"
+"   &lt;m:subject&gt;#{subject}&lt;/m:subject&gt;\n"
+"   &lt;m:body&gt;\n"
+"       &lt;html&gt;\n"
+"           &lt;body&gt;\n"
+"               &lt;ui:insert name=\"body\"&gt;This is the default body, "
+"specified by the template.\n"
+"               &lt;/ui:insert&gt;\n"
+"           &lt;/body&gt;\n"
+"       &lt;/html&gt;\n"
+"   &lt;/m:body&gt;\n"
+"&lt;/m:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:106
+#, no-c-format
+msgid "Our <literal>templating.xhtml</literal> contains:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:109
+#, no-c-format
+msgid ""
+"&lt;ui:param name=\"subject\" value=\"Templating with Seam Mail\"/&gt;\n"
+"&lt;ui:define name=\"body\"&gt;\n"
+"    &lt;p&gt;This example demonstrates that you can easily use &lt;i&gt;"
+"facelets templating&lt;/i&gt; in email!&lt;/p&gt;\n"
+"&lt;/ui:define&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:113
+#, no-c-format
+msgid "Other Headers"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:114
+#, no-c-format
+msgid ""
+"Sometimes you'll want to add other headers to your email. Seam provides "
+"support for some (see <xref linkend=\"Email-Tags\"/>). For example, we can "
+"set the importance of the email, and ask for a read receipt:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:117
+#, no-c-format
+msgid ""
+"&lt;m:message xmlns:m=\"http://jboss.com/products/seam/mail\"\n"
+"           importance=\"low\"\n"
+"           requestReadReceipt=\"true\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:118
+#, no-c-format
+msgid ""
+"Otherise you can add any header to the message using the <literal>&lt;m:"
+"header&gt;</literal> tag:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:121
+#, no-c-format
+msgid "&lt;m:header name=\"X-Sent-From\" value=\"JBoss Seam\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:127
+#, no-c-format
+msgid "Receiving emails"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:128
+#, no-c-format
+msgid ""
+"If you are using EJB then you can use a MDB (Message Driven Bean) to receive "
+"email. Seam comes with an improved version of <literal>mail-ra.rar</literal> "
+"as distributed in JBoss AS; until the improvements make there way into a "
+"released version of JBoss AS, replacing the default <literal>rar</literal> "
+"with the one distributed with Seam is recommended."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:131
+#, no-c-format
+msgid "You can configure it like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:134
+#, no-c-format
+msgid ""
+"@MessageDriven(activationConfig={\n"
+"         @ActivationConfigProperty(propertyName=\"mailServer\", "
+"propertyValue=\"localhost\"),\n"
+"         @ActivationConfigProperty(propertyName=\"mailFolder\", "
+"propertyValue=\"INBOX\"),\n"
+"         @ActivationConfigProperty(propertyName=\"storeProtocol\", "
+"propertyValue=\"pop3\"),\n"
+"         @ActivationConfigProperty(propertyName=\"userName\", propertyValue="
+"\"seam\"),\n"
+"         @ActivationConfigProperty(propertyName=\"password\", propertyValue="
+"\"seam\")\n"
+"})\n"
+"@ResourceAdapter(\"mail-ra.rar\")\n"
+"@Name(\"mailListener\")\n"
+"public class MailListenerMDB implements MailListener {\n"
+"\n"
+"   @In(create=true)\n"
+"   private OrderProcessor orderProcessor;\n"
+"\n"
+"   public void onMessage(Message message) {\n"
+"      // Process the message\n"
+"      orderProcessor.process(message.getSubject());\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:135
+#, no-c-format
+msgid ""
+"Each message received will cause <literal>onMessage(Message message)</"
+"literal> to be called. Most seam annotations will work inside a MDB but you "
+"musn't access the persistence context."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:138
+#, no-c-format
+msgid ""
+"You can find more information on the default <literal>mail-ra.rar</literal> "
+"at <ulink url=\"http://wiki.jboss.org/wiki/Wiki.jsp?page=InboundJavaMail"
+"\">http://wiki.jboss.org/wiki/Wiki.jsp?page=InboundJavaMail</ulink>. The "
+"version distributed with Seam also includes a <literal>debug</literal> "
+"property to enable JavaMail debugging, a <literal>flush</literal> property "
+"(by default true) to disable flushing a <literal>POP3</literal> mailbox "
+"after successfullying delivering a message to your MDB and a <literal>port</"
+"literal> property to override the default TCP port. Beware that the api for "
+"this may be altered as changes make there way into JBoss AS."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:141
+#, no-c-format
+msgid ""
+"If you aren't using JBoss AS you can still use <literal>mail-ra.rar</"
+"literal> (included with Seam in the mail directory), or you may find your "
+"application server includes a similar adapter."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:147
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:148
+#, no-c-format
+msgid ""
+"To include Email support in your application, include <literal>jboss-seam-"
+"mail.jar</literal> in your WEB-INF/lib directory. If you are using JBoss AS "
+"there is no further configuration needed to use Seam's email support. "
+"Otherwise you need to make sure you have the JavaMail API, an implementation "
+"of the JavaMail API present (the API and impl used in JBoss AS are "
+"distributed with seam as <literal>lib/mail.jar</literal>), and a copy of the "
+"Java Activation Framework (distributed with seam as <literal>lib/activation."
+"jar</literal>."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:151
+#, no-c-format
+msgid ""
+"The Seam Email module requires the use of Facelets as the view technology. "
+"Future versions of the library may also support the use of JSP. "
+"Additionally, it requires the use of the seam-ui package."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:154
+#, no-c-format
+msgid ""
+"The <literal>mailSession</literal> component uses JavaMail to talk to a "
+"'real' SMTP server."
+msgstr ""
+
+#. Tag: literal
+#: Mail.xml:158
+#, no-c-format
+msgid "mailSession"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:159
+#, no-c-format
+msgid ""
+"A JavaMail Session may be available via a JNDI lookup if you are working in "
+"an JEE environment or you can use a Seam configured Session."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:162
+#, no-c-format
+msgid ""
+"The mailSession component's properties are described in more detail in <xref "
+"linkend=\"Built_in_Seam_components-Mail_related_components\"/>."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:166
+#, no-c-format
+msgid "JNDI lookup in JBoss AS"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:167
+#, no-c-format
+msgid ""
+"The JBossAS <literal>deploy/mail-service.xml</literal> configures a JavaMail "
+"session binding into JNDI. The default service configuration will need "
+"altering for your network. <ulink url=\"http://wiki.jboss.org/wiki/Wiki.jsp?"
+"page=JavaMail\">http://wiki.jboss.org/wiki/Wiki.jsp?page=JavaMail</ulink> "
+"describes the service in more detail."
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:170
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"        xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"        xmlns:mail=\"http://jboss.com/products/seam/mail\"&gt;\n"
+"        \n"
+"    &lt;mail:mail-session session-jndi-name=\"java:/Mail\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:171
+#, no-c-format
+msgid ""
+"Here we tell Seam to get the mail session bound to <literal>java:/Mail</"
+"literal> from JNDI."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:177
+#, no-c-format
+msgid "Seam configured Session"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:178
+#, no-c-format
+msgid ""
+"A mail session can be configured via <literal>components.xml</literal>. Here "
+"we tell Seam to use <literal>smtp.example.com</literal> as the smtp server,"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:181
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"        xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"        xmlns:mail=\"http://jboss.com/products/seam/mail\"&gt;\n"
+"        \n"
+"    &lt;mail:mail-session host=\"smtp.example.com\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:189
+#, no-c-format
+msgid "Tags"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:190
+#, no-c-format
+msgid ""
+"Emails are generated using tags in the <literal>http://jboss.com/products/"
+"seam/mail</literal> namespace. Documents should always have the "
+"<literal>message</literal> tag at the root of the message. The message tag "
+"prepares Seam to generate an email."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:193
+#, no-c-format
+msgid ""
+"The standard templating tags of facelets can be used as normal. Inside the "
+"body you can use any JSF tag which doesn't require access to external "
+"resources (stylesheets, javascript)."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:198
+#, no-c-format
+msgid "&lt;m:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:200
+#, no-c-format
+msgid "Root tag of a mail message"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:205
+#, no-c-format
+msgid ""
+"<literal>importance</literal> &mdash; low, normal or high. By default "
+"normal, this sets the importance of the mail message."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:210
+#, no-c-format
+msgid ""
+"<literal>precedence</literal> &mdash; sets the precedence of the message (e."
+"g. bulk)."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:215
+#, no-c-format
+msgid ""
+"<literal>requestReadReceipt</literal> &mdash; by default false, if set, a "
+"read receipt will be request will be added, with the read receipt being sent "
+"to the <literal>From:</literal> address."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:220
+#, no-c-format
+msgid ""
+"<literal>urlBase</literal> &mdash; If set, the value is prepended to the "
+"<literal>requestContextPath</literal> allowing you to use components such as "
+"<literal>&lt;h:graphicImage&gt;</literal> in your emails."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:228
+#, no-c-format
+msgid "&lt;m:from&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:230
+#, no-c-format
+msgid ""
+"Set's the From: address for the email. You can only have one of these per "
+"email."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:235
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the name the email should come from."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:240 Mail.xml:255
+#, no-c-format
+msgid ""
+"<literal>address</literal> &mdash; the email address the email should come "
+"from."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:248
+#, no-c-format
+msgid "&lt;m:replyTo&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:250
+#, no-c-format
+msgid ""
+"Set's the Reply-to: address for the email. You can only have one of these "
+"per email."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:263
+#, no-c-format
+msgid "&lt;m:to&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:265
+#, no-c-format
+msgid ""
+"Add a recipient to the email. Use multiple &lt;m:to&gt; tags for multiple "
+"recipients. This tag can be safely placed inside a repeat tag such as &lt;ui:"
+"repeat&gt;."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:270 Mail.xml:290 Mail.xml:310
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the name of the recipient."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:275 Mail.xml:295 Mail.xml:315
+#, no-c-format
+msgid "<literal>address</literal> &mdash; the email address of the recipient."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:283
+#, no-c-format
+msgid "&lt;m:cc&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:285
+#, no-c-format
+msgid ""
+"Add a cc recipient to the email. Use multiple &lt;m:cc&gt; tags for multiple "
+"ccs. This tag can be safely placed inside a repeat tag such as &lt;ui:"
+"repeat&gt;."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:303
+#, no-c-format
+msgid "&lt;m:bcc&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:305
+#, no-c-format
+msgid ""
+"Add a bcc recipient to the email. Use multiple &lt;m:bcc&gt; tags for "
+"multiple bccs. This tag can be safely placed inside a repeat tag such as &lt;"
+"ui:repeat&gt;."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:323
+#, no-c-format
+msgid "&lt;m:header&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:325
+#, no-c-format
+msgid ""
+"Add a header to the email (e.g. <literal>X-Sent-From: JBoss Seam</literal>"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:330
+#, no-c-format
+msgid ""
+"<literal>name</literal> &mdash; The name of the header to add (e.g. "
+"<literal>X-Sent-From</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:335
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; The value of the header to add (e.g. "
+"<literal>JBoss Seam</literal>)."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:343
+#, no-c-format
+msgid "&lt;m:attachment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:345
+#, no-c-format
+msgid "Add an attachment to the email."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:350
+#, no-c-format
+msgid "<literal>value</literal> &mdash; The file to attach:"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:355
+#, no-c-format
+msgid ""
+"<literal>String</literal> &mdash; A <literal>String</literal> is interpreted "
+"as a path to file within the classpath"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:360
+#, no-c-format
+msgid ""
+"<literal>java.io.File</literal> &mdash; An EL expression can reference a "
+"<literal>File</literal> object"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:365
+#, no-c-format
+msgid ""
+"<literal>java.net.URL</literal> &mdash; An EL expression can reference a "
+"<literal>URL</literal> object"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:370
+#, no-c-format
+msgid ""
+"<literal>java.io.InputStream</literal> &mdash; An EL expression can "
+"reference an <literal>InputStream</literal>. In this case both a "
+"<literal>fileName</literal> and a <literal>contentType</literal> must be "
+"specified."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:375
+#, no-c-format
+msgid ""
+"<literal>byte[]</literal> &mdash; An EL expression can reference an "
+"<literal>byte[]</literal>. In this case both a <literal>fileName</literal> "
+"and a <literal>contentType</literal> must be specified."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:380
+#, no-c-format
+msgid "If the value attribute is ommitted:"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:385
+#, no-c-format
+msgid ""
+"If this tag contains a <literal>&lt;p:document&gt;</literal> tag, the "
+"document described will be generated and attached to the email. A "
+"<literal>fileName</literal> should be specfied."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:390
+#, no-c-format
+msgid ""
+"If this tag contains other JSF tags a HTML document will be generated from "
+"them and attached to the email. A <literal>fileName</literal> should be "
+"specfied."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:397
+#, no-c-format
+msgid ""
+"<literal>fileName</literal> &mdash; Specify the file name to use for the "
+"attached file."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:402
+#, no-c-format
+msgid ""
+"<literal>contentType</literal> &mdash; Specify the MIME type of the attached "
+"file"
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:410
+#, no-c-format
+msgid "&lt;m:subject&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:412
+#, no-c-format
+msgid "Set's the subject for the email."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:418
+#, no-c-format
+msgid "&lt;m:body&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:420
+#, no-c-format
+msgid ""
+"Set's the body for the email. Supports an <literal>alternative</literal> "
+"facet which, if an HTML email is generated can contain alternative text for "
+"a mail reader which doesn't support html."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:425
+#, no-c-format
+msgid ""
+"<literal>type</literal> &mdash; If set to <literal>plain</literal> then a "
+"plain text email will be generated otherwise an HTML email is generated."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Persistence.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Persistence.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Persistence.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,750 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Persistence.xml:10
+#, no-c-format
+msgid "Seam and Object/Relational Mapping"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:11
+#, no-c-format
+msgid ""
+"Seam provides extensive support for the two most popular persistence "
+"architectures for Java: Hibernate3, and the Java Persistence API introduced "
+"with EJB 3.0. Seam's unique state-management architecture allows the most "
+"sophisticated ORM integration of any web application framework."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:15
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:16
+#, no-c-format
+msgid ""
+"Seam grew out of the frustration of the Hibernate team with the "
+"statelessness typical of the previous generation of Java application "
+"architectures. The state management architecture of Seam was originally "
+"designed to solve problems relating to persistence&mdash;in particular "
+"problems associated with <emphasis>optimistic transaction processing</"
+"emphasis>. Scalable online applications always use optimistic transactions. "
+"An atomic (database/JTA) level transaction should not span a user "
+"interaction unless the application is designed to support only a very small "
+"number of concurrent clients. But almost all interesting work involves first "
+"displaying data to a user, and then, slightly later, updating the same data. "
+"So Hibernate was designed to support the idea of a persistence context which "
+"spanned an optimistic transaction."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:19
+#, no-c-format
+msgid ""
+"Unfortunately, the so-called \"stateless\" architectures that preceded Seam "
+"and EJB 3.0 had no construct for representing an optimistic transaction. So, "
+"instead, these architectures provided persistence contexts scoped to the "
+"atomic transaction. Of course, this resulted in many problems for users, and "
+"is the cause of the number one user complaint about Hibernate: the dreaded "
+"<literal>LazyInitializationException</literal>. What we need is a construct "
+"for representing an optimistic transaction in the application tier."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:22
+#, no-c-format
+msgid ""
+"EJB 3.0 recognizes this problem, and introduces the idea of a stateful "
+"component (a stateful session bean) with an <emphasis>extended persistence "
+"context</emphasis> scoped to the lifetime of the component. This is a "
+"partial solution to the problem (and is a useful construct in and of itself) "
+"however there are two problems:"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:27
+#, no-c-format
+msgid ""
+"The lifecycle of the stateful session bean must be managed manually via code "
+"in the web tier (it turns out that this is a subtle problem and much more "
+"difficult in practice than it sounds)."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:32
+#, no-c-format
+msgid ""
+"Propagation of the persistence context between stateful components in the "
+"same optimistic transaction is possible, but tricky."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:37
+#, no-c-format
+msgid ""
+"Seam solves the first problem by providing conversations, and stateful "
+"session bean components scoped to the conversation. (Most conversations "
+"actually represent optimistic transactions in the data layer.) This is "
+"sufficient for many simple applications (such as the Seam booking demo) "
+"where persistence context propagation is not needed. For more complex "
+"applications, with many loosly-interacting components in each conversation, "
+"propagation of the persistence context across components becomes an "
+"important issue. So Seam extends the persistence context management model of "
+"EJB 3.0, to provide conversation-scoped extended persistence contexts."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:43
+#, no-c-format
+msgid "Seam managed transactions"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:44
+#, no-c-format
+msgid ""
+"EJB session beans feature declarative transaction management. The EJB "
+"container is able to start a transaction transparently when the bean is "
+"invoked, and end it when the invocation ends. If we write a session bean "
+"method that acts as a JSF action listener, we can do all the work associated "
+"with that action in one transaction, and be sure that it is committed or "
+"rolled back when we finish processing the action. This is a great feature, "
+"and all that is needed by some Seam applications."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:47
+#, no-c-format
+msgid ""
+"However, there is a problem with this approach. A Seam application may not "
+"perform all data access for a request from a single method call to a session "
+"bean."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:52
+#, no-c-format
+msgid ""
+"The request might require processing by several loosly-coupled components, "
+"each of which is called independently from the web layer. It is common to "
+"see several or even many calls per request from the web layer to EJB "
+"components in Seam."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:57
+#, no-c-format
+msgid "Rendering of the view might require lazy fetching of associations."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:62
+#, no-c-format
+msgid ""
+"The more transactions per request, the more likely we are to encounter "
+"atomicity and isolation problems when our application is processing many "
+"concurrent requests. Certainly, all write operations should occur in the "
+"same transaction!"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:65
+#, no-c-format
+msgid ""
+"Hibernate users developed the <emphasis>\"open session in view\"</emphasis> "
+"pattern to work around this problem. In the Hibernate community, \"open "
+"session in view\" was historically even more important because frameworks "
+"like Spring use transaction-scoped persistence contexts. So rendering the "
+"view would cause <literal>LazyInitializationException</literal>s when "
+"unfetched associations were accessed."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:68
+#, no-c-format
+msgid ""
+"This pattern is usually implemented as a single transaction which spans the "
+"entire request. There are several problems with this implementation, the "
+"most serious being that we can never be sure that a transaction is "
+"successful until we commit it&mdash;but by the time the \"open session in "
+"view\" transaction is committed, the view is fully rendered, and the "
+"rendered response may already have been flushed to the client. How can we "
+"notify the user that their transaction was unsuccessful?"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:71
+#, no-c-format
+msgid ""
+"Seam solves both the transaction isolation problem and the association "
+"fetching problem, while working around the problems with \"open session in "
+"view\". The solution comes in two parts:"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:76
+#, no-c-format
+msgid ""
+"use an extended persistence context that is scoped to the conversation, "
+"instead of to the transaction"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:81
+#, no-c-format
+msgid ""
+"use two transactions per request; the first spans the beginning of the "
+"update model values phase until the end of the invoke application phase; the "
+"second spans the render response phase"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:86
+#, no-c-format
+msgid ""
+"In the next section, we'll tell you how to set up a conversation-scope "
+"persistence context. But first we need to tell you how to enable Seam "
+"transaction management. Note that you can use conversation-scoped "
+"persistence contexts without Seam transaction management, and there are good "
+"reasons to use Seam transaction management even when you're not using Seam-"
+"managed persistence contexts. However, the two facilities were designed to "
+"work together, and work best when used together."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:90
+#, no-c-format
+msgid "Enabling Seam-managed transactions"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:91
+#, no-c-format
+msgid ""
+"To make use of <emphasis>Seam managed transactions</emphasis>, you need to "
+"use <literal>TransactionalSeamPhaseListener</literal> in place of "
+"<literal>SeamPhaseListener</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:94
+#, no-c-format
+msgid ""
+"&lt;lifecycle&gt;\n"
+"     &lt;phase-listener&gt;\n"
+"        org.jboss.seam.jsf.TransactionalSeamPhaseListener\n"
+"    &lt;/phase-listener&gt;\n"
+"&lt;/lifecycle&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:95
+#, no-c-format
+msgid ""
+"Seam transaction management is useful even if you're using EJB 3.0 container-"
+"managed persistence contexts. But it is especially useful if you use Seam "
+"outside a Java EE 5 environment, or in any other case where you would use a "
+"Seam-managed persistence context."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:103
+#, no-c-format
+msgid "Seam-managed persistence contexts"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:104
+#, no-c-format
+msgid ""
+"If you're using Seam outside of a Java EE 5 environment, you can't rely upon "
+"the container to manage the persistence context lifecycle for you. Even if "
+"you are in an EE 5 environment, you might have a complex application with "
+"many loosly coupled components that collaborate together in the scope of a "
+"single conversation, and in this case you might find that propagation of the "
+"persistence context between component is tricky and error-prone."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:107
+#, no-c-format
+msgid ""
+"In either case, you'll need to use a <emphasis>managed persistence context</"
+"emphasis> (for JPA) or a <emphasis>managed session</emphasis> (for "
+"Hibernate) in your components. A Seam-managed persistence context is just a "
+"built-in Seam component that manages an instance of <literal>EntityManager</"
+"literal> or <literal>Session</literal> in the conversation context. You can "
+"inject it with <literal>@In</literal>."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:110
+#, no-c-format
+msgid ""
+"Seam-managed persistence contexts are extremely efficient in a clustered "
+"environment. Seam is able to perform an optimization that EJB 3.0 "
+"specification does not allow containers to use for container-managed "
+"extended persistence contexts. Seam supports transparent failover of "
+"extended persisence contexts, without the need to replicate any persistence "
+"context state between nodes. (We hope to fix this oversight in the next "
+"revision of the EJB spec.)"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:114
+#, no-c-format
+msgid "Using a Seam-managed persistence context with JPA"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:115
+#, no-c-format
+msgid ""
+"Configuring a managed persistence context is easy. In <literal>components."
+"xml</literal>, we can write:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:118
+#, no-c-format
+msgid ""
+"&lt;core:managed-persistence-context name=\"bookingDatabase\" \n"
+"                           auto-create=\"true\"\n"
+"            persistence-unit-jndi-name=\"java:/EntityManagerFactories/"
+"bookingData\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:119
+#, no-c-format
+msgid ""
+"This configuration creates a conversation-scoped Seam component named "
+"<literal>bookingDatabase</literal> that manages the lifecycle of "
+"<literal>EntityManager</literal> instances for the persistence unit "
+"(<literal>EntityManagerFactory</literal> instance) with JNDI name "
+"<literal>java:/EntityManagerFactories/bookingData</literal>."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:122
+#, no-c-format
+msgid ""
+"Of course, you need to make sure that you have bound the "
+"<literal>EntityManagerFactory</literal> into JNDI. In JBoss, you can do this "
+"by adding the following property setting to <literal>persistence.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:125
+#, no-c-format
+msgid ""
+"&lt;property name=\"jboss.entity.manager.factory.jndi.name\" \n"
+"          value=\"java:/EntityManagerFactories/bookingData\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:126
+#, no-c-format
+msgid "Now we can have our <literal>EntityManager</literal> injected using:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:129
+#, no-c-format
+msgid "@In EntityManager bookingDatabase;"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:133
+#, no-c-format
+msgid "Using a Seam-managed Hibernate session"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:134
+#, no-c-format
+msgid ""
+"Seam-managed Hibernate sessions are similar. In <literal>components.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:137
+#, no-c-format
+msgid ""
+"&lt;core:hibernate-session-factory name=\"hibernateSessionFactory\"/&gt;\n"
+"\n"
+"&lt;core:managed-hibernate-session name=\"bookingDatabase\" \n"
+"                         auto-create=\"true\"\n"
+"           session-factory-jndi-name=\"java:/bookingSessionFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:138
+#, no-c-format
+msgid ""
+"Where <literal>java:/bookingSessionFactory</literal> is the name of the "
+"session factory specified in <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:141
+#, no-c-format
+msgid ""
+"&lt;session-factory name=\"java:/bookingSessionFactory\"&gt;\n"
+"    &lt;property name=\"transaction.flush_before_completion\"&gt;true&lt;/"
+"property&gt;\n"
+"    &lt;property name=\"connection.release_mode\"&gt;after_statement&lt;/"
+"property&gt;\n"
+"    &lt;property name=\"transaction.manager_lookup_class\"&gt;\n"
+"        org.hibernate.transaction.JBossTransactionManagerLookup\n"
+"    &lt;/property&gt;\n"
+"    &lt;property name=\"transaction.factory_class\"&gt;\n"
+"        org.hibernate.transaction.JTATransactionFactory\n"
+"    &lt;/property&gt;\n"
+"    &lt;property name=\"connection.datasource\"&gt;java:/"
+"bookingDatasource&lt;/property&gt;\n"
+"    ...\n"
+"&lt;/session-factory&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:142
+#, no-c-format
+msgid ""
+"Note that Seam does not flush the session, so you should always enable "
+"<literal>hibernate.transaction.flush_before_completion</literal> to ensure "
+"that the session is automatically flushed before the JTA transaction commits."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:145
+#, no-c-format
+msgid ""
+"We can now have a managed Hibernate <literal>Session</literal> injected into "
+"our JavaBean components using the following code:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:148
+#, no-c-format
+msgid "@In Session bookingDatabase;"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:152
+#, no-c-format
+msgid "Seam-managed persistence contexts and atomic conversations"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:153
+#, no-c-format
+msgid ""
+"Persistence contexts scoped to the conversation allows you to program "
+"optimistic transactions that span multiple requests to the server without "
+"the need to use the <literal>merge()</literal> operation , without the need "
+"to re-load data at the beginning of each request, and without the need to "
+"wrestle with the <literal>LazyInitializationException</literal> or "
+"<literal>NonUniqueObjectException</literal>."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:156
+#, no-c-format
+msgid ""
+"As with any optimistic transaction management, transaction isolation and "
+"consistency can be achieved via use of optimistic locking. Fortunately, both "
+"Hibernate and EJB 3.0 make it very easy to use optimistic locking, by "
+"providing the <literal>@Version</literal> annotation."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:159
+#, no-c-format
+msgid ""
+"By default, the persistence context is flushed (synchronized with the "
+"database) at the end of each transaction. This is sometimes the desired "
+"behavior. But very often, we would prefer that all changes are held in "
+"memory and only written to the database when the conversation ends "
+"successfully. This allows for truly atomic conversations. As the result of a "
+"truly stupid and shortsighted decision by certain non-JBoss, non-Sun and non-"
+"Sybase members of the EJB 3.0 expert group, there is currently no simple, "
+"usable and portable way to implement atomic conversations using EJB 3.0 "
+"persistence. However, Hibernate provides this feature as a vendor extension "
+"to the <literal>FlushModeType</literal>s defined by the specification, and "
+"it is our expectation that other vendors will soon provide a similar "
+"extension."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:162
+#, no-c-format
+msgid ""
+"Seam lets you specify <literal>FlushModeType.MANUAL</literal> when beginning "
+"a conversation. Currently, this works only when Hibernate is the underlying "
+"persistence provider, but we plan to support other equivalent vendor "
+"extensions."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:165
+#, no-c-format
+msgid ""
+"@In EntityManager em; //a Seam-managed persistence context\n"
+"\n"
+"@Begin(flushMode=MANUAL)\n"
+"public void beginClaimWizard() {\n"
+"    claim = em.find(Claim.class, claimId);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:166
+#, no-c-format
+msgid ""
+"Now, the <literal>claim</literal> object remains managed by the persistence "
+"context for the rest ot the conversation. We can make changes to the claim:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:169
+#, no-c-format
+msgid ""
+"public void addPartyToClaim() {\n"
+"    Party party = ....;\n"
+"    claim.addParty(party);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:170
+#, no-c-format
+msgid ""
+"But these changes will not be flushed to the database until we explicitly "
+"force the flush to occur:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:173
+#, no-c-format
+msgid ""
+"@End\n"
+"public void commitClaim() {\n"
+"    em.flush();\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:179
+#, no-c-format
+msgid "Using the JPA \"delegate\""
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:180
+#, no-c-format
+msgid ""
+"The <literal>EntityManager</literal> interface lets you access a vendor-"
+"specific API via the <literal>getDelegate()</literal> method. Naturally, the "
+"most interesting vendor is Hibernate, and the most powerful delegate "
+"interface is <literal>org.hibernate.Session</literal>. You'd be nuts to use "
+"anything else. Trust me, I'm not biased at all."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:183
+#, no-c-format
+msgid ""
+"But regardless of whether you're using Hibernate (genius!) or something else "
+"(masochist, or just not very bright), you'll almost certainly want to use "
+"the delegate in your Seam components from time to time. One approach would "
+"be the following:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:186
+#, no-c-format
+msgid ""
+"@In EntityManager entityManager;\n"
+"\n"
+"@Create\n"
+"public void init() {\n"
+"    ( (Session) entityManager.getDelegate() ).enableFilter(\"currentVersions"
+"\");\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:187
+#, no-c-format
+msgid ""
+"But typecasts are unquestionably the ugliest syntax in the Java language, so "
+"most people avoid them whenever possible. Here's a different way to get at "
+"the delegate. First, add the following line to <literal>components.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:190
+#, no-c-format
+msgid ""
+"&lt;factory name=\"session\" \n"
+"         scope=\"STATELESS\" \n"
+"         auto-create=\"true\" \n"
+"         value=\"#{entityManager.delegate}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:191
+#, no-c-format
+msgid "Now we can inject the session directly:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:194
+#, no-c-format
+msgid ""
+"@In Session session;\n"
+"\n"
+"@Create\n"
+"public void init() {\n"
+"    session.enableFilter(\"currentVersions\");\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:198
+#, no-c-format
+msgid "Using EL in EJB-QL/HQL"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:199
+#, no-c-format
+msgid ""
+"Seam proxies the <literal>EntityManager</literal> or <literal>Session</"
+"literal> object whenever you use a Seam-managed persistence context or "
+"inject a container managed persistence context using "
+"<literal>@PersistenceContext</literal>. This lets you use EL expressions in "
+"your query strings, safely and efficiently. For example, this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:202
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=#{user.username}\")\n"
+"         .getSingleResult();"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:203
+#, no-c-format
+msgid "is equivalent to:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:206
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getSingleResult();"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:207
+#, no-c-format
+msgid "Of course, you should never, ever write it like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:210
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=\" + user.getUsername"
+"()) //BAD!\n"
+"         .getSingleResult();"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:211
+#, no-c-format
+msgid "(It is inefficient and vulnerable to SQL injection attacks.)"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:217
+#, no-c-format
+msgid "Using Hibernate filters"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:218
+#, no-c-format
+msgid ""
+"The coolest, and most unique, feature of Hibernate is <emphasis>filters</"
+"emphasis>. Filters let you provide a restricted view of the data in the "
+"database. You can find out more about filters in the Hibernate "
+"documentation. But we thought we'd mention an easy way to incorporate "
+"filters into a Seam application, one that works especially well with the "
+"Seam Application Framework."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:221
+#, no-c-format
+msgid ""
+"Seam-managed persistence contexts may have a list of filters defined, which "
+"will be enabled whenever an <literal>EntityManager</literal> or Hibernate "
+"<literal>Session</literal> is first created. (Of course, they may only be "
+"used when Hibernate is the underlying persistence provider.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:224
+#, no-c-format
+msgid ""
+"&lt;core:filter name=\"regionFilter\"&gt;\n"
+"    &lt;core:name&gt;region&lt;/core:name&gt;\n"
+"    &lt;core:parameters&gt;\n"
+"        &lt;key&gt;regionCode&lt;/key&gt;\n"
+"        &lt;value&gt;#{region.code}&lt;/value&gt;\n"
+"    &lt;/core:parameters&gt;\n"
+"&lt;/core:filter&gt;\n"
+"\n"
+"&lt;core:filter name=\"currentFilter\"&gt;\n"
+"    &lt;core:name&gt;current&lt;/core:name&gt;\n"
+"    &lt;core:parameters&gt;\n"
+"        &lt;key&gt;date&lt;/key&gt;\n"
+"        &lt;value&gt;#{currentDate}&lt;/value&gt;\n"
+"    &lt;/core:parameters&gt;\n"
+"&lt;/core:filter&gt;\n"
+"\n"
+"&lt;core:managed-persistence-context name=\"personDatabase\"\n"
+"    persistence-unit-jndi-name=\"java:/EntityManagerFactories/personDatabase"
+"\"&gt;\n"
+"    &lt;core:filters&gt;\n"
+"        &lt;value&gt;#{regionFilter}&lt;/value&gt;\n"
+"        &lt;value&gt;#{currentFilter}&lt;/value&gt;\n"
+"    &lt;/core:filters&gt;\n"
+"&lt;/core:managed-persistence-context&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Remoting.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Remoting.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Remoting.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1458 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Remoting.xml:10
+#, no-c-format
+msgid "Remoting"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:11
+#, no-c-format
+msgid ""
+"Seam provides a convenient method of remotely accessing components from a "
+"web page, using AJAX (Asynchronous Javascript and XML). The framework for "
+"this functionality is provided with almost no up-front development effort - "
+"your components only require simple annotating to become accessible via "
+"AJAX. This chapter describes the steps required to build an AJAX-enabled web "
+"page, then goes on to explain the features of the Seam Remoting framework in "
+"more detail."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:14 Remoting.xml:296
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:15
+#, no-c-format
+msgid ""
+"To use remoting, the Seam Resource servlet must first be configured in your "
+"<literal>web.xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:18
+#, no-c-format
+msgid ""
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"  &lt;/servlet&gt;\n"
+"\n"
+"  &lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"  &lt;/servlet-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:19
+#, no-c-format
+msgid ""
+"The next step is to import the necessary Javascript into your web page. "
+"There are a minimum of two scripts that must be imported. The first one "
+"contains all the client-side framework code that enables remoting "
+"functionality:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:22
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/resource/"
+"remote.js\"&gt;&lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:23
+#, no-c-format
+msgid ""
+"The second script contains the stubs and type definitions for the components "
+"you wish to call. It is generated dynamically based on the local interface "
+"of your components, and includes type definitions for all of the classes "
+"that can be used to call the remotable methods of the interface. The name of "
+"the script reflects the name of your component. For example, if you have a "
+"stateless session bean annotated with <literal>@Name(\"customerAction\")</"
+"literal>, then your script tag should look like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:26
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?customerAction\"&gt;\n"
+"      &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:27
+#, no-c-format
+msgid ""
+"If you wish to access more than one component from the same page, then "
+"include them all as parameters of your script tag:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:30
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" \n"
+"      src=\"seam/resource/remoting/interface.js?customerAction&amp;"
+"accountAction\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:31
+#, no-c-format
+msgid "The \"Seam\" object"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:32
+#, no-c-format
+msgid ""
+"Client-side interaction with your components is all performed via the "
+"<literal>Seam</literal> Javascript object. This object is defined in "
+"<literal>remote.js</literal>, and you'll be using it to make asynchronous "
+"calls against your component. It is split into two areas of functionality; "
+"<literal>Seam.Component</literal> contains methods for working with "
+"components and <literal>Seam.Remoting</literal> contains methods for "
+"executing remote requests. The easiest way to become familiar with this "
+"object is to start with a simple example."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:35
+#, no-c-format
+msgid "A Hello World example"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:36
+#, no-c-format
+msgid ""
+"Let's step through a simple example to see how the <literal>Seam</literal> "
+"object works. First of all, let's create a new Seam component called "
+"<literal>helloAction</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:39
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"  @Name(\"helloAction\")\n"
+"  public class HelloAction implements HelloLocal {\n"
+"    public String sayHello(String name) {\n"
+"      return \"Hello, \" + name;\n"
+"    }\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:40
+#, no-c-format
+msgid ""
+"You also need to create a local interface for our new component - take "
+"special note of the <literal>@WebRemote</literal> annotation, as it's "
+"required to make our method accessible via remoting:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:43
+#, no-c-format
+msgid ""
+"@Local\n"
+"  public interface HelloLocal {\n"
+"    @WebRemote\n"
+"    public String sayHello(String name);\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:44
+#, no-c-format
+msgid ""
+"That's all the server-side code we need to write. Now for our web page - "
+"create a new page and import the following scripts:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:47
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/resource/"
+"remote.js\"&gt;&lt;/script&gt;\n"
+"  &lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?helloAction\"&gt;&lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:48
+#, no-c-format
+msgid ""
+"To make this a fully interactive user experience, let's add a button to our "
+"page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:51
+#, no-c-format
+msgid ""
+"&lt;button onclick=\"javascript:sayHello()\"&gt;Say Hello&lt;/button&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:52
+#, no-c-format
+msgid ""
+"We'll also need to add some more script to make our button actually do "
+"something when it's clicked:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:55
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\"&gt;\n"
+"    //&lt;![CDATA[\n"
+"\n"
+"    function sayHello() {\n"
+"      var name = prompt(\"What is your name?\");\n"
+"      Seam.Component.getInstance(\"helloAction\").sayHello(name, "
+"sayHelloCallback);\n"
+"    }\n"
+"\n"
+"    function sayHelloCallback(result) {\n"
+"      alert(result);\n"
+"    }\n"
+"\n"
+"    // ]]&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:56
+#, no-c-format
+msgid ""
+"We're done! Deploy your application and browse to your page. Click the "
+"button, and enter a name when prompted. A message box will display the hello "
+"message confirming that the call was successful. If you want to save some "
+"time, you'll find the full source code for this Hello World example in "
+"Seam's <literal>/examples/remoting/helloworld</literal> directory."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:59
+#, no-c-format
+msgid ""
+"So what does the code of our script actually do? Let's break it down into "
+"smaller pieces. To start with, you can see from the Javascript code listing "
+"that we have implemented two methods - the first method is responsible for "
+"prompting the user for their name and then making a remote request. Take a "
+"look at the following line:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:62
+#, no-c-format
+msgid ""
+"Seam.Component.getInstance(\"helloAction\").sayHello(name, sayHelloCallback);"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:63
+#, no-c-format
+msgid ""
+"The first section of this line, <literal>Seam.Component.getInstance"
+"(\"helloAction\")</literal> returns a proxy, or \"stub\" for our "
+"<literal>helloAction</literal> component. We can invoke the methods of our "
+"component against this stub, which is exactly what happens with the "
+"remainder of the line: <literal>sayHello(name, sayHelloCallback);</literal>."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:66
+#, no-c-format
+msgid ""
+"What this line of code in its completeness does, is invoke the "
+"<literal>sayHello</literal> method of our component, passing in "
+"<literal>name</literal> as a parameter. The second parameter, "
+"<literal>sayHelloCallback</literal> isn't a parameter of our component's "
+"<literal>sayHello</literal> method, instead it tells the Seam Remoting "
+"framework that once it receives the response to our request, it should pass "
+"it to the <literal>sayHelloCallback</literal> Javascript method. This "
+"callback parameter is entirely optional, so feel free to leave it out if "
+"you're calling a method with a <literal>void</literal> return type or if you "
+"don't care about the result."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:69
+#, no-c-format
+msgid ""
+"The <literal>sayHelloCallback</literal> method, once receiving the response "
+"to our remote request then pops up an alert message displaying the result of "
+"our method call."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:72
+#, no-c-format
+msgid "Seam.Component"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:73
+#, no-c-format
+msgid ""
+"The <literal>Seam.Component</literal> Javascript object provides a number of "
+"client-side methods for working with your Seam components. The two main "
+"methods, <literal>newInstance()</literal> and <literal>getInstance()</"
+"literal> are documented in the following sections however their main "
+"difference is that <literal>newInstance()</literal> will always create a new "
+"instance of a component type, and <literal>getInstance()</literal> will "
+"return a singleton instance."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:76
+#, no-c-format
+msgid "Seam.Component.newInstance()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:77
+#, no-c-format
+msgid ""
+"Use this method to create a new instance of an entity or Javabean component. "
+"The object returned by this method will have the same getter/setter methods "
+"as its server-side counterpart, or alternatively if you wish you can access "
+"its fields directly. Take the following Seam entity component for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:80
+#, no-c-format
+msgid ""
+"@Name(\"customer\")\n"
+"  @Entity\n"
+"  public class Customer implements Serializable\n"
+"  {\n"
+"    private Integer customerId;\n"
+"    private String firstName;\n"
+"    private String lastName;\n"
+"    \n"
+"    @Column public Integer getCustomerId() { \n"
+"      return customerId; \n"
+"    }\n"
+"    \n"
+"    public void setCustomerId(Integer customerId} { \n"
+"      this.customerId = customerId; \n"
+"    }\n"
+"    \n"
+"    @Column public String getFirstName() { \n"
+"      return firstName; \n"
+"    }\n"
+"    \n"
+"    public void setFirstName(String firstName) {\n"
+"      this.firstName = firstName; \n"
+"    }\n"
+"    \n"
+"    @Column public String getLastName() {\n"
+"      return lastName;\n"
+"    }\n"
+"    \n"
+"    public void setLastName(String lastName) {\n"
+"      this.lastName = lastName;\n"
+"    }\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:81
+#, no-c-format
+msgid "To create a client-side Customer you would write the following code:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:84
+#, no-c-format
+msgid "var customer = Seam.Component.newInstance(\"customer\");"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:85
+#, no-c-format
+msgid "Then from here you can set the fields of the customer object:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:88
+#, no-c-format
+msgid ""
+"customer.setFirstName(\"John\");\n"
+"  // Or you can set the fields directly\n"
+"  customer.lastName = \"Smith\";"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:89
+#, no-c-format
+msgid "Seam.Component.getInstance()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:90
+#, no-c-format
+msgid ""
+"The <literal>getInstance()</literal> method is used to get a reference to a "
+"Seam session bean component stub, which can then be used to remotely execute "
+"methods against your component. This method returns a singleton for the "
+"specified component, so calling it twice in a row with the same component "
+"name will return the same instance of the component."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:93
+#, no-c-format
+msgid ""
+"To continue our example from before, if we have created a new "
+"<literal>customer</literal> and we now wish to save it, we would pass it to "
+"the <literal>saveCustomer()</literal> method of our <literal>customerAction</"
+"literal> component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:96
+#, no-c-format
+msgid "Seam.Component.getInstance(\"customerAction\").saveCustomer(customer);"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:97
+#, no-c-format
+msgid "Seam.Component.getComponentName()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:98
+#, no-c-format
+msgid ""
+"Passing an object into this method will return its component name if it is a "
+"component, or <literal>null</literal> if it is not."
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:101
+#, no-c-format
+msgid ""
+"if (Seam.Component.getComponentName(instance) == \"customer\")\n"
+"    alert(\"Customer\");\n"
+"  else if (Seam.Component.getComponentName(instance) == \"staff\")\n"
+"    alert(\"Staff member\");"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:102
+#, no-c-format
+msgid "Seam.Remoting"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:103
+#, no-c-format
+msgid ""
+"Most of the client side functionality for Seam Remoting is contained within "
+"the <literal>Seam.Remoting</literal> object. While you shouldn't need to "
+"directly call most of its methods, there are a couple of important ones "
+"worth mentioning."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:106
+#, no-c-format
+msgid "Seam.Remoting.createType()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:107
+#, no-c-format
+msgid ""
+"If your application contains or uses Javabean classes that aren't Seam "
+"components, you may need to create these types on the client side to pass as "
+"parameters into your component method. Use the <literal>createType()</"
+"literal> method to create an instance of your type. Pass in the fully "
+"qualified Java class name as a parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:110
+#, no-c-format
+msgid "var widget = Seam.Remoting.createType(\"com.acme.widgets.MyWidget\");"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:111
+#, no-c-format
+msgid "Seam.Remoting.getTypeName()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:112
+#, no-c-format
+msgid ""
+"This method is the equivalent of <literal>Seam.Component.getComponentName()</"
+"literal> but for non-component types. It will return the name of the type "
+"for an object instance, or <literal>null</literal> if the type is not known. "
+"The name is the fully qualified name of the type's Java class."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:115
+#, no-c-format
+msgid "Client Interfaces"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:116
+#, no-c-format
+msgid ""
+"In the configuration section above, the interface, or \"stub\" for our "
+"component is imported into our page via <literal>seam/resource/remoting/"
+"interface.js</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:119
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?customerAction\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:120
+#, no-c-format
+msgid ""
+"By including this script in our page, the interface definitions for our "
+"component, plus any other components or types that are required to execute "
+"the methods of our component are generated and made available for the "
+"remoting framework to use."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:123
+#, no-c-format
+msgid ""
+"There are two types of client stub that can be generated, \"executable\" "
+"stubs and \"type\" stubs. Executable stubs are behavioural, and are used to "
+"execute methods against your session bean components, while type stubs "
+"contain state and represent the types that can be passed in as parameters or "
+"returned as a result."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:126
+#, no-c-format
+msgid ""
+"The type of client stub that is generated depends on the type of your Seam "
+"component. If the component is a session bean, then an executable stub will "
+"be generated, otherwise if it's an entity or JavaBean, then a type stub will "
+"be generated. There is one exception to this rule; if your component is a "
+"JavaBean (ie it is not a session bean nor an entity bean) and any of its "
+"methods are annotated with @WebRemote, then an executable stub will be "
+"generated for it instead of a type stub. This allows you to use remoting to "
+"call methods of your JavaBean components in a non-EJB environment where you "
+"don't have access to session beans."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:130
+#, no-c-format
+msgid "The Context"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:131
+#, no-c-format
+msgid ""
+"The Seam Remoting Context contains additional information which is sent and "
+"received as part of a remoting request/response cycle. At this stage it only "
+"contains the conversation ID but may be expanded in the future."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:134
+#, no-c-format
+msgid "Setting and reading the Conversation ID"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:136
+#, no-c-format
+msgid ""
+"If you intend on using remote calls within the scope of a conversation then "
+"you need to be able to read or set the conversation ID in the Seam Remoting "
+"Context. To read the conversation ID after making a remote request call "
+"<literal>Seam.Remoting.getContext().getConversationId()</literal>. To set "
+"the conversation ID before making a request, call <literal>Seam.Remoting."
+"getContext().setConversationId()</literal>."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:139
+#, no-c-format
+msgid ""
+"If the conversation ID hasn't been explicitly set with <literal>Seam."
+"Remoting.getContext().setConversationId()</literal>, then it will be "
+"automatically assigned the first valid conversation ID that is returned by "
+"any remoting call. If you are working with multiple conversations within "
+"your page, then you may need to explicitly set the conversation ID before "
+"each call. If you are working with just a single conversation, then you "
+"don't need to do anything special."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:145
+#, no-c-format
+msgid "Batch Requests"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:146
+#, no-c-format
+msgid ""
+"Seam Remoting allows multiple component calls to be executed within a single "
+"request. It is recommended that this feature is used wherever it is "
+"appropriate to reduce network traffic."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:149
+#, no-c-format
+msgid ""
+"The method <literal>Seam.Remoting.startBatch()</literal> will start a new "
+"batch, and any component calls executed after starting a batch are queued, "
+"rather than being sent immediately. When all the desired component calls "
+"have been added to the batch, the <literal>Seam.Remoting.executeBatch()</"
+"literal> method will send a single request containing all of the queued "
+"calls to the server, where they will be executed in order. After the calls "
+"have been executed, a single response containining all return values will be "
+"returned to the client and the callback functions (if provided) triggered in "
+"the same order as execution."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:152
+#, no-c-format
+msgid ""
+"If you start a new batch via the <literal>startBatch()</literal> method but "
+"then decide you don't want to send it, the <literal>Seam.Remoting.cancelBatch"
+"()</literal> method will discard any calls that were queued and exit the "
+"batch mode."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:155
+#, no-c-format
+msgid ""
+"To see an example of a batch being used, take a look at <literal>/examples/"
+"remoting/chatroom</literal>."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:159
+#, no-c-format
+msgid "Working with Data types"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:160
+#, no-c-format
+msgid "Primitives / Basic Types"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:161
+#, no-c-format
+msgid ""
+"This section describes the support for basic data types. On the server side "
+"these values are generally compatible with either their primitive type or "
+"their corresponding wrapper class."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:164
+#, no-c-format
+msgid "String"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:165
+#, no-c-format
+msgid ""
+"Simply use Javascript String objects when setting String parameter values."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:168
+#, no-c-format
+msgid "Number"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:169
+#, no-c-format
+msgid ""
+"There is support for all number types supported by Java. On the client side, "
+"number values are always serialized as their String representation and then "
+"on the server side they are converted to the correct destination type. "
+"Conversion into either a primitive or wrapper type is supported for "
+"<literal>Byte</literal>, <literal>Double</literal>, <literal>Float</"
+"literal>, <literal>Integer</literal>, <literal>Long</literal> and "
+"<literal>Short</literal> types."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:172
+#, no-c-format
+msgid "Boolean"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:173
+#, no-c-format
+msgid ""
+"Booleans are represented client side by Javascript Boolean values, and "
+"server side by a Java boolean."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:176
+#, no-c-format
+msgid "JavaBeans"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:177
+#, no-c-format
+msgid ""
+"In general these will be either Seam entity or JavaBean components, or some "
+"other non-component class. Use the appropriate method (either <literal>Seam."
+"Component.newInstance()</literal> for Seam components or <literal>Seam."
+"Remoting.createType()</literal> for everything else) to create a new "
+"instance of the object."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:180
+#, no-c-format
+msgid ""
+"It is important to note that only objects that are created by either of "
+"these two methods should be used as parameter values, where the parameter is "
+"not one of the other valid types mentioned anywhere else in this section. In "
+"some situations you may have a component method where the exact parameter "
+"type cannot be determined, such as:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:183
+#, no-c-format
+msgid ""
+"@Name(\"myAction\")\n"
+"  public class MyAction implements MyActionLocal {\n"
+"    public void doSomethingWithObject(Object obj) {\n"
+"      // code\n"
+"    }\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:184
+#, no-c-format
+msgid ""
+"In this case you might want to pass in an instance of your "
+"<literal>myWidget</literal> component, however the interface for "
+"<literal>myAction</literal> won't include <literal>myWidget</literal> as it "
+"is not directly referenced by any of its methods. To get around this, "
+"<literal>MyWidget</literal> needs to be explicitly imported:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:187
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?myAction&amp;myWidget\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:188
+#, no-c-format
+msgid ""
+"This will then allow a <literal>myWidget</literal> object to be created with "
+"<literal>Seam.Component.newInstance(\"myWidget\")</literal>, which can then "
+"be passed to <literal>myAction.doSomethingWithObject()</literal>."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:191
+#, no-c-format
+msgid "Dates and Times"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:192
+#, no-c-format
+msgid ""
+"Date values are serialized into a String representation that is accurate to "
+"the millisecond. On the client side, use a Javascript Date object to work "
+"with date values. On the server side, use any <literal>java.util.Date</"
+"literal> (or descendent, such as <literal>java.sql.Date</literal> or "
+"<literal>java.sql.Timestamp</literal> class."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:195
+#, no-c-format
+msgid "Enums"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:196
+#, no-c-format
+msgid ""
+"On the client side, enums are treated the same as Strings. When setting the "
+"value for an enum parameter, simply use the String representation of the "
+"enum. Take the following component as an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:199
+#, no-c-format
+msgid ""
+"@Name(\"paintAction\")\n"
+"  public class paintAction implements paintLocal {\n"
+"    public enum Color {red, green, blue, yellow, orange, purple};\n"
+"\n"
+"    public void paint(Color color) {\n"
+"      // code\n"
+"    }    \n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:200
+#, no-c-format
+msgid ""
+"To call the <literal>paint()</literal> method with the color <literal>red</"
+"literal>, pass the parameter value as a String literal:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:203
+#, no-c-format
+msgid "Seam.Component.getInstance(\"paintAction\").paint(\"red\");"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:204
+#, no-c-format
+msgid ""
+"The inverse is also true - that is, if a component method returns an enum "
+"parameter (or contains an enum field anywhere in the returned object graph) "
+"then on the client-side it will be represented as a String."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:207
+#, no-c-format
+msgid "Collections"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:208
+#, no-c-format
+msgid "Bags"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:209
+#, no-c-format
+msgid ""
+"Bags cover all collection types including arrays, collections, lists, sets, "
+"(but excluding Maps - see the next section for those), and are implemented "
+"client-side as a Javascript array. When calling a component method that "
+"accepts one of these types as a parameter, your parameter should be a "
+"Javascript array. If a component method returns one of these types, then the "
+"return value will also be a Javascript array. The remoting framework is "
+"clever enough on the server side to convert the bag to an appropriate type "
+"for the component method call."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:212
+#, no-c-format
+msgid "Maps"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:213
+#, no-c-format
+msgid ""
+"As there is no native support for Maps within Javascript, a simple Map "
+"implementation is provided with the Seam Remoting framework. To create a Map "
+"which can be used as a parameter to a remote call, create a new "
+"<literal>Seam.Remoting.Map</literal> object:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:216
+#, no-c-format
+msgid "var map = new Seam.Remoting.Map();"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:217
+#, no-c-format
+msgid ""
+"This Javascript implementation provides basic methods for working with Maps: "
+"<literal>size()</literal>, <literal>isEmpty()</literal>, <literal>keySet()</"
+"literal>, <literal>values()</literal>, <literal>get(key)</literal>, "
+"<literal>put(key, value)</literal>, <literal>remove(key)</literal> and "
+"<literal>contains(key)</literal>. Each of these methods are equivalent to "
+"their Java counterpart. Where the method returns a collection, such as "
+"<literal>keySet()</literal> and <literal>values()</literal>, a Javascript "
+"Array object will be returned that contains the key or value objects "
+"(respectively)."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:220
+#, no-c-format
+msgid "Debugging"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:221
+#, no-c-format
+msgid ""
+"To aid in tracking down bugs, it is possible to enable a debug mode which "
+"will display the contents of all the packets send back and forth between the "
+"client and server in a popup window. To enable debug mode, either execute "
+"the <literal>setDebug()</literal> method in Javascript:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:224
+#, no-c-format
+msgid "Seam.Remoting.setDebug(true);"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:225
+#, no-c-format
+msgid "Or configure it via components.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:228
+#, no-c-format
+msgid "&lt;remoting:remoting debug=\"true\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:229
+#, no-c-format
+msgid ""
+"To turn off debugging, call <literal>setDebug(false)</literal>. If you want "
+"to write your own messages to the debug log, call <literal>Seam.Remoting.log"
+"(message)</literal>."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:233
+#, no-c-format
+msgid "The Loading Message"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:234
+#, no-c-format
+msgid ""
+"The default loading message that appears in the top right corner of the "
+"screen can be modified, its rendering customised or even turned off "
+"completely."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:237
+#, no-c-format
+msgid "Changing the message"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:238
+#, no-c-format
+msgid ""
+"To change the message from the default \"Please Wait...\" to something "
+"different, set the value of <literal>Seam.Remoting.loadingMessage</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:241
+#, no-c-format
+msgid "Seam.Remoting.loadingMessage = \"Loading...\";"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:243
+#, no-c-format
+msgid "Hiding the loading message"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:244
+#, no-c-format
+msgid ""
+"To completely suppress the display of the loading message, override the "
+"implementation of <literal>displayLoadingMessage()</literal> and "
+"<literal>hideLoadingMessage()</literal> with functions that instead do "
+"nothing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:247
+#, no-c-format
+msgid ""
+"// don't display the loading indicator\n"
+"  Seam.Remoting.displayLoadingMessage = function() {};\n"
+"  Seam.Remoting.hideLoadingMessage = function() {};"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:248
+#, no-c-format
+msgid "A Custom Loading Indicator"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:249
+#, no-c-format
+msgid ""
+"It is also possible to override the loading indicator to display an animated "
+"icon, or anything else that you want. To do this override the "
+"<literal>displayLoadingMessage()</literal> and <literal>hideLoadingMessage()"
+"</literal> messages with your own implementation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:252
+#, no-c-format
+msgid ""
+"Seam.Remoting.displayLoadingMessage = function() {\n"
+"    // Write code here to display the indicator\n"
+"  };\n"
+"  \n"
+"  Seam.Remoting.hideLoadingMessage = function() {\n"
+"    // Write code here to hide the indicator\n"
+"  };"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:253
+#, no-c-format
+msgid "Controlling what data is returned"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:254
+#, no-c-format
+msgid ""
+"When a remote method is executed, the result is serialized into an XML "
+"response that is returned to the client. This response is then unmarshaled "
+"by the client into a Javascript object. For complex types (i.e. Javabeans) "
+"that include references to other objects, all of these referenced objects "
+"are also serialized as part of the response. These objects may reference "
+"other objects, which may reference other objects, and so forth. If left "
+"unchecked, this object \"graph\" could potentially be enormous, depending on "
+"what relationships exist between your objects. And as a side issue (besides "
+"the potential verbosity of the response), you might also wish to prevent "
+"sensitive information from being exposed to the client."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:257
+#, no-c-format
+msgid ""
+"Seam Remoting provides a simple means to \"constrain\" the object graph, by "
+"specifying the <literal>exclude</literal> field of the remote method's "
+"<literal>@WebRemote</literal> annotation. This field accepts a String array "
+"containing one or more paths specified using dot notation. When invoking a "
+"remote method, the objects in the result's object graph that match these "
+"paths are excluded from the serialized result packet."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:260
+#, no-c-format
+msgid ""
+"For all our examples, we'll use the following <literal>Widget</literal> "
+"class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:263
+#, no-c-format
+msgid ""
+"@Name(\"widget\")\n"
+"public class Widget\n"
+"{\n"
+"  private String value;\n"
+"  private String secret;\n"
+"  private Widget child;\n"
+"  private Map&lt;String,Widget&gt; widgetMap;\n"
+"  private List&lt;Widget&gt; widgetList;\n"
+"  \n"
+"  // getters and setters for all fields\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:264
+#, no-c-format
+msgid "Constraining normal fields"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:265
+#, no-c-format
+msgid ""
+"If your remote method returns an instance of <literal>Widget</literal>, but "
+"you don't want to expose the <literal>secret</literal> field because it "
+"contains sensitive information, you would constrain it like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:268
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:269
+#, no-c-format
+msgid ""
+"The value \"secret\" refers to the <literal>secret</literal> field of the "
+"returned object. Now, suppose that we don't care about exposing this "
+"particular field to the client. Instead, notice that the <literal>Widget</"
+"literal> value that is returned has a field <literal>child</literal> that is "
+"also a <literal>Widget</literal>. What if we want to hide the "
+"<literal>child</literal>'s <literal>secret</literal> value instead? We can "
+"do this by using dot notation to specify this field's path within the "
+"result's object graph:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:272
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"child.secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:273
+#, no-c-format
+msgid "Constraining Maps and Collections"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:274
+#, no-c-format
+msgid ""
+"The other place that objects can exist within an object graph are within a "
+"<literal>Map</literal> or some kind of collection (<literal>List</literal>, "
+"<literal>Set</literal>, <literal>Array</literal>, etc). Collections are "
+"easy, and are treated like any other field. For example, if our "
+"<literal>Widget</literal> contained a list of other <literal>Widget</"
+"literal>s in its <literal>widgetList</literal> field, to constrain the "
+"<literal>secret</literal> field of the <literal>Widget</literal>s in this "
+"list the annotation would look like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:277
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetList.secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:278
+#, no-c-format
+msgid ""
+"To constrain a <literal>Map</literal>'s key or value, the notation is "
+"slightly different. Appending <literal>[key]</literal> after the "
+"<literal>Map</literal>'s field name will constrain the <literal>Map</"
+"literal>'s key object values, while <literal>[value]</literal> will "
+"constrain the value object values. The following example demonstrates how "
+"the values of the <literal>widgetMap</literal> field have their "
+"<literal>secret</literal> field constrained:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:281
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetMap[value].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:282
+#, no-c-format
+msgid "Constraining objects of a specific type"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:283
+#, no-c-format
+msgid ""
+"There is one last notation that can be used to constrain the fields of a "
+"type of object no matter where in the result's object graph it appears. This "
+"notation uses either the name of the component (if the object is a Seam "
+"component) or the fully qualified class name (only if the object is not a "
+"Seam component) and is expressed using square brackets:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:286
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"[widget].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:287
+#, no-c-format
+msgid "Combining Constraints"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:288
+#, no-c-format
+msgid ""
+"Constraints can also be combined, to filter objects from multiple paths "
+"within the object graph:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:291
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetList.secret\", \"widgetMap[value].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:292
+#, no-c-format
+msgid "JMS Messaging"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:293
+#, no-c-format
+msgid ""
+"Seam Remoting provides experimental support for JMS Messaging. This section "
+"describes the JMS support that is currently implemented, but please note "
+"that this may change in the future. It is currently not recommended that "
+"this feature is used within a production environment."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:297
+#, no-c-format
+msgid ""
+"Before you can subscribe to a JMS topic, you must first configure a list of "
+"the topics that can be subscribed to by Seam Remoting. List the topics under "
+"<literal>org.jboss.seam.remoting.messaging.subscriptionRegistry."
+"allowedTopics</literal> in <literal>seam.properties</literal>, <literal>web."
+"xml</literal> or <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:300 Remoting.xml:333
+#, no-c-format
+msgid "&lt;remoting:remoting poll-timeout=\"5\" poll-interval=\"1\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:301
+#, no-c-format
+msgid "Subscribing to a JMS Topic"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:302
+#, no-c-format
+msgid "The following example demonstrates how to subscribe to a JMS Topic:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:305
+#, no-c-format
+msgid ""
+"function subscriptionCallback(message)\n"
+"  {\n"
+"    if (message instanceof Seam.Remoting.TextMessage)\n"
+"      alert(\"Received message: \" + message.getText());\n"
+"  }        \n"
+"        \n"
+"  Seam.Remoting.subscribe(\"topicName\", subscriptionCallback);"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:306
+#, no-c-format
+msgid ""
+"The <literal>Seam.Remoting.subscribe()</literal> method accepts two "
+"parameters, the first being the name of the JMS Topic to subscribe to, the "
+"second being the callback function to invoke when a message is received."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:309
+#, no-c-format
+msgid ""
+"There are two types of messages supported, Text messages and Object "
+"messages. If you need to test for the type of message that is passed to your "
+"callback function you can use the <literal>instanceof</literal> operator to "
+"test whether the message is a <literal>Seam.Remoting.TextMessage</literal> "
+"or <literal>Seam.Remoting.ObjectMessage</literal>. A <literal>TextMessage</"
+"literal> contains the text value in its <literal>text</literal> field (or "
+"alternatively call <literal>getText()</literal> on it), while an "
+"<literal>ObjectMessage</literal> contains its object value in its "
+"<literal>object</literal> field (or call its <literal>getObject()</literal> "
+"method)."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:312
+#, no-c-format
+msgid "Unsubscribing from a Topic"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:313
+#, no-c-format
+msgid ""
+"To unsubscribe from a topic, call <literal>Seam.Remoting.unsubscribe()</"
+"literal> and pass in the topic name:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:316
+#, no-c-format
+msgid "Seam.Remoting.unsubscribe(\"topicName\");"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:317
+#, no-c-format
+msgid "Tuning the Polling Process"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:318
+#, no-c-format
+msgid ""
+"There are two parameters which you can modify to control how polling occurs. "
+"The first one is <literal>Seam.Remoting.pollInterval</literal>, which "
+"controls how long to wait between subsequent polls for new messages. This "
+"parameter is expressed in seconds, and its default setting is 10."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:321
+#, no-c-format
+msgid ""
+"The second parameter is <literal>Seam.Remoting.pollTimeout</literal>, and is "
+"also expressed as seconds. It controls how long a request to the server "
+"should wait for a new message before timing out and sending an empty "
+"response. Its default is 0 seconds, which means that when the server is "
+"polled, if there are no messages ready for delivery then an empty response "
+"will be immediately returned."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:324
+#, no-c-format
+msgid ""
+"Caution should be used when setting a high <literal>pollTimeout</literal> "
+"value; each request that has to wait for a message means that a server "
+"thread is tied up until a message is received, or until the request times "
+"out. If many such requests are being served simultaneously, it could mean a "
+"large number of threads become tied up because of this reason."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:327
+#, no-c-format
+msgid ""
+"It is recommended that you set these options via components.xml, however "
+"they can be overridden via Javascript if desired. The following example "
+"demonstrates how to configure the polling to occur much more aggressively. "
+"You should set these parameters to suitable values for your application:"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:330
+#, no-c-format
+msgid "Via components.xml:"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:334
+#, no-c-format
+msgid "Via JavaScript:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:337
+#, no-c-format
+msgid ""
+"// Only wait 1 second between receiving a poll response and sending the next "
+"poll request.\n"
+"  Seam.Remoting.pollInterval = 1;\n"
+"  \n"
+"  // Wait up to 5 seconds on the server for new messages\n"
+"  Seam.Remoting.pollTimeout = 5;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Security.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Security.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Security.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1676 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Security.xml:10
+#, no-c-format
+msgid "Security"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:11
+#, no-c-format
+msgid ""
+"The Seam Security API is an optional Seam feature that provides "
+"authentication and authorization features for securing both domain and page "
+"resources within your Seam project."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:14
+#, no-c-format
+msgid "Overview"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:15
+#, no-c-format
+msgid "Seam Security provides two different modes of operation:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:20
+#, no-c-format
+msgid ""
+"<emphasis>simplified mode</emphasis> - this mode supports authentication "
+"services and simple role-based security checks."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:25
+#, no-c-format
+msgid ""
+"<emphasis>advanced mode</emphasis> - this mode supports all the same "
+"features as the simplified mode, plus it offers rule-based security checks "
+"using JBoss Rules."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:30
+#, no-c-format
+msgid "Which mode is right for my application?"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:31
+#, no-c-format
+msgid ""
+"That all depends on the requirements of your application. If you have "
+"minimal security requirements, for example if you only wish to restrict "
+"certain pages and actions to users who are logged in, or who belong to a "
+"certain role, then the simplified mode will probably be sufficient. The "
+"advantages of this is a more simplified configuration, significantly less "
+"libraries to include, and a smaller memory footprint."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:34
+#, no-c-format
+msgid ""
+"If on the other hand, your application requires security checks based on "
+"contextual state or complex business rules, then you will require the "
+"features provided by the advanced mode."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:37
+#, no-c-format
+msgid "Requirements"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:38
+#, no-c-format
+msgid ""
+"If using the advanced mode features of Seam Security, the following jar "
+"files are required to be configured as modules in <literal>application.xml</"
+"literal>. If you are using Seam Security in simplified mode, these are "
+"<emphasis>not</emphasis> required:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:43
+#, no-c-format
+msgid "drools-compiler-3.0.5.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:48
+#, no-c-format
+msgid "drools-core-3.0.5.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:53
+#, no-c-format
+msgid "commons-jci-core-1.0-406301.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:58
+#, no-c-format
+msgid "commons-jci-janino-2.4.3.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:63
+#, no-c-format
+msgid "commons-lang-2.1.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:68
+#, no-c-format
+msgid "janino-2.4.3.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:73
+#, no-c-format
+msgid "stringtemplate-2.3b6.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:78
+#, no-c-format
+msgid "antlr-2.7.6.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:83
+#, no-c-format
+msgid "antlr-3.0ea8.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:88
+#, no-c-format
+msgid ""
+"For web-based security, <literal>jboss-seam-ui.jar</literal> must also be "
+"included in the application's war file. Also, to make use of the security EL "
+"functions, <literal>SeamFaceletViewHandler</literal> must be used. Configure "
+"it in <literal>faces-config.xml</literal> like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:91
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;view-handler&gt;org.jboss.seam.ui.facelet.SeamFaceletViewHandler&lt;/"
+"view-handler&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:92
+#, no-c-format
+msgid "Authentication"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:93
+#, no-c-format
+msgid ""
+"The authentication features provided by Seam Security are built upon JAAS "
+"(Java Authentication and Authorization Service), and as such provide a "
+"robust and highly configurable API for handling user authentication. "
+"However, for less complex authentication requirements Seam offers a much "
+"more simplified method of authentication that hides the complexity of JAAS."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:96
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:97
+#, no-c-format
+msgid ""
+"The simplified authentication method uses a built-in JAAS login module, "
+"<literal>SeamLoginModule</literal>, which delegates authentication to one of "
+"your own Seam components. This login module is already configured inside "
+"Seam as part of a default application policy and as such does not require "
+"any additional configuration files. It allows you to write an authentication "
+"method using the entity classes that are provided by your own application. "
+"Configuring this simplified form of authentication requires the "
+"<literal>identity</literal> component to be configured in "
+"<literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:100
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:security=\"http://jboss.com/products/seam/security\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core http://jboss.com/"
+"products/seam/core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components http://jboss.com/"
+"products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/drools http://jboss.com/"
+"products/seam/drools-1.2.xsd\"\n"
+"                 http://jboss.com/products/seam/security http://jboss.com/"
+"products/seam/security-1.2.xsd\"&gt;                \n"
+"        \n"
+"    &lt;security:identity authenticate-method=\"#{authenticator.authenticate}"
+"\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:101
+#, no-c-format
+msgid ""
+"If you wish to use the advanced security features such as rule-based "
+"permission checks, all you need to do is include the Drools (JBoss Rules) "
+"jars in your classpath, and add some additional configuration, described "
+"later."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:104
+#, no-c-format
+msgid ""
+"The EL expression <literal>#{authenticator.authenticate}</literal> is a "
+"method binding indicating that the <literal>authenticate</literal> method of "
+"the <literal>authenticator</literal> component will be used to authenticate "
+"the user."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:107
+#, no-c-format
+msgid "Writing an authentication method"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:108
+#, no-c-format
+msgid ""
+"The <literal>authenticate-method</literal> property specified for "
+"<literal>identity</literal> in <literal>components.xml</literal> specifies "
+"which method will be used by <literal>SeamLoginModule</literal> to "
+"authenticate users. This method takes no parameters, and is expected to "
+"return a boolean indicating whether authentication is successful or not. The "
+"user's username and password can be obtained from <literal>Identity.instance"
+"().getUsername()</literal> and <literal>Identity.instance().getPassword()</"
+"literal>, respectively. Any roles that the user is a member of should be "
+"assigned using <literal>Identity.instance().addRole()</literal>. Here's a "
+"complete example of an authentication method inside a JavaBean component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:111
+#, no-c-format
+msgid ""
+"@Name(\"authenticator\")\n"
+"public class Authenticator {\n"
+"   @In EntityManager entityManager;\n"
+"   \n"
+"   public boolean authenticate() {\n"
+"      try\n"
+"      {\n"
+"         User user = (User) entityManager.createQuery(\n"
+"            \"from User where username = :username and password = :password"
+"\")\n"
+"            .setParameter(\"username\", Identity.instance().getUsername())\n"
+"            .setParameter(\"password\", Identity.instance().getPassword())\n"
+"            .getSingleResult();\n"
+"\n"
+"         if (user.getRoles() != null)\n"
+"         {\n"
+"            for (UserRole mr : user.getRoles())\n"
+"               Identity.instance().addRole(mr.getName());\n"
+"         }\n"
+"\n"
+"         return true;\n"
+"      }\n"
+"      catch (NoResultException ex)\n"
+"      {\n"
+"         FacesMessages.instance().add(\"Invalid username/password\");\n"
+"         return false;\n"
+"      }\n"
+"      \n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:112
+#, no-c-format
+msgid ""
+"In the above example, both <literal>User</literal> and <literal>UserRole</"
+"literal> are application-specific entity beans. The <literal>roles</literal> "
+"parameter is populated with the roles that the user is a member of, which "
+"should be added to the <literal>Set</literal> as literal string values, e.g. "
+"\"admin\", \"user\". In this case, if the user record is not found and a "
+"<literal>NoResultException</literal> thrown, the authentication method "
+"returns <literal>false</literal> to indicate the authentication failed."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:115
+#, no-c-format
+msgid "Writing a login form"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:116
+#, no-c-format
+msgid ""
+"The <literal>Identity</literal> component provides both <literal>username</"
+"literal> and <literal>password</literal> properties, catering for the most "
+"common authentication scenario. These properties can be bound directly to "
+"the username and password fields on a login form. Once these properties are "
+"set, calling the <literal>identity.login()</literal> method will "
+"authenticate the user using the provided credentials. Here's an example of a "
+"simple login form:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:119
+#, no-c-format
+msgid ""
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"name\" value=\"Username\"/&gt;\n"
+"    &lt;h:inputText id=\"name\" value=\"#{identity.username}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"password\" value=\"Password\"/&gt;\n"
+"    &lt;h:inputSecret id=\"password\" value=\"#{identity.password}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;div&gt;\n"
+"    &lt;h:commandButton value=\"Login\" action=\"#{identity.login}\"/&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:120
+#, no-c-format
+msgid ""
+"Similarly, logging out the user is done by calling <literal>#{identity."
+"logout}</literal>. Calling this action will clear the security state of the "
+"currently authenticated user."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:123
+#, no-c-format
+msgid "Simplified Configuration - Summary"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:124
+#, no-c-format
+msgid ""
+"So to sum up, there are the three easy steps to configure authentication:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:129
+#, no-c-format
+msgid ""
+"Configure an authentication method in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:134
+#, no-c-format
+msgid "Write an authentication method."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:139
+#, no-c-format
+msgid "Write a login form so that the user can authenticate."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:144
+#, no-c-format
+msgid "Handling Security Exceptions"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:145
+#, no-c-format
+msgid ""
+"To prevent users from receiving the default error page in response to a "
+"security error, it's recommended that <literal>pages.xml</literal> is "
+"configured to redirect security errors to a more \"pretty\" page. The two "
+"main types of exceptions thrown by the security API are:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:150
+#, no-c-format
+msgid ""
+"<literal>NotLoggedInException</literal> - This exception is thrown if the "
+"user attempts to access a restricted action or page when they are not logged "
+"in."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:155
+#, no-c-format
+msgid ""
+"<literal>AuthorizationException</literal> - This exception is only thrown if "
+"the user is already logged in, and they have attempted to access a "
+"restricted action or page for which they do not have the necessary "
+"privileges."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:160
+#, no-c-format
+msgid ""
+"In the case of a <literal>NotLoggedInException</literal>, it is recommended "
+"that the user is redirected to either a login or registration page so that "
+"they can log in. For an <literal>AuthorizationException</literal>, it may be "
+"useful to redirect the user to an error page. Here's an example of a "
+"<literal>pages.xml</literal> file that redirects both of these security "
+"exceptions:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:163
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"\n"
+"    ...\n"
+"    \n"
+"    &lt;exception class=\"org.jboss.seam.security.NotLoggedInException"
+"\"&gt;\n"
+"        &lt;redirect view-id=\"/login.xhtml\"&gt;\n"
+"            &lt;message&gt;You must be logged in to perform this action&lt;/"
+"message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"    \n"
+"    &lt;exception class=\"org.jboss.seam.security.AuthorizationException"
+"\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"        &lt;redirect view-id=\"/security_error.xhtml\"&gt;\n"
+"            &lt;message&gt;\n"
+"                You do not have the necessary security privileges to perform "
+"this action.\n"
+"            &lt;/message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"  \n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:164
+#, no-c-format
+msgid ""
+"Most web applications require even more sophisticated handling of login "
+"redirection, so Seam includes some special functionality for handling this "
+"problem."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:167
+#, no-c-format
+msgid "Login Redirection"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:168
+#, no-c-format
+msgid ""
+"You can ask Seam to redirect the user to a login screen when an "
+"unauthenticated user tries to access a particular view (or wildcarded view "
+"id) as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:171
+#, no-c-format
+msgid ""
+"&lt;pages login-view-id=\"/login.xhtml\"&gt;\n"
+"\n"
+"    &lt;page view-id=\"/members/*\" login-required=\"true\"/&gt;\n"
+"    \n"
+"    ...\n"
+"    \n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:172
+#, no-c-format
+msgid ""
+"(This is less of a blunt instrument than the exception handler shown above, "
+"but should probably be used in conjunction with it.)"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:175
+#, no-c-format
+msgid ""
+"After the user logs in, we want to automatically send them back where they "
+"came from, so they can retry the action that required logging in. If you add "
+"the following event listeners to <literal>components.xml</literal>, attempts "
+"to access a restricted view while not logged in will be remembered, so that "
+"upon the user successfully logging in they will be redirected to the "
+"originally requested view, with any page parameters that existed in the "
+"original request."
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:178
+#, no-c-format
+msgid ""
+"&lt;event type=\"org.jboss.seam.notLoggedIn\"&gt;\n"
+"    &lt;action expression=\"#{redirect.captureCurrentView}\"/&gt;\n"
+"&lt;/event&gt;\n"
+"    \n"
+"&lt;event type=\"org.jboss.seam.postAuthenticate\"&gt;\n"
+"    &lt;action expression=\"#{redirect.returnToCapturedView}\"/&gt;\n"
+"&lt;/event&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:179
+#, no-c-format
+msgid ""
+"Note that login redirection is implemented as a conversation-scoped "
+"mechanism, so don't end the conversation in your <literal>authenticate()</"
+"literal> method."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:182
+#, no-c-format
+msgid "Advanced Authentication Features"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:183
+#, no-c-format
+msgid ""
+"This section explores some of the advanced features provided by the security "
+"API for addressing more complex security requirements."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:186
+#, no-c-format
+msgid "Using your container's JAAS configuration"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:187
+#, no-c-format
+msgid ""
+"If you would rather not use the simplified JAAS configuration provided by "
+"the Seam Security API, you may instead delegate to the default system JAAS "
+"configuration by providing a <literal>jaasConfigName</literal> property in "
+"<literal>components.xml</literal>. For example, if you are using JBoss AS "
+"and wish to use the <literal>other</literal> policy (which uses the "
+"<literal>UsersRolesLoginModule</literal> login module provided by JBoss AS), "
+"then the entry in <literal>components.xml</literal> would look like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:190
+#, no-c-format
+msgid ""
+"&lt;security:identity authenticate-method=\"#{authenticator.authenticate}"
+"\" \n"
+"                      jaas-config-name=\"other\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:191
+#, no-c-format
+msgid "Authorization"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:192
+#, no-c-format
+msgid ""
+"There are a number of authorization features provided by the Seam Security "
+"API for securing access to components, component methods, and pages. This "
+"section describes each of these. An important thing to note is that if you "
+"wish to use any of the advanced features (such as rule-based permissions) "
+"then your <literal>components.xml</literal> must be configured to support "
+"this - see the Configuration section above."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:195
+#, no-c-format
+msgid "Core concepts"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:196
+#, no-c-format
+msgid ""
+"Each of the authorization mechanisms provided by the Seam Security API are "
+"built upon the concept of a user being granted roles and/or permissions. A "
+"role is a <emphasis>group</emphasis>, or <emphasis>type</emphasis>, of user "
+"that may have been granted certain privileges for performing one or more "
+"specific actions within an application. A permission on the other hand is a "
+"privilege (sometimes once-off) for performing a single, specific action. It "
+"is entirely possible to build an application using nothing but permissions, "
+"however roles offer a higher level of convenience when granting privileges "
+"to groups of users."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:199
+#, no-c-format
+msgid ""
+"Roles are simple, consisting of only a name such as \"admin\", \"user\", "
+"\"customer\", etc. Permissions consist of both a name and an action, and are "
+"represented within this documentation in the form <literal>name:action</"
+"literal>, for example <literal>customer:delete</literal>, or "
+"<literal>customer:insert</literal>."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:202
+#, no-c-format
+msgid "Securing components"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:203
+#, no-c-format
+msgid ""
+"Let's start by examining the simplest form of authorization, component "
+"security, starting with the <literal>@Restrict</literal> annotation."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:206
+#, no-c-format
+msgid "The @Restrict annotation"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:207
+#, no-c-format
+msgid ""
+"Seam components may be secured either at the method or the class level, "
+"using the <literal>@Restrict</literal> annotation. If both a method and it's "
+"declaring class are annotated with <literal>@Restrict</literal>, the method "
+"restriction will take precedence (and the class restriction will not apply). "
+"If a method invocation fails a security check, then an exception will be "
+"thrown as per the contract for <literal>Identity.checkRestriction()</"
+"literal> (see Inline Restrictions). A <literal>@Restrict</literal> on just "
+"the component class itself is equivalent to adding <literal>@Restrict</"
+"literal> to each of its methods."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:210
+#, no-c-format
+msgid ""
+"An empty <literal>@Restrict</literal> implies a permission check of "
+"<literal>componentName:methodName</literal>. Take for example the following "
+"component method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:213
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class AccountAction {\n"
+"    @Restrict public void delete() {\n"
+"      ...\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:214
+#, no-c-format
+msgid ""
+"In this example, the implied permission required to call the <literal>delete"
+"()</literal> method is <literal>account:delete</literal>. The equivalent of "
+"this would be to write <literal>@Restrict(\"#{s:hasPermission"
+"('account','delete',null)}\")</literal>. Now let's look at another example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:217
+#, no-c-format
+msgid ""
+"@Restrict @Name(\"account\")\n"
+"public class AccountAction {\n"
+"    public void insert() {\n"
+"      ...\n"
+"    }\n"
+"    @Restrict(\"#{s:hasRole('admin')}\") \n"
+"    public void delete() {\n"
+"      ...\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:218
+#, no-c-format
+msgid ""
+"This time, the component class itself is annotated with <literal>@Restrict</"
+"literal>. This means that any methods without an overriding "
+"<literal>@Restrict</literal> annotation require an implicit permission "
+"check. In the case of this example, the <literal>insert()</literal> method "
+"requires a permission of <literal>account:insert</literal>, while the "
+"<literal>delete()</literal> method requires that the user is a member of the "
+"<literal>admin</literal> role."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:221
+#, no-c-format
+msgid ""
+"Before we go any further, let's address the <literal>#{s:hasRole()}</"
+"literal> expression seen in the above example. Both <literal>s:hasRole</"
+"literal> and <literal>s:hasPermission</literal> are EL functions, which "
+"delegate to the correspondingly named methods of the <literal>Identity</"
+"literal> class. These functions can be used within any EL expression "
+"throughout the entirety of the security API."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:224
+#, no-c-format
+msgid ""
+"Being an EL expression, the value of the <literal>@Restrict</literal> "
+"annotation may reference any objects that exist within a Seam context. This "
+"is extremely useful when performing permission checks for a specific object "
+"instance. Look at this example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:227
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class AccountAction {\n"
+"    @In Account selectedAccount;\n"
+"    @Restrict(\"#{s:hasPermission('account','modify',selectedAccount)}\")\n"
+"    public void modify() {\n"
+"        selectedAccount.modify();\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:228
+#, no-c-format
+msgid ""
+"The interesting thing to note from this example is the reference to "
+"<literal>selectedAccount</literal> seen within the <literal>hasPermission()</"
+"literal> function call. The value of this variable will be looked up from "
+"within the Seam context, and passed to the <literal>hasPermission()</"
+"literal> method in <literal>Identity</literal>, which in this case can then "
+"determine if the user has the required permission for modifying the "
+"specified <literal>Account</literal> object."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:231
+#, no-c-format
+msgid "Inline restrictions"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:232
+#, no-c-format
+msgid ""
+"Sometimes it might be desirable to perform a security check in code, without "
+"using the <literal>@Restrict</literal> annotation. In this situation, simply "
+"use <literal>Identity.checkRestriction()</literal> to evaluate a security "
+"expression, like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:235
+#, no-c-format
+msgid ""
+"public void deleteCustomer() {\n"
+"    Identity.instance().checkRestriction(\"#{s:hasPermission"
+"('customer','delete',\n"
+"        selectedCustomer)}\");\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:236
+#, no-c-format
+msgid ""
+"If the expression specified doesn't evaluate to <literal>true</literal>, "
+"either"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:241
+#, no-c-format
+msgid ""
+"if the user is not logged in, a <literal>NotLoggedInException</literal> "
+"exception is thrown or"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:246
+#, no-c-format
+msgid ""
+"if the user is logged in, an <literal>AuthorizationException</literal> "
+"exception is thrown."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:251
+#, no-c-format
+msgid ""
+"It is also possible to call the <literal>hasRole()</literal> and "
+"<literal>hasPermission()</literal> methods directly from Java code:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:254
+#, no-c-format
+msgid ""
+"if (!Identity.instance().hasRole(\"admin\"))\n"
+"     throw new AuthorizationException(\"Must be admin to perform this action"
+"\");\n"
+"\n"
+"if (!Identity.instance().hasPermission(\"customer\", \"create\", null))\n"
+"     throw new AuthorizationException(\"You may not create new customers\");"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:255
+#, no-c-format
+msgid "Security in the user interface"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:256
+#, no-c-format
+msgid ""
+"One indication of a well designed user interface is that the user is not "
+"presented with options for which they don't have the necessary privileges to "
+"use. Seam Security allows conditional rendering of either 1) sections of a "
+"page or 2) individual controls, based upon the privileges of the user, using "
+"the very same EL expressions that are used for component security."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:259
+#, no-c-format
+msgid ""
+"Let's take a look at some examples of interface security. First of all, "
+"let's pretend that we have a login form that should only be rendered if the "
+"user is not already logged in. Using the <literal>identity.isLoggedIn()</"
+"literal> property, we can write this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:262
+#, no-c-format
+msgid ""
+"&lt;h:form class=\"loginForm\" rendered=\"#{not identity.loggedIn}\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:263
+#, no-c-format
+msgid ""
+"If the user isn't logged in, then the login form will be rendered - very "
+"straight forward so far. Now let's pretend there is a menu on the page that "
+"contains some actions which should only be accessible to users in the "
+"<literal>manager</literal> role. Here's one way that these could be written:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:266
+#, no-c-format
+msgid ""
+"&lt;h:outputLink action=\"#{reports.listManagerReports}\" rendered=\"#{s:"
+"hasRole('manager')}\"&gt;\n"
+"    Manager Reports\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:267
+#, no-c-format
+msgid ""
+"This is also quite straight forward. If the user is not a member of the "
+"<literal>manager</literal> role, then the outputLink will not be rendered. "
+"The <literal>rendered</literal> attribute can generally be used on the "
+"control itself, or on a surrounding <literal>&lt;s:div&gt;</literal> or "
+"<literal>&lt;s:span&gt;</literal> control."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:270
+#, no-c-format
+msgid ""
+"Now for something more complex. Let's say you have a <literal>h:dataTable</"
+"literal> control on a page listing records for which you may or may not wish "
+"to render action links depending on the user's privileges. The <literal>s:"
+"hasPermission</literal> EL function allows us to pass in an object parameter "
+"which can be used to determine whether the user has the requested permission "
+"for that object or not. Here's how a dataTable with secured links might look:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:273
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{clients}\" var=\"cl\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Name&lt;/f:facet&gt;\n"
+"        #{cl.name}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;City&lt;/f:facet&gt;\n"
+"        #{cl.city}\n"
+"    &lt;/h:column&gt;   \n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"        &lt;s:link value=\"Modify Client\" action=\"#{clientAction.modify}"
+"\"\n"
+"                rendered=\"#{s:hasPermission('client','modify',cl)\"/&gt;\n"
+"        &lt;s:link value=\"Delete Client\" action=\"#{clientAction.delete}"
+"\"\n"
+"                rendered=\"#{s:hasPermission('client','delete',cl)\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:274
+#, no-c-format
+msgid "Securing pages"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:275
+#, no-c-format
+msgid ""
+"Page security requires that the application is using a <literal>pages.xml</"
+"literal> file, however is extremely simple to configure. Simply include a "
+"<literal>&lt;restrict/&gt;</literal> element within the <literal>page</"
+"literal> elements that you wish to secure. By default, if a value is not "
+"provided for the <literal>restrict</literal> element, an implied permission "
+"of <literal>{viewId}:render</literal> will be checked for whenever accessing "
+"that page. Otherwise the value will be evaluated as a standard security "
+"expression. Here's a couple of examples:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:278
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/settings.xhtml\"&gt;\n"
+"    &lt;restrict/&gt;\n"
+"&lt;/page&gt;\n"
+"        \n"
+"&lt;page view-id=\"/reports.xhtml\"&gt;    \n"
+"    &lt;restrict&gt;#{s:hasRole('admin')}&lt;/restrict&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:279
+#, no-c-format
+msgid ""
+"In the above example, the first page has an implied permission restriction "
+"of <literal>/settings.xhtml:render</literal>, while the second one checks "
+"that the user is a member of the <literal>admin</literal> role."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:282
+#, no-c-format
+msgid "Securing Entities"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:283
+#, no-c-format
+msgid ""
+"Seam security also makes it possible to apply security restrictions to read, "
+"insert, update and delete actions for entities."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:286
+#, no-c-format
+msgid ""
+"To secure all actions for an entity class, add a <literal>@Restrict</"
+"literal> annotation on the class itself:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:289
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"customer\")\n"
+"@Restrict\n"
+"public class Customer {\n"
+"  ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:290
+#, no-c-format
+msgid ""
+"If no expression is specified in the <literal>@Restrict</literal> "
+"annotation, the default security check that is performed is a permission "
+"check of <literal>entityName:action</literal>, where <literal>entityName</"
+"literal> is the name of the entity (or the class name if no @Name is "
+"specified), and the <literal>action</literal> is either <literal>read</"
+"literal>, <literal>insert</literal>, <literal>update</literal> or "
+"<literal>delete</literal>."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:293
+#, no-c-format
+msgid ""
+"It is also possible to only restrict certain actions, by placing a "
+"<literal>@Restrict</literal> annotation on the relevent entity lifecycle "
+"method (annotated as follows):"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:298
+#, no-c-format
+msgid ""
+"<literal>@PostLoad</literal> - Called after an entity instance is loaded "
+"from the database. Use this method to configure a <literal>read</literal> "
+"permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:303
+#, no-c-format
+msgid ""
+"<literal>@PrePersist</literal> - Called before a new instance of the entity "
+"is inserted. Use this method to configure an <literal>insert</literal> "
+"permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:308
+#, no-c-format
+msgid ""
+"<literal>@PreUpdate</literal> - Called before an entity is updated. Use this "
+"method to configure an <literal>update</literal> permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:313
+#, no-c-format
+msgid ""
+"<literal>@PreRemove</literal> - Called before an entity is deleted. Use this "
+"method to configure a <literal>delete</literal> permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:318
+#, no-c-format
+msgid ""
+"Here's an example of how an entity would be configured to perform a security "
+"check for any <literal>insert</literal> operations. Please note that the "
+"method is not required to do anything, the only important thing in regard to "
+"security is how it is annotated:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:321
+#, no-c-format
+msgid ""
+"@PrePersist @Restrict\n"
+"  public void prePersist() {}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:322
+#, no-c-format
+msgid ""
+"And here's an example of an entity permission rule that checks if the "
+"authenticated user is allowed to create a new blog entry (from the seamspace "
+"example):"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:325
+#, no-c-format
+msgid ""
+"rule InsertMemberBlog\n"
+"  no-loop\n"
+"  activation-group \"permissions\"\n"
+"when\n"
+"  c: PermissionCheck(name == \"memberBlog\", action == \"insert\", granted "
+"== false)\n"
+"  Principal(nm : name)\n"
+"  MemberBlog(mbr : member -&gt; (mbr.getUsername().equals(nm)))\n"
+"then\n"
+"  c.grant();\n"
+"  modify(c);\n"
+"end;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:326
+#, no-c-format
+msgid ""
+"Finally, we need to install a listener class that integrates Seam security "
+"with your JPA provider."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:329
+#, no-c-format
+msgid "Entity security with JPA"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:330
+#, no-c-format
+msgid ""
+"Security checks for EJB3 entity beans are performed with an "
+"<literal>EntityListener</literal>. You can install this listener by using "
+"the following <literal>META-INF/orm.xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:333
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;entity-mappings xmlns=\"http://java.sun.com/xml/ns/persistence/orm\"\n"
+"                 xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"                 xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence/"
+"orm \n"
+"                 http://java.sun.com/xml/ns/persistence/orm_1_0.xsd\"\n"
+"                 version=\"1.0\"&gt;\n"
+"                 \n"
+"    &lt;persistence-unit-metadata&gt;\n"
+"        &lt;persistence-unit-defaults&gt;\n"
+"            &lt;entity-listeners&gt;\n"
+"                &lt;entity-listener class=\"org.jboss.seam.security."
+"EntitySecurityListener\"/&gt;\n"
+"            &lt;/entity-listeners&gt;\n"
+"        &lt;/persistence-unit-defaults&gt;\n"
+"    &lt;/persistence-unit-metadata&gt;\n"
+"    \n"
+"&lt;/entity-mappings&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:334
+#, no-c-format
+msgid "Entity security with Hibernate"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:335
+#, no-c-format
+msgid ""
+"If you are using a Hibernate <literal>SessionFactory</literal> configured "
+"via Seam, you don't need to do anything special to use entity security."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:338
+#, no-c-format
+msgid "Writing Security Rules"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:339
+#, no-c-format
+msgid ""
+"Up to this point there has been a lot of mention of permissions, but no "
+"information about how permissions are actually defined or granted. This "
+"section completes the picture, by explaining how permission checks are "
+"processed, and how to implement permission checks for a Seam application."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:342
+#, no-c-format
+msgid "Permissions Overview"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:343
+#, no-c-format
+msgid ""
+"So how does the security API know whether a user has the <literal>customer:"
+"modify</literal> permission for a specific customer? Seam Security provides "
+"quite a novel method for determining user permissions, based on JBoss Rules. "
+"A couple of the advantages of using a rule engine are 1) a centralized "
+"location for the business logic that is behind each user permission, and 2) "
+"speed - JBoss Rules uses very efficient algorithms for evaluating large "
+"numbers of complex rules involving multiple conditions."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:346
+#, no-c-format
+msgid "Configuring a rules file"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:347
+#, no-c-format
+msgid ""
+"Seam Security expects to find a <literal>RuleBase</literal> component called "
+"<literal>securityRules</literal> which it uses to evaluate permission "
+"checks. This is configured in <literal>components.xml</literal> as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:350
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:security=\"http://jboss.com/products/seam/security\"\n"
+"            xmlns:drools=\"http://jboss.com/products/seam/drools\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                     http://jboss.com/products/seam/core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components  \n"
+"                     http://jboss.com/products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/drools \n"
+"                     http://jboss.com/products/seam/drools-1.2.xsd\"\n"
+"                 http://jboss.com/products/seam/security \n"
+"                     http://jboss.com/products/seam/security-1.2.xsd"
+"\"&gt;                 \n"
+"        \n"
+"   &lt;drools:rule-base name=\"securityRules\"&gt;\n"
+"       &lt;drools:rule-files&gt;\n"
+"           &lt;value&gt;/META-INF/security.drl&lt;/value&gt;\n"
+"       &lt;/drools:rule-files&gt;\n"
+"   &lt;/drools:rule-base&gt;    \n"
+"   \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:351
+#, no-c-format
+msgid ""
+"Once the <literal>RuleBase</literal> component is configured, it's time to "
+"write the security rules."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:354
+#, no-c-format
+msgid "Creating a security rules file"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:355
+#, no-c-format
+msgid ""
+"For this step you need to create a file called <literal>security.drl</"
+"literal> in the <literal>/META-INF</literal> directory of your application's "
+"jar file. In actual fact this file can be called anything you want, and "
+"exist in any location as long as it is configured appropriately in "
+"<literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:358
+#, no-c-format
+msgid ""
+"So what should the security rules file contain? At this stage it might be a "
+"good idea to at least skim through the JBoss Rules documentation, however to "
+"get started here's an extremely simple example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:361
+#, no-c-format
+msgid ""
+"package MyApplicationPermissions;\n"
+"\n"
+"import org.jboss.seam.security.PermissionCheck;\n"
+"import org.jboss.seam.security.Role;\n"
+"\n"
+"rule CanUserDeleteCustomers\n"
+"when\n"
+"  c: PermissionCheck(name == \"customer\", action == \"delete\")\n"
+"  Role(name == \"admin\")\n"
+"then\n"
+"  c.grant();\n"
+"end;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:362
+#, no-c-format
+msgid ""
+"Let's break this down. The first thing we see is the package declaration. A "
+"package in JBoss Rules is essentially a collection of rules. The package "
+"name can be anything you want - it doesn't relate to anything else outside "
+"the scope of the rule base."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:365
+#, no-c-format
+msgid ""
+"The next thing we can notice is a couple of import statements for the "
+"<literal>PermissionCheck</literal> and <literal>Role</literal> classes. "
+"These imports inform the rules engine that we'll be referencing these "
+"classes within our rules."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:368
+#, no-c-format
+msgid ""
+"Finally we have the code for the rule. Each rule within a package should be "
+"given a unique name (usually describing the purpose of the rule). In this "
+"case our rule is called <literal>CanUserDeleteCustomers</literal> and will "
+"be used to check whether a user is allowed to delete a customer record."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:371
+#, no-c-format
+msgid ""
+"Looking at the body of the rule definition we can notice two distinct "
+"sections. Rules have what is known as a left hand side (LHS) and a right "
+"hand side (RHS). The LHS consists of the conditional part of the rule, i.e. "
+"a list of conditions which must be satisfied for the rule to fire. The LHS "
+"is represented by the <literal>when</literal> section. The RHS is the "
+"consequence, or action section of the rule that will only be fired if all of "
+"the conditions in the LHS are met. The RHS is represented by the "
+"<literal>then</literal> section. The end of the rule is denoted by the "
+"<literal>end;</literal> line."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:374
+#, no-c-format
+msgid ""
+"If we look at the LHS of the rule, we see two conditions listed there. Let's "
+"examine the first condition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:377
+#, no-c-format
+msgid "c: PermissionCheck(name == \"customer\", action == \"delete\")"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:378
+#, no-c-format
+msgid ""
+"In plain english, this condition is stating that there must exist a "
+"<literal>PermissionCheck</literal> object with a <literal>name</literal> "
+"property equal to \"customer\", and an <literal>action</literal> property "
+"equal to \"delete\" within the working memory. What is the working memory? "
+"It is a session-scoped object that contains the contextual information that "
+"is required by the rules engine to make a decision about a permission check. "
+"Each time the <literal>hasPermission()</literal> method is called, a "
+"temporary <literal>PermissionCheck</literal> object, or <emphasis>Fact</"
+"emphasis>, is asserted into the working memory. This "
+"<literal>PermissionCheck</literal> corresponds exactly to the permission "
+"that is being checked, so for example if you call <literal>hasPermission"
+"(\"account\", \"create\", null)</literal> then a <literal>PermissionCheck</"
+"literal> object with a <literal>name</literal> equal to \"account\" and "
+"<literal>action</literal> equal to \"create\" will be asserted into the "
+"working memory for the duration of the permission check."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:381
+#, no-c-format
+msgid ""
+"So what else is in the working memory? Besides the short-lived temporary "
+"facts asserted during a permission check, there are some longer-lived "
+"objects in the working memory that stay there for the entire duration of a "
+"user being authenticated. These include any <literal>java.security."
+"Principal</literal> objects that are created as part of the authentication "
+"process, plus a <literal>org.jboss.seam.security.Role</literal> object for "
+"each of the roles that the user is a member of. It is also possible to "
+"assert additional long-lived facts into the working memory by calling "
+"<literal>Identity.instance().getSecurityContext().assertObject()</literal>, "
+"passing the object as a parameter."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:384
+#, no-c-format
+msgid ""
+"Getting back to our simple example, we can also notice that the first line "
+"of our LHS is prefixed with <literal>c:</literal>. This is a variable "
+"binding, and is used to refer back to the object that is matched by the "
+"condition. Moving onto the second line of our LHS, we see this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:387
+#, no-c-format
+msgid "Role(name == \"admin\")"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:388
+#, no-c-format
+msgid ""
+"This condition simply states that there must be a <literal>Role</literal> "
+"object with a <literal>name</literal> of \"admin\" within the working "
+"memory. As mentioned, user roles are asserted into the working memory as "
+"long-lived facts. So, putting both conditions together, this rule is "
+"essentially saying \"I will fire if you are checking for the "
+"<literal>customer:delete</literal> permission and the user is a member of "
+"the <literal>admin</literal> role\"."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:391
+#, no-c-format
+msgid ""
+"So what is the consequence of the rule firing? Let's take a look at the RHS "
+"of the rule:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:394
+#, no-c-format
+msgid "c.grant()"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:395
+#, no-c-format
+msgid ""
+"The RHS consists of Java code, and in this case is invoking the "
+"<literal>grant()</literal> method of the <literal>c</literal> object, which "
+"as already mentioned is a variable binding for the <literal>PermissionCheck</"
+"literal> object. Besides the <literal>name</literal> and <literal>action</"
+"literal> properties of the <literal>PermissionCheck</literal> object, there "
+"is also a <literal>granted</literal> property which is initially set to "
+"<literal>false</literal>. Calling <literal>grant()</literal> on a "
+"<literal>PermissionCheck</literal> sets the <literal>granted</literal> "
+"property to <literal>true</literal>, which means that the permission check "
+"was successful, allowing the user to carry out whatever action the "
+"permission check was intended for."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:398
+#, no-c-format
+msgid "SSL Security"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:399
+#, no-c-format
+msgid ""
+"Seam includes basic support for serving sensitive pages via the HTTPS "
+"protocol. This is easily configured by specifying a <literal>scheme</"
+"literal> for the page in <literal>pages.xml</literal>. The following example "
+"shows how the view <literal>/login.xhtml</literal> is configured to use "
+"HTTPS:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:402
+#, no-c-format
+msgid "&lt;page view-id=\"/login.xhtml\" scheme=\"https\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:403
+#, no-c-format
+msgid ""
+"This configuration is automatically extended to both <literal>s:link</"
+"literal> and <literal>s:button</literal> JSF controls, which (when "
+"specifying the <literal>view</literal>) will also render the link using the "
+"correct protocol. Based on the previous example, the following link will use "
+"the HTTPS protocol because <literal>/login.xhtml</literal> is configured to "
+"use it:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:406
+#, no-c-format
+msgid "&lt;s:link view=\"/login.xhtml\" value=\"Login\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:407
+#, no-c-format
+msgid ""
+"Browsing directly to a view when using the <emphasis>incorrect</emphasis> "
+"protocol will cause a redirect to the same view using the <emphasis>correct</"
+"emphasis> protocol. For example, browsing to a page that has <literal>scheme="
+"\"https\"</literal> using HTTP will cause a redirect to the same page using "
+"HTTPS."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:410
+#, no-c-format
+msgid ""
+"It is also possible to configure a default <literal>scheme</literal> for all "
+"pages. This is actually quite important, as you might only wish to use HTTPS "
+"for a few pages, and if no default scheme is specified then the default "
+"behavior is to continue using the current scheme. What this means is that "
+"once you enter a page with HTTPS, then HTTPS will continue to be used even "
+"if you navigate away to other non-HTTPS pages (a bad thing!). So it is "
+"strongly recommended to include a default <literal>scheme</literal>, by "
+"configuring it on the default (<literal>\"*\"</literal>) view:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:413
+#, no-c-format
+msgid "&lt;page view-id=\"*\" scheme=\"http\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:414
+#, no-c-format
+msgid ""
+"Of course, if <emphasis>none</emphasis> of the pages in your application use "
+"HTTPS then it is not required to specify a default scheme."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:417
+#, no-c-format
+msgid "Implementing a Captcha Test"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:418
+#, no-c-format
+msgid ""
+"Though strictly not part of the security API, it might be useful in certain "
+"circumstances (such as new user registrations, posting to a public blog or "
+"forum) to implement a Captcha (<emphasis>C</emphasis>ompletely <emphasis>A</"
+"emphasis>utomated <emphasis>P</emphasis>ublic <emphasis>T</emphasis>uring "
+"test to tell <emphasis>C</emphasis>omputers and <emphasis>H</emphasis>umans "
+"<emphasis>A</emphasis>part) to prevent automated bots from interacting with "
+"your application. Seam provides seamless integration with JCaptcha, an "
+"excellent library for generating Captcha challenges. If you wish to use the "
+"captcha feature in your application you need to include the jcaptcha-* jar "
+"file from the Seam lib directory in your project, and register it in "
+"<literal>application.xml</literal> as a java module."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:421
+#, no-c-format
+msgid "Configuring the Captcha Servlet"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:422
+#, no-c-format
+msgid ""
+"To get up and running, it is necessary to configure the Seam Resource "
+"Servlet, which will provide the Captcha challenge images to your pages. This "
+"requires the following entry in <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:425
+#, no-c-format
+msgid ""
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"    \n"
+"&lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:426
+#, no-c-format
+msgid "Adding a Captcha to a page"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:427
+#, no-c-format
+msgid ""
+"Adding a captcha challenge to a page is extremely easy. Seam provides a page-"
+"scoped component, <literal>captcha</literal>, which provides everything that "
+"is required, including built-in captcha validation. Here's an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:430
+#, no-c-format
+msgid ""
+"&lt;div&gt;\n"
+"    &lt;h:graphicImage value=\"/seam/resource/captcha?#{captcha.id}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"  \n"
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"verifyCaptcha\"&gt;Enter the above letters&lt;/h:"
+"outputLabel&gt;\n"
+"    &lt;h:inputText id=\"verifyCaptcha\" value=\"#{captcha.response}\" "
+"required=\"true\"/&gt;\n"
+"    &lt;div class=\"validationError\"&gt;&lt;h:message for=\"verifyCaptcha\"/"
+"&gt;&lt;/div&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:431
+#, no-c-format
+msgid ""
+"That's all there is to it. The <literal>graphicImage</literal> control "
+"displays the Captcha challenge, and the <literal>inputText</literal> "
+"receives the user's response. The response is automatically validated "
+"against the Captcha when the form is submitted."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Spring.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Spring.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Spring.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,416 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Spring.xml:10
+#, no-c-format
+msgid "Spring Framework integration"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:11
+#, no-c-format
+msgid ""
+"The Spring integration module allows easy migration of Spring-based projects "
+"to Seam and allows Spring applications to take advantage of key Seam "
+"features like conversations and Seam's more sophisticated persistence "
+"context management."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:14
+#, no-c-format
+msgid "Seam's support for Spring provides the ability to:"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:19
+#, no-c-format
+msgid "inject Seam component instances into Spring beans"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:24
+#, no-c-format
+msgid "inject Spring beans into Seam components"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:29
+#, no-c-format
+msgid "turn Spring beans into Seam components"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:34
+#, no-c-format
+msgid "allow Spring beans to live in any Seam context"
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:40
+#, no-c-format
+msgid "Injecting Seam components into Spring beans"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:41
+#, no-c-format
+msgid ""
+"Injecting Seam component instances into Spring beans is accomplished using "
+"the <literal>&lt;seam:instance/&gt;</literal> namespace handler. To enable "
+"the Seam namespace handler, the Seam namespace must be added to the Spring "
+"beans definition file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:44
+#, no-c-format
+msgid ""
+"&lt;beans xmlns=\"http://www.springframework.org/schema/beans\"\n"
+"    xmlns:seam=\"http://jboss.com/products/seam/spring\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://www.springframework.org/schema/beans \n"
+"                        http://www.springframework.org/schema/beans/spring-"
+"beans-2.0.xsd\n"
+"                        http://jboss.com/products/seam/spring \n"
+"                        http://jboss.com/products/seam/spring-1.2.xsd\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:45
+#, no-c-format
+msgid "Now any Seam component may be injected into any Spring bean:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:48
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\"&gt;\n"
+"        &lt;seam:instance name=\"someComponent\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:49
+#, no-c-format
+msgid "An EL expression may be used instead of a component name:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:52
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\"&gt;\n"
+"        &lt;seam:instance name=\"#{someExpression}\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:53
+#, no-c-format
+msgid ""
+"Seam component instances may even be made available for injection into "
+"Spring beans by a Spring bean id."
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:56
+#, no-c-format
+msgid ""
+"&lt;seam:instance name=\"someComponent\" id=\"someSeamComponentInstance\"/"
+"&gt;\n"
+"\n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\" ref=\"someSeamComponentInstance"
+"\"&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:57
+#, no-c-format
+msgid "Now for the caveat!"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:60
+#, no-c-format
+msgid ""
+"Seam was designed from the ground up to support a stateful component model "
+"with multiple contexts. Spring was not. Unlike Seam bijection, Spring "
+"injection does not occur at method invocation time. Instead, injection "
+"happens only when the Spring bean is instantiated. So the instance available "
+"when the bean is instantiated will be the same instance that the bean uses "
+"for the entire life of the bean. For example, if a Seam "
+"<literal>CONVERSATION</literal>-scoped component instance is directly "
+"injected into a singleton Spring bean, that singleton will hold a reference "
+"to the same instance long after the conversation is over! We call this "
+"problem <emphasis>scope impedance</emphasis>. Seam bijection ensures that "
+"scope impedance is maintained naturally as an invocation flows through the "
+"system. In Spring, we need to inject a proxy of the Seam component, and "
+"resolve the reference when the proxy is invoked."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:63
+#, no-c-format
+msgid ""
+"The <literal>&lt;seam:instance/&gt;</literal> tag lets us automatically "
+"proxy the Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:66
+#, no-c-format
+msgid ""
+"&lt;seam:instance id=\"seamManagedEM\" name=\"someManagedEMComponent\" proxy="
+"\"true\"/&gt;\n"
+"        \n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\"&gt;\n"
+"    &lt;property name=\"entityManager\" ref=\"seamManagedEM\"&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:67
+#, no-c-format
+msgid ""
+"This example shows one way to use a Seam-managed persistence context from a "
+"Spring bean. (A more robust way to use Seam-managed persistence contexts as "
+"a replacement for the Spring <literal>OpenEntityManagerInView</literal> "
+"filter will be provided in a future release)"
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:73
+#, no-c-format
+msgid "Injecting Spring beans into Seam components"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:74
+#, no-c-format
+msgid ""
+"It is even easier to inject Spring beans into Seam component instances. "
+"Actually, there are two possible approaches:"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:79
+#, no-c-format
+msgid "inject a Spring bean using an EL expression"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:84
+#, no-c-format
+msgid "make the Spring bean a Seam component"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:89
+#, no-c-format
+msgid ""
+"We'll discuss the second option in the next section. The easiest approach is "
+"to access the Spring beans via EL."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:92
+#, no-c-format
+msgid ""
+"The Spring <literal>DelegatingVariableResolver</literal> is an integration "
+"point Spring provides for integrating Spring with JSF. This "
+"<literal>VariableResolver</literal> makes all Spring beans available in EL "
+"by their bean id. You'll need to add the "
+"<literal>DelegatingVariableResolver</literal> to <literal>faces-config.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:95
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;variable-resolver&gt;\n"
+"        org.springframework.web.jsf.DelegatingVariableResolver\n"
+"    &lt;/variable-resolver&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:96
+#, no-c-format
+msgid "Then you can inject Spring beans using <literal>@In</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:99
+#, no-c-format
+msgid ""
+"@In(\"#{bookingService}\")\n"
+"private BookingService bookingService;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:100
+#, no-c-format
+msgid ""
+"The use of Spring beans in EL is not limited to injection. Spring beans may "
+"be used anywhere that EL expressions are used in Seam: process and pageflow "
+"definitions, working memory assertions, etc..."
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:106
+#, no-c-format
+msgid "Making a Spring bean into a Seam component"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:107
+#, no-c-format
+msgid ""
+"The <literal>&lt;seam:component/&gt;</literal> namespace handler can be used "
+"to make any Spring bean a Seam component. Just place the <literal>&lt;seam:"
+"component/&gt;</literal> tag within the declaration of the bean that you "
+"wish to be a Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:110
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;seam:component/&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:111
+#, no-c-format
+msgid ""
+"By default, <literal>&lt;seam:component/&gt;</literal> will create a "
+"<literal>STATELESS</literal> Seam component with class and name provided in "
+"the bean definition. Occasionally, such as when a <literal>FactoryBean</"
+"literal> is used, the class of the Spring bean may not be the class "
+"appearing in the bean definition. In such cases the <literal>beanClass</"
+"literal> should be explicitly specified. A Seam component name may be "
+"explicitly specified in cases where there is potential for a naming conflict."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:114
+#, no-c-format
+msgid ""
+"The <literal>scope</literal> attribute of <literal>&lt;seam:component/&gt;</"
+"literal> may be used if you wish the Spring bean to be managed in a "
+"particular Seam scope. The Spring bean must be scoped to <literal>prototype</"
+"literal> if the Seam scope specified is anything other than "
+"<literal>STATELESS</literal>. Pre-existing Spring beans usually have a "
+"fundamentally stateless character, so this attribute is not usually needed."
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:120
+#, no-c-format
+msgid "Seam-scoped Spring beans"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:121
+#, no-c-format
+msgid ""
+"The Seam integration package also lets you use Seam's contexts as Spring 2.0 "
+"style custom scopes. This lets you declare any Spring bean in any of Seam's "
+"contexts. However, note once again that Spring's component model was never "
+"architected to support statefulness, so please use this feature with great "
+"care. In particular, clustering of session or conversation scoped Spring "
+"beans is deeply problematic, and care must be taken when injecting a bean or "
+"component from a wider scope into a bean of a narrower scope."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:124
+#, no-c-format
+msgid ""
+"By specifying <literal>&lt;seam:configure-scopes/&gt;</literal> once in a "
+"Spring bean factory configuration, all of the Seam scopes will be available "
+"to Spring beans as custom scopes. To associate a Spring bean with a "
+"particular Seam scope, specify the Seam scope in the <literal>scope</"
+"literal> attribute of the bean definition."
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:127
+#, no-c-format
+msgid ""
+"&lt;!-- Only needs to be specified once per bean factory--&gt;\n"
+"&lt;seam:configure-scopes/&gt;\n"
+"\n"
+"...\n"
+"\n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope=\"seam."
+"CONVERSATION\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:128
+#, no-c-format
+msgid ""
+"The prefix of the scope name may be changed by specifying the "
+"<literal>prefix</literal> attribute in the <literal>configure-scopes</"
+"literal> definition. (The default prefix is <literal>seam.</literal>)"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:131
+#, no-c-format
+msgid ""
+"Seam-scoped Spring beans defined this way can be injected into other Spring "
+"beans without the use of <literal>&lt;seam:instance/&gt;</literal>. However, "
+"care must be taken to ensure scope impedance is maintained. The normal "
+"approach used in Spring is to specify <literal>&lt;aop:scoped-proxy/&gt;</"
+"literal> in the bean definition. However, Seam-scoped Spring beans are "
+"<emphasis>not</emphasis> compatible with <literal>&lt;aop:scoped-proxy/&gt;</"
+"literal>. So if you need to inject a Seam-scoped Spring bean into a "
+"singleton, <literal>&lt;seam:instance/&gt;</literal> must be used:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:134
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope=\"seam."
+"CONVERSATION\"/&gt;\n"
+"\n"
+"...\n"
+"\n"
+"&lt;bean id=\"someSingleton\"&gt;\n"
+"    &lt;property name=\"someSeamScopedSpringBean\"&gt;\n"
+"        &lt;seam:instance name=\"someSpringBean\" proxy=\"true\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Testing.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Testing.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Testing.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,342 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Testing.xml:10
+#, no-c-format
+msgid "Testing Seam applications"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:11
+#, no-c-format
+msgid ""
+"Most Seam applications will need at least two kinds of automated tests: "
+"<emphasis>unit tests</emphasis>, which test a particular Seam component in "
+"isolation, and scripted <emphasis>integration tests</emphasis> which "
+"exercise all Java layers of the application (that is, everything except the "
+"view pages)."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:14
+#, no-c-format
+msgid "Both kinds of tests are very easy to write."
+msgstr ""
+
+#. Tag: title
+#: Testing.xml:18
+#, no-c-format
+msgid "Unit testing Seam components"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:19
+#, no-c-format
+msgid ""
+"All Seam components are POJOs. This is a great place to start if you want "
+"easy unit testing. And since Seam emphasises the use of bijection for inter-"
+"component interactions and access to contextual objects, it's very easy to "
+"test a Seam component outside of its normal runtime environment."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:22
+#, no-c-format
+msgid "Consider the following Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:25
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Scope(EVENT)\n"
+"@Name(\"register\")\n"
+"public class RegisterAction implements Register\n"
+"{\n"
+"   private User user;\n"
+"   private EntityManager em;\n"
+"\n"
+"   @In\n"
+"   public void setUser(User user) {\n"
+"       this.user = user;\n"
+"   }\n"
+"   \n"
+"   @PersistenceContext\n"
+"   public void setBookingDatabase(EntityManager em) {\n"
+"       this.em = em;\n"
+"   }\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = em.createQuery(\"select username from User where "
+"username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getResultList();\n"
+"      if (existing.size()==0)\n"
+"      {\n"
+"         em.persist(user);\n"
+"         return \"success\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:26
+#, no-c-format
+msgid "We could write a TestNG test for this component as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:29
+#, no-c-format
+msgid ""
+"public class RegisterActionTest\n"
+"{\n"
+"\n"
+"    @Test\n"
+"    public testRegisterAction()\n"
+"    {\n"
+"        EntityManager em = getEntityManagerFactory().createEntityManager();\n"
+"        em.getTransaction().begin();\n"
+"        \n"
+"        User gavin = new User();\n"
+"        gavin.setName(\"Gavin King\");\n"
+"        gavin.setUserName(\"1ovthafew\");\n"
+"        gavin.setPassword(\"secret\");\n"
+"        \n"
+"        RegisterAction action = new RegisterAction();\n"
+"        action.setUser(gavin);\n"
+"        action.setBookingDatabase(em);\n"
+"        \n"
+"        assert \"success\".equals( action.register() );\n"
+"        \n"
+"        em.getTransaction().commit();\n"
+"        em.close();\n"
+"    }\n"
+"    \n"
+"    \n"
+"    private EntityManagerFactory emf;\n"
+"    \n"
+"    public EntityManagerFactory getEntityManagerFactory()\n"
+"    {\n"
+"        return emf;\n"
+"    }\n"
+"    \n"
+"    @Configuration(beforeTestClass=true)\n"
+"    public void init() \n"
+"    {\n"
+"        emf = Persistence.createEntityManagerFactory"
+"(\"myResourceLocalEntityManager\");\n"
+"    }\n"
+"    \n"
+"    @Configuration(afterTestClass=true)\n"
+"    public void destroy()\n"
+"    {\n"
+"        emf.close();\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:30
+#, no-c-format
+msgid ""
+"Seam components don't usually depend directly upon container infrastructure, "
+"so most unit testing as as easy as that!"
+msgstr ""
+
+#. Tag: title
+#: Testing.xml:36
+#, no-c-format
+msgid "Integration testing Seam applications"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:37
+#, no-c-format
+msgid ""
+"Integration testing is slightly more difficult. In this case, we can't "
+"eliminate the container infrastructure; indeed, that is part of what is "
+"being tested! At the same time, we don't want to be forced to deploy our "
+"application to an application server to run the automated tests. We need to "
+"be able to reproduce just enough of the container infrastructure inside our "
+"testing environment to be able to exercise the whole application, without "
+"hurting performance too much."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:40
+#, no-c-format
+msgid ""
+"A second problem is emulating user interactions. A third problem is where to "
+"put our assertions. Some test frameworks let us test the whole application "
+"by reproducing user interactions with the web browser. These frameworks have "
+"their place, but they are not appropriate for use at development time."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:43
+#, no-c-format
+msgid ""
+"The approach taken by Seam is to let you write tests that script your "
+"components while running inside a pruned down container environment (Seam, "
+"together with the JBoss Embeddable EJB container). The role of the test "
+"script is basically to reproduce the interaction between the view and the "
+"Seam components. In other words, you get to pretend you are the JSF "
+"implementation!"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:46
+#, no-c-format
+msgid "This approach tests everything except the view."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:49
+#, no-c-format
+msgid "Let's consider a JSP view for the component we unit tested above:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:52
+#, no-c-format
+msgid ""
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Register New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;table border=\"0\"&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Username&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputText value=\"#{user.username}\"/&gt;&lt;/"
+"td&gt;\n"
+"       &lt;/tr&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Real Name&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputText value=\"#{user.name}\"/&gt;&lt;/td&gt;\n"
+"       &lt;/tr&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Password&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputSecret value=\"#{user.password}\"/&gt;&lt;/"
+"td&gt;\n"
+"       &lt;/tr&gt;\n"
+"     &lt;/table&gt;\n"
+"     &lt;h:messages/&gt;\n"
+"     &lt;h:commandButton type=\"submit\" value=\"Register\" action=\"#"
+"{register.register}\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:53
+#, no-c-format
+msgid ""
+"We want to test the registration functionality of our application (the stuff "
+"that happens when the user clicks the Register button). We'll reproduce the "
+"JSF request lifecycle in an automated TestNG test:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:56
+#, no-c-format
+msgid ""
+"public class RegisterTest extends SeamTest\n"
+"{\n"
+"   \n"
+"   @Test\n"
+"   public void testRegister() throws Exception\n"
+"   {\n"
+"            \n"
+"      new FacesRequest() {\n"
+"\n"
+"         @Override\n"
+"         protected void processValidations() throws Exception\n"
+"         {\n"
+"            validateValue(\"#{user.username}\", \"1ovthafew\");\n"
+"            validateValue(\"#{user.name}\", \"Gavin King\");\n"
+"            validateValue(\"#{user.password}\", \"secret\");\n"
+"            assert !isValidationFailure();\n"
+"         }\n"
+"         \n"
+"         @Override\n"
+"         protected void updateModelValues() throws Exception\n"
+"         {\n"
+"            setValue(\"#{user.username}\", \"1ovthafew\");\n"
+"            setValue(\"#{user.name}\", \"Gavin King\");\n"
+"            setValue(\"#{user.password}\", \"secret\");\n"
+"         }\n"
+"\n"
+"         @Override\n"
+"         protected void invokeApplication()\n"
+"         {\n"
+"            assert invokeMethod(\"#{register.register}\").equals(\"success"
+"\");\n"
+"         }\n"
+"\n"
+"         @Override\n"
+"         protected void renderResponse()\n"
+"         {\n"
+"            assert getValue(\"#{user.username}\").equals(\"1ovthafew\");\n"
+"            assert getValue(\"#{user.name}\").equals(\"Gavin King\");\n"
+"            assert getValue(\"#{user.password}\").equals(\"secret\");\n"
+"         }\n"
+"         \n"
+"      }.run();\n"
+"      \n"
+"   }\n"
+"\n"
+"   ...\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:57
+#, no-c-format
+msgid ""
+"Notice that we've extended <literal>SeamTest</literal>, which provides a "
+"Seam environment for our components, and written our test script as an "
+"anonymous class that extends <literal>SeamTest.FacesRequest</literal>, which "
+"provides an emulated JSF request lifecycle. (There is also a "
+"<literal>SeamTest.NonFacesRequest</literal> for testing GET requests.) We've "
+"written our code in methods which are named for the various JSF phases, to "
+"emulate the calls that JSF would make to our components. Then we've thrown "
+"in various assertions."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:60
+#, no-c-format
+msgid ""
+"You'll find plenty of integration tests for the Seam example applications "
+"which demonstrate more complex cases. There are instructions for running "
+"these tests using Ant, or using the TestNG plugin for eclipse:"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Text.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Text.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Text.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,362 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Text.xml:10
+#, no-c-format
+msgid "Seam Text"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:11
+#, no-c-format
+msgid ""
+"Collaboration-oriented websites require a human-friendly markup language for "
+"easy entry of formatted text in forum posts, wiki pages, blogs, comments, "
+"etc. Seam provides the <literal>&lt;s:formattedText/&gt;</literal> control "
+"for display of formatted text that conforms to the <emphasis>Seam Text</"
+"emphasis> language. Seam Text is implemented using an ANTLR-based parser. "
+"You don't need to know anything about ANTLR to use it, however."
+msgstr ""
+
+#. Tag: title
+#: Text.xml:15
+#, no-c-format
+msgid "Basic fomatting"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:16
+#, no-c-format
+msgid "Here is a simple example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:19
+#, no-c-format
+msgid ""
+"It's easy to make *bold text*, /italic text/, |monospace|, \n"
+"~deleted text~, super^scripts^ or _underlines_."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:20
+#, no-c-format
+msgid ""
+"If we display this using <literal>&lt;s:formattedText/&gt;</literal>, we "
+"will get the following HTML produced:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:23
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"It's easy to make &lt;b&gt;bold text&lt;/b&gt;, &lt;i&gt;italic text&lt;/"
+"i&gt;, &lt;tt&gt;monospace&lt;/tt&gt;\n"
+"&lt;del&gt;deleted text&lt;/del&gt;, super&lt;sup&gt;scripts&lt;/sup&gt; or "
+"&lt;u&gt;underlines&lt;/u&gt;.\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:24
+#, no-c-format
+msgid ""
+"We can use a blank line to indicate a new paragraph, and <literal>+</"
+"literal> to indicate a heading:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:27
+#, no-c-format
+msgid ""
+"+This is a big heading\n"
+"You /must/ have some text following a heading!\n"
+" \n"
+"++This is a smaller heading\n"
+"This is the first paragraph. We can split it across multiple \n"
+"lines, but we must end it with a blank line.\n"
+"\n"
+"This is the second paragraph."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:28
+#, no-c-format
+msgid ""
+"(Note that a simple newline is ignored, you need an additional blank line to "
+"wrap text into a new paragraph.) This is the HTML that results:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:31
+#, no-c-format
+msgid ""
+"&lt;h1&gt;This is a big heading&lt;/h1&gt;\n"
+"&lt;p&gt;\n"
+"You &lt;i&gt;must&lt;/i&gt; have some text following a heading!\n"
+"&lt;/p&gt;\n"
+" \n"
+"&lt;h2&gt;This is a smaller heading&lt;/h2&gt;\n"
+"&lt;p&gt;\n"
+"This is the first paragraph. We can split it across multiple \n"
+"lines, but we must end it with a blank line.\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"This is the second paragraph.\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:32
+#, no-c-format
+msgid ""
+"Ordered lists are created using the <literal>#</literal> character. "
+"Unordered lists use the <literal>=</literal> character:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:35
+#, no-c-format
+msgid ""
+"An ordered list:\n"
+"        \n"
+"#first item\n"
+"#second item\n"
+"#and even the /third/ item\n"
+"\n"
+"An unordered list:\n"
+"\n"
+"=an item\n"
+"=another item"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:36
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"An ordered list:\n"
+"&lt;/p&gt;\n"
+" \n"
+"&lt;ol&gt;       \n"
+"&lt;li&gt;first item&lt;/li&gt;\n"
+"&lt;li&gt;second item&lt;/li&gt;\n"
+"&lt;li&gt;and even the &lt;i&gt;third&lt;/i&gt; item&lt;/li&gt;\n"
+"&lt;/ol&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"An unordered list:\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;ul&gt;\n"
+"&lt;li&gt;an item&lt;/li&gt;\n"
+"&lt;li&gt;another item&lt;/li&gt;\n"
+"&lt;/ul&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:37
+#, no-c-format
+msgid "Quoted sections should be surrounded in double quotes:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:40
+#, no-c-format
+msgid ""
+"The other guy said:\n"
+"        \n"
+"\"Nyeah nyeah-nee \n"
+"/nyeah/ nyeah!\"\n"
+"\n"
+"But what do you think he means by \"nyeah-nee\"?"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:41
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"The other guy said:\n"
+"&lt;/p&gt;\n"
+"        \n"
+"&lt;q&gt;Nyeah nyeah-nee\n"
+"&lt;i&gt;nyeah&lt;/i&gt; nyeah!&lt;/q&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"But what do you think he means by &lt;q&gt;nyeah-nee&lt;/q&gt;?\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: title
+#: Text.xml:45
+#, no-c-format
+msgid "Entering code and text with special characters"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:46
+#, no-c-format
+msgid ""
+"Special characters such as <literal>*</literal>, <literal>|</literal> and "
+"<literal>#</literal>, along with HTML characters such as <literal>&lt;</"
+"literal>, <literal>&gt;</literal> and <literal>&amp;</literal> may be "
+"escaped using <literal>&#92;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:49
+#, no-c-format
+msgid ""
+"You can write down equations like 2&#92;*3&#92;=6 and HTML tags\n"
+"like &#92;&lt;body&#92;&gt; using the escape character: &#92;&#92;."
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:50
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"You can write down equations like 2*3=6 and HTML tags\n"
+"like &lt;body&gt; using the escape character: &#92;.\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:51
+#, no-c-format
+msgid "And we can quote code blocks using backticks:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:54
+#, no-c-format
+msgid ""
+"My code doesn't work:\n"
+"\n"
+"`for (int i=0; i&lt;100; i--)\n"
+"{\n"
+"    doSomething();\n"
+"}`\n"
+"\n"
+"Any ideas?"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:55
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"My code doesn't work:\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;pre&gt;for (int i=0; i&lt;100; i--)\n"
+"{\n"
+"    doSomething();\n"
+"}&lt;/pre&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"Any ideas?\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: title
+#: Text.xml:59
+#, no-c-format
+msgid "Links"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:60
+#, no-c-format
+msgid "A link may be created using the following syntax:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:63
+#, no-c-format
+msgid "Go to the Seam website at [=&gt;http://jboss.com/products/seam]."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:64
+#, no-c-format
+msgid "Or, if you want to specify the text of the link:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:67
+#, no-c-format
+msgid "Go to [the Seam website=&gt;http://jboss.com/products/seam]."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:68
+#, no-c-format
+msgid ""
+"For advanced users, it is even possible to customize the Seam Text parser to "
+"understand wikiword links written using this syntax."
+msgstr ""
+
+#. Tag: title
+#: Text.xml:74
+#, no-c-format
+msgid "Entering HTML"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:75
+#, no-c-format
+msgid ""
+"Text may even include a certain limited subset of HTML (don't worry, the "
+"subset is chosen to be safe from cross-site scripting attacks). This is "
+"useful for creating links:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:78
+#, no-c-format
+msgid ""
+"You might want to link to &lt;a href=\"http://jboss.com/products/seam\"&gt;"
+"something\n"
+"cool&lt;/a&gt;, or even include an image: &lt;img src=\"/logo.jpg\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:79
+#, no-c-format
+msgid "And for creating tables:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:82
+#, no-c-format
+msgid ""
+"&lt;table&gt;\n"
+"    &lt;tr&gt;&lt;td&gt;First name:&lt;/td&gt;&lt;td&gt;Gavin&lt;/td&gt;&lt;/"
+"tr&gt;\n"
+"    &lt;tr&gt;&lt;td&gt;Last name:&lt;/td&gt;&lt;td&gt;King&lt;/td&gt;&lt;/"
+"tr&gt;\n"
+"&lt;/table&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:83
+#, no-c-format
+msgid "But you can do much more if you want!"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Tools.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Tools.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Tools.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,769 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Tools.xml:10
+#, no-c-format
+msgid "Seam tools"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:12
+#, no-c-format
+msgid "jBPM designer and viewer"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:13
+#, no-c-format
+msgid ""
+"The jBPM designer and viewer will let you design and view in a nice way your "
+"business processes and your pageflows. This convenient tool is part of JBoss "
+"Eclipse IDE and more details can be found in the jBPM's documentation "
+"(http://docs.jboss.com/jbpm/v3/gpd/)"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:17
+#, no-c-format
+msgid "<title>Business process designer</title>"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:18
+#, no-c-format
+msgid "This tool lets you design your own business process in a graphical way."
+msgstr ""
+
+#. Tag: screeninfo
+#: Tools.xml:21 Tools.xml:37
+#, no-c-format
+msgid "<screeninfo>Business process designer</screeninfo>"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:33
+#, no-c-format
+msgid "Pageflow viewer"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:34
+#, no-c-format
+msgid ""
+"This tool let you design to some extend your pageflows and let you build "
+"graphical views of them so you can easily share and compare ideas on how it "
+"should be designed."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:51
+#, no-c-format
+msgid "CRUD-application generator"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:52
+#, no-c-format
+msgid ""
+"This chapter, will give you a short overview of the support for Seam that is "
+"available in the Hibernate Tools. Hibernate Tools is a set of tools for "
+"working with Hibernate and related technologies, such as JBoss Seam and "
+"EJB3. The tools are available as a set of eclipse plugins and Ant tasks. You "
+"can download the Hibernate Tools from the JBoss Eclipse IDE or Hibernate "
+"Tools websites."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:55
+#, no-c-format
+msgid ""
+"The specific support for Seam that is currently available is generation of a "
+"fully functional Seam based CRUD-application. The CRUD-application can be "
+"generated based on your existing Hibernate mapping files or EJB3 annotated "
+"POJO's or even fully reverse engineered from your existing database schema."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:58
+#, no-c-format
+msgid ""
+"The following sections is focused on the features required to understand for "
+"usage with Seam. The content is derived from the the Hibernate Tools "
+"reference documentation. Thus if you need more detailed information please "
+"refer to the Hibernate Tools documentation."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:62
+#, no-c-format
+msgid "Creating a Hibernate configuration file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:63
+#, no-c-format
+msgid ""
+"To be able to reverse engineer and generate code a hibernate.properties or "
+"hibernate.cfg.xml file is needed. The Hibernate Tools provide a wizard for "
+"generating the hibernate.cfg.xml file if you do not already have such file."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:66
+#, no-c-format
+msgid ""
+"Start the wizard by clicking \"New Wizard\" (Ctrl+N), select the Hibernate/"
+"Hibernate Configuration file (cfg.xml) wizard and press \"Next\". After "
+"selecting the wanted location for the hibernate.cfg.xml file, you will see "
+"the following page:"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:77
+#, no-c-format
+msgid ""
+"Tip: The contents in the combo boxes for the JDBC driver class and JDBC URL "
+"change automatically, depending on the Dialect and actual driver you have "
+"chosen."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:80
+#, no-c-format
+msgid ""
+"Enter your configuration information in this dialog. Details about the "
+"configuration options can be found in Hibernate reference documentation."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:83
+#, no-c-format
+msgid ""
+"Press \"Finish\" to create the configuration file, after optionally creating "
+"a Console onfiguration, the hibernate.cfg.xml will be automatically opened "
+"in an editor. The last option \"Create Console Configuration\" is enabled by "
+"default and when enabled i will automatically use the hibernate.cfg.xml for "
+"the basis of a \"Console Configuration\""
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:89
+#, no-c-format
+msgid "<title>Creating a Hibernate Console configuration</title>"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:90
+#, no-c-format
+msgid ""
+"A Console Configuration describes to the Hibernate plugin which "
+"configuration files should be used to configure hibernate, including which "
+"classpath is needed to load the POJO's, JDBC drivers etc. It is required to "
+"make usage of query prototyping, reverse engineering and code generation. "
+"You can have multiple named console configurations. Normally you would just "
+"need one per project, but more (or less) is definitly possible."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:93
+#, no-c-format
+msgid ""
+"You create a console configuration by running the Console Configuration "
+"wizard, shown in the following screenshot. The same wizard will also be used "
+"if you are coming from the hibernate.cfg.xml wizard and had enabled \"Create "
+"Console Configuration\"."
+msgstr ""
+
+#. Tag: caption
+#: Tools.xml:103
+#, no-c-format
+msgid "<caption>Creating a Hibernate Console configuration</caption>"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:105
+#, no-c-format
+msgid ""
+"The following table describes the relevant settings. The wizard can "
+"automatically detect default values for most of these if you started the "
+"Wizard with the relevant java project selected"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:109
+#, no-c-format
+msgid "Hibernate Console Configuration Parameters"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:117
+#, no-c-format
+msgid "Parameter"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:122 Tools.xml:308 Tools.xml:458
+#, no-c-format
+msgid "Description"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:127
+#, no-c-format
+msgid "Auto detected value"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:136
+#, no-c-format
+msgid "Name"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:141
+#, no-c-format
+msgid "The unique name of the configuration"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:146
+#, no-c-format
+msgid "Name of the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:153
+#, no-c-format
+msgid "Property file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:158
+#, no-c-format
+msgid "Path to a hibernate.properties file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:163
+#, no-c-format
+msgid "First hibernate.properties file found in the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:170
+#, no-c-format
+msgid "Configuration file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:175
+#, no-c-format
+msgid "Path to a hibernate.cfg.xml file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:180
+#, no-c-format
+msgid "First hibernate.cfg.xml file found in the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:187
+#, no-c-format
+msgid "Enable Hibernate ejb3/annotations"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:192
+#, no-c-format
+msgid ""
+"Selecting this option enables usage of annotated classes. hbm.xml files are "
+"of course still possible to use too. This feature requires running the "
+"Eclipse IDE with a JDK 5 runtime, otherwise you will get classloading and/or "
+"version errors."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:197
+#, no-c-format
+msgid "Not enabled"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:204
+#, no-c-format
+msgid "Mapping files"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:209
+#, no-c-format
+msgid ""
+"List of additional mapping files that should be loaded. Note: A hibernate."
+"cfg.xml can also contain mappings. Thus if these a duplicated here, you will "
+"get \"Duplicate mapping\" errors when using the console configuration."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:214
+#, no-c-format
+msgid ""
+"If no hibernate.cfg.xml file is found, all hbm.xml files found in the "
+"selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:221
+#, no-c-format
+msgid "Classpath"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:226
+#, no-c-format
+msgid ""
+"The classpath for loading POJO and JDBC drivers. Do not add Hibernate core "
+"libraries or dependencies, they are already included. If you get "
+"ClassNotFound errors then check this list for possible missing or redundant "
+"directories/jars."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:231
+#, no-c-format
+msgid ""
+"The default build output directory and any JARs with a class implementing "
+"java.sql.Driver in the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:239
+#, no-c-format
+msgid ""
+"Clicking \"Finish\" creates the configuration and shows it in the "
+"\"Hibernate Configurations\" view"
+msgstr ""
+
+#. Tag: caption
+#: Tools.xml:249
+#, no-c-format
+msgid "Console overview"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:254
+#, no-c-format
+msgid "Reverse engineering and code generation"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:255
+#, no-c-format
+msgid ""
+"A very simple \"click-and-generate\" reverse engineering and code generation "
+"facility is available. It is this facility that allows you to generate the "
+"skeleton for a full Seam CRUD application."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:258
+#, no-c-format
+msgid ""
+"To start working with this process, start the \"Hibernate Code Generation\" "
+"which is available in the toolbar via the Hibernate icon or via the \"Run/"
+"Hibernate Code Generation\" menu item."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:262
+#, no-c-format
+msgid "Code Generation Launcher"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:263
+#, no-c-format
+msgid ""
+"When you click on \"Hibernate Code Generation\" the standard Eclipse "
+"launcher dialog will appear. In this dialog you can create, edit and delete "
+"named Hibernate code generation \"launchers\"."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:274
+#, no-c-format
+msgid ""
+"The dialog has the standard tabs \"Refresh\" and \"Common\" that can be used "
+"to configure which directories should be automatically refreshed and various "
+"general settings launchers, such as saving them in a project for sharing the "
+"launcher within a team."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:285
+#, no-c-format
+msgid ""
+"The first time you create a code generation launcher you should give it a "
+"meaningfull name, otherwise the default prefix \"New_Generation\" will be "
+"used."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:288
+#, no-c-format
+msgid ""
+"Note: The \"At least one exporter option must be selected\" is just a "
+"warning stating that for this launch to work you need to select an exporter "
+"on the Exporter tab. When an exporter has been selected the warning will "
+"disappear."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:291
+#, no-c-format
+msgid "On the \"Main\" tab you the following fields:"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:295
+#, no-c-format
+msgid "Code generation \"Main\" tab fields"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:303 Tools.xml:453
+#, no-c-format
+msgid "Field"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:317
+#, no-c-format
+msgid "Console Configuration"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:322
+#, no-c-format
+msgid ""
+"The name of the console configuration which should be used when code "
+"generating."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:329
+#, no-c-format
+msgid "Output directory"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:334
+#, no-c-format
+msgid ""
+"Path to a directory into where all output will be written by default. Be "
+"aware that existing files will be overwritten, so be sure to specify the "
+"correct directory."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:341
+#, no-c-format
+msgid "Reverse engineer from JDBC Connection"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:346
+#, no-c-format
+msgid ""
+"If enabled the tools will reverse engineer the database available via the "
+"connection information in the selected Hibernate Console Configuration and "
+"generate code based on the database schema. If not enabled the code "
+"generation will just be based on the mappings already specified in the "
+"Hibernate Console configuration."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:353
+#, no-c-format
+msgid "Package"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:358
+#, no-c-format
+msgid ""
+"The package name here is used as the default package name for any entities "
+"found when reverse engineering."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:365
+#, no-c-format
+msgid "reveng.xml"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:370
+#, no-c-format
+msgid ""
+"Path to a reveng.xml file. A reveng.xml file allows you to control certain "
+"aspects of the reverse engineering. e.g. how jdbc types are mapped to "
+"hibernate types and especially important which tables are included/excluded "
+"from the process. Clicking \"setup\" allows you to select an existing reveng."
+"xml file or create a new one.."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:377
+#, no-c-format
+msgid "reveng. strategy"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:382
+#, no-c-format
+msgid ""
+"If reveng.xml does not provide enough customization you can provide your own "
+"implementation of an ReverseEngineeringStrategy. The class need to be in the "
+"claspath of the Console Configuration, otherwise you will get class not "
+"found exceptions."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:389
+#, no-c-format
+msgid "Generate basic typed composite ids"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:394
+#, no-c-format
+msgid ""
+"This field should always be enabled when generating the Seam CRUD "
+"application. A table that has a multi-colum primary key a &lt;composite-"
+"id&gt; mapping will always be created. If this option is enabled and there "
+"are matching foreign-keys each key column is still considered a 'basic' "
+"scalar (string, long, etc.) instead of a reference to an entity. If you "
+"disable this option a &lt;key-many-to-one&gt; instead. Note: a &lt;many-to-"
+"one&gt; property is still created, but is simply marked as non-updatable and "
+"non-insertable."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:401
+#, no-c-format
+msgid "Use custom templates"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:406
+#, no-c-format
+msgid ""
+"If enabled, the Template directory will be searched first when looking up "
+"the velocity templates, allowing you to redefine how the individual "
+"templates process the hibernate mapping model."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:413
+#, no-c-format
+msgid "Template directory"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:418
+#, no-c-format
+msgid "A path to a directory with custom velocity templates."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:429
+#, no-c-format
+msgid "Exporters"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:430
+#, no-c-format
+msgid ""
+"The exporters tab is used to specify which type of code that should be "
+"generated. Each selection represents an \"Exporter\" that are responsible "
+"for generating the code, hence the name."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:441
+#, no-c-format
+msgid ""
+"The following table describes in short the various exporters. The most "
+"relevant for Seam is of course the \"JBoss Seam Skeleton app\"."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:445
+#, no-c-format
+msgid "Code generation \"Exporter\" tab fields"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:467
+#, no-c-format
+msgid "Generate domain code"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:472
+#, no-c-format
+msgid ""
+"Generates POJO's for all the persistent classes and components found in the "
+"given Hibernate configuration."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:479
+#, no-c-format
+msgid "JDK 1.5 constructs"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:484
+#, no-c-format
+msgid "When enabled the POJO's will use JDK 1.5 constructs."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:491
+#, no-c-format
+msgid "EJB3/JSR-220 annotations"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:496
+#, no-c-format
+msgid ""
+"When enabled the POJO's will be annotated according to the EJB3/JSR-220 "
+"persistency specification."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:503
+#, no-c-format
+msgid "Generate DAO code"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:508
+#, no-c-format
+msgid "Generates a set of DAO's for each entity found."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:515
+#, no-c-format
+msgid "Generate Mappings"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:520
+#, no-c-format
+msgid "Generate mapping (hbm.xml) files for each entity"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:527
+#, no-c-format
+msgid "Generate hibernate configuration file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:532
+#, no-c-format
+msgid ""
+"Generate a hibernate.cfg.xml file. Used to keep the hibernate.cfg.xml "
+"uptodate with any new found mapping files."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:539
+#, no-c-format
+msgid "Generate schema html-documentation"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:544
+#, no-c-format
+msgid ""
+"Generates set of html pages that documents the database schema and some of "
+"the mappings."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:551
+#, no-c-format
+msgid "Generate JBoss Seam skeleton app (beta)"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:556
+#, no-c-format
+msgid ""
+"Generates a complete JBoss Seam skeleton app. The generation will include "
+"annotated POJO's, Seam controller beans and a JSP for the presentation "
+"layer. See the generated readme.txt for how to use it."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:559
+#, no-c-format
+msgid ""
+"Note: this exporter generates a full application, including a build.xml thus "
+"you will get the best results if you use an output directory which is the "
+"root of your project."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:570
+#, no-c-format
+msgid "Generating and using the code"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:571
+#, no-c-format
+msgid ""
+"When you have finished filling out the settings, simply press \"Run\" to "
+"start the generation of code. This might take a little while if you are "
+"reverse engineering from a database."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:574
+#, no-c-format
+msgid ""
+"When the generation have finished you should now have a complete skeleton "
+"Seam application in the output directory. In the output directory there is a "
+"<literal>readme.txt</literal> file describing the steps needed to deploy and "
+"run the example."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:577
+#, no-c-format
+msgid ""
+"If you want to regenerate/update the skeleton code then simply run the code "
+"generation again by selecting the \"Hibernate Code Generation\" in the "
+"toolbar or \"Run\" menu. Enjoy."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Tutorial.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Tutorial.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Tutorial.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,4041 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Tutorial.xml:10
+#, no-c-format
+msgid "Seam Tutorial"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:12
+#, no-c-format
+msgid "Try the examples"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:13
+#, no-c-format
+msgid ""
+"In this tutorial, we'll assume that you have downloaded JBoss AS 4.0.5 and "
+"installed the EJB 3.0 profile (using the JBoss AS installer). You should "
+"also have a copy of Seam downloaded and extracted to a work directory."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:16
+#, no-c-format
+msgid "The directory structure of each example in Seam follows this pattern:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:21
+#, no-c-format
+msgid ""
+"Web pages, images and stylesheets may be found in <filename>examples/"
+"<replaceable>registration</replaceable>/view</filename>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:26
+#, no-c-format
+msgid ""
+"Resources such as deployment descriptors and data import scripts may be "
+"found in <filename>examples/<replaceable>registration</replaceable>/"
+"resources</filename>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:31
+#, no-c-format
+msgid ""
+"Java source code may be found in <filename>examples/"
+"<replaceable>registration</replaceable>/src</filename>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:36
+#, no-c-format
+msgid ""
+"The Ant build script is <filename>examples/<replaceable>registration</"
+"replaceable>/build.xml</filename>"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:42
+#, no-c-format
+msgid "Running the examples on JBoss AS"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:43
+#, no-c-format
+msgid ""
+"First, make sure you have Ant correctly installed, with <literal>&#36;"
+"ANT_HOME</literal> and <literal>&#36;JAVA_HOME</literal> set correctly. "
+"Next, make sure you set the location of your JBoss AS 4.0.5 installation in "
+"the <literal>build.properties</literal> file in the root folder of your Seam "
+"installation. If you haven't already done so, start JBoss AS now by typing "
+"<literal>bin/run.sh</literal> or <literal>bin/run.bat</literal> in the root "
+"directory of your JBoss installation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:46
+#, no-c-format
+msgid ""
+"By default the examples will deploy to the default configuration of the "
+"server. If the server has been started using an a configuration other than "
+"default then the example <literal>build.xml</literal> file should be "
+"modified to reflect this before building and deploying. Two lines should be "
+"changed in this file:"
+msgstr ""
+
+#. Tag: screen
+#: Tutorial.xml:49
+#, no-c-format
+msgid ""
+"&lt;property name=\"deploy.dir\"           value=\"${jboss.home}/server/"
+"default/deploy\"/&gt;"
+msgstr ""
+
+#. Tag: screen
+#: Tutorial.xml:50
+#, no-c-format
+msgid ""
+"&lt;property name=\"webroot.dir\"         \n"
+"        value=\"${deploy.dir}/jboss-web.deployer/ROOT.war\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:51
+#, no-c-format
+msgid ""
+"Now, build and deploy the example by typing <literal>ant deploy</literal> in "
+"the <filename>examples/<replaceable>registration</replaceable></filename> "
+"directory."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:54
+#, no-c-format
+msgid ""
+"Try it out by accessing <ulink url=\"http://localhost:8080/seam-registration/"
+"\"><literal>http://localhost:8080/seam-registration/</literal></ulink> with "
+"your web browser."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:60
+#, no-c-format
+msgid "Running the examples on Tomcat"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:61
+#, no-c-format
+msgid ""
+"First, make sure you have Ant correctly installed, with <literal>&#36;"
+"ANT_HOME</literal> and <literal>&#36;JAVA_HOME</literal> set correctly. "
+"Next, make sure you set the location of your Tomcat 5.5 installation in the "
+"<literal>build.properties</literal> file in the root folder of your Seam "
+"installation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:64
+#, no-c-format
+msgid ""
+"Now, build and deploy the example by typing <literal>ant deploy.tomcat</"
+"literal> in the <filename>examples/<replaceable>registration</replaceable></"
+"filename> directory."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:67
+#, no-c-format
+msgid "Finally, start Tomcat."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:70
+#, no-c-format
+msgid ""
+"Try it out by accessing <ulink url=\"http://localhost:8080/jboss-seam-"
+"registration/\"><literal>http://localhost:8080/jboss-seam-registration/</"
+"literal></ulink> with your web browser."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:73
+#, no-c-format
+msgid ""
+"When you deploy the example to Tomcat, any EJB3 components will run inside "
+"the JBoss Embeddable EJB3 container, a complete standalone EJB3 container "
+"environment."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:79
+#, no-c-format
+msgid "Running the example tests"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:80
+#, no-c-format
+msgid ""
+"Most of the examples come with a suite of TestNG integration tests. The "
+"easiest way to run the tests is to run <literal>ant testexample</literal> "
+"inside the <filename>examples/<replaceable>registration</replaceable></"
+"filename> directory. It is also possible to run the tests inside your IDE "
+"using the TestNG plugin."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:88
+#, no-c-format
+msgid "Your first Seam application: the registration example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:89
+#, no-c-format
+msgid ""
+"The registration example is a fairly trivial application that lets a new "
+"user store his username, real name and password in the database. The example "
+"isn't intended to show off all of the cool functionality of Seam. However, "
+"it demonstrates the use of an EJB3 session bean as a JSF action listener, "
+"and basic configuration of Seam."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:92
+#, no-c-format
+msgid ""
+"We'll go slowly, since we realize you might not yet be familiar with EJB 3.0."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:95
+#, no-c-format
+msgid ""
+"The start page displays a very basic form with three input fields. Try "
+"filling them in and then submitting the form. This will save a user object "
+"in the database."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:107 Tutorial.xml:424 Tutorial.xml:563 Tutorial.xml:723
+#, no-c-format
+msgid "Understanding the code"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:108
+#, no-c-format
+msgid ""
+"The example is implemented with two JSP pages, one entity bean and one "
+"stateless session bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:119
+#, no-c-format
+msgid "Let's take a look at the code, starting from the \"bottom\"."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:123
+#, no-c-format
+msgid "The entity bean: <literal>User.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:124
+#, no-c-format
+msgid ""
+"We need an EJB entity bean for user data. This class defines "
+"<emphasis>persistence</emphasis> and <emphasis>validation</emphasis> "
+"declaratively, via annotations. It also needs some extra annotations that "
+"define the class as a Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:140
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"user\")\n"
+"@Scope(SESSION)\n"
+"@Table(name=\"users\")\n"
+"public class User implements Serializable\n"
+"{\n"
+"   private static final long serialVersionUID = 1881413500711441951L;\n"
+"   \n"
+"   private String username;\n"
+"   private String password;\n"
+"   private String name;\n"
+"   \n"
+"   public User(String name, String password, String username)\n"
+"   {\n"
+"      this.name = name;\n"
+"      this.password = password;\n"
+"      this.username = username;\n"
+"   }\n"
+"   \n"
+"   public User() {}\n"
+"   \n"
+"   @NotNull @Length(min=5, max=15)\n"
+"   public String getPassword()\n"
+"   {\n"
+"      return password;\n"
+"   }\n"
+"\n"
+"   public void setPassword(String password)\n"
+"   {\n"
+"      this.password = password;\n"
+"   }\n"
+"   \n"
+"   @NotNull\n"
+"   public String getName()\n"
+"   {\n"
+"      return name;\n"
+"   }\n"
+"\n"
+"   public void setName(String name)\n"
+"   {\n"
+"      this.name = name;\n"
+"   }\n"
+"   \n"
+"   @Id @NotNull @Length(min=5, max=15)\n"
+"   public String getUsername()\n"
+"   {\n"
+"      return username;\n"
+"   }\n"
+"\n"
+"   public void setUsername(String username)\n"
+"   {\n"
+"      this.username = username;\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:143
+#, no-c-format
+msgid ""
+"The EJB3 standard <literal>@Entity</literal> annotation indicates that the "
+"<literal>User</literal> class is an entity bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:148
+#, no-c-format
+msgid ""
+"A Seam component needs a <emphasis>component name</emphasis> specified by "
+"the <link linkend=\"name-annotation\"><literal>@Name</literal></link> "
+"annotation. This name must be unique within the Seam application. When JSF "
+"asks Seam to resolve a context variable with a name that is the same as a "
+"Seam component name, and the context variable is currently undefined (null), "
+"Seam will instantiate that component, and bind the new instance to the "
+"context variable. In this case, Seam will instantiate a <literal>User</"
+"literal> the first time JSF encounters a variable named <literal>user</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:153
+#, no-c-format
+msgid ""
+"Whenever Seam instantiates a component, it binds the new instance to a "
+"context variable in the component's <emphasis>default context</emphasis>. "
+"The default context is specified using the <link linkend=\"scope-annotation"
+"\"><literal>@Scope</literal></link> annotation. The <literal>User</literal> "
+"bean is a session scoped component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:158
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Table</literal> annotation indicates that the "
+"<literal>User</literal> class is mapped to the <literal>users</literal> "
+"table."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:163
+#, no-c-format
+msgid ""
+"<literal>name</literal>, <literal>password</literal> and <literal>username</"
+"literal> are the persistent attributes of the entity bean. All of our "
+"persistent attributes define accessor methods. These are needed when this "
+"component is used by JSF in the render response and update model values "
+"phases."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:168
+#, no-c-format
+msgid ""
+"An empty constructor is both required by both the EJB specification and by "
+"Seam."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:173
+#, no-c-format
+msgid ""
+"The <literal>@NotNull</literal> and <literal>@Length</literal> annotations "
+"are part of the Hibernate Validator framework. Seam integrates Hibernate "
+"Validator and lets you use it for data validation (even if you are not using "
+"Hibernate for persistence)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:178
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Id</literal> annotation indicates the primary key "
+"attribute of the entity bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:185
+#, no-c-format
+msgid ""
+"The most important things to notice in this example are the <literal>@Name</"
+"literal> and <literal>@Scope</literal> annotations. These annotations "
+"establish that this class is a Seam component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:188
+#, no-c-format
+msgid ""
+"We'll see below that the properties of our <literal>User</literal> class are "
+"bound to directly to JSF components and are populated by JSF during the "
+"update model values phase. We don't need any tedious glue code to copy data "
+"back and forth between the JSP pages and the entity bean domain model."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:191
+#, no-c-format
+msgid ""
+"However, entity beans shouldn't do transaction management or database "
+"access. So we can't use this component as a JSF action listener. For that we "
+"need a session bean."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:198
+#, no-c-format
+msgid ""
+"The stateless session bean class: <literal>RegisterAction.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:199
+#, no-c-format
+msgid ""
+"Most Seam application use session beans as JSF action listeners (you can use "
+"JavaBeans instead if you like)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:202
+#, no-c-format
+msgid ""
+"We have exactly one JSF action in our application, and one session bean "
+"method attached to it. In this case, we'll use a stateless session bean, "
+"since all the state associated with our action is held by the <literal>User</"
+"literal> bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:205
+#, no-c-format
+msgid "This is the only really interesting code in the example!"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:222
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"register\")\n"
+"public class RegisterAction implements Register\n"
+"{\n"
+"\n"
+"   @In\n"
+"   private User user;\n"
+"   \n"
+"   @PersistenceContext\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @Logger\n"
+"   private Log log;\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = em.createQuery(\n"
+"         \"select username from User where username=#{user.username}\")\n"
+"         .getResultList();\n"
+"         \n"
+"      if (existing.size()==0)\n"
+"      {\n"
+"         em.persist(user);\n"
+"         log.info(\"Registered new user #{user.username}\");\n"
+"         return \"/registered.jsp\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         FacesMessages.instance().add(\"User #{user.username} already exists"
+"\");\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:225
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Stateless</literal> annotation marks this class "
+"as stateless session bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:230
+#, no-c-format
+msgid ""
+"The <link linkend=\"in-annotation\"><literal>@In</literal></link> annotation "
+"marks an attribute of the bean as injected by Seam. In this case, the "
+"attribute is injected from a context variable named <literal>user</literal> "
+"(the instance variable name)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:235
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@PersistenceContext</literal> annotation is used "
+"to inject the EJB3 entity manager."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:240
+#, no-c-format
+msgid ""
+"The Seam <literal>@Logger</literal> annotation is used to inject the "
+"component's <literal>Log</literal> instance."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:245
+#, no-c-format
+msgid ""
+"The action listener method uses the standard EJB3 <literal>EntityManager</"
+"literal> API to interact with the database, and returns the JSF outcome. "
+"Note that, since this is a sesson bean, a transaction is automatically begun "
+"when the <literal>register()</literal> method is called, and committed when "
+"it completes."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:250
+#, no-c-format
+msgid ""
+"Notice that Seam lets you use a JSF EL expression inside EJB-QL. Under the "
+"covers, this results in an ordinary JPA <literal>setParameter()</literal> "
+"call on the standard JPA <literal>Query</literal> object. Nice, huh?"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:255
+#, no-c-format
+msgid ""
+"The <literal>Log</literal> API lets us easily display templated log messages."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:260
+#, no-c-format
+msgid ""
+"JSF action listener methods return a string-valued outcome that determines "
+"what page will be displayed next. A null outcome (or a void action listener "
+"method) redisplays the previous page. In plain JSF, it is normal to always "
+"use a JSF <emphasis>navigation rule</emphasis> to determine the JSF view id "
+"from the outcome. For complex application this indirection is useful and a "
+"good practice. However, for very simple examples like this one, Seam lets "
+"you use the JSF view id as the outcome, eliminating the requirement for a "
+"navigation rule. <emphasis>Note that when you use a view id as an outcome, "
+"Seam always performs a browser redirect.</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:265
+#, no-c-format
+msgid ""
+"Seam provides a number of <emphasis>built-in components</emphasis> to help "
+"solve common problems. The <literal>FacesMessages</literal> component makes "
+"it easy to display templated error or success messages. Built-in Seam "
+"components may be obtained by injection, or by calling an <literal>instance()"
+"</literal> method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:272
+#, no-c-format
+msgid ""
+"Note that we did not explicitly specify a <literal>@Scope</literal> this "
+"time. Each Seam component type has a default scope if not explicitly "
+"specified. For stateless session beans, the default scope is the stateless "
+"context. Actually, <emphasis>all</emphasis> stateless session beans belong "
+"in the stateless context."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:275
+#, no-c-format
+msgid ""
+"Our session bean action listener performs the business and persistence logic "
+"for our mini-application. In more complex applications, we might need to "
+"layer the code and refactor persistence logic into a dedicated data access "
+"component. That's perfectly trivial to do. But notice that Seam does not "
+"force you into any particular strategy for application layering."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:278
+#, no-c-format
+msgid ""
+"Furthermore, notice that our session bean has simultaneous access to context "
+"associated with the web request (the form values in the <literal>User</"
+"literal> object, for example), and state held in transactional resources "
+"(the <literal>EntityManager</literal> object). This is a break from "
+"traditional J2EE architectures. Again, if you are more comfortable with the "
+"traditional J2EE layering, you can certainly implement that in a Seam "
+"application. But for many applications, it's simply not very useful."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:285
+#, no-c-format
+msgid "The session bean local interface: <literal>Register.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:286
+#, no-c-format
+msgid "Naturally, our session bean needs a local interface."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:291
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface Register\n"
+"{\n"
+"   public String register();\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:292
+#, no-c-format
+msgid "That's the end of the Java code. Now onto the deployment descriptors."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:298
+#, no-c-format
+msgid ""
+"The Seam component deployment descriptor: <literal>components.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:299
+#, no-c-format
+msgid ""
+"If you've used many Java frameworks before, you'll be used to having to "
+"declate all your component classes in some kind of XML file that gradually "
+"grows more and more unmanageable as your project matures. You'll be relieved "
+"to know that Seam does not require that application components be "
+"accompanied by XML. Most Seam applications require a very small amount of "
+"XML that does not grow very much as the project gets bigger."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:302
+#, no-c-format
+msgid ""
+"Nevertheless, it is often useful to be able to provide for <emphasis>some</"
+"emphasis> external configuration of <emphasis>some</emphasis> components "
+"(particularly the components built in to Seam). You have a couple of options "
+"here, but the most flexible option is to provide this configuration in a "
+"file called <literal>components.xml</literal>, located in the <literal>WEB-"
+"INF</literal> directory. We'll use the <literal>components.xml</literal> "
+"file to tell Seam how to find our EJB components in JNDI:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:305
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"&gt;\n"
+"     &lt;core:init jndi-pattern=\"@jndiPattern@\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:306
+#, no-c-format
+msgid ""
+"This code configures a property named <literal>jndiPattern</literal> of a "
+"built-in Seam component named <literal>org.jboss.seam.core.init</literal>."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:312
+#, no-c-format
+msgid "The web deployment description: <literal>web.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:313
+#, no-c-format
+msgid ""
+"The presentation layer for our mini-application will be deployed in a WAR. "
+"So we'll need a web deployment descriptor."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:316
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;web-app version=\"2.5\"\n"
+"    xmlns=\"http://java.sun.com/xml/ns/javaee\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n"
+"        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\"&gt;\n"
+"\n"
+"    &lt;!-- Seam --&gt;\n"
+"\n"
+"    &lt;listener&gt;\n"
+"        &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/"
+"listener-class&gt;\n"
+"    &lt;/listener&gt;\n"
+"\n"
+"    &lt;!-- MyFaces --&gt;\n"
+"\n"
+"    &lt;listener&gt;\n"
+"        &lt;listener-class&gt;\n"
+"            org.apache.myfaces.webapp.StartupServletContextListener\n"
+"        &lt;/listener-class&gt;\n"
+"    &lt;/listener&gt;\n"
+"\n"
+"    &lt;context-param&gt;\n"
+"        &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-"
+"name&gt;\n"
+"        &lt;param-value&gt;client&lt;/param-value&gt;\n"
+"    &lt;/context-param&gt;\n"
+"\n"
+"    &lt;servlet&gt;\n"
+"        &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;\n"
+"        &lt;servlet-class&gt;javax.faces.webapp.FacesServlet&lt;/servlet-"
+"class&gt;\n"
+"        &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;\n"
+"    &lt;/servlet&gt;\n"
+"\n"
+"    &lt;!-- Faces Servlet Mapping --&gt;\n"
+"    &lt;servlet-mapping&gt;\n"
+"        &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;\n"
+"        &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;\n"
+"    &lt;/servlet-mapping&gt;\n"
+"\n"
+"&lt;/web-app&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:317
+#, no-c-format
+msgid ""
+"This <literal>web.xml</literal> file configures Seam and MyFaces. The "
+"configuration you see here is pretty much identical in all Seam applications."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:323
+#, no-c-format
+msgid "The JSF configration: <literal>faces-config.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:324
+#, no-c-format
+msgid ""
+"All Seam applications use JSF views as the presentation layer. So we'll need "
+"<literal>faces-config.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:327
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;!DOCTYPE faces-config \n"
+"PUBLIC \"-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN\"\n"
+"                            \"http://java.sun.com/dtd/web-facesconfig_1_0.dtd"
+"\"&gt;\n"
+"&lt;faces-config&gt;\n"
+"\n"
+"    &lt;!-- A phase listener is needed by all Seam applications --&gt;\n"
+"    \n"
+"    &lt;lifecycle&gt;\n"
+"        &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-"
+"listener&gt;\n"
+"    &lt;/lifecycle&gt;\n"
+"\n"
+"&lt;/faces-config&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:328
+#, no-c-format
+msgid ""
+"The <literal>faces-config.xml</literal> file integrates Seam into JSF. Note "
+"that we don't need any JSF managed bean declarations! The managed beans are "
+"the Seam components. In Seam applications, the <literal>faces-config.xml</"
+"literal> is used much less often than in plain JSF."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:331
+#, no-c-format
+msgid ""
+"In fact, once you have all the basic descriptors set up, the <emphasis>only</"
+"emphasis> XML you need to write as you add new functionality to a Seam "
+"application is the navigation rules, and possibly jBPM process definitions. "
+"Seam takes the view that <emphasis>process flow</emphasis> and "
+"<emphasis>configuration data</emphasis> are the only things that truly "
+"belong in XML."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:334
+#, no-c-format
+msgid ""
+"In this simple example, we don't even need a navigation rule, since we "
+"decided to embed the view id in our action code."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:340
+#, no-c-format
+msgid "The EJB deployment descriptor: <literal>ejb-jar.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:341
+#, no-c-format
+msgid ""
+"The <literal>ejb-jar.xml</literal> file integrates Seam with EJB3, by "
+"attaching the <literal>SeamInterceptor</literal> to all session beans in the "
+"archive."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:344
+#, no-c-format
+msgid ""
+"&lt;ejb-jar xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \n"
+"         xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n"
+"         http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd\"\n"
+"         version=\"3.0\"&gt;\n"
+"         \n"
+"   &lt;interceptors&gt;\n"
+"     &lt;interceptor&gt;\n"
+"       &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"     &lt;/interceptor&gt;\n"
+"   &lt;/interceptors&gt;\n"
+"   \n"
+"   &lt;assembly-descriptor&gt;\n"
+"      &lt;interceptor-binding&gt;\n"
+"         &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"         &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"      &lt;/interceptor-binding&gt;\n"
+"   &lt;/assembly-descriptor&gt;\n"
+"   \n"
+"&lt;/ejb-jar&gt;"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:348
+#, no-c-format
+msgid ""
+"The EJB persistence deployment descriptor: <literal>persistence.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:349
+#, no-c-format
+msgid ""
+"The <literal>persistence.xml</literal> file tells the EJB persistence "
+"provider where to find the datasource, and contains some vendor-specific "
+"settings. In this case, enables automatic schema export at startup time."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:352
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;persistence xmlns=\"http://java.sun.com/xml/ns/persistence\" \n"
+"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence \n"
+"             http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd\" \n"
+"             version=\"1.0\"&gt;\n"
+"    &lt;persistence-unit name=\"userDatabase\"&gt;\n"
+"      &lt;provider&gt;org.hibernate.ejb.HibernatePersistence&lt;/"
+"provider&gt;\n"
+"      &lt;jta-data-source&gt;java:/DefaultDS&lt;/jta-data-source&gt;\n"
+"      &lt;properties&gt;\n"
+"         &lt;property name=\"hibernate.hbm2ddl.auto\" value=\"create-drop\"/"
+"&gt;\n"
+"      &lt;/properties&gt;\n"
+"    &lt;/persistence-unit&gt;\n"
+"&lt;/persistence&gt;"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:356
+#, no-c-format
+msgid ""
+"The view: <literal>register.jsp</literal> and <literal>registered.jsp</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:357
+#, no-c-format
+msgid ""
+"The view pages for a Seam application could be implemented using any "
+"technology that supports JSF. In this example we use JSP, since it is "
+"familiar to most developers and since we have minimal requirements here "
+"anyway. (But if you take our advice, you'll use Facelets for your own "
+"applications.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:360
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://jboss.com/products/seam/taglib\" prefix=\"s\" "
+"&#37;&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Register New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;table border=\"0\"&gt;\n"
+"       &lt;s:validateAll&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Username&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputText value=\"#{user.username}\"/&gt;&lt;/"
+"td&gt;\n"
+"         &lt;/tr&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Real Name&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputText value=\"#{user.name}\"/&gt;&lt;/td&gt;\n"
+"         &lt;/tr&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Password&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputSecret value=\"#{user.password}\"/&gt;&lt;/"
+"td&gt;\n"
+"         &lt;/tr&gt;\n"
+"       &lt;/s:validateAll&gt;\n"
+"     &lt;/table&gt;\n"
+"     &lt;h:messages/&gt;\n"
+"     &lt;h:commandButton type=\"submit\" value=\"Register\" action=\"#"
+"{register.register}\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:361
+#, no-c-format
+msgid ""
+"The only thing here that is specific to Seam is the <literal>&lt;s:"
+"validateAll&gt;</literal> tag. This JSF component tells JSF to validate all "
+"the contained input fields against the Hibernate Validator annotations "
+"specified on the entity bean."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:364
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Successfully Registered New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"    Welcome, &lt;h:outputText value=\"#{user.name}\"/&gt;, \n"
+"    you are successfully registered as &lt;h:outputText value=\"#{user."
+"username}\"/&gt;.\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:365
+#, no-c-format
+msgid ""
+"This is a boring old JSP pages using standard JSF components. There is "
+"nothing specific to Seam here."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:371
+#, no-c-format
+msgid "The EAR deployment descriptor: <literal>application.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:372
+#, no-c-format
+msgid ""
+"Finally, since our application is deployed as an EAR, we need a deployment "
+"descriptor there, too."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:375
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;application xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee \n"
+"             http://java.sun.com/xml/ns/javaee/application_5.xsd\"\n"
+"             version=\"5\"&gt;\n"
+"             \n"
+"    &lt;display-name&gt;Seam Registration&lt;/display-name&gt;\n"
+"\n"
+"    &lt;module&gt;\n"
+"        &lt;web&gt;\n"
+"            &lt;web-uri&gt;jboss-seam-registration.war&lt;/web-uri&gt;\n"
+"            &lt;context-root&gt;/seam-registration&lt;/context-root&gt;\n"
+"        &lt;/web&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;ejb&gt;jboss-seam-registration.jar&lt;/ejb&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;jboss-seam.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;el-api.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;el-ri.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    \n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:376
+#, no-c-format
+msgid ""
+"This deployment descriptor links modules in the enterprise archive and binds "
+"the web application to the context root <literal>/seam-registration</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:387 Tutorial.xml:535 Tutorial.xml:698 Tutorial.xml:813
+#, no-c-format
+msgid "How it works"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:388
+#, no-c-format
+msgid ""
+"When the form is submitted, JSF asks Seam to resolve the variable named "
+"<literal>user</literal>. Since there is no value already bound to that name "
+"(in any Seam context), Seam instantiates the <literal>user</literal> "
+"component, and returns the resulting <literal>User</literal> entity bean "
+"instance to JSF after storing it in the Seam session context."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:391
+#, no-c-format
+msgid ""
+"The form input values are now validated against the Hibernate Validator "
+"constraints specified on the <literal>User</literal> entity. If the "
+"constraints are violated, JSF redisplays the page. Otherwise, JSF binds the "
+"form input values to properties of the <literal>User</literal> entity bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:394
+#, no-c-format
+msgid ""
+"Next, JSF asks Seam to resolve the variable named <literal>register</"
+"literal>. Seam finds the <literal>RegisterAction</literal> stateless session "
+"bean in the stateless context and returns it. JSF invokes the "
+"<literal>register()</literal> action listener method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:397
+#, no-c-format
+msgid ""
+"Seam intercepts the method call and injects the <literal>User</literal> "
+"entity from the Seam session context, before continuing the invocation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:400
+#, no-c-format
+msgid ""
+"The <literal>register()</literal> method checks if a user with the entered "
+"username already exists. If so, an error message is queued with the "
+"<literal>FacesMessages</literal> component, and a null outcome is returned, "
+"causing a page redisplay. The <literal>FacesMessages</literal> component "
+"interpolates the JSF expression embedded in the message string and adds a "
+"JSF <literal>FacesMessage</literal> to the view."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:403
+#, no-c-format
+msgid ""
+"If no user with that username exists, the <literal>\"/registered.jsp\"</"
+"literal> outcome triggers a browser redirect to the <literal>registered.jsp</"
+"literal> page. When JSF comes to render the page, it asks Seam to resolve "
+"the variable named <literal>user</literal> and uses property values of the "
+"returned <literal>User</literal> entity from Seam's session scope."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:411
+#, no-c-format
+msgid "Clickable lists in Seam: the messages example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:412
+#, no-c-format
+msgid ""
+"Clickable lists of database search results are such an important part of any "
+"online application that Seam provides special functionality on top of JSF to "
+"make it easier to query data using EJB-QL or HQL and display it as a "
+"clickable list using a JSF <literal>&lt;h:dataTable&gt;</literal>. The "
+"messages example demonstrates this functionality."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:425
+#, no-c-format
+msgid ""
+"The message list example has one entity bean, <literal>Message</literal>, "
+"one session bean, <literal>MessageListBean</literal> and one JSP."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:429
+#, no-c-format
+msgid "The entity bean: <literal>Message.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:430
+#, no-c-format
+msgid ""
+"The <literal>Message</literal> entity defines the title, text, date and time "
+"of a message, and a flag indicating whether the message has been read:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:433
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"message\")\n"
+"@Scope(EVENT)\n"
+"public class Message implements Serializable\n"
+"{\n"
+"   private Long id;\n"
+"   private String title;\n"
+"   private String text;\n"
+"   private boolean read;\n"
+"   private Date datetime;\n"
+"   \n"
+"   @Id @GeneratedValue\n"
+"   public Long getId() {\n"
+"      return id;\n"
+"   }\n"
+"   public void setId(Long id) {\n"
+"      this.id = id;\n"
+"   }\n"
+"   \n"
+"   @NotNull @Length(max=100)\n"
+"   public String getTitle() {\n"
+"      return title;\n"
+"   }\n"
+"   public void setTitle(String title) {\n"
+"      this.title = title;\n"
+"   }\n"
+"   \n"
+"   @NotNull @Lob\n"
+"   public String getText() {\n"
+"      return text;\n"
+"   }\n"
+"   public void setText(String text) {\n"
+"      this.text = text;\n"
+"   }\n"
+"   \n"
+"   @NotNull\n"
+"   public boolean isRead() {\n"
+"      return read;\n"
+"   }\n"
+"   public void setRead(boolean read) {\n"
+"      this.read = read;\n"
+"   }\n"
+"   \n"
+"   @NotNull \n"
+"   @Basic @Temporal(TemporalType.TIMESTAMP)\n"
+"   public Date getDatetime() {\n"
+"      return datetime;\n"
+"   }\n"
+"   public void setDatetime(Date datetime) {\n"
+"      this.datetime = datetime;\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:438
+#, no-c-format
+msgid "The stateful session bean: <literal>MessageManagerBean.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:439
+#, no-c-format
+msgid ""
+"Just like in the previous example, we have a session bean, "
+"<literal>MessageManagerBean</literal>, which defines the action listener "
+"methods for the two buttons on our form. One of the buttons selects a "
+"message from the list, and displays that message. The other button deletes a "
+"message. So far, this is not so different to the previous example."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:442
+#, no-c-format
+msgid ""
+"But <literal>MessageManagerBean</literal> is also responsible for fetching "
+"the list of messages the first time we navigate to the message list page. "
+"There are various ways the user could navigate to the page, and not all of "
+"them are preceded by a JSF action&mdash;the user might have bookmarked the "
+"page, for example. So the job of fetching the message list takes place in a "
+"Seam <emphasis>factory method</emphasis>, instead of in an action listener "
+"method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:445
+#, no-c-format
+msgid ""
+"We want to cache the list of messages in memory between server requests, so "
+"we will make this a stateful session bean."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:459
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Scope(SESSION)\n"
+"@Name(\"messageManager\")\n"
+"public class MessageManagerBean implements Serializable, MessageManager\n"
+"{\n"
+"\n"
+"   @DataModel\n"
+"   private List&lt;Message&gt; messageList;\n"
+"   \n"
+"   @DataModelSelection\n"
+"   @Out(required=false)\n"
+"   private Message message;\n"
+"   \n"
+"   @PersistenceContext(type=EXTENDED)\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @Factory(\"messageList\")\n"
+"   public void findMessages()\n"
+"   {\n"
+"      messageList = em.createQuery(\"from Message msg order by msg.datetime "
+"desc\").getResultList();\n"
+"   }\n"
+"   \n"
+"   public void select()\n"
+"   {\n"
+"      message.setRead(true);\n"
+"   }\n"
+"   \n"
+"   public void delete()\n"
+"   {\n"
+"      messageList.remove(message);\n"
+"      em.remove(message);\n"
+"      message=null;\n"
+"   }\n"
+"   \n"
+"   @Remove @Destroy\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:462
+#, no-c-format
+msgid ""
+"The <literal>@DataModel</literal> annotation exposes an attibute of type "
+"<literal>java.util.List</literal> to the JSF page as an instance of "
+"<literal>javax.faces.model.DataModel</literal>. This allows us to use the "
+"list in a JSF <literal>&lt;h:dataTable&gt;</literal> with clickable links "
+"for each row. In this case, the <literal>DataModel</literal> is made "
+"available in a session context variable named <literal>messageList</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:467
+#, no-c-format
+msgid ""
+"The <literal>@DataModelSelection</literal> annotation tells Seam to inject "
+"the <literal>List</literal> element that corresponded to the clicked link."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:472
+#, no-c-format
+msgid ""
+"The <literal>@Out</literal> annotation then exposes the selected value "
+"directly to the page. So ever time a row of the clickable list is selected, "
+"the <literal>Message</literal> is injected to the attribute of the stateful "
+"bean, and the subsequently <emphasis>outjected</emphasis> to the event "
+"context variable named <literal>message</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:477
+#, no-c-format
+msgid ""
+"This stateful bean has an EJB3 <emphasis>extended persistence context</"
+"emphasis>. The messages retrieved in the query remain in the managed state "
+"as long as the bean exists, so any subsequent method calls to the stateful "
+"bean can update them without needing to make any explicit call to the "
+"<literal>EntityManager</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:482
+#, no-c-format
+msgid ""
+"The first time we navigate to the JSP page, there will be no value in the "
+"<literal>messageList</literal> context variable. The <literal>@Factory</"
+"literal> annotation tells Seam to create an instance of "
+"<literal>MessageManagerBean</literal> and invoke the <literal>findMessages()"
+"</literal> method to initialize the value. We call <literal>findMessages()</"
+"literal> a <emphasis>factory method</emphasis> for <literal>messages</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:487
+#, no-c-format
+msgid ""
+"The <literal>select()</literal> action listener method marks the selected "
+"<literal>Message</literal> as read, and updates it in the database."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:492
+#, no-c-format
+msgid ""
+"The <literal>delete()</literal> action listener method removes the selected "
+"<literal>Message</literal> from the database."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:497
+#, no-c-format
+msgid ""
+"All stateful session bean Seam components <emphasis>must</emphasis> have a "
+"method marked <literal>@Remove @Destroy</literal> to ensure that Seam will "
+"remove the stateful bean when the Seam context ends, and clean up any server-"
+"side state."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:504
+#, no-c-format
+msgid ""
+"Note that this is a session-scoped Seam component. It is associated with the "
+"user login session, and all requests from a login session share the same "
+"instance of the component. (In Seam applications, we usually use session-"
+"scoped components sparingly.)"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:510
+#, no-c-format
+msgid ""
+"The session bean local interface: <literal>MessageManager.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:511
+#, no-c-format
+msgid "All session beans have a business interface, of course."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:514
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface MessageManager\n"
+"{\n"
+"   public void findMessages();\n"
+"   public void select();\n"
+"   public void delete();\n"
+"   public void destroy();\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:515
+#, no-c-format
+msgid "From now on, we won't show local interfaces in our code examples."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:518
+#, no-c-format
+msgid ""
+"Let's skip over <literal>components.xml</literal>, <literal>persistence.xml</"
+"literal>, <literal>web.xml</literal>, <literal>ejb-jar.xml</literal>, "
+"<literal>faces-config.xml</literal> and <literal>application.xml</literal> "
+"since they are much the same as the previous example, and go straight to the "
+"JSP."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:524
+#, no-c-format
+msgid "The view: <literal>messages.jsp</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:525
+#, no-c-format
+msgid ""
+"The JSP page is a straightforward use of the JSF <literal>&lt;h:dataTable&gt;"
+"</literal> component. Again, nothing specific to Seam."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:528
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Messages&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;h2&gt;Message List&lt;/h2&gt;\n"
+"     &lt;h:outputText value=\"No messages to display\" rendered=\"#"
+"{messageList.rowCount==0}\"/&gt;\n"
+"     &lt;h:dataTable var=\"msg\" value=\"#{messageList}\" rendered=\"#"
+"{messageList.rowCount&gt;0}\"&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Read\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:selectBooleanCheckbox value=\"#{msg.read}\" disabled=\"true"
+"\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Title\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:commandLink value=\"#{msg.title}\" action=\"#"
+"{messageManager.select}\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Date/Time\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:outputText value=\"#{msg.datetime}\"&gt;\n"
+"              &lt;f:convertDateTime type=\"both\" dateStyle=\"medium\" "
+"timeStyle=\"short\"/&gt;\n"
+"           &lt;/h:outputText&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;h:commandButton value=\"Delete\" action=\"#{messageManager."
+"delete}\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"     &lt;/h:dataTable&gt;\n"
+"     &lt;h3&gt;&lt;h:outputText value=\"#{message.title}\"/&gt;&lt;/h3&gt;\n"
+"     &lt;div&gt;&lt;h:outputText value=\"#{message.text}\"/&gt;&lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:536
+#, no-c-format
+msgid ""
+"The first time we navigate to the <literal>messages.jsp</literal> page, "
+"whether by a JSF postback (faces request) or a direct browser GET request "
+"(non-faces request), the page will try to resolve the <literal>messageList</"
+"literal> context variable. Since this context variable is not initialized, "
+"Seam will call the factory method <literal>findMessages()</literal>, which "
+"performs a query against the database and results in a <literal>DataModel</"
+"literal> being outjected. This <literal>DataModel</literal> provides the row "
+"data needed for rendering the <literal>&lt;h:dataTable&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:539
+#, no-c-format
+msgid ""
+"When the user clicks the <literal>&lt;h:commandLink&gt;</literal>, JSF calls "
+"the <literal>select()</literal> action listener. Seam intercepts this call "
+"and injects the selected row data into the <literal>message</literal> "
+"attribute of the <literal>messageManager</literal> component. The action "
+"listener fires, marking the selected <literal>Message</literal> as read. At "
+"the end of the call, Seam outjects the selected <literal>Message</literal> "
+"to the context variable named <literal>message</literal>. Next, the EJB "
+"container commits the transaction, and the change to the <literal>Message</"
+"literal> is flushed to the database. Finally, the page is re-rendered, "
+"redisplaying the message list, and displaying the selected message below it."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:542
+#, no-c-format
+msgid ""
+"If the user clicks the <literal>&lt;h:commandButton&gt;</literal>, JSF calls "
+"the <literal>delete()</literal> action listener. Seam intercepts this call "
+"and injects the selected row data into the <literal>message</literal> "
+"attribute of the <literal>messageList</literal> component. The action "
+"listener fires, removing the selected <literal>Message</literal> from the "
+"list, and also calling <literal>remove()</literal> on the "
+"<literal>EntityManager</literal>. At the end of the call, Seam refreshes the "
+"<literal>messageList</literal> context variable and clears the context "
+"variable named <literal>message</literal>. The EJB container commits the "
+"transaction, and deletes the <literal>Message</literal> from the database. "
+"Finally, the page is re-rendered, redisplaying the message list."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:550
+#, no-c-format
+msgid "Seam and jBPM: the todo list example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:551
+#, no-c-format
+msgid ""
+"jBPM provides sophisticated functionality for workflow and task management. "
+"To get a small taste of how jBPM integrates with Seam, we'll show you a "
+"simple \"todo list\" application. Since managing lists of tasks is such core "
+"functionality for jBPM, there is hardly any Java code at all in this example."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:564
+#, no-c-format
+msgid ""
+"The center of this example is the jBPM process definition. There are also "
+"two JSPs and two trivial JavaBeans (There was no reason to use session "
+"beans, since they do not access the database, or have any other "
+"transactional behavior). Let's start with the process definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:575
+#, no-c-format
+msgid ""
+"&lt;process-definition name=\"todo\"&gt;\n"
+"   \n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"todo\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;task-node name=\"todo\"&gt;\n"
+"      &lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"         &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"      &lt;/task&gt;\n"
+"      &lt;transition to=\"done\"/&gt;\n"
+"   &lt;/task-node&gt;\n"
+"   \n"
+"   &lt;end-state name=\"done\"/&gt;\n"
+"   \n"
+"&lt;/process-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:578
+#, no-c-format
+msgid ""
+"The <literal>&lt;start-state&gt;</literal> node represents the logical start "
+"of the process. When the process starts, it immediately transitions to the "
+"<literal>todo</literal> node."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:583
+#, no-c-format
+msgid ""
+"The <literal>&lt;task-node&gt;</literal> node represents a <emphasis>wait "
+"state</emphasis>, where business process execution pauses, waiting for one "
+"or more tasks to be performed."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:588
+#, no-c-format
+msgid ""
+"The <literal>&lt;task&gt;</literal> element defines a task to be performed "
+"by a user. Since there is only one task defined on this node, when it is "
+"complete, execution resumes, and we transition to the end state. The task "
+"gets its description from a Seam component named <literal>todoList</literal> "
+"(one of the JavaBeans)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:593
+#, no-c-format
+msgid ""
+"Tasks need to be assigned to a user or group of users when they are created. "
+"In this case, the task is assigned to the current user, which we get from a "
+"built-in Seam component named <literal>actor</literal>. Any Seam component "
+"may be used to perform task assignment."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:598
+#, no-c-format
+msgid ""
+"The <literal>&lt;end-state&gt;</literal> node defines the logical end of the "
+"business process. When execution reaches this node, the process instance is "
+"destroyed."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:605
+#, no-c-format
+msgid ""
+"If we view this process definition using the process definition editor "
+"provided by JBossIDE, this is what it looks like:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:616
+#, no-c-format
+msgid ""
+"This document defines our <emphasis>business process</emphasis> as a graph "
+"of nodes. This is the most trivial possible business process: there is one "
+"<emphasis>task</emphasis> to be performed, and when that task is complete, "
+"the business process ends."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:619
+#, no-c-format
+msgid ""
+"The first JavaBean handles the login screen <literal>login.jsp</literal>. "
+"Its job is just to initialize the jBPM actor id using the <literal>actor</"
+"literal> component. (In a real application, it would also need to "
+"authenticate the user.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:622
+#, no-c-format
+msgid ""
+"@Name(\"login\")\n"
+"public class Login {\n"
+"   \n"
+"   @In\n"
+"   private Actor actor;\n"
+"   \n"
+"   private String user;\n"
+"\n"
+"   public String getUser() {\n"
+"      return user;\n"
+"   }\n"
+"\n"
+"   public void setUser(String user) {\n"
+"      this.user = user;\n"
+"   }\n"
+"   \n"
+"   public String login()\n"
+"   {\n"
+"      actor.setId(user);\n"
+"      return \"/todo.jsp\";\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:623
+#, no-c-format
+msgid ""
+"Here we see the use of <literal>@In</literal> to inject the built-in "
+"<literal>Actor</literal> component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:626
+#, no-c-format
+msgid "The JSP itself is trivial:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:629
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"&#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"&#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Login&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Login&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    &lt;h:form&gt;\n"
+"      &lt;div&gt;\n"
+"        &lt;h:inputText value=\"#{login.user}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Login\" action=\"#{login.login}\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"    &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:630
+#, no-c-format
+msgid ""
+"The second JavaBean is responsible for starting business process instances, "
+"and ending tasks."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:639
+#, no-c-format
+msgid ""
+"@Name(\"todoList\")\n"
+"public class TodoList {\n"
+"   \n"
+"   private String description;\n"
+"   \n"
+"   public String getDescription()\n"
+"   {\n"
+"      return description;\n"
+"   }\n"
+"\n"
+"   public void setDescription(String description) {\n"
+"      this.description = description;\n"
+"   }\n"
+"   \n"
+"   @CreateProcess(definition=\"todo\")\n"
+"   public void createTodo() {}\n"
+"   \n"
+"   @StartTask @EndTask\n"
+"   public void done() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:642
+#, no-c-format
+msgid ""
+"The description property accepts user input form the JSP page, and exposes "
+"it to the process definition, allowing the task description to be set."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:647
+#, no-c-format
+msgid ""
+"The Seam <literal>@CreateProcess</literal> annotation creates a new jBPM "
+"process instance for the named process definition."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:652
+#, no-c-format
+msgid ""
+"The Seam <literal>@StartTask</literal> annotation starts work on a task. The "
+"<literal>@EndTask</literal> ends the task, and allows the business process "
+"execution to resume."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:659
+#, no-c-format
+msgid ""
+"In a more realistic example, <literal>@StartTask</literal> and "
+"<literal>@EndTask</literal> would not appear on the same method, because "
+"there is usually work to be done using the application in order to complete "
+"the task."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:662
+#, no-c-format
+msgid "Finally, the meat of the application is in <literal>todo.jsp</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:665
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://jboss.com/products/seam/taglib\" prefix=\"s\" "
+"&#37;&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Todo List&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Todo List&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"   &lt;h:form id=\"list\"&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:outputText value=\"There are no todo items.\" rendered=\"#"
+"{empty \n"
+"             taskInstanceList}\"/&gt;\n"
+"         &lt;h:dataTable value=\"#{taskInstanceList}\" var=\"task\" rendered="
+"\"#{not empty taskInstanceList}\"&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Description\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.description}\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Created\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:outputText value=\"#{task.taskMgmtInstance."
+"processInstance.start}\"&gt;\n"
+"                    &lt;f:convertDateTime type=\"date\"/&gt;\n"
+"                &lt;/h:outputText&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Priority\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.priority}\" style=\"width: 30"
+"\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Due Date\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.dueDate}\" style=\"width: 100"
+"\"&gt;\n"
+"                    &lt;f:convertDateTime type=\"date\" dateStyle=\"short\"/"
+"&gt;\n"
+"                &lt;/h:inputText&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;s:button value=\"Done\" action=\"#{todoList.done}\" "
+"taskInstance=\"#{task}\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"         &lt;/h:dataTable&gt;\n"
+"      &lt;/div&gt;\n"
+"      &lt;div&gt;\n"
+"      &lt;h:messages/&gt;\n"
+"      &lt;/div&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:commandButton value=\"Update Items\" action=\"update\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"   &lt;h:form id=\"new\"&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:inputText value=\"#{todoList.description}\"/&gt;\n"
+"         &lt;h:commandButton value=\"Create New Item\" action=\"#{todoList."
+"createTodo}\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:666
+#, no-c-format
+msgid "Let's take this one piece at a time."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:669
+#, no-c-format
+msgid ""
+"The page renders a list of tasks, which it gets from a built-in Seam "
+"component named <literal>taskInstanceList</literal>. The list is defined "
+"inside a JSF form."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:672
+#, no-c-format
+msgid ""
+"&lt;h:form id=\"list\"&gt;\n"
+"   &lt;div&gt;\n"
+"      &lt;h:outputText value=\"There are no todo items.\" rendered=\"#{empty "
+"taskInstanceList}\"/&gt;\n"
+"      &lt;h:dataTable value=\"#{taskInstanceList}\" var=\"task\" rendered=\"#"
+"{not empty taskInstanceList}\"&gt;\n"
+"         ...\n"
+"      &lt;/h:dataTable&gt;\n"
+"   &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:673
+#, no-c-format
+msgid ""
+"Each element of the list is an instance of the jBPM class "
+"<literal>TaskInstance</literal>. The following code simply displays the "
+"interesting properties of each task in the list. For the description, "
+"priority and due date, we use input controls, to allow the user to update "
+"these values."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:676
+#, no-c-format
+msgid ""
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"       &lt;h:outputText value=\"Description\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.description}\"/&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Created\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:outputText value=\"#{task.taskMgmtInstance.processInstance.start}"
+"\"&gt;\n"
+"        &lt;f:convertDateTime type=\"date\"/&gt;\n"
+"    &lt;/h:outputText&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Priority\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.priority}\" style=\"width: 30\"/&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Due Date\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.dueDate}\" style=\"width: 100\"&gt;\n"
+"        &lt;f:convertDateTime type=\"date\" dateStyle=\"short\"/&gt;\n"
+"    &lt;/h:inputText&gt;\n"
+"&lt;/h:column&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:677
+#, no-c-format
+msgid ""
+"This button ends the task by calling the action method annotated "
+"<literal>@StartTask @EndTask</literal>. It passes the task id to Seam as a "
+"request parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:680
+#, no-c-format
+msgid ""
+"&lt;h:column&gt;\n"
+"    &lt;s:button value=\"Done\" action=\"#{todoList.done}\" taskInstance=\"#"
+"{task}\"/&gt;\n"
+"&lt;/h:column&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:681
+#, no-c-format
+msgid ""
+"(Note that this is using a Seam <literal>&lt;s:button&gt;</literal> JSF "
+"control from the <literal>seam-ui.jar</literal> package.)"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:684
+#, no-c-format
+msgid ""
+"This button is used to update the properties of the tasks. When the form is "
+"submitted, Seam and jBPM will make any changes to the tasks persistent. "
+"There is no need for any action listener method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:687
+#, no-c-format
+msgid "&lt;h:commandButton value=\"Update Items\" action=\"update\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:688
+#, no-c-format
+msgid ""
+"A second form on the page is used to create new items, by calling the action "
+"method annotated <literal>@CreateProcess</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:691
+#, no-c-format
+msgid ""
+"&lt;h:form id=\"new\"&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:inputText value=\"#{todoList.description}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Create New Item\" action=\"#{todoList."
+"createTodo}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:692
+#, no-c-format
+msgid ""
+"There are several other files needed for the example, but they are just "
+"standard jBPM and Seam configuration and not very interesting."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:699 Tutorial.xml:814 Tutorial.xml:1157 Tutorial.xml:1178
+#: Tutorial.xml:1191
+#, no-c-format
+msgid "TODO"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:707
+#, no-c-format
+msgid "Seam pageflow: the numberguess example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:708
+#, no-c-format
+msgid ""
+"For Seam applications with relatively freeform (ad hoc) navigation, JSF/Seam "
+"navigation rules are a perfectly good way to define the page flow. For "
+"applications with a more constrained style of navigation, especially for "
+"user interfaces which are more stateful, navigation rules make it difficult "
+"to really understand the flow of the system. To understand the flow, you "
+"need to piece it together from the view pages, the actions and the "
+"navigation rules."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:711
+#, no-c-format
+msgid ""
+"Seam allows you to use a jPDL process definition to define pageflow. The "
+"simple number guessing example shows how this is done."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:724
+#, no-c-format
+msgid ""
+"The example is implemented using one JavaBean, three JSP pages and a jPDL "
+"pageflow definition. Let's begin with the pageflow:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:734
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"numberGuess\"&gt;\n"
+"   \n"
+"   &lt;start-page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"          &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"      &lt;/transition&gt;\n"
+"   &lt;/start-page&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess."
+"correctGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateRemainingGuesses\" expression=\"#{numberGuess."
+"lastGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"lose\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"displayGuess\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"lose\" view-id=\"/lose.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:737
+#, no-c-format
+msgid ""
+"The <literal>&lt;page&gt;</literal> element defines a wait state where the "
+"system displays a particular JSF view and waits for user input. The "
+"<literal>view-id</literal> is the same JSF view id used in plain JSF "
+"navigation rules. The <literal>redirect</literal> attribute tells Seam to "
+"use post-then-redirect when navigating to the page. (This results in "
+"friendly browser URLs.)"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:742
+#, no-c-format
+msgid ""
+"The <literal>&lt;transition&gt;</literal> element names a JSF outcome. The "
+"transition is triggered when a JSF action results in that outcome. Execution "
+"will then proceed to the next node of the pageflow graph, after invocation "
+"of any jBPM transition actions."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:747
+#, no-c-format
+msgid ""
+"A transition <literal>&lt;action&gt;</literal> is just like a JSF action, "
+"except that it occurs when a jBPM transition occurs. The transition action "
+"can invoke any Seam component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:752
+#, no-c-format
+msgid ""
+"A <literal>&lt;decision&gt;</literal> node branches the pageflow, and "
+"determines the next node to execute by evaluating a JSF EL expression."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:759
+#, no-c-format
+msgid "Here is what the pageflow looks like in the JBossIDE pageflow editor:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:770
+#, no-c-format
+msgid ""
+"Now that we have seen the pageflow, it is very, very easy to understand the "
+"rest of the application!"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:773
+#, no-c-format
+msgid ""
+"Here is the main page of the application, <literal>numberGuess.jsp</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:776
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"&#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"&#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Guess a number...&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Guess a number...&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    &lt;h:form&gt;\n"
+"        &lt;h:outputText value=\"Higher!\" rendered=\"#{numberGuess."
+"randomNumber&gt;numberGuess.currentGuess}\" /&gt;\n"
+"        &lt;h:outputText value=\"Lower!\" rendered=\"#{numberGuess."
+"randomNumber&lt;numberGuess.currentGuess}\" /&gt;\n"
+"        &lt;br /&gt;\n"
+"        I'm thinking of a number between &lt;h:outputText value=\"#"
+"{numberGuess.smallest}\" /&gt; and \n"
+"        &lt;h:outputText value=\"#{numberGuess.biggest}\" /&gt;. You have \n"
+"        &lt;h:outputText value=\"#{numberGuess.remainingGuesses}\" /&gt; "
+"guesses.\n"
+"        &lt;br /&gt;\n"
+"        Your guess: \n"
+"        &lt;h:inputText value=\"#{numberGuess.currentGuess}\" id=\"guess\" "
+"required=\"true\"&gt;\n"
+"            &lt;f:validateLongRange\n"
+"                maximum=\"#{numberGuess.biggest}\" \n"
+"                minimum=\"#{numberGuess.smallest}\"/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"        &lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"guess"
+"\" /&gt;\n"
+"        &lt;br/&gt;\n"
+"        &lt;h:message for=\"guess\" style=\"color: red\"/&gt;\n"
+"    &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:777
+#, no-c-format
+msgid ""
+"Notice how the command button names the <literal>guess</literal> transition "
+"instead of calling an action directly."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:780
+#, no-c-format
+msgid "The <literal>win.jsp</literal> page is predictable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:783
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"&#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"&#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;You won!&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;You won!&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    Yes, the answer was &lt;h:outputText value=\"#{numberGuess.currentGuess}"
+"\" /&gt;.\n"
+"    It took you &lt;h:outputText value=\"#{numberGuess.guessCount}\" /&gt; "
+"guesses.\n"
+"    Would you like to &lt;a href=\"numberGuess.seam\"&gt;play again&lt;/"
+"a&gt;?\n"
+"  &lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:784
+#, no-c-format
+msgid ""
+"As is <literal>lose.jsp</literal> (which I can't be bothered copy/pasting). "
+"Finally, the JavaBean Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:792
+#, no-c-format
+msgid ""
+"@Name(\"numberGuess\")\n"
+"@Scope(ScopeType.CONVERSATION)\n"
+"public class NumberGuess {\n"
+"   \n"
+"   private int randomNumber;\n"
+"   private Integer currentGuess;\n"
+"   private int biggest;\n"
+"   private int smallest;\n"
+"   private int guessCount;\n"
+"   private int maxGuesses;\n"
+"   \n"
+"   @Create \n"
+"   @Begin(pageflow=\"numberGuess\")\n"
+"   public void begin()\n"
+"   {\n"
+"      randomNumber = new Random().nextInt(100);\n"
+"      guessCount = 0;\n"
+"      biggest = 100;\n"
+"      smallest = 1;\n"
+"   }\n"
+"   \n"
+"   public void setCurrentGuess(Integer guess)\n"
+"   {\n"
+"      this.currentGuess = guess;\n"
+"   }\n"
+"   \n"
+"   public Integer getCurrentGuess()\n"
+"   {\n"
+"      return currentGuess;\n"
+"   }\n"
+"   \n"
+"   public void guess()\n"
+"   {\n"
+"      if (currentGuess&gt;randomNumber)\n"
+"      {\n"
+"         biggest = currentGuess - 1;\n"
+"      }\n"
+"      if (currentGuess&lt;randomNumber)\n"
+"      {\n"
+"         smallest = currentGuess + 1;\n"
+"      }\n"
+"      guessCount ++;\n"
+"   }\n"
+"   \n"
+"   public boolean isCorrectGuess()\n"
+"   {\n"
+"      return currentGuess==randomNumber;\n"
+"   }\n"
+"   \n"
+"   public int getBiggest()\n"
+"   {\n"
+"      return biggest;\n"
+"   }\n"
+"   \n"
+"   public int getSmallest()\n"
+"   {\n"
+"      return smallest;\n"
+"   }\n"
+"   \n"
+"   public int getGuessCount()\n"
+"   {\n"
+"      return guessCount;\n"
+"   }\n"
+"   \n"
+"   public boolean isLastGuess()\n"
+"   {\n"
+"      return guessCount==maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getRemainingGuesses() {\n"
+"      return maxGuesses-guessCount;\n"
+"   }\n"
+"\n"
+"   public void setMaxGuesses(int maxGuesses) {\n"
+"      this.maxGuesses = maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getMaxGuesses() {\n"
+"      return maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getRandomNumber() {\n"
+"      return randomNumber;\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:795
+#, no-c-format
+msgid ""
+"The first time a JSP page asks for a <literal>numberGuess</literal> "
+"component, Seam will create a new one for it, and the <literal>@Create</"
+"literal> method will be invoked, allowing the component to initialize itself."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:800
+#, no-c-format
+msgid ""
+"The <literal>@Begin</literal> annotation starts a Seam "
+"<emphasis>conversation</emphasis> (much more about that later), and "
+"specifies the pageflow definition to use for the conversation's page flow."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:807
+#, no-c-format
+msgid ""
+"As you can see, this Seam component is pure business logic! It doesn't need "
+"to know anything at all about the user interaction flow. This makes the "
+"component potentially more reuseable."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:822
+#, no-c-format
+msgid "A complete Seam application: the Hotel Booking example"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:824
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:825
+#, no-c-format
+msgid ""
+"The booking application is a complete hotel room reservation system "
+"incorporating the following features:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:830
+#, no-c-format
+msgid "User registration"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:835
+#, no-c-format
+msgid "Login"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:840
+#, no-c-format
+msgid "Logout"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:845
+#, no-c-format
+msgid "Set password"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:850
+#, no-c-format
+msgid "Hotel search"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:855
+#, no-c-format
+msgid "Hotel selection"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:860
+#, no-c-format
+msgid "Room reservation"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:865
+#, no-c-format
+msgid "Reservation confirmation"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:870
+#, no-c-format
+msgid "Existing reservation list"
+msgstr ""
+
+#. Tag: screeninfo
+#: Tutorial.xml:875
+#, no-c-format
+msgid "Booking example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:883
+#, no-c-format
+msgid ""
+"The booking application uses JSF, EJB 3.0 and Seam, together with Facelets "
+"for the view. There is also a port of this application to JSF, Facelets, "
+"Seam, JavaBeans and Hibernate3."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:886
+#, no-c-format
+msgid ""
+"One of the things you'll notice if you play with this application for long "
+"enough is that it is extremely <emphasis>robust</emphasis>. You can play "
+"with back buttons and browser refresh and opening multiple windows and "
+"entering nonsensical data as much as you like and you will find it very "
+"difficult to make the application crash. You might think that we spent weeks "
+"testing and fixing bugs to achive this. Actually, this is not the case. Seam "
+"was designed to make it very straightforward to build robust web "
+"applications and a lot of robustness that you are probably used to having to "
+"code yourself comes naturally and automatically with Seam."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:889
+#, no-c-format
+msgid ""
+"As you browse the sourcecode of the example application, and learn how the "
+"application works, observe how the declarative state management and "
+"integrated validation has been used to achieve this robustness."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:895
+#, no-c-format
+msgid "Overview of the booking example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:896
+#, no-c-format
+msgid ""
+"The project structure is identical to the previous one, to install and "
+"deploy this application, please refer to <xref linkend=\"Seam_Tutorial-"
+"Try_the_examples\"/>. Once you've successfully started the application, you "
+"can access it by pointing your browser to <ulink url=\"http://localhost:8080/"
+"seam-booking/\"><literal>http://localhost:8080/seam-booking/</literal></"
+"ulink>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:899
+#, no-c-format
+msgid ""
+"Just ten classes (plus six session beans local interfaces and 1 annotation "
+"interface) where used to implement this application. Six session bean action "
+"listeners contain all the business logic for the listed features."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:904
+#, no-c-format
+msgid ""
+"<literal>BookingListAction</literal> retrieves existing bookings for the "
+"currently logged in user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:907
+#, no-c-format
+msgid ""
+"<literal>ChangePasswordAction</literal> updates the password of the "
+"currently logged in user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:910
+#, no-c-format
+msgid ""
+"<literal>HotelBookingAction</literal> implements the core functionality of "
+"the application: hotel room searching, selection, booking and booking "
+"confirmation. This functionality is implemented as a <emphasis>conversation</"
+"emphasis>, so this is the most interesting class in the application."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:913
+#, no-c-format
+msgid ""
+"<literal>LoginAction</literal> validates the login details and retrieves the "
+"logged in user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:916
+#, no-c-format
+msgid "<literal>LogoutAction</literal> ends the login session."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:919
+#, no-c-format
+msgid "<literal>RegisterAction</literal> registers a new system user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:922
+#, no-c-format
+msgid "Three entity beans implement the application's persistent domain model."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:927
+#, no-c-format
+msgid "<literal>Hotel</literal> is an entity bean that represent a hotel"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:930
+#, no-c-format
+msgid ""
+"<literal>Booking</literal> is an entity bean that represents an existing "
+"booking"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:933
+#, no-c-format
+msgid ""
+"<literal>User</literal> is an entity bean to represents a user who can make "
+"hotel bookings"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:936
+#, no-c-format
+msgid ""
+"Finally, the <literal>LoggedIn</literal> annotation and the "
+"<literal>LoggedInInterceptor</literal> are used to protect actions that "
+"require a logged in user."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:942
+#, no-c-format
+msgid "Understanding Seam conversations"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:943
+#, no-c-format
+msgid ""
+"We encourage you browse the sourcecode at your pleasure. In this tutorial "
+"we'll concentrate upon one particular piece of functionality: hotel search, "
+"selection, booking and confirmation. From the point of view of the user, "
+"everything from selecting a hotel to confirming a booking is one continuous "
+"unit of work, a <emphasis>conversation</emphasis>. Searching, however, is "
+"<emphasis>not</emphasis> part of the conversation. The user can select "
+"multiple hotels from the same search results page, in different browser tabs."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:946
+#, no-c-format
+msgid ""
+"Most web application architectures have no first class construct to "
+"represent a conversation. This causes enormous problems managing state "
+"associated with the conversation. Usually, Java web applications use a "
+"combination of two techniques: first, some state is thrown into the "
+"<literal>HttpSession</literal>; second, persistable state is flushed to the "
+"database after every request, and reconstructed from the database at the "
+"beginning of each new request."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:949
+#, no-c-format
+msgid ""
+"Since the database is the least scalable tier, this often results in an "
+"utterly unacceptable lack of scalability. Added latency is also a problem, "
+"due to the extra traffic to and from the database on every request. To "
+"reduce this redundant traffic, Java applications often introduce a data "
+"(second-level) cache that keeps commonly accessed data between requests. "
+"This cache is necessarily inefficient, because invalidation is based upon an "
+"LRU policy instead of being based upon when the user has finished working "
+"with the data. Furthermore, because the cache is shared between many "
+"concurrent transactions, we've introduced a whole raft of problem's "
+"associated with keeping the cached state consistent with the database."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:952
+#, no-c-format
+msgid ""
+"Now consider the state held in the <literal>HttpSession</literal>. By very "
+"careful programming, we might be able to control the size of the session "
+"data. This is a lot more difficult than it sounds, since web browsers permit "
+"ad hoc non-linear navigation. But suppose we suddenly discover a system "
+"requirement that says that a user is allowed to have <emphasis>mutiple "
+"concurrent conversations</emphasis>, halfway through the development of the "
+"system (this has happened to me). Developing mechanisms to isolate session "
+"state associated with different concurrent conversations, and incorporating "
+"failsafes to ensure that conversation state is destroyed when the user "
+"aborts one of the conversations by closing a browser window or tab is not "
+"for the faint hearted (I've implemented this stuff twice so far, once for a "
+"client application, once for Seam, but I'm famously psychotic)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:955
+#, no-c-format
+msgid "Now there is a better way."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:958
+#, no-c-format
+msgid ""
+"Seam introduces the <emphasis>conversation context</emphasis> as a first "
+"class construct. You can safely keep conversational state in this context, "
+"and be assured that it will have a well-defined lifecycle. Even better, you "
+"won't need to be continually pushing data back and forth between the "
+"application server and the database, since the conversation context is a "
+"natural cache of data that the user is currently working with."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:961
+#, no-c-format
+msgid ""
+"Usually, the components we keep in the conversation context are stateful "
+"session beans. (We can also keep entity beans and JavaBeans in the "
+"conversation context.) There is an ancient canard in the Java community that "
+"stateful session beans are a scalability killer. This may have been true in "
+"1998 when WebFoobar 1.0 was released. It is no longer true today. "
+"Application servers like JBoss 4.0 have extremely sophisticated mechanisms "
+"for stateful session bean state replication. (For example, the JBoss EJB3 "
+"container performs fine-grained replication, replicating only those bean "
+"attribute values which actually changed.) Note that all the traditional "
+"technical arguments for why stateful beans are inefficient apply equally to "
+"the <literal>HttpSession</literal>, so the practice of shifting state from "
+"business tier stateful session bean components to the web session to try and "
+"improve performance is unbelievably misguided. It is certainly possible to "
+"write unscalable applications using stateful session beans, by using "
+"stateful beans incorrectly, or by using them for the wrong thing. But that "
+"doesn't mean you should <emphasis>never</emphasis> use them. Anyway, Seam "
+"guides you toward a safe usage model. Welcome to 2005."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:964
+#, no-c-format
+msgid "OK, I'll stop ranting now, and get back to the tutorial."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:967
+#, no-c-format
+msgid ""
+"The booking example application shows how stateful components with different "
+"scopes can collaborate together to achieve complex behaviors. The main page "
+"of the booking application allows the user to search for hotels. The search "
+"results are kept in the Seam session scope. When the user navigates to one "
+"of these hotels, a conversation begins, and a conversation scoped component "
+"calls back to the session scoped component to retrieve the selected hotel."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:970
+#, no-c-format
+msgid ""
+"The booking example also demonstrates the use of Ajax4JSF to implement rich "
+"client behavior without the use of handwritten JavaScript."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:973
+#, no-c-format
+msgid ""
+"The search functionality is implemented using a session-scope stateful "
+"session bean, similar to the one we saw in the message list example above."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:983
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"hotelSearch\")\n"
+"@Scope(ScopeType.SESSION)\n"
+"@LoggedIn\n"
+"public class HotelSearchingAction implements HotelSearching\n"
+"{\n"
+"   \n"
+"   @PersistenceContext\n"
+"   private EntityManager em;\n"
+"   \n"
+"   private String searchString;\n"
+"   private int pageSize = 10;\n"
+"   private int page;\n"
+"   \n"
+"   @DataModel\n"
+"   private List&lt;Hotel&gt; hotels;\n"
+"   \n"
+"   public String find()\n"
+"   {\n"
+"      page = 0;\n"
+"      queryHotels();   \n"
+"      return \"main\";\n"
+"   }\n"
+"\n"
+"   public String nextPage()\n"
+"   {\n"
+"      page++;\n"
+"      queryHotels();\n"
+"      return \"main\";\n"
+"   }\n"
+"      \n"
+"   private void queryHotels()\n"
+"   {\n"
+"      String searchPattern = searchString==null ? \"&#37;\" : '&#37;' + \n"
+"          searchString.toLowerCase().replace('*', '&#37;') + '&#37;';\n"
+"      hotels = em.createQuery(\"select h from Hotel h where lower(h.name) "
+"like\n"
+"          :search or lower(h.city) like :search \n"
+"          or lower(h.zip) like :search or lower(h.address) like :search\")\n"
+"            .setParameter(\"search\", searchPattern)\n"
+"            .setMaxResults(pageSize)\n"
+"            .setFirstResult( page * pageSize )\n"
+"            .getResultList();\n"
+"   }\n"
+"   \n"
+"   public boolean isNextPageAvailable()\n"
+"   {\n"
+"      return hotels!=null &amp;&amp; hotels.size()==pageSize;\n"
+"   }\n"
+"   \n"
+"   public int getPageSize() {\n"
+"      return pageSize;\n"
+"   }\n"
+"\n"
+"   public void setPageSize(int pageSize) {\n"
+"      this.pageSize = pageSize;\n"
+"   }\n"
+"\n"
+"   public String getSearchString()\n"
+"   {\n"
+"      return searchString;\n"
+"   }\n"
+"\n"
+"   public void setSearchString(String searchString)\n"
+"   {\n"
+"      this.searchString = searchString;\n"
+"   }\n"
+"   \n"
+"   @Destroy @Remove\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:986
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Stateful</literal> annotation identifies this "
+"class as a stateful session bean. Stateful session beans are scoped to the "
+"conversation context by default."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:991
+#, no-c-format
+msgid ""
+"The <literal>@LoggedIn</literal> annotation applies a custom Seam "
+"interceptor to the component. This works because <literal>@LoggedIn</"
+"literal> is marked with an <literal>@Interceptor</literal> meta-annotation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:996
+#, no-c-format
+msgid ""
+"The <link linkend=\"datamodel-annotation\"><literal>@DataModel</literal></"
+"link> annotation exposes a <literal>List</literal> as a JSF "
+"<literal>ListDataModel</literal>. This makes it easy to implement clickable "
+"lists for search screens. In this case, the list of hotels is exposed to the "
+"page as a <literal>ListDataModel</literal> in the conversation variable "
+"named <literal>hotels</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1001
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Remove</literal> annotation specifies that a "
+"stateful session bean should be removed and its state destroyed after "
+"invocation of the annotated method. In Seam, all stateful session beans "
+"should define a method marked <literal>@Destroy @Remove</literal>. This is "
+"the EJB remove method that will be called when Seam destroys the session "
+"context. Actually, the <link linkend=\"destroy-annotation"
+"\"><literal>@Destroy</literal></link> annotation is of more general "
+"usefulness, since it can be used for any kind of cleanup that should happen "
+"when any Seam context ends. If you don't have an <literal>@Destroy @Remove</"
+"literal> method, state will leak and you will suffer performance problems."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1008
+#, no-c-format
+msgid ""
+"The main page of the application is a Facelets page. Let's look at the "
+"fragment which relates to searching for hotels:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1018
+#, no-c-format
+msgid ""
+"&lt;div class=\"section\"&gt;\n"
+"&lt;h:form&gt;\n"
+"  \n"
+"  &lt;span class=\"errors\"&gt;\n"
+"    &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"  &lt;/span&gt;\n"
+"    \n"
+"  &lt;h1&gt;Search Hotels&lt;/h1&gt;\n"
+"  &lt;fieldset&gt; \n"
+"     &lt;h:inputText value=\"#{hotelSearch.searchString}\" style=\"width: "
+"165px;\"&gt;\n"
+"        &lt;a:support event=\"onkeyup\" actionListener=\"#{hotelSearch.find}"
+"\" \n"
+"                   reRender=\"searchResults\" /&gt;\n"
+"     &lt;/h:inputText&gt;\n"
+"     &amp;#160;\n"
+"     &lt;a:commandButton value=\"Find Hotels\" action=\"#{hotelSearch.find}"
+"\" \n"
+"                      styleClass=\"button\" reRender=\"searchResults\"/&gt;\n"
+"     &amp;#160;\n"
+"     &lt;a:status&gt;\n"
+"        &lt;f:facet name=\"start\"&gt;\n"
+"           &lt;h:graphicImage value=\"/img/spinner.gif\"/&gt;\n"
+"        &lt;/f:facet&gt;\n"
+"     &lt;/a:status&gt;\n"
+"     &lt;br/&gt;\n"
+"     &lt;h:outputLabel for=\"pageSize\"&gt;Maximum results:&lt;/h:"
+"outputLabel&gt;&amp;#160;\n"
+"     &lt;h:selectOneMenu value=\"#{hotelSearch.pageSize}\" id=\"pageSize"
+"\"&gt;\n"
+"        &lt;f:selectItem itemLabel=\"5\" itemValue=\"5\"/&gt;\n"
+"        &lt;f:selectItem itemLabel=\"10\" itemValue=\"10\"/&gt;\n"
+"        &lt;f:selectItem itemLabel=\"20\" itemValue=\"20\"/&gt;\n"
+"     &lt;/h:selectOneMenu&gt;\n"
+"  &lt;/fieldset&gt;\n"
+"    \n"
+"&lt;/h:form&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;a:outputPanel id=\"searchResults\"&gt;\n"
+"  &lt;div class=\"section\"&gt;\n"
+"  &lt;h:outputText value=\"No Hotels Found\" \n"
+"                rendered=\"#{hotels != null and hotels.rowCount==0}\"/&gt;\n"
+"  &lt;h:dataTable value=\"#{hotels}\" var=\"hot\" rendered=\"#{hotels."
+"rowCount&gt;0}\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Name&lt;/f:facet&gt;\n"
+"      #{hot.name}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Address&lt;/f:facet&gt;\n"
+"      #{hot.address}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;City, State&lt;/f:facet&gt;\n"
+"      #{hot.city}, #{hot.state}, #{hot.country}\n"
+"    &lt;/h:column&gt; \n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Zip&lt;/f:facet&gt;\n"
+"      #{hot.zip}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"      &lt;s:link value=\"View Hotel\" action=\"#{hotelBooking.selectHotel"
+"(hot)}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"  &lt;/h:dataTable&gt;\n"
+"  &lt;s:link value=\"More results\" action=\"#{hotelSearch.nextPage}\" \n"
+"          rendered=\"#{hotelSearch.nextPageAvailable}\"/&gt;\n"
+"  &lt;/div&gt;\n"
+"&lt;/a:outputPanel&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1021
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:support&gt;</literal> tag allows a JSF action "
+"event listener to be called by asynchronous <literal>XMLHttpRequest</"
+"literal> when a JavaScript event like <literal>onkeyup</literal> occurs. "
+"Even better, the <literal>reRender</literal> attribute lets us render a "
+"fragment of the JSF page and perform a partial page update when the "
+"asynchronous response is received."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1026
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:status&gt;</literal> tag lets us display a "
+"cheesy annimated image while we wait for asynchronous requests to return."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1031
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:outputPanel&gt;</literal> tag defines a region "
+"of the page which can be re-rendered by an asynchronous request."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1036
+#, no-c-format
+msgid ""
+"The Seam <literal>&lt;s:link&gt;</literal> tag lets us attach a JSF action "
+"listener to an ordinary (non-JavaScript) HTML link. The advantage of this "
+"over the standard JSF <literal>&lt;h:commandLink&gt;</literal> is that it "
+"preserves the operation of \"open in new window\" and \"open in new tab\". "
+"Also notice that we use a method binding with a parameter: <literal>#"
+"{hotelBooking.selectHotel(hot)}</literal>. This is not possible in the "
+"standard Unified EL, but Seam provides an extension to the EL that lets you "
+"use parameters on any method binding expression."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1043
+#, no-c-format
+msgid ""
+"This page displays the search results dynamically as we type, and lets us "
+"choose a hotel and pass it to the <literal>selectHotel()</literal> method of "
+"the <literal>HotelBookingAction</literal>, which is where the "
+"<emphasis>really</emphasis> interesting stuff is going to happen."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1046
+#, no-c-format
+msgid ""
+"Now lets see how the booking example application uses a conversation-scoped "
+"stateful session bean to achieve a natural cache of persistent data related "
+"to the conversation. The following code example is pretty long. But if you "
+"think of it as a list of scripted actions that implement the various steps "
+"of the conversation, it's understandable. Read the class from top to bottom, "
+"as if it were a story."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1057
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"hotelBooking\")\n"
+"@LoggedIn\n"
+"public class HotelBookingAction implements HotelBooking\n"
+"{\n"
+"   \n"
+"   @PersistenceContext(type=EXTENDED)\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @In \n"
+"   private User user;\n"
+"   \n"
+"   @In(required=false) @Out\n"
+"   private Hotel hotel;\n"
+"   \n"
+"   @In(required=false) \n"
+"   @Out(required=false)\n"
+"   private Booking booking;\n"
+"     \n"
+"   @In\n"
+"   private FacesMessages facesMessages;\n"
+"      \n"
+"   @In\n"
+"   private Events events;\n"
+"   \n"
+"   @Logger \n"
+"   private Log log;\n"
+"   \n"
+"   @Begin\n"
+"   public String selectHotel(Hotel selectedHotel)\n"
+"   {\n"
+"      hotel = em.merge(selectedHotel);\n"
+"      return \"hotel\";\n"
+"   }\n"
+"   \n"
+"   public String bookHotel()\n"
+"   {      \n"
+"      booking = new Booking(hotel, user);\n"
+"      Calendar calendar = Calendar.getInstance();\n"
+"      booking.setCheckinDate( calendar.getTime() );\n"
+"      calendar.add(Calendar.DAY_OF_MONTH, 1);\n"
+"      booking.setCheckoutDate( calendar.getTime() );\n"
+"      \n"
+"      return \"book\";\n"
+"   }\n"
+"\n"
+"   public String setBookingDetails()\n"
+"   {\n"
+"      if (booking==null || hotel==null) return \"main\";\n"
+"      if ( !booking.getCheckinDate().before( booking.getCheckoutDate() ) )\n"
+"      {\n"
+"         facesMessages.add(\"Check out date must be later than check in date"
+"\");\n"
+"         return null;\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return \"confirm\";\n"
+"      }\n"
+"   }\n"
+"\n"
+"   @End\n"
+"   public String confirm()\n"
+"   {\n"
+"      if (booking==null || hotel==null) return \"main\";\n"
+"      em.persist(booking);\n"
+"      facesMessages.add\n"
+"          (\"Thank you, #{user.name}, your confimation number for #{hotel."
+"name} is #{booking.id}\");\n"
+"      log.info(\"New booking: #{booking.id} for #{user.username}\");\n"
+"      events.raiseEvent(\"bookingConfirmed\");\n"
+"      return \"confirmed\";\n"
+"   }\n"
+"   \n"
+"   @End\n"
+"   public String cancel()\n"
+"   {\n"
+"      return \"main\";\n"
+"   }\n"
+"   \n"
+"   @Destroy @Remove\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1060
+#, no-c-format
+msgid ""
+"This bean uses an EJB3 <emphasis>extended persistence context</emphasis>, so "
+"that any entity instances remain managed for the whole lifecycle of the "
+"stateful session bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1065
+#, no-c-format
+msgid ""
+"The <link linkend=\"out-annotation\"><literal>@Out</literal></link> "
+"annotation declares that an attribute value is <emphasis>outjected</"
+"emphasis> to a context variable after method invocations. In this case, the "
+"context variable named <literal>hotel</literal> will be set to the value of "
+"the <literal>hotel</literal> instance variable after every action listener "
+"invocation completes."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1070
+#, no-c-format
+msgid ""
+"The <link linkend=\"begin-annotation\"><literal>@Begin</literal></link> "
+"annotation specifies that the annotated method begins a <emphasis>long-"
+"running conversation</emphasis>, so the current conversation context will "
+"not be destroyed at the end of the request. Instead, it will be reassociated "
+"with every request from the current window, and destroyed either by timeout "
+"due to conversation inactivity or invocation of a matching <literal>@End</"
+"literal> method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1075
+#, no-c-format
+msgid ""
+"The <link linkend=\"end-annotation\"><literal>@End</literal></link> "
+"annotation specifies that the annotated method ends the current long-running "
+"conversation, so the current conversation context will be destroyed at the "
+"end of the request."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1080
+#, no-c-format
+msgid ""
+"This EJB remove method will be called when Seam destroys the conversation "
+"context. Don't ever forget to define this method!"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1087
+#, no-c-format
+msgid ""
+"<literal>HotelBookingAction</literal> contains all the action listener "
+"methods that implement selection, booking and booking confirmation, and "
+"holds state related to this work in its instance variables. We think you'll "
+"agree that this code is much cleaner and simpler than getting and setting "
+"<literal>HttpSession</literal> attributes."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1090
+#, no-c-format
+msgid ""
+"Even better, a user can have multiple isolated conversations per login "
+"session. Try it! Log in, run a search, and navigate to different hotel pages "
+"in multiple browser tabs. You'll be able to work on creating two different "
+"hotel reservations at the same time. If you leave any one conversation "
+"inactive for long enough, Seam will eventually time out that conversation "
+"and destroy its state. If, after ending a conversation, you backbutton to a "
+"page of that conversation and try to perform an action, Seam will detect "
+"that the conversation was already ended, and redirect you to the search page."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1096
+#, no-c-format
+msgid "The Seam UI control library"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1097
+#, no-c-format
+msgid ""
+"If you check inside the WAR file for the booking application, you'll find "
+"<literal>seam-ui.jar</literal> in the <literal>WEB-INF/lib</literal> "
+"directory. This package contains a number of JSF custom controls that "
+"integrate with Seam. The booking application uses the <literal>&lt;s:link&gt;"
+"</literal> control for navigation from the search screen to the hotel page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1100
+#, no-c-format
+msgid ""
+"&lt;s:link value=\"View Hotel\" action=\"#{hotelBooking.selectHotel}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1101
+#, no-c-format
+msgid ""
+"The use of <literal>&lt;s:link&gt;</literal> here allows us to attach an "
+"action listener to a HTML link without breaking the browser's \"open in new "
+"window\" feature. The standard JSF <literal>&lt;h:commandLink&gt;</literal> "
+"does not work with \"open in new window\". We'll see later that <literal>&lt;"
+"s:link&gt;</literal> also offers a number of other useful features, "
+"including conversation propagation rules."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1104
+#, no-c-format
+msgid ""
+"The booking application uses some other Seam and Ajax4JSF controls, "
+"especially on the <literal>/book.xhtml</literal> page. We won't get into the "
+"details of those controls here, but if you want to understand this code, "
+"please refer to the chapter covering Seam's functionality for JSF form "
+"validation."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1110
+#, no-c-format
+msgid "The Seam Debug Page"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1111
+#, no-c-format
+msgid ""
+"The WAR also includes <literal>seam-debug.jar</literal>. If this jar is "
+"deployed in <literal>WEB-INF/lib</literal>, along with the Facelets, and if "
+"you set the following Seam property in <literal>web.xml</literal> or "
+"<literal>seam.properties</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1114
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;org.jboss.seam.core.init.debug&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;true&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1115
+#, no-c-format
+msgid ""
+"Then the Seam debug page will be available. This page lets you browse and "
+"inspect the Seam components in any of the Seam contexts associated with your "
+"current login session. Just point your browser at <ulink url=\"http://"
+"localhost:8080/seam-booking/debug.seam\"><literal>http://localhost:8080/seam-"
+"booking/debug.seam</literal></ulink>."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1131
+#, no-c-format
+msgid "A complete application featuring Seam and jBPM: the DVD Store example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1132
+#, no-c-format
+msgid ""
+"The DVD Store demo application shows the practical usage of jBPM for both "
+"task management and pageflow."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1135
+#, no-c-format
+msgid ""
+"The user screens take advantage of a jPDL pageflow to implement searching "
+"and shopping cart functionality."
+msgstr ""
+
+#. Tag: screeninfo
+#: Tutorial.xml:1138 Tutorial.xml:1149 Tutorial.xml:1170
+#, no-c-format
+msgid "DVD Store example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1146
+#, no-c-format
+msgid ""
+"The administration screens take use jBPM to manage the approval and shipping "
+"cycle for orders. The business process may even be changed dynamically, by "
+"selecting a different process definition!"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1160
+#, no-c-format
+msgid "Look in the <literal>dvdstore</literal> directory."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1166
+#, no-c-format
+msgid ""
+"A complete application featuring Seam workspace management: the Issue "
+"Tracker example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1167
+#, no-c-format
+msgid ""
+"The Issue Tracker demo shows off Seam's workspace management functionality: "
+"the conversation switcher, conversation list and breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1181
+#, no-c-format
+msgid "Look in the <literal>issues</literal> directory."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1187
+#, no-c-format
+msgid "An example of Seam with Hibernate: the Hibernate Booking example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1188
+#, no-c-format
+msgid ""
+"The Hibernate Booking demo is a straight port of the Booking demo to an "
+"alternative architecture that uses Hibernate for persistence and JavaBeans "
+"instead of session beans."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1194
+#, no-c-format
+msgid "Look in the <literal>hibernate</literal> directory."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1200
+#, no-c-format
+msgid "A RESTful Seam application: the Blog example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1201
+#, no-c-format
+msgid ""
+"Seam makes it very easy to implement applications which keep state on the "
+"server-side. However, server-side state is not always appropriate, "
+"especially in for functionality that serves up <emphasis>content</emphasis>. "
+"For this kind of problem we often need to let the user bookmark pages and "
+"have a relatively stateless server, so that any page can be accessed at any "
+"time, via the bookmark. The Blog example shows how to a implement RESTful "
+"application using Seam. Every page of the application can be bookmarked, "
+"including the search results page."
+msgstr ""
+
+#. Tag: screeninfo
+#: Tutorial.xml:1204
+#, no-c-format
+msgid "Blog example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1212
+#, no-c-format
+msgid ""
+"The Blog example demonstrates the use of \"pull\"-style MVC, where instead "
+"of using action listener methods to retrieve data and prepare the data for "
+"the view, the view pulls data from components as it is being rendered."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1216
+#, no-c-format
+msgid "Using \"pull\"-style MVC"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1217
+#, no-c-format
+msgid ""
+"This snippet from the <literal>index.xhtml</literal> facelets page displays "
+"a list of recent blog entries:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1220
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{blog.recentBlogEntries}\" var=\"blogEntry\" rows="
+"\"3\"&gt;\n"
+"   &lt;h:column&gt;\n"
+"      &lt;div class=\"blogEntry\"&gt;\n"
+"         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"         &lt;div&gt;\n"
+"            &lt;h:outputText escape=\"false\" \n"
+"                  value=\"#{blogEntry.excerpt==null ? blogEntry.body : "
+"blogEntry.excerpt}\"/&gt;\n"
+"         &lt;/div&gt;\n"
+"         &lt;p&gt;\n"
+"            &lt;h:outputLink value=\"entry.seam\" rendered=\"#{blogEntry."
+"excerpt!=null}\"&gt;\n"
+"               &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/"
+"&gt;\n"
+"               Read more...\n"
+"            &lt;/h:outputLink&gt;\n"
+"         &lt;/p&gt;\n"
+"         &lt;p&gt;\n"
+"            [Posted on \n"
+"            &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"               &lt;f:convertDateTime timeZone=\"#{blog.timeZone}\" locale=\"#"
+"{blog.locale}\" \n"
+"                   type=\"both\"/&gt;\n"
+"            &lt;/h:outputText&gt;]\n"
+"            &amp;#160;\n"
+"            &lt;h:outputLink value=\"entry.seam\"&gt;[Link]\n"
+"               &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/"
+"&gt;\n"
+"            &lt;/h:outputLink&gt;\n"
+"         &lt;/p&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1221
+#, no-c-format
+msgid ""
+"If we navigate to this page from a bookmark, how does the data used by the "
+"<literal>&lt;h:dataTable&gt;</literal> actually get initialized? Well, what "
+"happens is that the <literal>Blog</literal> is retrieved lazily&mdash;"
+"\"pulled\"&mdash;when needed, by a Seam component named <literal>blog</"
+"literal>. This is the opposite flow of control to what is usual in "
+"traditional web action-based frameworks like Struts."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1229
+#, no-c-format
+msgid ""
+"@Name(\"blog\")\n"
+"@Scope(ScopeType.STATELESS)\n"
+"public class BlogService \n"
+"{\n"
+"   \n"
+"   @In\n"
+"   private EntityManager entityManager;\n"
+"  \n"
+"   @Unwrap\n"
+"   public Blog getBlog()\n"
+"   {\n"
+"      return (Blog) entityManager.createQuery(\"from Blog b left join fetch "
+"b.blogEntries\")\n"
+"            .setHint(\"org.hibernate.cacheable\", true)\n"
+"            .getSingleResult();\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1232
+#, no-c-format
+msgid ""
+"This component uses a <emphasis>seam-managed persistence context</emphasis>. "
+"Unlike the other examples we've seen, this persistence context is managed by "
+"Seam, instead of by the EJB3 container. The persistence context spans the "
+"entire web request, allowing us to avoid any exceptions that occur when "
+"accessing unfetched associations in the view."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1237
+#, no-c-format
+msgid ""
+"The <literal>@Unwrap</literal> annotation tells Seam to provide the return "
+"value of the method&mdash;the <literal>Blog</literal>&mdash;instead of the "
+"actual <literal>BlogService</literal> component to clients. This is the Seam "
+"<emphasis>manager component pattern</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1244
+#, no-c-format
+msgid ""
+"This is good so far, but what about bookmarking the result of form "
+"submissions, such as a search results page?"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1250
+#, no-c-format
+msgid "Bookmarkable search results page"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1251
+#, no-c-format
+msgid ""
+"The blog example has a tiny form in the top right of each page that allows "
+"the user to search for blog entries. This is defined in a file, "
+"<literal>menu.xhtml</literal>, included by the facelets template, "
+"<literal>template.xhtml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1254
+#, no-c-format
+msgid ""
+"&lt;div id=\"search\"&gt;\n"
+"   &lt;h:form&gt;\n"
+"      &lt;h:inputText value=\"#{searchAction.searchPattern}\"/&gt;\n"
+"      &lt;h:commandButton value=\"Search\" action=\"/search.xhtml\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1255
+#, no-c-format
+msgid ""
+"To implement a bookmarkable search results page, we need to perform a "
+"browser redirect after processing the search form submission. Because we "
+"used the JSF view id as the action outcome, Seam automatically redirects to "
+"the view id when the form is submitted. Alternatively, we could have defined "
+"a navigation rule like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1258
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"   &lt;navigation-case&gt;\n"
+"      &lt;from-outcome&gt;searchResults&lt;/from-outcome&gt;\n"
+"      &lt;to-view-id&gt;/search.xhtml&lt;/to-view-id&gt;\n"
+"      &lt;redirect/&gt;\n"
+"   &lt;/navigation-case&gt;\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1259
+#, no-c-format
+msgid "Then the form would have looked like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1262
+#, no-c-format
+msgid ""
+"&lt;div id=\"search\"&gt;\n"
+"   &lt;h:form&gt;\n"
+"      &lt;h:inputText value=\"#{searchAction.searchPattern}\"/&gt;\n"
+"      &lt;h:commandButton value=\"Search\" action=\"searchResults\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1263
+#, no-c-format
+msgid ""
+"But when we redirect, we need to include the values submitted with the form "
+"as request parameters, to get a bookmarkable URL like <literal>http://"
+"localhost:8080/seam-blog/search.seam?searchPattern=seam</literal>. JSF does "
+"not provide an easy way to do this, but Seam does. We use a Seam "
+"<emphasis>page parameter</emphasis>, defined in <literal>WEB-INF/pages.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1266
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   &lt;page view-id=\"/search.xhtml\"&gt;\n"
+"      &lt;param name=\"searchPattern\" value=\"#{searchService.searchPattern}"
+"\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1267
+#, no-c-format
+msgid ""
+"This tells Seam to include the value of <literal>#{searchService."
+"searchPattern}</literal> as a request parameter named "
+"<literal>searchPattern</literal> when redirecting to the page, and then re-"
+"apply the value of that parameter to the model before rendering the page."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1270
+#, no-c-format
+msgid "The redirect takes us to the <literal>search.xhtml</literal> page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1273
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{searchResults}\" var=\"blogEntry\"&gt;\n"
+"   &lt;h:column&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:outputLink value=\"entry.seam\"&gt;\n"
+"            &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"            #{blogEntry.title}\n"
+"         &lt;/h:outputLink&gt;\n"
+"         posted on \n"
+"         &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"            &lt;f:convertDateTime timeZone=\"#{blog.timeZone}\" locale=\"#"
+"{blog.locale}\" type=\"both\"/&gt;\n"
+"         &lt;/h:outputText&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1274
+#, no-c-format
+msgid ""
+"Which again uses \"pull\"-style MVC to retrieve the actual search results:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1277
+#, no-c-format
+msgid ""
+"@Name(\"searchService\")\n"
+"public class SearchService \n"
+"{\n"
+"   \n"
+"   @In\n"
+"   private EntityManager entityManager;\n"
+"   \n"
+"   private String searchPattern;\n"
+"   \n"
+"   @Factory(\"searchResults\")\n"
+"   public List&lt;BlogEntry&gt; getSearchResults()\n"
+"   {\n"
+"      if (searchPattern==null)\n"
+"      {\n"
+"         return null;\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return entityManager.createQuery(\"select be from BlogEntry be "
+"where lower(be.title)\n"
+"             like :searchPattern or lower(be.body) like :searchPattern \n"
+"             order by be.date desc\")\n"
+"               .setParameter( \"searchPattern\", getSqlSearchPattern() )\n"
+"               .setMaxResults(100)\n"
+"               .getResultList();\n"
+"      }\n"
+"   }\n"
+"\n"
+"   private String getSqlSearchPattern()\n"
+"   {\n"
+"      return searchPattern==null ? \"\" : '&#37;' + \n"
+"          searchPattern.toLowerCase().replace('*', '&#37;').replace('?', "
+"'_') + '&#37;';\n"
+"   }\n"
+"\n"
+"   public String getSearchPattern()\n"
+"   {\n"
+"      return searchPattern;\n"
+"   }\n"
+"\n"
+"   public void setSearchPattern(String searchPattern)\n"
+"   {\n"
+"      this.searchPattern = searchPattern;\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1282
+#, no-c-format
+msgid "Using \"push\"-style MVC in a RESTful application"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1283
+#, no-c-format
+msgid ""
+"Very occasionally, it makes more sense to use push-style MVC for processing "
+"RESTful pages, and so Seam provides the notion of a <emphasis>page action</"
+"emphasis>. The Blog example uses a page action for the blog entry page, "
+"<literal>entry.xhtml</literal>. Note that this is a little bit contrived, it "
+"would have been easier to use pull-style MVC here as well."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1286
+#, no-c-format
+msgid ""
+"The <literal>entryAction</literal> component works much like an action class "
+"in a traditional push-MVC action-oriented framework like Struts:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1289
+#, no-c-format
+msgid ""
+"@Name(\"entryAction\")\n"
+"@Scope(STATELESS)\n"
+"public class EntryAction\n"
+"{\n"
+"   @In(create=true) \n"
+"   private Blog blog;\n"
+"   \n"
+"   @Out\n"
+"   private BlogEntry blogEntry;\n"
+"   \n"
+"   public void loadBlogEntry(String id) throws EntryNotFoundException\n"
+"   {\n"
+"      blogEntry = blog.getBlogEntry(id);\n"
+"      if (blogEntry==null) throw new EntryNotFoundException(id);\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1290
+#, no-c-format
+msgid "Page actions are also declared in <literal>pages.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1293
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   ...\n"
+"\n"
+"   &lt;page view-id=\"/entry.xhtml\" action=\"#{entryAction.loadBlogEntry"
+"(blogEntry.id)}\"&gt;\n"
+"      &lt;param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"\n"
+"   &lt;page view-id=\"/post.xhtml\" action=\"#{loginAction.challenge}\"/"
+"&gt;\n"
+"\n"
+"   &lt;page view-id=\"*\" action=\"#{blog.hitCount.hit}\"/&gt;\n"
+"\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1294
+#, no-c-format
+msgid ""
+"Notice that the example is using page actions for some other "
+"functionality&mdash;the login challenge, and the pageview counter. Also "
+"notice the use of a parameter in the page action method binding. This is not "
+"a standard feature of JSF EL, but Seam lets you use it, not just for page "
+"actions, but also in JSF method bindings."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1297
+#, no-c-format
+msgid ""
+"When the <literal>entry.xhtml</literal> page is requested, Seam first binds "
+"the page parameter <literal>blogEntryId</literal> to the model, then runs "
+"the page action, which retrieves the needed data&mdash;the "
+"<literal>blogEntry</literal>&mdash;and places it in the Seam event context. "
+"Finally, the following is rendered:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1300
+#, no-c-format
+msgid ""
+"&lt;div class=\"blogEntry\"&gt;\n"
+"   &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"   &lt;div&gt;\n"
+"      &lt;h:outputText escape=\"false\" value=\"#{blogEntry.body}\"/&gt;\n"
+"   &lt;/div&gt;\n"
+"   &lt;p&gt;\n"
+"      [Posted on&amp;#160;\n"
+"      &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"         &lt;f:convertDateTime timezone=\"#{blog.timeZone}\" locale=\"#{blog."
+"locale}\" type=\"both\"/&gt;\n"
+"      &lt;/h:outputText&gt;]\n"
+"   &lt;/p&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1301
+#, no-c-format
+msgid ""
+"If the blog entry is not found in the database, the "
+"<literal>EntryNotFoundException</literal> exception is thrown. We want this "
+"exception to result in a 404 error, not a 505, so we annotate the exception "
+"class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1304
+#, no-c-format
+msgid ""
+"@ApplicationException(rollback=true)\n"
+"@HttpError(errorCode=HttpServletResponse.SC_NOT_FOUND)\n"
+"public class EntryNotFoundException extends Exception\n"
+"{\n"
+"   EntryNotFoundException(String id)\n"
+"   {\n"
+"      super(\"entry not found: \" + id);\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1305
+#, no-c-format
+msgid ""
+"An alternative implementation of the example does not use the parameter in "
+"the method binding:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1308
+#, no-c-format
+msgid ""
+"@Name(\"entryAction\")\n"
+"@Scope(STATELESS)\n"
+"public class EntryAction\n"
+"{\n"
+"   @In(create=true) \n"
+"   private Blog blog;\n"
+"   \n"
+"   @In @Out\n"
+"   private BlogEntry blogEntry;\n"
+"   \n"
+"   public void loadBlogEntry() throws EntryNotFoundException\n"
+"   {\n"
+"      blogEntry = blog.getBlogEntry( blogEntry.getId() );\n"
+"      if (blogEntry==null) throw new EntryNotFoundException(id);\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1309
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   ...\n"
+"\n"
+"   &lt;page view-id=\"/entry.xhtml\" action=\"#{entryAction.loadBlogEntry}"
+"\"&gt;\n"
+"      &lt;param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1310
+#, no-c-format
+msgid "It is a matter of taste which implementation you prefer."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1318
+#, no-c-format
+msgid "Running the Seam examples in JBoss using the JSF 1.2 RI"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1319
+#, no-c-format
+msgid ""
+"JBoss AS 4.0 ships with the Apache MyFaces implementation of JSF 1.1. After "
+"many months of waiting, there is <emphasis>still</emphasis> no "
+"implementation of JSF 1.2 from MyFaces. For this and other reasons, JBoss AS "
+"4.2 will embed the JSF 1.2 Reference Implementation by default. Soon after "
+"the release of 4.2, we will migrate the Seam examples to JSF 1.2."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1322
+#, no-c-format
+msgid ""
+"For those who can't wait, Seam is already compatible with JSF 1.2, and it's "
+"easy to get the Seam examples running with JSF 1.2 in JBoss 4.0.5. Let's "
+"start with the famous booking example:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1327
+#, no-c-format
+msgid ""
+"copy <literal>jsf-api.jar</literal>, <literal>jsf-impl.jar</literal>, "
+"<literal>el-api.jar</literal>, <literal>el-impl.jar</literal> to "
+"<literal>server/default/deploy/tomcat/jbossweb-tomcat55.sar/jsf-libs</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1332
+#, no-c-format
+msgid ""
+"delete <literal>myfaces-api.jar</literal> and <literal>myfaces-impl.jar</"
+"literal> from <literal>server/default/deploy/tomcat/jbossweb-tomcat55.sar/"
+"jsf-libs</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1337
+#, no-c-format
+msgid ""
+"edit <literal>server/default/deploy/tomcat/jbossweb-tomcat55.sar/conf/web."
+"xml</literal>, replacing <literal>myfaces-impl.jar</literal> with "
+"<literal>jsf-impl.jar</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1342
+#, no-c-format
+msgid ""
+"edit <literal>examples/booking/resources/WEB-INF/web.xml</literal>, deleting "
+"the MyFaces listener, uncommenting the RI listener"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1347
+#, no-c-format
+msgid ""
+"edit <literal>examples/booking/resources/WEB-INF/faces-config.xml</literal>, "
+"uncommenting the lines that install the <literal>SeamELResolver</literal> "
+"using the new JSF 1.2 XML schema declaration."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1352
+#, no-c-format
+msgid ""
+"edit <literal>examples/booking/resources/META-INF/application.xml</literal>, "
+"deleting the lines that declare <literal>el-api.jar</literal> and "
+"<literal>el-impl.jar</literal> as Java modules."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1357
+#, no-c-format
+msgid ""
+"Restart JBoss, and type <literal>ant</literal> in the <literal>examples/"
+"booking</literal> directory."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Validation.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Validation.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Validation.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,375 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Validation.xml:10
+#, no-c-format
+msgid "JSF form validation in Seam"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:11
+#, no-c-format
+msgid "In plain JSF, validation is defined in the view:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:14
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Country:\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;my:validateCountry/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Zip code:\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;my:validateZip/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:15
+#, no-c-format
+msgid ""
+"In practice, this approach usually violates DRY, since most \"validation\" "
+"actually enforces constraints that are part of the data model, and exist all "
+"the way down to the database schema definition. Seam provides support for "
+"model-based constraints defined using Hibernate Validator."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:18
+#, no-c-format
+msgid ""
+"Let's start by defining our constraints, on our <literal>Location</literal> "
+"class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:21
+#, no-c-format
+msgid ""
+"public class Location {\n"
+"    private String country;\n"
+"    private String zip;\n"
+"    \n"
+"    @NotNull\n"
+"    @Length(max=30)\n"
+"    public String getCountry() { return country; }\n"
+"    public void setCountry(String c) { country = c; }\n"
+"\n"
+"    @NotNull\n"
+"    @Length(max=6)\n"
+"    @Pattern(\"^&#92;d*&#36;\")\n"
+"    public String getZip() { return zip; }\n"
+"    public void setZip(String z) { zip = z; }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:22
+#, no-c-format
+msgid ""
+"Well, that's a decent first cut, but in practice it might be more elegant to "
+"use custom constraints instead of the ones built into Hibernate Validator:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:25
+#, no-c-format
+msgid ""
+"public class Location {\n"
+"    private String country;\n"
+"    private String zip;\n"
+"    \n"
+"    @NotNull\n"
+"    @Country\n"
+"    public String getCountry() { return country; }\n"
+"    public void setCountry(String c) { country = c; }\n"
+"\n"
+"    @NotNull\n"
+"    @ZipCode\n"
+"    public String getZip() { return zip; }\n"
+"    public void setZip(String z) { zip = z; }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:26
+#, no-c-format
+msgid ""
+"Whichever route we take, we no longer need to specify the type of validation "
+"to be used in the JSF page. Instead, we can use <literal>&lt;s:validate&gt;</"
+"literal> to validate against the constraint defined on the model object."
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:29
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Country:\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;s:validate/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Zip code:\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;s:validate/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:30
+#, no-c-format
+msgid ""
+"<emphasis>Note:</emphasis> specifying <literal>@NotNull</literal> on the "
+"model does <emphasis>not</emphasis> eliminate the requirement for "
+"<literal>required=\"true\"</literal> to appear on the control! This is due "
+"to a limitation of the JSF validation architecture."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:33
+#, no-c-format
+msgid ""
+"This version is not much less verbose than what we started with, so let's "
+"try <literal>&lt;s:validateAll&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:36
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;h:inputText value=\"#{location.country}\" required=\"true\"/"
+"&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/"
+"&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:37
+#, no-c-format
+msgid ""
+"This tag simply adds an <literal>&lt;s:validate&gt;</literal> to every input "
+"in the form. For a large form, it can save a lot of typing!"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:40
+#, no-c-format
+msgid ""
+"Now we need to do something about displaying feedback to the user when "
+"validation fails. Currently we are displaying all messages at the top of the "
+"form. What we would really like to do is display the message next to the "
+"field with the error (this is possible in plain JSF), highlight the field "
+"(this is not possible) and, for good measure, display some image next the "
+"the field (also not possible)."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:43
+#, no-c-format
+msgid "Let's try out <literal>&lt;s:decorate&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:46
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;s:decorate&gt;\n"
+"                &lt;f:facet name=\"beforeInvalidField\"&gt;&lt;h:"
+"graphicImage src=\"img/error.gif\"/&gt;&lt;/f:facet&gt;\n"
+"                &lt;f:facet name=\"afterInvalidField\"&gt;&lt;s:message/&gt;"
+"&lt;/f:facet&gt;\n"
+"                &lt;f:facet name=\"aroundInvalidField\"&gt;&lt;s:span "
+"styleClass=\"error\"/&gt;&lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{location.country}\" required=\"true"
+"\"/&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;s:decorate&gt;\n"
+"                &lt;f:facet name=\"beforeInvalidField\"&gt;&lt;h:"
+"graphicImage src=\"img/error.gif\"/&gt;&lt;/f:facet&gt;\n"
+"                &lt;f:facet name=\"afterInvalidField\"&gt;&lt;s:message/&gt;"
+"&lt;/f:facet&gt;\n"
+"                &lt;f:facet name=\"aroundInvalidField\"&gt;&lt;s:span "
+"styleClass=\"error\"/&gt;&lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/"
+"&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:47
+#, no-c-format
+msgid ""
+"Well, that looks much better to the user, but it is extremely verbose. "
+"Fortunately, the facets of <literal>&lt;s:decorate&gt;</literal> may be "
+"defined on any parent element:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:50
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;f:facet name=\"beforeInvalidField\"&gt;\n"
+"        &lt;h:graphicImage src=\"img/error.gif\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;f:facet name=\"afterInvalidField\"&gt;\n"
+"        &lt;s:message/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;f:facet name=\"aroundInvalidField\"&gt;\n"
+"        &lt;s:span styleClass=\"error\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;s:decorate&gt;\n"
+"                &lt;h:inputText value=\"#{location.country}\" required=\"true"
+"\"/&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;s:decorate&gt;\n"
+"                &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/"
+"&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:51
+#, no-c-format
+msgid ""
+"This approach <emphasis>defines</emphasis> constraints on the model, and "
+"<emphasis>presents</emphasis> constraint violations in the view&mdash;a "
+"significantly better design."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:54
+#, no-c-format
+msgid ""
+"Finally, we can use Ajax4JSF to display validation messages as the user is "
+"typing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:57
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;f:facet name=\"beforeInvalidField\"&gt;\n"
+"        &lt;h:graphicImage src=\"img/error.gif\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;f:facet name=\"afterInvalidField\"&gt;\n"
+"        &lt;s:message/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;f:facet name=\"aroundInvalidField\"&gt;\n"
+"        &lt;s:span styleClass=\"error\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;s:decorate id=\"country\"&gt;\n"
+"                &lt;h:inputText value=\"#{location.country}\" required=\"true"
+"\"&gt;\n"
+"                    &lt;a:support event=\"onblur\" reRender=\"country\"/"
+"&gt;\n"
+"                &lt;/h:inputText&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;s:decorate id=\"zip\"&gt;\n"
+"                &lt;h:inputText value=\"#{location.zip}\" required=\"true"
+"\"&gt;\n"
+"                    &lt;a:support event=\"onblur\" reRender=\"zip\"/&gt;\n"
+"                &lt;/h:inputText&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Xml.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Xml.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/gu-IN/Xml.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,933 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Xml.xml:10
+#, no-c-format
+msgid "Configuring Seam components"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:11
+#, no-c-format
+msgid ""
+"The philosophy of minimizing XML-based configuration is extremely strong in "
+"Seam. Nevertheless, there are various reasons why we might want to configure "
+"a Seam component using XML: to isolate deployment-specific information from "
+"the Java code, to enable the creation of re-usable frameworks, to configure "
+"Seam's built-in functionality, etc. Seam provides two basic approaches to "
+"configuring components: configuration via property settings in a properties "
+"file or <literal>web.xml</literal>, and configuration via "
+"<literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:14
+#, no-c-format
+msgid "Configuring components via property settings"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:15
+#, no-c-format
+msgid ""
+"Seam components may be provided with configuration properties either via "
+"servlet context parameters, or via a properties file named <literal>seam."
+"properties</literal> in the root of the classpath."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:18
+#, no-c-format
+msgid ""
+"The configurable Seam component must expose JavaBeans-style property setter "
+"methods for the configurable attributes. If a seam component named "
+"<literal>com.jboss.myapp.settings</literal> has a setter method named "
+"<literal>setLocale()</literal>, we can provide a property named <literal>com."
+"jboss.myapp.settings.locale</literal> in the <literal>seam.properties</"
+"literal> file or as a servlet context parameter, and Seam will set the value "
+"of the <literal>locale</literal> attribute whenever it instantiates the "
+"component."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:21
+#, no-c-format
+msgid ""
+"The same mechanism is used to configure Seam itself. For example, to set the "
+"conversation timeout, we provide a value for <literal>org.jboss.seam.core."
+"manager.conversationTimeout</literal> in <literal>web.xml</literal> or "
+"<literal>seam.properties</literal>. (There is a built-in Seam component "
+"named <literal>org.jboss.seam.core.manager</literal> with a setter method "
+"named <literal>setConversationTimeout()</literal>.)"
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:24
+#, no-c-format
+msgid "Configuring components via components.xml"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:25
+#, no-c-format
+msgid ""
+"The <literal>components.xml</literal> file is a bit more powerful than "
+"property settings. It lets you:"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:30
+#, no-c-format
+msgid ""
+"Configure components that have been installed automatically&mdash;including "
+"both built-in components, and application components that have been "
+"annotated with the <literal>@Name</literal> annotation and picked up by "
+"Seam's deployment scanner."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:35
+#, no-c-format
+msgid ""
+"Install classes with no <literal>@Name</literal> annotation as Seam "
+"components&mdash;this is most useful for certain kinds of infrastructural "
+"components which can be installed multiple times different names (for "
+"example Seam-managed persistence contexts)."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:40
+#, no-c-format
+msgid ""
+"Install components that <emphasis>do</emphasis> have a <literal>@Name</"
+"literal> annotation but are not installed by default because of an "
+"<literal>@Install</literal> annotation that indicates the component should "
+"not be installed."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:45
+#, no-c-format
+msgid "Override the scope of a component."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:50
+#, no-c-format
+msgid ""
+"A <literal>components.xml</literal> file may appear in one of three "
+"different places:"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:55
+#, no-c-format
+msgid "The <literal>WEB-INF</literal> directory of a <literal>war</literal>."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:60
+#, no-c-format
+msgid "The <literal>META-INF</literal> directory of a <literal>jar</literal>."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:65
+#, no-c-format
+msgid ""
+"Any directory of a <literal>jar</literal> that contains classes with an "
+"<literal>@Name</literal> annotation."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:70
+#, no-c-format
+msgid ""
+"Usually, Seam components are installed when the deployment scanner discovers "
+"a class with a <literal>@Name</literal> annotation sitting in an archive "
+"with a <literal>seam.properties</literal> file or a <literal>META-INF/"
+"components.xml</literal> file. (Unless the component has an "
+"<literal>@Install</literal> annotation indicating it should not be installed "
+"by default.) The <literal>components.xml</literal> file lets us handle "
+"special cases where we need to override the annotations."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:73
+#, no-c-format
+msgid ""
+"For example, the following <literal>components.xml</literal> file installs "
+"the JBoss Embeddable EJB3 container:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:76
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"&gt;\n"
+"    &lt;core:ejb/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:77
+#, no-c-format
+msgid "This example does the same thing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:80
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component class=\"org.jboss.seam.core.Ejb\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:81
+#, no-c-format
+msgid ""
+"This one installs and configures two different Seam-managed persistence "
+"contexts:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:84
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"    &lt;core:managed-persistence-context name=\"customerDatabase\"\n"
+"                persistence-unit-jndi-name=\"java:/"
+"customerEntityManagerFactory\"/&gt;\n"
+"        \n"
+"    &lt;core:managed-persistence-context name=\"accountingDatabase\"\n"
+"                persistence-unit-jndi-name=\"java:/"
+"accountingEntityManagerFactory\"/&gt;            \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:85
+#, no-c-format
+msgid "As does this one:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:88
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component name=\"customerDatabase\" \n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"customerEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"    \n"
+"    &lt;component name=\"accountingDatabase\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"accountingEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:89
+#, no-c-format
+msgid ""
+"This example creates a session-scoped Seam-managed persistence context (this "
+"is not recommended in practice):"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:92
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"  &lt;core:managed-persistence-context name=\"productDatabase\" \n"
+"                                   scope=\"session\"\n"
+"              persistence-unit-jndi-name=\"java:/productEntityManagerFactory"
+"\"/&gt;        \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:93
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"            \n"
+"    &lt;component name=\"productDatabase\"\n"
+"              scope=\"session\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"productEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:94
+#, no-c-format
+msgid ""
+"It is common to use the <literal>auto-create</literal> option for "
+"infrastructural objects like persistence contexts, which saves you from "
+"having to explicitly specify <literal>create=true</literal> when you use the "
+"<literal>@In</literal> annotation."
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:97
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"  &lt;core:managed-persistence-context name=\"productDatabase\" \n"
+"                             auto-create=\"true\"\n"
+"              persistence-unit-jndi-name=\"java:/productEntityManagerFactory"
+"\"/&gt;        \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:98
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"            \n"
+"    &lt;component name=\"productDatabase\"\n"
+"        auto-create=\"true\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"productEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:99
+#, no-c-format
+msgid ""
+"The <literal>&lt;factory&gt;</literal> declaration lets you specify a value "
+"or method binding expression that will be evaluated to initialize the value "
+"of a context variable when it is first referenced."
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:102
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"contact\" method=\"#{contactManager.loadContact}\" "
+"scope=\"CONVERSATION\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:103
+#, no-c-format
+msgid ""
+"You can create an \"alias\" (a second name) for a Seam component like so:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:106
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"user\" value=\"#{actor}\" scope=\"STATELESS\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:107
+#, no-c-format
+msgid "You can even create an \"alias\" for a commonly used expression:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:110
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"contact\" value=\"#{contactManager.contact}\" scope="
+"\"STATELESS\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:111
+#, no-c-format
+msgid ""
+"It is especially common to see the use of <literal>auto-create=\"true\"</"
+"literal> with the <literal>&lt;factory&gt;</literal> declaration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:114
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"session\" value=\"#{entityManager.delegate}\" scope="
+"\"STATELESS\" \n"
+"        auto-create=\"true\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:115
+#, no-c-format
+msgid ""
+"Sometimes we want to reuse the same <literal>components.xml</literal> file "
+"with minor changes during both deployment and testing. Seam lets you place "
+"wildcards of the form <literal>@wildcard@</literal> in the "
+"<literal>components.xml</literal> file which can be replaced either by your "
+"Ant build script (at deployment time) or by providing a file named "
+"<literal>components.properties</literal> in the classpath (at development "
+"time). You'll see this approach used in the Seam examples."
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:118
+#, no-c-format
+msgid "Fine-grained configuration files"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:119
+#, no-c-format
+msgid ""
+"If you have a large number of components that need to be configured in XML, "
+"it makes much more sense to split up the information in <literal>components."
+"xml</literal> into many small files. Seam lets you put configuration for a "
+"class named, for example, <literal>com.helloworld.Hello</literal> in a "
+"resource named <literal>com/helloworld/Hello.component.xml</literal>. (You "
+"might be familiar with this pattern, since it is the same one we use in "
+"Hibernate.) The root element of the file may be either a <literal>&lt;"
+"components&gt;</literal> or <literal>&lt;component&gt;</literal> element."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:122
+#, no-c-format
+msgid "The first option lets you define multiple components in the file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:125
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component class=\"com.helloworld.Hello\" name=\"hello\"&gt;\n"
+"        &lt;property name=\"name\"&gt;#{user.name}&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"    &lt;factory name=\"message\" value=\"#{hello.message}\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:126
+#, no-c-format
+msgid ""
+"The second option only lets you define or configure one component, but is "
+"less noisy:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:129
+#, no-c-format
+msgid ""
+"&lt;component name=\"hello\"&gt;\n"
+"    &lt;property name=\"name\"&gt;#{user.name}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:130
+#, no-c-format
+msgid ""
+"In the second option, the class name is implied by the file in which the "
+"component definition appears."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:133
+#, no-c-format
+msgid ""
+"Alternatively, you may put configuration for all classes in the <literal>com."
+"helloworld</literal> package in <literal>com/helloworld/components.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:136
+#, no-c-format
+msgid "Configurable property types"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:137
+#, no-c-format
+msgid ""
+"Properties of string, primitive or primitive wrapper type may be configured "
+"just as you would expect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:140
+#, no-c-format
+msgid "org.jboss.seam.core.manager.conversationTimeout 60000"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:141
+#, no-c-format
+msgid "&lt;core:manager conversation-timeout=\"60000\"/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:142
+#, no-c-format
+msgid ""
+"&lt;component name=\"org.jboss.seam.core.manager\"&gt;\n"
+"    &lt;property name=\"conversationTimeout\"&gt;60000&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:143
+#, no-c-format
+msgid "Arrays, sets and lists of strings or primitives are also supported:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:146
+#, no-c-format
+msgid ""
+"org.jboss.seam.core.jbpm.processDefinitions order.jpdl.xml, return.jpdl.xml, "
+"inventory.jpdl.xml"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:147
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;order.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;return.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:148
+#, no-c-format
+msgid ""
+"&lt;component name=\"org.jboss.seam.core.jbpm\"&gt;\n"
+"    &lt;property name=\"processDefinitions\"&gt;\n"
+"        &lt;value&gt;order.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;return.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:149
+#, no-c-format
+msgid ""
+"Even maps with String-valued keys and string or primitive values are "
+"supported:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:152
+#, no-c-format
+msgid ""
+"&lt;component name=\"issueEditor\"&gt;\n"
+"    &lt;property name=\"issueStatuses\"&gt;\n"
+"        &lt;key&gt;open&lt;/key&gt; &lt;value&gt;open issue&lt;/value&gt;\n"
+"        &lt;key&gt;resolved&lt;/key&gt; &lt;value&gt;issue resolved by "
+"developer&lt;/value&gt;\n"
+"        &lt;key&gt;closed&lt;/key&gt; &lt;value&gt;resolution accepted by "
+"user&lt;/value&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:153
+#, no-c-format
+msgid ""
+"Finally, you may wire together components using a value-binding expression. "
+"Note that this is quite different to injection using <literal>@In</literal>, "
+"since it happens at component instantiation time instead of invocation time. "
+"It is therefore much more similar to the dependency injection facilities "
+"offered by traditional IoC containers like JSF or Spring."
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:156
+#, no-c-format
+msgid ""
+"&lt;drools:managed-working-memory name=\"policyPricingWorkingMemory\" rule-"
+"base=\"#{policyPricingRules}\"/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:157
+#, no-c-format
+msgid ""
+"&lt;component name=\"policyPricingWorkingMemory\"\n"
+"          class=\"org.jboss.seam.drools.ManagedWorkingMemory\"&gt;\n"
+"    &lt;property name=\"ruleBase\"&gt;#{policyPricingRules}&lt;/"
+"property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:158
+#, no-c-format
+msgid "Using XML Namespaces"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:159
+#, no-c-format
+msgid ""
+"Throughout the examples, there have been two competing ways of declaring "
+"components: with and without the use of XML namespaces. The following shows "
+"a typical <literal>components.xml</literal> file without namespaces. It uses "
+"the Seam Components DTD:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:162
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"&gt;\n"
+"&lt;!DOCTYPE components PUBLIC \"-//JBoss/Seam Component Configuration DTD "
+"1.2//EN\"\n"
+"                            \"http://jboss.com/products/seam/components-1.2."
+"dtd\"&gt;\n"
+"&lt;components&gt;\n"
+"\n"
+"    &lt;component class=\"org.jboss.seam.core.init\"&gt;\n"
+"        &lt;property name=\"debug\"&gt;true&lt;/property&gt;\n"
+"        &lt;property name=\"jndiPattern\"&gt;@jndiPattern@&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"    &lt;component name=\"org.jboss.sean.core.ejb\" installed=\"@embeddedEjb@"
+"\" /&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:163
+#, no-c-format
+msgid ""
+"As you can see, this is somewhat verbose. Even worse, the component and "
+"attribute names cannot be validated at development time."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:166
+#, no-c-format
+msgid "The namespaced version looks like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:169
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                http://jboss.com/products/seam/core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components \n"
+"                 http://jboss.com/products/seam/components-1.2.xsd\"&gt;\n"
+"\n"
+"    &lt;core:init debug=\"true\" jndi-pattern=\"@jndiPattern@\"/&gt;\n"
+"\n"
+"    &lt;core:ejb installed=\"@embeddedEjb@\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:170
+#, no-c-format
+msgid ""
+"Even though the schema declarations are verbose, the actual XML content is "
+"lean and easy to understand. The schemas provide detailed information about "
+"each component and the attributes available, allowing XML editors to offer "
+"intelligent autocomplete. The use of namespaced elements makes generating "
+"and maintaining correct <literal>components.xml</literal> files much simpler."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:173
+#, no-c-format
+msgid ""
+"Now, this works great for the built-in Seam components, but what about user "
+"components? There are two options. First, Seam supports mixing the two "
+"models, allowing the use of the generic <literal>&lt;component&gt;</literal> "
+"declarations for user components, along with namespaced declarations for "
+"built-in components. But even better, Seam allows you to quickly declare "
+"namespaces for your own components."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:176
+#, no-c-format
+msgid ""
+"Any Java package can be associated with an XML namespace by annotating the "
+"package with the <literal>@Namespace</literal> annotation. (Package-level "
+"annotations are declared in a file named <literal>package-info.java</"
+"literal> in the package directory.) Here is an example from the seampay demo:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:179
+#, no-c-format
+msgid ""
+"@Namespace(value=\"http://jboss.com/products/seam/examples/seampay\")\n"
+"package org.jboss.seam.example.seampay;\n"
+"\n"
+"import org.jboss.seam.annotations.Namespace;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:180
+#, no-c-format
+msgid ""
+"That is all you need to do to use the namespaced style in "
+"<literal>components.xml</literal>! Now we can write:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:183
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pay=\"http://jboss.com/products/seam/examples/seampay\"\n"
+"            ... &gt;\n"
+"\n"
+"    &lt;pay:payment-home new-instance=\"#{newPayment}\"\n"
+"                      created-message=\"Created a new payment to #"
+"{newPayment.payee}\" /&gt;\n"
+"\n"
+"    &lt;pay:payment name=\"newPayment\"\n"
+"                 payee=\"Somebody\"\n"
+"                 account=\"#{selectedAccount}\"\n"
+"                 payment-date=\"#{currentDatetime}\"\n"
+"                 created-date=\"#{currentDatetime}\" /&gt;\n"
+"     ...\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:184
+#, no-c-format
+msgid "<para>Or:</para>"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:187
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pay=\"http://jboss.com/products/seam/examples/seampay\"\n"
+"            ... &gt;\n"
+"\n"
+"    &lt;pay:payment-home&gt;\n"
+"        &lt;pay:new-instance&gt;\"#{newPayment}\"&lt;/pay:new-instance&gt;\n"
+"        &lt;pay:created-message&gt;Created a new payment to #{newPayment."
+"payee}&lt;/pay:created-message&gt;\n"
+"    &lt;/pay:payment-home&gt;\n"
+"    \n"
+"    &lt;pay:payment name=\"newPayment\"&gt;\n"
+"        &lt;pay:payee&gt;Somebody\"&lt;/pay:payee&gt;\n"
+"        &lt;pay:account&gt;#{selectedAccount}&lt;/pay:account&gt;\n"
+"        &lt;pay:payment-date&gt;#{currentDatetime}&lt;/pay:payment-date&gt;\n"
+"        &lt;pay:created-date&gt;#{currentDatetime}&lt;/pay:created-date&gt;\n"
+"     &lt;/pay:payment&gt;\n"
+"     ...\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:188
+#, no-c-format
+msgid ""
+"These examples illustrate the two usage models of a namespaced element. In "
+"the first declaration, the <literal>&lt;pay:payment-home&gt;</literal> "
+"references the <literal>paymentHome</literal> component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:191
+#, no-c-format
+msgid ""
+"package org.jboss.seam.example.seampay;\n"
+"...\n"
+"@Name(\"paymentHome\")\n"
+"public class PaymentController\n"
+"    extends EntityHome&lt;Payment&gt;\n"
+"{\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:192
+#, no-c-format
+msgid ""
+"The element name is the hyphenated form of the component name. The "
+"attributes of the element are the hyphenated form of the property names."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:195
+#, no-c-format
+msgid ""
+"In the second declaration, the <literal>&lt;pay:payment&gt;</literal> "
+"element refers to the <literal>Payment</literal> class in the <literal>org."
+"jboss.seam.example.seampay</literal> package. In this case <literal>Payment</"
+"literal> is an entity that is being declared as a Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:198
+#, no-c-format
+msgid ""
+"package org.jboss.seam.example.seampay;\n"
+"...\n"
+"@Entity\n"
+"public class Payment\n"
+"    implements Serializable\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:199
+#, no-c-format
+msgid ""
+"If we want validation and autocompletion to work for user-defined "
+"components, we will need a schema. Seam does not yet provide a mechanism to "
+"automatically generate a schema for a set of components, so it is necessary "
+"to generate one manually. The schema definitions for the standard Seam "
+"packages can be used for guidance."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:202
+#, no-c-format
+msgid "The following are the the namespaces used by Seam:"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:207
+#, no-c-format
+msgid ""
+"components &mdash; <literal>http://jboss.com/products/seam/components</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:212
+#, no-c-format
+msgid "core &mdash; <literal>http://jboss.com/products/seam/core</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:217
+#, no-c-format
+msgid "drools &mdash; <literal>http://jboss.com/products/seam/drools</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:222
+#, no-c-format
+msgid ""
+"framework &mdash; <literal>http://jboss.com/products/seam/framework</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:227
+#, no-c-format
+msgid "jms &mdash; <literal>http://jboss.com/products/seam/jms</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:232
+#, no-c-format
+msgid ""
+"remoting &mdash; <literal>http://jboss.com/products/seam/remoting</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:237
+#, no-c-format
+msgid "theme &mdash; <literal>http://jboss.com/products/seam/theme</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:242
+#, no-c-format
+msgid ""
+"security &mdash; <literal>http://jboss.com/products/seam/security</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:247
+#, no-c-format
+msgid "mail &mdash; <literal>http://jboss.com/products/seam/mail</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:252
+#, no-c-format
+msgid "web &mdash; <literal>http://jboss.com/products/seam/web</literal>"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Annotations.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Annotations.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Annotations.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2030 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Annotations.xml:10
+#, no-c-format
+msgid "Seam annotations"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:11
+#, no-c-format
+msgid ""
+"When you write a Seam application, you'll use a lot of annotations. Seam "
+"lets you use annotations to achieve a declarative style of programming. Most "
+"of the annotations you'll use are defined by the EJB 3.0 specification. The "
+"annotations for data validation are defined by the Hibernate Validator "
+"package. Finally, Seam defines its own set of annotations, which we'll "
+"describe in this chapter."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:14
+#, no-c-format
+msgid ""
+"All of these annotations are defined in the package <literal>org.jboss.seam."
+"annotations</literal>."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:18
+#, no-c-format
+msgid "Annotations for component definition"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:19
+#, no-c-format
+msgid ""
+"The first group of annotations lets you define a Seam component. These "
+"annotations appear on the component class."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:24
+#, no-c-format
+msgid "@Name"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:26
+#, no-c-format
+msgid "@Name(\"componentName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:27
+#, no-c-format
+msgid ""
+"Defines the Seam component name for a class. This annotation is required for "
+"all Seam components."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:33
+#, no-c-format
+msgid "@Scope"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:35
+#, no-c-format
+msgid "@Scope(ScopeType.CONVERSATION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:36
+#, no-c-format
+msgid ""
+"Defines the default context of the component. The possible values are "
+"defined by the <literal>ScopeType</literal> enumeration: <literal>EVENT, "
+"PAGE, CONVERSATION, SESSION, BUSINESS_PROCESS, APPLICATION, STATELESS</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:39
+#, no-c-format
+msgid ""
+"When no scope is explicitly specified, the default depends upon the "
+"component type. For stateless session beans, the default is "
+"<literal>STATELESS</literal>. For entity beans and stateful session beans, "
+"the default is <literal>CONVERSATION</literal>. For JavaBeans, the default "
+"is <literal>EVENT</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:45
+#, no-c-format
+msgid "@Role"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:47
+#, no-c-format
+msgid "@Role(name=\"roleName\", scope=ScopeType.SESSION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:48
+#, no-c-format
+msgid ""
+"Allows a Seam component to be bound to multiple contexts variables. The "
+"<literal>@Name</literal>/<literal>@Scope</literal> annotations define a "
+"\"default role\". Each <literal>@Role</literal> annotation defines an "
+"additional role."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:53
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the context variable name."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:58
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; the context variable scope. When no scope "
+"is explicitly specified, the default depends upon the component type, as "
+"above."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:66
+#, no-c-format
+msgid "@Roles"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:68
+#, no-c-format
+msgid ""
+"@Roles({\n"
+"        @Role(name=\"user\", scope=ScopeType.CONVERSATION),\n"
+"        @Role(name=\"currentUser\", scope=ScopeType.SESSION)\n"
+"    })"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:69
+#, no-c-format
+msgid "Allows specification of multiple additional roles."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:75
+#, no-c-format
+msgid "@Intercept"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:77
+#, no-c-format
+msgid "@Intercept(InterceptionType.ALWAYS)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:78
+#, no-c-format
+msgid ""
+"Determines when Seam interceptors are active. The possible values are "
+"defined by the <literal>InterceptionType</literal> enumeration: "
+"<literal>ALWAYS, AFTER_RESTORE_VIEW, AFTER_UPDATE_MODEL_VALUES, "
+"INVOKE_APPLICATION, NEVER</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:81
+#, no-c-format
+msgid ""
+"When no interception type is explicitly specified, the default depends upon "
+"the component type. For entity beans, the default is <literal>NEVER</"
+"literal>. For session beans, message driven beans and JavaBeans, the default "
+"is <literal>ALWAYS</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:87
+#, no-c-format
+msgid "@JndiName"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:89
+#, no-c-format
+msgid "@JndiName(\"my/jndi/name\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:90
+#, no-c-format
+msgid ""
+"Specifies the JNDI name that Seam will use to look up the EJB component. If "
+"no JNDI name is explicitly specified, Seam will use the JNDI pattern "
+"specified by <literal>org.jboss.seam.core.init.jndiPattern</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:96
+#, no-c-format
+msgid "@Conversational"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:98
+#, no-c-format
+msgid "@Conversational(ifNotBegunOutcome=\"error\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:99
+#, no-c-format
+msgid ""
+"Specifies that a conversation scope component is conversational, meaning "
+"that no method of the component can be called unless a long-running "
+"conversation started by this component is active (unless the method would "
+"begin a new long-running conversation)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:105
+#, no-c-format
+msgid "<literal>@Startup</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:107
+#, no-c-format
+msgid "@Startup(depends={\"org.jboss.core.jndi\", \"org.jboss.core.jta\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:108
+#, no-c-format
+msgid ""
+"Specifies that an application scope component is started immediately at "
+"initialization time. This is mainly used for certain built-in components "
+"that bootstrap critical infrastructure such as JNDI, datasources, etc."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:111
+#, no-c-format
+msgid "<programlisting>@Startup</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:112
+#, no-c-format
+msgid ""
+"Specifies that a session scope component is started immediately at session "
+"creation time."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:117
+#, no-c-format
+msgid ""
+"<literal>depends</literal> &mdash; specifies that the named components must "
+"be started first, if they are installed."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:125
+#, no-c-format
+msgid "@Install"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:127
+#, no-c-format
+msgid "@Install(false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:128
+#, no-c-format
+msgid ""
+"Specifies whether or not a component should be installed by default. The "
+"lack of an @Install annotation indicates a component should be installed."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:131
+#, no-c-format
+msgid "@Install(dependencies=\"org.jboss.seam.core.jbpm\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:132
+#, no-c-format
+msgid ""
+"Specifies that a component should only be stalled if the components listed "
+"as dependencies are also installed."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:135
+#, no-c-format
+msgid "@Install(genericDependencies=ManagedQueueSender.class)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:136
+#, no-c-format
+msgid ""
+"Specifies that a component should only be installed if a component that is "
+"implemented by a certain class is installed. This is useful when the "
+"dependency doesn't have a single well-known name."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:139
+#, no-c-format
+msgid "@Install(classDependencies=\"org.hibernate.Session\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:140
+#, no-c-format
+msgid ""
+"Specifies that a component should only be installed if the named class is in "
+"the classpath."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:143
+#, no-c-format
+msgid "@Install(precedence=BUILT_IN)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:144
+#, no-c-format
+msgid ""
+"Specifies the precedence of the component. If multiple components with the "
+"same name exist, the one with the higher precedence will be installed. The "
+"defined precendence values are:"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:149
+#, no-c-format
+msgid ""
+"<literal>BUILT_IN</literal> &mdash; Precedence of all built-in Seam "
+"components"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:154
+#, no-c-format
+msgid ""
+"<literal>FRAMEWORK</literal> &mdash; Precedence to use for components of "
+"frameworks which extend Seam"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:159
+#, no-c-format
+msgid ""
+"<literal>APPLICATION</literal> &mdash; Predence of application components "
+"(the default precedence)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:164
+#, no-c-format
+msgid ""
+"<literal>DEPLOYMENT</literal> &mdash; Precedence to use for components which "
+"override application components in a particular deployment"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:172
+#, no-c-format
+msgid "@Synchronized"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:174
+#, no-c-format
+msgid "@Synchronized(timeout=1000)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:175
+#, no-c-format
+msgid ""
+"Specifies that a component is accessed concurrently by multiple clients, and "
+"that Seam should serialize requests. If a request is not able to obtain its "
+"lock on the component in the given timeout period, an exception will be "
+"raised."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:181
+#, no-c-format
+msgid "<literal>@ReadOnly</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:183
+#, no-c-format
+msgid "<programlisting>@ReadOnly</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:184
+#, no-c-format
+msgid ""
+"Specifies that a JavaBean component or component method does not require "
+"state replication at the end of the invocation."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:193
+#, no-c-format
+msgid "Annotations for bijection"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:194
+#, no-c-format
+msgid ""
+"The next two annotations control bijection. These attributes occur on "
+"component instance variables or property accessor methods."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:199
+#, no-c-format
+msgid "<literal>@In</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:201
+#, no-c-format
+msgid "<programlisting>@In</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:202
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. If the context "
+"variable is null, an exception will be thrown."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:205
+#, no-c-format
+msgid "@In(required=false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:206
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. The context variable "
+"may be null."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:209
+#, no-c-format
+msgid "@In(create=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:210
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. If the context "
+"variable is null, an instance of the component is instantiated by Seam."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:213
+#, no-c-format
+msgid "@In(value=\"contextVariableName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:214 Annotations.xml:259
+#, no-c-format
+msgid ""
+"Specifies the name of the context variable explicitly, instead of using the "
+"annotated instance variable name."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:217
+#, no-c-format
+msgid "@In(value=\"#{customer.addresses['shipping']}\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:218
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected by evaluating a JSF "
+"EL expression at the beginning of each component invocation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:223
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"Default to the name of the component attribute. Alternatively, specifies a "
+"JSF EL expression, surrounded by <literal>#{...}</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:228
+#, no-c-format
+msgid ""
+"<literal>create</literal> &mdash; specifies that Seam should instantiate the "
+"component with the same name as the context variable if the context variable "
+"is undefined (null) in all contexts. Default to false."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:233
+#, no-c-format
+msgid ""
+"<literal>required</literal> &mdash; specifies Seam should throw an exception "
+"if the context variable is undefined in all contexts."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:241
+#, no-c-format
+msgid "<literal>@Out</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:243
+#, no-c-format
+msgid "<programlisting>@Out</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:244
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is a Seam component is to be "
+"outjected to its context variable at the end of the invocation. If the "
+"attribute is null, an exception is thrown."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:247
+#, no-c-format
+msgid "@Out(required=false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:248
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is a Seam component is to be "
+"outjected to its context variable at the end of the invocation. The "
+"attribute may be null."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:251
+#, no-c-format
+msgid "@Out(scope=ScopeType.SESSION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:252
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is <emphasis>not</emphasis> a Seam "
+"component type is to be outjected to a specific scope at the end of the "
+"invocation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:255
+#, no-c-format
+msgid ""
+"Alternatively, if no scope is explicitly specified, the scope of the "
+"component with the <literal>@Out</literal> attribute is used (or the "
+"<literal>EVENT</literal> scope if the component is stateless)."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:258
+#, no-c-format
+msgid "@Out(value=\"contextVariableName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:264
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"Default to the name of the component attribute."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:269
+#, no-c-format
+msgid ""
+"<literal>required</literal> &mdash; specifies Seam should throw an exception "
+"if the component attribute is null during outjection."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:277
+#, no-c-format
+msgid ""
+"Note that it is quite common for these annotations to occur together, for "
+"example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:280
+#, no-c-format
+msgid "@In(create=true) @Out private User currentUser;"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:281
+#, no-c-format
+msgid ""
+"The next annotation supports the <emphasis>manager component</emphasis> "
+"pattern, where a Seam component that manages the lifecycle of an instance of "
+"some other class that is to be injected. It appears on a component getter "
+"method."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:286
+#, no-c-format
+msgid "<literal>@Unwrap</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:288
+#, no-c-format
+msgid "<programlisting>@Unwrap</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:289
+#, no-c-format
+msgid ""
+"Specifies that the object returned by the annotated getter method is the "
+"thing that is injected instead of the component instance itself."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:295
+#, no-c-format
+msgid ""
+"The next annotation supports the <emphasis>factory component</emphasis> "
+"pattern, where a Seam component is responsible for initializing the value of "
+"a context variable. This is especially useful for initializing any state "
+"needed for rendering the response to a non-faces request. It appears on a "
+"component method."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:300
+#, no-c-format
+msgid "@Factory"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:302
+#, no-c-format
+msgid "@Factory(\"processInstance\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:303
+#, no-c-format
+msgid ""
+"Specifies that the method of the component is used to initialize the value "
+"of the named context variable, when the context variable has no value. This "
+"style is used with methods that return <literal>void</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:306
+#, no-c-format
+msgid "@Factory(\"processInstance\", scope=CONVERSATION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:307
+#, no-c-format
+msgid ""
+"Specifies that the method returns a value that Seam should use to initialize "
+"the value of the named context variable, when the context variable has no "
+"value. This style is used with methods that return a value. If no scope is "
+"explicitly specified, the scope of the component with the <literal>@Factory</"
+"literal> method is used (unless the component is stateless, in which case "
+"the <literal>EVENT</literal> context is used)."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:312
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"If the method is a getter method, default to the JavaBeans property name."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:317
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; specifies the scope that Seam should bind "
+"the returned value to. Only meaningful for factory methods which return a "
+"value."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:325
+#, no-c-format
+msgid "This annotation lets you inject a <literal>Log</literal>:"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:330
+#, no-c-format
+msgid "@Logger"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:332
+#, no-c-format
+msgid "@Logger(\"categoryName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:333
+#, no-c-format
+msgid ""
+"Specifies that a component field is to be injected with an instance of "
+"<literal>org.jboss.seam.log.Log</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:338
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the log category. "
+"Default to the name of the component class."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:346
+#, no-c-format
+msgid "The last annotation lets you inject a request parameter value:"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:351
+#, no-c-format
+msgid "@RequestParameter"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:353
+#, no-c-format
+msgid "@RequestParameter(\"parameterName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:354
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected with the value of a "
+"request parameter. Basic type conversions are performed automatically."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:359
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the request "
+"parameter. Default to the name of the component attribute."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:370
+#, no-c-format
+msgid "Annotations for component lifecycle methods"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:371
+#, no-c-format
+msgid ""
+"These annotations allow a component to react to its own lifecycle events. "
+"They occur on methods of the component. There may be only one of each per "
+"component class."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:376
+#, no-c-format
+msgid "<literal>@Create</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:378
+#, no-c-format
+msgid "<programlisting>@Create</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:379
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when an instance of the component "
+"is instantiated by Seam. Note that create methods are only supported for "
+"JavaBeans and stateful session beans."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:385
+#, no-c-format
+msgid "<literal>@Destroy</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:387
+#, no-c-format
+msgid "<programlisting>@Destroy</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:388
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when the context ends and its "
+"context variables are destroyed. Note that create methods are only supported "
+"for JavaBeans and stateful session beans."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:391
+#, no-c-format
+msgid ""
+"Note that all stateful session bean components <emphasis>must</emphasis> "
+"define a method annotated <literal>@Destroy @Remove</literal> in order to "
+"guarantee destruction of the stateful bean when a context ends."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:394
+#, no-c-format
+msgid ""
+"Destroy methods should be used only for cleanup. <emphasis>Seam catches, "
+"logs and swallows any exception that propagates out of a destroy method.</"
+"emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:400
+#, no-c-format
+msgid "@Observer"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:402
+#, no-c-format
+msgid "@Observer(\"somethingChanged\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:403
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when a component-driven event of "
+"the specified type occurs."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:406
+#, no-c-format
+msgid "@Observer(value=\"somethingChanged\",create=false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:407
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when an event of the specified "
+"type occurs but that an instance should not be created if one doesn't exist. "
+"If an instance does not exist and create is false, the event will not be "
+"observed. The default value for create is true."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:416
+#, no-c-format
+msgid "Annotations for context demarcation"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:417
+#, no-c-format
+msgid ""
+"These annotations provide declarative conversation demarcation. They appear "
+"on methods of Seam components, usually action listener methods."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:420
+#, no-c-format
+msgid ""
+"Every web request has a conversation context associated with it. Most of "
+"these conversations end at the end of the request. If you want a "
+"conversation that span multiple requests, you must \"promote\" the current "
+"conversation to a <emphasis>long-running conversation</emphasis> by calling "
+"a method marked with <literal>@Begin</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:425
+#, no-c-format
+msgid "<literal>@Begin</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:427
+#, no-c-format
+msgid "<programlisting>@Begin</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:428
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation begins when this method returns a "
+"non-null outcome without exception."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:431
+#, no-c-format
+msgid "@Begin(ifOutcome={\"success\", \"continue\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:432
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation begins when this action listener "
+"method returns with one of the given outcomes."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:435
+#, no-c-format
+msgid "@Begin(join=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:436
+#, no-c-format
+msgid ""
+"Specifies that if a long-running conversation is already in progress, the "
+"conversation context is simply propagated."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:439
+#, no-c-format
+msgid "@Begin(nested=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:440
+#, no-c-format
+msgid ""
+"Specifies that if a long-running conversation is already in progress, a new "
+"<emphasis>nested</emphasis> conversation context begins. The nested "
+"conversation will end when the next <literal>@End</literal> is encountered, "
+"and the outer conversation will resume. It is perfectly legal for multiple "
+"nested conversations to exist concurrently in the same outer conversation."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:443
+#, no-c-format
+msgid "@Begin(pageflow=\"process definition name\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:444
+#, no-c-format
+msgid ""
+"Specifies a jBPM process definition name that defines the pageflow for this "
+"conversation."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:447
+#, no-c-format
+msgid "@Begin(flushMode=FlushModeType.MANUAL)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:448
+#, no-c-format
+msgid ""
+"Specify the flush mode of any Seam-managed persistence contexts. "
+"<literal>flushMode=FlushModeType.MANUAL</literal> supports the use of "
+"<emphasis>atomic conversations</emphasis> where all write operations are "
+"queued in the conversation context until an explicit call to <literal>flush()"
+"</literal> (which usually occurs at the end of the conversation)."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:454
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in a new long-running conversation context."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:459
+#, no-c-format
+msgid ""
+"<literal>join</literal> &mdash; determines the behavior when a long-running "
+"conversation is already in progress. If <literal>true</literal>, the context "
+"is propagated. If <literal>false</literal>, an exception is thrown. Default "
+"to <literal>false</literal>. This setting is ignored when "
+"<literal>nested=true</literal> is specified"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:464
+#, no-c-format
+msgid ""
+"<literal>nested</literal> &mdash; specifies that a nested conversation "
+"should be started if a long-running conversation is already in progress."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:469 Annotations.xml:526 Annotations.xml:550
+#, no-c-format
+msgid ""
+"<literal>flushMode</literal> &mdash; set the flush mode of any Seam-managed "
+"Hibernate sessions or JPA persistence contexts that are created during this "
+"conversation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:474
+#, no-c-format
+msgid ""
+"<literal>pageflow</literal> &mdash; a process definition name of a jBPM "
+"process definition deployed via <literal>org.jboss.seam.core.jbpm."
+"pageflowDefinitions.</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:483
+#, no-c-format
+msgid "<literal>@End</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:485
+#, no-c-format
+msgid "<programlisting>@End</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:486
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation ends when this method returns a "
+"non-null outcome without exception."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:489
+#, no-c-format
+msgid ""
+"@End(ifOutcome={\"success\", \"error\"}, evenIfException={SomeException."
+"class, OtherException.class})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:490
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation ends when this action listener "
+"method returns with one of the given outcomes or throws one of the specified "
+"classes of exception."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:496
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in the end of the current long-running conversation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:501 Annotations.xml:585
+#, no-c-format
+msgid ""
+"<literal>beforeRedirect</literal> &mdash; by default, the conversation will "
+"not actually be destroyed until after any redirect has occurred. Setting "
+"<literal>beforeRedirect=true</literal> specifies that the conversation "
+"should be destroyed at the end of the current request, and that the redirect "
+"will be processed in a new temporary conversation context."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:510
+#, no-c-format
+msgid "<literal>@StartTask</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:512
+#, no-c-format
+msgid "<programlisting>@StartTask</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:513
+#, no-c-format
+msgid ""
+"\"Starts\" a jBPM task. Specifies that a long-running conversation begins "
+"when this method returns a non-null outcome without exception. This "
+"conversation is associated with the jBPM task specified in the named request "
+"parameter. Within the context of this conversation, a business process "
+"context is also defined, for the business process instance of the task "
+"instance."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:516
+#, no-c-format
+msgid ""
+"The jBPM <literal>TaskInstance</literal> will be available in a request "
+"context variable named <literal>taskInstance</literal>. The jPBM "
+"<literal>ProcessInstance</literal> will be available in a request context "
+"variable named <literal>processInstance</literal>. (Of course, these objects "
+"are available for injection via <literal>@In</literal>.)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:521 Annotations.xml:545
+#, no-c-format
+msgid ""
+"<literal>taskIdParameter</literal> &mdash; the name of a request parameter "
+"which holds the id of the task. Default to <literal>\"taskId\"</literal>, "
+"which is also the default used by the Seam <literal>taskList</literal> JSF "
+"component."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:534
+#, no-c-format
+msgid "<literal>@BeginTask</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:536
+#, no-c-format
+msgid "<programlisting>@BeginTask</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:537
+#, no-c-format
+msgid ""
+"Resumes work on an incomplete jBPM task. Specifies that a long-running "
+"conversation begins when this method returns a non-null outcome without "
+"exception. This conversation is associated with the jBPM task specified in "
+"the named request parameter. Within the context of this conversation, a "
+"business process context is also defined, for the business process instance "
+"of the task instance."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:540
+#, no-c-format
+msgid ""
+"The jBPM <literal>TaskInstance</literal> will be available in a request "
+"context variable named <literal>taskInstance</literal>. The jPBM "
+"<literal>ProcessInstance</literal> will be available in a request context "
+"variable named <literal>processInstance</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:558
+#, no-c-format
+msgid "<literal>@EndTask</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:560
+#, no-c-format
+msgid "<programlisting>@EndTask</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:561
+#, no-c-format
+msgid ""
+"\"Ends\" a jBPM task. Specifies that a long-running conversation ends when "
+"this method returns a non-null outcome, and that the current task is "
+"complete. Triggers a jBPM transition. The actual transition triggered will "
+"be the default transition unless the application has called "
+"<literal>Transition.setName()</literal> on the built-in component named "
+"<literal>transition</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:564
+#, no-c-format
+msgid "@EndTask(transition=\"transitionName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:565
+#, no-c-format
+msgid "Triggers the given jBPM transition."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:568
+#, no-c-format
+msgid "@EndTask(ifOutcome={\"success\", \"continue\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:569
+#, no-c-format
+msgid ""
+"Specifies that the task ends when this method returns one of the listed "
+"outcomes."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:575
+#, no-c-format
+msgid ""
+"<literal>transition</literal> &mdash; the name of the jBPM transition to be "
+"triggered when ending the task. Defaults to the default transition."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:580
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in the end of the task."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:594
+#, no-c-format
+msgid "@CreateProcess"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:596
+#, no-c-format
+msgid "@CreateProcess(definition=\"process definition name\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:597
+#, no-c-format
+msgid ""
+"Creates a new jBPM process instance when the method returns a non-null "
+"outcome without exception. The <literal>ProcessInstance</literal> object "
+"will be available in a context variable named <literal>processInstance</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:602
+#, no-c-format
+msgid ""
+"<literal>definition</literal> &mdash; the name of the jBPM process "
+"definition deployed via <literal>org.jboss.seam.core.jbpm."
+"processDefinitions</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:610
+#, no-c-format
+msgid "@ResumeProcess"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:612
+#, no-c-format
+msgid "@ResumeProcess(processIdParameter=\"processId\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:613
+#, no-c-format
+msgid ""
+"Re-enters the scope of an existing jBPM process instance when the method "
+"returns a non-null outcome without exception. The <literal>ProcessInstance</"
+"literal> object will be available in a context variable named "
+"<literal>processInstance</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:618
+#, no-c-format
+msgid ""
+"<literal>processIdParameter</literal> &mdash; the name a request parameter "
+"holding the process id. Default to <literal>\"processId\"</literal>."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:629
+#, no-c-format
+msgid "Annotations for transaction demarcation"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:630
+#, no-c-format
+msgid ""
+"Seam provides an annotation that lets you force a rollback of the JTA "
+"transaction for certain action listener outcomes."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:635
+#, no-c-format
+msgid "@Rollback"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:637
+#, no-c-format
+msgid "@Rollback(ifOutcome={\"failure\", \"not-found\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:638
+#, no-c-format
+msgid ""
+"If the outcome of the method matches any of the listed outcomes, or if no "
+"outcomes are listed, set the transaction to rollback only when the method "
+"completes."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:643
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; the JSF outcomes that cause a "
+"transaction rollback (no outcomes is interpreted to mean any outcome)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:651
+#, no-c-format
+msgid "<literal>@Transactional</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:653
+#, no-c-format
+msgid "<programlisting>@Transactional</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:654
+#, no-c-format
+msgid ""
+"Specifies that a JavaBean component should have a similar transactional "
+"behavior to the default behavior of a session bean component. ie. method "
+"invocations should take place in a transaction, and if no transaction exists "
+"when the method is called, a transaction will be started just for that "
+"method. This annotation may be applied at either class or method level."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:660
+#, no-c-format
+msgid ""
+"Seam applications usually use the standard EJB3 annotations for all other "
+"transaction demarcation needs."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:666
+#, no-c-format
+msgid "Annotations for exceptions"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:667
+#, no-c-format
+msgid ""
+"These annotations let you specify how Seam should handle an exception that "
+"propagates out of a Seam component."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:672
+#, no-c-format
+msgid "@Redirect"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:674
+#, no-c-format
+msgid "@Redirect(viewId=\"error.jsp\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:675
+#, no-c-format
+msgid ""
+"Specifies that the annotated exception causes a browser redirect to a "
+"specified view id."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:680
+#, no-c-format
+msgid ""
+"<literal>viewId</literal> &mdash; specifies the JSF view id to redirect to."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:685
+#, no-c-format
+msgid ""
+"<literal>message</literal> &mdash; a message to be displayed, default to the "
+"exception message."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:690 Annotations.xml:716
+#, no-c-format
+msgid ""
+"<literal>end</literal> &mdash; specifies that the long-running conversation "
+"should end, default to <literal>false</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:698
+#, no-c-format
+msgid "@HttpError"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:700
+#, no-c-format
+msgid "@HttpError(errorCode=404)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:701
+#, no-c-format
+msgid "Specifies that the annotated exception causes a HTTP error to be sent."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:706
+#, no-c-format
+msgid ""
+"<literal>errorCode</literal> &mdash; the HTTP error code, default to "
+"<literal>500</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:711
+#, no-c-format
+msgid ""
+"<literal>message</literal> &mdash; a message to be sent with the HTTP error, "
+"default to the exception message."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:727
+#, no-c-format
+msgid "Annotations for validation"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:728
+#, no-c-format
+msgid ""
+"This annotation triggers Hibernate Validator. It appears on a method of a "
+"Seam component, almost always an action listener method."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:731
+#, no-c-format
+msgid ""
+"Please refer to the documentation for the Hibernate Annotations package for "
+"information about the annotations defined by the Hibernate Validator "
+"framework."
+msgstr ""
+
+#. Tag: emphasis
+#: Annotations.xml:735
+#, no-c-format
+msgid ""
+"Note that use of <literal>@IfInvalid</literal> is now semi-deprecated and "
+"<literal>&lt;s:validateAll&gt;</literal> is now preferred."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:739
+#, no-c-format
+msgid "@IfInvalid"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:741
+#, no-c-format
+msgid "@IfInvalid(outcome=\"invalid\", refreshEntities=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:742
+#, no-c-format
+msgid ""
+"Specifies that Hibernate Validator should validate the component before the "
+"method is invoked. If the invocation fails, the specified outcome will be "
+"returned, and the validation failure messages returned by Hibernate "
+"Validator will be added to the <literal>FacesContext</literal>. Otherwise, "
+"the invocation will proceed."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:747
+#, no-c-format
+msgid ""
+"<literal>outcome</literal> &mdash; the JSF outcome when validation fails."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:752
+#, no-c-format
+msgid ""
+"<literal>refreshEntities</literal> &mdash; specifies that any invalid entity "
+"in the managed state should be refreshed from the database when validation "
+"fails. Default to <literal>false</literal>. (Useful with extended "
+"persistence contexts.)"
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:763
+#, no-c-format
+msgid "Annotations for Seam Remoting"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:764
+#, no-c-format
+msgid ""
+"Seam Remoting requires that the local interface of a session bean be "
+"annotated with the following annotation:"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:769
+#, no-c-format
+msgid "@WebRemote"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:771
+#, no-c-format
+msgid "@WebRemote(exclude=\"path.to.exclude\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:772
+#, no-c-format
+msgid ""
+"Indicates that the annotated method may be called from client-side "
+"JavaScript. The <literal>exclude</literal> property is optional and allows "
+"objects to be excluded from the result's object graph (see the Remoting "
+"chapter for more details)."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:781
+#, no-c-format
+msgid "Annotations for Seam interceptors"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:782
+#, no-c-format
+msgid "The following annotations appear on Seam interceptor classes."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:785
+#, no-c-format
+msgid ""
+"Please refer to the documentation for the EJB 3.0 specification for "
+"information about the annotations required for EJB interceptor definition."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:790
+#, no-c-format
+msgid "@Interceptor"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:792
+#, no-c-format
+msgid "@Interceptor(stateless=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:793
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is stateless and Seam may optimize "
+"replication."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:796
+#, no-c-format
+msgid "@Interceptor(type=CLIENT)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:797
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is a \"client-side\" interceptor that is "
+"called before the EJB container."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:800
+#, no-c-format
+msgid "@Interceptor(around={SomeInterceptor.class, OtherInterceptor.class})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:801
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is positioned higher in the stack than the "
+"given interceptors."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:804
+#, no-c-format
+msgid "@Interceptor(within={SomeInterceptor.class, OtherInterceptor.class})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:805
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is positioned deeper in the stack than the "
+"given interceptors."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:814
+#, no-c-format
+msgid "Annotations for asynchronicity"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:815
+#, no-c-format
+msgid ""
+"The following annotations are used to declare an asynchronous method, for "
+"example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:818
+#, no-c-format
+msgid ""
+"@Asynchronous public void scheduleAlert(Alert alert, @Expiration Date date) "
+"{ ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:819
+#, no-c-format
+msgid ""
+"@Asynchronous public Timer scheduleAlerts(Alert alert, @Expiration Date "
+"date, \n"
+"    @IntervalDuration long interval) { ... }"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:822
+#, no-c-format
+msgid "<literal>@Asynchronous</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:824
+#, no-c-format
+msgid "<programlisting>@Asynchronous</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:825
+#, no-c-format
+msgid "Specifies that the method call is processed asynchronously."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:831
+#, no-c-format
+msgid "<literal>@Duration</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:833
+#, no-c-format
+msgid "<programlisting>@Duration</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:834
+#, no-c-format
+msgid ""
+"Specifies that a parameter of the asynchronous call is the duration before "
+"the call is processed (or first processed for recurring calls)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:840
+#, no-c-format
+msgid "<literal>@Expiration</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:842
+#, no-c-format
+msgid "<programlisting>@Expiration</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:843
+#, no-c-format
+msgid ""
+"Specifies that a parameter of the asynchronous call is the datetime at which "
+"the call is processed (or first processed for recurring calls)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:849
+#, no-c-format
+msgid "<literal>@IntervalDuration</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:851
+#, no-c-format
+msgid "<programlisting>@IntervalDuration</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:852
+#, no-c-format
+msgid ""
+"Specifies that an asynchronous method call recurs, and that the annotationed "
+"parameter is duration between recurrences."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:861
+#, no-c-format
+msgid "Annotations for use with JSF <literal>dataTable</literal>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:862
+#, no-c-format
+msgid ""
+"The following annotations make it easy to implement clickable lists backed "
+"by a stateful session bean. They appear on attributes."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:867
+#, no-c-format
+msgid "@DataModel"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:869
+#, no-c-format
+msgid "@DataModel(\"variableName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:870
+#, no-c-format
+msgid ""
+"Exposes an attribute of type <literal>List</literal>, <literal>Map</"
+"literal>, <literal>Set</literal> or <literal>Object[]</literal> as a JSF "
+"<literal>DataModel</literal> into the scope of the owning component (or the "
+"<literal>EVENT</literal> scope if the owning component is "
+"<literal>STATELESS</literal>). In the case of <literal>Map</literal>, each "
+"row of the <literal>DataModel</literal> is a <literal>Map.Entry</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:875
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; name of the conversation context variable. "
+"Default to the attribute name."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:880
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; if <literal>scope=ScopeType.PAGE</literal> "
+"is explicitly specified, the <literal>DataModel</literal> will be kept in "
+"the <literal>PAGE</literal> context."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:888
+#, no-c-format
+msgid "<literal>@DataModelSelection</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:890
+#, no-c-format
+msgid "<programlisting>@DataModelSelection</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:891
+#, no-c-format
+msgid ""
+"Injects the selected value from the JSF <literal>DataModel</literal> (this "
+"is the element of the underlying collection, or the map value)."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:896 Annotations.xml:912
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; name of the conversation context variable. "
+"Not needed if there is exactly one <literal>@DataModel</literal> in the "
+"component."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:904
+#, no-c-format
+msgid "<literal>@DataModelSelectionIndex</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:906
+#, no-c-format
+msgid "<programlisting>@DataModelSelectionIndex</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:907
+#, no-c-format
+msgid ""
+"Exposes the selection index of the JSF <literal>DataModel</literal> as an "
+"attribute of the component (this is the row number of the underlying "
+"collection, or the map key)."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:923
+#, no-c-format
+msgid "Meta-annotations for databinding"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:924
+#, no-c-format
+msgid ""
+"These meta-annotations make it possible to implement similar functionality "
+"to <literal>@DataModel</literal> and <literal>@DataModelSelection</literal> "
+"for other datastructures apart from lists."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:929
+#, no-c-format
+msgid "@DataBinderClass"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:931
+#, no-c-format
+msgid "@DataBinderClass(DataModelBinder.class)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:932
+#, no-c-format
+msgid "Specifies that an annotation is a databinding annotation."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:938
+#, no-c-format
+msgid "@DataSelectorClass"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:940
+#, no-c-format
+msgid "@DataSelectorClass(DataModelSelector.class)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:941
+#, no-c-format
+msgid "Specifies that an annotation is a dataselection annotation."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:950
+#, no-c-format
+msgid "Annotations for packaging"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:951
+#, no-c-format
+msgid ""
+"This annotation provides a mechanism for declaring information about a set "
+"of components that are packaged together. It can be applied to any Java "
+"package."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:956
+#, no-c-format
+msgid "@Namespace"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:958
+#, no-c-format
+msgid "@Namespace(value=\"http://jboss.com/products/seam/example/seampay\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:959
+#, no-c-format
+msgid ""
+"Specifies that components in the current package are associated with the "
+"given namespace. The declared namespace can be used as an XML namespace in a "
+"<literal>components.xml</literal> file to simplify application configuration."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:962
+#, no-c-format
+msgid ""
+"@Namespace(value=\"http://jboss.com/products/seam/core\", prefix=\"org.jboss."
+"seam.core\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:963
+#, no-c-format
+msgid ""
+"Specifies a namespace to associate with a given package. Additionally, it "
+"specifies a component name prefix to be applied to component names specified "
+"in the XML file. For example, an XML element named <literal>microcontainer</"
+"literal> that is associated with this namespace would be understood to "
+"actually refere to a component named <literal>org.jboss.seam.core."
+"microcontainer</literal>."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Book_Info.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Book_Info.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Book_Info.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,38 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Book_Info.xml:10
+#, no-c-format
+msgid "Seam - Contextual Components"
+msgstr ""
+
+#. Tag: subtitle
+#: Book_Info.xml:11
+#, no-c-format
+msgid "A Framework for Java EE 5"
+msgstr ""
+
+#. Tag: para
+#: Book_Info.xml:15
+#, no-c-format
+msgid "This book is a Reference Guide for Seam"
+msgstr ""
+
+#. Tag: holder
+#: Book_Info.xml:36
+#, no-c-format
+msgid "&FORMAL-RHI;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Cache.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Cache.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Cache.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,318 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Cache.xml:10
+#, no-c-format
+msgid "Caching"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:11
+#, no-c-format
+msgid ""
+"In almost all enterprise applications, the database is the primary "
+"bottleneck, and the least scalable tier of the runtime environment. People "
+"from a PHP/Ruby environment will try to tell you that so-called \"shared "
+"nothing\" architectures scale well. While that may be literally true, I "
+"don't know of many interesting multi-user applications which can be "
+"implemented with no sharing of resources between different nodes of the "
+"cluster. What these silly people are really thinking of is a \"share nothing "
+"except for the database\" architecture. Of course, sharing the database is "
+"the primary problem with scaling a multi-user application&mdash;so the claim "
+"that this architecture is highly scalable is absurd, and tells you a lot "
+"about the kind of applications that these folks spend most of their time "
+"working on."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:14
+#, no-c-format
+msgid ""
+"Almost anything we can possibly do to share the database <emphasis>less "
+"often</emphasis> is worth doing."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:17
+#, no-c-format
+msgid ""
+"This calls for a cache. Well, not just one cache. A well designed Seam "
+"application will feature a rich, multi-layered caching strategy that impacts "
+"every layer of the application:"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:22
+#, no-c-format
+msgid ""
+"The database, of course, has its own cache. This is super-important, but "
+"can't scale like a cache in the application tier."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:27
+#, no-c-format
+msgid ""
+"Your ORM solution (Hibernate, or some other JPA implementation) has a second-"
+"level cache of data from the database. This is a very powerful capability, "
+"but is often misused. In a clustered environment, keeping the data in the "
+"cache transactionally consistent across the whole cluster, and with the "
+"database, is quite expensive. It makes most sense for data which is shared "
+"between many users, and is updated rarely. In traditional stateless "
+"architectures, people often try to use the second-level cache for "
+"conversational state. This is always bad, and is especially wrong in Seam."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:32
+#, no-c-format
+msgid ""
+"The Seam conversation context is a cache of conversational state. Components "
+"you put into the conversation context can hold and cache state relating to "
+"the current user interaction."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:37
+#, no-c-format
+msgid ""
+"In particular, the Seam-managed persistence context (or an extended EJB "
+"container-managed persistence context associated with a conversation-scoped "
+"stateful session bean) acts as a cache of data that has been read in the "
+"current conversation. This cache tends to have a pretty high hitrate! Seam "
+"optimizes the replication of Seam-managed persistence contexts in a "
+"clustered environment, and there is no requirement for transactional "
+"consistency with the database (optimistic locking is sufficient) so you "
+"don't need to worry too much about the performance implications of this "
+"cache, unless you read thousands of objects into a single persistence "
+"context."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:42
+#, no-c-format
+msgid ""
+"The application can cache non-transactional state in the Seam application "
+"context. State kept in the application context is of course not visible to "
+"other nodes in the cluster."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:47
+#, no-c-format
+msgid ""
+"The application can cache transactional state using the Seam "
+"<literal>pojoCache</literal> component, which integrates JBossCache into the "
+"Seam environment. This state will be visible to other nodes if you run JBoss "
+"cache in a clustered mode."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:52
+#, no-c-format
+msgid ""
+"Finally, Seam lets you cache rendered fragments of a JSF page. Unlike the "
+"ORM second-level cache, this cache is not automatically invalidated when "
+"data changes, so you need to write application code to perform explicit "
+"invalidation, or set appropriate expiration policies."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:57
+#, no-c-format
+msgid ""
+"For more information about the second-level cache, you'll need to refer to "
+"the documentation of your ORM solution, since this is an extremely complex "
+"topic. In this section we'll discuss the use of JBossCache directly, via the "
+"<literal>pojoCache</literal> component, or as the page fragment cache, via "
+"the <literal>&lt;s:cache&gt;</literal> control."
+msgstr ""
+
+#. Tag: title
+#: Cache.xml:61
+#, no-c-format
+msgid "Using JBossCache in Seam"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:62
+#, no-c-format
+msgid ""
+"The built-in <literal>pojoCache</literal> component manages an instance of "
+"<literal>org.jboss.cache.aop.PojoCache</literal>. You can safely put any "
+"immutable Java object in the cache, and it will be replicated across the "
+"cluster (assuming that replication is enabled). If you want to keep mutable "
+"objects in the cache, you'll need to run the JBossCache bytecode "
+"preprocessor to ensure that changes to the objects will be automatically "
+"detected and replicated."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:65
+#, no-c-format
+msgid ""
+"To use <literal>pojoCache</literal>, all you need to do is put the "
+"JBossCache jars in the classpath, and provide a resource named "
+"<literal>treecache.xml</literal> with an appropriate cache configuration. "
+"JBossCache has many scary and confusing configuration settings, so we won't "
+"discuss them here. Please refer to the JBossCache documentation for more "
+"information."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:68
+#, no-c-format
+msgid ""
+"For an EAR depoyment of Seam, we recommend that the JBossCache jars and "
+"configuration go directly into the EAR. Make sure you declare the jars in "
+"<literal>application.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:71
+#, no-c-format
+msgid "Now you can inject the cache into any Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:74
+#, no-c-format
+msgid ""
+"@Name(\"chatroom\")\n"
+"public class Chatroom {\n"
+"    @In PojoCache pojoCache;\n"
+"    \n"
+"    public void join(String username) {\n"
+"      try\n"
+"      {\n"
+"         Set&lt;String&gt; userList = (Set&lt;String&gt;) pojoCache.get"
+"(\"chatroom\", \"userList\");\n"
+"         if (userList==null) \n"
+"         {\n"
+"            userList = new HashSet&lt;String&gt;();\n"
+"            pojoCache.put(\"chatroom\", \"userList\", userList);\n"
+"         }\n"
+"         userList.put(username);\n"
+"      }\n"
+"      catch (CacheException ce)\n"
+"      {\n"
+"         throw new RuntimeException(ce);\n"
+"      }\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:75
+#, no-c-format
+msgid ""
+"If you want to have multiple JBossCache configurations in your application, "
+"use <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:78
+#, no-c-format
+msgid ""
+"&lt;core:pojo-cache name=\"myCache\" cfg-resource-name=\"myown/cache.xml\"/"
+"&gt;"
+msgstr ""
+
+#. Tag: title
+#: Cache.xml:82
+#, no-c-format
+msgid "Page fragment caching"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:83
+#, no-c-format
+msgid ""
+"The most interesting user of JBossCache is the <literal>&lt;s:cache&gt;</"
+"literal> tag, Seam's solution to the problem of page fragment caching in "
+"JSF. <literal>&lt;s:cache&gt;</literal> uses <literal>pojoCache</literal> "
+"internally, so you need to follow the steps listed above before you can use "
+"it. (Put the jars in the EAR, wade through the scary configuration options, "
+"etc.)"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:86
+#, no-c-format
+msgid ""
+"<literal>&lt;s:cache&gt;</literal> is used for caching some rendered content "
+"which changes rarely. For example, the welcome page of our blog displays the "
+"recent blog entries:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:89
+#, no-c-format
+msgid ""
+"&lt;s:cache key=\"recentEntries-#{blog.id}\" region=\"welcomePageFragments"
+"\"&gt;\n"
+"   &lt;h:dataTable value=\"#{blog.recentEntries}\" var=\"blogEntry\"&gt;\n"
+"      &lt;h:column&gt;\n"
+"         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"         &lt;div&gt;\n"
+"            &lt;s:formattedText value=\"#{blogEntry.body}\"/&gt;\n"
+"         &lt;/div&gt;\n"
+"      &lt;/h:column&gt;\n"
+"   &lt;/h:dataTable&gt;\n"
+"&lt;/s:cache&gt;"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:90
+#, no-c-format
+msgid ""
+"The <literal>key</literal> let's you have multiple cached versions of each "
+"page fragment. In this case, there is one cached version per blog. The "
+"<literal>region</literal> determines the JBossCache node that all version "
+"will be stored in. Different nodes may have different expiry policies. "
+"(That's the stuff you set up using the aforementioned scary configuration "
+"options.)"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:93
+#, no-c-format
+msgid ""
+"Of course, the big problem with <literal>&lt;s:cache&gt;</literal> is that "
+"it is too stupid to know when the underlying data changes (for example, when "
+"the blogger posts a new entry). So you need to evict the cached fragment "
+"manually:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:96
+#, no-c-format
+msgid ""
+"public void post() {\n"
+"    ...\n"
+"    entityManager.persist(blogEntry);\n"
+"    pojoCache.remove(\"welcomePageFragments\", \"recentEntries-\" + blog."
+"getId() );\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:97
+#, no-c-format
+msgid ""
+"Alternatively, if it is not critical that changes are immediately visible to "
+"the user, you could set a short expiry time on the JbossCache node."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Components.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Components.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Components.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2007 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Components.xml:10
+#, no-c-format
+msgid "Built-in Seam components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:11
+#, no-c-format
+msgid ""
+"This chapter describes Seam's built-in components, and their configuration "
+"properties."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:14
+#, no-c-format
+msgid ""
+"Note that you can replace any of the built in components with your own "
+"implementations simply by specifying the name of one of the built in "
+"components on your own class using <literal>@Name</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:17
+#, no-c-format
+msgid ""
+"Note also that even though all the built in components use a qualified name, "
+"most of them are aliased to unqualified names by default. These aliases "
+"specify <literal>auto-create=\"true\"</literal>, so you do not need to use "
+"<literal>create=true</literal> when injecting built-in components by their "
+"unqualified name."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:21
+#, no-c-format
+msgid "Context injection components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:22
+#, no-c-format
+msgid ""
+"The first set of built in components exist purely to support injection of "
+"various contextual objects. For example, the following component instance "
+"variable would have the Seam session context object injected:"
+msgstr ""
+
+#. Tag: programlisting
+#: Components.xml:25
+#, no-c-format
+msgid "@In private Context sessionContext;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:28
+#, no-c-format
+msgid "org.jboss.seam.core.eventContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:30
+#, no-c-format
+msgid "Manager component for the event context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:36
+#, no-c-format
+msgid "org.jboss.seam.core.pageContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:38
+#, no-c-format
+msgid "Manager component for the page context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:44
+#, no-c-format
+msgid "org.jboss.seam.core.conversationContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:46
+#, no-c-format
+msgid "Manager component for the conversation context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:52
+#, no-c-format
+msgid "org.jboss.seam.core.sessionContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:54
+#, no-c-format
+msgid "Manager component for the session context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:60
+#, no-c-format
+msgid "org.jboss.seam.core.applicationContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:62
+#, no-c-format
+msgid "Manager component for the appication context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:68
+#, no-c-format
+msgid "org.jboss.seam.core.businessProcessContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:70
+#, no-c-format
+msgid "Manager component for the business process context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:76
+#, no-c-format
+msgid "org.jboss.seam.core.facesContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:78
+#, no-c-format
+msgid ""
+"Manager component for the <literal>FacesContext</literal> context object "
+"(not a true Seam context)"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:84 Components.xml:267 Components.xml:441 Components.xml:572
+#, no-c-format
+msgid "All of these components are always installed."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:90
+#, no-c-format
+msgid "Utility components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:91
+#, no-c-format
+msgid "These components are merely useful."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:96
+#, no-c-format
+msgid "org.jboss.seam.core.facesMessages"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:98
+#, no-c-format
+msgid "Allows faces success messages to propagate across a browser redirect."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:103
+#, no-c-format
+msgid ""
+"<literal>add(FacesMessage facesMessage)</literal> &mdash; add a faces "
+"message, which will be displayed during the next render response phase that "
+"occurs in the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:108
+#, no-c-format
+msgid ""
+"<literal>add(String messageTemplate)</literal> &mdash; add a faces message, "
+"rendered from the given message template which may contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:113
+#, no-c-format
+msgid ""
+"<literal>add(Severity severity, String messageTemplate)</literal> &mdash; "
+"add a faces message, rendered from the given message template which may "
+"contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:118
+#, no-c-format
+msgid ""
+"<literal>addFromResourceBundle(String key)</literal> &mdash; add a faces "
+"message, rendered from a message template defined in the Seam resource "
+"bundle which may contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:123
+#, no-c-format
+msgid ""
+"<literal>addFromResourceBundle(Severity severity, String key)</literal> "
+"&mdash; add a faces message, rendered from a message template defined in the "
+"Seam resource bundle which may contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:128
+#, no-c-format
+msgid "<literal>clear()</literal> &mdash; clear all messages."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:136
+#, no-c-format
+msgid "org.jboss.seam.core.redirect"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:138
+#, no-c-format
+msgid ""
+"A convenient API for performing redirects with parameters (this is "
+"especially useful for bookmarkable search results screens)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:143
+#, no-c-format
+msgid ""
+"<literal>redirect.viewId</literal> &mdash; the JSF view id to redirect to."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:148
+#, no-c-format
+msgid ""
+"<literal>redirect.conversationPropagationEnabled</literal> &mdash; "
+"determines whether the conversation will propagate across the redirect."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:153
+#, no-c-format
+msgid ""
+"<literal>redirect.parameters</literal> &mdash; a map of request parameter "
+"name to value, to be passed in the redirect request."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:158
+#, no-c-format
+msgid "<literal>execute()</literal> &mdash; perform the redirect immediately."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:163
+#, no-c-format
+msgid ""
+"<literal>captureCurrentRequest()</literal> &mdash; stores the view id and "
+"request parameters of the current GET request (in the conversation context), "
+"for later use by calling <literal>execute()</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:171
+#, no-c-format
+msgid "org.jboss.seam.core.httpError"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:173
+#, no-c-format
+msgid "A convenient API for sending HTTP errors."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:179
+#, no-c-format
+msgid "org.jboss.seam.core.events"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:181
+#, no-c-format
+msgid ""
+"An API for raising events that can be observed via <literal>@Observer</"
+"literal> methods, or method bindings in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:186
+#, no-c-format
+msgid ""
+"<literal>raiseEvent(String type)</literal> &mdash; raise an event of a "
+"particular type and distribute to all observers."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:191
+#, no-c-format
+msgid ""
+"<literal>raiseAsynchronousEvent(String type)</literal> &mdash; raise an "
+"event to be processed asynchronously by the EJB3 timer service."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:196
+#, no-c-format
+msgid ""
+"<literal>raiseTimedEvent(String type, ....)</literal> &mdash; schedule an "
+"event to be processed asynchronously by the EJB3 timer service."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:201
+#, no-c-format
+msgid ""
+"<literal>addListener(String type, String methodBinding)</literal> &mdash; "
+"add an observer for a particular event type."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:209
+#, no-c-format
+msgid "org.jboss.seam.core.interpolator"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:211
+#, no-c-format
+msgid "An API for interpolating the values of JSF EL expressions in Strings."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:216
+#, no-c-format
+msgid ""
+"<literal>interpolate(String template)</literal> &mdash; scan the template "
+"for JSF EL expressions of the form <literal>#{...}</literal> and replace "
+"them with their evaluated values."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:224
+#, no-c-format
+msgid "org.jboss.seam.core.expressions"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:226
+#, no-c-format
+msgid "An API for creating value and method bindings."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:231
+#, no-c-format
+msgid ""
+"<literal>createValueBinding(String expression)</literal> &mdash; create a "
+"value binding object."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:236
+#, no-c-format
+msgid ""
+"<literal>createMethodBinding(String expression)</literal> &mdash; create a "
+"method binding object."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:244
+#, no-c-format
+msgid "org.jboss.seam.core.pojoCache"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:246
+#, no-c-format
+msgid ""
+"Manager component for a JBoss Cache <literal>PojoCache</literal> instance."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:251
+#, no-c-format
+msgid ""
+"<literal>pojoCache.cfgResourceName</literal> &mdash; the name of the "
+"configuration file. Default to <literal>treecache.xml</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:259
+#, no-c-format
+msgid "org.jboss.seam.core.uiComponent"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:261
+#, no-c-format
+msgid ""
+"Allows access to a JSF <literal>UIComponent</literal> by its id from the EL. "
+"For example, we can write <literal>@In(\"#{uiComponent['myForm:address']."
+"value}\")</literal>."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:273
+#, no-c-format
+msgid "Components for internationalization and themes"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:274
+#, no-c-format
+msgid ""
+"The next group of components make it easy to build internationalized user "
+"interfaces using Seam."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:279
+#, no-c-format
+msgid "org.jboss.seam.core.locale"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:281
+#, no-c-format
+msgid "The Seam locale. The locale is session scoped."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:287
+#, no-c-format
+msgid "org.jboss.seam.core.timezone"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:289
+#, no-c-format
+msgid "The Seam timezone. The timezone is session scoped."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:295
+#, no-c-format
+msgid "org.jboss.seam.core.resourceBundle"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:297
+#, no-c-format
+msgid ""
+"The Seam resource bundle. The resource bundle is session scoped. The Seam "
+"resource bundle performs a depth-first search for keys in a list of Java "
+"resource bundles."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:302
+#, no-c-format
+msgid ""
+"<literal>resourceBundle.bundleNames</literal> &mdash; the names of the Java "
+"resource bundles to search. Default to <literal>messages</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:310
+#, no-c-format
+msgid "org.jboss.seam.core.localeSelector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:312
+#, no-c-format
+msgid ""
+"Supports selection of the locale either at configuration time, or by the "
+"user at runtime."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:317 Components.xml:367
+#, no-c-format
+msgid "<literal>select()</literal> &mdash; select the specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:322
+#, no-c-format
+msgid ""
+"<literal>localeSelector.locale</literal> &mdash; the actual <literal>java."
+"util.Locale</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:327
+#, no-c-format
+msgid ""
+"<literal>localeSelector.localeString</literal> &mdash; the stringified "
+"representation of the locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:332
+#, no-c-format
+msgid ""
+"<literal>localeSelector.language</literal> &mdash; the language for the "
+"specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:337
+#, no-c-format
+msgid ""
+"<literal>localeSelector.country</literal> &mdash; the country for the "
+"specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:342
+#, no-c-format
+msgid ""
+"<literal>localeSelector.variant</literal> &mdash; the variant for the "
+"specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:347
+#, no-c-format
+msgid ""
+"<literal>localeSelector.supportedLocales</literal> &mdash; a list of "
+"<literal>SelectItem</literal>s representing the supported locales listed in "
+"<literal>jsf-config.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:352
+#, no-c-format
+msgid ""
+"<literal>localeSelector.cookieEnabled</literal> &mdash; specifies that the "
+"locale selection should be persisted via a cookie."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:360
+#, no-c-format
+msgid "org.jboss.seam.core.timezoneSelector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:362
+#, no-c-format
+msgid ""
+"Supports selection of the timezone either at configuration time, or by the "
+"user at runtime."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:372
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.timezone</literal> &mdash; the actual "
+"<literal>java.util.TimeZone</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:377
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.timeZoneId</literal> &mdash; the stringified "
+"representation of the timezone."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:382
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.cookieEnabled</literal> &mdash; specifies that the "
+"timezone selection should be persisted via a cookie."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:390
+#, no-c-format
+msgid "org.jboss.seam.core.messages"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:392
+#, no-c-format
+msgid ""
+"A map containing internationalized messages rendered from message templates "
+"defined in the Seam resource bundle."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:398
+#, no-c-format
+msgid "org.jboss.seam.theme.themeSelector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:400
+#, no-c-format
+msgid ""
+"Supports selection of the theme either at configuration time, or by the user "
+"at runtime."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:405
+#, no-c-format
+msgid "<literal>select()</literal> &mdash; select the specified theme."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:410
+#, no-c-format
+msgid ""
+"<literal>theme.availableThemes</literal> &mdash; the list of defined themes."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:415
+#, no-c-format
+msgid "<literal>themeSelector.theme</literal> &mdash; the selected theme."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:420
+#, no-c-format
+msgid ""
+"<literal>themeSelector.themes</literal> &mdash; a list of "
+"<literal>SelectItem</literal>s representing the defined themes."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:425
+#, no-c-format
+msgid ""
+"<literal>themeSelector.cookieEnabled</literal> &mdash; specifies that the "
+"theme selection should be persisted via a cookie."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:433
+#, no-c-format
+msgid "org.jboss.seam.theme.theme"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:435
+#, no-c-format
+msgid "A map containing theme entries."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:447
+#, no-c-format
+msgid "Components for controlling conversations"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:448
+#, no-c-format
+msgid ""
+"The next group of components allow control of conversations by the "
+"application or user interface."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:453
+#, no-c-format
+msgid "org.jboss.seam.core.conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:455
+#, no-c-format
+msgid ""
+"API for application control of attributes of the current Seam conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:460 Components.xml:475
+#, no-c-format
+msgid "<literal>getId()</literal> &mdash; returns the current conversation id"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:465
+#, no-c-format
+msgid ""
+"<literal>isNested()</literal> &mdash; is the current conversation a nested "
+"conversation?"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:470
+#, no-c-format
+msgid ""
+"<literal>isLongRunning()</literal> &mdash; is the current conversation a "
+"long-running conversation?"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:480
+#, no-c-format
+msgid ""
+"<literal>getParentId()</literal> &mdash; returns the conversation id of the "
+"parent conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:485
+#, no-c-format
+msgid ""
+"<literal>getRootId()</literal> &mdash; returns the conversation id of the "
+"root conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:490
+#, no-c-format
+msgid ""
+"<literal>setTimeout(int timeout)</literal> &mdash; sets the timeout for the "
+"current conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:495
+#, no-c-format
+msgid ""
+"<literal>setViewId(String outcome)</literal> &mdash; sets the view id to be "
+"used when switching back to the current conversation from the conversation "
+"switcher, conversation list, or breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:500
+#, no-c-format
+msgid ""
+"<literal>setDescription(String description)</literal> &mdash; sets the "
+"description of the current conversation to be displayed in the conversation "
+"switcher, conversation list, or breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:505
+#, no-c-format
+msgid ""
+"<literal>redirect()</literal> &mdash; redirect to the last well-defined view "
+"id for this conversation (useful after login challenges)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:510
+#, no-c-format
+msgid ""
+"<literal>leave()</literal> &mdash; exit the scope of this conversation, "
+"without actually ending the conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:515
+#, no-c-format
+msgid ""
+"<literal>begin()</literal> &mdash; begin a long-running conversation "
+"(equivalent to <literal>@Begin</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:520
+#, no-c-format
+msgid ""
+"<literal>beginPageflow(String pageflowName)</literal> &mdash; begin a long-"
+"running conversation with a pageflow (equivalent to <literal>@Begin(pageflow="
+"\"...\")</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:525
+#, no-c-format
+msgid ""
+"<literal>end()</literal> &mdash; end a long-running conversation (equivalent "
+"to <literal>@End</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:530
+#, no-c-format
+msgid ""
+"<literal>pop()</literal> &mdash; pop the conversation stack, returning to "
+"the parent conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:535
+#, no-c-format
+msgid ""
+"<literal>root()</literal> &mdash; return to the root conversation of the "
+"conversation stack."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:540
+#, no-c-format
+msgid ""
+"<literal>changeFlushMode(FlushModeType flushMode)</literal> &mdash; change "
+"the flush mode of the conversation."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:548
+#, no-c-format
+msgid "org.jboss.seam.core.conversationList"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:550
+#, no-c-format
+msgid "Manager component for the conversation list."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:556
+#, no-c-format
+msgid "org.jboss.seam.core.conversationStack"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:558
+#, no-c-format
+msgid "Manager component for the conversation stack (breadcrumbs)."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:564
+#, no-c-format
+msgid "org.jboss.seam.core.switcher"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:566
+#, no-c-format
+msgid "The conversation switcher."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:578
+#, no-c-format
+msgid "jBPM-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:579
+#, no-c-format
+msgid "These components are for use with jBPM."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:584
+#, no-c-format
+msgid "org.jboss.seam.core.pageflow"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:586
+#, no-c-format
+msgid "API control of Seam pageflows."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:591
+#, no-c-format
+msgid ""
+"<literal>isInProcess()</literal> &mdash; returns <literal>true</literal> if "
+"there is currently a pageflow in process"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:596
+#, no-c-format
+msgid ""
+"<literal>getProcessInstance()</literal> &mdash; returns jBPM "
+"<literal>ProcessInstance</literal> for the current pageflow"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:601
+#, no-c-format
+msgid ""
+"<literal>begin(String pageflowName)</literal> &mdash; begin a pageflow in "
+"the context of the current conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:606
+#, no-c-format
+msgid ""
+"<literal>reposition(String nodeName)</literal> &mdash; reposition the "
+"current pageflow to a particular node"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:614
+#, no-c-format
+msgid "org.jboss.seam.core.actor"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:616
+#, no-c-format
+msgid ""
+"API for application control of attributes of the jBPM actor associated with "
+"the current session."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:621
+#, no-c-format
+msgid ""
+"<literal>setId(String actorId)</literal> &mdash; sets the jBPM actor id of "
+"the current user."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:626
+#, no-c-format
+msgid ""
+"<literal>getGroupActorIds()</literal> &mdash; returns a <literal>Set</"
+"literal> to which jBPM actor ids for the current users groups may be added."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:634
+#, no-c-format
+msgid "org.jboss.seam.core.transition"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:636
+#, no-c-format
+msgid ""
+"API for application control of the jBPM transition for the current task."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:641
+#, no-c-format
+msgid ""
+"<literal>setName(String transitionName)</literal> &mdash; sets the jBPM "
+"transition name to be used when the current task is ended via "
+"<literal>@EndTask</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:649
+#, no-c-format
+msgid "org.jboss.seam.core.businessProcess"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:651
+#, no-c-format
+msgid ""
+"API for programmatic control of the association between the conversation and "
+"business process."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:656
+#, no-c-format
+msgid ""
+"<literal>businessProcess.taskId</literal> &mdash; the id of the task "
+"associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:661
+#, no-c-format
+msgid ""
+"<literal>businessProcess.processId</literal> &mdash; the id of the process "
+"associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:666
+#, no-c-format
+msgid ""
+"<literal>businessProcess.hasCurrentTask()</literal> &mdash; is a task "
+"instance associated with the current conversation?"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:671
+#, no-c-format
+msgid ""
+"<literal>businessProcess.hasCurrentProcess()</literal> &mdash; is a process "
+"instance associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:676
+#, no-c-format
+msgid ""
+"<literal>createProcess(String name)</literal> &mdash; create an instance of "
+"the named process definition and associate it with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:681
+#, no-c-format
+msgid ""
+"<literal>startTask()</literal> &mdash; start the task associated with the "
+"current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:686
+#, no-c-format
+msgid ""
+"<literal>endTask(String transitionName)</literal> &mdash; end the task "
+"associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:691
+#, no-c-format
+msgid ""
+"<literal>resumeTask(Long id)</literal> &mdash; associate the task with the "
+"given id with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:696
+#, no-c-format
+msgid ""
+"<literal>resumeProcess(Long id)</literal> &mdash; associate the process with "
+"the given id with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:701
+#, no-c-format
+msgid ""
+"<literal>transition(String transitionName)</literal> &mdash; trigger the "
+"transition."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:709
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstance"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:711
+#, no-c-format
+msgid "Manager component for the jBPM <literal>TaskInstance</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:717
+#, no-c-format
+msgid "org.jboss.seam.core.processInstance"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:719
+#, no-c-format
+msgid "Manager component for the jBPM <literal>ProcessInstance</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:725
+#, no-c-format
+msgid "org.jboss.seam.core.jbpmContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:727
+#, no-c-format
+msgid "Manager component for an event-scoped <literal>JbpmContext</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:733
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstanceList"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:735
+#, no-c-format
+msgid "Manager component for the jBPM task list."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:741
+#, no-c-format
+msgid "org.jboss.seam.core.pooledTaskInstanceList"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:743
+#, no-c-format
+msgid "Manager component for the jBPM pooled task list."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:749
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstanceListForType"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:751
+#, no-c-format
+msgid "Manager component for the jBPM task lists."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:757
+#, no-c-format
+msgid "org.jboss.seam.core.pooledTask"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:759
+#, no-c-format
+msgid "Action handler for pooled task assignment."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:765
+#, no-c-format
+msgid ""
+"All of these components are installed whenever the component <literal>org."
+"jboss.seam.core.jbpm</literal> is installed."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:771
+#, no-c-format
+msgid "Security-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:772
+#, no-c-format
+msgid "These components relate to web-tier security."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:777
+#, no-c-format
+msgid "org.jboss.seam.core.userPrincipal"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:779
+#, no-c-format
+msgid "Manager component for the current user <literal>Principal</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:785
+#, no-c-format
+msgid "org.jboss.seam.core.isUserInRole"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:787
+#, no-c-format
+msgid ""
+"Allows JSF pages to choose to render a control, depending upon the roles "
+"available to the current principal. <literal>&lt;h:commandButton value=\"edit"
+"\" rendered=\"#{isUserInRole['admin']}\"/&gt;</literal>."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:796
+#, no-c-format
+msgid "JMS-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:797
+#, no-c-format
+msgid ""
+"These components are for use with managed <literal>TopicPublisher</literal>s "
+"and <literal>QueueSender</literal>s (see below)."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:802
+#, no-c-format
+msgid "org.jboss.seam.jms.queueSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:804
+#, no-c-format
+msgid "Manager component for a JMS <literal>QueueSession</literal> ."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:810
+#, no-c-format
+msgid "org.jboss.seam.jms.topicSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:812
+#, no-c-format
+msgid "Manager component for a JMS <literal>TopicSession</literal> ."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:821
+#, no-c-format
+msgid "Mail-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:822
+#, no-c-format
+msgid "These components are for use with Seam's Email support"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:827
+#, no-c-format
+msgid "org.jboss.seam.mail.mailSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:829
+#, no-c-format
+msgid "Manager component for a JavaMail <literal>Session</literal> ."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:834
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.host</literal> &mdash; the hostname "
+"of the SMTP server to use"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:839
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.port</literal> &mdash; the port of "
+"the SMTP server to use"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:844
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.username</literal> &mdash; the "
+"username to use to connect to the SMTP server."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:849
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.password</literal> &mdash; the "
+"password to use to connect to the SMTP server"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:854
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.debug</literal> &mdash; enable "
+"JavaMail debugging (very verbose)"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:859
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.sessionJndiName</literal> &mdash; "
+"name under which a javax.mail.Session is bound to JNDI"
+msgstr ""
+
+#. Tag: title
+#: Components.xml:870
+#, no-c-format
+msgid "Infrastructural components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:871
+#, no-c-format
+msgid ""
+"These components provide critical platform infrastructure. You can install a "
+"component by including its class name in the <literal>org.jboss.seam.core."
+"init.componentClasses</literal> configuration property."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:876
+#, no-c-format
+msgid "org.jboss.seam.core.init"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:878
+#, no-c-format
+msgid "Initialization settings for Seam. Always installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:883
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.jndiPattern</literal> &mdash; the JNDI "
+"pattern used for looking up session beans"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:888
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.debug</literal> &mdash; enable Seam debug "
+"mode"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:893
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.clientSideConversations</literal> &mdash; "
+"if set to <literal>true</literal>, Seam will save conversation context "
+"variables in the client instead of in the <literal>HttpSession</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:898
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.userTransactionName</literal> &mdash; the "
+"JNDI name to use when looking up the JTA <literal>UserTransaction</literal> "
+"object."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:906
+#, no-c-format
+msgid "org.jboss.seam.core.manager"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:908
+#, no-c-format
+msgid ""
+"Internal component for Seam page and conversation context management. Always "
+"installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:913
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationTimeout</literal> &mdash; "
+"the conversation context timeout in milliseconds."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:918
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.concurrentRequestTimeout</literal> "
+"&mdash; maximum wait time for a thread attempting to gain a lock on the long-"
+"running conversation context."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:923
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationIdParameter</literal> "
+"&mdash; the request parameter used to propagate the conversation id, default "
+"to <literal>conversationId</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:928
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationIsLongRunningParameter</"
+"literal> &mdash; the request parameter used to propagate information about "
+"whether the conversation is long-running, default to "
+"<literal>conversationIsLongRunning</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:936
+#, no-c-format
+msgid "org.jboss.seam.core.pages"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:938
+#, no-c-format
+msgid "Internal component for Seam workspace management. Always installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:943
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.pages.noConversationViewId</literal> &mdash; "
+"global setting for the view id to redirect to when a conversation entry is "
+"not found on the server side."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:951
+#, no-c-format
+msgid "org.jboss.seam.core.ejb"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:953
+#, no-c-format
+msgid ""
+"Bootstraps the JBoss Embeddable EJB3 container. Install as class "
+"<literal>org.jboss.seam.core.Ejb</literal>. This is useful when using Seam "
+"with EJB components outside the context of a Java EE 5 application server."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:956
+#, no-c-format
+msgid ""
+"The basic Embedded EJB configuration is defined in <literal>jboss-embedded-"
+"beans.xml</literal>. Additional microcontainer configuration (for example, "
+"extra datasources) may be specified by <literal>jboss-beans.xml</literal> or "
+"<literal>META-INF/jboss-beans.xml</literal> in the classpath."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:962
+#, no-c-format
+msgid "org.jboss.seam.core.microcontainer"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:964
+#, no-c-format
+msgid ""
+"Bootstraps the JBoss microcontainer. Install as class <literal>org.jboss."
+"seam.core.Microcontainer</literal>. This is useful when using Seam with "
+"Hibernate and no EJB components outside the context of a Java EE application "
+"server. The microcontainer can provide a partial EE environment with JNDI, "
+"JTA, a JCA datasource and Hibernate."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:967
+#, no-c-format
+msgid ""
+"The microcontainer configuration may be specified by <literal>jboss-beans."
+"xml</literal> or <literal>META-INF/jboss-beans.xml</literal> in the "
+"classpath."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:973
+#, no-c-format
+msgid "org.jboss.seam.core.jbpm"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:975
+#, no-c-format
+msgid ""
+"Bootstraps a <literal>JbpmConfiguration</literal>. Install as class "
+"<literal>org.jboss.seam.core.Jbpm</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:980
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.jbpm.processDefinitions</literal> &mdash; a "
+"list of resource names of jPDL files to be used for orchestration of "
+"business processes."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:985
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.jbpm.pageflowDefinitions</literal> &mdash; a "
+"list of resource names of jPDL files to be used for orchestration of "
+"conversation page flows."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:993
+#, no-c-format
+msgid "org.jboss.seam.core.conversationEntries"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:995
+#, no-c-format
+msgid ""
+"Internal session-scoped component recording the active long-running "
+"conversations between requests."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1001
+#, no-c-format
+msgid "org.jboss.seam.core.facesPage"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1003
+#, no-c-format
+msgid ""
+"Internal page-scoped component recording the conversation context associated "
+"with a page."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1009
+#, no-c-format
+msgid "org.jboss.seam.core.persistenceContexts"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1011
+#, no-c-format
+msgid ""
+"Internal component recording the persistence contexts which were used in the "
+"current conversation."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1017
+#, no-c-format
+msgid "org.jboss.seam.jms.queueConnection"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1019
+#, no-c-format
+msgid ""
+"Manages a JMS <literal>QueueConnection</literal>. Installed whenever managed "
+"managed <literal>QueueSender</literal> is installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1024
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.jms.queueConnection.queueConnectionFactoryJndiName</"
+"literal> &mdash; the JNDI name of a JMS <literal>QueueConnectionFactory</"
+"literal>. Default to <literal>UIL2ConnectionFactory</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1032
+#, no-c-format
+msgid "org.jboss.seam.jms.topicConnection"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1034
+#, no-c-format
+msgid ""
+"Manages a JMS <literal>TopicConnection</literal>. Installed whenever managed "
+"managed <literal>TopicPublisher</literal> is installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1039
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.jms.topicConnection.topicConnectionFactoryJndiName</"
+"literal> &mdash; the JNDI name of a JMS <literal>TopicConnectionFactory</"
+"literal>. Default to <literal>UIL2ConnectionFactory</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1047
+#, no-c-format
+msgid "org.jboss.seam.persistence.persistenceProvider"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1049
+#, no-c-format
+msgid "Abstraction layer for non-standardized features of JPA provider."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1055
+#, no-c-format
+msgid "org.jboss.seam.core.validation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1057
+#, no-c-format
+msgid "Internal component for Hibernate Validator support."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1063
+#, no-c-format
+msgid "org.jboss.seam.debug.introspector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1065 Components.xml:1073
+#, no-c-format
+msgid "Support for the Seam Debug Page."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1071
+#, no-c-format
+msgid "org.jboss.seam.debug.contexts"
+msgstr ""
+
+#. Tag: title
+#: Components.xml:1082
+#, no-c-format
+msgid "Special components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1083
+#, no-c-format
+msgid ""
+"Certain special Seam component classes are installable multiple times under "
+"names specified in the Seam configuration. For example, the following lines "
+"in <literal>components.xml</literal> install and configure two Seam "
+"components:"
+msgstr ""
+
+#. Tag: programlisting
+#: Components.xml:1086
+#, no-c-format
+msgid ""
+"&lt;component name=\"bookingDatabase\"\n"
+"          class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"    &lt;property name=\"persistenceUnitJndiName\"&gt;java:/comp/emf/"
+"bookingPersistence&lt;/property&gt;\n"
+"&lt;/component&gt;\n"
+"\n"
+"&lt;component name=\"userDatabase\"\n"
+"          class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"    &lt;property name=\"persistenceUnitJndiName\"&gt;java:/comp/emf/"
+"userPersistence&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1087
+#, no-c-format
+msgid ""
+"The Seam component names are <literal>bookingDatabase</literal> and "
+"<literal>userDatabase</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1092
+#, no-c-format
+msgid "&lt;entityManager&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1093
+#, no-c-format
+msgid "org.jboss.seam.core.ManagedPersistenceContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1095
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed <literal>EntityManager</"
+"literal> with an extended persistence context."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1100
+#, no-c-format
+msgid ""
+"<literal>&lt;entityManager&gt;.entityManagerFactory</literal> &mdash; a "
+"value binding expression that evaluates to an instance of "
+"<literal>EntityManagerFactory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1103
+#, no-c-format
+msgid ""
+"<literal>&lt;entityManager&gt;.persistenceUnitJndiName</literal> &mdash; the "
+"JNDI name of the entity manager factory, default to <literal>java:/&lt;"
+"managedPersistenceContext&gt;</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1111
+#, no-c-format
+msgid "&lt;entityManagerFactory&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1112
+#, no-c-format
+msgid "org.jboss.seam.core.EntityManagerFactory"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1114
+#, no-c-format
+msgid ""
+"Manages a JPA <literal>EntityManagerFactory</literal>. This is most useful "
+"when using JPA outside of an EJB 3.0 supporting environment."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1119
+#, no-c-format
+msgid ""
+"<literal>entityManagerFactory.persistenceUnitName</literal> &mdash; the name "
+"of the persistence unit."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1124 Components.xml:1162
+#, no-c-format
+msgid "See the API JavaDoc for further configuration properties."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1130
+#, no-c-format
+msgid "&lt;session&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1131
+#, no-c-format
+msgid "org.jboss.seam.core.ManagedSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1133
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed Hibernate "
+"<literal>Session</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1138
+#, no-c-format
+msgid ""
+"<literal>&lt;session&gt;.sessionFactory</literal> &mdash; a value binding "
+"expression that evaluates to an instance of <literal>SessionFactory</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1141
+#, no-c-format
+msgid ""
+"<literal>&lt;session&gt;.sessionFactoryJndiName</literal> &mdash; the JNDI "
+"name of the session factory, default to <literal>java:/&lt;managedSession&gt;"
+"</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1149
+#, no-c-format
+msgid "&lt;sessionFactory&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1150
+#, no-c-format
+msgid "org.jboss.seam.core.HibernateSessionFactory"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1152
+#, no-c-format
+msgid "Manages a Hibernate <literal>SessionFactory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1157
+#, no-c-format
+msgid ""
+"<literal>&lt;sessionFactory&gt;.cfgResourceName</literal> &mdash; the path "
+"to the configuration file. Default to <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1168
+#, no-c-format
+msgid "&lt;managedQueueSender&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1169
+#, no-c-format
+msgid "org.jboss.seam.jms.ManagedQueueSender"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1171
+#, no-c-format
+msgid ""
+"Manager component for an event scoped managed JMS <literal>QueueSender</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1176
+#, no-c-format
+msgid ""
+"<literal>&lt;managedQueueSender&gt;.queueJndiName</literal> &mdash; the JNDI "
+"name of the JMS queue."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1184
+#, no-c-format
+msgid "&lt;managedTopicPublisher&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1185
+#, no-c-format
+msgid "org.jboss.seam.jms.ManagedTopicPublisher"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1187
+#, no-c-format
+msgid ""
+"Manager component for an event scoped managed JMS <literal>TopicPublisher</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1192
+#, no-c-format
+msgid ""
+"<literal>&lt;managedTopicPublisher&gt;.topicJndiName</literal> &mdash; the "
+"JNDI name of the JMS topic."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1200
+#, no-c-format
+msgid "&lt;managedWorkingMemory&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1201
+#, no-c-format
+msgid "org.jboss.seam.drools.ManagedWorkingMemory"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1203
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed Drools "
+"<literal>WorkingMemory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1208
+#, no-c-format
+msgid ""
+"<literal>&lt;managedWorkingMemory&gt;.ruleBase</literal> &mdash; a value "
+"expression that evaluates to an instance of <literal>RuleBase</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1216
+#, no-c-format
+msgid "&lt;ruleBase&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1217
+#, no-c-format
+msgid "org.jboss.seam.drools.RuleBase"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1219
+#, no-c-format
+msgid ""
+"Manager component for an application scoped Drools <literal>RuleBase</"
+"literal>. <emphasis>Note that this is not really intended for production "
+"usage, since it does not support dynamic installation of new rules.</"
+"emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1224
+#, no-c-format
+msgid ""
+"<literal>&lt;ruleBase&gt;.ruleFiles</literal> &mdash; a list of files "
+"containing Drools rules."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1227
+#, no-c-format
+msgid ""
+"<literal>&lt;ruleBase&gt;.dslFile</literal> &mdash; a Drools DSL definition."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1235
+#, no-c-format
+msgid "&lt;entityHome&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1236
+#, no-c-format
+msgid "org.jboss.seam.framework.EntityHome"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1240
+#, no-c-format
+msgid "&lt;hibernateEntityHome&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1241
+#, no-c-format
+msgid "org.jboss.seam.framework.HibernateEntityHome"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1245
+#, no-c-format
+msgid "&lt;entityQuery&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1246
+#, no-c-format
+msgid "org.jboss.seam.framework.EntityQuery"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1250
+#, no-c-format
+msgid "&lt;hibernateEntityQuery&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1251
+#, no-c-format
+msgid "org.jboss.seam.framework.HibernateEntityQuery"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Concepts.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Concepts.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Concepts.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1922 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Concepts.xml:10
+#, no-c-format
+msgid "The contextual component model"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:11
+#, no-c-format
+msgid ""
+"The two core concepts in Seam are the notion of a <emphasis>context</"
+"emphasis> and the notion of a <emphasis>component</emphasis>. Components are "
+"stateful objects, usually EJBs, and an instance of a component is associated "
+"with a context, and given a name in that context. <emphasis>Bijection</"
+"emphasis> provides a mechanism for aliasing internal component names "
+"(instance variables) to contextual names, allowing component trees to be "
+"dynamically assembled, and reassembled by Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:14
+#, no-c-format
+msgid "Let's start by describing the contexts built in to Seam."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:17
+#, no-c-format
+msgid "Seam contexts"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:18
+#, no-c-format
+msgid ""
+"Seam contexts are created and destroyed by the framework. The application "
+"does not control context demarcation via explicit Java API calls. Context "
+"are usually implicit. In some cases, however, contexts are demarcated via "
+"annotations."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:21
+#, no-c-format
+msgid "The basic Seam contexts are:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:26
+#, no-c-format
+msgid "<para>Stateless context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:31
+#, no-c-format
+msgid "Event (or request) context"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:36 Concepts.xml:151
+#, no-c-format
+msgid "<para>Page context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:41 Concepts.xml:156
+#, no-c-format
+msgid "<para>Conversation context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:46 Concepts.xml:161
+#, no-c-format
+msgid "<para>Session context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:51 Concepts.xml:166
+#, no-c-format
+msgid "<para>Business process context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:56 Concepts.xml:171
+#, no-c-format
+msgid "<para>Application context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:61
+#, no-c-format
+msgid ""
+"You will recognize some of these contexts from servlet and related "
+"specifications. However, two of them might be new to you: "
+"<emphasis>conversation context</emphasis>, and <emphasis>business process "
+"context</emphasis>. One reason state management in web applications is so "
+"fragile and error-prone is that the three built-in contexts (request, "
+"session and application) are not especially meaningful from the point of "
+"view of the business logic. A user login session, for example, is a fairly "
+"arbitrary construct in terms of the actual application work flow. Therefore, "
+"most Seam components are scoped to the conversation or business process "
+"contexts, since they are the contexts which are most meaningful in terms of "
+"the application."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:64
+#, no-c-format
+msgid "Let's look at each context in turn."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:67
+#, no-c-format
+msgid "<title>Stateless context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:68
+#, no-c-format
+msgid ""
+"Components which are truly stateless (stateless session beans, primarily) "
+"always live in the stateless context (this is really a non-context). "
+"Stateless components are not very interesting, and are arguably not very "
+"object-oriented. Nevertheless, they are important and often useful."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:71
+#, no-c-format
+msgid "<title>Event context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:72
+#, no-c-format
+msgid ""
+"The event context is the \"narrowest\" stateful context, and is a "
+"generalization of the notion of the web request context to cover other kinds "
+"of events. Nevertheless, the event context associated with the lifecycle of "
+"a JSF request is the most important example of an event context, and the one "
+"you will work with most often. Components associated with the event context "
+"are destroyed at the end of the request, but their state is available and "
+"well-defined for at least the lifecycle of the request."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:75
+#, no-c-format
+msgid ""
+"When you invoke a Seam component via RMI, or Seam Remoting, the event "
+"context is created and destroyed just for the invocation."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:78
+#, no-c-format
+msgid "<title>Page context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:79
+#, no-c-format
+msgid ""
+"The page context allows you to associate state with a particular instance of "
+"a rendered page. You can initialize state in your event listener, or while "
+"actually rendering the page, and then have access to it from any event that "
+"originates from that page. This is especially useful for functionality like "
+"clickable lists, where the list is backed by changing data on the server "
+"side. The state is actually serialized to the client, so this construct is "
+"extremely robust with respect to multi-window operation and the back button."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:82
+#, no-c-format
+msgid "<title>Conversation context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:83
+#, no-c-format
+msgid ""
+"The conversation context is a truly central concept in Seam. A "
+"<emphasis>conversation</emphasis> is a unit of work from the point of view "
+"of the user. It might span several interactions with the user, several "
+"requests, and several database transactions. But to the user, a conversation "
+"solves a single problem. For example, \"book hotel\", \"approve contract\", "
+"\"create order\" are all conversations. You might like to think of a "
+"conversation implementing a single \"use case\" or \"user story\", but the "
+"relationship is not necessarily quite exact."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:86
+#, no-c-format
+msgid ""
+"A conversation holds state associated with \"what the user is doing now, in "
+"this window\". A single user may have multiple conversations in progress at "
+"any point in time, usually in multiple windows. The conversation context "
+"allows us to ensure that state from the different conversations does not "
+"collide and cause bugs."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:89
+#, no-c-format
+msgid ""
+"It might take you some time to get used to thinking of applications in terms "
+"of conversations. But once you get used to it, we think you'll love the "
+"notion, and never be able to not think in terms of conversations again!"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:92
+#, no-c-format
+msgid ""
+"Some conversations last for just a single request. Conversations that span "
+"multiple requests must be demarcated using annotations provided by Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:95
+#, no-c-format
+msgid ""
+"Some conversations are also <emphasis>tasks</emphasis>. A task is a "
+"conversation that is significant in terms of a long-running business "
+"process, and has the potential to trigger a business process state "
+"transition when it is successfully completed. Seam provides a special set of "
+"annotations for task demarcation."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:98
+#, no-c-format
+msgid ""
+"Conversations may be <emphasis>nested</emphasis>, with one conversation "
+"taking place \"inside\" a wider conversation. This is an advanced feature."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:101
+#, no-c-format
+msgid ""
+"Usually, conversation state is actually held by Seam in the servlet session "
+"between requests. Seam implements configurable <emphasis>conversation "
+"timeout</emphasis>, automatically destroying inactive conversations, and "
+"thus ensuring that the state held by a single user login session does not "
+"grow without bound if the user abandons conversations."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:104
+#, no-c-format
+msgid ""
+"Seam serializes processing of concurrent requests that take place in the "
+"same long-running conversation context, in the same process."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:107
+#, no-c-format
+msgid ""
+"Alternatively, Seam may be configured to keep conversational state in the "
+"client browser."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:110
+#, no-c-format
+msgid "<title>Session context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:111
+#, no-c-format
+msgid ""
+"A session context holds state associated with the user login session. While "
+"there are some cases where it is useful to share state between several "
+"conversations, we generally frown on the use of session context for holding "
+"components other than global information about the logged in user."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:114
+#, no-c-format
+msgid ""
+"In a JSR-168 portal environment, the session context represents the portlet "
+"session."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:117
+#, no-c-format
+msgid "<title>Business process context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:118
+#, no-c-format
+msgid ""
+"The business process context holds state associated with the long running "
+"business process. This state is managed and made persistent by the BPM "
+"engine (JBoss jBPM). The business process spans multiple interactions with "
+"multiple users, so this state is shared between multiple users, but in a "
+"well-defined manner. The current task determines the current business "
+"process instance, and the lifecycle of the business process is defined "
+"externally using a <emphasis>process definition language</emphasis>, so "
+"there are no special annotations for business process demarcation."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:121
+#, no-c-format
+msgid "<title>Application context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:122
+#, no-c-format
+msgid ""
+"The application context is the familiar servlet context from the servlet "
+"spec. Application context is mainly useful for holding static information "
+"such as configuration data, reference data or metamodels. For example, Seam "
+"stores its own configuration and metamodel in the application context."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:125
+#, no-c-format
+msgid "Context variables"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:126
+#, no-c-format
+msgid ""
+"A context defines a namespace, a set of <emphasis>context variables</"
+"emphasis>. These work much the same as session or request attributes in the "
+"servlet spec. You may bind any value you like to a context variable, but "
+"usually we bind Seam component instances to context variables."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:129
+#, no-c-format
+msgid ""
+"So, within a context, a component instance is identified by the context "
+"variable name (this is usually, but not always, the same as the component "
+"name). You may programatically access a named component instance in a "
+"particular scope via the <literal>Contexts</literal> class, which provides "
+"access to several thread-bound instances of the <literal>Context</literal> "
+"interface:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:132
+#, no-c-format
+msgid "User user = (User) Contexts.getSessionContext().get(\"user\");"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:133
+#, no-c-format
+msgid "You may also set or change the value associated with a name:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:136
+#, no-c-format
+msgid "Contexts.getSessionContext().set(\"user\", user);"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:137
+#, no-c-format
+msgid ""
+"Usually, however, we obtain components from a context via injection, and put "
+"component instances into a context via outjection."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:140
+#, no-c-format
+msgid "Context search priority"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:141
+#, no-c-format
+msgid ""
+"Sometimes, as above, component instances are obtained from a particular "
+"known scope. Other times, all stateful scopes are searched, in "
+"<emphasis>priority order</emphasis>. The order is as follows:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:146
+#, no-c-format
+msgid "<para>Event context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:176
+#, no-c-format
+msgid ""
+"You can perform a priority search by calling <literal>Contexts."
+"lookupInStatefulContexts()</literal>. Whenever you access a component by "
+"name from a JSF page, a priority search occurs."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:179
+#, no-c-format
+msgid "Concurrency model"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:180
+#, no-c-format
+msgid ""
+"Neither the servlet nor EJB specifications define any facilities for "
+"managing concurrent requests originating from the same client. The servlet "
+"container simply lets all threads run concurrently and leaves enforcing "
+"threadsafeness to application code. The EJB container allows stateless "
+"components to be accessed concurrently, and throws an exception if multiple "
+"threads access a stateful session bean."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:183
+#, no-c-format
+msgid ""
+"This behavior might have been okay in old-style web applications which were "
+"based around fine-grained, synchronous requests. But for modern applications "
+"which make heavy use of many fine-grained, asynchronous (AJAX) requests, "
+"concurrency is a fact of life, and must be supported by the programming "
+"model. Seam weaves a concurrency management layer into its context model."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:186
+#, no-c-format
+msgid ""
+"The Seam session and application contexts are multithreaded. Seam will allow "
+"concurrent requests in a context to be processed concurrently. The event and "
+"page contexts are by nature single threaded. The business process context is "
+"strictly speaking multi-threaded, but in practice concurrency is "
+"sufficiently rare that this fact may be disregarded most of the time. "
+"Finally, Seam enforces a <emphasis>single thread per conversation per "
+"process</emphasis> model for the conversation context by serializing "
+"concurrent requests in the same long-running conversation context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:189
+#, no-c-format
+msgid ""
+"Since the session context is multithreaded, and often contains volatile "
+"state, session scope components are always protected by Seam from concurrent "
+"access. Seam serializes requests to session scope session beans and "
+"JavaBeans by default (and detects and breaks any deadlocks that occur). This "
+"is not the default behaviour for application scoped components however, "
+"since application scoped components do not usually hold volatile state and "
+"because synchronization at the global level is <emphasis>extremely</"
+"emphasis> expensive. However, you can force a serialized threading model on "
+"any session bean or JavaBean component by adding the <literal>@Synchronized</"
+"literal> annotation."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:192
+#, no-c-format
+msgid ""
+"This concurrency model means that AJAX clients can safely use volatile "
+"session and conversational state, without the need for any special work on "
+"the part of the developer."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:195
+#, no-c-format
+msgid "Seam components"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:196
+#, no-c-format
+msgid ""
+"Seam components are POJOs (Plain Old Java Objects). In particular, they are "
+"JavaBeans or EJB 3.0 enterprise beans. While Seam does not require that "
+"components be EJBs and can even be used without an EJB 3.0 compliant "
+"container, Seam was designed with EJB 3.0 in mind and includes deep "
+"integration with EJB 3.0. Seam supports the following <emphasis>component "
+"types</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:201
+#, no-c-format
+msgid "EJB 3.0 stateless session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:206
+#, no-c-format
+msgid "EJB 3.0 stateful session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:211
+#, no-c-format
+msgid "EJB 3.0 entity beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:216
+#, no-c-format
+msgid "<para>JavaBeans</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:221
+#, no-c-format
+msgid "EJB 3.0 message-driven beans"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:226
+#, no-c-format
+msgid "Stateless session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:227
+#, no-c-format
+msgid ""
+"Stateless session bean components are not able to hold state across multiple "
+"invocations. Therefore, they usually work by operating upon the state of "
+"other components in the various Seam contexts. They may be used as JSF "
+"action listeners, but cannot provide properties to JSF components for "
+"display."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:230
+#, no-c-format
+msgid "Stateless session beans always live in the stateless context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:233
+#, no-c-format
+msgid ""
+"Stateless session beans are the least interesting kind of Seam component."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:236
+#, no-c-format
+msgid "Stateful session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:237
+#, no-c-format
+msgid ""
+"Stateful session bean components are able to hold state not only across "
+"multiple invocations of the bean, but also across multiple requests. "
+"Application state that does not belong in the database should usually be "
+"held by stateful session beans. This is a major difference between Seam and "
+"many other web application frameworks. Instead of sticking information about "
+"the current conversation directly in the <literal>HttpSession</literal>, you "
+"should keep it in instance variables of a stateful session bean that is "
+"bound to the conversation context. This allows Seam to manage the lifecycle "
+"of this state for you, and ensure that there are no collisions between state "
+"relating to different concurrent conversations."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:240
+#, no-c-format
+msgid ""
+"Stateful session beans are often used as JSF action listener, and as backing "
+"beans that provide properties to JSF components for display or form "
+"submission."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:243
+#, no-c-format
+msgid ""
+"By default, stateful session beans are bound to the conversation context. "
+"They may never be bound to the page or stateless contexts."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:246
+#, no-c-format
+msgid ""
+"Concurrent requests to session-scoped stateful session beans are always "
+"serialized by Seam."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:249
+#, no-c-format
+msgid "Entity beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:250
+#, no-c-format
+msgid ""
+"Entity beans may be bound to a context variable and function as a seam "
+"component. Because entities have a persistent identity in addition to their "
+"contextual identity, entity instances are usually bound explicitly in Java "
+"code, rather than being instantiated implicitly by Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:253
+#, no-c-format
+msgid ""
+"Entity bean components do not support bijection or context demarcation. Nor "
+"does invocation of an entity bean trigger validation."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:256
+#, no-c-format
+msgid ""
+"Entity beans are not usually used as JSF action listeners, but do often "
+"function as backing beans that provide properties to JSF components for "
+"display or form submission. In particular, it is common to use an entity as "
+"a backing bean, together with a stateless session bean action listener to "
+"implement create/update/delete type functionality."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:259
+#, no-c-format
+msgid ""
+"By default, entity beans are bound to the conversation context. They may "
+"never be bound to the stateless context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:262
+#, no-c-format
+msgid ""
+"Note that it in a clustered environment is somewhat less efficient to bind "
+"an entity bean directly to a conversation or session scoped Seam context "
+"variable than it would be to hold a reference to the entity bean in a "
+"stateful session bean. For this reason, not all Seam applications define "
+"entity beans to be Seam components."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:265
+#, no-c-format
+msgid "<title>JavaBeans</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:266
+#, no-c-format
+msgid ""
+"Javabeans may be used just like a stateless or stateful session bean. "
+"However, they do not provide the functionality of a session bean "
+"(declarative transaction demarcation, declarative security, efficient "
+"clustered state replication, EJB 3.0 persistence, timeout methods, etc)."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:269
+#, no-c-format
+msgid ""
+"In a later chapter, we show you how to use Seam and Hibernate without an EJB "
+"container. In this use case, components are JavaBeans instead of session "
+"beans. Note, however, that in many application servers it is somewhat less "
+"efficient to cluster conversation or session scoped Seam JavaBean components "
+"than it is to cluster stateful session bean components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:272
+#, no-c-format
+msgid "By default, JavaBeans are bound to the event context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:275
+#, no-c-format
+msgid ""
+"Concurrent requests to session-scoped JavaBeans are always serialized by "
+"Seam."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:278
+#, no-c-format
+msgid "Message-driven beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:279
+#, no-c-format
+msgid ""
+"Message-driven beans may function as a seam component. However, message-"
+"driven beans are called quite differently to other Seam components - instead "
+"of invoking them via the context variable, they listen for messages sent to "
+"a JMS queue or topic."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:282
+#, no-c-format
+msgid ""
+"Message-driven beans may not be bound to a Seam context. Nor do they have "
+"access to the session or conversation state of their \"caller\". However, "
+"they do support bijection and some other Seam functionality."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:285
+#, no-c-format
+msgid "Interception"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:286
+#, no-c-format
+msgid ""
+"In order to perform its magic (bijection, context demarcation, validation, "
+"etc), Seam must intercept component invocations. For JavaBeans, Seam is in "
+"full control of instantiation of the component, and no special configuration "
+"is needed. For entity beans, interception is not required since bijection "
+"and context demarcation are not defined. For session beans, we must register "
+"an EJB interceptor for the session bean component. We could use an "
+"annotation, as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:289
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:290
+#, no-c-format
+msgid ""
+"But a much better way is to define the interceptor in <literal>ejb-jar.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:293
+#, no-c-format
+msgid ""
+"&lt;interceptors&gt;\n"
+"   &lt;interceptor&gt;\n"
+"      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"   &lt;/interceptor&gt;\n"
+"&lt;/interceptors&gt;\n"
+"   \n"
+"&lt;assembly-descriptor&gt;\n"
+"   &lt;interceptor-binding&gt;\n"
+"      &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"   &lt;/interceptor-binding&gt;\n"
+"&lt;/assembly-descriptor&gt;"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:294
+#, no-c-format
+msgid "Component names"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:295
+#, no-c-format
+msgid ""
+"All seam components need a name. We can assign a name to a component using "
+"the <literal>@Name</literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:298
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:299
+#, no-c-format
+msgid ""
+"This name is the <emphasis>seam component name</emphasis> and is not related "
+"to any other name defined by the EJB specification. However, seam component "
+"names work just like JSF managed bean names and you can think of the two "
+"concepts as identical."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:302
+#, no-c-format
+msgid ""
+"<literal>@Name</literal> is not the only way to define a component name, but "
+"we always need to specify the name <emphasis>somewhere</emphasis>. If we "
+"don't, then none of the other Seam annotations will function."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:305
+#, no-c-format
+msgid ""
+"Just like in JSF, a seam component instance is usually bound to a context "
+"variable with the same name as the component name. So, for example, we would "
+"access the <literal>LoginAction</literal> using <literal>Contexts."
+"getStatelessContext().get(\"loginAction\")</literal>. In particular, "
+"whenever Seam itself instantiates a component, it binds the new instance to "
+"a variable with the component name. However, again like JSF, it is possible "
+"for the application to bind a component to some other context variable by "
+"programmatic API call. This is only useful if a particular component serves "
+"more than one role in the system. For example, the currently logged in "
+"<literal>User</literal> might be bound to the <literal>currentUser</literal> "
+"session context variable, while a <literal>User</literal> that is the "
+"subject of some administration functionality might be bound to the "
+"<literal>user</literal> conversation context variable."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:308
+#, no-c-format
+msgid ""
+"For very large applications, and for built-in seam components, qualified "
+"names are often used."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:311
+#, no-c-format
+msgid ""
+"@Name(\"com.jboss.myapp.loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:312
+#, no-c-format
+msgid ""
+"We may use the qualified component name both in Java code and in JSF's "
+"expression language:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:315
+#, no-c-format
+msgid ""
+"&lt;h:commandButton type=\"submit\" value=\"Login\"\n"
+"                 action=\"#{com.jboss.myapp.loginAction.login}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:316
+#, no-c-format
+msgid ""
+"Since this is noisy, Seam also provides a means of aliasing a qualified name "
+"to a simple name. Add a line like this to the <literal>components.xml</"
+"literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:319
+#, no-c-format
+msgid ""
+"&lt;factory name=\"loginAction\" scope=\"STATELESS\" value=\"#{com.jboss."
+"myapp.loginAction}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:320
+#, no-c-format
+msgid ""
+"All of the built-in Seam components have qualified names, but most of them "
+"are aliased to a simple name by the <literal>components.xml</literal> file "
+"included in the Seam jar."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:323
+#, no-c-format
+msgid "Defining the component scope"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:324
+#, no-c-format
+msgid ""
+"We can override the default scope (context) of a component using the "
+"<literal>@Scope</literal> annotation. This lets us define what context a "
+"component instance is bound to, when it is instantiated by Seam."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:327
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(SESSION)\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:328
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.ScopeType</literal> defines an enumeration of "
+"possible scopes."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:331
+#, no-c-format
+msgid "Components with multiple roles"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:332
+#, no-c-format
+msgid ""
+"Some Seam component classes can fulfill more than one role in the system. "
+"For example, we often have a <literal>User</literal> class which is usually "
+"used as a session-scoped component representing the current user but is used "
+"in user administration screens as a conversation-scoped component. The "
+"<literal>@Role</literal> annotation lets us define an additional named role "
+"for a component, with a different scope&mdash;it lets us bind the same "
+"component class to different context variables. (Any Seam component "
+"<emphasis>instance</emphasis> may be bound to multiple context variables, "
+"but this lets us do it at the class level, and take advantage of auto-"
+"instantiation.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:335
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(CONVERSATION)\n"
+"@Role(name=\"currentUser\", scope=SESSION)\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:336
+#, no-c-format
+msgid ""
+"The <literal>@Roles</literal> annotation lets us specify as many additional "
+"roles as we like."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:339
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(CONVERSATION)\n"
+"@Roles({@Role(name=\"currentUser\", scope=SESSION)\n"
+"        @Role(name=\"tempUser\", scope=EVENT)})\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:340
+#, no-c-format
+msgid "Built-in components"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:341
+#, no-c-format
+msgid ""
+"Like many good frameworks, Seam eats its own dogfood and is implemented "
+"mostly as a set of built-in Seam interceptors (see later) and Seam "
+"components. This makes it easy for applications to interact with built-in "
+"components at runtime or even customize the basic functionality of Seam by "
+"replacing the built-in components with custom implementations. The built-in "
+"components are defined in the Seam namespace <literal>org.jboss.seam.core</"
+"literal> and the Java package of the same name."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:344
+#, no-c-format
+msgid ""
+"The built-in components may be injected, just like any Seam components, but "
+"they also provide convenient static <literal>instance()</literal> methods:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:347
+#, no-c-format
+msgid "FacesMessages.instance().add(\"Welcome back, #{user.name}!\");"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:348
+#, no-c-format
+msgid ""
+"Seam was designed to integrate tightly in a Java EE 5 environment. However, "
+"we understand that there are many projects which are not running in a full "
+"EE environment. We also realize the critical importance of easy unit and "
+"integration testing using frameworks such as TestNG and JUnit. So, we've "
+"made it easy to run Seam in Java SE environments by allowing you to boostrap "
+"certain critical infrastructure normally only found in EE environments by "
+"installing built-in Seam components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:351
+#, no-c-format
+msgid ""
+"For example, you can run your EJB3 components in Tomcat or an integration "
+"test suite just by installing the built-in component <literal>org.jboss.seam."
+"core.ejb</literal>, which automatically bootstraps the JBoss Embeddable EJB3 "
+"container and deploys your EJB components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:354
+#, no-c-format
+msgid ""
+"Or, if you're not quite ready for the Brave New World of EJB 3.0, you can "
+"write a Seam application that uses only JavaBean components, together with "
+"Hibernate3 for persistence, by installing a built-in component that manages "
+"a Hibernate <literal>SessionFactory</literal>. When using Hibernate outside "
+"of a J2EE environment, you will also probably need a JTA transaction manager "
+"and JNDI server, which are available via the built-in component <literal>org."
+"jboss.seam.core.microcontainer</literal>. This lets you use the bulletproof "
+"JTA/JCA pooling datasource from JBoss application server in an SE "
+"environment like Tomcat!"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:357
+#, no-c-format
+msgid "Bijection"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:358
+#, no-c-format
+msgid ""
+"<emphasis>Dependency injection</emphasis> or <emphasis>inversion of control</"
+"emphasis> is by now a familiar concept to most Java developers. Dependency "
+"injection allows a component to obtain a reference to another component by "
+"having the container \"inject\" the other component to a setter method or "
+"instance variable. In all dependency injection implementations that we have "
+"seen, injection occurs when the component is constructed, and the reference "
+"does not subsequently change for the lifetime of the component instance. For "
+"stateless components, this is reasonable. From the point of view of a "
+"client, all instances of a particular stateless component are "
+"interchangeable. On the other hand, Seam emphasizes the use of stateful "
+"components. So traditional dependency injection is no longer a very useful "
+"construct. Seam introduces the notion of <emphasis>bijection</emphasis> as a "
+"generalization of injection. In contrast to injection, bijection is:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:363
+#, no-c-format
+msgid ""
+"<emphasis>contextual</emphasis> - bijection is used to assemble stateful "
+"components from various different contexts (a component from a \"wider\" "
+"context may even have a reference to a component from a \"narrower\" context)"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:368
+#, no-c-format
+msgid ""
+"<emphasis>bidirectional</emphasis> - values are injected from context "
+"variables into attributes of the component being invoked, and also "
+"<emphasis>outjected</emphasis> from the component attributes back out to the "
+"context, allowing the component being invoked to manipulate the values of "
+"contextual variables simply by setting its own instance variables"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:373
+#, no-c-format
+msgid ""
+"<emphasis>dynamic</emphasis> - since the value of contextual variables "
+"changes over time, and since Seam components are stateful, bijection takes "
+"place every time a component is invoked"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:378
+#, no-c-format
+msgid ""
+"In essence, bijection lets you alias a context variable to a component "
+"instance variable, by specifying that the value of the instance variable is "
+"injected, outjected, or both. Of course, we use annotations to enable "
+"bijection."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:381
+#, no-c-format
+msgid ""
+"The <literal>@In</literal> annotation specifies that a value should be "
+"injected, either into an instance variable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:384
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:385
+#, no-c-format
+msgid "or into a setter method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:388
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @In\n"
+"    public void setUser(User user) {\n"
+"        this.user=user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:389
+#, no-c-format
+msgid ""
+"By default, Seam will do a priority search of all contexts, using the name "
+"of the property or instance variable that is being injected. You may wish to "
+"specify the context variable name explicitly, using, for example, "
+"<literal>@In(\"currentUser\")</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:392
+#, no-c-format
+msgid ""
+"If you want Seam to create an instance of the component when there is no "
+"existing component instance bound to the named context variable, you should "
+"specify <literal>@In(create=true)</literal>. If the value is optional (it "
+"can be null), specify <literal>@In(required=false)</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:395
+#, no-c-format
+msgid ""
+"For some components, it can be repetitive to have to specify <literal>@In"
+"(create=true)</literal> everywhere they are used. In such cases, you can "
+"annotate the component <literal>@AutoCreate</literal>, and then it will "
+"always be created, whenever needed, even without the explicit use of "
+"<literal>create=true</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:398
+#, no-c-format
+msgid "You can even inject the value of an expression:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:401
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In(\"#{user.username}\") String username;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:402
+#, no-c-format
+msgid ""
+"(There is much more information about component lifecycle and injection in "
+"the next chapter.)"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:405
+#, no-c-format
+msgid ""
+"The <literal>@Out</literal> annotation specifies that an attribute should be "
+"outjected, either from an instance variable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:408
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @Out User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:409
+#, no-c-format
+msgid "or from a getter method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:412
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @Out\n"
+"    public User getUser() {\n"
+"        return user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:413
+#, no-c-format
+msgid "An attribute may be both injected and outjected:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:416
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In @Out User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:417
+#, no-c-format
+msgid "<para>or:</para>"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:420
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @In\n"
+"    public void setUser(User user) {\n"
+"        this.user=user;\n"
+"    }\n"
+"    \n"
+"    @Out\n"
+"    public User getUser() {\n"
+"        return user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:421
+#, no-c-format
+msgid "Lifecycle methods"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:422
+#, no-c-format
+msgid ""
+"Session bean and entity bean Seam components support all the usual EJB 3.0 "
+"lifecycle callback (<literal>@PostConstruct</literal>, <literal>@PreDestroy</"
+"literal>, etc). Seam extends all of these callbacks except "
+"<literal>@PreDestroy</literal> to JavaBean components. But Seam also defines "
+"its own component lifecycle callbacks."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:425
+#, no-c-format
+msgid ""
+"The <literal>@Create</literal> method is called every time Seam instantiates "
+"a component. Unlike the <literal>@PostConstruct</literal> method, this "
+"method is called after the component is fully constructed by the EJB "
+"container, and has access to all the usual Seam functionality (bijection, "
+"etc). Components may define only one <literal>@Create</literal> method."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:428
+#, no-c-format
+msgid ""
+"The <literal>@Destroy</literal> method is called when the context that the "
+"Seam component is bound to ends. Components may define only one "
+"<literal>@Destroy</literal> method. Stateful session bean components "
+"<emphasis>must</emphasis> define a method annotated <literal>@Destroy "
+"@Remove</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:431
+#, no-c-format
+msgid ""
+"Finally, a related annotation is the <literal>@Startup</literal> annotation, "
+"which may be applied to any application or session scoped component. The "
+"<literal>@Startup</literal> annotation tells Seam to instantiate the "
+"component immediately, when the context begins, instead of waiting until it "
+"is first referenced by a client. It is possible to control the order of "
+"instantiation of startup components by specifying <literal>@Startup(depends="
+"{....})</literal>."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:434
+#, no-c-format
+msgid "Conditional installation"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:435
+#, no-c-format
+msgid ""
+"The <literal>@Install</literal> annotation lets you control conditional "
+"installation of components that are required in some deployment scenarios "
+"and not in others. This is useful if:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:440
+#, no-c-format
+msgid "You want to mock out some infrastructural component in tests."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:445
+#, no-c-format
+msgid ""
+"You want change the implementation of a component in certain deployment "
+"scenarios."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:450
+#, no-c-format
+msgid ""
+"You want to install some components only if their dependencies are available "
+"(useful for framework authors)."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:455
+#, no-c-format
+msgid ""
+"<literal>@Install</literal> works by letting you specify "
+"<emphasis>precedence</emphasis> and <emphasis>dependencies</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:458
+#, no-c-format
+msgid ""
+"The precedence of a component is a number that Seam uses to decide which "
+"component to install when there are multiple classes with the same component "
+"name in the classpath. Seam will choose the component with the higher "
+"precendence. There are some predefined precedence values:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:463
+#, no-c-format
+msgid ""
+"<literal>BUILT_IN</literal> &mdash; the lowest precedece components are the "
+"components built in to Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:468
+#, no-c-format
+msgid ""
+"<literal>FRAMEWORK</literal> &mdash; components defined by third-party "
+"frameworks may override built-in components, but are overridden by "
+"application components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:473
+#, no-c-format
+msgid ""
+"<literal>APPLICATION</literal> &mdash; the default precedence. This is "
+"appropriate for most application components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:478
+#, no-c-format
+msgid ""
+"<literal>DEPLOYMENT</literal> &mdash; for application components which are "
+"deployment-specific."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:483
+#, no-c-format
+msgid "<literal>MOCK</literal> &mdash; for mock objects used in testing."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:488
+#, no-c-format
+msgid ""
+"Suppose we have a component named <literal>messageSender</literal> that "
+"talks to a JMS queue."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:491
+#, no-c-format
+msgid ""
+"@Name(\"messageSender\") \n"
+"public class MessageSender {\n"
+"    public void sendMessage() {\n"
+"        //do something with JMS\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:492
+#, no-c-format
+msgid ""
+"In our unit tests, we don't have a JMS queue available, so we would like to "
+"stub out this method. We'll create a <emphasis>mock</emphasis> component "
+"that exists in the classpath when unit tests are running, but is never "
+"deployed with the application:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:495
+#, no-c-format
+msgid ""
+"@Name(\"messageSender\") \n"
+"@Install(precedence=MOCK)\n"
+"public class MockMessageSender extends MessageSender {\n"
+"    public void sendMessage() {\n"
+"        //do nothing!\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:496
+#, no-c-format
+msgid ""
+"The <literal>precedence</literal> helps Seam decide which version to use "
+"when it finds both components in the classpath."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:499
+#, no-c-format
+msgid ""
+"This is nice if we are able to control exactly which classes are in the "
+"classpath. But if I'm writing a reusable framework with many dependecies, I "
+"don't want to have to break that framework across many jars. I want to be "
+"able to decide which components to install depending upon what other "
+"components are installed, and upon what classes are available in the "
+"classpath. The <literal>@Install</literal> annotation also controls this "
+"functionality. Seam uses this mechanism internally to enable conditional "
+"installation of many of the built-in components. However, you probably won't "
+"need to use it in your application."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:502
+#, no-c-format
+msgid "Logging"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:503
+#, no-c-format
+msgid "Who is not totally fed up with seeing noisy code like this?"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:506
+#, no-c-format
+msgid ""
+"private static final Log log = LogFactory.getLog(CreateOrderAction.class);\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    if ( log.isDebugEnabled() ) {\n"
+"        log.debug(\"Creating new order for user: \" + user.username() + \n"
+"            \" product: \" + product.name() \n"
+"            + \" quantity: \" + quantity);\n"
+"    }\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:507
+#, no-c-format
+msgid ""
+"It is difficult to imagine how the code for a simple log message could "
+"possibly be more verbose. There is more lines of code tied up in logging "
+"than in the actual business logic! I remain totally astonished that the Java "
+"community has not come up with anything better in 10 years."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:510
+#, no-c-format
+msgid ""
+"Seam provides a logging API built on top of Apache commons-logging that "
+"simplifies this code significantly:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:513
+#, no-c-format
+msgid ""
+"@Logger private Log log;\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    log.debug(\"Creating new order for user: #0 product: #1 quantity: #2\", "
+"user.username(), \n"
+"       product.name(), quantity);\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:514
+#, no-c-format
+msgid ""
+"It doesn't matter if you declare the <literal>log</literal> variable static "
+"or not&mdash;it will work either way."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:517
+#, no-c-format
+msgid ""
+"Note that we don't need the noisy <literal>if ( log.isDebugEnabled() )</"
+"literal> guard, since string concatenation happens <emphasis>inside</"
+"emphasis> the <literal>debug()</literal> method. Note also that we don't "
+"usually need to specify the log category explicitly, since Seam knows what "
+"component it is injecting the <literal>Log</literal> into."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:520
+#, no-c-format
+msgid ""
+"If <literal>User</literal> and <literal>Product</literal> are Seam "
+"components available in the current contexts, it gets even better:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:523
+#, no-c-format
+msgid ""
+"@Logger private Log log;\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    log.debug(\"Creating new order for user: #{user.username} product: #"
+"{product.name}\n"
+"       quantity: #0\", quantity);\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:524
+#, no-c-format
+msgid ""
+"The <literal>Mutable</literal> interface and <literal>@ReadOnly</literal>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:525
+#, no-c-format
+msgid ""
+"Many application servers feature an amazingly broken implementation of "
+"<literal>HttpSession</literal> clustering, where changes to the state of "
+"mutable objects bound to the session are only replicated when the "
+"application calls <literal>setAttribute()</literal> explicitly. This is a "
+"source of bugs that can not effectively be tested for at development time, "
+"since they will only manifest when failover occurs. Furthermore, the actual "
+"replication message contains the entire serialized object graph bound to the "
+"session attribute, which is inefficient."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:528
+#, no-c-format
+msgid ""
+"Of course, EJB stateful session beans must perform automatic dirty checking "
+"and replication of mutable state and a sophisticated EJB container can "
+"introduce optimizations such as attribute-level replication. Unfortunately, "
+"not all Seam users have the good fortune to be working in an environment "
+"that supports EJB 3.0. So, for session and conversation scoped JavaBean and "
+"entity bean components, Seam provides an extra layer of cluster-safe state "
+"management over the top of the web container session clustering."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:531
+#, no-c-format
+msgid ""
+"For session or conversation scoped JavaBean components, Seam automatically "
+"forces replication to occur by calling <literal>setAttribute()</literal> "
+"once in every request that the component was invoked by the application. Of "
+"course, this strategy is inefficient for read-mostly components. You can "
+"control this behavior by implementing the <literal>org.jboss.seam.core."
+"Mutable</literal> interface, or by extending <literal>org.jboss.seam.core."
+"AbstractMutable</literal>, and writing your own dirty-checking logic inside "
+"the component. For example,"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:534
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class Account extends AbstractMutable\n"
+"{\n"
+"    private BigDecimal balance;\n"
+"    \n"
+"    public void setBalance(BigDecimal balance)\n"
+"    {\n"
+"        setDirty(this.balance, balance);\n"
+"        this.balance = balance;\n"
+"    }\n"
+"    \n"
+"    public BigDecimal getBalance()\n"
+"    {\n"
+"        return balance;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:535
+#, no-c-format
+msgid ""
+"Or, you can use the <literal>@ReadOnly</literal> annotation to achieve a "
+"similar effect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:538
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class Account\n"
+"{\n"
+"    private BigDecimal balance;\n"
+"    \n"
+"    public void setBalance(BigDecimal balance)\n"
+"    {\n"
+"        this.balance = balance;\n"
+"    }\n"
+"    \n"
+"    @ReadOnly\n"
+"    public BigDecimal getBalance()\n"
+"    {\n"
+"        return balance;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:539
+#, no-c-format
+msgid ""
+"For session or conversation scoped entity bean components, Seam "
+"automatically forces replication to occur by calling <literal>setAttribute()"
+"</literal> once in every request, <emphasis>unless the (conversation-scoped) "
+"entity is currently associated with a Seam-managed persistence context, in "
+"which case no replication is needed</emphasis>. This strategy is not "
+"necessarily efficient, so session or conversation scope entity beans should "
+"be used with care. You can always write a stateful session bean or JavaBean "
+"component to \"manage\" the entity bean instance. For example,"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:542
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"account\")\n"
+"public class AccountManager extends AbstractMutable\n"
+"{\n"
+"    private Account account; // an entity bean\n"
+"    \n"
+"    @Unwrap\n"
+"    public void getAccount()\n"
+"    {\n"
+"        return account;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:543
+#, no-c-format
+msgid ""
+"Note that the <literal>EntityHome</literal> class in the Seam Application "
+"Framework provides a great example of this pattern."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:546
+#, no-c-format
+msgid "Factory and manager components"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:547
+#, no-c-format
+msgid ""
+"We often need to work with objects that are not Seam components. But we "
+"still want to be able to inject them into our components using <literal>@In</"
+"literal> and use them in value and method binding expressions, etc. "
+"Sometimes, we even need to tie them into the Seam context lifecycle "
+"(<literal>@Destroy</literal>, for example). So the Seam contexts can contain "
+"objects which are not Seam components, and Seam provides a couple of nice "
+"features that make it easier to work with non-component objects bound to "
+"contexts."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:550
+#, no-c-format
+msgid ""
+"The <emphasis>factory component pattern</emphasis> lets a Seam component act "
+"as the instantiator for a non-component object. A <emphasis>factory method</"
+"emphasis> will be called when a context variable is referenced but has no "
+"value bound to it. We define factory methods using the <literal>@Factory</"
+"literal> annotation. The factory method binds a value to the context "
+"variable, and determines the scope of the bound value. There are two styles "
+"of factory method. The first style returns a value, which is bound to the "
+"context by Seam:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:553
+#, no-c-format
+msgid ""
+"@Factory(scope=CONVERSATION)\n"
+"public List&lt;Customer&gt; getCustomerList() { \n"
+"    return ... ;\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:554
+#, no-c-format
+msgid ""
+"The second style is a method of type <literal>void</literal> which binds the "
+"value to the context variable itself:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:557
+#, no-c-format
+msgid ""
+"@DataModel List&lt;Customer&gt; customerList;\n"
+"\n"
+"@Factory(\"customerList\")\n"
+"public void initCustomerList() { \n"
+"    customerList = ...  ;\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:558
+#, no-c-format
+msgid ""
+"In both cases, the factory method is called when we reference the "
+"<literal>customerList</literal> context variable and its value is null, and "
+"then has no further part to play in the lifecycle of the value. An even more "
+"powerful pattern is the <emphasis>manager component pattern</emphasis>. In "
+"this case, we have a Seam component that is bound to a context variable, "
+"that manages the value of the context variable, while remaining invisible to "
+"clients."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:561
+#, no-c-format
+msgid ""
+"A manager component is any component with an <literal>@Unwrap</literal> "
+"method. This method returns the value that will be visable to clients, and "
+"is called <emphasis>every time</emphasis> a context variable is referenced."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:564
+#, no-c-format
+msgid ""
+"@Name(\"customerList\")\n"
+"@Scope(CONVERSATION)\n"
+"public class CustomerListManager\n"
+"{\n"
+"    ...\n"
+"    \n"
+"    @Unwrap\n"
+"    public List&lt;Customer&gt; getCustomerList() { \n"
+"        return ... ;\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:565
+#, no-c-format
+msgid ""
+"This pattern is especially useful if we have some heavyweight object that "
+"needs a cleanup operation when the context ends. In this case, the manager "
+"component may perform cleanup in the <literal>@Destroy</literal> method."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Configuration.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Configuration.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Configuration.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1435 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Configuration.xml:10
+#, no-c-format
+msgid "Configuring Seam and packaging Seam applications"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:11
+#, no-c-format
+msgid ""
+"Configuration is a very boring topic and an extremely tedious pastime. "
+"Unfortunately, several lines of XML are required to integrate Seam into your "
+"JSF implementation and servlet container. There's no need to be too put off "
+"by the following sections; you'll never need to type any of this stuff "
+"yourself, since you can just copy and paste from the example applications!"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:14
+#, no-c-format
+msgid "Basic Seam configuration"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:15
+#, no-c-format
+msgid ""
+"First, let's look at the basic configuration that is needed whenever we use "
+"Seam with JSF."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:18
+#, no-c-format
+msgid "Integrating Seam with JSF and your servlet container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:19
+#, no-c-format
+msgid ""
+"Seam requires the following entry in your <literal>web.xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:22
+#, no-c-format
+msgid ""
+"&lt;listener&gt;\n"
+"    &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/listener-"
+"class&gt;\n"
+"&lt;/listener&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:23
+#, no-c-format
+msgid ""
+"This listener is responsible for bootstrapping Seam, and for destroying "
+"session and application contexts."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:26
+#, no-c-format
+msgid ""
+"To integrate with the JSF request lifecycle, we also need a JSF "
+"<literal>PhaseListener</literal> registered in in the <literal>faces-config."
+"xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:29
+#, no-c-format
+msgid ""
+"&lt;lifecycle&gt;\n"
+"    &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-"
+"listener&gt;\n"
+"&lt;/lifecycle&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:30
+#, no-c-format
+msgid ""
+"The actual listener class here varies depending upon how you want to manage "
+"transaction demarcation (more on this below)."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:33
+#, no-c-format
+msgid ""
+"If you are using Sun's JSF 1.2 reference implementation, you should also add "
+"this to <literal>faces-config.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:36
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;el-resolver&gt;org.jboss.seam.jsf.SeamELResolver&lt;/el-"
+"resolver&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:37
+#, no-c-format
+msgid ""
+"(This line should not strictly speaking be necessary, but it works around a "
+"minor bug in the RI.)"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:40
+#, no-c-format
+msgid ""
+"Some JSF implementations have a broken implementation of server-side state "
+"saving that interferes with Seam's conversation propagation. If you have "
+"problems with conversation propagation during form submissions, try "
+"switching to client-side state saving. You'll need this in <literal>web.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:43
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;client&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:44
+#, no-c-format
+msgid "Seam servlet filters"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:45
+#, no-c-format
+msgid ""
+"Seam doesn't need any servlet filters for basic operation. However, there "
+"are several features which depend upon the use of filters. To make things "
+"easier for you guys, Seam lets you add and configure servlet filters just "
+"like you would configure other built-in Seam components. To take advantage "
+"of this feature, we must first install a master filter in <literal>web.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:48
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;/*&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:49
+#, no-c-format
+msgid "Adding the master filter enables the following built-in filters."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:52
+#, no-c-format
+msgid "Exception handling"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:53
+#, no-c-format
+msgid ""
+"This filter provides the exception mapping functionality in <literal>pages."
+"xml</literal> (almost all applications will need this). It also takes care "
+"of rolling back uncommitted transactions when uncaught exceptions occur. "
+"(According to the Java EE specification, the web container should do this "
+"automatically, but we've found that this behavior cannot be relied upon in "
+"all application servers. And it is certainly not required of plain servlet "
+"engines like Tomcat.)"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:56
+#, no-c-format
+msgid ""
+"By default, the exception handling filter will process all requests, however "
+"this behavior may be adjusted by adding a <literal>&lt;web:exception-"
+"filter&gt;</literal> entry to <literal>components.xml</literal>, as shown in "
+"this example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:59
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:web=\"http://jboss.com/products/seam/web\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                    http://jboss.com/products/seam/core-1.2.xsd\n"
+"                 http://jboss.com/products/seam/components \n"
+"                     http://jboss.com/products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/web \n"
+"                     http://jboss.com/products/seam/web-1.2.xsd\"&gt;\n"
+"\n"
+"    &lt;web:exception-filter url-pattern=\"*.seam\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:62 Configuration.xml:77 Configuration.xml:99
+#: Configuration.xml:124
+#, no-c-format
+msgid ""
+"<literal>url-pattern</literal> &mdash; Used to specify which requests are "
+"filtered, the default is all requests."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:67
+#, no-c-format
+msgid "Conversation propagation with redirects"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:68
+#, no-c-format
+msgid ""
+"This filter allows Seam to propagate the conversation context across browser "
+"redirects. It intercepts any browser redirects and adds a request parameter "
+"that specifies the Seam conversation identifier."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:71
+#, no-c-format
+msgid ""
+"The redirect filter will process all requests by default, but this behavior "
+"can also be adjusted in <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:74
+#, no-c-format
+msgid "&lt;web:redirect-filter url-pattern=\"*.seam\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:82
+#, no-c-format
+msgid "Multipart form submissions"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:83
+#, no-c-format
+msgid ""
+"This feature is necessary when using the Seam file upload JSF control. It "
+"detects multipart form requests and processes them according to the "
+"multipart/form-data specification (RFC-2388). To override the default "
+"settings, add the following entry to <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:86
+#, no-c-format
+msgid ""
+"&lt;web:multipart-filter create-temp-files=\"true\" \n"
+"        max-request-size=\"1000000\" \n"
+"        url-pattern=\"*.seam\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:89
+#, no-c-format
+msgid ""
+"<literal>create-temp-files</literal> &mdash; If set to <literal>true</"
+"literal>, uploaded files are written to a temporary file (instead of held in "
+"memory). This may be an important consideration if large file uploads are "
+"expected. The default setting is <literal>false</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:94
+#, no-c-format
+msgid ""
+"<literal>max-request-size</literal> &mdash; If the size of a file upload "
+"request (determined by reading the <literal>Content-Length</literal> header "
+"in the request) exceeds this value, the request will be aborted. The default "
+"setting is 0 (no size limit)."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:104
+#, no-c-format
+msgid "Character encoding"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:105
+#, no-c-format
+msgid "Sets the character encoding of submitted form data."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:108 Configuration.xml:136
+#, no-c-format
+msgid ""
+"This filter is not installed by default and requires an entry in "
+"<literal>components.xml</literal> to enable it:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:111
+#, no-c-format
+msgid ""
+"&lt;web:character-encoding-filter encoding=\"UTF-16\" \n"
+"        override-client=\"true\" \n"
+"        url-pattern=\"*.seam\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:114
+#, no-c-format
+msgid "<literal>encoding</literal> &mdash; The encoding to use."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:119
+#, no-c-format
+msgid ""
+"<literal>override-client</literal> &mdash; If this is set to <literal>true</"
+"literal>, the request encoding will be set to whatever is specified by "
+"<literal>encoding</literal> no matter whether the request already specifies "
+"an encoding or not. If set to <literal>false</literal>, the request encoding "
+"will only be set if the request doesn't already specify an encoding. The "
+"default setting is <literal>false</literal>."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:129
+#, no-c-format
+msgid "Context management for custom servlets"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:130
+#, no-c-format
+msgid ""
+"Requests sent direct to some servlet other than the JSF servlet are not "
+"processed through the JSF lifecycle, so Seam provides a servlet filter that "
+"can be applied to any other servlet that needs access to Seam components."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:133
+#, no-c-format
+msgid ""
+"This filter allows custom servlets to interact with the Seam contexts. It "
+"sets up the Seam contexts at the beginning of each request, and tears them "
+"down at the end of the request. You should make sure that this filter is "
+"<emphasis>never</emphasis> applied to the JSF <literal>FacesServlet</"
+"literal>. Seam uses the phase listener for context management in a JSF "
+"request."
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:139
+#, no-c-format
+msgid "&lt;web:context-filter url-pattern=\"/media/*\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:142
+#, no-c-format
+msgid ""
+"<literal>url-pattern</literal> &mdash; Used to specify which requests are "
+"filtered, the default is all requests. If the url-pattern is specified for "
+"the context filter, then the filter will be enabled (unless explicitly "
+"disabled)."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:147
+#, no-c-format
+msgid ""
+"The context filter expects to find the conversation id of any conversation "
+"context in a request parameter named <literal>conversationId</literal>. You "
+"are responsible for ensuring that it gets sent in the request."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:150
+#, no-c-format
+msgid ""
+"You are also responsible for ensuring propagation of any new conversation id "
+"back to the client. Seam exposes the conversation id as a property of the "
+"built in component <literal>conversation</literal>."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:153
+#, no-c-format
+msgid "Integrating Seam with your EJB container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:154
+#, no-c-format
+msgid ""
+"We need to apply the <literal>SeamInterceptor</literal> to our Seam "
+"components. The simplest way to do this is to add the following interceptor "
+"binding to the <literal>&lt;assembly-descriptor&gt;</literal> in "
+"<literal>ejb-jar.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:157
+#, no-c-format
+msgid ""
+"&lt;interceptor-binding&gt;\n"
+"    &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"    &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"&lt;/interceptor-binding&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:158
+#, no-c-format
+msgid ""
+"Seam needs to know where to go to find session beans in JNDI. One way to do "
+"this is specify the <literal>@JndiName</literal> annotation on every session "
+"bean Seam component. However, this is quite tedious. A better approach is to "
+"specify a pattern that Seam can use to calculate the JNDI name from the EJB "
+"name. Unfortunately, there is no standard mapping to global JNDI defined in "
+"the EJB3 specification, so this mapping is vendor-specific. We usually "
+"specify this option in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:161
+#, no-c-format
+msgid "For JBoss AS, the following pattern is correct:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:164
+#, no-c-format
+msgid "&lt;core:init jndi-name=\"myEarName/#{ejbName}/local\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:165
+#, no-c-format
+msgid ""
+"Where <literal>myEarName</literal> is the name of the EAR in which the bean "
+"is deployed."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:168
+#, no-c-format
+msgid ""
+"Outside the context of an EAR (when using the JBoss Embeddable EJB3 "
+"container), the following pattern is the one to use:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:171
+#, no-c-format
+msgid "&lt;core:init jndi-name=\"#{ejbName}/local\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:172
+#, no-c-format
+msgid ""
+"You'll have to experiment to find the right setting for other application "
+"servers. Note that some servers (such as GlassFish) require you to specify "
+"JNDI names for all EJB components explicitly (and tediously). In this case, "
+"you can pick your own pattern ;-)"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:175
+#, no-c-format
+msgid "Using facelets"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:176
+#, no-c-format
+msgid ""
+"If you want follow our advice and use facelets instead of JSP, add the "
+"following lines to <literal>faces-config.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:179
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;view-handler&gt;com.sun.facelets.FaceletViewHandler&lt;/view-"
+"handler&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:180
+#, no-c-format
+msgid "And the following lines to <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:183
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;javax.faces.DEFAULT_SUFFIX&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;.xhtml&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:184
+#, no-c-format
+msgid "Don't forget!"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:185
+#, no-c-format
+msgid ""
+"There is one final item you need to know about. You must place a "
+"<literal>seam.properties</literal>, <literal>META-INF/seam.properties</"
+"literal> or <literal>META-INF/components.xml</literal> file in any archive "
+"in which your Seam components are deployed (even an empty properties file "
+"will do). At startup, Seam will scan any archives with <literal>seam."
+"properties</literal> files for seam components."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:188
+#, no-c-format
+msgid ""
+"That's why all the Seam examples have an empty <literal>seam.properties</"
+"literal> file. You can't just delete this file and expect everything to "
+"still work!"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:191
+#, no-c-format
+msgid ""
+"You might think this is silly and what kind of idiot framework designers "
+"would make an empty file affect the behavior of their software?? Well, this "
+"is a workaround for a limitation of the JVM&mdash;if we didn't use this "
+"mechanism, our next best option would be to force you to list every "
+"component explicitly in <literal>components.xml</literal>, just like some "
+"other competing frameworks do! I think you'll like our way better."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:195
+#, no-c-format
+msgid "Configuring Seam in Java EE 5"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:204
+#, no-c-format
+msgid ""
+"If you're running in a Java EE 5 environment, this is all the configuration "
+"required to start using Seam!"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:207 Configuration.xml:270 Configuration.xml:318
+#: Configuration.xml:354 Configuration.xml:371
+#, no-c-format
+msgid "Packaging"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:208
+#, no-c-format
+msgid ""
+"Once you've packaged all this stuff together into an EAR, the archive "
+"structure will look something like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:211
+#, no-c-format
+msgid ""
+"my-application.ear/\n"
+"    jboss-seam.jar\n"
+"    el-api.jar\n"
+"    el-ri.jar\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"        application.xml\n"
+"    my-application.war/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"        WEB-INF/\n"
+"            web.xml\n"
+"            components.xml\n"
+"            faces-config.xml\n"
+"            lib/\n"
+"                jsf-facelets.jar\n"
+"                jboss-seam-ui.jar\n"
+"        login.jsp\n"
+"        register.jsp\n"
+"        ...\n"
+"    my-application.jar/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"            persistence.xml\n"
+"        seam.properties\n"
+"        org/\n"
+"            jboss/\n"
+"                myapplication/\n"
+"                    User.class\n"
+"                    Login.class\n"
+"                    LoginBean.class\n"
+"                    Register.class\n"
+"                    RegisterBean.class\n"
+"                    ..."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:212
+#, no-c-format
+msgid ""
+"You must include <literal>jboss-seam.jar</literal>, <literal>el-api.jar</"
+"literal> and <literal>el-ri.jar</literal> in the EAR classpath. Make sure "
+"you reference all of these jars from <literal>application.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:215
+#, no-c-format
+msgid ""
+"If you want to use jBPM or Drools, you must include the needed jars in the "
+"EAR classpath. Make sure you reference all of the jars from "
+"<literal>application.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:218
+#, no-c-format
+msgid ""
+"If you want to use facelets (our recommendation), you must include "
+"<literal>jsf-facelets.jar</literal> in the <literal>WEB-INF/lib</literal> "
+"directory of the WAR."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:221
+#, no-c-format
+msgid ""
+"If you want to use the Seam tag library (most Seam applications do), you "
+"must include <literal>jboss-seam-ui.jar</literal> in the <literal>WEB-INF/"
+"lib</literal> directory of the WAR. If you want to use the PDF or email tag "
+"libraries, you need to put <literal>jboss-seam-pdf.jar</literal> or "
+"<literal>jboss-seam-mail.jar</literal> in <literal>WEB-INF/lib</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:224
+#, no-c-format
+msgid ""
+"If you want to use the Seam debug page (only works for applications using "
+"facelets), you must include <literal>jboss-seam-debug.jar</literal> in the "
+"<literal>WEB-INF/lib</literal> directory of the WAR."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:227
+#, no-c-format
+msgid ""
+"Seam ships with several example applications that are deployable in any Java "
+"EE container that supports EJB 3.0."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:231
+#, no-c-format
+msgid "Configuring Seam in Java SE, with the JBoss Embeddable EJB3 container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:232
+#, no-c-format
+msgid ""
+"The JBoss Embeddable EJB3 container lets you run EJB3 components outside the "
+"context of the Java EE 5 application server. This is especially, but not "
+"only, useful for testing."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:235
+#, no-c-format
+msgid ""
+"The Seam booking example application includes a TestNG integration test "
+"suite that runs on the Embeddable EJB3 container."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:246
+#, no-c-format
+msgid "The booking example application may even be deployed to Tomcat."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:257
+#, no-c-format
+msgid "Installing the Embeddable EJB3 container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:258
+#, no-c-format
+msgid ""
+"Seam ships with a build of the Embeddable EJB3 container in the "
+"<literal>embedded-ejb</literal> directory. To use the Embeddable EJB3 "
+"container with Seam, add the <literal>embedded-ejb/conf</literal> directory, "
+"and all jars in the <literal>lib</literal> and <literal>embedded-ejb/lib</"
+"literal> directories to your classpath. Then, add the following line to "
+"<literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:261
+#, no-c-format
+msgid "&lt;core:ejb /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:262
+#, no-c-format
+msgid ""
+"This setting installs the built-in component named <literal>org.jboss.seam."
+"core.ejb</literal>. This component is responsible for bootstrapping the EJB "
+"container when Seam is started, and shutting it down when the web "
+"application is undeployed."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:265
+#, no-c-format
+msgid "Configuring a datasource with the Embeddable EJB3 container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:266
+#, no-c-format
+msgid ""
+"You should refer to the Embeddable EJB3 container documentation for more "
+"information about configuring the container. You'll probably at least need "
+"to set up your own datasource. Embeddable EJB3 is implemented using the "
+"JBoss Microcontainer, so it's very easy to add new services to the minimal "
+"set of services provided by default. For example, I can add a new datasource "
+"by putting this <literal>jboss-beans.xml</literal> file in my classpath:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:269
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"\n"
+"&lt;deployment xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"urn:jboss:bean-deployer bean-deployer_1_0."
+"xsd\"\n"
+"            xmlns=\"urn:jboss:bean-deployer\"&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasourceBootstrap\"\n"
+"        class=\"org.jboss.resource.adapter.jdbc.local.LocalTxDataSource"
+"\"&gt;\n"
+"      &lt;property name=\"driverClass\"&gt;org.hsqldb.jdbcDriver&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"connectionURL\"&gt;jdbc:hsqldb:.&lt;/property&gt;\n"
+"      &lt;property name=\"userName\"&gt;sa&lt;/property&gt;\n"
+"      &lt;property name=\"jndiName\"&gt;java:/bookingDatasource&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"minSize\"&gt;0&lt;/property&gt;\n"
+"      &lt;property name=\"maxSize\"&gt;10&lt;/property&gt;\n"
+"      &lt;property name=\"blockingTimeout\"&gt;1000&lt;/property&gt;\n"
+"      &lt;property name=\"idleTimeout\"&gt;100000&lt;/property&gt;\n"
+"      &lt;property name=\"transactionManager\"&gt;\n"
+"        &lt;inject bean=\"TransactionManager\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"      &lt;property name=\"cachedConnectionManager\"&gt;\n"
+"        &lt;inject bean=\"CachedConnectionManager\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"      &lt;property name=\"initialContextProperties\"&gt;\n"
+"        &lt;inject bean=\"InitialContextProperties\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasource\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getDatasource\"&gt;\n"
+"         &lt;factory bean=\"bookingDatasourceBootstrap\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"&lt;/deployment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:271
+#, no-c-format
+msgid ""
+"The archive structure of a WAR-based deployment on an servlet engine like "
+"Tomcat will look something like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:274
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            myfaces-api.jar\n"
+"            myfaces-impl.jar\n"
+"            jboss-ejb3.jar\n"
+"            jboss-jca.jar\n"
+"            jboss-j2ee.jar\n"
+"            ...\n"
+"            mc-conf.jar/\n"
+"                ejb3-interceptors-aop.xml\n"
+"                embedded-jboss-beans.xml\n"
+"                default.persistence.properties\n"
+"                jndi.properties\n"
+"                login-config.xml\n"
+"                security-beans.xml\n"
+"                log4j.xml\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                    MANIFEST.MF\n"
+"                    persistence.xml\n"
+"                    jboss-beans.xml\n"
+"                log4j.xml\n"
+"                seam.properties\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            LoginBean.class\n"
+"                            Register.class\n"
+"                            RegisterBean.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:275
+#, no-c-format
+msgid ""
+"The <literal>mc-conf.jar</literal> just contains the standard JBoss "
+"Microcontainer configuration files for Embeddable EJB3. You won't usually "
+"need to edit these files yourself."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:278
+#, no-c-format
+msgid ""
+"Most of the Seam example applications may be deployed to Tomcat by running "
+"<literal>ant deploy.tomcat</literal>."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:281
+#, no-c-format
+msgid "Configuring Seam in J2EE"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:282
+#, no-c-format
+msgid ""
+"Seam is useful even if you're not yet ready to take the plunge into EJB 3.0. "
+"In this case you would use Hibernate3 or JPA instead of EJB 3.0 persistence, "
+"and plain JavaBeans instead of session beans. You'll miss out on some of the "
+"nice features of session beans but it will be very easy to migrate to EJB "
+"3.0 when you're ready and, in the meantime, you'll be able to take advantage "
+"of Seam's unique declarative state management architecture."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:293
+#, no-c-format
+msgid ""
+"Seam JavaBean components do not provide declarative transaction demarcation "
+"like session beans do. You <emphasis>could</emphasis> manage your "
+"transactions manually using the JTA <literal>UserTransaction</literal> (you "
+"could even implement your own declarative transaction management in a Seam "
+"interceptor). But most applications will use Seam managed transactions when "
+"using Hibernate with JavaBeans. Follow the instructions in the persistence "
+"chapter to install <literal>TransactionalSeamPhaseListener</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:296
+#, no-c-format
+msgid ""
+"The Seam distribution includes a version of the booking example application "
+"that uses Hibernate3 and JavaBeans instead of EJB3, and another version that "
+"uses JPA and JavaBeans. These example applications are ready to deploy into "
+"any J2EE application server."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:299
+#, no-c-format
+msgid ""
+"If we want to deploy Hibernate in a non-J2EE environment like Tomcat or "
+"TestNG, we need to do a little bit more work."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:302
+#, no-c-format
+msgid "Boostrapping Hibernate in Seam"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:303
+#, no-c-format
+msgid ""
+"Seam will bootstrap a Hibernate <literal>SessionFactory</literal> from your "
+"<literal>hibernate.cfg.xml</literal> file if you install a built-in "
+"component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:306
+#, no-c-format
+msgid ""
+"&lt;core:hibernate-session-factory name=\"hibernateSessionFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:307
+#, no-c-format
+msgid ""
+"You will also need to configure a <emphasis>managed session</emphasis> if "
+"you want a Seam managed Hibernate <literal>Session</literal> to be available "
+"via injection."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:310
+#, no-c-format
+msgid "Boostrapping JPA in Seam"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:311
+#, no-c-format
+msgid ""
+"Seam will bootstrap a JPA <literal>EntityManagerFactory</literal> from your "
+"<literal>persistence.xml</literal> file if you install this built-in "
+"component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:314
+#, no-c-format
+msgid "&lt;core:entity-manager-factory name=\"entityManagerFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:315
+#, no-c-format
+msgid ""
+"You will also need to configure a <emphasis>managed persistencece context</"
+"emphasis> if you want a Seam managed JPA <literal>EntityManager</literal> to "
+"be available via injection."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:319
+#, no-c-format
+msgid "We can package our application as a WAR, in the following structure:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:322
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            hibernate3.jar\n"
+"            hibernate-annotations.jar\n"
+"            ...\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                   MANIFEST.MF\n"
+"                seam.properties\n"
+"                hibernate.cfg.xml\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            Register.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:324
+#, no-c-format
+msgid "Configuring Seam in Java SE, with the JBoss Microcontainer"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:325
+#, no-c-format
+msgid ""
+"The Seam support for Hibernate and JPA requires JTA and a JCA datasource. If "
+"you are running in a non-EE environment like Tomcat or TestNG you can run "
+"these services, and Hibernate itself, in the JBoss Microcontainer."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:328
+#, no-c-format
+msgid ""
+"You can even deploy the Hibernate and JPA versions of the booking example in "
+"Tomcat."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:339
+#, no-c-format
+msgid ""
+"Seam ships with an example Microcontainer configuration in "
+"<literal>microcontainer/conf/jboss-beans.xml</literal> that provides all the "
+"things you need to run Seam with Hibernate in any non-EE environment. Just "
+"add the <literal>microcontainer/conf</literal> directory, and all jars in "
+"the <literal>lib</literal> and <literal>microcontainer/lib</literal> "
+"directories to your classpath. Refer to the documentation for the JBoss "
+"Microcontainer for more information."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:342
+#, no-c-format
+msgid "Using Hibernate and the JBoss Microcontainer"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:343
+#, no-c-format
+msgid ""
+"The built-in Seam component named <literal>org.jboss.seam.core."
+"microcontainer</literal> bootstraps the microcontainer. As before, we "
+"probably want to use a Seam managed session."
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:346
+#, no-c-format
+msgid ""
+"&lt;core:microcontainer/&gt;\n"
+"\n"
+"&lt;core:managed-hibernate-session name=\"bookingDatabase\" auto-create="
+"\"true\"\n"
+"    session-factory-jndi-name=\"java:/bookingSessionFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:347
+#, no-c-format
+msgid ""
+"Where <literal>java:/bookingSessionFactory</literal> is the name of the "
+"Hibernate session factory specified in <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:350
+#, no-c-format
+msgid ""
+"You'll need to provide a <literal>jboss.beans.xml</literal> file that "
+"installs JNDI, JTA, your JCA datasource and Hibernate into the "
+"microcontainer:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:353
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"\n"
+"&lt;deployment xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"urn:jboss:bean-deployer bean-deployer_1_0."
+"xsd\"\n"
+"            xmlns=\"urn:jboss:bean-deployer\"&gt;\n"
+"\n"
+"   &lt;bean name=\"Naming\" class=\"org.jnp.server.SingletonNamingServer\"/"
+"&gt;\n"
+"\n"
+"   &lt;bean name=\"TransactionManagerFactory\"\n"
+"       class=\"org.jboss.seam.microcontainer.TransactionManagerFactory\"/"
+"&gt;\n"
+"   &lt;bean name=\"TransactionManager\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getTransactionManager\"&gt;\n"
+"         &lt;factory bean=\"TransactionManagerFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasourceFactory\" class=\"org.jboss.seam."
+"microcontainer.DataSourceFactory\"&gt;\n"
+"      &lt;property name=\"driverClass\"&gt;org.hsqldb.jdbcDriver&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"connectionUrl\"&gt;jdbc:hsqldb:.&lt;/property&gt;\n"
+"      &lt;property name=\"userName\"&gt;sa&lt;/property&gt;\n"
+"      &lt;property name=\"jndiName\"&gt;java:/hibernateDatasource&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"minSize\"&gt;0&lt;/property&gt;\n"
+"      &lt;property name=\"maxSize\"&gt;10&lt;/property&gt;\n"
+"      &lt;property name=\"blockingTimeout\"&gt;1000&lt;/property&gt;\n"
+"      &lt;property name=\"idleTimeout\"&gt;100000&lt;/property&gt;\n"
+"      &lt;property name=\"transactionManager\"&gt;&lt;inject bean="
+"\"TransactionManager\"/&gt;&lt;/property&gt;\n"
+"   &lt;/bean&gt;\n"
+"   &lt;bean name=\"bookingDatasource\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getDataSource\"&gt;\n"
+"         &lt;factory bean=\"bookingDatasourceFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingSessionFactoryFactory\"\n"
+"       class=\"org.jboss.seam.microcontainer.HibernateFactory\"/&gt;\n"
+"   &lt;bean name=\"bookingSessionFactory\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getSessionFactory\"&gt;\n"
+"         &lt;factory bean=\"bookingSessionFactoryFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"      &lt;depends&gt;bookingDatasource&lt;/depends&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"&lt;/deployment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:355
+#, no-c-format
+msgid "The WAR could have the following structure:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:358
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            hibernate3.jar\n"
+"            ...\n"
+"            jboss-microcontainer.jar\n"
+"            jboss-jca.jar\n"
+"            ...\n"
+"            myfaces-api.jar\n"
+"            myfaces-impl.jar\n"
+"            mc-conf.jar/\n"
+"                jndi.properties\n"
+"                log4j.xml\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                    MANIFEST.MF\n"
+"                    jboss-beans.xml\n"
+"                seam.properties\n"
+"                hibernate.cfg.xml\n"
+"                log4j.xml\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            Register.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:359
+#, no-c-format
+msgid "Configuring jBPM in Seam"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:360
+#, no-c-format
+msgid ""
+"Seam's jBPM integration is not installed by default, so you'll need to "
+"enable jBPM by installing a built-in component. You'll also need to "
+"explicitly list your process and pageflow definitions. In "
+"<literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:363
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:pageflow-definitions&gt;\n"
+"        &lt;value&gt;createDocument.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;editDocument.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;approveDocument.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:pageflow-definitions&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;documentLifecycle.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:364
+#, no-c-format
+msgid ""
+"No further special configuration is needed if you only have pageflows. If "
+"you do have business process definitions, you need to provide a jBPM "
+"configuration, and a Hibernate configuration for jBPM. The Seam DVD Store "
+"demo includes example <literal>jbpm.cfg.xml</literal> and <literal>hibernate."
+"cfg.xml</literal> files that will work with Seam:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:367
+#, no-c-format
+msgid ""
+"&lt;jbpm-configuration&gt;\n"
+"\n"
+"  &lt;jbpm-context&gt;\n"
+"    &lt;service name=\"persistence\"&gt;\n"
+"       &lt;factory&gt;\n"
+"          &lt;bean class=\"org.jbpm.persistence.db."
+"DbPersistenceServiceFactory\"&gt;\n"
+"             &lt;field name=\"isTransactionEnabled\"&gt;&lt;false/&gt;&lt;/"
+"field&gt;\n"
+"          &lt;/bean&gt;\n"
+"       &lt;/factory&gt;\n"
+"    &lt;/service&gt;\n"
+"    &lt;service name=\"message\" factory=\"org.jbpm.msg.db."
+"DbMessageServiceFactory\" /&gt;\n"
+"    &lt;service name=\"scheduler\" factory=\"org.jbpm.scheduler.db."
+"DbSchedulerServiceFactory\" /&gt;\n"
+"    &lt;service name=\"logging\" factory=\"org.jbpm.logging.db."
+"DbLoggingServiceFactory\" /&gt;\n"
+"    &lt;service name=\"authentication\" \n"
+"        factory=\"org.jbpm.security.authentication."
+"DefaultAuthenticationServiceFactory\" /&gt;\n"
+"  &lt;/jbpm-context&gt;\n"
+"\n"
+"&lt;/jbpm-configuration&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:368
+#, no-c-format
+msgid ""
+"The most important thing to notice here is that jBPM transaction control is "
+"disabled. Seam or EJB3 should control the JTA transactions."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:372
+#, no-c-format
+msgid ""
+"There is not yet any well-defined packaging format for jBPM configuration "
+"and process/pageflow definition files. In the Seam examples we've decided to "
+"simply package all these files into the root of the EAR. In future, we will "
+"probably design some other standard packaging format. So the EAR looks "
+"something like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:375
+#, no-c-format
+msgid ""
+"my-application.ear/\n"
+"    jboss-seam.jar\n"
+"    el-api.jar\n"
+"    el-ri.jar\n"
+"    jbpm-3.1.jar\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"        application.xml\n"
+"    my-application.war/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"        WEB-INF/\n"
+"            web.xml\n"
+"            components.xml\n"
+"            faces-config.xml\n"
+"            lib/\n"
+"                jsf-facelets.jar\n"
+"                jboss-seam-ui.jar\n"
+"        login.jsp\n"
+"        register.jsp\n"
+"        ...\n"
+"    my-application.jar/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"            persistence.xml\n"
+"        seam.properties\n"
+"        org/\n"
+"            jboss/\n"
+"                myapplication/\n"
+"                    User.class\n"
+"                    Login.class\n"
+"                    LoginBean.class\n"
+"                    Register.class\n"
+"                    RegisterBean.class\n"
+"                    ...\n"
+"    jbpm.cfg.xml\n"
+"    hibernate.cfg.xml\n"
+"    createDocument.jpdl.xml\n"
+"    editDocument.jpdl.xml\n"
+"    approveDocument.jpdl.xml\n"
+"    documentLifecycle.jpdl.xml"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:376
+#, no-c-format
+msgid ""
+"Remember to add <literal>jbpm-3.1.jar</literal> to the manifest of your EJB-"
+"JAR and WAR."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:379
+#, no-c-format
+msgid "Configuring Seam in a Portal"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:380
+#, no-c-format
+msgid ""
+"To run a Seam application as a portlet, you'll need to provide certain "
+"portlet metadata (<literal>portlet.xml</literal>, etc) in addition to the "
+"usual Java EE metadata. See the <literal>examples/portal</literal> directory "
+"for an example of the booking demo preconfigured to run on JBoss Portal."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:383
+#, no-c-format
+msgid ""
+"In addition, you'll need to use a portlet-specific phase listener instead of "
+"<literal>SeamPhaseListener</literal> or "
+"<literal>TransactionalSeamPhaseListener</literal>. The "
+"<literal>SeamPortletPhaseListener</literal> and "
+"<literal>TransactionalSeamPortletPhaseListener</literal> are adapted to the "
+"portlet lifecycle. I would like to offer my sincerest apologies for the name "
+"of that last class. I really couldn't think of anything better. Sorry."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Controls.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Controls.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Controls.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,591 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Controls.xml:10
+#, no-c-format
+msgid "Seam JSF controls"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:11
+#, no-c-format
+msgid ""
+"Seam includes a number of JSF controls that are useful for working with "
+"Seam. These are intended to complement the built-in JSF controls, and "
+"controls from other third-party libraries. We recommend the Ajax4JSF and ADF "
+"faces (now Trinidad) tag libraries for use with Seam. We do not recommend "
+"the use of the Tomahawk tag library."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:14
+#, no-c-format
+msgid "The ui example demonstrates the use of a number of these tags."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:19
+#, no-c-format
+msgid "&lt;s:validate&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:21
+#, no-c-format
+msgid ""
+"Validate a JSF input field against the bound property using Hibernate "
+"Validator."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:27
+#, no-c-format
+msgid "&lt;s:validateAll&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:29
+#, no-c-format
+msgid ""
+"Validate all child JSF input fields against the bound propertys using "
+"Hibernate Validator."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:35
+#, no-c-format
+msgid "&lt;s:formattedText&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:37
+#, no-c-format
+msgid "Output <emphasis>Seam Text</emphasis>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:43
+#, no-c-format
+msgid "&lt;s:convertDateTime&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:45
+#, no-c-format
+msgid "Perform date or time conversions in the Seam timezone."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:51
+#, no-c-format
+msgid "&lt;s:convertEnum&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:53
+#, no-c-format
+msgid ""
+"Assigns an enum converter to the current component. This is primarily useful "
+"for radio button and dropdown controls."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:59
+#, no-c-format
+msgid "&lt;s:enumItem&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:61
+#, no-c-format
+msgid "Creates a <literal>SelectItem</literal> from an enum value."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:66
+#, no-c-format
+msgid ""
+"<literal>enumValue</literal> &mdash; the string representation of the enum "
+"value."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:71
+#, no-c-format
+msgid ""
+"<literal>label</literal> &mdash; the label to be used when rendering the "
+"<literal>SelectItem</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:79
+#, no-c-format
+msgid "&lt;s:selectItems&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:81
+#, no-c-format
+msgid ""
+"Creates a <literal>List&lt;SelectItem&gt;</literal> from a List, Set, "
+"DataModel or Array."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:86
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; an EL expression specifying the data that "
+"backs the <literal>List&lt;SelectItem&gt;</literal>"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:91
+#, no-c-format
+msgid ""
+"<literal>var</literal> &mdash; defines the name of the local variable that "
+"holds the current object during iteration"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:96
+#, no-c-format
+msgid ""
+"<literal>label</literal> &mdash; the label to be used when rendering the "
+"<literal>SelectItem</literal>. Can reference the <literal>var</literal> "
+"variable"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:101
+#, no-c-format
+msgid ""
+"<literal>disabled</literal> &mdash; if true the <literal>SelectItem</"
+"literal> will be rendered disabled. Can reference the <literal>var</literal> "
+"variable"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:106
+#, no-c-format
+msgid ""
+"<literal>noSelectionLabel</literal> &mdash; specifies the (optional) label "
+"to place at the top of list (if <literal>required=\"true\"</literal> is also "
+"specified then selecting this value will cause a validation error)"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:111
+#, no-c-format
+msgid ""
+"<literal>hideNoSelectionLabel</literal> &mdash; if true, the "
+"<literal>noSelectionLabel</literal> will be hidden when a value is selected"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:119
+#, no-c-format
+msgid "&lt;s:decorate&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:121
+#, no-c-format
+msgid "\"Decorate\" a JSF input field when validation fails."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:127
+#, no-c-format
+msgid "&lt;s:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:129
+#, no-c-format
+msgid "\"Decorate\" a JSF input field with the validation error message."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:135
+#, no-c-format
+msgid "&lt;s:span&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:137
+#, no-c-format
+msgid "Render a HTML <literal>&lt;span&gt;</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:143
+#, no-c-format
+msgid "&lt;s:div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:145
+#, no-c-format
+msgid "Render a HTML <literal>&lt;div&gt;</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:151
+#, no-c-format
+msgid "&lt;s:fragment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:153
+#, no-c-format
+msgid ""
+"A non-rendering component useful for enabling/disabling rendering of it's "
+"children"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:159
+#, no-c-format
+msgid "&lt;s:cache&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:161
+#, no-c-format
+msgid ""
+"Cache the rendered page fragment using JBoss Cache. Note that <literal>&lt;s:"
+"cache&gt;</literal> actually uses the instance of JBoss Cache managed by the "
+"built-in <literal>pojoCache</literal> component."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:166
+#, no-c-format
+msgid ""
+"<literal>key</literal> &mdash; the key to cache rendered content, often a "
+"value expression. For example, if we were caching a page fragment that "
+"displays a document, we might use <literal>key=\"Document-#{document.id}\"</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:171
+#, no-c-format
+msgid ""
+"<literal>enabled</literal> &mdash; a value expression that determines if the "
+"cache should be used."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:176
+#, no-c-format
+msgid ""
+"<literal>region</literal> &mdash; a JBoss Cache node to use (different nodes "
+"can have different expiry policies)."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:184
+#, no-c-format
+msgid "&lt;s:link&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:186
+#, no-c-format
+msgid ""
+"A link that supports invocation of an action with control over conversation "
+"propagation. <emphasis>Does not submit the form.</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:191 Controls.xml:236
+#, no-c-format
+msgid "<literal>value</literal> &mdash; the label."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:196 Controls.xml:241
+#, no-c-format
+msgid ""
+"<literal>action</literal> &mdash; a method binding that specified the action "
+"listener."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:201 Controls.xml:246
+#, no-c-format
+msgid "<literal>view</literal> &mdash; the JSF view id to link to."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:206 Controls.xml:251
+#, no-c-format
+msgid "<literal>fragment</literal> &mdash; the fragment identifier to link to."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:211 Controls.xml:256
+#, no-c-format
+msgid "<literal>disabled</literal> &mdash; is the link disabled?"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:216 Controls.xml:261 Controls.xml:301
+#, no-c-format
+msgid ""
+"<literal>propagation</literal> &mdash; determines the conversation "
+"propagation style: <literal>begin</literal>, <literal>join</literal>, "
+"<literal>nest</literal>, <literal>none</literal> or <literal>end</literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:221 Controls.xml:266 Controls.xml:306
+#, no-c-format
+msgid ""
+"<literal>pageflow</literal> &mdash; a pageflow definition to begin. (This is "
+"only useful when <literal>propagation=\"begin\"</literal> or "
+"<literal>propagation=\"join\"</literal>.)"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:229
+#, no-c-format
+msgid "&lt;s:button&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:231
+#, no-c-format
+msgid ""
+"A button that supports invocation of an action with control over "
+"conversation propagation. <emphasis>Does not submit the form.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:274
+#, no-c-format
+msgid "&lt;s:selectDate&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:276
+#, no-c-format
+msgid ""
+"Displays a dynamic date picker component that selects a date for the "
+"specified input field. The body of the <literal>selectDate</literal> element "
+"should contain HTML elements, such as text or an image, that prompt the user "
+"to click to display the date picker. The date picker can be styled using "
+"CSS. An example CSS file can be found in the Seam booking demo as "
+"<literal>date.css</literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:281
+#, no-c-format
+msgid ""
+"<literal>for</literal> &mdash; The id of the input field that the date "
+"picker will insert the selected date into."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:286
+#, no-c-format
+msgid ""
+"<literal>dateFormat</literal> &mdash; The date format string. This should "
+"match the date format of the input field."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:294
+#, no-c-format
+msgid "&lt;s:conversationPropagation&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:296
+#, no-c-format
+msgid ""
+"Customize the conversation propagation for a command link or button (or "
+"similar JSF control). <emphasis>Facelets only.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:314
+#, no-c-format
+msgid "&lt;s:conversationId&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:316
+#, no-c-format
+msgid ""
+"Add the conversation id to an output link (or similar JSF control). "
+"<emphasis>Facelets only.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:322
+#, no-c-format
+msgid "&lt;s:taskId&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:324
+#, no-c-format
+msgid ""
+"Add the task id to an output link (or similar JSF control), when the task is "
+"available via <literal>#{task}</literal>. <emphasis>Facelets only.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:330
+#, no-c-format
+msgid "&lt;s:fileUpload&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:332
+#, no-c-format
+msgid ""
+"Renders a file upload control. This control must be used within a form with "
+"an encoding type of <literal>multipart/form-data</literal>, i.e:"
+msgstr ""
+
+#. Tag: programlisting
+#: Controls.xml:335
+#, no-c-format
+msgid "&lt;h:form enctype=\"multipart/form-data\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:336
+#, no-c-format
+msgid ""
+"For multipart requests, the Seam Multipart servlet filter must also be "
+"configured in <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Controls.xml:339
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"      &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"      &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-"
+"class&gt;\n"
+"    &lt;/filter&gt;\n"
+"    \n"
+"    &lt;filter-mapping&gt;\n"
+"      &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"      &lt;url-pattern&gt;/*&lt;/url-pattern&gt;\n"
+"    &lt;/filter-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:340
+#, no-c-format
+msgid ""
+"The following configuration options for multipart requests may be configured "
+"in components.xml:"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:345
+#, no-c-format
+msgid ""
+"<literal>createTempFiles</literal> &mdash; if this option is set to true, "
+"uploaded files are streamed to a temporary file instead of in memory."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:350
+#, no-c-format
+msgid ""
+"<literal>maxRequestSize</literal> &mdash; the maximum size of a file upload "
+"request, in bytes."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:355
+#, no-c-format
+msgid "Here's an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Controls.xml:358
+#, no-c-format
+msgid ""
+"&lt;component class=\"org.jboss.seam.servlet.MultipartConfig\"&gt;\n"
+"        &lt;property name=\"createTempFiles\"&gt;true&lt;/property&gt;\n"
+"        &lt;property name=\"maxRequestSize\"&gt;1000000&lt;/property&gt;\n"
+"    &lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:359
+#, no-c-format
+msgid ""
+"And here's a list of the supported attributes for the <literal>fileUpload</"
+"literal> control:"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:364
+#, no-c-format
+msgid ""
+"<literal>data</literal> &mdash; this value binding receives the binary file "
+"data. The receiving field should be declared as a <literal>byte[]</literal> "
+"or <literal>InputStream</literal> (required)."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:369
+#, no-c-format
+msgid ""
+"<literal>contentType</literal> &mdash; this value binding receives the "
+"file's content type (optional)."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:374
+#, no-c-format
+msgid ""
+"<literal>fileName</literal> &mdash; this value binding receives the filename "
+"(optional)."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:379
+#, no-c-format
+msgid ""
+"<literal>accept</literal> &mdash; a comma-separated list of content types to "
+"accept, may not be supported by the browser. E.g. <literal>\"images/png,"
+"images/jpg\"</literal>, <literal>\"images/*\"</literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:384
+#, no-c-format
+msgid "<literal>style</literal> &mdash; The control's style"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:389
+#, no-c-format
+msgid "<literal>styleClass</literal> &mdash; The control's style class"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Conversations.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Conversations.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Conversations.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1248 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Conversations.xml:10
+#, no-c-format
+msgid "Conversations and workspace management"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:11
+#, no-c-format
+msgid "It's time to understand Seam's conversation model in more detail."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:14
+#, no-c-format
+msgid ""
+"Historically, the notion of a Seam \"conversation\" came about as a merger "
+"of three different ideas:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:19
+#, no-c-format
+msgid ""
+"The idea of a <emphasis>workspace</emphasis>, which I encountered in a "
+"project for the Victorian government in 2002. In this project I was forced "
+"to implement workspace management on top of Struts, an experience I pray "
+"never to repeat."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:24
+#, no-c-format
+msgid ""
+"The idea of an <emphasis>application transaction</emphasis> with optimistic "
+"semantics, and the realization that existing frameworks based around a "
+"stateless architecture could not provide effective management of extended "
+"persistence contexts. (The Hibernate team is truly fed up with copping the "
+"blame for <literal>LazyInitializationException</literal>s, which are not "
+"really Hibernate's fault, but rather the fault of the extremely limiting "
+"persistence context model supported by stateless architectures such as the "
+"Spring framework or the traditional <emphasis>stateless session facade</"
+"emphasis> (anti)pattern in J2EE.)"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:29
+#, no-c-format
+msgid "The idea of a workflow <emphasis>task</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:34
+#, no-c-format
+msgid ""
+"By unifying these ideas and providing deep support in the framework, we have "
+"a powerful construct that lets us build richer and more efficient "
+"applications with less code than before."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:38
+#, no-c-format
+msgid "Seam's conversation model"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:39
+#, no-c-format
+msgid ""
+"The examples we have seen so far make use of a very simple conversation "
+"model that follows these rules:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:44
+#, no-c-format
+msgid ""
+"There is always a conversation context active during the apply request "
+"values, process validations, update model values, invoke application and "
+"render response phases of the JSF request lifecycle."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:49
+#, no-c-format
+msgid ""
+"At the end of the restore view phase of the JSF request lifecycle, Seam "
+"attempts to restore any previous long-running conversation context. If none "
+"exists, Seam creates a new temporary conversation context."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:54
+#, no-c-format
+msgid ""
+"When an <literal>@Begin</literal> method is encountered, the temporary "
+"conversation context is promoted to a long running conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:59
+#, no-c-format
+msgid ""
+"When an <literal>@End</literal> method is encountered, any long-running "
+"conversation context is demoted to a temporary conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:64
+#, no-c-format
+msgid ""
+"At the end of the render response phase of the JSF request lifecycle, Seam "
+"stores the contents of a long running conversation context or destroys the "
+"contents of a temporary conversation context."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:69
+#, no-c-format
+msgid ""
+"Any faces request (a JSF postback) will propagate the conversation context. "
+"By default, non-faces requests (GET requests, for example) do not propagate "
+"the conversation context, but see below for more information on this."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:74
+#, no-c-format
+msgid ""
+"If the JSF request lifecycle is foreshortened by a redirect, Seam "
+"transparently stores and restores the current conversation context&mdash;"
+"unless the conversation was already ended via <literal>@End"
+"(beforeRedirect=true)</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:79
+#, no-c-format
+msgid ""
+"Seam transparently propagates the conversation context across JSF postbacks "
+"and redirects. If you don't do anything special, a <emphasis>non-faces "
+"request</emphasis> (a GET request for example) will not propagate the "
+"conversation context and will be processed in a new temporary conversation. "
+"This is usually - but not always - the desired behavior."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:82
+#, no-c-format
+msgid ""
+"If you want to propagate a Seam conversation across a non-faces request, you "
+"need to explicitly code the Seam <emphasis>conversation id</emphasis> as a "
+"request parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:85
+#, no-c-format
+msgid ""
+"&lt;a href=\"main.jsf?conversationId=#{conversation.id}\"&gt;Continue&lt;/"
+"a&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:86
+#, no-c-format
+msgid "Or, the more JSF-ish:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:89
+#, no-c-format
+msgid ""
+"&lt;h:outputLink value=\"main.jsf\"&gt;\n"
+"    &lt;f:param name=\"conversationId\" value=\"#{conversation.id}\"/&gt;\n"
+"    &lt;h:outputText value=\"Continue\"/&gt;\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:90 Conversations.xml:98
+#, no-c-format
+msgid "If you use the Seam tag library, this is equivalent:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:93
+#, no-c-format
+msgid ""
+"&lt;h:outputLink value=\"main.jsf\"&gt;\n"
+"    &lt;s:conversationId/&gt;\n"
+"    &lt;h:outputText value=\"Continue\"/&gt;\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:94
+#, no-c-format
+msgid ""
+"If you wish to disable propagation of the conversation context for a "
+"postback, a similar trick is used:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:97
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;f:param name=\"conversationPropagation\" value=\"none\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:101
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"none\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:102
+#, no-c-format
+msgid ""
+"Note that disabling conversation context propagation is absolutely not the "
+"same thing as ending the conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:105
+#, no-c-format
+msgid ""
+"The <literal>conversationPropagation</literal> request parameter, or the "
+"<literal>&lt;s:conversationPropagation&gt;</literal> tag may even be used to "
+"begin and end conversation, or begin a nested conversation."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:108
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"end\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:109
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Child\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"nested\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:110
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Hotel\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"begin\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:111
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Hotel\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"join\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:112
+#, no-c-format
+msgid ""
+"This conversation model makes it easy to build applications which behave "
+"correctly with respect to multi-window operation. For many applications, "
+"this is all that is needed. Some complex applications have either or both of "
+"the following additional requirements:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:117
+#, no-c-format
+msgid ""
+"A conversation spans many smaller units of user interaction, which execute "
+"serially or even concurrently. The smaller <emphasis>nested conversations</"
+"emphasis> have their own isolated set of conversation state, and also have "
+"access to the state of the outer conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:122
+#, no-c-format
+msgid ""
+"The user is able to switch between many conversations within the same "
+"browser window. This feature is called <emphasis>workspace management</"
+"emphasis>."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:130
+#, no-c-format
+msgid "Nested conversations"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:131
+#, no-c-format
+msgid ""
+"A nested conversation is created by invoking a method marked <literal>@Begin"
+"(nested=true)</literal> inside the scope of an existing conversation. A "
+"nested conversation has its own conversation context, and also has read-only "
+"access to the context of the outer conversation. (It can read the outer "
+"conversation's context variables, but not write to them.) When an "
+"<literal>@End</literal> is subsequently encountered, the nested conversation "
+"will be destroyed, and the outer conversation will resume, by \"popping\" "
+"the conversation stack. Conversations may be nested to any arbitrary depth."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:134
+#, no-c-format
+msgid ""
+"Certain user activity (workspace management, or the back button) can cause "
+"the outer conversation to be resumed before the inner conversation is ended. "
+"In this case it is possible to have multiple concurrent nested conversations "
+"belonging to the same outer conversation. If the outer conversation ends "
+"before a nested conversation ends, Seam destroys all nested conversation "
+"contexts along with the outer context."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:137
+#, no-c-format
+msgid ""
+"A conversation may be thought of as a <emphasis>continuable state</"
+"emphasis>. Nested conversations allow the application to capture a "
+"consistent continuable state at various points in a user interaction, thus "
+"insuring truly correct behavior in the face of backbuttoning and workspace "
+"management."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:140
+#, no-c-format
+msgid ""
+"TODO: an example to show how a nested conversation prevents bad stuff "
+"happening when you backbutton."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:143
+#, no-c-format
+msgid ""
+"Usually, if a component exists in a parent conversation of the current "
+"nested conversation, the nested conversation will use the same instance. "
+"Occasionally, it is useful to have a different instance in each nested "
+"conversation, so that the component instance that exists in the parent "
+"conversation is invisible to its child conversations. You can achieve this "
+"behavior by annotating the component <literal>@PerNestedConversation</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:149
+#, no-c-format
+msgid "Starting conversations with GET requests"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:150
+#, no-c-format
+msgid ""
+"JSF does not define any kind of action listener that is triggered when a "
+"page is accessed via a non-faces request (for example, a HTTP GET request). "
+"This can occur if the user bookmarks the page, or if we navigate to the page "
+"via an <literal>&lt;h:outputLink&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:153
+#, no-c-format
+msgid ""
+"Sometimes we want to begin a conversation immediately the page is accessed. "
+"Since there is no JSF action method, we can't solve the problem in the usual "
+"way, by annotating the action with <literal>@Begin</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:156
+#, no-c-format
+msgid ""
+"A further problem arises if the page needs some state to be fetched into a "
+"context variable. We've already seen two ways to solve this problem. If that "
+"state is held in a Seam component, we can fetch the state in a "
+"<literal>@Create</literal> method. If not, we can define a "
+"<literal>@Factory</literal> method for the context variable."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:159
+#, no-c-format
+msgid ""
+"If none of these options works for you, Seam lets you define a "
+"<emphasis>page action</emphasis> in the <literal>pages.xml</literal> file."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:162
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\" action=\"#{messageManager.list}\"/"
+"&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:163
+#, no-c-format
+msgid ""
+"This action method is called at the beginning of the render response phase, "
+"any time the page is about to be rendered. If a page action returns a non-"
+"null outcome, Seam will process any appropriate JSF and Seam navigation "
+"rules, possibly resulting in a completely different page being rendered."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:166
+#, no-c-format
+msgid ""
+"If <emphasis>all</emphasis> you want to do before rendering the page is "
+"begin a conversation, you could use a built-in action method that does just "
+"that:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:169
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\" action=\"#{conversation.begin}\"/"
+"&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:170
+#, no-c-format
+msgid ""
+"Note that you can also call this built-in action from a JSF control, and, "
+"similarly, you can use <literal>#{conversation.end}</literal> to end "
+"conversations."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:173
+#, no-c-format
+msgid ""
+"If you want more control, to join existing conversations or begin a nested "
+"conversion, to begin a pageflow or an atomic conversation, you should use "
+"the <literal>&lt;begin-conversation&gt;</literal> element."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:176
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\"&gt;\n"
+"       &lt;begin-conversation nested=\"true\" pageflow=\"AddItem\"/&gt;\n"
+"    &lt;page&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:177
+#, no-c-format
+msgid "There is also an <literal>&lt;end-conversation&gt;</literal> element."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:180
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/home.jsp\"&gt;\n"
+"       &lt;end-conversation/&gt;\n"
+"    &lt;page&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:181
+#, no-c-format
+msgid "To solve the first problem, we now have five options:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:186
+#, no-c-format
+msgid ""
+"Annotate the <literal>@Create</literal> method with <literal>@Begin</literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:191
+#, no-c-format
+msgid ""
+"Annotate the <literal>@Factory</literal> method with <literal>@Begin</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:196
+#, no-c-format
+msgid "Annotate the Seam page action method with <literal>@Begin</literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:201
+#, no-c-format
+msgid ""
+"Use <literal>&lt;begin-conversation&gt;</literal> in <literal>pages.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:206
+#, no-c-format
+msgid ""
+"Use <literal>#{conversation.begin}</literal> as the Seam page action method"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:214
+#, no-c-format
+msgid ""
+"Using <literal>&lt;s:link&gt;</literal> and <literal>&lt;s:button&gt;</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:215
+#, no-c-format
+msgid ""
+"JSF command links always perform a form submission via JavaScript, which "
+"breaks the web browser's \"open in new window\" or \"open in new tab\" "
+"feature. In plain JSF, you need to use an <literal>&lt;h:outputLink&gt;</"
+"literal> if you need this functionality. But there are two major limitations "
+"to <literal>&lt;h:outputLink&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:220
+#, no-c-format
+msgid ""
+"JSF provides no way to attach an action listener to an <literal>&lt;h:"
+"outputLink&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:225
+#, no-c-format
+msgid ""
+"JSF does not propagate the selected row of a <literal>DataModel</literal> "
+"since there is no actual form submission."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:230
+#, no-c-format
+msgid ""
+"Seam provides the notion of a <emphasis>page action</emphasis> to help solve "
+"the first problem, but this does nothing to help us with the second problem. "
+"We <emphasis>could</emphasis> work around this by using the RESTful approach "
+"of passing a request parameter and requerying for the selected object on the "
+"server side. In some cases&mdash;such as the Seam blog example "
+"application&mdash;this is indeed the best approach. The RESTful style "
+"supports bookmarking, since it does not require server-side state. In other "
+"cases, where we don't care about bookmarks, the use of <literal>@DataModel</"
+"literal> and <literal>@DataModelSelection</literal> is just so convenient "
+"and transparent!"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:233
+#, no-c-format
+msgid ""
+"To fill in this missing functionality, and to make conversation propagation "
+"even simpler to manage, Seam provides the <literal>&lt;s:link&gt;</literal> "
+"JSF tag."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:236
+#, no-c-format
+msgid "The link may specify just the JSF view id:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:239
+#, no-c-format
+msgid ""
+"&lt;s:link view=&#8220;/login.xhtml&#8221; value=&#8220;Login&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:240
+#, no-c-format
+msgid ""
+"Or, it may specify an action method (in which case the action outcome "
+"determines the page that results):"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:243
+#, no-c-format
+msgid ""
+"&lt;s:link action=&#8220;#{login.logout}&#8221; value=&#8220;Logout&#8221;/"
+"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:244
+#, no-c-format
+msgid ""
+"If you specify <emphasis>both</emphasis> a JSF view id and an action method, "
+"the 'view' will be used <emphasis>unless</emphasis> the action method "
+"returns a non-null outcome:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:247
+#, no-c-format
+msgid ""
+"&lt;s:link view=\"/loggedOut.xhtml\"  action=&#8220;#{login.logout}&#8221; "
+"value=&#8220;Logout&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:248
+#, no-c-format
+msgid ""
+"The link automatically propagates the selected row of a <literal>DataModel</"
+"literal> using inside <literal>&lt;h:dataTable&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:251
+#, no-c-format
+msgid ""
+"&lt;s:link view=&#8220;/hotel.xhtml&#8221; action=&#8220;#{hotelSearch."
+"selectHotel}&#8221; value=&#8220;#{hotel.name}&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:252
+#, no-c-format
+msgid "You can leave the scope of an existing conversation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:255
+#, no-c-format
+msgid ""
+"&lt;s:link view=&#8220;/main.xhtml&#8221; propagation=&#8220;none&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:256
+#, no-c-format
+msgid "You can begin, end, or nest conversations:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:259
+#, no-c-format
+msgid ""
+"&lt;s:link action=&#8220;#{issueEditor.viewComment}&#8221; "
+"propagation=&#8220;nest&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:260
+#, no-c-format
+msgid ""
+"If the link begins a conversation, you can even specify a pageflow to be "
+"used:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:263
+#, no-c-format
+msgid ""
+"&lt;s:link action=&#8220;#{documentEditor.getDocument}&#8221; "
+"propagation=&#8220;begin&#8221; \n"
+"        pageflow=&#8220;EditDocument&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:264
+#, no-c-format
+msgid ""
+"The <literal>taskInstance</literal> attribute if for use in jBPM task lists:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:267
+#, no-c-format
+msgid ""
+"&lt;s:link action=&#8220;#{documentApproval.approveOrReject}&#8221; "
+"taskInstance=&#8220;#{task}&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:268
+#, no-c-format
+msgid "(See the DVD Store demo application for examples of this.)"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:271
+#, no-c-format
+msgid ""
+"Finally, if you need the \"link\" to be rendered as a button, use "
+"<literal>&lt;s:button&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:274
+#, no-c-format
+msgid ""
+"&lt;s:button action=&#8220;#{login.logout}&#8221; value=&#8220;Logout&#8221;/"
+"&gt;"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:278
+#, no-c-format
+msgid "Success messages"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:279
+#, no-c-format
+msgid ""
+"It is quite common to display a message to the user indicating success or "
+"failure of an action. It is convenient to use a JSF <literal>FacesMessage</"
+"literal> for this. Unfortunately, a successful action often requires a "
+"browser redirect, and JSF does not propagate faces messages across "
+"redirects. This makes it quite difficult to display success messages in "
+"plain JSF."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:282
+#, no-c-format
+msgid ""
+"The built in conversation-scoped Seam component named "
+"<literal>facesMessages</literal> solves this problem. (You must have the "
+"Seam redirect filter installed.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:285
+#, no-c-format
+msgid ""
+"@Name(\"editDocumentAction\")\n"
+"@Stateless\n"
+"public class EditDocumentBean implements EditDocument {\n"
+"    @In EntityManager em;\n"
+"    @In Document document;\n"
+"    @In FacesMessages facesMessages;\n"
+"    \n"
+"    public String update() {\n"
+"        em.merge(document);\n"
+"        facesMessages.add(\"Document updated\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:286
+#, no-c-format
+msgid ""
+"Any message added to <literal>facesMessages</literal> is used in the very "
+"next render response phase for the current conversation. This even works "
+"when there is no long-running conversation since Seam preserves even "
+"temporary conversation contexts across redirects."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:289
+#, no-c-format
+msgid "You can even include JSF EL expressions in a faces message summary:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:292
+#, no-c-format
+msgid "facesMessages.add(\"Document #{document.title} was updated\");"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:293
+#, no-c-format
+msgid "You may display the messages in the usual way, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:296
+#, no-c-format
+msgid "&lt;h:messages globalOnly=\"true\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:300
+#, no-c-format
+msgid "Using an \"explicit\" conversation id"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:301
+#, no-c-format
+msgid ""
+"Ordinarily, Seam generates a meaningless unique id for each conversation in "
+"each session. You can customize the id value when you begin the conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:304
+#, no-c-format
+msgid ""
+"This feature can be used to customize the conversation id generation "
+"algorithm like so:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:307
+#, no-c-format
+msgid ""
+"@Begin(id=\"#{myConversationIdGenerator.nextId}\") \n"
+"public void editHotel() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:308
+#, no-c-format
+msgid "Or it can be used to assign a meaningful conversation id:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:311
+#, no-c-format
+msgid ""
+"@Begin(id=\"hotel#{hotel.id}\") \n"
+"public String editHotel() { ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:312
+#, no-c-format
+msgid ""
+"@Begin(id=\"hotel#{hotelsDataModel.rowData.id}\") \n"
+"public String selectHotel() { ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:313
+#, no-c-format
+msgid ""
+"@Begin(id=\"entry#{params['blogId']}\")\n"
+"public String viewBlogEntry() { ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:314
+#, no-c-format
+msgid ""
+"@BeginTask(id=\"task#{taskInstance.id}\") \n"
+"public String approveDocument() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:315
+#, no-c-format
+msgid ""
+"Clearly, these example result in the same conversation id every time a "
+"particular hotel, blog or task is selected. So what happens if a "
+"conversation with the same conversation id already exists when the new "
+"conversation begins? Well, Seam detects the existing conversation and "
+"redirects to that conversation without running the <literal>@Begin</literal> "
+"method again. This feature helps control the number of workspaces that are "
+"created when using workspace management."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:321
+#, no-c-format
+msgid "Workspace management"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:322
+#, no-c-format
+msgid ""
+"Workspace management is the ability to \"switch\" conversations in a single "
+"window. Seam makes workspace management completely transparent at the level "
+"of the Java code. To enable workspace management, all you need to do is:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:327
+#, no-c-format
+msgid ""
+"Provide <emphasis>description</emphasis> text for each view id (when using "
+"JSF or Seam navigation rules) or page node (when using jPDL pageflows). This "
+"description text is displayed to the user by the workspace switchers."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:332
+#, no-c-format
+msgid ""
+"Include one or more of the standard workspace switcher JSP or facelets "
+"fragments in your pages. The standard fragments support workspace management "
+"via a drop down menu, a list of conversations, or breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:335
+#, no-c-format
+msgid ""
+"Please refer to the Seam Issue Tracker demo to see all this functionality in "
+"action!"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:339
+#, no-c-format
+msgid "Workspace management and JSF navigation"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:340
+#, no-c-format
+msgid ""
+"When you use JSF or Seam navigation rules, Seam switches to a conversation "
+"by restoring the current <literal>view-id</literal> for that conversation. "
+"The descriptive text for the workspace is defined in a file called "
+"<literal>pages.xml</literal> that Seam expects to find in the <literal>WEB-"
+"INF</literal> directory, right next to <literal>faces-config.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:343
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/main.xhtml\"&gt;Search hotels: #{hotelBooking."
+"searchString}&lt;/page&gt;\n"
+"    &lt;page view-id=\"/hotel.xhtml\"&gt;View hotel: #{hotel.name}&lt;/"
+"page&gt;\n"
+"    &lt;page view-id=\"/book.xhtml\"&gt;Book hotel: #{hotel.name}&lt;/"
+"page&gt;\n"
+"    &lt;page view-id=\"/confirm.xhtml\"&gt;Confirm: #{booking.description}"
+"&lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:344
+#, no-c-format
+msgid ""
+"Note that if this file is missing, the Seam application will continue to "
+"work perfectly! The only missing functionality will be the ability to switch "
+"workspaces."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:350
+#, no-c-format
+msgid "Workspace management and jPDL pageflow"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:351
+#, no-c-format
+msgid ""
+"When you use a jPDL pageflow definition, Seam switches to a conversation by "
+"restoring the current jBPM process state. This is a more flexible model "
+"since it allows the same <literal>view-id</literal> to have different "
+"descriptions depending upon the current <literal>&lt;page&gt;</literal> "
+"node. The description text is defined by the <literal>&lt;page&gt;</literal> "
+"node:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:354
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"shopping\"&gt;\n"
+"\n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"browse\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;page name=\"browse\" view-id=\"/browse.xhtml\"&gt;\n"
+"      &lt;description&gt;DVD Search: #{search.searchPattern}&lt;/"
+"description&gt;\n"
+"      &lt;transition to=\"browse\"/&gt;\n"
+"      &lt;transition name=\"checkout\" to=\"checkout\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"checkout\" view-id=\"/checkout.xhtml\"&gt;\n"
+"      &lt;description&gt;Purchase: &#36;#{cart.total}&lt;/description&gt;\n"
+"      &lt;transition to=\"checkout\"/&gt;\n"
+"      &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"complete\" view-id=\"/complete.xhtml\"&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:358
+#, no-c-format
+msgid "The conversation switcher"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:359
+#, no-c-format
+msgid ""
+"Include the following fragment in your JSP or facelets page to get a drop-"
+"down menu that lets you switch to any current conversation, or to any other "
+"page of the application:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:362
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{switcher.conversationIdOrOutcome}\"&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Find Issues\" itemValue=\"findIssue\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Create Issue\" itemValue=\"editIssue\"/"
+"&gt;\n"
+"    &lt;f:selectItems value=\"#{switcher.selectItems}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{switcher.select}\" value=\"Switch\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:363
+#, no-c-format
+msgid ""
+"In this example, we have a menu that includes an item for each conversation, "
+"together with two additional items that let the user begin a new "
+"conversation."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:377
+#, no-c-format
+msgid "The conversation list"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:378
+#, no-c-format
+msgid ""
+"The conversation list is very similar to the conversation switcher, except "
+"that it is displayed as a table:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:381
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{conversationList}\" var=\"entry\"\n"
+"        rendered=\"#{not empty conversationList}\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Workspace&lt;/f:facet&gt;\n"
+"        &lt;h:commandLink action=\"#{entry.select}\" value=\"#{entry."
+"description}\"/&gt;\n"
+"        &lt;h:outputText value=\"[current]\" rendered=\"#{entry.current}\"/"
+"&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Activity&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{entry.startDatetime}\"&gt;\n"
+"            &lt;f:convertDateTime type=\"time\" pattern=\"hh:mm a\"/&gt;\n"
+"        &lt;/h:outputText&gt;\n"
+"        &lt;h:outputText value=\" - \"/&gt;\n"
+"        &lt;h:outputText value=\"#{entry.lastDatetime}\"&gt;\n"
+"            &lt;f:convertDateTime type=\"time\" pattern=\"hh:mm a\"/&gt;\n"
+"        &lt;/h:outputText&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"        &lt;h:commandButton action=\"#{entry.select}\" value=\"#{msg.Switch}"
+"\"/&gt;\n"
+"        &lt;h:commandButton action=\"#{entry.destroy}\" value=\"#{msg."
+"Destroy}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:382
+#, no-c-format
+msgid ""
+"We imagine that you will want to customize this for your own application."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:393
+#, no-c-format
+msgid ""
+"The conversation list is nice, but it takes up a lot of space on the page, "
+"so you probably don't want to put it on <emphasis>every</emphasis> page."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:396
+#, no-c-format
+msgid "Notice that the conversation list lets the user destroy workspaces."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:402
+#, no-c-format
+msgid "Breadcrumbs"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:403
+#, no-c-format
+msgid ""
+"Breadcrumbs are useful in applications which use a nested conversation "
+"model. The breadcrumbs are a list of links to conversations in the current "
+"conversation stack:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:406
+#, no-c-format
+msgid ""
+"&lt;t:dataList value=\"#{conversationStack}\" var=\"entry\"&gt;\n"
+"    &lt;h:outputText value=\" | \"/&gt; \n"
+"    &lt;h:commandLink value=\"#{entry.description}\" action=\"#{entry.select}"
+"\"/&gt;\n"
+"&lt;/t:dataList&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:407
+#, no-c-format
+msgid ""
+"Notice that here we are using the MyFaces <literal>&lt;t:dataList&gt;</"
+"literal> component, since JSF amazingly does not provide any standard "
+"component for looping."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:424
+#, no-c-format
+msgid "Conversational components and JSF component bindings"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:425
+#, no-c-format
+msgid ""
+"Conversational components have one minor limitation: they cannot be used to "
+"hold bindings to JSF components. (We generally prefer not to use this "
+"feature of JSF unless absolutely necessary, since it creates a hard "
+"dependency from application logic to the view.) On a postback request, "
+"component bindings are updated during the Restore View phase, before the "
+"Seam conversation context has been restored."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:428
+#, no-c-format
+msgid ""
+"To work around this use an event scoped component to store the component "
+"bindings and inject it into the conversation scoped component that requires "
+"it."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:431
+#, no-c-format
+msgid ""
+"@Name(\"grid\")\n"
+"@Scope(ScopeType.EVENT)\n"
+"public class Grid\n"
+"{\n"
+"    private HtmlPanelGrid htmlPanelGrid;\n"
+"\n"
+"    // getters and setters\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:432
+#, no-c-format
+msgid ""
+"@Name(\"gridEditor\")\n"
+"@Scope(ScopeType.CONVERSATION)\n"
+"public class GridEditor\n"
+"{\n"
+"    @In(required=false)\n"
+"    private Grid grid;\n"
+"    \n"
+"    ...\n"
+"}"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Drools.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Drools.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Drools.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,281 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Drools.xml:10
+#, no-c-format
+msgid "Seam and JBoss Rules"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:11
+#, no-c-format
+msgid ""
+"Seam makes it easy to call JBoss Rules (Drools) rulebases from Seam "
+"components or jBPM process definitions."
+msgstr ""
+
+#. Tag: title
+#: Drools.xml:15
+#, no-c-format
+msgid "Installing rules"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:16
+#, no-c-format
+msgid ""
+"The first step is to make an instance of <literal>org.drools.RuleBase</"
+"literal> available in a Seam context variable. In most rules-driven "
+"applications, rules need to be dynamically deployable, so you will need to "
+"implement some solution that allows you to deploy rules and make them "
+"available to Seam (a future release of Drools will provide a Rule Server "
+"that solves this problem). For testing purposes, Seam provides a built-in "
+"component that compiles a static set of rules from the classpath. You can "
+"install this component via <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:19
+#, no-c-format
+msgid ""
+"&lt;drools:rule-base name=\"policyPricingRules\"&gt;\n"
+"    &lt;drools:rule-files&gt;\n"
+"        &lt;value&gt;policyPricingRules&lt;/value&gt;\n"
+"    &lt;/drools:rule-files&gt;\n"
+"&lt;/drools:rule-base&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:20
+#, no-c-format
+msgid ""
+"This component compiles rules from a set of <literal>.drl</literal> files "
+"and caches an instance of <literal>org.drools.RuleBase</literal> in the Seam "
+"<literal>APPLICATION</literal> context. Note that it is quite likely that "
+"you will need to install multiple rule bases in a rule-driven application."
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:23
+#, no-c-format
+msgid ""
+"If you want to use a Drools DSL, you alse need to specify the DSL definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:26
+#, no-c-format
+msgid ""
+"&lt;drools:rule-base name=\"policyPricingRules\" dsl-file=\"policyPricing.dsl"
+"\"&gt;\n"
+"    &lt;drools:rule-files&gt;\n"
+"        &lt;value&gt;policyPricingRules&lt;/value&gt;\n"
+"    &lt;/drools:rule-files&gt;\n"
+"&lt;/drools:rule-base&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:27
+#, no-c-format
+msgid ""
+"Next, we need to make an instance of <literal>org.drools.WorkingMemory</"
+"literal> available to each conversation. (Each <literal>WorkingMemory</"
+"literal> accumulates facts relating to the current conversation.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:30
+#, no-c-format
+msgid ""
+"&lt;drools:managed-working-memory name=\"policyPricingWorkingMemory\" auto-"
+"create=\"true\" rule-base=\"#{policyPricingRules}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:31
+#, no-c-format
+msgid ""
+"Notice that we gave the <literal>policyPricingWorkingMemory</literal> a "
+"reference back to our rule base via the <literal>ruleBase</literal> "
+"configuration property."
+msgstr ""
+
+#. Tag: title
+#: Drools.xml:37
+#, no-c-format
+msgid "Using rules from a Seam component"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:38
+#, no-c-format
+msgid ""
+"We can now inject our <literal>WorkingMemory</literal> into any Seam "
+"component, assert facts, and fire rules:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:41
+#, no-c-format
+msgid ""
+"@In WorkingMemory policyPricingWorkingMemory;\n"
+"\n"
+"@In Policy policy;\n"
+"@In Customer customer;\n"
+"\n"
+"public void pricePolicy() throws FactException\n"
+"{\n"
+"    policyPricingWorkingMemory.assertObject(policy);\n"
+"    policyPricingWorkingMemory.assertObject(customer);\n"
+"    policyPricingWorkingMemory.fireAllRules();\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Drools.xml:45
+#, no-c-format
+msgid "Using rules from a jBPM process definition"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:46
+#, no-c-format
+msgid ""
+"You can even allow a rule base to act as a jBPM action handler, decision "
+"handler, or assignment handler&mdash;in either a pageflow or business "
+"process definition."
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:49
+#, no-c-format
+msgid ""
+"&lt;decision name=\"approval\"&gt;\n"
+"         \n"
+"    &lt;handler class=\"org.jboss.seam.drools.DroolsDecisionHandler\"&gt;\n"
+"        &lt;workingMemoryName&gt;orderApprovalRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"        &lt;assertObjects&gt;\n"
+"            &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"            &lt;element&gt;#{order}&lt;/element&gt;\n"
+"            &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"        &lt;/assertObjects&gt;\n"
+"    &lt;/handler&gt;\n"
+"    \n"
+"    &lt;transition name=\"approved\" to=\"ship\"&gt;\n"
+"        &lt;action class=\"org.jboss.seam.drools.DroolsActionHandler\"&gt;\n"
+"            &lt;workingMemoryName&gt;shippingRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"            &lt;assertObjects&gt;\n"
+"                &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"            &lt;/assertObjects&gt;\n"
+"        &lt;/action&gt;\n"
+"    &lt;/transition&gt;\n"
+"    \n"
+"    &lt;transition name=\"rejected\" to=\"cancelled\"/&gt;\n"
+"    \n"
+"&lt;/decision&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:50
+#, no-c-format
+msgid ""
+"The <literal>&lt;assertObjects&gt;</literal> element specifies EL "
+"expressions that return an object or collection of objects to be asserted as "
+"facts into the <literal>WorkingMemory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:53
+#, no-c-format
+msgid "There is also support for using Drools for jBPM task assignments:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:56
+#, no-c-format
+msgid ""
+"&lt;task-node name=\"review\"&gt;\n"
+"    &lt;task name=\"review\" description=\"Review Order\"&gt;\n"
+"        &lt;assignment handler=\"org.jboss.seam.drools."
+"DroolsAssignmentHandler\"&gt;\n"
+"            &lt;workingMemoryName&gt;orderApprovalRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"            &lt;assertObjects&gt;\n"
+"                &lt;element&gt;#{actor}&lt;/element&gt;\n"
+"                &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"            &lt;/assertObjects&gt;\n"
+"        &lt;/assignment&gt;\n"
+"    &lt;/task&gt;\n"
+"    &lt;transition name=\"rejected\" to=\"cancelled\"/&gt;\n"
+"    &lt;transition name=\"approved\" to=\"approved\"/&gt;\n"
+"&lt;/task-node&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:57
+#, no-c-format
+msgid ""
+"Certain objects are available to the rules as Drools globals, namely the "
+"jBPM <literal>Assignable</literal>, as <literal>assignable</literal> and a "
+"Seam <literal>Decision</literal> object, as <literal>decision</literal>. "
+"Rules which handle decisions should call <literal>decision.setOutcome"
+"(\"result\")</literal> to determine the result of the decision. Rules which "
+"perform assignments should set the actor id using the <literal>Assignable</"
+"literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:60
+#, no-c-format
+msgid ""
+"package org.jboss.seam.examples.shop\n"
+"\n"
+"import org.jboss.seam.drools.Decision\n"
+"\n"
+"global Decision decision\n"
+"\n"
+"rule \"Approve Order For Loyal Customer\"\n"
+"  when\n"
+"    Customer( loyaltyStatus == \"GOLD\" )\n"
+"    Order( totalAmount &lt;= 10000 )\n"
+"  then\n"
+"    decision.setOutcome(\"approved\");\n"
+"end"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:61
+#, no-c-format
+msgid ""
+"package org.jboss.seam.examples.shop\n"
+"\n"
+"import org.jbpm.taskmgmt.exe.Assignable\n"
+"\n"
+"global Assignable assignable\n"
+"\n"
+"rule \"Assign Review For Small Order\"\n"
+"  when\n"
+"    Order( totalAmount &lt;= 100 )\n"
+"  then\n"
+"    assignable.setPooledActors( new String[] {\"reviewers\"} );\n"
+"end"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Elenhancements.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Elenhancements.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Elenhancements.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,221 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Elenhancements.xml:10
+#, no-c-format
+msgid "Expression language enhancements"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:11
+#, no-c-format
+msgid ""
+"The standard Unified Expression Language (EL) assumes that any parameters to "
+"a method expression will be provided by Java code. This means that a method "
+"with parameters cannot be used as a JSF method binding. Seam provides an "
+"enhancement to the EL that allows parameters to be included in a method "
+"expression itself. This applies to <emphasis>any</emphasis> Seam method "
+"expression, including any JSF method binding, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:14
+#, no-c-format
+msgid ""
+"&lt;s:commandButton action=\"#{hotelBooking.bookHotel(hotel)}\" value=\"Book "
+"Hotel\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:16
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:17
+#, no-c-format
+msgid ""
+"To use this feature in Facelets, you will need to declare a special view "
+"handler, <literal>SeamFaceletViewHandler</literal> in <literal>faces-config."
+"xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:20
+#, no-c-format
+msgid ""
+"&lt;faces-config&gt;\n"
+"    &lt;application&gt;\n"
+"        &lt;view-handler&gt;org.jboss.seam.ui.facelet."
+"SeamFaceletViewHandler&lt;/view-handler&gt;\n"
+"    &lt;/application&gt;\n"
+"&lt;/faces-config&gt;"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:24
+#, no-c-format
+msgid "Usage"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:25
+#, no-c-format
+msgid "Parameters are surrounded by parentheses, and separated by commas:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:28
+#, no-c-format
+msgid ""
+"&lt;h:commandButton action=\"#{hotelBooking.bookHotel(hotel, user)}\" value="
+"\"Book Hotel\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:29
+#, no-c-format
+msgid ""
+"The parameters <literal>hotel</literal> and <literal>user</literal> will be "
+"evaluated as value expressions and passed to the <literal>bookHotel()</"
+"literal> method of the component. This gives you an alternative to the use "
+"of <literal>@In</literal>."
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:32
+#, no-c-format
+msgid "Any value expression may be used as a parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:35
+#, no-c-format
+msgid ""
+"&lt;h:commandButton action=\"#{hotelBooking.bookHotel(hotel.id, user."
+"username)}\" value=\"Book Hotel\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:36
+#, no-c-format
+msgid "You may even pass literal strings using single or double quotes:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:39
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=&#8221;#{printer.println( &#8216;Hello world!"
+"&#8217; )}&#8221; value=&#8221;Hello&#8221;/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:40
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=&#8217;#{printer.println( &#8220;Hello "
+"again&#8221; )}&#8217; value=&#8217;Hello&#8217;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:41
+#, no-c-format
+msgid ""
+"You might even want to use this notation for all your action methods, even "
+"when you don&#8217;t have parameters to pass. This improves readability by "
+"making it clear that the expression is a method expression and not a value "
+"expression:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:44
+#, no-c-format
+msgid "&lt;s:link value=\"Cancel\" action=\"#{hotelBooking.cancel()}\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:48
+#, no-c-format
+msgid "Limitations"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:49
+#, no-c-format
+msgid "Please be aware of the following limitations:"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:53
+#, no-c-format
+msgid "Incompatibility with JSP 2.1"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:54
+#, no-c-format
+msgid ""
+"This extension is not currently compatible with JSP 2.1. So if you want to "
+"use this extension with JSF 1.2, you will need to use Facelets. The "
+"extension works correctly with JSP 2.0."
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:60
+#, no-c-format
+msgid "Calling a <literal>MethodExpression</literal> from Java code"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:61
+#, no-c-format
+msgid ""
+"Normally, when a <literal>MethodExpression</literal> or "
+"<literal>MethodBinding</literal> is created, the parameter types are passed "
+"in by JSF. In the case of a method binding, JSF assumes that there are no "
+"parameters to pass. With this extension, we can&#8217;t know the parameter "
+"types until after the expression has been evaluated. This has two minor "
+"consequences:"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:66
+#, no-c-format
+msgid ""
+"When you invoke a <literal>MethodExpression</literal> in Java code, "
+"parameters you pass may be ignored. Parameters defined in the expression "
+"will take precedence."
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:71
+#, no-c-format
+msgid ""
+"Ordinarily, it is safe to call <literal>methodExpression.getMethodInfo()."
+"getParamTypes()</literal> at any time. For an expression with parameters, "
+"you must first invoke the <literal>MethodExpression</literal> before calling "
+"<literal>getParamTypes()</literal>."
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:76
+#, no-c-format
+msgid ""
+"Both of these cases are exceedingly rare and only apply when you want to "
+"invoke the <literal>MethodExpression</literal> by hand in Java code."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Events.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Events.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Events.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1430 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Events.xml:10
+#, no-c-format
+msgid "Events, interceptors and exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:11
+#, no-c-format
+msgid ""
+"Complementing the contextual component model, there are two further basic "
+"concepts that facilitate the extreme loose-coupling that is the distinctive "
+"feature of Seam applications. The first is a strong event model where events "
+"may be mapped to event listeners via JSF-like method binding expressions. "
+"The second is the pervasive use of annotations and interceptors to apply "
+"cross-cutting concerns to components which implement business logic."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:14
+#, no-c-format
+msgid "Seam events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:15
+#, no-c-format
+msgid ""
+"The Seam component model was developed for use with <emphasis>event-driven "
+"applications</emphasis>, specifically to enable the development of fine-"
+"grained, loosely-coupled components in a fine-grained eventing model. Events "
+"in Seam come in several types, most of which we have already seen:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:20
+#, no-c-format
+msgid "JSF events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:25
+#, no-c-format
+msgid "jBPM transition events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:30
+#, no-c-format
+msgid "Seam page actions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:35
+#, no-c-format
+msgid "Seam component-driven events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:40
+#, no-c-format
+msgid "Seam contextual events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:45
+#, no-c-format
+msgid ""
+"All of these various kinds of events are mapped to Seam components via JSF "
+"EL method binding expressions. For a JSF event, this is defined in the JSF "
+"template:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:48
+#, no-c-format
+msgid ""
+"&lt;h:commandButton value=\"Click me!\" action=\"#{helloWorld.sayHello}\"/"
+"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:49
+#, no-c-format
+msgid ""
+"For a jBPM transition event, it is specified in the jBPM process definition "
+"or pageflow definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:52
+#, no-c-format
+msgid ""
+"&lt;start-page name=\"hello\" view-id=\"/hello.jsp\"&gt;\n"
+"    &lt;transition to=\"hello\"&gt;\n"
+"        &lt;action expression=\"#{helloWorld.sayHello}\"/&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/start-page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:53
+#, no-c-format
+msgid ""
+"You can find out more information about JSF events and jBPM events "
+"elsewhere. Lets concentrate for now upon the two additional kinds of events "
+"defined by Seam."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:56
+#, no-c-format
+msgid "Page actions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:57
+#, no-c-format
+msgid ""
+"A Seam page action is an event that occurs just before we render a page. We "
+"declare page actions in <literal>WEB-INF/pages.xml</literal>. We can define "
+"a page action for either a particular JSF view id:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:60
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\" action=\"#{helloWorld.sayHello}\"/&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:61
+#, no-c-format
+msgid ""
+"Or we can use a wildcard to specify an action that applies to all view ids "
+"that match the pattern:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:64
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello/*\" action=\"#{helloWorld.sayHello}\"/&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:65
+#, no-c-format
+msgid ""
+"If multiple wildcarded page actions match the current view-id, Seam will "
+"call all the actions, in order of least-specific to most-specific."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:68
+#, no-c-format
+msgid ""
+"The page action method can return a JSF outcome. If the outcome is non-null, "
+"Seam will delegate to the defined JSFadn Seam navigation rules and a "
+"different view may end up being rendered."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:71
+#, no-c-format
+msgid ""
+"Furthermore, the view id mentioned in the <literal>&lt;page&gt;</literal> "
+"element need not correspond to a real JSP or Facelets page! So, we can "
+"reproduce the functionality of a traditional action-oriented framework like "
+"Struts or WebWork using page actions. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:74
+#, no-c-format
+msgid "TODO: translate struts action into page action"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:75
+#, no-c-format
+msgid ""
+"This is quite useful if you want to do complex things in response to non-"
+"faces requests (for example, HTTP GET requests)."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:78
+#, no-c-format
+msgid "Page parameters"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:79
+#, no-c-format
+msgid ""
+"A JSF faces request (a form submission) encapsulates both an \"action\" (a "
+"method binding) and \"parameters\" (input value bindings). A page action "
+"might also needs parameters!"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:82
+#, no-c-format
+msgid ""
+"Since GET requests are bookmarkable, page parameters are passed as human-"
+"readable request parameters. (Unlike JSF form inputs, which are anything "
+"but!)"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:85
+#, no-c-format
+msgid ""
+"Seam lets us provide a value binding that maps a named request parameter to "
+"an attribute of a model object."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:88
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\" action=\"#{helloWorld.sayHello}\"&gt;\n"
+"        &lt;param name=\"firstName\" value=\"#{person.firstName}\"/&gt;\n"
+"        &lt;param name=\"lastName\" value=\"#{person.lastName}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:89
+#, no-c-format
+msgid ""
+"The <literal>&lt;param&gt;</literal> declaration is bidirectional, just like "
+"a value binding for a JSF input:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:94
+#, no-c-format
+msgid ""
+"When a non-faces (GET) request for the view id occurs, Seam sets the value "
+"of the named request parameter onto the model object, after performing "
+"appropriate type conversions."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:99
+#, no-c-format
+msgid ""
+"Any <literal>&lt;s:link&gt;</literal> or <literal>&lt;s:button&gt;</literal> "
+"transparently includes the request parameter. The value of the parameter is "
+"determined by evaluating the value binding during the render phase (when the "
+"<literal>&lt;s:link&gt;</literal> is rendered)."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:104
+#, no-c-format
+msgid ""
+"Any navigation rule with a <literal>&lt;redirect/&gt;</literal> to the view "
+"id transparently includes the request parameter. The value of the parameter "
+"is determined by evaluating the value binding at the end of the invoke "
+"application phase."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:109
+#, no-c-format
+msgid ""
+"The value is transparently propagated with any JSF form submission for the "
+"page with the given view id. (This means that view parameters behave like "
+"<literal>PAGE</literal>-scoped context variables for faces requests."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:114
+#, no-c-format
+msgid ""
+"The essential idea behind all this is that <emphasis>however</emphasis> we "
+"get from any other page to <literal>/hello.jsp</literal> (or from <literal>/"
+"hello.jsp</literal> back to <literal>/hello.jsp</literal>), the value of the "
+"model attribute referred to in the value binding is \"remembered\", without "
+"the need for a conversation (or other server-side state)."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:117
+#, no-c-format
+msgid ""
+"This all sounds pretty complex, and you're probably wondering if such an "
+"exotic construct is really worth the effort. Actually, the idea is very "
+"natural once you \"get it\". It is definitely worth taking the time to "
+"understand this stuff. Page parameters are the most elegant way to propagate "
+"state across a non-faces request. They are especially cool for problems like "
+"search screens with bookmarkable results pages, where we would like to be "
+"able to write our application code to handle both POST and GET requests with "
+"the same code. Page parameters eliminate repetitive listing of request "
+"parameters in the view definition and make redirects much easier to code."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:120
+#, no-c-format
+msgid ""
+"Note that you don't need an actual page action method binding to use a page "
+"parameter. The following is perfectly valid:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:123
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\"&gt;\n"
+"        &lt;param name=\"firstName\" value=\"#{person.firstName}\"/&gt;\n"
+"        &lt;param name=\"lastName\" value=\"#{person.lastName}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:124
+#, no-c-format
+msgid "You can even specify a JSF converter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:127
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/calculator.jsp\" action=\"#{calculator.calculate}"
+"\"&gt;\n"
+"        &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"        &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"        &lt;param name=\"op\" converterId=\"com.my.calculator."
+"OperatorConverter\" value=\"#{calculator.op}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:128
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/calculator.jsp\" action=\"#{calculator.calculate}"
+"\"&gt;\n"
+"        &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"        &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"        &lt;param name=\"op\" converter=\"#{operatorConverter}\" value=\"#"
+"{calculator.op}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:129
+#, no-c-format
+msgid "Navigation"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:130
+#, no-c-format
+msgid ""
+"You can use standard JSF navigation rules defined in <literal>faces-config."
+"xml</literal> in a Seam application. However, JSF navigation rules have a "
+"number of annoying limitations:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:135
+#, no-c-format
+msgid ""
+"It is not possible to specify request parameters to be used when redirecting."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:140
+#, no-c-format
+msgid "It is not possible to begin or end conversations from a rule."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:145
+#, no-c-format
+msgid ""
+"Rules work by evaluating the return value of the action method; it is not "
+"possible to evaluate an arbitrary EL expression."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:150
+#, no-c-format
+msgid ""
+"A further problem is that \"orchestration\" logic gets scattered between "
+"<literal>pages.xml</literal> and <literal>faces-config.xml</literal>. It's "
+"better to unify this logic into <literal>pages.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:153
+#, no-c-format
+msgid "This JSF navigation rule:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:156
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"    &lt;from-view-id&gt;/editDocument.xhtml&lt;/from-view-id&gt;\n"
+"    \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-action&gt;#{documentEditor.update}&lt;/from-action&gt;\n"
+"        &lt;from-outcome&gt;success&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/viewDocument.xhtml&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"    \n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:157
+#, no-c-format
+msgid "Can be rewritten as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:160
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if-outcome=\"success\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:161
+#, no-c-format
+msgid ""
+"But it would be even nicer if we didn't have to pollute our "
+"<literal>DocumentEditor</literal> component with string-valued return values "
+"(the JSF outcomes). So Seam lets us write:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:164
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\" \n"
+"                   evaluate=\"#{documentEditor.errors.size}\"&gt;\n"
+"        &lt;rule if-outcome=\"0\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:165
+#, no-c-format
+msgid "Or even:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:168
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:169
+#, no-c-format
+msgid ""
+"The first form evaluates a value binding to determine the outcome value to "
+"be used by the subsequent rules. The second approach ignores the outcome and "
+"evaluates a value binding for each possible rule."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:172
+#, no-c-format
+msgid ""
+"Of course, when an update succeeds, we probably want to end the current "
+"conversation. We can do that like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:175
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:176
+#, no-c-format
+msgid ""
+"But ending the conversation loses any state associated with the "
+"conversation, including the document we are currently interested in! One "
+"solution would be to use an immediate render instead of a redirect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:179
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:180
+#, no-c-format
+msgid ""
+"But the correct solution is to pass the document id as a request parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:183
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"&gt;\n"
+"                &lt;param name=\"documentId\" value=\"#{documentEditor."
+"documentId}\"/&gt;\n"
+"            &lt;/redirect&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:184
+#, no-c-format
+msgid ""
+"Null outcomes are a special case in JSF. The null outcome is interpreted to "
+"mean \"redisplay the page\". The following navigation rule matches any non-"
+"null outcome, but <emphasis>not</emphasis> the null outcome:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:187
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule&gt;\n"
+"            &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:188
+#, no-c-format
+msgid ""
+"If you want to perform navigation when a null outcome occurs, use the "
+"following form instead:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:191
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:192
+#, no-c-format
+msgid ""
+"Fine-grained files for definition of navigation, page actions and parameters"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:193
+#, no-c-format
+msgid ""
+"If you have a lot of different page actions and page parameters, or even "
+"just a lot of navigation rules, you will almost certainly want to split the "
+"declarations up over multiple files. You can define actions and parameters "
+"for a page with the view id <literal>/calc/calculator.jsp</literal> in a "
+"resource named <literal>calc/calculator.page.xml</literal>. The root element "
+"in this case is the <literal>&lt;page&gt;</literal> element, and the view id "
+"is implied:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:196
+#, no-c-format
+msgid ""
+"&lt;page action=\"#{calculator.calculate}\"&gt;\n"
+"    &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"    &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"    &lt;param name=\"op\" converter=\"#{operatorConverter}\" value=\"#"
+"{calculator.op}\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:197
+#, no-c-format
+msgid "Component-driven events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:198
+#, no-c-format
+msgid ""
+"Seam components can interact by simply calling each others methods. Stateful "
+"components may even implement the observer/observable pattern. But to enable "
+"components to interact in a more loosely-coupled fashion than is possible "
+"when the components call each others methods directly, Seam provides "
+"<emphasis>component-driven events</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:201
+#, no-c-format
+msgid ""
+"We specify event listeners (observers) in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:204
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;event type=\"hello\"&gt;\n"
+"        &lt;action expression=\"#{helloListener.sayHelloBack}\"/&gt;\n"
+"        &lt;action expression=\"#{logger.logHello}\"/&gt;\n"
+"    &lt;/event&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:205
+#, no-c-format
+msgid "Where the <emphasis>event type</emphasis> is just an arbitrary string."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:208
+#, no-c-format
+msgid ""
+"When an event occurs, the actions registered for that event will be called "
+"in the order they appear in <literal>components.xml</literal>. How does a "
+"component raise an event? Seam provides a built-in component for this."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:211
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World!\");\n"
+"        Events.instance().raiseEvent(\"hello\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:212
+#, no-c-format
+msgid "Or you can use an annotation."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:215
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    @RaiseEvent(\"hello\")\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World!\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:216
+#, no-c-format
+msgid ""
+"Notice that this event producer has no dependency upon event consumers. The "
+"event listener may now be implemented with absolutely no dependency upon the "
+"producer:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:219
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    public void sayHelloBack() {\n"
+"        FacesMessages.instance().add(\"Hello to you too!\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:220
+#, no-c-format
+msgid ""
+"The method binding defined in <literal>components.xml</literal> above takes "
+"care of mapping the event to the consumer. If you don't like futzing about "
+"in the <literal>components.xml</literal> file, you can use an annotation "
+"instead:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:223
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    @Observer(\"hello\")\n"
+"    public void sayHelloBack() {\n"
+"        FacesMessages.instance().add(\"Hello to you too!\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:224
+#, no-c-format
+msgid ""
+"You might wonder why I've not mentioned anything about event objects in this "
+"discussion. In Seam, there is no need for an event object to propagate state "
+"between event producer and listener. State is held in the Seam contexts, and "
+"is shared between components. However, if you really want to pass an event "
+"object, you can:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:227
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    private String name;\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World, my name is #0.\", "
+"name);\n"
+"        Events.instance().raiseEvent(\"hello\", name);\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:228
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    @Observer(\"hello\")\n"
+"    public void sayHelloBack(String name) {\n"
+"        FacesMessages.instance().add(\"Hello #0!\", name);\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:229
+#, no-c-format
+msgid "Contextual events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:230
+#, no-c-format
+msgid ""
+"Seam defines a number of built-in events that the application can use to "
+"perform special kinds of framework integration. The events are:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:235
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preSetVariable.&lt;name&gt;</literal> &mdash; called "
+"when the context variable &lt;name&gt; is set"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:240
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postSetVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is set"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:245
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preRemoveVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is unset"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:250
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postRemoveVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is unset"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:255
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preDestroyContext.&lt;SCOPE&gt;</literal> &mdash; "
+"called before the &lt;SCOPE&gt; context is destroyed"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:260
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postDestroyContext.&lt;SCOPE&gt;</literal> &mdash; "
+"called after the &lt;SCOPE&gt; context is destroyed"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:265
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beginConversation </literal>&mdash; called whenever "
+"a long-running conversation begins"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:270
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endConversation </literal>&mdash; called whenever a "
+"long-running conversation ends"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:275
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beginPageflow.&lt;name&gt; </literal>&mdash; called "
+"when the pageflow &lt;name&gt; begins"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:280
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endPageflow.&lt;name&gt; </literal>&mdash; called "
+"when the pageflow &lt;name&gt; ends"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:285
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.createProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; is created"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:290
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; ends"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:295
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.initProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; is associated with the conversation"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:300
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.initTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is associated with the conversation"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:305
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.startTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is started"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:310
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is ended"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:315
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postCreate.&lt;name&gt; </literal>&mdash; called "
+"when the component &lt;name&gt; is created"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:320
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preDestroy.&lt;name&gt; </literal>&mdash; called "
+"when the component &lt;name&gt; is destroyed"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:325
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beforePhase </literal>&mdash; called before the "
+"start of a JSF phase"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:330
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.afterPhase </literal>&mdash; called after the end of "
+"a JSF phase"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:335
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postAuthenticate.&lt;name&gt; </literal>&mdash; "
+"called after a user is authenticated"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:340
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preAuthenticate.&lt;name&gt; </literal>&mdash; "
+"called before attempting to authenticate a user"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:345
+#, no-c-format
+msgid ""
+"Seam components may observe any of these events in just the same way they "
+"observe any other component-driven events."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:348
+#, no-c-format
+msgid "Seam interceptors"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:349
+#, no-c-format
+msgid ""
+"EJB 3.0 introduced a standard interceptor model for session bean components. "
+"To add an interceptor to a bean, you need to write a class with a method "
+"annotated <literal>@AroundInvoke</literal> and annotate the bean with an "
+"<literal>@Interceptors</literal> annotation that specifies the name of the "
+"interceptor class. For example, the following interceptor checks that the "
+"user is logged in before allowing invoking an action listener method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:352
+#, no-c-format
+msgid ""
+"public class LoggedInInterceptor {\n"
+"\n"
+"   @AroundInvoke\n"
+"   public Object checkLoggedIn(InvocationContext invocation) throws "
+"Exception {\n"
+"   \n"
+"      boolean isLoggedIn = Contexts.getSessionContext().get(\"loggedIn\")!"
+"=null;\n"
+"      if (isLoggedIn) {\n"
+"         //the user is already logged in\n"
+"         return invocation.proceed();\n"
+"      }\n"
+"      else {\n"
+"         //the user is not logged in, fwd to login page\n"
+"         return \"login\";\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:353
+#, no-c-format
+msgid ""
+"To apply this interceptor to a session bean which acts as an action "
+"listener, we must annotate the session bean <literal>@Interceptors"
+"(LoggedInInterceptor.class)</literal>. This is a somewhat ugly annotation. "
+"Seam builds upon the interceptor framework in EJB3 by allowing you to use "
+"<literal>@Interceptors</literal> as a meta-annotation. In our example, we "
+"would create an <literal>@LoggedIn</literal> annotation, as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:356
+#, no-c-format
+msgid ""
+"@Target(TYPE)\n"
+"@Retention(RUNTIME)\n"
+"@Interceptors(LoggedInInterceptor.class)\n"
+"public @interface LoggedIn {}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:357
+#, no-c-format
+msgid ""
+"We can now simply annotate our action listener bean with <literal>@LoggedIn</"
+"literal> to apply the interceptor."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:360
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"changePasswordAction\")\n"
+"@LoggedIn\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class ChangePasswordAction implements ChangePassword { \n"
+"    \n"
+"    ...\n"
+"    \n"
+"    public String changePassword() { ... }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:361
+#, no-c-format
+msgid ""
+"If interceptor ordering is important (it usually is), you can add "
+"<literal>@Interceptor</literal> annotations to your interceptor classes to "
+"specify a partial order of interceptors."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:364
+#, no-c-format
+msgid ""
+"@Interceptor(around={BijectionInterceptor.class,\n"
+"                     ValidationInterceptor.class,\n"
+"                     ConversationInterceptor.class},\n"
+"             within=RemoveInterceptor.class)\n"
+"public class LoggedInInterceptor\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:365
+#, no-c-format
+msgid ""
+"You can even have a \"client-side\" interceptor, that runs around any of the "
+"built-in functionality of EJB3:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:368
+#, no-c-format
+msgid ""
+"@Interceptor(type=CLIENT)\n"
+"public class LoggedInInterceptor\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:369
+#, no-c-format
+msgid ""
+"EJB interceptors are stateful, with a lifecycle that is the same as the "
+"component they intercept. For interceptors which do not need to maintain "
+"state, Seam lets you get a performance optimization by specifying "
+"<literal>@Interceptor(stateless=true)</literal>."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:372
+#, no-c-format
+msgid ""
+"Much of the functionality of Seam is implemented as a set of built-in Seam "
+"interceptors, including the interceptors named in the previous example. You "
+"don't have to explicitly specify these interceptors by annotating your "
+"components; they exist for all interceptable Seam components."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:375
+#, no-c-format
+msgid ""
+"You can even use Seam interceptors with JavaBean components, not just EJB3 "
+"beans!"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:378
+#, no-c-format
+msgid ""
+"EJB defines interception not only for business methods (using "
+"<literal>@AroundInvoke</literal>), but also for the lifecycle methods "
+"<literal>@PostConstruct</literal>, <literal>@PreDestroy</literal>, "
+"<literal>@PrePassivate</literal> and <literal>@PostActive</literal>. Seam "
+"supports all these lifecycle methods on both component and interceptor not "
+"only for EJB3 beans, but also for JavaBean components (except "
+"<literal>@PreDestroy</literal> which is not meaningful for JavaBean "
+"components)."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:381
+#, no-c-format
+msgid "Managing exceptions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:382
+#, no-c-format
+msgid ""
+"JSF is surprisingly limited when it comes to exception handling. As a "
+"partial workaround for this problem, Seam lets you define how a particular "
+"class of exception is to be treated by annotating the exception class, or "
+"declaring the exception class in an XML file. This facility is meant to be "
+"combined with the EJB 3.0-standard <literal>@ApplicationException</literal> "
+"annotation which specifies whether the exception should cause a transaction "
+"rollback."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:385
+#, no-c-format
+msgid "Exceptions and transactions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:386
+#, no-c-format
+msgid ""
+"EJB specifies well-defined rules that let us control whether an exception "
+"immediately marks the current transaction for rollback when it is thrown by "
+"a business method of the bean: <emphasis>system exceptions</emphasis> always "
+"cause a transaction rollback, <emphasis>application exceptions</emphasis> do "
+"not cause a rollback by default, but they do if "
+"<literal>@ApplicationException(rollback=true)</literal> is specified. (An "
+"application exception is any checked exception, or any unchecked exception "
+"annotated <literal>@ApplicationException</literal>. A system exception is "
+"any unchecked exception without an <literal>@ApplicationException</literal> "
+"annotation.)"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:389
+#, no-c-format
+msgid ""
+"Note that there is a difference between marking a transaction for rollback, "
+"and actually rolling it back. The exception rules say that the transaction "
+"should be marked rollback only, but it may still be active after the "
+"exception is thrown."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:392
+#, no-c-format
+msgid ""
+"Seam applies the EJB 3.0 exception rollback rules also to Seam JavaBean "
+"components."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:395
+#, no-c-format
+msgid ""
+"But these rules only apply in the Seam component layer. What about an "
+"exception that is uncaught and propagates out of the Seam component layer, "
+"and out of the JSF layer? Well, it is always wrong to leave a dangling "
+"transaction open, so Seam rolls back any active transaction when an "
+"exception occurs and is uncaught in the Seam component layer."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:398
+#, no-c-format
+msgid "Enabling Seam exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:399
+#, no-c-format
+msgid ""
+"To enable Seam's exception handling, we need to make sure we have the master "
+"servlet filter declared in <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:402
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.servlet.SeamFilter&lt;/filter-"
+"class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:403
+#, no-c-format
+msgid "Using annotations for exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:404
+#, no-c-format
+msgid ""
+"The following exception results in a HTTP 404 error whenever it propagates "
+"out of the Seam component layer. It does not roll back the current "
+"transaction immediately when thrown, but the transaction will be rolled back "
+"if it the exception is not caught by another Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:407
+#, no-c-format
+msgid ""
+"@HttpError(errorCode=404)\n"
+"public class ApplicationException extends Exception { ... }"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:408
+#, no-c-format
+msgid ""
+"This exception results in a browser redirect whenever it propagates out of "
+"the Seam component layer. It also ends the current conversation. It causes "
+"an immediate rollback of the current transaction."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:411
+#, no-c-format
+msgid ""
+"@Redirect(viewId=\"/failure.xhtml\", end=true)\n"
+"@ApplicationException(rollback=true)\n"
+"public class UnrecoverableApplicationException extends RuntimeException "
+"{ ... }"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:412
+#, no-c-format
+msgid ""
+"Note that <literal>@Redirect</literal> does not work for exceptions which "
+"occur during the render phase of the JSF lifecycle."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:415
+#, no-c-format
+msgid ""
+"This exception results in a redirect, along with a message to the user, when "
+"it propagates out of the Seam component layer. It also immediately rolls "
+"back the current transaction."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:418
+#, no-c-format
+msgid ""
+"@Redirect(viewId=\"/error.xhtml\", message=\"Unexpected error\")\n"
+"public class SystemException extends RuntimeException { ... }"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:419
+#, no-c-format
+msgid "Using XML for exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:420
+#, no-c-format
+msgid ""
+"Since we can't add annotations to all the exception classes we are "
+"interested in, Seam also lets us specify this functionality in "
+"<literal>pages.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:423
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   \n"
+"   &lt;exception class=\"javax.persistence.EntityNotFoundException\"&gt;\n"
+"      &lt;http-error error-code=\"404\"/&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"   &lt;exception class=\"javax.persistence.PersistenceException\"&gt;\n"
+"      &lt;end-conversation/&gt;\n"
+"      &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"          &lt;message&gt;Database access failed&lt;/message&gt;\n"
+"      &lt;/redirect&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"   &lt;exception&gt;\n"
+"      &lt;end-conversation/&gt;\n"
+"      &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"          &lt;message&gt;Unexpected failure&lt;/message&gt;\n"
+"      &lt;/redirect&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:424
+#, no-c-format
+msgid ""
+"The last <literal>&lt;exception&gt;</literal> declaration does not specify a "
+"class, and is a catch-all for any exception for which handling is not "
+"otherwise specified via annotations or in <literal>pages.xml</literal>."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Framework.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Framework.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Framework.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,828 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Framework.xml:10
+#, no-c-format
+msgid "The Seam Application Framework"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:11
+#, no-c-format
+msgid ""
+"Seam makes it really easy to create applications by writing plain Java "
+"classes with annotations, which don't need to extend any special interfaces "
+"or superclasses. But we can simplify some common programming tasks even "
+"further, by providing a set of pre-built components which can be re-used "
+"either by configuration in <literal>components.xml</literal> (for very "
+"simple cases) or extension."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:14
+#, no-c-format
+msgid ""
+"The <emphasis>Seam Application Framework</emphasis> can reduce the amount of "
+"code you need to write when doing basic database access in a web "
+"application, using either Hibernate or JPA."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:17
+#, no-c-format
+msgid ""
+"We should emphasize that the framework is extremely simple, just a handful "
+"of simple classes that are easy to understand and extend. The \"magic\" is "
+"in Seam itself&mdash;the same magic you use when creating any Seam "
+"application even without using this framework."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:21
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:22
+#, no-c-format
+msgid ""
+"The components provided by the Seam application framework may be used in one "
+"of two different approaches. The first way is to install and configure an "
+"instance of the component in <literal>components.xml</literal>, just like we "
+"have done with other kinds of built-in Seam components. For example, the "
+"following fragment from <literal>components.xml</literal> installs a "
+"component which can perform basic CRUD operations for a <literal>Contact</"
+"literal> entity:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:25
+#, no-c-format
+msgid ""
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" \n"
+"                       entity-manager=\"#{personDatabase}\"&gt;\n"
+"    &lt;framework:id&gt;#{param.personId}&lt;/framework:id&gt;\n"
+"&lt;/framework:entity-home&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:26
+#, no-c-format
+msgid ""
+"If that looks a bit too much like \"programming in XML\" for your taste, you "
+"can use extension instead:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:29
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; implements "
+"LocalPersonHome {\n"
+"    @RequestParameter String personId;\n"
+"    @In EntityManager personDatabase;\n"
+"    \n"
+"    public Object getId() { return personId; }\n"
+"    public EntityManager getEntityManager() { return personDatabase; }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:30
+#, no-c-format
+msgid ""
+"The second approach has one huge advantage: you can easily add extra "
+"functionality, and override the built-in functionality (the framework "
+"classes were carefully designed for extension and customization)."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:33
+#, no-c-format
+msgid ""
+"A second advantage is that your classes may be EJB stateful sessin beans, if "
+"you like. (They do not have to be, they can be plain JavaBean components if "
+"you prefer.)"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:36
+#, no-c-format
+msgid ""
+"At this time, the Seam Application Framework provides just four built-in "
+"components: <literal>EntityHome</literal> and <literal>HibernateEntityHome</"
+"literal> for CRUD, along with <literal>EntityQuery</literal> and "
+"<literal>HibernateEntityQuery</literal> for queries."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:39
+#, no-c-format
+msgid ""
+"The Home and Query components are written so that they can function with a "
+"scope of session, event or conversation. Which scope you use depends upon "
+"the state model you wish to use in your application."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:42
+#, no-c-format
+msgid ""
+"The Seam Application Framework only works with Seam-managed persistence "
+"contexts. By default, the components will look for a persistence context "
+"named <literal>entityManager</literal>."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:48
+#, no-c-format
+msgid "Home objects"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:49
+#, no-c-format
+msgid ""
+"A Home object provides persistence operations for a particular entity class. "
+"Suppose we have our trusty <literal>Person</literal> class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:52
+#, no-c-format
+msgid ""
+"@Entity\n"
+"public class Person {\n"
+"    @Id private Long id;\n"
+"    private String firstName;\n"
+"    private String lastName;\n"
+"    private Country nationality;\n"
+"    \n"
+"    //getters and setters...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:53
+#, no-c-format
+msgid ""
+"We can define a <literal>personHome</literal> component either via "
+"configuration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:56
+#, no-c-format
+msgid ""
+"&lt;framework:entity-home name=\"personHome\" entity-class=\"eg.Person\" /"
+"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:57
+#, no-c-format
+msgid "Or via extension:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:60
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:61
+#, no-c-format
+msgid ""
+"A Home object provides the following operations: <literal>persist()</"
+"literal>, <literal>remove()</literal>, <literal>update()</literal> and "
+"<literal>getInstance()</literal>. Before you can call the <literal>remove()</"
+"literal>, or <literal>update()</literal> operations, you must first set the "
+"identifier of the object you are interested in, using the <literal>setId()</"
+"literal> method."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:64
+#, no-c-format
+msgid "We can use a Home directly from a JSF page, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:67
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Create Person&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{personHome.instance."
+"firstName}\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{personHome.instance."
+"lastName}\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:68
+#, no-c-format
+msgid ""
+"Usually, it is much nicer to be able to refer to the <literal>Person</"
+"literal> merely as <literal>person</literal>, so let's make that possible by "
+"adding a line to <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:71
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:72
+#, no-c-format
+msgid ""
+"(If we are using configuration.) Or by adding a <literal>@Factory</literal> "
+"method to <literal>PersonHome</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:75
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:76
+#, no-c-format
+msgid ""
+"(If we are using extension.) This change simplifies our JSF page to the "
+"following:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:79
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Create Person&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{person.firstName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{person.lastName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:80
+#, no-c-format
+msgid ""
+"Well, that lets us create new <literal>Person</literal> entries. Yes, that "
+"is all the code that is required! Now, if we want to be able to display, "
+"update and delete pre-existing <literal>Person</literal> entries in the "
+"database, we need to be able to pass the entry identifier to the "
+"<literal>PersonHome</literal>. Page parameters are a great way to do that:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:83
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page viewid=\"/editPerson.jsp\"&gt;\n"
+"        &lt;param name=\"personId\" value=\"#{personHome.id}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:84
+#, no-c-format
+msgid "Now we can add the extra operations to our JSF page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:87
+#, no-c-format
+msgid ""
+"&lt;h1&gt;\n"
+"    &lt;h:outputText rendered=\"#{!personHome.managed}\" value=\"Create "
+"Person\"/&gt;\n"
+"    &lt;h:outputText rendered=\"#{personHome.managed}\" value=\"Edit Person"
+"\"/&gt;\n"
+"&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{person.firstName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{person.lastName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\" \n"
+"            rendered=\"#{!personHome.managed}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Update Person\" action=\"#{personHome."
+"update}\" \n"
+"            rendered=\"#{personHome.managed}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Delete Person\" action=\"#{personHome."
+"remove}\" \n"
+"            rendered=\"#{personHome.managed}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:88
+#, no-c-format
+msgid ""
+"When we link to the page with no request parameters, the page will be "
+"displayed as a \"Create Person\" page. When we provide a value for the "
+"<literal>personId</literal> request parameter, it will be an \"Edit Person\" "
+"page."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:91
+#, no-c-format
+msgid ""
+"Suppose we need to create <literal>Person</literal> entries with their "
+"nationality initialized. We can do that easily, via configuration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:94
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" \n"
+"                       new-instance=\"#{newPerson}\"/&gt;\n"
+"\n"
+"&lt;component name=\"newPerson\" \n"
+"           class=\"eg.Person\"&gt;\n"
+"    &lt;property name=\"nationality\"&gt;#{country}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:95
+#, no-c-format
+msgid "Or by extension:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:98
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:99
+#, no-c-format
+msgid ""
+"Of course, the <literal>Country</literal> could be an object managed by "
+"another Home object, for example, <literal>CountryHome</literal>."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:102
+#, no-c-format
+msgid ""
+"To add more sophisticated operations (association management, etc), we can "
+"just add methods to <literal>PersonHome</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:105
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"    public void migrate()\n"
+"    {\n"
+"        getInstance().setCountry(country);\n"
+"        update();\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:106
+#, no-c-format
+msgid ""
+"The Home object automatically displays faces messages when an operation is "
+"successful. To customize these messages we can, again, use configuration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:109
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\"\n"
+"                       entity-class=\"eg.Person\"\n"
+"                       new-instance=\"#{newPerson}\"&gt;\n"
+"    &lt;framework:created-message&gt;New person #{person.firstName} #{person."
+"lastName} \n"
+"        created&lt;/framework:created-message&gt;\n"
+"    &lt;framework:deleted-message&gt;Person #{person.firstName} #{person."
+"lastName}\n"
+"        deleted&lt;/framework:deleted-message&gt;\n"
+"    &lt;framework:updated-message&gt;Person #{person.firstName} #{person."
+"lastName} \n"
+"        updated&lt;/framework:updated-message&gt;\n"
+"&lt;/framework:entity-home&gt;\n"
+"\n"
+"&lt;component name=\"newPerson\" \n"
+"           class=\"eg.Person\"&gt;\n"
+"    &lt;property name=\"nationality\"&gt;#{country}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:110
+#, no-c-format
+msgid "Or extension:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:113
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"    protected String getCreatedMessage() { return \"New person #{person."
+"firstName} \n"
+"        #{person.lastName} created\"; }\n"
+"    protected String getUpdatedMessage() { return \"Person #{person."
+"firstName} \n"
+"        #{person.lastName} updated\"; }\n"
+"    protected String getDeletedMessage() { return \"Person #{person."
+"firstName} \n"
+"        #{person.lastName} deleted\"; }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:114
+#, no-c-format
+msgid ""
+"But the best way to specify the messages is to put them in a resource bundle "
+"known to Seam (the bundle named <literal>messages</literal>, by default)."
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:117
+#, no-c-format
+msgid ""
+"Person_created=New person #{person.firstName} #{person.lastName} created\n"
+"Person_deleted=Person #{person.firstName} #{person.lastName} deleted\n"
+"Person_updated=Person #{person.firstName} #{person.lastName} updated"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:118
+#, no-c-format
+msgid ""
+"This enables internationalization, and keeps your code and configuration "
+"clean of presentation concerns."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:121
+#, no-c-format
+msgid ""
+"The final step is to add validation functionality to the page, using "
+"<literal>&lt;s:validateAll&gt;</literal> and <literal>&lt;s:decorate&gt;</"
+"literal>, but I'll leave that for you to figure out."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:127
+#, no-c-format
+msgid "Query objects"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:128
+#, no-c-format
+msgid ""
+"If we need a list of all <literal>Person</literal> instance in the database, "
+"we can use a Query object. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:131
+#, no-c-format
+msgid ""
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:132
+#, no-c-format
+msgid "We can use it from a JSF page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:135
+#, no-c-format
+msgid ""
+"&lt;h1&gt;List of people&lt;/h1&gt;\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view-id=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:136
+#, no-c-format
+msgid "We probably need to support pagination:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:139
+#, no-c-format
+msgid ""
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\" \n"
+"                        order=\"lastName\" \n"
+"                        max-results=\"20\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:140
+#, no-c-format
+msgid "We'll use a page parameter to determine the page to display:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:143
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page viewid=\"/searchPerson.jsp\"&gt;\n"
+"        &lt;param name=\"firstResult\" value=\"#{people.firstResult}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:144
+#, no-c-format
+msgid "The JSF code for a pagination control is a bit verbose, but manageable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:147
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Search for people&lt;/h1&gt;\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view-id=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.previousExists}\" "
+"value=\"First Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"0\"/&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.previousExists}\" "
+"value=\"Previous Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.previousFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.nextExists}\" value="
+"\"Next Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.nextFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.nextExists}\" value="
+"\"Last Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.lastFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:148
+#, no-c-format
+msgid ""
+"Real search screens let the user enter a bunch of optional search criteria "
+"to narrow the list of results returned. The Query object lets you specify "
+"optional \"restrictions\" to support this important usecase:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:151
+#, no-c-format
+msgid ""
+"&lt;component name=\"examplePerson\" class=\"Person\"/&gt;\n"
+"        \n"
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\" \n"
+"                        order=\"lastName\" \n"
+"                        max-results=\"20\"&gt;\n"
+"    &lt;framework:restrictions&gt;\n"
+"        &lt;value&gt;lower(firstName) like lower( #{examplePerson.firstName} "
+"+ '&#37;' )&lt;/value&gt;\n"
+"        &lt;value&gt;lower(lastName) like lower( #{examplePerson.lastName} + "
+"'&#37;' )&lt;/value&gt;\n"
+"    &lt;/framework:restrictions&gt;\n"
+"&lt;/framework:entity-query&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:152
+#, no-c-format
+msgid "Notice the use of an \"example\" object."
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:155
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Search for people&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{examplePerson.firstName}"
+"\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{examplePerson.lastName}"
+"\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;&lt;h:commandButton value=\"Search\" action=\"/search.jsp\"/"
+"&gt;&lt;/div&gt;\n"
+"&lt;/h:form&gt;\n"
+"\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view-id=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:156
+#, no-c-format
+msgid ""
+"The examples in this section have all shown reuse by configuration. However, "
+"reuse by extension is equally possible for Query objects."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:162
+#, no-c-format
+msgid "Controller objects"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:163
+#, no-c-format
+msgid ""
+"A totally optional part of the Seam Application Framework is the class "
+"<literal>Controller</literal> and its subclasses <literal>EntityController</"
+"literal><literal>HibernateEntityController</literal> and "
+"<literal>BusinessProcessController</literal>. These classes provide nothing "
+"more than some convenience methods for access to commonly used built-in "
+"components and methods of built-in components. They help save a few "
+"keystrokes (characters can add up!) and provide a great launchpad for new "
+"users to explore the rich functionality built in to Seam."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:166
+#, no-c-format
+msgid ""
+"For example, here is what <literal>RegisterAction</literal> from the Seam "
+"registration example would look like:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:169
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"register\")\n"
+"public class RegisterAction extends EntityController implements Register\n"
+"{\n"
+"\n"
+"   @In private User user;\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = createQuery(\"select u.username from User u where u."
+"username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getResultList();\n"
+"      \n"
+"      if ( existing.size()==0 )\n"
+"      {\n"
+"         persist(user);\n"
+"         info(\"Registered new user #{user.username}\");\n"
+"         return \"/registered.jspx\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         addFacesMessage(\"User #{user.username} already exists\");\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:170
+#, no-c-format
+msgid "As you can see, its not an earthshattering improvement..."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Gettingstarted.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Gettingstarted.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Gettingstarted.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,588 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Gettingstarted.xml:10
+#, no-c-format
+msgid "Getting started with Seam, using seam-gen"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:11
+#, no-c-format
+msgid ""
+"The Seam distribution includes a command line utility that makes it really "
+"easy to set up an Eclipse project, generate some simple Seam skeleton code, "
+"and reverse engineer an application from a pre-existing database."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:14
+#, no-c-format
+msgid ""
+"This is the easy way to get your feet wet with Seam, and gives you some "
+"ammunition for next time you find yourself trapped in an elevator with one "
+"of those tedious Ruby guys ranting about how great and wonderful his new toy "
+"is for building totally trivial applications that put things in databases."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:17
+#, no-c-format
+msgid ""
+"In this release, seam-gen works best for people with JBoss AS. You can use "
+"the generated project with other J2EE or Java EE 5 application servers by "
+"making a few manual changes to the project configuration."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:20
+#, no-c-format
+msgid ""
+"You <emphasis>can</emphasis> use seam-gen without Eclipse, but in this "
+"tutorial, we want to show you how to use it in conjunction with Eclipse for "
+"debugging and integration testing. If you don't want to install Eclipse, you "
+"can still follow along with this tutorial&mdash;all steps can be peformed "
+"from the command line."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:23
+#, no-c-format
+msgid ""
+"Seam-gen is basically just a big ugly Ant script wrapped around Hibernate "
+"Tools, together with some templates. Which means it is easy to customize if "
+"you need to."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:27
+#, no-c-format
+msgid "Before you start"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:28
+#, no-c-format
+msgid ""
+"Make sure you have JDK 5 or JDK 6, JBoss AS 4.0.5 and Ant 1.6, along with "
+"recent versions of Eclipse, the JBoss IDE plugin for Eclipse and the TestNG "
+"plugin for Eclipse correctly installed before starting. Add your JBoss "
+"installation to the JBoss Server View in Eclipse. Start JBoss in debug mode. "
+"Finally, start a command prompt in the directory where you unzipped the Seam "
+"distribution."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:34
+#, no-c-format
+msgid "Setting up a new Eclipse project"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:35
+#, no-c-format
+msgid ""
+"The first thing we need to do is configure seam-gen for your environment: "
+"JBoss AS installation directory, Eclipse workspace, and database connection. "
+"It's easy, just type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:38
+#, no-c-format
+msgid ""
+"cd jboss-seam-1.1.x\n"
+"seam setup"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:39
+#, no-c-format
+msgid "And you will be prompted for the needed information:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:42
+#, no-c-format
+msgid ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam setup\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"setup:\n"
+"    [echo] Welcome to seam-gen :-)\n"
+"    [input] Enter your Java project workspace [C:/Projects]\n"
+"\n"
+"    [input] Enter your JBoss home directory [C:/Program Files/jboss-4.0.5."
+"GA]\n"
+"\n"
+"    [input] Enter the project name [myproject]\n"
+"helloworld\n"
+"    [input] Is this project deployed as an EAR (with EJB components) or a "
+"WAR \n"
+"        (with no EJB support) [ear] (ear,war,)\n"
+"\n"
+"    [input] Enter the Java package name for your session beans [com.mydomain."
+"helloworld]\n"
+"org.jboss.helloworld\n"
+"    [input] Enter the Java package name for your entity beans [org.jboss."
+"helloworld]\n"
+"\n"
+"    [input] Enter the Java package name for your test cases [org.jboss."
+"helloworld.test]\n"
+"\n"
+"    [input] What kind of database are you using? [hsql]\n"
+"    (hsql,mysql,oracle,postgres,mssql,db2,sybase,)\n"
+"mysql\n"
+"    [input] Enter the Hibernate dialect for your database [org.hibernate."
+"dialect.MySQLDialect]\n"
+"\n"
+"    [input] Enter the filesystem path to the JDBC driver jar [lib/hsqldb."
+"jar]\n"
+"../../mysql-connector.jar\n"
+"    [input] Enter JDBC driver class for your database [com.mysql.jdbc."
+"Driver]\n"
+"\n"
+"    [input] Enter the JDBC URL for your database [jdbc:mysql:///test]\n"
+"\n"
+"    [input] Enter database username [sa]\n"
+"gavin\n"
+"    [input] Enter database password []\n"
+"\n"
+"    [input] Are you working with tables that already exist in the database? "
+"[n] (y,n,)\n"
+"y\n"
+"    [input] Do you want to drop and recreate the database tables and data in "
+"import.sql \n"
+"    each time you deploy? [n] (y,n,)\n"
+"n\n"
+"[propertyfile] Creating new property file: C:&#92;Projects&#92;jboss-"
+"seam&#92;seam-gen&#92;build.properties\n"
+"     [echo] Installing JDBC driver jar to JBoss server\n"
+"     [echo] Type 'seam new-project' to create the new project\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 1 minute 17 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:43
+#, no-c-format
+msgid ""
+"The tool provides sensible defaults, which you can accept by just pressing "
+"enter at the prompt."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:46
+#, no-c-format
+msgid ""
+"The most important choice you need to make is between EAR deployment and WAR "
+"deployment of your project. EAR projects support EJB 3.0 and require Java EE "
+"5. WAR projects do not support EJB 3.0, but may be deployed to a J2EE "
+"environment. The packaging of a WAR is also simpler to understand. If you "
+"installed JBoss with the ejb3 profile, choose <literal>ear</literal>. "
+"Otherwise, choose <literal>war</literal>. We'll assume that you've chosen an "
+"EAR deployment for the rest of the tutorial, but you can follow exactly the "
+"same steps for a WAR deployment."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:49
+#, no-c-format
+msgid ""
+"If you are working with an existing data model, make sure you tell seam-gen "
+"that the tables already exist in the database."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:52
+#, no-c-format
+msgid ""
+"The settings are stored in <literal>seam-gen/build.properties</literal>, but "
+"you can also modify them simply by running <literal>seam setup</literal> a "
+"second time."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:55
+#, no-c-format
+msgid ""
+"Now we can create a new project in our Eclipse workspace directory, by "
+"typing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:58
+#, no-c-format
+msgid "seam new-project"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:59
+#, no-c-format
+msgid ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam new-project\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"copy-lib:\n"
+"     [echo] Copying project jars ...\n"
+"     [copy] Copying 32 files to C:&#92;Projects&#92;helloworld&#92;lib\n"
+"     [copy] Copying 9 files to C:&#92;Projects&#92;helloworld&#92;embedded-"
+"ejb\n"
+"\n"
+"file-copy-wtp:\n"
+"\n"
+"file-copy:\n"
+"     [echo] Copying project resources ...\n"
+"     [copy] Copying 12 files to C:&#92;Projects&#92;helloworld&#92;"
+"resources\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;helloworld&#92;resources\n"
+"     [copy] Copying 5 files to C:&#92;Projects&#92;helloworld&#92;view\n"
+"     [copy] Copying 5 files to C:&#92;Projects&#92;helloworld\n"
+"    [mkdir] Created dir: C:&#92;Projects&#92;helloworld&#92;src\n"
+"\n"
+"new-project:\n"
+"     [echo] A new Seam project was created in the C:/Projects directory\n"
+"     [echo] Add the project from inside Eclipse (or type 'seam explode') and "
+"go to http://localhost:\n"
+"8080/helloworld\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 7 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:60
+#, no-c-format
+msgid ""
+"This copies the Seam jars, dependent jars and the JDBC driver jar to a new "
+"Eclipse project, and generates all needed resources and configuration files, "
+"a facelets template file and stylesheet, along with Eclipse metadata and an "
+"Ant build script. The Eclipse project will be automatically deployed to an "
+"exploded directory structure in JBoss AS as soon as you add the project "
+"using <literal>New -&gt; Project... -&gt; Java Project -&gt; Next</literal>, "
+"typing the <literal>Project name</literal> (<literal>myproject</literal> in "
+"this case), selecting your Java SE 5 or Java SE 6 JRE and then clicking "
+"<literal>Finish</literal>. Do not select <literal>Create new project from "
+"existing source</literal>. Alternatively, you can deploy the project from "
+"outside Eclipse by typing <literal>seam explode</literal>."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:63
+#, no-c-format
+msgid ""
+"Go to <literal>http://localhost:8080/helloworld</literal> to see a welcome "
+"page. This is a facelets page, <literal>view/home.xhtml</literal>, using the "
+"template <literal>view/layout/template.xhtml</literal>. You can edit this "
+"page, or the template, in eclipse, and see the results "
+"<emphasis>immediately</emphasis>, by clicking refresh in your browser."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:66
+#, no-c-format
+msgid ""
+"Don't get scared by the XML configuration documents that were generated into "
+"the project directory. They are mostly standard Java EE stuff, the stuff you "
+"need to create once and then never look at again, and they are 90&#37; the "
+"same between all Seam projects. (They are so easy to write that even seam-"
+"gen can do it.)"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:69
+#, no-c-format
+msgid ""
+"The generated project includes three database and persistence "
+"configurations. The <literal>jboss-beans.xml</literal>, <literal>persistence-"
+"test.xml</literal> and <literal>import-test.sql</literal> files are used "
+"when running the TestNG unit tests against HSQLDB. The database schema and "
+"the test data in <literal>import-test.sql</literal> is always exported to "
+"the database before running tests. The <literal>myproject-dev-ds.xml</"
+"literal>, <literal>persistence-dev.xml</literal>and <literal>import-dev.sql</"
+"literal> files are for use when deploying the application to your "
+"development database. The schema might be exported automatically at "
+"deployment, depending upon whether you told seam-gen that you are working "
+"with an existing database. The <literal>myproject-prod-ds.xml</literal>, "
+"<literal>persistence-prod.xml</literal>and <literal>import-prod.sql</"
+"literal> files are for use when deploying the application to your production "
+"database. The schema is not exported automatically at deployment."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:75
+#, no-c-format
+msgid "Creating a new action"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:76
+#, no-c-format
+msgid ""
+"If you're used to traditional action-style web frameworks, you're probably "
+"wondering how you can create a simple webpage with a stateless action method "
+"in Java. If you type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:79
+#, no-c-format
+msgid "seam new-action"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:80
+#, no-c-format
+msgid ""
+"Seam will prompt for some information, and generate a new facelets page and "
+"Seam component for your project."
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:83
+#, no-c-format
+msgid ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam new-action ping\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"action-input:\n"
+"    [input] Enter the Seam component name\n"
+"ping\n"
+"    [input] Enter the local interface name [Ping]\n"
+"\n"
+"    [input] Enter the bean class name [PingBean]\n"
+"\n"
+"    [input] Enter the action method name [ping]\n"
+"\n"
+"    [input] Enter the page name [ping]\n"
+"\n"
+"\n"
+"setup-filters:\n"
+"\n"
+"new-action:\n"
+"     [echo] Creating a new stateless session bean component with an action "
+"method\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;view\n"
+"     [echo] Type 'seam restart' and go to \n"
+"     http://localhost:8080/helloworld/ping.seam\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 13 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:84
+#, no-c-format
+msgid ""
+"Because we've added a new Seam component, we need to restart the exploded "
+"directory deployment. You can do this by typing <literal>seam restart</"
+"literal>, or by running the <literal>restart</literal> target in the "
+"generated project <literal>build.xml</literal> file from inside Eclipse. "
+"Another way to force a restart is to edit the file <literal>resources/META-"
+"INF/application.xml</literal> in Eclipse. <emphasis>Note that you do not "
+"need to restart JBoss each time you change the application.</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:87
+#, no-c-format
+msgid ""
+"Now go to <literal>http://localhost:8080/helloworld/ping.seam</literal> and "
+"click the button. You can see the code behind this action by looking in the "
+"project <literal>src</literal> directory. Put a breakpoint in the "
+"<literal>ping()</literal> method, and click the button again."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:90
+#, no-c-format
+msgid ""
+"Finally, locate the <literal>PingTest.xml</literal> file in the test package "
+"and run the integration tests using the TestNG plugin for Eclipse. "
+"Alternatively, run the tests using <literal>seam test</literal> or the "
+"<literal>test</literal> target of the generated build."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:96
+#, no-c-format
+msgid "Creating a form with an action"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:97
+#, no-c-format
+msgid "The next step is to create a form. Type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:100
+#, no-c-format
+msgid "seam new-form"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:101
+#, no-c-format
+msgid ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam new-form\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"action-input:\n"
+"    [input] Enter the Seam component name\n"
+"hello\n"
+"    [input] Enter the local interface name [Hello]\n"
+"\n"
+"    [input] Enter the bean class name [HelloBean]\n"
+"\n"
+"    [input] Enter the action method name [hello]\n"
+"\n"
+"    [input] Enter the page name [hello]\n"
+"\n"
+"\n"
+"setup-filters:\n"
+"\n"
+"new-form:\n"
+"     [echo] Creating a new stateful session bean component with an action "
+"method\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;view\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [echo] Type 'seam restart' and go to http://localhost:8080/hello/hello."
+"seam\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 5 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:102
+#, no-c-format
+msgid ""
+"Restart the application again, and go to <literal>http://localhost:8080/"
+"helloworld/hello.seam</literal>. Then take a look at the generated code. Run "
+"the test. Try adding some new fields to the form and Seam component "
+"(remember to restart the deploment each time you change the Java code)."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:108
+#, no-c-format
+msgid "Generating an application from an existing database"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:109
+#, no-c-format
+msgid ""
+"Manually create some tables in your database. (If you need to switch to a "
+"different database, just run <literal>seam setup</literal> again.) Now type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:112
+#, no-c-format
+msgid "seam generate-entities"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:113
+#, no-c-format
+msgid ""
+"Restart the deployment, and go to <literal>http://localhost:8080/helloworld</"
+"literal>. You can browse the database, edit existing objects, and create new "
+"objects. If you look at the generated code, you'll probably be amazed how "
+"simple it is! Seam was designed so that data access code is easy to write by "
+"hand, even for people who don't want to cheat by using seam-gen."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:119
+#, no-c-format
+msgid "Deploying the application as an EAR"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:120
+#, no-c-format
+msgid ""
+"Finally, we want to be able to deploy the application using standard Java EE "
+"5 packaging. First, we need to remove the exploded directory by running "
+"<literal>seam unexplode</literal>. To deploy the EAR, we can type "
+"<literal>seam deploy</literal> at the command prompt, or run the "
+"<literal>deploy</literal> target of the generated project build script. You "
+"can undeploy using <literal>seam undeploy</literal> or the "
+"<literal>undeploy</literal> target."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:123
+#, no-c-format
+msgid ""
+"By default, the application will be deployed with the <emphasis>dev profile</"
+"emphasis>. The EAR will include the <literal>persistence-dev.xml</literal> "
+"and <literal>import-dev.sql</literal> files, and the <literal>myproject-dev-"
+"ds.xml</literal> file will be deployed. You can change the profile, and use "
+"the <emphasis>prod profile</emphasis>, by typing"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:126
+#, no-c-format
+msgid "seam -Dprofile=prod deploy"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:127
+#, no-c-format
+msgid ""
+"You can even define new deployment profiles for your application. Just add "
+"appropriately named files to your project&mdash;for example, "
+"<literal>persistence-staging.xml</literal>, <literal>import-staging.sql</"
+"literal> and <literal>myproject-staging-ds.xml</literal>&mdash;and select "
+"the name of the profile using <literal>-Dprofile=staging</literal>."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/I18n.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/I18n.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/I18n.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,533 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: I18n.xml:10
+#, no-c-format
+msgid "Internationalization and themes"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:11
+#, no-c-format
+msgid ""
+"Seam makes it easy to build internationalized applications by providing "
+"several built-in components for handling multi-language UI messages."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:15
+#, no-c-format
+msgid "Locales"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:16
+#, no-c-format
+msgid ""
+"Each user login session has an associated instance of <literal>java.util."
+"Locale</literal> (available to the application as a session-scoped component "
+"named <literal>locale</literal>). Under normal circumstances, you won't need "
+"to do any special configuration to set the locale. Seam just delegates to "
+"JSF to determine the active locale:"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:21
+#, no-c-format
+msgid ""
+"If there is a locale associated with the HTTP request (the browser locale), "
+"and that locale is in the list of supported locales from <literal>faces-"
+"config.xml</literal>, use that locale for the rest of the session."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:24
+#, no-c-format
+msgid ""
+"Otherwise, if a default locale was specified in the <literal>faces-config."
+"xml</literal>, use that locale for the rest of the session."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:27
+#, no-c-format
+msgid "Otherwise, use the default locale of the server."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:30
+#, no-c-format
+msgid ""
+"It is <emphasis>possible</emphasis> to set the locale manually via the Seam "
+"configuration properties <literal>org.jboss.seam.core.localeSelector."
+"language</literal>, <literal>org.jboss.seam.core.localeSelector.country</"
+"literal> and <literal>org.jboss.seam.core.localeSelector.variant</literal>, "
+"but we can't think of any good reason to ever do this."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:33
+#, no-c-format
+msgid ""
+"It is, however, useful to allow the user to set the locale manually via the "
+"application user interface. Seam provides built-in functionality for "
+"overriding the locale determined by the algorithm above. All you have to do "
+"is add the following fragment to a form in your JSP or Facelets page:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:36
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{localeSelector.language}\"&gt;\n"
+"    &lt;f:selectItem itemLabel=\"English\" itemValue=\"en\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Deutsch\" itemValue=\"de\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Francais\" itemValue=\"fr\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{localeSelector.select}\" value=\"#{messages"
+"['ChangeLanguage']}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:37
+#, no-c-format
+msgid ""
+"Or, if you want a list of all supported locales from <literal>faces-config."
+"xml</literal>, just use:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:40
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{localeSelector.localeString}\"&gt;\n"
+"    &lt;f:selectItems value=\"#{localeSelector.supportedLocales}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{localeSelector.select}\" value=\"#{messages"
+"['ChangeLanguage']}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:41
+#, no-c-format
+msgid ""
+"When this use selects an item from the drop-down, and clicks the button, the "
+"Seam and JSF locales will be overridden for the rest of the session."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:47
+#, no-c-format
+msgid "Labels"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:48
+#, no-c-format
+msgid ""
+"JSF supports internationalization of user interface labels and descriptive "
+"text via the use of <literal>&lt;f:loadBundle /&gt;</literal>. You can use "
+"this approach in Seam applications. Alternatively, you can take advantage of "
+"the Seam <literal>messages</literal> component to display templated labels "
+"with embedded EL expressions."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:52
+#, no-c-format
+msgid "Defining labels"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:53
+#, no-c-format
+msgid ""
+"Each login session has an associated instance of <literal>java.util."
+"ResourceBundle</literal> (available to the application as a session-scoped "
+"component named <literal>org.jboss.seam.core.resourceBundle</literal>). "
+"You'll need to make your internationalized labels available via this special "
+"resource bundle. By default, the resource bundle used by Seam is named "
+"<literal>messages</literal> and so you'll need to define your labels in "
+"files named <literal>messages.properties</literal>, <literal>messages_en."
+"properties</literal>, <literal>messages_en_AU.properties</literal>, etc. "
+"These files usually belong in the <literal>WEB-INF/classes</literal> "
+"directory."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:56
+#, no-c-format
+msgid "So, in <literal>messages_en.properties</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:59
+#, no-c-format
+msgid "Hello=Hello"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:60
+#, no-c-format
+msgid "And in <literal>messages_en_AU.properties</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:63
+#, no-c-format
+msgid "Hello=G'day"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:64
+#, no-c-format
+msgid ""
+"You can select a different name for the resource bundle by setting the Seam "
+"configuration property named <literal>org.jboss.seam.core.resourceBundle."
+"bundleNames</literal>. You can even specify a list of resource bundle names "
+"to be searched (depth first) for messages."
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:67
+#, no-c-format
+msgid ""
+"&lt;core:resource-bundle&gt;\n"
+"    &lt;core:bundle-names&gt;\n"
+"        &lt;value&gt;mycompany_messages&lt;/value&gt;\n"
+"        &lt;value&gt;standard_messages&lt;/value&gt;       \n"
+"    &lt;/core:bundle-names&gt;\n"
+"&lt;/core:resource-bundle&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:68
+#, no-c-format
+msgid ""
+"If you want to define a message just for a particular page, you can specify "
+"it in a resource bundle with the same name as the JSF view id, with the "
+"leading <literal>/</literal> and trailing file extension removed. So we "
+"could put our message in <literal>welcome/hello_en.properties</literal> if "
+"we only needed to display the message on <literal>/welcome/hello.jsp</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:71
+#, no-c-format
+msgid ""
+"You can even specify an explicit bundle name in <literal>pages.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:74
+#, no-c-format
+msgid "&lt;page view-id=\"/welcome/hello.jsp\" bundle=\"HelloMessages\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:75
+#, no-c-format
+msgid ""
+"Then we could use messages defined in <literal>HelloMessages.properties</"
+"literal> on <literal>/welcome/hello.jsp</literal>."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:81
+#, no-c-format
+msgid "Displaying labels"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:82
+#, no-c-format
+msgid ""
+"If you define your labels using the Seam resource bundle, you'll be able to "
+"use them without having to type <literal>&lt;f:loadBundle ... /&gt;</"
+"literal> on every page. Instead, you can simply type:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:85
+#, no-c-format
+msgid "&lt;h:outputText value=\"#{messages['Hello']}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:86
+#, no-c-format
+msgid "<para>or:</para>"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:89
+#, no-c-format
+msgid "&lt;h:outputText value=\"#{messages.Hello}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:90
+#, no-c-format
+msgid "Even better, the messages themselves may contain EL expressions:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:93
+#, no-c-format
+msgid "Hello=Hello, #{user.firstName} #{user.lastName}"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:94
+#, no-c-format
+msgid "Hello=G'day, #{user.firstName}"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:95
+#, no-c-format
+msgid "You can even use the messages in your code:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:98
+#, no-c-format
+msgid "@In private Map&lt;String, String&gt; messages;"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:99
+#, no-c-format
+msgid "@In(\"#{messages['Hello']}\") private String helloMessage;"
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:103
+#, no-c-format
+msgid "Faces messages"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:104
+#, no-c-format
+msgid ""
+"The <literal>facesMessages</literal> component is a super-convenient way to "
+"display success or failure messages to the user. The functionality we just "
+"described also works for faces messages:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:107
+#, no-c-format
+msgid ""
+"@Name(\"hello\")\n"
+"@Stateless\n"
+"public class HelloBean implements Hello {\n"
+"    @In FacesMessages facesMessages;\n"
+"    \n"
+"    public String sayIt() {\n"
+"        facesMessages.addFromResourceBundle(\"Hello\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:108
+#, no-c-format
+msgid ""
+"This will display <literal>Hello, Gavin King</literal> or <literal>G'day, "
+"Gavin</literal>, depending upon the user's locale."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:116
+#, no-c-format
+msgid "Timezones"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:117
+#, no-c-format
+msgid ""
+"There is also a session-scoped instance of <literal>java.util.Timezone</"
+"literal>, named <literal>org.jboss.seam.core.timezone</literal>, and a Seam "
+"component for changing the timezone named <literal>org.jboss.seam.core."
+"timezoneSelector</literal>. By default, the timezone is the default timezone "
+"of the server. Unfortunately, the JSF specification says that all dates and "
+"times should be assumed to be UTC, and displayed as UTC, unless a timezone "
+"is explicitly specified using <literal>&lt;f:convertDateTime&gt;</literal>. "
+"This is an extremely inconvenient default behavior."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:120
+#, no-c-format
+msgid ""
+"Seam overrides this behavior, and defaults all dates and times to the Seam "
+"timezone. In addition, Seam provides the <literal>&lt;s:convertDateTime&gt;</"
+"literal> tag which always performs conversions in the Seam timezone."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:126
+#, no-c-format
+msgid "Themes"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:127
+#, no-c-format
+msgid ""
+"Seam applications are also very easily skinnable. The theme API is very "
+"similar to the localization API, but of course these two concerns are "
+"orthogonal, and some applications support both localization and themes."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:130
+#, no-c-format
+msgid "First, configure the set of supported themes:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:133
+#, no-c-format
+msgid ""
+"&lt;theme:theme-selector cookie-enabled=\"true\"&gt;\n"
+"    &lt;theme:available-themes&gt;\n"
+"        &lt;value&gt;default&lt;/value&gt;\n"
+"        &lt;value&gt;accessible&lt;/value&gt;\n"
+"        &lt;value&gt;printable&lt;/value&gt;\n"
+"    &lt;/theme:available-themes&gt;\n"
+"&lt;/theme:theme-selector&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:134
+#, no-c-format
+msgid "Note that the first theme listed is the default theme."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:137
+#, no-c-format
+msgid ""
+"Themes are defined in a properties file with the same name as the theme. For "
+"example, the <literal>default</literal> theme is defined as a set of entries "
+"in <literal>default.properties</literal>. For example, <literal>default."
+"properties</literal> might define:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:140
+#, no-c-format
+msgid ""
+"css ../screen.css\n"
+"template template.xhtml"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:141
+#, no-c-format
+msgid ""
+"Usually the entries in a theme resource bundle will be paths to CSS styles "
+"or images and names of facelets templates (unlike localization resource "
+"bundles which are usually text)."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:144
+#, no-c-format
+msgid ""
+"Now we can use these entries in our JSP or facelets pages. For example, to "
+"theme the stylesheet in a facelets page:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:147
+#, no-c-format
+msgid ""
+"&lt;link href=\"#{theme.css}\" rel=\"stylesheet\" type=\"text/css\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:148
+#, no-c-format
+msgid ""
+"Most powerfully, facelets lets us theme the template used by a <literal>&lt;"
+"ui:composition&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:151
+#, no-c-format
+msgid ""
+"&lt;ui:composition xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"    xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"    xmlns:h=\"http://java.sun.com/jsf/html\"\n"
+"    xmlns:f=\"http://java.sun.com/jsf/core\"\n"
+"    template=\"#{theme.template}\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:152
+#, no-c-format
+msgid ""
+"Just like the locale selector, there is a built-in theme selector to allow "
+"the user to freely switch themes:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:155
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{themeSelector.theme}\"&gt;\n"
+"    &lt;f:selectItems value=\"#{themeSelector.themes}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{themeSelector.select}\" value=\"Select Theme"
+"\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:159
+#, no-c-format
+msgid "Persisting locale and theme preferences via cookies"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:160
+#, no-c-format
+msgid ""
+"The locale selector, theme selector and timezone selector all support "
+"persistence of locale and theme preference to a cookie. Simply set the "
+"<literal>cookie-enabled</literal> configuration property:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:163
+#, no-c-format
+msgid ""
+"&lt;theme:theme-selector cookie-enabled=\"true\"&gt;\n"
+"    &lt;theme:available-themes&gt;\n"
+"        &lt;value&gt;default&lt;/value&gt;\n"
+"        &lt;value&gt;accessible&lt;/value&gt;\n"
+"        &lt;value&gt;printable&lt;/value&gt;\n"
+"    &lt;/theme:available-themes&gt;\n"
+"&lt;/theme:theme-selector&gt;\n"
+"\n"
+"&lt;core:locale-selector cookie-enabled=\"true\"/&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Itext.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Itext.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Itext.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1452 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Itext.xml:10
+#, no-c-format
+msgid "iText PDF generation"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:11
+#, no-c-format
+msgid ""
+"Seam now includes an component set for generating documents using iText. The "
+"primary focus of Seam's iText document support is for the generation of PDF "
+"doucuments, but Seam also offers basic support for RTF document generation."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:15
+#, no-c-format
+msgid "Using PDF Support"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:16
+#, no-c-format
+msgid ""
+"iText support is provided by <literal>jboss-seam-pdf.jar</literal>. This JAR "
+"contains the iText JSF controls, which are used to construct views that can "
+"render to PDF, and the DocumentStore component, which serves the rendered "
+"documents to the user. To include PDF support in your application, included "
+"<literal>jboss-seam-pdf.jar</literal> in your <literal>WEB-INF/lib</literal> "
+"directory along with the iText JAR file. There is no further configuration "
+"needed to use Seam's iText support."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:19
+#, no-c-format
+msgid ""
+"The Seam iText module requires the use of Facelets as the view technology. "
+"Future versions of the library may also support the use of JSP. "
+"Additionally, it requires the use of the seam-ui package."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:22
+#, no-c-format
+msgid ""
+"The <literal>examples/itext</literal> project contains an example of the PDF "
+"support in action. It demonstrates proper deployment packaging, and it "
+"contains a number examples that demonstrate the key PDF generation features "
+"current supported."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:28
+#, no-c-format
+msgid "Creating a document"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:29
+#, no-c-format
+msgid ""
+"Documents are generated by facelets documents using tags in the "
+"<literal>http://jboss.com/products/seam/pdf</literal> namespace. Documents "
+"should always have the <literal>document</literal> tag at the root of the "
+"document. The <literal>document</literal> tag prepares Seam to generate a "
+"document into the DocumentStore and renders an HTML redirect to that stored "
+"content. The following is a a small PDF document consisting only a single "
+"line of text:"
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:32
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf"
+"\"&gt;                                                      \n"
+"   The document goes "
+"here.                                                                                             \n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:34
+#, no-c-format
+msgid "p:document"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:35
+#, no-c-format
+msgid ""
+"The <literal>p:document</literal> tag supports the following attributes:"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:40
+#, no-c-format
+msgid "type"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:42
+#, no-c-format
+msgid ""
+"The type of the document to be produced. Valid values are <literal>PDF</"
+"literal>, <literal>RTF</literal> and <literal>HTML</literal> modes. Seam "
+"defaults to PDF generation, and many of the features only work correctly "
+"when generating PDF documents."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:48
+#, no-c-format
+msgid "pageSize"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:50
+#, no-c-format
+msgid ""
+"The size of the page to be generate. The most commonly used values would be "
+"<literal>LETTER</literal> and <literal>A4</literal>. A full list of "
+"supported pages sizes can be found in <literal>com.lowagie.text.PageSize</"
+"literal> class. Alternatively, pageSize can provide the width and height of "
+"the page directly. The value \"612 792\", for example, is equizalent to the "
+"LETTER page size."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:56
+#, no-c-format
+msgid "orientation"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:58
+#, no-c-format
+msgid ""
+"The orientation of the page. Valid values are <literal>portrait</literal> "
+"and <literal>landscape</literal>. In landscape mode, the height and width "
+"page size values are reversed."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:64
+#, no-c-format
+msgid "margins"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:66
+#, no-c-format
+msgid "The left, right, top and bottom margin values."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:72
+#, no-c-format
+msgid "marginMirroring"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:74
+#, no-c-format
+msgid "Indicates that margin settings should be reversed an alternating pages."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:80
+#, no-c-format
+msgid ""
+"Document metadata is also set as attributes of the document tag. The "
+"following metadata fields are supported:"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:85
+#, no-c-format
+msgid "title"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:92
+#, no-c-format
+msgid "subject"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:99
+#, no-c-format
+msgid "keywords"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:106
+#, no-c-format
+msgid "author"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:113
+#, no-c-format
+msgid "creator"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:125
+#, no-c-format
+msgid "Basic Text Elements"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:126
+#, no-c-format
+msgid ""
+"Useful documents will need to contain more than just text; however, the "
+"standard UI components are geared towards HTML generation and are not useful "
+"for generating PDF content. Instead, Seam provides a special UI components "
+"for generating suitable PDF content. Tags like <literal>&lt;p:image&gt;</"
+"literal> and <literal>&lt;p:paragraph&gt;</literal> are the basic "
+"foundations of simple documents. Tags like <literal>&lt;p:font&gt;</literal> "
+"provide style information to all the content surrounging them."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:129
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"&gt; \n"
+"    &lt;p:image alignment=\"right\" wrap=\"true\" resource=\"/logo.jpg\" /"
+"&gt;\n"
+"    &lt;p:font size=\"24\"&gt;\n"
+"        &lt;p:paragraph spacingAfter=\"50\"&gt;My First Document&lt;/p:"
+"paragraph&gt;\n"
+"    &lt;/p:font&gt;\n"
+"\n"
+"    &lt;p:paragraph alignment=\"justify\"&gt;\n"
+"        This is a simple document.  It isn't very fancy.\n"
+"    &lt;/p:paragraph&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:131
+#, no-c-format
+msgid "p:paragraph"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:132
+#, no-c-format
+msgid ""
+"Most uses of text should be sectioned into paragraphs so that text fragments "
+"can be flowed, formatted and styled in logical groups."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:137
+#, no-c-format
+msgid "firstLineIndent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:144 Itext.xml:836
+#, no-c-format
+msgid "extraParagraphSpace"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:151 Itext.xml:808
+#, no-c-format
+msgid "leading"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:158 Itext.xml:815
+#, no-c-format
+msgid "multipliedLeading"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:165 Itext.xml:344 Itext.xml:716
+#, no-c-format
+msgid "spacingBefore"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:167 Itext.xml:346 Itext.xml:718
+#, no-c-format
+msgid "The blank space to be inserted before the element."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:173 Itext.xml:352 Itext.xml:724
+#, no-c-format
+msgid "spacingAfter"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:175 Itext.xml:354 Itext.xml:726
+#, no-c-format
+msgid "The blank space to be inserted after the element."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:181 Itext.xml:330 Itext.xml:599
+#, no-c-format
+msgid "indentationLeft"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:188 Itext.xml:337 Itext.xml:607
+#, no-c-format
+msgid "indentationRight"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:195 Itext.xml:753
+#, no-c-format
+msgid "keepTogether"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:205
+#, no-c-format
+msgid "p:text"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:206
+#, no-c-format
+msgid ""
+"The <literal>text</literal> tag allows text fragments to be produced from "
+"application data using normal JSF converter mechanisms. It is very similar "
+"to the <literal>outputText</literal> tag used when rendering HTML documents. "
+"Here is an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:209
+#, no-c-format
+msgid ""
+"&lt;p:paragraph&gt;\n"
+"    The item costs &lt;p:text value=\"#{product.price}\"&gt;\n"
+"        &lt;f:convertNumber type=\"currency\" currencySymbol=\"&#36;\"/&gt;\n"
+"    &lt;/p:text&gt;\n"
+"&lt;/p:paragraph&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:212
+#, no-c-format
+msgid "value"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:214
+#, no-c-format
+msgid ""
+"The value to be displayed. This will typically be a value binding expression."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:223
+#, no-c-format
+msgid "p:font"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:224
+#, no-c-format
+msgid "Font declarations have no direct"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:229
+#, no-c-format
+msgid "familyName"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:231
+#, no-c-format
+msgid ""
+"The font family. One of: <literal>COURIER</literal>, <literal>HELVETICA</"
+"literal>, <literal>TIMES-ROMAN</literal>, <literal>SYMBOL</literal> or "
+"<literal>ZAPFDINGBATS</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:237
+#, no-c-format
+msgid "size"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:239
+#, no-c-format
+msgid "The point size of the font."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:245 Itext.xml:534
+#, no-c-format
+msgid "style"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:247
+#, no-c-format
+msgid ""
+"The font styles. Any combination of : <literal>NORMAL</literal>, "
+"<literal>BOLD</literal>, <literal>ITALIC</literal>, <literal>OBLIQUE</"
+"literal>, <literal>UNDERLINE</literal>, <literal>LINE-THROUGH</literal>"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:256
+#, no-c-format
+msgid "p:newPage"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:257
+#, no-c-format
+msgid "<literal>p:newPage</literal> inserts a page break."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:263
+#, no-c-format
+msgid "p:image"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:264
+#, no-c-format
+msgid ""
+"<literal>p:image</literal> inserts an image into the document. Images can be "
+"be loaded from the classpath or from the web application context using the "
+"<literal>resource</literal> attribute."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:267
+#, no-c-format
+msgid "&lt;p:image resource=\"/jboss.jpg\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:268
+#, no-c-format
+msgid ""
+"Resources can also be dynamically generated by application code. The "
+"<literal>imageData</literal> attribute can specify a value binding "
+"expression whose value is a <literal>java.awt.Image</literal> object."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:271
+#, no-c-format
+msgid "&lt;p:image imageData=\"#{images.chart}\" /&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:274
+#, no-c-format
+msgid "resource"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:276
+#, no-c-format
+msgid ""
+"The location of the image resource to be included. Resources should be "
+"relative to the document root of the web application."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:282
+#, no-c-format
+msgid "imageData"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:284
+#, no-c-format
+msgid "A method expression binding to an application-generated image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:290 Itext.xml:913
+#, no-c-format
+msgid "rotation"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:292
+#, no-c-format
+msgid "The rotation of the image in degrees."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:298
+#, no-c-format
+msgid "height"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:300
+#, no-c-format
+msgid "The height of the image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:306
+#, no-c-format
+msgid "width"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:308
+#, no-c-format
+msgid "The width of the image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:314 Itext.xml:441 Itext.xml:591
+#, no-c-format
+msgid "alignment"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:316
+#, no-c-format
+msgid ""
+"The alignment of the image. (see <xref linkend=\"Document_Constants-"
+"Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:322
+#, no-c-format
+msgid "<literal>alt</literal>"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:324
+#, no-c-format
+msgid "Alternative text representation for the image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:360 Itext.xml:672
+#, no-c-format
+msgid "widthPercentage"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:367
+#, no-c-format
+msgid "initialRotation"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:374
+#, no-c-format
+msgid "<literal>dpi</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:381
+#, no-c-format
+msgid "scalePercent"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:383
+#, no-c-format
+msgid ""
+"The scaling factor (as a percentage) to use for the image. This can be "
+"expressed as a single percentage value or as two percentage values "
+"representing separate x and y scaling percentages."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:389
+#, no-c-format
+msgid "wrap"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:396
+#, no-c-format
+msgid "underlying"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:406
+#, no-c-format
+msgid "p:anchor"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:407
+#, no-c-format
+msgid ""
+"<literal>p:anchor</literal> defines clickable links from a document. It "
+"supports the following attributes:"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:412
+#, no-c-format
+msgid "name"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:414
+#, no-c-format
+msgid "The name of an in-document anchor destination."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:420
+#, no-c-format
+msgid "reference"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:422
+#, no-c-format
+msgid ""
+"The destination the link refers to. Links to other points in the document "
+"should begin with a \"#\". For example, \"#link1\" to refer to an anchor "
+"postion with a <literal>name</literal> of <literal>link1</literal>. Links "
+"may also be a full URL to point to a resource outside of the document."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:433
+#, no-c-format
+msgid "Headers and Footers"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:435
+#, no-c-format
+msgid "p:header and p:footer"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:436
+#, no-c-format
+msgid ""
+"The <literal>p:header</literal> and <literal>p:footer</literal> components "
+"provide the ability to place header and footer text on each page of a "
+"generated document, with the exception of the first page. Header and footer "
+"declarations should appear near the top of a document."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:443
+#, no-c-format
+msgid ""
+"The alignment of the header/footer box section. (see <xref linkend="
+"\"Document_Constants-Alignment_Values\"/> for alignment values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:449
+#, no-c-format
+msgid "backgroundColor"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:451
+#, no-c-format
+msgid ""
+"The background color of the header/footer box. (see <xref linkend="
+"\"Document_Constants-Color_Values\"/> for color values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:457
+#, no-c-format
+msgid "borderColor"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:459
+#, no-c-format
+msgid ""
+"The border color of the header/footer box. Individual border sides can be "
+"set using <literal>borderColorLeft</literal>, <literal>borderColorRight</"
+"literal>, <literal>borderColorTop</literal> and <literal>borderColorBottom</"
+"literal>.(see <xref linkend=\"Document_Constants-Color_Values\"/> for color "
+"values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:465
+#, no-c-format
+msgid "borderWidth"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:467
+#, no-c-format
+msgid ""
+"The width of the border. Inidvidual border sides can be specified using "
+"<literal>borderWidthLeft</literal>, <literal>borderWidthRight</literal>, "
+"<literal>borderWidthTop</literal> and <literal>borderWidthBottom</literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:476
+#, no-c-format
+msgid "p:pageNumber"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:477
+#, no-c-format
+msgid ""
+"The current page number can be placed inside of a header or footer using the "
+"<literal>p:pageNumber</literal> tag. The page number tag can only be used in "
+"the context of a header or footer and can only be used once."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:485
+#, no-c-format
+msgid "Chapters and Sections"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:486
+#, no-c-format
+msgid ""
+"If the generated document follows a book/article structure, the <literal>p:"
+"chapter</literal> and <literal>p:section</literal> tags can be used to "
+"provide the necessary structure. Sections can only be used inside of "
+"chapters, but they may be nested arbitrarily deep. Most PDF viewers provide "
+"easy navigation between chapters and sections in a document."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:489
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"\n"
+"            title=\"Hello\"&gt;\n"
+"\n"
+"   &lt;p:chapter number=\"1\"&gt;\n"
+"      &lt;p:title&gt;&lt;p:paragraph&gt;Hello&lt;/p:paragraph&gt;&lt;/p:"
+"title&gt;\n"
+"      &lt;p:paragraph&gt;Hello #{user.name}!&lt;/p:paragraph&gt;\n"
+"   &lt;/p:chapter&gt;\n"
+"\n"
+"   &lt;p:chapter number=\"2\"&gt;\n"
+"      &lt;p:title&gt;&lt;p:paragraph&gt;Goodbye&lt;/p:paragraph&gt;&lt;/p:"
+"title&gt;\n"
+"      &lt;p:paragraph&gt;Goodbye #{user.name}.&lt;/p:paragraph&gt;\n"
+"   &lt;/p:chapter&gt;\n"
+"\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:491
+#, no-c-format
+msgid "p:chapter and p:section"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:494
+#, no-c-format
+msgid "number"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:496
+#, no-c-format
+msgid "The chapter number. Every chapter should be assigned a chapter number."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:502
+#, no-c-format
+msgid "numberDepth"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:504
+#, no-c-format
+msgid ""
+"The depth of numbering for section. All sections are numbered relative to "
+"their surrounding chapter/sections. The fourth section of of the first "
+"section of chapter three would be section 3.1.4, if displayed at the default "
+"number depth of three. To omit the chapter number, a number depth of 2 "
+"should be used. In that case, the section number would be displayed as 1.4."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:513
+#, no-c-format
+msgid "p:title"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:514
+#, no-c-format
+msgid ""
+"Any chapter or section can contain a <literal>p:title</literal>. The title "
+"will be displayed next to the chapter/section number. The body of the title "
+"may contain raw text or may be a <literal>p:paragraph</literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:522
+#, no-c-format
+msgid "Lists"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:523
+#, no-c-format
+msgid ""
+"List structures can be displayed using the <literal>p:list</literal> and "
+"<literal>p:listItem</literal> tags. Lists may contain arbitrarily-nested "
+"sublists. List items may not be used outside of a list. he following "
+"document uses the <literal>ui:repeat</literal> tag to to display a list of "
+"values retrieved from a Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:526
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"\n"
+"            xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"            title=\"Hello\"&gt;\n"
+"   &lt;p:list style=\"numbered\"&gt;\n"
+"      &lt;ui:repeat value=\"#{documents}\" var=\"doc\"&gt;\n"
+"         &lt;p:listItem&gt;#{doc.name}&lt;/p:listItem&gt;\n"
+"      &lt;/ui:repeat&gt;\n"
+"   &lt;/p:list&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:528
+#, no-c-format
+msgid "p:list"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:529
+#, no-c-format
+msgid "<literal>p:list</literal> supports the following attributes:"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:536
+#, no-c-format
+msgid ""
+"The ordering/bulleting style of list. One of: <literal>NUMBERED</literal>, "
+"<literal>LETTERED</literal>, <literal>GREEK</literal>, <literal>ROMAN</"
+"literal>, <literal>ZAPFDINGBATS</literal>, <literal>ZAPFDINGBATS_NUMBER</"
+"literal>. If no style is given, the list items are bulleted."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:542 Itext.xml:615
+#, no-c-format
+msgid "listSymbol"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:544
+#, no-c-format
+msgid "For bulleted lists, specifies the bullet symbol."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:550 Itext.xml:822
+#, no-c-format
+msgid "indent"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:552
+#, no-c-format
+msgid "The indentation level of the list."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:558
+#, no-c-format
+msgid "lowerCase"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:560
+#, no-c-format
+msgid ""
+"For list styles using letters, indicates whether the letters should be lower "
+"case."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:566
+#, no-c-format
+msgid "charNumber"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:568
+#, no-c-format
+msgid "For ZAPFDINGBATS, indicates the character code of the bullet character."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:574
+#, no-c-format
+msgid "numberType"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:576
+#, no-c-format
+msgid "For ZAPFDINGBATS_NUMBER, indicates the numbering style."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:585
+#, no-c-format
+msgid "p:listItem"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:586
+#, no-c-format
+msgid "<literal>p:listItem</literal> supports the following attributes:"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:593
+#, no-c-format
+msgid ""
+"The alignment of the list item. (See <xref linkend=\"Document_Constants-"
+"Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:601
+#, no-c-format
+msgid "The left indentation amount."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:609
+#, no-c-format
+msgid "The right indentation amount."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:617
+#, no-c-format
+msgid "Overrides the default list symbol for this list item."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:628
+#, no-c-format
+msgid "Tables"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:629
+#, no-c-format
+msgid ""
+"Table structures can be created using the <literal>p:table</literal> and "
+"<literal>p:cell</literal> tags. Unlike many table structures, there is no "
+"explicit row declaration. If a table has 3 columns, then every 3 cells will "
+"automatically form a row. Header and footer rows can be declared, and the "
+"headers and footers will be repeated in the event a table structure spans "
+"multiple pages."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:632
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"   \n"
+"            xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"            title=\"Hello\"&gt;   \n"
+"   &lt;p:table columns=\"3\" headerRows=\"1\"&gt;\n"
+"      &lt;p:cell&gt;name&lt;/p:cell&gt;\n"
+"      &lt;p:cell&gt;owner&lt;/p:cell&gt;\n"
+"      &lt;p:cell&gt;size&lt;/p:cell&gt;\n"
+"      &lt;ui:repeat value=\"#{documents}\" var=\"doc\"&gt;\n"
+"         &lt;p:cell&gt;#{doc.name}&lt;/p:cell&gt;\n"
+"         &lt;p:cell&gt;#{doc.user.name}&lt;/p:cell&gt;\n"
+"         &lt;p:cell&gt;#{doc.size}&lt;/p:cell&gt;\n"
+"      &lt;/ui:repeat&gt;\n"
+"   &lt;/p:table&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:634
+#, no-c-format
+msgid "p:table"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:635
+#, no-c-format
+msgid "<literal>p:table</literal> supports the following attributes."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:640
+#, no-c-format
+msgid "columns"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:642
+#, no-c-format
+msgid "The number of columns (cells) that make up a table row."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:648
+#, no-c-format
+msgid "widths"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:650
+#, no-c-format
+msgid ""
+"The relative widths of each column. There should be one value for each "
+"column. For example: widths=\"2 1 1\" would indicate that there are 3 "
+"columns and the first column should be twice the size of the second and "
+"third column."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:656
+#, no-c-format
+msgid "headerRows"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:658
+#, no-c-format
+msgid ""
+"The initial number of rows which are considered to be headers or footer rows "
+"and should be repeated if the table spans multiple pages."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:664
+#, no-c-format
+msgid "footerRows"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:666
+#, no-c-format
+msgid ""
+"The number of rows that are considered to be footer rows. This value is "
+"subtracted from the <literal>headerRows</literal> value. If document has 2 "
+"rows which make up the header and one row that makes up the footer, "
+"<literal>headerRows</literal> should be set to 3 and <literal>footerRows</"
+"literal> should be set to 1"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:674
+#, no-c-format
+msgid "The percentage of the page width that the table spans."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:680 Itext.xml:777
+#, no-c-format
+msgid "horizontalAlignment"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:682
+#, no-c-format
+msgid ""
+"The horizontal alignment of the table. (See <xref linkend="
+"\"Document_Constants-Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:688
+#, no-c-format
+msgid "skipFirstHeader"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:695 Itext.xml:885
+#, no-c-format
+msgid "runDirection"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:702
+#, no-c-format
+msgid "lockedWidth"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:709
+#, no-c-format
+msgid "splitRows"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:732
+#, no-c-format
+msgid "extendLastRow"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:739
+#, no-c-format
+msgid "headersInEvent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:746
+#, no-c-format
+msgid "splitLate"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:763
+#, no-c-format
+msgid "p:cell"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:764
+#, no-c-format
+msgid "<literal>p:cell</literal> supports the following attributes."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:769
+#, no-c-format
+msgid "colspan"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:771
+#, no-c-format
+msgid ""
+"Cells can span more than one column by declaring a <literal>colspan</"
+"literal> greater than 1. Tables do not have the ability to span across "
+"multiple rows."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:779
+#, no-c-format
+msgid ""
+"The horizontal alignment of the cell. (see <xref linkend="
+"\"Document_Constants-Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:785 Itext.xml:829
+#, no-c-format
+msgid "verticalAlignment"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:787
+#, no-c-format
+msgid ""
+"The vertical alignment of the cell. (see <xref linkend=\"Document_Constants-"
+"Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:793
+#, no-c-format
+msgid "padding"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:795
+#, no-c-format
+msgid ""
+"Padding on a given side can also be specified using <literal>paddingLeft</"
+"literal>, <literal>paddingRight</literal>, <literal>paddingTop</literal> and "
+"<literal>paddingBottom</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:801
+#, no-c-format
+msgid "useBorderPadding"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:843
+#, no-c-format
+msgid "fixedHeight"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:850
+#, no-c-format
+msgid "noWrap"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:857
+#, no-c-format
+msgid "minimumHeight"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:864
+#, no-c-format
+msgid "followingIndent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:871
+#, no-c-format
+msgid "rightIndent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:878
+#, no-c-format
+msgid "spaceCharRatio"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:892
+#, no-c-format
+msgid "arabicOptions"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:899
+#, no-c-format
+msgid "useAscender"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:906
+#, no-c-format
+msgid "grayFill"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:925
+#, no-c-format
+msgid "Document Constants"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:926
+#, no-c-format
+msgid ""
+"This section documents some of the constants shared by attributes on "
+"multiple tags."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:930
+#, no-c-format
+msgid "Color Values"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:931
+#, no-c-format
+msgid ""
+"Seam documents do not yet support a full color specification. Currently, "
+"only named colors are supported. They are: <literal>white</literal>, "
+"<literal>gray</literal>, <literal>lightgray</literal>, <literal>darkgray</"
+"literal>, <literal>black</literal>, <literal>red</literal>, <literal>pink</"
+"literal>, <literal>yellow</literal>, <literal>green</literal>, "
+"<literal>magenta</literal>, <literal>cyan</literal> and <literal>blue</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:937
+#, no-c-format
+msgid "Alignment Values"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:938
+#, no-c-format
+msgid ""
+"Where alignment values are used, the Seam PDF supports the following "
+"horizontal alignment values: <literal>left</literal>, <literal>right</"
+"literal>, <literal>center</literal>, <literal>justify</literal> and "
+"<literal>justifyall</literal>. The vertical alignment values are "
+"<literal>top</literal>, <literal>middle</literal>, <literal>bottom</"
+"literal>, and <literal>baseline</literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:946
+#, no-c-format
+msgid "Configuring iText"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:947
+#, no-c-format
+msgid ""
+"Document generation works out of the box with no additional configuration "
+"needed. However, there are a few points of configuration that are needed for "
+"more serious applications."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:950
+#, no-c-format
+msgid ""
+"The default implementation serves PDF documents from a generic URL, "
+"<literal>/seam-doc.seam</literal>. Many browsers (and users) would prefer to "
+"see URLs that contain the actual PDF name like <literal>/myDocument.pdf</"
+"literal>. This capability requires some configuration. To serve PDF files, "
+"all *.pdf resources should be mapped to the Seam Servlet Filter and to the "
+"DocumentStoreServlet:"
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:953
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.servlet.SeamServletFilter&lt;/filter-"
+"class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;\n"
+"\n"
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.pdf.DocumentStoreServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"\n"
+"&lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:954
+#, no-c-format
+msgid ""
+"The <literal>useExtensions</literal> option on the document store component "
+"completes the functionality by instructing the document store to generate "
+"URLs with the correct filename extension for the document type being "
+"generated."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:957
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pdf=\"http://jboss.com/products/seam/pdf\"&gt;\n"
+"    &lt;pdf:documentStore useExtensions=\"true\" /&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:958
+#, no-c-format
+msgid ""
+"Generated documents are stored in conversation scope and will expire when "
+"the conversation ends. At that point, references to the document will be "
+"invalid. To You can specify a default view to be shown when a document does "
+"not exist using the <literal>errorPage</literal> property of the "
+"documentStore."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:961
+#, no-c-format
+msgid ""
+"&lt;pdf:documentStore useExtensions=\"true\" errorPage=\"/pdfMissing.seam\" /"
+"&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:965
+#, no-c-format
+msgid "iText links"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:966
+#, no-c-format
+msgid "For further information on iText, see:"
+msgstr ""
+
+#. Tag: ulink
+#: Itext.xml:973
+#, no-c-format
+msgid "iText Home Page"
+msgstr ""
+
+#. Tag: ulink
+#: Itext.xml:978
+#, no-c-format
+msgid "iText in Action"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Jbpm.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Jbpm.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Jbpm.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1189 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Jbpm.xml:10
+#, no-c-format
+msgid "Pageflows and business processes"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:11
+#, no-c-format
+msgid ""
+"JBoss jBPM is a business process management engine for any Java SE or EE "
+"environment. jBPM lets you represent a business process or user interaction "
+"as a graph of nodes representing wait states, decisions, tasks, web pages, "
+"etc. The graph is defined using a simple, very readable, XML dialect called "
+"jPDL, and may be edited and visualised graphically using an eclipse plugin. "
+"jPDL is an extensible language, and is suitable for a range of problems, "
+"from defining web application page flow, to traditional workflow management, "
+"all the way up to orchestration of services in a SOA environment."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:14
+#, no-c-format
+msgid "Seam applications use jBPM for two different problems:"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:20
+#, no-c-format
+msgid ""
+"Defining the pageflow involved in complex user interactions. A jPDL process "
+"definition defines the page flow for a single conversation. A Seam "
+"conversation is considered to be a relatively short-running interaction with "
+"a single user."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:25
+#, no-c-format
+msgid ""
+"Defining the overarching business process. The business process may span "
+"multiple conversations with multiple users. Its state is persistent in the "
+"jBPM database, so it is considered long-running. Coordination of the "
+"activities of multiple users is a much more complex problem than scripting "
+"an interaction with a single user, so jBPM offers sophisticated facilities "
+"for task management and dealing with multiple concurrent paths of execution."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:31
+#, no-c-format
+msgid ""
+"Don't get these two things confused ! They operate at very different levels "
+"or granularity. <emphasis>Pageflow</emphasis>, <emphasis>conversation</"
+"emphasis> and <emphasis>task</emphasis> all refer to a single interaction "
+"with a single user. A business process spans many tasks. Futhermore, the two "
+"applications of jBPM are totally orthogonal. You can use them together or "
+"independently or not at all."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:34
+#, no-c-format
+msgid ""
+"You don't have to know jDPL to use Seam. If you're perfectly happy defining "
+"pageflow using JSF or Seam navigation rules, and if your application is more "
+"data-driven that process-driven, you probably don't need jBPM. But we're "
+"finding that thinking of user interaction in terms of a well-defined "
+"graphical representation is helping us build more robust applications."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:37
+#, no-c-format
+msgid ""
+"Please refer to the jBPM documentation for a more thorough overview of the "
+"sophisticated features that jBPM provides for managing complex business "
+"processes."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:41
+#, no-c-format
+msgid "Pageflow in Seam"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:42
+#, no-c-format
+msgid "There are two ways to define pageflow in Seam:"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:47
+#, no-c-format
+msgid ""
+"Using JSF or Seam navigation rules - the <emphasis>stateless navigation "
+"model</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:52
+#, no-c-format
+msgid "Using jPDL - the <emphasis>stateful navigation model</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:57
+#, no-c-format
+msgid ""
+"Very simple applications will only need the stateless navigation model. Very "
+"complex applications will use both models in different places. Each model "
+"has its strengths and weaknesses!"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:60
+#, no-c-format
+msgid ""
+"In practice, both navigation models have their place, and you'll quickly "
+"learn to recognize when to prefer one model over the other."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:64
+#, no-c-format
+msgid "The two navigation models"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:65
+#, no-c-format
+msgid ""
+"The stateless model defines a mapping from a set of named, logical outcomes "
+"of an event directly to the resulting page of the view. The navigation rules "
+"are entirely oblivious to any state held by the application other than what "
+"page was the source of the event. This means that your action listener "
+"methods must sometimes make decisions about the page flow, since only they "
+"have access to the current state of the application."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:68
+#, no-c-format
+msgid "Here is an example page flow definition using JSF navigation rules:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:71
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"    &lt;from-view-id&gt;/numberGuess.jsp&lt;/from-view-id&gt;\n"
+"        \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;guess&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/numberGuess.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;win&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/win.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"        \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;lose&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/lose.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:72
+#, no-c-format
+msgid ""
+"Here is the same example page flow definition using Seam navigation rules:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:75
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/numberGuess.jsp\"&gt;\n"
+"        \n"
+"    &lt;navigation&gt;\n"
+"        &lt;rule if-outcome=\"guess\"&gt;\n"
+"            &lt;redirect view-id=\"/numberGuess.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"        &lt;rule if-outcome=\"win\"&gt;\n"
+"            &lt;redirect view-id=\"/win.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"        &lt;rule if-outcome=\"lose\"&gt;\n"
+"            &lt;redirect view-id=\"/lose.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:76
+#, no-c-format
+msgid ""
+"If you find navigation rules overly verbose, you can return view ids "
+"directly from your action listener methods:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:79
+#, no-c-format
+msgid ""
+"public String guess() {\n"
+"    if (guess==randomNumber) return \"/win.jsp\";\n"
+"    if (++guessCount==maxGuesses) return \"/lose.jsp\";\n"
+"    return null;\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:80
+#, no-c-format
+msgid ""
+"Note that this results in a redirect. You can even specify parameters to be "
+"used in the redirect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:83
+#, no-c-format
+msgid ""
+"public String search() {\n"
+"    return \"/searchResults.jsp?searchPattern=#{searchAction.searchPattern}"
+"\";\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:84
+#, no-c-format
+msgid ""
+"The stateful model defines a set of transitions between a set of named, "
+"logical application states. In this model, it is possible to express the "
+"flow of any user interaction entirely in the jPDL pageflow definition, and "
+"write action listener methods that are completely unaware of the flow of the "
+"interaction."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:87
+#, no-c-format
+msgid "Here is an example page flow definition using jPDL:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:90
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"numberGuess\"&gt;\n"
+"    \n"
+"   &lt;start-page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"      &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"      &lt;/transition&gt;\n"
+"   &lt;/start-page&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess."
+"correctGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateRemainingGuesses\" expression=\"#{numberGuess."
+"lastGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"lose\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"displayGuess\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"lose\" view-id=\"/lose.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:99
+#, no-c-format
+msgid "There are two things we notice immediately here:"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:104
+#, no-c-format
+msgid ""
+"The JSF/Seam navigation rules are <emphasis>much</emphasis> simpler. "
+"(However, this obscures the fact that the underlying Java code is more "
+"complex.)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:109
+#, no-c-format
+msgid ""
+"The jPDL makes the user interaction immediately understandable, without us "
+"needing to even look at the JSP or Java code."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:114
+#, no-c-format
+msgid ""
+"In addition, the stateful model is more <emphasis>constrained</emphasis>. "
+"For each logical state (each step in the page flow), there are a constrained "
+"set of possible transitions to other states. The stateless model is an "
+"<emphasis>ad hoc</emphasis> model which is suitable to relatively "
+"unconstrained, freeform navigation where the user decides where he/she wants "
+"to go next, not the application."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:117
+#, no-c-format
+msgid ""
+"The stateful/stateless navigation distinction is quite similar to the "
+"traditional view of modal/modeless interaction. Now, Seam applications are "
+"not usually modal in the simple sense of the word - indeed, avoiding "
+"application modal behavior is one of the main reasons for having "
+"conversations! However, Seam applications can be, and often are, modal at "
+"the level of a particular conversation. It is well-known that modal behavior "
+"is something to avoid as much as possible; it is very difficult to predict "
+"the order in which your users are going to want to do things! However, there "
+"is no doubt that the stateful model has its place."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:120
+#, no-c-format
+msgid ""
+"The biggest contrast between the two models is the back-button behavior."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:126
+#, no-c-format
+msgid "Seam and the back button"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:127
+#, no-c-format
+msgid ""
+"When JSF or Seam navigation rules are used, Seam lets the user freely "
+"navigate via the back, forward and refresh buttons. It is the responsibility "
+"of the application to ensure that conversational state remains internally "
+"consistent when this occurs. Experience with the combination of web "
+"application frameworks like Struts or WebWork - that do not support a "
+"conversational model - and stateless component models like EJB stateless "
+"session beans or the Spring framework has taught many developers that this "
+"is close to impossible to do! However, our experience is that in the context "
+"of Seam, where there is a well-defined conversational model, backed by "
+"stateful session beans, it is actually quite straightforward. Usually it is "
+"as simple as combining the use of <literal>no-conversation-view-id</literal> "
+"with null checks at the beginning of action listener methods. We consider "
+"support for freeform navigation to be almost always desirable."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:130
+#, no-c-format
+msgid ""
+"In this case, the <literal>no-conversation-view-id</literal> declaration "
+"goes in <literal>pages.xml</literal>. It tells Seam to redirect to a "
+"different page if a request originates from a page rendered during a "
+"conversation, and that conversation no longer exists:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:133
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/checkout.xhtml\" \n"
+"        no-conversation-view-id=\"/main.xhtml\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:134
+#, no-c-format
+msgid ""
+"On the other hand, in the stateful model, backbuttoning is interpreted as an "
+"undefined transition back to a previous state. Since the stateful model "
+"enforces a defined set of transitions from the current state, back buttoning "
+"is be default disallowed in the stateful model! Seam transparently detects "
+"the use of the back button, and blocks any attempt to perform an action from "
+"a previous, \"stale\" page, and simply redirects the user to the \"current\" "
+"page (and displays a faces message). Whether you consider this a feature or "
+"a limitation of the stateful model depends upon your point of view: as an "
+"application developer, it is a feature; as a user, it might be frustrating! "
+"You can enable backbutton navigation from a particular page node by setting "
+"<literal>back=\"enabled\"</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:137
+#, no-c-format
+msgid ""
+"&lt;page name=\"checkout\" \n"
+"        view-id=\"/checkout.xhtml\" \n"
+"        back=\"enabled\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"checkout\"/&gt;\n"
+"    &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:138
+#, no-c-format
+msgid ""
+"This allows backbuttoning <emphasis>from</emphasis> the <literal>checkout</"
+"literal> state to <emphasis>any previous state!</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:141
+#, no-c-format
+msgid ""
+"Of course, we still need to define what happens if a request originates from "
+"a page rendered during a pageflow, and the conversation with the pageflow no "
+"longer exists. In this case, the <literal>no-conversation-view-id</literal> "
+"declaration goes into the pageflow definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:144
+#, no-c-format
+msgid ""
+"&lt;page name=\"checkout\" \n"
+"        view-id=\"/checkout.xhtml\" \n"
+"        back=\"enabled\" \n"
+"        no-conversation-view-id=\"/main.xhtml\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"checkout\"/&gt;\n"
+"    &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:151
+#, no-c-format
+msgid "Using jPDL pageflows"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:153
+#, no-c-format
+msgid "Installing pageflows"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:154
+#, no-c-format
+msgid ""
+"We need to install the Seam jBPM-related components, and tell them where to "
+"find our pageflow definition. We can specify this Seam configuration in "
+"<literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:157
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:pageflow-definitions&gt;\n"
+"        &lt;value&gt;pageflow.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:pageflow-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:158
+#, no-c-format
+msgid ""
+"The first line installs jBPM, the second points to a jPDL-based pageflow "
+"definition."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:164
+#, no-c-format
+msgid "Starting pageflows"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:165
+#, no-c-format
+msgid ""
+"We \"start\" a jPDL-based pageflow by specifying the name of the process "
+"definition using a <literal>@Begin</literal>, <literal>@BeginTask</literal> "
+"or <literal>@StartTask</literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:168
+#, no-c-format
+msgid ""
+"@Begin(pageflow=\"numberguess\")\n"
+"public void begin() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:169
+#, no-c-format
+msgid "Alternatively we can start a pageflow using pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:172
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"        &lt;begin-conversation pageflow=\"numberguess\"/&gt;\n"
+"    &lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:173
+#, no-c-format
+msgid ""
+"If we are beginning the pageflow during the <literal>RENDER_RESPONSE</"
+"literal> phase&mdash;during a <literal>@Factory</literal> or "
+"<literal>@Create</literal> method, for example&mdash;we consider ourselves "
+"to be already at the page being rendered, and use a <literal>&lt;start-"
+"page&gt;</literal> node as the first node in the pageflow, as in the example "
+"above."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:176
+#, no-c-format
+msgid ""
+"But if the pageflow is begun as the result of an action listener invocation, "
+"the outcome of the action listener determines which is the first page to be "
+"rendered. In this case, we use a <literal>&lt;start-state&gt;</literal> as "
+"the first node in the pageflow, and declare a transition for each possible "
+"outcome:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:179
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"viewEditDocument\"&gt;\n"
+"\n"
+"    &lt;start-state name=\"start\"&gt;\n"
+"        &lt;transition name=\"documentFound\" to=\"displayDocument\"/&gt;\n"
+"        &lt;transition name=\"documentNotFound\" to=\"notFound\"/&gt;\n"
+"    &lt;/start-state&gt;\n"
+"    \n"
+"    &lt;page name=\"displayDocument\" view-id=\"/document.jsp\"&gt;\n"
+"        &lt;transition name=\"edit\" to=\"editDocument\"/&gt;\n"
+"        &lt;transition name=\"done\" to=\"main\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"    \n"
+"    ...\n"
+"    \n"
+"    &lt;page name=\"notFound\" view-id=\"/404.jsp\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"    &lt;/page&gt;\n"
+"    \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:183
+#, no-c-format
+msgid "Page nodes and transitions"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:184
+#, no-c-format
+msgid ""
+"Each <literal>&lt;page&gt;</literal> node represents a state where the "
+"system is waiting for user input:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:187
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"        &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:188
+#, no-c-format
+msgid ""
+"The <literal>view-id</literal> is the JSF view id. The <literal>&lt;redirect/"
+"&gt;</literal> element has the same effect as <literal>&lt;redirect/&gt;</"
+"literal> in a JSF navigation rule: namely, a post-then-redirect behavior, to "
+"overcome problems with the browser's refresh button. (Note that Seam "
+"propagates conversation contexts over these browser redirects. So there is "
+"no need for a Ruby on Rails style \"flash\" construct in Seam!)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:191
+#, no-c-format
+msgid ""
+"The transition name is the name of a JSF outcome triggered by clicking a "
+"command button or command link in <literal>numberGuess.jsp</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:194
+#, no-c-format
+msgid ""
+"&lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"guess\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:195
+#, no-c-format
+msgid ""
+"When the transition is triggered by clicking this button, jBPM will activate "
+"the transition action by calling the <literal>guess()</literal> method of "
+"the <literal>numberGuess</literal> component. Notice that the syntax used "
+"for specifying actions in the jPDL is just a familiar JSF EL expression, and "
+"that the transition action handler is just a method of a Seam component in "
+"the current Seam contexts. So we have exactly the same event model for jBPM "
+"events that we already have for JSF events! (The <emphasis>One Kind of "
+"Stuff</emphasis> principle.)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:198
+#, no-c-format
+msgid ""
+"In the case of a null outcome (for example, a command button with no "
+"<literal>action</literal> defined), Seam will signal the transition with no "
+"name if one exists, or else simply redisplay the page if all transitions "
+"have names. So we could slightly simplify our example pageflow and this "
+"button:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:201
+#, no-c-format
+msgid "&lt;h:commandButton type=\"submit\" value=\"Guess\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:202
+#, no-c-format
+msgid "Would fire the following un-named transition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:205
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"evaluateGuess\"&gt;\n"
+"        &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:206
+#, no-c-format
+msgid ""
+"It is even possible to have the button call an action method, in which case "
+"the action outcome will determine the transition to be taken:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:209
+#, no-c-format
+msgid ""
+"&lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"#{numberGuess."
+"guess}\"/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:210
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;transition name=\"correctGuess\" to=\"win\"/&gt;\n"
+"    &lt;transition name=\"incorrectGuess\" to=\"evaluateGuess\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:211
+#, no-c-format
+msgid ""
+"However, this is considered an inferior style, since it moves responsibility "
+"for controlling the flow out of the pageflow definition and back into the "
+"other components. It is much better to centralize this concern in the "
+"pageflow itself."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:217
+#, no-c-format
+msgid "Controlling the flow"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:218
+#, no-c-format
+msgid ""
+"Usually, we don't need the more powerful features of jPDL when defining "
+"pageflows. We do need the <literal>&lt;decision&gt;</literal> node, however:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:221
+#, no-c-format
+msgid ""
+"&lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess.correctGuess}"
+"\"&gt;\n"
+"    &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"    &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"&lt;/decision&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:222
+#, no-c-format
+msgid ""
+"A decision is made by evaluating a JSF EL expression in the Seam contexts."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:228
+#, no-c-format
+msgid "Ending the flow"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:229
+#, no-c-format
+msgid ""
+"We end the conversation using <literal>&lt;end-conversation&gt;</literal> or "
+"<literal>@End</literal>. (In fact, for readability, use of <emphasis>both</"
+"emphasis> is encouraged.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:232
+#, no-c-format
+msgid ""
+"&lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;end-conversation/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:233
+#, no-c-format
+msgid ""
+"Optionally, we can end a task, specify a jBPM <literal>transition</literal> "
+"name. In this case, Seam will signal the end of the current task in the "
+"overarching business process."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:236
+#, no-c-format
+msgid ""
+"&lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;end-task transition=\"success\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:242
+#, no-c-format
+msgid "Business process management in Seam"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:243
+#, no-c-format
+msgid ""
+"A business process is a well-defined set of tasks that must be performed by "
+"users or software systems according to well-defined rules about "
+"<emphasis>who</emphasis> can perform a task, and <emphasis>when</emphasis> "
+"it should be performed. Seam's jBPM integration makes it easy to display "
+"lists of tasks to users and let them manage their tasks. Seam also lets the "
+"application store state associated with the business process in the "
+"<literal>BUSINESS_PROCESS</literal> context, and have that state made "
+"persistent via jBPM variables."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:246
+#, no-c-format
+msgid ""
+"A simple business process definition looks much the same as a page flow "
+"definition (<emphasis>One Kind of Stuff</emphasis>), except that instead of "
+"<literal>&lt;page&gt;</literal> nodes, we have <literal>&lt;task-node&gt;</"
+"literal> nodes. In a long-running business process, the wait states are "
+"where the system is waiting for some user to log in and perform a task."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:249
+#, no-c-format
+msgid ""
+"&lt;process-definition name=\"todo\"&gt;\n"
+"   \n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"todo\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;task-node name=\"todo\"&gt;\n"
+"      &lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"         &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"      &lt;/task&gt;\n"
+"      &lt;transition to=\"done\"/&gt;\n"
+"   &lt;/task-node&gt;\n"
+"   \n"
+"   &lt;end-state name=\"done\"/&gt;\n"
+"   \n"
+"&lt;/process-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:260
+#, no-c-format
+msgid ""
+"It is perfectly possible that we might have both jPDL business process "
+"definitions and jPDL pageflow definitions in the same project. If so, the "
+"relationship between the two is that a single <literal>&lt;task&gt;</"
+"literal> in a business process corresponds to a whole pageflow <literal>&lt;"
+"pageflow-definition&gt;</literal>"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:265
+#, no-c-format
+msgid "Using jPDL business process definitions"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:267
+#, no-c-format
+msgid "Installing process definitions"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:268
+#, no-c-format
+msgid ""
+"We need to install jBPM, and tell it where to find the business process "
+"definitions:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:271
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;todo.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:275
+#, no-c-format
+msgid "Initializing actor ids"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:276
+#, no-c-format
+msgid ""
+"We always need to know what user is currently logged in. jBPM \"knows\" "
+"users by their <emphasis>actor id</emphasis> and <emphasis>group actor ids</"
+"emphasis>. We specify the current actor ids using the built in Seam "
+"component named <literal>actor</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:279
+#, no-c-format
+msgid ""
+"@In Actor actor;\n"
+"\n"
+"public String login() {\n"
+"    ...\n"
+"    actor.setId( user.getUserName() );\n"
+"    actor.getGroupActorIds().addAll( user.getGroupNames() );\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:283
+#, no-c-format
+msgid "Initiating a business process"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:284
+#, no-c-format
+msgid ""
+"To initiate a business process instance, we use the <literal>@CreateProcess</"
+"literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:287
+#, no-c-format
+msgid ""
+"@CreateProcess(definition=\"todo\")\n"
+"public void createTodo() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:288
+#, no-c-format
+msgid "Alternatively we can initiate a business process using pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:291
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;create-process definition=\"todo\" /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:295
+#, no-c-format
+msgid "Task assignment"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:296
+#, no-c-format
+msgid ""
+"When a process starts, task instances are created. These must be assigned to "
+"users or user groups. We can either hardcode our actor ids, or delegate to a "
+"Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:299
+#, no-c-format
+msgid ""
+"&lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"    &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"&lt;/task&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:300
+#, no-c-format
+msgid ""
+"In this case, we have simply assigned the task to the current user. We can "
+"also assign tasks to a pool:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:303
+#, no-c-format
+msgid ""
+"&lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"    &lt;assignment pooled-actors=\"employees\"/&gt;\n"
+"&lt;/task&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:307
+#, no-c-format
+msgid "Task lists"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:308
+#, no-c-format
+msgid ""
+"Several built-in Seam components make it easy to display task lists. The "
+"<literal>pooledTaskInstanceList</literal> is a list of pooled tasks that "
+"users may assign to themselves:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:311
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{pooledTaskInstanceList}\" var=\"task\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Description&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{task.description}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link action=\"#{pooledTask.assignToCurrentActor}\" value="
+"\"Assign\" taskInstance=\"#{task}\"/&gt;\n"
+"    &lt;/h:column&gt;            \n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:312
+#, no-c-format
+msgid ""
+"Note that instead of <literal>&lt;s:link&gt;</literal> we could have used a "
+"plain JSF <literal>&lt;h:commandLink&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:315
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"#{pooledTask.assignToCurrentActor}\"&gt; \n"
+"    &lt;f:param name=\"taskId\" value=\"#{task.id}\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:316
+#, no-c-format
+msgid ""
+"The <literal>pooledTask</literal> component is a built-in component that "
+"simply assigns the task to the current user."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:319
+#, no-c-format
+msgid ""
+"The <literal>taskInstanceListByType</literal> component includes tasks of a "
+"particular type that are assigned to the current user:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:322
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{taskInstanceListByType['todo']}\" var=\"task"
+"\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Description&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{task.description}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link action=\"#{todoList.start}\" value=\"Start Work\" "
+"taskInstance=\"#{task}\"/&gt;\n"
+"    &lt;/h:column&gt;            \n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:326
+#, no-c-format
+msgid "Performing a task"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:327
+#, no-c-format
+msgid ""
+"To begin work on a task, we use either <literal>@StartTask</literal> or "
+"<literal>@BeginTask</literal> on the listener method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:330
+#, no-c-format
+msgid ""
+"@StartTask\n"
+"public String start() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:331
+#, no-c-format
+msgid "Alternatively we can begin work on a task using pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:334
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;start-task /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:335
+#, no-c-format
+msgid ""
+"These annotations begin a special kind of conversation that has significance "
+"in terms of the overarching business process. Work done by this conversation "
+"has access to state held in the business process context."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:338
+#, no-c-format
+msgid ""
+"If we end the conversation using <literal>@EndTask</literal>, Seam will "
+"signal the completion of the task:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:341
+#, no-c-format
+msgid ""
+"@EndTask(transition=\"completed\")\n"
+"public String completed() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:342
+#, no-c-format
+msgid "Alternatively we can use pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:345
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;end-task transition=\"completed\" /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:346
+#, no-c-format
+msgid ""
+"(Alternatively, we could have used <literal>&lt;end-conversation&gt;</"
+"literal> as shown above.)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:349
+#, no-c-format
+msgid ""
+"At this point, jBPM takes over and continues executing the business process "
+"definition. (In more complex processes, several tasks might need to be "
+"completed before process execution can resume.)"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Jms.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Jms.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Jms.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,477 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Jms.xml:10
+#, no-c-format
+msgid "Asynchronicity and messaging"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:11
+#, no-c-format
+msgid ""
+"Seam makes it very easy to perform work asynchronously from a web request. "
+"When most people think of asynchronicity in Java EE, they think of using "
+"JMS. This is certainly one way to approach the problem in Seam, and is the "
+"right way when you have strict and well-defined quality of service "
+"requirements. Seam makes it easy to send and recieve JMS messages using Seam "
+"components."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:14
+#, no-c-format
+msgid ""
+"But for many usecases, JMS is overkill. Seam layers a simple asynchronous "
+"method and event facility over the EJB 3.0 timer service."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:17
+#, no-c-format
+msgid "Asynchronicity"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:18
+#, no-c-format
+msgid ""
+"Asynchronous events and method calls have the same quality of service "
+"expectations as the container's EJB timer service. If you're not familiar "
+"with the Timer service, don't worry, you don't need to interact with it "
+"directly if you want to use asynchronous methods in Seam."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:21
+#, no-c-format
+msgid ""
+"To use asynchronous methods and events, you need to add the following line "
+"to <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:24
+#, no-c-format
+msgid "&lt;core:dispatcher/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:25
+#, no-c-format
+msgid ""
+"Note that this functionality is not available in environments which do not "
+"support EJB 3.0."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:28
+#, no-c-format
+msgid "Asynchronous methods"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:29
+#, no-c-format
+msgid ""
+"In simplest form, an asynchronous call just lets a method call be processed "
+"asynchronously (in a different thread) from the caller. We usually use an "
+"asynchronous call when we want to return an immediate response to the "
+"client, and let some expensive work be processed in the background. This "
+"pattern works very well in applications which use AJAX, where the client can "
+"automatically poll the server for the result of the work."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:32
+#, no-c-format
+msgid ""
+"For EJB components, we annotate the local interface to specify that a method "
+"is processed asynchronously."
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:35
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public void processPayment(Payment payment);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:36
+#, no-c-format
+msgid ""
+"(For JavaBean components we can annotate the component implementation class "
+"if we like.)"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:39
+#, no-c-format
+msgid "The use of asynchronicity is transparent to the bean class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:42
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"paymentHandler\")\n"
+"public class PaymentHandlerBean implements PaymentHandler\n"
+"{\n"
+"    public void processPayment(Payment payment)\n"
+"    {\n"
+"        //do some work!\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:43
+#, no-c-format
+msgid "And also transparent to the client:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:46
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String pay()\n"
+"    {\n"
+"        paymentHandler.processPayment( new Payment(bill) );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:47
+#, no-c-format
+msgid ""
+"The asynchronous method is processed in a completely new event context and "
+"does not have access to the session or conversation context state of the "
+"caller. However, the business process context <emphasis>is</emphasis> "
+"propagated."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:50
+#, no-c-format
+msgid ""
+"Asynchronous method calls may be scheduled for later execution using the "
+"<literal>@Duration</literal>, <literal>@Expiration</literal> and "
+"<literal>@IntervalDuration</literal> annotations."
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:53
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public void processScheduledPayment(Payment payment, @Expiration Date "
+"date);\n"
+"\n"
+"    @Asynchronous\n"
+"    public void processRecurringPayment(Payment payment, @Expiration Date "
+"date, \n"
+"        @IntervalDuration Long interval)'\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:54
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String schedulePayment()\n"
+"    {\n"
+"        paymentHandler.processScheduledPayment( new Payment(bill), bill."
+"getDueDate() );\n"
+"        return \"success\";\n"
+"    }\n"
+"\n"
+"    public String scheduleRecurringPayment()\n"
+"    {\n"
+"        paymentHandler.processRecurringPayment( new Payment(bill), bill."
+"getDueDate(), ONE_MONTH );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:55
+#, no-c-format
+msgid ""
+"Both client and server may access the <literal>Timer</literal> object "
+"associated with the invocation."
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:58
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public Timer processScheduledPayment(Payment payment, @Expiration Date "
+"date);\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:59
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"paymentHandler\")\n"
+"public class PaymentHandlerBean implements PaymentHandler\n"
+"{\n"
+"    @In Timer timer;\n"
+"    \n"
+"    public Timer processScheduledPayment(Payment payment, @Expiration Date "
+"date)\n"
+"    {\n"
+"        //do some work!\n"
+"        \n"
+"        return timer; //note that return value is completely ignored\n"
+"    }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:60
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String schedulePayment()\n"
+"    {\n"
+"        Timer timer = paymentHandler.processScheduledPayment( new Payment"
+"(bill), bill.getDueDate() );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:61
+#, no-c-format
+msgid "Asynchronous methods cannot return any other value to the caller."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:64
+#, no-c-format
+msgid "Asynchronous events"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:65
+#, no-c-format
+msgid ""
+"Component-driven events may also be asynchronous. To raise an event for "
+"asynchronous processing, simply call the <literal>raiseAsynchronousEvent()</"
+"literal> methods of the <literal>Events</literal> class. To schedule a timed "
+"event, call one of the <literal>raiseTimedEvent()</literal> methods. "
+"Components may observe asynchronous events in the usual way, but remember "
+"that only the business process context is propagated to the asynchronous "
+"thread."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:68
+#, no-c-format
+msgid "Messaging in Seam"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:69
+#, no-c-format
+msgid ""
+"Seam makes it easy to send and receive JMS messages to and from Seam "
+"components."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:72
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:73
+#, no-c-format
+msgid ""
+"To configure Seam's infrastructure for sending JMS messages, you need to "
+"tell Seam about any topics and queues you want to send messages to, and also "
+"tell Seam where to find the <literal>QueueConnectionFactory</literal> and/or "
+"<literal>TopicConnectionFactory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:76
+#, no-c-format
+msgid ""
+"Seam defaults to using <literal>UIL2ConnectionFactory</literal> which is the "
+"usual connection factory for use with JBossMQ. If you are using some other "
+"JMS provider, you need to set one or both of <literal>queueConnection."
+"queueConnectionFactoryJndiName</literal> and <literal>topicConnection."
+"topicConnectionFactoryJndiName</literal> in <literal>seam.properties</"
+"literal>, <literal>web.xml</literal> or <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:79
+#, no-c-format
+msgid ""
+"You also need to list topics and queues in <literal>components.xml</literal> "
+"to install Seam managed <literal>TopicPublisher</literal>s and "
+"<literal>QueueSender</literal>s:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:82
+#, no-c-format
+msgid ""
+"&lt;jms:managed-topic-publisher name=\"stockTickerPublisher\" auto-create="
+"\"true\" \n"
+"    topic-jndi-name=\"topic/stockTickerTopic\"/&gt;\n"
+"\n"
+"&lt;jms:managed-queue-sender name=\"paymentQueueSender\" auto-create=\"true"
+"\" \n"
+"    queue-jndi-name=\"queue/paymentQueue\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:83
+#, no-c-format
+msgid "Sending messages"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:84
+#, no-c-format
+msgid ""
+"Now, you can inject a JMS <literal>TopicPublisher</literal> and "
+"<literal>TopicSession</literal> into any component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:87
+#, no-c-format
+msgid ""
+"@In \n"
+"private TopicPublisher stockTickerPublisher;   \n"
+"@In \n"
+"private TopicSession topicSession;\n"
+"\n"
+"public void publish(StockPrice price) {\n"
+"      try\n"
+"      {\n"
+"         topicPublisher.publish( topicSession.createObjectMessage(price) );\n"
+"      } \n"
+"      catch (Exception ex)\n"
+"      {\n"
+"         throw new RuntimeException(ex);\n"
+"      } \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:88
+#, no-c-format
+msgid "Or, for working with a queue:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:91
+#, no-c-format
+msgid ""
+"@In\n"
+"private QueueSender paymentQueueSender;   \n"
+"@In\n"
+"private QueueSession queueSession;\n"
+"\n"
+"public void publish(Payment payment) {\n"
+"      try\n"
+"      {\n"
+"         paymentQueueSender.send( queueSession.createObjectMessage"
+"(payment) );\n"
+"      } \n"
+"      catch (Exception ex)\n"
+"      {\n"
+"         throw new RuntimeException(ex);\n"
+"      } \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:92
+#, no-c-format
+msgid "Receiving messages using a message-driven bean"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:93
+#, no-c-format
+msgid ""
+"You can process messages using any EJB3 message driven bean. Message-driven "
+"beans may even be Seam components, in which case it is possible to inject "
+"other event and application scoped Seam components."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:96
+#, no-c-format
+msgid "Receiving messages in the client"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:97
+#, no-c-format
+msgid ""
+"Seam Remoting lets you subscribe to a JMS topic from client-side JavaScript. "
+"This is described in the next chapter."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Mail.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Mail.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Mail.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,985 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Mail.xml:10
+#, no-c-format
+msgid "Email"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:11
+#, no-c-format
+msgid ""
+"Seam now includes an optional components for templating and sending emails."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:14
+#, no-c-format
+msgid ""
+"Email support is provided by <literal>jboss-seam-mail.jar</literal>. This "
+"JAR contains the mail JSF controls, which are used to construct emails, and "
+"the <literal>mailSession</literal> manager component."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:17
+#, no-c-format
+msgid ""
+"The examples/mail project contains an example of the email support in "
+"action. It demonstrates proper packaging, and it contains a number of "
+"example that demonstrate the key features currently supported."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:21
+#, no-c-format
+msgid "Creating a message"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:22
+#, no-c-format
+msgid ""
+"You don't need to learn a whole new templating language to use Seam "
+"Mail&mdash;an email is just facelet!"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:25
+#, no-c-format
+msgid ""
+"&lt;m:message xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"    xmlns:m=\"http://jboss.com/products/seam/mail\"\n"
+"    xmlns:h=\"http://java.sun.com/jsf/html\"&gt;\n"
+"  \n"
+"    &lt;m:from name=\"Peter\" address=\"peter at example.com\" /&gt;\n"
+"    &lt;m:to name=\"#{person.firstname} #{person.lastname}\"&gt;#{person."
+"address}&lt;/m:to&gt;\n"
+"    &lt;m:subject&gt;Try out Seam!&lt;/m:subject&gt;\n"
+"    \n"
+"    &lt;m:body&gt;\n"
+"        &lt;p&gt;&lt;h:outputText value=\"Dear #{person.firstname}\" /&gt;,"
+"&lt;/p&gt;\n"
+"        &lt;p&gt;You can try out Seam by visiting \n"
+"        &lt;a href=\"http://labs.jboss.com/jbossseam\"&gt;http://labs.jboss."
+"com/jbossseam&lt;/a&gt;.&lt;/p&gt;\n"
+"        &lt;p&gt;Regards,&lt;/p&gt;\n"
+"        &lt;p&gt;Peter&lt;/p&gt;\n"
+"    &lt;/m:body&gt;\n"
+"    \n"
+"&lt;/m:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:26
+#, no-c-format
+msgid ""
+"The <literal>&lt;m:message&gt;</literal> tag wraps the whole message, and "
+"tells Seam to start rendering an email. Inside the <literal>&lt;m:message&gt;"
+"</literal> tag we use an <literal>&lt;m:from&gt;</literal> tag to set who "
+"the message is from, a <literal>&lt;m:to&gt;</literal> tag to specify a "
+"sender (notice how we use EL as we would in a normal facelet), and a "
+"<literal>&lt;m:subject&gt;</literal> tag."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:29
+#, no-c-format
+msgid ""
+"The <literal>&lt;m:body&gt;</literal> tag wraps the body of the email. You "
+"can use regular HTML tags inside the body as well as JSF components."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:32
+#, no-c-format
+msgid ""
+"So, now you have your email template, how do you go about sending it? Well, "
+"at the end of rendering the <literal>m:message</literal> the "
+"<literal>mailSession</literal> is called to send the email, so all you have "
+"to do is ask Seam to render the view:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:35
+#, no-c-format
+msgid ""
+"@In(create=true)\n"
+"private Renderer renderer;\n"
+"   \n"
+"public void send() {\n"
+"    try {\n"
+"       renderer.render(\"/simple.xhtml\");\n"
+"       facesMessages.add(\"Email sent successfully\");\n"
+"   } \n"
+"   catch (Exception e) {\n"
+"       facesMessages.add(\"Email sending failed: \" + e.getMessage());\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:36
+#, no-c-format
+msgid ""
+"If, for example, you entered an invalid email address, then an exception "
+"would be thrown, which is caught and then displayed to the user."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:40
+#, no-c-format
+msgid "Attachments"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:41
+#, no-c-format
+msgid ""
+"Seam makes it easy to attach files to an email. It supports most of the "
+"standard java types used when working with files."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:44
+#, no-c-format
+msgid "If you wanted to email the <literal>jboss-seam-mail.jar</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:47
+#, no-c-format
+msgid "&lt;m:attachment value=\"/WEB-INF/lib/jboss-seam-mail.jar\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:48
+#, no-c-format
+msgid ""
+"Seam will load the file from the classpath, and attach it to the email. By "
+"default it would be attached as <literal>jboss-seam-mail.jar</literal>; if "
+"you wanted it to have another name you would just add the <literal>fileName</"
+"literal> attribute:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:51
+#, no-c-format
+msgid ""
+"&lt;m:attachment value=\"/WEB-INF/lib/jboss-seam-mail.jar\" fileName=\"this-"
+"is-so-cool.jar\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:52
+#, no-c-format
+msgid ""
+"You could also attach a <literal>java.io.File</literal>, a <literal>java.net."
+"URL</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:55
+#, no-c-format
+msgid "&lt;m:attachment value=\"#{numbers}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:56
+#, no-c-format
+msgid ""
+"Or a <literal>byte[]</literal> or a <literal>java.io.InputStream</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:59
+#, no-c-format
+msgid ""
+"&lt;m:attachment value=\"#{person.photo}\" contentType=\"image/png\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:60
+#, no-c-format
+msgid ""
+"You'll notice that for a <literal>byte[]</literal> and a <literal>java.io."
+"InputStream</literal> you need to specify the MIME type of the attachment "
+"(as that information is not carried as part of the file)."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:63
+#, no-c-format
+msgid ""
+"And it gets even better, you can attach a Seam generated PDF, or any "
+"standard JSF view, just by wrapping a <literal>&lt;m:attachment&gt;</"
+"literal> around the normal tags you would use:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:66
+#, no-c-format
+msgid ""
+"&lt;m:attachment fileName=\"tiny.pdf\"&gt;\n"
+"    &lt;p:"
+"document&gt;                                                      \n"
+"        A very tiny "
+"PDF                                                                                                \n"
+"    &lt;/p:document&gt;\n"
+"&lt;/m:attachment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:67
+#, no-c-format
+msgid ""
+"If you had a set of files you wanted to attach (for example a set of "
+"pictures loaded from a database) you can just use a <literal>&lt;ui:"
+"repeat&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:70
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{people}\" var=\"person\"&gt;\n"
+"    &lt;m:attachment value=\"#{person.photo}\" contentType=\"image/jpeg\"\n"
+"    fileName=\"#{person.firstname}_#{person.lastname}.jpg\"/&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:74
+#, no-c-format
+msgid "HTML/Text alternative part"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:75
+#, no-c-format
+msgid ""
+"Whilst most mail readers nowadays support HTML, some don't, so you can add a "
+"plain text alternative to your email body:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:78
+#, no-c-format
+msgid ""
+"&lt;m:body&gt;\n"
+"    &lt;f:facet name=\"alternative\"&gt;Sorry, your email reader can't show "
+"our fancy email, \n"
+"please go to http://labs.jboss.com/jbossseam to explore Seam.&lt;/f:"
+"facet&gt;\n"
+"&lt;/m:body&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:82
+#, no-c-format
+msgid "Multiple recipients"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:83
+#, no-c-format
+msgid ""
+"Often you'll want to send an email to a group of recipients (for example "
+"your users). All of the recipient mail tags can be placed inside a "
+"<literal>&lt;ui:repeat&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:86
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{allUsers} var=\"user\"&gt;\n"
+"    &lt;m:to name=\"#{user.firstname} #{user.lastname}\" address=\"#{user."
+"emailAddress}\" /&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:90
+#, no-c-format
+msgid "Multiple messages"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:91
+#, no-c-format
+msgid ""
+"Sometimes, however, you need to send a slightly different message to each "
+"recipient (e.g. a password reset). The best way to do this is to place the "
+"whole message inside a <literal>&lt;ui:repeat&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:94
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{people}\" var=\"p\"&gt;\n"
+"    &lt;m:message&gt;\n"
+"        &lt;m:from name=\"#{person.firstname} #{person.lastname}\"&gt;#"
+"{person.address}&lt;/m:from&gt;\n"
+"        &lt;m:to name=\"#{p.firstname}\"&gt;#{p.address}&lt;/m:to&gt;\n"
+"            ...\n"
+"    &lt;/m:message&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:98
+#, no-c-format
+msgid "Templating"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:99
+#, no-c-format
+msgid ""
+"The mail templating example shows that facelets templating Just Works with "
+"the Seam mail tags."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:102
+#, no-c-format
+msgid "Our <literal>template.xhtml</literal> contains:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:105
+#, no-c-format
+msgid ""
+"&lt;m:message&gt;\n"
+"   &lt;m:from name=\"Seam\" address=\"do-not-reply at jboss.com\" /&gt;\n"
+"   &lt;m:to name=\"#{person.firstname} #{person.lastname}\"&gt;#{person."
+"address}&lt;/m:to&gt;\n"
+"   &lt;m:subject&gt;#{subject}&lt;/m:subject&gt;\n"
+"   &lt;m:body&gt;\n"
+"       &lt;html&gt;\n"
+"           &lt;body&gt;\n"
+"               &lt;ui:insert name=\"body\"&gt;This is the default body, "
+"specified by the template.\n"
+"               &lt;/ui:insert&gt;\n"
+"           &lt;/body&gt;\n"
+"       &lt;/html&gt;\n"
+"   &lt;/m:body&gt;\n"
+"&lt;/m:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:106
+#, no-c-format
+msgid "Our <literal>templating.xhtml</literal> contains:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:109
+#, no-c-format
+msgid ""
+"&lt;ui:param name=\"subject\" value=\"Templating with Seam Mail\"/&gt;\n"
+"&lt;ui:define name=\"body\"&gt;\n"
+"    &lt;p&gt;This example demonstrates that you can easily use &lt;i&gt;"
+"facelets templating&lt;/i&gt; in email!&lt;/p&gt;\n"
+"&lt;/ui:define&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:113
+#, no-c-format
+msgid "Other Headers"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:114
+#, no-c-format
+msgid ""
+"Sometimes you'll want to add other headers to your email. Seam provides "
+"support for some (see <xref linkend=\"Email-Tags\"/>). For example, we can "
+"set the importance of the email, and ask for a read receipt:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:117
+#, no-c-format
+msgid ""
+"&lt;m:message xmlns:m=\"http://jboss.com/products/seam/mail\"\n"
+"           importance=\"low\"\n"
+"           requestReadReceipt=\"true\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:118
+#, no-c-format
+msgid ""
+"Otherise you can add any header to the message using the <literal>&lt;m:"
+"header&gt;</literal> tag:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:121
+#, no-c-format
+msgid "&lt;m:header name=\"X-Sent-From\" value=\"JBoss Seam\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:127
+#, no-c-format
+msgid "Receiving emails"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:128
+#, no-c-format
+msgid ""
+"If you are using EJB then you can use a MDB (Message Driven Bean) to receive "
+"email. Seam comes with an improved version of <literal>mail-ra.rar</literal> "
+"as distributed in JBoss AS; until the improvements make there way into a "
+"released version of JBoss AS, replacing the default <literal>rar</literal> "
+"with the one distributed with Seam is recommended."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:131
+#, no-c-format
+msgid "You can configure it like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:134
+#, no-c-format
+msgid ""
+"@MessageDriven(activationConfig={\n"
+"         @ActivationConfigProperty(propertyName=\"mailServer\", "
+"propertyValue=\"localhost\"),\n"
+"         @ActivationConfigProperty(propertyName=\"mailFolder\", "
+"propertyValue=\"INBOX\"),\n"
+"         @ActivationConfigProperty(propertyName=\"storeProtocol\", "
+"propertyValue=\"pop3\"),\n"
+"         @ActivationConfigProperty(propertyName=\"userName\", propertyValue="
+"\"seam\"),\n"
+"         @ActivationConfigProperty(propertyName=\"password\", propertyValue="
+"\"seam\")\n"
+"})\n"
+"@ResourceAdapter(\"mail-ra.rar\")\n"
+"@Name(\"mailListener\")\n"
+"public class MailListenerMDB implements MailListener {\n"
+"\n"
+"   @In(create=true)\n"
+"   private OrderProcessor orderProcessor;\n"
+"\n"
+"   public void onMessage(Message message) {\n"
+"      // Process the message\n"
+"      orderProcessor.process(message.getSubject());\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:135
+#, no-c-format
+msgid ""
+"Each message received will cause <literal>onMessage(Message message)</"
+"literal> to be called. Most seam annotations will work inside a MDB but you "
+"musn't access the persistence context."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:138
+#, no-c-format
+msgid ""
+"You can find more information on the default <literal>mail-ra.rar</literal> "
+"at <ulink url=\"http://wiki.jboss.org/wiki/Wiki.jsp?page=InboundJavaMail"
+"\">http://wiki.jboss.org/wiki/Wiki.jsp?page=InboundJavaMail</ulink>. The "
+"version distributed with Seam also includes a <literal>debug</literal> "
+"property to enable JavaMail debugging, a <literal>flush</literal> property "
+"(by default true) to disable flushing a <literal>POP3</literal> mailbox "
+"after successfullying delivering a message to your MDB and a <literal>port</"
+"literal> property to override the default TCP port. Beware that the api for "
+"this may be altered as changes make there way into JBoss AS."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:141
+#, no-c-format
+msgid ""
+"If you aren't using JBoss AS you can still use <literal>mail-ra.rar</"
+"literal> (included with Seam in the mail directory), or you may find your "
+"application server includes a similar adapter."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:147
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:148
+#, no-c-format
+msgid ""
+"To include Email support in your application, include <literal>jboss-seam-"
+"mail.jar</literal> in your WEB-INF/lib directory. If you are using JBoss AS "
+"there is no further configuration needed to use Seam's email support. "
+"Otherwise you need to make sure you have the JavaMail API, an implementation "
+"of the JavaMail API present (the API and impl used in JBoss AS are "
+"distributed with seam as <literal>lib/mail.jar</literal>), and a copy of the "
+"Java Activation Framework (distributed with seam as <literal>lib/activation."
+"jar</literal>."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:151
+#, no-c-format
+msgid ""
+"The Seam Email module requires the use of Facelets as the view technology. "
+"Future versions of the library may also support the use of JSP. "
+"Additionally, it requires the use of the seam-ui package."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:154
+#, no-c-format
+msgid ""
+"The <literal>mailSession</literal> component uses JavaMail to talk to a "
+"'real' SMTP server."
+msgstr ""
+
+#. Tag: literal
+#: Mail.xml:158
+#, no-c-format
+msgid "mailSession"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:159
+#, no-c-format
+msgid ""
+"A JavaMail Session may be available via a JNDI lookup if you are working in "
+"an JEE environment or you can use a Seam configured Session."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:162
+#, no-c-format
+msgid ""
+"The mailSession component's properties are described in more detail in <xref "
+"linkend=\"Built_in_Seam_components-Mail_related_components\"/>."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:166
+#, no-c-format
+msgid "JNDI lookup in JBoss AS"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:167
+#, no-c-format
+msgid ""
+"The JBossAS <literal>deploy/mail-service.xml</literal> configures a JavaMail "
+"session binding into JNDI. The default service configuration will need "
+"altering for your network. <ulink url=\"http://wiki.jboss.org/wiki/Wiki.jsp?"
+"page=JavaMail\">http://wiki.jboss.org/wiki/Wiki.jsp?page=JavaMail</ulink> "
+"describes the service in more detail."
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:170
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"        xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"        xmlns:mail=\"http://jboss.com/products/seam/mail\"&gt;\n"
+"        \n"
+"    &lt;mail:mail-session session-jndi-name=\"java:/Mail\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:171
+#, no-c-format
+msgid ""
+"Here we tell Seam to get the mail session bound to <literal>java:/Mail</"
+"literal> from JNDI."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:177
+#, no-c-format
+msgid "Seam configured Session"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:178
+#, no-c-format
+msgid ""
+"A mail session can be configured via <literal>components.xml</literal>. Here "
+"we tell Seam to use <literal>smtp.example.com</literal> as the smtp server,"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:181
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"        xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"        xmlns:mail=\"http://jboss.com/products/seam/mail\"&gt;\n"
+"        \n"
+"    &lt;mail:mail-session host=\"smtp.example.com\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:189
+#, no-c-format
+msgid "Tags"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:190
+#, no-c-format
+msgid ""
+"Emails are generated using tags in the <literal>http://jboss.com/products/"
+"seam/mail</literal> namespace. Documents should always have the "
+"<literal>message</literal> tag at the root of the message. The message tag "
+"prepares Seam to generate an email."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:193
+#, no-c-format
+msgid ""
+"The standard templating tags of facelets can be used as normal. Inside the "
+"body you can use any JSF tag which doesn't require access to external "
+"resources (stylesheets, javascript)."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:198
+#, no-c-format
+msgid "&lt;m:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:200
+#, no-c-format
+msgid "Root tag of a mail message"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:205
+#, no-c-format
+msgid ""
+"<literal>importance</literal> &mdash; low, normal or high. By default "
+"normal, this sets the importance of the mail message."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:210
+#, no-c-format
+msgid ""
+"<literal>precedence</literal> &mdash; sets the precedence of the message (e."
+"g. bulk)."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:215
+#, no-c-format
+msgid ""
+"<literal>requestReadReceipt</literal> &mdash; by default false, if set, a "
+"read receipt will be request will be added, with the read receipt being sent "
+"to the <literal>From:</literal> address."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:220
+#, no-c-format
+msgid ""
+"<literal>urlBase</literal> &mdash; If set, the value is prepended to the "
+"<literal>requestContextPath</literal> allowing you to use components such as "
+"<literal>&lt;h:graphicImage&gt;</literal> in your emails."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:228
+#, no-c-format
+msgid "&lt;m:from&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:230
+#, no-c-format
+msgid ""
+"Set's the From: address for the email. You can only have one of these per "
+"email."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:235
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the name the email should come from."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:240 Mail.xml:255
+#, no-c-format
+msgid ""
+"<literal>address</literal> &mdash; the email address the email should come "
+"from."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:248
+#, no-c-format
+msgid "&lt;m:replyTo&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:250
+#, no-c-format
+msgid ""
+"Set's the Reply-to: address for the email. You can only have one of these "
+"per email."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:263
+#, no-c-format
+msgid "&lt;m:to&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:265
+#, no-c-format
+msgid ""
+"Add a recipient to the email. Use multiple &lt;m:to&gt; tags for multiple "
+"recipients. This tag can be safely placed inside a repeat tag such as &lt;ui:"
+"repeat&gt;."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:270 Mail.xml:290 Mail.xml:310
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the name of the recipient."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:275 Mail.xml:295 Mail.xml:315
+#, no-c-format
+msgid "<literal>address</literal> &mdash; the email address of the recipient."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:283
+#, no-c-format
+msgid "&lt;m:cc&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:285
+#, no-c-format
+msgid ""
+"Add a cc recipient to the email. Use multiple &lt;m:cc&gt; tags for multiple "
+"ccs. This tag can be safely placed inside a repeat tag such as &lt;ui:"
+"repeat&gt;."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:303
+#, no-c-format
+msgid "&lt;m:bcc&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:305
+#, no-c-format
+msgid ""
+"Add a bcc recipient to the email. Use multiple &lt;m:bcc&gt; tags for "
+"multiple bccs. This tag can be safely placed inside a repeat tag such as &lt;"
+"ui:repeat&gt;."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:323
+#, no-c-format
+msgid "&lt;m:header&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:325
+#, no-c-format
+msgid ""
+"Add a header to the email (e.g. <literal>X-Sent-From: JBoss Seam</literal>"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:330
+#, no-c-format
+msgid ""
+"<literal>name</literal> &mdash; The name of the header to add (e.g. "
+"<literal>X-Sent-From</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:335
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; The value of the header to add (e.g. "
+"<literal>JBoss Seam</literal>)."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:343
+#, no-c-format
+msgid "&lt;m:attachment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:345
+#, no-c-format
+msgid "Add an attachment to the email."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:350
+#, no-c-format
+msgid "<literal>value</literal> &mdash; The file to attach:"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:355
+#, no-c-format
+msgid ""
+"<literal>String</literal> &mdash; A <literal>String</literal> is interpreted "
+"as a path to file within the classpath"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:360
+#, no-c-format
+msgid ""
+"<literal>java.io.File</literal> &mdash; An EL expression can reference a "
+"<literal>File</literal> object"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:365
+#, no-c-format
+msgid ""
+"<literal>java.net.URL</literal> &mdash; An EL expression can reference a "
+"<literal>URL</literal> object"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:370
+#, no-c-format
+msgid ""
+"<literal>java.io.InputStream</literal> &mdash; An EL expression can "
+"reference an <literal>InputStream</literal>. In this case both a "
+"<literal>fileName</literal> and a <literal>contentType</literal> must be "
+"specified."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:375
+#, no-c-format
+msgid ""
+"<literal>byte[]</literal> &mdash; An EL expression can reference an "
+"<literal>byte[]</literal>. In this case both a <literal>fileName</literal> "
+"and a <literal>contentType</literal> must be specified."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:380
+#, no-c-format
+msgid "If the value attribute is ommitted:"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:385
+#, no-c-format
+msgid ""
+"If this tag contains a <literal>&lt;p:document&gt;</literal> tag, the "
+"document described will be generated and attached to the email. A "
+"<literal>fileName</literal> should be specfied."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:390
+#, no-c-format
+msgid ""
+"If this tag contains other JSF tags a HTML document will be generated from "
+"them and attached to the email. A <literal>fileName</literal> should be "
+"specfied."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:397
+#, no-c-format
+msgid ""
+"<literal>fileName</literal> &mdash; Specify the file name to use for the "
+"attached file."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:402
+#, no-c-format
+msgid ""
+"<literal>contentType</literal> &mdash; Specify the MIME type of the attached "
+"file"
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:410
+#, no-c-format
+msgid "&lt;m:subject&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:412
+#, no-c-format
+msgid "Set's the subject for the email."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:418
+#, no-c-format
+msgid "&lt;m:body&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:420
+#, no-c-format
+msgid ""
+"Set's the body for the email. Supports an <literal>alternative</literal> "
+"facet which, if an HTML email is generated can contain alternative text for "
+"a mail reader which doesn't support html."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:425
+#, no-c-format
+msgid ""
+"<literal>type</literal> &mdash; If set to <literal>plain</literal> then a "
+"plain text email will be generated otherwise an HTML email is generated."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Persistence.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Persistence.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Persistence.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,750 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Persistence.xml:10
+#, no-c-format
+msgid "Seam and Object/Relational Mapping"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:11
+#, no-c-format
+msgid ""
+"Seam provides extensive support for the two most popular persistence "
+"architectures for Java: Hibernate3, and the Java Persistence API introduced "
+"with EJB 3.0. Seam's unique state-management architecture allows the most "
+"sophisticated ORM integration of any web application framework."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:15
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:16
+#, no-c-format
+msgid ""
+"Seam grew out of the frustration of the Hibernate team with the "
+"statelessness typical of the previous generation of Java application "
+"architectures. The state management architecture of Seam was originally "
+"designed to solve problems relating to persistence&mdash;in particular "
+"problems associated with <emphasis>optimistic transaction processing</"
+"emphasis>. Scalable online applications always use optimistic transactions. "
+"An atomic (database/JTA) level transaction should not span a user "
+"interaction unless the application is designed to support only a very small "
+"number of concurrent clients. But almost all interesting work involves first "
+"displaying data to a user, and then, slightly later, updating the same data. "
+"So Hibernate was designed to support the idea of a persistence context which "
+"spanned an optimistic transaction."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:19
+#, no-c-format
+msgid ""
+"Unfortunately, the so-called \"stateless\" architectures that preceded Seam "
+"and EJB 3.0 had no construct for representing an optimistic transaction. So, "
+"instead, these architectures provided persistence contexts scoped to the "
+"atomic transaction. Of course, this resulted in many problems for users, and "
+"is the cause of the number one user complaint about Hibernate: the dreaded "
+"<literal>LazyInitializationException</literal>. What we need is a construct "
+"for representing an optimistic transaction in the application tier."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:22
+#, no-c-format
+msgid ""
+"EJB 3.0 recognizes this problem, and introduces the idea of a stateful "
+"component (a stateful session bean) with an <emphasis>extended persistence "
+"context</emphasis> scoped to the lifetime of the component. This is a "
+"partial solution to the problem (and is a useful construct in and of itself) "
+"however there are two problems:"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:27
+#, no-c-format
+msgid ""
+"The lifecycle of the stateful session bean must be managed manually via code "
+"in the web tier (it turns out that this is a subtle problem and much more "
+"difficult in practice than it sounds)."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:32
+#, no-c-format
+msgid ""
+"Propagation of the persistence context between stateful components in the "
+"same optimistic transaction is possible, but tricky."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:37
+#, no-c-format
+msgid ""
+"Seam solves the first problem by providing conversations, and stateful "
+"session bean components scoped to the conversation. (Most conversations "
+"actually represent optimistic transactions in the data layer.) This is "
+"sufficient for many simple applications (such as the Seam booking demo) "
+"where persistence context propagation is not needed. For more complex "
+"applications, with many loosly-interacting components in each conversation, "
+"propagation of the persistence context across components becomes an "
+"important issue. So Seam extends the persistence context management model of "
+"EJB 3.0, to provide conversation-scoped extended persistence contexts."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:43
+#, no-c-format
+msgid "Seam managed transactions"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:44
+#, no-c-format
+msgid ""
+"EJB session beans feature declarative transaction management. The EJB "
+"container is able to start a transaction transparently when the bean is "
+"invoked, and end it when the invocation ends. If we write a session bean "
+"method that acts as a JSF action listener, we can do all the work associated "
+"with that action in one transaction, and be sure that it is committed or "
+"rolled back when we finish processing the action. This is a great feature, "
+"and all that is needed by some Seam applications."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:47
+#, no-c-format
+msgid ""
+"However, there is a problem with this approach. A Seam application may not "
+"perform all data access for a request from a single method call to a session "
+"bean."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:52
+#, no-c-format
+msgid ""
+"The request might require processing by several loosly-coupled components, "
+"each of which is called independently from the web layer. It is common to "
+"see several or even many calls per request from the web layer to EJB "
+"components in Seam."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:57
+#, no-c-format
+msgid "Rendering of the view might require lazy fetching of associations."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:62
+#, no-c-format
+msgid ""
+"The more transactions per request, the more likely we are to encounter "
+"atomicity and isolation problems when our application is processing many "
+"concurrent requests. Certainly, all write operations should occur in the "
+"same transaction!"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:65
+#, no-c-format
+msgid ""
+"Hibernate users developed the <emphasis>\"open session in view\"</emphasis> "
+"pattern to work around this problem. In the Hibernate community, \"open "
+"session in view\" was historically even more important because frameworks "
+"like Spring use transaction-scoped persistence contexts. So rendering the "
+"view would cause <literal>LazyInitializationException</literal>s when "
+"unfetched associations were accessed."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:68
+#, no-c-format
+msgid ""
+"This pattern is usually implemented as a single transaction which spans the "
+"entire request. There are several problems with this implementation, the "
+"most serious being that we can never be sure that a transaction is "
+"successful until we commit it&mdash;but by the time the \"open session in "
+"view\" transaction is committed, the view is fully rendered, and the "
+"rendered response may already have been flushed to the client. How can we "
+"notify the user that their transaction was unsuccessful?"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:71
+#, no-c-format
+msgid ""
+"Seam solves both the transaction isolation problem and the association "
+"fetching problem, while working around the problems with \"open session in "
+"view\". The solution comes in two parts:"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:76
+#, no-c-format
+msgid ""
+"use an extended persistence context that is scoped to the conversation, "
+"instead of to the transaction"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:81
+#, no-c-format
+msgid ""
+"use two transactions per request; the first spans the beginning of the "
+"update model values phase until the end of the invoke application phase; the "
+"second spans the render response phase"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:86
+#, no-c-format
+msgid ""
+"In the next section, we'll tell you how to set up a conversation-scope "
+"persistence context. But first we need to tell you how to enable Seam "
+"transaction management. Note that you can use conversation-scoped "
+"persistence contexts without Seam transaction management, and there are good "
+"reasons to use Seam transaction management even when you're not using Seam-"
+"managed persistence contexts. However, the two facilities were designed to "
+"work together, and work best when used together."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:90
+#, no-c-format
+msgid "Enabling Seam-managed transactions"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:91
+#, no-c-format
+msgid ""
+"To make use of <emphasis>Seam managed transactions</emphasis>, you need to "
+"use <literal>TransactionalSeamPhaseListener</literal> in place of "
+"<literal>SeamPhaseListener</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:94
+#, no-c-format
+msgid ""
+"&lt;lifecycle&gt;\n"
+"     &lt;phase-listener&gt;\n"
+"        org.jboss.seam.jsf.TransactionalSeamPhaseListener\n"
+"    &lt;/phase-listener&gt;\n"
+"&lt;/lifecycle&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:95
+#, no-c-format
+msgid ""
+"Seam transaction management is useful even if you're using EJB 3.0 container-"
+"managed persistence contexts. But it is especially useful if you use Seam "
+"outside a Java EE 5 environment, or in any other case where you would use a "
+"Seam-managed persistence context."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:103
+#, no-c-format
+msgid "Seam-managed persistence contexts"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:104
+#, no-c-format
+msgid ""
+"If you're using Seam outside of a Java EE 5 environment, you can't rely upon "
+"the container to manage the persistence context lifecycle for you. Even if "
+"you are in an EE 5 environment, you might have a complex application with "
+"many loosly coupled components that collaborate together in the scope of a "
+"single conversation, and in this case you might find that propagation of the "
+"persistence context between component is tricky and error-prone."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:107
+#, no-c-format
+msgid ""
+"In either case, you'll need to use a <emphasis>managed persistence context</"
+"emphasis> (for JPA) or a <emphasis>managed session</emphasis> (for "
+"Hibernate) in your components. A Seam-managed persistence context is just a "
+"built-in Seam component that manages an instance of <literal>EntityManager</"
+"literal> or <literal>Session</literal> in the conversation context. You can "
+"inject it with <literal>@In</literal>."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:110
+#, no-c-format
+msgid ""
+"Seam-managed persistence contexts are extremely efficient in a clustered "
+"environment. Seam is able to perform an optimization that EJB 3.0 "
+"specification does not allow containers to use for container-managed "
+"extended persistence contexts. Seam supports transparent failover of "
+"extended persisence contexts, without the need to replicate any persistence "
+"context state between nodes. (We hope to fix this oversight in the next "
+"revision of the EJB spec.)"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:114
+#, no-c-format
+msgid "Using a Seam-managed persistence context with JPA"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:115
+#, no-c-format
+msgid ""
+"Configuring a managed persistence context is easy. In <literal>components."
+"xml</literal>, we can write:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:118
+#, no-c-format
+msgid ""
+"&lt;core:managed-persistence-context name=\"bookingDatabase\" \n"
+"                           auto-create=\"true\"\n"
+"            persistence-unit-jndi-name=\"java:/EntityManagerFactories/"
+"bookingData\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:119
+#, no-c-format
+msgid ""
+"This configuration creates a conversation-scoped Seam component named "
+"<literal>bookingDatabase</literal> that manages the lifecycle of "
+"<literal>EntityManager</literal> instances for the persistence unit "
+"(<literal>EntityManagerFactory</literal> instance) with JNDI name "
+"<literal>java:/EntityManagerFactories/bookingData</literal>."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:122
+#, no-c-format
+msgid ""
+"Of course, you need to make sure that you have bound the "
+"<literal>EntityManagerFactory</literal> into JNDI. In JBoss, you can do this "
+"by adding the following property setting to <literal>persistence.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:125
+#, no-c-format
+msgid ""
+"&lt;property name=\"jboss.entity.manager.factory.jndi.name\" \n"
+"          value=\"java:/EntityManagerFactories/bookingData\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:126
+#, no-c-format
+msgid "Now we can have our <literal>EntityManager</literal> injected using:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:129
+#, no-c-format
+msgid "@In EntityManager bookingDatabase;"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:133
+#, no-c-format
+msgid "Using a Seam-managed Hibernate session"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:134
+#, no-c-format
+msgid ""
+"Seam-managed Hibernate sessions are similar. In <literal>components.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:137
+#, no-c-format
+msgid ""
+"&lt;core:hibernate-session-factory name=\"hibernateSessionFactory\"/&gt;\n"
+"\n"
+"&lt;core:managed-hibernate-session name=\"bookingDatabase\" \n"
+"                         auto-create=\"true\"\n"
+"           session-factory-jndi-name=\"java:/bookingSessionFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:138
+#, no-c-format
+msgid ""
+"Where <literal>java:/bookingSessionFactory</literal> is the name of the "
+"session factory specified in <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:141
+#, no-c-format
+msgid ""
+"&lt;session-factory name=\"java:/bookingSessionFactory\"&gt;\n"
+"    &lt;property name=\"transaction.flush_before_completion\"&gt;true&lt;/"
+"property&gt;\n"
+"    &lt;property name=\"connection.release_mode\"&gt;after_statement&lt;/"
+"property&gt;\n"
+"    &lt;property name=\"transaction.manager_lookup_class\"&gt;\n"
+"        org.hibernate.transaction.JBossTransactionManagerLookup\n"
+"    &lt;/property&gt;\n"
+"    &lt;property name=\"transaction.factory_class\"&gt;\n"
+"        org.hibernate.transaction.JTATransactionFactory\n"
+"    &lt;/property&gt;\n"
+"    &lt;property name=\"connection.datasource\"&gt;java:/"
+"bookingDatasource&lt;/property&gt;\n"
+"    ...\n"
+"&lt;/session-factory&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:142
+#, no-c-format
+msgid ""
+"Note that Seam does not flush the session, so you should always enable "
+"<literal>hibernate.transaction.flush_before_completion</literal> to ensure "
+"that the session is automatically flushed before the JTA transaction commits."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:145
+#, no-c-format
+msgid ""
+"We can now have a managed Hibernate <literal>Session</literal> injected into "
+"our JavaBean components using the following code:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:148
+#, no-c-format
+msgid "@In Session bookingDatabase;"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:152
+#, no-c-format
+msgid "Seam-managed persistence contexts and atomic conversations"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:153
+#, no-c-format
+msgid ""
+"Persistence contexts scoped to the conversation allows you to program "
+"optimistic transactions that span multiple requests to the server without "
+"the need to use the <literal>merge()</literal> operation , without the need "
+"to re-load data at the beginning of each request, and without the need to "
+"wrestle with the <literal>LazyInitializationException</literal> or "
+"<literal>NonUniqueObjectException</literal>."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:156
+#, no-c-format
+msgid ""
+"As with any optimistic transaction management, transaction isolation and "
+"consistency can be achieved via use of optimistic locking. Fortunately, both "
+"Hibernate and EJB 3.0 make it very easy to use optimistic locking, by "
+"providing the <literal>@Version</literal> annotation."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:159
+#, no-c-format
+msgid ""
+"By default, the persistence context is flushed (synchronized with the "
+"database) at the end of each transaction. This is sometimes the desired "
+"behavior. But very often, we would prefer that all changes are held in "
+"memory and only written to the database when the conversation ends "
+"successfully. This allows for truly atomic conversations. As the result of a "
+"truly stupid and shortsighted decision by certain non-JBoss, non-Sun and non-"
+"Sybase members of the EJB 3.0 expert group, there is currently no simple, "
+"usable and portable way to implement atomic conversations using EJB 3.0 "
+"persistence. However, Hibernate provides this feature as a vendor extension "
+"to the <literal>FlushModeType</literal>s defined by the specification, and "
+"it is our expectation that other vendors will soon provide a similar "
+"extension."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:162
+#, no-c-format
+msgid ""
+"Seam lets you specify <literal>FlushModeType.MANUAL</literal> when beginning "
+"a conversation. Currently, this works only when Hibernate is the underlying "
+"persistence provider, but we plan to support other equivalent vendor "
+"extensions."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:165
+#, no-c-format
+msgid ""
+"@In EntityManager em; //a Seam-managed persistence context\n"
+"\n"
+"@Begin(flushMode=MANUAL)\n"
+"public void beginClaimWizard() {\n"
+"    claim = em.find(Claim.class, claimId);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:166
+#, no-c-format
+msgid ""
+"Now, the <literal>claim</literal> object remains managed by the persistence "
+"context for the rest ot the conversation. We can make changes to the claim:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:169
+#, no-c-format
+msgid ""
+"public void addPartyToClaim() {\n"
+"    Party party = ....;\n"
+"    claim.addParty(party);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:170
+#, no-c-format
+msgid ""
+"But these changes will not be flushed to the database until we explicitly "
+"force the flush to occur:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:173
+#, no-c-format
+msgid ""
+"@End\n"
+"public void commitClaim() {\n"
+"    em.flush();\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:179
+#, no-c-format
+msgid "Using the JPA \"delegate\""
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:180
+#, no-c-format
+msgid ""
+"The <literal>EntityManager</literal> interface lets you access a vendor-"
+"specific API via the <literal>getDelegate()</literal> method. Naturally, the "
+"most interesting vendor is Hibernate, and the most powerful delegate "
+"interface is <literal>org.hibernate.Session</literal>. You'd be nuts to use "
+"anything else. Trust me, I'm not biased at all."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:183
+#, no-c-format
+msgid ""
+"But regardless of whether you're using Hibernate (genius!) or something else "
+"(masochist, or just not very bright), you'll almost certainly want to use "
+"the delegate in your Seam components from time to time. One approach would "
+"be the following:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:186
+#, no-c-format
+msgid ""
+"@In EntityManager entityManager;\n"
+"\n"
+"@Create\n"
+"public void init() {\n"
+"    ( (Session) entityManager.getDelegate() ).enableFilter(\"currentVersions"
+"\");\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:187
+#, no-c-format
+msgid ""
+"But typecasts are unquestionably the ugliest syntax in the Java language, so "
+"most people avoid them whenever possible. Here's a different way to get at "
+"the delegate. First, add the following line to <literal>components.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:190
+#, no-c-format
+msgid ""
+"&lt;factory name=\"session\" \n"
+"         scope=\"STATELESS\" \n"
+"         auto-create=\"true\" \n"
+"         value=\"#{entityManager.delegate}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:191
+#, no-c-format
+msgid "Now we can inject the session directly:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:194
+#, no-c-format
+msgid ""
+"@In Session session;\n"
+"\n"
+"@Create\n"
+"public void init() {\n"
+"    session.enableFilter(\"currentVersions\");\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:198
+#, no-c-format
+msgid "Using EL in EJB-QL/HQL"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:199
+#, no-c-format
+msgid ""
+"Seam proxies the <literal>EntityManager</literal> or <literal>Session</"
+"literal> object whenever you use a Seam-managed persistence context or "
+"inject a container managed persistence context using "
+"<literal>@PersistenceContext</literal>. This lets you use EL expressions in "
+"your query strings, safely and efficiently. For example, this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:202
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=#{user.username}\")\n"
+"         .getSingleResult();"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:203
+#, no-c-format
+msgid "is equivalent to:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:206
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getSingleResult();"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:207
+#, no-c-format
+msgid "Of course, you should never, ever write it like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:210
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=\" + user.getUsername"
+"()) //BAD!\n"
+"         .getSingleResult();"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:211
+#, no-c-format
+msgid "(It is inefficient and vulnerable to SQL injection attacks.)"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:217
+#, no-c-format
+msgid "Using Hibernate filters"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:218
+#, no-c-format
+msgid ""
+"The coolest, and most unique, feature of Hibernate is <emphasis>filters</"
+"emphasis>. Filters let you provide a restricted view of the data in the "
+"database. You can find out more about filters in the Hibernate "
+"documentation. But we thought we'd mention an easy way to incorporate "
+"filters into a Seam application, one that works especially well with the "
+"Seam Application Framework."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:221
+#, no-c-format
+msgid ""
+"Seam-managed persistence contexts may have a list of filters defined, which "
+"will be enabled whenever an <literal>EntityManager</literal> or Hibernate "
+"<literal>Session</literal> is first created. (Of course, they may only be "
+"used when Hibernate is the underlying persistence provider.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:224
+#, no-c-format
+msgid ""
+"&lt;core:filter name=\"regionFilter\"&gt;\n"
+"    &lt;core:name&gt;region&lt;/core:name&gt;\n"
+"    &lt;core:parameters&gt;\n"
+"        &lt;key&gt;regionCode&lt;/key&gt;\n"
+"        &lt;value&gt;#{region.code}&lt;/value&gt;\n"
+"    &lt;/core:parameters&gt;\n"
+"&lt;/core:filter&gt;\n"
+"\n"
+"&lt;core:filter name=\"currentFilter\"&gt;\n"
+"    &lt;core:name&gt;current&lt;/core:name&gt;\n"
+"    &lt;core:parameters&gt;\n"
+"        &lt;key&gt;date&lt;/key&gt;\n"
+"        &lt;value&gt;#{currentDate}&lt;/value&gt;\n"
+"    &lt;/core:parameters&gt;\n"
+"&lt;/core:filter&gt;\n"
+"\n"
+"&lt;core:managed-persistence-context name=\"personDatabase\"\n"
+"    persistence-unit-jndi-name=\"java:/EntityManagerFactories/personDatabase"
+"\"&gt;\n"
+"    &lt;core:filters&gt;\n"
+"        &lt;value&gt;#{regionFilter}&lt;/value&gt;\n"
+"        &lt;value&gt;#{currentFilter}&lt;/value&gt;\n"
+"    &lt;/core:filters&gt;\n"
+"&lt;/core:managed-persistence-context&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Remoting.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Remoting.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Remoting.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1458 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Remoting.xml:10
+#, no-c-format
+msgid "Remoting"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:11
+#, no-c-format
+msgid ""
+"Seam provides a convenient method of remotely accessing components from a "
+"web page, using AJAX (Asynchronous Javascript and XML). The framework for "
+"this functionality is provided with almost no up-front development effort - "
+"your components only require simple annotating to become accessible via "
+"AJAX. This chapter describes the steps required to build an AJAX-enabled web "
+"page, then goes on to explain the features of the Seam Remoting framework in "
+"more detail."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:14 Remoting.xml:296
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:15
+#, no-c-format
+msgid ""
+"To use remoting, the Seam Resource servlet must first be configured in your "
+"<literal>web.xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:18
+#, no-c-format
+msgid ""
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"  &lt;/servlet&gt;\n"
+"\n"
+"  &lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"  &lt;/servlet-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:19
+#, no-c-format
+msgid ""
+"The next step is to import the necessary Javascript into your web page. "
+"There are a minimum of two scripts that must be imported. The first one "
+"contains all the client-side framework code that enables remoting "
+"functionality:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:22
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/resource/"
+"remote.js\"&gt;&lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:23
+#, no-c-format
+msgid ""
+"The second script contains the stubs and type definitions for the components "
+"you wish to call. It is generated dynamically based on the local interface "
+"of your components, and includes type definitions for all of the classes "
+"that can be used to call the remotable methods of the interface. The name of "
+"the script reflects the name of your component. For example, if you have a "
+"stateless session bean annotated with <literal>@Name(\"customerAction\")</"
+"literal>, then your script tag should look like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:26
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?customerAction\"&gt;\n"
+"      &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:27
+#, no-c-format
+msgid ""
+"If you wish to access more than one component from the same page, then "
+"include them all as parameters of your script tag:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:30
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" \n"
+"      src=\"seam/resource/remoting/interface.js?customerAction&amp;"
+"accountAction\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:31
+#, no-c-format
+msgid "The \"Seam\" object"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:32
+#, no-c-format
+msgid ""
+"Client-side interaction with your components is all performed via the "
+"<literal>Seam</literal> Javascript object. This object is defined in "
+"<literal>remote.js</literal>, and you'll be using it to make asynchronous "
+"calls against your component. It is split into two areas of functionality; "
+"<literal>Seam.Component</literal> contains methods for working with "
+"components and <literal>Seam.Remoting</literal> contains methods for "
+"executing remote requests. The easiest way to become familiar with this "
+"object is to start with a simple example."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:35
+#, no-c-format
+msgid "A Hello World example"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:36
+#, no-c-format
+msgid ""
+"Let's step through a simple example to see how the <literal>Seam</literal> "
+"object works. First of all, let's create a new Seam component called "
+"<literal>helloAction</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:39
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"  @Name(\"helloAction\")\n"
+"  public class HelloAction implements HelloLocal {\n"
+"    public String sayHello(String name) {\n"
+"      return \"Hello, \" + name;\n"
+"    }\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:40
+#, no-c-format
+msgid ""
+"You also need to create a local interface for our new component - take "
+"special note of the <literal>@WebRemote</literal> annotation, as it's "
+"required to make our method accessible via remoting:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:43
+#, no-c-format
+msgid ""
+"@Local\n"
+"  public interface HelloLocal {\n"
+"    @WebRemote\n"
+"    public String sayHello(String name);\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:44
+#, no-c-format
+msgid ""
+"That's all the server-side code we need to write. Now for our web page - "
+"create a new page and import the following scripts:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:47
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/resource/"
+"remote.js\"&gt;&lt;/script&gt;\n"
+"  &lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?helloAction\"&gt;&lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:48
+#, no-c-format
+msgid ""
+"To make this a fully interactive user experience, let's add a button to our "
+"page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:51
+#, no-c-format
+msgid ""
+"&lt;button onclick=\"javascript:sayHello()\"&gt;Say Hello&lt;/button&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:52
+#, no-c-format
+msgid ""
+"We'll also need to add some more script to make our button actually do "
+"something when it's clicked:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:55
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\"&gt;\n"
+"    //&lt;![CDATA[\n"
+"\n"
+"    function sayHello() {\n"
+"      var name = prompt(\"What is your name?\");\n"
+"      Seam.Component.getInstance(\"helloAction\").sayHello(name, "
+"sayHelloCallback);\n"
+"    }\n"
+"\n"
+"    function sayHelloCallback(result) {\n"
+"      alert(result);\n"
+"    }\n"
+"\n"
+"    // ]]&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:56
+#, no-c-format
+msgid ""
+"We're done! Deploy your application and browse to your page. Click the "
+"button, and enter a name when prompted. A message box will display the hello "
+"message confirming that the call was successful. If you want to save some "
+"time, you'll find the full source code for this Hello World example in "
+"Seam's <literal>/examples/remoting/helloworld</literal> directory."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:59
+#, no-c-format
+msgid ""
+"So what does the code of our script actually do? Let's break it down into "
+"smaller pieces. To start with, you can see from the Javascript code listing "
+"that we have implemented two methods - the first method is responsible for "
+"prompting the user for their name and then making a remote request. Take a "
+"look at the following line:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:62
+#, no-c-format
+msgid ""
+"Seam.Component.getInstance(\"helloAction\").sayHello(name, sayHelloCallback);"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:63
+#, no-c-format
+msgid ""
+"The first section of this line, <literal>Seam.Component.getInstance"
+"(\"helloAction\")</literal> returns a proxy, or \"stub\" for our "
+"<literal>helloAction</literal> component. We can invoke the methods of our "
+"component against this stub, which is exactly what happens with the "
+"remainder of the line: <literal>sayHello(name, sayHelloCallback);</literal>."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:66
+#, no-c-format
+msgid ""
+"What this line of code in its completeness does, is invoke the "
+"<literal>sayHello</literal> method of our component, passing in "
+"<literal>name</literal> as a parameter. The second parameter, "
+"<literal>sayHelloCallback</literal> isn't a parameter of our component's "
+"<literal>sayHello</literal> method, instead it tells the Seam Remoting "
+"framework that once it receives the response to our request, it should pass "
+"it to the <literal>sayHelloCallback</literal> Javascript method. This "
+"callback parameter is entirely optional, so feel free to leave it out if "
+"you're calling a method with a <literal>void</literal> return type or if you "
+"don't care about the result."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:69
+#, no-c-format
+msgid ""
+"The <literal>sayHelloCallback</literal> method, once receiving the response "
+"to our remote request then pops up an alert message displaying the result of "
+"our method call."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:72
+#, no-c-format
+msgid "Seam.Component"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:73
+#, no-c-format
+msgid ""
+"The <literal>Seam.Component</literal> Javascript object provides a number of "
+"client-side methods for working with your Seam components. The two main "
+"methods, <literal>newInstance()</literal> and <literal>getInstance()</"
+"literal> are documented in the following sections however their main "
+"difference is that <literal>newInstance()</literal> will always create a new "
+"instance of a component type, and <literal>getInstance()</literal> will "
+"return a singleton instance."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:76
+#, no-c-format
+msgid "Seam.Component.newInstance()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:77
+#, no-c-format
+msgid ""
+"Use this method to create a new instance of an entity or Javabean component. "
+"The object returned by this method will have the same getter/setter methods "
+"as its server-side counterpart, or alternatively if you wish you can access "
+"its fields directly. Take the following Seam entity component for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:80
+#, no-c-format
+msgid ""
+"@Name(\"customer\")\n"
+"  @Entity\n"
+"  public class Customer implements Serializable\n"
+"  {\n"
+"    private Integer customerId;\n"
+"    private String firstName;\n"
+"    private String lastName;\n"
+"    \n"
+"    @Column public Integer getCustomerId() { \n"
+"      return customerId; \n"
+"    }\n"
+"    \n"
+"    public void setCustomerId(Integer customerId} { \n"
+"      this.customerId = customerId; \n"
+"    }\n"
+"    \n"
+"    @Column public String getFirstName() { \n"
+"      return firstName; \n"
+"    }\n"
+"    \n"
+"    public void setFirstName(String firstName) {\n"
+"      this.firstName = firstName; \n"
+"    }\n"
+"    \n"
+"    @Column public String getLastName() {\n"
+"      return lastName;\n"
+"    }\n"
+"    \n"
+"    public void setLastName(String lastName) {\n"
+"      this.lastName = lastName;\n"
+"    }\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:81
+#, no-c-format
+msgid "To create a client-side Customer you would write the following code:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:84
+#, no-c-format
+msgid "var customer = Seam.Component.newInstance(\"customer\");"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:85
+#, no-c-format
+msgid "Then from here you can set the fields of the customer object:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:88
+#, no-c-format
+msgid ""
+"customer.setFirstName(\"John\");\n"
+"  // Or you can set the fields directly\n"
+"  customer.lastName = \"Smith\";"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:89
+#, no-c-format
+msgid "Seam.Component.getInstance()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:90
+#, no-c-format
+msgid ""
+"The <literal>getInstance()</literal> method is used to get a reference to a "
+"Seam session bean component stub, which can then be used to remotely execute "
+"methods against your component. This method returns a singleton for the "
+"specified component, so calling it twice in a row with the same component "
+"name will return the same instance of the component."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:93
+#, no-c-format
+msgid ""
+"To continue our example from before, if we have created a new "
+"<literal>customer</literal> and we now wish to save it, we would pass it to "
+"the <literal>saveCustomer()</literal> method of our <literal>customerAction</"
+"literal> component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:96
+#, no-c-format
+msgid "Seam.Component.getInstance(\"customerAction\").saveCustomer(customer);"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:97
+#, no-c-format
+msgid "Seam.Component.getComponentName()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:98
+#, no-c-format
+msgid ""
+"Passing an object into this method will return its component name if it is a "
+"component, or <literal>null</literal> if it is not."
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:101
+#, no-c-format
+msgid ""
+"if (Seam.Component.getComponentName(instance) == \"customer\")\n"
+"    alert(\"Customer\");\n"
+"  else if (Seam.Component.getComponentName(instance) == \"staff\")\n"
+"    alert(\"Staff member\");"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:102
+#, no-c-format
+msgid "Seam.Remoting"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:103
+#, no-c-format
+msgid ""
+"Most of the client side functionality for Seam Remoting is contained within "
+"the <literal>Seam.Remoting</literal> object. While you shouldn't need to "
+"directly call most of its methods, there are a couple of important ones "
+"worth mentioning."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:106
+#, no-c-format
+msgid "Seam.Remoting.createType()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:107
+#, no-c-format
+msgid ""
+"If your application contains or uses Javabean classes that aren't Seam "
+"components, you may need to create these types on the client side to pass as "
+"parameters into your component method. Use the <literal>createType()</"
+"literal> method to create an instance of your type. Pass in the fully "
+"qualified Java class name as a parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:110
+#, no-c-format
+msgid "var widget = Seam.Remoting.createType(\"com.acme.widgets.MyWidget\");"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:111
+#, no-c-format
+msgid "Seam.Remoting.getTypeName()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:112
+#, no-c-format
+msgid ""
+"This method is the equivalent of <literal>Seam.Component.getComponentName()</"
+"literal> but for non-component types. It will return the name of the type "
+"for an object instance, or <literal>null</literal> if the type is not known. "
+"The name is the fully qualified name of the type's Java class."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:115
+#, no-c-format
+msgid "Client Interfaces"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:116
+#, no-c-format
+msgid ""
+"In the configuration section above, the interface, or \"stub\" for our "
+"component is imported into our page via <literal>seam/resource/remoting/"
+"interface.js</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:119
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?customerAction\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:120
+#, no-c-format
+msgid ""
+"By including this script in our page, the interface definitions for our "
+"component, plus any other components or types that are required to execute "
+"the methods of our component are generated and made available for the "
+"remoting framework to use."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:123
+#, no-c-format
+msgid ""
+"There are two types of client stub that can be generated, \"executable\" "
+"stubs and \"type\" stubs. Executable stubs are behavioural, and are used to "
+"execute methods against your session bean components, while type stubs "
+"contain state and represent the types that can be passed in as parameters or "
+"returned as a result."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:126
+#, no-c-format
+msgid ""
+"The type of client stub that is generated depends on the type of your Seam "
+"component. If the component is a session bean, then an executable stub will "
+"be generated, otherwise if it's an entity or JavaBean, then a type stub will "
+"be generated. There is one exception to this rule; if your component is a "
+"JavaBean (ie it is not a session bean nor an entity bean) and any of its "
+"methods are annotated with @WebRemote, then an executable stub will be "
+"generated for it instead of a type stub. This allows you to use remoting to "
+"call methods of your JavaBean components in a non-EJB environment where you "
+"don't have access to session beans."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:130
+#, no-c-format
+msgid "The Context"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:131
+#, no-c-format
+msgid ""
+"The Seam Remoting Context contains additional information which is sent and "
+"received as part of a remoting request/response cycle. At this stage it only "
+"contains the conversation ID but may be expanded in the future."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:134
+#, no-c-format
+msgid "Setting and reading the Conversation ID"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:136
+#, no-c-format
+msgid ""
+"If you intend on using remote calls within the scope of a conversation then "
+"you need to be able to read or set the conversation ID in the Seam Remoting "
+"Context. To read the conversation ID after making a remote request call "
+"<literal>Seam.Remoting.getContext().getConversationId()</literal>. To set "
+"the conversation ID before making a request, call <literal>Seam.Remoting."
+"getContext().setConversationId()</literal>."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:139
+#, no-c-format
+msgid ""
+"If the conversation ID hasn't been explicitly set with <literal>Seam."
+"Remoting.getContext().setConversationId()</literal>, then it will be "
+"automatically assigned the first valid conversation ID that is returned by "
+"any remoting call. If you are working with multiple conversations within "
+"your page, then you may need to explicitly set the conversation ID before "
+"each call. If you are working with just a single conversation, then you "
+"don't need to do anything special."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:145
+#, no-c-format
+msgid "Batch Requests"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:146
+#, no-c-format
+msgid ""
+"Seam Remoting allows multiple component calls to be executed within a single "
+"request. It is recommended that this feature is used wherever it is "
+"appropriate to reduce network traffic."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:149
+#, no-c-format
+msgid ""
+"The method <literal>Seam.Remoting.startBatch()</literal> will start a new "
+"batch, and any component calls executed after starting a batch are queued, "
+"rather than being sent immediately. When all the desired component calls "
+"have been added to the batch, the <literal>Seam.Remoting.executeBatch()</"
+"literal> method will send a single request containing all of the queued "
+"calls to the server, where they will be executed in order. After the calls "
+"have been executed, a single response containining all return values will be "
+"returned to the client and the callback functions (if provided) triggered in "
+"the same order as execution."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:152
+#, no-c-format
+msgid ""
+"If you start a new batch via the <literal>startBatch()</literal> method but "
+"then decide you don't want to send it, the <literal>Seam.Remoting.cancelBatch"
+"()</literal> method will discard any calls that were queued and exit the "
+"batch mode."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:155
+#, no-c-format
+msgid ""
+"To see an example of a batch being used, take a look at <literal>/examples/"
+"remoting/chatroom</literal>."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:159
+#, no-c-format
+msgid "Working with Data types"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:160
+#, no-c-format
+msgid "Primitives / Basic Types"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:161
+#, no-c-format
+msgid ""
+"This section describes the support for basic data types. On the server side "
+"these values are generally compatible with either their primitive type or "
+"their corresponding wrapper class."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:164
+#, no-c-format
+msgid "String"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:165
+#, no-c-format
+msgid ""
+"Simply use Javascript String objects when setting String parameter values."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:168
+#, no-c-format
+msgid "Number"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:169
+#, no-c-format
+msgid ""
+"There is support for all number types supported by Java. On the client side, "
+"number values are always serialized as their String representation and then "
+"on the server side they are converted to the correct destination type. "
+"Conversion into either a primitive or wrapper type is supported for "
+"<literal>Byte</literal>, <literal>Double</literal>, <literal>Float</"
+"literal>, <literal>Integer</literal>, <literal>Long</literal> and "
+"<literal>Short</literal> types."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:172
+#, no-c-format
+msgid "Boolean"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:173
+#, no-c-format
+msgid ""
+"Booleans are represented client side by Javascript Boolean values, and "
+"server side by a Java boolean."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:176
+#, no-c-format
+msgid "JavaBeans"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:177
+#, no-c-format
+msgid ""
+"In general these will be either Seam entity or JavaBean components, or some "
+"other non-component class. Use the appropriate method (either <literal>Seam."
+"Component.newInstance()</literal> for Seam components or <literal>Seam."
+"Remoting.createType()</literal> for everything else) to create a new "
+"instance of the object."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:180
+#, no-c-format
+msgid ""
+"It is important to note that only objects that are created by either of "
+"these two methods should be used as parameter values, where the parameter is "
+"not one of the other valid types mentioned anywhere else in this section. In "
+"some situations you may have a component method where the exact parameter "
+"type cannot be determined, such as:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:183
+#, no-c-format
+msgid ""
+"@Name(\"myAction\")\n"
+"  public class MyAction implements MyActionLocal {\n"
+"    public void doSomethingWithObject(Object obj) {\n"
+"      // code\n"
+"    }\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:184
+#, no-c-format
+msgid ""
+"In this case you might want to pass in an instance of your "
+"<literal>myWidget</literal> component, however the interface for "
+"<literal>myAction</literal> won't include <literal>myWidget</literal> as it "
+"is not directly referenced by any of its methods. To get around this, "
+"<literal>MyWidget</literal> needs to be explicitly imported:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:187
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?myAction&amp;myWidget\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:188
+#, no-c-format
+msgid ""
+"This will then allow a <literal>myWidget</literal> object to be created with "
+"<literal>Seam.Component.newInstance(\"myWidget\")</literal>, which can then "
+"be passed to <literal>myAction.doSomethingWithObject()</literal>."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:191
+#, no-c-format
+msgid "Dates and Times"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:192
+#, no-c-format
+msgid ""
+"Date values are serialized into a String representation that is accurate to "
+"the millisecond. On the client side, use a Javascript Date object to work "
+"with date values. On the server side, use any <literal>java.util.Date</"
+"literal> (or descendent, such as <literal>java.sql.Date</literal> or "
+"<literal>java.sql.Timestamp</literal> class."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:195
+#, no-c-format
+msgid "Enums"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:196
+#, no-c-format
+msgid ""
+"On the client side, enums are treated the same as Strings. When setting the "
+"value for an enum parameter, simply use the String representation of the "
+"enum. Take the following component as an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:199
+#, no-c-format
+msgid ""
+"@Name(\"paintAction\")\n"
+"  public class paintAction implements paintLocal {\n"
+"    public enum Color {red, green, blue, yellow, orange, purple};\n"
+"\n"
+"    public void paint(Color color) {\n"
+"      // code\n"
+"    }    \n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:200
+#, no-c-format
+msgid ""
+"To call the <literal>paint()</literal> method with the color <literal>red</"
+"literal>, pass the parameter value as a String literal:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:203
+#, no-c-format
+msgid "Seam.Component.getInstance(\"paintAction\").paint(\"red\");"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:204
+#, no-c-format
+msgid ""
+"The inverse is also true - that is, if a component method returns an enum "
+"parameter (or contains an enum field anywhere in the returned object graph) "
+"then on the client-side it will be represented as a String."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:207
+#, no-c-format
+msgid "Collections"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:208
+#, no-c-format
+msgid "Bags"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:209
+#, no-c-format
+msgid ""
+"Bags cover all collection types including arrays, collections, lists, sets, "
+"(but excluding Maps - see the next section for those), and are implemented "
+"client-side as a Javascript array. When calling a component method that "
+"accepts one of these types as a parameter, your parameter should be a "
+"Javascript array. If a component method returns one of these types, then the "
+"return value will also be a Javascript array. The remoting framework is "
+"clever enough on the server side to convert the bag to an appropriate type "
+"for the component method call."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:212
+#, no-c-format
+msgid "Maps"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:213
+#, no-c-format
+msgid ""
+"As there is no native support for Maps within Javascript, a simple Map "
+"implementation is provided with the Seam Remoting framework. To create a Map "
+"which can be used as a parameter to a remote call, create a new "
+"<literal>Seam.Remoting.Map</literal> object:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:216
+#, no-c-format
+msgid "var map = new Seam.Remoting.Map();"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:217
+#, no-c-format
+msgid ""
+"This Javascript implementation provides basic methods for working with Maps: "
+"<literal>size()</literal>, <literal>isEmpty()</literal>, <literal>keySet()</"
+"literal>, <literal>values()</literal>, <literal>get(key)</literal>, "
+"<literal>put(key, value)</literal>, <literal>remove(key)</literal> and "
+"<literal>contains(key)</literal>. Each of these methods are equivalent to "
+"their Java counterpart. Where the method returns a collection, such as "
+"<literal>keySet()</literal> and <literal>values()</literal>, a Javascript "
+"Array object will be returned that contains the key or value objects "
+"(respectively)."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:220
+#, no-c-format
+msgid "Debugging"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:221
+#, no-c-format
+msgid ""
+"To aid in tracking down bugs, it is possible to enable a debug mode which "
+"will display the contents of all the packets send back and forth between the "
+"client and server in a popup window. To enable debug mode, either execute "
+"the <literal>setDebug()</literal> method in Javascript:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:224
+#, no-c-format
+msgid "Seam.Remoting.setDebug(true);"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:225
+#, no-c-format
+msgid "Or configure it via components.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:228
+#, no-c-format
+msgid "&lt;remoting:remoting debug=\"true\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:229
+#, no-c-format
+msgid ""
+"To turn off debugging, call <literal>setDebug(false)</literal>. If you want "
+"to write your own messages to the debug log, call <literal>Seam.Remoting.log"
+"(message)</literal>."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:233
+#, no-c-format
+msgid "The Loading Message"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:234
+#, no-c-format
+msgid ""
+"The default loading message that appears in the top right corner of the "
+"screen can be modified, its rendering customised or even turned off "
+"completely."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:237
+#, no-c-format
+msgid "Changing the message"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:238
+#, no-c-format
+msgid ""
+"To change the message from the default \"Please Wait...\" to something "
+"different, set the value of <literal>Seam.Remoting.loadingMessage</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:241
+#, no-c-format
+msgid "Seam.Remoting.loadingMessage = \"Loading...\";"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:243
+#, no-c-format
+msgid "Hiding the loading message"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:244
+#, no-c-format
+msgid ""
+"To completely suppress the display of the loading message, override the "
+"implementation of <literal>displayLoadingMessage()</literal> and "
+"<literal>hideLoadingMessage()</literal> with functions that instead do "
+"nothing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:247
+#, no-c-format
+msgid ""
+"// don't display the loading indicator\n"
+"  Seam.Remoting.displayLoadingMessage = function() {};\n"
+"  Seam.Remoting.hideLoadingMessage = function() {};"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:248
+#, no-c-format
+msgid "A Custom Loading Indicator"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:249
+#, no-c-format
+msgid ""
+"It is also possible to override the loading indicator to display an animated "
+"icon, or anything else that you want. To do this override the "
+"<literal>displayLoadingMessage()</literal> and <literal>hideLoadingMessage()"
+"</literal> messages with your own implementation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:252
+#, no-c-format
+msgid ""
+"Seam.Remoting.displayLoadingMessage = function() {\n"
+"    // Write code here to display the indicator\n"
+"  };\n"
+"  \n"
+"  Seam.Remoting.hideLoadingMessage = function() {\n"
+"    // Write code here to hide the indicator\n"
+"  };"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:253
+#, no-c-format
+msgid "Controlling what data is returned"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:254
+#, no-c-format
+msgid ""
+"When a remote method is executed, the result is serialized into an XML "
+"response that is returned to the client. This response is then unmarshaled "
+"by the client into a Javascript object. For complex types (i.e. Javabeans) "
+"that include references to other objects, all of these referenced objects "
+"are also serialized as part of the response. These objects may reference "
+"other objects, which may reference other objects, and so forth. If left "
+"unchecked, this object \"graph\" could potentially be enormous, depending on "
+"what relationships exist between your objects. And as a side issue (besides "
+"the potential verbosity of the response), you might also wish to prevent "
+"sensitive information from being exposed to the client."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:257
+#, no-c-format
+msgid ""
+"Seam Remoting provides a simple means to \"constrain\" the object graph, by "
+"specifying the <literal>exclude</literal> field of the remote method's "
+"<literal>@WebRemote</literal> annotation. This field accepts a String array "
+"containing one or more paths specified using dot notation. When invoking a "
+"remote method, the objects in the result's object graph that match these "
+"paths are excluded from the serialized result packet."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:260
+#, no-c-format
+msgid ""
+"For all our examples, we'll use the following <literal>Widget</literal> "
+"class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:263
+#, no-c-format
+msgid ""
+"@Name(\"widget\")\n"
+"public class Widget\n"
+"{\n"
+"  private String value;\n"
+"  private String secret;\n"
+"  private Widget child;\n"
+"  private Map&lt;String,Widget&gt; widgetMap;\n"
+"  private List&lt;Widget&gt; widgetList;\n"
+"  \n"
+"  // getters and setters for all fields\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:264
+#, no-c-format
+msgid "Constraining normal fields"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:265
+#, no-c-format
+msgid ""
+"If your remote method returns an instance of <literal>Widget</literal>, but "
+"you don't want to expose the <literal>secret</literal> field because it "
+"contains sensitive information, you would constrain it like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:268
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:269
+#, no-c-format
+msgid ""
+"The value \"secret\" refers to the <literal>secret</literal> field of the "
+"returned object. Now, suppose that we don't care about exposing this "
+"particular field to the client. Instead, notice that the <literal>Widget</"
+"literal> value that is returned has a field <literal>child</literal> that is "
+"also a <literal>Widget</literal>. What if we want to hide the "
+"<literal>child</literal>'s <literal>secret</literal> value instead? We can "
+"do this by using dot notation to specify this field's path within the "
+"result's object graph:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:272
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"child.secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:273
+#, no-c-format
+msgid "Constraining Maps and Collections"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:274
+#, no-c-format
+msgid ""
+"The other place that objects can exist within an object graph are within a "
+"<literal>Map</literal> or some kind of collection (<literal>List</literal>, "
+"<literal>Set</literal>, <literal>Array</literal>, etc). Collections are "
+"easy, and are treated like any other field. For example, if our "
+"<literal>Widget</literal> contained a list of other <literal>Widget</"
+"literal>s in its <literal>widgetList</literal> field, to constrain the "
+"<literal>secret</literal> field of the <literal>Widget</literal>s in this "
+"list the annotation would look like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:277
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetList.secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:278
+#, no-c-format
+msgid ""
+"To constrain a <literal>Map</literal>'s key or value, the notation is "
+"slightly different. Appending <literal>[key]</literal> after the "
+"<literal>Map</literal>'s field name will constrain the <literal>Map</"
+"literal>'s key object values, while <literal>[value]</literal> will "
+"constrain the value object values. The following example demonstrates how "
+"the values of the <literal>widgetMap</literal> field have their "
+"<literal>secret</literal> field constrained:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:281
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetMap[value].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:282
+#, no-c-format
+msgid "Constraining objects of a specific type"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:283
+#, no-c-format
+msgid ""
+"There is one last notation that can be used to constrain the fields of a "
+"type of object no matter where in the result's object graph it appears. This "
+"notation uses either the name of the component (if the object is a Seam "
+"component) or the fully qualified class name (only if the object is not a "
+"Seam component) and is expressed using square brackets:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:286
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"[widget].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:287
+#, no-c-format
+msgid "Combining Constraints"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:288
+#, no-c-format
+msgid ""
+"Constraints can also be combined, to filter objects from multiple paths "
+"within the object graph:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:291
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetList.secret\", \"widgetMap[value].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:292
+#, no-c-format
+msgid "JMS Messaging"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:293
+#, no-c-format
+msgid ""
+"Seam Remoting provides experimental support for JMS Messaging. This section "
+"describes the JMS support that is currently implemented, but please note "
+"that this may change in the future. It is currently not recommended that "
+"this feature is used within a production environment."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:297
+#, no-c-format
+msgid ""
+"Before you can subscribe to a JMS topic, you must first configure a list of "
+"the topics that can be subscribed to by Seam Remoting. List the topics under "
+"<literal>org.jboss.seam.remoting.messaging.subscriptionRegistry."
+"allowedTopics</literal> in <literal>seam.properties</literal>, <literal>web."
+"xml</literal> or <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:300 Remoting.xml:333
+#, no-c-format
+msgid "&lt;remoting:remoting poll-timeout=\"5\" poll-interval=\"1\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:301
+#, no-c-format
+msgid "Subscribing to a JMS Topic"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:302
+#, no-c-format
+msgid "The following example demonstrates how to subscribe to a JMS Topic:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:305
+#, no-c-format
+msgid ""
+"function subscriptionCallback(message)\n"
+"  {\n"
+"    if (message instanceof Seam.Remoting.TextMessage)\n"
+"      alert(\"Received message: \" + message.getText());\n"
+"  }        \n"
+"        \n"
+"  Seam.Remoting.subscribe(\"topicName\", subscriptionCallback);"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:306
+#, no-c-format
+msgid ""
+"The <literal>Seam.Remoting.subscribe()</literal> method accepts two "
+"parameters, the first being the name of the JMS Topic to subscribe to, the "
+"second being the callback function to invoke when a message is received."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:309
+#, no-c-format
+msgid ""
+"There are two types of messages supported, Text messages and Object "
+"messages. If you need to test for the type of message that is passed to your "
+"callback function you can use the <literal>instanceof</literal> operator to "
+"test whether the message is a <literal>Seam.Remoting.TextMessage</literal> "
+"or <literal>Seam.Remoting.ObjectMessage</literal>. A <literal>TextMessage</"
+"literal> contains the text value in its <literal>text</literal> field (or "
+"alternatively call <literal>getText()</literal> on it), while an "
+"<literal>ObjectMessage</literal> contains its object value in its "
+"<literal>object</literal> field (or call its <literal>getObject()</literal> "
+"method)."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:312
+#, no-c-format
+msgid "Unsubscribing from a Topic"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:313
+#, no-c-format
+msgid ""
+"To unsubscribe from a topic, call <literal>Seam.Remoting.unsubscribe()</"
+"literal> and pass in the topic name:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:316
+#, no-c-format
+msgid "Seam.Remoting.unsubscribe(\"topicName\");"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:317
+#, no-c-format
+msgid "Tuning the Polling Process"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:318
+#, no-c-format
+msgid ""
+"There are two parameters which you can modify to control how polling occurs. "
+"The first one is <literal>Seam.Remoting.pollInterval</literal>, which "
+"controls how long to wait between subsequent polls for new messages. This "
+"parameter is expressed in seconds, and its default setting is 10."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:321
+#, no-c-format
+msgid ""
+"The second parameter is <literal>Seam.Remoting.pollTimeout</literal>, and is "
+"also expressed as seconds. It controls how long a request to the server "
+"should wait for a new message before timing out and sending an empty "
+"response. Its default is 0 seconds, which means that when the server is "
+"polled, if there are no messages ready for delivery then an empty response "
+"will be immediately returned."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:324
+#, no-c-format
+msgid ""
+"Caution should be used when setting a high <literal>pollTimeout</literal> "
+"value; each request that has to wait for a message means that a server "
+"thread is tied up until a message is received, or until the request times "
+"out. If many such requests are being served simultaneously, it could mean a "
+"large number of threads become tied up because of this reason."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:327
+#, no-c-format
+msgid ""
+"It is recommended that you set these options via components.xml, however "
+"they can be overridden via Javascript if desired. The following example "
+"demonstrates how to configure the polling to occur much more aggressively. "
+"You should set these parameters to suitable values for your application:"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:330
+#, no-c-format
+msgid "Via components.xml:"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:334
+#, no-c-format
+msgid "Via JavaScript:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:337
+#, no-c-format
+msgid ""
+"// Only wait 1 second between receiving a poll response and sending the next "
+"poll request.\n"
+"  Seam.Remoting.pollInterval = 1;\n"
+"  \n"
+"  // Wait up to 5 seconds on the server for new messages\n"
+"  Seam.Remoting.pollTimeout = 5;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Security.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Security.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Security.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1676 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Security.xml:10
+#, no-c-format
+msgid "Security"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:11
+#, no-c-format
+msgid ""
+"The Seam Security API is an optional Seam feature that provides "
+"authentication and authorization features for securing both domain and page "
+"resources within your Seam project."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:14
+#, no-c-format
+msgid "Overview"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:15
+#, no-c-format
+msgid "Seam Security provides two different modes of operation:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:20
+#, no-c-format
+msgid ""
+"<emphasis>simplified mode</emphasis> - this mode supports authentication "
+"services and simple role-based security checks."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:25
+#, no-c-format
+msgid ""
+"<emphasis>advanced mode</emphasis> - this mode supports all the same "
+"features as the simplified mode, plus it offers rule-based security checks "
+"using JBoss Rules."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:30
+#, no-c-format
+msgid "Which mode is right for my application?"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:31
+#, no-c-format
+msgid ""
+"That all depends on the requirements of your application. If you have "
+"minimal security requirements, for example if you only wish to restrict "
+"certain pages and actions to users who are logged in, or who belong to a "
+"certain role, then the simplified mode will probably be sufficient. The "
+"advantages of this is a more simplified configuration, significantly less "
+"libraries to include, and a smaller memory footprint."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:34
+#, no-c-format
+msgid ""
+"If on the other hand, your application requires security checks based on "
+"contextual state or complex business rules, then you will require the "
+"features provided by the advanced mode."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:37
+#, no-c-format
+msgid "Requirements"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:38
+#, no-c-format
+msgid ""
+"If using the advanced mode features of Seam Security, the following jar "
+"files are required to be configured as modules in <literal>application.xml</"
+"literal>. If you are using Seam Security in simplified mode, these are "
+"<emphasis>not</emphasis> required:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:43
+#, no-c-format
+msgid "drools-compiler-3.0.5.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:48
+#, no-c-format
+msgid "drools-core-3.0.5.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:53
+#, no-c-format
+msgid "commons-jci-core-1.0-406301.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:58
+#, no-c-format
+msgid "commons-jci-janino-2.4.3.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:63
+#, no-c-format
+msgid "commons-lang-2.1.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:68
+#, no-c-format
+msgid "janino-2.4.3.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:73
+#, no-c-format
+msgid "stringtemplate-2.3b6.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:78
+#, no-c-format
+msgid "antlr-2.7.6.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:83
+#, no-c-format
+msgid "antlr-3.0ea8.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:88
+#, no-c-format
+msgid ""
+"For web-based security, <literal>jboss-seam-ui.jar</literal> must also be "
+"included in the application's war file. Also, to make use of the security EL "
+"functions, <literal>SeamFaceletViewHandler</literal> must be used. Configure "
+"it in <literal>faces-config.xml</literal> like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:91
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;view-handler&gt;org.jboss.seam.ui.facelet.SeamFaceletViewHandler&lt;/"
+"view-handler&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:92
+#, no-c-format
+msgid "Authentication"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:93
+#, no-c-format
+msgid ""
+"The authentication features provided by Seam Security are built upon JAAS "
+"(Java Authentication and Authorization Service), and as such provide a "
+"robust and highly configurable API for handling user authentication. "
+"However, for less complex authentication requirements Seam offers a much "
+"more simplified method of authentication that hides the complexity of JAAS."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:96
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:97
+#, no-c-format
+msgid ""
+"The simplified authentication method uses a built-in JAAS login module, "
+"<literal>SeamLoginModule</literal>, which delegates authentication to one of "
+"your own Seam components. This login module is already configured inside "
+"Seam as part of a default application policy and as such does not require "
+"any additional configuration files. It allows you to write an authentication "
+"method using the entity classes that are provided by your own application. "
+"Configuring this simplified form of authentication requires the "
+"<literal>identity</literal> component to be configured in "
+"<literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:100
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:security=\"http://jboss.com/products/seam/security\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core http://jboss.com/"
+"products/seam/core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components http://jboss.com/"
+"products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/drools http://jboss.com/"
+"products/seam/drools-1.2.xsd\"\n"
+"                 http://jboss.com/products/seam/security http://jboss.com/"
+"products/seam/security-1.2.xsd\"&gt;                \n"
+"        \n"
+"    &lt;security:identity authenticate-method=\"#{authenticator.authenticate}"
+"\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:101
+#, no-c-format
+msgid ""
+"If you wish to use the advanced security features such as rule-based "
+"permission checks, all you need to do is include the Drools (JBoss Rules) "
+"jars in your classpath, and add some additional configuration, described "
+"later."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:104
+#, no-c-format
+msgid ""
+"The EL expression <literal>#{authenticator.authenticate}</literal> is a "
+"method binding indicating that the <literal>authenticate</literal> method of "
+"the <literal>authenticator</literal> component will be used to authenticate "
+"the user."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:107
+#, no-c-format
+msgid "Writing an authentication method"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:108
+#, no-c-format
+msgid ""
+"The <literal>authenticate-method</literal> property specified for "
+"<literal>identity</literal> in <literal>components.xml</literal> specifies "
+"which method will be used by <literal>SeamLoginModule</literal> to "
+"authenticate users. This method takes no parameters, and is expected to "
+"return a boolean indicating whether authentication is successful or not. The "
+"user's username and password can be obtained from <literal>Identity.instance"
+"().getUsername()</literal> and <literal>Identity.instance().getPassword()</"
+"literal>, respectively. Any roles that the user is a member of should be "
+"assigned using <literal>Identity.instance().addRole()</literal>. Here's a "
+"complete example of an authentication method inside a JavaBean component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:111
+#, no-c-format
+msgid ""
+"@Name(\"authenticator\")\n"
+"public class Authenticator {\n"
+"   @In EntityManager entityManager;\n"
+"   \n"
+"   public boolean authenticate() {\n"
+"      try\n"
+"      {\n"
+"         User user = (User) entityManager.createQuery(\n"
+"            \"from User where username = :username and password = :password"
+"\")\n"
+"            .setParameter(\"username\", Identity.instance().getUsername())\n"
+"            .setParameter(\"password\", Identity.instance().getPassword())\n"
+"            .getSingleResult();\n"
+"\n"
+"         if (user.getRoles() != null)\n"
+"         {\n"
+"            for (UserRole mr : user.getRoles())\n"
+"               Identity.instance().addRole(mr.getName());\n"
+"         }\n"
+"\n"
+"         return true;\n"
+"      }\n"
+"      catch (NoResultException ex)\n"
+"      {\n"
+"         FacesMessages.instance().add(\"Invalid username/password\");\n"
+"         return false;\n"
+"      }\n"
+"      \n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:112
+#, no-c-format
+msgid ""
+"In the above example, both <literal>User</literal> and <literal>UserRole</"
+"literal> are application-specific entity beans. The <literal>roles</literal> "
+"parameter is populated with the roles that the user is a member of, which "
+"should be added to the <literal>Set</literal> as literal string values, e.g. "
+"\"admin\", \"user\". In this case, if the user record is not found and a "
+"<literal>NoResultException</literal> thrown, the authentication method "
+"returns <literal>false</literal> to indicate the authentication failed."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:115
+#, no-c-format
+msgid "Writing a login form"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:116
+#, no-c-format
+msgid ""
+"The <literal>Identity</literal> component provides both <literal>username</"
+"literal> and <literal>password</literal> properties, catering for the most "
+"common authentication scenario. These properties can be bound directly to "
+"the username and password fields on a login form. Once these properties are "
+"set, calling the <literal>identity.login()</literal> method will "
+"authenticate the user using the provided credentials. Here's an example of a "
+"simple login form:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:119
+#, no-c-format
+msgid ""
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"name\" value=\"Username\"/&gt;\n"
+"    &lt;h:inputText id=\"name\" value=\"#{identity.username}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"password\" value=\"Password\"/&gt;\n"
+"    &lt;h:inputSecret id=\"password\" value=\"#{identity.password}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;div&gt;\n"
+"    &lt;h:commandButton value=\"Login\" action=\"#{identity.login}\"/&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:120
+#, no-c-format
+msgid ""
+"Similarly, logging out the user is done by calling <literal>#{identity."
+"logout}</literal>. Calling this action will clear the security state of the "
+"currently authenticated user."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:123
+#, no-c-format
+msgid "Simplified Configuration - Summary"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:124
+#, no-c-format
+msgid ""
+"So to sum up, there are the three easy steps to configure authentication:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:129
+#, no-c-format
+msgid ""
+"Configure an authentication method in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:134
+#, no-c-format
+msgid "Write an authentication method."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:139
+#, no-c-format
+msgid "Write a login form so that the user can authenticate."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:144
+#, no-c-format
+msgid "Handling Security Exceptions"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:145
+#, no-c-format
+msgid ""
+"To prevent users from receiving the default error page in response to a "
+"security error, it's recommended that <literal>pages.xml</literal> is "
+"configured to redirect security errors to a more \"pretty\" page. The two "
+"main types of exceptions thrown by the security API are:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:150
+#, no-c-format
+msgid ""
+"<literal>NotLoggedInException</literal> - This exception is thrown if the "
+"user attempts to access a restricted action or page when they are not logged "
+"in."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:155
+#, no-c-format
+msgid ""
+"<literal>AuthorizationException</literal> - This exception is only thrown if "
+"the user is already logged in, and they have attempted to access a "
+"restricted action or page for which they do not have the necessary "
+"privileges."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:160
+#, no-c-format
+msgid ""
+"In the case of a <literal>NotLoggedInException</literal>, it is recommended "
+"that the user is redirected to either a login or registration page so that "
+"they can log in. For an <literal>AuthorizationException</literal>, it may be "
+"useful to redirect the user to an error page. Here's an example of a "
+"<literal>pages.xml</literal> file that redirects both of these security "
+"exceptions:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:163
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"\n"
+"    ...\n"
+"    \n"
+"    &lt;exception class=\"org.jboss.seam.security.NotLoggedInException"
+"\"&gt;\n"
+"        &lt;redirect view-id=\"/login.xhtml\"&gt;\n"
+"            &lt;message&gt;You must be logged in to perform this action&lt;/"
+"message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"    \n"
+"    &lt;exception class=\"org.jboss.seam.security.AuthorizationException"
+"\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"        &lt;redirect view-id=\"/security_error.xhtml\"&gt;\n"
+"            &lt;message&gt;\n"
+"                You do not have the necessary security privileges to perform "
+"this action.\n"
+"            &lt;/message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"  \n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:164
+#, no-c-format
+msgid ""
+"Most web applications require even more sophisticated handling of login "
+"redirection, so Seam includes some special functionality for handling this "
+"problem."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:167
+#, no-c-format
+msgid "Login Redirection"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:168
+#, no-c-format
+msgid ""
+"You can ask Seam to redirect the user to a login screen when an "
+"unauthenticated user tries to access a particular view (or wildcarded view "
+"id) as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:171
+#, no-c-format
+msgid ""
+"&lt;pages login-view-id=\"/login.xhtml\"&gt;\n"
+"\n"
+"    &lt;page view-id=\"/members/*\" login-required=\"true\"/&gt;\n"
+"    \n"
+"    ...\n"
+"    \n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:172
+#, no-c-format
+msgid ""
+"(This is less of a blunt instrument than the exception handler shown above, "
+"but should probably be used in conjunction with it.)"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:175
+#, no-c-format
+msgid ""
+"After the user logs in, we want to automatically send them back where they "
+"came from, so they can retry the action that required logging in. If you add "
+"the following event listeners to <literal>components.xml</literal>, attempts "
+"to access a restricted view while not logged in will be remembered, so that "
+"upon the user successfully logging in they will be redirected to the "
+"originally requested view, with any page parameters that existed in the "
+"original request."
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:178
+#, no-c-format
+msgid ""
+"&lt;event type=\"org.jboss.seam.notLoggedIn\"&gt;\n"
+"    &lt;action expression=\"#{redirect.captureCurrentView}\"/&gt;\n"
+"&lt;/event&gt;\n"
+"    \n"
+"&lt;event type=\"org.jboss.seam.postAuthenticate\"&gt;\n"
+"    &lt;action expression=\"#{redirect.returnToCapturedView}\"/&gt;\n"
+"&lt;/event&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:179
+#, no-c-format
+msgid ""
+"Note that login redirection is implemented as a conversation-scoped "
+"mechanism, so don't end the conversation in your <literal>authenticate()</"
+"literal> method."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:182
+#, no-c-format
+msgid "Advanced Authentication Features"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:183
+#, no-c-format
+msgid ""
+"This section explores some of the advanced features provided by the security "
+"API for addressing more complex security requirements."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:186
+#, no-c-format
+msgid "Using your container's JAAS configuration"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:187
+#, no-c-format
+msgid ""
+"If you would rather not use the simplified JAAS configuration provided by "
+"the Seam Security API, you may instead delegate to the default system JAAS "
+"configuration by providing a <literal>jaasConfigName</literal> property in "
+"<literal>components.xml</literal>. For example, if you are using JBoss AS "
+"and wish to use the <literal>other</literal> policy (which uses the "
+"<literal>UsersRolesLoginModule</literal> login module provided by JBoss AS), "
+"then the entry in <literal>components.xml</literal> would look like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:190
+#, no-c-format
+msgid ""
+"&lt;security:identity authenticate-method=\"#{authenticator.authenticate}"
+"\" \n"
+"                      jaas-config-name=\"other\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:191
+#, no-c-format
+msgid "Authorization"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:192
+#, no-c-format
+msgid ""
+"There are a number of authorization features provided by the Seam Security "
+"API for securing access to components, component methods, and pages. This "
+"section describes each of these. An important thing to note is that if you "
+"wish to use any of the advanced features (such as rule-based permissions) "
+"then your <literal>components.xml</literal> must be configured to support "
+"this - see the Configuration section above."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:195
+#, no-c-format
+msgid "Core concepts"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:196
+#, no-c-format
+msgid ""
+"Each of the authorization mechanisms provided by the Seam Security API are "
+"built upon the concept of a user being granted roles and/or permissions. A "
+"role is a <emphasis>group</emphasis>, or <emphasis>type</emphasis>, of user "
+"that may have been granted certain privileges for performing one or more "
+"specific actions within an application. A permission on the other hand is a "
+"privilege (sometimes once-off) for performing a single, specific action. It "
+"is entirely possible to build an application using nothing but permissions, "
+"however roles offer a higher level of convenience when granting privileges "
+"to groups of users."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:199
+#, no-c-format
+msgid ""
+"Roles are simple, consisting of only a name such as \"admin\", \"user\", "
+"\"customer\", etc. Permissions consist of both a name and an action, and are "
+"represented within this documentation in the form <literal>name:action</"
+"literal>, for example <literal>customer:delete</literal>, or "
+"<literal>customer:insert</literal>."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:202
+#, no-c-format
+msgid "Securing components"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:203
+#, no-c-format
+msgid ""
+"Let's start by examining the simplest form of authorization, component "
+"security, starting with the <literal>@Restrict</literal> annotation."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:206
+#, no-c-format
+msgid "The @Restrict annotation"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:207
+#, no-c-format
+msgid ""
+"Seam components may be secured either at the method or the class level, "
+"using the <literal>@Restrict</literal> annotation. If both a method and it's "
+"declaring class are annotated with <literal>@Restrict</literal>, the method "
+"restriction will take precedence (and the class restriction will not apply). "
+"If a method invocation fails a security check, then an exception will be "
+"thrown as per the contract for <literal>Identity.checkRestriction()</"
+"literal> (see Inline Restrictions). A <literal>@Restrict</literal> on just "
+"the component class itself is equivalent to adding <literal>@Restrict</"
+"literal> to each of its methods."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:210
+#, no-c-format
+msgid ""
+"An empty <literal>@Restrict</literal> implies a permission check of "
+"<literal>componentName:methodName</literal>. Take for example the following "
+"component method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:213
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class AccountAction {\n"
+"    @Restrict public void delete() {\n"
+"      ...\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:214
+#, no-c-format
+msgid ""
+"In this example, the implied permission required to call the <literal>delete"
+"()</literal> method is <literal>account:delete</literal>. The equivalent of "
+"this would be to write <literal>@Restrict(\"#{s:hasPermission"
+"('account','delete',null)}\")</literal>. Now let's look at another example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:217
+#, no-c-format
+msgid ""
+"@Restrict @Name(\"account\")\n"
+"public class AccountAction {\n"
+"    public void insert() {\n"
+"      ...\n"
+"    }\n"
+"    @Restrict(\"#{s:hasRole('admin')}\") \n"
+"    public void delete() {\n"
+"      ...\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:218
+#, no-c-format
+msgid ""
+"This time, the component class itself is annotated with <literal>@Restrict</"
+"literal>. This means that any methods without an overriding "
+"<literal>@Restrict</literal> annotation require an implicit permission "
+"check. In the case of this example, the <literal>insert()</literal> method "
+"requires a permission of <literal>account:insert</literal>, while the "
+"<literal>delete()</literal> method requires that the user is a member of the "
+"<literal>admin</literal> role."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:221
+#, no-c-format
+msgid ""
+"Before we go any further, let's address the <literal>#{s:hasRole()}</"
+"literal> expression seen in the above example. Both <literal>s:hasRole</"
+"literal> and <literal>s:hasPermission</literal> are EL functions, which "
+"delegate to the correspondingly named methods of the <literal>Identity</"
+"literal> class. These functions can be used within any EL expression "
+"throughout the entirety of the security API."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:224
+#, no-c-format
+msgid ""
+"Being an EL expression, the value of the <literal>@Restrict</literal> "
+"annotation may reference any objects that exist within a Seam context. This "
+"is extremely useful when performing permission checks for a specific object "
+"instance. Look at this example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:227
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class AccountAction {\n"
+"    @In Account selectedAccount;\n"
+"    @Restrict(\"#{s:hasPermission('account','modify',selectedAccount)}\")\n"
+"    public void modify() {\n"
+"        selectedAccount.modify();\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:228
+#, no-c-format
+msgid ""
+"The interesting thing to note from this example is the reference to "
+"<literal>selectedAccount</literal> seen within the <literal>hasPermission()</"
+"literal> function call. The value of this variable will be looked up from "
+"within the Seam context, and passed to the <literal>hasPermission()</"
+"literal> method in <literal>Identity</literal>, which in this case can then "
+"determine if the user has the required permission for modifying the "
+"specified <literal>Account</literal> object."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:231
+#, no-c-format
+msgid "Inline restrictions"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:232
+#, no-c-format
+msgid ""
+"Sometimes it might be desirable to perform a security check in code, without "
+"using the <literal>@Restrict</literal> annotation. In this situation, simply "
+"use <literal>Identity.checkRestriction()</literal> to evaluate a security "
+"expression, like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:235
+#, no-c-format
+msgid ""
+"public void deleteCustomer() {\n"
+"    Identity.instance().checkRestriction(\"#{s:hasPermission"
+"('customer','delete',\n"
+"        selectedCustomer)}\");\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:236
+#, no-c-format
+msgid ""
+"If the expression specified doesn't evaluate to <literal>true</literal>, "
+"either"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:241
+#, no-c-format
+msgid ""
+"if the user is not logged in, a <literal>NotLoggedInException</literal> "
+"exception is thrown or"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:246
+#, no-c-format
+msgid ""
+"if the user is logged in, an <literal>AuthorizationException</literal> "
+"exception is thrown."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:251
+#, no-c-format
+msgid ""
+"It is also possible to call the <literal>hasRole()</literal> and "
+"<literal>hasPermission()</literal> methods directly from Java code:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:254
+#, no-c-format
+msgid ""
+"if (!Identity.instance().hasRole(\"admin\"))\n"
+"     throw new AuthorizationException(\"Must be admin to perform this action"
+"\");\n"
+"\n"
+"if (!Identity.instance().hasPermission(\"customer\", \"create\", null))\n"
+"     throw new AuthorizationException(\"You may not create new customers\");"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:255
+#, no-c-format
+msgid "Security in the user interface"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:256
+#, no-c-format
+msgid ""
+"One indication of a well designed user interface is that the user is not "
+"presented with options for which they don't have the necessary privileges to "
+"use. Seam Security allows conditional rendering of either 1) sections of a "
+"page or 2) individual controls, based upon the privileges of the user, using "
+"the very same EL expressions that are used for component security."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:259
+#, no-c-format
+msgid ""
+"Let's take a look at some examples of interface security. First of all, "
+"let's pretend that we have a login form that should only be rendered if the "
+"user is not already logged in. Using the <literal>identity.isLoggedIn()</"
+"literal> property, we can write this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:262
+#, no-c-format
+msgid ""
+"&lt;h:form class=\"loginForm\" rendered=\"#{not identity.loggedIn}\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:263
+#, no-c-format
+msgid ""
+"If the user isn't logged in, then the login form will be rendered - very "
+"straight forward so far. Now let's pretend there is a menu on the page that "
+"contains some actions which should only be accessible to users in the "
+"<literal>manager</literal> role. Here's one way that these could be written:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:266
+#, no-c-format
+msgid ""
+"&lt;h:outputLink action=\"#{reports.listManagerReports}\" rendered=\"#{s:"
+"hasRole('manager')}\"&gt;\n"
+"    Manager Reports\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:267
+#, no-c-format
+msgid ""
+"This is also quite straight forward. If the user is not a member of the "
+"<literal>manager</literal> role, then the outputLink will not be rendered. "
+"The <literal>rendered</literal> attribute can generally be used on the "
+"control itself, or on a surrounding <literal>&lt;s:div&gt;</literal> or "
+"<literal>&lt;s:span&gt;</literal> control."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:270
+#, no-c-format
+msgid ""
+"Now for something more complex. Let's say you have a <literal>h:dataTable</"
+"literal> control on a page listing records for which you may or may not wish "
+"to render action links depending on the user's privileges. The <literal>s:"
+"hasPermission</literal> EL function allows us to pass in an object parameter "
+"which can be used to determine whether the user has the requested permission "
+"for that object or not. Here's how a dataTable with secured links might look:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:273
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{clients}\" var=\"cl\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Name&lt;/f:facet&gt;\n"
+"        #{cl.name}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;City&lt;/f:facet&gt;\n"
+"        #{cl.city}\n"
+"    &lt;/h:column&gt;   \n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"        &lt;s:link value=\"Modify Client\" action=\"#{clientAction.modify}"
+"\"\n"
+"                rendered=\"#{s:hasPermission('client','modify',cl)\"/&gt;\n"
+"        &lt;s:link value=\"Delete Client\" action=\"#{clientAction.delete}"
+"\"\n"
+"                rendered=\"#{s:hasPermission('client','delete',cl)\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:274
+#, no-c-format
+msgid "Securing pages"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:275
+#, no-c-format
+msgid ""
+"Page security requires that the application is using a <literal>pages.xml</"
+"literal> file, however is extremely simple to configure. Simply include a "
+"<literal>&lt;restrict/&gt;</literal> element within the <literal>page</"
+"literal> elements that you wish to secure. By default, if a value is not "
+"provided for the <literal>restrict</literal> element, an implied permission "
+"of <literal>{viewId}:render</literal> will be checked for whenever accessing "
+"that page. Otherwise the value will be evaluated as a standard security "
+"expression. Here's a couple of examples:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:278
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/settings.xhtml\"&gt;\n"
+"    &lt;restrict/&gt;\n"
+"&lt;/page&gt;\n"
+"        \n"
+"&lt;page view-id=\"/reports.xhtml\"&gt;    \n"
+"    &lt;restrict&gt;#{s:hasRole('admin')}&lt;/restrict&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:279
+#, no-c-format
+msgid ""
+"In the above example, the first page has an implied permission restriction "
+"of <literal>/settings.xhtml:render</literal>, while the second one checks "
+"that the user is a member of the <literal>admin</literal> role."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:282
+#, no-c-format
+msgid "Securing Entities"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:283
+#, no-c-format
+msgid ""
+"Seam security also makes it possible to apply security restrictions to read, "
+"insert, update and delete actions for entities."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:286
+#, no-c-format
+msgid ""
+"To secure all actions for an entity class, add a <literal>@Restrict</"
+"literal> annotation on the class itself:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:289
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"customer\")\n"
+"@Restrict\n"
+"public class Customer {\n"
+"  ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:290
+#, no-c-format
+msgid ""
+"If no expression is specified in the <literal>@Restrict</literal> "
+"annotation, the default security check that is performed is a permission "
+"check of <literal>entityName:action</literal>, where <literal>entityName</"
+"literal> is the name of the entity (or the class name if no @Name is "
+"specified), and the <literal>action</literal> is either <literal>read</"
+"literal>, <literal>insert</literal>, <literal>update</literal> or "
+"<literal>delete</literal>."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:293
+#, no-c-format
+msgid ""
+"It is also possible to only restrict certain actions, by placing a "
+"<literal>@Restrict</literal> annotation on the relevent entity lifecycle "
+"method (annotated as follows):"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:298
+#, no-c-format
+msgid ""
+"<literal>@PostLoad</literal> - Called after an entity instance is loaded "
+"from the database. Use this method to configure a <literal>read</literal> "
+"permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:303
+#, no-c-format
+msgid ""
+"<literal>@PrePersist</literal> - Called before a new instance of the entity "
+"is inserted. Use this method to configure an <literal>insert</literal> "
+"permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:308
+#, no-c-format
+msgid ""
+"<literal>@PreUpdate</literal> - Called before an entity is updated. Use this "
+"method to configure an <literal>update</literal> permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:313
+#, no-c-format
+msgid ""
+"<literal>@PreRemove</literal> - Called before an entity is deleted. Use this "
+"method to configure a <literal>delete</literal> permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:318
+#, no-c-format
+msgid ""
+"Here's an example of how an entity would be configured to perform a security "
+"check for any <literal>insert</literal> operations. Please note that the "
+"method is not required to do anything, the only important thing in regard to "
+"security is how it is annotated:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:321
+#, no-c-format
+msgid ""
+"@PrePersist @Restrict\n"
+"  public void prePersist() {}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:322
+#, no-c-format
+msgid ""
+"And here's an example of an entity permission rule that checks if the "
+"authenticated user is allowed to create a new blog entry (from the seamspace "
+"example):"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:325
+#, no-c-format
+msgid ""
+"rule InsertMemberBlog\n"
+"  no-loop\n"
+"  activation-group \"permissions\"\n"
+"when\n"
+"  c: PermissionCheck(name == \"memberBlog\", action == \"insert\", granted "
+"== false)\n"
+"  Principal(nm : name)\n"
+"  MemberBlog(mbr : member -&gt; (mbr.getUsername().equals(nm)))\n"
+"then\n"
+"  c.grant();\n"
+"  modify(c);\n"
+"end;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:326
+#, no-c-format
+msgid ""
+"Finally, we need to install a listener class that integrates Seam security "
+"with your JPA provider."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:329
+#, no-c-format
+msgid "Entity security with JPA"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:330
+#, no-c-format
+msgid ""
+"Security checks for EJB3 entity beans are performed with an "
+"<literal>EntityListener</literal>. You can install this listener by using "
+"the following <literal>META-INF/orm.xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:333
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;entity-mappings xmlns=\"http://java.sun.com/xml/ns/persistence/orm\"\n"
+"                 xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"                 xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence/"
+"orm \n"
+"                 http://java.sun.com/xml/ns/persistence/orm_1_0.xsd\"\n"
+"                 version=\"1.0\"&gt;\n"
+"                 \n"
+"    &lt;persistence-unit-metadata&gt;\n"
+"        &lt;persistence-unit-defaults&gt;\n"
+"            &lt;entity-listeners&gt;\n"
+"                &lt;entity-listener class=\"org.jboss.seam.security."
+"EntitySecurityListener\"/&gt;\n"
+"            &lt;/entity-listeners&gt;\n"
+"        &lt;/persistence-unit-defaults&gt;\n"
+"    &lt;/persistence-unit-metadata&gt;\n"
+"    \n"
+"&lt;/entity-mappings&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:334
+#, no-c-format
+msgid "Entity security with Hibernate"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:335
+#, no-c-format
+msgid ""
+"If you are using a Hibernate <literal>SessionFactory</literal> configured "
+"via Seam, you don't need to do anything special to use entity security."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:338
+#, no-c-format
+msgid "Writing Security Rules"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:339
+#, no-c-format
+msgid ""
+"Up to this point there has been a lot of mention of permissions, but no "
+"information about how permissions are actually defined or granted. This "
+"section completes the picture, by explaining how permission checks are "
+"processed, and how to implement permission checks for a Seam application."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:342
+#, no-c-format
+msgid "Permissions Overview"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:343
+#, no-c-format
+msgid ""
+"So how does the security API know whether a user has the <literal>customer:"
+"modify</literal> permission for a specific customer? Seam Security provides "
+"quite a novel method for determining user permissions, based on JBoss Rules. "
+"A couple of the advantages of using a rule engine are 1) a centralized "
+"location for the business logic that is behind each user permission, and 2) "
+"speed - JBoss Rules uses very efficient algorithms for evaluating large "
+"numbers of complex rules involving multiple conditions."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:346
+#, no-c-format
+msgid "Configuring a rules file"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:347
+#, no-c-format
+msgid ""
+"Seam Security expects to find a <literal>RuleBase</literal> component called "
+"<literal>securityRules</literal> which it uses to evaluate permission "
+"checks. This is configured in <literal>components.xml</literal> as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:350
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:security=\"http://jboss.com/products/seam/security\"\n"
+"            xmlns:drools=\"http://jboss.com/products/seam/drools\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                     http://jboss.com/products/seam/core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components  \n"
+"                     http://jboss.com/products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/drools \n"
+"                     http://jboss.com/products/seam/drools-1.2.xsd\"\n"
+"                 http://jboss.com/products/seam/security \n"
+"                     http://jboss.com/products/seam/security-1.2.xsd"
+"\"&gt;                 \n"
+"        \n"
+"   &lt;drools:rule-base name=\"securityRules\"&gt;\n"
+"       &lt;drools:rule-files&gt;\n"
+"           &lt;value&gt;/META-INF/security.drl&lt;/value&gt;\n"
+"       &lt;/drools:rule-files&gt;\n"
+"   &lt;/drools:rule-base&gt;    \n"
+"   \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:351
+#, no-c-format
+msgid ""
+"Once the <literal>RuleBase</literal> component is configured, it's time to "
+"write the security rules."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:354
+#, no-c-format
+msgid "Creating a security rules file"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:355
+#, no-c-format
+msgid ""
+"For this step you need to create a file called <literal>security.drl</"
+"literal> in the <literal>/META-INF</literal> directory of your application's "
+"jar file. In actual fact this file can be called anything you want, and "
+"exist in any location as long as it is configured appropriately in "
+"<literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:358
+#, no-c-format
+msgid ""
+"So what should the security rules file contain? At this stage it might be a "
+"good idea to at least skim through the JBoss Rules documentation, however to "
+"get started here's an extremely simple example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:361
+#, no-c-format
+msgid ""
+"package MyApplicationPermissions;\n"
+"\n"
+"import org.jboss.seam.security.PermissionCheck;\n"
+"import org.jboss.seam.security.Role;\n"
+"\n"
+"rule CanUserDeleteCustomers\n"
+"when\n"
+"  c: PermissionCheck(name == \"customer\", action == \"delete\")\n"
+"  Role(name == \"admin\")\n"
+"then\n"
+"  c.grant();\n"
+"end;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:362
+#, no-c-format
+msgid ""
+"Let's break this down. The first thing we see is the package declaration. A "
+"package in JBoss Rules is essentially a collection of rules. The package "
+"name can be anything you want - it doesn't relate to anything else outside "
+"the scope of the rule base."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:365
+#, no-c-format
+msgid ""
+"The next thing we can notice is a couple of import statements for the "
+"<literal>PermissionCheck</literal> and <literal>Role</literal> classes. "
+"These imports inform the rules engine that we'll be referencing these "
+"classes within our rules."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:368
+#, no-c-format
+msgid ""
+"Finally we have the code for the rule. Each rule within a package should be "
+"given a unique name (usually describing the purpose of the rule). In this "
+"case our rule is called <literal>CanUserDeleteCustomers</literal> and will "
+"be used to check whether a user is allowed to delete a customer record."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:371
+#, no-c-format
+msgid ""
+"Looking at the body of the rule definition we can notice two distinct "
+"sections. Rules have what is known as a left hand side (LHS) and a right "
+"hand side (RHS). The LHS consists of the conditional part of the rule, i.e. "
+"a list of conditions which must be satisfied for the rule to fire. The LHS "
+"is represented by the <literal>when</literal> section. The RHS is the "
+"consequence, or action section of the rule that will only be fired if all of "
+"the conditions in the LHS are met. The RHS is represented by the "
+"<literal>then</literal> section. The end of the rule is denoted by the "
+"<literal>end;</literal> line."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:374
+#, no-c-format
+msgid ""
+"If we look at the LHS of the rule, we see two conditions listed there. Let's "
+"examine the first condition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:377
+#, no-c-format
+msgid "c: PermissionCheck(name == \"customer\", action == \"delete\")"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:378
+#, no-c-format
+msgid ""
+"In plain english, this condition is stating that there must exist a "
+"<literal>PermissionCheck</literal> object with a <literal>name</literal> "
+"property equal to \"customer\", and an <literal>action</literal> property "
+"equal to \"delete\" within the working memory. What is the working memory? "
+"It is a session-scoped object that contains the contextual information that "
+"is required by the rules engine to make a decision about a permission check. "
+"Each time the <literal>hasPermission()</literal> method is called, a "
+"temporary <literal>PermissionCheck</literal> object, or <emphasis>Fact</"
+"emphasis>, is asserted into the working memory. This "
+"<literal>PermissionCheck</literal> corresponds exactly to the permission "
+"that is being checked, so for example if you call <literal>hasPermission"
+"(\"account\", \"create\", null)</literal> then a <literal>PermissionCheck</"
+"literal> object with a <literal>name</literal> equal to \"account\" and "
+"<literal>action</literal> equal to \"create\" will be asserted into the "
+"working memory for the duration of the permission check."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:381
+#, no-c-format
+msgid ""
+"So what else is in the working memory? Besides the short-lived temporary "
+"facts asserted during a permission check, there are some longer-lived "
+"objects in the working memory that stay there for the entire duration of a "
+"user being authenticated. These include any <literal>java.security."
+"Principal</literal> objects that are created as part of the authentication "
+"process, plus a <literal>org.jboss.seam.security.Role</literal> object for "
+"each of the roles that the user is a member of. It is also possible to "
+"assert additional long-lived facts into the working memory by calling "
+"<literal>Identity.instance().getSecurityContext().assertObject()</literal>, "
+"passing the object as a parameter."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:384
+#, no-c-format
+msgid ""
+"Getting back to our simple example, we can also notice that the first line "
+"of our LHS is prefixed with <literal>c:</literal>. This is a variable "
+"binding, and is used to refer back to the object that is matched by the "
+"condition. Moving onto the second line of our LHS, we see this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:387
+#, no-c-format
+msgid "Role(name == \"admin\")"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:388
+#, no-c-format
+msgid ""
+"This condition simply states that there must be a <literal>Role</literal> "
+"object with a <literal>name</literal> of \"admin\" within the working "
+"memory. As mentioned, user roles are asserted into the working memory as "
+"long-lived facts. So, putting both conditions together, this rule is "
+"essentially saying \"I will fire if you are checking for the "
+"<literal>customer:delete</literal> permission and the user is a member of "
+"the <literal>admin</literal> role\"."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:391
+#, no-c-format
+msgid ""
+"So what is the consequence of the rule firing? Let's take a look at the RHS "
+"of the rule:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:394
+#, no-c-format
+msgid "c.grant()"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:395
+#, no-c-format
+msgid ""
+"The RHS consists of Java code, and in this case is invoking the "
+"<literal>grant()</literal> method of the <literal>c</literal> object, which "
+"as already mentioned is a variable binding for the <literal>PermissionCheck</"
+"literal> object. Besides the <literal>name</literal> and <literal>action</"
+"literal> properties of the <literal>PermissionCheck</literal> object, there "
+"is also a <literal>granted</literal> property which is initially set to "
+"<literal>false</literal>. Calling <literal>grant()</literal> on a "
+"<literal>PermissionCheck</literal> sets the <literal>granted</literal> "
+"property to <literal>true</literal>, which means that the permission check "
+"was successful, allowing the user to carry out whatever action the "
+"permission check was intended for."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:398
+#, no-c-format
+msgid "SSL Security"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:399
+#, no-c-format
+msgid ""
+"Seam includes basic support for serving sensitive pages via the HTTPS "
+"protocol. This is easily configured by specifying a <literal>scheme</"
+"literal> for the page in <literal>pages.xml</literal>. The following example "
+"shows how the view <literal>/login.xhtml</literal> is configured to use "
+"HTTPS:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:402
+#, no-c-format
+msgid "&lt;page view-id=\"/login.xhtml\" scheme=\"https\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:403
+#, no-c-format
+msgid ""
+"This configuration is automatically extended to both <literal>s:link</"
+"literal> and <literal>s:button</literal> JSF controls, which (when "
+"specifying the <literal>view</literal>) will also render the link using the "
+"correct protocol. Based on the previous example, the following link will use "
+"the HTTPS protocol because <literal>/login.xhtml</literal> is configured to "
+"use it:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:406
+#, no-c-format
+msgid "&lt;s:link view=\"/login.xhtml\" value=\"Login\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:407
+#, no-c-format
+msgid ""
+"Browsing directly to a view when using the <emphasis>incorrect</emphasis> "
+"protocol will cause a redirect to the same view using the <emphasis>correct</"
+"emphasis> protocol. For example, browsing to a page that has <literal>scheme="
+"\"https\"</literal> using HTTP will cause a redirect to the same page using "
+"HTTPS."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:410
+#, no-c-format
+msgid ""
+"It is also possible to configure a default <literal>scheme</literal> for all "
+"pages. This is actually quite important, as you might only wish to use HTTPS "
+"for a few pages, and if no default scheme is specified then the default "
+"behavior is to continue using the current scheme. What this means is that "
+"once you enter a page with HTTPS, then HTTPS will continue to be used even "
+"if you navigate away to other non-HTTPS pages (a bad thing!). So it is "
+"strongly recommended to include a default <literal>scheme</literal>, by "
+"configuring it on the default (<literal>\"*\"</literal>) view:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:413
+#, no-c-format
+msgid "&lt;page view-id=\"*\" scheme=\"http\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:414
+#, no-c-format
+msgid ""
+"Of course, if <emphasis>none</emphasis> of the pages in your application use "
+"HTTPS then it is not required to specify a default scheme."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:417
+#, no-c-format
+msgid "Implementing a Captcha Test"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:418
+#, no-c-format
+msgid ""
+"Though strictly not part of the security API, it might be useful in certain "
+"circumstances (such as new user registrations, posting to a public blog or "
+"forum) to implement a Captcha (<emphasis>C</emphasis>ompletely <emphasis>A</"
+"emphasis>utomated <emphasis>P</emphasis>ublic <emphasis>T</emphasis>uring "
+"test to tell <emphasis>C</emphasis>omputers and <emphasis>H</emphasis>umans "
+"<emphasis>A</emphasis>part) to prevent automated bots from interacting with "
+"your application. Seam provides seamless integration with JCaptcha, an "
+"excellent library for generating Captcha challenges. If you wish to use the "
+"captcha feature in your application you need to include the jcaptcha-* jar "
+"file from the Seam lib directory in your project, and register it in "
+"<literal>application.xml</literal> as a java module."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:421
+#, no-c-format
+msgid "Configuring the Captcha Servlet"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:422
+#, no-c-format
+msgid ""
+"To get up and running, it is necessary to configure the Seam Resource "
+"Servlet, which will provide the Captcha challenge images to your pages. This "
+"requires the following entry in <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:425
+#, no-c-format
+msgid ""
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"    \n"
+"&lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:426
+#, no-c-format
+msgid "Adding a Captcha to a page"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:427
+#, no-c-format
+msgid ""
+"Adding a captcha challenge to a page is extremely easy. Seam provides a page-"
+"scoped component, <literal>captcha</literal>, which provides everything that "
+"is required, including built-in captcha validation. Here's an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:430
+#, no-c-format
+msgid ""
+"&lt;div&gt;\n"
+"    &lt;h:graphicImage value=\"/seam/resource/captcha?#{captcha.id}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"  \n"
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"verifyCaptcha\"&gt;Enter the above letters&lt;/h:"
+"outputLabel&gt;\n"
+"    &lt;h:inputText id=\"verifyCaptcha\" value=\"#{captcha.response}\" "
+"required=\"true\"/&gt;\n"
+"    &lt;div class=\"validationError\"&gt;&lt;h:message for=\"verifyCaptcha\"/"
+"&gt;&lt;/div&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:431
+#, no-c-format
+msgid ""
+"That's all there is to it. The <literal>graphicImage</literal> control "
+"displays the Captcha challenge, and the <literal>inputText</literal> "
+"receives the user's response. The response is automatically validated "
+"against the Captcha when the form is submitted."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Spring.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Spring.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Spring.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,416 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Spring.xml:10
+#, no-c-format
+msgid "Spring Framework integration"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:11
+#, no-c-format
+msgid ""
+"The Spring integration module allows easy migration of Spring-based projects "
+"to Seam and allows Spring applications to take advantage of key Seam "
+"features like conversations and Seam's more sophisticated persistence "
+"context management."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:14
+#, no-c-format
+msgid "Seam's support for Spring provides the ability to:"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:19
+#, no-c-format
+msgid "inject Seam component instances into Spring beans"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:24
+#, no-c-format
+msgid "inject Spring beans into Seam components"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:29
+#, no-c-format
+msgid "turn Spring beans into Seam components"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:34
+#, no-c-format
+msgid "allow Spring beans to live in any Seam context"
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:40
+#, no-c-format
+msgid "Injecting Seam components into Spring beans"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:41
+#, no-c-format
+msgid ""
+"Injecting Seam component instances into Spring beans is accomplished using "
+"the <literal>&lt;seam:instance/&gt;</literal> namespace handler. To enable "
+"the Seam namespace handler, the Seam namespace must be added to the Spring "
+"beans definition file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:44
+#, no-c-format
+msgid ""
+"&lt;beans xmlns=\"http://www.springframework.org/schema/beans\"\n"
+"    xmlns:seam=\"http://jboss.com/products/seam/spring\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://www.springframework.org/schema/beans \n"
+"                        http://www.springframework.org/schema/beans/spring-"
+"beans-2.0.xsd\n"
+"                        http://jboss.com/products/seam/spring \n"
+"                        http://jboss.com/products/seam/spring-1.2.xsd\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:45
+#, no-c-format
+msgid "Now any Seam component may be injected into any Spring bean:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:48
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\"&gt;\n"
+"        &lt;seam:instance name=\"someComponent\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:49
+#, no-c-format
+msgid "An EL expression may be used instead of a component name:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:52
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\"&gt;\n"
+"        &lt;seam:instance name=\"#{someExpression}\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:53
+#, no-c-format
+msgid ""
+"Seam component instances may even be made available for injection into "
+"Spring beans by a Spring bean id."
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:56
+#, no-c-format
+msgid ""
+"&lt;seam:instance name=\"someComponent\" id=\"someSeamComponentInstance\"/"
+"&gt;\n"
+"\n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\" ref=\"someSeamComponentInstance"
+"\"&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:57
+#, no-c-format
+msgid "Now for the caveat!"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:60
+#, no-c-format
+msgid ""
+"Seam was designed from the ground up to support a stateful component model "
+"with multiple contexts. Spring was not. Unlike Seam bijection, Spring "
+"injection does not occur at method invocation time. Instead, injection "
+"happens only when the Spring bean is instantiated. So the instance available "
+"when the bean is instantiated will be the same instance that the bean uses "
+"for the entire life of the bean. For example, if a Seam "
+"<literal>CONVERSATION</literal>-scoped component instance is directly "
+"injected into a singleton Spring bean, that singleton will hold a reference "
+"to the same instance long after the conversation is over! We call this "
+"problem <emphasis>scope impedance</emphasis>. Seam bijection ensures that "
+"scope impedance is maintained naturally as an invocation flows through the "
+"system. In Spring, we need to inject a proxy of the Seam component, and "
+"resolve the reference when the proxy is invoked."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:63
+#, no-c-format
+msgid ""
+"The <literal>&lt;seam:instance/&gt;</literal> tag lets us automatically "
+"proxy the Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:66
+#, no-c-format
+msgid ""
+"&lt;seam:instance id=\"seamManagedEM\" name=\"someManagedEMComponent\" proxy="
+"\"true\"/&gt;\n"
+"        \n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\"&gt;\n"
+"    &lt;property name=\"entityManager\" ref=\"seamManagedEM\"&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:67
+#, no-c-format
+msgid ""
+"This example shows one way to use a Seam-managed persistence context from a "
+"Spring bean. (A more robust way to use Seam-managed persistence contexts as "
+"a replacement for the Spring <literal>OpenEntityManagerInView</literal> "
+"filter will be provided in a future release)"
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:73
+#, no-c-format
+msgid "Injecting Spring beans into Seam components"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:74
+#, no-c-format
+msgid ""
+"It is even easier to inject Spring beans into Seam component instances. "
+"Actually, there are two possible approaches:"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:79
+#, no-c-format
+msgid "inject a Spring bean using an EL expression"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:84
+#, no-c-format
+msgid "make the Spring bean a Seam component"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:89
+#, no-c-format
+msgid ""
+"We'll discuss the second option in the next section. The easiest approach is "
+"to access the Spring beans via EL."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:92
+#, no-c-format
+msgid ""
+"The Spring <literal>DelegatingVariableResolver</literal> is an integration "
+"point Spring provides for integrating Spring with JSF. This "
+"<literal>VariableResolver</literal> makes all Spring beans available in EL "
+"by their bean id. You'll need to add the "
+"<literal>DelegatingVariableResolver</literal> to <literal>faces-config.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:95
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;variable-resolver&gt;\n"
+"        org.springframework.web.jsf.DelegatingVariableResolver\n"
+"    &lt;/variable-resolver&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:96
+#, no-c-format
+msgid "Then you can inject Spring beans using <literal>@In</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:99
+#, no-c-format
+msgid ""
+"@In(\"#{bookingService}\")\n"
+"private BookingService bookingService;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:100
+#, no-c-format
+msgid ""
+"The use of Spring beans in EL is not limited to injection. Spring beans may "
+"be used anywhere that EL expressions are used in Seam: process and pageflow "
+"definitions, working memory assertions, etc..."
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:106
+#, no-c-format
+msgid "Making a Spring bean into a Seam component"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:107
+#, no-c-format
+msgid ""
+"The <literal>&lt;seam:component/&gt;</literal> namespace handler can be used "
+"to make any Spring bean a Seam component. Just place the <literal>&lt;seam:"
+"component/&gt;</literal> tag within the declaration of the bean that you "
+"wish to be a Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:110
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;seam:component/&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:111
+#, no-c-format
+msgid ""
+"By default, <literal>&lt;seam:component/&gt;</literal> will create a "
+"<literal>STATELESS</literal> Seam component with class and name provided in "
+"the bean definition. Occasionally, such as when a <literal>FactoryBean</"
+"literal> is used, the class of the Spring bean may not be the class "
+"appearing in the bean definition. In such cases the <literal>beanClass</"
+"literal> should be explicitly specified. A Seam component name may be "
+"explicitly specified in cases where there is potential for a naming conflict."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:114
+#, no-c-format
+msgid ""
+"The <literal>scope</literal> attribute of <literal>&lt;seam:component/&gt;</"
+"literal> may be used if you wish the Spring bean to be managed in a "
+"particular Seam scope. The Spring bean must be scoped to <literal>prototype</"
+"literal> if the Seam scope specified is anything other than "
+"<literal>STATELESS</literal>. Pre-existing Spring beans usually have a "
+"fundamentally stateless character, so this attribute is not usually needed."
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:120
+#, no-c-format
+msgid "Seam-scoped Spring beans"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:121
+#, no-c-format
+msgid ""
+"The Seam integration package also lets you use Seam's contexts as Spring 2.0 "
+"style custom scopes. This lets you declare any Spring bean in any of Seam's "
+"contexts. However, note once again that Spring's component model was never "
+"architected to support statefulness, so please use this feature with great "
+"care. In particular, clustering of session or conversation scoped Spring "
+"beans is deeply problematic, and care must be taken when injecting a bean or "
+"component from a wider scope into a bean of a narrower scope."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:124
+#, no-c-format
+msgid ""
+"By specifying <literal>&lt;seam:configure-scopes/&gt;</literal> once in a "
+"Spring bean factory configuration, all of the Seam scopes will be available "
+"to Spring beans as custom scopes. To associate a Spring bean with a "
+"particular Seam scope, specify the Seam scope in the <literal>scope</"
+"literal> attribute of the bean definition."
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:127
+#, no-c-format
+msgid ""
+"&lt;!-- Only needs to be specified once per bean factory--&gt;\n"
+"&lt;seam:configure-scopes/&gt;\n"
+"\n"
+"...\n"
+"\n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope=\"seam."
+"CONVERSATION\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:128
+#, no-c-format
+msgid ""
+"The prefix of the scope name may be changed by specifying the "
+"<literal>prefix</literal> attribute in the <literal>configure-scopes</"
+"literal> definition. (The default prefix is <literal>seam.</literal>)"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:131
+#, no-c-format
+msgid ""
+"Seam-scoped Spring beans defined this way can be injected into other Spring "
+"beans without the use of <literal>&lt;seam:instance/&gt;</literal>. However, "
+"care must be taken to ensure scope impedance is maintained. The normal "
+"approach used in Spring is to specify <literal>&lt;aop:scoped-proxy/&gt;</"
+"literal> in the bean definition. However, Seam-scoped Spring beans are "
+"<emphasis>not</emphasis> compatible with <literal>&lt;aop:scoped-proxy/&gt;</"
+"literal>. So if you need to inject a Seam-scoped Spring bean into a "
+"singleton, <literal>&lt;seam:instance/&gt;</literal> must be used:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:134
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope=\"seam."
+"CONVERSATION\"/&gt;\n"
+"\n"
+"...\n"
+"\n"
+"&lt;bean id=\"someSingleton\"&gt;\n"
+"    &lt;property name=\"someSeamScopedSpringBean\"&gt;\n"
+"        &lt;seam:instance name=\"someSpringBean\" proxy=\"true\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Testing.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Testing.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Testing.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,342 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Testing.xml:10
+#, no-c-format
+msgid "Testing Seam applications"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:11
+#, no-c-format
+msgid ""
+"Most Seam applications will need at least two kinds of automated tests: "
+"<emphasis>unit tests</emphasis>, which test a particular Seam component in "
+"isolation, and scripted <emphasis>integration tests</emphasis> which "
+"exercise all Java layers of the application (that is, everything except the "
+"view pages)."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:14
+#, no-c-format
+msgid "Both kinds of tests are very easy to write."
+msgstr ""
+
+#. Tag: title
+#: Testing.xml:18
+#, no-c-format
+msgid "Unit testing Seam components"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:19
+#, no-c-format
+msgid ""
+"All Seam components are POJOs. This is a great place to start if you want "
+"easy unit testing. And since Seam emphasises the use of bijection for inter-"
+"component interactions and access to contextual objects, it's very easy to "
+"test a Seam component outside of its normal runtime environment."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:22
+#, no-c-format
+msgid "Consider the following Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:25
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Scope(EVENT)\n"
+"@Name(\"register\")\n"
+"public class RegisterAction implements Register\n"
+"{\n"
+"   private User user;\n"
+"   private EntityManager em;\n"
+"\n"
+"   @In\n"
+"   public void setUser(User user) {\n"
+"       this.user = user;\n"
+"   }\n"
+"   \n"
+"   @PersistenceContext\n"
+"   public void setBookingDatabase(EntityManager em) {\n"
+"       this.em = em;\n"
+"   }\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = em.createQuery(\"select username from User where "
+"username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getResultList();\n"
+"      if (existing.size()==0)\n"
+"      {\n"
+"         em.persist(user);\n"
+"         return \"success\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:26
+#, no-c-format
+msgid "We could write a TestNG test for this component as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:29
+#, no-c-format
+msgid ""
+"public class RegisterActionTest\n"
+"{\n"
+"\n"
+"    @Test\n"
+"    public testRegisterAction()\n"
+"    {\n"
+"        EntityManager em = getEntityManagerFactory().createEntityManager();\n"
+"        em.getTransaction().begin();\n"
+"        \n"
+"        User gavin = new User();\n"
+"        gavin.setName(\"Gavin King\");\n"
+"        gavin.setUserName(\"1ovthafew\");\n"
+"        gavin.setPassword(\"secret\");\n"
+"        \n"
+"        RegisterAction action = new RegisterAction();\n"
+"        action.setUser(gavin);\n"
+"        action.setBookingDatabase(em);\n"
+"        \n"
+"        assert \"success\".equals( action.register() );\n"
+"        \n"
+"        em.getTransaction().commit();\n"
+"        em.close();\n"
+"    }\n"
+"    \n"
+"    \n"
+"    private EntityManagerFactory emf;\n"
+"    \n"
+"    public EntityManagerFactory getEntityManagerFactory()\n"
+"    {\n"
+"        return emf;\n"
+"    }\n"
+"    \n"
+"    @Configuration(beforeTestClass=true)\n"
+"    public void init() \n"
+"    {\n"
+"        emf = Persistence.createEntityManagerFactory"
+"(\"myResourceLocalEntityManager\");\n"
+"    }\n"
+"    \n"
+"    @Configuration(afterTestClass=true)\n"
+"    public void destroy()\n"
+"    {\n"
+"        emf.close();\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:30
+#, no-c-format
+msgid ""
+"Seam components don't usually depend directly upon container infrastructure, "
+"so most unit testing as as easy as that!"
+msgstr ""
+
+#. Tag: title
+#: Testing.xml:36
+#, no-c-format
+msgid "Integration testing Seam applications"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:37
+#, no-c-format
+msgid ""
+"Integration testing is slightly more difficult. In this case, we can't "
+"eliminate the container infrastructure; indeed, that is part of what is "
+"being tested! At the same time, we don't want to be forced to deploy our "
+"application to an application server to run the automated tests. We need to "
+"be able to reproduce just enough of the container infrastructure inside our "
+"testing environment to be able to exercise the whole application, without "
+"hurting performance too much."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:40
+#, no-c-format
+msgid ""
+"A second problem is emulating user interactions. A third problem is where to "
+"put our assertions. Some test frameworks let us test the whole application "
+"by reproducing user interactions with the web browser. These frameworks have "
+"their place, but they are not appropriate for use at development time."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:43
+#, no-c-format
+msgid ""
+"The approach taken by Seam is to let you write tests that script your "
+"components while running inside a pruned down container environment (Seam, "
+"together with the JBoss Embeddable EJB container). The role of the test "
+"script is basically to reproduce the interaction between the view and the "
+"Seam components. In other words, you get to pretend you are the JSF "
+"implementation!"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:46
+#, no-c-format
+msgid "This approach tests everything except the view."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:49
+#, no-c-format
+msgid "Let's consider a JSP view for the component we unit tested above:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:52
+#, no-c-format
+msgid ""
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Register New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;table border=\"0\"&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Username&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputText value=\"#{user.username}\"/&gt;&lt;/"
+"td&gt;\n"
+"       &lt;/tr&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Real Name&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputText value=\"#{user.name}\"/&gt;&lt;/td&gt;\n"
+"       &lt;/tr&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Password&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputSecret value=\"#{user.password}\"/&gt;&lt;/"
+"td&gt;\n"
+"       &lt;/tr&gt;\n"
+"     &lt;/table&gt;\n"
+"     &lt;h:messages/&gt;\n"
+"     &lt;h:commandButton type=\"submit\" value=\"Register\" action=\"#"
+"{register.register}\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:53
+#, no-c-format
+msgid ""
+"We want to test the registration functionality of our application (the stuff "
+"that happens when the user clicks the Register button). We'll reproduce the "
+"JSF request lifecycle in an automated TestNG test:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:56
+#, no-c-format
+msgid ""
+"public class RegisterTest extends SeamTest\n"
+"{\n"
+"   \n"
+"   @Test\n"
+"   public void testRegister() throws Exception\n"
+"   {\n"
+"            \n"
+"      new FacesRequest() {\n"
+"\n"
+"         @Override\n"
+"         protected void processValidations() throws Exception\n"
+"         {\n"
+"            validateValue(\"#{user.username}\", \"1ovthafew\");\n"
+"            validateValue(\"#{user.name}\", \"Gavin King\");\n"
+"            validateValue(\"#{user.password}\", \"secret\");\n"
+"            assert !isValidationFailure();\n"
+"         }\n"
+"         \n"
+"         @Override\n"
+"         protected void updateModelValues() throws Exception\n"
+"         {\n"
+"            setValue(\"#{user.username}\", \"1ovthafew\");\n"
+"            setValue(\"#{user.name}\", \"Gavin King\");\n"
+"            setValue(\"#{user.password}\", \"secret\");\n"
+"         }\n"
+"\n"
+"         @Override\n"
+"         protected void invokeApplication()\n"
+"         {\n"
+"            assert invokeMethod(\"#{register.register}\").equals(\"success"
+"\");\n"
+"         }\n"
+"\n"
+"         @Override\n"
+"         protected void renderResponse()\n"
+"         {\n"
+"            assert getValue(\"#{user.username}\").equals(\"1ovthafew\");\n"
+"            assert getValue(\"#{user.name}\").equals(\"Gavin King\");\n"
+"            assert getValue(\"#{user.password}\").equals(\"secret\");\n"
+"         }\n"
+"         \n"
+"      }.run();\n"
+"      \n"
+"   }\n"
+"\n"
+"   ...\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:57
+#, no-c-format
+msgid ""
+"Notice that we've extended <literal>SeamTest</literal>, which provides a "
+"Seam environment for our components, and written our test script as an "
+"anonymous class that extends <literal>SeamTest.FacesRequest</literal>, which "
+"provides an emulated JSF request lifecycle. (There is also a "
+"<literal>SeamTest.NonFacesRequest</literal> for testing GET requests.) We've "
+"written our code in methods which are named for the various JSF phases, to "
+"emulate the calls that JSF would make to our components. Then we've thrown "
+"in various assertions."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:60
+#, no-c-format
+msgid ""
+"You'll find plenty of integration tests for the Seam example applications "
+"which demonstrate more complex cases. There are instructions for running "
+"these tests using Ant, or using the TestNG plugin for eclipse:"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Text.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Text.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Text.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,362 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Text.xml:10
+#, no-c-format
+msgid "Seam Text"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:11
+#, no-c-format
+msgid ""
+"Collaboration-oriented websites require a human-friendly markup language for "
+"easy entry of formatted text in forum posts, wiki pages, blogs, comments, "
+"etc. Seam provides the <literal>&lt;s:formattedText/&gt;</literal> control "
+"for display of formatted text that conforms to the <emphasis>Seam Text</"
+"emphasis> language. Seam Text is implemented using an ANTLR-based parser. "
+"You don't need to know anything about ANTLR to use it, however."
+msgstr ""
+
+#. Tag: title
+#: Text.xml:15
+#, no-c-format
+msgid "Basic fomatting"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:16
+#, no-c-format
+msgid "Here is a simple example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:19
+#, no-c-format
+msgid ""
+"It's easy to make *bold text*, /italic text/, |monospace|, \n"
+"~deleted text~, super^scripts^ or _underlines_."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:20
+#, no-c-format
+msgid ""
+"If we display this using <literal>&lt;s:formattedText/&gt;</literal>, we "
+"will get the following HTML produced:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:23
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"It's easy to make &lt;b&gt;bold text&lt;/b&gt;, &lt;i&gt;italic text&lt;/"
+"i&gt;, &lt;tt&gt;monospace&lt;/tt&gt;\n"
+"&lt;del&gt;deleted text&lt;/del&gt;, super&lt;sup&gt;scripts&lt;/sup&gt; or "
+"&lt;u&gt;underlines&lt;/u&gt;.\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:24
+#, no-c-format
+msgid ""
+"We can use a blank line to indicate a new paragraph, and <literal>+</"
+"literal> to indicate a heading:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:27
+#, no-c-format
+msgid ""
+"+This is a big heading\n"
+"You /must/ have some text following a heading!\n"
+" \n"
+"++This is a smaller heading\n"
+"This is the first paragraph. We can split it across multiple \n"
+"lines, but we must end it with a blank line.\n"
+"\n"
+"This is the second paragraph."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:28
+#, no-c-format
+msgid ""
+"(Note that a simple newline is ignored, you need an additional blank line to "
+"wrap text into a new paragraph.) This is the HTML that results:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:31
+#, no-c-format
+msgid ""
+"&lt;h1&gt;This is a big heading&lt;/h1&gt;\n"
+"&lt;p&gt;\n"
+"You &lt;i&gt;must&lt;/i&gt; have some text following a heading!\n"
+"&lt;/p&gt;\n"
+" \n"
+"&lt;h2&gt;This is a smaller heading&lt;/h2&gt;\n"
+"&lt;p&gt;\n"
+"This is the first paragraph. We can split it across multiple \n"
+"lines, but we must end it with a blank line.\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"This is the second paragraph.\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:32
+#, no-c-format
+msgid ""
+"Ordered lists are created using the <literal>#</literal> character. "
+"Unordered lists use the <literal>=</literal> character:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:35
+#, no-c-format
+msgid ""
+"An ordered list:\n"
+"        \n"
+"#first item\n"
+"#second item\n"
+"#and even the /third/ item\n"
+"\n"
+"An unordered list:\n"
+"\n"
+"=an item\n"
+"=another item"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:36
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"An ordered list:\n"
+"&lt;/p&gt;\n"
+" \n"
+"&lt;ol&gt;       \n"
+"&lt;li&gt;first item&lt;/li&gt;\n"
+"&lt;li&gt;second item&lt;/li&gt;\n"
+"&lt;li&gt;and even the &lt;i&gt;third&lt;/i&gt; item&lt;/li&gt;\n"
+"&lt;/ol&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"An unordered list:\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;ul&gt;\n"
+"&lt;li&gt;an item&lt;/li&gt;\n"
+"&lt;li&gt;another item&lt;/li&gt;\n"
+"&lt;/ul&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:37
+#, no-c-format
+msgid "Quoted sections should be surrounded in double quotes:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:40
+#, no-c-format
+msgid ""
+"The other guy said:\n"
+"        \n"
+"\"Nyeah nyeah-nee \n"
+"/nyeah/ nyeah!\"\n"
+"\n"
+"But what do you think he means by \"nyeah-nee\"?"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:41
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"The other guy said:\n"
+"&lt;/p&gt;\n"
+"        \n"
+"&lt;q&gt;Nyeah nyeah-nee\n"
+"&lt;i&gt;nyeah&lt;/i&gt; nyeah!&lt;/q&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"But what do you think he means by &lt;q&gt;nyeah-nee&lt;/q&gt;?\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: title
+#: Text.xml:45
+#, no-c-format
+msgid "Entering code and text with special characters"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:46
+#, no-c-format
+msgid ""
+"Special characters such as <literal>*</literal>, <literal>|</literal> and "
+"<literal>#</literal>, along with HTML characters such as <literal>&lt;</"
+"literal>, <literal>&gt;</literal> and <literal>&amp;</literal> may be "
+"escaped using <literal>&#92;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:49
+#, no-c-format
+msgid ""
+"You can write down equations like 2&#92;*3&#92;=6 and HTML tags\n"
+"like &#92;&lt;body&#92;&gt; using the escape character: &#92;&#92;."
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:50
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"You can write down equations like 2*3=6 and HTML tags\n"
+"like &lt;body&gt; using the escape character: &#92;.\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:51
+#, no-c-format
+msgid "And we can quote code blocks using backticks:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:54
+#, no-c-format
+msgid ""
+"My code doesn't work:\n"
+"\n"
+"`for (int i=0; i&lt;100; i--)\n"
+"{\n"
+"    doSomething();\n"
+"}`\n"
+"\n"
+"Any ideas?"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:55
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"My code doesn't work:\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;pre&gt;for (int i=0; i&lt;100; i--)\n"
+"{\n"
+"    doSomething();\n"
+"}&lt;/pre&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"Any ideas?\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: title
+#: Text.xml:59
+#, no-c-format
+msgid "Links"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:60
+#, no-c-format
+msgid "A link may be created using the following syntax:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:63
+#, no-c-format
+msgid "Go to the Seam website at [=&gt;http://jboss.com/products/seam]."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:64
+#, no-c-format
+msgid "Or, if you want to specify the text of the link:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:67
+#, no-c-format
+msgid "Go to [the Seam website=&gt;http://jboss.com/products/seam]."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:68
+#, no-c-format
+msgid ""
+"For advanced users, it is even possible to customize the Seam Text parser to "
+"understand wikiword links written using this syntax."
+msgstr ""
+
+#. Tag: title
+#: Text.xml:74
+#, no-c-format
+msgid "Entering HTML"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:75
+#, no-c-format
+msgid ""
+"Text may even include a certain limited subset of HTML (don't worry, the "
+"subset is chosen to be safe from cross-site scripting attacks). This is "
+"useful for creating links:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:78
+#, no-c-format
+msgid ""
+"You might want to link to &lt;a href=\"http://jboss.com/products/seam\"&gt;"
+"something\n"
+"cool&lt;/a&gt;, or even include an image: &lt;img src=\"/logo.jpg\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:79
+#, no-c-format
+msgid "And for creating tables:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:82
+#, no-c-format
+msgid ""
+"&lt;table&gt;\n"
+"    &lt;tr&gt;&lt;td&gt;First name:&lt;/td&gt;&lt;td&gt;Gavin&lt;/td&gt;&lt;/"
+"tr&gt;\n"
+"    &lt;tr&gt;&lt;td&gt;Last name:&lt;/td&gt;&lt;td&gt;King&lt;/td&gt;&lt;/"
+"tr&gt;\n"
+"&lt;/table&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:83
+#, no-c-format
+msgid "But you can do much more if you want!"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Tools.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Tools.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Tools.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,769 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Tools.xml:10
+#, no-c-format
+msgid "Seam tools"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:12
+#, no-c-format
+msgid "jBPM designer and viewer"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:13
+#, no-c-format
+msgid ""
+"The jBPM designer and viewer will let you design and view in a nice way your "
+"business processes and your pageflows. This convenient tool is part of JBoss "
+"Eclipse IDE and more details can be found in the jBPM's documentation "
+"(http://docs.jboss.com/jbpm/v3/gpd/)"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:17
+#, no-c-format
+msgid "<title>Business process designer</title>"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:18
+#, no-c-format
+msgid "This tool lets you design your own business process in a graphical way."
+msgstr ""
+
+#. Tag: screeninfo
+#: Tools.xml:21 Tools.xml:37
+#, no-c-format
+msgid "<screeninfo>Business process designer</screeninfo>"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:33
+#, no-c-format
+msgid "Pageflow viewer"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:34
+#, no-c-format
+msgid ""
+"This tool let you design to some extend your pageflows and let you build "
+"graphical views of them so you can easily share and compare ideas on how it "
+"should be designed."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:51
+#, no-c-format
+msgid "CRUD-application generator"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:52
+#, no-c-format
+msgid ""
+"This chapter, will give you a short overview of the support for Seam that is "
+"available in the Hibernate Tools. Hibernate Tools is a set of tools for "
+"working with Hibernate and related technologies, such as JBoss Seam and "
+"EJB3. The tools are available as a set of eclipse plugins and Ant tasks. You "
+"can download the Hibernate Tools from the JBoss Eclipse IDE or Hibernate "
+"Tools websites."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:55
+#, no-c-format
+msgid ""
+"The specific support for Seam that is currently available is generation of a "
+"fully functional Seam based CRUD-application. The CRUD-application can be "
+"generated based on your existing Hibernate mapping files or EJB3 annotated "
+"POJO's or even fully reverse engineered from your existing database schema."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:58
+#, no-c-format
+msgid ""
+"The following sections is focused on the features required to understand for "
+"usage with Seam. The content is derived from the the Hibernate Tools "
+"reference documentation. Thus if you need more detailed information please "
+"refer to the Hibernate Tools documentation."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:62
+#, no-c-format
+msgid "Creating a Hibernate configuration file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:63
+#, no-c-format
+msgid ""
+"To be able to reverse engineer and generate code a hibernate.properties or "
+"hibernate.cfg.xml file is needed. The Hibernate Tools provide a wizard for "
+"generating the hibernate.cfg.xml file if you do not already have such file."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:66
+#, no-c-format
+msgid ""
+"Start the wizard by clicking \"New Wizard\" (Ctrl+N), select the Hibernate/"
+"Hibernate Configuration file (cfg.xml) wizard and press \"Next\". After "
+"selecting the wanted location for the hibernate.cfg.xml file, you will see "
+"the following page:"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:77
+#, no-c-format
+msgid ""
+"Tip: The contents in the combo boxes for the JDBC driver class and JDBC URL "
+"change automatically, depending on the Dialect and actual driver you have "
+"chosen."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:80
+#, no-c-format
+msgid ""
+"Enter your configuration information in this dialog. Details about the "
+"configuration options can be found in Hibernate reference documentation."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:83
+#, no-c-format
+msgid ""
+"Press \"Finish\" to create the configuration file, after optionally creating "
+"a Console onfiguration, the hibernate.cfg.xml will be automatically opened "
+"in an editor. The last option \"Create Console Configuration\" is enabled by "
+"default and when enabled i will automatically use the hibernate.cfg.xml for "
+"the basis of a \"Console Configuration\""
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:89
+#, no-c-format
+msgid "<title>Creating a Hibernate Console configuration</title>"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:90
+#, no-c-format
+msgid ""
+"A Console Configuration describes to the Hibernate plugin which "
+"configuration files should be used to configure hibernate, including which "
+"classpath is needed to load the POJO's, JDBC drivers etc. It is required to "
+"make usage of query prototyping, reverse engineering and code generation. "
+"You can have multiple named console configurations. Normally you would just "
+"need one per project, but more (or less) is definitly possible."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:93
+#, no-c-format
+msgid ""
+"You create a console configuration by running the Console Configuration "
+"wizard, shown in the following screenshot. The same wizard will also be used "
+"if you are coming from the hibernate.cfg.xml wizard and had enabled \"Create "
+"Console Configuration\"."
+msgstr ""
+
+#. Tag: caption
+#: Tools.xml:103
+#, no-c-format
+msgid "<caption>Creating a Hibernate Console configuration</caption>"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:105
+#, no-c-format
+msgid ""
+"The following table describes the relevant settings. The wizard can "
+"automatically detect default values for most of these if you started the "
+"Wizard with the relevant java project selected"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:109
+#, no-c-format
+msgid "Hibernate Console Configuration Parameters"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:117
+#, no-c-format
+msgid "Parameter"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:122 Tools.xml:308 Tools.xml:458
+#, no-c-format
+msgid "Description"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:127
+#, no-c-format
+msgid "Auto detected value"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:136
+#, no-c-format
+msgid "Name"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:141
+#, no-c-format
+msgid "The unique name of the configuration"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:146
+#, no-c-format
+msgid "Name of the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:153
+#, no-c-format
+msgid "Property file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:158
+#, no-c-format
+msgid "Path to a hibernate.properties file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:163
+#, no-c-format
+msgid "First hibernate.properties file found in the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:170
+#, no-c-format
+msgid "Configuration file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:175
+#, no-c-format
+msgid "Path to a hibernate.cfg.xml file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:180
+#, no-c-format
+msgid "First hibernate.cfg.xml file found in the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:187
+#, no-c-format
+msgid "Enable Hibernate ejb3/annotations"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:192
+#, no-c-format
+msgid ""
+"Selecting this option enables usage of annotated classes. hbm.xml files are "
+"of course still possible to use too. This feature requires running the "
+"Eclipse IDE with a JDK 5 runtime, otherwise you will get classloading and/or "
+"version errors."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:197
+#, no-c-format
+msgid "Not enabled"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:204
+#, no-c-format
+msgid "Mapping files"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:209
+#, no-c-format
+msgid ""
+"List of additional mapping files that should be loaded. Note: A hibernate."
+"cfg.xml can also contain mappings. Thus if these a duplicated here, you will "
+"get \"Duplicate mapping\" errors when using the console configuration."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:214
+#, no-c-format
+msgid ""
+"If no hibernate.cfg.xml file is found, all hbm.xml files found in the "
+"selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:221
+#, no-c-format
+msgid "Classpath"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:226
+#, no-c-format
+msgid ""
+"The classpath for loading POJO and JDBC drivers. Do not add Hibernate core "
+"libraries or dependencies, they are already included. If you get "
+"ClassNotFound errors then check this list for possible missing or redundant "
+"directories/jars."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:231
+#, no-c-format
+msgid ""
+"The default build output directory and any JARs with a class implementing "
+"java.sql.Driver in the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:239
+#, no-c-format
+msgid ""
+"Clicking \"Finish\" creates the configuration and shows it in the "
+"\"Hibernate Configurations\" view"
+msgstr ""
+
+#. Tag: caption
+#: Tools.xml:249
+#, no-c-format
+msgid "Console overview"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:254
+#, no-c-format
+msgid "Reverse engineering and code generation"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:255
+#, no-c-format
+msgid ""
+"A very simple \"click-and-generate\" reverse engineering and code generation "
+"facility is available. It is this facility that allows you to generate the "
+"skeleton for a full Seam CRUD application."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:258
+#, no-c-format
+msgid ""
+"To start working with this process, start the \"Hibernate Code Generation\" "
+"which is available in the toolbar via the Hibernate icon or via the \"Run/"
+"Hibernate Code Generation\" menu item."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:262
+#, no-c-format
+msgid "Code Generation Launcher"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:263
+#, no-c-format
+msgid ""
+"When you click on \"Hibernate Code Generation\" the standard Eclipse "
+"launcher dialog will appear. In this dialog you can create, edit and delete "
+"named Hibernate code generation \"launchers\"."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:274
+#, no-c-format
+msgid ""
+"The dialog has the standard tabs \"Refresh\" and \"Common\" that can be used "
+"to configure which directories should be automatically refreshed and various "
+"general settings launchers, such as saving them in a project for sharing the "
+"launcher within a team."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:285
+#, no-c-format
+msgid ""
+"The first time you create a code generation launcher you should give it a "
+"meaningfull name, otherwise the default prefix \"New_Generation\" will be "
+"used."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:288
+#, no-c-format
+msgid ""
+"Note: The \"At least one exporter option must be selected\" is just a "
+"warning stating that for this launch to work you need to select an exporter "
+"on the Exporter tab. When an exporter has been selected the warning will "
+"disappear."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:291
+#, no-c-format
+msgid "On the \"Main\" tab you the following fields:"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:295
+#, no-c-format
+msgid "Code generation \"Main\" tab fields"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:303 Tools.xml:453
+#, no-c-format
+msgid "Field"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:317
+#, no-c-format
+msgid "Console Configuration"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:322
+#, no-c-format
+msgid ""
+"The name of the console configuration which should be used when code "
+"generating."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:329
+#, no-c-format
+msgid "Output directory"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:334
+#, no-c-format
+msgid ""
+"Path to a directory into where all output will be written by default. Be "
+"aware that existing files will be overwritten, so be sure to specify the "
+"correct directory."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:341
+#, no-c-format
+msgid "Reverse engineer from JDBC Connection"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:346
+#, no-c-format
+msgid ""
+"If enabled the tools will reverse engineer the database available via the "
+"connection information in the selected Hibernate Console Configuration and "
+"generate code based on the database schema. If not enabled the code "
+"generation will just be based on the mappings already specified in the "
+"Hibernate Console configuration."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:353
+#, no-c-format
+msgid "Package"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:358
+#, no-c-format
+msgid ""
+"The package name here is used as the default package name for any entities "
+"found when reverse engineering."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:365
+#, no-c-format
+msgid "reveng.xml"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:370
+#, no-c-format
+msgid ""
+"Path to a reveng.xml file. A reveng.xml file allows you to control certain "
+"aspects of the reverse engineering. e.g. how jdbc types are mapped to "
+"hibernate types and especially important which tables are included/excluded "
+"from the process. Clicking \"setup\" allows you to select an existing reveng."
+"xml file or create a new one.."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:377
+#, no-c-format
+msgid "reveng. strategy"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:382
+#, no-c-format
+msgid ""
+"If reveng.xml does not provide enough customization you can provide your own "
+"implementation of an ReverseEngineeringStrategy. The class need to be in the "
+"claspath of the Console Configuration, otherwise you will get class not "
+"found exceptions."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:389
+#, no-c-format
+msgid "Generate basic typed composite ids"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:394
+#, no-c-format
+msgid ""
+"This field should always be enabled when generating the Seam CRUD "
+"application. A table that has a multi-colum primary key a &lt;composite-"
+"id&gt; mapping will always be created. If this option is enabled and there "
+"are matching foreign-keys each key column is still considered a 'basic' "
+"scalar (string, long, etc.) instead of a reference to an entity. If you "
+"disable this option a &lt;key-many-to-one&gt; instead. Note: a &lt;many-to-"
+"one&gt; property is still created, but is simply marked as non-updatable and "
+"non-insertable."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:401
+#, no-c-format
+msgid "Use custom templates"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:406
+#, no-c-format
+msgid ""
+"If enabled, the Template directory will be searched first when looking up "
+"the velocity templates, allowing you to redefine how the individual "
+"templates process the hibernate mapping model."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:413
+#, no-c-format
+msgid "Template directory"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:418
+#, no-c-format
+msgid "A path to a directory with custom velocity templates."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:429
+#, no-c-format
+msgid "Exporters"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:430
+#, no-c-format
+msgid ""
+"The exporters tab is used to specify which type of code that should be "
+"generated. Each selection represents an \"Exporter\" that are responsible "
+"for generating the code, hence the name."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:441
+#, no-c-format
+msgid ""
+"The following table describes in short the various exporters. The most "
+"relevant for Seam is of course the \"JBoss Seam Skeleton app\"."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:445
+#, no-c-format
+msgid "Code generation \"Exporter\" tab fields"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:467
+#, no-c-format
+msgid "Generate domain code"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:472
+#, no-c-format
+msgid ""
+"Generates POJO's for all the persistent classes and components found in the "
+"given Hibernate configuration."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:479
+#, no-c-format
+msgid "JDK 1.5 constructs"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:484
+#, no-c-format
+msgid "When enabled the POJO's will use JDK 1.5 constructs."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:491
+#, no-c-format
+msgid "EJB3/JSR-220 annotations"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:496
+#, no-c-format
+msgid ""
+"When enabled the POJO's will be annotated according to the EJB3/JSR-220 "
+"persistency specification."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:503
+#, no-c-format
+msgid "Generate DAO code"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:508
+#, no-c-format
+msgid "Generates a set of DAO's for each entity found."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:515
+#, no-c-format
+msgid "Generate Mappings"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:520
+#, no-c-format
+msgid "Generate mapping (hbm.xml) files for each entity"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:527
+#, no-c-format
+msgid "Generate hibernate configuration file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:532
+#, no-c-format
+msgid ""
+"Generate a hibernate.cfg.xml file. Used to keep the hibernate.cfg.xml "
+"uptodate with any new found mapping files."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:539
+#, no-c-format
+msgid "Generate schema html-documentation"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:544
+#, no-c-format
+msgid ""
+"Generates set of html pages that documents the database schema and some of "
+"the mappings."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:551
+#, no-c-format
+msgid "Generate JBoss Seam skeleton app (beta)"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:556
+#, no-c-format
+msgid ""
+"Generates a complete JBoss Seam skeleton app. The generation will include "
+"annotated POJO's, Seam controller beans and a JSP for the presentation "
+"layer. See the generated readme.txt for how to use it."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:559
+#, no-c-format
+msgid ""
+"Note: this exporter generates a full application, including a build.xml thus "
+"you will get the best results if you use an output directory which is the "
+"root of your project."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:570
+#, no-c-format
+msgid "Generating and using the code"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:571
+#, no-c-format
+msgid ""
+"When you have finished filling out the settings, simply press \"Run\" to "
+"start the generation of code. This might take a little while if you are "
+"reverse engineering from a database."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:574
+#, no-c-format
+msgid ""
+"When the generation have finished you should now have a complete skeleton "
+"Seam application in the output directory. In the output directory there is a "
+"<literal>readme.txt</literal> file describing the steps needed to deploy and "
+"run the example."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:577
+#, no-c-format
+msgid ""
+"If you want to regenerate/update the skeleton code then simply run the code "
+"generation again by selecting the \"Hibernate Code Generation\" in the "
+"toolbar or \"Run\" menu. Enjoy."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Tutorial.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Tutorial.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Tutorial.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,4041 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Tutorial.xml:10
+#, no-c-format
+msgid "Seam Tutorial"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:12
+#, no-c-format
+msgid "Try the examples"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:13
+#, no-c-format
+msgid ""
+"In this tutorial, we'll assume that you have downloaded JBoss AS 4.0.5 and "
+"installed the EJB 3.0 profile (using the JBoss AS installer). You should "
+"also have a copy of Seam downloaded and extracted to a work directory."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:16
+#, no-c-format
+msgid "The directory structure of each example in Seam follows this pattern:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:21
+#, no-c-format
+msgid ""
+"Web pages, images and stylesheets may be found in <filename>examples/"
+"<replaceable>registration</replaceable>/view</filename>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:26
+#, no-c-format
+msgid ""
+"Resources such as deployment descriptors and data import scripts may be "
+"found in <filename>examples/<replaceable>registration</replaceable>/"
+"resources</filename>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:31
+#, no-c-format
+msgid ""
+"Java source code may be found in <filename>examples/"
+"<replaceable>registration</replaceable>/src</filename>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:36
+#, no-c-format
+msgid ""
+"The Ant build script is <filename>examples/<replaceable>registration</"
+"replaceable>/build.xml</filename>"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:42
+#, no-c-format
+msgid "Running the examples on JBoss AS"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:43
+#, no-c-format
+msgid ""
+"First, make sure you have Ant correctly installed, with <literal>&#36;"
+"ANT_HOME</literal> and <literal>&#36;JAVA_HOME</literal> set correctly. "
+"Next, make sure you set the location of your JBoss AS 4.0.5 installation in "
+"the <literal>build.properties</literal> file in the root folder of your Seam "
+"installation. If you haven't already done so, start JBoss AS now by typing "
+"<literal>bin/run.sh</literal> or <literal>bin/run.bat</literal> in the root "
+"directory of your JBoss installation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:46
+#, no-c-format
+msgid ""
+"By default the examples will deploy to the default configuration of the "
+"server. If the server has been started using an a configuration other than "
+"default then the example <literal>build.xml</literal> file should be "
+"modified to reflect this before building and deploying. Two lines should be "
+"changed in this file:"
+msgstr ""
+
+#. Tag: screen
+#: Tutorial.xml:49
+#, no-c-format
+msgid ""
+"&lt;property name=\"deploy.dir\"           value=\"${jboss.home}/server/"
+"default/deploy\"/&gt;"
+msgstr ""
+
+#. Tag: screen
+#: Tutorial.xml:50
+#, no-c-format
+msgid ""
+"&lt;property name=\"webroot.dir\"         \n"
+"        value=\"${deploy.dir}/jboss-web.deployer/ROOT.war\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:51
+#, no-c-format
+msgid ""
+"Now, build and deploy the example by typing <literal>ant deploy</literal> in "
+"the <filename>examples/<replaceable>registration</replaceable></filename> "
+"directory."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:54
+#, no-c-format
+msgid ""
+"Try it out by accessing <ulink url=\"http://localhost:8080/seam-registration/"
+"\"><literal>http://localhost:8080/seam-registration/</literal></ulink> with "
+"your web browser."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:60
+#, no-c-format
+msgid "Running the examples on Tomcat"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:61
+#, no-c-format
+msgid ""
+"First, make sure you have Ant correctly installed, with <literal>&#36;"
+"ANT_HOME</literal> and <literal>&#36;JAVA_HOME</literal> set correctly. "
+"Next, make sure you set the location of your Tomcat 5.5 installation in the "
+"<literal>build.properties</literal> file in the root folder of your Seam "
+"installation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:64
+#, no-c-format
+msgid ""
+"Now, build and deploy the example by typing <literal>ant deploy.tomcat</"
+"literal> in the <filename>examples/<replaceable>registration</replaceable></"
+"filename> directory."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:67
+#, no-c-format
+msgid "Finally, start Tomcat."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:70
+#, no-c-format
+msgid ""
+"Try it out by accessing <ulink url=\"http://localhost:8080/jboss-seam-"
+"registration/\"><literal>http://localhost:8080/jboss-seam-registration/</"
+"literal></ulink> with your web browser."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:73
+#, no-c-format
+msgid ""
+"When you deploy the example to Tomcat, any EJB3 components will run inside "
+"the JBoss Embeddable EJB3 container, a complete standalone EJB3 container "
+"environment."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:79
+#, no-c-format
+msgid "Running the example tests"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:80
+#, no-c-format
+msgid ""
+"Most of the examples come with a suite of TestNG integration tests. The "
+"easiest way to run the tests is to run <literal>ant testexample</literal> "
+"inside the <filename>examples/<replaceable>registration</replaceable></"
+"filename> directory. It is also possible to run the tests inside your IDE "
+"using the TestNG plugin."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:88
+#, no-c-format
+msgid "Your first Seam application: the registration example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:89
+#, no-c-format
+msgid ""
+"The registration example is a fairly trivial application that lets a new "
+"user store his username, real name and password in the database. The example "
+"isn't intended to show off all of the cool functionality of Seam. However, "
+"it demonstrates the use of an EJB3 session bean as a JSF action listener, "
+"and basic configuration of Seam."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:92
+#, no-c-format
+msgid ""
+"We'll go slowly, since we realize you might not yet be familiar with EJB 3.0."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:95
+#, no-c-format
+msgid ""
+"The start page displays a very basic form with three input fields. Try "
+"filling them in and then submitting the form. This will save a user object "
+"in the database."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:107 Tutorial.xml:424 Tutorial.xml:563 Tutorial.xml:723
+#, no-c-format
+msgid "Understanding the code"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:108
+#, no-c-format
+msgid ""
+"The example is implemented with two JSP pages, one entity bean and one "
+"stateless session bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:119
+#, no-c-format
+msgid "Let's take a look at the code, starting from the \"bottom\"."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:123
+#, no-c-format
+msgid "The entity bean: <literal>User.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:124
+#, no-c-format
+msgid ""
+"We need an EJB entity bean for user data. This class defines "
+"<emphasis>persistence</emphasis> and <emphasis>validation</emphasis> "
+"declaratively, via annotations. It also needs some extra annotations that "
+"define the class as a Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:140
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"user\")\n"
+"@Scope(SESSION)\n"
+"@Table(name=\"users\")\n"
+"public class User implements Serializable\n"
+"{\n"
+"   private static final long serialVersionUID = 1881413500711441951L;\n"
+"   \n"
+"   private String username;\n"
+"   private String password;\n"
+"   private String name;\n"
+"   \n"
+"   public User(String name, String password, String username)\n"
+"   {\n"
+"      this.name = name;\n"
+"      this.password = password;\n"
+"      this.username = username;\n"
+"   }\n"
+"   \n"
+"   public User() {}\n"
+"   \n"
+"   @NotNull @Length(min=5, max=15)\n"
+"   public String getPassword()\n"
+"   {\n"
+"      return password;\n"
+"   }\n"
+"\n"
+"   public void setPassword(String password)\n"
+"   {\n"
+"      this.password = password;\n"
+"   }\n"
+"   \n"
+"   @NotNull\n"
+"   public String getName()\n"
+"   {\n"
+"      return name;\n"
+"   }\n"
+"\n"
+"   public void setName(String name)\n"
+"   {\n"
+"      this.name = name;\n"
+"   }\n"
+"   \n"
+"   @Id @NotNull @Length(min=5, max=15)\n"
+"   public String getUsername()\n"
+"   {\n"
+"      return username;\n"
+"   }\n"
+"\n"
+"   public void setUsername(String username)\n"
+"   {\n"
+"      this.username = username;\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:143
+#, no-c-format
+msgid ""
+"The EJB3 standard <literal>@Entity</literal> annotation indicates that the "
+"<literal>User</literal> class is an entity bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:148
+#, no-c-format
+msgid ""
+"A Seam component needs a <emphasis>component name</emphasis> specified by "
+"the <link linkend=\"name-annotation\"><literal>@Name</literal></link> "
+"annotation. This name must be unique within the Seam application. When JSF "
+"asks Seam to resolve a context variable with a name that is the same as a "
+"Seam component name, and the context variable is currently undefined (null), "
+"Seam will instantiate that component, and bind the new instance to the "
+"context variable. In this case, Seam will instantiate a <literal>User</"
+"literal> the first time JSF encounters a variable named <literal>user</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:153
+#, no-c-format
+msgid ""
+"Whenever Seam instantiates a component, it binds the new instance to a "
+"context variable in the component's <emphasis>default context</emphasis>. "
+"The default context is specified using the <link linkend=\"scope-annotation"
+"\"><literal>@Scope</literal></link> annotation. The <literal>User</literal> "
+"bean is a session scoped component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:158
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Table</literal> annotation indicates that the "
+"<literal>User</literal> class is mapped to the <literal>users</literal> "
+"table."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:163
+#, no-c-format
+msgid ""
+"<literal>name</literal>, <literal>password</literal> and <literal>username</"
+"literal> are the persistent attributes of the entity bean. All of our "
+"persistent attributes define accessor methods. These are needed when this "
+"component is used by JSF in the render response and update model values "
+"phases."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:168
+#, no-c-format
+msgid ""
+"An empty constructor is both required by both the EJB specification and by "
+"Seam."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:173
+#, no-c-format
+msgid ""
+"The <literal>@NotNull</literal> and <literal>@Length</literal> annotations "
+"are part of the Hibernate Validator framework. Seam integrates Hibernate "
+"Validator and lets you use it for data validation (even if you are not using "
+"Hibernate for persistence)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:178
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Id</literal> annotation indicates the primary key "
+"attribute of the entity bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:185
+#, no-c-format
+msgid ""
+"The most important things to notice in this example are the <literal>@Name</"
+"literal> and <literal>@Scope</literal> annotations. These annotations "
+"establish that this class is a Seam component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:188
+#, no-c-format
+msgid ""
+"We'll see below that the properties of our <literal>User</literal> class are "
+"bound to directly to JSF components and are populated by JSF during the "
+"update model values phase. We don't need any tedious glue code to copy data "
+"back and forth between the JSP pages and the entity bean domain model."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:191
+#, no-c-format
+msgid ""
+"However, entity beans shouldn't do transaction management or database "
+"access. So we can't use this component as a JSF action listener. For that we "
+"need a session bean."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:198
+#, no-c-format
+msgid ""
+"The stateless session bean class: <literal>RegisterAction.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:199
+#, no-c-format
+msgid ""
+"Most Seam application use session beans as JSF action listeners (you can use "
+"JavaBeans instead if you like)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:202
+#, no-c-format
+msgid ""
+"We have exactly one JSF action in our application, and one session bean "
+"method attached to it. In this case, we'll use a stateless session bean, "
+"since all the state associated with our action is held by the <literal>User</"
+"literal> bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:205
+#, no-c-format
+msgid "This is the only really interesting code in the example!"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:222
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"register\")\n"
+"public class RegisterAction implements Register\n"
+"{\n"
+"\n"
+"   @In\n"
+"   private User user;\n"
+"   \n"
+"   @PersistenceContext\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @Logger\n"
+"   private Log log;\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = em.createQuery(\n"
+"         \"select username from User where username=#{user.username}\")\n"
+"         .getResultList();\n"
+"         \n"
+"      if (existing.size()==0)\n"
+"      {\n"
+"         em.persist(user);\n"
+"         log.info(\"Registered new user #{user.username}\");\n"
+"         return \"/registered.jsp\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         FacesMessages.instance().add(\"User #{user.username} already exists"
+"\");\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:225
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Stateless</literal> annotation marks this class "
+"as stateless session bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:230
+#, no-c-format
+msgid ""
+"The <link linkend=\"in-annotation\"><literal>@In</literal></link> annotation "
+"marks an attribute of the bean as injected by Seam. In this case, the "
+"attribute is injected from a context variable named <literal>user</literal> "
+"(the instance variable name)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:235
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@PersistenceContext</literal> annotation is used "
+"to inject the EJB3 entity manager."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:240
+#, no-c-format
+msgid ""
+"The Seam <literal>@Logger</literal> annotation is used to inject the "
+"component's <literal>Log</literal> instance."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:245
+#, no-c-format
+msgid ""
+"The action listener method uses the standard EJB3 <literal>EntityManager</"
+"literal> API to interact with the database, and returns the JSF outcome. "
+"Note that, since this is a sesson bean, a transaction is automatically begun "
+"when the <literal>register()</literal> method is called, and committed when "
+"it completes."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:250
+#, no-c-format
+msgid ""
+"Notice that Seam lets you use a JSF EL expression inside EJB-QL. Under the "
+"covers, this results in an ordinary JPA <literal>setParameter()</literal> "
+"call on the standard JPA <literal>Query</literal> object. Nice, huh?"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:255
+#, no-c-format
+msgid ""
+"The <literal>Log</literal> API lets us easily display templated log messages."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:260
+#, no-c-format
+msgid ""
+"JSF action listener methods return a string-valued outcome that determines "
+"what page will be displayed next. A null outcome (or a void action listener "
+"method) redisplays the previous page. In plain JSF, it is normal to always "
+"use a JSF <emphasis>navigation rule</emphasis> to determine the JSF view id "
+"from the outcome. For complex application this indirection is useful and a "
+"good practice. However, for very simple examples like this one, Seam lets "
+"you use the JSF view id as the outcome, eliminating the requirement for a "
+"navigation rule. <emphasis>Note that when you use a view id as an outcome, "
+"Seam always performs a browser redirect.</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:265
+#, no-c-format
+msgid ""
+"Seam provides a number of <emphasis>built-in components</emphasis> to help "
+"solve common problems. The <literal>FacesMessages</literal> component makes "
+"it easy to display templated error or success messages. Built-in Seam "
+"components may be obtained by injection, or by calling an <literal>instance()"
+"</literal> method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:272
+#, no-c-format
+msgid ""
+"Note that we did not explicitly specify a <literal>@Scope</literal> this "
+"time. Each Seam component type has a default scope if not explicitly "
+"specified. For stateless session beans, the default scope is the stateless "
+"context. Actually, <emphasis>all</emphasis> stateless session beans belong "
+"in the stateless context."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:275
+#, no-c-format
+msgid ""
+"Our session bean action listener performs the business and persistence logic "
+"for our mini-application. In more complex applications, we might need to "
+"layer the code and refactor persistence logic into a dedicated data access "
+"component. That's perfectly trivial to do. But notice that Seam does not "
+"force you into any particular strategy for application layering."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:278
+#, no-c-format
+msgid ""
+"Furthermore, notice that our session bean has simultaneous access to context "
+"associated with the web request (the form values in the <literal>User</"
+"literal> object, for example), and state held in transactional resources "
+"(the <literal>EntityManager</literal> object). This is a break from "
+"traditional J2EE architectures. Again, if you are more comfortable with the "
+"traditional J2EE layering, you can certainly implement that in a Seam "
+"application. But for many applications, it's simply not very useful."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:285
+#, no-c-format
+msgid "The session bean local interface: <literal>Register.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:286
+#, no-c-format
+msgid "Naturally, our session bean needs a local interface."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:291
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface Register\n"
+"{\n"
+"   public String register();\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:292
+#, no-c-format
+msgid "That's the end of the Java code. Now onto the deployment descriptors."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:298
+#, no-c-format
+msgid ""
+"The Seam component deployment descriptor: <literal>components.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:299
+#, no-c-format
+msgid ""
+"If you've used many Java frameworks before, you'll be used to having to "
+"declate all your component classes in some kind of XML file that gradually "
+"grows more and more unmanageable as your project matures. You'll be relieved "
+"to know that Seam does not require that application components be "
+"accompanied by XML. Most Seam applications require a very small amount of "
+"XML that does not grow very much as the project gets bigger."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:302
+#, no-c-format
+msgid ""
+"Nevertheless, it is often useful to be able to provide for <emphasis>some</"
+"emphasis> external configuration of <emphasis>some</emphasis> components "
+"(particularly the components built in to Seam). You have a couple of options "
+"here, but the most flexible option is to provide this configuration in a "
+"file called <literal>components.xml</literal>, located in the <literal>WEB-"
+"INF</literal> directory. We'll use the <literal>components.xml</literal> "
+"file to tell Seam how to find our EJB components in JNDI:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:305
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"&gt;\n"
+"     &lt;core:init jndi-pattern=\"@jndiPattern@\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:306
+#, no-c-format
+msgid ""
+"This code configures a property named <literal>jndiPattern</literal> of a "
+"built-in Seam component named <literal>org.jboss.seam.core.init</literal>."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:312
+#, no-c-format
+msgid "The web deployment description: <literal>web.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:313
+#, no-c-format
+msgid ""
+"The presentation layer for our mini-application will be deployed in a WAR. "
+"So we'll need a web deployment descriptor."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:316
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;web-app version=\"2.5\"\n"
+"    xmlns=\"http://java.sun.com/xml/ns/javaee\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n"
+"        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\"&gt;\n"
+"\n"
+"    &lt;!-- Seam --&gt;\n"
+"\n"
+"    &lt;listener&gt;\n"
+"        &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/"
+"listener-class&gt;\n"
+"    &lt;/listener&gt;\n"
+"\n"
+"    &lt;!-- MyFaces --&gt;\n"
+"\n"
+"    &lt;listener&gt;\n"
+"        &lt;listener-class&gt;\n"
+"            org.apache.myfaces.webapp.StartupServletContextListener\n"
+"        &lt;/listener-class&gt;\n"
+"    &lt;/listener&gt;\n"
+"\n"
+"    &lt;context-param&gt;\n"
+"        &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-"
+"name&gt;\n"
+"        &lt;param-value&gt;client&lt;/param-value&gt;\n"
+"    &lt;/context-param&gt;\n"
+"\n"
+"    &lt;servlet&gt;\n"
+"        &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;\n"
+"        &lt;servlet-class&gt;javax.faces.webapp.FacesServlet&lt;/servlet-"
+"class&gt;\n"
+"        &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;\n"
+"    &lt;/servlet&gt;\n"
+"\n"
+"    &lt;!-- Faces Servlet Mapping --&gt;\n"
+"    &lt;servlet-mapping&gt;\n"
+"        &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;\n"
+"        &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;\n"
+"    &lt;/servlet-mapping&gt;\n"
+"\n"
+"&lt;/web-app&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:317
+#, no-c-format
+msgid ""
+"This <literal>web.xml</literal> file configures Seam and MyFaces. The "
+"configuration you see here is pretty much identical in all Seam applications."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:323
+#, no-c-format
+msgid "The JSF configration: <literal>faces-config.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:324
+#, no-c-format
+msgid ""
+"All Seam applications use JSF views as the presentation layer. So we'll need "
+"<literal>faces-config.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:327
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;!DOCTYPE faces-config \n"
+"PUBLIC \"-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN\"\n"
+"                            \"http://java.sun.com/dtd/web-facesconfig_1_0.dtd"
+"\"&gt;\n"
+"&lt;faces-config&gt;\n"
+"\n"
+"    &lt;!-- A phase listener is needed by all Seam applications --&gt;\n"
+"    \n"
+"    &lt;lifecycle&gt;\n"
+"        &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-"
+"listener&gt;\n"
+"    &lt;/lifecycle&gt;\n"
+"\n"
+"&lt;/faces-config&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:328
+#, no-c-format
+msgid ""
+"The <literal>faces-config.xml</literal> file integrates Seam into JSF. Note "
+"that we don't need any JSF managed bean declarations! The managed beans are "
+"the Seam components. In Seam applications, the <literal>faces-config.xml</"
+"literal> is used much less often than in plain JSF."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:331
+#, no-c-format
+msgid ""
+"In fact, once you have all the basic descriptors set up, the <emphasis>only</"
+"emphasis> XML you need to write as you add new functionality to a Seam "
+"application is the navigation rules, and possibly jBPM process definitions. "
+"Seam takes the view that <emphasis>process flow</emphasis> and "
+"<emphasis>configuration data</emphasis> are the only things that truly "
+"belong in XML."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:334
+#, no-c-format
+msgid ""
+"In this simple example, we don't even need a navigation rule, since we "
+"decided to embed the view id in our action code."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:340
+#, no-c-format
+msgid "The EJB deployment descriptor: <literal>ejb-jar.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:341
+#, no-c-format
+msgid ""
+"The <literal>ejb-jar.xml</literal> file integrates Seam with EJB3, by "
+"attaching the <literal>SeamInterceptor</literal> to all session beans in the "
+"archive."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:344
+#, no-c-format
+msgid ""
+"&lt;ejb-jar xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \n"
+"         xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n"
+"         http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd\"\n"
+"         version=\"3.0\"&gt;\n"
+"         \n"
+"   &lt;interceptors&gt;\n"
+"     &lt;interceptor&gt;\n"
+"       &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"     &lt;/interceptor&gt;\n"
+"   &lt;/interceptors&gt;\n"
+"   \n"
+"   &lt;assembly-descriptor&gt;\n"
+"      &lt;interceptor-binding&gt;\n"
+"         &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"         &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"      &lt;/interceptor-binding&gt;\n"
+"   &lt;/assembly-descriptor&gt;\n"
+"   \n"
+"&lt;/ejb-jar&gt;"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:348
+#, no-c-format
+msgid ""
+"The EJB persistence deployment descriptor: <literal>persistence.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:349
+#, no-c-format
+msgid ""
+"The <literal>persistence.xml</literal> file tells the EJB persistence "
+"provider where to find the datasource, and contains some vendor-specific "
+"settings. In this case, enables automatic schema export at startup time."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:352
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;persistence xmlns=\"http://java.sun.com/xml/ns/persistence\" \n"
+"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence \n"
+"             http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd\" \n"
+"             version=\"1.0\"&gt;\n"
+"    &lt;persistence-unit name=\"userDatabase\"&gt;\n"
+"      &lt;provider&gt;org.hibernate.ejb.HibernatePersistence&lt;/"
+"provider&gt;\n"
+"      &lt;jta-data-source&gt;java:/DefaultDS&lt;/jta-data-source&gt;\n"
+"      &lt;properties&gt;\n"
+"         &lt;property name=\"hibernate.hbm2ddl.auto\" value=\"create-drop\"/"
+"&gt;\n"
+"      &lt;/properties&gt;\n"
+"    &lt;/persistence-unit&gt;\n"
+"&lt;/persistence&gt;"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:356
+#, no-c-format
+msgid ""
+"The view: <literal>register.jsp</literal> and <literal>registered.jsp</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:357
+#, no-c-format
+msgid ""
+"The view pages for a Seam application could be implemented using any "
+"technology that supports JSF. In this example we use JSP, since it is "
+"familiar to most developers and since we have minimal requirements here "
+"anyway. (But if you take our advice, you'll use Facelets for your own "
+"applications.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:360
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://jboss.com/products/seam/taglib\" prefix=\"s\" "
+"&#37;&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Register New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;table border=\"0\"&gt;\n"
+"       &lt;s:validateAll&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Username&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputText value=\"#{user.username}\"/&gt;&lt;/"
+"td&gt;\n"
+"         &lt;/tr&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Real Name&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputText value=\"#{user.name}\"/&gt;&lt;/td&gt;\n"
+"         &lt;/tr&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Password&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputSecret value=\"#{user.password}\"/&gt;&lt;/"
+"td&gt;\n"
+"         &lt;/tr&gt;\n"
+"       &lt;/s:validateAll&gt;\n"
+"     &lt;/table&gt;\n"
+"     &lt;h:messages/&gt;\n"
+"     &lt;h:commandButton type=\"submit\" value=\"Register\" action=\"#"
+"{register.register}\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:361
+#, no-c-format
+msgid ""
+"The only thing here that is specific to Seam is the <literal>&lt;s:"
+"validateAll&gt;</literal> tag. This JSF component tells JSF to validate all "
+"the contained input fields against the Hibernate Validator annotations "
+"specified on the entity bean."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:364
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Successfully Registered New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"    Welcome, &lt;h:outputText value=\"#{user.name}\"/&gt;, \n"
+"    you are successfully registered as &lt;h:outputText value=\"#{user."
+"username}\"/&gt;.\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:365
+#, no-c-format
+msgid ""
+"This is a boring old JSP pages using standard JSF components. There is "
+"nothing specific to Seam here."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:371
+#, no-c-format
+msgid "The EAR deployment descriptor: <literal>application.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:372
+#, no-c-format
+msgid ""
+"Finally, since our application is deployed as an EAR, we need a deployment "
+"descriptor there, too."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:375
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;application xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee \n"
+"             http://java.sun.com/xml/ns/javaee/application_5.xsd\"\n"
+"             version=\"5\"&gt;\n"
+"             \n"
+"    &lt;display-name&gt;Seam Registration&lt;/display-name&gt;\n"
+"\n"
+"    &lt;module&gt;\n"
+"        &lt;web&gt;\n"
+"            &lt;web-uri&gt;jboss-seam-registration.war&lt;/web-uri&gt;\n"
+"            &lt;context-root&gt;/seam-registration&lt;/context-root&gt;\n"
+"        &lt;/web&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;ejb&gt;jboss-seam-registration.jar&lt;/ejb&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;jboss-seam.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;el-api.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;el-ri.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    \n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:376
+#, no-c-format
+msgid ""
+"This deployment descriptor links modules in the enterprise archive and binds "
+"the web application to the context root <literal>/seam-registration</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:387 Tutorial.xml:535 Tutorial.xml:698 Tutorial.xml:813
+#, no-c-format
+msgid "How it works"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:388
+#, no-c-format
+msgid ""
+"When the form is submitted, JSF asks Seam to resolve the variable named "
+"<literal>user</literal>. Since there is no value already bound to that name "
+"(in any Seam context), Seam instantiates the <literal>user</literal> "
+"component, and returns the resulting <literal>User</literal> entity bean "
+"instance to JSF after storing it in the Seam session context."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:391
+#, no-c-format
+msgid ""
+"The form input values are now validated against the Hibernate Validator "
+"constraints specified on the <literal>User</literal> entity. If the "
+"constraints are violated, JSF redisplays the page. Otherwise, JSF binds the "
+"form input values to properties of the <literal>User</literal> entity bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:394
+#, no-c-format
+msgid ""
+"Next, JSF asks Seam to resolve the variable named <literal>register</"
+"literal>. Seam finds the <literal>RegisterAction</literal> stateless session "
+"bean in the stateless context and returns it. JSF invokes the "
+"<literal>register()</literal> action listener method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:397
+#, no-c-format
+msgid ""
+"Seam intercepts the method call and injects the <literal>User</literal> "
+"entity from the Seam session context, before continuing the invocation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:400
+#, no-c-format
+msgid ""
+"The <literal>register()</literal> method checks if a user with the entered "
+"username already exists. If so, an error message is queued with the "
+"<literal>FacesMessages</literal> component, and a null outcome is returned, "
+"causing a page redisplay. The <literal>FacesMessages</literal> component "
+"interpolates the JSF expression embedded in the message string and adds a "
+"JSF <literal>FacesMessage</literal> to the view."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:403
+#, no-c-format
+msgid ""
+"If no user with that username exists, the <literal>\"/registered.jsp\"</"
+"literal> outcome triggers a browser redirect to the <literal>registered.jsp</"
+"literal> page. When JSF comes to render the page, it asks Seam to resolve "
+"the variable named <literal>user</literal> and uses property values of the "
+"returned <literal>User</literal> entity from Seam's session scope."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:411
+#, no-c-format
+msgid "Clickable lists in Seam: the messages example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:412
+#, no-c-format
+msgid ""
+"Clickable lists of database search results are such an important part of any "
+"online application that Seam provides special functionality on top of JSF to "
+"make it easier to query data using EJB-QL or HQL and display it as a "
+"clickable list using a JSF <literal>&lt;h:dataTable&gt;</literal>. The "
+"messages example demonstrates this functionality."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:425
+#, no-c-format
+msgid ""
+"The message list example has one entity bean, <literal>Message</literal>, "
+"one session bean, <literal>MessageListBean</literal> and one JSP."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:429
+#, no-c-format
+msgid "The entity bean: <literal>Message.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:430
+#, no-c-format
+msgid ""
+"The <literal>Message</literal> entity defines the title, text, date and time "
+"of a message, and a flag indicating whether the message has been read:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:433
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"message\")\n"
+"@Scope(EVENT)\n"
+"public class Message implements Serializable\n"
+"{\n"
+"   private Long id;\n"
+"   private String title;\n"
+"   private String text;\n"
+"   private boolean read;\n"
+"   private Date datetime;\n"
+"   \n"
+"   @Id @GeneratedValue\n"
+"   public Long getId() {\n"
+"      return id;\n"
+"   }\n"
+"   public void setId(Long id) {\n"
+"      this.id = id;\n"
+"   }\n"
+"   \n"
+"   @NotNull @Length(max=100)\n"
+"   public String getTitle() {\n"
+"      return title;\n"
+"   }\n"
+"   public void setTitle(String title) {\n"
+"      this.title = title;\n"
+"   }\n"
+"   \n"
+"   @NotNull @Lob\n"
+"   public String getText() {\n"
+"      return text;\n"
+"   }\n"
+"   public void setText(String text) {\n"
+"      this.text = text;\n"
+"   }\n"
+"   \n"
+"   @NotNull\n"
+"   public boolean isRead() {\n"
+"      return read;\n"
+"   }\n"
+"   public void setRead(boolean read) {\n"
+"      this.read = read;\n"
+"   }\n"
+"   \n"
+"   @NotNull \n"
+"   @Basic @Temporal(TemporalType.TIMESTAMP)\n"
+"   public Date getDatetime() {\n"
+"      return datetime;\n"
+"   }\n"
+"   public void setDatetime(Date datetime) {\n"
+"      this.datetime = datetime;\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:438
+#, no-c-format
+msgid "The stateful session bean: <literal>MessageManagerBean.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:439
+#, no-c-format
+msgid ""
+"Just like in the previous example, we have a session bean, "
+"<literal>MessageManagerBean</literal>, which defines the action listener "
+"methods for the two buttons on our form. One of the buttons selects a "
+"message from the list, and displays that message. The other button deletes a "
+"message. So far, this is not so different to the previous example."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:442
+#, no-c-format
+msgid ""
+"But <literal>MessageManagerBean</literal> is also responsible for fetching "
+"the list of messages the first time we navigate to the message list page. "
+"There are various ways the user could navigate to the page, and not all of "
+"them are preceded by a JSF action&mdash;the user might have bookmarked the "
+"page, for example. So the job of fetching the message list takes place in a "
+"Seam <emphasis>factory method</emphasis>, instead of in an action listener "
+"method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:445
+#, no-c-format
+msgid ""
+"We want to cache the list of messages in memory between server requests, so "
+"we will make this a stateful session bean."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:459
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Scope(SESSION)\n"
+"@Name(\"messageManager\")\n"
+"public class MessageManagerBean implements Serializable, MessageManager\n"
+"{\n"
+"\n"
+"   @DataModel\n"
+"   private List&lt;Message&gt; messageList;\n"
+"   \n"
+"   @DataModelSelection\n"
+"   @Out(required=false)\n"
+"   private Message message;\n"
+"   \n"
+"   @PersistenceContext(type=EXTENDED)\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @Factory(\"messageList\")\n"
+"   public void findMessages()\n"
+"   {\n"
+"      messageList = em.createQuery(\"from Message msg order by msg.datetime "
+"desc\").getResultList();\n"
+"   }\n"
+"   \n"
+"   public void select()\n"
+"   {\n"
+"      message.setRead(true);\n"
+"   }\n"
+"   \n"
+"   public void delete()\n"
+"   {\n"
+"      messageList.remove(message);\n"
+"      em.remove(message);\n"
+"      message=null;\n"
+"   }\n"
+"   \n"
+"   @Remove @Destroy\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:462
+#, no-c-format
+msgid ""
+"The <literal>@DataModel</literal> annotation exposes an attibute of type "
+"<literal>java.util.List</literal> to the JSF page as an instance of "
+"<literal>javax.faces.model.DataModel</literal>. This allows us to use the "
+"list in a JSF <literal>&lt;h:dataTable&gt;</literal> with clickable links "
+"for each row. In this case, the <literal>DataModel</literal> is made "
+"available in a session context variable named <literal>messageList</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:467
+#, no-c-format
+msgid ""
+"The <literal>@DataModelSelection</literal> annotation tells Seam to inject "
+"the <literal>List</literal> element that corresponded to the clicked link."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:472
+#, no-c-format
+msgid ""
+"The <literal>@Out</literal> annotation then exposes the selected value "
+"directly to the page. So ever time a row of the clickable list is selected, "
+"the <literal>Message</literal> is injected to the attribute of the stateful "
+"bean, and the subsequently <emphasis>outjected</emphasis> to the event "
+"context variable named <literal>message</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:477
+#, no-c-format
+msgid ""
+"This stateful bean has an EJB3 <emphasis>extended persistence context</"
+"emphasis>. The messages retrieved in the query remain in the managed state "
+"as long as the bean exists, so any subsequent method calls to the stateful "
+"bean can update them without needing to make any explicit call to the "
+"<literal>EntityManager</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:482
+#, no-c-format
+msgid ""
+"The first time we navigate to the JSP page, there will be no value in the "
+"<literal>messageList</literal> context variable. The <literal>@Factory</"
+"literal> annotation tells Seam to create an instance of "
+"<literal>MessageManagerBean</literal> and invoke the <literal>findMessages()"
+"</literal> method to initialize the value. We call <literal>findMessages()</"
+"literal> a <emphasis>factory method</emphasis> for <literal>messages</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:487
+#, no-c-format
+msgid ""
+"The <literal>select()</literal> action listener method marks the selected "
+"<literal>Message</literal> as read, and updates it in the database."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:492
+#, no-c-format
+msgid ""
+"The <literal>delete()</literal> action listener method removes the selected "
+"<literal>Message</literal> from the database."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:497
+#, no-c-format
+msgid ""
+"All stateful session bean Seam components <emphasis>must</emphasis> have a "
+"method marked <literal>@Remove @Destroy</literal> to ensure that Seam will "
+"remove the stateful bean when the Seam context ends, and clean up any server-"
+"side state."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:504
+#, no-c-format
+msgid ""
+"Note that this is a session-scoped Seam component. It is associated with the "
+"user login session, and all requests from a login session share the same "
+"instance of the component. (In Seam applications, we usually use session-"
+"scoped components sparingly.)"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:510
+#, no-c-format
+msgid ""
+"The session bean local interface: <literal>MessageManager.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:511
+#, no-c-format
+msgid "All session beans have a business interface, of course."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:514
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface MessageManager\n"
+"{\n"
+"   public void findMessages();\n"
+"   public void select();\n"
+"   public void delete();\n"
+"   public void destroy();\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:515
+#, no-c-format
+msgid "From now on, we won't show local interfaces in our code examples."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:518
+#, no-c-format
+msgid ""
+"Let's skip over <literal>components.xml</literal>, <literal>persistence.xml</"
+"literal>, <literal>web.xml</literal>, <literal>ejb-jar.xml</literal>, "
+"<literal>faces-config.xml</literal> and <literal>application.xml</literal> "
+"since they are much the same as the previous example, and go straight to the "
+"JSP."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:524
+#, no-c-format
+msgid "The view: <literal>messages.jsp</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:525
+#, no-c-format
+msgid ""
+"The JSP page is a straightforward use of the JSF <literal>&lt;h:dataTable&gt;"
+"</literal> component. Again, nothing specific to Seam."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:528
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Messages&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;h2&gt;Message List&lt;/h2&gt;\n"
+"     &lt;h:outputText value=\"No messages to display\" rendered=\"#"
+"{messageList.rowCount==0}\"/&gt;\n"
+"     &lt;h:dataTable var=\"msg\" value=\"#{messageList}\" rendered=\"#"
+"{messageList.rowCount&gt;0}\"&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Read\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:selectBooleanCheckbox value=\"#{msg.read}\" disabled=\"true"
+"\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Title\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:commandLink value=\"#{msg.title}\" action=\"#"
+"{messageManager.select}\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Date/Time\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:outputText value=\"#{msg.datetime}\"&gt;\n"
+"              &lt;f:convertDateTime type=\"both\" dateStyle=\"medium\" "
+"timeStyle=\"short\"/&gt;\n"
+"           &lt;/h:outputText&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;h:commandButton value=\"Delete\" action=\"#{messageManager."
+"delete}\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"     &lt;/h:dataTable&gt;\n"
+"     &lt;h3&gt;&lt;h:outputText value=\"#{message.title}\"/&gt;&lt;/h3&gt;\n"
+"     &lt;div&gt;&lt;h:outputText value=\"#{message.text}\"/&gt;&lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:536
+#, no-c-format
+msgid ""
+"The first time we navigate to the <literal>messages.jsp</literal> page, "
+"whether by a JSF postback (faces request) or a direct browser GET request "
+"(non-faces request), the page will try to resolve the <literal>messageList</"
+"literal> context variable. Since this context variable is not initialized, "
+"Seam will call the factory method <literal>findMessages()</literal>, which "
+"performs a query against the database and results in a <literal>DataModel</"
+"literal> being outjected. This <literal>DataModel</literal> provides the row "
+"data needed for rendering the <literal>&lt;h:dataTable&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:539
+#, no-c-format
+msgid ""
+"When the user clicks the <literal>&lt;h:commandLink&gt;</literal>, JSF calls "
+"the <literal>select()</literal> action listener. Seam intercepts this call "
+"and injects the selected row data into the <literal>message</literal> "
+"attribute of the <literal>messageManager</literal> component. The action "
+"listener fires, marking the selected <literal>Message</literal> as read. At "
+"the end of the call, Seam outjects the selected <literal>Message</literal> "
+"to the context variable named <literal>message</literal>. Next, the EJB "
+"container commits the transaction, and the change to the <literal>Message</"
+"literal> is flushed to the database. Finally, the page is re-rendered, "
+"redisplaying the message list, and displaying the selected message below it."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:542
+#, no-c-format
+msgid ""
+"If the user clicks the <literal>&lt;h:commandButton&gt;</literal>, JSF calls "
+"the <literal>delete()</literal> action listener. Seam intercepts this call "
+"and injects the selected row data into the <literal>message</literal> "
+"attribute of the <literal>messageList</literal> component. The action "
+"listener fires, removing the selected <literal>Message</literal> from the "
+"list, and also calling <literal>remove()</literal> on the "
+"<literal>EntityManager</literal>. At the end of the call, Seam refreshes the "
+"<literal>messageList</literal> context variable and clears the context "
+"variable named <literal>message</literal>. The EJB container commits the "
+"transaction, and deletes the <literal>Message</literal> from the database. "
+"Finally, the page is re-rendered, redisplaying the message list."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:550
+#, no-c-format
+msgid "Seam and jBPM: the todo list example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:551
+#, no-c-format
+msgid ""
+"jBPM provides sophisticated functionality for workflow and task management. "
+"To get a small taste of how jBPM integrates with Seam, we'll show you a "
+"simple \"todo list\" application. Since managing lists of tasks is such core "
+"functionality for jBPM, there is hardly any Java code at all in this example."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:564
+#, no-c-format
+msgid ""
+"The center of this example is the jBPM process definition. There are also "
+"two JSPs and two trivial JavaBeans (There was no reason to use session "
+"beans, since they do not access the database, or have any other "
+"transactional behavior). Let's start with the process definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:575
+#, no-c-format
+msgid ""
+"&lt;process-definition name=\"todo\"&gt;\n"
+"   \n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"todo\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;task-node name=\"todo\"&gt;\n"
+"      &lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"         &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"      &lt;/task&gt;\n"
+"      &lt;transition to=\"done\"/&gt;\n"
+"   &lt;/task-node&gt;\n"
+"   \n"
+"   &lt;end-state name=\"done\"/&gt;\n"
+"   \n"
+"&lt;/process-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:578
+#, no-c-format
+msgid ""
+"The <literal>&lt;start-state&gt;</literal> node represents the logical start "
+"of the process. When the process starts, it immediately transitions to the "
+"<literal>todo</literal> node."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:583
+#, no-c-format
+msgid ""
+"The <literal>&lt;task-node&gt;</literal> node represents a <emphasis>wait "
+"state</emphasis>, where business process execution pauses, waiting for one "
+"or more tasks to be performed."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:588
+#, no-c-format
+msgid ""
+"The <literal>&lt;task&gt;</literal> element defines a task to be performed "
+"by a user. Since there is only one task defined on this node, when it is "
+"complete, execution resumes, and we transition to the end state. The task "
+"gets its description from a Seam component named <literal>todoList</literal> "
+"(one of the JavaBeans)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:593
+#, no-c-format
+msgid ""
+"Tasks need to be assigned to a user or group of users when they are created. "
+"In this case, the task is assigned to the current user, which we get from a "
+"built-in Seam component named <literal>actor</literal>. Any Seam component "
+"may be used to perform task assignment."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:598
+#, no-c-format
+msgid ""
+"The <literal>&lt;end-state&gt;</literal> node defines the logical end of the "
+"business process. When execution reaches this node, the process instance is "
+"destroyed."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:605
+#, no-c-format
+msgid ""
+"If we view this process definition using the process definition editor "
+"provided by JBossIDE, this is what it looks like:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:616
+#, no-c-format
+msgid ""
+"This document defines our <emphasis>business process</emphasis> as a graph "
+"of nodes. This is the most trivial possible business process: there is one "
+"<emphasis>task</emphasis> to be performed, and when that task is complete, "
+"the business process ends."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:619
+#, no-c-format
+msgid ""
+"The first JavaBean handles the login screen <literal>login.jsp</literal>. "
+"Its job is just to initialize the jBPM actor id using the <literal>actor</"
+"literal> component. (In a real application, it would also need to "
+"authenticate the user.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:622
+#, no-c-format
+msgid ""
+"@Name(\"login\")\n"
+"public class Login {\n"
+"   \n"
+"   @In\n"
+"   private Actor actor;\n"
+"   \n"
+"   private String user;\n"
+"\n"
+"   public String getUser() {\n"
+"      return user;\n"
+"   }\n"
+"\n"
+"   public void setUser(String user) {\n"
+"      this.user = user;\n"
+"   }\n"
+"   \n"
+"   public String login()\n"
+"   {\n"
+"      actor.setId(user);\n"
+"      return \"/todo.jsp\";\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:623
+#, no-c-format
+msgid ""
+"Here we see the use of <literal>@In</literal> to inject the built-in "
+"<literal>Actor</literal> component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:626
+#, no-c-format
+msgid "The JSP itself is trivial:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:629
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"&#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"&#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Login&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Login&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    &lt;h:form&gt;\n"
+"      &lt;div&gt;\n"
+"        &lt;h:inputText value=\"#{login.user}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Login\" action=\"#{login.login}\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"    &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:630
+#, no-c-format
+msgid ""
+"The second JavaBean is responsible for starting business process instances, "
+"and ending tasks."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:639
+#, no-c-format
+msgid ""
+"@Name(\"todoList\")\n"
+"public class TodoList {\n"
+"   \n"
+"   private String description;\n"
+"   \n"
+"   public String getDescription()\n"
+"   {\n"
+"      return description;\n"
+"   }\n"
+"\n"
+"   public void setDescription(String description) {\n"
+"      this.description = description;\n"
+"   }\n"
+"   \n"
+"   @CreateProcess(definition=\"todo\")\n"
+"   public void createTodo() {}\n"
+"   \n"
+"   @StartTask @EndTask\n"
+"   public void done() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:642
+#, no-c-format
+msgid ""
+"The description property accepts user input form the JSP page, and exposes "
+"it to the process definition, allowing the task description to be set."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:647
+#, no-c-format
+msgid ""
+"The Seam <literal>@CreateProcess</literal> annotation creates a new jBPM "
+"process instance for the named process definition."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:652
+#, no-c-format
+msgid ""
+"The Seam <literal>@StartTask</literal> annotation starts work on a task. The "
+"<literal>@EndTask</literal> ends the task, and allows the business process "
+"execution to resume."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:659
+#, no-c-format
+msgid ""
+"In a more realistic example, <literal>@StartTask</literal> and "
+"<literal>@EndTask</literal> would not appear on the same method, because "
+"there is usually work to be done using the application in order to complete "
+"the task."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:662
+#, no-c-format
+msgid "Finally, the meat of the application is in <literal>todo.jsp</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:665
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://jboss.com/products/seam/taglib\" prefix=\"s\" "
+"&#37;&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Todo List&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Todo List&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"   &lt;h:form id=\"list\"&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:outputText value=\"There are no todo items.\" rendered=\"#"
+"{empty \n"
+"             taskInstanceList}\"/&gt;\n"
+"         &lt;h:dataTable value=\"#{taskInstanceList}\" var=\"task\" rendered="
+"\"#{not empty taskInstanceList}\"&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Description\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.description}\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Created\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:outputText value=\"#{task.taskMgmtInstance."
+"processInstance.start}\"&gt;\n"
+"                    &lt;f:convertDateTime type=\"date\"/&gt;\n"
+"                &lt;/h:outputText&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Priority\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.priority}\" style=\"width: 30"
+"\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Due Date\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.dueDate}\" style=\"width: 100"
+"\"&gt;\n"
+"                    &lt;f:convertDateTime type=\"date\" dateStyle=\"short\"/"
+"&gt;\n"
+"                &lt;/h:inputText&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;s:button value=\"Done\" action=\"#{todoList.done}\" "
+"taskInstance=\"#{task}\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"         &lt;/h:dataTable&gt;\n"
+"      &lt;/div&gt;\n"
+"      &lt;div&gt;\n"
+"      &lt;h:messages/&gt;\n"
+"      &lt;/div&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:commandButton value=\"Update Items\" action=\"update\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"   &lt;h:form id=\"new\"&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:inputText value=\"#{todoList.description}\"/&gt;\n"
+"         &lt;h:commandButton value=\"Create New Item\" action=\"#{todoList."
+"createTodo}\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:666
+#, no-c-format
+msgid "Let's take this one piece at a time."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:669
+#, no-c-format
+msgid ""
+"The page renders a list of tasks, which it gets from a built-in Seam "
+"component named <literal>taskInstanceList</literal>. The list is defined "
+"inside a JSF form."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:672
+#, no-c-format
+msgid ""
+"&lt;h:form id=\"list\"&gt;\n"
+"   &lt;div&gt;\n"
+"      &lt;h:outputText value=\"There are no todo items.\" rendered=\"#{empty "
+"taskInstanceList}\"/&gt;\n"
+"      &lt;h:dataTable value=\"#{taskInstanceList}\" var=\"task\" rendered=\"#"
+"{not empty taskInstanceList}\"&gt;\n"
+"         ...\n"
+"      &lt;/h:dataTable&gt;\n"
+"   &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:673
+#, no-c-format
+msgid ""
+"Each element of the list is an instance of the jBPM class "
+"<literal>TaskInstance</literal>. The following code simply displays the "
+"interesting properties of each task in the list. For the description, "
+"priority and due date, we use input controls, to allow the user to update "
+"these values."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:676
+#, no-c-format
+msgid ""
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"       &lt;h:outputText value=\"Description\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.description}\"/&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Created\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:outputText value=\"#{task.taskMgmtInstance.processInstance.start}"
+"\"&gt;\n"
+"        &lt;f:convertDateTime type=\"date\"/&gt;\n"
+"    &lt;/h:outputText&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Priority\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.priority}\" style=\"width: 30\"/&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Due Date\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.dueDate}\" style=\"width: 100\"&gt;\n"
+"        &lt;f:convertDateTime type=\"date\" dateStyle=\"short\"/&gt;\n"
+"    &lt;/h:inputText&gt;\n"
+"&lt;/h:column&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:677
+#, no-c-format
+msgid ""
+"This button ends the task by calling the action method annotated "
+"<literal>@StartTask @EndTask</literal>. It passes the task id to Seam as a "
+"request parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:680
+#, no-c-format
+msgid ""
+"&lt;h:column&gt;\n"
+"    &lt;s:button value=\"Done\" action=\"#{todoList.done}\" taskInstance=\"#"
+"{task}\"/&gt;\n"
+"&lt;/h:column&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:681
+#, no-c-format
+msgid ""
+"(Note that this is using a Seam <literal>&lt;s:button&gt;</literal> JSF "
+"control from the <literal>seam-ui.jar</literal> package.)"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:684
+#, no-c-format
+msgid ""
+"This button is used to update the properties of the tasks. When the form is "
+"submitted, Seam and jBPM will make any changes to the tasks persistent. "
+"There is no need for any action listener method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:687
+#, no-c-format
+msgid "&lt;h:commandButton value=\"Update Items\" action=\"update\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:688
+#, no-c-format
+msgid ""
+"A second form on the page is used to create new items, by calling the action "
+"method annotated <literal>@CreateProcess</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:691
+#, no-c-format
+msgid ""
+"&lt;h:form id=\"new\"&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:inputText value=\"#{todoList.description}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Create New Item\" action=\"#{todoList."
+"createTodo}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:692
+#, no-c-format
+msgid ""
+"There are several other files needed for the example, but they are just "
+"standard jBPM and Seam configuration and not very interesting."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:699 Tutorial.xml:814 Tutorial.xml:1157 Tutorial.xml:1178
+#: Tutorial.xml:1191
+#, no-c-format
+msgid "TODO"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:707
+#, no-c-format
+msgid "Seam pageflow: the numberguess example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:708
+#, no-c-format
+msgid ""
+"For Seam applications with relatively freeform (ad hoc) navigation, JSF/Seam "
+"navigation rules are a perfectly good way to define the page flow. For "
+"applications with a more constrained style of navigation, especially for "
+"user interfaces which are more stateful, navigation rules make it difficult "
+"to really understand the flow of the system. To understand the flow, you "
+"need to piece it together from the view pages, the actions and the "
+"navigation rules."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:711
+#, no-c-format
+msgid ""
+"Seam allows you to use a jPDL process definition to define pageflow. The "
+"simple number guessing example shows how this is done."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:724
+#, no-c-format
+msgid ""
+"The example is implemented using one JavaBean, three JSP pages and a jPDL "
+"pageflow definition. Let's begin with the pageflow:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:734
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"numberGuess\"&gt;\n"
+"   \n"
+"   &lt;start-page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"          &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"      &lt;/transition&gt;\n"
+"   &lt;/start-page&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess."
+"correctGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateRemainingGuesses\" expression=\"#{numberGuess."
+"lastGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"lose\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"displayGuess\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"lose\" view-id=\"/lose.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:737
+#, no-c-format
+msgid ""
+"The <literal>&lt;page&gt;</literal> element defines a wait state where the "
+"system displays a particular JSF view and waits for user input. The "
+"<literal>view-id</literal> is the same JSF view id used in plain JSF "
+"navigation rules. The <literal>redirect</literal> attribute tells Seam to "
+"use post-then-redirect when navigating to the page. (This results in "
+"friendly browser URLs.)"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:742
+#, no-c-format
+msgid ""
+"The <literal>&lt;transition&gt;</literal> element names a JSF outcome. The "
+"transition is triggered when a JSF action results in that outcome. Execution "
+"will then proceed to the next node of the pageflow graph, after invocation "
+"of any jBPM transition actions."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:747
+#, no-c-format
+msgid ""
+"A transition <literal>&lt;action&gt;</literal> is just like a JSF action, "
+"except that it occurs when a jBPM transition occurs. The transition action "
+"can invoke any Seam component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:752
+#, no-c-format
+msgid ""
+"A <literal>&lt;decision&gt;</literal> node branches the pageflow, and "
+"determines the next node to execute by evaluating a JSF EL expression."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:759
+#, no-c-format
+msgid "Here is what the pageflow looks like in the JBossIDE pageflow editor:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:770
+#, no-c-format
+msgid ""
+"Now that we have seen the pageflow, it is very, very easy to understand the "
+"rest of the application!"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:773
+#, no-c-format
+msgid ""
+"Here is the main page of the application, <literal>numberGuess.jsp</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:776
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"&#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"&#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Guess a number...&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Guess a number...&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    &lt;h:form&gt;\n"
+"        &lt;h:outputText value=\"Higher!\" rendered=\"#{numberGuess."
+"randomNumber&gt;numberGuess.currentGuess}\" /&gt;\n"
+"        &lt;h:outputText value=\"Lower!\" rendered=\"#{numberGuess."
+"randomNumber&lt;numberGuess.currentGuess}\" /&gt;\n"
+"        &lt;br /&gt;\n"
+"        I'm thinking of a number between &lt;h:outputText value=\"#"
+"{numberGuess.smallest}\" /&gt; and \n"
+"        &lt;h:outputText value=\"#{numberGuess.biggest}\" /&gt;. You have \n"
+"        &lt;h:outputText value=\"#{numberGuess.remainingGuesses}\" /&gt; "
+"guesses.\n"
+"        &lt;br /&gt;\n"
+"        Your guess: \n"
+"        &lt;h:inputText value=\"#{numberGuess.currentGuess}\" id=\"guess\" "
+"required=\"true\"&gt;\n"
+"            &lt;f:validateLongRange\n"
+"                maximum=\"#{numberGuess.biggest}\" \n"
+"                minimum=\"#{numberGuess.smallest}\"/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"        &lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"guess"
+"\" /&gt;\n"
+"        &lt;br/&gt;\n"
+"        &lt;h:message for=\"guess\" style=\"color: red\"/&gt;\n"
+"    &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:777
+#, no-c-format
+msgid ""
+"Notice how the command button names the <literal>guess</literal> transition "
+"instead of calling an action directly."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:780
+#, no-c-format
+msgid "The <literal>win.jsp</literal> page is predictable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:783
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"&#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"&#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;You won!&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;You won!&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    Yes, the answer was &lt;h:outputText value=\"#{numberGuess.currentGuess}"
+"\" /&gt;.\n"
+"    It took you &lt;h:outputText value=\"#{numberGuess.guessCount}\" /&gt; "
+"guesses.\n"
+"    Would you like to &lt;a href=\"numberGuess.seam\"&gt;play again&lt;/"
+"a&gt;?\n"
+"  &lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:784
+#, no-c-format
+msgid ""
+"As is <literal>lose.jsp</literal> (which I can't be bothered copy/pasting). "
+"Finally, the JavaBean Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:792
+#, no-c-format
+msgid ""
+"@Name(\"numberGuess\")\n"
+"@Scope(ScopeType.CONVERSATION)\n"
+"public class NumberGuess {\n"
+"   \n"
+"   private int randomNumber;\n"
+"   private Integer currentGuess;\n"
+"   private int biggest;\n"
+"   private int smallest;\n"
+"   private int guessCount;\n"
+"   private int maxGuesses;\n"
+"   \n"
+"   @Create \n"
+"   @Begin(pageflow=\"numberGuess\")\n"
+"   public void begin()\n"
+"   {\n"
+"      randomNumber = new Random().nextInt(100);\n"
+"      guessCount = 0;\n"
+"      biggest = 100;\n"
+"      smallest = 1;\n"
+"   }\n"
+"   \n"
+"   public void setCurrentGuess(Integer guess)\n"
+"   {\n"
+"      this.currentGuess = guess;\n"
+"   }\n"
+"   \n"
+"   public Integer getCurrentGuess()\n"
+"   {\n"
+"      return currentGuess;\n"
+"   }\n"
+"   \n"
+"   public void guess()\n"
+"   {\n"
+"      if (currentGuess&gt;randomNumber)\n"
+"      {\n"
+"         biggest = currentGuess - 1;\n"
+"      }\n"
+"      if (currentGuess&lt;randomNumber)\n"
+"      {\n"
+"         smallest = currentGuess + 1;\n"
+"      }\n"
+"      guessCount ++;\n"
+"   }\n"
+"   \n"
+"   public boolean isCorrectGuess()\n"
+"   {\n"
+"      return currentGuess==randomNumber;\n"
+"   }\n"
+"   \n"
+"   public int getBiggest()\n"
+"   {\n"
+"      return biggest;\n"
+"   }\n"
+"   \n"
+"   public int getSmallest()\n"
+"   {\n"
+"      return smallest;\n"
+"   }\n"
+"   \n"
+"   public int getGuessCount()\n"
+"   {\n"
+"      return guessCount;\n"
+"   }\n"
+"   \n"
+"   public boolean isLastGuess()\n"
+"   {\n"
+"      return guessCount==maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getRemainingGuesses() {\n"
+"      return maxGuesses-guessCount;\n"
+"   }\n"
+"\n"
+"   public void setMaxGuesses(int maxGuesses) {\n"
+"      this.maxGuesses = maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getMaxGuesses() {\n"
+"      return maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getRandomNumber() {\n"
+"      return randomNumber;\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:795
+#, no-c-format
+msgid ""
+"The first time a JSP page asks for a <literal>numberGuess</literal> "
+"component, Seam will create a new one for it, and the <literal>@Create</"
+"literal> method will be invoked, allowing the component to initialize itself."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:800
+#, no-c-format
+msgid ""
+"The <literal>@Begin</literal> annotation starts a Seam "
+"<emphasis>conversation</emphasis> (much more about that later), and "
+"specifies the pageflow definition to use for the conversation's page flow."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:807
+#, no-c-format
+msgid ""
+"As you can see, this Seam component is pure business logic! It doesn't need "
+"to know anything at all about the user interaction flow. This makes the "
+"component potentially more reuseable."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:822
+#, no-c-format
+msgid "A complete Seam application: the Hotel Booking example"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:824
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:825
+#, no-c-format
+msgid ""
+"The booking application is a complete hotel room reservation system "
+"incorporating the following features:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:830
+#, no-c-format
+msgid "User registration"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:835
+#, no-c-format
+msgid "Login"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:840
+#, no-c-format
+msgid "Logout"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:845
+#, no-c-format
+msgid "Set password"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:850
+#, no-c-format
+msgid "Hotel search"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:855
+#, no-c-format
+msgid "Hotel selection"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:860
+#, no-c-format
+msgid "Room reservation"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:865
+#, no-c-format
+msgid "Reservation confirmation"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:870
+#, no-c-format
+msgid "Existing reservation list"
+msgstr ""
+
+#. Tag: screeninfo
+#: Tutorial.xml:875
+#, no-c-format
+msgid "Booking example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:883
+#, no-c-format
+msgid ""
+"The booking application uses JSF, EJB 3.0 and Seam, together with Facelets "
+"for the view. There is also a port of this application to JSF, Facelets, "
+"Seam, JavaBeans and Hibernate3."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:886
+#, no-c-format
+msgid ""
+"One of the things you'll notice if you play with this application for long "
+"enough is that it is extremely <emphasis>robust</emphasis>. You can play "
+"with back buttons and browser refresh and opening multiple windows and "
+"entering nonsensical data as much as you like and you will find it very "
+"difficult to make the application crash. You might think that we spent weeks "
+"testing and fixing bugs to achive this. Actually, this is not the case. Seam "
+"was designed to make it very straightforward to build robust web "
+"applications and a lot of robustness that you are probably used to having to "
+"code yourself comes naturally and automatically with Seam."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:889
+#, no-c-format
+msgid ""
+"As you browse the sourcecode of the example application, and learn how the "
+"application works, observe how the declarative state management and "
+"integrated validation has been used to achieve this robustness."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:895
+#, no-c-format
+msgid "Overview of the booking example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:896
+#, no-c-format
+msgid ""
+"The project structure is identical to the previous one, to install and "
+"deploy this application, please refer to <xref linkend=\"Seam_Tutorial-"
+"Try_the_examples\"/>. Once you've successfully started the application, you "
+"can access it by pointing your browser to <ulink url=\"http://localhost:8080/"
+"seam-booking/\"><literal>http://localhost:8080/seam-booking/</literal></"
+"ulink>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:899
+#, no-c-format
+msgid ""
+"Just ten classes (plus six session beans local interfaces and 1 annotation "
+"interface) where used to implement this application. Six session bean action "
+"listeners contain all the business logic for the listed features."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:904
+#, no-c-format
+msgid ""
+"<literal>BookingListAction</literal> retrieves existing bookings for the "
+"currently logged in user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:907
+#, no-c-format
+msgid ""
+"<literal>ChangePasswordAction</literal> updates the password of the "
+"currently logged in user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:910
+#, no-c-format
+msgid ""
+"<literal>HotelBookingAction</literal> implements the core functionality of "
+"the application: hotel room searching, selection, booking and booking "
+"confirmation. This functionality is implemented as a <emphasis>conversation</"
+"emphasis>, so this is the most interesting class in the application."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:913
+#, no-c-format
+msgid ""
+"<literal>LoginAction</literal> validates the login details and retrieves the "
+"logged in user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:916
+#, no-c-format
+msgid "<literal>LogoutAction</literal> ends the login session."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:919
+#, no-c-format
+msgid "<literal>RegisterAction</literal> registers a new system user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:922
+#, no-c-format
+msgid "Three entity beans implement the application's persistent domain model."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:927
+#, no-c-format
+msgid "<literal>Hotel</literal> is an entity bean that represent a hotel"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:930
+#, no-c-format
+msgid ""
+"<literal>Booking</literal> is an entity bean that represents an existing "
+"booking"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:933
+#, no-c-format
+msgid ""
+"<literal>User</literal> is an entity bean to represents a user who can make "
+"hotel bookings"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:936
+#, no-c-format
+msgid ""
+"Finally, the <literal>LoggedIn</literal> annotation and the "
+"<literal>LoggedInInterceptor</literal> are used to protect actions that "
+"require a logged in user."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:942
+#, no-c-format
+msgid "Understanding Seam conversations"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:943
+#, no-c-format
+msgid ""
+"We encourage you browse the sourcecode at your pleasure. In this tutorial "
+"we'll concentrate upon one particular piece of functionality: hotel search, "
+"selection, booking and confirmation. From the point of view of the user, "
+"everything from selecting a hotel to confirming a booking is one continuous "
+"unit of work, a <emphasis>conversation</emphasis>. Searching, however, is "
+"<emphasis>not</emphasis> part of the conversation. The user can select "
+"multiple hotels from the same search results page, in different browser tabs."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:946
+#, no-c-format
+msgid ""
+"Most web application architectures have no first class construct to "
+"represent a conversation. This causes enormous problems managing state "
+"associated with the conversation. Usually, Java web applications use a "
+"combination of two techniques: first, some state is thrown into the "
+"<literal>HttpSession</literal>; second, persistable state is flushed to the "
+"database after every request, and reconstructed from the database at the "
+"beginning of each new request."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:949
+#, no-c-format
+msgid ""
+"Since the database is the least scalable tier, this often results in an "
+"utterly unacceptable lack of scalability. Added latency is also a problem, "
+"due to the extra traffic to and from the database on every request. To "
+"reduce this redundant traffic, Java applications often introduce a data "
+"(second-level) cache that keeps commonly accessed data between requests. "
+"This cache is necessarily inefficient, because invalidation is based upon an "
+"LRU policy instead of being based upon when the user has finished working "
+"with the data. Furthermore, because the cache is shared between many "
+"concurrent transactions, we've introduced a whole raft of problem's "
+"associated with keeping the cached state consistent with the database."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:952
+#, no-c-format
+msgid ""
+"Now consider the state held in the <literal>HttpSession</literal>. By very "
+"careful programming, we might be able to control the size of the session "
+"data. This is a lot more difficult than it sounds, since web browsers permit "
+"ad hoc non-linear navigation. But suppose we suddenly discover a system "
+"requirement that says that a user is allowed to have <emphasis>mutiple "
+"concurrent conversations</emphasis>, halfway through the development of the "
+"system (this has happened to me). Developing mechanisms to isolate session "
+"state associated with different concurrent conversations, and incorporating "
+"failsafes to ensure that conversation state is destroyed when the user "
+"aborts one of the conversations by closing a browser window or tab is not "
+"for the faint hearted (I've implemented this stuff twice so far, once for a "
+"client application, once for Seam, but I'm famously psychotic)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:955
+#, no-c-format
+msgid "Now there is a better way."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:958
+#, no-c-format
+msgid ""
+"Seam introduces the <emphasis>conversation context</emphasis> as a first "
+"class construct. You can safely keep conversational state in this context, "
+"and be assured that it will have a well-defined lifecycle. Even better, you "
+"won't need to be continually pushing data back and forth between the "
+"application server and the database, since the conversation context is a "
+"natural cache of data that the user is currently working with."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:961
+#, no-c-format
+msgid ""
+"Usually, the components we keep in the conversation context are stateful "
+"session beans. (We can also keep entity beans and JavaBeans in the "
+"conversation context.) There is an ancient canard in the Java community that "
+"stateful session beans are a scalability killer. This may have been true in "
+"1998 when WebFoobar 1.0 was released. It is no longer true today. "
+"Application servers like JBoss 4.0 have extremely sophisticated mechanisms "
+"for stateful session bean state replication. (For example, the JBoss EJB3 "
+"container performs fine-grained replication, replicating only those bean "
+"attribute values which actually changed.) Note that all the traditional "
+"technical arguments for why stateful beans are inefficient apply equally to "
+"the <literal>HttpSession</literal>, so the practice of shifting state from "
+"business tier stateful session bean components to the web session to try and "
+"improve performance is unbelievably misguided. It is certainly possible to "
+"write unscalable applications using stateful session beans, by using "
+"stateful beans incorrectly, or by using them for the wrong thing. But that "
+"doesn't mean you should <emphasis>never</emphasis> use them. Anyway, Seam "
+"guides you toward a safe usage model. Welcome to 2005."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:964
+#, no-c-format
+msgid "OK, I'll stop ranting now, and get back to the tutorial."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:967
+#, no-c-format
+msgid ""
+"The booking example application shows how stateful components with different "
+"scopes can collaborate together to achieve complex behaviors. The main page "
+"of the booking application allows the user to search for hotels. The search "
+"results are kept in the Seam session scope. When the user navigates to one "
+"of these hotels, a conversation begins, and a conversation scoped component "
+"calls back to the session scoped component to retrieve the selected hotel."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:970
+#, no-c-format
+msgid ""
+"The booking example also demonstrates the use of Ajax4JSF to implement rich "
+"client behavior without the use of handwritten JavaScript."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:973
+#, no-c-format
+msgid ""
+"The search functionality is implemented using a session-scope stateful "
+"session bean, similar to the one we saw in the message list example above."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:983
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"hotelSearch\")\n"
+"@Scope(ScopeType.SESSION)\n"
+"@LoggedIn\n"
+"public class HotelSearchingAction implements HotelSearching\n"
+"{\n"
+"   \n"
+"   @PersistenceContext\n"
+"   private EntityManager em;\n"
+"   \n"
+"   private String searchString;\n"
+"   private int pageSize = 10;\n"
+"   private int page;\n"
+"   \n"
+"   @DataModel\n"
+"   private List&lt;Hotel&gt; hotels;\n"
+"   \n"
+"   public String find()\n"
+"   {\n"
+"      page = 0;\n"
+"      queryHotels();   \n"
+"      return \"main\";\n"
+"   }\n"
+"\n"
+"   public String nextPage()\n"
+"   {\n"
+"      page++;\n"
+"      queryHotels();\n"
+"      return \"main\";\n"
+"   }\n"
+"      \n"
+"   private void queryHotels()\n"
+"   {\n"
+"      String searchPattern = searchString==null ? \"&#37;\" : '&#37;' + \n"
+"          searchString.toLowerCase().replace('*', '&#37;') + '&#37;';\n"
+"      hotels = em.createQuery(\"select h from Hotel h where lower(h.name) "
+"like\n"
+"          :search or lower(h.city) like :search \n"
+"          or lower(h.zip) like :search or lower(h.address) like :search\")\n"
+"            .setParameter(\"search\", searchPattern)\n"
+"            .setMaxResults(pageSize)\n"
+"            .setFirstResult( page * pageSize )\n"
+"            .getResultList();\n"
+"   }\n"
+"   \n"
+"   public boolean isNextPageAvailable()\n"
+"   {\n"
+"      return hotels!=null &amp;&amp; hotels.size()==pageSize;\n"
+"   }\n"
+"   \n"
+"   public int getPageSize() {\n"
+"      return pageSize;\n"
+"   }\n"
+"\n"
+"   public void setPageSize(int pageSize) {\n"
+"      this.pageSize = pageSize;\n"
+"   }\n"
+"\n"
+"   public String getSearchString()\n"
+"   {\n"
+"      return searchString;\n"
+"   }\n"
+"\n"
+"   public void setSearchString(String searchString)\n"
+"   {\n"
+"      this.searchString = searchString;\n"
+"   }\n"
+"   \n"
+"   @Destroy @Remove\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:986
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Stateful</literal> annotation identifies this "
+"class as a stateful session bean. Stateful session beans are scoped to the "
+"conversation context by default."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:991
+#, no-c-format
+msgid ""
+"The <literal>@LoggedIn</literal> annotation applies a custom Seam "
+"interceptor to the component. This works because <literal>@LoggedIn</"
+"literal> is marked with an <literal>@Interceptor</literal> meta-annotation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:996
+#, no-c-format
+msgid ""
+"The <link linkend=\"datamodel-annotation\"><literal>@DataModel</literal></"
+"link> annotation exposes a <literal>List</literal> as a JSF "
+"<literal>ListDataModel</literal>. This makes it easy to implement clickable "
+"lists for search screens. In this case, the list of hotels is exposed to the "
+"page as a <literal>ListDataModel</literal> in the conversation variable "
+"named <literal>hotels</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1001
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Remove</literal> annotation specifies that a "
+"stateful session bean should be removed and its state destroyed after "
+"invocation of the annotated method. In Seam, all stateful session beans "
+"should define a method marked <literal>@Destroy @Remove</literal>. This is "
+"the EJB remove method that will be called when Seam destroys the session "
+"context. Actually, the <link linkend=\"destroy-annotation"
+"\"><literal>@Destroy</literal></link> annotation is of more general "
+"usefulness, since it can be used for any kind of cleanup that should happen "
+"when any Seam context ends. If you don't have an <literal>@Destroy @Remove</"
+"literal> method, state will leak and you will suffer performance problems."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1008
+#, no-c-format
+msgid ""
+"The main page of the application is a Facelets page. Let's look at the "
+"fragment which relates to searching for hotels:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1018
+#, no-c-format
+msgid ""
+"&lt;div class=\"section\"&gt;\n"
+"&lt;h:form&gt;\n"
+"  \n"
+"  &lt;span class=\"errors\"&gt;\n"
+"    &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"  &lt;/span&gt;\n"
+"    \n"
+"  &lt;h1&gt;Search Hotels&lt;/h1&gt;\n"
+"  &lt;fieldset&gt; \n"
+"     &lt;h:inputText value=\"#{hotelSearch.searchString}\" style=\"width: "
+"165px;\"&gt;\n"
+"        &lt;a:support event=\"onkeyup\" actionListener=\"#{hotelSearch.find}"
+"\" \n"
+"                   reRender=\"searchResults\" /&gt;\n"
+"     &lt;/h:inputText&gt;\n"
+"     &amp;#160;\n"
+"     &lt;a:commandButton value=\"Find Hotels\" action=\"#{hotelSearch.find}"
+"\" \n"
+"                      styleClass=\"button\" reRender=\"searchResults\"/&gt;\n"
+"     &amp;#160;\n"
+"     &lt;a:status&gt;\n"
+"        &lt;f:facet name=\"start\"&gt;\n"
+"           &lt;h:graphicImage value=\"/img/spinner.gif\"/&gt;\n"
+"        &lt;/f:facet&gt;\n"
+"     &lt;/a:status&gt;\n"
+"     &lt;br/&gt;\n"
+"     &lt;h:outputLabel for=\"pageSize\"&gt;Maximum results:&lt;/h:"
+"outputLabel&gt;&amp;#160;\n"
+"     &lt;h:selectOneMenu value=\"#{hotelSearch.pageSize}\" id=\"pageSize"
+"\"&gt;\n"
+"        &lt;f:selectItem itemLabel=\"5\" itemValue=\"5\"/&gt;\n"
+"        &lt;f:selectItem itemLabel=\"10\" itemValue=\"10\"/&gt;\n"
+"        &lt;f:selectItem itemLabel=\"20\" itemValue=\"20\"/&gt;\n"
+"     &lt;/h:selectOneMenu&gt;\n"
+"  &lt;/fieldset&gt;\n"
+"    \n"
+"&lt;/h:form&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;a:outputPanel id=\"searchResults\"&gt;\n"
+"  &lt;div class=\"section\"&gt;\n"
+"  &lt;h:outputText value=\"No Hotels Found\" \n"
+"                rendered=\"#{hotels != null and hotels.rowCount==0}\"/&gt;\n"
+"  &lt;h:dataTable value=\"#{hotels}\" var=\"hot\" rendered=\"#{hotels."
+"rowCount&gt;0}\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Name&lt;/f:facet&gt;\n"
+"      #{hot.name}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Address&lt;/f:facet&gt;\n"
+"      #{hot.address}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;City, State&lt;/f:facet&gt;\n"
+"      #{hot.city}, #{hot.state}, #{hot.country}\n"
+"    &lt;/h:column&gt; \n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Zip&lt;/f:facet&gt;\n"
+"      #{hot.zip}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"      &lt;s:link value=\"View Hotel\" action=\"#{hotelBooking.selectHotel"
+"(hot)}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"  &lt;/h:dataTable&gt;\n"
+"  &lt;s:link value=\"More results\" action=\"#{hotelSearch.nextPage}\" \n"
+"          rendered=\"#{hotelSearch.nextPageAvailable}\"/&gt;\n"
+"  &lt;/div&gt;\n"
+"&lt;/a:outputPanel&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1021
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:support&gt;</literal> tag allows a JSF action "
+"event listener to be called by asynchronous <literal>XMLHttpRequest</"
+"literal> when a JavaScript event like <literal>onkeyup</literal> occurs. "
+"Even better, the <literal>reRender</literal> attribute lets us render a "
+"fragment of the JSF page and perform a partial page update when the "
+"asynchronous response is received."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1026
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:status&gt;</literal> tag lets us display a "
+"cheesy annimated image while we wait for asynchronous requests to return."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1031
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:outputPanel&gt;</literal> tag defines a region "
+"of the page which can be re-rendered by an asynchronous request."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1036
+#, no-c-format
+msgid ""
+"The Seam <literal>&lt;s:link&gt;</literal> tag lets us attach a JSF action "
+"listener to an ordinary (non-JavaScript) HTML link. The advantage of this "
+"over the standard JSF <literal>&lt;h:commandLink&gt;</literal> is that it "
+"preserves the operation of \"open in new window\" and \"open in new tab\". "
+"Also notice that we use a method binding with a parameter: <literal>#"
+"{hotelBooking.selectHotel(hot)}</literal>. This is not possible in the "
+"standard Unified EL, but Seam provides an extension to the EL that lets you "
+"use parameters on any method binding expression."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1043
+#, no-c-format
+msgid ""
+"This page displays the search results dynamically as we type, and lets us "
+"choose a hotel and pass it to the <literal>selectHotel()</literal> method of "
+"the <literal>HotelBookingAction</literal>, which is where the "
+"<emphasis>really</emphasis> interesting stuff is going to happen."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1046
+#, no-c-format
+msgid ""
+"Now lets see how the booking example application uses a conversation-scoped "
+"stateful session bean to achieve a natural cache of persistent data related "
+"to the conversation. The following code example is pretty long. But if you "
+"think of it as a list of scripted actions that implement the various steps "
+"of the conversation, it's understandable. Read the class from top to bottom, "
+"as if it were a story."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1057
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"hotelBooking\")\n"
+"@LoggedIn\n"
+"public class HotelBookingAction implements HotelBooking\n"
+"{\n"
+"   \n"
+"   @PersistenceContext(type=EXTENDED)\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @In \n"
+"   private User user;\n"
+"   \n"
+"   @In(required=false) @Out\n"
+"   private Hotel hotel;\n"
+"   \n"
+"   @In(required=false) \n"
+"   @Out(required=false)\n"
+"   private Booking booking;\n"
+"     \n"
+"   @In\n"
+"   private FacesMessages facesMessages;\n"
+"      \n"
+"   @In\n"
+"   private Events events;\n"
+"   \n"
+"   @Logger \n"
+"   private Log log;\n"
+"   \n"
+"   @Begin\n"
+"   public String selectHotel(Hotel selectedHotel)\n"
+"   {\n"
+"      hotel = em.merge(selectedHotel);\n"
+"      return \"hotel\";\n"
+"   }\n"
+"   \n"
+"   public String bookHotel()\n"
+"   {      \n"
+"      booking = new Booking(hotel, user);\n"
+"      Calendar calendar = Calendar.getInstance();\n"
+"      booking.setCheckinDate( calendar.getTime() );\n"
+"      calendar.add(Calendar.DAY_OF_MONTH, 1);\n"
+"      booking.setCheckoutDate( calendar.getTime() );\n"
+"      \n"
+"      return \"book\";\n"
+"   }\n"
+"\n"
+"   public String setBookingDetails()\n"
+"   {\n"
+"      if (booking==null || hotel==null) return \"main\";\n"
+"      if ( !booking.getCheckinDate().before( booking.getCheckoutDate() ) )\n"
+"      {\n"
+"         facesMessages.add(\"Check out date must be later than check in date"
+"\");\n"
+"         return null;\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return \"confirm\";\n"
+"      }\n"
+"   }\n"
+"\n"
+"   @End\n"
+"   public String confirm()\n"
+"   {\n"
+"      if (booking==null || hotel==null) return \"main\";\n"
+"      em.persist(booking);\n"
+"      facesMessages.add\n"
+"          (\"Thank you, #{user.name}, your confimation number for #{hotel."
+"name} is #{booking.id}\");\n"
+"      log.info(\"New booking: #{booking.id} for #{user.username}\");\n"
+"      events.raiseEvent(\"bookingConfirmed\");\n"
+"      return \"confirmed\";\n"
+"   }\n"
+"   \n"
+"   @End\n"
+"   public String cancel()\n"
+"   {\n"
+"      return \"main\";\n"
+"   }\n"
+"   \n"
+"   @Destroy @Remove\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1060
+#, no-c-format
+msgid ""
+"This bean uses an EJB3 <emphasis>extended persistence context</emphasis>, so "
+"that any entity instances remain managed for the whole lifecycle of the "
+"stateful session bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1065
+#, no-c-format
+msgid ""
+"The <link linkend=\"out-annotation\"><literal>@Out</literal></link> "
+"annotation declares that an attribute value is <emphasis>outjected</"
+"emphasis> to a context variable after method invocations. In this case, the "
+"context variable named <literal>hotel</literal> will be set to the value of "
+"the <literal>hotel</literal> instance variable after every action listener "
+"invocation completes."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1070
+#, no-c-format
+msgid ""
+"The <link linkend=\"begin-annotation\"><literal>@Begin</literal></link> "
+"annotation specifies that the annotated method begins a <emphasis>long-"
+"running conversation</emphasis>, so the current conversation context will "
+"not be destroyed at the end of the request. Instead, it will be reassociated "
+"with every request from the current window, and destroyed either by timeout "
+"due to conversation inactivity or invocation of a matching <literal>@End</"
+"literal> method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1075
+#, no-c-format
+msgid ""
+"The <link linkend=\"end-annotation\"><literal>@End</literal></link> "
+"annotation specifies that the annotated method ends the current long-running "
+"conversation, so the current conversation context will be destroyed at the "
+"end of the request."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1080
+#, no-c-format
+msgid ""
+"This EJB remove method will be called when Seam destroys the conversation "
+"context. Don't ever forget to define this method!"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1087
+#, no-c-format
+msgid ""
+"<literal>HotelBookingAction</literal> contains all the action listener "
+"methods that implement selection, booking and booking confirmation, and "
+"holds state related to this work in its instance variables. We think you'll "
+"agree that this code is much cleaner and simpler than getting and setting "
+"<literal>HttpSession</literal> attributes."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1090
+#, no-c-format
+msgid ""
+"Even better, a user can have multiple isolated conversations per login "
+"session. Try it! Log in, run a search, and navigate to different hotel pages "
+"in multiple browser tabs. You'll be able to work on creating two different "
+"hotel reservations at the same time. If you leave any one conversation "
+"inactive for long enough, Seam will eventually time out that conversation "
+"and destroy its state. If, after ending a conversation, you backbutton to a "
+"page of that conversation and try to perform an action, Seam will detect "
+"that the conversation was already ended, and redirect you to the search page."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1096
+#, no-c-format
+msgid "The Seam UI control library"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1097
+#, no-c-format
+msgid ""
+"If you check inside the WAR file for the booking application, you'll find "
+"<literal>seam-ui.jar</literal> in the <literal>WEB-INF/lib</literal> "
+"directory. This package contains a number of JSF custom controls that "
+"integrate with Seam. The booking application uses the <literal>&lt;s:link&gt;"
+"</literal> control for navigation from the search screen to the hotel page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1100
+#, no-c-format
+msgid ""
+"&lt;s:link value=\"View Hotel\" action=\"#{hotelBooking.selectHotel}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1101
+#, no-c-format
+msgid ""
+"The use of <literal>&lt;s:link&gt;</literal> here allows us to attach an "
+"action listener to a HTML link without breaking the browser's \"open in new "
+"window\" feature. The standard JSF <literal>&lt;h:commandLink&gt;</literal> "
+"does not work with \"open in new window\". We'll see later that <literal>&lt;"
+"s:link&gt;</literal> also offers a number of other useful features, "
+"including conversation propagation rules."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1104
+#, no-c-format
+msgid ""
+"The booking application uses some other Seam and Ajax4JSF controls, "
+"especially on the <literal>/book.xhtml</literal> page. We won't get into the "
+"details of those controls here, but if you want to understand this code, "
+"please refer to the chapter covering Seam's functionality for JSF form "
+"validation."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1110
+#, no-c-format
+msgid "The Seam Debug Page"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1111
+#, no-c-format
+msgid ""
+"The WAR also includes <literal>seam-debug.jar</literal>. If this jar is "
+"deployed in <literal>WEB-INF/lib</literal>, along with the Facelets, and if "
+"you set the following Seam property in <literal>web.xml</literal> or "
+"<literal>seam.properties</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1114
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;org.jboss.seam.core.init.debug&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;true&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1115
+#, no-c-format
+msgid ""
+"Then the Seam debug page will be available. This page lets you browse and "
+"inspect the Seam components in any of the Seam contexts associated with your "
+"current login session. Just point your browser at <ulink url=\"http://"
+"localhost:8080/seam-booking/debug.seam\"><literal>http://localhost:8080/seam-"
+"booking/debug.seam</literal></ulink>."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1131
+#, no-c-format
+msgid "A complete application featuring Seam and jBPM: the DVD Store example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1132
+#, no-c-format
+msgid ""
+"The DVD Store demo application shows the practical usage of jBPM for both "
+"task management and pageflow."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1135
+#, no-c-format
+msgid ""
+"The user screens take advantage of a jPDL pageflow to implement searching "
+"and shopping cart functionality."
+msgstr ""
+
+#. Tag: screeninfo
+#: Tutorial.xml:1138 Tutorial.xml:1149 Tutorial.xml:1170
+#, no-c-format
+msgid "DVD Store example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1146
+#, no-c-format
+msgid ""
+"The administration screens take use jBPM to manage the approval and shipping "
+"cycle for orders. The business process may even be changed dynamically, by "
+"selecting a different process definition!"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1160
+#, no-c-format
+msgid "Look in the <literal>dvdstore</literal> directory."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1166
+#, no-c-format
+msgid ""
+"A complete application featuring Seam workspace management: the Issue "
+"Tracker example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1167
+#, no-c-format
+msgid ""
+"The Issue Tracker demo shows off Seam's workspace management functionality: "
+"the conversation switcher, conversation list and breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1181
+#, no-c-format
+msgid "Look in the <literal>issues</literal> directory."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1187
+#, no-c-format
+msgid "An example of Seam with Hibernate: the Hibernate Booking example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1188
+#, no-c-format
+msgid ""
+"The Hibernate Booking demo is a straight port of the Booking demo to an "
+"alternative architecture that uses Hibernate for persistence and JavaBeans "
+"instead of session beans."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1194
+#, no-c-format
+msgid "Look in the <literal>hibernate</literal> directory."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1200
+#, no-c-format
+msgid "A RESTful Seam application: the Blog example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1201
+#, no-c-format
+msgid ""
+"Seam makes it very easy to implement applications which keep state on the "
+"server-side. However, server-side state is not always appropriate, "
+"especially in for functionality that serves up <emphasis>content</emphasis>. "
+"For this kind of problem we often need to let the user bookmark pages and "
+"have a relatively stateless server, so that any page can be accessed at any "
+"time, via the bookmark. The Blog example shows how to a implement RESTful "
+"application using Seam. Every page of the application can be bookmarked, "
+"including the search results page."
+msgstr ""
+
+#. Tag: screeninfo
+#: Tutorial.xml:1204
+#, no-c-format
+msgid "Blog example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1212
+#, no-c-format
+msgid ""
+"The Blog example demonstrates the use of \"pull\"-style MVC, where instead "
+"of using action listener methods to retrieve data and prepare the data for "
+"the view, the view pulls data from components as it is being rendered."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1216
+#, no-c-format
+msgid "Using \"pull\"-style MVC"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1217
+#, no-c-format
+msgid ""
+"This snippet from the <literal>index.xhtml</literal> facelets page displays "
+"a list of recent blog entries:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1220
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{blog.recentBlogEntries}\" var=\"blogEntry\" rows="
+"\"3\"&gt;\n"
+"   &lt;h:column&gt;\n"
+"      &lt;div class=\"blogEntry\"&gt;\n"
+"         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"         &lt;div&gt;\n"
+"            &lt;h:outputText escape=\"false\" \n"
+"                  value=\"#{blogEntry.excerpt==null ? blogEntry.body : "
+"blogEntry.excerpt}\"/&gt;\n"
+"         &lt;/div&gt;\n"
+"         &lt;p&gt;\n"
+"            &lt;h:outputLink value=\"entry.seam\" rendered=\"#{blogEntry."
+"excerpt!=null}\"&gt;\n"
+"               &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/"
+"&gt;\n"
+"               Read more...\n"
+"            &lt;/h:outputLink&gt;\n"
+"         &lt;/p&gt;\n"
+"         &lt;p&gt;\n"
+"            [Posted on \n"
+"            &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"               &lt;f:convertDateTime timeZone=\"#{blog.timeZone}\" locale=\"#"
+"{blog.locale}\" \n"
+"                   type=\"both\"/&gt;\n"
+"            &lt;/h:outputText&gt;]\n"
+"            &amp;#160;\n"
+"            &lt;h:outputLink value=\"entry.seam\"&gt;[Link]\n"
+"               &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/"
+"&gt;\n"
+"            &lt;/h:outputLink&gt;\n"
+"         &lt;/p&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1221
+#, no-c-format
+msgid ""
+"If we navigate to this page from a bookmark, how does the data used by the "
+"<literal>&lt;h:dataTable&gt;</literal> actually get initialized? Well, what "
+"happens is that the <literal>Blog</literal> is retrieved lazily&mdash;"
+"\"pulled\"&mdash;when needed, by a Seam component named <literal>blog</"
+"literal>. This is the opposite flow of control to what is usual in "
+"traditional web action-based frameworks like Struts."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1229
+#, no-c-format
+msgid ""
+"@Name(\"blog\")\n"
+"@Scope(ScopeType.STATELESS)\n"
+"public class BlogService \n"
+"{\n"
+"   \n"
+"   @In\n"
+"   private EntityManager entityManager;\n"
+"  \n"
+"   @Unwrap\n"
+"   public Blog getBlog()\n"
+"   {\n"
+"      return (Blog) entityManager.createQuery(\"from Blog b left join fetch "
+"b.blogEntries\")\n"
+"            .setHint(\"org.hibernate.cacheable\", true)\n"
+"            .getSingleResult();\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1232
+#, no-c-format
+msgid ""
+"This component uses a <emphasis>seam-managed persistence context</emphasis>. "
+"Unlike the other examples we've seen, this persistence context is managed by "
+"Seam, instead of by the EJB3 container. The persistence context spans the "
+"entire web request, allowing us to avoid any exceptions that occur when "
+"accessing unfetched associations in the view."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1237
+#, no-c-format
+msgid ""
+"The <literal>@Unwrap</literal> annotation tells Seam to provide the return "
+"value of the method&mdash;the <literal>Blog</literal>&mdash;instead of the "
+"actual <literal>BlogService</literal> component to clients. This is the Seam "
+"<emphasis>manager component pattern</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1244
+#, no-c-format
+msgid ""
+"This is good so far, but what about bookmarking the result of form "
+"submissions, such as a search results page?"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1250
+#, no-c-format
+msgid "Bookmarkable search results page"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1251
+#, no-c-format
+msgid ""
+"The blog example has a tiny form in the top right of each page that allows "
+"the user to search for blog entries. This is defined in a file, "
+"<literal>menu.xhtml</literal>, included by the facelets template, "
+"<literal>template.xhtml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1254
+#, no-c-format
+msgid ""
+"&lt;div id=\"search\"&gt;\n"
+"   &lt;h:form&gt;\n"
+"      &lt;h:inputText value=\"#{searchAction.searchPattern}\"/&gt;\n"
+"      &lt;h:commandButton value=\"Search\" action=\"/search.xhtml\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1255
+#, no-c-format
+msgid ""
+"To implement a bookmarkable search results page, we need to perform a "
+"browser redirect after processing the search form submission. Because we "
+"used the JSF view id as the action outcome, Seam automatically redirects to "
+"the view id when the form is submitted. Alternatively, we could have defined "
+"a navigation rule like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1258
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"   &lt;navigation-case&gt;\n"
+"      &lt;from-outcome&gt;searchResults&lt;/from-outcome&gt;\n"
+"      &lt;to-view-id&gt;/search.xhtml&lt;/to-view-id&gt;\n"
+"      &lt;redirect/&gt;\n"
+"   &lt;/navigation-case&gt;\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1259
+#, no-c-format
+msgid "Then the form would have looked like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1262
+#, no-c-format
+msgid ""
+"&lt;div id=\"search\"&gt;\n"
+"   &lt;h:form&gt;\n"
+"      &lt;h:inputText value=\"#{searchAction.searchPattern}\"/&gt;\n"
+"      &lt;h:commandButton value=\"Search\" action=\"searchResults\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1263
+#, no-c-format
+msgid ""
+"But when we redirect, we need to include the values submitted with the form "
+"as request parameters, to get a bookmarkable URL like <literal>http://"
+"localhost:8080/seam-blog/search.seam?searchPattern=seam</literal>. JSF does "
+"not provide an easy way to do this, but Seam does. We use a Seam "
+"<emphasis>page parameter</emphasis>, defined in <literal>WEB-INF/pages.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1266
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   &lt;page view-id=\"/search.xhtml\"&gt;\n"
+"      &lt;param name=\"searchPattern\" value=\"#{searchService.searchPattern}"
+"\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1267
+#, no-c-format
+msgid ""
+"This tells Seam to include the value of <literal>#{searchService."
+"searchPattern}</literal> as a request parameter named "
+"<literal>searchPattern</literal> when redirecting to the page, and then re-"
+"apply the value of that parameter to the model before rendering the page."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1270
+#, no-c-format
+msgid "The redirect takes us to the <literal>search.xhtml</literal> page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1273
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{searchResults}\" var=\"blogEntry\"&gt;\n"
+"   &lt;h:column&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:outputLink value=\"entry.seam\"&gt;\n"
+"            &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"            #{blogEntry.title}\n"
+"         &lt;/h:outputLink&gt;\n"
+"         posted on \n"
+"         &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"            &lt;f:convertDateTime timeZone=\"#{blog.timeZone}\" locale=\"#"
+"{blog.locale}\" type=\"both\"/&gt;\n"
+"         &lt;/h:outputText&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1274
+#, no-c-format
+msgid ""
+"Which again uses \"pull\"-style MVC to retrieve the actual search results:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1277
+#, no-c-format
+msgid ""
+"@Name(\"searchService\")\n"
+"public class SearchService \n"
+"{\n"
+"   \n"
+"   @In\n"
+"   private EntityManager entityManager;\n"
+"   \n"
+"   private String searchPattern;\n"
+"   \n"
+"   @Factory(\"searchResults\")\n"
+"   public List&lt;BlogEntry&gt; getSearchResults()\n"
+"   {\n"
+"      if (searchPattern==null)\n"
+"      {\n"
+"         return null;\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return entityManager.createQuery(\"select be from BlogEntry be "
+"where lower(be.title)\n"
+"             like :searchPattern or lower(be.body) like :searchPattern \n"
+"             order by be.date desc\")\n"
+"               .setParameter( \"searchPattern\", getSqlSearchPattern() )\n"
+"               .setMaxResults(100)\n"
+"               .getResultList();\n"
+"      }\n"
+"   }\n"
+"\n"
+"   private String getSqlSearchPattern()\n"
+"   {\n"
+"      return searchPattern==null ? \"\" : '&#37;' + \n"
+"          searchPattern.toLowerCase().replace('*', '&#37;').replace('?', "
+"'_') + '&#37;';\n"
+"   }\n"
+"\n"
+"   public String getSearchPattern()\n"
+"   {\n"
+"      return searchPattern;\n"
+"   }\n"
+"\n"
+"   public void setSearchPattern(String searchPattern)\n"
+"   {\n"
+"      this.searchPattern = searchPattern;\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1282
+#, no-c-format
+msgid "Using \"push\"-style MVC in a RESTful application"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1283
+#, no-c-format
+msgid ""
+"Very occasionally, it makes more sense to use push-style MVC for processing "
+"RESTful pages, and so Seam provides the notion of a <emphasis>page action</"
+"emphasis>. The Blog example uses a page action for the blog entry page, "
+"<literal>entry.xhtml</literal>. Note that this is a little bit contrived, it "
+"would have been easier to use pull-style MVC here as well."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1286
+#, no-c-format
+msgid ""
+"The <literal>entryAction</literal> component works much like an action class "
+"in a traditional push-MVC action-oriented framework like Struts:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1289
+#, no-c-format
+msgid ""
+"@Name(\"entryAction\")\n"
+"@Scope(STATELESS)\n"
+"public class EntryAction\n"
+"{\n"
+"   @In(create=true) \n"
+"   private Blog blog;\n"
+"   \n"
+"   @Out\n"
+"   private BlogEntry blogEntry;\n"
+"   \n"
+"   public void loadBlogEntry(String id) throws EntryNotFoundException\n"
+"   {\n"
+"      blogEntry = blog.getBlogEntry(id);\n"
+"      if (blogEntry==null) throw new EntryNotFoundException(id);\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1290
+#, no-c-format
+msgid "Page actions are also declared in <literal>pages.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1293
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   ...\n"
+"\n"
+"   &lt;page view-id=\"/entry.xhtml\" action=\"#{entryAction.loadBlogEntry"
+"(blogEntry.id)}\"&gt;\n"
+"      &lt;param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"\n"
+"   &lt;page view-id=\"/post.xhtml\" action=\"#{loginAction.challenge}\"/"
+"&gt;\n"
+"\n"
+"   &lt;page view-id=\"*\" action=\"#{blog.hitCount.hit}\"/&gt;\n"
+"\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1294
+#, no-c-format
+msgid ""
+"Notice that the example is using page actions for some other "
+"functionality&mdash;the login challenge, and the pageview counter. Also "
+"notice the use of a parameter in the page action method binding. This is not "
+"a standard feature of JSF EL, but Seam lets you use it, not just for page "
+"actions, but also in JSF method bindings."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1297
+#, no-c-format
+msgid ""
+"When the <literal>entry.xhtml</literal> page is requested, Seam first binds "
+"the page parameter <literal>blogEntryId</literal> to the model, then runs "
+"the page action, which retrieves the needed data&mdash;the "
+"<literal>blogEntry</literal>&mdash;and places it in the Seam event context. "
+"Finally, the following is rendered:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1300
+#, no-c-format
+msgid ""
+"&lt;div class=\"blogEntry\"&gt;\n"
+"   &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"   &lt;div&gt;\n"
+"      &lt;h:outputText escape=\"false\" value=\"#{blogEntry.body}\"/&gt;\n"
+"   &lt;/div&gt;\n"
+"   &lt;p&gt;\n"
+"      [Posted on&amp;#160;\n"
+"      &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"         &lt;f:convertDateTime timezone=\"#{blog.timeZone}\" locale=\"#{blog."
+"locale}\" type=\"both\"/&gt;\n"
+"      &lt;/h:outputText&gt;]\n"
+"   &lt;/p&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1301
+#, no-c-format
+msgid ""
+"If the blog entry is not found in the database, the "
+"<literal>EntryNotFoundException</literal> exception is thrown. We want this "
+"exception to result in a 404 error, not a 505, so we annotate the exception "
+"class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1304
+#, no-c-format
+msgid ""
+"@ApplicationException(rollback=true)\n"
+"@HttpError(errorCode=HttpServletResponse.SC_NOT_FOUND)\n"
+"public class EntryNotFoundException extends Exception\n"
+"{\n"
+"   EntryNotFoundException(String id)\n"
+"   {\n"
+"      super(\"entry not found: \" + id);\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1305
+#, no-c-format
+msgid ""
+"An alternative implementation of the example does not use the parameter in "
+"the method binding:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1308
+#, no-c-format
+msgid ""
+"@Name(\"entryAction\")\n"
+"@Scope(STATELESS)\n"
+"public class EntryAction\n"
+"{\n"
+"   @In(create=true) \n"
+"   private Blog blog;\n"
+"   \n"
+"   @In @Out\n"
+"   private BlogEntry blogEntry;\n"
+"   \n"
+"   public void loadBlogEntry() throws EntryNotFoundException\n"
+"   {\n"
+"      blogEntry = blog.getBlogEntry( blogEntry.getId() );\n"
+"      if (blogEntry==null) throw new EntryNotFoundException(id);\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1309
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   ...\n"
+"\n"
+"   &lt;page view-id=\"/entry.xhtml\" action=\"#{entryAction.loadBlogEntry}"
+"\"&gt;\n"
+"      &lt;param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1310
+#, no-c-format
+msgid "It is a matter of taste which implementation you prefer."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1318
+#, no-c-format
+msgid "Running the Seam examples in JBoss using the JSF 1.2 RI"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1319
+#, no-c-format
+msgid ""
+"JBoss AS 4.0 ships with the Apache MyFaces implementation of JSF 1.1. After "
+"many months of waiting, there is <emphasis>still</emphasis> no "
+"implementation of JSF 1.2 from MyFaces. For this and other reasons, JBoss AS "
+"4.2 will embed the JSF 1.2 Reference Implementation by default. Soon after "
+"the release of 4.2, we will migrate the Seam examples to JSF 1.2."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1322
+#, no-c-format
+msgid ""
+"For those who can't wait, Seam is already compatible with JSF 1.2, and it's "
+"easy to get the Seam examples running with JSF 1.2 in JBoss 4.0.5. Let's "
+"start with the famous booking example:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1327
+#, no-c-format
+msgid ""
+"copy <literal>jsf-api.jar</literal>, <literal>jsf-impl.jar</literal>, "
+"<literal>el-api.jar</literal>, <literal>el-impl.jar</literal> to "
+"<literal>server/default/deploy/tomcat/jbossweb-tomcat55.sar/jsf-libs</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1332
+#, no-c-format
+msgid ""
+"delete <literal>myfaces-api.jar</literal> and <literal>myfaces-impl.jar</"
+"literal> from <literal>server/default/deploy/tomcat/jbossweb-tomcat55.sar/"
+"jsf-libs</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1337
+#, no-c-format
+msgid ""
+"edit <literal>server/default/deploy/tomcat/jbossweb-tomcat55.sar/conf/web."
+"xml</literal>, replacing <literal>myfaces-impl.jar</literal> with "
+"<literal>jsf-impl.jar</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1342
+#, no-c-format
+msgid ""
+"edit <literal>examples/booking/resources/WEB-INF/web.xml</literal>, deleting "
+"the MyFaces listener, uncommenting the RI listener"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1347
+#, no-c-format
+msgid ""
+"edit <literal>examples/booking/resources/WEB-INF/faces-config.xml</literal>, "
+"uncommenting the lines that install the <literal>SeamELResolver</literal> "
+"using the new JSF 1.2 XML schema declaration."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1352
+#, no-c-format
+msgid ""
+"edit <literal>examples/booking/resources/META-INF/application.xml</literal>, "
+"deleting the lines that declare <literal>el-api.jar</literal> and "
+"<literal>el-impl.jar</literal> as Java modules."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1357
+#, no-c-format
+msgid ""
+"Restart JBoss, and type <literal>ant</literal> in the <literal>examples/"
+"booking</literal> directory."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Validation.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Validation.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Validation.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,375 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Validation.xml:10
+#, no-c-format
+msgid "JSF form validation in Seam"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:11
+#, no-c-format
+msgid "In plain JSF, validation is defined in the view:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:14
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Country:\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;my:validateCountry/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Zip code:\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;my:validateZip/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:15
+#, no-c-format
+msgid ""
+"In practice, this approach usually violates DRY, since most \"validation\" "
+"actually enforces constraints that are part of the data model, and exist all "
+"the way down to the database schema definition. Seam provides support for "
+"model-based constraints defined using Hibernate Validator."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:18
+#, no-c-format
+msgid ""
+"Let's start by defining our constraints, on our <literal>Location</literal> "
+"class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:21
+#, no-c-format
+msgid ""
+"public class Location {\n"
+"    private String country;\n"
+"    private String zip;\n"
+"    \n"
+"    @NotNull\n"
+"    @Length(max=30)\n"
+"    public String getCountry() { return country; }\n"
+"    public void setCountry(String c) { country = c; }\n"
+"\n"
+"    @NotNull\n"
+"    @Length(max=6)\n"
+"    @Pattern(\"^&#92;d*&#36;\")\n"
+"    public String getZip() { return zip; }\n"
+"    public void setZip(String z) { zip = z; }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:22
+#, no-c-format
+msgid ""
+"Well, that's a decent first cut, but in practice it might be more elegant to "
+"use custom constraints instead of the ones built into Hibernate Validator:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:25
+#, no-c-format
+msgid ""
+"public class Location {\n"
+"    private String country;\n"
+"    private String zip;\n"
+"    \n"
+"    @NotNull\n"
+"    @Country\n"
+"    public String getCountry() { return country; }\n"
+"    public void setCountry(String c) { country = c; }\n"
+"\n"
+"    @NotNull\n"
+"    @ZipCode\n"
+"    public String getZip() { return zip; }\n"
+"    public void setZip(String z) { zip = z; }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:26
+#, no-c-format
+msgid ""
+"Whichever route we take, we no longer need to specify the type of validation "
+"to be used in the JSF page. Instead, we can use <literal>&lt;s:validate&gt;</"
+"literal> to validate against the constraint defined on the model object."
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:29
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Country:\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;s:validate/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Zip code:\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;s:validate/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:30
+#, no-c-format
+msgid ""
+"<emphasis>Note:</emphasis> specifying <literal>@NotNull</literal> on the "
+"model does <emphasis>not</emphasis> eliminate the requirement for "
+"<literal>required=\"true\"</literal> to appear on the control! This is due "
+"to a limitation of the JSF validation architecture."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:33
+#, no-c-format
+msgid ""
+"This version is not much less verbose than what we started with, so let's "
+"try <literal>&lt;s:validateAll&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:36
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;h:inputText value=\"#{location.country}\" required=\"true\"/"
+"&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/"
+"&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:37
+#, no-c-format
+msgid ""
+"This tag simply adds an <literal>&lt;s:validate&gt;</literal> to every input "
+"in the form. For a large form, it can save a lot of typing!"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:40
+#, no-c-format
+msgid ""
+"Now we need to do something about displaying feedback to the user when "
+"validation fails. Currently we are displaying all messages at the top of the "
+"form. What we would really like to do is display the message next to the "
+"field with the error (this is possible in plain JSF), highlight the field "
+"(this is not possible) and, for good measure, display some image next the "
+"the field (also not possible)."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:43
+#, no-c-format
+msgid "Let's try out <literal>&lt;s:decorate&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:46
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;s:decorate&gt;\n"
+"                &lt;f:facet name=\"beforeInvalidField\"&gt;&lt;h:"
+"graphicImage src=\"img/error.gif\"/&gt;&lt;/f:facet&gt;\n"
+"                &lt;f:facet name=\"afterInvalidField\"&gt;&lt;s:message/&gt;"
+"&lt;/f:facet&gt;\n"
+"                &lt;f:facet name=\"aroundInvalidField\"&gt;&lt;s:span "
+"styleClass=\"error\"/&gt;&lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{location.country}\" required=\"true"
+"\"/&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;s:decorate&gt;\n"
+"                &lt;f:facet name=\"beforeInvalidField\"&gt;&lt;h:"
+"graphicImage src=\"img/error.gif\"/&gt;&lt;/f:facet&gt;\n"
+"                &lt;f:facet name=\"afterInvalidField\"&gt;&lt;s:message/&gt;"
+"&lt;/f:facet&gt;\n"
+"                &lt;f:facet name=\"aroundInvalidField\"&gt;&lt;s:span "
+"styleClass=\"error\"/&gt;&lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/"
+"&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:47
+#, no-c-format
+msgid ""
+"Well, that looks much better to the user, but it is extremely verbose. "
+"Fortunately, the facets of <literal>&lt;s:decorate&gt;</literal> may be "
+"defined on any parent element:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:50
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;f:facet name=\"beforeInvalidField\"&gt;\n"
+"        &lt;h:graphicImage src=\"img/error.gif\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;f:facet name=\"afterInvalidField\"&gt;\n"
+"        &lt;s:message/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;f:facet name=\"aroundInvalidField\"&gt;\n"
+"        &lt;s:span styleClass=\"error\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;s:decorate&gt;\n"
+"                &lt;h:inputText value=\"#{location.country}\" required=\"true"
+"\"/&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;s:decorate&gt;\n"
+"                &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/"
+"&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:51
+#, no-c-format
+msgid ""
+"This approach <emphasis>defines</emphasis> constraints on the model, and "
+"<emphasis>presents</emphasis> constraint violations in the view&mdash;a "
+"significantly better design."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:54
+#, no-c-format
+msgid ""
+"Finally, we can use Ajax4JSF to display validation messages as the user is "
+"typing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:57
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;f:facet name=\"beforeInvalidField\"&gt;\n"
+"        &lt;h:graphicImage src=\"img/error.gif\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;f:facet name=\"afterInvalidField\"&gt;\n"
+"        &lt;s:message/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;f:facet name=\"aroundInvalidField\"&gt;\n"
+"        &lt;s:span styleClass=\"error\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;s:decorate id=\"country\"&gt;\n"
+"                &lt;h:inputText value=\"#{location.country}\" required=\"true"
+"\"&gt;\n"
+"                    &lt;a:support event=\"onblur\" reRender=\"country\"/"
+"&gt;\n"
+"                &lt;/h:inputText&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;s:decorate id=\"zip\"&gt;\n"
+"                &lt;h:inputText value=\"#{location.zip}\" required=\"true"
+"\"&gt;\n"
+"                    &lt;a:support event=\"onblur\" reRender=\"zip\"/&gt;\n"
+"                &lt;/h:inputText&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Xml.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Xml.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/hi-IN/Xml.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,933 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Xml.xml:10
+#, no-c-format
+msgid "Configuring Seam components"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:11
+#, no-c-format
+msgid ""
+"The philosophy of minimizing XML-based configuration is extremely strong in "
+"Seam. Nevertheless, there are various reasons why we might want to configure "
+"a Seam component using XML: to isolate deployment-specific information from "
+"the Java code, to enable the creation of re-usable frameworks, to configure "
+"Seam's built-in functionality, etc. Seam provides two basic approaches to "
+"configuring components: configuration via property settings in a properties "
+"file or <literal>web.xml</literal>, and configuration via "
+"<literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:14
+#, no-c-format
+msgid "Configuring components via property settings"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:15
+#, no-c-format
+msgid ""
+"Seam components may be provided with configuration properties either via "
+"servlet context parameters, or via a properties file named <literal>seam."
+"properties</literal> in the root of the classpath."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:18
+#, no-c-format
+msgid ""
+"The configurable Seam component must expose JavaBeans-style property setter "
+"methods for the configurable attributes. If a seam component named "
+"<literal>com.jboss.myapp.settings</literal> has a setter method named "
+"<literal>setLocale()</literal>, we can provide a property named <literal>com."
+"jboss.myapp.settings.locale</literal> in the <literal>seam.properties</"
+"literal> file or as a servlet context parameter, and Seam will set the value "
+"of the <literal>locale</literal> attribute whenever it instantiates the "
+"component."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:21
+#, no-c-format
+msgid ""
+"The same mechanism is used to configure Seam itself. For example, to set the "
+"conversation timeout, we provide a value for <literal>org.jboss.seam.core."
+"manager.conversationTimeout</literal> in <literal>web.xml</literal> or "
+"<literal>seam.properties</literal>. (There is a built-in Seam component "
+"named <literal>org.jboss.seam.core.manager</literal> with a setter method "
+"named <literal>setConversationTimeout()</literal>.)"
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:24
+#, no-c-format
+msgid "Configuring components via components.xml"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:25
+#, no-c-format
+msgid ""
+"The <literal>components.xml</literal> file is a bit more powerful than "
+"property settings. It lets you:"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:30
+#, no-c-format
+msgid ""
+"Configure components that have been installed automatically&mdash;including "
+"both built-in components, and application components that have been "
+"annotated with the <literal>@Name</literal> annotation and picked up by "
+"Seam's deployment scanner."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:35
+#, no-c-format
+msgid ""
+"Install classes with no <literal>@Name</literal> annotation as Seam "
+"components&mdash;this is most useful for certain kinds of infrastructural "
+"components which can be installed multiple times different names (for "
+"example Seam-managed persistence contexts)."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:40
+#, no-c-format
+msgid ""
+"Install components that <emphasis>do</emphasis> have a <literal>@Name</"
+"literal> annotation but are not installed by default because of an "
+"<literal>@Install</literal> annotation that indicates the component should "
+"not be installed."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:45
+#, no-c-format
+msgid "Override the scope of a component."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:50
+#, no-c-format
+msgid ""
+"A <literal>components.xml</literal> file may appear in one of three "
+"different places:"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:55
+#, no-c-format
+msgid "The <literal>WEB-INF</literal> directory of a <literal>war</literal>."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:60
+#, no-c-format
+msgid "The <literal>META-INF</literal> directory of a <literal>jar</literal>."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:65
+#, no-c-format
+msgid ""
+"Any directory of a <literal>jar</literal> that contains classes with an "
+"<literal>@Name</literal> annotation."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:70
+#, no-c-format
+msgid ""
+"Usually, Seam components are installed when the deployment scanner discovers "
+"a class with a <literal>@Name</literal> annotation sitting in an archive "
+"with a <literal>seam.properties</literal> file or a <literal>META-INF/"
+"components.xml</literal> file. (Unless the component has an "
+"<literal>@Install</literal> annotation indicating it should not be installed "
+"by default.) The <literal>components.xml</literal> file lets us handle "
+"special cases where we need to override the annotations."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:73
+#, no-c-format
+msgid ""
+"For example, the following <literal>components.xml</literal> file installs "
+"the JBoss Embeddable EJB3 container:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:76
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"&gt;\n"
+"    &lt;core:ejb/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:77
+#, no-c-format
+msgid "This example does the same thing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:80
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component class=\"org.jboss.seam.core.Ejb\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:81
+#, no-c-format
+msgid ""
+"This one installs and configures two different Seam-managed persistence "
+"contexts:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:84
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"    &lt;core:managed-persistence-context name=\"customerDatabase\"\n"
+"                persistence-unit-jndi-name=\"java:/"
+"customerEntityManagerFactory\"/&gt;\n"
+"        \n"
+"    &lt;core:managed-persistence-context name=\"accountingDatabase\"\n"
+"                persistence-unit-jndi-name=\"java:/"
+"accountingEntityManagerFactory\"/&gt;            \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:85
+#, no-c-format
+msgid "As does this one:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:88
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component name=\"customerDatabase\" \n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"customerEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"    \n"
+"    &lt;component name=\"accountingDatabase\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"accountingEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:89
+#, no-c-format
+msgid ""
+"This example creates a session-scoped Seam-managed persistence context (this "
+"is not recommended in practice):"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:92
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"  &lt;core:managed-persistence-context name=\"productDatabase\" \n"
+"                                   scope=\"session\"\n"
+"              persistence-unit-jndi-name=\"java:/productEntityManagerFactory"
+"\"/&gt;        \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:93
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"            \n"
+"    &lt;component name=\"productDatabase\"\n"
+"              scope=\"session\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"productEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:94
+#, no-c-format
+msgid ""
+"It is common to use the <literal>auto-create</literal> option for "
+"infrastructural objects like persistence contexts, which saves you from "
+"having to explicitly specify <literal>create=true</literal> when you use the "
+"<literal>@In</literal> annotation."
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:97
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"  &lt;core:managed-persistence-context name=\"productDatabase\" \n"
+"                             auto-create=\"true\"\n"
+"              persistence-unit-jndi-name=\"java:/productEntityManagerFactory"
+"\"/&gt;        \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:98
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"            \n"
+"    &lt;component name=\"productDatabase\"\n"
+"        auto-create=\"true\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"productEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:99
+#, no-c-format
+msgid ""
+"The <literal>&lt;factory&gt;</literal> declaration lets you specify a value "
+"or method binding expression that will be evaluated to initialize the value "
+"of a context variable when it is first referenced."
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:102
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"contact\" method=\"#{contactManager.loadContact}\" "
+"scope=\"CONVERSATION\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:103
+#, no-c-format
+msgid ""
+"You can create an \"alias\" (a second name) for a Seam component like so:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:106
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"user\" value=\"#{actor}\" scope=\"STATELESS\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:107
+#, no-c-format
+msgid "You can even create an \"alias\" for a commonly used expression:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:110
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"contact\" value=\"#{contactManager.contact}\" scope="
+"\"STATELESS\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:111
+#, no-c-format
+msgid ""
+"It is especially common to see the use of <literal>auto-create=\"true\"</"
+"literal> with the <literal>&lt;factory&gt;</literal> declaration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:114
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"session\" value=\"#{entityManager.delegate}\" scope="
+"\"STATELESS\" \n"
+"        auto-create=\"true\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:115
+#, no-c-format
+msgid ""
+"Sometimes we want to reuse the same <literal>components.xml</literal> file "
+"with minor changes during both deployment and testing. Seam lets you place "
+"wildcards of the form <literal>@wildcard@</literal> in the "
+"<literal>components.xml</literal> file which can be replaced either by your "
+"Ant build script (at deployment time) or by providing a file named "
+"<literal>components.properties</literal> in the classpath (at development "
+"time). You'll see this approach used in the Seam examples."
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:118
+#, no-c-format
+msgid "Fine-grained configuration files"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:119
+#, no-c-format
+msgid ""
+"If you have a large number of components that need to be configured in XML, "
+"it makes much more sense to split up the information in <literal>components."
+"xml</literal> into many small files. Seam lets you put configuration for a "
+"class named, for example, <literal>com.helloworld.Hello</literal> in a "
+"resource named <literal>com/helloworld/Hello.component.xml</literal>. (You "
+"might be familiar with this pattern, since it is the same one we use in "
+"Hibernate.) The root element of the file may be either a <literal>&lt;"
+"components&gt;</literal> or <literal>&lt;component&gt;</literal> element."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:122
+#, no-c-format
+msgid "The first option lets you define multiple components in the file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:125
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component class=\"com.helloworld.Hello\" name=\"hello\"&gt;\n"
+"        &lt;property name=\"name\"&gt;#{user.name}&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"    &lt;factory name=\"message\" value=\"#{hello.message}\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:126
+#, no-c-format
+msgid ""
+"The second option only lets you define or configure one component, but is "
+"less noisy:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:129
+#, no-c-format
+msgid ""
+"&lt;component name=\"hello\"&gt;\n"
+"    &lt;property name=\"name\"&gt;#{user.name}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:130
+#, no-c-format
+msgid ""
+"In the second option, the class name is implied by the file in which the "
+"component definition appears."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:133
+#, no-c-format
+msgid ""
+"Alternatively, you may put configuration for all classes in the <literal>com."
+"helloworld</literal> package in <literal>com/helloworld/components.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:136
+#, no-c-format
+msgid "Configurable property types"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:137
+#, no-c-format
+msgid ""
+"Properties of string, primitive or primitive wrapper type may be configured "
+"just as you would expect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:140
+#, no-c-format
+msgid "org.jboss.seam.core.manager.conversationTimeout 60000"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:141
+#, no-c-format
+msgid "&lt;core:manager conversation-timeout=\"60000\"/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:142
+#, no-c-format
+msgid ""
+"&lt;component name=\"org.jboss.seam.core.manager\"&gt;\n"
+"    &lt;property name=\"conversationTimeout\"&gt;60000&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:143
+#, no-c-format
+msgid "Arrays, sets and lists of strings or primitives are also supported:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:146
+#, no-c-format
+msgid ""
+"org.jboss.seam.core.jbpm.processDefinitions order.jpdl.xml, return.jpdl.xml, "
+"inventory.jpdl.xml"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:147
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;order.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;return.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:148
+#, no-c-format
+msgid ""
+"&lt;component name=\"org.jboss.seam.core.jbpm\"&gt;\n"
+"    &lt;property name=\"processDefinitions\"&gt;\n"
+"        &lt;value&gt;order.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;return.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:149
+#, no-c-format
+msgid ""
+"Even maps with String-valued keys and string or primitive values are "
+"supported:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:152
+#, no-c-format
+msgid ""
+"&lt;component name=\"issueEditor\"&gt;\n"
+"    &lt;property name=\"issueStatuses\"&gt;\n"
+"        &lt;key&gt;open&lt;/key&gt; &lt;value&gt;open issue&lt;/value&gt;\n"
+"        &lt;key&gt;resolved&lt;/key&gt; &lt;value&gt;issue resolved by "
+"developer&lt;/value&gt;\n"
+"        &lt;key&gt;closed&lt;/key&gt; &lt;value&gt;resolution accepted by "
+"user&lt;/value&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:153
+#, no-c-format
+msgid ""
+"Finally, you may wire together components using a value-binding expression. "
+"Note that this is quite different to injection using <literal>@In</literal>, "
+"since it happens at component instantiation time instead of invocation time. "
+"It is therefore much more similar to the dependency injection facilities "
+"offered by traditional IoC containers like JSF or Spring."
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:156
+#, no-c-format
+msgid ""
+"&lt;drools:managed-working-memory name=\"policyPricingWorkingMemory\" rule-"
+"base=\"#{policyPricingRules}\"/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:157
+#, no-c-format
+msgid ""
+"&lt;component name=\"policyPricingWorkingMemory\"\n"
+"          class=\"org.jboss.seam.drools.ManagedWorkingMemory\"&gt;\n"
+"    &lt;property name=\"ruleBase\"&gt;#{policyPricingRules}&lt;/"
+"property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:158
+#, no-c-format
+msgid "Using XML Namespaces"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:159
+#, no-c-format
+msgid ""
+"Throughout the examples, there have been two competing ways of declaring "
+"components: with and without the use of XML namespaces. The following shows "
+"a typical <literal>components.xml</literal> file without namespaces. It uses "
+"the Seam Components DTD:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:162
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"&gt;\n"
+"&lt;!DOCTYPE components PUBLIC \"-//JBoss/Seam Component Configuration DTD "
+"1.2//EN\"\n"
+"                            \"http://jboss.com/products/seam/components-1.2."
+"dtd\"&gt;\n"
+"&lt;components&gt;\n"
+"\n"
+"    &lt;component class=\"org.jboss.seam.core.init\"&gt;\n"
+"        &lt;property name=\"debug\"&gt;true&lt;/property&gt;\n"
+"        &lt;property name=\"jndiPattern\"&gt;@jndiPattern@&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"    &lt;component name=\"org.jboss.sean.core.ejb\" installed=\"@embeddedEjb@"
+"\" /&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:163
+#, no-c-format
+msgid ""
+"As you can see, this is somewhat verbose. Even worse, the component and "
+"attribute names cannot be validated at development time."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:166
+#, no-c-format
+msgid "The namespaced version looks like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:169
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                http://jboss.com/products/seam/core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components \n"
+"                 http://jboss.com/products/seam/components-1.2.xsd\"&gt;\n"
+"\n"
+"    &lt;core:init debug=\"true\" jndi-pattern=\"@jndiPattern@\"/&gt;\n"
+"\n"
+"    &lt;core:ejb installed=\"@embeddedEjb@\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:170
+#, no-c-format
+msgid ""
+"Even though the schema declarations are verbose, the actual XML content is "
+"lean and easy to understand. The schemas provide detailed information about "
+"each component and the attributes available, allowing XML editors to offer "
+"intelligent autocomplete. The use of namespaced elements makes generating "
+"and maintaining correct <literal>components.xml</literal> files much simpler."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:173
+#, no-c-format
+msgid ""
+"Now, this works great for the built-in Seam components, but what about user "
+"components? There are two options. First, Seam supports mixing the two "
+"models, allowing the use of the generic <literal>&lt;component&gt;</literal> "
+"declarations for user components, along with namespaced declarations for "
+"built-in components. But even better, Seam allows you to quickly declare "
+"namespaces for your own components."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:176
+#, no-c-format
+msgid ""
+"Any Java package can be associated with an XML namespace by annotating the "
+"package with the <literal>@Namespace</literal> annotation. (Package-level "
+"annotations are declared in a file named <literal>package-info.java</"
+"literal> in the package directory.) Here is an example from the seampay demo:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:179
+#, no-c-format
+msgid ""
+"@Namespace(value=\"http://jboss.com/products/seam/examples/seampay\")\n"
+"package org.jboss.seam.example.seampay;\n"
+"\n"
+"import org.jboss.seam.annotations.Namespace;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:180
+#, no-c-format
+msgid ""
+"That is all you need to do to use the namespaced style in "
+"<literal>components.xml</literal>! Now we can write:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:183
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pay=\"http://jboss.com/products/seam/examples/seampay\"\n"
+"            ... &gt;\n"
+"\n"
+"    &lt;pay:payment-home new-instance=\"#{newPayment}\"\n"
+"                      created-message=\"Created a new payment to #"
+"{newPayment.payee}\" /&gt;\n"
+"\n"
+"    &lt;pay:payment name=\"newPayment\"\n"
+"                 payee=\"Somebody\"\n"
+"                 account=\"#{selectedAccount}\"\n"
+"                 payment-date=\"#{currentDatetime}\"\n"
+"                 created-date=\"#{currentDatetime}\" /&gt;\n"
+"     ...\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:184
+#, no-c-format
+msgid "<para>Or:</para>"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:187
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pay=\"http://jboss.com/products/seam/examples/seampay\"\n"
+"            ... &gt;\n"
+"\n"
+"    &lt;pay:payment-home&gt;\n"
+"        &lt;pay:new-instance&gt;\"#{newPayment}\"&lt;/pay:new-instance&gt;\n"
+"        &lt;pay:created-message&gt;Created a new payment to #{newPayment."
+"payee}&lt;/pay:created-message&gt;\n"
+"    &lt;/pay:payment-home&gt;\n"
+"    \n"
+"    &lt;pay:payment name=\"newPayment\"&gt;\n"
+"        &lt;pay:payee&gt;Somebody\"&lt;/pay:payee&gt;\n"
+"        &lt;pay:account&gt;#{selectedAccount}&lt;/pay:account&gt;\n"
+"        &lt;pay:payment-date&gt;#{currentDatetime}&lt;/pay:payment-date&gt;\n"
+"        &lt;pay:created-date&gt;#{currentDatetime}&lt;/pay:created-date&gt;\n"
+"     &lt;/pay:payment&gt;\n"
+"     ...\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:188
+#, no-c-format
+msgid ""
+"These examples illustrate the two usage models of a namespaced element. In "
+"the first declaration, the <literal>&lt;pay:payment-home&gt;</literal> "
+"references the <literal>paymentHome</literal> component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:191
+#, no-c-format
+msgid ""
+"package org.jboss.seam.example.seampay;\n"
+"...\n"
+"@Name(\"paymentHome\")\n"
+"public class PaymentController\n"
+"    extends EntityHome&lt;Payment&gt;\n"
+"{\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:192
+#, no-c-format
+msgid ""
+"The element name is the hyphenated form of the component name. The "
+"attributes of the element are the hyphenated form of the property names."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:195
+#, no-c-format
+msgid ""
+"In the second declaration, the <literal>&lt;pay:payment&gt;</literal> "
+"element refers to the <literal>Payment</literal> class in the <literal>org."
+"jboss.seam.example.seampay</literal> package. In this case <literal>Payment</"
+"literal> is an entity that is being declared as a Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:198
+#, no-c-format
+msgid ""
+"package org.jboss.seam.example.seampay;\n"
+"...\n"
+"@Entity\n"
+"public class Payment\n"
+"    implements Serializable\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:199
+#, no-c-format
+msgid ""
+"If we want validation and autocompletion to work for user-defined "
+"components, we will need a schema. Seam does not yet provide a mechanism to "
+"automatically generate a schema for a set of components, so it is necessary "
+"to generate one manually. The schema definitions for the standard Seam "
+"packages can be used for guidance."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:202
+#, no-c-format
+msgid "The following are the the namespaces used by Seam:"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:207
+#, no-c-format
+msgid ""
+"components &mdash; <literal>http://jboss.com/products/seam/components</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:212
+#, no-c-format
+msgid "core &mdash; <literal>http://jboss.com/products/seam/core</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:217
+#, no-c-format
+msgid "drools &mdash; <literal>http://jboss.com/products/seam/drools</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:222
+#, no-c-format
+msgid ""
+"framework &mdash; <literal>http://jboss.com/products/seam/framework</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:227
+#, no-c-format
+msgid "jms &mdash; <literal>http://jboss.com/products/seam/jms</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:232
+#, no-c-format
+msgid ""
+"remoting &mdash; <literal>http://jboss.com/products/seam/remoting</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:237
+#, no-c-format
+msgid "theme &mdash; <literal>http://jboss.com/products/seam/theme</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:242
+#, no-c-format
+msgid ""
+"security &mdash; <literal>http://jboss.com/products/seam/security</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:247
+#, no-c-format
+msgid "mail &mdash; <literal>http://jboss.com/products/seam/mail</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:252
+#, no-c-format
+msgid "web &mdash; <literal>http://jboss.com/products/seam/web</literal>"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Annotations.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Annotations.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Annotations.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2030 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Annotations.xml:10
+#, no-c-format
+msgid "Seam annotations"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:11
+#, no-c-format
+msgid ""
+"When you write a Seam application, you'll use a lot of annotations. Seam "
+"lets you use annotations to achieve a declarative style of programming. Most "
+"of the annotations you'll use are defined by the EJB 3.0 specification. The "
+"annotations for data validation are defined by the Hibernate Validator "
+"package. Finally, Seam defines its own set of annotations, which we'll "
+"describe in this chapter."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:14
+#, no-c-format
+msgid ""
+"All of these annotations are defined in the package <literal>org.jboss.seam."
+"annotations</literal>."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:18
+#, no-c-format
+msgid "Annotations for component definition"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:19
+#, no-c-format
+msgid ""
+"The first group of annotations lets you define a Seam component. These "
+"annotations appear on the component class."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:24
+#, no-c-format
+msgid "@Name"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:26
+#, no-c-format
+msgid "@Name(\"componentName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:27
+#, no-c-format
+msgid ""
+"Defines the Seam component name for a class. This annotation is required for "
+"all Seam components."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:33
+#, no-c-format
+msgid "@Scope"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:35
+#, no-c-format
+msgid "@Scope(ScopeType.CONVERSATION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:36
+#, no-c-format
+msgid ""
+"Defines the default context of the component. The possible values are "
+"defined by the <literal>ScopeType</literal> enumeration: <literal>EVENT, "
+"PAGE, CONVERSATION, SESSION, BUSINESS_PROCESS, APPLICATION, STATELESS</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:39
+#, no-c-format
+msgid ""
+"When no scope is explicitly specified, the default depends upon the "
+"component type. For stateless session beans, the default is "
+"<literal>STATELESS</literal>. For entity beans and stateful session beans, "
+"the default is <literal>CONVERSATION</literal>. For JavaBeans, the default "
+"is <literal>EVENT</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:45
+#, no-c-format
+msgid "@Role"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:47
+#, no-c-format
+msgid "@Role(name=\"roleName\", scope=ScopeType.SESSION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:48
+#, no-c-format
+msgid ""
+"Allows a Seam component to be bound to multiple contexts variables. The "
+"<literal>@Name</literal>/<literal>@Scope</literal> annotations define a "
+"\"default role\". Each <literal>@Role</literal> annotation defines an "
+"additional role."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:53
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the context variable name."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:58
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; the context variable scope. When no scope "
+"is explicitly specified, the default depends upon the component type, as "
+"above."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:66
+#, no-c-format
+msgid "@Roles"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:68
+#, no-c-format
+msgid ""
+"@Roles({\n"
+"        @Role(name=\"user\", scope=ScopeType.CONVERSATION),\n"
+"        @Role(name=\"currentUser\", scope=ScopeType.SESSION)\n"
+"    })"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:69
+#, no-c-format
+msgid "Allows specification of multiple additional roles."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:75
+#, no-c-format
+msgid "@Intercept"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:77
+#, no-c-format
+msgid "@Intercept(InterceptionType.ALWAYS)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:78
+#, no-c-format
+msgid ""
+"Determines when Seam interceptors are active. The possible values are "
+"defined by the <literal>InterceptionType</literal> enumeration: "
+"<literal>ALWAYS, AFTER_RESTORE_VIEW, AFTER_UPDATE_MODEL_VALUES, "
+"INVOKE_APPLICATION, NEVER</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:81
+#, no-c-format
+msgid ""
+"When no interception type is explicitly specified, the default depends upon "
+"the component type. For entity beans, the default is <literal>NEVER</"
+"literal>. For session beans, message driven beans and JavaBeans, the default "
+"is <literal>ALWAYS</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:87
+#, no-c-format
+msgid "@JndiName"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:89
+#, no-c-format
+msgid "@JndiName(\"my/jndi/name\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:90
+#, no-c-format
+msgid ""
+"Specifies the JNDI name that Seam will use to look up the EJB component. If "
+"no JNDI name is explicitly specified, Seam will use the JNDI pattern "
+"specified by <literal>org.jboss.seam.core.init.jndiPattern</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:96
+#, no-c-format
+msgid "@Conversational"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:98
+#, no-c-format
+msgid "@Conversational(ifNotBegunOutcome=\"error\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:99
+#, no-c-format
+msgid ""
+"Specifies that a conversation scope component is conversational, meaning "
+"that no method of the component can be called unless a long-running "
+"conversation started by this component is active (unless the method would "
+"begin a new long-running conversation)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:105
+#, no-c-format
+msgid "<literal>@Startup</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:107
+#, no-c-format
+msgid "@Startup(depends={\"org.jboss.core.jndi\", \"org.jboss.core.jta\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:108
+#, no-c-format
+msgid ""
+"Specifies that an application scope component is started immediately at "
+"initialization time. This is mainly used for certain built-in components "
+"that bootstrap critical infrastructure such as JNDI, datasources, etc."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:111
+#, no-c-format
+msgid "<programlisting>@Startup</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:112
+#, no-c-format
+msgid ""
+"Specifies that a session scope component is started immediately at session "
+"creation time."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:117
+#, no-c-format
+msgid ""
+"<literal>depends</literal> &mdash; specifies that the named components must "
+"be started first, if they are installed."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:125
+#, no-c-format
+msgid "@Install"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:127
+#, no-c-format
+msgid "@Install(false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:128
+#, no-c-format
+msgid ""
+"Specifies whether or not a component should be installed by default. The "
+"lack of an @Install annotation indicates a component should be installed."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:131
+#, no-c-format
+msgid "@Install(dependencies=\"org.jboss.seam.core.jbpm\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:132
+#, no-c-format
+msgid ""
+"Specifies that a component should only be stalled if the components listed "
+"as dependencies are also installed."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:135
+#, no-c-format
+msgid "@Install(genericDependencies=ManagedQueueSender.class)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:136
+#, no-c-format
+msgid ""
+"Specifies that a component should only be installed if a component that is "
+"implemented by a certain class is installed. This is useful when the "
+"dependency doesn't have a single well-known name."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:139
+#, no-c-format
+msgid "@Install(classDependencies=\"org.hibernate.Session\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:140
+#, no-c-format
+msgid ""
+"Specifies that a component should only be installed if the named class is in "
+"the classpath."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:143
+#, no-c-format
+msgid "@Install(precedence=BUILT_IN)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:144
+#, no-c-format
+msgid ""
+"Specifies the precedence of the component. If multiple components with the "
+"same name exist, the one with the higher precedence will be installed. The "
+"defined precendence values are:"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:149
+#, no-c-format
+msgid ""
+"<literal>BUILT_IN</literal> &mdash; Precedence of all built-in Seam "
+"components"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:154
+#, no-c-format
+msgid ""
+"<literal>FRAMEWORK</literal> &mdash; Precedence to use for components of "
+"frameworks which extend Seam"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:159
+#, no-c-format
+msgid ""
+"<literal>APPLICATION</literal> &mdash; Predence of application components "
+"(the default precedence)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:164
+#, no-c-format
+msgid ""
+"<literal>DEPLOYMENT</literal> &mdash; Precedence to use for components which "
+"override application components in a particular deployment"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:172
+#, no-c-format
+msgid "@Synchronized"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:174
+#, no-c-format
+msgid "@Synchronized(timeout=1000)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:175
+#, no-c-format
+msgid ""
+"Specifies that a component is accessed concurrently by multiple clients, and "
+"that Seam should serialize requests. If a request is not able to obtain its "
+"lock on the component in the given timeout period, an exception will be "
+"raised."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:181
+#, no-c-format
+msgid "<literal>@ReadOnly</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:183
+#, no-c-format
+msgid "<programlisting>@ReadOnly</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:184
+#, no-c-format
+msgid ""
+"Specifies that a JavaBean component or component method does not require "
+"state replication at the end of the invocation."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:193
+#, no-c-format
+msgid "Annotations for bijection"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:194
+#, no-c-format
+msgid ""
+"The next two annotations control bijection. These attributes occur on "
+"component instance variables or property accessor methods."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:199
+#, no-c-format
+msgid "<literal>@In</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:201
+#, no-c-format
+msgid "<programlisting>@In</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:202
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. If the context "
+"variable is null, an exception will be thrown."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:205
+#, no-c-format
+msgid "@In(required=false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:206
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. The context variable "
+"may be null."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:209
+#, no-c-format
+msgid "@In(create=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:210
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. If the context "
+"variable is null, an instance of the component is instantiated by Seam."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:213
+#, no-c-format
+msgid "@In(value=\"contextVariableName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:214 Annotations.xml:259
+#, no-c-format
+msgid ""
+"Specifies the name of the context variable explicitly, instead of using the "
+"annotated instance variable name."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:217
+#, no-c-format
+msgid "@In(value=\"#{customer.addresses['shipping']}\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:218
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected by evaluating a JSF "
+"EL expression at the beginning of each component invocation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:223
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"Default to the name of the component attribute. Alternatively, specifies a "
+"JSF EL expression, surrounded by <literal>#{...}</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:228
+#, no-c-format
+msgid ""
+"<literal>create</literal> &mdash; specifies that Seam should instantiate the "
+"component with the same name as the context variable if the context variable "
+"is undefined (null) in all contexts. Default to false."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:233
+#, no-c-format
+msgid ""
+"<literal>required</literal> &mdash; specifies Seam should throw an exception "
+"if the context variable is undefined in all contexts."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:241
+#, no-c-format
+msgid "<literal>@Out</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:243
+#, no-c-format
+msgid "<programlisting>@Out</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:244
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is a Seam component is to be "
+"outjected to its context variable at the end of the invocation. If the "
+"attribute is null, an exception is thrown."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:247
+#, no-c-format
+msgid "@Out(required=false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:248
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is a Seam component is to be "
+"outjected to its context variable at the end of the invocation. The "
+"attribute may be null."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:251
+#, no-c-format
+msgid "@Out(scope=ScopeType.SESSION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:252
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is <emphasis>not</emphasis> a Seam "
+"component type is to be outjected to a specific scope at the end of the "
+"invocation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:255
+#, no-c-format
+msgid ""
+"Alternatively, if no scope is explicitly specified, the scope of the "
+"component with the <literal>@Out</literal> attribute is used (or the "
+"<literal>EVENT</literal> scope if the component is stateless)."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:258
+#, no-c-format
+msgid "@Out(value=\"contextVariableName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:264
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"Default to the name of the component attribute."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:269
+#, no-c-format
+msgid ""
+"<literal>required</literal> &mdash; specifies Seam should throw an exception "
+"if the component attribute is null during outjection."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:277
+#, no-c-format
+msgid ""
+"Note that it is quite common for these annotations to occur together, for "
+"example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:280
+#, no-c-format
+msgid "@In(create=true) @Out private User currentUser;"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:281
+#, no-c-format
+msgid ""
+"The next annotation supports the <emphasis>manager component</emphasis> "
+"pattern, where a Seam component that manages the lifecycle of an instance of "
+"some other class that is to be injected. It appears on a component getter "
+"method."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:286
+#, no-c-format
+msgid "<literal>@Unwrap</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:288
+#, no-c-format
+msgid "<programlisting>@Unwrap</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:289
+#, no-c-format
+msgid ""
+"Specifies that the object returned by the annotated getter method is the "
+"thing that is injected instead of the component instance itself."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:295
+#, no-c-format
+msgid ""
+"The next annotation supports the <emphasis>factory component</emphasis> "
+"pattern, where a Seam component is responsible for initializing the value of "
+"a context variable. This is especially useful for initializing any state "
+"needed for rendering the response to a non-faces request. It appears on a "
+"component method."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:300
+#, no-c-format
+msgid "@Factory"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:302
+#, no-c-format
+msgid "@Factory(\"processInstance\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:303
+#, no-c-format
+msgid ""
+"Specifies that the method of the component is used to initialize the value "
+"of the named context variable, when the context variable has no value. This "
+"style is used with methods that return <literal>void</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:306
+#, no-c-format
+msgid "@Factory(\"processInstance\", scope=CONVERSATION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:307
+#, no-c-format
+msgid ""
+"Specifies that the method returns a value that Seam should use to initialize "
+"the value of the named context variable, when the context variable has no "
+"value. This style is used with methods that return a value. If no scope is "
+"explicitly specified, the scope of the component with the <literal>@Factory</"
+"literal> method is used (unless the component is stateless, in which case "
+"the <literal>EVENT</literal> context is used)."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:312
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"If the method is a getter method, default to the JavaBeans property name."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:317
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; specifies the scope that Seam should bind "
+"the returned value to. Only meaningful for factory methods which return a "
+"value."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:325
+#, no-c-format
+msgid "This annotation lets you inject a <literal>Log</literal>:"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:330
+#, no-c-format
+msgid "@Logger"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:332
+#, no-c-format
+msgid "@Logger(\"categoryName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:333
+#, no-c-format
+msgid ""
+"Specifies that a component field is to be injected with an instance of "
+"<literal>org.jboss.seam.log.Log</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:338
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the log category. "
+"Default to the name of the component class."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:346
+#, no-c-format
+msgid "The last annotation lets you inject a request parameter value:"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:351
+#, no-c-format
+msgid "@RequestParameter"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:353
+#, no-c-format
+msgid "@RequestParameter(\"parameterName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:354
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected with the value of a "
+"request parameter. Basic type conversions are performed automatically."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:359
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the request "
+"parameter. Default to the name of the component attribute."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:370
+#, no-c-format
+msgid "Annotations for component lifecycle methods"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:371
+#, no-c-format
+msgid ""
+"These annotations allow a component to react to its own lifecycle events. "
+"They occur on methods of the component. There may be only one of each per "
+"component class."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:376
+#, no-c-format
+msgid "<literal>@Create</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:378
+#, no-c-format
+msgid "<programlisting>@Create</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:379
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when an instance of the component "
+"is instantiated by Seam. Note that create methods are only supported for "
+"JavaBeans and stateful session beans."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:385
+#, no-c-format
+msgid "<literal>@Destroy</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:387
+#, no-c-format
+msgid "<programlisting>@Destroy</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:388
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when the context ends and its "
+"context variables are destroyed. Note that create methods are only supported "
+"for JavaBeans and stateful session beans."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:391
+#, no-c-format
+msgid ""
+"Note that all stateful session bean components <emphasis>must</emphasis> "
+"define a method annotated <literal>@Destroy @Remove</literal> in order to "
+"guarantee destruction of the stateful bean when a context ends."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:394
+#, no-c-format
+msgid ""
+"Destroy methods should be used only for cleanup. <emphasis>Seam catches, "
+"logs and swallows any exception that propagates out of a destroy method.</"
+"emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:400
+#, no-c-format
+msgid "@Observer"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:402
+#, no-c-format
+msgid "@Observer(\"somethingChanged\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:403
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when a component-driven event of "
+"the specified type occurs."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:406
+#, no-c-format
+msgid "@Observer(value=\"somethingChanged\",create=false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:407
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when an event of the specified "
+"type occurs but that an instance should not be created if one doesn't exist. "
+"If an instance does not exist and create is false, the event will not be "
+"observed. The default value for create is true."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:416
+#, no-c-format
+msgid "Annotations for context demarcation"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:417
+#, no-c-format
+msgid ""
+"These annotations provide declarative conversation demarcation. They appear "
+"on methods of Seam components, usually action listener methods."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:420
+#, no-c-format
+msgid ""
+"Every web request has a conversation context associated with it. Most of "
+"these conversations end at the end of the request. If you want a "
+"conversation that span multiple requests, you must \"promote\" the current "
+"conversation to a <emphasis>long-running conversation</emphasis> by calling "
+"a method marked with <literal>@Begin</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:425
+#, no-c-format
+msgid "<literal>@Begin</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:427
+#, no-c-format
+msgid "<programlisting>@Begin</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:428
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation begins when this method returns a "
+"non-null outcome without exception."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:431
+#, no-c-format
+msgid "@Begin(ifOutcome={\"success\", \"continue\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:432
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation begins when this action listener "
+"method returns with one of the given outcomes."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:435
+#, no-c-format
+msgid "@Begin(join=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:436
+#, no-c-format
+msgid ""
+"Specifies that if a long-running conversation is already in progress, the "
+"conversation context is simply propagated."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:439
+#, no-c-format
+msgid "@Begin(nested=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:440
+#, no-c-format
+msgid ""
+"Specifies that if a long-running conversation is already in progress, a new "
+"<emphasis>nested</emphasis> conversation context begins. The nested "
+"conversation will end when the next <literal>@End</literal> is encountered, "
+"and the outer conversation will resume. It is perfectly legal for multiple "
+"nested conversations to exist concurrently in the same outer conversation."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:443
+#, no-c-format
+msgid "@Begin(pageflow=\"process definition name\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:444
+#, no-c-format
+msgid ""
+"Specifies a jBPM process definition name that defines the pageflow for this "
+"conversation."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:447
+#, no-c-format
+msgid "@Begin(flushMode=FlushModeType.MANUAL)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:448
+#, no-c-format
+msgid ""
+"Specify the flush mode of any Seam-managed persistence contexts. "
+"<literal>flushMode=FlushModeType.MANUAL</literal> supports the use of "
+"<emphasis>atomic conversations</emphasis> where all write operations are "
+"queued in the conversation context until an explicit call to <literal>flush()"
+"</literal> (which usually occurs at the end of the conversation)."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:454
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in a new long-running conversation context."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:459
+#, no-c-format
+msgid ""
+"<literal>join</literal> &mdash; determines the behavior when a long-running "
+"conversation is already in progress. If <literal>true</literal>, the context "
+"is propagated. If <literal>false</literal>, an exception is thrown. Default "
+"to <literal>false</literal>. This setting is ignored when "
+"<literal>nested=true</literal> is specified"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:464
+#, no-c-format
+msgid ""
+"<literal>nested</literal> &mdash; specifies that a nested conversation "
+"should be started if a long-running conversation is already in progress."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:469 Annotations.xml:526 Annotations.xml:550
+#, no-c-format
+msgid ""
+"<literal>flushMode</literal> &mdash; set the flush mode of any Seam-managed "
+"Hibernate sessions or JPA persistence contexts that are created during this "
+"conversation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:474
+#, no-c-format
+msgid ""
+"<literal>pageflow</literal> &mdash; a process definition name of a jBPM "
+"process definition deployed via <literal>org.jboss.seam.core.jbpm."
+"pageflowDefinitions.</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:483
+#, no-c-format
+msgid "<literal>@End</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:485
+#, no-c-format
+msgid "<programlisting>@End</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:486
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation ends when this method returns a "
+"non-null outcome without exception."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:489
+#, no-c-format
+msgid ""
+"@End(ifOutcome={\"success\", \"error\"}, evenIfException={SomeException."
+"class, OtherException.class})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:490
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation ends when this action listener "
+"method returns with one of the given outcomes or throws one of the specified "
+"classes of exception."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:496
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in the end of the current long-running conversation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:501 Annotations.xml:585
+#, no-c-format
+msgid ""
+"<literal>beforeRedirect</literal> &mdash; by default, the conversation will "
+"not actually be destroyed until after any redirect has occurred. Setting "
+"<literal>beforeRedirect=true</literal> specifies that the conversation "
+"should be destroyed at the end of the current request, and that the redirect "
+"will be processed in a new temporary conversation context."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:510
+#, no-c-format
+msgid "<literal>@StartTask</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:512
+#, no-c-format
+msgid "<programlisting>@StartTask</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:513
+#, no-c-format
+msgid ""
+"\"Starts\" a jBPM task. Specifies that a long-running conversation begins "
+"when this method returns a non-null outcome without exception. This "
+"conversation is associated with the jBPM task specified in the named request "
+"parameter. Within the context of this conversation, a business process "
+"context is also defined, for the business process instance of the task "
+"instance."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:516
+#, no-c-format
+msgid ""
+"The jBPM <literal>TaskInstance</literal> will be available in a request "
+"context variable named <literal>taskInstance</literal>. The jPBM "
+"<literal>ProcessInstance</literal> will be available in a request context "
+"variable named <literal>processInstance</literal>. (Of course, these objects "
+"are available for injection via <literal>@In</literal>.)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:521 Annotations.xml:545
+#, no-c-format
+msgid ""
+"<literal>taskIdParameter</literal> &mdash; the name of a request parameter "
+"which holds the id of the task. Default to <literal>\"taskId\"</literal>, "
+"which is also the default used by the Seam <literal>taskList</literal> JSF "
+"component."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:534
+#, no-c-format
+msgid "<literal>@BeginTask</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:536
+#, no-c-format
+msgid "<programlisting>@BeginTask</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:537
+#, no-c-format
+msgid ""
+"Resumes work on an incomplete jBPM task. Specifies that a long-running "
+"conversation begins when this method returns a non-null outcome without "
+"exception. This conversation is associated with the jBPM task specified in "
+"the named request parameter. Within the context of this conversation, a "
+"business process context is also defined, for the business process instance "
+"of the task instance."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:540
+#, no-c-format
+msgid ""
+"The jBPM <literal>TaskInstance</literal> will be available in a request "
+"context variable named <literal>taskInstance</literal>. The jPBM "
+"<literal>ProcessInstance</literal> will be available in a request context "
+"variable named <literal>processInstance</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:558
+#, no-c-format
+msgid "<literal>@EndTask</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:560
+#, no-c-format
+msgid "<programlisting>@EndTask</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:561
+#, no-c-format
+msgid ""
+"\"Ends\" a jBPM task. Specifies that a long-running conversation ends when "
+"this method returns a non-null outcome, and that the current task is "
+"complete. Triggers a jBPM transition. The actual transition triggered will "
+"be the default transition unless the application has called "
+"<literal>Transition.setName()</literal> on the built-in component named "
+"<literal>transition</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:564
+#, no-c-format
+msgid "@EndTask(transition=\"transitionName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:565
+#, no-c-format
+msgid "Triggers the given jBPM transition."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:568
+#, no-c-format
+msgid "@EndTask(ifOutcome={\"success\", \"continue\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:569
+#, no-c-format
+msgid ""
+"Specifies that the task ends when this method returns one of the listed "
+"outcomes."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:575
+#, no-c-format
+msgid ""
+"<literal>transition</literal> &mdash; the name of the jBPM transition to be "
+"triggered when ending the task. Defaults to the default transition."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:580
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in the end of the task."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:594
+#, no-c-format
+msgid "@CreateProcess"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:596
+#, no-c-format
+msgid "@CreateProcess(definition=\"process definition name\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:597
+#, no-c-format
+msgid ""
+"Creates a new jBPM process instance when the method returns a non-null "
+"outcome without exception. The <literal>ProcessInstance</literal> object "
+"will be available in a context variable named <literal>processInstance</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:602
+#, no-c-format
+msgid ""
+"<literal>definition</literal> &mdash; the name of the jBPM process "
+"definition deployed via <literal>org.jboss.seam.core.jbpm."
+"processDefinitions</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:610
+#, no-c-format
+msgid "@ResumeProcess"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:612
+#, no-c-format
+msgid "@ResumeProcess(processIdParameter=\"processId\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:613
+#, no-c-format
+msgid ""
+"Re-enters the scope of an existing jBPM process instance when the method "
+"returns a non-null outcome without exception. The <literal>ProcessInstance</"
+"literal> object will be available in a context variable named "
+"<literal>processInstance</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:618
+#, no-c-format
+msgid ""
+"<literal>processIdParameter</literal> &mdash; the name a request parameter "
+"holding the process id. Default to <literal>\"processId\"</literal>."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:629
+#, no-c-format
+msgid "Annotations for transaction demarcation"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:630
+#, no-c-format
+msgid ""
+"Seam provides an annotation that lets you force a rollback of the JTA "
+"transaction for certain action listener outcomes."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:635
+#, no-c-format
+msgid "@Rollback"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:637
+#, no-c-format
+msgid "@Rollback(ifOutcome={\"failure\", \"not-found\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:638
+#, no-c-format
+msgid ""
+"If the outcome of the method matches any of the listed outcomes, or if no "
+"outcomes are listed, set the transaction to rollback only when the method "
+"completes."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:643
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; the JSF outcomes that cause a "
+"transaction rollback (no outcomes is interpreted to mean any outcome)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:651
+#, no-c-format
+msgid "<literal>@Transactional</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:653
+#, no-c-format
+msgid "<programlisting>@Transactional</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:654
+#, no-c-format
+msgid ""
+"Specifies that a JavaBean component should have a similar transactional "
+"behavior to the default behavior of a session bean component. ie. method "
+"invocations should take place in a transaction, and if no transaction exists "
+"when the method is called, a transaction will be started just for that "
+"method. This annotation may be applied at either class or method level."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:660
+#, no-c-format
+msgid ""
+"Seam applications usually use the standard EJB3 annotations for all other "
+"transaction demarcation needs."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:666
+#, no-c-format
+msgid "Annotations for exceptions"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:667
+#, no-c-format
+msgid ""
+"These annotations let you specify how Seam should handle an exception that "
+"propagates out of a Seam component."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:672
+#, no-c-format
+msgid "@Redirect"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:674
+#, no-c-format
+msgid "@Redirect(viewId=\"error.jsp\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:675
+#, no-c-format
+msgid ""
+"Specifies that the annotated exception causes a browser redirect to a "
+"specified view id."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:680
+#, no-c-format
+msgid ""
+"<literal>viewId</literal> &mdash; specifies the JSF view id to redirect to."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:685
+#, no-c-format
+msgid ""
+"<literal>message</literal> &mdash; a message to be displayed, default to the "
+"exception message."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:690 Annotations.xml:716
+#, no-c-format
+msgid ""
+"<literal>end</literal> &mdash; specifies that the long-running conversation "
+"should end, default to <literal>false</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:698
+#, no-c-format
+msgid "@HttpError"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:700
+#, no-c-format
+msgid "@HttpError(errorCode=404)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:701
+#, no-c-format
+msgid "Specifies that the annotated exception causes a HTTP error to be sent."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:706
+#, no-c-format
+msgid ""
+"<literal>errorCode</literal> &mdash; the HTTP error code, default to "
+"<literal>500</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:711
+#, no-c-format
+msgid ""
+"<literal>message</literal> &mdash; a message to be sent with the HTTP error, "
+"default to the exception message."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:727
+#, no-c-format
+msgid "Annotations for validation"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:728
+#, no-c-format
+msgid ""
+"This annotation triggers Hibernate Validator. It appears on a method of a "
+"Seam component, almost always an action listener method."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:731
+#, no-c-format
+msgid ""
+"Please refer to the documentation for the Hibernate Annotations package for "
+"information about the annotations defined by the Hibernate Validator "
+"framework."
+msgstr ""
+
+#. Tag: emphasis
+#: Annotations.xml:735
+#, no-c-format
+msgid ""
+"Note that use of <literal>@IfInvalid</literal> is now semi-deprecated and "
+"<literal>&lt;s:validateAll&gt;</literal> is now preferred."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:739
+#, no-c-format
+msgid "@IfInvalid"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:741
+#, no-c-format
+msgid "@IfInvalid(outcome=\"invalid\", refreshEntities=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:742
+#, no-c-format
+msgid ""
+"Specifies that Hibernate Validator should validate the component before the "
+"method is invoked. If the invocation fails, the specified outcome will be "
+"returned, and the validation failure messages returned by Hibernate "
+"Validator will be added to the <literal>FacesContext</literal>. Otherwise, "
+"the invocation will proceed."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:747
+#, no-c-format
+msgid ""
+"<literal>outcome</literal> &mdash; the JSF outcome when validation fails."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:752
+#, no-c-format
+msgid ""
+"<literal>refreshEntities</literal> &mdash; specifies that any invalid entity "
+"in the managed state should be refreshed from the database when validation "
+"fails. Default to <literal>false</literal>. (Useful with extended "
+"persistence contexts.)"
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:763
+#, no-c-format
+msgid "Annotations for Seam Remoting"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:764
+#, no-c-format
+msgid ""
+"Seam Remoting requires that the local interface of a session bean be "
+"annotated with the following annotation:"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:769
+#, no-c-format
+msgid "@WebRemote"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:771
+#, no-c-format
+msgid "@WebRemote(exclude=\"path.to.exclude\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:772
+#, no-c-format
+msgid ""
+"Indicates that the annotated method may be called from client-side "
+"JavaScript. The <literal>exclude</literal> property is optional and allows "
+"objects to be excluded from the result's object graph (see the Remoting "
+"chapter for more details)."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:781
+#, no-c-format
+msgid "Annotations for Seam interceptors"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:782
+#, no-c-format
+msgid "The following annotations appear on Seam interceptor classes."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:785
+#, no-c-format
+msgid ""
+"Please refer to the documentation for the EJB 3.0 specification for "
+"information about the annotations required for EJB interceptor definition."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:790
+#, no-c-format
+msgid "@Interceptor"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:792
+#, no-c-format
+msgid "@Interceptor(stateless=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:793
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is stateless and Seam may optimize "
+"replication."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:796
+#, no-c-format
+msgid "@Interceptor(type=CLIENT)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:797
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is a \"client-side\" interceptor that is "
+"called before the EJB container."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:800
+#, no-c-format
+msgid "@Interceptor(around={SomeInterceptor.class, OtherInterceptor.class})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:801
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is positioned higher in the stack than the "
+"given interceptors."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:804
+#, no-c-format
+msgid "@Interceptor(within={SomeInterceptor.class, OtherInterceptor.class})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:805
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is positioned deeper in the stack than the "
+"given interceptors."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:814
+#, no-c-format
+msgid "Annotations for asynchronicity"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:815
+#, no-c-format
+msgid ""
+"The following annotations are used to declare an asynchronous method, for "
+"example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:818
+#, no-c-format
+msgid ""
+"@Asynchronous public void scheduleAlert(Alert alert, @Expiration Date date) "
+"{ ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:819
+#, no-c-format
+msgid ""
+"@Asynchronous public Timer scheduleAlerts(Alert alert, @Expiration Date "
+"date, \n"
+"    @IntervalDuration long interval) { ... }"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:822
+#, no-c-format
+msgid "<literal>@Asynchronous</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:824
+#, no-c-format
+msgid "<programlisting>@Asynchronous</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:825
+#, no-c-format
+msgid "Specifies that the method call is processed asynchronously."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:831
+#, no-c-format
+msgid "<literal>@Duration</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:833
+#, no-c-format
+msgid "<programlisting>@Duration</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:834
+#, no-c-format
+msgid ""
+"Specifies that a parameter of the asynchronous call is the duration before "
+"the call is processed (or first processed for recurring calls)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:840
+#, no-c-format
+msgid "<literal>@Expiration</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:842
+#, no-c-format
+msgid "<programlisting>@Expiration</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:843
+#, no-c-format
+msgid ""
+"Specifies that a parameter of the asynchronous call is the datetime at which "
+"the call is processed (or first processed for recurring calls)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:849
+#, no-c-format
+msgid "<literal>@IntervalDuration</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:851
+#, no-c-format
+msgid "<programlisting>@IntervalDuration</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:852
+#, no-c-format
+msgid ""
+"Specifies that an asynchronous method call recurs, and that the annotationed "
+"parameter is duration between recurrences."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:861
+#, no-c-format
+msgid "Annotations for use with JSF <literal>dataTable</literal>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:862
+#, no-c-format
+msgid ""
+"The following annotations make it easy to implement clickable lists backed "
+"by a stateful session bean. They appear on attributes."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:867
+#, no-c-format
+msgid "@DataModel"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:869
+#, no-c-format
+msgid "@DataModel(\"variableName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:870
+#, no-c-format
+msgid ""
+"Exposes an attribute of type <literal>List</literal>, <literal>Map</"
+"literal>, <literal>Set</literal> or <literal>Object[]</literal> as a JSF "
+"<literal>DataModel</literal> into the scope of the owning component (or the "
+"<literal>EVENT</literal> scope if the owning component is "
+"<literal>STATELESS</literal>). In the case of <literal>Map</literal>, each "
+"row of the <literal>DataModel</literal> is a <literal>Map.Entry</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:875
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; name of the conversation context variable. "
+"Default to the attribute name."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:880
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; if <literal>scope=ScopeType.PAGE</literal> "
+"is explicitly specified, the <literal>DataModel</literal> will be kept in "
+"the <literal>PAGE</literal> context."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:888
+#, no-c-format
+msgid "<literal>@DataModelSelection</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:890
+#, no-c-format
+msgid "<programlisting>@DataModelSelection</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:891
+#, no-c-format
+msgid ""
+"Injects the selected value from the JSF <literal>DataModel</literal> (this "
+"is the element of the underlying collection, or the map value)."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:896 Annotations.xml:912
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; name of the conversation context variable. "
+"Not needed if there is exactly one <literal>@DataModel</literal> in the "
+"component."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:904
+#, no-c-format
+msgid "<literal>@DataModelSelectionIndex</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:906
+#, no-c-format
+msgid "<programlisting>@DataModelSelectionIndex</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:907
+#, no-c-format
+msgid ""
+"Exposes the selection index of the JSF <literal>DataModel</literal> as an "
+"attribute of the component (this is the row number of the underlying "
+"collection, or the map key)."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:923
+#, no-c-format
+msgid "Meta-annotations for databinding"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:924
+#, no-c-format
+msgid ""
+"These meta-annotations make it possible to implement similar functionality "
+"to <literal>@DataModel</literal> and <literal>@DataModelSelection</literal> "
+"for other datastructures apart from lists."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:929
+#, no-c-format
+msgid "@DataBinderClass"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:931
+#, no-c-format
+msgid "@DataBinderClass(DataModelBinder.class)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:932
+#, no-c-format
+msgid "Specifies that an annotation is a databinding annotation."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:938
+#, no-c-format
+msgid "@DataSelectorClass"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:940
+#, no-c-format
+msgid "@DataSelectorClass(DataModelSelector.class)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:941
+#, no-c-format
+msgid "Specifies that an annotation is a dataselection annotation."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:950
+#, no-c-format
+msgid "Annotations for packaging"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:951
+#, no-c-format
+msgid ""
+"This annotation provides a mechanism for declaring information about a set "
+"of components that are packaged together. It can be applied to any Java "
+"package."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:956
+#, no-c-format
+msgid "@Namespace"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:958
+#, no-c-format
+msgid "@Namespace(value=\"http://jboss.com/products/seam/example/seampay\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:959
+#, no-c-format
+msgid ""
+"Specifies that components in the current package are associated with the "
+"given namespace. The declared namespace can be used as an XML namespace in a "
+"<literal>components.xml</literal> file to simplify application configuration."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:962
+#, no-c-format
+msgid ""
+"@Namespace(value=\"http://jboss.com/products/seam/core\", prefix=\"org.jboss."
+"seam.core\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:963
+#, no-c-format
+msgid ""
+"Specifies a namespace to associate with a given package. Additionally, it "
+"specifies a component name prefix to be applied to component names specified "
+"in the XML file. For example, an XML element named <literal>microcontainer</"
+"literal> that is associated with this namespace would be understood to "
+"actually refere to a component named <literal>org.jboss.seam.core."
+"microcontainer</literal>."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Book_Info.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Book_Info.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Book_Info.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,38 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Book_Info.xml:10
+#, no-c-format
+msgid "Seam - Contextual Components"
+msgstr ""
+
+#. Tag: subtitle
+#: Book_Info.xml:11
+#, no-c-format
+msgid "A Framework for Java EE 5"
+msgstr ""
+
+#. Tag: para
+#: Book_Info.xml:15
+#, no-c-format
+msgid "This book is a Reference Guide for Seam"
+msgstr ""
+
+#. Tag: holder
+#: Book_Info.xml:36
+#, no-c-format
+msgid "&FORMAL-RHI;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Cache.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Cache.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Cache.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,318 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Cache.xml:10
+#, no-c-format
+msgid "Caching"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:11
+#, no-c-format
+msgid ""
+"In almost all enterprise applications, the database is the primary "
+"bottleneck, and the least scalable tier of the runtime environment. People "
+"from a PHP/Ruby environment will try to tell you that so-called \"shared "
+"nothing\" architectures scale well. While that may be literally true, I "
+"don't know of many interesting multi-user applications which can be "
+"implemented with no sharing of resources between different nodes of the "
+"cluster. What these silly people are really thinking of is a \"share nothing "
+"except for the database\" architecture. Of course, sharing the database is "
+"the primary problem with scaling a multi-user application&mdash;so the claim "
+"that this architecture is highly scalable is absurd, and tells you a lot "
+"about the kind of applications that these folks spend most of their time "
+"working on."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:14
+#, no-c-format
+msgid ""
+"Almost anything we can possibly do to share the database <emphasis>less "
+"often</emphasis> is worth doing."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:17
+#, no-c-format
+msgid ""
+"This calls for a cache. Well, not just one cache. A well designed Seam "
+"application will feature a rich, multi-layered caching strategy that impacts "
+"every layer of the application:"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:22
+#, no-c-format
+msgid ""
+"The database, of course, has its own cache. This is super-important, but "
+"can't scale like a cache in the application tier."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:27
+#, no-c-format
+msgid ""
+"Your ORM solution (Hibernate, or some other JPA implementation) has a second-"
+"level cache of data from the database. This is a very powerful capability, "
+"but is often misused. In a clustered environment, keeping the data in the "
+"cache transactionally consistent across the whole cluster, and with the "
+"database, is quite expensive. It makes most sense for data which is shared "
+"between many users, and is updated rarely. In traditional stateless "
+"architectures, people often try to use the second-level cache for "
+"conversational state. This is always bad, and is especially wrong in Seam."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:32
+#, no-c-format
+msgid ""
+"The Seam conversation context is a cache of conversational state. Components "
+"you put into the conversation context can hold and cache state relating to "
+"the current user interaction."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:37
+#, no-c-format
+msgid ""
+"In particular, the Seam-managed persistence context (or an extended EJB "
+"container-managed persistence context associated with a conversation-scoped "
+"stateful session bean) acts as a cache of data that has been read in the "
+"current conversation. This cache tends to have a pretty high hitrate! Seam "
+"optimizes the replication of Seam-managed persistence contexts in a "
+"clustered environment, and there is no requirement for transactional "
+"consistency with the database (optimistic locking is sufficient) so you "
+"don't need to worry too much about the performance implications of this "
+"cache, unless you read thousands of objects into a single persistence "
+"context."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:42
+#, no-c-format
+msgid ""
+"The application can cache non-transactional state in the Seam application "
+"context. State kept in the application context is of course not visible to "
+"other nodes in the cluster."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:47
+#, no-c-format
+msgid ""
+"The application can cache transactional state using the Seam "
+"<literal>pojoCache</literal> component, which integrates JBossCache into the "
+"Seam environment. This state will be visible to other nodes if you run JBoss "
+"cache in a clustered mode."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:52
+#, no-c-format
+msgid ""
+"Finally, Seam lets you cache rendered fragments of a JSF page. Unlike the "
+"ORM second-level cache, this cache is not automatically invalidated when "
+"data changes, so you need to write application code to perform explicit "
+"invalidation, or set appropriate expiration policies."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:57
+#, no-c-format
+msgid ""
+"For more information about the second-level cache, you'll need to refer to "
+"the documentation of your ORM solution, since this is an extremely complex "
+"topic. In this section we'll discuss the use of JBossCache directly, via the "
+"<literal>pojoCache</literal> component, or as the page fragment cache, via "
+"the <literal>&lt;s:cache&gt;</literal> control."
+msgstr ""
+
+#. Tag: title
+#: Cache.xml:61
+#, no-c-format
+msgid "Using JBossCache in Seam"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:62
+#, no-c-format
+msgid ""
+"The built-in <literal>pojoCache</literal> component manages an instance of "
+"<literal>org.jboss.cache.aop.PojoCache</literal>. You can safely put any "
+"immutable Java object in the cache, and it will be replicated across the "
+"cluster (assuming that replication is enabled). If you want to keep mutable "
+"objects in the cache, you'll need to run the JBossCache bytecode "
+"preprocessor to ensure that changes to the objects will be automatically "
+"detected and replicated."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:65
+#, no-c-format
+msgid ""
+"To use <literal>pojoCache</literal>, all you need to do is put the "
+"JBossCache jars in the classpath, and provide a resource named "
+"<literal>treecache.xml</literal> with an appropriate cache configuration. "
+"JBossCache has many scary and confusing configuration settings, so we won't "
+"discuss them here. Please refer to the JBossCache documentation for more "
+"information."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:68
+#, no-c-format
+msgid ""
+"For an EAR depoyment of Seam, we recommend that the JBossCache jars and "
+"configuration go directly into the EAR. Make sure you declare the jars in "
+"<literal>application.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:71
+#, no-c-format
+msgid "Now you can inject the cache into any Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:74
+#, no-c-format
+msgid ""
+"@Name(\"chatroom\")\n"
+"public class Chatroom {\n"
+"    @In PojoCache pojoCache;\n"
+"    \n"
+"    public void join(String username) {\n"
+"      try\n"
+"      {\n"
+"         Set&lt;String&gt; userList = (Set&lt;String&gt;) pojoCache.get"
+"(\"chatroom\", \"userList\");\n"
+"         if (userList==null) \n"
+"         {\n"
+"            userList = new HashSet&lt;String&gt;();\n"
+"            pojoCache.put(\"chatroom\", \"userList\", userList);\n"
+"         }\n"
+"         userList.put(username);\n"
+"      }\n"
+"      catch (CacheException ce)\n"
+"      {\n"
+"         throw new RuntimeException(ce);\n"
+"      }\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:75
+#, no-c-format
+msgid ""
+"If you want to have multiple JBossCache configurations in your application, "
+"use <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:78
+#, no-c-format
+msgid ""
+"&lt;core:pojo-cache name=\"myCache\" cfg-resource-name=\"myown/cache.xml\"/"
+"&gt;"
+msgstr ""
+
+#. Tag: title
+#: Cache.xml:82
+#, no-c-format
+msgid "Page fragment caching"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:83
+#, no-c-format
+msgid ""
+"The most interesting user of JBossCache is the <literal>&lt;s:cache&gt;</"
+"literal> tag, Seam's solution to the problem of page fragment caching in "
+"JSF. <literal>&lt;s:cache&gt;</literal> uses <literal>pojoCache</literal> "
+"internally, so you need to follow the steps listed above before you can use "
+"it. (Put the jars in the EAR, wade through the scary configuration options, "
+"etc.)"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:86
+#, no-c-format
+msgid ""
+"<literal>&lt;s:cache&gt;</literal> is used for caching some rendered content "
+"which changes rarely. For example, the welcome page of our blog displays the "
+"recent blog entries:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:89
+#, no-c-format
+msgid ""
+"&lt;s:cache key=\"recentEntries-#{blog.id}\" region=\"welcomePageFragments"
+"\"&gt;\n"
+"   &lt;h:dataTable value=\"#{blog.recentEntries}\" var=\"blogEntry\"&gt;\n"
+"      &lt;h:column&gt;\n"
+"         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"         &lt;div&gt;\n"
+"            &lt;s:formattedText value=\"#{blogEntry.body}\"/&gt;\n"
+"         &lt;/div&gt;\n"
+"      &lt;/h:column&gt;\n"
+"   &lt;/h:dataTable&gt;\n"
+"&lt;/s:cache&gt;"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:90
+#, no-c-format
+msgid ""
+"The <literal>key</literal> let's you have multiple cached versions of each "
+"page fragment. In this case, there is one cached version per blog. The "
+"<literal>region</literal> determines the JBossCache node that all version "
+"will be stored in. Different nodes may have different expiry policies. "
+"(That's the stuff you set up using the aforementioned scary configuration "
+"options.)"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:93
+#, no-c-format
+msgid ""
+"Of course, the big problem with <literal>&lt;s:cache&gt;</literal> is that "
+"it is too stupid to know when the underlying data changes (for example, when "
+"the blogger posts a new entry). So you need to evict the cached fragment "
+"manually:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:96
+#, no-c-format
+msgid ""
+"public void post() {\n"
+"    ...\n"
+"    entityManager.persist(blogEntry);\n"
+"    pojoCache.remove(\"welcomePageFragments\", \"recentEntries-\" + blog."
+"getId() );\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:97
+#, no-c-format
+msgid ""
+"Alternatively, if it is not critical that changes are immediately visible to "
+"the user, you could set a short expiry time on the JbossCache node."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Components.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Components.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Components.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2007 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Components.xml:10
+#, no-c-format
+msgid "Built-in Seam components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:11
+#, no-c-format
+msgid ""
+"This chapter describes Seam's built-in components, and their configuration "
+"properties."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:14
+#, no-c-format
+msgid ""
+"Note that you can replace any of the built in components with your own "
+"implementations simply by specifying the name of one of the built in "
+"components on your own class using <literal>@Name</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:17
+#, no-c-format
+msgid ""
+"Note also that even though all the built in components use a qualified name, "
+"most of them are aliased to unqualified names by default. These aliases "
+"specify <literal>auto-create=\"true\"</literal>, so you do not need to use "
+"<literal>create=true</literal> when injecting built-in components by their "
+"unqualified name."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:21
+#, no-c-format
+msgid "Context injection components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:22
+#, no-c-format
+msgid ""
+"The first set of built in components exist purely to support injection of "
+"various contextual objects. For example, the following component instance "
+"variable would have the Seam session context object injected:"
+msgstr ""
+
+#. Tag: programlisting
+#: Components.xml:25
+#, no-c-format
+msgid "@In private Context sessionContext;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:28
+#, no-c-format
+msgid "org.jboss.seam.core.eventContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:30
+#, no-c-format
+msgid "Manager component for the event context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:36
+#, no-c-format
+msgid "org.jboss.seam.core.pageContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:38
+#, no-c-format
+msgid "Manager component for the page context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:44
+#, no-c-format
+msgid "org.jboss.seam.core.conversationContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:46
+#, no-c-format
+msgid "Manager component for the conversation context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:52
+#, no-c-format
+msgid "org.jboss.seam.core.sessionContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:54
+#, no-c-format
+msgid "Manager component for the session context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:60
+#, no-c-format
+msgid "org.jboss.seam.core.applicationContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:62
+#, no-c-format
+msgid "Manager component for the appication context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:68
+#, no-c-format
+msgid "org.jboss.seam.core.businessProcessContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:70
+#, no-c-format
+msgid "Manager component for the business process context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:76
+#, no-c-format
+msgid "org.jboss.seam.core.facesContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:78
+#, no-c-format
+msgid ""
+"Manager component for the <literal>FacesContext</literal> context object "
+"(not a true Seam context)"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:84 Components.xml:267 Components.xml:441 Components.xml:572
+#, no-c-format
+msgid "All of these components are always installed."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:90
+#, no-c-format
+msgid "Utility components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:91
+#, no-c-format
+msgid "These components are merely useful."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:96
+#, no-c-format
+msgid "org.jboss.seam.core.facesMessages"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:98
+#, no-c-format
+msgid "Allows faces success messages to propagate across a browser redirect."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:103
+#, no-c-format
+msgid ""
+"<literal>add(FacesMessage facesMessage)</literal> &mdash; add a faces "
+"message, which will be displayed during the next render response phase that "
+"occurs in the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:108
+#, no-c-format
+msgid ""
+"<literal>add(String messageTemplate)</literal> &mdash; add a faces message, "
+"rendered from the given message template which may contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:113
+#, no-c-format
+msgid ""
+"<literal>add(Severity severity, String messageTemplate)</literal> &mdash; "
+"add a faces message, rendered from the given message template which may "
+"contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:118
+#, no-c-format
+msgid ""
+"<literal>addFromResourceBundle(String key)</literal> &mdash; add a faces "
+"message, rendered from a message template defined in the Seam resource "
+"bundle which may contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:123
+#, no-c-format
+msgid ""
+"<literal>addFromResourceBundle(Severity severity, String key)</literal> "
+"&mdash; add a faces message, rendered from a message template defined in the "
+"Seam resource bundle which may contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:128
+#, no-c-format
+msgid "<literal>clear()</literal> &mdash; clear all messages."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:136
+#, no-c-format
+msgid "org.jboss.seam.core.redirect"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:138
+#, no-c-format
+msgid ""
+"A convenient API for performing redirects with parameters (this is "
+"especially useful for bookmarkable search results screens)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:143
+#, no-c-format
+msgid ""
+"<literal>redirect.viewId</literal> &mdash; the JSF view id to redirect to."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:148
+#, no-c-format
+msgid ""
+"<literal>redirect.conversationPropagationEnabled</literal> &mdash; "
+"determines whether the conversation will propagate across the redirect."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:153
+#, no-c-format
+msgid ""
+"<literal>redirect.parameters</literal> &mdash; a map of request parameter "
+"name to value, to be passed in the redirect request."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:158
+#, no-c-format
+msgid "<literal>execute()</literal> &mdash; perform the redirect immediately."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:163
+#, no-c-format
+msgid ""
+"<literal>captureCurrentRequest()</literal> &mdash; stores the view id and "
+"request parameters of the current GET request (in the conversation context), "
+"for later use by calling <literal>execute()</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:171
+#, no-c-format
+msgid "org.jboss.seam.core.httpError"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:173
+#, no-c-format
+msgid "A convenient API for sending HTTP errors."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:179
+#, no-c-format
+msgid "org.jboss.seam.core.events"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:181
+#, no-c-format
+msgid ""
+"An API for raising events that can be observed via <literal>@Observer</"
+"literal> methods, or method bindings in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:186
+#, no-c-format
+msgid ""
+"<literal>raiseEvent(String type)</literal> &mdash; raise an event of a "
+"particular type and distribute to all observers."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:191
+#, no-c-format
+msgid ""
+"<literal>raiseAsynchronousEvent(String type)</literal> &mdash; raise an "
+"event to be processed asynchronously by the EJB3 timer service."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:196
+#, no-c-format
+msgid ""
+"<literal>raiseTimedEvent(String type, ....)</literal> &mdash; schedule an "
+"event to be processed asynchronously by the EJB3 timer service."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:201
+#, no-c-format
+msgid ""
+"<literal>addListener(String type, String methodBinding)</literal> &mdash; "
+"add an observer for a particular event type."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:209
+#, no-c-format
+msgid "org.jboss.seam.core.interpolator"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:211
+#, no-c-format
+msgid "An API for interpolating the values of JSF EL expressions in Strings."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:216
+#, no-c-format
+msgid ""
+"<literal>interpolate(String template)</literal> &mdash; scan the template "
+"for JSF EL expressions of the form <literal>#{...}</literal> and replace "
+"them with their evaluated values."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:224
+#, no-c-format
+msgid "org.jboss.seam.core.expressions"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:226
+#, no-c-format
+msgid "An API for creating value and method bindings."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:231
+#, no-c-format
+msgid ""
+"<literal>createValueBinding(String expression)</literal> &mdash; create a "
+"value binding object."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:236
+#, no-c-format
+msgid ""
+"<literal>createMethodBinding(String expression)</literal> &mdash; create a "
+"method binding object."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:244
+#, no-c-format
+msgid "org.jboss.seam.core.pojoCache"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:246
+#, no-c-format
+msgid ""
+"Manager component for a JBoss Cache <literal>PojoCache</literal> instance."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:251
+#, no-c-format
+msgid ""
+"<literal>pojoCache.cfgResourceName</literal> &mdash; the name of the "
+"configuration file. Default to <literal>treecache.xml</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:259
+#, no-c-format
+msgid "org.jboss.seam.core.uiComponent"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:261
+#, no-c-format
+msgid ""
+"Allows access to a JSF <literal>UIComponent</literal> by its id from the EL. "
+"For example, we can write <literal>@In(\"#{uiComponent['myForm:address']."
+"value}\")</literal>."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:273
+#, no-c-format
+msgid "Components for internationalization and themes"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:274
+#, no-c-format
+msgid ""
+"The next group of components make it easy to build internationalized user "
+"interfaces using Seam."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:279
+#, no-c-format
+msgid "org.jboss.seam.core.locale"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:281
+#, no-c-format
+msgid "The Seam locale. The locale is session scoped."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:287
+#, no-c-format
+msgid "org.jboss.seam.core.timezone"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:289
+#, no-c-format
+msgid "The Seam timezone. The timezone is session scoped."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:295
+#, no-c-format
+msgid "org.jboss.seam.core.resourceBundle"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:297
+#, no-c-format
+msgid ""
+"The Seam resource bundle. The resource bundle is session scoped. The Seam "
+"resource bundle performs a depth-first search for keys in a list of Java "
+"resource bundles."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:302
+#, no-c-format
+msgid ""
+"<literal>resourceBundle.bundleNames</literal> &mdash; the names of the Java "
+"resource bundles to search. Default to <literal>messages</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:310
+#, no-c-format
+msgid "org.jboss.seam.core.localeSelector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:312
+#, no-c-format
+msgid ""
+"Supports selection of the locale either at configuration time, or by the "
+"user at runtime."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:317 Components.xml:367
+#, no-c-format
+msgid "<literal>select()</literal> &mdash; select the specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:322
+#, no-c-format
+msgid ""
+"<literal>localeSelector.locale</literal> &mdash; the actual <literal>java."
+"util.Locale</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:327
+#, no-c-format
+msgid ""
+"<literal>localeSelector.localeString</literal> &mdash; the stringified "
+"representation of the locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:332
+#, no-c-format
+msgid ""
+"<literal>localeSelector.language</literal> &mdash; the language for the "
+"specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:337
+#, no-c-format
+msgid ""
+"<literal>localeSelector.country</literal> &mdash; the country for the "
+"specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:342
+#, no-c-format
+msgid ""
+"<literal>localeSelector.variant</literal> &mdash; the variant for the "
+"specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:347
+#, no-c-format
+msgid ""
+"<literal>localeSelector.supportedLocales</literal> &mdash; a list of "
+"<literal>SelectItem</literal>s representing the supported locales listed in "
+"<literal>jsf-config.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:352
+#, no-c-format
+msgid ""
+"<literal>localeSelector.cookieEnabled</literal> &mdash; specifies that the "
+"locale selection should be persisted via a cookie."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:360
+#, no-c-format
+msgid "org.jboss.seam.core.timezoneSelector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:362
+#, no-c-format
+msgid ""
+"Supports selection of the timezone either at configuration time, or by the "
+"user at runtime."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:372
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.timezone</literal> &mdash; the actual "
+"<literal>java.util.TimeZone</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:377
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.timeZoneId</literal> &mdash; the stringified "
+"representation of the timezone."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:382
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.cookieEnabled</literal> &mdash; specifies that the "
+"timezone selection should be persisted via a cookie."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:390
+#, no-c-format
+msgid "org.jboss.seam.core.messages"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:392
+#, no-c-format
+msgid ""
+"A map containing internationalized messages rendered from message templates "
+"defined in the Seam resource bundle."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:398
+#, no-c-format
+msgid "org.jboss.seam.theme.themeSelector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:400
+#, no-c-format
+msgid ""
+"Supports selection of the theme either at configuration time, or by the user "
+"at runtime."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:405
+#, no-c-format
+msgid "<literal>select()</literal> &mdash; select the specified theme."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:410
+#, no-c-format
+msgid ""
+"<literal>theme.availableThemes</literal> &mdash; the list of defined themes."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:415
+#, no-c-format
+msgid "<literal>themeSelector.theme</literal> &mdash; the selected theme."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:420
+#, no-c-format
+msgid ""
+"<literal>themeSelector.themes</literal> &mdash; a list of "
+"<literal>SelectItem</literal>s representing the defined themes."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:425
+#, no-c-format
+msgid ""
+"<literal>themeSelector.cookieEnabled</literal> &mdash; specifies that the "
+"theme selection should be persisted via a cookie."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:433
+#, no-c-format
+msgid "org.jboss.seam.theme.theme"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:435
+#, no-c-format
+msgid "A map containing theme entries."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:447
+#, no-c-format
+msgid "Components for controlling conversations"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:448
+#, no-c-format
+msgid ""
+"The next group of components allow control of conversations by the "
+"application or user interface."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:453
+#, no-c-format
+msgid "org.jboss.seam.core.conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:455
+#, no-c-format
+msgid ""
+"API for application control of attributes of the current Seam conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:460 Components.xml:475
+#, no-c-format
+msgid "<literal>getId()</literal> &mdash; returns the current conversation id"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:465
+#, no-c-format
+msgid ""
+"<literal>isNested()</literal> &mdash; is the current conversation a nested "
+"conversation?"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:470
+#, no-c-format
+msgid ""
+"<literal>isLongRunning()</literal> &mdash; is the current conversation a "
+"long-running conversation?"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:480
+#, no-c-format
+msgid ""
+"<literal>getParentId()</literal> &mdash; returns the conversation id of the "
+"parent conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:485
+#, no-c-format
+msgid ""
+"<literal>getRootId()</literal> &mdash; returns the conversation id of the "
+"root conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:490
+#, no-c-format
+msgid ""
+"<literal>setTimeout(int timeout)</literal> &mdash; sets the timeout for the "
+"current conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:495
+#, no-c-format
+msgid ""
+"<literal>setViewId(String outcome)</literal> &mdash; sets the view id to be "
+"used when switching back to the current conversation from the conversation "
+"switcher, conversation list, or breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:500
+#, no-c-format
+msgid ""
+"<literal>setDescription(String description)</literal> &mdash; sets the "
+"description of the current conversation to be displayed in the conversation "
+"switcher, conversation list, or breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:505
+#, no-c-format
+msgid ""
+"<literal>redirect()</literal> &mdash; redirect to the last well-defined view "
+"id for this conversation (useful after login challenges)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:510
+#, no-c-format
+msgid ""
+"<literal>leave()</literal> &mdash; exit the scope of this conversation, "
+"without actually ending the conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:515
+#, no-c-format
+msgid ""
+"<literal>begin()</literal> &mdash; begin a long-running conversation "
+"(equivalent to <literal>@Begin</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:520
+#, no-c-format
+msgid ""
+"<literal>beginPageflow(String pageflowName)</literal> &mdash; begin a long-"
+"running conversation with a pageflow (equivalent to <literal>@Begin(pageflow="
+"\"...\")</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:525
+#, no-c-format
+msgid ""
+"<literal>end()</literal> &mdash; end a long-running conversation (equivalent "
+"to <literal>@End</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:530
+#, no-c-format
+msgid ""
+"<literal>pop()</literal> &mdash; pop the conversation stack, returning to "
+"the parent conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:535
+#, no-c-format
+msgid ""
+"<literal>root()</literal> &mdash; return to the root conversation of the "
+"conversation stack."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:540
+#, no-c-format
+msgid ""
+"<literal>changeFlushMode(FlushModeType flushMode)</literal> &mdash; change "
+"the flush mode of the conversation."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:548
+#, no-c-format
+msgid "org.jboss.seam.core.conversationList"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:550
+#, no-c-format
+msgid "Manager component for the conversation list."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:556
+#, no-c-format
+msgid "org.jboss.seam.core.conversationStack"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:558
+#, no-c-format
+msgid "Manager component for the conversation stack (breadcrumbs)."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:564
+#, no-c-format
+msgid "org.jboss.seam.core.switcher"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:566
+#, no-c-format
+msgid "The conversation switcher."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:578
+#, no-c-format
+msgid "jBPM-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:579
+#, no-c-format
+msgid "These components are for use with jBPM."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:584
+#, no-c-format
+msgid "org.jboss.seam.core.pageflow"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:586
+#, no-c-format
+msgid "API control of Seam pageflows."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:591
+#, no-c-format
+msgid ""
+"<literal>isInProcess()</literal> &mdash; returns <literal>true</literal> if "
+"there is currently a pageflow in process"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:596
+#, no-c-format
+msgid ""
+"<literal>getProcessInstance()</literal> &mdash; returns jBPM "
+"<literal>ProcessInstance</literal> for the current pageflow"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:601
+#, no-c-format
+msgid ""
+"<literal>begin(String pageflowName)</literal> &mdash; begin a pageflow in "
+"the context of the current conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:606
+#, no-c-format
+msgid ""
+"<literal>reposition(String nodeName)</literal> &mdash; reposition the "
+"current pageflow to a particular node"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:614
+#, no-c-format
+msgid "org.jboss.seam.core.actor"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:616
+#, no-c-format
+msgid ""
+"API for application control of attributes of the jBPM actor associated with "
+"the current session."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:621
+#, no-c-format
+msgid ""
+"<literal>setId(String actorId)</literal> &mdash; sets the jBPM actor id of "
+"the current user."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:626
+#, no-c-format
+msgid ""
+"<literal>getGroupActorIds()</literal> &mdash; returns a <literal>Set</"
+"literal> to which jBPM actor ids for the current users groups may be added."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:634
+#, no-c-format
+msgid "org.jboss.seam.core.transition"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:636
+#, no-c-format
+msgid ""
+"API for application control of the jBPM transition for the current task."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:641
+#, no-c-format
+msgid ""
+"<literal>setName(String transitionName)</literal> &mdash; sets the jBPM "
+"transition name to be used when the current task is ended via "
+"<literal>@EndTask</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:649
+#, no-c-format
+msgid "org.jboss.seam.core.businessProcess"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:651
+#, no-c-format
+msgid ""
+"API for programmatic control of the association between the conversation and "
+"business process."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:656
+#, no-c-format
+msgid ""
+"<literal>businessProcess.taskId</literal> &mdash; the id of the task "
+"associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:661
+#, no-c-format
+msgid ""
+"<literal>businessProcess.processId</literal> &mdash; the id of the process "
+"associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:666
+#, no-c-format
+msgid ""
+"<literal>businessProcess.hasCurrentTask()</literal> &mdash; is a task "
+"instance associated with the current conversation?"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:671
+#, no-c-format
+msgid ""
+"<literal>businessProcess.hasCurrentProcess()</literal> &mdash; is a process "
+"instance associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:676
+#, no-c-format
+msgid ""
+"<literal>createProcess(String name)</literal> &mdash; create an instance of "
+"the named process definition and associate it with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:681
+#, no-c-format
+msgid ""
+"<literal>startTask()</literal> &mdash; start the task associated with the "
+"current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:686
+#, no-c-format
+msgid ""
+"<literal>endTask(String transitionName)</literal> &mdash; end the task "
+"associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:691
+#, no-c-format
+msgid ""
+"<literal>resumeTask(Long id)</literal> &mdash; associate the task with the "
+"given id with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:696
+#, no-c-format
+msgid ""
+"<literal>resumeProcess(Long id)</literal> &mdash; associate the process with "
+"the given id with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:701
+#, no-c-format
+msgid ""
+"<literal>transition(String transitionName)</literal> &mdash; trigger the "
+"transition."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:709
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstance"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:711
+#, no-c-format
+msgid "Manager component for the jBPM <literal>TaskInstance</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:717
+#, no-c-format
+msgid "org.jboss.seam.core.processInstance"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:719
+#, no-c-format
+msgid "Manager component for the jBPM <literal>ProcessInstance</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:725
+#, no-c-format
+msgid "org.jboss.seam.core.jbpmContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:727
+#, no-c-format
+msgid "Manager component for an event-scoped <literal>JbpmContext</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:733
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstanceList"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:735
+#, no-c-format
+msgid "Manager component for the jBPM task list."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:741
+#, no-c-format
+msgid "org.jboss.seam.core.pooledTaskInstanceList"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:743
+#, no-c-format
+msgid "Manager component for the jBPM pooled task list."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:749
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstanceListForType"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:751
+#, no-c-format
+msgid "Manager component for the jBPM task lists."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:757
+#, no-c-format
+msgid "org.jboss.seam.core.pooledTask"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:759
+#, no-c-format
+msgid "Action handler for pooled task assignment."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:765
+#, no-c-format
+msgid ""
+"All of these components are installed whenever the component <literal>org."
+"jboss.seam.core.jbpm</literal> is installed."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:771
+#, no-c-format
+msgid "Security-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:772
+#, no-c-format
+msgid "These components relate to web-tier security."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:777
+#, no-c-format
+msgid "org.jboss.seam.core.userPrincipal"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:779
+#, no-c-format
+msgid "Manager component for the current user <literal>Principal</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:785
+#, no-c-format
+msgid "org.jboss.seam.core.isUserInRole"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:787
+#, no-c-format
+msgid ""
+"Allows JSF pages to choose to render a control, depending upon the roles "
+"available to the current principal. <literal>&lt;h:commandButton value=\"edit"
+"\" rendered=\"#{isUserInRole['admin']}\"/&gt;</literal>."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:796
+#, no-c-format
+msgid "JMS-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:797
+#, no-c-format
+msgid ""
+"These components are for use with managed <literal>TopicPublisher</literal>s "
+"and <literal>QueueSender</literal>s (see below)."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:802
+#, no-c-format
+msgid "org.jboss.seam.jms.queueSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:804
+#, no-c-format
+msgid "Manager component for a JMS <literal>QueueSession</literal> ."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:810
+#, no-c-format
+msgid "org.jboss.seam.jms.topicSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:812
+#, no-c-format
+msgid "Manager component for a JMS <literal>TopicSession</literal> ."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:821
+#, no-c-format
+msgid "Mail-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:822
+#, no-c-format
+msgid "These components are for use with Seam's Email support"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:827
+#, no-c-format
+msgid "org.jboss.seam.mail.mailSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:829
+#, no-c-format
+msgid "Manager component for a JavaMail <literal>Session</literal> ."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:834
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.host</literal> &mdash; the hostname "
+"of the SMTP server to use"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:839
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.port</literal> &mdash; the port of "
+"the SMTP server to use"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:844
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.username</literal> &mdash; the "
+"username to use to connect to the SMTP server."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:849
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.password</literal> &mdash; the "
+"password to use to connect to the SMTP server"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:854
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.debug</literal> &mdash; enable "
+"JavaMail debugging (very verbose)"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:859
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.sessionJndiName</literal> &mdash; "
+"name under which a javax.mail.Session is bound to JNDI"
+msgstr ""
+
+#. Tag: title
+#: Components.xml:870
+#, no-c-format
+msgid "Infrastructural components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:871
+#, no-c-format
+msgid ""
+"These components provide critical platform infrastructure. You can install a "
+"component by including its class name in the <literal>org.jboss.seam.core."
+"init.componentClasses</literal> configuration property."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:876
+#, no-c-format
+msgid "org.jboss.seam.core.init"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:878
+#, no-c-format
+msgid "Initialization settings for Seam. Always installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:883
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.jndiPattern</literal> &mdash; the JNDI "
+"pattern used for looking up session beans"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:888
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.debug</literal> &mdash; enable Seam debug "
+"mode"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:893
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.clientSideConversations</literal> &mdash; "
+"if set to <literal>true</literal>, Seam will save conversation context "
+"variables in the client instead of in the <literal>HttpSession</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:898
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.userTransactionName</literal> &mdash; the "
+"JNDI name to use when looking up the JTA <literal>UserTransaction</literal> "
+"object."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:906
+#, no-c-format
+msgid "org.jboss.seam.core.manager"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:908
+#, no-c-format
+msgid ""
+"Internal component for Seam page and conversation context management. Always "
+"installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:913
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationTimeout</literal> &mdash; "
+"the conversation context timeout in milliseconds."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:918
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.concurrentRequestTimeout</literal> "
+"&mdash; maximum wait time for a thread attempting to gain a lock on the long-"
+"running conversation context."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:923
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationIdParameter</literal> "
+"&mdash; the request parameter used to propagate the conversation id, default "
+"to <literal>conversationId</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:928
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationIsLongRunningParameter</"
+"literal> &mdash; the request parameter used to propagate information about "
+"whether the conversation is long-running, default to "
+"<literal>conversationIsLongRunning</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:936
+#, no-c-format
+msgid "org.jboss.seam.core.pages"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:938
+#, no-c-format
+msgid "Internal component for Seam workspace management. Always installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:943
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.pages.noConversationViewId</literal> &mdash; "
+"global setting for the view id to redirect to when a conversation entry is "
+"not found on the server side."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:951
+#, no-c-format
+msgid "org.jboss.seam.core.ejb"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:953
+#, no-c-format
+msgid ""
+"Bootstraps the JBoss Embeddable EJB3 container. Install as class "
+"<literal>org.jboss.seam.core.Ejb</literal>. This is useful when using Seam "
+"with EJB components outside the context of a Java EE 5 application server."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:956
+#, no-c-format
+msgid ""
+"The basic Embedded EJB configuration is defined in <literal>jboss-embedded-"
+"beans.xml</literal>. Additional microcontainer configuration (for example, "
+"extra datasources) may be specified by <literal>jboss-beans.xml</literal> or "
+"<literal>META-INF/jboss-beans.xml</literal> in the classpath."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:962
+#, no-c-format
+msgid "org.jboss.seam.core.microcontainer"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:964
+#, no-c-format
+msgid ""
+"Bootstraps the JBoss microcontainer. Install as class <literal>org.jboss."
+"seam.core.Microcontainer</literal>. This is useful when using Seam with "
+"Hibernate and no EJB components outside the context of a Java EE application "
+"server. The microcontainer can provide a partial EE environment with JNDI, "
+"JTA, a JCA datasource and Hibernate."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:967
+#, no-c-format
+msgid ""
+"The microcontainer configuration may be specified by <literal>jboss-beans."
+"xml</literal> or <literal>META-INF/jboss-beans.xml</literal> in the "
+"classpath."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:973
+#, no-c-format
+msgid "org.jboss.seam.core.jbpm"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:975
+#, no-c-format
+msgid ""
+"Bootstraps a <literal>JbpmConfiguration</literal>. Install as class "
+"<literal>org.jboss.seam.core.Jbpm</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:980
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.jbpm.processDefinitions</literal> &mdash; a "
+"list of resource names of jPDL files to be used for orchestration of "
+"business processes."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:985
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.jbpm.pageflowDefinitions</literal> &mdash; a "
+"list of resource names of jPDL files to be used for orchestration of "
+"conversation page flows."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:993
+#, no-c-format
+msgid "org.jboss.seam.core.conversationEntries"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:995
+#, no-c-format
+msgid ""
+"Internal session-scoped component recording the active long-running "
+"conversations between requests."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1001
+#, no-c-format
+msgid "org.jboss.seam.core.facesPage"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1003
+#, no-c-format
+msgid ""
+"Internal page-scoped component recording the conversation context associated "
+"with a page."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1009
+#, no-c-format
+msgid "org.jboss.seam.core.persistenceContexts"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1011
+#, no-c-format
+msgid ""
+"Internal component recording the persistence contexts which were used in the "
+"current conversation."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1017
+#, no-c-format
+msgid "org.jboss.seam.jms.queueConnection"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1019
+#, no-c-format
+msgid ""
+"Manages a JMS <literal>QueueConnection</literal>. Installed whenever managed "
+"managed <literal>QueueSender</literal> is installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1024
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.jms.queueConnection.queueConnectionFactoryJndiName</"
+"literal> &mdash; the JNDI name of a JMS <literal>QueueConnectionFactory</"
+"literal>. Default to <literal>UIL2ConnectionFactory</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1032
+#, no-c-format
+msgid "org.jboss.seam.jms.topicConnection"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1034
+#, no-c-format
+msgid ""
+"Manages a JMS <literal>TopicConnection</literal>. Installed whenever managed "
+"managed <literal>TopicPublisher</literal> is installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1039
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.jms.topicConnection.topicConnectionFactoryJndiName</"
+"literal> &mdash; the JNDI name of a JMS <literal>TopicConnectionFactory</"
+"literal>. Default to <literal>UIL2ConnectionFactory</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1047
+#, no-c-format
+msgid "org.jboss.seam.persistence.persistenceProvider"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1049
+#, no-c-format
+msgid "Abstraction layer for non-standardized features of JPA provider."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1055
+#, no-c-format
+msgid "org.jboss.seam.core.validation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1057
+#, no-c-format
+msgid "Internal component for Hibernate Validator support."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1063
+#, no-c-format
+msgid "org.jboss.seam.debug.introspector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1065 Components.xml:1073
+#, no-c-format
+msgid "Support for the Seam Debug Page."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1071
+#, no-c-format
+msgid "org.jboss.seam.debug.contexts"
+msgstr ""
+
+#. Tag: title
+#: Components.xml:1082
+#, no-c-format
+msgid "Special components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1083
+#, no-c-format
+msgid ""
+"Certain special Seam component classes are installable multiple times under "
+"names specified in the Seam configuration. For example, the following lines "
+"in <literal>components.xml</literal> install and configure two Seam "
+"components:"
+msgstr ""
+
+#. Tag: programlisting
+#: Components.xml:1086
+#, no-c-format
+msgid ""
+"&lt;component name=\"bookingDatabase\"\n"
+"          class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"    &lt;property name=\"persistenceUnitJndiName\"&gt;java:/comp/emf/"
+"bookingPersistence&lt;/property&gt;\n"
+"&lt;/component&gt;\n"
+"\n"
+"&lt;component name=\"userDatabase\"\n"
+"          class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"    &lt;property name=\"persistenceUnitJndiName\"&gt;java:/comp/emf/"
+"userPersistence&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1087
+#, no-c-format
+msgid ""
+"The Seam component names are <literal>bookingDatabase</literal> and "
+"<literal>userDatabase</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1092
+#, no-c-format
+msgid "&lt;entityManager&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1093
+#, no-c-format
+msgid "org.jboss.seam.core.ManagedPersistenceContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1095
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed <literal>EntityManager</"
+"literal> with an extended persistence context."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1100
+#, no-c-format
+msgid ""
+"<literal>&lt;entityManager&gt;.entityManagerFactory</literal> &mdash; a "
+"value binding expression that evaluates to an instance of "
+"<literal>EntityManagerFactory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1103
+#, no-c-format
+msgid ""
+"<literal>&lt;entityManager&gt;.persistenceUnitJndiName</literal> &mdash; the "
+"JNDI name of the entity manager factory, default to <literal>java:/&lt;"
+"managedPersistenceContext&gt;</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1111
+#, no-c-format
+msgid "&lt;entityManagerFactory&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1112
+#, no-c-format
+msgid "org.jboss.seam.core.EntityManagerFactory"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1114
+#, no-c-format
+msgid ""
+"Manages a JPA <literal>EntityManagerFactory</literal>. This is most useful "
+"when using JPA outside of an EJB 3.0 supporting environment."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1119
+#, no-c-format
+msgid ""
+"<literal>entityManagerFactory.persistenceUnitName</literal> &mdash; the name "
+"of the persistence unit."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1124 Components.xml:1162
+#, no-c-format
+msgid "See the API JavaDoc for further configuration properties."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1130
+#, no-c-format
+msgid "&lt;session&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1131
+#, no-c-format
+msgid "org.jboss.seam.core.ManagedSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1133
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed Hibernate "
+"<literal>Session</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1138
+#, no-c-format
+msgid ""
+"<literal>&lt;session&gt;.sessionFactory</literal> &mdash; a value binding "
+"expression that evaluates to an instance of <literal>SessionFactory</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1141
+#, no-c-format
+msgid ""
+"<literal>&lt;session&gt;.sessionFactoryJndiName</literal> &mdash; the JNDI "
+"name of the session factory, default to <literal>java:/&lt;managedSession&gt;"
+"</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1149
+#, no-c-format
+msgid "&lt;sessionFactory&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1150
+#, no-c-format
+msgid "org.jboss.seam.core.HibernateSessionFactory"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1152
+#, no-c-format
+msgid "Manages a Hibernate <literal>SessionFactory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1157
+#, no-c-format
+msgid ""
+"<literal>&lt;sessionFactory&gt;.cfgResourceName</literal> &mdash; the path "
+"to the configuration file. Default to <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1168
+#, no-c-format
+msgid "&lt;managedQueueSender&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1169
+#, no-c-format
+msgid "org.jboss.seam.jms.ManagedQueueSender"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1171
+#, no-c-format
+msgid ""
+"Manager component for an event scoped managed JMS <literal>QueueSender</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1176
+#, no-c-format
+msgid ""
+"<literal>&lt;managedQueueSender&gt;.queueJndiName</literal> &mdash; the JNDI "
+"name of the JMS queue."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1184
+#, no-c-format
+msgid "&lt;managedTopicPublisher&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1185
+#, no-c-format
+msgid "org.jboss.seam.jms.ManagedTopicPublisher"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1187
+#, no-c-format
+msgid ""
+"Manager component for an event scoped managed JMS <literal>TopicPublisher</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1192
+#, no-c-format
+msgid ""
+"<literal>&lt;managedTopicPublisher&gt;.topicJndiName</literal> &mdash; the "
+"JNDI name of the JMS topic."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1200
+#, no-c-format
+msgid "&lt;managedWorkingMemory&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1201
+#, no-c-format
+msgid "org.jboss.seam.drools.ManagedWorkingMemory"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1203
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed Drools "
+"<literal>WorkingMemory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1208
+#, no-c-format
+msgid ""
+"<literal>&lt;managedWorkingMemory&gt;.ruleBase</literal> &mdash; a value "
+"expression that evaluates to an instance of <literal>RuleBase</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1216
+#, no-c-format
+msgid "&lt;ruleBase&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1217
+#, no-c-format
+msgid "org.jboss.seam.drools.RuleBase"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1219
+#, no-c-format
+msgid ""
+"Manager component for an application scoped Drools <literal>RuleBase</"
+"literal>. <emphasis>Note that this is not really intended for production "
+"usage, since it does not support dynamic installation of new rules.</"
+"emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1224
+#, no-c-format
+msgid ""
+"<literal>&lt;ruleBase&gt;.ruleFiles</literal> &mdash; a list of files "
+"containing Drools rules."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1227
+#, no-c-format
+msgid ""
+"<literal>&lt;ruleBase&gt;.dslFile</literal> &mdash; a Drools DSL definition."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1235
+#, no-c-format
+msgid "&lt;entityHome&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1236
+#, no-c-format
+msgid "org.jboss.seam.framework.EntityHome"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1240
+#, no-c-format
+msgid "&lt;hibernateEntityHome&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1241
+#, no-c-format
+msgid "org.jboss.seam.framework.HibernateEntityHome"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1245
+#, no-c-format
+msgid "&lt;entityQuery&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1246
+#, no-c-format
+msgid "org.jboss.seam.framework.EntityQuery"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1250
+#, no-c-format
+msgid "&lt;hibernateEntityQuery&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1251
+#, no-c-format
+msgid "org.jboss.seam.framework.HibernateEntityQuery"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Concepts.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Concepts.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Concepts.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1922 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Concepts.xml:10
+#, no-c-format
+msgid "The contextual component model"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:11
+#, no-c-format
+msgid ""
+"The two core concepts in Seam are the notion of a <emphasis>context</"
+"emphasis> and the notion of a <emphasis>component</emphasis>. Components are "
+"stateful objects, usually EJBs, and an instance of a component is associated "
+"with a context, and given a name in that context. <emphasis>Bijection</"
+"emphasis> provides a mechanism for aliasing internal component names "
+"(instance variables) to contextual names, allowing component trees to be "
+"dynamically assembled, and reassembled by Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:14
+#, no-c-format
+msgid "Let's start by describing the contexts built in to Seam."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:17
+#, no-c-format
+msgid "Seam contexts"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:18
+#, no-c-format
+msgid ""
+"Seam contexts are created and destroyed by the framework. The application "
+"does not control context demarcation via explicit Java API calls. Context "
+"are usually implicit. In some cases, however, contexts are demarcated via "
+"annotations."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:21
+#, no-c-format
+msgid "The basic Seam contexts are:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:26
+#, no-c-format
+msgid "<para>Stateless context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:31
+#, no-c-format
+msgid "Event (or request) context"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:36 Concepts.xml:151
+#, no-c-format
+msgid "<para>Page context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:41 Concepts.xml:156
+#, no-c-format
+msgid "<para>Conversation context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:46 Concepts.xml:161
+#, no-c-format
+msgid "<para>Session context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:51 Concepts.xml:166
+#, no-c-format
+msgid "<para>Business process context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:56 Concepts.xml:171
+#, no-c-format
+msgid "<para>Application context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:61
+#, no-c-format
+msgid ""
+"You will recognize some of these contexts from servlet and related "
+"specifications. However, two of them might be new to you: "
+"<emphasis>conversation context</emphasis>, and <emphasis>business process "
+"context</emphasis>. One reason state management in web applications is so "
+"fragile and error-prone is that the three built-in contexts (request, "
+"session and application) are not especially meaningful from the point of "
+"view of the business logic. A user login session, for example, is a fairly "
+"arbitrary construct in terms of the actual application work flow. Therefore, "
+"most Seam components are scoped to the conversation or business process "
+"contexts, since they are the contexts which are most meaningful in terms of "
+"the application."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:64
+#, no-c-format
+msgid "Let's look at each context in turn."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:67
+#, no-c-format
+msgid "<title>Stateless context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:68
+#, no-c-format
+msgid ""
+"Components which are truly stateless (stateless session beans, primarily) "
+"always live in the stateless context (this is really a non-context). "
+"Stateless components are not very interesting, and are arguably not very "
+"object-oriented. Nevertheless, they are important and often useful."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:71
+#, no-c-format
+msgid "<title>Event context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:72
+#, no-c-format
+msgid ""
+"The event context is the \"narrowest\" stateful context, and is a "
+"generalization of the notion of the web request context to cover other kinds "
+"of events. Nevertheless, the event context associated with the lifecycle of "
+"a JSF request is the most important example of an event context, and the one "
+"you will work with most often. Components associated with the event context "
+"are destroyed at the end of the request, but their state is available and "
+"well-defined for at least the lifecycle of the request."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:75
+#, no-c-format
+msgid ""
+"When you invoke a Seam component via RMI, or Seam Remoting, the event "
+"context is created and destroyed just for the invocation."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:78
+#, no-c-format
+msgid "<title>Page context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:79
+#, no-c-format
+msgid ""
+"The page context allows you to associate state with a particular instance of "
+"a rendered page. You can initialize state in your event listener, or while "
+"actually rendering the page, and then have access to it from any event that "
+"originates from that page. This is especially useful for functionality like "
+"clickable lists, where the list is backed by changing data on the server "
+"side. The state is actually serialized to the client, so this construct is "
+"extremely robust with respect to multi-window operation and the back button."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:82
+#, no-c-format
+msgid "<title>Conversation context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:83
+#, no-c-format
+msgid ""
+"The conversation context is a truly central concept in Seam. A "
+"<emphasis>conversation</emphasis> is a unit of work from the point of view "
+"of the user. It might span several interactions with the user, several "
+"requests, and several database transactions. But to the user, a conversation "
+"solves a single problem. For example, \"book hotel\", \"approve contract\", "
+"\"create order\" are all conversations. You might like to think of a "
+"conversation implementing a single \"use case\" or \"user story\", but the "
+"relationship is not necessarily quite exact."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:86
+#, no-c-format
+msgid ""
+"A conversation holds state associated with \"what the user is doing now, in "
+"this window\". A single user may have multiple conversations in progress at "
+"any point in time, usually in multiple windows. The conversation context "
+"allows us to ensure that state from the different conversations does not "
+"collide and cause bugs."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:89
+#, no-c-format
+msgid ""
+"It might take you some time to get used to thinking of applications in terms "
+"of conversations. But once you get used to it, we think you'll love the "
+"notion, and never be able to not think in terms of conversations again!"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:92
+#, no-c-format
+msgid ""
+"Some conversations last for just a single request. Conversations that span "
+"multiple requests must be demarcated using annotations provided by Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:95
+#, no-c-format
+msgid ""
+"Some conversations are also <emphasis>tasks</emphasis>. A task is a "
+"conversation that is significant in terms of a long-running business "
+"process, and has the potential to trigger a business process state "
+"transition when it is successfully completed. Seam provides a special set of "
+"annotations for task demarcation."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:98
+#, no-c-format
+msgid ""
+"Conversations may be <emphasis>nested</emphasis>, with one conversation "
+"taking place \"inside\" a wider conversation. This is an advanced feature."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:101
+#, no-c-format
+msgid ""
+"Usually, conversation state is actually held by Seam in the servlet session "
+"between requests. Seam implements configurable <emphasis>conversation "
+"timeout</emphasis>, automatically destroying inactive conversations, and "
+"thus ensuring that the state held by a single user login session does not "
+"grow without bound if the user abandons conversations."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:104
+#, no-c-format
+msgid ""
+"Seam serializes processing of concurrent requests that take place in the "
+"same long-running conversation context, in the same process."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:107
+#, no-c-format
+msgid ""
+"Alternatively, Seam may be configured to keep conversational state in the "
+"client browser."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:110
+#, no-c-format
+msgid "<title>Session context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:111
+#, no-c-format
+msgid ""
+"A session context holds state associated with the user login session. While "
+"there are some cases where it is useful to share state between several "
+"conversations, we generally frown on the use of session context for holding "
+"components other than global information about the logged in user."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:114
+#, no-c-format
+msgid ""
+"In a JSR-168 portal environment, the session context represents the portlet "
+"session."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:117
+#, no-c-format
+msgid "<title>Business process context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:118
+#, no-c-format
+msgid ""
+"The business process context holds state associated with the long running "
+"business process. This state is managed and made persistent by the BPM "
+"engine (JBoss jBPM). The business process spans multiple interactions with "
+"multiple users, so this state is shared between multiple users, but in a "
+"well-defined manner. The current task determines the current business "
+"process instance, and the lifecycle of the business process is defined "
+"externally using a <emphasis>process definition language</emphasis>, so "
+"there are no special annotations for business process demarcation."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:121
+#, no-c-format
+msgid "<title>Application context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:122
+#, no-c-format
+msgid ""
+"The application context is the familiar servlet context from the servlet "
+"spec. Application context is mainly useful for holding static information "
+"such as configuration data, reference data or metamodels. For example, Seam "
+"stores its own configuration and metamodel in the application context."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:125
+#, no-c-format
+msgid "Context variables"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:126
+#, no-c-format
+msgid ""
+"A context defines a namespace, a set of <emphasis>context variables</"
+"emphasis>. These work much the same as session or request attributes in the "
+"servlet spec. You may bind any value you like to a context variable, but "
+"usually we bind Seam component instances to context variables."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:129
+#, no-c-format
+msgid ""
+"So, within a context, a component instance is identified by the context "
+"variable name (this is usually, but not always, the same as the component "
+"name). You may programatically access a named component instance in a "
+"particular scope via the <literal>Contexts</literal> class, which provides "
+"access to several thread-bound instances of the <literal>Context</literal> "
+"interface:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:132
+#, no-c-format
+msgid "User user = (User) Contexts.getSessionContext().get(\"user\");"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:133
+#, no-c-format
+msgid "You may also set or change the value associated with a name:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:136
+#, no-c-format
+msgid "Contexts.getSessionContext().set(\"user\", user);"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:137
+#, no-c-format
+msgid ""
+"Usually, however, we obtain components from a context via injection, and put "
+"component instances into a context via outjection."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:140
+#, no-c-format
+msgid "Context search priority"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:141
+#, no-c-format
+msgid ""
+"Sometimes, as above, component instances are obtained from a particular "
+"known scope. Other times, all stateful scopes are searched, in "
+"<emphasis>priority order</emphasis>. The order is as follows:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:146
+#, no-c-format
+msgid "<para>Event context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:176
+#, no-c-format
+msgid ""
+"You can perform a priority search by calling <literal>Contexts."
+"lookupInStatefulContexts()</literal>. Whenever you access a component by "
+"name from a JSF page, a priority search occurs."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:179
+#, no-c-format
+msgid "Concurrency model"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:180
+#, no-c-format
+msgid ""
+"Neither the servlet nor EJB specifications define any facilities for "
+"managing concurrent requests originating from the same client. The servlet "
+"container simply lets all threads run concurrently and leaves enforcing "
+"threadsafeness to application code. The EJB container allows stateless "
+"components to be accessed concurrently, and throws an exception if multiple "
+"threads access a stateful session bean."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:183
+#, no-c-format
+msgid ""
+"This behavior might have been okay in old-style web applications which were "
+"based around fine-grained, synchronous requests. But for modern applications "
+"which make heavy use of many fine-grained, asynchronous (AJAX) requests, "
+"concurrency is a fact of life, and must be supported by the programming "
+"model. Seam weaves a concurrency management layer into its context model."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:186
+#, no-c-format
+msgid ""
+"The Seam session and application contexts are multithreaded. Seam will allow "
+"concurrent requests in a context to be processed concurrently. The event and "
+"page contexts are by nature single threaded. The business process context is "
+"strictly speaking multi-threaded, but in practice concurrency is "
+"sufficiently rare that this fact may be disregarded most of the time. "
+"Finally, Seam enforces a <emphasis>single thread per conversation per "
+"process</emphasis> model for the conversation context by serializing "
+"concurrent requests in the same long-running conversation context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:189
+#, no-c-format
+msgid ""
+"Since the session context is multithreaded, and often contains volatile "
+"state, session scope components are always protected by Seam from concurrent "
+"access. Seam serializes requests to session scope session beans and "
+"JavaBeans by default (and detects and breaks any deadlocks that occur). This "
+"is not the default behaviour for application scoped components however, "
+"since application scoped components do not usually hold volatile state and "
+"because synchronization at the global level is <emphasis>extremely</"
+"emphasis> expensive. However, you can force a serialized threading model on "
+"any session bean or JavaBean component by adding the <literal>@Synchronized</"
+"literal> annotation."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:192
+#, no-c-format
+msgid ""
+"This concurrency model means that AJAX clients can safely use volatile "
+"session and conversational state, without the need for any special work on "
+"the part of the developer."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:195
+#, no-c-format
+msgid "Seam components"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:196
+#, no-c-format
+msgid ""
+"Seam components are POJOs (Plain Old Java Objects). In particular, they are "
+"JavaBeans or EJB 3.0 enterprise beans. While Seam does not require that "
+"components be EJBs and can even be used without an EJB 3.0 compliant "
+"container, Seam was designed with EJB 3.0 in mind and includes deep "
+"integration with EJB 3.0. Seam supports the following <emphasis>component "
+"types</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:201
+#, no-c-format
+msgid "EJB 3.0 stateless session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:206
+#, no-c-format
+msgid "EJB 3.0 stateful session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:211
+#, no-c-format
+msgid "EJB 3.0 entity beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:216
+#, no-c-format
+msgid "<para>JavaBeans</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:221
+#, no-c-format
+msgid "EJB 3.0 message-driven beans"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:226
+#, no-c-format
+msgid "Stateless session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:227
+#, no-c-format
+msgid ""
+"Stateless session bean components are not able to hold state across multiple "
+"invocations. Therefore, they usually work by operating upon the state of "
+"other components in the various Seam contexts. They may be used as JSF "
+"action listeners, but cannot provide properties to JSF components for "
+"display."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:230
+#, no-c-format
+msgid "Stateless session beans always live in the stateless context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:233
+#, no-c-format
+msgid ""
+"Stateless session beans are the least interesting kind of Seam component."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:236
+#, no-c-format
+msgid "Stateful session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:237
+#, no-c-format
+msgid ""
+"Stateful session bean components are able to hold state not only across "
+"multiple invocations of the bean, but also across multiple requests. "
+"Application state that does not belong in the database should usually be "
+"held by stateful session beans. This is a major difference between Seam and "
+"many other web application frameworks. Instead of sticking information about "
+"the current conversation directly in the <literal>HttpSession</literal>, you "
+"should keep it in instance variables of a stateful session bean that is "
+"bound to the conversation context. This allows Seam to manage the lifecycle "
+"of this state for you, and ensure that there are no collisions between state "
+"relating to different concurrent conversations."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:240
+#, no-c-format
+msgid ""
+"Stateful session beans are often used as JSF action listener, and as backing "
+"beans that provide properties to JSF components for display or form "
+"submission."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:243
+#, no-c-format
+msgid ""
+"By default, stateful session beans are bound to the conversation context. "
+"They may never be bound to the page or stateless contexts."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:246
+#, no-c-format
+msgid ""
+"Concurrent requests to session-scoped stateful session beans are always "
+"serialized by Seam."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:249
+#, no-c-format
+msgid "Entity beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:250
+#, no-c-format
+msgid ""
+"Entity beans may be bound to a context variable and function as a seam "
+"component. Because entities have a persistent identity in addition to their "
+"contextual identity, entity instances are usually bound explicitly in Java "
+"code, rather than being instantiated implicitly by Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:253
+#, no-c-format
+msgid ""
+"Entity bean components do not support bijection or context demarcation. Nor "
+"does invocation of an entity bean trigger validation."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:256
+#, no-c-format
+msgid ""
+"Entity beans are not usually used as JSF action listeners, but do often "
+"function as backing beans that provide properties to JSF components for "
+"display or form submission. In particular, it is common to use an entity as "
+"a backing bean, together with a stateless session bean action listener to "
+"implement create/update/delete type functionality."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:259
+#, no-c-format
+msgid ""
+"By default, entity beans are bound to the conversation context. They may "
+"never be bound to the stateless context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:262
+#, no-c-format
+msgid ""
+"Note that it in a clustered environment is somewhat less efficient to bind "
+"an entity bean directly to a conversation or session scoped Seam context "
+"variable than it would be to hold a reference to the entity bean in a "
+"stateful session bean. For this reason, not all Seam applications define "
+"entity beans to be Seam components."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:265
+#, no-c-format
+msgid "<title>JavaBeans</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:266
+#, no-c-format
+msgid ""
+"Javabeans may be used just like a stateless or stateful session bean. "
+"However, they do not provide the functionality of a session bean "
+"(declarative transaction demarcation, declarative security, efficient "
+"clustered state replication, EJB 3.0 persistence, timeout methods, etc)."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:269
+#, no-c-format
+msgid ""
+"In a later chapter, we show you how to use Seam and Hibernate without an EJB "
+"container. In this use case, components are JavaBeans instead of session "
+"beans. Note, however, that in many application servers it is somewhat less "
+"efficient to cluster conversation or session scoped Seam JavaBean components "
+"than it is to cluster stateful session bean components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:272
+#, no-c-format
+msgid "By default, JavaBeans are bound to the event context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:275
+#, no-c-format
+msgid ""
+"Concurrent requests to session-scoped JavaBeans are always serialized by "
+"Seam."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:278
+#, no-c-format
+msgid "Message-driven beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:279
+#, no-c-format
+msgid ""
+"Message-driven beans may function as a seam component. However, message-"
+"driven beans are called quite differently to other Seam components - instead "
+"of invoking them via the context variable, they listen for messages sent to "
+"a JMS queue or topic."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:282
+#, no-c-format
+msgid ""
+"Message-driven beans may not be bound to a Seam context. Nor do they have "
+"access to the session or conversation state of their \"caller\". However, "
+"they do support bijection and some other Seam functionality."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:285
+#, no-c-format
+msgid "Interception"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:286
+#, no-c-format
+msgid ""
+"In order to perform its magic (bijection, context demarcation, validation, "
+"etc), Seam must intercept component invocations. For JavaBeans, Seam is in "
+"full control of instantiation of the component, and no special configuration "
+"is needed. For entity beans, interception is not required since bijection "
+"and context demarcation are not defined. For session beans, we must register "
+"an EJB interceptor for the session bean component. We could use an "
+"annotation, as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:289
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:290
+#, no-c-format
+msgid ""
+"But a much better way is to define the interceptor in <literal>ejb-jar.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:293
+#, no-c-format
+msgid ""
+"&lt;interceptors&gt;\n"
+"   &lt;interceptor&gt;\n"
+"      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"   &lt;/interceptor&gt;\n"
+"&lt;/interceptors&gt;\n"
+"   \n"
+"&lt;assembly-descriptor&gt;\n"
+"   &lt;interceptor-binding&gt;\n"
+"      &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"   &lt;/interceptor-binding&gt;\n"
+"&lt;/assembly-descriptor&gt;"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:294
+#, no-c-format
+msgid "Component names"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:295
+#, no-c-format
+msgid ""
+"All seam components need a name. We can assign a name to a component using "
+"the <literal>@Name</literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:298
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:299
+#, no-c-format
+msgid ""
+"This name is the <emphasis>seam component name</emphasis> and is not related "
+"to any other name defined by the EJB specification. However, seam component "
+"names work just like JSF managed bean names and you can think of the two "
+"concepts as identical."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:302
+#, no-c-format
+msgid ""
+"<literal>@Name</literal> is not the only way to define a component name, but "
+"we always need to specify the name <emphasis>somewhere</emphasis>. If we "
+"don't, then none of the other Seam annotations will function."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:305
+#, no-c-format
+msgid ""
+"Just like in JSF, a seam component instance is usually bound to a context "
+"variable with the same name as the component name. So, for example, we would "
+"access the <literal>LoginAction</literal> using <literal>Contexts."
+"getStatelessContext().get(\"loginAction\")</literal>. In particular, "
+"whenever Seam itself instantiates a component, it binds the new instance to "
+"a variable with the component name. However, again like JSF, it is possible "
+"for the application to bind a component to some other context variable by "
+"programmatic API call. This is only useful if a particular component serves "
+"more than one role in the system. For example, the currently logged in "
+"<literal>User</literal> might be bound to the <literal>currentUser</literal> "
+"session context variable, while a <literal>User</literal> that is the "
+"subject of some administration functionality might be bound to the "
+"<literal>user</literal> conversation context variable."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:308
+#, no-c-format
+msgid ""
+"For very large applications, and for built-in seam components, qualified "
+"names are often used."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:311
+#, no-c-format
+msgid ""
+"@Name(\"com.jboss.myapp.loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:312
+#, no-c-format
+msgid ""
+"We may use the qualified component name both in Java code and in JSF's "
+"expression language:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:315
+#, no-c-format
+msgid ""
+"&lt;h:commandButton type=\"submit\" value=\"Login\"\n"
+"                 action=\"#{com.jboss.myapp.loginAction.login}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:316
+#, no-c-format
+msgid ""
+"Since this is noisy, Seam also provides a means of aliasing a qualified name "
+"to a simple name. Add a line like this to the <literal>components.xml</"
+"literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:319
+#, no-c-format
+msgid ""
+"&lt;factory name=\"loginAction\" scope=\"STATELESS\" value=\"#{com.jboss."
+"myapp.loginAction}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:320
+#, no-c-format
+msgid ""
+"All of the built-in Seam components have qualified names, but most of them "
+"are aliased to a simple name by the <literal>components.xml</literal> file "
+"included in the Seam jar."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:323
+#, no-c-format
+msgid "Defining the component scope"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:324
+#, no-c-format
+msgid ""
+"We can override the default scope (context) of a component using the "
+"<literal>@Scope</literal> annotation. This lets us define what context a "
+"component instance is bound to, when it is instantiated by Seam."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:327
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(SESSION)\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:328
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.ScopeType</literal> defines an enumeration of "
+"possible scopes."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:331
+#, no-c-format
+msgid "Components with multiple roles"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:332
+#, no-c-format
+msgid ""
+"Some Seam component classes can fulfill more than one role in the system. "
+"For example, we often have a <literal>User</literal> class which is usually "
+"used as a session-scoped component representing the current user but is used "
+"in user administration screens as a conversation-scoped component. The "
+"<literal>@Role</literal> annotation lets us define an additional named role "
+"for a component, with a different scope&mdash;it lets us bind the same "
+"component class to different context variables. (Any Seam component "
+"<emphasis>instance</emphasis> may be bound to multiple context variables, "
+"but this lets us do it at the class level, and take advantage of auto-"
+"instantiation.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:335
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(CONVERSATION)\n"
+"@Role(name=\"currentUser\", scope=SESSION)\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:336
+#, no-c-format
+msgid ""
+"The <literal>@Roles</literal> annotation lets us specify as many additional "
+"roles as we like."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:339
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(CONVERSATION)\n"
+"@Roles({@Role(name=\"currentUser\", scope=SESSION)\n"
+"        @Role(name=\"tempUser\", scope=EVENT)})\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:340
+#, no-c-format
+msgid "Built-in components"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:341
+#, no-c-format
+msgid ""
+"Like many good frameworks, Seam eats its own dogfood and is implemented "
+"mostly as a set of built-in Seam interceptors (see later) and Seam "
+"components. This makes it easy for applications to interact with built-in "
+"components at runtime or even customize the basic functionality of Seam by "
+"replacing the built-in components with custom implementations. The built-in "
+"components are defined in the Seam namespace <literal>org.jboss.seam.core</"
+"literal> and the Java package of the same name."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:344
+#, no-c-format
+msgid ""
+"The built-in components may be injected, just like any Seam components, but "
+"they also provide convenient static <literal>instance()</literal> methods:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:347
+#, no-c-format
+msgid "FacesMessages.instance().add(\"Welcome back, #{user.name}!\");"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:348
+#, no-c-format
+msgid ""
+"Seam was designed to integrate tightly in a Java EE 5 environment. However, "
+"we understand that there are many projects which are not running in a full "
+"EE environment. We also realize the critical importance of easy unit and "
+"integration testing using frameworks such as TestNG and JUnit. So, we've "
+"made it easy to run Seam in Java SE environments by allowing you to boostrap "
+"certain critical infrastructure normally only found in EE environments by "
+"installing built-in Seam components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:351
+#, no-c-format
+msgid ""
+"For example, you can run your EJB3 components in Tomcat or an integration "
+"test suite just by installing the built-in component <literal>org.jboss.seam."
+"core.ejb</literal>, which automatically bootstraps the JBoss Embeddable EJB3 "
+"container and deploys your EJB components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:354
+#, no-c-format
+msgid ""
+"Or, if you're not quite ready for the Brave New World of EJB 3.0, you can "
+"write a Seam application that uses only JavaBean components, together with "
+"Hibernate3 for persistence, by installing a built-in component that manages "
+"a Hibernate <literal>SessionFactory</literal>. When using Hibernate outside "
+"of a J2EE environment, you will also probably need a JTA transaction manager "
+"and JNDI server, which are available via the built-in component <literal>org."
+"jboss.seam.core.microcontainer</literal>. This lets you use the bulletproof "
+"JTA/JCA pooling datasource from JBoss application server in an SE "
+"environment like Tomcat!"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:357
+#, no-c-format
+msgid "Bijection"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:358
+#, no-c-format
+msgid ""
+"<emphasis>Dependency injection</emphasis> or <emphasis>inversion of control</"
+"emphasis> is by now a familiar concept to most Java developers. Dependency "
+"injection allows a component to obtain a reference to another component by "
+"having the container \"inject\" the other component to a setter method or "
+"instance variable. In all dependency injection implementations that we have "
+"seen, injection occurs when the component is constructed, and the reference "
+"does not subsequently change for the lifetime of the component instance. For "
+"stateless components, this is reasonable. From the point of view of a "
+"client, all instances of a particular stateless component are "
+"interchangeable. On the other hand, Seam emphasizes the use of stateful "
+"components. So traditional dependency injection is no longer a very useful "
+"construct. Seam introduces the notion of <emphasis>bijection</emphasis> as a "
+"generalization of injection. In contrast to injection, bijection is:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:363
+#, no-c-format
+msgid ""
+"<emphasis>contextual</emphasis> - bijection is used to assemble stateful "
+"components from various different contexts (a component from a \"wider\" "
+"context may even have a reference to a component from a \"narrower\" context)"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:368
+#, no-c-format
+msgid ""
+"<emphasis>bidirectional</emphasis> - values are injected from context "
+"variables into attributes of the component being invoked, and also "
+"<emphasis>outjected</emphasis> from the component attributes back out to the "
+"context, allowing the component being invoked to manipulate the values of "
+"contextual variables simply by setting its own instance variables"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:373
+#, no-c-format
+msgid ""
+"<emphasis>dynamic</emphasis> - since the value of contextual variables "
+"changes over time, and since Seam components are stateful, bijection takes "
+"place every time a component is invoked"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:378
+#, no-c-format
+msgid ""
+"In essence, bijection lets you alias a context variable to a component "
+"instance variable, by specifying that the value of the instance variable is "
+"injected, outjected, or both. Of course, we use annotations to enable "
+"bijection."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:381
+#, no-c-format
+msgid ""
+"The <literal>@In</literal> annotation specifies that a value should be "
+"injected, either into an instance variable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:384
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:385
+#, no-c-format
+msgid "or into a setter method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:388
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @In\n"
+"    public void setUser(User user) {\n"
+"        this.user=user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:389
+#, no-c-format
+msgid ""
+"By default, Seam will do a priority search of all contexts, using the name "
+"of the property or instance variable that is being injected. You may wish to "
+"specify the context variable name explicitly, using, for example, "
+"<literal>@In(\"currentUser\")</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:392
+#, no-c-format
+msgid ""
+"If you want Seam to create an instance of the component when there is no "
+"existing component instance bound to the named context variable, you should "
+"specify <literal>@In(create=true)</literal>. If the value is optional (it "
+"can be null), specify <literal>@In(required=false)</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:395
+#, no-c-format
+msgid ""
+"For some components, it can be repetitive to have to specify <literal>@In"
+"(create=true)</literal> everywhere they are used. In such cases, you can "
+"annotate the component <literal>@AutoCreate</literal>, and then it will "
+"always be created, whenever needed, even without the explicit use of "
+"<literal>create=true</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:398
+#, no-c-format
+msgid "You can even inject the value of an expression:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:401
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In(\"#{user.username}\") String username;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:402
+#, no-c-format
+msgid ""
+"(There is much more information about component lifecycle and injection in "
+"the next chapter.)"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:405
+#, no-c-format
+msgid ""
+"The <literal>@Out</literal> annotation specifies that an attribute should be "
+"outjected, either from an instance variable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:408
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @Out User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:409
+#, no-c-format
+msgid "or from a getter method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:412
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @Out\n"
+"    public User getUser() {\n"
+"        return user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:413
+#, no-c-format
+msgid "An attribute may be both injected and outjected:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:416
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In @Out User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:417
+#, no-c-format
+msgid "<para>or:</para>"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:420
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @In\n"
+"    public void setUser(User user) {\n"
+"        this.user=user;\n"
+"    }\n"
+"    \n"
+"    @Out\n"
+"    public User getUser() {\n"
+"        return user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:421
+#, no-c-format
+msgid "Lifecycle methods"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:422
+#, no-c-format
+msgid ""
+"Session bean and entity bean Seam components support all the usual EJB 3.0 "
+"lifecycle callback (<literal>@PostConstruct</literal>, <literal>@PreDestroy</"
+"literal>, etc). Seam extends all of these callbacks except "
+"<literal>@PreDestroy</literal> to JavaBean components. But Seam also defines "
+"its own component lifecycle callbacks."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:425
+#, no-c-format
+msgid ""
+"The <literal>@Create</literal> method is called every time Seam instantiates "
+"a component. Unlike the <literal>@PostConstruct</literal> method, this "
+"method is called after the component is fully constructed by the EJB "
+"container, and has access to all the usual Seam functionality (bijection, "
+"etc). Components may define only one <literal>@Create</literal> method."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:428
+#, no-c-format
+msgid ""
+"The <literal>@Destroy</literal> method is called when the context that the "
+"Seam component is bound to ends. Components may define only one "
+"<literal>@Destroy</literal> method. Stateful session bean components "
+"<emphasis>must</emphasis> define a method annotated <literal>@Destroy "
+"@Remove</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:431
+#, no-c-format
+msgid ""
+"Finally, a related annotation is the <literal>@Startup</literal> annotation, "
+"which may be applied to any application or session scoped component. The "
+"<literal>@Startup</literal> annotation tells Seam to instantiate the "
+"component immediately, when the context begins, instead of waiting until it "
+"is first referenced by a client. It is possible to control the order of "
+"instantiation of startup components by specifying <literal>@Startup(depends="
+"{....})</literal>."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:434
+#, no-c-format
+msgid "Conditional installation"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:435
+#, no-c-format
+msgid ""
+"The <literal>@Install</literal> annotation lets you control conditional "
+"installation of components that are required in some deployment scenarios "
+"and not in others. This is useful if:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:440
+#, no-c-format
+msgid "You want to mock out some infrastructural component in tests."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:445
+#, no-c-format
+msgid ""
+"You want change the implementation of a component in certain deployment "
+"scenarios."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:450
+#, no-c-format
+msgid ""
+"You want to install some components only if their dependencies are available "
+"(useful for framework authors)."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:455
+#, no-c-format
+msgid ""
+"<literal>@Install</literal> works by letting you specify "
+"<emphasis>precedence</emphasis> and <emphasis>dependencies</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:458
+#, no-c-format
+msgid ""
+"The precedence of a component is a number that Seam uses to decide which "
+"component to install when there are multiple classes with the same component "
+"name in the classpath. Seam will choose the component with the higher "
+"precendence. There are some predefined precedence values:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:463
+#, no-c-format
+msgid ""
+"<literal>BUILT_IN</literal> &mdash; the lowest precedece components are the "
+"components built in to Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:468
+#, no-c-format
+msgid ""
+"<literal>FRAMEWORK</literal> &mdash; components defined by third-party "
+"frameworks may override built-in components, but are overridden by "
+"application components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:473
+#, no-c-format
+msgid ""
+"<literal>APPLICATION</literal> &mdash; the default precedence. This is "
+"appropriate for most application components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:478
+#, no-c-format
+msgid ""
+"<literal>DEPLOYMENT</literal> &mdash; for application components which are "
+"deployment-specific."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:483
+#, no-c-format
+msgid "<literal>MOCK</literal> &mdash; for mock objects used in testing."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:488
+#, no-c-format
+msgid ""
+"Suppose we have a component named <literal>messageSender</literal> that "
+"talks to a JMS queue."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:491
+#, no-c-format
+msgid ""
+"@Name(\"messageSender\") \n"
+"public class MessageSender {\n"
+"    public void sendMessage() {\n"
+"        //do something with JMS\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:492
+#, no-c-format
+msgid ""
+"In our unit tests, we don't have a JMS queue available, so we would like to "
+"stub out this method. We'll create a <emphasis>mock</emphasis> component "
+"that exists in the classpath when unit tests are running, but is never "
+"deployed with the application:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:495
+#, no-c-format
+msgid ""
+"@Name(\"messageSender\") \n"
+"@Install(precedence=MOCK)\n"
+"public class MockMessageSender extends MessageSender {\n"
+"    public void sendMessage() {\n"
+"        //do nothing!\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:496
+#, no-c-format
+msgid ""
+"The <literal>precedence</literal> helps Seam decide which version to use "
+"when it finds both components in the classpath."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:499
+#, no-c-format
+msgid ""
+"This is nice if we are able to control exactly which classes are in the "
+"classpath. But if I'm writing a reusable framework with many dependecies, I "
+"don't want to have to break that framework across many jars. I want to be "
+"able to decide which components to install depending upon what other "
+"components are installed, and upon what classes are available in the "
+"classpath. The <literal>@Install</literal> annotation also controls this "
+"functionality. Seam uses this mechanism internally to enable conditional "
+"installation of many of the built-in components. However, you probably won't "
+"need to use it in your application."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:502
+#, no-c-format
+msgid "Logging"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:503
+#, no-c-format
+msgid "Who is not totally fed up with seeing noisy code like this?"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:506
+#, no-c-format
+msgid ""
+"private static final Log log = LogFactory.getLog(CreateOrderAction.class);\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    if ( log.isDebugEnabled() ) {\n"
+"        log.debug(\"Creating new order for user: \" + user.username() + \n"
+"            \" product: \" + product.name() \n"
+"            + \" quantity: \" + quantity);\n"
+"    }\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:507
+#, no-c-format
+msgid ""
+"It is difficult to imagine how the code for a simple log message could "
+"possibly be more verbose. There is more lines of code tied up in logging "
+"than in the actual business logic! I remain totally astonished that the Java "
+"community has not come up with anything better in 10 years."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:510
+#, no-c-format
+msgid ""
+"Seam provides a logging API built on top of Apache commons-logging that "
+"simplifies this code significantly:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:513
+#, no-c-format
+msgid ""
+"@Logger private Log log;\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    log.debug(\"Creating new order for user: #0 product: #1 quantity: #2\", "
+"user.username(), \n"
+"       product.name(), quantity);\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:514
+#, no-c-format
+msgid ""
+"It doesn't matter if you declare the <literal>log</literal> variable static "
+"or not&mdash;it will work either way."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:517
+#, no-c-format
+msgid ""
+"Note that we don't need the noisy <literal>if ( log.isDebugEnabled() )</"
+"literal> guard, since string concatenation happens <emphasis>inside</"
+"emphasis> the <literal>debug()</literal> method. Note also that we don't "
+"usually need to specify the log category explicitly, since Seam knows what "
+"component it is injecting the <literal>Log</literal> into."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:520
+#, no-c-format
+msgid ""
+"If <literal>User</literal> and <literal>Product</literal> are Seam "
+"components available in the current contexts, it gets even better:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:523
+#, no-c-format
+msgid ""
+"@Logger private Log log;\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    log.debug(\"Creating new order for user: #{user.username} product: #"
+"{product.name}\n"
+"       quantity: #0\", quantity);\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:524
+#, no-c-format
+msgid ""
+"The <literal>Mutable</literal> interface and <literal>@ReadOnly</literal>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:525
+#, no-c-format
+msgid ""
+"Many application servers feature an amazingly broken implementation of "
+"<literal>HttpSession</literal> clustering, where changes to the state of "
+"mutable objects bound to the session are only replicated when the "
+"application calls <literal>setAttribute()</literal> explicitly. This is a "
+"source of bugs that can not effectively be tested for at development time, "
+"since they will only manifest when failover occurs. Furthermore, the actual "
+"replication message contains the entire serialized object graph bound to the "
+"session attribute, which is inefficient."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:528
+#, no-c-format
+msgid ""
+"Of course, EJB stateful session beans must perform automatic dirty checking "
+"and replication of mutable state and a sophisticated EJB container can "
+"introduce optimizations such as attribute-level replication. Unfortunately, "
+"not all Seam users have the good fortune to be working in an environment "
+"that supports EJB 3.0. So, for session and conversation scoped JavaBean and "
+"entity bean components, Seam provides an extra layer of cluster-safe state "
+"management over the top of the web container session clustering."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:531
+#, no-c-format
+msgid ""
+"For session or conversation scoped JavaBean components, Seam automatically "
+"forces replication to occur by calling <literal>setAttribute()</literal> "
+"once in every request that the component was invoked by the application. Of "
+"course, this strategy is inefficient for read-mostly components. You can "
+"control this behavior by implementing the <literal>org.jboss.seam.core."
+"Mutable</literal> interface, or by extending <literal>org.jboss.seam.core."
+"AbstractMutable</literal>, and writing your own dirty-checking logic inside "
+"the component. For example,"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:534
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class Account extends AbstractMutable\n"
+"{\n"
+"    private BigDecimal balance;\n"
+"    \n"
+"    public void setBalance(BigDecimal balance)\n"
+"    {\n"
+"        setDirty(this.balance, balance);\n"
+"        this.balance = balance;\n"
+"    }\n"
+"    \n"
+"    public BigDecimal getBalance()\n"
+"    {\n"
+"        return balance;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:535
+#, no-c-format
+msgid ""
+"Or, you can use the <literal>@ReadOnly</literal> annotation to achieve a "
+"similar effect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:538
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class Account\n"
+"{\n"
+"    private BigDecimal balance;\n"
+"    \n"
+"    public void setBalance(BigDecimal balance)\n"
+"    {\n"
+"        this.balance = balance;\n"
+"    }\n"
+"    \n"
+"    @ReadOnly\n"
+"    public BigDecimal getBalance()\n"
+"    {\n"
+"        return balance;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:539
+#, no-c-format
+msgid ""
+"For session or conversation scoped entity bean components, Seam "
+"automatically forces replication to occur by calling <literal>setAttribute()"
+"</literal> once in every request, <emphasis>unless the (conversation-scoped) "
+"entity is currently associated with a Seam-managed persistence context, in "
+"which case no replication is needed</emphasis>. This strategy is not "
+"necessarily efficient, so session or conversation scope entity beans should "
+"be used with care. You can always write a stateful session bean or JavaBean "
+"component to \"manage\" the entity bean instance. For example,"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:542
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"account\")\n"
+"public class AccountManager extends AbstractMutable\n"
+"{\n"
+"    private Account account; // an entity bean\n"
+"    \n"
+"    @Unwrap\n"
+"    public void getAccount()\n"
+"    {\n"
+"        return account;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:543
+#, no-c-format
+msgid ""
+"Note that the <literal>EntityHome</literal> class in the Seam Application "
+"Framework provides a great example of this pattern."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:546
+#, no-c-format
+msgid "Factory and manager components"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:547
+#, no-c-format
+msgid ""
+"We often need to work with objects that are not Seam components. But we "
+"still want to be able to inject them into our components using <literal>@In</"
+"literal> and use them in value and method binding expressions, etc. "
+"Sometimes, we even need to tie them into the Seam context lifecycle "
+"(<literal>@Destroy</literal>, for example). So the Seam contexts can contain "
+"objects which are not Seam components, and Seam provides a couple of nice "
+"features that make it easier to work with non-component objects bound to "
+"contexts."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:550
+#, no-c-format
+msgid ""
+"The <emphasis>factory component pattern</emphasis> lets a Seam component act "
+"as the instantiator for a non-component object. A <emphasis>factory method</"
+"emphasis> will be called when a context variable is referenced but has no "
+"value bound to it. We define factory methods using the <literal>@Factory</"
+"literal> annotation. The factory method binds a value to the context "
+"variable, and determines the scope of the bound value. There are two styles "
+"of factory method. The first style returns a value, which is bound to the "
+"context by Seam:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:553
+#, no-c-format
+msgid ""
+"@Factory(scope=CONVERSATION)\n"
+"public List&lt;Customer&gt; getCustomerList() { \n"
+"    return ... ;\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:554
+#, no-c-format
+msgid ""
+"The second style is a method of type <literal>void</literal> which binds the "
+"value to the context variable itself:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:557
+#, no-c-format
+msgid ""
+"@DataModel List&lt;Customer&gt; customerList;\n"
+"\n"
+"@Factory(\"customerList\")\n"
+"public void initCustomerList() { \n"
+"    customerList = ...  ;\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:558
+#, no-c-format
+msgid ""
+"In both cases, the factory method is called when we reference the "
+"<literal>customerList</literal> context variable and its value is null, and "
+"then has no further part to play in the lifecycle of the value. An even more "
+"powerful pattern is the <emphasis>manager component pattern</emphasis>. In "
+"this case, we have a Seam component that is bound to a context variable, "
+"that manages the value of the context variable, while remaining invisible to "
+"clients."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:561
+#, no-c-format
+msgid ""
+"A manager component is any component with an <literal>@Unwrap</literal> "
+"method. This method returns the value that will be visable to clients, and "
+"is called <emphasis>every time</emphasis> a context variable is referenced."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:564
+#, no-c-format
+msgid ""
+"@Name(\"customerList\")\n"
+"@Scope(CONVERSATION)\n"
+"public class CustomerListManager\n"
+"{\n"
+"    ...\n"
+"    \n"
+"    @Unwrap\n"
+"    public List&lt;Customer&gt; getCustomerList() { \n"
+"        return ... ;\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:565
+#, no-c-format
+msgid ""
+"This pattern is especially useful if we have some heavyweight object that "
+"needs a cleanup operation when the context ends. In this case, the manager "
+"component may perform cleanup in the <literal>@Destroy</literal> method."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Configuration.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Configuration.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Configuration.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1435 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Configuration.xml:10
+#, no-c-format
+msgid "Configuring Seam and packaging Seam applications"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:11
+#, no-c-format
+msgid ""
+"Configuration is a very boring topic and an extremely tedious pastime. "
+"Unfortunately, several lines of XML are required to integrate Seam into your "
+"JSF implementation and servlet container. There's no need to be too put off "
+"by the following sections; you'll never need to type any of this stuff "
+"yourself, since you can just copy and paste from the example applications!"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:14
+#, no-c-format
+msgid "Basic Seam configuration"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:15
+#, no-c-format
+msgid ""
+"First, let's look at the basic configuration that is needed whenever we use "
+"Seam with JSF."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:18
+#, no-c-format
+msgid "Integrating Seam with JSF and your servlet container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:19
+#, no-c-format
+msgid ""
+"Seam requires the following entry in your <literal>web.xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:22
+#, no-c-format
+msgid ""
+"&lt;listener&gt;\n"
+"    &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/listener-"
+"class&gt;\n"
+"&lt;/listener&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:23
+#, no-c-format
+msgid ""
+"This listener is responsible for bootstrapping Seam, and for destroying "
+"session and application contexts."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:26
+#, no-c-format
+msgid ""
+"To integrate with the JSF request lifecycle, we also need a JSF "
+"<literal>PhaseListener</literal> registered in in the <literal>faces-config."
+"xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:29
+#, no-c-format
+msgid ""
+"&lt;lifecycle&gt;\n"
+"    &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-"
+"listener&gt;\n"
+"&lt;/lifecycle&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:30
+#, no-c-format
+msgid ""
+"The actual listener class here varies depending upon how you want to manage "
+"transaction demarcation (more on this below)."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:33
+#, no-c-format
+msgid ""
+"If you are using Sun's JSF 1.2 reference implementation, you should also add "
+"this to <literal>faces-config.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:36
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;el-resolver&gt;org.jboss.seam.jsf.SeamELResolver&lt;/el-"
+"resolver&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:37
+#, no-c-format
+msgid ""
+"(This line should not strictly speaking be necessary, but it works around a "
+"minor bug in the RI.)"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:40
+#, no-c-format
+msgid ""
+"Some JSF implementations have a broken implementation of server-side state "
+"saving that interferes with Seam's conversation propagation. If you have "
+"problems with conversation propagation during form submissions, try "
+"switching to client-side state saving. You'll need this in <literal>web.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:43
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;client&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:44
+#, no-c-format
+msgid "Seam servlet filters"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:45
+#, no-c-format
+msgid ""
+"Seam doesn't need any servlet filters for basic operation. However, there "
+"are several features which depend upon the use of filters. To make things "
+"easier for you guys, Seam lets you add and configure servlet filters just "
+"like you would configure other built-in Seam components. To take advantage "
+"of this feature, we must first install a master filter in <literal>web.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:48
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;/*&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:49
+#, no-c-format
+msgid "Adding the master filter enables the following built-in filters."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:52
+#, no-c-format
+msgid "Exception handling"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:53
+#, no-c-format
+msgid ""
+"This filter provides the exception mapping functionality in <literal>pages."
+"xml</literal> (almost all applications will need this). It also takes care "
+"of rolling back uncommitted transactions when uncaught exceptions occur. "
+"(According to the Java EE specification, the web container should do this "
+"automatically, but we've found that this behavior cannot be relied upon in "
+"all application servers. And it is certainly not required of plain servlet "
+"engines like Tomcat.)"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:56
+#, no-c-format
+msgid ""
+"By default, the exception handling filter will process all requests, however "
+"this behavior may be adjusted by adding a <literal>&lt;web:exception-"
+"filter&gt;</literal> entry to <literal>components.xml</literal>, as shown in "
+"this example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:59
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:web=\"http://jboss.com/products/seam/web\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                    http://jboss.com/products/seam/core-1.2.xsd\n"
+"                 http://jboss.com/products/seam/components \n"
+"                     http://jboss.com/products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/web \n"
+"                     http://jboss.com/products/seam/web-1.2.xsd\"&gt;\n"
+"\n"
+"    &lt;web:exception-filter url-pattern=\"*.seam\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:62 Configuration.xml:77 Configuration.xml:99
+#: Configuration.xml:124
+#, no-c-format
+msgid ""
+"<literal>url-pattern</literal> &mdash; Used to specify which requests are "
+"filtered, the default is all requests."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:67
+#, no-c-format
+msgid "Conversation propagation with redirects"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:68
+#, no-c-format
+msgid ""
+"This filter allows Seam to propagate the conversation context across browser "
+"redirects. It intercepts any browser redirects and adds a request parameter "
+"that specifies the Seam conversation identifier."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:71
+#, no-c-format
+msgid ""
+"The redirect filter will process all requests by default, but this behavior "
+"can also be adjusted in <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:74
+#, no-c-format
+msgid "&lt;web:redirect-filter url-pattern=\"*.seam\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:82
+#, no-c-format
+msgid "Multipart form submissions"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:83
+#, no-c-format
+msgid ""
+"This feature is necessary when using the Seam file upload JSF control. It "
+"detects multipart form requests and processes them according to the "
+"multipart/form-data specification (RFC-2388). To override the default "
+"settings, add the following entry to <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:86
+#, no-c-format
+msgid ""
+"&lt;web:multipart-filter create-temp-files=\"true\" \n"
+"        max-request-size=\"1000000\" \n"
+"        url-pattern=\"*.seam\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:89
+#, no-c-format
+msgid ""
+"<literal>create-temp-files</literal> &mdash; If set to <literal>true</"
+"literal>, uploaded files are written to a temporary file (instead of held in "
+"memory). This may be an important consideration if large file uploads are "
+"expected. The default setting is <literal>false</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:94
+#, no-c-format
+msgid ""
+"<literal>max-request-size</literal> &mdash; If the size of a file upload "
+"request (determined by reading the <literal>Content-Length</literal> header "
+"in the request) exceeds this value, the request will be aborted. The default "
+"setting is 0 (no size limit)."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:104
+#, no-c-format
+msgid "Character encoding"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:105
+#, no-c-format
+msgid "Sets the character encoding of submitted form data."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:108 Configuration.xml:136
+#, no-c-format
+msgid ""
+"This filter is not installed by default and requires an entry in "
+"<literal>components.xml</literal> to enable it:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:111
+#, no-c-format
+msgid ""
+"&lt;web:character-encoding-filter encoding=\"UTF-16\" \n"
+"        override-client=\"true\" \n"
+"        url-pattern=\"*.seam\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:114
+#, no-c-format
+msgid "<literal>encoding</literal> &mdash; The encoding to use."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:119
+#, no-c-format
+msgid ""
+"<literal>override-client</literal> &mdash; If this is set to <literal>true</"
+"literal>, the request encoding will be set to whatever is specified by "
+"<literal>encoding</literal> no matter whether the request already specifies "
+"an encoding or not. If set to <literal>false</literal>, the request encoding "
+"will only be set if the request doesn't already specify an encoding. The "
+"default setting is <literal>false</literal>."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:129
+#, no-c-format
+msgid "Context management for custom servlets"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:130
+#, no-c-format
+msgid ""
+"Requests sent direct to some servlet other than the JSF servlet are not "
+"processed through the JSF lifecycle, so Seam provides a servlet filter that "
+"can be applied to any other servlet that needs access to Seam components."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:133
+#, no-c-format
+msgid ""
+"This filter allows custom servlets to interact with the Seam contexts. It "
+"sets up the Seam contexts at the beginning of each request, and tears them "
+"down at the end of the request. You should make sure that this filter is "
+"<emphasis>never</emphasis> applied to the JSF <literal>FacesServlet</"
+"literal>. Seam uses the phase listener for context management in a JSF "
+"request."
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:139
+#, no-c-format
+msgid "&lt;web:context-filter url-pattern=\"/media/*\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:142
+#, no-c-format
+msgid ""
+"<literal>url-pattern</literal> &mdash; Used to specify which requests are "
+"filtered, the default is all requests. If the url-pattern is specified for "
+"the context filter, then the filter will be enabled (unless explicitly "
+"disabled)."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:147
+#, no-c-format
+msgid ""
+"The context filter expects to find the conversation id of any conversation "
+"context in a request parameter named <literal>conversationId</literal>. You "
+"are responsible for ensuring that it gets sent in the request."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:150
+#, no-c-format
+msgid ""
+"You are also responsible for ensuring propagation of any new conversation id "
+"back to the client. Seam exposes the conversation id as a property of the "
+"built in component <literal>conversation</literal>."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:153
+#, no-c-format
+msgid "Integrating Seam with your EJB container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:154
+#, no-c-format
+msgid ""
+"We need to apply the <literal>SeamInterceptor</literal> to our Seam "
+"components. The simplest way to do this is to add the following interceptor "
+"binding to the <literal>&lt;assembly-descriptor&gt;</literal> in "
+"<literal>ejb-jar.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:157
+#, no-c-format
+msgid ""
+"&lt;interceptor-binding&gt;\n"
+"    &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"    &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"&lt;/interceptor-binding&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:158
+#, no-c-format
+msgid ""
+"Seam needs to know where to go to find session beans in JNDI. One way to do "
+"this is specify the <literal>@JndiName</literal> annotation on every session "
+"bean Seam component. However, this is quite tedious. A better approach is to "
+"specify a pattern that Seam can use to calculate the JNDI name from the EJB "
+"name. Unfortunately, there is no standard mapping to global JNDI defined in "
+"the EJB3 specification, so this mapping is vendor-specific. We usually "
+"specify this option in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:161
+#, no-c-format
+msgid "For JBoss AS, the following pattern is correct:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:164
+#, no-c-format
+msgid "&lt;core:init jndi-name=\"myEarName/#{ejbName}/local\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:165
+#, no-c-format
+msgid ""
+"Where <literal>myEarName</literal> is the name of the EAR in which the bean "
+"is deployed."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:168
+#, no-c-format
+msgid ""
+"Outside the context of an EAR (when using the JBoss Embeddable EJB3 "
+"container), the following pattern is the one to use:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:171
+#, no-c-format
+msgid "&lt;core:init jndi-name=\"#{ejbName}/local\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:172
+#, no-c-format
+msgid ""
+"You'll have to experiment to find the right setting for other application "
+"servers. Note that some servers (such as GlassFish) require you to specify "
+"JNDI names for all EJB components explicitly (and tediously). In this case, "
+"you can pick your own pattern ;-)"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:175
+#, no-c-format
+msgid "Using facelets"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:176
+#, no-c-format
+msgid ""
+"If you want follow our advice and use facelets instead of JSP, add the "
+"following lines to <literal>faces-config.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:179
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;view-handler&gt;com.sun.facelets.FaceletViewHandler&lt;/view-"
+"handler&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:180
+#, no-c-format
+msgid "And the following lines to <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:183
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;javax.faces.DEFAULT_SUFFIX&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;.xhtml&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:184
+#, no-c-format
+msgid "Don't forget!"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:185
+#, no-c-format
+msgid ""
+"There is one final item you need to know about. You must place a "
+"<literal>seam.properties</literal>, <literal>META-INF/seam.properties</"
+"literal> or <literal>META-INF/components.xml</literal> file in any archive "
+"in which your Seam components are deployed (even an empty properties file "
+"will do). At startup, Seam will scan any archives with <literal>seam."
+"properties</literal> files for seam components."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:188
+#, no-c-format
+msgid ""
+"That's why all the Seam examples have an empty <literal>seam.properties</"
+"literal> file. You can't just delete this file and expect everything to "
+"still work!"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:191
+#, no-c-format
+msgid ""
+"You might think this is silly and what kind of idiot framework designers "
+"would make an empty file affect the behavior of their software?? Well, this "
+"is a workaround for a limitation of the JVM&mdash;if we didn't use this "
+"mechanism, our next best option would be to force you to list every "
+"component explicitly in <literal>components.xml</literal>, just like some "
+"other competing frameworks do! I think you'll like our way better."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:195
+#, no-c-format
+msgid "Configuring Seam in Java EE 5"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:204
+#, no-c-format
+msgid ""
+"If you're running in a Java EE 5 environment, this is all the configuration "
+"required to start using Seam!"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:207 Configuration.xml:270 Configuration.xml:318
+#: Configuration.xml:354 Configuration.xml:371
+#, no-c-format
+msgid "Packaging"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:208
+#, no-c-format
+msgid ""
+"Once you've packaged all this stuff together into an EAR, the archive "
+"structure will look something like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:211
+#, no-c-format
+msgid ""
+"my-application.ear/\n"
+"    jboss-seam.jar\n"
+"    el-api.jar\n"
+"    el-ri.jar\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"        application.xml\n"
+"    my-application.war/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"        WEB-INF/\n"
+"            web.xml\n"
+"            components.xml\n"
+"            faces-config.xml\n"
+"            lib/\n"
+"                jsf-facelets.jar\n"
+"                jboss-seam-ui.jar\n"
+"        login.jsp\n"
+"        register.jsp\n"
+"        ...\n"
+"    my-application.jar/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"            persistence.xml\n"
+"        seam.properties\n"
+"        org/\n"
+"            jboss/\n"
+"                myapplication/\n"
+"                    User.class\n"
+"                    Login.class\n"
+"                    LoginBean.class\n"
+"                    Register.class\n"
+"                    RegisterBean.class\n"
+"                    ..."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:212
+#, no-c-format
+msgid ""
+"You must include <literal>jboss-seam.jar</literal>, <literal>el-api.jar</"
+"literal> and <literal>el-ri.jar</literal> in the EAR classpath. Make sure "
+"you reference all of these jars from <literal>application.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:215
+#, no-c-format
+msgid ""
+"If you want to use jBPM or Drools, you must include the needed jars in the "
+"EAR classpath. Make sure you reference all of the jars from "
+"<literal>application.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:218
+#, no-c-format
+msgid ""
+"If you want to use facelets (our recommendation), you must include "
+"<literal>jsf-facelets.jar</literal> in the <literal>WEB-INF/lib</literal> "
+"directory of the WAR."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:221
+#, no-c-format
+msgid ""
+"If you want to use the Seam tag library (most Seam applications do), you "
+"must include <literal>jboss-seam-ui.jar</literal> in the <literal>WEB-INF/"
+"lib</literal> directory of the WAR. If you want to use the PDF or email tag "
+"libraries, you need to put <literal>jboss-seam-pdf.jar</literal> or "
+"<literal>jboss-seam-mail.jar</literal> in <literal>WEB-INF/lib</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:224
+#, no-c-format
+msgid ""
+"If you want to use the Seam debug page (only works for applications using "
+"facelets), you must include <literal>jboss-seam-debug.jar</literal> in the "
+"<literal>WEB-INF/lib</literal> directory of the WAR."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:227
+#, no-c-format
+msgid ""
+"Seam ships with several example applications that are deployable in any Java "
+"EE container that supports EJB 3.0."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:231
+#, no-c-format
+msgid "Configuring Seam in Java SE, with the JBoss Embeddable EJB3 container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:232
+#, no-c-format
+msgid ""
+"The JBoss Embeddable EJB3 container lets you run EJB3 components outside the "
+"context of the Java EE 5 application server. This is especially, but not "
+"only, useful for testing."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:235
+#, no-c-format
+msgid ""
+"The Seam booking example application includes a TestNG integration test "
+"suite that runs on the Embeddable EJB3 container."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:246
+#, no-c-format
+msgid "The booking example application may even be deployed to Tomcat."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:257
+#, no-c-format
+msgid "Installing the Embeddable EJB3 container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:258
+#, no-c-format
+msgid ""
+"Seam ships with a build of the Embeddable EJB3 container in the "
+"<literal>embedded-ejb</literal> directory. To use the Embeddable EJB3 "
+"container with Seam, add the <literal>embedded-ejb/conf</literal> directory, "
+"and all jars in the <literal>lib</literal> and <literal>embedded-ejb/lib</"
+"literal> directories to your classpath. Then, add the following line to "
+"<literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:261
+#, no-c-format
+msgid "&lt;core:ejb /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:262
+#, no-c-format
+msgid ""
+"This setting installs the built-in component named <literal>org.jboss.seam."
+"core.ejb</literal>. This component is responsible for bootstrapping the EJB "
+"container when Seam is started, and shutting it down when the web "
+"application is undeployed."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:265
+#, no-c-format
+msgid "Configuring a datasource with the Embeddable EJB3 container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:266
+#, no-c-format
+msgid ""
+"You should refer to the Embeddable EJB3 container documentation for more "
+"information about configuring the container. You'll probably at least need "
+"to set up your own datasource. Embeddable EJB3 is implemented using the "
+"JBoss Microcontainer, so it's very easy to add new services to the minimal "
+"set of services provided by default. For example, I can add a new datasource "
+"by putting this <literal>jboss-beans.xml</literal> file in my classpath:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:269
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"\n"
+"&lt;deployment xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"urn:jboss:bean-deployer bean-deployer_1_0."
+"xsd\"\n"
+"            xmlns=\"urn:jboss:bean-deployer\"&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasourceBootstrap\"\n"
+"        class=\"org.jboss.resource.adapter.jdbc.local.LocalTxDataSource"
+"\"&gt;\n"
+"      &lt;property name=\"driverClass\"&gt;org.hsqldb.jdbcDriver&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"connectionURL\"&gt;jdbc:hsqldb:.&lt;/property&gt;\n"
+"      &lt;property name=\"userName\"&gt;sa&lt;/property&gt;\n"
+"      &lt;property name=\"jndiName\"&gt;java:/bookingDatasource&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"minSize\"&gt;0&lt;/property&gt;\n"
+"      &lt;property name=\"maxSize\"&gt;10&lt;/property&gt;\n"
+"      &lt;property name=\"blockingTimeout\"&gt;1000&lt;/property&gt;\n"
+"      &lt;property name=\"idleTimeout\"&gt;100000&lt;/property&gt;\n"
+"      &lt;property name=\"transactionManager\"&gt;\n"
+"        &lt;inject bean=\"TransactionManager\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"      &lt;property name=\"cachedConnectionManager\"&gt;\n"
+"        &lt;inject bean=\"CachedConnectionManager\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"      &lt;property name=\"initialContextProperties\"&gt;\n"
+"        &lt;inject bean=\"InitialContextProperties\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasource\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getDatasource\"&gt;\n"
+"         &lt;factory bean=\"bookingDatasourceBootstrap\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"&lt;/deployment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:271
+#, no-c-format
+msgid ""
+"The archive structure of a WAR-based deployment on an servlet engine like "
+"Tomcat will look something like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:274
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            myfaces-api.jar\n"
+"            myfaces-impl.jar\n"
+"            jboss-ejb3.jar\n"
+"            jboss-jca.jar\n"
+"            jboss-j2ee.jar\n"
+"            ...\n"
+"            mc-conf.jar/\n"
+"                ejb3-interceptors-aop.xml\n"
+"                embedded-jboss-beans.xml\n"
+"                default.persistence.properties\n"
+"                jndi.properties\n"
+"                login-config.xml\n"
+"                security-beans.xml\n"
+"                log4j.xml\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                    MANIFEST.MF\n"
+"                    persistence.xml\n"
+"                    jboss-beans.xml\n"
+"                log4j.xml\n"
+"                seam.properties\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            LoginBean.class\n"
+"                            Register.class\n"
+"                            RegisterBean.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:275
+#, no-c-format
+msgid ""
+"The <literal>mc-conf.jar</literal> just contains the standard JBoss "
+"Microcontainer configuration files for Embeddable EJB3. You won't usually "
+"need to edit these files yourself."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:278
+#, no-c-format
+msgid ""
+"Most of the Seam example applications may be deployed to Tomcat by running "
+"<literal>ant deploy.tomcat</literal>."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:281
+#, no-c-format
+msgid "Configuring Seam in J2EE"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:282
+#, no-c-format
+msgid ""
+"Seam is useful even if you're not yet ready to take the plunge into EJB 3.0. "
+"In this case you would use Hibernate3 or JPA instead of EJB 3.0 persistence, "
+"and plain JavaBeans instead of session beans. You'll miss out on some of the "
+"nice features of session beans but it will be very easy to migrate to EJB "
+"3.0 when you're ready and, in the meantime, you'll be able to take advantage "
+"of Seam's unique declarative state management architecture."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:293
+#, no-c-format
+msgid ""
+"Seam JavaBean components do not provide declarative transaction demarcation "
+"like session beans do. You <emphasis>could</emphasis> manage your "
+"transactions manually using the JTA <literal>UserTransaction</literal> (you "
+"could even implement your own declarative transaction management in a Seam "
+"interceptor). But most applications will use Seam managed transactions when "
+"using Hibernate with JavaBeans. Follow the instructions in the persistence "
+"chapter to install <literal>TransactionalSeamPhaseListener</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:296
+#, no-c-format
+msgid ""
+"The Seam distribution includes a version of the booking example application "
+"that uses Hibernate3 and JavaBeans instead of EJB3, and another version that "
+"uses JPA and JavaBeans. These example applications are ready to deploy into "
+"any J2EE application server."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:299
+#, no-c-format
+msgid ""
+"If we want to deploy Hibernate in a non-J2EE environment like Tomcat or "
+"TestNG, we need to do a little bit more work."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:302
+#, no-c-format
+msgid "Boostrapping Hibernate in Seam"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:303
+#, no-c-format
+msgid ""
+"Seam will bootstrap a Hibernate <literal>SessionFactory</literal> from your "
+"<literal>hibernate.cfg.xml</literal> file if you install a built-in "
+"component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:306
+#, no-c-format
+msgid ""
+"&lt;core:hibernate-session-factory name=\"hibernateSessionFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:307
+#, no-c-format
+msgid ""
+"You will also need to configure a <emphasis>managed session</emphasis> if "
+"you want a Seam managed Hibernate <literal>Session</literal> to be available "
+"via injection."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:310
+#, no-c-format
+msgid "Boostrapping JPA in Seam"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:311
+#, no-c-format
+msgid ""
+"Seam will bootstrap a JPA <literal>EntityManagerFactory</literal> from your "
+"<literal>persistence.xml</literal> file if you install this built-in "
+"component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:314
+#, no-c-format
+msgid "&lt;core:entity-manager-factory name=\"entityManagerFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:315
+#, no-c-format
+msgid ""
+"You will also need to configure a <emphasis>managed persistencece context</"
+"emphasis> if you want a Seam managed JPA <literal>EntityManager</literal> to "
+"be available via injection."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:319
+#, no-c-format
+msgid "We can package our application as a WAR, in the following structure:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:322
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            hibernate3.jar\n"
+"            hibernate-annotations.jar\n"
+"            ...\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                   MANIFEST.MF\n"
+"                seam.properties\n"
+"                hibernate.cfg.xml\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            Register.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:324
+#, no-c-format
+msgid "Configuring Seam in Java SE, with the JBoss Microcontainer"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:325
+#, no-c-format
+msgid ""
+"The Seam support for Hibernate and JPA requires JTA and a JCA datasource. If "
+"you are running in a non-EE environment like Tomcat or TestNG you can run "
+"these services, and Hibernate itself, in the JBoss Microcontainer."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:328
+#, no-c-format
+msgid ""
+"You can even deploy the Hibernate and JPA versions of the booking example in "
+"Tomcat."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:339
+#, no-c-format
+msgid ""
+"Seam ships with an example Microcontainer configuration in "
+"<literal>microcontainer/conf/jboss-beans.xml</literal> that provides all the "
+"things you need to run Seam with Hibernate in any non-EE environment. Just "
+"add the <literal>microcontainer/conf</literal> directory, and all jars in "
+"the <literal>lib</literal> and <literal>microcontainer/lib</literal> "
+"directories to your classpath. Refer to the documentation for the JBoss "
+"Microcontainer for more information."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:342
+#, no-c-format
+msgid "Using Hibernate and the JBoss Microcontainer"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:343
+#, no-c-format
+msgid ""
+"The built-in Seam component named <literal>org.jboss.seam.core."
+"microcontainer</literal> bootstraps the microcontainer. As before, we "
+"probably want to use a Seam managed session."
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:346
+#, no-c-format
+msgid ""
+"&lt;core:microcontainer/&gt;\n"
+"\n"
+"&lt;core:managed-hibernate-session name=\"bookingDatabase\" auto-create="
+"\"true\"\n"
+"    session-factory-jndi-name=\"java:/bookingSessionFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:347
+#, no-c-format
+msgid ""
+"Where <literal>java:/bookingSessionFactory</literal> is the name of the "
+"Hibernate session factory specified in <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:350
+#, no-c-format
+msgid ""
+"You'll need to provide a <literal>jboss.beans.xml</literal> file that "
+"installs JNDI, JTA, your JCA datasource and Hibernate into the "
+"microcontainer:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:353
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"\n"
+"&lt;deployment xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"urn:jboss:bean-deployer bean-deployer_1_0."
+"xsd\"\n"
+"            xmlns=\"urn:jboss:bean-deployer\"&gt;\n"
+"\n"
+"   &lt;bean name=\"Naming\" class=\"org.jnp.server.SingletonNamingServer\"/"
+"&gt;\n"
+"\n"
+"   &lt;bean name=\"TransactionManagerFactory\"\n"
+"       class=\"org.jboss.seam.microcontainer.TransactionManagerFactory\"/"
+"&gt;\n"
+"   &lt;bean name=\"TransactionManager\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getTransactionManager\"&gt;\n"
+"         &lt;factory bean=\"TransactionManagerFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasourceFactory\" class=\"org.jboss.seam."
+"microcontainer.DataSourceFactory\"&gt;\n"
+"      &lt;property name=\"driverClass\"&gt;org.hsqldb.jdbcDriver&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"connectionUrl\"&gt;jdbc:hsqldb:.&lt;/property&gt;\n"
+"      &lt;property name=\"userName\"&gt;sa&lt;/property&gt;\n"
+"      &lt;property name=\"jndiName\"&gt;java:/hibernateDatasource&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"minSize\"&gt;0&lt;/property&gt;\n"
+"      &lt;property name=\"maxSize\"&gt;10&lt;/property&gt;\n"
+"      &lt;property name=\"blockingTimeout\"&gt;1000&lt;/property&gt;\n"
+"      &lt;property name=\"idleTimeout\"&gt;100000&lt;/property&gt;\n"
+"      &lt;property name=\"transactionManager\"&gt;&lt;inject bean="
+"\"TransactionManager\"/&gt;&lt;/property&gt;\n"
+"   &lt;/bean&gt;\n"
+"   &lt;bean name=\"bookingDatasource\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getDataSource\"&gt;\n"
+"         &lt;factory bean=\"bookingDatasourceFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingSessionFactoryFactory\"\n"
+"       class=\"org.jboss.seam.microcontainer.HibernateFactory\"/&gt;\n"
+"   &lt;bean name=\"bookingSessionFactory\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getSessionFactory\"&gt;\n"
+"         &lt;factory bean=\"bookingSessionFactoryFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"      &lt;depends&gt;bookingDatasource&lt;/depends&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"&lt;/deployment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:355
+#, no-c-format
+msgid "The WAR could have the following structure:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:358
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            hibernate3.jar\n"
+"            ...\n"
+"            jboss-microcontainer.jar\n"
+"            jboss-jca.jar\n"
+"            ...\n"
+"            myfaces-api.jar\n"
+"            myfaces-impl.jar\n"
+"            mc-conf.jar/\n"
+"                jndi.properties\n"
+"                log4j.xml\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                    MANIFEST.MF\n"
+"                    jboss-beans.xml\n"
+"                seam.properties\n"
+"                hibernate.cfg.xml\n"
+"                log4j.xml\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            Register.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:359
+#, no-c-format
+msgid "Configuring jBPM in Seam"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:360
+#, no-c-format
+msgid ""
+"Seam's jBPM integration is not installed by default, so you'll need to "
+"enable jBPM by installing a built-in component. You'll also need to "
+"explicitly list your process and pageflow definitions. In "
+"<literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:363
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:pageflow-definitions&gt;\n"
+"        &lt;value&gt;createDocument.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;editDocument.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;approveDocument.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:pageflow-definitions&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;documentLifecycle.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:364
+#, no-c-format
+msgid ""
+"No further special configuration is needed if you only have pageflows. If "
+"you do have business process definitions, you need to provide a jBPM "
+"configuration, and a Hibernate configuration for jBPM. The Seam DVD Store "
+"demo includes example <literal>jbpm.cfg.xml</literal> and <literal>hibernate."
+"cfg.xml</literal> files that will work with Seam:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:367
+#, no-c-format
+msgid ""
+"&lt;jbpm-configuration&gt;\n"
+"\n"
+"  &lt;jbpm-context&gt;\n"
+"    &lt;service name=\"persistence\"&gt;\n"
+"       &lt;factory&gt;\n"
+"          &lt;bean class=\"org.jbpm.persistence.db."
+"DbPersistenceServiceFactory\"&gt;\n"
+"             &lt;field name=\"isTransactionEnabled\"&gt;&lt;false/&gt;&lt;/"
+"field&gt;\n"
+"          &lt;/bean&gt;\n"
+"       &lt;/factory&gt;\n"
+"    &lt;/service&gt;\n"
+"    &lt;service name=\"message\" factory=\"org.jbpm.msg.db."
+"DbMessageServiceFactory\" /&gt;\n"
+"    &lt;service name=\"scheduler\" factory=\"org.jbpm.scheduler.db."
+"DbSchedulerServiceFactory\" /&gt;\n"
+"    &lt;service name=\"logging\" factory=\"org.jbpm.logging.db."
+"DbLoggingServiceFactory\" /&gt;\n"
+"    &lt;service name=\"authentication\" \n"
+"        factory=\"org.jbpm.security.authentication."
+"DefaultAuthenticationServiceFactory\" /&gt;\n"
+"  &lt;/jbpm-context&gt;\n"
+"\n"
+"&lt;/jbpm-configuration&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:368
+#, no-c-format
+msgid ""
+"The most important thing to notice here is that jBPM transaction control is "
+"disabled. Seam or EJB3 should control the JTA transactions."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:372
+#, no-c-format
+msgid ""
+"There is not yet any well-defined packaging format for jBPM configuration "
+"and process/pageflow definition files. In the Seam examples we've decided to "
+"simply package all these files into the root of the EAR. In future, we will "
+"probably design some other standard packaging format. So the EAR looks "
+"something like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:375
+#, no-c-format
+msgid ""
+"my-application.ear/\n"
+"    jboss-seam.jar\n"
+"    el-api.jar\n"
+"    el-ri.jar\n"
+"    jbpm-3.1.jar\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"        application.xml\n"
+"    my-application.war/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"        WEB-INF/\n"
+"            web.xml\n"
+"            components.xml\n"
+"            faces-config.xml\n"
+"            lib/\n"
+"                jsf-facelets.jar\n"
+"                jboss-seam-ui.jar\n"
+"        login.jsp\n"
+"        register.jsp\n"
+"        ...\n"
+"    my-application.jar/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"            persistence.xml\n"
+"        seam.properties\n"
+"        org/\n"
+"            jboss/\n"
+"                myapplication/\n"
+"                    User.class\n"
+"                    Login.class\n"
+"                    LoginBean.class\n"
+"                    Register.class\n"
+"                    RegisterBean.class\n"
+"                    ...\n"
+"    jbpm.cfg.xml\n"
+"    hibernate.cfg.xml\n"
+"    createDocument.jpdl.xml\n"
+"    editDocument.jpdl.xml\n"
+"    approveDocument.jpdl.xml\n"
+"    documentLifecycle.jpdl.xml"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:376
+#, no-c-format
+msgid ""
+"Remember to add <literal>jbpm-3.1.jar</literal> to the manifest of your EJB-"
+"JAR and WAR."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:379
+#, no-c-format
+msgid "Configuring Seam in a Portal"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:380
+#, no-c-format
+msgid ""
+"To run a Seam application as a portlet, you'll need to provide certain "
+"portlet metadata (<literal>portlet.xml</literal>, etc) in addition to the "
+"usual Java EE metadata. See the <literal>examples/portal</literal> directory "
+"for an example of the booking demo preconfigured to run on JBoss Portal."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:383
+#, no-c-format
+msgid ""
+"In addition, you'll need to use a portlet-specific phase listener instead of "
+"<literal>SeamPhaseListener</literal> or "
+"<literal>TransactionalSeamPhaseListener</literal>. The "
+"<literal>SeamPortletPhaseListener</literal> and "
+"<literal>TransactionalSeamPortletPhaseListener</literal> are adapted to the "
+"portlet lifecycle. I would like to offer my sincerest apologies for the name "
+"of that last class. I really couldn't think of anything better. Sorry."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Controls.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Controls.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Controls.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,591 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Controls.xml:10
+#, no-c-format
+msgid "Seam JSF controls"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:11
+#, no-c-format
+msgid ""
+"Seam includes a number of JSF controls that are useful for working with "
+"Seam. These are intended to complement the built-in JSF controls, and "
+"controls from other third-party libraries. We recommend the Ajax4JSF and ADF "
+"faces (now Trinidad) tag libraries for use with Seam. We do not recommend "
+"the use of the Tomahawk tag library."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:14
+#, no-c-format
+msgid "The ui example demonstrates the use of a number of these tags."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:19
+#, no-c-format
+msgid "&lt;s:validate&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:21
+#, no-c-format
+msgid ""
+"Validate a JSF input field against the bound property using Hibernate "
+"Validator."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:27
+#, no-c-format
+msgid "&lt;s:validateAll&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:29
+#, no-c-format
+msgid ""
+"Validate all child JSF input fields against the bound propertys using "
+"Hibernate Validator."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:35
+#, no-c-format
+msgid "&lt;s:formattedText&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:37
+#, no-c-format
+msgid "Output <emphasis>Seam Text</emphasis>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:43
+#, no-c-format
+msgid "&lt;s:convertDateTime&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:45
+#, no-c-format
+msgid "Perform date or time conversions in the Seam timezone."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:51
+#, no-c-format
+msgid "&lt;s:convertEnum&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:53
+#, no-c-format
+msgid ""
+"Assigns an enum converter to the current component. This is primarily useful "
+"for radio button and dropdown controls."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:59
+#, no-c-format
+msgid "&lt;s:enumItem&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:61
+#, no-c-format
+msgid "Creates a <literal>SelectItem</literal> from an enum value."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:66
+#, no-c-format
+msgid ""
+"<literal>enumValue</literal> &mdash; the string representation of the enum "
+"value."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:71
+#, no-c-format
+msgid ""
+"<literal>label</literal> &mdash; the label to be used when rendering the "
+"<literal>SelectItem</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:79
+#, no-c-format
+msgid "&lt;s:selectItems&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:81
+#, no-c-format
+msgid ""
+"Creates a <literal>List&lt;SelectItem&gt;</literal> from a List, Set, "
+"DataModel or Array."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:86
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; an EL expression specifying the data that "
+"backs the <literal>List&lt;SelectItem&gt;</literal>"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:91
+#, no-c-format
+msgid ""
+"<literal>var</literal> &mdash; defines the name of the local variable that "
+"holds the current object during iteration"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:96
+#, no-c-format
+msgid ""
+"<literal>label</literal> &mdash; the label to be used when rendering the "
+"<literal>SelectItem</literal>. Can reference the <literal>var</literal> "
+"variable"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:101
+#, no-c-format
+msgid ""
+"<literal>disabled</literal> &mdash; if true the <literal>SelectItem</"
+"literal> will be rendered disabled. Can reference the <literal>var</literal> "
+"variable"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:106
+#, no-c-format
+msgid ""
+"<literal>noSelectionLabel</literal> &mdash; specifies the (optional) label "
+"to place at the top of list (if <literal>required=\"true\"</literal> is also "
+"specified then selecting this value will cause a validation error)"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:111
+#, no-c-format
+msgid ""
+"<literal>hideNoSelectionLabel</literal> &mdash; if true, the "
+"<literal>noSelectionLabel</literal> will be hidden when a value is selected"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:119
+#, no-c-format
+msgid "&lt;s:decorate&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:121
+#, no-c-format
+msgid "\"Decorate\" a JSF input field when validation fails."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:127
+#, no-c-format
+msgid "&lt;s:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:129
+#, no-c-format
+msgid "\"Decorate\" a JSF input field with the validation error message."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:135
+#, no-c-format
+msgid "&lt;s:span&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:137
+#, no-c-format
+msgid "Render a HTML <literal>&lt;span&gt;</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:143
+#, no-c-format
+msgid "&lt;s:div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:145
+#, no-c-format
+msgid "Render a HTML <literal>&lt;div&gt;</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:151
+#, no-c-format
+msgid "&lt;s:fragment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:153
+#, no-c-format
+msgid ""
+"A non-rendering component useful for enabling/disabling rendering of it's "
+"children"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:159
+#, no-c-format
+msgid "&lt;s:cache&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:161
+#, no-c-format
+msgid ""
+"Cache the rendered page fragment using JBoss Cache. Note that <literal>&lt;s:"
+"cache&gt;</literal> actually uses the instance of JBoss Cache managed by the "
+"built-in <literal>pojoCache</literal> component."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:166
+#, no-c-format
+msgid ""
+"<literal>key</literal> &mdash; the key to cache rendered content, often a "
+"value expression. For example, if we were caching a page fragment that "
+"displays a document, we might use <literal>key=\"Document-#{document.id}\"</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:171
+#, no-c-format
+msgid ""
+"<literal>enabled</literal> &mdash; a value expression that determines if the "
+"cache should be used."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:176
+#, no-c-format
+msgid ""
+"<literal>region</literal> &mdash; a JBoss Cache node to use (different nodes "
+"can have different expiry policies)."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:184
+#, no-c-format
+msgid "&lt;s:link&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:186
+#, no-c-format
+msgid ""
+"A link that supports invocation of an action with control over conversation "
+"propagation. <emphasis>Does not submit the form.</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:191 Controls.xml:236
+#, no-c-format
+msgid "<literal>value</literal> &mdash; the label."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:196 Controls.xml:241
+#, no-c-format
+msgid ""
+"<literal>action</literal> &mdash; a method binding that specified the action "
+"listener."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:201 Controls.xml:246
+#, no-c-format
+msgid "<literal>view</literal> &mdash; the JSF view id to link to."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:206 Controls.xml:251
+#, no-c-format
+msgid "<literal>fragment</literal> &mdash; the fragment identifier to link to."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:211 Controls.xml:256
+#, no-c-format
+msgid "<literal>disabled</literal> &mdash; is the link disabled?"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:216 Controls.xml:261 Controls.xml:301
+#, no-c-format
+msgid ""
+"<literal>propagation</literal> &mdash; determines the conversation "
+"propagation style: <literal>begin</literal>, <literal>join</literal>, "
+"<literal>nest</literal>, <literal>none</literal> or <literal>end</literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:221 Controls.xml:266 Controls.xml:306
+#, no-c-format
+msgid ""
+"<literal>pageflow</literal> &mdash; a pageflow definition to begin. (This is "
+"only useful when <literal>propagation=\"begin\"</literal> or "
+"<literal>propagation=\"join\"</literal>.)"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:229
+#, no-c-format
+msgid "&lt;s:button&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:231
+#, no-c-format
+msgid ""
+"A button that supports invocation of an action with control over "
+"conversation propagation. <emphasis>Does not submit the form.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:274
+#, no-c-format
+msgid "&lt;s:selectDate&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:276
+#, no-c-format
+msgid ""
+"Displays a dynamic date picker component that selects a date for the "
+"specified input field. The body of the <literal>selectDate</literal> element "
+"should contain HTML elements, such as text or an image, that prompt the user "
+"to click to display the date picker. The date picker can be styled using "
+"CSS. An example CSS file can be found in the Seam booking demo as "
+"<literal>date.css</literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:281
+#, no-c-format
+msgid ""
+"<literal>for</literal> &mdash; The id of the input field that the date "
+"picker will insert the selected date into."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:286
+#, no-c-format
+msgid ""
+"<literal>dateFormat</literal> &mdash; The date format string. This should "
+"match the date format of the input field."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:294
+#, no-c-format
+msgid "&lt;s:conversationPropagation&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:296
+#, no-c-format
+msgid ""
+"Customize the conversation propagation for a command link or button (or "
+"similar JSF control). <emphasis>Facelets only.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:314
+#, no-c-format
+msgid "&lt;s:conversationId&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:316
+#, no-c-format
+msgid ""
+"Add the conversation id to an output link (or similar JSF control). "
+"<emphasis>Facelets only.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:322
+#, no-c-format
+msgid "&lt;s:taskId&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:324
+#, no-c-format
+msgid ""
+"Add the task id to an output link (or similar JSF control), when the task is "
+"available via <literal>#{task}</literal>. <emphasis>Facelets only.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:330
+#, no-c-format
+msgid "&lt;s:fileUpload&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:332
+#, no-c-format
+msgid ""
+"Renders a file upload control. This control must be used within a form with "
+"an encoding type of <literal>multipart/form-data</literal>, i.e:"
+msgstr ""
+
+#. Tag: programlisting
+#: Controls.xml:335
+#, no-c-format
+msgid "&lt;h:form enctype=\"multipart/form-data\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:336
+#, no-c-format
+msgid ""
+"For multipart requests, the Seam Multipart servlet filter must also be "
+"configured in <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Controls.xml:339
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"      &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"      &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-"
+"class&gt;\n"
+"    &lt;/filter&gt;\n"
+"    \n"
+"    &lt;filter-mapping&gt;\n"
+"      &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"      &lt;url-pattern&gt;/*&lt;/url-pattern&gt;\n"
+"    &lt;/filter-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:340
+#, no-c-format
+msgid ""
+"The following configuration options for multipart requests may be configured "
+"in components.xml:"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:345
+#, no-c-format
+msgid ""
+"<literal>createTempFiles</literal> &mdash; if this option is set to true, "
+"uploaded files are streamed to a temporary file instead of in memory."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:350
+#, no-c-format
+msgid ""
+"<literal>maxRequestSize</literal> &mdash; the maximum size of a file upload "
+"request, in bytes."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:355
+#, no-c-format
+msgid "Here's an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Controls.xml:358
+#, no-c-format
+msgid ""
+"&lt;component class=\"org.jboss.seam.servlet.MultipartConfig\"&gt;\n"
+"        &lt;property name=\"createTempFiles\"&gt;true&lt;/property&gt;\n"
+"        &lt;property name=\"maxRequestSize\"&gt;1000000&lt;/property&gt;\n"
+"    &lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:359
+#, no-c-format
+msgid ""
+"And here's a list of the supported attributes for the <literal>fileUpload</"
+"literal> control:"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:364
+#, no-c-format
+msgid ""
+"<literal>data</literal> &mdash; this value binding receives the binary file "
+"data. The receiving field should be declared as a <literal>byte[]</literal> "
+"or <literal>InputStream</literal> (required)."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:369
+#, no-c-format
+msgid ""
+"<literal>contentType</literal> &mdash; this value binding receives the "
+"file's content type (optional)."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:374
+#, no-c-format
+msgid ""
+"<literal>fileName</literal> &mdash; this value binding receives the filename "
+"(optional)."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:379
+#, no-c-format
+msgid ""
+"<literal>accept</literal> &mdash; a comma-separated list of content types to "
+"accept, may not be supported by the browser. E.g. <literal>\"images/png,"
+"images/jpg\"</literal>, <literal>\"images/*\"</literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:384
+#, no-c-format
+msgid "<literal>style</literal> &mdash; The control's style"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:389
+#, no-c-format
+msgid "<literal>styleClass</literal> &mdash; The control's style class"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Conversations.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Conversations.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Conversations.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1248 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Conversations.xml:10
+#, no-c-format
+msgid "Conversations and workspace management"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:11
+#, no-c-format
+msgid "It's time to understand Seam's conversation model in more detail."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:14
+#, no-c-format
+msgid ""
+"Historically, the notion of a Seam \"conversation\" came about as a merger "
+"of three different ideas:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:19
+#, no-c-format
+msgid ""
+"The idea of a <emphasis>workspace</emphasis>, which I encountered in a "
+"project for the Victorian government in 2002. In this project I was forced "
+"to implement workspace management on top of Struts, an experience I pray "
+"never to repeat."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:24
+#, no-c-format
+msgid ""
+"The idea of an <emphasis>application transaction</emphasis> with optimistic "
+"semantics, and the realization that existing frameworks based around a "
+"stateless architecture could not provide effective management of extended "
+"persistence contexts. (The Hibernate team is truly fed up with copping the "
+"blame for <literal>LazyInitializationException</literal>s, which are not "
+"really Hibernate's fault, but rather the fault of the extremely limiting "
+"persistence context model supported by stateless architectures such as the "
+"Spring framework or the traditional <emphasis>stateless session facade</"
+"emphasis> (anti)pattern in J2EE.)"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:29
+#, no-c-format
+msgid "The idea of a workflow <emphasis>task</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:34
+#, no-c-format
+msgid ""
+"By unifying these ideas and providing deep support in the framework, we have "
+"a powerful construct that lets us build richer and more efficient "
+"applications with less code than before."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:38
+#, no-c-format
+msgid "Seam's conversation model"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:39
+#, no-c-format
+msgid ""
+"The examples we have seen so far make use of a very simple conversation "
+"model that follows these rules:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:44
+#, no-c-format
+msgid ""
+"There is always a conversation context active during the apply request "
+"values, process validations, update model values, invoke application and "
+"render response phases of the JSF request lifecycle."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:49
+#, no-c-format
+msgid ""
+"At the end of the restore view phase of the JSF request lifecycle, Seam "
+"attempts to restore any previous long-running conversation context. If none "
+"exists, Seam creates a new temporary conversation context."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:54
+#, no-c-format
+msgid ""
+"When an <literal>@Begin</literal> method is encountered, the temporary "
+"conversation context is promoted to a long running conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:59
+#, no-c-format
+msgid ""
+"When an <literal>@End</literal> method is encountered, any long-running "
+"conversation context is demoted to a temporary conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:64
+#, no-c-format
+msgid ""
+"At the end of the render response phase of the JSF request lifecycle, Seam "
+"stores the contents of a long running conversation context or destroys the "
+"contents of a temporary conversation context."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:69
+#, no-c-format
+msgid ""
+"Any faces request (a JSF postback) will propagate the conversation context. "
+"By default, non-faces requests (GET requests, for example) do not propagate "
+"the conversation context, but see below for more information on this."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:74
+#, no-c-format
+msgid ""
+"If the JSF request lifecycle is foreshortened by a redirect, Seam "
+"transparently stores and restores the current conversation context&mdash;"
+"unless the conversation was already ended via <literal>@End"
+"(beforeRedirect=true)</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:79
+#, no-c-format
+msgid ""
+"Seam transparently propagates the conversation context across JSF postbacks "
+"and redirects. If you don't do anything special, a <emphasis>non-faces "
+"request</emphasis> (a GET request for example) will not propagate the "
+"conversation context and will be processed in a new temporary conversation. "
+"This is usually - but not always - the desired behavior."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:82
+#, no-c-format
+msgid ""
+"If you want to propagate a Seam conversation across a non-faces request, you "
+"need to explicitly code the Seam <emphasis>conversation id</emphasis> as a "
+"request parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:85
+#, no-c-format
+msgid ""
+"&lt;a href=\"main.jsf?conversationId=#{conversation.id}\"&gt;Continue&lt;/"
+"a&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:86
+#, no-c-format
+msgid "Or, the more JSF-ish:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:89
+#, no-c-format
+msgid ""
+"&lt;h:outputLink value=\"main.jsf\"&gt;\n"
+"    &lt;f:param name=\"conversationId\" value=\"#{conversation.id}\"/&gt;\n"
+"    &lt;h:outputText value=\"Continue\"/&gt;\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:90 Conversations.xml:98
+#, no-c-format
+msgid "If you use the Seam tag library, this is equivalent:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:93
+#, no-c-format
+msgid ""
+"&lt;h:outputLink value=\"main.jsf\"&gt;\n"
+"    &lt;s:conversationId/&gt;\n"
+"    &lt;h:outputText value=\"Continue\"/&gt;\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:94
+#, no-c-format
+msgid ""
+"If you wish to disable propagation of the conversation context for a "
+"postback, a similar trick is used:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:97
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;f:param name=\"conversationPropagation\" value=\"none\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:101
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"none\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:102
+#, no-c-format
+msgid ""
+"Note that disabling conversation context propagation is absolutely not the "
+"same thing as ending the conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:105
+#, no-c-format
+msgid ""
+"The <literal>conversationPropagation</literal> request parameter, or the "
+"<literal>&lt;s:conversationPropagation&gt;</literal> tag may even be used to "
+"begin and end conversation, or begin a nested conversation."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:108
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"end\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:109
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Child\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"nested\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:110
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Hotel\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"begin\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:111
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Hotel\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"join\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:112
+#, no-c-format
+msgid ""
+"This conversation model makes it easy to build applications which behave "
+"correctly with respect to multi-window operation. For many applications, "
+"this is all that is needed. Some complex applications have either or both of "
+"the following additional requirements:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:117
+#, no-c-format
+msgid ""
+"A conversation spans many smaller units of user interaction, which execute "
+"serially or even concurrently. The smaller <emphasis>nested conversations</"
+"emphasis> have their own isolated set of conversation state, and also have "
+"access to the state of the outer conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:122
+#, no-c-format
+msgid ""
+"The user is able to switch between many conversations within the same "
+"browser window. This feature is called <emphasis>workspace management</"
+"emphasis>."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:130
+#, no-c-format
+msgid "Nested conversations"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:131
+#, no-c-format
+msgid ""
+"A nested conversation is created by invoking a method marked <literal>@Begin"
+"(nested=true)</literal> inside the scope of an existing conversation. A "
+"nested conversation has its own conversation context, and also has read-only "
+"access to the context of the outer conversation. (It can read the outer "
+"conversation's context variables, but not write to them.) When an "
+"<literal>@End</literal> is subsequently encountered, the nested conversation "
+"will be destroyed, and the outer conversation will resume, by \"popping\" "
+"the conversation stack. Conversations may be nested to any arbitrary depth."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:134
+#, no-c-format
+msgid ""
+"Certain user activity (workspace management, or the back button) can cause "
+"the outer conversation to be resumed before the inner conversation is ended. "
+"In this case it is possible to have multiple concurrent nested conversations "
+"belonging to the same outer conversation. If the outer conversation ends "
+"before a nested conversation ends, Seam destroys all nested conversation "
+"contexts along with the outer context."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:137
+#, no-c-format
+msgid ""
+"A conversation may be thought of as a <emphasis>continuable state</"
+"emphasis>. Nested conversations allow the application to capture a "
+"consistent continuable state at various points in a user interaction, thus "
+"insuring truly correct behavior in the face of backbuttoning and workspace "
+"management."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:140
+#, no-c-format
+msgid ""
+"TODO: an example to show how a nested conversation prevents bad stuff "
+"happening when you backbutton."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:143
+#, no-c-format
+msgid ""
+"Usually, if a component exists in a parent conversation of the current "
+"nested conversation, the nested conversation will use the same instance. "
+"Occasionally, it is useful to have a different instance in each nested "
+"conversation, so that the component instance that exists in the parent "
+"conversation is invisible to its child conversations. You can achieve this "
+"behavior by annotating the component <literal>@PerNestedConversation</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:149
+#, no-c-format
+msgid "Starting conversations with GET requests"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:150
+#, no-c-format
+msgid ""
+"JSF does not define any kind of action listener that is triggered when a "
+"page is accessed via a non-faces request (for example, a HTTP GET request). "
+"This can occur if the user bookmarks the page, or if we navigate to the page "
+"via an <literal>&lt;h:outputLink&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:153
+#, no-c-format
+msgid ""
+"Sometimes we want to begin a conversation immediately the page is accessed. "
+"Since there is no JSF action method, we can't solve the problem in the usual "
+"way, by annotating the action with <literal>@Begin</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:156
+#, no-c-format
+msgid ""
+"A further problem arises if the page needs some state to be fetched into a "
+"context variable. We've already seen two ways to solve this problem. If that "
+"state is held in a Seam component, we can fetch the state in a "
+"<literal>@Create</literal> method. If not, we can define a "
+"<literal>@Factory</literal> method for the context variable."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:159
+#, no-c-format
+msgid ""
+"If none of these options works for you, Seam lets you define a "
+"<emphasis>page action</emphasis> in the <literal>pages.xml</literal> file."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:162
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\" action=\"#{messageManager.list}\"/"
+"&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:163
+#, no-c-format
+msgid ""
+"This action method is called at the beginning of the render response phase, "
+"any time the page is about to be rendered. If a page action returns a non-"
+"null outcome, Seam will process any appropriate JSF and Seam navigation "
+"rules, possibly resulting in a completely different page being rendered."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:166
+#, no-c-format
+msgid ""
+"If <emphasis>all</emphasis> you want to do before rendering the page is "
+"begin a conversation, you could use a built-in action method that does just "
+"that:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:169
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\" action=\"#{conversation.begin}\"/"
+"&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:170
+#, no-c-format
+msgid ""
+"Note that you can also call this built-in action from a JSF control, and, "
+"similarly, you can use <literal>#{conversation.end}</literal> to end "
+"conversations."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:173
+#, no-c-format
+msgid ""
+"If you want more control, to join existing conversations or begin a nested "
+"conversion, to begin a pageflow or an atomic conversation, you should use "
+"the <literal>&lt;begin-conversation&gt;</literal> element."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:176
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\"&gt;\n"
+"       &lt;begin-conversation nested=\"true\" pageflow=\"AddItem\"/&gt;\n"
+"    &lt;page&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:177
+#, no-c-format
+msgid "There is also an <literal>&lt;end-conversation&gt;</literal> element."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:180
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/home.jsp\"&gt;\n"
+"       &lt;end-conversation/&gt;\n"
+"    &lt;page&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:181
+#, no-c-format
+msgid "To solve the first problem, we now have five options:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:186
+#, no-c-format
+msgid ""
+"Annotate the <literal>@Create</literal> method with <literal>@Begin</literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:191
+#, no-c-format
+msgid ""
+"Annotate the <literal>@Factory</literal> method with <literal>@Begin</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:196
+#, no-c-format
+msgid "Annotate the Seam page action method with <literal>@Begin</literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:201
+#, no-c-format
+msgid ""
+"Use <literal>&lt;begin-conversation&gt;</literal> in <literal>pages.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:206
+#, no-c-format
+msgid ""
+"Use <literal>#{conversation.begin}</literal> as the Seam page action method"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:214
+#, no-c-format
+msgid ""
+"Using <literal>&lt;s:link&gt;</literal> and <literal>&lt;s:button&gt;</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:215
+#, no-c-format
+msgid ""
+"JSF command links always perform a form submission via JavaScript, which "
+"breaks the web browser's \"open in new window\" or \"open in new tab\" "
+"feature. In plain JSF, you need to use an <literal>&lt;h:outputLink&gt;</"
+"literal> if you need this functionality. But there are two major limitations "
+"to <literal>&lt;h:outputLink&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:220
+#, no-c-format
+msgid ""
+"JSF provides no way to attach an action listener to an <literal>&lt;h:"
+"outputLink&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:225
+#, no-c-format
+msgid ""
+"JSF does not propagate the selected row of a <literal>DataModel</literal> "
+"since there is no actual form submission."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:230
+#, no-c-format
+msgid ""
+"Seam provides the notion of a <emphasis>page action</emphasis> to help solve "
+"the first problem, but this does nothing to help us with the second problem. "
+"We <emphasis>could</emphasis> work around this by using the RESTful approach "
+"of passing a request parameter and requerying for the selected object on the "
+"server side. In some cases&mdash;such as the Seam blog example "
+"application&mdash;this is indeed the best approach. The RESTful style "
+"supports bookmarking, since it does not require server-side state. In other "
+"cases, where we don't care about bookmarks, the use of <literal>@DataModel</"
+"literal> and <literal>@DataModelSelection</literal> is just so convenient "
+"and transparent!"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:233
+#, no-c-format
+msgid ""
+"To fill in this missing functionality, and to make conversation propagation "
+"even simpler to manage, Seam provides the <literal>&lt;s:link&gt;</literal> "
+"JSF tag."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:236
+#, no-c-format
+msgid "The link may specify just the JSF view id:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:239
+#, no-c-format
+msgid ""
+"&lt;s:link view=&#8220;/login.xhtml&#8221; value=&#8220;Login&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:240
+#, no-c-format
+msgid ""
+"Or, it may specify an action method (in which case the action outcome "
+"determines the page that results):"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:243
+#, no-c-format
+msgid ""
+"&lt;s:link action=&#8220;#{login.logout}&#8221; value=&#8220;Logout&#8221;/"
+"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:244
+#, no-c-format
+msgid ""
+"If you specify <emphasis>both</emphasis> a JSF view id and an action method, "
+"the 'view' will be used <emphasis>unless</emphasis> the action method "
+"returns a non-null outcome:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:247
+#, no-c-format
+msgid ""
+"&lt;s:link view=\"/loggedOut.xhtml\"  action=&#8220;#{login.logout}&#8221; "
+"value=&#8220;Logout&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:248
+#, no-c-format
+msgid ""
+"The link automatically propagates the selected row of a <literal>DataModel</"
+"literal> using inside <literal>&lt;h:dataTable&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:251
+#, no-c-format
+msgid ""
+"&lt;s:link view=&#8220;/hotel.xhtml&#8221; action=&#8220;#{hotelSearch."
+"selectHotel}&#8221; value=&#8220;#{hotel.name}&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:252
+#, no-c-format
+msgid "You can leave the scope of an existing conversation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:255
+#, no-c-format
+msgid ""
+"&lt;s:link view=&#8220;/main.xhtml&#8221; propagation=&#8220;none&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:256
+#, no-c-format
+msgid "You can begin, end, or nest conversations:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:259
+#, no-c-format
+msgid ""
+"&lt;s:link action=&#8220;#{issueEditor.viewComment}&#8221; "
+"propagation=&#8220;nest&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:260
+#, no-c-format
+msgid ""
+"If the link begins a conversation, you can even specify a pageflow to be "
+"used:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:263
+#, no-c-format
+msgid ""
+"&lt;s:link action=&#8220;#{documentEditor.getDocument}&#8221; "
+"propagation=&#8220;begin&#8221; \n"
+"        pageflow=&#8220;EditDocument&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:264
+#, no-c-format
+msgid ""
+"The <literal>taskInstance</literal> attribute if for use in jBPM task lists:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:267
+#, no-c-format
+msgid ""
+"&lt;s:link action=&#8220;#{documentApproval.approveOrReject}&#8221; "
+"taskInstance=&#8220;#{task}&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:268
+#, no-c-format
+msgid "(See the DVD Store demo application for examples of this.)"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:271
+#, no-c-format
+msgid ""
+"Finally, if you need the \"link\" to be rendered as a button, use "
+"<literal>&lt;s:button&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:274
+#, no-c-format
+msgid ""
+"&lt;s:button action=&#8220;#{login.logout}&#8221; value=&#8220;Logout&#8221;/"
+"&gt;"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:278
+#, no-c-format
+msgid "Success messages"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:279
+#, no-c-format
+msgid ""
+"It is quite common to display a message to the user indicating success or "
+"failure of an action. It is convenient to use a JSF <literal>FacesMessage</"
+"literal> for this. Unfortunately, a successful action often requires a "
+"browser redirect, and JSF does not propagate faces messages across "
+"redirects. This makes it quite difficult to display success messages in "
+"plain JSF."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:282
+#, no-c-format
+msgid ""
+"The built in conversation-scoped Seam component named "
+"<literal>facesMessages</literal> solves this problem. (You must have the "
+"Seam redirect filter installed.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:285
+#, no-c-format
+msgid ""
+"@Name(\"editDocumentAction\")\n"
+"@Stateless\n"
+"public class EditDocumentBean implements EditDocument {\n"
+"    @In EntityManager em;\n"
+"    @In Document document;\n"
+"    @In FacesMessages facesMessages;\n"
+"    \n"
+"    public String update() {\n"
+"        em.merge(document);\n"
+"        facesMessages.add(\"Document updated\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:286
+#, no-c-format
+msgid ""
+"Any message added to <literal>facesMessages</literal> is used in the very "
+"next render response phase for the current conversation. This even works "
+"when there is no long-running conversation since Seam preserves even "
+"temporary conversation contexts across redirects."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:289
+#, no-c-format
+msgid "You can even include JSF EL expressions in a faces message summary:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:292
+#, no-c-format
+msgid "facesMessages.add(\"Document #{document.title} was updated\");"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:293
+#, no-c-format
+msgid "You may display the messages in the usual way, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:296
+#, no-c-format
+msgid "&lt;h:messages globalOnly=\"true\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:300
+#, no-c-format
+msgid "Using an \"explicit\" conversation id"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:301
+#, no-c-format
+msgid ""
+"Ordinarily, Seam generates a meaningless unique id for each conversation in "
+"each session. You can customize the id value when you begin the conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:304
+#, no-c-format
+msgid ""
+"This feature can be used to customize the conversation id generation "
+"algorithm like so:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:307
+#, no-c-format
+msgid ""
+"@Begin(id=\"#{myConversationIdGenerator.nextId}\") \n"
+"public void editHotel() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:308
+#, no-c-format
+msgid "Or it can be used to assign a meaningful conversation id:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:311
+#, no-c-format
+msgid ""
+"@Begin(id=\"hotel#{hotel.id}\") \n"
+"public String editHotel() { ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:312
+#, no-c-format
+msgid ""
+"@Begin(id=\"hotel#{hotelsDataModel.rowData.id}\") \n"
+"public String selectHotel() { ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:313
+#, no-c-format
+msgid ""
+"@Begin(id=\"entry#{params['blogId']}\")\n"
+"public String viewBlogEntry() { ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:314
+#, no-c-format
+msgid ""
+"@BeginTask(id=\"task#{taskInstance.id}\") \n"
+"public String approveDocument() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:315
+#, no-c-format
+msgid ""
+"Clearly, these example result in the same conversation id every time a "
+"particular hotel, blog or task is selected. So what happens if a "
+"conversation with the same conversation id already exists when the new "
+"conversation begins? Well, Seam detects the existing conversation and "
+"redirects to that conversation without running the <literal>@Begin</literal> "
+"method again. This feature helps control the number of workspaces that are "
+"created when using workspace management."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:321
+#, no-c-format
+msgid "Workspace management"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:322
+#, no-c-format
+msgid ""
+"Workspace management is the ability to \"switch\" conversations in a single "
+"window. Seam makes workspace management completely transparent at the level "
+"of the Java code. To enable workspace management, all you need to do is:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:327
+#, no-c-format
+msgid ""
+"Provide <emphasis>description</emphasis> text for each view id (when using "
+"JSF or Seam navigation rules) or page node (when using jPDL pageflows). This "
+"description text is displayed to the user by the workspace switchers."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:332
+#, no-c-format
+msgid ""
+"Include one or more of the standard workspace switcher JSP or facelets "
+"fragments in your pages. The standard fragments support workspace management "
+"via a drop down menu, a list of conversations, or breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:335
+#, no-c-format
+msgid ""
+"Please refer to the Seam Issue Tracker demo to see all this functionality in "
+"action!"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:339
+#, no-c-format
+msgid "Workspace management and JSF navigation"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:340
+#, no-c-format
+msgid ""
+"When you use JSF or Seam navigation rules, Seam switches to a conversation "
+"by restoring the current <literal>view-id</literal> for that conversation. "
+"The descriptive text for the workspace is defined in a file called "
+"<literal>pages.xml</literal> that Seam expects to find in the <literal>WEB-"
+"INF</literal> directory, right next to <literal>faces-config.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:343
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/main.xhtml\"&gt;Search hotels: #{hotelBooking."
+"searchString}&lt;/page&gt;\n"
+"    &lt;page view-id=\"/hotel.xhtml\"&gt;View hotel: #{hotel.name}&lt;/"
+"page&gt;\n"
+"    &lt;page view-id=\"/book.xhtml\"&gt;Book hotel: #{hotel.name}&lt;/"
+"page&gt;\n"
+"    &lt;page view-id=\"/confirm.xhtml\"&gt;Confirm: #{booking.description}"
+"&lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:344
+#, no-c-format
+msgid ""
+"Note that if this file is missing, the Seam application will continue to "
+"work perfectly! The only missing functionality will be the ability to switch "
+"workspaces."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:350
+#, no-c-format
+msgid "Workspace management and jPDL pageflow"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:351
+#, no-c-format
+msgid ""
+"When you use a jPDL pageflow definition, Seam switches to a conversation by "
+"restoring the current jBPM process state. This is a more flexible model "
+"since it allows the same <literal>view-id</literal> to have different "
+"descriptions depending upon the current <literal>&lt;page&gt;</literal> "
+"node. The description text is defined by the <literal>&lt;page&gt;</literal> "
+"node:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:354
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"shopping\"&gt;\n"
+"\n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"browse\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;page name=\"browse\" view-id=\"/browse.xhtml\"&gt;\n"
+"      &lt;description&gt;DVD Search: #{search.searchPattern}&lt;/"
+"description&gt;\n"
+"      &lt;transition to=\"browse\"/&gt;\n"
+"      &lt;transition name=\"checkout\" to=\"checkout\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"checkout\" view-id=\"/checkout.xhtml\"&gt;\n"
+"      &lt;description&gt;Purchase: &#36;#{cart.total}&lt;/description&gt;\n"
+"      &lt;transition to=\"checkout\"/&gt;\n"
+"      &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"complete\" view-id=\"/complete.xhtml\"&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:358
+#, no-c-format
+msgid "The conversation switcher"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:359
+#, no-c-format
+msgid ""
+"Include the following fragment in your JSP or facelets page to get a drop-"
+"down menu that lets you switch to any current conversation, or to any other "
+"page of the application:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:362
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{switcher.conversationIdOrOutcome}\"&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Find Issues\" itemValue=\"findIssue\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Create Issue\" itemValue=\"editIssue\"/"
+"&gt;\n"
+"    &lt;f:selectItems value=\"#{switcher.selectItems}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{switcher.select}\" value=\"Switch\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:363
+#, no-c-format
+msgid ""
+"In this example, we have a menu that includes an item for each conversation, "
+"together with two additional items that let the user begin a new "
+"conversation."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:377
+#, no-c-format
+msgid "The conversation list"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:378
+#, no-c-format
+msgid ""
+"The conversation list is very similar to the conversation switcher, except "
+"that it is displayed as a table:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:381
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{conversationList}\" var=\"entry\"\n"
+"        rendered=\"#{not empty conversationList}\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Workspace&lt;/f:facet&gt;\n"
+"        &lt;h:commandLink action=\"#{entry.select}\" value=\"#{entry."
+"description}\"/&gt;\n"
+"        &lt;h:outputText value=\"[current]\" rendered=\"#{entry.current}\"/"
+"&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Activity&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{entry.startDatetime}\"&gt;\n"
+"            &lt;f:convertDateTime type=\"time\" pattern=\"hh:mm a\"/&gt;\n"
+"        &lt;/h:outputText&gt;\n"
+"        &lt;h:outputText value=\" - \"/&gt;\n"
+"        &lt;h:outputText value=\"#{entry.lastDatetime}\"&gt;\n"
+"            &lt;f:convertDateTime type=\"time\" pattern=\"hh:mm a\"/&gt;\n"
+"        &lt;/h:outputText&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"        &lt;h:commandButton action=\"#{entry.select}\" value=\"#{msg.Switch}"
+"\"/&gt;\n"
+"        &lt;h:commandButton action=\"#{entry.destroy}\" value=\"#{msg."
+"Destroy}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:382
+#, no-c-format
+msgid ""
+"We imagine that you will want to customize this for your own application."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:393
+#, no-c-format
+msgid ""
+"The conversation list is nice, but it takes up a lot of space on the page, "
+"so you probably don't want to put it on <emphasis>every</emphasis> page."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:396
+#, no-c-format
+msgid "Notice that the conversation list lets the user destroy workspaces."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:402
+#, no-c-format
+msgid "Breadcrumbs"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:403
+#, no-c-format
+msgid ""
+"Breadcrumbs are useful in applications which use a nested conversation "
+"model. The breadcrumbs are a list of links to conversations in the current "
+"conversation stack:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:406
+#, no-c-format
+msgid ""
+"&lt;t:dataList value=\"#{conversationStack}\" var=\"entry\"&gt;\n"
+"    &lt;h:outputText value=\" | \"/&gt; \n"
+"    &lt;h:commandLink value=\"#{entry.description}\" action=\"#{entry.select}"
+"\"/&gt;\n"
+"&lt;/t:dataList&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:407
+#, no-c-format
+msgid ""
+"Notice that here we are using the MyFaces <literal>&lt;t:dataList&gt;</"
+"literal> component, since JSF amazingly does not provide any standard "
+"component for looping."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:424
+#, no-c-format
+msgid "Conversational components and JSF component bindings"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:425
+#, no-c-format
+msgid ""
+"Conversational components have one minor limitation: they cannot be used to "
+"hold bindings to JSF components. (We generally prefer not to use this "
+"feature of JSF unless absolutely necessary, since it creates a hard "
+"dependency from application logic to the view.) On a postback request, "
+"component bindings are updated during the Restore View phase, before the "
+"Seam conversation context has been restored."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:428
+#, no-c-format
+msgid ""
+"To work around this use an event scoped component to store the component "
+"bindings and inject it into the conversation scoped component that requires "
+"it."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:431
+#, no-c-format
+msgid ""
+"@Name(\"grid\")\n"
+"@Scope(ScopeType.EVENT)\n"
+"public class Grid\n"
+"{\n"
+"    private HtmlPanelGrid htmlPanelGrid;\n"
+"\n"
+"    // getters and setters\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:432
+#, no-c-format
+msgid ""
+"@Name(\"gridEditor\")\n"
+"@Scope(ScopeType.CONVERSATION)\n"
+"public class GridEditor\n"
+"{\n"
+"    @In(required=false)\n"
+"    private Grid grid;\n"
+"    \n"
+"    ...\n"
+"}"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Drools.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Drools.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Drools.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,281 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Drools.xml:10
+#, no-c-format
+msgid "Seam and JBoss Rules"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:11
+#, no-c-format
+msgid ""
+"Seam makes it easy to call JBoss Rules (Drools) rulebases from Seam "
+"components or jBPM process definitions."
+msgstr ""
+
+#. Tag: title
+#: Drools.xml:15
+#, no-c-format
+msgid "Installing rules"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:16
+#, no-c-format
+msgid ""
+"The first step is to make an instance of <literal>org.drools.RuleBase</"
+"literal> available in a Seam context variable. In most rules-driven "
+"applications, rules need to be dynamically deployable, so you will need to "
+"implement some solution that allows you to deploy rules and make them "
+"available to Seam (a future release of Drools will provide a Rule Server "
+"that solves this problem). For testing purposes, Seam provides a built-in "
+"component that compiles a static set of rules from the classpath. You can "
+"install this component via <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:19
+#, no-c-format
+msgid ""
+"&lt;drools:rule-base name=\"policyPricingRules\"&gt;\n"
+"    &lt;drools:rule-files&gt;\n"
+"        &lt;value&gt;policyPricingRules&lt;/value&gt;\n"
+"    &lt;/drools:rule-files&gt;\n"
+"&lt;/drools:rule-base&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:20
+#, no-c-format
+msgid ""
+"This component compiles rules from a set of <literal>.drl</literal> files "
+"and caches an instance of <literal>org.drools.RuleBase</literal> in the Seam "
+"<literal>APPLICATION</literal> context. Note that it is quite likely that "
+"you will need to install multiple rule bases in a rule-driven application."
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:23
+#, no-c-format
+msgid ""
+"If you want to use a Drools DSL, you alse need to specify the DSL definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:26
+#, no-c-format
+msgid ""
+"&lt;drools:rule-base name=\"policyPricingRules\" dsl-file=\"policyPricing.dsl"
+"\"&gt;\n"
+"    &lt;drools:rule-files&gt;\n"
+"        &lt;value&gt;policyPricingRules&lt;/value&gt;\n"
+"    &lt;/drools:rule-files&gt;\n"
+"&lt;/drools:rule-base&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:27
+#, no-c-format
+msgid ""
+"Next, we need to make an instance of <literal>org.drools.WorkingMemory</"
+"literal> available to each conversation. (Each <literal>WorkingMemory</"
+"literal> accumulates facts relating to the current conversation.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:30
+#, no-c-format
+msgid ""
+"&lt;drools:managed-working-memory name=\"policyPricingWorkingMemory\" auto-"
+"create=\"true\" rule-base=\"#{policyPricingRules}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:31
+#, no-c-format
+msgid ""
+"Notice that we gave the <literal>policyPricingWorkingMemory</literal> a "
+"reference back to our rule base via the <literal>ruleBase</literal> "
+"configuration property."
+msgstr ""
+
+#. Tag: title
+#: Drools.xml:37
+#, no-c-format
+msgid "Using rules from a Seam component"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:38
+#, no-c-format
+msgid ""
+"We can now inject our <literal>WorkingMemory</literal> into any Seam "
+"component, assert facts, and fire rules:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:41
+#, no-c-format
+msgid ""
+"@In WorkingMemory policyPricingWorkingMemory;\n"
+"\n"
+"@In Policy policy;\n"
+"@In Customer customer;\n"
+"\n"
+"public void pricePolicy() throws FactException\n"
+"{\n"
+"    policyPricingWorkingMemory.assertObject(policy);\n"
+"    policyPricingWorkingMemory.assertObject(customer);\n"
+"    policyPricingWorkingMemory.fireAllRules();\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Drools.xml:45
+#, no-c-format
+msgid "Using rules from a jBPM process definition"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:46
+#, no-c-format
+msgid ""
+"You can even allow a rule base to act as a jBPM action handler, decision "
+"handler, or assignment handler&mdash;in either a pageflow or business "
+"process definition."
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:49
+#, no-c-format
+msgid ""
+"&lt;decision name=\"approval\"&gt;\n"
+"         \n"
+"    &lt;handler class=\"org.jboss.seam.drools.DroolsDecisionHandler\"&gt;\n"
+"        &lt;workingMemoryName&gt;orderApprovalRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"        &lt;assertObjects&gt;\n"
+"            &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"            &lt;element&gt;#{order}&lt;/element&gt;\n"
+"            &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"        &lt;/assertObjects&gt;\n"
+"    &lt;/handler&gt;\n"
+"    \n"
+"    &lt;transition name=\"approved\" to=\"ship\"&gt;\n"
+"        &lt;action class=\"org.jboss.seam.drools.DroolsActionHandler\"&gt;\n"
+"            &lt;workingMemoryName&gt;shippingRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"            &lt;assertObjects&gt;\n"
+"                &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"            &lt;/assertObjects&gt;\n"
+"        &lt;/action&gt;\n"
+"    &lt;/transition&gt;\n"
+"    \n"
+"    &lt;transition name=\"rejected\" to=\"cancelled\"/&gt;\n"
+"    \n"
+"&lt;/decision&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:50
+#, no-c-format
+msgid ""
+"The <literal>&lt;assertObjects&gt;</literal> element specifies EL "
+"expressions that return an object or collection of objects to be asserted as "
+"facts into the <literal>WorkingMemory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:53
+#, no-c-format
+msgid "There is also support for using Drools for jBPM task assignments:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:56
+#, no-c-format
+msgid ""
+"&lt;task-node name=\"review\"&gt;\n"
+"    &lt;task name=\"review\" description=\"Review Order\"&gt;\n"
+"        &lt;assignment handler=\"org.jboss.seam.drools."
+"DroolsAssignmentHandler\"&gt;\n"
+"            &lt;workingMemoryName&gt;orderApprovalRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"            &lt;assertObjects&gt;\n"
+"                &lt;element&gt;#{actor}&lt;/element&gt;\n"
+"                &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"            &lt;/assertObjects&gt;\n"
+"        &lt;/assignment&gt;\n"
+"    &lt;/task&gt;\n"
+"    &lt;transition name=\"rejected\" to=\"cancelled\"/&gt;\n"
+"    &lt;transition name=\"approved\" to=\"approved\"/&gt;\n"
+"&lt;/task-node&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:57
+#, no-c-format
+msgid ""
+"Certain objects are available to the rules as Drools globals, namely the "
+"jBPM <literal>Assignable</literal>, as <literal>assignable</literal> and a "
+"Seam <literal>Decision</literal> object, as <literal>decision</literal>. "
+"Rules which handle decisions should call <literal>decision.setOutcome"
+"(\"result\")</literal> to determine the result of the decision. Rules which "
+"perform assignments should set the actor id using the <literal>Assignable</"
+"literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:60
+#, no-c-format
+msgid ""
+"package org.jboss.seam.examples.shop\n"
+"\n"
+"import org.jboss.seam.drools.Decision\n"
+"\n"
+"global Decision decision\n"
+"\n"
+"rule \"Approve Order For Loyal Customer\"\n"
+"  when\n"
+"    Customer( loyaltyStatus == \"GOLD\" )\n"
+"    Order( totalAmount &lt;= 10000 )\n"
+"  then\n"
+"    decision.setOutcome(\"approved\");\n"
+"end"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:61
+#, no-c-format
+msgid ""
+"package org.jboss.seam.examples.shop\n"
+"\n"
+"import org.jbpm.taskmgmt.exe.Assignable\n"
+"\n"
+"global Assignable assignable\n"
+"\n"
+"rule \"Assign Review For Small Order\"\n"
+"  when\n"
+"    Order( totalAmount &lt;= 100 )\n"
+"  then\n"
+"    assignable.setPooledActors( new String[] {\"reviewers\"} );\n"
+"end"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Elenhancements.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Elenhancements.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Elenhancements.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,221 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Elenhancements.xml:10
+#, no-c-format
+msgid "Expression language enhancements"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:11
+#, no-c-format
+msgid ""
+"The standard Unified Expression Language (EL) assumes that any parameters to "
+"a method expression will be provided by Java code. This means that a method "
+"with parameters cannot be used as a JSF method binding. Seam provides an "
+"enhancement to the EL that allows parameters to be included in a method "
+"expression itself. This applies to <emphasis>any</emphasis> Seam method "
+"expression, including any JSF method binding, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:14
+#, no-c-format
+msgid ""
+"&lt;s:commandButton action=\"#{hotelBooking.bookHotel(hotel)}\" value=\"Book "
+"Hotel\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:16
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:17
+#, no-c-format
+msgid ""
+"To use this feature in Facelets, you will need to declare a special view "
+"handler, <literal>SeamFaceletViewHandler</literal> in <literal>faces-config."
+"xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:20
+#, no-c-format
+msgid ""
+"&lt;faces-config&gt;\n"
+"    &lt;application&gt;\n"
+"        &lt;view-handler&gt;org.jboss.seam.ui.facelet."
+"SeamFaceletViewHandler&lt;/view-handler&gt;\n"
+"    &lt;/application&gt;\n"
+"&lt;/faces-config&gt;"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:24
+#, no-c-format
+msgid "Usage"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:25
+#, no-c-format
+msgid "Parameters are surrounded by parentheses, and separated by commas:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:28
+#, no-c-format
+msgid ""
+"&lt;h:commandButton action=\"#{hotelBooking.bookHotel(hotel, user)}\" value="
+"\"Book Hotel\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:29
+#, no-c-format
+msgid ""
+"The parameters <literal>hotel</literal> and <literal>user</literal> will be "
+"evaluated as value expressions and passed to the <literal>bookHotel()</"
+"literal> method of the component. This gives you an alternative to the use "
+"of <literal>@In</literal>."
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:32
+#, no-c-format
+msgid "Any value expression may be used as a parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:35
+#, no-c-format
+msgid ""
+"&lt;h:commandButton action=\"#{hotelBooking.bookHotel(hotel.id, user."
+"username)}\" value=\"Book Hotel\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:36
+#, no-c-format
+msgid "You may even pass literal strings using single or double quotes:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:39
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=&#8221;#{printer.println( &#8216;Hello world!"
+"&#8217; )}&#8221; value=&#8221;Hello&#8221;/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:40
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=&#8217;#{printer.println( &#8220;Hello "
+"again&#8221; )}&#8217; value=&#8217;Hello&#8217;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:41
+#, no-c-format
+msgid ""
+"You might even want to use this notation for all your action methods, even "
+"when you don&#8217;t have parameters to pass. This improves readability by "
+"making it clear that the expression is a method expression and not a value "
+"expression:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:44
+#, no-c-format
+msgid "&lt;s:link value=\"Cancel\" action=\"#{hotelBooking.cancel()}\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:48
+#, no-c-format
+msgid "Limitations"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:49
+#, no-c-format
+msgid "Please be aware of the following limitations:"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:53
+#, no-c-format
+msgid "Incompatibility with JSP 2.1"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:54
+#, no-c-format
+msgid ""
+"This extension is not currently compatible with JSP 2.1. So if you want to "
+"use this extension with JSF 1.2, you will need to use Facelets. The "
+"extension works correctly with JSP 2.0."
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:60
+#, no-c-format
+msgid "Calling a <literal>MethodExpression</literal> from Java code"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:61
+#, no-c-format
+msgid ""
+"Normally, when a <literal>MethodExpression</literal> or "
+"<literal>MethodBinding</literal> is created, the parameter types are passed "
+"in by JSF. In the case of a method binding, JSF assumes that there are no "
+"parameters to pass. With this extension, we can&#8217;t know the parameter "
+"types until after the expression has been evaluated. This has two minor "
+"consequences:"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:66
+#, no-c-format
+msgid ""
+"When you invoke a <literal>MethodExpression</literal> in Java code, "
+"parameters you pass may be ignored. Parameters defined in the expression "
+"will take precedence."
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:71
+#, no-c-format
+msgid ""
+"Ordinarily, it is safe to call <literal>methodExpression.getMethodInfo()."
+"getParamTypes()</literal> at any time. For an expression with parameters, "
+"you must first invoke the <literal>MethodExpression</literal> before calling "
+"<literal>getParamTypes()</literal>."
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:76
+#, no-c-format
+msgid ""
+"Both of these cases are exceedingly rare and only apply when you want to "
+"invoke the <literal>MethodExpression</literal> by hand in Java code."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Events.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Events.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Events.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1430 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Events.xml:10
+#, no-c-format
+msgid "Events, interceptors and exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:11
+#, no-c-format
+msgid ""
+"Complementing the contextual component model, there are two further basic "
+"concepts that facilitate the extreme loose-coupling that is the distinctive "
+"feature of Seam applications. The first is a strong event model where events "
+"may be mapped to event listeners via JSF-like method binding expressions. "
+"The second is the pervasive use of annotations and interceptors to apply "
+"cross-cutting concerns to components which implement business logic."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:14
+#, no-c-format
+msgid "Seam events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:15
+#, no-c-format
+msgid ""
+"The Seam component model was developed for use with <emphasis>event-driven "
+"applications</emphasis>, specifically to enable the development of fine-"
+"grained, loosely-coupled components in a fine-grained eventing model. Events "
+"in Seam come in several types, most of which we have already seen:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:20
+#, no-c-format
+msgid "JSF events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:25
+#, no-c-format
+msgid "jBPM transition events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:30
+#, no-c-format
+msgid "Seam page actions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:35
+#, no-c-format
+msgid "Seam component-driven events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:40
+#, no-c-format
+msgid "Seam contextual events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:45
+#, no-c-format
+msgid ""
+"All of these various kinds of events are mapped to Seam components via JSF "
+"EL method binding expressions. For a JSF event, this is defined in the JSF "
+"template:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:48
+#, no-c-format
+msgid ""
+"&lt;h:commandButton value=\"Click me!\" action=\"#{helloWorld.sayHello}\"/"
+"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:49
+#, no-c-format
+msgid ""
+"For a jBPM transition event, it is specified in the jBPM process definition "
+"or pageflow definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:52
+#, no-c-format
+msgid ""
+"&lt;start-page name=\"hello\" view-id=\"/hello.jsp\"&gt;\n"
+"    &lt;transition to=\"hello\"&gt;\n"
+"        &lt;action expression=\"#{helloWorld.sayHello}\"/&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/start-page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:53
+#, no-c-format
+msgid ""
+"You can find out more information about JSF events and jBPM events "
+"elsewhere. Lets concentrate for now upon the two additional kinds of events "
+"defined by Seam."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:56
+#, no-c-format
+msgid "Page actions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:57
+#, no-c-format
+msgid ""
+"A Seam page action is an event that occurs just before we render a page. We "
+"declare page actions in <literal>WEB-INF/pages.xml</literal>. We can define "
+"a page action for either a particular JSF view id:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:60
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\" action=\"#{helloWorld.sayHello}\"/&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:61
+#, no-c-format
+msgid ""
+"Or we can use a wildcard to specify an action that applies to all view ids "
+"that match the pattern:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:64
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello/*\" action=\"#{helloWorld.sayHello}\"/&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:65
+#, no-c-format
+msgid ""
+"If multiple wildcarded page actions match the current view-id, Seam will "
+"call all the actions, in order of least-specific to most-specific."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:68
+#, no-c-format
+msgid ""
+"The page action method can return a JSF outcome. If the outcome is non-null, "
+"Seam will delegate to the defined JSFadn Seam navigation rules and a "
+"different view may end up being rendered."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:71
+#, no-c-format
+msgid ""
+"Furthermore, the view id mentioned in the <literal>&lt;page&gt;</literal> "
+"element need not correspond to a real JSP or Facelets page! So, we can "
+"reproduce the functionality of a traditional action-oriented framework like "
+"Struts or WebWork using page actions. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:74
+#, no-c-format
+msgid "TODO: translate struts action into page action"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:75
+#, no-c-format
+msgid ""
+"This is quite useful if you want to do complex things in response to non-"
+"faces requests (for example, HTTP GET requests)."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:78
+#, no-c-format
+msgid "Page parameters"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:79
+#, no-c-format
+msgid ""
+"A JSF faces request (a form submission) encapsulates both an \"action\" (a "
+"method binding) and \"parameters\" (input value bindings). A page action "
+"might also needs parameters!"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:82
+#, no-c-format
+msgid ""
+"Since GET requests are bookmarkable, page parameters are passed as human-"
+"readable request parameters. (Unlike JSF form inputs, which are anything "
+"but!)"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:85
+#, no-c-format
+msgid ""
+"Seam lets us provide a value binding that maps a named request parameter to "
+"an attribute of a model object."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:88
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\" action=\"#{helloWorld.sayHello}\"&gt;\n"
+"        &lt;param name=\"firstName\" value=\"#{person.firstName}\"/&gt;\n"
+"        &lt;param name=\"lastName\" value=\"#{person.lastName}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:89
+#, no-c-format
+msgid ""
+"The <literal>&lt;param&gt;</literal> declaration is bidirectional, just like "
+"a value binding for a JSF input:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:94
+#, no-c-format
+msgid ""
+"When a non-faces (GET) request for the view id occurs, Seam sets the value "
+"of the named request parameter onto the model object, after performing "
+"appropriate type conversions."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:99
+#, no-c-format
+msgid ""
+"Any <literal>&lt;s:link&gt;</literal> or <literal>&lt;s:button&gt;</literal> "
+"transparently includes the request parameter. The value of the parameter is "
+"determined by evaluating the value binding during the render phase (when the "
+"<literal>&lt;s:link&gt;</literal> is rendered)."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:104
+#, no-c-format
+msgid ""
+"Any navigation rule with a <literal>&lt;redirect/&gt;</literal> to the view "
+"id transparently includes the request parameter. The value of the parameter "
+"is determined by evaluating the value binding at the end of the invoke "
+"application phase."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:109
+#, no-c-format
+msgid ""
+"The value is transparently propagated with any JSF form submission for the "
+"page with the given view id. (This means that view parameters behave like "
+"<literal>PAGE</literal>-scoped context variables for faces requests."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:114
+#, no-c-format
+msgid ""
+"The essential idea behind all this is that <emphasis>however</emphasis> we "
+"get from any other page to <literal>/hello.jsp</literal> (or from <literal>/"
+"hello.jsp</literal> back to <literal>/hello.jsp</literal>), the value of the "
+"model attribute referred to in the value binding is \"remembered\", without "
+"the need for a conversation (or other server-side state)."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:117
+#, no-c-format
+msgid ""
+"This all sounds pretty complex, and you're probably wondering if such an "
+"exotic construct is really worth the effort. Actually, the idea is very "
+"natural once you \"get it\". It is definitely worth taking the time to "
+"understand this stuff. Page parameters are the most elegant way to propagate "
+"state across a non-faces request. They are especially cool for problems like "
+"search screens with bookmarkable results pages, where we would like to be "
+"able to write our application code to handle both POST and GET requests with "
+"the same code. Page parameters eliminate repetitive listing of request "
+"parameters in the view definition and make redirects much easier to code."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:120
+#, no-c-format
+msgid ""
+"Note that you don't need an actual page action method binding to use a page "
+"parameter. The following is perfectly valid:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:123
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\"&gt;\n"
+"        &lt;param name=\"firstName\" value=\"#{person.firstName}\"/&gt;\n"
+"        &lt;param name=\"lastName\" value=\"#{person.lastName}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:124
+#, no-c-format
+msgid "You can even specify a JSF converter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:127
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/calculator.jsp\" action=\"#{calculator.calculate}"
+"\"&gt;\n"
+"        &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"        &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"        &lt;param name=\"op\" converterId=\"com.my.calculator."
+"OperatorConverter\" value=\"#{calculator.op}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:128
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/calculator.jsp\" action=\"#{calculator.calculate}"
+"\"&gt;\n"
+"        &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"        &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"        &lt;param name=\"op\" converter=\"#{operatorConverter}\" value=\"#"
+"{calculator.op}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:129
+#, no-c-format
+msgid "Navigation"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:130
+#, no-c-format
+msgid ""
+"You can use standard JSF navigation rules defined in <literal>faces-config."
+"xml</literal> in a Seam application. However, JSF navigation rules have a "
+"number of annoying limitations:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:135
+#, no-c-format
+msgid ""
+"It is not possible to specify request parameters to be used when redirecting."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:140
+#, no-c-format
+msgid "It is not possible to begin or end conversations from a rule."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:145
+#, no-c-format
+msgid ""
+"Rules work by evaluating the return value of the action method; it is not "
+"possible to evaluate an arbitrary EL expression."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:150
+#, no-c-format
+msgid ""
+"A further problem is that \"orchestration\" logic gets scattered between "
+"<literal>pages.xml</literal> and <literal>faces-config.xml</literal>. It's "
+"better to unify this logic into <literal>pages.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:153
+#, no-c-format
+msgid "This JSF navigation rule:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:156
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"    &lt;from-view-id&gt;/editDocument.xhtml&lt;/from-view-id&gt;\n"
+"    \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-action&gt;#{documentEditor.update}&lt;/from-action&gt;\n"
+"        &lt;from-outcome&gt;success&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/viewDocument.xhtml&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"    \n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:157
+#, no-c-format
+msgid "Can be rewritten as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:160
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if-outcome=\"success\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:161
+#, no-c-format
+msgid ""
+"But it would be even nicer if we didn't have to pollute our "
+"<literal>DocumentEditor</literal> component with string-valued return values "
+"(the JSF outcomes). So Seam lets us write:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:164
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\" \n"
+"                   evaluate=\"#{documentEditor.errors.size}\"&gt;\n"
+"        &lt;rule if-outcome=\"0\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:165
+#, no-c-format
+msgid "Or even:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:168
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:169
+#, no-c-format
+msgid ""
+"The first form evaluates a value binding to determine the outcome value to "
+"be used by the subsequent rules. The second approach ignores the outcome and "
+"evaluates a value binding for each possible rule."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:172
+#, no-c-format
+msgid ""
+"Of course, when an update succeeds, we probably want to end the current "
+"conversation. We can do that like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:175
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:176
+#, no-c-format
+msgid ""
+"But ending the conversation loses any state associated with the "
+"conversation, including the document we are currently interested in! One "
+"solution would be to use an immediate render instead of a redirect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:179
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:180
+#, no-c-format
+msgid ""
+"But the correct solution is to pass the document id as a request parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:183
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"&gt;\n"
+"                &lt;param name=\"documentId\" value=\"#{documentEditor."
+"documentId}\"/&gt;\n"
+"            &lt;/redirect&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:184
+#, no-c-format
+msgid ""
+"Null outcomes are a special case in JSF. The null outcome is interpreted to "
+"mean \"redisplay the page\". The following navigation rule matches any non-"
+"null outcome, but <emphasis>not</emphasis> the null outcome:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:187
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule&gt;\n"
+"            &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:188
+#, no-c-format
+msgid ""
+"If you want to perform navigation when a null outcome occurs, use the "
+"following form instead:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:191
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:192
+#, no-c-format
+msgid ""
+"Fine-grained files for definition of navigation, page actions and parameters"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:193
+#, no-c-format
+msgid ""
+"If you have a lot of different page actions and page parameters, or even "
+"just a lot of navigation rules, you will almost certainly want to split the "
+"declarations up over multiple files. You can define actions and parameters "
+"for a page with the view id <literal>/calc/calculator.jsp</literal> in a "
+"resource named <literal>calc/calculator.page.xml</literal>. The root element "
+"in this case is the <literal>&lt;page&gt;</literal> element, and the view id "
+"is implied:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:196
+#, no-c-format
+msgid ""
+"&lt;page action=\"#{calculator.calculate}\"&gt;\n"
+"    &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"    &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"    &lt;param name=\"op\" converter=\"#{operatorConverter}\" value=\"#"
+"{calculator.op}\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:197
+#, no-c-format
+msgid "Component-driven events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:198
+#, no-c-format
+msgid ""
+"Seam components can interact by simply calling each others methods. Stateful "
+"components may even implement the observer/observable pattern. But to enable "
+"components to interact in a more loosely-coupled fashion than is possible "
+"when the components call each others methods directly, Seam provides "
+"<emphasis>component-driven events</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:201
+#, no-c-format
+msgid ""
+"We specify event listeners (observers) in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:204
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;event type=\"hello\"&gt;\n"
+"        &lt;action expression=\"#{helloListener.sayHelloBack}\"/&gt;\n"
+"        &lt;action expression=\"#{logger.logHello}\"/&gt;\n"
+"    &lt;/event&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:205
+#, no-c-format
+msgid "Where the <emphasis>event type</emphasis> is just an arbitrary string."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:208
+#, no-c-format
+msgid ""
+"When an event occurs, the actions registered for that event will be called "
+"in the order they appear in <literal>components.xml</literal>. How does a "
+"component raise an event? Seam provides a built-in component for this."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:211
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World!\");\n"
+"        Events.instance().raiseEvent(\"hello\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:212
+#, no-c-format
+msgid "Or you can use an annotation."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:215
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    @RaiseEvent(\"hello\")\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World!\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:216
+#, no-c-format
+msgid ""
+"Notice that this event producer has no dependency upon event consumers. The "
+"event listener may now be implemented with absolutely no dependency upon the "
+"producer:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:219
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    public void sayHelloBack() {\n"
+"        FacesMessages.instance().add(\"Hello to you too!\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:220
+#, no-c-format
+msgid ""
+"The method binding defined in <literal>components.xml</literal> above takes "
+"care of mapping the event to the consumer. If you don't like futzing about "
+"in the <literal>components.xml</literal> file, you can use an annotation "
+"instead:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:223
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    @Observer(\"hello\")\n"
+"    public void sayHelloBack() {\n"
+"        FacesMessages.instance().add(\"Hello to you too!\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:224
+#, no-c-format
+msgid ""
+"You might wonder why I've not mentioned anything about event objects in this "
+"discussion. In Seam, there is no need for an event object to propagate state "
+"between event producer and listener. State is held in the Seam contexts, and "
+"is shared between components. However, if you really want to pass an event "
+"object, you can:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:227
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    private String name;\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World, my name is #0.\", "
+"name);\n"
+"        Events.instance().raiseEvent(\"hello\", name);\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:228
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    @Observer(\"hello\")\n"
+"    public void sayHelloBack(String name) {\n"
+"        FacesMessages.instance().add(\"Hello #0!\", name);\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:229
+#, no-c-format
+msgid "Contextual events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:230
+#, no-c-format
+msgid ""
+"Seam defines a number of built-in events that the application can use to "
+"perform special kinds of framework integration. The events are:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:235
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preSetVariable.&lt;name&gt;</literal> &mdash; called "
+"when the context variable &lt;name&gt; is set"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:240
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postSetVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is set"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:245
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preRemoveVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is unset"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:250
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postRemoveVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is unset"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:255
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preDestroyContext.&lt;SCOPE&gt;</literal> &mdash; "
+"called before the &lt;SCOPE&gt; context is destroyed"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:260
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postDestroyContext.&lt;SCOPE&gt;</literal> &mdash; "
+"called after the &lt;SCOPE&gt; context is destroyed"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:265
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beginConversation </literal>&mdash; called whenever "
+"a long-running conversation begins"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:270
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endConversation </literal>&mdash; called whenever a "
+"long-running conversation ends"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:275
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beginPageflow.&lt;name&gt; </literal>&mdash; called "
+"when the pageflow &lt;name&gt; begins"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:280
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endPageflow.&lt;name&gt; </literal>&mdash; called "
+"when the pageflow &lt;name&gt; ends"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:285
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.createProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; is created"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:290
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; ends"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:295
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.initProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; is associated with the conversation"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:300
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.initTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is associated with the conversation"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:305
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.startTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is started"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:310
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is ended"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:315
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postCreate.&lt;name&gt; </literal>&mdash; called "
+"when the component &lt;name&gt; is created"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:320
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preDestroy.&lt;name&gt; </literal>&mdash; called "
+"when the component &lt;name&gt; is destroyed"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:325
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beforePhase </literal>&mdash; called before the "
+"start of a JSF phase"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:330
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.afterPhase </literal>&mdash; called after the end of "
+"a JSF phase"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:335
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postAuthenticate.&lt;name&gt; </literal>&mdash; "
+"called after a user is authenticated"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:340
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preAuthenticate.&lt;name&gt; </literal>&mdash; "
+"called before attempting to authenticate a user"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:345
+#, no-c-format
+msgid ""
+"Seam components may observe any of these events in just the same way they "
+"observe any other component-driven events."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:348
+#, no-c-format
+msgid "Seam interceptors"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:349
+#, no-c-format
+msgid ""
+"EJB 3.0 introduced a standard interceptor model for session bean components. "
+"To add an interceptor to a bean, you need to write a class with a method "
+"annotated <literal>@AroundInvoke</literal> and annotate the bean with an "
+"<literal>@Interceptors</literal> annotation that specifies the name of the "
+"interceptor class. For example, the following interceptor checks that the "
+"user is logged in before allowing invoking an action listener method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:352
+#, no-c-format
+msgid ""
+"public class LoggedInInterceptor {\n"
+"\n"
+"   @AroundInvoke\n"
+"   public Object checkLoggedIn(InvocationContext invocation) throws "
+"Exception {\n"
+"   \n"
+"      boolean isLoggedIn = Contexts.getSessionContext().get(\"loggedIn\")!"
+"=null;\n"
+"      if (isLoggedIn) {\n"
+"         //the user is already logged in\n"
+"         return invocation.proceed();\n"
+"      }\n"
+"      else {\n"
+"         //the user is not logged in, fwd to login page\n"
+"         return \"login\";\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:353
+#, no-c-format
+msgid ""
+"To apply this interceptor to a session bean which acts as an action "
+"listener, we must annotate the session bean <literal>@Interceptors"
+"(LoggedInInterceptor.class)</literal>. This is a somewhat ugly annotation. "
+"Seam builds upon the interceptor framework in EJB3 by allowing you to use "
+"<literal>@Interceptors</literal> as a meta-annotation. In our example, we "
+"would create an <literal>@LoggedIn</literal> annotation, as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:356
+#, no-c-format
+msgid ""
+"@Target(TYPE)\n"
+"@Retention(RUNTIME)\n"
+"@Interceptors(LoggedInInterceptor.class)\n"
+"public @interface LoggedIn {}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:357
+#, no-c-format
+msgid ""
+"We can now simply annotate our action listener bean with <literal>@LoggedIn</"
+"literal> to apply the interceptor."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:360
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"changePasswordAction\")\n"
+"@LoggedIn\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class ChangePasswordAction implements ChangePassword { \n"
+"    \n"
+"    ...\n"
+"    \n"
+"    public String changePassword() { ... }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:361
+#, no-c-format
+msgid ""
+"If interceptor ordering is important (it usually is), you can add "
+"<literal>@Interceptor</literal> annotations to your interceptor classes to "
+"specify a partial order of interceptors."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:364
+#, no-c-format
+msgid ""
+"@Interceptor(around={BijectionInterceptor.class,\n"
+"                     ValidationInterceptor.class,\n"
+"                     ConversationInterceptor.class},\n"
+"             within=RemoveInterceptor.class)\n"
+"public class LoggedInInterceptor\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:365
+#, no-c-format
+msgid ""
+"You can even have a \"client-side\" interceptor, that runs around any of the "
+"built-in functionality of EJB3:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:368
+#, no-c-format
+msgid ""
+"@Interceptor(type=CLIENT)\n"
+"public class LoggedInInterceptor\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:369
+#, no-c-format
+msgid ""
+"EJB interceptors are stateful, with a lifecycle that is the same as the "
+"component they intercept. For interceptors which do not need to maintain "
+"state, Seam lets you get a performance optimization by specifying "
+"<literal>@Interceptor(stateless=true)</literal>."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:372
+#, no-c-format
+msgid ""
+"Much of the functionality of Seam is implemented as a set of built-in Seam "
+"interceptors, including the interceptors named in the previous example. You "
+"don't have to explicitly specify these interceptors by annotating your "
+"components; they exist for all interceptable Seam components."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:375
+#, no-c-format
+msgid ""
+"You can even use Seam interceptors with JavaBean components, not just EJB3 "
+"beans!"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:378
+#, no-c-format
+msgid ""
+"EJB defines interception not only for business methods (using "
+"<literal>@AroundInvoke</literal>), but also for the lifecycle methods "
+"<literal>@PostConstruct</literal>, <literal>@PreDestroy</literal>, "
+"<literal>@PrePassivate</literal> and <literal>@PostActive</literal>. Seam "
+"supports all these lifecycle methods on both component and interceptor not "
+"only for EJB3 beans, but also for JavaBean components (except "
+"<literal>@PreDestroy</literal> which is not meaningful for JavaBean "
+"components)."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:381
+#, no-c-format
+msgid "Managing exceptions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:382
+#, no-c-format
+msgid ""
+"JSF is surprisingly limited when it comes to exception handling. As a "
+"partial workaround for this problem, Seam lets you define how a particular "
+"class of exception is to be treated by annotating the exception class, or "
+"declaring the exception class in an XML file. This facility is meant to be "
+"combined with the EJB 3.0-standard <literal>@ApplicationException</literal> "
+"annotation which specifies whether the exception should cause a transaction "
+"rollback."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:385
+#, no-c-format
+msgid "Exceptions and transactions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:386
+#, no-c-format
+msgid ""
+"EJB specifies well-defined rules that let us control whether an exception "
+"immediately marks the current transaction for rollback when it is thrown by "
+"a business method of the bean: <emphasis>system exceptions</emphasis> always "
+"cause a transaction rollback, <emphasis>application exceptions</emphasis> do "
+"not cause a rollback by default, but they do if "
+"<literal>@ApplicationException(rollback=true)</literal> is specified. (An "
+"application exception is any checked exception, or any unchecked exception "
+"annotated <literal>@ApplicationException</literal>. A system exception is "
+"any unchecked exception without an <literal>@ApplicationException</literal> "
+"annotation.)"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:389
+#, no-c-format
+msgid ""
+"Note that there is a difference between marking a transaction for rollback, "
+"and actually rolling it back. The exception rules say that the transaction "
+"should be marked rollback only, but it may still be active after the "
+"exception is thrown."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:392
+#, no-c-format
+msgid ""
+"Seam applies the EJB 3.0 exception rollback rules also to Seam JavaBean "
+"components."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:395
+#, no-c-format
+msgid ""
+"But these rules only apply in the Seam component layer. What about an "
+"exception that is uncaught and propagates out of the Seam component layer, "
+"and out of the JSF layer? Well, it is always wrong to leave a dangling "
+"transaction open, so Seam rolls back any active transaction when an "
+"exception occurs and is uncaught in the Seam component layer."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:398
+#, no-c-format
+msgid "Enabling Seam exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:399
+#, no-c-format
+msgid ""
+"To enable Seam's exception handling, we need to make sure we have the master "
+"servlet filter declared in <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:402
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.servlet.SeamFilter&lt;/filter-"
+"class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:403
+#, no-c-format
+msgid "Using annotations for exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:404
+#, no-c-format
+msgid ""
+"The following exception results in a HTTP 404 error whenever it propagates "
+"out of the Seam component layer. It does not roll back the current "
+"transaction immediately when thrown, but the transaction will be rolled back "
+"if it the exception is not caught by another Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:407
+#, no-c-format
+msgid ""
+"@HttpError(errorCode=404)\n"
+"public class ApplicationException extends Exception { ... }"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:408
+#, no-c-format
+msgid ""
+"This exception results in a browser redirect whenever it propagates out of "
+"the Seam component layer. It also ends the current conversation. It causes "
+"an immediate rollback of the current transaction."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:411
+#, no-c-format
+msgid ""
+"@Redirect(viewId=\"/failure.xhtml\", end=true)\n"
+"@ApplicationException(rollback=true)\n"
+"public class UnrecoverableApplicationException extends RuntimeException "
+"{ ... }"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:412
+#, no-c-format
+msgid ""
+"Note that <literal>@Redirect</literal> does not work for exceptions which "
+"occur during the render phase of the JSF lifecycle."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:415
+#, no-c-format
+msgid ""
+"This exception results in a redirect, along with a message to the user, when "
+"it propagates out of the Seam component layer. It also immediately rolls "
+"back the current transaction."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:418
+#, no-c-format
+msgid ""
+"@Redirect(viewId=\"/error.xhtml\", message=\"Unexpected error\")\n"
+"public class SystemException extends RuntimeException { ... }"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:419
+#, no-c-format
+msgid "Using XML for exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:420
+#, no-c-format
+msgid ""
+"Since we can't add annotations to all the exception classes we are "
+"interested in, Seam also lets us specify this functionality in "
+"<literal>pages.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:423
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   \n"
+"   &lt;exception class=\"javax.persistence.EntityNotFoundException\"&gt;\n"
+"      &lt;http-error error-code=\"404\"/&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"   &lt;exception class=\"javax.persistence.PersistenceException\"&gt;\n"
+"      &lt;end-conversation/&gt;\n"
+"      &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"          &lt;message&gt;Database access failed&lt;/message&gt;\n"
+"      &lt;/redirect&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"   &lt;exception&gt;\n"
+"      &lt;end-conversation/&gt;\n"
+"      &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"          &lt;message&gt;Unexpected failure&lt;/message&gt;\n"
+"      &lt;/redirect&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:424
+#, no-c-format
+msgid ""
+"The last <literal>&lt;exception&gt;</literal> declaration does not specify a "
+"class, and is a catch-all for any exception for which handling is not "
+"otherwise specified via annotations or in <literal>pages.xml</literal>."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Framework.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Framework.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Framework.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,828 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Framework.xml:10
+#, no-c-format
+msgid "The Seam Application Framework"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:11
+#, no-c-format
+msgid ""
+"Seam makes it really easy to create applications by writing plain Java "
+"classes with annotations, which don't need to extend any special interfaces "
+"or superclasses. But we can simplify some common programming tasks even "
+"further, by providing a set of pre-built components which can be re-used "
+"either by configuration in <literal>components.xml</literal> (for very "
+"simple cases) or extension."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:14
+#, no-c-format
+msgid ""
+"The <emphasis>Seam Application Framework</emphasis> can reduce the amount of "
+"code you need to write when doing basic database access in a web "
+"application, using either Hibernate or JPA."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:17
+#, no-c-format
+msgid ""
+"We should emphasize that the framework is extremely simple, just a handful "
+"of simple classes that are easy to understand and extend. The \"magic\" is "
+"in Seam itself&mdash;the same magic you use when creating any Seam "
+"application even without using this framework."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:21
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:22
+#, no-c-format
+msgid ""
+"The components provided by the Seam application framework may be used in one "
+"of two different approaches. The first way is to install and configure an "
+"instance of the component in <literal>components.xml</literal>, just like we "
+"have done with other kinds of built-in Seam components. For example, the "
+"following fragment from <literal>components.xml</literal> installs a "
+"component which can perform basic CRUD operations for a <literal>Contact</"
+"literal> entity:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:25
+#, no-c-format
+msgid ""
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" \n"
+"                       entity-manager=\"#{personDatabase}\"&gt;\n"
+"    &lt;framework:id&gt;#{param.personId}&lt;/framework:id&gt;\n"
+"&lt;/framework:entity-home&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:26
+#, no-c-format
+msgid ""
+"If that looks a bit too much like \"programming in XML\" for your taste, you "
+"can use extension instead:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:29
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; implements "
+"LocalPersonHome {\n"
+"    @RequestParameter String personId;\n"
+"    @In EntityManager personDatabase;\n"
+"    \n"
+"    public Object getId() { return personId; }\n"
+"    public EntityManager getEntityManager() { return personDatabase; }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:30
+#, no-c-format
+msgid ""
+"The second approach has one huge advantage: you can easily add extra "
+"functionality, and override the built-in functionality (the framework "
+"classes were carefully designed for extension and customization)."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:33
+#, no-c-format
+msgid ""
+"A second advantage is that your classes may be EJB stateful sessin beans, if "
+"you like. (They do not have to be, they can be plain JavaBean components if "
+"you prefer.)"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:36
+#, no-c-format
+msgid ""
+"At this time, the Seam Application Framework provides just four built-in "
+"components: <literal>EntityHome</literal> and <literal>HibernateEntityHome</"
+"literal> for CRUD, along with <literal>EntityQuery</literal> and "
+"<literal>HibernateEntityQuery</literal> for queries."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:39
+#, no-c-format
+msgid ""
+"The Home and Query components are written so that they can function with a "
+"scope of session, event or conversation. Which scope you use depends upon "
+"the state model you wish to use in your application."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:42
+#, no-c-format
+msgid ""
+"The Seam Application Framework only works with Seam-managed persistence "
+"contexts. By default, the components will look for a persistence context "
+"named <literal>entityManager</literal>."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:48
+#, no-c-format
+msgid "Home objects"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:49
+#, no-c-format
+msgid ""
+"A Home object provides persistence operations for a particular entity class. "
+"Suppose we have our trusty <literal>Person</literal> class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:52
+#, no-c-format
+msgid ""
+"@Entity\n"
+"public class Person {\n"
+"    @Id private Long id;\n"
+"    private String firstName;\n"
+"    private String lastName;\n"
+"    private Country nationality;\n"
+"    \n"
+"    //getters and setters...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:53
+#, no-c-format
+msgid ""
+"We can define a <literal>personHome</literal> component either via "
+"configuration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:56
+#, no-c-format
+msgid ""
+"&lt;framework:entity-home name=\"personHome\" entity-class=\"eg.Person\" /"
+"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:57
+#, no-c-format
+msgid "Or via extension:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:60
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:61
+#, no-c-format
+msgid ""
+"A Home object provides the following operations: <literal>persist()</"
+"literal>, <literal>remove()</literal>, <literal>update()</literal> and "
+"<literal>getInstance()</literal>. Before you can call the <literal>remove()</"
+"literal>, or <literal>update()</literal> operations, you must first set the "
+"identifier of the object you are interested in, using the <literal>setId()</"
+"literal> method."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:64
+#, no-c-format
+msgid "We can use a Home directly from a JSF page, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:67
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Create Person&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{personHome.instance."
+"firstName}\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{personHome.instance."
+"lastName}\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:68
+#, no-c-format
+msgid ""
+"Usually, it is much nicer to be able to refer to the <literal>Person</"
+"literal> merely as <literal>person</literal>, so let's make that possible by "
+"adding a line to <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:71
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:72
+#, no-c-format
+msgid ""
+"(If we are using configuration.) Or by adding a <literal>@Factory</literal> "
+"method to <literal>PersonHome</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:75
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:76
+#, no-c-format
+msgid ""
+"(If we are using extension.) This change simplifies our JSF page to the "
+"following:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:79
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Create Person&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{person.firstName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{person.lastName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:80
+#, no-c-format
+msgid ""
+"Well, that lets us create new <literal>Person</literal> entries. Yes, that "
+"is all the code that is required! Now, if we want to be able to display, "
+"update and delete pre-existing <literal>Person</literal> entries in the "
+"database, we need to be able to pass the entry identifier to the "
+"<literal>PersonHome</literal>. Page parameters are a great way to do that:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:83
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page viewid=\"/editPerson.jsp\"&gt;\n"
+"        &lt;param name=\"personId\" value=\"#{personHome.id}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:84
+#, no-c-format
+msgid "Now we can add the extra operations to our JSF page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:87
+#, no-c-format
+msgid ""
+"&lt;h1&gt;\n"
+"    &lt;h:outputText rendered=\"#{!personHome.managed}\" value=\"Create "
+"Person\"/&gt;\n"
+"    &lt;h:outputText rendered=\"#{personHome.managed}\" value=\"Edit Person"
+"\"/&gt;\n"
+"&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{person.firstName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{person.lastName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\" \n"
+"            rendered=\"#{!personHome.managed}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Update Person\" action=\"#{personHome."
+"update}\" \n"
+"            rendered=\"#{personHome.managed}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Delete Person\" action=\"#{personHome."
+"remove}\" \n"
+"            rendered=\"#{personHome.managed}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:88
+#, no-c-format
+msgid ""
+"When we link to the page with no request parameters, the page will be "
+"displayed as a \"Create Person\" page. When we provide a value for the "
+"<literal>personId</literal> request parameter, it will be an \"Edit Person\" "
+"page."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:91
+#, no-c-format
+msgid ""
+"Suppose we need to create <literal>Person</literal> entries with their "
+"nationality initialized. We can do that easily, via configuration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:94
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" \n"
+"                       new-instance=\"#{newPerson}\"/&gt;\n"
+"\n"
+"&lt;component name=\"newPerson\" \n"
+"           class=\"eg.Person\"&gt;\n"
+"    &lt;property name=\"nationality\"&gt;#{country}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:95
+#, no-c-format
+msgid "Or by extension:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:98
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:99
+#, no-c-format
+msgid ""
+"Of course, the <literal>Country</literal> could be an object managed by "
+"another Home object, for example, <literal>CountryHome</literal>."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:102
+#, no-c-format
+msgid ""
+"To add more sophisticated operations (association management, etc), we can "
+"just add methods to <literal>PersonHome</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:105
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"    public void migrate()\n"
+"    {\n"
+"        getInstance().setCountry(country);\n"
+"        update();\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:106
+#, no-c-format
+msgid ""
+"The Home object automatically displays faces messages when an operation is "
+"successful. To customize these messages we can, again, use configuration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:109
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\"\n"
+"                       entity-class=\"eg.Person\"\n"
+"                       new-instance=\"#{newPerson}\"&gt;\n"
+"    &lt;framework:created-message&gt;New person #{person.firstName} #{person."
+"lastName} \n"
+"        created&lt;/framework:created-message&gt;\n"
+"    &lt;framework:deleted-message&gt;Person #{person.firstName} #{person."
+"lastName}\n"
+"        deleted&lt;/framework:deleted-message&gt;\n"
+"    &lt;framework:updated-message&gt;Person #{person.firstName} #{person."
+"lastName} \n"
+"        updated&lt;/framework:updated-message&gt;\n"
+"&lt;/framework:entity-home&gt;\n"
+"\n"
+"&lt;component name=\"newPerson\" \n"
+"           class=\"eg.Person\"&gt;\n"
+"    &lt;property name=\"nationality\"&gt;#{country}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:110
+#, no-c-format
+msgid "Or extension:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:113
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"    protected String getCreatedMessage() { return \"New person #{person."
+"firstName} \n"
+"        #{person.lastName} created\"; }\n"
+"    protected String getUpdatedMessage() { return \"Person #{person."
+"firstName} \n"
+"        #{person.lastName} updated\"; }\n"
+"    protected String getDeletedMessage() { return \"Person #{person."
+"firstName} \n"
+"        #{person.lastName} deleted\"; }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:114
+#, no-c-format
+msgid ""
+"But the best way to specify the messages is to put them in a resource bundle "
+"known to Seam (the bundle named <literal>messages</literal>, by default)."
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:117
+#, no-c-format
+msgid ""
+"Person_created=New person #{person.firstName} #{person.lastName} created\n"
+"Person_deleted=Person #{person.firstName} #{person.lastName} deleted\n"
+"Person_updated=Person #{person.firstName} #{person.lastName} updated"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:118
+#, no-c-format
+msgid ""
+"This enables internationalization, and keeps your code and configuration "
+"clean of presentation concerns."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:121
+#, no-c-format
+msgid ""
+"The final step is to add validation functionality to the page, using "
+"<literal>&lt;s:validateAll&gt;</literal> and <literal>&lt;s:decorate&gt;</"
+"literal>, but I'll leave that for you to figure out."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:127
+#, no-c-format
+msgid "Query objects"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:128
+#, no-c-format
+msgid ""
+"If we need a list of all <literal>Person</literal> instance in the database, "
+"we can use a Query object. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:131
+#, no-c-format
+msgid ""
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:132
+#, no-c-format
+msgid "We can use it from a JSF page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:135
+#, no-c-format
+msgid ""
+"&lt;h1&gt;List of people&lt;/h1&gt;\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view-id=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:136
+#, no-c-format
+msgid "We probably need to support pagination:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:139
+#, no-c-format
+msgid ""
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\" \n"
+"                        order=\"lastName\" \n"
+"                        max-results=\"20\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:140
+#, no-c-format
+msgid "We'll use a page parameter to determine the page to display:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:143
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page viewid=\"/searchPerson.jsp\"&gt;\n"
+"        &lt;param name=\"firstResult\" value=\"#{people.firstResult}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:144
+#, no-c-format
+msgid "The JSF code for a pagination control is a bit verbose, but manageable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:147
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Search for people&lt;/h1&gt;\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view-id=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.previousExists}\" "
+"value=\"First Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"0\"/&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.previousExists}\" "
+"value=\"Previous Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.previousFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.nextExists}\" value="
+"\"Next Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.nextFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.nextExists}\" value="
+"\"Last Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.lastFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:148
+#, no-c-format
+msgid ""
+"Real search screens let the user enter a bunch of optional search criteria "
+"to narrow the list of results returned. The Query object lets you specify "
+"optional \"restrictions\" to support this important usecase:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:151
+#, no-c-format
+msgid ""
+"&lt;component name=\"examplePerson\" class=\"Person\"/&gt;\n"
+"        \n"
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\" \n"
+"                        order=\"lastName\" \n"
+"                        max-results=\"20\"&gt;\n"
+"    &lt;framework:restrictions&gt;\n"
+"        &lt;value&gt;lower(firstName) like lower( #{examplePerson.firstName} "
+"+ '&#37;' )&lt;/value&gt;\n"
+"        &lt;value&gt;lower(lastName) like lower( #{examplePerson.lastName} + "
+"'&#37;' )&lt;/value&gt;\n"
+"    &lt;/framework:restrictions&gt;\n"
+"&lt;/framework:entity-query&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:152
+#, no-c-format
+msgid "Notice the use of an \"example\" object."
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:155
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Search for people&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{examplePerson.firstName}"
+"\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{examplePerson.lastName}"
+"\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;&lt;h:commandButton value=\"Search\" action=\"/search.jsp\"/"
+"&gt;&lt;/div&gt;\n"
+"&lt;/h:form&gt;\n"
+"\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view-id=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:156
+#, no-c-format
+msgid ""
+"The examples in this section have all shown reuse by configuration. However, "
+"reuse by extension is equally possible for Query objects."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:162
+#, no-c-format
+msgid "Controller objects"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:163
+#, no-c-format
+msgid ""
+"A totally optional part of the Seam Application Framework is the class "
+"<literal>Controller</literal> and its subclasses <literal>EntityController</"
+"literal><literal>HibernateEntityController</literal> and "
+"<literal>BusinessProcessController</literal>. These classes provide nothing "
+"more than some convenience methods for access to commonly used built-in "
+"components and methods of built-in components. They help save a few "
+"keystrokes (characters can add up!) and provide a great launchpad for new "
+"users to explore the rich functionality built in to Seam."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:166
+#, no-c-format
+msgid ""
+"For example, here is what <literal>RegisterAction</literal> from the Seam "
+"registration example would look like:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:169
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"register\")\n"
+"public class RegisterAction extends EntityController implements Register\n"
+"{\n"
+"\n"
+"   @In private User user;\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = createQuery(\"select u.username from User u where u."
+"username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getResultList();\n"
+"      \n"
+"      if ( existing.size()==0 )\n"
+"      {\n"
+"         persist(user);\n"
+"         info(\"Registered new user #{user.username}\");\n"
+"         return \"/registered.jspx\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         addFacesMessage(\"User #{user.username} already exists\");\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:170
+#, no-c-format
+msgid "As you can see, its not an earthshattering improvement..."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Gettingstarted.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Gettingstarted.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Gettingstarted.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,588 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Gettingstarted.xml:10
+#, no-c-format
+msgid "Getting started with Seam, using seam-gen"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:11
+#, no-c-format
+msgid ""
+"The Seam distribution includes a command line utility that makes it really "
+"easy to set up an Eclipse project, generate some simple Seam skeleton code, "
+"and reverse engineer an application from a pre-existing database."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:14
+#, no-c-format
+msgid ""
+"This is the easy way to get your feet wet with Seam, and gives you some "
+"ammunition for next time you find yourself trapped in an elevator with one "
+"of those tedious Ruby guys ranting about how great and wonderful his new toy "
+"is for building totally trivial applications that put things in databases."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:17
+#, no-c-format
+msgid ""
+"In this release, seam-gen works best for people with JBoss AS. You can use "
+"the generated project with other J2EE or Java EE 5 application servers by "
+"making a few manual changes to the project configuration."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:20
+#, no-c-format
+msgid ""
+"You <emphasis>can</emphasis> use seam-gen without Eclipse, but in this "
+"tutorial, we want to show you how to use it in conjunction with Eclipse for "
+"debugging and integration testing. If you don't want to install Eclipse, you "
+"can still follow along with this tutorial&mdash;all steps can be peformed "
+"from the command line."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:23
+#, no-c-format
+msgid ""
+"Seam-gen is basically just a big ugly Ant script wrapped around Hibernate "
+"Tools, together with some templates. Which means it is easy to customize if "
+"you need to."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:27
+#, no-c-format
+msgid "Before you start"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:28
+#, no-c-format
+msgid ""
+"Make sure you have JDK 5 or JDK 6, JBoss AS 4.0.5 and Ant 1.6, along with "
+"recent versions of Eclipse, the JBoss IDE plugin for Eclipse and the TestNG "
+"plugin for Eclipse correctly installed before starting. Add your JBoss "
+"installation to the JBoss Server View in Eclipse. Start JBoss in debug mode. "
+"Finally, start a command prompt in the directory where you unzipped the Seam "
+"distribution."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:34
+#, no-c-format
+msgid "Setting up a new Eclipse project"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:35
+#, no-c-format
+msgid ""
+"The first thing we need to do is configure seam-gen for your environment: "
+"JBoss AS installation directory, Eclipse workspace, and database connection. "
+"It's easy, just type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:38
+#, no-c-format
+msgid ""
+"cd jboss-seam-1.1.x\n"
+"seam setup"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:39
+#, no-c-format
+msgid "And you will be prompted for the needed information:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:42
+#, no-c-format
+msgid ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam setup\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"setup:\n"
+"    [echo] Welcome to seam-gen :-)\n"
+"    [input] Enter your Java project workspace [C:/Projects]\n"
+"\n"
+"    [input] Enter your JBoss home directory [C:/Program Files/jboss-4.0.5."
+"GA]\n"
+"\n"
+"    [input] Enter the project name [myproject]\n"
+"helloworld\n"
+"    [input] Is this project deployed as an EAR (with EJB components) or a "
+"WAR \n"
+"        (with no EJB support) [ear] (ear,war,)\n"
+"\n"
+"    [input] Enter the Java package name for your session beans [com.mydomain."
+"helloworld]\n"
+"org.jboss.helloworld\n"
+"    [input] Enter the Java package name for your entity beans [org.jboss."
+"helloworld]\n"
+"\n"
+"    [input] Enter the Java package name for your test cases [org.jboss."
+"helloworld.test]\n"
+"\n"
+"    [input] What kind of database are you using? [hsql]\n"
+"    (hsql,mysql,oracle,postgres,mssql,db2,sybase,)\n"
+"mysql\n"
+"    [input] Enter the Hibernate dialect for your database [org.hibernate."
+"dialect.MySQLDialect]\n"
+"\n"
+"    [input] Enter the filesystem path to the JDBC driver jar [lib/hsqldb."
+"jar]\n"
+"../../mysql-connector.jar\n"
+"    [input] Enter JDBC driver class for your database [com.mysql.jdbc."
+"Driver]\n"
+"\n"
+"    [input] Enter the JDBC URL for your database [jdbc:mysql:///test]\n"
+"\n"
+"    [input] Enter database username [sa]\n"
+"gavin\n"
+"    [input] Enter database password []\n"
+"\n"
+"    [input] Are you working with tables that already exist in the database? "
+"[n] (y,n,)\n"
+"y\n"
+"    [input] Do you want to drop and recreate the database tables and data in "
+"import.sql \n"
+"    each time you deploy? [n] (y,n,)\n"
+"n\n"
+"[propertyfile] Creating new property file: C:&#92;Projects&#92;jboss-"
+"seam&#92;seam-gen&#92;build.properties\n"
+"     [echo] Installing JDBC driver jar to JBoss server\n"
+"     [echo] Type 'seam new-project' to create the new project\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 1 minute 17 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:43
+#, no-c-format
+msgid ""
+"The tool provides sensible defaults, which you can accept by just pressing "
+"enter at the prompt."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:46
+#, no-c-format
+msgid ""
+"The most important choice you need to make is between EAR deployment and WAR "
+"deployment of your project. EAR projects support EJB 3.0 and require Java EE "
+"5. WAR projects do not support EJB 3.0, but may be deployed to a J2EE "
+"environment. The packaging of a WAR is also simpler to understand. If you "
+"installed JBoss with the ejb3 profile, choose <literal>ear</literal>. "
+"Otherwise, choose <literal>war</literal>. We'll assume that you've chosen an "
+"EAR deployment for the rest of the tutorial, but you can follow exactly the "
+"same steps for a WAR deployment."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:49
+#, no-c-format
+msgid ""
+"If you are working with an existing data model, make sure you tell seam-gen "
+"that the tables already exist in the database."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:52
+#, no-c-format
+msgid ""
+"The settings are stored in <literal>seam-gen/build.properties</literal>, but "
+"you can also modify them simply by running <literal>seam setup</literal> a "
+"second time."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:55
+#, no-c-format
+msgid ""
+"Now we can create a new project in our Eclipse workspace directory, by "
+"typing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:58
+#, no-c-format
+msgid "seam new-project"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:59
+#, no-c-format
+msgid ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam new-project\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"copy-lib:\n"
+"     [echo] Copying project jars ...\n"
+"     [copy] Copying 32 files to C:&#92;Projects&#92;helloworld&#92;lib\n"
+"     [copy] Copying 9 files to C:&#92;Projects&#92;helloworld&#92;embedded-"
+"ejb\n"
+"\n"
+"file-copy-wtp:\n"
+"\n"
+"file-copy:\n"
+"     [echo] Copying project resources ...\n"
+"     [copy] Copying 12 files to C:&#92;Projects&#92;helloworld&#92;"
+"resources\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;helloworld&#92;resources\n"
+"     [copy] Copying 5 files to C:&#92;Projects&#92;helloworld&#92;view\n"
+"     [copy] Copying 5 files to C:&#92;Projects&#92;helloworld\n"
+"    [mkdir] Created dir: C:&#92;Projects&#92;helloworld&#92;src\n"
+"\n"
+"new-project:\n"
+"     [echo] A new Seam project was created in the C:/Projects directory\n"
+"     [echo] Add the project from inside Eclipse (or type 'seam explode') and "
+"go to http://localhost:\n"
+"8080/helloworld\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 7 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:60
+#, no-c-format
+msgid ""
+"This copies the Seam jars, dependent jars and the JDBC driver jar to a new "
+"Eclipse project, and generates all needed resources and configuration files, "
+"a facelets template file and stylesheet, along with Eclipse metadata and an "
+"Ant build script. The Eclipse project will be automatically deployed to an "
+"exploded directory structure in JBoss AS as soon as you add the project "
+"using <literal>New -&gt; Project... -&gt; Java Project -&gt; Next</literal>, "
+"typing the <literal>Project name</literal> (<literal>myproject</literal> in "
+"this case), selecting your Java SE 5 or Java SE 6 JRE and then clicking "
+"<literal>Finish</literal>. Do not select <literal>Create new project from "
+"existing source</literal>. Alternatively, you can deploy the project from "
+"outside Eclipse by typing <literal>seam explode</literal>."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:63
+#, no-c-format
+msgid ""
+"Go to <literal>http://localhost:8080/helloworld</literal> to see a welcome "
+"page. This is a facelets page, <literal>view/home.xhtml</literal>, using the "
+"template <literal>view/layout/template.xhtml</literal>. You can edit this "
+"page, or the template, in eclipse, and see the results "
+"<emphasis>immediately</emphasis>, by clicking refresh in your browser."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:66
+#, no-c-format
+msgid ""
+"Don't get scared by the XML configuration documents that were generated into "
+"the project directory. They are mostly standard Java EE stuff, the stuff you "
+"need to create once and then never look at again, and they are 90&#37; the "
+"same between all Seam projects. (They are so easy to write that even seam-"
+"gen can do it.)"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:69
+#, no-c-format
+msgid ""
+"The generated project includes three database and persistence "
+"configurations. The <literal>jboss-beans.xml</literal>, <literal>persistence-"
+"test.xml</literal> and <literal>import-test.sql</literal> files are used "
+"when running the TestNG unit tests against HSQLDB. The database schema and "
+"the test data in <literal>import-test.sql</literal> is always exported to "
+"the database before running tests. The <literal>myproject-dev-ds.xml</"
+"literal>, <literal>persistence-dev.xml</literal>and <literal>import-dev.sql</"
+"literal> files are for use when deploying the application to your "
+"development database. The schema might be exported automatically at "
+"deployment, depending upon whether you told seam-gen that you are working "
+"with an existing database. The <literal>myproject-prod-ds.xml</literal>, "
+"<literal>persistence-prod.xml</literal>and <literal>import-prod.sql</"
+"literal> files are for use when deploying the application to your production "
+"database. The schema is not exported automatically at deployment."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:75
+#, no-c-format
+msgid "Creating a new action"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:76
+#, no-c-format
+msgid ""
+"If you're used to traditional action-style web frameworks, you're probably "
+"wondering how you can create a simple webpage with a stateless action method "
+"in Java. If you type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:79
+#, no-c-format
+msgid "seam new-action"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:80
+#, no-c-format
+msgid ""
+"Seam will prompt for some information, and generate a new facelets page and "
+"Seam component for your project."
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:83
+#, no-c-format
+msgid ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam new-action ping\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"action-input:\n"
+"    [input] Enter the Seam component name\n"
+"ping\n"
+"    [input] Enter the local interface name [Ping]\n"
+"\n"
+"    [input] Enter the bean class name [PingBean]\n"
+"\n"
+"    [input] Enter the action method name [ping]\n"
+"\n"
+"    [input] Enter the page name [ping]\n"
+"\n"
+"\n"
+"setup-filters:\n"
+"\n"
+"new-action:\n"
+"     [echo] Creating a new stateless session bean component with an action "
+"method\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;view\n"
+"     [echo] Type 'seam restart' and go to \n"
+"     http://localhost:8080/helloworld/ping.seam\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 13 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:84
+#, no-c-format
+msgid ""
+"Because we've added a new Seam component, we need to restart the exploded "
+"directory deployment. You can do this by typing <literal>seam restart</"
+"literal>, or by running the <literal>restart</literal> target in the "
+"generated project <literal>build.xml</literal> file from inside Eclipse. "
+"Another way to force a restart is to edit the file <literal>resources/META-"
+"INF/application.xml</literal> in Eclipse. <emphasis>Note that you do not "
+"need to restart JBoss each time you change the application.</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:87
+#, no-c-format
+msgid ""
+"Now go to <literal>http://localhost:8080/helloworld/ping.seam</literal> and "
+"click the button. You can see the code behind this action by looking in the "
+"project <literal>src</literal> directory. Put a breakpoint in the "
+"<literal>ping()</literal> method, and click the button again."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:90
+#, no-c-format
+msgid ""
+"Finally, locate the <literal>PingTest.xml</literal> file in the test package "
+"and run the integration tests using the TestNG plugin for Eclipse. "
+"Alternatively, run the tests using <literal>seam test</literal> or the "
+"<literal>test</literal> target of the generated build."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:96
+#, no-c-format
+msgid "Creating a form with an action"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:97
+#, no-c-format
+msgid "The next step is to create a form. Type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:100
+#, no-c-format
+msgid "seam new-form"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:101
+#, no-c-format
+msgid ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam new-form\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"action-input:\n"
+"    [input] Enter the Seam component name\n"
+"hello\n"
+"    [input] Enter the local interface name [Hello]\n"
+"\n"
+"    [input] Enter the bean class name [HelloBean]\n"
+"\n"
+"    [input] Enter the action method name [hello]\n"
+"\n"
+"    [input] Enter the page name [hello]\n"
+"\n"
+"\n"
+"setup-filters:\n"
+"\n"
+"new-form:\n"
+"     [echo] Creating a new stateful session bean component with an action "
+"method\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;view\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [echo] Type 'seam restart' and go to http://localhost:8080/hello/hello."
+"seam\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 5 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:102
+#, no-c-format
+msgid ""
+"Restart the application again, and go to <literal>http://localhost:8080/"
+"helloworld/hello.seam</literal>. Then take a look at the generated code. Run "
+"the test. Try adding some new fields to the form and Seam component "
+"(remember to restart the deploment each time you change the Java code)."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:108
+#, no-c-format
+msgid "Generating an application from an existing database"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:109
+#, no-c-format
+msgid ""
+"Manually create some tables in your database. (If you need to switch to a "
+"different database, just run <literal>seam setup</literal> again.) Now type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:112
+#, no-c-format
+msgid "seam generate-entities"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:113
+#, no-c-format
+msgid ""
+"Restart the deployment, and go to <literal>http://localhost:8080/helloworld</"
+"literal>. You can browse the database, edit existing objects, and create new "
+"objects. If you look at the generated code, you'll probably be amazed how "
+"simple it is! Seam was designed so that data access code is easy to write by "
+"hand, even for people who don't want to cheat by using seam-gen."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:119
+#, no-c-format
+msgid "Deploying the application as an EAR"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:120
+#, no-c-format
+msgid ""
+"Finally, we want to be able to deploy the application using standard Java EE "
+"5 packaging. First, we need to remove the exploded directory by running "
+"<literal>seam unexplode</literal>. To deploy the EAR, we can type "
+"<literal>seam deploy</literal> at the command prompt, or run the "
+"<literal>deploy</literal> target of the generated project build script. You "
+"can undeploy using <literal>seam undeploy</literal> or the "
+"<literal>undeploy</literal> target."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:123
+#, no-c-format
+msgid ""
+"By default, the application will be deployed with the <emphasis>dev profile</"
+"emphasis>. The EAR will include the <literal>persistence-dev.xml</literal> "
+"and <literal>import-dev.sql</literal> files, and the <literal>myproject-dev-"
+"ds.xml</literal> file will be deployed. You can change the profile, and use "
+"the <emphasis>prod profile</emphasis>, by typing"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:126
+#, no-c-format
+msgid "seam -Dprofile=prod deploy"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:127
+#, no-c-format
+msgid ""
+"You can even define new deployment profiles for your application. Just add "
+"appropriately named files to your project&mdash;for example, "
+"<literal>persistence-staging.xml</literal>, <literal>import-staging.sql</"
+"literal> and <literal>myproject-staging-ds.xml</literal>&mdash;and select "
+"the name of the profile using <literal>-Dprofile=staging</literal>."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/I18n.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/I18n.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/I18n.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,533 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: I18n.xml:10
+#, no-c-format
+msgid "Internationalization and themes"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:11
+#, no-c-format
+msgid ""
+"Seam makes it easy to build internationalized applications by providing "
+"several built-in components for handling multi-language UI messages."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:15
+#, no-c-format
+msgid "Locales"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:16
+#, no-c-format
+msgid ""
+"Each user login session has an associated instance of <literal>java.util."
+"Locale</literal> (available to the application as a session-scoped component "
+"named <literal>locale</literal>). Under normal circumstances, you won't need "
+"to do any special configuration to set the locale. Seam just delegates to "
+"JSF to determine the active locale:"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:21
+#, no-c-format
+msgid ""
+"If there is a locale associated with the HTTP request (the browser locale), "
+"and that locale is in the list of supported locales from <literal>faces-"
+"config.xml</literal>, use that locale for the rest of the session."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:24
+#, no-c-format
+msgid ""
+"Otherwise, if a default locale was specified in the <literal>faces-config."
+"xml</literal>, use that locale for the rest of the session."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:27
+#, no-c-format
+msgid "Otherwise, use the default locale of the server."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:30
+#, no-c-format
+msgid ""
+"It is <emphasis>possible</emphasis> to set the locale manually via the Seam "
+"configuration properties <literal>org.jboss.seam.core.localeSelector."
+"language</literal>, <literal>org.jboss.seam.core.localeSelector.country</"
+"literal> and <literal>org.jboss.seam.core.localeSelector.variant</literal>, "
+"but we can't think of any good reason to ever do this."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:33
+#, no-c-format
+msgid ""
+"It is, however, useful to allow the user to set the locale manually via the "
+"application user interface. Seam provides built-in functionality for "
+"overriding the locale determined by the algorithm above. All you have to do "
+"is add the following fragment to a form in your JSP or Facelets page:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:36
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{localeSelector.language}\"&gt;\n"
+"    &lt;f:selectItem itemLabel=\"English\" itemValue=\"en\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Deutsch\" itemValue=\"de\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Francais\" itemValue=\"fr\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{localeSelector.select}\" value=\"#{messages"
+"['ChangeLanguage']}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:37
+#, no-c-format
+msgid ""
+"Or, if you want a list of all supported locales from <literal>faces-config."
+"xml</literal>, just use:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:40
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{localeSelector.localeString}\"&gt;\n"
+"    &lt;f:selectItems value=\"#{localeSelector.supportedLocales}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{localeSelector.select}\" value=\"#{messages"
+"['ChangeLanguage']}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:41
+#, no-c-format
+msgid ""
+"When this use selects an item from the drop-down, and clicks the button, the "
+"Seam and JSF locales will be overridden for the rest of the session."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:47
+#, no-c-format
+msgid "Labels"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:48
+#, no-c-format
+msgid ""
+"JSF supports internationalization of user interface labels and descriptive "
+"text via the use of <literal>&lt;f:loadBundle /&gt;</literal>. You can use "
+"this approach in Seam applications. Alternatively, you can take advantage of "
+"the Seam <literal>messages</literal> component to display templated labels "
+"with embedded EL expressions."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:52
+#, no-c-format
+msgid "Defining labels"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:53
+#, no-c-format
+msgid ""
+"Each login session has an associated instance of <literal>java.util."
+"ResourceBundle</literal> (available to the application as a session-scoped "
+"component named <literal>org.jboss.seam.core.resourceBundle</literal>). "
+"You'll need to make your internationalized labels available via this special "
+"resource bundle. By default, the resource bundle used by Seam is named "
+"<literal>messages</literal> and so you'll need to define your labels in "
+"files named <literal>messages.properties</literal>, <literal>messages_en."
+"properties</literal>, <literal>messages_en_AU.properties</literal>, etc. "
+"These files usually belong in the <literal>WEB-INF/classes</literal> "
+"directory."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:56
+#, no-c-format
+msgid "So, in <literal>messages_en.properties</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:59
+#, no-c-format
+msgid "Hello=Hello"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:60
+#, no-c-format
+msgid "And in <literal>messages_en_AU.properties</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:63
+#, no-c-format
+msgid "Hello=G'day"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:64
+#, no-c-format
+msgid ""
+"You can select a different name for the resource bundle by setting the Seam "
+"configuration property named <literal>org.jboss.seam.core.resourceBundle."
+"bundleNames</literal>. You can even specify a list of resource bundle names "
+"to be searched (depth first) for messages."
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:67
+#, no-c-format
+msgid ""
+"&lt;core:resource-bundle&gt;\n"
+"    &lt;core:bundle-names&gt;\n"
+"        &lt;value&gt;mycompany_messages&lt;/value&gt;\n"
+"        &lt;value&gt;standard_messages&lt;/value&gt;       \n"
+"    &lt;/core:bundle-names&gt;\n"
+"&lt;/core:resource-bundle&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:68
+#, no-c-format
+msgid ""
+"If you want to define a message just for a particular page, you can specify "
+"it in a resource bundle with the same name as the JSF view id, with the "
+"leading <literal>/</literal> and trailing file extension removed. So we "
+"could put our message in <literal>welcome/hello_en.properties</literal> if "
+"we only needed to display the message on <literal>/welcome/hello.jsp</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:71
+#, no-c-format
+msgid ""
+"You can even specify an explicit bundle name in <literal>pages.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:74
+#, no-c-format
+msgid "&lt;page view-id=\"/welcome/hello.jsp\" bundle=\"HelloMessages\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:75
+#, no-c-format
+msgid ""
+"Then we could use messages defined in <literal>HelloMessages.properties</"
+"literal> on <literal>/welcome/hello.jsp</literal>."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:81
+#, no-c-format
+msgid "Displaying labels"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:82
+#, no-c-format
+msgid ""
+"If you define your labels using the Seam resource bundle, you'll be able to "
+"use them without having to type <literal>&lt;f:loadBundle ... /&gt;</"
+"literal> on every page. Instead, you can simply type:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:85
+#, no-c-format
+msgid "&lt;h:outputText value=\"#{messages['Hello']}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:86
+#, no-c-format
+msgid "<para>or:</para>"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:89
+#, no-c-format
+msgid "&lt;h:outputText value=\"#{messages.Hello}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:90
+#, no-c-format
+msgid "Even better, the messages themselves may contain EL expressions:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:93
+#, no-c-format
+msgid "Hello=Hello, #{user.firstName} #{user.lastName}"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:94
+#, no-c-format
+msgid "Hello=G'day, #{user.firstName}"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:95
+#, no-c-format
+msgid "You can even use the messages in your code:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:98
+#, no-c-format
+msgid "@In private Map&lt;String, String&gt; messages;"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:99
+#, no-c-format
+msgid "@In(\"#{messages['Hello']}\") private String helloMessage;"
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:103
+#, no-c-format
+msgid "Faces messages"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:104
+#, no-c-format
+msgid ""
+"The <literal>facesMessages</literal> component is a super-convenient way to "
+"display success or failure messages to the user. The functionality we just "
+"described also works for faces messages:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:107
+#, no-c-format
+msgid ""
+"@Name(\"hello\")\n"
+"@Stateless\n"
+"public class HelloBean implements Hello {\n"
+"    @In FacesMessages facesMessages;\n"
+"    \n"
+"    public String sayIt() {\n"
+"        facesMessages.addFromResourceBundle(\"Hello\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:108
+#, no-c-format
+msgid ""
+"This will display <literal>Hello, Gavin King</literal> or <literal>G'day, "
+"Gavin</literal>, depending upon the user's locale."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:116
+#, no-c-format
+msgid "Timezones"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:117
+#, no-c-format
+msgid ""
+"There is also a session-scoped instance of <literal>java.util.Timezone</"
+"literal>, named <literal>org.jboss.seam.core.timezone</literal>, and a Seam "
+"component for changing the timezone named <literal>org.jboss.seam.core."
+"timezoneSelector</literal>. By default, the timezone is the default timezone "
+"of the server. Unfortunately, the JSF specification says that all dates and "
+"times should be assumed to be UTC, and displayed as UTC, unless a timezone "
+"is explicitly specified using <literal>&lt;f:convertDateTime&gt;</literal>. "
+"This is an extremely inconvenient default behavior."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:120
+#, no-c-format
+msgid ""
+"Seam overrides this behavior, and defaults all dates and times to the Seam "
+"timezone. In addition, Seam provides the <literal>&lt;s:convertDateTime&gt;</"
+"literal> tag which always performs conversions in the Seam timezone."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:126
+#, no-c-format
+msgid "Themes"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:127
+#, no-c-format
+msgid ""
+"Seam applications are also very easily skinnable. The theme API is very "
+"similar to the localization API, but of course these two concerns are "
+"orthogonal, and some applications support both localization and themes."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:130
+#, no-c-format
+msgid "First, configure the set of supported themes:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:133
+#, no-c-format
+msgid ""
+"&lt;theme:theme-selector cookie-enabled=\"true\"&gt;\n"
+"    &lt;theme:available-themes&gt;\n"
+"        &lt;value&gt;default&lt;/value&gt;\n"
+"        &lt;value&gt;accessible&lt;/value&gt;\n"
+"        &lt;value&gt;printable&lt;/value&gt;\n"
+"    &lt;/theme:available-themes&gt;\n"
+"&lt;/theme:theme-selector&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:134
+#, no-c-format
+msgid "Note that the first theme listed is the default theme."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:137
+#, no-c-format
+msgid ""
+"Themes are defined in a properties file with the same name as the theme. For "
+"example, the <literal>default</literal> theme is defined as a set of entries "
+"in <literal>default.properties</literal>. For example, <literal>default."
+"properties</literal> might define:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:140
+#, no-c-format
+msgid ""
+"css ../screen.css\n"
+"template template.xhtml"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:141
+#, no-c-format
+msgid ""
+"Usually the entries in a theme resource bundle will be paths to CSS styles "
+"or images and names of facelets templates (unlike localization resource "
+"bundles which are usually text)."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:144
+#, no-c-format
+msgid ""
+"Now we can use these entries in our JSP or facelets pages. For example, to "
+"theme the stylesheet in a facelets page:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:147
+#, no-c-format
+msgid ""
+"&lt;link href=\"#{theme.css}\" rel=\"stylesheet\" type=\"text/css\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:148
+#, no-c-format
+msgid ""
+"Most powerfully, facelets lets us theme the template used by a <literal>&lt;"
+"ui:composition&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:151
+#, no-c-format
+msgid ""
+"&lt;ui:composition xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"    xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"    xmlns:h=\"http://java.sun.com/jsf/html\"\n"
+"    xmlns:f=\"http://java.sun.com/jsf/core\"\n"
+"    template=\"#{theme.template}\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:152
+#, no-c-format
+msgid ""
+"Just like the locale selector, there is a built-in theme selector to allow "
+"the user to freely switch themes:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:155
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{themeSelector.theme}\"&gt;\n"
+"    &lt;f:selectItems value=\"#{themeSelector.themes}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{themeSelector.select}\" value=\"Select Theme"
+"\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:159
+#, no-c-format
+msgid "Persisting locale and theme preferences via cookies"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:160
+#, no-c-format
+msgid ""
+"The locale selector, theme selector and timezone selector all support "
+"persistence of locale and theme preference to a cookie. Simply set the "
+"<literal>cookie-enabled</literal> configuration property:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:163
+#, no-c-format
+msgid ""
+"&lt;theme:theme-selector cookie-enabled=\"true\"&gt;\n"
+"    &lt;theme:available-themes&gt;\n"
+"        &lt;value&gt;default&lt;/value&gt;\n"
+"        &lt;value&gt;accessible&lt;/value&gt;\n"
+"        &lt;value&gt;printable&lt;/value&gt;\n"
+"    &lt;/theme:available-themes&gt;\n"
+"&lt;/theme:theme-selector&gt;\n"
+"\n"
+"&lt;core:locale-selector cookie-enabled=\"true\"/&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Itext.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Itext.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Itext.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1452 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Itext.xml:10
+#, no-c-format
+msgid "iText PDF generation"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:11
+#, no-c-format
+msgid ""
+"Seam now includes an component set for generating documents using iText. The "
+"primary focus of Seam's iText document support is for the generation of PDF "
+"doucuments, but Seam also offers basic support for RTF document generation."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:15
+#, no-c-format
+msgid "Using PDF Support"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:16
+#, no-c-format
+msgid ""
+"iText support is provided by <literal>jboss-seam-pdf.jar</literal>. This JAR "
+"contains the iText JSF controls, which are used to construct views that can "
+"render to PDF, and the DocumentStore component, which serves the rendered "
+"documents to the user. To include PDF support in your application, included "
+"<literal>jboss-seam-pdf.jar</literal> in your <literal>WEB-INF/lib</literal> "
+"directory along with the iText JAR file. There is no further configuration "
+"needed to use Seam's iText support."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:19
+#, no-c-format
+msgid ""
+"The Seam iText module requires the use of Facelets as the view technology. "
+"Future versions of the library may also support the use of JSP. "
+"Additionally, it requires the use of the seam-ui package."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:22
+#, no-c-format
+msgid ""
+"The <literal>examples/itext</literal> project contains an example of the PDF "
+"support in action. It demonstrates proper deployment packaging, and it "
+"contains a number examples that demonstrate the key PDF generation features "
+"current supported."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:28
+#, no-c-format
+msgid "Creating a document"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:29
+#, no-c-format
+msgid ""
+"Documents are generated by facelets documents using tags in the "
+"<literal>http://jboss.com/products/seam/pdf</literal> namespace. Documents "
+"should always have the <literal>document</literal> tag at the root of the "
+"document. The <literal>document</literal> tag prepares Seam to generate a "
+"document into the DocumentStore and renders an HTML redirect to that stored "
+"content. The following is a a small PDF document consisting only a single "
+"line of text:"
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:32
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf"
+"\"&gt;                                                      \n"
+"   The document goes "
+"here.                                                                                             \n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:34
+#, no-c-format
+msgid "p:document"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:35
+#, no-c-format
+msgid ""
+"The <literal>p:document</literal> tag supports the following attributes:"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:40
+#, no-c-format
+msgid "type"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:42
+#, no-c-format
+msgid ""
+"The type of the document to be produced. Valid values are <literal>PDF</"
+"literal>, <literal>RTF</literal> and <literal>HTML</literal> modes. Seam "
+"defaults to PDF generation, and many of the features only work correctly "
+"when generating PDF documents."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:48
+#, no-c-format
+msgid "pageSize"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:50
+#, no-c-format
+msgid ""
+"The size of the page to be generate. The most commonly used values would be "
+"<literal>LETTER</literal> and <literal>A4</literal>. A full list of "
+"supported pages sizes can be found in <literal>com.lowagie.text.PageSize</"
+"literal> class. Alternatively, pageSize can provide the width and height of "
+"the page directly. The value \"612 792\", for example, is equizalent to the "
+"LETTER page size."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:56
+#, no-c-format
+msgid "orientation"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:58
+#, no-c-format
+msgid ""
+"The orientation of the page. Valid values are <literal>portrait</literal> "
+"and <literal>landscape</literal>. In landscape mode, the height and width "
+"page size values are reversed."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:64
+#, no-c-format
+msgid "margins"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:66
+#, no-c-format
+msgid "The left, right, top and bottom margin values."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:72
+#, no-c-format
+msgid "marginMirroring"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:74
+#, no-c-format
+msgid "Indicates that margin settings should be reversed an alternating pages."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:80
+#, no-c-format
+msgid ""
+"Document metadata is also set as attributes of the document tag. The "
+"following metadata fields are supported:"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:85
+#, no-c-format
+msgid "title"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:92
+#, no-c-format
+msgid "subject"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:99
+#, no-c-format
+msgid "keywords"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:106
+#, no-c-format
+msgid "author"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:113
+#, no-c-format
+msgid "creator"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:125
+#, no-c-format
+msgid "Basic Text Elements"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:126
+#, no-c-format
+msgid ""
+"Useful documents will need to contain more than just text; however, the "
+"standard UI components are geared towards HTML generation and are not useful "
+"for generating PDF content. Instead, Seam provides a special UI components "
+"for generating suitable PDF content. Tags like <literal>&lt;p:image&gt;</"
+"literal> and <literal>&lt;p:paragraph&gt;</literal> are the basic "
+"foundations of simple documents. Tags like <literal>&lt;p:font&gt;</literal> "
+"provide style information to all the content surrounging them."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:129
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"&gt; \n"
+"    &lt;p:image alignment=\"right\" wrap=\"true\" resource=\"/logo.jpg\" /"
+"&gt;\n"
+"    &lt;p:font size=\"24\"&gt;\n"
+"        &lt;p:paragraph spacingAfter=\"50\"&gt;My First Document&lt;/p:"
+"paragraph&gt;\n"
+"    &lt;/p:font&gt;\n"
+"\n"
+"    &lt;p:paragraph alignment=\"justify\"&gt;\n"
+"        This is a simple document.  It isn't very fancy.\n"
+"    &lt;/p:paragraph&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:131
+#, no-c-format
+msgid "p:paragraph"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:132
+#, no-c-format
+msgid ""
+"Most uses of text should be sectioned into paragraphs so that text fragments "
+"can be flowed, formatted and styled in logical groups."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:137
+#, no-c-format
+msgid "firstLineIndent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:144 Itext.xml:836
+#, no-c-format
+msgid "extraParagraphSpace"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:151 Itext.xml:808
+#, no-c-format
+msgid "leading"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:158 Itext.xml:815
+#, no-c-format
+msgid "multipliedLeading"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:165 Itext.xml:344 Itext.xml:716
+#, no-c-format
+msgid "spacingBefore"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:167 Itext.xml:346 Itext.xml:718
+#, no-c-format
+msgid "The blank space to be inserted before the element."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:173 Itext.xml:352 Itext.xml:724
+#, no-c-format
+msgid "spacingAfter"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:175 Itext.xml:354 Itext.xml:726
+#, no-c-format
+msgid "The blank space to be inserted after the element."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:181 Itext.xml:330 Itext.xml:599
+#, no-c-format
+msgid "indentationLeft"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:188 Itext.xml:337 Itext.xml:607
+#, no-c-format
+msgid "indentationRight"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:195 Itext.xml:753
+#, no-c-format
+msgid "keepTogether"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:205
+#, no-c-format
+msgid "p:text"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:206
+#, no-c-format
+msgid ""
+"The <literal>text</literal> tag allows text fragments to be produced from "
+"application data using normal JSF converter mechanisms. It is very similar "
+"to the <literal>outputText</literal> tag used when rendering HTML documents. "
+"Here is an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:209
+#, no-c-format
+msgid ""
+"&lt;p:paragraph&gt;\n"
+"    The item costs &lt;p:text value=\"#{product.price}\"&gt;\n"
+"        &lt;f:convertNumber type=\"currency\" currencySymbol=\"&#36;\"/&gt;\n"
+"    &lt;/p:text&gt;\n"
+"&lt;/p:paragraph&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:212
+#, no-c-format
+msgid "value"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:214
+#, no-c-format
+msgid ""
+"The value to be displayed. This will typically be a value binding expression."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:223
+#, no-c-format
+msgid "p:font"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:224
+#, no-c-format
+msgid "Font declarations have no direct"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:229
+#, no-c-format
+msgid "familyName"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:231
+#, no-c-format
+msgid ""
+"The font family. One of: <literal>COURIER</literal>, <literal>HELVETICA</"
+"literal>, <literal>TIMES-ROMAN</literal>, <literal>SYMBOL</literal> or "
+"<literal>ZAPFDINGBATS</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:237
+#, no-c-format
+msgid "size"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:239
+#, no-c-format
+msgid "The point size of the font."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:245 Itext.xml:534
+#, no-c-format
+msgid "style"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:247
+#, no-c-format
+msgid ""
+"The font styles. Any combination of : <literal>NORMAL</literal>, "
+"<literal>BOLD</literal>, <literal>ITALIC</literal>, <literal>OBLIQUE</"
+"literal>, <literal>UNDERLINE</literal>, <literal>LINE-THROUGH</literal>"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:256
+#, no-c-format
+msgid "p:newPage"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:257
+#, no-c-format
+msgid "<literal>p:newPage</literal> inserts a page break."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:263
+#, no-c-format
+msgid "p:image"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:264
+#, no-c-format
+msgid ""
+"<literal>p:image</literal> inserts an image into the document. Images can be "
+"be loaded from the classpath or from the web application context using the "
+"<literal>resource</literal> attribute."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:267
+#, no-c-format
+msgid "&lt;p:image resource=\"/jboss.jpg\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:268
+#, no-c-format
+msgid ""
+"Resources can also be dynamically generated by application code. The "
+"<literal>imageData</literal> attribute can specify a value binding "
+"expression whose value is a <literal>java.awt.Image</literal> object."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:271
+#, no-c-format
+msgid "&lt;p:image imageData=\"#{images.chart}\" /&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:274
+#, no-c-format
+msgid "resource"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:276
+#, no-c-format
+msgid ""
+"The location of the image resource to be included. Resources should be "
+"relative to the document root of the web application."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:282
+#, no-c-format
+msgid "imageData"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:284
+#, no-c-format
+msgid "A method expression binding to an application-generated image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:290 Itext.xml:913
+#, no-c-format
+msgid "rotation"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:292
+#, no-c-format
+msgid "The rotation of the image in degrees."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:298
+#, no-c-format
+msgid "height"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:300
+#, no-c-format
+msgid "The height of the image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:306
+#, no-c-format
+msgid "width"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:308
+#, no-c-format
+msgid "The width of the image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:314 Itext.xml:441 Itext.xml:591
+#, no-c-format
+msgid "alignment"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:316
+#, no-c-format
+msgid ""
+"The alignment of the image. (see <xref linkend=\"Document_Constants-"
+"Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:322
+#, no-c-format
+msgid "<literal>alt</literal>"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:324
+#, no-c-format
+msgid "Alternative text representation for the image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:360 Itext.xml:672
+#, no-c-format
+msgid "widthPercentage"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:367
+#, no-c-format
+msgid "initialRotation"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:374
+#, no-c-format
+msgid "<literal>dpi</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:381
+#, no-c-format
+msgid "scalePercent"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:383
+#, no-c-format
+msgid ""
+"The scaling factor (as a percentage) to use for the image. This can be "
+"expressed as a single percentage value or as two percentage values "
+"representing separate x and y scaling percentages."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:389
+#, no-c-format
+msgid "wrap"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:396
+#, no-c-format
+msgid "underlying"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:406
+#, no-c-format
+msgid "p:anchor"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:407
+#, no-c-format
+msgid ""
+"<literal>p:anchor</literal> defines clickable links from a document. It "
+"supports the following attributes:"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:412
+#, no-c-format
+msgid "name"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:414
+#, no-c-format
+msgid "The name of an in-document anchor destination."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:420
+#, no-c-format
+msgid "reference"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:422
+#, no-c-format
+msgid ""
+"The destination the link refers to. Links to other points in the document "
+"should begin with a \"#\". For example, \"#link1\" to refer to an anchor "
+"postion with a <literal>name</literal> of <literal>link1</literal>. Links "
+"may also be a full URL to point to a resource outside of the document."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:433
+#, no-c-format
+msgid "Headers and Footers"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:435
+#, no-c-format
+msgid "p:header and p:footer"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:436
+#, no-c-format
+msgid ""
+"The <literal>p:header</literal> and <literal>p:footer</literal> components "
+"provide the ability to place header and footer text on each page of a "
+"generated document, with the exception of the first page. Header and footer "
+"declarations should appear near the top of a document."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:443
+#, no-c-format
+msgid ""
+"The alignment of the header/footer box section. (see <xref linkend="
+"\"Document_Constants-Alignment_Values\"/> for alignment values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:449
+#, no-c-format
+msgid "backgroundColor"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:451
+#, no-c-format
+msgid ""
+"The background color of the header/footer box. (see <xref linkend="
+"\"Document_Constants-Color_Values\"/> for color values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:457
+#, no-c-format
+msgid "borderColor"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:459
+#, no-c-format
+msgid ""
+"The border color of the header/footer box. Individual border sides can be "
+"set using <literal>borderColorLeft</literal>, <literal>borderColorRight</"
+"literal>, <literal>borderColorTop</literal> and <literal>borderColorBottom</"
+"literal>.(see <xref linkend=\"Document_Constants-Color_Values\"/> for color "
+"values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:465
+#, no-c-format
+msgid "borderWidth"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:467
+#, no-c-format
+msgid ""
+"The width of the border. Inidvidual border sides can be specified using "
+"<literal>borderWidthLeft</literal>, <literal>borderWidthRight</literal>, "
+"<literal>borderWidthTop</literal> and <literal>borderWidthBottom</literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:476
+#, no-c-format
+msgid "p:pageNumber"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:477
+#, no-c-format
+msgid ""
+"The current page number can be placed inside of a header or footer using the "
+"<literal>p:pageNumber</literal> tag. The page number tag can only be used in "
+"the context of a header or footer and can only be used once."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:485
+#, no-c-format
+msgid "Chapters and Sections"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:486
+#, no-c-format
+msgid ""
+"If the generated document follows a book/article structure, the <literal>p:"
+"chapter</literal> and <literal>p:section</literal> tags can be used to "
+"provide the necessary structure. Sections can only be used inside of "
+"chapters, but they may be nested arbitrarily deep. Most PDF viewers provide "
+"easy navigation between chapters and sections in a document."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:489
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"\n"
+"            title=\"Hello\"&gt;\n"
+"\n"
+"   &lt;p:chapter number=\"1\"&gt;\n"
+"      &lt;p:title&gt;&lt;p:paragraph&gt;Hello&lt;/p:paragraph&gt;&lt;/p:"
+"title&gt;\n"
+"      &lt;p:paragraph&gt;Hello #{user.name}!&lt;/p:paragraph&gt;\n"
+"   &lt;/p:chapter&gt;\n"
+"\n"
+"   &lt;p:chapter number=\"2\"&gt;\n"
+"      &lt;p:title&gt;&lt;p:paragraph&gt;Goodbye&lt;/p:paragraph&gt;&lt;/p:"
+"title&gt;\n"
+"      &lt;p:paragraph&gt;Goodbye #{user.name}.&lt;/p:paragraph&gt;\n"
+"   &lt;/p:chapter&gt;\n"
+"\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:491
+#, no-c-format
+msgid "p:chapter and p:section"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:494
+#, no-c-format
+msgid "number"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:496
+#, no-c-format
+msgid "The chapter number. Every chapter should be assigned a chapter number."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:502
+#, no-c-format
+msgid "numberDepth"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:504
+#, no-c-format
+msgid ""
+"The depth of numbering for section. All sections are numbered relative to "
+"their surrounding chapter/sections. The fourth section of of the first "
+"section of chapter three would be section 3.1.4, if displayed at the default "
+"number depth of three. To omit the chapter number, a number depth of 2 "
+"should be used. In that case, the section number would be displayed as 1.4."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:513
+#, no-c-format
+msgid "p:title"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:514
+#, no-c-format
+msgid ""
+"Any chapter or section can contain a <literal>p:title</literal>. The title "
+"will be displayed next to the chapter/section number. The body of the title "
+"may contain raw text or may be a <literal>p:paragraph</literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:522
+#, no-c-format
+msgid "Lists"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:523
+#, no-c-format
+msgid ""
+"List structures can be displayed using the <literal>p:list</literal> and "
+"<literal>p:listItem</literal> tags. Lists may contain arbitrarily-nested "
+"sublists. List items may not be used outside of a list. he following "
+"document uses the <literal>ui:repeat</literal> tag to to display a list of "
+"values retrieved from a Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:526
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"\n"
+"            xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"            title=\"Hello\"&gt;\n"
+"   &lt;p:list style=\"numbered\"&gt;\n"
+"      &lt;ui:repeat value=\"#{documents}\" var=\"doc\"&gt;\n"
+"         &lt;p:listItem&gt;#{doc.name}&lt;/p:listItem&gt;\n"
+"      &lt;/ui:repeat&gt;\n"
+"   &lt;/p:list&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:528
+#, no-c-format
+msgid "p:list"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:529
+#, no-c-format
+msgid "<literal>p:list</literal> supports the following attributes:"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:536
+#, no-c-format
+msgid ""
+"The ordering/bulleting style of list. One of: <literal>NUMBERED</literal>, "
+"<literal>LETTERED</literal>, <literal>GREEK</literal>, <literal>ROMAN</"
+"literal>, <literal>ZAPFDINGBATS</literal>, <literal>ZAPFDINGBATS_NUMBER</"
+"literal>. If no style is given, the list items are bulleted."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:542 Itext.xml:615
+#, no-c-format
+msgid "listSymbol"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:544
+#, no-c-format
+msgid "For bulleted lists, specifies the bullet symbol."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:550 Itext.xml:822
+#, no-c-format
+msgid "indent"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:552
+#, no-c-format
+msgid "The indentation level of the list."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:558
+#, no-c-format
+msgid "lowerCase"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:560
+#, no-c-format
+msgid ""
+"For list styles using letters, indicates whether the letters should be lower "
+"case."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:566
+#, no-c-format
+msgid "charNumber"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:568
+#, no-c-format
+msgid "For ZAPFDINGBATS, indicates the character code of the bullet character."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:574
+#, no-c-format
+msgid "numberType"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:576
+#, no-c-format
+msgid "For ZAPFDINGBATS_NUMBER, indicates the numbering style."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:585
+#, no-c-format
+msgid "p:listItem"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:586
+#, no-c-format
+msgid "<literal>p:listItem</literal> supports the following attributes:"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:593
+#, no-c-format
+msgid ""
+"The alignment of the list item. (See <xref linkend=\"Document_Constants-"
+"Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:601
+#, no-c-format
+msgid "The left indentation amount."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:609
+#, no-c-format
+msgid "The right indentation amount."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:617
+#, no-c-format
+msgid "Overrides the default list symbol for this list item."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:628
+#, no-c-format
+msgid "Tables"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:629
+#, no-c-format
+msgid ""
+"Table structures can be created using the <literal>p:table</literal> and "
+"<literal>p:cell</literal> tags. Unlike many table structures, there is no "
+"explicit row declaration. If a table has 3 columns, then every 3 cells will "
+"automatically form a row. Header and footer rows can be declared, and the "
+"headers and footers will be repeated in the event a table structure spans "
+"multiple pages."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:632
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"   \n"
+"            xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"            title=\"Hello\"&gt;   \n"
+"   &lt;p:table columns=\"3\" headerRows=\"1\"&gt;\n"
+"      &lt;p:cell&gt;name&lt;/p:cell&gt;\n"
+"      &lt;p:cell&gt;owner&lt;/p:cell&gt;\n"
+"      &lt;p:cell&gt;size&lt;/p:cell&gt;\n"
+"      &lt;ui:repeat value=\"#{documents}\" var=\"doc\"&gt;\n"
+"         &lt;p:cell&gt;#{doc.name}&lt;/p:cell&gt;\n"
+"         &lt;p:cell&gt;#{doc.user.name}&lt;/p:cell&gt;\n"
+"         &lt;p:cell&gt;#{doc.size}&lt;/p:cell&gt;\n"
+"      &lt;/ui:repeat&gt;\n"
+"   &lt;/p:table&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:634
+#, no-c-format
+msgid "p:table"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:635
+#, no-c-format
+msgid "<literal>p:table</literal> supports the following attributes."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:640
+#, no-c-format
+msgid "columns"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:642
+#, no-c-format
+msgid "The number of columns (cells) that make up a table row."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:648
+#, no-c-format
+msgid "widths"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:650
+#, no-c-format
+msgid ""
+"The relative widths of each column. There should be one value for each "
+"column. For example: widths=\"2 1 1\" would indicate that there are 3 "
+"columns and the first column should be twice the size of the second and "
+"third column."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:656
+#, no-c-format
+msgid "headerRows"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:658
+#, no-c-format
+msgid ""
+"The initial number of rows which are considered to be headers or footer rows "
+"and should be repeated if the table spans multiple pages."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:664
+#, no-c-format
+msgid "footerRows"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:666
+#, no-c-format
+msgid ""
+"The number of rows that are considered to be footer rows. This value is "
+"subtracted from the <literal>headerRows</literal> value. If document has 2 "
+"rows which make up the header and one row that makes up the footer, "
+"<literal>headerRows</literal> should be set to 3 and <literal>footerRows</"
+"literal> should be set to 1"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:674
+#, no-c-format
+msgid "The percentage of the page width that the table spans."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:680 Itext.xml:777
+#, no-c-format
+msgid "horizontalAlignment"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:682
+#, no-c-format
+msgid ""
+"The horizontal alignment of the table. (See <xref linkend="
+"\"Document_Constants-Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:688
+#, no-c-format
+msgid "skipFirstHeader"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:695 Itext.xml:885
+#, no-c-format
+msgid "runDirection"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:702
+#, no-c-format
+msgid "lockedWidth"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:709
+#, no-c-format
+msgid "splitRows"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:732
+#, no-c-format
+msgid "extendLastRow"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:739
+#, no-c-format
+msgid "headersInEvent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:746
+#, no-c-format
+msgid "splitLate"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:763
+#, no-c-format
+msgid "p:cell"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:764
+#, no-c-format
+msgid "<literal>p:cell</literal> supports the following attributes."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:769
+#, no-c-format
+msgid "colspan"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:771
+#, no-c-format
+msgid ""
+"Cells can span more than one column by declaring a <literal>colspan</"
+"literal> greater than 1. Tables do not have the ability to span across "
+"multiple rows."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:779
+#, no-c-format
+msgid ""
+"The horizontal alignment of the cell. (see <xref linkend="
+"\"Document_Constants-Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:785 Itext.xml:829
+#, no-c-format
+msgid "verticalAlignment"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:787
+#, no-c-format
+msgid ""
+"The vertical alignment of the cell. (see <xref linkend=\"Document_Constants-"
+"Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:793
+#, no-c-format
+msgid "padding"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:795
+#, no-c-format
+msgid ""
+"Padding on a given side can also be specified using <literal>paddingLeft</"
+"literal>, <literal>paddingRight</literal>, <literal>paddingTop</literal> and "
+"<literal>paddingBottom</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:801
+#, no-c-format
+msgid "useBorderPadding"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:843
+#, no-c-format
+msgid "fixedHeight"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:850
+#, no-c-format
+msgid "noWrap"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:857
+#, no-c-format
+msgid "minimumHeight"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:864
+#, no-c-format
+msgid "followingIndent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:871
+#, no-c-format
+msgid "rightIndent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:878
+#, no-c-format
+msgid "spaceCharRatio"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:892
+#, no-c-format
+msgid "arabicOptions"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:899
+#, no-c-format
+msgid "useAscender"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:906
+#, no-c-format
+msgid "grayFill"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:925
+#, no-c-format
+msgid "Document Constants"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:926
+#, no-c-format
+msgid ""
+"This section documents some of the constants shared by attributes on "
+"multiple tags."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:930
+#, no-c-format
+msgid "Color Values"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:931
+#, no-c-format
+msgid ""
+"Seam documents do not yet support a full color specification. Currently, "
+"only named colors are supported. They are: <literal>white</literal>, "
+"<literal>gray</literal>, <literal>lightgray</literal>, <literal>darkgray</"
+"literal>, <literal>black</literal>, <literal>red</literal>, <literal>pink</"
+"literal>, <literal>yellow</literal>, <literal>green</literal>, "
+"<literal>magenta</literal>, <literal>cyan</literal> and <literal>blue</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:937
+#, no-c-format
+msgid "Alignment Values"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:938
+#, no-c-format
+msgid ""
+"Where alignment values are used, the Seam PDF supports the following "
+"horizontal alignment values: <literal>left</literal>, <literal>right</"
+"literal>, <literal>center</literal>, <literal>justify</literal> and "
+"<literal>justifyall</literal>. The vertical alignment values are "
+"<literal>top</literal>, <literal>middle</literal>, <literal>bottom</"
+"literal>, and <literal>baseline</literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:946
+#, no-c-format
+msgid "Configuring iText"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:947
+#, no-c-format
+msgid ""
+"Document generation works out of the box with no additional configuration "
+"needed. However, there are a few points of configuration that are needed for "
+"more serious applications."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:950
+#, no-c-format
+msgid ""
+"The default implementation serves PDF documents from a generic URL, "
+"<literal>/seam-doc.seam</literal>. Many browsers (and users) would prefer to "
+"see URLs that contain the actual PDF name like <literal>/myDocument.pdf</"
+"literal>. This capability requires some configuration. To serve PDF files, "
+"all *.pdf resources should be mapped to the Seam Servlet Filter and to the "
+"DocumentStoreServlet:"
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:953
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.servlet.SeamServletFilter&lt;/filter-"
+"class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;\n"
+"\n"
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.pdf.DocumentStoreServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"\n"
+"&lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:954
+#, no-c-format
+msgid ""
+"The <literal>useExtensions</literal> option on the document store component "
+"completes the functionality by instructing the document store to generate "
+"URLs with the correct filename extension for the document type being "
+"generated."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:957
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pdf=\"http://jboss.com/products/seam/pdf\"&gt;\n"
+"    &lt;pdf:documentStore useExtensions=\"true\" /&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:958
+#, no-c-format
+msgid ""
+"Generated documents are stored in conversation scope and will expire when "
+"the conversation ends. At that point, references to the document will be "
+"invalid. To You can specify a default view to be shown when a document does "
+"not exist using the <literal>errorPage</literal> property of the "
+"documentStore."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:961
+#, no-c-format
+msgid ""
+"&lt;pdf:documentStore useExtensions=\"true\" errorPage=\"/pdfMissing.seam\" /"
+"&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:965
+#, no-c-format
+msgid "iText links"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:966
+#, no-c-format
+msgid "For further information on iText, see:"
+msgstr ""
+
+#. Tag: ulink
+#: Itext.xml:973
+#, no-c-format
+msgid "iText Home Page"
+msgstr ""
+
+#. Tag: ulink
+#: Itext.xml:978
+#, no-c-format
+msgid "iText in Action"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Jbpm.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Jbpm.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Jbpm.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1189 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Jbpm.xml:10
+#, no-c-format
+msgid "Pageflows and business processes"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:11
+#, no-c-format
+msgid ""
+"JBoss jBPM is a business process management engine for any Java SE or EE "
+"environment. jBPM lets you represent a business process or user interaction "
+"as a graph of nodes representing wait states, decisions, tasks, web pages, "
+"etc. The graph is defined using a simple, very readable, XML dialect called "
+"jPDL, and may be edited and visualised graphically using an eclipse plugin. "
+"jPDL is an extensible language, and is suitable for a range of problems, "
+"from defining web application page flow, to traditional workflow management, "
+"all the way up to orchestration of services in a SOA environment."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:14
+#, no-c-format
+msgid "Seam applications use jBPM for two different problems:"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:20
+#, no-c-format
+msgid ""
+"Defining the pageflow involved in complex user interactions. A jPDL process "
+"definition defines the page flow for a single conversation. A Seam "
+"conversation is considered to be a relatively short-running interaction with "
+"a single user."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:25
+#, no-c-format
+msgid ""
+"Defining the overarching business process. The business process may span "
+"multiple conversations with multiple users. Its state is persistent in the "
+"jBPM database, so it is considered long-running. Coordination of the "
+"activities of multiple users is a much more complex problem than scripting "
+"an interaction with a single user, so jBPM offers sophisticated facilities "
+"for task management and dealing with multiple concurrent paths of execution."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:31
+#, no-c-format
+msgid ""
+"Don't get these two things confused ! They operate at very different levels "
+"or granularity. <emphasis>Pageflow</emphasis>, <emphasis>conversation</"
+"emphasis> and <emphasis>task</emphasis> all refer to a single interaction "
+"with a single user. A business process spans many tasks. Futhermore, the two "
+"applications of jBPM are totally orthogonal. You can use them together or "
+"independently or not at all."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:34
+#, no-c-format
+msgid ""
+"You don't have to know jDPL to use Seam. If you're perfectly happy defining "
+"pageflow using JSF or Seam navigation rules, and if your application is more "
+"data-driven that process-driven, you probably don't need jBPM. But we're "
+"finding that thinking of user interaction in terms of a well-defined "
+"graphical representation is helping us build more robust applications."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:37
+#, no-c-format
+msgid ""
+"Please refer to the jBPM documentation for a more thorough overview of the "
+"sophisticated features that jBPM provides for managing complex business "
+"processes."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:41
+#, no-c-format
+msgid "Pageflow in Seam"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:42
+#, no-c-format
+msgid "There are two ways to define pageflow in Seam:"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:47
+#, no-c-format
+msgid ""
+"Using JSF or Seam navigation rules - the <emphasis>stateless navigation "
+"model</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:52
+#, no-c-format
+msgid "Using jPDL - the <emphasis>stateful navigation model</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:57
+#, no-c-format
+msgid ""
+"Very simple applications will only need the stateless navigation model. Very "
+"complex applications will use both models in different places. Each model "
+"has its strengths and weaknesses!"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:60
+#, no-c-format
+msgid ""
+"In practice, both navigation models have their place, and you'll quickly "
+"learn to recognize when to prefer one model over the other."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:64
+#, no-c-format
+msgid "The two navigation models"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:65
+#, no-c-format
+msgid ""
+"The stateless model defines a mapping from a set of named, logical outcomes "
+"of an event directly to the resulting page of the view. The navigation rules "
+"are entirely oblivious to any state held by the application other than what "
+"page was the source of the event. This means that your action listener "
+"methods must sometimes make decisions about the page flow, since only they "
+"have access to the current state of the application."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:68
+#, no-c-format
+msgid "Here is an example page flow definition using JSF navigation rules:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:71
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"    &lt;from-view-id&gt;/numberGuess.jsp&lt;/from-view-id&gt;\n"
+"        \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;guess&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/numberGuess.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;win&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/win.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"        \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;lose&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/lose.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:72
+#, no-c-format
+msgid ""
+"Here is the same example page flow definition using Seam navigation rules:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:75
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/numberGuess.jsp\"&gt;\n"
+"        \n"
+"    &lt;navigation&gt;\n"
+"        &lt;rule if-outcome=\"guess\"&gt;\n"
+"            &lt;redirect view-id=\"/numberGuess.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"        &lt;rule if-outcome=\"win\"&gt;\n"
+"            &lt;redirect view-id=\"/win.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"        &lt;rule if-outcome=\"lose\"&gt;\n"
+"            &lt;redirect view-id=\"/lose.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:76
+#, no-c-format
+msgid ""
+"If you find navigation rules overly verbose, you can return view ids "
+"directly from your action listener methods:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:79
+#, no-c-format
+msgid ""
+"public String guess() {\n"
+"    if (guess==randomNumber) return \"/win.jsp\";\n"
+"    if (++guessCount==maxGuesses) return \"/lose.jsp\";\n"
+"    return null;\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:80
+#, no-c-format
+msgid ""
+"Note that this results in a redirect. You can even specify parameters to be "
+"used in the redirect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:83
+#, no-c-format
+msgid ""
+"public String search() {\n"
+"    return \"/searchResults.jsp?searchPattern=#{searchAction.searchPattern}"
+"\";\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:84
+#, no-c-format
+msgid ""
+"The stateful model defines a set of transitions between a set of named, "
+"logical application states. In this model, it is possible to express the "
+"flow of any user interaction entirely in the jPDL pageflow definition, and "
+"write action listener methods that are completely unaware of the flow of the "
+"interaction."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:87
+#, no-c-format
+msgid "Here is an example page flow definition using jPDL:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:90
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"numberGuess\"&gt;\n"
+"    \n"
+"   &lt;start-page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"      &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"      &lt;/transition&gt;\n"
+"   &lt;/start-page&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess."
+"correctGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateRemainingGuesses\" expression=\"#{numberGuess."
+"lastGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"lose\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"displayGuess\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"lose\" view-id=\"/lose.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:99
+#, no-c-format
+msgid "There are two things we notice immediately here:"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:104
+#, no-c-format
+msgid ""
+"The JSF/Seam navigation rules are <emphasis>much</emphasis> simpler. "
+"(However, this obscures the fact that the underlying Java code is more "
+"complex.)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:109
+#, no-c-format
+msgid ""
+"The jPDL makes the user interaction immediately understandable, without us "
+"needing to even look at the JSP or Java code."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:114
+#, no-c-format
+msgid ""
+"In addition, the stateful model is more <emphasis>constrained</emphasis>. "
+"For each logical state (each step in the page flow), there are a constrained "
+"set of possible transitions to other states. The stateless model is an "
+"<emphasis>ad hoc</emphasis> model which is suitable to relatively "
+"unconstrained, freeform navigation where the user decides where he/she wants "
+"to go next, not the application."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:117
+#, no-c-format
+msgid ""
+"The stateful/stateless navigation distinction is quite similar to the "
+"traditional view of modal/modeless interaction. Now, Seam applications are "
+"not usually modal in the simple sense of the word - indeed, avoiding "
+"application modal behavior is one of the main reasons for having "
+"conversations! However, Seam applications can be, and often are, modal at "
+"the level of a particular conversation. It is well-known that modal behavior "
+"is something to avoid as much as possible; it is very difficult to predict "
+"the order in which your users are going to want to do things! However, there "
+"is no doubt that the stateful model has its place."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:120
+#, no-c-format
+msgid ""
+"The biggest contrast between the two models is the back-button behavior."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:126
+#, no-c-format
+msgid "Seam and the back button"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:127
+#, no-c-format
+msgid ""
+"When JSF or Seam navigation rules are used, Seam lets the user freely "
+"navigate via the back, forward and refresh buttons. It is the responsibility "
+"of the application to ensure that conversational state remains internally "
+"consistent when this occurs. Experience with the combination of web "
+"application frameworks like Struts or WebWork - that do not support a "
+"conversational model - and stateless component models like EJB stateless "
+"session beans or the Spring framework has taught many developers that this "
+"is close to impossible to do! However, our experience is that in the context "
+"of Seam, where there is a well-defined conversational model, backed by "
+"stateful session beans, it is actually quite straightforward. Usually it is "
+"as simple as combining the use of <literal>no-conversation-view-id</literal> "
+"with null checks at the beginning of action listener methods. We consider "
+"support for freeform navigation to be almost always desirable."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:130
+#, no-c-format
+msgid ""
+"In this case, the <literal>no-conversation-view-id</literal> declaration "
+"goes in <literal>pages.xml</literal>. It tells Seam to redirect to a "
+"different page if a request originates from a page rendered during a "
+"conversation, and that conversation no longer exists:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:133
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/checkout.xhtml\" \n"
+"        no-conversation-view-id=\"/main.xhtml\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:134
+#, no-c-format
+msgid ""
+"On the other hand, in the stateful model, backbuttoning is interpreted as an "
+"undefined transition back to a previous state. Since the stateful model "
+"enforces a defined set of transitions from the current state, back buttoning "
+"is be default disallowed in the stateful model! Seam transparently detects "
+"the use of the back button, and blocks any attempt to perform an action from "
+"a previous, \"stale\" page, and simply redirects the user to the \"current\" "
+"page (and displays a faces message). Whether you consider this a feature or "
+"a limitation of the stateful model depends upon your point of view: as an "
+"application developer, it is a feature; as a user, it might be frustrating! "
+"You can enable backbutton navigation from a particular page node by setting "
+"<literal>back=\"enabled\"</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:137
+#, no-c-format
+msgid ""
+"&lt;page name=\"checkout\" \n"
+"        view-id=\"/checkout.xhtml\" \n"
+"        back=\"enabled\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"checkout\"/&gt;\n"
+"    &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:138
+#, no-c-format
+msgid ""
+"This allows backbuttoning <emphasis>from</emphasis> the <literal>checkout</"
+"literal> state to <emphasis>any previous state!</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:141
+#, no-c-format
+msgid ""
+"Of course, we still need to define what happens if a request originates from "
+"a page rendered during a pageflow, and the conversation with the pageflow no "
+"longer exists. In this case, the <literal>no-conversation-view-id</literal> "
+"declaration goes into the pageflow definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:144
+#, no-c-format
+msgid ""
+"&lt;page name=\"checkout\" \n"
+"        view-id=\"/checkout.xhtml\" \n"
+"        back=\"enabled\" \n"
+"        no-conversation-view-id=\"/main.xhtml\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"checkout\"/&gt;\n"
+"    &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:151
+#, no-c-format
+msgid "Using jPDL pageflows"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:153
+#, no-c-format
+msgid "Installing pageflows"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:154
+#, no-c-format
+msgid ""
+"We need to install the Seam jBPM-related components, and tell them where to "
+"find our pageflow definition. We can specify this Seam configuration in "
+"<literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:157
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:pageflow-definitions&gt;\n"
+"        &lt;value&gt;pageflow.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:pageflow-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:158
+#, no-c-format
+msgid ""
+"The first line installs jBPM, the second points to a jPDL-based pageflow "
+"definition."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:164
+#, no-c-format
+msgid "Starting pageflows"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:165
+#, no-c-format
+msgid ""
+"We \"start\" a jPDL-based pageflow by specifying the name of the process "
+"definition using a <literal>@Begin</literal>, <literal>@BeginTask</literal> "
+"or <literal>@StartTask</literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:168
+#, no-c-format
+msgid ""
+"@Begin(pageflow=\"numberguess\")\n"
+"public void begin() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:169
+#, no-c-format
+msgid "Alternatively we can start a pageflow using pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:172
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"        &lt;begin-conversation pageflow=\"numberguess\"/&gt;\n"
+"    &lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:173
+#, no-c-format
+msgid ""
+"If we are beginning the pageflow during the <literal>RENDER_RESPONSE</"
+"literal> phase&mdash;during a <literal>@Factory</literal> or "
+"<literal>@Create</literal> method, for example&mdash;we consider ourselves "
+"to be already at the page being rendered, and use a <literal>&lt;start-"
+"page&gt;</literal> node as the first node in the pageflow, as in the example "
+"above."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:176
+#, no-c-format
+msgid ""
+"But if the pageflow is begun as the result of an action listener invocation, "
+"the outcome of the action listener determines which is the first page to be "
+"rendered. In this case, we use a <literal>&lt;start-state&gt;</literal> as "
+"the first node in the pageflow, and declare a transition for each possible "
+"outcome:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:179
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"viewEditDocument\"&gt;\n"
+"\n"
+"    &lt;start-state name=\"start\"&gt;\n"
+"        &lt;transition name=\"documentFound\" to=\"displayDocument\"/&gt;\n"
+"        &lt;transition name=\"documentNotFound\" to=\"notFound\"/&gt;\n"
+"    &lt;/start-state&gt;\n"
+"    \n"
+"    &lt;page name=\"displayDocument\" view-id=\"/document.jsp\"&gt;\n"
+"        &lt;transition name=\"edit\" to=\"editDocument\"/&gt;\n"
+"        &lt;transition name=\"done\" to=\"main\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"    \n"
+"    ...\n"
+"    \n"
+"    &lt;page name=\"notFound\" view-id=\"/404.jsp\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"    &lt;/page&gt;\n"
+"    \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:183
+#, no-c-format
+msgid "Page nodes and transitions"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:184
+#, no-c-format
+msgid ""
+"Each <literal>&lt;page&gt;</literal> node represents a state where the "
+"system is waiting for user input:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:187
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"        &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:188
+#, no-c-format
+msgid ""
+"The <literal>view-id</literal> is the JSF view id. The <literal>&lt;redirect/"
+"&gt;</literal> element has the same effect as <literal>&lt;redirect/&gt;</"
+"literal> in a JSF navigation rule: namely, a post-then-redirect behavior, to "
+"overcome problems with the browser's refresh button. (Note that Seam "
+"propagates conversation contexts over these browser redirects. So there is "
+"no need for a Ruby on Rails style \"flash\" construct in Seam!)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:191
+#, no-c-format
+msgid ""
+"The transition name is the name of a JSF outcome triggered by clicking a "
+"command button or command link in <literal>numberGuess.jsp</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:194
+#, no-c-format
+msgid ""
+"&lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"guess\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:195
+#, no-c-format
+msgid ""
+"When the transition is triggered by clicking this button, jBPM will activate "
+"the transition action by calling the <literal>guess()</literal> method of "
+"the <literal>numberGuess</literal> component. Notice that the syntax used "
+"for specifying actions in the jPDL is just a familiar JSF EL expression, and "
+"that the transition action handler is just a method of a Seam component in "
+"the current Seam contexts. So we have exactly the same event model for jBPM "
+"events that we already have for JSF events! (The <emphasis>One Kind of "
+"Stuff</emphasis> principle.)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:198
+#, no-c-format
+msgid ""
+"In the case of a null outcome (for example, a command button with no "
+"<literal>action</literal> defined), Seam will signal the transition with no "
+"name if one exists, or else simply redisplay the page if all transitions "
+"have names. So we could slightly simplify our example pageflow and this "
+"button:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:201
+#, no-c-format
+msgid "&lt;h:commandButton type=\"submit\" value=\"Guess\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:202
+#, no-c-format
+msgid "Would fire the following un-named transition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:205
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"evaluateGuess\"&gt;\n"
+"        &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:206
+#, no-c-format
+msgid ""
+"It is even possible to have the button call an action method, in which case "
+"the action outcome will determine the transition to be taken:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:209
+#, no-c-format
+msgid ""
+"&lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"#{numberGuess."
+"guess}\"/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:210
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;transition name=\"correctGuess\" to=\"win\"/&gt;\n"
+"    &lt;transition name=\"incorrectGuess\" to=\"evaluateGuess\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:211
+#, no-c-format
+msgid ""
+"However, this is considered an inferior style, since it moves responsibility "
+"for controlling the flow out of the pageflow definition and back into the "
+"other components. It is much better to centralize this concern in the "
+"pageflow itself."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:217
+#, no-c-format
+msgid "Controlling the flow"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:218
+#, no-c-format
+msgid ""
+"Usually, we don't need the more powerful features of jPDL when defining "
+"pageflows. We do need the <literal>&lt;decision&gt;</literal> node, however:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:221
+#, no-c-format
+msgid ""
+"&lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess.correctGuess}"
+"\"&gt;\n"
+"    &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"    &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"&lt;/decision&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:222
+#, no-c-format
+msgid ""
+"A decision is made by evaluating a JSF EL expression in the Seam contexts."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:228
+#, no-c-format
+msgid "Ending the flow"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:229
+#, no-c-format
+msgid ""
+"We end the conversation using <literal>&lt;end-conversation&gt;</literal> or "
+"<literal>@End</literal>. (In fact, for readability, use of <emphasis>both</"
+"emphasis> is encouraged.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:232
+#, no-c-format
+msgid ""
+"&lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;end-conversation/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:233
+#, no-c-format
+msgid ""
+"Optionally, we can end a task, specify a jBPM <literal>transition</literal> "
+"name. In this case, Seam will signal the end of the current task in the "
+"overarching business process."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:236
+#, no-c-format
+msgid ""
+"&lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;end-task transition=\"success\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:242
+#, no-c-format
+msgid "Business process management in Seam"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:243
+#, no-c-format
+msgid ""
+"A business process is a well-defined set of tasks that must be performed by "
+"users or software systems according to well-defined rules about "
+"<emphasis>who</emphasis> can perform a task, and <emphasis>when</emphasis> "
+"it should be performed. Seam's jBPM integration makes it easy to display "
+"lists of tasks to users and let them manage their tasks. Seam also lets the "
+"application store state associated with the business process in the "
+"<literal>BUSINESS_PROCESS</literal> context, and have that state made "
+"persistent via jBPM variables."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:246
+#, no-c-format
+msgid ""
+"A simple business process definition looks much the same as a page flow "
+"definition (<emphasis>One Kind of Stuff</emphasis>), except that instead of "
+"<literal>&lt;page&gt;</literal> nodes, we have <literal>&lt;task-node&gt;</"
+"literal> nodes. In a long-running business process, the wait states are "
+"where the system is waiting for some user to log in and perform a task."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:249
+#, no-c-format
+msgid ""
+"&lt;process-definition name=\"todo\"&gt;\n"
+"   \n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"todo\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;task-node name=\"todo\"&gt;\n"
+"      &lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"         &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"      &lt;/task&gt;\n"
+"      &lt;transition to=\"done\"/&gt;\n"
+"   &lt;/task-node&gt;\n"
+"   \n"
+"   &lt;end-state name=\"done\"/&gt;\n"
+"   \n"
+"&lt;/process-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:260
+#, no-c-format
+msgid ""
+"It is perfectly possible that we might have both jPDL business process "
+"definitions and jPDL pageflow definitions in the same project. If so, the "
+"relationship between the two is that a single <literal>&lt;task&gt;</"
+"literal> in a business process corresponds to a whole pageflow <literal>&lt;"
+"pageflow-definition&gt;</literal>"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:265
+#, no-c-format
+msgid "Using jPDL business process definitions"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:267
+#, no-c-format
+msgid "Installing process definitions"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:268
+#, no-c-format
+msgid ""
+"We need to install jBPM, and tell it where to find the business process "
+"definitions:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:271
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;todo.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:275
+#, no-c-format
+msgid "Initializing actor ids"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:276
+#, no-c-format
+msgid ""
+"We always need to know what user is currently logged in. jBPM \"knows\" "
+"users by their <emphasis>actor id</emphasis> and <emphasis>group actor ids</"
+"emphasis>. We specify the current actor ids using the built in Seam "
+"component named <literal>actor</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:279
+#, no-c-format
+msgid ""
+"@In Actor actor;\n"
+"\n"
+"public String login() {\n"
+"    ...\n"
+"    actor.setId( user.getUserName() );\n"
+"    actor.getGroupActorIds().addAll( user.getGroupNames() );\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:283
+#, no-c-format
+msgid "Initiating a business process"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:284
+#, no-c-format
+msgid ""
+"To initiate a business process instance, we use the <literal>@CreateProcess</"
+"literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:287
+#, no-c-format
+msgid ""
+"@CreateProcess(definition=\"todo\")\n"
+"public void createTodo() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:288
+#, no-c-format
+msgid "Alternatively we can initiate a business process using pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:291
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;create-process definition=\"todo\" /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:295
+#, no-c-format
+msgid "Task assignment"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:296
+#, no-c-format
+msgid ""
+"When a process starts, task instances are created. These must be assigned to "
+"users or user groups. We can either hardcode our actor ids, or delegate to a "
+"Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:299
+#, no-c-format
+msgid ""
+"&lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"    &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"&lt;/task&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:300
+#, no-c-format
+msgid ""
+"In this case, we have simply assigned the task to the current user. We can "
+"also assign tasks to a pool:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:303
+#, no-c-format
+msgid ""
+"&lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"    &lt;assignment pooled-actors=\"employees\"/&gt;\n"
+"&lt;/task&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:307
+#, no-c-format
+msgid "Task lists"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:308
+#, no-c-format
+msgid ""
+"Several built-in Seam components make it easy to display task lists. The "
+"<literal>pooledTaskInstanceList</literal> is a list of pooled tasks that "
+"users may assign to themselves:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:311
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{pooledTaskInstanceList}\" var=\"task\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Description&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{task.description}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link action=\"#{pooledTask.assignToCurrentActor}\" value="
+"\"Assign\" taskInstance=\"#{task}\"/&gt;\n"
+"    &lt;/h:column&gt;            \n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:312
+#, no-c-format
+msgid ""
+"Note that instead of <literal>&lt;s:link&gt;</literal> we could have used a "
+"plain JSF <literal>&lt;h:commandLink&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:315
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"#{pooledTask.assignToCurrentActor}\"&gt; \n"
+"    &lt;f:param name=\"taskId\" value=\"#{task.id}\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:316
+#, no-c-format
+msgid ""
+"The <literal>pooledTask</literal> component is a built-in component that "
+"simply assigns the task to the current user."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:319
+#, no-c-format
+msgid ""
+"The <literal>taskInstanceListByType</literal> component includes tasks of a "
+"particular type that are assigned to the current user:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:322
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{taskInstanceListByType['todo']}\" var=\"task"
+"\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Description&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{task.description}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link action=\"#{todoList.start}\" value=\"Start Work\" "
+"taskInstance=\"#{task}\"/&gt;\n"
+"    &lt;/h:column&gt;            \n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:326
+#, no-c-format
+msgid "Performing a task"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:327
+#, no-c-format
+msgid ""
+"To begin work on a task, we use either <literal>@StartTask</literal> or "
+"<literal>@BeginTask</literal> on the listener method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:330
+#, no-c-format
+msgid ""
+"@StartTask\n"
+"public String start() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:331
+#, no-c-format
+msgid "Alternatively we can begin work on a task using pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:334
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;start-task /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:335
+#, no-c-format
+msgid ""
+"These annotations begin a special kind of conversation that has significance "
+"in terms of the overarching business process. Work done by this conversation "
+"has access to state held in the business process context."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:338
+#, no-c-format
+msgid ""
+"If we end the conversation using <literal>@EndTask</literal>, Seam will "
+"signal the completion of the task:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:341
+#, no-c-format
+msgid ""
+"@EndTask(transition=\"completed\")\n"
+"public String completed() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:342
+#, no-c-format
+msgid "Alternatively we can use pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:345
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;end-task transition=\"completed\" /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:346
+#, no-c-format
+msgid ""
+"(Alternatively, we could have used <literal>&lt;end-conversation&gt;</"
+"literal> as shown above.)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:349
+#, no-c-format
+msgid ""
+"At this point, jBPM takes over and continues executing the business process "
+"definition. (In more complex processes, several tasks might need to be "
+"completed before process execution can resume.)"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Jms.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Jms.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Jms.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,477 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Jms.xml:10
+#, no-c-format
+msgid "Asynchronicity and messaging"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:11
+#, no-c-format
+msgid ""
+"Seam makes it very easy to perform work asynchronously from a web request. "
+"When most people think of asynchronicity in Java EE, they think of using "
+"JMS. This is certainly one way to approach the problem in Seam, and is the "
+"right way when you have strict and well-defined quality of service "
+"requirements. Seam makes it easy to send and recieve JMS messages using Seam "
+"components."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:14
+#, no-c-format
+msgid ""
+"But for many usecases, JMS is overkill. Seam layers a simple asynchronous "
+"method and event facility over the EJB 3.0 timer service."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:17
+#, no-c-format
+msgid "Asynchronicity"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:18
+#, no-c-format
+msgid ""
+"Asynchronous events and method calls have the same quality of service "
+"expectations as the container's EJB timer service. If you're not familiar "
+"with the Timer service, don't worry, you don't need to interact with it "
+"directly if you want to use asynchronous methods in Seam."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:21
+#, no-c-format
+msgid ""
+"To use asynchronous methods and events, you need to add the following line "
+"to <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:24
+#, no-c-format
+msgid "&lt;core:dispatcher/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:25
+#, no-c-format
+msgid ""
+"Note that this functionality is not available in environments which do not "
+"support EJB 3.0."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:28
+#, no-c-format
+msgid "Asynchronous methods"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:29
+#, no-c-format
+msgid ""
+"In simplest form, an asynchronous call just lets a method call be processed "
+"asynchronously (in a different thread) from the caller. We usually use an "
+"asynchronous call when we want to return an immediate response to the "
+"client, and let some expensive work be processed in the background. This "
+"pattern works very well in applications which use AJAX, where the client can "
+"automatically poll the server for the result of the work."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:32
+#, no-c-format
+msgid ""
+"For EJB components, we annotate the local interface to specify that a method "
+"is processed asynchronously."
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:35
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public void processPayment(Payment payment);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:36
+#, no-c-format
+msgid ""
+"(For JavaBean components we can annotate the component implementation class "
+"if we like.)"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:39
+#, no-c-format
+msgid "The use of asynchronicity is transparent to the bean class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:42
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"paymentHandler\")\n"
+"public class PaymentHandlerBean implements PaymentHandler\n"
+"{\n"
+"    public void processPayment(Payment payment)\n"
+"    {\n"
+"        //do some work!\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:43
+#, no-c-format
+msgid "And also transparent to the client:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:46
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String pay()\n"
+"    {\n"
+"        paymentHandler.processPayment( new Payment(bill) );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:47
+#, no-c-format
+msgid ""
+"The asynchronous method is processed in a completely new event context and "
+"does not have access to the session or conversation context state of the "
+"caller. However, the business process context <emphasis>is</emphasis> "
+"propagated."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:50
+#, no-c-format
+msgid ""
+"Asynchronous method calls may be scheduled for later execution using the "
+"<literal>@Duration</literal>, <literal>@Expiration</literal> and "
+"<literal>@IntervalDuration</literal> annotations."
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:53
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public void processScheduledPayment(Payment payment, @Expiration Date "
+"date);\n"
+"\n"
+"    @Asynchronous\n"
+"    public void processRecurringPayment(Payment payment, @Expiration Date "
+"date, \n"
+"        @IntervalDuration Long interval)'\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:54
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String schedulePayment()\n"
+"    {\n"
+"        paymentHandler.processScheduledPayment( new Payment(bill), bill."
+"getDueDate() );\n"
+"        return \"success\";\n"
+"    }\n"
+"\n"
+"    public String scheduleRecurringPayment()\n"
+"    {\n"
+"        paymentHandler.processRecurringPayment( new Payment(bill), bill."
+"getDueDate(), ONE_MONTH );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:55
+#, no-c-format
+msgid ""
+"Both client and server may access the <literal>Timer</literal> object "
+"associated with the invocation."
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:58
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public Timer processScheduledPayment(Payment payment, @Expiration Date "
+"date);\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:59
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"paymentHandler\")\n"
+"public class PaymentHandlerBean implements PaymentHandler\n"
+"{\n"
+"    @In Timer timer;\n"
+"    \n"
+"    public Timer processScheduledPayment(Payment payment, @Expiration Date "
+"date)\n"
+"    {\n"
+"        //do some work!\n"
+"        \n"
+"        return timer; //note that return value is completely ignored\n"
+"    }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:60
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String schedulePayment()\n"
+"    {\n"
+"        Timer timer = paymentHandler.processScheduledPayment( new Payment"
+"(bill), bill.getDueDate() );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:61
+#, no-c-format
+msgid "Asynchronous methods cannot return any other value to the caller."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:64
+#, no-c-format
+msgid "Asynchronous events"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:65
+#, no-c-format
+msgid ""
+"Component-driven events may also be asynchronous. To raise an event for "
+"asynchronous processing, simply call the <literal>raiseAsynchronousEvent()</"
+"literal> methods of the <literal>Events</literal> class. To schedule a timed "
+"event, call one of the <literal>raiseTimedEvent()</literal> methods. "
+"Components may observe asynchronous events in the usual way, but remember "
+"that only the business process context is propagated to the asynchronous "
+"thread."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:68
+#, no-c-format
+msgid "Messaging in Seam"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:69
+#, no-c-format
+msgid ""
+"Seam makes it easy to send and receive JMS messages to and from Seam "
+"components."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:72
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:73
+#, no-c-format
+msgid ""
+"To configure Seam's infrastructure for sending JMS messages, you need to "
+"tell Seam about any topics and queues you want to send messages to, and also "
+"tell Seam where to find the <literal>QueueConnectionFactory</literal> and/or "
+"<literal>TopicConnectionFactory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:76
+#, no-c-format
+msgid ""
+"Seam defaults to using <literal>UIL2ConnectionFactory</literal> which is the "
+"usual connection factory for use with JBossMQ. If you are using some other "
+"JMS provider, you need to set one or both of <literal>queueConnection."
+"queueConnectionFactoryJndiName</literal> and <literal>topicConnection."
+"topicConnectionFactoryJndiName</literal> in <literal>seam.properties</"
+"literal>, <literal>web.xml</literal> or <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:79
+#, no-c-format
+msgid ""
+"You also need to list topics and queues in <literal>components.xml</literal> "
+"to install Seam managed <literal>TopicPublisher</literal>s and "
+"<literal>QueueSender</literal>s:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:82
+#, no-c-format
+msgid ""
+"&lt;jms:managed-topic-publisher name=\"stockTickerPublisher\" auto-create="
+"\"true\" \n"
+"    topic-jndi-name=\"topic/stockTickerTopic\"/&gt;\n"
+"\n"
+"&lt;jms:managed-queue-sender name=\"paymentQueueSender\" auto-create=\"true"
+"\" \n"
+"    queue-jndi-name=\"queue/paymentQueue\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:83
+#, no-c-format
+msgid "Sending messages"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:84
+#, no-c-format
+msgid ""
+"Now, you can inject a JMS <literal>TopicPublisher</literal> and "
+"<literal>TopicSession</literal> into any component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:87
+#, no-c-format
+msgid ""
+"@In \n"
+"private TopicPublisher stockTickerPublisher;   \n"
+"@In \n"
+"private TopicSession topicSession;\n"
+"\n"
+"public void publish(StockPrice price) {\n"
+"      try\n"
+"      {\n"
+"         topicPublisher.publish( topicSession.createObjectMessage(price) );\n"
+"      } \n"
+"      catch (Exception ex)\n"
+"      {\n"
+"         throw new RuntimeException(ex);\n"
+"      } \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:88
+#, no-c-format
+msgid "Or, for working with a queue:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:91
+#, no-c-format
+msgid ""
+"@In\n"
+"private QueueSender paymentQueueSender;   \n"
+"@In\n"
+"private QueueSession queueSession;\n"
+"\n"
+"public void publish(Payment payment) {\n"
+"      try\n"
+"      {\n"
+"         paymentQueueSender.send( queueSession.createObjectMessage"
+"(payment) );\n"
+"      } \n"
+"      catch (Exception ex)\n"
+"      {\n"
+"         throw new RuntimeException(ex);\n"
+"      } \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:92
+#, no-c-format
+msgid "Receiving messages using a message-driven bean"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:93
+#, no-c-format
+msgid ""
+"You can process messages using any EJB3 message driven bean. Message-driven "
+"beans may even be Seam components, in which case it is possible to inject "
+"other event and application scoped Seam components."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:96
+#, no-c-format
+msgid "Receiving messages in the client"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:97
+#, no-c-format
+msgid ""
+"Seam Remoting lets you subscribe to a JMS topic from client-side JavaScript. "
+"This is described in the next chapter."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Mail.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Mail.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Mail.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,985 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Mail.xml:10
+#, no-c-format
+msgid "Email"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:11
+#, no-c-format
+msgid ""
+"Seam now includes an optional components for templating and sending emails."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:14
+#, no-c-format
+msgid ""
+"Email support is provided by <literal>jboss-seam-mail.jar</literal>. This "
+"JAR contains the mail JSF controls, which are used to construct emails, and "
+"the <literal>mailSession</literal> manager component."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:17
+#, no-c-format
+msgid ""
+"The examples/mail project contains an example of the email support in "
+"action. It demonstrates proper packaging, and it contains a number of "
+"example that demonstrate the key features currently supported."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:21
+#, no-c-format
+msgid "Creating a message"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:22
+#, no-c-format
+msgid ""
+"You don't need to learn a whole new templating language to use Seam "
+"Mail&mdash;an email is just facelet!"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:25
+#, no-c-format
+msgid ""
+"&lt;m:message xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"    xmlns:m=\"http://jboss.com/products/seam/mail\"\n"
+"    xmlns:h=\"http://java.sun.com/jsf/html\"&gt;\n"
+"  \n"
+"    &lt;m:from name=\"Peter\" address=\"peter at example.com\" /&gt;\n"
+"    &lt;m:to name=\"#{person.firstname} #{person.lastname}\"&gt;#{person."
+"address}&lt;/m:to&gt;\n"
+"    &lt;m:subject&gt;Try out Seam!&lt;/m:subject&gt;\n"
+"    \n"
+"    &lt;m:body&gt;\n"
+"        &lt;p&gt;&lt;h:outputText value=\"Dear #{person.firstname}\" /&gt;,"
+"&lt;/p&gt;\n"
+"        &lt;p&gt;You can try out Seam by visiting \n"
+"        &lt;a href=\"http://labs.jboss.com/jbossseam\"&gt;http://labs.jboss."
+"com/jbossseam&lt;/a&gt;.&lt;/p&gt;\n"
+"        &lt;p&gt;Regards,&lt;/p&gt;\n"
+"        &lt;p&gt;Peter&lt;/p&gt;\n"
+"    &lt;/m:body&gt;\n"
+"    \n"
+"&lt;/m:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:26
+#, no-c-format
+msgid ""
+"The <literal>&lt;m:message&gt;</literal> tag wraps the whole message, and "
+"tells Seam to start rendering an email. Inside the <literal>&lt;m:message&gt;"
+"</literal> tag we use an <literal>&lt;m:from&gt;</literal> tag to set who "
+"the message is from, a <literal>&lt;m:to&gt;</literal> tag to specify a "
+"sender (notice how we use EL as we would in a normal facelet), and a "
+"<literal>&lt;m:subject&gt;</literal> tag."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:29
+#, no-c-format
+msgid ""
+"The <literal>&lt;m:body&gt;</literal> tag wraps the body of the email. You "
+"can use regular HTML tags inside the body as well as JSF components."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:32
+#, no-c-format
+msgid ""
+"So, now you have your email template, how do you go about sending it? Well, "
+"at the end of rendering the <literal>m:message</literal> the "
+"<literal>mailSession</literal> is called to send the email, so all you have "
+"to do is ask Seam to render the view:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:35
+#, no-c-format
+msgid ""
+"@In(create=true)\n"
+"private Renderer renderer;\n"
+"   \n"
+"public void send() {\n"
+"    try {\n"
+"       renderer.render(\"/simple.xhtml\");\n"
+"       facesMessages.add(\"Email sent successfully\");\n"
+"   } \n"
+"   catch (Exception e) {\n"
+"       facesMessages.add(\"Email sending failed: \" + e.getMessage());\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:36
+#, no-c-format
+msgid ""
+"If, for example, you entered an invalid email address, then an exception "
+"would be thrown, which is caught and then displayed to the user."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:40
+#, no-c-format
+msgid "Attachments"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:41
+#, no-c-format
+msgid ""
+"Seam makes it easy to attach files to an email. It supports most of the "
+"standard java types used when working with files."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:44
+#, no-c-format
+msgid "If you wanted to email the <literal>jboss-seam-mail.jar</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:47
+#, no-c-format
+msgid "&lt;m:attachment value=\"/WEB-INF/lib/jboss-seam-mail.jar\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:48
+#, no-c-format
+msgid ""
+"Seam will load the file from the classpath, and attach it to the email. By "
+"default it would be attached as <literal>jboss-seam-mail.jar</literal>; if "
+"you wanted it to have another name you would just add the <literal>fileName</"
+"literal> attribute:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:51
+#, no-c-format
+msgid ""
+"&lt;m:attachment value=\"/WEB-INF/lib/jboss-seam-mail.jar\" fileName=\"this-"
+"is-so-cool.jar\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:52
+#, no-c-format
+msgid ""
+"You could also attach a <literal>java.io.File</literal>, a <literal>java.net."
+"URL</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:55
+#, no-c-format
+msgid "&lt;m:attachment value=\"#{numbers}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:56
+#, no-c-format
+msgid ""
+"Or a <literal>byte[]</literal> or a <literal>java.io.InputStream</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:59
+#, no-c-format
+msgid ""
+"&lt;m:attachment value=\"#{person.photo}\" contentType=\"image/png\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:60
+#, no-c-format
+msgid ""
+"You'll notice that for a <literal>byte[]</literal> and a <literal>java.io."
+"InputStream</literal> you need to specify the MIME type of the attachment "
+"(as that information is not carried as part of the file)."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:63
+#, no-c-format
+msgid ""
+"And it gets even better, you can attach a Seam generated PDF, or any "
+"standard JSF view, just by wrapping a <literal>&lt;m:attachment&gt;</"
+"literal> around the normal tags you would use:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:66
+#, no-c-format
+msgid ""
+"&lt;m:attachment fileName=\"tiny.pdf\"&gt;\n"
+"    &lt;p:"
+"document&gt;                                                      \n"
+"        A very tiny "
+"PDF                                                                                                \n"
+"    &lt;/p:document&gt;\n"
+"&lt;/m:attachment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:67
+#, no-c-format
+msgid ""
+"If you had a set of files you wanted to attach (for example a set of "
+"pictures loaded from a database) you can just use a <literal>&lt;ui:"
+"repeat&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:70
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{people}\" var=\"person\"&gt;\n"
+"    &lt;m:attachment value=\"#{person.photo}\" contentType=\"image/jpeg\"\n"
+"    fileName=\"#{person.firstname}_#{person.lastname}.jpg\"/&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:74
+#, no-c-format
+msgid "HTML/Text alternative part"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:75
+#, no-c-format
+msgid ""
+"Whilst most mail readers nowadays support HTML, some don't, so you can add a "
+"plain text alternative to your email body:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:78
+#, no-c-format
+msgid ""
+"&lt;m:body&gt;\n"
+"    &lt;f:facet name=\"alternative\"&gt;Sorry, your email reader can't show "
+"our fancy email, \n"
+"please go to http://labs.jboss.com/jbossseam to explore Seam.&lt;/f:"
+"facet&gt;\n"
+"&lt;/m:body&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:82
+#, no-c-format
+msgid "Multiple recipients"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:83
+#, no-c-format
+msgid ""
+"Often you'll want to send an email to a group of recipients (for example "
+"your users). All of the recipient mail tags can be placed inside a "
+"<literal>&lt;ui:repeat&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:86
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{allUsers} var=\"user\"&gt;\n"
+"    &lt;m:to name=\"#{user.firstname} #{user.lastname}\" address=\"#{user."
+"emailAddress}\" /&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:90
+#, no-c-format
+msgid "Multiple messages"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:91
+#, no-c-format
+msgid ""
+"Sometimes, however, you need to send a slightly different message to each "
+"recipient (e.g. a password reset). The best way to do this is to place the "
+"whole message inside a <literal>&lt;ui:repeat&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:94
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{people}\" var=\"p\"&gt;\n"
+"    &lt;m:message&gt;\n"
+"        &lt;m:from name=\"#{person.firstname} #{person.lastname}\"&gt;#"
+"{person.address}&lt;/m:from&gt;\n"
+"        &lt;m:to name=\"#{p.firstname}\"&gt;#{p.address}&lt;/m:to&gt;\n"
+"            ...\n"
+"    &lt;/m:message&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:98
+#, no-c-format
+msgid "Templating"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:99
+#, no-c-format
+msgid ""
+"The mail templating example shows that facelets templating Just Works with "
+"the Seam mail tags."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:102
+#, no-c-format
+msgid "Our <literal>template.xhtml</literal> contains:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:105
+#, no-c-format
+msgid ""
+"&lt;m:message&gt;\n"
+"   &lt;m:from name=\"Seam\" address=\"do-not-reply at jboss.com\" /&gt;\n"
+"   &lt;m:to name=\"#{person.firstname} #{person.lastname}\"&gt;#{person."
+"address}&lt;/m:to&gt;\n"
+"   &lt;m:subject&gt;#{subject}&lt;/m:subject&gt;\n"
+"   &lt;m:body&gt;\n"
+"       &lt;html&gt;\n"
+"           &lt;body&gt;\n"
+"               &lt;ui:insert name=\"body\"&gt;This is the default body, "
+"specified by the template.\n"
+"               &lt;/ui:insert&gt;\n"
+"           &lt;/body&gt;\n"
+"       &lt;/html&gt;\n"
+"   &lt;/m:body&gt;\n"
+"&lt;/m:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:106
+#, no-c-format
+msgid "Our <literal>templating.xhtml</literal> contains:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:109
+#, no-c-format
+msgid ""
+"&lt;ui:param name=\"subject\" value=\"Templating with Seam Mail\"/&gt;\n"
+"&lt;ui:define name=\"body\"&gt;\n"
+"    &lt;p&gt;This example demonstrates that you can easily use &lt;i&gt;"
+"facelets templating&lt;/i&gt; in email!&lt;/p&gt;\n"
+"&lt;/ui:define&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:113
+#, no-c-format
+msgid "Other Headers"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:114
+#, no-c-format
+msgid ""
+"Sometimes you'll want to add other headers to your email. Seam provides "
+"support for some (see <xref linkend=\"Email-Tags\"/>). For example, we can "
+"set the importance of the email, and ask for a read receipt:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:117
+#, no-c-format
+msgid ""
+"&lt;m:message xmlns:m=\"http://jboss.com/products/seam/mail\"\n"
+"           importance=\"low\"\n"
+"           requestReadReceipt=\"true\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:118
+#, no-c-format
+msgid ""
+"Otherise you can add any header to the message using the <literal>&lt;m:"
+"header&gt;</literal> tag:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:121
+#, no-c-format
+msgid "&lt;m:header name=\"X-Sent-From\" value=\"JBoss Seam\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:127
+#, no-c-format
+msgid "Receiving emails"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:128
+#, no-c-format
+msgid ""
+"If you are using EJB then you can use a MDB (Message Driven Bean) to receive "
+"email. Seam comes with an improved version of <literal>mail-ra.rar</literal> "
+"as distributed in JBoss AS; until the improvements make there way into a "
+"released version of JBoss AS, replacing the default <literal>rar</literal> "
+"with the one distributed with Seam is recommended."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:131
+#, no-c-format
+msgid "You can configure it like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:134
+#, no-c-format
+msgid ""
+"@MessageDriven(activationConfig={\n"
+"         @ActivationConfigProperty(propertyName=\"mailServer\", "
+"propertyValue=\"localhost\"),\n"
+"         @ActivationConfigProperty(propertyName=\"mailFolder\", "
+"propertyValue=\"INBOX\"),\n"
+"         @ActivationConfigProperty(propertyName=\"storeProtocol\", "
+"propertyValue=\"pop3\"),\n"
+"         @ActivationConfigProperty(propertyName=\"userName\", propertyValue="
+"\"seam\"),\n"
+"         @ActivationConfigProperty(propertyName=\"password\", propertyValue="
+"\"seam\")\n"
+"})\n"
+"@ResourceAdapter(\"mail-ra.rar\")\n"
+"@Name(\"mailListener\")\n"
+"public class MailListenerMDB implements MailListener {\n"
+"\n"
+"   @In(create=true)\n"
+"   private OrderProcessor orderProcessor;\n"
+"\n"
+"   public void onMessage(Message message) {\n"
+"      // Process the message\n"
+"      orderProcessor.process(message.getSubject());\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:135
+#, no-c-format
+msgid ""
+"Each message received will cause <literal>onMessage(Message message)</"
+"literal> to be called. Most seam annotations will work inside a MDB but you "
+"musn't access the persistence context."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:138
+#, no-c-format
+msgid ""
+"You can find more information on the default <literal>mail-ra.rar</literal> "
+"at <ulink url=\"http://wiki.jboss.org/wiki/Wiki.jsp?page=InboundJavaMail"
+"\">http://wiki.jboss.org/wiki/Wiki.jsp?page=InboundJavaMail</ulink>. The "
+"version distributed with Seam also includes a <literal>debug</literal> "
+"property to enable JavaMail debugging, a <literal>flush</literal> property "
+"(by default true) to disable flushing a <literal>POP3</literal> mailbox "
+"after successfullying delivering a message to your MDB and a <literal>port</"
+"literal> property to override the default TCP port. Beware that the api for "
+"this may be altered as changes make there way into JBoss AS."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:141
+#, no-c-format
+msgid ""
+"If you aren't using JBoss AS you can still use <literal>mail-ra.rar</"
+"literal> (included with Seam in the mail directory), or you may find your "
+"application server includes a similar adapter."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:147
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:148
+#, no-c-format
+msgid ""
+"To include Email support in your application, include <literal>jboss-seam-"
+"mail.jar</literal> in your WEB-INF/lib directory. If you are using JBoss AS "
+"there is no further configuration needed to use Seam's email support. "
+"Otherwise you need to make sure you have the JavaMail API, an implementation "
+"of the JavaMail API present (the API and impl used in JBoss AS are "
+"distributed with seam as <literal>lib/mail.jar</literal>), and a copy of the "
+"Java Activation Framework (distributed with seam as <literal>lib/activation."
+"jar</literal>."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:151
+#, no-c-format
+msgid ""
+"The Seam Email module requires the use of Facelets as the view technology. "
+"Future versions of the library may also support the use of JSP. "
+"Additionally, it requires the use of the seam-ui package."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:154
+#, no-c-format
+msgid ""
+"The <literal>mailSession</literal> component uses JavaMail to talk to a "
+"'real' SMTP server."
+msgstr ""
+
+#. Tag: literal
+#: Mail.xml:158
+#, no-c-format
+msgid "mailSession"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:159
+#, no-c-format
+msgid ""
+"A JavaMail Session may be available via a JNDI lookup if you are working in "
+"an JEE environment or you can use a Seam configured Session."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:162
+#, no-c-format
+msgid ""
+"The mailSession component's properties are described in more detail in <xref "
+"linkend=\"Built_in_Seam_components-Mail_related_components\"/>."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:166
+#, no-c-format
+msgid "JNDI lookup in JBoss AS"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:167
+#, no-c-format
+msgid ""
+"The JBossAS <literal>deploy/mail-service.xml</literal> configures a JavaMail "
+"session binding into JNDI. The default service configuration will need "
+"altering for your network. <ulink url=\"http://wiki.jboss.org/wiki/Wiki.jsp?"
+"page=JavaMail\">http://wiki.jboss.org/wiki/Wiki.jsp?page=JavaMail</ulink> "
+"describes the service in more detail."
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:170
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"        xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"        xmlns:mail=\"http://jboss.com/products/seam/mail\"&gt;\n"
+"        \n"
+"    &lt;mail:mail-session session-jndi-name=\"java:/Mail\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:171
+#, no-c-format
+msgid ""
+"Here we tell Seam to get the mail session bound to <literal>java:/Mail</"
+"literal> from JNDI."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:177
+#, no-c-format
+msgid "Seam configured Session"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:178
+#, no-c-format
+msgid ""
+"A mail session can be configured via <literal>components.xml</literal>. Here "
+"we tell Seam to use <literal>smtp.example.com</literal> as the smtp server,"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:181
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"        xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"        xmlns:mail=\"http://jboss.com/products/seam/mail\"&gt;\n"
+"        \n"
+"    &lt;mail:mail-session host=\"smtp.example.com\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:189
+#, no-c-format
+msgid "Tags"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:190
+#, no-c-format
+msgid ""
+"Emails are generated using tags in the <literal>http://jboss.com/products/"
+"seam/mail</literal> namespace. Documents should always have the "
+"<literal>message</literal> tag at the root of the message. The message tag "
+"prepares Seam to generate an email."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:193
+#, no-c-format
+msgid ""
+"The standard templating tags of facelets can be used as normal. Inside the "
+"body you can use any JSF tag which doesn't require access to external "
+"resources (stylesheets, javascript)."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:198
+#, no-c-format
+msgid "&lt;m:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:200
+#, no-c-format
+msgid "Root tag of a mail message"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:205
+#, no-c-format
+msgid ""
+"<literal>importance</literal> &mdash; low, normal or high. By default "
+"normal, this sets the importance of the mail message."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:210
+#, no-c-format
+msgid ""
+"<literal>precedence</literal> &mdash; sets the precedence of the message (e."
+"g. bulk)."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:215
+#, no-c-format
+msgid ""
+"<literal>requestReadReceipt</literal> &mdash; by default false, if set, a "
+"read receipt will be request will be added, with the read receipt being sent "
+"to the <literal>From:</literal> address."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:220
+#, no-c-format
+msgid ""
+"<literal>urlBase</literal> &mdash; If set, the value is prepended to the "
+"<literal>requestContextPath</literal> allowing you to use components such as "
+"<literal>&lt;h:graphicImage&gt;</literal> in your emails."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:228
+#, no-c-format
+msgid "&lt;m:from&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:230
+#, no-c-format
+msgid ""
+"Set's the From: address for the email. You can only have one of these per "
+"email."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:235
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the name the email should come from."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:240 Mail.xml:255
+#, no-c-format
+msgid ""
+"<literal>address</literal> &mdash; the email address the email should come "
+"from."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:248
+#, no-c-format
+msgid "&lt;m:replyTo&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:250
+#, no-c-format
+msgid ""
+"Set's the Reply-to: address for the email. You can only have one of these "
+"per email."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:263
+#, no-c-format
+msgid "&lt;m:to&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:265
+#, no-c-format
+msgid ""
+"Add a recipient to the email. Use multiple &lt;m:to&gt; tags for multiple "
+"recipients. This tag can be safely placed inside a repeat tag such as &lt;ui:"
+"repeat&gt;."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:270 Mail.xml:290 Mail.xml:310
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the name of the recipient."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:275 Mail.xml:295 Mail.xml:315
+#, no-c-format
+msgid "<literal>address</literal> &mdash; the email address of the recipient."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:283
+#, no-c-format
+msgid "&lt;m:cc&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:285
+#, no-c-format
+msgid ""
+"Add a cc recipient to the email. Use multiple &lt;m:cc&gt; tags for multiple "
+"ccs. This tag can be safely placed inside a repeat tag such as &lt;ui:"
+"repeat&gt;."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:303
+#, no-c-format
+msgid "&lt;m:bcc&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:305
+#, no-c-format
+msgid ""
+"Add a bcc recipient to the email. Use multiple &lt;m:bcc&gt; tags for "
+"multiple bccs. This tag can be safely placed inside a repeat tag such as &lt;"
+"ui:repeat&gt;."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:323
+#, no-c-format
+msgid "&lt;m:header&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:325
+#, no-c-format
+msgid ""
+"Add a header to the email (e.g. <literal>X-Sent-From: JBoss Seam</literal>"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:330
+#, no-c-format
+msgid ""
+"<literal>name</literal> &mdash; The name of the header to add (e.g. "
+"<literal>X-Sent-From</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:335
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; The value of the header to add (e.g. "
+"<literal>JBoss Seam</literal>)."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:343
+#, no-c-format
+msgid "&lt;m:attachment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:345
+#, no-c-format
+msgid "Add an attachment to the email."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:350
+#, no-c-format
+msgid "<literal>value</literal> &mdash; The file to attach:"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:355
+#, no-c-format
+msgid ""
+"<literal>String</literal> &mdash; A <literal>String</literal> is interpreted "
+"as a path to file within the classpath"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:360
+#, no-c-format
+msgid ""
+"<literal>java.io.File</literal> &mdash; An EL expression can reference a "
+"<literal>File</literal> object"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:365
+#, no-c-format
+msgid ""
+"<literal>java.net.URL</literal> &mdash; An EL expression can reference a "
+"<literal>URL</literal> object"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:370
+#, no-c-format
+msgid ""
+"<literal>java.io.InputStream</literal> &mdash; An EL expression can "
+"reference an <literal>InputStream</literal>. In this case both a "
+"<literal>fileName</literal> and a <literal>contentType</literal> must be "
+"specified."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:375
+#, no-c-format
+msgid ""
+"<literal>byte[]</literal> &mdash; An EL expression can reference an "
+"<literal>byte[]</literal>. In this case both a <literal>fileName</literal> "
+"and a <literal>contentType</literal> must be specified."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:380
+#, no-c-format
+msgid "If the value attribute is ommitted:"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:385
+#, no-c-format
+msgid ""
+"If this tag contains a <literal>&lt;p:document&gt;</literal> tag, the "
+"document described will be generated and attached to the email. A "
+"<literal>fileName</literal> should be specfied."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:390
+#, no-c-format
+msgid ""
+"If this tag contains other JSF tags a HTML document will be generated from "
+"them and attached to the email. A <literal>fileName</literal> should be "
+"specfied."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:397
+#, no-c-format
+msgid ""
+"<literal>fileName</literal> &mdash; Specify the file name to use for the "
+"attached file."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:402
+#, no-c-format
+msgid ""
+"<literal>contentType</literal> &mdash; Specify the MIME type of the attached "
+"file"
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:410
+#, no-c-format
+msgid "&lt;m:subject&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:412
+#, no-c-format
+msgid "Set's the subject for the email."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:418
+#, no-c-format
+msgid "&lt;m:body&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:420
+#, no-c-format
+msgid ""
+"Set's the body for the email. Supports an <literal>alternative</literal> "
+"facet which, if an HTML email is generated can contain alternative text for "
+"a mail reader which doesn't support html."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:425
+#, no-c-format
+msgid ""
+"<literal>type</literal> &mdash; If set to <literal>plain</literal> then a "
+"plain text email will be generated otherwise an HTML email is generated."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Persistence.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Persistence.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Persistence.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,750 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Persistence.xml:10
+#, no-c-format
+msgid "Seam and Object/Relational Mapping"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:11
+#, no-c-format
+msgid ""
+"Seam provides extensive support for the two most popular persistence "
+"architectures for Java: Hibernate3, and the Java Persistence API introduced "
+"with EJB 3.0. Seam's unique state-management architecture allows the most "
+"sophisticated ORM integration of any web application framework."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:15
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:16
+#, no-c-format
+msgid ""
+"Seam grew out of the frustration of the Hibernate team with the "
+"statelessness typical of the previous generation of Java application "
+"architectures. The state management architecture of Seam was originally "
+"designed to solve problems relating to persistence&mdash;in particular "
+"problems associated with <emphasis>optimistic transaction processing</"
+"emphasis>. Scalable online applications always use optimistic transactions. "
+"An atomic (database/JTA) level transaction should not span a user "
+"interaction unless the application is designed to support only a very small "
+"number of concurrent clients. But almost all interesting work involves first "
+"displaying data to a user, and then, slightly later, updating the same data. "
+"So Hibernate was designed to support the idea of a persistence context which "
+"spanned an optimistic transaction."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:19
+#, no-c-format
+msgid ""
+"Unfortunately, the so-called \"stateless\" architectures that preceded Seam "
+"and EJB 3.0 had no construct for representing an optimistic transaction. So, "
+"instead, these architectures provided persistence contexts scoped to the "
+"atomic transaction. Of course, this resulted in many problems for users, and "
+"is the cause of the number one user complaint about Hibernate: the dreaded "
+"<literal>LazyInitializationException</literal>. What we need is a construct "
+"for representing an optimistic transaction in the application tier."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:22
+#, no-c-format
+msgid ""
+"EJB 3.0 recognizes this problem, and introduces the idea of a stateful "
+"component (a stateful session bean) with an <emphasis>extended persistence "
+"context</emphasis> scoped to the lifetime of the component. This is a "
+"partial solution to the problem (and is a useful construct in and of itself) "
+"however there are two problems:"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:27
+#, no-c-format
+msgid ""
+"The lifecycle of the stateful session bean must be managed manually via code "
+"in the web tier (it turns out that this is a subtle problem and much more "
+"difficult in practice than it sounds)."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:32
+#, no-c-format
+msgid ""
+"Propagation of the persistence context between stateful components in the "
+"same optimistic transaction is possible, but tricky."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:37
+#, no-c-format
+msgid ""
+"Seam solves the first problem by providing conversations, and stateful "
+"session bean components scoped to the conversation. (Most conversations "
+"actually represent optimistic transactions in the data layer.) This is "
+"sufficient for many simple applications (such as the Seam booking demo) "
+"where persistence context propagation is not needed. For more complex "
+"applications, with many loosly-interacting components in each conversation, "
+"propagation of the persistence context across components becomes an "
+"important issue. So Seam extends the persistence context management model of "
+"EJB 3.0, to provide conversation-scoped extended persistence contexts."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:43
+#, no-c-format
+msgid "Seam managed transactions"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:44
+#, no-c-format
+msgid ""
+"EJB session beans feature declarative transaction management. The EJB "
+"container is able to start a transaction transparently when the bean is "
+"invoked, and end it when the invocation ends. If we write a session bean "
+"method that acts as a JSF action listener, we can do all the work associated "
+"with that action in one transaction, and be sure that it is committed or "
+"rolled back when we finish processing the action. This is a great feature, "
+"and all that is needed by some Seam applications."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:47
+#, no-c-format
+msgid ""
+"However, there is a problem with this approach. A Seam application may not "
+"perform all data access for a request from a single method call to a session "
+"bean."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:52
+#, no-c-format
+msgid ""
+"The request might require processing by several loosly-coupled components, "
+"each of which is called independently from the web layer. It is common to "
+"see several or even many calls per request from the web layer to EJB "
+"components in Seam."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:57
+#, no-c-format
+msgid "Rendering of the view might require lazy fetching of associations."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:62
+#, no-c-format
+msgid ""
+"The more transactions per request, the more likely we are to encounter "
+"atomicity and isolation problems when our application is processing many "
+"concurrent requests. Certainly, all write operations should occur in the "
+"same transaction!"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:65
+#, no-c-format
+msgid ""
+"Hibernate users developed the <emphasis>\"open session in view\"</emphasis> "
+"pattern to work around this problem. In the Hibernate community, \"open "
+"session in view\" was historically even more important because frameworks "
+"like Spring use transaction-scoped persistence contexts. So rendering the "
+"view would cause <literal>LazyInitializationException</literal>s when "
+"unfetched associations were accessed."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:68
+#, no-c-format
+msgid ""
+"This pattern is usually implemented as a single transaction which spans the "
+"entire request. There are several problems with this implementation, the "
+"most serious being that we can never be sure that a transaction is "
+"successful until we commit it&mdash;but by the time the \"open session in "
+"view\" transaction is committed, the view is fully rendered, and the "
+"rendered response may already have been flushed to the client. How can we "
+"notify the user that their transaction was unsuccessful?"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:71
+#, no-c-format
+msgid ""
+"Seam solves both the transaction isolation problem and the association "
+"fetching problem, while working around the problems with \"open session in "
+"view\". The solution comes in two parts:"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:76
+#, no-c-format
+msgid ""
+"use an extended persistence context that is scoped to the conversation, "
+"instead of to the transaction"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:81
+#, no-c-format
+msgid ""
+"use two transactions per request; the first spans the beginning of the "
+"update model values phase until the end of the invoke application phase; the "
+"second spans the render response phase"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:86
+#, no-c-format
+msgid ""
+"In the next section, we'll tell you how to set up a conversation-scope "
+"persistence context. But first we need to tell you how to enable Seam "
+"transaction management. Note that you can use conversation-scoped "
+"persistence contexts without Seam transaction management, and there are good "
+"reasons to use Seam transaction management even when you're not using Seam-"
+"managed persistence contexts. However, the two facilities were designed to "
+"work together, and work best when used together."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:90
+#, no-c-format
+msgid "Enabling Seam-managed transactions"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:91
+#, no-c-format
+msgid ""
+"To make use of <emphasis>Seam managed transactions</emphasis>, you need to "
+"use <literal>TransactionalSeamPhaseListener</literal> in place of "
+"<literal>SeamPhaseListener</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:94
+#, no-c-format
+msgid ""
+"&lt;lifecycle&gt;\n"
+"     &lt;phase-listener&gt;\n"
+"        org.jboss.seam.jsf.TransactionalSeamPhaseListener\n"
+"    &lt;/phase-listener&gt;\n"
+"&lt;/lifecycle&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:95
+#, no-c-format
+msgid ""
+"Seam transaction management is useful even if you're using EJB 3.0 container-"
+"managed persistence contexts. But it is especially useful if you use Seam "
+"outside a Java EE 5 environment, or in any other case where you would use a "
+"Seam-managed persistence context."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:103
+#, no-c-format
+msgid "Seam-managed persistence contexts"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:104
+#, no-c-format
+msgid ""
+"If you're using Seam outside of a Java EE 5 environment, you can't rely upon "
+"the container to manage the persistence context lifecycle for you. Even if "
+"you are in an EE 5 environment, you might have a complex application with "
+"many loosly coupled components that collaborate together in the scope of a "
+"single conversation, and in this case you might find that propagation of the "
+"persistence context between component is tricky and error-prone."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:107
+#, no-c-format
+msgid ""
+"In either case, you'll need to use a <emphasis>managed persistence context</"
+"emphasis> (for JPA) or a <emphasis>managed session</emphasis> (for "
+"Hibernate) in your components. A Seam-managed persistence context is just a "
+"built-in Seam component that manages an instance of <literal>EntityManager</"
+"literal> or <literal>Session</literal> in the conversation context. You can "
+"inject it with <literal>@In</literal>."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:110
+#, no-c-format
+msgid ""
+"Seam-managed persistence contexts are extremely efficient in a clustered "
+"environment. Seam is able to perform an optimization that EJB 3.0 "
+"specification does not allow containers to use for container-managed "
+"extended persistence contexts. Seam supports transparent failover of "
+"extended persisence contexts, without the need to replicate any persistence "
+"context state between nodes. (We hope to fix this oversight in the next "
+"revision of the EJB spec.)"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:114
+#, no-c-format
+msgid "Using a Seam-managed persistence context with JPA"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:115
+#, no-c-format
+msgid ""
+"Configuring a managed persistence context is easy. In <literal>components."
+"xml</literal>, we can write:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:118
+#, no-c-format
+msgid ""
+"&lt;core:managed-persistence-context name=\"bookingDatabase\" \n"
+"                           auto-create=\"true\"\n"
+"            persistence-unit-jndi-name=\"java:/EntityManagerFactories/"
+"bookingData\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:119
+#, no-c-format
+msgid ""
+"This configuration creates a conversation-scoped Seam component named "
+"<literal>bookingDatabase</literal> that manages the lifecycle of "
+"<literal>EntityManager</literal> instances for the persistence unit "
+"(<literal>EntityManagerFactory</literal> instance) with JNDI name "
+"<literal>java:/EntityManagerFactories/bookingData</literal>."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:122
+#, no-c-format
+msgid ""
+"Of course, you need to make sure that you have bound the "
+"<literal>EntityManagerFactory</literal> into JNDI. In JBoss, you can do this "
+"by adding the following property setting to <literal>persistence.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:125
+#, no-c-format
+msgid ""
+"&lt;property name=\"jboss.entity.manager.factory.jndi.name\" \n"
+"          value=\"java:/EntityManagerFactories/bookingData\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:126
+#, no-c-format
+msgid "Now we can have our <literal>EntityManager</literal> injected using:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:129
+#, no-c-format
+msgid "@In EntityManager bookingDatabase;"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:133
+#, no-c-format
+msgid "Using a Seam-managed Hibernate session"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:134
+#, no-c-format
+msgid ""
+"Seam-managed Hibernate sessions are similar. In <literal>components.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:137
+#, no-c-format
+msgid ""
+"&lt;core:hibernate-session-factory name=\"hibernateSessionFactory\"/&gt;\n"
+"\n"
+"&lt;core:managed-hibernate-session name=\"bookingDatabase\" \n"
+"                         auto-create=\"true\"\n"
+"           session-factory-jndi-name=\"java:/bookingSessionFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:138
+#, no-c-format
+msgid ""
+"Where <literal>java:/bookingSessionFactory</literal> is the name of the "
+"session factory specified in <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:141
+#, no-c-format
+msgid ""
+"&lt;session-factory name=\"java:/bookingSessionFactory\"&gt;\n"
+"    &lt;property name=\"transaction.flush_before_completion\"&gt;true&lt;/"
+"property&gt;\n"
+"    &lt;property name=\"connection.release_mode\"&gt;after_statement&lt;/"
+"property&gt;\n"
+"    &lt;property name=\"transaction.manager_lookup_class\"&gt;\n"
+"        org.hibernate.transaction.JBossTransactionManagerLookup\n"
+"    &lt;/property&gt;\n"
+"    &lt;property name=\"transaction.factory_class\"&gt;\n"
+"        org.hibernate.transaction.JTATransactionFactory\n"
+"    &lt;/property&gt;\n"
+"    &lt;property name=\"connection.datasource\"&gt;java:/"
+"bookingDatasource&lt;/property&gt;\n"
+"    ...\n"
+"&lt;/session-factory&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:142
+#, no-c-format
+msgid ""
+"Note that Seam does not flush the session, so you should always enable "
+"<literal>hibernate.transaction.flush_before_completion</literal> to ensure "
+"that the session is automatically flushed before the JTA transaction commits."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:145
+#, no-c-format
+msgid ""
+"We can now have a managed Hibernate <literal>Session</literal> injected into "
+"our JavaBean components using the following code:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:148
+#, no-c-format
+msgid "@In Session bookingDatabase;"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:152
+#, no-c-format
+msgid "Seam-managed persistence contexts and atomic conversations"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:153
+#, no-c-format
+msgid ""
+"Persistence contexts scoped to the conversation allows you to program "
+"optimistic transactions that span multiple requests to the server without "
+"the need to use the <literal>merge()</literal> operation , without the need "
+"to re-load data at the beginning of each request, and without the need to "
+"wrestle with the <literal>LazyInitializationException</literal> or "
+"<literal>NonUniqueObjectException</literal>."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:156
+#, no-c-format
+msgid ""
+"As with any optimistic transaction management, transaction isolation and "
+"consistency can be achieved via use of optimistic locking. Fortunately, both "
+"Hibernate and EJB 3.0 make it very easy to use optimistic locking, by "
+"providing the <literal>@Version</literal> annotation."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:159
+#, no-c-format
+msgid ""
+"By default, the persistence context is flushed (synchronized with the "
+"database) at the end of each transaction. This is sometimes the desired "
+"behavior. But very often, we would prefer that all changes are held in "
+"memory and only written to the database when the conversation ends "
+"successfully. This allows for truly atomic conversations. As the result of a "
+"truly stupid and shortsighted decision by certain non-JBoss, non-Sun and non-"
+"Sybase members of the EJB 3.0 expert group, there is currently no simple, "
+"usable and portable way to implement atomic conversations using EJB 3.0 "
+"persistence. However, Hibernate provides this feature as a vendor extension "
+"to the <literal>FlushModeType</literal>s defined by the specification, and "
+"it is our expectation that other vendors will soon provide a similar "
+"extension."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:162
+#, no-c-format
+msgid ""
+"Seam lets you specify <literal>FlushModeType.MANUAL</literal> when beginning "
+"a conversation. Currently, this works only when Hibernate is the underlying "
+"persistence provider, but we plan to support other equivalent vendor "
+"extensions."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:165
+#, no-c-format
+msgid ""
+"@In EntityManager em; //a Seam-managed persistence context\n"
+"\n"
+"@Begin(flushMode=MANUAL)\n"
+"public void beginClaimWizard() {\n"
+"    claim = em.find(Claim.class, claimId);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:166
+#, no-c-format
+msgid ""
+"Now, the <literal>claim</literal> object remains managed by the persistence "
+"context for the rest ot the conversation. We can make changes to the claim:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:169
+#, no-c-format
+msgid ""
+"public void addPartyToClaim() {\n"
+"    Party party = ....;\n"
+"    claim.addParty(party);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:170
+#, no-c-format
+msgid ""
+"But these changes will not be flushed to the database until we explicitly "
+"force the flush to occur:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:173
+#, no-c-format
+msgid ""
+"@End\n"
+"public void commitClaim() {\n"
+"    em.flush();\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:179
+#, no-c-format
+msgid "Using the JPA \"delegate\""
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:180
+#, no-c-format
+msgid ""
+"The <literal>EntityManager</literal> interface lets you access a vendor-"
+"specific API via the <literal>getDelegate()</literal> method. Naturally, the "
+"most interesting vendor is Hibernate, and the most powerful delegate "
+"interface is <literal>org.hibernate.Session</literal>. You'd be nuts to use "
+"anything else. Trust me, I'm not biased at all."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:183
+#, no-c-format
+msgid ""
+"But regardless of whether you're using Hibernate (genius!) or something else "
+"(masochist, or just not very bright), you'll almost certainly want to use "
+"the delegate in your Seam components from time to time. One approach would "
+"be the following:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:186
+#, no-c-format
+msgid ""
+"@In EntityManager entityManager;\n"
+"\n"
+"@Create\n"
+"public void init() {\n"
+"    ( (Session) entityManager.getDelegate() ).enableFilter(\"currentVersions"
+"\");\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:187
+#, no-c-format
+msgid ""
+"But typecasts are unquestionably the ugliest syntax in the Java language, so "
+"most people avoid them whenever possible. Here's a different way to get at "
+"the delegate. First, add the following line to <literal>components.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:190
+#, no-c-format
+msgid ""
+"&lt;factory name=\"session\" \n"
+"         scope=\"STATELESS\" \n"
+"         auto-create=\"true\" \n"
+"         value=\"#{entityManager.delegate}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:191
+#, no-c-format
+msgid "Now we can inject the session directly:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:194
+#, no-c-format
+msgid ""
+"@In Session session;\n"
+"\n"
+"@Create\n"
+"public void init() {\n"
+"    session.enableFilter(\"currentVersions\");\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:198
+#, no-c-format
+msgid "Using EL in EJB-QL/HQL"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:199
+#, no-c-format
+msgid ""
+"Seam proxies the <literal>EntityManager</literal> or <literal>Session</"
+"literal> object whenever you use a Seam-managed persistence context or "
+"inject a container managed persistence context using "
+"<literal>@PersistenceContext</literal>. This lets you use EL expressions in "
+"your query strings, safely and efficiently. For example, this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:202
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=#{user.username}\")\n"
+"         .getSingleResult();"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:203
+#, no-c-format
+msgid "is equivalent to:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:206
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getSingleResult();"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:207
+#, no-c-format
+msgid "Of course, you should never, ever write it like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:210
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=\" + user.getUsername"
+"()) //BAD!\n"
+"         .getSingleResult();"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:211
+#, no-c-format
+msgid "(It is inefficient and vulnerable to SQL injection attacks.)"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:217
+#, no-c-format
+msgid "Using Hibernate filters"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:218
+#, no-c-format
+msgid ""
+"The coolest, and most unique, feature of Hibernate is <emphasis>filters</"
+"emphasis>. Filters let you provide a restricted view of the data in the "
+"database. You can find out more about filters in the Hibernate "
+"documentation. But we thought we'd mention an easy way to incorporate "
+"filters into a Seam application, one that works especially well with the "
+"Seam Application Framework."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:221
+#, no-c-format
+msgid ""
+"Seam-managed persistence contexts may have a list of filters defined, which "
+"will be enabled whenever an <literal>EntityManager</literal> or Hibernate "
+"<literal>Session</literal> is first created. (Of course, they may only be "
+"used when Hibernate is the underlying persistence provider.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:224
+#, no-c-format
+msgid ""
+"&lt;core:filter name=\"regionFilter\"&gt;\n"
+"    &lt;core:name&gt;region&lt;/core:name&gt;\n"
+"    &lt;core:parameters&gt;\n"
+"        &lt;key&gt;regionCode&lt;/key&gt;\n"
+"        &lt;value&gt;#{region.code}&lt;/value&gt;\n"
+"    &lt;/core:parameters&gt;\n"
+"&lt;/core:filter&gt;\n"
+"\n"
+"&lt;core:filter name=\"currentFilter\"&gt;\n"
+"    &lt;core:name&gt;current&lt;/core:name&gt;\n"
+"    &lt;core:parameters&gt;\n"
+"        &lt;key&gt;date&lt;/key&gt;\n"
+"        &lt;value&gt;#{currentDate}&lt;/value&gt;\n"
+"    &lt;/core:parameters&gt;\n"
+"&lt;/core:filter&gt;\n"
+"\n"
+"&lt;core:managed-persistence-context name=\"personDatabase\"\n"
+"    persistence-unit-jndi-name=\"java:/EntityManagerFactories/personDatabase"
+"\"&gt;\n"
+"    &lt;core:filters&gt;\n"
+"        &lt;value&gt;#{regionFilter}&lt;/value&gt;\n"
+"        &lt;value&gt;#{currentFilter}&lt;/value&gt;\n"
+"    &lt;/core:filters&gt;\n"
+"&lt;/core:managed-persistence-context&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Remoting.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Remoting.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Remoting.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1458 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Remoting.xml:10
+#, no-c-format
+msgid "Remoting"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:11
+#, no-c-format
+msgid ""
+"Seam provides a convenient method of remotely accessing components from a "
+"web page, using AJAX (Asynchronous Javascript and XML). The framework for "
+"this functionality is provided with almost no up-front development effort - "
+"your components only require simple annotating to become accessible via "
+"AJAX. This chapter describes the steps required to build an AJAX-enabled web "
+"page, then goes on to explain the features of the Seam Remoting framework in "
+"more detail."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:14 Remoting.xml:296
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:15
+#, no-c-format
+msgid ""
+"To use remoting, the Seam Resource servlet must first be configured in your "
+"<literal>web.xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:18
+#, no-c-format
+msgid ""
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"  &lt;/servlet&gt;\n"
+"\n"
+"  &lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"  &lt;/servlet-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:19
+#, no-c-format
+msgid ""
+"The next step is to import the necessary Javascript into your web page. "
+"There are a minimum of two scripts that must be imported. The first one "
+"contains all the client-side framework code that enables remoting "
+"functionality:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:22
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/resource/"
+"remote.js\"&gt;&lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:23
+#, no-c-format
+msgid ""
+"The second script contains the stubs and type definitions for the components "
+"you wish to call. It is generated dynamically based on the local interface "
+"of your components, and includes type definitions for all of the classes "
+"that can be used to call the remotable methods of the interface. The name of "
+"the script reflects the name of your component. For example, if you have a "
+"stateless session bean annotated with <literal>@Name(\"customerAction\")</"
+"literal>, then your script tag should look like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:26
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?customerAction\"&gt;\n"
+"      &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:27
+#, no-c-format
+msgid ""
+"If you wish to access more than one component from the same page, then "
+"include them all as parameters of your script tag:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:30
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" \n"
+"      src=\"seam/resource/remoting/interface.js?customerAction&amp;"
+"accountAction\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:31
+#, no-c-format
+msgid "The \"Seam\" object"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:32
+#, no-c-format
+msgid ""
+"Client-side interaction with your components is all performed via the "
+"<literal>Seam</literal> Javascript object. This object is defined in "
+"<literal>remote.js</literal>, and you'll be using it to make asynchronous "
+"calls against your component. It is split into two areas of functionality; "
+"<literal>Seam.Component</literal> contains methods for working with "
+"components and <literal>Seam.Remoting</literal> contains methods for "
+"executing remote requests. The easiest way to become familiar with this "
+"object is to start with a simple example."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:35
+#, no-c-format
+msgid "A Hello World example"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:36
+#, no-c-format
+msgid ""
+"Let's step through a simple example to see how the <literal>Seam</literal> "
+"object works. First of all, let's create a new Seam component called "
+"<literal>helloAction</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:39
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"  @Name(\"helloAction\")\n"
+"  public class HelloAction implements HelloLocal {\n"
+"    public String sayHello(String name) {\n"
+"      return \"Hello, \" + name;\n"
+"    }\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:40
+#, no-c-format
+msgid ""
+"You also need to create a local interface for our new component - take "
+"special note of the <literal>@WebRemote</literal> annotation, as it's "
+"required to make our method accessible via remoting:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:43
+#, no-c-format
+msgid ""
+"@Local\n"
+"  public interface HelloLocal {\n"
+"    @WebRemote\n"
+"    public String sayHello(String name);\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:44
+#, no-c-format
+msgid ""
+"That's all the server-side code we need to write. Now for our web page - "
+"create a new page and import the following scripts:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:47
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/resource/"
+"remote.js\"&gt;&lt;/script&gt;\n"
+"  &lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?helloAction\"&gt;&lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:48
+#, no-c-format
+msgid ""
+"To make this a fully interactive user experience, let's add a button to our "
+"page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:51
+#, no-c-format
+msgid ""
+"&lt;button onclick=\"javascript:sayHello()\"&gt;Say Hello&lt;/button&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:52
+#, no-c-format
+msgid ""
+"We'll also need to add some more script to make our button actually do "
+"something when it's clicked:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:55
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\"&gt;\n"
+"    //&lt;![CDATA[\n"
+"\n"
+"    function sayHello() {\n"
+"      var name = prompt(\"What is your name?\");\n"
+"      Seam.Component.getInstance(\"helloAction\").sayHello(name, "
+"sayHelloCallback);\n"
+"    }\n"
+"\n"
+"    function sayHelloCallback(result) {\n"
+"      alert(result);\n"
+"    }\n"
+"\n"
+"    // ]]&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:56
+#, no-c-format
+msgid ""
+"We're done! Deploy your application and browse to your page. Click the "
+"button, and enter a name when prompted. A message box will display the hello "
+"message confirming that the call was successful. If you want to save some "
+"time, you'll find the full source code for this Hello World example in "
+"Seam's <literal>/examples/remoting/helloworld</literal> directory."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:59
+#, no-c-format
+msgid ""
+"So what does the code of our script actually do? Let's break it down into "
+"smaller pieces. To start with, you can see from the Javascript code listing "
+"that we have implemented two methods - the first method is responsible for "
+"prompting the user for their name and then making a remote request. Take a "
+"look at the following line:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:62
+#, no-c-format
+msgid ""
+"Seam.Component.getInstance(\"helloAction\").sayHello(name, sayHelloCallback);"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:63
+#, no-c-format
+msgid ""
+"The first section of this line, <literal>Seam.Component.getInstance"
+"(\"helloAction\")</literal> returns a proxy, or \"stub\" for our "
+"<literal>helloAction</literal> component. We can invoke the methods of our "
+"component against this stub, which is exactly what happens with the "
+"remainder of the line: <literal>sayHello(name, sayHelloCallback);</literal>."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:66
+#, no-c-format
+msgid ""
+"What this line of code in its completeness does, is invoke the "
+"<literal>sayHello</literal> method of our component, passing in "
+"<literal>name</literal> as a parameter. The second parameter, "
+"<literal>sayHelloCallback</literal> isn't a parameter of our component's "
+"<literal>sayHello</literal> method, instead it tells the Seam Remoting "
+"framework that once it receives the response to our request, it should pass "
+"it to the <literal>sayHelloCallback</literal> Javascript method. This "
+"callback parameter is entirely optional, so feel free to leave it out if "
+"you're calling a method with a <literal>void</literal> return type or if you "
+"don't care about the result."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:69
+#, no-c-format
+msgid ""
+"The <literal>sayHelloCallback</literal> method, once receiving the response "
+"to our remote request then pops up an alert message displaying the result of "
+"our method call."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:72
+#, no-c-format
+msgid "Seam.Component"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:73
+#, no-c-format
+msgid ""
+"The <literal>Seam.Component</literal> Javascript object provides a number of "
+"client-side methods for working with your Seam components. The two main "
+"methods, <literal>newInstance()</literal> and <literal>getInstance()</"
+"literal> are documented in the following sections however their main "
+"difference is that <literal>newInstance()</literal> will always create a new "
+"instance of a component type, and <literal>getInstance()</literal> will "
+"return a singleton instance."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:76
+#, no-c-format
+msgid "Seam.Component.newInstance()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:77
+#, no-c-format
+msgid ""
+"Use this method to create a new instance of an entity or Javabean component. "
+"The object returned by this method will have the same getter/setter methods "
+"as its server-side counterpart, or alternatively if you wish you can access "
+"its fields directly. Take the following Seam entity component for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:80
+#, no-c-format
+msgid ""
+"@Name(\"customer\")\n"
+"  @Entity\n"
+"  public class Customer implements Serializable\n"
+"  {\n"
+"    private Integer customerId;\n"
+"    private String firstName;\n"
+"    private String lastName;\n"
+"    \n"
+"    @Column public Integer getCustomerId() { \n"
+"      return customerId; \n"
+"    }\n"
+"    \n"
+"    public void setCustomerId(Integer customerId} { \n"
+"      this.customerId = customerId; \n"
+"    }\n"
+"    \n"
+"    @Column public String getFirstName() { \n"
+"      return firstName; \n"
+"    }\n"
+"    \n"
+"    public void setFirstName(String firstName) {\n"
+"      this.firstName = firstName; \n"
+"    }\n"
+"    \n"
+"    @Column public String getLastName() {\n"
+"      return lastName;\n"
+"    }\n"
+"    \n"
+"    public void setLastName(String lastName) {\n"
+"      this.lastName = lastName;\n"
+"    }\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:81
+#, no-c-format
+msgid "To create a client-side Customer you would write the following code:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:84
+#, no-c-format
+msgid "var customer = Seam.Component.newInstance(\"customer\");"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:85
+#, no-c-format
+msgid "Then from here you can set the fields of the customer object:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:88
+#, no-c-format
+msgid ""
+"customer.setFirstName(\"John\");\n"
+"  // Or you can set the fields directly\n"
+"  customer.lastName = \"Smith\";"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:89
+#, no-c-format
+msgid "Seam.Component.getInstance()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:90
+#, no-c-format
+msgid ""
+"The <literal>getInstance()</literal> method is used to get a reference to a "
+"Seam session bean component stub, which can then be used to remotely execute "
+"methods against your component. This method returns a singleton for the "
+"specified component, so calling it twice in a row with the same component "
+"name will return the same instance of the component."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:93
+#, no-c-format
+msgid ""
+"To continue our example from before, if we have created a new "
+"<literal>customer</literal> and we now wish to save it, we would pass it to "
+"the <literal>saveCustomer()</literal> method of our <literal>customerAction</"
+"literal> component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:96
+#, no-c-format
+msgid "Seam.Component.getInstance(\"customerAction\").saveCustomer(customer);"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:97
+#, no-c-format
+msgid "Seam.Component.getComponentName()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:98
+#, no-c-format
+msgid ""
+"Passing an object into this method will return its component name if it is a "
+"component, or <literal>null</literal> if it is not."
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:101
+#, no-c-format
+msgid ""
+"if (Seam.Component.getComponentName(instance) == \"customer\")\n"
+"    alert(\"Customer\");\n"
+"  else if (Seam.Component.getComponentName(instance) == \"staff\")\n"
+"    alert(\"Staff member\");"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:102
+#, no-c-format
+msgid "Seam.Remoting"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:103
+#, no-c-format
+msgid ""
+"Most of the client side functionality for Seam Remoting is contained within "
+"the <literal>Seam.Remoting</literal> object. While you shouldn't need to "
+"directly call most of its methods, there are a couple of important ones "
+"worth mentioning."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:106
+#, no-c-format
+msgid "Seam.Remoting.createType()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:107
+#, no-c-format
+msgid ""
+"If your application contains or uses Javabean classes that aren't Seam "
+"components, you may need to create these types on the client side to pass as "
+"parameters into your component method. Use the <literal>createType()</"
+"literal> method to create an instance of your type. Pass in the fully "
+"qualified Java class name as a parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:110
+#, no-c-format
+msgid "var widget = Seam.Remoting.createType(\"com.acme.widgets.MyWidget\");"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:111
+#, no-c-format
+msgid "Seam.Remoting.getTypeName()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:112
+#, no-c-format
+msgid ""
+"This method is the equivalent of <literal>Seam.Component.getComponentName()</"
+"literal> but for non-component types. It will return the name of the type "
+"for an object instance, or <literal>null</literal> if the type is not known. "
+"The name is the fully qualified name of the type's Java class."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:115
+#, no-c-format
+msgid "Client Interfaces"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:116
+#, no-c-format
+msgid ""
+"In the configuration section above, the interface, or \"stub\" for our "
+"component is imported into our page via <literal>seam/resource/remoting/"
+"interface.js</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:119
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?customerAction\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:120
+#, no-c-format
+msgid ""
+"By including this script in our page, the interface definitions for our "
+"component, plus any other components or types that are required to execute "
+"the methods of our component are generated and made available for the "
+"remoting framework to use."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:123
+#, no-c-format
+msgid ""
+"There are two types of client stub that can be generated, \"executable\" "
+"stubs and \"type\" stubs. Executable stubs are behavioural, and are used to "
+"execute methods against your session bean components, while type stubs "
+"contain state and represent the types that can be passed in as parameters or "
+"returned as a result."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:126
+#, no-c-format
+msgid ""
+"The type of client stub that is generated depends on the type of your Seam "
+"component. If the component is a session bean, then an executable stub will "
+"be generated, otherwise if it's an entity or JavaBean, then a type stub will "
+"be generated. There is one exception to this rule; if your component is a "
+"JavaBean (ie it is not a session bean nor an entity bean) and any of its "
+"methods are annotated with @WebRemote, then an executable stub will be "
+"generated for it instead of a type stub. This allows you to use remoting to "
+"call methods of your JavaBean components in a non-EJB environment where you "
+"don't have access to session beans."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:130
+#, no-c-format
+msgid "The Context"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:131
+#, no-c-format
+msgid ""
+"The Seam Remoting Context contains additional information which is sent and "
+"received as part of a remoting request/response cycle. At this stage it only "
+"contains the conversation ID but may be expanded in the future."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:134
+#, no-c-format
+msgid "Setting and reading the Conversation ID"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:136
+#, no-c-format
+msgid ""
+"If you intend on using remote calls within the scope of a conversation then "
+"you need to be able to read or set the conversation ID in the Seam Remoting "
+"Context. To read the conversation ID after making a remote request call "
+"<literal>Seam.Remoting.getContext().getConversationId()</literal>. To set "
+"the conversation ID before making a request, call <literal>Seam.Remoting."
+"getContext().setConversationId()</literal>."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:139
+#, no-c-format
+msgid ""
+"If the conversation ID hasn't been explicitly set with <literal>Seam."
+"Remoting.getContext().setConversationId()</literal>, then it will be "
+"automatically assigned the first valid conversation ID that is returned by "
+"any remoting call. If you are working with multiple conversations within "
+"your page, then you may need to explicitly set the conversation ID before "
+"each call. If you are working with just a single conversation, then you "
+"don't need to do anything special."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:145
+#, no-c-format
+msgid "Batch Requests"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:146
+#, no-c-format
+msgid ""
+"Seam Remoting allows multiple component calls to be executed within a single "
+"request. It is recommended that this feature is used wherever it is "
+"appropriate to reduce network traffic."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:149
+#, no-c-format
+msgid ""
+"The method <literal>Seam.Remoting.startBatch()</literal> will start a new "
+"batch, and any component calls executed after starting a batch are queued, "
+"rather than being sent immediately. When all the desired component calls "
+"have been added to the batch, the <literal>Seam.Remoting.executeBatch()</"
+"literal> method will send a single request containing all of the queued "
+"calls to the server, where they will be executed in order. After the calls "
+"have been executed, a single response containining all return values will be "
+"returned to the client and the callback functions (if provided) triggered in "
+"the same order as execution."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:152
+#, no-c-format
+msgid ""
+"If you start a new batch via the <literal>startBatch()</literal> method but "
+"then decide you don't want to send it, the <literal>Seam.Remoting.cancelBatch"
+"()</literal> method will discard any calls that were queued and exit the "
+"batch mode."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:155
+#, no-c-format
+msgid ""
+"To see an example of a batch being used, take a look at <literal>/examples/"
+"remoting/chatroom</literal>."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:159
+#, no-c-format
+msgid "Working with Data types"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:160
+#, no-c-format
+msgid "Primitives / Basic Types"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:161
+#, no-c-format
+msgid ""
+"This section describes the support for basic data types. On the server side "
+"these values are generally compatible with either their primitive type or "
+"their corresponding wrapper class."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:164
+#, no-c-format
+msgid "String"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:165
+#, no-c-format
+msgid ""
+"Simply use Javascript String objects when setting String parameter values."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:168
+#, no-c-format
+msgid "Number"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:169
+#, no-c-format
+msgid ""
+"There is support for all number types supported by Java. On the client side, "
+"number values are always serialized as their String representation and then "
+"on the server side they are converted to the correct destination type. "
+"Conversion into either a primitive or wrapper type is supported for "
+"<literal>Byte</literal>, <literal>Double</literal>, <literal>Float</"
+"literal>, <literal>Integer</literal>, <literal>Long</literal> and "
+"<literal>Short</literal> types."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:172
+#, no-c-format
+msgid "Boolean"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:173
+#, no-c-format
+msgid ""
+"Booleans are represented client side by Javascript Boolean values, and "
+"server side by a Java boolean."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:176
+#, no-c-format
+msgid "JavaBeans"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:177
+#, no-c-format
+msgid ""
+"In general these will be either Seam entity or JavaBean components, or some "
+"other non-component class. Use the appropriate method (either <literal>Seam."
+"Component.newInstance()</literal> for Seam components or <literal>Seam."
+"Remoting.createType()</literal> for everything else) to create a new "
+"instance of the object."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:180
+#, no-c-format
+msgid ""
+"It is important to note that only objects that are created by either of "
+"these two methods should be used as parameter values, where the parameter is "
+"not one of the other valid types mentioned anywhere else in this section. In "
+"some situations you may have a component method where the exact parameter "
+"type cannot be determined, such as:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:183
+#, no-c-format
+msgid ""
+"@Name(\"myAction\")\n"
+"  public class MyAction implements MyActionLocal {\n"
+"    public void doSomethingWithObject(Object obj) {\n"
+"      // code\n"
+"    }\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:184
+#, no-c-format
+msgid ""
+"In this case you might want to pass in an instance of your "
+"<literal>myWidget</literal> component, however the interface for "
+"<literal>myAction</literal> won't include <literal>myWidget</literal> as it "
+"is not directly referenced by any of its methods. To get around this, "
+"<literal>MyWidget</literal> needs to be explicitly imported:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:187
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?myAction&amp;myWidget\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:188
+#, no-c-format
+msgid ""
+"This will then allow a <literal>myWidget</literal> object to be created with "
+"<literal>Seam.Component.newInstance(\"myWidget\")</literal>, which can then "
+"be passed to <literal>myAction.doSomethingWithObject()</literal>."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:191
+#, no-c-format
+msgid "Dates and Times"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:192
+#, no-c-format
+msgid ""
+"Date values are serialized into a String representation that is accurate to "
+"the millisecond. On the client side, use a Javascript Date object to work "
+"with date values. On the server side, use any <literal>java.util.Date</"
+"literal> (or descendent, such as <literal>java.sql.Date</literal> or "
+"<literal>java.sql.Timestamp</literal> class."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:195
+#, no-c-format
+msgid "Enums"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:196
+#, no-c-format
+msgid ""
+"On the client side, enums are treated the same as Strings. When setting the "
+"value for an enum parameter, simply use the String representation of the "
+"enum. Take the following component as an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:199
+#, no-c-format
+msgid ""
+"@Name(\"paintAction\")\n"
+"  public class paintAction implements paintLocal {\n"
+"    public enum Color {red, green, blue, yellow, orange, purple};\n"
+"\n"
+"    public void paint(Color color) {\n"
+"      // code\n"
+"    }    \n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:200
+#, no-c-format
+msgid ""
+"To call the <literal>paint()</literal> method with the color <literal>red</"
+"literal>, pass the parameter value as a String literal:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:203
+#, no-c-format
+msgid "Seam.Component.getInstance(\"paintAction\").paint(\"red\");"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:204
+#, no-c-format
+msgid ""
+"The inverse is also true - that is, if a component method returns an enum "
+"parameter (or contains an enum field anywhere in the returned object graph) "
+"then on the client-side it will be represented as a String."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:207
+#, no-c-format
+msgid "Collections"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:208
+#, no-c-format
+msgid "Bags"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:209
+#, no-c-format
+msgid ""
+"Bags cover all collection types including arrays, collections, lists, sets, "
+"(but excluding Maps - see the next section for those), and are implemented "
+"client-side as a Javascript array. When calling a component method that "
+"accepts one of these types as a parameter, your parameter should be a "
+"Javascript array. If a component method returns one of these types, then the "
+"return value will also be a Javascript array. The remoting framework is "
+"clever enough on the server side to convert the bag to an appropriate type "
+"for the component method call."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:212
+#, no-c-format
+msgid "Maps"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:213
+#, no-c-format
+msgid ""
+"As there is no native support for Maps within Javascript, a simple Map "
+"implementation is provided with the Seam Remoting framework. To create a Map "
+"which can be used as a parameter to a remote call, create a new "
+"<literal>Seam.Remoting.Map</literal> object:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:216
+#, no-c-format
+msgid "var map = new Seam.Remoting.Map();"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:217
+#, no-c-format
+msgid ""
+"This Javascript implementation provides basic methods for working with Maps: "
+"<literal>size()</literal>, <literal>isEmpty()</literal>, <literal>keySet()</"
+"literal>, <literal>values()</literal>, <literal>get(key)</literal>, "
+"<literal>put(key, value)</literal>, <literal>remove(key)</literal> and "
+"<literal>contains(key)</literal>. Each of these methods are equivalent to "
+"their Java counterpart. Where the method returns a collection, such as "
+"<literal>keySet()</literal> and <literal>values()</literal>, a Javascript "
+"Array object will be returned that contains the key or value objects "
+"(respectively)."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:220
+#, no-c-format
+msgid "Debugging"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:221
+#, no-c-format
+msgid ""
+"To aid in tracking down bugs, it is possible to enable a debug mode which "
+"will display the contents of all the packets send back and forth between the "
+"client and server in a popup window. To enable debug mode, either execute "
+"the <literal>setDebug()</literal> method in Javascript:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:224
+#, no-c-format
+msgid "Seam.Remoting.setDebug(true);"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:225
+#, no-c-format
+msgid "Or configure it via components.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:228
+#, no-c-format
+msgid "&lt;remoting:remoting debug=\"true\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:229
+#, no-c-format
+msgid ""
+"To turn off debugging, call <literal>setDebug(false)</literal>. If you want "
+"to write your own messages to the debug log, call <literal>Seam.Remoting.log"
+"(message)</literal>."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:233
+#, no-c-format
+msgid "The Loading Message"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:234
+#, no-c-format
+msgid ""
+"The default loading message that appears in the top right corner of the "
+"screen can be modified, its rendering customised or even turned off "
+"completely."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:237
+#, no-c-format
+msgid "Changing the message"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:238
+#, no-c-format
+msgid ""
+"To change the message from the default \"Please Wait...\" to something "
+"different, set the value of <literal>Seam.Remoting.loadingMessage</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:241
+#, no-c-format
+msgid "Seam.Remoting.loadingMessage = \"Loading...\";"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:243
+#, no-c-format
+msgid "Hiding the loading message"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:244
+#, no-c-format
+msgid ""
+"To completely suppress the display of the loading message, override the "
+"implementation of <literal>displayLoadingMessage()</literal> and "
+"<literal>hideLoadingMessage()</literal> with functions that instead do "
+"nothing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:247
+#, no-c-format
+msgid ""
+"// don't display the loading indicator\n"
+"  Seam.Remoting.displayLoadingMessage = function() {};\n"
+"  Seam.Remoting.hideLoadingMessage = function() {};"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:248
+#, no-c-format
+msgid "A Custom Loading Indicator"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:249
+#, no-c-format
+msgid ""
+"It is also possible to override the loading indicator to display an animated "
+"icon, or anything else that you want. To do this override the "
+"<literal>displayLoadingMessage()</literal> and <literal>hideLoadingMessage()"
+"</literal> messages with your own implementation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:252
+#, no-c-format
+msgid ""
+"Seam.Remoting.displayLoadingMessage = function() {\n"
+"    // Write code here to display the indicator\n"
+"  };\n"
+"  \n"
+"  Seam.Remoting.hideLoadingMessage = function() {\n"
+"    // Write code here to hide the indicator\n"
+"  };"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:253
+#, no-c-format
+msgid "Controlling what data is returned"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:254
+#, no-c-format
+msgid ""
+"When a remote method is executed, the result is serialized into an XML "
+"response that is returned to the client. This response is then unmarshaled "
+"by the client into a Javascript object. For complex types (i.e. Javabeans) "
+"that include references to other objects, all of these referenced objects "
+"are also serialized as part of the response. These objects may reference "
+"other objects, which may reference other objects, and so forth. If left "
+"unchecked, this object \"graph\" could potentially be enormous, depending on "
+"what relationships exist between your objects. And as a side issue (besides "
+"the potential verbosity of the response), you might also wish to prevent "
+"sensitive information from being exposed to the client."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:257
+#, no-c-format
+msgid ""
+"Seam Remoting provides a simple means to \"constrain\" the object graph, by "
+"specifying the <literal>exclude</literal> field of the remote method's "
+"<literal>@WebRemote</literal> annotation. This field accepts a String array "
+"containing one or more paths specified using dot notation. When invoking a "
+"remote method, the objects in the result's object graph that match these "
+"paths are excluded from the serialized result packet."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:260
+#, no-c-format
+msgid ""
+"For all our examples, we'll use the following <literal>Widget</literal> "
+"class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:263
+#, no-c-format
+msgid ""
+"@Name(\"widget\")\n"
+"public class Widget\n"
+"{\n"
+"  private String value;\n"
+"  private String secret;\n"
+"  private Widget child;\n"
+"  private Map&lt;String,Widget&gt; widgetMap;\n"
+"  private List&lt;Widget&gt; widgetList;\n"
+"  \n"
+"  // getters and setters for all fields\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:264
+#, no-c-format
+msgid "Constraining normal fields"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:265
+#, no-c-format
+msgid ""
+"If your remote method returns an instance of <literal>Widget</literal>, but "
+"you don't want to expose the <literal>secret</literal> field because it "
+"contains sensitive information, you would constrain it like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:268
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:269
+#, no-c-format
+msgid ""
+"The value \"secret\" refers to the <literal>secret</literal> field of the "
+"returned object. Now, suppose that we don't care about exposing this "
+"particular field to the client. Instead, notice that the <literal>Widget</"
+"literal> value that is returned has a field <literal>child</literal> that is "
+"also a <literal>Widget</literal>. What if we want to hide the "
+"<literal>child</literal>'s <literal>secret</literal> value instead? We can "
+"do this by using dot notation to specify this field's path within the "
+"result's object graph:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:272
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"child.secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:273
+#, no-c-format
+msgid "Constraining Maps and Collections"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:274
+#, no-c-format
+msgid ""
+"The other place that objects can exist within an object graph are within a "
+"<literal>Map</literal> or some kind of collection (<literal>List</literal>, "
+"<literal>Set</literal>, <literal>Array</literal>, etc). Collections are "
+"easy, and are treated like any other field. For example, if our "
+"<literal>Widget</literal> contained a list of other <literal>Widget</"
+"literal>s in its <literal>widgetList</literal> field, to constrain the "
+"<literal>secret</literal> field of the <literal>Widget</literal>s in this "
+"list the annotation would look like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:277
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetList.secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:278
+#, no-c-format
+msgid ""
+"To constrain a <literal>Map</literal>'s key or value, the notation is "
+"slightly different. Appending <literal>[key]</literal> after the "
+"<literal>Map</literal>'s field name will constrain the <literal>Map</"
+"literal>'s key object values, while <literal>[value]</literal> will "
+"constrain the value object values. The following example demonstrates how "
+"the values of the <literal>widgetMap</literal> field have their "
+"<literal>secret</literal> field constrained:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:281
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetMap[value].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:282
+#, no-c-format
+msgid "Constraining objects of a specific type"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:283
+#, no-c-format
+msgid ""
+"There is one last notation that can be used to constrain the fields of a "
+"type of object no matter where in the result's object graph it appears. This "
+"notation uses either the name of the component (if the object is a Seam "
+"component) or the fully qualified class name (only if the object is not a "
+"Seam component) and is expressed using square brackets:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:286
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"[widget].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:287
+#, no-c-format
+msgid "Combining Constraints"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:288
+#, no-c-format
+msgid ""
+"Constraints can also be combined, to filter objects from multiple paths "
+"within the object graph:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:291
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetList.secret\", \"widgetMap[value].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:292
+#, no-c-format
+msgid "JMS Messaging"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:293
+#, no-c-format
+msgid ""
+"Seam Remoting provides experimental support for JMS Messaging. This section "
+"describes the JMS support that is currently implemented, but please note "
+"that this may change in the future. It is currently not recommended that "
+"this feature is used within a production environment."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:297
+#, no-c-format
+msgid ""
+"Before you can subscribe to a JMS topic, you must first configure a list of "
+"the topics that can be subscribed to by Seam Remoting. List the topics under "
+"<literal>org.jboss.seam.remoting.messaging.subscriptionRegistry."
+"allowedTopics</literal> in <literal>seam.properties</literal>, <literal>web."
+"xml</literal> or <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:300 Remoting.xml:333
+#, no-c-format
+msgid "&lt;remoting:remoting poll-timeout=\"5\" poll-interval=\"1\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:301
+#, no-c-format
+msgid "Subscribing to a JMS Topic"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:302
+#, no-c-format
+msgid "The following example demonstrates how to subscribe to a JMS Topic:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:305
+#, no-c-format
+msgid ""
+"function subscriptionCallback(message)\n"
+"  {\n"
+"    if (message instanceof Seam.Remoting.TextMessage)\n"
+"      alert(\"Received message: \" + message.getText());\n"
+"  }        \n"
+"        \n"
+"  Seam.Remoting.subscribe(\"topicName\", subscriptionCallback);"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:306
+#, no-c-format
+msgid ""
+"The <literal>Seam.Remoting.subscribe()</literal> method accepts two "
+"parameters, the first being the name of the JMS Topic to subscribe to, the "
+"second being the callback function to invoke when a message is received."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:309
+#, no-c-format
+msgid ""
+"There are two types of messages supported, Text messages and Object "
+"messages. If you need to test for the type of message that is passed to your "
+"callback function you can use the <literal>instanceof</literal> operator to "
+"test whether the message is a <literal>Seam.Remoting.TextMessage</literal> "
+"or <literal>Seam.Remoting.ObjectMessage</literal>. A <literal>TextMessage</"
+"literal> contains the text value in its <literal>text</literal> field (or "
+"alternatively call <literal>getText()</literal> on it), while an "
+"<literal>ObjectMessage</literal> contains its object value in its "
+"<literal>object</literal> field (or call its <literal>getObject()</literal> "
+"method)."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:312
+#, no-c-format
+msgid "Unsubscribing from a Topic"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:313
+#, no-c-format
+msgid ""
+"To unsubscribe from a topic, call <literal>Seam.Remoting.unsubscribe()</"
+"literal> and pass in the topic name:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:316
+#, no-c-format
+msgid "Seam.Remoting.unsubscribe(\"topicName\");"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:317
+#, no-c-format
+msgid "Tuning the Polling Process"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:318
+#, no-c-format
+msgid ""
+"There are two parameters which you can modify to control how polling occurs. "
+"The first one is <literal>Seam.Remoting.pollInterval</literal>, which "
+"controls how long to wait between subsequent polls for new messages. This "
+"parameter is expressed in seconds, and its default setting is 10."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:321
+#, no-c-format
+msgid ""
+"The second parameter is <literal>Seam.Remoting.pollTimeout</literal>, and is "
+"also expressed as seconds. It controls how long a request to the server "
+"should wait for a new message before timing out and sending an empty "
+"response. Its default is 0 seconds, which means that when the server is "
+"polled, if there are no messages ready for delivery then an empty response "
+"will be immediately returned."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:324
+#, no-c-format
+msgid ""
+"Caution should be used when setting a high <literal>pollTimeout</literal> "
+"value; each request that has to wait for a message means that a server "
+"thread is tied up until a message is received, or until the request times "
+"out. If many such requests are being served simultaneously, it could mean a "
+"large number of threads become tied up because of this reason."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:327
+#, no-c-format
+msgid ""
+"It is recommended that you set these options via components.xml, however "
+"they can be overridden via Javascript if desired. The following example "
+"demonstrates how to configure the polling to occur much more aggressively. "
+"You should set these parameters to suitable values for your application:"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:330
+#, no-c-format
+msgid "Via components.xml:"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:334
+#, no-c-format
+msgid "Via JavaScript:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:337
+#, no-c-format
+msgid ""
+"// Only wait 1 second between receiving a poll response and sending the next "
+"poll request.\n"
+"  Seam.Remoting.pollInterval = 1;\n"
+"  \n"
+"  // Wait up to 5 seconds on the server for new messages\n"
+"  Seam.Remoting.pollTimeout = 5;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Security.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Security.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Security.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1676 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Security.xml:10
+#, no-c-format
+msgid "Security"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:11
+#, no-c-format
+msgid ""
+"The Seam Security API is an optional Seam feature that provides "
+"authentication and authorization features for securing both domain and page "
+"resources within your Seam project."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:14
+#, no-c-format
+msgid "Overview"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:15
+#, no-c-format
+msgid "Seam Security provides two different modes of operation:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:20
+#, no-c-format
+msgid ""
+"<emphasis>simplified mode</emphasis> - this mode supports authentication "
+"services and simple role-based security checks."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:25
+#, no-c-format
+msgid ""
+"<emphasis>advanced mode</emphasis> - this mode supports all the same "
+"features as the simplified mode, plus it offers rule-based security checks "
+"using JBoss Rules."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:30
+#, no-c-format
+msgid "Which mode is right for my application?"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:31
+#, no-c-format
+msgid ""
+"That all depends on the requirements of your application. If you have "
+"minimal security requirements, for example if you only wish to restrict "
+"certain pages and actions to users who are logged in, or who belong to a "
+"certain role, then the simplified mode will probably be sufficient. The "
+"advantages of this is a more simplified configuration, significantly less "
+"libraries to include, and a smaller memory footprint."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:34
+#, no-c-format
+msgid ""
+"If on the other hand, your application requires security checks based on "
+"contextual state or complex business rules, then you will require the "
+"features provided by the advanced mode."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:37
+#, no-c-format
+msgid "Requirements"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:38
+#, no-c-format
+msgid ""
+"If using the advanced mode features of Seam Security, the following jar "
+"files are required to be configured as modules in <literal>application.xml</"
+"literal>. If you are using Seam Security in simplified mode, these are "
+"<emphasis>not</emphasis> required:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:43
+#, no-c-format
+msgid "drools-compiler-3.0.5.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:48
+#, no-c-format
+msgid "drools-core-3.0.5.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:53
+#, no-c-format
+msgid "commons-jci-core-1.0-406301.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:58
+#, no-c-format
+msgid "commons-jci-janino-2.4.3.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:63
+#, no-c-format
+msgid "commons-lang-2.1.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:68
+#, no-c-format
+msgid "janino-2.4.3.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:73
+#, no-c-format
+msgid "stringtemplate-2.3b6.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:78
+#, no-c-format
+msgid "antlr-2.7.6.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:83
+#, no-c-format
+msgid "antlr-3.0ea8.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:88
+#, no-c-format
+msgid ""
+"For web-based security, <literal>jboss-seam-ui.jar</literal> must also be "
+"included in the application's war file. Also, to make use of the security EL "
+"functions, <literal>SeamFaceletViewHandler</literal> must be used. Configure "
+"it in <literal>faces-config.xml</literal> like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:91
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;view-handler&gt;org.jboss.seam.ui.facelet.SeamFaceletViewHandler&lt;/"
+"view-handler&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:92
+#, no-c-format
+msgid "Authentication"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:93
+#, no-c-format
+msgid ""
+"The authentication features provided by Seam Security are built upon JAAS "
+"(Java Authentication and Authorization Service), and as such provide a "
+"robust and highly configurable API for handling user authentication. "
+"However, for less complex authentication requirements Seam offers a much "
+"more simplified method of authentication that hides the complexity of JAAS."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:96
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:97
+#, no-c-format
+msgid ""
+"The simplified authentication method uses a built-in JAAS login module, "
+"<literal>SeamLoginModule</literal>, which delegates authentication to one of "
+"your own Seam components. This login module is already configured inside "
+"Seam as part of a default application policy and as such does not require "
+"any additional configuration files. It allows you to write an authentication "
+"method using the entity classes that are provided by your own application. "
+"Configuring this simplified form of authentication requires the "
+"<literal>identity</literal> component to be configured in "
+"<literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:100
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:security=\"http://jboss.com/products/seam/security\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core http://jboss.com/"
+"products/seam/core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components http://jboss.com/"
+"products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/drools http://jboss.com/"
+"products/seam/drools-1.2.xsd\"\n"
+"                 http://jboss.com/products/seam/security http://jboss.com/"
+"products/seam/security-1.2.xsd\"&gt;                \n"
+"        \n"
+"    &lt;security:identity authenticate-method=\"#{authenticator.authenticate}"
+"\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:101
+#, no-c-format
+msgid ""
+"If you wish to use the advanced security features such as rule-based "
+"permission checks, all you need to do is include the Drools (JBoss Rules) "
+"jars in your classpath, and add some additional configuration, described "
+"later."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:104
+#, no-c-format
+msgid ""
+"The EL expression <literal>#{authenticator.authenticate}</literal> is a "
+"method binding indicating that the <literal>authenticate</literal> method of "
+"the <literal>authenticator</literal> component will be used to authenticate "
+"the user."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:107
+#, no-c-format
+msgid "Writing an authentication method"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:108
+#, no-c-format
+msgid ""
+"The <literal>authenticate-method</literal> property specified for "
+"<literal>identity</literal> in <literal>components.xml</literal> specifies "
+"which method will be used by <literal>SeamLoginModule</literal> to "
+"authenticate users. This method takes no parameters, and is expected to "
+"return a boolean indicating whether authentication is successful or not. The "
+"user's username and password can be obtained from <literal>Identity.instance"
+"().getUsername()</literal> and <literal>Identity.instance().getPassword()</"
+"literal>, respectively. Any roles that the user is a member of should be "
+"assigned using <literal>Identity.instance().addRole()</literal>. Here's a "
+"complete example of an authentication method inside a JavaBean component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:111
+#, no-c-format
+msgid ""
+"@Name(\"authenticator\")\n"
+"public class Authenticator {\n"
+"   @In EntityManager entityManager;\n"
+"   \n"
+"   public boolean authenticate() {\n"
+"      try\n"
+"      {\n"
+"         User user = (User) entityManager.createQuery(\n"
+"            \"from User where username = :username and password = :password"
+"\")\n"
+"            .setParameter(\"username\", Identity.instance().getUsername())\n"
+"            .setParameter(\"password\", Identity.instance().getPassword())\n"
+"            .getSingleResult();\n"
+"\n"
+"         if (user.getRoles() != null)\n"
+"         {\n"
+"            for (UserRole mr : user.getRoles())\n"
+"               Identity.instance().addRole(mr.getName());\n"
+"         }\n"
+"\n"
+"         return true;\n"
+"      }\n"
+"      catch (NoResultException ex)\n"
+"      {\n"
+"         FacesMessages.instance().add(\"Invalid username/password\");\n"
+"         return false;\n"
+"      }\n"
+"      \n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:112
+#, no-c-format
+msgid ""
+"In the above example, both <literal>User</literal> and <literal>UserRole</"
+"literal> are application-specific entity beans. The <literal>roles</literal> "
+"parameter is populated with the roles that the user is a member of, which "
+"should be added to the <literal>Set</literal> as literal string values, e.g. "
+"\"admin\", \"user\". In this case, if the user record is not found and a "
+"<literal>NoResultException</literal> thrown, the authentication method "
+"returns <literal>false</literal> to indicate the authentication failed."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:115
+#, no-c-format
+msgid "Writing a login form"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:116
+#, no-c-format
+msgid ""
+"The <literal>Identity</literal> component provides both <literal>username</"
+"literal> and <literal>password</literal> properties, catering for the most "
+"common authentication scenario. These properties can be bound directly to "
+"the username and password fields on a login form. Once these properties are "
+"set, calling the <literal>identity.login()</literal> method will "
+"authenticate the user using the provided credentials. Here's an example of a "
+"simple login form:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:119
+#, no-c-format
+msgid ""
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"name\" value=\"Username\"/&gt;\n"
+"    &lt;h:inputText id=\"name\" value=\"#{identity.username}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"password\" value=\"Password\"/&gt;\n"
+"    &lt;h:inputSecret id=\"password\" value=\"#{identity.password}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;div&gt;\n"
+"    &lt;h:commandButton value=\"Login\" action=\"#{identity.login}\"/&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:120
+#, no-c-format
+msgid ""
+"Similarly, logging out the user is done by calling <literal>#{identity."
+"logout}</literal>. Calling this action will clear the security state of the "
+"currently authenticated user."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:123
+#, no-c-format
+msgid "Simplified Configuration - Summary"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:124
+#, no-c-format
+msgid ""
+"So to sum up, there are the three easy steps to configure authentication:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:129
+#, no-c-format
+msgid ""
+"Configure an authentication method in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:134
+#, no-c-format
+msgid "Write an authentication method."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:139
+#, no-c-format
+msgid "Write a login form so that the user can authenticate."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:144
+#, no-c-format
+msgid "Handling Security Exceptions"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:145
+#, no-c-format
+msgid ""
+"To prevent users from receiving the default error page in response to a "
+"security error, it's recommended that <literal>pages.xml</literal> is "
+"configured to redirect security errors to a more \"pretty\" page. The two "
+"main types of exceptions thrown by the security API are:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:150
+#, no-c-format
+msgid ""
+"<literal>NotLoggedInException</literal> - This exception is thrown if the "
+"user attempts to access a restricted action or page when they are not logged "
+"in."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:155
+#, no-c-format
+msgid ""
+"<literal>AuthorizationException</literal> - This exception is only thrown if "
+"the user is already logged in, and they have attempted to access a "
+"restricted action or page for which they do not have the necessary "
+"privileges."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:160
+#, no-c-format
+msgid ""
+"In the case of a <literal>NotLoggedInException</literal>, it is recommended "
+"that the user is redirected to either a login or registration page so that "
+"they can log in. For an <literal>AuthorizationException</literal>, it may be "
+"useful to redirect the user to an error page. Here's an example of a "
+"<literal>pages.xml</literal> file that redirects both of these security "
+"exceptions:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:163
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"\n"
+"    ...\n"
+"    \n"
+"    &lt;exception class=\"org.jboss.seam.security.NotLoggedInException"
+"\"&gt;\n"
+"        &lt;redirect view-id=\"/login.xhtml\"&gt;\n"
+"            &lt;message&gt;You must be logged in to perform this action&lt;/"
+"message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"    \n"
+"    &lt;exception class=\"org.jboss.seam.security.AuthorizationException"
+"\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"        &lt;redirect view-id=\"/security_error.xhtml\"&gt;\n"
+"            &lt;message&gt;\n"
+"                You do not have the necessary security privileges to perform "
+"this action.\n"
+"            &lt;/message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"  \n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:164
+#, no-c-format
+msgid ""
+"Most web applications require even more sophisticated handling of login "
+"redirection, so Seam includes some special functionality for handling this "
+"problem."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:167
+#, no-c-format
+msgid "Login Redirection"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:168
+#, no-c-format
+msgid ""
+"You can ask Seam to redirect the user to a login screen when an "
+"unauthenticated user tries to access a particular view (or wildcarded view "
+"id) as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:171
+#, no-c-format
+msgid ""
+"&lt;pages login-view-id=\"/login.xhtml\"&gt;\n"
+"\n"
+"    &lt;page view-id=\"/members/*\" login-required=\"true\"/&gt;\n"
+"    \n"
+"    ...\n"
+"    \n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:172
+#, no-c-format
+msgid ""
+"(This is less of a blunt instrument than the exception handler shown above, "
+"but should probably be used in conjunction with it.)"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:175
+#, no-c-format
+msgid ""
+"After the user logs in, we want to automatically send them back where they "
+"came from, so they can retry the action that required logging in. If you add "
+"the following event listeners to <literal>components.xml</literal>, attempts "
+"to access a restricted view while not logged in will be remembered, so that "
+"upon the user successfully logging in they will be redirected to the "
+"originally requested view, with any page parameters that existed in the "
+"original request."
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:178
+#, no-c-format
+msgid ""
+"&lt;event type=\"org.jboss.seam.notLoggedIn\"&gt;\n"
+"    &lt;action expression=\"#{redirect.captureCurrentView}\"/&gt;\n"
+"&lt;/event&gt;\n"
+"    \n"
+"&lt;event type=\"org.jboss.seam.postAuthenticate\"&gt;\n"
+"    &lt;action expression=\"#{redirect.returnToCapturedView}\"/&gt;\n"
+"&lt;/event&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:179
+#, no-c-format
+msgid ""
+"Note that login redirection is implemented as a conversation-scoped "
+"mechanism, so don't end the conversation in your <literal>authenticate()</"
+"literal> method."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:182
+#, no-c-format
+msgid "Advanced Authentication Features"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:183
+#, no-c-format
+msgid ""
+"This section explores some of the advanced features provided by the security "
+"API for addressing more complex security requirements."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:186
+#, no-c-format
+msgid "Using your container's JAAS configuration"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:187
+#, no-c-format
+msgid ""
+"If you would rather not use the simplified JAAS configuration provided by "
+"the Seam Security API, you may instead delegate to the default system JAAS "
+"configuration by providing a <literal>jaasConfigName</literal> property in "
+"<literal>components.xml</literal>. For example, if you are using JBoss AS "
+"and wish to use the <literal>other</literal> policy (which uses the "
+"<literal>UsersRolesLoginModule</literal> login module provided by JBoss AS), "
+"then the entry in <literal>components.xml</literal> would look like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:190
+#, no-c-format
+msgid ""
+"&lt;security:identity authenticate-method=\"#{authenticator.authenticate}"
+"\" \n"
+"                      jaas-config-name=\"other\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:191
+#, no-c-format
+msgid "Authorization"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:192
+#, no-c-format
+msgid ""
+"There are a number of authorization features provided by the Seam Security "
+"API for securing access to components, component methods, and pages. This "
+"section describes each of these. An important thing to note is that if you "
+"wish to use any of the advanced features (such as rule-based permissions) "
+"then your <literal>components.xml</literal> must be configured to support "
+"this - see the Configuration section above."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:195
+#, no-c-format
+msgid "Core concepts"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:196
+#, no-c-format
+msgid ""
+"Each of the authorization mechanisms provided by the Seam Security API are "
+"built upon the concept of a user being granted roles and/or permissions. A "
+"role is a <emphasis>group</emphasis>, or <emphasis>type</emphasis>, of user "
+"that may have been granted certain privileges for performing one or more "
+"specific actions within an application. A permission on the other hand is a "
+"privilege (sometimes once-off) for performing a single, specific action. It "
+"is entirely possible to build an application using nothing but permissions, "
+"however roles offer a higher level of convenience when granting privileges "
+"to groups of users."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:199
+#, no-c-format
+msgid ""
+"Roles are simple, consisting of only a name such as \"admin\", \"user\", "
+"\"customer\", etc. Permissions consist of both a name and an action, and are "
+"represented within this documentation in the form <literal>name:action</"
+"literal>, for example <literal>customer:delete</literal>, or "
+"<literal>customer:insert</literal>."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:202
+#, no-c-format
+msgid "Securing components"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:203
+#, no-c-format
+msgid ""
+"Let's start by examining the simplest form of authorization, component "
+"security, starting with the <literal>@Restrict</literal> annotation."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:206
+#, no-c-format
+msgid "The @Restrict annotation"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:207
+#, no-c-format
+msgid ""
+"Seam components may be secured either at the method or the class level, "
+"using the <literal>@Restrict</literal> annotation. If both a method and it's "
+"declaring class are annotated with <literal>@Restrict</literal>, the method "
+"restriction will take precedence (and the class restriction will not apply). "
+"If a method invocation fails a security check, then an exception will be "
+"thrown as per the contract for <literal>Identity.checkRestriction()</"
+"literal> (see Inline Restrictions). A <literal>@Restrict</literal> on just "
+"the component class itself is equivalent to adding <literal>@Restrict</"
+"literal> to each of its methods."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:210
+#, no-c-format
+msgid ""
+"An empty <literal>@Restrict</literal> implies a permission check of "
+"<literal>componentName:methodName</literal>. Take for example the following "
+"component method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:213
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class AccountAction {\n"
+"    @Restrict public void delete() {\n"
+"      ...\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:214
+#, no-c-format
+msgid ""
+"In this example, the implied permission required to call the <literal>delete"
+"()</literal> method is <literal>account:delete</literal>. The equivalent of "
+"this would be to write <literal>@Restrict(\"#{s:hasPermission"
+"('account','delete',null)}\")</literal>. Now let's look at another example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:217
+#, no-c-format
+msgid ""
+"@Restrict @Name(\"account\")\n"
+"public class AccountAction {\n"
+"    public void insert() {\n"
+"      ...\n"
+"    }\n"
+"    @Restrict(\"#{s:hasRole('admin')}\") \n"
+"    public void delete() {\n"
+"      ...\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:218
+#, no-c-format
+msgid ""
+"This time, the component class itself is annotated with <literal>@Restrict</"
+"literal>. This means that any methods without an overriding "
+"<literal>@Restrict</literal> annotation require an implicit permission "
+"check. In the case of this example, the <literal>insert()</literal> method "
+"requires a permission of <literal>account:insert</literal>, while the "
+"<literal>delete()</literal> method requires that the user is a member of the "
+"<literal>admin</literal> role."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:221
+#, no-c-format
+msgid ""
+"Before we go any further, let's address the <literal>#{s:hasRole()}</"
+"literal> expression seen in the above example. Both <literal>s:hasRole</"
+"literal> and <literal>s:hasPermission</literal> are EL functions, which "
+"delegate to the correspondingly named methods of the <literal>Identity</"
+"literal> class. These functions can be used within any EL expression "
+"throughout the entirety of the security API."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:224
+#, no-c-format
+msgid ""
+"Being an EL expression, the value of the <literal>@Restrict</literal> "
+"annotation may reference any objects that exist within a Seam context. This "
+"is extremely useful when performing permission checks for a specific object "
+"instance. Look at this example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:227
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class AccountAction {\n"
+"    @In Account selectedAccount;\n"
+"    @Restrict(\"#{s:hasPermission('account','modify',selectedAccount)}\")\n"
+"    public void modify() {\n"
+"        selectedAccount.modify();\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:228
+#, no-c-format
+msgid ""
+"The interesting thing to note from this example is the reference to "
+"<literal>selectedAccount</literal> seen within the <literal>hasPermission()</"
+"literal> function call. The value of this variable will be looked up from "
+"within the Seam context, and passed to the <literal>hasPermission()</"
+"literal> method in <literal>Identity</literal>, which in this case can then "
+"determine if the user has the required permission for modifying the "
+"specified <literal>Account</literal> object."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:231
+#, no-c-format
+msgid "Inline restrictions"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:232
+#, no-c-format
+msgid ""
+"Sometimes it might be desirable to perform a security check in code, without "
+"using the <literal>@Restrict</literal> annotation. In this situation, simply "
+"use <literal>Identity.checkRestriction()</literal> to evaluate a security "
+"expression, like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:235
+#, no-c-format
+msgid ""
+"public void deleteCustomer() {\n"
+"    Identity.instance().checkRestriction(\"#{s:hasPermission"
+"('customer','delete',\n"
+"        selectedCustomer)}\");\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:236
+#, no-c-format
+msgid ""
+"If the expression specified doesn't evaluate to <literal>true</literal>, "
+"either"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:241
+#, no-c-format
+msgid ""
+"if the user is not logged in, a <literal>NotLoggedInException</literal> "
+"exception is thrown or"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:246
+#, no-c-format
+msgid ""
+"if the user is logged in, an <literal>AuthorizationException</literal> "
+"exception is thrown."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:251
+#, no-c-format
+msgid ""
+"It is also possible to call the <literal>hasRole()</literal> and "
+"<literal>hasPermission()</literal> methods directly from Java code:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:254
+#, no-c-format
+msgid ""
+"if (!Identity.instance().hasRole(\"admin\"))\n"
+"     throw new AuthorizationException(\"Must be admin to perform this action"
+"\");\n"
+"\n"
+"if (!Identity.instance().hasPermission(\"customer\", \"create\", null))\n"
+"     throw new AuthorizationException(\"You may not create new customers\");"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:255
+#, no-c-format
+msgid "Security in the user interface"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:256
+#, no-c-format
+msgid ""
+"One indication of a well designed user interface is that the user is not "
+"presented with options for which they don't have the necessary privileges to "
+"use. Seam Security allows conditional rendering of either 1) sections of a "
+"page or 2) individual controls, based upon the privileges of the user, using "
+"the very same EL expressions that are used for component security."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:259
+#, no-c-format
+msgid ""
+"Let's take a look at some examples of interface security. First of all, "
+"let's pretend that we have a login form that should only be rendered if the "
+"user is not already logged in. Using the <literal>identity.isLoggedIn()</"
+"literal> property, we can write this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:262
+#, no-c-format
+msgid ""
+"&lt;h:form class=\"loginForm\" rendered=\"#{not identity.loggedIn}\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:263
+#, no-c-format
+msgid ""
+"If the user isn't logged in, then the login form will be rendered - very "
+"straight forward so far. Now let's pretend there is a menu on the page that "
+"contains some actions which should only be accessible to users in the "
+"<literal>manager</literal> role. Here's one way that these could be written:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:266
+#, no-c-format
+msgid ""
+"&lt;h:outputLink action=\"#{reports.listManagerReports}\" rendered=\"#{s:"
+"hasRole('manager')}\"&gt;\n"
+"    Manager Reports\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:267
+#, no-c-format
+msgid ""
+"This is also quite straight forward. If the user is not a member of the "
+"<literal>manager</literal> role, then the outputLink will not be rendered. "
+"The <literal>rendered</literal> attribute can generally be used on the "
+"control itself, or on a surrounding <literal>&lt;s:div&gt;</literal> or "
+"<literal>&lt;s:span&gt;</literal> control."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:270
+#, no-c-format
+msgid ""
+"Now for something more complex. Let's say you have a <literal>h:dataTable</"
+"literal> control on a page listing records for which you may or may not wish "
+"to render action links depending on the user's privileges. The <literal>s:"
+"hasPermission</literal> EL function allows us to pass in an object parameter "
+"which can be used to determine whether the user has the requested permission "
+"for that object or not. Here's how a dataTable with secured links might look:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:273
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{clients}\" var=\"cl\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Name&lt;/f:facet&gt;\n"
+"        #{cl.name}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;City&lt;/f:facet&gt;\n"
+"        #{cl.city}\n"
+"    &lt;/h:column&gt;   \n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"        &lt;s:link value=\"Modify Client\" action=\"#{clientAction.modify}"
+"\"\n"
+"                rendered=\"#{s:hasPermission('client','modify',cl)\"/&gt;\n"
+"        &lt;s:link value=\"Delete Client\" action=\"#{clientAction.delete}"
+"\"\n"
+"                rendered=\"#{s:hasPermission('client','delete',cl)\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:274
+#, no-c-format
+msgid "Securing pages"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:275
+#, no-c-format
+msgid ""
+"Page security requires that the application is using a <literal>pages.xml</"
+"literal> file, however is extremely simple to configure. Simply include a "
+"<literal>&lt;restrict/&gt;</literal> element within the <literal>page</"
+"literal> elements that you wish to secure. By default, if a value is not "
+"provided for the <literal>restrict</literal> element, an implied permission "
+"of <literal>{viewId}:render</literal> will be checked for whenever accessing "
+"that page. Otherwise the value will be evaluated as a standard security "
+"expression. Here's a couple of examples:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:278
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/settings.xhtml\"&gt;\n"
+"    &lt;restrict/&gt;\n"
+"&lt;/page&gt;\n"
+"        \n"
+"&lt;page view-id=\"/reports.xhtml\"&gt;    \n"
+"    &lt;restrict&gt;#{s:hasRole('admin')}&lt;/restrict&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:279
+#, no-c-format
+msgid ""
+"In the above example, the first page has an implied permission restriction "
+"of <literal>/settings.xhtml:render</literal>, while the second one checks "
+"that the user is a member of the <literal>admin</literal> role."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:282
+#, no-c-format
+msgid "Securing Entities"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:283
+#, no-c-format
+msgid ""
+"Seam security also makes it possible to apply security restrictions to read, "
+"insert, update and delete actions for entities."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:286
+#, no-c-format
+msgid ""
+"To secure all actions for an entity class, add a <literal>@Restrict</"
+"literal> annotation on the class itself:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:289
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"customer\")\n"
+"@Restrict\n"
+"public class Customer {\n"
+"  ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:290
+#, no-c-format
+msgid ""
+"If no expression is specified in the <literal>@Restrict</literal> "
+"annotation, the default security check that is performed is a permission "
+"check of <literal>entityName:action</literal>, where <literal>entityName</"
+"literal> is the name of the entity (or the class name if no @Name is "
+"specified), and the <literal>action</literal> is either <literal>read</"
+"literal>, <literal>insert</literal>, <literal>update</literal> or "
+"<literal>delete</literal>."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:293
+#, no-c-format
+msgid ""
+"It is also possible to only restrict certain actions, by placing a "
+"<literal>@Restrict</literal> annotation on the relevent entity lifecycle "
+"method (annotated as follows):"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:298
+#, no-c-format
+msgid ""
+"<literal>@PostLoad</literal> - Called after an entity instance is loaded "
+"from the database. Use this method to configure a <literal>read</literal> "
+"permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:303
+#, no-c-format
+msgid ""
+"<literal>@PrePersist</literal> - Called before a new instance of the entity "
+"is inserted. Use this method to configure an <literal>insert</literal> "
+"permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:308
+#, no-c-format
+msgid ""
+"<literal>@PreUpdate</literal> - Called before an entity is updated. Use this "
+"method to configure an <literal>update</literal> permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:313
+#, no-c-format
+msgid ""
+"<literal>@PreRemove</literal> - Called before an entity is deleted. Use this "
+"method to configure a <literal>delete</literal> permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:318
+#, no-c-format
+msgid ""
+"Here's an example of how an entity would be configured to perform a security "
+"check for any <literal>insert</literal> operations. Please note that the "
+"method is not required to do anything, the only important thing in regard to "
+"security is how it is annotated:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:321
+#, no-c-format
+msgid ""
+"@PrePersist @Restrict\n"
+"  public void prePersist() {}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:322
+#, no-c-format
+msgid ""
+"And here's an example of an entity permission rule that checks if the "
+"authenticated user is allowed to create a new blog entry (from the seamspace "
+"example):"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:325
+#, no-c-format
+msgid ""
+"rule InsertMemberBlog\n"
+"  no-loop\n"
+"  activation-group \"permissions\"\n"
+"when\n"
+"  c: PermissionCheck(name == \"memberBlog\", action == \"insert\", granted "
+"== false)\n"
+"  Principal(nm : name)\n"
+"  MemberBlog(mbr : member -&gt; (mbr.getUsername().equals(nm)))\n"
+"then\n"
+"  c.grant();\n"
+"  modify(c);\n"
+"end;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:326
+#, no-c-format
+msgid ""
+"Finally, we need to install a listener class that integrates Seam security "
+"with your JPA provider."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:329
+#, no-c-format
+msgid "Entity security with JPA"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:330
+#, no-c-format
+msgid ""
+"Security checks for EJB3 entity beans are performed with an "
+"<literal>EntityListener</literal>. You can install this listener by using "
+"the following <literal>META-INF/orm.xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:333
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;entity-mappings xmlns=\"http://java.sun.com/xml/ns/persistence/orm\"\n"
+"                 xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"                 xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence/"
+"orm \n"
+"                 http://java.sun.com/xml/ns/persistence/orm_1_0.xsd\"\n"
+"                 version=\"1.0\"&gt;\n"
+"                 \n"
+"    &lt;persistence-unit-metadata&gt;\n"
+"        &lt;persistence-unit-defaults&gt;\n"
+"            &lt;entity-listeners&gt;\n"
+"                &lt;entity-listener class=\"org.jboss.seam.security."
+"EntitySecurityListener\"/&gt;\n"
+"            &lt;/entity-listeners&gt;\n"
+"        &lt;/persistence-unit-defaults&gt;\n"
+"    &lt;/persistence-unit-metadata&gt;\n"
+"    \n"
+"&lt;/entity-mappings&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:334
+#, no-c-format
+msgid "Entity security with Hibernate"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:335
+#, no-c-format
+msgid ""
+"If you are using a Hibernate <literal>SessionFactory</literal> configured "
+"via Seam, you don't need to do anything special to use entity security."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:338
+#, no-c-format
+msgid "Writing Security Rules"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:339
+#, no-c-format
+msgid ""
+"Up to this point there has been a lot of mention of permissions, but no "
+"information about how permissions are actually defined or granted. This "
+"section completes the picture, by explaining how permission checks are "
+"processed, and how to implement permission checks for a Seam application."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:342
+#, no-c-format
+msgid "Permissions Overview"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:343
+#, no-c-format
+msgid ""
+"So how does the security API know whether a user has the <literal>customer:"
+"modify</literal> permission for a specific customer? Seam Security provides "
+"quite a novel method for determining user permissions, based on JBoss Rules. "
+"A couple of the advantages of using a rule engine are 1) a centralized "
+"location for the business logic that is behind each user permission, and 2) "
+"speed - JBoss Rules uses very efficient algorithms for evaluating large "
+"numbers of complex rules involving multiple conditions."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:346
+#, no-c-format
+msgid "Configuring a rules file"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:347
+#, no-c-format
+msgid ""
+"Seam Security expects to find a <literal>RuleBase</literal> component called "
+"<literal>securityRules</literal> which it uses to evaluate permission "
+"checks. This is configured in <literal>components.xml</literal> as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:350
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:security=\"http://jboss.com/products/seam/security\"\n"
+"            xmlns:drools=\"http://jboss.com/products/seam/drools\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                     http://jboss.com/products/seam/core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components  \n"
+"                     http://jboss.com/products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/drools \n"
+"                     http://jboss.com/products/seam/drools-1.2.xsd\"\n"
+"                 http://jboss.com/products/seam/security \n"
+"                     http://jboss.com/products/seam/security-1.2.xsd"
+"\"&gt;                 \n"
+"        \n"
+"   &lt;drools:rule-base name=\"securityRules\"&gt;\n"
+"       &lt;drools:rule-files&gt;\n"
+"           &lt;value&gt;/META-INF/security.drl&lt;/value&gt;\n"
+"       &lt;/drools:rule-files&gt;\n"
+"   &lt;/drools:rule-base&gt;    \n"
+"   \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:351
+#, no-c-format
+msgid ""
+"Once the <literal>RuleBase</literal> component is configured, it's time to "
+"write the security rules."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:354
+#, no-c-format
+msgid "Creating a security rules file"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:355
+#, no-c-format
+msgid ""
+"For this step you need to create a file called <literal>security.drl</"
+"literal> in the <literal>/META-INF</literal> directory of your application's "
+"jar file. In actual fact this file can be called anything you want, and "
+"exist in any location as long as it is configured appropriately in "
+"<literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:358
+#, no-c-format
+msgid ""
+"So what should the security rules file contain? At this stage it might be a "
+"good idea to at least skim through the JBoss Rules documentation, however to "
+"get started here's an extremely simple example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:361
+#, no-c-format
+msgid ""
+"package MyApplicationPermissions;\n"
+"\n"
+"import org.jboss.seam.security.PermissionCheck;\n"
+"import org.jboss.seam.security.Role;\n"
+"\n"
+"rule CanUserDeleteCustomers\n"
+"when\n"
+"  c: PermissionCheck(name == \"customer\", action == \"delete\")\n"
+"  Role(name == \"admin\")\n"
+"then\n"
+"  c.grant();\n"
+"end;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:362
+#, no-c-format
+msgid ""
+"Let's break this down. The first thing we see is the package declaration. A "
+"package in JBoss Rules is essentially a collection of rules. The package "
+"name can be anything you want - it doesn't relate to anything else outside "
+"the scope of the rule base."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:365
+#, no-c-format
+msgid ""
+"The next thing we can notice is a couple of import statements for the "
+"<literal>PermissionCheck</literal> and <literal>Role</literal> classes. "
+"These imports inform the rules engine that we'll be referencing these "
+"classes within our rules."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:368
+#, no-c-format
+msgid ""
+"Finally we have the code for the rule. Each rule within a package should be "
+"given a unique name (usually describing the purpose of the rule). In this "
+"case our rule is called <literal>CanUserDeleteCustomers</literal> and will "
+"be used to check whether a user is allowed to delete a customer record."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:371
+#, no-c-format
+msgid ""
+"Looking at the body of the rule definition we can notice two distinct "
+"sections. Rules have what is known as a left hand side (LHS) and a right "
+"hand side (RHS). The LHS consists of the conditional part of the rule, i.e. "
+"a list of conditions which must be satisfied for the rule to fire. The LHS "
+"is represented by the <literal>when</literal> section. The RHS is the "
+"consequence, or action section of the rule that will only be fired if all of "
+"the conditions in the LHS are met. The RHS is represented by the "
+"<literal>then</literal> section. The end of the rule is denoted by the "
+"<literal>end;</literal> line."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:374
+#, no-c-format
+msgid ""
+"If we look at the LHS of the rule, we see two conditions listed there. Let's "
+"examine the first condition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:377
+#, no-c-format
+msgid "c: PermissionCheck(name == \"customer\", action == \"delete\")"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:378
+#, no-c-format
+msgid ""
+"In plain english, this condition is stating that there must exist a "
+"<literal>PermissionCheck</literal> object with a <literal>name</literal> "
+"property equal to \"customer\", and an <literal>action</literal> property "
+"equal to \"delete\" within the working memory. What is the working memory? "
+"It is a session-scoped object that contains the contextual information that "
+"is required by the rules engine to make a decision about a permission check. "
+"Each time the <literal>hasPermission()</literal> method is called, a "
+"temporary <literal>PermissionCheck</literal> object, or <emphasis>Fact</"
+"emphasis>, is asserted into the working memory. This "
+"<literal>PermissionCheck</literal> corresponds exactly to the permission "
+"that is being checked, so for example if you call <literal>hasPermission"
+"(\"account\", \"create\", null)</literal> then a <literal>PermissionCheck</"
+"literal> object with a <literal>name</literal> equal to \"account\" and "
+"<literal>action</literal> equal to \"create\" will be asserted into the "
+"working memory for the duration of the permission check."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:381
+#, no-c-format
+msgid ""
+"So what else is in the working memory? Besides the short-lived temporary "
+"facts asserted during a permission check, there are some longer-lived "
+"objects in the working memory that stay there for the entire duration of a "
+"user being authenticated. These include any <literal>java.security."
+"Principal</literal> objects that are created as part of the authentication "
+"process, plus a <literal>org.jboss.seam.security.Role</literal> object for "
+"each of the roles that the user is a member of. It is also possible to "
+"assert additional long-lived facts into the working memory by calling "
+"<literal>Identity.instance().getSecurityContext().assertObject()</literal>, "
+"passing the object as a parameter."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:384
+#, no-c-format
+msgid ""
+"Getting back to our simple example, we can also notice that the first line "
+"of our LHS is prefixed with <literal>c:</literal>. This is a variable "
+"binding, and is used to refer back to the object that is matched by the "
+"condition. Moving onto the second line of our LHS, we see this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:387
+#, no-c-format
+msgid "Role(name == \"admin\")"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:388
+#, no-c-format
+msgid ""
+"This condition simply states that there must be a <literal>Role</literal> "
+"object with a <literal>name</literal> of \"admin\" within the working "
+"memory. As mentioned, user roles are asserted into the working memory as "
+"long-lived facts. So, putting both conditions together, this rule is "
+"essentially saying \"I will fire if you are checking for the "
+"<literal>customer:delete</literal> permission and the user is a member of "
+"the <literal>admin</literal> role\"."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:391
+#, no-c-format
+msgid ""
+"So what is the consequence of the rule firing? Let's take a look at the RHS "
+"of the rule:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:394
+#, no-c-format
+msgid "c.grant()"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:395
+#, no-c-format
+msgid ""
+"The RHS consists of Java code, and in this case is invoking the "
+"<literal>grant()</literal> method of the <literal>c</literal> object, which "
+"as already mentioned is a variable binding for the <literal>PermissionCheck</"
+"literal> object. Besides the <literal>name</literal> and <literal>action</"
+"literal> properties of the <literal>PermissionCheck</literal> object, there "
+"is also a <literal>granted</literal> property which is initially set to "
+"<literal>false</literal>. Calling <literal>grant()</literal> on a "
+"<literal>PermissionCheck</literal> sets the <literal>granted</literal> "
+"property to <literal>true</literal>, which means that the permission check "
+"was successful, allowing the user to carry out whatever action the "
+"permission check was intended for."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:398
+#, no-c-format
+msgid "SSL Security"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:399
+#, no-c-format
+msgid ""
+"Seam includes basic support for serving sensitive pages via the HTTPS "
+"protocol. This is easily configured by specifying a <literal>scheme</"
+"literal> for the page in <literal>pages.xml</literal>. The following example "
+"shows how the view <literal>/login.xhtml</literal> is configured to use "
+"HTTPS:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:402
+#, no-c-format
+msgid "&lt;page view-id=\"/login.xhtml\" scheme=\"https\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:403
+#, no-c-format
+msgid ""
+"This configuration is automatically extended to both <literal>s:link</"
+"literal> and <literal>s:button</literal> JSF controls, which (when "
+"specifying the <literal>view</literal>) will also render the link using the "
+"correct protocol. Based on the previous example, the following link will use "
+"the HTTPS protocol because <literal>/login.xhtml</literal> is configured to "
+"use it:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:406
+#, no-c-format
+msgid "&lt;s:link view=\"/login.xhtml\" value=\"Login\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:407
+#, no-c-format
+msgid ""
+"Browsing directly to a view when using the <emphasis>incorrect</emphasis> "
+"protocol will cause a redirect to the same view using the <emphasis>correct</"
+"emphasis> protocol. For example, browsing to a page that has <literal>scheme="
+"\"https\"</literal> using HTTP will cause a redirect to the same page using "
+"HTTPS."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:410
+#, no-c-format
+msgid ""
+"It is also possible to configure a default <literal>scheme</literal> for all "
+"pages. This is actually quite important, as you might only wish to use HTTPS "
+"for a few pages, and if no default scheme is specified then the default "
+"behavior is to continue using the current scheme. What this means is that "
+"once you enter a page with HTTPS, then HTTPS will continue to be used even "
+"if you navigate away to other non-HTTPS pages (a bad thing!). So it is "
+"strongly recommended to include a default <literal>scheme</literal>, by "
+"configuring it on the default (<literal>\"*\"</literal>) view:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:413
+#, no-c-format
+msgid "&lt;page view-id=\"*\" scheme=\"http\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:414
+#, no-c-format
+msgid ""
+"Of course, if <emphasis>none</emphasis> of the pages in your application use "
+"HTTPS then it is not required to specify a default scheme."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:417
+#, no-c-format
+msgid "Implementing a Captcha Test"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:418
+#, no-c-format
+msgid ""
+"Though strictly not part of the security API, it might be useful in certain "
+"circumstances (such as new user registrations, posting to a public blog or "
+"forum) to implement a Captcha (<emphasis>C</emphasis>ompletely <emphasis>A</"
+"emphasis>utomated <emphasis>P</emphasis>ublic <emphasis>T</emphasis>uring "
+"test to tell <emphasis>C</emphasis>omputers and <emphasis>H</emphasis>umans "
+"<emphasis>A</emphasis>part) to prevent automated bots from interacting with "
+"your application. Seam provides seamless integration with JCaptcha, an "
+"excellent library for generating Captcha challenges. If you wish to use the "
+"captcha feature in your application you need to include the jcaptcha-* jar "
+"file from the Seam lib directory in your project, and register it in "
+"<literal>application.xml</literal> as a java module."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:421
+#, no-c-format
+msgid "Configuring the Captcha Servlet"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:422
+#, no-c-format
+msgid ""
+"To get up and running, it is necessary to configure the Seam Resource "
+"Servlet, which will provide the Captcha challenge images to your pages. This "
+"requires the following entry in <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:425
+#, no-c-format
+msgid ""
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"    \n"
+"&lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:426
+#, no-c-format
+msgid "Adding a Captcha to a page"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:427
+#, no-c-format
+msgid ""
+"Adding a captcha challenge to a page is extremely easy. Seam provides a page-"
+"scoped component, <literal>captcha</literal>, which provides everything that "
+"is required, including built-in captcha validation. Here's an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:430
+#, no-c-format
+msgid ""
+"&lt;div&gt;\n"
+"    &lt;h:graphicImage value=\"/seam/resource/captcha?#{captcha.id}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"  \n"
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"verifyCaptcha\"&gt;Enter the above letters&lt;/h:"
+"outputLabel&gt;\n"
+"    &lt;h:inputText id=\"verifyCaptcha\" value=\"#{captcha.response}\" "
+"required=\"true\"/&gt;\n"
+"    &lt;div class=\"validationError\"&gt;&lt;h:message for=\"verifyCaptcha\"/"
+"&gt;&lt;/div&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:431
+#, no-c-format
+msgid ""
+"That's all there is to it. The <literal>graphicImage</literal> control "
+"displays the Captcha challenge, and the <literal>inputText</literal> "
+"receives the user's response. The response is automatically validated "
+"against the Captcha when the form is submitted."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Spring.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Spring.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Spring.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,416 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Spring.xml:10
+#, no-c-format
+msgid "Spring Framework integration"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:11
+#, no-c-format
+msgid ""
+"The Spring integration module allows easy migration of Spring-based projects "
+"to Seam and allows Spring applications to take advantage of key Seam "
+"features like conversations and Seam's more sophisticated persistence "
+"context management."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:14
+#, no-c-format
+msgid "Seam's support for Spring provides the ability to:"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:19
+#, no-c-format
+msgid "inject Seam component instances into Spring beans"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:24
+#, no-c-format
+msgid "inject Spring beans into Seam components"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:29
+#, no-c-format
+msgid "turn Spring beans into Seam components"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:34
+#, no-c-format
+msgid "allow Spring beans to live in any Seam context"
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:40
+#, no-c-format
+msgid "Injecting Seam components into Spring beans"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:41
+#, no-c-format
+msgid ""
+"Injecting Seam component instances into Spring beans is accomplished using "
+"the <literal>&lt;seam:instance/&gt;</literal> namespace handler. To enable "
+"the Seam namespace handler, the Seam namespace must be added to the Spring "
+"beans definition file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:44
+#, no-c-format
+msgid ""
+"&lt;beans xmlns=\"http://www.springframework.org/schema/beans\"\n"
+"    xmlns:seam=\"http://jboss.com/products/seam/spring\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://www.springframework.org/schema/beans \n"
+"                        http://www.springframework.org/schema/beans/spring-"
+"beans-2.0.xsd\n"
+"                        http://jboss.com/products/seam/spring \n"
+"                        http://jboss.com/products/seam/spring-1.2.xsd\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:45
+#, no-c-format
+msgid "Now any Seam component may be injected into any Spring bean:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:48
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\"&gt;\n"
+"        &lt;seam:instance name=\"someComponent\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:49
+#, no-c-format
+msgid "An EL expression may be used instead of a component name:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:52
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\"&gt;\n"
+"        &lt;seam:instance name=\"#{someExpression}\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:53
+#, no-c-format
+msgid ""
+"Seam component instances may even be made available for injection into "
+"Spring beans by a Spring bean id."
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:56
+#, no-c-format
+msgid ""
+"&lt;seam:instance name=\"someComponent\" id=\"someSeamComponentInstance\"/"
+"&gt;\n"
+"\n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\" ref=\"someSeamComponentInstance"
+"\"&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:57
+#, no-c-format
+msgid "Now for the caveat!"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:60
+#, no-c-format
+msgid ""
+"Seam was designed from the ground up to support a stateful component model "
+"with multiple contexts. Spring was not. Unlike Seam bijection, Spring "
+"injection does not occur at method invocation time. Instead, injection "
+"happens only when the Spring bean is instantiated. So the instance available "
+"when the bean is instantiated will be the same instance that the bean uses "
+"for the entire life of the bean. For example, if a Seam "
+"<literal>CONVERSATION</literal>-scoped component instance is directly "
+"injected into a singleton Spring bean, that singleton will hold a reference "
+"to the same instance long after the conversation is over! We call this "
+"problem <emphasis>scope impedance</emphasis>. Seam bijection ensures that "
+"scope impedance is maintained naturally as an invocation flows through the "
+"system. In Spring, we need to inject a proxy of the Seam component, and "
+"resolve the reference when the proxy is invoked."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:63
+#, no-c-format
+msgid ""
+"The <literal>&lt;seam:instance/&gt;</literal> tag lets us automatically "
+"proxy the Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:66
+#, no-c-format
+msgid ""
+"&lt;seam:instance id=\"seamManagedEM\" name=\"someManagedEMComponent\" proxy="
+"\"true\"/&gt;\n"
+"        \n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\"&gt;\n"
+"    &lt;property name=\"entityManager\" ref=\"seamManagedEM\"&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:67
+#, no-c-format
+msgid ""
+"This example shows one way to use a Seam-managed persistence context from a "
+"Spring bean. (A more robust way to use Seam-managed persistence contexts as "
+"a replacement for the Spring <literal>OpenEntityManagerInView</literal> "
+"filter will be provided in a future release)"
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:73
+#, no-c-format
+msgid "Injecting Spring beans into Seam components"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:74
+#, no-c-format
+msgid ""
+"It is even easier to inject Spring beans into Seam component instances. "
+"Actually, there are two possible approaches:"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:79
+#, no-c-format
+msgid "inject a Spring bean using an EL expression"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:84
+#, no-c-format
+msgid "make the Spring bean a Seam component"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:89
+#, no-c-format
+msgid ""
+"We'll discuss the second option in the next section. The easiest approach is "
+"to access the Spring beans via EL."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:92
+#, no-c-format
+msgid ""
+"The Spring <literal>DelegatingVariableResolver</literal> is an integration "
+"point Spring provides for integrating Spring with JSF. This "
+"<literal>VariableResolver</literal> makes all Spring beans available in EL "
+"by their bean id. You'll need to add the "
+"<literal>DelegatingVariableResolver</literal> to <literal>faces-config.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:95
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;variable-resolver&gt;\n"
+"        org.springframework.web.jsf.DelegatingVariableResolver\n"
+"    &lt;/variable-resolver&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:96
+#, no-c-format
+msgid "Then you can inject Spring beans using <literal>@In</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:99
+#, no-c-format
+msgid ""
+"@In(\"#{bookingService}\")\n"
+"private BookingService bookingService;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:100
+#, no-c-format
+msgid ""
+"The use of Spring beans in EL is not limited to injection. Spring beans may "
+"be used anywhere that EL expressions are used in Seam: process and pageflow "
+"definitions, working memory assertions, etc..."
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:106
+#, no-c-format
+msgid "Making a Spring bean into a Seam component"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:107
+#, no-c-format
+msgid ""
+"The <literal>&lt;seam:component/&gt;</literal> namespace handler can be used "
+"to make any Spring bean a Seam component. Just place the <literal>&lt;seam:"
+"component/&gt;</literal> tag within the declaration of the bean that you "
+"wish to be a Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:110
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;seam:component/&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:111
+#, no-c-format
+msgid ""
+"By default, <literal>&lt;seam:component/&gt;</literal> will create a "
+"<literal>STATELESS</literal> Seam component with class and name provided in "
+"the bean definition. Occasionally, such as when a <literal>FactoryBean</"
+"literal> is used, the class of the Spring bean may not be the class "
+"appearing in the bean definition. In such cases the <literal>beanClass</"
+"literal> should be explicitly specified. A Seam component name may be "
+"explicitly specified in cases where there is potential for a naming conflict."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:114
+#, no-c-format
+msgid ""
+"The <literal>scope</literal> attribute of <literal>&lt;seam:component/&gt;</"
+"literal> may be used if you wish the Spring bean to be managed in a "
+"particular Seam scope. The Spring bean must be scoped to <literal>prototype</"
+"literal> if the Seam scope specified is anything other than "
+"<literal>STATELESS</literal>. Pre-existing Spring beans usually have a "
+"fundamentally stateless character, so this attribute is not usually needed."
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:120
+#, no-c-format
+msgid "Seam-scoped Spring beans"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:121
+#, no-c-format
+msgid ""
+"The Seam integration package also lets you use Seam's contexts as Spring 2.0 "
+"style custom scopes. This lets you declare any Spring bean in any of Seam's "
+"contexts. However, note once again that Spring's component model was never "
+"architected to support statefulness, so please use this feature with great "
+"care. In particular, clustering of session or conversation scoped Spring "
+"beans is deeply problematic, and care must be taken when injecting a bean or "
+"component from a wider scope into a bean of a narrower scope."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:124
+#, no-c-format
+msgid ""
+"By specifying <literal>&lt;seam:configure-scopes/&gt;</literal> once in a "
+"Spring bean factory configuration, all of the Seam scopes will be available "
+"to Spring beans as custom scopes. To associate a Spring bean with a "
+"particular Seam scope, specify the Seam scope in the <literal>scope</"
+"literal> attribute of the bean definition."
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:127
+#, no-c-format
+msgid ""
+"&lt;!-- Only needs to be specified once per bean factory--&gt;\n"
+"&lt;seam:configure-scopes/&gt;\n"
+"\n"
+"...\n"
+"\n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope=\"seam."
+"CONVERSATION\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:128
+#, no-c-format
+msgid ""
+"The prefix of the scope name may be changed by specifying the "
+"<literal>prefix</literal> attribute in the <literal>configure-scopes</"
+"literal> definition. (The default prefix is <literal>seam.</literal>)"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:131
+#, no-c-format
+msgid ""
+"Seam-scoped Spring beans defined this way can be injected into other Spring "
+"beans without the use of <literal>&lt;seam:instance/&gt;</literal>. However, "
+"care must be taken to ensure scope impedance is maintained. The normal "
+"approach used in Spring is to specify <literal>&lt;aop:scoped-proxy/&gt;</"
+"literal> in the bean definition. However, Seam-scoped Spring beans are "
+"<emphasis>not</emphasis> compatible with <literal>&lt;aop:scoped-proxy/&gt;</"
+"literal>. So if you need to inject a Seam-scoped Spring bean into a "
+"singleton, <literal>&lt;seam:instance/&gt;</literal> must be used:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:134
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope=\"seam."
+"CONVERSATION\"/&gt;\n"
+"\n"
+"...\n"
+"\n"
+"&lt;bean id=\"someSingleton\"&gt;\n"
+"    &lt;property name=\"someSeamScopedSpringBean\"&gt;\n"
+"        &lt;seam:instance name=\"someSpringBean\" proxy=\"true\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Testing.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Testing.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Testing.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,342 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Testing.xml:10
+#, no-c-format
+msgid "Testing Seam applications"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:11
+#, no-c-format
+msgid ""
+"Most Seam applications will need at least two kinds of automated tests: "
+"<emphasis>unit tests</emphasis>, which test a particular Seam component in "
+"isolation, and scripted <emphasis>integration tests</emphasis> which "
+"exercise all Java layers of the application (that is, everything except the "
+"view pages)."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:14
+#, no-c-format
+msgid "Both kinds of tests are very easy to write."
+msgstr ""
+
+#. Tag: title
+#: Testing.xml:18
+#, no-c-format
+msgid "Unit testing Seam components"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:19
+#, no-c-format
+msgid ""
+"All Seam components are POJOs. This is a great place to start if you want "
+"easy unit testing. And since Seam emphasises the use of bijection for inter-"
+"component interactions and access to contextual objects, it's very easy to "
+"test a Seam component outside of its normal runtime environment."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:22
+#, no-c-format
+msgid "Consider the following Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:25
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Scope(EVENT)\n"
+"@Name(\"register\")\n"
+"public class RegisterAction implements Register\n"
+"{\n"
+"   private User user;\n"
+"   private EntityManager em;\n"
+"\n"
+"   @In\n"
+"   public void setUser(User user) {\n"
+"       this.user = user;\n"
+"   }\n"
+"   \n"
+"   @PersistenceContext\n"
+"   public void setBookingDatabase(EntityManager em) {\n"
+"       this.em = em;\n"
+"   }\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = em.createQuery(\"select username from User where "
+"username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getResultList();\n"
+"      if (existing.size()==0)\n"
+"      {\n"
+"         em.persist(user);\n"
+"         return \"success\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:26
+#, no-c-format
+msgid "We could write a TestNG test for this component as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:29
+#, no-c-format
+msgid ""
+"public class RegisterActionTest\n"
+"{\n"
+"\n"
+"    @Test\n"
+"    public testRegisterAction()\n"
+"    {\n"
+"        EntityManager em = getEntityManagerFactory().createEntityManager();\n"
+"        em.getTransaction().begin();\n"
+"        \n"
+"        User gavin = new User();\n"
+"        gavin.setName(\"Gavin King\");\n"
+"        gavin.setUserName(\"1ovthafew\");\n"
+"        gavin.setPassword(\"secret\");\n"
+"        \n"
+"        RegisterAction action = new RegisterAction();\n"
+"        action.setUser(gavin);\n"
+"        action.setBookingDatabase(em);\n"
+"        \n"
+"        assert \"success\".equals( action.register() );\n"
+"        \n"
+"        em.getTransaction().commit();\n"
+"        em.close();\n"
+"    }\n"
+"    \n"
+"    \n"
+"    private EntityManagerFactory emf;\n"
+"    \n"
+"    public EntityManagerFactory getEntityManagerFactory()\n"
+"    {\n"
+"        return emf;\n"
+"    }\n"
+"    \n"
+"    @Configuration(beforeTestClass=true)\n"
+"    public void init() \n"
+"    {\n"
+"        emf = Persistence.createEntityManagerFactory"
+"(\"myResourceLocalEntityManager\");\n"
+"    }\n"
+"    \n"
+"    @Configuration(afterTestClass=true)\n"
+"    public void destroy()\n"
+"    {\n"
+"        emf.close();\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:30
+#, no-c-format
+msgid ""
+"Seam components don't usually depend directly upon container infrastructure, "
+"so most unit testing as as easy as that!"
+msgstr ""
+
+#. Tag: title
+#: Testing.xml:36
+#, no-c-format
+msgid "Integration testing Seam applications"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:37
+#, no-c-format
+msgid ""
+"Integration testing is slightly more difficult. In this case, we can't "
+"eliminate the container infrastructure; indeed, that is part of what is "
+"being tested! At the same time, we don't want to be forced to deploy our "
+"application to an application server to run the automated tests. We need to "
+"be able to reproduce just enough of the container infrastructure inside our "
+"testing environment to be able to exercise the whole application, without "
+"hurting performance too much."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:40
+#, no-c-format
+msgid ""
+"A second problem is emulating user interactions. A third problem is where to "
+"put our assertions. Some test frameworks let us test the whole application "
+"by reproducing user interactions with the web browser. These frameworks have "
+"their place, but they are not appropriate for use at development time."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:43
+#, no-c-format
+msgid ""
+"The approach taken by Seam is to let you write tests that script your "
+"components while running inside a pruned down container environment (Seam, "
+"together with the JBoss Embeddable EJB container). The role of the test "
+"script is basically to reproduce the interaction between the view and the "
+"Seam components. In other words, you get to pretend you are the JSF "
+"implementation!"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:46
+#, no-c-format
+msgid "This approach tests everything except the view."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:49
+#, no-c-format
+msgid "Let's consider a JSP view for the component we unit tested above:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:52
+#, no-c-format
+msgid ""
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Register New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;table border=\"0\"&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Username&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputText value=\"#{user.username}\"/&gt;&lt;/"
+"td&gt;\n"
+"       &lt;/tr&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Real Name&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputText value=\"#{user.name}\"/&gt;&lt;/td&gt;\n"
+"       &lt;/tr&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Password&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputSecret value=\"#{user.password}\"/&gt;&lt;/"
+"td&gt;\n"
+"       &lt;/tr&gt;\n"
+"     &lt;/table&gt;\n"
+"     &lt;h:messages/&gt;\n"
+"     &lt;h:commandButton type=\"submit\" value=\"Register\" action=\"#"
+"{register.register}\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:53
+#, no-c-format
+msgid ""
+"We want to test the registration functionality of our application (the stuff "
+"that happens when the user clicks the Register button). We'll reproduce the "
+"JSF request lifecycle in an automated TestNG test:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:56
+#, no-c-format
+msgid ""
+"public class RegisterTest extends SeamTest\n"
+"{\n"
+"   \n"
+"   @Test\n"
+"   public void testRegister() throws Exception\n"
+"   {\n"
+"            \n"
+"      new FacesRequest() {\n"
+"\n"
+"         @Override\n"
+"         protected void processValidations() throws Exception\n"
+"         {\n"
+"            validateValue(\"#{user.username}\", \"1ovthafew\");\n"
+"            validateValue(\"#{user.name}\", \"Gavin King\");\n"
+"            validateValue(\"#{user.password}\", \"secret\");\n"
+"            assert !isValidationFailure();\n"
+"         }\n"
+"         \n"
+"         @Override\n"
+"         protected void updateModelValues() throws Exception\n"
+"         {\n"
+"            setValue(\"#{user.username}\", \"1ovthafew\");\n"
+"            setValue(\"#{user.name}\", \"Gavin King\");\n"
+"            setValue(\"#{user.password}\", \"secret\");\n"
+"         }\n"
+"\n"
+"         @Override\n"
+"         protected void invokeApplication()\n"
+"         {\n"
+"            assert invokeMethod(\"#{register.register}\").equals(\"success"
+"\");\n"
+"         }\n"
+"\n"
+"         @Override\n"
+"         protected void renderResponse()\n"
+"         {\n"
+"            assert getValue(\"#{user.username}\").equals(\"1ovthafew\");\n"
+"            assert getValue(\"#{user.name}\").equals(\"Gavin King\");\n"
+"            assert getValue(\"#{user.password}\").equals(\"secret\");\n"
+"         }\n"
+"         \n"
+"      }.run();\n"
+"      \n"
+"   }\n"
+"\n"
+"   ...\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:57
+#, no-c-format
+msgid ""
+"Notice that we've extended <literal>SeamTest</literal>, which provides a "
+"Seam environment for our components, and written our test script as an "
+"anonymous class that extends <literal>SeamTest.FacesRequest</literal>, which "
+"provides an emulated JSF request lifecycle. (There is also a "
+"<literal>SeamTest.NonFacesRequest</literal> for testing GET requests.) We've "
+"written our code in methods which are named for the various JSF phases, to "
+"emulate the calls that JSF would make to our components. Then we've thrown "
+"in various assertions."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:60
+#, no-c-format
+msgid ""
+"You'll find plenty of integration tests for the Seam example applications "
+"which demonstrate more complex cases. There are instructions for running "
+"these tests using Ant, or using the TestNG plugin for eclipse:"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Text.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Text.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Text.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,362 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Text.xml:10
+#, no-c-format
+msgid "Seam Text"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:11
+#, no-c-format
+msgid ""
+"Collaboration-oriented websites require a human-friendly markup language for "
+"easy entry of formatted text in forum posts, wiki pages, blogs, comments, "
+"etc. Seam provides the <literal>&lt;s:formattedText/&gt;</literal> control "
+"for display of formatted text that conforms to the <emphasis>Seam Text</"
+"emphasis> language. Seam Text is implemented using an ANTLR-based parser. "
+"You don't need to know anything about ANTLR to use it, however."
+msgstr ""
+
+#. Tag: title
+#: Text.xml:15
+#, no-c-format
+msgid "Basic fomatting"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:16
+#, no-c-format
+msgid "Here is a simple example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:19
+#, no-c-format
+msgid ""
+"It's easy to make *bold text*, /italic text/, |monospace|, \n"
+"~deleted text~, super^scripts^ or _underlines_."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:20
+#, no-c-format
+msgid ""
+"If we display this using <literal>&lt;s:formattedText/&gt;</literal>, we "
+"will get the following HTML produced:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:23
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"It's easy to make &lt;b&gt;bold text&lt;/b&gt;, &lt;i&gt;italic text&lt;/"
+"i&gt;, &lt;tt&gt;monospace&lt;/tt&gt;\n"
+"&lt;del&gt;deleted text&lt;/del&gt;, super&lt;sup&gt;scripts&lt;/sup&gt; or "
+"&lt;u&gt;underlines&lt;/u&gt;.\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:24
+#, no-c-format
+msgid ""
+"We can use a blank line to indicate a new paragraph, and <literal>+</"
+"literal> to indicate a heading:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:27
+#, no-c-format
+msgid ""
+"+This is a big heading\n"
+"You /must/ have some text following a heading!\n"
+" \n"
+"++This is a smaller heading\n"
+"This is the first paragraph. We can split it across multiple \n"
+"lines, but we must end it with a blank line.\n"
+"\n"
+"This is the second paragraph."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:28
+#, no-c-format
+msgid ""
+"(Note that a simple newline is ignored, you need an additional blank line to "
+"wrap text into a new paragraph.) This is the HTML that results:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:31
+#, no-c-format
+msgid ""
+"&lt;h1&gt;This is a big heading&lt;/h1&gt;\n"
+"&lt;p&gt;\n"
+"You &lt;i&gt;must&lt;/i&gt; have some text following a heading!\n"
+"&lt;/p&gt;\n"
+" \n"
+"&lt;h2&gt;This is a smaller heading&lt;/h2&gt;\n"
+"&lt;p&gt;\n"
+"This is the first paragraph. We can split it across multiple \n"
+"lines, but we must end it with a blank line.\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"This is the second paragraph.\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:32
+#, no-c-format
+msgid ""
+"Ordered lists are created using the <literal>#</literal> character. "
+"Unordered lists use the <literal>=</literal> character:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:35
+#, no-c-format
+msgid ""
+"An ordered list:\n"
+"        \n"
+"#first item\n"
+"#second item\n"
+"#and even the /third/ item\n"
+"\n"
+"An unordered list:\n"
+"\n"
+"=an item\n"
+"=another item"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:36
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"An ordered list:\n"
+"&lt;/p&gt;\n"
+" \n"
+"&lt;ol&gt;       \n"
+"&lt;li&gt;first item&lt;/li&gt;\n"
+"&lt;li&gt;second item&lt;/li&gt;\n"
+"&lt;li&gt;and even the &lt;i&gt;third&lt;/i&gt; item&lt;/li&gt;\n"
+"&lt;/ol&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"An unordered list:\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;ul&gt;\n"
+"&lt;li&gt;an item&lt;/li&gt;\n"
+"&lt;li&gt;another item&lt;/li&gt;\n"
+"&lt;/ul&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:37
+#, no-c-format
+msgid "Quoted sections should be surrounded in double quotes:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:40
+#, no-c-format
+msgid ""
+"The other guy said:\n"
+"        \n"
+"\"Nyeah nyeah-nee \n"
+"/nyeah/ nyeah!\"\n"
+"\n"
+"But what do you think he means by \"nyeah-nee\"?"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:41
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"The other guy said:\n"
+"&lt;/p&gt;\n"
+"        \n"
+"&lt;q&gt;Nyeah nyeah-nee\n"
+"&lt;i&gt;nyeah&lt;/i&gt; nyeah!&lt;/q&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"But what do you think he means by &lt;q&gt;nyeah-nee&lt;/q&gt;?\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: title
+#: Text.xml:45
+#, no-c-format
+msgid "Entering code and text with special characters"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:46
+#, no-c-format
+msgid ""
+"Special characters such as <literal>*</literal>, <literal>|</literal> and "
+"<literal>#</literal>, along with HTML characters such as <literal>&lt;</"
+"literal>, <literal>&gt;</literal> and <literal>&amp;</literal> may be "
+"escaped using <literal>&#92;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:49
+#, no-c-format
+msgid ""
+"You can write down equations like 2&#92;*3&#92;=6 and HTML tags\n"
+"like &#92;&lt;body&#92;&gt; using the escape character: &#92;&#92;."
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:50
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"You can write down equations like 2*3=6 and HTML tags\n"
+"like &lt;body&gt; using the escape character: &#92;.\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:51
+#, no-c-format
+msgid "And we can quote code blocks using backticks:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:54
+#, no-c-format
+msgid ""
+"My code doesn't work:\n"
+"\n"
+"`for (int i=0; i&lt;100; i--)\n"
+"{\n"
+"    doSomething();\n"
+"}`\n"
+"\n"
+"Any ideas?"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:55
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"My code doesn't work:\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;pre&gt;for (int i=0; i&lt;100; i--)\n"
+"{\n"
+"    doSomething();\n"
+"}&lt;/pre&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"Any ideas?\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: title
+#: Text.xml:59
+#, no-c-format
+msgid "Links"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:60
+#, no-c-format
+msgid "A link may be created using the following syntax:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:63
+#, no-c-format
+msgid "Go to the Seam website at [=&gt;http://jboss.com/products/seam]."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:64
+#, no-c-format
+msgid "Or, if you want to specify the text of the link:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:67
+#, no-c-format
+msgid "Go to [the Seam website=&gt;http://jboss.com/products/seam]."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:68
+#, no-c-format
+msgid ""
+"For advanced users, it is even possible to customize the Seam Text parser to "
+"understand wikiword links written using this syntax."
+msgstr ""
+
+#. Tag: title
+#: Text.xml:74
+#, no-c-format
+msgid "Entering HTML"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:75
+#, no-c-format
+msgid ""
+"Text may even include a certain limited subset of HTML (don't worry, the "
+"subset is chosen to be safe from cross-site scripting attacks). This is "
+"useful for creating links:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:78
+#, no-c-format
+msgid ""
+"You might want to link to &lt;a href=\"http://jboss.com/products/seam\"&gt;"
+"something\n"
+"cool&lt;/a&gt;, or even include an image: &lt;img src=\"/logo.jpg\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:79
+#, no-c-format
+msgid "And for creating tables:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:82
+#, no-c-format
+msgid ""
+"&lt;table&gt;\n"
+"    &lt;tr&gt;&lt;td&gt;First name:&lt;/td&gt;&lt;td&gt;Gavin&lt;/td&gt;&lt;/"
+"tr&gt;\n"
+"    &lt;tr&gt;&lt;td&gt;Last name:&lt;/td&gt;&lt;td&gt;King&lt;/td&gt;&lt;/"
+"tr&gt;\n"
+"&lt;/table&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:83
+#, no-c-format
+msgid "But you can do much more if you want!"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Tools.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Tools.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Tools.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,769 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Tools.xml:10
+#, no-c-format
+msgid "Seam tools"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:12
+#, no-c-format
+msgid "jBPM designer and viewer"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:13
+#, no-c-format
+msgid ""
+"The jBPM designer and viewer will let you design and view in a nice way your "
+"business processes and your pageflows. This convenient tool is part of JBoss "
+"Eclipse IDE and more details can be found in the jBPM's documentation "
+"(http://docs.jboss.com/jbpm/v3/gpd/)"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:17
+#, no-c-format
+msgid "<title>Business process designer</title>"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:18
+#, no-c-format
+msgid "This tool lets you design your own business process in a graphical way."
+msgstr ""
+
+#. Tag: screeninfo
+#: Tools.xml:21 Tools.xml:37
+#, no-c-format
+msgid "<screeninfo>Business process designer</screeninfo>"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:33
+#, no-c-format
+msgid "Pageflow viewer"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:34
+#, no-c-format
+msgid ""
+"This tool let you design to some extend your pageflows and let you build "
+"graphical views of them so you can easily share and compare ideas on how it "
+"should be designed."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:51
+#, no-c-format
+msgid "CRUD-application generator"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:52
+#, no-c-format
+msgid ""
+"This chapter, will give you a short overview of the support for Seam that is "
+"available in the Hibernate Tools. Hibernate Tools is a set of tools for "
+"working with Hibernate and related technologies, such as JBoss Seam and "
+"EJB3. The tools are available as a set of eclipse plugins and Ant tasks. You "
+"can download the Hibernate Tools from the JBoss Eclipse IDE or Hibernate "
+"Tools websites."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:55
+#, no-c-format
+msgid ""
+"The specific support for Seam that is currently available is generation of a "
+"fully functional Seam based CRUD-application. The CRUD-application can be "
+"generated based on your existing Hibernate mapping files or EJB3 annotated "
+"POJO's or even fully reverse engineered from your existing database schema."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:58
+#, no-c-format
+msgid ""
+"The following sections is focused on the features required to understand for "
+"usage with Seam. The content is derived from the the Hibernate Tools "
+"reference documentation. Thus if you need more detailed information please "
+"refer to the Hibernate Tools documentation."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:62
+#, no-c-format
+msgid "Creating a Hibernate configuration file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:63
+#, no-c-format
+msgid ""
+"To be able to reverse engineer and generate code a hibernate.properties or "
+"hibernate.cfg.xml file is needed. The Hibernate Tools provide a wizard for "
+"generating the hibernate.cfg.xml file if you do not already have such file."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:66
+#, no-c-format
+msgid ""
+"Start the wizard by clicking \"New Wizard\" (Ctrl+N), select the Hibernate/"
+"Hibernate Configuration file (cfg.xml) wizard and press \"Next\". After "
+"selecting the wanted location for the hibernate.cfg.xml file, you will see "
+"the following page:"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:77
+#, no-c-format
+msgid ""
+"Tip: The contents in the combo boxes for the JDBC driver class and JDBC URL "
+"change automatically, depending on the Dialect and actual driver you have "
+"chosen."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:80
+#, no-c-format
+msgid ""
+"Enter your configuration information in this dialog. Details about the "
+"configuration options can be found in Hibernate reference documentation."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:83
+#, no-c-format
+msgid ""
+"Press \"Finish\" to create the configuration file, after optionally creating "
+"a Console onfiguration, the hibernate.cfg.xml will be automatically opened "
+"in an editor. The last option \"Create Console Configuration\" is enabled by "
+"default and when enabled i will automatically use the hibernate.cfg.xml for "
+"the basis of a \"Console Configuration\""
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:89
+#, no-c-format
+msgid "<title>Creating a Hibernate Console configuration</title>"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:90
+#, no-c-format
+msgid ""
+"A Console Configuration describes to the Hibernate plugin which "
+"configuration files should be used to configure hibernate, including which "
+"classpath is needed to load the POJO's, JDBC drivers etc. It is required to "
+"make usage of query prototyping, reverse engineering and code generation. "
+"You can have multiple named console configurations. Normally you would just "
+"need one per project, but more (or less) is definitly possible."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:93
+#, no-c-format
+msgid ""
+"You create a console configuration by running the Console Configuration "
+"wizard, shown in the following screenshot. The same wizard will also be used "
+"if you are coming from the hibernate.cfg.xml wizard and had enabled \"Create "
+"Console Configuration\"."
+msgstr ""
+
+#. Tag: caption
+#: Tools.xml:103
+#, no-c-format
+msgid "<caption>Creating a Hibernate Console configuration</caption>"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:105
+#, no-c-format
+msgid ""
+"The following table describes the relevant settings. The wizard can "
+"automatically detect default values for most of these if you started the "
+"Wizard with the relevant java project selected"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:109
+#, no-c-format
+msgid "Hibernate Console Configuration Parameters"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:117
+#, no-c-format
+msgid "Parameter"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:122 Tools.xml:308 Tools.xml:458
+#, no-c-format
+msgid "Description"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:127
+#, no-c-format
+msgid "Auto detected value"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:136
+#, no-c-format
+msgid "Name"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:141
+#, no-c-format
+msgid "The unique name of the configuration"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:146
+#, no-c-format
+msgid "Name of the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:153
+#, no-c-format
+msgid "Property file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:158
+#, no-c-format
+msgid "Path to a hibernate.properties file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:163
+#, no-c-format
+msgid "First hibernate.properties file found in the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:170
+#, no-c-format
+msgid "Configuration file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:175
+#, no-c-format
+msgid "Path to a hibernate.cfg.xml file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:180
+#, no-c-format
+msgid "First hibernate.cfg.xml file found in the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:187
+#, no-c-format
+msgid "Enable Hibernate ejb3/annotations"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:192
+#, no-c-format
+msgid ""
+"Selecting this option enables usage of annotated classes. hbm.xml files are "
+"of course still possible to use too. This feature requires running the "
+"Eclipse IDE with a JDK 5 runtime, otherwise you will get classloading and/or "
+"version errors."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:197
+#, no-c-format
+msgid "Not enabled"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:204
+#, no-c-format
+msgid "Mapping files"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:209
+#, no-c-format
+msgid ""
+"List of additional mapping files that should be loaded. Note: A hibernate."
+"cfg.xml can also contain mappings. Thus if these a duplicated here, you will "
+"get \"Duplicate mapping\" errors when using the console configuration."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:214
+#, no-c-format
+msgid ""
+"If no hibernate.cfg.xml file is found, all hbm.xml files found in the "
+"selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:221
+#, no-c-format
+msgid "Classpath"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:226
+#, no-c-format
+msgid ""
+"The classpath for loading POJO and JDBC drivers. Do not add Hibernate core "
+"libraries or dependencies, they are already included. If you get "
+"ClassNotFound errors then check this list for possible missing or redundant "
+"directories/jars."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:231
+#, no-c-format
+msgid ""
+"The default build output directory and any JARs with a class implementing "
+"java.sql.Driver in the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:239
+#, no-c-format
+msgid ""
+"Clicking \"Finish\" creates the configuration and shows it in the "
+"\"Hibernate Configurations\" view"
+msgstr ""
+
+#. Tag: caption
+#: Tools.xml:249
+#, no-c-format
+msgid "Console overview"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:254
+#, no-c-format
+msgid "Reverse engineering and code generation"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:255
+#, no-c-format
+msgid ""
+"A very simple \"click-and-generate\" reverse engineering and code generation "
+"facility is available. It is this facility that allows you to generate the "
+"skeleton for a full Seam CRUD application."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:258
+#, no-c-format
+msgid ""
+"To start working with this process, start the \"Hibernate Code Generation\" "
+"which is available in the toolbar via the Hibernate icon or via the \"Run/"
+"Hibernate Code Generation\" menu item."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:262
+#, no-c-format
+msgid "Code Generation Launcher"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:263
+#, no-c-format
+msgid ""
+"When you click on \"Hibernate Code Generation\" the standard Eclipse "
+"launcher dialog will appear. In this dialog you can create, edit and delete "
+"named Hibernate code generation \"launchers\"."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:274
+#, no-c-format
+msgid ""
+"The dialog has the standard tabs \"Refresh\" and \"Common\" that can be used "
+"to configure which directories should be automatically refreshed and various "
+"general settings launchers, such as saving them in a project for sharing the "
+"launcher within a team."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:285
+#, no-c-format
+msgid ""
+"The first time you create a code generation launcher you should give it a "
+"meaningfull name, otherwise the default prefix \"New_Generation\" will be "
+"used."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:288
+#, no-c-format
+msgid ""
+"Note: The \"At least one exporter option must be selected\" is just a "
+"warning stating that for this launch to work you need to select an exporter "
+"on the Exporter tab. When an exporter has been selected the warning will "
+"disappear."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:291
+#, no-c-format
+msgid "On the \"Main\" tab you the following fields:"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:295
+#, no-c-format
+msgid "Code generation \"Main\" tab fields"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:303 Tools.xml:453
+#, no-c-format
+msgid "Field"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:317
+#, no-c-format
+msgid "Console Configuration"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:322
+#, no-c-format
+msgid ""
+"The name of the console configuration which should be used when code "
+"generating."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:329
+#, no-c-format
+msgid "Output directory"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:334
+#, no-c-format
+msgid ""
+"Path to a directory into where all output will be written by default. Be "
+"aware that existing files will be overwritten, so be sure to specify the "
+"correct directory."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:341
+#, no-c-format
+msgid "Reverse engineer from JDBC Connection"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:346
+#, no-c-format
+msgid ""
+"If enabled the tools will reverse engineer the database available via the "
+"connection information in the selected Hibernate Console Configuration and "
+"generate code based on the database schema. If not enabled the code "
+"generation will just be based on the mappings already specified in the "
+"Hibernate Console configuration."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:353
+#, no-c-format
+msgid "Package"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:358
+#, no-c-format
+msgid ""
+"The package name here is used as the default package name for any entities "
+"found when reverse engineering."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:365
+#, no-c-format
+msgid "reveng.xml"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:370
+#, no-c-format
+msgid ""
+"Path to a reveng.xml file. A reveng.xml file allows you to control certain "
+"aspects of the reverse engineering. e.g. how jdbc types are mapped to "
+"hibernate types and especially important which tables are included/excluded "
+"from the process. Clicking \"setup\" allows you to select an existing reveng."
+"xml file or create a new one.."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:377
+#, no-c-format
+msgid "reveng. strategy"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:382
+#, no-c-format
+msgid ""
+"If reveng.xml does not provide enough customization you can provide your own "
+"implementation of an ReverseEngineeringStrategy. The class need to be in the "
+"claspath of the Console Configuration, otherwise you will get class not "
+"found exceptions."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:389
+#, no-c-format
+msgid "Generate basic typed composite ids"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:394
+#, no-c-format
+msgid ""
+"This field should always be enabled when generating the Seam CRUD "
+"application. A table that has a multi-colum primary key a &lt;composite-"
+"id&gt; mapping will always be created. If this option is enabled and there "
+"are matching foreign-keys each key column is still considered a 'basic' "
+"scalar (string, long, etc.) instead of a reference to an entity. If you "
+"disable this option a &lt;key-many-to-one&gt; instead. Note: a &lt;many-to-"
+"one&gt; property is still created, but is simply marked as non-updatable and "
+"non-insertable."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:401
+#, no-c-format
+msgid "Use custom templates"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:406
+#, no-c-format
+msgid ""
+"If enabled, the Template directory will be searched first when looking up "
+"the velocity templates, allowing you to redefine how the individual "
+"templates process the hibernate mapping model."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:413
+#, no-c-format
+msgid "Template directory"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:418
+#, no-c-format
+msgid "A path to a directory with custom velocity templates."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:429
+#, no-c-format
+msgid "Exporters"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:430
+#, no-c-format
+msgid ""
+"The exporters tab is used to specify which type of code that should be "
+"generated. Each selection represents an \"Exporter\" that are responsible "
+"for generating the code, hence the name."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:441
+#, no-c-format
+msgid ""
+"The following table describes in short the various exporters. The most "
+"relevant for Seam is of course the \"JBoss Seam Skeleton app\"."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:445
+#, no-c-format
+msgid "Code generation \"Exporter\" tab fields"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:467
+#, no-c-format
+msgid "Generate domain code"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:472
+#, no-c-format
+msgid ""
+"Generates POJO's for all the persistent classes and components found in the "
+"given Hibernate configuration."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:479
+#, no-c-format
+msgid "JDK 1.5 constructs"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:484
+#, no-c-format
+msgid "When enabled the POJO's will use JDK 1.5 constructs."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:491
+#, no-c-format
+msgid "EJB3/JSR-220 annotations"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:496
+#, no-c-format
+msgid ""
+"When enabled the POJO's will be annotated according to the EJB3/JSR-220 "
+"persistency specification."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:503
+#, no-c-format
+msgid "Generate DAO code"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:508
+#, no-c-format
+msgid "Generates a set of DAO's for each entity found."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:515
+#, no-c-format
+msgid "Generate Mappings"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:520
+#, no-c-format
+msgid "Generate mapping (hbm.xml) files for each entity"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:527
+#, no-c-format
+msgid "Generate hibernate configuration file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:532
+#, no-c-format
+msgid ""
+"Generate a hibernate.cfg.xml file. Used to keep the hibernate.cfg.xml "
+"uptodate with any new found mapping files."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:539
+#, no-c-format
+msgid "Generate schema html-documentation"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:544
+#, no-c-format
+msgid ""
+"Generates set of html pages that documents the database schema and some of "
+"the mappings."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:551
+#, no-c-format
+msgid "Generate JBoss Seam skeleton app (beta)"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:556
+#, no-c-format
+msgid ""
+"Generates a complete JBoss Seam skeleton app. The generation will include "
+"annotated POJO's, Seam controller beans and a JSP for the presentation "
+"layer. See the generated readme.txt for how to use it."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:559
+#, no-c-format
+msgid ""
+"Note: this exporter generates a full application, including a build.xml thus "
+"you will get the best results if you use an output directory which is the "
+"root of your project."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:570
+#, no-c-format
+msgid "Generating and using the code"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:571
+#, no-c-format
+msgid ""
+"When you have finished filling out the settings, simply press \"Run\" to "
+"start the generation of code. This might take a little while if you are "
+"reverse engineering from a database."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:574
+#, no-c-format
+msgid ""
+"When the generation have finished you should now have a complete skeleton "
+"Seam application in the output directory. In the output directory there is a "
+"<literal>readme.txt</literal> file describing the steps needed to deploy and "
+"run the example."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:577
+#, no-c-format
+msgid ""
+"If you want to regenerate/update the skeleton code then simply run the code "
+"generation again by selecting the \"Hibernate Code Generation\" in the "
+"toolbar or \"Run\" menu. Enjoy."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Tutorial.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Tutorial.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Tutorial.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,4041 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Tutorial.xml:10
+#, no-c-format
+msgid "Seam Tutorial"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:12
+#, no-c-format
+msgid "Try the examples"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:13
+#, no-c-format
+msgid ""
+"In this tutorial, we'll assume that you have downloaded JBoss AS 4.0.5 and "
+"installed the EJB 3.0 profile (using the JBoss AS installer). You should "
+"also have a copy of Seam downloaded and extracted to a work directory."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:16
+#, no-c-format
+msgid "The directory structure of each example in Seam follows this pattern:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:21
+#, no-c-format
+msgid ""
+"Web pages, images and stylesheets may be found in <filename>examples/"
+"<replaceable>registration</replaceable>/view</filename>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:26
+#, no-c-format
+msgid ""
+"Resources such as deployment descriptors and data import scripts may be "
+"found in <filename>examples/<replaceable>registration</replaceable>/"
+"resources</filename>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:31
+#, no-c-format
+msgid ""
+"Java source code may be found in <filename>examples/"
+"<replaceable>registration</replaceable>/src</filename>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:36
+#, no-c-format
+msgid ""
+"The Ant build script is <filename>examples/<replaceable>registration</"
+"replaceable>/build.xml</filename>"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:42
+#, no-c-format
+msgid "Running the examples on JBoss AS"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:43
+#, no-c-format
+msgid ""
+"First, make sure you have Ant correctly installed, with <literal>&#36;"
+"ANT_HOME</literal> and <literal>&#36;JAVA_HOME</literal> set correctly. "
+"Next, make sure you set the location of your JBoss AS 4.0.5 installation in "
+"the <literal>build.properties</literal> file in the root folder of your Seam "
+"installation. If you haven't already done so, start JBoss AS now by typing "
+"<literal>bin/run.sh</literal> or <literal>bin/run.bat</literal> in the root "
+"directory of your JBoss installation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:46
+#, no-c-format
+msgid ""
+"By default the examples will deploy to the default configuration of the "
+"server. If the server has been started using an a configuration other than "
+"default then the example <literal>build.xml</literal> file should be "
+"modified to reflect this before building and deploying. Two lines should be "
+"changed in this file:"
+msgstr ""
+
+#. Tag: screen
+#: Tutorial.xml:49
+#, no-c-format
+msgid ""
+"&lt;property name=\"deploy.dir\"           value=\"${jboss.home}/server/"
+"default/deploy\"/&gt;"
+msgstr ""
+
+#. Tag: screen
+#: Tutorial.xml:50
+#, no-c-format
+msgid ""
+"&lt;property name=\"webroot.dir\"         \n"
+"        value=\"${deploy.dir}/jboss-web.deployer/ROOT.war\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:51
+#, no-c-format
+msgid ""
+"Now, build and deploy the example by typing <literal>ant deploy</literal> in "
+"the <filename>examples/<replaceable>registration</replaceable></filename> "
+"directory."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:54
+#, no-c-format
+msgid ""
+"Try it out by accessing <ulink url=\"http://localhost:8080/seam-registration/"
+"\"><literal>http://localhost:8080/seam-registration/</literal></ulink> with "
+"your web browser."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:60
+#, no-c-format
+msgid "Running the examples on Tomcat"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:61
+#, no-c-format
+msgid ""
+"First, make sure you have Ant correctly installed, with <literal>&#36;"
+"ANT_HOME</literal> and <literal>&#36;JAVA_HOME</literal> set correctly. "
+"Next, make sure you set the location of your Tomcat 5.5 installation in the "
+"<literal>build.properties</literal> file in the root folder of your Seam "
+"installation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:64
+#, no-c-format
+msgid ""
+"Now, build and deploy the example by typing <literal>ant deploy.tomcat</"
+"literal> in the <filename>examples/<replaceable>registration</replaceable></"
+"filename> directory."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:67
+#, no-c-format
+msgid "Finally, start Tomcat."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:70
+#, no-c-format
+msgid ""
+"Try it out by accessing <ulink url=\"http://localhost:8080/jboss-seam-"
+"registration/\"><literal>http://localhost:8080/jboss-seam-registration/</"
+"literal></ulink> with your web browser."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:73
+#, no-c-format
+msgid ""
+"When you deploy the example to Tomcat, any EJB3 components will run inside "
+"the JBoss Embeddable EJB3 container, a complete standalone EJB3 container "
+"environment."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:79
+#, no-c-format
+msgid "Running the example tests"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:80
+#, no-c-format
+msgid ""
+"Most of the examples come with a suite of TestNG integration tests. The "
+"easiest way to run the tests is to run <literal>ant testexample</literal> "
+"inside the <filename>examples/<replaceable>registration</replaceable></"
+"filename> directory. It is also possible to run the tests inside your IDE "
+"using the TestNG plugin."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:88
+#, no-c-format
+msgid "Your first Seam application: the registration example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:89
+#, no-c-format
+msgid ""
+"The registration example is a fairly trivial application that lets a new "
+"user store his username, real name and password in the database. The example "
+"isn't intended to show off all of the cool functionality of Seam. However, "
+"it demonstrates the use of an EJB3 session bean as a JSF action listener, "
+"and basic configuration of Seam."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:92
+#, no-c-format
+msgid ""
+"We'll go slowly, since we realize you might not yet be familiar with EJB 3.0."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:95
+#, no-c-format
+msgid ""
+"The start page displays a very basic form with three input fields. Try "
+"filling them in and then submitting the form. This will save a user object "
+"in the database."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:107 Tutorial.xml:424 Tutorial.xml:563 Tutorial.xml:723
+#, no-c-format
+msgid "Understanding the code"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:108
+#, no-c-format
+msgid ""
+"The example is implemented with two JSP pages, one entity bean and one "
+"stateless session bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:119
+#, no-c-format
+msgid "Let's take a look at the code, starting from the \"bottom\"."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:123
+#, no-c-format
+msgid "The entity bean: <literal>User.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:124
+#, no-c-format
+msgid ""
+"We need an EJB entity bean for user data. This class defines "
+"<emphasis>persistence</emphasis> and <emphasis>validation</emphasis> "
+"declaratively, via annotations. It also needs some extra annotations that "
+"define the class as a Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:140
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"user\")\n"
+"@Scope(SESSION)\n"
+"@Table(name=\"users\")\n"
+"public class User implements Serializable\n"
+"{\n"
+"   private static final long serialVersionUID = 1881413500711441951L;\n"
+"   \n"
+"   private String username;\n"
+"   private String password;\n"
+"   private String name;\n"
+"   \n"
+"   public User(String name, String password, String username)\n"
+"   {\n"
+"      this.name = name;\n"
+"      this.password = password;\n"
+"      this.username = username;\n"
+"   }\n"
+"   \n"
+"   public User() {}\n"
+"   \n"
+"   @NotNull @Length(min=5, max=15)\n"
+"   public String getPassword()\n"
+"   {\n"
+"      return password;\n"
+"   }\n"
+"\n"
+"   public void setPassword(String password)\n"
+"   {\n"
+"      this.password = password;\n"
+"   }\n"
+"   \n"
+"   @NotNull\n"
+"   public String getName()\n"
+"   {\n"
+"      return name;\n"
+"   }\n"
+"\n"
+"   public void setName(String name)\n"
+"   {\n"
+"      this.name = name;\n"
+"   }\n"
+"   \n"
+"   @Id @NotNull @Length(min=5, max=15)\n"
+"   public String getUsername()\n"
+"   {\n"
+"      return username;\n"
+"   }\n"
+"\n"
+"   public void setUsername(String username)\n"
+"   {\n"
+"      this.username = username;\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:143
+#, no-c-format
+msgid ""
+"The EJB3 standard <literal>@Entity</literal> annotation indicates that the "
+"<literal>User</literal> class is an entity bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:148
+#, no-c-format
+msgid ""
+"A Seam component needs a <emphasis>component name</emphasis> specified by "
+"the <link linkend=\"name-annotation\"><literal>@Name</literal></link> "
+"annotation. This name must be unique within the Seam application. When JSF "
+"asks Seam to resolve a context variable with a name that is the same as a "
+"Seam component name, and the context variable is currently undefined (null), "
+"Seam will instantiate that component, and bind the new instance to the "
+"context variable. In this case, Seam will instantiate a <literal>User</"
+"literal> the first time JSF encounters a variable named <literal>user</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:153
+#, no-c-format
+msgid ""
+"Whenever Seam instantiates a component, it binds the new instance to a "
+"context variable in the component's <emphasis>default context</emphasis>. "
+"The default context is specified using the <link linkend=\"scope-annotation"
+"\"><literal>@Scope</literal></link> annotation. The <literal>User</literal> "
+"bean is a session scoped component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:158
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Table</literal> annotation indicates that the "
+"<literal>User</literal> class is mapped to the <literal>users</literal> "
+"table."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:163
+#, no-c-format
+msgid ""
+"<literal>name</literal>, <literal>password</literal> and <literal>username</"
+"literal> are the persistent attributes of the entity bean. All of our "
+"persistent attributes define accessor methods. These are needed when this "
+"component is used by JSF in the render response and update model values "
+"phases."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:168
+#, no-c-format
+msgid ""
+"An empty constructor is both required by both the EJB specification and by "
+"Seam."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:173
+#, no-c-format
+msgid ""
+"The <literal>@NotNull</literal> and <literal>@Length</literal> annotations "
+"are part of the Hibernate Validator framework. Seam integrates Hibernate "
+"Validator and lets you use it for data validation (even if you are not using "
+"Hibernate for persistence)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:178
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Id</literal> annotation indicates the primary key "
+"attribute of the entity bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:185
+#, no-c-format
+msgid ""
+"The most important things to notice in this example are the <literal>@Name</"
+"literal> and <literal>@Scope</literal> annotations. These annotations "
+"establish that this class is a Seam component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:188
+#, no-c-format
+msgid ""
+"We'll see below that the properties of our <literal>User</literal> class are "
+"bound to directly to JSF components and are populated by JSF during the "
+"update model values phase. We don't need any tedious glue code to copy data "
+"back and forth between the JSP pages and the entity bean domain model."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:191
+#, no-c-format
+msgid ""
+"However, entity beans shouldn't do transaction management or database "
+"access. So we can't use this component as a JSF action listener. For that we "
+"need a session bean."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:198
+#, no-c-format
+msgid ""
+"The stateless session bean class: <literal>RegisterAction.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:199
+#, no-c-format
+msgid ""
+"Most Seam application use session beans as JSF action listeners (you can use "
+"JavaBeans instead if you like)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:202
+#, no-c-format
+msgid ""
+"We have exactly one JSF action in our application, and one session bean "
+"method attached to it. In this case, we'll use a stateless session bean, "
+"since all the state associated with our action is held by the <literal>User</"
+"literal> bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:205
+#, no-c-format
+msgid "This is the only really interesting code in the example!"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:222
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"register\")\n"
+"public class RegisterAction implements Register\n"
+"{\n"
+"\n"
+"   @In\n"
+"   private User user;\n"
+"   \n"
+"   @PersistenceContext\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @Logger\n"
+"   private Log log;\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = em.createQuery(\n"
+"         \"select username from User where username=#{user.username}\")\n"
+"         .getResultList();\n"
+"         \n"
+"      if (existing.size()==0)\n"
+"      {\n"
+"         em.persist(user);\n"
+"         log.info(\"Registered new user #{user.username}\");\n"
+"         return \"/registered.jsp\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         FacesMessages.instance().add(\"User #{user.username} already exists"
+"\");\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:225
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Stateless</literal> annotation marks this class "
+"as stateless session bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:230
+#, no-c-format
+msgid ""
+"The <link linkend=\"in-annotation\"><literal>@In</literal></link> annotation "
+"marks an attribute of the bean as injected by Seam. In this case, the "
+"attribute is injected from a context variable named <literal>user</literal> "
+"(the instance variable name)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:235
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@PersistenceContext</literal> annotation is used "
+"to inject the EJB3 entity manager."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:240
+#, no-c-format
+msgid ""
+"The Seam <literal>@Logger</literal> annotation is used to inject the "
+"component's <literal>Log</literal> instance."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:245
+#, no-c-format
+msgid ""
+"The action listener method uses the standard EJB3 <literal>EntityManager</"
+"literal> API to interact with the database, and returns the JSF outcome. "
+"Note that, since this is a sesson bean, a transaction is automatically begun "
+"when the <literal>register()</literal> method is called, and committed when "
+"it completes."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:250
+#, no-c-format
+msgid ""
+"Notice that Seam lets you use a JSF EL expression inside EJB-QL. Under the "
+"covers, this results in an ordinary JPA <literal>setParameter()</literal> "
+"call on the standard JPA <literal>Query</literal> object. Nice, huh?"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:255
+#, no-c-format
+msgid ""
+"The <literal>Log</literal> API lets us easily display templated log messages."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:260
+#, no-c-format
+msgid ""
+"JSF action listener methods return a string-valued outcome that determines "
+"what page will be displayed next. A null outcome (or a void action listener "
+"method) redisplays the previous page. In plain JSF, it is normal to always "
+"use a JSF <emphasis>navigation rule</emphasis> to determine the JSF view id "
+"from the outcome. For complex application this indirection is useful and a "
+"good practice. However, for very simple examples like this one, Seam lets "
+"you use the JSF view id as the outcome, eliminating the requirement for a "
+"navigation rule. <emphasis>Note that when you use a view id as an outcome, "
+"Seam always performs a browser redirect.</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:265
+#, no-c-format
+msgid ""
+"Seam provides a number of <emphasis>built-in components</emphasis> to help "
+"solve common problems. The <literal>FacesMessages</literal> component makes "
+"it easy to display templated error or success messages. Built-in Seam "
+"components may be obtained by injection, or by calling an <literal>instance()"
+"</literal> method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:272
+#, no-c-format
+msgid ""
+"Note that we did not explicitly specify a <literal>@Scope</literal> this "
+"time. Each Seam component type has a default scope if not explicitly "
+"specified. For stateless session beans, the default scope is the stateless "
+"context. Actually, <emphasis>all</emphasis> stateless session beans belong "
+"in the stateless context."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:275
+#, no-c-format
+msgid ""
+"Our session bean action listener performs the business and persistence logic "
+"for our mini-application. In more complex applications, we might need to "
+"layer the code and refactor persistence logic into a dedicated data access "
+"component. That's perfectly trivial to do. But notice that Seam does not "
+"force you into any particular strategy for application layering."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:278
+#, no-c-format
+msgid ""
+"Furthermore, notice that our session bean has simultaneous access to context "
+"associated with the web request (the form values in the <literal>User</"
+"literal> object, for example), and state held in transactional resources "
+"(the <literal>EntityManager</literal> object). This is a break from "
+"traditional J2EE architectures. Again, if you are more comfortable with the "
+"traditional J2EE layering, you can certainly implement that in a Seam "
+"application. But for many applications, it's simply not very useful."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:285
+#, no-c-format
+msgid "The session bean local interface: <literal>Register.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:286
+#, no-c-format
+msgid "Naturally, our session bean needs a local interface."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:291
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface Register\n"
+"{\n"
+"   public String register();\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:292
+#, no-c-format
+msgid "That's the end of the Java code. Now onto the deployment descriptors."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:298
+#, no-c-format
+msgid ""
+"The Seam component deployment descriptor: <literal>components.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:299
+#, no-c-format
+msgid ""
+"If you've used many Java frameworks before, you'll be used to having to "
+"declate all your component classes in some kind of XML file that gradually "
+"grows more and more unmanageable as your project matures. You'll be relieved "
+"to know that Seam does not require that application components be "
+"accompanied by XML. Most Seam applications require a very small amount of "
+"XML that does not grow very much as the project gets bigger."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:302
+#, no-c-format
+msgid ""
+"Nevertheless, it is often useful to be able to provide for <emphasis>some</"
+"emphasis> external configuration of <emphasis>some</emphasis> components "
+"(particularly the components built in to Seam). You have a couple of options "
+"here, but the most flexible option is to provide this configuration in a "
+"file called <literal>components.xml</literal>, located in the <literal>WEB-"
+"INF</literal> directory. We'll use the <literal>components.xml</literal> "
+"file to tell Seam how to find our EJB components in JNDI:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:305
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"&gt;\n"
+"     &lt;core:init jndi-pattern=\"@jndiPattern@\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:306
+#, no-c-format
+msgid ""
+"This code configures a property named <literal>jndiPattern</literal> of a "
+"built-in Seam component named <literal>org.jboss.seam.core.init</literal>."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:312
+#, no-c-format
+msgid "The web deployment description: <literal>web.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:313
+#, no-c-format
+msgid ""
+"The presentation layer for our mini-application will be deployed in a WAR. "
+"So we'll need a web deployment descriptor."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:316
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;web-app version=\"2.5\"\n"
+"    xmlns=\"http://java.sun.com/xml/ns/javaee\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n"
+"        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\"&gt;\n"
+"\n"
+"    &lt;!-- Seam --&gt;\n"
+"\n"
+"    &lt;listener&gt;\n"
+"        &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/"
+"listener-class&gt;\n"
+"    &lt;/listener&gt;\n"
+"\n"
+"    &lt;!-- MyFaces --&gt;\n"
+"\n"
+"    &lt;listener&gt;\n"
+"        &lt;listener-class&gt;\n"
+"            org.apache.myfaces.webapp.StartupServletContextListener\n"
+"        &lt;/listener-class&gt;\n"
+"    &lt;/listener&gt;\n"
+"\n"
+"    &lt;context-param&gt;\n"
+"        &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-"
+"name&gt;\n"
+"        &lt;param-value&gt;client&lt;/param-value&gt;\n"
+"    &lt;/context-param&gt;\n"
+"\n"
+"    &lt;servlet&gt;\n"
+"        &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;\n"
+"        &lt;servlet-class&gt;javax.faces.webapp.FacesServlet&lt;/servlet-"
+"class&gt;\n"
+"        &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;\n"
+"    &lt;/servlet&gt;\n"
+"\n"
+"    &lt;!-- Faces Servlet Mapping --&gt;\n"
+"    &lt;servlet-mapping&gt;\n"
+"        &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;\n"
+"        &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;\n"
+"    &lt;/servlet-mapping&gt;\n"
+"\n"
+"&lt;/web-app&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:317
+#, no-c-format
+msgid ""
+"This <literal>web.xml</literal> file configures Seam and MyFaces. The "
+"configuration you see here is pretty much identical in all Seam applications."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:323
+#, no-c-format
+msgid "The JSF configration: <literal>faces-config.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:324
+#, no-c-format
+msgid ""
+"All Seam applications use JSF views as the presentation layer. So we'll need "
+"<literal>faces-config.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:327
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;!DOCTYPE faces-config \n"
+"PUBLIC \"-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN\"\n"
+"                            \"http://java.sun.com/dtd/web-facesconfig_1_0.dtd"
+"\"&gt;\n"
+"&lt;faces-config&gt;\n"
+"\n"
+"    &lt;!-- A phase listener is needed by all Seam applications --&gt;\n"
+"    \n"
+"    &lt;lifecycle&gt;\n"
+"        &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-"
+"listener&gt;\n"
+"    &lt;/lifecycle&gt;\n"
+"\n"
+"&lt;/faces-config&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:328
+#, no-c-format
+msgid ""
+"The <literal>faces-config.xml</literal> file integrates Seam into JSF. Note "
+"that we don't need any JSF managed bean declarations! The managed beans are "
+"the Seam components. In Seam applications, the <literal>faces-config.xml</"
+"literal> is used much less often than in plain JSF."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:331
+#, no-c-format
+msgid ""
+"In fact, once you have all the basic descriptors set up, the <emphasis>only</"
+"emphasis> XML you need to write as you add new functionality to a Seam "
+"application is the navigation rules, and possibly jBPM process definitions. "
+"Seam takes the view that <emphasis>process flow</emphasis> and "
+"<emphasis>configuration data</emphasis> are the only things that truly "
+"belong in XML."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:334
+#, no-c-format
+msgid ""
+"In this simple example, we don't even need a navigation rule, since we "
+"decided to embed the view id in our action code."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:340
+#, no-c-format
+msgid "The EJB deployment descriptor: <literal>ejb-jar.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:341
+#, no-c-format
+msgid ""
+"The <literal>ejb-jar.xml</literal> file integrates Seam with EJB3, by "
+"attaching the <literal>SeamInterceptor</literal> to all session beans in the "
+"archive."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:344
+#, no-c-format
+msgid ""
+"&lt;ejb-jar xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \n"
+"         xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n"
+"         http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd\"\n"
+"         version=\"3.0\"&gt;\n"
+"         \n"
+"   &lt;interceptors&gt;\n"
+"     &lt;interceptor&gt;\n"
+"       &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"     &lt;/interceptor&gt;\n"
+"   &lt;/interceptors&gt;\n"
+"   \n"
+"   &lt;assembly-descriptor&gt;\n"
+"      &lt;interceptor-binding&gt;\n"
+"         &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"         &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"      &lt;/interceptor-binding&gt;\n"
+"   &lt;/assembly-descriptor&gt;\n"
+"   \n"
+"&lt;/ejb-jar&gt;"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:348
+#, no-c-format
+msgid ""
+"The EJB persistence deployment descriptor: <literal>persistence.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:349
+#, no-c-format
+msgid ""
+"The <literal>persistence.xml</literal> file tells the EJB persistence "
+"provider where to find the datasource, and contains some vendor-specific "
+"settings. In this case, enables automatic schema export at startup time."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:352
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;persistence xmlns=\"http://java.sun.com/xml/ns/persistence\" \n"
+"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence \n"
+"             http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd\" \n"
+"             version=\"1.0\"&gt;\n"
+"    &lt;persistence-unit name=\"userDatabase\"&gt;\n"
+"      &lt;provider&gt;org.hibernate.ejb.HibernatePersistence&lt;/"
+"provider&gt;\n"
+"      &lt;jta-data-source&gt;java:/DefaultDS&lt;/jta-data-source&gt;\n"
+"      &lt;properties&gt;\n"
+"         &lt;property name=\"hibernate.hbm2ddl.auto\" value=\"create-drop\"/"
+"&gt;\n"
+"      &lt;/properties&gt;\n"
+"    &lt;/persistence-unit&gt;\n"
+"&lt;/persistence&gt;"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:356
+#, no-c-format
+msgid ""
+"The view: <literal>register.jsp</literal> and <literal>registered.jsp</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:357
+#, no-c-format
+msgid ""
+"The view pages for a Seam application could be implemented using any "
+"technology that supports JSF. In this example we use JSP, since it is "
+"familiar to most developers and since we have minimal requirements here "
+"anyway. (But if you take our advice, you'll use Facelets for your own "
+"applications.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:360
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://jboss.com/products/seam/taglib\" prefix=\"s\" "
+"&#37;&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Register New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;table border=\"0\"&gt;\n"
+"       &lt;s:validateAll&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Username&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputText value=\"#{user.username}\"/&gt;&lt;/"
+"td&gt;\n"
+"         &lt;/tr&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Real Name&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputText value=\"#{user.name}\"/&gt;&lt;/td&gt;\n"
+"         &lt;/tr&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Password&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputSecret value=\"#{user.password}\"/&gt;&lt;/"
+"td&gt;\n"
+"         &lt;/tr&gt;\n"
+"       &lt;/s:validateAll&gt;\n"
+"     &lt;/table&gt;\n"
+"     &lt;h:messages/&gt;\n"
+"     &lt;h:commandButton type=\"submit\" value=\"Register\" action=\"#"
+"{register.register}\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:361
+#, no-c-format
+msgid ""
+"The only thing here that is specific to Seam is the <literal>&lt;s:"
+"validateAll&gt;</literal> tag. This JSF component tells JSF to validate all "
+"the contained input fields against the Hibernate Validator annotations "
+"specified on the entity bean."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:364
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Successfully Registered New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"    Welcome, &lt;h:outputText value=\"#{user.name}\"/&gt;, \n"
+"    you are successfully registered as &lt;h:outputText value=\"#{user."
+"username}\"/&gt;.\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:365
+#, no-c-format
+msgid ""
+"This is a boring old JSP pages using standard JSF components. There is "
+"nothing specific to Seam here."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:371
+#, no-c-format
+msgid "The EAR deployment descriptor: <literal>application.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:372
+#, no-c-format
+msgid ""
+"Finally, since our application is deployed as an EAR, we need a deployment "
+"descriptor there, too."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:375
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;application xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee \n"
+"             http://java.sun.com/xml/ns/javaee/application_5.xsd\"\n"
+"             version=\"5\"&gt;\n"
+"             \n"
+"    &lt;display-name&gt;Seam Registration&lt;/display-name&gt;\n"
+"\n"
+"    &lt;module&gt;\n"
+"        &lt;web&gt;\n"
+"            &lt;web-uri&gt;jboss-seam-registration.war&lt;/web-uri&gt;\n"
+"            &lt;context-root&gt;/seam-registration&lt;/context-root&gt;\n"
+"        &lt;/web&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;ejb&gt;jboss-seam-registration.jar&lt;/ejb&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;jboss-seam.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;el-api.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;el-ri.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    \n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:376
+#, no-c-format
+msgid ""
+"This deployment descriptor links modules in the enterprise archive and binds "
+"the web application to the context root <literal>/seam-registration</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:387 Tutorial.xml:535 Tutorial.xml:698 Tutorial.xml:813
+#, no-c-format
+msgid "How it works"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:388
+#, no-c-format
+msgid ""
+"When the form is submitted, JSF asks Seam to resolve the variable named "
+"<literal>user</literal>. Since there is no value already bound to that name "
+"(in any Seam context), Seam instantiates the <literal>user</literal> "
+"component, and returns the resulting <literal>User</literal> entity bean "
+"instance to JSF after storing it in the Seam session context."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:391
+#, no-c-format
+msgid ""
+"The form input values are now validated against the Hibernate Validator "
+"constraints specified on the <literal>User</literal> entity. If the "
+"constraints are violated, JSF redisplays the page. Otherwise, JSF binds the "
+"form input values to properties of the <literal>User</literal> entity bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:394
+#, no-c-format
+msgid ""
+"Next, JSF asks Seam to resolve the variable named <literal>register</"
+"literal>. Seam finds the <literal>RegisterAction</literal> stateless session "
+"bean in the stateless context and returns it. JSF invokes the "
+"<literal>register()</literal> action listener method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:397
+#, no-c-format
+msgid ""
+"Seam intercepts the method call and injects the <literal>User</literal> "
+"entity from the Seam session context, before continuing the invocation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:400
+#, no-c-format
+msgid ""
+"The <literal>register()</literal> method checks if a user with the entered "
+"username already exists. If so, an error message is queued with the "
+"<literal>FacesMessages</literal> component, and a null outcome is returned, "
+"causing a page redisplay. The <literal>FacesMessages</literal> component "
+"interpolates the JSF expression embedded in the message string and adds a "
+"JSF <literal>FacesMessage</literal> to the view."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:403
+#, no-c-format
+msgid ""
+"If no user with that username exists, the <literal>\"/registered.jsp\"</"
+"literal> outcome triggers a browser redirect to the <literal>registered.jsp</"
+"literal> page. When JSF comes to render the page, it asks Seam to resolve "
+"the variable named <literal>user</literal> and uses property values of the "
+"returned <literal>User</literal> entity from Seam's session scope."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:411
+#, no-c-format
+msgid "Clickable lists in Seam: the messages example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:412
+#, no-c-format
+msgid ""
+"Clickable lists of database search results are such an important part of any "
+"online application that Seam provides special functionality on top of JSF to "
+"make it easier to query data using EJB-QL or HQL and display it as a "
+"clickable list using a JSF <literal>&lt;h:dataTable&gt;</literal>. The "
+"messages example demonstrates this functionality."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:425
+#, no-c-format
+msgid ""
+"The message list example has one entity bean, <literal>Message</literal>, "
+"one session bean, <literal>MessageListBean</literal> and one JSP."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:429
+#, no-c-format
+msgid "The entity bean: <literal>Message.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:430
+#, no-c-format
+msgid ""
+"The <literal>Message</literal> entity defines the title, text, date and time "
+"of a message, and a flag indicating whether the message has been read:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:433
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"message\")\n"
+"@Scope(EVENT)\n"
+"public class Message implements Serializable\n"
+"{\n"
+"   private Long id;\n"
+"   private String title;\n"
+"   private String text;\n"
+"   private boolean read;\n"
+"   private Date datetime;\n"
+"   \n"
+"   @Id @GeneratedValue\n"
+"   public Long getId() {\n"
+"      return id;\n"
+"   }\n"
+"   public void setId(Long id) {\n"
+"      this.id = id;\n"
+"   }\n"
+"   \n"
+"   @NotNull @Length(max=100)\n"
+"   public String getTitle() {\n"
+"      return title;\n"
+"   }\n"
+"   public void setTitle(String title) {\n"
+"      this.title = title;\n"
+"   }\n"
+"   \n"
+"   @NotNull @Lob\n"
+"   public String getText() {\n"
+"      return text;\n"
+"   }\n"
+"   public void setText(String text) {\n"
+"      this.text = text;\n"
+"   }\n"
+"   \n"
+"   @NotNull\n"
+"   public boolean isRead() {\n"
+"      return read;\n"
+"   }\n"
+"   public void setRead(boolean read) {\n"
+"      this.read = read;\n"
+"   }\n"
+"   \n"
+"   @NotNull \n"
+"   @Basic @Temporal(TemporalType.TIMESTAMP)\n"
+"   public Date getDatetime() {\n"
+"      return datetime;\n"
+"   }\n"
+"   public void setDatetime(Date datetime) {\n"
+"      this.datetime = datetime;\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:438
+#, no-c-format
+msgid "The stateful session bean: <literal>MessageManagerBean.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:439
+#, no-c-format
+msgid ""
+"Just like in the previous example, we have a session bean, "
+"<literal>MessageManagerBean</literal>, which defines the action listener "
+"methods for the two buttons on our form. One of the buttons selects a "
+"message from the list, and displays that message. The other button deletes a "
+"message. So far, this is not so different to the previous example."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:442
+#, no-c-format
+msgid ""
+"But <literal>MessageManagerBean</literal> is also responsible for fetching "
+"the list of messages the first time we navigate to the message list page. "
+"There are various ways the user could navigate to the page, and not all of "
+"them are preceded by a JSF action&mdash;the user might have bookmarked the "
+"page, for example. So the job of fetching the message list takes place in a "
+"Seam <emphasis>factory method</emphasis>, instead of in an action listener "
+"method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:445
+#, no-c-format
+msgid ""
+"We want to cache the list of messages in memory between server requests, so "
+"we will make this a stateful session bean."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:459
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Scope(SESSION)\n"
+"@Name(\"messageManager\")\n"
+"public class MessageManagerBean implements Serializable, MessageManager\n"
+"{\n"
+"\n"
+"   @DataModel\n"
+"   private List&lt;Message&gt; messageList;\n"
+"   \n"
+"   @DataModelSelection\n"
+"   @Out(required=false)\n"
+"   private Message message;\n"
+"   \n"
+"   @PersistenceContext(type=EXTENDED)\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @Factory(\"messageList\")\n"
+"   public void findMessages()\n"
+"   {\n"
+"      messageList = em.createQuery(\"from Message msg order by msg.datetime "
+"desc\").getResultList();\n"
+"   }\n"
+"   \n"
+"   public void select()\n"
+"   {\n"
+"      message.setRead(true);\n"
+"   }\n"
+"   \n"
+"   public void delete()\n"
+"   {\n"
+"      messageList.remove(message);\n"
+"      em.remove(message);\n"
+"      message=null;\n"
+"   }\n"
+"   \n"
+"   @Remove @Destroy\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:462
+#, no-c-format
+msgid ""
+"The <literal>@DataModel</literal> annotation exposes an attibute of type "
+"<literal>java.util.List</literal> to the JSF page as an instance of "
+"<literal>javax.faces.model.DataModel</literal>. This allows us to use the "
+"list in a JSF <literal>&lt;h:dataTable&gt;</literal> with clickable links "
+"for each row. In this case, the <literal>DataModel</literal> is made "
+"available in a session context variable named <literal>messageList</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:467
+#, no-c-format
+msgid ""
+"The <literal>@DataModelSelection</literal> annotation tells Seam to inject "
+"the <literal>List</literal> element that corresponded to the clicked link."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:472
+#, no-c-format
+msgid ""
+"The <literal>@Out</literal> annotation then exposes the selected value "
+"directly to the page. So ever time a row of the clickable list is selected, "
+"the <literal>Message</literal> is injected to the attribute of the stateful "
+"bean, and the subsequently <emphasis>outjected</emphasis> to the event "
+"context variable named <literal>message</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:477
+#, no-c-format
+msgid ""
+"This stateful bean has an EJB3 <emphasis>extended persistence context</"
+"emphasis>. The messages retrieved in the query remain in the managed state "
+"as long as the bean exists, so any subsequent method calls to the stateful "
+"bean can update them without needing to make any explicit call to the "
+"<literal>EntityManager</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:482
+#, no-c-format
+msgid ""
+"The first time we navigate to the JSP page, there will be no value in the "
+"<literal>messageList</literal> context variable. The <literal>@Factory</"
+"literal> annotation tells Seam to create an instance of "
+"<literal>MessageManagerBean</literal> and invoke the <literal>findMessages()"
+"</literal> method to initialize the value. We call <literal>findMessages()</"
+"literal> a <emphasis>factory method</emphasis> for <literal>messages</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:487
+#, no-c-format
+msgid ""
+"The <literal>select()</literal> action listener method marks the selected "
+"<literal>Message</literal> as read, and updates it in the database."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:492
+#, no-c-format
+msgid ""
+"The <literal>delete()</literal> action listener method removes the selected "
+"<literal>Message</literal> from the database."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:497
+#, no-c-format
+msgid ""
+"All stateful session bean Seam components <emphasis>must</emphasis> have a "
+"method marked <literal>@Remove @Destroy</literal> to ensure that Seam will "
+"remove the stateful bean when the Seam context ends, and clean up any server-"
+"side state."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:504
+#, no-c-format
+msgid ""
+"Note that this is a session-scoped Seam component. It is associated with the "
+"user login session, and all requests from a login session share the same "
+"instance of the component. (In Seam applications, we usually use session-"
+"scoped components sparingly.)"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:510
+#, no-c-format
+msgid ""
+"The session bean local interface: <literal>MessageManager.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:511
+#, no-c-format
+msgid "All session beans have a business interface, of course."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:514
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface MessageManager\n"
+"{\n"
+"   public void findMessages();\n"
+"   public void select();\n"
+"   public void delete();\n"
+"   public void destroy();\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:515
+#, no-c-format
+msgid "From now on, we won't show local interfaces in our code examples."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:518
+#, no-c-format
+msgid ""
+"Let's skip over <literal>components.xml</literal>, <literal>persistence.xml</"
+"literal>, <literal>web.xml</literal>, <literal>ejb-jar.xml</literal>, "
+"<literal>faces-config.xml</literal> and <literal>application.xml</literal> "
+"since they are much the same as the previous example, and go straight to the "
+"JSP."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:524
+#, no-c-format
+msgid "The view: <literal>messages.jsp</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:525
+#, no-c-format
+msgid ""
+"The JSP page is a straightforward use of the JSF <literal>&lt;h:dataTable&gt;"
+"</literal> component. Again, nothing specific to Seam."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:528
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Messages&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;h2&gt;Message List&lt;/h2&gt;\n"
+"     &lt;h:outputText value=\"No messages to display\" rendered=\"#"
+"{messageList.rowCount==0}\"/&gt;\n"
+"     &lt;h:dataTable var=\"msg\" value=\"#{messageList}\" rendered=\"#"
+"{messageList.rowCount&gt;0}\"&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Read\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:selectBooleanCheckbox value=\"#{msg.read}\" disabled=\"true"
+"\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Title\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:commandLink value=\"#{msg.title}\" action=\"#"
+"{messageManager.select}\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Date/Time\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:outputText value=\"#{msg.datetime}\"&gt;\n"
+"              &lt;f:convertDateTime type=\"both\" dateStyle=\"medium\" "
+"timeStyle=\"short\"/&gt;\n"
+"           &lt;/h:outputText&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;h:commandButton value=\"Delete\" action=\"#{messageManager."
+"delete}\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"     &lt;/h:dataTable&gt;\n"
+"     &lt;h3&gt;&lt;h:outputText value=\"#{message.title}\"/&gt;&lt;/h3&gt;\n"
+"     &lt;div&gt;&lt;h:outputText value=\"#{message.text}\"/&gt;&lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:536
+#, no-c-format
+msgid ""
+"The first time we navigate to the <literal>messages.jsp</literal> page, "
+"whether by a JSF postback (faces request) or a direct browser GET request "
+"(non-faces request), the page will try to resolve the <literal>messageList</"
+"literal> context variable. Since this context variable is not initialized, "
+"Seam will call the factory method <literal>findMessages()</literal>, which "
+"performs a query against the database and results in a <literal>DataModel</"
+"literal> being outjected. This <literal>DataModel</literal> provides the row "
+"data needed for rendering the <literal>&lt;h:dataTable&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:539
+#, no-c-format
+msgid ""
+"When the user clicks the <literal>&lt;h:commandLink&gt;</literal>, JSF calls "
+"the <literal>select()</literal> action listener. Seam intercepts this call "
+"and injects the selected row data into the <literal>message</literal> "
+"attribute of the <literal>messageManager</literal> component. The action "
+"listener fires, marking the selected <literal>Message</literal> as read. At "
+"the end of the call, Seam outjects the selected <literal>Message</literal> "
+"to the context variable named <literal>message</literal>. Next, the EJB "
+"container commits the transaction, and the change to the <literal>Message</"
+"literal> is flushed to the database. Finally, the page is re-rendered, "
+"redisplaying the message list, and displaying the selected message below it."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:542
+#, no-c-format
+msgid ""
+"If the user clicks the <literal>&lt;h:commandButton&gt;</literal>, JSF calls "
+"the <literal>delete()</literal> action listener. Seam intercepts this call "
+"and injects the selected row data into the <literal>message</literal> "
+"attribute of the <literal>messageList</literal> component. The action "
+"listener fires, removing the selected <literal>Message</literal> from the "
+"list, and also calling <literal>remove()</literal> on the "
+"<literal>EntityManager</literal>. At the end of the call, Seam refreshes the "
+"<literal>messageList</literal> context variable and clears the context "
+"variable named <literal>message</literal>. The EJB container commits the "
+"transaction, and deletes the <literal>Message</literal> from the database. "
+"Finally, the page is re-rendered, redisplaying the message list."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:550
+#, no-c-format
+msgid "Seam and jBPM: the todo list example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:551
+#, no-c-format
+msgid ""
+"jBPM provides sophisticated functionality for workflow and task management. "
+"To get a small taste of how jBPM integrates with Seam, we'll show you a "
+"simple \"todo list\" application. Since managing lists of tasks is such core "
+"functionality for jBPM, there is hardly any Java code at all in this example."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:564
+#, no-c-format
+msgid ""
+"The center of this example is the jBPM process definition. There are also "
+"two JSPs and two trivial JavaBeans (There was no reason to use session "
+"beans, since they do not access the database, or have any other "
+"transactional behavior). Let's start with the process definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:575
+#, no-c-format
+msgid ""
+"&lt;process-definition name=\"todo\"&gt;\n"
+"   \n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"todo\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;task-node name=\"todo\"&gt;\n"
+"      &lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"         &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"      &lt;/task&gt;\n"
+"      &lt;transition to=\"done\"/&gt;\n"
+"   &lt;/task-node&gt;\n"
+"   \n"
+"   &lt;end-state name=\"done\"/&gt;\n"
+"   \n"
+"&lt;/process-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:578
+#, no-c-format
+msgid ""
+"The <literal>&lt;start-state&gt;</literal> node represents the logical start "
+"of the process. When the process starts, it immediately transitions to the "
+"<literal>todo</literal> node."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:583
+#, no-c-format
+msgid ""
+"The <literal>&lt;task-node&gt;</literal> node represents a <emphasis>wait "
+"state</emphasis>, where business process execution pauses, waiting for one "
+"or more tasks to be performed."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:588
+#, no-c-format
+msgid ""
+"The <literal>&lt;task&gt;</literal> element defines a task to be performed "
+"by a user. Since there is only one task defined on this node, when it is "
+"complete, execution resumes, and we transition to the end state. The task "
+"gets its description from a Seam component named <literal>todoList</literal> "
+"(one of the JavaBeans)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:593
+#, no-c-format
+msgid ""
+"Tasks need to be assigned to a user or group of users when they are created. "
+"In this case, the task is assigned to the current user, which we get from a "
+"built-in Seam component named <literal>actor</literal>. Any Seam component "
+"may be used to perform task assignment."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:598
+#, no-c-format
+msgid ""
+"The <literal>&lt;end-state&gt;</literal> node defines the logical end of the "
+"business process. When execution reaches this node, the process instance is "
+"destroyed."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:605
+#, no-c-format
+msgid ""
+"If we view this process definition using the process definition editor "
+"provided by JBossIDE, this is what it looks like:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:616
+#, no-c-format
+msgid ""
+"This document defines our <emphasis>business process</emphasis> as a graph "
+"of nodes. This is the most trivial possible business process: there is one "
+"<emphasis>task</emphasis> to be performed, and when that task is complete, "
+"the business process ends."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:619
+#, no-c-format
+msgid ""
+"The first JavaBean handles the login screen <literal>login.jsp</literal>. "
+"Its job is just to initialize the jBPM actor id using the <literal>actor</"
+"literal> component. (In a real application, it would also need to "
+"authenticate the user.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:622
+#, no-c-format
+msgid ""
+"@Name(\"login\")\n"
+"public class Login {\n"
+"   \n"
+"   @In\n"
+"   private Actor actor;\n"
+"   \n"
+"   private String user;\n"
+"\n"
+"   public String getUser() {\n"
+"      return user;\n"
+"   }\n"
+"\n"
+"   public void setUser(String user) {\n"
+"      this.user = user;\n"
+"   }\n"
+"   \n"
+"   public String login()\n"
+"   {\n"
+"      actor.setId(user);\n"
+"      return \"/todo.jsp\";\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:623
+#, no-c-format
+msgid ""
+"Here we see the use of <literal>@In</literal> to inject the built-in "
+"<literal>Actor</literal> component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:626
+#, no-c-format
+msgid "The JSP itself is trivial:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:629
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"&#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"&#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Login&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Login&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    &lt;h:form&gt;\n"
+"      &lt;div&gt;\n"
+"        &lt;h:inputText value=\"#{login.user}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Login\" action=\"#{login.login}\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"    &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:630
+#, no-c-format
+msgid ""
+"The second JavaBean is responsible for starting business process instances, "
+"and ending tasks."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:639
+#, no-c-format
+msgid ""
+"@Name(\"todoList\")\n"
+"public class TodoList {\n"
+"   \n"
+"   private String description;\n"
+"   \n"
+"   public String getDescription()\n"
+"   {\n"
+"      return description;\n"
+"   }\n"
+"\n"
+"   public void setDescription(String description) {\n"
+"      this.description = description;\n"
+"   }\n"
+"   \n"
+"   @CreateProcess(definition=\"todo\")\n"
+"   public void createTodo() {}\n"
+"   \n"
+"   @StartTask @EndTask\n"
+"   public void done() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:642
+#, no-c-format
+msgid ""
+"The description property accepts user input form the JSP page, and exposes "
+"it to the process definition, allowing the task description to be set."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:647
+#, no-c-format
+msgid ""
+"The Seam <literal>@CreateProcess</literal> annotation creates a new jBPM "
+"process instance for the named process definition."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:652
+#, no-c-format
+msgid ""
+"The Seam <literal>@StartTask</literal> annotation starts work on a task. The "
+"<literal>@EndTask</literal> ends the task, and allows the business process "
+"execution to resume."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:659
+#, no-c-format
+msgid ""
+"In a more realistic example, <literal>@StartTask</literal> and "
+"<literal>@EndTask</literal> would not appear on the same method, because "
+"there is usually work to be done using the application in order to complete "
+"the task."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:662
+#, no-c-format
+msgid "Finally, the meat of the application is in <literal>todo.jsp</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:665
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://jboss.com/products/seam/taglib\" prefix=\"s\" "
+"&#37;&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Todo List&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Todo List&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"   &lt;h:form id=\"list\"&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:outputText value=\"There are no todo items.\" rendered=\"#"
+"{empty \n"
+"             taskInstanceList}\"/&gt;\n"
+"         &lt;h:dataTable value=\"#{taskInstanceList}\" var=\"task\" rendered="
+"\"#{not empty taskInstanceList}\"&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Description\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.description}\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Created\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:outputText value=\"#{task.taskMgmtInstance."
+"processInstance.start}\"&gt;\n"
+"                    &lt;f:convertDateTime type=\"date\"/&gt;\n"
+"                &lt;/h:outputText&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Priority\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.priority}\" style=\"width: 30"
+"\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Due Date\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.dueDate}\" style=\"width: 100"
+"\"&gt;\n"
+"                    &lt;f:convertDateTime type=\"date\" dateStyle=\"short\"/"
+"&gt;\n"
+"                &lt;/h:inputText&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;s:button value=\"Done\" action=\"#{todoList.done}\" "
+"taskInstance=\"#{task}\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"         &lt;/h:dataTable&gt;\n"
+"      &lt;/div&gt;\n"
+"      &lt;div&gt;\n"
+"      &lt;h:messages/&gt;\n"
+"      &lt;/div&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:commandButton value=\"Update Items\" action=\"update\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"   &lt;h:form id=\"new\"&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:inputText value=\"#{todoList.description}\"/&gt;\n"
+"         &lt;h:commandButton value=\"Create New Item\" action=\"#{todoList."
+"createTodo}\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:666
+#, no-c-format
+msgid "Let's take this one piece at a time."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:669
+#, no-c-format
+msgid ""
+"The page renders a list of tasks, which it gets from a built-in Seam "
+"component named <literal>taskInstanceList</literal>. The list is defined "
+"inside a JSF form."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:672
+#, no-c-format
+msgid ""
+"&lt;h:form id=\"list\"&gt;\n"
+"   &lt;div&gt;\n"
+"      &lt;h:outputText value=\"There are no todo items.\" rendered=\"#{empty "
+"taskInstanceList}\"/&gt;\n"
+"      &lt;h:dataTable value=\"#{taskInstanceList}\" var=\"task\" rendered=\"#"
+"{not empty taskInstanceList}\"&gt;\n"
+"         ...\n"
+"      &lt;/h:dataTable&gt;\n"
+"   &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:673
+#, no-c-format
+msgid ""
+"Each element of the list is an instance of the jBPM class "
+"<literal>TaskInstance</literal>. The following code simply displays the "
+"interesting properties of each task in the list. For the description, "
+"priority and due date, we use input controls, to allow the user to update "
+"these values."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:676
+#, no-c-format
+msgid ""
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"       &lt;h:outputText value=\"Description\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.description}\"/&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Created\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:outputText value=\"#{task.taskMgmtInstance.processInstance.start}"
+"\"&gt;\n"
+"        &lt;f:convertDateTime type=\"date\"/&gt;\n"
+"    &lt;/h:outputText&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Priority\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.priority}\" style=\"width: 30\"/&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Due Date\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.dueDate}\" style=\"width: 100\"&gt;\n"
+"        &lt;f:convertDateTime type=\"date\" dateStyle=\"short\"/&gt;\n"
+"    &lt;/h:inputText&gt;\n"
+"&lt;/h:column&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:677
+#, no-c-format
+msgid ""
+"This button ends the task by calling the action method annotated "
+"<literal>@StartTask @EndTask</literal>. It passes the task id to Seam as a "
+"request parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:680
+#, no-c-format
+msgid ""
+"&lt;h:column&gt;\n"
+"    &lt;s:button value=\"Done\" action=\"#{todoList.done}\" taskInstance=\"#"
+"{task}\"/&gt;\n"
+"&lt;/h:column&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:681
+#, no-c-format
+msgid ""
+"(Note that this is using a Seam <literal>&lt;s:button&gt;</literal> JSF "
+"control from the <literal>seam-ui.jar</literal> package.)"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:684
+#, no-c-format
+msgid ""
+"This button is used to update the properties of the tasks. When the form is "
+"submitted, Seam and jBPM will make any changes to the tasks persistent. "
+"There is no need for any action listener method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:687
+#, no-c-format
+msgid "&lt;h:commandButton value=\"Update Items\" action=\"update\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:688
+#, no-c-format
+msgid ""
+"A second form on the page is used to create new items, by calling the action "
+"method annotated <literal>@CreateProcess</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:691
+#, no-c-format
+msgid ""
+"&lt;h:form id=\"new\"&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:inputText value=\"#{todoList.description}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Create New Item\" action=\"#{todoList."
+"createTodo}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:692
+#, no-c-format
+msgid ""
+"There are several other files needed for the example, but they are just "
+"standard jBPM and Seam configuration and not very interesting."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:699 Tutorial.xml:814 Tutorial.xml:1157 Tutorial.xml:1178
+#: Tutorial.xml:1191
+#, no-c-format
+msgid "TODO"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:707
+#, no-c-format
+msgid "Seam pageflow: the numberguess example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:708
+#, no-c-format
+msgid ""
+"For Seam applications with relatively freeform (ad hoc) navigation, JSF/Seam "
+"navigation rules are a perfectly good way to define the page flow. For "
+"applications with a more constrained style of navigation, especially for "
+"user interfaces which are more stateful, navigation rules make it difficult "
+"to really understand the flow of the system. To understand the flow, you "
+"need to piece it together from the view pages, the actions and the "
+"navigation rules."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:711
+#, no-c-format
+msgid ""
+"Seam allows you to use a jPDL process definition to define pageflow. The "
+"simple number guessing example shows how this is done."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:724
+#, no-c-format
+msgid ""
+"The example is implemented using one JavaBean, three JSP pages and a jPDL "
+"pageflow definition. Let's begin with the pageflow:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:734
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"numberGuess\"&gt;\n"
+"   \n"
+"   &lt;start-page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"          &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"      &lt;/transition&gt;\n"
+"   &lt;/start-page&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess."
+"correctGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateRemainingGuesses\" expression=\"#{numberGuess."
+"lastGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"lose\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"displayGuess\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"lose\" view-id=\"/lose.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:737
+#, no-c-format
+msgid ""
+"The <literal>&lt;page&gt;</literal> element defines a wait state where the "
+"system displays a particular JSF view and waits for user input. The "
+"<literal>view-id</literal> is the same JSF view id used in plain JSF "
+"navigation rules. The <literal>redirect</literal> attribute tells Seam to "
+"use post-then-redirect when navigating to the page. (This results in "
+"friendly browser URLs.)"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:742
+#, no-c-format
+msgid ""
+"The <literal>&lt;transition&gt;</literal> element names a JSF outcome. The "
+"transition is triggered when a JSF action results in that outcome. Execution "
+"will then proceed to the next node of the pageflow graph, after invocation "
+"of any jBPM transition actions."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:747
+#, no-c-format
+msgid ""
+"A transition <literal>&lt;action&gt;</literal> is just like a JSF action, "
+"except that it occurs when a jBPM transition occurs. The transition action "
+"can invoke any Seam component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:752
+#, no-c-format
+msgid ""
+"A <literal>&lt;decision&gt;</literal> node branches the pageflow, and "
+"determines the next node to execute by evaluating a JSF EL expression."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:759
+#, no-c-format
+msgid "Here is what the pageflow looks like in the JBossIDE pageflow editor:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:770
+#, no-c-format
+msgid ""
+"Now that we have seen the pageflow, it is very, very easy to understand the "
+"rest of the application!"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:773
+#, no-c-format
+msgid ""
+"Here is the main page of the application, <literal>numberGuess.jsp</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:776
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"&#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"&#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Guess a number...&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Guess a number...&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    &lt;h:form&gt;\n"
+"        &lt;h:outputText value=\"Higher!\" rendered=\"#{numberGuess."
+"randomNumber&gt;numberGuess.currentGuess}\" /&gt;\n"
+"        &lt;h:outputText value=\"Lower!\" rendered=\"#{numberGuess."
+"randomNumber&lt;numberGuess.currentGuess}\" /&gt;\n"
+"        &lt;br /&gt;\n"
+"        I'm thinking of a number between &lt;h:outputText value=\"#"
+"{numberGuess.smallest}\" /&gt; and \n"
+"        &lt;h:outputText value=\"#{numberGuess.biggest}\" /&gt;. You have \n"
+"        &lt;h:outputText value=\"#{numberGuess.remainingGuesses}\" /&gt; "
+"guesses.\n"
+"        &lt;br /&gt;\n"
+"        Your guess: \n"
+"        &lt;h:inputText value=\"#{numberGuess.currentGuess}\" id=\"guess\" "
+"required=\"true\"&gt;\n"
+"            &lt;f:validateLongRange\n"
+"                maximum=\"#{numberGuess.biggest}\" \n"
+"                minimum=\"#{numberGuess.smallest}\"/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"        &lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"guess"
+"\" /&gt;\n"
+"        &lt;br/&gt;\n"
+"        &lt;h:message for=\"guess\" style=\"color: red\"/&gt;\n"
+"    &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:777
+#, no-c-format
+msgid ""
+"Notice how the command button names the <literal>guess</literal> transition "
+"instead of calling an action directly."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:780
+#, no-c-format
+msgid "The <literal>win.jsp</literal> page is predictable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:783
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"&#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"&#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;You won!&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;You won!&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    Yes, the answer was &lt;h:outputText value=\"#{numberGuess.currentGuess}"
+"\" /&gt;.\n"
+"    It took you &lt;h:outputText value=\"#{numberGuess.guessCount}\" /&gt; "
+"guesses.\n"
+"    Would you like to &lt;a href=\"numberGuess.seam\"&gt;play again&lt;/"
+"a&gt;?\n"
+"  &lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:784
+#, no-c-format
+msgid ""
+"As is <literal>lose.jsp</literal> (which I can't be bothered copy/pasting). "
+"Finally, the JavaBean Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:792
+#, no-c-format
+msgid ""
+"@Name(\"numberGuess\")\n"
+"@Scope(ScopeType.CONVERSATION)\n"
+"public class NumberGuess {\n"
+"   \n"
+"   private int randomNumber;\n"
+"   private Integer currentGuess;\n"
+"   private int biggest;\n"
+"   private int smallest;\n"
+"   private int guessCount;\n"
+"   private int maxGuesses;\n"
+"   \n"
+"   @Create \n"
+"   @Begin(pageflow=\"numberGuess\")\n"
+"   public void begin()\n"
+"   {\n"
+"      randomNumber = new Random().nextInt(100);\n"
+"      guessCount = 0;\n"
+"      biggest = 100;\n"
+"      smallest = 1;\n"
+"   }\n"
+"   \n"
+"   public void setCurrentGuess(Integer guess)\n"
+"   {\n"
+"      this.currentGuess = guess;\n"
+"   }\n"
+"   \n"
+"   public Integer getCurrentGuess()\n"
+"   {\n"
+"      return currentGuess;\n"
+"   }\n"
+"   \n"
+"   public void guess()\n"
+"   {\n"
+"      if (currentGuess&gt;randomNumber)\n"
+"      {\n"
+"         biggest = currentGuess - 1;\n"
+"      }\n"
+"      if (currentGuess&lt;randomNumber)\n"
+"      {\n"
+"         smallest = currentGuess + 1;\n"
+"      }\n"
+"      guessCount ++;\n"
+"   }\n"
+"   \n"
+"   public boolean isCorrectGuess()\n"
+"   {\n"
+"      return currentGuess==randomNumber;\n"
+"   }\n"
+"   \n"
+"   public int getBiggest()\n"
+"   {\n"
+"      return biggest;\n"
+"   }\n"
+"   \n"
+"   public int getSmallest()\n"
+"   {\n"
+"      return smallest;\n"
+"   }\n"
+"   \n"
+"   public int getGuessCount()\n"
+"   {\n"
+"      return guessCount;\n"
+"   }\n"
+"   \n"
+"   public boolean isLastGuess()\n"
+"   {\n"
+"      return guessCount==maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getRemainingGuesses() {\n"
+"      return maxGuesses-guessCount;\n"
+"   }\n"
+"\n"
+"   public void setMaxGuesses(int maxGuesses) {\n"
+"      this.maxGuesses = maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getMaxGuesses() {\n"
+"      return maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getRandomNumber() {\n"
+"      return randomNumber;\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:795
+#, no-c-format
+msgid ""
+"The first time a JSP page asks for a <literal>numberGuess</literal> "
+"component, Seam will create a new one for it, and the <literal>@Create</"
+"literal> method will be invoked, allowing the component to initialize itself."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:800
+#, no-c-format
+msgid ""
+"The <literal>@Begin</literal> annotation starts a Seam "
+"<emphasis>conversation</emphasis> (much more about that later), and "
+"specifies the pageflow definition to use for the conversation's page flow."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:807
+#, no-c-format
+msgid ""
+"As you can see, this Seam component is pure business logic! It doesn't need "
+"to know anything at all about the user interaction flow. This makes the "
+"component potentially more reuseable."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:822
+#, no-c-format
+msgid "A complete Seam application: the Hotel Booking example"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:824
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:825
+#, no-c-format
+msgid ""
+"The booking application is a complete hotel room reservation system "
+"incorporating the following features:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:830
+#, no-c-format
+msgid "User registration"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:835
+#, no-c-format
+msgid "Login"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:840
+#, no-c-format
+msgid "Logout"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:845
+#, no-c-format
+msgid "Set password"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:850
+#, no-c-format
+msgid "Hotel search"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:855
+#, no-c-format
+msgid "Hotel selection"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:860
+#, no-c-format
+msgid "Room reservation"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:865
+#, no-c-format
+msgid "Reservation confirmation"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:870
+#, no-c-format
+msgid "Existing reservation list"
+msgstr ""
+
+#. Tag: screeninfo
+#: Tutorial.xml:875
+#, no-c-format
+msgid "Booking example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:883
+#, no-c-format
+msgid ""
+"The booking application uses JSF, EJB 3.0 and Seam, together with Facelets "
+"for the view. There is also a port of this application to JSF, Facelets, "
+"Seam, JavaBeans and Hibernate3."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:886
+#, no-c-format
+msgid ""
+"One of the things you'll notice if you play with this application for long "
+"enough is that it is extremely <emphasis>robust</emphasis>. You can play "
+"with back buttons and browser refresh and opening multiple windows and "
+"entering nonsensical data as much as you like and you will find it very "
+"difficult to make the application crash. You might think that we spent weeks "
+"testing and fixing bugs to achive this. Actually, this is not the case. Seam "
+"was designed to make it very straightforward to build robust web "
+"applications and a lot of robustness that you are probably used to having to "
+"code yourself comes naturally and automatically with Seam."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:889
+#, no-c-format
+msgid ""
+"As you browse the sourcecode of the example application, and learn how the "
+"application works, observe how the declarative state management and "
+"integrated validation has been used to achieve this robustness."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:895
+#, no-c-format
+msgid "Overview of the booking example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:896
+#, no-c-format
+msgid ""
+"The project structure is identical to the previous one, to install and "
+"deploy this application, please refer to <xref linkend=\"Seam_Tutorial-"
+"Try_the_examples\"/>. Once you've successfully started the application, you "
+"can access it by pointing your browser to <ulink url=\"http://localhost:8080/"
+"seam-booking/\"><literal>http://localhost:8080/seam-booking/</literal></"
+"ulink>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:899
+#, no-c-format
+msgid ""
+"Just ten classes (plus six session beans local interfaces and 1 annotation "
+"interface) where used to implement this application. Six session bean action "
+"listeners contain all the business logic for the listed features."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:904
+#, no-c-format
+msgid ""
+"<literal>BookingListAction</literal> retrieves existing bookings for the "
+"currently logged in user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:907
+#, no-c-format
+msgid ""
+"<literal>ChangePasswordAction</literal> updates the password of the "
+"currently logged in user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:910
+#, no-c-format
+msgid ""
+"<literal>HotelBookingAction</literal> implements the core functionality of "
+"the application: hotel room searching, selection, booking and booking "
+"confirmation. This functionality is implemented as a <emphasis>conversation</"
+"emphasis>, so this is the most interesting class in the application."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:913
+#, no-c-format
+msgid ""
+"<literal>LoginAction</literal> validates the login details and retrieves the "
+"logged in user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:916
+#, no-c-format
+msgid "<literal>LogoutAction</literal> ends the login session."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:919
+#, no-c-format
+msgid "<literal>RegisterAction</literal> registers a new system user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:922
+#, no-c-format
+msgid "Three entity beans implement the application's persistent domain model."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:927
+#, no-c-format
+msgid "<literal>Hotel</literal> is an entity bean that represent a hotel"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:930
+#, no-c-format
+msgid ""
+"<literal>Booking</literal> is an entity bean that represents an existing "
+"booking"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:933
+#, no-c-format
+msgid ""
+"<literal>User</literal> is an entity bean to represents a user who can make "
+"hotel bookings"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:936
+#, no-c-format
+msgid ""
+"Finally, the <literal>LoggedIn</literal> annotation and the "
+"<literal>LoggedInInterceptor</literal> are used to protect actions that "
+"require a logged in user."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:942
+#, no-c-format
+msgid "Understanding Seam conversations"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:943
+#, no-c-format
+msgid ""
+"We encourage you browse the sourcecode at your pleasure. In this tutorial "
+"we'll concentrate upon one particular piece of functionality: hotel search, "
+"selection, booking and confirmation. From the point of view of the user, "
+"everything from selecting a hotel to confirming a booking is one continuous "
+"unit of work, a <emphasis>conversation</emphasis>. Searching, however, is "
+"<emphasis>not</emphasis> part of the conversation. The user can select "
+"multiple hotels from the same search results page, in different browser tabs."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:946
+#, no-c-format
+msgid ""
+"Most web application architectures have no first class construct to "
+"represent a conversation. This causes enormous problems managing state "
+"associated with the conversation. Usually, Java web applications use a "
+"combination of two techniques: first, some state is thrown into the "
+"<literal>HttpSession</literal>; second, persistable state is flushed to the "
+"database after every request, and reconstructed from the database at the "
+"beginning of each new request."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:949
+#, no-c-format
+msgid ""
+"Since the database is the least scalable tier, this often results in an "
+"utterly unacceptable lack of scalability. Added latency is also a problem, "
+"due to the extra traffic to and from the database on every request. To "
+"reduce this redundant traffic, Java applications often introduce a data "
+"(second-level) cache that keeps commonly accessed data between requests. "
+"This cache is necessarily inefficient, because invalidation is based upon an "
+"LRU policy instead of being based upon when the user has finished working "
+"with the data. Furthermore, because the cache is shared between many "
+"concurrent transactions, we've introduced a whole raft of problem's "
+"associated with keeping the cached state consistent with the database."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:952
+#, no-c-format
+msgid ""
+"Now consider the state held in the <literal>HttpSession</literal>. By very "
+"careful programming, we might be able to control the size of the session "
+"data. This is a lot more difficult than it sounds, since web browsers permit "
+"ad hoc non-linear navigation. But suppose we suddenly discover a system "
+"requirement that says that a user is allowed to have <emphasis>mutiple "
+"concurrent conversations</emphasis>, halfway through the development of the "
+"system (this has happened to me). Developing mechanisms to isolate session "
+"state associated with different concurrent conversations, and incorporating "
+"failsafes to ensure that conversation state is destroyed when the user "
+"aborts one of the conversations by closing a browser window or tab is not "
+"for the faint hearted (I've implemented this stuff twice so far, once for a "
+"client application, once for Seam, but I'm famously psychotic)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:955
+#, no-c-format
+msgid "Now there is a better way."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:958
+#, no-c-format
+msgid ""
+"Seam introduces the <emphasis>conversation context</emphasis> as a first "
+"class construct. You can safely keep conversational state in this context, "
+"and be assured that it will have a well-defined lifecycle. Even better, you "
+"won't need to be continually pushing data back and forth between the "
+"application server and the database, since the conversation context is a "
+"natural cache of data that the user is currently working with."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:961
+#, no-c-format
+msgid ""
+"Usually, the components we keep in the conversation context are stateful "
+"session beans. (We can also keep entity beans and JavaBeans in the "
+"conversation context.) There is an ancient canard in the Java community that "
+"stateful session beans are a scalability killer. This may have been true in "
+"1998 when WebFoobar 1.0 was released. It is no longer true today. "
+"Application servers like JBoss 4.0 have extremely sophisticated mechanisms "
+"for stateful session bean state replication. (For example, the JBoss EJB3 "
+"container performs fine-grained replication, replicating only those bean "
+"attribute values which actually changed.) Note that all the traditional "
+"technical arguments for why stateful beans are inefficient apply equally to "
+"the <literal>HttpSession</literal>, so the practice of shifting state from "
+"business tier stateful session bean components to the web session to try and "
+"improve performance is unbelievably misguided. It is certainly possible to "
+"write unscalable applications using stateful session beans, by using "
+"stateful beans incorrectly, or by using them for the wrong thing. But that "
+"doesn't mean you should <emphasis>never</emphasis> use them. Anyway, Seam "
+"guides you toward a safe usage model. Welcome to 2005."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:964
+#, no-c-format
+msgid "OK, I'll stop ranting now, and get back to the tutorial."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:967
+#, no-c-format
+msgid ""
+"The booking example application shows how stateful components with different "
+"scopes can collaborate together to achieve complex behaviors. The main page "
+"of the booking application allows the user to search for hotels. The search "
+"results are kept in the Seam session scope. When the user navigates to one "
+"of these hotels, a conversation begins, and a conversation scoped component "
+"calls back to the session scoped component to retrieve the selected hotel."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:970
+#, no-c-format
+msgid ""
+"The booking example also demonstrates the use of Ajax4JSF to implement rich "
+"client behavior without the use of handwritten JavaScript."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:973
+#, no-c-format
+msgid ""
+"The search functionality is implemented using a session-scope stateful "
+"session bean, similar to the one we saw in the message list example above."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:983
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"hotelSearch\")\n"
+"@Scope(ScopeType.SESSION)\n"
+"@LoggedIn\n"
+"public class HotelSearchingAction implements HotelSearching\n"
+"{\n"
+"   \n"
+"   @PersistenceContext\n"
+"   private EntityManager em;\n"
+"   \n"
+"   private String searchString;\n"
+"   private int pageSize = 10;\n"
+"   private int page;\n"
+"   \n"
+"   @DataModel\n"
+"   private List&lt;Hotel&gt; hotels;\n"
+"   \n"
+"   public String find()\n"
+"   {\n"
+"      page = 0;\n"
+"      queryHotels();   \n"
+"      return \"main\";\n"
+"   }\n"
+"\n"
+"   public String nextPage()\n"
+"   {\n"
+"      page++;\n"
+"      queryHotels();\n"
+"      return \"main\";\n"
+"   }\n"
+"      \n"
+"   private void queryHotels()\n"
+"   {\n"
+"      String searchPattern = searchString==null ? \"&#37;\" : '&#37;' + \n"
+"          searchString.toLowerCase().replace('*', '&#37;') + '&#37;';\n"
+"      hotels = em.createQuery(\"select h from Hotel h where lower(h.name) "
+"like\n"
+"          :search or lower(h.city) like :search \n"
+"          or lower(h.zip) like :search or lower(h.address) like :search\")\n"
+"            .setParameter(\"search\", searchPattern)\n"
+"            .setMaxResults(pageSize)\n"
+"            .setFirstResult( page * pageSize )\n"
+"            .getResultList();\n"
+"   }\n"
+"   \n"
+"   public boolean isNextPageAvailable()\n"
+"   {\n"
+"      return hotels!=null &amp;&amp; hotels.size()==pageSize;\n"
+"   }\n"
+"   \n"
+"   public int getPageSize() {\n"
+"      return pageSize;\n"
+"   }\n"
+"\n"
+"   public void setPageSize(int pageSize) {\n"
+"      this.pageSize = pageSize;\n"
+"   }\n"
+"\n"
+"   public String getSearchString()\n"
+"   {\n"
+"      return searchString;\n"
+"   }\n"
+"\n"
+"   public void setSearchString(String searchString)\n"
+"   {\n"
+"      this.searchString = searchString;\n"
+"   }\n"
+"   \n"
+"   @Destroy @Remove\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:986
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Stateful</literal> annotation identifies this "
+"class as a stateful session bean. Stateful session beans are scoped to the "
+"conversation context by default."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:991
+#, no-c-format
+msgid ""
+"The <literal>@LoggedIn</literal> annotation applies a custom Seam "
+"interceptor to the component. This works because <literal>@LoggedIn</"
+"literal> is marked with an <literal>@Interceptor</literal> meta-annotation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:996
+#, no-c-format
+msgid ""
+"The <link linkend=\"datamodel-annotation\"><literal>@DataModel</literal></"
+"link> annotation exposes a <literal>List</literal> as a JSF "
+"<literal>ListDataModel</literal>. This makes it easy to implement clickable "
+"lists for search screens. In this case, the list of hotels is exposed to the "
+"page as a <literal>ListDataModel</literal> in the conversation variable "
+"named <literal>hotels</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1001
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Remove</literal> annotation specifies that a "
+"stateful session bean should be removed and its state destroyed after "
+"invocation of the annotated method. In Seam, all stateful session beans "
+"should define a method marked <literal>@Destroy @Remove</literal>. This is "
+"the EJB remove method that will be called when Seam destroys the session "
+"context. Actually, the <link linkend=\"destroy-annotation"
+"\"><literal>@Destroy</literal></link> annotation is of more general "
+"usefulness, since it can be used for any kind of cleanup that should happen "
+"when any Seam context ends. If you don't have an <literal>@Destroy @Remove</"
+"literal> method, state will leak and you will suffer performance problems."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1008
+#, no-c-format
+msgid ""
+"The main page of the application is a Facelets page. Let's look at the "
+"fragment which relates to searching for hotels:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1018
+#, no-c-format
+msgid ""
+"&lt;div class=\"section\"&gt;\n"
+"&lt;h:form&gt;\n"
+"  \n"
+"  &lt;span class=\"errors\"&gt;\n"
+"    &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"  &lt;/span&gt;\n"
+"    \n"
+"  &lt;h1&gt;Search Hotels&lt;/h1&gt;\n"
+"  &lt;fieldset&gt; \n"
+"     &lt;h:inputText value=\"#{hotelSearch.searchString}\" style=\"width: "
+"165px;\"&gt;\n"
+"        &lt;a:support event=\"onkeyup\" actionListener=\"#{hotelSearch.find}"
+"\" \n"
+"                   reRender=\"searchResults\" /&gt;\n"
+"     &lt;/h:inputText&gt;\n"
+"     &amp;#160;\n"
+"     &lt;a:commandButton value=\"Find Hotels\" action=\"#{hotelSearch.find}"
+"\" \n"
+"                      styleClass=\"button\" reRender=\"searchResults\"/&gt;\n"
+"     &amp;#160;\n"
+"     &lt;a:status&gt;\n"
+"        &lt;f:facet name=\"start\"&gt;\n"
+"           &lt;h:graphicImage value=\"/img/spinner.gif\"/&gt;\n"
+"        &lt;/f:facet&gt;\n"
+"     &lt;/a:status&gt;\n"
+"     &lt;br/&gt;\n"
+"     &lt;h:outputLabel for=\"pageSize\"&gt;Maximum results:&lt;/h:"
+"outputLabel&gt;&amp;#160;\n"
+"     &lt;h:selectOneMenu value=\"#{hotelSearch.pageSize}\" id=\"pageSize"
+"\"&gt;\n"
+"        &lt;f:selectItem itemLabel=\"5\" itemValue=\"5\"/&gt;\n"
+"        &lt;f:selectItem itemLabel=\"10\" itemValue=\"10\"/&gt;\n"
+"        &lt;f:selectItem itemLabel=\"20\" itemValue=\"20\"/&gt;\n"
+"     &lt;/h:selectOneMenu&gt;\n"
+"  &lt;/fieldset&gt;\n"
+"    \n"
+"&lt;/h:form&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;a:outputPanel id=\"searchResults\"&gt;\n"
+"  &lt;div class=\"section\"&gt;\n"
+"  &lt;h:outputText value=\"No Hotels Found\" \n"
+"                rendered=\"#{hotels != null and hotels.rowCount==0}\"/&gt;\n"
+"  &lt;h:dataTable value=\"#{hotels}\" var=\"hot\" rendered=\"#{hotels."
+"rowCount&gt;0}\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Name&lt;/f:facet&gt;\n"
+"      #{hot.name}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Address&lt;/f:facet&gt;\n"
+"      #{hot.address}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;City, State&lt;/f:facet&gt;\n"
+"      #{hot.city}, #{hot.state}, #{hot.country}\n"
+"    &lt;/h:column&gt; \n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Zip&lt;/f:facet&gt;\n"
+"      #{hot.zip}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"      &lt;s:link value=\"View Hotel\" action=\"#{hotelBooking.selectHotel"
+"(hot)}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"  &lt;/h:dataTable&gt;\n"
+"  &lt;s:link value=\"More results\" action=\"#{hotelSearch.nextPage}\" \n"
+"          rendered=\"#{hotelSearch.nextPageAvailable}\"/&gt;\n"
+"  &lt;/div&gt;\n"
+"&lt;/a:outputPanel&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1021
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:support&gt;</literal> tag allows a JSF action "
+"event listener to be called by asynchronous <literal>XMLHttpRequest</"
+"literal> when a JavaScript event like <literal>onkeyup</literal> occurs. "
+"Even better, the <literal>reRender</literal> attribute lets us render a "
+"fragment of the JSF page and perform a partial page update when the "
+"asynchronous response is received."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1026
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:status&gt;</literal> tag lets us display a "
+"cheesy annimated image while we wait for asynchronous requests to return."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1031
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:outputPanel&gt;</literal> tag defines a region "
+"of the page which can be re-rendered by an asynchronous request."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1036
+#, no-c-format
+msgid ""
+"The Seam <literal>&lt;s:link&gt;</literal> tag lets us attach a JSF action "
+"listener to an ordinary (non-JavaScript) HTML link. The advantage of this "
+"over the standard JSF <literal>&lt;h:commandLink&gt;</literal> is that it "
+"preserves the operation of \"open in new window\" and \"open in new tab\". "
+"Also notice that we use a method binding with a parameter: <literal>#"
+"{hotelBooking.selectHotel(hot)}</literal>. This is not possible in the "
+"standard Unified EL, but Seam provides an extension to the EL that lets you "
+"use parameters on any method binding expression."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1043
+#, no-c-format
+msgid ""
+"This page displays the search results dynamically as we type, and lets us "
+"choose a hotel and pass it to the <literal>selectHotel()</literal> method of "
+"the <literal>HotelBookingAction</literal>, which is where the "
+"<emphasis>really</emphasis> interesting stuff is going to happen."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1046
+#, no-c-format
+msgid ""
+"Now lets see how the booking example application uses a conversation-scoped "
+"stateful session bean to achieve a natural cache of persistent data related "
+"to the conversation. The following code example is pretty long. But if you "
+"think of it as a list of scripted actions that implement the various steps "
+"of the conversation, it's understandable. Read the class from top to bottom, "
+"as if it were a story."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1057
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"hotelBooking\")\n"
+"@LoggedIn\n"
+"public class HotelBookingAction implements HotelBooking\n"
+"{\n"
+"   \n"
+"   @PersistenceContext(type=EXTENDED)\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @In \n"
+"   private User user;\n"
+"   \n"
+"   @In(required=false) @Out\n"
+"   private Hotel hotel;\n"
+"   \n"
+"   @In(required=false) \n"
+"   @Out(required=false)\n"
+"   private Booking booking;\n"
+"     \n"
+"   @In\n"
+"   private FacesMessages facesMessages;\n"
+"      \n"
+"   @In\n"
+"   private Events events;\n"
+"   \n"
+"   @Logger \n"
+"   private Log log;\n"
+"   \n"
+"   @Begin\n"
+"   public String selectHotel(Hotel selectedHotel)\n"
+"   {\n"
+"      hotel = em.merge(selectedHotel);\n"
+"      return \"hotel\";\n"
+"   }\n"
+"   \n"
+"   public String bookHotel()\n"
+"   {      \n"
+"      booking = new Booking(hotel, user);\n"
+"      Calendar calendar = Calendar.getInstance();\n"
+"      booking.setCheckinDate( calendar.getTime() );\n"
+"      calendar.add(Calendar.DAY_OF_MONTH, 1);\n"
+"      booking.setCheckoutDate( calendar.getTime() );\n"
+"      \n"
+"      return \"book\";\n"
+"   }\n"
+"\n"
+"   public String setBookingDetails()\n"
+"   {\n"
+"      if (booking==null || hotel==null) return \"main\";\n"
+"      if ( !booking.getCheckinDate().before( booking.getCheckoutDate() ) )\n"
+"      {\n"
+"         facesMessages.add(\"Check out date must be later than check in date"
+"\");\n"
+"         return null;\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return \"confirm\";\n"
+"      }\n"
+"   }\n"
+"\n"
+"   @End\n"
+"   public String confirm()\n"
+"   {\n"
+"      if (booking==null || hotel==null) return \"main\";\n"
+"      em.persist(booking);\n"
+"      facesMessages.add\n"
+"          (\"Thank you, #{user.name}, your confimation number for #{hotel."
+"name} is #{booking.id}\");\n"
+"      log.info(\"New booking: #{booking.id} for #{user.username}\");\n"
+"      events.raiseEvent(\"bookingConfirmed\");\n"
+"      return \"confirmed\";\n"
+"   }\n"
+"   \n"
+"   @End\n"
+"   public String cancel()\n"
+"   {\n"
+"      return \"main\";\n"
+"   }\n"
+"   \n"
+"   @Destroy @Remove\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1060
+#, no-c-format
+msgid ""
+"This bean uses an EJB3 <emphasis>extended persistence context</emphasis>, so "
+"that any entity instances remain managed for the whole lifecycle of the "
+"stateful session bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1065
+#, no-c-format
+msgid ""
+"The <link linkend=\"out-annotation\"><literal>@Out</literal></link> "
+"annotation declares that an attribute value is <emphasis>outjected</"
+"emphasis> to a context variable after method invocations. In this case, the "
+"context variable named <literal>hotel</literal> will be set to the value of "
+"the <literal>hotel</literal> instance variable after every action listener "
+"invocation completes."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1070
+#, no-c-format
+msgid ""
+"The <link linkend=\"begin-annotation\"><literal>@Begin</literal></link> "
+"annotation specifies that the annotated method begins a <emphasis>long-"
+"running conversation</emphasis>, so the current conversation context will "
+"not be destroyed at the end of the request. Instead, it will be reassociated "
+"with every request from the current window, and destroyed either by timeout "
+"due to conversation inactivity or invocation of a matching <literal>@End</"
+"literal> method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1075
+#, no-c-format
+msgid ""
+"The <link linkend=\"end-annotation\"><literal>@End</literal></link> "
+"annotation specifies that the annotated method ends the current long-running "
+"conversation, so the current conversation context will be destroyed at the "
+"end of the request."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1080
+#, no-c-format
+msgid ""
+"This EJB remove method will be called when Seam destroys the conversation "
+"context. Don't ever forget to define this method!"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1087
+#, no-c-format
+msgid ""
+"<literal>HotelBookingAction</literal> contains all the action listener "
+"methods that implement selection, booking and booking confirmation, and "
+"holds state related to this work in its instance variables. We think you'll "
+"agree that this code is much cleaner and simpler than getting and setting "
+"<literal>HttpSession</literal> attributes."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1090
+#, no-c-format
+msgid ""
+"Even better, a user can have multiple isolated conversations per login "
+"session. Try it! Log in, run a search, and navigate to different hotel pages "
+"in multiple browser tabs. You'll be able to work on creating two different "
+"hotel reservations at the same time. If you leave any one conversation "
+"inactive for long enough, Seam will eventually time out that conversation "
+"and destroy its state. If, after ending a conversation, you backbutton to a "
+"page of that conversation and try to perform an action, Seam will detect "
+"that the conversation was already ended, and redirect you to the search page."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1096
+#, no-c-format
+msgid "The Seam UI control library"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1097
+#, no-c-format
+msgid ""
+"If you check inside the WAR file for the booking application, you'll find "
+"<literal>seam-ui.jar</literal> in the <literal>WEB-INF/lib</literal> "
+"directory. This package contains a number of JSF custom controls that "
+"integrate with Seam. The booking application uses the <literal>&lt;s:link&gt;"
+"</literal> control for navigation from the search screen to the hotel page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1100
+#, no-c-format
+msgid ""
+"&lt;s:link value=\"View Hotel\" action=\"#{hotelBooking.selectHotel}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1101
+#, no-c-format
+msgid ""
+"The use of <literal>&lt;s:link&gt;</literal> here allows us to attach an "
+"action listener to a HTML link without breaking the browser's \"open in new "
+"window\" feature. The standard JSF <literal>&lt;h:commandLink&gt;</literal> "
+"does not work with \"open in new window\". We'll see later that <literal>&lt;"
+"s:link&gt;</literal> also offers a number of other useful features, "
+"including conversation propagation rules."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1104
+#, no-c-format
+msgid ""
+"The booking application uses some other Seam and Ajax4JSF controls, "
+"especially on the <literal>/book.xhtml</literal> page. We won't get into the "
+"details of those controls here, but if you want to understand this code, "
+"please refer to the chapter covering Seam's functionality for JSF form "
+"validation."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1110
+#, no-c-format
+msgid "The Seam Debug Page"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1111
+#, no-c-format
+msgid ""
+"The WAR also includes <literal>seam-debug.jar</literal>. If this jar is "
+"deployed in <literal>WEB-INF/lib</literal>, along with the Facelets, and if "
+"you set the following Seam property in <literal>web.xml</literal> or "
+"<literal>seam.properties</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1114
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;org.jboss.seam.core.init.debug&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;true&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1115
+#, no-c-format
+msgid ""
+"Then the Seam debug page will be available. This page lets you browse and "
+"inspect the Seam components in any of the Seam contexts associated with your "
+"current login session. Just point your browser at <ulink url=\"http://"
+"localhost:8080/seam-booking/debug.seam\"><literal>http://localhost:8080/seam-"
+"booking/debug.seam</literal></ulink>."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1131
+#, no-c-format
+msgid "A complete application featuring Seam and jBPM: the DVD Store example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1132
+#, no-c-format
+msgid ""
+"The DVD Store demo application shows the practical usage of jBPM for both "
+"task management and pageflow."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1135
+#, no-c-format
+msgid ""
+"The user screens take advantage of a jPDL pageflow to implement searching "
+"and shopping cart functionality."
+msgstr ""
+
+#. Tag: screeninfo
+#: Tutorial.xml:1138 Tutorial.xml:1149 Tutorial.xml:1170
+#, no-c-format
+msgid "DVD Store example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1146
+#, no-c-format
+msgid ""
+"The administration screens take use jBPM to manage the approval and shipping "
+"cycle for orders. The business process may even be changed dynamically, by "
+"selecting a different process definition!"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1160
+#, no-c-format
+msgid "Look in the <literal>dvdstore</literal> directory."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1166
+#, no-c-format
+msgid ""
+"A complete application featuring Seam workspace management: the Issue "
+"Tracker example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1167
+#, no-c-format
+msgid ""
+"The Issue Tracker demo shows off Seam's workspace management functionality: "
+"the conversation switcher, conversation list and breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1181
+#, no-c-format
+msgid "Look in the <literal>issues</literal> directory."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1187
+#, no-c-format
+msgid "An example of Seam with Hibernate: the Hibernate Booking example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1188
+#, no-c-format
+msgid ""
+"The Hibernate Booking demo is a straight port of the Booking demo to an "
+"alternative architecture that uses Hibernate for persistence and JavaBeans "
+"instead of session beans."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1194
+#, no-c-format
+msgid "Look in the <literal>hibernate</literal> directory."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1200
+#, no-c-format
+msgid "A RESTful Seam application: the Blog example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1201
+#, no-c-format
+msgid ""
+"Seam makes it very easy to implement applications which keep state on the "
+"server-side. However, server-side state is not always appropriate, "
+"especially in for functionality that serves up <emphasis>content</emphasis>. "
+"For this kind of problem we often need to let the user bookmark pages and "
+"have a relatively stateless server, so that any page can be accessed at any "
+"time, via the bookmark. The Blog example shows how to a implement RESTful "
+"application using Seam. Every page of the application can be bookmarked, "
+"including the search results page."
+msgstr ""
+
+#. Tag: screeninfo
+#: Tutorial.xml:1204
+#, no-c-format
+msgid "Blog example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1212
+#, no-c-format
+msgid ""
+"The Blog example demonstrates the use of \"pull\"-style MVC, where instead "
+"of using action listener methods to retrieve data and prepare the data for "
+"the view, the view pulls data from components as it is being rendered."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1216
+#, no-c-format
+msgid "Using \"pull\"-style MVC"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1217
+#, no-c-format
+msgid ""
+"This snippet from the <literal>index.xhtml</literal> facelets page displays "
+"a list of recent blog entries:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1220
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{blog.recentBlogEntries}\" var=\"blogEntry\" rows="
+"\"3\"&gt;\n"
+"   &lt;h:column&gt;\n"
+"      &lt;div class=\"blogEntry\"&gt;\n"
+"         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"         &lt;div&gt;\n"
+"            &lt;h:outputText escape=\"false\" \n"
+"                  value=\"#{blogEntry.excerpt==null ? blogEntry.body : "
+"blogEntry.excerpt}\"/&gt;\n"
+"         &lt;/div&gt;\n"
+"         &lt;p&gt;\n"
+"            &lt;h:outputLink value=\"entry.seam\" rendered=\"#{blogEntry."
+"excerpt!=null}\"&gt;\n"
+"               &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/"
+"&gt;\n"
+"               Read more...\n"
+"            &lt;/h:outputLink&gt;\n"
+"         &lt;/p&gt;\n"
+"         &lt;p&gt;\n"
+"            [Posted on \n"
+"            &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"               &lt;f:convertDateTime timeZone=\"#{blog.timeZone}\" locale=\"#"
+"{blog.locale}\" \n"
+"                   type=\"both\"/&gt;\n"
+"            &lt;/h:outputText&gt;]\n"
+"            &amp;#160;\n"
+"            &lt;h:outputLink value=\"entry.seam\"&gt;[Link]\n"
+"               &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/"
+"&gt;\n"
+"            &lt;/h:outputLink&gt;\n"
+"         &lt;/p&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1221
+#, no-c-format
+msgid ""
+"If we navigate to this page from a bookmark, how does the data used by the "
+"<literal>&lt;h:dataTable&gt;</literal> actually get initialized? Well, what "
+"happens is that the <literal>Blog</literal> is retrieved lazily&mdash;"
+"\"pulled\"&mdash;when needed, by a Seam component named <literal>blog</"
+"literal>. This is the opposite flow of control to what is usual in "
+"traditional web action-based frameworks like Struts."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1229
+#, no-c-format
+msgid ""
+"@Name(\"blog\")\n"
+"@Scope(ScopeType.STATELESS)\n"
+"public class BlogService \n"
+"{\n"
+"   \n"
+"   @In\n"
+"   private EntityManager entityManager;\n"
+"  \n"
+"   @Unwrap\n"
+"   public Blog getBlog()\n"
+"   {\n"
+"      return (Blog) entityManager.createQuery(\"from Blog b left join fetch "
+"b.blogEntries\")\n"
+"            .setHint(\"org.hibernate.cacheable\", true)\n"
+"            .getSingleResult();\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1232
+#, no-c-format
+msgid ""
+"This component uses a <emphasis>seam-managed persistence context</emphasis>. "
+"Unlike the other examples we've seen, this persistence context is managed by "
+"Seam, instead of by the EJB3 container. The persistence context spans the "
+"entire web request, allowing us to avoid any exceptions that occur when "
+"accessing unfetched associations in the view."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1237
+#, no-c-format
+msgid ""
+"The <literal>@Unwrap</literal> annotation tells Seam to provide the return "
+"value of the method&mdash;the <literal>Blog</literal>&mdash;instead of the "
+"actual <literal>BlogService</literal> component to clients. This is the Seam "
+"<emphasis>manager component pattern</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1244
+#, no-c-format
+msgid ""
+"This is good so far, but what about bookmarking the result of form "
+"submissions, such as a search results page?"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1250
+#, no-c-format
+msgid "Bookmarkable search results page"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1251
+#, no-c-format
+msgid ""
+"The blog example has a tiny form in the top right of each page that allows "
+"the user to search for blog entries. This is defined in a file, "
+"<literal>menu.xhtml</literal>, included by the facelets template, "
+"<literal>template.xhtml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1254
+#, no-c-format
+msgid ""
+"&lt;div id=\"search\"&gt;\n"
+"   &lt;h:form&gt;\n"
+"      &lt;h:inputText value=\"#{searchAction.searchPattern}\"/&gt;\n"
+"      &lt;h:commandButton value=\"Search\" action=\"/search.xhtml\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1255
+#, no-c-format
+msgid ""
+"To implement a bookmarkable search results page, we need to perform a "
+"browser redirect after processing the search form submission. Because we "
+"used the JSF view id as the action outcome, Seam automatically redirects to "
+"the view id when the form is submitted. Alternatively, we could have defined "
+"a navigation rule like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1258
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"   &lt;navigation-case&gt;\n"
+"      &lt;from-outcome&gt;searchResults&lt;/from-outcome&gt;\n"
+"      &lt;to-view-id&gt;/search.xhtml&lt;/to-view-id&gt;\n"
+"      &lt;redirect/&gt;\n"
+"   &lt;/navigation-case&gt;\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1259
+#, no-c-format
+msgid "Then the form would have looked like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1262
+#, no-c-format
+msgid ""
+"&lt;div id=\"search\"&gt;\n"
+"   &lt;h:form&gt;\n"
+"      &lt;h:inputText value=\"#{searchAction.searchPattern}\"/&gt;\n"
+"      &lt;h:commandButton value=\"Search\" action=\"searchResults\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1263
+#, no-c-format
+msgid ""
+"But when we redirect, we need to include the values submitted with the form "
+"as request parameters, to get a bookmarkable URL like <literal>http://"
+"localhost:8080/seam-blog/search.seam?searchPattern=seam</literal>. JSF does "
+"not provide an easy way to do this, but Seam does. We use a Seam "
+"<emphasis>page parameter</emphasis>, defined in <literal>WEB-INF/pages.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1266
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   &lt;page view-id=\"/search.xhtml\"&gt;\n"
+"      &lt;param name=\"searchPattern\" value=\"#{searchService.searchPattern}"
+"\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1267
+#, no-c-format
+msgid ""
+"This tells Seam to include the value of <literal>#{searchService."
+"searchPattern}</literal> as a request parameter named "
+"<literal>searchPattern</literal> when redirecting to the page, and then re-"
+"apply the value of that parameter to the model before rendering the page."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1270
+#, no-c-format
+msgid "The redirect takes us to the <literal>search.xhtml</literal> page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1273
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{searchResults}\" var=\"blogEntry\"&gt;\n"
+"   &lt;h:column&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:outputLink value=\"entry.seam\"&gt;\n"
+"            &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"            #{blogEntry.title}\n"
+"         &lt;/h:outputLink&gt;\n"
+"         posted on \n"
+"         &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"            &lt;f:convertDateTime timeZone=\"#{blog.timeZone}\" locale=\"#"
+"{blog.locale}\" type=\"both\"/&gt;\n"
+"         &lt;/h:outputText&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1274
+#, no-c-format
+msgid ""
+"Which again uses \"pull\"-style MVC to retrieve the actual search results:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1277
+#, no-c-format
+msgid ""
+"@Name(\"searchService\")\n"
+"public class SearchService \n"
+"{\n"
+"   \n"
+"   @In\n"
+"   private EntityManager entityManager;\n"
+"   \n"
+"   private String searchPattern;\n"
+"   \n"
+"   @Factory(\"searchResults\")\n"
+"   public List&lt;BlogEntry&gt; getSearchResults()\n"
+"   {\n"
+"      if (searchPattern==null)\n"
+"      {\n"
+"         return null;\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return entityManager.createQuery(\"select be from BlogEntry be "
+"where lower(be.title)\n"
+"             like :searchPattern or lower(be.body) like :searchPattern \n"
+"             order by be.date desc\")\n"
+"               .setParameter( \"searchPattern\", getSqlSearchPattern() )\n"
+"               .setMaxResults(100)\n"
+"               .getResultList();\n"
+"      }\n"
+"   }\n"
+"\n"
+"   private String getSqlSearchPattern()\n"
+"   {\n"
+"      return searchPattern==null ? \"\" : '&#37;' + \n"
+"          searchPattern.toLowerCase().replace('*', '&#37;').replace('?', "
+"'_') + '&#37;';\n"
+"   }\n"
+"\n"
+"   public String getSearchPattern()\n"
+"   {\n"
+"      return searchPattern;\n"
+"   }\n"
+"\n"
+"   public void setSearchPattern(String searchPattern)\n"
+"   {\n"
+"      this.searchPattern = searchPattern;\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1282
+#, no-c-format
+msgid "Using \"push\"-style MVC in a RESTful application"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1283
+#, no-c-format
+msgid ""
+"Very occasionally, it makes more sense to use push-style MVC for processing "
+"RESTful pages, and so Seam provides the notion of a <emphasis>page action</"
+"emphasis>. The Blog example uses a page action for the blog entry page, "
+"<literal>entry.xhtml</literal>. Note that this is a little bit contrived, it "
+"would have been easier to use pull-style MVC here as well."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1286
+#, no-c-format
+msgid ""
+"The <literal>entryAction</literal> component works much like an action class "
+"in a traditional push-MVC action-oriented framework like Struts:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1289
+#, no-c-format
+msgid ""
+"@Name(\"entryAction\")\n"
+"@Scope(STATELESS)\n"
+"public class EntryAction\n"
+"{\n"
+"   @In(create=true) \n"
+"   private Blog blog;\n"
+"   \n"
+"   @Out\n"
+"   private BlogEntry blogEntry;\n"
+"   \n"
+"   public void loadBlogEntry(String id) throws EntryNotFoundException\n"
+"   {\n"
+"      blogEntry = blog.getBlogEntry(id);\n"
+"      if (blogEntry==null) throw new EntryNotFoundException(id);\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1290
+#, no-c-format
+msgid "Page actions are also declared in <literal>pages.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1293
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   ...\n"
+"\n"
+"   &lt;page view-id=\"/entry.xhtml\" action=\"#{entryAction.loadBlogEntry"
+"(blogEntry.id)}\"&gt;\n"
+"      &lt;param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"\n"
+"   &lt;page view-id=\"/post.xhtml\" action=\"#{loginAction.challenge}\"/"
+"&gt;\n"
+"\n"
+"   &lt;page view-id=\"*\" action=\"#{blog.hitCount.hit}\"/&gt;\n"
+"\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1294
+#, no-c-format
+msgid ""
+"Notice that the example is using page actions for some other "
+"functionality&mdash;the login challenge, and the pageview counter. Also "
+"notice the use of a parameter in the page action method binding. This is not "
+"a standard feature of JSF EL, but Seam lets you use it, not just for page "
+"actions, but also in JSF method bindings."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1297
+#, no-c-format
+msgid ""
+"When the <literal>entry.xhtml</literal> page is requested, Seam first binds "
+"the page parameter <literal>blogEntryId</literal> to the model, then runs "
+"the page action, which retrieves the needed data&mdash;the "
+"<literal>blogEntry</literal>&mdash;and places it in the Seam event context. "
+"Finally, the following is rendered:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1300
+#, no-c-format
+msgid ""
+"&lt;div class=\"blogEntry\"&gt;\n"
+"   &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"   &lt;div&gt;\n"
+"      &lt;h:outputText escape=\"false\" value=\"#{blogEntry.body}\"/&gt;\n"
+"   &lt;/div&gt;\n"
+"   &lt;p&gt;\n"
+"      [Posted on&amp;#160;\n"
+"      &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"         &lt;f:convertDateTime timezone=\"#{blog.timeZone}\" locale=\"#{blog."
+"locale}\" type=\"both\"/&gt;\n"
+"      &lt;/h:outputText&gt;]\n"
+"   &lt;/p&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1301
+#, no-c-format
+msgid ""
+"If the blog entry is not found in the database, the "
+"<literal>EntryNotFoundException</literal> exception is thrown. We want this "
+"exception to result in a 404 error, not a 505, so we annotate the exception "
+"class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1304
+#, no-c-format
+msgid ""
+"@ApplicationException(rollback=true)\n"
+"@HttpError(errorCode=HttpServletResponse.SC_NOT_FOUND)\n"
+"public class EntryNotFoundException extends Exception\n"
+"{\n"
+"   EntryNotFoundException(String id)\n"
+"   {\n"
+"      super(\"entry not found: \" + id);\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1305
+#, no-c-format
+msgid ""
+"An alternative implementation of the example does not use the parameter in "
+"the method binding:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1308
+#, no-c-format
+msgid ""
+"@Name(\"entryAction\")\n"
+"@Scope(STATELESS)\n"
+"public class EntryAction\n"
+"{\n"
+"   @In(create=true) \n"
+"   private Blog blog;\n"
+"   \n"
+"   @In @Out\n"
+"   private BlogEntry blogEntry;\n"
+"   \n"
+"   public void loadBlogEntry() throws EntryNotFoundException\n"
+"   {\n"
+"      blogEntry = blog.getBlogEntry( blogEntry.getId() );\n"
+"      if (blogEntry==null) throw new EntryNotFoundException(id);\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1309
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   ...\n"
+"\n"
+"   &lt;page view-id=\"/entry.xhtml\" action=\"#{entryAction.loadBlogEntry}"
+"\"&gt;\n"
+"      &lt;param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1310
+#, no-c-format
+msgid "It is a matter of taste which implementation you prefer."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1318
+#, no-c-format
+msgid "Running the Seam examples in JBoss using the JSF 1.2 RI"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1319
+#, no-c-format
+msgid ""
+"JBoss AS 4.0 ships with the Apache MyFaces implementation of JSF 1.1. After "
+"many months of waiting, there is <emphasis>still</emphasis> no "
+"implementation of JSF 1.2 from MyFaces. For this and other reasons, JBoss AS "
+"4.2 will embed the JSF 1.2 Reference Implementation by default. Soon after "
+"the release of 4.2, we will migrate the Seam examples to JSF 1.2."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1322
+#, no-c-format
+msgid ""
+"For those who can't wait, Seam is already compatible with JSF 1.2, and it's "
+"easy to get the Seam examples running with JSF 1.2 in JBoss 4.0.5. Let's "
+"start with the famous booking example:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1327
+#, no-c-format
+msgid ""
+"copy <literal>jsf-api.jar</literal>, <literal>jsf-impl.jar</literal>, "
+"<literal>el-api.jar</literal>, <literal>el-impl.jar</literal> to "
+"<literal>server/default/deploy/tomcat/jbossweb-tomcat55.sar/jsf-libs</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1332
+#, no-c-format
+msgid ""
+"delete <literal>myfaces-api.jar</literal> and <literal>myfaces-impl.jar</"
+"literal> from <literal>server/default/deploy/tomcat/jbossweb-tomcat55.sar/"
+"jsf-libs</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1337
+#, no-c-format
+msgid ""
+"edit <literal>server/default/deploy/tomcat/jbossweb-tomcat55.sar/conf/web."
+"xml</literal>, replacing <literal>myfaces-impl.jar</literal> with "
+"<literal>jsf-impl.jar</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1342
+#, no-c-format
+msgid ""
+"edit <literal>examples/booking/resources/WEB-INF/web.xml</literal>, deleting "
+"the MyFaces listener, uncommenting the RI listener"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1347
+#, no-c-format
+msgid ""
+"edit <literal>examples/booking/resources/WEB-INF/faces-config.xml</literal>, "
+"uncommenting the lines that install the <literal>SeamELResolver</literal> "
+"using the new JSF 1.2 XML schema declaration."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1352
+#, no-c-format
+msgid ""
+"edit <literal>examples/booking/resources/META-INF/application.xml</literal>, "
+"deleting the lines that declare <literal>el-api.jar</literal> and "
+"<literal>el-impl.jar</literal> as Java modules."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1357
+#, no-c-format
+msgid ""
+"Restart JBoss, and type <literal>ant</literal> in the <literal>examples/"
+"booking</literal> directory."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Validation.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Validation.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Validation.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,375 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Validation.xml:10
+#, no-c-format
+msgid "JSF form validation in Seam"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:11
+#, no-c-format
+msgid "In plain JSF, validation is defined in the view:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:14
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Country:\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;my:validateCountry/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Zip code:\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;my:validateZip/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:15
+#, no-c-format
+msgid ""
+"In practice, this approach usually violates DRY, since most \"validation\" "
+"actually enforces constraints that are part of the data model, and exist all "
+"the way down to the database schema definition. Seam provides support for "
+"model-based constraints defined using Hibernate Validator."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:18
+#, no-c-format
+msgid ""
+"Let's start by defining our constraints, on our <literal>Location</literal> "
+"class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:21
+#, no-c-format
+msgid ""
+"public class Location {\n"
+"    private String country;\n"
+"    private String zip;\n"
+"    \n"
+"    @NotNull\n"
+"    @Length(max=30)\n"
+"    public String getCountry() { return country; }\n"
+"    public void setCountry(String c) { country = c; }\n"
+"\n"
+"    @NotNull\n"
+"    @Length(max=6)\n"
+"    @Pattern(\"^&#92;d*&#36;\")\n"
+"    public String getZip() { return zip; }\n"
+"    public void setZip(String z) { zip = z; }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:22
+#, no-c-format
+msgid ""
+"Well, that's a decent first cut, but in practice it might be more elegant to "
+"use custom constraints instead of the ones built into Hibernate Validator:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:25
+#, no-c-format
+msgid ""
+"public class Location {\n"
+"    private String country;\n"
+"    private String zip;\n"
+"    \n"
+"    @NotNull\n"
+"    @Country\n"
+"    public String getCountry() { return country; }\n"
+"    public void setCountry(String c) { country = c; }\n"
+"\n"
+"    @NotNull\n"
+"    @ZipCode\n"
+"    public String getZip() { return zip; }\n"
+"    public void setZip(String z) { zip = z; }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:26
+#, no-c-format
+msgid ""
+"Whichever route we take, we no longer need to specify the type of validation "
+"to be used in the JSF page. Instead, we can use <literal>&lt;s:validate&gt;</"
+"literal> to validate against the constraint defined on the model object."
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:29
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Country:\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;s:validate/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Zip code:\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;s:validate/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:30
+#, no-c-format
+msgid ""
+"<emphasis>Note:</emphasis> specifying <literal>@NotNull</literal> on the "
+"model does <emphasis>not</emphasis> eliminate the requirement for "
+"<literal>required=\"true\"</literal> to appear on the control! This is due "
+"to a limitation of the JSF validation architecture."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:33
+#, no-c-format
+msgid ""
+"This version is not much less verbose than what we started with, so let's "
+"try <literal>&lt;s:validateAll&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:36
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;h:inputText value=\"#{location.country}\" required=\"true\"/"
+"&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/"
+"&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:37
+#, no-c-format
+msgid ""
+"This tag simply adds an <literal>&lt;s:validate&gt;</literal> to every input "
+"in the form. For a large form, it can save a lot of typing!"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:40
+#, no-c-format
+msgid ""
+"Now we need to do something about displaying feedback to the user when "
+"validation fails. Currently we are displaying all messages at the top of the "
+"form. What we would really like to do is display the message next to the "
+"field with the error (this is possible in plain JSF), highlight the field "
+"(this is not possible) and, for good measure, display some image next the "
+"the field (also not possible)."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:43
+#, no-c-format
+msgid "Let's try out <literal>&lt;s:decorate&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:46
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;s:decorate&gt;\n"
+"                &lt;f:facet name=\"beforeInvalidField\"&gt;&lt;h:"
+"graphicImage src=\"img/error.gif\"/&gt;&lt;/f:facet&gt;\n"
+"                &lt;f:facet name=\"afterInvalidField\"&gt;&lt;s:message/&gt;"
+"&lt;/f:facet&gt;\n"
+"                &lt;f:facet name=\"aroundInvalidField\"&gt;&lt;s:span "
+"styleClass=\"error\"/&gt;&lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{location.country}\" required=\"true"
+"\"/&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;s:decorate&gt;\n"
+"                &lt;f:facet name=\"beforeInvalidField\"&gt;&lt;h:"
+"graphicImage src=\"img/error.gif\"/&gt;&lt;/f:facet&gt;\n"
+"                &lt;f:facet name=\"afterInvalidField\"&gt;&lt;s:message/&gt;"
+"&lt;/f:facet&gt;\n"
+"                &lt;f:facet name=\"aroundInvalidField\"&gt;&lt;s:span "
+"styleClass=\"error\"/&gt;&lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/"
+"&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:47
+#, no-c-format
+msgid ""
+"Well, that looks much better to the user, but it is extremely verbose. "
+"Fortunately, the facets of <literal>&lt;s:decorate&gt;</literal> may be "
+"defined on any parent element:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:50
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;f:facet name=\"beforeInvalidField\"&gt;\n"
+"        &lt;h:graphicImage src=\"img/error.gif\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;f:facet name=\"afterInvalidField\"&gt;\n"
+"        &lt;s:message/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;f:facet name=\"aroundInvalidField\"&gt;\n"
+"        &lt;s:span styleClass=\"error\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;s:decorate&gt;\n"
+"                &lt;h:inputText value=\"#{location.country}\" required=\"true"
+"\"/&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;s:decorate&gt;\n"
+"                &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/"
+"&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:51
+#, no-c-format
+msgid ""
+"This approach <emphasis>defines</emphasis> constraints on the model, and "
+"<emphasis>presents</emphasis> constraint violations in the view&mdash;a "
+"significantly better design."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:54
+#, no-c-format
+msgid ""
+"Finally, we can use Ajax4JSF to display validation messages as the user is "
+"typing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:57
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;f:facet name=\"beforeInvalidField\"&gt;\n"
+"        &lt;h:graphicImage src=\"img/error.gif\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;f:facet name=\"afterInvalidField\"&gt;\n"
+"        &lt;s:message/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;f:facet name=\"aroundInvalidField\"&gt;\n"
+"        &lt;s:span styleClass=\"error\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;s:decorate id=\"country\"&gt;\n"
+"                &lt;h:inputText value=\"#{location.country}\" required=\"true"
+"\"&gt;\n"
+"                    &lt;a:support event=\"onblur\" reRender=\"country\"/"
+"&gt;\n"
+"                &lt;/h:inputText&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;s:decorate id=\"zip\"&gt;\n"
+"                &lt;h:inputText value=\"#{location.zip}\" required=\"true"
+"\"&gt;\n"
+"                    &lt;a:support event=\"onblur\" reRender=\"zip\"/&gt;\n"
+"                &lt;/h:inputText&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Xml.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Xml.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/it-IT/Xml.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,933 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Xml.xml:10
+#, no-c-format
+msgid "Configuring Seam components"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:11
+#, no-c-format
+msgid ""
+"The philosophy of minimizing XML-based configuration is extremely strong in "
+"Seam. Nevertheless, there are various reasons why we might want to configure "
+"a Seam component using XML: to isolate deployment-specific information from "
+"the Java code, to enable the creation of re-usable frameworks, to configure "
+"Seam's built-in functionality, etc. Seam provides two basic approaches to "
+"configuring components: configuration via property settings in a properties "
+"file or <literal>web.xml</literal>, and configuration via "
+"<literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:14
+#, no-c-format
+msgid "Configuring components via property settings"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:15
+#, no-c-format
+msgid ""
+"Seam components may be provided with configuration properties either via "
+"servlet context parameters, or via a properties file named <literal>seam."
+"properties</literal> in the root of the classpath."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:18
+#, no-c-format
+msgid ""
+"The configurable Seam component must expose JavaBeans-style property setter "
+"methods for the configurable attributes. If a seam component named "
+"<literal>com.jboss.myapp.settings</literal> has a setter method named "
+"<literal>setLocale()</literal>, we can provide a property named <literal>com."
+"jboss.myapp.settings.locale</literal> in the <literal>seam.properties</"
+"literal> file or as a servlet context parameter, and Seam will set the value "
+"of the <literal>locale</literal> attribute whenever it instantiates the "
+"component."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:21
+#, no-c-format
+msgid ""
+"The same mechanism is used to configure Seam itself. For example, to set the "
+"conversation timeout, we provide a value for <literal>org.jboss.seam.core."
+"manager.conversationTimeout</literal> in <literal>web.xml</literal> or "
+"<literal>seam.properties</literal>. (There is a built-in Seam component "
+"named <literal>org.jboss.seam.core.manager</literal> with a setter method "
+"named <literal>setConversationTimeout()</literal>.)"
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:24
+#, no-c-format
+msgid "Configuring components via components.xml"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:25
+#, no-c-format
+msgid ""
+"The <literal>components.xml</literal> file is a bit more powerful than "
+"property settings. It lets you:"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:30
+#, no-c-format
+msgid ""
+"Configure components that have been installed automatically&mdash;including "
+"both built-in components, and application components that have been "
+"annotated with the <literal>@Name</literal> annotation and picked up by "
+"Seam's deployment scanner."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:35
+#, no-c-format
+msgid ""
+"Install classes with no <literal>@Name</literal> annotation as Seam "
+"components&mdash;this is most useful for certain kinds of infrastructural "
+"components which can be installed multiple times different names (for "
+"example Seam-managed persistence contexts)."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:40
+#, no-c-format
+msgid ""
+"Install components that <emphasis>do</emphasis> have a <literal>@Name</"
+"literal> annotation but are not installed by default because of an "
+"<literal>@Install</literal> annotation that indicates the component should "
+"not be installed."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:45
+#, no-c-format
+msgid "Override the scope of a component."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:50
+#, no-c-format
+msgid ""
+"A <literal>components.xml</literal> file may appear in one of three "
+"different places:"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:55
+#, no-c-format
+msgid "The <literal>WEB-INF</literal> directory of a <literal>war</literal>."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:60
+#, no-c-format
+msgid "The <literal>META-INF</literal> directory of a <literal>jar</literal>."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:65
+#, no-c-format
+msgid ""
+"Any directory of a <literal>jar</literal> that contains classes with an "
+"<literal>@Name</literal> annotation."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:70
+#, no-c-format
+msgid ""
+"Usually, Seam components are installed when the deployment scanner discovers "
+"a class with a <literal>@Name</literal> annotation sitting in an archive "
+"with a <literal>seam.properties</literal> file or a <literal>META-INF/"
+"components.xml</literal> file. (Unless the component has an "
+"<literal>@Install</literal> annotation indicating it should not be installed "
+"by default.) The <literal>components.xml</literal> file lets us handle "
+"special cases where we need to override the annotations."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:73
+#, no-c-format
+msgid ""
+"For example, the following <literal>components.xml</literal> file installs "
+"the JBoss Embeddable EJB3 container:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:76
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"&gt;\n"
+"    &lt;core:ejb/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:77
+#, no-c-format
+msgid "This example does the same thing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:80
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component class=\"org.jboss.seam.core.Ejb\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:81
+#, no-c-format
+msgid ""
+"This one installs and configures two different Seam-managed persistence "
+"contexts:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:84
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"    &lt;core:managed-persistence-context name=\"customerDatabase\"\n"
+"                persistence-unit-jndi-name=\"java:/"
+"customerEntityManagerFactory\"/&gt;\n"
+"        \n"
+"    &lt;core:managed-persistence-context name=\"accountingDatabase\"\n"
+"                persistence-unit-jndi-name=\"java:/"
+"accountingEntityManagerFactory\"/&gt;            \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:85
+#, no-c-format
+msgid "As does this one:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:88
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component name=\"customerDatabase\" \n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"customerEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"    \n"
+"    &lt;component name=\"accountingDatabase\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"accountingEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:89
+#, no-c-format
+msgid ""
+"This example creates a session-scoped Seam-managed persistence context (this "
+"is not recommended in practice):"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:92
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"  &lt;core:managed-persistence-context name=\"productDatabase\" \n"
+"                                   scope=\"session\"\n"
+"              persistence-unit-jndi-name=\"java:/productEntityManagerFactory"
+"\"/&gt;        \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:93
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"            \n"
+"    &lt;component name=\"productDatabase\"\n"
+"              scope=\"session\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"productEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:94
+#, no-c-format
+msgid ""
+"It is common to use the <literal>auto-create</literal> option for "
+"infrastructural objects like persistence contexts, which saves you from "
+"having to explicitly specify <literal>create=true</literal> when you use the "
+"<literal>@In</literal> annotation."
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:97
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"  &lt;core:managed-persistence-context name=\"productDatabase\" \n"
+"                             auto-create=\"true\"\n"
+"              persistence-unit-jndi-name=\"java:/productEntityManagerFactory"
+"\"/&gt;        \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:98
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"            \n"
+"    &lt;component name=\"productDatabase\"\n"
+"        auto-create=\"true\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"productEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:99
+#, no-c-format
+msgid ""
+"The <literal>&lt;factory&gt;</literal> declaration lets you specify a value "
+"or method binding expression that will be evaluated to initialize the value "
+"of a context variable when it is first referenced."
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:102
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"contact\" method=\"#{contactManager.loadContact}\" "
+"scope=\"CONVERSATION\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:103
+#, no-c-format
+msgid ""
+"You can create an \"alias\" (a second name) for a Seam component like so:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:106
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"user\" value=\"#{actor}\" scope=\"STATELESS\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:107
+#, no-c-format
+msgid "You can even create an \"alias\" for a commonly used expression:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:110
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"contact\" value=\"#{contactManager.contact}\" scope="
+"\"STATELESS\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:111
+#, no-c-format
+msgid ""
+"It is especially common to see the use of <literal>auto-create=\"true\"</"
+"literal> with the <literal>&lt;factory&gt;</literal> declaration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:114
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"session\" value=\"#{entityManager.delegate}\" scope="
+"\"STATELESS\" \n"
+"        auto-create=\"true\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:115
+#, no-c-format
+msgid ""
+"Sometimes we want to reuse the same <literal>components.xml</literal> file "
+"with minor changes during both deployment and testing. Seam lets you place "
+"wildcards of the form <literal>@wildcard@</literal> in the "
+"<literal>components.xml</literal> file which can be replaced either by your "
+"Ant build script (at deployment time) or by providing a file named "
+"<literal>components.properties</literal> in the classpath (at development "
+"time). You'll see this approach used in the Seam examples."
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:118
+#, no-c-format
+msgid "Fine-grained configuration files"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:119
+#, no-c-format
+msgid ""
+"If you have a large number of components that need to be configured in XML, "
+"it makes much more sense to split up the information in <literal>components."
+"xml</literal> into many small files. Seam lets you put configuration for a "
+"class named, for example, <literal>com.helloworld.Hello</literal> in a "
+"resource named <literal>com/helloworld/Hello.component.xml</literal>. (You "
+"might be familiar with this pattern, since it is the same one we use in "
+"Hibernate.) The root element of the file may be either a <literal>&lt;"
+"components&gt;</literal> or <literal>&lt;component&gt;</literal> element."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:122
+#, no-c-format
+msgid "The first option lets you define multiple components in the file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:125
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component class=\"com.helloworld.Hello\" name=\"hello\"&gt;\n"
+"        &lt;property name=\"name\"&gt;#{user.name}&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"    &lt;factory name=\"message\" value=\"#{hello.message}\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:126
+#, no-c-format
+msgid ""
+"The second option only lets you define or configure one component, but is "
+"less noisy:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:129
+#, no-c-format
+msgid ""
+"&lt;component name=\"hello\"&gt;\n"
+"    &lt;property name=\"name\"&gt;#{user.name}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:130
+#, no-c-format
+msgid ""
+"In the second option, the class name is implied by the file in which the "
+"component definition appears."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:133
+#, no-c-format
+msgid ""
+"Alternatively, you may put configuration for all classes in the <literal>com."
+"helloworld</literal> package in <literal>com/helloworld/components.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:136
+#, no-c-format
+msgid "Configurable property types"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:137
+#, no-c-format
+msgid ""
+"Properties of string, primitive or primitive wrapper type may be configured "
+"just as you would expect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:140
+#, no-c-format
+msgid "org.jboss.seam.core.manager.conversationTimeout 60000"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:141
+#, no-c-format
+msgid "&lt;core:manager conversation-timeout=\"60000\"/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:142
+#, no-c-format
+msgid ""
+"&lt;component name=\"org.jboss.seam.core.manager\"&gt;\n"
+"    &lt;property name=\"conversationTimeout\"&gt;60000&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:143
+#, no-c-format
+msgid "Arrays, sets and lists of strings or primitives are also supported:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:146
+#, no-c-format
+msgid ""
+"org.jboss.seam.core.jbpm.processDefinitions order.jpdl.xml, return.jpdl.xml, "
+"inventory.jpdl.xml"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:147
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;order.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;return.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:148
+#, no-c-format
+msgid ""
+"&lt;component name=\"org.jboss.seam.core.jbpm\"&gt;\n"
+"    &lt;property name=\"processDefinitions\"&gt;\n"
+"        &lt;value&gt;order.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;return.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:149
+#, no-c-format
+msgid ""
+"Even maps with String-valued keys and string or primitive values are "
+"supported:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:152
+#, no-c-format
+msgid ""
+"&lt;component name=\"issueEditor\"&gt;\n"
+"    &lt;property name=\"issueStatuses\"&gt;\n"
+"        &lt;key&gt;open&lt;/key&gt; &lt;value&gt;open issue&lt;/value&gt;\n"
+"        &lt;key&gt;resolved&lt;/key&gt; &lt;value&gt;issue resolved by "
+"developer&lt;/value&gt;\n"
+"        &lt;key&gt;closed&lt;/key&gt; &lt;value&gt;resolution accepted by "
+"user&lt;/value&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:153
+#, no-c-format
+msgid ""
+"Finally, you may wire together components using a value-binding expression. "
+"Note that this is quite different to injection using <literal>@In</literal>, "
+"since it happens at component instantiation time instead of invocation time. "
+"It is therefore much more similar to the dependency injection facilities "
+"offered by traditional IoC containers like JSF or Spring."
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:156
+#, no-c-format
+msgid ""
+"&lt;drools:managed-working-memory name=\"policyPricingWorkingMemory\" rule-"
+"base=\"#{policyPricingRules}\"/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:157
+#, no-c-format
+msgid ""
+"&lt;component name=\"policyPricingWorkingMemory\"\n"
+"          class=\"org.jboss.seam.drools.ManagedWorkingMemory\"&gt;\n"
+"    &lt;property name=\"ruleBase\"&gt;#{policyPricingRules}&lt;/"
+"property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:158
+#, no-c-format
+msgid "Using XML Namespaces"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:159
+#, no-c-format
+msgid ""
+"Throughout the examples, there have been two competing ways of declaring "
+"components: with and without the use of XML namespaces. The following shows "
+"a typical <literal>components.xml</literal> file without namespaces. It uses "
+"the Seam Components DTD:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:162
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"&gt;\n"
+"&lt;!DOCTYPE components PUBLIC \"-//JBoss/Seam Component Configuration DTD "
+"1.2//EN\"\n"
+"                            \"http://jboss.com/products/seam/components-1.2."
+"dtd\"&gt;\n"
+"&lt;components&gt;\n"
+"\n"
+"    &lt;component class=\"org.jboss.seam.core.init\"&gt;\n"
+"        &lt;property name=\"debug\"&gt;true&lt;/property&gt;\n"
+"        &lt;property name=\"jndiPattern\"&gt;@jndiPattern@&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"    &lt;component name=\"org.jboss.sean.core.ejb\" installed=\"@embeddedEjb@"
+"\" /&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:163
+#, no-c-format
+msgid ""
+"As you can see, this is somewhat verbose. Even worse, the component and "
+"attribute names cannot be validated at development time."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:166
+#, no-c-format
+msgid "The namespaced version looks like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:169
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                http://jboss.com/products/seam/core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components \n"
+"                 http://jboss.com/products/seam/components-1.2.xsd\"&gt;\n"
+"\n"
+"    &lt;core:init debug=\"true\" jndi-pattern=\"@jndiPattern@\"/&gt;\n"
+"\n"
+"    &lt;core:ejb installed=\"@embeddedEjb@\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:170
+#, no-c-format
+msgid ""
+"Even though the schema declarations are verbose, the actual XML content is "
+"lean and easy to understand. The schemas provide detailed information about "
+"each component and the attributes available, allowing XML editors to offer "
+"intelligent autocomplete. The use of namespaced elements makes generating "
+"and maintaining correct <literal>components.xml</literal> files much simpler."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:173
+#, no-c-format
+msgid ""
+"Now, this works great for the built-in Seam components, but what about user "
+"components? There are two options. First, Seam supports mixing the two "
+"models, allowing the use of the generic <literal>&lt;component&gt;</literal> "
+"declarations for user components, along with namespaced declarations for "
+"built-in components. But even better, Seam allows you to quickly declare "
+"namespaces for your own components."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:176
+#, no-c-format
+msgid ""
+"Any Java package can be associated with an XML namespace by annotating the "
+"package with the <literal>@Namespace</literal> annotation. (Package-level "
+"annotations are declared in a file named <literal>package-info.java</"
+"literal> in the package directory.) Here is an example from the seampay demo:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:179
+#, no-c-format
+msgid ""
+"@Namespace(value=\"http://jboss.com/products/seam/examples/seampay\")\n"
+"package org.jboss.seam.example.seampay;\n"
+"\n"
+"import org.jboss.seam.annotations.Namespace;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:180
+#, no-c-format
+msgid ""
+"That is all you need to do to use the namespaced style in "
+"<literal>components.xml</literal>! Now we can write:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:183
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pay=\"http://jboss.com/products/seam/examples/seampay\"\n"
+"            ... &gt;\n"
+"\n"
+"    &lt;pay:payment-home new-instance=\"#{newPayment}\"\n"
+"                      created-message=\"Created a new payment to #"
+"{newPayment.payee}\" /&gt;\n"
+"\n"
+"    &lt;pay:payment name=\"newPayment\"\n"
+"                 payee=\"Somebody\"\n"
+"                 account=\"#{selectedAccount}\"\n"
+"                 payment-date=\"#{currentDatetime}\"\n"
+"                 created-date=\"#{currentDatetime}\" /&gt;\n"
+"     ...\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:184
+#, no-c-format
+msgid "<para>Or:</para>"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:187
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pay=\"http://jboss.com/products/seam/examples/seampay\"\n"
+"            ... &gt;\n"
+"\n"
+"    &lt;pay:payment-home&gt;\n"
+"        &lt;pay:new-instance&gt;\"#{newPayment}\"&lt;/pay:new-instance&gt;\n"
+"        &lt;pay:created-message&gt;Created a new payment to #{newPayment."
+"payee}&lt;/pay:created-message&gt;\n"
+"    &lt;/pay:payment-home&gt;\n"
+"    \n"
+"    &lt;pay:payment name=\"newPayment\"&gt;\n"
+"        &lt;pay:payee&gt;Somebody\"&lt;/pay:payee&gt;\n"
+"        &lt;pay:account&gt;#{selectedAccount}&lt;/pay:account&gt;\n"
+"        &lt;pay:payment-date&gt;#{currentDatetime}&lt;/pay:payment-date&gt;\n"
+"        &lt;pay:created-date&gt;#{currentDatetime}&lt;/pay:created-date&gt;\n"
+"     &lt;/pay:payment&gt;\n"
+"     ...\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:188
+#, no-c-format
+msgid ""
+"These examples illustrate the two usage models of a namespaced element. In "
+"the first declaration, the <literal>&lt;pay:payment-home&gt;</literal> "
+"references the <literal>paymentHome</literal> component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:191
+#, no-c-format
+msgid ""
+"package org.jboss.seam.example.seampay;\n"
+"...\n"
+"@Name(\"paymentHome\")\n"
+"public class PaymentController\n"
+"    extends EntityHome&lt;Payment&gt;\n"
+"{\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:192
+#, no-c-format
+msgid ""
+"The element name is the hyphenated form of the component name. The "
+"attributes of the element are the hyphenated form of the property names."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:195
+#, no-c-format
+msgid ""
+"In the second declaration, the <literal>&lt;pay:payment&gt;</literal> "
+"element refers to the <literal>Payment</literal> class in the <literal>org."
+"jboss.seam.example.seampay</literal> package. In this case <literal>Payment</"
+"literal> is an entity that is being declared as a Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:198
+#, no-c-format
+msgid ""
+"package org.jboss.seam.example.seampay;\n"
+"...\n"
+"@Entity\n"
+"public class Payment\n"
+"    implements Serializable\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:199
+#, no-c-format
+msgid ""
+"If we want validation and autocompletion to work for user-defined "
+"components, we will need a schema. Seam does not yet provide a mechanism to "
+"automatically generate a schema for a set of components, so it is necessary "
+"to generate one manually. The schema definitions for the standard Seam "
+"packages can be used for guidance."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:202
+#, no-c-format
+msgid "The following are the the namespaces used by Seam:"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:207
+#, no-c-format
+msgid ""
+"components &mdash; <literal>http://jboss.com/products/seam/components</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:212
+#, no-c-format
+msgid "core &mdash; <literal>http://jboss.com/products/seam/core</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:217
+#, no-c-format
+msgid "drools &mdash; <literal>http://jboss.com/products/seam/drools</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:222
+#, no-c-format
+msgid ""
+"framework &mdash; <literal>http://jboss.com/products/seam/framework</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:227
+#, no-c-format
+msgid "jms &mdash; <literal>http://jboss.com/products/seam/jms</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:232
+#, no-c-format
+msgid ""
+"remoting &mdash; <literal>http://jboss.com/products/seam/remoting</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:237
+#, no-c-format
+msgid "theme &mdash; <literal>http://jboss.com/products/seam/theme</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:242
+#, no-c-format
+msgid ""
+"security &mdash; <literal>http://jboss.com/products/seam/security</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:247
+#, no-c-format
+msgid "mail &mdash; <literal>http://jboss.com/products/seam/mail</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:252
+#, no-c-format
+msgid "web &mdash; <literal>http://jboss.com/products/seam/web</literal>"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Annotations.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Annotations.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Annotations.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2410 @@
+# translation of Annotations.po to Japanese
+# Noriko Mizumoto <noriko at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Annotations\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-30 01:52+0000\n"
+"PO-Revision-Date: 2007-11-02 09:18+1000\n"
+"Last-Translator: Noriko Mizumoto <noriko at redhat.com>\n"
+"Language-Team: Japanese <fedora-trans-ja at redhat.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Annotations.xml:6
+#, no-c-format
+msgid "Seam annotations"
+msgstr "Seam アノテーション"
+
+#. Tag: para
+#: Annotations.xml:7
+#, no-c-format
+msgid ""
+"When you write a Seam application, you&#39;ll use a lot of annotations. Seam "
+"lets you use annotations to achieve a declarative style of programming. Most "
+"of the annotations you&#39;ll use are defined by the EJB 3.0 specification. "
+"The annotations for data validation are defined by the Hibernate Validator "
+"package. Finally, Seam defines its own set of annotations, which we&#39;ll "
+"describe in this chapter."
+msgstr ""
+"Seam アノテーションを記述する場合、多くのアノテーションを使用します。 Seam に"
+"よりアノテーションを使用してプログラミングの宣言的スタイルを実現することがで"
+"きます。使用するアノテーションのほとんどは EJB 3.0 仕様で定義されています。"
+"データ検証用のアノテーションは Hibernate Validator パッケージで定義されていま"
+"す。Seam は Seam 独自のアノテーションセットを定義しています。 これについては"
+"本章で説明していきます。"
+
+#. Tag: para
+#: Annotations.xml:10
+#, no-c-format
+msgid ""
+"All of these annotations are defined in the package <literal>org.jboss.seam."
+"annotations</literal>."
+msgstr ""
+"これらのアノテーション  はすべてパッケージ <literal>org.jboss.seam."
+"annotations</literal> で定義されます。"
+
+#. Tag: title
+#: Annotations.xml:14
+#, no-c-format
+msgid "Annotations for component definition"
+msgstr "コンポーネント定義のためのアノテーション"
+
+#. Tag: para
+#: Annotations.xml:15
+#, no-c-format
+msgid ""
+"The first group of annotations lets you define a Seam component. These "
+"annotations appear on the component class."
+msgstr ""
+"アノテーションの1番目のグループでは Seam コンポーネントを定義することができま"
+"す。これらのアノテーションはコンポーネントクラスで見られます。"
+
+#. Tag: literal
+#: Annotations.xml:20
+#, no-c-format
+msgid "@Name"
+msgstr "@Name"
+
+#. Tag: programlisting
+#: Annotations.xml:22
+#, no-c-format
+msgid "@Name(\"componentName\")"
+msgstr "@Name(\"componentName\")"
+
+#. Tag: para
+#: Annotations.xml:23
+#, no-c-format
+msgid ""
+"Defines the Seam component name for a class. This annotation is required for "
+"all Seam components."
+msgstr ""
+"クラスに対して Seam コンポーネント名を定義します。このアノテーション は Seam "
+"の全コンポーネントに必要になります。"
+
+#. Tag: literal
+#: Annotations.xml:29
+#, no-c-format
+msgid "@Scope"
+msgstr "@Scope"
+
+#. Tag: programlisting
+#: Annotations.xml:31
+#, no-c-format
+msgid "@Scope(ScopeType.CONVERSATION)"
+msgstr "@Scope(ScopeType.CONVERSATION)"
+
+#. Tag: para
+#: Annotations.xml:32
+#, no-c-format
+msgid ""
+"Defines the default context of the component. The possible values are "
+"defined by the <literal>ScopeType</literal> enumeration: <literal>EVENT, "
+"PAGE, CONVERSATION, SESSION, BUSINESS_PROCESS, APPLICATION, STATELESS</"
+"literal>."
+msgstr ""
+"コンポーネントのデフォルトコンテキストを定義します。 可能な値は "
+"<literal>ScopeType</literal> の列挙で定義されます、 <literal>EVENT, PAGE, "
+"CONVERSATION, SESSION, BUSINESS_PROCESS, APPLICATION, STATELESS</literal>。"
+
+#. Tag: para
+#: Annotations.xml:35
+#, no-c-format
+msgid ""
+"When no scope is explicitly specified, the default depends upon the "
+"component type. For stateless session beans, the default is "
+"<literal>STATELESS</literal>. For entity beans and stateful session beans, "
+"the default is <literal>CONVERSATION</literal>. For JavaBeans, the default "
+"is <literal>EVENT</literal>."
+msgstr ""
+"スコープが明示的に指定されていない場合、 デフォルトはコンポーネントタイプによ"
+"り異なってきます。 ステートレスセッションビーンの場合、 デフォルトは "
+"<literal>STATELESS</literal> になります。 エンティティ bean およびステートフ"
+"ルセッション bean なら、 デフォルトは <literal>CONVERSATION</literal> にな"
+"り、 JavaBeans のデフォルトは <literal>EVENT</literal> になります。"
+
+#. Tag: literal
+#: Annotations.xml:41
+#, no-c-format
+msgid "@Role"
+msgstr "@Role"
+
+#. Tag: programlisting
+#: Annotations.xml:43
+#, no-c-format
+msgid "@Role(name=\"roleName\", scope=ScopeType.SESSION)"
+msgstr "@Role(name=\"roleName\", scope=ScopeType.SESSION)"
+
+#. Tag: para
+#: Annotations.xml:44
+#, no-c-format
+msgid ""
+"Allows a Seam component to be bound to multiple contexts variables. The "
+"<literal>@Name</literal>/<literal>@Scope</literal> annotations define a "
+"\"default role\". Each <literal>@Role</literal> annotation defines an "
+"additional role."
+msgstr ""
+"Seam コンポーネントを複数のコンテキスト変数に結合できるようにします。 "
+"<literal>@Name</literal>/<literal>@Scope</literal> アノテーションは「デフォル"
+"トロール」を定義します。 各 <literal>@Role</literal> アノテーションは追加ロー"
+"ルを定義します。"
+
+#. Tag: para
+#: Annotations.xml:49
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the context variable name."
+msgstr "<literal>name</literal> &mdash; コンテキスト変数名です。"
+
+#. Tag: para
+#: Annotations.xml:54
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; the context variable scope. When no scope "
+"is explicitly specified, the default depends upon the component type, as "
+"above."
+msgstr ""
+"<literal>scope</literal> &mdash; コンテキスト変数スコープです。 スコープが明"
+"示的に指定されない場合、 デフォルトは上記のとおりコンポーネントタイプにより異"
+"なります。"
+
+#. Tag: literal
+#: Annotations.xml:62
+#, no-c-format
+msgid "@Roles"
+msgstr "@Roles"
+
+#. Tag: programlisting
+#: Annotations.xml:64
+#, no-c-format
+msgid ""
+"@Roles({\n"
+"        @Role(name=\"user\", scope=ScopeType.CONVERSATION),\n"
+"        @Role(name=\"currentUser\", scope=ScopeType.SESSION)\n"
+"    })"
+msgstr ""
+"@Roles({\n"
+"        @Role(name=\"user\", scope=ScopeType.CONVERSATION),\n"
+"        @Role(name=\"currentUser\", scope=ScopeType.SESSION)\n"
+"    })"
+
+#. Tag: para
+#: Annotations.xml:65
+#, no-c-format
+msgid "Allows specification of multiple additional roles."
+msgstr "複数の追加ロールを指定することができるようになります。"
+
+#. Tag: literal
+#: Annotations.xml:71
+#, no-c-format
+msgid "@Intercept"
+msgstr "@Intercept"
+
+#. Tag: programlisting
+#: Annotations.xml:73
+#, no-c-format
+msgid "@Intercept(InterceptionType.ALWAYS)"
+msgstr "@Intercept(InterceptionType.ALWAYS)"
+
+#. Tag: para
+#: Annotations.xml:74
+#, no-c-format
+msgid ""
+"Determines when Seam interceptors are active. The possible values are "
+"defined by the <literal>InterceptionType</literal> enumeration: "
+"<literal>ALWAYS, AFTER_RESTORE_VIEW, AFTER_UPDATE_MODEL_VALUES, "
+"INVOKE_APPLICATION, NEVER</literal>."
+msgstr ""
+"Seam インターセプタをいつアクティブにするかを確定します。 可能な値は "
+"<literal>InterceptionType</literal> の列挙で定義されます、 <literal>ALWAYS, "
+"AFTER_RESTORE_VIEW, AFTER_UPDATE_MODEL_VALUES, INVOKE_APPLICATION, NEVER</"
+"literal>。"
+
+#. Tag: para
+#: Annotations.xml:77
+#, no-c-format
+msgid ""
+"When no interception type is explicitly specified, the default depends upon "
+"the component type. For entity beans, the default is <literal>NEVER</"
+"literal>. For session beans, message driven beans and JavaBeans, the default "
+"is <literal>ALWAYS</literal>."
+msgstr ""
+"インターセプタタイプが明示的に指定されない場合、 デフォルトはコンポーネントタ"
+"イプにより異なります。 エンティティ bean の場合、 デフォルトは "
+"<literal>NEVER</literal> になります。 セッション bean、 メッセージにより決定"
+"される bean および JavaBeans ならデフォルトは <literal>ALWAYS</literal> にな"
+"ります。"
+
+#. Tag: literal
+#: Annotations.xml:83
+#, no-c-format
+msgid "@JndiName"
+msgstr "@JndiName"
+
+#. Tag: programlisting
+#: Annotations.xml:85
+#, no-c-format
+msgid "@JndiName(\"my/jndi/name\")"
+msgstr "@JndiName(\"my/jndi/name\")"
+
+#. Tag: para
+#: Annotations.xml:86
+#, no-c-format
+msgid ""
+"Specifies the JNDI name that Seam will use to look up the EJB component. If "
+"no JNDI name is explicitly specified, Seam will use the JNDI pattern "
+"specified by <literal>org.jboss.seam.core.init.jndiPattern</literal>."
+msgstr ""
+"Seam が EJB コンポーネントのルックアップに使用する JNDI 名を指定します。 "
+"JNDI 名が明示的に指定されない場合、 Seam は <literal>org.jboss.seam.core."
+"init.jndiPattern</literal> で指定される JNDI パターンを使用します。"
+
+#. Tag: literal
+#: Annotations.xml:92
+#, no-c-format
+msgid "@Conversational"
+msgstr "@Conversational"
+
+#. Tag: programlisting
+#: Annotations.xml:94
+#, no-c-format
+msgid "@Conversational(ifNotBegunOutcome=\"error\")"
+msgstr "@Conversational(ifNotBegunOutcome=\"error\")"
+
+#. Tag: para
+#: Annotations.xml:95
+#, no-c-format
+msgid ""
+"Specifies that a conversation scope component is conversational, meaning "
+"that no method of the component can be called unless a long-running "
+"conversation started by this component is active (unless the method would "
+"begin a new long-running conversation)."
+msgstr ""
+"対話スコープのコンポーネントが対話形式であることを指定します。 つまり、 この"
+"コンポーネントで開始される長期の対話がアクティブでない限り (メソッドが新規の"
+"長期対話を開始しない限り) コンポーネントのメソッドは呼び出すことができないと"
+"いうことです。"
+
+#. Tag: literal
+#: Annotations.xml:101
+#, no-c-format
+msgid "<literal>@Startup</literal>"
+msgstr "<literal>@Startup</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:103
+#, no-c-format
+msgid "@Startup(depends={\"org.jboss.core.jndi\", \"org.jboss.core.jta\"})"
+msgstr "@Startup(depends={\"org.jboss.core.jndi\", \"org.jboss.core.jta\"})"
+
+#. Tag: para
+#: Annotations.xml:104
+#, no-c-format
+msgid ""
+"Specifies that an application scope component is started immediately at "
+"initialization time. This is mainly used for certain built-in components "
+"that bootstrap critical infrastructure such as JNDI, datasources, etc."
+msgstr ""
+"アプリケーションスコープのコンポーネントは初期化時に直ちに開始されることを指"
+"定します。 主に、 JNDI、 データソースなどの重要なインフラストラクチャをブート"
+"ストラップする特定の組み込みコンポーネントに使用されます。"
+
+#. Tag: programlisting
+#: Annotations.xml:107
+#, no-c-format
+msgid "<programlisting>@Startup</programlisting>"
+msgstr "<programlisting>@Startup</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:108
+#, no-c-format
+msgid ""
+"Specifies that a session scope component is started immediately at session "
+"creation time."
+msgstr ""
+"セッションスコープのコンポーネントはセッション作成時に直ちに開始されることを"
+"指定します。"
+
+#. Tag: para
+#: Annotations.xml:113
+#, no-c-format
+msgid ""
+"<literal>depends</literal> &mdash; specifies that the named components must "
+"be started first, if they are installed."
+msgstr ""
+"<literal>depends</literal> &mdash; 指定されたコンポーネントがインストールされ"
+"ている場合はそのコンポーネントを先に開始されなければならないことを指定しま"
+"す。"
+
+#. Tag: literal
+#: Annotations.xml:121
+#, no-c-format
+msgid "@Install"
+msgstr "@Install"
+
+#. Tag: programlisting
+#: Annotations.xml:123
+#, no-c-format
+msgid "@Install(false)"
+msgstr "@Install(false)"
+
+#. Tag: para
+#: Annotations.xml:124
+#, no-c-format
+msgid ""
+"Specifies whether or not a component should be installed by default. The "
+"lack of an @Install annotation indicates a component should be installed."
+msgstr ""
+"コンポーネントがデフォルトでインストールされる必要があるかどうかを指定しま"
+"す。 @Install アノテーションが欠落しているとコンポーネントはインストールが必"
+"要であるという意味になります。"
+
+#. Tag: programlisting
+#: Annotations.xml:127
+#, no-c-format
+msgid "@Install(dependencies=\"org.jboss.seam.core.jbpm\")"
+msgstr "@Install(dependencies=\"org.jboss.seam.core.jbpm\")"
+
+#. Tag: para
+#: Annotations.xml:128
+#, no-c-format
+msgid ""
+"Specifies that a component should only be stalled if the components listed "
+"as dependencies are also installed."
+msgstr ""
+"コンポーネントは依存関係として表示されるコンポーネント郡もインストールされる"
+"場合にのみインストールされることを指定します。"
+
+#. Tag: programlisting
+#: Annotations.xml:131
+#, no-c-format
+msgid "@Install(genericDependencies=ManagedQueueSender.class)"
+msgstr "@Install(genericDependencies=ManagedQueueSender.class)"
+
+#. Tag: para
+#: Annotations.xml:132
+#, no-c-format
+msgid ""
+"Specifies that a component should only be installed if a component that is "
+"implemented by a certain class is installed. This is useful when the "
+"dependency doesn&#39;t have a single well-known name."
+msgstr ""
+"コンポーネントが、 特定のクラスにより実装されるコンポーネントがインストールさ"
+"れる場合にのみインストールされることを指定します。 依存するコンポーネントの名"
+"前が不定である場合に便利です。"
+
+#. Tag: programlisting
+#: Annotations.xml:135
+#, no-c-format
+msgid "@Install(classDependencies=\"org.hibernate.Session\")"
+msgstr "@Install(classDependencies=\"org.hibernate.Session\")"
+
+#. Tag: para
+#: Annotations.xml:136
+#, no-c-format
+msgid ""
+"Specifies that a component should only be installed if the named class is in "
+"the classpath."
+msgstr ""
+"コンポーネントが、指定されたクラスがクラスパス内にある場合にのみインストール"
+"されることを指定します。"
+
+#. Tag: programlisting
+#: Annotations.xml:139
+#, no-c-format
+msgid "@Install(precedence=BUILT_IN)"
+msgstr "@Install(precedence=BUILT_IN)"
+
+#. Tag: para
+#: Annotations.xml:140
+#, no-c-format
+msgid ""
+"Specifies the precedence of the component. If multiple components with the "
+"same name exist, the one with the higher precedence will be installed. The "
+"defined precendence values are (in ascending order):"
+msgstr ""
+"そのコンポーネントの優先度を指定します。 同じ名前のコンポーネントが複数存在す"
+"る場合、 より高い優先度を持つコンポーネントがインストールされます。 定義され"
+"る優先度の値は次のとおりです (昇順) :"
+
+#. Tag: para
+#: Annotations.xml:145
+#, no-c-format
+msgid ""
+"<literal>BUILT_IN</literal> &mdash; Precedence of all built-in Seam "
+"components"
+msgstr ""
+"<literal>BUILT_IN</literal> &mdash; すべての組み込み Seam コンポーネントが持"
+"つ優先度"
+
+#. Tag: para
+#: Annotations.xml:150
+#, no-c-format
+msgid ""
+"<literal>FRAMEWORK</literal> &mdash; Precedence to use for components of "
+"frameworks which extend Seam"
+msgstr ""
+"<literal>FRAMEWORK</literal> &mdash; Seam を拡張するフレームワークのコンポー"
+"ネントに対して使用する優先度"
+
+#. Tag: para
+#: Annotations.xml:155
+#, no-c-format
+msgid ""
+"<literal>APPLICATION</literal> &mdash; Predence of application components "
+"(the default precedence)"
+msgstr ""
+"<literal>APPLICATION</literal> &mdash; アプリケーションコンポーネントの優先"
+"度 (デフォルトの優先度) "
+
+#. Tag: para
+#: Annotations.xml:160
+#, no-c-format
+msgid ""
+"<literal>DEPLOYMENT</literal> &mdash; Precedence to use for components which "
+"override application components in a particular deployment"
+msgstr ""
+"<literal>DEPLOYMENT</literal> &mdash; 特定のデプロイメントにおいてアプリケー"
+"ションコンポーネントを上書きするコンポーネントに対して使用する優先度"
+
+#. Tag: para
+#: Annotations.xml:165
+#, no-c-format
+msgid "<literal>MOCK</literal> &mdash; Precedence for mock objects used in testing"
+msgstr "<literal>MOCK</literal> &mdash; テストで使用される Mock オブジェクトの優先度"
+
+#. Tag: literal
+#: Annotations.xml:173
+#, no-c-format
+msgid "@Synchronized"
+msgstr "@Synchronized"
+
+#. Tag: programlisting
+#: Annotations.xml:175
+#, no-c-format
+msgid "@Synchronized(timeout=1000)"
+msgstr "@Synchronized(timeout=1000)"
+
+#. Tag: para
+#: Annotations.xml:176
+#, no-c-format
+msgid ""
+"Specifies that a component is accessed concurrently by multiple clients, and "
+"that Seam should serialize requests. If a request is not able to obtain its "
+"lock on the component in the given timeout period, an exception will be "
+"raised."
+msgstr ""
+"コンポーネントが複数のクライアントによって同時にアクセスされること、 Seam は"
+"リクエストをシリアライズすることを指定します。 リクエストが特定のタイムアウト"
+"期間内にコンポーネントでロックを取得できないと例外が発生します。"
+
+#. Tag: literal
+#: Annotations.xml:182
+#, no-c-format
+msgid "<literal>@ReadOnly</literal>"
+msgstr "<literal>@ReadOnly</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:184
+#, no-c-format
+msgid "<programlisting>@ReadOnly</programlisting>"
+msgstr "<programlisting>@ReadOnly</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:185
+#, no-c-format
+msgid ""
+"Specifies that a JavaBean component or component method does not require "
+"state replication at the end of the invocation."
+msgstr ""
+"JavaBean コンポーネントまたはコンポーネントメソッドが呼び出しの終わりで状態の"
+"複製を必要としないことを指定します。"
+
+#. Tag: title
+#: Annotations.xml:194
+#, no-c-format
+msgid "Annotations for bijection"
+msgstr "バイジェクション用アノテーション"
+
+#. Tag: para
+#: Annotations.xml:195
+#, no-c-format
+msgid ""
+"The next two annotations control bijection. These attributes occur on "
+"component instance variables or property accessor methods."
+msgstr ""
+"次の 2 つのアノテーションはバイジェクションを制御します。 これらの属性はコン"
+"ポーネントインスタンス変数またはプロパティのアクセサメソッドに指定できます。"
+
+#. Tag: literal
+#: Annotations.xml:200
+#, no-c-format
+msgid "<literal>@In</literal>"
+msgstr "<literal>@In</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:202
+#, no-c-format
+msgid "<programlisting>@In</programlisting>"
+msgstr "<programlisting>@In</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:203
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. If the context "
+"variable is null, an exception will be thrown."
+msgstr ""
+"コンポーネントの属性が各コンポーネント呼び出しの開始時にコンテキスト変数から"
+"インジェクトされることを指定します。 コンテキスト変数が null の場合、 例外が"
+"発生します。"
+
+#. Tag: programlisting
+#: Annotations.xml:206
+#, no-c-format
+msgid "@In(required=false)"
+msgstr "@In(required=false)"
+
+#. Tag: para
+#: Annotations.xml:207
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. The context variable "
+"may be null."
+msgstr ""
+"コンポーネントの属性が各コンポーネント呼び出しの開始時にコンテキスト変数から"
+"インジェクトされることを指定します。 コンテキスト変数は null でも構いません。"
+
+#. Tag: programlisting
+#: Annotations.xml:210
+#, no-c-format
+msgid "@In(create=true)"
+msgstr "@In(create=true)"
+
+#. Tag: para
+#: Annotations.xml:211
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. If the context "
+"variable is null, an instance of the component is instantiated by Seam."
+msgstr ""
+"コンポーネント属性がコンポーネント呼び出しの開始時にコンテキスト変数からイン"
+"ジェクトされることを指定します。"
+
+#. Tag: programlisting
+#: Annotations.xml:214
+#, no-c-format
+msgid "@In(value=\"contextVariableName\")"
+msgstr "@In(value=\"contextVariableName\")"
+
+#. Tag: para
+#: Annotations.xml:215 Annotations.xml:260
+#, no-c-format
+msgid ""
+"Specifies the name of the context variable explicitly, instead of using the "
+"annotated instance variable name."
+msgstr ""
+"アノテーションを付けられたインスタンス変数名を使用せず、 コンテキスト変数名を"
+"明示的に指定します。"
+
+#. Tag: programlisting
+#: Annotations.xml:218
+#, no-c-format
+msgid "@In(value=\"#{customer.addresses[&#39;shipping&#39;]}\")"
+msgstr "@In(value=\"#{customer.addresses[&#39;shipping&#39;]}\")"
+
+#. Tag: para
+#: Annotations.xml:219
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected by evaluating a JSF "
+"EL expression at the beginning of each component invocation."
+msgstr ""
+"コンポーネント属性が各コンポーネント呼び出しの開始時に JSF EL 式を評価するこ"
+"とでインジェクトされることを指定します。"
+
+#. Tag: para
+#: Annotations.xml:224
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"Default to the name of the component attribute. Alternatively, specifies a "
+"JSF EL expression, surrounded by <literal>#{...}</literal>."
+msgstr ""
+"<literal>value</literal> &mdash; コンテキスト変数名を指定します。 デフォルト"
+"はコンポーネントの属性名です。 あるいは、 <literal>#{...}</literal> で括られ"
+"た JSF EL 式を指定します。"
+
+#. Tag: para
+#: Annotations.xml:229
+#, no-c-format
+msgid ""
+"<literal>create</literal> &mdash; specifies that Seam should instantiate the "
+"component with the same name as the context variable if the context variable "
+"is undefined (null) in all contexts. Default to false."
+msgstr ""
+"<literal>create</literal> &mdash; コンテキスト変数がすべてのコンテキストで定"
+"義されていない (null) 場合に Seam がコンテキスト変数と同じ名前でコンポーネン"
+"トをインスタンス化することを指定します。 デフォルトは false です。"
+
+#. Tag: para
+#: Annotations.xml:234
+#, no-c-format
+msgid ""
+"<literal>required</literal> &mdash; specifies Seam should throw an exception "
+"if the context variable is undefined in all contexts."
+msgstr ""
+"<literal>required</literal> &mdash; コンテキスト変数がすべてのコンテキストで"
+"定義されていない場合に Seam が例外を発生させることを指定します。"
+
+#. Tag: literal
+#: Annotations.xml:242
+#, no-c-format
+msgid "<literal>@Out</literal>"
+msgstr "<literal>@Out</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:244
+#, no-c-format
+msgid "<programlisting>@Out</programlisting>"
+msgstr "<programlisting>@Out</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:245
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is a Seam component is to be "
+"outjected to its context variable at the end of the invocation. If the "
+"attribute is null, an exception is thrown."
+msgstr ""
+"Seam コンポーネントであるコンポーネントの属性が呼び出しの終わりでそのコンテキ"
+"スト変数にアウトジェクトされることを指定します。 属性が null の場合、 例外が"
+"発生します。"
+
+#. Tag: programlisting
+#: Annotations.xml:248
+#, no-c-format
+msgid "@Out(required=false)"
+msgstr "@Out(required=false)"
+
+#. Tag: para
+#: Annotations.xml:249
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is a Seam component is to be "
+"outjected to its context variable at the end of the invocation. The "
+"attribute may be null."
+msgstr ""
+"Seam コンポーネントであるコンポーネントの属性が呼び出しの終わりでそのコンテキ"
+"スト変数にアウトジェクトされることを指定します。 属性は null でも構いません。"
+
+#. Tag: programlisting
+#: Annotations.xml:252
+#, no-c-format
+msgid "@Out(scope=ScopeType.SESSION)"
+msgstr "@Out(scope=ScopeType.SESSION)"
+
+#. Tag: para
+#: Annotations.xml:253
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is <emphasis>not</emphasis> a Seam "
+"component type is to be outjected to a specific scope at the end of the "
+"invocation."
+msgstr ""
+"Seam コンポーネントタイプではないコンポーネントの属性が呼び出しの終わりで特定"
+"スコープにアウトジェクトされることを指定します。"
+
+#. Tag: para
+#: Annotations.xml:256
+#, no-c-format
+msgid ""
+"Alternatively, if no scope is explicitly specified, the scope of the "
+"component with the <literal>@Out</literal> attribute is used (or the "
+"<literal>EVENT</literal> scope if the component is stateless)."
+msgstr ""
+"明示的にスコープが指定されていない場合、 代わりに <literal>@Out</literal> 属"
+"性を持つコンポーネント自体のスコープが使用されます (またはコンポーネントがス"
+"テートレスであれば <literal>EVENT</literal>) 。"
+
+#. Tag: programlisting
+#: Annotations.xml:259
+#, no-c-format
+msgid "@Out(value=\"contextVariableName\")"
+msgstr "@Out(value=\"contextVariableName\")"
+
+#. Tag: para
+#: Annotations.xml:265
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"Default to the name of the component attribute."
+msgstr ""
+"<literal>value</literal> &mdash; コンテキスト変数名を指定します。 デフォルト"
+"はコンポーネントの属性名です。"
+
+#. Tag: para
+#: Annotations.xml:270
+#, no-c-format
+msgid ""
+"<literal>required</literal> &mdash; specifies Seam should throw an exception "
+"if the component attribute is null during outjection."
+msgstr ""
+"<literal>required</literal> &mdash; アウトジェクションを行ったときにコンポー"
+"ネント属性が null だった場合、 Seam が例外を発生させることを指定します。"
+
+#. Tag: para
+#: Annotations.xml:278
+#, no-c-format
+msgid ""
+"Note that it is quite common for these annotations to occur together, for "
+"example:"
+msgstr "これらのアノテーションは同時に利用されます。 例:"
+
+#. Tag: programlisting
+#: Annotations.xml:281
+#, no-c-format
+msgid "@In(create=true) @Out private User currentUser;"
+msgstr "@In(create=true) @Out private User currentUser;"
+
+#. Tag: para
+#: Annotations.xml:282
+#, no-c-format
+msgid ""
+"The next annotation supports the <emphasis>manager component</emphasis> "
+"pattern, where a Seam component that manages the lifecycle of an instance of "
+"some other class that is to be injected. It appears on a component getter "
+"method."
+msgstr ""
+"次のアノテーションは <emphasis>マネージャコンポーネント</emphasis> パターンを"
+"サポートします。 このアノテーションは、インジェクトされる他のいくつかのクラス"
+"のインスタンスのライフサイクルを管理する Seam コンポーネントで利用され、コン"
+"ポーネントの getter メソッドに付与されます。"
+
+#. Tag: literal
+#: Annotations.xml:287
+#, no-c-format
+msgid "<literal>@Unwrap</literal>"
+msgstr "<literal>@Unwrap</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:289
+#, no-c-format
+msgid "<programlisting>@Unwrap</programlisting>"
+msgstr "<programlisting>@Unwrap</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:290
+#, no-c-format
+msgid ""
+"Specifies that the object returned by the annotated getter method is the "
+"thing that is injected instead of the component instance itself."
+msgstr ""
+"このアノテーションが付いている getter メソッドにより返されるオブジェクトが、"
+"コンポーネントインスタンス自体の代わりにインジェクトされます。"
+
+#. Tag: para
+#: Annotations.xml:296
+#, no-c-format
+msgid ""
+"The next annotation supports the <emphasis>factory component</emphasis> "
+"pattern, where a Seam component is responsible for initializing the value of "
+"a context variable. This is especially useful for initializing any state "
+"needed for rendering the response to a non-faces request. It appears on a "
+"component method."
+msgstr ""
+"次のアノテーションは <emphasis>ファクトリコンポーネント</emphasis> パターンを"
+"サポートします。 Seam コンポーネントはコンテキスト変数の値の初期化を行いま"
+"す。 特に非 Faces リクエストに対するレスポンスのレンダリングに必要なあらゆる"
+"状態の初期化に便利です。 コンポーネントメソッドで指定されます。"
+
+#. Tag: literal
+#: Annotations.xml:301
+#, no-c-format
+msgid "@Factory"
+msgstr "@Factory"
+
+#. Tag: programlisting
+#: Annotations.xml:303
+#, no-c-format
+msgid "@Factory(\"processInstance\")"
+msgstr "@Factory(\"processInstance\")"
+
+#. Tag: para
+#: Annotations.xml:304
+#, no-c-format
+msgid ""
+"Specifies that the method of the component is used to initialize the value "
+"of the named context variable, when the context variable has no value. This "
+"style is used with methods that return <literal>void</literal>."
+msgstr ""
+"コンテキスト変数に値がない場合に、 このコンポーネントのメソッドが指定コンテキ"
+"スト変数の値の初期化に使用されることを指定します。 このスタイルは "
+"<literal>void</literal> を返すメソッドと併用します。"
+
+#. Tag: programlisting
+#: Annotations.xml:307
+#, no-c-format
+msgid "@Factory(\"processInstance\", scope=CONVERSATION)"
+msgstr "@Factory(\"processInstance\", scope=CONVERSATION)"
+
+#. Tag: para
+#: Annotations.xml:308
+#, no-c-format
+msgid ""
+"Specifies that the method returns a value that Seam should use to initialize "
+"the value of the named context variable, when the context variable has no "
+"value. This style is used with methods that return a value. If no scope is "
+"explicitly specified, the scope of the component with the <literal>@Factory</"
+"literal> method is used (unless the component is stateless, in which case "
+"the <literal>EVENT</literal> context is used)."
+msgstr ""
+"コンテキスト変数に値がない場合、 Seam が指定コンテキスト変数の値の初期化に使"
+"用する値をこのメソッドが返すことを指定します。 このスタイルは値を返すメソッド"
+"と併用します。 明示的にスコープが指定されていない場合、 <literal>@Factory</"
+"literal> メソッドを持つコンポーネント自体のスコープが使用されます (そのコン"
+"ポーネントがステートレスではない場合。 コンポーネントがステートレスである場合"
+"は<literal>EVENT</literal> コンテキストが使用される) 。"
+
+#. Tag: para
+#: Annotations.xml:313
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"If the method is a getter method, default to the JavaBeans property name."
+msgstr ""
+"<literal>value</literal> &mdash; コンテキスト変数名を指定します。 メソッドが "
+"getter メソッドなら、 デフォルトは JavaBeans プロパティ名となります。"
+
+#. Tag: para
+#: Annotations.xml:318
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; specifies the scope that Seam should bind "
+"the returned value to. Only meaningful for factory methods which return a "
+"value."
+msgstr ""
+"<literal>scope</literal> &mdash; Seam が返される値をバインドする先のスコープを指定"
+"します。 値を返すファクトリメソッドに対してしか意味がありません。"
+
+#. Tag: para
+#: Annotations.xml:326
+#, no-c-format
+msgid "This annotation lets you inject a <literal>Log</literal>:"
+msgstr "<literal>Log</literal> をインジェクトするアノテーション:"
+
+#. Tag: literal
+#: Annotations.xml:331
+#, no-c-format
+msgid "@Logger"
+msgstr "@Logger"
+
+#. Tag: programlisting
+#: Annotations.xml:333
+#, no-c-format
+msgid "@Logger(\"categoryName\")"
+msgstr "@Logger(\"categoryName\")"
+
+#. Tag: para
+#: Annotations.xml:334
+#, no-c-format
+msgid ""
+"Specifies that a component field is to be injected with an instance of "
+"<literal>org.jboss.seam.log.Log</literal>. For entity beans, the field must "
+"be declared as static."
+msgstr ""
+"コンポーネントフィールドに <literal>org.jboss.seam.log.Log</literal> のインス"
+"タンスをインジェクトしますします。 エンティティ Bean の場合、 このフィールド"
+"は static として宣言されなければなりません。"
+
+#. Tag: para
+#: Annotations.xml:339
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the log category. "
+"Default to the name of the component class."
+msgstr ""
+"<literal>value</literal> &mdash; ログカテゴリ名を指定します。 デフォルトはコ"
+"ンポーネントクラス名です。"
+
+#. Tag: para
+#: Annotations.xml:347
+#, no-c-format
+msgid "The last annotation lets you inject a request parameter value:"
+msgstr "最後のアノテーション、リクエストパラメータ値のインジェクト:"
+
+#. Tag: literal
+#: Annotations.xml:352
+#, no-c-format
+msgid "@RequestParameter"
+msgstr "@RequestParameter"
+
+#. Tag: programlisting
+#: Annotations.xml:354
+#, no-c-format
+msgid "@RequestParameter(\"parameterName\")"
+msgstr "@RequestParameter(\"parameterName\")"
+
+#. Tag: para
+#: Annotations.xml:355
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected with the value of a "
+"request parameter. Basic type conversions are performed automatically."
+msgstr ""
+"コンポーネントの属性にリクエストパラメータ値をインジェクトします。 基本的な対"
+"話は自動的に開始されます。"
+
+#. Tag: para
+#: Annotations.xml:360
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the request "
+"parameter. Default to the name of the component attribute."
+msgstr ""
+"<literal>value</literal> &mdash; リクエストパラメータ名を指定します。 デフォ"
+"ルトはコンポーネント属性名です。"
+
+#. Tag: title
+#: Annotations.xml:371
+#, no-c-format
+msgid "Annotations for component lifecycle methods"
+msgstr "コンポーネントのライフサイクルメソッド用アノテーション"
+
+#. Tag: para
+#: Annotations.xml:372
+#, no-c-format
+msgid ""
+"These annotations allow a component to react to its own lifecycle events. "
+"They occur on methods of the component. There may be only one of each per "
+"component class."
+msgstr ""
+"これらのアノテーションにより、 コンポーネントがそのコンポーネント自体のライフ"
+"サイクルイベントに対して反応することができるようになります。 各コンポーネント"
+"クラスごとにそれぞれ 1 つのアノテーションのみ定義できます。"
+
+#. Tag: literal
+#: Annotations.xml:377
+#, no-c-format
+msgid "<literal>@Create</literal>"
+msgstr "<literal>@Create</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:379
+#, no-c-format
+msgid "<programlisting>@Create</programlisting>"
+msgstr "<programlisting>@Create</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:380
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when an instance of the component "
+"is instantiated by Seam. Note that create methods are only supported for "
+"JavaBeans and stateful session beans."
+msgstr ""
+"コンポーネントのインスタンスが Seam によってインスタンス化されたときに呼び出"
+"されるメソッドを指定します。 create メソッドは JavaBeans およびステートフル"
+"セッション Bean に対してしかサポートされないので注意してください。"
+
+#. Tag: literal
+#: Annotations.xml:386
+#, no-c-format
+msgid "<literal>@Destroy</literal>"
+msgstr "<literal>@Destroy</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:388
+#, no-c-format
+msgid "<programlisting>@Destroy</programlisting>"
+msgstr "<programlisting>@Destroy</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:389
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when the context ends and its "
+"context variables are destroyed. Note that create methods are only supported "
+"for JavaBeans and stateful session beans."
+msgstr ""
+"コンテキストが終了し、そのコンテキスト変数が破棄されるときの呼び出されるメ"
+"ソッドを指定します。  destroy メソッドは JavaBeans およびステートフルセッショ"
+"ン Bean に対してしかサポートされないので注意してください。"
+
+#. Tag: para
+#: Annotations.xml:392
+#, no-c-format
+msgid ""
+"Note that all stateful session bean components <emphasis>must</emphasis> "
+"define a method annotated <literal>@Destroy @Remove</literal> in order to "
+"guarantee destruction of the stateful bean when a context ends."
+msgstr ""
+"コンテキストが終了したときにステートフル Bean を必ず破棄するようにするため、 "
+"すべてのステートフルセッション Bean コンポーネントには <literal>@Destroy "
+"@Remove</literal> アノテーションを付けたメソッドを定義するようにしてくださ"
+"い。"
+
+#. Tag: para
+#: Annotations.xml:395
+#, no-c-format
+msgid ""
+"Destroy methods should be used only for cleanup. <emphasis>Seam catches, "
+"logs and swallows any exception that propagates out of a destroy method.</"
+"emphasis>"
+msgstr ""
+"Destroy メソッドはクリーンアップにのみ使用するようにしてください。 "
+"<emphasis>Seam は destroy メソッドから伝播する例外はすべてキャッチしてログを"
+"出力し、捨ててしまいます。</emphasis>"
+
+#. Tag: literal
+#: Annotations.xml:401
+#, no-c-format
+msgid "@Observer"
+msgstr "@Observer"
+
+#. Tag: programlisting
+#: Annotations.xml:403
+#, no-c-format
+msgid "@Observer(\"somethingChanged\")"
+msgstr "@Observer(\"somethingChanged\")"
+
+#. Tag: para
+#: Annotations.xml:404
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when a component-driven event of "
+"the specified type occurs."
+msgstr ""
+"指定されたタイプのコンポーネント駆動イベントが発生すると、このメソッドが呼び"
+"出されます。"
+
+#. Tag: programlisting
+#: Annotations.xml:407
+#, no-c-format
+msgid "@Observer(value=\"somethingChanged\",create=false)"
+msgstr "@Observer(value=\"somethingChanged\",create=false)"
+
+#. Tag: para
+#: Annotations.xml:408
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when an event of the specified "
+"type occurs but that an instance should not be created if one doesn&#39;t "
+"exist. If an instance does not exist and create is false, the event will not "
+"be observed. The default value for create is true."
+msgstr ""
+"指定されたタイプのイベントが発生するとこのメソッドが呼び出されますが、 インス"
+"タンスが存在しない場合はインスタンスを作成しないことを指定します。 インスタン"
+"スが存在せず create が false の場合は、 そのイベントは捕捉されません。 "
+"create のデフォルト値は true です。"
+
+#. Tag: title
+#: Annotations.xml:417
+#, no-c-format
+msgid "Annotations for context demarcation"
+msgstr "コンテキスト境界用アノテーション"
+
+#. Tag: para
+#: Annotations.xml:418
+#, no-c-format
+msgid ""
+"These annotations provide declarative conversation demarcation. They appear "
+"on methods of Seam components, usually action listener methods."
+msgstr ""
+"これらのアノテーションは宣言的対話の境界を設定します。 これらは Seam コンポー"
+"ネントのメソッド上、通常はアクションリスナメソッドに付与されます。"
+
+#. Tag: para
+#: Annotations.xml:421
+#, no-c-format
+msgid ""
+"Every web request has a conversation context associated with it. Most of "
+"these conversations end at the end of the request. If you want a "
+"conversation that span multiple requests, you must \"promote\" the current "
+"conversation to a <emphasis>long-running conversation</emphasis> by calling "
+"a method marked with <literal>@Begin</literal>."
+msgstr ""
+"すべての WEB リクエストはそれに関連する対話的コンテキストを持っています。 ほ"
+"とんどの対話はリクエストの終了と同時に終了します。 複数のリクエストにわたる対"
+"話が必要であれば、@Begin を付けたメソッドを呼び出すことで、 長期対話に昇格さ"
+"せなければなりません。"
+
+#. Tag: literal
+#: Annotations.xml:426
+#, no-c-format
+msgid "<literal>@Begin</literal>"
+msgstr "<literal>@Begin</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:430
+#, no-c-format
+msgid "<programlisting>@Begin</programlisting>"
+msgstr "<programlisting>@Begin</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:431
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation begins when this method returns a "
+"non-null outcome without exception."
+msgstr ""
+"このメソッドが例外および null 以外の outcome を返したら長期対話が開始すること"
+"を指定します。"
+
+#. Tag: programlisting
+#: Annotations.xml:436
+#, no-c-format
+msgid "@Begin(ifOutcome={\"success\", \"continue\"})"
+msgstr "@Begin(ifOutcome={\"success\", \"continue\"})"
+
+#. Tag: para
+#: Annotations.xml:437
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation begins when this action listener "
+"method returns with one of the given outcomes."
+msgstr ""
+"このアクションリスナメソッドが指定された outcome を返したら長期対話が開始する"
+"ことを指定します。"
+
+#. Tag: programlisting
+#: Annotations.xml:442
+#, no-c-format
+msgid "@Begin(join=true)"
+msgstr "@Begin(join=true)"
+
+#. Tag: para
+#: Annotations.xml:443
+#, no-c-format
+msgid ""
+"Specifies that if a long-running conversation is already in progress, the "
+"conversation context is simply propagated."
+msgstr ""
+"長期対話がすでに開始されている場合、 対話コンテキストが単に伝播されることを指"
+"定します。"
+
+#. Tag: programlisting
+#: Annotations.xml:448
+#, no-c-format
+msgid "@Begin(nested=true)"
+msgstr "@Begin(nested=true)"
+
+#. Tag: para
+#: Annotations.xml:449
+#, no-c-format
+msgid ""
+"Specifies that if a long-running conversation is already in progress, a new "
+"<emphasis>nested</emphasis> conversation context begins. The nested "
+"conversation will end when the next <literal>@End</literal> is encountered, "
+"and the outer conversation will resume. It is perfectly legal for multiple "
+"nested conversations to exist concurrently in the same outer conversation."
+msgstr ""
+"長期対話がすでに開始されている場合、 新たにネストされた対話コンテキストが開始"
+"することを指定します。 次の <literal>@End</literal> が出現したときにネストさ"
+"れた対話が終了し、 外側の対話が再開します。 同じ外側の対話において、 複数のネ"
+"ストされた対話が同時に存在することは全く問題ありません。"
+
+#. Tag: programlisting
+#: Annotations.xml:454
+#, no-c-format
+msgid "@Begin(pageflow=\"process definition name\")"
+msgstr "@Begin(pageflow=\"process definition name\")"
+
+#. Tag: para
+#: Annotations.xml:455
+#, no-c-format
+msgid ""
+"Specifies a jBPM process definition name that defines the pageflow for this "
+"conversation."
+msgstr "この対話のためのページフローを定義する jBPM プロセス定義の名前を定義します。"
+
+#. Tag: programlisting
+#: Annotations.xml:460
+#, no-c-format
+msgid "@Begin(flushMode=FlushModeType.MANUAL)"
+msgstr "@Begin(flushMode=FlushModeType.MANUAL)"
+
+#. Tag: para
+#: Annotations.xml:461
+#, no-c-format
+msgid ""
+"Specify the flush mode of any Seam-managed persistence contexts. "
+"<literal>flushMode=FlushModeType.MANUAL</literal> supports the use of "
+"<emphasis>atomic conversations</emphasis> where all write operations are "
+"queued in the conversation context until an explicit call to <literal>flush()"
+"</literal> (which usually occurs at the end of the conversation)."
+msgstr ""
+"Seam 管理の永続コンテキストのフラッシュモードを指定します。 "
+"<literal>flushMode=FlushModeType.MANUAL</literal> は <emphasis>atomic "
+"conversations</emphasis> をサポートします。 この場合、 <literal>flush () </"
+"literal> (通常、 対話終了時に呼び出される) の明示的なコールが起きるまで、 す"
+"べての書き込み動作は対話コンテキスト内にキューイングされます。"
+
+#. Tag: para
+#: Annotations.xml:468
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in a new long-running conversation context."
+msgstr ""
+"<literal>ifOutcome</literal> &mdash; 新しい長期対話コンテキストとなるJSF "
+"outcome (s) を指定します。"
+
+#. Tag: para
+#: Annotations.xml:473
+#, no-c-format
+msgid ""
+"<literal>join</literal> &mdash; determines the behavior when a long-running "
+"conversation is already in progress. If <literal>true</literal>, the context "
+"is propagated. If <literal>false</literal>, an exception is thrown. Default "
+"to <literal>false</literal>. This setting is ignored when "
+"<literal>nested=true</literal> is specified"
+msgstr ""
+"<literal>join</literal> &mdash; 長期対話がすでに開始されている場合の動作を指"
+"定します。 <literal>true</literal> であれば、 コンテキストは伝播されます。 "
+"<literal>false</literal> であれば、 例外が発生します。 デフォルトは "
+"<literal>false</literal> です。 <literal>nested=true</literal> が指定される場"
+"合は、 この設定は無視されます。"
+
+#. Tag: para
+#: Annotations.xml:478
+#, no-c-format
+msgid ""
+"<literal>nested</literal> &mdash; specifies that a nested conversation "
+"should be started if a long-running conversation is already in progress."
+msgstr ""
+"<literal>nested</literal> &mdash; 長期対話がすでに開始されている場合、 ネスト"
+"された対話が開始されることを指定します。"
+
+#. Tag: para
+#: Annotations.xml:483 Annotations.xml:550 Annotations.xml:574
+#, no-c-format
+msgid ""
+"<literal>flushMode</literal> &mdash; set the flush mode of any Seam-managed "
+"Hibernate sessions or JPA persistence contexts that are created during this "
+"conversation."
+msgstr ""
+"<literal>flushMode</literal> &mdash; この対話で作成される Seam 管理の "
+"Hibernate セッション、または JPA 永続コンテキストのフラッシュモードをセットし"
+"ます。"
+
+#. Tag: para
+#: Annotations.xml:488
+#, no-c-format
+msgid ""
+"<literal>pageflow</literal> &mdash; a process definition name of a jBPM "
+"process definition deployed via <literal>org.jboss.seam.core.jbpm."
+"pageflowDefinitions.</literal>"
+msgstr ""
+"<literal>pageflow</literal> &mdash; <literal>org.jboss.seam.core.jbpm."
+"pageflowDefinitions.</literal> によってデプロイされた jBPM プロセス定義のプロ"
+"セス定義名です。"
+
+#. Tag: literal
+#: Annotations.xml:498
+#, no-c-format
+msgid "<literal>@End</literal>"
+msgstr "<literal>@End</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:504
+#, no-c-format
+msgid "<programlisting>@End</programlisting>"
+msgstr "<programlisting>@End</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:505
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation ends when this method returns a "
+"non-null outcome without exception."
+msgstr ""
+"このメソッドが例外および null 以外の outcome を返す場合、 長期対話が終了する"
+"ことを指定します。"
+
+#. Tag: programlisting
+#: Annotations.xml:510
+#, no-c-format
+msgid ""
+"@End(ifOutcome={\"success\", \"error\"}, evenIfException={SomeException."
+"class, OtherException.class})"
+msgstr ""
+"@End(ifOutcome={\"success\", \"error\"}, evenIfException={SomeException."
+"class, OtherException.class})"
+
+#. Tag: para
+#: Annotations.xml:511
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation ends when this action listener "
+"method returns with one of the given outcomes or throws one of the specified "
+"classes of exception."
+msgstr ""
+"このアクションリスナメソッドが指定された outcome の 1 つを返すか、あるいは指"
+"定された例外の 1 つをスローする場合に、 長期対話が終了することを指定します。"
+
+#. Tag: para
+#: Annotations.xml:518
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in the end of the current long-running conversation."
+msgstr ""
+"<literal>ifOutcome</literal> &mdash; JSF 結果あるいは現在の長期対話の終了と"
+"なるような結果を指定します。"
+
+#. Tag: para
+#: Annotations.xml:523 Annotations.xml:617
+#, no-c-format
+msgid ""
+"<literal>beforeRedirect</literal> &mdash; by default, the conversation will "
+"not actually be destroyed until after any redirect has occurred. Setting "
+"<literal>beforeRedirect=true</literal> specifies that the conversation "
+"should be destroyed at the end of the current request, and that the redirect "
+"will be processed in a new temporary conversation context."
+msgstr ""
+"<literal>beforeRedirect</literal> &mdash; デフォルトでは、 なんらかのリダイレ"
+"クトが発生するまで対話は実際には破棄されません。 "
+"<literal>beforeRedirect=true</literal> と設定すると、 現在のリクエストの終了"
+"で対話が破棄され、 リダイレクトが新しいテンポラリ対話コンテキストで処理される"
+"よう指定することになります。"
+
+#. Tag: literal
+#: Annotations.xml:534
+#, no-c-format
+msgid "<literal>@StartTask</literal>"
+msgstr "<literal>@StartTask</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:536
+#, no-c-format
+msgid "<programlisting>@StartTask</programlisting>"
+msgstr "<programlisting>@StartTask</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:537
+#, no-c-format
+msgid ""
+"\"Starts\" a jBPM task. Specifies that a long-running conversation begins "
+"when this method returns a non-null outcome without exception. This "
+"conversation is associated with the jBPM task specified in the named request "
+"parameter. Within the context of this conversation, a business process "
+"context is also defined, for the business process instance of the task "
+"instance."
+msgstr ""
+"jBPM タスクを「開始」します。 このメソッドが例外および null 以外の outcome を"
+"返すとき、 長期対話を開始することを指定します。 この対話は指定のリクエストパ"
+"ラメータ中で指定される jBPM タスクと関連しています。 この対話のコンテキスト内"
+"で、 タスクインスタンスのビジネスプロセスインスタンスに対して、 ビジネスプロ"
+"セスコンテキストも定義されます。"
+
+#. Tag: para
+#: Annotations.xml:540
+#, no-c-format
+msgid ""
+"The jBPM <literal>TaskInstance</literal> will be available in a request "
+"context variable named <literal>taskInstance</literal>. The jPBM "
+"<literal>ProcessInstance</literal> will be available in a request context "
+"variable named <literal>processInstance</literal>. (Of course, these objects "
+"are available for injection via <literal>@In</literal>.)"
+msgstr ""
+"jBPM <literal>TaskInstance</literal> は、 <literal>taskInstance</literal>  と"
+"いう名前のリクエストコンテキスト変数として利用可能となります。 jBPM "
+"<literal>ProcessInstance</literal> は、 <literal>processInstance</literal> と"
+"いう名前のリクエストコンテキスト変数として利用可能です。 (もちろん、これらの"
+"オブジェクトは <literal>@In</literal> でインジェクションが可能です。) "
+
+#. Tag: para
+#: Annotations.xml:545 Annotations.xml:569
+#, no-c-format
+msgid ""
+"<literal>taskIdParameter</literal> &mdash; the name of a request parameter "
+"which holds the id of the task. Default to <literal>\"taskId\"</literal>, "
+"which is also the default used by the Seam <literal>taskList</literal> JSF "
+"component."
+msgstr ""
+"<literal>taskIdParameter</literal> &mdash; タスクの ID を持つリクエストパラ"
+"メータの名前です。 デフォルトは <literal>\"taskId\"</literal> です。 これは "
+"Seam <literal>taskList</literal> JSF コンポーネントが使用するデフォルトでもあ"
+"ります。"
+
+#. Tag: literal
+#: Annotations.xml:558
+#, no-c-format
+msgid "<literal>@BeginTask</literal>"
+msgstr "<literal>@BeginTask</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:560
+#, no-c-format
+msgid "<programlisting>@BeginTask</programlisting>"
+msgstr "<programlisting>@BeginTask</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:561
+#, no-c-format
+msgid ""
+"Resumes work on an incomplete jBPM task. Specifies that a long-running "
+"conversation begins when this method returns a non-null outcome without "
+"exception. This conversation is associated with the jBPM task specified in "
+"the named request parameter. Within the context of this conversation, a "
+"business process context is also defined, for the business process instance "
+"of the task instance."
+msgstr ""
+"完了していない jBPM タスクの処理を再開します。 このメソッドが例外および null "
+"以外の outcome を返すとき、 長期対話が開始することを指定します。 この対話は指"
+"定のリクエストパラメータ中で指定される jBPM タスクと関連しています。 この対話"
+"のコンテキスト内で、 タスクインスタンスのビジネスプロセスインスタンスに対し"
+"て、 ビジネスプロセスコンテキストも定義されます。"
+
+#. Tag: para
+#: Annotations.xml:564
+#, no-c-format
+msgid ""
+"The jBPM <literal>TaskInstance</literal> will be available in a request "
+"context variable named <literal>taskInstance</literal>. The jPBM "
+"<literal>ProcessInstance</literal> will be available in a request context "
+"variable named <literal>processInstance</literal>."
+msgstr ""
+"jBPM <literal>TaskInstance</literal> は 、 <literal>taskInstance</literal> と"
+"いう名前のリクエストコンテキスト変数として利用可能になります。 jBPM "
+"<literal>ProcessInstance</literal> は、 <literal>processInstance</literal> と"
+"いう名前のリクエストコンテキスト変数として利用できます。"
+
+#. Tag: literal
+#: Annotations.xml:582
+#, no-c-format
+msgid "<literal>@EndTask</literal>"
+msgstr "<literal>@EndTask</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:587
+#, no-c-format
+msgid "<programlisting>@EndTask</programlisting>"
+msgstr "<programlisting>@EndTask</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:588
+#, no-c-format
+msgid ""
+"\"Ends\" a jBPM task. Specifies that a long-running conversation ends when "
+"this method returns a non-null outcome, and that the current task is "
+"complete. Triggers a jBPM transition. The actual transition triggered will "
+"be the default transition unless the application has called "
+"<literal>Transition.setName()</literal> on the built-in component named "
+"<literal>transition</literal>."
+msgstr ""
+"jBPM タスクを「終了」します。 このメソッドが null 以外の結果を返すとき、 長期"
+"対話は終了し、 現在のタスクが完了することを指定します。 jBPM トランジションを"
+"引き起こします。 アプリケーションが <literal>transition</literal> と呼ばれる"
+"組込みコンポーネントの <literal>Transition.setName () </literal> を呼んでいな"
+"い限り、 引き起こされる実際のトランジッションはデフォルトのトランザクションに"
+"なります。"
+
+#. Tag: programlisting
+#: Annotations.xml:593
+#, no-c-format
+msgid "@EndTask(transition=\"transitionName\")"
+msgstr "@EndTask(transition=\"transitionName\")"
+
+#. Tag: para
+#: Annotations.xml:594
+#, no-c-format
+msgid "Triggers the given jBPM transition."
+msgstr "指定された jBPM トランジションを引き起こします。"
+
+#. Tag: programlisting
+#: Annotations.xml:599
+#, no-c-format
+msgid "@EndTask(ifOutcome={\"success\", \"continue\"})"
+msgstr "@EndTask(ifOutcome={\"success\", \"continue\"})"
+
+#. Tag: para
+#: Annotations.xml:600
+#, no-c-format
+msgid ""
+"Specifies that the task ends when this method returns one of the listed "
+"outcomes."
+msgstr ""
+"このメソッドが指定された outcome のいずれかを返すとき、タスクが終了することを"
+"指定します。"
+
+#. Tag: para
+#: Annotations.xml:607
+#, no-c-format
+msgid ""
+"<literal>transition</literal> &mdash; the name of the jBPM transition to be "
+"triggered when ending the task. Defaults to the default transition."
+msgstr ""
+"<literal>transition</literal> &mdash; タスクが終了するときに引き起こされる "
+"jBPM トランジションの名前です。 省略された場合はデフォルトトランジションとな"
+"ります。"
+
+#. Tag: para
+#: Annotations.xml:612
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in the end of the task."
+msgstr ""
+"<literal>ifOutcome</literal> &mdash; タスクを終了させる JSF outcome を指定し"
+"ます。"
+
+#. Tag: literal
+#: Annotations.xml:628
+#, no-c-format
+msgid "@CreateProcess"
+msgstr "@CreateProcess"
+
+#. Tag: programlisting
+#: Annotations.xml:630
+#, no-c-format
+msgid "@CreateProcess(definition=\"process definition name\")"
+msgstr "@CreateProcess(definition=\"process definition name\")"
+
+#. Tag: para
+#: Annotations.xml:631
+#, no-c-format
+msgid ""
+"Creates a new jBPM process instance when the method returns a non-null "
+"outcome without exception. The <literal>ProcessInstance</literal> object "
+"will be available in a context variable named <literal>processInstance</"
+"literal>."
+msgstr ""
+"メソッドが例外なしに null 以外の outcome を返すとき、 新しい jBPM プロセスイ"
+"ンスタンスを作成します。 <literal>ProcessInstance</literal> オブジェクトは "
+"<literal>processInstance</literal> というコンテキスト変数として使用できます。"
+
+#. Tag: para
+#: Annotations.xml:636
+#, no-c-format
+msgid ""
+"<literal>definition</literal> &mdash; the name of the jBPM process "
+"definition deployed via <literal>org.jboss.seam.core.jbpm."
+"processDefinitions</literal>."
+msgstr ""
+"<literal>definition</literal> &mdash; <literal>org.jboss.seam.core.jbpm."
+"processDefinitions</literal> によってデプロイされる jBPM プロセス定義の名前で"
+"す。"
+
+#. Tag: literal
+#: Annotations.xml:644
+#, no-c-format
+msgid "@ResumeProcess"
+msgstr "@ResumeProcess"
+
+#. Tag: programlisting
+#: Annotations.xml:646
+#, no-c-format
+msgid "@ResumeProcess(processIdParameter=\"processId\")"
+msgstr "@ResumeProcess(processIdParameter=\"processId\")"
+
+#. Tag: para
+#: Annotations.xml:647
+#, no-c-format
+msgid ""
+"Re-enters the scope of an existing jBPM process instance when the method "
+"returns a non-null outcome without exception. The <literal>ProcessInstance</"
+"literal> object will be available in a context variable named "
+"<literal>processInstance</literal>."
+msgstr ""
+"メソッドが例外または null 以外の outcome を返すとき、 既存の jBPM プロセスイ"
+"ンスタンスのスコープに再度入ります。 <literal>ProcessInstance</literal> オブ"
+"ジェクトは <literal>processInstance</literal> というコンテキスト変数で使用で"
+"きます。"
+
+#. Tag: para
+#: Annotations.xml:652
+#, no-c-format
+msgid ""
+"<literal>processIdParameter</literal> &mdash; the name a request parameter "
+"holding the process id. Default to <literal>\"processId\"</literal>."
+msgstr ""
+"<literal>processIdParameter</literal> &mdash; プロセス ID を持つリクエストパ"
+"ラメータ名です。 デフォルトは <literal>\"processId\"</literal> です。"
+
+#. Tag: title
+#: Annotations.xml:663
+#, no-c-format
+msgid "Annotations for transaction demarcation"
+msgstr "トランザクション境界用のアノテーション"
+
+#. Tag: para
+#: Annotations.xml:664
+#, no-c-format
+msgid ""
+"Seam provides an annotation that lets you force a rollback of the JTA "
+"transaction for certain action listener outcomes."
+msgstr ""
+"Seam は特定のアクションリスナの outcome に対すて JTA トランザクションのロール"
+"バックを強制するアノテーションを提供します。"
+
+#. Tag: literal
+#: Annotations.xml:669
+#, no-c-format
+msgid "@Rollback"
+msgstr "@Rollback"
+
+#. Tag: programlisting
+#: Annotations.xml:671
+#, no-c-format
+msgid "@Rollback(ifOutcome={\"failure\", \"not-found\"})"
+msgstr "@Rollback(ifOutcome={\"failure\", \"not-found\"})"
+
+#. Tag: para
+#: Annotations.xml:672
+#, no-c-format
+msgid ""
+"If the outcome of the method matches any of the listed outcomes, or if no "
+"outcomes are listed, set the transaction to rollback only when the method "
+"completes."
+msgstr ""
+"メソッドの結果が指定された outcome のいずれかと一致する場合、 あるいは "
+"outcome を指定していない場合、 メソッドが完了したときにトランザクションがロー"
+"ルバックされるよう設定されます。"
+
+#. Tag: para
+#: Annotations.xml:677
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; the JSF outcomes that cause a "
+"transaction rollback (no outcomes is interpreted to mean any outcome)."
+msgstr ""
+"<literal>ifOutcome</literal> &mdash; トランザクションロールバックを引き起こ"
+"す JSF の outcome です。 (outcome を指定しない場合、全ての outcome が指定され"
+"たものと解釈されます。) "
+
+#. Tag: literal
+#: Annotations.xml:685
+#, no-c-format
+msgid "<literal>@Transactional</literal>"
+msgstr "<literal>@Transactional</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:687
+#, no-c-format
+msgid "<programlisting>@Transactional</programlisting>"
+msgstr "<programlisting>@Transactional</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:688
+#, no-c-format
+msgid ""
+"Specifies that a JavaBean component should have a similar transactional "
+"behavior to the default behavior of a session bean component. ie. method "
+"invocations should take place in a transaction, and if no transaction exists "
+"when the method is called, a transaction will be started just for that "
+"method. This annotation may be applied at either class or method level."
+msgstr ""
+"JavaBean コンポーネントにセッション Bean コンポーネントのデフォルト動作と同じ"
+"ようなトランザクション動作を持たせることを指定します。 例えば、 メソッド呼び"
+"出しはトランザクション内で起こるべきであり、 メソッドが呼び出されたときにトラ"
+"ンザクションが存在しない場合は、 トランザクションがそのメソッドのためだけに開"
+"始されます。 このアノテーションはクラスレベルでもメソッドレベルでも適用可能で"
+"す。"
+
+#. Tag: para
+#: Annotations.xml:694
+#, no-c-format
+msgid ""
+"Seam applications usually use the standard EJB3 annotations for all other "
+"transaction demarcation needs."
+msgstr ""
+"Seam アプリケーションは通常、 トランザクション境界については標準の EJB3 のア"
+"ノテーションを使用します。"
+
+#. Tag: title
+#: Annotations.xml:700
+#, no-c-format
+msgid "Annotations for exceptions"
+msgstr "例外用のアノテーション"
+
+#. Tag: para
+#: Annotations.xml:701
+#, no-c-format
+msgid ""
+"These annotations let you specify how Seam should handle an exception that "
+"propagates out of a Seam component."
+msgstr ""
+"これらのアノテーションにより Seam コンポーネントから伝播する例外を処理する方"
+"法を指定することができます。"
+
+#. Tag: literal
+#: Annotations.xml:706
+#, no-c-format
+msgid "@Redirect"
+msgstr "@Redirect"
+
+#. Tag: programlisting
+#: Annotations.xml:708
+#, no-c-format
+msgid "@Redirect(viewId=\"error.jsp\")"
+msgstr "@Redirect(viewId=\"error.jsp\")"
+
+#. Tag: para
+#: Annotations.xml:709
+#, no-c-format
+msgid ""
+"Specifies that the annotated exception causes a browser redirect to a "
+"specified view id."
+msgstr ""
+"このアノテーション付いている例外は、指定されたビュー ID にブラウザをリダイレ"
+"クトします。"
+
+#. Tag: para
+#: Annotations.xml:714
+#, no-c-format
+msgid "<literal>viewId</literal> &mdash; specifies the JSF view id to redirect to."
+msgstr "<literal>viewId</literal> &mdash; リダイレクトする JSF ビュー ID です。"
+
+#. Tag: para
+#: Annotations.xml:719
+#, no-c-format
+msgid ""
+"<literal>message</literal> &mdash; a message to be displayed, default to the "
+"exception message."
+msgstr ""
+"<literal>message</literal> &mdash; 表示するメッセージです。 デフォルトはその"
+"例外のメッセージです。"
+
+#. Tag: para
+#: Annotations.xml:724 Annotations.xml:750
+#, no-c-format
+msgid ""
+"<literal>end</literal> &mdash; specifies that the long-running conversation "
+"should end, default to <literal>false</literal>."
+msgstr ""
+"<literal>end</literal> &mdash; 長期対話が終了するよう指定します。 デフォルト"
+"は <literal>false</literal> です。"
+
+#. Tag: literal
+#: Annotations.xml:732
+#, no-c-format
+msgid "@HttpError"
+msgstr "@HttpError"
+
+#. Tag: programlisting
+#: Annotations.xml:734
+#, no-c-format
+msgid "@HttpError(errorCode=404)"
+msgstr "@HttpError(errorCode=404)"
+
+#. Tag: para
+#: Annotations.xml:735
+#, no-c-format
+msgid "Specifies that the annotated exception causes a HTTP error to be sent."
+msgstr "このアノテーションが付いている例外は、 HTTP エラーが送信されます。"
+
+#. Tag: para
+#: Annotations.xml:740
+#, no-c-format
+msgid ""
+"<literal>errorCode</literal> &mdash; the HTTP error code, default to "
+"<literal>500</literal>."
+msgstr ""
+"<literal>errorCode</literal> &mdash; HTTP エラーコードです。 デフォルトは "
+"<literal>500</literal> です。"
+
+#. Tag: para
+#: Annotations.xml:745
+#, no-c-format
+msgid ""
+"<literal>message</literal> &mdash; a message to be sent with the HTTP error, "
+"default to the exception message."
+msgstr ""
+"<literal>message</literal> &mdash; HTTP エラーで送信されるメッセージです。 デ"
+"フォルトはその例外のメッセージです。"
+
+#. Tag: title
+#: Annotations.xml:761
+#, no-c-format
+msgid "Annotations for validation"
+msgstr "バリデーション用のアノテーション"
+
+#. Tag: para
+#: Annotations.xml:762
+#, no-c-format
+msgid ""
+"This annotation triggers Hibernate Validator. It appears on a method of a "
+"Seam component, almost always an action listener method."
+msgstr ""
+"このアノテーションは Hibernate Validator を起動します。 Seam コンポーネントの"
+"メソッド、主にアクションリスナメソッドに付与されます。"
+
+#. Tag: para
+#: Annotations.xml:765
+#, no-c-format
+msgid ""
+"Please refer to the documentation for the Hibernate Annotations package for "
+"information about the annotations defined by the Hibernate Validator "
+"framework."
+msgstr ""
+"Hibernate Validator フレームワークにより定義されたアノテーションに関する詳細"
+"は、 Hibernate Annotations パッケージのドキュメントを参照してください。"
+
+#. Tag: emphasis
+#: Annotations.xml:769
+#, no-c-format
+msgid ""
+"Note that use of <literal>@IfInvalid</literal> is now semi-deprecated and "
+"<literal>&lt;s:validateAll&gt;</literal> is now preferred."
+msgstr "<literal>@IfInvalid</literal> の使用はほぼ廃止予定になっており、 現在は <literal>&lt;s:validateAll&gt;</literal> の使用を推奨しているので注意してください。"
+
+#. Tag: literal
+#: Annotations.xml:773
+#, no-c-format
+msgid "@IfInvalid"
+msgstr "@IfInvalid"
+
+#. Tag: programlisting
+#: Annotations.xml:775
+#, no-c-format
+msgid "@IfInvalid(outcome=\"invalid\", refreshEntities=true)"
+msgstr "@IfInvalid(outcome=\"invalid\", refreshEntities=true)"
+
+#. Tag: para
+#: Annotations.xml:776
+#, no-c-format
+msgid ""
+"Specifies that Hibernate Validator should validate the component before the "
+"method is invoked. If the invocation fails, the specified outcome will be "
+"returned, and the validation failure messages returned by Hibernate "
+"Validator will be added to the <literal>FacesContext</literal>. Otherwise, "
+"the invocation will proceed."
+msgstr ""
+"メソッドが呼び出される前に Hibernate Validator  がコンポーネントを検証するよ"
+"う指定します。 呼び出しが失敗した場合、 指定された outcocme が返され、 "
+"Hibernate Validator から返される検証失敗のメッセージが "
+"<literal>FacesContext</literal> に追加されます。 これ以外は、 呼び出しは続行"
+"されます。"
+
+#. Tag: para
+#: Annotations.xml:781
+#, no-c-format
+msgid "<literal>outcome</literal> &mdash; the JSF outcome when validation fails."
+msgstr "<literal>outcome</literal> &mdash; 検証が失敗したときの JSF の outcome です。"
+
+#. Tag: para
+#: Annotations.xml:786
+#, no-c-format
+msgid ""
+"<literal>refreshEntities</literal> &mdash; specifies that any invalid entity "
+"in the managed state should be refreshed from the database when validation "
+"fails. Default to <literal>false</literal>. (Useful with extended "
+"persistence contexts.)"
+msgstr ""
+"<literal>refreshEntities</literal> &mdash; 検証が失敗したときに、 状態管理さ"
+"れている無効なエンティティは、 データベースの値でリフレッシュされます。 デ"
+"フォルトは <literal>false</literal> です。 (拡張永続コンテキストで有用で"
+"す。) "
+
+#. Tag: title
+#: Annotations.xml:797
+#, no-c-format
+msgid "Annotations for Seam Remoting"
+msgstr "Seam Remoting用のアノテーション"
+
+#. Tag: para
+#: Annotations.xml:798
+#, no-c-format
+msgid ""
+"Seam Remoting requires that the local interface of a session bean be "
+"annotated with the following annotation:"
+msgstr ""
+"Seam Remotingは、 以下のアノテーションを付けた セッション Bean のローカルイン"
+"タフェースが必要です。"
+
+#. Tag: literal
+#: Annotations.xml:803
+#, no-c-format
+msgid "@WebRemote"
+msgstr "@WebRemote"
+
+#. Tag: programlisting
+#: Annotations.xml:805
+#, no-c-format
+msgid "@WebRemote(exclude=\"path.to.exclude\")"
+msgstr "@WebRemote(exclude=\"path.to.exclude\")"
+
+#. Tag: para
+#: Annotations.xml:806
+#, no-c-format
+msgid ""
+"Indicates that the annotated method may be called from client-side "
+"JavaScript. The <literal>exclude</literal> property is optional and allows "
+"objects to be excluded from the result&#39;s object graph (see the Remoting "
+"chapter for more details)."
+msgstr ""
+"このアノテーション付きのメソッドはクライアントサイドの JavaScript から呼ばれ"
+"る可能性があることを示しています。 <literal>exclude</literal> プロパティはオ"
+"プションで、 オブジェクトがその結果のオブジェクトグラフから除外されるようにす"
+"ることができます (詳細は Remoting の章を参照)。"
+
+#. Tag: title
+#: Annotations.xml:815
+#, no-c-format
+msgid "Annotations for Seam interceptors"
+msgstr "Seam インターセプタ用のアノテーション"
+
+#. Tag: para
+#: Annotations.xml:816
+#, no-c-format
+msgid "The following annotations appear on Seam interceptor classes."
+msgstr "以下のアノテーションは、Seam インターセプタクラスで使われます。"
+
+#. Tag: para
+#: Annotations.xml:819
+#, no-c-format
+msgid ""
+"Please refer to the documentation for the EJB 3.0 specification for "
+"information about the annotations required for EJB interceptor definition."
+msgstr ""
+"EJB インターセプタ定義に必要なアノテーションに関する詳細は EJB 3.0 仕様のド"
+"キュメントを参照してください。"
+
+#. Tag: literal
+#: Annotations.xml:824
+#, no-c-format
+msgid "@Interceptor"
+msgstr "@Interceptor"
+
+#. Tag: programlisting
+#: Annotations.xml:829
+#, no-c-format
+msgid "@Interceptor(stateless=true)"
+msgstr "@Interceptor(stateless=true)"
+
+#. Tag: para
+#: Annotations.xml:830
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is stateless and Seam may optimize "
+"replication."
+msgstr ""
+"このインターセプタはステートレスであることを指定するので、 Seam は複製処理を"
+"最適化することができます。"
+
+#. Tag: programlisting
+#: Annotations.xml:835
+#, no-c-format
+msgid "@Interceptor(type=CLIENT)"
+msgstr "@Interceptor(type=CLIENT)"
+
+#. Tag: para
+#: Annotations.xml:836
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is a \"client-side\" interceptor that is "
+"called before the EJB container."
+msgstr ""
+"このインターセプタは EJB コンテナより前に呼ばれる「クライアントサイド」イン"
+"ターセプタであることを指定します。"
+
+#. Tag: programlisting
+#: Annotations.xml:841
+#, no-c-format
+msgid "@Interceptor(around={SomeInterceptor.class, OtherInterceptor.class})"
+msgstr "@Interceptor(around={SomeInterceptor.class, OtherInterceptor.class})"
+
+#. Tag: para
+#: Annotations.xml:842
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is positioned higher in the stack than the "
+"given interceptors."
+msgstr ""
+"このインターセプタは特定のインターセプタよりスタック内でより高い位置に配置さ"
+"れることを指定します。"
+
+#. Tag: programlisting
+#: Annotations.xml:847
+#, no-c-format
+msgid "@Interceptor(within={SomeInterceptor.class, OtherInterceptor.class})"
+msgstr "@Interceptor(within={SomeInterceptor.class, OtherInterceptor.class})"
+
+#. Tag: para
+#: Annotations.xml:848
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is positioned deeper in the stack than the "
+"given interceptors."
+msgstr ""
+"このインターセプタは特定のインターセプタよりスタック内でより深い位置に配置さ"
+"れることを指定します。"
+
+#. Tag: title
+#: Annotations.xml:860
+#, no-c-format
+msgid "Annotations for asynchronicity"
+msgstr "非同期用のアノテーション"
+
+#. Tag: para
+#: Annotations.xml:861
+#, no-c-format
+msgid ""
+"The following annotations are used to declare an asynchronous method, for "
+"example:"
+msgstr "次のアノテーションは非同期メソッドの宣言に使用されます。 例:"
+
+#. Tag: programlisting
+#: Annotations.xml:864
+#, no-c-format
+msgid ""
+"@Asynchronous public void scheduleAlert(Alert alert, @Expiration Date date) "
+"{ ... }"
+msgstr ""
+"@Asynchronous public void scheduleAlert(Alert alert, @Expiration Date date) "
+"{ ... }"
+
+#. Tag: programlisting
+#: Annotations.xml:865
+#, no-c-format
+msgid ""
+"@Asynchronous public Timer scheduleAlerts(Alert alert, @Expiration Date "
+"date, \n"
+"@IntervalDuration long interval) { ... }"
+msgstr ""
+"@Asynchronous public Timer scheduleAlerts(Alert alert, @Expiration Date "
+"date, \n"
+"@IntervalDuration long interval) { ... }"
+
+#. Tag: literal
+#: Annotations.xml:868
+#, no-c-format
+msgid "<literal>@Asynchronous</literal>"
+msgstr "<literal>@Asynchronous</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:870
+#, no-c-format
+msgid "<programlisting>@Asynchronous</programlisting>"
+msgstr "<programlisting>@Asynchronous</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:871
+#, no-c-format
+msgid "Specifies that the method call is processed asynchronously."
+msgstr "メソッドコールは非同期で処理されることを指定します。"
+
+#. Tag: literal
+#: Annotations.xml:877
+#, no-c-format
+msgid "<literal>@Duration</literal>"
+msgstr "<literal>@Duration</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:879
+#, no-c-format
+msgid "<programlisting>@Duration</programlisting>"
+msgstr "<programlisting>@Duration</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:880
+#, no-c-format
+msgid ""
+"Specifies that a parameter of the asynchronous call is the duration before "
+"the call is processed (or first processed for recurring calls)."
+msgstr ""
+"非同期コールのパラメータが、 そのコールが処理されるまでの期間であることを指定"
+"します (または反復コールの場合は初めての処理が行われるまで) 。"
+
+#. Tag: literal
+#: Annotations.xml:886
+#, no-c-format
+msgid "<literal>@Expiration</literal>"
+msgstr "<literal>@Expiration</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:888
+#, no-c-format
+msgid "<programlisting>@Expiration</programlisting>"
+msgstr "<programlisting>@Expiration</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:889
+#, no-c-format
+msgid ""
+"Specifies that a parameter of the asynchronous call is the datetime at which "
+"the call is processed (or first processed for recurring calls)."
+msgstr ""
+"非同期コールのパラメータが、 そのコールが処理される (または反復コールの場合は"
+"初めての処理が行われる) 日付と時刻であることを指定します。"
+
+#. Tag: literal
+#: Annotations.xml:895
+#, no-c-format
+msgid "<literal>@IntervalDuration</literal>"
+msgstr "<literal>@IntervalDuration</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:897
+#, no-c-format
+msgid "<programlisting>@IntervalDuration</programlisting>"
+msgstr "<programlisting>@IntervalDuration</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:898
+#, no-c-format
+msgid ""
+"Specifies that an asynchronous method call recurs, and that the annotationed "
+"parameter is duration between recurrences."
+msgstr ""
+"このアノテーションが付いている再帰呼び出しを行う非同期メソッドコールのパラ"
+"メータが、 再帰呼び出し間の期間であることを指定します。"
+
+#. Tag: title
+#: Annotations.xml:907
+#, no-c-format
+msgid "Annotations for use with JSF <literal>dataTable</literal>"
+msgstr "JSF <literal>dataTable</literal> と併用するアノテーション"
+
+#. Tag: para
+#: Annotations.xml:908
+#, no-c-format
+msgid ""
+"The following annotations make it easy to implement clickable lists backed "
+"by a stateful session bean. They appear on attributes."
+msgstr ""
+"以下のアノテーションはステートフルセッション Bean を使ったクリッカブルリスト"
+"の実装を容易にします。 これらのアノテーションは属性に付与されます。"
+
+#. Tag: literal
+#: Annotations.xml:913
+#, no-c-format
+msgid "@DataModel"
+msgstr "@DataModel"
+
+#. Tag: programlisting
+#: Annotations.xml:915
+#, no-c-format
+msgid "@DataModel(\"variableName\")"
+msgstr "@DataModel(\"variableName\")"
+
+#. Tag: para
+#: Annotations.xml:916
+#, no-c-format
+msgid ""
+"Exposes an attribute of type <literal>List</literal>, <literal>Map</"
+"literal>, <literal>Set</literal> or <literal>Object[]</literal> as a JSF "
+"<literal>DataModel</literal> into the scope of the owning component (or the "
+"<literal>EVENT</literal> scope if the owning component is "
+"<literal>STATELESS</literal>). In the case of <literal>Map</literal>, each "
+"row of the <literal>DataModel</literal> is a <literal>Map.Entry</literal>."
+msgstr ""
+"<literal>List</literal>、 <literal>Map</literal>、 <literal>Set</literal>、 "
+"<literal>Object[]</literal> のタイプの属性を JSF の <literal>DataModel</"
+"literal> として所有するコンポーネントのスコープで公開します。 (あるいは、所有"
+"するコンポーネントが <literal>STATELESS</literal> の場合は <literal>EVENT</"
+"literal> スコープとなります) 。 <literal>Map</literal> の場合、 "
+"<literal>DataModel</literal> の各行は、 <literal>Map.Entry</literal> になりま"
+"す。"
+
+#. Tag: para
+#: Annotations.xml:921
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; name of the conversation context variable. "
+"Default to the attribute name."
+msgstr ""
+"<literal>value</literal> &mdash; 対話コンテキスト変数の名前です。 デフォルト"
+"は属性名です。"
+
+#. Tag: para
+#: Annotations.xml:926
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; if <literal>scope=ScopeType.PAGE</literal> "
+"is explicitly specified, the <literal>DataModel</literal> will be kept in "
+"the <literal>PAGE</literal> context."
+msgstr ""
+"<literal>scope</literal> &mdash; <literal>scope=ScopeType.PAGE</literal> が明"
+"示的に指定される場合、 <literal>DataModel</literal> は <literal>PAGE</"
+"literal> コンテキストに保持されます。"
+
+#. Tag: literal
+#: Annotations.xml:934
+#, no-c-format
+msgid "<literal>@DataModelSelection</literal>"
+msgstr "<literal>@DataModelSelection</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:936
+#, no-c-format
+msgid "<programlisting>@DataModelSelection</programlisting>"
+msgstr "<programlisting>@DataModelSelection</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:937
+#, no-c-format
+msgid ""
+"Injects the selected value from the JSF <literal>DataModel</literal> (this "
+"is the element of the underlying collection, or the map value)."
+msgstr ""
+"JSF <literal>DataModel</literal> から選択された値をインジェクトします。 ( こ"
+"れは、内在する Collection の要素、または Map の値です。) "
+
+#. Tag: para
+#: Annotations.xml:942 Annotations.xml:958
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; name of the conversation context variable. "
+"Not needed if there is exactly one <literal>@DataModel</literal> in the "
+"component."
+msgstr ""
+"<literal>value</literal> &mdash; 対話コンテキスト変数の名前です。 コンポーネ"
+"ントの中に <literal>@DataModel</literal> が一つだけの場合は不要です。"
+
+#. Tag: literal
+#: Annotations.xml:950
+#, no-c-format
+msgid "<literal>@DataModelSelectionIndex</literal>"
+msgstr "<literal>@DataModelSelectionIndex</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:952
+#, no-c-format
+msgid "<programlisting>@DataModelSelectionIndex</programlisting>"
+msgstr "<programlisting>@DataModelSelectionIndex</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:953
+#, no-c-format
+msgid ""
+"Exposes the selection index of the JSF <literal>DataModel</literal> as an "
+"attribute of the component (this is the row number of the underlying "
+"collection, or the map key)."
+msgstr ""
+"JSF の <literal>DataModel</literal> の選択されたインデックスをコンポーネント"
+"の属性として公開します。 (これは、 Collection の行番号、または Map のキーとな"
+"ります。) "
+
+#. Tag: title
+#: Annotations.xml:969
+#, no-c-format
+msgid "Meta-annotations for databinding"
+msgstr "データバインディング用のメタアノテーション"
+
+#. Tag: para
+#: Annotations.xml:970
+#, no-c-format
+msgid ""
+"These meta-annotations make it possible to implement similar functionality "
+"to <literal>@DataModel</literal> and <literal>@DataModelSelection</literal> "
+"for other datastructures apart from lists."
+msgstr ""
+"これらのメタアノテーションは、一覧とは別に他のデータベース構造に対して "
+"<literal>@DataModel</literal> や <literal>@DataModelSelection</literal> と同"
+"様の機能の実装を可能にします。"
+
+#. Tag: literal
+#: Annotations.xml:975
+#, no-c-format
+msgid "@DataBinderClass"
+msgstr "@DataBinderClass"
+
+#. Tag: programlisting
+#: Annotations.xml:977
+#, no-c-format
+msgid "@DataBinderClass(DataModelBinder.class)"
+msgstr "@DataBinderClass(DataModelBinder.class)"
+
+#. Tag: para
+#: Annotations.xml:978
+#, no-c-format
+msgid "Specifies that an annotation is a databinding annotation."
+msgstr "アノテーションがデータバインディングのアノテーションであることを指定します。"
+
+#. Tag: literal
+#: Annotations.xml:984
+#, no-c-format
+msgid "@DataSelectorClass"
+msgstr "@DataSelectorClass"
+
+#. Tag: programlisting
+#: Annotations.xml:986
+#, no-c-format
+msgid "@DataSelectorClass(DataModelSelector.class)"
+msgstr "@DataSelectorClass(DataModelSelector.class)"
+
+#. Tag: para
+#: Annotations.xml:987
+#, no-c-format
+msgid "Specifies that an annotation is a dataselection annotation."
+msgstr "アノテーションがデータ選択のアノテーションであることを指定します。"
+
+#. Tag: title
+#: Annotations.xml:996
+#, no-c-format
+msgid "Annotations for packaging"
+msgstr "パッケージング用のアノテーション"
+
+#. Tag: para
+#: Annotations.xml:997
+#, no-c-format
+msgid ""
+"This annotation provides a mechanism for declaring information about a set "
+"of components that are packaged together. It can be applied to any Java "
+"package."
+msgstr ""
+"このアノテーションは、 一緒にパッケージングするコンポーネントセットに関する情"
+"報を宣言するメカニズムを提供します。 どの Java パッケージに対しても適用できま"
+"す。"
+
+#. Tag: literal
+#: Annotations.xml:1002
+#, no-c-format
+msgid "@Namespace"
+msgstr "@Namespace"
+
+#. Tag: programlisting
+#: Annotations.xml:1004
+#, no-c-format
+msgid "@Namespace(value=\"http://jboss.com/products/seam/example/seampay\")"
+msgstr "@Namespace(value=\"http://jboss.com/products/seam/example/seampay\")"
+
+#. Tag: para
+#: Annotations.xml:1005
+#, no-c-format
+msgid ""
+"Specifies that components in the current package are associated with the "
+"given namespace. The declared namespace can be used as an XML namespace in a "
+"<literal>components.xml</literal> file to simplify application configuration."
+msgstr ""
+"現在のパッケージにあるコンポーネントを特定のネームスペースに関連付けられるこ"
+"とを指定します。 宣言されたネームスペースは <literal>components.xml</"
+"literal> ファイル内で XML ネームスペースとして使用することでアプリケーション"
+"の設定を単純化することができます。"
+
+#. Tag: programlisting
+#: Annotations.xml:1008
+#, no-c-format
+msgid ""
+"@Namespace(value=\"http://jboss.com/products/seam/core\", prefix=\"org.jboss."
+"seam.core\")"
+msgstr ""
+"@Namespace(value=\"http://jboss.com/products/seam/core\", prefix=\"org.jboss."
+"seam.core\")"
+
+#. Tag: para
+#: Annotations.xml:1009
+#, no-c-format
+msgid ""
+"Specifies a namespace to associate with a given package. Additionally, it "
+"specifies a component name prefix to be applied to component names specified "
+"in the XML file. For example, an XML element named <literal>microcontainer</"
+"literal> that is associated with this namespace would be understood to "
+"actually refere to a component named <literal>org.jboss.seam.core."
+"microcontainer</literal>."
+msgstr ""
+"ネームスペースを特定のパッケージに関連付けるよう指定します。 また、 コンポー"
+"ネント名のプレフィックスが XML ファイル内で指定されるコンポーネント名に適用さ"
+"れるよう指定します。 たとえば、 このネームスペースに関連付けられる "
+"<literal>microcontainer</literal> という XML エレメントは実際には "
+"<literal>org.jboss.seam.core.microcontainer</literal> というコンポーネントを"
+"参照するように解釈されます。"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Author_Group.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Author_Group.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Author_Group.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,42 @@
+# translation of Author_Group.po to Japanese
+# Language ja-JP translations for PACKAGE package.
+#
+# Automatically generated, 2008.
+# Noriko Mizumoto <noriko at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Author_Group\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-04-17 04:11+0000\n"
+"PO-Revision-Date: 2008-05-15 10:55+1000\n"
+"Last-Translator: Noriko Mizumoto <noriko at redhat.com>\n"
+"Language-Team: Japanese <fedora-trans-ja at redhat.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: firstname
+#: Author_Group.xml:16
+#, no-c-format
+msgid ""
+"Written By: Gavin King, Christian Bauer, Norman Richards, Shane Bryzak, Pete "
+"Muir, Emmanuel Bernard, Max Andersen, Michael Youngstrom, Thomas Heute, "
+"Michael Yuan"
+msgstr ""
+"著者: Gavin King、 Christian Bauer、 Norman Richards、 Shane Bryzak、 Pete "
+"Muir、 Emmanuel Bernard、 Max Andersen、 Michael Youngstrom、 Thomas Heute、 "
+"Michael Yuan"
+
+#. Tag: firstname
+#: Author_Group.xml:19
+#, no-c-format
+msgid ""
+"Japanese Translation: Fusayuki Minamoto, Takayoshi Kimura, Takayoshi Osawa, "
+"Reiko Ohtsuka, Syunpei Shiraishi, Toshiya Kobayashi, Shigeaki Wakizaka, Ken "
+"Yamada, Noriko Mizumoto"
+msgstr ""
+"日本語翻訳: Fusayuki Minamoto、 Takayoshi Kimura、 Takayoshi Osawa、 "
+"Reiko Ohtsuka、 Syunpei Shiraishi、 Toshiya Kobayashi、 Shigeaki Wakizaka、 Ken "
+"Yamada、 Noriko Mizumoto"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Book_Info.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Book_Info.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Book_Info.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,41 @@
+# translation of Book_Info.po to Japanese
+# Noriko Mizumoto <noriko at redhat.com>, 2007, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Book_Info\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-02-04 23:29+0000\n"
+"PO-Revision-Date: 2008-05-15 10:56+1000\n"
+"Last-Translator: Noriko Mizumoto <noriko at redhat.com>\n"
+"Language-Team: Japanese <fedora-trans-ja at redhat.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Book_Info.xml:5
+#, no-c-format
+msgid "Seam Reference Guide"
+msgstr "Seam リファレンスガイド"
+
+#. Tag: subtitle
+#: Book_Info.xml:6
+#, no-c-format
+msgid "JBoss Enterprise Application Platform"
+msgstr "JBoss Enterprise Application Platform"
+
+#. Tag: para
+#: Book_Info.xml:11
+#, no-c-format
+msgid ""
+"This book is a Reference Guide to Seam 1.2 for JBoss Enterprise Application "
+"Platform 4.3."
+msgstr "本ガイドは JBoss Enterprise Application Platform 4.3 用の Seam 1.2 に対するリファレンスガイドになります。"
+
+#. Tag: holder
+#: Book_Info.xml:22
+#, no-c-format
+msgid "&HOLDER;"
+msgstr "&HOLDER;"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Cache.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Cache.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Cache.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,444 @@
+# translation of Cache.po to Japanese
+# Noriko Mizumoto <noriko at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Cache\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-30 01:52+0000\n"
+"PO-Revision-Date: 2007-10-30 14:04+1000\n"
+"Last-Translator: Noriko Mizumoto <noriko at redhat.com>\n"
+"Language-Team: Japanese <fedora-trans-ja at redhat.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Cache.xml:6
+#, no-c-format
+msgid "Caching"
+msgstr "キャッシュ"
+
+#. Tag: para
+#: Cache.xml:7
+#, no-c-format
+msgid ""
+"In almost all enterprise applications, the database is the primary "
+"bottleneck, and the least scalable tier of the runtime environment. People "
+"from a PHP/Ruby environment will try to tell you that so-called \"shared "
+"nothing\" architectures scale well. While that may be literally true, I "
+"don&#39;t know of many interesting multi-user applications which can be "
+"implemented with no sharing of resources between different nodes of the "
+"cluster. What these silly people are really thinking of is a \"share nothing "
+"except for the database\" architecture. Of course, sharing the database is "
+"the primary problem with scaling a multi-user application&mdash;so the claim "
+"that this architecture is highly scalable is absurd, and tells you a lot "
+"about the kind of applications that these folks spend most of their time "
+"working on."
+msgstr ""
+"ほとんどの場合、 企業アプリケーションにおける主なボトルネックはデータベースで"
+"す。 そして、 データベースは実行環境の中ではもっともスケーラブルしにくい部分"
+"です。 PHP や Ruby の人々は、 いわゆる \"shared nothing\" アーキテクチャにす"
+"れば拡張があると言うでしょう。 確かにそれは事実かもしれませんが、 クラスタ構"
+"成の複数ノード間で何もリソースを共有しないで設計できるアプリケーションなど、 "
+"あまり見たことがありません。 愚かな彼らが本当に考えているのは「データベース以"
+"外は」 \"shared nothing\" というアーキテクチャでしょう。 マルチユーザ用アプリ"
+"ケーションを拡張しにくくしているのは、 もちろんデータベース共有です &mdash; した"
+"がって、このアーキテクチャに高い拡張性があると主張するのは無理がありますが、 "
+"彼らは数々のアプリケーションにたくさんの時間を割いています。"
+
+#. Tag: para
+#: Cache.xml:10
+#, no-c-format
+msgid ""
+"Almost anything we can possibly do to share the database <emphasis>less "
+"often</emphasis> is worth doing."
+msgstr ""
+"データベースの共有を<emphasis>なるべく少なく</emphasis>できる方法があれば、す"
+"べて実行する価値があります。"
+
+#. Tag: para
+#: Cache.xml:13
+#, no-c-format
+msgid ""
+"This calls for a cache. Well, not just one cache. A well designed Seam "
+"application will feature a rich, multi-layered caching strategy that impacts "
+"every layer of the application:"
+msgstr ""
+"そこでキャッシュの登場です。しかも1種類ではありません。 Seamアプリケーション"
+"を正しく設計すれば、何層にもわたる豊富なキャッシング戦略をアプリケーションの"
+"すべての層で利用することができるのです。"
+
+#. Tag: para
+#: Cache.xml:18
+#, no-c-format
+msgid ""
+"The database, of course, has its own cache. This is super-important, but "
+"can&#39;t scale like a cache in the application tier."
+msgstr ""
+"データベースは当然ながら独自のキャッシュを持っています。 このことは大変重要で"
+"すが、アプリケーションのキャッシュのような拡張性はありません。"
+
+#. Tag: para
+#: Cache.xml:23
+#, no-c-format
+msgid ""
+"Your ORM solution (Hibernate, or some other JPA implementation) has a second-"
+"level cache of data from the database. This is a very powerful capability, "
+"but is often misused. In a clustered environment, keeping the data in the "
+"cache transactionally consistent across the whole cluster, and with the "
+"database, is quite expensive. It makes most sense for data which is shared "
+"between many users, and is updated rarely. In traditional stateless "
+"architectures, people often try to use the second-level cache for "
+"conversational state. This is always bad, and is especially wrong in Seam."
+msgstr ""
+"ORMソリューション(Hibernateやその他のJPA実装など)はデータベースからデータを"
+"2次キャッシュに置きます。 これはとても強力な機能なのですが、間違った使われ方"
+"をされがちです。 トランザクションのキャッシュ・データをクラスタ環境の全ノード"
+"で一貫性を持たせ、データベースとも同期させると、非常に重い処理になります。 複"
+"数ユーザで共有され、更新がまれなデータには良いかも知れません。 一般的なステー"
+"トレスなアーキテクチャでは、2次キャッシュに対話状態をキャッシュしようとしま"
+"すが、これは良いことではありません。 特にSeamの場合は、誤りです。"
+
+#. Tag: para
+#: Cache.xml:28
+#, no-c-format
+msgid ""
+"The Seam conversation context is a cache of conversational state. Components "
+"you put into the conversation context can hold and cache state relating to "
+"the current user interaction."
+msgstr ""
+"Seamの対話コンテキストは、対話状態のキャッシュです。 対話コンテキストに保存し"
+"たコンポーネントは、ユーザのインタラクションに関連した状態をキャッシュし、保"
+"持します。"
+
+#. Tag: para
+#: Cache.xml:33
+#, no-c-format
+msgid ""
+"In particular, the Seam-managed persistence context (or an extended EJB "
+"container-managed persistence context associated with a conversation-scoped "
+"stateful session bean) acts as a cache of data that has been read in the "
+"current conversation. This cache tends to have a pretty high hitrate! Seam "
+"optimizes the replication of Seam-managed persistence contexts in a "
+"clustered environment, and there is no requirement for transactional "
+"consistency with the database (optimistic locking is sufficient) so you "
+"don&#39;t need to worry too much about the performance implications of this "
+"cache, unless you read thousands of objects into a single persistence "
+"context."
+msgstr ""
+"特に、Seamが管理する永続コンテキスト(あるいは対話スコープのステートフルセッ"
+"ションビーンに関連付けられたEJBコンテナ管理の拡張永続コンテキスト)は、 現在"
+"の対話に読み込まれたデータのキャッシュとして振舞います。 このキャッシュのヒッ"
+"ト率は通常はとても高くなります! クラスタ環境では、Seamが管理する永続コンテキ"
+"ストはSeamによってレプリケーションが最適化され、データベースのトランザクショ"
+"ンの一貫性を気にする必要はありません(楽観的ロックで充分です)。 ひとつの永続"
+"コンテキストに何千ものオブジェクトを読み込まない限り、このキャッシュの効率に"
+"ついてあまり気にする必要はありません。"
+
+#. Tag: para
+#: Cache.xml:38
+#, no-c-format
+msgid ""
+"The application can cache non-transactional state in the Seam application "
+"context. State kept in the application context is of course not visible to "
+"other nodes in the cluster."
+msgstr ""
+"トランザクションに関連しない状態をSeamのアプリケーション・コンテキストに"
+"キャッシュすることもできます。 アプリケーション・コンテキストに保持された状態"
+"は、クラスタ内の他のノードにはもちろん見えません。"
+
+#. Tag: para
+#: Cache.xml:43
+#, no-c-format
+msgid ""
+"The application can cache transactional state using the Seam "
+"<literal>pojoCache</literal> component, which integrates JBossCache into the "
+"Seam environment. This state will be visible to other nodes if you run JBoss "
+"cache in a clustered mode."
+msgstr ""
+"トランザクションの状態は、JBossCacheを使ったSeamの<literal>pojoCache</"
+"literal>コンポーネントにキャッシュできます。 JBossCacheをクラスタで使用してい"
+"れば、この状態は他のノードにも見えます。"
+
+#. Tag: para
+#: Cache.xml:48
+#, no-c-format
+msgid ""
+"Finally, Seam lets you cache rendered fragments of a JSF page. Unlike the "
+"ORM second-level cache, this cache is not automatically invalidated when "
+"data changes, so you need to write application code to perform explicit "
+"invalidation, or set appropriate expiration policies."
+msgstr ""
+"最後に、レンダリングされたJSFページの断片をキャッシュすることができます。 ORM"
+"ソリューションの2次キャッシュと違い、データが変更されても自動的に無効になる"
+"ことはないので、 明示的に無効化するアプリケーション・コードを書くか、適切な有"
+"効期限ポリシーを設定する必要があります。"
+
+#. Tag: para
+#: Cache.xml:53
+#, no-c-format
+msgid ""
+"For more information about the second-level cache, you&#39;ll need to refer "
+"to the documentation of your ORM solution, since this is an extremely "
+"complex topic. In this section we&#39;ll discuss the use of JBossCache "
+"directly, via the <literal>pojoCache</literal> component, or as the page "
+"fragment cache, via the <literal>&lt;s:cache&gt;</literal> control."
+msgstr ""
+"2次キャッシュは非常に混み入った概念ですので、詳細についてはお使いのORMソ"
+"リューションの文書を参照してください。 この章では、pojoCacheコンポーネント"
+"や、<literal>&lt;s:cache&gt;</literal>によるページ断片のキャッシュなど、"
+"JBossCacheを直接利用する方法について説明します。"
+
+#. Tag: title
+#: Cache.xml:57
+#, no-c-format
+msgid "Using JBossCache in Seam"
+msgstr "SeamでJBossCacheを利用する"
+
+#. Tag: para
+#: Cache.xml:58
+#, no-c-format
+msgid ""
+"The built-in <literal>pojoCache</literal> component manages an instance of "
+"<literal>org.jboss.cache.aop.PojoCache</literal>. You can safely put any "
+"immutable Java object in the cache, and it will be replicated across the "
+"cluster (assuming that replication is enabled). If you want to keep mutable "
+"objects in the cache, you&#39;ll need to run the JBossCache bytecode "
+"preprocessor to ensure that changes to the objects will be automatically "
+"detected and replicated."
+msgstr ""
+"ビルトインの <literal>pojoCache</literal> コンポーネントは <literal>org."
+"jboss.cache.aop.PojoCache</literal> のインスタンスを管理します。 不変の Java "
+"オブジェクトであれば安全にキャッシュに置くことができ、 オブジェクトはクラスタ"
+"内でレプリケーションされます (レプリケーションが有効な場合)。 変更の可能性が"
+"あるオブジェクトをキャッシュに持ちたい場合は、 JBossCache のバイトコード・プ"
+"ロセッサを実行し、 オブジェクトの変更が自動的に検知され、 レプリケーションさ"
+"れるようにする必要があります。"
+
+#. Tag: para
+#: Cache.xml:61
+#, no-c-format
+msgid ""
+"To use <literal>pojoCache</literal>, all you need to do is put the "
+"JBossCache jars in the classpath, and provide a resource named "
+"<literal>treecache.xml</literal> with an appropriate cache configuration. "
+"JBossCache has many scary and confusing configuration settings, so we "
+"won&#39;t discuss them here. Please refer to the JBossCache documentation "
+"for more information."
+msgstr ""
+"<literal>pojoCache</literal> を使うには、クラスパスに JBossCache の jar を置き、"
+"<literal>treecache.xml</literal>というリソースに適切なcacheの設定を記述するだ"
+"けです。 JBossCacheには恐ろしく厄介で紛らわしい設定がたくさんあるので、ここで"
+"は説明しません。 詳細はJBossCacheの文書を参照してください。"
+
+#. Tag: para
+#: Cache.xml:64
+#, no-c-format
+msgid ""
+"For an EAR depoyment of Seam, we recommend that the JBossCache jars and "
+"configuration go directly into the EAR. Make sure you declare the jars in "
+"<literal>application.xml</literal>."
+msgstr ""
+"SeamにEARをデプロイする場合は、JBossCacheのjarと設定ファイルをEARに直接含める"
+"ことをお勧めします。 <literal>application.xml</literal>にjarを記述することを"
+"忘れないでください。"
+
+#. Tag: para
+#: Cache.xml:67
+#, no-c-format
+msgid "Now you can inject the cache into any Seam component:"
+msgstr "次のように、Seamコンポーネントにキャッシュをインジェクトします。"
+
+#. Tag: programlisting
+#: Cache.xml:70
+#, no-c-format
+msgid ""
+"@Name(\"chatroom\")\n"
+"public class Chatroom {\n"
+"    @In PojoCache pojoCache;\n"
+"    \n"
+"    public void join(String username) {\n"
+"      try\n"
+"      {\n"
+"         Set&lt;String&gt; userList = (Set&lt;String&gt;) pojoCache.get"
+"(\"chatroom\", \"userList\");\n"
+"         if (userList==null) \n"
+"         {\n"
+"            userList = new HashSet&lt;String&gt;();\n"
+"            pojoCache.put(\"chatroom\", \"userList\", userList);\n"
+"         }\n"
+"         userList.put(username);\n"
+"      }\n"
+"      catch (CacheException ce)\n"
+"      {\n"
+"         throw new RuntimeException(ce);\n"
+"      }\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"chatroom\")\n"
+"public class Chatroom {\n"
+"    @In PojoCache pojoCache;\n"
+"    \n"
+"    public void join(String username) {\n"
+"      try\n"
+"      {\n"
+"         Set&lt;String&gt; userList = (Set&lt;String&gt;) pojoCache.get"
+"(\"chatroom\", \"userList\");\n"
+"         if (userList==null) \n"
+"         {\n"
+"            userList = new HashSet&lt;String&gt;();\n"
+"            pojoCache.put(\"chatroom\", \"userList\", userList);\n"
+"         }\n"
+"         userList.put(username);\n"
+"      }\n"
+"      catch (CacheException ce)\n"
+"      {\n"
+"         throw new RuntimeException(ce);\n"
+"      }\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Cache.xml:71
+#, no-c-format
+msgid ""
+"If you want to have multiple JBossCache configurations in your application, "
+"use <literal>components.xml</literal>:"
+msgstr ""
+"JBossCacheを複数設定する場合は、<literal>components.xml</literal>を使用してく"
+"ださい。"
+
+#. Tag: programlisting
+#: Cache.xml:74
+#, no-c-format
+msgid ""
+"&lt;core:pojo-cache name=\"myCache\" cfg-resource-name=\"myown/cache.xml\"/"
+"&gt;"
+msgstr ""
+"&lt;core:pojo-cache name=\"myCache\" cfg-resource-name=\"myown/cache.xml\"/"
+"&gt;"
+
+#. Tag: title
+#: Cache.xml:78
+#, no-c-format
+msgid "Page fragment caching"
+msgstr "ページ断片のキャッシュ"
+
+#. Tag: para
+#: Cache.xml:79
+#, no-c-format
+msgid ""
+"The most interesting user of JBossCache is the <literal>&lt;s:cache&gt;</"
+"literal> tag, Seam&#39;s solution to the problem of page fragment caching in "
+"JSF. <literal>&lt;s:cache&gt;</literal> uses <literal>pojoCache</literal> "
+"internally, so you need to follow the steps listed above before you can use "
+"it. (Put the jars in the EAR, wade through the scary configuration options, "
+"etc.)"
+msgstr ""
+"SeamのJBossCache の利用でもっとも興味深いのは、 JSFにおけるページ断片のキャッ"
+"シュ問題を解決する、 <literal>&lt;s:cache&gt;</literal> タグです。 "
+"<literal>&lt;s:cache&gt;</literal> は内部的に <literal>pojoCache</literal> を"
+"使うので、 使用する場合は前述の手順を行ってください (EAR に jar を入れる、 "
+"やっかいな設定を切り抜ける、などの手順です。)"
+
+#. Tag: para
+#: Cache.xml:82
+#, no-c-format
+msgid ""
+"<literal>&lt;s:cache&gt;</literal> is used for caching some rendered content "
+"which changes rarely. For example, the welcome page of our blog displays the "
+"recent blog entries:"
+msgstr ""
+"<literal>&lt;s:cache&gt;</literal>は、あまり変更されないレンタリング・コンテ"
+"ンツに使用してください。 たとえば、最新のblogエントリを表示するblogのウェルカ"
+"ムページです。"
+
+#. Tag: programlisting
+#: Cache.xml:85
+#, no-c-format
+msgid ""
+"&lt;s:cache key=\"recentEntries-#{blog.id}\" region=\"welcomePageFragments"
+"\"&gt;\n"
+"   &lt;h:dataTable value=\"#{blog.recentEntries}\" var=\"blogEntry\"&gt;\n"
+"      &lt;h:column&gt;\n"
+"         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"         &lt;div&gt;\n"
+"            &lt;s:formattedText value=\"#{blogEntry.body}\"/&gt;\n"
+"         &lt;/div&gt;\n"
+"      &lt;/h:column&gt;\n"
+"   &lt;/h:dataTable&gt;\n"
+"&lt;/s:cache&gt;"
+msgstr ""
+"&lt;s:cache key=\"recentEntries-#{blog.id}\" region=\"welcomePageFragments"
+"\"&gt;\n"
+"   &lt;h:dataTable value=\"#{blog.recentEntries}\" var=\"blogEntry\"&gt;\n"
+"      &lt;h:column&gt;\n"
+"         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"         &lt;div&gt;\n"
+"            &lt;s:formattedText value=\"#{blogEntry.body}\"/&gt;\n"
+"         &lt;/div&gt;\n"
+"      &lt;/h:column&gt;\n"
+"   &lt;/h:dataTable&gt;\n"
+"&lt;/s:cache&gt;"
+
+#. Tag: para
+#: Cache.xml:86
+#, no-c-format
+msgid ""
+"The <literal>key</literal> let&#39;s you have multiple cached versions of "
+"each page fragment. In this case, there is one cached version per blog. The "
+"<literal>region</literal> determines the JBossCache node that all version "
+"will be stored in. Different nodes may have different expiry policies. "
+"(That&#39;s the stuff you set up using the aforementioned scary "
+"configuration options.)"
+msgstr ""
+"<literal>key</literal> を指定することによって、 各ページ断片のキャッシュバー"
+"ジョンを複数持つことができます。 この例では、 ひとつの blog に対してひとつの"
+"キャッシュバージョンが存在します。 <literal>region</literal> には、 すべての"
+"バージョンを保存する JBossCache のノードを指定します。 異なるードは異なる有"
+"効期限ポリシーを持つ場合があります。 (前述の厄介な設定で指定できます。)"
+
+#. Tag: para
+#: Cache.xml:89
+#, no-c-format
+msgid ""
+"Of course, the big problem with <literal>&lt;s:cache&gt;</literal> is that "
+"it is too stupid to know when the underlying data changes (for example, when "
+"the blogger posts a new entry). So you need to evict the cached fragment "
+"manually:"
+msgstr ""
+"そして、 <literal>&lt;s:cache&gt;</literal> の大きな問題は、 対象のデータがい"
+"つ変更されるか (たとえば、 新しい blog がいつ投稿されるか) を知り得ないという"
+"ことです。 つまり、 キャッシュされた断片は、 明示的にキャッシュから排除する必"
+"要があります。"
+
+#. Tag: programlisting
+#: Cache.xml:92
+#, no-c-format
+msgid ""
+"public void post() {\n"
+"    ...\n"
+"    entityManager.persist(blogEntry);\n"
+"    pojoCache.remove(\"welcomePageFragments\", \"recentEntries-\" + blog."
+"getId() );\n"
+"}"
+msgstr ""
+"public void post() {\n"
+"    ...\n"
+"    entityManager.persist(blogEntry);\n"
+"    pojoCache.remove(\"welcomePageFragments\", \"recentEntries-\" + blog."
+"getId() );\n"
+"}"
+
+#. Tag: para
+#: Cache.xml:93
+#, no-c-format
+msgid ""
+"Alternatively, if it is not critical that changes are immediately visible to "
+"the user, you could set a short expiry time on the JbossCache node."
+msgstr ""
+"あるいは、変更を即座にユーザに見せる必要がないのであれば、JBossCacheノードの"
+"有効期限を短く設定しても良いでしょう。"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Components.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Components.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Components.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2313 @@
+# translation of Components.po to Japanese
+# Noriko Mizumoto <noriko at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Components\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-30 01:52+0000\n"
+"PO-Revision-Date: 2007-10-30 14:20+1000\n"
+"Last-Translator: Noriko Mizumoto <noriko at redhat.com>\n"
+"Language-Team: Japanese <fedora-trans-ja at redhat.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Components.xml:6
+#, no-c-format
+msgid "Built-in Seam components"
+msgstr "組み込み Seam コンポーネント"
+
+#. Tag: para
+#: Components.xml:7
+#, no-c-format
+msgid ""
+"This chapter describes Seam&#39;s built-in components, and their "
+"configuration properties."
+msgstr ""
+"本章では Seam の組み込みコンポーネント、 その設定プロパティについて説明してい"
+"きます。"
+
+#. Tag: para
+#: Components.xml:10
+#, no-c-format
+msgid ""
+"Note that you can replace any of the built in components with your own "
+"implementations simply by specifying the name of one of the built in "
+"components on your own class using <literal>@Name</literal>."
+msgstr ""
+"<literal>@Name</literal> を使って独自のクラスで組み込みコンポーネントの名前を"
+"指定すると、 組み込みコンポーネントを独自の実装に簡単に置き換えることができま"
+"す。"
+
+#. Tag: para
+#: Components.xml:13
+#, no-c-format
+msgid ""
+"Note also that even though all the built in components use a qualified name, "
+"most of them are aliased to unqualified names by default. These aliases "
+"specify <literal>auto-create=\"true\"</literal>, so you do not need to use "
+"<literal>create=true</literal> when injecting built-in components by their "
+"unqualified name."
+msgstr ""
+"また、 組み込みコンポーネントは修飾名を使用しますが、 そのほとんどはデフォル"
+"トで非修飾名にエイリアスされているので注意してください。 こうしたエイリアス"
+"は <literal>auto-create=\"true\"</literal> を指定するため、 組み込みコンポー"
+"ネントをその非修飾名でインジェクトする場合に <literal>create=true</literal> "
+"を使う必要はありません。"
+
+#. Tag: title
+#: Components.xml:17
+#, no-c-format
+msgid "Context injection components"
+msgstr "コンテキストインジェクションのコンポーネント"
+
+#. Tag: para
+#: Components.xml:18
+#, no-c-format
+msgid ""
+"The first set of built in components exist purely to support injection of "
+"various contextual objects. For example, the following component instance "
+"variable would have the Seam session context object injected:"
+msgstr ""
+"最初の組み込みコンポーネントセットは、 単純にさまざまな文脈上のオブジェクトの"
+"インジェクトをサポートするために存在しています。 たとえば、 次のコンポーネン"
+"トインスタンスの変数はインジェクトされた Seam セッションのコンテキストオブ"
+"ジェクトを持つことになります。"
+
+#. Tag: programlisting
+#: Components.xml:21
+#, no-c-format
+msgid "@In private Context sessionContext;"
+msgstr "@In private Context sessionContext;"
+
+#. Tag: literal
+#: Components.xml:24
+#, no-c-format
+msgid "org.jboss.seam.core.eventContext"
+msgstr "org.jboss.seam.core.eventContext"
+
+#. Tag: para
+#: Components.xml:26
+#, no-c-format
+msgid "Manager component for the event context object"
+msgstr "イベントコンテキストオブジェクトの管理コンポーネント"
+
+#. Tag: literal
+#: Components.xml:32
+#, no-c-format
+msgid "org.jboss.seam.core.pageContext"
+msgstr "org.jboss.seam.core.pageContext"
+
+#. Tag: para
+#: Components.xml:34
+#, no-c-format
+msgid "Manager component for the page context object"
+msgstr "ページコンテキストオブジェクトの管理コンポーネント"
+
+#. Tag: literal
+#: Components.xml:40
+#, no-c-format
+msgid "org.jboss.seam.core.conversationContext"
+msgstr "org.jboss.seam.core.conversationContext"
+
+#. Tag: para
+#: Components.xml:42
+#, no-c-format
+msgid "Manager component for the conversation context object"
+msgstr "対話コンテキストオブジェクトの管理コンポーネント"
+
+#. Tag: literal
+#: Components.xml:48
+#, no-c-format
+msgid "org.jboss.seam.core.sessionContext"
+msgstr "org.jboss.seam.core.sessionContext"
+
+#. Tag: para
+#: Components.xml:50
+#, no-c-format
+msgid "Manager component for the session context object"
+msgstr "セッションコンテキストオブジェクトの管理コンポーネント"
+
+#. Tag: literal
+#: Components.xml:56
+#, no-c-format
+msgid "org.jboss.seam.core.applicationContext"
+msgstr "org.jboss.seam.core.applicationContext"
+
+#. Tag: para
+#: Components.xml:58
+#, no-c-format
+msgid "Manager component for the appication context object"
+msgstr "アプリケーションコンテキストオブジェクトの管理コンポーネント"
+
+#. Tag: literal
+#: Components.xml:64
+#, no-c-format
+msgid "org.jboss.seam.core.businessProcessContext"
+msgstr "org.jboss.seam.core.businessProcessContext"
+
+#. Tag: para
+#: Components.xml:66
+#, no-c-format
+msgid "Manager component for the business process context object"
+msgstr "ビジネスプロセスコンテキストオブジェクトの管理コンポーネント"
+
+#. Tag: literal
+#: Components.xml:72
+#, no-c-format
+msgid "org.jboss.seam.core.facesContext"
+msgstr "org.jboss.seam.core.facesContext"
+
+#. Tag: para
+#: Components.xml:74
+#, no-c-format
+msgid ""
+"Manager component for the <literal>FacesContext</literal> context object "
+"(not a true Seam context)"
+msgstr ""
+"<literal>FacesContext</literal> コンテキストオブジェクト (正確には Seam コン"
+"テキストではない) の管理コンポーネント"
+
+#. Tag: para
+#: Components.xml:80 Components.xml:263 Components.xml:437 Components.xml:568
+#, no-c-format
+msgid "All of these components are always installed."
+msgstr "これらコンポーネントはすべて常にインストールされます。"
+
+#. Tag: title
+#: Components.xml:86
+#, no-c-format
+msgid "Utility components"
+msgstr "ユーティリティコンポーネント"
+
+#. Tag: para
+#: Components.xml:87
+#, no-c-format
+msgid "These components are merely useful."
+msgstr "これらのコンポーネントが役に立つ機会はあまりありません。"
+
+#. Tag: literal
+#: Components.xml:92
+#, no-c-format
+msgid "org.jboss.seam.core.facesMessages"
+msgstr "org.jboss.seam.core.facesMessages"
+
+#. Tag: para
+#: Components.xml:94
+#, no-c-format
+msgid "Allows faces success messages to propagate across a browser redirect."
+msgstr ""
+"ブラウザリダイレクト全体に伝播するよう faces が正しくメッセージングできるよう"
+"にします。"
+
+#. Tag: para
+#: Components.xml:99
+#, no-c-format
+msgid ""
+"<literal>add(FacesMessage facesMessage)</literal> &mdash; add a faces "
+"message, which will be displayed during the next render response phase that "
+"occurs in the current conversation."
+msgstr ""
+"<literal>add(FacesMessage facesMessage)</literal> &mdash;  faces メッセージを"
+"追加します。 このメッセージは現在の変換で発生する次のレンダリング応答フェーズ"
+"中に表示されます。"
+
+#. Tag: para
+#: Components.xml:104
+#, no-c-format
+msgid ""
+"<literal>add(String messageTemplate)</literal> &mdash; add a faces message, "
+"rendered from the given message template which may contain EL expressions."
+msgstr ""
+"<literal>add(String messageTemplate)</literal> &mdash;  EL 表現を含んでいる可"
+"能性がある特定のメッセージテンプレートからレンダリングされる faces メッセージ"
+"を追加します。"
+
+#. Tag: para
+#: Components.xml:109
+#, no-c-format
+msgid ""
+"<literal>add(Severity severity, String messageTemplate)</literal> &mdash; "
+"add a faces message, rendered from the given message template which may "
+"contain EL expressions."
+msgstr ""
+"<literal>add(Severity severity, String messageTemplate)</literal> &mdash; EL "
+"表現を含んでいる可能性がある特定のメッセージテンプレートからレンダリングされ"
+"る faces メッセージを追加します。"
+
+#. Tag: para
+#: Components.xml:114
+#, no-c-format
+msgid ""
+"<literal>addFromResourceBundle(String key)</literal> &mdash; add a faces "
+"message, rendered from a message template defined in the Seam resource "
+"bundle which may contain EL expressions."
+msgstr ""
+"<literal>addFromResourceBundle(String key)</literal> &mdash; Seam リソースバ"
+"ンドル内で定義されるメッセージテンプレートからレンダリングされる faces メッ"
+"セージを追加します。 EL 表現を含んでいる可能性があります。"
+
+#. Tag: para
+#: Components.xml:119
+#, no-c-format
+msgid ""
+"<literal>addFromResourceBundle(Severity severity, String key)</literal> "
+"&mdash; add a faces message, rendered from a message template defined in the "
+"Seam resource bundle which may contain EL expressions."
+msgstr ""
+"<literal>addFromResourceBundle(Severity severity, String key)</literal> "
+"&mdash; Seam リソースバンドル内で定義されるメッセージテンプレートからレンダリ"
+"ングされる faces メッセージを追加します。 EL 表現を含んでいる可能性がありま"
+"す。"
+
+#. Tag: para
+#: Components.xml:124
+#, no-c-format
+msgid "<literal>clear()</literal> &mdash; clear all messages."
+msgstr "<literal>clear()</literal> &mdash; 全てのメッセージを消去します。"
+
+#. Tag: literal
+#: Components.xml:132
+#, no-c-format
+msgid "org.jboss.seam.core.redirect"
+msgstr "org.jboss.seam.core.redirect"
+
+#. Tag: para
+#: Components.xml:134
+#, no-c-format
+msgid ""
+"A convenient API for performing redirects with parameters (this is "
+"especially useful for bookmarkable search results screens)."
+msgstr ""
+"パラメータつきでリダイレクトを行う場合に便利な API です (特にブックマーク可能"
+"な検索結果画面などに役立ちます)。"
+
+#. Tag: para
+#: Components.xml:139
+#, no-c-format
+msgid "<literal>redirect.viewId</literal> &mdash; the JSF view id to redirect to."
+msgstr ""
+"<literal>redirect.viewId</literal> &mdash; リダイレクト先の JSF ビュー ID で"
+"す。"
+
+#. Tag: para
+#: Components.xml:144
+#, no-c-format
+msgid ""
+"<literal>redirect.conversationPropagationEnabled</literal> &mdash; "
+"determines whether the conversation will propagate across the redirect."
+msgstr ""
+"<literal>redirect.conversationPropagationEnabled</literal> &mdash; リダイレク"
+"ト全体に変換が伝播するかどうかを確定します。"
+
+#. Tag: para
+#: Components.xml:149
+#, no-c-format
+msgid ""
+"<literal>redirect.parameters</literal> &mdash; a map of request parameter "
+"name to value, to be passed in the redirect request."
+msgstr ""
+"<literal>redirect.parameters</literal> &mdash; 値に対するリクエストパラメータ"
+"名のマップです。 リダイレクトリクエスト内で渡されます。"
+
+#. Tag: para
+#: Components.xml:154
+#, no-c-format
+msgid "<literal>execute()</literal> &mdash; perform the redirect immediately."
+msgstr "<literal>execute()</literal> &mdash; 直ちにリダイレクトを行います。"
+
+#. Tag: para
+#: Components.xml:159
+#, no-c-format
+msgid ""
+"<literal>captureCurrentRequest()</literal> &mdash; stores the view id and "
+"request parameters of the current GET request (in the conversation context), "
+"for later use by calling <literal>execute()</literal>."
+msgstr ""
+"<literal>captureCurrentRequest()</literal> &mdash; 現在の GET リクエスト(対話"
+"コンテキスト内)のリクエストパラメータとビュー ID を格納します。 後で "
+"<literal>execute()</literal> をコールして使用します。"
+
+#. Tag: literal
+#: Components.xml:167
+#, no-c-format
+msgid "org.jboss.seam.core.httpError"
+msgstr "org.jboss.seam.core.httpError"
+
+#. Tag: para
+#: Components.xml:169
+#, no-c-format
+msgid "A convenient API for sending HTTP errors."
+msgstr "HTTP エラーを送信する場合に便利な API です。"
+
+#. Tag: literal
+#: Components.xml:175
+#, no-c-format
+msgid "org.jboss.seam.core.events"
+msgstr "org.jboss.seam.core.events"
+
+#. Tag: para
+#: Components.xml:177
+#, no-c-format
+msgid ""
+"An API for raising events that can be observed via <literal>@Observer</"
+"literal> methods, or method bindings in <literal>components.xml</literal>."
+msgstr ""
+"<literal>@Observer</literal> のメソッドまたは <literal>components.xml</"
+"literal> 内のメソッドバインディング経由で監視できるイベントを引き起こす API "
+"です。"
+
+#. Tag: para
+#: Components.xml:182
+#, no-c-format
+msgid ""
+"<literal>raiseEvent(String type)</literal> &mdash; raise an event of a "
+"particular type and distribute to all observers."
+msgstr ""
+"<literal>raiseEvent(String type)</literal> &mdash; は特定タイプのイベントを引"
+"き起こし、 監視している人全員に配信します。"
+
+#. Tag: para
+#: Components.xml:187
+#, no-c-format
+msgid ""
+"<literal>raiseAsynchronousEvent(String type)</literal> &mdash; raise an "
+"event to be processed asynchronously by the EJB3 timer service."
+msgstr ""
+"<literal>raiseAsynchronousEvent(String type)</literal> &mdash; EJB3 タイマー"
+"サービスにより非同期的に処理されるイベントを引き起こします。"
+
+#. Tag: para
+#: Components.xml:192
+#, no-c-format
+msgid ""
+"<literal>raiseTimedEvent(String type, ....)</literal> &mdash; schedule an "
+"event to be processed asynchronously by the EJB3 timer service."
+msgstr ""
+"<literal>raiseTimedEvent(String type, ....)</literal> &mdash; EJB3 タイマー"
+"サービスにより非同期的に処理されるイベントをスケジュールします。"
+
+#. Tag: para
+#: Components.xml:197
+#, no-c-format
+msgid ""
+"<literal>addListener(String type, String methodBinding)</literal> &mdash; "
+"add an observer for a particular event type."
+msgstr ""
+"<literal>addListener(String type, String methodBinding)</literal> &mdash; 特"
+"定イベントタイプの監視者を追加します。"
+
+#. Tag: literal
+#: Components.xml:205
+#, no-c-format
+msgid "org.jboss.seam.core.interpolator"
+msgstr "org.jboss.seam.core.interpolator"
+
+#. Tag: para
+#: Components.xml:207
+#, no-c-format
+msgid "An API for interpolating the values of JSF EL expressions in Strings."
+msgstr "Strings に JFS EL 表現の値を補完するための API です。"
+
+#. Tag: para
+#: Components.xml:212
+#, no-c-format
+msgid ""
+"<literal>interpolate(String template)</literal> &mdash; scan the template "
+"for JSF EL expressions of the form <literal>#{...}</literal> and replace "
+"them with their evaluated values."
+msgstr ""
+"<literal>interpolate(String template)</literal> &mdash; <literal>#{...}</"
+"literal> 形式の JSF EL 表現用のテンプレートをスキャンし、 それを評価された値"
+"と置き換えます。"
+
+#. Tag: literal
+#: Components.xml:220
+#, no-c-format
+msgid "org.jboss.seam.core.expressions"
+msgstr "org.jboss.seam.core.expressions"
+
+#. Tag: para
+#: Components.xml:222
+#, no-c-format
+msgid "An API for creating value and method bindings."
+msgstr "値とメソッドバインティングを作成するための API です。"
+
+#. Tag: para
+#: Components.xml:227
+#, no-c-format
+msgid ""
+"<literal>createValueBinding(String expression)</literal> &mdash; create a "
+"value binding object."
+msgstr ""
+"<literal>createValueBinding(String expression)</literal> &mdash; 値バインディ"
+"ングオブジェクトを作成します。"
+
+#. Tag: para
+#: Components.xml:232
+#, no-c-format
+msgid ""
+"<literal>createMethodBinding(String expression)</literal> &mdash; create a "
+"method binding object."
+msgstr ""
+"<literal>createMethodBinding(String expression)</literal> &mdash; メソッドバ"
+"インディングオブジェクトを作成します。"
+
+#. Tag: literal
+#: Components.xml:240
+#, no-c-format
+msgid "org.jboss.seam.core.pojoCache"
+msgstr "org.jboss.seam.core.pojoCache"
+
+#. Tag: para
+#: Components.xml:242
+#, no-c-format
+msgid "Manager component for a JBoss Cache <literal>PojoCache</literal> instance."
+msgstr ""
+" JBoss Cache <literal>PojoCache</literal> インスタンスの管理コンポーネントで"
+"す。"
+
+#. Tag: para
+#: Components.xml:247
+#, no-c-format
+msgid ""
+"<literal>pojoCache.cfgResourceName</literal> &mdash; the name of the "
+"configuration file. Default to <literal>treecache.xml</literal>."
+msgstr ""
+"<literal>pojoCache.cfgResourceName</literal> &mdash; 設定ファイルの名前で"
+"す。 <literal>treecache.xml</literal> にデフォルトで設定します。"
+
+#. Tag: literal
+#: Components.xml:255
+#, no-c-format
+msgid "org.jboss.seam.core.uiComponent"
+msgstr "org.jboss.seam.core.uiComponent"
+
+#. Tag: para
+#: Components.xml:257
+#, no-c-format
+msgid ""
+"Allows access to a JSF <literal>UIComponent</literal> by its id from the EL. "
+"For example, we can write <literal>@In(\"#{uiComponent[&#39;myForm:"
+"address&#39;].value}\")</literal>."
+msgstr ""
+"EL からの ID で JSF <literal>UIComponent</literal> へのアクセスを許可しま"
+"す。 たとえば、 <literal>@In(\"#{uiComponent['myForm:address'].value}\")</"
+"literal> と記述することができます。"
+
+#. Tag: title
+#: Components.xml:269
+#, no-c-format
+msgid "Components for internationalization and themes"
+msgstr "国際化とテーマのコンポーネント"
+
+#. Tag: para
+#: Components.xml:270
+#, no-c-format
+msgid ""
+"The next group of components make it easy to build internationalized user "
+"interfaces using Seam."
+msgstr ""
+"次のコンポーネントグループは Seam を使用した国際化ユーザーインターフェースの"
+"ビルドを容易にします。"
+
+#. Tag: literal
+#: Components.xml:275
+#, no-c-format
+msgid "org.jboss.seam.core.locale"
+msgstr "org.jboss.seam.core.locale"
+
+#. Tag: para
+#: Components.xml:277
+#, no-c-format
+msgid "The Seam locale. The locale is session scoped."
+msgstr "Seam のロケールです。 このロケールはセッションスコープです。"
+
+#. Tag: literal
+#: Components.xml:283
+#, no-c-format
+msgid "org.jboss.seam.core.timezone"
+msgstr "org.jboss.seam.core.timezone"
+
+#. Tag: para
+#: Components.xml:285
+#, no-c-format
+msgid "The Seam timezone. The timezone is session scoped."
+msgstr "Seam のタイムゾーンです。 タイムゾーンはセッションスコープです。"
+
+#. Tag: literal
+#: Components.xml:291
+#, no-c-format
+msgid "org.jboss.seam.core.resourceBundle"
+msgstr "org.jboss.seam.core.resourceBundle"
+
+#. Tag: para
+#: Components.xml:293
+#, no-c-format
+msgid ""
+"The Seam resource bundle. The resource bundle is session scoped. The Seam "
+"resource bundle performs a depth-first search for keys in a list of Java "
+"resource bundles."
+msgstr ""
+"Seam リソースバンドルです。 リソースバンドルはセッションスコープです。 Seam "
+"リソースバンドルは Java リソースバンドルの一覧でキーの縦型検索を行います。"
+
+#. Tag: para
+#: Components.xml:298
+#, no-c-format
+msgid ""
+"<literal>resourceBundle.bundleNames</literal> &mdash; the names of the Java "
+"resource bundles to search. Default to <literal>messages</literal>."
+msgstr ""
+"<literal>resourceBundle.bundleNames</literal> &mdash; 検索する Java リソース"
+"バンドルの名前です。 デフォルトで <literal>messages</literal> に設定されま"
+"す。"
+
+#. Tag: literal
+#: Components.xml:306
+#, no-c-format
+msgid "org.jboss.seam.core.localeSelector"
+msgstr "org.jboss.seam.core.localeSelector"
+
+#. Tag: para
+#: Components.xml:308
+#, no-c-format
+msgid ""
+"Supports selection of the locale either at configuration time, or by the "
+"user at runtime."
+msgstr ""
+"設定時間またはランタイム時のユーザーのいずれかでロケール選択をサポートしま"
+"す。"
+
+#. Tag: para
+#: Components.xml:313 Components.xml:363
+#, no-c-format
+msgid "<literal>select()</literal> &mdash; select the specified locale."
+msgstr "<literal>select()</literal> &mdash; 指定されたロケールを選択します。"
+
+#. Tag: para
+#: Components.xml:318
+#, no-c-format
+msgid ""
+"<literal>localeSelector.locale</literal> &mdash; the actual <literal>java."
+"util.Locale</literal>."
+msgstr ""
+"<literal>localeSelector.locale</literal> &mdash; 実際の <literal>java.util."
+"Locale</literal> です。"
+
+#. Tag: para
+#: Components.xml:323
+#, no-c-format
+msgid ""
+"<literal>localeSelector.localeString</literal> &mdash; the stringified "
+"representation of the locale."
+msgstr ""
+"<literal>localeSelector.localeString</literal> &mdash; ロケールの文字列表現で"
+"す。"
+
+#. Tag: para
+#: Components.xml:328
+#, no-c-format
+msgid ""
+"<literal>localeSelector.language</literal> &mdash; the language for the "
+"specified locale."
+msgstr "<literal>localeSelector.language</literal> &mdash; 指定ロケールの言語です。"
+
+#. Tag: para
+#: Components.xml:333
+#, no-c-format
+msgid ""
+"<literal>localeSelector.country</literal> &mdash; the country for the "
+"specified locale."
+msgstr "<literal>localeSelector.country</literal> &mdash; 指定ロケールの国名です。"
+
+#. Tag: para
+#: Components.xml:338
+#, no-c-format
+msgid ""
+"<literal>localeSelector.variant</literal> &mdash; the variant for the "
+"specified locale."
+msgstr ""
+"<literal>localeSelector.variant</literal> &mdash; 指定ロケールのバリアントで"
+"す。"
+
+#. Tag: para
+#: Components.xml:343
+#, no-c-format
+msgid ""
+"<literal>localeSelector.supportedLocales</literal> &mdash; a list of "
+"<literal>SelectItem</literal>s representing the supported locales listed in "
+"<literal>jsf-config.xml</literal>."
+msgstr ""
+"<literal>localeSelector.supportedLocales</literal> &mdash; <literal>jsf-"
+"config.xml</literal> 内に一覧表示されるサポートロケールをを表している "
+"<literal>SelectItem</literal> の一覧です。"
+
+#. Tag: para
+#: Components.xml:348
+#, no-c-format
+msgid ""
+"<literal>localeSelector.cookieEnabled</literal> &mdash; specifies that the "
+"locale selection should be persisted via a cookie."
+msgstr ""
+"<literal>localeSelector.cookieEnabled</literal> &mdash; クッキーで存続される"
+"べきロケール選択を指定します。"
+
+#. Tag: literal
+#: Components.xml:356
+#, no-c-format
+msgid "org.jboss.seam.core.timezoneSelector"
+msgstr "org.jboss.seam.core.timezoneSelector"
+
+#. Tag: para
+#: Components.xml:358
+#, no-c-format
+msgid ""
+"Supports selection of the timezone either at configuration time, or by the "
+"user at runtime."
+msgstr ""
+"設定時間またはランタイム時のユーザーのいずれかでタイムゾーン選択をサポートし"
+"ます。"
+
+#. Tag: para
+#: Components.xml:368
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.timezone</literal> &mdash; the actual "
+"<literal>java.util.TimeZone</literal>."
+msgstr ""
+"<literal>timezoneSelector.timezone</literal> &mdash; 実際の <literal>java."
+"util.TimeZone</literal> です。"
+
+#. Tag: para
+#: Components.xml:373
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.timeZoneId</literal> &mdash; the stringified "
+"representation of the timezone."
+msgstr ""
+"<literal>timezoneSelector.timeZoneId</literal> &mdash; タイムゾーンの文字列表"
+"現です。"
+
+#. Tag: para
+#: Components.xml:378
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.cookieEnabled</literal> &mdash; specifies that the "
+"timezone selection should be persisted via a cookie."
+msgstr ""
+"<literal>timezoneSelector.cookieEnabled</literal> &mdash; クッキーで存続され"
+"るべきタイムゾーン選択を指定します。"
+
+#. Tag: literal
+#: Components.xml:386
+#, no-c-format
+msgid "org.jboss.seam.core.messages"
+msgstr "org.jboss.seam.core.messages"
+
+#. Tag: para
+#: Components.xml:388
+#, no-c-format
+msgid ""
+"A map containing internationalized messages rendered from message templates "
+"defined in the Seam resource bundle."
+msgstr ""
+"Seam リソースバンドル内で定義されるメッセージテンプレートからレンダリングされ"
+"る国際化メッセージを含んでいるマップです。"
+
+#. Tag: literal
+#: Components.xml:394
+#, no-c-format
+msgid "org.jboss.seam.theme.themeSelector"
+msgstr "org.jboss.seam.theme.themeSelector"
+
+#. Tag: para
+#: Components.xml:396
+#, no-c-format
+msgid ""
+"Supports selection of the theme either at configuration time, or by the user "
+"at runtime."
+msgstr "設定時間またはランタイム時のユーザーのいずれかでテーマ選択をサポートします。"
+
+#. Tag: para
+#: Components.xml:401
+#, no-c-format
+msgid "<literal>select()</literal> &mdash; select the specified theme."
+msgstr "<literal>select()</literal> &mdash; 指定されたテーマを選択します。"
+
+#. Tag: para
+#: Components.xml:406
+#, no-c-format
+msgid "<literal>theme.availableThemes</literal> &mdash; the list of defined themes."
+msgstr "<literal>theme.availableThemes</literal> &mdash; 定義されたテーマの一覧です。"
+
+#. Tag: para
+#: Components.xml:411
+#, no-c-format
+msgid "<literal>themeSelector.theme</literal> &mdash; the selected theme."
+msgstr "<literal>themeSelector.theme</literal> &mdash; 選択されたテーマです。"
+
+#. Tag: para
+#: Components.xml:416
+#, no-c-format
+msgid ""
+"<literal>themeSelector.themes</literal> &mdash; a list of "
+"<literal>SelectItem</literal>s representing the defined themes."
+msgstr ""
+"<literal>themeSelector.themes</literal> &mdash; 定義されたテーマを示している "
+"<literal>SelectItem</literal> の一覧です。"
+
+#. Tag: para
+#: Components.xml:421
+#, no-c-format
+msgid ""
+"<literal>themeSelector.cookieEnabled</literal> &mdash; specifies that the "
+"theme selection should be persisted via a cookie."
+msgstr ""
+"<literal>themeSelector.cookieEnabled</literal> &mdash; クッキーで存続されるべ"
+"きテーマ選択を指定します。"
+
+#. Tag: literal
+#: Components.xml:429
+#, no-c-format
+msgid "org.jboss.seam.theme.theme"
+msgstr "org.jboss.seam.theme.theme"
+
+#. Tag: para
+#: Components.xml:431
+#, no-c-format
+msgid "A map containing theme entries."
+msgstr "テーマエントリを含んでいるマップです。"
+
+#. Tag: title
+#: Components.xml:443
+#, no-c-format
+msgid "Components for controlling conversations"
+msgstr "対話を制御するためのコンポーネント"
+
+#. Tag: para
+#: Components.xml:444
+#, no-c-format
+msgid ""
+"The next group of components allow control of conversations by the "
+"application or user interface."
+msgstr ""
+"次のコンポーネントグループを使うとアプリケーションまたはユーザーインター"
+"フェースにより対話の制御を行うことができるようになります。"
+
+#. Tag: literal
+#: Components.xml:449
+#, no-c-format
+msgid "org.jboss.seam.core.conversation"
+msgstr "org.jboss.seam.core.conversation"
+
+#. Tag: para
+#: Components.xml:451
+#, no-c-format
+msgid "API for application control of attributes of the current Seam conversation."
+msgstr "現在の Seam 対話の属性をアプリケーション制御するための API です。"
+
+#. Tag: para
+#: Components.xml:456 Components.xml:471
+#, no-c-format
+msgid "<literal>getId()</literal> &mdash; returns the current conversation id"
+msgstr "<literal>getId()</literal> &mdash; 現在の対話 ID を返します。"
+
+#. Tag: para
+#: Components.xml:461
+#, no-c-format
+msgid ""
+"<literal>isNested()</literal> &mdash; is the current conversation a nested "
+"conversation?"
+msgstr ""
+"<literal>isNested()</literal> &mdash; 現在の対話がネストされる場合 true を返"
+"します。"
+
+#. Tag: para
+#: Components.xml:466
+#, no-c-format
+msgid ""
+"<literal>isLongRunning()</literal> &mdash; is the current conversation a "
+"long-running conversation?"
+msgstr ""
+"<literal>isLongRunning()</literal> &mdash; 現在の対話が長期の対話の場合 true "
+"を返します。"
+
+#. Tag: para
+#: Components.xml:476
+#, no-c-format
+msgid ""
+"<literal>getParentId()</literal> &mdash; returns the conversation id of the "
+"parent conversation"
+msgstr "<literal>getParentId()</literal> &mdash; 親対話の対話 ID を返します。"
+
+#. Tag: para
+#: Components.xml:481
+#, no-c-format
+msgid ""
+"<literal>getRootId()</literal> &mdash; returns the conversation id of the "
+"root conversation"
+msgstr "<literal>getRootId()</literal> &mdash; root 対話の対話 ID を返します。"
+
+#. Tag: para
+#: Components.xml:486
+#, no-c-format
+msgid ""
+"<literal>setTimeout(int timeout)</literal> &mdash; sets the timeout for the "
+"current conversation"
+msgstr ""
+"<literal>setTimeout(int timeout)</literal> &mdash; 現在の対話のタイムアウトを"
+"設定します。"
+
+#. Tag: para
+#: Components.xml:491
+#, no-c-format
+msgid ""
+"<literal>setViewId(String outcome)</literal> &mdash; sets the view id to be "
+"used when switching back to the current conversation from the conversation "
+"switcher, conversation list, or breadcrumbs."
+msgstr ""
+"<literal>setViewId(String outcome)</literal> &mdash; conversation switcher、 "
+"conversation list、 breadcrumbs のいずれかから現在の対話に切り替える場合に使"
+"用されるビュー ID を設定します。"
+
+#. Tag: para
+#: Components.xml:496
+#, no-c-format
+msgid ""
+"<literal>setDescription(String description)</literal> &mdash; sets the "
+"description of the current conversation to be displayed in the conversation "
+"switcher, conversation list, or breadcrumbs."
+msgstr ""
+"<literal>setDescription(String description)</literal> &mdash; conversation "
+"switcher、 conversation list、 または breadcrumbs で表示される現在の対話の詳"
+"細を設定します。"
+
+#. Tag: para
+#: Components.xml:501
+#, no-c-format
+msgid ""
+"<literal>redirect()</literal> &mdash; redirect to the last well-defined view "
+"id for this conversation (useful after login challenges)."
+msgstr ""
+"<literal>redirect()</literal> &mdash; この対話に対して詳細に定義された最後の"
+"ビューにリダイレクトします(ログイン試行後に便利)。"
+
+#. Tag: para
+#: Components.xml:506
+#, no-c-format
+msgid ""
+"<literal>leave()</literal> &mdash; exit the scope of this conversation, "
+"without actually ending the conversation."
+msgstr ""
+"<literal>leave()</literal> &mdash; 実際に対話を終了することなく、 この対話の"
+"スコープを終了します。"
+
+#. Tag: para
+#: Components.xml:511
+#, no-c-format
+msgid ""
+"<literal>begin()</literal> &mdash; begin a long-running conversation "
+"(equivalent to <literal>@Begin</literal>)."
+msgstr ""
+"<literal>begin()</literal> &mdash; 長期の対話を開始します (<literal>@Begin</"
+"literal> と同等)。"
+
+#. Tag: para
+#: Components.xml:516
+#, no-c-format
+msgid ""
+"<literal>beginPageflow(String pageflowName)</literal> &mdash; begin a long-"
+"running conversation with a pageflow (equivalent to <literal>@Begin(pageflow="
+"\"...\")</literal>)."
+msgstr ""
+"<literal>beginPageflow(String pageflowName)</literal> &mdash; ページフロー付"
+"きの長期の対話を開始します (<literal>@Begin(pageflow=\"...\" と同等</"
+"literal>)。"
+
+#. Tag: para
+#: Components.xml:521
+#, no-c-format
+msgid ""
+"<literal>end()</literal> &mdash; end a long-running conversation (equivalent "
+"to <literal>@End</literal>)."
+msgstr ""
+"<literal>end()</literal> &mdash; 長期の対話を終了します (<literal>@End</"
+"literal> と同等)。"
+
+#. Tag: para
+#: Components.xml:526
+#, no-c-format
+msgid ""
+"<literal>pop()</literal> &mdash; pop the conversation stack, returning to "
+"the parent conversation."
+msgstr "<literal>pop()</literal> &mdash; 親対話に戻り対話スタックをポップします。"
+
+#. Tag: para
+#: Components.xml:531
+#, no-c-format
+msgid ""
+"<literal>root()</literal> &mdash; return to the root conversation of the "
+"conversation stack."
+msgstr "<literal>root()</literal> &mdash; 対話スタックの root 対話に戻ります。"
+
+#. Tag: para
+#: Components.xml:536
+#, no-c-format
+msgid ""
+"<literal>changeFlushMode(FlushModeType flushMode)</literal> &mdash; change "
+"the flush mode of the conversation."
+msgstr ""
+"<literal>changeFlushMode(FlushModeType flushMode)</literal>&mdash;  対話のフ"
+"ラッシュモードを変更します。"
+
+#. Tag: literal
+#: Components.xml:544
+#, no-c-format
+msgid "org.jboss.seam.core.conversationList"
+msgstr "org.jboss.seam.core.conversationList"
+
+#. Tag: para
+#: Components.xml:546
+#, no-c-format
+msgid "Manager component for the conversation list."
+msgstr "対話一覧の管理コンポーネントです。"
+
+#. Tag: literal
+#: Components.xml:552
+#, no-c-format
+msgid "org.jboss.seam.core.conversationStack"
+msgstr "org.jboss.seam.core.conversationStack"
+
+#. Tag: para
+#: Components.xml:554
+#, no-c-format
+msgid "Manager component for the conversation stack (breadcrumbs)."
+msgstr "対話スタックの管理コンポーネントです (breadcrumbs)。"
+
+#. Tag: literal
+#: Components.xml:560
+#, no-c-format
+msgid "org.jboss.seam.core.switcher"
+msgstr "org.jboss.seam.core.switcher"
+
+#. Tag: para
+#: Components.xml:562
+#, no-c-format
+msgid "The conversation switcher."
+msgstr "conversation switcher です。"
+
+#. Tag: title
+#: Components.xml:574
+#, no-c-format
+msgid "jBPM-related components"
+msgstr "jBPM 関連のコンポーネント"
+
+#. Tag: para
+#: Components.xml:575
+#, no-c-format
+msgid "These components are for use with jBPM."
+msgstr "jBPM と併用するコンポーネントになります。"
+
+#. Tag: literal
+#: Components.xml:580
+#, no-c-format
+msgid "org.jboss.seam.core.pageflow"
+msgstr "org.jboss.seam.core.pageflow"
+
+#. Tag: para
+#: Components.xml:582
+#, no-c-format
+msgid "API control of Seam pageflows."
+msgstr "Seam ページフローの API 制御です。"
+
+#. Tag: para
+#: Components.xml:587
+#, no-c-format
+msgid ""
+"<literal>isInProcess()</literal> &mdash; returns <literal>true</literal> if "
+"there is currently a pageflow in process"
+msgstr ""
+"<literal>isInProcess()</literal> &mdash; 現在プロセスにページフローがある場合"
+"に <literal>true</literal> を返します。"
+
+#. Tag: para
+#: Components.xml:592
+#, no-c-format
+msgid ""
+"<literal>getProcessInstance()</literal> &mdash; returns jBPM "
+"<literal>ProcessInstance</literal> for the current pageflow"
+msgstr ""
+"<literal>getProcessInstance()</literal> &mdash; 現在のページフローに対して "
+"jBPM <literal>ProcessInstance</literal> を返します。"
+
+#. Tag: para
+#: Components.xml:597
+#, no-c-format
+msgid ""
+"<literal>begin(String pageflowName)</literal> &mdash; begin a pageflow in "
+"the context of the current conversation"
+msgstr ""
+"<literal>begin(String pageflowName)</literal> &mdash; 現在の対話のコンテキス"
+"トでページフローを開始します。"
+
+#. Tag: para
+#: Components.xml:602
+#, no-c-format
+msgid ""
+"<literal>reposition(String nodeName)</literal> &mdash; reposition the "
+"current pageflow to a particular node"
+msgstr ""
+"<literal>reposition(String nodeName)</literal> &mdash; 現在のページフローを特"
+"定のノードに再配置します。"
+
+#. Tag: literal
+#: Components.xml:610
+#, no-c-format
+msgid "org.jboss.seam.core.actor"
+msgstr "org.jboss.seam.core.actor"
+
+#. Tag: para
+#: Components.xml:612
+#, no-c-format
+msgid ""
+"API for application control of attributes of the jBPM actor associated with "
+"the current session."
+msgstr ""
+"現在のセッションに関する jBPM actor の属性をアプリケーション制御するための "
+"API です。"
+
+#. Tag: para
+#: Components.xml:617
+#, no-c-format
+msgid ""
+"<literal>setId(String actorId)</literal> &mdash; sets the jBPM actor id of "
+"the current user."
+msgstr ""
+"<literal>setId(String actorId)</literal> &mdash; 現在のユーザーの jBPM アク"
+"ター ID をセットします。"
+
+#. Tag: para
+#: Components.xml:622
+#, no-c-format
+msgid ""
+"<literal>getGroupActorIds()</literal> &mdash; returns a <literal>Set</"
+"literal> to which jBPM actor ids for the current users groups may be added."
+msgstr ""
+"<literal>getGroupActorIds()</literal> &mdash; 追加される可能性のある現在の"
+"ユーザーのグループに対する jBPM actor ids に <literal>Set</literal> を返しま"
+"す。"
+
+#. Tag: literal
+#: Components.xml:630
+#, no-c-format
+msgid "org.jboss.seam.core.transition"
+msgstr "org.jboss.seam.core.transition"
+
+#. Tag: para
+#: Components.xml:632
+#, no-c-format
+msgid "API for application control of the jBPM transition for the current task."
+msgstr "現在のタスクに対する jBPM 移行のアプリケーション制御を目的とする API です。"
+
+#. Tag: para
+#: Components.xml:637
+#, no-c-format
+msgid ""
+"<literal>setName(String transitionName)</literal> &mdash; sets the jBPM "
+"transition name to be used when the current task is ended via "
+"<literal>@EndTask</literal>."
+msgstr ""
+"<literal>setName(String transitionName)</literal> &mdash; 現在のタスクが "
+"<literal>@EndTask</literal> 経由で終了される場合に使用される jBPM 移行名を"
+"セットします。"
+
+#. Tag: literal
+#: Components.xml:645
+#, no-c-format
+msgid "org.jboss.seam.core.businessProcess"
+msgstr "org.jboss.seam.core.businessProcess"
+
+#. Tag: para
+#: Components.xml:647
+#, no-c-format
+msgid ""
+"API for programmatic control of the association between the conversation and "
+"business process."
+msgstr "対話とビジネスプロセス間の関連性をプログラム制御するための API です。"
+
+#. Tag: para
+#: Components.xml:652
+#, no-c-format
+msgid ""
+"<literal>businessProcess.taskId</literal> &mdash; the id of the task "
+"associated with the current conversation."
+msgstr ""
+"<literal>businessProcess.taskId</literal> &mdash; 現在の対話と関連付けられて"
+"いるタスクの ID です。"
+
+#. Tag: para
+#: Components.xml:657
+#, no-c-format
+msgid ""
+"<literal>businessProcess.processId</literal> &mdash; the id of the process "
+"associated with the current conversation."
+msgstr ""
+"<literal>businessProcess.processId</literal> &mdash; 現在の対話と関連付けられ"
+"ているプロセスの ID です。"
+
+#. Tag: para
+#: Components.xml:662
+#, no-c-format
+msgid ""
+"<literal>businessProcess.hasCurrentTask()</literal> &mdash; is a task "
+"instance associated with the current conversation?"
+msgstr ""
+"<literal>businessProcess.hasCurrentTask()</literal> &mdash; 現在の対話と関連"
+"付けられているタスクインスタンスです。"
+
+#. Tag: para
+#: Components.xml:667
+#, no-c-format
+msgid ""
+"<literal>businessProcess.hasCurrentProcess()</literal> &mdash; is a process "
+"instance associated with the current conversation."
+msgstr ""
+"<literal>businessProcess.hasCurrentProcess()</literal> &mdash; 現在の対話と関"
+"連付けられているプロセスインスタンスです。"
+
+#. Tag: para
+#: Components.xml:672
+#, no-c-format
+msgid ""
+"<literal>createProcess(String name)</literal> &mdash; create an instance of "
+"the named process definition and associate it with the current conversation."
+msgstr ""
+"<literal>createProcess(String name)</literal> &mdash; 名前付けされたプロセス"
+"定義のインスタンスを作成して現在の対話と関連付けます。"
+
+#. Tag: para
+#: Components.xml:677
+#, no-c-format
+msgid ""
+"<literal>startTask()</literal> &mdash; start the task associated with the "
+"current conversation."
+msgstr ""
+"<literal>startTask()</literal> &mdash; 現在の対話と関連付けされているタスクを"
+"開始します。"
+
+#. Tag: para
+#: Components.xml:682
+#, no-c-format
+msgid ""
+"<literal>endTask(String transitionName)</literal> &mdash; end the task "
+"associated with the current conversation."
+msgstr ""
+"<literal>endTask(String transitionName)</literal> &mdash; 現在の対話と関連付"
+"けられているタスクを終了します。"
+
+#. Tag: para
+#: Components.xml:687
+#, no-c-format
+msgid ""
+"<literal>resumeTask(Long id)</literal> &mdash; associate the task with the "
+"given id with the current conversation."
+msgstr ""
+"<literal>resumeTask(Long id)</literal> &mdash; 特定の ID を持つタスクを現在の"
+"対話と関連付けます。"
+
+#. Tag: para
+#: Components.xml:692
+#, no-c-format
+msgid ""
+"<literal>resumeProcess(Long id)</literal> &mdash; associate the process with "
+"the given id with the current conversation."
+msgstr ""
+"<literal>resumeProcess(Long id)</literal> &mdash; 特定の ID を持つプロセスを"
+"現在の対話と関連付けます。"
+
+#. Tag: para
+#: Components.xml:697
+#, no-c-format
+msgid ""
+"<literal>transition(String transitionName)</literal> &mdash; trigger the "
+"transition."
+msgstr ""
+"<literal>transition(String transitionName)</literal> &mdash; は移行を誘発しま"
+"す。"
+
+#. Tag: literal
+#: Components.xml:705
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstance"
+msgstr "org.jboss.seam.core.taskInstance"
+
+#. Tag: para
+#: Components.xml:707
+#, no-c-format
+msgid "Manager component for the jBPM <literal>TaskInstance</literal>."
+msgstr "jBPM <literal>TaskInstance</literal> の管理コンポーネントです。"
+
+#. Tag: literal
+#: Components.xml:713
+#, no-c-format
+msgid "org.jboss.seam.core.processInstance"
+msgstr "org.jboss.seam.core.processInstance"
+
+#. Tag: para
+#: Components.xml:715
+#, no-c-format
+msgid "Manager component for the jBPM <literal>ProcessInstance</literal>."
+msgstr "jBPM <literal>ProcessInstance</literal> の管理コンポーネントです。"
+
+#. Tag: literal
+#: Components.xml:721
+#, no-c-format
+msgid "org.jboss.seam.core.jbpmContext"
+msgstr "org.jboss.seam.core.jbpmContext"
+
+#. Tag: para
+#: Components.xml:723
+#, no-c-format
+msgid "Manager component for an event-scoped <literal>JbpmContext</literal>."
+msgstr "イベントスコープ <literal>JbpmContext</literal> の管理コンポーネントです。"
+
+#. Tag: literal
+#: Components.xml:729
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstanceList"
+msgstr "org.jboss.seam.core.taskInstanceList"
+
+#. Tag: para
+#: Components.xml:731
+#, no-c-format
+msgid "Manager component for the jBPM task list."
+msgstr "jBPM task list の管理コンポーネントです。"
+
+#. Tag: literal
+#: Components.xml:737
+#, no-c-format
+msgid "org.jboss.seam.core.pooledTaskInstanceList"
+msgstr "org.jboss.seam.core.pooledTaskInstanceList"
+
+#. Tag: para
+#: Components.xml:739
+#, no-c-format
+msgid "Manager component for the jBPM pooled task list."
+msgstr "jBPM pooled task list の管理コンポーネントです。"
+
+#. Tag: literal
+#: Components.xml:745
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstanceListForType"
+msgstr "org.jboss.seam.core.taskInstanceListForType"
+
+#. Tag: para
+#: Components.xml:747
+#, no-c-format
+msgid "Manager component for the jBPM task lists."
+msgstr "jBPM タスクリスト集の管理コンポーネントです。"
+
+#. Tag: literal
+#: Components.xml:753
+#, no-c-format
+msgid "org.jboss.seam.core.pooledTask"
+msgstr "org.jboss.seam.core.pooledTask"
+
+#. Tag: para
+#: Components.xml:755
+#, no-c-format
+msgid "Action handler for pooled task assignment."
+msgstr "pooled task 割り当てのアクションハンドラです。"
+
+#. Tag: para
+#: Components.xml:761
+#, no-c-format
+msgid ""
+"All of these components are installed whenever the component <literal>org."
+"jboss.seam.core.jbpm</literal> is installed."
+msgstr ""
+"<literal>org.jboss.seam.core.jbpm</literal> がインストールされると、 これらの"
+"全コンポーネントが必ずインストールされます。"
+
+#. Tag: title
+#: Components.xml:767
+#, no-c-format
+msgid "Security-related components"
+msgstr "セキュリティ関連のコンポーネント"
+
+#. Tag: para
+#: Components.xml:768
+#, no-c-format
+msgid "These components relate to web-tier security."
+msgstr "これらのコンポーネントはウェブ層のセキュリティに関連しています。"
+
+#. Tag: literal
+#: Components.xml:773
+#, no-c-format
+msgid "org.jboss.seam.core.userPrincipal"
+msgstr "org.jboss.seam.core.userPrincipal"
+
+#. Tag: para
+#: Components.xml:775
+#, no-c-format
+msgid "Manager component for the current user <literal>Principal</literal>."
+msgstr "現在のユーザー <literal>Principal</literal> の管理コンポーネントです。"
+
+#. Tag: literal
+#: Components.xml:781
+#, no-c-format
+msgid "org.jboss.seam.core.isUserInRole"
+msgstr "org.jboss.seam.core.isUserInRole"
+
+#. Tag: para
+#: Components.xml:783
+#, no-c-format
+msgid ""
+"Allows JSF pages to choose to render a control, depending upon the roles "
+"available to the current principal. <literal>&lt;h:commandButton value=\"edit"
+"\" rendered=\"#{isUserInRole[&#39;admin&#39;]}\"/&gt;</literal>."
+msgstr ""
+"現在の principal が使用できるロールに応じて、 JSF ページがコントロールのレン"
+"ダリングを選択できるようにします。 <literal>&lt;h:commandButton value=\"edit"
+"\" rendered=\"#{isUserInRole['admin']}\"/&gt;</literal>"
+
+#. Tag: title
+#: Components.xml:792
+#, no-c-format
+msgid "JMS-related components"
+msgstr "JMS 関連のコンポーネント"
+
+#. Tag: para
+#: Components.xml:793
+#, no-c-format
+msgid ""
+"These components are for use with managed <literal>TopicPublisher</literal>s "
+"and <literal>QueueSender</literal>s (see below)."
+msgstr ""
+"これらのコンポーネントは管理対象の <literal>TopicPublisher</literal> および "
+"<literal>QueueSender</literal> との併用を目的としています (下記参照)。"
+
+#. Tag: literal
+#: Components.xml:798
+#, no-c-format
+msgid "org.jboss.seam.jms.queueSession"
+msgstr "org.jboss.seam.jms.queueSession"
+
+#. Tag: para
+#: Components.xml:800
+#, no-c-format
+msgid "Manager component for a JMS <literal>QueueSession</literal> ."
+msgstr "JMS <literal>QueueSession</literal> の管理コンポーネントです。"
+
+#. Tag: literal
+#: Components.xml:806
+#, no-c-format
+msgid "org.jboss.seam.jms.topicSession"
+msgstr "org.jboss.seam.jms.topicSession"
+
+#. Tag: para
+#: Components.xml:808
+#, no-c-format
+msgid "Manager component for a JMS <literal>TopicSession</literal> ."
+msgstr "JMS <literal>TopicSession</literal> の管理コンポーネントです。"
+
+#. Tag: title
+#: Components.xml:817
+#, no-c-format
+msgid "Mail-related components"
+msgstr "メール関連のコンポーネント"
+
+#. Tag: para
+#: Components.xml:818
+#, no-c-format
+msgid "These components are for use with Seam&#39;s Email support"
+msgstr "Seam の Email サポートと併用して使用されるコンポーネントです。"
+
+#. Tag: literal
+#: Components.xml:823
+#, no-c-format
+msgid "org.jboss.seam.mail.mailSession"
+msgstr "org.jboss.seam.mail.mailSession"
+
+#. Tag: para
+#: Components.xml:825
+#, no-c-format
+msgid "Manager component for a JavaMail <literal>Session</literal> ."
+msgstr "JavaMail <literal>Session</literal> の管理コンポーネントです。"
+
+#. Tag: para
+#: Components.xml:830
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.host</literal> &mdash; the hostname "
+"of the SMTP server to use"
+msgstr ""
+"<literal>org.jboss.seam.mail.mailSession.host</literal> &mdash; 使用する "
+"SMTP サーバーのホスト名です。"
+
+#. Tag: para
+#: Components.xml:835
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.port</literal> &mdash; the port of "
+"the SMTP server to use"
+msgstr ""
+"<literal>org.jboss.seam.mail.mailSession.port</literal> &mdash; 使用する "
+"SMTP サーバーのポートです。"
+
+#. Tag: para
+#: Components.xml:840
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.username</literal> &mdash; the "
+"username to use to connect to the SMTP server."
+msgstr ""
+"<literal>org.jboss.seam.mail.mailSession.username</literal> &mdash; SMTP サー"
+"バーへの接続に使用するユーザー名です。"
+
+#. Tag: para
+#: Components.xml:845
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.password</literal> &mdash; the "
+"password to use to connect to the SMTP server"
+msgstr ""
+"<literal>org.jboss.seam.mail.mailSession.password</literal> &mdash; SMTP サー"
+"バーへの接続に使用するパスワードです。"
+
+#. Tag: para
+#: Components.xml:850
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.debug</literal> &mdash; enable "
+"JavaMail debugging (very verbose)"
+msgstr ""
+"<literal>org.jboss.seam.mail.mailSession.debug</literal> &mdash; JavaMail の"
+"デバッグを有効にします(非常に冗長)。"
+
+#. Tag: para
+#: Components.xml:855
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.sessionJndiName</literal> &mdash; "
+"name under which a javax.mail.Session is bound to JNDI"
+msgstr ""
+"<literal>org.jboss.seam.mail.mailSession.sessionJndiName</literal> &mdash; "
+"JNDI に対してバウンドされる javax.mail.Session 配下の名前です。"
+
+#. Tag: title
+#: Components.xml:866
+#, no-c-format
+msgid "Infrastructural components"
+msgstr "基盤となるコンポーネント"
+
+#. Tag: para
+#: Components.xml:867
+#, no-c-format
+msgid ""
+"These components provide critical platform infrastructure. You can install a "
+"component by including its class name in the <literal>org.jboss.seam.core."
+"init.componentClasses</literal> configuration property."
+msgstr ""
+"非常に重要となるプラットフォームの基盤を提供するコンポーネントです。 "
+"<literal>org.jboss.seam.core.init.componentClasses</literal> 設定プロパティで"
+"コンポーネントのクラス名を含ませるとインストールすることができます。"
+
+#. Tag: literal
+#: Components.xml:872
+#, no-c-format
+msgid "org.jboss.seam.core.init"
+msgstr "org.jboss.seam.core.init"
+
+#. Tag: para
+#: Components.xml:874
+#, no-c-format
+msgid "Initialization settings for Seam. Always installed."
+msgstr "Seam の初期化設定です。 常にインストールされます。"
+
+#. Tag: para
+#: Components.xml:879
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.jndiPattern</literal> &mdash; the JNDI "
+"pattern used for looking up session beans"
+msgstr ""
+"<literal>org.jboss.seam.core.init.jndiPattern</literal> &mdash; セッション"
+"ビーンのルックアップに使用される JNDI パターンです。"
+
+#. Tag: para
+#: Components.xml:884
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.debug</literal> &mdash; enable Seam debug "
+"mode"
+msgstr ""
+"<literal>org.jboss.seam.core.init.debug</literal> &mdash; Seam デバッグモード"
+"を有効にします。"
+
+#. Tag: para
+#: Components.xml:889
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.clientSideConversations</literal> &mdash; "
+"if set to <literal>true</literal>, Seam will save conversation context "
+"variables in the client instead of in the <literal>HttpSession</literal>."
+msgstr ""
+"<literal>org.jboss.seam.core.init.clientSideConversations</literal> &mdash; "
+"<literal>true</literal> にセットすると、 Seam は対話コンテキストの変数を "
+"<literal>HttpSession</literal> 内に保存せずクライアント内に保存するようになり"
+"ます。"
+
+#. Tag: para
+#: Components.xml:894
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.userTransactionName</literal> &mdash; the "
+"JNDI name to use when looking up the JTA <literal>UserTransaction</literal> "
+"object."
+msgstr ""
+"<literal>org.jboss.seam.core.init.userTransactionName</literal> &mdash; JTA "
+"<literal>UserTransaction</literal> オブジェクトをルックアップする場合に使用す"
+"る JNDI 名です。"
+
+#. Tag: literal
+#: Components.xml:902
+#, no-c-format
+msgid "org.jboss.seam.core.manager"
+msgstr "org.jboss.seam.core.manager"
+
+#. Tag: para
+#: Components.xml:904
+#, no-c-format
+msgid ""
+"Internal component for Seam page and conversation context management. Always "
+"installed."
+msgstr ""
+"Seam ページおよび対話コンテキスト管理用の内部コンポーネントです。 常にインス"
+"トールされます。"
+
+#. Tag: para
+#: Components.xml:909
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationTimeout</literal> &mdash; "
+"the conversation context timeout in milliseconds."
+msgstr ""
+"<literal>org.jboss.seam.core.manager.conversationTimeout</literal> &mdash; 対"
+"話コンテキストのミリ秒単位のタイムアウトです。"
+
+#. Tag: para
+#: Components.xml:914
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.concurrentRequestTimeout</literal> "
+"&mdash; maximum wait time for a thread attempting to gain a lock on the long-"
+"running conversation context."
+msgstr ""
+"<literal>org.jboss.seam.core.manager.concurrentRequestTimeout</literal> "
+"&mdash; 長期の対話コンテキストでロックの取得試行するスレッドに対する最大待機"
+"時間です。"
+
+#. Tag: para
+#: Components.xml:919
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationIdParameter</literal> "
+"&mdash; the request parameter used to propagate the conversation id, default "
+"to <literal>conversationId</literal>."
+msgstr ""
+"<literal>org.jboss.seam.core.manager.conversationIdParameter</literal> "
+"&mdash; 対話 ID の伝播に使用されるリクエストパラメータで、 デフォルトでは "
+"<literal>conversationId</literal> に設定されます。"
+
+#. Tag: para
+#: Components.xml:924
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationIsLongRunningParameter</"
+"literal> &mdash; the request parameter used to propagate information about "
+"whether the conversation is long-running, default to "
+"<literal>conversationIsLongRunning</literal>."
+msgstr ""
+"<literal>org.jboss.seam.core.manager.conversationIsLongRunningParameter</"
+"literal> &mdash; 対話が長期であるかどうかに関する情報を伝播するために使用され"
+"るリクエストパラメータで、 デフォルトでは "
+"<literal>conversationIsLongRunning</literal> に設定されます。"
+
+#. Tag: literal
+#: Components.xml:932
+#, no-c-format
+msgid "org.jboss.seam.core.pages"
+msgstr "org.jboss.seam.core.pages"
+
+#. Tag: para
+#: Components.xml:934
+#, no-c-format
+msgid "Internal component for Seam workspace management. Always installed."
+msgstr ""
+"Seam ワークスペースの管理用の内部コンポーネントです。 常にインストールされま"
+"す。"
+
+#. Tag: para
+#: Components.xml:939
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.pages.noConversationViewId</literal> &mdash; "
+"global setting for the view id to redirect to when a conversation entry is "
+"not found on the server side."
+msgstr ""
+"<literal>org.jboss.seam.core.pages.noConversationViewId</literal> &mdash; "
+"サーバー側に対話エントリが見つからない場合にリダイレクトするリダイレクト先の"
+"ビュー ID のグローバル設定です。"
+
+#. Tag: literal
+#: Components.xml:947
+#, no-c-format
+msgid "org.jboss.seam.core.ejb"
+msgstr "org.jboss.seam.core.ejb"
+
+#. Tag: para
+#: Components.xml:949
+#, no-c-format
+msgid ""
+"Bootstraps the JBoss Embeddable EJB3 container. Install as class "
+"<literal>org.jboss.seam.core.Ejb</literal>. This is useful when using Seam "
+"with EJB components outside the context of a Java EE 5 application server."
+msgstr ""
+"JBoss Embeddable EJB3 コンテナをブートストラップします。 クラス <literal>org."
+"jboss.seam.core.Ejb</literal> としてインストールします。 Java EE 5 アプリケー"
+"ションサーバーのコンテキストの外にある EJB コンポーネントと Seam を併用する場"
+"合に便利です。"
+
+#. Tag: para
+#: Components.xml:952
+#, no-c-format
+msgid ""
+"The basic Embedded EJB configuration is defined in <literal>jboss-embedded-"
+"beans.xml</literal>. Additional microcontainer configuration (for example, "
+"extra datasources) may be specified by <literal>jboss-beans.xml</literal> or "
+"<literal>META-INF/jboss-beans.xml</literal> in the classpath."
+msgstr ""
+"基本的な Embedded EJB 設定は <literal>jboss-embedded-beans.xml</literal> で定"
+"義されます。 追加のマイクロコンテナ設定 (例、 追加データソース) は "
+"<literal>jboss-beans.xml</literal> またはクラスパス内の <literal>META-INF/"
+"jboss-beans.xml</literal> で指定することができます。"
+
+#. Tag: literal
+#: Components.xml:958
+#, no-c-format
+msgid "org.jboss.seam.core.microcontainer"
+msgstr "org.jboss.seam.core.microcontainer"
+
+#. Tag: para
+#: Components.xml:960
+#, no-c-format
+msgid ""
+"Bootstraps the JBoss microcontainer. Install as class <literal>org.jboss."
+"seam.core.Microcontainer</literal>. This is useful when using Seam with "
+"Hibernate and no EJB components outside the context of a Java EE application "
+"server. The microcontainer can provide a partial EE environment with JNDI, "
+"JTA, a JCA datasource and Hibernate."
+msgstr ""
+"JBoss マイクロコンテナをブートストラップします。 クラス <literal>org.jboss."
+"seam.core.Microcontainer</literal> としてインストールします。 Seam を "
+"Hibernate と併用し Java EE アプリケーションサーバーのコンテキストの外には "
+"EJB コンポーネントがない場合に便利です。 マイクロコンテナは JNDI、 JTA、 JCA "
+"データソース及び Hibernate で部分的な EE 環境を実現します。"
+
+#. Tag: para
+#: Components.xml:963
+#, no-c-format
+msgid ""
+"The microcontainer configuration may be specified by <literal>jboss-beans."
+"xml</literal> or <literal>META-INF/jboss-beans.xml</literal> in the "
+"classpath."
+msgstr ""
+"マイクロコンテナの設定は <literal>jboss-beans.xml</literal> またはクラスパス"
+"内の <literal>META-INF/jboss-beans.xml</literal> で指定することができます。"
+
+#. Tag: literal
+#: Components.xml:969
+#, no-c-format
+msgid "org.jboss.seam.core.jbpm"
+msgstr "org.jboss.seam.core.jbpm"
+
+#. Tag: para
+#: Components.xml:971
+#, no-c-format
+msgid ""
+"Bootstraps a <literal>JbpmConfiguration</literal>. Install as class "
+"<literal>org.jboss.seam.core.Jbpm</literal>."
+msgstr ""
+"<literal>JbpmConfiguration</literal> をブートストラップします。クラス "
+"<literal>org.jboss.seam.core.Jbpm</literal> としてインストールします。"
+
+#. Tag: para
+#: Components.xml:976
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.jbpm.processDefinitions</literal> &mdash; a "
+"list of resource names of jPDL files to be used for orchestration of "
+"business processes."
+msgstr ""
+"<literal>org.jboss.seam.core.jbpm.processDefinitions</literal> &mdash; ビジネ"
+"スプロセス群の編成に使用される jPDL ファイル群のリソース名の一覧です。"
+
+#. Tag: para
+#: Components.xml:981
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.jbpm.pageflowDefinitions</literal> &mdash; a "
+"list of resource names of jPDL files to be used for orchestration of "
+"conversation page flows."
+msgstr ""
+"<literal>org.jboss.seam.core.jbpm.pageflowDefinitions</literal> &mdash; 対話"
+"ページフローの編成に使用される jPDL ファイル群のリソース名の一覧です。"
+
+#. Tag: literal
+#: Components.xml:989
+#, no-c-format
+msgid "org.jboss.seam.core.conversationEntries"
+msgstr "org.jboss.seam.core.conversationEntries"
+
+#. Tag: para
+#: Components.xml:991
+#, no-c-format
+msgid ""
+"Internal session-scoped component recording the active long-running "
+"conversations between requests."
+msgstr ""
+"リクエスト間のアクティブな長期の対話を記録するセションスコープの内部コンポー"
+"ネントです。"
+
+#. Tag: literal
+#: Components.xml:997
+#, no-c-format
+msgid "org.jboss.seam.core.facesPage"
+msgstr "org.jboss.seam.core.facesPage"
+
+#. Tag: para
+#: Components.xml:999
+#, no-c-format
+msgid ""
+"Internal page-scoped component recording the conversation context associated "
+"with a page."
+msgstr ""
+"ページに関連付けられる対話コンテキストを記録するページスコープの内部コンポー"
+"ネントです。"
+
+#. Tag: literal
+#: Components.xml:1005
+#, no-c-format
+msgid "org.jboss.seam.core.persistenceContexts"
+msgstr "org.jboss.seam.core.persistenceContexts"
+
+#. Tag: para
+#: Components.xml:1007
+#, no-c-format
+msgid ""
+"Internal component recording the persistence contexts which were used in the "
+"current conversation."
+msgstr "現在の対話に使用された永続コンテキストを記録する内部コンポーネントです。"
+
+#. Tag: literal
+#: Components.xml:1013
+#, no-c-format
+msgid "org.jboss.seam.jms.queueConnection"
+msgstr "org.jboss.seam.jms.queueConnection"
+
+#. Tag: para
+#: Components.xml:1015
+#, no-c-format
+msgid ""
+"Manages a JMS <literal>QueueConnection</literal>. Installed whenever managed "
+"managed <literal>QueueSender</literal> is installed."
+msgstr ""
+"JMS <literal>QueueConnection</literal> を管理します。 管理 "
+"<literal>QueueSender</literal> がインストールされると必ずインストールされま"
+"す。"
+
+#. Tag: para
+#: Components.xml:1020
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.jms.queueConnection.queueConnectionFactoryJndiName</"
+"literal> &mdash; the JNDI name of a JMS <literal>QueueConnectionFactory</"
+"literal>. Default to <literal>UIL2ConnectionFactory</literal>"
+msgstr ""
+"<literal>org.jboss.seam.jms.queueConnection.queueConnectionFactoryJndiName</"
+"literal> &mdash; JMS <literal>QueueConnectionFactory</literal> の JNDI 名で"
+"す。 デフォルトでは <literal>UIL2ConnectionFactory</literal> に設定されます。"
+
+#. Tag: literal
+#: Components.xml:1028
+#, no-c-format
+msgid "org.jboss.seam.jms.topicConnection"
+msgstr "org.jboss.seam.jms.topicConnection"
+
+#. Tag: para
+#: Components.xml:1030
+#, no-c-format
+msgid ""
+"Manages a JMS <literal>TopicConnection</literal>. Installed whenever managed "
+"managed <literal>TopicPublisher</literal> is installed."
+msgstr ""
+"JMS <literal>TopicConnection</literal> を管理します。 管理 "
+"<literal>TopicPublisher</literal> がインストールされると必ずインストールされ"
+"ます。"
+
+#. Tag: para
+#: Components.xml:1035
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.jms.topicConnection.topicConnectionFactoryJndiName</"
+"literal> &mdash; the JNDI name of a JMS <literal>TopicConnectionFactory</"
+"literal>. Default to <literal>UIL2ConnectionFactory</literal>"
+msgstr ""
+"<literal>org.jboss.seam.jms.topicConnection.topicConnectionFactoryJndiName</"
+"literal> &mdash; JMS <literal>TopicConnectionFactory</literal> の JNDI 名で"
+"す。 デフォルトでは <literal>UIL2ConnectionFactory</literal> に設定されます。"
+
+#. Tag: literal
+#: Components.xml:1043
+#, no-c-format
+msgid "org.jboss.seam.persistence.persistenceProvider"
+msgstr "org.jboss.seam.persistence.persistenceProvider"
+
+#. Tag: para
+#: Components.xml:1045
+#, no-c-format
+msgid "Abstraction layer for non-standardized features of JPA provider."
+msgstr "JPA プロバイダの標準化されていない機能に対する抽出層です。"
+
+#. Tag: literal
+#: Components.xml:1051
+#, no-c-format
+msgid "org.jboss.seam.core.validation"
+msgstr "org.jboss.seam.core.validation"
+
+#. Tag: para
+#: Components.xml:1053
+#, no-c-format
+msgid "Internal component for Hibernate Validator support."
+msgstr "Hibernate Validator サポート用の内部コンポーネントです。"
+
+#. Tag: literal
+#: Components.xml:1059
+#, no-c-format
+msgid "org.jboss.seam.debug.introspector"
+msgstr "org.jboss.seam.debug.introspector"
+
+#. Tag: para
+#: Components.xml:1061 Components.xml:1069
+#, no-c-format
+msgid "Support for the Seam Debug Page."
+msgstr "Seam Debug Page のサポートです。"
+
+#. Tag: literal
+#: Components.xml:1067
+#, no-c-format
+msgid "org.jboss.seam.debug.contexts"
+msgstr "org.jboss.seam.debug.contexts"
+
+#. Tag: title
+#: Components.xml:1078
+#, no-c-format
+msgid "Special components"
+msgstr "特殊なコンポーネント"
+
+#. Tag: para
+#: Components.xml:1079
+#, no-c-format
+msgid ""
+"Certain special Seam component classes are installable multiple times under "
+"names specified in the Seam configuration. For example, the following lines "
+"in <literal>components.xml</literal> install and configure two Seam "
+"components:"
+msgstr ""
+"特定の特殊な Seam コンポーネントクラスは Seam 設定内で指定される name の配下"
+"で複数回のインストールが可能です。 例えば、 <literal>components.xml</"
+"literal> 内の次の行は Seam コンポーネントを 2 つインストールして設定します。"
+
+#. Tag: programlisting
+#: Components.xml:1082
+#, no-c-format
+msgid ""
+"&lt;component name=\"bookingDatabase\"\n"
+"          class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"    &lt;property name=\"persistenceUnitJndiName\"&gt;java:/comp/emf/"
+"bookingPersistence&lt;/property&gt;\n"
+"&lt;/component&gt;\n"
+"\n"
+"&lt;component name=\"userDatabase\"\n"
+"          class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"    &lt;property name=\"persistenceUnitJndiName\"&gt;java:/comp/emf/"
+"userPersistence&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+"&lt;component name=\"bookingDatabase\"\n"
+"          class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"    &lt;property name=\"persistenceUnitJndiName\"&gt;java:/comp/emf/"
+"bookingPersistence&lt;/property&gt;\n"
+"&lt;/component&gt;\n"
+"\n"
+"&lt;component name=\"userDatabase\"\n"
+"          class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"    &lt;property name=\"persistenceUnitJndiName\"&gt;java:/comp/emf/"
+"userPersistence&lt;/property&gt;\n"
+"&lt;/component&gt;"
+
+#. Tag: para
+#: Components.xml:1083
+#, no-c-format
+msgid ""
+"The Seam component names are <literal>bookingDatabase</literal> and "
+"<literal>userDatabase</literal>."
+msgstr ""
+"Seam コンポーネント名は <literal>bookingDatabase</literal> と "
+"<literal>userDatabase</literal> です。"
+
+#. Tag: literal
+#: Components.xml:1088
+#, no-c-format
+msgid "&lt;entityManager&gt;"
+msgstr "&lt;entityManager&gt;"
+
+#. Tag: literal
+#: Components.xml:1089
+#, no-c-format
+msgid "org.jboss.seam.core.ManagedPersistenceContext"
+msgstr "org.jboss.seam.core.ManagedPersistenceContext"
+
+#. Tag: para
+#: Components.xml:1091
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed <literal>EntityManager</"
+"literal> with an extended persistence context."
+msgstr ""
+"拡張永続コンテキストを持つ対話スコープで管理対象の <literal>EntityManager</"
+"literal> の管理コンポーネントです。"
+
+#. Tag: para
+#: Components.xml:1096
+#, no-c-format
+msgid ""
+"<literal> &lt;entityManager&gt; .entityManagerFactory</literal> &mdash; a "
+"value binding expression that evaluates to an instance of "
+"<literal>EntityManagerFactory</literal>."
+msgstr ""
+"<literal>&lt;entityManager&gt;.entityManagerFactory</literal> &mdash; <literal>EntityManagerFactory</literal> のインスタンスに対し"
+"て評価を行う値バインディングです。"
+
+#. Tag: para
+#: Components.xml:1099
+#, no-c-format
+msgid ""
+"<literal> &lt;entityManager&gt; .persistenceUnitJndiName</literal> &mdash; "
+"the JNDI name of the entity manager factory, default to <literal>java:/ &lt;"
+"managedPersistenceContext&gt; </literal>."
+msgstr ""
+"<literal>&lt;entityManager&gt;.persistenceUnitJndiName</literal> &mdash; "
+"entity manager factory の JNDI 名です。 デフォルトでは "
+"<literal>java:/&lt;managedPersistenceContext&gt;</literal> に設定します。"
+
+#. Tag: literal
+#: Components.xml:1107
+#, no-c-format
+msgid "&lt;entityManagerFactory&gt;"
+msgstr "&lt;entityManagerFactory&gt;"
+
+#. Tag: literal
+#: Components.xml:1108
+#, no-c-format
+msgid "org.jboss.seam.core.EntityManagerFactory"
+msgstr "org.jboss.seam.core.EntityManagerFactory"
+
+#. Tag: para
+#: Components.xml:1110
+#, no-c-format
+msgid ""
+"Manages a JPA <literal>EntityManagerFactory</literal>. This is most useful "
+"when using JPA outside of an EJB 3.0 supporting environment."
+msgstr ""
+"JPA <literal>EntityManagerFactory</literal> を管理します。 EJB 3.0 サポート環"
+"境以外で JPA を使用する場合に最適となります。"
+
+#. Tag: para
+#: Components.xml:1115
+#, no-c-format
+msgid ""
+"<literal>entityManagerFactory.persistenceUnitName</literal> &mdash; the name "
+"of the persistence unit."
+msgstr ""
+"<literal>entityManagerFactory.persistenceUnitName</literal> &mdash; 永続ユ"
+"ニット名です。"
+
+#. Tag: para
+#: Components.xml:1120 Components.xml:1158
+#, no-c-format
+msgid "See the API JavaDoc for further configuration properties."
+msgstr "設定プロパティの詳細については API JavaDoc をご覧ください。"
+
+#. Tag: literal
+#: Components.xml:1126
+#, no-c-format
+msgid "&lt;session&gt;"
+msgstr "&lt;session&gt;"
+
+#. Tag: literal
+#: Components.xml:1127
+#, no-c-format
+msgid "org.jboss.seam.core.ManagedSession"
+msgstr "org.jboss.seam.core.ManagedSession"
+
+#. Tag: para
+#: Components.xml:1129
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed Hibernate "
+"<literal>Session</literal>."
+msgstr ""
+"対話スコープで管理対象の Hibernate <literal>Session</literal> の管理コンポー"
+"ネントです。"
+
+#. Tag: para
+#: Components.xml:1134
+#, no-c-format
+msgid ""
+"<literal> &lt;session&gt; .sessionFactory</literal> &mdash; a value binding "
+"expression that evaluates to an instance of <literal>SessionFactory</"
+"literal>."
+msgstr ""
+"<literal>&lt;session&gt;.sessionFactory</literal> &mdash; <literal>SessionFactory</literal> のインスタンスに対して評価を行う値"
+"バインディング表現です。"
+
+#. Tag: para
+#: Components.xml:1137
+#, no-c-format
+msgid ""
+"<literal> &lt;session&gt; .sessionFactoryJndiName</literal> &mdash; the JNDI "
+"name of the session factory, default to <literal>java:/ &lt;"
+"managedSession&gt; </literal>."
+msgstr ""
+"<literal>&lt;session&gt;.sessionFactoryJndiName</literal> &mdash; session factory の JNDI 名です。 デフォルトでは "
+"<literal>java:/&lt;managedSession&gt;</literal> に設定し"
+"ます。"
+
+#. Tag: literal
+#: Components.xml:1145
+#, no-c-format
+msgid "&lt;sessionFactory&gt;"
+msgstr "&lt;sessionFactory&gt;"
+
+#. Tag: literal
+#: Components.xml:1146
+#, no-c-format
+msgid "org.jboss.seam.core.HibernateSessionFactory"
+msgstr "org.jboss.seam.core.HibernateSessionFactory"
+
+#. Tag: para
+#: Components.xml:1148
+#, no-c-format
+msgid "Manages a Hibernate <literal>SessionFactory</literal>."
+msgstr "Hibernate <literal>SessionFactory</literal> を管理します。"
+
+#. Tag: para
+#: Components.xml:1153
+#, no-c-format
+msgid ""
+"<literal>&lt;sessionFactory&gt;.cfgResourceName</literal> &mdash; the path "
+"to the configuration file. Default to <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+"<literal>&lt;sessionFactory&gt;.cfgResourceName</literal> &mdash; 設定ファイ"
+"ルへのパスです。 デフォルトでは <literal>hibernate.cfg.xml</literal> に設定さ"
+"れます。"
+
+#. Tag: literal
+#: Components.xml:1164
+#, no-c-format
+msgid "&lt;managedQueueSender&gt;"
+msgstr "&lt;managedQueueSender&gt;"
+
+#. Tag: literal
+#: Components.xml:1165
+#, no-c-format
+msgid "org.jboss.seam.jms.ManagedQueueSender"
+msgstr "org.jboss.seam.jms.ManagedQueueSender"
+
+#. Tag: para
+#: Components.xml:1167
+#, no-c-format
+msgid ""
+"Manager component for an event scoped managed JMS <literal>QueueSender</"
+"literal>."
+msgstr ""
+"イベントスコープで管理対象の JMS <literal>QueueSender</literal> の管理コン"
+"ポーネントです。"
+
+#. Tag: para
+#: Components.xml:1172
+#, no-c-format
+msgid ""
+"<literal> &lt;managedQueueSender&gt; .queueJndiName</literal> &mdash; the "
+"JNDI name of the JMS queue."
+msgstr "<literal>&lt;managedQueueSender&gt;.queueJndiName</literal> &mdash; JMS キューの JNDI 名です。"
+
+#. Tag: literal
+#: Components.xml:1180
+#, no-c-format
+msgid "&lt;managedTopicPublisher&gt;"
+msgstr "&lt;managedTopicPublisher&gt;"
+
+#. Tag: literal
+#: Components.xml:1181
+#, no-c-format
+msgid "org.jboss.seam.jms.ManagedTopicPublisher"
+msgstr "org.jboss.seam.jms.ManagedTopicPublisher"
+
+#. Tag: para
+#: Components.xml:1183
+#, no-c-format
+msgid ""
+"Manager component for an event scoped managed JMS <literal>TopicPublisher</"
+"literal>."
+msgstr ""
+"イベントスコープで管理対象の JMS <literal>TopicPublisher</literal> の管理コン"
+"ポーネントです。"
+
+#. Tag: para
+#: Components.xml:1188
+#, no-c-format
+msgid ""
+"<literal> &lt;managedTopicPublisher&gt; .topicJndiName</literal> &mdash; the "
+"JNDI name of the JMS topic."
+msgstr ""
+"<literal>&lt;managedTopicPublisher&gt;.topicJndiName</"
+"literal> &mdash; JMS トピックの JNDI 名です。"
+
+#. Tag: literal
+#: Components.xml:1196
+#, no-c-format
+msgid "&lt;managedWorkingMemory&gt;"
+msgstr "&lt;managedWorkingMemory&gt;"
+
+#. Tag: literal
+#: Components.xml:1197
+#, no-c-format
+msgid "org.jboss.seam.drools.ManagedWorkingMemory"
+msgstr "org.jboss.seam.drools.ManagedWorkingMemory"
+
+#. Tag: para
+#: Components.xml:1199
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed Drools "
+"<literal>WorkingMemory</literal>."
+msgstr ""
+"対話スコープで管理対象の Drools <literal>WorkingMemory</literal> の管理コン"
+"ポーネントです。"
+
+#. Tag: para
+#: Components.xml:1204
+#, no-c-format
+msgid ""
+"<literal> &lt;managedWorkingMemory&gt; .ruleBase</literal> &mdash; a value "
+"expression that evaluates to an instance of <literal>RuleBase</literal>."
+msgstr "<literal>&lt;managedWorkingMemory&gt;.ruleBase</literal> &mdash; <literal>RuleBase</literal> のインスタンスに対して評価を行う値表現です。"
+
+#. Tag: literal
+#: Components.xml:1212
+#, no-c-format
+msgid "&lt;ruleBase&gt;"
+msgstr "&lt;ruleBase&gt;"
+
+#. Tag: literal
+#: Components.xml:1213
+#, no-c-format
+msgid "org.jboss.seam.drools.RuleBase"
+msgstr "org.jboss.seam.drools.RuleBase"
+
+#. Tag: para
+#: Components.xml:1215
+#, no-c-format
+msgid ""
+"Manager component for an application scoped Drools <literal>RuleBase</"
+"literal>. Note that this is not really intended for production usage, since "
+"it does not support dynamic installation of new rules."
+msgstr ""
+"アプリケーションスコープの Drools <literal>RuleBase</literal> の管理コンポー"
+"ネントです。 新しいルールの動的インストールをサポートしていないた"
+"め、 実稼働での使用はまったく対象とされていないことに注意してください。"
+
+#. Tag: para
+#: Components.xml:1220
+#, no-c-format
+msgid ""
+"<literal> &lt;ruleBase&gt; .ruleFiles</literal> &mdash; a list of files "
+"containing Drools rules."
+msgstr ""
+"<literal>&lt;ruleBase&gt;.ruleFiles</literal> &mdash; "
+"Drools のルールを含んでいるファイルの一覧です。"
+
+#. Tag: para
+#: Components.xml:1223
+#, no-c-format
+msgid ""
+"<literal> &lt;ruleBase&gt; .dslFile</literal> &mdash; a Drools DSL "
+"definition."
+msgstr ""
+"<literal>&lt;ruleBase&gt;.dslFile</literal> &mdash; "
+"Drools DSL 定義です。"
+
+#. Tag: literal
+#: Components.xml:1231
+#, no-c-format
+msgid "&lt;entityHome&gt;"
+msgstr "&lt;entityHome&gt;"
+
+#. Tag: literal
+#: Components.xml:1232
+#, no-c-format
+msgid "org.jboss.seam.framework.EntityHome"
+msgstr "org.jboss.seam.framework.EntityHome"
+
+#. Tag: literal
+#: Components.xml:1238
+#, no-c-format
+msgid "&lt;hibernateEntityHome&gt;"
+msgstr "&lt;hibernateEntityHome&gt;"
+
+#. Tag: literal
+#: Components.xml:1239
+#, no-c-format
+msgid "org.jboss.seam.framework.HibernateEntityHome"
+msgstr "org.jboss.seam.framework.HibernateEntityHome"
+
+#. Tag: literal
+#: Components.xml:1245
+#, no-c-format
+msgid "&lt;entityQuery&gt;"
+msgstr "&lt;entityQuery&gt;"
+
+#. Tag: literal
+#: Components.xml:1246
+#, no-c-format
+msgid "org.jboss.seam.framework.EntityQuery"
+msgstr "org.jboss.seam.framework.EntityQuery"
+
+#. Tag: literal
+#: Components.xml:1252
+#, no-c-format
+msgid "&lt;hibernateEntityQuery&gt;"
+msgstr "&lt;hibernateEntityQuery&gt;"
+
+#. Tag: literal
+#: Components.xml:1253
+#, no-c-format
+msgid "org.jboss.seam.framework.HibernateEntityQuery"
+msgstr "org.jboss.seam.framework.HibernateEntityQuery"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Concepts.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Concepts.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Concepts.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2661 @@
+# translation of Concepts.po to Japanese
+# Noriko Mizumoto <noriko at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Concepts\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-30 01:52+0000\n"
+"PO-Revision-Date: 2007-11-02 09:09+1000\n"
+"Last-Translator: Noriko Mizumoto <noriko at redhat.com>\n"
+"Language-Team: Japanese <fedora-trans-ja at redhat.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Concepts.xml:6
+#, no-c-format
+msgid "The contextual component model"
+msgstr "コンテキスト依存コンポーネントモデル"
+
+#. Tag: para
+#: Concepts.xml:7
+#, no-c-format
+msgid ""
+"The two core concepts in Seam are the notion of a <emphasis>context</"
+"emphasis> and the notion of a <emphasis>component</emphasis>. Components are "
+"stateful objects, usually EJBs, and an instance of a component is associated "
+"with a context, and given a name in that context. <emphasis>Bijection</"
+"emphasis> provides a mechanism for aliasing internal component names "
+"(instance variables) to contextual names, allowing component trees to be "
+"dynamically assembled, and reassembled by Seam."
+msgstr ""
+"Seam における 2 つの中心的概念は、 <emphasis>コンテキスト</emphasis> の概念と"
+"<emphasis>コンポーネント</emphasis>の概念です。 コンポーネントは、ステートフ"
+"ルなオブジェクト、通常は EJB です。 コンポーネントのインスタンスは、コンテキ"
+"ストと関連づけられ、そのコンテキスト中で名前を与えられます。 バイジェクショ"
+"ン (Bijection) は、内部のコンポーネント名 (インスタンス変数) をコンテキスト中"
+"の名前にエイリアスし、 Seam によるコンポーネントツリーの動的な組み立て、再組"
+"み立てを可能にするメカニズムを提供します。"
+
+#. Tag: para
+#: Concepts.xml:10
+#, no-c-format
+msgid "Let&#39;s start by describing the contexts built in to Seam."
+msgstr "Seam に組み込まれたコンテキストから説明を始めましょう。"
+
+#. Tag: title
+#: Concepts.xml:13
+#, no-c-format
+msgid "Seam contexts"
+msgstr "Seam コンテキスト"
+
+#. Tag: para
+#: Concepts.xml:14
+#, no-c-format
+msgid ""
+"Seam contexts are created and destroyed by the framework. The application "
+"does not control context demarcation via explicit Java API calls. Context "
+"are usually implicit. In some cases, however, contexts are demarcated via "
+"annotations."
+msgstr ""
+"Seam コンテキストはフレームワークによって生成、破棄されます。 アプリケーショ"
+"ンは Java API 呼び出しによってコンテキスト区分 (demarcation) を明示的に制御す"
+"ることはできません。 コンテキストは通常、暗黙的ですが、場合によってコンテキス"
+"トはアノテーションによって区分されます。"
+
+#. Tag: para
+#: Concepts.xml:17
+#, no-c-format
+msgid "The basic Seam contexts are:"
+msgstr "基本の Seam コンテキストは以下の通りです。"
+
+#. Tag: para
+#: Concepts.xml:22
+#, no-c-format
+msgid "<para>Stateless context</para>"
+msgstr "<para>ステートレスコンテキスト</para>"
+
+#. Tag: para
+#: Concepts.xml:27
+#, no-c-format
+msgid "Event (or request) context"
+msgstr "イベント (またはリクエスト) コンテキスト (Event (or request) context) "
+
+#. Tag: para
+#: Concepts.xml:32 Concepts.xml:147
+#, no-c-format
+msgid "<para>Page context</para>"
+msgstr "<para>ページコンテキスト</para>"
+
+#. Tag: para
+#: Concepts.xml:37 Concepts.xml:152
+#, no-c-format
+msgid "<para>Conversation context</para>"
+msgstr "<para>対話コンテキスト</para>"
+
+#. Tag: para
+#: Concepts.xml:42 Concepts.xml:157
+#, no-c-format
+msgid "<para>Session context</para>"
+msgstr "<para>セッションコンテキスト</para>"
+
+#. Tag: para
+#: Concepts.xml:47 Concepts.xml:162
+#, no-c-format
+msgid "<para>Business process context</para>"
+msgstr "<para>ビジネスプロセスコンテキスト</para>"
+
+#. Tag: para
+#: Concepts.xml:52 Concepts.xml:167
+#, no-c-format
+msgid "<para>Application context</para>"
+msgstr "<para>アプリケーションコンテキスト</para>"
+
+#. Tag: para
+#: Concepts.xml:57
+#, no-c-format
+msgid ""
+"You will recognize some of these contexts from servlet and related "
+"specifications. However, two of them might be new to you: "
+"<emphasis>conversation context</emphasis>, and <emphasis>business process "
+"context</emphasis>. One reason state management in web applications is so "
+"fragile and error-prone is that the three built-in contexts (request, "
+"session and application) are not especially meaningful from the point of "
+"view of the business logic. A user login session, for example, is a fairly "
+"arbitrary construct in terms of the actual application work flow. Therefore, "
+"most Seam components are scoped to the conversation or business process "
+"contexts, since they are the contexts which are most meaningful in terms of "
+"the application."
+msgstr ""
+"これらのコンテキストのいくつかは、サーブレットや関連する仕様書から由来してい"
+"ることがわかります。 しかし、このうち 2 つは目新しいかもしれません。 "
+"<emphasis>対話コンテキスト</emphasis>と<emphasis>ビジネスプロセスコンテキスト"
+"</emphasis>です。 WEB アプリケーション中での状態管理がとても脆弱でエラーが発"
+"生しやすい 1 つの理由は、 3 つの組み込みコンテキスト (リクエスト、セッショ"
+"ン、アプリケーション) がビジネスロジックの観点から特定の意味を持たないからで"
+"す。 例えば、実際のアプリケーションのワークフローの観点から見るとユーザログイ"
+"ンセッションは極めて自由裁量な構造です。 そのため、ほとんどの Seam コンポーネ"
+"ントは、対話コンテキストあるいはビジネスプロセスコンテキストのスコープに配置"
+"されます。 なぜなら、それらはアプリケーションの観点からとても意味のあるコンテ"
+"キストだからです。"
+
+#. Tag: para
+#: Concepts.xml:60
+#, no-c-format
+msgid "Let&#39;s look at each context in turn."
+msgstr "順に、各コンテキストを見てみましょう。"
+
+#. Tag: title
+#: Concepts.xml:63
+#, no-c-format
+msgid "<title>Stateless context</title>"
+msgstr "<title>ステートレスコンテキスト</title>"
+
+#. Tag: para
+#: Concepts.xml:64
+#, no-c-format
+msgid ""
+"Components which are truly stateless (stateless session beans, primarily) "
+"always live in the stateless context (this is really a non-context). "
+"Stateless components are not very interesting, and are arguably not very "
+"object-oriented. Nevertheless, they are important and often useful."
+msgstr ""
+"本当に状態をもたないコンポーネント (主にステートレスセッション Bean) は、いつ"
+"もステートレスコンテキスト (実際にはコンテキストではありません) に置かれま"
+"す。 ステートレスコンポーネントは、あまり興味深いものでもなく、まったくオブ"
+"ジェクト指向でもありません。 でも、これらは重要でしばしば役に立ちます。"
+
+#. Tag: title
+#: Concepts.xml:67
+#, no-c-format
+msgid "<title>Event context</title>"
+msgstr "<title>イベントコンテキスト</title>"
+
+#. Tag: para
+#: Concepts.xml:68
+#, no-c-format
+msgid ""
+"The event context is the \"narrowest\" stateful context, and is a "
+"generalization of the notion of the web request context to cover other kinds "
+"of events. Nevertheless, the event context associated with the lifecycle of "
+"a JSF request is the most important example of an event context, and the one "
+"you will work with most often. Components associated with the event context "
+"are destroyed at the end of the request, but their state is available and "
+"well-defined for at least the lifecycle of the request."
+msgstr ""
+"イベントコンテキストは「最も狭い」状態を持つコンテキストで、 他の種類のイベン"
+"トを網羅する WEBリクエストコンテキストの概念の一般化です。 それにもかかわら"
+"ず、JSF リクエストのライフサイクルと関連づけられたイベントコンテキストは、 イ"
+"ベントコンテキストの最も重要な用例であり、最もよく利用されるものです。 リクエ"
+"スト終了時に、イベントコンテキストに関連するコンポーネントは破棄されますが、 "
+"それらの状態は、少なくともリクエストのライフサイクルの間では有効かつ明確で"
+"す。"
+
+#. Tag: para
+#: Concepts.xml:71
+#, no-c-format
+msgid ""
+"When you invoke a Seam component via RMI, or Seam Remoting, the event "
+"context is created and destroyed just for the invocation."
+msgstr ""
+"RMI 経由あるいは Seam Remoting により Seam コンポーネントを呼び出すとき、 イ"
+"ベントコンテキストは、その呼び出しだけのために生成、破棄されます。"
+
+#. Tag: title
+#: Concepts.xml:74
+#, no-c-format
+msgid "<title>Page context</title>"
+msgstr "<title>ページコンテキスト</title>"
+
+#. Tag: para
+#: Concepts.xml:75
+#, no-c-format
+msgid ""
+"The page context allows you to associate state with a particular instance of "
+"a rendered page. You can initialize state in your event listener, or while "
+"actually rendering the page, and then have access to it from any event that "
+"originates from that page. This is especially useful for functionality like "
+"clickable lists, where the list is backed by changing data on the server "
+"side. The state is actually serialized to the client, so this construct is "
+"extremely robust with respect to multi-window operation and the back button."
+msgstr ""
+"ページコンテキストは、状態をレンダリングされたページの特定のインスタンスと関"
+"連づけを可能にします。 イベントリスナ中で状態の初期化が可能で、 実際にページ"
+"をレンダリングしている間に、 ページに由来するどんなイベントからも状態にアクセ"
+"スが可能です。 これは特にサーバサイドのデータ変化にリストが連動しているクリッ"
+"カブルリストのような機能に役立ちます。 状態は実際にクライアントのためにシリア"
+"ライズされます。 そのため、この構造は複数ウインドの操作や戻るボタンに対して極"
+"めて堅牢です。"
+
+#. Tag: title
+#: Concepts.xml:78
+#, no-c-format
+msgid "<title>Conversation context</title>"
+msgstr "<title>対話コンテキスト</title>"
+
+#. Tag: para
+#: Concepts.xml:79
+#, no-c-format
+msgid ""
+"The conversation context is a truly central concept in Seam. A "
+"<emphasis>conversation</emphasis> is a unit of work from the point of view "
+"of the user. It might span several interactions with the user, several "
+"requests, and several database transactions. But to the user, a conversation "
+"solves a single problem. For example, \"book hotel\", \"approve contract\", "
+"\"create order\" are all conversations. You might like to think of a "
+"conversation implementing a single \"use case\" or \"user story\", but the "
+"relationship is not necessarily quite exact."
+msgstr ""
+"対話コンテキストは Seam でまさに中心となるコンセプトです。 <emphasis>対話  "
+"(conversation) </emphasis> は、ユーザの観点からの作業単位です。 それはユーザ"
+"とのインタラクション、リクエスト、およびデータベーストランザクションをまたぐ"
+"かもしれません。 しかし、ユーザにとって対話は、1 つの問題を解決します。 例え"
+"ば、「ホテル予約」、「契約承認」、「注文作成」はすべて対話です。 対話というも"
+"のが 1 つの「ユースケース」あるいは「ユーザストーリ」を実装していると考えたい"
+"かもしれませんが 関係は必ずしもその通りにはなりません。"
+
+#. Tag: para
+#: Concepts.xml:82
+#, no-c-format
+msgid ""
+"A conversation holds state associated with \"what the user is doing now, in "
+"this window\". A single user may have multiple conversations in progress at "
+"any point in time, usually in multiple windows. The conversation context "
+"allows us to ensure that state from the different conversations does not "
+"collide and cause bugs."
+msgstr ""
+"対話は、「ユーザがこのウィンドウの中で現在していること」と関連づけられた状態"
+"を保持します。 1 人のユーザは、通常マルチウィンドウで、ある時点に進行中の複数"
+"の対話を持っているかもしれません。 対話コンテキストは、異なる対話からの状態の"
+"衝突をなくし、バグの原因とならないことを保証します。"
+
+#. Tag: para
+#: Concepts.xml:85
+#, no-c-format
+msgid ""
+"It might take you some time to get used to thinking of applications in terms "
+"of conversations. But once you get used to it, we think you&#39;ll love the "
+"notion, and never be able to not think in terms of conversations again!"
+msgstr ""
+"対話の観点からアプリケーションについて考えることに慣れるには時間がかかるかも"
+"しれません。 しかし、慣れてしまうと、このコンセプトが大好きになり、もう対話な"
+"しでは考えられなくなるだろうと思います。"
+
+#. Tag: para
+#: Concepts.xml:88
+#, no-c-format
+msgid ""
+"Some conversations last for just a single request. Conversations that span "
+"multiple requests must be demarcated using annotations provided by Seam."
+msgstr ""
+"ある対話は単に 1 つのリクエストの間続いています。 複数のリクエストをまたぐ対"
+"話は、Seam によって提供されたアノテーションを使って、区分を示されなければなり"
+"ません。"
+
+#. Tag: para
+#: Concepts.xml:91
+#, no-c-format
+msgid ""
+"Some conversations are also <emphasis>tasks</emphasis>. A task is a "
+"conversation that is significant in terms of a long-running business "
+"process, and has the potential to trigger a business process state "
+"transition when it is successfully completed. Seam provides a special set of "
+"annotations for task demarcation."
+msgstr ""
+"ある対話はまた <emphasis>タスク</emphasis> です。 タスクは長期ビジネスプロセ"
+"スの観点では重要な意味を持つ対話であり、 タスクが首尾よく完了する場合、 ビジ"
+"ネスプロセスの状態遷移を引き起こす可能性を持っています。 Seam はタスク区分用"
+"に特別なアノテーションのセットを提供します。"
+
+#. Tag: para
+#: Concepts.xml:94
+#, no-c-format
+msgid ""
+"Conversations may be <emphasis>nested</emphasis>, with one conversation "
+"taking place \"inside\" a wider conversation. This is an advanced feature."
+msgstr ""
+"より広い対話の \"内部\" で対話を発生させるような <emphasis>ネスト</emphasis> "
+"も可能です。 これは拡張機能です。"
+
+#. Tag: para
+#: Concepts.xml:97
+#, no-c-format
+msgid ""
+"Usually, conversation state is actually held by Seam in the servlet session "
+"between requests. Seam implements configurable <emphasis>conversation "
+"timeout</emphasis>, automatically destroying inactive conversations, and "
+"thus ensuring that the state held by a single user login session does not "
+"grow without bound if the user abandons conversations."
+msgstr ""
+"通常、実際にはリクエストとリクエストの間 servlet セッション中で Seam により対"
+"話状態は保持されます。 Seam は設定可能な <emphasis>対話タイムアウト</"
+"emphasis> を実装し、 自動的に不活性な対話を破棄し、 ユーザが対話を中断して"
+"も、ユーザログインセッションにより保持される状態は際限なく増加しないことが保"
+"証されています。"
+
+#. Tag: para
+#: Concepts.xml:100
+#, no-c-format
+msgid ""
+"Seam serializes processing of concurrent requests that take place in the "
+"same long-running conversation context, in the same process."
+msgstr ""
+"Seam は同じプロセス中の同じ長期対話コンテキスト中で発生する並列のリクエスト処"
+"理をシリアル化します。"
+
+#. Tag: para
+#: Concepts.xml:103
+#, no-c-format
+msgid ""
+"Alternatively, Seam may be configured to keep conversational state in the "
+"client browser."
+msgstr ""
+"あるいは、Seam はクライアントブラウザの中に対話の状態を保持するように設定され"
+"る場合もあります。"
+
+#. Tag: title
+#: Concepts.xml:106
+#, no-c-format
+msgid "<title>Session context</title>"
+msgstr "<title>セッションコンテキスト</title>"
+
+#. Tag: para
+#: Concepts.xml:107
+#, no-c-format
+msgid ""
+"A session context holds state associated with the user login session. While "
+"there are some cases where it is useful to share state between several "
+"conversations, we generally frown on the use of session context for holding "
+"components other than global information about the logged in user."
+msgstr ""
+"セッションコンテキストはユーザログインに関する状態を保持します。 いくつかの事"
+"例では対話の間で状態を共有することが有用なことがありますが、 ログインユーザに"
+"関するグローバル情報以外のコンポーネントを保持するために、 セッションコンテキ"
+"ストを使用することは賛成できません。"
+
+#. Tag: para
+#: Concepts.xml:110
+#, no-c-format
+msgid ""
+"In a JSR-168 portal environment, the session context represents the portlet "
+"session."
+msgstr ""
+"JSR-168 portal 環境では、セッションコンテキストは portlet セッションを意味し"
+"ます。"
+
+#. Tag: title
+#: Concepts.xml:113
+#, no-c-format
+msgid "<title>Business process context</title>"
+msgstr "<title>ビジネスプロセスコンテキスト</title>"
+
+#. Tag: para
+#: Concepts.xml:114
+#, no-c-format
+msgid ""
+"The business process context holds state associated with the long running "
+"business process. This state is managed and made persistent by the BPM "
+"engine (JBoss jBPM). The business process spans multiple interactions with "
+"multiple users, so this state is shared between multiple users, but in a "
+"well-defined manner. The current task determines the current business "
+"process instance, and the lifecycle of the business process is defined "
+"externally using a <emphasis>process definition language</emphasis>, so "
+"there are no special annotations for business process demarcation."
+msgstr ""
+"ビジネスプロセスコンテキストは長期ビジネスプロセスに関する状態を保持します。 "
+"この状態は BPM エンジン (JBoss jBPM) によって管理や永続化が行われます。 ビジ"
+"ネスプロセスは、複数ユーザの複数インタラクションを橋渡しします。 従って、この"
+"状態は複数ユーザの間で明確な方法で共有されます。 現在のタスクは現在のビジネス"
+"プロセスインスタンスを決定し、 ビジネスプロセスのライフサイクルは <emphasis>"
+"プロセス定義言語</emphasis> を使用することで外部に定義されます。 従って、ビジ"
+"ネスプロセスの区分のために特別なアノテーションはありません。"
+
+#. Tag: title
+#: Concepts.xml:117
+#, no-c-format
+msgid "<title>Application context</title>"
+msgstr "<title>アプリケーションコンテキスト</title>"
+
+#. Tag: para
+#: Concepts.xml:118
+#, no-c-format
+msgid ""
+"The application context is the familiar servlet context from the servlet "
+"spec. Application context is mainly useful for holding static information "
+"such as configuration data, reference data or metamodels. For example, Seam "
+"stores its own configuration and metamodel in the application context."
+msgstr ""
+"アプリケーションコンテキストはサーブレット仕様からおなじみのサーブレットのコ"
+"ンテキストです。 アプリケーションコンテキストは主に、設定データ、参照データ、"
+"メタモデルのような静的な情報を保持するために役立ちます。 例えば、Seam はアプ"
+"リケーションコンテキスト中に Seam 設定やメタモデルを保管しています。"
+
+#. Tag: title
+#: Concepts.xml:121
+#, no-c-format
+msgid "Context variables"
+msgstr "コンテキスト変数"
+
+#. Tag: para
+#: Concepts.xml:122
+#, no-c-format
+msgid ""
+"A context defines a namespace, a set of <emphasis>context variables</"
+"emphasis>. These work much the same as session or request attributes in the "
+"servlet spec. You may bind any value you like to a context variable, but "
+"usually we bind Seam component instances to context variables."
+msgstr ""
+"コンテキストは名前空間、<emphasis>コンテキスト変数</emphasis> のセットを定義"
+"します。 これらはサーブレット仕様のセッションやリクエスト属性と同様に機能しま"
+"す。 どのような値でもコンテキスト変数とバインドができますが、 通常、Seam コン"
+"ポーネントインスタンスをコンテキスト変数にバインドします。"
+
+#. Tag: para
+#: Concepts.xml:125
+#, no-c-format
+msgid ""
+"So, within a context, a component instance is identified by the context "
+"variable name (this is usually, but not always, the same as the component "
+"name). You may programatically access a named component instance in a "
+"particular scope via the <literal>Contexts</literal> class, which provides "
+"access to several thread-bound instances of the <literal>Context</literal> "
+"interface:"
+msgstr ""
+"従って、コンテキスト中では、 コンポーネントインスタンスは、コンテキスト変数"
+"名 (いつもではないが通常はコンポーネント名と同じ) で識別されます。 "
+"<literal>Contexts</literal> クラスを通して特定のスコープの指定されたコンポー"
+"ネントインスタンスにプログラム的にアクセスもできます。 それは "
+"<literal>Context</literal> インタフェースのスレッドに結びついたインスタンスへ"
+"のアクセスを提供します。"
+
+#. Tag: programlisting
+#: Concepts.xml:128
+#, no-c-format
+msgid "User user = (User) Contexts.getSessionContext().get(\"user\");"
+msgstr "User user = (User) Contexts.getSessionContext().get(\"user\");"
+
+#. Tag: para
+#: Concepts.xml:129
+#, no-c-format
+msgid "You may also set or change the value associated with a name:"
+msgstr "名前に関連する値を設定したり変更したりすることもできます。"
+
+#. Tag: programlisting
+#: Concepts.xml:132
+#, no-c-format
+msgid "Contexts.getSessionContext().set(\"user\", user);"
+msgstr "Contexts.getSessionContext().set(\"user\", user);"
+
+#. Tag: para
+#: Concepts.xml:133
+#, no-c-format
+msgid ""
+"Usually, however, we obtain components from a context via injection, and put "
+"component instances into a context via outjection."
+msgstr ""
+"しかしながら、通常、インジェクションを通してコンテキストからコンポーネントを"
+"取得し、 アウトジェクションを通してコンポーネントインスタンスをコンテキストに"
+"配置します。"
+
+#. Tag: title
+#: Concepts.xml:136
+#, no-c-format
+msgid "Context search priority"
+msgstr "コンテキスト検索優先順位"
+
+#. Tag: para
+#: Concepts.xml:137
+#, no-c-format
+msgid ""
+"Sometimes, as above, component instances are obtained from a particular "
+"known scope. Other times, all stateful scopes are searched, in "
+"<emphasis>priority order</emphasis>. The order is as follows:"
+msgstr ""
+"上記のように、コンポーネントインスタンスは特定の周知のスコープから取得するこ"
+"ともありますが、 それ以外の場合、すべてのステートフルスコープは <emphasis>優"
+"先順位</emphasis> に従って検索されます。 その順序は以下の通りです。"
+
+#. Tag: para
+#: Concepts.xml:142
+#, no-c-format
+msgid "<para>Event context</para>"
+msgstr "<para>イベントコンテキスト</para>"
+
+#. Tag: para
+#: Concepts.xml:172
+#, no-c-format
+msgid ""
+"You can perform a priority search by calling <literal>Contexts."
+"lookupInStatefulContexts()</literal>. Whenever you access a component by "
+"name from a JSF page, a priority search occurs."
+msgstr ""
+"<literal>Contexts.lookupInStatefulContexts()</literal> を呼び出すことによって"
+"優先順位の検索も可能です。 JSF ページから名前によってアクセスする場合はいつ"
+"も、優先順位検索が発生します。"
+
+#. Tag: title
+#: Concepts.xml:175
+#, no-c-format
+msgid "Concurrency model"
+msgstr "同時並行処理モデル"
+
+#. Tag: para
+#: Concepts.xml:176
+#, no-c-format
+msgid ""
+"Neither the servlet nor EJB specifications define any facilities for "
+"managing concurrent requests originating from the same client. The servlet "
+"container simply lets all threads run concurrently and leaves enforcing "
+"threadsafeness to application code. The EJB container allows stateless "
+"components to be accessed concurrently, and throws an exception if multiple "
+"threads access a stateful session bean."
+msgstr ""
+"servlet 仕様も EJB 仕様も同じクライアントから起こる同時並行のリクエストを管理"
+"するための設備はまったく定義していません。 servlet コンテナは単純にすべてのス"
+"レッドを同時並行的に稼動させ、 スレッドセーフとすることをアプリケーションコー"
+"ドに任せます。 EJB コンテナはステートレスコンポーネントが同時並行的にアクセス"
+"されることを可能にし、 複数のスレッドがひとつのステートレスセッション Bean に"
+"アクセスするならば例外をスローします。"
+
+#. Tag: para
+#: Concepts.xml:179
+#, no-c-format
+msgid ""
+"This behavior might have been okay in old-style web applications which were "
+"based around fine-grained, synchronous requests. But for modern applications "
+"which make heavy use of many fine-grained, asynchronous (AJAX) requests, "
+"concurrency is a fact of life, and must be supported by the programming "
+"model. Seam weaves a concurrency management layer into its context model."
+msgstr ""
+"この振る舞いは粒度の細かい同期リクエストをベースとする古いスタイルの Web アプ"
+"リケーションでは大丈夫であったかもしれません。 しかし、多くの粒度の細かい非同"
+"期リクエスト (AJAX) を多用する最新のアプリケーションのために、 同時並行はまぎ"
+"れもない事実であり、プログラムモデルとしてサポートされなければなりません。 "
+"Seam は同時並行管理レイヤをコンテキストモデルに織り込みます。"
+
+#. Tag: para
+#: Concepts.xml:182
+#, no-c-format
+msgid ""
+"The Seam session and application contexts are multithreaded. Seam will allow "
+"concurrent requests in a context to be processed concurrently. The event and "
+"page contexts are by nature single threaded. The business process context is "
+"strictly speaking multi-threaded, but in practice concurrency is "
+"sufficiently rare that this fact may be disregarded most of the time. "
+"Finally, Seam enforces a <emphasis>single thread per conversation per "
+"process</emphasis> model for the conversation context by serializing "
+"concurrent requests in the same long-running conversation context."
+msgstr ""
+"Seam セッションとアプリケーションコンテキストはマルチスレッドになっていま"
+"す。 Seam は同時並行的に処理されるためにコンテキスト中での同時並行リクエスト"
+"を許します。 イベントとページコンテキストは本来シングルスレッドです。 厳密に"
+"言えばビジネスプロセスコンテキストはマルチスレッドですが、 実際には同時並行は"
+"とてもまれで、この事実はほとんど着目されないかもしれません。 最後に、 同じ長"
+"期対話コンテキスト中の同時並行リクエストをシリアライズすることによって、 "
+"Seam は、対話コンテキストのために <emphasis>プロセスごと対話ごとのシングルス"
+"レッド</emphasis> モデルを実施します。"
+
+#. Tag: para
+#: Concepts.xml:185
+#, no-c-format
+msgid ""
+"Since the session context is multithreaded, and often contains volatile "
+"state, session scope components are always protected by Seam from concurrent "
+"access. Seam serializes requests to session scope session beans and "
+"JavaBeans by default (and detects and breaks any deadlocks that occur). This "
+"is not the default behaviour for application scoped components however, "
+"since application scoped components do not usually hold volatile state and "
+"because synchronization at the global level is <emphasis>extremely</"
+"emphasis> expensive. However, you can force a serialized threading model on "
+"any session bean or JavaBean component by adding the <literal>@Synchronized</"
+"literal> annotation."
+msgstr ""
+"セッションコンテキストはマルチスレッドで、よく揮発性の状態を含むので、 Seam "
+"によりセッションスコープコンポーネントは同時並行アクセスからいつも保護されて"
+"います。 Seam はデフォルトでリクエストを セッションスコープセッション Bean "
+"と JavaBean にシリアライズします。 ( そして、発生するどんなデッドロックも検出"
+"して打開します。) アプリケーションスコープのコンポーネントは通常揮発性の状態"
+"を保持しないため、 これはアプリケーションスコープのコンポーネントのためのデ"
+"フォルトの振る舞いではありません。 なぜなら、グローバルレベルの同期化は "
+"<emphasis>極端に</emphasis> コストがかかるからです。 しかし、 "
+"<literal>@Synchronized</literal> アノテーションを追加することで、 セッション "
+"Bean また JavaBean コンポーネントにシリアライズされたスレッドモデルを強制可能"
+"です。"
+
+#. Tag: para
+#: Concepts.xml:188
+#, no-c-format
+msgid ""
+"This concurrency model means that AJAX clients can safely use volatile "
+"session and conversational state, without the need for any special work on "
+"the part of the developer."
+msgstr ""
+"この同時並行モデルは、 開発者側での特別な作業をまったく必要とすることなく、 "
+"AJAX クライアントが安全に揮発性セッションや対話状態を使用できることを意味しま"
+"す。"
+
+#. Tag: title
+#: Concepts.xml:191
+#, no-c-format
+msgid "Seam components"
+msgstr "Seam コンポーネント"
+
+#. Tag: para
+#: Concepts.xml:192
+#, no-c-format
+msgid ""
+"Seam components are POJOs (Plain Old Java Objects). In particular, they are "
+"JavaBeans or EJB 3.0 enterprise beans. While Seam does not require that "
+"components be EJBs and can even be used without an EJB 3.0 compliant "
+"container, Seam was designed with EJB 3.0 in mind and includes deep "
+"integration with EJB 3.0. Seam supports the following <emphasis>component "
+"types</emphasis>."
+msgstr ""
+"Seam コンポーネントは POJO (Plain Old Java Objects) です。 具体的には、Seam "
+"コンポーネントは JavaBean もしくは EJB 3.0 エンタープライズ Bean です。 Seam "
+"は コンポーネントが EJB が必須ではなく、また EJB 3.0 準拠のコンテナがなくても"
+"使用できますが、 Seam は EJB 3.0 を念頭にして設計され、EJB 3.0 と強く統合され"
+"ています。 Seam は以下の <emphasis>コンポーネントタイプ</emphasis> をサポート"
+"します。"
+
+#. Tag: para
+#: Concepts.xml:197
+#, no-c-format
+msgid "EJB 3.0 stateless session beans"
+msgstr "EJB 3.0 ステートレスセッション Bean"
+
+#. Tag: para
+#: Concepts.xml:202
+#, no-c-format
+msgid "EJB 3.0 stateful session beans"
+msgstr "EJB 3.0 ステートフルセッション Bean"
+
+#. Tag: para
+#: Concepts.xml:207
+#, no-c-format
+msgid "EJB 3.0 entity beans"
+msgstr "EJB 3.0 エンティティ Bean"
+
+#. Tag: para
+#: Concepts.xml:212
+#, no-c-format
+msgid "<para>JavaBeans</para>"
+msgstr "<para>JavaBeans</para>"
+
+#. Tag: para
+#: Concepts.xml:217
+#, no-c-format
+msgid "EJB 3.0 message-driven beans"
+msgstr "EJB 3.0 メッセージ駆動型 Bean"
+
+#. Tag: title
+#: Concepts.xml:222
+#, no-c-format
+msgid "Stateless session beans"
+msgstr "ステートレスセッション Bean"
+
+#. Tag: para
+#: Concepts.xml:223
+#, no-c-format
+msgid ""
+"Stateless session bean components are not able to hold state across multiple "
+"invocations. Therefore, they usually work by operating upon the state of "
+"other components in the various Seam contexts. They may be used as JSF "
+"action listeners, but cannot provide properties to JSF components for "
+"display."
+msgstr ""
+"ステートレスセッション Bean コンポーネントは、複数の呼出しに対して状態を保持"
+"することができません。 従って、それらは通常さまざまな Seam コンテキスト内の別"
+"コンポーネントの状態を操作するのに役に立ちます。 それらは JSF のアクションリ"
+"スナとして使用できるかもしれませんが、 表示のために JSF コンポーネントにプロ"
+"パティを提供することはできません。"
+
+#. Tag: para
+#: Concepts.xml:226
+#, no-c-format
+msgid "Stateless session beans always live in the stateless context."
+msgstr "ステートレスセッション Bean はいつもステートレスコンテキストに置かれます。"
+
+#. Tag: para
+#: Concepts.xml:229
+#, no-c-format
+msgid "Stateless session beans are the least interesting kind of Seam component."
+msgstr ""
+"ステートレスセッション Bean は最も興味のわかない種類の Seam コンポーネントで"
+"す。"
+
+#. Tag: title
+#: Concepts.xml:232
+#, no-c-format
+msgid "Stateful session beans"
+msgstr "ステートフルセッション Bean"
+
+#. Tag: para
+#: Concepts.xml:233
+#, no-c-format
+msgid ""
+"Stateful session bean components are able to hold state not only across "
+"multiple invocations of the bean, but also across multiple requests. "
+"Application state that does not belong in the database should usually be "
+"held by stateful session beans. This is a major difference between Seam and "
+"many other web application frameworks. Instead of sticking information about "
+"the current conversation directly in the <literal>HttpSession</literal>, you "
+"should keep it in instance variables of a stateful session bean that is "
+"bound to the conversation context. This allows Seam to manage the lifecycle "
+"of this state for you, and ensure that there are no collisions between state "
+"relating to different concurrent conversations."
+msgstr ""
+"ステートフルセッション Bean コンポーネントは、 Bean の複数の呼出しに対して状"
+"態を保持することができるだけでなく、 複数のリクエストに対して状態を保持するこ"
+"ともできます。 データベースに保持されていないアプリケーションの状態は、 通"
+"常、ステートフルセッション Bean によって保持される必要があります。 これは "
+"Seam と他の多くの WEB アプリケーションフレームワークとの大きな違いです。 現在"
+"の対話の情報を直接 <literal>HttpSession</literal> に押し込める代わりに、 対話"
+"コンテキストに結びついたステートフルセッション Bean のインスタンス変数の中に"
+"それを保持すべきです。 これは、Seam がこの状態のライフサイクルの管理を可能に"
+"し、 異なる同時実行中の対話に関連する状態の間に衝突がないことを保証します。"
+
+#. Tag: para
+#: Concepts.xml:236
+#, no-c-format
+msgid ""
+"Stateful session beans are often used as JSF action listener, and as backing "
+"beans that provide properties to JSF components for display or form "
+"submission."
+msgstr ""
+"ステートフルセッション Bean はしばしば JSF アクションリスナ、または、 表示も"
+"しくはフォームのサブミットのためにプロパティを提供する JSF コンポーネントの"
+"バッキング Bean として使用されます。"
+
+#. Tag: para
+#: Concepts.xml:239
+#, no-c-format
+msgid ""
+"By default, stateful session beans are bound to the conversation context. "
+"They may never be bound to the page or stateless contexts."
+msgstr ""
+"デフォルトで、ステートフルセッション Bean は対話コンテキストとバインドしま"
+"す。 それらはページもしくはステートレスコンテキストとバインドできません。"
+
+#. Tag: para
+#: Concepts.xml:242
+#, no-c-format
+msgid ""
+"Concurrent requests to session-scoped stateful session beans are always "
+"serialized by Seam."
+msgstr ""
+"セッションスコープのステートレスセッション Bean への同時並行リクエストは、 い"
+"つでも Seam によってシリアライズされます。"
+
+#. Tag: title
+#: Concepts.xml:245
+#, no-c-format
+msgid "Entity beans"
+msgstr "エンティティ Bean"
+
+#. Tag: para
+#: Concepts.xml:246
+#, no-c-format
+msgid ""
+"Entity beans may be bound to a context variable and function as a seam "
+"component. Because entities have a persistent identity in addition to their "
+"contextual identity, entity instances are usually bound explicitly in Java "
+"code, rather than being instantiated implicitly by Seam."
+msgstr ""
+"エンティティ Bean はコンテキスト変数とバインドし、Seamコンポーネントとして機"
+"能することもあります。 エンティティは、コンテキスト依存識別子に加えて永続識別"
+"子を持つために、 エンティティのインスタンスは、Seam によって暗黙的にインスタ"
+"ンス化されるより、 むしろ Java コード中で明示的にバインドされます。"
+
+#. Tag: para
+#: Concepts.xml:249
+#, no-c-format
+msgid ""
+"Entity bean components do not support bijection or context demarcation. Nor "
+"does invocation of an entity bean trigger validation."
+msgstr ""
+"エンティティ Bean コンポーネントはバイジェクションもコンテキスト区分もサポー"
+"トしません。 また、エンティティ Bean トリガのデータ妥当性検証の呼び出しもサ"
+"ポートしていません。"
+
+#. Tag: para
+#: Concepts.xml:252
+#, no-c-format
+msgid ""
+"Entity beans are not usually used as JSF action listeners, but do often "
+"function as backing beans that provide properties to JSF components for "
+"display or form submission. In particular, it is common to use an entity as "
+"a backing bean, together with a stateless session bean action listener to "
+"implement create/update/delete type functionality."
+msgstr ""
+"エンティティ Bean は、通常 JSF アクションリスナとして使用されませんが、 しば"
+"しば、表示あるいはフォームのサブミットのために JSF コンポーネントにプロパティ"
+"を提供するバッキング Bean として機能します。 特に、エンティティ Bean をバッキ"
+"ング Bean として使用することは一般的であり、 追加 / 変更 / 削除タイプの機能の"
+"実装のためのステートレスセッション Bean アクションリスナといっしょに使用され"
+"ます。"
+
+#. Tag: para
+#: Concepts.xml:255
+#, no-c-format
+msgid ""
+"By default, entity beans are bound to the conversation context. They may "
+"never be bound to the stateless context."
+msgstr ""
+"デフォルトで、エンティティ Bean は対話コンテキストとバインドします。 ステート"
+"レスセッション Bean とはバインドしません。"
+
+#. Tag: para
+#: Concepts.xml:258
+#, no-c-format
+msgid ""
+"Note that it in a clustered environment is somewhat less efficient to bind "
+"an entity bean directly to a conversation or session scoped Seam context "
+"variable than it would be to hold a reference to the entity bean in a "
+"stateful session bean. For this reason, not all Seam applications define "
+"entity beans to be Seam components."
+msgstr ""
+"クラスタリングされた環境では、 ステートフルセッション Bean 中でエンティティ "
+"Bean の参照を保持することより、 エンティティ Bean を直接的に対話あるいはセッ"
+"ションスコープの Seam コンテキスト変数にバインドする方が非効果的であることに"
+"留意してください。 この理由のため、すべての Seam アプリケーションが Seam コン"
+"ポーネントであるためにエンティティ Bean を定義するわけではありません。"
+
+#. Tag: title
+#: Concepts.xml:261
+#, no-c-format
+msgid "<title>JavaBeans</title>"
+msgstr "<title>JavaBeans</title>"
+
+#. Tag: para
+#: Concepts.xml:262
+#, no-c-format
+msgid ""
+"Javabeans may be used just like a stateless or stateful session bean. "
+"However, they do not provide the functionality of a session bean "
+"(declarative transaction demarcation, declarative security, efficient "
+"clustered state replication, EJB 3.0 persistence, timeout methods, etc)."
+msgstr ""
+"JavaBean はステートレスあるいはステートフルセッション Bean のように使用される"
+"こともあります。 しかし、それらはセッション Bean の機能を提供していません。 "
+"(宣言的トランザクション区分、 宣言的セキュリティ、 効率的にクラスタ化された状"
+"態レプリケーション、 EJB 3.0 永続性、 タイムアウトメソッドなど)"
+
+#. Tag: para
+#: Concepts.xml:265
+#, no-c-format
+msgid ""
+"In a later chapter, we show you how to use Seam and Hibernate without an EJB "
+"container. In this use case, components are JavaBeans instead of session "
+"beans. Note, however, that in many application servers it is somewhat less "
+"efficient to cluster conversation or session scoped Seam JavaBean components "
+"than it is to cluster stateful session bean components."
+msgstr ""
+"後の章で、EJB コンテナなしで Seam や Hibernate を使用する方法を紹介していま"
+"す。 このユースケースでは、コンポーネントはセッション Bean の代わりに "
+"JavaBean です。 しかし、多くのアプリケーションサーバでは、 ステートフルセッ"
+"ション Bean コンポーネントをクラスタリングするより、 対話あるいはセッションス"
+"コープの Seam JavaBean コンポーネントをクラスタリングする方が多少非効率的であ"
+"ることに留意してください。"
+
+#. Tag: para
+#: Concepts.xml:268
+#, no-c-format
+msgid "By default, JavaBeans are bound to the event context."
+msgstr "デフォルトで、JavaBean はイベントコンテキストとバインドします。"
+
+#. Tag: para
+#: Concepts.xml:271
+#, no-c-format
+msgid ""
+"Concurrent requests to session-scoped JavaBeans are always serialized by "
+"Seam."
+msgstr ""
+"セッションスコープの JavaBean への同時並行リクエストはいつも Seam によりシリ"
+"アライズされます。"
+
+#. Tag: title
+#: Concepts.xml:274
+#, no-c-format
+msgid "Message-driven beans"
+msgstr "メッセージ駆動型 Bean"
+
+#. Tag: para
+#: Concepts.xml:275
+#, no-c-format
+msgid ""
+"Message-driven beans may function as a seam component. However, message-"
+"driven beans are called quite differently to other Seam components - instead "
+"of invoking them via the context variable, they listen for messages sent to "
+"a JMS queue or topic."
+msgstr ""
+"メッセージ駆動形 Bean は Seam コンポーネントとして機能することができます。 し"
+"かし、メッセージ駆動型 Bean は、他の Seam コンポーネントとまったく異なった形"
+"で呼び出されます。 コンテキスト変数を通じてそれらを呼び出す代わりに、 JMS "
+"queue あるいは、topic に送信されたメッセージを待ち受けます。"
+
+#. Tag: para
+#: Concepts.xml:278
+#, no-c-format
+msgid ""
+"Message-driven beans may not be bound to a Seam context. Nor do they have "
+"access to the session or conversation state of their \"caller\". However, "
+"they do support bijection and some other Seam functionality."
+msgstr ""
+"メッセージ駆動形 Bean は、Seam コンテキストとバインドできません。 また、それ"
+"らの「呼び出し元」のセッションや対話状態にアクセスできません。 しかし、メッ"
+"セージ駆動形 Bean は、バイジェクションと他の Seam の機能をサポートします。"
+
+#. Tag: title
+#: Concepts.xml:281
+#, no-c-format
+msgid "Interception"
+msgstr "インターセプション"
+
+#. Tag: para
+#: Concepts.xml:282
+#, no-c-format
+msgid ""
+"In order to perform its magic (bijection, context demarcation, validation, "
+"etc), Seam must intercept component invocations. For JavaBeans, Seam is in "
+"full control of instantiation of the component, and no special configuration "
+"is needed. For entity beans, interception is not required since bijection "
+"and context demarcation are not defined. For session beans, we must register "
+"an EJB interceptor for the session bean component. We could use an "
+"annotation, as follows:"
+msgstr ""
+"そのマジック (バイジェクション、コンテキスト区分、データ妥当性検証など) を実"
+"行するために、 Seam はコンポーネントの呼び出しをインターセプトしなければなり"
+"ません。 JavaBean では、Seam はコンポーネントのインスタンス化を完全に制御する"
+"ため、特別な設定は不要です。 エンティティ Bean では、バイジェクションとコンテ"
+"キスト区分が指定されていないため、インターセプションは不要です。 セッション "
+"Bean では、EJB インターセプタをセッション Bean コンポーネントのために登録しな"
+"ければなりません。 アノテーションは以下のように使用します。"
+
+#. Tag: programlisting
+#: Concepts.xml:285
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:286
+#, no-c-format
+msgid ""
+"But a much better way is to define the interceptor in <literal>ejb-jar.xml</"
+"literal>."
+msgstr ""
+"しかし、もっと良い方法は、<literal>ejb-jar.xml</literal> にインターセプタを定"
+"義することです。"
+
+#. Tag: programlisting
+#: Concepts.xml:289
+#, no-c-format
+msgid ""
+"&lt;interceptors&gt;\n"
+"   &lt;interceptor&gt;\n"
+"      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"   &lt;/interceptor&gt;\n"
+"&lt;/interceptors&gt;\n"
+"   \n"
+"&lt;assembly-descriptor&gt;\n"
+"   &lt;interceptor-binding&gt;\n"
+"      &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"   &lt;/interceptor-binding&gt;\n"
+"&lt;/assembly-descriptor&gt;"
+msgstr ""
+"&lt;interceptors&gt;\n"
+"   &lt;interceptor&gt;\n"
+"      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"   &lt;/interceptor&gt;\n"
+"&lt;/interceptors&gt;\n"
+"   \n"
+"&lt;assembly-descriptor&gt;\n"
+"   &lt;interceptor-binding&gt;\n"
+"      &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"   &lt;/interceptor-binding&gt;\n"
+"&lt;/assembly-descriptor&gt;"
+
+#. Tag: title
+#: Concepts.xml:290
+#, no-c-format
+msgid "Component names"
+msgstr "コンポーネント名"
+
+#. Tag: para
+#: Concepts.xml:291
+#, no-c-format
+msgid ""
+"All seam components need a name. We can assign a name to a component using "
+"the <literal>@Name</literal> annotation:"
+msgstr ""
+"すべての Seam コンポーネントは名前が必要です。 <literal>@Name</literal> アノ"
+"テーションを使用してコンポーネントに名前を割り当てます。"
+
+#. Tag: programlisting
+#: Concepts.xml:294
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:295
+#, no-c-format
+msgid ""
+"This name is the <emphasis>seam component name</emphasis> and is not related "
+"to any other name defined by the EJB specification. However, seam component "
+"names work just like JSF managed bean names and you can think of the two "
+"concepts as identical."
+msgstr ""
+"この名前は、<emphasis>Seam コンポーネント名 (seam component name) </"
+"emphasis> で、 EJB 標準で定義された他の名前との関連はありません。 しかし、"
+"Seam コンポーネント名はちょうど JSF 管理 Bean のように動作するため、 2 つのコ"
+"ンセプトは同一と考えることができます。"
+
+#. Tag: para
+#: Concepts.xml:298
+#, no-c-format
+msgid ""
+"<literal>@Name</literal> is not the only way to define a component name, but "
+"we always need to specify the name <emphasis>somewhere</emphasis>. If we "
+"don&#39;t, then none of the other Seam annotations will function."
+msgstr ""
+"<literal>@Name</literal> はコンポーネント名を定義する唯一の方法ではありません"
+"が、 いつも、<emphasis>どこかで</emphasis> 名前を指定する必要があります。 も"
+"しそうしないと、他の Seam アノテーションはどれも機能しないでしょう。"
+
+#. Tag: para
+#: Concepts.xml:301
+#, no-c-format
+msgid ""
+"Just like in JSF, a seam component instance is usually bound to a context "
+"variable with the same name as the component name. So, for example, we would "
+"access the <literal>LoginAction</literal> using <literal>Contexts."
+"getStatelessContext().get(\"loginAction\")</literal>. In particular, "
+"whenever Seam itself instantiates a component, it binds the new instance to "
+"a variable with the component name. However, again like JSF, it is possible "
+"for the application to bind a component to some other context variable by "
+"programmatic API call. This is only useful if a particular component serves "
+"more than one role in the system. For example, the currently logged in "
+"<literal>User</literal> might be bound to the <literal>currentUser</literal> "
+"session context variable, while a <literal>User</literal> that is the "
+"subject of some administration functionality might be bound to the "
+"<literal>user</literal> conversation context variable."
+msgstr ""
+"ちょうど JSF のように、Seam コンポーネントインスタンスは、 通常コンポーネント"
+"名と同じ名前のコンテキスト変数と結合します。 従って、例えば、"
+"<literal>Contexts.getStatelessContext().get(\"loginAction\")</literal> を使っ"
+"て、 <literal>LoginAction</literal> にアクセスできるでしょう。 具体的には、"
+"Seam 自身がコンポーネントをインスタンス化する時はいつでも、 それはコンポーネ"
+"ント名によって新しいインスタンスを変数と結合します。 しかし、この場合も JSF "
+"のように、 アプリケーションはプログラムに基づいた API コールによってコンポー"
+"ネントを他のコンテキスト変数と結合させることも可能です。 特定のコンポーネント"
+"がシステムの中で複数のロールを提供する場合のみ、これは有用です。 例えば、現在"
+"のログイン <literal>User</literal> は <literal>currentUser</literal> セッショ"
+"ンコンテキスト変数に結合されているかもしれませんが、 一方で、ある管理機能の主"
+"体である <literal>User</literal> は <literal>user</literal> 対話コンテキスト"
+"変数に結合されているかもしれません。"
+
+#. Tag: para
+#: Concepts.xml:304
+#, no-c-format
+msgid ""
+"For very large applications, and for built-in seam components, qualified "
+"names are often used."
+msgstr ""
+"非常に大規模なアプリケーションのために、そして組み込み Seam コンポーネントの"
+"ために、修飾名はしばしば使われます。"
+
+#. Tag: programlisting
+#: Concepts.xml:307
+#, no-c-format
+msgid ""
+"@Name(\"com.jboss.myapp.loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"com.jboss.myapp.loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:308
+#, no-c-format
+msgid ""
+"We may use the qualified component name both in Java code and in JSF&#39;s "
+"expression language:"
+msgstr ""
+"Java コード中でも JSF の式言語中でも修飾されたコンポーネント名は使用できま"
+"す。"
+
+#. Tag: programlisting
+#: Concepts.xml:311
+#, no-c-format
+msgid ""
+"&lt;h:commandButton type=\"submit\" value=\"Login\"\n"
+"                 action=\"#{com.jboss.myapp.loginAction.login}\"/&gt;"
+msgstr ""
+"&lt;h:commandButton type=\"submit\" value=\"Login\"\n"
+"                 action=\"#{com.jboss.myapp.loginAction.login}\"/&gt;"
+
+#. Tag: para
+#: Concepts.xml:312
+#, no-c-format
+msgid ""
+"Since this is noisy, Seam also provides a means of aliasing a qualified name "
+"to a simple name. Add a line like this to the <literal>components.xml</"
+"literal> file:"
+msgstr ""
+"これはうっとうしいので、Seam は修飾名を簡単な名前にエイリアスする機能も提供し"
+"ます。 以下のような行を <literal>components.xml</literal> ファイルに追加して"
+"ください。"
+
+#. Tag: programlisting
+#: Concepts.xml:315
+#, no-c-format
+msgid ""
+"&lt;factory name=\"loginAction\" scope=\"STATELESS\" value=\"#{com.jboss."
+"myapp.loginAction}\"/&gt;"
+msgstr ""
+"&lt;factory name=\"loginAction\" scope=\"STATELESS\" value=\"#{com.jboss."
+"myapp.loginAction}\"/&gt;"
+
+#. Tag: para
+#: Concepts.xml:316
+#, no-c-format
+msgid ""
+"All of the built-in Seam components have qualified names, but most of them "
+"are aliased to a simple name by the <literal>components.xml</literal> file "
+"included in the Seam jar."
+msgstr ""
+"すべての組み込み Seam コンポーネントは修飾名を持っていますが、 それらのほとん"
+"どは Seam jar に含められている <literal>components.xml</literal> ファイルに"
+"よって簡単な名前にエイリアスされます。"
+
+#. Tag: title
+#: Concepts.xml:319
+#, no-c-format
+msgid "Defining the component scope"
+msgstr "コンポーネントスコープの定義"
+
+#. Tag: para
+#: Concepts.xml:320
+#, no-c-format
+msgid ""
+"We can override the default scope (context) of a component using the "
+"<literal>@Scope</literal> annotation. This lets us define what context a "
+"component instance is bound to, when it is instantiated by Seam."
+msgstr ""
+"<literal>@Scope</literal>アノテーションを使用して、コンポーネントのデフォルト"
+"スコープ (コンテキスト) をオーバーライドすることができます。 これによって "
+"Seam によってインスタンス化される時に、 コンポーネントインスタンスがどんなコ"
+"ンテキストと結合するかを定義ができます。"
+
+#. Tag: programlisting
+#: Concepts.xml:323
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(SESSION)\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(SESSION)\n"
+"public class User { \n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:324
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.ScopeType</literal> defines an enumeration of "
+"possible scopes."
+msgstr ""
+"<literal>org.jboss.seam.ScopeType</literal> 可能なスコープの列挙を定義しま"
+"す。"
+
+#. Tag: title
+#: Concepts.xml:327
+#, no-c-format
+msgid "Components with multiple roles"
+msgstr "複数ロールを持つコンポーネント"
+
+#. Tag: para
+#: Concepts.xml:328
+#, no-c-format
+msgid ""
+"Some Seam component classes can fulfill more than one role in the system. "
+"For example, we often have a <literal>User</literal> class which is usually "
+"used as a session-scoped component representing the current user but is used "
+"in user administration screens as a conversation-scoped component. The "
+"<literal>@Role</literal> annotation lets us define an additional named role "
+"for a component, with a different scope&mdash;it lets us bind the same "
+"component class to different context variables. (Any Seam component "
+"<emphasis>instance</emphasis> may be bound to multiple context variables, "
+"but this lets us do it at the class level, and take advantage of auto-"
+"instantiation.)"
+msgstr ""
+"一部の Seam コンポーネントクラスはシステムの中で複数のロールを果たすことがで"
+"きます。 例えば、セッションスコープのコンポーネント <literal>User</literal> "
+"クラスは、 よく現在のユーザとして使用されますが、ユーザ管理画面では対話スコー"
+"プのコンポーネントとして使用されます。 <literal>@Role</literal> アノテーショ"
+"ンは、コンポーネントに対して異なったスコープを持つ追加指定のロールの定義を可"
+"能にしています。 これにより、 同じコンポーネントクラスを異なるコンテキスト変"
+"数にバインドすることができるようになります。 (どの Seam コンポーネント "
+"<emphasis>インスタンス</emphasis> も複数のコンテキスト変数にバインドが可能で"
+"すが、 これはクラスレベルで可能であり自動インスタンス化を利用しています。)"
+
+#. Tag: programlisting
+#: Concepts.xml:331
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(CONVERSATION)\n"
+"@Role(name=\"currentUser\", scope=SESSION)\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(CONVERSATION)\n"
+"@Role(name=\"currentUser\", scope=SESSION)\n"
+"public class User { \n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:332
+#, no-c-format
+msgid ""
+"The <literal>@Roles</literal> annotation lets us specify as many additional "
+"roles as we like."
+msgstr ""
+"<literal>@Roles</literal> アノテーションは、欲しいだけ多くの追加のロールの指"
+"定を可能にします。"
+
+#. Tag: programlisting
+#: Concepts.xml:335
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(CONVERSATION)\n"
+"@Roles({@Role(name=\"currentUser\", scope=SESSION)\n"
+"        @Role(name=\"tempUser\", scope=EVENT)})\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(CONVERSATION)\n"
+"@Roles({@Role(name=\"currentUser\", scope=SESSION)\n"
+"        @Role(name=\"tempUser\", scope=EVENT)})\n"
+"public class User { \n"
+"    ... \n"
+"}"
+
+#. Tag: title
+#: Concepts.xml:336
+#, no-c-format
+msgid "Built-in components"
+msgstr "組み込みコンポーネント"
+
+#. Tag: para
+#: Concepts.xml:337
+#, no-c-format
+msgid ""
+"Like many good frameworks, Seam eats its own dogfood and is implemented "
+"mostly as a set of built-in Seam interceptors (see later) and Seam "
+"components. This makes it easy for applications to interact with built-in "
+"components at runtime or even customize the basic functionality of Seam by "
+"replacing the built-in components with custom implementations. The built-in "
+"components are defined in the Seam namespace <literal>org.jboss.seam.core</"
+"literal> and the Java package of the same name."
+msgstr ""
+"多くのよいフレームワークのように、 Seam は自分自身が提供している機能を使うこ"
+"とを心掛けている (Eat Your Own Dog Food) 。 組み込みの Seam インターセプタ "
+"(後述) と Seamコンポーネントのセットで実装されています。 これは、アプリケー"
+"ションがランタイムで組み込みのコンポーネントとやり取り行うことを容易にしま"
+"す。 更に、組み込みのコンポーネントを独自の実装に置き換えることによって Seam "
+"の基本機能をカスタマイズすることさえ容易にします。 組み込みのコンポーネント"
+"は Seam の名前空間 <literal>org.jboss.seam.core</literal> と 同じ名前の Java "
+"パッケージにおいて定義されます。"
+
+#. Tag: para
+#: Concepts.xml:340
+#, no-c-format
+msgid ""
+"The built-in components may be injected, just like any Seam components, but "
+"they also provide convenient static <literal>instance()</literal> methods:"
+msgstr ""
+"組み込みコンポーネントは、Seam コンポーネントと同様にインジェクトすることも可"
+"能ですが、 便利なスタティック <literal>instance()</literal> メソッドも提供し"
+"ます。"
+
+#. Tag: programlisting
+#: Concepts.xml:343
+#, no-c-format
+msgid "FacesMessages.instance().add(\"Welcome back, #{user.name}!\");"
+msgstr "FacesMessages.instance().add(\"Welcome back, #{user.name}!\");"
+
+#. Tag: para
+#: Concepts.xml:344
+#, no-c-format
+msgid ""
+"Seam was designed to integrate tightly in a Java EE 5 environment. However, "
+"we understand that there are many projects which are not running in a full "
+"EE environment. We also realize the critical importance of easy unit and "
+"integration testing using frameworks such as TestNG and JUnit. So, we&#39;ve "
+"made it easy to run Seam in Java SE environments by allowing you to boostrap "
+"certain critical infrastructure normally only found in EE environments by "
+"installing built-in Seam components."
+msgstr ""
+"Seam は、Java EE 5 環境において密に統合されるよう設計されています。 しかし、"
+"私たちは、完全な EE 環境で実行されない多くのプロジェクトがあることを理解して"
+"います。 TestNG や JUnit のようなフレームワークを使用した容易なユニットテスト"
+"や統合テストが、 決定的に重要であることを理解しています。 そこで、組み込み "
+"Seam コンポーネントのインストールにより、 通常 EE 環境のみでしか見られない重"
+"要なインフラストラクチャのブートストラップを可能とし、 Java SE 環境で Seam を"
+"簡単に実行できるようにしました。"
+
+#. Tag: para
+#: Concepts.xml:347
+#, no-c-format
+msgid ""
+"For example, you can run your EJB3 components in Tomcat or an integration "
+"test suite just by installing the built-in component <literal>org.jboss.seam."
+"core.ejb</literal>, which automatically bootstraps the JBoss Embeddable EJB3 "
+"container and deploys your EJB components."
+msgstr ""
+"例えば、組み込みコンポーネント <literal>org.jboss.seam.core.ejb</literal> を"
+"インストールすることによって Tomcat あるいはテストスイート中で EJB3 コンポー"
+"ネントを稼動させることが可能です。 それは JBoss 組み込み EJB3 コンテナ (Boss "
+"Embeddable EJB3 container) を自動的にブートストラップし、EJBコンポーネントを"
+"デプロイします。"
+
+#. Tag: para
+#: Concepts.xml:350
+#, no-c-format
+msgid ""
+"Or, if you&#39;re not quite ready for the Brave New World of EJB 3.0, you "
+"can write a Seam application that uses only JavaBean components, together "
+"with Hibernate3 for persistence, by installing a built-in component that "
+"manages a Hibernate <literal>SessionFactory</literal>. When using Hibernate "
+"outside of a J2EE environment, you will also probably need a JTA transaction "
+"manager and JNDI server, which are available via the built-in component "
+"<literal>org.jboss.seam.core.microcontainer</literal>. This lets you use the "
+"bulletproof JTA/JCA pooling datasource from JBoss application server in an "
+"SE environment like Tomcat!"
+msgstr ""
+"あるいは、もしあなたが EJB 3.0 のすばらしい新世界の用意ができていないなら"
+"ば、 組み込みコンポーネント <literal>org.jboss.seam.core.hibernate</literal> "
+"をインストールすることによって、 永続性のための Hibernate3 とともに JavaBean "
+"コンポーネントだけを使う Seam アプリケーションを書くことが可能です。 J2EE 環"
+"境の外で Hibernate を使う時には、 たぶん、JTA トランザクション管理と JNDI "
+"サーバが必要でしょう。 それは組み込みコンポーネント <literal>org.jboss.seam."
+"core.microcontainer</literal> を通して使用可能です。 これはにより、 Tomcat の"
+"ような SE 環境中で JBoss アプリケーションサーバ からの堅牢な (bulletproof) "
+"JTA/JCA プーリングデータソースを利用することが可能になります。"
+
+#. Tag: title
+#: Concepts.xml:353
+#, no-c-format
+msgid "Bijection"
+msgstr "バイジェクション"
+
+#. Tag: para
+#: Concepts.xml:354
+#, no-c-format
+msgid ""
+"<emphasis>Dependency injection</emphasis> or <emphasis>inversion of control</"
+"emphasis> is by now a familiar concept to most Java developers. Dependency "
+"injection allows a component to obtain a reference to another component by "
+"having the container \"inject\" the other component to a setter method or "
+"instance variable. In all dependency injection implementations that we have "
+"seen, injection occurs when the component is constructed, and the reference "
+"does not subsequently change for the lifetime of the component instance. For "
+"stateless components, this is reasonable. From the point of view of a "
+"client, all instances of a particular stateless component are "
+"interchangeable. On the other hand, Seam emphasizes the use of stateful "
+"components. So traditional dependency injection is no longer a very useful "
+"construct. Seam introduces the notion of <emphasis>bijection</emphasis> as a "
+"generalization of injection. In contrast to injection, bijection is:"
+msgstr ""
+"<emphasis>依存性の注入</emphasis> あるいは <emphasis>制御の逆転</emphasis> は"
+"今ではもう大多数の Java 開発者に親しい概念です。 依存性の注入はあるコンポーネ"
+"ントが他のコンポーネントの参照を可能にします。 それはコンテナに setter メソッ"
+"ドあるいはインスタンス変数に他のコンポーネントを「インジェクト (注入)」させ"
+"ることで実現します。 これまで見てきたすべての依存性の注入の実装では、 イン"
+"ジェクションはコンポーネントが生成されたときに起こり、 その後、参照はコンポー"
+"ネントのライフサイクルの間で変化しません。 ステートレスコンポーネントにおい"
+"て、これは理にかなっています。 クライアントの観点から、特定のステートレスなコ"
+"ンポーネントのすべてのインスタンスは交換可能です。 一方、Seamはステートフルな"
+"コンポーネントの使用に重点を置いています。 従って、典型的な依存性の注入はもは"
+"やあまり有用な構造ではありません。 Seam はインジェクションの一般化として、"
+"<emphasis>バイジェクション (bijection) </emphasis>の概念を導入しました。 イン"
+"ジェクションと対照すると、バイジェクションは以下の通りです。"
+
+#. Tag: para
+#: Concepts.xml:359
+#, no-c-format
+msgid ""
+"<emphasis>contextual</emphasis> - bijection is used to assemble stateful "
+"components from various different contexts (a component from a \"wider\" "
+"context may even have a reference to a component from a \"narrower\" context)"
+msgstr ""
+"<emphasis>コンテキスト依存</emphasis> - バイジェクションはさまざまな異なるコ"
+"ンテキストからステートフルなコンポーネントを組み立てるために使用されます。 "
+"(「より広い (wider) 」コンテキストからのコンポーネントは「より狭い  "
+"(narrow) 」コンテキストからの参照も持つかもしれません。)"
+
+#. Tag: para
+#: Concepts.xml:364
+#, no-c-format
+msgid ""
+"<emphasis>bidirectional</emphasis> - values are injected from context "
+"variables into attributes of the component being invoked, and also "
+"<emphasis>outjected</emphasis> from the component attributes back out to the "
+"context, allowing the component being invoked to manipulate the values of "
+"contextual variables simply by setting its own instance variables"
+msgstr ""
+"値はコンテキスト変数から呼ばれるコンポーネントの属性にインジェクトされ、 ま"
+"た、コンポーネント属性からコンテキストにアウトジェクト (outjected) され戻され"
+"ます。 インスタンス変数そのものを設定することで、呼ばれたコンポーネントが簡単"
+"にコンテキスト変数の値を操作することを可能にします。"
+
+#. Tag: para
+#: Concepts.xml:369
+#, no-c-format
+msgid ""
+"<emphasis>dynamic</emphasis> - since the value of contextual variables "
+"changes over time, and since Seam components are stateful, bijection takes "
+"place every time a component is invoked"
+msgstr ""
+"<emphasis>動的 (dynamic) </emphasis> - バイジェクションはコンポーネントが呼ば"
+"れるたびに発生します。 なぜなら、コンテキストの値は時間経過で変化し、 Seam コ"
+"ンポーネントがステートフルだからです。"
+
+#. Tag: para
+#: Concepts.xml:374
+#, no-c-format
+msgid ""
+"In essence, bijection lets you alias a context variable to a component "
+"instance variable, by specifying that the value of the instance variable is "
+"injected, outjected, or both. Of course, we use annotations to enable "
+"bijection."
+msgstr ""
+"本質的に、インスタンス変数の値をインジェクト、アウトジェクト、両方により指定"
+"することで、 バイジェクションはコンテキスト変数をコンポーネントのインスタンス"
+"変数にエイリアスを可能にします もちろん、バイジェクションを可能にするためにア"
+"ノテーションが使用されています。"
+
+#. Tag: para
+#: Concepts.xml:377
+#, no-c-format
+msgid ""
+"The <literal>@In</literal> annotation specifies that a value should be "
+"injected, either into an instance variable:"
+msgstr ""
+"<literal>@In</literal> アノテーションは値がインスタンス変数にインジェクトされ"
+"ることを指定しています。"
+
+#. Tag: programlisting
+#: Concepts.xml:380
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In User user;\n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:381
+#, no-c-format
+msgid "or into a setter method:"
+msgstr "あるいは、setter メソッド"
+
+#. Tag: programlisting
+#: Concepts.xml:384
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @In\n"
+"    public void setUser(User user) {\n"
+"        this.user=user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @In\n"
+"    public void setUser(User user) {\n"
+"        this.user=user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:385
+#, no-c-format
+msgid ""
+"By default, Seam will do a priority search of all contexts, using the name "
+"of the property or instance variable that is being injected. You may wish to "
+"specify the context variable name explicitly, using, for example, "
+"<literal>@In(\"currentUser\")</literal>."
+msgstr ""
+"デフォルトでは、 Seam はプロパティ名あるいはインジェクトされたインスタンス変"
+"数名を使用して、 すべてのコンテキストの優先順位検索を行います。 例えば、 "
+"<literal>@In(\"currentUser\")</literal>を使用することで明示的にコンテキスト変"
+"数を指定することもできます。"
+
+#. Tag: para
+#: Concepts.xml:388
+#, no-c-format
+msgid ""
+"If you want Seam to create an instance of the component when there is no "
+"existing component instance bound to the named context variable, you should "
+"specify <literal>@In(create=true)</literal>. If the value is optional (it "
+"can be null), specify <literal>@In(required=false)</literal>."
+msgstr ""
+"指定されたコンテキスト変数と関連した既存のコンポーネントインスタンスが存在し"
+"ないときに、 Seam にコンポーネントのインスタンスの生成を望むならば、 "
+"<literal>@In(create=true)</literal> を指定する必要があります。 値がオプション"
+"で (null でも可能) であれば、<literal>@In(required=false)</literal> を指定し"
+"てください。"
+
+#. Tag: para
+#: Concepts.xml:391
+#, no-c-format
+msgid ""
+"For some components, it can be repetitive to have to specify <literal>@In"
+"(create=true)</literal> everywhere they are used. In such cases, you can "
+"annotate the component <literal>@AutoCreate</literal>, and then it will "
+"always be created, whenever needed, even without the explicit use of "
+"<literal>create=true</literal>."
+msgstr ""
+"いくつかのコンポーネントでは、 それらが使用されるところではどこでも繰り返し "
+"<literal>@In(create=true)</literal> を指定する必要があるかもしれません。 この"
+"ような場合、 コンポーネントに <literal>@AutoCreate</literal> アノテーションを"
+"付けることが可能で、 <literal>create=true</literal> を明示的に使用しなくて"
+"も、 必要なとき常に作成されるようになります。"
+
+#. Tag: para
+#: Concepts.xml:394
+#, no-c-format
+msgid "You can even inject the value of an expression:"
+msgstr "式の値をインジェクトすることも可能です。"
+
+#. Tag: programlisting
+#: Concepts.xml:397
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In(\"#{user.username}\") String username;\n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In(\"#{user.username}\") String username;\n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:398
+#, no-c-format
+msgid ""
+"(There is much more information about component lifecycle and injection in "
+"the next chapter.)"
+msgstr ""
+"(コンポーネントライフサイクルとインジェクションについては次章により多くの情報"
+"があります。)"
+
+#. Tag: para
+#: Concepts.xml:401
+#, no-c-format
+msgid ""
+"The <literal>@Out</literal> annotation specifies that an attribute should be "
+"outjected, either from an instance variable:"
+msgstr ""
+"<literal>@Out</literal>アノテーションは、属性がインスタンス変数からもアウト"
+"ジェクトされるべきことを指定します。"
+
+#. Tag: programlisting
+#: Concepts.xml:404
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @Out User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @Out User user;\n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:405
+#, no-c-format
+msgid "or from a getter method:"
+msgstr "あるいは getter メソッドから"
+
+#. Tag: programlisting
+#: Concepts.xml:408
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @Out\n"
+"    public User getUser() {\n"
+"        return user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @Out\n"
+"    public User getUser() {\n"
+"        return user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:409
+#, no-c-format
+msgid "An attribute may be both injected and outjected:"
+msgstr "属性値はインジェクトされることもアウトジェクトされることも可能です。"
+
+#. Tag: programlisting
+#: Concepts.xml:412
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In @Out User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In @Out User user;\n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:413
+#, no-c-format
+msgid "<para>or:</para>"
+msgstr "<para>または、</para>"
+
+#. Tag: programlisting
+#: Concepts.xml:416
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @In\n"
+"    public void setUser(User user) {\n"
+"        this.user=user;\n"
+"    }\n"
+"    \n"
+"    @Out\n"
+"    public User getUser() {\n"
+"        return user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @In\n"
+"    public void setUser(User user) {\n"
+"        this.user=user;\n"
+"    }\n"
+"    \n"
+"    @Out\n"
+"    public User getUser() {\n"
+"        return user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+
+#. Tag: title
+#: Concepts.xml:417
+#, no-c-format
+msgid "Lifecycle methods"
+msgstr "ライフサイクルメソッド"
+
+#. Tag: para
+#: Concepts.xml:418
+#, no-c-format
+msgid ""
+"Session bean and entity bean Seam components support all the usual EJB 3.0 "
+"lifecycle callback (<literal>@PostConstruct</literal>, <literal>@PreDestroy</"
+"literal>, etc). Seam extends all of these callbacks except "
+"<literal>@PreDestroy</literal> to JavaBean components. But Seam also defines "
+"its own component lifecycle callbacks."
+msgstr ""
+"セッション Bean と エンティティ Bean の Seam コンポーネントは、 すべての "
+"EJB3.0 ライフサイクルコールバックメソッドをサポートします "
+"(<literal>@PostConstruct</literal>、<literal>@PreDestroy</literal>、など)。 "
+"Seam は <literal>@PreDestroy</literal> を除くこれらすべてのコールバックメソッ"
+"ドを JavaBean コンポーネントに拡張しています。 しかし、Seam はそれ自身のコン"
+"ポーネントライフサイクルメソッドも定義します。"
+
+#. Tag: para
+#: Concepts.xml:421
+#, no-c-format
+msgid ""
+"The <literal>@Create</literal> method is called every time Seam instantiates "
+"a component. Unlike the <literal>@PostConstruct</literal> method, this "
+"method is called after the component is fully constructed by the EJB "
+"container, and has access to all the usual Seam functionality (bijection, "
+"etc). Components may define only one <literal>@Create</literal> method."
+msgstr ""
+"<literal>@Create</literal> メソッドは、Seam がコンポーネントをインスタンス化"
+"するときはいつでも、 呼び出されます。 <literal>@PostConstruct</literal> メ"
+"ソッドと違って、 このメソッドはコンポーネントが EJB コンテナによって作成され"
+"た後に呼び出されます。 そして、一般的な Seam 機能のすべてにアクセスできます "
+"(バイインジェクションなど)。 コンポーネントは 1 つの <literal>@Create</"
+"literal> メソッドしか定義できません。"
+
+#. Tag: para
+#: Concepts.xml:424
+#, no-c-format
+msgid ""
+"The <literal>@Destroy</literal> method is called when the context that the "
+"Seam component is bound to ends. Components may define only one "
+"<literal>@Destroy</literal> method. Stateful session bean components "
+"<emphasis>must</emphasis> define a method annotated <literal>@Destroy "
+"@Remove</literal>."
+msgstr ""
+"<literal>@Destroy</literal> メソッドは Seam コンポーネントがバインドしている"
+"コンテキストが終了するときに呼び出されます。 コンポーネントは唯一の "
+"<literal>@Destroy</literal> メソッドを定義できます。 ステートフルセッション "
+"Bean コンポーネントは、 <literal>@Destroy @Remove</literal> アノテーションを"
+"付けられたメソッドを定義することが <emphasis>必須</emphasis> です。"
+
+#. Tag: para
+#: Concepts.xml:427
+#, no-c-format
+msgid ""
+"Finally, a related annotation is the <literal>@Startup</literal> annotation, "
+"which may be applied to any application or session scoped component. The "
+"<literal>@Startup</literal> annotation tells Seam to instantiate the "
+"component immediately, when the context begins, instead of waiting until it "
+"is first referenced by a client. It is possible to control the order of "
+"instantiation of startup components by specifying <literal>@Startup(depends="
+"{....})</literal>."
+msgstr ""
+"最後に、関連するアノテーションは <literal>@Startup</literal> アノテーションで"
+"す。 それはアプリケーションやセッションスコープコンポーネントで利用可能で"
+"す。 <literal>@Startup</literal> アノテーションは、 コンテキストが開始された"
+"ときにクライアントによる初めての参照を待つのではなく、 Seam に即座にコンポー"
+"ネントをインスタンス化させさせます。 <literal>@Startup(depends={....})</"
+"literal> を指定することで、 スタートアップコンポーネントのインスタンス化する"
+"順序の制御が可能です。"
+
+#. Tag: title
+#: Concepts.xml:430
+#, no-c-format
+msgid "Conditional installation"
+msgstr "条件付きインストール"
+
+#. Tag: para
+#: Concepts.xml:431
+#, no-c-format
+msgid ""
+"The <literal>@Install</literal> annotation lets you control conditional "
+"installation of components that are required in some deployment scenarios "
+"and not in others. This is useful if:"
+msgstr ""
+"<literal>@Install</literal> アノテーションは、 特定のデプロイメントシナリオで"
+"は必須で別の場合はそうでないようなコンポーネントの条件付インストレーションを"
+"可能にします。 これは以下の場合に便利です。"
+
+#. Tag: para
+#: Concepts.xml:436
+#, no-c-format
+msgid "You want to mock out some infrastructural component in tests."
+msgstr "テストで特定のインフラストラクチャのコンポーネントをモックとしたい。"
+
+#. Tag: para
+#: Concepts.xml:441
+#, no-c-format
+msgid ""
+"You want change the implementation of a component in certain deployment "
+"scenarios."
+msgstr "特定のデプロイメントシナリオでコンポーネント実装を変更したい。"
+
+#. Tag: para
+#: Concepts.xml:446
+#, no-c-format
+msgid ""
+"You want to install some components only if their dependencies are available "
+"(useful for framework authors)."
+msgstr ""
+"依存性が有効な場合だけに特定のコンポーネントをインストールしたい (フレーム"
+"ワークの作者に便利)。"
+
+#. Tag: para
+#: Concepts.xml:451
+#, no-c-format
+msgid ""
+"<literal>@Install</literal> works by letting you specify "
+"<emphasis>precedence</emphasis> and <emphasis>dependencies</emphasis>."
+msgstr ""
+"<literal>@Install</literal> は works by letting you specify <emphasis>優先順"
+"位</emphasis> と <emphasis>依存性</emphasis> を指定することで動作します。"
+
+#. Tag: para
+#: Concepts.xml:454
+#, no-c-format
+msgid ""
+"The precedence of a component is a number that Seam uses to decide which "
+"component to install when there are multiple classes with the same component "
+"name in the classpath. Seam will choose the component with the higher "
+"precendence. There are some predefined precedence values (in ascending "
+"order):"
+msgstr ""
+"コンポーネントの優先順位は、 クラスパス中に同じコンポーネント名を持つ複数のク"
+"ラスがある場合に、 インストールすべきコンポーネントを決定するために Seam が使"
+"用する番号です。 Seam はより優先湯順位が高いコンポーネントを選択します。 あら"
+"かじめ決められた優先順位の値があります (昇順)。"
+
+#. Tag: para
+#: Concepts.xml:459
+#, no-c-format
+msgid ""
+"<literal>BUILT_IN</literal> &mdash; the lowest precedece components are the "
+"components built in to Seam."
+msgstr ""
+"<literal>BUILT_IN</literal> &mdash; Seam に組み込まれた最も優先順位が低いコン"
+"ポーネントです。"
+
+#. Tag: para
+#: Concepts.xml:464
+#, no-c-format
+msgid ""
+"<literal>FRAMEWORK</literal> &mdash; components defined by third-party "
+"frameworks may override built-in components, but are overridden by "
+"application components."
+msgstr ""
+"<literal>FRAMEWORK</literal> &mdash; サードパーティフレームワークによって定義"
+"されたコンポーネントは組み込みコンポーネントをオーバーライドする可能性があり"
+"ますが、 アプリケーションによってオーバーライドされます。"
+
+#. Tag: para
+#: Concepts.xml:469
+#, no-c-format
+msgid ""
+"<literal>APPLICATION</literal> &mdash; the default precedence. This is "
+"appropriate for most application components."
+msgstr ""
+"<literal>APPLICATION</literal> &mdash; デフォルト優先順位、 これはほとんどの"
+"アプリケーションコンポーネントにおいて適切です。"
+
+#. Tag: para
+#: Concepts.xml:474
+#, no-c-format
+msgid ""
+"<literal>DEPLOYMENT</literal> &mdash; for application components which are "
+"deployment-specific."
+msgstr ""
+"<literal>DEPLOYMENT</literal> &mdash; デプロイメント固有のアプリケーションコ"
+"ンポーネント用です。"
+
+#. Tag: para
+#: Concepts.xml:479
+#, no-c-format
+msgid "<literal>MOCK</literal> &mdash; for mock objects used in testing."
+msgstr "<literal>MOCK</literal> &mdash; テストに使用されるモックオブジェクト用です。"
+
+#. Tag: para
+#: Concepts.xml:484
+#, no-c-format
+msgid ""
+"Suppose we have a component named <literal>messageSender</literal> that "
+"talks to a JMS queue."
+msgstr ""
+"JMS キューと対話する <literal>messageSender</literal> という名前のコンポーネ"
+"ントがあるとすると、"
+
+#. Tag: programlisting
+#: Concepts.xml:487
+#, no-c-format
+msgid ""
+"@Name(\"messageSender\") \n"
+"public class MessageSender {\n"
+"    public void sendMessage() {\n"
+"        //do something with JMS\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"messageSender\") \n"
+"public class MessageSender {\n"
+"    public void sendMessage() {\n"
+"        //do something with JMS\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:488
+#, no-c-format
+msgid ""
+"In our unit tests, we don&#39;t have a JMS queue available, so we would like "
+"to stub out this method. We&#39;ll create a <emphasis>mock</emphasis> "
+"component that exists in the classpath when unit tests are running, but is "
+"never deployed with the application:"
+msgstr ""
+"ユニットテストで、 有効なJMS キューがないので、このメソッドを消してしまいたく"
+"なります。 ユニットテストが実行されるときにクラスパスに存在するけれどアプリ"
+"ケーションではデプロイされない <emphasis>mock</emphasis> コンポーネントを作成"
+"します。"
+
+#. Tag: programlisting
+#: Concepts.xml:491
+#, no-c-format
+msgid ""
+"@Name(\"messageSender\") \n"
+"@Install(precedence=MOCK)\n"
+"public class MockMessageSender extends MessageSender {\n"
+"    public void sendMessage() {\n"
+"        //do nothing!\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"messageSender\") \n"
+"@Install(precedence=MOCK)\n"
+"public class MockMessageSender extends MessageSender {\n"
+"    public void sendMessage() {\n"
+"        //do nothing!\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:492
+#, no-c-format
+msgid ""
+"The <literal>precedence</literal> helps Seam decide which version to use "
+"when it finds both components in the classpath."
+msgstr ""
+"<literal>優先順位</literal> はクラスパスで両方のコンポーネントを発見したと"
+"き、 Seam がどちらのバージョンを使用するかを助けます。"
+
+#. Tag: para
+#: Concepts.xml:495
+#, no-c-format
+msgid ""
+"This is nice if we are able to control exactly which classes are in the "
+"classpath. But if I&#39;m writing a reusable framework with many "
+"dependecies, I don&#39;t want to have to break that framework across many "
+"jars. I want to be able to decide which components to install depending upon "
+"what other components are installed, and upon what classes are available in "
+"the classpath. The <literal>@Install</literal> annotation also controls this "
+"functionality. Seam uses this mechanism internally to enable conditional "
+"installation of many of the built-in components. However, you probably "
+"won&#39;t need to use it in your application."
+msgstr ""
+"クラスパスにある複数のクラスを正確に制御できるならば、 これはすばらしいことで"
+"す。 しかし、 多くの依存性を持つ再利用可能なフレームワークを記述している場"
+"合、 多くの Jar 全体にそのフレームワークをブレークさせたいとは思わないでしょ"
+"う。 他にどのようなコンポーネントがインストールされているか、 クラスパス中に"
+"どんなクラスが使用可能であるかに応じて、 インストールすべきコンポーネントを決"
+"める方法の方が好まれるはずです。 <literal>@Install</literal> アノテーションは"
+"この機能も制御しています。 Seam は多くの組み込みコンポーネントの条件付きイン"
+"ストールを実現するために内部でこのメカニズムを使用します。 しかし、 ご使用の"
+"アプリケーションでは恐らく使用する必要がないでしょう。"
+
+#. Tag: title
+#: Concepts.xml:498
+#, no-c-format
+msgid "Logging"
+msgstr "ロギング"
+
+#. Tag: para
+#: Concepts.xml:499
+#, no-c-format
+msgid "Who is not totally fed up with seeing noisy code like this?"
+msgstr "こんなうっとうしいコードを見るのに飽き飽きしているのは誰ですか?"
+
+#. Tag: programlisting
+#: Concepts.xml:502
+#, no-c-format
+msgid ""
+"private static final Log log = LogFactory.getLog(CreateOrderAction.class);\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    if ( log.isDebugEnabled() ) {\n"
+"        log.debug(\"Creating new order for user: \" + user.username() + \n"
+"            \" product: \" + product.name() \n"
+"            + \" quantity: \" + quantity);\n"
+"    }\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+"private static final Log log = LogFactory.getLog(CreateOrderAction.class);\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    if ( log.isDebugEnabled() ) {\n"
+"        log.debug(\"Creating new order for user: \" + user.username() + \n"
+"            \" product: \" + product.name() \n"
+"            + \" quantity: \" + quantity);\n"
+"    }\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:503
+#, no-c-format
+msgid ""
+"It is difficult to imagine how the code for a simple log message could "
+"possibly be more verbose. There is more lines of code tied up in logging "
+"than in the actual business logic! I remain totally astonished that the Java "
+"community has not come up with anything better in 10 years."
+msgstr ""
+"簡単なログメッセージのためのコードをどうしてこんなに冗長にすることができるの"
+"か想像するのは困難です。 実際のビジネスロジックに関連するコード行よりロギング"
+"に関連する方がより多くあります。 Java コミュニティが 10 年の間もっと良いもの"
+"を考え出せなかったことは本当に驚きです。"
+
+#. Tag: para
+#: Concepts.xml:506
+#, no-c-format
+msgid "Seam provides a logging API that simplifies this code significantly:"
+msgstr "Seam はたくさんのコードを簡素化するロギング API を提供します。"
+
+#. Tag: programlisting
+#: Concepts.xml:509
+#, no-c-format
+msgid ""
+"@Logger private Log log;\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    log.debug(\"Creating new order for user: #0 product: #1 quantity: #2\", "
+"user.username(), \n"
+"      product.name(), quantity);\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+"@Logger private Log log;\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    log.debug(\"Creating new order for user: #0 product: #1 quantity: #2\", "
+"user.username(), \n"
+"      product.name(), quantity);\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:510
+#, no-c-format
+msgid ""
+"It doesn&#39;t matter if you declare the <literal>log</literal> variable "
+"static or not&mdash;it will work either way, except for entity bean "
+"components which require the <literal>log</literal> variable to be static."
+msgstr ""
+"<literal>ログ</literal> 変数が静的であると宣言するかどうかは問題ではありませ"
+"ん &mdash;  <literal>ログ</literal> 変数が静的である必要があるエンティティ "
+"Bean コンポーネント以外なら、 どちらの方法でもうまくいくでしょう。"
+
+#. Tag: para
+#: Concepts.xml:513
+#, no-c-format
+msgid ""
+"Note that we don&#39;t need the noisy <literal>if ( log.isDebugEnabled() )</"
+"literal> guard, since string concatenation happens <emphasis>inside</"
+"emphasis> the <literal>debug()</literal> method. Note also that we don&#39;t "
+"usually need to specify the log category explicitly, since Seam knows what "
+"component it is injecting the <literal>Log</literal> into."
+msgstr ""
+"ストリング連結は、<literal>debug( </literal> メソッドの<emphasis>内部</"
+"emphasis>で起こるため、 うっとうしい <literal>if ( log.isDebugEnabled() )</"
+"literal> による監視は不要であることに留意してください。 Seam はどのコンポーネ"
+"ントに <literal>Log</literal> をインジェクトしたかを知っているため、 通常、ロ"
+"グカテゴリを明示的に指定する必要ないことも留意してください。"
+
+#. Tag: para
+#: Concepts.xml:516
+#, no-c-format
+msgid ""
+"If <literal>User</literal> and <literal>Product</literal> are Seam "
+"components available in the current contexts, it gets even better:"
+msgstr ""
+"<literal>User</literal> と <literal>Product</literal> が、 現在のコンテキスト"
+"で有効な Seam コンポーネントの場合、それはさらに良くなります。"
+
+#. Tag: programlisting
+#: Concepts.xml:519
+#, no-c-format
+msgid ""
+"@Logger private Log log;\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    log.debug(\"Creating new order for user: #{user.username} product: #"
+"{product.name} \n"
+"      quantity: #0\", quantity);\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+"@Logger private Log log;\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    log.debug(\"Creating new order for user: #{user.username} product: #"
+"{product.name} \n"
+"      quantity: #0\", quantity);\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:520
+#, no-c-format
+msgid ""
+"Seam logging automagically chooses whether to send output to log4j or JDK "
+"logging. If log4j is in the classpath, Seam with use it. If it is not, Seam "
+"will use JDK logging."
+msgstr ""
+"Seam ロギングは自動的に log4j あるいは JDK logging に出力を送付するかを選択し"
+"ます。 log4j がクラスパスに通っていれば、Seam はそれを使用します。 そうでなけ"
+"れば、Seam は JDK logging を使用します。"
+
+#. Tag: title
+#: Concepts.xml:523
+#, no-c-format
+msgid "The <literal>Mutable</literal> interface and <literal>@ReadOnly</literal>"
+msgstr "<literal>Mutable</literal> インタフェースと <literal>@ReadOnly</literal>"
+
+#. Tag: para
+#: Concepts.xml:524
+#, no-c-format
+msgid ""
+"Many application servers feature an amazingly broken implementation of "
+"<literal>HttpSession</literal> clustering, where changes to the state of "
+"mutable objects bound to the session are only replicated when the "
+"application calls <literal>setAttribute()</literal> explicitly. This is a "
+"source of bugs that can not effectively be tested for at development time, "
+"since they will only manifest when failover occurs. Furthermore, the actual "
+"replication message contains the entire serialized object graph bound to the "
+"session attribute, which is inefficient."
+msgstr ""
+"アプリケーションが明示的に <literal>setAttribute()</literal> を呼び出すととき"
+"に、 セッションにバインドした可変オブジェクトの状態変化が複製されるだけなの"
+"で、 多くのアプリケーションサーバの機能は驚くほどいい加減な "
+"<literal>HttpSession</literal> クラスタリングの実装を持っています。 これは"
+"フェイルオーバが発生するときにだけに現れるので、 効果的に開発時間でテストされ"
+"ることができないバグの原因です。 さらに実際の複製メッセージはセッション属性と"
+"バインドしたシリアライズされたオブジェクトグラフ全体を含んでいます。 そして、"
+"それは非効率です。"
+
+#. Tag: para
+#: Concepts.xml:527
+#, no-c-format
+msgid ""
+"Of course, EJB stateful session beans must perform automatic dirty checking "
+"and replication of mutable state and a sophisticated EJB container can "
+"introduce optimizations such as attribute-level replication. Unfortunately, "
+"not all Seam users have the good fortune to be working in an environment "
+"that supports EJB 3.0. So, for session and conversation scoped JavaBean and "
+"entity bean components, Seam provides an extra layer of cluster-safe state "
+"management over the top of the web container session clustering."
+msgstr ""
+"もちろん、EJB ステートフルセッション Bean は自動的にダーティなチェックを実行"
+"が必要であり、 可変状態の複製と洗練された EJB コンテナは属性レベルの複製など"
+"最適化が行うことが可能です。 あいにく、すべての Seam ユーザが EJB 3.0 をサ"
+"ポートする恵まれた環境で作業をしているわけではありません。 そこで、セッション"
+"と対話スコープの JavaBean とエンティティ Bean コンポーネントのために、 Seam "
+"は Web コンテナセッションクラスタリングの上でクラスタセーフな状態管理の特別な"
+"レイヤを提供します。"
+
+#. Tag: para
+#: Concepts.xml:530
+#, no-c-format
+msgid ""
+"For session or conversation scoped JavaBean components, Seam automatically "
+"forces replication to occur by calling <literal>setAttribute()</literal> "
+"once in every request that the component was invoked by the application. Of "
+"course, this strategy is inefficient for read-mostly components. You can "
+"control this behavior by implementing the <literal>org.jboss.seam.core."
+"Mutable</literal> interface, or by extending <literal>org.jboss.seam.core."
+"AbstractMutable</literal>, and writing your own dirty-checking logic inside "
+"the component. For example,"
+msgstr ""
+"セッションや対話スコープの JavaBean コンポーネントのために、Seam は、 コン"
+"ポーネントがアプリケーションにより呼び出されるリクエストの毎に、 "
+"<literal>setAttribute()</literal> を呼ぶことにより自動的に複製を命じます。 も"
+"ちろん、このストラテジは読み取りばかりするコンポーネントでは不十分です。 この"
+"振る舞いは、 <literal>org.jboss.seam.core.Mutable</literal> インタフェースを"
+"実装するか、 <literal>org.jboss.seam.core.AbstractMutable</literal> を拡張す"
+"るか、 あるいは、コンポーネント中に独自のダーティチェックのロジックを記述する"
+"かにより制御可能です。 以下に例を示します。"
+
+#. Tag: programlisting
+#: Concepts.xml:533
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class Account extends AbstractMutable\n"
+"{\n"
+"    private BigDecimal balance;\n"
+"    \n"
+"    public void setBalance(BigDecimal balance)\n"
+"    {\n"
+"        setDirty(this.balance, balance);\n"
+"        this.balance = balance;\n"
+"    }\n"
+"    \n"
+"    public BigDecimal getBalance()\n"
+"    {\n"
+"        return balance;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+"@Name(\"account\")\n"
+"public class Account extends AbstractMutable\n"
+"{\n"
+"    private BigDecimal balance;\n"
+"    \n"
+"    public void setBalance(BigDecimal balance)\n"
+"    {\n"
+"        setDirty(this.balance, balance);\n"
+"        this.balance = balance;\n"
+"    }\n"
+"    \n"
+"    public BigDecimal getBalance()\n"
+"    {\n"
+"        return balance;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:534
+#, no-c-format
+msgid ""
+"Or, you can use the <literal>@ReadOnly</literal> annotation to achieve a "
+"similar effect:"
+msgstr ""
+"あるいは、同様の効果を得るために <literal>@ReadOnly</literal> アノテーション"
+"の使用も可能です。"
+
+#. Tag: programlisting
+#: Concepts.xml:537
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class Account\n"
+"{\n"
+"    private BigDecimal balance;\n"
+"    \n"
+"    public void setBalance(BigDecimal balance)\n"
+"    {\n"
+"        this.balance = balance;\n"
+"    }\n"
+"    \n"
+"    @ReadOnly\n"
+"    public BigDecimal getBalance()\n"
+"    {\n"
+"        return balance;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+"@Name(\"account\")\n"
+"public class Account\n"
+"{\n"
+"    private BigDecimal balance;\n"
+"    \n"
+"    public void setBalance(BigDecimal balance)\n"
+"    {\n"
+"        this.balance = balance;\n"
+"    }\n"
+"    \n"
+"    @ReadOnly\n"
+"    public BigDecimal getBalance()\n"
+"    {\n"
+"        return balance;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:538
+#, no-c-format
+msgid ""
+"For session or conversation scoped entity bean components, Seam "
+"automatically forces replication to occur by calling <literal>setAttribute()"
+"</literal> once in every request, <emphasis>unless the (conversation-scoped) "
+"entity is currently associated with a Seam-managed persistence context, in "
+"which case no replication is needed</emphasis>. This strategy is not "
+"necessarily efficient, so session or conversation scope entity beans should "
+"be used with care. You can always write a stateful session bean or JavaBean "
+"component to \"manage\" the entity bean instance. For example,"
+msgstr ""
+"セッションや対話スコープのエンティティ Bean コンポーネントの場合、 Seam は "
+"<emphasis>複製が不要な場合、 ( 対話スコープの) エンティティが現在の Seam 管理"
+"の永続性コンテキストに関連付けられている限り</emphasis>、 リクエスト毎に "
+"<literal>setAttribute()</literal> を呼ぶことにより自動的に複製の作成を強制し"
+"ます。 このストラテジは必ずしも効率的ではないので、 セッションや対話スコープ"
+"エンティティ Bean は注意して使用してください。 エンティティ Bean インスタンス"
+"を「管理」するために、 ステートフルセッション Bean や JavaBean をいつでも記述"
+"することができます。 以下に例を示します。"
+
+#. Tag: programlisting
+#: Concepts.xml:541
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"account\")\n"
+"public class AccountManager extends AbstractMutable\n"
+"{\n"
+"    private Account account; // an entity bean\n"
+"    \n"
+"    @Unwrap\n"
+"    public void getAccount()\n"
+"    {\n"
+"        return account;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+"@Stateful\n"
+"@Name(\"account\")\n"
+"public class AccountManager extends AbstractMutable\n"
+"{\n"
+"    private Account account; // an entity bean\n"
+"    \n"
+"    @Unwrap\n"
+"    public void getAccount()\n"
+"    {\n"
+"        return account;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:542
+#, no-c-format
+msgid ""
+"Note that the <literal>EntityHome</literal> class in the Seam Application "
+"Framework provides a great example of this pattern."
+msgstr ""
+"Seam アプリケーションフレームワークにおいて、 <literal>EntityHome</literal> "
+"クラスはこのパターンの優れたサンプルを提供しすることに留意してください。"
+
+#. Tag: title
+#: Concepts.xml:545
+#, no-c-format
+msgid "Factory and manager components"
+msgstr "ファクトリと管理コンポーネント"
+
+#. Tag: para
+#: Concepts.xml:546
+#, no-c-format
+msgid ""
+"We often need to work with objects that are not Seam components. But we "
+"still want to be able to inject them into our components using <literal>@In</"
+"literal> and use them in value and method binding expressions, etc. "
+"Sometimes, we even need to tie them into the Seam context lifecycle "
+"(<literal>@Destroy</literal>, for example). So the Seam contexts can contain "
+"objects which are not Seam components, and Seam provides a couple of nice "
+"features that make it easier to work with non-component objects bound to "
+"contexts."
+msgstr ""
+"Seam コンポーネントではないオブジェクトと連携することもしばしばあります。 で"
+"も、やはり <literal>@In</literal> を使用して Seam コンポーネントにインジェク"
+"トし、 値やメソッドバインディング式などでそれらを使いたいと思うことがありま"
+"す。 時には、それを Seam コンテキストのライフサイクルに関連付ける必要さえあり"
+"ます (例えば <literal>@Destroy</literal>)。 そこで、Seam コンテキストは Seam "
+"ではないいオブジェクトを含むことが可能で、 Seam は、コンテキストにバインドす"
+"る非コンポーネントと連携することを容易にする 2、3 の優れた機能を提供します。"
+
+#. Tag: para
+#: Concepts.xml:549
+#, no-c-format
+msgid ""
+"The <emphasis>factory component pattern</emphasis> lets a Seam component act "
+"as the instantiator for a non-component object. A <emphasis>factory method</"
+"emphasis> will be called when a context variable is referenced but has no "
+"value bound to it. We define factory methods using the <literal>@Factory</"
+"literal> annotation. The factory method binds a value to the context "
+"variable, and determines the scope of the bound value. There are two styles "
+"of factory method. The first style returns a value, which is bound to the "
+"context by Seam:"
+msgstr ""
+"<emphasis>ファクトリコンポーネントパターン</emphasis> は、 Seam コンポーネン"
+"トを非コンポーネントオブジェクト用のインスタンス化する機能として動作させま"
+"す。 <emphasis>ファクトリメソッド</emphasis> は、 コンテキスト変数が参照され"
+"たときに呼び出されますが、 それとバインドした値は持っていません。 "
+"<literal>@Factory</literal> アノテーションを使用してファクトリメソッドを定義"
+"します。 ファクトリメソッドは値をコンテキスト変数とバインドし、 バインドされ"
+"た値のスコープを決定します。 2 種類のファクトリメソッドスタイルがあります。 "
+"最初のスタイルは、Seam によりコンテキストにバインドされた値を返します。"
+
+#. Tag: programlisting
+#: Concepts.xml:552
+#, no-c-format
+msgid ""
+"@Factory(scope=CONVERSATION)\n"
+"public List&lt;Customer&gt; getCustomerList() { \n"
+"    return ... ;\n"
+"}"
+msgstr ""
+"@Factory(scope=CONVERSATION)\n"
+"public List&lt;Customer&gt; getCustomerList() { \n"
+"    return ... ;\n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:553
+#, no-c-format
+msgid ""
+"The second style is a method of type <literal>void</literal> which binds the "
+"value to the context variable itself:"
+msgstr ""
+"2 番目のスタイルは、 値をコンテキスト変数そのものにバインドした "
+"<literal>void</literal> タイプのメソッドです。"
+
+#. Tag: programlisting
+#: Concepts.xml:556
+#, no-c-format
+msgid ""
+"@DataModel List&lt;Customer&gt; customerList;\n"
+"\n"
+"@Factory(\"customerList\")\n"
+"public void initCustomerList() { \n"
+"    customerList = ...  ;\n"
+"}"
+msgstr ""
+"@DataModel List&lt;Customer&gt; customerList;\n"
+"\n"
+"@Factory(\"customerList\")\n"
+"public void initCustomerList() { \n"
+"    customerList = ...  ;\n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:557
+#, no-c-format
+msgid ""
+"In both cases, the factory method is called when we reference the "
+"<literal>customerList</literal> context variable and its value is null, and "
+"then has no further part to play in the lifecycle of the value. An even more "
+"powerful pattern is the <emphasis>manager component pattern</emphasis>. In "
+"this case, we have a Seam component that is bound to a context variable, "
+"that manages the value of the context variable, while remaining invisible to "
+"clients."
+msgstr ""
+"どちらの場合も、 <literal>customerList</literal> コンテキスト変数を参照してそ"
+"の値が null になり、 その値のライフサイクルで行うことがこれ以上ない場合、 "
+"ファクトリメソッドが呼ばれます。 さらに強力なパターンは <emphasis>管理コン"
+"ポーネントパターン</emphasis> です。 この場合、 コンテキスト変数にバインドす"
+"る Seam コンポーネントがあり、 このコンポーネントがコンテキスト変数の値を管理"
+"り、 残りはクライアントで見えない場合です。"
+
+#. Tag: para
+#: Concepts.xml:560
+#, no-c-format
+msgid ""
+"A manager component is any component with an <literal>@Unwrap</literal> "
+"method. This method returns the value that will be visable to clients, and "
+"is called <emphasis>every time</emphasis> a context variable is referenced."
+msgstr ""
+"管理コンポーネントは <literal>@Unwrap</literal> メソッドを持つすべてのコン"
+"ポーネントです。 このメソッドは、クライアントに見えなくなる値を返し、 "
+"<emphasis>毎回</emphasis> コンテキスト変数が参照されれば呼び出されます。"
+
+#. Tag: programlisting
+#: Concepts.xml:563
+#, no-c-format
+msgid ""
+"@Name(\"customerList\")\n"
+"@Scope(CONVERSATION)\n"
+"public class CustomerListManager\n"
+"{\n"
+"    ...\n"
+"    \n"
+"    @Unwrap\n"
+"    public List&lt;Customer&gt; getCustomerList() { \n"
+"        return ... ;\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"customerList\")\n"
+"@Scope(CONVERSATION)\n"
+"public class CustomerListManager\n"
+"{\n"
+"    ...\n"
+"    \n"
+"    @Unwrap\n"
+"    public List&lt;Customer&gt; getCustomerList() { \n"
+"        return ... ;\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:564
+#, no-c-format
+msgid ""
+"This pattern is especially useful if we have some heavyweight object that "
+"needs a cleanup operation when the context ends. In this case, the manager "
+"component may perform cleanup in the <literal>@Destroy</literal> method."
+msgstr ""
+"コンテキストが終了するとき、クリーンアップが必要な重いオブジェクトを持つと"
+"き、 このパターンは特に役立ちます。 この場合、管理コンポーネントは "
+"<literal>@Destroy</literal> でクリーンアップを実行することもできます。"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Configuration.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Configuration.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Configuration.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2266 @@
+# translation of Configuration.po to Japanese
+# Noriko Mizumoto <noriko at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Configuration\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-30 01:52+0000\n"
+"PO-Revision-Date: 2007-10-30 14:53+1000\n"
+"Last-Translator: Noriko Mizumoto <noriko at redhat.com>\n"
+"Language-Team: Japanese <fedora-trans-ja at redhat.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Configuration.xml:6
+#, no-c-format
+msgid "Configuring Seam and packaging Seam applications"
+msgstr "Seam の設定と Seam アプリケーションのパッケージング"
+
+#. Tag: para
+#: Configuration.xml:7
+#, no-c-format
+msgid ""
+"Configuration is a very boring topic and an extremely tedious pastime. "
+"Unfortunately, several lines of XML are required to integrate Seam into your "
+"JSF implementation and servlet container. There&#39;s no need to be too put "
+"off by the following sections; you&#39;ll never need to type any of this "
+"stuff yourself, since you can just copy and paste from the example "
+"applications!"
+msgstr ""
+"設定はとても退屈なトピックと極めて退屈な気晴らしです。 あいにく、何行かの "
+"XML は、Seam を JSF 実装と サーブレットコンテナに統合するのに必要です。 以降"
+"の章から、うんざりする必要はありません。 サンプルアプリケーションから、 簡単"
+"にコピー/ペーストできるため これらを直接、打ち込む必要はありません。"
+
+#. Tag: title
+#: Configuration.xml:10
+#, no-c-format
+msgid "Basic Seam configuration"
+msgstr "Seam の基本設定"
+
+#. Tag: para
+#: Configuration.xml:11
+#, no-c-format
+msgid ""
+"First, let&#39;s look at the basic configuration that is needed whenever we "
+"use Seam with JSF."
+msgstr ""
+"最初に、JSF と Seam を使うときにはいつでも必要な基本的な設定から見てみましょ"
+"う。"
+
+#. Tag: title
+#: Configuration.xml:14
+#, no-c-format
+msgid "Integrating Seam with JSF and your servlet container"
+msgstr "Seam と JSF、servlet コンテナとの統合"
+
+#. Tag: para
+#: Configuration.xml:15
+#, no-c-format
+msgid "Seam requires the following entry in your <literal>web.xml</literal> file:"
+msgstr "Seam は web.xml ファイル中に以下の設定が必要です。"
+
+#. Tag: programlisting
+#: Configuration.xml:18
+#, no-c-format
+msgid ""
+"&lt;listener&gt;\n"
+"    &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/listener-"
+"class&gt;\n"
+"&lt;/listener&gt;"
+msgstr ""
+"&lt;listener&gt;\n"
+"    &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/listener-"
+"class&gt;\n"
+"&lt;/listener&gt;"
+
+#. Tag: para
+#: Configuration.xml:19
+#, no-c-format
+msgid ""
+"This listener is responsible for bootstrapping Seam, and for destroying "
+"session and application contexts."
+msgstr ""
+"このリスナは、Seam をブートストラップすることと、セッションあるいはアプリケー"
+"ションコンテキストの破棄を、担当しています。"
+
+#. Tag: para
+#: Configuration.xml:22
+#, no-c-format
+msgid ""
+"To integrate with the JSF request lifecycle, we also need a JSF "
+"<literal>PhaseListener</literal> registered in in the <literal>faces-config."
+"xml</literal> file:"
+msgstr ""
+"JSFのリクエストのライフサイクルでSeamを統合するために<literal>faces-config."
+"xml</literal>中でJSFの<literal>PhaseListener</literal>を登録しておく必要があ"
+"ります。"
+
+#. Tag: programlisting
+#: Configuration.xml:25
+#, no-c-format
+msgid ""
+"&lt;lifecycle&gt;\n"
+"    &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-"
+"listener&gt;\n"
+"&lt;/lifecycle&gt;"
+msgstr ""
+"&lt;lifecycle&gt;\n"
+"    &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-"
+"listener&gt;\n"
+"&lt;/lifecycle&gt;"
+
+#. Tag: para
+#: Configuration.xml:26
+#, no-c-format
+msgid ""
+"The actual listener class here varies depending upon how you want to manage "
+"transaction demarcation (more on this below)."
+msgstr ""
+"実際、ここでのリスナクラスは、どのようなトランザクション区分 (詳細は以下) を"
+"必要とするかに応じて、変更する必要があります。"
+
+#. Tag: para
+#: Configuration.xml:29
+#, no-c-format
+msgid ""
+"If you are using Sun&#39;s JSF 1.2 reference implementation, you should also "
+"add this to <literal>faces-config.xml</literal>:"
+msgstr ""
+"もしSunの JSF 1.2 参照実装を使用しているのであれば、下の記述も<literal>faces-"
+"config.xml</literal> に必要になります。"
+
+#. Tag: programlisting
+#: Configuration.xml:32
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;el-resolver&gt;org.jboss.seam.jsf.SeamELResolver&lt;/el-"
+"resolver&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+"&lt;application&gt;\n"
+"    &lt;el-resolver&gt;org.jboss.seam.jsf.SeamELResolver&lt;/el-"
+"resolver&gt;\n"
+"&lt;/application&gt;"
+
+#. Tag: para
+#: Configuration.xml:33
+#, no-c-format
+msgid ""
+"(This line should not strictly speaking be necessary, but it works around a "
+"minor bug in the RI.)"
+msgstr ""
+"(この記述は必ずしも必要とは言えませんが、RIのマイナーなバグを回避するのに役立"
+"ちます。)"
+
+#. Tag: para
+#: Configuration.xml:36
+#, no-c-format
+msgid ""
+"Some JSF implementations have a broken implementation of server-side state "
+"saving that interferes with Seam&#39;s conversation propagation. If you have "
+"problems with conversation propagation during form submissions, try "
+"switching to client-side state saving. You&#39;ll need this in <literal>web."
+"xml</literal>:"
+msgstr ""
+"JSF の実装の一部にはサーバサイドでの状態の保持の実装にバグが有る物があります"
+"が、 Seamは対話の為にこの部分を使用しています。 もし、フォームの送信で問題が"
+"有る場合には、クライアント側に 状態を保持するようにしてみてください。この場"
+"合、<literal>web.xml</literal>に以下を記述します。"
+
+#. Tag: programlisting
+#: Configuration.xml:39
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;client&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;client&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+
+#. Tag: title
+#: Configuration.xml:40
+#, no-c-format
+msgid "Seam Resource Servlet"
+msgstr "Seam リソース Servlet"
+
+#. Tag: para
+#: Configuration.xml:41
+#, no-c-format
+msgid ""
+"The Seam Resource Servlet provides resources used by Seam Remoting, captchas "
+"(see the security chapter) and some JSF UI controls. Configuring the Seam "
+"Resource Servlet requires the following entry in <literal>web.xml</literal>:"
+msgstr ""
+"Seam リソース Servlet は Seam Remoting 、キャプチャ (セキュリティの章を参照) "
+"や JSF の UI の制御で使用されるリソースを提供します。 Seam リソース Servlet "
+"の設定には <literal>web.xml</literal> に以下の記述が必要です。"
+
+#. Tag: programlisting
+#: Configuration.xml:44
+#, no-c-format
+msgid ""
+"&lt;servlet&gt;\n"
+"  &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"  &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"    \n"
+"&lt;servlet-mapping&gt;\n"
+"  &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"  &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+msgstr ""
+"&lt;servlet&gt;\n"
+"  &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"  &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"    \n"
+"&lt;servlet-mapping&gt;\n"
+"  &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"  &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+
+#. Tag: title
+#: Configuration.xml:45
+#, no-c-format
+msgid "Seam servlet filters"
+msgstr "Seam servlet フィルター"
+
+#. Tag: para
+#: Configuration.xml:46
+#, no-c-format
+msgid ""
+"Seam doesn&#39;t need any servlet filters for basic operation. However, "
+"there are several features which depend upon the use of filters. To make "
+"things easier for you guys, Seam lets you add and configure servlet filters "
+"just like you would configure other built-in Seam components. To take "
+"advantage of this feature, we must first install a master filter in "
+"<literal>web.xml</literal>:"
+msgstr ""
+"Seam は基本的な動作には servlet フィルターを必要としません。 しかし、Seamに"
+"は、フィルターの使用を前提とした 幾つかの機能があり、Seamの組み込みコンポーネ"
+"ントの設定と同様の方法で、servletフィルターを設定することが出来るようになって"
+"います。 この機能を使用するためには、まづ、<literal>web.xml</literal>に下のよ"
+"うに、マスターフィルターを設定する必要があります。"
+
+#. Tag: programlisting
+#: Configuration.xml:49
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;/*&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;"
+msgstr ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;/*&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;"
+
+#. Tag: para
+#: Configuration.xml:50
+#, no-c-format
+msgid "Adding the master filter enables the following built-in filters."
+msgstr ""
+"マスターフィルタを組み込むことにより、以下の組み込みフィルタを使用できるよう"
+"になります。"
+
+#. Tag: title
+#: Configuration.xml:53
+#, no-c-format
+msgid "Exception handling"
+msgstr "例外処理"
+
+#. Tag: para
+#: Configuration.xml:54
+#, no-c-format
+msgid ""
+"This filter provides the exception mapping functionality in <literal>pages."
+"xml</literal> (almost all applications will need this). It also takes care "
+"of rolling back uncommitted transactions when uncaught exceptions occur. "
+"(According to the Java EE specification, the web container should do this "
+"automatically, but we&#39;ve found that this behavior cannot be relied upon "
+"in all application servers. And it is certainly not required of plain "
+"servlet engines like Tomcat.)"
+msgstr ""
+"このフィルタは例外を<literal>pages.xml</literal>にマッピングする機能がありま"
+"す。 (ほとんどのアプリケーションで必要な機能です。) また、捕捉出来ないエラー"
+"がトランスアクションで発生した場合にロールバック 処理を行います。 (Java EE 仕"
+"様に従えば、webコンテナがこの処理を自動的に行う必要が有りますが、すべてのアプ"
+"リケーションサーバが この機能を正しく実装しているとは言えないことが分かってい"
+"ます。 勿論、Tomcatのような単純なsevletエンジンではこの 機能は必要有りませ"
+"ん。)"
+
+#. Tag: para
+#: Configuration.xml:57
+#, no-c-format
+msgid ""
+"By default, the exception handling filter will process all requests, however "
+"this behavior may be adjusted by adding a <literal>&lt;web:exception-"
+"filter&gt;</literal> entry to <literal>components.xml</literal>, as shown in "
+"this example:"
+msgstr ""
+"デフォルトで、すべてのリクエストに対して例外処理フィルタが適用されますが、下"
+"のように、 <literal>components.xml</literal>に<literal>&lt;web:exception-"
+"filter&gt;</literal>を記述して、 これを変更することもできます。"
+
+#. Tag: programlisting
+#: Configuration.xml:60
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:web=\"http://jboss.com/products/seam/web\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                                                      http://jboss.com/"
+"products/seam/core-1.2.xsd\n"
+"                 http://jboss.com/products/seam/components \n"
+"                                                      http://jboss.com/"
+"products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/web \n"
+"                                                      http://jboss.com/"
+"products/seam/web-1.2.xsd\"&gt;\n"
+"\n"
+"    &lt;web:exception-filter url-pattern=\"*.seam\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:web=\"http://jboss.com/products/seam/web\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                                                      http://jboss.com/"
+"products/seam/core-1.2.xsd\n"
+"                 http://jboss.com/products/seam/components \n"
+"                                                      http://jboss.com/"
+"products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/web \n"
+"                                                      http://jboss.com/"
+"products/seam/web-1.2.xsd\"&gt;\n"
+"\n"
+"    &lt;web:exception-filter url-pattern=\"*.seam\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Configuration.xml:63 Configuration.xml:78 Configuration.xml:100
+#: Configuration.xml:125
+#, no-c-format
+msgid ""
+"<literal>url-pattern</literal> &mdash; Used to specify which requests are "
+"filtered, the default is all requests."
+msgstr ""
+"<literal>url-pattern</literal> &mdash; どのリクエストをフィルタするか指定しま"
+"す。 デフォルトではすべてのリクエストになります。"
+
+#. Tag: title
+#: Configuration.xml:68
+#, no-c-format
+msgid "Conversation propagation with redirects"
+msgstr "リダイレクトによる対話の伝搬"
+
+#. Tag: para
+#: Configuration.xml:69
+#, no-c-format
+msgid ""
+"This filter allows Seam to propagate the conversation context across browser "
+"redirects. It intercepts any browser redirects and adds a request parameter "
+"that specifies the Seam conversation identifier."
+msgstr ""
+"このフィルタはSeamがブラウザのリダイレクトにより対話コンテキストを伝搬する事"
+"を可能にします。 ブラウザリダイレクトをインターセプトし、Seamの対話identifier"
+"をパラメータに追加することにより、実現しています。"
+
+#. Tag: para
+#: Configuration.xml:72
+#, no-c-format
+msgid ""
+"The redirect filter will process all requests by default, but this behavior "
+"can also be adjusted in <literal>components.xml</literal>:"
+msgstr ""
+"リダイレクトフィルタも、デフォルトですべてのリクエストを対象としますが、 "
+"<literal>components.xml</literal>の記述を以下のようにして変更することが可能で"
+"す。"
+
+#. Tag: programlisting
+#: Configuration.xml:75
+#, no-c-format
+msgid "&lt;web:redirect-filter url-pattern=\"*.seam\"/&gt;"
+msgstr "&lt;web:redirect-filter url-pattern=\"*.seam\"/&gt;"
+
+#. Tag: title
+#: Configuration.xml:83
+#, no-c-format
+msgid "Multipart form submissions"
+msgstr "マルチパートフォームの送信"
+
+#. Tag: para
+#: Configuration.xml:84
+#, no-c-format
+msgid ""
+"This feature is necessary when using the Seam file upload JSF control. It "
+"detects multipart form requests and processes them according to the "
+"multipart/form-data specification (RFC-2388). To override the default "
+"settings, add the following entry to <literal>components.xml</literal>:"
+msgstr ""
+"この機能はファイルのアップロードの時のJSF制御に必要となります。マルチパート"
+"フォームのリクエストを検出すると、 RFC-2388 (multipart/form-data 仕様) に従い"
+"処理を行います。 デフォルトの設定をオーバーライドするためには "
+"<literal>components.xml</literal>に以下の設定を追加します。"
+
+#. Tag: programlisting
+#: Configuration.xml:87
+#, no-c-format
+msgid ""
+"&lt;web:multipart-filter create-temp-files=\"true\" \n"
+"        max-request-size=\"1000000\" \n"
+"        url-pattern=\"*.seam\"/&gt;"
+msgstr ""
+"&lt;web:multipart-filter create-temp-files=\"true\" \n"
+"        max-request-size=\"1000000\" \n"
+"        url-pattern=\"*.seam\"/&gt;"
+
+#. Tag: para
+#: Configuration.xml:90
+#, no-c-format
+msgid ""
+"<literal>create-temp-files</literal> &mdash; If set to <literal>true</"
+"literal>, uploaded files are written to a temporary file (instead of held in "
+"memory). This may be an important consideration if large file uploads are "
+"expected. The default setting is <literal>false</literal>."
+msgstr ""
+"<literal>create-temp-files</literal> &mdash; <literal>true</literal>にする"
+"と、 アップロードされたファイルはメモリ中ではなく、テンポラリファイルに書き込"
+"まれます。 大きなファイルのアップロードが考えられるような場合には重要となりま"
+"す。 デフォルトでは<literal>false</literal>となっています。"
+
+#. Tag: para
+#: Configuration.xml:95
+#, no-c-format
+msgid ""
+"<literal>max-request-size</literal> &mdash; If the size of a file upload "
+"request (determined by reading the <literal>Content-Length</literal> header "
+"in the request) exceeds this value, the request will be aborted. The default "
+"setting is 0 (no size limit)."
+msgstr ""
+"<literal>max-request-size</literal> &mdash; リクエストヘッダー中の "
+"<literal>Content-Length</literal>で示されるアップロードファイルのサイズがこの"
+"値を越えた場合、リクエストは中断されます。 デフォルトの設定は 0 (ファイルのサ"
+"イズを制限しません)。"
+
+#. Tag: title
+#: Configuration.xml:105
+#, no-c-format
+msgid "Character encoding"
+msgstr "キャラクターエンコーディング"
+
+#. Tag: para
+#: Configuration.xml:106
+#, no-c-format
+msgid "Sets the character encoding of submitted form data."
+msgstr "送信されたフォームデータのキャラクターエンコーディングをセットします。"
+
+#. Tag: para
+#: Configuration.xml:109 Configuration.xml:137
+#, no-c-format
+msgid ""
+"This filter is not installed by default and requires an entry in "
+"<literal>components.xml</literal> to enable it:"
+msgstr ""
+"デフォルトではこのフィルタはインストールされていませんので、"
+"<literal>components.xml</literal> に以下の記述が必要です。"
+
+#. Tag: programlisting
+#: Configuration.xml:112
+#, no-c-format
+msgid ""
+"&lt;web:character-encoding-filter encoding=\"UTF-16\" \n"
+"        override-client=\"true\" \n"
+"        url-pattern=\"*.seam\"/&gt;"
+msgstr ""
+"&lt;web:character-encoding-filter encoding=\"UTF-16\" \n"
+"        override-client=\"true\" \n"
+"        url-pattern=\"*.seam\"/&gt;"
+
+#. Tag: para
+#: Configuration.xml:115
+#, no-c-format
+msgid "<literal>encoding</literal> &mdash; The encoding to use."
+msgstr "<literal>encoding</literal> &mdash; 使用するエンコーディングです。"
+
+#. Tag: para
+#: Configuration.xml:120
+#, no-c-format
+msgid ""
+"<literal>override-client</literal> &mdash; If this is set to <literal>true</"
+"literal>, the request encoding will be set to whatever is specified by "
+"<literal>encoding</literal> no matter whether the request already specifies "
+"an encoding or not. If set to <literal>false</literal>, the request encoding "
+"will only be set if the request doesn&#39;t already specify an encoding. The "
+"default setting is <literal>false</literal>."
+msgstr ""
+"<literal>override-client</literal> &mdash; <literal>true</literal> に設定され"
+"ていた場合、リクエストがエンコーディングを指定しているか否かに関わらず、"
+"<literal>encoding</literal>で 指定されたエンコーディングを使用します。 "
+"<literal>false</literal>に設定されていた場合には、リクエストがエンコーディン"
+"グを指定していない場合に限り<literal>encoding</literal>で指定されたエンコー"
+"ディングを使用します。 デフォルトで<literal>false</literal>に設定されていま"
+"す。"
+
+#. Tag: title
+#: Configuration.xml:130
+#, no-c-format
+msgid "Context management for custom servlets"
+msgstr "カスタム servletsのコンテキスト管理"
+
+#. Tag: para
+#: Configuration.xml:131
+#, no-c-format
+msgid ""
+"Requests sent direct to some servlet other than the JSF servlet are not "
+"processed through the JSF lifecycle, so Seam provides a servlet filter that "
+"can be applied to any other servlet that needs access to Seam components."
+msgstr ""
+"JSF servlet以外の servletに直接送信されるリクエストは、JSFのライフサイクルで"
+"は処理されません。 そこで、Seamは Seamのコンポーネントにアクセスする必要の有"
+"る その他の servletに対して servletフィルタを提供しています。"
+
+#. Tag: para
+#: Configuration.xml:134
+#, no-c-format
+msgid ""
+"This filter allows custom servlets to interact with the Seam contexts. It "
+"sets up the Seam contexts at the beginning of each request, and tears them "
+"down at the end of the request. You should make sure that this filter is "
+"<emphasis>never</emphasis> applied to the JSF <literal>FacesServlet</"
+"literal>. Seam uses the phase listener for context management in a JSF "
+"request."
+msgstr ""
+"このフィルタを適用することにより、カスタムservletが Seamコンテキストと相互に"
+"作用することを可能にします。 個々のリクエストの最初にSeamコンテキストをセット"
+"アップし、リクエストの終了畤にこれを破棄します。このフィルタは JSFの "
+"<literal>FacesServlet</literal> には<emphasis>決して</emphasis>適用されない事"
+"を銘記してください。 Seam はJSFのリクエストのコンテキスト管理には phase "
+"listenerを使用します。"
+
+#. Tag: programlisting
+#: Configuration.xml:140
+#, no-c-format
+msgid "&lt;web:context-filter url-pattern=\"/media/*\"/&gt;"
+msgstr "&lt;web:context-filter url-pattern=\"/media/*\"/&gt;"
+
+#. Tag: para
+#: Configuration.xml:143
+#, no-c-format
+msgid ""
+"<literal>url-pattern</literal> &mdash; Used to specify which requests are "
+"filtered, the default is all requests. If the url-pattern is specified for "
+"the context filter, then the filter will be enabled (unless explicitly "
+"disabled)."
+msgstr ""
+"<literal>url-pattern</literal> &mdash; どのリクエストをフィルタするのか指定し"
+"ます。 デフォルトではすべてのリクエスト。 コンテキストフィルタに url-pattern "
+"が指定されていればフィルタが適用されます (明示的に使用不可としていない限り)。"
+
+#. Tag: para
+#: Configuration.xml:148
+#, no-c-format
+msgid ""
+"The context filter expects to find the conversation id of any conversation "
+"context in a request parameter named <literal>conversationId</literal>. You "
+"are responsible for ensuring that it gets sent in the request."
+msgstr ""
+"コンテキストフィルタは<literal>conversationId</literal>という名前でリクエスト"
+"パラメータ中に対話 id を探そうとします。必ず、リクエストパラメータに対話 idを"
+"含めるようにしてください。"
+
+#. Tag: para
+#: Configuration.xml:151
+#, no-c-format
+msgid ""
+"You are also responsible for ensuring propagation of any new conversation id "
+"back to the client. Seam exposes the conversation id as a property of the "
+"built in component <literal>conversation</literal>."
+msgstr ""
+"また、新たな対話 idをクライアント側に確実に伝える必要があります。 Seamは組み"
+"込みコンポーネント <literal>conversation</literal>のプロパティとして対話 idを"
+"公開しています。"
+
+#. Tag: title
+#: Configuration.xml:154
+#, no-c-format
+msgid "Integrating Seam with your EJB container"
+msgstr "EJB コンテナと Seam の統合"
+
+#. Tag: para
+#: Configuration.xml:155
+#, no-c-format
+msgid ""
+"We need to apply the <literal>SeamInterceptor</literal> to our Seam "
+"components. The simplest way to do this is to add the following interceptor "
+"binding to the <literal>&lt;assembly-descriptor&gt;</literal> in "
+"<literal>ejb-jar.xml</literal>:"
+msgstr ""
+"<literal>SeamInterceptor</literal> を、 Seam コンポーネントに対応させる必要が"
+"あります。 このための最も簡単な方法は、 次のインターセプタバインディングを、 "
+"<literal>ejb-jar.xml</literal> の中の <literal>&lt;assembly-descriptor&gt;</"
+"literal> に、 追加することです。"
+
+#. Tag: programlisting
+#: Configuration.xml:158
+#, no-c-format
+msgid ""
+"&lt;interceptor-binding&gt;\n"
+"    &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"    &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"&lt;/interceptor-binding&gt;"
+msgstr ""
+"&lt;interceptor-binding&gt;\n"
+"    &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"    &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"&lt;/interceptor-binding&gt;"
+
+#. Tag: para
+#: Configuration.xml:159
+#, no-c-format
+msgid ""
+"Seam needs to know where to go to find session beans in JNDI. One way to do "
+"this is specify the <literal>@JndiName</literal> annotation on every session "
+"bean Seam component. However, this is quite tedious. A better approach is to "
+"specify a pattern that Seam can use to calculate the JNDI name from the EJB "
+"name. Unfortunately, there is no standard mapping to global JNDI defined in "
+"the EJB3 specification, so this mapping is vendor-specific. We usually "
+"specify this option in <literal>components.xml</literal>."
+msgstr ""
+"Seam は、セッション Bean が JNDI でどこにあるかを知る必要があります。 このた"
+"めの方法の 1 つは、 それぞれの Session Bean コンポーネントに、"
+"<literal>@JndiName</literal> を指定することです。 しかし、 これではつまらな過"
+"ぎます。 もっと良い方法は、 EJB 名から JNDI 名を判断するために、 Seam が使用"
+"するパターンを指定することです。 あいにく、EJB3 標準に定義されたグローバル "
+"JNDI をマッピングする標準は存在しないため、 このマッピングはベンダ固有になり"
+"ます。 通常、<literal>components.xml</literal>にこのオプションを指定します。"
+
+#. Tag: para
+#: Configuration.xml:162
+#, no-c-format
+msgid "For JBoss AS, the following pattern is correct:"
+msgstr "JBossアプリケーションサーバでは、次のパターンは誤りではありません。"
+
+#. Tag: programlisting
+#: Configuration.xml:165
+#, no-c-format
+msgid "&lt;core:init jndi-name=\"myEarName/#{ejbName}/local\" /&gt;"
+msgstr "&lt;core:init jndi-name=\"myEarName/#{ejbName}/local\" /&gt;"
+
+#. Tag: para
+#: Configuration.xml:166
+#, no-c-format
+msgid ""
+"Where <literal>myEarName</literal> is the name of the EAR in which the bean "
+"is deployed."
+msgstr ""
+"ここで、<literal>myEarName</literal>は、Bean がデプロイされた EAR の名前で"
+"す。"
+
+#. Tag: para
+#: Configuration.xml:169
+#, no-c-format
+msgid ""
+"Outside the context of an EAR (when using the JBoss Embeddable EJB3 "
+"container), the following pattern is the one to use:"
+msgstr ""
+"EAR のコンテキストの外側では (JBoss 組み込み可能 EJB3 コンテナを使用すると"
+"き)、 次のパターンは使い方の 1 つです。"
+
+#. Tag: programlisting
+#: Configuration.xml:172
+#, no-c-format
+msgid "&lt;core:init jndi-name=\"#{ejbName}/local\" /&gt;"
+msgstr "&lt;core:init jndi-name=\"#{ejbName}/local\" /&gt;"
+
+#. Tag: para
+#: Configuration.xml:173
+#, no-c-format
+msgid ""
+"You&#39;ll have to experiment to find the right setting for other "
+"application servers. Note that some servers (such as GlassFish) require you "
+"to specify JNDI names for all EJB components explicitly (and tediously). In "
+"this case, you can pick your own pattern ;-)"
+msgstr ""
+"他のアプリケーションサーバでの正しい記述については実験してみる必要がありま"
+"す。GlassFishのようなアプリケーションサーバ では、すべてのEJBコンポーネントに"
+"ついて明示的にJNDI名が決められている必要があります。 この場合、独自のパターン"
+"を決める必要があります。"
+
+#. Tag: title
+#: Configuration.xml:176
+#, no-c-format
+msgid "Using facelets"
+msgstr "facelet の使用"
+
+#. Tag: para
+#: Configuration.xml:177
+#, no-c-format
+msgid ""
+"If you want follow our advice and use facelets instead of JSP, add the "
+"following lines to <literal>faces-config.xml</literal>:"
+msgstr ""
+"我々の意見を聞き入れていただいて、JSPの替わりに faceletを使っていただけるとし"
+"たら、<literal>faces-config.xml</literal>に以下の設定が必要です。"
+
+#. Tag: programlisting
+#: Configuration.xml:180
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;view-handler&gt;com.sun.facelets.FaceletViewHandler&lt;/view-"
+"handler&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+"&lt;application&gt;\n"
+"    &lt;view-handler&gt;com.sun.facelets.FaceletViewHandler&lt;/view-"
+"handler&gt;\n"
+"&lt;/application&gt;"
+
+#. Tag: para
+#: Configuration.xml:181
+#, no-c-format
+msgid "And the following lines to <literal>web.xml</literal>:"
+msgstr "そして、 <literal>web.xml</literal>に下の記述も必要です。"
+
+#. Tag: programlisting
+#: Configuration.xml:184
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;javax.faces.DEFAULT_SUFFIX&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;.xhtml&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;javax.faces.DEFAULT_SUFFIX&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;.xhtml&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+
+#. Tag: title
+#: Configuration.xml:185
+#, no-c-format
+msgid "Don&#39;t forget!"
+msgstr "おっと、もう一つ重要情報"
+
+#. Tag: para
+#: Configuration.xml:186
+#, no-c-format
+msgid ""
+"There is one final item you need to know about. You must place a "
+"<literal>seam.properties</literal>, <literal>META-INF/seam.properties</"
+"literal> or <literal>META-INF/components.xml</literal> file in any archive "
+"in which your Seam components are deployed (even an empty properties file "
+"will do). At startup, Seam will scan any archives with <literal>seam."
+"properties</literal> files for seam components."
+msgstr ""
+"最後にもう一つ理解しておくことがあります。 Seamコンポーネントが配備されるどの"
+"ようなアーカイブにも、 <literal>seam.properties</literal>、<literal>META-INF/"
+"seam.properties</literal> あるいは <literal>META-INF/components.xml</literal>"
+"を作成しておく必要があります (空のファイルであってもかまいません)。 Seamは起"
+"動時に seamコンポーネントを探すために、すべてのアーカイブで<literal>seam."
+"properties</literal>をスキャンします。"
+
+#. Tag: para
+#: Configuration.xml:189
+#, no-c-format
+msgid ""
+"In a web archive (WAR) file, you must place a <literal>seam.properties</"
+"literal> file in the <literal>WEB-INF/classes</literal> directory if you "
+"have any Seam components included here."
+msgstr ""
+"Seamコンポーネントが有る場合には、webアーカイブ (WAR) の<literal>WEB-INF/"
+"classes</literal>ディレクトリに <literal>seam.properties</literal>ファイルを"
+"作成する必要があります。"
+
+#. Tag: para
+#: Configuration.xml:192
+#, no-c-format
+msgid ""
+"That&#39;s why all the Seam examples have an empty <literal>seam.properties</"
+"literal> file. You can&#39;t just delete this file and expect everything to "
+"still work!"
+msgstr ""
+"これが、Seamのサンプルアプリケーションすべてに、空の<literal>seam."
+"properties</literal>が存在する理由です。 (空であっても) これを削除するとアプ"
+"リケーションが動作しなくなります。"
+
+#. Tag: para
+#: Configuration.xml:195
+#, no-c-format
+msgid ""
+"You might think this is silly and what kind of idiot framework designers "
+"would make an empty file affect the behavior of their software?? Well, this "
+"is a workaround for a limitation of the JVM&mdash;if we didn&#39;t use this "
+"mechanism, our next best option would be to force you to list every "
+"component explicitly in <literal>components.xml</literal>, just like some "
+"other competing frameworks do! I think you&#39;ll like our way better."
+msgstr ""
+"空のファイルで有っても、存在しないと動かないようなフレームワークを作るような"
+"デザイナーは、ちょっとオカシイと思われるかもしれませんが、これは JVM の制約を"
+"回避するための方策です &mdash; もし、このようなメカニズムを使わないとすれば、"
+"次善の方法は、 他の競合するフレームワークで行われているように、 "
+"<literal>components.xml</literal>にすべてのコンポーネントを明示的に記述するこ"
+"とです。 多分、我々の選択の方を気に入っていただけると思います。"
+
+#. Tag: title
+#: Configuration.xml:198
+#, no-c-format
+msgid "Configuring Seam in Java EE 5"
+msgstr "Java EE 5 で Seam を設定"
+
+#. Tag: para
+#: Configuration.xml:207
+#, no-c-format
+msgid ""
+"If you&#39;re running in a Java EE 5 environment, this is all the "
+"configuration required to start using Seam!"
+msgstr ""
+"Java EE 5 環境で実行するならば、 Seam の使用を始めるために必要な設定はこれだ"
+"けです。"
+
+#. Tag: title
+#: Configuration.xml:210 Configuration.xml:276 Configuration.xml:321
+#: Configuration.xml:360 Configuration.xml:377
+#, no-c-format
+msgid "Packaging"
+msgstr "パッケージング"
+
+#. Tag: para
+#: Configuration.xml:211
+#, no-c-format
+msgid ""
+"Once you&#39;ve packaged all this stuff together into an EAR, the archive "
+"structure will look something like this:"
+msgstr ""
+"これらすべてを EAR にパッケージングしたならば、 アーカイブの構造は以下のよう"
+"になります。"
+
+#. Tag: programlisting
+#: Configuration.xml:214
+#, no-c-format
+msgid ""
+"my-application.ear/\n"
+"    jboss-seam.jar\n"
+"    el-api.jar\n"
+"    el-ri.jar\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"        application.xml\n"
+"    my-application.war/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"        WEB-INF/\n"
+"            web.xml\n"
+"            components.xml\n"
+"            faces-config.xml\n"
+"            lib/\n"
+"                jsf-facelets.jar\n"
+"                jboss-seam-ui.jar\n"
+"        login.jsp\n"
+"        register.jsp\n"
+"        ...\n"
+"    my-application.jar/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"            persistence.xml\n"
+"        seam.properties\n"
+"        org/\n"
+"            jboss/\n"
+"                myapplication/\n"
+"                    User.class\n"
+"                    Login.class\n"
+"                    LoginBean.class\n"
+"                    Register.class\n"
+"                    RegisterBean.class\n"
+"                    ..."
+msgstr ""
+"my-application.ear/\n"
+"    jboss-seam.jar\n"
+"    el-api.jar\n"
+"    el-ri.jar\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"        application.xml\n"
+"    my-application.war/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"        WEB-INF/\n"
+"            web.xml\n"
+"            components.xml\n"
+"            faces-config.xml\n"
+"            lib/\n"
+"                jsf-facelets.jar\n"
+"                jboss-seam-ui.jar\n"
+"        login.jsp\n"
+"        register.jsp\n"
+"        ...\n"
+"    my-application.jar/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"            persistence.xml\n"
+"        seam.properties\n"
+"        org/\n"
+"            jboss/\n"
+"                myapplication/\n"
+"                    User.class\n"
+"                    Login.class\n"
+"                    LoginBean.class\n"
+"                    Register.class\n"
+"                    RegisterBean.class\n"
+"                    ..."
+
+#. Tag: para
+#: Configuration.xml:215
+#, no-c-format
+msgid ""
+"You must include <literal>jboss-seam.jar</literal>, <literal>el-api.jar</"
+"literal> and <literal>el-ri.jar</literal> in the EAR classpath. Make sure "
+"you reference all of these jars from <literal>application.xml</literal>."
+msgstr ""
+"EARのクラスパスに <literal>jboss-seam.jar</literal>, <literal>el-api.jar</"
+"literal> それに<literal>el-ri.jar</literal> を含めておく必要があります。ま"
+"た、これらすべての jar ファイルが <literal>application.xml</literal>から参照"
+"できるようにしておく必要があります。"
+
+#. Tag: para
+#: Configuration.xml:218
+#, no-c-format
+msgid ""
+"If you want to use jBPM or Drools, you must include the needed jars in the "
+"EAR classpath. Make sure you reference all of the jars from "
+"<literal>application.xml</literal>."
+msgstr ""
+"もし、jBPM や Droolsを使用するのであれば、それらに必要な jarファイルを EARの"
+"クラスパスに含めて おかなければなりません。また、これらすべての jar ファイル"
+"が<literal>application.xml</literal>から参照できるように しておく必要がありま"
+"す。"
+
+#. Tag: para
+#: Configuration.xml:221
+#, no-c-format
+msgid ""
+"If you want to use facelets (our recommendation), you must include "
+"<literal>jsf-facelets.jar</literal> in the <literal>WEB-INF/lib</literal> "
+"directory of the WAR."
+msgstr ""
+"facelets を使用する場合 (推奨) は WARの<literal>WEB-INF/lib</literal>ディレク"
+"トリに <literal>jsf-facelets.jar</literal>を含める必要があります。"
+
+#. Tag: para
+#: Configuration.xml:224
+#, no-c-format
+msgid ""
+"If you want to use the Seam tag library (most Seam applications do), you "
+"must include <literal>jboss-seam-ui.jar</literal> in the <literal>WEB-INF/"
+"lib</literal> directory of the WAR. If you want to use the PDF or email tag "
+"libraries, you need to put <literal>jboss-seam-pdf.jar</literal> or "
+"<literal>jboss-seam-mail.jar</literal> in <literal>WEB-INF/lib</literal>."
+msgstr ""
+"Seam のタグライブラリを使用する場合には (ほとんどの Seam アプリケーションで使"
+"用される)、 WAR ファイルの <literal>WEB-INF/lib</literal> ディレクトリに "
+"<literal>jboss-seam-ui.jar</literal> を含める必要があります。 PDFや email の"
+"タグライブラリを使用する場合には、 <literal>WEB-INF/lib</literal> に "
+"<literal>jboss-seam-pdf.jar</literal> または <literal>jboss-seam-mail.jar</"
+"literal> を含める必要があります。"
+
+#. Tag: para
+#: Configuration.xml:227
+#, no-c-format
+msgid ""
+"If you want to use the Seam debug page (only works for applications using "
+"facelets), you must include <literal>jboss-seam-debug.jar</literal> in the "
+"<literal>WEB-INF/lib</literal> directory of the WAR."
+msgstr ""
+"Seam デバッグページを使用する (facelets を使用している場合のみ利用可能) 場合"
+"には WARの <literal>WEB-INF/lib</literal>ディレクトリに<literal>jboss-seam-"
+"debug.jar</literal>を含めます。"
+
+#. Tag: para
+#: Configuration.xml:230
+#, no-c-format
+msgid ""
+"Seam ships with several example applications that are deployable in any Java "
+"EE container that supports EJB 3.0."
+msgstr ""
+"サンプルアプリケーションには EJB 3.0をサポートする Java EEコンテナに配備可能"
+"な幾つかの Seam アプリケーションがふくまれています。"
+
+#. Tag: para
+#: Configuration.xml:233
+#, no-c-format
+msgid ""
+"I really wish that was all there was to say on the topic of configuration "
+"but unfortunately we&#39;re only about a third of the way there. If you&#39;"
+"re too overwhelmed by all this tedious configuration stuff, feel free to "
+"skip over the rest of this section and come back to it later."
+msgstr ""
+"「さー、ここまでで設定は終わりですよ」と言えれば良いのですが、また3分の一が"
+"終わったところです。もし、 もう飽き飽きしておられたら、残りは飛ばして、必要な"
+"時にまた読み返すようにしていただいてもかまいません。"
+
+#. Tag: title
+#: Configuration.xml:237
+#, no-c-format
+msgid "Configuring Seam in Java SE, with the JBoss Embeddable EJB3 container"
+msgstr "JBoss 組み込み可能 EJB3 コンテナ の Seam 設定"
+
+#. Tag: para
+#: Configuration.xml:238
+#, no-c-format
+msgid ""
+"The JBoss Embeddable EJB3 container lets you run EJB3 components outside the "
+"context of the Java EE 5 application server. This is especially, but not "
+"only, useful for testing."
+msgstr ""
+"JBoss 組み込み可能 EJB3 コンテナは、 Java EE 5 アプリケーションサーバのコンテ"
+"キストの外側で EJB3 コンポーネントを稼動させることができ、特にアプリケーショ"
+"ンのテストを行うとき(それだけに限ることは有りませんが)に有用です。"
+
+#. Tag: para
+#: Configuration.xml:241
+#, no-c-format
+msgid ""
+"The Seam booking example application includes a TestNG integration test "
+"suite that runs on the Embeddable EJB3 container."
+msgstr ""
+"Seam 予約サンプルアプリケーションは、 組み込み可能 EJB3 コンテナの上でも動作"
+"可能な、 TestNG 統合テストスイートを含んでいます。"
+
+#. Tag: para
+#: Configuration.xml:252
+#, no-c-format
+msgid "The booking example application may even be deployed to Tomcat."
+msgstr "この予約サンプルアプリケーションは Tomcat にもデプロイ可能です。"
+
+#. Tag: title
+#: Configuration.xml:263
+#, no-c-format
+msgid "Installing the Embeddable EJB3 container"
+msgstr "組み込み可能 EJB3 コンテナのインストール"
+
+#. Tag: para
+#: Configuration.xml:264
+#, no-c-format
+msgid ""
+"Seam ships with a build of the Embeddable EJB3 container in the "
+"<literal>embedded-ejb</literal> directory. To use the Embeddable EJB3 "
+"container with Seam, add the <literal>embedded-ejb/conf</literal> directory, "
+"and all jars in the <literal>lib</literal> and <literal>embedded-ejb/lib</"
+"literal> directories to your classpath. Then, add the following line to "
+"<literal>components.xml</literal>:"
+msgstr ""
+"Seam は、<literal>embedded-ejb</literal> ディレクトリに、 組み込み可能 EJB3 "
+"コンテナの構造を付けて 出荷しました。 Seam で組み込み可能 EJB3 コンテナを使う"
+"ためには、 <literal>embedded-ejb/conf</literal> ディレクトリ、 そして、"
+"<literal>lib</literal> と <literal>embedded-ejb/lib</literal> ディレクトリの"
+"すべての JAR に、クラスパスを 通してください。 その次に、<literal>components."
+"xml</literal> に以下の行を追加してください。"
+
+#. Tag: programlisting
+#: Configuration.xml:267
+#, no-c-format
+msgid "&lt;core:ejb /&gt;"
+msgstr "&lt;core:ejb /&gt;"
+
+#. Tag: para
+#: Configuration.xml:268
+#, no-c-format
+msgid ""
+"This setting installs the built-in component named <literal>org.jboss.seam."
+"core.ejb</literal>. This component is responsible for bootstrapping the EJB "
+"container when Seam is started, and shutting it down when the web "
+"application is undeployed."
+msgstr ""
+"この設定は、<literal>org.jboss.seam.core.ejb</literal> と呼ばれる組み込みコン"
+"ポーネントをインストールします。 このコンポーネントは、 Seam が起動されるとき"
+"に EJB コンテナのブートストラップを、 WEB アプリケーションがアンデプロイされ"
+"るときに シャットダウンを担当します。"
+
+#. Tag: title
+#: Configuration.xml:271
+#, no-c-format
+msgid "Configuring a datasource with the Embeddable EJB3 container"
+msgstr "組み込み可能 EJB3 コンテナのデータソース設定"
+
+#. Tag: para
+#: Configuration.xml:272
+#, no-c-format
+msgid ""
+"You should refer to the Embeddable EJB3 container documentation for more "
+"information about configuring the container. You&#39;ll probably at least "
+"need to set up your own datasource. Embeddable EJB3 is implemented using the "
+"JBoss Microcontainer, so it&#39;s very easy to add new services to the "
+"minimal set of services provided by default. For example, I can add a new "
+"datasource by putting this <literal>jboss-beans.xml</literal> file in my "
+"classpath:"
+msgstr ""
+"コンテナ設定に関する詳細な情報は、 組み込み可能 EJB3 コンテナのドキュメント"
+"を、 参照してください。 少なくともデータソースの設定は必要になるでしょう。 組"
+"み込み可能 EJB3 は JBoss のマイクロコンテナを使用して実装されているため、 デ"
+"フォルトで提供された最小限のサービス一式によって、 簡単に新しいサービスを追加"
+"することができます。 例えば、この <literal>jboss-beans.xml</literal> ファイル"
+"をクラスパスに通すことで、 新しいデータソースを追加することが可能です。"
+
+#. Tag: programlisting
+#: Configuration.xml:275
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"\n"
+"&lt;deployment xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"urn:jboss:bean-deployer bean-deployer_1_0."
+"xsd\"\n"
+"            xmlns=\"urn:jboss:bean-deployer\"&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasourceBootstrap\"\n"
+"        class=\"org.jboss.resource.adapter.jdbc.local.LocalTxDataSource"
+"\"&gt;\n"
+"      &lt;property name=\"driverClass\"&gt;org.hsqldb.jdbcDriver&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"connectionURL\"&gt;jdbc:hsqldb:.&lt;/property&gt;\n"
+"      &lt;property name=\"userName\"&gt;sa&lt;/property&gt;\n"
+"      &lt;property name=\"jndiName\"&gt;java:/bookingDatasource&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"minSize\"&gt;0&lt;/property&gt;\n"
+"      &lt;property name=\"maxSize\"&gt;10&lt;/property&gt;\n"
+"      &lt;property name=\"blockingTimeout\"&gt;1000&lt;/property&gt;\n"
+"      &lt;property name=\"idleTimeout\"&gt;100000&lt;/property&gt;\n"
+"      &lt;property name=\"transactionManager\"&gt;\n"
+"        &lt;inject bean=\"TransactionManager\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"      &lt;property name=\"cachedConnectionManager\"&gt;\n"
+"        &lt;inject bean=\"CachedConnectionManager\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"      &lt;property name=\"initialContextProperties\"&gt;\n"
+"        &lt;inject bean=\"InitialContextProperties\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasource\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getDatasource\"&gt;\n"
+"         &lt;factory bean=\"bookingDatasourceBootstrap\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"&lt;/deployment&gt;"
+msgstr ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"\n"
+"&lt;deployment xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"urn:jboss:bean-deployer bean-deployer_1_0."
+"xsd\"\n"
+"            xmlns=\"urn:jboss:bean-deployer\"&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasourceBootstrap\"\n"
+"        class=\"org.jboss.resource.adapter.jdbc.local.LocalTxDataSource"
+"\"&gt;\n"
+"      &lt;property name=\"driverClass\"&gt;org.hsqldb.jdbcDriver&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"connectionURL\"&gt;jdbc:hsqldb:.&lt;/property&gt;\n"
+"      &lt;property name=\"userName\"&gt;sa&lt;/property&gt;\n"
+"      &lt;property name=\"jndiName\"&gt;java:/bookingDatasource&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"minSize\"&gt;0&lt;/property&gt;\n"
+"      &lt;property name=\"maxSize\"&gt;10&lt;/property&gt;\n"
+"      &lt;property name=\"blockingTimeout\"&gt;1000&lt;/property&gt;\n"
+"      &lt;property name=\"idleTimeout\"&gt;100000&lt;/property&gt;\n"
+"      &lt;property name=\"transactionManager\"&gt;\n"
+"        &lt;inject bean=\"TransactionManager\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"      &lt;property name=\"cachedConnectionManager\"&gt;\n"
+"        &lt;inject bean=\"CachedConnectionManager\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"      &lt;property name=\"initialContextProperties\"&gt;\n"
+"        &lt;inject bean=\"InitialContextProperties\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasource\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getDatasource\"&gt;\n"
+"         &lt;factory bean=\"bookingDatasourceBootstrap\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"&lt;/deployment&gt;"
+
+#. Tag: para
+#: Configuration.xml:277
+#, no-c-format
+msgid ""
+"The archive structure of a WAR-based deployment on an servlet engine like "
+"Tomcat will look something like this:"
+msgstr ""
+"Tomcat のような サーブレットエンジンへの WAR ベースのデプロイメントのアーカイ"
+"ブの構造は、以下のようになります。"
+
+#. Tag: programlisting
+#: Configuration.xml:280
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            myfaces-api.jar\n"
+"            myfaces-impl.jar\n"
+"            jboss-ejb3.jar\n"
+"            jboss-jca.jar\n"
+"            jboss-j2ee.jar\n"
+"            ...\n"
+"            mc-conf.jar/\n"
+"                ejb3-interceptors-aop.xml\n"
+"                embedded-jboss-beans.xml\n"
+"                default.persistence.properties\n"
+"                jndi.properties\n"
+"                login-config.xml\n"
+"                security-beans.xml\n"
+"                log4j.xml\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                    MANIFEST.MF\n"
+"                    persistence.xml\n"
+"                    jboss-beans.xml\n"
+"                log4j.xml\n"
+"                seam.properties\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            LoginBean.class\n"
+"                            Register.class\n"
+"                            RegisterBean.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            myfaces-api.jar\n"
+"            myfaces-impl.jar\n"
+"            jboss-ejb3.jar\n"
+"            jboss-jca.jar\n"
+"            jboss-j2ee.jar\n"
+"            ...\n"
+"            mc-conf.jar/\n"
+"                ejb3-interceptors-aop.xml\n"
+"                embedded-jboss-beans.xml\n"
+"                default.persistence.properties\n"
+"                jndi.properties\n"
+"                login-config.xml\n"
+"                security-beans.xml\n"
+"                log4j.xml\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                    MANIFEST.MF\n"
+"                    persistence.xml\n"
+"                    jboss-beans.xml\n"
+"                log4j.xml\n"
+"                seam.properties\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            LoginBean.class\n"
+"                            Register.class\n"
+"                            RegisterBean.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+
+#. Tag: para
+#: Configuration.xml:281
+#, no-c-format
+msgid ""
+"The <literal>mc-conf.jar</literal> just contains the standard JBoss "
+"Microcontainer configuration files for Embeddable EJB3. You won&#39;t "
+"usually need to edit these files yourself."
+msgstr ""
+"<literal>mc-conf.jar</literal>は、 組み込み可能 EJB3 用の 標準のJBoss マイク"
+"ロコンテナ 設定ファイルを含みます。 通常、これらのファイルを編集する必要はな"
+"いでしょう。"
+
+#. Tag: para
+#: Configuration.xml:284
+#, no-c-format
+msgid ""
+"Most of the Seam example applications may be deployed to Tomcat by running "
+"<literal>ant deploy.tomcat</literal>."
+msgstr ""
+"ほとんどの Seam サンプルアプリケーションは、<literal>ant deploy.tomcat</"
+"literal> を実行することによって、 Tomcat にデプロイすることも可能です。"
+
+#. Tag: title
+#: Configuration.xml:287
+#, no-c-format
+msgid "Configuring Seam in J2EE"
+msgstr "J2EEでの Seam の設定"
+
+#. Tag: para
+#: Configuration.xml:288
+#, no-c-format
+msgid ""
+"Seam is useful even if you&#39;re not yet ready to take the plunge into EJB "
+"3.0. In this case you would use Hibernate3 or JPA instead of EJB 3.0 "
+"persistence, and plain JavaBeans instead of session beans. You&#39;ll miss "
+"out on some of the nice features of session beans but it will be very easy "
+"to migrate to EJB 3.0 when you&#39;re ready and, in the meantime, you&#39;ll "
+"be able to take advantage of Seam&#39;s unique declarative state management "
+"architecture."
+msgstr ""
+"Seam は、EJB 3.0 を始める準備ができていなくても有用です。 この場合、 EJB 3.0 "
+"永続性の代わりにHibernate3 もしくは JPAを、 セッション Bean の代わりに plain "
+"JavaBeans を使用します。 セッションBeanのすばらしい特徴のいくらかは 失うかも"
+"しれませんが、 準備ができたとき、EJB 3.0 に移行することができ、 それまでの"
+"間、Seam のユニークな宣言的状態管理 アーキテクチャを利用が可能となります。"
+
+#. Tag: para
+#: Configuration.xml:299
+#, no-c-format
+msgid ""
+"Seam JavaBean components do not provide declarative transaction demarcation "
+"like session beans do. You <emphasis>could</emphasis> manage your "
+"transactions manually using the JTA <literal>UserTransaction</literal> (you "
+"could even implement your own declarative transaction management in a Seam "
+"interceptor). But most applications will use Seam managed transactions when "
+"using Hibernate with JavaBeans. Follow the instructions in the persistence "
+"chapter to install <literal>TransactionalSeamPhaseListener</literal>."
+msgstr ""
+"Seam JavaBean コンポーネントはセッション Bean がするような宣言的トランザク"
+"ション区分は提供しません。 JTA <literal>UserTransaction</literal>を使用し"
+"て、 マニュアルでトランザクションを管理することもできるかもしれません。 "
+"(Seam インターセプタで独自の宣言的トランザクション管理もできるかもしれませ"
+"ん。) しかし、JavaBean といっしょに Hibernate を 使用する場合、 ほとんどのア"
+"プリケーションは、 Seam 管理トランザクションを使用するでしょう。 "
+"SeamExtendedManagedPersistencePhaseListenerを有効にするためには、 永続性の章"
+"の指示に従ってください。"
+
+#. Tag: para
+#: Configuration.xml:302
+#, no-c-format
+msgid ""
+"The Seam distribution includes a version of the booking example application "
+"that uses Hibernate3 and JavaBeans instead of EJB3, and another version that "
+"uses JPA and JavaBeans. These example applications are ready to deploy into "
+"any J2EE application server."
+msgstr ""
+"Seam の配布には、EJB3 の代わりに Hibernate や JavaBean を使用した 予約サンプ"
+"ルアプリケーションが含まれています。 このサンプルアプリケーションはどんなJ2EE"
+"アプリケーションサーバでも すぐにデプロイ可能です。"
+
+#. Tag: title
+#: Configuration.xml:305
+#, no-c-format
+msgid "Boostrapping Hibernate in Seam"
+msgstr "Seam での Hibernateのブートストラップ"
+
+#. Tag: para
+#: Configuration.xml:306
+#, no-c-format
+msgid ""
+"Seam will bootstrap a Hibernate <literal>SessionFactory</literal> from your "
+"<literal>hibernate.cfg.xml</literal> file if you install a built-in "
+"component:"
+msgstr ""
+"Seam は組み込みコンポーネント (org.jboss.seam.core.hibernate ) がインストール"
+"されていれば、 <literal>hibernate.cfg.xml</literal> ファイルから、Hibernateの"
+"<literal>SessionFactory</literal>をブートストラップします。"
+
+#. Tag: programlisting
+#: Configuration.xml:309
+#, no-c-format
+msgid "&lt;core:hibernate-session-factory name=\"hibernateSessionFactory\"/&gt;"
+msgstr "&lt;core:hibernate-session-factory name=\"hibernateSessionFactory\"/&gt;"
+
+#. Tag: para
+#: Configuration.xml:310
+#, no-c-format
+msgid ""
+"You will also need to configure a <emphasis>managed session</emphasis> if "
+"you want a Seam managed Hibernate <literal>Session</literal> to be available "
+"via injection."
+msgstr ""
+"この時、インジェクションを使って、Seamの管理する Hibernateの"
+"<literal>Session</literal>を利用するのであれば、 <emphasis>managed session</"
+"emphasis>を設定する必要があります。"
+
+#. Tag: title
+#: Configuration.xml:313
+#, no-c-format
+msgid "Boostrapping JPA in Seam"
+msgstr "Seam での JPAのブートストラップ"
+
+#. Tag: para
+#: Configuration.xml:314
+#, no-c-format
+msgid ""
+"Seam will bootstrap a JPA <literal>EntityManagerFactory</literal> from your "
+"<literal>persistence.xml</literal> file if you install this built-in "
+"component:"
+msgstr ""
+"Seam はもし組み込みコンポーネントがインストールされていれば、"
+"<literal>persistence.xml</literal> から<literal>EntityManagerFactory</"
+"literal> JPAをブートストラップします。"
+
+#. Tag: programlisting
+#: Configuration.xml:317
+#, no-c-format
+msgid "&lt;core:entity-manager-factory name=\"entityManagerFactory\"/&gt;"
+msgstr "&lt;core:entity-manager-factory name=\"entityManagerFactory\"/&gt;"
+
+#. Tag: para
+#: Configuration.xml:318
+#, no-c-format
+msgid ""
+"You will also need to configure a <emphasis>managed persistencece context</"
+"emphasis> if you want a Seam managed JPA <literal>EntityManager</literal> to "
+"be available via injection."
+msgstr ""
+"インジェクションを使って、Seamの管理する JPA, <literal>EntityManager</"
+"literal>を利用するためには、 <emphasis>managed persistencece context</"
+"emphasis>を設定する必要があります。"
+
+#. Tag: para
+#: Configuration.xml:322
+#, no-c-format
+msgid "We can package our application as a WAR, in the following structure:"
+msgstr ""
+"アプリケーションは WARとしてパッケージすることが出来、その構成は以下の様にな"
+"ります。"
+
+#. Tag: programlisting
+#: Configuration.xml:325
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            hibernate3.jar\n"
+"            hibernate-annotations.jar\n"
+"            ...\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                   MANIFEST.MF\n"
+"                seam.properties\n"
+"                hibernate.cfg.xml\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            Register.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            hibernate3.jar\n"
+"            hibernate-annotations.jar\n"
+"            ...\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                   MANIFEST.MF\n"
+"                seam.properties\n"
+"                hibernate.cfg.xml\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            Register.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+
+#. Tag: para
+#: Configuration.xml:326
+#, no-c-format
+msgid ""
+"If we want to deploy Hibernate in a non-J2EE environment like Tomcat or "
+"TestNG, we need to do a little bit more work."
+msgstr ""
+"Tomcatや TestNGのような非 Java EE環境下で Hibernate を配備する場合には、もう"
+"少し設定が必要です。"
+
+#. Tag: title
+#: Configuration.xml:330
+#, no-c-format
+msgid "Configuring Seam in Java SE, with the JBoss Microcontainer"
+msgstr "JBoss マイクロコンテナを使い Seamを Java SE環境下で設定する"
+
+#. Tag: para
+#: Configuration.xml:331
+#, no-c-format
+msgid ""
+"The Seam support for Hibernate and JPA requires JTA and a JCA datasource. If "
+"you are running in a non-EE environment like Tomcat or TestNG you can run "
+"these services, and Hibernate itself, in the JBoss Microcontainer."
+msgstr ""
+"Seamは JTAと JCAデータソースを要求する Hibernate および JPAをサポートしていま"
+"す。tomcat や TestNGのような、非 Java EE環境下でJBossマイクロコンテナを使用し"
+"て、これらのサービスや Hibernateを走らせる事ができます。"
+
+#. Tag: para
+#: Configuration.xml:334
+#, no-c-format
+msgid ""
+"You can even deploy the Hibernate and JPA versions of the booking example in "
+"Tomcat."
+msgstr ""
+"予約システムサンプルアプリケーションの Hibernateと JPAのバージョンを tomcat上"
+"に配備することも出来ます。"
+
+#. Tag: para
+#: Configuration.xml:345
+#, no-c-format
+msgid ""
+"Seam ships with an example Microcontainer configuration in "
+"<literal>microcontainer/conf/jboss-beans.xml</literal> that provides all the "
+"things you need to run Seam with Hibernate in any non-EE environment. Just "
+"add the <literal>microcontainer/conf</literal> directory, and all jars in "
+"the <literal>lib</literal> and <literal>microcontainer/lib</literal> "
+"directories to your classpath. Refer to the documentation for the JBoss "
+"Microcontainer for more information."
+msgstr ""
+"Seam のサンプルファイルの<literal>microcontainer/conf/jboss-beans.xml</"
+"literal>にあるマイクロコンテナ設定には、非 Java EE環境下でHibernateと共にSeam"
+"を走らせる為に必要な設定のすべてがあります。 <literal>microcontainer/conf</"
+"literal>ディレクトリを作り、サンプルの<literal>lib</literal> と "
+"<literal>microcontainer/lib</literal> ディレクトリに有る jar ファイルをクラス"
+"パスに追加してください。 詳細は、JBoss マイクロコンテナのドキュメンテーション"
+"を参照してください。"
+
+#. Tag: title
+#: Configuration.xml:348
+#, no-c-format
+msgid "Using Hibernate and the JBoss Microcontainer"
+msgstr "JBoss マイクロコンテナと Hibernateを使用する"
+
+#. Tag: para
+#: Configuration.xml:349
+#, no-c-format
+msgid ""
+"The built-in Seam component named <literal>org.jboss.seam.core."
+"microcontainer</literal> bootstraps the microcontainer. As before, we "
+"probably want to use a Seam managed session."
+msgstr ""
+"Seamの組み込みコンポーネント<literal>org.jboss.seam.core.microcontainer</"
+"literal>が、マイクロンテナをブートストラップします。 ここでも、Seamの管理する"
+"セッションとして使用します。"
+
+#. Tag: programlisting
+#: Configuration.xml:352
+#, no-c-format
+msgid ""
+"&lt;core:microcontainer/&gt;\n"
+"\n"
+"&lt;core:managed-hibernate-session name=\"bookingDatabase\" auto-create="
+"\"true\"\n"
+"    session-factory-jndi-name=\"java:/bookingSessionFactory\"/&gt;"
+msgstr ""
+"&lt;core:microcontainer/&gt;\n"
+"\n"
+"&lt;core:managed-hibernate-session name=\"bookingDatabase\" auto-create="
+"\"true\"\n"
+"    session-factory-jndi-name=\"java:/bookingSessionFactory\"/&gt;"
+
+#. Tag: para
+#: Configuration.xml:353
+#, no-c-format
+msgid ""
+"Where <literal>java:/bookingSessionFactory</literal> is the name of the "
+"Hibernate session factory specified in <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+"ここで <literal>java:/bookingSessionFactory</literal> は<literal>hibernate."
+"cfg.xml</literal>で指定された Hibernaeteのファクトリの名前です。"
+
+#. Tag: para
+#: Configuration.xml:356
+#, no-c-format
+msgid ""
+"You&#39;ll need to provide a <literal>jboss-beans.xml</literal> file that "
+"installs JNDI, JTA, your JCA datasource and Hibernate into the "
+"microcontainer:"
+msgstr ""
+"JNDI、JTA、JCAデータソース、それに Hibernateをマイクロコンテナにインストール"
+"するために<literal>jboss-beans.xml</literal> ファイルが必要です。"
+
+#. Tag: programlisting
+#: Configuration.xml:359
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"\n"
+"&lt;deployment xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"urn:jboss:bean-deployer bean-deployer_1_0."
+"xsd\"\n"
+"            xmlns=\"urn:jboss:bean-deployer\"&gt;\n"
+"\n"
+"   &lt;bean name=\"Naming\" class=\"org.jnp.server.SingletonNamingServer\"/"
+"&gt;\n"
+"\n"
+"   &lt;bean name=\"TransactionManagerFactory\" \n"
+"      class=\"org.jboss.seam.microcontainer.TransactionManagerFactory\"/"
+"&gt;\n"
+"   &lt;bean name=\"TransactionManager\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getTransactionManager\"&gt;\n"
+"         &lt;factory bean=\"TransactionManagerFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasourceFactory\" class=\"org.jboss.seam."
+"microcontainer.DataSourceFactory\"&gt;\n"
+"      &lt;property name=\"driverClass\"&gt;org.hsqldb.jdbcDriver&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"connectionUrl\"&gt;jdbc:hsqldb:.&lt;/property&gt;\n"
+"      &lt;property name=\"userName\"&gt;sa&lt;/property&gt;\n"
+"      &lt;property name=\"jndiName\"&gt;java:/hibernateDatasource&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"minSize\"&gt;0&lt;/property&gt;\n"
+"      &lt;property name=\"maxSize\"&gt;10&lt;/property&gt;\n"
+"      &lt;property name=\"blockingTimeout\"&gt;1000&lt;/property&gt;\n"
+"      &lt;property name=\"idleTimeout\"&gt;100000&lt;/property&gt;\n"
+"      &lt;property name=\"transactionManager\"&gt;&lt;inject bean="
+"\"TransactionManager\"/&gt;&lt;/property&gt;\n"
+"   &lt;/bean&gt;\n"
+"   &lt;bean name=\"bookingDatasource\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getDataSource\"&gt;\n"
+"         &lt;factory bean=\"bookingDatasourceFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingSessionFactoryFactory\" \n"
+"      class=\"org.jboss.seam.microcontainer.HibernateFactory\"/&gt;\n"
+"   &lt;bean name=\"bookingSessionFactory\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getSessionFactory\"&gt;\n"
+"         &lt;factory bean=\"bookingSessionFactoryFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"      &lt;depends&gt;bookingDatasource&lt;/depends&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"&lt;/deployment&gt;"
+msgstr ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"\n"
+"&lt;deployment xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"urn:jboss:bean-deployer bean-deployer_1_0."
+"xsd\"\n"
+"            xmlns=\"urn:jboss:bean-deployer\"&gt;\n"
+"\n"
+"   &lt;bean name=\"Naming\" class=\"org.jnp.server.SingletonNamingServer\"/"
+"&gt;\n"
+"\n"
+"   &lt;bean name=\"TransactionManagerFactory\" \n"
+"      class=\"org.jboss.seam.microcontainer.TransactionManagerFactory\"/"
+"&gt;\n"
+"   &lt;bean name=\"TransactionManager\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getTransactionManager\"&gt;\n"
+"         &lt;factory bean=\"TransactionManagerFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasourceFactory\" class=\"org.jboss.seam."
+"microcontainer.DataSourceFactory\"&gt;\n"
+"      &lt;property name=\"driverClass\"&gt;org.hsqldb.jdbcDriver&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"connectionUrl\"&gt;jdbc:hsqldb:.&lt;/property&gt;\n"
+"      &lt;property name=\"userName\"&gt;sa&lt;/property&gt;\n"
+"      &lt;property name=\"jndiName\"&gt;java:/hibernateDatasource&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"minSize\"&gt;0&lt;/property&gt;\n"
+"      &lt;property name=\"maxSize\"&gt;10&lt;/property&gt;\n"
+"      &lt;property name=\"blockingTimeout\"&gt;1000&lt;/property&gt;\n"
+"      &lt;property name=\"idleTimeout\"&gt;100000&lt;/property&gt;\n"
+"      &lt;property name=\"transactionManager\"&gt;&lt;inject bean="
+"\"TransactionManager\"/&gt;&lt;/property&gt;\n"
+"   &lt;/bean&gt;\n"
+"   &lt;bean name=\"bookingDatasource\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getDataSource\"&gt;\n"
+"         &lt;factory bean=\"bookingDatasourceFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingSessionFactoryFactory\" \n"
+"      class=\"org.jboss.seam.microcontainer.HibernateFactory\"/&gt;\n"
+"   &lt;bean name=\"bookingSessionFactory\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getSessionFactory\"&gt;\n"
+"         &lt;factory bean=\"bookingSessionFactoryFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"      &lt;depends&gt;bookingDatasource&lt;/depends&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"&lt;/deployment&gt;"
+
+#. Tag: para
+#: Configuration.xml:361
+#, no-c-format
+msgid "The WAR could have the following structure:"
+msgstr "WAR は下のような構成になります。"
+
+#. Tag: programlisting
+#: Configuration.xml:364
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            hibernate3.jar\n"
+"            ...\n"
+"            jboss-microcontainer.jar\n"
+"            jboss-jca.jar\n"
+"            ...\n"
+"            myfaces-api.jar\n"
+"            myfaces-impl.jar\n"
+"            mc-conf.jar/\n"
+"                jndi.properties\n"
+"                log4j.xml\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                    MANIFEST.MF\n"
+"                    jboss-beans.xml\n"
+"                seam.properties\n"
+"                hibernate.cfg.xml\n"
+"                log4j.xml\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            Register.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            hibernate3.jar\n"
+"            ...\n"
+"            jboss-microcontainer.jar\n"
+"            jboss-jca.jar\n"
+"            ...\n"
+"            myfaces-api.jar\n"
+"            myfaces-impl.jar\n"
+"            mc-conf.jar/\n"
+"                jndi.properties\n"
+"                log4j.xml\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                    MANIFEST.MF\n"
+"                    jboss-beans.xml\n"
+"                seam.properties\n"
+"                hibernate.cfg.xml\n"
+"                log4j.xml\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            Register.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+
+#. Tag: title
+#: Configuration.xml:365
+#, no-c-format
+msgid "Configuring jBPM in Seam"
+msgstr "SeamでのjBPM設定"
+
+#. Tag: para
+#: Configuration.xml:366
+#, no-c-format
+msgid ""
+"Seam&#39;s jBPM integration is not installed by default, so you&#39;ll need "
+"to enable jBPM by installing a built-in component. You&#39;ll also need to "
+"explicitly list your process and pageflow definitions. In "
+"<literal>components.xml</literal>:"
+msgstr ""
+"SeamのjBPMインテグレーションはデフォルトでは、設定されませんので、 組み込みコ"
+"ンポーネントを設定することで、jBPMを有効化します。 また、プロセスとページフ"
+"ローを<literal>components.xml</literal>に 明示的に指定しなければいけません:"
+
+#. Tag: programlisting
+#: Configuration.xml:369
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:pageflow-definitions&gt;\n"
+"        &lt;value&gt;createDocument.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;editDocument.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;approveDocument.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:pageflow-definitions&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;documentLifecycle.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:pageflow-definitions&gt;\n"
+"        &lt;value&gt;createDocument.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;editDocument.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;approveDocument.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:pageflow-definitions&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;documentLifecycle.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+
+#. Tag: para
+#: Configuration.xml:370
+#, no-c-format
+msgid ""
+"No further special configuration is needed if you only have pageflows. If "
+"you do have business process definitions, you need to provide a jBPM "
+"configuration, and a Hibernate configuration for jBPM. The Seam DVD Store "
+"demo includes example <literal>jbpm.cfg.xml</literal> and <literal>hibernate."
+"cfg.xml</literal> files that will work with Seam:"
+msgstr ""
+"ページフローのみの指定であれば、これ以上の設定は不要です。プロセス定義を 利用"
+"する場合、jBPM設定を用意しなければなりません、あわせて、jBPMで利用する "
+"Hibernate設定も用意する必要があります。Seam DVD Store demoは Seam で機能する "
+"<literal>jbpm.cfg.xml</literal>と<literal>hibernate.cfg.xml</literal>を含め"
+"た サンプルです:"
+
+#. Tag: programlisting
+#: Configuration.xml:373
+#, no-c-format
+msgid ""
+"&lt;jbpm-configuration&gt;\n"
+"\n"
+"  &lt;jbpm-context&gt;\n"
+"    &lt;service name=\"persistence\"&gt;\n"
+"       &lt;factory&gt;\n"
+"          &lt;bean class=\"org.jbpm.persistence.db."
+"DbPersistenceServiceFactory\"&gt;\n"
+"             &lt;field name=\"isTransactionEnabled\"&gt;&lt;false/&gt;&lt;/"
+"field&gt;\n"
+"          &lt;/bean&gt;\n"
+"       &lt;/factory&gt;\n"
+"    &lt;/service&gt;\n"
+"    &lt;service name=\"message\" factory=\"org.jbpm.msg.db."
+"DbMessageServiceFactory\" /&gt;\n"
+"    &lt;service name=\"scheduler\" factory=\"org.jbpm.scheduler.db."
+"DbSchedulerServiceFactory\" /&gt;\n"
+"    &lt;service name=\"logging\" factory=\"org.jbpm.logging.db."
+"DbLoggingServiceFactory\" /&gt;\n"
+"    &lt;service name=\"authentication\" \n"
+"       factory=\"org.jbpm.security.authentication."
+"DefaultAuthenticationServiceFactory\" /&gt;\n"
+"  &lt;/jbpm-context&gt;\n"
+"\n"
+"&lt;/jbpm-configuration&gt;"
+msgstr ""
+"&lt;jbpm-configuration&gt;\n"
+"\n"
+"  &lt;jbpm-context&gt;\n"
+"    &lt;service name=\"persistence\"&gt;\n"
+"       &lt;factory&gt;\n"
+"          &lt;bean class=\"org.jbpm.persistence.db."
+"DbPersistenceServiceFactory\"&gt;\n"
+"             &lt;field name=\"isTransactionEnabled\"&gt;&lt;false/&gt;&lt;/"
+"field&gt;\n"
+"          &lt;/bean&gt;\n"
+"       &lt;/factory&gt;\n"
+"    &lt;/service&gt;\n"
+"    &lt;service name=\"message\" factory=\"org.jbpm.msg.db."
+"DbMessageServiceFactory\" /&gt;\n"
+"    &lt;service name=\"scheduler\" factory=\"org.jbpm.scheduler.db."
+"DbSchedulerServiceFactory\" /&gt;\n"
+"    &lt;service name=\"logging\" factory=\"org.jbpm.logging.db."
+"DbLoggingServiceFactory\" /&gt;\n"
+"    &lt;service name=\"authentication\" \n"
+"       factory=\"org.jbpm.security.authentication."
+"DefaultAuthenticationServiceFactory\" /&gt;\n"
+"  &lt;/jbpm-context&gt;\n"
+"\n"
+"&lt;/jbpm-configuration&gt;"
+
+#. Tag: para
+#: Configuration.xml:374
+#, no-c-format
+msgid ""
+"The most important thing to notice here is that jBPM transaction control is "
+"disabled. Seam or EJB3 should control the JTA transactions."
+msgstr ""
+"ここでのもっとも重要なことは、jBPMトランザクション制御は無効になっているとい"
+"うことです。 Seam、あるいはEJB3がJTAトランザクションを制御するべきです。"
+
+#. Tag: para
+#: Configuration.xml:378
+#, no-c-format
+msgid ""
+"There is not yet any well-defined packaging format for jBPM configuration "
+"and process/pageflow definition files. In the Seam examples we&#39;ve "
+"decided to simply package all these files into the root of the EAR. In "
+"future, we will probably design some other standard packaging format. So the "
+"EAR looks something like this:"
+msgstr ""
+"まだ、jBPM設定とプロセス/ページフロー定義を含めた場合での整理されたパッケージ"
+"ングフォーマット ではありません。このSeamサンプルでは、EARのルートにすべての"
+"ファイルを単純に パッケージングすることにしました。将来、標準パッケージング"
+"フォーマットを 提供しようとおもっています。EARはこのような感じになります:"
+
+#. Tag: programlisting
+#: Configuration.xml:381
+#, no-c-format
+msgid ""
+"my-application.ear/\n"
+"    jboss-seam.jar\n"
+"    el-api.jar\n"
+"    el-ri.jar\n"
+"    jbpm-3.1.jar\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"        application.xml\n"
+"    my-application.war/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"        WEB-INF/\n"
+"            web.xml\n"
+"            components.xml\n"
+"            faces-config.xml\n"
+"            lib/\n"
+"                jsf-facelets.jar\n"
+"                jboss-seam-ui.jar\n"
+"        login.jsp\n"
+"        register.jsp\n"
+"        ...\n"
+"    my-application.jar/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"            persistence.xml\n"
+"        seam.properties\n"
+"        org/\n"
+"            jboss/\n"
+"                myapplication/\n"
+"                    User.class\n"
+"                    Login.class\n"
+"                    LoginBean.class\n"
+"                    Register.class\n"
+"                    RegisterBean.class\n"
+"                    ...\n"
+"    jbpm.cfg.xml\n"
+"    hibernate.cfg.xml\n"
+"    createDocument.jpdl.xml\n"
+"    editDocument.jpdl.xml\n"
+"    approveDocument.jpdl.xml\n"
+"    documentLifecycle.jpdl.xml"
+msgstr ""
+"my-application.ear/\n"
+"    jboss-seam.jar\n"
+"    el-api.jar\n"
+"    el-ri.jar\n"
+"    jbpm-3.1.jar\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"        application.xml\n"
+"    my-application.war/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"        WEB-INF/\n"
+"            web.xml\n"
+"            components.xml\n"
+"            faces-config.xml\n"
+"            lib/\n"
+"                jsf-facelets.jar\n"
+"                jboss-seam-ui.jar\n"
+"        login.jsp\n"
+"        register.jsp\n"
+"        ...\n"
+"    my-application.jar/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"            persistence.xml\n"
+"        seam.properties\n"
+"        org/\n"
+"            jboss/\n"
+"                myapplication/\n"
+"                    User.class\n"
+"                    Login.class\n"
+"                    LoginBean.class\n"
+"                    Register.class\n"
+"                    RegisterBean.class\n"
+"                    ...\n"
+"    jbpm.cfg.xml\n"
+"    hibernate.cfg.xml\n"
+"    createDocument.jpdl.xml\n"
+"    editDocument.jpdl.xml\n"
+"    approveDocument.jpdl.xml\n"
+"    documentLifecycle.jpdl.xml"
+
+#. Tag: para
+#: Configuration.xml:382
+#, no-c-format
+msgid ""
+"Remember to add <literal>jbpm-3.1.jar</literal> to the manifest of your EJB-"
+"JAR and WAR."
+msgstr ""
+"<literal>jbpm-3.1.jar</literal>をEJB-JARとWARのマニフェストファイルに 追加す"
+"ることを忘れないでください。"
+
+#. Tag: title
+#: Configuration.xml:385
+#, no-c-format
+msgid "Configuring Seam in a Portal"
+msgstr "ポータルでの Seamの設定"
+
+#. Tag: para
+#: Configuration.xml:386
+#, no-c-format
+msgid ""
+"To run a Seam application as a portlet, you&#39;ll need to provide certain "
+"portlet metadata (<literal>portlet.xml</literal>, etc) in addition to the "
+"usual Java EE metadata. See the <literal>examples/portal</literal> directory "
+"for an example of the booking demo preconfigured to run on JBoss Portal."
+msgstr ""
+"Seamのアプリケーションをポートレットとして実行する場合には、通常の Java EE の"
+"メタデータに加えて、特定のポートレットのメタデータ (<literal>portlet.xml</"
+"literal> など) を与える必要があります。 JBoss Portal 上で稼働するよう事前設定"
+"されたブッキングデモのサンプルは <literal>examples/portal</literal> ディレク"
+"トリにあります。"
+
+#. Tag: para
+#: Configuration.xml:389
+#, no-c-format
+msgid ""
+"In addition, you&#39;ll need to use a portlet-specific phase listener "
+"instead of <literal>SeamPhaseListener</literal> or "
+"<literal>TransactionalSeamPhaseListener</literal>. The "
+"<literal>SeamPortletPhaseListener</literal> and "
+"<literal>TransactionalSeamPortletPhaseListener</literal> are adapted to the "
+"portlet lifecycle. I would like to offer my sincerest apologies for the name "
+"of that last class. I really couldn&#39;t think of anything better. Sorry."
+msgstr ""
+"また、<literal>SeamPhaseListener</literal> や "
+"<literal>TransactionalSeamPhaseListener</literal> の替わりにポートレットに固"
+"有のリスナーを使う必要があります。 <literal>SeamPortletPhaseListener</"
+"literal> 及び <literal>TransactionalSeamPortletPhaseListener</literal> はポー"
+"トレットライフサイクルに適合します。 この2番目のクラスの名前については適切な"
+"物が思いつかず、このようになってしまいましたことご諒解ください。"
+
+#. Tag: title
+#: Configuration.xml:392
+#, no-c-format
+msgid "Configuring SFSB and Session Timeouts in JBoss AS"
+msgstr "JBoss ASでの SFSBとセッションタイムアウトの設定"
+
+#. Tag: para
+#: Configuration.xml:393
+#, no-c-format
+msgid ""
+"It is very important that the timeout for Stateful Session Beans is set "
+"higher than the timeout for HTTP Sessions, otherwise SFSB&#39;s may time out "
+"before the user&#39;s HTTP session has ended. JBoss Application Server has a "
+"default session bean timeout of 30 minutes, which is configured in "
+"<literal>server/default/conf/standardjboss.xml</literal> (replace "
+"<emphasis>default</emphasis> with your own configuration)."
+msgstr ""
+"Stateful Session Beans のタイムアウトは HTTP Sessions のタイムアウトより高く"
+"セットしておくことが非常に重要です。 これを行わないと、 SFSB はユーザーの "
+"HTTP セッションが終了する前にタイムアウトしてしまうことがあります。 JBoss "
+"Application Server のデフォルトのセッション bean タイムアウトは 30 分になって"
+"います。 これは <literal>server/default/conf/standardjboss.xml</literal> 内で"
+"設定されています (<emphasis>default</emphasis> はご使用の設定に置き換えてくだ"
+"さい)。"
+
+#. Tag: para
+#: Configuration.xml:396
+#, no-c-format
+msgid ""
+"The default SFSB timeout can be adjusted by modifying the value of "
+"<literal>max-bean-life</literal> in the "
+"<literal>LRUStatefulContextCachePolicy</literal> cache configuration:"
+msgstr ""
+"デフォルトの SFSB タイムアウトは <literal>LRUStatefulContextCachePolicy</"
+"literal> キャッシュ設定内の <literal>max-bean-life</literal> の値を変更して調"
+"整することができます。"
+
+#. Tag: programlisting
+#: Configuration.xml:399
+#, no-c-format
+msgid ""
+"&lt;container-cache-conf&gt;\n"
+"        &lt;cache-policy&gt;org.jboss.ejb.plugins."
+"LRUStatefulContextCachePolicy&lt;/cache-policy&gt;\n"
+"        &lt;cache-policy-conf&gt;\n"
+"          &lt;min-capacity&gt;50&lt;/min-capacity&gt;\n"
+"          &lt;max-capacity&gt;1000000&lt;/max-capacity&gt;\n"
+"          &lt;remover-period&gt;1800&lt;/remover-period&gt;\n"
+"\n"
+"          &lt;!-- SFSB timeout in seconds; 1800 seconds == 30 minutes --"
+"&gt;\n"
+"          &lt;max-bean-life&gt;1800&lt;/max-bean-life&gt;  \n"
+"          \n"
+"          &lt;overager-period&gt;300&lt;/overager-period&gt;\n"
+"          &lt;max-bean-age&gt;600&lt;/max-bean-age&gt;\n"
+"          &lt;resizer-period&gt;400&lt;/resizer-period&gt;\n"
+"          &lt;max-cache-miss-period&gt;60&lt;/max-cache-miss-period&gt;\n"
+"          &lt;min-cache-miss-period&gt;1&lt;/min-cache-miss-period&gt;\n"
+"          &lt;cache-load-factor&gt;0.75&lt;/cache-load-factor&gt;\n"
+"        &lt;/cache-policy-conf&gt;\n"
+"      &lt;/container-cache-conf&gt;"
+msgstr ""
+"&lt;container-cache-conf&gt;\n"
+"        &lt;cache-policy&gt;org.jboss.ejb.plugins."
+"LRUStatefulContextCachePolicy&lt;/cache-policy&gt;\n"
+"        &lt;cache-policy-conf&gt;\n"
+"          &lt;min-capacity&gt;50&lt;/min-capacity&gt;\n"
+"          &lt;max-capacity&gt;1000000&lt;/max-capacity&gt;\n"
+"          &lt;remover-period&gt;1800&lt;/remover-period&gt;\n"
+"\n"
+"          &lt;!-- SFSB timeout in seconds; 1800 seconds == 30 minutes --"
+"&gt;\n"
+"          &lt;max-bean-life&gt;1800&lt;/max-bean-life&gt;  \n"
+"          \n"
+"          &lt;overager-period&gt;300&lt;/overager-period&gt;\n"
+"          &lt;max-bean-age&gt;600&lt;/max-bean-age&gt;\n"
+"          &lt;resizer-period&gt;400&lt;/resizer-period&gt;\n"
+"          &lt;max-cache-miss-period&gt;60&lt;/max-cache-miss-period&gt;\n"
+"          &lt;min-cache-miss-period&gt;1&lt;/min-cache-miss-period&gt;\n"
+"          &lt;cache-load-factor&gt;0.75&lt;/cache-load-factor&gt;\n"
+"        &lt;/cache-policy-conf&gt;\n"
+"      &lt;/container-cache-conf&gt;"
+
+#. Tag: para
+#: Configuration.xml:400
+#, no-c-format
+msgid ""
+"The default HTTP session timeout can be modified in <literal>server/default/"
+"deploy/jbossweb-tomcat55.sar/conf/web.xml</literal> for JBoss 4.0.x, or in "
+"<literal>server/default/deploy/jboss-web.deployer/conf/web.xml</literal> for "
+"JBoss 4.2.x. The following entry in this file controls the default session "
+"timeout for all web applications:"
+msgstr ""
+"デフォルトの HTTP セッションタイムアウトは、 JBoss 4.0.x なら "
+"<literal>server/default/deploy/jbossweb-tomcat55.sar/conf/web.xml</literal> "
+"で、 JBoss 4.2.x なら <literal>server/default/deploy/jboss-web.deployer/conf/"
+"web.xml</literal> でそれぞれ変更することができます。 このファイルの次のエント"
+"リで、 すべてのウェブアプリケーションのデフォルトセッションタイムアウトを制御"
+"します。"
+
+#. Tag: programlisting
+#: Configuration.xml:403
+#, no-c-format
+msgid ""
+"&lt;session-config&gt;\n"
+"      &lt;!-- HTTP Session timeout, in minutes --&gt;\n"
+"      &lt;session-timeout&gt;30&lt;/session-timeout&gt;\n"
+"   &lt;/session-config&gt;"
+msgstr ""
+"&lt;session-config&gt;\n"
+"      &lt;!-- HTTP Session timeout, in minutes --&gt;\n"
+"      &lt;session-timeout&gt;30&lt;/session-timeout&gt;\n"
+"   &lt;/session-config&gt;"
+
+#. Tag: para
+#: Configuration.xml:404
+#, no-c-format
+msgid ""
+"To override this value for your own application, simply include this entry "
+"in your application&#39;s own <literal>web.xml</literal>."
+msgstr ""
+"ご使用のアプリケーションの値を上書きするには、 そのアプリケーション自体の "
+"<literal>web.xml</literal> 内にこのエントリを含ませるだけで上書きできます。"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Controls.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Controls.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Controls.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1492 @@
+# translation of Controls.po to Japanese
+# Noriko Mizumoto <noriko at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Controls\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-30 01:52+0000\n"
+"PO-Revision-Date: 2007-11-01 10:44+1000\n"
+"Last-Translator: Noriko Mizumoto <noriko at redhat.com>\n"
+"Language-Team: Japanese <fedora-trans-ja at redhat.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Controls.xml:6
+#, no-c-format
+msgid "Seam JSF controls"
+msgstr "Seam JSF コントロール"
+
+#. Tag: para
+#: Controls.xml:7
+#, no-c-format
+msgid ""
+"Seam includes a number of JSF controls that are useful for working with "
+"Seam. These are intended to complement the built-in JSF controls, and "
+"controls from other third-party libraries. We recommend the Ajax4JSF and ADF "
+"faces (now Trinidad) tag libraries for use with Seam. We do not recommend "
+"the use of the Tomahawk tag library."
+msgstr ""
+"Seam には Seam での作業に便利な JSF コントロールがいくつか含まれています。 "
+"JSF コントロールにおけるビルドの補完が目的で、 他のサードパーティのライブラリ"
+"からの管理を行います。 Seam と併用する際は、 Ajax4JSF 及び ADF (現在は "
+"Trinidad) タグライブラリの使用を推奨します。 Tomahawk タグライブラリの使用は"
+"お薦めできません。"
+
+#. Tag: para
+#: Controls.xml:10
+#, no-c-format
+msgid ""
+"To use these controls, define the \"<literal>s</literal>\" namespace in your "
+"page as follows (facelets only):"
+msgstr ""
+"これらのコントロールを使用するには、 以下のように使用するページで "
+"\"<literal>s</literal>\" ネームスペースを定義します (facelets 固有)。"
+
+#. Tag: programlisting
+#: Controls.xml:13
+#, no-c-format
+msgid ""
+"&lt;html xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"      xmlns:s=\"http://jboss.com/products/seam/taglib\"&gt;"
+msgstr ""
+"&lt;html xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"      xmlns:s=\"http://jboss.com/products/seam/taglib\"&gt;"
+
+#. Tag: para
+#: Controls.xml:14
+#, no-c-format
+msgid "The ui example demonstrates the use of a number of these tags."
+msgstr "この例ではタグをいくつか使用している例を示しています。"
+
+#. Tag: title
+#: Controls.xml:18
+#, no-c-format
+msgid "Seam JSF Control Reference"
+msgstr "Seam JSF コントロールの参照例"
+
+#. Tag: literal
+#: Controls.xml:26
+#, no-c-format
+msgid "&lt;s:validate&gt;"
+msgstr "&lt;s:validate&gt;"
+
+#. Tag: emphasis
+#: Controls.xml:31 Controls.xml:56 Controls.xml:81 Controls.xml:121
+#: Controls.xml:146 Controls.xml:171 Controls.xml:203 Controls.xml:239
+#: Controls.xml:295 Controls.xml:396 Controls.xml:423 Controls.xml:477
+#: Controls.xml:504 Controls.xml:531 Controls.xml:558 Controls.xml:585
+#: Controls.xml:626 Controls.xml:687 Controls.xml:748 Controls.xml:901
+#: Controls.xml:937 Controls.xml:964 Controls.xml:991
+#, no-c-format
+msgid "Description"
+msgstr "詳細"
+
+#. Tag: para
+#: Controls.xml:33
+#, no-c-format
+msgid ""
+"A non-visual control, validates a JSF input field against the bound property "
+"using Hibernate Validator."
+msgstr ""
+"非視覚的なコントロールです。 Hibernate Validator を使用してバウンドプロパティ"
+"に対して JSF 入力フィールドを確認します。"
+
+#. Tag: emphasis
+#: Controls.xml:37 Controls.xml:62 Controls.xml:87 Controls.xml:127
+#: Controls.xml:152 Controls.xml:180 Controls.xml:209 Controls.xml:245
+#: Controls.xml:304 Controls.xml:402 Controls.xml:448 Controls.xml:483
+#: Controls.xml:510 Controls.xml:537 Controls.xml:564 Controls.xml:591
+#: Controls.xml:632 Controls.xml:693 Controls.xml:754 Controls.xml:907
+#: Controls.xml:943 Controls.xml:970 Controls.xml:1024
+#, no-c-format
+msgid "Attributes"
+msgstr "属性"
+
+#. Tag: para
+#: Controls.xml:39 Controls.xml:64 Controls.xml:129 Controls.xml:154
+#: Controls.xml:182 Controls.xml:404 Controls.xml:450 Controls.xml:485
+#: Controls.xml:512 Controls.xml:539 Controls.xml:566 Controls.xml:945
+#: Controls.xml:972
+#, no-c-format
+msgid "None."
+msgstr "なし"
+
+#. Tag: emphasis
+#: Controls.xml:43 Controls.xml:68 Controls.xml:97 Controls.xml:133
+#: Controls.xml:158 Controls.xml:190 Controls.xml:224 Controls.xml:280
+#: Controls.xml:381 Controls.xml:408 Controls.xml:454 Controls.xml:489
+#: Controls.xml:516 Controls.xml:543 Controls.xml:570 Controls.xml:611
+#: Controls.xml:672 Controls.xml:733 Controls.xml:779 Controls.xml:922
+#: Controls.xml:949 Controls.xml:976 Controls.xml:1059
+#, no-c-format
+msgid "Usage"
+msgstr "使い方"
+
+#. Tag: programlisting
+#: Controls.xml:45
+#, no-c-format
+msgid ""
+"&lt;h:inputText id=\"userName\" required=\"true\" value=\"#{customer."
+"userName}\"&gt;\n"
+"  &lt;s:validate /&gt;\n"
+"&lt;/h:inputText&gt;\n"
+"&lt;h:message for=\"userName\" styleClass=\"error\" /&gt;"
+msgstr ""
+"&lt;h:inputText id=\"userName\" required=\"true\" value=\"#{customer."
+"userName}\"&gt;\n"
+"  &lt;s:validate /&gt;\n"
+"&lt;/h:inputText&gt;\n"
+"&lt;h:message for=\"userName\" styleClass=\"error\" /&gt;"
+
+#. Tag: literal
+#: Controls.xml:51
+#, no-c-format
+msgid "&lt;s:validateAll&gt;"
+msgstr "&lt;s:validateAll&gt;"
+
+#. Tag: para
+#: Controls.xml:58
+#, no-c-format
+msgid ""
+"A non-visual control, validates all child JSF input fields against their "
+"bound properties using Hibernate Validator."
+msgstr ""
+"非視覚的なコントロールです。 Hibernate Validator を使ってそのバウンドプロパ"
+"ティに対しすべての子 JSF 入力フィールドを確認します。"
+
+#. Tag: programlisting
+#: Controls.xml:70
+#, no-c-format
+msgid ""
+"&lt;s:validateAll&gt;\n"
+"  &lt;div class=\"entry\"&gt;\n"
+"    &lt;h:outputLabel for=\"username\"&gt;Username:&lt;/h:outputLabel&gt;\n"
+"    &lt;h:inputText id=\"username\" value=\"#{user.username}\" required="
+"\"true\"/&gt;\n"
+"    &lt;h:message for=\"username\" styleClass=\"error\" /&gt;\n"
+"  &lt;/div&gt;\n"
+"  &lt;div class=\"entry\"&gt;\n"
+"    &lt;h:outputLabel for=\"password\"&gt;Password:&lt;/h:outputLabel&gt;\n"
+"    &lt;h:inputSecret id=\"password\" value=\"#{user.password}\" required="
+"\"true\"/&gt;\n"
+"    &lt;h:message for=\"password\" styleClass=\"error\" /&gt;\n"
+"  &lt;/div&gt;\n"
+"  &lt;div class=\"entry\"&gt;\n"
+"    &lt;h:outputLabel for=\"verify\"&gt;Verify Password:&lt;/h:"
+"outputLabel&gt;\n"
+"    &lt;h:inputSecret id=\"verify\" value=\"#{register.verify}\" required="
+"\"true\"/&gt;\n"
+"    &lt;h:message for=\"verify\" styleClass=\"error\" /&gt;\n"
+"  &lt;/div&gt;\n"
+"&lt;/s:validateAll&gt;"
+msgstr ""
+"&lt;s:validateAll&gt;\n"
+"  &lt;div class=\"entry\"&gt;\n"
+"    &lt;h:outputLabel for=\"username\"&gt;Username:&lt;/h:outputLabel&gt;\n"
+"    &lt;h:inputText id=\"username\" value=\"#{user.username}\" required="
+"\"true\"/&gt;\n"
+"    &lt;h:message for=\"username\" styleClass=\"error\" /&gt;\n"
+"  &lt;/div&gt;\n"
+"  &lt;div class=\"entry\"&gt;\n"
+"    &lt;h:outputLabel for=\"password\"&gt;Password:&lt;/h:outputLabel&gt;\n"
+"    &lt;h:inputSecret id=\"password\" value=\"#{user.password}\" required="
+"\"true\"/&gt;\n"
+"    &lt;h:message for=\"password\" styleClass=\"error\" /&gt;\n"
+"  &lt;/div&gt;\n"
+"  &lt;div class=\"entry\"&gt;\n"
+"    &lt;h:outputLabel for=\"verify\"&gt;Verify Password:&lt;/h:"
+"outputLabel&gt;\n"
+"    &lt;h:inputSecret id=\"verify\" value=\"#{register.verify}\" required="
+"\"true\"/&gt;\n"
+"    &lt;h:message for=\"verify\" styleClass=\"error\" /&gt;\n"
+"  &lt;/div&gt;\n"
+"&lt;/s:validateAll&gt;"
+
+#. Tag: literal
+#: Controls.xml:76
+#, no-c-format
+msgid "&lt;s:formattedText&gt;"
+msgstr "&lt;s:formattedText&gt;"
+
+#. Tag: para
+#: Controls.xml:83
+#, no-c-format
+msgid ""
+"Outputs <emphasis>Seam Text</emphasis>, a rich text markup useful for blogs, "
+"wikis and other applications that might use rich text. See the Seam Text "
+"chapter for full usage."
+msgstr ""
+" <emphasis>Seam Text</emphasis>、 ブログに便利なリッチテキストマークアップ、 "
+"リッチテキストを使う可能性がある wiki やその他のアプリケーションを出力しま"
+"す。 使い方の全詳細については Seam Text の章を参照してください。"
+
+#. Tag: para
+#: Controls.xml:91
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; an EL expression specifying the rich text "
+"markup to render."
+msgstr ""
+"<literal>value</literal> &mdash; 表示するリッチテキストマークアップを指定す"
+"る EL 表現です。"
+
+#. Tag: programlisting
+#: Controls.xml:99
+#, no-c-format
+msgid "&lt;s:formattedText value=\"#{blog.text}\"/&gt;"
+msgstr "&lt;s:formattedText value=\"#{blog.text}\"/&gt;"
+
+#. Tag: emphasis
+#: Controls.xml:101 Controls.xml:785
+#, no-c-format
+msgid "Example"
+msgstr "例"
+
+#. Tag: literal
+#: Controls.xml:116
+#, no-c-format
+msgid "&lt;s:convertDateTime&gt;"
+msgstr "&lt;s:convertDateTime&gt;"
+
+#. Tag: para
+#: Controls.xml:123
+#, no-c-format
+msgid "Perform date or time conversions in the Seam timezone."
+msgstr "Seam タイムゾーン内でデータ変換または時間変換を行います。"
+
+#. Tag: literal
+#: Controls.xml:141
+#, no-c-format
+msgid "&lt;s:convertEnum&gt;"
+msgstr "&lt;s:convertEnum&gt;"
+
+#. Tag: para
+#: Controls.xml:148
+#, no-c-format
+msgid ""
+"Assigns an enum converter to the current component. This is primarily useful "
+"for radio button and dropdown controls."
+msgstr ""
+"enum コンバータを現在のコンポーネントに割り当てます。 おもにラジオボタンコン"
+"トロール及びドロップダウンコントロールに役立ちます。"
+
+#. Tag: literal
+#: Controls.xml:166
+#, no-c-format
+msgid "&lt;s:convertEntity&gt;"
+msgstr "&lt;s:convertEntity&gt;"
+
+#. Tag: para
+#: Controls.xml:173
+#, no-c-format
+msgid ""
+"Assigns an entity converter to the current component. This is primarily "
+"useful for radio button and dropdown controls."
+msgstr ""
+"エンティティコンバータを現在のコンポーネントに割り当てます。 おもにラジオボタ"
+"ンコントロール及びドロップダウンコントロールに役立ちます。"
+
+#. Tag: para
+#: Controls.xml:176
+#, no-c-format
+msgid ""
+"The converter works with any entity which has an <literal>@Id</literal> "
+"annotation - either simple or composite. If your <emphasis>Managed "
+"Persistence Context</emphasis> isn&#39;t called <literal>entityManager</"
+"literal>, then you need to set it in components.xml:"
+msgstr ""
+"コンバータは 単複いずれかの <literal>@Id</literal> アノテーションを持つエン"
+"ティティならいずれでも使用できます。 <emphasis>管理永続コンテキスト</"
+"emphasis>が <literal>entityManager</literal> と呼ばれない場合、 components."
+"xml で設定する必要があります。"
+
+#. Tag: emphasis
+#: Controls.xml:186 Controls.xml:1002
+#, no-c-format
+msgid "Configuration"
+msgstr "設定"
+
+#. Tag: programlisting
+#: Controls.xml:188
+#, no-c-format
+msgid ""
+"&lt;component name=\"org.jboss.seam.ui.entityConverter\"&gt;\n"
+"      &lt;property name=\"entityManager\"&gt;#{em}&lt;/property&gt;\n"
+"  &lt;/component&gt;"
+msgstr ""
+"&lt;component name=\"org.jboss.seam.ui.entityConverter\"&gt;\n"
+"      &lt;property name=\"entityManager\"&gt;#{em}&lt;/property&gt;\n"
+"  &lt;/component&gt;"
+
+#. Tag: programlisting
+#: Controls.xml:192
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{person.continent}\" required=\"true\"&gt;\n"
+"    &lt;s:selectItems value=\"#{continents.resultList}\" var=\"continent\" "
+"label=\"#{continent.name}\" noSelectionLabel=\"Please Select...\"/&gt;\n"
+"    &lt;s:convertEntity /&gt;\n"
+"&lt;/h:selectOneMenu&gt;"
+msgstr ""
+"&lt;h:selectOneMenu value=\"#{person.continent}\" required=\"true\"&gt;\n"
+"    &lt;s:selectItems value=\"#{continents.resultList}\" var=\"continent\" "
+"label=\"#{continent.name}\" noSelectionLabel=\"Please Select...\"/&gt;\n"
+"    &lt;s:convertEntity /&gt;\n"
+"&lt;/h:selectOneMenu&gt;"
+
+#. Tag: literal
+#: Controls.xml:198
+#, no-c-format
+msgid "&lt;s:enumItem&gt;"
+msgstr "&lt;s:enumItem&gt;"
+
+#. Tag: para
+#: Controls.xml:205
+#, no-c-format
+msgid "Creates a <literal>SelectItem</literal> from an enum value."
+msgstr "enum の値から <literal>SelectItem</literal> を作成します。"
+
+#. Tag: para
+#: Controls.xml:213
+#, no-c-format
+msgid ""
+"<literal>enumValue</literal> &mdash; the string representation of the enum "
+"value."
+msgstr "<literal>enumValue</literal> &mdash; enum の値の文字列表現です。"
+
+#. Tag: para
+#: Controls.xml:218
+#, no-c-format
+msgid ""
+"<literal>label</literal> &mdash; the label to be used when rendering the "
+"<literal>SelectItem</literal>."
+msgstr ""
+"<literal>label</literal> &mdash; <literal>SelectItem</literal> を表示する場合"
+"に使用されるラベルです。"
+
+#. Tag: literal
+#: Controls.xml:234
+#, no-c-format
+msgid "&lt;s:selectItems&gt;"
+msgstr "&lt;s:selectItems&gt;"
+
+#. Tag: para
+#: Controls.xml:241
+#, no-c-format
+msgid ""
+"Creates a <literal>List&lt;SelectItem&gt;</literal> from a List, Set, "
+"DataModel or Array."
+msgstr ""
+"List、 Set、 DataModel または Array から <literal>List&lt;SelectItem&gt;</"
+"literal> を作成します。"
+
+#. Tag: para
+#: Controls.xml:249
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; an EL expression specifying the data that "
+"backs the <literal>List&lt;SelectItem&gt;</literal>"
+msgstr ""
+"<literal>value</literal> &mdash; <literal>List&lt;SelectItem&gt;</literal> ã‚’"
+"支持するデータを指定する EL 表現です。"
+
+#. Tag: para
+#: Controls.xml:254
+#, no-c-format
+msgid ""
+"<literal>var</literal> &mdash; defines the name of the local variable that "
+"holds the current object during iteration"
+msgstr ""
+"<literal>var</literal> &mdash; 対話している間、 現在のオブジェクトを保持する"
+"ローカルの変数名を定義します。"
+
+#. Tag: para
+#: Controls.xml:259
+#, no-c-format
+msgid ""
+"<literal>label</literal> &mdash; the label to be used when rendering the "
+"<literal>SelectItem</literal>. Can reference the <literal>var</literal> "
+"variable"
+msgstr ""
+"<literal>label</literal> &mdash; <literal>SelectItem</literal> を表示する場合"
+"に使用されるラベルです。 <literal>var</literal> 変数を参照することができま"
+"す。"
+
+#. Tag: para
+#: Controls.xml:264
+#, no-c-format
+msgid ""
+"<literal>disabled</literal> &mdash; if true the <literal>SelectItem</"
+"literal> will be rendered disabled. Can reference the <literal>var</literal> "
+"variable"
+msgstr ""
+"<literal>disabled</literal> &mdash; true の場合、 <literal>SelectItem</"
+"literal> は disabled と表示されます。 <literal>var</literal> 変数を参照できま"
+"す。"
+
+#. Tag: para
+#: Controls.xml:269
+#, no-c-format
+msgid ""
+"<literal>noSelectionLabel</literal> &mdash; specifies the (optional) label "
+"to place at the top of list (if <literal>required=\"true\"</literal> is also "
+"specified then selecting this value will cause a validation error)"
+msgstr ""
+"<literal>noSelectionLabel</literal> &mdash; (オプションの)ラベルを指定して一"
+"覧の文頭に配置します (<literal>required=\"true\"</literal> も指定されるとこの"
+"値の選択は検証エラーの要因となる)。"
+
+#. Tag: para
+#: Controls.xml:274
+#, no-c-format
+msgid ""
+"<literal>hideNoSelectionLabel</literal> &mdash; if true, the "
+"<literal>noSelectionLabel</literal> will be hidden when a value is selected"
+msgstr ""
+"<literal>hideNoSelectionLabel</literal> &mdash; ture の場合、 値が選択される"
+"と <literal>noSelectionLabel</literal> は表示されなくなります。"
+
+#. Tag: programlisting
+#: Controls.xml:283
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{person.age}\"  converter=\"#{converters."
+"ageConverter}\"&gt;\n"
+"    &lt;s:selectItems value=\"#{ages}\" var=\"age\" label=\"#{age}\" /&gt;\n"
+"&lt;/h:selectOneMenu&gt;"
+msgstr ""
+"&lt;h:selectOneMenu value=\"#{person.age}\"  converter=\"#{converters."
+"ageConverter}\"&gt;\n"
+"    &lt;s:selectItems value=\"#{ages}\" var=\"age\" label=\"#{age}\" /&gt;\n"
+"&lt;/h:selectOneMenu&gt;"
+
+#. Tag: literal
+#: Controls.xml:290
+#, no-c-format
+msgid "&lt;s:graphicImage&gt;"
+msgstr "&lt;s:graphicImage&gt;"
+
+#. Tag: para
+#: Controls.xml:297
+#, no-c-format
+msgid ""
+"An extended <literal>&lt;h:graphicImage&gt;</literal> that allows the image "
+"to be created in a Seam Component; further transforms can be applied to the "
+"image. <emphasis>Facelets only.</emphasis>"
+msgstr ""
+"拡張された <literal>&lt;h:graphicImage&gt;</literal> では Seam Component 内に"
+"イメージを作成できるようになり、 そのイメージに対してさらに変換を適用すること"
+"ができます。 <emphasis>Facelets 固有になります。</emphasis>"
+
+#. Tag: para
+#: Controls.xml:300
+#, no-c-format
+msgid ""
+"All attributes for <literal>&lt;h:graphicImage&gt;</literal> are supported, "
+"as well as:"
+msgstr ""
+"<literal>&lt;h:graphicImage&gt;</literal> のすべての属性がサポートされている"
+"他、 以下もサポートされています。"
+
+#. Tag: para
+#: Controls.xml:308
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; image to display. Can be a path "
+"<literal>String</literal> (loaded from the classpath), a <literal>byte[]</"
+"literal>, a <literal>java.io.File</literal>, a <literal>java.io.InputStream</"
+"literal> or a <literal>java.net.URL</literal>. Currently supported image "
+"formats are <literal>image/png</literal>, <literal>image/jpeg</literal> and "
+"<literal>image/gif</literal>."
+msgstr ""
+"<literal>value</literal> &mdash; 表示させるイメージです。 パスの "
+"<literal>String</literal> (クラスパスからロードされる)、 <literal>byte[]</"
+"literal>、 <literal>java.io.File</literal>、 <literal>java.io.InputStream</"
+"literal> または <literal>java.net.URL</literal> が使用できます。 現在サポート"
+"されているイメージ形式は <literal>image/png</literal>、 <literal>image/jpeg</"
+"literal>、 <literal>image/gif</literal> になります。"
+
+#. Tag: para
+#: Controls.xml:313
+#, no-c-format
+msgid ""
+"<literal>fileName</literal> &mdash; if not specified the served image will "
+"have a generated file name. If you want to name your file, you should "
+"specify it here. This name should be unique"
+msgstr ""
+"<literal>fileName</literal> &mdash; 指定されていない場合、 提供されるイメージ"
+"には生成されたファイル名が付きます。 ファイルに名前を付けたい場合には、 ここ"
+"で指定します。 この名前は固有でなければなりません。"
+
+#. Tag: emphasis
+#: Controls.xml:319
+#, no-c-format
+msgid "Transformations"
+msgstr "変換"
+
+#. Tag: para
+#: Controls.xml:321
+#, no-c-format
+msgid ""
+"To apply a transform to the image, you would nest a tag specifying the "
+"transform to apply. Seam currently supports these transforms:"
+msgstr ""
+"イメージに変換を適用するには、 適用する変換を指定するタグをネストさせます。 "
+"Seam は現在、 次のような変換をサポートしています。"
+
+#. Tag: literal
+#: Controls.xml:326
+#, no-c-format
+msgid "&lt;s:transformImageSize&gt;"
+msgstr "&lt;s:transformImageSize&gt;"
+
+#. Tag: para
+#: Controls.xml:330
+#, no-c-format
+msgid "<literal>width</literal> &mdash; new width of the image"
+msgstr "<literal>width</literal> &mdash; イメージに新たに設定する幅です"
+
+#. Tag: para
+#: Controls.xml:335
+#, no-c-format
+msgid "<literal>height</literal> &mdash; new height of the image"
+msgstr "<literal>height</literal> &mdash; イメージに新たに設定する高さです"
+
+#. Tag: para
+#: Controls.xml:340
+#, no-c-format
+msgid ""
+"<literal>maintainRatio</literal> &mdash; if <literal>true</literal>, and "
+"<emphasis>one</emphasis> of <literal>width</literal>/<literal>height</"
+"literal> are specified, the image will be resized with the dimension not "
+"specified being calculated to maintain the aspect ratio."
+msgstr ""
+"<literal>maintainRatio</literal> &mdash;  <literal>true</literal> であり "
+"<literal>width</literal>/<literal>height</literal> のひとつが指定されている場"
+"合、 そのイメージは指定されたものではなく縦横の比率を維持するよう計算された寸"
+"法でリサイズされます。"
+
+#. Tag: para
+#: Controls.xml:345
+#, no-c-format
+msgid "<literal>factor</literal> &mdash; scale the image by the given factor"
+msgstr "<literal>factor</literal> &mdash; 特定の要素でイメージを縮小/拡大します。"
+
+#. Tag: literal
+#: Controls.xml:353
+#, no-c-format
+msgid "&lt;s:transformImageBlur&gt;"
+msgstr "&lt;s:transformImageBlur&gt;"
+
+#. Tag: para
+#: Controls.xml:357
+#, no-c-format
+msgid ""
+"<literal>radius</literal> &mdash; perform a convolution blur with the given "
+"radius"
+msgstr ""
+"<literal>radius</literal> &mdash; 特定の半径でコンボリューションブラーを行い"
+"ます。"
+
+#. Tag: literal
+#: Controls.xml:365
+#, no-c-format
+msgid "&lt;s:transformImageType&gt;"
+msgstr "&lt;s:transformImageType&gt;"
+
+#. Tag: para
+#: Controls.xml:369
+#, no-c-format
+msgid ""
+"<literal>contentType</literal> &mdash; alter the type of the image to either "
+"<literal>image/jpeg</literal> or <literal>image/png</literal>"
+msgstr ""
+"<literal>contentType</literal> &mdash; イメージタイプを <literal>image/jpeg</"
+"literal> または <literal>image/png</literal> に変更します。"
+
+#. Tag: para
+#: Controls.xml:377
+#, no-c-format
+msgid ""
+"It&#39;s easy to create your own transform - create a <literal>UIComponent</"
+"literal> which <literal>implements</literal><literal>org.jboss.seam.ui."
+"graphicImage.ImageTransform</literal>. Inside the <literal>applyTransform()</"
+"literal>method use <literal>image.getBufferedImage()</literal> to get the "
+"original image and <literal>image.setBufferedImage()</literal> to set your "
+"transformed image. Transforms are applied in the order specified in the view."
+msgstr ""
+"独自の変換を作成するのも簡単です。 <literal>implements</literal><literal>org."
+"jboss.seam.ui.graphicImage.ImageTransform</literal> を行う "
+"<literal>UIComponent</literal> を作成します。 <literal>applyTransform()</"
+"literal> メソッド内で、 オリジナルのイメージを取得するために<literal>image."
+"getBufferedImage()</literal> 、 変換されたイメージをセットするために "
+"<literal>image.setBufferedImage()</literal> をそれぞれ使用します。 このビュー"
+"内で指定されている順序に従って変換は適用されます。"
+
+#. Tag: literal
+#: Controls.xml:391
+#, no-c-format
+msgid "&lt;s:decorate&gt;"
+msgstr "&lt;s:decorate&gt;"
+
+#. Tag: para
+#: Controls.xml:398
+#, no-c-format
+msgid ""
+"\"Decorate\" a JSF input field when validation fails or when "
+"<literal>required=\"true\"</literal> is set."
+msgstr ""
+"検証に失敗した場合または <literal>required=\"true\"</literal> が設定されてい"
+"る場合、 JSF 入力フィールドを \"Decorate\" します。"
+
+#. Tag: literal
+#: Controls.xml:418
+#, no-c-format
+msgid "&lt;s:layoutForm&gt;"
+msgstr "&lt;s:layoutForm&gt;"
+
+#. Tag: para
+#: Controls.xml:425
+#, no-c-format
+msgid ""
+"A layout component for producing a \"standard\" form layout. Each child "
+"component will be treated as a row, and if the child is a <literal>&lt;s:"
+"decorate&gt;</literal>, additional formatting will be applied:"
+msgstr ""
+"標準のフォームレイアウトを生成するためのレイアウトコンポーネントです。 各子コ"
+"ンポーネントは 1 列で処理され、 子コンポーネントが <literal>&lt;s:"
+"decorate&gt;</literal> の場合は追加のフォーマット化が適用されます。 "
+
+#. Tag: para
+#: Controls.xml:428
+#, no-c-format
+msgid ""
+"Label &mdash; if a <literal>label</literal> facet is on the <literal>&lt;s:"
+"decorate&gt;</literal> then it&#39;s contents will be used as the label for "
+"this field. The labels are rendered right-aligned in a column"
+msgstr ""
+"Label &mdash;  <literal>label</literal> ファセットが <literal>&lt;s:"
+"decorate&gt;</literal> にある場合、 そのコンテンツがこのフィールドのラベルと"
+"して使用されます。 ラベルはコラム内に右詰めで表示されます。"
+
+#. Tag: para
+#: Controls.xml:431
+#, no-c-format
+msgid ""
+"Some further decoration facets are supported - <literal>beforeLabel</"
+"literal>, <literal>afterLabel</literal>, <literal>aroundLabel</literal>, "
+"<literal>beforeInvalidLabel</literal>, <literal>afterInvalidLabel</literal> "
+"and <literal>aroundInvalidLabel</literal>."
+msgstr ""
+"他にもサポートされているファセットがいくつかあります。 <literal>beforeLabel</"
+"literal>、 <literal>afterLabel</literal>、 <literal>aroundLabel</literal>、 "
+"<literal>beforeInvalidLabel</literal>、 <literal>afterInvalidLabel</"
+"literal>、 <literal>aroundInvalidLabel</literal> などです。"
+
+#. Tag: para
+#: Controls.xml:436
+#, no-c-format
+msgid ""
+"Other text &mdash; if a <literal>belowLabel</literal> facet or/and a "
+"<literal>belowField</literal> facet are present on <literal>&lt;s:"
+"decorate&gt;</literal> then it&#39;s contents will be placed below the label "
+"or the field"
+msgstr ""
+"Other text &mdash;  <literal>belowLabel</literal> ファセットまたは "
+"<literal>belowField</literal> ファセットのいずれかあるいは両方が "
+"<literal>&lt;s:decorate&gt;</literal> にある場合、 そのコンテンツがラベルまた"
+"はフィールドの下に配置されます。"
+
+#. Tag: para
+#: Controls.xml:441
+#, no-c-format
+msgid ""
+"Required &mdash; if <literal>required=\"true\"</literal> is set on the "
+"field, then the <literal>aroundRequiredField</literal>, "
+"<literal>beforeRequiredField</literal>, <literal>afterRequiredField</"
+"literal>, <literal>aroundRequiredLabel</literal>, "
+"<literal>beforeRequiredLabel</literal> and <literal>afterRequiredLabel</"
+"literal> will be applied."
+msgstr ""
+"Required &mdash; フィールドに <literal>required=\"true\"</literal> がセットさ"
+"れている場合、 <literal>aroundRequiredField</literal>、 "
+"<literal>beforeRequiredField</literal>、 <literal>afterRequiredField</"
+"literal>、 <literal>aroundRequiredLabel</literal>、 "
+"<literal>beforeRequiredLabel</literal> 及び <literal>afterRequiredLabel</"
+"literal> が適用されます。"
+
+#. Tag: programlisting
+#: Controls.xml:457
+#, no-c-format
+msgid ""
+"&lt;s:layoutForm&gt;\n"
+"   &lt;f:facet name=\"aroundInvalidField\"&gt;\n"
+"       &lt;s:span styleClass=\"error\"/&gt;\n"
+"   &lt;/f:facet&gt;\n"
+"   &lt;f:facet name=\"afterInvalidField\"&gt;\n"
+"       &lt;s:message /&gt;\n"
+"   &lt;/f:facet&gt;\n"
+"   &lt;f:facet name=\"beforeRequiredLabel\"&gt;\n"
+"           &lt;s:span&gt;&lowast;&lt;/s:span&gt;\n"
+"   &lt;/f:facet&gt;\n"
+"   &lt;f:facet name=\"aroundLabel\"&gt;\n"
+"           &lt;s:span style=\"text-align:right;\" /&gt;\n"
+"   &lt;/f:facet&gt;\n"
+"   &lt;f:facet name=\"aroundInvalidLabel\"&gt;\n"
+"           &lt;s:span style=\"text-align:right;\" styleClass=\"error\" /"
+"&gt;\n"
+"   &lt;/f:facet&gt;\n"
+"   &lt;s:decorate&gt;\n"
+"        &lt;f:facet name=\"label\"&gt;\n"
+"                    &lt;h:outputText value=\"Name\" /&gt;\n"
+"        &lt;/f:facet&gt;\n"
+"        &lt;h:inputText value=\"#{person.name}\" required=\"true\"/&gt;\n"
+"        &lt;f:facet name=\"belowField\"&gt;\n"
+"            &lt;h:outputText styleClass=\"help\" \n"
+"               value=\"Enter your name as it appears \n"
+"                  on your passport\" /&gt;\n"
+"        &lt;/f:facet&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"&lt;/s:layoutForm&gt;"
+msgstr ""
+"&lt;s:layoutForm&gt;\n"
+"   &lt;f:facet name=\"aroundInvalidField\"&gt;\n"
+"       &lt;s:span styleClass=\"error\"/&gt;\n"
+"   &lt;/f:facet&gt;\n"
+"   &lt;f:facet name=\"afterInvalidField\"&gt;\n"
+"       &lt;s:message /&gt;\n"
+"   &lt;/f:facet&gt;\n"
+"   &lt;f:facet name=\"beforeRequiredLabel\"&gt;\n"
+"           &lt;s:span&gt;&lowast;&lt;/s:span&gt;\n"
+"   &lt;/f:facet&gt;\n"
+"   &lt;f:facet name=\"aroundLabel\"&gt;\n"
+"           &lt;s:span style=\"text-align:right;\" /&gt;\n"
+"   &lt;/f:facet&gt;\n"
+"   &lt;f:facet name=\"aroundInvalidLabel\"&gt;\n"
+"           &lt;s:span style=\"text-align:right;\" styleClass=\"error\" /"
+"&gt;\n"
+"   &lt;/f:facet&gt;\n"
+"   &lt;s:decorate&gt;\n"
+"        &lt;f:facet name=\"label\"&gt;\n"
+"                    &lt;h:outputText value=\"Name\" /&gt;\n"
+"        &lt;/f:facet&gt;\n"
+"        &lt;h:inputText value=\"#{person.name}\" required=\"true\"/&gt;\n"
+"        &lt;f:facet name=\"belowField\"&gt;\n"
+"            &lt;h:outputText styleClass=\"help\" \n"
+"               value=\"Enter your name as it appears \n"
+"                  on your passport\" /&gt;\n"
+"        &lt;/f:facet&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"&lt;/s:layoutForm&gt;"
+
+#. Tag: literal
+#: Controls.xml:472
+#, no-c-format
+msgid "&lt;s:message&gt;"
+msgstr "&lt;s:message&gt;"
+
+#. Tag: para
+#: Controls.xml:479
+#, no-c-format
+msgid "\"Decorate\" a JSF input field with the validation error message."
+msgstr "検証エラーのメッセージで JSF 入力フィールドを \"Decorate\" します。"
+
+#. Tag: literal
+#: Controls.xml:499
+#, no-c-format
+msgid "&lt;s:span&gt;"
+msgstr "&lt;s:span&gt;"
+
+#. Tag: para
+#: Controls.xml:506
+#, no-c-format
+msgid "Render a HTML <literal>&lt;span&gt;</literal>."
+msgstr "HTML <literal>&lt;span&gt;</literal> をレンダリングします。"
+
+#. Tag: literal
+#: Controls.xml:526
+#, no-c-format
+msgid "&lt;s:div&gt;"
+msgstr "&lt;s:div&gt;"
+
+#. Tag: para
+#: Controls.xml:533
+#, no-c-format
+msgid "Render a HTML <literal>&lt;div&gt;</literal>."
+msgstr "HTML <literal>&lt;div&gt;</literal> をレンダリングします。"
+
+#. Tag: literal
+#: Controls.xml:553
+#, no-c-format
+msgid "&lt;s:fragment&gt;"
+msgstr "&lt;s:fragment&gt;"
+
+#. Tag: para
+#: Controls.xml:560
+#, no-c-format
+msgid ""
+"A non-rendering component useful for enabling/disabling rendering of it&#39;"
+"s children."
+msgstr ""
+"レンダリングされないコンポーネントです。 その子コンポーネントのレンダリングを"
+"有効/無効にする場合に便利です。"
+
+#. Tag: literal
+#: Controls.xml:580
+#, no-c-format
+msgid "&lt;s:cache&gt;"
+msgstr "&lt;s:cache&gt;"
+
+#. Tag: para
+#: Controls.xml:587
+#, no-c-format
+msgid ""
+"Cache the rendered page fragment using JBoss Cache. Note that <literal>&lt;s:"
+"cache&gt;</literal> actually uses the instance of JBoss Cache managed by the "
+"built-in <literal>pojoCache</literal> component."
+msgstr ""
+"JBoss Cache を使用してレンダリングされるページフラグメントの Cache です。 "
+"<literal>&lt;s:cache&gt;</literal> は実際にはビルトインの "
+"<literal>pojoCache</literal> コンポーネントで管理される JBoss Cache のインス"
+"タンスを使用するので注意してください。"
+
+#. Tag: para
+#: Controls.xml:595
+#, no-c-format
+msgid ""
+"<literal>key</literal> &mdash; the key to cache rendered content, often a "
+"value expression. For example, if we were caching a page fragment that "
+"displays a document, we might use <literal>key=\"Document-#{document.id}\"</"
+"literal>."
+msgstr ""
+"<literal>key</literal> &mdash;  レンダリングされたコンテンツをキャッシュする"
+"キーです。 値式 である場合がほとんです。 たとえば、 あるドキュメントを表示し"
+"ているページフラグメントをキャッシュする場合は、 <literal>key=\"Document-#"
+"{document.id}\"</literal> を使うことができます。"
+
+#. Tag: para
+#: Controls.xml:600
+#, no-c-format
+msgid ""
+"<literal>enabled</literal> &mdash; a value expression that determines if the "
+"cache should be used."
+msgstr ""
+"<literal>enabled</literal> &mdash;  キャッシュが使用される必要があるかどうか"
+"を定義する値式です。"
+
+#. Tag: para
+#: Controls.xml:605
+#, no-c-format
+msgid ""
+"<literal>region</literal> &mdash; a JBoss Cache node to use (different nodes "
+"can have different expiry policies)."
+msgstr ""
+"<literal>region</literal> &mdash;  使用する JBoss Cache ノードです(ノード別に"
+"異なる有効期限ポリシーを持たせることができる)。"
+
+#. Tag: literal
+#: Controls.xml:621
+#, no-c-format
+msgid "&lt;s:link&gt;"
+msgstr "&lt;s:link&gt;"
+
+#. Tag: para
+#: Controls.xml:628
+#, no-c-format
+msgid ""
+"A link that supports invocation of an action with control over conversation "
+"propagation. <emphasis>Does not submit the form.</emphasis>"
+msgstr ""
+"対話伝搬の制御付きアクションの起動をサポートするリンクです。 <emphasis>フォー"
+"ムはサブミットしません。</emphasis>"
+
+#. Tag: para
+#: Controls.xml:636 Controls.xml:697
+#, no-c-format
+msgid "<literal>value</literal> &mdash; the label."
+msgstr "<literal>value</literal> &mdash;  ラベルです。"
+
+#. Tag: para
+#: Controls.xml:641 Controls.xml:702
+#, no-c-format
+msgid ""
+"<literal>action</literal> &mdash; a method binding that specified the action "
+"listener."
+msgstr ""
+"<literal>action</literal> &mdash; アクションリスナーを指定するメソッドバイン"
+"ディングです。"
+
+#. Tag: para
+#: Controls.xml:646 Controls.xml:707
+#, no-c-format
+msgid "<literal>view</literal> &mdash; the JSF view id to link to."
+msgstr "<literal>view</literal> &mdash; リンク先の JSF view id です。"
+
+#. Tag: para
+#: Controls.xml:651 Controls.xml:712
+#, no-c-format
+msgid "<literal>fragment</literal> &mdash; the fragment identifier to link to."
+msgstr "<literal>fragment</literal> &mdash;  リンク先のフラグメント識別子です。"
+
+#. Tag: para
+#: Controls.xml:656 Controls.xml:717
+#, no-c-format
+msgid "<literal>disabled</literal> &mdash; is the link disabled?"
+msgstr "<literal>disabled</literal> &mdash;  無効にしたリンクです。"
+
+#. Tag: para
+#: Controls.xml:661 Controls.xml:722 Controls.xml:911
+#, no-c-format
+msgid ""
+"<literal>propagation</literal> &mdash; determines the conversation "
+"propagation style: <literal>begin</literal>, <literal>join</literal>, "
+"<literal>nest</literal>, <literal>none</literal> or <literal>end</literal>."
+msgstr ""
+"<literal>propagation</literal> &mdash;  対話伝搬のスタイルを定義します、 "
+"<literal>begin</literal>、 <literal>join</literal>、 <literal>nest</"
+"literal>、 <literal>none</literal> あるいは <literal>end</literal> などです。"
+
+#. Tag: para
+#: Controls.xml:666 Controls.xml:727 Controls.xml:916
+#, no-c-format
+msgid ""
+"<literal>pageflow</literal> &mdash; a pageflow definition to begin. (This is "
+"only useful when <literal>propagation=\"begin\"</literal> or "
+"<literal>propagation=\"join\"</literal>.)"
+msgstr ""
+"<literal>pageflow</literal> &mdash; 開始するページフロー定義です。 "
+"(<literal>propagation=\"begin\"</literal> または <literal>propagation=\"join"
+"\"</literal> の場合にのみ役立ちます。)"
+
+#. Tag: literal
+#: Controls.xml:682
+#, no-c-format
+msgid "&lt;s:button&gt;"
+msgstr "&lt;s:button&gt;"
+
+#. Tag: para
+#: Controls.xml:689
+#, no-c-format
+msgid ""
+"A button that supports invocation of an action with control over "
+"conversation propagation. <emphasis>Does not submit the form.</emphasis>"
+msgstr ""
+"対話伝搬の制御付きアクションの起動をサポートするボタンです。 <emphasis>フォー"
+"ムはサブミットしません。</emphasis>"
+
+#. Tag: literal
+#: Controls.xml:743
+#, no-c-format
+msgid "&lt;s:selectDate&gt;"
+msgstr "&lt;s:selectDate&gt;"
+
+#. Tag: para
+#: Controls.xml:750
+#, no-c-format
+msgid ""
+"Displays a dynamic date picker component that selects a date for the "
+"specified input field. The body of the <literal>selectDate</literal> element "
+"should contain HTML elements, such as text or an image, that prompt the user "
+"to click to display the date picker. The date picker <emphasis>must</"
+"emphasis> be styled using CSS. An example CSS file can be found in the Seam "
+"booking demo as <literal>date.css</literal>, or can be generated using seam-"
+"gen. The CSS styles used to control the appearance of the date picker are "
+"also described below."
+msgstr ""
+"指定された入力フィールドの対して日付を選択する動的なデートピッカーコンポーネ"
+"ントを表示します。 <literal>selectDate</literal> エレメントのボディにはテキス"
+"トやイメージなどの HTML エレメントが含まれるはずで、 ユーザーがデートピッカー"
+"を表示するためにクリックするよう指示します。 デートピッカーは CSS を使って"
+"<emphasis>表さなければなりません</emphasis>。 サンプルの CSS ファイルは "
+"<literal>date.css</literal> で Seam ブッキングデモ内にあります。 または、 "
+"seam-gen を使って生成することもできます。 デートピッカーの外観の制御に使用さ"
+"れる CSS スタイルも以下に示します。"
+
+#. Tag: para
+#: Controls.xml:758
+#, no-c-format
+msgid ""
+"<literal>for</literal> &mdash; The id of the input field that the date "
+"picker will insert the selected date into."
+msgstr ""
+"<literal>for</literal> &mdash; 選択された日付がデートピッカーにより挿入される"
+"挿入先入力フィールドの ID です。"
+
+#. Tag: para
+#: Controls.xml:763
+#, no-c-format
+msgid ""
+"<literal>dateFormat</literal> &mdash; The date format string. This should "
+"match the date format of the input field."
+msgstr ""
+"<literal>dateFormat</literal> &mdash; 日付形式の文字列です。 入力フィールドの"
+"日付形式と一致しなければなりません。"
+
+#. Tag: para
+#: Controls.xml:768
+#, no-c-format
+msgid ""
+"<literal>startYear</literal> &mdash; The popup year selector range will "
+"start at this year."
+msgstr ""
+"<literal>startYear</literal> &mdash; ポップアップの年度選択範囲はこの年から開"
+"始します。"
+
+#. Tag: para
+#: Controls.xml:773
+#, no-c-format
+msgid ""
+"<literal>endYear</literal> &mdash; The popup year selector range will end at "
+"this year."
+msgstr ""
+"<literal>endYear</literal> &mdash; ポップアップの年度選択範囲はこの年で終わり"
+"ます。"
+
+#. Tag: programlisting
+#: Controls.xml:782
+#, no-c-format
+msgid ""
+"&lt;div class=\"row\"&gt;\n"
+"    &lt;h:outputLabel for=\"dob\"&gt;Date of birth&lt;em&gt;*&lt;/em&gt;&lt;/"
+"h:outputLabel&gt;\n"
+"    &lt;h:inputText id=\"dob\" value=\"#{user.dob}\" required=\"true\"&gt;\n"
+"      &lt;s:convertDateTime pattern=\"MM/dd/yyyy\"/&gt;\n"
+"    &lt;/h:inputText&gt;\n"
+"    &lt;s:selectDate for=\"dob\" startYear=\"1910\" endYear=\"2007\"&gt;&lt;"
+"img src=\"img/datepicker.png\"/&gt;&lt;/s:selectDate&gt;\n"
+"    &lt;div class=\"validationError\"&gt;&lt;h:message for=\"dob\"/&gt;&lt;/"
+"div&gt;\n"
+"  &lt;/div&gt;"
+msgstr ""
+"&lt;div class=\"row\"&gt;\n"
+"    &lt;h:outputLabel for=\"dob\"&gt;Date of birth&lt;em&gt;*&lt;/em&gt;&lt;/"
+"h:outputLabel&gt;\n"
+"    &lt;h:inputText id=\"dob\" value=\"#{user.dob}\" required=\"true\"&gt;\n"
+"      &lt;s:convertDateTime pattern=\"MM/dd/yyyy\"/&gt;\n"
+"    &lt;/h:inputText&gt;\n"
+"    &lt;s:selectDate for=\"dob\" startYear=\"1910\" endYear=\"2007\"&gt;&lt;"
+"img src=\"img/datepicker.png\"/&gt;&lt;/s:selectDate&gt;\n"
+"    &lt;div class=\"validationError\"&gt;&lt;h:message for=\"dob\"/&gt;&lt;/"
+"div&gt;\n"
+"  &lt;/div&gt;"
+
+#. Tag: emphasis
+#: Controls.xml:796
+#, no-c-format
+msgid "CSS Styling"
+msgstr "CSS スタイリング"
+
+#. Tag: para
+#: Controls.xml:798
+#, no-c-format
+msgid ""
+"The following list describes the CSS class names that are used to control "
+"the style of the selectDate control."
+msgstr ""
+"次の一覧では日付選択コントロールのスタイルを制御する目的で使用される CSS クラ"
+"ス名を示します。"
+
+#. Tag: para
+#: Controls.xml:803
+#, no-c-format
+msgid ""
+"<literal>seam-date</literal> &mdash; This class is applied to the outer "
+"<literal>div</literal> containing the popup calendar. (1) It is also applied "
+"to the <literal>table</literal> that controls the inner layout of the "
+"calendar. (2)"
+msgstr ""
+"<literal>seam-date</literal> &mdash; ポップアップカレンダーを含んでいるアウ"
+"ター <literal>div</literal> に適用されます。 (1) カレンダーのインナーレイアウ"
+"トを制御する <literal>table</literal> に対しても適用されます。 (2)"
+
+#. Tag: para
+#: Controls.xml:808
+#, no-c-format
+msgid ""
+"<literal>seam-date-header</literal> &mdash; This class is applied to the "
+"calendar header table row (<literal>tr</literal>) and header table cells "
+"(<literal>td</literal>). (3)"
+msgstr ""
+"<literal>seam-date-header</literal> &mdash; このクラスはカレンダーのヘッダ"
+"テーブル列 (<literal>tr</literal>) とヘッダテーブルのセル (<literal>td</"
+"literal>) に適用されます。 (3)"
+
+#. Tag: para
+#: Controls.xml:813
+#, no-c-format
+msgid ""
+"<literal>seam-date-header-prevMonth</literal> &mdash; This class is applied "
+"to the \"previous month\" table cell, (<literal>td</literal>), which when "
+"clicked causes the calendar to display the month prior to the one currently "
+"displayed. (4)"
+msgstr ""
+"<literal>seam-date-header-prevMonth</literal> &mdash; このクラスは「先月」の"
+"テーブルセル  (<literal>td</literal>) に適用され、 クリックするとカレンダーは"
+"現在表示されている月の 1 ヶ月前の月を表示します。 (4)"
+
+#. Tag: para
+#: Controls.xml:818
+#, no-c-format
+msgid ""
+"<literal>seam-date-header-nextMonth</literal> &mdash; This class is applied "
+"to the \"next month\" table cell, (<literal>td</literal>), which when "
+"clicked causes the calendar to display the month following the one currently "
+"displayed. (5)"
+msgstr ""
+"<literal>seam-date-header-nextMonth</literal> &mdash; このクラスは「来月」の"
+"テーブルセル (<literal>td</literal>) に適用され、 クリックするとカレンダーは"
+"現在表示されている月の 1 ヶ月先の月を表示します。 (5)"
+
+#. Tag: para
+#: Controls.xml:823
+#, no-c-format
+msgid ""
+"<literal>seam-date-headerDays</literal> &mdash; This class is applied to the "
+"calendar days header row (<literal>tr</literal>), which contains the names "
+"of the week days. (6)"
+msgstr ""
+"<literal>seam-date-headerDays</literal> &mdash; このクラスはカレンダーの曜日"
+"ヘッダ列 (<literal>tr</literal>) に適用され、 1 週間の曜日が含まれます。 (6)"
+
+#. Tag: para
+#: Controls.xml:828
+#, no-c-format
+msgid ""
+"<literal>seam-date-footer</literal> &mdash; This class is applied to the "
+"calendar footer row (<literal>tr</literal>), which displays the current "
+"date. (7)"
+msgstr ""
+"<literal>seam-date-footer</literal> &mdash; このクラスはカレンダーのフッタ列 "
+"(<literal>tr</literal>) に適用され、 現在の日付を表示します。 (7)"
+
+#. Tag: para
+#: Controls.xml:833
+#, no-c-format
+msgid ""
+"<literal>seam-date-inMonth</literal> &mdash; This class is applied to the "
+"table cell (<literal>td</literal>) elements that contain a date within the "
+"month currently displayed. (8)"
+msgstr ""
+"<literal>seam-date-inMonth</literal> &mdash; このクラスは現在表示されている月"
+"の日付を含むテーブルセル (<literal>td</literal>) のエレメントに適用されま"
+"す。 (8)"
+
+#. Tag: para
+#: Controls.xml:838
+#, no-c-format
+msgid ""
+"<literal>seam-date-outMonth</literal> &mdash; This class is applied to the "
+"table cell (<literal>td</literal>) elements that contain a date outside of "
+"the month currently displayed. (9)"
+msgstr ""
+"<literal>seam-date-outMonth</literal> &mdash; このクラスは現在表示されている"
+"月に含まれない日付を含むテーブルセル (<literal>td</literal>) のエレメントに適"
+"用されます。 (9)"
+
+#. Tag: para
+#: Controls.xml:843
+#, no-c-format
+msgid ""
+"<literal>seam-date-selected</literal> &mdash; This class is applied to the "
+"table cell (<literal>td</literal>) element that contains the currently "
+"selected date. (10)"
+msgstr ""
+"<literal>seam-date-selected</literal> &mdash; このクラスは現在選択されている"
+"日付を含むテーブルセル (<literal>td</literal>) のエレメントに適用されます。 "
+"(10)"
+
+#. Tag: para
+#: Controls.xml:848
+#, no-c-format
+msgid ""
+"<literal>seam-date-dayOff-inMonth</literal> &mdash; This class is applied to "
+"the table cell (<literal>td</literal>) elements that contain a \"day off\" "
+"date (i.e. weekend days, Saturday and Sunday) within the currently selected "
+"month. (11)"
+msgstr ""
+"<literal>seam-date-dayOff-inMonth</literal> &mdash; このクラスは現在選択され"
+"ている月の「休日」となる日付 (週末、土曜日および日曜日) を含むテーブルセル "
+"(<literal>td</literal>) のエレメントに適用されます。 (11)"
+
+#. Tag: para
+#: Controls.xml:853
+#, no-c-format
+msgid ""
+"<literal>seam-date-dayOff-outMonth</literal> &mdash; This class is applied "
+"to the table cell (<literal>td</literal>) elements that contain a \"day off"
+"\" date (i.e. weekend days, Saturday and Sunday) outside of the currently "
+"selected month. (12)"
+msgstr ""
+"<literal>seam-date-dayOff-outMonth</literal> &mdash; このクラスは現在選択され"
+"ている月に含まれない「休日」 (週末、土曜日および日曜日) を含むテーブルセル "
+"(<literal>td</literal>) のエレメントに適用されます。 (12)"
+
+#. Tag: para
+#: Controls.xml:858
+#, no-c-format
+msgid ""
+"<literal>seam-date-hover</literal> &mdash; This class is applied to the "
+"table cell (<literal>td</literal>) element over which the cursor is "
+"hovering. (13)"
+msgstr ""
+"<literal>seam-date-hover</literal> &mdash; このクラスはカーソルが指している"
+"テーブルセル (<literal>td</literal>) のエレメントに適用されます。 (13)"
+
+#. Tag: para
+#: Controls.xml:863
+#, no-c-format
+msgid ""
+"<literal>seam-date-monthNames</literal> &mdash; This class is applied to the "
+"<literal>div</literal> control that contains the popup month selector. (14)"
+msgstr ""
+"<literal>seam-date-monthNames</literal> &mdash; このクラスはポップアップの月"
+"選択を含む <literal>div</literal> コントロールに適用されます。 (14)"
+
+#. Tag: para
+#: Controls.xml:868
+#, no-c-format
+msgid ""
+"<literal>seam-date-monthNameLink</literal> &mdash; This class is applied to "
+"the anchor (<literal>a</literal>) controls that contain the popup month "
+"names. (15)"
+msgstr ""
+"<literal>seam-date-monthNameLink</literal> &mdash; このクラスはポップアップの"
+"月の名前を含むアンカー (<literal>a</literal>) コントロールに適用されます。 "
+"(15)"
+
+#. Tag: para
+#: Controls.xml:873
+#, no-c-format
+msgid ""
+"<literal>seam-date-years </literal> &mdash; This class is applied to the "
+"<literal>div</literal> control that contains the popup year selector. (16)"
+msgstr ""
+"<literal>seam-date-years </literal> &mdash; このクラスはポップアップの年選択"
+"を含む <literal>div</literal> コントロールに適用されます。 (16)"
+
+#. Tag: para
+#: Controls.xml:878
+#, no-c-format
+msgid ""
+"<literal>seam-date-yearLink</literal> &mdash; This class is applied to the "
+"anchor (<literal>a</literal>) controls that contain the popup years. (15)"
+msgstr ""
+"<literal>seam-date-yearLink</literal> &mdash; このクラスはポップアップの年を"
+"含むアンカー (<literal>a</literal>) コントロールに適用されます。 (15)"
+
+#. Tag: literal
+#: Controls.xml:896
+#, no-c-format
+msgid "&lt;s:conversationPropagation&gt;"
+msgstr "&lt;s:conversationPropagation&gt;"
+
+#. Tag: para
+#: Controls.xml:903
+#, no-c-format
+msgid ""
+"Customize the conversation propagation for a command link or button (or "
+"similar JSF control). <emphasis>Facelets only.</emphasis>"
+msgstr ""
+"コマンドリンクやボタン (または JSF コントロールのようなもの) に対する対話伝搬"
+"をカスタマイズします。 <emphasis>Facelets 固有です。</emphasis>"
+
+#. Tag: literal
+#: Controls.xml:932
+#, no-c-format
+msgid "&lt;s:conversationId&gt;"
+msgstr "&lt;s:conversationId&gt;"
+
+#. Tag: para
+#: Controls.xml:939
+#, no-c-format
+msgid ""
+"Add the conversation id to an output link (or similar JSF control). "
+"<emphasis>Facelets only.</emphasis>"
+msgstr ""
+"対話 ID を出力リンク (または JSF コントロールのようなもの) に追加します。 "
+"<emphasis>Facelets 固有です。</emphasis>"
+
+#. Tag: literal
+#: Controls.xml:959
+#, no-c-format
+msgid "&lt;s:taskId&gt;"
+msgstr "&lt;s:taskId&gt;"
+
+#. Tag: para
+#: Controls.xml:966
+#, no-c-format
+msgid ""
+"Add the task id to an output link (or similar JSF control), when the task is "
+"available via <literal>#{task}</literal>. <emphasis>Facelets only.</emphasis>"
+msgstr ""
+"タスクが <literal>#{task}</literal> で使用できる場合、 タスク ID を出力リン"
+"ク (または JSF のようなもの) に追加します。 <emphasis>Facelets 固有です。</"
+"emphasis>"
+
+#. Tag: literal
+#: Controls.xml:986
+#, no-c-format
+msgid "&lt;s:fileUpload&gt;"
+msgstr "&lt;s:fileUpload&gt;"
+
+#. Tag: para
+#: Controls.xml:993
+#, no-c-format
+msgid ""
+"Renders a file upload control. This control must be used within a form with "
+"an encoding type of <literal>multipart/form-data</literal>, i.e:"
+msgstr ""
+"ファイルアップロードコントロールをレンダリングします。 このコントロールはエン"
+"コーディングタイプ <literal>multipart/form-data</literal> を使用してフォーム"
+"内で使用する必要があります。"
+
+#. Tag: programlisting
+#: Controls.xml:996
+#, no-c-format
+msgid "&lt;h:form enctype=\"multipart/form-data\"&gt;"
+msgstr "&lt;h:form enctype=\"multipart/form-data\"&gt;"
+
+#. Tag: para
+#: Controls.xml:997
+#, no-c-format
+msgid ""
+"For multipart requests, the Seam Multipart servlet filter must also be "
+"configured in <literal>web.xml</literal>:"
+msgstr ""
+"マルチパートのリクエストの場合、 Seam Multipart サーブレットフィルタも "
+"<literal>web.xml</literal> 内で設定しなければなりません。"
+
+#. Tag: programlisting
+#: Controls.xml:1000
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-class&gt;\n"
+"  &lt;/filter&gt;\n"
+"\n"
+"  &lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;/*&lt;/url-pattern&gt;\n"
+"  &lt;/filter-mapping&gt;"
+msgstr ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-class&gt;\n"
+"  &lt;/filter&gt;\n"
+"\n"
+"  &lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;/*&lt;/url-pattern&gt;\n"
+"  &lt;/filter-mapping&gt;"
+
+#. Tag: para
+#: Controls.xml:1004
+#, no-c-format
+msgid ""
+"The following configuration options for multipart requests may be configured "
+"in components.xml:"
+msgstr ""
+"components.xml では、 次のようなマルチパートリクエスト用の設定オプションが設"
+"定できます。"
+
+#. Tag: para
+#: Controls.xml:1009
+#, no-c-format
+msgid ""
+"<literal>createTempFiles</literal> &mdash; if this option is set to true, "
+"uploaded files are streamed to a temporary file instead of in memory."
+msgstr ""
+"<literal>createTempFiles</literal> &mdash; このオプションが true に設定される"
+"と、 アップロードされたファイルはメモリ内ではなくテンポラリファイルにストリー"
+"ムされます。"
+
+#. Tag: para
+#: Controls.xml:1014
+#, no-c-format
+msgid ""
+"<literal>maxRequestSize</literal> &mdash; the maximum size of a file upload "
+"request, in bytes."
+msgstr ""
+"<literal>maxRequestSize</literal> &mdash; ファイルアップロードリクエストの最"
+"大サイズをバイト単位で設定できます。"
+
+#. Tag: para
+#: Controls.xml:1019
+#, no-c-format
+msgid "Here&#39;s an example:"
+msgstr "例を示します。"
+
+#. Tag: programlisting
+#: Controls.xml:1022
+#, no-c-format
+msgid ""
+"&lt;component class=\"org.jboss.seam.web.MultipartFilter\"&gt;\n"
+"      &lt;property name=\"createTempFiles\"&gt;true&lt;/property&gt;\n"
+"      &lt;property name=\"maxRequestSize\"&gt;1000000&lt;/property&gt;\n"
+"  &lt;/component&gt;"
+msgstr ""
+"&lt;component class=\"org.jboss.seam.web.MultipartFilter\"&gt;\n"
+"      &lt;property name=\"createTempFiles\"&gt;true&lt;/property&gt;\n"
+"      &lt;property name=\"maxRequestSize\"&gt;1000000&lt;/property&gt;\n"
+"  &lt;/component&gt;"
+
+#. Tag: para
+#: Controls.xml:1028
+#, no-c-format
+msgid ""
+"<literal>data</literal> &mdash; this value binding receives the binary file "
+"data. The receiving field should be declared as a <literal>byte[]</literal> "
+"or <literal>InputStream</literal> (required)."
+msgstr ""
+"<literal>data</literal> &mdash; この値バインディングはバイナリファイルデータ"
+"を受け取ります。 受信フィールドは <literal>byte[]</literal> または "
+"<literal>InputStream</literal> で宣言されなければなりません(必須)。"
+
+#. Tag: para
+#: Controls.xml:1033
+#, no-c-format
+msgid ""
+"<literal>contentType</literal> &mdash; this value binding receives the "
+"file&#39;s content type (optional)."
+msgstr ""
+"<literal>contentType</literal> &mdash; この値バインディングはファイルの昆展と"
+"タイプを受け取ります (オプション)。"
+
+#. Tag: para
+#: Controls.xml:1038
+#, no-c-format
+msgid ""
+"<literal>fileName</literal> &mdash; this value binding receives the filename "
+"(optional)."
+msgstr ""
+"<literal>fileName</literal> &mdash; この値バインディングはファイル名を受け取"
+"ります(オプション)。"
+
+#. Tag: para
+#: Controls.xml:1043
+#, no-c-format
+msgid ""
+"<literal>accept</literal> &mdash; a comma-separated list of content types to "
+"accept, may not be supported by the browser. E.g. <literal>\"images/png,"
+"images/jpg\"</literal>, <literal>\"images/*\"</literal>."
+msgstr ""
+"<literal>accept</literal> &mdash; 承認するコンテントタイプをコンマで区切った"
+"一覧です。 <literal>\"images/png,images/jpg\"</literal>、 <literal>\"images/*"
+"\"</literal> などのようなブラウザではサポートされていない場合があります。"
+
+#. Tag: para
+#: Controls.xml:1048
+#, no-c-format
+msgid "<literal>style</literal> &mdash; The control&#39;s style"
+msgstr "<literal>style</literal> &mdash; コントロールのスタイルです。"
+
+#. Tag: para
+#: Controls.xml:1053
+#, no-c-format
+msgid "<literal>styleClass</literal> &mdash; The control&#39;s style class"
+msgstr "<literal>styleClass</literal> &mdash; コントロールのスタイルクラスです。"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Conversations.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Conversations.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Conversations.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1620 @@
+# translation of Conversations.po to Japanese
+# Noriko Mizumoto <noriko at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Conversations\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-30 01:52+0000\n"
+"PO-Revision-Date: 2007-10-30 15:01+1000\n"
+"Last-Translator: Noriko Mizumoto <noriko at redhat.com>\n"
+"Language-Team: Japanese <fedora-trans-ja at redhat.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Conversations.xml:6
+#, no-c-format
+msgid "Conversations and workspace management"
+msgstr "対話とワークスペースの管理"
+
+#. Tag: para
+#: Conversations.xml:7
+#, no-c-format
+msgid "It&#39;s time to understand Seam&#39;s conversation model in more detail."
+msgstr "本章では、 そろそろ Seam の対話モデルについて詳細に理解していくことにします。"
+
+#. Tag: para
+#: Conversations.xml:10
+#, no-c-format
+msgid ""
+"Historically, the notion of a Seam \"conversation\" came about as a merger "
+"of three different ideas:"
+msgstr ""
+"事のはじまりは、 3 つの思いつきが融合した結果、 Seam 「対話」の概念となったこ"
+"とです。"
+
+#. Tag: para
+#: Conversations.xml:15
+#, no-c-format
+msgid ""
+"The idea of a <emphasis>workspace</emphasis>, which I encountered in a "
+"project for the Victorian government in 2002. In this project I was forced "
+"to implement workspace management on top of Struts, an experience I pray "
+"never to repeat."
+msgstr ""
+"<emphasis>ワークスペース</emphasis> という目的、 これは 2002 年にビクトリア州"
+"政府 (オーストラリア) のプロジェクトで思いつきました。 このプロジェクトで、私"
+"は Struts の上にワークスペース管理を実装せざるを得なくなりました。2 度と繰り"
+"返したいとは思わないような経験でした。"
+
+#. Tag: para
+#: Conversations.xml:20
+#, no-c-format
+msgid ""
+"The idea of an <emphasis>application transaction</emphasis> with optimistic "
+"semantics, and the realization that existing frameworks based around a "
+"stateless architecture could not provide effective management of extended "
+"persistence contexts. (The Hibernate team is truly fed up with copping the "
+"blame for <literal>LazyInitializationException</literal>s, which are not "
+"really Hibernate&#39;s fault, but rather the fault of the extremely limiting "
+"persistence context model supported by stateless architectures such as the "
+"Spring framework or the traditional <emphasis>stateless session facade</"
+"emphasis> (anti)pattern in J2EE.)"
+msgstr ""
+"楽観的セマンティクスで動作する<emphasis>アプリケーショントランザクション</"
+"emphasis>という思いつきに加え、 ステートレスなアーキテクチャをベースとする既"
+"存のフレームワークでは拡張された永続コンテキストの効率的な管理は実現できない"
+"ことを実感した事実でした。 (Hibernate チームは "
+"<literal>LazyInitializationException</literal> に対する非難は聞き飽きていまし"
+"たし、 実際にはこれは Hibernate に問題があるのではなく、 むしろ Spring フレー"
+"ムワークや J2EE における従来の <emphasis>stateless session facade</emphasis> "
+"(anti) パターンなどステートレスアーキテクチャでサポートされる極端に限定的な永"
+"続コンテキストモデルに問題があったのです。)"
+
+#. Tag: para
+#: Conversations.xml:25
+#, no-c-format
+msgid "The idea of a workflow <emphasis>task</emphasis>."
+msgstr "ワークフロー<emphasis>タスク</emphasis>という思いつき"
+
+#. Tag: para
+#: Conversations.xml:30
+#, no-c-format
+msgid ""
+"By unifying these ideas and providing deep support in the framework, we have "
+"a powerful construct that lets us build richer and more efficient "
+"applications with less code than before."
+msgstr ""
+"こうした思いつきを統一しフレームワークで強力なサポートを提供することで、 以前"
+"よりすっきりしたコードでより豊かで効率的なアプリケーションをビルドできるパワ"
+"フルな構成概念を得ました。"
+
+#. Tag: title
+#: Conversations.xml:34
+#, no-c-format
+msgid "Seam&#39;s conversation model"
+msgstr "Seam の対話モデル"
+
+#. Tag: para
+#: Conversations.xml:35
+#, no-c-format
+msgid ""
+"The examples we have seen so far make use of a very simple conversation "
+"model that follows these rules:"
+msgstr "これまでに見た例は、以下の規則に従う非常に単純な対話モデルを利用します。"
+
+#. Tag: para
+#: Conversations.xml:40
+#, no-c-format
+msgid ""
+"There is always a conversation context active during the apply request "
+"values, process validations, update model values, invoke application and "
+"render response phases of the JSF request lifecycle."
+msgstr ""
+"JSF リクエストライフサイクルである、 リクエスト値の適用、 プロセスの妥当性検"
+"証、 モデル値の更新、 アプリケーションの呼び出し、 レスポンスのレンダリングの"
+"各フェーズの期間、 常にアクティブな対話コンテキストがあります。"
+
+#. Tag: para
+#: Conversations.xml:45
+#, no-c-format
+msgid ""
+"At the end of the restore view phase of the JSF request lifecycle, Seam "
+"attempts to restore any previous long-running conversation context. If none "
+"exists, Seam creates a new temporary conversation context."
+msgstr ""
+"JSF リクエストライフサイクルであるビューの復元フェーズの終わりで、 Seam はそ"
+"れまでの長期対話コンテキストの復元を試みます。 存在しなければ、 Seam は新しい"
+"テンポラリの対話コンテキストを生成します。"
+
+#. Tag: para
+#: Conversations.xml:50
+#, no-c-format
+msgid ""
+"When an <literal>@Begin</literal> method is encountered, the temporary "
+"conversation context is promoted to a long running conversation."
+msgstr ""
+"<literal>@Begin</literal> メソッドが出てくると、 テンポラリの対話コンテキスト"
+"は長期対話に昇格します。"
+
+#. Tag: para
+#: Conversations.xml:55
+#, no-c-format
+msgid ""
+"When an <literal>@End</literal> method is encountered, any long-running "
+"conversation context is demoted to a temporary conversation."
+msgstr ""
+"<literal>@End</literal> メソッドが出てくると、 どのような長期対話コンテキスト"
+"でもテンポラリの対話に降格されます。"
+
+#. Tag: para
+#: Conversations.xml:60
+#, no-c-format
+msgid ""
+"At the end of the render response phase of the JSF request lifecycle, Seam "
+"stores the contents of a long running conversation context or destroys the "
+"contents of a temporary conversation context."
+msgstr ""
+"JSF リクエストライフサイクルであるレスポンスのレンダリングのフェーズの終わり"
+"で、 Seam は長期対話コンテキストの内容を記憶するか、 テンポラリ対話コンテキス"
+"トの内容を破棄します。"
+
+#. Tag: para
+#: Conversations.xml:65
+#, no-c-format
+msgid ""
+"Any faces request (a JSF postback) will propagate the conversation context. "
+"By default, non-faces requests (GET requests, for example) do not propagate "
+"the conversation context, but see below for more information on this."
+msgstr ""
+"どのような faces リクエスト (JSF ポストバック) でも対話コンテキストを伝播しま"
+"す。 デフォルトでは、 non-faces リクエスト (例えば、 GET リクエスト) は対話コ"
+"ンテキストを伝播しませんが、 これについての詳細は下記を参照してください。"
+
+#. Tag: para
+#: Conversations.xml:70
+#, no-c-format
+msgid ""
+"If the JSF request lifecycle is foreshortened by a redirect, Seam "
+"transparently stores and restores the current conversation context&mdash;"
+"unless the conversation was already ended via <literal>@End"
+"(beforeRedirect=true)</literal>."
+msgstr ""
+"JSF リクエストライフサイクルがリダイレクトによって短縮される場合、 Seam は透"
+"過的に現在の対話コンテキストを保存及び復元します。 &mdash; その対話が "
+"<literal>@End (beforeRedirect=true) </literal> で既に終了されていない限り。"
+
+#. Tag: para
+#: Conversations.xml:75
+#, no-c-format
+msgid ""
+"Seam transparently propagates the conversation context across JSF postbacks "
+"and redirects. If you don&#39;t do anything special, a <emphasis>non-faces "
+"request</emphasis> (a GET request for example) will not propagate the "
+"conversation context and will be processed in a new temporary conversation. "
+"This is usually - but not always - the desired behavior."
+msgstr ""
+"Seam は透過的に JSF のポストバックとリダイレクト全体に渡り対話コンテキストを"
+"伝播します。 特に何もしなければ、 <emphasis>non-faces リクエスト</emphasis> "
+"(例えば、 GETリクエスト) は対話コンテキストを伝播せずに新しいテンポラリの対話"
+"内で処理されます。 これが通常 (必ずではないが) 望ましい動作となります。"
+
+#. Tag: para
+#: Conversations.xml:78
+#, no-c-format
+msgid ""
+"If you want to propagate a Seam conversation across a non-faces request, you "
+"need to explicitly code the Seam <emphasis>conversation id</emphasis> as a "
+"request parameter:"
+msgstr ""
+"non-faces リクエスト全体に Seam 対話を伝播させたい場合、 リクエストパラメータ"
+"として Seam <emphasis>対話 ID</emphasis> を明示的にコード化する必要がありま"
+"す。"
+
+#. Tag: programlisting
+#: Conversations.xml:81
+#, no-c-format
+msgid ""
+"&lt;a href=\"main.jsf?conversationId=#{conversation.id}\"&gt;Continue&lt;/"
+"a&gt;"
+msgstr ""
+"&lt;a href=\"main.jsf?conversationId=#{conversation.id}\"&gt;Continue&lt;/"
+"a&gt;"
+
+#. Tag: para
+#: Conversations.xml:82
+#, no-c-format
+msgid "Or, the more JSF-ish:"
+msgstr "JSF のようにする場合には以下のようにします。"
+
+#. Tag: programlisting
+#: Conversations.xml:85
+#, no-c-format
+msgid ""
+"&lt;h:outputLink value=\"main.jsf\"&gt;\n"
+"    &lt;f:param name=\"conversationId\" value=\"#{conversation.id}\"/&gt;\n"
+"    &lt;h:outputText value=\"Continue\"/&gt;\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+"&lt;h:outputLink value=\"main.jsf\"&gt;\n"
+"    &lt;f:param name=\"conversationId\" value=\"#{conversation.id}\"/&gt;\n"
+"    &lt;h:outputText value=\"Continue\"/&gt;\n"
+"&lt;/h:outputLink&gt;"
+
+#. Tag: para
+#: Conversations.xml:86 Conversations.xml:94
+#, no-c-format
+msgid "If you use the Seam tag library, this is equivalent:"
+msgstr "Seam タグライブラリを使用する場合、 以下は等価です。"
+
+#. Tag: programlisting
+#: Conversations.xml:89
+#, no-c-format
+msgid ""
+"&lt;h:outputLink value=\"main.jsf\"&gt;\n"
+"    &lt;s:conversationId/&gt;\n"
+"    &lt;h:outputText value=\"Continue\"/&gt;\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+"&lt;h:outputLink value=\"main.jsf\"&gt;\n"
+"    &lt;s:conversationId/&gt;\n"
+"    &lt;h:outputText value=\"Continue\"/&gt;\n"
+"&lt;/h:outputLink&gt;"
+
+#. Tag: para
+#: Conversations.xml:90
+#, no-c-format
+msgid ""
+"If you wish to disable propagation of the conversation context for a "
+"postback, a similar trick is used:"
+msgstr ""
+"ポストバック用の対話コンテキストの伝播を無効にしたい場合は、 同様のテクニック"
+"が使えます。"
+
+#. Tag: programlisting
+#: Conversations.xml:93
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;f:param name=\"conversationPropagation\" value=\"none\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;f:param name=\"conversationPropagation\" value=\"none\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+
+#. Tag: programlisting
+#: Conversations.xml:97
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"none\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"none\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+
+#. Tag: para
+#: Conversations.xml:98
+#, no-c-format
+msgid ""
+"Note that disabling conversation context propagation is absolutely not the "
+"same thing as ending the conversation."
+msgstr ""
+"対話コンテキストの伝播を無効にすることと、 対話を終了することとは全く異なるこ"
+"とですので注意してください。"
+
+#. Tag: para
+#: Conversations.xml:101
+#, no-c-format
+msgid ""
+"The <literal>conversationPropagation</literal> request parameter, or the "
+"<literal>&lt;s:conversationPropagation&gt;</literal> tag may even be used to "
+"begin and end conversation, or begin a nested conversation."
+msgstr ""
+"<literal>conversationPropagation</literal> リクエストパラメータ または "
+"<literal>&lt;s:conversationPropagation&gt;</literal> タグは、 対話の開始と終"
+"了、あるいはネストされた対話の開始にも使用することができます。"
+
+#. Tag: programlisting
+#: Conversations.xml:104
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"end\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"end\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+
+#. Tag: programlisting
+#: Conversations.xml:105
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Child\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"nested\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+"&lt;h:commandLink action=\"main\" value=\"Select Child\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"nested\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+
+#. Tag: programlisting
+#: Conversations.xml:106
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Hotel\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"begin\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+"&lt;h:commandLink action=\"main\" value=\"Select Hotel\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"begin\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+
+#. Tag: programlisting
+#: Conversations.xml:107
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Hotel\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"join\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+"&lt;h:commandLink action=\"main\" value=\"Select Hotel\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"join\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+
+#. Tag: para
+#: Conversations.xml:108
+#, no-c-format
+msgid ""
+"This conversation model makes it easy to build applications which behave "
+"correctly with respect to multi-window operation. For many applications, "
+"this is all that is needed. Some complex applications have either or both of "
+"the following additional requirements:"
+msgstr ""
+"この対話モデルは、 マルチウィンドウ操作に関して正常に動作するアプリケーション"
+"の構築を容易してくれます。 多くのアプリケーションにとって必要なものはこれだけ"
+"です。 複雑なアプリケーションのなかには以下の追加要件の両方あるいはどちらかを"
+"必要とするものがあります。"
+
+#. Tag: para
+#: Conversations.xml:113
+#, no-c-format
+msgid ""
+"A conversation spans many smaller units of user interaction, which execute "
+"serially or even concurrently. The smaller <emphasis>nested conversations</"
+"emphasis> have their own isolated set of conversation state, and also have "
+"access to the state of the outer conversation."
+msgstr ""
+"対話には、 連続的に実行したり同時に実行することもある多くの小さな単位のユー"
+"ザーインタラクションも含まれます。 より小さい<emphasis>ネストされた対話</"
+"emphasis>には単独の対話状態セットがあり、 また外側の対話状態へのアクセスもあ"
+"ります。"
+
+#. Tag: para
+#: Conversations.xml:118
+#, no-c-format
+msgid ""
+"The user is able to switch between many conversations within the same "
+"browser window. This feature is called <emphasis>workspace management</"
+"emphasis>."
+msgstr ""
+"ユーザは同じブラウザのウィンドウ内でいくつもの対話を切り換えることができま"
+"す。 この機能が<emphasis>ワークスペース管理</emphasis>と呼ばれるものです。"
+
+#. Tag: title
+#: Conversations.xml:126
+#, no-c-format
+msgid "Nested conversations"
+msgstr "ネストされた対話"
+
+#. Tag: para
+#: Conversations.xml:127
+#, no-c-format
+msgid ""
+"A nested conversation is created by invoking a method marked <literal>@Begin"
+"(nested=true)</literal> inside the scope of an existing conversation. A "
+"nested conversation has its own conversation context, and also has read-only "
+"access to the context of the outer conversation. (It can read the outer "
+"conversation&#39;s context variables, but not write to them.) When an "
+"<literal>@End</literal> is subsequently encountered, the nested conversation "
+"will be destroyed, and the outer conversation will resume, by \"popping\" "
+"the conversation stack. Conversations may be nested to any arbitrary depth."
+msgstr ""
+"ネストされた対話は既存の対話のスコープ内で <literal>@@Begin(nested=true)</"
+"literal> とマークされたメソッドを呼び出すことによって作成されます。 ネストさ"
+"れた対話はそれ自身の対話コンテキストを持っていて、 また、 外側の対話のコンテ"
+"キストへの読取り専用アクセスも持っています (外側の対話のコンテキスト変数を読"
+"むことはできるが、書き込みはできない) 。 次に <literal>@End</literal> が出て"
+"くると、 ネストされた対話は破棄されて外側の対話が対話スタックを「POP」するこ"
+"とによって再開します。 対話は任意の深さにネストすることができます。"
+
+#. Tag: para
+#: Conversations.xml:130
+#, no-c-format
+msgid ""
+"Certain user activity (workspace management, or the back button) can cause "
+"the outer conversation to be resumed before the inner conversation is ended. "
+"In this case it is possible to have multiple concurrent nested conversations "
+"belonging to the same outer conversation. If the outer conversation ends "
+"before a nested conversation ends, Seam destroys all nested conversation "
+"contexts along with the outer context."
+msgstr ""
+"特定のユーザーアクティビティ (ワークスペース管理や戻るボタン) により、 内側の"
+"対話が終了する前に外側の対話が開始させることができます。 この場合、 同じ外側"
+"の対話に属する複数の並列ネスト対話を持つことができます。 ネストされた対話が終"
+"了する前に外側の対話が終了すると、 Seam はネストされた対話コンテキストを外側"
+"のコンテキストと共にすべて破棄します。"
+
+#. Tag: para
+#: Conversations.xml:133
+#, no-c-format
+msgid ""
+"A conversation may be thought of as a <emphasis>continuable state</"
+"emphasis>. Nested conversations allow the application to capture a "
+"consistent continuable state at various points in a user interaction, thus "
+"insuring truly correct behavior in the face of backbuttoning and workspace "
+"management."
+msgstr ""
+"対話は<emphasis>継続可能な状態</emphasis>と見なすこともできます。 ネストされ"
+"た対話により、 ユーザーインタラクションにおける様々なポイントにおいてアプリ"
+"ケーションは一貫した継続可能な状態を捕らえることができるようになります。 従っ"
+"て、 戻るボタンを押すことやワークスペース管理に対して正しい動作を保証します。"
+
+#. Tag: para
+#: Conversations.xml:136
+#, no-c-format
+msgid ""
+"TODO: an example to show how a nested conversation prevents bad stuff "
+"happening when you backbutton."
+msgstr ""
+"TODO: 戻るボタンを押した場合に、 どのようにしてネストされた対話が不正が発生し"
+"ないよう防止するかを示す例。"
+
+#. Tag: para
+#: Conversations.xml:139
+#, no-c-format
+msgid ""
+"Usually, if a component exists in a parent conversation of the current "
+"nested conversation, the nested conversation will use the same instance. "
+"Occasionally, it is useful to have a different instance in each nested "
+"conversation, so that the component instance that exists in the parent "
+"conversation is invisible to its child conversations. You can achieve this "
+"behavior by annotating the component <literal>@PerNestedConversation</"
+"literal>."
+msgstr ""
+"通常、 現在ネストされている対話の親となる対話にコンポーネントが存在する場"
+"合、 このネストされている対話は同じインスタンスを使用します。ときには、 親と"
+"なる対話内に存在するコンポーネントインスタンスがその子となる対話からは見えな"
+"くなるように、 ネストされるそれぞれの対話内に別々のインスタンスを持たせると便"
+"利なことがあります。 コンポーネントに <literal>@PerNestedConversation</"
+"literal> アノテーションを付けるとこれを行うことができます。"
+
+#. Tag: title
+#: Conversations.xml:145
+#, no-c-format
+msgid "Starting conversations with GET requests"
+msgstr "GET リクエストを使って対話を開始する"
+
+#. Tag: para
+#: Conversations.xml:146
+#, no-c-format
+msgid ""
+"JSF does not define any kind of action listener that is triggered when a "
+"page is accessed via a non-faces request (for example, a HTTP GET request). "
+"This can occur if the user bookmarks the page, or if we navigate to the page "
+"via an <literal>&lt;h:outputLink&gt;</literal>."
+msgstr ""
+"ページが non-faces リクエスト (例、 HTTP GET リクエスト) 経由でアクセスされる"
+"場合、 JSF は起動されるアクションリスナを全く定義しません。 ユーザーがその"
+"ページをブックマークする、あるいは <literal>&lt;h:outputLink&gt;</literal> か"
+"らそのページに行き着く場合などに発生します。"
+
+#. Tag: para
+#: Conversations.xml:149
+#, no-c-format
+msgid ""
+"Sometimes we want to begin a conversation immediately the page is accessed. "
+"Since there is no JSF action method, we can&#39;t solve the problem in the "
+"usual way, by annotating the action with <literal>@Begin</literal>."
+msgstr ""
+"ページがアクセスされたら直ちに対話を開始したい場合があります。 JSF アクション"
+"メソッドがないため、 アクションに <literal>@Begin</literal> アノテーションを"
+"付けるという普通の方法では問題を解決することができません。"
+
+#. Tag: para
+#: Conversations.xml:152
+#, no-c-format
+msgid ""
+"A further problem arises if the page needs some state to be fetched into a "
+"context variable. We&#39;ve already seen two ways to solve this problem. If "
+"that state is held in a Seam component, we can fetch the state in a "
+"<literal>@Create</literal> method. If not, we can define a "
+"<literal>@Factory</literal> method for the context variable."
+msgstr ""
+"このページが状態をコンテキスト変数にフェッチする必要がある場合、 さらなる問題"
+"が発生します。 すでに、2 つの問題解決方法を見てきました。 Seam コンポーネント"
+"にその状態が保持される場合、 <literal>@Create</literal> メソッドでその状態を"
+"フェッチできます。 保持されていなければ、 コンテキスト変数に対して "
+"<literal>@Factory</literal> メソッドを定義することができます。"
+
+#. Tag: para
+#: Conversations.xml:155
+#, no-c-format
+msgid ""
+"If none of these options works for you, Seam lets you define a "
+"<emphasis>page action</emphasis> in the <literal>pages.xml</literal> file."
+msgstr ""
+"これらのオプションがうまくいかない場合、 Seam では <literal>pages.xml</"
+"literal> ファイルに <emphasis>ページアクション</emphasis> を定義することがで"
+"きます。"
+
+#. Tag: programlisting
+#: Conversations.xml:158
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\" action=\"#{messageManager.list}\"/"
+"&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\" action=\"#{messageManager.list}\"/"
+"&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Conversations.xml:159
+#, no-c-format
+msgid ""
+"This action method is called at the beginning of the render response phase, "
+"any time the page is about to be rendered. If a page action returns a non-"
+"null outcome, Seam will process any appropriate JSF and Seam navigation "
+"rules, possibly resulting in a completely different page being rendered."
+msgstr ""
+"ページがレンダリングされるようとするときは常に、 レスポンスのレンダリング"
+"フェーズの冒頭でこのアクションメソッドが呼び出されます。 ページアクションが "
+"null 以外の結果を返す場合、 Seam は適切な JSF 及び Seam ナビゲーションの規則"
+"を処理するので、 まったく異なるページがレンダリングさることになるかもしれませ"
+"ん。"
+
+#. Tag: para
+#: Conversations.xml:162
+#, no-c-format
+msgid ""
+"If <emphasis>all</emphasis> you want to do before rendering the page is "
+"begin a conversation, you could use a built-in action method that does just "
+"that:"
+msgstr ""
+"ページのレンダリング前に行いたいことが対話の開始だけなら、 ビルトインアクショ"
+"ンメソッドを次のように使用できます。"
+
+#. Tag: programlisting
+#: Conversations.xml:165
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\" action=\"#{conversation.begin}\"/"
+"&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\" action=\"#{conversation.begin}\"/"
+"&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Conversations.xml:166
+#, no-c-format
+msgid ""
+"Note that you can also call this built-in action from a JSF control, and, "
+"similarly, you can use <literal>#{conversation.end}</literal> to end "
+"conversations."
+msgstr ""
+"また、 このビルトインアクションは JSF コントロールからも呼び出すことができ、 "
+"同様に <literal>#{conversation.end}</literal> を使って対話を終了することがで"
+"きます。"
+
+#. Tag: para
+#: Conversations.xml:169
+#, no-c-format
+msgid ""
+"If you want more control, to join existing conversations or begin a nested "
+"conversion, to begin a pageflow or an atomic conversation, you should use "
+"the <literal>&lt;begin-conversation&gt;</literal> element."
+msgstr ""
+"既存の対話にジョインするあるいはネストされる対話を開始する、 ページフローまた"
+"はアトミック対話を開始するためにさらに制御が必要な場合は、 <literal>&lt;"
+"begin-conversation&gt;</literal> エレメントを使用してください。"
+
+#. Tag: programlisting
+#: Conversations.xml:172
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\"&gt;\n"
+"       &lt;begin-conversation nested=\"true\" pageflow=\"AddItem\"/&gt;\n"
+"    &lt;page&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\"&gt;\n"
+"       &lt;begin-conversation nested=\"true\" pageflow=\"AddItem\"/&gt;\n"
+"    &lt;page&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Conversations.xml:173
+#, no-c-format
+msgid "There is also an <literal>&lt;end-conversation&gt;</literal> element."
+msgstr "また、 <literal>&lt;end-conversation&gt;</literal> エレメントもあります。"
+
+#. Tag: programlisting
+#: Conversations.xml:176
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/home.jsp\"&gt;\n"
+"       &lt;end-conversation/&gt;\n"
+"    &lt;page&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/home.jsp\"&gt;\n"
+"       &lt;end-conversation/&gt;\n"
+"    &lt;page&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Conversations.xml:177
+#, no-c-format
+msgid "To solve the first problem, we now have five options:"
+msgstr "1 番目の問題を解決するには、 現在 5 つのオプションから選択できます。"
+
+#. Tag: para
+#: Conversations.xml:182
+#, no-c-format
+msgid "Annotate the <literal>@Create</literal> method with <literal>@Begin</literal>"
+msgstr ""
+" <literal>@Create</literal> メソッドに <literal>@Begin</literal> アノテーショ"
+"ンを追加する"
+
+#. Tag: para
+#: Conversations.xml:187
+#, no-c-format
+msgid ""
+"Annotate the <literal>@Factory</literal> method with <literal>@Begin</"
+"literal>"
+msgstr ""
+"<literal>@Factory</literal> メソッドに <literal>@Begin</literal> アノテーショ"
+"ンを追加する"
+
+#. Tag: para
+#: Conversations.xml:192
+#, no-c-format
+msgid "Annotate the Seam page action method with <literal>@Begin</literal>"
+msgstr ""
+"Seam ページアクションメソッドに <literal>@Begin</literal> アノテーションを追"
+"加する"
+
+#. Tag: para
+#: Conversations.xml:197
+#, no-c-format
+msgid ""
+"Use <literal>&lt;begin-conversation&gt;</literal> in <literal>pages.xml</"
+"literal>."
+msgstr ""
+"<literal>pages.xml</literal> で <literal>&lt;begin-conversation&gt;</"
+"literal> を使用する"
+
+#. Tag: para
+#: Conversations.xml:202
+#, no-c-format
+msgid "Use <literal>#{conversation.begin}</literal> as the Seam page action method"
+msgstr ""
+"<literal>#{conversation.begin}</literal> を Seam ページアクションメソッドとし"
+"て使用する"
+
+#. Tag: title
+#: Conversations.xml:210
+#, no-c-format
+msgid ""
+"Using <literal>&lt;s:link&gt;</literal> and <literal>&lt;s:button&gt;</"
+"literal>"
+msgstr ""
+"<literal>&lt;s:link&gt;</literal> と <literal>&lt;s:button&gt;</literal> の使"
+"いかた"
+
+#. Tag: para
+#: Conversations.xml:211
+#, no-c-format
+msgid ""
+"JSF command links always perform a form submission via JavaScript, which "
+"breaks the web browser&#39;s \"open in new window\" or \"open in new tab\" "
+"feature. In plain JSF, you need to use an <literal>&lt;h:outputLink&gt;</"
+"literal> if you need this functionality. But there are two major limitations "
+"to <literal>&lt;h:outputLink&gt;</literal>."
+msgstr ""
+"JSF コマンドリンクは常に JavaScript でフォームサブミットを行います。 これによ"
+"りウェブブラウザの「新しいウィンドウで開く」または「新しいタブで開く」機能を"
+"動作させなくしてしまいます。 プレーンの JFS でこの機能が必要な場合は、  "
+"<literal>&lt;h:outputLink&gt;</literal> を使用する必要があります。 ただし、 "
+"<literal>&lt;h:outputLink&gt;</literal> には重要な制限が 2 つあります。"
+
+#. Tag: para
+#: Conversations.xml:216
+#, no-c-format
+msgid ""
+"JSF provides no way to attach an action listener to an <literal>&lt;h:"
+"outputLink&gt;</literal>."
+msgstr ""
+"JSF はアクションリスナーを <literal>&lt;h:outputLink&gt;</literal> につなげる"
+"方法を提供していません。"
+
+#. Tag: para
+#: Conversations.xml:221
+#, no-c-format
+msgid ""
+"JSF does not propagate the selected row of a <literal>DataModel</literal> "
+"since there is no actual form submission."
+msgstr ""
+"実際にフォームサブミットがないため、 JSF は選択された  <literal>DataModel</"
+"literal> の列を伝播しません。"
+
+#. Tag: para
+#: Conversations.xml:226
+#, no-c-format
+msgid ""
+"Seam provides the notion of a <emphasis>page action</emphasis> to help solve "
+"the first problem, but this does nothing to help us with the second problem. "
+"We <emphasis>could</emphasis> work around this by using the RESTful approach "
+"of passing a request parameter and requerying for the selected object on the "
+"server side. In some cases&mdash;such as the Seam blog example "
+"application&mdash;this is indeed the best approach. The RESTful style "
+"supports bookmarking, since it does not require server-side state. In other "
+"cases, where we don&#39;t care about bookmarks, the use of "
+"<literal>@DataModel</literal> and <literal>@DataModelSelection</literal> is "
+"just so convenient and transparent!"
+msgstr ""
+"Seam は 1 番目の問題解決に対しては <emphasis>ページアクション</emphasis>とい"
+"う概念を提供していますが、 これは 2 番目の問題についてはまったく役に立ちませ"
+"ん。 これについてはリクエストパラメータを渡すという RESTful 方法を使ってサー"
+"バー側にある選択オブジェクトに再問い合わせを行うことで回避できました。 Seam "
+"ブログサンプルアプリケーションなどの場合には、 実際にこれが最適の手段となりま"
+"す。 RESTful スタイルはサーバー側の状態を必要としないためブックマーク機能をサ"
+"ポートします。 ブックマークはあまり必要ないなどこれ以外の場合は、 "
+"<literal>@DataModel</literal> および <literal>@DataModelSelection</literal> "
+"を使用すると非常に便利で透過的になります。"
+
+#. Tag: para
+#: Conversations.xml:229
+#, no-c-format
+msgid ""
+"To fill in this missing functionality, and to make conversation propagation "
+"even simpler to manage, Seam provides the <literal>&lt;s:link&gt;</literal> "
+"JSF tag."
+msgstr ""
+"この機能を補ってさらに対話伝播の管理をより簡略化するために、 Seam は "
+"<literal>&lt;s:link&gt;</literal> JSF タグを提供しています。"
+
+#. Tag: para
+#: Conversations.xml:232
+#, no-c-format
+msgid "The link may specify just the JSF view id:"
+msgstr "このリンクは JSF ビュー ID だけを指定することができます。"
+
+#. Tag: programlisting
+#: Conversations.xml:235
+#, no-c-format
+msgid "&lt;s:link view=“/login.xhtml” value=“Login”/&gt;"
+msgstr "&lt;s:link view=“/login.xhtml” value=“Login”/&gt;"
+
+#. Tag: para
+#: Conversations.xml:236
+#, no-c-format
+msgid ""
+"Or, it may specify an action method (in which case the action outcome "
+"determines the page that results):"
+msgstr ""
+"あるいは、 アクションメソッドを指定することができます (この場合、 アクション"
+"の結果は最終的なページを確定する)。"
+
+#. Tag: programlisting
+#: Conversations.xml:239
+#, no-c-format
+msgid "&lt;s:link action=“#{login.logout}” value=“Logout”/&gt;"
+msgstr "&lt;s:link action=“#{login.logout}” value=“Logout”/&gt;"
+
+#. Tag: para
+#: Conversations.xml:240
+#, no-c-format
+msgid ""
+"If you specify <emphasis>both</emphasis> a JSF view id and an action method, "
+"the &#39;view&#39; will be used <emphasis>unless</emphasis> the action "
+"method returns a non-null outcome:"
+msgstr ""
+"JSF ビュー ID とアクションメソッドの<emphasis>両方</emphasis>を指定すると、 "
+"アクションメソッドが null 以外の結果を返さない限り「ビュー」が使用されます。"
+
+#. Tag: programlisting
+#: Conversations.xml:243
+#, no-c-format
+msgid ""
+"&lt;s:link view=\"/loggedOut.xhtml\"  action=“#{login.logout}” "
+"value=“Logout”/&gt;"
+msgstr ""
+"&lt;s:link view=\"/loggedOut.xhtml\"  action=“#{login.logout}” "
+"value=“Logout”/&gt;"
+
+#. Tag: para
+#: Conversations.xml:244
+#, no-c-format
+msgid ""
+"The link automatically propagates the selected row of a <literal>DataModel</"
+"literal> using inside <literal>&lt;h:dataTable&gt;</literal>:"
+msgstr ""
+"リンクは <literal>&lt;h:dataTable&gt;</literal> 内で使用する "
+"<literal>DataModel</literal> の選択列を自動的に伝播します。"
+
+#. Tag: programlisting
+#: Conversations.xml:247
+#, no-c-format
+msgid ""
+"&lt;s:link view=“/hotel.xhtml” action=“#{hotelSearch.selectHotel}” value=“#"
+"{hotel.name}”/&gt;"
+msgstr ""
+"&lt;s:link view=“/hotel.xhtml” action=“#{hotelSearch.selectHotel}” value=“#"
+"{hotel.name}”/&gt;"
+
+#. Tag: para
+#: Conversations.xml:248
+#, no-c-format
+msgid "You can leave the scope of an existing conversation:"
+msgstr "既存の対話のスコープを残しておくことができます。"
+
+#. Tag: programlisting
+#: Conversations.xml:251
+#, no-c-format
+msgid "&lt;s:link view=“/main.xhtml” propagation=“none”/&gt;"
+msgstr "&lt;s:link view=“/main.xhtml” propagation=“none”/&gt;"
+
+#. Tag: para
+#: Conversations.xml:252
+#, no-c-format
+msgid "You can begin, end, or nest conversations:"
+msgstr "対話を開始、 終了、 またはネストすることができます。"
+
+#. Tag: programlisting
+#: Conversations.xml:255
+#, no-c-format
+msgid "&lt;s:link action=“#{issueEditor.viewComment}” propagation=“nest”/&gt;"
+msgstr "&lt;s:link action=“#{issueEditor.viewComment}” propagation=“nest”/&gt;"
+
+#. Tag: para
+#: Conversations.xml:256
+#, no-c-format
+msgid ""
+"If the link begins a conversation, you can even specify a pageflow to be "
+"used:"
+msgstr "リンクが対話を開始すると、 使用されるページプローを指定することもできます。"
+
+#. Tag: programlisting
+#: Conversations.xml:259
+#, no-c-format
+msgid ""
+"&lt;s:link action=“#{documentEditor.getDocument}” propagation=“begin” \n"
+"        pageflow=“EditDocument”/&gt;"
+msgstr ""
+"&lt;s:link action=“#{documentEditor.getDocument}” propagation=“begin” \n"
+"        pageflow=“EditDocument”/&gt;"
+
+#. Tag: para
+#: Conversations.xml:260
+#, no-c-format
+msgid "The <literal>taskInstance</literal> attribute if for use in jBPM task lists:"
+msgstr "jBPM タスクリストを使用する場合の <literal>taskInstance</literal> 属性です。"
+
+#. Tag: programlisting
+#: Conversations.xml:263
+#, no-c-format
+msgid ""
+"&lt;s:link action=“#{documentApproval.approveOrReject}” taskInstance=“#"
+"{task}”/&gt;"
+msgstr ""
+"&lt;s:link action=“#{documentApproval.approveOrReject}” taskInstance=“#"
+"{task}”/&gt;"
+
+#. Tag: para
+#: Conversations.xml:264
+#, no-c-format
+msgid "(See the DVD Store demo application for examples of this.)"
+msgstr " (上記の例は DVD ストアデモアプリケーションを参照してください。)"
+
+#. Tag: para
+#: Conversations.xml:267
+#, no-c-format
+msgid ""
+"Finally, if you need the \"link\" to be rendered as a button, use "
+"<literal>&lt;s:button&gt;</literal>:"
+msgstr ""
+"最後に、 ボタンとしてレンダリングされる「リンク」が必要な場合は <literal>&lt;"
+"s:button&gt;</literal> を使用します。"
+
+#. Tag: programlisting
+#: Conversations.xml:270
+#, no-c-format
+msgid "&lt;s:button action=“#{login.logout}” value=“Logout”/&gt;"
+msgstr "&lt;s:button action=“#{login.logout}” value=“Logout”/&gt;"
+
+#. Tag: title
+#: Conversations.xml:274
+#, no-c-format
+msgid "Success messages"
+msgstr "成功のメッセージ"
+
+#. Tag: para
+#: Conversations.xml:275
+#, no-c-format
+msgid ""
+"It is quite common to display a message to the user indicating success or "
+"failure of an action. It is convenient to use a JSF <literal>FacesMessage</"
+"literal> for this. Unfortunately, a successful action often requires a "
+"browser redirect, and JSF does not propagate faces messages across "
+"redirects. This makes it quite difficult to display success messages in "
+"plain JSF."
+msgstr ""
+"動作に対して成功したか失敗したかをユーザーに示すメッセージを表示するのは非常"
+"に一般的です。 これには、 JSF <literal>FacesMessage</literal> を使うと便利で"
+"す。 残念ながら、 成功のアクションはブラウザリダイレクトを要することが多く、 "
+"JSF はリダイレクト全体に faces のメッセージは伝播しません。 このためプレーン "
+"JSF で成功のメッセージを表示するのはかなり困難になります。"
+
+#. Tag: para
+#: Conversations.xml:278
+#, no-c-format
+msgid ""
+"The built in conversation-scoped Seam component named "
+"<literal>facesMessages</literal> solves this problem. (You must have the "
+"Seam redirect filter installed.)"
+msgstr ""
+"ビルトインの対話スコープ Seam コンポーネントである <literal>facesMessages</"
+"literal> がこの問題を解決してくれます。 (Seam リダイレクトフィルタをインス"
+"トールしておく必要があります。)"
+
+#. Tag: programlisting
+#: Conversations.xml:281
+#, no-c-format
+msgid ""
+"@Name(\"editDocumentAction\")\n"
+"@Stateless\n"
+"public class EditDocumentBean implements EditDocument {\n"
+"    @In EntityManager em;\n"
+"    @In Document document;\n"
+"    @In FacesMessages facesMessages;\n"
+"    \n"
+"    public String update() {\n"
+"        em.merge(document);\n"
+"        facesMessages.add(\"Document updated\");\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"editDocumentAction\")\n"
+"@Stateless\n"
+"public class EditDocumentBean implements EditDocument {\n"
+"    @In EntityManager em;\n"
+"    @In Document document;\n"
+"    @In FacesMessages facesMessages;\n"
+"    \n"
+"    public String update() {\n"
+"        em.merge(document);\n"
+"        facesMessages.add(\"Document updated\");\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Conversations.xml:282
+#, no-c-format
+msgid ""
+"Any message added to <literal>facesMessages</literal> is used in the very "
+"next render response phase for the current conversation. This even works "
+"when there is no long-running conversation since Seam preserves even "
+"temporary conversation contexts across redirects."
+msgstr ""
+"<literal>facesMessages</literal> に追加されるメッセージはすべてすぐ次のフェー"
+"スであるレスポンスレンダリングフェーズで現在の対話に対して使用されます。 これ"
+"は Seam がリダイレクト全体に一時的な対話コンテキストを維持するので長期実行の"
+"対話がない場合でも機能します。"
+
+#. Tag: para
+#: Conversations.xml:285
+#, no-c-format
+msgid "You can even include JSF EL expressions in a faces message summary:"
+msgstr "JSF EL 式を faces メッセージサマリーに含ませることもできます。"
+
+#. Tag: programlisting
+#: Conversations.xml:288
+#, no-c-format
+msgid "facesMessages.add(\"Document #{document.title} was updated\");"
+msgstr "facesMessages.add(\"Document #{document.title} was updated\");"
+
+#. Tag: para
+#: Conversations.xml:289
+#, no-c-format
+msgid "You may display the messages in the usual way, for example:"
+msgstr "たとえば、 通常の方法でメッセージを表示することができます。"
+
+#. Tag: programlisting
+#: Conversations.xml:292
+#, no-c-format
+msgid "&lt;h:messages globalOnly=\"true\"/&gt;"
+msgstr "&lt;h:messages globalOnly=\"true\"/&gt;"
+
+#. Tag: title
+#: Conversations.xml:296
+#, no-c-format
+msgid "Using an \"explicit\" conversation id"
+msgstr "「明示的な」対話 ID の使いかた"
+
+#. Tag: para
+#: Conversations.xml:297
+#, no-c-format
+msgid ""
+"Ordinarily, Seam generates a meaningless unique id for each conversation in "
+"each session. You can customize the id value when you begin the conversation."
+msgstr ""
+"通常、 Seam は各セッション内の各対話に対して特に意味のない固有 ID を生成しま"
+"す。 対話を開始するときに、 この ID 値をカスタマイズすることができます。"
+
+#. Tag: para
+#: Conversations.xml:300
+#, no-c-format
+msgid ""
+"This feature can be used to customize the conversation id generation "
+"algorithm like so:"
+msgstr "この機能を使って対話 ID 生成アルゴリズムをカスタマイズすることができます。"
+
+#. Tag: programlisting
+#: Conversations.xml:303
+#, no-c-format
+msgid ""
+"@Begin(id=\"#{myConversationIdGenerator.nextId}\") \n"
+"public void editHotel() { ... }"
+msgstr ""
+"@Begin(id=\"#{myConversationIdGenerator.nextId}\") \n"
+"public void editHotel() { ... }"
+
+#. Tag: para
+#: Conversations.xml:304
+#, no-c-format
+msgid "Or it can be used to assign a meaningful conversation id:"
+msgstr "あるいは、 何か意味のある対話 ID を割り当てるのに使うこともできます。"
+
+#. Tag: programlisting
+#: Conversations.xml:307
+#, no-c-format
+msgid ""
+"@Begin(id=\"hotel#{hotel.id}\") \n"
+"public String editHotel() { ... }"
+msgstr ""
+"@Begin(id=\"hotel#{hotel.id}\") \n"
+"public String editHotel() { ... }"
+
+#. Tag: programlisting
+#: Conversations.xml:308
+#, no-c-format
+msgid ""
+"@Begin(id=\"hotel#{hotelsDataModel.rowData.id}\") \n"
+"public String selectHotel() { ... }"
+msgstr ""
+"@Begin(id=\"hotel#{hotelsDataModel.rowData.id}\") \n"
+"public String selectHotel() { ... }"
+
+#. Tag: programlisting
+#: Conversations.xml:309
+#, no-c-format
+msgid ""
+"@Begin(id=\"entry#{params[&#39;blogId&#39;]}\")\n"
+"public String viewBlogEntry() { ... }"
+msgstr ""
+"@Begin(id=\"entry#{params[&#39;blogId&#39;]}\")\n"
+"public String viewBlogEntry() { ... }"
+
+#. Tag: programlisting
+#: Conversations.xml:310
+#, no-c-format
+msgid ""
+"@BeginTask(id=\"task#{taskInstance.id}\") \n"
+"public String approveDocument() { ... }"
+msgstr ""
+"@BeginTask(id=\"task#{taskInstance.id}\") \n"
+"public String approveDocument() { ... }"
+
+#. Tag: para
+#: Conversations.xml:311
+#, no-c-format
+msgid ""
+"Clearly, these example result in the same conversation id every time a "
+"particular hotel, blog or task is selected. So what happens if a "
+"conversation with the same conversation id already exists when the new "
+"conversation begins? Well, Seam detects the existing conversation and "
+"redirects to that conversation without running the <literal>@Begin</literal> "
+"method again. This feature helps control the number of workspaces that are "
+"created when using workspace management."
+msgstr ""
+"ご覧のように、 上記の例では、 特定のホテル、ブログ、あるいはタスクが選択され"
+"る毎に同じ対話 id となります。 既に存在するものと同じ対話 id での対話では何が"
+"起こるのでしょうか? そうです。 Seam は既存の対話を検出し、 @Begin メソッドを"
+"再び開始することなくその対話へリダイレクトします。 この特長は、 ワークスペー"
+"ス管理を使用するときに生成されるワークスペースの数を制御する際に役立ちます。"
+
+#. Tag: title
+#: Conversations.xml:317
+#, no-c-format
+msgid "Workspace management"
+msgstr "ワークスペースの管理"
+
+#. Tag: para
+#: Conversations.xml:318
+#, no-c-format
+msgid ""
+"Workspace management is the ability to \"switch\" conversations in a single "
+"window. Seam makes workspace management completely transparent at the level "
+"of the Java code. To enable workspace management, all you need to do is:"
+msgstr ""
+"ワークスペース管理は、1 つのウィンドウの中で対話を「切り換える」能力です。 "
+"Seam はワークスペース管理を Java コードのレベルで完全に透過的にします。 ワー"
+"クスペース管理を可能にするために、必要なすべては以下の通りです。"
+
+#. Tag: para
+#: Conversations.xml:323
+#, no-c-format
+msgid ""
+"Provide <emphasis>description</emphasis> text for each view id (when using "
+"JSF or Seam navigation rules) or page node (when using jPDL pageflows). This "
+"description text is displayed to the user by the workspace switchers."
+msgstr ""
+"それぞれのビュー ID (JSF または Seam ナビゲーションルールを使用する場合) また"
+"はページノード (jPDL ページフロー) に<emphasis>詳細</emphasis>のテキストを入"
+"力します。 この詳細テキストはワークスペース切り替えによってユーザーに表示され"
+"ます。"
+
+#. Tag: para
+#: Conversations.xml:328
+#, no-c-format
+msgid ""
+"Include one or more of the standard workspace switcher JSP or facelets "
+"fragments in your pages. The standard fragments support workspace management "
+"via a drop down menu, a list of conversations, or breadcrumbs."
+msgstr ""
+"ページの中に 1 つ以上の標準ワークスペース切り替え JSP または facelets の断片"
+"を含ませます。 標準の断片はドロップダウンメニュー、 対話のリスト、 ブレッドク"
+"ラム (breadcrumbs) を介してワークスペース管理をサポートします。"
+
+#. Tag: title
+#: Conversations.xml:333
+#, no-c-format
+msgid "Workspace management and JSF navigation"
+msgstr "ワークスペース管理と JSF ナビゲーション"
+
+#. Tag: para
+#: Conversations.xml:334
+#, no-c-format
+msgid ""
+"When you use JSF or Seam navigation rules, Seam switches to a conversation "
+"by restoring the current <literal>view-id</literal> for that conversation. "
+"The descriptive text for the workspace is defined in a file called "
+"<literal>pages.xml</literal> that Seam expects to find in the <literal>WEB-"
+"INF</literal> directory, right next to <literal>faces-config.xml</literal>:"
+msgstr ""
+"JSF または Seam ナビゲーションルールを使用する場合、 Seam は対話の現在の "
+"<literal>view-id</literal> を復元してその対話に切り替えます。 ワークスペース"
+"の記述的なテキストは <literal>pages.xml</literal> と呼ばれるファイルで定義さ"
+"れ、 Seam はこのファイルが <literal>WEB-INF</literal> ディレクトリ内の "
+"<literal>faces-config.xml</literal> のすぐ次に配置されていることを期待しま"
+"す。"
+
+#. Tag: programlisting
+#: Conversations.xml:337
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/main.xhtml\"&gt;Search hotels: #{hotelBooking."
+"searchString}&lt;/page&gt;\n"
+"    &lt;page view-id=\"/hotel.xhtml\"&gt;View hotel: #{hotel.name}&lt;/"
+"page&gt;\n"
+"    &lt;page view-id=\"/book.xhtml\"&gt;Book hotel: #{hotel.name}&lt;/"
+"page&gt;\n"
+"    &lt;page view-id=\"/confirm.xhtml\"&gt;Confirm: #{booking.description}"
+"&lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/main.xhtml\"&gt;Search hotels: #{hotelBooking."
+"searchString}&lt;/page&gt;\n"
+"    &lt;page view-id=\"/hotel.xhtml\"&gt;View hotel: #{hotel.name}&lt;/"
+"page&gt;\n"
+"    &lt;page view-id=\"/book.xhtml\"&gt;Book hotel: #{hotel.name}&lt;/"
+"page&gt;\n"
+"    &lt;page view-id=\"/confirm.xhtml\"&gt;Confirm: #{booking.description}"
+"&lt;/page&gt;\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Conversations.xml:338
+#, no-c-format
+msgid ""
+"Note that if this file is missing, the Seam application will continue to "
+"work perfectly! The only missing functionality will be the ability to switch "
+"workspaces."
+msgstr ""
+"このファイルが期待する場所になくても Seam アプリケーションは正常に動作を続行"
+"します。 動作しない機能はワークスペースの切り替え機能のみです。"
+
+#. Tag: title
+#: Conversations.xml:344
+#, no-c-format
+msgid "Workspace management and jPDL pageflow"
+msgstr "ワークスペース管理と jPDL ページフロー"
+
+#. Tag: para
+#: Conversations.xml:345
+#, no-c-format
+msgid ""
+"When you use a jPDL pageflow definition, Seam switches to a conversation by "
+"restoring the current jBPM process state. This is a more flexible model "
+"since it allows the same <literal>view-id</literal> to have different "
+"descriptions depending upon the current <literal>&lt;page&gt;</literal> "
+"node. The description text is defined by the <literal>&lt;page&gt;</literal> "
+"node:"
+msgstr ""
+"jPDL ページフロー定義を使う場合、 Seam は現在の jBPM のプロセス状態を復元する"
+"ことによって対話に切り替えます。 同じ <literal>view-id</literal> に現在の "
+"<literal>&lt;page&gt;</literal> に応じて異なる詳細を持たせることができるため"
+"これはより柔軟なモデルになります。 詳細テキストは <literal>&lt;page&gt;</"
+"literal> ノードで定義されます。"
+
+#. Tag: programlisting
+#: Conversations.xml:348
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"shopping\"&gt;\n"
+"\n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"browse\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;page name=\"browse\" view-id=\"/browse.xhtml\"&gt;\n"
+"      &lt;description&gt;DVD Search: #{search.searchPattern}&lt;/"
+"description&gt;\n"
+"      &lt;transition to=\"browse\"/&gt;\n"
+"      &lt;transition name=\"checkout\" to=\"checkout\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"checkout\" view-id=\"/checkout.xhtml\"&gt;\n"
+"      &lt;description&gt;Purchase: $#{cart.total}&lt;/description&gt;\n"
+"      &lt;transition to=\"checkout\"/&gt;\n"
+"      &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"complete\" view-id=\"/complete.xhtml\"&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+"&lt;pageflow-definition name=\"shopping\"&gt;\n"
+"\n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"browse\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;page name=\"browse\" view-id=\"/browse.xhtml\"&gt;\n"
+"      &lt;description&gt;DVD Search: #{search.searchPattern}&lt;/"
+"description&gt;\n"
+"      &lt;transition to=\"browse\"/&gt;\n"
+"      &lt;transition name=\"checkout\" to=\"checkout\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"checkout\" view-id=\"/checkout.xhtml\"&gt;\n"
+"      &lt;description&gt;Purchase: $#{cart.total}&lt;/description&gt;\n"
+"      &lt;transition to=\"checkout\"/&gt;\n"
+"      &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"complete\" view-id=\"/complete.xhtml\"&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+
+#. Tag: title
+#: Conversations.xml:352
+#, no-c-format
+msgid "The conversation switcher"
+msgstr "対話切り替え"
+
+#. Tag: para
+#: Conversations.xml:353
+#, no-c-format
+msgid ""
+"Include the following fragment in your JSP or facelets page to get a drop-"
+"down menu that lets you switch to any current conversation, or to any other "
+"page of the application:"
+msgstr ""
+"次の断片を JSP または facelets のページに含ませて、 現在の対話またはその他い"
+"ずれのアプリケーションのページにも切り替えられるドロップダウンメニューを取得"
+"します。"
+
+#. Tag: programlisting
+#: Conversations.xml:356
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{switcher.conversationIdOrOutcome}\"&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Find Issues\" itemValue=\"findIssue\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Create Issue\" itemValue=\"editIssue\"/"
+"&gt;\n"
+"    &lt;f:selectItems value=\"#{switcher.selectItems}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{switcher.select}\" value=\"Switch\"/&gt;"
+msgstr ""
+"&lt;h:selectOneMenu value=\"#{switcher.conversationIdOrOutcome}\"&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Find Issues\" itemValue=\"findIssue\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Create Issue\" itemValue=\"editIssue\"/"
+"&gt;\n"
+"    &lt;f:selectItems value=\"#{switcher.selectItems}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{switcher.select}\" value=\"Switch\"/&gt;"
+
+#. Tag: para
+#: Conversations.xml:357
+#, no-c-format
+msgid ""
+"In this example, we have a menu that includes an item for each conversation, "
+"together with two additional items that let the user begin a new "
+"conversation."
+msgstr ""
+"この例では、 ユーザに新しい対話を開始させる 2 つの追加アイテムに加えて、 各対"
+"話のためのアイテムを含むメニューがあります。"
+
+#. Tag: title
+#: Conversations.xml:371
+#, no-c-format
+msgid "The conversation list"
+msgstr "対話一覧"
+
+#. Tag: para
+#: Conversations.xml:372
+#, no-c-format
+msgid ""
+"The conversation list is very similar to the conversation switcher, except "
+"that it is displayed as a table:"
+msgstr ""
+"対話一覧は対話切り替えに非常によく似ていますが、 表形式で表示される点が異なり"
+"ます。"
+
+#. Tag: programlisting
+#: Conversations.xml:375
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{conversationList}\" var=\"entry\"\n"
+"        rendered=\"#{not empty conversationList}\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Workspace&lt;/f:facet&gt;\n"
+"        &lt;h:commandLink action=\"#{entry.select}\" value=\"#{entry."
+"description}\"/&gt;\n"
+"        &lt;h:outputText value=\"[current]\" rendered=\"#{entry.current}\"/"
+"&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Activity&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{entry.startDatetime}\"&gt;\n"
+"            &lt;f:convertDateTime type=\"time\" pattern=\"hh:mm a\"/&gt;\n"
+"        &lt;/h:outputText&gt;\n"
+"        &lt;h:outputText value=\" - \"/&gt;\n"
+"        &lt;h:outputText value=\"#{entry.lastDatetime}\"&gt;\n"
+"            &lt;f:convertDateTime type=\"time\" pattern=\"hh:mm a\"/&gt;\n"
+"        &lt;/h:outputText&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"        &lt;h:commandButton action=\"#{entry.select}\" value=\"#{msg.Switch}"
+"\"/&gt;\n"
+"        &lt;h:commandButton action=\"#{entry.destroy}\" value=\"#{msg."
+"Destroy}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+"&lt;h:dataTable value=\"#{conversationList}\" var=\"entry\"\n"
+"        rendered=\"#{not empty conversationList}\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Workspace&lt;/f:facet&gt;\n"
+"        &lt;h:commandLink action=\"#{entry.select}\" value=\"#{entry."
+"description}\"/&gt;\n"
+"        &lt;h:outputText value=\"[current]\" rendered=\"#{entry.current}\"/"
+"&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Activity&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{entry.startDatetime}\"&gt;\n"
+"            &lt;f:convertDateTime type=\"time\" pattern=\"hh:mm a\"/&gt;\n"
+"        &lt;/h:outputText&gt;\n"
+"        &lt;h:outputText value=\" - \"/&gt;\n"
+"        &lt;h:outputText value=\"#{entry.lastDatetime}\"&gt;\n"
+"            &lt;f:convertDateTime type=\"time\" pattern=\"hh:mm a\"/&gt;\n"
+"        &lt;/h:outputText&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"        &lt;h:commandButton action=\"#{entry.select}\" value=\"#{msg.Switch}"
+"\"/&gt;\n"
+"        &lt;h:commandButton action=\"#{entry.destroy}\" value=\"#{msg."
+"Destroy}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+
+#. Tag: para
+#: Conversations.xml:376
+#, no-c-format
+msgid "We imagine that you will want to customize this for your own application."
+msgstr ""
+"恐らく、 多くの方が独自のアプリケーションに合うようカスタマイズを希望するだろ"
+"うと思います。"
+
+#. Tag: para
+#: Conversations.xml:387
+#, no-c-format
+msgid ""
+"The conversation list is nice, but it takes up a lot of space on the page, "
+"so you probably don&#39;t want to put it on <emphasis>every</emphasis> page."
+msgstr ""
+"対話一覧は便利ですが、 ページ上で対話一覧によって占有される領域が多いため、 "
+"<emphasis>すべての</emphasis>ページに対しては対話一覧を置きたくないでしょう。"
+
+#. Tag: para
+#: Conversations.xml:390
+#, no-c-format
+msgid "Notice that the conversation list lets the user destroy workspaces."
+msgstr ""
+"対話一覧によりユーザーがワークスペースを破壊することができるので留意してくだ"
+"さい。"
+
+#. Tag: title
+#: Conversations.xml:396
+#, no-c-format
+msgid "Breadcrumbs"
+msgstr "ブレッドクラム (Breadcrumbs) "
+
+#. Tag: para
+#: Conversations.xml:397
+#, no-c-format
+msgid ""
+"Breadcrumbs are useful in applications which use a nested conversation "
+"model. The breadcrumbs are a list of links to conversations in the current "
+"conversation stack:"
+msgstr ""
+"ブレッドクラムは、 ネストされた対話モデルを使うアプリケーションで役に立ちま"
+"す。 ブレッドクラムは、 現在の対話スタック内の対話へのリンクの一覧になりま"
+"す。"
+
+#. Tag: programlisting
+#: Conversations.xml:400
+#, no-c-format
+msgid ""
+"&lt;t:dataList value=\"#{conversationStack}\" var=\"entry\"&gt;\n"
+"    &lt;h:outputText value=\" | \"/&gt; \n"
+"    &lt;h:commandLink value=\"#{entry.description}\" action=\"#{entry.select}"
+"\"/&gt;\n"
+"&lt;/t:dataList&gt;"
+msgstr ""
+"&lt;t:dataList value=\"#{conversationStack}\" var=\"entry\"&gt;\n"
+"    &lt;h:outputText value=\" | \"/&gt; \n"
+"    &lt;h:commandLink value=\"#{entry.description}\" action=\"#{entry.select}"
+"\"/&gt;\n"
+"&lt;/t:dataList&gt;"
+
+#. Tag: para
+#: Conversations.xml:413
+#, no-c-format
+msgid ""
+"Please refer to the Seam Issue Tracker demo to see all this functionality in "
+"action!"
+msgstr ""
+"これらすべての機能が動作しているところを確認するには、 Seam 問題追跡システム "
+"(Seam Issue Tracker) デモを参照してください。"
+
+#. Tag: title
+#: Conversations.xml:421
+#, no-c-format
+msgid "Conversational components and JSF component bindings"
+msgstr "対話型コンポーネントと JSF コンポーネントのバインディング"
+
+#. Tag: para
+#: Conversations.xml:422
+#, no-c-format
+msgid ""
+"Conversational components have one minor limitation: they cannot be used to "
+"hold bindings to JSF components. (We generally prefer not to use this "
+"feature of JSF unless absolutely necessary, since it creates a hard "
+"dependency from application logic to the view.) On a postback request, "
+"component bindings are updated during the Restore View phase, before the "
+"Seam conversation context has been restored."
+msgstr ""
+"重要ではありませんが、 JSF コンポーネントへのバインディングの保持には使用でき"
+"ないという制限が対話型コンポーネントにはあります。 (一般的には、 アプリケー"
+"ション論理からビューに対する強い依存関係を作ってしまうため、 絶対的に必要でな"
+"い限り一般的にはこの JSF の機能は使用しないようにした方がよいでしょう。) "
+"postback リクエストで、 Seam 対話コンテキストが復元される前、 ビューの復元"
+"フェーズ中にコンポーネントのバインディングは更新されます。"
+
+#. Tag: para
+#: Conversations.xml:425
+#, no-c-format
+msgid ""
+"To work around this use an event scoped component to store the component "
+"bindings and inject it into the conversation scoped component that requires "
+"it."
+msgstr ""
+"これを回避するには、 イベントスコープコンポーネントを使ってコンポーネントバイ"
+"ンディングを格納し、 それを必要とする対話スコープコンポーネントにインジェクト"
+"します。"
+
+#. Tag: programlisting
+#: Conversations.xml:428
+#, no-c-format
+msgid ""
+"@Name(\"grid\")\n"
+"@Scope(ScopeType.EVENT)\n"
+"public class Grid\n"
+"{\n"
+"    private HtmlPanelGrid htmlPanelGrid;\n"
+"\n"
+"    // getters and setters\n"
+"    ...\n"
+"}"
+msgstr ""
+"@Name(\"grid\")\n"
+"@Scope(ScopeType.EVENT)\n"
+"public class Grid\n"
+"{\n"
+"    private HtmlPanelGrid htmlPanelGrid;\n"
+"\n"
+"    // getters and setters\n"
+"    ...\n"
+"}"
+
+#. Tag: programlisting
+#: Conversations.xml:429
+#, no-c-format
+msgid ""
+"@Name(\"gridEditor\")\n"
+"@Scope(ScopeType.CONVERSATION)\n"
+"public class GridEditor\n"
+"{\n"
+"    @In(required=false)\n"
+"    private Grid grid;\n"
+"    \n"
+"    ...\n"
+"}"
+msgstr ""
+"@Name(\"gridEditor\")\n"
+"@Scope(ScopeType.CONVERSATION)\n"
+"public class GridEditor\n"
+"{\n"
+"    @In(required=false)\n"
+"    private Grid grid;\n"
+"    \n"
+"    ...\n"
+"}"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Drools.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Drools.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Drools.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,410 @@
+# translation of Drools.po to Japanese
+# Noriko Mizumoto <noriko at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Drools\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-30 01:52+0000\n"
+"PO-Revision-Date: 2007-10-30 15:02+1000\n"
+"Last-Translator: Noriko Mizumoto <noriko at redhat.com>\n"
+"Language-Team: Japanese <fedora-trans-ja at redhat.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Drools.xml:6
+#, no-c-format
+msgid "Seam and JBoss Rules"
+msgstr "Seam と JBoss Rules"
+
+#. Tag: para
+#: Drools.xml:7
+#, no-c-format
+msgid ""
+"Seam makes it easy to call JBoss Rules (Drools) rulebases from Seam "
+"components or jBPM process definitions."
+msgstr ""
+"Seam では、Seam コンポーネントあるいは、 jBPM プロセス定義から JBoss ルール  "
+"(Drools) を容易に呼び出せます。"
+
+#. Tag: title
+#: Drools.xml:11
+#, no-c-format
+msgid "Installing rules"
+msgstr "ルールの初期化"
+
+#. Tag: para
+#: Drools.xml:12
+#, no-c-format
+msgid ""
+"The first step is to make an instance of <literal>org.drools.RuleBase</"
+"literal> available in a Seam context variable. In most rules-driven "
+"applications, rules need to be dynamically deployable, so you will need to "
+"implement some solution that allows you to deploy rules and make them "
+"available to Seam (a future release of Drools will provide a Rule Server "
+"that solves this problem). For testing purposes, Seam provides a built-in "
+"component that compiles a static set of rules from the classpath. You can "
+"install this component via <literal>components.xml</literal>:"
+msgstr ""
+"最初のステップは、Seam コンテキスト変数で <literal>org.drools.RuleBase</"
+"literal> インスタンスを有効化することです。 多くのルール駆動型アプリケーショ"
+"ンでは、 ルールは、動的にデプロイ可能である必要があります。 従って、ルールの"
+"デプロイと Seam での有効化を可能とするソリューションを実装する必要があるで"
+"しょう。 (将来版の Drools は、この問題を解決するルールサーバを提供するでしょ"
+"う。) テスト目的で、Seam はクラスパスから静的なルール一式をコンパイルする、組"
+"み込みコンポーネントを提供しています。 このコンポーネントは、"
+"<literal>components.xml</literal> によりインストール可能です。"
+
+#. Tag: programlisting
+#: Drools.xml:15
+#, no-c-format
+msgid ""
+"&lt;drools:rule-base name=\"policyPricingRules\"&gt;\n"
+"    &lt;drools:rule-files&gt;\n"
+"        &lt;value&gt;policyPricingRules&lt;/value&gt;\n"
+"    &lt;/drools:rule-files&gt;\n"
+"&lt;/drools:rule-base&gt;"
+msgstr ""
+"&lt;drools:rule-base name=\"policyPricingRules\"&gt;\n"
+"    &lt;drools:rule-files&gt;\n"
+"        &lt;value&gt;policyPricingRules&lt;/value&gt;\n"
+"    &lt;/drools:rule-files&gt;\n"
+"&lt;/drools:rule-base&gt;"
+
+#. Tag: para
+#: Drools.xml:16
+#, no-c-format
+msgid ""
+"This component compiles rules from a set of <literal>.drl</literal> files "
+"and caches an instance of <literal>org.drools.RuleBase</literal> in the Seam "
+"<literal>APPLICATION</literal> context. Note that it is quite likely that "
+"you will need to install multiple rule bases in a rule-driven application."
+msgstr ""
+"このコンポーネントは、<literal>.drl</literal> ファイル一式からルールをコンパ"
+"イルし、 Seam <literal>アプリケーション</literal>コンテキスト中に "
+"<literal>org.drools.RuleBase</literal> をキャッシュします。 複数のルールベー"
+"スをルール駆動型アプリケーションにインストールする必要もあり得ることに留意し"
+"てください。"
+
+#. Tag: para
+#: Drools.xml:19
+#, no-c-format
+msgid "If you want to use a Drools DSL, you alse need to specify the DSL definition:"
+msgstr "Drools DSLを利用するのであれば、DSL定義を指定しなければなりません:"
+
+#. Tag: programlisting
+#: Drools.xml:22
+#, no-c-format
+msgid ""
+"&lt;drools:rule-base name=\"policyPricingRules\" dsl-file=\"policyPricing.dsl"
+"\"&gt;\n"
+"    &lt;drools:rule-files&gt;\n"
+"        &lt;value&gt;policyPricingRules&lt;/value&gt;\n"
+"    &lt;/drools:rule-files&gt;\n"
+"&lt;/drools:rule-base&gt;"
+msgstr ""
+"&lt;drools:rule-base name=\"policyPricingRules\" dsl-file=\"policyPricing.dsl"
+"\"&gt;\n"
+"    &lt;drools:rule-files&gt;\n"
+"        &lt;value&gt;policyPricingRules&lt;/value&gt;\n"
+"    &lt;/drools:rule-files&gt;\n"
+"&lt;/drools:rule-base&gt;"
+
+#. Tag: para
+#: Drools.xml:23
+#, no-c-format
+msgid ""
+"Next, we need to make an instance of <literal>org.drools.WorkingMemory</"
+"literal> available to each conversation. (Each <literal>WorkingMemory</"
+"literal> accumulates facts relating to the current conversation.)"
+msgstr ""
+"次に、各対話に対して <literal>org.drools.WorkingMemory</literal> インスタンス"
+"を有効化する必要があります。 (各 <literal>WorkingMemory</literal> は、現在の"
+"対話に関連する fact を蓄積します。)"
+
+#. Tag: programlisting
+#: Drools.xml:26
+#, no-c-format
+msgid ""
+"&lt;drools:managed-working-memory name=\"policyPricingWorkingMemory\" auto-"
+"create=\"true\" rule-base=\"#{policyPricingRules}\"/&gt;"
+msgstr ""
+"&lt;drools:managed-working-memory name=\"policyPricingWorkingMemory\" auto-"
+"create=\"true\" rule-base=\"#{policyPricingRules}\"/&gt;"
+
+#. Tag: para
+#: Drools.xml:27
+#, no-c-format
+msgid ""
+"Notice that we gave the <literal>policyPricingWorkingMemory</literal> a "
+"reference back to our rule base via the <literal>ruleBase</literal> "
+"configuration property."
+msgstr ""
+"<literal>policyPricingWorkingMemory</literal> に、 <literal>ruleBase</"
+"literal> 設定プロパティにより、 ルールベースへの参照を与えていることに留意し"
+"てください。"
+
+#. Tag: title
+#: Drools.xml:33
+#, no-c-format
+msgid "Using rules from a Seam component"
+msgstr "Seam コンポーネントからのルールの使用"
+
+#. Tag: para
+#: Drools.xml:34
+#, no-c-format
+msgid ""
+"We can now inject our <literal>WorkingMemory</literal> into any Seam "
+"component, assert facts, and fire rules:"
+msgstr ""
+"<literal>WorkingMemory</literal> を、 任意の Seam コンポーネントにインジェク"
+"トし、 fact をアサートし、そしてルールを実行することができます。"
+
+#. Tag: programlisting
+#: Drools.xml:37
+#, no-c-format
+msgid ""
+"@In WorkingMemory policyPricingWorkingMemory;\n"
+"\n"
+"@In Policy policy;\n"
+"@In Customer customer;\n"
+"\n"
+"public void pricePolicy() throws FactException\n"
+"{\n"
+"    policyPricingWorkingMemory.assertObject(policy);\n"
+"    policyPricingWorkingMemory.assertObject(customer);\n"
+"    policyPricingWorkingMemory.fireAllRules();\n"
+"}"
+msgstr ""
+"@In WorkingMemory policyPricingWorkingMemory;\n"
+"\n"
+"@In Policy policy;\n"
+"@In Customer customer;\n"
+"\n"
+"public void pricePolicy() throws FactException\n"
+"{\n"
+"    policyPricingWorkingMemory.assertObject(policy);\n"
+"    policyPricingWorkingMemory.assertObject(customer);\n"
+"    policyPricingWorkingMemory.fireAllRules();\n"
+"}"
+
+#. Tag: title
+#: Drools.xml:41
+#, no-c-format
+msgid "Using rules from a jBPM process definition"
+msgstr "jBPM プロセス定義からルール使用"
+
+#. Tag: para
+#: Drools.xml:42
+#, no-c-format
+msgid ""
+"You can even allow a rule base to act as a jBPM action handler, decision "
+"handler, or assignment handler&mdash;in either a pageflow or business "
+"process definition."
+msgstr ""
+"ルールベースが jBPM アクションハンドラとして、あるいはデシジョンハンドラ、割"
+"り当てハンドラなどとして動作するようにさせることも可能です &mdash; ページフ"
+"ローまたはビジネスプロセス定義のどちらでも可。"
+
+#. Tag: programlisting
+#: Drools.xml:45
+#, no-c-format
+msgid ""
+"&lt;decision name=\"approval\"&gt;\n"
+"         \n"
+"    &lt;handler class=\"org.jboss.seam.drools.DroolsDecisionHandler\"&gt;\n"
+"        &lt;workingMemoryName&gt;orderApprovalRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"        &lt;assertObjects&gt;\n"
+"            &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"            &lt;element&gt;#{order}&lt;/element&gt;\n"
+"            &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"        &lt;/assertObjects&gt;\n"
+"    &lt;/handler&gt;\n"
+"    \n"
+"    &lt;transition name=\"approved\" to=\"ship\"&gt;\n"
+"        &lt;action class=\"org.jboss.seam.drools.DroolsActionHandler\"&gt;\n"
+"            &lt;workingMemoryName&gt;shippingRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"            &lt;assertObjects&gt;\n"
+"                &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"            &lt;/assertObjects&gt;\n"
+"        &lt;/action&gt;\n"
+"    &lt;/transition&gt;\n"
+"    \n"
+"    &lt;transition name=\"rejected\" to=\"cancelled\"/&gt;\n"
+"    \n"
+"&lt;/decision&gt;"
+msgstr ""
+"&lt;decision name=\"approval\"&gt;\n"
+"         \n"
+"    &lt;handler class=\"org.jboss.seam.drools.DroolsDecisionHandler\"&gt;\n"
+"        &lt;workingMemoryName&gt;orderApprovalRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"        &lt;assertObjects&gt;\n"
+"            &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"            &lt;element&gt;#{order}&lt;/element&gt;\n"
+"            &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"        &lt;/assertObjects&gt;\n"
+"    &lt;/handler&gt;\n"
+"    \n"
+"    &lt;transition name=\"approved\" to=\"ship\"&gt;\n"
+"        &lt;action class=\"org.jboss.seam.drools.DroolsActionHandler\"&gt;\n"
+"            &lt;workingMemoryName&gt;shippingRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"            &lt;assertObjects&gt;\n"
+"                &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"            &lt;/assertObjects&gt;\n"
+"        &lt;/action&gt;\n"
+"    &lt;/transition&gt;\n"
+"    \n"
+"    &lt;transition name=\"rejected\" to=\"cancelled\"/&gt;\n"
+"    \n"
+"&lt;/decision&gt;"
+
+#. Tag: para
+#: Drools.xml:46
+#, no-c-format
+msgid ""
+"The <literal>&lt;assertObjects&gt;</literal> element specifies EL "
+"expressions that return an object or collection of objects to be asserted as "
+"facts into the <literal>WorkingMemory</literal>."
+msgstr ""
+"<literal>&lt;assertObjects&gt;</literal> 要素は、 <literal>WorkingMemory</"
+"literal> 中に、fact としてアサーションされるオブジェクト、 または、オブジェク"
+"トのコレクションを返す EL 式を指定します。"
+
+#. Tag: para
+#: Drools.xml:49
+#, no-c-format
+msgid "There is also support for using Drools for jBPM task assignments:"
+msgstr "jBPM タスク割り当てのために Drools の使用もサポートしています。"
+
+#. Tag: programlisting
+#: Drools.xml:52
+#, no-c-format
+msgid ""
+"&lt;task-node name=\"review\"&gt;\n"
+"    &lt;task name=\"review\" description=\"Review Order\"&gt;\n"
+"        &lt;assignment handler=\"org.jboss.seam.drools."
+"DroolsAssignmentHandler\"&gt;\n"
+"            &lt;workingMemoryName&gt;orderApprovalRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"            &lt;assertObjects&gt;\n"
+"                &lt;element&gt;#{actor}&lt;/element&gt;\n"
+"                &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"            &lt;/assertObjects&gt;\n"
+"        &lt;/assignment&gt;\n"
+"    &lt;/task&gt;\n"
+"    &lt;transition name=\"rejected\" to=\"cancelled\"/&gt;\n"
+"    &lt;transition name=\"approved\" to=\"approved\"/&gt;\n"
+"&lt;/task-node&gt;"
+msgstr ""
+"&lt;task-node name=\"review\"&gt;\n"
+"    &lt;task name=\"review\" description=\"Review Order\"&gt;\n"
+"        &lt;assignment handler=\"org.jboss.seam.drools."
+"DroolsAssignmentHandler\"&gt;\n"
+"            &lt;workingMemoryName&gt;orderApprovalRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"            &lt;assertObjects&gt;\n"
+"                &lt;element&gt;#{actor}&lt;/element&gt;\n"
+"                &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"            &lt;/assertObjects&gt;\n"
+"        &lt;/assignment&gt;\n"
+"    &lt;/task&gt;\n"
+"    &lt;transition name=\"rejected\" to=\"cancelled\"/&gt;\n"
+"    &lt;transition name=\"approved\" to=\"approved\"/&gt;\n"
+"&lt;/task-node&gt;"
+
+#. Tag: para
+#: Drools.xml:53
+#, no-c-format
+msgid ""
+"Certain objects are available to the rules as Drools globals, namely the "
+"jBPM <literal>Assignable</literal>, as <literal>assignable</literal> and a "
+"Seam <literal>Decision</literal> object, as <literal>decision</literal>. "
+"Rules which handle decisions should call <literal>decision.setOutcome"
+"(\"result\")</literal> to determine the result of the decision. Rules which "
+"perform assignments should set the actor id using the <literal>Assignable</"
+"literal>."
+msgstr ""
+"あるオブジェクトは、ルールでは Drools グローバルとして扱われます。 すなわ"
+"ち、 jBPM <literal>Assignable</literal> は <literal>assignable</literal> とし"
+"て 、 そしてSeam <literal>Decision</literal> オブジェクトは "
+"<literal>decision</literal> として扱われます。 デシジョンを扱うルールは、デシ"
+"ジョンの結果を決定するために、 <literal>decision.setOutcome(\"result\")</"
+"literal> を呼ぶ必要があります。 割り当てを実行するルールは、 "
+"<literal>Assignable</literal> を使ってアクターIDを設定する必要があります。"
+
+#. Tag: programlisting
+#: Drools.xml:56
+#, no-c-format
+msgid ""
+"package org.jboss.seam.examples.shop\n"
+"\n"
+"import org.jboss.seam.drools.Decision\n"
+"\n"
+"global Decision decision\n"
+"\n"
+"rule \"Approve Order For Loyal Customer\"\n"
+"  when\n"
+"    Customer( loyaltyStatus == \"GOLD\" )\n"
+"    Order( totalAmount &lt;= 10000 )\n"
+"  then\n"
+"    decision.setOutcome(\"approved\");\n"
+"end"
+msgstr ""
+"package org.jboss.seam.examples.shop\n"
+"\n"
+"import org.jboss.seam.drools.Decision\n"
+"\n"
+"global Decision decision\n"
+"\n"
+"rule \"Approve Order For Loyal Customer\"\n"
+"  when\n"
+"    Customer( loyaltyStatus == \"GOLD\" )\n"
+"    Order( totalAmount &lt;= 10000 )\n"
+"  then\n"
+"    decision.setOutcome(\"approved\");\n"
+"end"
+
+#. Tag: programlisting
+#: Drools.xml:57
+#, no-c-format
+msgid ""
+"package org.jboss.seam.examples.shop\n"
+"\n"
+"import org.jbpm.taskmgmt.exe.Assignable\n"
+"\n"
+"global Assignable assignable\n"
+"\n"
+"rule \"Assign Review For Small Order\"\n"
+"  when\n"
+"    Order( totalAmount &lt;= 100 )\n"
+"  then\n"
+"    assignable.setPooledActors( new String[] {\"reviewers\"} );\n"
+"end"
+msgstr ""
+"package org.jboss.seam.examples.shop\n"
+"\n"
+"import org.jbpm.taskmgmt.exe.Assignable\n"
+"\n"
+"global Assignable assignable\n"
+"\n"
+"rule \"Assign Review For Small Order\"\n"
+"  when\n"
+"    Order( totalAmount &lt;= 100 )\n"
+"  then\n"
+"    assignable.setPooledActors( new String[] {\"reviewers\"} );\n"
+"end"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Elenhancements.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Elenhancements.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Elenhancements.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,270 @@
+# translation of Elenhancements.po to Japanese
+# Noriko Mizumoto <noriko at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Elenhancements\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-30 01:52+0000\n"
+"PO-Revision-Date: 2007-10-30 15:02+1000\n"
+"Last-Translator: Noriko Mizumoto <noriko at redhat.com>\n"
+"Language-Team: Japanese <fedora-trans-ja at redhat.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Elenhancements.xml:6
+#, no-c-format
+msgid "Expression language enhancements"
+msgstr "ELの拡張"
+
+#. Tag: para
+#: Elenhancements.xml:7
+#, no-c-format
+msgid ""
+"The standard Unified Expression Language (EL) assumes that any parameters to "
+"a method expression will be provided by Java code. This means that a method "
+"with parameters cannot be used as a JSF method binding. Seam provides an "
+"enhancement to the EL that allows parameters to be included in a method "
+"expression itself. This applies to <emphasis>any</emphasis> Seam method "
+"expression, including any JSF method binding, for example:"
+msgstr ""
+"標準のELは、メソッドへのパラメータはJavaコードにより渡される事を前提としてい"
+"ます。 したがって、JSFのメソッドバインディングでは、 パラメータを渡すことは"
+"出来ません。 SeamではELを拡張して、パラメータを渡すことが出来るようにしていま"
+"す。この拡張は、下の例のように、 JSFのメソッドバインディングを含む<emphasis>"
+"すべての</emphasis> Seam のメソッド式に適用されます。"
+
+#. Tag: programlisting
+#: Elenhancements.xml:10
+#, no-c-format
+msgid ""
+"&lt;s:commandButton action=\"#{hotelBooking.bookHotel(hotel)}\" value=\"Book "
+"Hotel\"/&gt;"
+msgstr ""
+"&lt;s:commandButton action=\"#{hotelBooking.bookHotel(hotel)}\" value=\"Book "
+"Hotel\"/&gt;"
+
+#. Tag: title
+#: Elenhancements.xml:12
+#, no-c-format
+msgid "Configuration"
+msgstr "設定"
+
+#. Tag: para
+#: Elenhancements.xml:13
+#, no-c-format
+msgid ""
+"To use this feature in Facelets, you will need to declare a special view "
+"handler, <literal>SeamFaceletViewHandler</literal> in <literal>faces-config."
+"xml</literal>."
+msgstr ""
+"この拡張機能をfaceletで使うためには、<literal>faces-config.xml</literal>に特"
+"別なview handler、 <literal>SeamFaceletViewHandler</literal>を宣言する必要が"
+"あります。"
+
+#. Tag: programlisting
+#: Elenhancements.xml:16
+#, no-c-format
+msgid ""
+"&lt;faces-config&gt;\n"
+"    &lt;application&gt;\n"
+"        &lt;view-handler&gt;org.jboss.seam.ui.facelet."
+"SeamFaceletViewHandler&lt;/view-handler&gt;\n"
+"    &lt;/application&gt;\n"
+"&lt;/faces-config&gt;"
+msgstr ""
+"&lt;faces-config&gt;\n"
+"    &lt;application&gt;\n"
+"        &lt;view-handler&gt;org.jboss.seam.ui.facelet."
+"SeamFaceletViewHandler&lt;/view-handler&gt;\n"
+"    &lt;/application&gt;\n"
+"&lt;/faces-config&gt;"
+
+#. Tag: title
+#: Elenhancements.xml:20
+#, no-c-format
+msgid "Usage"
+msgstr "使い方"
+
+#. Tag: para
+#: Elenhancements.xml:21
+#, no-c-format
+msgid "Parameters are surrounded by parentheses, and separated by commas:"
+msgstr "パラメータは括弧で囲み、それぞれはコンマで区切ります。"
+
+#. Tag: programlisting
+#: Elenhancements.xml:24
+#, no-c-format
+msgid ""
+"&lt;h:commandButton action=\"#{hotelBooking.bookHotel(hotel, user)}\" value="
+"\"Book Hotel\"/&gt;"
+msgstr ""
+"&lt;h:commandButton action=\"#{hotelBooking.bookHotel(hotel, user)}\" value="
+"\"Book Hotel\"/&gt;"
+
+#. Tag: para
+#: Elenhancements.xml:25
+#, no-c-format
+msgid ""
+"The parameters <literal>hotel</literal> and <literal>user</literal> will be "
+"evaluated as value expressions and passed to the <literal>bookHotel()</"
+"literal> method of the component. This gives you an alternative to the use "
+"of <literal>@In</literal>."
+msgstr ""
+"上記の例ではパラメータ、<literal>hotel</literal> と <literal>user</literal> "
+"が値式として評価され、 コンポーネントの<literal>bookHotel()</literal> に渡さ"
+"れます。 この方法で、<literal>@In</literal>の代用をする事が出来ます。"
+
+#. Tag: para
+#: Elenhancements.xml:28
+#, no-c-format
+msgid "Any value expression may be used as a parameter:"
+msgstr "パラメータには、下のように、どのような値式も使う事が出来ます。"
+
+#. Tag: programlisting
+#: Elenhancements.xml:31
+#, no-c-format
+msgid ""
+"&lt;h:commandButton action=\"#{hotelBooking.bookHotel(hotel.id, user."
+"username)}\" value=\"Book Hotel\"/&gt;"
+msgstr ""
+"&lt;h:commandButton action=\"#{hotelBooking.bookHotel(hotel.id, user."
+"username)}\" value=\"Book Hotel\"/&gt;"
+
+#. Tag: para
+#: Elenhancements.xml:32
+#, no-c-format
+msgid "You may even pass literal strings using single or double quotes:"
+msgstr ""
+"文字列も、下のように、シングルクオート、あるいはダブルクオートで括って渡す事"
+"が出来ます。"
+
+#. Tag: programlisting
+#: Elenhancements.xml:35
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=”#{printer.println( ‘Hello world!’ )}” "
+"value=”Hello”/&gt;"
+msgstr ""
+"&lt;h:commandLink action=”#{printer.println( ‘Hello world!’ )}” "
+"value=”Hello”/&gt;"
+
+#. Tag: programlisting
+#: Elenhancements.xml:36
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=’#{printer.println( “Hello again” )}’ value=’Hello’/"
+"&gt;"
+msgstr ""
+"&lt;h:commandLink action=’#{printer.println( “Hello again” )}’ value=’Hello’/"
+"&gt;"
+
+#. Tag: para
+#: Elenhancements.xml:37
+#, no-c-format
+msgid ""
+"You might even want to use this notation for all your action methods, even "
+"when you don’t have parameters to pass. This improves readability by making "
+"it clear that the expression is a method expression and not a value "
+"expression:"
+msgstr ""
+"パラメータを渡す必要が有る無しに関わらず、アクションメソッドの全てに、この様"
+"な表記をすることができ、これにより、 式が値式ではなく、メソッド式であることを"
+"明確に示し、可読性を向上させる事が出来ます。"
+
+#. Tag: programlisting
+#: Elenhancements.xml:40
+#, no-c-format
+msgid "&lt;s:link value=\"Cancel\" action=\"#{hotelBooking.cancel()}\"/&gt;"
+msgstr "&lt;s:link value=\"Cancel\" action=\"#{hotelBooking.cancel()}\"/&gt;"
+
+#. Tag: title
+#: Elenhancements.xml:44
+#, no-c-format
+msgid "Limitations"
+msgstr "制約"
+
+#. Tag: para
+#: Elenhancements.xml:45
+#, no-c-format
+msgid "Please be aware of the following limitations:"
+msgstr "以下の制約について留意してください。"
+
+#. Tag: title
+#: Elenhancements.xml:49
+#, no-c-format
+msgid "Incompatibility with JSP 2.1"
+msgstr "JSP 2.1との非互換性"
+
+#. Tag: para
+#: Elenhancements.xml:50
+#, no-c-format
+msgid ""
+"This extension is not currently compatible with JSP 2.1. So if you want to "
+"use this extension with JSF 1.2, you will need to use Facelets. The "
+"extension works correctly with JSP 2.0."
+msgstr ""
+"現時点でこの拡張は JSP 2.1とは非互換です。 したがって、この拡張をJSF 1.2で使"
+"う場合にはfaceletを使う必要があります。 JSP 2.0.ではこの拡張は問題なく動作し"
+"ます。"
+
+#. Tag: title
+#: Elenhancements.xml:56
+#, no-c-format
+msgid "Calling a <literal>MethodExpression</literal> from Java code"
+msgstr "Javaコードからの<literal>MethodExpression</literal>の呼び出し"
+
+#. Tag: para
+#: Elenhancements.xml:57
+#, no-c-format
+msgid ""
+"Normally, when a <literal>MethodExpression</literal> or "
+"<literal>MethodBinding</literal> is created, the parameter types are passed "
+"in by JSF. In the case of a method binding, JSF assumes that there are no "
+"parameters to pass. With this extension, we can’t know the parameter types "
+"until after the expression has been evaluated. This has two minor "
+"consequences:"
+msgstr ""
+"通常、<literal>MethodExpression</literal> や <literal>MethodBinding</"
+"literal> が生成された時に パラメータの型はJSFにより伝えられますが、メソッドバ"
+"インディングの場合、JSFは渡されるパラメータが存在しないことを前提としていま"
+"す。 この拡張によりパラメータの型は式が評価されるまで知ることは出来ませんの"
+"で、2つのマイナーな問題を生じます。"
+
+#. Tag: para
+#: Elenhancements.xml:62
+#, no-c-format
+msgid ""
+"When you invoke a <literal>MethodExpression</literal> in Java code, "
+"parameters you pass may be ignored. Parameters defined in the expression "
+"will take precedence."
+msgstr ""
+"Javaコード中で<literal>MethodExpression</literal>を呼び出したとき、渡されたパ"
+"ラメータが無視されます。また、 式中で定義されたパラメータが優先されます。"
+
+#. Tag: para
+#: Elenhancements.xml:67
+#, no-c-format
+msgid ""
+"Ordinarily, it is safe to call <literal>methodExpression.getMethodInfo()."
+"getParamTypes()</literal> at any time. For an expression with parameters, "
+"you must first invoke the <literal>MethodExpression</literal> before calling "
+"<literal>getParamTypes()</literal>."
+msgstr ""
+"通常、<literal>methodExpression.getMethodInfo().getParamTypes()</literal> は"
+"いつでも安全に呼び出す事が 出来ます。 パラメータを伴う式の場合、 まづ "
+"<literal>MethodExpression</literal> を呼び出してから、 <literal>getParamTypes"
+"()</literal> を呼び出すようにしてください。"
+
+#. Tag: para
+#: Elenhancements.xml:72
+#, no-c-format
+msgid ""
+"Both of these cases are exceedingly rare and only apply when you want to "
+"invoke the <literal>MethodExpression</literal> by hand in Java code."
+msgstr ""
+"上の2つのようなケースは非常に稀で、Javaコード中で<literal>MethodExpression</"
+"literal>を呼び出す必要が有るときにのみ、 適用されます。"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Events.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Events.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Events.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2052 @@
+# translation of Events.po to Japanese
+# Noriko Mizumoto <noriko at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Events\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-30 01:52+0000\n"
+"PO-Revision-Date: 2007-10-30 15:11+1000\n"
+"Last-Translator: Noriko Mizumoto <noriko at redhat.com>\n"
+"Language-Team: Japanese <fedora-trans-ja at redhat.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Events.xml:6
+#, no-c-format
+msgid "Events, interceptors and exception handling"
+msgstr "イベント、インターセプタ、例外処理"
+
+#. Tag: para
+#: Events.xml:7
+#, no-c-format
+msgid ""
+"Complementing the contextual component model, there are two further basic "
+"concepts that facilitate the extreme loose-coupling that is the distinctive "
+"feature of Seam applications. The first is a strong event model where events "
+"may be mapped to event listeners via JSF-like method binding expressions. "
+"The second is the pervasive use of annotations and interceptors to apply "
+"cross-cutting concerns to components which implement business logic."
+msgstr ""
+"コンテキスト依存コンポーネントモデルを補完するものとして、Seamアプリケーショ"
+"ンの特徴と なっている極度の疎結合を促進させる2つの基本概念が存在します。 最初"
+"のものは、イベントがJSFライクなメソッド結合式(method binding expression) を"
+"介して イベントリスナーへマップできるような強力なイベントモデルです。 二番目"
+"のものは、ビジネスロジックを実装するコンポーネントに対して横断的関心事 "
+"(cross-cutting concerns) を適用するためにアノテーションやインターセプタを広範"
+"囲に   使用しているということです。"
+
+#. Tag: title
+#: Events.xml:10
+#, no-c-format
+msgid "Seam events"
+msgstr "Seamイベント"
+
+#. Tag: para
+#: Events.xml:11
+#, no-c-format
+msgid ""
+"The Seam component model was developed for use with <emphasis>event-driven "
+"applications</emphasis>, specifically to enable the development of fine-"
+"grained, loosely-coupled components in a fine-grained eventing model. Events "
+"in Seam come in several types, most of which we have already seen:"
+msgstr ""
+"Seamコンポーネントモデルは<emphasis>イベント駆動アプリケーション</emphasis> "
+"で使うために開発されました。特に、細粒度イベントモデル (fine-grained "
+"eventing model) での細粒度かつ疎結合コンポーネント開発を可能にします。 Seamで"
+"のイベントは、すでにご存知のように、いくつかのタイプがあります。"
+
+#. Tag: para
+#: Events.xml:16
+#, no-c-format
+msgid "JSF events"
+msgstr "JSFイベント"
+
+#. Tag: para
+#: Events.xml:21
+#, no-c-format
+msgid "jBPM transition events"
+msgstr "jBPM状態遷移イベント"
+
+#. Tag: para
+#: Events.xml:26
+#, no-c-format
+msgid "Seam page actions"
+msgstr "Seamページアクション"
+
+#. Tag: para
+#: Events.xml:31
+#, no-c-format
+msgid "Seam component-driven events"
+msgstr "Seamコンポーネント駆動イベント"
+
+#. Tag: para
+#: Events.xml:36
+#, no-c-format
+msgid "Seam contextual events"
+msgstr "Seamコンテキスト依存イベント"
+
+#. Tag: para
+#: Events.xml:41
+#, no-c-format
+msgid ""
+"All of these various kinds of events are mapped to Seam components via JSF "
+"EL method binding expressions. For a JSF event, this is defined in the JSF "
+"template:"
+msgstr ""
+"これらの多様なイベントすべてはJSF ELメソッド結合式を介してSeamコンポーネント "
+"へマップされます。JSFイベントは、次のJSFテンプレートで定義されます。"
+
+#. Tag: programlisting
+#: Events.xml:44
+#, no-c-format
+msgid ""
+"&lt;h:commandButton value=\"Click me!\" action=\"#{helloWorld.sayHello}\"/"
+"&gt;"
+msgstr ""
+"&lt;h:commandButton value=\"Click me!\" action=\"#{helloWorld.sayHello}\"/"
+"&gt;"
+
+#. Tag: para
+#: Events.xml:45
+#, no-c-format
+msgid ""
+"For a jBPM transition event, it is specified in the jBPM process definition "
+"or pageflow definition:"
+msgstr "jBPM遷移イベントは、jBPMプロセス定義またはページフロー定義で規定されます。"
+
+#. Tag: programlisting
+#: Events.xml:48
+#, no-c-format
+msgid ""
+"&lt;start-page name=\"hello\" view-id=\"/hello.jsp\"&gt;\n"
+"    &lt;transition to=\"hello\"&gt;\n"
+"        &lt;action expression=\"#{helloWorld.sayHello}\"/&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/start-page&gt;"
+msgstr ""
+"&lt;start-page name=\"hello\" view-id=\"/hello.jsp\"&gt;\n"
+"    &lt;transition to=\"hello\"&gt;\n"
+"        &lt;action expression=\"#{helloWorld.sayHello}\"/&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/start-page&gt;"
+
+#. Tag: para
+#: Events.xml:49
+#, no-c-format
+msgid ""
+"You can find out more information about JSF events and jBPM events "
+"elsewhere. Lets concentrate for now upon the two additional kinds of events "
+"defined by Seam."
+msgstr ""
+"JSFイベントやjPBMイベントの情報をいたるところで見つかります。 ここからは、"
+"Seamによって定義される、さらなる2種類のイベントに集中しましょう。"
+
+#. Tag: title
+#: Events.xml:52
+#, no-c-format
+msgid "Page actions"
+msgstr "ページアクション"
+
+#. Tag: para
+#: Events.xml:53
+#, no-c-format
+msgid ""
+"A Seam page action is an event that occurs just before we render a page. We "
+"declare page actions in <literal>WEB-INF/pages.xml</literal>. We can define "
+"a page action for either a particular JSF view id:"
+msgstr ""
+"Seamページアクションはページのレンダリングの直前に発生するイベントです。 ペー"
+"ジアクションは<literal>WEB-INF/pages.xml</literal>で宣言します。 特定のJSF"
+"ビューidのためのページアクションを定義することも可能です。"
+
+#. Tag: programlisting
+#: Events.xml:56
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\" action=\"#{helloWorld.sayHello}\"/&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\" action=\"#{helloWorld.sayHello}\"/&gt;\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Events.xml:57
+#, no-c-format
+msgid ""
+"Or we can use a wildcard to specify an action that applies to all view ids "
+"that match the pattern:"
+msgstr ""
+"あるいは、ワイルドカードに一致するすべてのビューIDに適用するアクションを指定"
+"するようにパターンを使うことも可能です。"
+
+#. Tag: programlisting
+#: Events.xml:60
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello/*\" action=\"#{helloWorld.sayHello}\"/&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello/*\" action=\"#{helloWorld.sayHello}\"/&gt;\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Events.xml:61
+#, no-c-format
+msgid ""
+"If multiple wildcarded page actions match the current view-id, Seam will "
+"call all the actions, in order of least-specific to most-specific."
+msgstr ""
+"複数のワイルドカード化されたページアクションがカレントビューidに一致するな"
+"ら、 Seamは曖昧な指定から明確な指定への順 (least-specific to most-specific) "
+"で、 それらすべてのアクションを呼び出します。"
+
+#. Tag: para
+#: Events.xml:64
+#, no-c-format
+msgid ""
+"The page action method can return a JSF outcome. If the outcome is non-null, "
+"Seam will use the defined navigation rules to navigate to a view."
+msgstr ""
+"ページアクションのメソッドはJSF outcomeを返すことができます。もしも、その"
+"outcome が非nullなら、Seamはビューをナビゲートするためその定義済みナビゲー"
+"ション規則を使います。"
+
+#. Tag: para
+#: Events.xml:67
+#, no-c-format
+msgid ""
+"Furthermore, the view id mentioned in the <literal>&lt;page&gt;</literal> "
+"element need not correspond to a real JSP or Facelets page! So, we can "
+"reproduce the functionality of a traditional action-oriented framework like "
+"Struts or WebWork using page actions. For example:"
+msgstr ""
+"さらに、<literal>&lt;page&gt;</literal>要素で指定されたビューidは、実際のJSP"
+"やFacelets に対応する必要はないのです! そこで、ページアクションを使用した"
+"StrutsやWebWorkのような 伝統的なアクション指向フレームワークの機能を再現する"
+"こともできます。"
+
+#. Tag: programlisting
+#: Events.xml:70
+#, no-c-format
+msgid "TODO: translate struts action into page action"
+msgstr "TODO: struts アクションをページアクションに変換する"
+
+#. Tag: para
+#: Events.xml:71
+#, no-c-format
+msgid ""
+"This is quite useful if you want to do complex things in response to non-"
+"faces requests (for example, HTTP GET requests)."
+msgstr ""
+"non-facesリクエスト (たとえば、 HTTP Get リクエスト) に対するレスポンスで複雑"
+"な処理をしたい場合などに非常に便利です。"
+
+#. Tag: title
+#: Events.xml:74
+#, no-c-format
+msgid "Page parameters"
+msgstr "ページパラメータ"
+
+#. Tag: para
+#: Events.xml:75
+#, no-c-format
+msgid ""
+"A JSF faces request (a form submission) encapsulates both an \"action\" (a "
+"method binding) and \"parameters\" (input value bindings). A page action "
+"might also needs parameters!"
+msgstr ""
+"JSF faces リクエスト (フォーム送信) は「アクション」 (メソッド結合) と「パラ"
+"メータ」 (入力値結合) の両方をカプセル化します。 ページアクションにもパラメー"
+"タが必要かもしれません。"
+
+#. Tag: para
+#: Events.xml:78
+#, no-c-format
+msgid ""
+"Since GET requests are bookmarkable, page parameters are passed as human-"
+"readable request parameters. (Unlike JSF form inputs, which are anything "
+"but!)"
+msgstr ""
+"GET リクエストはブックマーク可能なので、 ページパラメータは人間が読めるリクエ"
+"ストパラメータとして引き渡されます (JSF フォーム入力とは異なるもの)。"
+
+#. Tag: para
+#: Events.xml:81
+#, no-c-format
+msgid ""
+"Seam lets us provide a value binding that maps a named request parameter to "
+"an attribute of a model object."
+msgstr ""
+"Seamでは、名前付きリクエストパラメータとしてモデルオブジェクトの属性を対応さ"
+"せる値結合が可能です。"
+
+#. Tag: programlisting
+#: Events.xml:84
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\" action=\"#{helloWorld.sayHello}\"&gt;\n"
+"        &lt;param name=\"firstName\" value=\"#{person.firstName}\"/&gt;\n"
+"        &lt;param name=\"lastName\" value=\"#{person.lastName}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\" action=\"#{helloWorld.sayHello}\"&gt;\n"
+"        &lt;param name=\"firstName\" value=\"#{person.firstName}\"/&gt;\n"
+"        &lt;param name=\"lastName\" value=\"#{person.lastName}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Events.xml:85
+#, no-c-format
+msgid ""
+"The <literal>&lt;param&gt;</literal> declaration is bidirectional, just like "
+"a value binding for a JSF input:"
+msgstr ""
+"<literal>&lt;param&gt;</literal>宣言は双方向で、まさにJSF入力の値結合のようで"
+"す。"
+
+#. Tag: para
+#: Events.xml:90
+#, no-c-format
+msgid ""
+"When a non-faces (GET) request for the view id occurs, Seam sets the value "
+"of the named request parameter onto the model object, after performing "
+"appropriate type conversions."
+msgstr ""
+"指定されたビューidに対するnon-faces (GET) リクエストが発生するとき、 Seamは、"
+"適切な型変換を施した後に、名前付きパラメータの値をそのモデルオブジェクトに設"
+"定します。"
+
+#. Tag: para
+#: Events.xml:95
+#, no-c-format
+msgid ""
+"Any <literal>&lt;s:link&gt;</literal> or <literal>&lt;s:button&gt;</literal> "
+"transparently includes the request parameter. The value of the parameter is "
+"determined by evaluating the value binding during the render phase (when the "
+"<literal>&lt;s:link&gt;</literal> is rendered)."
+msgstr ""
+"任意の <literal>&lt;s:link&gt;</literal> や <literal>&lt;s:button&gt;</"
+"literal> は透過的にリクエストパラメータを含みます。 パラメータ値は、 レンダリ"
+"ングフェーズの間に (<literal>&lt;s:link&gt;</literal> がレンダリングされると"
+"き) 値結合を評価することによって決定されます。"
+
+#. Tag: para
+#: Events.xml:100
+#, no-c-format
+msgid ""
+"Any navigation rule with a <literal>&lt;redirect/&gt;</literal> to the view "
+"id transparently includes the request parameter. The value of the parameter "
+"is determined by evaluating the value binding at the end of the invoke "
+"application phase."
+msgstr ""
+"ビューidに対する<literal>&lt;redirect/&gt;</literal>の任意のナビゲーション"
+"ルールは リクエストパラメータを透過的に含みます。パラメータの値はアプリケー"
+"ションフェーズの 最後に値結合を評価することで決定されます。"
+
+#. Tag: para
+#: Events.xml:105
+#, no-c-format
+msgid ""
+"The value is transparently propagated with any JSF form submission for the "
+"page with the given view id. (This means that view parameters behave like "
+"<literal>PAGE</literal>-scoped context variables for faces requests."
+msgstr ""
+"その値は透過的にビューidで指定されたページへのJSFフォーム送信に伝播します。 "
+"(これはビューパラメータはfacesリクエストのための<literal>PAGE</literal>ス"
+"コープ のコンテキスト変数のように振舞います)。"
+
+#. Tag: para
+#: Events.xml:110
+#, no-c-format
+msgid ""
+"The essential idea behind all this is that <emphasis>however</emphasis> we "
+"get from any other page to <literal>/hello.jsp</literal> (or from <literal>/"
+"hello.jsp</literal> back to <literal>/hello.jsp</literal>), the value of the "
+"model attribute referred to in the value binding is \"remembered\", without "
+"the need for a conversation (or other server-side state)."
+msgstr ""
+"この背後にある本質的な考えは、 <literal>/hello.jsp</literal> への (または "
+"<literal>/hello.jsp</literal> から <literal>/hello.jsp</literal> へ戻るよう"
+"な) 他の任意のページを得ることができるのにも<emphasis>かかわらず</"
+"emphasis>、 値結合で参照されるモデル属性の値は対話 (または他のサーバー側の状"
+"態) を必要とせずに「記録されている」ということです。"
+
+#. Tag: para
+#: Events.xml:113
+#, no-c-format
+msgid ""
+"This all sounds pretty complex, and you&#39;re probably wondering if such an "
+"exotic construct is really worth the effort. Actually, the idea is very "
+"natural once you \"get it\". It is definitely worth taking the time to "
+"understand this stuff. Page parameters are the most elegant way to propagate "
+"state across a non-faces request. They are especially cool for problems like "
+"search screens with bookmarkable results pages, where we would like to be "
+"able to write our application code to handle both POST and GET requests with "
+"the same code. Page parameters eliminate repetitive listing of request "
+"parameters in the view definition and make redirects much easier to code."
+msgstr ""
+"かなり複雑な構造で、 このような非標準の構造が本当に役に立つのだろうかと不思議"
+"に思われるかもしれません。 実際には、 理解するとこの概念はごく自然なことにな"
+"りますので、 時間を割いて理解するだけの価値は十分にあります。 ページパラメー"
+"タは non-faces リクエスト全体への状態の伝播に最適な方法となります。 同じコー"
+"ドで POST と GET の両リクエストを処理する独自のアプリケーションコードを記述で"
+"きるようにしたい場合、 特にブックマーク可能な結果ページでの画面検索などの問題"
+"に対して役立ちます。 ページパラメータによりビュー定義内でのリクエストパラメー"
+"タの反復表示を解消し、 コードに 対するリダイレクトをより容易ににします。"
+
+#. Tag: para
+#: Events.xml:116
+#, no-c-format
+msgid ""
+"Note that you don&#39;t need an actual page action method binding to use a "
+"page parameter. The following is perfectly valid:"
+msgstr ""
+"ページパラメータを使用するために実際のページアクションメソッドバインディング"
+"は必要ありません。 以下で十分に有効になります。"
+
+#. Tag: programlisting
+#: Events.xml:119
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\"&gt;\n"
+"        &lt;param name=\"firstName\" value=\"#{person.firstName}\"/&gt;\n"
+"        &lt;param name=\"lastName\" value=\"#{person.lastName}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\"&gt;\n"
+"        &lt;param name=\"firstName\" value=\"#{person.firstName}\"/&gt;\n"
+"        &lt;param name=\"lastName\" value=\"#{person.lastName}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Events.xml:120
+#, no-c-format
+msgid "You can even specify a JSF converter:"
+msgstr "JSF 変換を指定することもできます。"
+
+#. Tag: programlisting
+#: Events.xml:123
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/calculator.jsp\" action=\"#{calculator.calculate}"
+"\"&gt;\n"
+"        &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"        &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"        &lt;param name=\"op\" converterId=\"com.my.calculator."
+"OperatorConverter\" value=\"#{calculator.op}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/calculator.jsp\" action=\"#{calculator.calculate}"
+"\"&gt;\n"
+"        &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"        &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"        &lt;param name=\"op\" converterId=\"com.my.calculator."
+"OperatorConverter\" value=\"#{calculator.op}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+
+#. Tag: programlisting
+#: Events.xml:124
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/calculator.jsp\" action=\"#{calculator.calculate}"
+"\"&gt;\n"
+"        &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"        &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"        &lt;param name=\"op\" converter=\"#{operatorConverter}\" value=\"#"
+"{calculator.op}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/calculator.jsp\" action=\"#{calculator.calculate}"
+"\"&gt;\n"
+"        &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"        &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"        &lt;param name=\"op\" converter=\"#{operatorConverter}\" value=\"#"
+"{calculator.op}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+
+#. Tag: title
+#: Events.xml:125
+#, no-c-format
+msgid "Navigation"
+msgstr "ナビゲーション"
+
+#. Tag: para
+#: Events.xml:126
+#, no-c-format
+msgid ""
+"You can use standard JSF navigation rules defined in <literal>faces-config."
+"xml</literal> in a Seam application. However, JSF navigation rules have a "
+"number of annoying limitations:"
+msgstr ""
+"Seamアプリケーションでは<literal>faces-config.xml</literal>で定義される標準"
+"の JSFナビゲーション規則を使用できます。しかし、JSFナビゲーション規則は厄介な"
+"制限があります。"
+
+#. Tag: para
+#: Events.xml:131
+#, no-c-format
+msgid "It is not possible to specify request parameters to be used when redirecting."
+msgstr "リダイレクトで使われるときにリクエストパラメータを指定できません。"
+
+#. Tag: para
+#: Events.xml:136
+#, no-c-format
+msgid "It is not possible to begin or end conversations from a rule."
+msgstr "規則から対話 (conversation) の開始や終了ができません。"
+
+#. Tag: para
+#: Events.xml:141
+#, no-c-format
+msgid ""
+"Rules work by evaluating the return value of the action method; it is not "
+"possible to evaluate an arbitrary EL expression."
+msgstr ""
+"規則はアクションメソッドの戻り値の評価によって動作します。 つまり、任意のEL式"
+"を評価することはできません。"
+
+#. Tag: para
+#: Events.xml:146
+#, no-c-format
+msgid ""
+"A further problem is that \"orchestration\" logic gets scattered between "
+"<literal>pages.xml</literal> and <literal>faces-config.xml</literal>. It&#39;"
+"s better to unify this logic into <literal>pages.xml</literal>."
+msgstr ""
+"さらに問題なのは組合せ (orchestration) のロジックが<literal>pages.xml</"
+"literal>と <literal>faces-config.xml</literal>の間に分散してしまうことです。 "
+"このロジックは<literal>pages.xml</literal>側に統合した方がよいでしょう。"
+
+#. Tag: para
+#: Events.xml:149
+#, no-c-format
+msgid "This JSF navigation rule:"
+msgstr "このJSFナビゲーション規則は、"
+
+#. Tag: programlisting
+#: Events.xml:152
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"    &lt;from-view-id&gt;/editDocument.xhtml&lt;/from-view-id&gt;\n"
+"    \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-action&gt;#{documentEditor.update}&lt;/from-action&gt;\n"
+"        &lt;from-outcome&gt;success&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/viewDocument.xhtml&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"    \n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+"&lt;navigation-rule&gt;\n"
+"    &lt;from-view-id&gt;/editDocument.xhtml&lt;/from-view-id&gt;\n"
+"    \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-action&gt;#{documentEditor.update}&lt;/from-action&gt;\n"
+"        &lt;from-outcome&gt;success&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/viewDocument.xhtml&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"    \n"
+"&lt;/navigation-rule&gt;"
+
+#. Tag: para
+#: Events.xml:153
+#, no-c-format
+msgid "Can be rewritten as follows:"
+msgstr "次のように書き直すことができます。"
+
+#. Tag: programlisting
+#: Events.xml:156
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if-outcome=\"success\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if-outcome=\"success\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Events.xml:157
+#, no-c-format
+msgid ""
+"But it would be even nicer if we didn&#39;t have to pollute our "
+"<literal>DocumentEditor</literal> component with string-valued return values "
+"(the JSF outcomes). So Seam lets us write:"
+msgstr ""
+"しかし、 文字列の値を持つ戻り値 (JSF outcome) と <literal>DocumentEditor</"
+"literal> コンポーネントを併用する必要がなかったならば、 より良かったでしょ"
+"う。そこで Seam では次のように記述できるようにしています。"
+
+#. Tag: programlisting
+#: Events.xml:160
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\" \n"
+"                   evaluate=\"#{documentEditor.errors.size}\"&gt;\n"
+"        &lt;rule if-outcome=\"0\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\" \n"
+"                   evaluate=\"#{documentEditor.errors.size}\"&gt;\n"
+"        &lt;rule if-outcome=\"0\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Events.xml:161
+#, no-c-format
+msgid "Or even:"
+msgstr "または、次のようにすら書くことができます。"
+
+#. Tag: programlisting
+#: Events.xml:164
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Events.xml:165
+#, no-c-format
+msgid ""
+"The first form evaluates a value binding to determine the outcome value to "
+"be used by the subsequent rules. The second approach ignores the outcome and "
+"evaluates a value binding for each possible rule."
+msgstr ""
+"最初の形式は後続の規則によって使用されるようにcoutcomの値を決定する値結合を評"
+"価します。 二番目のアプローチはoutcomeを無視し、各々の規則の値結合を評価しま"
+"す。"
+
+#. Tag: para
+#: Events.xml:168
+#, no-c-format
+msgid ""
+"Of course, when an update succeeds, we probably want to end the current "
+"conversation. We can do that like this:"
+msgstr ""
+"もちろん、更新が成功したなら、現在の対話 (conversation) を終了させたいことで"
+"しょう。 これには、次のようにします。"
+
+#. Tag: programlisting
+#: Events.xml:171
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Events.xml:172
+#, no-c-format
+msgid ""
+"But ending the conversation loses any state associated with the "
+"conversation, including the document we are currently interested in! One "
+"solution would be to use an immediate render instead of a redirect:"
+msgstr ""
+"しかし、対話 (conversation) の終了は、私たちの現在の興味の対象であるドキュメ"
+"ントを含む、 その対話に関連する状態を失うことにつながります。 1つの解はリダイ"
+"レクトの代わりにすぐにrenderを使うことでしょう。"
+
+#. Tag: programlisting
+#: Events.xml:175
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Events.xml:176
+#, no-c-format
+msgid "But the correct solution is to pass the document id as a request parameter:"
+msgstr "しかし、正解はリクエストパラメータとしてドキュメントidを渡すことです。"
+
+#. Tag: programlisting
+#: Events.xml:179
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"&gt;\n"
+"                &lt;param name=\"documentId\" value=\"#{documentEditor."
+"documentId}\"/&gt;\n"
+"            &lt;/redirect&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"&gt;\n"
+"                &lt;param name=\"documentId\" value=\"#{documentEditor."
+"documentId}\"/&gt;\n"
+"            &lt;/redirect&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Events.xml:180
+#, no-c-format
+msgid ""
+"Null outcomes are a special case in JSF. The null outcome is interpreted to "
+"mean \"redisplay the page\". The following navigation rule matches any non-"
+"null outcome, but <emphasis>not</emphasis> the null outcome:"
+msgstr ""
+"Null outcomeはJSFでは特別なケースです。null coucomeは「そのページを再表示す"
+"る」 という意味に解釈されます。次のナビゲーション規則は非nullのoutcomeに適合"
+"しますが null outcomeでは<emphasis>適合しない</emphasis>です。"
+
+#. Tag: programlisting
+#: Events.xml:183
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule&gt;\n"
+"            &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule&gt;\n"
+"            &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Events.xml:184
+#, no-c-format
+msgid ""
+"If you want to perform navigation when a null outcome occurs, use the "
+"following form instead:"
+msgstr ""
+"null outcomeが発生したときにナビゲーションをしたいのであれば、 変わりに次の形"
+"式を使います。"
+
+#. Tag: programlisting
+#: Events.xml:187
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+
+#. Tag: title
+#: Events.xml:188
+#, no-c-format
+msgid "Fine-grained files for definition of navigation, page actions and parameters"
+msgstr "ナビゲーション、ページアクション、パラメータの定義用に細分化したファイル"
+
+#. Tag: para
+#: Events.xml:189
+#, no-c-format
+msgid ""
+"If you have a lot of different page actions and page parameters, or even "
+"just a lot of navigation rules, you will almost certainly want to split the "
+"declarations up over multiple files. You can define actions and parameters "
+"for a page with the view id <literal>/calc/calculator.jsp</literal> in a "
+"resource named <literal>calc/calculator.page.xml</literal>. The root element "
+"in this case is the <literal>&lt;page&gt;</literal> element, and the view id "
+"is implied:"
+msgstr ""
+"もしも、大量のページアクション、ページパラメータ、ナビゲーション規則が あるな"
+"ら、それらの定義を複数のファイルに分割したいことでしょう。 ビューid<literal>/"
+"calc/calculator.jsp</literal>のアクションやパラメータは <literal>calc/"
+"calculator.page.xml</literal> という名前のリソースに定義可能です。 この場合の"
+"ルート要素は<literal>&lt;page&gt;</literal>要素で、ビューidは暗に指定されま"
+"す。"
+
+#. Tag: programlisting
+#: Events.xml:192
+#, no-c-format
+msgid ""
+"&lt;page action=\"#{calculator.calculate}\"&gt;\n"
+"    &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"    &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"    &lt;param name=\"op\" converter=\"#{operatorConverter}\" value=\"#"
+"{calculator.op}\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page action=\"#{calculator.calculate}\"&gt;\n"
+"    &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"    &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"    &lt;param name=\"op\" converter=\"#{operatorConverter}\" value=\"#"
+"{calculator.op}\"/&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: title
+#: Events.xml:193
+#, no-c-format
+msgid "Component-driven events"
+msgstr "コンポーネント駆動イベント"
+
+#. Tag: para
+#: Events.xml:194
+#, no-c-format
+msgid ""
+"Seam components can interact by simply calling each others methods. Stateful "
+"components may even implement the observer/observable pattern. But to enable "
+"components to interact in a more loosely-coupled fashion than is possible "
+"when the components call each others methods directly, Seam provides "
+"<emphasis>component-driven events</emphasis>."
+msgstr ""
+"Seamコンポーネント同士は互いのメソッドを呼ぶことだけでやりとりができます。 ス"
+"テートフルコンポーネントはobserver/observableパターンを実装することすらできま"
+"す。 しかし、コンポーネントが互いにメソッドを直接呼ぶとき、より疎結合な方法で"
+"やりとり できるために、Seamは<emphasis>コンポーネント駆動イベント</emphasis>"
+"を提供します。"
+
+#. Tag: para
+#: Events.xml:197
+#, no-c-format
+msgid "We specify event listeners (observers) in <literal>components.xml</literal>."
+msgstr ""
+"イベントリスナー (observers) を<literal>components.xml</literal>に指定しま"
+"す。"
+
+#. Tag: programlisting
+#: Events.xml:200
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;event type=\"hello\"&gt;\n"
+"        &lt;action expression=\"#{helloListener.sayHelloBack}\"/&gt;\n"
+"        &lt;action expression=\"#{logger.logHello}\"/&gt;\n"
+"    &lt;/event&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components&gt;\n"
+"    &lt;event type=\"hello\"&gt;\n"
+"        &lt;action expression=\"#{helloListener.sayHelloBack}\"/&gt;\n"
+"        &lt;action expression=\"#{logger.logHello}\"/&gt;\n"
+"    &lt;/event&gt;\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Events.xml:201
+#, no-c-format
+msgid "Where the <emphasis>event type</emphasis> is just an arbitrary string."
+msgstr "ここで<emphasis>event type</emphasis> は単なる任意の文字列です。"
+
+#. Tag: para
+#: Events.xml:204
+#, no-c-format
+msgid ""
+"When an event occurs, the actions registered for that event will be called "
+"in the order they appear in <literal>components.xml</literal>. How does a "
+"component raise an event? Seam provides a built-in component for this."
+msgstr ""
+"イベントが発生するとき、そのイベント用に登録されたアクションは"
+"<literal>components.xml</literal> に出現した順番で呼び出されます。コンポーネ"
+"ントがどのようにイベントを発行するか知りたいですか? Seamはこのために組み込み"
+"コンポーネントを提供します。"
+
+#. Tag: programlisting
+#: Events.xml:207
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World!\");\n"
+"        Events.instance().raiseEvent(\"hello\");\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World!\");\n"
+"        Events.instance().raiseEvent(\"hello\");\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Events.xml:208
+#, no-c-format
+msgid "Or you can use an annotation."
+msgstr "あるいは、アノテーションを使うことも可能です。"
+
+#. Tag: programlisting
+#: Events.xml:211
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    @RaiseEvent(\"hello\")\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World!\");\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    @RaiseEvent(\"hello\")\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World!\");\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Events.xml:212
+#, no-c-format
+msgid ""
+"Notice that this event producer has no dependency upon event consumers. The "
+"event listener may now be implemented with absolutely no dependency upon the "
+"producer:"
+msgstr ""
+"このイベント供給者はイベント消費者になんら依存していないことに注意してくださ"
+"い。 そのイベントリスナーはまったく供給者と依存関係がないように実装できるので"
+"す。"
+
+#. Tag: programlisting
+#: Events.xml:215
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    public void sayHelloBack() {\n"
+"        FacesMessages.instance().add(\"Hello to you too!\");\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    public void sayHelloBack() {\n"
+"        FacesMessages.instance().add(\"Hello to you too!\");\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Events.xml:216
+#, no-c-format
+msgid ""
+"The method binding defined in <literal>components.xml</literal> above takes "
+"care of mapping the event to the consumer. If you don&#39;t like futzing "
+"about in the <literal>components.xml</literal> file, you can use an "
+"annotation instead:"
+msgstr ""
+"上述の <literal>components.xml</literal> に定義されるメソッドバインディングは"
+"消費者側にイベントのマッピングを行います。 <literal>components.xml</literal> "
+"ファイル内をいじくり回したくない場合、 代わりにアノテーションを使うことができ"
+"ます。"
+
+#. Tag: programlisting
+#: Events.xml:219
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    @Observer(\"hello\")\n"
+"    public void sayHelloBack() {\n"
+"        FacesMessages.instance().add(\"Hello to you too!\");\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    @Observer(\"hello\")\n"
+"    public void sayHelloBack() {\n"
+"        FacesMessages.instance().add(\"Hello to you too!\");\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Events.xml:220
+#, no-c-format
+msgid ""
+"You might wonder why I&#39;ve not mentioned anything about event objects in "
+"this discussion. In Seam, there is no need for an event object to propagate "
+"state between event producer and listener. State is held in the Seam "
+"contexts, and is shared between components. However, if you really want to "
+"pass an event object, you can:"
+msgstr ""
+"ここでイベントオブジェクトに関してまったく言及していないことに疑問を抱く方も"
+"いらっしゃることでしょう。 Seam では、 イベント供給側とリスナー間で状態を伝播"
+"するイベントオブジェクトは必要はありません。 状態は Seam コンテキスト上に保持"
+"され、 コンポーネント間で共有されます。 しかしながら、 どうしてもイベントオブ"
+"ジェクトを渡したい場合は、 次のように行うことができます。"
+
+#. Tag: programlisting
+#: Events.xml:223
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    private String name;\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World, my name is #0.\", "
+"name);\n"
+"        Events.instance().raiseEvent(\"hello\", name);\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    private String name;\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World, my name is #0.\", "
+"name);\n"
+"        Events.instance().raiseEvent(\"hello\", name);\n"
+"    }\n"
+"}"
+
+#. Tag: programlisting
+#: Events.xml:224
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    @Observer(\"hello\")\n"
+"    public void sayHelloBack(String name) {\n"
+"        FacesMessages.instance().add(\"Hello #0!\", name);\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    @Observer(\"hello\")\n"
+"    public void sayHelloBack(String name) {\n"
+"        FacesMessages.instance().add(\"Hello #0!\", name);\n"
+"    }\n"
+"}"
+
+#. Tag: title
+#: Events.xml:225
+#, no-c-format
+msgid "Contextual events"
+msgstr "コンテキスト依存イベント"
+
+#. Tag: para
+#: Events.xml:226
+#, no-c-format
+msgid ""
+"Seam defines a number of built-in events that the application can use to "
+"perform special kinds of framework integration. The events are:"
+msgstr ""
+"Seamは特殊なフレームワークの統合のためにアプリケーションが利用可能な多くの組"
+"み込みイベントを定義します。そのイベントとは次のようなものです。"
+
+#. Tag: para
+#: Events.xml:231
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.validationFailed</literal> &mdash; called when JSF "
+"validation fails"
+msgstr ""
+"<literal>org.jboss.seam.validationFailed</literal> &mdash; JSF 検証が失敗する"
+"と呼び出されます"
+
+#. Tag: para
+#: Events.xml:236
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.noConversation</literal> &mdash; called when there "
+"is no long running conversation and a long running conversation is required"
+msgstr ""
+"<literal>org.jboss.seam.noConversation</literal> &mdash; 長期実行の対話がな"
+"く、また長期実行の対話が必要とされない場合に呼び出されます"
+
+#. Tag: para
+#: Events.xml:241
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preSetVariable.&lt;name&gt;</literal> &mdash; called "
+"when the context variable &lt;name&gt; is set"
+msgstr ""
+"<literal>org.jboss.seam.preSetVariable.&lt;name&gt;</literal> &mdash; コンテ"
+"キスト変数の &lt;name&gt; が設定されると呼び出されます"
+
+#. Tag: para
+#: Events.xml:246
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postSetVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is set"
+msgstr ""
+"<literal>org.jboss.seam.postSetVariable.&lt;name&gt;</literal> &mdash; コンテ"
+"キスト変数の &lt;name&gt; が設定されると呼び出されます"
+
+#. Tag: para
+#: Events.xml:251
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preRemoveVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is unset"
+msgstr ""
+"<literal>org.jboss.seam.preRemoveVariable.&lt;name&gt;</literal> &mdash; コン"
+"テキスト変数 &lt;name&gt; の設定が解除されると呼び出されます"
+
+#. Tag: para
+#: Events.xml:256
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postRemoveVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is unset"
+msgstr ""
+"<literal>org.jboss.seam.postRemoveVariable.&lt;name&gt;</literal> &mdash; コ"
+"ンテキスト変数 &lt;name&gt; の設定が解除されると呼び出されます"
+
+#. Tag: para
+#: Events.xml:261
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preDestroyContext.&lt;SCOPE&gt;</literal> &mdash; "
+"called before the &lt;SCOPE&gt; context is destroyed"
+msgstr ""
+"<literal>org.jboss.seam.preDestroyContext.&lt;SCOPE&gt;</literal> &mdash; "
+"&lt;SCOPE&gt; コンテキストが破棄される前に呼び出されます"
+
+#. Tag: para
+#: Events.xml:266
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postDestroyContext.&lt;SCOPE&gt;</literal> &mdash; "
+"called after the &lt;SCOPE&gt; context is destroyed"
+msgstr ""
+"<literal>org.jboss.seam.postDestroyContext.&lt;SCOPE&gt;</literal> &mdash; "
+"&lt;SCOPE&gt; コンテキストが破棄された後に呼び出されます"
+
+#. Tag: para
+#: Events.xml:271
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beginConversation </literal>&mdash; called whenever "
+"a long-running conversation begins"
+msgstr ""
+"<literal>org.jboss.seam.beginConversation </literal> 長&mdash; 期実行の対話が"
+"開始すると必ず呼び出されます"
+
+#. Tag: para
+#: Events.xml:276
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endConversation </literal>&mdash; called whenever a "
+"long-running conversation ends"
+msgstr ""
+"<literal>org.jboss.seam.endConversation </literal> &mdash; 長期実行の対話が終"
+"了すると必ず呼び出されます"
+
+#. Tag: para
+#: Events.xml:281
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beginPageflow.&lt;name&gt; </literal>&mdash; called "
+"when the pageflow &lt;name&gt; begins"
+msgstr ""
+"<literal>org.jboss.seam.beginPageflow.&lt;name&gt; </literal> &mdash; ページ"
+"フローの &lt;name&gt; が開始すると呼び出されます"
+
+#. Tag: para
+#: Events.xml:286
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endPageflow.&lt;name&gt; </literal>&mdash; called "
+"when the pageflow &lt;name&gt; ends"
+msgstr ""
+"<literal>org.jboss.seam.endPageflow.&lt;name&gt; </literal> &mdash; ページフ"
+"ローの &lt;name&gt; が終了すると呼び出されます"
+
+#. Tag: para
+#: Events.xml:291
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.createProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; is created"
+msgstr ""
+"<literal>org.jboss.seam.createProcess.&lt;name&gt; </literal> &mdash; プロセ"
+"スの &lt;name&gt; が作成されると呼び出されます"
+
+#. Tag: para
+#: Events.xml:296
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; ends"
+msgstr ""
+"<literal>org.jboss.seam.endProcess.&lt;name&gt; </literal> &mdash; プロセス "
+"&lt;name&gt; が終了すると呼び出されます"
+
+#. Tag: para
+#: Events.xml:301
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.initProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; is associated with the conversation"
+msgstr ""
+"<literal>org.jboss.seam.initProcess.&lt;name&gt; </literal> &mdash; プロセス"
+"の &lt;name&gt; が対話に関連付けられると呼び出されます"
+
+#. Tag: para
+#: Events.xml:306
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.initTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is associated with the conversation"
+msgstr ""
+"<literal>org.jboss.seam.initTask.&lt;name&gt; </literal> &mdash; タスク &lt;"
+"name&gt; が対話に関連付けられると呼び出されます"
+
+#. Tag: para
+#: Events.xml:311
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.startTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is started"
+msgstr ""
+"<literal>org.jboss.seam.startTask.&lt;name&gt; </literal> &mdash; タスクの "
+"&lt;name&gt; が起動されると呼び出されます"
+
+#. Tag: para
+#: Events.xml:316
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is ended"
+msgstr ""
+"<literal>org.jboss.seam.endTask.&lt;name&gt; </literal> &mdash; タスクの &lt;"
+"name&gt; が終了されると呼び出されます"
+
+#. Tag: para
+#: Events.xml:321
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postCreate.&lt;name&gt; </literal>&mdash; called "
+"when the component &lt;name&gt; is created"
+msgstr ""
+"<literal>org.jboss.seam.postCreate.&lt;name&gt; </literal> &mdash; コンポーネ"
+"ントの &lt;name&gt; が作成されると呼び出されます"
+
+#. Tag: para
+#: Events.xml:326
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preDestroy.&lt;name&gt; </literal>&mdash; called "
+"when the component &lt;name&gt; is destroyed"
+msgstr ""
+"<literal>org.jboss.seam.preDestroy.&lt;name&gt; </literal> &mdash; コンポーネ"
+"ントの &lt;name&gt; が破棄されると呼び出されます"
+
+#. Tag: para
+#: Events.xml:331
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beforePhase </literal>&mdash; called before the "
+"start of a JSF phase"
+msgstr ""
+"<literal>org.jboss.seam.beforePhase </literal> &mdash; JSF フェーズの起動前に"
+"呼び出されます"
+
+#. Tag: para
+#: Events.xml:336
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.afterPhase </literal>&mdash; called after the end of "
+"a JSF phase"
+msgstr ""
+"<literal>org.jboss.seam.afterPhase </literal> &mdash; JSF フェーズの終了後に"
+"呼び出されます"
+
+#. Tag: para
+#: Events.xml:341
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postAuthenticate.&lt;name&gt; </literal>&mdash; "
+"called after a user is authenticated"
+msgstr ""
+"<literal>org.jboss.seam.postAuthenticate.&lt;name&gt; </literal> &mdash; ユー"
+"ザーが認証されると呼び出されます"
+
+#. Tag: para
+#: Events.xml:346
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preAuthenticate.&lt;name&gt; </literal>&mdash; "
+"called before attempting to authenticate a user"
+msgstr ""
+"<literal>org.jboss.seam.preAuthenticate.&lt;name&gt; </literal> &mdash; ユー"
+"ザー認証が試行される前に呼び出されます"
+
+#. Tag: para
+#: Events.xml:351
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.notLoggedIn</literal> &mdash; called there is no "
+"authenticated user and authentication is required"
+msgstr ""
+"<literal>org.jboss.seam.notLoggedIn</literal> &mdash; 認証されるユーザーがな"
+"く認証が必要とされている場合に呼び出されます"
+
+#. Tag: para
+#: Events.xml:356
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.rememberMe</literal> &mdash; occurs when Seam "
+"security detects the username in a cookie"
+msgstr ""
+"<literal>org.jboss.seam.rememberMe</literal> &mdash; Seam セキュリティがクッ"
+"キーにユーザー名を検出すると発生します"
+
+#. Tag: para
+#: Events.xml:361
+#, no-c-format
+msgid ""
+"Seam components may observe any of these events in just the same way they "
+"observe any other component-driven events."
+msgstr ""
+"Seamコンポーネントは、他のコンポーネント駆動イベントを観察する (observe) のと"
+"まったく同様に これらのどのイベントでも観察することが可能です。"
+
+#. Tag: title
+#: Events.xml:364
+#, no-c-format
+msgid "Seam interceptors"
+msgstr "Seamインターセプタ"
+
+#. Tag: para
+#: Events.xml:365
+#, no-c-format
+msgid ""
+"EJB 3.0 introduced a standard interceptor model for session bean components. "
+"To add an interceptor to a bean, you need to write a class with a method "
+"annotated <literal>@AroundInvoke</literal> and annotate the bean with an "
+"<literal>@Interceptors</literal> annotation that specifies the name of the "
+"interceptor class. For example, the following interceptor checks that the "
+"user is logged in before allowing invoking an action listener method:"
+msgstr ""
+"EJB 3.0 はセッション Bean コンポーネントに対して標準的なインターセプタモデル"
+"を導入しました。 Bean にインターセプタを追加するには、 "
+"<literal>@AroundInvoke</literal> というアノテーションが付加されたメソッドの付"
+"いたクラスを記述して、 その Bean に対してインターセプタのクラス名を指定する "
+"<literal>@Interceptors</literal> のアノテーションを付ける必要があります。"
+
+#. Tag: programlisting
+#: Events.xml:368
+#, no-c-format
+msgid ""
+"public class LoggedInInterceptor {\n"
+"\n"
+"   @AroundInvoke\n"
+"   public Object checkLoggedIn(InvocationContext invocation) throws "
+"Exception {\n"
+"   \n"
+"      boolean isLoggedIn = Contexts.getSessionContext().get(\"loggedIn\")!"
+"=null;\n"
+"      if (isLoggedIn) {\n"
+"         //the user is already logged in\n"
+"         return invocation.proceed();\n"
+"      }\n"
+"      else {\n"
+"         //the user is not logged in, fwd to login page\n"
+"         return \"login\";\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+"public class LoggedInInterceptor {\n"
+"\n"
+"   @AroundInvoke\n"
+"   public Object checkLoggedIn(InvocationContext invocation) throws "
+"Exception {\n"
+"   \n"
+"      boolean isLoggedIn = Contexts.getSessionContext().get(\"loggedIn\")!"
+"=null;\n"
+"      if (isLoggedIn) {\n"
+"         //the user is already logged in\n"
+"         return invocation.proceed();\n"
+"      }\n"
+"      else {\n"
+"         //the user is not logged in, fwd to login page\n"
+"         return \"login\";\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+
+#. Tag: para
+#: Events.xml:369
+#, no-c-format
+msgid ""
+"To apply this interceptor to a session bean which acts as an action "
+"listener, we must annotate the session bean <literal>@Interceptors"
+"(LoggedInInterceptor.class)</literal>. This is a somewhat ugly annotation. "
+"Seam builds upon the interceptor framework in EJB3 by allowing you to use "
+"<literal>@Interceptors</literal> as a meta-annotation. In our example, we "
+"would create an <literal>@LoggedIn</literal> annotation, as follows:"
+msgstr ""
+"このインターセプタをアクションリスナーとして動作するセッション Bean に適用す"
+"るには、 そのセッション Bean に <literal>@Interceptors(LoggedInInterceptor."
+"class)</literal> のアノテーションを付けなければなりません。 これは少しばかり"
+"見づらいアノテーションになります。 Seam では <literal>@Interceptors</"
+"literal> をメタアノテーションとして使うことで EJB3 におけるインターセプタフ"
+"レームワークを構成します。 次の例では、 <literal>@LoggedIn</literal> アノテー"
+"ションを作ろうとしています。"
+
+#. Tag: programlisting
+#: Events.xml:372
+#, no-c-format
+msgid ""
+"@Target(TYPE)\n"
+"@Retention(RUNTIME)\n"
+"@Interceptors(LoggedInInterceptor.class)\n"
+"public @interface LoggedIn {}"
+msgstr ""
+"@Target(TYPE)\n"
+"@Retention(RUNTIME)\n"
+"@Interceptors(LoggedInInterceptor.class)\n"
+"public @interface LoggedIn {}"
+
+#. Tag: para
+#: Events.xml:373
+#, no-c-format
+msgid ""
+"We can now simply annotate our action listener bean with <literal>@LoggedIn</"
+"literal> to apply the interceptor."
+msgstr ""
+"こうして、 このインターセプタを適用するのにアクションリスナー Bean に"
+"<literal>@LoggedIn</literal> アノテーションだけを付加すればよくなりました。"
+
+#. Tag: programlisting
+#: Events.xml:376
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"changePasswordAction\")\n"
+"@LoggedIn\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class ChangePasswordAction implements ChangePassword { \n"
+"    \n"
+"    ...\n"
+"    \n"
+"    public String changePassword() { ... }\n"
+"    \n"
+"}"
+msgstr ""
+"@Stateless\n"
+"@Name(\"changePasswordAction\")\n"
+"@LoggedIn\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class ChangePasswordAction implements ChangePassword { \n"
+"    \n"
+"    ...\n"
+"    \n"
+"    public String changePassword() { ... }\n"
+"    \n"
+"}"
+
+#. Tag: para
+#: Events.xml:377
+#, no-c-format
+msgid ""
+"If interceptor ordering is important (it usually is), you can add "
+"<literal>@Interceptor</literal> annotations to your interceptor classes to "
+"specify a partial order of interceptors."
+msgstr ""
+"インターセプタの順番が重要な場合 (通常は重要となる)、 インターセプタクラスに"
+"対して <literal>@Interceptor</literal> アノテーションを追加しインターセプタの"
+"半順序を指定することが可能です。"
+
+#. Tag: programlisting
+#: Events.xml:380
+#, no-c-format
+msgid ""
+"@Interceptor(around={BijectionInterceptor.class,\n"
+"                     ValidationInterceptor.class,\n"
+"                     ConversationInterceptor.class},\n"
+"             within=RemoveInterceptor.class)\n"
+"public class LoggedInInterceptor\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+"@Interceptor(around={BijectionInterceptor.class,\n"
+"                     ValidationInterceptor.class,\n"
+"                     ConversationInterceptor.class},\n"
+"             within=RemoveInterceptor.class)\n"
+"public class LoggedInInterceptor\n"
+"{\n"
+"    ...\n"
+"}"
+
+#. Tag: para
+#: Events.xml:381
+#, no-c-format
+msgid ""
+"You can even have a \"client-side\" interceptor, that runs around any of the "
+"built-in functionality of EJB3:"
+msgstr ""
+"「クライアント側」インターセプタを持つこともできます。 EJB3 のいずれの組み込"
+"み機能とでも併用することができます。"
+
+#. Tag: programlisting
+#: Events.xml:384
+#, no-c-format
+msgid ""
+"@Interceptor(type=CLIENT)\n"
+"public class LoggedInInterceptor\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+"@Interceptor(type=CLIENT)\n"
+"public class LoggedInInterceptor\n"
+"{\n"
+"    ...\n"
+"}"
+
+#. Tag: para
+#: Events.xml:385
+#, no-c-format
+msgid ""
+"EJB interceptors are stateful, with a lifecycle that is the same as the "
+"component they intercept. For interceptors which do not need to maintain "
+"state, Seam lets you get a performance optimization by specifying "
+"<literal>@Interceptor(stateless=true)</literal>."
+msgstr ""
+"EJB インターセプタはステートフルで、 インターセプトする対象となるコンポーネン"
+"トと同じライフルサイクルに従います。 状態を維持する必要がないインターセプタの"
+"場合、 Seam では <literal>@Interceptor(stateless=true)</literal> を指定するこ"
+"とでパフォーマンス最適化ができるようになります。"
+
+#. Tag: para
+#: Events.xml:388
+#, no-c-format
+msgid ""
+"Much of the functionality of Seam is implemented as a set of built-in Seam "
+"interceptors, including the interceptors named in the previous example. You "
+"don&#39;t have to explicitly specify these interceptors by annotating your "
+"components; they exist for all interceptable Seam components."
+msgstr ""
+"Seam の機能の大半は組み込み Seam インターセプタの集合として実装されていて、 "
+"前の例のようなインターセプタも含まれます。 コンポーネントにアノテーションを付"
+"加してこれらのインターセプタを明示的に指定する必要はありません。 インターセプ"
+"ト可能な全 Seam コンポーネント用に最初から組み込まれています。"
+
+#. Tag: para
+#: Events.xml:391
+#, no-c-format
+msgid ""
+"You can even use Seam interceptors with JavaBean components, not just EJB3 "
+"beans!"
+msgstr ""
+"Seam インターセプタは EJB3 Bean だけでなく JavaBean コンポーネントにも使うこ"
+"とができます。"
+
+#. Tag: para
+#: Events.xml:394
+#, no-c-format
+msgid ""
+"EJB defines interception not only for business methods (using "
+"<literal>@AroundInvoke</literal>), but also for the lifecycle methods "
+"<literal>@PostConstruct</literal>, <literal>@PreDestroy</literal>, "
+"<literal>@PrePassivate</literal> and <literal>@PostActive</literal>. Seam "
+"supports all these lifecycle methods on both component and interceptor not "
+"only for EJB3 beans, but also for JavaBean components (except "
+"<literal>@PreDestroy</literal> which is not meaningful for JavaBean "
+"components)."
+msgstr ""
+"EJB は、 インターセプションを (<literal>@AroundInvoke</literal> を使った) ビ"
+"ジネスメソッドだけでなく、 ライフサイクルメソッド <literal>@PostConstruct</"
+"literal>、 <literal>@PreDestroy</literal>、 <literal>@PrePassivate</literal> "
+"そして <literal>@PostActive</literal> に対しても定義します。 Seam は、 コン"
+"ポーネントとインターセプタに対するこれらすべてのライフサイクルメソッドを "
+"EJB3 Bean だけでなく JavaBean コンポーネントに対してもサポートします "
+"(JavaBean コンポーネントにとって意味のない <literal>@PreDestroy</literal> は"
+"除きます)。"
+
+#. Tag: title
+#: Events.xml:397
+#, no-c-format
+msgid "Managing exceptions"
+msgstr "例外を管理する"
+
+#. Tag: para
+#: Events.xml:398
+#, no-c-format
+msgid ""
+"JSF is surprisingly limited when it comes to exception handling. As a "
+"partial workaround for this problem, Seam lets you define how a particular "
+"class of exception is to be treated by annotating the exception class, or "
+"declaring the exception class in an XML file. This facility is meant to be "
+"combined with the EJB 3.0-standard <literal>@ApplicationException</literal> "
+"annotation which specifies whether the exception should cause a transaction "
+"rollback."
+msgstr ""
+"JSF は例外処理に関しては驚くほど制限があります。 この問題の部分的な回避策とし"
+"て、 Seam は例外クラスにアノテーションを付けるか XML ファイルに例外クラスを宣"
+"言することで例外となる特定クラスを処理する方法を定義することができます。 この"
+"機能は、 指定された例外がトランザクションロールバックの原因になるべきか否かを"
+"指定するのに EJB 3.0 標準の <literal>@ApplicationException</literal> アノテー"
+"ションと一緒に使われることが意図されていています。"
+
+#. Tag: title
+#: Events.xml:401
+#, no-c-format
+msgid "Exceptions and transactions"
+msgstr "例外およびトランザクション"
+
+#. Tag: para
+#: Events.xml:402
+#, no-c-format
+msgid ""
+"EJB specifies well-defined rules that let us control whether an exception "
+"immediately marks the current transaction for rollback when it is thrown by "
+"a business method of the bean: <emphasis>system exceptions</emphasis> always "
+"cause a transaction rollback, <emphasis>application exceptions</emphasis> do "
+"not cause a rollback by default, but they do if "
+"<literal>@ApplicationException(rollback=true)</literal> is specified. (An "
+"application exception is any checked exception, or any unchecked exception "
+"annotated <literal>@ApplicationException</literal>. A system exception is "
+"any unchecked exception without an <literal>@ApplicationException</literal> "
+"annotation.)"
+msgstr ""
+"Bean のビジネスメソッドによって例外がスローされると、 その例外は現在のトラン"
+"ザクションに直ちにロールバックが必要として印を付けるかどうかを制御できるよう"
+"明確な規則を EJB は定義しています。 <emphasis>システム例外</emphasis> は常に"
+"トランザクションロールバックとなり、 <emphasis>アプリケーション例外</"
+"emphasis> はデフォルトではロールバックとはなりませんが "
+"<literal>@ApplicationException(rollback=true)</literal> が指定されるとロール"
+"バックとなります。 (アプリケーション例外とは、 チェックの付いた例外、 または "
+"<literal>@ApplicationException</literal> アノテーションが付いたチェックのない"
+"例外です。 システム例外とは、 <literal>@ApplicationException</literal> アノ"
+"テーションが付いていずチェックも付いていない例外です。)"
+
+#. Tag: para
+#: Events.xml:405
+#, no-c-format
+msgid ""
+"Note that there is a difference between marking a transaction for rollback, "
+"and actually rolling it back. The exception rules say that the transaction "
+"should be marked rollback only, but it may still be active after the "
+"exception is thrown."
+msgstr ""
+"ロールバック用にトランザクションに印を付けるのと、 実際にロールバックを行うの"
+"とは異なります。 例外規則にはトランザクションにロールバックが必要であると印が"
+"付けられることだけしか言及していませんが、 例外がスローされた後でもそれはアク"
+"ティブのままである可能性があるということに注意してください。"
+
+#. Tag: para
+#: Events.xml:408
+#, no-c-format
+msgid ""
+"Seam applies the EJB 3.0 exception rollback rules also to Seam JavaBean "
+"components."
+msgstr ""
+"Seam は EJB 3.0 例外のロールバック規則を Seam JavaBean コンポーネントに対して"
+"も適用します。"
+
+#. Tag: para
+#: Events.xml:411
+#, no-c-format
+msgid ""
+"But these rules only apply in the Seam component layer. What about an "
+"exception that is uncaught and propagates out of the Seam component layer, "
+"and out of the JSF layer? Well, it is always wrong to leave a dangling "
+"transaction open, so Seam rolls back any active transaction when an "
+"exception occurs and is uncaught in the Seam component layer."
+msgstr ""
+"しかし、 これらの規則は Seam コンポーネント層でのみ適用されるます。 では、 例"
+"外がキャッチされることなく Seam コンポーネント層の外部に伝播し、 さらに JSF "
+"層の外に伝播したらどうなるでしょうか。 宙ぶらりんのトランザクションをオープン"
+"したままで放置するのは間違いなので、 例外が発生し Seam コンポーネント層で"
+"キャッチされないと Seam はアクティブトランザクションを必ずロールバックしま"
+"す。"
+
+#. Tag: title
+#: Events.xml:414
+#, no-c-format
+msgid "Enabling Seam exception handling"
+msgstr "Seam 例外処理を有効にする"
+
+#. Tag: para
+#: Events.xml:415
+#, no-c-format
+msgid ""
+"To enable Seam&#39;s exception handling, we need to make sure we have the "
+"master servlet filter declared in <literal>web.xml</literal>:"
+msgstr ""
+"Seam の例外処理を有効にするには、 <literal>web.xml</literal> にマスターとなる"
+"サーブレットフィルターが宣言されていることを確認する必要があります。"
+
+#. Tag: programlisting
+#: Events.xml:418
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.servlet.SeamFilter&lt;/filter-"
+"class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;"
+msgstr ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.servlet.SeamFilter&lt;/filter-"
+"class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;"
+
+#. Tag: para
+#: Events.xml:419
+#, no-c-format
+msgid ""
+"You may also need to disable Facelets development mode in <literal>web.xml</"
+"literal> and Seam debug mode in <literal>components.xml</literal> if you "
+"want your exception handlers to fire."
+msgstr ""
+"ご使用の例外ハンドラを機能させる場合は、 <literal>web.xml</literal> の "
+"Facelets 開発モードおよび <literal>components.xml</literal> の Seam デバッグ"
+"モードも無効にする必要があります。"
+
+#. Tag: title
+#: Events.xml:422
+#, no-c-format
+msgid "Using annotations for exception handling"
+msgstr "例外処理に対してアノテーションを使用する"
+
+#. Tag: para
+#: Events.xml:423
+#, no-c-format
+msgid ""
+"The following exception results in a HTTP 404 error whenever it propagates "
+"out of the Seam component layer. It does not roll back the current "
+"transaction immediately when thrown, but the transaction will be rolled back "
+"if it the exception is not caught by another Seam component."
+msgstr ""
+"次の例外は Seam コンポーネント層の外部に伝播すると必ず HTTP 404 エラーになり"
+"ます。 スローされてもすぐには現在のトランザクションをロールバックしません"
+"が、 別の Seam コンポーネントによって例外がキャッチされないとこのトランザク"
+"ションはロールバックされます。"
+
+#. Tag: programlisting
+#: Events.xml:426
+#, no-c-format
+msgid ""
+"@HttpError(errorCode=404)\n"
+"public class ApplicationException extends Exception { ... }"
+msgstr ""
+"@HttpError(errorCode=404)\n"
+"public class ApplicationException extends Exception { ... }"
+
+#. Tag: para
+#: Events.xml:427
+#, no-c-format
+msgid ""
+"This exception results in a browser redirect whenever it propagates out of "
+"the Seam component layer. It also ends the current conversation. It causes "
+"an immediate rollback of the current transaction."
+msgstr ""
+"この例外は Seam コンポーネント層の外部に伝播すると必ずブラウザリダイレクトに"
+"なります。 また、 現在の対話も終了させます。 これにより現在のトランザクション"
+"を即時ロールバックさせることになります。"
+
+#. Tag: programlisting
+#: Events.xml:430
+#, no-c-format
+msgid ""
+"@Redirect(viewId=\"/failure.xhtml\", end=true)\n"
+"@ApplicationException(rollback=true)\n"
+"public class UnrecoverableApplicationException extends RuntimeException "
+"{ ... }"
+msgstr ""
+"@Redirect(viewId=\"/failure.xhtml\", end=true)\n"
+"@ApplicationException(rollback=true)\n"
+"public class UnrecoverableApplicationException extends RuntimeException "
+"{ ... }"
+
+#. Tag: para
+#: Events.xml:431
+#, no-c-format
+msgid ""
+"Note that <literal>@Redirect</literal> does not work for exceptions which "
+"occur during the render phase of the JSF lifecycle."
+msgstr ""
+"<literal>@Redirect</literal> は JSF ライフサイクルのレンダリングフェーズ中に"
+"発生した例外に対しては動作しないので注意してください。"
+
+#. Tag: para
+#: Events.xml:434
+#, no-c-format
+msgid ""
+"This exception results in a redirect, along with a message to the user, when "
+"it propagates out of the Seam component layer. It also immediately rolls "
+"back the current transaction."
+msgstr ""
+"この例外は Seam コンポーネント層の外部に伝播すると必ずユーザへのメッセージを"
+"付けてリダイレクトされます。 また、 現在のトランザクションも即時ロールバック"
+"させます。"
+
+#. Tag: programlisting
+#: Events.xml:437
+#, no-c-format
+msgid ""
+"@Redirect(viewId=\"/error.xhtml\", message=\"Unexpected error\")\n"
+"public class SystemException extends RuntimeException { ... }"
+msgstr ""
+"@Redirect(viewId=\"/error.xhtml\", message=\"Unexpected error\")\n"
+"public class SystemException extends RuntimeException { ... }"
+
+#. Tag: title
+#: Events.xml:438
+#, no-c-format
+msgid "Using XML for exception handling"
+msgstr "例外処理に XML を使用する"
+
+#. Tag: para
+#: Events.xml:439
+#, no-c-format
+msgid ""
+"Since we can&#39;t add annotations to all the exception classes we are "
+"interested in, Seam also lets us specify this functionality in "
+"<literal>pages.xml</literal>."
+msgstr ""
+"興味を持っている例外クラスすべてに対してアノテーションを付加することはできな"
+"いので、 Seam は <literal>pages.xml</literal> でこの機能を指定できるようにし"
+"ています。"
+
+#. Tag: programlisting
+#: Events.xml:442
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   \n"
+"   &lt;exception class=\"javax.persistence.EntityNotFoundException\"&gt;\n"
+"      &lt;http-error error-code=\"404\"/&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"   &lt;exception class=\"javax.persistence.PersistenceException\"&gt;\n"
+"      &lt;end-conversation/&gt;\n"
+"      &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"          &lt;message&gt;Database access failed&lt;/message&gt;\n"
+"      &lt;/redirect&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"   &lt;exception&gt;\n"
+"      &lt;end-conversation/&gt;\n"
+"      &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"          &lt;message&gt;Unexpected failure&lt;/message&gt;\n"
+"      &lt;/redirect&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"   \n"
+"   &lt;exception class=\"javax.persistence.EntityNotFoundException\"&gt;\n"
+"      &lt;http-error error-code=\"404\"/&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"   &lt;exception class=\"javax.persistence.PersistenceException\"&gt;\n"
+"      &lt;end-conversation/&gt;\n"
+"      &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"          &lt;message&gt;Database access failed&lt;/message&gt;\n"
+"      &lt;/redirect&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"   &lt;exception&gt;\n"
+"      &lt;end-conversation/&gt;\n"
+"      &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"          &lt;message&gt;Unexpected failure&lt;/message&gt;\n"
+"      &lt;/redirect&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Events.xml:443
+#, no-c-format
+msgid ""
+"The last <literal>&lt;exception&gt;</literal> declaration does not specify a "
+"class, and is a catch-all for any exception for which handling is not "
+"otherwise specified via annotations or in <literal>pages.xml</literal>."
+msgstr ""
+"最後の <literal>&lt;exception&gt;</literal> 宣言はクラスを指定していないの"
+"で、 アノテーションまたは <literal>pages.xml</literal> で指定されているもの以"
+"外すべての例外をキャッチします。"
+
+#. Tag: para
+#: Events.xml:446
+#, no-c-format
+msgid ""
+"You can also access the handled exception instance through EL, Seam places "
+"it in the conversation context, e.g. to access the message of the exception:"
+msgstr ""
+"EL によってキャッチした例外インスタンスにアクセスすることができます。 Seamは"
+"それを対話コンテキストに置きます。例外のメッセージにアクセスする例は次の通"
+"り。"
+
+#. Tag: programlisting
+#: Events.xml:449
+#, no-c-format
+msgid ""
+"...\n"
+"throw new AuthorizationException(\"You are not allowed to do this!\");\n"
+"\n"
+"&lt;pages&gt;\n"
+"\n"
+"    &lt;exception class=\"org.jboss.seam.security.AuthorizationException"
+"\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"        &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"            &lt;message severity=\"WARN\"&gt;#{handledException.message}&lt;/"
+"message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"\n"
+"&lt;/pages&gt;"
+msgstr ""
+"...\n"
+"throw new AuthorizationException(\"You are not allowed to do this!\");\n"
+"\n"
+"&lt;pages&gt;\n"
+"\n"
+"    &lt;exception class=\"org.jboss.seam.security.AuthorizationException"
+"\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"        &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"            &lt;message severity=\"WARN\"&gt;#{handledException.message}&lt;/"
+"message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"\n"
+"&lt;/pages&gt;"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Feedback.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Feedback.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Feedback.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,38 @@
+# translation of Feedback.po to Japanese
+# Language ja-JP translations for PACKAGE package.
+#
+# Automatically generated, 2008.
+# Noriko Mizumoto <noriko at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Feedback\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-04-17 04:11+0000\n"
+"PO-Revision-Date: 2008-05-15 10:58+1000\n"
+"Last-Translator: Noriko Mizumoto <noriko at redhat.com>\n"
+"Language-Team: Japanese <fedora-trans-ja at redhat.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Feedback.xml:6
+#, no-c-format
+msgid "Feedback"
+msgstr "フィードバック"
+
+#. Tag: para
+#: Feedback.xml:7
+#, no-c-format
+msgid ""
+"If you spot a typo in this guide, or if you have thought of a way to make "
+"this manual better, we would love to hear from you! Submit a report in "
+"<ulink url=\"http://jira.jboss.com/jira/browse/JBPAPP\">JIRA</ulink> against "
+"the Product: JBoss Enterprise Application Platform, Version: "
+"<replaceable>&lt;version&gt;</replaceable>, Component: <emphasis>Doc</"
+"emphasis>. If you have a suggestion for improving the documentation, try to "
+"be as specific as possible. If you have found an error, include the section "
+"number and some of the surrounding text so we can find it easily."
+msgstr "本ガイドに誤植があった場合、 また本ガイドの改善案に関するご意見をお寄せ頂く場合、 <ulink url=\"http://jira.jboss.com/jira/browse/JBPAPP\">JIRA</ulink> より Product: JBoss Enterprise Application Platform、 Version: <replaceable>&lt;version&gt;</replaceable>、 Component: <emphasis>Doc</emphasis> にてご報告頂ければ幸いです。 ドキュメントの改善案についてはできるだけ詳細にお願いいたします。 エラーの報告を頂く場合は、 該当するセクション番号および前後の文脈を含めてお知らせ頂けると発見しやすくなります。"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Framework.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Framework.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Framework.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1210 @@
+# translation of Framework.po to Japanese
+# Noriko Mizumoto <noriko at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Framework\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-30 01:52+0000\n"
+"PO-Revision-Date: 2007-10-30 15:14+1000\n"
+"Last-Translator: Noriko Mizumoto <noriko at redhat.com>\n"
+"Language-Team: Japanese <fedora-trans-ja at redhat.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Framework.xml:6
+#, no-c-format
+msgid "The Seam Application Framework"
+msgstr "Seamアプリケーションフレームワーク"
+
+#. Tag: para
+#: Framework.xml:7
+#, no-c-format
+msgid ""
+"Seam makes it really easy to create applications by writing plain Java "
+"classes with annotations, which don&#39;t need to extend any special "
+"interfaces or superclasses. But we can simplify some common programming "
+"tasks even further, by providing a set of pre-built components which can be "
+"re-used either by configuration in <literal>components.xml</literal> (for "
+"very simple cases) or extension."
+msgstr ""
+"Seamは特別のインターフェースやスーパークラスを拡張することなく、純粋なJavaク"
+"ラスにアノテーションを付記することにより簡単にアプリケーションを作成すること"
+"が出来ます。 しかし、<literal>components.xml</literal>の設定(簡単な場合に"
+"は)や機能の拡張により再利用する事が出来る既成のコンポーネントを提供すること"
+"により、お決まりのプログラムについて更に簡単に作成できるようにすることが出来"
+"ます。"
+
+#. Tag: para
+#: Framework.xml:10
+#, no-c-format
+msgid ""
+"The <emphasis>Seam Application Framework</emphasis> can reduce the amount of "
+"code you need to write when doing basic database access in a web "
+"application, using either Hibernate or JPA."
+msgstr ""
+"<emphasis>Seamアプリケーションフレームワーク</emphasis>はJPAやHibernateを使っ"
+"たデータベースへのアクセスに関わる基本的なプログラムのコード量を削減すること"
+"が出来ます。"
+
+#. Tag: para
+#: Framework.xml:13
+#, no-c-format
+msgid ""
+"We should emphasize that the framework is extremely simple, just a handful "
+"of simple classes that are easy to understand and extend. The \"magic\" is "
+"in Seam itself&mdash;the same magic you use when creating any Seam "
+"application even without using this framework."
+msgstr ""
+"このフレームワークは理解も容易で、拡張し易く簡単ないくつかのクラスから構成さ"
+"れています。 コード量を減らしたり、コードの再利用を可能にする「マジック」は"
+"Seamそのものにあります &mdash; このフレームワークを使わなくても Seam アプリ"
+"ケーションを作成するときには同様のマジックを使用しているのです。"
+
+#. Tag: title
+#: Framework.xml:17
+#, no-c-format
+msgid "Introduction"
+msgstr "はじめに"
+
+#. Tag: para
+#: Framework.xml:18
+#, no-c-format
+msgid ""
+"The components provided by the Seam application framework may be used in one "
+"of two different approaches. The first way is to install and configure an "
+"instance of the component in <literal>components.xml</literal>, just like we "
+"have done with other kinds of built-in Seam components. For example, the "
+"following fragment from <literal>components.xml</literal> installs a "
+"component which can perform basic CRUD operations for a <literal>Contact</"
+"literal> entity:"
+msgstr ""
+"このフレームワークの提供するコンポーネントは、二つの使い方のいずれかで利用す"
+"ることが出来ます。 一つは、他のSeamの組み込みコンポーネントで行っているよう"
+"に、<literal>components.xml</literal>でインスタンスを設定して使用する方法で"
+"す。 下の<literal>components.xml</literal>の設定 (部分)では"
+"<literal>Contact</literal>エンティティに対する基本的なCRUD操作をインストール"
+"しています。"
+
+#. Tag: programlisting
+#: Framework.xml:21
+#, no-c-format
+msgid ""
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" \n"
+"                       entity-manager=\"#{personDatabase}\"&gt;\n"
+"    &lt;framework:id&gt;#{param.personId}&lt;/framework:id&gt;\n"
+"&lt;/framework:entity-home&gt;"
+msgstr ""
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" \n"
+"                       entity-manager=\"#{personDatabase}\"&gt;\n"
+"    &lt;framework:id&gt;#{param.personId}&lt;/framework:id&gt;\n"
+"&lt;/framework:entity-home&gt;"
+
+#. Tag: para
+#: Framework.xml:22
+#, no-c-format
+msgid ""
+"If that looks a bit too much like \"programming in XML\" for your taste, you "
+"can use extension instead:"
+msgstr ""
+"もし、これが「XMLプログラミング」に偏重しているように思えて、好みに合わなけれ"
+"ば、代りに機能を拡張して行うことも出来ます。"
+
+#. Tag: programlisting
+#: Framework.xml:25
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; implements "
+"LocalPersonHome {\n"
+"    @RequestParameter String personId;\n"
+"    @In EntityManager personDatabase;\n"
+"    \n"
+"    public Object getId() { return personId; }\n"
+"    public EntityManager getEntityManager() { return personDatabase; }\n"
+"    \n"
+"}"
+msgstr ""
+"@Stateful\n"
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; implements "
+"LocalPersonHome {\n"
+"    @RequestParameter String personId;\n"
+"    @In EntityManager personDatabase;\n"
+"    \n"
+"    public Object getId() { return personId; }\n"
+"    public EntityManager getEntityManager() { return personDatabase; }\n"
+"    \n"
+"}"
+
+#. Tag: para
+#: Framework.xml:26
+#, no-c-format
+msgid ""
+"The second approach has one huge advantage: you can easily add extra "
+"functionality, and override the built-in functionality (the framework "
+"classes were carefully designed for extension and customization)."
+msgstr ""
+"第二の方法 (機能の拡張を使う) は大きなメリットとして、簡単に拡張したり、内蔵"
+"された機能をオーバーライドすることが出来ます。 (このフレームワークの提供する"
+"クラスは、拡張や、カスタム化に対応できるよう、注意深く作成されています。)"
+
+#. Tag: para
+#: Framework.xml:29
+#, no-c-format
+msgid ""
+"A second advantage is that your classes may be EJB stateful sessin beans, if "
+"you like. (They do not have to be, they can be plain JavaBean components if "
+"you prefer.)"
+msgstr ""
+"また、第2のメリットとして、クラスをEJBのステートフルセッションビーンとするこ"
+"とが出来ます。 (必ずEJBにする必要はなく、好みで、プレーンなJavaビーンとするこ"
+"とも出来ます。)"
+
+#. Tag: para
+#: Framework.xml:32
+#, no-c-format
+msgid ""
+"At this time, the Seam Application Framework provides just four built-in "
+"components: <literal>EntityHome</literal> and <literal>HibernateEntityHome</"
+"literal> for CRUD, along with <literal>EntityQuery</literal> and "
+"<literal>HibernateEntityQuery</literal> for queries."
+msgstr ""
+"現時点で、Seamアプリケーションフレームワークは、CRUD 用に"
+"<literal>EntityHome</literal> と<literal>HibernateEntityHome</literal>、それ"
+"にQueryの為の<literal>EntityQuery</literal> と "
+"<literal>HibernateEntityQuery</literal>の4つのコンポーネントを提供していま"
+"す。"
+
+#. Tag: para
+#: Framework.xml:35
+#, no-c-format
+msgid ""
+"The Home and Query components are written so that they can function with a "
+"scope of session, event or conversation. Which scope you use depends upon "
+"the state model you wish to use in your application."
+msgstr ""
+"HomeとQueryはセッション、イベント、それに対話スコープで機能するように作成され"
+"ています。 どのスコープを使用するかは、アプリケーションのステートモデルに依存"
+"します。"
+
+#. Tag: para
+#: Framework.xml:38
+#, no-c-format
+msgid ""
+"The Seam Application Framework only works with Seam-managed persistence "
+"contexts. By default, the components will look for a persistence context "
+"named <literal>entityManager</literal>."
+msgstr ""
+"SeamアプリケーションフレームワークはSeamが管理している永続性コンテキストでの"
+"み動作します。 デフォルトで、<literal>entityManager</literal>という名前の永続"
+"性コンテキストを探します。"
+
+#. Tag: title
+#: Framework.xml:44
+#, no-c-format
+msgid "Home objects"
+msgstr "Homeオブジェクト"
+
+#. Tag: para
+#: Framework.xml:45
+#, no-c-format
+msgid ""
+"A Home object provides persistence operations for a particular entity class. "
+"Suppose we have our trusty <literal>Person</literal> class:"
+msgstr ""
+"Homeオブジェクトは、特定のエンティティクラスに対する永続性操作を提供します。"
+"<literal>Person</literal>クラスについて考えてみましょう。"
+
+#. Tag: programlisting
+#: Framework.xml:48
+#, no-c-format
+msgid ""
+"@Entity\n"
+"public class Person {\n"
+"    @Id private Long id;\n"
+"    private String firstName;\n"
+"    private String lastName;\n"
+"    private Country nationality;\n"
+"    \n"
+"    //getters and setters...\n"
+"}"
+msgstr ""
+"@Entity\n"
+"public class Person {\n"
+"    @Id private Long id;\n"
+"    private String firstName;\n"
+"    private String lastName;\n"
+"    private Country nationality;\n"
+"    \n"
+"    //getters and setters...\n"
+"}"
+
+#. Tag: para
+#: Framework.xml:49
+#, no-c-format
+msgid ""
+"We can define a <literal>personHome</literal> component either via "
+"configuration:"
+msgstr ""
+"コンフィギュレーションで、下のように<literal>personHome</literal>コンポーネン"
+"トを定義することが出来ます。"
+
+#. Tag: programlisting
+#: Framework.xml:52
+#, no-c-format
+msgid ""
+"&lt;framework:entity-home name=\"personHome\" entity-class=\"eg.Person\" /"
+"&gt;"
+msgstr ""
+"&lt;framework:entity-home name=\"personHome\" entity-class=\"eg.Person\" /"
+"&gt;"
+
+#. Tag: para
+#: Framework.xml:53
+#, no-c-format
+msgid "Or via extension:"
+msgstr "また、機能を拡張して下のように、同様のことが出来ます。"
+
+#. Tag: programlisting
+#: Framework.xml:56
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {}"
+msgstr ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {}"
+
+#. Tag: para
+#: Framework.xml:57
+#, no-c-format
+msgid ""
+"A Home object provides the following operations: <literal>persist()</"
+"literal>, <literal>remove()</literal>, <literal>update()</literal> and "
+"<literal>getInstance()</literal>. Before you can call the <literal>remove()</"
+"literal>, or <literal>update()</literal> operations, you must first set the "
+"identifier of the object you are interested in, using the <literal>setId()</"
+"literal> method."
+msgstr ""
+"Homeオブジェクトは<literal>persist()</literal>、 <literal>remove()</"
+"literal>、 <literal>update()</literal> それに <literal>getInstance()</"
+"literal> の 4 つの操作を提供します。"
+
+#. Tag: para
+#: Framework.xml:60
+#, no-c-format
+msgid "We can use a Home directly from a JSF page, for example:"
+msgstr "HomeはJSFページから、下のように直接利用することが出来ます。"
+
+#. Tag: programlisting
+#: Framework.xml:63
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Create Person&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{personHome.instance."
+"firstName}\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{personHome.instance."
+"lastName}\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h1&gt;Create Person&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{personHome.instance."
+"firstName}\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{personHome.instance."
+"lastName}\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+
+#. Tag: para
+#: Framework.xml:64
+#, no-c-format
+msgid ""
+"Usually, it is much nicer to be able to refer to the <literal>Person</"
+"literal> merely as <literal>person</literal>, so let&#39;s make that "
+"possible by adding a line to <literal>components.xml</literal>:"
+msgstr ""
+"通常、<literal>Person</literal>は<literal>person</literal>で参照出来た方が便"
+"利ですので、<literal>components.xml</literal>に下のように一行加えて、そのよう"
+"にしましょう。"
+
+#. Tag: programlisting
+#: Framework.xml:67
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" /&gt;"
+msgstr ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" /&gt;"
+
+#. Tag: para
+#: Framework.xml:68
+#, no-c-format
+msgid ""
+"(If we are using configuration.) Or by adding a <literal>@Factory</literal> "
+"method to <literal>PersonHome</literal>:"
+msgstr ""
+"(コンフィギュレーションを使用している場合、) <literal>PersonHome</literal> "
+"に <literal>@Factory</literal> を追加します。"
+
+#. Tag: programlisting
+#: Framework.xml:71
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"}"
+msgstr ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"}"
+
+#. Tag: para
+#: Framework.xml:72
+#, no-c-format
+msgid ""
+"(If we are using extension.) This change simplifies our JSF page to the "
+"following:"
+msgstr ""
+"(機能を拡張している場合) これで、下のように JSF ページの記述が簡単になりま"
+"す。"
+
+#. Tag: programlisting
+#: Framework.xml:75
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Create Person&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{person.firstName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{person.lastName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h1&gt;Create Person&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{person.firstName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{person.lastName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+
+#. Tag: para
+#: Framework.xml:76
+#, no-c-format
+msgid ""
+"Well, that lets us create new <literal>Person</literal> entries. Yes, that "
+"is all the code that is required! Now, if we want to be able to display, "
+"update and delete pre-existing <literal>Person</literal> entries in the "
+"database, we need to be able to pass the entry identifier to the "
+"<literal>PersonHome</literal>. Page parameters are a great way to do that:"
+msgstr ""
+"これで、<literal>Person</literal>の新しいエントリーを作成することが出来るよう"
+"になります。 はい、これで全てです。 次に、表示、更新、それに削除機能を既存の"
+"データ−ベースの <literal>Person</literal>エントリー操作に追加するためには、"
+"<literal>PersonHome</literal>に対象のエントリーを特定する識別子を伝える必要が"
+"あります。 下のように、ページパラメータを使って、これを行います。"
+
+#. Tag: programlisting
+#: Framework.xml:79
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/editPerson.jsp\"&gt;\n"
+"        &lt;param name=\"personId\" value=\"#{personHome.id}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/editPerson.jsp\"&gt;\n"
+"        &lt;param name=\"personId\" value=\"#{personHome.id}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Framework.xml:80
+#, no-c-format
+msgid "Now we can add the extra operations to our JSF page:"
+msgstr "これで、JSFページにこれらの機能を追加することが出来ます。"
+
+#. Tag: programlisting
+#: Framework.xml:83
+#, no-c-format
+msgid ""
+"&lt;h1&gt;\n"
+"    &lt;h:outputText rendered=\"#{!personHome.managed}\" value=\"Create "
+"Person\"/&gt;\n"
+"    &lt;h:outputText rendered=\"#{personHome.managed}\" value=\"Edit Person"
+"\"/&gt;\n"
+"&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{person.firstName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{person.lastName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\" \n"
+"                             rendered=\"#{!personHome.managed}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Update Person\" action=\"#{personHome."
+"update}\" \n"
+"                             rendered=\"#{personHome.managed}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Delete Person\" action=\"#{personHome."
+"remove}\" \n"
+"                             rendered=\"#{personHome.managed}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h1&gt;\n"
+"    &lt;h:outputText rendered=\"#{!personHome.managed}\" value=\"Create "
+"Person\"/&gt;\n"
+"    &lt;h:outputText rendered=\"#{personHome.managed}\" value=\"Edit Person"
+"\"/&gt;\n"
+"&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{person.firstName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{person.lastName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\" \n"
+"                             rendered=\"#{!personHome.managed}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Update Person\" action=\"#{personHome."
+"update}\" \n"
+"                             rendered=\"#{personHome.managed}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Delete Person\" action=\"#{personHome."
+"remove}\" \n"
+"                             rendered=\"#{personHome.managed}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+
+#. Tag: para
+#: Framework.xml:84
+#, no-c-format
+msgid ""
+"When we link to the page with no request parameters, the page will be "
+"displayed as a \"Create Person\" page. When we provide a value for the "
+"<literal>personId</literal> request parameter, it will be an \"Edit Person\" "
+"page."
+msgstr ""
+"リクエストパラメータ無しでページにリンクした場合、「Person作成」としてページ"
+"が表示され、<literal>personId</literal> をリクエストパラメータとして渡した場"
+"合には、「Person編集」としてページが表示されます。"
+
+#. Tag: para
+#: Framework.xml:87
+#, no-c-format
+msgid ""
+"Suppose we need to create <literal>Person</literal> entries with their "
+"nationality initialized. We can do that easily, via configuration:"
+msgstr ""
+"<literal>Person</literal>をその国籍を初期化して作成しなければならない場合を考"
+"えてみましょう。これも簡単に出来ます。 コンフィギュレーションを使う場合は;"
+
+#. Tag: programlisting
+#: Framework.xml:90
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" \n"
+"                       new-instance=\"#{newPerson}\"/&gt;\n"
+"\n"
+"&lt;component name=\"newPerson\" \n"
+"           class=\"eg.Person\"&gt;\n"
+"    &lt;property name=\"nationality\"&gt;#{country}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" \n"
+"                       new-instance=\"#{newPerson}\"/&gt;\n"
+"\n"
+"&lt;component name=\"newPerson\" \n"
+"           class=\"eg.Person\"&gt;\n"
+"    &lt;property name=\"nationality\"&gt;#{country}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+
+#. Tag: para
+#: Framework.xml:91
+#, no-c-format
+msgid "Or by extension:"
+msgstr "また、機能を拡張して行う場合は下の様になります。"
+
+#. Tag: programlisting
+#: Framework.xml:94
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"}"
+
+#. Tag: para
+#: Framework.xml:95
+#, no-c-format
+msgid ""
+"Of course, the <literal>Country</literal> could be an object managed by "
+"another Home object, for example, <literal>CountryHome</literal>."
+msgstr ""
+"勿論、<literal>Country</literal>オブジェクトは、例えば<literal>CountryHome</"
+"literal>というHomeオブジェクトの管理下のオブジェクトとすることも出来ます。"
+
+#. Tag: para
+#: Framework.xml:98
+#, no-c-format
+msgid ""
+"To add more sophisticated operations (association management, etc), we can "
+"just add methods to <literal>PersonHome</literal>."
+msgstr ""
+"アソシエーションの管理など、 より洗練された操作を実現するのも "
+"<literal>PersonHome</literal> にメソッドを追加するだけで出来るようになりま"
+"す。"
+
+#. Tag: programlisting
+#: Framework.xml:101
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"    public void migrate()\n"
+"    {\n"
+"        getInstance().setCountry(country);\n"
+"        update();\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"    public void migrate()\n"
+"    {\n"
+"        getInstance().setCountry(country);\n"
+"        update();\n"
+"    }\n"
+"    \n"
+"}"
+
+#. Tag: para
+#: Framework.xml:102
+#, no-c-format
+msgid ""
+"The Home object automatically displays faces messages when an operation is "
+"successful. To customize these messages we can, again, use configuration:"
+msgstr ""
+"Homeオブジェクトは操作が成功したときに自動的にフェースメッセージを表示しま"
+"す。 これを、カスタマイズするには、下のようにコンフィギュレーションを設定しま"
+"す。"
+
+#. Tag: programlisting
+#: Framework.xml:105
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\"\n"
+"                       entity-class=\"eg.Person\"\n"
+"                       new-instance=\"#{newPerson}\"&gt;\n"
+"    &lt;framework:created-message&gt;New person #{person.firstName} #{person."
+"lastName} created&lt;/framework:created-message&gt;\n"
+"    &lt;framework:deleted-message&gt;Person #{person.firstName} #{person."
+"lastName} deleted&lt;/framework:deleted-message&gt;\n"
+"    &lt;framework:updated-message&gt;Person #{person.firstName} #{person."
+"lastName} updated&lt;/framework:updated-message&gt;\n"
+"&lt;/framework:entity-home&gt;\n"
+"\n"
+"&lt;component name=\"newPerson\" \n"
+"           class=\"eg.Person\"&gt;\n"
+"    &lt;property name=\"nationality\"&gt;#{country}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\"\n"
+"                       entity-class=\"eg.Person\"\n"
+"                       new-instance=\"#{newPerson}\"&gt;\n"
+"    &lt;framework:created-message&gt;New person #{person.firstName} #{person."
+"lastName} created&lt;/framework:created-message&gt;\n"
+"    &lt;framework:deleted-message&gt;Person #{person.firstName} #{person."
+"lastName} deleted&lt;/framework:deleted-message&gt;\n"
+"    &lt;framework:updated-message&gt;Person #{person.firstName} #{person."
+"lastName} updated&lt;/framework:updated-message&gt;\n"
+"&lt;/framework:entity-home&gt;\n"
+"\n"
+"&lt;component name=\"newPerson\" \n"
+"           class=\"eg.Person\"&gt;\n"
+"    &lt;property name=\"nationality\"&gt;#{country}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+
+#. Tag: para
+#: Framework.xml:106
+#, no-c-format
+msgid "Or extension:"
+msgstr "あるいは、機能を拡張して下のようにすることも出来ます。"
+
+#. Tag: programlisting
+#: Framework.xml:109
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"    protected String getCreatedMessage() { return \"New person #{person."
+"firstName} \n"
+"      #{person.lastName} created\"; }\n"
+"    protected String getUpdatedMessage() { return \"Person #{person."
+"firstName} \n"
+"      #{person.lastName} updated\"; }\n"
+"    protected String getDeletedMessage() { return \"Person #{person."
+"firstName} \n"
+"      #{person.lastName} deleted\"; }\n"
+"    \n"
+"}"
+msgstr ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"    protected String getCreatedMessage() { return \"New person #{person."
+"firstName} \n"
+"      #{person.lastName} created\"; }\n"
+"    protected String getUpdatedMessage() { return \"Person #{person."
+"firstName} \n"
+"      #{person.lastName} updated\"; }\n"
+"    protected String getDeletedMessage() { return \"Person #{person."
+"firstName} \n"
+"      #{person.lastName} deleted\"; }\n"
+"    \n"
+"}"
+
+#. Tag: para
+#: Framework.xml:110
+#, no-c-format
+msgid ""
+"But the best way to specify the messages is to put them in a resource bundle "
+"known to Seam (the bundle named <literal>messages</literal>, by default)."
+msgstr ""
+"しかし、メッセージ定義における最良の方法は (デフォルトで <literal>messages</"
+"literal> という名前の) Seam に対して既知のリソースバンドルに定義することで"
+"しょう。"
+
+#. Tag: programlisting
+#: Framework.xml:113
+#, no-c-format
+msgid ""
+"Person_created=New person #{person.firstName} #{person.lastName} created\n"
+"Person_deleted=Person #{person.firstName} #{person.lastName} deleted\n"
+"Person_updated=Person #{person.firstName} #{person.lastName} updated"
+msgstr ""
+"Person_created=New person #{person.firstName} #{person.lastName} created\n"
+"Person_deleted=Person #{person.firstName} #{person.lastName} deleted\n"
+"Person_updated=Person #{person.firstName} #{person.lastName} updated"
+
+#. Tag: para
+#: Framework.xml:114
+#, no-c-format
+msgid ""
+"This enables internationalization, and keeps your code and configuration "
+"clean of presentation concerns."
+msgstr ""
+"この方法を使えば、国際化に対応することが出来ますし、コードやコンフィギュレー"
+"ションファイルとプレゼンテーション層とを切り離すことが出来ます。"
+
+#. Tag: para
+#: Framework.xml:117
+#, no-c-format
+msgid ""
+"The final step is to add validation functionality to the page, using "
+"<literal>&lt;s:validateAll&gt;</literal> and <literal>&lt;s:decorate&gt;</"
+"literal>, but I&#39;ll leave that for you to figure out."
+msgstr ""
+"最後のステップは<literal>&lt;s:validateAll&gt;</literal> と<literal>&lt;s:"
+"decorate&gt;</literal>を使って、ページにバリデーション機能を追加することです"
+"が、これは皆さんへの宿題としておきましょう。"
+
+#. Tag: title
+#: Framework.xml:123
+#, no-c-format
+msgid "Query objects"
+msgstr "Queryオブジェクト"
+
+#. Tag: para
+#: Framework.xml:124
+#, no-c-format
+msgid ""
+"If we need a list of all <literal>Person</literal> instance in the database, "
+"we can use a Query object. For example:"
+msgstr ""
+"データベース中の<literal>Person</literal>の全てのインスタンスのリストが必要な"
+"場合、Queryオブジェクトを使って、下のようにすることが出来ます。"
+
+#. Tag: programlisting
+#: Framework.xml:127
+#, no-c-format
+msgid ""
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\"/&gt;"
+msgstr ""
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\"/&gt;"
+
+#. Tag: para
+#: Framework.xml:128
+#, no-c-format
+msgid "We can use it from a JSF page:"
+msgstr "また、これ(この結果)をJSFページから使うことが出来ます。"
+
+#. Tag: programlisting
+#: Framework.xml:131
+#, no-c-format
+msgid ""
+"&lt;h1&gt;List of people&lt;/h1&gt;\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+"&lt;h1&gt;List of people&lt;/h1&gt;\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+
+#. Tag: para
+#: Framework.xml:132
+#, no-c-format
+msgid "We probably need to support pagination:"
+msgstr "量の多いページを処理する為にページングも必要でしょう。"
+
+#. Tag: programlisting
+#: Framework.xml:135
+#, no-c-format
+msgid ""
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\" \n"
+"                        order=\"lastName\" \n"
+"                        max-results=\"20\"/&gt;"
+msgstr ""
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\" \n"
+"                        order=\"lastName\" \n"
+"                        max-results=\"20\"/&gt;"
+
+#. Tag: para
+#: Framework.xml:136
+#, no-c-format
+msgid "We&#39;ll use a page parameter to determine the page to display:"
+msgstr "表示するページを決める為にページパラメータを使います。"
+
+#. Tag: programlisting
+#: Framework.xml:139
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/searchPerson.jsp\"&gt;\n"
+"        &lt;param name=\"firstResult\" value=\"#{people.firstResult}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/searchPerson.jsp\"&gt;\n"
+"        &lt;param name=\"firstResult\" value=\"#{people.firstResult}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Framework.xml:140
+#, no-c-format
+msgid "The JSF code for a pagination control is a bit verbose, but manageable:"
+msgstr "ページングを管理するJSFのコードは若干繁雑ですが、許容範囲内です。"
+
+#. Tag: programlisting
+#: Framework.xml:143
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Search for people&lt;/h1&gt;\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.previousExists}\" "
+"value=\"First Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"0\"/&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.previousExists}\" "
+"value=\"Previous Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.previousFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.nextExists}\" value="
+"\"Next Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.nextFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.nextExists}\" value="
+"\"Last Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.lastFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;"
+msgstr ""
+"&lt;h1&gt;Search for people&lt;/h1&gt;\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.previousExists}\" "
+"value=\"First Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"0\"/&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.previousExists}\" "
+"value=\"Previous Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.previousFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.nextExists}\" value="
+"\"Next Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.nextFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.nextExists}\" value="
+"\"Last Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.lastFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;"
+
+#. Tag: para
+#: Framework.xml:144
+#, no-c-format
+msgid ""
+"Real search screens let the user enter a bunch of optional search criteria "
+"to narrow the list of results returned. The Query object lets you specify "
+"optional \"restrictions\" to support this important usecase:"
+msgstr ""
+"実用的な検索スクリーンでは、絞りこんだ検索結果を得るために、多くの検索のクラ"
+"イテリアをユーザに入力してもらう必要があります。 この重要なユースケースをサ"
+"ポートする為に、Queryオブジェクトはオプションとして制約を設定することが出来ま"
+"す。"
+
+#. Tag: programlisting
+#: Framework.xml:147
+#, no-c-format
+msgid ""
+"&lt;component name=\"examplePerson\" class=\"Person\"/&gt;\n"
+"        \n"
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\" \n"
+"                        order=\"lastName\" \n"
+"                        max-results=\"20\"&gt;\n"
+"    &lt;framework:restrictions&gt;\n"
+"        &lt;value&gt;lower(firstName) like lower( #{examplePerson.firstName} "
+"+ &#39;%&#39; )&lt;/value&gt;\n"
+"        &lt;value&gt;lower(lastName) like lower( #{examplePerson.lastName} + "
+"&#39;%&#39; )&lt;/value&gt;\n"
+"    &lt;/framework:restrictions&gt;\n"
+"&lt;/framework:entity-query&gt;"
+msgstr ""
+"&lt;component name=\"examplePerson\" class=\"Person\"/&gt;\n"
+"        \n"
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\" \n"
+"                        order=\"lastName\" \n"
+"                        max-results=\"20\"&gt;\n"
+"    &lt;framework:restrictions&gt;\n"
+"        &lt;value&gt;lower(firstName) like lower( #{examplePerson.firstName} "
+"+ &#39;%&#39; )&lt;/value&gt;\n"
+"        &lt;value&gt;lower(lastName) like lower( #{examplePerson.lastName} + "
+"&#39;%&#39; )&lt;/value&gt;\n"
+"    &lt;/framework:restrictions&gt;\n"
+"&lt;/framework:entity-query&gt;"
+
+#. Tag: para
+#: Framework.xml:148
+#, no-c-format
+msgid "Notice the use of an \"example\" object."
+msgstr "上記の例ではexampleオブジェクトの使用について留意してください。"
+
+#. Tag: programlisting
+#: Framework.xml:151
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Search for people&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{examplePerson.firstName}"
+"\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{examplePerson.lastName}"
+"\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;&lt;h:commandButton value=\"Search\" action=\"/search.jsp\"/"
+"&gt;&lt;/div&gt;\n"
+"&lt;/h:form&gt;\n"
+"\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+"&lt;h1&gt;Search for people&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{examplePerson.firstName}"
+"\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{examplePerson.lastName}"
+"\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;&lt;h:commandButton value=\"Search\" action=\"/search.jsp\"/"
+"&gt;&lt;/div&gt;\n"
+"&lt;/h:form&gt;\n"
+"\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+
+#. Tag: para
+#: Framework.xml:152
+#, no-c-format
+msgid ""
+"The examples in this section have all shown reuse by configuration. However, "
+"reuse by extension is equally possible for Query objects."
+msgstr ""
+"ここの例ではコンフィギュレーションによる再利用を示していますが、Queryオブジェ"
+"クトの再利用は機能を拡張して行う事も同様に可能です。"
+
+#. Tag: title
+#: Framework.xml:158
+#, no-c-format
+msgid "Controller objects"
+msgstr "Controllerオブジェクト"
+
+#. Tag: para
+#: Framework.xml:159
+#, no-c-format
+msgid ""
+"A totally optional part of the Seam Application Framework is the class "
+"<literal>Controller</literal> and its subclasses <literal>EntityController</"
+"literal><literal>HibernateEntityController</literal> and "
+"<literal>BusinessProcessController</literal>. These classes provide nothing "
+"more than some convenience methods for access to commonly used built-in "
+"components and methods of built-in components. They help save a few "
+"keystrokes (characters can add up!) and provide a great launchpad for new "
+"users to explore the rich functionality built in to Seam."
+msgstr ""
+"Seamアプリケーションフレームワークのオプショナルなクラスとして、"
+"<literal>Controller</literal>と、そのサブクラスとして、 "
+"<literal>EntityController</literal>、 <literal>HibernateEntityController</"
+"literal> と<literal>BusinessProcessController</literal>があります。 これらの"
+"クラスは、一般に利用されるコンポーネントのメソッドに対する、少し便利なアクセ"
+"ス方法を提供しています。 これらは、新しいユーザがSeamに組み込まれた豊富な機能"
+"を探検するための出発点を提供し、また若干のコード量の削減に貢献します。"
+
+#. Tag: para
+#: Framework.xml:162
+#, no-c-format
+msgid ""
+"For example, here is what <literal>RegisterAction</literal> from the Seam "
+"registration example would look like:"
+msgstr ""
+"例として、SeamのRegistrationの例の<literal>RegisterAction</literal>をSeamアプ"
+"リケーションフレームワークで書き直すと以下のようになります。"
+
+#. Tag: programlisting
+#: Framework.xml:165
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"register\")\n"
+"public class RegisterAction extends EntityController implements Register\n"
+"{\n"
+"\n"
+"   @In private User user;\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = createQuery(\"select u.username from User u where u."
+"username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getResultList();\n"
+"      \n"
+"      if ( existing.size()==0 )\n"
+"      {\n"
+"         persist(user);\n"
+"         info(\"Registered new user #{user.username}\");\n"
+"         return \"/registered.jspx\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         addFacesMessage(\"User #{user.username} already exists\");\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+"@Stateless\n"
+"@Name(\"register\")\n"
+"public class RegisterAction extends EntityController implements Register\n"
+"{\n"
+"\n"
+"   @In private User user;\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = createQuery(\"select u.username from User u where u."
+"username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getResultList();\n"
+"      \n"
+"      if ( existing.size()==0 )\n"
+"      {\n"
+"         persist(user);\n"
+"         info(\"Registered new user #{user.username}\");\n"
+"         return \"/registered.jspx\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         addFacesMessage(\"User #{user.username} already exists\");\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+
+#. Tag: para
+#: Framework.xml:166
+#, no-c-format
+msgid "As you can see, its not an earthshattering improvement..."
+msgstr "ご覧のように、びっくりするような改善にはなりません、、、。"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Gettingstarted.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Gettingstarted.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Gettingstarted.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1098 @@
+# translation of Gettingstarted.po to Japanese
+# Noriko Mizumoto <noriko at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Gettingstarted\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-30 01:52+0000\n"
+"PO-Revision-Date: 2007-10-30 15:28+1000\n"
+"Last-Translator: Noriko Mizumoto <noriko at redhat.com>\n"
+"Language-Team: Japanese <fedora-trans-ja at redhat.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Gettingstarted.xml:6
+#, no-c-format
+msgid "Getting started with Seam, using seam-gen"
+msgstr "seam-gen を使って Seam を始めよう"
+
+#. Tag: para
+#: Gettingstarted.xml:7
+#, no-c-format
+msgid ""
+"The Seam distribution includes a command line utility that makes it really "
+"easy to set up an Eclipse project, generate some simple Seam skeleton code, "
+"and reverse engineer an application from a pre-existing database."
+msgstr ""
+"Seam ディストリビューションは、コマンドラインユーティリティを含んでおり、 "
+"Eclipse プロジェクトのセットアップ、 簡単な Seam のスケルトンコードの生成、 "
+"既存データベースからアプリケーションのリバースエンジニアリングをとても簡単に"
+"します。"
+
+#. Tag: para
+#: Gettingstarted.xml:10
+#, no-c-format
+msgid ""
+"This is the easy way to get your feet wet with Seam, and gives you some "
+"ammunition for next time you find yourself trapped in an elevator with one "
+"of those tedious Ruby guys ranting about how great and wonderful his new toy "
+"is for building totally trivial applications that put things in databases."
+msgstr ""
+"これは、Seam 入門として良い方法です。 そして、状態をデータベースに保管すると"
+"てもつまらないアプリケーションを構築するために、 新しいおもちゃがどれほどすば"
+"らしいかを大げさに話す退屈な Ruby 野郎の 1 人に次にエレベータの中で捕まったと"
+"わかった時のために、 攻撃材料を与えてくれます。"
+
+#. Tag: para
+#: Gettingstarted.xml:13
+#, no-c-format
+msgid ""
+"In this release, seam-gen works best for people with JBoss AS. You can use "
+"the generated project with other J2EE or Java EE 5 application servers by "
+"making a few manual changes to the project configuration."
+msgstr ""
+"このリリースでは、seam-gen は JBoss AS で使用するのが最良です。 プロジェクト"
+"設定をマニュアルで少し変更するだけで他の J2EE や Java 5 アプリケーションサー"
+"バ用に生成されたプロジェクトも使用可能です。"
+
+#. Tag: para
+#: Gettingstarted.xml:16
+#, no-c-format
+msgid ""
+"You <emphasis>can</emphasis> use seam-gen without Eclipse, but in this "
+"tutorial, we want to show you how to use it in conjunction with Eclipse for "
+"debugging and integration testing. If you don&#39;t want to install Eclipse, "
+"you can still follow along with this tutorial&mdash;all steps can be "
+"peformed from the command line."
+msgstr ""
+"Eclipse がなくても seam-gen は<emphasis>使用可能</emphasis>ですが、 この"
+"チュートリアルでは、Eclipse を併用してデバッグや統合テストを行う方法を示した"
+"いと思います。 Eclipse をインストールしたくない方も、 このチュートリアルを続"
+"けることができます &mdash; コマンドラインからすべてのステップは実行可能です。"
+
+#. Tag: para
+#: Gettingstarted.xml:19
+#, no-c-format
+msgid ""
+"Seam-gen is basically just a big ugly Ant script wrapped around Hibernate "
+"Tools, together with some templates. Which means it is easy to customize if "
+"you need to."
+msgstr ""
+"Seam-gen は、簡単に言ってしまえば、テンプレートと共に Hibernate Tools をラッ"
+"ピングした大きく見苦しい Ant スクリプトです。 これは、必要であれば簡単にカス"
+"タマイズできることを意味します。"
+
+#. Tag: title
+#: Gettingstarted.xml:23
+#, no-c-format
+msgid "Before you start"
+msgstr "始める前に"
+
+#. Tag: para
+#: Gettingstarted.xml:24
+#, no-c-format
+msgid ""
+"Make sure you have JDK 5 or JDK 6, JBoss AS 4.0.5 and Ant 1.6, along with "
+"recent versions of Eclipse, the JBoss IDE plugin for Eclipse and the TestNG "
+"plugin for Eclipse correctly installed before starting. Add your JBoss "
+"installation to the JBoss Server View in Eclipse. Start JBoss in debug mode. "
+"Finally, start a command prompt in the directory where you unzipped the Seam "
+"distribution."
+msgstr ""
+"始める前に、JDK 5 または JDK 6 とJBoss AS 4.0.5 と Ant 1.6、そして、それに合"
+"う Eclipse 用の JBoss IDE プラグイン と TestNG プラグインがインストールされて"
+"いることを確認してください。 Eclipse の JBoss サーバビューに JBoss 設定を追加"
+"してください。 デバッグモードで JBoss を起動してください。 最後に、Seam ディ"
+"ストリビューションを展開したディレクトリで、 コマンドプロンプト起動してくださ"
+"い。"
+
+#. Tag: para
+#: Gettingstarted.xml:27
+#, no-c-format
+msgid ""
+"JBoss has sophisticated support for hot re-deployment of WARs and EARs. "
+"Unfortunately, due to bugs in the JVM, repeated redeployment of an EAR&mdash;"
+"which is common during development&mdash;eventually causes the JVM to run "
+"out of perm gen space. For this reason, we recommend running JBoss in a JVM "
+"with a large perm gen space at development time. If you&#39;re running JBoss "
+"from JBoss IDE, you can configure this in the server launch configuration, "
+"under \"VM arguments\". We suggest the following values:"
+msgstr ""
+"JBoss には WAR や EAR のホット再デプロイメントに優れたサポートがあります。 残"
+"念ながら、 JVM にバグがあるため、 &mdash; 開発段階では一般的な &mdash; EAR の"
+"再デプロイメントを繰り返すと、最終的には JVM が perm gen スペースを使い果たし"
+"てしまうことになります。 この理由により、デプロイメント時には perm gen space "
+"を大きく確保した JVM で JBoss を稼動させることを推奨します。 JBoss IDE から "
+"JBoss を稼動させる場合は、 「VM 引数」の下にあるサーバ起動設定でこれを設定す"
+"ることができます。 以下のような値がよいでしょう。"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:30
+#, no-c-format
+msgid "-Xms512m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512"
+msgstr "-Xms512m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512"
+
+#. Tag: para
+#: Gettingstarted.xml:31
+#, no-c-format
+msgid ""
+"If you don&#39;t have so much memory available, the following is our minimum "
+"recommendation:"
+msgstr "十分なメモリがないとすると、以下が最小の推奨値です。"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:34
+#, no-c-format
+msgid "-Xms256m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=256"
+msgstr "-Xms256m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=256"
+
+#. Tag: para
+#: Gettingstarted.xml:35
+#, no-c-format
+msgid ""
+"If you&#39;re running JBoss from the commandline, you can configure the JVM "
+"options in <literal>bin/run.conf</literal>."
+msgstr ""
+"コマンドラインから JBoss を起動しているならば、 <literal>bin/run.conf</"
+"literal> の JVM オプション設定が可能です。"
+
+#. Tag: para
+#: Gettingstarted.xml:38
+#, no-c-format
+msgid ""
+"If you don&#39;t want to bother with this stuff now, you don&#39;t have "
+"to&mdash;come back to it later, when you get your first "
+"<literal>OutOfMemoryException</literal>."
+msgstr ""
+"今すぐに変更を行いたくない場合は特に行う必要はありません &mdash; "
+"<literal>OutOfMemoryException</literal> が発生した時点で対処してください。"
+
+#. Tag: title
+#: Gettingstarted.xml:44
+#, no-c-format
+msgid "Setting up a new Eclipse project"
+msgstr "新しい Eclipse プロジェクトのセットアップ"
+
+#. Tag: para
+#: Gettingstarted.xml:45
+#, no-c-format
+msgid ""
+"The first thing we need to do is configure seam-gen for your environment: "
+"JBoss AS installation directory, Eclipse workspace, and database connection. "
+"It&#39;s easy, just type:"
+msgstr ""
+"最初にすべきことは、あなたの環境用に seam-gen を設定することです。 ( JBoss "
+"AS インストールディレクトリ、Eclipse ワークスペース、 データベースコネクショ"
+"ン ) それは簡単です。単純にタイプしてください。"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:48
+#, no-c-format
+msgid ""
+"cd jboss-seam-1.1.x\n"
+"seam setup"
+msgstr ""
+"cd jboss-seam-1.1.x\n"
+"seam setup"
+
+#. Tag: para
+#: Gettingstarted.xml:49
+#, no-c-format
+msgid "And you will be prompted for the needed information:"
+msgstr "以下のように必要な情報の入力を要求されるでしょう。"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:52
+#, no-c-format
+msgid ""
+"C:\\Projects\\jboss-seam&gt;seam setup\n"
+"Buildfile: C:\\Projects\\jboss-seam\\seam-gen\\build.xml\n"
+"\n"
+"setup:\n"
+"    [echo] Welcome to seam-gen :-)\n"
+"    [input] Enter your Java project workspace [C:/Projects]\n"
+"\n"
+"    [input] Enter your JBoss home directory [C:/Program Files/jboss-4.0.5."
+"GA]\n"
+"\n"
+"    [input] Enter the project name [myproject]\n"
+"helloworld\n"
+"    [input] Is this project deployed as an EAR (with EJB components) or a "
+"WAR \n"
+"       (with no EJB support) [ear] (ear,war,)\n"
+"\n"
+"    [input] Enter the Java package name for your session beans [com.mydomain."
+"helloworld]\n"
+"org.jboss.helloworld\n"
+"    [input] Enter the Java package name for your entity beans [org.jboss."
+"helloworld]\n"
+"\n"
+"    [input] Enter the Java package name for your test cases [org.jboss."
+"helloworld.test]\n"
+"\n"
+"    [input] What kind of database are you using? [hsql] \n"
+"    (hsql,mysql,oracle,postgres,mssql,db2,sybase,)\n"
+"mysql\n"
+"    [input] Enter the Hibernate dialect for your database [org.hibernate."
+"dialect.MySQLDialect]\n"
+"\n"
+"    [input] Enter the filesystem path to the JDBC driver jar [lib/hsqldb."
+"jar]\n"
+"../../mysql-connector.jar\n"
+"    [input] Enter JDBC driver class for your database [com.mysql.jdbc."
+"Driver]\n"
+"\n"
+"    [input] Enter the JDBC URL for your database [jdbc:mysql:///test]\n"
+"\n"
+"    [input] Enter database username [sa]\n"
+"gavin\n"
+"    [input] Enter database password []\n"
+"\n"
+"    [input] Are you working with tables that already exist in the database? "
+"[n] (y,n,)\n"
+"y\n"
+"    [input] Do you want to drop and recreate the database tables and data in "
+"import.sql \n"
+"    each time you deploy? [n] (y,n,)\n"
+"n\n"
+"[propertyfile] Creating new property file: C:\\Projects\\jboss-seam\\seam-gen"
+"\\build.properties\n"
+"     [echo] Installing JDBC driver jar to JBoss server\n"
+"     [echo] Type &#39;seam new-project&#39; to create the new project\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 1 minute 17 seconds\n"
+"C:\\Projects\\jboss-seam&gt;"
+msgstr ""
+"C:\\Projects\\jboss-seam&gt;seam setup\n"
+"Buildfile: C:\\Projects\\jboss-seam\\seam-gen\\build.xml\n"
+"\n"
+"setup:\n"
+"    [echo] Welcome to seam-gen :-)\n"
+"    [input] Enter your Java project workspace [C:/Projects]\n"
+"\n"
+"    [input] Enter your JBoss home directory [C:/Program Files/jboss-4.0.5."
+"GA]\n"
+"\n"
+"    [input] Enter the project name [myproject]\n"
+"helloworld\n"
+"    [input] Is this project deployed as an EAR (with EJB components) or a "
+"WAR \n"
+"       (with no EJB support) [ear] (ear,war,)\n"
+"\n"
+"    [input] Enter the Java package name for your session beans [com.mydomain."
+"helloworld]\n"
+"org.jboss.helloworld\n"
+"    [input] Enter the Java package name for your entity beans [org.jboss."
+"helloworld]\n"
+"\n"
+"    [input] Enter the Java package name for your test cases [org.jboss."
+"helloworld.test]\n"
+"\n"
+"    [input] What kind of database are you using? [hsql] \n"
+"    (hsql,mysql,oracle,postgres,mssql,db2,sybase,)\n"
+"mysql\n"
+"    [input] Enter the Hibernate dialect for your database [org.hibernate."
+"dialect.MySQLDialect]\n"
+"\n"
+"    [input] Enter the filesystem path to the JDBC driver jar [lib/hsqldb."
+"jar]\n"
+"../../mysql-connector.jar\n"
+"    [input] Enter JDBC driver class for your database [com.mysql.jdbc."
+"Driver]\n"
+"\n"
+"    [input] Enter the JDBC URL for your database [jdbc:mysql:///test]\n"
+"\n"
+"    [input] Enter database username [sa]\n"
+"gavin\n"
+"    [input] Enter database password []\n"
+"\n"
+"    [input] Are you working with tables that already exist in the database? "
+"[n] (y,n,)\n"
+"y\n"
+"    [input] Do you want to drop and recreate the database tables and data in "
+"import.sql \n"
+"    each time you deploy? [n] (y,n,)\n"
+"n\n"
+"[propertyfile] Creating new property file: C:\\Projects\\jboss-seam\\seam-gen"
+"\\build.properties\n"
+"     [echo] Installing JDBC driver jar to JBoss server\n"
+"     [echo] Type &#39;seam new-project&#39; to create the new project\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 1 minute 17 seconds\n"
+"C:\\Projects\\jboss-seam&gt;"
+
+#. Tag: para
+#: Gettingstarted.xml:53
+#, no-c-format
+msgid ""
+"The tool provides sensible defaults, which you can accept by just pressing "
+"enter at the prompt."
+msgstr ""
+"このツールは気の利いたデフォルト値を提供します。 プロンプトに対して単に "
+"enter を押すだけで大丈夫です。"
+
+#. Tag: para
+#: Gettingstarted.xml:56
+#, no-c-format
+msgid ""
+"The most important choice you need to make is between EAR deployment and WAR "
+"deployment of your project. EAR projects support EJB 3.0 and require Java EE "
+"5. WAR projects do not support EJB 3.0, but may be deployed to a J2EE "
+"environment. The packaging of a WAR is also simpler to understand. If you "
+"installed JBoss with the ejb3 profile, choose <literal>ear</literal>. "
+"Otherwise, choose <literal>war</literal>. We&#39;ll assume that you&#39;ve "
+"chosen an EAR deployment for the rest of the tutorial, but you can follow "
+"exactly the same steps for a WAR deployment."
+msgstr ""
+"必須となる最重要な選択は、プロジェクトのEAR形式デプロイとWAR形式デプロイのど"
+"ちらにするかです。 EAR プロジェクトは EJB3.0 に対応し、 Java EE 5 が必要で"
+"す。 WAR プロジェクトは EJB3.0 には対応しませんがおそらく J2EE 環境にデプロイ"
+"メントが可能でしょう。 WARは EAR に比べシンプルで理解しやすいパッケージで"
+"す。 JBoss を ejb3 プロファイルでインストールした場合は <literal>ear</"
+"literal> を選択してください。 これ以外は <literal>war</literal> を選択してく"
+"ださい。 ここからは、 このチュートリアルは EAR デプロイメントが選択されたと仮"
+"定しますが、 WAR デプロイメントの場合もまったく同じステップで進むことができま"
+"す。"
+
+#. Tag: para
+#: Gettingstarted.xml:59
+#, no-c-format
+msgid ""
+"If you are working with an existing data model, make sure you tell seam-gen "
+"that the tables already exist in the database."
+msgstr ""
+"既存のデータモデルで作業をしている場合、 データベースに既にテーブルが存在して"
+"いることを seam-gen に必ず知らせてください。"
+
+#. Tag: para
+#: Gettingstarted.xml:62
+#, no-c-format
+msgid ""
+"The settings are stored in <literal>seam-gen/build.properties</literal>, but "
+"you can also modify them simply by running <literal>seam setup</literal> a "
+"second time."
+msgstr ""
+"設定は <literal>seam-gen/build.properties</literal> に格納されていますが、 2 "
+"度目に <literal>seam setup</literal> を実行することで変更することも可能です。"
+
+#. Tag: para
+#: Gettingstarted.xml:65
+#, no-c-format
+msgid ""
+"Now we can create a new project in our Eclipse workspace directory, by "
+"typing:"
+msgstr ""
+"以下のようにタイプすることで、Eclipse ワークスペースディレクトリに、 新規プロ"
+"ジェクトの生成が可能です。"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:68
+#, no-c-format
+msgid "seam new-project"
+msgstr "seam new-project"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:69
+#, no-c-format
+msgid ""
+"C:\\Projects\\jboss-seam&gt;seam new-project\n"
+"Buildfile: C:\\Projects\\jboss-seam\\seam-gen\\build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"copy-lib:\n"
+"     [echo] Copying project jars ...\n"
+"     [copy] Copying 32 files to C:\\Projects\\helloworld\\lib\n"
+"     [copy] Copying 9 files to C:\\Projects\\helloworld\\embedded-ejb\n"
+"\n"
+"file-copy-wtp:\n"
+"\n"
+"file-copy:\n"
+"     [echo] Copying project resources ...\n"
+"     [copy] Copying 12 files to C:\\Projects\\helloworld\\resources\n"
+"     [copy] Copying 1 file to C:\\Projects\\helloworld\\resources\n"
+"     [copy] Copying 5 files to C:\\Projects\\helloworld\\view\n"
+"     [copy] Copying 5 files to C:\\Projects\\helloworld\n"
+"    [mkdir] Created dir: C:\\Projects\\helloworld\\src\n"
+"\n"
+"new-project:\n"
+"     [echo] A new Seam project named &#39;helloworld&#39; was created in "
+"the /Users/gavin/Documents/workspace directory\n"
+"     [echo] Type &#39;seam explode&#39; and go to http://localhost:8080/"
+"helloworld\n"
+"     [echo] Eclipse Users: Add the project into Eclipse using File &gt; New "
+"&gt; Project and select General &gt; Project (not Java Project)\n"
+"     [echo] NetBeans Users: Open the project in NetBeans\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 7 seconds\n"
+"C:\\Projects\\jboss-seam&gt;"
+msgstr ""
+"C:\\Projects\\jboss-seam&gt;seam new-project\n"
+"Buildfile: C:\\Projects\\jboss-seam\\seam-gen\\build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"copy-lib:\n"
+"     [echo] Copying project jars ...\n"
+"     [copy] Copying 32 files to C:\\Projects\\helloworld\\lib\n"
+"     [copy] Copying 9 files to C:\\Projects\\helloworld\\embedded-ejb\n"
+"\n"
+"file-copy-wtp:\n"
+"\n"
+"file-copy:\n"
+"     [echo] Copying project resources ...\n"
+"     [copy] Copying 12 files to C:\\Projects\\helloworld\\resources\n"
+"     [copy] Copying 1 file to C:\\Projects\\helloworld\\resources\n"
+"     [copy] Copying 5 files to C:\\Projects\\helloworld\\view\n"
+"     [copy] Copying 5 files to C:\\Projects\\helloworld\n"
+"    [mkdir] Created dir: C:\\Projects\\helloworld\\src\n"
+"\n"
+"new-project:\n"
+"     [echo] A new Seam project named &#39;helloworld&#39; was created in "
+"the /Users/gavin/Documents/workspace directory\n"
+"     [echo] Type &#39;seam explode&#39; and go to http://localhost:8080/"
+"helloworld\n"
+"     [echo] Eclipse Users: Add the project into Eclipse using File &gt; New "
+"&gt; Project and select General &gt; Project (not Java Project)\n"
+"     [echo] NetBeans Users: Open the project in NetBeans\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 7 seconds\n"
+"C:\\Projects\\jboss-seam&gt;"
+
+#. Tag: para
+#: Gettingstarted.xml:70
+#, no-c-format
+msgid ""
+"This copies the Seam jars, dependent jars and the JDBC driver jar to a new "
+"Eclipse project, and generates all needed resources and configuration files, "
+"a facelets template file and stylesheet, along with Eclipse metadata and an "
+"Ant build script. The Eclipse project will be automatically deployed to an "
+"exploded directory structure in JBoss AS as soon as you add the project "
+"using <literal>New -&gt; Project... -&gt; General -&gt; Project -&gt; Next</"
+"literal>, typing the <literal>Project name</literal> (<literal>helloworld</"
+"literal> in this case), and then clicking <literal>Finish</literal>. Do not "
+"select <literal>Java Project</literal> from the New Project wizard."
+msgstr ""
+"Seam jar、依存する jar そして JDBC ドライバ jar を新しい Eclipse プロジェクト"
+"にコピーし、 Eclipse メタデータおよび Ant ビルドスクリプトに従って必要となる"
+"すべてのリソースと設定ファイル群、 facelets テンプレートファイル、 スタイル"
+"シートを生成します。 <literal>新規 -&gt; プロジェクト... -&gt; 一般 -&gt; プ"
+"ロジェクト -&gt; 次へ</literal> の手順でプロジェクトを追加し、 <literal>プロ"
+"ジェクト名</literal> (この場合、 <literal>helloworld</literal>) を入力して、 "
+"<literal>完了</literal> をクリックすれば、 Eclipse プロジェクトは自動的に展開"
+"された JBoss AS ディレクトリ構造にデプロイされます。 新規プロジェクトウィザー"
+"ドから <literal>Java プロジェクト</literal> は選択しないでください。"
+
+#. Tag: para
+#: Gettingstarted.xml:73
+#, no-c-format
+msgid ""
+"If your default JDK in Eclipse is not a Java SE 5 or Java SE 6 JDK, you will "
+"need to select a Java SE 5 compliant JDK using <literal>Project -&gt; "
+"Properties -&gt; Java Compiler</literal>."
+msgstr ""
+"Eclipse のデフォルト JDK が SE 5 あるいは Java SE 6 JDK でなければ、 "
+"<literal>プロジェクト -&gt; プロパティ -&gt; Java コンパイラ</literal> の手順"
+"で、Java SE 5 互換の JDK を選ぶ必要があります。"
+
+#. Tag: para
+#: Gettingstarted.xml:76
+#, no-c-format
+msgid ""
+"Alternatively, you can deploy the project from outside Eclipse by typing "
+"<literal>seam explode</literal>."
+msgstr ""
+"別の方法として、Eclise の外部から <literal>seam explode</literal> とタイプす"
+"ることでプロジェクトのデプロイが可能です。 <literal>seam explode</literal>."
+
+#. Tag: para
+#: Gettingstarted.xml:79
+#, no-c-format
+msgid ""
+"Go to <literal>http://localhost:8080/helloworld</literal> to see a welcome "
+"page. This is a facelets page, <literal>view/home.xhtml</literal>, using the "
+"template <literal>view/layout/template.xhtml</literal>. You can edit this "
+"page, or the template, in eclipse, and see the results "
+"<emphasis>immediately</emphasis>, by clicking refresh in your browser."
+msgstr ""
+"welcome page を見るには、<literal>http://localhost:8080/helloworld</literal> "
+"に進んでください。 これは、テンプレート <literal>view/layout/template.xhtml</"
+"literal> を使用した facelets page, <literal>view/home.xhtml</literal> です。 "
+"Eclipse からこのページやテンプレートの編集が可能です。 そしてブラウザを更新す"
+"ることで<emphasis>即座に</emphasis>結果を見ることが可能です。"
+
+#. Tag: para
+#: Gettingstarted.xml:82
+#, no-c-format
+msgid ""
+"Don&#39;t get scared by the XML configuration documents that were generated "
+"into the project directory. They are mostly standard Java EE stuff, the "
+"stuff you need to create once and then never look at again, and they are 90% "
+"the same between all Seam projects. (They are so easy to write that even "
+"seam-gen can do it.)"
+msgstr ""
+"プロジェクトディレクトリに XML 設定ドキュメントが生成されますがびっくりしない"
+"でください。 これらのほとんどが標準 Java EE に関するもので、 1 度生成したら "
+"2 度と見る必要のないものです。 全 Seam プロジェクトで 90% は同じものです。 "
+"(seam-gen が書けるほどですから記述が非常に簡単なドキュメントです。)"
+
+#. Tag: para
+#: Gettingstarted.xml:85
+#, no-c-format
+msgid ""
+"The generated project includes three database and persistence "
+"configurations. The <literal>jboss-beans.xml</literal>, <literal>persistence-"
+"test.xml</literal> and <literal>import-test.sql</literal> files are used "
+"when running the TestNG unit tests against HSQLDB. The database schema and "
+"the test data in <literal>import-test.sql</literal> is always exported to "
+"the database before running tests. The <literal>myproject-dev-ds.xml</"
+"literal>, <literal>persistence-dev.xml</literal>and <literal>import-dev.sql</"
+"literal> files are for use when deploying the application to your "
+"development database. The schema might be exported automatically at "
+"deployment, depending upon whether you told seam-gen that you are working "
+"with an existing database. The <literal>myproject-prod-ds.xml</literal>, "
+"<literal>persistence-prod.xml</literal>and <literal>import-prod.sql</"
+"literal> files are for use when deploying the application to your production "
+"database. The schema is not exported automatically at deployment."
+msgstr ""
+"生成されたプロジェクトは3つのデータベースと永続性設定を含んでいます。 HSQLDB "
+"に対して TestNG ユニットテストを実行する場合に、 <literal>jboss-beans.xml</"
+"literal>、 <literal>persistence-test.xml</literal>、 そして <literal>import-"
+"test.sql</literal> ファイルが使用されます。 <literal>import-test.sql</"
+"literal> 中のデータベーススキーマとテストデータは、 常にテストが実行される前"
+"にデータベースにエキスポートされます。 <literal>myproject-dev-ds.xml</"
+"literal>、 <literal>persistence-dev.xml</literal> そして <literal>import-dev."
+"sql</literal> ファイルは、 アプリケーションを開発データベースにデプロイすると"
+"きに使用します。 seam-gen に既存データベースで作業しているかを伝えるかどうか"
+"によって、 スキーマはデプロイ時に自動的にエキスポートされる場合があります。 "
+"<literal>myproject-prod-ds.xml</literal>、 <literal>persistence-prod.xml</"
+"literal> そして <literal>import-prod.sql</literal> ファイルは、 本番環境デー"
+"タベースにアプリケーションをデプロイするときに使用します。 デプロイ時にスキー"
+"マは自動的にエキスポートされません。"
+
+#. Tag: title
+#: Gettingstarted.xml:91
+#, no-c-format
+msgid "Creating a new action"
+msgstr "新規のアクションを生成する"
+
+#. Tag: para
+#: Gettingstarted.xml:92
+#, no-c-format
+msgid ""
+"If you&#39;re used to traditional action-style web frameworks, you&#39;re "
+"probably wondering how you can create a simple webpage with a stateless "
+"action method in Java. If you type:"
+msgstr ""
+"従来のアクションスタイルの Web フレームワークに慣れている場合、 おそらく、ど"
+"のように Java のステートレスアクションメソッドで簡単なWebページが生成すること"
+"ができるのだろうかと思われていると思います。 以下のように入力すると、"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:95
+#, no-c-format
+msgid "seam new-action"
+msgstr "seam new-action"
+
+#. Tag: para
+#: Gettingstarted.xml:96
+#, no-c-format
+msgid ""
+"Seam will prompt for some information, and generate a new facelets page and "
+"Seam component for your project."
+msgstr ""
+"Seam は情報のために質問をしてきます。そして、プロジェクトのための新しい "
+"facelets page や Seam コンポーネントを生成します。"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:99
+#, no-c-format
+msgid ""
+"C:\\Projects\\jboss-seam&gt;seam new-action ping\n"
+"Buildfile: C:\\Projects\\jboss-seam\\seam-gen\\build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"action-input:\n"
+"    [input] Enter the Seam component name\n"
+"ping\n"
+"    [input] Enter the local interface name [Ping]\n"
+"\n"
+"    [input] Enter the bean class name [PingBean]\n"
+"\n"
+"    [input] Enter the action method name [ping]\n"
+"\n"
+"    [input] Enter the page name [ping]\n"
+"\n"
+"\n"
+"setup-filters:\n"
+"\n"
+"new-action:\n"
+"     [echo] Creating a new stateless session bean component with an action "
+"method\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\\test\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\\test\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\view\n"
+"     [echo] Type &#39;seam restart&#39; and go to \n"
+"     http://localhost:8080/helloworld/ping.seam\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 13 seconds\n"
+"C:\\Projects\\jboss-seam&gt;"
+msgstr ""
+"C:\\Projects\\jboss-seam&gt;seam new-action ping\n"
+"Buildfile: C:\\Projects\\jboss-seam\\seam-gen\\build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"action-input:\n"
+"    [input] Enter the Seam component name\n"
+"ping\n"
+"    [input] Enter the local interface name [Ping]\n"
+"\n"
+"    [input] Enter the bean class name [PingBean]\n"
+"\n"
+"    [input] Enter the action method name [ping]\n"
+"\n"
+"    [input] Enter the page name [ping]\n"
+"\n"
+"\n"
+"setup-filters:\n"
+"\n"
+"new-action:\n"
+"     [echo] Creating a new stateless session bean component with an action "
+"method\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\\test\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\\test\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\view\n"
+"     [echo] Type &#39;seam restart&#39; and go to \n"
+"     http://localhost:8080/helloworld/ping.seam\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 13 seconds\n"
+"C:\\Projects\\jboss-seam&gt;"
+
+#. Tag: para
+#: Gettingstarted.xml:100
+#, no-c-format
+msgid ""
+"Because we&#39;ve added a new Seam component, we need to restart the "
+"exploded directory deployment. You can do this by typing <literal>seam "
+"restart</literal>, or by running the <literal>restart</literal> target in "
+"the generated project <literal>build.xml</literal> file from inside Eclipse. "
+"Another way to force a restart is to edit the file <literal>resources/META-"
+"INF/application.xml</literal> in Eclipse. <emphasis>Note that you do not "
+"need to restart JBoss each time you change the application.</emphasis>"
+msgstr ""
+"新しい Seam コンポーネントを追加したので、 展開したディレクトリのデプロイを再"
+"起動する必要があります。 <literal>seam restart</literal> と入力するか、 "
+"Eclipse 内から生成されたプロジェクト <literal>build.xml</literal> ファイル "
+"の <literal>restart</literal> ターゲットを実行することで行うことができます。 "
+"再起動を強制する別の方法は、 Eclipse の <literal>resources/META-INF/"
+"application.xml</literal> ファイルを編集することです。 <emphasis>アプリケー"
+"ションを変更するたびに JBoss を再起動する必要はないことに留意してください。 "
+"</emphasis>"
+
+#. Tag: para
+#: Gettingstarted.xml:103
+#, no-c-format
+msgid ""
+"Now go to <literal>http://localhost:8080/helloworld/ping.seam</literal> and "
+"click the button. You can see the code behind this action by looking in the "
+"project <literal>src</literal> directory. Put a breakpoint in the "
+"<literal>ping()</literal> method, and click the button again."
+msgstr ""
+"さあ、<literal>http://localhost:8080/helloworld/ping.seam</literal> に進ん"
+"で、クリックボタンを押してください。 プロジェクトの <literal>src</literal> "
+"directory ディレクトリを見れば、このアクションに隠されたコードを見ることがで"
+"きます。 <literal>ping()</literal> メソッドにブレークポイントを置いて、 ク"
+"リックボタンを押してください。"
+
+#. Tag: para
+#: Gettingstarted.xml:106
+#, no-c-format
+msgid ""
+"Finally, locate the <literal>PingTest.xml</literal> file in the test package "
+"and run the integration tests using the TestNG plugin for Eclipse. "
+"Alternatively, run the tests using <literal>seam test</literal> or the "
+"<literal>test</literal> target of the generated build."
+msgstr ""
+"最後に、<literal>PingTest.xml</literal> ファイルを test パッケージに配置し、 "
+"Eclipse の TestNG プラグインを使用して統合テストを実行します。 別な方法とし"
+"て、 <literal>seam test</literal> を使用してテストを起動するか、 生成されたビ"
+"ルドから <literal>test</literal> ターゲットを起動します。"
+
+#. Tag: title
+#: Gettingstarted.xml:112
+#, no-c-format
+msgid "Creating a form with an action"
+msgstr "アクションのあるフォームを生成する"
+
+#. Tag: para
+#: Gettingstarted.xml:113
+#, no-c-format
+msgid "The next step is to create a form. Type:"
+msgstr "次のステップは、以下のようにフォームを生成することです。"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:116
+#, no-c-format
+msgid "seam new-form"
+msgstr "seam new-form"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:117
+#, no-c-format
+msgid ""
+"C:\\Projects\\jboss-seam&gt;seam new-form\n"
+"Buildfile: C:\\Projects\\jboss-seam\\seam-gen\\build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"action-input:\n"
+"    [input] Enter the Seam component name\n"
+"hello\n"
+"    [input] Enter the local interface name [Hello]\n"
+"\n"
+"    [input] Enter the bean class name [HelloBean]\n"
+"\n"
+"    [input] Enter the action method name [hello]\n"
+"\n"
+"    [input] Enter the page name [hello]\n"
+"\n"
+"\n"
+"setup-filters:\n"
+"\n"
+"new-form:\n"
+"     [echo] Creating a new stateful session bean component with an action "
+"method\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\\test\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\view\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\\test\n"
+"     [echo] Type &#39;seam restart&#39; and go to http://localhost:8080/"
+"hello/hello.seam\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 5 seconds\n"
+"C:\\Projects\\jboss-seam&gt;"
+msgstr ""
+"C:\\Projects\\jboss-seam&gt;seam new-form\n"
+"Buildfile: C:\\Projects\\jboss-seam\\seam-gen\\build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"action-input:\n"
+"    [input] Enter the Seam component name\n"
+"hello\n"
+"    [input] Enter the local interface name [Hello]\n"
+"\n"
+"    [input] Enter the bean class name [HelloBean]\n"
+"\n"
+"    [input] Enter the action method name [hello]\n"
+"\n"
+"    [input] Enter the page name [hello]\n"
+"\n"
+"\n"
+"setup-filters:\n"
+"\n"
+"new-form:\n"
+"     [echo] Creating a new stateful session bean component with an action "
+"method\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\\test\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\view\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\\test\n"
+"     [echo] Type &#39;seam restart&#39; and go to http://localhost:8080/"
+"hello/hello.seam\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 5 seconds\n"
+"C:\\Projects\\jboss-seam&gt;"
+
+#. Tag: para
+#: Gettingstarted.xml:118
+#, no-c-format
+msgid ""
+"Restart the application again, and go to <literal>http://localhost:8080/"
+"helloworld/hello.seam</literal>. Then take a look at the generated code. Run "
+"the test. Try adding some new fields to the form and Seam component "
+"(remember to restart the deploment each time you change the Java code)."
+msgstr ""
+"再びアプリケーションを再起動させ、 <literal>http://localhost:8080/helloworld/"
+"hello.seam</literal> に進みます。 生成されたコードを見てみましょう。 テストを"
+"実行します。 何か新しいフィールドをフォームと Seam コンポーネントに追加してみ"
+"ましょう。 (Java コードを変更したら常にデプロイを再起動することを忘れないよう"
+"にしてください。)"
+
+#. Tag: title
+#: Gettingstarted.xml:124
+#, no-c-format
+msgid "Generating an application from an existing database"
+msgstr "既存のデータベースからアプリケーションを自動生成する"
+
+#. Tag: para
+#: Gettingstarted.xml:125
+#, no-c-format
+msgid ""
+"Manually create some tables in your database. (If you need to switch to a "
+"different database, just run <literal>seam setup</literal> again.) Now type:"
+msgstr ""
+"手動でデータベースの中にテーブルを生成します。 (別のデータベースに切り替える"
+"必要がある場合はもう一度 <literal>seam setup</literal> を実行します。) ここで"
+"次のように入力します。"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:128
+#, no-c-format
+msgid "seam generate-entities"
+msgstr "seam generate-entities"
+
+#. Tag: para
+#: Gettingstarted.xml:129
+#, no-c-format
+msgid ""
+"Restart the deployment, and go to <literal>http://localhost:8080/helloworld</"
+"literal>. You can browse the database, edit existing objects, and create new "
+"objects. If you look at the generated code, you&#39;ll probably be amazed "
+"how simple it is! Seam was designed so that data access code is easy to "
+"write by hand, even for people who don&#39;t want to cheat by using seam-gen."
+msgstr ""
+"デプロイを再起動して、 <literal>http://localhost:8080/helloworld</literal> に"
+"進んでください。 データベースの参照、 既存オブジェクトの編集、 新しいオブジェ"
+"クトの生成が可能です。 生成されたコードを見ると、 おそらくあまりに簡単なのに"
+"驚かれたと思います。 Seam はデータアクセスコードが手作業で簡単に記述できるよ"
+"うに設計されたからです。 また seam-gen を使用して適当なことを行いたくないユー"
+"ザーにも適しています。"
+
+#. Tag: title
+#: Gettingstarted.xml:135
+#, no-c-format
+msgid "Deploying the application as an EAR"
+msgstr "EAR形式でアプリケーションをデプロイする"
+
+#. Tag: para
+#: Gettingstarted.xml:136
+#, no-c-format
+msgid ""
+"Finally, we want to be able to deploy the application using standard Java EE "
+"5 packaging. First, we need to remove the exploded directory by running "
+"<literal>seam unexplode</literal>. To deploy the EAR, we can type "
+"<literal>seam deploy</literal> at the command prompt, or run the "
+"<literal>deploy</literal> target of the generated project build script. You "
+"can undeploy using <literal>seam undeploy</literal> or the "
+"<literal>undeploy</literal> target."
+msgstr ""
+"最後に、 標準の Java EE 5 パッケージングを使用してアプリケーションをデプロイ"
+"できるようにしたいと思います。 まず、 <literal>seam unexplode</literal> を実"
+"行して展開したディレクトリを削除する必要があります。 EAR をデプロイするに"
+"は、 コマンドプロンプトで <literal>seam deploy</literal> を入力する、 あるい"
+"は生成されたプロジェクトの build スクリプトの <literal>deploy</literal> ター"
+"ゲットを実行します。 <literal>seam undeploy</literal> または "
+"<literal>undeploy</literal> ターゲットを使うとアンデプロイができます。"
+
+#. Tag: para
+#: Gettingstarted.xml:139
+#, no-c-format
+msgid ""
+"By default, the application will be deployed with the <emphasis>dev profile</"
+"emphasis>. The EAR will include the <literal>persistence-dev.xml</literal> "
+"and <literal>import-dev.sql</literal> files, and the <literal>myproject-dev-"
+"ds.xml</literal> file will be deployed. You can change the profile, and use "
+"the <emphasis>prod profile</emphasis>, by typing"
+msgstr ""
+"デフォルトでは、アプリケーションは <emphasis>dev profile</emphasis> でデプロ"
+"イされます。 EAR は <literal>persistence-dev.xml</literal> ファイルと "
+"<literal>import-dev.sql</literal> ファイルを含み、 <literal>myproject-dev-ds."
+"xml</literal> ファイルがデプロイされます。 プロファイルは変更可能で、 以下の"
+"ように入力して <emphasis>prod profile</emphasis> を使用します。"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:142
+#, no-c-format
+msgid "seam -Dprofile=prod deploy"
+msgstr "seam -Dprofile=prod deploy"
+
+#. Tag: para
+#: Gettingstarted.xml:143
+#, no-c-format
+msgid ""
+"You can even define new deployment profiles for your application. Just add "
+"appropriately named files to your project&mdash;for example, "
+"<literal>persistence-staging.xml</literal>, <literal>import-staging.sql</"
+"literal> and <literal>myproject-staging-ds.xml</literal>&mdash;and select "
+"the name of the profile using <literal>-Dprofile=staging</literal>."
+msgstr ""
+"アプリケーション用に新しいデプロイメントプロファイルを定義することもできま"
+"す。 プロジェクトに適切な名前が付いたファイルを追加します &mdash; 例えば、 "
+"<literal>persistence-staging.xml</literal>、 <literal>import-staging.sql</"
+"literal> と <literal>myproject-staging-ds.xml</literal> などです。 <literal>-"
+"Dprofile=staging</literal> を使ってプロファイルの名前を選択します。"
+
+#. Tag: title
+#: Gettingstarted.xml:149
+#, no-c-format
+msgid "Seam and incremental hot deployment"
+msgstr "Seam と増分ホットデプロイメント"
+
+#. Tag: para
+#: Gettingstarted.xml:150
+#, no-c-format
+msgid ""
+"When you deploy your Seam application as an exploded directory, you&#39;ll "
+"get some support for incremental hot deployment at development time. You "
+"need to enable debug mode in both Seam and Facelets, by adding this line to "
+"<literal>components.xml</literal>:"
+msgstr ""
+"展開されたディレクトリで Seam アプリケーションをデプロイする場合、 開発時にな"
+"んらかの増分ホットデプロイのサポートを受けるでしょう。 <literal>components."
+"xml</literal> に以下の行を追加することで、 Seam と Facelets の両方でデバッグ"
+"モードを有効にする必要があります。"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:153
+#, no-c-format
+msgid "&lt;core:init debug=\"true\"/&gt;"
+msgstr "&lt;core:init debug=\"true\"/&gt;"
+
+#. Tag: para
+#: Gettingstarted.xml:154
+#, no-c-format
+msgid ""
+"Now, the following files may be redeployed without requiring a full restart "
+"of the web application:"
+msgstr ""
+"以下のファイルは、 Webアプリケーションを完全に再起動することなく置き換えがさ"
+"れるかもしれません。"
+
+#. Tag: para
+#: Gettingstarted.xml:159
+#, no-c-format
+msgid "any facelets page"
+msgstr "facelets ページ"
+
+#. Tag: para
+#: Gettingstarted.xml:164
+#, no-c-format
+msgid "any <literal>pages.xml</literal> file"
+msgstr "<literal>pages.xml</literal> ファイル"
+
+#. Tag: para
+#: Gettingstarted.xml:169
+#, no-c-format
+msgid ""
+"But if we want to change any Java code, we still need to do a full restart "
+"of the application. (In JBoss this may be accomplished by touching the "
+"toplevel deployment descriptor: <literal>application.xml</literal> for an "
+"EAR deployment, or <literal>web.xml</literal> for a WAR deployment.)"
+msgstr ""
+"ただし、 いずれかの Java コードを変更する必要がある場合は、 アプリケーション"
+"を完全に再起動する必要があります。 (JBoss では、 トップレベルのデプロイメント"
+"記述子に手を入れることで行えるでしょう。 EAR デプロイメントなら "
+"<literal>application.xml</literal>、 WAR デプロイメントなら <literal>web."
+"xml</literal> です。)"
+
+#. Tag: para
+#: Gettingstarted.xml:172
+#, no-c-format
+msgid ""
+"But if you really want a fast edit/compile/test cycle, Seam supports "
+"incremental redeployment of JavaBean components. To make use of this "
+"functionality, you must deploy the JavaBean components into the <literal>WEB-"
+"INF/dev</literal> directory, so that they will be loaded by a special Seam "
+"classloader, instead of by the WAR or EAR classloader."
+msgstr ""
+"しかし、 早いペースの編集/コンパイル/テストのサイクルを望むならば、 Seam は "
+"JavaBean コンポーネントの増分再デプロイメントをサポートしています。 この機能"
+"を有効にするためには、 JavaBean コンポーネントを <literal>WEB-INF/dev</"
+"literal> ディレクトリにデプロイする必要があります。 その結果、コンポーネント"
+"は WAR あるいは EAR クラスローダではなく、 特殊な Seam クラスローダによって"
+"ロードされるようになります。"
+
+#. Tag: para
+#: Gettingstarted.xml:175
+#, no-c-format
+msgid "You need to be aware of the following limitations:"
+msgstr "以下の制約を知っている必要があります。"
+
+#. Tag: para
+#: Gettingstarted.xml:180
+#, no-c-format
+msgid ""
+"the components must be JavaBean components, they cannot be EJB3 beans (we "
+"are working on fixing this limitation)"
+msgstr ""
+"コンポーネントは JavaBean コンポーネントでなければならず、 EJB3 Bean は不可で"
+"す。 (この制約は修正中です。) "
+
+#. Tag: para
+#: Gettingstarted.xml:185
+#, no-c-format
+msgid "entities can never be hot-deloyed"
+msgstr "エンティティはホットデプロイできません。"
+
+#. Tag: para
+#: Gettingstarted.xml:190
+#, no-c-format
+msgid ""
+"components deployed via <literal>components.xml</literal> may not be hot-"
+"deployed"
+msgstr ""
+"<literal>components.xml</literal> でデプロイされたコンポーネントはホットデプ"
+"ロイできない場合があります。"
+
+#. Tag: para
+#: Gettingstarted.xml:195
+#, no-c-format
+msgid ""
+"the hot-deployable components will not be visible to any classes deployed "
+"outside of <literal>WEB-INF/dev</literal>"
+msgstr ""
+"ホットデプロイ可能なコンポーネントは、 <literal>WEB-INF/dev</literal> の外部"
+"にデプロイされたクラスからは見えません。"
+
+#. Tag: para
+#: Gettingstarted.xml:200
+#, no-c-format
+msgid "Seam debug mode must be enabled"
+msgstr "Seam デバックモードを有効にしなければなりません。"
+
+#. Tag: para
+#: Gettingstarted.xml:205
+#, no-c-format
+msgid ""
+"If you create a WAR project using seam-gen, incremental hot deployment is "
+"available out of the box for classes in the <literal>src/action</literal> "
+"source directory. However, seam-gen does not support incremental hot "
+"deployment for EAR projects."
+msgstr ""
+"seam-gen を使用して WAR プロジェクトを生成する場合、 増分ホットデプロイメント"
+"は、<literal>src/action</literal> ソースディレクトリにあるクラスにそのまま使"
+"用可能です。 しかしならが、 seam-gen は EAR プロジェクトに対する増分ホットデ"
+"プロイに対応していません。"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/I18n.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/I18n.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/I18n.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,677 @@
+# translation of I18n.po to Japanese
+# Noriko Mizumoto <noriko at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: I18n\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-30 01:52+0000\n"
+"PO-Revision-Date: 2007-10-30 15:40+1000\n"
+"Last-Translator: Noriko Mizumoto <noriko at redhat.com>\n"
+"Language-Team: Japanese <fedora-trans-ja at redhat.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: I18n.xml:6
+#, no-c-format
+msgid "Internationalization and themes"
+msgstr "国際化とテーマ"
+
+#. Tag: para
+#: I18n.xml:7
+#, no-c-format
+msgid ""
+"Seam makes it easy to build internationalized applications by providing "
+"several built-in components for handling multi-language UI messages."
+msgstr ""
+"多言語 UI メッセージを扱う組み込みコンポーネントの提供により、 Seam では容易"
+"に国際化されたアプリケーションを作成できます。"
+
+#. Tag: title
+#: I18n.xml:11
+#, no-c-format
+msgid "Locales"
+msgstr "ロケール"
+
+#. Tag: para
+#: I18n.xml:12
+#, no-c-format
+msgid ""
+"Each user login session has an associated instance of <literal>java.util."
+"Locale</literal> (available to the application as a session-scoped component "
+"named <literal>locale</literal>). Under normal circumstances, you won&#39;t "
+"need to do any special configuration to set the locale. Seam just delegates "
+"to JSF to determine the active locale:"
+msgstr ""
+"各ユーザログインのセッションは、 <literal>java.util.Locale</literal> インスタ"
+"ンスと関連しています。 (アプリケーションでは、 <literal>locale</literal> と"
+"いう名前の セッションスコープのコンポーネントとして扱えます ) 通常の環境で"
+"は、 ロケールのための特別な設定は不要です。 Seam ではアクティブはロケールの決"
+"定は単純に JSF に委譲しています。"
+
+#. Tag: para
+#: I18n.xml:17
+#, no-c-format
+msgid ""
+"If there is a locale associated with the HTTP request (the browser locale), "
+"and that locale is in the list of supported locales from <literal>faces-"
+"config.xml</literal>, use that locale for the rest of the session."
+msgstr ""
+"HTTP リクエストで指定されるロケール (ブラウザのロケール) があり、 そして、 "
+"<literal>faces-config.xml</literal> により対応可能なロケールの組み合わせの中"
+"にそのロケールがある場合、 その後のセッションの期間、そのロケールを使用しま"
+"す。"
+
+#. Tag: para
+#: I18n.xml:20
+#, no-c-format
+msgid ""
+"Otherwise, if a default locale was specified in the <literal>faces-config."
+"xml</literal>, use that locale for the rest of the session."
+msgstr ""
+"それ以外で、デフォルトロケールが  <literal>faces-config.xml</literal> 中に指"
+"定されていれば、 その後のセッションの期間、そのロケールを使用します。"
+
+#. Tag: para
+#: I18n.xml:23
+#, no-c-format
+msgid "Otherwise, use the default locale of the server."
+msgstr "それ以外では、サーバのデフォルトロケールを使用します。"
+
+#. Tag: para
+#: I18n.xml:26
+#, no-c-format
+msgid ""
+"It is <emphasis>possible</emphasis> to set the locale manually via the Seam "
+"configuration properties <literal>org.jboss.seam.core.localeSelector."
+"language</literal>, <literal>org.jboss.seam.core.localeSelector.country</"
+"literal> and <literal>org.jboss.seam.core.localeSelector.variant</literal>, "
+"but we can&#39;t think of any good reason to ever do this."
+msgstr ""
+"Seam 設定プロパティによるマニュアルでロケールの設定が <emphasis>可能</"
+"emphasis> です。 ( <literal>org.jboss.seam.core.localeSelector.language</"
+"literal>、 <literal>org.jboss.seam.core.localeSelector.country</literal>、 そ"
+"して、<literal>org.jboss.seam.core.localeSelector.variant</literal> ) でも、"
+"これを行う妥当な理由は考え付きません。"
+
+#. Tag: para
+#: I18n.xml:29
+#, no-c-format
+msgid ""
+"It is, however, useful to allow the user to set the locale manually via the "
+"application user interface. Seam provides built-in functionality for "
+"overriding the locale determined by the algorithm above. All you have to do "
+"is add the following fragment to a form in your JSP or Facelets page:"
+msgstr ""
+"しかし、アプリケーションユーザインタフェースを介して、 ユーザにマニュアルでロ"
+"ケール設定を可能とさせることは有用です。 Seam は上記のアルゴリズムによって決"
+"定されるロケールをオーバライドする組み込み機能も提供しています。 すべきこと"
+"は、JSP または、Facelet ページのフォームに以下の断片を追加するだけです。"
+
+#. Tag: programlisting
+#: I18n.xml:32
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{localeSelector.language}\"&gt;\n"
+"    &lt;f:selectItem itemLabel=\"English\" itemValue=\"en\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Deutsch\" itemValue=\"de\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Francais\" itemValue=\"fr\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{localeSelector.select}\" value=\"#{messages"
+"[&#39;ChangeLanguage&#39;]}\"/&gt;"
+msgstr ""
+"&lt;h:selectOneMenu value=\"#{localeSelector.language}\"&gt;\n"
+"    &lt;f:selectItem itemLabel=\"English\" itemValue=\"en\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Deutsch\" itemValue=\"de\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Francais\" itemValue=\"fr\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{localeSelector.select}\" value=\"#{messages"
+"[&#39;ChangeLanguage&#39;]}\"/&gt;"
+
+#. Tag: para
+#: I18n.xml:33
+#, no-c-format
+msgid ""
+"Or, if you want a list of all supported locales from <literal>faces-config."
+"xml</literal>, just use:"
+msgstr ""
+"あるいは、<literal>faces-config.xml</literal> に対応されたすべてのロケールの"
+"組み合わせが欲しければ、 以下を使ってください。"
+
+#. Tag: programlisting
+#: I18n.xml:36
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{localeSelector.localeString}\"&gt;\n"
+"    &lt;f:selectItems value=\"#{localeSelector.supportedLocales}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{localeSelector.select}\" value=\"#{messages"
+"[&#39;ChangeLanguage&#39;]}\"/&gt;"
+msgstr ""
+"&lt;h:selectOneMenu value=\"#{localeSelector.localeString}\"&gt;\n"
+"    &lt;f:selectItems value=\"#{localeSelector.supportedLocales}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{localeSelector.select}\" value=\"#{messages"
+"[&#39;ChangeLanguage&#39;]}\"/&gt;"
+
+#. Tag: para
+#: I18n.xml:37
+#, no-c-format
+msgid ""
+"When this use selects an item from the drop-down, and clicks the button, the "
+"Seam and JSF locales will be overridden for the rest of the session."
+msgstr ""
+"これを使用してドロップダウンからアイテムを選択し、ボタンをクリックすれば、 そ"
+"の後のセッションの期間、Seam と JSF のロケールはオーバライドされます。"
+
+#. Tag: title
+#: I18n.xml:43
+#, no-c-format
+msgid "Labels"
+msgstr "ラベル"
+
+#. Tag: para
+#: I18n.xml:44
+#, no-c-format
+msgid ""
+"JSF supports internationalization of user interface labels and descriptive "
+"text via the use of <literal>&lt;f:loadBundle /&gt;</literal>. You can use "
+"this approach in Seam applications. Alternatively, you can take advantage of "
+"the Seam <literal>messages</literal> component to display templated labels "
+"with embedded EL expressions."
+msgstr ""
+"JSF は、ユーザインタフェースのラベルや説明用テキストの国際化を、 "
+"<literal>&lt;f:loadBundle /&gt;</literal> を使用によって対応しています。 "
+"Seam アプリケーションでもこのアプローチが使用可能です。 別途、組み込みの EL "
+"式を利用したテンプレート化されたラベルを表示するために、 Seam <literal>メッ"
+"セージ</literal> コンポーネントを利用することも可能です。"
+
+#. Tag: title
+#: I18n.xml:48
+#, no-c-format
+msgid "Defining labels"
+msgstr "ラベルを定義する"
+
+#. Tag: para
+#: I18n.xml:49
+#, no-c-format
+msgid ""
+"Each login session has an associated instance of <literal>java.util."
+"ResourceBundle</literal> (available to the application as a session-scoped "
+"component named <literal>org.jboss.seam.core.resourceBundle</literal>). "
+"You&#39;ll need to make your internationalized labels available via this "
+"special resource bundle. By default, the resource bundle used by Seam is "
+"named <literal>messages</literal> and so you&#39;ll need to define your "
+"labels in files named <literal>messages.properties</literal>, "
+"<literal>messages_en.properties</literal>, <literal>messages_en_AU."
+"properties</literal>, etc. These files usually belong in the <literal>WEB-"
+"INF/classes</literal> directory."
+msgstr ""
+"各ログインセッションは、 関連付けられた <literal>java.util.ResourceBundle</"
+"literal> のインスタンスを持ちます。 (アプリケーションでは、 <literal>org."
+"jboss.seam.core.resourceBundle</literal> という名前の セッションスコープのコ"
+"ンポーネントとして扱えます ) この特別なリソースバンドルを通して、 国際化された"
+"ラベルを有効化する必要があります。 デフォルトで、 Seam によって使用されるリ"
+"ソースバンドルは、 <literal>メッセージ</literal>と呼ばれ、 <literal>messages."
+"properties</literal>、 <literal>messages_en.properties</literal>、 "
+"<literal>messages_en_AU.properties</literal> などの名前のファイルでラベルを定"
+"義する必要があります。 これらのファイルは通常、 <literal>WEB-INF/classes</"
+"literal> ディレクトリに配置します。"
+
+#. Tag: para
+#: I18n.xml:52
+#, no-c-format
+msgid "So, in <literal>messages_en.properties</literal>:"
+msgstr "従って、<literal>messages_en.properties</literal> では、"
+
+#. Tag: programlisting
+#: I18n.xml:55
+#, no-c-format
+msgid "Hello=Hello"
+msgstr "Hello=Hello"
+
+#. Tag: para
+#: I18n.xml:56
+#, no-c-format
+msgid "And in <literal>messages_en_AU.properties</literal>:"
+msgstr "そして、<literal>messages_en_AU.properties</literal> では、"
+
+#. Tag: programlisting
+#: I18n.xml:59
+#, no-c-format
+msgid "Hello=G&#39;day"
+msgstr "Hello=G&#39;day"
+
+#. Tag: para
+#: I18n.xml:60
+#, no-c-format
+msgid ""
+"You can select a different name for the resource bundle by setting the Seam "
+"configuration property named <literal>org.jboss.seam.core.resourceBundle."
+"bundleNames</literal>. You can even specify a list of resource bundle names "
+"to be searched (depth first) for messages."
+msgstr ""
+"<literal>org.jboss.seam.core.resourceBundle.bundleNames</literal> と呼ばれる "
+"Seam 設定プロパティによって、 リソースバンドルとして異なる名前を選択すること"
+"が可能です。 リソースバンドル名のリストを指定してメッセージの検索をさせる (深"
+"さ優先) こともできます。"
+
+#. Tag: programlisting
+#: I18n.xml:63
+#, no-c-format
+msgid ""
+"&lt;core:resource-bundle&gt;\n"
+"    &lt;core:bundle-names&gt;\n"
+"        &lt;value&gt;mycompany_messages&lt;/value&gt;\n"
+"        &lt;value&gt;standard_messages&lt;/value&gt;       \n"
+"    &lt;/core:bundle-names&gt;\n"
+"&lt;/core:resource-bundle&gt;"
+msgstr ""
+"&lt;core:resource-bundle&gt;\n"
+"    &lt;core:bundle-names&gt;\n"
+"        &lt;value&gt;mycompany_messages&lt;/value&gt;\n"
+"        &lt;value&gt;standard_messages&lt;/value&gt;       \n"
+"    &lt;/core:bundle-names&gt;\n"
+"&lt;/core:resource-bundle&gt;"
+
+#. Tag: para
+#: I18n.xml:64
+#, no-c-format
+msgid ""
+"If you want to define a message just for a particular page, you can specify "
+"it in a resource bundle with the same name as the JSF view id, with the "
+"leading <literal>/</literal> and trailing file extension removed. So we "
+"could put our message in <literal>welcome/hello_en.properties</literal> if "
+"we only needed to display the message on <literal>/welcome/hello.jsp</"
+"literal>."
+msgstr ""
+"特定のページだけにメッセージを定義したいのであれば、 そのJSFビューIDと同じ名"
+"前でリソースバンドルに指定します。 このときIDの最初の <literal>/</literal> と"
+"最後の拡張子を除去します。 つまり <literal>/welcome/hello.jsp</literal> に"
+"メッセージを表示したいだけであれば、 そのメッセージを <literal>welcome/"
+"hello_en.properties</literal> に書きます。"
+
+#. Tag: para
+#: I18n.xml:67
+#, no-c-format
+msgid "You can even specify an explicit bundle name in <literal>pages.xml</literal>:"
+msgstr "<literal>pages.xml</literal> に明確なバンドル名を指定することもできます:"
+
+#. Tag: programlisting
+#: I18n.xml:70
+#, no-c-format
+msgid "&lt;page view-id=\"/welcome/hello.jsp\" bundle=\"HelloMessages\"/&gt;"
+msgstr "&lt;page view-id=\"/welcome/hello.jsp\" bundle=\"HelloMessages\"/&gt;"
+
+#. Tag: para
+#: I18n.xml:71
+#, no-c-format
+msgid ""
+"Then we could use messages defined in <literal>HelloMessages.properties</"
+"literal> on <literal>/welcome/hello.jsp</literal>."
+msgstr ""
+"これで <literal>HelloMessages.properties</literal> に定義されたメッセージを "
+"<literal>/welcome/hello.jsp</literal> で使うことができます。"
+
+#. Tag: title
+#: I18n.xml:77
+#, no-c-format
+msgid "Displaying labels"
+msgstr "ラベルを表示する"
+
+#. Tag: para
+#: I18n.xml:78
+#, no-c-format
+msgid ""
+"If you define your labels using the Seam resource bundle, you&#39;ll be able "
+"to use them without having to type <literal>&lt;f:loadBundle ... /&gt;</"
+"literal> on every page. Instead, you can simply type:"
+msgstr ""
+"もし、Seamのリソースバンドルにラベルを定義したならば、 すべてのページに "
+"<literal>&lt;f:loadBundle ... /&gt;</literal> をタイプすることなく、 これらが"
+"使用可能です。 その代わりに、以下のように単純にタイプします:"
+
+#. Tag: programlisting
+#: I18n.xml:81
+#, no-c-format
+msgid "&lt;h:outputText value=\"#{messages[&#39;Hello&#39;]}\"/&gt;"
+msgstr "&lt;h:outputText value=\"#{messages[&#39;Hello&#39;]}\"/&gt;"
+
+#. Tag: para
+#: I18n.xml:82
+#, no-c-format
+msgid "<para>or:</para>"
+msgstr "<para>または、</para>"
+
+#. Tag: programlisting
+#: I18n.xml:85
+#, no-c-format
+msgid "&lt;h:outputText value=\"#{messages.Hello}\"/&gt;"
+msgstr "&lt;h:outputText value=\"#{messages.Hello}\"/&gt;"
+
+#. Tag: para
+#: I18n.xml:86
+#, no-c-format
+msgid "Even better, the messages themselves may contain EL expressions:"
+msgstr "さらに良いことに、メッセージそのものには EL 式を含むことも可能です。"
+
+#. Tag: programlisting
+#: I18n.xml:89
+#, no-c-format
+msgid "Hello=Hello, #{user.firstName} #{user.lastName}"
+msgstr "Hello=Hello, #{user.firstName} #{user.lastName}"
+
+#. Tag: programlisting
+#: I18n.xml:90
+#, no-c-format
+msgid "Hello=G&#39;day, #{user.firstName}"
+msgstr "Hello=G&#39;day, #{user.firstName}"
+
+#. Tag: para
+#: I18n.xml:91
+#, no-c-format
+msgid "You can even use the messages in your code:"
+msgstr "コードの中にメッセージを使用することも可能です。"
+
+#. Tag: programlisting
+#: I18n.xml:94
+#, no-c-format
+msgid "@In private Map&lt;String, String&gt; messages;"
+msgstr "@In private Map&lt;String, String&gt; messages;"
+
+#. Tag: programlisting
+#: I18n.xml:95
+#, no-c-format
+msgid "@In(\"#{messages[&#39;Hello&#39;]}\") private String helloMessage;"
+msgstr "@In(\"#{messages[&#39;Hello&#39;]}\") private String helloMessage;"
+
+#. Tag: title
+#: I18n.xml:99
+#, no-c-format
+msgid "Faces messages"
+msgstr "Faces メッセージ"
+
+#. Tag: para
+#: I18n.xml:100
+#, no-c-format
+msgid ""
+"The <literal>facesMessages</literal> component is a super-convenient way to "
+"display success or failure messages to the user. The functionality we just "
+"described also works for faces messages:"
+msgstr ""
+"<literal>facesMessages</literal> コンポーネントはユーザに成功か失敗かを表示す"
+"るとても便利な方法です。 上述した機能は、faces messages にも有効です。"
+
+#. Tag: programlisting
+#: I18n.xml:103
+#, no-c-format
+msgid ""
+"@Name(\"hello\")\n"
+"@Stateless\n"
+"public class HelloBean implements Hello {\n"
+"    @In FacesMessages facesMessages;\n"
+"    \n"
+"    public String sayIt() {\n"
+"        facesMessages.addFromResourceBundle(\"Hello\");\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"hello\")\n"
+"@Stateless\n"
+"public class HelloBean implements Hello {\n"
+"    @In FacesMessages facesMessages;\n"
+"    \n"
+"    public String sayIt() {\n"
+"        facesMessages.addFromResourceBundle(\"Hello\");\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: I18n.xml:104
+#, no-c-format
+msgid ""
+"This will display <literal>Hello, Gavin King</literal> or <literal>G&#39;"
+"day, Gavin</literal>, depending upon the user&#39;s locale."
+msgstr ""
+"これは、ユーザのロケールに応じて、<literal>Hello, Gavin King</literal> あるい"
+"は、 <literal>G'day, Gavin</literal> と表示されます。"
+
+#. Tag: title
+#: I18n.xml:112
+#, no-c-format
+msgid "Timezones"
+msgstr "タイムゾーン"
+
+#. Tag: para
+#: I18n.xml:113
+#, no-c-format
+msgid ""
+"There is also a session-scoped instance of <literal>java.util.Timezone</"
+"literal>, named <literal>org.jboss.seam.core.timezone</literal>, and a Seam "
+"component for changing the timezone named <literal>org.jboss.seam.core."
+"timezoneSelector</literal>. By default, the timezone is the default timezone "
+"of the server. Unfortunately, the JSF specification says that all dates and "
+"times should be assumed to be UTC, and displayed as UTC, unless a timezone "
+"is explicitly specified using <literal>&lt;f:convertDateTime&gt;</literal>. "
+"This is an extremely inconvenient default behavior."
+msgstr ""
+"<literal>org.jboss.seam.core.timezone</literal> という名の セッションスコープ"
+"の <literal>java.util.Timezone</literal> インスタンスと、 <literal>org.jboss."
+"seam.core.timezoneSelector</literal> という名の タイムゾーン変更のためのSeam"
+"コンポーネントもあります。 デフォルトではタイムゾーンはサーバのデフォルトタイ"
+"ムゾーンです。 あいにくJSF仕様では、 <literal>&lt;f:convertDateTime&gt;</"
+"literal>を使って明示的にタイムゾーンを指定しない限り、 全ての日付と時刻はUTC"
+"であると想定され、UTCとして表示されます。 これは非常に不便なデフォルト動作で"
+"す。"
+
+#. Tag: para
+#: I18n.xml:116
+#, no-c-format
+msgid ""
+"Seam overrides this behavior, and defaults all dates and times to the Seam "
+"timezone. In addition, Seam provides the <literal>&lt;s:convertDateTime&gt;</"
+"literal> tag which always performs conversions in the Seam timezone."
+msgstr ""
+"Seamはこの動作をオーバーライドし、全ての日付と時刻をデフォルトでSeamタイム"
+"ゾーンにします。 さらにSeamは、Seamタイムゾーンにおける変換をいつでも行えるよ"
+"う、 <literal>&lt;s:convertDateTime&gt;</literal> タグを提供します。"
+
+#. Tag: title
+#: I18n.xml:122
+#, no-c-format
+msgid "Themes"
+msgstr "テーマ"
+
+#. Tag: para
+#: I18n.xml:123
+#, no-c-format
+msgid ""
+"Seam applications are also very easily skinnable. The theme API is very "
+"similar to the localization API, but of course these two concerns are "
+"orthogonal, and some applications support both localization and themes."
+msgstr ""
+"Seamアプリケーションはまた、とても簡単にスキン変更ができます。 テーマAPIは"
+"ローカライゼーションAPIにとても似ていますが、 もちろんこれら2つの関心事は直"
+"交しており、 ローカライゼーションとテーマの両方をサポートするアプリケーション"
+"もあります。"
+
+#. Tag: para
+#: I18n.xml:126
+#, no-c-format
+msgid "First, configure the set of supported themes:"
+msgstr "まず、サポートされるテーマのセットを設定します:"
+
+#. Tag: programlisting
+#: I18n.xml:129
+#, no-c-format
+msgid ""
+"&lt;theme:theme-selector cookie-enabled=\"true\"&gt;\n"
+"    &lt;theme:available-themes&gt;\n"
+"        &lt;value&gt;default&lt;/value&gt;\n"
+"        &lt;value&gt;accessible&lt;/value&gt;\n"
+"        &lt;value&gt;printable&lt;/value&gt;\n"
+"    &lt;/theme:available-themes&gt;\n"
+"&lt;/theme:theme-selector&gt;"
+msgstr ""
+"&lt;theme:theme-selector cookie-enabled=\"true\"&gt;\n"
+"    &lt;theme:available-themes&gt;\n"
+"        &lt;value&gt;default&lt;/value&gt;\n"
+"        &lt;value&gt;accessible&lt;/value&gt;\n"
+"        &lt;value&gt;printable&lt;/value&gt;\n"
+"    &lt;/theme:available-themes&gt;\n"
+"&lt;/theme:theme-selector&gt;"
+
+#. Tag: para
+#: I18n.xml:130
+#, no-c-format
+msgid "Note that the first theme listed is the default theme."
+msgstr "最初にリストされたテーマがデフォルトテーマであることに注意してください。"
+
+#. Tag: para
+#: I18n.xml:133
+#, no-c-format
+msgid ""
+"Themes are defined in a properties file with the same name as the theme. For "
+"example, the <literal>default</literal> theme is defined as a set of entries "
+"in <literal>default.properties</literal>. For example, <literal>default."
+"properties</literal> might define:"
+msgstr ""
+"テーマは、テーマと同じ名前でプロパティファイルに定義されます。 例えば、 "
+"<literal>default</literal> テーマは <literal>default.properties</literal> に"
+"一連のエントリとして定義されます。 例えば、<literal>default.properties</"
+"literal> は以下のように定義します:"
+
+#. Tag: programlisting
+#: I18n.xml:136
+#, no-c-format
+msgid ""
+"css ../screen.css\n"
+"template template.xhtml"
+msgstr ""
+"css ../screen.css\n"
+"template template.xhtml"
+
+#. Tag: para
+#: I18n.xml:137
+#, no-c-format
+msgid ""
+"Usually the entries in a theme resource bundle will be paths to CSS styles "
+"or images and names of facelets templates (unlike localization resource "
+"bundles which are usually text)."
+msgstr ""
+"通常、 テーマリソースバンドルのエントリは CSS スタイルや画像へのパスや "
+"facelet テンプレートの名前になるでしょう (通常はテキストであるローカライゼー"
+"ションリソースバンドルとは違って)。"
+
+#. Tag: para
+#: I18n.xml:140
+#, no-c-format
+msgid ""
+"Now we can use these entries in our JSP or facelets pages. For example, to "
+"theme the stylesheet in a facelets page:"
+msgstr ""
+"これでJSPやfaceletページにおいてこれらのエントリを使えます。 例えば、facelet"
+"ページでスタイルシートを適用するには:"
+
+#. Tag: programlisting
+#: I18n.xml:143
+#, no-c-format
+msgid "&lt;link href=\"#{theme.css}\" rel=\"stylesheet\" type=\"text/css\" /&gt;"
+msgstr "&lt;link href=\"#{theme.css}\" rel=\"stylesheet\" type=\"text/css\" /&gt;"
+
+#. Tag: para
+#: I18n.xml:144
+#, no-c-format
+msgid ""
+"Most powerfully, facelets lets us theme the template used by a <literal>&lt;"
+"ui:composition&gt;</literal>:"
+msgstr ""
+"最も強力な使い方として、 faceletでは <literal>&lt;ui:composition&gt;</"
+"literal> によってテンプレートを適用できます。"
+
+#. Tag: programlisting
+#: I18n.xml:147
+#, no-c-format
+msgid ""
+"&lt;ui:composition xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"    xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"    xmlns:h=\"http://java.sun.com/jsf/html\"\n"
+"    xmlns:f=\"http://java.sun.com/jsf/core\"\n"
+"    template=\"#{theme.template}\"&gt;"
+msgstr ""
+"&lt;ui:composition xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"    xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"    xmlns:h=\"http://java.sun.com/jsf/html\"\n"
+"    xmlns:f=\"http://java.sun.com/jsf/core\"\n"
+"    template=\"#{theme.template}\"&gt;"
+
+#. Tag: para
+#: I18n.xml:148
+#, no-c-format
+msgid ""
+"Just like the locale selector, there is a built-in theme selector to allow "
+"the user to freely switch themes:"
+msgstr ""
+"ちょうどロケールセレクタのように、 ユーザが自由にテーマを変更できるよう、組み"
+"込みのテーマセレクタがあります。"
+
+#. Tag: programlisting
+#: I18n.xml:151
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{themeSelector.theme}\"&gt;\n"
+"    &lt;f:selectItems value=\"#{themeSelector.themes}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{themeSelector.select}\" value=\"Select Theme"
+"\"/&gt;"
+msgstr ""
+"&lt;h:selectOneMenu value=\"#{themeSelector.theme}\"&gt;\n"
+"    &lt;f:selectItems value=\"#{themeSelector.themes}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{themeSelector.select}\" value=\"Select Theme"
+"\"/&gt;"
+
+#. Tag: title
+#: I18n.xml:155
+#, no-c-format
+msgid "Persisting locale and theme preferences via cookies"
+msgstr "ロケールとテーマ設定のクッキーによる永続化"
+
+#. Tag: para
+#: I18n.xml:156
+#, no-c-format
+msgid ""
+"The locale selector, theme selector and timezone selector all support "
+"persistence of locale and theme preference to a cookie. Simply set the "
+"<literal>cookie-enabled</literal> configuration property:"
+msgstr ""
+"ロケールセレクタ、テーマセレクタ、タイムゾーンセレクタは全て、 ロケールとテー"
+"マ設定をクッキーに永続化することをサポートしています。 単に <literal>cookie-"
+"enabled</literal> プロパティを設定してください。"
+
+#. Tag: programlisting
+#: I18n.xml:159
+#, no-c-format
+msgid ""
+"&lt;theme:theme-selector cookie-enabled=\"true\"&gt;\n"
+"    &lt;theme:available-themes&gt;\n"
+"        &lt;value&gt;default&lt;/value&gt;\n"
+"        &lt;value&gt;accessible&lt;/value&gt;\n"
+"        &lt;value&gt;printable&lt;/value&gt;\n"
+"    &lt;/theme:available-themes&gt;\n"
+"&lt;/theme:theme-selector&gt;\n"
+"\n"
+"&lt;core:locale-selector cookie-enabled=\"true\"/&gt;"
+msgstr ""
+"&lt;theme:theme-selector cookie-enabled=\"true\"&gt;\n"
+"    &lt;theme:available-themes&gt;\n"
+"        &lt;value&gt;default&lt;/value&gt;\n"
+"        &lt;value&gt;accessible&lt;/value&gt;\n"
+"        &lt;value&gt;printable&lt;/value&gt;\n"
+"    &lt;/theme:available-themes&gt;\n"
+"&lt;/theme:theme-selector&gt;\n"
+"\n"
+"&lt;core:locale-selector cookie-enabled=\"true\"/&gt;"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Itext.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Itext.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Itext.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1733 @@
+# translation of Itext.po to Japanese
+# Noriko Mizumoto <noriko at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Itext\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-30 01:52+0000\n"
+"PO-Revision-Date: 2007-11-02 11:10+1000\n"
+"Last-Translator: Noriko Mizumoto <noriko at redhat.com>\n"
+"Language-Team: Japanese <fedora-trans-ja at redhat.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Itext.xml:6
+#, no-c-format
+msgid "iText PDF generation"
+msgstr "iText PDF 生成"
+
+#. Tag: para
+#: Itext.xml:7
+#, no-c-format
+msgid ""
+"Seam now includes an component set for generating documents using iText. The "
+"primary focus of Seam&#39;s iText document support is for the generation of "
+"PDF doucuments, but Seam also offers basic support for RTF document "
+"generation."
+msgstr ""
+"Seam には iText を使ったドキュメント生成用のコンポーネントセットが含まれるよ"
+"うになります。 Seam の iText ドキュメントサポートで主に焦点を置いているのは "
+"PDF の生成ですが、 Seam は RTF ドキュメントの生成についても基本的なサポートを"
+"提供します。"
+
+#. Tag: title
+#: Itext.xml:11
+#, no-c-format
+msgid "Using PDF Support"
+msgstr "PDF サポートを使う"
+
+#. Tag: para
+#: Itext.xml:12
+#, no-c-format
+msgid ""
+"iText support is provided by <literal>jboss-seam-pdf.jar</literal>. This JAR "
+"contains the iText JSF controls, which are used to construct views that can "
+"render to PDF, and the DocumentStore component, which serves the rendered "
+"documents to the user. To include PDF support in your application, included "
+"<literal>jboss-seam-pdf.jar</literal> in your <literal>WEB-INF/lib</literal> "
+"directory along with the iText JAR file. There is no further configuration "
+"needed to use Seam&#39;s iText support."
+msgstr ""
+"iText サポートは <literal>jboss-seam-pdf.jar</literal> で提供されます。 この "
+"JAR には、 PDF にレンダリングが可能となるビューの作成に使用される iText JSF "
+"制御、 およびレンダリングされたドキュメントをユーザーに提供する "
+"DocumentStore コンポーネントが含まれています。 PDF サポートをご使用のアプリ"
+"ケーションに含ませるには、 iText JAR ファイルと一緒に <literal>WEB-INF/lib</"
+"literal> ディレクトリに <literal>jboss-seam-pdf.jar</literal> を含ませます。 "
+"Seam の iText サポートを使用するのに必要な設定はこれだけで他にはありません。"
+
+#. Tag: para
+#: Itext.xml:15
+#, no-c-format
+msgid ""
+"The Seam iText module requires the use of Facelets as the view technology. "
+"Future versions of the library may also support the use of JSP. "
+"Additionally, it requires the use of the seam-ui package."
+msgstr ""
+"Seam iText モジュールにはビューテクノロジーとして Facelets を使用する必要があ"
+"ります。 ライブラリの今後のバージョンは JSP の使用にも対応する可能性がありま"
+"す。 また、 seam-ui パッケージの使用も必要となります。"
+
+#. Tag: para
+#: Itext.xml:18
+#, no-c-format
+msgid ""
+"The <literal>examples/itext</literal> project contains an example of the PDF "
+"support in action. It demonstrates proper deployment packaging, and it "
+"contains a number examples that demonstrate the key PDF generation features "
+"current supported."
+msgstr ""
+"<literal>examples/itext</literal> プロジェクトには実行可能なデモ用 PDF サポー"
+"トのサンプルが含まれています。 正確なパッケージ化の導入を行い、 現在サポート"
+"されている PDF 生成の主要な機能を実際に示すサンプルがいくつか含まれています。"
+
+#. Tag: title
+#: Itext.xml:24
+#, no-c-format
+msgid "Creating a document"
+msgstr "ドキュメントを作成する"
+
+#. Tag: para
+#: Itext.xml:25
+#, no-c-format
+msgid ""
+"Documents are generated by facelets documents using tags in the "
+"<literal>http://jboss.com/products/seam/pdf</literal> namespace. Documents "
+"should always have the <literal>document</literal> tag at the root of the "
+"document. The <literal>document</literal> tag prepares Seam to generate a "
+"document into the DocumentStore and renders an HTML redirect to that stored "
+"content. The following is a a small PDF document consisting only a single "
+"line of text:"
+msgstr ""
+"ドキュメントは <literal>http://jboss.com/products/seam/pdf</literal> 名前空間"
+"にあるタグを使って facelets documents で生成されます。 ドキュメントには必ずド"
+"キュメントの root に <literal>document</literal> タグがなければなりません。 "
+"<literal>document</literal> タグは Seam がドキュメントを DocumentStore に生成"
+"し HTML リダイレクトをその格納コンテントにレンダリングする準備を行います。 次"
+"は 1 行のみのテキストから成る小規模の PDF ドキュメントです。"
+
+#. Tag: programlisting
+#: Itext.xml:28
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf"
+"\"&gt;                                                      \n"
+"   The document goes "
+"here.                                                                                             \n"
+"&lt;/p:document&gt;"
+msgstr ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf"
+"\"&gt;                                                      \n"
+"   The document goes "
+"here.                                                                                             \n"
+"&lt;/p:document&gt;"
+
+#. Tag: title
+#: Itext.xml:30
+#, no-c-format
+msgid "p:document"
+msgstr "p:document"
+
+#. Tag: para
+#: Itext.xml:31
+#, no-c-format
+msgid "The <literal>p:document</literal> tag supports the following attributes:"
+msgstr "<literal>p:document</literal> タグは次の属性をサポートしています。"
+
+#. Tag: literal
+#: Itext.xml:36
+#, no-c-format
+msgid "type"
+msgstr "type"
+
+#. Tag: para
+#: Itext.xml:38
+#, no-c-format
+msgid ""
+"The type of the document to be produced. Valid values are <literal>PDF</"
+"literal>, <literal>RTF</literal> and <literal>HTML</literal> modes. Seam "
+"defaults to PDF generation, and many of the features only work correctly "
+"when generating PDF documents."
+msgstr ""
+"生成されるドキュメントのタイプです。 有効な値は、 <literal>PDF</literal>、 "
+"<literal>RTF</literal>、 <literal>HTML</literal> の各モードになります。 Seam "
+"のデフォルト設定は PDF 生成で、 多くの機能が正常に動作するのは PDF ドキュメン"
+"トを生成している場合に限られます。"
+
+#. Tag: literal
+#: Itext.xml:44
+#, no-c-format
+msgid "pageSize"
+msgstr "pageSize"
+
+#. Tag: para
+#: Itext.xml:46
+#, no-c-format
+msgid ""
+"The size of the page to be generate. The most commonly used values would be "
+"<literal>LETTER</literal> and <literal>A4</literal>. A full list of "
+"supported pages sizes can be found in <literal>com.lowagie.text.PageSize</"
+"literal> class. Alternatively, pageSize can provide the width and height of "
+"the page directly. The value \"612 792\", for example, is equizalent to the "
+"LETTER page size."
+msgstr ""
+"生成されるページのサイズです。 もっとも一般的に使用される値は "
+"<literal>LETTER</literal> と <literal>A4</literal> でしょう。 対応ページサイ"
+"ズの一覧は <literal>com.lowagie.text.PageSize</literal> クラスをご覧くださ"
+"い。 代わりに、 pageSize はページ幅と高さを直接提供することができます。 例え"
+"ば、 \"612 792\" という値は LETTER のページサイズに相当します。"
+
+#. Tag: literal
+#: Itext.xml:52
+#, no-c-format
+msgid "orientation"
+msgstr "orientation"
+
+#. Tag: para
+#: Itext.xml:54
+#, no-c-format
+msgid ""
+"The orientation of the page. Valid values are <literal>portrait</literal> "
+"and <literal>landscape</literal>. In landscape mode, the height and width "
+"page size values are reversed."
+msgstr ""
+"ページ位置です。 有効な値は <literal>portrait</literal> と "
+"<literal>landscape</literal> です。 横モードでは、 ページ幅と高さのサイズ値が"
+"逆転します。"
+
+#. Tag: literal
+#: Itext.xml:60
+#, no-c-format
+msgid "margins"
+msgstr "margins"
+
+#. Tag: para
+#: Itext.xml:62
+#, no-c-format
+msgid "The left, right, top and bottom margin values."
+msgstr "右、 左、上部、 下部 の余白部分の値です。"
+
+#. Tag: literal
+#: Itext.xml:68
+#, no-c-format
+msgid "marginMirroring"
+msgstr "marginMirroring"
+
+#. Tag: para
+#: Itext.xml:70
+#, no-c-format
+msgid "Indicates that margin settings should be reversed an alternating pages."
+msgstr "余白の設定が交互のページで逆転されることを示します。"
+
+#. Tag: para
+#: Itext.xml:76
+#, no-c-format
+msgid ""
+"Document metadata is also set as attributes of the document tag. The "
+"following metadata fields are supported:"
+msgstr ""
+"ドキュメントのメタデータもドキュメントタグの属性として設定されます。 次のメタ"
+"データフィールドがサポートされています。"
+
+#. Tag: literal
+#: Itext.xml:81
+#, no-c-format
+msgid "title"
+msgstr "title"
+
+#. Tag: para
+#: Itext.xml:83 Itext.xml:90 Itext.xml:97 Itext.xml:104 Itext.xml:111
+#: Itext.xml:135 Itext.xml:142 Itext.xml:149 Itext.xml:156 Itext.xml:179
+#: Itext.xml:186 Itext.xml:193 Itext.xml:328 Itext.xml:335 Itext.xml:358
+#: Itext.xml:365 Itext.xml:372 Itext.xml:387 Itext.xml:394 Itext.xml:686
+#: Itext.xml:693 Itext.xml:700 Itext.xml:707 Itext.xml:730 Itext.xml:737
+#: Itext.xml:744 Itext.xml:751 Itext.xml:799 Itext.xml:806 Itext.xml:813
+#: Itext.xml:820 Itext.xml:827 Itext.xml:834 Itext.xml:841 Itext.xml:848
+#: Itext.xml:855 Itext.xml:862 Itext.xml:869 Itext.xml:876 Itext.xml:883
+#: Itext.xml:890 Itext.xml:897 Itext.xml:904 Itext.xml:911
+#, no-c-format
+msgid "&#x200B;"
+msgstr "&#x200B;"
+
+#. Tag: literal
+#: Itext.xml:88
+#, no-c-format
+msgid "subject"
+msgstr "subject"
+
+#. Tag: literal
+#: Itext.xml:95
+#, no-c-format
+msgid "keywords"
+msgstr "keywords"
+
+#. Tag: literal
+#: Itext.xml:102
+#, no-c-format
+msgid "author"
+msgstr "author"
+
+#. Tag: literal
+#: Itext.xml:109
+#, no-c-format
+msgid "creator"
+msgstr "creator"
+
+#. Tag: title
+#: Itext.xml:121
+#, no-c-format
+msgid "Basic Text Elements"
+msgstr "基本的なテキストのエレメント"
+
+#. Tag: para
+#: Itext.xml:122
+#, no-c-format
+msgid ""
+"Useful documents will need to contain more than just text; however, the "
+"standard UI components are geared towards HTML generation and are not useful "
+"for generating PDF content. Instead, Seam provides a special UI components "
+"for generating suitable PDF content. Tags like <literal>&lt;p:image&gt;</"
+"literal> and <literal>&lt;p:paragraph&gt;</literal> are the basic "
+"foundations of simple documents. Tags like <literal>&lt;p:font&gt;</literal> "
+"provide style information to all the content surrounging them."
+msgstr ""
+"役に立つドキュメントにはテキスト以外のものも含まれる必要があります。 ただ"
+"し、 標準 UI コンポーネントは HTML 生成に対して適合されるので、 PDF コンテン"
+"トの生成には役に立ちません。 Seam は特殊な UI コンポーネントを適切な PDF コン"
+"テントの生成に対して提供しています。 <literal>&lt;p:image&gt;</literal> や "
+"<literal>&lt;p:paragraph&gt;</literal> のようなタグはシンプルなドキュメントの"
+"ベーシックな基盤となります。 <literal>&lt;p:font&gt;</literal> のようなタグは"
+"その回りのコンテントすべてに対してスタイル情報を提供します。"
+
+#. Tag: programlisting
+#: Itext.xml:125
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"&gt; \n"
+"    &lt;p:image alignment=\"right\" wrap=\"true\" resource=\"/logo.jpg\" /"
+"&gt;\n"
+"    &lt;p:font size=\"24\"&gt;\n"
+"        &lt;p:paragraph spacingAfter=\"50\"&gt;My First Document&lt;/p:"
+"paragraph&gt;\n"
+"    &lt;/p:font&gt;\n"
+"\n"
+"    &lt;p:paragraph alignment=\"justify\"&gt;\n"
+"        This is a simple document.  It isn&#39;t very fancy.\n"
+"    &lt;/p:paragraph&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"&gt; \n"
+"    &lt;p:image alignment=\"right\" wrap=\"true\" resource=\"/logo.jpg\" /"
+"&gt;\n"
+"    &lt;p:font size=\"24\"&gt;\n"
+"        &lt;p:paragraph spacingAfter=\"50\"&gt;My First Document&lt;/p:"
+"paragraph&gt;\n"
+"    &lt;/p:font&gt;\n"
+"\n"
+"    &lt;p:paragraph alignment=\"justify\"&gt;\n"
+"        This is a simple document.  It isn&#39;t very fancy.\n"
+"    &lt;/p:paragraph&gt;\n"
+"&lt;/p:document&gt;"
+
+#. Tag: title
+#: Itext.xml:127
+#, no-c-format
+msgid "p:paragraph"
+msgstr "p:paragraph"
+
+#. Tag: para
+#: Itext.xml:128
+#, no-c-format
+msgid ""
+"Most uses of text should be sectioned into paragraphs so that text fragments "
+"can be flowed, formatted and styled in logical groups."
+msgstr ""
+"テキストでの使用が多く、 文章をひとかたまりごとに区切るため理にかなったグルー"
+"プでテキストの断片の流れを作り、形成、スタイル化することができます。"
+
+#. Tag: literal
+#: Itext.xml:133
+#, no-c-format
+msgid "firstLineIndent"
+msgstr "firstLineIndent"
+
+#. Tag: literal
+#: Itext.xml:140 Itext.xml:832
+#, no-c-format
+msgid "extraParagraphSpace"
+msgstr "extraParagraphSpace"
+
+#. Tag: literal
+#: Itext.xml:147 Itext.xml:804
+#, no-c-format
+msgid "leading"
+msgstr "leading"
+
+#. Tag: literal
+#: Itext.xml:154 Itext.xml:811
+#, no-c-format
+msgid "multipliedLeading"
+msgstr "multipliedLeading"
+
+#. Tag: literal
+#: Itext.xml:161 Itext.xml:340 Itext.xml:712
+#, no-c-format
+msgid "spacingBefore"
+msgstr "spacingBefore"
+
+#. Tag: para
+#: Itext.xml:163 Itext.xml:342 Itext.xml:714
+#, no-c-format
+msgid "The blank space to be inserted before the element."
+msgstr "エレメントの前に挿入される空白スペースです。"
+
+#. Tag: literal
+#: Itext.xml:169 Itext.xml:348 Itext.xml:720
+#, no-c-format
+msgid "spacingAfter"
+msgstr "spacingAfter"
+
+#. Tag: para
+#: Itext.xml:171 Itext.xml:350 Itext.xml:722
+#, no-c-format
+msgid "The blank space to be inserted after the element."
+msgstr "エレメントの後に挿入される空白スペースです。"
+
+#. Tag: literal
+#: Itext.xml:177 Itext.xml:326 Itext.xml:595
+#, no-c-format
+msgid "indentationLeft"
+msgstr "indentationLeft"
+
+#. Tag: literal
+#: Itext.xml:184 Itext.xml:333 Itext.xml:603
+#, no-c-format
+msgid "indentationRight"
+msgstr "indentationRight"
+
+#. Tag: literal
+#: Itext.xml:191 Itext.xml:749
+#, no-c-format
+msgid "keepTogether"
+msgstr "keepTogether"
+
+#. Tag: title
+#: Itext.xml:201
+#, no-c-format
+msgid "p:text"
+msgstr "p:text"
+
+#. Tag: para
+#: Itext.xml:202
+#, no-c-format
+msgid ""
+"The <literal>text</literal> tag allows text fragments to be produced from "
+"application data using normal JSF converter mechanisms. It is very similar "
+"to the <literal>outputText</literal> tag used when rendering HTML documents. "
+"Here is an example:"
+msgstr ""
+"<literal>text</literal> タグによりテキストの断片が通常の JSF コンバータのメカ"
+"ニズムを使用してアプリケーションデータから生成されるようになります。 HTML ド"
+"キュメントをレンダリングする場合に使用される <literal>outputText</literal> タ"
+"グに非常に似ています。 次に例を示します。"
+
+#. Tag: programlisting
+#: Itext.xml:205
+#, no-c-format
+msgid ""
+"&lt;p:paragraph&gt;\n"
+"    The item costs &lt;p:text value=\"#{product.price}\"&gt;\n"
+"        &lt;f:convertNumber type=\"currency\" currencySymbol=\"$\"/&gt;\n"
+"    &lt;/p:text&gt;\n"
+"&lt;/p:paragraph&gt;"
+msgstr ""
+"&lt;p:paragraph&gt;\n"
+"    The item costs &lt;p:text value=\"#{product.price}\"&gt;\n"
+"        &lt;f:convertNumber type=\"currency\" currencySymbol=\"$\"/&gt;\n"
+"    &lt;/p:text&gt;\n"
+"&lt;/p:paragraph&gt;"
+
+#. Tag: literal
+#: Itext.xml:208
+#, no-c-format
+msgid "value"
+msgstr "value"
+
+#. Tag: para
+#: Itext.xml:210
+#, no-c-format
+msgid "The value to be displayed. This will typically be a value binding expression."
+msgstr "表示される値です。 一般的には値バインディング表現になります。"
+
+#. Tag: title
+#: Itext.xml:219
+#, no-c-format
+msgid "p:font"
+msgstr "p:font"
+
+#. Tag: para
+#: Itext.xml:220
+#, no-c-format
+msgid "Font declarations have no direct"
+msgstr "フォントの宣言にはダイレクトがありません。"
+
+#. Tag: literal
+#: Itext.xml:225
+#, no-c-format
+msgid "familyName"
+msgstr "familyName"
+
+#. Tag: para
+#: Itext.xml:227
+#, no-c-format
+msgid ""
+"The font family. One of: <literal>COURIER</literal>, <literal>HELVETICA</"
+"literal>, <literal>TIMES-ROMAN</literal>, <literal>SYMBOL</literal> or "
+"<literal>ZAPFDINGBATS</literal>."
+msgstr ""
+"フォントファミリーです。 <literal>COURIER</literal>、 <literal>HELVETICA</"
+"literal>、 <literal>TIMES-ROMAN</literal>、 <literal>SYMBOL</literal>、 "
+"<literal>ZAPFDINGBATS</literal> のいずれかになります。"
+
+#. Tag: literal
+#: Itext.xml:233
+#, no-c-format
+msgid "size"
+msgstr "size"
+
+#. Tag: para
+#: Itext.xml:235
+#, no-c-format
+msgid "The point size of the font."
+msgstr "フォントのポイントサイズです。"
+
+#. Tag: literal
+#: Itext.xml:241 Itext.xml:530
+#, no-c-format
+msgid "style"
+msgstr "style"
+
+#. Tag: para
+#: Itext.xml:243
+#, no-c-format
+msgid ""
+"The font styles. Any combination of : <literal>NORMAL</literal>, "
+"<literal>BOLD</literal>, <literal>ITALIC</literal>, <literal>OBLIQUE</"
+"literal>, <literal>UNDERLINE</literal>, <literal>LINE-THROUGH</literal>"
+msgstr ""
+"フォントのスタイルです。 <literal>NORMAL</literal>、 <literal>BOLD</"
+"literal>、 <literal>ITALIC</literal>、 <literal>OBLIQUE</literal>、 "
+"<literal>UNDERLINE</literal>、 <literal>LINE-THROUGH</literal> などの組み合わ"
+"せになります。"
+
+#. Tag: title
+#: Itext.xml:252
+#, no-c-format
+msgid "p:newPage"
+msgstr "p:newPage"
+
+#. Tag: para
+#: Itext.xml:253
+#, no-c-format
+msgid "<literal>p:newPage</literal> inserts a page break."
+msgstr "<literal>p:newPage</literal> は改ページを挿入します。"
+
+#. Tag: title
+#: Itext.xml:259
+#, no-c-format
+msgid "p:image"
+msgstr "p:image"
+
+#. Tag: para
+#: Itext.xml:260
+#, no-c-format
+msgid ""
+"<literal>p:image</literal> inserts an image into the document. Images can be "
+"be loaded from the classpath or from the web application context using the "
+"<literal>resource</literal> attribute."
+msgstr ""
+"<literal>p:image</literal> はドキュメントにイメージを挿入します。 イメージは"
+"クラスパスから、または<literal>resource</literal> 属性を使ってウェブアプリ"
+"ケーションコンテキストからロードすることができます。"
+
+#. Tag: programlisting
+#: Itext.xml:263
+#, no-c-format
+msgid "&lt;p:image resource=\"/jboss.jpg\" /&gt;"
+msgstr "&lt;p:image resource=\"/jboss.jpg\" /&gt;"
+
+#. Tag: para
+#: Itext.xml:264
+#, no-c-format
+msgid ""
+"Resources can also be dynamically generated by application code. The "
+"<literal>imageData</literal> attribute can specify a value binding "
+"expression whose value is a <literal>java.awt.Image</literal> object."
+msgstr ""
+"リソースはアプリケーションコードで動的に生成することもできます。 "
+"<literal>imageData</literal> 属性は値バインディング表現を指定することがで"
+"き、 この値は <literal>java.awt.Image</literal> オブジェクトになります。"
+
+#. Tag: programlisting
+#: Itext.xml:267
+#, no-c-format
+msgid "&lt;p:image imageData=\"#{images.chart}\" /&gt;"
+msgstr "&lt;p:image imageData=\"#{images.chart}\" /&gt;"
+
+#. Tag: literal
+#: Itext.xml:270
+#, no-c-format
+msgid "resource"
+msgstr "resource"
+
+#. Tag: para
+#: Itext.xml:272
+#, no-c-format
+msgid ""
+"The location of the image resource to be included. Resources should be "
+"relative to the document root of the web application."
+msgstr ""
+"含ませるイメージリソースの場所です。 リソースはウェブアプリケーションのドキュ"
+"メントルートに対して相対的でなければなりません。"
+
+#. Tag: literal
+#: Itext.xml:278
+#, no-c-format
+msgid "imageData"
+msgstr "imageData"
+
+#. Tag: para
+#: Itext.xml:280
+#, no-c-format
+msgid "A method expression binding to an application-generated image."
+msgstr "アプリケーション生成のイメージにバインドするメソッド表現です。"
+
+#. Tag: literal
+#: Itext.xml:286 Itext.xml:909
+#, no-c-format
+msgid "rotation"
+msgstr "rotation"
+
+#. Tag: para
+#: Itext.xml:288
+#, no-c-format
+msgid "The rotation of the image in degrees."
+msgstr "度数によるイメージの回転です。"
+
+#. Tag: literal
+#: Itext.xml:294
+#, no-c-format
+msgid "height"
+msgstr "height"
+
+#. Tag: para
+#: Itext.xml:296
+#, no-c-format
+msgid "The height of the image."
+msgstr "イメージの高さです。"
+
+#. Tag: literal
+#: Itext.xml:302
+#, no-c-format
+msgid "width"
+msgstr "width"
+
+#. Tag: para
+#: Itext.xml:304
+#, no-c-format
+msgid "The width of the image."
+msgstr "イメージの幅です。"
+
+#. Tag: literal
+#: Itext.xml:310 Itext.xml:437 Itext.xml:587
+#, no-c-format
+msgid "alignment"
+msgstr "alignment"
+
+#. Tag: para
+#: Itext.xml:312
+#, no-c-format
+msgid ""
+"The alignment of the image. (see <xref linkend=\"Seam_Reference_Guide-"
+"Document_Constants-Alignment_Values\"/> for possible values)"
+msgstr ""
+"イメージの位置です。 (可能な値については <xref linkend=\"Seam_Reference_Guide-"
+"Document_Constants-Alignment_Values\"/> を参照)"
+
+#. Tag: literal
+#: Itext.xml:318
+#, no-c-format
+msgid "<literal>alt</literal>"
+msgstr "<literal>alt</literal>"
+
+#. Tag: para
+#: Itext.xml:320
+#, no-c-format
+msgid "Alternative text representation for the image."
+msgstr "イメージに対して代替として表示されるテキストです。"
+
+#. Tag: literal
+#: Itext.xml:356 Itext.xml:668
+#, no-c-format
+msgid "widthPercentage"
+msgstr "widthPercentage"
+
+#. Tag: literal
+#: Itext.xml:363
+#, no-c-format
+msgid "initialRotation"
+msgstr "initialRotation"
+
+#. Tag: literal
+#: Itext.xml:370
+#, no-c-format
+msgid "<literal>dpi</literal>"
+msgstr "<literal>dpi</literal>"
+
+#. Tag: literal
+#: Itext.xml:377
+#, no-c-format
+msgid "scalePercent"
+msgstr "scalePercent"
+
+#. Tag: para
+#: Itext.xml:379
+#, no-c-format
+msgid ""
+"The scaling factor (as a percentage) to use for the image. This can be "
+"expressed as a single percentage value or as two percentage values "
+"representing separate x and y scaling percentages."
+msgstr ""
+"イメージに使用する倍率です (百分率) 。 1 つの値または x と y 別々の倍率を示"
+"す 2 つの値で表すことができます。"
+
+#. Tag: literal
+#: Itext.xml:385
+#, no-c-format
+msgid "wrap"
+msgstr "wrap"
+
+#. Tag: literal
+#: Itext.xml:392
+#, no-c-format
+msgid "underlying"
+msgstr "underlying"
+
+#. Tag: title
+#: Itext.xml:402
+#, no-c-format
+msgid "p:anchor"
+msgstr "p:anchor"
+
+#. Tag: para
+#: Itext.xml:403
+#, no-c-format
+msgid ""
+"<literal>p:anchor</literal> defines clickable links from a document. It "
+"supports the following attributes:"
+msgstr ""
+"<literal>p:anchor</literal> はドキュメントからクリックできるリンクを定義しま"
+"す。 次の属性をサポートしています。"
+
+#. Tag: literal
+#: Itext.xml:408
+#, no-c-format
+msgid "name"
+msgstr "name"
+
+#. Tag: para
+#: Itext.xml:410
+#, no-c-format
+msgid "The name of an in-document anchor destination."
+msgstr "ドキュメント内のアンカー目的地の名前です。"
+
+#. Tag: literal
+#: Itext.xml:416
+#, no-c-format
+msgid "reference"
+msgstr "reference"
+
+#. Tag: para
+#: Itext.xml:418
+#, no-c-format
+msgid ""
+"The destination the link refers to. Links to other points in the document "
+"should begin with a \"#\". For example, \"#link1\" to refer to an anchor "
+"postion with a <literal>name</literal> of <literal>link1</literal>. Links "
+"may also be a full URL to point to a resource outside of the document."
+msgstr ""
+"リンクの参照先です。 ドキュメント内の別のポイントへのリンクは「#」で開始して"
+"ください。 たとえば、 <literal>link1</literal> という <literal>name</"
+"literal> を持つアンカー位置を参照するには「#link1」を使います。 リンクはド"
+"キュメントの外にあるリソースをポイントする完全 URL でも構いません。"
+
+#. Tag: title
+#: Itext.xml:429
+#, no-c-format
+msgid "Headers and Footers"
+msgstr "ヘッダとフッタ"
+
+#. Tag: title
+#: Itext.xml:431
+#, no-c-format
+msgid "p:header and p:footer"
+msgstr "p:header and p:footer"
+
+#. Tag: para
+#: Itext.xml:432
+#, no-c-format
+msgid ""
+"The <literal>p:header</literal> and <literal>p:footer</literal> components "
+"provide the ability to place header and footer text on each page of a "
+"generated document, with the exception of the first page. Header and footer "
+"declarations should appear near the top of a document."
+msgstr ""
+"<literal>p:header</literal> と <literal>p:footer</literal> コンポーネント"
+"は、 最初のページを除き生成されたドキュメントの各ページにヘッダとフッタのテキ"
+"ストを配置する機能を提供します。 ヘッダとフッタの宣言はドキュメント上部付近に"
+"表されます。"
+
+#. Tag: para
+#: Itext.xml:439
+#, no-c-format
+msgid ""
+"The alignment of the header/footer box section. (see <xref linkend="
+"\"Seam_Reference_Guide-Document_Constants-Alignment_Values\"/> for alignment "
+"values)"
+msgstr ""
+"ヘッダ/フッタのボックスセクションの位置です。 (位置の値は <xref linkend="
+"\"Seam_Reference_Guide-Document_Constants-Alignment_Values\"/> を参照)"
+
+#. Tag: literal
+#: Itext.xml:445
+#, no-c-format
+msgid "backgroundColor"
+msgstr "backgroundColor"
+
+#. Tag: para
+#: Itext.xml:447
+#, no-c-format
+msgid ""
+"The background color of the header/footer box. (see <xref linkend="
+"\"Seam_Reference_Guide-Document_Constants-Color_Values\"/> for color values)"
+msgstr ""
+"ヘッダ/フッタボックスの背景色です。 (色の値は <xref linkend="
+"\"Seam_Reference_Guide-Document_Constants-Color_Values\"/> を参照)"
+
+#. Tag: literal
+#: Itext.xml:453
+#, no-c-format
+msgid "borderColor"
+msgstr "borderColor"
+
+#. Tag: para
+#: Itext.xml:455
+#, no-c-format
+msgid ""
+"The border color of the header/footer box. Individual border sides can be "
+"set using <literal>borderColorLeft</literal>, <literal>borderColorRight</"
+"literal>, <literal>borderColorTop</literal> and <literal>borderColorBottom</"
+"literal>.(see <xref linkend=\"Seam_Reference_Guide-Document_Constants-"
+"Color_Values\"/> for color values)"
+msgstr ""
+"ヘッダ/フッタボックスの境界線の色です。 <literal>borderColorLeft</literal>、 "
+"<literal>borderColorRight</literal>、 <literal>borderColorTop</literal>、 "
+"<literal>borderColorBottom</literal> を使って各線は別々に設定することができま"
+"す。 (色の値は <xref linkend=\"Seam_Reference_Guide-Document_Constants-"
+"Color_Values\"/> を参照)"
+
+#. Tag: literal
+#: Itext.xml:461
+#, no-c-format
+msgid "borderWidth"
+msgstr "borderWidth"
+
+#. Tag: para
+#: Itext.xml:463
+#, no-c-format
+msgid ""
+"The width of the border. Inidvidual border sides can be specified using "
+"<literal>borderWidthLeft</literal>, <literal>borderWidthRight</literal>, "
+"<literal>borderWidthTop</literal> and <literal>borderWidthBottom</literal>."
+msgstr ""
+"境界線の幅です。 <literal>borderWidthLeft</literal>、 "
+"<literal>borderWidthRight</literal>、 <literal>borderWidthTop</literal>、 "
+"<literal>borderWidthBottom</literal> を使って各線は別々に指定することができま"
+"す。"
+
+#. Tag: title
+#: Itext.xml:472
+#, no-c-format
+msgid "p:pageNumber"
+msgstr "p:pageNumber"
+
+#. Tag: para
+#: Itext.xml:473
+#, no-c-format
+msgid ""
+"The current page number can be placed inside of a header or footer using the "
+"<literal>p:pageNumber</literal> tag. The page number tag can only be used in "
+"the context of a header or footer and can only be used once."
+msgstr ""
+"現在のページ番号は <literal>p:pageNumber</literal> タグを使うとヘッダまたは"
+"フッタの内側に配置することができます。 このページ番号タグはヘッダまたはフッタ"
+"のコンテキスト内で 1 度だけ使用することができます。"
+
+#. Tag: title
+#: Itext.xml:481
+#, no-c-format
+msgid "Chapters and Sections"
+msgstr "章とセクション"
+
+#. Tag: para
+#: Itext.xml:482
+#, no-c-format
+msgid ""
+"If the generated document follows a book/article structure, the <literal>p:"
+"chapter</literal> and <literal>p:section</literal> tags can be used to "
+"provide the necessary structure. Sections can only be used inside of "
+"chapters, but they may be nested arbitrarily deep. Most PDF viewers provide "
+"easy navigation between chapters and sections in a document."
+msgstr ""
+"生成されるドキュメントが本または論文の構造をとる場合、 <literal>p:chapter</"
+"literal> と <literal>p:section</literal> の各タグを使用して必要となる構造を構"
+"成することができます。 セクションは章の内側でのみ使用できますが、 適宜、 ネス"
+"トさせることができます。 ほとんどの PDF ビューワはドキュメント内の章とセク"
+"ション間を簡単に移動できる機能を提供しています。"
+
+#. Tag: programlisting
+#: Itext.xml:485
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"\n"
+"            title=\"Hello\"&gt;\n"
+"\n"
+"   &lt;p:chapter number=\"1\"&gt;\n"
+"      &lt;p:title&gt;&lt;p:paragraph&gt;Hello&lt;/p:paragraph&gt;&lt;/p:"
+"title&gt;\n"
+"      &lt;p:paragraph&gt;Hello #{user.name}!&lt;/p:paragraph&gt;\n"
+"   &lt;/p:chapter&gt;\n"
+"\n"
+"   &lt;p:chapter number=\"2\"&gt;\n"
+"      &lt;p:title&gt;&lt;p:paragraph&gt;Goodbye&lt;/p:paragraph&gt;&lt;/p:"
+"title&gt;\n"
+"      &lt;p:paragraph&gt;Goodbye #{user.name}.&lt;/p:paragraph&gt;\n"
+"   &lt;/p:chapter&gt;\n"
+"\n"
+"&lt;/p:document&gt;"
+msgstr ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"\n"
+"            title=\"Hello\"&gt;\n"
+"\n"
+"   &lt;p:chapter number=\"1\"&gt;\n"
+"      &lt;p:title&gt;&lt;p:paragraph&gt;Hello&lt;/p:paragraph&gt;&lt;/p:"
+"title&gt;\n"
+"      &lt;p:paragraph&gt;Hello #{user.name}!&lt;/p:paragraph&gt;\n"
+"   &lt;/p:chapter&gt;\n"
+"\n"
+"   &lt;p:chapter number=\"2\"&gt;\n"
+"      &lt;p:title&gt;&lt;p:paragraph&gt;Goodbye&lt;/p:paragraph&gt;&lt;/p:"
+"title&gt;\n"
+"      &lt;p:paragraph&gt;Goodbye #{user.name}.&lt;/p:paragraph&gt;\n"
+"   &lt;/p:chapter&gt;\n"
+"\n"
+"&lt;/p:document&gt;"
+
+#. Tag: title
+#: Itext.xml:487
+#, no-c-format
+msgid "p:chapter and p:section"
+msgstr "p:chapter と p:section"
+
+#. Tag: literal
+#: Itext.xml:490
+#, no-c-format
+msgid "number"
+msgstr "number"
+
+#. Tag: para
+#: Itext.xml:492
+#, no-c-format
+msgid "The chapter number. Every chapter should be assigned a chapter number."
+msgstr "章の番号です。 各章は章番号が割り当てられなければなりません。"
+
+#. Tag: literal
+#: Itext.xml:498
+#, no-c-format
+msgid "numberDepth"
+msgstr "numberDepth"
+
+#. Tag: para
+#: Itext.xml:500
+#, no-c-format
+msgid ""
+"The depth of numbering for section. All sections are numbered relative to "
+"their surrounding chapter/sections. The fourth section of of the first "
+"section of chapter three would be section 3.1.4, if displayed at the default "
+"number depth of three. To omit the chapter number, a number depth of 2 "
+"should be used. In that case, the section number would be displayed as 1.4."
+msgstr ""
+"セクション番号付けの奥行きです。 セクションはすべて回りの章/セクションに相対"
+"的に番号付けされます。 デフォルトの奥行き 3 で表示される場合は、 第 3 章の セ"
+"クション 1 の小セクション 4 はセクション 3.1.4 と表されるでしょう。 章番号を"
+"省略するには、 奥行き 2 を使用してください。 この場合、 セクション番号は 1.4 "
+"と表されます。"
+
+#. Tag: title
+#: Itext.xml:509
+#, no-c-format
+msgid "p:title"
+msgstr "p:title"
+
+#. Tag: para
+#: Itext.xml:510
+#, no-c-format
+msgid ""
+"Any chapter or section can contain a <literal>p:title</literal>. The title "
+"will be displayed next to the chapter/section number. The body of the title "
+"may contain raw text or may be a <literal>p:paragraph</literal>."
+msgstr ""
+"いずれの章やセクションも <literal>p:title</literal> を含むことができます。 タ"
+"イトルは章/セクション番号のとなりに表示されます。 タイトルのボディは、 生テキ"
+"ストを含ませることも、 <literal>p:paragraph</literal> にすることもできます。"
+
+#. Tag: title
+#: Itext.xml:518
+#, no-c-format
+msgid "Lists"
+msgstr "一覧"
+
+#. Tag: para
+#: Itext.xml:519
+#, no-c-format
+msgid ""
+"List structures can be displayed using the <literal>p:list</literal> and "
+"<literal>p:listItem</literal> tags. Lists may contain arbitrarily-nested "
+"sublists. List items may not be used outside of a list. he following "
+"document uses the <literal>ui:repeat</literal> tag to to display a list of "
+"values retrieved from a Seam component."
+msgstr ""
+"一覧の構成は <literal>p:list</literal> と <literal>p:listItem</literal> のタ"
+"グを使って表示させることができます。 一覧には適宜、 ネストされたサブリストを"
+"含ませることもできます。 一覧のアイテムは一覧の外側では使用できません。 次の"
+"ドキュメントは <literal>ui:repeat</literal> タグを使って Seam コンポーネント"
+"から取得した値の一覧を表示しています。"
+
+#. Tag: programlisting
+#: Itext.xml:522
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"\n"
+"            xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"            title=\"Hello\"&gt;\n"
+"   &lt;p:list style=\"numbered\"&gt;\n"
+"      &lt;ui:repeat value=\"#{documents}\" var=\"doc\"&gt;\n"
+"         &lt;p:listItem&gt;#{doc.name}&lt;/p:listItem&gt;\n"
+"      &lt;/ui:repeat&gt;\n"
+"   &lt;/p:list&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"\n"
+"            xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"            title=\"Hello\"&gt;\n"
+"   &lt;p:list style=\"numbered\"&gt;\n"
+"      &lt;ui:repeat value=\"#{documents}\" var=\"doc\"&gt;\n"
+"         &lt;p:listItem&gt;#{doc.name}&lt;/p:listItem&gt;\n"
+"      &lt;/ui:repeat&gt;\n"
+"   &lt;/p:list&gt;\n"
+"&lt;/p:document&gt;"
+
+#. Tag: title
+#: Itext.xml:524
+#, no-c-format
+msgid "p:list"
+msgstr "p:list"
+
+#. Tag: para
+#: Itext.xml:525
+#, no-c-format
+msgid "<literal>p:list</literal> supports the following attributes:"
+msgstr "<literal>p:list</literal> は次の属性をサポートしています。"
+
+#. Tag: para
+#: Itext.xml:532
+#, no-c-format
+msgid ""
+"The ordering/bulleting style of list. One of: <literal>NUMBERED</literal>, "
+"<literal>LETTERED</literal>, <literal>GREEK</literal>, <literal>ROMAN</"
+"literal>, <literal>ZAPFDINGBATS</literal>, <literal>ZAPFDINGBATS_NUMBER</"
+"literal>. If no style is given, the list items are bulleted."
+msgstr ""
+"一覧の順序付けと箇条書きのスタイルです。 <literal>NUMBERED</literal>、 "
+"<literal>LETTERED</literal>、 <literal>GREEK</literal>、 <literal>ROMAN</"
+"literal>、 <literal>ZAPFDINGBATS</literal>、 <literal>ZAPFDINGBATS_NUMBER</"
+"literal> のいずれかを使用します。 スタイルが指定されていないと一覧のアイテム"
+"は箇条書きスタイルになります。"
+
+#. Tag: literal
+#: Itext.xml:538 Itext.xml:611
+#, no-c-format
+msgid "listSymbol"
+msgstr "listSymbol"
+
+#. Tag: para
+#: Itext.xml:540
+#, no-c-format
+msgid "For bulleted lists, specifies the bullet symbol."
+msgstr "箇条書きの一覧用で、 箇条書きの記号を指定します。"
+
+#. Tag: literal
+#: Itext.xml:546 Itext.xml:818
+#, no-c-format
+msgid "indent"
+msgstr "indent"
+
+#. Tag: para
+#: Itext.xml:548
+#, no-c-format
+msgid "The indentation level of the list."
+msgstr "一覧のインデントレベルです。"
+
+#. Tag: literal
+#: Itext.xml:554
+#, no-c-format
+msgid "lowerCase"
+msgstr "lowerCase"
+
+#. Tag: para
+#: Itext.xml:556
+#, no-c-format
+msgid ""
+"For list styles using letters, indicates whether the letters should be lower "
+"case."
+msgstr "文字を使った一覧スタイル用で、 この文字を小文字にするかどうかを指示します。"
+
+#. Tag: literal
+#: Itext.xml:562
+#, no-c-format
+msgid "charNumber"
+msgstr "charNumber"
+
+#. Tag: para
+#: Itext.xml:564
+#, no-c-format
+msgid "For ZAPFDINGBATS, indicates the character code of the bullet character."
+msgstr "ZAPFDINGBATS 用で、 箇条書きの記号の文字コードを指示します。"
+
+#. Tag: literal
+#: Itext.xml:570
+#, no-c-format
+msgid "numberType"
+msgstr "numberType"
+
+#. Tag: para
+#: Itext.xml:572
+#, no-c-format
+msgid "For ZAPFDINGBATS_NUMBER, indicates the numbering style."
+msgstr "ZAPFDINGBATS_NUMBER 用で、 番号付けのスタイルを指示します。"
+
+#. Tag: title
+#: Itext.xml:581
+#, no-c-format
+msgid "p:listItem"
+msgstr "p:listItem"
+
+#. Tag: para
+#: Itext.xml:582
+#, no-c-format
+msgid "<literal>p:listItem</literal> supports the following attributes:"
+msgstr "<literal>p:listItem</literal> は次の属性をサポートしています。"
+
+#. Tag: para
+#: Itext.xml:589
+#, no-c-format
+msgid ""
+"The alignment of the list item. (See <xref linkend=\"Seam_Reference_Guide-"
+"Document_Constants-Alignment_Values\"/> for possible values)"
+msgstr ""
+"一覧のアイテムの位置です。 (可能な値は <xref linkend=\"Seam_Reference_Guide-"
+"Document_Constants-Alignment_Values\"/> ã‚’"
+"参照)"
+
+#. Tag: para
+#: Itext.xml:597
+#, no-c-format
+msgid "The left indentation amount."
+msgstr "左インデントの量です。"
+
+#. Tag: para
+#: Itext.xml:605
+#, no-c-format
+msgid "The right indentation amount."
+msgstr "右インデントの量です。"
+
+#. Tag: para
+#: Itext.xml:613
+#, no-c-format
+msgid "Overrides the default list symbol for this list item."
+msgstr "この一覧アイテムのデフォルト一覧記号を上書きします。"
+
+#. Tag: title
+#: Itext.xml:624
+#, no-c-format
+msgid "Tables"
+msgstr "表"
+
+#. Tag: para
+#: Itext.xml:625
+#, no-c-format
+msgid ""
+"Table structures can be created using the <literal>p:table</literal> and "
+"<literal>p:cell</literal> tags. Unlike many table structures, there is no "
+"explicit row declaration. If a table has 3 columns, then every 3 cells will "
+"automatically form a row. Header and footer rows can be declared, and the "
+"headers and footers will be repeated in the event a table structure spans "
+"multiple pages."
+msgstr ""
+"表の構成は  <literal>p:table</literal> と <literal>p:cell</literal> のタグを"
+"使って作成することができます。 多くの表構成とは異なり明示的な列の宣言はありま"
+"せん。 表にコラムが 3 つある場合は、 3 セルすべてが自動的に列を形成します。 "
+"表の構成が複数ページに渡る場合、 ヘッダとフッタは繰り返されます。"
+
+#. Tag: programlisting
+#: Itext.xml:628
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"   \n"
+"            xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"            title=\"Hello\"&gt;   \n"
+"   &lt;p:table columns=\"3\" headerRows=\"1\"&gt;\n"
+"      &lt;p:cell&gt;name&lt;/p:cell&gt;\n"
+"      &lt;p:cell&gt;owner&lt;/p:cell&gt;\n"
+"      &lt;p:cell&gt;size&lt;/p:cell&gt;\n"
+"      &lt;ui:repeat value=\"#{documents}\" var=\"doc\"&gt;\n"
+"         &lt;p:cell&gt;#{doc.name}&lt;/p:cell&gt;\n"
+"         &lt;p:cell&gt;#{doc.user.name}&lt;/p:cell&gt;\n"
+"         &lt;p:cell&gt;#{doc.size}&lt;/p:cell&gt;\n"
+"      &lt;/ui:repeat&gt;\n"
+"   &lt;/p:table&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"   \n"
+"            xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"            title=\"Hello\"&gt;   \n"
+"   &lt;p:table columns=\"3\" headerRows=\"1\"&gt;\n"
+"      &lt;p:cell&gt;name&lt;/p:cell&gt;\n"
+"      &lt;p:cell&gt;owner&lt;/p:cell&gt;\n"
+"      &lt;p:cell&gt;size&lt;/p:cell&gt;\n"
+"      &lt;ui:repeat value=\"#{documents}\" var=\"doc\"&gt;\n"
+"         &lt;p:cell&gt;#{doc.name}&lt;/p:cell&gt;\n"
+"         &lt;p:cell&gt;#{doc.user.name}&lt;/p:cell&gt;\n"
+"         &lt;p:cell&gt;#{doc.size}&lt;/p:cell&gt;\n"
+"      &lt;/ui:repeat&gt;\n"
+"   &lt;/p:table&gt;\n"
+"&lt;/p:document&gt;"
+
+#. Tag: title
+#: Itext.xml:630
+#, no-c-format
+msgid "p:table"
+msgstr "p:table"
+
+#. Tag: para
+#: Itext.xml:631
+#, no-c-format
+msgid "<literal>p:table</literal> supports the following attributes."
+msgstr "<literal>p:table</literal> は次の属性をサポートしています。"
+
+#. Tag: literal
+#: Itext.xml:636
+#, no-c-format
+msgid "columns"
+msgstr "columns"
+
+#. Tag: para
+#: Itext.xml:638
+#, no-c-format
+msgid "The number of columns (cells) that make up a table row."
+msgstr "表の列を構成するコラム (セル) の数です。"
+
+#. Tag: literal
+#: Itext.xml:644
+#, no-c-format
+msgid "widths"
+msgstr "widths"
+
+#. Tag: para
+#: Itext.xml:646
+#, no-c-format
+msgid ""
+"The relative widths of each column. There should be one value for each "
+"column. For example: widths=\"2 1 1\" would indicate that there are 3 "
+"columns and the first column should be twice the size of the second and "
+"third column."
+msgstr ""
+"各コラムに関連する幅です。 各コラムに 1 つの値があるはずです。 たとえば、 "
+"widths=\"2 1 1\" なら、 コラムが 3 つあり 1 番目のコラムのサイズは 2 番目と "
+"3 番目のコラムの 2 倍になっているはずです。"
+
+#. Tag: literal
+#: Itext.xml:652
+#, no-c-format
+msgid "headerRows"
+msgstr "headerRows"
+
+#. Tag: para
+#: Itext.xml:654
+#, no-c-format
+msgid ""
+"The initial number of rows which are considered to be headers or footer rows "
+"and should be repeated if the table spans multiple pages."
+msgstr ""
+"ヘッダまたはフッタの列とみなされる最初の列番号で、 表が複数ページにわたる場合"
+"には繰り返されるはずです。"
+
+#. Tag: literal
+#: Itext.xml:660
+#, no-c-format
+msgid "footerRows"
+msgstr "footerRows"
+
+#. Tag: para
+#: Itext.xml:662
+#, no-c-format
+msgid ""
+"The number of rows that are considered to be footer rows. This value is "
+"subtracted from the <literal>headerRows</literal> value. If document has 2 "
+"rows which make up the header and one row that makes up the footer, "
+"<literal>headerRows</literal> should be set to 3 and <literal>footerRows</"
+"literal> should be set to 1"
+msgstr ""
+"フッタの列とみなされる列の番号です。 この値は <literal>headerRows</literal> "
+"値から差し引かれます。 ドキュメントにヘッダを構成する列が 2 列ありフッタを構"
+"成する列が 1 列の場合、 <literal>headerRows</literal> は 3 に設定され "
+"<literal>footerRows</literal> は 1 に設定されているはずです。"
+
+#. Tag: para
+#: Itext.xml:670
+#, no-c-format
+msgid "The percentage of the page width that the table spans."
+msgstr "表が表示されるページ幅の割合です。"
+
+#. Tag: literal
+#: Itext.xml:676 Itext.xml:773
+#, no-c-format
+msgid "horizontalAlignment"
+msgstr "horizontalAlignment"
+
+#. Tag: para
+#: Itext.xml:678
+#, no-c-format
+msgid ""
+"The horizontal alignment of the table. (See <xref linkend="
+"\"Seam_Reference_Guide-Document_Constants-Alignment_Values\"/> for possible "
+"values)"
+msgstr ""
+"表の横方向位置修正です。 (可能な値については <xref linkend="
+"\"Seam_Reference_Guide-Document_Constants-Alignment_Values\"/> を参照)"
+
+#. Tag: literal
+#: Itext.xml:684
+#, no-c-format
+msgid "skipFirstHeader"
+msgstr "skipFirstHeader"
+
+#. Tag: literal
+#: Itext.xml:691 Itext.xml:881
+#, no-c-format
+msgid "runDirection"
+msgstr "runDirection"
+
+#. Tag: literal
+#: Itext.xml:698
+#, no-c-format
+msgid "lockedWidth"
+msgstr "lockedWidth"
+
+#. Tag: literal
+#: Itext.xml:705
+#, no-c-format
+msgid "splitRows"
+msgstr "splitRows"
+
+#. Tag: literal
+#: Itext.xml:728
+#, no-c-format
+msgid "extendLastRow"
+msgstr "extendLastRow"
+
+#. Tag: literal
+#: Itext.xml:735
+#, no-c-format
+msgid "headersInEvent"
+msgstr "headersInEvent"
+
+#. Tag: literal
+#: Itext.xml:742
+#, no-c-format
+msgid "splitLate"
+msgstr "splitLate"
+
+#. Tag: title
+#: Itext.xml:759
+#, no-c-format
+msgid "p:cell"
+msgstr "p:cell"
+
+#. Tag: para
+#: Itext.xml:760
+#, no-c-format
+msgid "<literal>p:cell</literal> supports the following attributes."
+msgstr "<literal>p:cell</literal> は次の属性をサポートしています。"
+
+#. Tag: literal
+#: Itext.xml:765
+#, no-c-format
+msgid "colspan"
+msgstr "colspan"
+
+#. Tag: para
+#: Itext.xml:767
+#, no-c-format
+msgid ""
+"Cells can span more than one column by declaring a <literal>colspan</"
+"literal> greater than 1. Tables do not have the ability to span across "
+"multiple rows."
+msgstr ""
+"<literal>colspan</literal> を 1 越える値に宣言するとセルが 1 コラムを越えるこ"
+"とができます。 表を複数の列にわたって広げる機能はありません。"
+
+#. Tag: para
+#: Itext.xml:775
+#, no-c-format
+msgid ""
+"The horizontal alignment of the cell. (see <xref linkend="
+"\"Seam_Reference_Guide-Document_Constants-Alignment_Values\"/> for possible "
+"values)"
+msgstr ""
+"セルの横方向位置調整です。 (可能な値は <xref linkend="
+"\"Seam_Reference_Guide-Document_Constants-Alignment_Values\"/> ã‚’"
+"参照)"
+
+#. Tag: literal
+#: Itext.xml:781 Itext.xml:825
+#, no-c-format
+msgid "verticalAlignment"
+msgstr "verticalAlignment"
+
+#. Tag: para
+#: Itext.xml:783
+#, no-c-format
+msgid ""
+"The vertical alignment of the cell. (see <xref linkend="
+"\"Seam_Reference_Guide-Document_Constants-Alignment_Values\"/> for possible "
+"values)"
+msgstr ""
+"セルの縦方向位置調整です。 (可能な値は <xref linkend="
+"\"Seam_Reference_Guide-Document_Constants-Alignment_Values\"/> ã‚’"
+"参照)"
+
+#. Tag: literal
+#: Itext.xml:789
+#, no-c-format
+msgid "padding"
+msgstr "padding"
+
+#. Tag: para
+#: Itext.xml:791
+#, no-c-format
+msgid ""
+"Padding on a given side can also be specified using <literal>paddingLeft</"
+"literal>, <literal>paddingRight</literal>, <literal>paddingTop</literal> and "
+"<literal>paddingBottom</literal>."
+msgstr ""
+"<literal>paddingLeft</literal>、 <literal>paddingRight</literal>、 "
+"<literal>paddingTop</literal>、 <literal>paddingBottom</literal> を使って特定"
+"の側面を詰めることを指定することもできます。"
+
+#. Tag: literal
+#: Itext.xml:797
+#, no-c-format
+msgid "useBorderPadding"
+msgstr "useBorderPadding"
+
+#. Tag: literal
+#: Itext.xml:839
+#, no-c-format
+msgid "fixedHeight"
+msgstr "fixedHeight"
+
+#. Tag: literal
+#: Itext.xml:846
+#, no-c-format
+msgid "noWrap"
+msgstr "noWrap"
+
+#. Tag: literal
+#: Itext.xml:853
+#, no-c-format
+msgid "minimumHeight"
+msgstr "minimumHeight"
+
+#. Tag: literal
+#: Itext.xml:860
+#, no-c-format
+msgid "followingIndent"
+msgstr "followingIndent"
+
+#. Tag: literal
+#: Itext.xml:867
+#, no-c-format
+msgid "rightIndent"
+msgstr "rightIndent"
+
+#. Tag: literal
+#: Itext.xml:874
+#, no-c-format
+msgid "spaceCharRatio"
+msgstr "spaceCharRatio"
+
+#. Tag: literal
+#: Itext.xml:888
+#, no-c-format
+msgid "arabicOptions"
+msgstr "arabicOptions"
+
+#. Tag: literal
+#: Itext.xml:895
+#, no-c-format
+msgid "useAscender"
+msgstr "useAscender"
+
+#. Tag: literal
+#: Itext.xml:902
+#, no-c-format
+msgid "grayFill"
+msgstr "grayFill"
+
+#. Tag: title
+#: Itext.xml:921
+#, no-c-format
+msgid "Document Constants"
+msgstr "ドキュメントの定数"
+
+#. Tag: para
+#: Itext.xml:922
+#, no-c-format
+msgid ""
+"This section documents some of the constants shared by attributes on "
+"multiple tags."
+msgstr "本セクションでは複数のタグで属性により共有される定数のいくつか説明します。"
+
+#. Tag: title
+#: Itext.xml:926
+#, no-c-format
+msgid "Color Values"
+msgstr "Color Values"
+
+#. Tag: para
+#: Itext.xml:927
+#, no-c-format
+msgid ""
+"Seam documents do not yet support a full color specification. Currently, "
+"only named colors are supported. They are: <literal>white</literal>, "
+"<literal>gray</literal>, <literal>lightgray</literal>, <literal>darkgray</"
+"literal>, <literal>black</literal>, <literal>red</literal>, <literal>pink</"
+"literal>, <literal>yellow</literal>, <literal>green</literal>, "
+"<literal>magenta</literal>, <literal>cyan</literal> and <literal>blue</"
+"literal>."
+msgstr ""
+"Seam のドキュメントはまだフルカラー仕様をサポートしていません。 現在、 次の指"
+"定色のみサポートされています。 <literal>white</literal>、 <literal>gray</"
+"literal>、 <literal>lightgray</literal>、 <literal>darkgray</literal>、 "
+"<literal>black</literal>、 <literal>red</literal>、 <literal>pink</"
+"literal>、 <literal>yellow</literal>、 <literal>green</literal>、 "
+"<literal>magenta</literal>、 <literal>cyan</literal>、 <literal>blue</"
+"literal> です。"
+
+#. Tag: title
+#: Itext.xml:933
+#, no-c-format
+msgid "Alignment Values"
+msgstr "位置調整の値"
+
+#. Tag: para
+#: Itext.xml:934
+#, no-c-format
+msgid ""
+"Where alignment values are used, the Seam PDF supports the following "
+"horizontal alignment values: <literal>left</literal>, <literal>right</"
+"literal>, <literal>center</literal>, <literal>justify</literal> and "
+"<literal>justifyall</literal>. The vertical alignment values are "
+"<literal>top</literal>, <literal>middle</literal>, <literal>bottom</"
+"literal>, and <literal>baseline</literal>."
+msgstr ""
+"位置調整の値が使用される場所で、 Seam PDF は次の横方向の位置調整値、  "
+"<literal>left</literal>、 <literal>right</literal>、 <literal>center</"
+"literal>、 <literal>justify</literal>、 <literal>justifyall</literal> をサ"
+"ポートしています。 縦方向の値は <literal>top</literal>、 <literal>middle</"
+"literal>、 <literal>bottom</literal>、 <literal>baseline</literal> です。"
+
+#. Tag: title
+#: Itext.xml:942
+#, no-c-format
+msgid "Configuring iText"
+msgstr "iText を設定する"
+
+#. Tag: para
+#: Itext.xml:943
+#, no-c-format
+msgid ""
+"Document generation works out of the box with no additional configuration "
+"needed. However, there are a few points of configuration that are needed for "
+"more serious applications."
+msgstr ""
+"ドキュメントの生成は特に設定を必要とすることなく、 そのまま動作させることがで"
+"きます。 ただし、 本格的なアプリケーションには必要となる設定ポイントがいくつ"
+"かあります。"
+
+#. Tag: para
+#: Itext.xml:946
+#, no-c-format
+msgid ""
+"The default implementation serves PDF documents from a generic URL, "
+"<literal>/seam-doc.seam</literal>. Many browsers (and users) would prefer to "
+"see URLs that contain the actual PDF name like <literal>/myDocument.pdf</"
+"literal>. This capability requires some configuration. To serve PDF files, "
+"all *.pdf resources should be mapped to the Seam Servlet Filter and to the "
+"DocumentStoreServlet:"
+msgstr ""
+"デフォルトの実装は汎用 URL <literal>/seam-doc.seam</literal> から PDF ドキュ"
+"メントを提供します。 多くのブラウザ (そしてユーザー) は、 <literal>/"
+"myDocument.pdf</literal> などのように実際の PDF 名を含む URL を好みます。 こ"
+"れにはいくつか設定が必要になってきます。 PDF ファイルを提供するには、 すべて"
+"の *.pdf リソースが Seam Servlet Filter および DocumentStoreServlet にマッピ"
+"ングされなければなりません。"
+
+#. Tag: programlisting
+#: Itext.xml:949
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.servlet.SeamServletFilter&lt;/filter-"
+"class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;\n"
+"\n"
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.pdf.DocumentStoreServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"\n"
+"&lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+msgstr ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.servlet.SeamServletFilter&lt;/filter-"
+"class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;\n"
+"\n"
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.pdf.DocumentStoreServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"\n"
+"&lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+
+#. Tag: para
+#: Itext.xml:950
+#, no-c-format
+msgid ""
+"The <literal>useExtensions</literal> option on the document store component "
+"completes the functionality by instructing the document store to generate "
+"URLs with the correct filename extension for the document type being "
+"generated."
+msgstr ""
+"document store コンポーネントにある <literal>useExtensions</literal> オプショ"
+"ンは、 document store に生成されているドキュメントタイプに対して正しいファイ"
+"ル名の拡張子を付けて URL を生成するよう指示することによりこの機能を補います。"
+
+#. Tag: programlisting
+#: Itext.xml:953
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pdf=\"http://jboss.com/products/seam/pdf\"&gt;\n"
+"    &lt;pdf:documentStore useExtensions=\"true\" /&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pdf=\"http://jboss.com/products/seam/pdf\"&gt;\n"
+"    &lt;pdf:documentStore useExtensions=\"true\" /&gt;\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Itext.xml:954
+#, no-c-format
+msgid ""
+"Generated documents are stored in conversation scope and will expire when "
+"the conversation ends. At that point, references to the document will be "
+"invalid. To You can specify a default view to be shown when a document does "
+"not exist using the <literal>errorPage</literal> property of the "
+"documentStore."
+msgstr ""
+"生成されるドキュメントは対話スコープに格納され、 対話が終了するときに期限が切"
+"れます。 この時点で、 ドキュメントへの参照は無効になります。 ドキュメントが存"
+"在しない場合、 documentStore の <literal>errorPage</literal> プロパティを使っ"
+"て表示されるデフォルトのビューを指定できます。"
+
+#. Tag: programlisting
+#: Itext.xml:957
+#, no-c-format
+msgid ""
+"&lt;pdf:documentStore useExtensions=\"true\" errorPage=\"/pdfMissing.seam\" /"
+"&gt;"
+msgstr ""
+"&lt;pdf:documentStore useExtensions=\"true\" errorPage=\"/pdfMissing.seam\" /"
+"&gt;"
+
+#. Tag: title
+#: Itext.xml:961
+#, no-c-format
+msgid "iText links"
+msgstr "iText のリンク"
+
+#. Tag: para
+#: Itext.xml:962
+#, no-c-format
+msgid "For further information on iText, see:"
+msgstr "iText に関する詳細は、 次を参照してください。"
+
+#. Tag: ulink
+#: Itext.xml:969
+#, no-c-format
+msgid "iText Home Page"
+msgstr "iText ホームページ"
+
+#. Tag: ulink
+#: Itext.xml:974
+#, no-c-format
+msgid "iText in Action"
+msgstr "iText in Action (実行可能なデモ) "
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Jbpm.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Jbpm.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Jbpm.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1621 @@
+# translation of Jbpm.po to Japanese
+# Noriko Mizumoto <noriko at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Jbpm\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-30 01:52+0000\n"
+"PO-Revision-Date: 2007-10-30 15:52+1000\n"
+"Last-Translator: Noriko Mizumoto <noriko at redhat.com>\n"
+"Language-Team: Japanese <fedora-trans-ja at redhat.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Jbpm.xml:6
+#, no-c-format
+msgid "Pageflows and business processes"
+msgstr "ページフローとビジネスプロセス"
+
+#. Tag: para
+#: Jbpm.xml:7
+#, no-c-format
+msgid ""
+"JBoss jBPM is a business process management engine for any Java SE or EE "
+"environment. jBPM lets you represent a business process or user interaction "
+"as a graph of nodes representing wait states, decisions, tasks, web pages, "
+"etc. The graph is defined using a simple, very readable, XML dialect called "
+"jPDL, and may be edited and visualised graphically using an eclipse plugin. "
+"jPDL is an extensible language, and is suitable for a range of problems, "
+"from defining web application page flow, to traditional workflow management, "
+"all the way up to orchestration of services in a SOA environment."
+msgstr ""
+"JBoss jBPM は、Java SE や EE 環境のためのビジネスプロセス管理エンジンです。 "
+"jBPM は、ビジネスプロセスや、ユーザインタラクションを、 待ち状態、 デシジョ"
+"ン、タスク、WEBページなどを、 ノードの図式として表現を可能にします。 図式は、"
+"簡単でとても読みやすい jPDL と呼ばれる XML 表現を使用して定義されており、 "
+"Eclipse プラグインを利用して、編集、グラフィックによる視覚化が可能です。 "
+"jPDL は拡張可能な言語であり、 WEB アプリケーションのページフローを定義するこ"
+"とから、典型的なワークフローの管理、SOA 環境におけるサービスのオーケストレー"
+"ションまで適応します。"
+
+#. Tag: para
+#: Jbpm.xml:10
+#, no-c-format
+msgid "Seam applications use jBPM for two different problems:"
+msgstr "Seam アプリケーションは jBPM を2 つの異なる問題に使用します。"
+
+#. Tag: para
+#: Jbpm.xml:15
+#, no-c-format
+msgid ""
+"Defining the pageflow involved in complex user interactions. A jPDL process "
+"definition defines the page flow for a single conversation. A Seam "
+"conversation is considered to be a relatively short-running interaction with "
+"a single user."
+msgstr ""
+"複雑なユーザインタラクションを含むページフローを定義します。 jPDL プロセス定"
+"義は、対話のためのページフローを定義します。 Seamコンバセーションは、シングル"
+"ユーザとの相対的に短期な対話のインタラクションであると考えられます。"
+
+#. Tag: para
+#: Jbpm.xml:20
+#, no-c-format
+msgid ""
+"Defining the overarching business process. The business process may span "
+"multiple conversations with multiple users. Its state is persistent in the "
+"jBPM database, so it is considered long-running. Coordination of the "
+"activities of multiple users is a much more complex problem than scripting "
+"an interaction with a single user, so jBPM offers sophisticated facilities "
+"for task management and dealing with multiple concurrent paths of execution."
+msgstr ""
+"ビジネスプロセスを包括的に定義します。 ビジネスプロセスは、複数ユーザの複数の"
+"対話の範囲を含むかもしれません。 その状態は jBPM データベースの中で永続的なの"
+"で、長期的であると考えられます。 複数ユーザのアクティビティの調整は、 シング"
+"ルユーザとのインタラクションについて動作を記述するよりずっと複雑な問題です。 "
+"そこで、jBPM は複数の並行な実行パスを扱うようなタスク管理のための洗練された機"
+"能を提供します。"
+
+#. Tag: para
+#: Jbpm.xml:25
+#, no-c-format
+msgid ""
+"Don&#39;t get these two things confused ! They operate at very different "
+"levels or granularity. <emphasis>Pageflow</emphasis>, "
+"<emphasis>conversation</emphasis> and <emphasis>task</emphasis> all refer to "
+"a single interaction with a single user. A business process spans many "
+"tasks. Futhermore, the two applications of jBPM are totally orthogonal. You "
+"can use them together or independently or not at all."
+msgstr ""
+"これら 2 つのものを混乱しないでください。 それらはかなり違うレベルあるいは粒"
+"度で動作します。 <emphasis>ページフロー</emphasis>、<emphasis>対話</"
+"emphasis>、 そして、<emphasis>タスク</emphasis> すべてはシングルユーザとの 1 "
+"つのインタラクションを参照します。 ビジネスプロセスはいくつものタスクをまたぎ"
+"ます。 さらに、jBPM の 2 つのアプリケーションは直交しています (互いに独立して"
+"いること) 。 それらを一緒に使うことも、独立して使うことも、使わないこともでき"
+"ます。"
+
+#. Tag: para
+#: Jbpm.xml:28
+#, no-c-format
+msgid ""
+"You don&#39;t have to know jDPL to use Seam. If you&#39;re perfectly happy "
+"defining pageflow using JSF or Seam navigation rules, and if your "
+"application is more data-driven that process-driven, you probably don&#39;t "
+"need jBPM. But we&#39;re finding that thinking of user interaction in terms "
+"of a well-defined graphical representation is helping us build more robust "
+"applications."
+msgstr ""
+"Seam を使うために、jPDL を知る必要はありません。 JSF あるいは、Seam ナビゲー"
+"ション規則を使って、ページフローを定義することに満足な場合、 あるいは、アプリ"
+"ケーションがプロセス駆動というよりデータ駆動の場合、 おそらくjBPM は不要で"
+"しょう。 しかし、明確な図式表現でユーザインタラクションを考えることが、 より"
+"堅牢なアプリケーションの構築に役立つことは理解できます。"
+
+#. Tag: title
+#: Jbpm.xml:32
+#, no-c-format
+msgid "Pageflow in Seam"
+msgstr "Seam でのページフロー"
+
+#. Tag: para
+#: Jbpm.xml:33
+#, no-c-format
+msgid "There are two ways to define pageflow in Seam:"
+msgstr "Seam には、ページフローを定義する 2 つの方法があります。"
+
+#. Tag: para
+#: Jbpm.xml:38
+#, no-c-format
+msgid ""
+"Using JSF or Seam navigation rules - the <emphasis>stateless navigation "
+"model</emphasis>"
+msgstr ""
+"JSFあるいはSeam ナビゲーション規則の利用 - <emphasis>ステートレスなナビゲー"
+"ションモデル</emphasis>"
+
+#. Tag: para
+#: Jbpm.xml:43
+#, no-c-format
+msgid "Using jPDL - the <emphasis>stateful navigation model</emphasis>"
+msgstr "jPDL の利用 - <emphasis>ステートフルなナビゲーションモデル</emphasis>"
+
+#. Tag: para
+#: Jbpm.xml:48
+#, no-c-format
+msgid ""
+"Very simple applications will only need the stateless navigation model. Very "
+"complex applications will use both models in different places. Each model "
+"has its strengths and weaknesses!"
+msgstr ""
+"簡単なアプリケーションでは、ステートレスなナビゲーションモデルで十分です。 と"
+"ても複雑なアプリケーションは、場所に応じて両方を使用します。 それぞれのモデル"
+"は、それぞれの強みも弱みもあります。"
+
+#. Tag: title
+#: Jbpm.xml:52
+#, no-c-format
+msgid "The two navigation models"
+msgstr "2 つのナビゲーションモデル"
+
+#. Tag: para
+#: Jbpm.xml:53
+#, no-c-format
+msgid ""
+"The stateless model defines a mapping from a set of named, logical outcomes "
+"of an event directly to the resulting page of the view. The navigation rules "
+"are entirely oblivious to any state held by the application other than what "
+"page was the source of the event. This means that your action listener "
+"methods must sometimes make decisions about the page flow, since only they "
+"have access to the current state of the application."
+msgstr ""
+"ステートレスなモデルは、 一組の名前の付いた論理的なイベントの結果 (outcome) "
+"から 直接、結果として生じるビューのマッピングを定義します。 ナビゲーション規"
+"則は、どのページがイベントのソースであったかということ以外、 アプリケーション"
+"によって保持されたどのような状態も全く気にしません。 これは、アクションリスナ"
+"メソッドがページフローを決めなければならないことがあることを意味しています。 "
+"なぜなら、それらだけがアプリケーションの現在の状態にアクセスできるからです。"
+
+#. Tag: para
+#: Jbpm.xml:56
+#, no-c-format
+msgid "Here is an example page flow definition using JSF navigation rules:"
+msgstr "これは JSF ナビゲーション規則を使用したページフローの例です。"
+
+#. Tag: programlisting
+#: Jbpm.xml:59
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"    &lt;from-view-id&gt;/numberGuess.jsp&lt;/from-view-id&gt;\n"
+"        \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;guess&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/numberGuess.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;win&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/win.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"        \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;lose&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/lose.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+"&lt;navigation-rule&gt;\n"
+"    &lt;from-view-id&gt;/numberGuess.jsp&lt;/from-view-id&gt;\n"
+"        \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;guess&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/numberGuess.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;win&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/win.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"        \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;lose&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/lose.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"&lt;/navigation-rule&gt;"
+
+#. Tag: para
+#: Jbpm.xml:60
+#, no-c-format
+msgid "Here is the same example page flow definition using Seam navigation rules:"
+msgstr "これは Seam ナビゲーション規則を使用したページフローの例です。"
+
+#. Tag: programlisting
+#: Jbpm.xml:63
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/numberGuess.jsp\"&gt;\n"
+"        \n"
+"    &lt;navigation&gt;\n"
+"        &lt;rule if-outcome=\"guess\"&gt;\n"
+"            &lt;redirect view-id=\"/numberGuess.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"        &lt;rule if-outcome=\"win\"&gt;\n"
+"            &lt;redirect view-id=\"/win.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"        &lt;rule if-outcome=\"lose\"&gt;\n"
+"            &lt;redirect view-id=\"/lose.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+"&lt;page view-id=\"/numberGuess.jsp\"&gt;\n"
+"        \n"
+"    &lt;navigation&gt;\n"
+"        &lt;rule if-outcome=\"guess\"&gt;\n"
+"            &lt;redirect view-id=\"/numberGuess.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"        &lt;rule if-outcome=\"win\"&gt;\n"
+"            &lt;redirect view-id=\"/win.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"        &lt;rule if-outcome=\"lose\"&gt;\n"
+"            &lt;redirect view-id=\"/lose.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"&lt;/navigation-rule&gt;"
+
+#. Tag: para
+#: Jbpm.xml:64
+#, no-c-format
+msgid ""
+"If you find navigation rules overly verbose, you can return view ids "
+"directly from your action listener methods:"
+msgstr ""
+"ナビゲーション規則が冗長過ぎると考えるならば、 アクションリスナーメソッドから"
+"直接、ビューIDを返すことが可能です。"
+
+#. Tag: programlisting
+#: Jbpm.xml:67
+#, no-c-format
+msgid ""
+"public String guess() {\n"
+"    if (guess==randomNumber) return \"/win.jsp\";\n"
+"    if (++guessCount==maxGuesses) return \"/lose.jsp\";\n"
+"    return null;\n"
+"}"
+msgstr ""
+"public String guess() {\n"
+"    if (guess==randomNumber) return \"/win.jsp\";\n"
+"    if (++guessCount==maxGuesses) return \"/lose.jsp\";\n"
+"    return null;\n"
+"}"
+
+#. Tag: para
+#: Jbpm.xml:68
+#, no-c-format
+msgid ""
+"Note that this results in a redirect. You can even specify parameters to be "
+"used in the redirect:"
+msgstr ""
+"これは、リダイレクトの結果であることに留意ください。 リダイレクト中に使用する"
+"パラメータを指定することも可能です。"
+
+#. Tag: programlisting
+#: Jbpm.xml:71
+#, no-c-format
+msgid ""
+"public String search() {\n"
+"    return \"/searchResults.jsp?searchPattern=#{searchAction.searchPattern}"
+"\";\n"
+"}"
+msgstr ""
+"public String search() {\n"
+"    return \"/searchResults.jsp?searchPattern=#{searchAction.searchPattern}"
+"\";\n"
+"}"
+
+#. Tag: para
+#: Jbpm.xml:72
+#, no-c-format
+msgid ""
+"The stateful model defines a set of transitions between a set of named, "
+"logical application states. In this model, it is possible to express the "
+"flow of any user interaction entirely in the jPDL pageflow definition, and "
+"write action listener methods that are completely unaware of the flow of the "
+"interaction."
+msgstr ""
+"ステートフルなモデルは、 名前の付いた論理的なアプリケーションの状態間で起こる"
+"遷移の組み合わせを定義します。 このモデルでは、jPDL ページフロー定義中に、ど"
+"のようなユーザインタラクションのフロー表現も可能であり、 インタラクションのフ"
+"ローを全く知らないアクションリスナーメソッドを書くことも可能です。"
+
+#. Tag: para
+#: Jbpm.xml:75
+#, no-c-format
+msgid "Here is an example page flow definition using jPDL:"
+msgstr "これは jPDL を使用したページフロー定義の例です。"
+
+#. Tag: programlisting
+#: Jbpm.xml:78
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"numberGuess\"&gt;\n"
+"    \n"
+"   &lt;start-page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"              &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"      &lt;/transition&gt;\n"
+"   &lt;/start-page&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess."
+"correctGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateRemainingGuesses\" expression=\"#{numberGuess."
+"lastGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"lose\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"displayGuess\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"lose\" view-id=\"/lose.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+"&lt;pageflow-definition name=\"numberGuess\"&gt;\n"
+"    \n"
+"   &lt;start-page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"              &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"      &lt;/transition&gt;\n"
+"   &lt;/start-page&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess."
+"correctGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateRemainingGuesses\" expression=\"#{numberGuess."
+"lastGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"lose\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"displayGuess\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"lose\" view-id=\"/lose.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+
+#. Tag: para
+#: Jbpm.xml:87
+#, no-c-format
+msgid "There are two things we notice immediately here:"
+msgstr "ここで、すぐに気づく 2 つのことがあります。"
+
+#. Tag: para
+#: Jbpm.xml:92
+#, no-c-format
+msgid ""
+"The JSF/Seam navigation rules are <emphasis>much</emphasis> simpler. "
+"(However, this obscures the fact that the underlying Java code is more "
+"complex.)"
+msgstr ""
+"JSF/Seam ナビゲーション規則は、<emphasis>より</emphasis> 簡単です。 (しかし、"
+"これは、根底となる Java コードがより複雑化であるという事実をあいまいにしてい"
+"ます。)"
+
+#. Tag: para
+#: Jbpm.xml:97
+#, no-c-format
+msgid ""
+"The jPDL makes the user interaction immediately understandable, without us "
+"needing to even look at the JSP or Java code."
+msgstr ""
+"jPDL は、JSP や Java コードを見る必要がなく、 即座に、ユーザインタラクション"
+"の理解ができます。"
+
+#. Tag: para
+#: Jbpm.xml:102
+#, no-c-format
+msgid ""
+"In addition, the stateful model is more <emphasis>constrained</emphasis>. "
+"For each logical state (each step in the page flow), there are a constrained "
+"set of possible transitions to other states. The stateless model is an "
+"<emphasis>ad hoc</emphasis> model which is suitable to relatively "
+"unconstrained, freeform navigation where the user decides where he/she wants "
+"to go next, not the application."
+msgstr ""
+"それに加えて、ステートフルモデルは、もっと <emphasis>制約的</emphasis> で"
+"す。 各論理的な状態 (ページフローの各ステップ) に対して他の状態に遷移可能な制"
+"約された組み合わせがあります。 ステートレスモデルは、<emphasis>アドホックな</"
+"emphasis> モデルです。 それは、アプリケーションではなく、 比較的制約のない、"
+"ユーザが次に行きたいところを決めるフリーフォームナビゲーションに適していま"
+"す。"
+
+#. Tag: para
+#: Jbpm.xml:105
+#, no-c-format
+msgid ""
+"The stateful/stateless navigation distinction is quite similar to the "
+"traditional view of modal/modeless interaction. Now, Seam applications are "
+"not usually modal in the simple sense of the word - indeed, avoiding "
+"application modal behavior is one of the main reasons for having "
+"conversations! However, Seam applications can be, and often are, modal at "
+"the level of a particular conversation. It is well-known that modal behavior "
+"is something to avoid as much as possible; it is very difficult to predict "
+"the order in which your users are going to want to do things! However, there "
+"is no doubt that the stateful model has its place."
+msgstr ""
+"ステートフル / ステートレスナビゲーションの判断は、 典型的なモーダル / モーダ"
+"レスインタラクションの考え方ととてもよく似ています。 さて、アプリケーションを"
+"モーダルな振る舞いから回避することは、 対話を持つ 1 つの主な理由ですが、 "
+"Seam アプリケーションは、 通常、単純な意味でのモーダルではありません。 しか"
+"し、Seam アプリケーションは、 特定な対話レベルで、モーダル可能であり、しばし"
+"ばそうです。 モーダルな振る舞いは、 可能な限り回避したものとして知られていま"
+"す。 ユーザがしたいことの順番を予測することは、とても困難です。 しかし、ス"
+"テートフルモデルの存在意義があるのは疑う余地はありません。"
+
+#. Tag: para
+#: Jbpm.xml:108
+#, no-c-format
+msgid "The biggest contrast between the two models is the back-button behavior."
+msgstr "2 つのモデルの最大の違いは、 戻るボタンの振る舞いです。"
+
+#. Tag: title
+#: Jbpm.xml:114
+#, no-c-format
+msgid "Seam and the back button"
+msgstr "Seam と 戻るボタン"
+
+#. Tag: para
+#: Jbpm.xml:115
+#, no-c-format
+msgid ""
+"When JSF or Seam navigation rules are used, Seam lets the user freely "
+"navigate via the back, forward and refresh buttons. It is the responsibility "
+"of the application to ensure that conversational state remains internally "
+"consistent when this occurs. Experience with the combination of web "
+"application frameworks like Struts or WebWork - that do not support a "
+"conversational model - and stateless component models like EJB stateless "
+"session beans or the Spring framework has taught many developers that this "
+"is close to impossible to do! However, our experience is that in the context "
+"of Seam, where there is a well-defined conversational model, backed by "
+"stateful session beans, it is actually quite straightforward. Usually it is "
+"as simple as combining the use of <literal>no-conversation-view-id</literal> "
+"with null checks at the beginning of action listener methods. We consider "
+"support for freeform navigation to be almost always desirable."
+msgstr ""
+"JSF あるいは Seam ナビゲーション規則が使用されている場合、 Seam は、ユーザに"
+"戻る、進む、更新ボタンの自由なナビゲーションを可能にします。 これが発生したと"
+"き、 内部的な対話状態の一貫性を保持することは、 アプリケーションの責任です。 "
+"Struts や WebWork のような対話モデルをサポートしない WEB アプリケーションフ"
+"レームワーク、 そして、EJB ステートレスセッションBean や Spring framework の"
+"ようなステートレスコンポーネントモデルの組み合わせの経験は、 多くの開発者にこ"
+"れをすることは、ほとんど不可能であることを教えていました。 しかし、Seam のコ"
+"ンテキストでの経験から、 ステートフルセッション Bean に裏付けられた明確な対話"
+"モデルがあるところでは、 それは実際とても簡単です。 通常、それは、アクション"
+"リスナーメソッドの最初に、 <literal>no-conversation-view-id</literal> アノ"
+"テーションと null チェックの使用を組合わせる程度に簡単です。 私たちは、フリー"
+"フォームナビゲーションのサポートは、 ほぼいつも要求されるものと考えています。"
+
+#. Tag: para
+#: Jbpm.xml:118
+#, no-c-format
+msgid ""
+"In this case, the <literal>no-conversation-view-id</literal> declaration "
+"goes in <literal>pages.xml</literal>. It tells Seam to redirect to a "
+"different page if a request originates from a page rendered during a "
+"conversation, and that conversation no longer exists:"
+msgstr ""
+"この場合、<literal>no-conversation-view-id</literal>の宣言は <literal>pages."
+"xml</literal>で行います。 対話中のレンダリングされたページからのリクエストの"
+"場合、 異なるページにリダイレクトして、その対話は存在していないことを Seamに"
+"伝えることになります。"
+
+#. Tag: programlisting
+#: Jbpm.xml:121
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/checkout.xhtml\" \n"
+"        no-conversation-view-id=\"/main.xhtml\"/&gt;"
+msgstr ""
+"&lt;page view-id=\"/checkout.xhtml\" \n"
+"        no-conversation-view-id=\"/main.xhtml\"/&gt;"
+
+#. Tag: para
+#: Jbpm.xml:122
+#, no-c-format
+msgid ""
+"On the other hand, in the stateful model, backbuttoning is interpreted as an "
+"undefined transition back to a previous state. Since the stateful model "
+"enforces a defined set of transitions from the current state, back buttoning "
+"is be default disallowed in the stateful model! Seam transparently detects "
+"the use of the back button, and blocks any attempt to perform an action from "
+"a previous, \"stale\" page, and simply redirects the user to the \"current\" "
+"page (and displays a faces message). Whether you consider this a feature or "
+"a limitation of the stateful model depends upon your point of view: as an "
+"application developer, it is a feature; as a user, it might be frustrating! "
+"You can enable backbutton navigation from a particular page node by setting "
+"<literal>back=\"enabled\"</literal>."
+msgstr ""
+"一方、ステートフルモデルでは、 戻るボタンを押すことは、前の状態への未定義な遷"
+"移として中断されます。 なぜなら、ステートフルモデルは、 現在の状態からの遷移"
+"の組み合わせを強制します。 ステートフルモデルでは、戻るボタンは、デフォルトで"
+"無効です。 Seamは透過的に戻るボタンの使用を検知し、 前の \"古い\" ページから"
+"のアクションが実行されるのをブロックし、 そして、単純に、\"現在の\" ページを"
+"リダイレクトします。 (そして、faces メッセージを表示します。) これを特徴と考"
+"えるか、あるいは、ステートフルモデルの制約と考えるかは、 アプリケーション開発"
+"者としての視点次第です。 ユーザとしては、この特徴はイライラさせられるかもしれ"
+"ません。 特定のページからの <literal>back=\"enabled\"</literal> 設定により、 "
+"戻るボタンナビゲーションを可能とすることもできます。"
+
+#. Tag: programlisting
+#: Jbpm.xml:125
+#, no-c-format
+msgid ""
+"&lt;page name=\"checkout\" \n"
+"        view-id=\"/checkout.xhtml\" \n"
+"        back=\"enabled\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"checkout\"/&gt;\n"
+"    &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page name=\"checkout\" \n"
+"        view-id=\"/checkout.xhtml\" \n"
+"        back=\"enabled\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"checkout\"/&gt;\n"
+"    &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Jbpm.xml:126
+#, no-c-format
+msgid ""
+"This allows backbuttoning <emphasis>from</emphasis> the <literal>checkout</"
+"literal> state to <emphasis>any previous state!</emphasis>"
+msgstr ""
+"これは、<literal>checkout</literal> 状態 <emphasis>から</emphasis><emphasis>"
+"以前のどの状態</emphasis> にでも戻るボタンでの遷移が可能です。"
+
+#. Tag: para
+#: Jbpm.xml:129
+#, no-c-format
+msgid ""
+"Of course, we still need to define what happens if a request originates from "
+"a page rendered during a pageflow, and the conversation with the pageflow no "
+"longer exists. In this case, the <literal>no-conversation-view-id</literal> "
+"declaration goes into the pageflow definition:"
+msgstr ""
+"もちろん、ページフローのレンダリングされたページからのリクエストの場合も、 異"
+"なるページにリダイレクトして、そのページフローでの対話は存在していないことを "
+"定義しなければなりません。この場合、<literal>no-conversation-view-id</"
+"literal> の宣言は、ページフロー定義で行います:"
+
+#. Tag: programlisting
+#: Jbpm.xml:132
+#, no-c-format
+msgid ""
+"&lt;page name=\"checkout\" \n"
+"        view-id=\"/checkout.xhtml\" \n"
+"        back=\"enabled\" \n"
+"        no-conversation-view-id=\"/main.xhtml\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"checkout\"/&gt;\n"
+"    &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page name=\"checkout\" \n"
+"        view-id=\"/checkout.xhtml\" \n"
+"        back=\"enabled\" \n"
+"        no-conversation-view-id=\"/main.xhtml\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"checkout\"/&gt;\n"
+"    &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Jbpm.xml:134
+#, no-c-format
+msgid ""
+"In practice, both navigation models have their place, and you&#39;ll quickly "
+"learn to recognize when to prefer one model over the other."
+msgstr ""
+"実際、どちらのナビゲーションモデルも、それにふさわしい場所があります。 いつ、"
+"どちらのモデルがふさわしいかは、すぐに理解できるようになります。"
+
+#. Tag: title
+#: Jbpm.xml:142
+#, no-c-format
+msgid "Using jPDL pageflows"
+msgstr "jPDL ページフローの使用"
+
+#. Tag: title
+#: Jbpm.xml:144
+#, no-c-format
+msgid "Installing pageflows"
+msgstr "ページフローの設定"
+
+#. Tag: para
+#: Jbpm.xml:145
+#, no-c-format
+msgid ""
+"We need to install the Seam jBPM-related components, and tell them where to "
+"find our pageflow definition. We can specify this Seam configuration in "
+"<literal>components.xml</literal>."
+msgstr ""
+"Seam の jBPM 関連のコンポーネントをインストールし、 ページフロー定義の場所を"
+"指示する必要があります。 この <literal>components.xml</literal> に Seam 設定"
+"を指定することができます。"
+
+#. Tag: programlisting
+#: Jbpm.xml:148
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:pageflow-definitions&gt;\n"
+"        &lt;value&gt;pageflow.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:pageflow-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:pageflow-definitions&gt;\n"
+"        &lt;value&gt;pageflow.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:pageflow-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+
+#. Tag: para
+#: Jbpm.xml:149
+#, no-c-format
+msgid ""
+"The first line installs jBPM, the second points to a jPDL-based pageflow "
+"definition."
+msgstr ""
+"最初の行は jBPM を設定します、2 番目は jPDL ベースのページフロー定義を指定し"
+"ています。"
+
+#. Tag: title
+#: Jbpm.xml:155
+#, no-c-format
+msgid "Starting pageflows"
+msgstr "ページフローの開始"
+
+#. Tag: para
+#: Jbpm.xml:156
+#, no-c-format
+msgid ""
+"We \"start\" a jPDL-based pageflow by specifying the name of the process "
+"definition using a <literal>@Begin</literal>, <literal>@BeginTask</literal> "
+"or <literal>@StartTask</literal> annotation:"
+msgstr ""
+"<literal>@Begin</literal>、<literal>@BeginTask</literal> あるいは、 "
+"<literal>@StartTask</literal> アノテーションを使用して、 プロセス定義の名前を"
+"指定することによって、 jPDL ベースのページフローを開始します:"
+
+#. Tag: programlisting
+#: Jbpm.xml:159
+#, no-c-format
+msgid ""
+"@Begin(pageflow=\"numberguess\")\n"
+"public void begin() { ... }"
+msgstr ""
+"@Begin(pageflow=\"numberguess\")\n"
+"public void begin() { ... }"
+
+#. Tag: para
+#: Jbpm.xml:160
+#, no-c-format
+msgid "Alternatively we can start a pageflow using pages.xml:"
+msgstr "もしくは、pages.xmlを使用してページフローを開始できます。"
+
+#. Tag: programlisting
+#: Jbpm.xml:163
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"        &lt;begin-conversation pageflow=\"numberguess\"/&gt;\n"
+"    &lt;/page&gt;"
+msgstr ""
+"&lt;page&gt;\n"
+"        &lt;begin-conversation pageflow=\"numberguess\"/&gt;\n"
+"    &lt;/page&gt;"
+
+#. Tag: para
+#: Jbpm.xml:164
+#, no-c-format
+msgid ""
+"If we are beginning the pageflow during the <literal>RENDER_RESPONSE</"
+"literal> phase&mdash;during a <literal>@Factory</literal> or "
+"<literal>@Create</literal> method, for example&mdash;we consider ourselves "
+"to be already at the page being rendered, and use a <literal>&lt;start-"
+"page&gt;</literal> node as the first node in the pageflow, as in the example "
+"above."
+msgstr ""
+"<literal>RENDER_RESPONSE</literal> フェーズの間にページフローを開始する場"
+"合、 &mdash; 例えば <literal>@Factory</literal> または <literal>@Create</"
+"literal> メソッドの期間 &mdash; 私達は既にレンダリングされているページにいる"
+"と考えます。 そして、 上記のサンプルのように、 ページフローの最初のノードとし"
+"て <literal>&lt;start-page&gt;</literal> ノードを使用します。"
+
+#. Tag: para
+#: Jbpm.xml:167
+#, no-c-format
+msgid ""
+"But if the pageflow is begun as the result of an action listener invocation, "
+"the outcome of the action listener determines which is the first page to be "
+"rendered. In this case, we use a <literal>&lt;start-state&gt;</literal> as "
+"the first node in the pageflow, and declare a transition for each possible "
+"outcome:"
+msgstr ""
+"しかし、ページフローがアクションリスナ呼び出しの結果として開始される場合、 ア"
+"クションリスナの結果 (outcome) は、レンダリングされる最初のページを決定しま"
+"す。 この場合、ページフローの最初のノードとして <literal>&lt;start-state&gt;"
+"</literal> を使用し、 それぞれの可能な結果 (outcome) のために遷移を宣言しま"
+"す。"
+
+#. Tag: programlisting
+#: Jbpm.xml:170
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"viewEditDocument\"&gt;\n"
+"\n"
+"    &lt;start-state name=\"start\"&gt;\n"
+"        &lt;transition name=\"documentFound\" to=\"displayDocument\"/&gt;\n"
+"        &lt;transition name=\"documentNotFound\" to=\"notFound\"/&gt;\n"
+"    &lt;/start-state&gt;\n"
+"    \n"
+"    &lt;page name=\"displayDocument\" view-id=\"/document.jsp\"&gt;\n"
+"        &lt;transition name=\"edit\" to=\"editDocument\"/&gt;\n"
+"        &lt;transition name=\"done\" to=\"main\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"    \n"
+"    ...\n"
+"    \n"
+"    &lt;page name=\"notFound\" view-id=\"/404.jsp\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"    &lt;/page&gt;\n"
+"    \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+"&lt;pageflow-definition name=\"viewEditDocument\"&gt;\n"
+"\n"
+"    &lt;start-state name=\"start\"&gt;\n"
+"        &lt;transition name=\"documentFound\" to=\"displayDocument\"/&gt;\n"
+"        &lt;transition name=\"documentNotFound\" to=\"notFound\"/&gt;\n"
+"    &lt;/start-state&gt;\n"
+"    \n"
+"    &lt;page name=\"displayDocument\" view-id=\"/document.jsp\"&gt;\n"
+"        &lt;transition name=\"edit\" to=\"editDocument\"/&gt;\n"
+"        &lt;transition name=\"done\" to=\"main\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"    \n"
+"    ...\n"
+"    \n"
+"    &lt;page name=\"notFound\" view-id=\"/404.jsp\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"    &lt;/page&gt;\n"
+"    \n"
+"&lt;/pageflow-definition&gt;"
+
+#. Tag: title
+#: Jbpm.xml:174
+#, no-c-format
+msgid "Page nodes and transitions"
+msgstr "ページノードと遷移"
+
+#. Tag: para
+#: Jbpm.xml:175
+#, no-c-format
+msgid ""
+"Each <literal>&lt;page&gt;</literal> node represents a state where the "
+"system is waiting for user input:"
+msgstr ""
+"各 <literal>&lt;page&gt;</literal> ノードは、システムがユーザ入力を待っている"
+"状態を表します。"
+
+#. Tag: programlisting
+#: Jbpm.xml:178
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"        &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"        &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Jbpm.xml:179
+#, no-c-format
+msgid ""
+"The <literal>view-id</literal> is the JSF view id. The <literal>&lt;redirect/"
+"&gt;</literal> element has the same effect as <literal>&lt;redirect/&gt;</"
+"literal> in a JSF navigation rule: namely, a post-then-redirect behavior, to "
+"overcome problems with the browser&#39;s refresh button. (Note that Seam "
+"propagates conversation contexts over these browser redirects. So there is "
+"no need for a Ruby on Rails style \"flash\" construct in Seam!)"
+msgstr ""
+"<literal>view-id</literal> は JSF ビューIDです。 <literal>&lt;redirect/&gt;</"
+"literal> 要素は、 JSF ナビゲーション規則の <literal>&lt;redirect/&gt;</"
+"literal> と同じ作用、 つまり、ブラウザの更新ボタンの問題を解決するために、 "
+"post-then-redirect を行います。 (Seam は、 ブラウザのリダイレクトを超えて対話"
+"コンテキストを伝播します。 従って、Seamでは、Ruby on Rails スタイルの \"flash"
+"\" の概念は不要です。)"
+
+#. Tag: para
+#: Jbpm.xml:182
+#, no-c-format
+msgid ""
+"The transition name is the name of a JSF outcome triggered by clicking a "
+"command button or command link in <literal>numberGuess.jsp</literal>."
+msgstr ""
+"遷移名は、<literal>numberGuess.jsp</literal> において、 ボタン あるいは、リン"
+"クをクリックすることによって起動された JSF 結果 (outcome) の名前です。"
+
+#. Tag: programlisting
+#: Jbpm.xml:185
+#, no-c-format
+msgid "&lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"guess\"/&gt;"
+msgstr "&lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"guess\"/&gt;"
+
+#. Tag: para
+#: Jbpm.xml:186
+#, no-c-format
+msgid ""
+"When the transition is triggered by clicking this button, jBPM will activate "
+"the transition action by calling the <literal>guess()</literal> method of "
+"the <literal>numberGuess</literal> component. Notice that the syntax used "
+"for specifying actions in the jPDL is just a familiar JSF EL expression, and "
+"that the transition action handler is just a method of a Seam component in "
+"the current Seam contexts. So we have exactly the same event model for jBPM "
+"events that we already have for JSF events! (The <emphasis>One Kind of "
+"Stuff</emphasis> principle.)"
+msgstr ""
+"遷移が、このボタンをクリックすることによって起動されるときに、 "
+"<literal>numberGuess</literal> コンポーネントの <literal>guess () </literal> "
+"メソッドと呼び出すことによって、 jBPM は、遷移のアクションを起動します。 "
+"jPDL においてアクションを指定するために使わるシンタックスは、 JSF EL 式とよく"
+"似ていること、 そして、遷移のアクションハンドラは、 ちょうど現在の Seam コン"
+"テキストにおける Seam コンポーネントのメソッドであることに注意してください。 "
+"従って、JSF イベントのために既に持っているものと、ちょうど同じ jBPM イベント"
+"のモデルを持ちます。 (一貫した原則 (The One Kind of Stuff principle))"
+
+#. Tag: para
+#: Jbpm.xml:189
+#, no-c-format
+msgid ""
+"In the case of a null outcome (for example, a command button with no "
+"<literal>action</literal> defined), Seam will signal the transition with no "
+"name if one exists, or else simply redisplay the page if all transitions "
+"have names. So we could slightly simplify our example pageflow and this "
+"button:"
+msgstr ""
+"nullでのoutcome の場合 (例えば、<literal>action</literal> が定義されていない"
+"コマンドボタン)、 もし、名前のない遷移があるならば、Seam は遷移するためのシグ"
+"ナルを送ります。 あるいは、もし、すべての遷移が名前を持つならば、単純にページ"
+"を再表示します。 従って、サンプルページフローを少し単純化でき、このボタンは"
+
+#. Tag: programlisting
+#: Jbpm.xml:192
+#, no-c-format
+msgid "&lt;h:commandButton type=\"submit\" value=\"Guess\"/&gt;"
+msgstr "&lt;h:commandButton type=\"submit\" value=\"Guess\"/&gt;"
+
+#. Tag: para
+#: Jbpm.xml:193
+#, no-c-format
+msgid "Would fire the following un-named transition:"
+msgstr "以下の名前のない遷移でのアクションを実行します。"
+
+#. Tag: programlisting
+#: Jbpm.xml:196
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"evaluateGuess\"&gt;\n"
+"        &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"evaluateGuess\"&gt;\n"
+"        &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Jbpm.xml:197
+#, no-c-format
+msgid ""
+"It is even possible to have the button call an action method, in which case "
+"the action outcome will determine the transition to be taken:"
+msgstr ""
+"ボタンにアクションメソッドを呼ばせることも可能です。 この場合、アクション結"
+"果 (outcome) が遷移を決定します。"
+
+#. Tag: programlisting
+#: Jbpm.xml:200
+#, no-c-format
+msgid ""
+"&lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"#{numberGuess."
+"guess}\"/&gt;"
+msgstr ""
+"&lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"#{numberGuess."
+"guess}\"/&gt;"
+
+#. Tag: programlisting
+#: Jbpm.xml:201
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;transition name=\"correctGuess\" to=\"win\"/&gt;\n"
+"    &lt;transition name=\"incorrectGuess\" to=\"evaluateGuess\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;transition name=\"correctGuess\" to=\"win\"/&gt;\n"
+"    &lt;transition name=\"incorrectGuess\" to=\"evaluateGuess\"/&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Jbpm.xml:202
+#, no-c-format
+msgid ""
+"However, this is considered an inferior style, since it moves responsibility "
+"for controlling the flow out of the pageflow definition and back into the "
+"other components. It is much better to centralize this concern in the "
+"pageflow itself."
+msgstr ""
+"しかし、これは質の悪いスタイルだと考えます。 なぜなら、フロー制御の責任をペー"
+"ジフロー定義の外側の他のコンポーネントに移動しているからです。 ページフローに"
+"関連することをそれ自身に集中することは、より良いことです。"
+
+#. Tag: title
+#: Jbpm.xml:208
+#, no-c-format
+msgid "Controlling the flow"
+msgstr "フローの制御"
+
+#. Tag: para
+#: Jbpm.xml:209
+#, no-c-format
+msgid ""
+"Usually, we don&#39;t need the more powerful features of jPDL when defining "
+"pageflows. We do need the <literal>&lt;decision&gt;</literal> node, however:"
+msgstr ""
+"通常、ページフローを定義するとき、jPDL より強力な機能はいりませんが、 "
+"<literal>&lt;decision&gt;</literal> ノードが必要です。"
+
+#. Tag: programlisting
+#: Jbpm.xml:212
+#, no-c-format
+msgid ""
+"&lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess.correctGuess}"
+"\"&gt;\n"
+"    &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"    &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"&lt;/decision&gt;"
+msgstr ""
+"&lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess.correctGuess}"
+"\"&gt;\n"
+"    &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"    &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"&lt;/decision&gt;"
+
+#. Tag: para
+#: Jbpm.xml:213
+#, no-c-format
+msgid "A decision is made by evaluating a JSF EL expression in the Seam contexts."
+msgstr "デシジョンは Seam コンテキスト中では JSF EL 式によって評価されます。"
+
+#. Tag: title
+#: Jbpm.xml:219
+#, no-c-format
+msgid "Ending the flow"
+msgstr "フローの終了"
+
+#. Tag: para
+#: Jbpm.xml:220
+#, no-c-format
+msgid ""
+"We end the conversation using <literal>&lt;end-conversation&gt;</literal> or "
+"<literal>@End</literal>. (In fact, for readability, use of <emphasis>both</"
+"emphasis> is encouraged.)"
+msgstr ""
+"<literal>&lt;end-conversation&gt;</literal>、または、<literal>@End</literal> "
+"を使用して対話を終了します。 (実際、可読性のために、<emphasis>両方</"
+"emphasis> の使用を勧めます。)"
+
+#. Tag: programlisting
+#: Jbpm.xml:223
+#, no-c-format
+msgid ""
+"&lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;end-conversation/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;end-conversation/&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Jbpm.xml:224
+#, no-c-format
+msgid ""
+"Optionally, we can end a task, specify a jBPM <literal>transition</literal> "
+"name. In this case, Seam will signal the end of the current task in the "
+"overarching business process."
+msgstr ""
+"オプションとして、<literal>transition</literal> 名を指定して、タスクを終了す"
+"ることができます。 この場合、Seam はビジネスプロセスにおいて現在のタスク終了"
+"の信号を送るでしょう。"
+
+#. Tag: programlisting
+#: Jbpm.xml:227
+#, no-c-format
+msgid ""
+"&lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;end-task transition=\"success\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;end-task transition=\"success\"/&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: title
+#: Jbpm.xml:233
+#, no-c-format
+msgid "Business process management in Seam"
+msgstr "Seam でのビジネスプロセス管理"
+
+#. Tag: para
+#: Jbpm.xml:234
+#, no-c-format
+msgid ""
+"A business process is a well-defined set of tasks that must be performed by "
+"users or software systems according to well-defined rules about "
+"<emphasis>who</emphasis> can perform a task, and <emphasis>when</emphasis> "
+"it should be performed. Seam&#39;s jBPM integration makes it easy to display "
+"lists of tasks to users and let them manage their tasks. Seam also lets the "
+"application store state associated with the business process in the "
+"<literal>BUSINESS_PROCESS</literal> context, and have that state made "
+"persistent via jBPM variables."
+msgstr ""
+"ビジネスプロセスは、<emphasis>だれ (who) </emphasis> がタスクを実行することが"
+"できるか、 <emphasis>いつ (when) </emphasis> タスクを実行すべきかという明確な"
+"ルールに従って、 ユーザ、あるいは、ソフトウェアのシステムによって実行されなけ"
+"ればならない明確なタスクの集合です。 Seam jBPMインテクグレーションは、ユーザ"
+"にタスクリストを表示し、それらのタスクを管理することを容易にします。 Seam は"
+"また <literal>BUSINESS_PROCESS</literal> コンテキスト中のビジネスプロセスに関"
+"連する、 状態をアプリケーションに保管させ、 jBPM 変数経由でその状態を永続化さ"
+"せます。"
+
+#. Tag: para
+#: Jbpm.xml:237
+#, no-c-format
+msgid ""
+"A simple business process definition looks much the same as a page flow "
+"definition (<emphasis>One Kind of Stuff</emphasis>), except that instead of "
+"<literal>&lt;page&gt;</literal> nodes, we have <literal>&lt;task-node&gt;</"
+"literal> nodes. In a long-running business process, the wait states are "
+"where the system is waiting for some user to log in and perform a task."
+msgstr ""
+"<literal>&lt;page&gt;</literal> の代わりに、<literal>&lt;task-node&gt;</"
+"literal> ノードを持つ以外、 簡単なビジネスプロセス定義はページフロー定義とほ"
+"ぼ同じであるように見えます。 (一貫した原則 (The One Kind of Stuff "
+"principle)) 長期間のビジネスプロセスにおいて、 待ち状態は、システムが、ユーザ"
+"がログインし、タスクを実行するのを待っているところです。"
+
+#. Tag: programlisting
+#: Jbpm.xml:240
+#, no-c-format
+msgid ""
+"&lt;process-definition name=\"todo\"&gt;\n"
+"   \n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"todo\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;task-node name=\"todo\"&gt;\n"
+"      &lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"         &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"      &lt;/task&gt;\n"
+"      &lt;transition to=\"done\"/&gt;\n"
+"   &lt;/task-node&gt;\n"
+"   \n"
+"   &lt;end-state name=\"done\"/&gt;\n"
+"   \n"
+"&lt;/process-definition&gt;"
+msgstr ""
+"&lt;process-definition name=\"todo\"&gt;\n"
+"   \n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"todo\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;task-node name=\"todo\"&gt;\n"
+"      &lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"         &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"      &lt;/task&gt;\n"
+"      &lt;transition to=\"done\"/&gt;\n"
+"   &lt;/task-node&gt;\n"
+"   \n"
+"   &lt;end-state name=\"done\"/&gt;\n"
+"   \n"
+"&lt;/process-definition&gt;"
+
+#. Tag: para
+#: Jbpm.xml:251
+#, no-c-format
+msgid ""
+"It is perfectly possible that we might have both jPDL business process "
+"definitions and jPDL pageflow definitions in the same project. If so, the "
+"relationship between the two is that a single <literal>&lt;task&gt;</"
+"literal> in a business process corresponds to a whole pageflow <literal>&lt;"
+"pageflow-definition&gt;</literal>"
+msgstr ""
+"同じプロジェクトの中に、jPDL ビジネスプロセス定義と、 jPDL ページフロー定義を"
+"持つことは可能です。 そうであれば、2 つの関係は ビジネスプロセス中の "
+"<literal>&lt;task&gt;</literal>は ページフロー <literal>&lt;process-"
+"definition&gt;</literal>全体と一致します。"
+
+#. Tag: title
+#: Jbpm.xml:256
+#, no-c-format
+msgid "Using jPDL business process definitions"
+msgstr "jPDL ビジネスプロセス定義の使用"
+
+#. Tag: title
+#: Jbpm.xml:258
+#, no-c-format
+msgid "Installing process definitions"
+msgstr "プロセス定義の設定"
+
+#. Tag: para
+#: Jbpm.xml:259
+#, no-c-format
+msgid ""
+"We need to install jBPM, and tell it where to find the business process "
+"definitions:"
+msgstr "jBPM を設定し、そのjBPMにビジネスプロセス定義の場所を指示する必要があります。"
+
+#. Tag: programlisting
+#: Jbpm.xml:262
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;todo.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;todo.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+
+#. Tag: title
+#: Jbpm.xml:266
+#, no-c-format
+msgid "Initializing actor ids"
+msgstr "アクターIDの初期化"
+
+#. Tag: para
+#: Jbpm.xml:267
+#, no-c-format
+msgid ""
+"We always need to know what user is currently logged in. jBPM \"knows\" "
+"users by their <emphasis>actor id</emphasis> and <emphasis>group actor ids</"
+"emphasis>. We specify the current actor ids using the built in Seam "
+"component named <literal>actor</literal>:"
+msgstr ""
+"いつでも現在ログインしているユーザを知っている必要があります。 jBPM は、"
+"<emphasis>actor id</emphasis> と <emphasis>group actor id</emphasis>によっ"
+"て、ユーザを識別します。 <literal>actor</literal> と呼ばれる組み込み Seam コ"
+"ンポーネントを使用することにより、 現在の actor id を指定します。"
+
+#. Tag: programlisting
+#: Jbpm.xml:270
+#, no-c-format
+msgid ""
+"@In Actor actor;\n"
+"\n"
+"public String login() {\n"
+"    ...\n"
+"    actor.setId( user.getUserName() );\n"
+"    actor.getGroupActorIds().addAll( user.getGroupNames() );\n"
+"    ...\n"
+"}"
+msgstr ""
+"@In Actor actor;\n"
+"\n"
+"public String login() {\n"
+"    ...\n"
+"    actor.setId( user.getUserName() );\n"
+"    actor.getGroupActorIds().addAll( user.getGroupNames() );\n"
+"    ...\n"
+"}"
+
+#. Tag: title
+#: Jbpm.xml:274
+#, no-c-format
+msgid "Initiating a business process"
+msgstr "ビジネスプロセスの初期化"
+
+#. Tag: para
+#: Jbpm.xml:275
+#, no-c-format
+msgid ""
+"To initiate a business process instance, we use the <literal>@CreateProcess</"
+"literal> annotation:"
+msgstr ""
+"ビジネスプロセスインスタンスを初期化するためには、 <literal>@CreateProcess</"
+"literal> アノテーションを使用します。"
+
+#. Tag: programlisting
+#: Jbpm.xml:278
+#, no-c-format
+msgid ""
+"@CreateProcess(definition=\"todo\")\n"
+"public void createTodo() { ... }"
+msgstr ""
+"@CreateProcess(definition=\"todo\")\n"
+"public void createTodo() { ... }"
+
+#. Tag: para
+#: Jbpm.xml:279
+#, no-c-format
+msgid "Alternatively we can initiate a business process using pages.xml:"
+msgstr "また、 pages.xmlを使用してビジネスプロセスの初期化も行えます:"
+
+#. Tag: programlisting
+#: Jbpm.xml:282
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;create-process definition=\"todo\" /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page&gt;\n"
+"    &lt;create-process definition=\"todo\" /&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: title
+#: Jbpm.xml:286
+#, no-c-format
+msgid "Task assignment"
+msgstr "タスク割り当て"
+
+#. Tag: para
+#: Jbpm.xml:287
+#, no-c-format
+msgid ""
+"When a process starts, task instances are created. These must be assigned to "
+"users or user groups. We can either hardcode our actor ids, or delegate to a "
+"Seam component:"
+msgstr ""
+"プロセスが開始したときタスクインスタンスが生成されます。 これらにはユーザまた"
+"はユーザグループを割り当てなければなりません。 actor ids は、ハードコーディン"
+"グすることも、Seam コンポーネントに委譲することもできます。"
+
+#. Tag: programlisting
+#: Jbpm.xml:290
+#, no-c-format
+msgid ""
+"&lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"    &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"&lt;/task&gt;"
+msgstr ""
+"&lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"    &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"&lt;/task&gt;"
+
+#. Tag: para
+#: Jbpm.xml:291
+#, no-c-format
+msgid ""
+"In this case, we have simply assigned the task to the current user. We can "
+"also assign tasks to a pool:"
+msgstr ""
+"この場合、 単純に現在のユーザにタスクを割り当てます。 タスクをプールに割り当"
+"てることもできます。"
+
+#. Tag: programlisting
+#: Jbpm.xml:294
+#, no-c-format
+msgid ""
+"&lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"    &lt;assignment pooled-actors=\"employees\"/&gt;\n"
+"&lt;/task&gt;"
+msgstr ""
+"&lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"    &lt;assignment pooled-actors=\"employees\"/&gt;\n"
+"&lt;/task&gt;"
+
+#. Tag: title
+#: Jbpm.xml:298
+#, no-c-format
+msgid "Task lists"
+msgstr "タスクリスト"
+
+#. Tag: para
+#: Jbpm.xml:299
+#, no-c-format
+msgid ""
+"Several built-in Seam components make it easy to display task lists. The "
+"<literal>pooledTaskInstanceList</literal> is a list of pooled tasks that "
+"users may assign to themselves:"
+msgstr ""
+"いくつかの組み込み Seam コンポーネントによりタスクリストの表示が容易になって"
+"います。 <literal>pooledTaskInstanceList</literal> は、 ユーザが自分自身に割"
+"り当てることができるプールされたタスクのリストです。"
+
+#. Tag: programlisting
+#: Jbpm.xml:302
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{pooledTaskInstanceList}\" var=\"task\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Description&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{task.description}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link action=\"#{pooledTask.assignToCurrentActor}\" value="
+"\"Assign\" taskInstance=\"#{task}\"/&gt;\n"
+"    &lt;/h:column&gt;                    \n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+"&lt;h:dataTable value=\"#{pooledTaskInstanceList}\" var=\"task\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Description&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{task.description}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link action=\"#{pooledTask.assignToCurrentActor}\" value="
+"\"Assign\" taskInstance=\"#{task}\"/&gt;\n"
+"    &lt;/h:column&gt;                    \n"
+"&lt;/h:dataTable&gt;"
+
+#. Tag: para
+#: Jbpm.xml:303
+#, no-c-format
+msgid ""
+"Note that instead of <literal>&lt;s:link&gt;</literal> we could have used a "
+"plain JSF <literal>&lt;h:commandLink&gt;</literal>:"
+msgstr ""
+"<literal>&lt;s:link&gt;</literal> の代わりに、 普通の JSF <literal>&lt;h:"
+"commandLink&gt;</literal> を使用することもできます。"
+
+#. Tag: programlisting
+#: Jbpm.xml:306
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"#{pooledTask.assignToCurrentActor}\"&gt; \n"
+"    &lt;f:param name=\"taskId\" value=\"#{task.id}\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+"&lt;h:commandLink action=\"#{pooledTask.assignToCurrentActor}\"&gt; \n"
+"    &lt;f:param name=\"taskId\" value=\"#{task.id}\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+
+#. Tag: para
+#: Jbpm.xml:307
+#, no-c-format
+msgid ""
+"The <literal>pooledTask</literal> component is a built-in component that "
+"simply assigns the task to the current user."
+msgstr ""
+"<literal>pooledTask</literal> コンポーネントは、 単純にタスクを現在のユーザに"
+"割り当てる組み込みコンポーネントです。"
+
+#. Tag: para
+#: Jbpm.xml:310
+#, no-c-format
+msgid ""
+"The <literal>taskInstanceListForType</literal> component includes tasks of a "
+"particular type that are assigned to the current user:"
+msgstr ""
+"<literal>taskInstanceListForType</literal> コンポーネントは、 現在のユーザに"
+"割り当てられた特定タイプのタスクを含んでいます。"
+
+#. Tag: programlisting
+#: Jbpm.xml:313
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{taskInstanceListForType[&#39;todo&#39;]}\" var="
+"\"task\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Description&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{task.description}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link action=\"#{todoList.start}\" value=\"Start Work\" "
+"taskInstance=\"#{task}\"/&gt;\n"
+"    &lt;/h:column&gt;                    \n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+"&lt;h:dataTable value=\"#{taskInstanceListForType[&#39;todo&#39;]}\" var="
+"\"task\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Description&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{task.description}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link action=\"#{todoList.start}\" value=\"Start Work\" "
+"taskInstance=\"#{task}\"/&gt;\n"
+"    &lt;/h:column&gt;                    \n"
+"&lt;/h:dataTable&gt;"
+
+#. Tag: title
+#: Jbpm.xml:317
+#, no-c-format
+msgid "Performing a task"
+msgstr "タスクの実行"
+
+#. Tag: para
+#: Jbpm.xml:318
+#, no-c-format
+msgid ""
+"To begin work on a task, we use either <literal>@StartTask</literal> or "
+"<literal>@BeginTask</literal> on the listener method:"
+msgstr ""
+"タスクの作業を開始させるために、リスナメソッドに、 <literal>@StartTask</"
+"literal> あるいは <literal>@BeginTask</literal>を使用します。"
+
+#. Tag: programlisting
+#: Jbpm.xml:321
+#, no-c-format
+msgid ""
+"@StartTask\n"
+"public String start() { ... }"
+msgstr ""
+"@StartTask\n"
+"public String start() { ... }"
+
+#. Tag: para
+#: Jbpm.xml:322
+#, no-c-format
+msgid "Alternatively we can begin work on a task using pages.xml:"
+msgstr "また、 タスクの実行を pages.xml を使用して始めることもできます:"
+
+#. Tag: programlisting
+#: Jbpm.xml:325
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;start-task /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page&gt;\n"
+"    &lt;start-task /&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Jbpm.xml:326
+#, no-c-format
+msgid ""
+"These annotations begin a special kind of conversation that has significance "
+"in terms of the overarching business process. Work done by this conversation "
+"has access to state held in the business process context."
+msgstr ""
+"これらのアノテーションは、 ビジネスプロセス全体に関して意味を持つ、 特殊な種"
+"類の対話を開始します。 この対話による処理はビジネスプロセスコンテキストの中で"
+"保持する状態にアクセスできます。"
+
+#. Tag: para
+#: Jbpm.xml:329
+#, no-c-format
+msgid ""
+"If we end the conversation using <literal>@EndTask</literal>, Seam will "
+"signal the completion of the task:"
+msgstr ""
+"<literal>@EndTask</literal> を使用して対話を終了する場合、 Seam はタスクの完"
+"了サインを送信します。"
+
+#. Tag: programlisting
+#: Jbpm.xml:332
+#, no-c-format
+msgid ""
+"@EndTask(transition=\"completed\")\n"
+"public String completed() { ... }"
+msgstr ""
+"@EndTask(transition=\"completed\")\n"
+"public String completed() { ... }"
+
+#. Tag: para
+#: Jbpm.xml:333
+#, no-c-format
+msgid "Alternatively we can use pages.xml:"
+msgstr "また、 pages.xmlも使用できます:"
+
+#. Tag: programlisting
+#: Jbpm.xml:336
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;end-task transition=\"completed\" /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page&gt;\n"
+"    &lt;end-task transition=\"completed\" /&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Jbpm.xml:337
+#, no-c-format
+msgid ""
+"(Alternatively, we could have used <literal>&lt;end-conversation&gt;</"
+"literal> as shown above.)"
+msgstr ""
+"(もしくは、 上記のように、<literal>&lt;end-conversation&gt;</literal> も使用"
+"可能です。)"
+
+#. Tag: para
+#: Jbpm.xml:340
+#, no-c-format
+msgid ""
+"At this point, jBPM takes over and continues executing the business process "
+"definition. (In more complex processes, several tasks might need to be "
+"completed before process execution can resume.)"
+msgstr ""
+"この時点で、 jBPM はビジネスプロセス定義を引継ぎ、実行を続行します。 (より複"
+"雑なプロセスにおいては、 プロセス実行が再開する前に完了する必要があるタスクが"
+"あるかもしれません。)"
+
+#. Tag: para
+#: Jbpm.xml:344
+#, no-c-format
+msgid ""
+"Please refer to the jBPM documentation for a more thorough overview of the "
+"sophisticated features that jBPM provides for managing complex business "
+"processes."
+msgstr ""
+"複雑なビジネスプロセスの管理を実現する各種の高度な機能の全体的な概要について"
+"は jBPM ドキュメントを参照してください。"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Jms.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Jms.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Jms.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,786 @@
+# translation of Jms.po to Japanese
+# Noriko Mizumoto <noriko at redhat.com>, 2007, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Jms\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-02-04 23:29+0000\n"
+"PO-Revision-Date: 2008-05-15 11:08+1000\n"
+"Last-Translator: Noriko Mizumoto <noriko at redhat.com>\n"
+"Language-Team: Japanese <fedora-trans-ja at redhat.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Jms.xml:6
+#, no-c-format
+msgid "Asynchronicity and messaging"
+msgstr "非同期性とメッセージング"
+
+#. Tag: para
+#: Jms.xml:7
+#, no-c-format
+msgid ""
+"Seam makes it very easy to perform work asynchronously from a web request. "
+"When most people think of asynchronicity in Java EE, they think of using "
+"JMS. This is certainly one way to approach the problem in Seam, and is the "
+"right way when you have strict and well-defined quality of service "
+"requirements. Seam makes it easy to send and recieve JMS messages using Seam "
+"components."
+msgstr ""
+"Seamでは、Webリクエストに対して非同期に処理を行うことが非常に簡単にできま"
+"す。 Java EEでの非同期性といえば、多くの人はJMSを思い浮かべるでしょう。 これ"
+"は確かにSeamでこの問題にアプローチするひとつの方法です。そして厳密で明確な"
+"サービス品質の要件があるならば、これは適切な方法です。 Seamでは、Seamコンポー"
+"ネントを使って簡単にJMSメッセージを送受信できます。"
+
+#. Tag: para
+#: Jms.xml:10
+#, no-c-format
+msgid ""
+"But for many usecases, JMS is overkill. Seam layers a simple asynchronous "
+"method and event facility over the EJB 3.0 timer service."
+msgstr ""
+"しかし多くのユースケースではJMSは過剰です。 Seamはシンプルな非同期メソッドと"
+"イベント機関をEJB 3.0タイマーサービス上にレイヤ化します。"
+
+#. Tag: title
+#: Jms.xml:13
+#, no-c-format
+msgid "Asynchronicity"
+msgstr "非同期性"
+
+#. Tag: para
+#: Jms.xml:14
+#, no-c-format
+msgid ""
+"Asynchronous events and method calls have the same quality of service "
+"expectations as the container&#39;s EJB timer service. If you&#39;re not "
+"familiar with the Timer service, don&#39;t worry, you don&#39;t need to "
+"interact with it directly if you want to use asynchronous methods in Seam."
+msgstr ""
+"非同期イベントとメソッド呼び出しは、コンテナのEJBタイマーサービスと同程度の"
+"サービス品質を期待できます。 タイマーサービスに親しんでいなくても心配は不要で"
+"す。Seamで非同期メソッドを使うなら、タイマーサービスを直接触る必要はありませ"
+"ん。"
+
+#. Tag: para
+#: Jms.xml:17
+#, no-c-format
+msgid ""
+"To use asynchronous methods and events, you need to add the following line "
+"to <literal>components.xml</literal>:"
+msgstr ""
+"非同期メソッドとイベントを使うには、<literal>components.xml</literal>に以下の"
+"行を追加する必要があります:"
+
+#. Tag: programlisting
+#: Jms.xml:20
+#, no-c-format
+msgid "&lt;core:dispatcher/&gt;"
+msgstr "&lt;core:dispatcher/&gt;"
+
+#. Tag: para
+#: Jms.xml:21
+#, no-c-format
+msgid ""
+"Note that this functionality is not available in environments which do not "
+"support EJB 3.0."
+msgstr "EJB 3.0をサポートしない環境では、この機能は使えないことに注意して下さい。"
+
+#. Tag: title
+#: Jms.xml:24
+#, no-c-format
+msgid "Asynchronous methods"
+msgstr "非同期メソッド"
+
+#. Tag: para
+#: Jms.xml:25
+#, no-c-format
+msgid ""
+"In simplest form, an asynchronous call just lets a method call be processed "
+"asynchronously (in a different thread) from the caller. We usually use an "
+"asynchronous call when we want to return an immediate response to the "
+"client, and let some expensive work be processed in the background. This "
+"pattern works very well in applications which use AJAX, where the client can "
+"automatically poll the server for the result of the work."
+msgstr ""
+"最も単純なかたちでは、非同期呼び出しは、メソッド呼び出しを呼び出し側に対して"
+"非同期に (異なるスレッドで) 処理させるだけです。 我々は通常、クライアントに即"
+"座にレスポンスを返し、重い仕事をバックグラウンドで処理させたい場合に、非同期"
+"呼び出しを使います。 このパターンは、クライアントが処理結果をサーバへ自動的に"
+"ポーリングできるような、AJAXを使用するアプリケーションでとても効果的です。"
+
+#. Tag: para
+#: Jms.xml:28
+#, no-c-format
+msgid ""
+"For EJB components, we annotate the local interface to specify that a method "
+"is processed asynchronously."
+msgstr ""
+"EJBコンポーネントでは、ローカルインターフェースをアノテートしてメソッドが非同"
+"期に処理されるよう指定します。"
+
+#. Tag: programlisting
+#: Jms.xml:31
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public void processPayment(Payment payment);\n"
+"}"
+msgstr ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public void processPayment(Payment payment);\n"
+"}"
+
+#. Tag: para
+#: Jms.xml:32
+#, no-c-format
+msgid ""
+"(For JavaBean components we can annotate the component implementation class "
+"if we like.)"
+msgstr ""
+"(JavaBean コンポーネントでは、 望むならコンポーネントの実装クラスをアノテート"
+"することができます)"
+
+#. Tag: para
+#: Jms.xml:35
+#, no-c-format
+msgid "The use of asynchronicity is transparent to the bean class:"
+msgstr "非同期性の使用はbeanクラスに透過的です。"
+
+#. Tag: programlisting
+#: Jms.xml:38
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"paymentHandler\")\n"
+"public class PaymentHandlerBean implements PaymentHandler\n"
+"{\n"
+"    public void processPayment(Payment payment)\n"
+"    {\n"
+"        //do some work!\n"
+"    }\n"
+"}"
+msgstr ""
+"@Stateless\n"
+"@Name(\"paymentHandler\")\n"
+"public class PaymentHandlerBean implements PaymentHandler\n"
+"{\n"
+"    public void processPayment(Payment payment)\n"
+"    {\n"
+"        //do some work!\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Jms.xml:39
+#, no-c-format
+msgid "And also transparent to the client:"
+msgstr "そしてクライアントに対しても透過的です。"
+
+#. Tag: programlisting
+#: Jms.xml:42
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String pay()\n"
+"    {\n"
+"        paymentHandler.processPayment( new Payment(bill) );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String pay()\n"
+"    {\n"
+"        paymentHandler.processPayment( new Payment(bill) );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Jms.xml:43
+#, no-c-format
+msgid ""
+"The asynchronous method is processed in a completely new event context and "
+"does not have access to the session or conversation context state of the "
+"caller. However, the business process context <emphasis>is</emphasis> "
+"propagated."
+msgstr ""
+"非同期メソッドは完全に新規のイベントコンテキストで処理され、 呼び出し側のセッ"
+"ションまたは対話コンテキストの状態にはアクセスできません。 しかしビジネスプロ"
+"セスコンテキストは伝播<emphasis>されます</emphasis>。"
+
+#. Tag: para
+#: Jms.xml:46
+#, no-c-format
+msgid ""
+"Asynchronous method calls may be scheduled for later execution using the "
+"<literal>@Duration</literal>, <literal>@Expiration</literal> and "
+"<literal>@IntervalDuration</literal> annotations."
+msgstr ""
+"非同期メソッド呼び出しは<literal>@Duration</literal>、<literal>@Expiration</"
+"literal>、 <literal>@IntervalDuration</literal>アノテーションを使って、 後の"
+"実行のためにスケジューリングできます。"
+
+#. Tag: programlisting
+#: Jms.xml:49
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public void processScheduledPayment(Payment payment, @Expiration Date "
+"date);\n"
+"\n"
+"    @Asynchronous\n"
+"    public void processRecurringPayment(Payment payment, @Expiration Date "
+"date, \n"
+"      @IntervalDuration Long interval)&#39;\n"
+"}"
+msgstr ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public void processScheduledPayment(Payment payment, @Expiration Date "
+"date);\n"
+"\n"
+"    @Asynchronous\n"
+"    public void processRecurringPayment(Payment payment, @Expiration Date "
+"date, \n"
+"      @IntervalDuration Long interval)&#39;\n"
+"}"
+
+#. Tag: programlisting
+#: Jms.xml:50
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String schedulePayment()\n"
+"    {\n"
+"        paymentHandler.processScheduledPayment( new Payment(bill), bill."
+"getDueDate() );\n"
+"        return \"success\";\n"
+"    }\n"
+"\n"
+"    public String scheduleRecurringPayment()\n"
+"    {\n"
+"        paymentHandler.processRecurringPayment( new Payment(bill), bill."
+"getDueDate(), ONE_MONTH );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String schedulePayment()\n"
+"    {\n"
+"        paymentHandler.processScheduledPayment( new Payment(bill), bill."
+"getDueDate() );\n"
+"        return \"success\";\n"
+"    }\n"
+"\n"
+"    public String scheduleRecurringPayment()\n"
+"    {\n"
+"        paymentHandler.processRecurringPayment( new Payment(bill), bill."
+"getDueDate(), ONE_MONTH );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Jms.xml:51
+#, no-c-format
+msgid ""
+"Both client and server may access the <literal>Timer</literal> object "
+"associated with the invocation."
+msgstr ""
+"クライアントとサーバの両者は、呼び出しに関連付けられた<literal>Timer</"
+"literal>オブジェクトに アクセスできます。"
+
+#. Tag: programlisting
+#: Jms.xml:54
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public Timer processScheduledPayment(Payment payment, @Expiration Date "
+"date);\n"
+"}"
+msgstr ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public Timer processScheduledPayment(Payment payment, @Expiration Date "
+"date);\n"
+"}"
+
+#. Tag: programlisting
+#: Jms.xml:55
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"paymentHandler\")\n"
+"public class PaymentHandlerBean implements PaymentHandler\n"
+"{\n"
+"    @In Timer timer;\n"
+"    \n"
+"    public Timer processScheduledPayment(Payment payment, @Expiration Date "
+"date)\n"
+"    {\n"
+"        //do some work!\n"
+"        \n"
+"        return timer; //note that return value is completely ignored\n"
+"    }\n"
+"\n"
+"}"
+msgstr ""
+"@Stateless\n"
+"@Name(\"paymentHandler\")\n"
+"public class PaymentHandlerBean implements PaymentHandler\n"
+"{\n"
+"    @In Timer timer;\n"
+"    \n"
+"    public Timer processScheduledPayment(Payment payment, @Expiration Date "
+"date)\n"
+"    {\n"
+"        //do some work!\n"
+"        \n"
+"        return timer; //note that return value is completely ignored\n"
+"    }\n"
+"\n"
+"}"
+
+#. Tag: programlisting
+#: Jms.xml:56
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String schedulePayment()\n"
+"    {\n"
+"        Timer timer = paymentHandler.processScheduledPayment( new Payment"
+"(bill), bill.getDueDate() );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String schedulePayment()\n"
+"    {\n"
+"        Timer timer = paymentHandler.processScheduledPayment( new Payment"
+"(bill), bill.getDueDate() );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Jms.xml:57
+#, no-c-format
+msgid "Asynchronous methods cannot return any other value to the caller."
+msgstr "非同期メソッドは呼び出し側に他のどんな値も返すことができません。"
+
+#. Tag: title
+#: Jms.xml:60
+#, no-c-format
+msgid "Asynchronous events"
+msgstr "非同期イベント"
+
+#. Tag: para
+#: Jms.xml:61
+#, no-c-format
+msgid ""
+"Component-driven events may also be asynchronous. To raise an event for "
+"asynchronous processing, simply call the <literal>raiseAsynchronousEvent()</"
+"literal> methods of the <literal>Events</literal> class. To schedule a timed "
+"event, call one of the <literal>raiseTimedEvent()</literal> methods. "
+"Components may observe asynchronous events in the usual way, but remember "
+"that only the business process context is propagated to the asynchronous "
+"thread."
+msgstr ""
+"コンポーネント駆動イベントもまた、非同期になることができます。非同期処理のた"
+"めのイベントを起こすには、 単に<literal>Events</literal>クラスの"
+"<literal>raiseAsynchronousEvent()</literal>メソッドを呼ぶだけです。 時間指定"
+"イベントをスケジュールするには、<literal>raiseTimedEvent()</literal>メソッド"
+"のひとつを呼びます。 コンポーネントは通常の方法で非同期イベントを観察できます"
+"が、ビジネスプロセスコンテキストだけが 非同期スレッドに伝播されることを覚えて"
+"おいてください。"
+
+#. Tag: title
+#: Jms.xml:64
+#, no-c-format
+msgid "Messaging in Seam"
+msgstr "Seam でのメッセージング"
+
+#. Tag: para
+#: Jms.xml:65
+#, no-c-format
+msgid ""
+"Seam makes it easy to send and receive JMS messages to and from Seam "
+"components."
+msgstr "Seam は Seam コンポーネントの JMS メッセージの送受信を容易にしています。"
+
+#. Tag: title
+#: Jms.xml:68
+#, no-c-format
+msgid "Configuration"
+msgstr "設定"
+
+#. Tag: para
+#: Jms.xml:69
+#, no-c-format
+msgid ""
+"To configure Seam&#39;s infrastructure for sending JMS messages, you need to "
+"tell Seam about any topics and queues you want to send messages to, and also "
+"tell Seam where to find the <literal>QueueConnectionFactory</literal> and/or "
+"<literal>TopicConnectionFactory</literal>."
+msgstr ""
+"JMS メッセージ送信のための Seam インフラストラクチャの設定として、 Seam に対"
+"しメッセージ送信する Topic または、Queue を指示する必要があります。 また、 "
+"<literal>QueueConnectionFactory</literal> あるいは、 "
+"<literal>TopicConnectionFactory</literal> の場所を Seam に指示する必要もあり"
+"ます。"
+
+#. Tag: para
+#: Jms.xml:72
+#, no-c-format
+msgid ""
+"Seam defaults to using <literal>UIL2ConnectionFactory</literal> which is the "
+"usual connection factory for use with JBossMQ. If you are using some other "
+"JMS provider, you need to set one or both of <literal>queueConnection."
+"queueConnectionFactoryJndiName</literal> and <literal>topicConnection."
+"topicConnectionFactoryJndiName</literal> in <literal>seam.properties</"
+"literal>, <literal>web.xml</literal> or <literal>components.xml</literal>."
+msgstr ""
+"Seam はデフォルトで、JBossMQ 用の通常のコネクションファクトリ "
+"<literal>UIL2ConnectionFactory</literal> を使用します。 もし、その他の JMS プ"
+"ロバイダを使用する場合には、 <literal>seam.properties</literal>、"
+"<literal>web.xml</literal> あるいは、<literal>components.xml</literal> 中の "
+"<literal>queueConnection.queueConnectionFactoryJndiName</literal>、 "
+"<literal>topicConnection.topicConnectionFactoryJndiName</literal> の一方ある"
+"いは両方を設定する必要があります。"
+
+#. Tag: para
+#: Jms.xml:75
+#, no-c-format
+msgid ""
+"You also need to list topics and queues in <literal>components.xml</literal> "
+"to install Seam managed <literal>TopicPublisher</literal>s and "
+"<literal>QueueSender</literal>s:"
+msgstr ""
+"Seam 管理の <literal>TopicPublisher</literal> または、 <literal>QueueSender</"
+"literal> をインストールするために、 <literal>components.xml</literal> 中に "
+"topic または queue を記入する必要もあります。"
+
+#. Tag: programlisting
+#: Jms.xml:78
+#, no-c-format
+msgid ""
+"&lt;jms:managed-topic-publisher name=\"stockTickerPublisher\" \n"
+"                   auto-create=\"true  topic-jndi-name=\"topic/"
+"stockTickerTopic\"/&gt;\n"
+"\n"
+"&lt;jms:managed-queue-sender name=\"paymentQueueSender\" auto-create=\"true"
+"\" \n"
+"    queue-jndi-name=\"queue/paymentQueue\"/&gt;"
+msgstr ""
+"&lt;jms:managed-topic-publisher name=\"stockTickerPublisher\" \n"
+"                   auto-create=\"true  topic-jndi-name=\"topic/"
+"stockTickerTopic\"/&gt;\n"
+"\n"
+"&lt;jms:managed-queue-sender name=\"paymentQueueSender\" auto-create=\"true"
+"\" \n"
+"    queue-jndi-name=\"queue/paymentQueue\"/&gt;"
+
+#. Tag: title
+#: Jms.xml:81
+#, no-c-format
+msgid "Using JBoss Messaging"
+msgstr "JBoss Messaging を使用する"
+
+#. Tag: para
+#: Jms.xml:82
+#, no-c-format
+msgid ""
+"For using JBoss Messaging which comes with JBoss Enterprise Application "
+"Platform 4.3, you should first set the value of the properties "
+"'<literal>queueConnection.queueConnectionFactoryJndiName</literal>' and "
+"'<literal>topicConnection.topicConnectionFactoryJndiName</literal>' to "
+"'<literal>ConnectionFactory</literal>' which is the default connection "
+"factory for JBoss Messaging. Then set the value of the "
+"'<literal>connectionProvider</literal>' property to '<literal>org.jboss.seam."
+"remoting.messaging.JBossMessagingConnectionProvider</literal>' on the class "
+"component '<literal>org.jboss.seam.remoting.messaging.SubscriptionRegistry</"
+"literal>', which creates topic connections for jboss messaging. "
+"<programlisting>\n"
+"&lt;component name=\"org.jboss.seam.jms.topicConnection\"&gt;\n"
+"        &lt;property name=\"topicConnectionFactoryJndiName\"&gt;\n"
+"        ConnectionFactory\n"
+"        &lt;/property&gt;\n"
+"&lt;/component&gt;\n"
+"&lt;component class=\"org.jboss.seam.remoting.messaging.SubscriptionRegistry"
+"\" installed=\"true\"&gt;\n"
+"        &lt;property name=\"allowedTopics\"&gt;\n"
+"        chatroomTopic\n"
+"        &lt;/property&gt;\n"
+"        &lt;property name=\"connectionProvider\"&gt;\n"
+"        org.jboss.seam.remoting.messaging.JBossMessagingConnectionProvider\n"
+"        &lt;/property&gt;\n"
+"&lt;/component&gt;\n"
+"</programlisting> You also need to update the topics to use JBoss Messaging "
+"as shown in the code fragment below."
+msgstr ""
+"JBoss Enterprise Application Platform 4.3 に同梱される JBoss Messaging を使用する場合、 最初に '<literal>queueConnection.queueConnectionFactoryJndiName</literal>' と "
+"'<literal>topicConnection.topicConnectionFactoryJndiName</literal>' のプロパティの値を JBoss Messaging のデフォルト接続ファクトリとなる '<literal>ConnectionFactory</literal>' に設定してください。 次に '<literal>connectionProvider</literal>' プロパティの値を jboss messaging にトピック接続を作成する '<literal>org.jboss.seam.remoting.messaging.SubscriptionRegistry</"
+"literal>' クラスコンポーネントで <literal>org.jboss.seam."
+"remoting.messaging.JBossMessagingConnectionProvider</literal>' に設定します。 "
+"<programlisting>\n"
+"&lt;component name=\"org.jboss.seam.jms.topicConnection\"&gt;\n"
+"        &lt;property name=\"topicConnectionFactoryJndiName\"&gt;\n"
+"        ConnectionFactory\n"
+"        &lt;/property&gt;\n"
+"&lt;/component&gt;\n"
+"&lt;component class=\"org.jboss.seam.remoting.messaging.SubscriptionRegistry"
+"\" installed=\"true\"&gt;\n"
+"        &lt;property name=\"allowedTopics\"&gt;\n"
+"        chatroomTopic\n"
+"        &lt;/property&gt;\n"
+"        &lt;property name=\"connectionProvider\"&gt;\n"
+"        org.jboss.seam.remoting.messaging.JBossMessagingConnectionProvider\n"
+"        &lt;/property&gt;\n"
+"&lt;/component&gt;\n"
+"</programlisting> "
+"また、 以下に示すコードの一部のように JBoss Messaging を使用するようトピックを更新する必要があります。"
+
+#. Tag: programlisting
+#: Jms.xml:86
+#, no-c-format
+msgid ""
+"&lt;server&gt;\n"
+"        &lt;mbean code=\"org.jboss.jms.server.destination.TopicService\"\n"
+"               name=\"jboss.messaging.destination:service=Topic,"
+"name=chatroomTopic\"\n"
+"                                            xmbean-dd=\"xmdesc/Topic-xmbean."
+"xml\"&gt;\n"
+"                &lt;depends optional-attribute-name=\"ServerPeer\"&gt;\n"
+"                jboss.messaging:service=ServerPeer\n"
+"                &lt;/depends&gt;\n"
+"                &lt;depends&gt;\n"
+"                jboss.messaging:service=PostOffice\n"
+"                &lt;/depends&gt;\n"
+"                &lt;attribute name=\"SecurityConfig\"&gt;\n"
+"                        &lt;security&gt;\n"
+"                          &lt;role name=\"guest\" read=\"true\" write=\"true"
+"\"/&gt;\n"
+"                          &lt;role name=\"publisher\" read=\"true\" write="
+"\"true\" create=\"false\"/&gt;\n"
+"                          &lt;role name=\"durpublisher\" read=\"true\" write="
+"\"true\" create=\"true\"/&gt;\n"
+"                        &lt;/security&gt;\n"
+"                &lt;/attribute&gt;\n"
+"        &lt;/mbean&gt;\n"
+"&lt;/server&gt;"
+msgstr ""
+"&lt;server&gt;\n"
+"        &lt;mbean code=\"org.jboss.jms.server.destination.TopicService\"\n"
+"               name=\"jboss.messaging.destination:service=Topic,"
+"name=chatroomTopic\"\n"
+"                                            xmbean-dd=\"xmdesc/Topic-xmbean."
+"xml\"&gt;\n"
+"                &lt;depends optional-attribute-name=\"ServerPeer\"&gt;\n"
+"                jboss.messaging:service=ServerPeer\n"
+"                &lt;/depends&gt;\n"
+"                &lt;depends&gt;\n"
+"                jboss.messaging:service=PostOffice\n"
+"                &lt;/depends&gt;\n"
+"                &lt;attribute name=\"SecurityConfig\"&gt;\n"
+"                        &lt;security&gt;\n"
+"                          &lt;role name=\"guest\" read=\"true\" write=\"true"
+"\"/&gt;\n"
+"                          &lt;role name=\"publisher\" read=\"true\" write="
+"\"true\" create=\"false\"/&gt;\n"
+"                          &lt;role name=\"durpublisher\" read=\"true\" write="
+"\"true\" create=\"true\"/&gt;\n"
+"                        &lt;/security&gt;\n"
+"                &lt;/attribute&gt;\n"
+"        &lt;/mbean&gt;\n"
+"&lt;/server&gt;"
+
+#. Tag: title
+#: Jms.xml:90
+#, no-c-format
+msgid "Sending messages"
+msgstr "メッセージ送信"
+
+#. Tag: para
+#: Jms.xml:91
+#, no-c-format
+msgid ""
+"Now, you can inject a JMS <literal>TopicPublisher</literal> and "
+"<literal>TopicSession</literal> into any component:"
+msgstr ""
+"JMS <literal>TopicPublisher</literal> や、 <literal>TopicSession</literal> を"
+"コンポーネントにインジェクトすることが可能です。"
+
+#. Tag: programlisting
+#: Jms.xml:94
+#, no-c-format
+msgid ""
+"@In \n"
+"private TopicPublisher stockTickerPublisher;   \n"
+"@In \n"
+"private TopicSession topicSession;\n"
+"\n"
+"public void publish(StockPrice price) {\n"
+"      try\n"
+"      {\n"
+"         topicPublisher.publish( topicSession.createObjectMessage(price) );\n"
+"      } \n"
+"      catch (Exception ex)\n"
+"      {\n"
+"         throw new RuntimeException(ex);\n"
+"      } \n"
+"}"
+msgstr ""
+"@In \n"
+"private TopicPublisher stockTickerPublisher;   \n"
+"@In \n"
+"private TopicSession topicSession;\n"
+"\n"
+"public void publish(StockPrice price) {\n"
+"      try\n"
+"      {\n"
+"         topicPublisher.publish( topicSession.createObjectMessage(price) );\n"
+"      } \n"
+"      catch (Exception ex)\n"
+"      {\n"
+"         throw new RuntimeException(ex);\n"
+"      } \n"
+"}"
+
+#. Tag: para
+#: Jms.xml:95
+#, no-c-format
+msgid "Or, for working with a queue:"
+msgstr "あるいは、Queue 連携することも可能です。"
+
+#. Tag: programlisting
+#: Jms.xml:98
+#, no-c-format
+msgid ""
+"@In\n"
+"private QueueSender paymentQueueSender;   \n"
+"@In\n"
+"private QueueSession queueSession;\n"
+"\n"
+"public void publish(Payment payment) {\n"
+"      try\n"
+"      {\n"
+"         paymentQueueSender.send( queueSession.createObjectMessage"
+"(payment) );\n"
+"      } \n"
+"      catch (Exception ex)\n"
+"      {\n"
+"         throw new RuntimeException(ex);\n"
+"      } \n"
+"}"
+msgstr ""
+"@In\n"
+"private QueueSender paymentQueueSender;   \n"
+"@In\n"
+"private QueueSession queueSession;\n"
+"\n"
+"public void publish(Payment payment) {\n"
+"      try\n"
+"      {\n"
+"         paymentQueueSender.send( queueSession.createObjectMessage"
+"(payment) );\n"
+"      } \n"
+"      catch (Exception ex)\n"
+"      {\n"
+"         throw new RuntimeException(ex);\n"
+"      } \n"
+"}"
+
+#. Tag: title
+#: Jms.xml:99
+#, no-c-format
+msgid "Receiving messages using a message-driven bean"
+msgstr "メッセージ駆動型 Bean を使用したメッセージの受信"
+
+#. Tag: para
+#: Jms.xml:100
+#, no-c-format
+msgid ""
+"You can process messages using any EJB3 message driven bean. Message-driven "
+"beans may even be Seam components, in which case it is possible to inject "
+"other event and application scoped Seam components."
+msgstr ""
+"EJB3 メッセージ駆動型 Bean を利用してメッセージ処理が可能です。 メッセージ駆"
+"動型 Bean は Seam コンポーネントとすることも可能です。 この場合、イベントまた"
+"はアプリケーションスコープの Seam コンポーネントのインジェクトが可能です。"
+
+#. Tag: title
+#: Jms.xml:103
+#, no-c-format
+msgid "Receiving messages in the client"
+msgstr "クライアントでのメッセージの受信"
+
+#. Tag: para
+#: Jms.xml:104
+#, no-c-format
+msgid ""
+"Seam Remoting lets you subscribe to a JMS topic from client-side JavaScript. "
+"This is described in the next chapter."
+msgstr ""
+"Seam リモーティングは、クライアント側の JavaScript から JMS Topic に購読を可"
+"能にします。 これは次の章に記述します。"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Mail.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Mail.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Mail.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1327 @@
+# translation of Mail.po to Japanese
+# Noriko Mizumoto <noriko at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Mail\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-30 01:52+0000\n"
+"PO-Revision-Date: 2007-11-01 10:39+1000\n"
+"Last-Translator: Noriko Mizumoto <noriko at redhat.com>\n"
+"Language-Team: Japanese <fedora-trans-ja at redhat.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Mail.xml:6
+#, no-c-format
+msgid "Email"
+msgstr "Email"
+
+#. Tag: para
+#: Mail.xml:7
+#, no-c-format
+msgid "Seam now includes an optional components for templating and sending emails."
+msgstr ""
+"Seam には email の送信およびテンプレート作成用のオプションコンポーネントが含"
+"まれるようになります。"
+
+#. Tag: para
+#: Mail.xml:10
+#, no-c-format
+msgid ""
+"Email support is provided by <literal>jboss-seam-mail.jar</literal>. This "
+"JAR contains the mail JSF controls, which are used to construct emails, and "
+"the <literal>mailSession</literal> manager component."
+msgstr ""
+"Email のサポートは <literal>jboss-seam-mail.jar</literal> により提供されま"
+"す。 この JAR にはメールの作成に使用されるメール JSF コントロールおよび "
+"<literal>mailSession</literal> 管理コンポーネントが含まれます。"
+
+#. Tag: para
+#: Mail.xml:13
+#, no-c-format
+msgid ""
+"The examples/mail project contains an example of the email support in "
+"action. It demonstrates proper packaging, and it contains a number of "
+"example that demonstrate the key features currently supported."
+msgstr ""
+" examples/mail プロジェクトには実行可能なデモ用 email サポートのサンプルが含"
+"まれています。 正しいパッケージ化の方法を行い、 また現在サポートされている主"
+"要な機能を実際に示すサンプルがいくつか含まれています。"
+
+#. Tag: title
+#: Mail.xml:17
+#, no-c-format
+msgid "Creating a message"
+msgstr "メッセージを作成する"
+
+#. Tag: para
+#: Mail.xml:18
+#, no-c-format
+msgid ""
+"You don&#39;t need to learn a whole new templating language to use Seam "
+"Mail&mdash;an email is just facelet!"
+msgstr ""
+"Seam Mail を使うためにテンプレート作成用の新しい言語を丸ごと学ぶ必要はありま"
+"せん &mdash; email は単純に facelet になります。"
+
+#. Tag: programlisting
+#: Mail.xml:21
+#, no-c-format
+msgid ""
+"&lt;m:message xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"    xmlns:m=\"http://jboss.com/products/seam/mail\"\n"
+"    xmlns:h=\"http://java.sun.com/jsf/html\"&gt;\n"
+"  \n"
+"    &lt;m:from name=\"Peter\" address=\"peter at example.com\" /&gt;\n"
+"    &lt;m:to name=\"#{person.firstname} #{person.lastname}\"&gt;#{person."
+"address}&lt;/m:to&gt;\n"
+"    &lt;m:subject&gt;Try out Seam!&lt;/m:subject&gt;\n"
+"    \n"
+"    &lt;m:body&gt;\n"
+"        &lt;p&gt;&lt;h:outputText value=\"Dear #{person.firstname}\" /&gt;,"
+"&lt;/p&gt;\n"
+"        &lt;p&gt;You can try out Seam by visiting \n"
+"        &lt;a href=\"http://labs.jboss.com/jbossseam\"&gt;http://labs.jboss."
+"com/jbossseam&lt;/a&gt;.&lt;/p&gt;\n"
+"        &lt;p&gt;Regards,&lt;/p&gt;\n"
+"        &lt;p&gt;Peter&lt;/p&gt;\n"
+"    &lt;/m:body&gt;\n"
+"    \n"
+"&lt;/m:message&gt;"
+msgstr ""
+"&lt;m:message xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"    xmlns:m=\"http://jboss.com/products/seam/mail\"\n"
+"    xmlns:h=\"http://java.sun.com/jsf/html\"&gt;\n"
+"  \n"
+"    &lt;m:from name=\"Peter\" address=\"peter at example.com\" /&gt;\n"
+"    &lt;m:to name=\"#{person.firstname} #{person.lastname}\"&gt;#{person."
+"address}&lt;/m:to&gt;\n"
+"    &lt;m:subject&gt;Try out Seam!&lt;/m:subject&gt;\n"
+"    \n"
+"    &lt;m:body&gt;\n"
+"        &lt;p&gt;&lt;h:outputText value=\"Dear #{person.firstname}\" /&gt;,"
+"&lt;/p&gt;\n"
+"        &lt;p&gt;You can try out Seam by visiting \n"
+"        &lt;a href=\"http://labs.jboss.com/jbossseam\"&gt;http://labs.jboss."
+"com/jbossseam&lt;/a&gt;.&lt;/p&gt;\n"
+"        &lt;p&gt;Regards,&lt;/p&gt;\n"
+"        &lt;p&gt;Peter&lt;/p&gt;\n"
+"    &lt;/m:body&gt;\n"
+"    \n"
+"&lt;/m:message&gt;"
+
+#. Tag: para
+#: Mail.xml:22
+#, no-c-format
+msgid ""
+"The <literal>&lt;m:message&gt;</literal> tag wraps the whole message, and "
+"tells Seam to start rendering an email. Inside the <literal>&lt;m:message&gt;"
+"</literal> tag we use an <literal>&lt;m:from&gt;</literal> tag to set who "
+"the message is from, a <literal>&lt;m:to&gt;</literal> tag to specify a "
+"sender (notice how we use EL as we would in a normal facelet), and a "
+"<literal>&lt;m:subject&gt;</literal> tag."
+msgstr ""
+"<literal>&lt;m:message&gt;</literal> タグはメッセージ全体を包み、 Seam に "
+"email のレンダリングを開始するよう指示します。 <literal>&lt;m:message&gt;</"
+"literal> タグ内では、 メッセージの送信元の設定に <literal>&lt;m:from&gt;</"
+"literal> タグ、 送信者の指定に <literal>&lt;m:to&gt;</literal> タグ (通常の"
+"facelet 内にいるのでそれに応じた EL の使用方法に注意してください)、 また "
+"<literal>&lt;m:subject&gt;</literal> タグを使用します。"
+
+#. Tag: para
+#: Mail.xml:25
+#, no-c-format
+msgid ""
+"The <literal>&lt;m:body&gt;</literal> tag wraps the body of the email. You "
+"can use regular HTML tags inside the body as well as JSF components."
+msgstr ""
+"<literal>&lt;m:body&gt;</literal> は email のボディを包みます。 HTML 正規タグ"
+"をボディ内や JSF コンポーネント内に使用することができます。"
+
+#. Tag: para
+#: Mail.xml:28
+#, no-c-format
+msgid ""
+"So, now you have your email template, how do you go about sending it? Well, "
+"at the end of rendering the <literal>m:message</literal> the "
+"<literal>mailSession</literal> is called to send the email, so all you have "
+"to do is ask Seam to render the view:"
+msgstr ""
+"これで email テンプレートのできあがりです。 送信方法についてですが、 "
+"<literal>m:message</literal> のレンダリングの最後に、 <literal>mailSession</"
+"literal> が email を送信するようコールされるので、 ユーザーがすべきことは "
+"Seam にそのビューをレンダリングするよう支持するだけです。"
+
+#. Tag: programlisting
+#: Mail.xml:31
+#, no-c-format
+msgid ""
+"@In(create=true)\n"
+"private Renderer renderer;\n"
+"   \n"
+"public void send() {\n"
+"    try {\n"
+"       renderer.render(\"/simple.xhtml\");\n"
+"       facesMessages.add(\"Email sent successfully\");\n"
+"   } \n"
+"   catch (Exception e) {\n"
+"       facesMessages.add(\"Email sending failed: \" + e.getMessage());\n"
+"   }\n"
+"}"
+msgstr ""
+"@In(create=true)\n"
+"private Renderer renderer;\n"
+"   \n"
+"public void send() {\n"
+"    try {\n"
+"       renderer.render(\"/simple.xhtml\");\n"
+"       facesMessages.add(\"Email sent successfully\");\n"
+"   } \n"
+"   catch (Exception e) {\n"
+"       facesMessages.add(\"Email sending failed: \" + e.getMessage());\n"
+"   }\n"
+"}"
+
+#. Tag: para
+#: Mail.xml:32
+#, no-c-format
+msgid ""
+"If, for example, you entered an invalid email address, then an exception "
+"would be thrown, which is caught and then displayed to the user."
+msgstr ""
+"たとえば、 無効な email アドレスを入力すると例外が投げられ、 その例外がキャッ"
+"チされてユーザーに表示されます。"
+
+#. Tag: title
+#: Mail.xml:36
+#, no-c-format
+msgid "Attachments"
+msgstr "添付"
+
+#. Tag: para
+#: Mail.xml:37
+#, no-c-format
+msgid ""
+"Seam makes it easy to attach files to an email. It supports most of the "
+"standard java types used when working with files."
+msgstr ""
+"Seam では email へのファイル添付が容易になっています。 ファイルを操作する際に"
+"使用される標準 java タイプのほとんどに対応しています。"
+
+#. Tag: para
+#: Mail.xml:40
+#, no-c-format
+msgid "If you wanted to email the <literal>jboss-seam-mail.jar</literal>:"
+msgstr "<literal>jboss-seam-mail.jar</literal> に email 送信をしたい場合、"
+
+#. Tag: programlisting
+#: Mail.xml:43
+#, no-c-format
+msgid "&lt;m:attachment value=\"/WEB-INF/lib/jboss-seam-mail.jar\"/&gt;"
+msgstr "&lt;m:attachment value=\"/WEB-INF/lib/jboss-seam-mail.jar\"/&gt;"
+
+#. Tag: para
+#: Mail.xml:44
+#, no-c-format
+msgid ""
+"Seam will load the file from the classpath, and attach it to the email. By "
+"default it would be attached as <literal>jboss-seam-mail.jar</literal>; if "
+"you wanted it to have another name you would just add the <literal>fileName</"
+"literal> attribute:"
+msgstr ""
+"Seam はファイルをクラスパスからロードして、 email にそのファイルを添付しま"
+"す。 デフォルトでは、 <literal>jboss-seam-mail.jar</literal> という名前で添付"
+"されます。 別の名前にしたい場合は <literal>fileName</literal> 属性を追加する"
+"だけです。"
+
+#. Tag: programlisting
+#: Mail.xml:47
+#, no-c-format
+msgid ""
+"&lt;m:attachment value=\"/WEB-INF/lib/jboss-seam-mail.jar\" fileName=\"this-"
+"is-so-cool.jar\"/&gt;"
+msgstr ""
+"&lt;m:attachment value=\"/WEB-INF/lib/jboss-seam-mail.jar\" fileName=\"this-"
+"is-so-cool.jar\"/&gt;"
+
+#. Tag: para
+#: Mail.xml:48
+#, no-c-format
+msgid ""
+"You could also attach a <literal>java.io.File</literal>, a <literal>java.net."
+"URL</literal>:"
+msgstr ""
+"<literal>java.io.File</literal>, <literal>java.net.URL</literal> を添付するこ"
+"ともできます。"
+
+#. Tag: programlisting
+#: Mail.xml:51
+#, no-c-format
+msgid "&lt;m:attachment value=\"#{numbers}\"/&gt;"
+msgstr "&lt;m:attachment value=\"#{numbers}\"/&gt;"
+
+#. Tag: para
+#: Mail.xml:52
+#, no-c-format
+msgid "Or a <literal>byte[]</literal> or a <literal>java.io.InputStream</literal>:"
+msgstr ""
+"または、 <literal>byte[]</literal> あるいは <literal>java.io.InputStream</"
+"literal>"
+
+#. Tag: programlisting
+#: Mail.xml:55
+#, no-c-format
+msgid "&lt;m:attachment value=\"#{person.photo}\" contentType=\"image/png\"/&gt;"
+msgstr "&lt;m:attachment value=\"#{person.photo}\" contentType=\"image/png\"/&gt;"
+
+#. Tag: para
+#: Mail.xml:56
+#, no-c-format
+msgid ""
+"You&#39;ll notice that for a <literal>byte[]</literal> and a <literal>java."
+"io.InputStream</literal> you need to specify the MIME type of the attachment "
+"(as that information is not carried as part of the file)."
+msgstr ""
+"<literal>byte[]</literal> と <literal>java.io.InputStream</literal> に対して"
+"は添付の MIME タイプを指定する必要があるのがわかります (この情報はファイルの"
+"一部として扱われないため)。"
+
+#. Tag: para
+#: Mail.xml:59
+#, no-c-format
+msgid ""
+"And it gets even better, you can attach a Seam generated PDF, or any "
+"standard JSF view, just by wrapping a <literal>&lt;m:attachment&gt;</"
+"literal> around the normal tags you would use:"
+msgstr ""
+"さらに便利なことに、 使用する通常のタグの前後を <literal>&lt;m:attachment&gt;"
+"</literal> でラップするだけで Seam 生成 PDF や標準 JSF ビュー を添付すること"
+"ができます。"
+
+#. Tag: programlisting
+#: Mail.xml:62
+#, no-c-format
+msgid ""
+"&lt;m:attachment fileName=\"tiny.pdf\"&gt;\n"
+"    &lt;p:"
+"document&gt;                                                      \n"
+"        A very tiny "
+"PDF                                                                                                \n"
+"    &lt;/p:document&gt;\n"
+"&lt;/m:attachment&gt;"
+msgstr ""
+"&lt;m:attachment fileName=\"tiny.pdf\"&gt;\n"
+"    &lt;p:"
+"document&gt;                                                      \n"
+"        A very tiny "
+"PDF                                                                                                \n"
+"    &lt;/p:document&gt;\n"
+"&lt;/m:attachment&gt;"
+
+#. Tag: para
+#: Mail.xml:63
+#, no-c-format
+msgid ""
+"If you had a set of files you wanted to attach (for example a set of "
+"pictures loaded from a database) you can just use a <literal>&lt;ui:"
+"repeat&gt;</literal>:"
+msgstr ""
+"添付したいファイル一式が手元にある場合 (例、 データーベースからロードした写真"
+"一式)、 <literal>&lt;ui:repeat&gt;</literal> を使うだけで添付できます。"
+
+#. Tag: programlisting
+#: Mail.xml:66
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{people}\" var=\"person\"&gt;\n"
+"    &lt;m:attachment value=\"#{person.photo}\" contentType=\"image/jpeg\"\n"
+"    fileName=\"#{person.firstname}_#{person.lastname}.jpg\"/&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+"&lt;ui:repeat value=\"#{people}\" var=\"person\"&gt;\n"
+"    &lt;m:attachment value=\"#{person.photo}\" contentType=\"image/jpeg\"\n"
+"    fileName=\"#{person.firstname}_#{person.lastname}.jpg\"/&gt;\n"
+"&lt;/ui:repeat&gt;"
+
+#. Tag: title
+#: Mail.xml:70
+#, no-c-format
+msgid "HTML/Text alternative part"
+msgstr "HTML/Text 代替部分"
+
+#. Tag: para
+#: Mail.xml:71
+#, no-c-format
+msgid ""
+"Whilst most mail readers nowadays support HTML, some don&#39;t, so you can "
+"add a plain text alternative to your email body:"
+msgstr ""
+"今日では、 ほとんどのメールユーザーは HTML に対応しているなか、 HTML に対応し"
+"ていないユーザーもいます。 このため、 email のボディに代替となるプレーンテキ"
+"ストを追加することができます。"
+
+#. Tag: programlisting
+#: Mail.xml:74
+#, no-c-format
+msgid ""
+"&lt;m:body&gt;\n"
+"    &lt;f:facet name=\"alternative\"&gt;Sorry, your email reader can&#39;t "
+"show our fancy email, \n"
+"please go to http://labs.jboss.com/jbossseam to explore Seam.&lt;/f:"
+"facet&gt;\n"
+"&lt;/m:body&gt;"
+msgstr ""
+"&lt;m:body&gt;\n"
+"    &lt;f:facet name=\"alternative\"&gt;Sorry, your email reader can&#39;t "
+"show our fancy email, \n"
+"please go to http://labs.jboss.com/jbossseam to explore Seam.&lt;/f:"
+"facet&gt;\n"
+"&lt;/m:body&gt;"
+
+#. Tag: title
+#: Mail.xml:78
+#, no-c-format
+msgid "Multiple recipients"
+msgstr "複数の受信者"
+
+#. Tag: para
+#: Mail.xml:79
+#, no-c-format
+msgid ""
+"Often you&#39;ll want to send an email to a group of recipients (for example "
+"your users). All of the recipient mail tags can be placed inside a "
+"<literal>&lt;ui:repeat&gt;</literal>:"
+msgstr ""
+"email を複数の送信者グループに送信する必要があることも少なくありません (ユー"
+"ザーグループなど 。 受信者メールタグはすべて <literal>&lt;ui:repeat&gt;</"
+"literal> 内に配置することができます。"
+
+#. Tag: programlisting
+#: Mail.xml:82
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{allUsers} var=\"user\"&gt;\n"
+"    &lt;m:to name=\"#{user.firstname} #{user.lastname}\" address=\"#{user."
+"emailAddress}\" /&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+"&lt;ui:repeat value=\"#{allUsers} var=\"user\"&gt;\n"
+"    &lt;m:to name=\"#{user.firstname} #{user.lastname}\" address=\"#{user."
+"emailAddress}\" /&gt;\n"
+"&lt;/ui:repeat&gt;"
+
+#. Tag: title
+#: Mail.xml:86
+#, no-c-format
+msgid "Multiple messages"
+msgstr "複数のメッセージ"
+
+#. Tag: para
+#: Mail.xml:87
+#, no-c-format
+msgid ""
+"Sometimes, however, you need to send a slightly different message to each "
+"recipient (e.g. a password reset). The best way to do this is to place the "
+"whole message inside a <literal>&lt;ui:repeat&gt;</literal>:"
+msgstr ""
+"ただし、 若干異なる内容のメッセージを各受信hさに送信する必要がある場合もあり"
+"ます (パスワードのリセットなど)。 最適な方法としては、 メッセージ全体を "
+"<literal>&lt;ui:repeat&gt;</literal> 内に配置することです。"
+
+#. Tag: programlisting
+#: Mail.xml:90
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{people}\" var=\"p\"&gt;\n"
+"    &lt;m:message&gt;\n"
+"        &lt;m:from name=\"#{person.firstname} #{person.lastname}\"&gt;#"
+"{person.address}&lt;/m:from&gt;\n"
+"        &lt;m:to name=\"#{p.firstname}\"&gt;#{p.address}&lt;/m:to&gt;\n"
+"            ...\n"
+"    &lt;/m:message&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+"&lt;ui:repeat value=\"#{people}\" var=\"p\"&gt;\n"
+"    &lt;m:message&gt;\n"
+"        &lt;m:from name=\"#{person.firstname} #{person.lastname}\"&gt;#"
+"{person.address}&lt;/m:from&gt;\n"
+"        &lt;m:to name=\"#{p.firstname}\"&gt;#{p.address}&lt;/m:to&gt;\n"
+"            ...\n"
+"    &lt;/m:message&gt;\n"
+"&lt;/ui:repeat&gt;"
+
+#. Tag: title
+#: Mail.xml:94
+#, no-c-format
+msgid "Templating"
+msgstr "テンプレートの作成"
+
+#. Tag: para
+#: Mail.xml:95
+#, no-c-format
+msgid ""
+"The mail templating example shows that facelets templating Just Works with "
+"the Seam mail tags."
+msgstr ""
+"メールのテンプレート作成例では、 facelets テンプレートは Seam メールタグで正"
+"しく動作することを示しています。"
+
+#. Tag: para
+#: Mail.xml:98
+#, no-c-format
+msgid "Our <literal>template.xhtml</literal> contains:"
+msgstr "jboss.org の <literal>template.xhtml</literal> には次が含まれています。"
+
+#. Tag: programlisting
+#: Mail.xml:101
+#, no-c-format
+msgid ""
+"&lt;m:message&gt;\n"
+"   &lt;m:from name=\"Seam\" address=\"do-not-reply at jboss.com\" /&gt;\n"
+"   &lt;m:to name=\"#{person.firstname} #{person.lastname}\"&gt;#{person."
+"address}&lt;/m:to&gt;\n"
+"   &lt;m:subject&gt;#{subject}&lt;/m:subject&gt;\n"
+"   &lt;m:body&gt;\n"
+"       &lt;html&gt;\n"
+"           &lt;body&gt;\n"
+"               &lt;ui:insert name=\"body\"&gt;This is the default body, "
+"specified by the template.\n"
+"                                   &lt;/ui:insert&gt;\n"
+"           &lt;/body&gt;\n"
+"       &lt;/html&gt;\n"
+"   &lt;/m:body&gt;\n"
+"&lt;/m:message&gt;"
+msgstr ""
+"&lt;m:message&gt;\n"
+"   &lt;m:from name=\"Seam\" address=\"do-not-reply at jboss.com\" /&gt;\n"
+"   &lt;m:to name=\"#{person.firstname} #{person.lastname}\"&gt;#{person."
+"address}&lt;/m:to&gt;\n"
+"   &lt;m:subject&gt;#{subject}&lt;/m:subject&gt;\n"
+"   &lt;m:body&gt;\n"
+"       &lt;html&gt;\n"
+"           &lt;body&gt;\n"
+"               &lt;ui:insert name=\"body\"&gt;This is the default body, "
+"specified by the template.\n"
+"                                   &lt;/ui:insert&gt;\n"
+"           &lt;/body&gt;\n"
+"       &lt;/html&gt;\n"
+"   &lt;/m:body&gt;\n"
+"&lt;/m:message&gt;"
+
+#. Tag: para
+#: Mail.xml:102
+#, no-c-format
+msgid "Our <literal>templating.xhtml</literal> contains:"
+msgstr "jboss.org の <literal>templating.xhtml</literal> には次が含まれています。"
+
+#. Tag: programlisting
+#: Mail.xml:105
+#, no-c-format
+msgid ""
+"&lt;ui:param name=\"subject\" value=\"Templating with Seam Mail\"/&gt;\n"
+"&lt;ui:define name=\"body\"&gt;\n"
+"    &lt;p&gt;This example demonstrates that you can easily use &lt;i&gt;"
+"facelets templating&lt;/i&gt; in email!&lt;/p&gt;\n"
+"&lt;/ui:define&gt;"
+msgstr ""
+"&lt;ui:param name=\"subject\" value=\"Templating with Seam Mail\"/&gt;\n"
+"&lt;ui:define name=\"body\"&gt;\n"
+"    &lt;p&gt;This example demonstrates that you can easily use &lt;i&gt;"
+"facelets templating&lt;/i&gt; in email!&lt;/p&gt;\n"
+"&lt;/ui:define&gt;"
+
+#. Tag: title
+#: Mail.xml:109
+#, no-c-format
+msgid "Internationalisation"
+msgstr "国際化"
+
+#. Tag: para
+#: Mail.xml:110
+#, no-c-format
+msgid ""
+"Seam supports sending internationalised messages. By default, the encoding "
+"provided by JSF is used, but this can be overridden on the template:"
+msgstr ""
+"Seam は国際化メッセージの送信に対応しています。 デフォルトでは、 JSF で提供さ"
+"れるエンコーディングが使用されますが、 テンプレートで上書きすることができま"
+"す。"
+
+#. Tag: programlisting
+#: Mail.xml:113
+#, no-c-format
+msgid ""
+"&lt;m:message charset=\"UTF-8\"&gt;\n"
+"   ...\n"
+"&lt;/m:message&gt;"
+msgstr ""
+"&lt;m:message charset=\"UTF-8\"&gt;\n"
+"   ...\n"
+"&lt;/m:message&gt;"
+
+#. Tag: para
+#: Mail.xml:114
+#, no-c-format
+msgid ""
+"The body, subject and recipient (and from) name will be encoded. You&#39;ll "
+"need to make sure facelets uses the correct charset for parsing your pages "
+"by setting encoding of the template:"
+msgstr ""
+"ボディ、 件名、 そして受信者名と送信者名はコード化されます。 テンプレートのエ"
+"ンコーディングを設定して facelets が正しい文字セットをページ解析に使用するよ"
+"う確認する必要があります。"
+
+#. Tag: programlisting
+#: Mail.xml:117
+#, no-c-format
+msgid "&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;"
+msgstr "&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;"
+
+#. Tag: title
+#: Mail.xml:121
+#, no-c-format
+msgid "Other Headers"
+msgstr "その他のヘッダ"
+
+#. Tag: para
+#: Mail.xml:122
+#, no-c-format
+msgid ""
+"Sometimes you&#39;ll want to add other headers to your email. Seam provides "
+"support for some (see <xref linkend=\"Seam_Reference_Guide-Email-Tags\"/>). "
+"For example, we can set the importance of the email, and ask for a read "
+"receipt:"
+msgstr ""
+"その他のヘッダを email に追加したいことがあります。 Seam が対応しているものが"
+"いくつかあります (<xref linkend=\"Seam_Reference_Guide-Email-Tags\"/> を参照)。 たとえば、 email の"
+"重要度を設定することができます。"
+
+#. Tag: programlisting
+#: Mail.xml:125
+#, no-c-format
+msgid ""
+"&lt;m:message xmlns:m=\"http://jboss.com/products/seam/mail\"\n"
+"           importance=\"low\"\n"
+"           requestReadReceipt=\"true\"/&gt;"
+msgstr ""
+"&lt;m:message xmlns:m=\"http://jboss.com/products/seam/mail\"\n"
+"           importance=\"low\"\n"
+"           requestReadReceipt=\"true\"/&gt;"
+
+#. Tag: para
+#: Mail.xml:126
+#, no-c-format
+msgid ""
+"Otherise you can add any header to the message using the <literal>&lt;m:"
+"header&gt;</literal> tag:"
+msgstr ""
+"これ以外、 <literal>&lt;m:header&gt;</literal> タグを使ってメッセージにあらゆ"
+"るヘッダを追加することができます。"
+
+#. Tag: programlisting
+#: Mail.xml:129
+#, no-c-format
+msgid "&lt;m:header name=\"X-Sent-From\" value=\"JBoss Seam\"/&gt;"
+msgstr "&lt;m:header name=\"X-Sent-From\" value=\"JBoss Seam\"/&gt;"
+
+#. Tag: title
+#: Mail.xml:135
+#, no-c-format
+msgid "Receiving emails"
+msgstr "email を受信する"
+
+#. Tag: para
+#: Mail.xml:136
+#, no-c-format
+msgid ""
+"If you are using EJB then you can use a MDB (Message Driven Bean) to receive "
+"email. Seam comes with an improved version of <literal>mail-ra.rar</literal> "
+"as distributed in JBoss AS; until the improvements make there way into a "
+"released version of JBoss AS, replacing the default <literal>rar</literal> "
+"with the one distributed with Seam is recommended."
+msgstr ""
+"EJB を使用している場合、 MDB (Message Driven Bean) を使用して email を受信す"
+"ることができます。 Seam は <literal>mail-ra.rar</literal> の改良バージョンと"
+"共に JBoss AS で配信されます。 改良点が JBoss AS のリリースバージョンに参入す"
+"るまでのあいだ、 デフォルトの <literal>rar</literal> を Seam で配信されるもの"
+"に置き換えることを推奨します。"
+
+#. Tag: para
+#: Mail.xml:139
+#, no-c-format
+msgid "You can configure it like this:"
+msgstr "次のように設定することができます。"
+
+#. Tag: programlisting
+#: Mail.xml:142
+#, no-c-format
+msgid ""
+"@MessageDriven(activationConfig={\n"
+"         @ActivationConfigProperty(propertyName=\"mailServer\", "
+"propertyValue=\"localhost\"),\n"
+"         @ActivationConfigProperty(propertyName=\"mailFolder\", "
+"propertyValue=\"INBOX\"),\n"
+"         @ActivationConfigProperty(propertyName=\"storeProtocol\", "
+"propertyValue=\"pop3\"),\n"
+"         @ActivationConfigProperty(propertyName=\"userName\", propertyValue="
+"\"seam\"),\n"
+"         @ActivationConfigProperty(propertyName=\"password\", propertyValue="
+"\"seam\")\n"
+"})\n"
+"@ResourceAdapter(\"mail-ra.rar\")\n"
+"@Name(\"mailListener\")\n"
+"public class MailListenerMDB implements MailListener {\n"
+"\n"
+"   @In(create=true)\n"
+"   private OrderProcessor orderProcessor;\n"
+"\n"
+"   public void onMessage(Message message) {\n"
+"      // Process the message\n"
+"      orderProcessor.process(message.getSubject());\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+"@MessageDriven(activationConfig={\n"
+"         @ActivationConfigProperty(propertyName=\"mailServer\", "
+"propertyValue=\"localhost\"),\n"
+"         @ActivationConfigProperty(propertyName=\"mailFolder\", "
+"propertyValue=\"INBOX\"),\n"
+"         @ActivationConfigProperty(propertyName=\"storeProtocol\", "
+"propertyValue=\"pop3\"),\n"
+"         @ActivationConfigProperty(propertyName=\"userName\", propertyValue="
+"\"seam\"),\n"
+"         @ActivationConfigProperty(propertyName=\"password\", propertyValue="
+"\"seam\")\n"
+"})\n"
+"@ResourceAdapter(\"mail-ra.rar\")\n"
+"@Name(\"mailListener\")\n"
+"public class MailListenerMDB implements MailListener {\n"
+"\n"
+"   @In(create=true)\n"
+"   private OrderProcessor orderProcessor;\n"
+"\n"
+"   public void onMessage(Message message) {\n"
+"      // Process the message\n"
+"      orderProcessor.process(message.getSubject());\n"
+"   }\n"
+"   \n"
+"}"
+
+#. Tag: para
+#: Mail.xml:143
+#, no-c-format
+msgid ""
+"Each message received will cause <literal>onMessage(Message message)</"
+"literal> to be called. Most seam annotations will work inside a MDB but you "
+"musn&#39;t access the persistence context."
+msgstr ""
+"受信する各メッセージにより、 <literal>onMessage(Message message)</literal> が"
+"コールされることになります。 ほとんどの seam アノテーションは MDB 内で動作し"
+"ますが、 永続コンテキストにはアクセスしないでください。"
+
+#. Tag: para
+#: Mail.xml:146
+#, no-c-format
+msgid ""
+"You can find more information on the default <literal>mail-ra.rar</literal> "
+"at <ulink url=\"http://wiki.jboss.org/wiki/Wiki.jsp?page=InboundJavaMail"
+"\">http://wiki.jboss.org/wiki/Wiki.jsp?page=InboundJavaMail</ulink>. The "
+"version distributed with Seam also includes a <literal>debug</literal> "
+"property to enable JavaMail debugging, a <literal>flush</literal> property "
+"(by default true) to disable flushing a <literal>POP3</literal> mailbox "
+"after successfullying delivering a message to your MDB and a <literal>port</"
+"literal> property to override the default TCP port. Beware that the api for "
+"this may be altered as changes make there way into JBoss AS."
+msgstr ""
+"デフォルトの <literal>mail-ra.rar</literal> についての詳細は <ulink url="
+"\"http://wiki.jboss.org/wiki/Wiki.jsp?page=InboundJavaMail\">http://wiki."
+"jboss.org/wiki/Wiki.jsp?page=InboundJavaMail</ulink> をご覧ください。 Seam と"
+"共に配信されているバージョンには、 JavaMail のデバッグ機能を有効にする "
+"<literal>debug</literal> プロパティ、 使用している MDB へのメッセージ配信が正"
+"常に完了すると <literal>POP3</literal> メールボックスをフラッシュする機能を無"
+"効にする <literal>flush</literal> プロパティ (デフォルトでは ture)、 デフォル"
+"トの TCP ポートを上書きする <literal>port</literal> プロパティも含まれていま"
+"す。 これに対する api は今後 JBoss AS に加えられる変更に準じて変わる可能性が"
+"あるので注意してください。"
+
+#. Tag: para
+#: Mail.xml:149
+#, no-c-format
+msgid ""
+"If you aren&#39;t using JBoss AS you can still use <literal>mail-ra.rar</"
+"literal> (included with Seam in the mail directory), or you may find your "
+"application server includes a similar adapter."
+msgstr ""
+"JBoss AS を使用していない場合は <literal>mail-ra.rar</literal> を使用すること"
+"ができます (メールディレクトリ内の Seam に含まれている)。 または、 同様のアダ"
+"プタを含む独自のアプリケーションサーバーを思考しても構いません。"
+
+#. Tag: title
+#: Mail.xml:155
+#, no-c-format
+msgid "Configuration"
+msgstr "設定"
+
+#. Tag: para
+#: Mail.xml:156
+#, no-c-format
+msgid ""
+"To include Email support in your application, include <literal>jboss-seam-"
+"mail.jar</literal> in your WEB-INF/lib directory. If you are using JBoss AS "
+"there is no further configuration needed to use Seam&#39;s email support. "
+"Otherwise you need to make sure you have the JavaMail API, an implementation "
+"of the JavaMail API present (the API and impl used in JBoss AS are "
+"distributed with seam as <literal>lib/mail.jar</literal>), and a copy of the "
+"Java Activation Framework (distributed with seam as <literal>lib/activation."
+"jar</literal>."
+msgstr ""
+"アプリケーションに Email サポートを含ませるには、 WEB-INF/lib ディレクトリ内"
+"に <literal>jboss-seam-mail.jar</literal> を含ませます。 JBoss AS を使用して"
+"いる場合は、 Seam の email サポートを使用するのに特別な設定は必要ありませ"
+"ん。 これ以外は、 JavaMail API があるか、 JavaMail API が実装されているか "
+"(JBoss AS で使用される API と impl は <literal>lib/mail.jar</literal> として "
+"seam と共に配信される)、 Java Activation Framework のコピーがあるか "
+"(<literal>lib/activation.jar</literal> として seam と共に配信される) を確認す"
+"る必要があります。"
+
+#. Tag: para
+#: Mail.xml:159
+#, no-c-format
+msgid ""
+"The Seam Email module requires the use of Facelets as the view technology. "
+"Future versions of the library may also support the use of JSP. "
+"Additionally, it requires the use of the seam-ui package."
+msgstr ""
+"Seam Email モジュールにはビューテクノロジーとして Facelets を使用する必要があ"
+"ります。 ライブラリの今後のバージョンでは JSP の使用にも対応する可能性があり"
+"ます。 また、 seam-ui パッケージの使用も必要となります。"
+
+#. Tag: para
+#: Mail.xml:162
+#, no-c-format
+msgid ""
+"The <literal>mailSession</literal> component uses JavaMail to talk to a &#39;"
+"real&#39; SMTP server."
+msgstr ""
+"<literal>mailSession</literal> コンポーネントは JavaMail を使って「実際の」 "
+"SMTP サーバーと交信します。"
+
+#. Tag: literal
+#: Mail.xml:166
+#, no-c-format
+msgid "mailSession"
+msgstr "mailSession"
+
+#. Tag: para
+#: Mail.xml:167
+#, no-c-format
+msgid ""
+"A JavaMail Session may be available via a JNDI lookup if you are working in "
+"an JEE environment or you can use a Seam configured Session."
+msgstr ""
+"JEE 環境で作業している、 または Seam 設定の Session を使用できる場合、 "
+"JavaMail Session が JNDI ルックアップから使用できる可能性があります。"
+
+#. Tag: para
+#: Mail.xml:170
+#, no-c-format
+msgid ""
+"The mailSession component&#39;s properties are described in more detail in "
+"<xref linkend=\"Seam_Reference_Guide-Built_in_Seam_components-"
+"Mail_related_components\"/>."
+msgstr ""
+"mailSession コンポーネントのプロパティについての詳細は <xref linkend=\"Seam_Reference_Guide-Built_in_Seam_components-"
+"Mail_related_components\"/> で説明されています。"
+
+#. Tag: title
+#: Mail.xml:174
+#, no-c-format
+msgid "JNDI lookup in JBoss AS"
+msgstr "JBoss AS の JNDI ルックアップ"
+
+#. Tag: para
+#: Mail.xml:175
+#, no-c-format
+msgid ""
+"The JBossAS <literal>deploy/mail-service.xml</literal> configures a JavaMail "
+"session binding into JNDI. The default service configuration will need "
+"altering for your network. <ulink url=\"http://wiki.jboss.org/wiki/Wiki.jsp?"
+"page=JavaMail\">http://wiki.jboss.org/wiki/Wiki.jsp?page=JavaMail</ulink> "
+"describes the service in more detail."
+msgstr ""
+"JBossAS <literal>deploy/mail-service.xml</literal> は JNDI にバインドする "
+"JavaMail セッションを設定します。 デフォルトのサービス設定は使用しているネッ"
+"トワークに応じて変更が必要となります。 サービスについての詳細は <ulink url="
+"\"http://wiki.jboss.org/wiki/Wiki.jsp?page=JavaMail\">http://wiki.jboss.org/"
+"wiki/Wiki.jsp?page=JavaMail</ulink> で説明されています。"
+
+#. Tag: programlisting
+#: Mail.xml:178
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"        xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"        xmlns:mail=\"http://jboss.com/products/seam/mail\"&gt;\n"
+"        \n"
+"    &lt;mail:mail-session session-jndi-name=\"java:/Mail\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"        xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"        xmlns:mail=\"http://jboss.com/products/seam/mail\"&gt;\n"
+"        \n"
+"    &lt;mail:mail-session session-jndi-name=\"java:/Mail\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Mail.xml:179
+#, no-c-format
+msgid ""
+"Here we tell Seam to get the mail session bound to <literal>java:/Mail</"
+"literal> from JNDI."
+msgstr ""
+"ここで Seam に JNDI から <literal>java:/Mail</literal> にバウンドするメール"
+"セッションを取得するよう指示します。"
+
+#. Tag: title
+#: Mail.xml:185
+#, no-c-format
+msgid "Seam configured Session"
+msgstr "Seam 設定のセション"
+
+#. Tag: para
+#: Mail.xml:186
+#, no-c-format
+msgid ""
+"A mail session can be configured via <literal>components.xml</literal>. Here "
+"we tell Seam to use <literal>smtp.example.com</literal> as the smtp server,"
+msgstr ""
+"メールセッションは <literal>components.xml</literal> から設定することができま"
+"す。 ここで Seam に smtp サーバーとして <literal>smtp.example.com</literal> "
+"を使用するよう指示します。"
+
+#. Tag: programlisting
+#: Mail.xml:189
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"        xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"        xmlns:mail=\"http://jboss.com/products/seam/mail\"&gt;\n"
+"        \n"
+"    &lt;mail:mail-session host=\"smtp.example.com\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"        xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"        xmlns:mail=\"http://jboss.com/products/seam/mail\"&gt;\n"
+"        \n"
+"    &lt;mail:mail-session host=\"smtp.example.com\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+
+#. Tag: title
+#: Mail.xml:197
+#, no-c-format
+msgid "Tags"
+msgstr "ã‚¿ã‚°"
+
+#. Tag: para
+#: Mail.xml:198
+#, no-c-format
+msgid ""
+"Emails are generated using tags in the <literal>http://jboss.com/products/"
+"seam/mail</literal> namespace. Documents should always have the "
+"<literal>message</literal> tag at the root of the message. The message tag "
+"prepares Seam to generate an email."
+msgstr ""
+"Email は <literal>http://jboss.com/products/seam/mail</literal> 名前スペース"
+"内でタグを使って生成されます。 ドキュメントには常にメッセージのルートに "
+"<literal>message</literal> タグがあるはずです。 メッセージタグは Seam による "
+"email 生成の準備を行います。"
+
+#. Tag: para
+#: Mail.xml:201
+#, no-c-format
+msgid ""
+"The standard templating tags of facelets can be used as normal. Inside the "
+"body you can use any JSF tag which doesn&#39;t require access to external "
+"resources (stylesheets, javascript)."
+msgstr ""
+"facelets の標準テンプレート作成タグは通常通りに使用できます。 ボディ内では、 "
+"外部リソース (スタイルシート、 javascript) にアクセスを必要としない JSF タグ"
+"を使用できます。"
+
+#. Tag: term
+#: Mail.xml:206
+#, no-c-format
+msgid "&lt;m:message&gt;"
+msgstr "&lt;m:message&gt;"
+
+#. Tag: para
+#: Mail.xml:208
+#, no-c-format
+msgid "Root tag of a mail message"
+msgstr "メールメッセージのルートタグ"
+
+#. Tag: para
+#: Mail.xml:213
+#, no-c-format
+msgid ""
+"<literal>importance</literal> &mdash; low, normal or high. By default "
+"normal, this sets the importance of the mail message."
+msgstr ""
+"<literal>importance</literal> &mdash; low (低)、 normal (中)、 high (高) のい"
+"ずれかになります。 デフォルトでは normal (中) になり、 これがメールメッセージ"
+"の重要度を設定します。"
+
+#. Tag: para
+#: Mail.xml:218
+#, no-c-format
+msgid ""
+"<literal>precedence</literal> &mdash; sets the precedence of the message (e."
+"g. bulk)."
+msgstr ""
+"<literal>precedence</literal> &mdash; メッセージの優先度を設定します (例、 "
+"bulk)。"
+
+#. Tag: para
+#: Mail.xml:223
+#, no-c-format
+msgid ""
+"<literal>requestReadReceipt</literal> &mdash; by default false, if set, a "
+"read receipt will be request will be added, with the read receipt being sent "
+"to the <literal>From:</literal> address."
+msgstr ""
+"<literal>requestReadReceipt</literal> &mdash; デフォルトでは false です。 設"
+"定されると、 受信通知のリクエストが追加されて <literal>From:</literal> のアド"
+"レスに受信通知が送信されます。"
+
+#. Tag: para
+#: Mail.xml:228
+#, no-c-format
+msgid ""
+"<literal>urlBase</literal> &mdash; If set, the value is prepended to the "
+"<literal>requestContextPath</literal> allowing you to use components such as "
+"<literal>&lt;h:graphicImage&gt;</literal> in your emails."
+msgstr ""
+"<literal>urlBase</literal> &mdash; 設定されると、 その値が "
+"<literal>requestContextPath</literal> の先頭に追加され email 内で "
+"<literal>&lt;h:graphicImage&gt;</literal> などのコンポーネントを使用できるよ"
+"うになります。"
+
+#. Tag: term
+#: Mail.xml:236
+#, no-c-format
+msgid "&lt;m:from&gt;"
+msgstr "&lt;m:from&gt;"
+
+#. Tag: para
+#: Mail.xml:238
+#, no-c-format
+msgid ""
+"Set&#39;s the From: address for the email. You can only have one of these "
+"per email."
+msgstr ""
+"email の From: アドレスを設定します。 1 email に対して次のうちいずれか 1 つの"
+"み使用できます。"
+
+#. Tag: para
+#: Mail.xml:243
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the name the email should come from."
+msgstr "<literal>name</literal> &mdash; email の送信元の名前です。"
+
+#. Tag: para
+#: Mail.xml:248 Mail.xml:263
+#, no-c-format
+msgid ""
+"<literal>address</literal> &mdash; the email address the email should come "
+"from."
+msgstr "<literal>address</literal> &mdash; email の送信元の email アドレスです。"
+
+#. Tag: term
+#: Mail.xml:256
+#, no-c-format
+msgid "&lt;m:replyTo&gt;"
+msgstr "&lt;m:replyTo&gt;"
+
+#. Tag: para
+#: Mail.xml:258
+#, no-c-format
+msgid ""
+"Set&#39;s the Reply-to: address for the email. You can only have one of "
+"these per email."
+msgstr ""
+"email の Reply-to: アドレスを設定します。 1 email に対して次のうちいずれか 1 "
+"つのみ使用できます。"
+
+#. Tag: term
+#: Mail.xml:271
+#, no-c-format
+msgid "&lt;m:to&gt;"
+msgstr "&lt;m:to&gt;"
+
+#. Tag: para
+#: Mail.xml:273
+#, no-c-format
+msgid ""
+"Add a recipient to the email. Use multiple &lt;m:to&gt; tags for multiple "
+"recipients. This tag can be safely placed inside a repeat tag such as &lt;ui:"
+"repeat&gt;."
+msgstr ""
+"email に受信者を追加します。 受信者が複数の場合は複数の &lt;m:to&gt; タグを使"
+"用します。 このタグは &lt;ui:repeat&gt;. などの繰り返しタグ内に配置しても安全"
+"です。"
+
+#. Tag: para
+#: Mail.xml:278 Mail.xml:298 Mail.xml:318
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the name of the recipient."
+msgstr "<literal>name</literal> &mdash; 受信者の名前です。"
+
+#. Tag: para
+#: Mail.xml:283 Mail.xml:303 Mail.xml:323
+#, no-c-format
+msgid "<literal>address</literal> &mdash; the email address of the recipient."
+msgstr "<literal>address</literal> &mdash; 受信者の email アドレスです。"
+
+#. Tag: term
+#: Mail.xml:291
+#, no-c-format
+msgid "&lt;m:cc&gt;"
+msgstr "&lt;m:cc&gt;"
+
+#. Tag: para
+#: Mail.xml:293
+#, no-c-format
+msgid ""
+"Add a cc recipient to the email. Use multiple &lt;m:cc&gt; tags for multiple "
+"ccs. This tag can be safely placed inside a repeat tag such as &lt;ui:"
+"repeat&gt;."
+msgstr ""
+"email に CC の受信者を追加します。 CC が複数の場合は複数の &lt;m:cc&gt; タグ"
+"を使用します。 このタグは &lt;ui:repeat&gt; などの繰り返しタグ内に配置しても"
+"安全です。"
+
+#. Tag: term
+#: Mail.xml:311
+#, no-c-format
+msgid "&lt;m:bcc&gt;"
+msgstr "&lt;m:bcc&gt;"
+
+#. Tag: para
+#: Mail.xml:313
+#, no-c-format
+msgid ""
+"Add a bcc recipient to the email. Use multiple &lt;m:bcc&gt; tags for "
+"multiple bccs. This tag can be safely placed inside a repeat tag such as &lt;"
+"ui:repeat&gt;."
+msgstr ""
+"email に BCC の受信者を追加します。 BCC が複数の場合は複数の &lt;m:bcc&gt; タ"
+"グを使用します。 このタグは &lt;ui:repeat&gt; などの繰り返しタグ内に配置して"
+"も安全です。"
+
+#. Tag: term
+#: Mail.xml:331
+#, no-c-format
+msgid "&lt;m:header&gt;"
+msgstr "&lt;m:header&gt;"
+
+#. Tag: para
+#: Mail.xml:333
+#, no-c-format
+msgid "Add a header to the email (e.g. <literal>X-Sent-From: JBoss Seam</literal>"
+msgstr ""
+"email にヘッダを追加します (例、  <literal>X-Sent-From: JBoss Seam</"
+"literal>)。"
+
+#. Tag: para
+#: Mail.xml:338
+#, no-c-format
+msgid ""
+"<literal>name</literal> &mdash; The name of the header to add (e.g. "
+"<literal>X-Sent-From</literal>)."
+msgstr ""
+"<literal>name</literal> &mdash; 追加するヘッダ名です (例、 <literal>X-Sent-"
+"From</literal>)。"
+
+#. Tag: para
+#: Mail.xml:343
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; The value of the header to add (e.g. "
+"<literal>JBoss Seam</literal>)."
+msgstr ""
+"<literal>value</literal> &mdash; 追加するヘッダ値です (例、 <literal>JBoss "
+"Seam</literal>)。"
+
+#. Tag: term
+#: Mail.xml:351
+#, no-c-format
+msgid "&lt;m:attachment&gt;"
+msgstr "&lt;m:attachment&gt;"
+
+#. Tag: para
+#: Mail.xml:353
+#, no-c-format
+msgid "Add an attachment to the email."
+msgstr "email に添付を追加します。"
+
+#. Tag: para
+#: Mail.xml:358
+#, no-c-format
+msgid "<literal>value</literal> &mdash; The file to attach:"
+msgstr "<literal>value</literal> &mdash; 添付するファイルです。"
+
+#. Tag: para
+#: Mail.xml:363
+#, no-c-format
+msgid ""
+"<literal>String</literal> &mdash; A <literal>String</literal> is interpreted "
+"as a path to file within the classpath"
+msgstr ""
+"<literal>String</literal> &mdash;  <literal>String</literal> はクラスパス内の"
+"ファイルへのパスとして解釈されます。"
+
+#. Tag: para
+#: Mail.xml:368
+#, no-c-format
+msgid ""
+"<literal>java.io.File</literal> &mdash; An EL expression can reference a "
+"<literal>File</literal> object"
+msgstr ""
+"<literal>java.io.File</literal> &mdash; EL 式が <literal>File</literal> オブ"
+"ジェクトを参照できます。"
+
+#. Tag: para
+#: Mail.xml:373
+#, no-c-format
+msgid ""
+"<literal>java.net.URL</literal> &mdash; An EL expression can reference a "
+"<literal>URL</literal> object"
+msgstr ""
+"<literal>java.net.URL</literal> &mdash; EL 式が <literal>URL</literal> オブ"
+"ジェクトを参照できます。"
+
+#. Tag: para
+#: Mail.xml:378
+#, no-c-format
+msgid ""
+"<literal>java.io.InputStream</literal> &mdash; An EL expression can "
+"reference an <literal>InputStream</literal>. In this case both a "
+"<literal>fileName</literal> and a <literal>contentType</literal> must be "
+"specified."
+msgstr ""
+"<literal>java.io.InputStream</literal> &mdash; EL 式が <literal>InputStream</"
+"literal> を参照できます。 この場合、 <literal>fileName</literal> と "
+"<literal>contentType</literal> の両方が指定されなければなりません。"
+
+#. Tag: para
+#: Mail.xml:383
+#, no-c-format
+msgid ""
+"<literal>byte[]</literal> &mdash; An EL expression can reference an "
+"<literal>byte[]</literal>. In this case both a <literal>fileName</literal> "
+"and a <literal>contentType</literal> must be specified."
+msgstr ""
+"<literal>byte[]</literal> &mdash; EL 式が <literal>byte[]</literal> を参照で"
+"きます。 この場合、 <literal>fileName</literal> と <literal>contentType</"
+"literal> の両方が指定されなければなりません。"
+
+#. Tag: para
+#: Mail.xml:388
+#, no-c-format
+msgid "If the value attribute is ommitted:"
+msgstr "値属性が省略される場合、"
+
+#. Tag: para
+#: Mail.xml:393
+#, no-c-format
+msgid ""
+"If this tag contains a <literal>&lt;p:document&gt;</literal> tag, the "
+"document described will be generated and attached to the email. A "
+"<literal>fileName</literal> should be specfied."
+msgstr ""
+"このタグが <literal>&lt;p:document&gt;</literal> タグを含んでいるなら、 記述"
+"されるドキュメントが生成されて email に添付されます。 <literal>fileName</"
+"literal> が指定されなければなりません。"
+
+#. Tag: para
+#: Mail.xml:398
+#, no-c-format
+msgid ""
+"If this tag contains other JSF tags a HTML document will be generated from "
+"them and attached to the email. A <literal>fileName</literal> should be "
+"specfied."
+msgstr ""
+"このタグがその他の JSF タグをを含んでいると、 HTML ドキュメントがそこから生成"
+"されて email に添付されます。 <literal>fileName</literal> が指定されていなけ"
+"ればなりません。"
+
+#. Tag: para
+#: Mail.xml:405
+#, no-c-format
+msgid ""
+"<literal>fileName</literal> &mdash; Specify the file name to use for the "
+"attached file."
+msgstr ""
+"<literal>fileName</literal> &mdash; 添付するファイルに使用するファイル名を指"
+"定します。"
+
+#. Tag: para
+#: Mail.xml:410
+#, no-c-format
+msgid ""
+"<literal>contentType</literal> &mdash; Specify the MIME type of the attached "
+"file"
+msgstr ""
+"<literal>contentType</literal> &mdash; 添付されるファイルの MIME タイプを指定"
+"します。"
+
+#. Tag: term
+#: Mail.xml:418
+#, no-c-format
+msgid "&lt;m:subject&gt;"
+msgstr "&lt;m:subject&gt;"
+
+#. Tag: para
+#: Mail.xml:420
+#, no-c-format
+msgid "Set&#39;s the subject for the email."
+msgstr "email の件名を設定します。"
+
+#. Tag: term
+#: Mail.xml:426
+#, no-c-format
+msgid "&lt;m:body&gt;"
+msgstr "&lt;m:body&gt;"
+
+#. Tag: para
+#: Mail.xml:428
+#, no-c-format
+msgid ""
+"Set&#39;s the body for the email. Supports an <literal>alternative</literal> "
+"facet which, if an HTML email is generated can contain alternative text for "
+"a mail reader which doesn&#39;t support html."
+msgstr ""
+"email のボディを設定します。 HTML email が生成される場合に html に対応してい"
+"ない受け取り側に提供する代替テキストを含む <literal>alternative</literal> "
+"ファセットをサポートしています。"
+
+#. Tag: para
+#: Mail.xml:433
+#, no-c-format
+msgid ""
+"<literal>type</literal> &mdash; If set to <literal>plain</literal> then a "
+"plain text email will be generated otherwise an HTML email is generated."
+msgstr ""
+"<literal>type</literal> &mdash; <literal>plain</literal> に設定するとプレーン"
+"テキストの email が生成されます。 これ以外は HTML email が生成されます。"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Persistence.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Persistence.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Persistence.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1032 @@
+# translation of Persistence.po to Japanese
+# Noriko Mizumoto <noriko at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Persistence\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-30 01:52+0000\n"
+"PO-Revision-Date: 2007-11-01 10:22+1000\n"
+"Last-Translator: Noriko Mizumoto <noriko at redhat.com>\n"
+"Language-Team: Japanese <fedora-trans-ja at redhat.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Persistence.xml:6
+#, no-c-format
+msgid "Seam and Object/Relational Mapping"
+msgstr "Seam とオブジェクト/リレーショナルマッピング"
+
+#. Tag: para
+#: Persistence.xml:7
+#, no-c-format
+msgid ""
+"Seam provides extensive support for the two most popular persistence "
+"architectures for Java: Hibernate3, and the Java Persistence API introduced "
+"with EJB 3.0. Seam&#39;s unique state-management architecture allows the "
+"most sophisticated ORM integration of any web application framework."
+msgstr ""
+"Seam は EJB 3.0 で導入される Java Persistence API および Hibernate3 の 2 つの"
+"最も一般的な Java 用永続アーキテクチャに対して広範なサポートを提供します。 "
+"Seam 固有の状態管理アーキテクチャにより、 いかなるウェブアプリケーションフ"
+"レームワークからも高度な ORM 統合を実現します。"
+
+#. Tag: title
+#: Persistence.xml:11
+#, no-c-format
+msgid "Introduction"
+msgstr "はじめに"
+
+#. Tag: para
+#: Persistence.xml:12
+#, no-c-format
+msgid ""
+"Seam grew out of the frustration of the Hibernate team with the "
+"statelessness typical of the previous generation of Java application "
+"architectures. The state management architecture of Seam was originally "
+"designed to solve problems relating to persistence&mdash;in particular "
+"problems associated with <emphasis>optimistic transaction processing</"
+"emphasis>. Scalable online applications always use optimistic transactions. "
+"An atomic (database/JTA) level transaction should not span a user "
+"interaction unless the application is designed to support only a very small "
+"number of concurrent clients. But almost all interesting work involves first "
+"displaying data to a user, and then, slightly later, updating the same data. "
+"So Hibernate was designed to support the idea of a persistence context which "
+"spanned an optimistic transaction."
+msgstr ""
+"Seam は、 旧世代の Java アプリケーションアーキテクチャの典型であるステートレ"
+"ス性に悩む Hibernate チームのフラストレーションから生まれました。 Seam の状態"
+"管理アーキテクチャは元々、 永続性に関する問題の解決を目的として設計されまし"
+"た &mdash; 特に<emphasis>楽観的なトランザクションの処理</emphasis>に関連する"
+"問題。 スケーラブルなオンラインアプリケーションは常に楽観的なトランザクション"
+"を使用します。 微小レベル (データベース/JTA) のトランザクションは、 アプリ"
+"ケーションが並列している極少数のクライアント群のみをサポートするよう設計され"
+"ていない限り、 ユーザーのインテラクションをスパンしません。 しかし、 目的とす"
+"るほぼすべての作業はまずユーザーに対するデータの表示に関連し、 次に少し遅れて"
+"同じデータの更新に関連してきます。 このため、 Hibernate は楽観的なトランザク"
+"ションをスパンした永続コンテキストという目的に対応するよう設計されました。"
+
+#. Tag: para
+#: Persistence.xml:15
+#, no-c-format
+msgid ""
+"Unfortunately, the so-called \"stateless\" architectures that preceded Seam "
+"and EJB 3.0 had no construct for representing an optimistic transaction. So, "
+"instead, these architectures provided persistence contexts scoped to the "
+"atomic transaction. Of course, this resulted in many problems for users, and "
+"is the cause of the number one user complaint about Hibernate: the dreaded "
+"<literal>LazyInitializationException</literal>. What we need is a construct "
+"for representing an optimistic transaction in the application tier."
+msgstr ""
+"残念ながら、 Seam や EJB 3.0 より以前の「ステートレス」と呼ばれるアーキテク"
+"チャには楽観的なトランザクションを表示するための構成概念がありませんでした。 "
+"このため、 代わりに微小なトランザクションに対してスコープされる永続コンテキス"
+"トを提供していました。 当然、 ユーザーにとっては問題が多くなり、 恐怖の "
+"<literal>LazyInitializationException</literal> として Hibernate に関するユー"
+"ザーからの苦情は最多となりました。 ここで必要なのはアプリケーション層で楽観的"
+"トランザクションを表示する構成概念なのです。"
+
+#. Tag: para
+#: Persistence.xml:18
+#, no-c-format
+msgid ""
+"EJB 3.0 recognizes this problem, and introduces the idea of a stateful "
+"component (a stateful session bean) with an <emphasis>extended persistence "
+"context</emphasis> scoped to the lifetime of the component. This is a "
+"partial solution to the problem (and is a useful construct in and of itself) "
+"however there are two problems:"
+msgstr ""
+"EJB 3.0 はこの問題を認識し、 コンポーネントの寿命に対してスコープされる"
+"<emphasis>拡張永続コンテキスト</emphasis>でステートフルなコンポーネント (ス"
+"テートフルセッション bean) という目的を導入します。 これは問題に関して完全な"
+"ソリューションではありませんが (それ自体は便利な構成となる) 、 2 つの問題があ"
+"ります。"
+
+#. Tag: para
+#: Persistence.xml:23
+#, no-c-format
+msgid ""
+"The lifecycle of the stateful session bean must be managed manually via code "
+"in the web tier (it turns out that this is a subtle problem and much more "
+"difficult in practice than it sounds)."
+msgstr ""
+"ステートフルセッション bean の寿命はウェブ層でコード経由により手作業で管理さ"
+"れなければなりません (これは微妙な問題であり実際にはかなり困難であることがわ"
+"かります)。"
+
+#. Tag: para
+#: Persistence.xml:28
+#, no-c-format
+msgid ""
+"Propagation of the persistence context between stateful components in the "
+"same optimistic transaction is possible, but tricky."
+msgstr ""
+"同じ楽観的トランザクション内のステートフルコンポーネント間での永続コンテキス"
+"トの伝播は可能ですが簡単ではありません。"
+
+#. Tag: para
+#: Persistence.xml:33
+#, no-c-format
+msgid ""
+"Seam solves the first problem by providing conversations, and stateful "
+"session bean components scoped to the conversation. (Most conversations "
+"actually represent optimistic transactions in the data layer.) This is "
+"sufficient for many simple applications (such as the Seam booking demo) "
+"where persistence context propagation is not needed. For more complex "
+"applications, with many loosly-interacting components in each conversation, "
+"propagation of the persistence context across components becomes an "
+"important issue. So Seam extends the persistence context management model of "
+"EJB 3.0, to provide conversation-scoped extended persistence contexts."
+msgstr ""
+"Seam は、 対話及び対話に対してスコープされるステートフルセッション bean コン"
+"ポーネントを提供することにより 1 番目の問題を解決します。 (ほとんどの対話は実"
+"際にはデータ層で楽観的トランザクションを表示します。) 永続コンテキストの伝播"
+"を必要としないような多くのシンプルなアプリケーション (Seam ブッキングデモな"
+"ど) にはこれで十分です。 各対話内で軽く作用しあっているコンポーネントを多く"
+"持っているようなもう少し複雑なアプリケーションの場合、 コンポーネント群全体へ"
+"の永続コンテキストの伝播は重要な問題となります。 このため、 Seam は EJB 3.0 "
+"の永続コンテキスト管理モデルを拡張して対話スコープの拡張永続コンテキストを提"
+"供しています。"
+
+#. Tag: title
+#: Persistence.xml:39
+#, no-c-format
+msgid "Seam managed transactions"
+msgstr "Seam 管理トランザクション"
+
+#. Tag: para
+#: Persistence.xml:40
+#, no-c-format
+msgid ""
+"EJB session beans feature declarative transaction management. The EJB "
+"container is able to start a transaction transparently when the bean is "
+"invoked, and end it when the invocation ends. If we write a session bean "
+"method that acts as a JSF action listener, we can do all the work associated "
+"with that action in one transaction, and be sure that it is committed or "
+"rolled back when we finish processing the action. This is a great feature, "
+"and all that is needed by some Seam applications."
+msgstr ""
+"EJB セッション bean は宣言型トランザクション管理を特長としています。 EJB コン"
+"テナは bean が呼び出されると透過的にトランザクションを起動し、 呼出しが終了す"
+"るとトランザクションも終了させることが可能です。 JSF アクションリスナーとして"
+"動作するセッション bean メソッドを記述する場合、 そのアクションに関連するすべ"
+"ての作業を 1 つのトランザクションで行うことができ、 アクションの処理が完了し"
+"たら必ずコミットまたはロールバックされるようにすることができます。 これは素晴"
+"らしい機能であり、 いくつかの Seam アプリケーションに必要とされるものはこれだ"
+"けです。"
+
+#. Tag: para
+#: Persistence.xml:43
+#, no-c-format
+msgid ""
+"However, there is a problem with this approach. A Seam application may not "
+"perform all data access for a request from a single method call to a session "
+"bean."
+msgstr ""
+"ただし、 この方法には問題が 1 つあります。 Seam アプリケーションは単一のメ"
+"ソッドコールからセッション bean へのリクエストに対して全データアクセスを行わ"
+"ない可能性があります。"
+
+#. Tag: para
+#: Persistence.xml:48
+#, no-c-format
+msgid ""
+"The request might require processing by several loosly-coupled components, "
+"each of which is called independently from the web layer. It is common to "
+"see several or even many calls per request from the web layer to EJB "
+"components in Seam."
+msgstr ""
+"このリクエストにはいくつかの疎結合コンポーネントによる処理を必要とする場合が"
+"あります。 それぞれのコンポーネントが web 層から個別に呼び出されます。 Seam "
+"ではリクエストごと web 層から EJB コンポーネントへのコールが複数あるのはよく"
+"見られることです。"
+
+#. Tag: para
+#: Persistence.xml:53
+#, no-c-format
+msgid "Rendering of the view might require lazy fetching of associations."
+msgstr "ビューのレンダリングには関連の遅延フェッチが必要な場合があります。"
+
+#. Tag: para
+#: Persistence.xml:58
+#, no-c-format
+msgid ""
+"The more transactions per request, the more likely we are to encounter "
+"atomicity and isolation problems when our application is processing many "
+"concurrent requests. Certainly, all write operations should occur in the "
+"same transaction!"
+msgstr ""
+"1 リクエストごとのトランザクション数が多くなると、 使用しているアプリケーショ"
+"ンが多くの並列リクエストを処理している際にそれだけ多くの微小で個別の問題に遭"
+"遇する可能性が高くなります。 書き込み動作はすべて、 必ず、 同じトランザクショ"
+"ン内で起こらなければならないからです。"
+
+#. Tag: para
+#: Persistence.xml:61
+#, no-c-format
+msgid ""
+"Hibernate users developed the <emphasis>\"open session in view\"</emphasis> "
+"pattern to work around this problem. In the Hibernate community, \"open "
+"session in view\" was historically even more important because frameworks "
+"like Spring use transaction-scoped persistence contexts. So rendering the "
+"view would cause <literal>LazyInitializationException</literal>s when "
+"unfetched associations were accessed."
+msgstr ""
+"Hibernate ユーザーはこの問題を回避するため<emphasis>「ビュー内のオープンセッ"
+"ション」</emphasis>パターンを開発しました。 Hibernate コミュニティでは、 "
+"Spring のようなフレームワークはトランザクションスコープの永続コンテキストを使"
+"用するため「ビュー内のオープンセッション」は歴史的により重要でした。 故に"
+"ビューのレンダリングは、 フェッチされない関連がアクセスされると "
+"<literal>LazyInitializationException</literal> を引き起こすことになりました。"
+
+#. Tag: para
+#: Persistence.xml:64
+#, no-c-format
+msgid ""
+"This pattern is usually implemented as a single transaction which spans the "
+"entire request. There are several problems with this implementation, the "
+"most serious being that we can never be sure that a transaction is "
+"successful until we commit it&mdash;but by the time the \"open session in "
+"view\" transaction is committed, the view is fully rendered, and the "
+"rendered response may already have been flushed to the client. How can we "
+"notify the user that their transaction was unsuccessful?"
+msgstr ""
+"このパターンは通常、 リクエスト全体にスパンする単一トランザクションとして実装"
+"されます。 この実装ではいくつかの問題があります。 もっとも深刻となる問題は、 "
+"トランザクションをコミットするまでそれが成功なのかどうか全く確認できないこと"
+"です &mdash; ただし、 「ビュー内のオープンセッション」トランザクションがコ"
+"ミットされるようになると、 ビューは完全にレンダリングされるので、 レンダリン"
+"グされるレスポンスはすでにクライアントにフラッシュされている場合があります。 "
+"ユーザーのトランザクションが成功しなかったことをユーザーに知らせるにはどうし"
+"たらよいでしょうか。"
+
+#. Tag: para
+#: Persistence.xml:67
+#, no-c-format
+msgid ""
+"Seam solves both the transaction isolation problem and the association "
+"fetching problem, while working around the problems with \"open session in "
+"view\". The solution comes in two parts:"
+msgstr ""
+"Seam はトランザクション個別の問題と関連フェッチの問題の両方を解決しながら、 "
+"「ビュー内のオープンセッション」で問題を回避します。 解決法は 2 つに分けられ"
+"ます。"
+
+#. Tag: para
+#: Persistence.xml:72
+#, no-c-format
+msgid ""
+"use an extended persistence context that is scoped to the conversation, "
+"instead of to the transaction"
+msgstr ""
+"トランザクションに対してスコープされるのではなく、 対話に対してスコープされる"
+"拡張永続コンテキストを使用する"
+
+#. Tag: para
+#: Persistence.xml:77
+#, no-c-format
+msgid ""
+"use two transactions per request; the first spans the beginning of the "
+"update model values phase until the end of the invoke application phase; the "
+"second spans the render response phase"
+msgstr ""
+"1 リクエストに対して 2 つのトランザクションを使用する、 1 番目はモデル値の更"
+"新フェーズの開始からアプリケーション呼び出しフェーズの終わりまでスパンし、 2 "
+"番目はレスポンスのレンダリングフェーズをスパンする"
+
+#. Tag: para
+#: Persistence.xml:82
+#, no-c-format
+msgid ""
+"In the next section, we&#39;ll tell you how to set up a conversation-scope "
+"persistence context. But first we need to tell you how to enable Seam "
+"transaction management. Note that you can use conversation-scoped "
+"persistence contexts without Seam transaction management, and there are good "
+"reasons to use Seam transaction management even when you&#39;re not using "
+"Seam-managed persistence contexts. However, the two facilities were designed "
+"to work together, and work best when used together."
+msgstr ""
+"次のセクションでは、 対話スコープの永続コンテキストの設定方法について説明して"
+"いきますが、 まず最初に Seam トランザクション管理を有効にする方法を説明してお"
+"く必要があります。 Seam トランザクション管理なしで対話スコープの永続コンテキ"
+"ストを使用することができ、 また Seam 管理永続コンテキストを使用していない場合"
+"でも Seam トランザクション管理を利用すると便利なことがあるので留意しておいて"
+"ください。 ただし、 この 2 つの機能は連携して動作するよう設計されているた"
+"め、 併用する方が最適です。"
+
+#. Tag: title
+#: Persistence.xml:86
+#, no-c-format
+msgid "Enabling Seam-managed transactions"
+msgstr "Seam 管理トランザクションを有効にする"
+
+#. Tag: para
+#: Persistence.xml:87
+#, no-c-format
+msgid ""
+"To make use of <emphasis>Seam managed transactions</emphasis>, you need to "
+"use <literal>TransactionalSeamPhaseListener</literal> in place of "
+"<literal>SeamPhaseListener</literal>."
+msgstr ""
+"<emphasis>Seam managed transactions</emphasis> を利用するには、 "
+"<literal>SeamPhaseListener</literal> の代わりに "
+"<literal>TransactionalSeamPhaseListener</literal> を使用する必要があります。"
+
+#. Tag: programlisting
+#: Persistence.xml:90
+#, no-c-format
+msgid ""
+"&lt;lifecycle&gt;\n"
+"     &lt;phase-listener&gt;\n"
+"        org.jboss.seam.jsf.TransactionalSeamPhaseListener\n"
+"    &lt;/phase-listener&gt;\n"
+"&lt;/lifecycle&gt;"
+msgstr ""
+"&lt;lifecycle&gt;\n"
+"     &lt;phase-listener&gt;\n"
+"        org.jboss.seam.jsf.TransactionalSeamPhaseListener\n"
+"    &lt;/phase-listener&gt;\n"
+"&lt;/lifecycle&gt;"
+
+#. Tag: para
+#: Persistence.xml:91
+#, no-c-format
+msgid ""
+"Seam transaction management is useful even if you&#39;re using EJB 3.0 "
+"container-managed persistence contexts. But it is especially useful if you "
+"use Seam outside a Java EE 5 environment, or in any other case where you "
+"would use a Seam-managed persistence context."
+msgstr ""
+"Seam トランザクション管理は、 EJB 3.0 コンテナ管理の永続コンテキストを使用し"
+"ている場合にも便利です。 しかし、 Java EE 5 環境の外で Seam を使用している場"
+"合、 その他 Seam 管理の永続コンテキストを使用するような場合に特に役立ちます。"
+
+#. Tag: title
+#: Persistence.xml:99
+#, no-c-format
+msgid "Seam-managed persistence contexts"
+msgstr "Seam 管理の永続コンテキスト"
+
+#. Tag: para
+#: Persistence.xml:100
+#, no-c-format
+msgid ""
+"If you&#39;re using Seam outside of a Java EE 5 environment, you can&#39;t "
+"rely upon the container to manage the persistence context lifecycle for you. "
+"Even if you are in an EE 5 environment, you might have a complex application "
+"with many loosly coupled components that collaborate together in the scope "
+"of a single conversation, and in this case you might find that propagation "
+"of the persistence context between component is tricky and error-prone."
+msgstr ""
+"Seam を Java EE 5 環境の外で使用している場合、 コンテナによる永続コンテキスト"
+"のライフサイクルの管理は期待できません。 EE 5 環境であっても、 単一の対話の範"
+"囲内で連携する多くの疎結合コンポーネントを持つ複雑なアプリケーションがあるか"
+"もしれず、 この場合にはコンポーネント間での永続コンテキストの伝播が簡単ではな"
+"くエラーが発生しやすい場合があります。"
+
+#. Tag: para
+#: Persistence.xml:103
+#, no-c-format
+msgid ""
+"In either case, you&#39;ll need to use a <emphasis>managed persistence "
+"context</emphasis> (for JPA) or a <emphasis>managed session</emphasis> (for "
+"Hibernate) in your components. A Seam-managed persistence context is just a "
+"built-in Seam component that manages an instance of <literal>EntityManager</"
+"literal> or <literal>Session</literal> in the conversation context. You can "
+"inject it with <literal>@In</literal>."
+msgstr ""
+"いずれの場合では、 コンポーネントで <emphasis>managed persistence context</"
+"emphasis> (JPA 用) または <emphasis>managed session</emphasis> (Hibernate "
+"用) のいずれかを使用する必要があります。 Seam 管理永続コンテキストは単純にビ"
+"ルトインの Seam コンポーネントで対話コンテキストで <literal>EntityManager</"
+"literal> または <literal>Session</literal> のインスタンスを管理します。 "
+"<literal>@In</literal> でインジェクトすることができます。"
+
+#. Tag: para
+#: Persistence.xml:106
+#, no-c-format
+msgid ""
+"Seam-managed persistence contexts are extremely efficient in a clustered "
+"environment. Seam is able to perform an optimization that EJB 3.0 "
+"specification does not allow containers to use for container-managed "
+"extended persistence contexts. Seam supports transparent failover of "
+"extended persisence contexts, without the need to replicate any persistence "
+"context state between nodes. (We hope to fix this oversight in the next "
+"revision of the EJB spec.)"
+msgstr ""
+"Seam 管理の永続コンテキストはクラスタ化された環境で非常に効率的です。 EJB "
+"3.0 の仕様はコンテナによるコンテナ管理拡張永続コンテキストの使用を許可しない"
+"最適化を Seam は実行することができます。 ノード間の永続コンテキストの状態を複"
+"製することなく拡張永続コンテキストの透過的なフェールオーバーをサポートしま"
+"す。 (この見過ごされてしまった点については、 次回の EJB 仕様のリビジョンで修"
+"正したいと考えています。)"
+
+#. Tag: title
+#: Persistence.xml:110
+#, no-c-format
+msgid "Using a Seam-managed persistence context with JPA"
+msgstr "JPA で Seam 管理の永続コンテキストを使用する"
+
+#. Tag: para
+#: Persistence.xml:111
+#, no-c-format
+msgid ""
+"Configuring a managed persistence context is easy. In <literal>components."
+"xml</literal>, we can write:"
+msgstr ""
+"管理永続コンテキストの設定は簡単です。 <literal>components.xml</literal> 内に"
+"次のように記述します。"
+
+#. Tag: programlisting
+#: Persistence.xml:114
+#, no-c-format
+msgid ""
+"&lt;core:managed-persistence-context name=\"bookingDatabase\" \n"
+"                           auto-create=\"true\"\n"
+"            persistence-unit-jndi-name=\"java:/EntityManagerFactories/"
+"bookingData\"/&gt;"
+msgstr ""
+"&lt;core:managed-persistence-context name=\"bookingDatabase\" \n"
+"                           auto-create=\"true\"\n"
+"            persistence-unit-jndi-name=\"java:/EntityManagerFactories/"
+"bookingData\"/&gt;"
+
+#. Tag: para
+#: Persistence.xml:115
+#, no-c-format
+msgid ""
+"This configuration creates a conversation-scoped Seam component named "
+"<literal>bookingDatabase</literal> that manages the lifecycle of "
+"<literal>EntityManager</literal> instances for the persistence unit "
+"(<literal>EntityManagerFactory</literal> instance) with JNDI name "
+"<literal>java:/EntityManagerFactories/bookingData</literal>."
+msgstr ""
+"この設定により対話スコープの <literal>bookingDatabase</literal> という名前の "
+"Seam コンポーネントが作成され、 JNDI 名 <literal>java:/"
+"EntityManagerFactories/bookingData</literal> を持つ永続ユニット "
+"(<literal>EntityManagerFactory</literal> インスタンス) の "
+"<literal>EntityManager</literal> インスタンスの寿命を管理します。"
+
+#. Tag: para
+#: Persistence.xml:118
+#, no-c-format
+msgid ""
+"Of course, you need to make sure that you have bound the "
+"<literal>EntityManagerFactory</literal> into JNDI. In JBoss, you can do this "
+"by adding the following property setting to <literal>persistence.xml</"
+"literal>."
+msgstr ""
+"当然、 <literal>EntityManagerFactory</literal> が JNDI にバウンドされたことを"
+"確認する必要があります。 JBoss では、 次のプロパティ設定を "
+"<literal>persistence.xml</literal> に追加すると確認を行うことができます。"
+
+#. Tag: programlisting
+#: Persistence.xml:121
+#, no-c-format
+msgid ""
+"&lt;property name=\"jboss.entity.manager.factory.jndi.name\" \n"
+"          value=\"java:/EntityManagerFactories/bookingData\"/&gt;"
+msgstr ""
+"s&lt;property name=\"jboss.entity.manager.factory.jndi.name\" \n"
+"          value=\"java:/EntityManagerFactories/bookingData\"/&gt;"
+
+#. Tag: para
+#: Persistence.xml:122
+#, no-c-format
+msgid "Now we can have our <literal>EntityManager</literal> injected using:"
+msgstr ""
+"これで次を使用してインジェクトされる <literal>EntityManager</literal> ができ"
+"ます。"
+
+#. Tag: programlisting
+#: Persistence.xml:125
+#, no-c-format
+msgid "@In EntityManager bookingDatabase;"
+msgstr "@In EntityManager bookingDatabase;"
+
+#. Tag: title
+#: Persistence.xml:129
+#, no-c-format
+msgid "Using a Seam-managed Hibernate session"
+msgstr "Seam 管理の Hibernate セッションを使用する"
+
+#. Tag: para
+#: Persistence.xml:130
+#, no-c-format
+msgid ""
+"Seam-managed Hibernate sessions are similar. In <literal>components.xml</"
+"literal>:"
+msgstr ""
+"Seam 管理 Hibernate セッションも同様に<literal>components.xml</literal> で次"
+"のように記述することができます。"
+
+#. Tag: programlisting
+#: Persistence.xml:133
+#, no-c-format
+msgid ""
+"&lt;core:hibernate-session-factory name=\"hibernateSessionFactory\"/&gt;\n"
+"\n"
+"&lt;core:managed-hibernate-session name=\"bookingDatabase\" \n"
+"                         auto-create=\"true\"\n"
+"           session-factory-jndi-name=\"java:/bookingSessionFactory\"/&gt;"
+msgstr ""
+"&lt;core:hibernate-session-factory name=\"hibernateSessionFactory\"/&gt;\n"
+"\n"
+"&lt;core:managed-hibernate-session name=\"bookingDatabase\" \n"
+"                         auto-create=\"true\"\n"
+"           session-factory-jndi-name=\"java:/bookingSessionFactory\"/&gt;"
+
+#. Tag: para
+#: Persistence.xml:134
+#, no-c-format
+msgid ""
+"Where <literal>java:/bookingSessionFactory</literal> is the name of the "
+"session factory specified in <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+"<literal>java:/bookingSessionFactory</literal> は <literal>hibernate.cfg."
+"xml</literal> で指定されるセッションファクトリ名にします。"
+
+#. Tag: programlisting
+#: Persistence.xml:137
+#, no-c-format
+msgid ""
+"&lt;session-factory name=\"java:/bookingSessionFactory\"&gt;\n"
+"    &lt;property name=\"transaction.flush_before_completion\"&gt;true&lt;/"
+"property&gt;\n"
+"    &lt;property name=\"connection.release_mode\"&gt;after_statement&lt;/"
+"property&gt;\n"
+"    &lt;property name=\"transaction.manager_lookup_class\"&gt;\n"
+"       org.hibernate.transaction.JBossTransactionManagerLookup\n"
+"    &lt;/property&gt;\n"
+"    &lt;property name=\"transaction.factory_class\"&gt;\n"
+"       org.hibernate.transaction.JTATransactionFactory\n"
+"    &lt;/property&gt;\n"
+"    &lt;property name=\"connection.datasource\"&gt;java:/"
+"bookingDatasource&lt;/property&gt;\n"
+"    ...\n"
+"&lt;/session-factory&gt;"
+msgstr ""
+"&lt;session-factory name=\"java:/bookingSessionFactory\"&gt;\n"
+"    &lt;property name=\"transaction.flush_before_completion\"&gt;true&lt;/"
+"property&gt;\n"
+"    &lt;property name=\"connection.release_mode\"&gt;after_statement&lt;/"
+"property&gt;\n"
+"    &lt;property name=\"transaction.manager_lookup_class\"&gt;\n"
+"       org.hibernate.transaction.JBossTransactionManagerLookup\n"
+"    &lt;/property&gt;\n"
+"    &lt;property name=\"transaction.factory_class\"&gt;\n"
+"       org.hibernate.transaction.JTATransactionFactory\n"
+"    &lt;/property&gt;\n"
+"    &lt;property name=\"connection.datasource\"&gt;java:/"
+"bookingDatasource&lt;/property&gt;\n"
+"    ...\n"
+"&lt;/session-factory&gt;"
+
+#. Tag: para
+#: Persistence.xml:138
+#, no-c-format
+msgid ""
+"Note that Seam does not flush the session, so you should always enable "
+"<literal>hibernate.transaction.flush_before_completion</literal> to ensure "
+"that the session is automatically flushed before the JTA transaction commits."
+msgstr ""
+"Seam はセッションをフラッシュしないので、 <literal>hibernate.transaction."
+"flush_before_completion</literal> を常に有効にしてセッションが JTA トランザク"
+"ションのコミットより先に自動的にフラッシュされるようにしなければならないので"
+"注意してください。"
+
+#. Tag: para
+#: Persistence.xml:141
+#, no-c-format
+msgid ""
+"We can now have a managed Hibernate <literal>Session</literal> injected into "
+"our JavaBean components using the following code:"
+msgstr ""
+"これで、 次のコードを使って JavaBean コンポーネントにインジェクトされる管理 "
+"Hibernate <literal>Session</literal> ができます。"
+
+#. Tag: programlisting
+#: Persistence.xml:144
+#, no-c-format
+msgid "@In Session bookingDatabase;"
+msgstr "@In Session bookingDatabase;"
+
+#. Tag: title
+#: Persistence.xml:148
+#, no-c-format
+msgid "Seam-managed persistence contexts and atomic conversations"
+msgstr "Seam 管理の永続コンテキストと微小な対話"
+
+#. Tag: para
+#: Persistence.xml:149
+#, no-c-format
+msgid ""
+"Persistence contexts scoped to the conversation allows you to program "
+"optimistic transactions that span multiple requests to the server without "
+"the need to use the <literal>merge()</literal> operation , without the need "
+"to re-load data at the beginning of each request, and without the need to "
+"wrestle with the <literal>LazyInitializationException</literal> or "
+"<literal>NonUniqueObjectException</literal>."
+msgstr ""
+"<literal>merge()</literal> 演算を使用したり、 各リクエストの冒頭でデータを再"
+"ロードしたり、 <literal>LazyInitializationException</literal> や "
+"<literal>NonUniqueObjectException</literal> と格闘しなくとも、 対話にスコープ"
+"される永続コンテキストによりサーバーに対して複数のリクエストをスパンする楽観"
+"的なトランザクションをプログラムすることができるようになります。"
+
+#. Tag: para
+#: Persistence.xml:152
+#, no-c-format
+msgid ""
+"As with any optimistic transaction management, transaction isolation and "
+"consistency can be achieved via use of optimistic locking. Fortunately, both "
+"Hibernate and EJB 3.0 make it very easy to use optimistic locking, by "
+"providing the <literal>@Version</literal> annotation."
+msgstr ""
+"楽観的トランザクション管理では楽観的ロックでトランザクションの隔離と一貫性を"
+"実現できるので、 Hibernate と EJB 3.0 いずれも <literal>@Version</literal> ア"
+"ノテーションを提供することで楽観的ロックの使用を容易にしています。"
+
+#. Tag: para
+#: Persistence.xml:155
+#, no-c-format
+msgid ""
+"By default, the persistence context is flushed (synchronized with the "
+"database) at the end of each transaction. This is sometimes the desired "
+"behavior. But very often, we would prefer that all changes are held in "
+"memory and only written to the database when the conversation ends "
+"successfully. This allows for truly atomic conversations. As the result of a "
+"truly stupid and shortsighted decision by certain non-JBoss, non-Sun and non-"
+"Sybase members of the EJB 3.0 expert group, there is currently no simple, "
+"usable and portable way to implement atomic conversations using EJB 3.0 "
+"persistence. However, Hibernate provides this feature as a vendor extension "
+"to the <literal>FlushModeType</literal>s defined by the specification, and "
+"it is our expectation that other vendors will soon provide a similar "
+"extension."
+msgstr ""
+"デフォルトでは、 永続コンテキストは各トランザクションの終わりでフラッシュされ"
+"ます (データベースと同期される)。 これが目的の動作である場合もありますが、 す"
+"べての変更はメモリに保持され対話が正常に終了したときにのみデータベースに書き"
+"込まれる動作を期待することの方が多いでしょう。 これにより真に微小な対話を可能"
+"にします。 EJB 3.0 エキスパートグループの中の JBoss、 Sun、 Sybase 以外の特定"
+"のメンバーによって長期的な見通しを考慮に入れず短絡的な決定がなされてしまった"
+"ため、 EJB 3.0 永続を使用した微小な対話の実装を行うシンプルで使用に適したポー"
+"タブルな方法が現在ありません。 ただし、 Hibernate では仕様により定義される "
+"<literal>FlushModeType</literal> に対するベンダー拡張としてこの機能を提供して"
+"います。 また、 他のベンダーもじきに同様の拡張を提供するだろうことを期待して"
+"います。"
+
+#. Tag: para
+#: Persistence.xml:158
+#, no-c-format
+msgid ""
+"Seam lets you specify <literal>FlushModeType.MANUAL</literal> when beginning "
+"a conversation. Currently, this works only when Hibernate is the underlying "
+"persistence provider, but we plan to support other equivalent vendor "
+"extensions."
+msgstr ""
+"Seam では対話の開始時に <literal>FlushModeType.MANUAL</literal> を指定するこ"
+"とができます。 現在は Hibernate が永続を実現する構成要素である場合にのみ機能"
+"しますが、 他の同等ベンダーによる拡張もサポートする予定です。"
+
+#. Tag: programlisting
+#: Persistence.xml:161
+#, no-c-format
+msgid ""
+"@In EntityManager em; //a Seam-managed persistence context\n"
+"\n"
+"@Begin(flushMode=MANUAL)\n"
+"public void beginClaimWizard() {\n"
+"    claim = em.find(Claim.class, claimId);\n"
+"}"
+msgstr ""
+"@In EntityManager em; //a Seam-managed persistence context\n"
+"\n"
+"@Begin(flushMode=MANUAL)\n"
+"public void beginClaimWizard() {\n"
+"    claim = em.find(Claim.class, claimId);\n"
+"}"
+
+#. Tag: para
+#: Persistence.xml:162
+#, no-c-format
+msgid ""
+"Now, the <literal>claim</literal> object remains managed by the persistence "
+"context for the rest ot the conversation. We can make changes to the claim:"
+msgstr ""
+"これで <literal>claim</literal> オブジェクトは残りの対話の永続コンテキストに"
+"よる管理を維持します。 このクレームに変更を加えることができます。"
+
+#. Tag: programlisting
+#: Persistence.xml:165
+#, no-c-format
+msgid ""
+"public void addPartyToClaim() {\n"
+"    Party party = ....;\n"
+"    claim.addParty(party);\n"
+"}"
+msgstr ""
+"public void addPartyToClaim() {\n"
+"    Party party = ....;\n"
+"    claim.addParty(party);\n"
+"}"
+
+#. Tag: para
+#: Persistence.xml:166
+#, no-c-format
+msgid ""
+"But these changes will not be flushed to the database until we explicitly "
+"force the flush to occur:"
+msgstr ""
+"ただし、 これらの変更は明示的にフラッシュが発生するよう強制するまではデータ"
+"ベースに対してフラッシュされません。"
+
+#. Tag: programlisting
+#: Persistence.xml:169
+#, no-c-format
+msgid ""
+"@End\n"
+"public void commitClaim() {\n"
+"    em.flush();\n"
+"}"
+msgstr ""
+"@End\n"
+"public void commitClaim() {\n"
+"    em.flush();\n"
+"}"
+
+#. Tag: title
+#: Persistence.xml:175
+#, no-c-format
+msgid "Using the JPA \"delegate\""
+msgstr "JPA 「デリゲート」を使用する"
+
+#. Tag: para
+#: Persistence.xml:176
+#, no-c-format
+msgid ""
+"The <literal>EntityManager</literal> interface lets you access a vendor-"
+"specific API via the <literal>getDelegate()</literal> method. Naturally, the "
+"most interesting vendor is Hibernate, and the most powerful delegate "
+"interface is <literal>org.hibernate.Session</literal>. You&#39;d be nuts to "
+"use anything else. Trust me, I&#39;m not biased at all."
+msgstr ""
+"<literal>EntityManager</literal> インターフェースにより <literal>getDelegate"
+"()</literal> メソッドを介してベンダー固有の API にアクセスすることができま"
+"す。 必然的に、 Hibernate が最も関心の高いベンダーとなり、 <literal>org."
+"hibernate.Session</literal> が最も強力となるデリゲートインターフェースになり"
+"ます。 これ以外を使用するのがばかばかしくなるほどです。 偏見無しによいので試"
+"してみてください。"
+
+#. Tag: para
+#: Persistence.xml:179
+#, no-c-format
+msgid ""
+"But regardless of whether you&#39;re using Hibernate (genius!) or something "
+"else (masochist, or just not very bright), you&#39;ll almost certainly want "
+"to use the delegate in your Seam components from time to time. One approach "
+"would be the following:"
+msgstr ""
+"ただし、 Hibernate またはそれ以外のものいずれを使用するかに限らず、 いずれは "
+"Seam コンポーネントでデリゲートを使用したくなる場合がくるでしょう。 以下にそ"
+"の一例を示します。"
+
+#. Tag: programlisting
+#: Persistence.xml:182
+#, no-c-format
+msgid ""
+"@In EntityManager entityManager;\n"
+"\n"
+"@Create\n"
+"public void init() {\n"
+"    ( (Session) entityManager.getDelegate() ).enableFilter(\"currentVersions"
+"\");\n"
+"}"
+msgstr ""
+"@In EntityManager entityManager;\n"
+"\n"
+"@Create\n"
+"public void init() {\n"
+"    ( (Session) entityManager.getDelegate() ).enableFilter(\"currentVersions"
+"\");\n"
+"}"
+
+#. Tag: para
+#: Persistence.xml:183
+#, no-c-format
+msgid ""
+"But typecasts are unquestionably the ugliest syntax in the Java language, so "
+"most people avoid them whenever possible. Here&#39;s a different way to get "
+"at the delegate. First, add the following line to <literal>components.xml</"
+"literal>:"
+msgstr ""
+"typecast は Java 言語の中でも間違いなく繁雑な構文になるため、 できる限り避け"
+"るのが一般的です。 デリゲートで取得する別の方法を次に示します。 まず、 以下の"
+"行を <literal>components.xml</literal> に追加します。"
+
+#. Tag: programlisting
+#: Persistence.xml:186
+#, no-c-format
+msgid ""
+"&lt;factory name=\"session\" \n"
+"         scope=\"STATELESS\" \n"
+"         auto-create=\"true\" \n"
+"         value=\"#{entityManager.delegate}\"/&gt;"
+msgstr ""
+"&lt;factory name=\"session\" \n"
+"         scope=\"STATELESS\" \n"
+"         auto-create=\"true\" \n"
+"         value=\"#{entityManager.delegate}\"/&gt;"
+
+#. Tag: para
+#: Persistence.xml:187
+#, no-c-format
+msgid "Now we can inject the session directly:"
+msgstr "これでセッションを直接インジェクトできるようになります。"
+
+#. Tag: programlisting
+#: Persistence.xml:190
+#, no-c-format
+msgid ""
+"@In Session session;\n"
+"\n"
+"@Create\n"
+"public void init() {\n"
+"    session.enableFilter(\"currentVersions\");\n"
+"}"
+msgstr ""
+"@In Session session;\n"
+"\n"
+"@Create\n"
+"public void init() {\n"
+"    session.enableFilter(\"currentVersions\");\n"
+"}"
+
+#. Tag: title
+#: Persistence.xml:194
+#, no-c-format
+msgid "Using EL in EJB-QL/HQL"
+msgstr "EJB-QL/HQL で EL を使用する方法"
+
+#. Tag: para
+#: Persistence.xml:195
+#, no-c-format
+msgid ""
+"Seam proxies the <literal>EntityManager</literal> or <literal>Session</"
+"literal> object whenever you use a Seam-managed persistence context or "
+"inject a container managed persistence context using "
+"<literal>@PersistenceContext</literal>. This lets you use EL expressions in "
+"your query strings, safely and efficiently. For example, this:"
+msgstr ""
+"Seam 管理の永続コンテキストを使用する場合や <literal>@PersistenceContext</"
+"literal> を使ってコンテナ管理の永続コンテキストをインジェクトする場合、 Seam "
+"は <literal>EntityManager</literal> または <literal>Session</literal> オブ"
+"ジェクトをプロキシします。 これにより、 EL 式をクエリ文字列内で安全且つ効果的"
+"に使用することができるようになります。 たとえば、 次を見てください。"
+
+#. Tag: programlisting
+#: Persistence.xml:198
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=#{user.username}\")\n"
+"         .getSingleResult();"
+msgstr ""
+"User user = em.createQuery(\"from User where username=#{user.username}\")\n"
+"         .getSingleResult();"
+
+#. Tag: para
+#: Persistence.xml:199
+#, no-c-format
+msgid "is equivalent to:"
+msgstr "上記の例は、 以下の例と同等になります。"
+
+#. Tag: programlisting
+#: Persistence.xml:202
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getSingleResult();"
+msgstr ""
+"User user = em.createQuery(\"from User where username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getSingleResult();"
+
+#. Tag: para
+#: Persistence.xml:203
+#, no-c-format
+msgid "Of course, you should never, ever write it like this:"
+msgstr "当然、 次のようには絶対に記述しないでください。"
+
+#. Tag: programlisting
+#: Persistence.xml:206
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=\" + user.getUsername"
+"()) //BAD!\n"
+"         .getSingleResult();"
+msgstr ""
+"User user = em.createQuery(\"from User where username=\" + user.getUsername"
+"()) //BAD!\n"
+"         .getSingleResult();"
+
+#. Tag: para
+#: Persistence.xml:207
+#, no-c-format
+msgid "(It is inefficient and vulnerable to SQL injection attacks.)"
+msgstr "(効率が悪く、 SQL インジェクション攻撃に対して脆弱となります。)"
+
+#. Tag: title
+#: Persistence.xml:213
+#, no-c-format
+msgid "Using Hibernate filters"
+msgstr "Hibernate フィルタを使用する"
+
+#. Tag: para
+#: Persistence.xml:214
+#, no-c-format
+msgid ""
+"The coolest, and most unique, feature of Hibernate is <emphasis>filters</"
+"emphasis>. Filters let you provide a restricted view of the data in the "
+"database. You can find out more about filters in the Hibernate "
+"documentation. But we thought we&#39;d mention an easy way to incorporate "
+"filters into a Seam application, one that works especially well with the "
+"Seam Application Framework."
+msgstr ""
+"Hibernate 固有の斬新な機能が <emphasis>filters</emphasis> になります。 フィル"
+"タによりデータベース内のデータ表示に制限を与えることができるようになります。 "
+"フィルタについては Hibernate のドキュメントで詳細に説明されています。 ここで"
+"は、 フィルタを Seam アプリケーションに統合する簡単な方法を記載しておくのがよ"
+"いだろうと思います。 特に Seam Application Framework でうまく動作する方法を説"
+"明します。"
+
+#. Tag: para
+#: Persistence.xml:217
+#, no-c-format
+msgid ""
+"Seam-managed persistence contexts may have a list of filters defined, which "
+"will be enabled whenever an <literal>EntityManager</literal> or Hibernate "
+"<literal>Session</literal> is first created. (Of course, they may only be "
+"used when Hibernate is the underlying persistence provider.)"
+msgstr ""
+"Seam 管理の永続コンテキストには、 <literal>EntityManager</literal> や "
+"Hibernate <literal>Session</literal> がはじめて作成されたときに有効にされるよ"
+"う定義されたフィルタの一覧がある場合があります。 (当然、 Hibernate が永続を実"
+"現する構成要素である場合にのみ使用できます。)"
+
+#. Tag: programlisting
+#: Persistence.xml:220
+#, no-c-format
+msgid ""
+"&lt;core:filter name=\"regionFilter\"&gt;\n"
+"    &lt;core:name&gt;region&lt;/core:name&gt;\n"
+"    &lt;core:parameters&gt;\n"
+"        &lt;key&gt;regionCode&lt;/key&gt;\n"
+"        &lt;value&gt;#{region.code}&lt;/value&gt;\n"
+"    &lt;/core:parameters&gt;\n"
+"&lt;/core:filter&gt;\n"
+"\n"
+"&lt;core:filter name=\"currentFilter\"&gt;\n"
+"    &lt;core:name&gt;current&lt;/core:name&gt;\n"
+"    &lt;core:parameters&gt;\n"
+"        &lt;key&gt;date&lt;/key&gt;\n"
+"        &lt;value&gt;#{currentDate}&lt;/value&gt;\n"
+"    &lt;/core:parameters&gt;\n"
+"&lt;/core:filter&gt;\n"
+"\n"
+"&lt;core:managed-persistence-context name=\"personDatabase\"\n"
+"    persistence-unit-jndi-name=\"java:/EntityManagerFactories/personDatabase"
+"\"&gt;\n"
+"    &lt;core:filters&gt;\n"
+"        &lt;value&gt;#{regionFilter}&lt;/value&gt;\n"
+"        &lt;value&gt;#{currentFilter}&lt;/value&gt;\n"
+"    &lt;/core:filters&gt;\n"
+"&lt;/core:managed-persistence-context&gt;"
+msgstr ""
+"&lt;core:filter name=\"regionFilter\"&gt;\n"
+"    &lt;core:name&gt;region&lt;/core:name&gt;\n"
+"    &lt;core:parameters&gt;\n"
+"        &lt;key&gt;regionCode&lt;/key&gt;\n"
+"        &lt;value&gt;#{region.code}&lt;/value&gt;\n"
+"    &lt;/core:parameters&gt;\n"
+"&lt;/core:filter&gt;\n"
+"\n"
+"&lt;core:filter name=\"currentFilter\"&gt;\n"
+"    &lt;core:name&gt;current&lt;/core:name&gt;\n"
+"    &lt;core:parameters&gt;\n"
+"        &lt;key&gt;date&lt;/key&gt;\n"
+"        &lt;value&gt;#{currentDate}&lt;/value&gt;\n"
+"    &lt;/core:parameters&gt;\n"
+"&lt;/core:filter&gt;\n"
+"\n"
+"&lt;core:managed-persistence-context name=\"personDatabase\"\n"
+"    persistence-unit-jndi-name=\"java:/EntityManagerFactories/personDatabase"
+"\"&gt;\n"
+"    &lt;core:filters&gt;\n"
+"        &lt;value&gt;#{regionFilter}&lt;/value&gt;\n"
+"        &lt;value&gt;#{currentFilter}&lt;/value&gt;\n"
+"    &lt;/core:filters&gt;\n"
+"&lt;/core:managed-persistence-context&gt;"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Remoting.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Remoting.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Remoting.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1937 @@
+# translation of Remoting.po to Japanese
+# Noriko Mizumoto <noriko at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Remoting\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-30 01:52+0000\n"
+"PO-Revision-Date: 2007-10-31 12:04+1000\n"
+"Last-Translator: Noriko Mizumoto <noriko at redhat.com>\n"
+"Language-Team: Japanese <fedora-trans-ja at redhat.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Remoting.xml:6
+#, no-c-format
+msgid "Remoting"
+msgstr "リモーティング"
+
+#. Tag: para
+#: Remoting.xml:7
+#, no-c-format
+msgid ""
+"Seam provides a convenient method of remotely accessing components from a "
+"web page, using AJAX (Asynchronous Javascript and XML). The framework for "
+"this functionality is provided with almost no up-front development effort - "
+"your components only require simple annotating to become accessible via "
+"AJAX. This chapter describes the steps required to build an AJAX-enabled web "
+"page, then goes on to explain the features of the Seam Remoting framework in "
+"more detail."
+msgstr ""
+"Seam は、 Web ページから AJAX (Asynchronous Javascript and XML) を使用してコ"
+"ンポーネントにリモートアクセスする便利な方法を提供します。 この機能を実現する"
+"フレームワークでは、 開発時に労力がかからないようになっています - コンポーネ"
+"ントに必要なものは、 AJAX を通じてアクセス可能とするための単純なアノテーショ"
+"ンだけです。 この章では、 AJAX 可能な Web ページを作るために必要なステップに"
+"ついて述べ、 そしてSeam Remoting フレームワークの機能についても詳しく説明しま"
+"す。"
+
+#. Tag: title
+#: Remoting.xml:10 Remoting.xml:285
+#, no-c-format
+msgid "Configuration"
+msgstr "設定"
+
+#. Tag: para
+#: Remoting.xml:11
+#, no-c-format
+msgid ""
+"To use remoting, the Seam Resource servlet must first be configured in your "
+"<literal>web.xml</literal> file:"
+msgstr ""
+"リモーティングの機能を使用するには、まず<literal>web.xml</literal>ファイル内"
+"でSeam Resourceサーブレットを設定する必要があります。"
+
+#. Tag: programlisting
+#: Remoting.xml:14
+#, no-c-format
+msgid ""
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"  &lt;/servlet&gt;\n"
+"\n"
+"  &lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"  &lt;/servlet-mapping&gt;"
+msgstr ""
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"  &lt;/servlet&gt;\n"
+"\n"
+"  &lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"  &lt;/servlet-mapping&gt;"
+
+#. Tag: para
+#: Remoting.xml:15
+#, no-c-format
+msgid ""
+"The next step is to import the necessary Javascript into your web page. "
+"There are a minimum of two scripts that must be imported. The first one "
+"contains all the client-side framework code that enables remoting "
+"functionality:"
+msgstr ""
+"次のステップは、Webページに必要なJavaScriptをインポートすることです。インポー"
+"トすべきスクリプトが最低二つあります。最初の一つは、リモーティングの機能を有"
+"効にする、クライアントサイドフレームワークの全てのコードを含みます:"
+
+#. Tag: programlisting
+#: Remoting.xml:18
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/resource/"
+"remote.js\"&gt;&lt;/script&gt;"
+msgstr ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/resource/"
+"remote.js\"&gt;&lt;/script&gt;"
+
+#. Tag: para
+#: Remoting.xml:19
+#, no-c-format
+msgid ""
+"The second script contains the stubs and type definitions for the components "
+"you wish to call. It is generated dynamically based on the local interface "
+"of your components, and includes type definitions for all of the classes "
+"that can be used to call the remotable methods of the interface. The name of "
+"the script reflects the name of your component. For example, if you have a "
+"stateless session bean annotated with <literal>@Name(\"customerAction\")</"
+"literal>, then your script tag should look like this:"
+msgstr ""
+"二つ目のスクリプトは、 呼び出したいコンポーネントに対するスタブと型定義を含み"
+"ます。 それはコンポーネントのローカルインターフェースを基にして動的に生成さ"
+"れ、 インターフェースのリモートメソッドを呼び出すのに使用される全てのクラスに"
+"対する型定義を内包しています。 スクリプトの名前はコンポーネントの名前が反映さ"
+"れます。 例えば、 <literal>@Name(\"customerAction\")</literal> というアノテー"
+"ション付きのステートレスセッション Bean を持つなら、 スクリプトタグは以下のよ"
+"うになります。"
+
+#. Tag: programlisting
+#: Remoting.xml:22
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?customerAction\"&gt;\n"
+"    &lt;/script&gt;"
+msgstr ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?customerAction\"&gt;\n"
+"    &lt;/script&gt;"
+
+#. Tag: para
+#: Remoting.xml:23
+#, no-c-format
+msgid ""
+"If you wish to access more than one component from the same page, then "
+"include them all as parameters of your script tag:"
+msgstr ""
+"もし、同じページから一つ以上のコンポーネントにアクセスしたい場合は、スクリプ"
+"トタグのパラメータとしてそれらを全て含めます。"
+
+#. Tag: programlisting
+#: Remoting.xml:26
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" \n"
+"     src=\"seam/resource/remoting/interface.js?customerAction&amp;"
+"accountAction\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+"&lt;script type=\"text/javascript\" \n"
+"     src=\"seam/resource/remoting/interface.js?customerAction&amp;"
+"accountAction\"&gt;\n"
+"  &lt;/script&gt;"
+
+#. Tag: title
+#: Remoting.xml:27
+#, no-c-format
+msgid "The \"Seam\" object"
+msgstr "\"Seam\"オブジェクト"
+
+#. Tag: para
+#: Remoting.xml:28
+#, no-c-format
+msgid ""
+"Client-side interaction with your components is all performed via the "
+"<literal>Seam</literal> Javascript object. This object is defined in "
+"<literal>remote.js</literal>, and you&#39;ll be using it to make "
+"asynchronous calls against your component. It is split into two areas of "
+"functionality; <literal>Seam.Component</literal> contains methods for "
+"working with components and <literal>Seam.Remoting</literal> contains "
+"methods for executing remote requests. The easiest way to become familiar "
+"with this object is to start with a simple example."
+msgstr ""
+"コンポーネントとのクライアントサイドのインタラクションは、 すべて "
+"<literal>Seam</literal> Javascript オブジェクト経由で行われます。 このオブ"
+"ジェクトは <literal>remote.js</literal> に定義され、 コンポーネントに対する非"
+"同期呼び出しにそれを使用します。 それは、2 つの機能に区分されます。 コンポー"
+"ネントと連携するメソッドを含む <literal>Seam.Component</literal> そして、リ"
+"モートリクエストを実行するメソッドを含む <literal>Seam.Remoting</literal> で"
+"す。 このオブジェクトに精通する一番容易な方法は、 簡単なサンプルから始めるこ"
+"とです。"
+
+#. Tag: title
+#: Remoting.xml:31
+#, no-c-format
+msgid "A Hello World example"
+msgstr "Hello World サンプル"
+
+#. Tag: para
+#: Remoting.xml:32
+#, no-c-format
+msgid ""
+"Let&#39;s step through a simple example to see how the <literal>Seam</"
+"literal> object works. First of all, let&#39;s create a new Seam component "
+"called <literal>helloAction</literal>."
+msgstr ""
+"<literal>Seam</literal> オブジェクトがどのように動作するかを見るために、 簡単"
+"なサンプルを通じて一歩を踏み出してみましょう。 まず最初に、"
+"<literal>helloAction</literal> と呼ばれる新しい Seam コンポーネントを作成しま"
+"しょう。"
+
+#. Tag: programlisting
+#: Remoting.xml:35
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"  @Name(\"helloAction\")\n"
+"  public class HelloAction implements HelloLocal {\n"
+"    public String sayHello(String name) {\n"
+"      return \"Hello, \" + name;\n"
+"    }\n"
+"  }"
+msgstr ""
+"@Stateless\n"
+"  @Name(\"helloAction\")\n"
+"  public class HelloAction implements HelloLocal {\n"
+"    public String sayHello(String name) {\n"
+"      return \"Hello, \" + name;\n"
+"    }\n"
+"  }"
+
+#. Tag: para
+#: Remoting.xml:36
+#, no-c-format
+msgid ""
+"You also need to create a local interface for our new component - take "
+"special note of the <literal>@WebRemote</literal> annotation, as it&#39;s "
+"required to make our method accessible via remoting:"
+msgstr ""
+"新しいコンポーネントのために、ローカルインタフェースも生成する必要がありま"
+"す。 <literal>@WebRemote</literal> アノテーションに特に注意してください。 "
+"Remoting を通じてのメソッドへのアクセスを可能とするために必要です。"
+
+#. Tag: programlisting
+#: Remoting.xml:39
+#, no-c-format
+msgid ""
+"@Local\n"
+"  public interface HelloLocal {\n"
+"    @WebRemote\n"
+"    public String sayHello(String name);\n"
+"  }"
+msgstr ""
+"@Local\n"
+"  public interface HelloLocal {\n"
+"    @WebRemote\n"
+"    public String sayHello(String name);\n"
+"  }"
+
+#. Tag: para
+#: Remoting.xml:40
+#, no-c-format
+msgid ""
+"That&#39;s all the server-side code we need to write. Now for our web page - "
+"create a new page and import the following scripts:"
+msgstr ""
+"書く必要があるサーバサイドのコードはこれだけです。 それでは、WEB ページのため"
+"に - 新しいページを作成して、 以下のスクリプトをインポートしましょう。"
+
+#. Tag: programlisting
+#: Remoting.xml:43
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/resource/"
+"remote.js\"&gt;&lt;/script&gt;\n"
+"  &lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?helloAction\"&gt;&lt;/script&gt;"
+msgstr ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/resource/"
+"remote.js\"&gt;&lt;/script&gt;\n"
+"  &lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?helloAction\"&gt;&lt;/script&gt;"
+
+#. Tag: para
+#: Remoting.xml:44
+#, no-c-format
+msgid ""
+"To make this a fully interactive user experience, let&#39;s add a button to "
+"our page:"
+msgstr ""
+"完全にインタラクティブなユーザエクスペリエンスとするため"
+"に、ページにボタンを付けましょう。"
+
+#. Tag: programlisting
+#: Remoting.xml:47
+#, no-c-format
+msgid "&lt;button onclick=\"javascript:sayHello()\"&gt;Say Hello&lt;/button&gt;"
+msgstr "&lt;button onclick=\"javascript:sayHello()\"&gt;Say Hello&lt;/button&gt;"
+
+#. Tag: para
+#: Remoting.xml:48
+#, no-c-format
+msgid ""
+"We&#39;ll also need to add some more script to make our button actually do "
+"something when it&#39;s clicked:"
+msgstr ""
+"クリックされたとき、実際にボタンに何かを行わせるためには、もう少しスクリプト"
+"を追加する必要があります。"
+
+#. Tag: programlisting
+#: Remoting.xml:51
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\"&gt;\n"
+"    //&lt;![CDATA[\n"
+"\n"
+"    function sayHello() {\n"
+"      var name = prompt(\"What is your name?\");\n"
+"      Seam.Component.getInstance(\"helloAction\").sayHello(name, "
+"sayHelloCallback);\n"
+"    }\n"
+"\n"
+"    function sayHelloCallback(result) {\n"
+"      alert(result);\n"
+"    }\n"
+"\n"
+"    // ]]&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+"&lt;script type=\"text/javascript\"&gt;\n"
+"    //&lt;![CDATA[\n"
+"\n"
+"    function sayHello() {\n"
+"      var name = prompt(\"What is your name?\");\n"
+"      Seam.Component.getInstance(\"helloAction\").sayHello(name, "
+"sayHelloCallback);\n"
+"    }\n"
+"\n"
+"    function sayHelloCallback(result) {\n"
+"      alert(result);\n"
+"    }\n"
+"\n"
+"    // ]]&gt;\n"
+"  &lt;/script&gt;"
+
+#. Tag: para
+#: Remoting.xml:52
+#, no-c-format
+msgid ""
+"We&#39;re done! Deploy your application and browse to your page. Click the "
+"button, and enter a name when prompted. A message box will display the hello "
+"message confirming that the call was successful. If you want to save some "
+"time, you&#39;ll find the full source code for this Hello World example in "
+"Seam&#39;s <literal>/examples/remoting/helloworld</literal> directory."
+msgstr ""
+"作業完了です! アプリケーションをデプロイして、ページをブラウズしましょう。 ボ"
+"タンをクリックして、プロンプトが出たら名前を入力しましょう。 呼び出しの成功を"
+"確認するための hello メッセージが、メッセージボックスに表示されます。 少し時"
+"間を節約したいのであれば、 Seam の <literal>/examples/remoting/helloworld</"
+"literal> ディレクトリにこの Hello World サンプルのすべてのソースコードがあり"
+"ます。"
+
+#. Tag: para
+#: Remoting.xml:55
+#, no-c-format
+msgid ""
+"So what does the code of our script actually do? Let&#39;s break it down "
+"into smaller pieces. To start with, you can see from the Javascript code "
+"listing that we have implemented two methods - the first method is "
+"responsible for prompting the user for their name and then making a remote "
+"request. Take a look at the following line:"
+msgstr ""
+"ところで、このスクリプトのコードは何をするのでしょうか。 もっと細かく分解して"
+"みましょう。手始めに、2 つのメソッドを実装した Javascript コードから見ていき"
+"ましょう。 最初のメソッドはユーザに対して名前を入力するよう促し、リモートリク"
+"エストを行うという責務を持ちます。 以下の行から見てみましょう。"
+
+#. Tag: programlisting
+#: Remoting.xml:58
+#, no-c-format
+msgid "Seam.Component.getInstance(\"helloAction\").sayHello(name, sayHelloCallback);"
+msgstr "Seam.Component.getInstance(\"helloAction\").sayHello(name, sayHelloCallback);"
+
+#. Tag: para
+#: Remoting.xml:59
+#, no-c-format
+msgid ""
+"The first section of this line, <literal>Seam.Component.getInstance"
+"(\"helloAction\")</literal> returns a proxy, or \"stub\" for our "
+"<literal>helloAction</literal> component. We can invoke the methods of our "
+"component against this stub, which is exactly what happens with the "
+"remainder of the line: <literal>sayHello(name, sayHelloCallback);</literal>."
+msgstr ""
+"この行の最初の部分 <literal>Seam.Component.getInstance(\"helloAction\")</"
+"literal> は、 <literal>helloAction</literal> コンポーネントのプロキシ、あるい"
+"は\"スタブ\"を返します。 このスタブに対してコンポーネントのメソッド呼び出しが"
+"可能です。 それは、まさにこの行の残りの部分で発生します: <literal>sayHello"
+"(name, sayHelloCallback);</literal>"
+
+#. Tag: para
+#: Remoting.xml:62
+#, no-c-format
+msgid ""
+"What this line of code in its completeness does, is invoke the "
+"<literal>sayHello</literal> method of our component, passing in "
+"<literal>name</literal> as a parameter. The second parameter, "
+"<literal>sayHelloCallback</literal> isn&#39;t a parameter of our "
+"component&#39;s <literal>sayHello</literal> method, instead it tells the "
+"Seam Remoting framework that once it receives the response to our request, "
+"it should pass it to the <literal>sayHelloCallback</literal> Javascript "
+"method. This callback parameter is entirely optional, so feel free to leave "
+"it out if you&#39;re calling a method with a <literal>void</literal> return "
+"type or if you don&#39;t care about the result."
+msgstr ""
+"コード行全体で行っていることは、コンポーネントの<literal>sayHello</literal>メ"
+"ソッドの呼び出しと、 パラメータとして<literal>name</literal>を渡すことです。 "
+"2 番目のパラメータ<literal>sayHelloCallback</literal>は、 このコンポーネント"
+"の <literal>sayHello</literal>メソッドのパラメータではありません。 その代わ"
+"り、Seam Remoting フレームワークにリクエストへのレスポンスを受けたら、 それ"
+"を <literal>sayHelloCallback</literal>メソッドに渡すべきことを指示します。 こ"
+"のコールバックパラメータは完全にオプションです。 返り値 void のメソッドを呼び"
+"出す場合、 あるいは結果を気にしない場合は、 遠慮なくそのままにしてください。"
+
+#. Tag: para
+#: Remoting.xml:65
+#, no-c-format
+msgid ""
+"The <literal>sayHelloCallback</literal> method, once receiving the response "
+"to our remote request then pops up an alert message displaying the result of "
+"our method call."
+msgstr ""
+"<literal>sayHelloCallback</literal>メソッドが、リモートリクエストに対するレス"
+"ポンスを受信した場合、 メソッド呼び出しの結果を表示するアラートメッセージが現"
+"れます。"
+
+#. Tag: title
+#: Remoting.xml:68
+#, no-c-format
+msgid "Seam.Component"
+msgstr "Seam.Component"
+
+#. Tag: para
+#: Remoting.xml:69
+#, no-c-format
+msgid ""
+"The <literal>Seam.Component</literal> Javascript object provides a number of "
+"client-side methods for working with your Seam components. The two main "
+"methods, <literal>newInstance()</literal> and <literal>getInstance()</"
+"literal> are documented in the following sections however their main "
+"difference is that <literal>newInstance()</literal> will always create a new "
+"instance of a component type, and <literal>getInstance()</literal> will "
+"return a singleton instance."
+msgstr ""
+"<literal>Seam.Component</literal> Javascript オブジェクトは、 Seam コンポーネ"
+"ントと連携する多くのクライアントメソッドを提供します。 主な 2 つのメソッド、"
+"<literal>newInstance()</literal>と <literal>getInstance()</literal>は、 以降"
+"の章にも記述されていますが、 これらの主な違いは、<literal>newInstance()</"
+"literal> は、いつもコンポーネントタイプの新しいインスタンスを生成し、そして、"
+"<literal>getInstance()</literal>は、シングルトンのインスタンスを返すことで"
+"す。"
+
+#. Tag: title
+#: Remoting.xml:72
+#, no-c-format
+msgid "Seam.Component.newInstance()"
+msgstr "Seam.Component.newInstance()"
+
+#. Tag: para
+#: Remoting.xml:73
+#, no-c-format
+msgid ""
+"Use this method to create a new instance of an entity or Javabean component. "
+"The object returned by this method will have the same getter/setter methods "
+"as its server-side counterpart, or alternatively if you wish you can access "
+"its fields directly. Take the following Seam entity component for example:"
+msgstr ""
+"新しいエンティティ、あるいは、JavaBean コンポーネントインスタンスを生成するた"
+"めにこのメソッドを使用します。 このメソッドにより返されるオブジェクトは、 "
+"サーバサイドの対応するものと同じ getter/setter メソッドを持つか、 あるいは、"
+"代替として、お望みならば、そのフィールドに直接アクセスが可能です。 例として、"
+"以下の Seam エンティティ コンポーネントをご覧ください。"
+
+#. Tag: programlisting
+#: Remoting.xml:76
+#, no-c-format
+msgid ""
+"@Name(\"customer\")\n"
+"  @Entity\n"
+"  public class Customer implements Serializable\n"
+"  {\n"
+"    private Integer customerId;\n"
+"    private String firstName;\n"
+"    private String lastName;\n"
+"    \n"
+"    @Column public Integer getCustomerId() { \n"
+"      return customerId; \n"
+"    }\n"
+"    \n"
+"    public void setCustomerId(Integer customerId} { \n"
+"      this.customerId = customerId; \n"
+"    }\n"
+"    \n"
+"    @Column public String getFirstName() { \n"
+"      return firstName; \n"
+"    }\n"
+"    \n"
+"    public void setFirstName(String firstName) {\n"
+"      this.firstName = firstName; \n"
+"    }\n"
+"    \n"
+"    @Column public String getLastName() {\n"
+"      return lastName;\n"
+"    }\n"
+"    \n"
+"    public void setLastName(String lastName) {\n"
+"      this.lastName = lastName;\n"
+"    }\n"
+"  }"
+msgstr ""
+"@Name(\"customer\")\n"
+"  @Entity\n"
+"  public class Customer implements Serializable\n"
+"  {\n"
+"    private Integer customerId;\n"
+"    private String firstName;\n"
+"    private String lastName;\n"
+"    \n"
+"    @Column public Integer getCustomerId() { \n"
+"      return customerId; \n"
+"    }\n"
+"    \n"
+"    public void setCustomerId(Integer customerId} { \n"
+"      this.customerId = customerId; \n"
+"    }\n"
+"    \n"
+"    @Column public String getFirstName() { \n"
+"      return firstName; \n"
+"    }\n"
+"    \n"
+"    public void setFirstName(String firstName) {\n"
+"      this.firstName = firstName; \n"
+"    }\n"
+"    \n"
+"    @Column public String getLastName() {\n"
+"      return lastName;\n"
+"    }\n"
+"    \n"
+"    public void setLastName(String lastName) {\n"
+"      this.lastName = lastName;\n"
+"    }\n"
+"  }"
+
+#. Tag: para
+#: Remoting.xml:77
+#, no-c-format
+msgid "To create a client-side Customer you would write the following code:"
+msgstr "クライアントサイド Customer を生成するために、以下のコードを記述します。"
+
+#. Tag: programlisting
+#: Remoting.xml:80
+#, no-c-format
+msgid "var customer = Seam.Component.newInstance(\"customer\");"
+msgstr "var customer = Seam.Component.newInstance(\"customer\");"
+
+#. Tag: para
+#: Remoting.xml:81
+#, no-c-format
+msgid "Then from here you can set the fields of the customer object:"
+msgstr "そして、ここからは customer オブジェクトのフィールドの設定が可能です。"
+
+#. Tag: programlisting
+#: Remoting.xml:84
+#, no-c-format
+msgid ""
+"customer.setFirstName(\"John\");\n"
+"  // Or you can set the fields directly\n"
+"  customer.lastName = \"Smith\";"
+msgstr ""
+"customer.setFirstName(\"John\");\n"
+"  // Or you can set the fields directly\n"
+"  customer.lastName = \"Smith\";"
+
+#. Tag: title
+#: Remoting.xml:85
+#, no-c-format
+msgid "Seam.Component.getInstance()"
+msgstr "Seam.Component.getInstance()"
+
+#. Tag: para
+#: Remoting.xml:86
+#, no-c-format
+msgid ""
+"The <literal>getInstance()</literal> method is used to get a reference to a "
+"Seam session bean component stub, which can then be used to remotely execute "
+"methods against your component. This method returns a singleton for the "
+"specified component, so calling it twice in a row with the same component "
+"name will return the same instance of the component."
+msgstr ""
+"<literal>getInstance()</literal>メソッドは、 Seam セッション Bean コンポーネ"
+"ントの、スタブへの参照を取得するために使用されます。 それは、コンポーネントに"
+"対してリモートのメソッド実行に使用可能です。 このメソッドは、特定のコンポーネ"
+"ントのシングルトンを返します。 その結果、続けて同じコンポーネント名で 2 回呼"
+"び出すと、同じコンポーネントインスタンスが返されます。"
+
+#. Tag: para
+#: Remoting.xml:89
+#, no-c-format
+msgid ""
+"To continue our example from before, if we have created a new "
+"<literal>customer</literal> and we now wish to save it, we would pass it to "
+"the <literal>saveCustomer()</literal> method of our <literal>customerAction</"
+"literal> component:"
+msgstr ""
+"前記のサンプルから続けて、 新しい<literal>customer</literal>を生成、保存しよ"
+"うとする場合、<literal>customerAction</literal>コンポーネントの"
+"<literal>saveCustomer()</literal>メソッドにそれを渡します。"
+
+#. Tag: programlisting
+#: Remoting.xml:92
+#, no-c-format
+msgid "Seam.Component.getInstance(\"customerAction\").saveCustomer(customer);"
+msgstr "Seam.Component.getInstance(\"customerAction\").saveCustomer(customer);"
+
+#. Tag: title
+#: Remoting.xml:93
+#, no-c-format
+msgid "Seam.Component.getComponentName()"
+msgstr "Seam.Component.getComponentName()"
+
+#. Tag: para
+#: Remoting.xml:94
+#, no-c-format
+msgid ""
+"Passing an object into this method will return its component name if it is a "
+"component, or <literal>null</literal> if it is not."
+msgstr ""
+"それがコンポーネントの場合、 オブジェクトをこのメソッドに渡すとコンポーネント"
+"名を返します。 また、コンポーネントでない場合、null を返します。"
+
+#. Tag: programlisting
+#: Remoting.xml:97
+#, no-c-format
+msgid ""
+"if (Seam.Component.getComponentName(instance) == \"customer\")\n"
+"    alert(\"Customer\");\n"
+"  else if (Seam.Component.getComponentName(instance) == \"staff\")\n"
+"    alert(\"Staff member\");"
+msgstr ""
+"if (Seam.Component.getComponentName(instance) == \"customer\")\n"
+"    alert(\"Customer\");\n"
+"  else if (Seam.Component.getComponentName(instance) == \"staff\")\n"
+"    alert(\"Staff member\");"
+
+#. Tag: title
+#: Remoting.xml:98
+#, no-c-format
+msgid "Seam.Remoting"
+msgstr "Seam.Remoting"
+
+#. Tag: para
+#: Remoting.xml:99
+#, no-c-format
+msgid ""
+"Most of the client side functionality for Seam Remoting is contained within "
+"the <literal>Seam.Remoting</literal> object. While you shouldn&#39;t need to "
+"directly call most of its methods, there are a couple of important ones "
+"worth mentioning."
+msgstr ""
+"Seam Remoting の大部分のクライアントサイドの機能は、<literal>Seam.Remoting</"
+"literal>オブジェクトに含まれます。 メソッドを直接呼ぶ必要はほとんどないとはい"
+"え、 言及する価値のある重要なものがあります。"
+
+#. Tag: title
+#: Remoting.xml:102
+#, no-c-format
+msgid "Seam.Remoting.createType()"
+msgstr "Seam.Remoting.createType()"
+
+#. Tag: para
+#: Remoting.xml:103
+#, no-c-format
+msgid ""
+"If your application contains or uses Javabean classes that aren&#39;t Seam "
+"components, you may need to create these types on the client side to pass as "
+"parameters into your component method. Use the <literal>createType()</"
+"literal> method to create an instance of your type. Pass in the fully "
+"qualified Java class name as a parameter:"
+msgstr ""
+"アプリケーションが Seam コンポーネントではない JavaBean を含むか、あるいは、"
+"使う場合、 パラメータをコンポーネントメソッドに渡すために、クライアントサイド"
+"でこれらのタイプを作成する必要があるかもしれません。 必要なタイプのインスタン"
+"スを作成するために、<literal>createType()</literal>メソッドを使用してくださ"
+"い。 パラメータとして、完全修飾の Java クラスを渡してください。"
+
+#. Tag: programlisting
+#: Remoting.xml:106
+#, no-c-format
+msgid "var widget = Seam.Remoting.createType(\"com.acme.widgets.MyWidget\");"
+msgstr "var widget = Seam.Remoting.createType(\"com.acme.widgets.MyWidget\");"
+
+#. Tag: title
+#: Remoting.xml:107
+#, no-c-format
+msgid "Seam.Remoting.getTypeName()"
+msgstr "Seam.Remoting.getTypeName()"
+
+#. Tag: para
+#: Remoting.xml:108
+#, no-c-format
+msgid ""
+"This method is the equivalent of <literal>Seam.Component.getComponentName()</"
+"literal> but for non-component types. It will return the name of the type "
+"for an object instance, or <literal>null</literal> if the type is not known. "
+"The name is the fully qualified name of the type&#39;s Java class."
+msgstr ""
+"このメソッドは、コンポーネントでない型用であることを別にすれば、Seam."
+"Component.getComponentName()と等価です。 オブジェクトインスタンスにタイプの"
+"名前を返します。 また、タイプが既知でない場合、null を返します。 この名前は、"
+"タイプの Java クラス完全修飾名です。"
+
+#. Tag: title
+#: Remoting.xml:111
+#, no-c-format
+msgid "Client Interfaces"
+msgstr "クライアント インターフェース"
+
+#. Tag: para
+#: Remoting.xml:112
+#, no-c-format
+msgid ""
+"In the configuration section above, the interface, or \"stub\" for our "
+"component is imported into our page via <literal>seam/resource/remoting/"
+"interface.js</literal>:"
+msgstr ""
+"上記、設定の章では、 インタフェース、あるいは、コンポーネントのための \"スタ"
+"ブ\" は、<literal>seam/remoting/interface.js</literal>を通じてページにイン"
+"ポートされます。"
+
+#. Tag: programlisting
+#: Remoting.xml:115
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?customerAction\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?customerAction\"&gt;\n"
+"  &lt;/script&gt;"
+
+#. Tag: para
+#: Remoting.xml:116
+#, no-c-format
+msgid ""
+"By including this script in our page, the interface definitions for our "
+"component, plus any other components or types that are required to execute "
+"the methods of our component are generated and made available for the "
+"remoting framework to use."
+msgstr ""
+"ページにこのスクリプトをインクルードすることにより、 コンポーネントのためのイ"
+"ンタフェース定義に加えて、コンポーネントのメソッドを実行するために必要なその"
+"他のコンポーネントとタイプが生成され、リモーティングフレームワークで使用可能"
+"になります。"
+
+#. Tag: para
+#: Remoting.xml:119
+#, no-c-format
+msgid ""
+"There are two types of client stub that can be generated, \"executable\" "
+"stubs and \"type\" stubs. Executable stubs are behavioural, and are used to "
+"execute methods against your session bean components, while type stubs "
+"contain state and represent the types that can be passed in as parameters or "
+"returned as a result."
+msgstr ""
+"生成されうるクライアントスタブには、二つのタイプがあります。\"実行可能\" スタ"
+"ブ、そして、\"タイプ\" スタブです。 実行可能スタブは、振る舞いを持ち、セッ"
+"ション Bean コンポーネントに対するメソッドを実行するために使用されます。 一"
+"方、タイプスタブは、状態を保持し、パラメータあるいは結果として返り値として送"
+"付可能なタイプを表します。"
+
+#. Tag: para
+#: Remoting.xml:122
+#, no-c-format
+msgid ""
+"The type of client stub that is generated depends on the type of your Seam "
+"component. If the component is a session bean, then an executable stub will "
+"be generated, otherwise if it&#39;s an entity or JavaBean, then a type stub "
+"will be generated. There is one exception to this rule; if your component is "
+"a JavaBean (ie it is not a session bean nor an entity bean) and any of its "
+"methods are annotated with @WebRemote, then an executable stub will be "
+"generated for it instead of a type stub. This allows you to use remoting to "
+"call methods of your JavaBean components in a non-EJB environment where you "
+"don&#39;t have access to session beans."
+msgstr ""
+"生成されたクライアントスタブのタイプは、Seamコンポーネントのタイプに依存しま"
+"す。コンポーネントがセッション Bean の場合は実行可能スタブが生成され、 それ以"
+"外のエンティティ、またはJavaBeanの場合にはタイプスタブが生成されます。 この規"
+"則には 1 つの例外があります。 コンポーネントが JavaBean (つまり、セッション "
+"Bean や エンティティ Bean でない場合) で、かつそのメソッドに@WebRemote アノ"
+"テーションが付けられていた場合は、タイプスタブの代わりに実行可能スタブが生成"
+"されます。 これは、セッション Bean にアクセスできない非EJB 環境で、JavaBean "
+"コンポーネントのメソッドを呼び出す Remoting を使用可能にします。"
+
+#. Tag: title
+#: Remoting.xml:125
+#, no-c-format
+msgid "The Context"
+msgstr "コンテキスト"
+
+#. Tag: para
+#: Remoting.xml:126
+#, no-c-format
+msgid ""
+"The Seam Remoting Context contains additional information which is sent and "
+"received as part of a remoting request/response cycle. At this stage it only "
+"contains the conversation ID but may be expanded in the future."
+msgstr ""
+"Seam リモートコンテキストは、 リモーティングのリクエスト / レスポンスサイクル"
+"の一部として送受信される追加情報を含んでいます。 現段階では対話 ID だけしか含"
+"んでいませんが、将来拡張される可能性があります。"
+
+#. Tag: title
+#: Remoting.xml:129
+#, no-c-format
+msgid "Setting and reading the Conversation ID"
+msgstr "対話 ID の設定と読み込み"
+
+#. Tag: para
+#: Remoting.xml:130
+#, no-c-format
+msgid ""
+"If you intend on using remote calls within the scope of a conversation then "
+"you need to be able to read or set the conversation ID in the Seam Remoting "
+"Context. To read the conversation ID after making a remote request call "
+"<literal>Seam.Remoting.getContext().getConversationId()</literal>. To set "
+"the conversation ID before making a request, call <literal>Seam.Remoting."
+"getContext().setConversationId()</literal>."
+msgstr ""
+"対話スコープでリモート呼び出しをしようとする場合、 Seam Remotingコンテキスト"
+"内にある対話ID の読み込みと設定が行える必要があります。リモートリクエストの後"
+"に対話 ID を読み込むためには、<literal>Seam.Remoting.getContext()."
+"getConversationId()</literal>を呼び出します。 リクエストの前に対話ID を設定す"
+"るためには、<literal>Seam.Remoting.getContext().setConversationId()</literal>"
+"を呼び出します。"
+
+#. Tag: para
+#: Remoting.xml:133
+#, no-c-format
+msgid ""
+"If the conversation ID hasn&#39;t been explicitly set with <literal>Seam."
+"Remoting.getContext().setConversationId()</literal>, then it will be "
+"automatically assigned the first valid conversation ID that is returned by "
+"any remoting call. If you are working with multiple conversations within "
+"your page, then you may need to explicitly set the conversation ID before "
+"each call. If you are working with just a single conversation, then you "
+"don&#39;t need to do anything special."
+msgstr ""
+"対話ID が明示的に <literal>Seam.Remoting.getContext().setConversationId()"
+"</literal>で設定されない場合、 リモート呼び出しによって返される最初の有効な対"
+"話ID が自動的に割り当てられます。 ページ内で複数の対話ID を使用する場合は、そ"
+"れぞれの呼び出しの前に対話IDを明示的に設定する必要があるかもしれません。1つの"
+"対話だけを使用する場合は、 特別なことをする必要はありません。"
+
+#. Tag: title
+#: Remoting.xml:137
+#, no-c-format
+msgid "Batch Requests"
+msgstr "バッチリクエスト"
+
+#. Tag: para
+#: Remoting.xml:138
+#, no-c-format
+msgid ""
+"Seam Remoting allows multiple component calls to be executed within a single "
+"request. It is recommended that this feature is used wherever it is "
+"appropriate to reduce network traffic."
+msgstr ""
+"Seam リモーティングは、複数のコンポーネント呼び出しが 1 つのリクエスト内で実"
+"行されることを可能にします。 ネットワークトラフィックを減少することが適切であ"
+"れば、 どこでもこの特徴を使用することを推奨します。"
+
+#. Tag: para
+#: Remoting.xml:141
+#, no-c-format
+msgid ""
+"The method <literal>Seam.Remoting.startBatch()</literal> will start a new "
+"batch, and any component calls executed after starting a batch are queued, "
+"rather than being sent immediately. When all the desired component calls "
+"have been added to the batch, the <literal>Seam.Remoting.executeBatch()</"
+"literal> method will send a single request containing all of the queued "
+"calls to the server, where they will be executed in order. After the calls "
+"have been executed, a single response containining all return values will be "
+"returned to the client and the callback functions (if provided) triggered in "
+"the same order as execution."
+msgstr ""
+"<literal>Seam.Remoting.startBatch()</literal>メソッド は、 新たなバッチを起動"
+"します。 バッチ起動後に実行されたコンポーネント呼び出しは、 即座に送られるの"
+"ではなく、キューイングされます。 必要とされるすべてのコンポーネント呼び出しが"
+"バッチに追加されたとき、<literal>Seam.Remoting.executeBatch()</literal>メソッ"
+"ドは、 サーバにキューイングされた呼び出しすべてを含む 1 つのリクエストを送信"
+"するでしょう。 そして、そこで順番に実行されます。 呼び出しが実行された後、 す"
+"べての返り値を含む 1 つのレスポンスは、 クライアントに返され、コールバック機"
+"能が (もし、設定されていれば) 実行と同じ順番で起動されます。"
+
+#. Tag: para
+#: Remoting.xml:144
+#, no-c-format
+msgid ""
+"If you start a new batch via the <literal>startBatch()</literal> method but "
+"then decide you don&#39;t want to send it, the <literal>Seam.Remoting."
+"cancelBatch()</literal> method will discard any calls that were queued and "
+"exit the batch mode."
+msgstr ""
+"<literal>startBatch()</literal>メソッドを通して新たなバッチを起動したけれ"
+"ど、それを送りたくないと決めたなら、<literal>Seam.Remoting.cancelBatch()</"
+"literal>メソッドは、キューに溜まった全ての呼び出しを破棄して、バッチモードを"
+"終了します。"
+
+#. Tag: para
+#: Remoting.xml:147
+#, no-c-format
+msgid ""
+"To see an example of a batch being used, take a look at <literal>/examples/"
+"remoting/chatroom</literal>."
+msgstr ""
+"バッチが利用されているサンプルを見るには、<literal>/examples/remoting/"
+"chatroom</literal>を参照ください。"
+
+#. Tag: title
+#: Remoting.xml:150
+#, no-c-format
+msgid "Working with Data types"
+msgstr "データタイプの取り扱い"
+
+#. Tag: title
+#: Remoting.xml:151
+#, no-c-format
+msgid "Primitives / Basic Types"
+msgstr "プリミティブ型 / 基本タイプ"
+
+#. Tag: para
+#: Remoting.xml:152
+#, no-c-format
+msgid ""
+"This section describes the support for basic data types. On the server side "
+"these values are generally compatible with either their primitive type or "
+"their corresponding wrapper class."
+msgstr ""
+"この章は、基本データタイプのサポートについて述べています。 サーバサイドではこ"
+"れらの値は、一般的にプリミティブタイプ、あるいは、対応するラッパクラスと互換"
+"性があります。"
+
+#. Tag: title
+#: Remoting.xml:155
+#, no-c-format
+msgid "String"
+msgstr "String åž‹"
+
+#. Tag: para
+#: Remoting.xml:156
+#, no-c-format
+msgid "Simply use Javascript String objects when setting String parameter values."
+msgstr ""
+"String パラメータ値を設定する場合は、 単純に Javascript String オブジェクトを"
+"使用してください。"
+
+#. Tag: title
+#: Remoting.xml:159
+#, no-c-format
+msgid "Number"
+msgstr "Number åž‹"
+
+#. Tag: para
+#: Remoting.xml:160
+#, no-c-format
+msgid ""
+"There is support for all number types supported by Java. On the client side, "
+"number values are always serialized as their String representation and then "
+"on the server side they are converted to the correct destination type. "
+"Conversion into either a primitive or wrapper type is supported for "
+"<literal>Byte</literal>, <literal>Double</literal>, <literal>Float</"
+"literal>, <literal>Integer</literal>, <literal>Long</literal> and "
+"<literal>Short</literal> types."
+msgstr ""
+"Java でサポートされているすべての数値タイプはサポートされています。 クライア"
+"ントサイドでは、 数値は常に String 表現としてシリアライズされています。 そし"
+"て、サーバサイドでは、これらは、正しい目的のタイプに変換されます。 プリミティ"
+"ブ、または、ラッパタイプへの変換は、 Byte、Double、 Float、Integer、Long、 そ"
+"して、Short タイプをサポートします。"
+
+#. Tag: title
+#: Remoting.xml:163
+#, no-c-format
+msgid "Boolean"
+msgstr "Boolean åž‹"
+
+#. Tag: para
+#: Remoting.xml:164
+#, no-c-format
+msgid ""
+"Booleans are represented client side by Javascript Boolean values, and "
+"server side by a Java boolean."
+msgstr ""
+"Boolean は、クライアントサイドでは Javascriptの Boolean 値で表現され、サーバ"
+"サイドでは Java boolean で表現されます。"
+
+#. Tag: title
+#: Remoting.xml:167
+#, no-c-format
+msgid "JavaBeans"
+msgstr "JavaBeans"
+
+#. Tag: para
+#: Remoting.xml:168
+#, no-c-format
+msgid ""
+"In general these will be either Seam entity or JavaBean components, or some "
+"other non-component class. Use the appropriate method (either <literal>Seam."
+"Component.newInstance()</literal> for Seam components or <literal>Seam."
+"Remoting.createType()</literal> for everything else) to create a new "
+"instance of the object."
+msgstr ""
+"一般的に、これらは、Seam エンティティ、JavaBean コンポーネント、または、non-"
+"component クラスです。 オブジェクトの新しいインスタンスを生成するためには、適"
+"切なメソッドを使用してください。 Seam コンポーネントには<literal>Seam."
+"Component.newInstance()</literal>、 また、その他のものには<literal>Seam."
+"Remoting.createType()</literal>を使用してください。"
+
+#. Tag: para
+#: Remoting.xml:171
+#, no-c-format
+msgid ""
+"It is important to note that only objects that are created by either of "
+"these two methods should be used as parameter values, where the parameter is "
+"not one of the other valid types mentioned anywhere else in this section. In "
+"some situations you may have a component method where the exact parameter "
+"type cannot be determined, such as:"
+msgstr ""
+"パラメータが、このセクションの別の場所で記述されたその他の有効なタイプの 1 つ"
+"ではない場合、 これら 2 つのメソッドのどちらかによって生成されるオブジェクト"
+"だけがパラメータ値として使用されるべきであることに気づくことは重要です。 いく"
+"つかの状況では、 以下のように厳密にパラメータタイプを決定できないコンポーネン"
+"トメソッドがあるかもしれません。"
+
+#. Tag: programlisting
+#: Remoting.xml:174
+#, no-c-format
+msgid ""
+"@Name(\"myAction\")\n"
+"  public class MyAction implements MyActionLocal {\n"
+"    public void doSomethingWithObject(Object obj) {\n"
+"      // code\n"
+"    }\n"
+"  }"
+msgstr ""
+"@Name(\"myAction\")\n"
+"  public class MyAction implements MyActionLocal {\n"
+"    public void doSomethingWithObject(Object obj) {\n"
+"      // code\n"
+"    }\n"
+"  }"
+
+#. Tag: para
+#: Remoting.xml:175
+#, no-c-format
+msgid ""
+"In this case you might want to pass in an instance of your "
+"<literal>myWidget</literal> component, however the interface for "
+"<literal>myAction</literal> won&#39;t include <literal>myWidget</literal> as "
+"it is not directly referenced by any of its methods. To get around this, "
+"<literal>MyWidget</literal> needs to be explicitly imported:"
+msgstr ""
+"この場合、 <literal>myWidget</literal> コンポーネントのインスタンスを渡したい"
+"ところですが、 <literal>myAction</literal> のインターフェースはそのいずれのメ"
+"ソッドからも直接参照されないため <literal>myWidget</literal> を含みません。 "
+"これを回避するには、 <literal>MyWidget</literal> を明示的にインポートする必要"
+"があります。"
+
+#. Tag: programlisting
+#: Remoting.xml:178
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?myAction&amp;myWidget\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?myAction&amp;myWidget\"&gt;\n"
+"  &lt;/script&gt;"
+
+#. Tag: para
+#: Remoting.xml:179
+#, no-c-format
+msgid ""
+"This will then allow a <literal>myWidget</literal> object to be created with "
+"<literal>Seam.Component.newInstance(\"myWidget\")</literal>, which can then "
+"be passed to <literal>myAction.doSomethingWithObject()</literal>."
+msgstr ""
+"これにより <literal>myWidget</literal> オブジェクトが <literal>Seam."
+"Component.newInstance(\"myWidget\")</literal> で作成されるようになり、 これ"
+"が <literal>myAction.doSomethingWithObject()</literal> に渡されます。"
+
+#. Tag: title
+#: Remoting.xml:182
+#, no-c-format
+msgid "Dates and Times"
+msgstr "日付と時刻"
+
+#. Tag: para
+#: Remoting.xml:183
+#, no-c-format
+msgid ""
+"Date values are serialized into a String representation that is accurate to "
+"the millisecond. On the client side, use a Javascript Date object to work "
+"with date values. On the server side, use any <literal>java.util.Date</"
+"literal> (or descendent, such as <literal>java.sql.Date</literal> or "
+"<literal>java.sql.Timestamp</literal> class."
+msgstr ""
+"日付の値は、 ミリ秒単位まで正確な String 表示に連続化されます。 クライアント"
+"側では Javascript Date オブジェクトを使って日付値と動作させます。 サーバー側"
+"では <literal>java.util.Date</literal> を使用します (または <literal>java."
+"sql.Date</literal> や <literal>java.sql.Timestamp</literal> などの下位クラ"
+"ス)。"
+
+#. Tag: title
+#: Remoting.xml:186
+#, no-c-format
+msgid "Enums"
+msgstr "Enums"
+
+#. Tag: para
+#: Remoting.xml:187
+#, no-c-format
+msgid ""
+"On the client side, enums are treated the same as Strings. When setting the "
+"value for an enum parameter, simply use the String representation of the "
+"enum. Take the following component as an example:"
+msgstr ""
+"クライアント側では、 enums は Strings と同様に扱われます。 enums パラメータの"
+"値を設定する場合は単純に enum の String 表現を使います。 次のコンポーネントを"
+"例として参照してください。"
+
+#. Tag: programlisting
+#: Remoting.xml:190
+#, no-c-format
+msgid ""
+"@Name(\"paintAction\")\n"
+"  public class paintAction implements paintLocal {\n"
+"    public enum Color {red, green, blue, yellow, orange, purple};\n"
+"\n"
+"    public void paint(Color color) {\n"
+"      // code\n"
+"    }    \n"
+"  }"
+msgstr ""
+"@Name(\"paintAction\")\n"
+"  public class paintAction implements paintLocal {\n"
+"    public enum Color {red, green, blue, yellow, orange, purple};\n"
+"\n"
+"    public void paint(Color color) {\n"
+"      // code\n"
+"    }    \n"
+"  }"
+
+#. Tag: para
+#: Remoting.xml:191
+#, no-c-format
+msgid ""
+"To call the <literal>paint()</literal> method with the color <literal>red</"
+"literal>, pass the parameter value as a String literal:"
+msgstr ""
+"<literal>paint()</literal> メソッドを <literal>red</literal> の色を使って呼び"
+"出すには、 String のままでパラメータ値を渡します。"
+
+#. Tag: programlisting
+#: Remoting.xml:194
+#, no-c-format
+msgid "Seam.Component.getInstance(\"paintAction\").paint(\"red\");"
+msgstr "Seam.Component.getInstance(\"paintAction\").paint(\"red\");"
+
+#. Tag: para
+#: Remoting.xml:195
+#, no-c-format
+msgid ""
+"The inverse is also true - that is, if a component method returns an enum "
+"parameter (or contains an enum field anywhere in the returned object graph) "
+"then on the client-side it will be represented as a String."
+msgstr ""
+"逆も真になります。 つまり、 コンポーネントメソッドが enum パラメータを返す場"
+"合 (または返されるオブジェクトグラフのどこかに enum フィールドを含む場合)、 "
+"クライアント側では String として表示されます。"
+
+#. Tag: title
+#: Remoting.xml:198
+#, no-c-format
+msgid "Collections"
+msgstr "集合"
+
+#. Tag: title
+#: Remoting.xml:199
+#, no-c-format
+msgid "Bags"
+msgstr "Bag"
+
+#. Tag: para
+#: Remoting.xml:200
+#, no-c-format
+msgid ""
+"Bags cover all collection types including arrays, collections, lists, sets, "
+"(but excluding Maps - see the next section for those), and are implemented "
+"client-side as a Javascript array. When calling a component method that "
+"accepts one of these types as a parameter, your parameter should be a "
+"Javascript array. If a component method returns one of these types, then the "
+"return value will also be a Javascript array. The remoting framework is "
+"clever enough on the server side to convert the bag to an appropriate type "
+"for the component method call."
+msgstr ""
+"Bag はアレイ、 集合、 一覧、 セットなどすべての集合タイプを対象とし (ただし "
+"Map は除く、 これについては次のセクションを参照)、 Javascript アレイとしてク"
+"ライアント側で実装されます。 パラメータとしてこれらのタイプのいずれかを受け取"
+"るコンポーネントメソッドを呼び出す場合、 使用するパラメータは Javascript アレ"
+"イにします。 コンポーネントメソッドがこれらのタイプのいずれかを返す場合は、 "
+"返り値も Javascript アレイになります。 Remoting フレームワークは、 サーバー側"
+"で bag をコンポーネントメソッドコールに対して適切なタイプに変換することが可能"
+"です。"
+
+#. Tag: title
+#: Remoting.xml:203
+#, no-c-format
+msgid "Maps"
+msgstr "Map"
+
+#. Tag: para
+#: Remoting.xml:204
+#, no-c-format
+msgid ""
+"As there is no native support for Maps within Javascript, a simple Map "
+"implementation is provided with the Seam Remoting framework. To create a Map "
+"which can be used as a parameter to a remote call, create a new "
+"<literal>Seam.Remoting.Map</literal> object:"
+msgstr ""
+"Javascript 内では Map に対するネイティブのサポートはないため、 シンプルな "
+"Map 実装が Seam Remoting フレームワークで提供されます。 リモートコールに対す"
+"るパラメータとして使用できる Map を作成するには、 新たに <literal>Seam."
+"Remoting.Map</literal> オブジェクトを作成します。"
+
+#. Tag: programlisting
+#: Remoting.xml:207
+#, no-c-format
+msgid "var map = new Seam.Remoting.Map();"
+msgstr "var map = new Seam.Remoting.Map();"
+
+#. Tag: para
+#: Remoting.xml:208
+#, no-c-format
+msgid ""
+"This Javascript implementation provides basic methods for working with Maps: "
+"<literal>size()</literal>, <literal>isEmpty()</literal>, <literal>keySet()</"
+"literal>, <literal>values()</literal>, <literal>get(key)</literal>, "
+"<literal>put(key, value)</literal>, <literal>remove(key)</literal> and "
+"<literal>contains(key)</literal>. Each of these methods are equivalent to "
+"their Java counterpart. Where the method returns a collection, such as "
+"<literal>keySet()</literal> and <literal>values()</literal>, a Javascript "
+"Array object will be returned that contains the key or value objects "
+"(respectively)."
+msgstr ""
+"この Javascript 実装では Map と動作することを目的とした基本的なメソッド、 "
+"<literal>size()</literal>、 <literal>isEmpty()</literal>、 <literal>keySet()"
+"</literal>、 <literal>values()</literal>、 <literal>get(key)</literal>、 "
+"<literal>put(key, value)</literal>、 <literal>remove(key)</literal>、 "
+"<literal>contains(key)</literal> を提供します。 それぞれのメソッドは Java の"
+"それと同等になります。 メソッドが <literal>keySet()</literal> 及び "
+"<literal>values()</literal> などの 1 集合を返すと、 そのキーまたは値オブジェ"
+"クトを含む Javascript Array オブジェクトが返されます。"
+
+#. Tag: title
+#: Remoting.xml:211
+#, no-c-format
+msgid "Debugging"
+msgstr "デバッグ機能"
+
+#. Tag: para
+#: Remoting.xml:212
+#, no-c-format
+msgid ""
+"To aid in tracking down bugs, it is possible to enable a debug mode which "
+"will display the contents of all the packets send back and forth between the "
+"client and server in a popup window. To enable debug mode, either execute "
+"the <literal>setDebug()</literal> method in Javascript:"
+msgstr ""
+"バグの追跡を支援する目的で、 ポップアップウィンドウ内でクライアントとサーバー"
+"間を行ったり来たりするすべてのパケットの内容を表示するデバッグモードを有効に"
+"することができます。 デバッグモードを有効にするには、 次のいずれかを行いま"
+"す。 Javascript 内で <literal>setDebug()</literal> メソッドを実行する方法は次"
+"の通りです。"
+
+#. Tag: programlisting
+#: Remoting.xml:215
+#, no-c-format
+msgid "Seam.Remoting.setDebug(true);"
+msgstr "Seam.Remoting.setDebug(true);"
+
+#. Tag: para
+#: Remoting.xml:216
+#, no-c-format
+msgid "Or configure it via components.xml:"
+msgstr "components.xml を使って設定を行う方法は次のようになります。"
+
+#. Tag: programlisting
+#: Remoting.xml:219
+#, no-c-format
+msgid "&lt;remoting:remoting debug=\"true\"/&gt;"
+msgstr "&lt;remoting:remoting debug=\"true\"/&gt;"
+
+#. Tag: para
+#: Remoting.xml:220
+#, no-c-format
+msgid ""
+"To turn off debugging, call <literal>setDebug(false)</literal>. If you want "
+"to write your own messages to the debug log, call <literal>Seam.Remoting.log"
+"(message)</literal>."
+msgstr ""
+"デバッグ機能をオフにするには、 <literal>setDebug(false)</literal> を呼び出し"
+"ます。 毒のメッセージをデバッグログに書き込みたい場合は、 <literal>Seam."
+"Remoting.log(message)</literal> を呼び出します。"
+
+#. Tag: title
+#: Remoting.xml:223
+#, no-c-format
+msgid "The Loading Message"
+msgstr "メッセージをロードする"
+
+#. Tag: para
+#: Remoting.xml:224
+#, no-c-format
+msgid ""
+"The default loading message that appears in the top right corner of the "
+"screen can be modified, its rendering customised or even turned off "
+"completely."
+msgstr ""
+"画面の上部右端にデフォルトで表示されるローディングメッセージは、 変更、 レン"
+"ダリングのカスタマイズ、 完全にオフにするなどが可能です。"
+
+#. Tag: title
+#: Remoting.xml:227
+#, no-c-format
+msgid "Changing the message"
+msgstr "メッセージを変更する"
+
+#. Tag: para
+#: Remoting.xml:228
+#, no-c-format
+msgid ""
+"To change the message from the default \"Please Wait...\" to something "
+"different, set the value of <literal>Seam.Remoting.loadingMessage</literal>:"
+msgstr ""
+"デフォルトの \"Please Wait...\" というメッセージを別のメッセージに変更するに"
+"は、 <literal>Seam.Remoting.loadingMessage</literal> の値を設定します。"
+
+#. Tag: programlisting
+#: Remoting.xml:231
+#, no-c-format
+msgid "Seam.Remoting.loadingMessage = \"Loading...\";"
+msgstr "Seam.Remoting.loadingMessage = \"Loading...\";"
+
+#. Tag: title
+#: Remoting.xml:232
+#, no-c-format
+msgid "Hiding the loading message"
+msgstr "ローディングメッセージを隠す"
+
+#. Tag: para
+#: Remoting.xml:233
+#, no-c-format
+msgid ""
+"To completely suppress the display of the loading message, override the "
+"implementation of <literal>displayLoadingMessage()</literal> and "
+"<literal>hideLoadingMessage()</literal> with functions that instead do "
+"nothing:"
+msgstr ""
+"ローディングメッセージを完全に表示させないようにするには、 "
+"<literal>displayLoadingMessage()</literal> および <literal>hideLoadingMessage"
+"()</literal> を何も行わない機能で上書きします。"
+
+#. Tag: programlisting
+#: Remoting.xml:236
+#, no-c-format
+msgid ""
+"// don&#39;t display the loading indicator\n"
+"  Seam.Remoting.displayLoadingMessage = function() {};\n"
+"  Seam.Remoting.hideLoadingMessage = function() {};"
+msgstr ""
+"// don&#39;t display the loading indicator\n"
+"  Seam.Remoting.displayLoadingMessage = function() {};\n"
+"  Seam.Remoting.hideLoadingMessage = function() {};"
+
+#. Tag: title
+#: Remoting.xml:237
+#, no-c-format
+msgid "A Custom Loading Indicator"
+msgstr "カスタムのローディングインジケーター"
+
+#. Tag: para
+#: Remoting.xml:238
+#, no-c-format
+msgid ""
+"It is also possible to override the loading indicator to display an animated "
+"icon, or anything else that you want. To do this override the "
+"<literal>displayLoadingMessage()</literal> and <literal>hideLoadingMessage()"
+"</literal> messages with your own implementation:"
+msgstr ""
+"ローディングインジケーターを上書きしてアニメのアイコンの他、 好きなものを表示"
+"させることができます。 <literal>displayLoadingMessage()</literal> と "
+"<literal>hideLoadingMessage()</literal> の各メッセージを独自の実装で上書きし"
+"てこれを行います。"
+
+#. Tag: programlisting
+#: Remoting.xml:241
+#, no-c-format
+msgid ""
+"Seam.Remoting.displayLoadingMessage = function() {\n"
+"    // Write code here to display the indicator\n"
+"  };\n"
+"  \n"
+"  Seam.Remoting.hideLoadingMessage = function() {\n"
+"    // Write code here to hide the indicator\n"
+"  };"
+msgstr ""
+"Seam.Remoting.displayLoadingMessage = function() {\n"
+"    // Write code here to display the indicator\n"
+"  };\n"
+"  \n"
+"  Seam.Remoting.hideLoadingMessage = function() {\n"
+"    // Write code here to hide the indicator\n"
+"  };"
+
+#. Tag: title
+#: Remoting.xml:242
+#, no-c-format
+msgid "Controlling what data is returned"
+msgstr "返されるデータを制御する"
+
+#. Tag: para
+#: Remoting.xml:243
+#, no-c-format
+msgid ""
+"When a remote method is executed, the result is serialized into an XML "
+"response that is returned to the client. This response is then unmarshaled "
+"by the client into a Javascript object. For complex types (i.e. Javabeans) "
+"that include references to other objects, all of these referenced objects "
+"are also serialized as part of the response. These objects may reference "
+"other objects, which may reference other objects, and so forth. If left "
+"unchecked, this object \"graph\" could potentially be enormous, depending on "
+"what relationships exist between your objects. And as a side issue (besides "
+"the potential verbosity of the response), you might also wish to prevent "
+"sensitive information from being exposed to the client."
+msgstr ""
+"リモートメソッドが実行されると、 その結果はクライアントに返される XML レスポ"
+"ンスに連続化されます。 このレスポンスは次にクライアントにより Javascript オブ"
+"ジェクトにアンマーシャルされます。 他のオブジェクトへの参照を含む複雑なタイプ"
+"の場合 (Javabeans など)、 こした参照されるオブジェクトもすべてレスポンスの一"
+"部として連続化されます。 これらのオブジェクトは他のオブジェクトを参照すること"
+"ができ、 またこの他のオブジェクトはその他のオブジェクトを参照できるといった具"
+"合になります。 チェックしないままにしておくと、 このオブジェクト「グラフ」は"
+"オブジェクト間で存在する関係によっては非常に膨大なものになる可能性がありま"
+"す。 派生的な問題として (レスポンスが冗長となる問題とは別)、 クライアントに対"
+"して機密情報が公表されてしまうのを防ぎたい場合もあるかもしれません。"
+
+#. Tag: para
+#: Remoting.xml:246
+#, no-c-format
+msgid ""
+"Seam Remoting provides a simple means to \"constrain\" the object graph, by "
+"specifying the <literal>exclude</literal> field of the remote method&#39;s "
+"<literal>@WebRemote</literal> annotation. This field accepts a String array "
+"containing one or more paths specified using dot notation. When invoking a "
+"remote method, the objects in the result&#39;s object graph that match these "
+"paths are excluded from the serialized result packet."
+msgstr ""
+"Seam Remoting は、 リモートメソッドの <literal>@WebRemote</literal> アノテー"
+"ションの <literal>exclude</literal> フィールドを指定することでそのオブジェク"
+"トグラフを「制約する」シンプルな方法を提供しています。 このフィールドはドッ"
+"ト (「.」) 表記を使って指定されるパスまたは複数のパスを含む String アレイを受"
+"け取ります。 リモートメソッドを呼び出すと、 これらのパスと一致する結果となる"
+"オブジェクトグラフ内のオブジェクトが連続化される結果パケットから除外されま"
+"す。"
+
+#. Tag: para
+#: Remoting.xml:249
+#, no-c-format
+msgid ""
+"For all our examples, we&#39;ll use the following <literal>Widget</literal> "
+"class:"
+msgstr "すべての例で次の <literal>Widget</literal> クラスを使用します。"
+
+#. Tag: programlisting
+#: Remoting.xml:252
+#, no-c-format
+msgid ""
+"@Name(\"widget\")\n"
+"public class Widget\n"
+"{\n"
+"  private String value;\n"
+"  private String secret;\n"
+"  private Widget child;\n"
+"  private Map&lt;String,Widget&gt; widgetMap;\n"
+"  private List&lt;Widget&gt; widgetList;\n"
+"  \n"
+"  // getters and setters for all fields\n"
+"}"
+msgstr ""
+"@Name(\"widget\")\n"
+"public class Widget\n"
+"{\n"
+"  private String value;\n"
+"  private String secret;\n"
+"  private Widget child;\n"
+"  private Map&lt;String,Widget&gt; widgetMap;\n"
+"  private List&lt;Widget&gt; widgetList;\n"
+"  \n"
+"  // getters and setters for all fields\n"
+"}"
+
+#. Tag: title
+#: Remoting.xml:253
+#, no-c-format
+msgid "Constraining normal fields"
+msgstr "通常のフィールドを制約する"
+
+#. Tag: para
+#: Remoting.xml:254
+#, no-c-format
+msgid ""
+"If your remote method returns an instance of <literal>Widget</literal>, but "
+"you don&#39;t want to expose the <literal>secret</literal> field because it "
+"contains sensitive information, you would constrain it like this:"
+msgstr ""
+"リモートメソッドが <literal>Widget</literal> のインスタンスを返すけれど "
+"<literal>secret</literal> フィールドには機密情報が含まれているため公表したく"
+"ない場合、 次のように制約します。"
+
+#. Tag: programlisting
+#: Remoting.xml:257
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+"@WebRemote(exclude = {\"secret\"})\n"
+"  public Widget getWidget();"
+
+#. Tag: para
+#: Remoting.xml:258
+#, no-c-format
+msgid ""
+"The value \"secret\" refers to the <literal>secret</literal> field of the "
+"returned object. Now, suppose that we don&#39;t care about exposing this "
+"particular field to the client. Instead, notice that the <literal>Widget</"
+"literal> value that is returned has a field <literal>child</literal> that is "
+"also a <literal>Widget</literal>. What if we want to hide the "
+"<literal>child</literal>&#39;s <literal>secret</literal> value instead? We "
+"can do this by using dot notation to specify this field&#39;s path within "
+"the result&#39;s object graph:"
+msgstr ""
+"\"secret\" の値は返されるオブジェクトの <literal>secret</literal> フィールド"
+"を参照します。 ここで、 クライアントに対してこの特定フィールドが公開されても"
+"構わないと仮定します。 返される <literal>Widget</literal> には "
+"<literal>child</literal> フィールドがあり、 これも <literal>Widget</literal> "
+"になります。 代わりに <literal>child</literal> の <literal>secret</literal> "
+"値を隠したい場合はどうしたらよいでしょうか。 ドット表記を使用して結果となるオ"
+"ブジェクトグラフ内のこのフィールドのパスを指定することができます。"
+
+#. Tag: programlisting
+#: Remoting.xml:261
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"child.secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+"@WebRemote(exclude = {\"child.secret\"})\n"
+"  public Widget getWidget();"
+
+#. Tag: title
+#: Remoting.xml:262
+#, no-c-format
+msgid "Constraining Maps and Collections"
+msgstr "Map と 集合を制約する"
+
+#. Tag: para
+#: Remoting.xml:263
+#, no-c-format
+msgid ""
+"The other place that objects can exist within an object graph are within a "
+"<literal>Map</literal> or some kind of collection (<literal>List</literal>, "
+"<literal>Set</literal>, <literal>Array</literal>, etc). Collections are "
+"easy, and are treated like any other field. For example, if our "
+"<literal>Widget</literal> contained a list of other <literal>Widget</"
+"literal>s in its <literal>widgetList</literal> field, to constrain the "
+"<literal>secret</literal> field of the <literal>Widget</literal>s in this "
+"list the annotation would look like this:"
+msgstr ""
+"オブジェクトグラフ内にオブジェクトが存在できるその他の場所は <literal>Map</"
+"literal> あるいはなんらかの集合の種類内になります (<literal>List</literal>、 "
+"<literal>Set</literal>、 <literal>Array</literal> など)。 集合は簡単で、 その"
+"他のフィールドと同様に扱えます。 たとえば、 <literal>Widget</literal> の "
+"<literal>widgetList</literal> フィールド内に他の <literal>Widget</literal> 一"
+"覧が含まれていて、 この一覧の <literal>Widget</literal> の <literal>secret</"
+"literal> フィールドを制約している場合、 アノテーションは次のようになります。"
+
+#. Tag: programlisting
+#: Remoting.xml:266
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetList.secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+"@WebRemote(exclude = {\"widgetList.secret\"})\n"
+"  public Widget getWidget();"
+
+#. Tag: para
+#: Remoting.xml:267
+#, no-c-format
+msgid ""
+"To constrain a <literal>Map</literal>&#39;s key or value, the notation is "
+"slightly different. Appending <literal>[key]</literal> after the "
+"<literal>Map</literal>&#39;s field name will constrain the <literal>Map</"
+"literal>&#39;s key object values, while <literal>[value]</literal> will "
+"constrain the value object values. The following example demonstrates how "
+"the values of the <literal>widgetMap</literal> field have their "
+"<literal>secret</literal> field constrained:"
+msgstr ""
+"<literal>Map</literal> のキーまたは値を制約する場合の表記は少し異なります。 "
+"<literal>Map</literal> のフィールド名の後ろに <literal>[key]</literal> を付け"
+"加えると <literal>Map</literal> のキーオブジェクト値を制約し、 <literal>"
+"[value]</literal> は値オブジェクトの値を制約します。 次の例では "
+"<literal>widgetMap</literal> フィールドに制約された <literal>secret</"
+"literal> フィールドを持たせる方法を示しています。"
+
+#. Tag: programlisting
+#: Remoting.xml:270
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetMap[value].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+"@WebRemote(exclude = {\"widgetMap[value].secret\"})\n"
+"  public Widget getWidget();"
+
+#. Tag: title
+#: Remoting.xml:271
+#, no-c-format
+msgid "Constraining objects of a specific type"
+msgstr "特定タイプのオブジェクトを制約する"
+
+#. Tag: para
+#: Remoting.xml:272
+#, no-c-format
+msgid ""
+"There is one last notation that can be used to constrain the fields of a "
+"type of object no matter where in the result&#39;s object graph it appears. "
+"This notation uses either the name of the component (if the object is a Seam "
+"component) or the fully qualified class name (only if the object is not a "
+"Seam component) and is expressed using square brackets:"
+msgstr ""
+"最後に、結果となるオブジェクトグラフ内のどこに出現するかに関係なくオブジェク"
+"トタイプのフィールド制約に使用できる表記について説明します。 この表記はコン"
+"ポーネント名 (オブジェクトが Seam コンポーネントである場合) または完全修飾ク"
+"ラス名 (オブジェクトが Seam コンポーネントではない場合のみ) のいずれかを使用"
+"し角括弧を使って表現されます。"
+
+#. Tag: programlisting
+#: Remoting.xml:275
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"[widget].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+"@WebRemote(exclude = {\"[widget].secret\"})\n"
+"  public Widget getWidget();"
+
+#. Tag: title
+#: Remoting.xml:276
+#, no-c-format
+msgid "Combining Constraints"
+msgstr "制約同士を組み合わせる"
+
+#. Tag: para
+#: Remoting.xml:277
+#, no-c-format
+msgid ""
+"Constraints can also be combined, to filter objects from multiple paths "
+"within the object graph:"
+msgstr ""
+"制約同士はオブジェクトグラフ内で複数のパスからオブジェクトをフィルタするため"
+"に組み合わせることもできます。"
+
+#. Tag: programlisting
+#: Remoting.xml:280
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetList.secret\", \"widgetMap[value].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+"@WebRemote(exclude = {\"widgetList.secret\", \"widgetMap[value].secret\"})\n"
+"  public Widget getWidget();"
+
+#. Tag: title
+#: Remoting.xml:281
+#, no-c-format
+msgid "JMS Messaging"
+msgstr "JMS メッセージング"
+
+#. Tag: para
+#: Remoting.xml:282
+#, no-c-format
+msgid ""
+"Seam Remoting provides experimental support for JMS Messaging. This section "
+"describes the JMS support that is currently implemented, but please note "
+"that this may change in the future. It is currently not recommended that "
+"this feature is used within a production environment."
+msgstr ""
+"Seam Remoting は JMS メッセージングに対して実験的にサポートを提供していま"
+"す。 本セクションでは現在実装されている JMS サポートについて記載しています"
+"が、 今後、 変更される可能性があるので注意してください。 現在、 この機能を実"
+"稼働環境下で使用することは推奨されていません。"
+
+#. Tag: para
+#: Remoting.xml:286
+#, no-c-format
+msgid ""
+"Before you can subscribe to a JMS topic, you must first configure a list of "
+"the topics that can be subscribed to by Seam Remoting. List the topics under "
+"<literal>org.jboss.seam.remoting.messaging.subscriptionRegistry."
+"allowedTopics</literal> in <literal>seam.properties</literal>, <literal>web."
+"xml</literal> or <literal>components.xml</literal>."
+msgstr ""
+"JMS トピックをサブスクライブする前に、 まず Seam Remoting でサブスクライブさ"
+"せることができるトピック一覧を設定する必要があります。 <literal>seam."
+"properties</literal>、 <literal>web.xml</literal> または <literal>components."
+"xml</literal> の <literal>org.jboss.seam.remoting.messaging."
+"subscriptionRegistry.allowedTopics</literal> 配下にあるトピックを一覧表示させ"
+"ます。"
+
+#. Tag: programlisting
+#: Remoting.xml:289 Remoting.xml:322
+#, no-c-format
+msgid "&lt;remoting:remoting poll-timeout=\"5\" poll-interval=\"1\"/&gt;"
+msgstr "&lt;remoting:remoting poll-timeout=\"5\" poll-interval=\"1\"/&gt;"
+
+#. Tag: title
+#: Remoting.xml:290
+#, no-c-format
+msgid "Subscribing to a JMS Topic"
+msgstr "JMS Topic にサブスクライブする"
+
+#. Tag: para
+#: Remoting.xml:291
+#, no-c-format
+msgid "The following example demonstrates how to subscribe to a JMS Topic:"
+msgstr "次の例では JMS Topic へのサブスクライブ方法を示しています。"
+
+#. Tag: programlisting
+#: Remoting.xml:294
+#, no-c-format
+msgid ""
+"function subscriptionCallback(message)\n"
+"  {\n"
+"    if (message instanceof Seam.Remoting.TextMessage)\n"
+"      alert(\"Received message: \" + message.getText());\n"
+"  }        \n"
+"        \n"
+"  Seam.Remoting.subscribe(\"topicName\", subscriptionCallback);"
+msgstr ""
+"function subscriptionCallback(message)\n"
+"  {\n"
+"    if (message instanceof Seam.Remoting.TextMessage)\n"
+"      alert(\"Received message: \" + message.getText());\n"
+"  }        \n"
+"        \n"
+"  Seam.Remoting.subscribe(\"topicName\", subscriptionCallback);"
+
+#. Tag: para
+#: Remoting.xml:295
+#, no-c-format
+msgid ""
+"The <literal>Seam.Remoting.subscribe()</literal> method accepts two "
+"parameters, the first being the name of the JMS Topic to subscribe to, the "
+"second being the callback function to invoke when a message is received."
+msgstr ""
+"<literal>Seam.Remoting.subscribe()</literal> メソッドは 2 つのパラメータを受"
+"け取ります。 1 つ目はサブスクライブする JMS Topic 名になり、 2 つ目はメッセー"
+"ジが受け取られると呼び出すコールバック機能になります。"
+
+#. Tag: para
+#: Remoting.xml:298
+#, no-c-format
+msgid ""
+"There are two types of messages supported, Text messages and Object "
+"messages. If you need to test for the type of message that is passed to your "
+"callback function you can use the <literal>instanceof</literal> operator to "
+"test whether the message is a <literal>Seam.Remoting.TextMessage</literal> "
+"or <literal>Seam.Remoting.ObjectMessage</literal>. A <literal>TextMessage</"
+"literal> contains the text value in its <literal>text</literal> field (or "
+"alternatively call <literal>getText()</literal> on it), while an "
+"<literal>ObjectMessage</literal> contains its object value in its "
+"<literal>object</literal> field (or call its <literal>getObject()</literal> "
+"method)."
+msgstr ""
+"サポートされているメッセージは 2 種類で、 テキストメッセージとオブジェクト"
+"メッセージです。 コールバック機能に渡されるメッセージタイプのテストを必要とす"
+"る場合は、 <literal>instanceof</literal> 演算子を使ってメッセージが "
+"<literal>Seam.Remoting.TextMessage</literal> なのか <literal>Seam.Remoting."
+"ObjectMessage</literal> であるのかをテストすることができます。 "
+"<literal>TextMessage</literal> はその <literal>text</literal> フィールドにテ"
+"キスト値を含み (または代わりに <literal>getText()</literal> を呼び出す)、 "
+"<literal>ObjectMessage</literal> はその <literal>object</literal> フィールド"
+"にオブジェクト値を含みます (またはその <literal>getObject()</literal> メソッ"
+"ドを呼び出す)。"
+
+#. Tag: title
+#: Remoting.xml:301
+#, no-c-format
+msgid "Unsubscribing from a Topic"
+msgstr "トピックのサブスクライブを中止する"
+
+#. Tag: para
+#: Remoting.xml:302
+#, no-c-format
+msgid ""
+"To unsubscribe from a topic, call <literal>Seam.Remoting.unsubscribe()</"
+"literal> and pass in the topic name:"
+msgstr ""
+"トピックのサブスクライブを中止するには、 <literal>Seam.Remoting.unsubscribe()"
+"</literal> を呼び出してトピック名で渡します。"
+
+#. Tag: programlisting
+#: Remoting.xml:305
+#, no-c-format
+msgid "Seam.Remoting.unsubscribe(\"topicName\");"
+msgstr "Seam.Remoting.unsubscribe(\"topicName\");"
+
+#. Tag: title
+#: Remoting.xml:306
+#, no-c-format
+msgid "Tuning the Polling Process"
+msgstr "ポーリングのプロセスを調整する"
+
+# <literal>Seam.Remoting.pollInterval</literal>: en.xml:759 (para)
+#. Tag: para
+#: Remoting.xml:307
+#, no-c-format
+msgid ""
+"There are two parameters which you can modify to control how polling occurs. "
+"The first one is <literal>Seam.Remoting.pollInterval</literal>, which "
+"controls how long to wait between subsequent polls for new messages. This "
+"parameter is expressed in seconds, and its default setting is 10."
+msgstr ""
+"ポーリングの発生方法を制御するために変更できるパラメータが 2 つあります。 1 "
+"つ目は <literal>Seam.Remoting.pollInterval</literal> で、 新しいメッセージに"
+"対して後続ポールが発生する間隔を制御します。 秒単位で表現します、 デフォルト"
+"設定は 10 になります。"
+
+#. Tag: para
+#: Remoting.xml:310
+#, no-c-format
+msgid ""
+"The second parameter is <literal>Seam.Remoting.pollTimeout</literal>, and is "
+"also expressed as seconds. It controls how long a request to the server "
+"should wait for a new message before timing out and sending an empty "
+"response. Its default is 0 seconds, which means that when the server is "
+"polled, if there are no messages ready for delivery then an empty response "
+"will be immediately returned."
+msgstr ""
+"2 つ目のパラメータは <literal>Seam.Remoting.pollTimeout</literal> で、 このパ"
+"ラメータも秒単位で表現されます。 サーバーへのリクエストがタイムアウトして空白"
+"の応答を送信するまでの新しいメッセージを待機する長さを制御します。 デフォルト"
+"は 0秒で、 サーバーがポールされると配信できるメッセージがない場合は空白の応答"
+"が直ちに返されます。"
+
+#. Tag: para
+#: Remoting.xml:313
+#, no-c-format
+msgid ""
+"Caution should be used when setting a high <literal>pollTimeout</literal> "
+"value; each request that has to wait for a message means that a server "
+"thread is tied up until a message is received, or until the request times "
+"out. If many such requests are being served simultaneously, it could mean a "
+"large number of threads become tied up because of this reason."
+msgstr ""
+"<literal>pollTimeout</literal> 値を高く設定する場合は注意が必要です。 各リク"
+"エストがメッセージを待機する必要があるということは、 メッセージが受信されるま"
+"でまたはそのリクエストがタイムアウトするまでサーバースレッドが固定されるとい"
+"うことになります。 こうしたリクエストが同時に多数発生すると、 大量のスレッド"
+"が固定される結果になります。"
+
+#. Tag: para
+#: Remoting.xml:316
+#, no-c-format
+msgid ""
+"It is recommended that you set these options via components.xml, however "
+"they can be overridden via Javascript if desired. The following example "
+"demonstrates how to configure the polling to occur much more aggressively. "
+"You should set these parameters to suitable values for your application:"
+msgstr ""
+"これらのオプションは components.xml 経由で設定することを推奨しますが、 必要に"
+"応じて Javascript で上書きすることができます。 次の例ではポーリングがかなりア"
+"グレッシブに発生するよう設定する方法を示しています。 これらのパラメータはご使"
+"用のアプリケーションに適切な値を設定してください。"
+
+#. Tag: para
+#: Remoting.xml:319
+#, no-c-format
+msgid "Via components.xml:"
+msgstr "components.xml:"
+
+#. Tag: para
+#: Remoting.xml:323
+#, no-c-format
+msgid "Via JavaScript:"
+msgstr "JavaScript:"
+
+#. Tag: programlisting
+#: Remoting.xml:326
+#, no-c-format
+msgid ""
+"// Only wait 1 second between receiving a poll response and sending the next "
+"poll request.\n"
+"  Seam.Remoting.pollInterval = 1;\n"
+"  \n"
+"  // Wait up to 5 seconds on the server for new messages\n"
+"  Seam.Remoting.pollTimeout = 5;"
+msgstr ""
+"// Only wait 1 second between receiving a poll response and sending the next "
+"poll request.\n"
+"  Seam.Remoting.pollInterval = 1;\n"
+"  \n"
+"  // Wait up to 5 seconds on the server for new messages\n"
+"  Seam.Remoting.pollTimeout = 5;"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Seam_Reference_Guide.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Seam_Reference_Guide.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Seam_Reference_Guide.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,451 @@
+# translation of Seam_Reference_Guide.po to Japanese
+# Noriko Mizumoto <noriko at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Seam_Reference_Guide\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-02-04 23:29+0000\n"
+"PO-Revision-Date: 2007-11-02 13:16+1000\n"
+"Last-Translator: Noriko Mizumoto <noriko at redhat.com>\n"
+"Language-Team: Japanese <fedora-trans-ja at redhat.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Seam_Reference_Guide.xml:9
+#, no-c-format
+msgid "Introduction to JBoss Seam"
+msgstr "JBoss Seam はじめに"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:10
+#, no-c-format
+msgid ""
+"Seam is an application framework for Java EE 5. It is inspired by the "
+"following principles:"
+msgstr ""
+"Seam は Java EE 5 用のアプリケーションフレームワークです。 次のような理念に基"
+"づいています。"
+
+#. Tag: emphasis
+#: Seam_Reference_Guide.xml:15
+#, no-c-format
+msgid "Integrate JSF with EJB 3.0"
+msgstr "JSF と EJB 3.0 の統合"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:17
+#, no-c-format
+msgid ""
+"JSF and EJB 3.0 are two of the best new features of Java EE 5. EJB3 is a "
+"brand new component model for server side business and persistence logic. "
+"Meanwhile, JSF is a great component model for the presentation tier. "
+"Unfortunately, neither component model is able to solve all problems in "
+"computing by itself. Indeed, JSF and EJB3 work best used together. But the "
+"Java EE 5 specification provides no standard way to integrate the two "
+"component models. Fortunately, the creators of both models foresaw this "
+"situation and provided standard extension points to allow extension and "
+"integration of other solutions."
+msgstr ""
+"JSF と EJB 3.0 の 2 つは Java EE 5 の最良の新機能です。 EJB3 はサーバー側の機"
+"能や永続ロジックに対するまったく新しいコンポーネントモデルとなります。 一"
+"方、 JSF はプレゼンテーション層に対して優れたコンポーネントモデルとなりま"
+"す。 残念ながら、 どちらのコンポーネントモデルも単独ではコンピュータの問題の"
+"すべてを解決することはできません。 実際に、 JSF と EJB3 は併用した場合に最も"
+"効果的に動作します。 しかしながら、 Java EE 5 の仕様はこの 2 つのコンポーネン"
+"トモデルを統合する標準の方法を提供していません。 幸い、 両モデルの開発者はこ"
+"の状況を予感し、 他のソリューションの拡張や統合を可能にする標準の拡張ポイント"
+"を提供してくれていました。"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:20
+#, no-c-format
+msgid ""
+"Seam unifies the component models of JSF and EJB3, eliminating glue code, "
+"and letting the developer think about the business problem."
+msgstr ""
+"Seam は JSF と EJB3 のコンポーネントモデルを統一し、 接着剤としてのコードを取"
+"り除き開発者がビジネス関連の問題により重点をおけるようにしてくれています。"
+
+#. Tag: emphasis
+#: Seam_Reference_Guide.xml:26
+#, no-c-format
+msgid "Integrated AJAX"
+msgstr "統合 AJAX"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:28
+#, no-c-format
+msgid ""
+"Seam supports two open source JSF-based AJAX solutions: ICEfaces and "
+"Ajax4JSF. These solutions let you add AJAX capability to your user interface "
+"without the need to write any JavaScript code."
+msgstr ""
+"Seam は、 ICEfaces および Ajax4JSF という JSF ベースのオープンソースな AJAX "
+"ソリューションをサポートしています。 これらのソリューションにより、 "
+"JavaScript コードを記述することなくユーザーインターフェースに AJAX 機能を追加"
+"することができるようになります。"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:31
+#, no-c-format
+msgid ""
+"Seam also provides a built-in JavaScript remoting layer for EJB3 components. "
+"AJAX clients can easily call server-side components and subscribe to JMS "
+"topics, without the need for an intermediate action layer."
+msgstr ""
+"また、 Seam は EJB3 コンポーネントに対して組み込みの JavaScript リモーティン"
+"グ層を提供します。 これにより、 中間のアクション層を必要とすることなく、 "
+"AJAX クライアントは簡単にサーバ側のコンポーネントを呼び出して JMS topic をサ"
+"ブスクライブすることができるようになります。"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:34
+#, no-c-format
+msgid ""
+"Neither of these approaches would work well, were it not for Seam&#39;s "
+"built-in concurrency and state management, which ensures that many "
+"concurrent fine-grained, asynchronous AJAX requests are handled safely and "
+"efficiently on the server side."
+msgstr ""
+"いずれの方法もうまく動作しない場合、 それは多くの並列同期の微細な AJAX リクエ"
+"ストがサーバー側で安全且つ効率的に処理される Seam のビルトイン並行処理状態管"
+"理ではないはずです。"
+
+#. Tag: emphasis
+#: Seam_Reference_Guide.xml:40
+#, no-c-format
+msgid "Integrate Business Process as a First Class Construct"
+msgstr "ファーストクラスの構成によるビジネスプロセスの統合"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:42
+#, no-c-format
+msgid ""
+"Optionally, Seam integrates transparent business process management via "
+"jBPM. You won&#39;t believe how easy it is to implement complex workflows "
+"using jBPM and Seam."
+msgstr ""
+"オプションで、 Seam は jBPM を使って透過的なビジネスプロセス管理を統合しま"
+"す。 jBPM と Seam を使った複雑なワークフローの実装ががいかに容易であるか信じ"
+"られないほどです。"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:45
+#, no-c-format
+msgid ""
+"Seam even allows definition of presentation tier conversation flow by the "
+"same means."
+msgstr ""
+"Seam はまた、 同じ手段でプレゼンテーション層の対話フローの定義をも可能にしま"
+"す。"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:48
+#, no-c-format
+msgid ""
+"JSF provides an incredibly rich event model for the presentation tier. Seam "
+"enhances this model by exposing jBPM&#39;s business process related events "
+"via exactly the same event handling mechanism, providing a uniform event "
+"model for Seam&#39;s uniform component model."
+msgstr ""
+"JSF はプレゼンテーション層に対して信じられないほど豊富なイベントモデルを提供"
+"しています。 Seam は全く同じイベント処理メカニズムを使って jBPM のビジネスプ"
+"ロセス関連のイベントを公開し、 Seam 均一コンポーネントモデルに対して一貫した"
+"イベントモデルを提供することでこのモデルの機能を拡張しています。"
+
+#. Tag: emphasis
+#: Seam_Reference_Guide.xml:54
+#, no-c-format
+msgid "One Kind of \"Stuff\""
+msgstr "一貫した原則"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:56
+#, no-c-format
+msgid ""
+"Seam provides a uniform component model. A Seam component may be stateful, "
+"with the state associated to any one of a number of contexts, ranging from "
+"the long-running business process to a single web request."
+msgstr ""
+"Seam は一貫したコンポーネントモデルを提供します。 長期のビジネスプロセスから "
+"単一の WEB リクエストに至るまで、 いずれのコンテキストに関連付けられた状態で"
+"も Seam コンポーネントをステートフルとすることが可能です。"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:59
+#, no-c-format
+msgid ""
+"There is no distinction between presentation tier components and business "
+"logic components in Seam. It is possible to write Seam applications where "
+"\"everything\" is an EJB. This may come as a surprise if you are used to "
+"thinking of EJBs as coarse-grained, heavyweight objects that are a pain in "
+"the backside to create! However, EJB 3.0 completely changes the nature of "
+"EJB from the point of view of the developer. An EJB is a fine-grained object "
+"- nothing more complex than an annotated JavaBean. Seam even encourages you "
+"to use session beans as JSF action listeners!"
+msgstr ""
+"Seam では、 プレゼンテーション層のコンポーネントとビジネスロジックのコンポー"
+"ネントの区別はありません。 EJB であれば、「どこでも」 Seam アプリケーションを"
+"書くことが可能です。 EJB は細かな調整ができず、 作成に苦労する小回りのきかな"
+"いオブジェクトだと考えていた人にとっては驚きとして映るかもしれません。 しか"
+"し、 開発者の観点から見ると EJB 3.0 はその EJB としての性質を完全に変化させて"
+"います。 EJB は微細な調整が可能なオブジェクトになり、 アノテーション付き "
+"Java Bean と同様に簡単になりました。 Seam でさえ JSF のアクションリスナとして"
+"セッション Bean の使用を推奨しています。"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:62
+#, no-c-format
+msgid ""
+"Unlike plain Java EE or J2EE components, Seam components may "
+"<emphasis>simultaneously</emphasis> access state associated with the web "
+"request and state held in transactional resources (without the need to "
+"propagate web request state manually via method parameters). You might "
+"object that the application layering imposed upon you by the old J2EE "
+"platform was a Good Thing. Well, nothing stops you creating an equivalent "
+"layered architecture using Seam - the difference is that <emphasis>you</"
+"emphasis> get to architect your own application and decide what the layers "
+"are and how they work together."
+msgstr ""
+"単なる Java EE あるいは J2EE コンポーネントとは異なり、 Seam コンポーネント"
+"は WEB リクエストに関連した状態と、 トランザクション的なリソースに維持された"
+"状態とに同時にアクセスすることも可能です (メソッドパラメータを使って手作業で "
+"WEB リクエストの状態を伝播させる必要なく)。 昔なじみの J2EE プラットフォーム"
+"により必要とされたアプリケーションの階層化は良いことだと反対される方もいらっ"
+"しゃるかもしれません。 Seam を使って同等の階層アーキテクチャを作成しても構い"
+"ません。 違いは、 あなたが、 独自のアプリケーションを設計し、 どの層がどのよ"
+"うに相互的に働くかを決定するということです。"
+
+#. Tag: emphasis
+#: Seam_Reference_Guide.xml:68
+#, no-c-format
+msgid "Declarative State Management"
+msgstr "宣言的状態管理"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:70
+#, no-c-format
+msgid ""
+"We are all used to the concept of declarative transaction management and "
+"J2EE declarative security from EJB 2.x. EJB 3.0 even introduces declarative "
+"persistence context management. These are three examples of a broader "
+"problem of managing state that is associated with a particular "
+"<emphasis>context</emphasis>, while ensuring that all needed cleanup occurs "
+"when the context ends. Seam takes the concept of declarative state "
+"management much further and applies it to <emphasis>application state</"
+"emphasis>. Traditionally, J2EE applications almost always implement state "
+"management manually, by getting and setting servlet session and request "
+"attributes. This approach to state management is the source of many bugs and "
+"memory leaks when applications fail to clean up session attributes, or when "
+"session data associated with different workflows collides in a multi-window "
+"application. Seam has the potential to almost entirely eliminate this class "
+"of bugs."
+msgstr ""
+"EJB 2.x. 以降の宣言的トランザクション管理や、 J2EE の宣言的セキュリティの概念"
+"には既に慣れてきていいます。 EJB 3.0 は宣言的永続コンテキスト管理も導入してい"
+"ます。 コンテキストが終了するときに必要なすべてのクリーンアップが行われること"
+"は保証される一方、 特定の<emphasis>コンテキスト</emphasis>と関連する状態を管"
+"理する上で広範囲に渡る問題があります。 次に 3 つの例を示します。 Seam は、宣"
+"言的状態管理の概念をさらに広範囲に取り入れ、 それを<emphasis>アプリケーション"
+"の状態</emphasis>にも応用しています。 従来、 J2EE のアプリケーションは必ずと"
+"言っていいほどサーブレットセッションとリクエスト属性を取得し設定することによ"
+"り手動で状態管理を実装しています。 状態管理を行うためのこの手段は、 アプリ"
+"ケーションがセッション属性のクリーンアップに失敗した場合やマルチウィンドウア"
+"プリケーションで異なるワークフローに関連付けられたセッションデータ同士が衝突"
+"する場合に多くのバグやメモリリークを生む源となります。 Seam にはほぼ完全にこ"
+"のクラスのバグを解消する可能性が備わっています。"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:73
+#, no-c-format
+msgid ""
+"Declarative application state management is made possible by the richness of "
+"the <emphasis>context model</emphasis> defined by Seam. Seam extends the "
+"context model defined by the servlet spec&mdash;request, session, "
+"application&mdash;with two new contexts&mdash;conversation and business "
+"process&mdash;that are more meaningful from the point of view of the "
+"business logic."
+msgstr ""
+"宣言的なアプリケーションの状態管理は Seam で定義される <emphasis>コンテキスト"
+"モデル</emphasis>の豊富さにより実現されます。 Seam は、 サーブレット仕様 "
+"&mdash; request、 session、 application &mdash; で定義されるコンテキストモデ"
+"ルに、 ビジネスロジック的により有意義である 2 つの新たなコンテキスト &mdash; "
+"対話とビジネスプロセス &mdash; を加えることで機能拡張しました。"
+
+#. Tag: emphasis
+#: Seam_Reference_Guide.xml:79
+#, no-c-format
+msgid "Bijection"
+msgstr "バイジェクション"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:81
+#, no-c-format
+msgid ""
+"The notion of <emphasis>Inversion of Control</emphasis> or "
+"<emphasis>dependency injection</emphasis> exists in both JSF and EJB3, as "
+"well as in numerous so-called \"lighweight containers\". Most of these "
+"containers emphasize injection of components that implement "
+"<emphasis>stateless services</emphasis>. Even when injection of stateful "
+"components is supported (such as in JSF), it is virtually useless for "
+"handling application state because the scope of the stateful component "
+"cannot be defined with sufficient flexibility."
+msgstr ""
+"<emphasis>制御の反転</emphasis>あるいは<emphasis>依存性のインジェクション</"
+"emphasis>の概念は JSF や EJB3 だけでなく、 多くのいわゆる「軽量コンテナ」にも"
+"存在します。 これらのコンテナのほとんどが<emphasis>ステートレスサービス</"
+"emphasis>を実装するコンポーネントのインジェクションを重視しています。 ステー"
+"トフルなコンポーネントのインジェクションがサポートされる場合であっても (JSF "
+"のように)、 ステートフルなコンポーネントのスコープは十分な柔軟性を持って定義"
+"できないため、 現実的にはアプリケーションの状態を扱うには役に立ちません。"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:84
+#, no-c-format
+msgid ""
+"<emphasis>Bijection</emphasis> differs from IoC in that it is "
+"<emphasis>dynamic</emphasis>, <emphasis>contextual</emphasis>, and "
+"<emphasis>bidirectional</emphasis>. You can think of it as a mechanism for "
+"aliasing contextual variables (names in the various contexts bound to the "
+"current thread) to attributes of the component. Bijection allows auto-"
+"assembly of stateful components by the container. It even allows a component "
+"to safely and easily manipulate the value of a context variable, just by "
+"assigning to an attribute of the component."
+msgstr ""
+"<emphasis>バイジェクション</emphasis>は、 <emphasis>動的 (dynamic)</"
+"emphasis>、 <emphasis>コンテキスト依存 (contextual)</emphasis>、 <emphasis>双"
+"方向的 (bidirectional)</emphasis> という点において IoC とは異なります。 コン"
+"テキスト上の変数 (現在のスレッドと結びついた各種コンテキスト中の名前) をコン"
+"ポーネントの属性の別名として対応させる機構と考えることができます。 バイジェク"
+"ションはコンテナによるステートフルなコンポーネントの自動アセンブリを可能にし"
+"ます。 コンポーネントの属性を設定するだけで、 安全かつ容易にコンテキスト変数"
+"の値を操作することさえ可能になります。"
+
+#. Tag: emphasis
+#: Seam_Reference_Guide.xml:90
+#, no-c-format
+msgid "Workspace Management"
+msgstr "ワークスペース管理"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:92
+#, no-c-format
+msgid ""
+"Optionally, Seam applications may take advantage of <emphasis>workspace "
+"management</emphasis>, allowing users to freely switch between different "
+"conversations (workspaces) in a single browser window. Seam provides not "
+"only correct multi-window operation, but also multi-window-like operation in "
+"a single window!"
+msgstr ""
+"オプションで、 Seam アプリケーションは<emphasis>ワークスペース管理機能</"
+"emphasis>を利用することも可能で、 ユーザは 1 つのブラウザウィンドウの中で異な"
+"る対話(ワークスペース)間を自由に行き来することができます。 Seam は正確なマル"
+"チウィンドウ操作だけでなく、 シングルウィンドウ内でマルチウィンドウのような操"
+"作も行うことができます。"
+
+#. Tag: emphasis
+#: Seam_Reference_Guide.xml:98
+#, no-c-format
+msgid "Annotated POJOs Everywhere"
+msgstr "どこでもアノテーション付きの POJO を"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:100
+#, no-c-format
+msgid ""
+"EJB 3.0 embraces annotations and \"configuration by exception\" as the "
+"easiest way to provide information to the container in a declarative form. "
+"Unfortunately, JSF is still heavily dependent on verbose XML configuration "
+"files. Seam extends the annotations provided by EJB 3.0 with a set of "
+"annotations for declarative state management and declarative context "
+"demarcation. This lets you eliminate the noisy JSF managed bean declarations "
+"and reduce the required XML to just that information which truly belongs in "
+"XML (the JSF navigation rules)."
+msgstr ""
+"EJB 3.0 は、 宣言的な形式でコンテナに情報を提供する最も簡単な方法としてアノ"
+"テーションと「例外による設定」を採用しています。 残念ながら、 JSF はまだ冗長"
+"な XML 設定ファイルに大きく依存しています。 Seam は、 EJB 3.0 によって提供さ"
+"れるアノテーションに宣言的状態管理および宣言的コンテキスト区分用のアノテー"
+"ション一式を提供することにより機能拡張しています。 これにより、 うっとうしい "
+"JSF 管理の Bean 宣言を取り除き、 必要とされる XML を減少させ、本当に XML で定"
+"義すべき情報 (JSF ナビゲーション規則) だけになるようにします。"
+
+#. Tag: emphasis
+#: Seam_Reference_Guide.xml:106
+#, no-c-format
+msgid "Testability as a Core Feature"
+msgstr "中核機能としてのテスト容易性"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:108
+#, no-c-format
+msgid ""
+"Seam components, being POJOs, are by nature unit testable. But for complex "
+"applications, unit testing alone is insufficient. Integration testing has "
+"traditionally been a messy and difficult task for Java web applications. "
+"Therefore, Seam provides for testability of Seam applications as a core "
+"feature of the framework. You can easily write JUnit or TestNG tests that "
+"reproduce a whole interaction with a user, exercising all components of the "
+"system apart from the view (the JSP or Facelets page). You can run these "
+"tests directly inside your IDE, where Seam will automatically deploy EJB "
+"components into the JBoss Embeddable EJB3 container."
+msgstr ""
+"POJO である Seam コンポーネントはそもそもユニットテストが可能です。 しかし、 "
+"複雑なアプリケーションの場合はユニットテストだけでは不十分になります。 以前か"
+"ら、 統合テストは Java の WEB アプリケーションにとって煩雑でやっかいな作業と"
+"なっていました。 このため、 Seam はフレームワークの中核機能として Seam アプリ"
+"ケーションのテスト容易性を提供しています。 ユーザーとのやりとり全体を再生"
+"し、 ビュー (JSP や Facelets ページ) 以外のシステムの全コンポーネントを作動さ"
+"せる JUnit テストや TestNG テストを容易に記述することができます。 Seam よって"
+"自動的に EJB コンポーネントが JBoss の組み込み可能 EJB3 コンテナにデプロイさ"
+"れる IDE の内部で、 これらのテストを直接実行することができます。"
+
+#. Tag: emphasis
+#: Seam_Reference_Guide.xml:114
+#, no-c-format
+msgid "Get started now!"
+msgstr "さあ、はじめましょう!"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:116
+#, no-c-format
+msgid ""
+"Seam works in any application server that supports EJB 3.0. You can even use "
+"Seam in a servlet container like Tomcat, or in any J2EE application server, "
+"by leveraging the new JBoss Embeddable EJB3 container."
+msgstr ""
+"Seam は、EJB 3.0 をサポートするアプリケーションサーバーならいずれでも動作しま"
+"す。 新しい JBoss 組み込み可能 EJB3 コンテナを利用することで、 Tomcat のよう"
+"なサーブレットコンテナや J2EE アプリケーションサーバーでも Seam を使用するこ"
+"とができます。"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:119
+#, no-c-format
+msgid ""
+"However, we realize that not everyone is ready to make the switch to EJB "
+"3.0. So, in the interim, you can use Seam as a framework for applications "
+"that use JSF for presentation, Hibernate (or plain JDBC) for persistence and "
+"JavaBeans for application logic. Then, when you&#39;re ready to make the "
+"switch to EJB 3.0, migration will be straightforward."
+msgstr ""
+"ただし、 すべての人が EJB 3.0 に移行準備が整っているわけではないことも認識し"
+"ています。 このため、 しばらくの間、 プレゼンテーションに JSF、永続に "
+"Hibernate (またはプレーン JDBC)、 アプリケーションロジックに JavaBeans を使用"
+"するアプリケーションに対しては Seam をフレームワークとして使用することができ"
+"ます。 これで、 EJB 3.0 への移行準備が整った時点での以降が簡単になります。"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:133
+#, no-c-format
+msgid ""
+"It turns out that the combination of Seam, JSF and EJB3 is <emphasis>the</"
+"emphasis> simplest way to write a complex web application in Java. You "
+"won&#39;t believe how little code is required!"
+msgstr ""
+"Java で複雑なウェブアプリケーションを記述する場合、 Seam、 JSF、 EJB3 の組み"
+"合わせが<emphasis>最も</emphasis>シンプルな手段となることがわかります。 必要"
+"とするコードが信じられないほど少なくなります。"

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Security.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Security.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Security.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2490 @@
+# translation of Security.po to Japanese
+# Noriko Mizumoto <noriko at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Security\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-30 01:52+0000\n"
+"PO-Revision-Date: 2007-11-01 11:42+1000\n"
+"Last-Translator: Noriko Mizumoto <noriko at redhat.com>\n"
+"Language-Team: Japanese <fedora-trans-ja at redhat.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Security.xml:6
+#, no-c-format
+msgid "Security"
+msgstr "セキュリティ"
+
+#. Tag: para
+#: Security.xml:7
+#, no-c-format
+msgid ""
+"The Seam Security API is an optional Seam feature that provides "
+"authentication and authorization features for securing both domain and page "
+"resources within your Seam project."
+msgstr ""
+"SeamのセキュリティAPIはシームプロジェクトのドメイン或はページに対して認証と承"
+"認機能を提供するAPIです。"
+
+#. Tag: title
+#: Security.xml:10
+#, no-c-format
+msgid "Overview"
+msgstr "概要"
+
+#. Tag: para
+#: Security.xml:11
+#, no-c-format
+msgid "Seam Security provides two different modes of operation:"
+msgstr "Seamのセキュリティ機能は下の二つの操作モードを提供します。"
+
+#. Tag: para
+#: Security.xml:16
+#, no-c-format
+msgid ""
+"<emphasis>simplified mode</emphasis> - this mode supports authentication "
+"services and simple role-based security checks."
+msgstr ""
+"<emphasis>単純なモード</emphasis> - 認証と、ロールに基づくセキュリティチェッ"
+"クを提供します"
+
+#. Tag: para
+#: Security.xml:21
+#, no-c-format
+msgid ""
+"<emphasis>advanced mode</emphasis> - this mode supports all the same "
+"features as the simplified mode, plus it offers rule-based security checks "
+"using JBoss Rules."
+msgstr ""
+"<emphasis>より高度なモード</emphasis> - 上記の機能に加えてJBoss Ruleを利用し"
+"たルールベースのセキュリティチェック機能を提供します。"
+
+#. Tag: title
+#: Security.xml:26
+#, no-c-format
+msgid "Which mode is right for my application?"
+msgstr "どちらのモードを使うのが適切か?"
+
+#. Tag: para
+#: Security.xml:27
+#, no-c-format
+msgid ""
+"That all depends on the requirements of your application. If you have "
+"minimal security requirements, for example if you only wish to restrict "
+"certain pages and actions to users who are logged in, or who belong to a "
+"certain role, then the simplified mode will probably be sufficient. The "
+"advantages of this is a more simplified configuration, significantly less "
+"libraries to include, and a smaller memory footprint."
+msgstr ""
+"アプリケーションの必要性に応じて、ログインしたユーザ、或は特定のロールを有す"
+"るユーザに対してのみページ閲覧や操作の実行を許可したい場合のような、単純なセ"
+"キュリティ機能が必要な場合には、「単純なモード」で十分でしょう。 このモデルで"
+"は、設定が簡単であることや、必要なライブラリが少なくメモリの消費量も少ないメ"
+"リットがあります。"
+
+#. Tag: para
+#: Security.xml:30
+#, no-c-format
+msgid ""
+"If on the other hand, your application requires security checks based on "
+"contextual state or complex business rules, then you will require the "
+"features provided by the advanced mode."
+msgstr ""
+"一方、複雑なビジネスルールや、コンテクストの状態によるセキュリティのチェック"
+"が必要となる場合には、「より高度なモード」を使う必要があるでしょう。"
+
+#. Tag: title
+#: Security.xml:33
+#, no-c-format
+msgid "Requirements"
+msgstr "要求条件"
+
+#. Tag: para
+#: Security.xml:34
+#, no-c-format
+msgid ""
+"If using the advanced mode features of Seam Security, the following jar "
+"files are required to be configured as modules in <literal>application.xml</"
+"literal>. If you are using Seam Security in simplified mode, these are "
+"<emphasis>not</emphasis> required:"
+msgstr ""
+"Seamセキュリティの「より高度なモード」を利用する場合には、下記のjarファイルを"
+"モジュールとして<literal>application.xml</literal>に設定する必要があります。 "
+"一方、「単純なモード」であれば、これらのファイルは必要ありません。"
+
+#. Tag: para
+#: Security.xml:39
+#, no-c-format
+msgid "drools-compiler-3.0.5.jar"
+msgstr "drools-compiler-3.0.5.jar"
+
+#. Tag: para
+#: Security.xml:44
+#, no-c-format
+msgid "drools-core-3.0.5.jar"
+msgstr "drools-core-3.0.5.jar"
+
+#. Tag: para
+#: Security.xml:49
+#, no-c-format
+msgid "commons-jci-core-1.0-406301.jar"
+msgstr "commons-jci-core-1.0-406301.jar"
+
+#. Tag: para
+#: Security.xml:54
+#, no-c-format
+msgid "commons-jci-janino-2.4.3.jar"
+msgstr "commons-jci-janino-2.4.3.jar"
+
+#. Tag: para
+#: Security.xml:59
+#, no-c-format
+msgid "commons-lang-2.1.jar"
+msgstr "commons-lang-2.1.jar"
+
+#. Tag: para
+#: Security.xml:64
+#, no-c-format
+msgid "janino-2.4.3.jar"
+msgstr "janino-2.4.3.jar"
+
+#. Tag: para
+#: Security.xml:69
+#, no-c-format
+msgid "stringtemplate-2.3b6.jar"
+msgstr "stringtemplate-2.3b6.jar"
+
+#. Tag: para
+#: Security.xml:74
+#, no-c-format
+msgid "antlr-2.7.6.jar"
+msgstr "antlr-2.7.6.jar"
+
+#. Tag: para
+#: Security.xml:79
+#, no-c-format
+msgid "antlr-3.0ea8.jar"
+msgstr "antlr-3.0ea8.jar"
+
+#. Tag: para
+#: Security.xml:84
+#, no-c-format
+msgid ""
+"For web-based security, <literal>jboss-seam-ui.jar</literal> must also be "
+"included in the application&#39;s war file. Also, to make use of the "
+"security EL functions, <literal>SeamFaceletViewHandler</literal> must be "
+"used. Configure it in <literal>faces-config.xml</literal> like this:"
+msgstr ""
+"webベースのセキュリティを実装する場合には<literal>jboss-seam-ui.jar</literal>"
+"がアプリケーションの warファイルに含まれている必要があります。 また、EL式でセ"
+"キュリティを利用する場合には<literal>SeamFaceletViewHandler</literal>の設定が"
+"必要となりますので、<literal>faces-config.xml</literal> に下の様に設定してく"
+"ださい。"
+
+#. Tag: programlisting
+#: Security.xml:87
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;view-handler&gt;org.jboss.seam.ui.facelet.SeamFaceletViewHandler&lt;/"
+"view-handler&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+"&lt;application&gt;\n"
+"    &lt;view-handler&gt;org.jboss.seam.ui.facelet.SeamFaceletViewHandler&lt;/"
+"view-handler&gt;\n"
+"&lt;/application&gt;"
+
+#. Tag: title
+#: Security.xml:88
+#, no-c-format
+msgid "Authentication"
+msgstr "認証"
+
+#. Tag: para
+#: Security.xml:89
+#, no-c-format
+msgid ""
+"The authentication features provided by Seam Security are built upon JAAS "
+"(Java Authentication and Authorization Service), and as such provide a "
+"robust and highly configurable API for handling user authentication. "
+"However, for less complex authentication requirements Seam offers a much "
+"more simplified method of authentication that hides the complexity of JAAS."
+msgstr ""
+"Seam セキュリティの提供する認証機構は JAAS (Java Authentication and "
+"Authorization Service) の上に構築されており、 ユーザ認証の為の堅牢で設定の自"
+"由度の高い API を提供しています。 しかしながら、 Seamで は JAAS の複雑さを隠"
+"蔽したより単純化された認証機構も提供しています。"
+
+#. Tag: title
+#: Security.xml:92
+#, no-c-format
+msgid "Configuration"
+msgstr "設定"
+
+#. Tag: para
+#: Security.xml:93
+#, no-c-format
+msgid ""
+"The simplified authentication method uses a built-in JAAS login module, "
+"<literal>SeamLoginModule</literal>, which delegates authentication to one of "
+"your own Seam components. This login module is already configured inside "
+"Seam as part of a default application policy and as such does not require "
+"any additional configuration files. It allows you to write an authentication "
+"method using the entity classes that are provided by your own application. "
+"Configuring this simplified form of authentication requires the "
+"<literal>identity</literal> component to be configured in "
+"<literal>components.xml</literal>:"
+msgstr ""
+"単純な認証機構ではSeamアプリケーションのコンポーネントに認証を委ねる"
+"<literal>SeamLoginModule</literal>(これは、Seamに内蔵されているJAASのログイ"
+"ンモジュールです)を使います。 このログインモジュールはSeamのデフォルトのアプ"
+"リケーションポリシーとして予め設定されていますので、新たに設定に追加する事な"
+"く使用することでき、作成されているアプリケーションのエンティティクラスを利用"
+"して、認証メソッドを記述することができます。 この「単純な認証機構」を利用する"
+"ためには<literal>components.xml</literal>に下記のように<literal>identity</"
+"literal>コンポーネントを設定する必要があります。"
+
+#. Tag: programlisting
+#: Security.xml:96
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:security=\"http://jboss.com/products/seam/security\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core http://jboss.com/"
+"products/seam/core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components http://jboss.com/"
+"products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/drools http://jboss.com/"
+"products/seam/drools-1.2.xsd\"\n"
+"                 http://jboss.com/products/seam/security http://jboss.com/"
+"products/seam/security-1.2.xsd\"&gt;                \n"
+"        \n"
+"    &lt;security:identity authenticate-method=\"#{authenticator.authenticate}"
+"\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:security=\"http://jboss.com/products/seam/security\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core http://jboss.com/"
+"products/seam/core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components http://jboss.com/"
+"products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/drools http://jboss.com/"
+"products/seam/drools-1.2.xsd\"\n"
+"                 http://jboss.com/products/seam/security http://jboss.com/"
+"products/seam/security-1.2.xsd\"&gt;                \n"
+"        \n"
+"    &lt;security:identity authenticate-method=\"#{authenticator.authenticate}"
+"\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Security.xml:97
+#, no-c-format
+msgid ""
+"If you wish to use the advanced security features such as rule-based "
+"permission checks, all you need to do is include the Drools (JBoss Rules) "
+"jars in your classpath, and add some additional configuration, described "
+"later."
+msgstr ""
+"ルールに基づく承認のような、「より高度なセキュリティ機構」を実装す場合には、"
+"Drools (JBoss Rules) のjarファイル群をクラスパスに含め、後述のようにコンフィ"
+"グレーションファイルに若干の設定を加えることが必要となります。"
+
+#. Tag: para
+#: Security.xml:100
+#, no-c-format
+msgid ""
+"The EL expression <literal>#{authenticator.authenticate}</literal> is a "
+"method binding indicating that the <literal>authenticate</literal> method of "
+"the <literal>authenticator</literal> component will be used to authenticate "
+"the user."
+msgstr ""
+"EL式 <literal>#{authenticator.authenticate}</literal> は"
+"<literal>authenticator</literal>コンポーネントの<literal>authenticate</"
+"literal>メソッドを使って、ユーザの認証を行うことを示しています。"
+
+#. Tag: title
+#: Security.xml:103
+#, no-c-format
+msgid "Writing an authentication method"
+msgstr "認証メソッドの記述"
+
+#. Tag: para
+#: Security.xml:104
+#, no-c-format
+msgid ""
+"The <literal>authenticate-method</literal> property specified for "
+"<literal>identity</literal> in <literal>components.xml</literal> specifies "
+"which method will be used by <literal>SeamLoginModule</literal> to "
+"authenticate users. This method takes no parameters, and is expected to "
+"return a boolean indicating whether authentication is successful or not. The "
+"user&#39;s username and password can be obtained from <literal>Identity."
+"instance().getUsername()</literal> and <literal>Identity.instance()."
+"getPassword()</literal>, respectively. Any roles that the user is a member "
+"of should be assigned using <literal>Identity.instance().addRole()</"
+"literal>. Here&#39;s a complete example of an authentication method inside a "
+"JavaBean component:"
+msgstr ""
+"<literal>components.xml</literal>中で、<literal>identity</literal>に特定され"
+"ている (紐付けされている) <literal>authenticate-method</literal>は"
+"<literal>SeamLoginModule</literal>がユーザの認証をするときに使用するメソッド"
+"<literal>components.xml</literal>中で、<literal>identity</literal>に特定され"
+"ている (紐付けされている) <literal>authenticate-method</literal>は"
+"<literal>SeamLoginModule</literal>がユーザの認証をするときに使用するメソッド"
+"を規定します。このメソッドはパラメータをとらず、認証の可否を示すブール値を返"
+"すよう期待されています。ユーザのusernameやpasswordは其々、<literal>Identity."
+"instance().getUsername()</literal> と<literal>Identity.instance()."
+"getPassword()</literal>で取得することができます。 また、ユーザが属するロー"
+"ルについては<literal>Identity.instance().addRole()</literal>により、付与"
+"することができます。 下に、Java Beanコンポーネント中の認証メソッドの完全な例"
+"を示します。"
+"すよう期待されています。ユーザのusernameやpasswordは其々、<literal>Identity."
+"instance().getUsername()</literal> と<literal>Identity.instance()."
+"getPassword()</literal>で取得することができます。 また、ユーザが属するロー"
+"ルについては<literal>Identity.instance().addRole()</literal>により、付与"
+"することができます。 下に、Java Beanコンポーネント中の認証メソッドの完全な例"
+"を示します。"
+
+#. Tag: programlisting
+#: Security.xml:107
+#, no-c-format
+msgid ""
+"@Name(\"authenticator\")\n"
+"public class Authenticator {\n"
+"   @In EntityManager entityManager;\n"
+"   \n"
+"   public boolean authenticate() {\n"
+"      try\n"
+"      {\n"
+"         User user = (User) entityManager.createQuery(\n"
+"            \"from User where username = :username and password = :password"
+"\")\n"
+"            .setParameter(\"username\", Identity.instance().getUsername())\n"
+"            .setParameter(\"password\", Identity.instance().getPassword())\n"
+"            .getSingleResult();\n"
+"\n"
+"         if (user.getRoles() != null)\n"
+"         {\n"
+"            for (UserRole mr : user.getRoles())\n"
+"               Identity.instance().addRole(mr.getName());\n"
+"         }\n"
+"\n"
+"         return true;\n"
+"      }\n"
+"      catch (NoResultException ex)\n"
+"      {\n"
+"         FacesMessages.instance().add(\"Invalid username/password\");\n"
+"         return false;\n"
+"      }\n"
+"      \n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+"@Name(\"authenticator\")\n"
+"public class Authenticator {\n"
+"   @In EntityManager entityManager;\n"
+"   \n"
+"   public boolean authenticate() {\n"
+"      try\n"
+"      {\n"
+"         User user = (User) entityManager.createQuery(\n"
+"            \"from User where username = :username and password = :password"
+"\")\n"
+"            .setParameter(\"username\", Identity.instance().getUsername())\n"
+"            .setParameter(\"password\", Identity.instance().getPassword())\n"
+"            .getSingleResult();\n"
+"\n"
+"         if (user.getRoles() != null)\n"
+"         {\n"
+"            for (UserRole mr : user.getRoles())\n"
+"               Identity.instance().addRole(mr.getName());\n"
+"         }\n"
+"\n"
+"         return true;\n"
+"      }\n"
+"      catch (NoResultException ex)\n"
+"      {\n"
+"         FacesMessages.instance().add(\"Invalid username/password\");\n"
+"         return false;\n"
+"      }\n"
+"      \n"
+"   }\n"
+"   \n"
+"}"
+
+#. Tag: para
+#: Security.xml:108
+#, no-c-format
+msgid ""
+"In the above example, both <literal>User</literal> and <literal>UserRole</"
+"literal> are application-specific entity beans. The <literal>roles</literal> "
+"parameter is populated with the roles that the user is a member of, which "
+"should be added to the <literal>Set</literal> as literal string values, e.g. "
+"\"admin\", \"user\". In this case, if the user record is not found and a "
+"<literal>NoResultException</literal> thrown, the authentication method "
+"returns <literal>false</literal> to indicate the authentication failed."
+msgstr ""
+"上記の例では、<literal>User</literal>と<literal>UserRole</literal>はアプリ"
+"ケーション独自のエンティティビーンとなっています。 パラメータ "
+"<literal>roles</literal> は \"admin\", \"user\" の様に文字列として、"
+"<literal>Set</literal>に追加されてゆく必要があります。 この例の場合、userが見"
+"付からずに<literal>NoResultException</literal>が投げられた場合には、認証メ"
+"ソッドは<literal>false</literal>を返して、認証が失敗したことを示します。"
+
+#. Tag: title
+#: Security.xml:111
+#, no-c-format
+msgid "Writing a login form"
+msgstr "ログインフォームの記述"
+
+#. Tag: para
+#: Security.xml:112
+#, no-c-format
+msgid ""
+"The <literal>Identity</literal> component provides both <literal>username</"
+"literal> and <literal>password</literal> properties, catering for the most "
+"common authentication scenario. These properties can be bound directly to "
+"the username and password fields on a login form. Once these properties are "
+"set, calling the <literal>identity.login()</literal> method will "
+"authenticate the user using the provided credentials. Here&#39;s an example "
+"of a simple login form:"
+msgstr ""
+"<literal>Identity</literal>コンポーネントは<literal>username</literal>と"
+"<literal>password</literal>プロパティを提供することにより、ほとんどの認証プロ"
+"セスに対応することができます。 これらのプロパティはログインフォームのusername"
+"とpasswordのフィールドに直接バインドすることができますので、これらのプロパ"
+"ティがセットされた後に<literal>identity.login()</literal>メソッドを呼び出す"
+"ことにより、設計者が組み込んだ認証システムに基づきユーザの認証をすることがで"
+"きます。 簡単なログインフォームの例を示します。"
+
+#. Tag: programlisting
+#: Security.xml:115
+#, no-c-format
+msgid ""
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"name\" value=\"Username\"/&gt;\n"
+"    &lt;h:inputText id=\"name\" value=\"#{identity.username}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"password\" value=\"Password\"/&gt;\n"
+"    &lt;h:inputSecret id=\"password\" value=\"#{identity.password}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;div&gt;\n"
+"    &lt;h:commandButton value=\"Login\" action=\"#{identity.login}\"/&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"name\" value=\"Username\"/&gt;\n"
+"    &lt;h:inputText id=\"name\" value=\"#{identity.username}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"password\" value=\"Password\"/&gt;\n"
+"    &lt;h:inputSecret id=\"password\" value=\"#{identity.password}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;div&gt;\n"
+"    &lt;h:commandButton value=\"Login\" action=\"#{identity.login}\"/&gt;\n"
+"&lt;/div&gt;"
+
+#. Tag: para
+#: Security.xml:116
+#, no-c-format
+msgid ""
+"Similarly, logging out the user is done by calling <literal>#{identity."
+"logout}</literal>. Calling this action will clear the security state of the "
+"currently authenticated user."
+msgstr ""
+"(loginと)同様にログアウトも、<literal>#{identity.logout}</literal>を呼び出"
+"すことにより実行されます。ログアウトを実行することにより、現在まで認証されて"
+"いたユーザのセキュリティの状態は破棄されます。"
+
+#. Tag: title
+#: Security.xml:119
+#, no-c-format
+msgid "Simplified Configuration - Summary"
+msgstr "簡単な設定 ー まとめ"
+
+#. Tag: para
+#: Security.xml:120
+#, no-c-format
+msgid "So to sum up, there are the three easy steps to configure authentication:"
+msgstr ""
+"まとめとして、認証システムを設定するためには、以下の3つのステップが必要とな"
+"ります。"
+
+#. Tag: para
+#: Security.xml:125
+#, no-c-format
+msgid "Configure an authentication method in <literal>components.xml</literal>."
+msgstr "認証メソッドを<literal>components.xml</literal>に設定する。"
+
+#. Tag: para
+#: Security.xml:130
+#, no-c-format
+msgid "Write an authentication method."
+msgstr "認証メソッドを記述する。"
+
+#. Tag: para
+#: Security.xml:135
+#, no-c-format
+msgid "Write a login form so that the user can authenticate."
+msgstr "ユーザを認証するためのログインフォームを記述する。"
+
+#. Tag: title
+#: Security.xml:140
+#, no-c-format
+msgid "Handling Security Exceptions"
+msgstr "セキュリティ例外の処理"
+
+#. Tag: para
+#: Security.xml:141
+#, no-c-format
+msgid ""
+"To prevent users from receiving the default error page in response to a "
+"security error, it&#39;s recommended that <literal>pages.xml</literal> is "
+"configured to redirect security errors to a more \"pretty\" page. The two "
+"main types of exceptions thrown by the security API are:"
+msgstr ""
+"セキュリティエラーが出た場合にユーザがデフォルトのエラーページを見ることのな"
+"い様 <literal>pages.xml</literal>を設定して、もう少しましなセキュリティエラー"
+"ページにリダイレクトすることが推奨されます。 セキュリティAPIが投げる主だった"
+"例外には下の2種類があります。"
+
+#. Tag: para
+#: Security.xml:146
+#, no-c-format
+msgid ""
+"<literal>NotLoggedInException</literal> - This exception is thrown if the "
+"user attempts to access a restricted action or page when they are not logged "
+"in."
+msgstr ""
+"<literal>NotLoggedInException</literal> - ユーザがログインすることなく、特定"
+"のページ閲覧、或は特定の操作を実行しようとしたときに投げられます。"
+
+#. Tag: para
+#: Security.xml:151
+#, no-c-format
+msgid ""
+"<literal>AuthorizationException</literal> - This exception is only thrown if "
+"the user is already logged in, and they have attempted to access a "
+"restricted action or page for which they do not have the necessary "
+"privileges."
+msgstr ""
+"<literal>AuthorizationException</literal> - ユーザが既にログインしていて、当"
+"該ユーザが許可されていないページの閲覧、或は操作を行おうとしたときに投げられ"
+"ます。"
+
+#. Tag: para
+#: Security.xml:156
+#, no-c-format
+msgid ""
+"In the case of a <literal>NotLoggedInException</literal>, it is recommended "
+"that the user is redirected to either a login or registration page so that "
+"they can log in. For an <literal>AuthorizationException</literal>, it may be "
+"useful to redirect the user to an error page. Here&#39;s an example of a "
+"<literal>pages.xml</literal> file that redirects both of these security "
+"exceptions:"
+msgstr ""
+"<literal>NotLoggedInException</literal>が投げられた場合には、ユーザはログイン"
+"ページ或は登録ページにリダイレクトされる事が推奨されます。 一方、"
+"<literal>AuthorizationException</literal>が投げられた場合には、 エ"
+"ラーページにリダイレクトされた方が良いでしょう。 これらのセキュリティエラーに"
+"対応するリダイレクトを記述した<literal>pages.xml</literal>の例を以下に示しま"
+"す。"
+
+#. Tag: programlisting
+#: Security.xml:159
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"\n"
+"    ...\n"
+"    \n"
+"    &lt;exception class=\"org.jboss.seam.security.NotLoggedInException"
+"\"&gt;\n"
+"        &lt;redirect view-id=\"/login.xhtml\"&gt;\n"
+"            &lt;message&gt;You must be logged in to perform this action&lt;/"
+"message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"    \n"
+"    &lt;exception class=\"org.jboss.seam.security.AuthorizationException"
+"\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"        &lt;redirect view-id=\"/security_error.xhtml\"&gt;\n"
+"            &lt;message&gt;\n"
+"                              You do not have the necessary security "
+"privileges to perform this action.\n"
+"            &lt;/message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"  \n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"\n"
+"    ...\n"
+"    \n"
+"    &lt;exception class=\"org.jboss.seam.security.NotLoggedInException"
+"\"&gt;\n"
+"        &lt;redirect view-id=\"/login.xhtml\"&gt;\n"
+"            &lt;message&gt;You must be logged in to perform this action&lt;/"
+"message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"    \n"
+"    &lt;exception class=\"org.jboss.seam.security.AuthorizationException"
+"\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"        &lt;redirect view-id=\"/security_error.xhtml\"&gt;\n"
+"            &lt;message&gt;\n"
+"                              You do not have the necessary security "
+"privileges to perform this action.\n"
+"            &lt;/message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"  \n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Security.xml:160
+#, no-c-format
+msgid ""
+"Most web applications require even more sophisticated handling of login "
+"redirection, so Seam includes some special functionality for handling this "
+"problem."
+msgstr ""
+"ほとんどのwebアプリケーションでは、より洗練されたログインリダイレクトを必要と"
+"しますが、Seamではこの様なケースに対応出来るような機能も持たせています。"
+
+#. Tag: title
+#: Security.xml:163
+#, no-c-format
+msgid "Login Redirection"
+msgstr "ログインリダイレクト"
+
+#. Tag: para
+#: Security.xml:164
+#, no-c-format
+msgid ""
+"You can ask Seam to redirect the user to a login screen when an "
+"unauthenticated user tries to access a particular view (or wildcarded view "
+"id) as follows:"
+msgstr ""
+"認証されていないユーザが特定のビュー(或はワイルドカードで指定された複数の"
+"ビュー)の閲覧をしようとした時に、Seamがユーザをログイン画面にリダイレクトす"
+"るようにするためには (<literal>pages.xml</literal>に) 下のように記述します。"
+
+#. Tag: programlisting
+#: Security.xml:167
+#, no-c-format
+msgid ""
+"&lt;pages login-view-id=\"/login.xhtml\"&gt;\n"
+"\n"
+"    &lt;page view-id=\"/members/*\" login-required=\"true\"/&gt;\n"
+"    \n"
+"    ...\n"
+"    \n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages login-view-id=\"/login.xhtml\"&gt;\n"
+"\n"
+"    &lt;page view-id=\"/members/*\" login-required=\"true\"/&gt;\n"
+"    \n"
+"    ...\n"
+"    \n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Security.xml:168
+#, no-c-format
+msgid ""
+"(This is less of a blunt instrument than the exception handler shown above, "
+"but should probably be used in conjunction with it.)"
+msgstr ""
+"(これは、前項までの例外処理に比べて少々ぶっきらぼうさを抑えた処理ですが、例外"
+"処理によるリダイレクトと組み合わせて使用すると良いでしょう)"
+
+#. Tag: para
+#: Security.xml:171
+#, no-c-format
+msgid ""
+"After the user logs in, we want to automatically send them back where they "
+"came from, so they can retry the action that required logging in. If you add "
+"the following event listeners to <literal>components.xml</literal>, attempts "
+"to access a restricted view while not logged in will be remembered, so that "
+"upon the user successfully logging in they will be redirected to the "
+"originally requested view, with any page parameters that existed in the "
+"original request."
+msgstr ""
+"ユーザがログインした後で、再度ログインし直したい場合に自動的に最初のページ"
+"(ユーザが入ってきたページ)戻したいような状況を考えてみましょう。 下の様に"
+"event listenerを<literal>components.xml</literal>に記述すると、ログインせずに"
+"制限されたページの閲覧した(閲覧に失敗した)ことを記憶させておいて、ユーザが"
+"再ログインして成功したときに、当初の要求時のページパラメータを基に当該ページ"
+"にリダイレクトさせることができます。"
+
+#. Tag: programlisting
+#: Security.xml:174
+#, no-c-format
+msgid ""
+"&lt;event type=\"org.jboss.seam.notLoggedIn\"&gt;\n"
+"    &lt;action expression=\"#{redirect.captureCurrentView}\"/&gt;\n"
+"&lt;/event&gt;\n"
+"    \n"
+"&lt;event type=\"org.jboss.seam.postAuthenticate\"&gt;\n"
+"    &lt;action expression=\"#{redirect.returnToCapturedView}\"/&gt;\n"
+"&lt;/event&gt;"
+msgstr ""
+"&lt;event type=\"org.jboss.seam.notLoggedIn\"&gt;\n"
+"    &lt;action expression=\"#{redirect.captureCurrentView}\"/&gt;\n"
+"&lt;/event&gt;\n"
+"    \n"
+"&lt;event type=\"org.jboss.seam.postAuthenticate\"&gt;\n"
+"    &lt;action expression=\"#{redirect.returnToCapturedView}\"/&gt;\n"
+"&lt;/event&gt;"
+
+#. Tag: para
+#: Security.xml:175
+#, no-c-format
+msgid ""
+"Note that login redirection is implemented as a conversation-scoped "
+"mechanism, so don&#39;t end the conversation in your <literal>authenticate()"
+"</literal> method."
+msgstr ""
+"ログインリダイレクトは対話スコープの中で実装されていますので、当該の対話ス"
+"コープを<literal>authenticate()</literal>メソッドで終了させないように注意し"
+"てください。"
+
+#. Tag: title
+#: Security.xml:178
+#, no-c-format
+msgid "Advanced Authentication Features"
+msgstr "高度な認証機能"
+
+#. Tag: para
+#: Security.xml:179
+#, no-c-format
+msgid ""
+"This section explores some of the advanced features provided by the security "
+"API for addressing more complex security requirements."
+msgstr ""
+"ここでは、より高度なセキュリティ要求に答えられる、セキュリティAPIで提供されて"
+"いる更に高度な機能について紹介します。"
+
+#. Tag: title
+#: Security.xml:182
+#, no-c-format
+msgid "Using your container&#39;s JAAS configuration"
+msgstr "コンテナのJAAS設定を利用する"
+
+#. Tag: para
+#: Security.xml:183
+#, no-c-format
+msgid ""
+"If you would rather not use the simplified JAAS configuration provided by "
+"the Seam Security API, you may instead delegate to the default system JAAS "
+"configuration by providing a <literal>jaasConfigName</literal> property in "
+"<literal>components.xml</literal>. For example, if you are using JBoss AS "
+"and wish to use the <literal>other</literal> policy (which uses the "
+"<literal>UsersRolesLoginModule</literal> login module provided by JBoss AS), "
+"then the entry in <literal>components.xml</literal> would look like this:"
+msgstr ""
+"Seam のセキュリティ API が提供する単純化された JAAS の設定を使用しないのであ"
+"れば、 <literal>components.xml</literal> に <literal>jaasConfigName</"
+"literal> プロパティを設定して、 デフォールトの JAAS の設定にセキュリティを任"
+"せることができます。 例えば、 JBossAS を使用していて、 <literal>other</"
+"literal> ポリシー (このポリシーは JBossAS 提供の "
+"<literal>UsersRolesLoginModule</literal> ログインモジュールを使用する) を利用"
+"したいのであれば、 以下のように <literal>components.xml</literal> を記述して"
+"ください。"
+
+#. Tag: programlisting
+#: Security.xml:186
+#, no-c-format
+msgid ""
+"&lt;security:identity authenticate-method=\"#{authenticator.authenticate}"
+"\" \n"
+"                      jaas-config-name=\"other\"/&gt;"
+msgstr ""
+"&lt;security:identity authenticate-method=\"#{authenticator.authenticate}"
+"\" \n"
+"                      jaas-config-name=\"other\"/&gt;"
+
+#. Tag: title
+#: Security.xml:187
+#, no-c-format
+msgid "Error Messages"
+msgstr "エラーメッセージ"
+
+#. Tag: para
+#: Security.xml:188
+#, no-c-format
+msgid ""
+"The security API produces a number of default faces messages for various "
+"security-related events. The following table lists the message keys that can "
+"be used to override these messages by specifying them in a <literal>message."
+"properties</literal> resource file."
+msgstr ""
+"セキュリティAPIはセキュリティに関するイベントについて、多くのデフォルトの"
+"フェースメッセージを生成します。下のメッセージキーの一覧表は、リソースファイ"
+"ルの<literal>message.properties</literal>で特定のメッセージを置き換えるのに利"
+"用できます。"
+
+#. Tag: title
+#: Security.xml:192
+#, no-c-format
+msgid "Security Message Keys"
+msgstr "セキュリティメッセージキー"
+
+#. Tag: literal
+#: Security.xml:200
+#, no-c-format
+msgid "org.jboss.seam.loginSuccessful"
+msgstr "org.jboss.seam.loginSuccessful"
+
+#. Tag: para
+#: Security.xml:204
+#, no-c-format
+msgid ""
+"This message is produced when a user successfully logs in via the security "
+"API."
+msgstr "セキュリティAPIを通して、無事ログイン出来たときに生成されます。"
+
+#. Tag: literal
+#: Security.xml:212
+#, no-c-format
+msgid "org.jboss.seam.loginFailed"
+msgstr "org.jboss.seam.loginFailed"
+
+#. Tag: para
+#: Security.xml:216
+#, no-c-format
+msgid ""
+"This message is produced when the login process fails, either because the "
+"user provided an incorrect username or password, or because authentication "
+"failed in some other way."
+msgstr ""
+"ユーザネーム、パスワードの組み合わせ、或は何らかの認証のエラーにより、ユーザ"
+"がログインに失敗したときに生成されます。"
+
+#. Tag: literal
+#: Security.xml:224
+#, no-c-format
+msgid "org.jboss.seam.NotLoggedIn"
+msgstr "org.jboss.seam.NotLoggedIn"
+
+#. Tag: para
+#: Security.xml:228
+#, no-c-format
+msgid ""
+"This message is produced when a user attempts to perform an action or access "
+"a page that requires a security check, and the user is not currently "
+"authenticated."
+msgstr ""
+"ユーザが認証されずにセキュリティチェックが必要な操作、あるいはページへのアク"
+"セスを試みたときに生成されます。"
+
+#. Tag: title
+#: Security.xml:236
+#, no-c-format
+msgid "Authorization"
+msgstr "認可"
+
+#. Tag: para
+#: Security.xml:237
+#, no-c-format
+msgid ""
+"There are a number of authorization features provided by the Seam Security "
+"API for securing access to components, component methods, and pages. This "
+"section describes each of these. An important thing to note is that if you "
+"wish to use any of the advanced features (such as rule-based permissions) "
+"then your <literal>components.xml</literal> must be configured to support "
+"this - see the Configuration section above."
+msgstr ""
+"SeamのセキュリティAPIは、コンポーネント、コンポーネントのメソッド、それにペー"
+"ジに対して多くの認可機能を提供します。 ここでは、其々の機能について説明しま"
+"す。 ここで説明するような高度なセキュリティ機能(ルールベースの認可のような)"
+"を使用する場合には<literal>components.xml</literal>に前述のような設定を記述し"
+"ておかなければならない、ということに留意してください。"
+
+#. Tag: title
+#: Security.xml:240
+#, no-c-format
+msgid "Core concepts"
+msgstr "核となる概念"
+
+#. Tag: para
+#: Security.xml:241
+#, no-c-format
+msgid ""
+"Each of the authorization mechanisms provided by the Seam Security API are "
+"built upon the concept of a user being granted roles and/or permissions. A "
+"role is a <emphasis>group</emphasis>, or <emphasis>type</emphasis>, of user "
+"that may have been granted certain privileges for performing one or more "
+"specific actions within an application. A permission on the other hand is a "
+"privilege (sometimes once-off) for performing a single, specific action. It "
+"is entirely possible to build an application using nothing but permissions, "
+"however roles offer a higher level of convenience when granting privileges "
+"to groups of users."
+msgstr ""
+"Seamの提供するセキュリティAPIによる認可のメカニズムは、ロールと許可の組み合わ"
+"せに基づいてユーザに認可を与えるというコンセプトに基づいて作られています。 "
+"ロールとは、ユーザの属する<emphasis>group</emphasis>あるいは<emphasis>type</"
+"emphasis>を意味し、そこに属していることにより、アプリケーション中で特定の操作"
+"をすることが認められます。 それに対し、パーミッション(許可)とは特定の一つの"
+"操作を、時には1回だけ、許可される事を意味します。 勿論、パーミッションだけを"
+"使って、アプリケーションを組むことは可能ですが、ロールはユーザの特定のグルー"
+"プに対する特権を、より簡単に、高次元のレベルで与えることができます。"
+
+#. Tag: para
+#: Security.xml:244
+#, no-c-format
+msgid ""
+"Roles are simple, consisting of only a name such as \"admin\", \"user\", "
+"\"customer\", etc. Permissions consist of both a name and an action, and are "
+"represented within this documentation in the form <literal>name:action</"
+"literal>, for example <literal>customer:delete</literal>, or "
+"<literal>customer:insert</literal>."
+msgstr ""
+"ロールとは単純に、 admin、 user とか customer といったような名前で与えられます。 "
+"一方、パーミッションは名前と操作の組み合わせで与えられ、 ここの説明では "
+"<literal>name:action</literal> (例えば、 <literal>customer:delete</literal>、 "
+"<literal>customer.insert</literal>) といった形式で表現しています。"
+
+#. Tag: title
+#: Security.xml:247
+#, no-c-format
+msgid "Securing components"
+msgstr "コンポーネントの安全性を確保する"
+
+#. Tag: para
+#: Security.xml:248
+#, no-c-format
+msgid ""
+"Let&#39;s start by examining the simplest form of authorization, component "
+"security, starting with the <literal>@Restrict</literal> annotation."
+msgstr ""
+"それでは、<literal>@Restrict</literal>アノテーションを使った、簡単なコンポー"
+"ネントのセキュリティから始めましょう。"
+
+#. Tag: title
+#: Security.xml:251
+#, no-c-format
+msgid "The @Restrict annotation"
+msgstr "@Restrictアノテーション"
+
+#. Tag: para
+#: Security.xml:252
+#, no-c-format
+msgid ""
+"Seam components may be secured either at the method or the class level, "
+"using the <literal>@Restrict</literal> annotation. If both a method and "
+"it&#39;s declaring class are annotated with <literal>@Restrict</literal>, "
+"the method restriction will take precedence (and the class restriction will "
+"not apply). If a method invocation fails a security check, then an exception "
+"will be thrown as per the contract for <literal>Identity.checkRestriction()</"
+"literal> (see Inline Restrictions). A <literal>@Restrict</literal> on just "
+"the component class itself is equivalent to adding <literal>@Restrict</"
+"literal> to each of its methods."
+msgstr ""
+"Seamのコンポーネントは、<literal>@Restrict</literal>アノテーションを使って、"
+"メソッドあるいはクラスのレベルでセキュリティを確保します。 もし、クラスと、そ"
+"こに含まれるメソッドの両方に<literal>@Restrict</literal>アノテーションがあっ"
+"た場合には、メソッドの制約が優先され、クラスに対する制約は適用されません。 も"
+"し、メソッドがセキュリティのチェックで失敗した場合には、<literal>Idetity."
+"checkRestriction()</literal>により、例外エラーが投げられます。 (Inline "
+"Restriction参照)。 クラスに対する<literal>@Restrict</literal>は、そこに含ま"
+"れる全てのメソッドに<literal>@Restrict</literal>をつけた事と同じことです。"
+
+#. Tag: para
+#: Security.xml:255
+#, no-c-format
+msgid ""
+"An empty <literal>@Restrict</literal> implies a permission check of "
+"<literal>componentName:methodName</literal>. Take for example the following "
+"component method:"
+msgstr ""
+"空の<literal>@Restrict</literal>は<literal>component:methodName</literal>を意"
+"味します。 下のようなコンポーネントの例を見てみましょう。"
+
+#. Tag: programlisting
+#: Security.xml:258
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class AccountAction {\n"
+"    @Restrict public void delete() {\n"
+"      ...\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"account\")\n"
+"public class AccountAction {\n"
+"    @Restrict public void delete() {\n"
+"      ...\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Security.xml:259
+#, no-c-format
+msgid ""
+"In this example, the implied permission required to call the <literal>delete"
+"()</literal> method is <literal>account:delete</literal>. The equivalent of "
+"this would be to write <literal>@Restrict(\"#{s:hasPermission(&#39;"
+"account&#39;,&#39;delete&#39;,null)}\")</literal>. Now let&#39;s look at "
+"another example:"
+msgstr ""
+"この例の場合、<literal>delete()</literal>の実行に必要なパーミッションは"
+"<literal>acount:delete</literal>となります。同じ事は<literal>@Restrict(\"#"
+"{s:hasPermission('account','delete',null)}\")</literal>と明示的に記述する"
+"ことができます。 更に、別の例を見てみましょう。"
+
+#. Tag: programlisting
+#: Security.xml:262
+#, no-c-format
+msgid ""
+"@Restrict @Name(\"account\")\n"
+"public class AccountAction {\n"
+"    public void insert() {\n"
+"      ...\n"
+"    }\n"
+"    @Restrict(\"#{s:hasRole(&#39;admin&#39;)}\") \n"
+"    public void delete() {\n"
+"      ...\n"
+"    }\n"
+"}"
+msgstr ""
+"@Restrict @Name(\"account\")\n"
+"public class AccountAction {\n"
+"    public void insert() {\n"
+"      ...\n"
+"    }\n"
+"    @Restrict(\"#{s:hasRole(&#39;admin&#39;)}\") \n"
+"    public void delete() {\n"
+"      ...\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Security.xml:263
+#, no-c-format
+msgid ""
+"This time, the component class itself is annotated with <literal>@Restrict</"
+"literal>. This means that any methods without an overriding "
+"<literal>@Restrict</literal> annotation require an implicit permission "
+"check. In the case of this example, the <literal>insert()</literal> method "
+"requires a permission of <literal>account:insert</literal>, while the "
+"<literal>delete()</literal> method requires that the user is a member of the "
+"<literal>admin</literal> role."
+msgstr ""
+"ここでは、コンポーネントクラスが<literal>@Restrict</literal>とアノテーション"
+"が付記されています。これは、`Restrictがオーバーライドされない限り、パーミッ"
+"ションのチェックが暗示的に要求されることを示しています。この例の場合、"
+"<literal>insert()</literal>は<literal>account:insert</literal>のパーミッショ"
+"ンを必要とし、<literal>delete()</literal>はユーザが<literal>admin</literal>"
+"ロールに属していることが必要な事を示しています。"
+
+#. Tag: para
+#: Security.xml:266
+#, no-c-format
+msgid ""
+"Before we go any further, let&#39;s address the <literal>#{s:hasRole()}</"
+"literal> expression seen in the above example. Both <literal>s:hasRole</"
+"literal> and <literal>s:hasPermission</literal> are EL functions, which "
+"delegate to the correspondingly named methods of the <literal>Identity</"
+"literal> class. These functions can be used within any EL expression "
+"throughout the entirety of the security API."
+msgstr ""
+"先に進む前に、上記の例にある<literal>#{s:hasRole()}</literal>について見てお"
+"きましょう。<literal>s:hasRole</literal>も<literal>s:hasPermission</literal>"
+"もEL関数で、対応する<literal>Identity</literal>クラスのメソッドを示していま"
+"す。 これらの関数は全てのセキュリティAPIのEL式で使用することができます。"
+
+#. Tag: para
+#: Security.xml:269
+#, no-c-format
+msgid ""
+"Being an EL expression, the value of the <literal>@Restrict</literal> "
+"annotation may reference any objects that exist within a Seam context. This "
+"is extremely useful when performing permission checks for a specific object "
+"instance. Look at this example:"
+msgstr ""
+"EL式とすることで、<literal>@Restrict</literal>アノテーションは、Seamコンテキ"
+"スト中のどのようなオブジェクトの値でも参照することが出来るようになります。 こ"
+"れは、特定のオブジェクトのインスタンスをチェックしてパーミッションを決定する"
+"場合に非常に有効な方法です。下の例を見てみましょう。"
+
+#. Tag: programlisting
+#: Security.xml:272
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class AccountAction {\n"
+"    @In Account selectedAccount;\n"
+"    @Restrict(\"#{s:hasPermission(&#39;account&#39;,&#39;modify&#39;,"
+"selectedAccount)}\")\n"
+"    public void modify() {\n"
+"        selectedAccount.modify();\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"account\")\n"
+"public class AccountAction {\n"
+"    @In Account selectedAccount;\n"
+"    @Restrict(\"#{s:hasPermission(&#39;account&#39;,&#39;modify&#39;,"
+"selectedAccount)}\")\n"
+"    public void modify() {\n"
+"        selectedAccount.modify();\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Security.xml:273
+#, no-c-format
+msgid ""
+"The interesting thing to note from this example is the reference to "
+"<literal>selectedAccount</literal> seen within the <literal>hasPermission()</"
+"literal> function call. The value of this variable will be looked up from "
+"within the Seam context, and passed to the <literal>hasPermission()</"
+"literal> method in <literal>Identity</literal>, which in this case can then "
+"determine if the user has the required permission for modifying the "
+"specified <literal>Account</literal> object."
+msgstr ""
+"ここで興味深いのは、<literal>hasPermission()</literal>というファンクション中"
+"で<literal>selectedAccout</literal>を参照している事です。 この変数の値はSeam"
+"のコンテキスト中で検索され、<literal>Identity</literal>の"
+"<literal>hasPermission()</literal>に渡され、この例の場合、特定の"
+"<literal>Account</literal>のオブジェクトに対する変更許可を持っているかを決定"
+"しています。"
+
+#. Tag: title
+#: Security.xml:276
+#, no-c-format
+msgid "Inline restrictions"
+msgstr "インラインによる制約"
+
+#. Tag: para
+#: Security.xml:277
+#, no-c-format
+msgid ""
+"Sometimes it might be desirable to perform a security check in code, without "
+"using the <literal>@Restrict</literal> annotation. In this situation, simply "
+"use <literal>Identity.checkRestriction()</literal> to evaluate a security "
+"expression, like this:"
+msgstr ""
+"時として、<literal>@Restrict</literal>アノテーションを使わずに、コードでセ"
+"キュリティチェックを行いたい場合があるかもしれません。この様な場合には、下の"
+"ように<literal>Identity.checkRestriction()</literal>を使って、セキュリティ式"
+"を評価することができます。"
+
+#. Tag: programlisting
+#: Security.xml:280
+#, no-c-format
+msgid ""
+"public void deleteCustomer() {\n"
+"    Identity.instance().checkRestriction(\"#{s:hasPermission(&#39;"
+"customer&#39;,&#39;delete&#39;,\n"
+"      selectedCustomer)}\");\n"
+"}"
+msgstr ""
+"public void deleteCustomer() {\n"
+"    Identity.instance().checkRestriction(\"#{s:hasPermission(&#39;"
+"customer&#39;,&#39;delete&#39;,\n"
+"      selectedCustomer)}\");\n"
+"}"
+
+#. Tag: para
+#: Security.xml:281
+#, no-c-format
+msgid ""
+"If the expression specified doesn&#39;t evaluate to <literal>true</literal>, "
+"either"
+msgstr "もし、評価の結果が<literal>true</literal>でなかった場合、"
+
+#. Tag: para
+#: Security.xml:286
+#, no-c-format
+msgid ""
+"if the user is not logged in, a <literal>NotLoggedInException</literal> "
+"exception is thrown or"
+msgstr "ユーザがログインしていなかったのであれば、NotLoggedInExceptionが投げられ、"
+
+#. Tag: para
+#: Security.xml:291
+#, no-c-format
+msgid ""
+"if the user is logged in, an <literal>AuthorizationException</literal> "
+"exception is thrown."
+msgstr "ユーザがログインしていた場合には、AuthorizationExceptionが投げられます。"
+
+#. Tag: para
+#: Security.xml:296
+#, no-c-format
+msgid ""
+"It is also possible to call the <literal>hasRole()</literal> and "
+"<literal>hasPermission()</literal> methods directly from Java code:"
+msgstr ""
+"また、下のようにJavaコードから直接<literal>hasRole()</literal>や"
+"<literal>hasPermission()</literal>メソッドを呼ぶこともできます。"
+
+#. Tag: programlisting
+#: Security.xml:299
+#, no-c-format
+msgid ""
+"if (!Identity.instance().hasRole(\"admin\"))\n"
+"     throw new AuthorizationException(\"Must be admin to perform this action"
+"\");\n"
+"\n"
+"if (!Identity.instance().hasPermission(\"customer\", \"create\", null))\n"
+"     throw new AuthorizationException(\"You may not create new customers\");"
+msgstr ""
+"if (!Identity.instance().hasRole(\"admin\"))\n"
+"     throw new AuthorizationException(\"Must be admin to perform this action"
+"\");\n"
+"\n"
+"if (!Identity.instance().hasPermission(\"customer\", \"create\", null))\n"
+"     throw new AuthorizationException(\"You may not create new customers\");"
+
+#. Tag: title
+#: Security.xml:300
+#, no-c-format
+msgid "Security in the user interface"
+msgstr "ユーザインターフェースのセキュリティ"
+
+#. Tag: para
+#: Security.xml:301
+#, no-c-format
+msgid ""
+"One indication of a well designed user interface is that the user is not "
+"presented with options for which they don&#39;t have the necessary "
+"privileges to use. Seam Security allows conditional rendering of either 1) "
+"sections of a page or 2) individual controls, based upon the privileges of "
+"the user, using the very same EL expressions that are used for component "
+"security."
+msgstr ""
+"うまくデザインされたユーザインターフェースでは、当該ユーザが利用する権限を持"
+"たない物は見せないようにします。 Seamのセキュリティ機構は、コンポーネントのセ"
+"キュリティで使用したのと同様のEL式を使って、ページの部分あるいは個別の操作に"
+"ついて、表示/非表示をコントロールすることができます。"
+
+#. Tag: para
+#: Security.xml:304
+#, no-c-format
+msgid ""
+"Let&#39;s take a look at some examples of interface security. First of all, "
+"let&#39;s pretend that we have a login form that should only be rendered if "
+"the user is not already logged in. Using the <literal>identity.isLoggedIn()</"
+"literal> property, we can write this:"
+msgstr ""
+"インターフェースのセキュリティの例についてみてみましょう。 まず、ユーザがログ"
+"インしていない場合に限ってログイン画面が表示される場合を考えてみます。 "
+"<literal>identity.isLoggedIn()</literal>プロパティを使って、下のように記述"
+"することができます。"
+
+#. Tag: programlisting
+#: Security.xml:307
+#, no-c-format
+msgid "&lt;h:form class=\"loginForm\" rendered=\"#{not identity.loggedIn}\"&gt;"
+msgstr "&lt;h:form class=\"loginForm\" rendered=\"#{not identity.loggedIn}\"&gt;"
+
+#. Tag: para
+#: Security.xml:308
+#, no-c-format
+msgid ""
+"If the user isn&#39;t logged in, then the login form will be rendered - very "
+"straight forward so far. Now let&#39;s pretend there is a menu on the page "
+"that contains some actions which should only be accessible to users in the "
+"<literal>manager</literal> role. Here&#39;s one way that these could be "
+"written:"
+msgstr ""
+"ユーザがログインしていなければログインフォームが描画されます。 それで"
+"は、<literal>manager</literal>のロールを持つユーザに対してのみ操作が認められ"
+"ている項目を含むようなメニューの場合を考えてみましょう。 (マネージャー以外に"
+"はその項目が表示されないことが必要) この様な場合、下のように記述することがで"
+"きます。"
+
+#. Tag: programlisting
+#: Security.xml:311
+#, no-c-format
+msgid ""
+"&lt;h:outputLink action=\"#{reports.listManagerReports}\" rendered=\"#{s:"
+"hasRole(&#39;manager&#39;)}\"&gt;\n"
+"    Manager Reports\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+"&lt;h:outputLink action=\"#{reports.listManagerReports}\" rendered=\"#{s:"
+"hasRole(&#39;manager&#39;)}\"&gt;\n"
+"    Manager Reports\n"
+"&lt;/h:outputLink&gt;"
+
+#. Tag: para
+#: Security.xml:312
+#, no-c-format
+msgid ""
+"This is also quite straight forward. If the user is not a member of the "
+"<literal>manager</literal> role, then the outputLink will not be rendered. "
+"The <literal>rendered</literal> attribute can generally be used on the "
+"control itself, or on a surrounding <literal>&lt;s:div&gt;</literal> or "
+"<literal>&lt;s:span&gt;</literal> control."
+msgstr ""
+"これも、大変シンプルで、ユーザが<literal>manager</literal>ロールを持っていな"
+"ければ、outputLinkは描画されません。<literal>rendered</literal>属性は一般に制"
+"御そのものに使われたり、<literal>&lt;s:div&gt;</literal> や <literal>&lt;s:"
+"span&gt;</literal>の中で制御の目的に使われます。"
+
+#. Tag: para
+#: Security.xml:315
+#, no-c-format
+msgid ""
+"Now for something more complex. Let&#39;s say you have a <literal>h:"
+"dataTable</literal> control on a page listing records for which you may or "
+"may not wish to render action links depending on the user&#39;s privileges. "
+"The <literal>s:hasPermission</literal> EL function allows us to pass in an "
+"object parameter which can be used to determine whether the user has the "
+"requested permission for that object or not. Here&#39;s how a dataTable with "
+"secured links might look:"
+msgstr ""
+"さて、それではもう少し複雑な例として、<literal>h:dataTable</literal>で、ユー"
+"ザの権限によりアクションリンクの表示、非表示を管理したい場合を考えてみましょ"
+"う。 EL関数、<literal>s:hasPermission</literal>はオブジェクトをパラメータとし"
+"て受け付ける機能を持っており、それにより特定のオブジェクトに対するユーザの権"
+"限を評価することが可能となります。 下に、dataTableに対し保護されたリンクを設"
+"定する例を示します。"
+
+#. Tag: programlisting
+#: Security.xml:318
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{clients}\" var=\"cl\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Name&lt;/f:facet&gt;\n"
+"        #{cl.name}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;City&lt;/f:facet&gt;\n"
+"        #{cl.city}\n"
+"    &lt;/h:column&gt;   \n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"        &lt;s:link value=\"Modify Client\" action=\"#{clientAction.modify}"
+"\"\n"
+"                rendered=\"#{s:hasPermission(&#39;client&#39;,&#39;"
+"modify&#39;,cl)\"/&gt;\n"
+"        &lt;s:link value=\"Delete Client\" action=\"#{clientAction.delete}"
+"\"\n"
+"                rendered=\"#{s:hasPermission(&#39;client&#39;,&#39;"
+"delete&#39;,cl)\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+"&lt;h:dataTable value=\"#{clients}\" var=\"cl\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Name&lt;/f:facet&gt;\n"
+"        #{cl.name}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;City&lt;/f:facet&gt;\n"
+"        #{cl.city}\n"
+"    &lt;/h:column&gt;   \n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"        &lt;s:link value=\"Modify Client\" action=\"#{clientAction.modify}"
+"\"\n"
+"                rendered=\"#{s:hasPermission(&#39;client&#39;,&#39;"
+"modify&#39;,cl)\"/&gt;\n"
+"        &lt;s:link value=\"Delete Client\" action=\"#{clientAction.delete}"
+"\"\n"
+"                rendered=\"#{s:hasPermission(&#39;client&#39;,&#39;"
+"delete&#39;,cl)\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+
+#. Tag: title
+#: Security.xml:319
+#, no-c-format
+msgid "Securing pages"
+msgstr "ページ単位のセキュリティ"
+
+#. Tag: para
+#: Security.xml:320
+#, no-c-format
+msgid ""
+"Page security requires that the application is using a <literal>pages.xml</"
+"literal> file, however is extremely simple to configure. Simply include a "
+"<literal>&lt;restrict/&gt;</literal> element within the <literal>page</"
+"literal> elements that you wish to secure. By default, if a value is not "
+"provided for the <literal>restrict</literal> element, an implied permission "
+"of <literal>{viewId}:render</literal> will be checked for whenever accessing "
+"that page. Otherwise the value will be evaluated as a standard security "
+"expression. Here&#39;s a couple of examples:"
+msgstr ""
+"ページ単位のセキュリティのコントロールはアプリケーションが<literal>pages."
+"xml</literal>を利用していないと使えませんが、設定は非常に簡単です。 "
+"<literal>pages.xml</literal>中で、セキュリティを確保したい<literal>page</"
+"literal>エレメントに対し<literal>&lt;restrict/&gt;</literal>要素を"
+"加えるだけです。 <literal>restrict</literal>要素に対し値が与えられていない場"
+"合には、<literal>{viewId}:render</literal> がデフォルトとして評価され、アクセ"
+"スの可否を決定します。 値が与えれれた場合には、通常のセキュリティの評価と同様"
+"に評価されます。下に、いくつかの例を示します。"
+
+#. Tag: programlisting
+#: Security.xml:323
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/settings.xhtml\"&gt;\n"
+"    &lt;restrict/&gt;\n"
+"&lt;/page&gt;\n"
+"        \n"
+"&lt;page view-id=\"/reports.xhtml\"&gt;    \n"
+"    &lt;restrict&gt;#{s:hasRole(&#39;admin&#39;)}&lt;/restrict&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page view-id=\"/settings.xhtml\"&gt;\n"
+"    &lt;restrict/&gt;\n"
+"&lt;/page&gt;\n"
+"        \n"
+"&lt;page view-id=\"/reports.xhtml\"&gt;    \n"
+"    &lt;restrict&gt;#{s:hasRole(&#39;admin&#39;)}&lt;/restrict&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Security.xml:324
+#, no-c-format
+msgid ""
+"In the above example, the first page has an implied permission restriction "
+"of <literal>/settings.xhtml:render</literal>, while the second one checks "
+"that the user is a member of the <literal>admin</literal> role."
+msgstr ""
+"上の1番目の例では、<literal>/settings.xhtml:render</literal>という暗黙の制約"
+"がかけられており、また、2番目の例ではユーザが<literal>admin</literal>のロー"
+"ルに属するか否かのチェックが行われています。"
+
+#. Tag: title
+#: Security.xml:327
+#, no-c-format
+msgid "Securing Entities"
+msgstr "エンティティのセキュリティ"
+
+#. Tag: para
+#: Security.xml:328
+#, no-c-format
+msgid ""
+"Seam security also makes it possible to apply security restrictions to read, "
+"insert, update and delete actions for entities."
+msgstr ""
+"Seamのセキュリティは、エンティティ単位でのread,insert,update及びdelete操作に"
+"対してのセキュリティ制約をかけることを可能にしています。"
+
+#. Tag: para
+#: Security.xml:331
+#, no-c-format
+msgid ""
+"To secure all actions for an entity class, add a <literal>@Restrict</"
+"literal> annotation on the class itself:"
+msgstr ""
+"エンティティクラスのアクション全部に対してセキュリティをかけたいのであれば、"
+"下のようにクラスに<literal>@Restrict</literal>アノテーションを付記します。"
+
+#. Tag: programlisting
+#: Security.xml:334
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"customer\")\n"
+"@Restrict\n"
+"public class Customer {\n"
+"  ...\n"
+"}"
+msgstr ""
+"@Entity\n"
+"@Name(\"customer\")\n"
+"@Restrict\n"
+"public class Customer {\n"
+"  ...\n"
+"}"
+
+#. Tag: para
+#: Security.xml:335
+#, no-c-format
+msgid ""
+"If no expression is specified in the <literal>@Restrict</literal> "
+"annotation, the default security check that is performed is a permission "
+"check of <literal>entityName:action</literal>, where <literal>entityName</"
+"literal> is the Seam component name of the entity (or the fully-qualified "
+"class name if no @Name is specified), and the <literal>action</literal> is "
+"either <literal>read</literal>, <literal>insert</literal>, <literal>update</"
+"literal> or <literal>delete</literal>."
+msgstr ""
+"もし、<literal>@Restrict</literal>が評価式無しで付記されていれば、デフォルト"
+"として<literal>entityName:action</literal>がチェックされます。ここで、"
+"<literal>entityName</literal>は当該エンティティの名前 (あるいは@Entityアノ"
+"テーションがなければ、クラスの名前) で、<literal>action</literal> は "
+"<literal>read</literal>, <literal>insert</literal>, <literal>update</"
+"literal> あるいは <literal>delete</literal>のいずれかです。"
+
+#. Tag: para
+#: Security.xml:338
+#, no-c-format
+msgid ""
+"It is also possible to only restrict certain actions, by placing a "
+"<literal>@Restrict</literal> annotation on the relevent entity lifecycle "
+"method (annotated as follows):"
+msgstr ""
+"また、下のようにエンティティのライフサイクルに<literal>@Restrict</literal> ア"
+"ノテーションを付記することにより、特定の操作だけに制約を課すことが出来ます。"
+
+#. Tag: para
+#: Security.xml:343
+#, no-c-format
+msgid ""
+"<literal>@PostLoad</literal> - Called after an entity instance is loaded "
+"from the database. Use this method to configure a <literal>read</literal> "
+"permission."
+msgstr ""
+"<literal>@PostLoad</literal> - エンティティのインスタンスがデータベースから"
+"ロードされた後に呼び出される。このメソッドは<literal>read</literal> パーミッ"
+"ションの設定に使用する。"
+
+#. Tag: para
+#: Security.xml:348
+#, no-c-format
+msgid ""
+"<literal>@PrePersist</literal> - Called before a new instance of the entity "
+"is inserted. Use this method to configure an <literal>insert</literal> "
+"permission."
+msgstr ""
+"<literal>@PrePersist</literal> - エンティティの新規のインスタンスが (データ"
+"ベースに)挿入される前に呼び出される。 このメソッドは<literal>insert</"
+"literal> パーミッションの設定に使用する。"
+
+#. Tag: para
+#: Security.xml:353
+#, no-c-format
+msgid ""
+"<literal>@PreUpdate</literal> - Called before an entity is updated. Use this "
+"method to configure an <literal>update</literal> permission."
+msgstr ""
+"<literal>@PreUpdate</literal> - エンティティが更新される前に呼び出される。 こ"
+"のメソッドは<literal>update</literal>パーミッションの設定に使用する。"
+
+#. Tag: para
+#: Security.xml:358
+#, no-c-format
+msgid ""
+"<literal>@PreRemove</literal> - Called before an entity is deleted. Use this "
+"method to configure a <literal>delete</literal> permission."
+msgstr ""
+"<literal>@PreRemove</literal> - エンティティが削除される前に呼び出される。 こ"
+"のメソッドは<literal>delete</literal>パーミッションの設定に使用する。"
+
+#. Tag: para
+#: Security.xml:363
+#, no-c-format
+msgid ""
+"Here&#39;s an example of how an entity would be configured to perform a "
+"security check for any <literal>insert</literal> operations. Please note "
+"that the method is not required to do anything, the only important thing in "
+"regard to security is how it is annotated:"
+msgstr ""
+"以下に、あるエンティティへの全ての<literal>insert</literal>操作に対してセキュ"
+"リティチェックを実行する為の設定の例を示します。この例では、セキュリティにつ"
+"いて「どのようにアノテーションを付記するのか」を示しているだけですので、メ"
+"ソッドは何もしていない事に留意してください。"
+
+#. Tag: programlisting
+#: Security.xml:366
+#, no-c-format
+msgid ""
+"@PrePersist @Restrict\n"
+"  public void prePersist() {}"
+msgstr ""
+"@PrePersist @Restrict\n"
+"  public void prePersist() {}"
+
+#. Tag: para
+#: Security.xml:367
+#, no-c-format
+msgid ""
+"And here&#39;s an example of an entity permission rule that checks if the "
+"authenticated user is allowed to insert a new <literal>MemberBlog</literal> "
+"record (from the seamspace example). The entity for which the security check "
+"is being made is automatically asserted into the working memory (in this "
+"case <literal>MemberBlog</literal>):"
+msgstr ""
+"ここでは、seamspaceサンプルコードから、認証されたユーザが新規の"
+"<literal>MemberBlog</literal>を挿入することが許可されているのか、をチェックす"
+"るエンティティパーミッションルールの例を見てみます。 セキュリティチェックの対"
+"象となるエンティティ (この例の場合) <literal>MemberBlog</literal>が自動的に"
+"ワーキングメモリにアサートされます。"
+
+#. Tag: programlisting
+#: Security.xml:370
+#, no-c-format
+msgid ""
+"rule InsertMemberBlog\n"
+"  no-loop\n"
+"  activation-group \"permissions\"  \n"
+"when\n"
+"  check: PermissionCheck(name == \"memberBlog\", action == \"insert\", "
+"granted == false)\n"
+"  Principal(principalName : name)\n"
+"  MemberBlog(member : member -&gt; (member.getUsername().equals"
+"(principalName)))\n"
+"then\n"
+"  check.grant();\n"
+"end;"
+msgstr ""
+"rule InsertMemberBlog\n"
+"  no-loop\n"
+"  activation-group \"permissions\"  \n"
+"when\n"
+"  check: PermissionCheck(name == \"memberBlog\", action == \"insert\", "
+"granted == false)\n"
+"  Principal(principalName : name)\n"
+"  MemberBlog(member : member -&gt; (member.getUsername().equals"
+"(principalName)))\n"
+"then\n"
+"  check.grant();\n"
+"end;"
+
+#. Tag: para
+#: Security.xml:371
+#, no-c-format
+msgid ""
+"This rule will grant the permission <literal>memberBlog:insert</literal> if "
+"the currently authenticated user (indicated by the <literal>Principal</"
+"literal> fact) has the same name as the member for which the blog entry is "
+"being created. The \"<literal>name : name</literal>\" structure that can be "
+"seen in the <literal>Principal</literal> fact (and other places) is a "
+"variable binding - it binds the <literal>name</literal> property of the "
+"<literal>Principal</literal> to a variable called <literal>name</literal>. "
+"Variable bindings allow the value to be referred to in other places, such as "
+"the following line which compares the member&#39;s username to the "
+"<literal>Principal</literal> name. For more details, please refer to the "
+"JBoss Rules documentation."
+msgstr ""
+"このルールでは<literal>Principal</literal>で示される認証されているユーザが、"
+"ブログのエントリを作成したメンバーと同じ名前であれば、<literal>memberBlog:"
+"insert</literal>のパーミッションを与えます。\"<literal>name : name</literal>"
+"\"という構造は、<literal>Principal</literal>ファクトやそのほかの所でも見られ"
+"る変数結合で、<literal>name</literal>変数に<literal>Principal</literal>の"
+"<literal>name</literal>プロパティを結合します。 変数結合は、次の行の、メン"
+"バーのusernameと<literal>Principal</literal>の比較 (マッチング) の様な所で、"
+"値を参照することを可能にします。 詳細については、JBoss Rules のドキュメンテー"
+"ションを参照してください。"
+
+#. Tag: para
+#: Security.xml:374
+#, no-c-format
+msgid ""
+"Finally, we need to install a listener class that integrates Seam security "
+"with your JPA provider."
+msgstr ""
+"最後に、JPAプロバイダーをSeamセキュリティと統合するために、リスナークラスをイ"
+"ンストールします。"
+
+#. Tag: title
+#: Security.xml:377
+#, no-c-format
+msgid "Entity security with JPA"
+msgstr "JPAでのエンティティセキュリティ"
+
+#. Tag: para
+#: Security.xml:378
+#, no-c-format
+msgid ""
+"Security checks for EJB3 entity beans are performed with an "
+"<literal>EntityListener</literal>. You can install this listener by using "
+"the following <literal>META-INF/orm.xml</literal> file:"
+msgstr ""
+"EJB3エンティティビーンのセキュリティチェックは<literal>EntityListener</"
+"literal>により行われ、下記のような<literal>META-INF/orm.xml</literal>の設定で"
+"リスナーをインストールすることが出来ます。"
+
+#. Tag: programlisting
+#: Security.xml:381
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;entity-mappings xmlns=\"http://java.sun.com/xml/ns/persistence/orm\"\n"
+"                 xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"                 xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence/"
+"orm \n"
+"                                            http://java.sun.com/xml/ns/"
+"persistence/orm_1_0.xsd\"\n"
+"                 version=\"1.0\"&gt;\n"
+"                 \n"
+"    &lt;persistence-unit-metadata&gt;\n"
+"        &lt;persistence-unit-defaults&gt;\n"
+"            &lt;entity-listeners&gt;\n"
+"                &lt;entity-listener class=\"org.jboss.seam.security."
+"EntitySecurityListener\"/&gt;\n"
+"            &lt;/entity-listeners&gt;\n"
+"        &lt;/persistence-unit-defaults&gt;\n"
+"    &lt;/persistence-unit-metadata&gt;\n"
+"    \n"
+"&lt;/entity-mappings&gt;"
+msgstr ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;entity-mappings xmlns=\"http://java.sun.com/xml/ns/persistence/orm\"\n"
+"                 xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"                 xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence/"
+"orm \n"
+"                                            http://java.sun.com/xml/ns/"
+"persistence/orm_1_0.xsd\"\n"
+"                 version=\"1.0\"&gt;\n"
+"                 \n"
+"    &lt;persistence-unit-metadata&gt;\n"
+"        &lt;persistence-unit-defaults&gt;\n"
+"            &lt;entity-listeners&gt;\n"
+"                &lt;entity-listener class=\"org.jboss.seam.security."
+"EntitySecurityListener\"/&gt;\n"
+"            &lt;/entity-listeners&gt;\n"
+"        &lt;/persistence-unit-defaults&gt;\n"
+"    &lt;/persistence-unit-metadata&gt;\n"
+"    \n"
+"&lt;/entity-mappings&gt;"
+
+#. Tag: title
+#: Security.xml:382
+#, no-c-format
+msgid "Entity security with Hibernate"
+msgstr "Hibernateでのエンティティセキュリティ"
+
+#. Tag: para
+#: Security.xml:383
+#, no-c-format
+msgid ""
+"If you are using a Hibernate <literal>SessionFactory</literal> configured "
+"via Seam, you don&#39;t need to do anything special to use entity security."
+msgstr ""
+"SeamでHibernateの<literal>SessionFactory</literal>を使っているのであれば、エ"
+"ンティティセキュリティの為に特別な設定をする必要はありません。"
+
+#. Tag: title
+#: Security.xml:386
+#, no-c-format
+msgid "Writing Security Rules"
+msgstr "セキュリティルールの記述"
+
+#. Tag: para
+#: Security.xml:387
+#, no-c-format
+msgid ""
+"Up to this point there has been a lot of mention of permissions, but no "
+"information about how permissions are actually defined or granted. This "
+"section completes the picture, by explaining how permission checks are "
+"processed, and how to implement permission checks for a Seam application."
+msgstr ""
+"今まで、いろいろとパーミッションについて述べてきましたが、このパーミッション"
+"について、どのように定義するのか、また受容されるのかについては述べてきません"
+"でした。 この項ではどのようにパーミッションのチェックが行われるのか、またSeam"
+"アプリケーションにどのようにパーミッションを実装するのかについて説明し、セ"
+"キュリティの章の最後とします。"
+
+#. Tag: title
+#: Security.xml:390
+#, no-c-format
+msgid "Permissions Overview"
+msgstr "パーミッションについての概要"
+
+#. Tag: para
+#: Security.xml:391
+#, no-c-format
+msgid ""
+"So how does the security API know whether a user has the <literal>customer:"
+"modify</literal> permission for a specific customer? Seam Security provides "
+"quite a novel method for determining user permissions, based on JBoss Rules. "
+"A couple of the advantages of using a rule engine are 1) a centralized "
+"location for the business logic that is behind each user permission, and 2) "
+"speed - JBoss Rules uses very efficient algorithms for evaluating large "
+"numbers of complex rules involving multiple conditions."
+msgstr ""
+"特定のユーザが<literal>customer:modify</literal>のパーミッションを持っている"
+"のか否か、セキュリティAPIはどのようにして知るのでしょうか? Seamのセキュリ"
+"ティはJBoss Ruleに基づいた大変ユニークな方法で、ユーザのパーミッションを決定"
+"しています。 ルールエンジンを使うことのメリットは、1)個々のユーザのパーミッ"
+"ションを決定しているビジネスロジックを集中管理することが出来る、2)複雑な条"
+"件の基においてもJBossRuleは効率的にスピーディに処理することが出来る、事にあり"
+"ます。"
+
+#. Tag: title
+#: Security.xml:394
+#, no-c-format
+msgid "Configuring a rules file"
+msgstr "ルールファイルの設定"
+
+#. Tag: para
+#: Security.xml:395
+#, no-c-format
+msgid ""
+"Seam Security expects to find a <literal>RuleBase</literal> component called "
+"<literal>securityRules</literal> which it uses to evaluate permission "
+"checks. This is configured in <literal>components.xml</literal> as follows:"
+msgstr ""
+"Seamセキュリティはパーミッションのチェックに使用するための"
+"<literal>securityRules</literal>と呼ばれる<literal>RuleBase</literal>を検索し"
+"て使用します。 このファイルは<literal>components.xml</literal>に下のように記"
+"述、設定します。"
+
+#. Tag: programlisting
+#: Security.xml:398
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:security=\"http://jboss.com/products/seam/security\"\n"
+"            xmlns:drools=\"http://jboss.com/products/seam/drools\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                                              http://jboss.com/products/seam/"
+"core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components \n"
+"                                              http://jboss.com/products/seam/"
+"components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/drools \n"
+"                                              http://jboss.com/products/seam/"
+"drools-1.2.xsd\"\n"
+"                 http://jboss.com/products/seam/security \n"
+"                                              http://jboss.com/products/seam/"
+"security-1.2.xsd\"&gt;                 \n"
+"        \n"
+"   &lt;drools:rule-base name=\"securityRules\"&gt;\n"
+"       &lt;drools:rule-files&gt;\n"
+"           &lt;value&gt;/META-INF/security.drl&lt;/value&gt;\n"
+"       &lt;/drools:rule-files&gt;\n"
+"   &lt;/drools:rule-base&gt;    \n"
+"   \n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:security=\"http://jboss.com/products/seam/security\"\n"
+"            xmlns:drools=\"http://jboss.com/products/seam/drools\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                                              http://jboss.com/products/seam/"
+"core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components \n"
+"                                              http://jboss.com/products/seam/"
+"components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/drools \n"
+"                                              http://jboss.com/products/seam/"
+"drools-1.2.xsd\"\n"
+"                 http://jboss.com/products/seam/security \n"
+"                                              http://jboss.com/products/seam/"
+"security-1.2.xsd\"&gt;                 \n"
+"        \n"
+"   &lt;drools:rule-base name=\"securityRules\"&gt;\n"
+"       &lt;drools:rule-files&gt;\n"
+"           &lt;value&gt;/META-INF/security.drl&lt;/value&gt;\n"
+"       &lt;/drools:rule-files&gt;\n"
+"   &lt;/drools:rule-base&gt;    \n"
+"   \n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Security.xml:399
+#, no-c-format
+msgid ""
+"Once the <literal>RuleBase</literal> component is configured, it&#39;s time "
+"to write the security rules."
+msgstr "RuleBaseが設定できましたら、セキュリティルールの記述に進みましょう。"
+
+#. Tag: title
+#: Security.xml:402
+#, no-c-format
+msgid "Creating a security rules file"
+msgstr "セキュリティルールファイルの作成"
+
+#. Tag: para
+#: Security.xml:403
+#, no-c-format
+msgid ""
+"For this step you need to create a file called <literal>security.drl</"
+"literal> in the <literal>/META-INF</literal> directory of your "
+"application&#39;s jar file. In actual fact this file can be called anything "
+"you want, and exist in any location as long as it is configured "
+"appropriately in <literal>components.xml</literal>."
+msgstr ""
+"まづ、アプリケーションの/META-INFの下に<literal>security.drl</literal>という"
+"ファイルを作成してください。 実際には、このファイル名は<literal>security."
+"drl</literal>である必要は無く、<literal>components.xml</literal>の記述と一致"
+"していれば、何でもかまいません。"
+
+#. Tag: para
+#: Security.xml:406
+#, no-c-format
+msgid ""
+"So what should the security rules file contain? At this stage it might be a "
+"good idea to at least skim through the JBoss Rules documentation, however to "
+"get started here&#39;s an extremely simple example:"
+msgstr ""
+"次に設定ファイルの内容について。この時点では、JBoss Ruleのドキュメントから拝"
+"借してくるのが手っ取り早いでしょうが、ここでは、下の様な最も単純な例から始め"
+"てみましょう。"
+
+#. Tag: programlisting
+#: Security.xml:409
+#, no-c-format
+msgid ""
+"package MyApplicationPermissions;\n"
+"\n"
+"import org.jboss.seam.security.PermissionCheck;\n"
+"import org.jboss.seam.security.Role;\n"
+"\n"
+"rule CanUserDeleteCustomers\n"
+"when\n"
+"  c: PermissionCheck(name == \"customer\", action == \"delete\")\n"
+"  Role(name == \"admin\")\n"
+"then\n"
+"  c.grant();\n"
+"end;"
+msgstr ""
+"package MyApplicationPermissions;\n"
+"\n"
+"import org.jboss.seam.security.PermissionCheck;\n"
+"import org.jboss.seam.security.Role;\n"
+"\n"
+"rule CanUserDeleteCustomers\n"
+"when\n"
+"  c: PermissionCheck(name == \"customer\", action == \"delete\")\n"
+"  Role(name == \"admin\")\n"
+"then\n"
+"  c.grant();\n"
+"end;"
+
+#. Tag: para
+#: Security.xml:410
+#, no-c-format
+msgid ""
+"Let&#39;s break this down. The first thing we see is the package "
+"declaration. A package in JBoss Rules is essentially a collection of rules. "
+"The package name can be anything you want - it doesn&#39;t relate to "
+"anything else outside the scope of the rule base."
+msgstr ""
+"このサンプルについて一行づつ見てゆきましょう。 まず、パッケージ宣言。"
+"JBossRuleのパッケージはルールの集まりで、ルールベース以外の所には関係してきま"
+"せんので、どのようなパッケージ名であってもかまいません。"
+
+#. Tag: para
+#: Security.xml:413
+#, no-c-format
+msgid ""
+"The next thing we can notice is a couple of import statements for the "
+"<literal>PermissionCheck</literal> and <literal>Role</literal> classes. "
+"These imports inform the rules engine that we&#39;ll be referencing these "
+"classes within our rules."
+msgstr ""
+"次に、PermissionCheckとRoleクラスのインポートで、これらは、ルールエンジンに対"
+"して、ルールの中でこれらのクラスを参照することを表わしています。"
+
+#. Tag: para
+#: Security.xml:416
+#, no-c-format
+msgid ""
+"Finally we have the code for the rule. Each rule within a package should be "
+"given a unique name (usually describing the purpose of the rule). In this "
+"case our rule is called <literal>CanUserDeleteCustomers</literal> and will "
+"be used to check whether a user is allowed to delete a customer record."
+msgstr ""
+"そして、ルールの記述コード。其々のルールは、ルールごとにユニークな名前が与え"
+"られている必要があります (通常は、ルールの目的をルールの名前にします。) この"
+"例の場合、<literal>CanUserDeleteCustomers</literal>がルールの名前で、読んで字"
+"の如く、顧客レコードの削除を出来るか出来ないかのチェックに使用します。"
+
+#. Tag: para
+#: Security.xml:419
+#, no-c-format
+msgid ""
+"Looking at the body of the rule definition we can notice two distinct "
+"sections. Rules have what is known as a left hand side (LHS) and a right "
+"hand side (RHS). The LHS consists of the conditional part of the rule, i.e. "
+"a list of conditions which must be satisfied for the rule to fire. The LHS "
+"is represented by the <literal>when</literal> section. The RHS is the "
+"consequence, or action section of the rule that will only be fired if all of "
+"the conditions in the LHS are met. The RHS is represented by the "
+"<literal>then</literal> section. The end of the rule is denoted by the "
+"<literal>end;</literal> line."
+msgstr ""
+"ルールの記述が2つの部分から成っている事がわかります。ルールは左部分 (LHS) と"
+"右部分 (RHS) として知られている部分から成り立っています。LHSは条件 (即ち、こ"
+"の条件を満たしていれば、、、) を規定しています。 LHSは<literal>when</literal>"
+"で表されるセクションにあり、また、RHSはLHSが満たされた場合に実行されるアク"
+"ション、あるいは結果を記述しています。 RHSは<literal>then</literal>以降の部分"
+"に記述します。 また、ルールの最後は<literal>end;</literal>で終了します。"
+
+#. Tag: para
+#: Security.xml:422
+#, no-c-format
+msgid ""
+"If we look at the LHS of the rule, we see two conditions listed there. "
+"Let&#39;s examine the first condition:"
+msgstr ""
+"ルールのLHS部分を見てみると、二つの条件が記述されています。 まづ、最初の部分"
+"について詳細に見てみましょう。"
+
+#. Tag: programlisting
+#: Security.xml:425
+#, no-c-format
+msgid "c: PermissionCheck(name == \"customer\", action == \"delete\")"
+msgstr "c: PermissionCheck(name == \"customer\", action == \"delete\")"
+
+#. Tag: para
+#: Security.xml:426
+#, no-c-format
+msgid ""
+"In plain english, this condition is stating that there must exist a "
+"<literal>PermissionCheck</literal> object with a <literal>name</literal> "
+"property equal to \"customer\", and an <literal>action</literal> property "
+"equal to \"delete\" within the working memory. What is the working memory? "
+"It is a session-scoped object that contains the contextual information that "
+"is required by the rules engine to make a decision about a permission check. "
+"Each time the <literal>hasPermission()</literal> method is called, a "
+"temporary <literal>PermissionCheck</literal> object, or <emphasis>Fact</"
+"emphasis>, is asserted into the working memory. This "
+"<literal>PermissionCheck</literal> corresponds exactly to the permission "
+"that is being checked, so for example if you call <literal>hasPermission"
+"(\"account\", \"create\", null)</literal> then a <literal>PermissionCheck</"
+"literal> object with a <literal>name</literal> equal to \"account\" and "
+"<literal>action</literal> equal to \"create\" will be asserted into the "
+"working memory for the duration of the permission check."
+msgstr ""
+"この条件は、ワーキングメモリ中で<literal>name</literal>プロパティがcustomerで"
+"あり、<literal>action</literal>プロパティがdeleteである"
+"<literal>PermissionCheck</literal>オブジェクトが存在していなければならない事"
+"を示しています。 ワーキングメモリとは、セッションスコープのオブジェクトで、"
+"ルールエンジンがパーミッションチェックをするために必要なコンテキスト情報を所"
+"有している物の事を言います。<literal>hasPermission()</literal>メソッドが呼ば"
+"れる度に<literal>PermissionCheck</literal>オブジェクト、 あるいは "
+"<emphasis>Fact</emphasis> がワーキングメモリ中に保持されます。 この"
+"<literal>PermissionCheck</literal>はチェックされるパーミッションに完全に対応"
+"します。 即ち、<literal>haPermission(\"account\", \"create\", null)</literal>"
+"が呼ばれると、パーミッションのチェックが終了するまでの間、<literal>name</"
+"literal>がaccountで<literal>action</literal>がcreateである"
+"<literal>PermissionCheck</literal>オブジェクトがワーキングメモリに保持されま"
+"す。"
+
+#. Tag: para
+#: Security.xml:429
+#, no-c-format
+msgid ""
+"So what else is in the working memory? Besides the short-lived temporary "
+"facts asserted during a permission check, there are some longer-lived "
+"objects in the working memory that stay there for the entire duration of a "
+"user being authenticated. These include any <literal>java.security."
+"Principal</literal> objects that are created as part of the authentication "
+"process, plus a <literal>org.jboss.seam.security.Role</literal> object for "
+"each of the roles that the user is a member of. It is also possible to "
+"assert additional long-lived facts into the working memory by calling "
+"<literal>RuleBasedIdentity.instance().getSecurityContext().assertObject()</"
+"literal>, passing the object as a parameter."
+msgstr ""
+"ワーキングメモリには、パーミッションチェックが実行される間保持される"
+"PermissionCheck以外に、認証されたユーザが存在する間、存在する小さなオブジェク"
+"トがあります。これらには、認証プロセスで生成された<literal>java.security."
+"Principal</literal>や、当該ユーザが属するロールについての<literal>org.jboss."
+"seam.security.Role</literal> (複数) があります。 また、パラメータとして"
+"<literal>Identity.instance().getSecurityContext().assertObject()</literal>に"
+"オブジェクトを渡すことにより、他のオブジェクトをワーキングメモリ中に保持する"
+"こともできます。"
+
+#. Tag: para
+#: Security.xml:432
+#, no-c-format
+msgid ""
+"Getting back to our simple example, we can also notice that the first line "
+"of our LHS is prefixed with <literal>c:</literal>. This is a variable "
+"binding, and is used to refer back to the object that is matched by the "
+"condition. Moving onto the second line of our LHS, we see this:"
+msgstr ""
+"先の例に戻り、LHSがc:で始まっていることに気がつくと思います。 これは、変数結"
+"合を表しており、条件のマッチングに利用されるオブジェクトへの参照を意味してい"
+"ます。 LHSの2行目には下の記述があります。"
+
+#. Tag: programlisting
+#: Security.xml:435
+#, no-c-format
+msgid "Role(name == \"admin\")"
+msgstr "Role(name == \"admin\")"
+
+#. Tag: para
+#: Security.xml:436
+#, no-c-format
+msgid ""
+"This condition simply states that there must be a <literal>Role</literal> "
+"object with a <literal>name</literal> of \"admin\" within the working "
+"memory. As mentioned, user roles are asserted into the working memory as "
+"long-lived facts. So, putting both conditions together, this rule is "
+"essentially saying \"I will fire if you are checking for the "
+"<literal>customer:delete</literal> permission and the user is a member of "
+"the <literal>admin</literal> role\"."
+msgstr ""
+"これは、単純にワーキングメモリ中の<literal>Role</literal>オブジェクトにadmin"
+"という名前の<literal>name</literal>がなければならない事を示しています。 先に"
+"述べたように、ユーザのロールはワーキングメモリ中に保持されています。 従って、"
+"これらの条件を合わせると「貴方が、<literal>admin</literal>ロールのメンバー"
+"で、且つ<literal>customer:delete</literal>についての許可を持っているかチェッ"
+"クします」と言っていることになります。"
+
+#. Tag: para
+#: Security.xml:439
+#, no-c-format
+msgid ""
+"So what is the consequence of the rule firing? Let&#39;s take a look at the "
+"RHS of the rule:"
+msgstr "そして、ルールが適用された結果を、ルールのRHSの部分に見てゆきましょう。"
+
+#. Tag: programlisting
+#: Security.xml:442
+#, no-c-format
+msgid "c.grant()"
+msgstr "c.grant()"
+
+#. Tag: para
+#: Security.xml:443
+#, no-c-format
+msgid ""
+"The RHS consists of Java code, and in this case is invoking the "
+"<literal>grant()</literal> method of the <literal>c</literal> object, which "
+"as already mentioned is a variable binding for the <literal>PermissionCheck</"
+"literal> object. Besides the <literal>name</literal> and <literal>action</"
+"literal> properties of the <literal>PermissionCheck</literal> object, there "
+"is also a <literal>granted</literal> property which is initially set to "
+"<literal>false</literal>. Calling <literal>grant()</literal> on a "
+"<literal>PermissionCheck</literal> sets the <literal>granted</literal> "
+"property to <literal>true</literal>, which means that the permission check "
+"was successful, allowing the user to carry out whatever action the "
+"permission check was intended for."
+msgstr ""
+"RHSはJavaコードから成っており、この例の場合は<literal>c</literal>というオブ"
+"ジェクト (既に述べたように、<literal>PermissionCheck</literal>オブジェクトへ"
+"の変数結合) の<literal>grant()</literal>メソッドが起動されます。"
+"<literal>PermissionCheck</literal>オブジェクトの<literal>name</literal>と"
+"<literal>action</literal>プロパティ以外に<literal>false</literal>に初期設定さ"
+"れた<literal>granted</literal>プロパティが存在します。"
+"<literal>PermissionCheck</literal>の<literal>grant()</literal>を呼ぶことによ"
+"り、<literal>granted</literal>プロパティは<literal>true</literal>にセットさ"
+"れ、パーミッションのチェックが成功し、ユーザはパーミッションで決められたアク"
+"ションについて実行することが出来るようになります。"
+
+#. Tag: title
+#: Security.xml:446
+#, no-c-format
+msgid "Wildcard permission checks"
+msgstr "ワイルドカードのパーミッションチェック"
+
+#. Tag: para
+#: Security.xml:447
+#, no-c-format
+msgid ""
+"It is possible to implement a wildcard permission check (which allows all "
+"actions for a given permission name), by omitting the <literal>action</"
+"literal> constraint for the <literal>PermissionCheck</literal> in your rule, "
+"like this:"
+msgstr ""
+"ワイルドカードを使ってパーミッションチェックを設定することも可能で、これはあ"
+"るパーミッション名に対して全ての操作を許可します。下のようにルールの"
+"<literal>PermissionCheck</literal>の<literal>action</literal>制約を省略するこ"
+"とにより、実装出来ます。"
+
+#. Tag: programlisting
+#: Security.xml:450
+#, no-c-format
+msgid ""
+"rule CanDoAnythingToCustomersIfYouAreAnAdmin\n"
+"when\n"
+"  c: PermissionCheck(name == \"customer\")\n"
+"  Role(name == \"admin\")\n"
+"then\n"
+"  c.grant();\n"
+"end;"
+msgstr ""
+"rule CanDoAnythingToCustomersIfYouAreAnAdmin\n"
+"when\n"
+"  c: PermissionCheck(name == \"customer\")\n"
+"  Role(name == \"admin\")\n"
+"then\n"
+"  c.grant();\n"
+"end;"
+
+#. Tag: para
+#: Security.xml:451
+#, no-c-format
+msgid ""
+"This rule allows users with the <literal>admin</literal> role to perform "
+"<emphasis>any</emphasis> action for any <literal>customer</literal> "
+"permission check."
+msgstr ""
+"上記のルールでは、<literal>admin</literal>ロールを持つユーザは、どの"
+"<literal>customer</literal>に対しても、<emphasis>any</emphasis>操作が可能な"
+"パーミッションチェックになっています。"
+
+#. Tag: title
+#: Security.xml:454
+#, no-c-format
+msgid "SSL Security"
+msgstr "SSLによるセキュリティ"
+
+#. Tag: para
+#: Security.xml:455
+#, no-c-format
+msgid ""
+"Seam includes basic support for serving sensitive pages via the HTTPS "
+"protocol. This is easily configured by specifying a <literal>scheme</"
+"literal> for the page in <literal>pages.xml</literal>. The following example "
+"shows how the view <literal>/login.xhtml</literal> is configured to use "
+"HTTPS:"
+msgstr ""
+"SeamはHTTPSプロトコルによるpageのセキュリティを基本的な部分についてサポートし"
+"ています。 この機能は、<literal>pages.xml</literal>で必要なページについて"
+"<literal>scheme</literal>を指定することにより簡単に設定することができます。 "
+"下の例では<literal>/login.xhtml</literal>でHTTPSを使う様に設定しています。"
+
+#. Tag: programlisting
+#: Security.xml:458
+#, no-c-format
+msgid "&lt;page view-id=\"/login.xhtml\" scheme=\"https\"&gt;"
+msgstr "&lt;page view-id=\"/login.xhtml\" scheme=\"https\"&gt;"
+
+#. Tag: para
+#: Security.xml:459
+#, no-c-format
+msgid ""
+"This configuration is automatically extended to both <literal>s:link</"
+"literal> and <literal>s:button</literal> JSF controls, which (when "
+"specifying the <literal>view</literal>) will also render the link using the "
+"correct protocol. Based on the previous example, the following link will use "
+"the HTTPS protocol because <literal>/login.xhtml</literal> is configured to "
+"use it:"
+msgstr ""
+"また、この設定は自動的にJSFの<literal>s:link</literal>や<literal>s:button</"
+"literal>にも引き継がれ (<literal>view</literal>で指定した場合) 、リンクも正し"
+"いプロトコルで描画されます。前述の例の場合、下のようなリンクも<literal>/"
+"login.xhtml</literal>がHTTPSを使うように設定されているために、<literal>s:"
+"link</literal>先の<literal>login.xhmtl</literal>にもHTTPSがプロトコルとして使"
+"用されます。"
+
+#. Tag: programlisting
+#: Security.xml:462
+#, no-c-format
+msgid "&lt;s:link view=\"/login.xhtml\" value=\"Login\"/&gt;"
+msgstr "&lt;s:link view=\"/login.xhtml\" value=\"Login\"/&gt;"
+
+#. Tag: para
+#: Security.xml:463
+#, no-c-format
+msgid ""
+"Browsing directly to a view when using the <emphasis>incorrect</emphasis> "
+"protocol will cause a redirect to the same view using the <emphasis>correct</"
+"emphasis> protocol. For example, browsing to a page that has <literal>scheme="
+"\"https\"</literal> using HTTP will cause a redirect to the same page using "
+"HTTPS."
+msgstr ""
+"指定されたプロトコル以外 (<emphasis>正しくない</emphasis>プロトコル) を使っ"
+"て、ページを見ようとすると、<emphasis>正しい</emphasis>プロトコルを使って、指"
+"定のページへリダイレクトされます。 <literal>schema=\"https\"</literal>が指定"
+"されているページにhttpでアクセスしようとすると、そのページにhttpsを使ってリダ"
+"イレクトされます。"
+
+#. Tag: para
+#: Security.xml:466
+#, no-c-format
+msgid ""
+"It is also possible to configure a default <literal>scheme</literal> for all "
+"pages. This is actually quite important, as you might only wish to use HTTPS "
+"for a few pages, and if no default scheme is specified then the default "
+"behavior is to continue using the current scheme. What this means is that "
+"once you enter a page with HTTPS, then HTTPS will continue to be used even "
+"if you navigate away to other non-HTTPS pages (a bad thing!). So it is "
+"strongly recommended to include a default <literal>scheme</literal>, by "
+"configuring it on the default (<literal>\"*\"</literal>) view:"
+msgstr ""
+"全てのページに対して <literal>schema</literal> をデフォルトとして設定すること"
+"も可能です。 限られたページにだけ HTTPS を設定したい場合などに特に重要となり"
+"ます。 デフォルトのスキーム設定がされていないと、 現在のスキーマを使用して継"
+"続するのがデフォルトの動作になります。 つまり、 HTTPS でページを閲覧すると、 "
+"他の HTTPS ページではないページに移動しても HTTPS が継続して使用されることに"
+"なります(よくない動作)。 このため、 デフォルト (<literal>\"*\"</literal>) "
+"ビューで設定を行いデフォルトの <literal>scheme</literal> を含むようにすること"
+"を推奨します。 (デフォルトの <literal>scehma</literal> をワイルドカードを使っ"
+"て、<literal>\"*\"</literal>として設定しておくことをお勧めします。)"
+
+#. Tag: programlisting
+#: Security.xml:469
+#, no-c-format
+msgid "&lt;page view-id=\"*\" scheme=\"http\"&gt;"
+msgstr "&lt;page view-id=\"*\" scheme=\"http\"&gt;"
+
+#. Tag: para
+#: Security.xml:470
+#, no-c-format
+msgid ""
+"Of course, if <emphasis>none</emphasis> of the pages in your application use "
+"HTTPS then it is not required to specify a default scheme."
+msgstr ""
+"勿論、HTTPSを使う必要がなければ、デフォルトのschemaを指定する必要もありませ"
+"ん。"
+
+#. Tag: title
+#: Security.xml:473
+#, no-c-format
+msgid "Implementing a Captcha Test"
+msgstr "キャプチャテストの実装"
+
+#. Tag: para
+#: Security.xml:474
+#, no-c-format
+msgid ""
+"Though strictly not part of the security API, it might be useful in certain "
+"circumstances (such as new user registrations, posting to a public blog or "
+"forum) to implement a Captcha (<emphasis>C</emphasis>ompletely <emphasis>A</"
+"emphasis>utomated <emphasis>P</emphasis>ublic <emphasis>T</emphasis>uring "
+"test to tell <emphasis>C</emphasis>omputers and <emphasis>H</emphasis>umans "
+"<emphasis>A</emphasis>part) to prevent automated bots from interacting with "
+"your application. Seam provides seamless integration with JCaptcha, an "
+"excellent library for generating Captcha challenges. If you wish to use the "
+"captcha feature in your application you need to include the jcaptcha-* jar "
+"file from the Seam lib directory in your project, and register it in "
+"<literal>application.xml</literal> as a java module."
+msgstr ""
+"厳密にはセキュリティAPIの一部ではありませんが、アプリケーションを自動ロボット"
+"との不必要なインターアクションから守るために、キャプチャ(<emphasis>C</"
+"emphasis>ompletely <emphasis>A</emphasis>utomated <emphasis>P</"
+"emphasis>ublic <emphasis>T</emphasis>uring test to tell <emphasis>C</"
+"emphasis>omputers and <emphasis>H</emphasis>umans <emphasis>A</"
+"emphasis>part)を実装することは、新規ユーザ登録や、公開ブログ、フォーラム等の"
+"場合には意味のあることです。 Seamは非常に優れた、キャプチャチャレンジを生成す"
+"るライブラリーJCaptchaとの統合を実現しています。 キャプチャ機能を利用する場合"
+"には、Seamのライブラリのディレクトリから、jcaptcha-*.jarをアプリケーションに"
+"コピーして、<literal>application.xml</literal>にJava モジュールとして登録して"
+"ください。"
+
+#. Tag: title
+#: Security.xml:477
+#, no-c-format
+msgid "Configuring the Captcha Servlet"
+msgstr "キャプチャサーブレットの設定"
+
+#. Tag: para
+#: Security.xml:478
+#, no-c-format
+msgid ""
+"To get up and running, it is necessary to configure the Seam Resource "
+"Servlet, which will provide the Captcha challenge images to your pages. This "
+"requires the following entry in <literal>web.xml</literal>:"
+msgstr ""
+"キャプチャを起動して走らせる為には、Seamの Resourece Servlet を下のように、"
+"<literal>web.xml</literal>に設定する必要があります。これにより、アプリケー"
+"ションのページにキャプチャチャレンジのイメージを提供するようになります。"
+
+#. Tag: programlisting
+#: Security.xml:481
+#, no-c-format
+msgid ""
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"    \n"
+"&lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+msgstr ""
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"    \n"
+"&lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+
+#. Tag: title
+#: Security.xml:482
+#, no-c-format
+msgid "Adding a Captcha to a page"
+msgstr "ページにキャプチャを追加する"
+
+#. Tag: para
+#: Security.xml:483
+#, no-c-format
+msgid ""
+"Adding a captcha challenge to a page is extremely easy. Seam provides a page-"
+"scoped component, <literal>captcha</literal>, which provides everything that "
+"is required, including built-in captcha validation. Here&#39;s an example:"
+msgstr ""
+"ページにキャプチャチャレンジを追加するのはいたって簡単です。 Seamは"
+"<literal>captcha</literal>というページスコープのコンポーネントを提供してお"
+"り、キャプチャのバリデーションを含むキャプチャ処理に必要な全ての機能を提供し"
+"ています。"
+
+#. Tag: programlisting
+#: Security.xml:486
+#, no-c-format
+msgid ""
+"&lt;div&gt;\n"
+"    &lt;h:graphicImage value=\"/seam/resource/captcha?#{captcha.id}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"  \n"
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"verifyCaptcha\"&gt;Enter the above letters&lt;/h:"
+"outputLabel&gt;\n"
+"    &lt;h:inputText id=\"verifyCaptcha\" value=\"#{captcha.response}\" "
+"required=\"true\"/&gt;\n"
+"    &lt;div class=\"validationError\"&gt;&lt;h:message for=\"verifyCaptcha\"/"
+"&gt;&lt;/div&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+"&lt;div&gt;\n"
+"    &lt;h:graphicImage value=\"/seam/resource/captcha?#{captcha.id}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"  \n"
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"verifyCaptcha\"&gt;Enter the above letters&lt;/h:"
+"outputLabel&gt;\n"
+"    &lt;h:inputText id=\"verifyCaptcha\" value=\"#{captcha.response}\" "
+"required=\"true\"/&gt;\n"
+"    &lt;div class=\"validationError\"&gt;&lt;h:message for=\"verifyCaptcha\"/"
+"&gt;&lt;/div&gt;\n"
+"&lt;/div&gt;"
+
+#. Tag: para
+#: Security.xml:487
+#, no-c-format
+msgid ""
+"That&#39;s all there is to it. The <literal>graphicImage</literal> control "
+"displays the Captcha challenge, and the <literal>inputText</literal> "
+"receives the user&#39;s response. The response is automatically validated "
+"against the Captcha when the form is submitted."
+msgstr ""
+"上の様に設定することにより、<literal>graphicImage</literal>がキャプチャチャレ"
+"ンジの表示をコントロールし、<literal>inputText</literal>がユーザからの回答を"
+"受け取り、フォームが送信された時に自動的にキャプチャと照合されます。"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Spring.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Spring.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Spring.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,667 @@
+# translation of Spring.po to Japanese
+# Noriko Mizumoto <noriko at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Spring\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-30 01:52+0000\n"
+"PO-Revision-Date: 2007-10-31 12:28+1000\n"
+"Last-Translator: Noriko Mizumoto <noriko at redhat.com>\n"
+"Language-Team: Japanese <fedora-trans-ja at redhat.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Spring.xml:6
+#, no-c-format
+msgid "Spring Framework integration"
+msgstr "Spring Framework 統合"
+
+#. Tag: para
+#: Spring.xml:7
+#, no-c-format
+msgid ""
+"The Spring integration module allows easy migration of Spring-based projects "
+"to Seam and allows Spring applications to take advantage of key Seam "
+"features like conversations and Seam&#39;s more sophisticated persistence "
+"context management."
+msgstr ""
+"Spring 統合モジュールにより、 SpringベースのプロジェクトをSeamに容易に移行で"
+"きるようになるため、 対話のみならず Seam の各種の高度な永続コンテキスト管理な"
+"ど Seam の主要な機能を Springアプリケーションが 利用できるようになります。"
+
+#. Tag: para
+#: Spring.xml:10
+#, no-c-format
+msgid "Seam&#39;s support for Spring provides the ability to:"
+msgstr "Spring に対する Seam のサポートにより次のようなことが可能になります。"
+
+#. Tag: para
+#: Spring.xml:15
+#, no-c-format
+msgid "inject Seam component instances into Spring beans"
+msgstr "Seam コンポーネントインスタンスを Spring bean にインジェクトする"
+
+#. Tag: para
+#: Spring.xml:20
+#, no-c-format
+msgid "inject Spring beans into Seam components"
+msgstr "Spring bean を Seam コンポーネントにインジェクトする"
+
+#. Tag: para
+#: Spring.xml:25
+#, no-c-format
+msgid "turn Spring beans into Seam components"
+msgstr "Spring bean を Seam コンポーネントに変換する"
+
+#. Tag: para
+#: Spring.xml:30
+#, no-c-format
+msgid "allow Spring beans to live in any Seam context"
+msgstr "Spring bean を Seam コンテキストに配置できるようにする"
+
+#. Tag: para
+#: Spring.xml:35
+#, no-c-format
+msgid "start a spring WebApplicationContext with a Seam component"
+msgstr "Seam コンポーネント で Spring Web アプリケーションを起動する"
+
+#. Tag: title
+#: Spring.xml:41
+#, no-c-format
+msgid "Injecting Seam components into Spring beans"
+msgstr "Seam コンポーネントを Spring bean にインジェクトする"
+
+#. Tag: para
+#: Spring.xml:42
+#, no-c-format
+msgid ""
+"Injecting Seam component instances into Spring beans is accomplished using "
+"the <literal>&lt;seam:instance/&gt;</literal> namespace handler. To enable "
+"the Seam namespace handler, the Seam namespace must be added to the Spring "
+"beans definition file:"
+msgstr ""
+"Seam コンポーネントインスタンスの Spring bean へのインジェクションは、 "
+"<literal>&lt;seam:instance/&gt;</literal> 名前空間ハンドラを使用して行いま"
+"す。 Seam 名前空間ハンドラを有効にするには、 Seam 名前空間を Spring bean 定義"
+"ファイルに追加しなければなりません。"
+
+#. Tag: programlisting
+#: Spring.xml:45
+#, no-c-format
+msgid ""
+"&lt;beans xmlns=\"http://www.springframework.org/schema/beans\"\n"
+"    xmlns:seam=\"http://jboss.com/products/seam/spring-seam\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://www.springframework.org/schema/beans \n"
+"                        http://www.springframework.org/schema/beans/spring-"
+"beans-2.0.xsd\n"
+"                        http://jboss.com/products/seam/spring-seam \n"
+"                        http://jboss.com/products/seam/spring-seam-1.2.xsd"
+"\"&gt;"
+msgstr ""
+"&lt;beans xmlns=\"http://www.springframework.org/schema/beans\"\n"
+"    xmlns:seam=\"http://jboss.com/products/seam/spring-seam\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://www.springframework.org/schema/beans \n"
+"                        http://www.springframework.org/schema/beans/spring-"
+"beans-2.0.xsd\n"
+"                        http://jboss.com/products/seam/spring-seam \n"
+"                        http://jboss.com/products/seam/spring-seam-1.2.xsd"
+"\"&gt;"
+
+#. Tag: para
+#: Spring.xml:46
+#, no-c-format
+msgid "Now any Seam component may be injected into any Spring bean:"
+msgstr ""
+"これで、 Seam コンポーネントはいれの Spring bean にもインジェクション可能とな"
+"りました。"
+
+#. Tag: programlisting
+#: Spring.xml:49
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\"&gt;\n"
+"        &lt;seam:instance name=\"someComponent\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\"&gt;\n"
+"        &lt;seam:instance name=\"someComponent\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+
+#. Tag: para
+#: Spring.xml:50
+#, no-c-format
+msgid "An EL expression may be used instead of a component name:"
+msgstr "コンポーネント名の代わりに EL 式が利用可能です。"
+
+#. Tag: programlisting
+#: Spring.xml:53
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\"&gt;\n"
+"        &lt;seam:instance name=\"#{someExpression}\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\"&gt;\n"
+"        &lt;seam:instance name=\"#{someExpression}\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+
+#. Tag: para
+#: Spring.xml:54
+#, no-c-format
+msgid ""
+"Seam component instances may even be made available for injection into "
+"Spring beans by a Spring bean id."
+msgstr ""
+"Seam コンポーネントインスタンスは、 Spring bean id で Spring bean へのイン"
+"ジェクションができるようになります。"
+
+#. Tag: programlisting
+#: Spring.xml:57
+#, no-c-format
+msgid ""
+"&lt;seam:instance name=\"someComponent\" id=\"someSeamComponentInstance\"/"
+"&gt;\n"
+"\n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\" ref=\"someSeamComponentInstance"
+"\"&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+"&lt;seam:instance name=\"someComponent\" id=\"someSeamComponentInstance\"/"
+"&gt;\n"
+"\n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\" ref=\"someSeamComponentInstance"
+"\"&gt;\n"
+"&lt;/bean&gt;"
+
+#. Tag: para
+#: Spring.xml:58
+#, no-c-format
+msgid "Now for the caveat!"
+msgstr "警告!"
+
+#. Tag: para
+#: Spring.xml:61
+#, no-c-format
+msgid ""
+"Seam was designed from the ground up to support a stateful component model "
+"with multiple contexts. Spring was not. Unlike Seam bijection, Spring "
+"injection does not occur at method invocation time. Instead, injection "
+"happens only when the Spring bean is instantiated. So the instance available "
+"when the bean is instantiated will be the same instance that the bean uses "
+"for the entire life of the bean. For example, if a Seam "
+"<literal>CONVERSATION</literal>-scoped component instance is directly "
+"injected into a singleton Spring bean, that singleton will hold a reference "
+"to the same instance long after the conversation is over! We call this "
+"problem <emphasis>scope impedance</emphasis>. Seam bijection ensures that "
+"scope impedance is maintained naturally as an invocation flows through the "
+"system. In Spring, we need to inject a proxy of the Seam component, and "
+"resolve the reference when the proxy is invoked."
+msgstr ""
+"Seamは複数のコンテキストを持つステートフルなコンポーネントモデルに対応するこ"
+"とを基本に設計されました。 Spring はそうではありません。 Seam のバイジェク"
+"ションと異なり、 Spring のインジェクションはメソッド呼び出し時に発生しませ"
+"ん。 その代わり、 Spring bean がインスタンス化されるときだけ、 インジェクショ"
+"ンは発生します。 従って、 bean がインスタンス化されるときに利用可能なインスタ"
+"ンスは、 beanのライフサイクル全期間で bean が使用するものと同じインスタンスで"
+"す。 例えば、 Seam <literal>対話</literal> スコープコンポーネントのインスタン"
+"スが 直接、 単一の Spring bean にインジェクトされると、 その単一の Spring "
+"bean はその対話が終了した後もずっと同じインスタンスに対する参照を保持しま"
+"す。 この問題を<emphasis>スコープインピーダンス</emphasis>と呼んでいます。 シ"
+"ステム全体に呼び出しが流れるように、 Seam バイインジェクションはスコープイン"
+"ピーダンスが自然に維持されるようにします。 Spring では、 Seam コンポーネント"
+"のプロキシをインジェクトすることでプロキシが呼ばれた場合に参照を解決する必要"
+"があります。"
+
+#. Tag: para
+#: Spring.xml:64
+#, no-c-format
+msgid ""
+"The <literal>&lt;seam:instance/&gt;</literal> tag lets us automatically "
+"proxy the Seam component."
+msgstr ""
+"<literal>&lt;seam:instance/&gt;</literal>  タグで自動的に Seam コンポーネント"
+"をプロキシできるようになります。"
+
+#. Tag: programlisting
+#: Spring.xml:67
+#, no-c-format
+msgid ""
+"&lt;seam:instance id=\"seamManagedEM\" name=\"someManagedEMComponent\" proxy="
+"\"true\"/&gt;\n"
+"        \n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\"&gt;\n"
+"    &lt;property name=\"entityManager\" ref=\"seamManagedEM\"&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+"&lt;seam:instance id=\"seamManagedEM\" name=\"someManagedEMComponent\" proxy="
+"\"true\"/&gt;\n"
+"        \n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\"&gt;\n"
+"    &lt;property name=\"entityManager\" ref=\"seamManagedEM\"&gt;\n"
+"&lt;/bean&gt;"
+
+#. Tag: para
+#: Spring.xml:68
+#, no-c-format
+msgid ""
+"This example shows one way to use a Seam-managed persistence context from a "
+"Spring bean. (A more robust way to use Seam-managed persistence contexts as "
+"a replacement for the Spring <literal>OpenEntityManagerInView</literal> "
+"filter will be provided in a future release)"
+msgstr ""
+"このサンプルは、 Spring bean から の Seam 管理永続コンテキストの使い方の 1 つ"
+"を示しています。 (Seam 管理永続コンテキストを Spring "
+"<literal>OpenEntityManagerInView</literal> フィルタの代替として利用する場"
+"合、 さらに堅牢となる使用方法は今後のリリースで提供します。)"
+
+#. Tag: title
+#: Spring.xml:74
+#, no-c-format
+msgid "Injecting Spring beans into Seam components"
+msgstr "Spring bean を Seam コンポーネントにインジェクトする"
+
+#. Tag: para
+#: Spring.xml:75
+#, no-c-format
+msgid ""
+"It is even easier to inject Spring beans into Seam component instances. "
+"Actually, there are two possible approaches:"
+msgstr ""
+"Spring bean を Seam コンポーネントインスタンスにインジェクトするのはさらに簡"
+"単です。 実際、 可能な方法は 2 つあります。"
+
+#. Tag: para
+#: Spring.xml:80
+#, no-c-format
+msgid "inject a Spring bean using an EL expression"
+msgstr "EL 式を使用して Spring bean をインジェクトする"
+
+#. Tag: para
+#: Spring.xml:85
+#, no-c-format
+msgid "make the Spring bean a Seam component"
+msgstr "Spring bean を Seam コンポーネントにする"
+
+#. Tag: para
+#: Spring.xml:90
+#, no-c-format
+msgid ""
+"We&#39;ll discuss the second option in the next section. The easiest "
+"approach is to access the Spring beans via EL."
+msgstr ""
+"2 番目のオプションについては次のセクションで説明します。 最も簡単な方法は EL "
+"式を使って Spring bean にアクセスする方法です。"
+
+#. Tag: para
+#: Spring.xml:93
+#, no-c-format
+msgid ""
+"The Spring <literal>DelegatingVariableResolver</literal> is an integration "
+"point Spring provides for integrating Spring with JSF. This "
+"<literal>VariableResolver</literal> makes all Spring beans available in EL "
+"by their bean id. You&#39;ll need to add the "
+"<literal>DelegatingVariableResolver</literal> to <literal>faces-config.xml</"
+"literal>:"
+msgstr ""
+"Spring <literal>DelegatingVariableResolver</literal> は、 Spring と JSF を統"
+"合するために Spring により提供されるインテグレーションポイントです。 この "
+"<literal>VariableResolver</literal> を使用すると、 bean id ですべての Spring "
+"bean を EL 式 で使用できるようにします。 "
+"<literal>DelegatingVariableResolver</literal>ã‚’ <literal>faces-config.xml</"
+"literal> に追加する必要があります。"
+
+#. Tag: programlisting
+#: Spring.xml:96
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;variable-resolver&gt;\n"
+"        org.springframework.web.jsf.DelegatingVariableResolver\n"
+"    &lt;/variable-resolver&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+"&lt;application&gt;\n"
+"    &lt;variable-resolver&gt;\n"
+"        org.springframework.web.jsf.DelegatingVariableResolver\n"
+"    &lt;/variable-resolver&gt;\n"
+"&lt;/application&gt;"
+
+#. Tag: para
+#: Spring.xml:97
+#, no-c-format
+msgid "Then you can inject Spring beans using <literal>@In</literal>:"
+msgstr ""
+"これを行うと <literal>@In</literal> を使って Spring bean をインジェクトできる"
+"ようになります。"
+
+#. Tag: programlisting
+#: Spring.xml:100
+#, no-c-format
+msgid ""
+"@In(\"#{bookingService}\")\n"
+"private BookingService bookingService;"
+msgstr ""
+"@In(\"#{bookingService}\")\n"
+"private BookingService bookingService;"
+
+#. Tag: para
+#: Spring.xml:101
+#, no-c-format
+msgid ""
+"The use of Spring beans in EL is not limited to injection. Spring beans may "
+"be used anywhere that EL expressions are used in Seam: process and pageflow "
+"definitions, working memory assertions, etc..."
+msgstr ""
+"EL 式でインジェクションを行うために Spring bean を使用することに制限はありま"
+"せん。 Seam で EL 式が使用されるところならどこでも Spring bean を使用すること"
+"ができます。 プロセスとページフロー定義、 ワーキングメモリアサーションなど。"
+
+#. Tag: title
+#: Spring.xml:107
+#, no-c-format
+msgid "Making a Spring bean into a Seam component"
+msgstr "Spring bean を Seam コンポーネントにする"
+
+#. Tag: para
+#: Spring.xml:108
+#, no-c-format
+msgid ""
+"The <literal>&lt;seam:component/&gt;</literal> namespace handler can be used "
+"to make any Spring bean a Seam component. Just place the <literal>&lt;seam:"
+"component/&gt;</literal> tag within the declaration of the bean that you "
+"wish to be a Seam component:"
+msgstr ""
+"<literal>&lt;seam:component/&gt;</literal> 名前空間ハンドラを使用すると、 ど"
+"んな Spring bean でも Seam コンポーネントにすることができます。 Seam コンポー"
+"ネントにしたい bean の宣言内に <literal>&lt;seam:component/&gt;</literal> タ"
+"グを配置するだけです。"
+
+#. Tag: programlisting
+#: Spring.xml:111
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;seam:component/&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;seam:component/&gt;\n"
+"&lt;/bean&gt;"
+
+#. Tag: para
+#: Spring.xml:112
+#, no-c-format
+msgid ""
+"By default, <literal>&lt;seam:component/&gt;</literal> will create a "
+"<literal>STATELESS</literal> Seam component with class and name provided in "
+"the bean definition. Occasionally, such as when a <literal>FactoryBean</"
+"literal> is used, the class of the Spring bean may not be the class "
+"appearing in the bean definition. In such cases the <literal>class</literal> "
+"should be explicitly specified. A Seam component name may be explicitly "
+"specified in cases where there is potential for a naming conflict."
+msgstr ""
+"デフォルトでは、 <literal>&lt;seam:component/&gt;</literal>は bean 定義で与え"
+"られるクラスと名前を付けて <literal>STATELESS</literal>コンポーネントを生成し"
+"ます。 ときおり、<literal>FactoryBean</literal> が使用される場合など、 "
+"Spring bean のクラス が bean 定義に出てくるクラスではないことがあります。 こ"
+"のような場合、 <literal>class</literal> は明示的に指定されなければなりませ"
+"ん。 名前付けに競合の可能性がある場合、 Seam コンポーネント名を明示的に指定し"
+"ても構いません。"
+
+#. Tag: para
+#: Spring.xml:115
+#, no-c-format
+msgid ""
+"The <literal>scope</literal> attribute of <literal>&lt;seam:component/&gt;</"
+"literal> may be used if you wish the Spring bean to be managed in a "
+"particular Seam scope. The Spring bean must be scoped to <literal>prototype</"
+"literal> if the Seam scope specified is anything other than "
+"<literal>STATELESS</literal>. Pre-existing Spring beans usually have a "
+"fundamentally stateless character, so this attribute is not usually needed."
+msgstr ""
+"Spring bean を特定の Seam スコープで管理したい場合、 <literal>&lt;seam:"
+"component/&gt;</literal> の <literal>scope</literal> 属性を使用することができ"
+"ます。 指定される Seam スコープが <literal>STATELESS</literal> ではない場"
+"合、 Spring bean は <literal>prototype</literal> にスコープされなければなりま"
+"せん。 既にある Spring bean は通常ステートレスな特徴を基本的に持っていますの"
+"で、 この属性は一般的には不要になります。"
+
+#. Tag: title
+#: Spring.xml:121
+#, no-c-format
+msgid "Seam-scoped Spring beans"
+msgstr "Seam スコープの Spring bean"
+
+#. Tag: para
+#: Spring.xml:122
+#, no-c-format
+msgid ""
+"The Seam integration package also lets you use Seam&#39;s contexts as Spring "
+"2.0 style custom scopes. This lets you declare any Spring bean in any of "
+"Seam&#39;s contexts. However, note once again that Spring&#39;s component "
+"model was never architected to support statefulness, so please use this "
+"feature with great care. In particular, clustering of session or "
+"conversation scoped Spring beans is deeply problematic, and care must be "
+"taken when injecting a bean or component from a wider scope into a bean of a "
+"narrower scope."
+msgstr ""
+"Seam統合パッケージは、 Spring 2.0 スタイルのカスタムスコープとして Seam コン"
+"テキストの利用も可能にします。 どのような Seam コンテキスト中でもすべての "
+"Spring bean を宣言することができます。 ただし、 Spring コンポーネントモデルは"
+"ステートフルに対応するようには構築されていないことを再度思い出してください。"
+"このことから、本機能の使用は慎重に行ってください。 特に、 セッションあるいは"
+"対話スコープの Spring beanのクラスタリングは根深い問題をはらんでおり、 広い範"
+"囲のスコープから狭い範囲のスコープの bean に bean またはコンポーネントをイン"
+"ジェクトする場合は、 十分に注意を払ってください。"
+
+#. Tag: para
+#: Spring.xml:125
+#, no-c-format
+msgid ""
+"By specifying <literal>&lt;seam:configure-scopes/&gt;</literal> once in a "
+"Spring bean factory configuration, all of the Seam scopes will be available "
+"to Spring beans as custom scopes. To associate a Spring bean with a "
+"particular Seam scope, specify the Seam scope in the <literal>scope</"
+"literal> attribute of the bean definition."
+msgstr ""
+"Spring bean factory 設定で<literal>&lt;seam:configure-scopes/&gt;</literal> "
+"を一度指定すると、 すべての Seam スコープがカスタムスコープとして Spring "
+"bean に利用可能になります。 Spring bean を特定の Seam スコープに関連付けるに"
+"は、 bean 定義の <literal>scope</literal> 属性で Seam スコープを指定してくだ"
+"さい。"
+
+#. Tag: programlisting
+#: Spring.xml:128
+#, no-c-format
+msgid ""
+"&lt;!-- Only needs to be specified once per bean factory--&gt;\n"
+"&lt;seam:configure-scopes/&gt;\n"
+"\n"
+"...\n"
+"\n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope=\"seam."
+"CONVERSATION\"/&gt;"
+msgstr ""
+"&lt;!-- Only needs to be specified once per bean factory--&gt;\n"
+"&lt;seam:configure-scopes/&gt;\n"
+"\n"
+"...\n"
+"\n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope=\"seam."
+"CONVERSATION\"/&gt;"
+
+#. Tag: para
+#: Spring.xml:129
+#, no-c-format
+msgid ""
+"The prefix of the scope name may be changed by specifying the "
+"<literal>prefix</literal> attribute in the <literal>configure-scopes</"
+"literal> definition. (The default prefix is <literal>seam.</literal>)"
+msgstr ""
+"<literal>configure-scopes</literal> 定義内の <literal>prefix</literal> 属性を"
+"指定することによって、 スコープ名のプレフィックスを変更することができます。 "
+"(デフォルトのプレフィックスは <literal>seam.</literal> です。)"
+
+#. Tag: para
+#: Spring.xml:132
+#, no-c-format
+msgid ""
+"Seam-scoped Spring beans defined this way can be injected into other Spring "
+"beans without the use of <literal>&lt;seam:instance/&gt;</literal>. However, "
+"care must be taken to ensure scope impedance is maintained. The normal "
+"approach used in Spring is to specify <literal>&lt;aop:scoped-proxy/&gt;</"
+"literal> in the bean definition. However, Seam-scoped Spring beans are "
+"<emphasis>not</emphasis> compatible with <literal>&lt;aop:scoped-proxy/&gt;</"
+"literal>. So if you need to inject a Seam-scoped Spring bean into a "
+"singleton, <literal>&lt;seam:instance/&gt;</literal> must be used:"
+msgstr ""
+"この方法で定義された Seam スコープの Spring bean は、 <literal>&lt;seam:"
+"instance/&gt;</literal> を使用することなく他の Spring bean にインジェクト可能"
+"です。 ただし、 スコープインピーダンスが必ず維持されるよう十分に注意してくだ"
+"さい。 Spring で一般的に使用される方法は、 bean 定義内での <literal>&lt;aop:"
+"scoped-proxy/&gt;</literal> の指定です。 しかし、 Seamスコープの Spring bean "
+"は <literal>&lt;aop:scoped-proxy/&gt;</literal> との<emphasis>互換性がありま"
+"せん</emphasis>。 したがって、 単一の bean に Seam スコープ Spring beanをイン"
+"ジェクトする必要がある場合、 <literal>&lt;seam:instance/&gt;</literal>を使用"
+"しなければなりません。"
+
+#. Tag: programlisting
+#: Spring.xml:135
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope=\"seam."
+"CONVERSATION\"/&gt;\n"
+"\n"
+"...\n"
+"\n"
+"&lt;bean id=\"someSingleton\"&gt;\n"
+"    &lt;property name=\"someSeamScopedSpringBean\"&gt;\n"
+"        &lt;seam:instance name=\"someSpringBean\" proxy=\"true\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope=\"seam."
+"CONVERSATION\"/&gt;\n"
+"\n"
+"...\n"
+"\n"
+"&lt;bean id=\"someSingleton\"&gt;\n"
+"    &lt;property name=\"someSeamScopedSpringBean\"&gt;\n"
+"        &lt;seam:instance name=\"someSpringBean\" proxy=\"true\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+
+#. Tag: title
+#: Spring.xml:139
+#, no-c-format
+msgid "Spring Application Context as a Seam Component"
+msgstr "Seam コンポーネントとしての Spring Application Context"
+
+#. Tag: para
+#: Spring.xml:140
+#, no-c-format
+msgid ""
+"Although it is possible to use the Spring <literal>ContextLoaderListener</"
+"literal> to start your application&#39;s Spring ApplicationContext there are "
+"a couple of limitations."
+msgstr ""
+"アプリケーションの持つ Spring の ApplicationContext を起動するために Spring "
+"の <literal>ContextLoaderListener</literal> を使用することはできますが、 制約"
+"がいくつかあります。"
+
+#. Tag: para
+#: Spring.xml:145
+#, no-c-format
+msgid ""
+"the Spring ApplicationContext must be started <emphasis>after</emphasis> the "
+"<literal>SeamListener</literal>"
+msgstr ""
+"Spring ApplicationContext は、 <literal>SeamListener</literal>の<emphasis>後"
+"に</emphasis>起動されなければなりません。"
+
+#. Tag: para
+#: Spring.xml:150
+#, no-c-format
+msgid ""
+"it can be tricky starting a Spring ApplicationContext for use in Seam unit "
+"and integration tests"
+msgstr ""
+"Seam ユニット及び統合テストでの使用を目的とした Spring ApplicationContext の"
+"起動は厄介なことがあります。"
+
+#. Tag: para
+#: Spring.xml:155
+#, no-c-format
+msgid ""
+"To overcome these two limitations the Spring integration includes a Seam "
+"component that will start a Spring ApplicationContext. To use this Seam "
+"component place the <literal>&lt;spring:context-loader/&gt;</literal> "
+"definition in the <literal>components.xml</literal>. Specify your Spring "
+"context file location in the <literal>config-locations</literal> attribute. "
+"If more than one config file is needed you can place them in the nested "
+"<literal>&lt;spring:config-locations/&gt;</literal> element following "
+"standard <literal>components.xml</literal> multi value practices."
+msgstr ""
+"これら 2 つの制約を克服するために Spring 統合には Spring ApplicationContext "
+"を起動する Seam コンポーネントが含まれています。 この Seam コンポーネントを使"
+"用するには、 <literal>&lt;spring:context-loader/&gt;</literal> の定義を "
+"<literal>components.xml</literal> に配置します。 <literal>config-locations</"
+"literal> 属性で使用する Spring コンテキストファイルの場所を指定します。 複数"
+"の設定ファイルが必要な場合は、 ネストされる <literal>&lt;spring:config-"
+"locations/&gt;</literal> エレメントに配置することができます。 これを行うに"
+"は、 <literal>components.xml</literal> ファイルに複数の値エレメントを追加する"
+"基準に従ってください。"
+
+#. Tag: programlisting
+#: Spring.xml:158
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:spring=\"http://jboss.com/products/seam/spring\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"http://jboss.com/products/seam/components "
+"http://jboss.com/products/seam/components-1.2.xsd\n"
+"                                http://jboss.com/products/seam/spring http://"
+"jboss.com/products/seam/spring-1.2.xsd\"&gt;\n"
+"\n"
+"        &lt;spring:context-loader context-locations=\"/WEB-INF/"
+"applicationContext.xml\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:spring=\"http://jboss.com/products/seam/spring\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"http://jboss.com/products/seam/components "
+"http://jboss.com/products/seam/components-1.2.xsd\n"
+"                                http://jboss.com/products/seam/spring http://"
+"jboss.com/products/seam/spring-1.2.xsd\"&gt;\n"
+"\n"
+"        &lt;spring:context-loader context-locations=\"/WEB-INF/"
+"applicationContext.xml\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Testing.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Testing.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Testing.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,616 @@
+# translation of Testing.po to Japanese
+# Noriko Mizumoto <noriko at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Testing\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-30 01:52+0000\n"
+"PO-Revision-Date: 2007-10-31 13:18+1000\n"
+"Last-Translator: Noriko Mizumoto <noriko at redhat.com>\n"
+"Language-Team: Japanese <fedora-trans-ja at redhat.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Testing.xml:6
+#, no-c-format
+msgid "Testing Seam applications"
+msgstr "Seamアプリケーションのテスト"
+
+#. Tag: para
+#: Testing.xml:7
+#, no-c-format
+msgid ""
+"Most Seam applications will need at least two kinds of automated tests: "
+"<emphasis>unit tests</emphasis>, which test a particular Seam component in "
+"isolation, and scripted <emphasis>integration tests</emphasis> which "
+"exercise all Java layers of the application (that is, everything except the "
+"view pages)."
+msgstr ""
+"Seamアプリケーションのほとんどは、少なくとも2種類の自動テストが必要です。 "
+"個々のSeamコンポーネントをテストする<emphasis>ユニットテスト</emphasis>と、 "
+"アプリケーションのすべてのJava層 (ビューページ以外の全て) をスクリプトでテス"
+"トする<emphasis>統合テスト</emphasis>です。"
+
+#. Tag: para
+#: Testing.xml:10
+#, no-c-format
+msgid "Both kinds of tests are very easy to write."
+msgstr "どちらのテストもとても簡単に作成できます。"
+
+#. Tag: title
+#: Testing.xml:14
+#, no-c-format
+msgid "Unit testing Seam components"
+msgstr "Seamコンポーネントのユニットテスト"
+
+#. Tag: para
+#: Testing.xml:15
+#, no-c-format
+msgid ""
+"All Seam components are POJOs. This is a great place to start if you want "
+"easy unit testing. And since Seam emphasises the use of bijection for inter-"
+"component interactions and access to contextual objects, it&#39;s very easy "
+"to test a Seam component outside of its normal runtime environment."
+msgstr ""
+"すべての Seam コンポーネントは POJO です。 簡単にユニットテストを始めるには、 とて"
+"も良い環境です。 さらに Seam は、 コンポーネント間でのやり取りやコンテキスト依存"
+"オブジェクトのアクセスにバイジェクションを多用しているので、 通常のランタイム"
+"環境でなくてもとても簡単に Seam コンポーネントをテストすることができます。"
+
+#. Tag: para
+#: Testing.xml:18
+#, no-c-format
+msgid "Consider the following Seam component:"
+msgstr "次のようなSeamコンポーネントを考えてみましょう。"
+
+#. Tag: programlisting
+#: Testing.xml:21
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Scope(EVENT)\n"
+"@Name(\"register\")\n"
+"public class RegisterAction implements Register\n"
+"{\n"
+"   private User user;\n"
+"   private EntityManager em;\n"
+"\n"
+"   @In\n"
+"   public void setUser(User user) {\n"
+"       this.user = user;\n"
+"   }\n"
+"   \n"
+"   @PersistenceContext\n"
+"   public void setBookingDatabase(EntityManager em) {\n"
+"       this.em = em;\n"
+"   }\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = em.createQuery(\"select username from User where "
+"username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getResultList();\n"
+"      if (existing.size()==0)\n"
+"      {\n"
+"         em.persist(user);\n"
+"         return \"success\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+"@Stateless\n"
+"@Scope(EVENT)\n"
+"@Name(\"register\")\n"
+"public class RegisterAction implements Register\n"
+"{\n"
+"   private User user;\n"
+"   private EntityManager em;\n"
+"\n"
+"   @In\n"
+"   public void setUser(User user) {\n"
+"       this.user = user;\n"
+"   }\n"
+"   \n"
+"   @PersistenceContext\n"
+"   public void setBookingDatabase(EntityManager em) {\n"
+"       this.em = em;\n"
+"   }\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = em.createQuery(\"select username from User where "
+"username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getResultList();\n"
+"      if (existing.size()==0)\n"
+"      {\n"
+"         em.persist(user);\n"
+"         return \"success\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+
+#. Tag: para
+#: Testing.xml:22
+#, no-c-format
+msgid "We could write a TestNG test for this component as follows:"
+msgstr "このコンポーネントのTestNGテストは、以下のように書くことができます。"
+
+#. Tag: programlisting
+#: Testing.xml:25
+#, no-c-format
+msgid ""
+"public class RegisterActionTest\n"
+"{\n"
+"\n"
+"    @Test\n"
+"    public testRegisterAction()\n"
+"    {\n"
+"        EntityManager em = getEntityManagerFactory().createEntityManager();\n"
+"        em.getTransaction().begin();\n"
+"        \n"
+"        User gavin = new User();\n"
+"        gavin.setName(\"Gavin King\");\n"
+"        gavin.setUserName(\"1ovthafew\");\n"
+"        gavin.setPassword(\"secret\");\n"
+"        \n"
+"        RegisterAction action = new RegisterAction();\n"
+"        action.setUser(gavin);\n"
+"        action.setBookingDatabase(em);\n"
+"        \n"
+"        assert \"success\".equals( action.register() );\n"
+"        \n"
+"        em.getTransaction().commit();\n"
+"        em.close();\n"
+"    }\n"
+"    \n"
+"    \n"
+"    private EntityManagerFactory emf;\n"
+"    \n"
+"    public EntityManagerFactory getEntityManagerFactory()\n"
+"    {\n"
+"        return emf;\n"
+"    }\n"
+"    \n"
+"    @Configuration(beforeTestClass=true)\n"
+"    public void init() \n"
+"    {\n"
+"        emf = Persistence.createEntityManagerFactory"
+"(\"myResourceLocalEntityManager\");\n"
+"    }\n"
+"    \n"
+"    @Configuration(afterTestClass=true)\n"
+"    public void destroy()\n"
+"    {\n"
+"        emf.close();\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+"public class RegisterActionTest\n"
+"{\n"
+"\n"
+"    @Test\n"
+"    public testRegisterAction()\n"
+"    {\n"
+"        EntityManager em = getEntityManagerFactory().createEntityManager();\n"
+"        em.getTransaction().begin();\n"
+"        \n"
+"        User gavin = new User();\n"
+"        gavin.setName(\"Gavin King\");\n"
+"        gavin.setUserName(\"1ovthafew\");\n"
+"        gavin.setPassword(\"secret\");\n"
+"        \n"
+"        RegisterAction action = new RegisterAction();\n"
+"        action.setUser(gavin);\n"
+"        action.setBookingDatabase(em);\n"
+"        \n"
+"        assert \"success\".equals( action.register() );\n"
+"        \n"
+"        em.getTransaction().commit();\n"
+"        em.close();\n"
+"    }\n"
+"    \n"
+"    \n"
+"    private EntityManagerFactory emf;\n"
+"    \n"
+"    public EntityManagerFactory getEntityManagerFactory()\n"
+"    {\n"
+"        return emf;\n"
+"    }\n"
+"    \n"
+"    @Configuration(beforeTestClass=true)\n"
+"    public void init() \n"
+"    {\n"
+"        emf = Persistence.createEntityManagerFactory"
+"(\"myResourceLocalEntityManager\");\n"
+"    }\n"
+"    \n"
+"    @Configuration(afterTestClass=true)\n"
+"    public void destroy()\n"
+"    {\n"
+"        emf.close();\n"
+"    }\n"
+"    \n"
+"}"
+
+#. Tag: para
+#: Testing.xml:26
+#, no-c-format
+msgid ""
+"Seam components don&#39;t usually depend directly upon container "
+"infrastructure, so most unit testing as as easy as that!"
+msgstr ""
+"Seamコンポーネントは通常、コンテナのインフラストラクチャに直接依存していない"
+"ため、 ほとんどのユニットテストはこのように簡単に書くことができるのです!"
+
+#. Tag: title
+#: Testing.xml:32
+#, no-c-format
+msgid "Integration testing Seam applications"
+msgstr "Seamアプリケーションの統合テスト"
+
+#. Tag: para
+#: Testing.xml:33
+#, no-c-format
+msgid ""
+"Integration testing is slightly more difficult. In this case, we can&#39;t "
+"eliminate the container infrastructure; indeed, that is part of what is "
+"being tested! At the same time, we don&#39;t want to be forced to deploy our "
+"application to an application server to run the automated tests. We need to "
+"be able to reproduce just enough of the container infrastructure inside our "
+"testing environment to be able to exercise the whole application, without "
+"hurting performance too much."
+msgstr ""
+"統合テストはもう少しだけ複雑になります。 コンテナのインフラストラクチャはテス"
+"ト対象の一部であるため、 無視することができないのです! とは言え、自動テスト"
+"を実行するために、わざわざアプリケーションサーバへアプリケーションをデプロイ"
+"したくはありません。 そこで、最低限必要なコンテナのインフラストラクチャをテス"
+"ト環境に再現し、性能を大きく損なうことなく全てのアプリケーションを実行可能に"
+"する必要があります。"
+
+#. Tag: para
+#: Testing.xml:36
+#, no-c-format
+msgid ""
+"A second problem is emulating user interactions. A third problem is where to "
+"put our assertions. Some test frameworks let us test the whole application "
+"by reproducing user interactions with the web browser. These frameworks have "
+"their place, but they are not appropriate for use at development time."
+msgstr ""
+"2番目の問題はユーザのインタラクションをどのようにエミュレートするかです。 3"
+"番目の問題はどこにアサーションを置くかです。あるテストフレームワークでは、 す"
+"べてのアプリケーションをテストするのに、Webブラウザでユーザのインタラクション"
+"を再生する必要があります。 このようなフレームワークは存在意義はありますが、開"
+"発段階で使用するには適切でありません。"
+
+#. Tag: para
+#: Testing.xml:39
+#, no-c-format
+msgid ""
+"The approach taken by Seam is to let you write tests that script your "
+"components while running inside a pruned down container environment (Seam, "
+"together with the JBoss Embeddable EJB container). The role of the test "
+"script is basically to reproduce the interaction between the view and the "
+"Seam components. In other words, you get to pretend you are the JSF "
+"implementation!"
+msgstr ""
+"Seam が採用するアプローチは、コンポーネントのテスト・スクリプトを作成し、 独"
+"立したコンテナ環境 (Seam と JBoss 内蔵の EJB コンテナ) で実行すると言うもので"
+"す。 テスト・スクリプトの基本的な役割は、 ビューと Seam コンポーネントの間の"
+"インタラクションを再現することです。 つまり、 JSF 実装のふりをするということ"
+"です。"
+
+#. Tag: para
+#: Testing.xml:42
+#, no-c-format
+msgid "This approach tests everything except the view."
+msgstr "このアプローチではビューを除くすべてをテストすることができます。"
+
+#. Tag: para
+#: Testing.xml:45
+#, no-c-format
+msgid "Let&#39;s consider a JSP view for the component we unit tested above:"
+msgstr "さきほどユニットテストしたコンポーネントの、JSPビューを考えてみましょう。"
+
+#. Tag: programlisting
+#: Testing.xml:48
+#, no-c-format
+msgid ""
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Register New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;table border=\"0\"&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Username&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputText value=\"#{user.username}\"/&gt;&lt;/"
+"td&gt;\n"
+"       &lt;/tr&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Real Name&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputText value=\"#{user.name}\"/&gt;&lt;/td&gt;\n"
+"       &lt;/tr&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Password&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputSecret value=\"#{user.password}\"/&gt;&lt;/"
+"td&gt;\n"
+"       &lt;/tr&gt;\n"
+"     &lt;/table&gt;\n"
+"     &lt;h:messages/&gt;\n"
+"     &lt;h:commandButton type=\"submit\" value=\"Register\" action=\"#"
+"{register.register}\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Register New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;table border=\"0\"&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Username&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputText value=\"#{user.username}\"/&gt;&lt;/"
+"td&gt;\n"
+"       &lt;/tr&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Real Name&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputText value=\"#{user.name}\"/&gt;&lt;/td&gt;\n"
+"       &lt;/tr&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Password&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputSecret value=\"#{user.password}\"/&gt;&lt;/"
+"td&gt;\n"
+"       &lt;/tr&gt;\n"
+"     &lt;/table&gt;\n"
+"     &lt;h:messages/&gt;\n"
+"     &lt;h:commandButton type=\"submit\" value=\"Register\" action=\"#"
+"{register.register}\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+
+#. Tag: para
+#: Testing.xml:49
+#, no-c-format
+msgid ""
+"We want to test the registration functionality of our application (the stuff "
+"that happens when the user clicks the Register button). We&#39;ll reproduce "
+"the JSF request lifecycle in an automated TestNG test:"
+msgstr ""
+"このアプリケーションのユーザ登録機能 (Register ボタンをクリックしたときの動"
+"作) をテストします。 TestNG 自動テストで、 JSF リクエストのライフサイクルを再"
+"現してみましょう。"
+
+#. Tag: programlisting
+#: Testing.xml:52
+#, no-c-format
+msgid ""
+"public class RegisterTest extends SeamTest\n"
+"{\n"
+"   \n"
+"   @Test\n"
+"   public void testRegister() throws Exception\n"
+"   {\n"
+"            \n"
+"      new FacesRequest() {\n"
+"\n"
+"         @Override\n"
+"         protected void processValidations() throws Exception\n"
+"         {\n"
+"            validateValue(\"#{user.username}\", \"1ovthafew\");\n"
+"            validateValue(\"#{user.name}\", \"Gavin King\");\n"
+"            validateValue(\"#{user.password}\", \"secret\");\n"
+"            assert !isValidationFailure();\n"
+"         }\n"
+"         \n"
+"         @Override\n"
+"         protected void updateModelValues() throws Exception\n"
+"         {\n"
+"            setValue(\"#{user.username}\", \"1ovthafew\");\n"
+"            setValue(\"#{user.name}\", \"Gavin King\");\n"
+"            setValue(\"#{user.password}\", \"secret\");\n"
+"         }\n"
+"\n"
+"         @Override\n"
+"         protected void invokeApplication()\n"
+"         {\n"
+"            assert invokeMethod(\"#{register.register}\").equals(\"success"
+"\");\n"
+"         }\n"
+"\n"
+"         @Override\n"
+"         protected void renderResponse()\n"
+"         {\n"
+"            assert getValue(\"#{user.username}\").equals(\"1ovthafew\");\n"
+"            assert getValue(\"#{user.name}\").equals(\"Gavin King\");\n"
+"            assert getValue(\"#{user.password}\").equals(\"secret\");\n"
+"         }\n"
+"         \n"
+"      }.run();\n"
+"      \n"
+"   }\n"
+"\n"
+"   ...\n"
+"   \n"
+"}"
+msgstr ""
+"public class RegisterTest extends SeamTest\n"
+"{\n"
+"   \n"
+"   @Test\n"
+"   public void testRegister() throws Exception\n"
+"   {\n"
+"            \n"
+"      new FacesRequest() {\n"
+"\n"
+"         @Override\n"
+"         protected void processValidations() throws Exception\n"
+"         {\n"
+"            validateValue(\"#{user.username}\", \"1ovthafew\");\n"
+"            validateValue(\"#{user.name}\", \"Gavin King\");\n"
+"            validateValue(\"#{user.password}\", \"secret\");\n"
+"            assert !isValidationFailure();\n"
+"         }\n"
+"         \n"
+"         @Override\n"
+"         protected void updateModelValues() throws Exception\n"
+"         {\n"
+"            setValue(\"#{user.username}\", \"1ovthafew\");\n"
+"            setValue(\"#{user.name}\", \"Gavin King\");\n"
+"            setValue(\"#{user.password}\", \"secret\");\n"
+"         }\n"
+"\n"
+"         @Override\n"
+"         protected void invokeApplication()\n"
+"         {\n"
+"            assert invokeMethod(\"#{register.register}\").equals(\"success"
+"\");\n"
+"         }\n"
+"\n"
+"         @Override\n"
+"         protected void renderResponse()\n"
+"         {\n"
+"            assert getValue(\"#{user.username}\").equals(\"1ovthafew\");\n"
+"            assert getValue(\"#{user.name}\").equals(\"Gavin King\");\n"
+"            assert getValue(\"#{user.password}\").equals(\"secret\");\n"
+"         }\n"
+"         \n"
+"      }.run();\n"
+"      \n"
+"   }\n"
+"\n"
+"   ...\n"
+"   \n"
+"}"
+
+#. Tag: para
+#: Testing.xml:53
+#, no-c-format
+msgid ""
+"Notice that we&#39;ve extended <literal>SeamTest</literal>, which provides a "
+"Seam environment for our components, and written our test script as an "
+"anonymous class that extends <literal>SeamTest.FacesRequest</literal>, which "
+"provides an emulated JSF request lifecycle. (There is also a "
+"<literal>SeamTest.NonFacesRequest</literal> for testing GET requests.) "
+"We&#39;ve written our code in methods which are named for the various JSF "
+"phases, to emulate the calls that JSF would make to our components. Then "
+"we&#39;ve thrown in various assertions."
+msgstr ""
+"コンポーネントにSeam環境を提供する<literal>SeamTest</literal>を継承し、 JSFリ"
+"クエストのライフサイクルをエミュレートする<literal>SeamTest.FacesRequest</"
+"literal> を継承した無名クラスにテストスクリプトを書いていることに注目してくだ"
+"さい。 (GETリクエストをテストする<literal>SeamTest.NonFacesRequest</"
+"literal> も用意されています。) さまざまなJSFフェーズを表す名前のメソッドに、"
+"JSFのコンポーネント呼び出しをエミュレートするコードを記述しています。 さら"
+"に、さまざまなアサーションをスローしています。"
+
+#. Tag: para
+#: Testing.xml:56
+#, no-c-format
+msgid ""
+"You&#39;ll find plenty of integration tests for the Seam example "
+"applications which demonstrate more complex cases. There are instructions "
+"for running these tests using Ant, or using the TestNG plugin for eclipse:"
+msgstr ""
+"Seamのサンプルアプリケーションには、もっと複雑なケースの統合テストが用意され"
+"ています。 Antを使用してテストを実行する方法と、EclipseのTestNGプラグインを使"
+"用する方法があります。"
+
+#. Tag: title
+#: Testing.xml:68
+#, no-c-format
+msgid "Using mocks in integration tests"
+msgstr "モックを使用した統合テスト"
+
+#. Tag: para
+#: Testing.xml:69
+#, no-c-format
+msgid ""
+"Occasionally, we need to be able to replace the implementation of some Seam "
+"component that depends upon resources which are not available in the "
+"integration test environment. For example, suppose we have some Seam "
+"component which is a facade to some payment processing system:"
+msgstr ""
+"統合テスト環境では準備できないようなリソースをSeamコンポーネントが使用してい"
+"る場合、 コンポーネントの実装を置き換えることが必要な場合もあります。 たとえ"
+"ば支払処理システムのファサードを実装するSeamコンポーネントです。"
+
+#. Tag: programlisting
+#: Testing.xml:72
+#, no-c-format
+msgid ""
+"@Name(\"paymentProcessor\")\n"
+"public class PaymentProcessor {\n"
+"    public boolean processPayment(Payment payment) { .... }\n"
+"}"
+msgstr ""
+"@Name(\"paymentProcessor\")\n"
+"public class PaymentProcessor {\n"
+"    public boolean processPayment(Payment payment) { .... }\n"
+"}"
+
+#. Tag: para
+#: Testing.xml:73
+#, no-c-format
+msgid "For integration tests, we can mock out this component as follows:"
+msgstr "統合テストをするには、次のようなコンポーネントのモック実装を作成します。"
+
+#. Tag: programlisting
+#: Testing.xml:76
+#, no-c-format
+msgid ""
+"@Name(\"paymentProcessor\")\n"
+"@Install(precedence=MOCK)\n"
+"public class MockPaymentProcessor extends PaymentProcessor {\n"
+"    public void processPayment(Payment payment) {\n"
+"        return true;\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"paymentProcessor\")\n"
+"@Install(precedence=MOCK)\n"
+"public class MockPaymentProcessor extends PaymentProcessor {\n"
+"    public void processPayment(Payment payment) {\n"
+"        return true;\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Testing.xml:77
+#, no-c-format
+msgid ""
+"Since the <literal>MOCK</literal> precedence is higher than the default "
+"precedence of application components, Seam will install the mock "
+"implementation whenever it is in the classpath. When deployed into "
+"production, the mock implementation is absent, so the real component will be "
+"installed."
+msgstr ""
+"優先度(precedence)の<literal>MOCK</literal>は、アプリケーション・コンポーネ"
+"ントの デフォルト優先度より先なので、モック実装がクラスパスにあればSeamは "
+"モック実装を優先します。 本番環境ではモック実装は存在しないので、実際のコン"
+"ポーネントが実行されます。"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Text.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Text.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Text.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,496 @@
+# translation of Text.po to Japanese
+# Noriko Mizumoto <noriko at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Text\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-30 01:52+0000\n"
+"PO-Revision-Date: 2007-10-31 13:24+1000\n"
+"Last-Translator: Noriko Mizumoto <noriko at redhat.com>\n"
+"Language-Team: Japanese <fedora-trans-ja at redhat.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Text.xml:6
+#, no-c-format
+msgid "Seam Text"
+msgstr "Seam Text"
+
+#. Tag: para
+#: Text.xml:7
+#, no-c-format
+msgid ""
+"Collaboration-oriented websites require a human-friendly markup language for "
+"easy entry of formatted text in forum posts, wiki pages, blogs, comments, "
+"etc. Seam provides the <literal>&lt;s:formattedText/&gt;</literal> control "
+"for display of formatted text that conforms to the <emphasis>Seam Text</"
+"emphasis> language. Seam Text is implemented using an ANTLR-based parser. "
+"You don&#39;t need to know anything about ANTLR to use it, however."
+msgstr ""
+"コラボレーション志向のウェブサイトでは、 フォーラムへの投稿、wikiページ、"
+"blog、コメントなどに利用するための、 人間のためのマークアップ言語が必要になり"
+"ます。 Seamには<emphasis>Seam Text</emphasis>と呼ばれる言語に従ったフォーマッ"
+"ト済みテキストを表示するための <literal>&lt;s:formattedText/&gt;</literal> コ"
+"ントロールがあります。 Seam TextはANTLRベースのパーサを利用して実装されていま"
+"すが、 Seam Textを利用するにあたってANTLRについての知識は不要なので安心してく"
+"ださい。"
+
+#. Tag: title
+#: Text.xml:11
+#, no-c-format
+msgid "Basic fomatting"
+msgstr "フォーマットの基本"
+
+#. Tag: para
+#: Text.xml:12
+#, no-c-format
+msgid "Here is a simple example:"
+msgstr "シンプルな例:"
+
+#. Tag: programlisting
+#: Text.xml:15
+#, no-c-format
+msgid ""
+"It&#39;s easy to make *bold text*, /italic text/, |monospace|, \n"
+"~deleted text~, super^scripts^ or _underlines_."
+msgstr ""
+"It&#39;s easy to make *bold text*, /italic text/, |monospace|, \n"
+"~deleted text~, super^scripts^ or _underlines_."
+
+#. Tag: para
+#: Text.xml:16
+#, no-c-format
+msgid ""
+"If we display this using <literal>&lt;s:formattedText/&gt;</literal>, we "
+"will get the following HTML produced:"
+msgstr ""
+"これを <literal>&lt;s:formattedText/&gt;</literal> で表示させると、 以下の"
+"HTMLが生成されます:"
+
+#. Tag: programlisting
+#: Text.xml:19
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"It&#39;s easy to make &lt;b&gt;bold text&lt;/b&gt;, &lt;i&gt;italic text&lt;/"
+"i&gt;, &lt;tt&gt;monospace&lt;/tt&gt;\n"
+"&lt;del&gt;deleted text&lt;/del&gt;, super&lt;sup&gt;scripts&lt;/sup&gt; or "
+"&lt;u&gt;underlines&lt;/u&gt;.\n"
+"&lt;/p&gt;"
+msgstr ""
+"&lt;p&gt;\n"
+"It&#39;s easy to make &lt;b&gt;bold text&lt;/b&gt;, &lt;i&gt;italic text&lt;/"
+"i&gt;, &lt;tt&gt;monospace&lt;/tt&gt;\n"
+"&lt;del&gt;deleted text&lt;/del&gt;, super&lt;sup&gt;scripts&lt;/sup&gt; or "
+"&lt;u&gt;underlines&lt;/u&gt;.\n"
+"&lt;/p&gt;"
+
+#. Tag: para
+#: Text.xml:20
+#, no-c-format
+msgid ""
+"We can use a blank line to indicate a new paragraph, and <literal>+</"
+"literal> to indicate a heading:"
+msgstr ""
+"空行は新しいパラグラフを作成するときに使用します。 また、<literal>+</"
+"literal> は見出しに使用します:"
+
+#. Tag: programlisting
+#: Text.xml:23
+#, no-c-format
+msgid ""
+"+This is a big heading\n"
+"You /must/ have some text following a heading!\n"
+" \n"
+"++This is a smaller heading\n"
+"This is the first paragraph. We can split it across multiple \n"
+"lines, but we must end it with a blank line.\n"
+"\n"
+"This is the second paragraph."
+msgstr ""
+"+This is a big heading\n"
+"You /must/ have some text following a heading!\n"
+" \n"
+"++This is a smaller heading\n"
+"This is the first paragraph. We can split it across multiple \n"
+"lines, but we must end it with a blank line.\n"
+"\n"
+"This is the second paragraph."
+
+#. Tag: para
+#: Text.xml:24
+#, no-c-format
+msgid ""
+"(Note that a simple newline is ignored, you need an additional blank line to "
+"wrap text into a new paragraph.) This is the HTML that results:"
+msgstr ""
+"(段落内の改行は単に無視されます。 新しい段落としてテキストを記述したい場合は"
+"空行が必要なことを忘れないでください。) これが結果の HTML です:"
+
+#. Tag: programlisting
+#: Text.xml:27
+#, no-c-format
+msgid ""
+"&lt;h1&gt;This is a big heading&lt;/h1&gt;\n"
+"&lt;p&gt;\n"
+"You &lt;i&gt;must&lt;/i&gt; have some text following a heading!\n"
+"&lt;/p&gt;\n"
+" \n"
+"&lt;h2&gt;This is a smaller heading&lt;/h2&gt;\n"
+"&lt;p&gt;\n"
+"This is the first paragraph. We can split it across multiple \n"
+"lines, but we must end it with a blank line.\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"This is the second paragraph.\n"
+"&lt;/p&gt;"
+msgstr ""
+"&lt;h1&gt;This is a big heading&lt;/h1&gt;\n"
+"&lt;p&gt;\n"
+"You &lt;i&gt;must&lt;/i&gt; have some text following a heading!\n"
+"&lt;/p&gt;\n"
+" \n"
+"&lt;h2&gt;This is a smaller heading&lt;/h2&gt;\n"
+"&lt;p&gt;\n"
+"This is the first paragraph. We can split it across multiple \n"
+"lines, but we must end it with a blank line.\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"This is the second paragraph.\n"
+"&lt;/p&gt;"
+
+#. Tag: para
+#: Text.xml:28
+#, no-c-format
+msgid ""
+"Ordered lists are created using the <literal>#</literal> character. "
+"Unordered lists use the <literal>=</literal> character:"
+msgstr ""
+"順序付きリストは <literal>#</literal> 文字で作成できます。順序なしリストは "
+"<literal>=</literal> 文字を使います:"
+
+#. Tag: programlisting
+#: Text.xml:31
+#, no-c-format
+msgid ""
+"An ordered list:\n"
+"        \n"
+"#first item\n"
+"#second item\n"
+"#and even the /third/ item\n"
+"\n"
+"An unordered list:\n"
+"\n"
+"=an item\n"
+"=another item"
+msgstr ""
+"An ordered list:\n"
+"        \n"
+"#first item\n"
+"#second item\n"
+"#and even the /third/ item\n"
+"\n"
+"An unordered list:\n"
+"\n"
+"=an item\n"
+"=another item"
+
+#. Tag: programlisting
+#: Text.xml:32
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"An ordered list:\n"
+"&lt;/p&gt;\n"
+" \n"
+"&lt;ol&gt;       \n"
+"&lt;li&gt;first item&lt;/li&gt;\n"
+"&lt;li&gt;second item&lt;/li&gt;\n"
+"&lt;li&gt;and even the &lt;i&gt;third&lt;/i&gt; item&lt;/li&gt;\n"
+"&lt;/ol&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"An unordered list:\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;ul&gt;\n"
+"&lt;li&gt;an item&lt;/li&gt;\n"
+"&lt;li&gt;another item&lt;/li&gt;\n"
+"&lt;/ul&gt;"
+msgstr ""
+"&lt;p&gt;\n"
+"An ordered list:\n"
+"&lt;/p&gt;\n"
+" \n"
+"&lt;ol&gt;       \n"
+"&lt;li&gt;first item&lt;/li&gt;\n"
+"&lt;li&gt;second item&lt;/li&gt;\n"
+"&lt;li&gt;and even the &lt;i&gt;third&lt;/i&gt; item&lt;/li&gt;\n"
+"&lt;/ol&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"An unordered list:\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;ul&gt;\n"
+"&lt;li&gt;an item&lt;/li&gt;\n"
+"&lt;li&gt;another item&lt;/li&gt;\n"
+"&lt;/ul&gt;"
+
+#. Tag: para
+#: Text.xml:33
+#, no-c-format
+msgid "Quoted sections should be surrounded in double quotes:"
+msgstr "引用ブロックはダブルクオートで囲む必要があります:"
+
+#. Tag: programlisting
+#: Text.xml:36
+#, no-c-format
+msgid ""
+"The other guy said:\n"
+"        \n"
+"\"Nyeah nyeah-nee \n"
+"/nyeah/ nyeah!\"\n"
+"\n"
+"But what do you think he means by \"nyeah-nee\"?"
+msgstr ""
+"The other guy said:\n"
+"        \n"
+"\"Nyeah nyeah-nee \n"
+"/nyeah/ nyeah!\"\n"
+"\n"
+"But what do you think he means by \"nyeah-nee\"?"
+
+#. Tag: programlisting
+#: Text.xml:37
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"The other guy said:\n"
+"&lt;/p&gt;\n"
+"        \n"
+"&lt;q&gt;Nyeah nyeah-nee\n"
+"&lt;i&gt;nyeah&lt;/i&gt; nyeah!&lt;/q&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"But what do you think he means by &lt;q&gt;nyeah-nee&lt;/q&gt;?\n"
+"&lt;/p&gt;"
+msgstr ""
+"&lt;p&gt;\n"
+"The other guy said:\n"
+"&lt;/p&gt;\n"
+"        \n"
+"&lt;q&gt;Nyeah nyeah-nee\n"
+"&lt;i&gt;nyeah&lt;/i&gt; nyeah!&lt;/q&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"But what do you think he means by &lt;q&gt;nyeah-nee&lt;/q&gt;?\n"
+"&lt;/p&gt;"
+
+#. Tag: title
+#: Text.xml:41
+#, no-c-format
+msgid "Entering code and text with special characters"
+msgstr "プログラムコードや特殊文字を含むテキストの記述"
+
+#. Tag: para
+#: Text.xml:42
+#, no-c-format
+msgid ""
+"Special characters such as <literal>*</literal>, <literal>|</literal> and "
+"<literal>#</literal>, along with HTML characters such as <literal>&lt;</"
+"literal>, <literal>&gt;</literal> and <literal>&amp;</literal> may be "
+"escaped using <literal>\\</literal>:"
+msgstr ""
+"<literal>*</literal>, <literal>|</literal>, <literal>#</literal> などの特殊文"
+"字や、<literal>&lt;</literal>, <literal>&gt;</literal>, <literal>&amp;</"
+"literal> などのHTMLで利用される文字は <literal>\\</literal> でエスケープしま"
+"す:"
+
+#. Tag: programlisting
+#: Text.xml:45
+#, no-c-format
+msgid ""
+"You can write down equations like 2\\*3\\=6 and HTML tags\n"
+"like \\&lt;body\\&gt; using the escape character: \\\\."
+msgstr ""
+"You can write down equations like 2\\*3\\=6 and HTML tags\n"
+"like \\&lt;body\\&gt; using the escape character: \\\\."
+
+#. Tag: programlisting
+#: Text.xml:46
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"You can write down equations like 2*3=6 and HTML tags\n"
+"like &lt;body&gt; using the escape character: \\.\n"
+"&lt;/p&gt;"
+msgstr ""
+"&lt;p&gt;\n"
+"You can write down equations like 2*3=6 and HTML tags\n"
+"like &lt;body&gt; using the escape character: \\.\n"
+"&lt;/p&gt;"
+
+#. Tag: para
+#: Text.xml:47
+#, no-c-format
+msgid "And we can quote code blocks using backticks:"
+msgstr "また、 バックティック (`) を使ってコードのブロックを囲むことができます。"
+
+#. Tag: programlisting
+#: Text.xml:50
+#, no-c-format
+msgid ""
+"My code doesn&#39;t work:\n"
+"\n"
+"`for (int i=0; i&lt;100; i--)\n"
+"{\n"
+"    doSomething();\n"
+"}`\n"
+"\n"
+"Any ideas?"
+msgstr ""
+"My code doesn&#39;t work:\n"
+"\n"
+"`for (int i=0; i&lt;100; i--)\n"
+"{\n"
+"    doSomething();\n"
+"}`\n"
+"\n"
+"Any ideas?"
+
+#. Tag: programlisting
+#: Text.xml:51
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"My code doesn&#39;t work:\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;pre&gt;for (int i=0; i&lt;100; i--)\n"
+"{\n"
+"    doSomething();\n"
+"}&lt;/pre&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"Any ideas?\n"
+"&lt;/p&gt;"
+msgstr ""
+"&lt;p&gt;\n"
+"My code doesn&#39;t work:\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;pre&gt;for (int i=0; i&lt;100; i--)\n"
+"{\n"
+"    doSomething();\n"
+"}&lt;/pre&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"Any ideas?\n"
+"&lt;/p&gt;"
+
+#. Tag: title
+#: Text.xml:55
+#, no-c-format
+msgid "Links"
+msgstr "リンク"
+
+#. Tag: para
+#: Text.xml:56
+#, no-c-format
+msgid "A link may be created using the following syntax:"
+msgstr "リンクを作るには以下の構文を利用します:"
+
+#. Tag: programlisting
+#: Text.xml:59
+#, no-c-format
+msgid "Go to the Seam website at [=&gt;http://jboss.com/products/seam]."
+msgstr "Go to the Seam website at [=&gt;http://jboss.com/products/seam]."
+
+#. Tag: para
+#: Text.xml:60
+#, no-c-format
+msgid "Or, if you want to specify the text of the link:"
+msgstr "または、リンクテキストを指定したい場合:"
+
+#. Tag: programlisting
+#: Text.xml:63
+#, no-c-format
+msgid "Go to [the Seam website=&gt;http://jboss.com/products/seam]."
+msgstr "Go to [the Seam website=&gt;http://jboss.com/products/seam]."
+
+#. Tag: para
+#: Text.xml:64
+#, no-c-format
+msgid ""
+"For advanced users, it is even possible to customize the Seam Text parser to "
+"understand wikiword links written using this syntax."
+msgstr ""
+"上級者向けですが、この構文を利用したwikiワードのリンクを解釈できるようSeam "
+"Textパーサをカスタマイズすることも可能です。"
+
+#. Tag: title
+#: Text.xml:70
+#, no-c-format
+msgid "Entering HTML"
+msgstr "HTMLの記述"
+
+#. Tag: para
+#: Text.xml:71
+#, no-c-format
+msgid ""
+"Text may even include a certain limited subset of HTML (don&#39;t worry, the "
+"subset is chosen to be safe from cross-site scripting attacks). This is "
+"useful for creating links:"
+msgstr ""
+"テキストには限定されたHTMLのサブセットを含めることが出来ます (心配しないでく"
+"ださい、 クロスサイトスクリプティング攻撃には利用できないようなサブセットを選"
+"んでいます)。 これはリンクを作成する際などに便利です。"
+
+#. Tag: programlisting
+#: Text.xml:74
+#, no-c-format
+msgid ""
+"You might want to link to &lt;a href=\"http://jboss.com/products/seam\"&gt;"
+"something\n"
+"cool&lt;/a&gt;, or even include an image: &lt;img src=\"/logo.jpg\"/&gt;"
+msgstr ""
+"You might want to link to &lt;a href=\"http://jboss.com/products/seam\"&gt;"
+"something\n"
+"cool&lt;/a&gt;, or even include an image: &lt;img src=\"/logo.jpg\"/&gt;"
+
+#. Tag: para
+#: Text.xml:75
+#, no-c-format
+msgid "And for creating tables:"
+msgstr "テーブルも作れます:"
+
+#. Tag: programlisting
+#: Text.xml:78
+#, no-c-format
+msgid ""
+"&lt;table&gt;\n"
+"    &lt;tr&gt;&lt;td&gt;First name:&lt;/td&gt;&lt;td&gt;Gavin&lt;/td&gt;&lt;/"
+"tr&gt;\n"
+"    &lt;tr&gt;&lt;td&gt;Last name:&lt;/td&gt;&lt;td&gt;King&lt;/td&gt;&lt;/"
+"tr&gt;\n"
+"&lt;/table&gt;"
+msgstr ""
+"&lt;table&gt;\n"
+"    &lt;tr&gt;&lt;td&gt;First name:&lt;/td&gt;&lt;td&gt;Gavin&lt;/td&gt;&lt;/"
+"tr&gt;\n"
+"    &lt;tr&gt;&lt;td&gt;Last name:&lt;/td&gt;&lt;td&gt;King&lt;/td&gt;&lt;/"
+"tr&gt;\n"
+"&lt;/table&gt;"
+
+#. Tag: para
+#: Text.xml:79
+#, no-c-format
+msgid "But you can do much more if you want!"
+msgstr "あなたがやろうと思えば他にもいろいろできるでしょう!"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Tools.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Tools.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Tools.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,915 @@
+# translation of Tools.po to Japanese
+# Noriko Mizumoto <noriko at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Tools\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-30 01:52+0000\n"
+"PO-Revision-Date: 2007-10-31 13:33+1000\n"
+"Last-Translator: Noriko Mizumoto <noriko at redhat.com>\n"
+"Language-Team: Japanese <fedora-trans-ja at redhat.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Tools.xml:6
+#, no-c-format
+msgid "Seam tools"
+msgstr "Seam ツール"
+
+#. Tag: title
+#: Tools.xml:8
+#, no-c-format
+msgid "jBPM designer and viewer"
+msgstr "jBPM デザイナ と ビュアー"
+
+#. Tag: para
+#: Tools.xml:9
+#, no-c-format
+msgid ""
+"The jBPM designer and viewer will let you design and view in a nice way your "
+"business processes and your pageflows. This convenient tool is part of JBoss "
+"Eclipse IDE and more details can be found in the jBPM&#39;s documentation "
+"(http://docs.jboss.com/jbpm/v3/gpd/)"
+msgstr ""
+"jBPM デザイナとビュアーは、 ビジネスプロセスとページフローというすてきな方法"
+"で、 設計と照会を可能にします。 この便利なツールはJBoss Eclipse IDEの一部で、"
+"詳細は jBPM ドキュメントで参照できます。 (http://docs.jboss.com/jbpm/v3/gpd/)"
+
+#. Tag: title
+#: Tools.xml:13
+#, no-c-format
+msgid "<title>Business process designer</title>"
+msgstr "<title>ビジネスプロセスデザイナ</title>"
+
+#. Tag: para
+#: Tools.xml:14
+#, no-c-format
+msgid "This tool lets you design your own business process in a graphical way."
+msgstr "このツールでグラフィカルな方法でビジネスプロセスを設計することが可能です。"
+
+#. Tag: screeninfo
+#: Tools.xml:17 Tools.xml:33
+#, no-c-format
+msgid "<screeninfo>Business process designer</screeninfo>"
+msgstr "<screeninfo>ビジネスプロセスデザイナ</screeninfo>"
+
+#. Tag: title
+#: Tools.xml:29
+#, no-c-format
+msgid "Pageflow viewer"
+msgstr "ページフロービュアー"
+
+#. Tag: para
+#: Tools.xml:30
+#, no-c-format
+msgid ""
+"This tool let you design to some extend your pageflows and let you build "
+"graphical views of them so you can easily share and compare ideas on how it "
+"should be designed."
+msgstr ""
+"このツールでページフローを拡張する部分を設計することや、 それらのグラフィカル"
+"なビューを作成することができます。 その結果、どのように設計されたかを共有した"
+"り比較したりが可能です。"
+
+#. Tag: title
+#: Tools.xml:47
+#, no-c-format
+msgid "CRUD-application generator"
+msgstr "CRUD アプリケーションジェネレータ"
+
+#. Tag: para
+#: Tools.xml:48
+#, no-c-format
+msgid ""
+"This chapter, will give you a short overview of the support for Seam that is "
+"available in the Hibernate Tools. Hibernate Tools is a set of tools for "
+"working with Hibernate and related technologies, such as JBoss Seam and "
+"EJB3. The tools are available as a set of eclipse plugins and Ant tasks. You "
+"can download the Hibernate Tools from the JBoss Eclipse IDE or Hibernate "
+"Tools websites."
+msgstr ""
+"この章では、Hibernate ツールで利用可能な Seam のサポートの簡単な概要を説明し"
+"ます。 Hibernate ツールは、Hibernate と連携するためのツールと JBoss Seam や "
+"EJB3 などの関連技術のツール一式です。 このツールは Eclipse プラグイン や Ant "
+"タスクと組み合わせて使用可能です。 JBoss Eclipse IDE あるいは、Hibernate ツー"
+"ル のWEBサイトからダウンロードすることが可能です。"
+
+#. Tag: para
+#: Tools.xml:51
+#, no-c-format
+msgid ""
+"The specific support for Seam that is currently available is generation of a "
+"fully functional Seam based CRUD-application. The CRUD-application can be "
+"generated based on your existing Hibernate mapping files or EJB3 annotated "
+"POJO&#39;s or even fully reverse engineered from your existing database "
+"schema."
+msgstr ""
+"現在使用可能な Seam 特有のサポートとは、完全に機能するSeam ベースのCRUDアプリ"
+"ケーションを生成することです。 CRUD アプリケーションは、 既存の Hibernate "
+"マッピングファイルに基づいて生成されるか、 EJB3 をアノテーション付き POJO の"
+"マッピングに基づいて生成されるか、 あるいは既存のデータベーススキーマからリ"
+"バースエンジニアリングすることで生成が可能です。"
+
+#. Tag: para
+#: Tools.xml:54
+#, no-c-format
+msgid ""
+"The following sections is focused on the features required to understand for "
+"usage with Seam. The content is derived from the the Hibernate Tools "
+"reference documentation. Thus if you need more detailed information please "
+"refer to the Hibernate Tools documentation."
+msgstr ""
+"以下のセクションは、 Seam の使用を理解するために必要な特徴にフォーカスしてい"
+"ます。 内容は Hibernate ツールのリファレンスドキュメントに依拠しています。 "
+"従って、より詳細な情報が必要であれば、Hibernateツールドキュメンテーションを参"
+"照してください。"
+
+#. Tag: title
+#: Tools.xml:58
+#, no-c-format
+msgid "Creating a Hibernate configuration file"
+msgstr "Hibernate 設定ファイルの作成"
+
+#. Tag: para
+#: Tools.xml:59
+#, no-c-format
+msgid ""
+"To be able to reverse engineer and generate code a hibernate.properties or "
+"hibernate.cfg.xml file is needed. The Hibernate Tools provide a wizard for "
+"generating the hibernate.cfg.xml file if you do not already have such file."
+msgstr ""
+"リバースエンジニアリングやコード生成のためには、 hibernate.properties あるい"
+"は、hibernate.cfg.xml が必要です。 すでにそのようなファイルがないときのため"
+"に、 Hibernate ツールは hibernate.cfg.xml を生成するためにウィザードを提供し"
+"ます。"
+
+#. Tag: para
+#: Tools.xml:62
+#, no-c-format
+msgid ""
+"Start the wizard by clicking \"New Wizard\" (Ctrl+N), select the Hibernate/"
+"Hibernate Configuration file (cfg.xml) wizard and press \"Next\". After "
+"selecting the wanted location for the hibernate.cfg.xml file, you will see "
+"the following page:"
+msgstr ""
+"\"New Wizard\" (Ctrl+N) をクリックしてウィザードを開始し、 Hibernate/"
+"Hibernate Configuration file (cfg.xml) ウィザードを選択し、 \"Next\" を押しま"
+"す。 hibernate.cfg.xml ファイルの指定するロケーションを選択した後に、 次の"
+"ページが見えるでしょう。"
+
+#. Tag: para
+#: Tools.xml:73
+#, no-c-format
+msgid ""
+"Tip: The contents in the combo boxes for the JDBC driver class and JDBC URL "
+"change automatically, depending on the Dialect and actual driver you have "
+"chosen."
+msgstr ""
+"Tip: ダイアレクト (Dialect) や選択した実際のドライバによって、 JDBC ドライバ"
+"クラスと JDBC URL のためのコンボボックスの中の内容は自動的に変わります。"
+
+#. Tag: para
+#: Tools.xml:76
+#, no-c-format
+msgid ""
+"Enter your configuration information in this dialog. Details about the "
+"configuration options can be found in Hibernate reference documentation."
+msgstr ""
+"このダイアログに構成情報を入力します。 設定オプションについての詳細は、 "
+"Hibernate リファレンスドキュメンテーションで参照できます。"
+
+#. Tag: para
+#: Tools.xml:79
+#, no-c-format
+msgid ""
+"Press \"Finish\" to create the configuration file, after optionally creating "
+"a Console onfiguration, the hibernate.cfg.xml will be automatically opened "
+"in an editor. The last option \"Create Console Configuration\" is enabled by "
+"default and when enabled i will automatically use the hibernate.cfg.xml for "
+"the basis of a \"Console Configuration\""
+msgstr ""
+"設定ファイルを作成するために \"Finish\" を押してください。 オプションでコン"
+"ソール設定を作成した後に、 hibernate.cfg.xmlはエディタで自動的に開かれます。 "
+"最後のオプション\"Create Console Configuration\" は、デフォルトで有効になって"
+"います。 有効の場合、\"Console Configuration (コンソール設定) \" の基礎情報の"
+"ための hibernate.cfg.xml を 自動的に使用します。"
+
+#. Tag: title
+#: Tools.xml:85
+#, no-c-format
+msgid "<title>Creating a Hibernate Console configuration</title>"
+msgstr "<title>Hibernate コンソール設定の作成</title>"
+
+#. Tag: para
+#: Tools.xml:86
+#, no-c-format
+msgid ""
+"A Console Configuration describes to the Hibernate plugin which "
+"configuration files should be used to configure hibernate, including which "
+"classpath is needed to load the POJO&#39;s, JDBC drivers etc. It is required "
+"to make usage of query prototyping, reverse engineering and code generation. "
+"You can have multiple named console configurations. Normally you would just "
+"need one per project, but more (or less) is definitly possible."
+msgstr ""
+"コンソール設定は、Hibernate プラグインに、 POJO や JDBC ドライバをロードする"
+"ためにどのクラスパスが必要かなどを含む、 どの設定ファイルが Hibernate を設定"
+"するために使用されるべきかを記述します。 それは、 クエリープロトタイピング、"
+"リバースエンジニアリング、 そしてコードジェネレーションを使用するために必要で"
+"す。 複数の名前付きコンソール設定を持つこともできます。 通常、プロジェクトに "
+"1 つだけ必要ですが、それ以上 (あるいは以下) も可能です。"
+
+#. Tag: para
+#: Tools.xml:89
+#, no-c-format
+msgid ""
+"You create a console configuration by running the Console Configuration "
+"wizard, shown in the following screenshot. The same wizard will also be used "
+"if you are coming from the hibernate.cfg.xml wizard and had enabled \"Create "
+"Console Configuration\"."
+msgstr ""
+"以下のスクリーンショットが示すように、 コンソール設定ウィザードを実行してコン"
+"ソール設定を作成します。 もし、hibernate.cfg.xmlウィザードから起動し、 そし"
+"て、\"Create Console Configuration\"を有効にしていれば、 同じウィザードが使用"
+"されます。"
+
+#. Tag: caption
+#: Tools.xml:100
+#, no-c-format
+msgid "<caption>Creating a Hibernate Console configuration</caption>"
+msgstr "<caption>Hibernate コンソール設定の作成</caption>"
+
+#. Tag: para
+#: Tools.xml:102
+#, no-c-format
+msgid ""
+"The following table describes the relevant settings. The wizard can "
+"automatically detect default values for most of these if you started the "
+"Wizard with the relevant java project selected"
+msgstr ""
+"以下のテーブルは関連する設定を記述しています。 もし、 選択されたプロジェクト"
+"の関連する Java でにウィザードを開始すれば、 これら大部分においてウィザードは"
+"自動的にデフォルト値を検出します。"
+
+#. Tag: title
+#: Tools.xml:106
+#, no-c-format
+msgid "Hibernate Console Configuration Parameters"
+msgstr "Hibernate コンソール設定パラメータ"
+
+#. Tag: para
+#: Tools.xml:114
+#, no-c-format
+msgid "Parameter"
+msgstr "パラメータ"
+
+#. Tag: para
+#: Tools.xml:119 Tools.xml:306 Tools.xml:456
+#, no-c-format
+msgid "Description"
+msgstr "詳細"
+
+#. Tag: para
+#: Tools.xml:124
+#, no-c-format
+msgid "Auto detected value"
+msgstr "自動検出される値"
+
+#. Tag: para
+#: Tools.xml:133
+#, no-c-format
+msgid "Name"
+msgstr "Name"
+
+#. Tag: para
+#: Tools.xml:138
+#, no-c-format
+msgid "The unique name of the configuration"
+msgstr "設定におけるユニークな名前"
+
+#. Tag: para
+#: Tools.xml:143
+#, no-c-format
+msgid "Name of the selected project"
+msgstr "選択されたプロジェクトの名前"
+
+#. Tag: para
+#: Tools.xml:150
+#, no-c-format
+msgid "Property file"
+msgstr "Property file"
+
+#. Tag: para
+#: Tools.xml:155
+#, no-c-format
+msgid "Path to a hibernate.properties file"
+msgstr "hibernate.properties ファイルのパス"
+
+#. Tag: para
+#: Tools.xml:160
+#, no-c-format
+msgid "First hibernate.properties file found in the selected project"
+msgstr "選択されたプロジェクトで最初に見つけた hibernate.properties ファイル"
+
+#. Tag: para
+#: Tools.xml:167
+#, no-c-format
+msgid "Configuration file"
+msgstr "Configuration file"
+
+#. Tag: para
+#: Tools.xml:172
+#, no-c-format
+msgid "Path to a hibernate.cfg.xml file"
+msgstr "hibernate.cfg.xml ファイルのパス"
+
+#. Tag: para
+#: Tools.xml:177
+#, no-c-format
+msgid "First hibernate.cfg.xml file found in the selected project"
+msgstr "選択されたプロジェクトで最初に見つけた hibernate.cfg.xml ファイル"
+
+#. Tag: para
+#: Tools.xml:184
+#, no-c-format
+msgid "Enable Hibernate ejb3/annotations"
+msgstr "Enable Hibernate ejb3/annotations"
+
+#. Tag: para
+#: Tools.xml:189
+#, no-c-format
+msgid ""
+"Selecting this option enables usage of annotated classes. hbm.xml files are "
+"of course still possible to use too. This feature requires running the "
+"Eclipse IDE with a JDK 5 runtime, otherwise you will get classloading and/or "
+"version errors."
+msgstr ""
+"このオプションを選択するとアノテーション付きクラスが有効になります。 hbm.xml "
+"ファイルももちろん使用可能です。 この機能はEclipse IDE が JDK 5 ランタイムで"
+"実行される必要があります。 そうでなければ、classloading または version "
+"errors が発生します。"
+
+#. Tag: para
+#: Tools.xml:194
+#, no-c-format
+msgid "Not enabled"
+msgstr "無効"
+
+#. Tag: para
+#: Tools.xml:201
+#, no-c-format
+msgid "Mapping files"
+msgstr "Mapping files"
+
+#. Tag: para
+#: Tools.xml:206
+#, no-c-format
+msgid ""
+"List of additional mapping files that should be loaded. Note: A hibernate."
+"cfg.xml can also contain mappings. Thus if these a duplicated here, you will "
+"get \"Duplicate mapping\" errors when using the console configuration."
+msgstr ""
+"ロードされなければならない追加マッピングファイルのリスト 注記: hibernate.cfg."
+"xml もマッピングを含むことができます。 従って、これらが重複すれば、コンソール"
+"設定を使うときに、 \"Duplicate mapping\" errors が発生します。"
+
+#. Tag: para
+#: Tools.xml:211
+#, no-c-format
+msgid ""
+"If no hibernate.cfg.xml file is found, all hbm.xml files found in the "
+"selected project"
+msgstr ""
+"hibernate.cfg.xml ファイルが見つからなければ、 選択されたプロジェクトにあるす"
+"べての hbm.xml ファイル"
+
+#. Tag: para
+#: Tools.xml:218
+#, no-c-format
+msgid "Classpath"
+msgstr "Classpath"
+
+#. Tag: para
+#: Tools.xml:223
+#, no-c-format
+msgid ""
+"The classpath for loading POJO and JDBC drivers. Do not add Hibernate core "
+"libraries or dependencies, they are already included. If you get "
+"ClassNotFound errors then check this list for possible missing or redundant "
+"directories/jars."
+msgstr ""
+"POJO や JDBC ドライバをロードするためのクラスパス。 Hibernate core libraries "
+"あるいは、dependencies を追加しないでください。 それらは既に含まれています。 "
+"もし、ClassNotFound errors が発生したら、不足あるいは重複の可能性のある ディ"
+"レクトリ / Jar をこのリストでチェックしてください。"
+
+#. Tag: para
+#: Tools.xml:228
+#, no-c-format
+msgid ""
+"The default build output directory and any JARs with a class implementing "
+"java.sql.Driver in the selected project"
+msgstr ""
+"デフォルトのビルド出力ディレクトリ、 そして選択されたプロジェクトで java.sql."
+"Driver を実装したクラスを持つJARs"
+
+#. Tag: para
+#: Tools.xml:236
+#, no-c-format
+msgid ""
+"Clicking \"Finish\" creates the configuration and shows it in the "
+"\"Hibernate Configurations\" view"
+msgstr ""
+"\"Finish\"をクリックして設定を作成してください、\"Hibernate Configurations\" "
+"ビューでそれを見ることができます。"
+
+#. Tag: caption
+#: Tools.xml:247
+#, no-c-format
+msgid "Console overview"
+msgstr "コンソール概要"
+
+#. Tag: title
+#: Tools.xml:252
+#, no-c-format
+msgid "Reverse engineering and code generation"
+msgstr "リバースエンジニアリング と コードジェネレーション"
+
+#. Tag: para
+#: Tools.xml:253
+#, no-c-format
+msgid ""
+"A very simple \"click-and-generate\" reverse engineering and code generation "
+"facility is available. It is this facility that allows you to generate the "
+"skeleton for a full Seam CRUD application."
+msgstr ""
+"とても簡単な \"click-and-generate\" リバースエンジニアリングと、 コードジェネ"
+"レーションの機能が利用できます。 この機能で Seam CRUD アプリケーション全体の"
+"スケルトンの生成が可能です。"
+
+#. Tag: para
+#: Tools.xml:256
+#, no-c-format
+msgid ""
+"To start working with this process, start the \"Hibernate Code Generation\" "
+"which is available in the toolbar via the Hibernate icon or via the \"Run/"
+"Hibernate Code Generation\" menu item."
+msgstr ""
+"このプロセス作業を開始するために、\"Hibernate Code Generation\"を開始しましょ"
+"う。 これは、Hibernateアイコンのツールバーからでも、\"Run/Hibernate Code "
+"Generation\"のメニュからも利用できます。"
+
+#. Tag: title
+#: Tools.xml:260
+#, no-c-format
+msgid "Code Generation Launcher"
+msgstr "コードジェネレーションのランチャー"
+
+#. Tag: para
+#: Tools.xml:261
+#, no-c-format
+msgid ""
+"When you click on \"Hibernate Code Generation\" the standard Eclipse "
+"launcher dialog will appear. In this dialog you can create, edit and delete "
+"named Hibernate code generation \"launchers\"."
+msgstr ""
+"\"Hibernate Code Generation\" をクリックしたとき、 標準の Eclipse ランチャー"
+"ダイアログが現れます。 このダイアログで、指定された Hibernate code "
+"generation \"launchers\" を 作成、編集、削除することが可能です。"
+
+#. Tag: para
+#: Tools.xml:272
+#, no-c-format
+msgid ""
+"The dialog has the standard tabs \"Refresh\" and \"Common\" that can be used "
+"to configure which directories should be automatically refreshed and various "
+"general settings launchers, such as saving them in a project for sharing the "
+"launcher within a team."
+msgstr ""
+"このダイアログには、標準タブの \"Refresh\" と \"Common\" があります。 これら"
+"は、たとえば、チーム内のランチャーを共有するためにプロジェクトで保存される設"
+"定のような、 どのディレクトリを自動的に更新すべきかの設定、 そして、一般的な"
+"ランチャーの設定に使用することが可能です。"
+
+#. Tag: para
+#: Tools.xml:283
+#, no-c-format
+msgid ""
+"The first time you create a code generation launcher you should give it a "
+"meaningfull name, otherwise the default prefix \"New_Generation\" will be "
+"used."
+msgstr ""
+"初めて、コードジェネレーションランチャーを作成するとき、 意味のある名前をつけ"
+"なければなりません。そうでなければデフォルトの接頭語として \"New_Generation"
+"\" が使用されます。"
+
+#. Tag: para
+#: Tools.xml:286
+#, no-c-format
+msgid ""
+"Note: The \"At least one exporter option must be selected\" is just a "
+"warning stating that for this launch to work you need to select an exporter "
+"on the Exporter tab. When an exporter has been selected the warning will "
+"disappear."
+msgstr ""
+"注記: \"At least one exporter option must be selected\" は、 単に、作業するこ"
+"のスタートのために、 エキスポートタブの上のエキスポートするものを選ぶ必要があ"
+"ることを述べている警告です。 エキスポートするものが選択されれば、 警告は消え"
+"ます。"
+
+#. Tag: para
+#: Tools.xml:289
+#, no-c-format
+msgid "On the \"Main\" tab you the following fields:"
+msgstr "\"Main\" タブで設定する項目:"
+
+#. Tag: title
+#: Tools.xml:293
+#, no-c-format
+msgid "Code generation \"Main\" tab fields"
+msgstr "Code generation \"Main\" タブのフィールド"
+
+#. Tag: para
+#: Tools.xml:301 Tools.xml:451
+#, no-c-format
+msgid "Field"
+msgstr "フィールド"
+
+#. Tag: para
+#: Tools.xml:315
+#, no-c-format
+msgid "Console Configuration"
+msgstr "Console Configuration"
+
+#. Tag: para
+#: Tools.xml:320
+#, no-c-format
+msgid ""
+"The name of the console configuration which should be used when code "
+"generating."
+msgstr "コード生成されるときに、使用されるコンソール設定の名前"
+
+#. Tag: para
+#: Tools.xml:327
+#, no-c-format
+msgid "Output directory"
+msgstr "Output directory"
+
+#. Tag: para
+#: Tools.xml:332
+#, no-c-format
+msgid ""
+"Path to a directory into where all output will be written by default. Be "
+"aware that existing files will be overwritten, so be sure to specify the "
+"correct directory."
+msgstr ""
+"デフォルトで書き込まれるすべての出力のディレクトリーパスの場所。 既存のファイ"
+"ルが上書きされることに注意してください、 正しくディレクトリが指定される必要が"
+"あります。"
+
+#. Tag: para
+#: Tools.xml:339
+#, no-c-format
+msgid "Reverse engineer from JDBC Connection"
+msgstr "Reverse engineer from JDBC Connection"
+
+#. Tag: para
+#: Tools.xml:344
+#, no-c-format
+msgid ""
+"If enabled the tools will reverse engineer the database available via the "
+"connection information in the selected Hibernate Console Configuration and "
+"generate code based on the database schema. If not enabled the code "
+"generation will just be based on the mappings already specified in the "
+"Hibernate Console configuration."
+msgstr ""
+"有効化されていれば、 ツールは、 選択された Hibernate コンソール設定中の コネ"
+"クション情報を経由して、 データベースのリバースエンジニアリングを可能にし、 "
+"そして、 データベーススキーマをベースとして コードを生成します。 もし、有効化"
+"されていなければ、 コードジェネレーションは単に Hibernate コンソール設定で指"
+"定する マッピングに基づくでしょう。"
+
+#. Tag: para
+#: Tools.xml:351
+#, no-c-format
+msgid "Package"
+msgstr "Package"
+
+#. Tag: para
+#: Tools.xml:356
+#, no-c-format
+msgid ""
+"The package name here is used as the default package name for any entities "
+"found when reverse engineering."
+msgstr ""
+"ここでのパッケージ名は、 リバースエンジニアリングする時に見つけられたエンティ"
+"ティに対して使用される、 デフォルトのパッケージ名です。"
+
+#. Tag: para
+#: Tools.xml:363
+#, no-c-format
+msgid "reveng.xml"
+msgstr "reveng.xml"
+
+#. Tag: para
+#: Tools.xml:368
+#, no-c-format
+msgid ""
+"Path to a reveng.xml file. A reveng.xml file allows you to control certain "
+"aspects of the reverse engineering. e.g. how jdbc types are mapped to "
+"hibernate types and especially important which tables are included/excluded "
+"from the process. Clicking \"setup\" allows you to select an existing reveng."
+"xml file or create a new one.."
+msgstr ""
+"reveng.xml ファイルへのパス。 reveng.xml ファイルは、 特定のリバースエンジニ"
+"アリングの、 アスペクトの制御を可能にします。 例えば、どのように JDBC タイプ"
+"が Hibernate タイプにマッピングされるかや、 特に重要なものとして、 どのテーブ"
+"ルがこのプロセスに包含するか / 排除されるかです。 \"setup\" のクリックは既存"
+"の reveng.xml の選択や、 新しい reveng.xml の作成を可能にます。"
+
+#. Tag: para
+#: Tools.xml:375
+#, no-c-format
+msgid "reveng. strategy"
+msgstr "reveng. strategy"
+
+#. Tag: para
+#: Tools.xml:380
+#, no-c-format
+msgid ""
+"If reveng.xml does not provide enough customization you can provide your own "
+"implementation of an ReverseEngineeringStrategy. The class need to be in the "
+"claspath of the Console Configuration, otherwise you will get class not "
+"found exceptions."
+msgstr ""
+"もし、reveng.xml でのカスタマイズが不十分であれば、 "
+"ReverseEngineeringStrategy を実装した独自のものを設定することも可能です。 こ"
+"のクラスはコンソール設定のクラスパスにある必要があります、 そうでない場合、"
+"class notfound exceptions が発生します。"
+
+#. Tag: para
+#: Tools.xml:387
+#, no-c-format
+msgid "Generate basic typed composite ids"
+msgstr "Generate basic typed composite ids"
+
+#. Tag: para
+#: Tools.xml:392
+#, no-c-format
+msgid ""
+"This field should always be enabled when generating the Seam CRUD "
+"application. A table that has a multi-colum primary key a &lt;composite-"
+"id&gt; mapping will always be created. If this option is enabled and there "
+"are matching foreign-keys each key column is still considered a &#39;"
+"basic&#39; scalar (string, long, etc.) instead of a reference to an entity. "
+"If you disable this option a &lt;key-many-to-one&gt; instead. Note: a &lt;"
+"many-to-one&gt; property is still created, but is simply marked as non-"
+"updatable and non-insertable."
+msgstr ""
+"Sesam CRUD アプリケーションを生成する場合には、 このフィールドはいつも有効に"
+"しておく必要があります。 複数カラムの主キーを持つテーブル &lt;composite-"
+"id&gt; マッピングはいつも生成されます。 このオプションが有効で、かつマッチす"
+"る外部キーがあるならば、 それぞれのキーカラムはエンティティへの参照の代わり"
+"に、 基本的なスカラー  (string, long, etc.) と考えられます。 もしこのオプ"
+"ション&lt;key-many-to-one&gt;を反対に無効とした場合、 &lt;many-to-one&gt; プ"
+"ロパティはやはり作成されますが、 単に non-updatable や non-insertable とマー"
+"クされますますのでご注意ください。"
+
+#. Tag: para
+#: Tools.xml:399
+#, no-c-format
+msgid "Use custom templates"
+msgstr "Use custom templates"
+
+#. Tag: para
+#: Tools.xml:404
+#, no-c-format
+msgid ""
+"If enabled, the Template directory will be searched first when looking up "
+"the velocity templates, allowing you to redefine how the individual "
+"templates process the hibernate mapping model."
+msgstr ""
+"有効であれば、velocity テンプレートを探すときに、 テンプレートディレクトリー"
+"が最初に検索され、 どのように個別のテンプレートが Hibernate マッピングモデル"
+"で処理されるかを 再定義することを可能にします。"
+
+#. Tag: para
+#: Tools.xml:411
+#, no-c-format
+msgid "Template directory"
+msgstr "Template directory"
+
+#. Tag: para
+#: Tools.xml:416
+#, no-c-format
+msgid "A path to a directory with custom velocity templates."
+msgstr "カスタム Velocity テンプレートのディレクトリーパス"
+
+#. Tag: title
+#: Tools.xml:427
+#, no-c-format
+msgid "Exporters"
+msgstr "エクスポート"
+
+#. Tag: para
+#: Tools.xml:428
+#, no-c-format
+msgid ""
+"The exporters tab is used to specify which type of code that should be "
+"generated. Each selection represents an \"Exporter\" that are responsible "
+"for generating the code, hence the name."
+msgstr ""
+"エクスポートタブは生成するコードのタイプをを指定するために使用されます。 それ"
+"ぞれの選択はコード (つまり、名前) の生成を担当する \"Exporter\" を表します。"
+
+#. Tag: para
+#: Tools.xml:439
+#, no-c-format
+msgid ""
+"The following table describes in short the various exporters. The most "
+"relevant for Seam is of course the \"JBoss Seam Skeleton app\"."
+msgstr ""
+"以下のテーブルは単にさまざまな exporters を説明しています。 Seam について最も"
+"関連あることはもちろん \"JBoss Seam Skeleton app\" です。"
+
+#. Tag: title
+#: Tools.xml:443
+#, no-c-format
+msgid "Code generation \"Exporter\" tab fields"
+msgstr "Code generation \"Exporter\" タブフィールド"
+
+#. Tag: para
+#: Tools.xml:465
+#, no-c-format
+msgid "Generate domain code"
+msgstr "Generate domain code"
+
+#. Tag: para
+#: Tools.xml:470
+#, no-c-format
+msgid ""
+"Generates POJO&#39;s for all the persistent classes and components found in "
+"the given Hibernate configuration."
+msgstr ""
+"所与の Hibernate 設定にあるコンポーネントと 永続クラスのための POJO を生成し"
+"ます。"
+
+#. Tag: para
+#: Tools.xml:477
+#, no-c-format
+msgid "JDK 1.5 constructs"
+msgstr "JDK 1.5 constructs"
+
+#. Tag: para
+#: Tools.xml:482
+#, no-c-format
+msgid "When enabled the POJO&#39;s will use JDK 1.5 constructs."
+msgstr "有効であれば、POJO's は JDK 1.5 constructs を使用します。"
+
+#. Tag: para
+#: Tools.xml:489
+#, no-c-format
+msgid "EJB3/JSR-220 annotations"
+msgstr "EJB3/JSR-220 annotations"
+
+#. Tag: para
+#: Tools.xml:494
+#, no-c-format
+msgid ""
+"When enabled the POJO&#39;s will be annotated according to the EJB3/JSR-220 "
+"persistency specification."
+msgstr ""
+"有効であれば、POJO's は EJB3/JSR-220 永続性仕様書にしたがってアノテーションが"
+"付けられます。"
+
+#. Tag: para
+#: Tools.xml:501
+#, no-c-format
+msgid "Generate DAO code"
+msgstr "Generate DAO code"
+
+#. Tag: para
+#: Tools.xml:506
+#, no-c-format
+msgid "Generates a set of DAO&#39;s for each entity found."
+msgstr "見つけたそれぞれのエンティティの DAO 一式を生成します。"
+
+#. Tag: para
+#: Tools.xml:513
+#, no-c-format
+msgid "Generate Mappings"
+msgstr "Generate Mappings"
+
+#. Tag: para
+#: Tools.xml:518
+#, no-c-format
+msgid "Generate mapping (hbm.xml) files for each entity"
+msgstr "それぞれのエンティティのためにマッピングファイル (hbm.xml) を生成します。"
+
+#. Tag: para
+#: Tools.xml:525
+#, no-c-format
+msgid "Generate hibernate configuration file"
+msgstr "Generate hibernate configuration file"
+
+#. Tag: para
+#: Tools.xml:530
+#, no-c-format
+msgid ""
+"Generate a hibernate.cfg.xml file. Used to keep the hibernate.cfg.xml "
+"uptodate with any new found mapping files."
+msgstr ""
+"hibernate.cfg.xml ファイルを生成します。 新しく見つかったマッピングファイル"
+"を hibernate.cfg.xml と最新状態に保つために使用されます。"
+
+#. Tag: para
+#: Tools.xml:537
+#, no-c-format
+msgid "Generate schema html-documentation"
+msgstr "Generate schema html-documentation"
+
+#. Tag: para
+#: Tools.xml:542
+#, no-c-format
+msgid ""
+"Generates set of html pages that documents the database schema and some of "
+"the mappings."
+msgstr ""
+"データベーススキーマといくつかのマッピングを記述した HTML ページ一式を生成し"
+"ます。"
+
+#. Tag: para
+#: Tools.xml:549
+#, no-c-format
+msgid "Generate JBoss Seam skeleton app (beta)"
+msgstr "Generate JBoss Seam skeleton app (beta)"
+
+#. Tag: para
+#: Tools.xml:554
+#, no-c-format
+msgid ""
+"Generates a complete JBoss Seam skeleton app. The generation will include "
+"annotated POJO&#39;s, Seam controller beans and a JSP for the presentation "
+"layer. See the generated readme.txt for how to use it."
+msgstr ""
+"JBoss Seam スケルトンアプリケーション一式を生成します。 ジェネレーションはア"
+"ノテーション付き POJO、 Seam コントローラ Beans、 そして、プレゼンテーション"
+"層用のJSPを含みます。 使用方法は生成された readme.txt を参照してください。"
+
+#. Tag: para
+#: Tools.xml:557
+#, no-c-format
+msgid ""
+"Note: this exporter generates a full application, including a build.xml thus "
+"you will get the best results if you use an output directory which is the "
+"root of your project."
+msgstr ""
+"注記: このエキスポータは、 build.xmlを含む アプリケーション一式を生成しま"
+"す。 従って、 プロジェクトのルートに出力ディレクトリを使用すると、 最もよい結"
+"果が得られるでしょう。"
+
+#. Tag: title
+#: Tools.xml:568
+#, no-c-format
+msgid "Generating and using the code"
+msgstr "コードの生成と利用"
+
+#. Tag: para
+#: Tools.xml:569
+#, no-c-format
+msgid ""
+"When you have finished filling out the settings, simply press \"Run\" to "
+"start the generation of code. This might take a little while if you are "
+"reverse engineering from a database."
+msgstr ""
+"設定を記入し終わったら、コード生成を起動するために単に \"Run\" を押してくださ"
+"い。 データベースからリバースエンジニアリングするならば、少し時間がかかるかも"
+"しれません。"
+
+#. Tag: para
+#: Tools.xml:572
+#, no-c-format
+msgid ""
+"When the generation have finished you should now have a complete skeleton "
+"Seam application in the output directory. In the output directory there is a "
+"<literal>readme.txt</literal> file describing the steps needed to deploy and "
+"run the example."
+msgstr ""
+"生成が終わったら、出力ディレクトリの中にスケルトンの Seam application 一式が"
+"あります。 出力ディレクトリ中に、 サンプルをデプロイ、実行に必要なステップを"
+"記述した <literal>readme.txt</literal> ファイルがあります。"
+
+#. Tag: para
+#: Tools.xml:575
+#, no-c-format
+msgid ""
+"If you want to regenerate/update the skeleton code then simply run the code "
+"generation again by selecting the \"Hibernate Code Generation\" in the "
+"toolbar or \"Run\" menu. Enjoy."
+msgstr ""
+"もし、スケルトンコードの再生成/更新が必要であれば、 ツールバーの \"Hibernate "
+"Code Generation\" あるいはメニューから\"Run\"を選択して、 単にコードジェネ"
+"レーションを実行してください。 楽しんでくださいね。"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Tutorial.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Tutorial.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Tutorial.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,5949 @@
+# translation of Tutorial.po to Japanese
+# Noriko Mizumoto <noriko at redhat.com>, 2007, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Tutorial\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-05-12 01:09+0000\n"
+"PO-Revision-Date: 2008-05-15 11:12+1000\n"
+"Last-Translator: Noriko Mizumoto <noriko at redhat.com>\n"
+"Language-Team: Japanese <fedora-trans-ja at redhat.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Tutorial.xml:6
+#, no-c-format
+msgid "Seam Tutorial"
+msgstr "Seam チュートリアル"
+
+#. Tag: title
+#: Tutorial.xml:8
+#, no-c-format
+msgid "Try the examples"
+msgstr "サンプルを試そう"
+
+#. Tag: para
+#: Tutorial.xml:9
+#, no-c-format
+msgid ""
+"In this tutorial, we'll assume that you are using JBoss AS 4.2 with Seam, as "
+"in the case of JBoss Enterprise Application Platform."
+msgstr ""
+"本チュートリアルでは、 JBoss Enterprise Application Platform の場合と同じよう"
+"に、 Seam 搭載の JBoss AS 4.2 を使用しているものとします。"
+
+#. Tag: para
+#: Tutorial.xml:12
+#, no-c-format
+msgid "The directory structure of each example in Seam follows this pattern:"
+msgstr "各 Seam サンプルのディレクトリは、以下の要領で構成されています。"
+
+#. Tag: para
+#: Tutorial.xml:17
+#, no-c-format
+msgid ""
+"Web pages, images and stylesheets may be found in <filename>examples/"
+"<replaceable>registration</replaceable>/view</filename>"
+msgstr ""
+"Web ページ、イメージあるいはスタイルシートは、 <filename>examples/"
+"<replaceable>registration</replaceable>/view</filename> にあります。"
+
+#. Tag: para
+#: Tutorial.xml:22
+#, no-c-format
+msgid ""
+"Resources such as deployment descriptors and data import scripts may be "
+"found in <filename>examples/<replaceable>registration</replaceable>/"
+"resources</filename>"
+msgstr ""
+"配備記述子やデータインポートスクリプトなどのリソースは、 <filename>examples/"
+"<replaceable>registration</replaceable>/resources</filename> にあります。"
+
+#. Tag: para
+#: Tutorial.xml:27
+#, no-c-format
+msgid ""
+"Java source code may be found in <filename>examples/"
+"<replaceable>registration</replaceable>/src</filename>"
+msgstr ""
+"Java ソースコードは、 <filename>examples/<replaceable>registration</"
+"replaceable>/src</filename> にあります。"
+
+#. Tag: para
+#: Tutorial.xml:32
+#, no-c-format
+msgid ""
+"The Ant build script is <filename>examples/<replaceable>registration</"
+"replaceable>/build.xml</filename>"
+msgstr ""
+"Ant ビルドスクリプトは、 <filename>examples/<replaceable>registration</"
+"replaceable>/build.xml</filename> にあります。"
+
+#. Tag: title
+#: Tutorial.xml:38
+#, no-c-format
+msgid "Running the examples on JBoss AS"
+msgstr "JBoss AS 上でのサンプルの実行"
+
+#. Tag: para
+#: Tutorial.xml:39
+#, no-c-format
+msgid ""
+"First, make sure you have Ant correctly installed, with <literal>&#36;"
+"ANT_HOME</literal> and <literal>&#36;JAVA_HOME</literal> set correctly. "
+"Next, make sure you set the location of your JBoss AS installation in the "
+"<literal>build.properties</literal> file in the root folder of your Seam "
+"installation. If you haven't already done so, start JBoss AS now by typing "
+"<literal>bin/run.sh</literal> or <literal>bin/run.bat</literal> in the root "
+"directory of your JBoss installation."
+msgstr ""
+"最初に、<literal>$ANT_HOME</literal> と <literal>$JAVA_HOME</literal> が正し"
+"く設定され、 Ant が正しくインストールされたことを確認してください。 次に、"
+"Seam をインストールしたルートフォルダにある <literal>build.properties</"
+"literal> ファイルに JBoss AS 4.0.5 のロケーションを設定してください。 まだ起"
+"動していなければ、 JBoss のルートディレクトリから <literal>bin/run.sh</"
+"literal> もしくは、<literal>bin/run.bat</literal> とタイプして JBoss アプリ"
+"ケーションサーバを起動してください。"
+
+#. Tag: para
+#: Tutorial.xml:42
+#, no-c-format
+msgid ""
+"By default the examples will deploy to the default configuration of the "
+"server. These examples should be deployed to the production configuration if "
+"they are to be used with JBoss Enterprise Application Platform 4.2, and the "
+"example <literal>build.xml</literal> file should be modified to reflect this "
+"before building and deploying. Two lines should be changed in this file:"
+msgstr ""
+"デフォルトでは、 次のサンプルはサーバーのデフォルト設定に対してデプロイしま"
+"す。 これらのサンプルは JBoss Enterprise Application Platform 4.2 で使用する"
+"場合 production 設定にデプロイする必要があり、また、ビルドおよびデプロイを行"
+"う前にこれを反映するよう <literal>build.xml</literal> サンプルファイルを変更"
+"する必要があります。"
+
+#. Tag: screen
+#: Tutorial.xml:45
+#, no-c-format
+msgid ""
+"&lt;property name=\"deploy.dir\"           value=\"${jboss.home}/server/"
+"production/deploy\"/&gt;"
+msgstr ""
+"&lt;property name=\"deploy.dir\"           value=\"${jboss.home}/server/"
+"production/deploy\"/&gt;"
+
+#. Tag: screen
+#: Tutorial.xml:46
+#, no-c-format
+msgid ""
+"&lt;property name=\"webroot.dir\"         \n"
+"        value=\"${deploy.dir}/jboss-web.deployer/ROOT.war\"/&gt;"
+msgstr ""
+"&lt;property name=\"webroot.dir\"         \n"
+"        value=\"${deploy.dir}/jboss-web.deployer/ROOT.war\"/&gt;"
+
+#. Tag: para
+#: Tutorial.xml:47
+#, no-c-format
+msgid ""
+"Now, build and deploy the example by typing <literal>ant deploy</literal> in "
+"the <filename>examples/<replaceable>registration</replaceable></filename> "
+"directory."
+msgstr ""
+"次に、<filename>examples/<replaceable>registration</replaceable></filename> "
+"ディレクトリから <literal>ant deploy</literal> と入力してサンプルのビルドおよ"
+"びデプロイを行います。"
+
+#. Tag: para
+#: Tutorial.xml:50
+#, no-c-format
+msgid ""
+"Try it out by accessing <ulink url=\"http://localhost:8080/seam-registration/"
+"\"><literal>http://localhost:8080/seam-registration/</literal></ulink> with "
+"your web browser."
+msgstr ""
+"ブラウザから、 <ulink url=\"http://localhost:8080/seam-registration/"
+"\"><literal>http://localhost:8080/seam-registration/</literal></ulink> に ア"
+"クセスしてみます。"
+
+#. Tag: title
+#: Tutorial.xml:56
+#, no-c-format
+msgid "Running the examples on Tomcat"
+msgstr "Tomcat 上でのサンプル実行"
+
+#. Tag: para
+#: Tutorial.xml:57
+#, no-c-format
+msgid ""
+"First, make sure you have Ant correctly installed, with <literal>&#36;"
+"ANT_HOME</literal> and <literal>&#36;JAVA_HOME</literal> set correctly. "
+"Next, make sure you set the location of your Tomcat installation in the "
+"<literal>build.properties</literal> file in the root folder of your Seam "
+"installation."
+msgstr ""
+"最初に、<literal>$ANT_HOME</literal> と <literal>$JAVA_HOME</literal> が正し"
+"く設定され、 Ant が正しくインストールされたことを確認してください。 次に、"
+"Seam をインストールしたルートフォルダにある <literal>build.properties</"
+"literal> ファイルに Tomcat インストールのロケーションを設定したことを確認して"
+"ください。"
+
+#. Tag: para
+#: Tutorial.xml:60
+#, no-c-format
+msgid ""
+"Now, build and deploy the example by typing <literal>ant deploy.tomcat</"
+"literal> in the <filename>examples/<replaceable>registration</replaceable></"
+"filename> directory."
+msgstr ""
+"次に、 <filename>examples/<replaceable>registration</replaceable></filename> "
+"ディレクトリから <literal>ant deploy</literal> と入力してサンプルのビルドおよ"
+"びデプロイを行います。"
+
+#. Tag: para
+#: Tutorial.xml:63
+#, no-c-format
+msgid "Finally, start Tomcat."
+msgstr "最後に、Tomcat を起動してください。"
+
+#. Tag: para
+#: Tutorial.xml:66
+#, no-c-format
+msgid ""
+"Try it out by accessing <ulink url=\"http://localhost:8080/jboss-seam-"
+"registration/\"><literal>http://localhost:8080/jboss-seam-registration/</"
+"literal></ulink> with your web browser."
+msgstr ""
+"ブラウザから、 <ulink url=\"http://localhost:8080/jboss-seam-registration/"
+"\"><literal>http://localhost:8080/jboss-seam-registration/</literal></ulink> "
+"にアクセスしてみます。"
+
+#. Tag: para
+#: Tutorial.xml:69
+#, no-c-format
+msgid ""
+"When you deploy the example to Tomcat, any EJB3 components will run inside "
+"the JBoss Embeddable EJB3 container, a complete standalone EJB3 container "
+"environment."
+msgstr ""
+"サンプルを Tomcat にデプロイした場合、 EJB3 コンポーネントは、JBoss 組み込み "
+"EJB3 コンテナ (完全なスタンドアローン EJB コンテナ環境) 内部で作動します。"
+
+#. Tag: title
+#: Tutorial.xml:75
+#, no-c-format
+msgid "Running the example tests"
+msgstr "サンプルのテスト起動"
+
+#. Tag: para
+#: Tutorial.xml:76
+#, no-c-format
+msgid ""
+"Most of the examples come with a suite of TestNG integration tests. The "
+"easiest way to run the tests is to run <literal>ant testexample</literal> "
+"inside the <filename>examples/<replaceable>registration</replaceable></"
+"filename> directory. It is also possible to run the tests inside your IDE "
+"using the TestNG plugin."
+msgstr ""
+"ほとんどのサンプルは TestNG 統合テストスイートに対応しています。 一番簡単なテ"
+"スト実行は、 <filename>examples/<replaceable>registration</replaceable></"
+"filename> ディレクトリから、 <literal>ant testexample</literal> として起動さ"
+"せてください。 また、お使いの IDE から TestNG プラグインを利用してテスト実行"
+"することも可能です。"
+
+#. Tag: title
+#: Tutorial.xml:84
+#, no-c-format
+msgid "Your first Seam application: the registration example"
+msgstr "初めての Seam アプリケーション: ユーザ登録サンプル"
+
+#. Tag: para
+#: Tutorial.xml:85
+#, no-c-format
+msgid ""
+"The registration example is a fairly trivial application that lets a new "
+"user store his username, real name and password in the database. The example "
+"isn&#39;t intended to show off all of the cool functionality of Seam. "
+"However, it demonstrates the use of an EJB3 session bean as a JSF action "
+"listener, and basic configuration of Seam."
+msgstr ""
+"ユーザ登録サンプルは、データベースに新規ユーザの、ユーザ名、実名、パスワード"
+"をデータベースに保存できる、簡単なアプリケーションです。 このサンプルは、"
+"Seam のイケテル機能の全てを見せることはできませんが、 JSF アクションリスナと"
+"して EJB3 セッション Bean を使用する方法や、 基本的な Seam の設定方法を見せて"
+"くれます。"
+
+#. Tag: para
+#: Tutorial.xml:88
+#, no-c-format
+msgid ""
+"We&#39;ll go slowly, since we realize you might not yet be familiar with EJB "
+"3.0."
+msgstr ""
+"EJB 3.0 にまだ不慣れな方もいらっしゃるかもしれませんので、 ゆっくり進めていき"
+"ます。"
+
+#. Tag: para
+#: Tutorial.xml:91
+#, no-c-format
+msgid ""
+"The start page displays a very basic form with three input fields. Try "
+"filling them in and then submitting the form. This will save a user object "
+"in the database."
+msgstr ""
+"最初のページは 3 つの入力フィールドを持つ基本的なフォームを表示します。 試し"
+"に、項目を入力してフォームをサブミットしてください。 これでユーザオブジェクト"
+"はデータベースに保存されます。"
+
+#. Tag: title
+#: Tutorial.xml:103 Tutorial.xml:415 Tutorial.xml:554 Tutorial.xml:714
+#, no-c-format
+msgid "Understanding the code"
+msgstr "コードの理解"
+
+#. Tag: para
+#: Tutorial.xml:104
+#, no-c-format
+msgid ""
+"The example is implemented with two JSP pages, one entity bean and one "
+"stateless session bean."
+msgstr ""
+"このサンプルは、2 つの JSP ページ、1 つのエンティティ Bean と、1 つのステート"
+"レスセッション Bean で実装されています。"
+
+#. Tag: para
+#: Tutorial.xml:115
+#, no-c-format
+msgid "Let&#39;s take a look at the code, starting from the \"bottom\"."
+msgstr "基本から始めるために、コードを見てみましょう。"
+
+#. Tag: title
+#: Tutorial.xml:119
+#, no-c-format
+msgid "The entity bean: <literal>User.java</literal>"
+msgstr "エンティティ Bean: <literal>User.java</literal>"
+
+#. Tag: para
+#: Tutorial.xml:120
+#, no-c-format
+msgid ""
+"We need an EJB entity bean for user data. This class defines "
+"<emphasis>persistence</emphasis> and <emphasis>validation</emphasis> "
+"declaratively, via annotations. It also needs some extra annotations that "
+"define the class as a Seam component."
+msgstr ""
+"ユーザデータのために、EJBエンティティ Beanが必要です。 このクラスでは、アノ"
+"テーションによって <emphasis>永続性</emphasis> と <emphasis>データ妥当性検証"
+"</emphasis> を宣言的に定義しています。 Seam コンポーネントとしてのクラスを定"
+"義するために、別にいくつかのアノテーションも必要です。"
+
+#. Tag: programlisting
+#: Tutorial.xml:135
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"user\")\n"
+"@Scope(SESSION)\n"
+"@Table(name=\"users\")\n"
+"public class User implements Serializable\n"
+"{\n"
+"   private static final long serialVersionUID = 1881413500711441951L;\n"
+"   \n"
+"   private String username;\n"
+"   private String password;\n"
+"   private String name;\n"
+"   \n"
+"   public User(String name, String password, String username)\n"
+"   {\n"
+"      this.name = name;\n"
+"      this.password = password;\n"
+"      this.username = username;\n"
+"   }\n"
+"   \n"
+"   public User() {}\n"
+"   \n"
+"   @NotNull @Length(min=5, max=15)\n"
+"   public String getPassword()\n"
+"   {\n"
+"      return password;\n"
+"   }\n"
+"\n"
+"   public void setPassword(String password)\n"
+"   {\n"
+"      this.password = password;\n"
+"   }\n"
+"   \n"
+"   @NotNull\n"
+"   public String getName()\n"
+"   {\n"
+"      return name;\n"
+"   }\n"
+"\n"
+"   public void setName(String name)\n"
+"   {\n"
+"      this.name = name;\n"
+"   }\n"
+"   \n"
+"   @Id @NotNull @Length(min=5, max=15)\n"
+"   public String getUsername()\n"
+"   {\n"
+"      return username;\n"
+"   }\n"
+"\n"
+"   public void setUsername(String username)\n"
+"   {\n"
+"      this.username = username;\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+"@Entity\n"
+"@Name(\"user\")\n"
+"@Scope(SESSION)\n"
+"@Table(name=\"users\")\n"
+"public class User implements Serializable\n"
+"{\n"
+"   private static final long serialVersionUID = 1881413500711441951L;\n"
+"   \n"
+"   private String username;\n"
+"   private String password;\n"
+"   private String name;\n"
+"   \n"
+"   public User(String name, String password, String username)\n"
+"   {\n"
+"      this.name = name;\n"
+"      this.password = password;\n"
+"      this.username = username;\n"
+"   }\n"
+"   \n"
+"   public User() {}\n"
+"   \n"
+"   @NotNull @Length(min=5, max=15)\n"
+"   public String getPassword()\n"
+"   {\n"
+"      return password;\n"
+"   }\n"
+"\n"
+"   public void setPassword(String password)\n"
+"   {\n"
+"      this.password = password;\n"
+"   }\n"
+"   \n"
+"   @NotNull\n"
+"   public String getName()\n"
+"   {\n"
+"      return name;\n"
+"   }\n"
+"\n"
+"   public void setName(String name)\n"
+"   {\n"
+"      this.name = name;\n"
+"   }\n"
+"   \n"
+"   @Id @NotNull @Length(min=5, max=15)\n"
+"   public String getUsername()\n"
+"   {\n"
+"      return username;\n"
+"   }\n"
+"\n"
+"   public void setUsername(String username)\n"
+"   {\n"
+"      this.username = username;\n"
+"   }\n"
+"\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:138
+#, no-c-format
+msgid ""
+"The EJB3 standard <literal>@Entity</literal> annotation indicates that the "
+"<literal>User</literal> class is an entity bean."
+msgstr ""
+"EJB3 標準 <literal>@Entity</literal> アノテーションは、 <literal>User</"
+"literal> クラスがエンティティ Bean であることを示しています。"
+
+#. Tag: para
+#: Tutorial.xml:143
+#, no-c-format
+msgid ""
+"A Seam component needs a <emphasis>component name</emphasis> specified by "
+"the <link linkend=\"name-annotation\"><literal>@Name</literal></link> "
+"annotation. This name must be unique within the Seam application. When JSF "
+"asks Seam to resolve a context variable with a name that is the same as a "
+"Seam component name, and the context variable is currently undefined (null), "
+"Seam will instantiate that component, and bind the new instance to the "
+"context variable. In this case, Seam will instantiate a <literal>User</"
+"literal> the first time JSF encounters a variable named <literal>user</"
+"literal>."
+msgstr ""
+"Seam コンポーネントは、 <link linkend=\"name-annotation\"><literal>@Name</"
+"literal></link> アノテーションで指定される <emphasis>コンポーネント名</"
+"emphasis> が必要です。 この名前は Seam アプリケーション中でユニークである必要"
+"があります。 JSF が Seam に Seam コンポーネント名と同じコンテキスト変数の解決"
+"を求める時に、 コンテキスト変数がそのとき未定義 (null) であれば、 Seam はイン"
+"スタンスを生成してから新しいインスタンスをコンテキスト変数にバインドします。 "
+"このサンプルでは、 JSF が初めて <literal>user</literal> という変数と出会うと"
+"きに、 Seam は <literal>User</literal> をインスタンス化します。"
+
+#. Tag: para
+#: Tutorial.xml:148
+#, no-c-format
+msgid ""
+"Whenever Seam instantiates a component, it binds the new instance to a "
+"context variable in the component&#39;s <emphasis>default context</"
+"emphasis>. The default context is specified using the <link linkend=\"scope-"
+"annotation\"><literal>@Scope</literal></link> annotation. The <literal>User</"
+"literal> bean is a session scoped component."
+msgstr ""
+"Seam がインスタンスを生成する時には、 必ずコンポーネントの <emphasis>デフォル"
+"トコンテキスト</emphasis> にあるコンテキスト変数に新しいインスタンスをバイン"
+"ドします。 デフォルトコンテキストは <link linkend=\"scope-annotation"
+"\"><literal>@Scope</literal></link> アノテーションを使用して定義されます。 "
+"<literal>User</literal> Bean はセッションスコープのコンポーネントです。"
+
+#. Tag: para
+#: Tutorial.xml:153
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Table</literal> annotation indicates that the "
+"<literal>User</literal> class is mapped to the <literal>users</literal> "
+"table."
+msgstr ""
+"EJB 標準 <literal>@Table</literal> アノテーションは、 <literal>User</"
+"literal> クラスが <literal>users</literal> テーブルにマッピングされることを示"
+"しています。"
+
+#. Tag: para
+#: Tutorial.xml:158
+#, no-c-format
+msgid ""
+"<literal>name</literal>, <literal>password</literal> and <literal>username</"
+"literal> are the persistent attributes of the entity bean. All of our "
+"persistent attributes define accessor methods. These are needed when this "
+"component is used by JSF in the render response and update model values "
+"phases."
+msgstr ""
+"<literal>name</literal>、<literal>password</literal>、 <literal>username</"
+"literal> は、 エンティティ Bean の永続属性です。 すべての永続属性はアクセスメ"
+"ソッドを定義しています。 レスポンスのレンダリングフェーズおよびモデル値の更新"
+"フェーズで JSF によりこのコンポーネントが使用されるときに必要となります。"
+
+#. Tag: para
+#: Tutorial.xml:163
+#, no-c-format
+msgid ""
+"An empty constructor is both required by both the EJB specification and by "
+"Seam."
+msgstr "空コンストラクタは、EJB と Seam の両方の仕様から必要となります。"
+
+#. Tag: para
+#: Tutorial.xml:168
+#, no-c-format
+msgid ""
+"The <literal>@NotNull</literal> and <literal>@Length</literal> annotations "
+"are part of the Hibernate Validator framework. Seam integrates Hibernate "
+"Validator and lets you use it for data validation (even if you are not using "
+"Hibernate for persistence)."
+msgstr ""
+"<literal>@NotNull</literal> と <literal>@Length</literal> アノテーションは、 "
+"Hibernate Validator フレームワークの一部です。 Seam は Hibernate Validator を"
+"統合しているため、 データの妥当性検証にこれを使用することができます (永続性"
+"に Hiberenate を使用していない場合でも使用できる)。"
+
+#. Tag: para
+#: Tutorial.xml:173
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Id</literal> annotation indicates the primary key "
+"attribute of the entity bean."
+msgstr ""
+"EJB 標準 <literal>@Id</literal> アノテーションは、 エンティティ Bean の主キー"
+"であることを示しています。"
+
+#. Tag: para
+#: Tutorial.xml:180
+#, no-c-format
+msgid ""
+"The most important things to notice in this example are the <literal>@Name</"
+"literal> and <literal>@Scope</literal> annotations. These annotations "
+"establish that this class is a Seam component."
+msgstr ""
+"このサンプルで、もっとも注目してほしい重要なものは <literal>@Name</literal> "
+"と <literal>@Scope</literal> アノテーションです。 このアノテーションは、この"
+"クラスが Seam コンポーネントであることを規定しています。"
+
+#. Tag: para
+#: Tutorial.xml:183
+#, no-c-format
+msgid ""
+"We&#39;ll see below that the properties of our <literal>User</literal> class "
+"are bound to directly to JSF components and are populated by JSF during the "
+"update model values phase. We don&#39;t need any tedious glue code to copy "
+"data back and forth between the JSP pages and the entity bean domain model."
+msgstr ""
+"以下では、 <literal>User</literal> クラスのプロパティは直接 JSF コンポーネン"
+"トにバインドされ、 モデル値の変更フェーズで JSF によって投入されることがわか"
+"ります。 JSP ページとエンティティ Bean のドメインモデル間を行き来するデータの"
+"コピーに面倒なコードは必要ありません。"
+
+#. Tag: para
+#: Tutorial.xml:186
+#, no-c-format
+msgid ""
+"However, entity beans shouldn&#39;t do transaction management or database "
+"access. So we can&#39;t use this component as a JSF action listener. For "
+"that we need a session bean."
+msgstr ""
+"しかし、エンティティ Bean はトランザクション管理やデータベースアクセスを行わ"
+"ないはずなので、 このコンポーネントを JSF のアクションリスナとしては使用でき"
+"ません。 このため、 セッション Bean が必要となります。"
+
+#. Tag: title
+#: Tutorial.xml:193
+#, no-c-format
+msgid "The stateless session bean class: <literal>RegisterAction.java</literal>"
+msgstr "ステートレスセッション Bean クラス: <literal>RegisterAction.java</literal>"
+
+#. Tag: para
+#: Tutorial.xml:194
+#, no-c-format
+msgid ""
+"Most Seam application use session beans as JSF action listeners (you can use "
+"JavaBeans instead if you like)."
+msgstr ""
+"ほとんどの Seam アプリケーションは、セッション Bean を JSF アクションリスナと"
+"して使用します。 (好みに応じて JavaBean を使うことも可能)"
+
+#. Tag: para
+#: Tutorial.xml:197
+#, no-c-format
+msgid ""
+"We have exactly one JSF action in our application, and one session bean "
+"method attached to it. In this case, we&#39;ll use a stateless session bean, "
+"since all the state associated with our action is held by the <literal>User</"
+"literal> bean."
+msgstr ""
+"このアプリケーション内の JSF アクションは正確に 1 つのみで、 これにセッショ"
+"ン Bean メソッドが 1 つリンクしています。 このサンプルでは、アクションに関連"
+"する状態はすべて <literal>User</literal> Bean によって保持されるため、 ステー"
+"トレスセション Bean を使用しています。"
+
+#. Tag: para
+#: Tutorial.xml:200
+#, no-c-format
+msgid "This is the only really interesting code in the example!"
+msgstr "サンプルの中で、本当に注意すべきコードは以下のみです。"
+
+#. Tag: programlisting
+#: Tutorial.xml:215
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"register\")\n"
+"public class RegisterAction implements Register\n"
+"{\n"
+"\n"
+"   @In\n"
+"   private User user;\n"
+"   \n"
+"   @PersistenceContext\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @Logger\n"
+"   private Log log;\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = em.createQuery(\n"
+"         \"select username from User where username=#{user.username}\")\n"
+"         .getResultList();\n"
+"         \n"
+"      if (existing.size()==0)\n"
+"      {\n"
+"         em.persist(user);\n"
+"         log.info(\"Registered new user #{user.username}\");\n"
+"         return \"/registered.jsp\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         FacesMessages.instance().add(\"User #{user.username} already exists"
+"\");\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+"@Stateless\n"
+"@Name(\"register\")\n"
+"public class RegisterAction implements Register\n"
+"{\n"
+"\n"
+"   @In\n"
+"   private User user;\n"
+"   \n"
+"   @PersistenceContext\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @Logger\n"
+"   private Log log;\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = em.createQuery(\n"
+"         \"select username from User where username=#{user.username}\")\n"
+"         .getResultList();\n"
+"         \n"
+"      if (existing.size()==0)\n"
+"      {\n"
+"         em.persist(user);\n"
+"         log.info(\"Registered new user #{user.username}\");\n"
+"         return \"/registered.jsp\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         FacesMessages.instance().add(\"User #{user.username} already exists"
+"\");\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:218
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Stateless</literal> annotation marks this class "
+"as stateless session bean."
+msgstr ""
+"EJB 標準 <literal>@Stateless</literal> アノテーションは、 このクラスをステー"
+"トレスセッション Bean としてマークしています。"
+
+#. Tag: para
+#: Tutorial.xml:223
+#, no-c-format
+msgid ""
+"The <link linkend=\"in-annotation\"><literal>@In</literal></link> annotation "
+"marks an attribute of the bean as injected by Seam. In this case, the "
+"attribute is injected from a context variable named <literal>user</literal> "
+"(the instance variable name)."
+msgstr ""
+"<link linkend=\"in-annotation\"><literal>@In</literal></link> アノテーション"
+"は、 Seam によってインジェクトされる Bean の属性としてマークしています。 ここ"
+"で、この属性は、<literal>user</literal> (インスタンス変数名) という名前のコン"
+"テキスト変数からインジェクトされます。"
+
+#. Tag: para
+#: Tutorial.xml:228
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@PersistenceContext</literal> annotation is used "
+"to inject the EJB3 entity manager."
+msgstr ""
+"EJB 標準 <literal>@PersistenceContext</literal> アノテーションは、 EJB3 エン"
+"ティティ Entity Manager にインジェクトするために使用されます。"
+
+#. Tag: para
+#: Tutorial.xml:233
+#, no-c-format
+msgid ""
+"The Seam <literal>@Logger</literal> annotation is used to inject the "
+"component&#39;s <literal>Log</literal> instance."
+msgstr ""
+"Seam <literal>@Logger</literal> アノテーションは、 コンポーネントの "
+"<literal>Log</literal> インスタンスをインジェクトするために使用されています。"
+
+#. Tag: para
+#: Tutorial.xml:238
+#, no-c-format
+msgid ""
+"The action listener method uses the standard EJB3 <literal>EntityManager</"
+"literal> API to interact with the database, and returns the JSF outcome. "
+"Note that, since this is a sesson bean, a transaction is automatically begun "
+"when the <literal>register()</literal> method is called, and committed when "
+"it completes."
+msgstr ""
+"アクションリスナメソッドは、データベースとやり取りするために、 標準 EJB3 "
+"<literal>EntityManager</literal> API を使用し、JSF 結果 (outcome) を返しま"
+"す。 これはセッション Bean なので、 <literal>register()</literal> メソッドが"
+"呼ばれたときに、 トランザクションは自動的に開始され、終了したときにコミットさ"
+"れることに留意してください。"
+
+#. Tag: para
+#: Tutorial.xml:243
+#, no-c-format
+msgid ""
+"Notice that Seam lets you use a JSF EL expression inside EJB-QL. Under the "
+"covers, this results in an ordinary JPA <literal>setParameter()</literal> "
+"call on the standard JPA <literal>Query</literal> object. Nice, huh?"
+msgstr ""
+"Seam では EJB-QL 内で JSF EL 式を使用することができます。 バックグラウンドで"
+"行われるため見えませんが、 これにより普通の JPA <literal>setParameter()</"
+"literal> が標準 JPA <literal>Query</literal> オブジェクトを呼び出すことになり"
+"ます。 便利でしょう? "
+
+#. Tag: para
+#: Tutorial.xml:248
+#, no-c-format
+msgid "The <literal>Log</literal> API lets us easily display templated log messages."
+msgstr ""
+"<literal>Log</literal> API は、テンプレート化されたログメッセージを容易に表示"
+"可能です。"
+
+#. Tag: para
+#: Tutorial.xml:253
+#, no-c-format
+msgid ""
+"JSF action listener methods return a string-valued outcome that determines "
+"what page will be displayed next. A null outcome (or a void action listener "
+"method) redisplays the previous page. In plain JSF, it is normal to always "
+"use a JSF <emphasis>navigation rule</emphasis> to determine the JSF view id "
+"from the outcome. For complex application this indirection is useful and a "
+"good practice. However, for very simple examples like this one, Seam lets "
+"you use the JSF view id as the outcome, eliminating the requirement for a "
+"navigation rule. <emphasis>Note that when you use a view id as an outcome, "
+"Seam always performs a browser redirect.</emphasis>"
+msgstr ""
+"JSF アクションリスナメソッドは、次にどのページを表示するかを決定するストリン"
+"グ値の結果 (outcome) を返します。 null 結果 (outcome) (あるいは、void アク"
+"ションリスナメソッド) は、 前のページを再表示します。 普通の JSF では、 結"
+"果  (outcome) から JSF view id を決定するために、 常に JSF <emphasis>ナビゲー"
+"ション規則</emphasis> を使用することが普通です。 複雑なアプリケーションにとっ"
+"て、この間接的命令は、実用的な良い慣行です。 しかし、このようなとても簡単なサ"
+"ンプルのために、 Seam は、結果 (outcome) として JSF view id の使用を可能と"
+"し、 ナビゲーション規則の必要性を取り除きました。 <emphasis> 結果 (outcome) "
+"として view id を使用する場合、 Seam は、常にブラウザリダイレクトを行うことに"
+"留意してください。 </emphasis>"
+
+#. Tag: para
+#: Tutorial.xml:258
+#, no-c-format
+msgid ""
+"Seam provides a number of <emphasis>built-in components</emphasis> to help "
+"solve common problems. The <literal>FacesMessages</literal> component makes "
+"it easy to display templated error or success messages. Built-in Seam "
+"components may be obtained by injection, or by calling an <literal>instance()"
+"</literal> method."
+msgstr ""
+"Seam は、共通な問題の解決を支援するために多くの <emphasis>組み込みコンポーネ"
+"ント</emphasis>を提供しています。 <literal>FacesMessages</literal> コンポーネ"
+"ントは、 テンプレート化されたエラーや成功メッセージを容易に表示可能です。 組"
+"み込み Seam コンポーネントは、 インジェクションあるいは、<literal>instance()"
+"</literal> メソッド呼び出しによって取得可能です。"
+
+#. Tag: para
+#: Tutorial.xml:265
+#, no-c-format
+msgid ""
+"Note that we did not explicitly specify a <literal>@Scope</literal> this "
+"time. Each Seam component type has a default scope if not explicitly "
+"specified. For stateless session beans, the default scope is the stateless "
+"context. Actually, <emphasis>all</emphasis> stateless session beans belong "
+"in the stateless context."
+msgstr ""
+"ここで、<literal>@Scope</literal> を明示的に指定していないことに留意してくだ"
+"さい。 各 Seam コンポーネントタイプは、明示的にスコープが指定されない場合、 "
+"デフォルトのスコープが適用されます。 ステートレスセッション Bean のデフォルト"
+"スコープは、ステートレスコンテキストです。 実際、<emphasis>すべての</"
+"emphasis>ステートレスセッション Bean は、 ステートレスコンテキストに属しま"
+"す。"
+
+#. Tag: para
+#: Tutorial.xml:268
+#, no-c-format
+msgid ""
+"Our session bean action listener performs the business and persistence logic "
+"for our mini-application. In more complex applications, we might need to "
+"layer the code and refactor persistence logic into a dedicated data access "
+"component. That&#39;s perfectly trivial to do. But notice that Seam does not "
+"force you into any particular strategy for application layering."
+msgstr ""
+"このセッション Bean のアクションリスナは、この小さなアプリケーションのため"
+"に、 ビジネスロジックと永続ロジックを提供しています。 さらに複雑なアプリケー"
+"ションでは、 コードを階層化し永続ロジックが専門のデータアクセスコンポーネント"
+"となるようにリファクタリングする必要があるかもしれません。 これをするのは簡単"
+"ですが、 Seam は、アプリケーションの階層化のために特殊な方法を強要していない"
+"ことに留意してください。"
+
+#. Tag: para
+#: Tutorial.xml:271
+#, no-c-format
+msgid ""
+"Furthermore, notice that our session bean has simultaneous access to context "
+"associated with the web request (the form values in the <literal>User</"
+"literal> object, for example), and state held in transactional resources "
+"(the <literal>EntityManager</literal> object). This is a break from "
+"traditional J2EE architectures. Again, if you are more comfortable with the "
+"traditional J2EE layering, you can certainly implement that in a Seam "
+"application. But for many applications, it&#39;s simply not very useful."
+msgstr ""
+"さらに、このセッション Bean は WEB リクエスト (例えば、 <literal>User</"
+"literal> オブジェクト内のフォームの値) に関連するコンテキストにアクセスすると"
+"同時に、 トランザクションリソース (<literal>EntityManager</literal> オブジェ"
+"クト) で保持される状態にもアクセスすることに注目してください。 従来の J2EE "
+"アーキテクチャからの分岐点になります。 繰り返しますが、 従来の J2EE の階層化"
+"の方が使い易ければ、 そちらの方を Seam アプリケーションに実装することもできま"
+"す。 ただし、 多くのアプリケーションにとってはあまり役に立ちません。"
+
+#. Tag: title
+#: Tutorial.xml:278
+#, no-c-format
+msgid "The session bean local interface: <literal>Register.java</literal>"
+msgstr "セッション Bean ローカルインタフェース : <literal>Register.java</literal>"
+
+#. Tag: para
+#: Tutorial.xml:279
+#, no-c-format
+msgid "Naturally, our session bean needs a local interface."
+msgstr "当然、セッション Bean には、ローカルインタフェースが必要です。"
+
+#. Tag: programlisting
+#: Tutorial.xml:282
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface Register\n"
+"{\n"
+"   public String register();\n"
+"}"
+msgstr ""
+"@Local\n"
+"public interface Register\n"
+"{\n"
+"   public String register();\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:283
+#, no-c-format
+msgid "That&#39;s the end of the Java code. Now onto the deployment descriptors."
+msgstr "Javaコードは以上です。続いて配備記述子です。"
+
+#. Tag: title
+#: Tutorial.xml:289
+#, no-c-format
+msgid "The Seam component deployment descriptor: <literal>components.xml</literal>"
+msgstr "Seam コンポーネント配備記述子 : <literal>components.xml</literal>"
+
+#. Tag: para
+#: Tutorial.xml:290
+#, no-c-format
+msgid ""
+"If you&#39;ve used many Java frameworks before, you&#39;ll be used to having "
+"to declare all your component classes in some kind of XML file that "
+"gradually grows more and more unmanageable as your project matures. You&#39;"
+"ll be relieved to know that Seam does not require that application "
+"components be accompanied by XML. Most Seam applications require a very "
+"small amount of XML that does not grow very much as the project gets bigger."
+msgstr ""
+"既に多くの Java フレームワークを使用した経験があれば、 プロジェクトが経過する"
+"につれ徐々に大きくなり管理し難くなる XML ファイルにコンポーネントクラスをすべ"
+"て宣言することにもそのうち慣れていくことでしょう。 Seam ではアプリケーション"
+"コンポーネントに XML が付随する要がないことを知ったら、 きっとほっとすること"
+"でしょう。 大部分の Seam アプリケーションは、 ほんの少しの XML しか必要としま"
+"せん。 また、この XML はプロジェクトが大きくなっていっても、 あまり大きくなり"
+"ません。"
+
+#. Tag: para
+#: Tutorial.xml:293
+#, no-c-format
+msgid ""
+"Nevertheless, it is often useful to be able to provide for <emphasis>some</"
+"emphasis> external configuration of <emphasis>some</emphasis> components "
+"(particularly the components built in to Seam). You have a couple of options "
+"here, but the most flexible option is to provide this configuration in a "
+"file called <literal>components.xml</literal>, located in the <literal>WEB-"
+"INF</literal> directory. We&#39;ll use the <literal>components.xml</literal> "
+"file to tell Seam how to find our EJB components in JNDI:"
+msgstr ""
+"それにもかかわらず、<emphasis>ある</emphasis> コンポーネントの <emphasis>ある"
+"</emphasis> 外部設定の規定が可能であることは、 多くの場合、有用です。 (特に、"
+"Seam に組み込まれたコンポーネント) ここで、2 つの選択があります。 しかし、最"
+"も柔軟性のある選択は、 <literal>WEB-INF</literal> ディレクトリに位置する "
+"<literal>components.xml</literal> と呼ばれるファイルに設定を規定することで"
+"す。 Seam に、JNDI で EJB コンポーネントの見つけ方を指示するためには、"
+"<literal>components.xml</literal> ファイルを使用します。"
+
+#. Tag: programlisting
+#: Tutorial.xml:296
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"&gt;\n"
+"     &lt;core:init jndi-pattern=\"@jndiPattern@\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"&gt;\n"
+"     &lt;core:init jndi-pattern=\"@jndiPattern@\"/&gt;\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Tutorial.xml:297
+#, no-c-format
+msgid ""
+"This code configures a property named <literal>jndiPattern</literal> of a "
+"built-in Seam component named <literal>org.jboss.seam.core.init</literal>."
+msgstr ""
+"このコードは、<literal>org.jboss.seam.core.init</literal> という名前の Seam "
+"コンポーネントの <literal>jndiPattern</literal> という名前のプロパティを設定"
+"します。"
+
+#. Tag: title
+#: Tutorial.xml:303
+#, no-c-format
+msgid "The web deployment description: <literal>web.xml</literal>"
+msgstr "WEB 配備記述子 : <literal>web.xml</literal>"
+
+#. Tag: para
+#: Tutorial.xml:304
+#, no-c-format
+msgid ""
+"The presentation layer for our mini-application will be deployed in a WAR. "
+"So we&#39;ll need a web deployment descriptor."
+msgstr ""
+"この小さなアプリケーションのプレゼンテーション層はWARにデプロイされます。 "
+"従って、WEB 配備記述子が必要です。"
+
+#. Tag: programlisting
+#: Tutorial.xml:307
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;web-app version=\"2.5\"\n"
+"    xmlns=\"http://java.sun.com/xml/ns/javaee\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n"
+"        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\"&gt;\n"
+"\n"
+"    &lt;!- - Seam - -&gt;\n"
+"\n"
+"    &lt;listener&gt;\n"
+"        &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/"
+"listener-class&gt;\n"
+"    &lt;/listener&gt;\n"
+"    \n"
+"     &lt;listener&gt;\n"
+"         &lt;listener-class&gt;com.sun.faces.config.ConfigureListener&lt;/"
+"listener-class&gt;\n"
+"    &lt;/listener&gt;\n"
+"\n"
+"    &lt;context-param&gt;\n"
+"        &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-"
+"name&gt;\n"
+"        &lt;param-value&gt;client&lt;/param-value&gt;\n"
+"    &lt;/context-param&gt;\n"
+"\n"
+"    &lt;context-param&gt;\n"
+"        &lt;param-name&gt;javax.faces.DEFAULT_SUFFIX&lt;/param-name&gt;\n"
+"        &lt;param-value&gt;.jspx&lt;/param-value&gt;\n"
+"    &lt;/context-param&gt;\n"
+"\n"
+"        &lt;servlet&gt;\n"
+"                &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;\n"
+"                &lt;servlet-class&gt;javax.faces.webapp.FacesServlet&lt;/"
+"servlet-class&gt;\n"
+"                &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;\n"
+"        &lt;/servlet&gt;\n"
+"\n"
+"        <!-- Faces Servlet Mapping -->\n"
+"        &lt;servlet-mapping&gt;\n"
+"                &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;\n"
+"                &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;\n"
+"        &lt;/servlet-mapping&gt;\n"
+"\n"
+"&lt;/web-app&gt;"
+msgstr ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;web-app version=\"2.5\"\n"
+"    xmlns=\"http://java.sun.com/xml/ns/javaee\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n"
+"        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\"&gt;\n"
+"\n"
+"    &lt;!- - Seam - -&gt;\n"
+"\n"
+"    &lt;listener&gt;\n"
+"        &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/"
+"listener-class&gt;\n"
+"    &lt;/listener&gt;\n"
+"    \n"
+"     &lt;listener&gt;\n"
+"         &lt;listener-class&gt;com.sun.faces.config.ConfigureListener&lt;/"
+"listener-class&gt;\n"
+"    &lt;/listener&gt;\n"
+"\n"
+"    &lt;context-param&gt;\n"
+"        &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-"
+"name&gt;\n"
+"        &lt;param-value&gt;client&lt;/param-value&gt;\n"
+"    &lt;/context-param&gt;\n"
+"\n"
+"    &lt;context-param&gt;\n"
+"        &lt;param-name&gt;javax.faces.DEFAULT_SUFFIX&lt;/param-name&gt;\n"
+"        &lt;param-value&gt;.jspx&lt;/param-value&gt;\n"
+"    &lt;/context-param&gt;\n"
+"\n"
+"        &lt;servlet&gt;\n"
+"                &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;\n"
+"                &lt;servlet-class&gt;javax.faces.webapp.FacesServlet&lt;/"
+"servlet-class&gt;\n"
+"                &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;\n"
+"        &lt;/servlet&gt;\n"
+"\n"
+"        <!-- Faces Servlet Mapping -->\n"
+"        &lt;servlet-mapping&gt;\n"
+"                &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;\n"
+"                &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;\n"
+"        &lt;/servlet-mapping&gt;\n"
+"\n"
+"&lt;/web-app&gt;"
+
+#. Tag: para
+#: Tutorial.xml:308
+#, no-c-format
+msgid ""
+"This <literal>web.xml</literal> file configures Seam and Glassfish. The "
+"configuration you see here is pretty much identical in all Seam applications."
+msgstr ""
+"この <literal>web.xml</literal> ファイルは、Seam と MyFaces を設定します。 こ"
+"こで見る設定は、Seam アプリケーションではいつも同じです。"
+
+#. Tag: title
+#: Tutorial.xml:314
+#, no-c-format
+msgid "The JSF configration: <literal>faces-config.xml</literal>"
+msgstr "JSF 設定 : <literal>faces-config.xml</literal>"
+
+#. Tag: para
+#: Tutorial.xml:315
+#, no-c-format
+msgid ""
+"All Seam applications use JSF views as the presentation layer. So we&#39;ll "
+"need <literal>faces-config.xml</literal>."
+msgstr ""
+"すべての Seam アプリケーションはプレゼンテーション層として JSF ビューを使用し"
+"ます。 従って、<literal>faces-config.xml</literal> が必要です。"
+
+#. Tag: programlisting
+#: Tutorial.xml:318
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;!DOCTYPE faces-config \n"
+"PUBLIC \"-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN\"\n"
+"                            \"http://java.sun.com/dtd/web-facesconfig_1_0.dtd"
+"\"&gt;\n"
+"&lt;faces-config&gt;\n"
+"\n"
+"    &lt;!- - A phase listener is needed by all Seam applications - -&gt;\n"
+"    \n"
+"    &lt;lifecycle&gt;\n"
+"        &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-"
+"listener&gt;\n"
+"    &lt;/lifecycle&gt;\n"
+"\n"
+"&lt;/faces-config&gt;"
+msgstr ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;!DOCTYPE faces-config \n"
+"PUBLIC \"-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN\"\n"
+"                            \"http://java.sun.com/dtd/web-facesconfig_1_0.dtd"
+"\"&gt;\n"
+"&lt;faces-config&gt;\n"
+"\n"
+"    &lt;!- - A phase listener is needed by all Seam applications - -&gt;\n"
+"    \n"
+"    &lt;lifecycle&gt;\n"
+"        &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-"
+"listener&gt;\n"
+"    &lt;/lifecycle&gt;\n"
+"\n"
+"&lt;/faces-config&gt;"
+
+#. Tag: para
+#: Tutorial.xml:319
+#, no-c-format
+msgid ""
+"The <literal>faces-config.xml</literal> file integrates Seam into JSF. Note "
+"that we don&#39;t need any JSF managed bean declarations! The managed beans "
+"are the Seam components. In Seam applications, the <literal>faces-config."
+"xml</literal> is used much less often than in plain JSF."
+msgstr ""
+"<literal>faces-config.xml</literal> ファイルは、Seam を JSF に統合します。 "
+"JSF 管理 Bean 宣言が不要なことに留意してください。 JSF 管理 Bean は、Seam コ"
+"ンポーネントです。 普通の JSF アプリケーションと比較すると、 Seam アプリケー"
+"ションは、<literal>faces-config.xml</literal> をほとんど使用しません。"
+
+#. Tag: para
+#: Tutorial.xml:322
+#, no-c-format
+msgid ""
+"In fact, once you have all the basic descriptors set up, the <emphasis>only</"
+"emphasis> XML you need to write as you add new functionality to a Seam "
+"application is the navigation rules, and possibly jBPM process definitions. "
+"Seam takes the view that <emphasis>process flow</emphasis> and "
+"<emphasis>configuration data</emphasis> are the only things that truly "
+"belong in XML."
+msgstr ""
+"実際、基本的な記述子の設定だけあれば、 新しい機能を Seam アプリケーションに追"
+"加するときに必要となる XML は、 ナビゲーション規則とたぶんjBPM プロセス定義 "
+"<emphasis>だけ</emphasis>です。 Seam は、XML に記された <emphasis>プロセスフ"
+"ロー</emphasis> と <emphasis>設定データ</emphasis>からビューを取得します。"
+
+#. Tag: para
+#: Tutorial.xml:325
+#, no-c-format
+msgid ""
+"In this simple example, we don&#39;t even need a navigation rule, since we "
+"decided to embed the view id in our action code."
+msgstr ""
+"この簡単なサンプルでは、 view id をアクションコードに埋め込んだため、 ナビ"
+"ゲーション規則さえ不要です。"
+
+#. Tag: title
+#: Tutorial.xml:330
+#, no-c-format
+msgid "The EJB deployment descriptor: <literal>ejb-jar.xml</literal>"
+msgstr "EJB 配備記述子 : <literal>ejb-jar.xml</literal>"
+
+#. Tag: para
+#: Tutorial.xml:331
+#, no-c-format
+msgid ""
+"The <literal>ejb-jar.xml</literal> file integrates Seam with EJB3, by "
+"attaching the <literal>SeamInterceptor</literal> to all session beans in the "
+"archive."
+msgstr ""
+"<literal>ejb-jar.xml</literal> ファイルは、 アーカイブ中のすべてのセッション "
+"Bean に <literal>SeamInterceptor</literal> を付加することによって EJB3 と統合"
+"します。"
+
+#. Tag: programlisting
+#: Tutorial.xml:334
+#, no-c-format
+msgid ""
+"&lt;ejb-jar xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \n"
+"         xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee \n"
+"                           http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"
+"\"\n"
+"         version=\"3.0\"&gt;\n"
+"         \n"
+"   &lt;interceptors&gt;\n"
+"     &lt;interceptor&gt;\n"
+"       &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"     &lt;/interceptor&gt;\n"
+"   &lt;/interceptors&gt;\n"
+"   \n"
+"   &lt;assembly-descriptor&gt;\n"
+"      &lt;interceptor-binding&gt;\n"
+"         &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"         &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"      &lt;/interceptor-binding&gt;\n"
+"   &lt;/assembly-descriptor&gt;\n"
+"   \n"
+"&lt;/ejb-jar&gt;"
+msgstr ""
+"&lt;ejb-jar xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \n"
+"         xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee \n"
+"                           http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"
+"\"\n"
+"         version=\"3.0\"&gt;\n"
+"         \n"
+"   &lt;interceptors&gt;\n"
+"     &lt;interceptor&gt;\n"
+"       &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"     &lt;/interceptor&gt;\n"
+"   &lt;/interceptors&gt;\n"
+"   \n"
+"   &lt;assembly-descriptor&gt;\n"
+"      &lt;interceptor-binding&gt;\n"
+"         &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"         &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"      &lt;/interceptor-binding&gt;\n"
+"   &lt;/assembly-descriptor&gt;\n"
+"   \n"
+"&lt;/ejb-jar&gt;"
+
+#. Tag: title
+#: Tutorial.xml:338
+#, no-c-format
+msgid "The EJB persistence deployment descriptor: <literal>persistence.xml</literal>"
+msgstr "EJB 永続配備記述子 : <literal>persistence.xml</literal>"
+
+#. Tag: para
+#: Tutorial.xml:339
+#, no-c-format
+msgid ""
+"The <literal>persistence.xml</literal> file tells the EJB persistence "
+"provider where to find the datasource, and contains some vendor-specific "
+"settings. In this case, enables automatic schema export at startup time."
+msgstr ""
+"<literal>persistence.xml</literal> ファイルは、EJB 永続プロバイダに、 データ"
+"ソースの場所を指示します。また、ベンダー特有の設定を含んでいます。 このサンプ"
+"ルでは起動時に自動スキーマエキスポートを可能としています。"
+
+#. Tag: programlisting
+#: Tutorial.xml:342
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;persistence xmlns=\"http://java.sun.com/xml/ns/persistence\" \n"
+"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence \n"
+"                           http://java.sun.com/xml/ns/persistence/"
+"persistence_1_0.xsd\" \n"
+"             version=\"1.0\"&gt;\n"
+"    &lt;persistence-unit name=\"userDatabase\"&gt;\n"
+"      &lt;provider&gt;org.hibernate.ejb.HibernatePersistence&lt;/"
+"provider&gt;\n"
+"      &lt;jta-data-source&gt;java:/DefaultDS&lt;/jta-data-source&gt;\n"
+"      &lt;properties&gt;\n"
+"         &lt;property name=\"hibernate.hbm2ddl.auto\" value=\"create-drop\"/"
+"&gt;\n"
+"      &lt;/properties&gt;\n"
+"    &lt;/persistence-unit&gt;\n"
+"&lt;/persistence&gt;"
+msgstr ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;persistence xmlns=\"http://java.sun.com/xml/ns/persistence\" \n"
+"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence \n"
+"                           http://java.sun.com/xml/ns/persistence/"
+"persistence_1_0.xsd\" \n"
+"             version=\"1.0\"&gt;\n"
+"    &lt;persistence-unit name=\"userDatabase\"&gt;\n"
+"      &lt;provider&gt;org.hibernate.ejb.HibernatePersistence&lt;/"
+"provider&gt;\n"
+"      &lt;jta-data-source&gt;java:/DefaultDS&lt;/jta-data-source&gt;\n"
+"      &lt;properties&gt;\n"
+"         &lt;property name=\"hibernate.hbm2ddl.auto\" value=\"create-drop\"/"
+"&gt;\n"
+"      &lt;/properties&gt;\n"
+"    &lt;/persistence-unit&gt;\n"
+"&lt;/persistence&gt;"
+
+#. Tag: title
+#: Tutorial.xml:346
+#, no-c-format
+msgid ""
+"The view: <literal>register.jsp</literal> and <literal>registered.jsp</"
+"literal>"
+msgstr "ビュー : <literal>register.jsp</literal>、<literal>registered.jsp</literal>"
+
+#. Tag: para
+#: Tutorial.xml:347
+#, no-c-format
+msgid ""
+"The view pages for a Seam application could be implemented using any "
+"technology that supports JSF. In this example we use JSP, since it is "
+"familiar to most developers and since we have minimal requirements here "
+"anyway. (But if you take our advice, you&#39;ll use Facelets for your own "
+"applications.)"
+msgstr ""
+"Seam アプリケーションのビューページは、 JSF をサポートする多くの技術を使用し"
+"て実装されています。 JSP は多くの開発者にとって知られていること、ここでは最小"
+"限の要件しかないため、 このサンプルでは、JSP を使用しています。 (ただし、 "
+"JBoss のアドバイスに従っている場合は、 ご使用のアプリケーションには Facelet "
+"を使用しているでしょう。)"
+
+#. Tag: programlisting
+#: Tutorial.xml:350
+#, no-c-format
+msgid ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://jboss.com/products/seam/taglib\" prefix=\"s\" %"
+"&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Register New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;table border=\"0\"&gt;\n"
+"       &lt;s:validateAll&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Username&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputText value=\"#{user.username}\"/&gt;&lt;/"
+"td&gt;\n"
+"         &lt;/tr&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Real Name&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputText value=\"#{user.name}\"/&gt;&lt;/td&gt;\n"
+"         &lt;/tr&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Password&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputSecret value=\"#{user.password}\"/&gt;&lt;/"
+"td&gt;\n"
+"         &lt;/tr&gt;\n"
+"       &lt;/s:validateAll&gt;\n"
+"     &lt;/table&gt;\n"
+"     &lt;h:messages/&gt;\n"
+"     &lt;h:commandButton type=\"submit\" value=\"Register\" action=\"#"
+"{register.register}\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://jboss.com/products/seam/taglib\" prefix=\"s\" %"
+"&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Register New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;table border=\"0\"&gt;\n"
+"       &lt;s:validateAll&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Username&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputText value=\"#{user.username}\"/&gt;&lt;/"
+"td&gt;\n"
+"         &lt;/tr&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Real Name&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputText value=\"#{user.name}\"/&gt;&lt;/td&gt;\n"
+"         &lt;/tr&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Password&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputSecret value=\"#{user.password}\"/&gt;&lt;/"
+"td&gt;\n"
+"         &lt;/tr&gt;\n"
+"       &lt;/s:validateAll&gt;\n"
+"     &lt;/table&gt;\n"
+"     &lt;h:messages/&gt;\n"
+"     &lt;h:commandButton type=\"submit\" value=\"Register\" action=\"#"
+"{register.register}\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+
+#. Tag: para
+#: Tutorial.xml:351
+#, no-c-format
+msgid ""
+"The only thing here that is specific to Seam is the <literal>&lt;s:"
+"validateAll&gt;</literal> tag. This JSF component tells JSF to validate all "
+"the contained input fields against the Hibernate Validator annotations "
+"specified on the entity bean."
+msgstr ""
+"ここで Seam 固有となるのは <literal>&lt;s:validateAll&gt;</literal> タグのみ"
+"です。 この JSF コンポーネントは 含まれるすべての入力フィールドをエンティティ"
+"bean で指定される Hibernate Validator アノテーションに対して検証するよう JSF "
+"に指示しています。"
+
+#. Tag: programlisting
+#: Tutorial.xml:354
+#, no-c-format
+msgid ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" %&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Successfully Registered New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"    Welcome, &lt;h:outputText value=\"#{user.name}\"/&gt;, \n"
+"    you are successfully registered as &lt;h:outputText value=\"#{user."
+"username}\"/&gt;.\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" %&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Successfully Registered New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"    Welcome, &lt;h:outputText value=\"#{user.name}\"/&gt;, \n"
+"    you are successfully registered as &lt;h:outputText value=\"#{user."
+"username}\"/&gt;.\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+
+#. Tag: para
+#: Tutorial.xml:355
+#, no-c-format
+msgid ""
+"This is a boring old JSP pages using standard JSF components. There is "
+"nothing specific to Seam here."
+msgstr ""
+"これは、標準 JSF コンポーネントを使用した何の変哲もない旧式の JSP ページで"
+"す。 Seam 独特のものはありません。"
+
+#. Tag: title
+#: Tutorial.xml:361
+#, no-c-format
+msgid "The EAR deployment descriptor: <literal>application.xml</literal>"
+msgstr "EAR 配備記述子 : <literal>application.xml</literal>"
+
+#. Tag: para
+#: Tutorial.xml:362
+#, no-c-format
+msgid ""
+"Finally, since our application is deployed as an EAR, we need a deployment "
+"descriptor there, too."
+msgstr ""
+"最後に、EARとして アプリケーションがデプロイされるため、配備記述子も必要にな"
+"ります。"
+
+#. Tag: programlisting
+#: Tutorial.xml:365
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;application xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee \n"
+"                                   http://java.sun.com/xml/ns/javaee/"
+"application_5.xsd\"\n"
+"             version=\"5\"&gt;\n"
+"             \n"
+"    &lt;display-name&gt;Seam Registration&lt;/display-name&gt;\n"
+"\n"
+"    &lt;module&gt;\n"
+"        &lt;web&gt;\n"
+"            &lt;web-uri&gt;jboss-seam-registration.war&lt;/web-uri&gt;\n"
+"            &lt;context-root&gt;/seam-registration&lt;/context-root&gt;\n"
+"        &lt;/web&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;ejb&gt;jboss-seam-registration.jar&lt;/ejb&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;jboss-seam.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;el-ri.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    \n"
+"&lt;/application&gt;"
+msgstr ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;application xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee \n"
+"                                   http://java.sun.com/xml/ns/javaee/"
+"application_5.xsd\"\n"
+"             version=\"5\"&gt;\n"
+"             \n"
+"    &lt;display-name&gt;Seam Registration&lt;/display-name&gt;\n"
+"\n"
+"    &lt;module&gt;\n"
+"        &lt;web&gt;\n"
+"            &lt;web-uri&gt;jboss-seam-registration.war&lt;/web-uri&gt;\n"
+"            &lt;context-root&gt;/seam-registration&lt;/context-root&gt;\n"
+"        &lt;/web&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;ejb&gt;jboss-seam-registration.jar&lt;/ejb&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;jboss-seam.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;el-ri.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    \n"
+"&lt;/application&gt;"
+
+#. Tag: para
+#: Tutorial.xml:366
+#, no-c-format
+msgid ""
+"This deployment descriptor links modules in the enterprise archive and binds "
+"the web application to the context root <literal>/seam-registration</"
+"literal>."
+msgstr ""
+"この配備記述子はエンタープライズアーカイブのモジュールとリンクし、 WEBアプリ"
+"ケーションをコンテキストルート <literal>/seam-registration</literal> にバイン"
+"ドします。"
+
+#. Tag: title
+#: Tutorial.xml:378 Tutorial.xml:526 Tutorial.xml:689 Tutorial.xml:804
+#, no-c-format
+msgid "How it works"
+msgstr "動作内容"
+
+#. Tag: para
+#: Tutorial.xml:379
+#, no-c-format
+msgid ""
+"When the form is submitted, JSF asks Seam to resolve the variable named "
+"<literal>user</literal>. Since there is no value already bound to that name "
+"(in any Seam context), Seam instantiates the <literal>user</literal> "
+"component, and returns the resulting <literal>User</literal> entity bean "
+"instance to JSF after storing it in the Seam session context."
+msgstr ""
+"フォームがサブミットされたとき、 JSF は、Seam に <literal>user</literal> とい"
+"う名前の変数を解決するよう要求します。 その名前にバインドされた値が存在しない"
+"ため (どの Seam コンテキストにも)、 Seam は、<literal>user</literal> コンポー"
+"ネントをインスタンス化し、 それを Seam セッションコンテキストに保管した後"
+"に、 <literal>User</literal> エンティティ Bean インスタンスを JSF に返しま"
+"す。"
+
+#. Tag: para
+#: Tutorial.xml:382
+#, no-c-format
+msgid ""
+"The form input values are now validated against the Hibernate Validator "
+"constraints specified on the <literal>User</literal> entity. If the "
+"constraints are violated, JSF redisplays the page. Otherwise, JSF binds the "
+"form input values to properties of the <literal>User</literal> entity bean."
+msgstr ""
+"フォームの入力値は、 <literal>User</literal> エンティティで指定された "
+"Hibernate Validator 制約に対してデータ整合性検証が行われるようになります。 制"
+"約に違反していると JSF はそのページを再表示します。 これ以外は、 フォームの入"
+"力値を <literal>User</literal> エンティティ Bean のプロパティにバインドしま"
+"す。"
+
+#. Tag: para
+#: Tutorial.xml:385
+#, no-c-format
+msgid ""
+"Next, JSF asks Seam to resolve the variable named <literal>register</"
+"literal>. Seam finds the <literal>RegisterAction</literal> stateless session "
+"bean in the stateless context and returns it. JSF invokes the "
+"<literal>register()</literal> action listener method."
+msgstr ""
+"次に、JSF は Seam に変数名 <literal>register</literal> の解決を要求します。 "
+"Seam は、ステートレスコンテキスト中の <literal>RegisterAction</literal> ス"
+"テートレスセッション Bean を見つけ、 それを返します。 JSF は、"
+"<literal>register()</literal> アクションリスナメソッドを呼び出します。"
+
+#. Tag: para
+#: Tutorial.xml:388
+#, no-c-format
+msgid ""
+"Seam intercepts the method call and injects the <literal>User</literal> "
+"entity from the Seam session context, before continuing the invocation."
+msgstr ""
+"Seam は、メソッド呼び出しをインターセプトし、呼び出しが進む前に、 Seam セッ"
+"ションコンテキストから <literal>User</literal> エンティティをインジェクトしま"
+"す。"
+
+#. Tag: para
+#: Tutorial.xml:391
+#, no-c-format
+msgid ""
+"The <literal>register()</literal> method checks if a user with the entered "
+"username already exists. If so, an error message is queued with the "
+"<literal>FacesMessages</literal> component, and a null outcome is returned, "
+"causing a page redisplay. The <literal>FacesMessages</literal> component "
+"interpolates the JSF expression embedded in the message string and adds a "
+"JSF <literal>FacesMessage</literal> to the view."
+msgstr ""
+"<literal>register()</literal> メソッドは入力されたユーザ名が既に存在するかど"
+"うかを調べます。 存在した場合、 エラーメッセージは <literal>FacesMessages</"
+"literal> コンポーネントでキューイングされ、 null 結果 (outcome) が返されて"
+"ページが再表示されることになります。 <literal>FacesMessages</literal> コン"
+"ポーネントはメッセージ文字列に組み込まれた JSF 式を補完し、 view に JSF "
+"<literal>FacesMessage</literal> を追加します。"
+
+#. Tag: para
+#: Tutorial.xml:394
+#, no-c-format
+msgid ""
+"If no user with that username exists, the <literal>\"/registered.jsp\"</"
+"literal> outcome triggers a browser redirect to the <literal>registered.jsp</"
+"literal> page. When JSF comes to render the page, it asks Seam to resolve "
+"the variable named <literal>user</literal> and uses property values of the "
+"returned <literal>User</literal> entity from Seam&#39;s session scope."
+msgstr ""
+"そのユーザ名のユーザが存在しない場合は、 <literal>\"/registered.jsp\"</"
+"literal> 結果 (outcome) により <literal>registered.jsp</literal> ページへのブ"
+"ラウザリダイレクトが発生します。 JSF がページのレンダリングに到達すると、 "
+"Seam に <literal>user</literal> という名前の変数の解決を要求し、 Seam のセッ"
+"ションスコープから返される <literal>User</literal> エンティティのプロパティ値"
+"を使用します。"
+
+#. Tag: title
+#: Tutorial.xml:402
+#, no-c-format
+msgid "Clickable lists in Seam: the messages example"
+msgstr "Seam でクリックが可能な一覧: 掲示板サンプル"
+
+#. Tag: para
+#: Tutorial.xml:403
+#, no-c-format
+msgid ""
+"Clickable lists of database search results are such an important part of any "
+"online application that Seam provides special functionality on top of JSF to "
+"make it easier to query data using EJB-QL or HQL and display it as a "
+"clickable list using a JSF <literal>&lt;h:dataTable&gt;</literal>. The "
+"messages example demonstrates this functionality."
+msgstr ""
+"データベースの検索結果をクリック可能一覧とすることは、 多くのオンラインアプリ"
+"ケーションにおいてたいへん重要な部分です。 Seam は、EJB-QL またHQL を使用した"
+"データクエリーと、 JSF <literal>&lt;h:dataTable&gt;</literal> を使用したク"
+"リック可能な一覧にそれを表示することを容易にするために、 JSF 上に特別な機能を"
+"提供します。 この掲示板サンプルは、この機能を実演しています。"
+
+#. Tag: para
+#: Tutorial.xml:416
+#, no-c-format
+msgid ""
+"The message list example has one entity bean, <literal>Message</literal>, "
+"one session bean, <literal>MessageListBean</literal> and one JSP."
+msgstr ""
+"この掲示板サンプルは、 1 つのエンティティ Bean である <literal>Message</"
+"literal>、 1 つのセッション Bean である <literal>MessageListBean</literal>、 "
+"そして 1 つの JSP から構成されています。"
+
+#. Tag: title
+#: Tutorial.xml:420
+#, no-c-format
+msgid "The entity bean: <literal>Message.java</literal>"
+msgstr "エンティティ Bean : <literal>Message.java</literal>"
+
+#. Tag: para
+#: Tutorial.xml:421
+#, no-c-format
+msgid ""
+"The <literal>Message</literal> entity defines the title, text, date and time "
+"of a message, and a flag indicating whether the message has been read:"
+msgstr ""
+"<literal>Message</literal> エンティティ Bean は、 タイトル、テキスト、掲示"
+"メッセージの日付と時間、 そして、メッセージが既読か否かを示すフラグを定義して"
+"います。"
+
+#. Tag: programlisting
+#: Tutorial.xml:424
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"message\")\n"
+"@Scope(EVENT)\n"
+"public class Message implements Serializable\n"
+"{\n"
+"   private Long id;\n"
+"   private String title;\n"
+"   private String text;\n"
+"   private boolean read;\n"
+"   private Date datetime;\n"
+"   \n"
+"   @Id @GeneratedValue\n"
+"   public Long getId() {\n"
+"      return id;\n"
+"   }\n"
+"   public void setId(Long id) {\n"
+"      this.id = id;\n"
+"   }\n"
+"   \n"
+"   @NotNull @Length(max=100)\n"
+"   public String getTitle() {\n"
+"      return title;\n"
+"   }\n"
+"   public void setTitle(String title) {\n"
+"      this.title = title;\n"
+"   }\n"
+"   \n"
+"   @NotNull @Lob\n"
+"   public String getText() {\n"
+"      return text;\n"
+"   }\n"
+"   public void setText(String text) {\n"
+"      this.text = text;\n"
+"   }\n"
+"   \n"
+"   @NotNull\n"
+"   public boolean isRead() {\n"
+"      return read;\n"
+"   }\n"
+"   public void setRead(boolean read) {\n"
+"      this.read = read;\n"
+"   }\n"
+"   \n"
+"   @NotNull \n"
+"   @Basic @Temporal(TemporalType.TIMESTAMP)\n"
+"   public Date getDatetime() {\n"
+"      return datetime;\n"
+"   }\n"
+"   public void setDatetime(Date datetime) {\n"
+"      this.datetime = datetime;\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+"@Entity\n"
+"@Name(\"message\")\n"
+"@Scope(EVENT)\n"
+"public class Message implements Serializable\n"
+"{\n"
+"   private Long id;\n"
+"   private String title;\n"
+"   private String text;\n"
+"   private boolean read;\n"
+"   private Date datetime;\n"
+"   \n"
+"   @Id @GeneratedValue\n"
+"   public Long getId() {\n"
+"      return id;\n"
+"   }\n"
+"   public void setId(Long id) {\n"
+"      this.id = id;\n"
+"   }\n"
+"   \n"
+"   @NotNull @Length(max=100)\n"
+"   public String getTitle() {\n"
+"      return title;\n"
+"   }\n"
+"   public void setTitle(String title) {\n"
+"      this.title = title;\n"
+"   }\n"
+"   \n"
+"   @NotNull @Lob\n"
+"   public String getText() {\n"
+"      return text;\n"
+"   }\n"
+"   public void setText(String text) {\n"
+"      this.text = text;\n"
+"   }\n"
+"   \n"
+"   @NotNull\n"
+"   public boolean isRead() {\n"
+"      return read;\n"
+"   }\n"
+"   public void setRead(boolean read) {\n"
+"      this.read = read;\n"
+"   }\n"
+"   \n"
+"   @NotNull \n"
+"   @Basic @Temporal(TemporalType.TIMESTAMP)\n"
+"   public Date getDatetime() {\n"
+"      return datetime;\n"
+"   }\n"
+"   public void setDatetime(Date datetime) {\n"
+"      this.datetime = datetime;\n"
+"   }\n"
+"   \n"
+"}"
+
+#. Tag: title
+#: Tutorial.xml:429
+#, no-c-format
+msgid "The stateful session bean: <literal>MessageManagerBean.java</literal>"
+msgstr "ステートフルセッション Bean : <literal>MessageManagerBean.java</literal>"
+
+#. Tag: para
+#: Tutorial.xml:430
+#, no-c-format
+msgid ""
+"Just like in the previous example, we have a session bean, "
+"<literal>MessageManagerBean</literal>, which defines the action listener "
+"methods for the two buttons on our form. One of the buttons selects a "
+"message from the list, and displays that message. The other button deletes a "
+"message. So far, this is not so different to the previous example."
+msgstr ""
+"前述のサンプル同様、 1 つのセッション Bean <literal>MessageManagerBean</"
+"literal> があります。 それは、フォームにある 2 つのボタンに対応するアクション"
+"リスナメソッドを定義しています。 ボタンの 1 つは、一覧からメッセージを選択"
+"し、 もう 1 つのボタンは、メッセージを削除します。 この点において、前述のサン"
+"プルと大きな違いはありません。"
+
+#. Tag: para
+#: Tutorial.xml:433
+#, no-c-format
+msgid ""
+"But <literal>MessageManagerBean</literal> is also responsible for fetching "
+"the list of messages the first time we navigate to the message list page. "
+"There are various ways the user could navigate to the page, and not all of "
+"them are preceded by a JSF action&mdash;the user might have bookmarked the "
+"page, for example. So the job of fetching the message list takes place in a "
+"Seam <emphasis>factory method</emphasis>, instead of in an action listener "
+"method."
+msgstr ""
+"しかし、 初めて掲示板ページに画面遷移するとき、 <literal>MessageManagerBean</"
+"literal> は、メッセージ一覧の取得も行います。 ユーザが画面を遷移させる方法は"
+"さまざまありますが、 これらのすべてが JSF アクションによって進められるわけで"
+"はありません &mdash; 例えば、 ユーザがそのページをブックマークしているかもし"
+"れません。 従って、メッセージ一覧を取得する作業は、 アクションリスナメソッド"
+"の代わりに、 Seam <emphasis>factory method</emphasis> で行われます。"
+
+#. Tag: para
+#: Tutorial.xml:436
+#, no-c-format
+msgid ""
+"We want to cache the list of messages in memory between server requests, so "
+"we will make this a stateful session bean."
+msgstr ""
+"メッセージの一覧をサーバリクエストにまたがってメモリにキャッシュしたいので、 "
+"ステートフルセッション Bean でこれを行います。"
+
+#. Tag: programlisting
+#: Tutorial.xml:450
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Scope(SESSION)\n"
+"@Name(\"messageManager\")\n"
+"public class MessageManagerBean implements Serializable, MessageManager\n"
+"{\n"
+"\n"
+"   @DataModel\n"
+"   private List&lt;Message&gt; messageList;\n"
+"   \n"
+"   @DataModelSelection\n"
+"   @Out(required=false)\n"
+"   private Message message;\n"
+"   \n"
+"   @PersistenceContext(type=EXTENDED)\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @Factory(\"messageList\")\n"
+"   public void findMessages()\n"
+"   {\n"
+"      messageList = em.createQuery(\"from Message msg order by msg.datetime "
+"desc\").getResultList();\n"
+"   }\n"
+"   \n"
+"   public void select()\n"
+"   {\n"
+"      message.setRead(true);\n"
+"   }\n"
+"   \n"
+"   public void delete()\n"
+"   {\n"
+"      messageList.remove(message);\n"
+"      em.remove(message);\n"
+"      message=null;\n"
+"   }\n"
+"   \n"
+"   @Remove @Destroy\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+"@Stateful\n"
+"@Scope(SESSION)\n"
+"@Name(\"messageManager\")\n"
+"public class MessageManagerBean implements Serializable, MessageManager\n"
+"{\n"
+"\n"
+"   @DataModel\n"
+"   private List&lt;Message&gt; messageList;\n"
+"   \n"
+"   @DataModelSelection\n"
+"   @Out(required=false)\n"
+"   private Message message;\n"
+"   \n"
+"   @PersistenceContext(type=EXTENDED)\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @Factory(\"messageList\")\n"
+"   public void findMessages()\n"
+"   {\n"
+"      messageList = em.createQuery(\"from Message msg order by msg.datetime "
+"desc\").getResultList();\n"
+"   }\n"
+"   \n"
+"   public void select()\n"
+"   {\n"
+"      message.setRead(true);\n"
+"   }\n"
+"   \n"
+"   public void delete()\n"
+"   {\n"
+"      messageList.remove(message);\n"
+"      em.remove(message);\n"
+"      message=null;\n"
+"   }\n"
+"   \n"
+"   @Remove @Destroy\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:453
+#, no-c-format
+msgid ""
+"The <literal>@DataModel</literal> annotation exposes an attibute of type "
+"<literal>java.util.List</literal> to the JSF page as an instance of "
+"<literal>javax.faces.model.DataModel</literal>. This allows us to use the "
+"list in a JSF <literal>&lt;h:dataTable&gt;</literal> with clickable links "
+"for each row. In this case, the <literal>DataModel</literal> is made "
+"available in a session context variable named <literal>messageList</literal>."
+msgstr ""
+"<literal>@DataModel</literal> アノテーションは、 <literal>java.util.List</"
+"literal> タイプの属性を、 <literal>javax.faces.model.DataModel</literal> イン"
+"スタンスとして JSF ページに公開します。 これは、各行に対してクリック可能なリ"
+"ンクを持つ JSF <literal>&lt;h:dataTable&gt;</literal> 中の一覧を使用可能とし"
+"ます。 このサンプルでは、 <literal>DataModel</literal> は、 "
+"<literal>messageList</literal> という名前のセッションコンテキスト中で利用可能"
+"になります。"
+
+#. Tag: para
+#: Tutorial.xml:458
+#, no-c-format
+msgid ""
+"The <literal>@DataModelSelection</literal> annotation tells Seam to inject "
+"the <literal>List</literal> element that corresponded to the clicked link."
+msgstr ""
+"<literal>@DataModelSelection</literal> アノテーションは、 Seam にクリックされ"
+"たリンクと関連した <literal>List</literal> 要素をインジェクトするよう指示して"
+"います。"
+
+#. Tag: para
+#: Tutorial.xml:463
+#, no-c-format
+msgid ""
+"The <literal>@Out</literal> annotation then exposes the selected value "
+"directly to the page. So ever time a row of the clickable list is selected, "
+"the <literal>Message</literal> is injected to the attribute of the stateful "
+"bean, and the subsequently <emphasis>outjected</emphasis> to the event "
+"context variable named <literal>message</literal>."
+msgstr ""
+"<literal>@Out</literal>アノテーションは、次に選択された値を直接ページに公開し"
+"ます。 従って、クリック可能一覧の行が選択されるたびに、 <literal>Message</"
+"literal> は、ステートフル Bean の属性にインジェクト (inject) され、 続いて "
+"<literal>message</literal> という名前のイベントコンテキスト変数にアウトジェク"
+"ト (outject) されます。"
+
+#. Tag: para
+#: Tutorial.xml:468
+#, no-c-format
+msgid ""
+"This stateful bean has an EJB3 <emphasis>extended persistence context</"
+"emphasis>. The messages retrieved in the query remain in the managed state "
+"as long as the bean exists, so any subsequent method calls to the stateful "
+"bean can update them without needing to make any explicit call to the "
+"<literal>EntityManager</literal>."
+msgstr ""
+"このステートフル Bean は、EJB3 <emphasis>拡張永続コンテキスト</emphasis> を"
+"持っています。 この Bean が存在する限り、 クエリー検索された messages は、管"
+"理された状態に保持されます。 従って、 それに続くステートフル Bean へのメソッ"
+"ド呼び出しは、 明示的に <literal>EntityManager</literal> を呼び出すことな"
+"く、 それらの更新が可能です。"
+
+#. Tag: para
+#: Tutorial.xml:473
+#, no-c-format
+msgid ""
+"The first time we navigate to the JSP page, there will be no value in the "
+"<literal>messageList</literal> context variable. The <literal>@Factory</"
+"literal> annotation tells Seam to create an instance of "
+"<literal>MessageManagerBean</literal> and invoke the <literal>findMessages()"
+"</literal> method to initialize the value. We call <literal>findMessages()</"
+"literal> a <emphasis>factory method</emphasis> for <literal>messages</"
+"literal>."
+msgstr ""
+"初めて JSP ページに画面遷移するとき、 <literal>messageList</literal> コンテキ"
+"スト変数中に値を持っていません。 <literal>@Factory</literal> アノテーション"
+"は、Seam に <literal>MessageManagerBean</literal> インスタンスの生成を指示"
+"し、 初期値を設定するために <literal>findMessages()</literal> メソッドを呼び"
+"出します。 <literal>findMessages()</literal> を <literal>messages</literal> "
+"の <emphasis>ファクトリーメソッド</emphasis>と呼びます。"
+
+#. Tag: para
+#: Tutorial.xml:478
+#, no-c-format
+msgid ""
+"The <literal>select()</literal> action listener method marks the selected "
+"<literal>Message</literal> as read, and updates it in the database."
+msgstr ""
+"<literal>select()</literal> アクションリスナメソッドは、 選択された "
+"<literal>Message</literal>に 既読 マークを付け、 データベース中のそれを更新し"
+"ます。"
+
+#. Tag: para
+#: Tutorial.xml:483
+#, no-c-format
+msgid ""
+"The <literal>delete()</literal> action listener method removes the selected "
+"<literal>Message</literal> from the database."
+msgstr ""
+"<literal>delete()</literal> アクションリスナメソッドは、 選択された "
+"<literal>Message</literal> をデータベースから削除します。"
+
+#. Tag: para
+#: Tutorial.xml:488
+#, no-c-format
+msgid ""
+"All stateful session bean Seam components <emphasis>must</emphasis> have a "
+"method marked <literal>@Remove @Destroy</literal> to ensure that Seam will "
+"remove the stateful bean when the Seam context ends, and clean up any server-"
+"side state."
+msgstr ""
+"すべてのステートフルセッション Bean の Seam コンポーネントは、 "
+"<literal>@Remove @Destroy</literal> とマークされたメソッドを持つことが "
+"<emphasis>必須 (must) </emphasis> です。 これにより、Seam コンテキストが終わ"
+"り、サーバサイドのあらゆる状態をクリーンアップするときに、 Seam は、確実にス"
+"テートフル Bean の削除を行います。"
+
+#. Tag: para
+#: Tutorial.xml:495
+#, no-c-format
+msgid ""
+"Note that this is a session-scoped Seam component. It is associated with the "
+"user login session, and all requests from a login session share the same "
+"instance of the component. (In Seam applications, we usually use session-"
+"scoped components sparingly.)"
+msgstr ""
+"これがセッションスコープの Seam コンポーネントであることに留意してください。 "
+"ユーザログインセッションと関連しログインセッションからのすべてのリクエスト"
+"は、 同じコンポーネントのインスタンスを共有します。 (Seam アプリケーションで"
+"は、セッションスコープのコンポーネントは控えめに使用してください。)"
+
+#. Tag: title
+#: Tutorial.xml:501
+#, no-c-format
+msgid "The session bean local interface: <literal>MessageManager.java</literal>"
+msgstr ""
+"セッション Bean ローカルインタフェース : <literal>MessageManager.java</"
+"literal>"
+
+#. Tag: para
+#: Tutorial.xml:502
+#, no-c-format
+msgid "All session beans have a business interface, of course."
+msgstr "もちろん、すべてのセッション Bean はインタフェースを持ちます。"
+
+#. Tag: programlisting
+#: Tutorial.xml:505
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface MessageManager\n"
+"{\n"
+"   public void findMessages();\n"
+"   public void select();\n"
+"   public void delete();\n"
+"   public void destroy();\n"
+"}"
+msgstr ""
+"@Local\n"
+"public interface MessageManager\n"
+"{\n"
+"   public void findMessages();\n"
+"   public void select();\n"
+"   public void delete();\n"
+"   public void destroy();\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:506
+#, no-c-format
+msgid "From now on, we won&#39;t show local interfaces in our code examples."
+msgstr "ここからは、サンプルコード中のローカルインタフェースの掲載を省略します。"
+
+#. Tag: para
+#: Tutorial.xml:509
+#, no-c-format
+msgid ""
+"Let&#39;s skip over <literal>components.xml</literal>, <literal>persistence."
+"xml</literal>, <literal>web.xml</literal>, <literal>ejb-jar.xml</literal>, "
+"<literal>faces-config.xml</literal> and <literal>application.xml</literal> "
+"since they are much the same as the previous example, and go straight to the "
+"JSP."
+msgstr ""
+"<literal>components.xml</literal>、<literal>persistence.xml</literal>、 "
+"<literal>web.xml</literal>、<literal>ejb-jar.xml</literal>、<literal>faces-"
+"config.xml</literal>、 そして <literal>application.xml</literal> は、前述まで"
+"のサンプルとほぼ同じなので、スキップして JSP に進みましょう。"
+
+#. Tag: title
+#: Tutorial.xml:515
+#, no-c-format
+msgid "The view: <literal>messages.jsp</literal>"
+msgstr "ビュー: <literal>messages.jsp</literal>"
+
+#. Tag: para
+#: Tutorial.xml:516
+#, no-c-format
+msgid ""
+"The JSP page is a straightforward use of the JSF <literal>&lt;h:dataTable&gt;"
+"</literal> component. Again, nothing specific to Seam."
+msgstr ""
+"このJSPページは JSF <literal>&lt;h:dataTable&gt;</literal> コンポーネントを使"
+"用した簡単なものです。 Seam として特別なものはありません。"
+
+#. Tag: programlisting
+#: Tutorial.xml:519
+#, no-c-format
+msgid ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" %&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Messages&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;h2&gt;Message List&lt;/h2&gt;\n"
+"     &lt;h:outputText value=\"No messages to display\" rendered=\"#"
+"{messageList.rowCount==0}\"/&gt;\n"
+"     &lt;h:dataTable var=\"msg\" value=\"#{messageList}\" rendered=\"#"
+"{messageList.rowCount&gt;0}\"&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Read\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:selectBooleanCheckbox value=\"#{msg.read}\" disabled=\"true"
+"\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Title\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:commandLink value=\"#{msg.title}\" action=\"#"
+"{messageManager.select}\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Date/Time\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:outputText value=\"#{msg.datetime}\"&gt;\n"
+"              &lt;f:convertDateTime type=\"both\" dateStyle=\"medium\" "
+"timeStyle=\"short\"/&gt;\n"
+"           &lt;/h:outputText&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;h:commandButton value=\"Delete\" action=\"#{messageManager."
+"delete}\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"     &lt;/h:dataTable&gt;\n"
+"     &lt;h3&gt;&lt;h:outputText value=\"#{message.title}\"/&gt;&lt;/h3&gt;\n"
+"     &lt;div&gt;&lt;h:outputText value=\"#{message.text}\"/&gt;&lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" %&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Messages&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;h2&gt;Message List&lt;/h2&gt;\n"
+"     &lt;h:outputText value=\"No messages to display\" rendered=\"#"
+"{messageList.rowCount==0}\"/&gt;\n"
+"     &lt;h:dataTable var=\"msg\" value=\"#{messageList}\" rendered=\"#"
+"{messageList.rowCount&gt;0}\"&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Read\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:selectBooleanCheckbox value=\"#{msg.read}\" disabled=\"true"
+"\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Title\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:commandLink value=\"#{msg.title}\" action=\"#"
+"{messageManager.select}\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Date/Time\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:outputText value=\"#{msg.datetime}\"&gt;\n"
+"              &lt;f:convertDateTime type=\"both\" dateStyle=\"medium\" "
+"timeStyle=\"short\"/&gt;\n"
+"           &lt;/h:outputText&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;h:commandButton value=\"Delete\" action=\"#{messageManager."
+"delete}\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"     &lt;/h:dataTable&gt;\n"
+"     &lt;h3&gt;&lt;h:outputText value=\"#{message.title}\"/&gt;&lt;/h3&gt;\n"
+"     &lt;div&gt;&lt;h:outputText value=\"#{message.text}\"/&gt;&lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+
+#. Tag: para
+#: Tutorial.xml:527
+#, no-c-format
+msgid ""
+"The first time we navigate to the <literal>messages.jsp</literal> page, "
+"whether by a JSF postback (faces request) or a direct browser GET request "
+"(non-faces request), the page will try to resolve the <literal>messageList</"
+"literal> context variable. Since this context variable is not initialized, "
+"Seam will call the factory method <literal>findMessages()</literal>, which "
+"performs a query against the database and results in a <literal>DataModel</"
+"literal> being outjected. This <literal>DataModel</literal> provides the row "
+"data needed for rendering the <literal>&lt;h:dataTable&gt;</literal>."
+msgstr ""
+"最初に、 <literal>messages.jsp</literal> ページに画面遷移させるとき、 JSF ポ"
+"ストバック (faces リクエスト) でも、 ブラウザからの直接的な GET リクエスト "
+"(non-faces リクエスト) でも、 ページは、<literal>messageList</literal> コンテ"
+"キスト変数を解決しようと試みます。 このコンテキスト変数は、初期化されていない"
+"ため、 Seam は、ファクトリーメソッド <literal>findMessages()</literal>を呼び"
+"出します。 それは、データベースにクエリー発行や、 アウトジェクト (outject) さ"
+"れた <literal>DataModel</literal> の結果取得を行います。 この "
+"<literal>DataModel</literal> は、 <literal>&lt;h:dataTable&gt;</literal> をレ"
+"ンダリングするために必要な行データを提供します。"
+
+#. Tag: para
+#: Tutorial.xml:530
+#, no-c-format
+msgid ""
+"When the user clicks the <literal>&lt;h:commandLink&gt;</literal>, JSF calls "
+"the <literal>select()</literal> action listener. Seam intercepts this call "
+"and injects the selected row data into the <literal>message</literal> "
+"attribute of the <literal>messageManager</literal> component. The action "
+"listener fires, marking the selected <literal>Message</literal> as read. At "
+"the end of the call, Seam outjects the selected <literal>Message</literal> "
+"to the context variable named <literal>message</literal>. Next, the EJB "
+"container commits the transaction, and the change to the <literal>Message</"
+"literal> is flushed to the database. Finally, the page is re-rendered, "
+"redisplaying the message list, and displaying the selected message below it."
+msgstr ""
+"ユーザが <literal>&lt;h:commandLink&gt;</literal> をクリックすると、 JSF は "
+"<literal>select()</literal> アクションリスナを呼び出します。 Seam はこの呼び"
+"出しをインターセプトして選択された行データを <literal>messageManager</"
+"literal> コンポーネントの <literal>message</literal> 属性にインジェクトしま"
+"す。 アクションリスナが実行されて、 選択 <literal>Message</literal> を既読"
+"マークを付けます。 呼び出しの終わりに、 Seam は、選択 <literal>Message</"
+"literal> を <literal>message</literal> という名前のコンテキスト変数にアウト"
+"ジェクトします。 次に、 EJB コンテナはトランザクションをコミットし、 "
+"<literal>Message</literal> に対する変更がデータベースにフラッシュされます。 "
+"最後に、 このページが再度レンダリングされてメッセージ一覧を再表示、 その下に"
+"選択メッセージが表示されます。"
+
+#. Tag: para
+#: Tutorial.xml:533
+#, no-c-format
+msgid ""
+"If the user clicks the <literal>&lt;h:commandButton&gt;</literal>, JSF calls "
+"the <literal>delete()</literal> action listener. Seam intercepts this call "
+"and injects the selected row data into the <literal>message</literal> "
+"attribute of the <literal>messageList</literal> component. The action "
+"listener fires, removing the selected <literal>Message</literal> from the "
+"list, and also calling <literal>remove()</literal> on the "
+"<literal>EntityManager</literal>. At the end of the call, Seam refreshes the "
+"<literal>messageList</literal> context variable and clears the context "
+"variable named <literal>message</literal>. The EJB container commits the "
+"transaction, and deletes the <literal>Message</literal> from the database. "
+"Finally, the page is re-rendered, redisplaying the message list."
+msgstr ""
+"ユーザが <literal>&lt;h:commandButton&gt;</literal> をクリックすると、 JSF "
+"は、<literal>delete()</literal> アクションリスナを呼び出します。 Seam はこの"
+"呼び出しをインターセプトし、 選択された行データを <literal>messageList</"
+"literal> コンポーネントの <literal>message</literal> 属性にインジェクトしま"
+"す。 アクションリスナが起動し、 選択 <literal>Message</literal> が一覧から削"
+"除され、 <literal>EntityManager</literal> の <literal>remove()</literal> が呼"
+"び出されます。 呼び出しの終わりに、 Seam は <literal>messageList</literal> コ"
+"ンテキスト変数を更新し、 <literal>message</literal> という名前のコンテキスト"
+"変数を消去します。 EJB コ ンテナはトランザクションをコミットし、 データベース"
+"から <literal>Message</literal> を削除します。 最後に、 このページが再度レン"
+"ダリングされ、 メッセージ一覧を再表示します。"
+
+#. Tag: title
+#: Tutorial.xml:541
+#, no-c-format
+msgid "Seam and jBPM: the todo list example"
+msgstr "Seam と jBPM : TO-DO 一覧サンプル"
+
+#. Tag: para
+#: Tutorial.xml:542
+#, no-c-format
+msgid ""
+"jBPM provides sophisticated functionality for workflow and task management. "
+"To get a small taste of how jBPM integrates with Seam, we&#39;ll show you a "
+"simple \"todo list\" application. Since managing lists of tasks is such core "
+"functionality for jBPM, there is hardly any Java code at all in this example."
+msgstr ""
+"jBPM は、ワークフローやタスク管理の優れた機能を提供します。 どのように jBPM "
+"が Seam と統合されているかを知るために、 簡単な To-Do リストアプリケーション"
+"をお見せしましょう。 タスクの一覧を管理することは、jBPM の中心的な機能である"
+"ため、 このサンプルには Java コードがほとんどありません。"
+
+#. Tag: para
+#: Tutorial.xml:555
+#, no-c-format
+msgid ""
+"The center of this example is the jBPM process definition. There are also "
+"two JSPs and two trivial JavaBeans (There was no reason to use session "
+"beans, since they do not access the database, or have any other "
+"transactional behavior). Let&#39;s start with the process definition:"
+msgstr ""
+"このサンプルの中心は、jBPM のプロセス定義です。 2 つの JSP と 2 つのちょっと"
+"した JavaBean もあります。 (データベースアクセスやトランザクション特性がない"
+"ので、 セッション Bean を使用する理由はありません。) それではプロセス定義から"
+"始めましょう。"
+
+#. Tag: programlisting
+#: Tutorial.xml:566
+#, no-c-format
+msgid ""
+"&lt;process-definition name=\"todo\"&gt;\n"
+"   \n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"todo\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;task-node name=\"todo\"&gt;\n"
+"      &lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"         &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"      &lt;/task&gt;\n"
+"      &lt;transition to=\"done\"/&gt;\n"
+"   &lt;/task-node&gt;\n"
+"   \n"
+"   &lt;end-state name=\"done\"/&gt;\n"
+"   \n"
+"&lt;/process-definition&gt;"
+msgstr ""
+"&lt;process-definition name=\"todo\"&gt;\n"
+"   \n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"todo\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;task-node name=\"todo\"&gt;\n"
+"      &lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"         &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"      &lt;/task&gt;\n"
+"      &lt;transition to=\"done\"/&gt;\n"
+"   &lt;/task-node&gt;\n"
+"   \n"
+"   &lt;end-state name=\"done\"/&gt;\n"
+"   \n"
+"&lt;/process-definition&gt;"
+
+#. Tag: para
+#: Tutorial.xml:569
+#, no-c-format
+msgid ""
+"The <literal>&lt;start-state&gt;</literal> node represents the logical start "
+"of the process. When the process starts, it immediately transitions to the "
+"<literal>todo</literal> node."
+msgstr ""
+"<literal>&lt;start-state&gt;</literal> ノードはプロセスの論理的な開始を表しま"
+"す。 プロセスが開始したとき、 それはすぐに <literal>todo</literal> に遷移しま"
+"す。"
+
+#. Tag: para
+#: Tutorial.xml:574
+#, no-c-format
+msgid ""
+"The <literal>&lt;task-node&gt;</literal> node represents a <emphasis>wait "
+"state</emphasis>, where business process execution pauses, waiting for one "
+"or more tasks to be performed."
+msgstr ""
+"<literal>&lt;task-node&gt;</literal> ノードは、<emphasis>待ち状態</emphasis> "
+"を表します。 ビジネスプロセスの実行が一時停止され、 1 つまたは複数のタスクが"
+"行われるのを待機します。"
+
+#. Tag: para
+#: Tutorial.xml:579
+#, no-c-format
+msgid ""
+"The <literal>&lt;task&gt;</literal> element defines a task to be performed "
+"by a user. Since there is only one task defined on this node, when it is "
+"complete, execution resumes, and we transition to the end state. The task "
+"gets its description from a Seam component named <literal>todoList</literal> "
+"(one of the JavaBeans)."
+msgstr ""
+"<literal>&lt;task&gt;</literal> 要素は、ユーザによって実行されるタスクを定義"
+"します。 このノードには 1 つのタスクしか定義されていないので、 それが完了する"
+"と実行が再開され、 終了状態に遷移していきます。 このタスクは、 "
+"<literal>todoList</literal> という名前の Seam コンポーネント (JavaBean の 一"
+"種) から description を取得します。"
+
+#. Tag: para
+#: Tutorial.xml:584
+#, no-c-format
+msgid ""
+"Tasks need to be assigned to a user or group of users when they are created. "
+"In this case, the task is assigned to the current user, which we get from a "
+"built-in Seam component named <literal>actor</literal>. Any Seam component "
+"may be used to perform task assignment."
+msgstr ""
+"タスクが生成されたとき、タスクにはユーザあるいはユーザグループを割り当てる必"
+"要があります。 このサンプルでは、タスクは、現在のユーザに割り当てられていま"
+"す。 それは、<literal>actor</literal> という名前の組み込み Seam コンポーネン"
+"トから取得します。 どのような Seam コンポーネントもタスク割り当てを実行するた"
+"めに使用される可能性があります。"
+
+#. Tag: para
+#: Tutorial.xml:589
+#, no-c-format
+msgid ""
+"The <literal>&lt;end-state&gt;</literal> node defines the logical end of the "
+"business process. When execution reaches this node, the process instance is "
+"destroyed."
+msgstr ""
+"<literal>&lt;end-state&gt;</literal>ノードは、ビジネスプロセスの論理的な終了"
+"を定義します。 実行がこのノードに到達したとき、 プロセスインスタンスは、破棄"
+"されます。"
+
+#. Tag: para
+#: Tutorial.xml:596
+#, no-c-format
+msgid ""
+"If we view this process definition using the process definition editor "
+"provided by JBossIDE, this is what it looks like:"
+msgstr ""
+"JBossIDE に提供されたプロセス定義エディタを使用してプロセス定義を見た場合、 "
+"以下のようになります。"
+
+#. Tag: para
+#: Tutorial.xml:607
+#, no-c-format
+msgid ""
+"This document defines our <emphasis>business process</emphasis> as a graph "
+"of nodes. This is the most trivial possible business process: there is one "
+"<emphasis>task</emphasis> to be performed, and when that task is complete, "
+"the business process ends."
+msgstr ""
+"このドキュメントは、ノードのグラフとして <emphasis>ビジネスプロセス</"
+"emphasis> を定義します。 これはささいな現実にあり得るビジネスプロセスです。 "
+"実行されなければならない <emphasis>タスク</emphasis> は、1 つだけです。 タス"
+"クが完了したとき ビジネスプロセスは終了します。"
+
+#. Tag: para
+#: Tutorial.xml:610
+#, no-c-format
+msgid ""
+"The first JavaBean handles the login screen <literal>login.jsp</literal>. "
+"Its job is just to initialize the jBPM actor id using the <literal>actor</"
+"literal> component. (In a real application, it would also need to "
+"authenticate the user.)"
+msgstr ""
+"最初の JavaBean はログイン画面 <literal>login.jsp</literal> を処理します。 処"
+"理作業は、 単に <literal>actor</literal> コンポーネントを使用して jBPM actor "
+"id を初期化するだけです。 (実際のアプリケーションでは、 ユーザ認証も必要で"
+"す。)"
+
+#. Tag: programlisting
+#: Tutorial.xml:613
+#, no-c-format
+msgid ""
+"@Name(\"login\")\n"
+"public class Login {\n"
+"   \n"
+"   @In\n"
+"   private Actor actor;\n"
+"   \n"
+"   private String user;\n"
+"\n"
+"   public String getUser() {\n"
+"      return user;\n"
+"   }\n"
+"\n"
+"   public void setUser(String user) {\n"
+"      this.user = user;\n"
+"   }\n"
+"   \n"
+"   public String login()\n"
+"   {\n"
+"      actor.setId(user);\n"
+"      return \"/todo.jsp\";\n"
+"   }\n"
+"}"
+msgstr ""
+"@Name(\"login\")\n"
+"public class Login {\n"
+"   \n"
+"   @In\n"
+"   private Actor actor;\n"
+"   \n"
+"   private String user;\n"
+"\n"
+"   public String getUser() {\n"
+"      return user;\n"
+"   }\n"
+"\n"
+"   public void setUser(String user) {\n"
+"      this.user = user;\n"
+"   }\n"
+"   \n"
+"   public String login()\n"
+"   {\n"
+"      actor.setId(user);\n"
+"      return \"/todo.jsp\";\n"
+"   }\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:614
+#, no-c-format
+msgid ""
+"Here we see the use of <literal>@In</literal> to inject the built-in "
+"<literal>Actor</literal> component."
+msgstr ""
+"ここでは、組み込み <literal>Actor</literal> コンポーネントをインジェクトする"
+"ために、 <literal>@In</literal> を使用しているのがわかります。"
+
+#. Tag: para
+#: Tutorial.xml:617
+#, no-c-format
+msgid "The JSP itself is trivial:"
+msgstr "次の JSP 自体は重要ではありません。"
+
+#. Tag: programlisting
+#: Tutorial.xml:620
+#, no-c-format
+msgid ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"%&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"%&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Login&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Login&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    &lt;h:form&gt;\n"
+"      &lt;div&gt;\n"
+"        &lt;h:inputText value=\"#{login.user}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Login\" action=\"#{login.login}\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"    &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"%&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"%&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Login&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Login&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    &lt;h:form&gt;\n"
+"      &lt;div&gt;\n"
+"        &lt;h:inputText value=\"#{login.user}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Login\" action=\"#{login.login}\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"    &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+
+#. Tag: para
+#: Tutorial.xml:621
+#, no-c-format
+msgid ""
+"The second JavaBean is responsible for starting business process instances, "
+"and ending tasks."
+msgstr ""
+"2 つめの JavaBean は、ビジネスプロセスインスタンスの開始とタスクの終了を担当"
+"します。"
+
+#. Tag: programlisting
+#: Tutorial.xml:630
+#, no-c-format
+msgid ""
+"@Name(\"todoList\")\n"
+"public class TodoList {\n"
+"   \n"
+"   private String description;\n"
+"   \n"
+"   public String getDescription()\n"
+"   {\n"
+"      return description;\n"
+"   }\n"
+"\n"
+"   public void setDescription(String description) {\n"
+"      this.description = description;\n"
+"   }\n"
+"   \n"
+"   @CreateProcess(definition=\"todo\")\n"
+"   public void createTodo() {}\n"
+"   \n"
+"   @StartTask @EndTask\n"
+"   public void done() {}\n"
+"\n"
+"}"
+msgstr ""
+"@Name(\"todoList\")\n"
+"public class TodoList {\n"
+"   \n"
+"   private String description;\n"
+"   \n"
+"   public String getDescription()\n"
+"   {\n"
+"      return description;\n"
+"   }\n"
+"\n"
+"   public void setDescription(String description) {\n"
+"      this.description = description;\n"
+"   }\n"
+"   \n"
+"   @CreateProcess(definition=\"todo\")\n"
+"   public void createTodo() {}\n"
+"   \n"
+"   @StartTask @EndTask\n"
+"   public void done() {}\n"
+"\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:633
+#, no-c-format
+msgid ""
+"The description property accepts user input form the JSP page, and exposes "
+"it to the process definition, allowing the task description to be set."
+msgstr ""
+"description プロパティは、JSP ページからユーザ入力を受け取り、 タスク内容  "
+"(description) が設定されるように、それをプロセス定義に公開します。"
+
+#. Tag: para
+#: Tutorial.xml:638
+#, no-c-format
+msgid ""
+"The Seam <literal>@CreateProcess</literal> annotation creates a new jBPM "
+"process instance for the named process definition."
+msgstr ""
+"Seam <literal>@CreateProcess</literal> アノテーションは、名前付きプロセス定義"
+"のために jBPM プロセスインスタンスを生成します。"
+
+#. Tag: para
+#: Tutorial.xml:643
+#, no-c-format
+msgid ""
+"The Seam <literal>@StartTask</literal> annotation starts work on a task. The "
+"<literal>@EndTask</literal> ends the task, and allows the business process "
+"execution to resume."
+msgstr ""
+"Seam <literal>@StartTask</literal> アノテーションは、タスク上で作業を開始しま"
+"す。 <literal>@EndTask</literal> は、タスクを終了し、ビジネスプロセスの再開を"
+"可能にします。"
+
+#. Tag: para
+#: Tutorial.xml:650
+#, no-c-format
+msgid ""
+"In a more realistic example, <literal>@StartTask</literal> and "
+"<literal>@EndTask</literal> would not appear on the same method, because "
+"there is usually work to be done using the application in order to complete "
+"the task."
+msgstr ""
+"より現実的なサンプルでは、 <literal>@StartTask</literal> と "
+"<literal>@EndTask</literal> は同じメソッドの上には登場しません。 なぜなら、通"
+"常、タスクを完了するために、アプリケーションを使用して行われる仕事があるから"
+"です。"
+
+#. Tag: para
+#: Tutorial.xml:653
+#, no-c-format
+msgid "Finally, the meat of the application is in <literal>todo.jsp</literal>:"
+msgstr ""
+"最後に、このアプリケーションのポイントは <literal>todo.jsp</literal> にありま"
+"す。"
+
+#. Tag: programlisting
+#: Tutorial.xml:656
+#, no-c-format
+msgid ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://jboss.com/products/seam/taglib\" prefix=\"s\" %"
+"&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Todo List&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Todo List&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"   &lt;h:form id=\"list\"&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:outputText value=\"There are no todo items.\" rendered=\"#"
+"{empty \n"
+"                                       taskInstanceList}\"/&gt;\n"
+"         &lt;h:dataTable value=\"#{taskInstanceList}\" var=\"task\" rendered="
+"\"#{not empty \n"
+"                                       taskInstanceList}\"&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Description\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.description}\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Created\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:outputText value=\"#{task.taskMgmtInstance."
+"processInstance.start}\"&gt;\n"
+"                    &lt;f:convertDateTime type=\"date\"/&gt;\n"
+"                &lt;/h:outputText&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Priority\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.priority}\" style=\"width: 30"
+"\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Due Date\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.dueDate}\" style=\"width: 100"
+"\"&gt;\n"
+"                    &lt;f:convertDateTime type=\"date\" dateStyle=\"short\"/"
+"&gt;\n"
+"                &lt;/h:inputText&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;s:button value=\"Done\" action=\"#{todoList.done}\" "
+"taskInstance=\"#{task}\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"         &lt;/h:dataTable&gt;\n"
+"      &lt;/div&gt;\n"
+"      &lt;div&gt;\n"
+"      &lt;h:messages/&gt;\n"
+"      &lt;/div&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:commandButton value=\"Update Items\" action=\"update\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"   &lt;h:form id=\"new\"&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:inputText value=\"#{todoList.description}\"/&gt;\n"
+"         &lt;h:commandButton value=\"Create New Item\" action=\"#{todoList."
+"createTodo}\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://jboss.com/products/seam/taglib\" prefix=\"s\" %"
+"&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Todo List&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Todo List&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"   &lt;h:form id=\"list\"&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:outputText value=\"There are no todo items.\" rendered=\"#"
+"{empty \n"
+"                                       taskInstanceList}\"/&gt;\n"
+"         &lt;h:dataTable value=\"#{taskInstanceList}\" var=\"task\" rendered="
+"\"#{not empty \n"
+"                                       taskInstanceList}\"&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Description\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.description}\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Created\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:outputText value=\"#{task.taskMgmtInstance."
+"processInstance.start}\"&gt;\n"
+"                    &lt;f:convertDateTime type=\"date\"/&gt;\n"
+"                &lt;/h:outputText&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Priority\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.priority}\" style=\"width: 30"
+"\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Due Date\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.dueDate}\" style=\"width: 100"
+"\"&gt;\n"
+"                    &lt;f:convertDateTime type=\"date\" dateStyle=\"short\"/"
+"&gt;\n"
+"                &lt;/h:inputText&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;s:button value=\"Done\" action=\"#{todoList.done}\" "
+"taskInstance=\"#{task}\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"         &lt;/h:dataTable&gt;\n"
+"      &lt;/div&gt;\n"
+"      &lt;div&gt;\n"
+"      &lt;h:messages/&gt;\n"
+"      &lt;/div&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:commandButton value=\"Update Items\" action=\"update\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"   &lt;h:form id=\"new\"&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:inputText value=\"#{todoList.description}\"/&gt;\n"
+"         &lt;h:commandButton value=\"Create New Item\" action=\"#{todoList."
+"createTodo}\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+
+#. Tag: para
+#: Tutorial.xml:657
+#, no-c-format
+msgid "Let&#39;s take this one piece at a time."
+msgstr "1 つずつ見ていきます。"
+
+#. Tag: para
+#: Tutorial.xml:660
+#, no-c-format
+msgid ""
+"The page renders a list of tasks, which it gets from a built-in Seam "
+"component named <literal>taskInstanceList</literal>. The list is defined "
+"inside a JSF form."
+msgstr ""
+"ページはタスク一覧をレンダリングしています。 これは、"
+"<literal>taskInstanceList</literal> と呼ばれる Seam 組み込みコンポーネントか"
+"ら取得します。 この一覧はJSFフォームの中に定義されています。"
+
+#. Tag: programlisting
+#: Tutorial.xml:663
+#, no-c-format
+msgid ""
+"&lt;h:form id=\"list\"&gt;\n"
+"   &lt;div&gt;\n"
+"      &lt;h:outputText value=\"There are no todo items.\" rendered=\"#{empty "
+"taskInstanceList}\"/&gt;\n"
+"      &lt;h:dataTable value=\"#{taskInstanceList}\" var=\"task\" rendered=\"#"
+"{not empty taskInstanceList}\"&gt;\n"
+"         ...\n"
+"      &lt;/h:dataTable&gt;\n"
+"   &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h:form id=\"list\"&gt;\n"
+"   &lt;div&gt;\n"
+"      &lt;h:outputText value=\"There are no todo items.\" rendered=\"#{empty "
+"taskInstanceList}\"/&gt;\n"
+"      &lt;h:dataTable value=\"#{taskInstanceList}\" var=\"task\" rendered=\"#"
+"{not empty taskInstanceList}\"&gt;\n"
+"         ...\n"
+"      &lt;/h:dataTable&gt;\n"
+"   &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+
+#. Tag: para
+#: Tutorial.xml:664
+#, no-c-format
+msgid ""
+"Each element of the list is an instance of the jBPM class "
+"<literal>TaskInstance</literal>. The following code simply displays the "
+"interesting properties of each task in the list. For the description, "
+"priority and due date, we use input controls, to allow the user to update "
+"these values."
+msgstr ""
+"一覧の各要素は jBPM クラス <literal>TaskInstance</literal> のインスタンスで"
+"す。 以下のコードは単に、一覧中の各タスクの興味深いプロパティを表示していま"
+"す。 記述内容、 優先順や、 納期の値については、 ユーザーがこれらの値を更新で"
+"きるよう入力コントロールを使用します。"
+
+#. Tag: programlisting
+#: Tutorial.xml:667
+#, no-c-format
+msgid ""
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"       &lt;h:outputText value=\"Description\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.description}\"/&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Created\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:outputText value=\"#{task.taskMgmtInstance.processInstance.start}"
+"\"&gt;\n"
+"        &lt;f:convertDateTime type=\"date\"/&gt;\n"
+"    &lt;/h:outputText&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Priority\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.priority}\" style=\"width: 30\"/&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Due Date\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.dueDate}\" style=\"width: 100\"&gt;\n"
+"        &lt;f:convertDateTime type=\"date\" dateStyle=\"short\"/&gt;\n"
+"    &lt;/h:inputText&gt;\n"
+"&lt;/h:column&gt;"
+msgstr ""
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"       &lt;h:outputText value=\"Description\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.description}\"/&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Created\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:outputText value=\"#{task.taskMgmtInstance.processInstance.start}"
+"\"&gt;\n"
+"        &lt;f:convertDateTime type=\"date\"/&gt;\n"
+"    &lt;/h:outputText&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Priority\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.priority}\" style=\"width: 30\"/&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Due Date\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.dueDate}\" style=\"width: 100\"&gt;\n"
+"        &lt;f:convertDateTime type=\"date\" dateStyle=\"short\"/&gt;\n"
+"    &lt;/h:inputText&gt;\n"
+"&lt;/h:column&gt;"
+
+#. Tag: para
+#: Tutorial.xml:668
+#, no-c-format
+msgid ""
+"This button ends the task by calling the action method annotated "
+"<literal>@StartTask @EndTask</literal>. It passes the task id to Seam as a "
+"request parameter:"
+msgstr ""
+"このボタンは、 <literal>@StartTask @EndTask</literal> アノテーション付きのア"
+"クションメソッドが呼び出されることにより終了します。 それは、task id をリクエ"
+"ストパラメータとして Seam に渡します。"
+
+#. Tag: programlisting
+#: Tutorial.xml:671
+#, no-c-format
+msgid ""
+"&lt;h:column&gt;\n"
+"    &lt;s:button value=\"Done\" action=\"#{todoList.done}\" taskInstance=\"#"
+"{task}\"/&gt;\n"
+"&lt;/h:column&gt;"
+msgstr ""
+"&lt;h:column&gt;\n"
+"    &lt;s:button value=\"Done\" action=\"#{todoList.done}\" taskInstance=\"#"
+"{task}\"/&gt;\n"
+"&lt;/h:column&gt;"
+
+#. Tag: para
+#: Tutorial.xml:672
+#, no-c-format
+msgid ""
+"(Note that this is using a Seam <literal>&lt;s:button&gt;</literal> JSF "
+"control from the <literal>seam-ui.jar</literal> package.)"
+msgstr ""
+"(<literal>seam-ui.jar</literal> パッケージから、 Seam <literal>&lt;s:"
+"button&gt;</literal> JSF コントロールを使用していることに留意してください。)"
+
+#. Tag: para
+#: Tutorial.xml:675
+#, no-c-format
+msgid ""
+"This button is used to update the properties of the tasks. When the form is "
+"submitted, Seam and jBPM will make any changes to the tasks persistent. "
+"There is no need for any action listener method:"
+msgstr ""
+"このボタンは、 タスクのプロパティを変更するために使用されます。 フォームがサ"
+"ブミットされたとき、 Seam と jBPM は、タスクに対するどのような変化も永続化し"
+"ます。 アクションリスナメソッドは全く不要です。"
+
+#. Tag: programlisting
+#: Tutorial.xml:678
+#, no-c-format
+msgid "&lt;h:commandButton value=\"Update Items\" action=\"update\"/&gt;"
+msgstr "&lt;h:commandButton value=\"Update Items\" action=\"update\"/&gt;"
+
+#. Tag: para
+#: Tutorial.xml:679
+#, no-c-format
+msgid ""
+"A second form on the page is used to create new items, by calling the action "
+"method annotated <literal>@CreateProcess</literal>."
+msgstr ""
+"ページの 2 つ目のフォームは新しいアイテムを作成するために使用されます。 "
+"<literal>@CreateProcess</literal>アノテーション付きアクションメソッドから呼び"
+"出されることにより行われます。"
+
+#. Tag: programlisting
+#: Tutorial.xml:682
+#, no-c-format
+msgid ""
+"&lt;h:form id=\"new\"&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:inputText value=\"#{todoList.description}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Create New Item\" action=\"#{todoList."
+"createTodo}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h:form id=\"new\"&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:inputText value=\"#{todoList.description}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Create New Item\" action=\"#{todoList."
+"createTodo}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+
+#. Tag: para
+#: Tutorial.xml:683
+#, no-c-format
+msgid ""
+"There are several other files needed for the example, but they are just "
+"standard jBPM and Seam configuration and not very interesting."
+msgstr ""
+"このサンプルには、その他いくつか必要なファイルがありますが、 それらは 標準的"
+"な jBPM や Seam の設定であり特殊なものはありません。"
+
+#. Tag: para
+#: Tutorial.xml:690 Tutorial.xml:805 Tutorial.xml:1148 Tutorial.xml:1174
+#: Tutorial.xml:1187
+#, no-c-format
+msgid "TODO"
+msgstr "TODO"
+
+#. Tag: title
+#: Tutorial.xml:698
+#, no-c-format
+msgid "Seam pageflow: the numberguess example"
+msgstr "Seam ページフロー: 数字当てゲームサンプル"
+
+#. Tag: para
+#: Tutorial.xml:699
+#, no-c-format
+msgid ""
+"For Seam applications with relatively freeform (ad hoc) navigation, JSF/Seam "
+"navigation rules are a perfectly good way to define the page flow. For "
+"applications with a more constrained style of navigation, especially for "
+"user interfaces which are more stateful, navigation rules make it difficult "
+"to really understand the flow of the system. To understand the flow, you "
+"need to piece it together from the view pages, the actions and the "
+"navigation rules."
+msgstr ""
+"比較的自由な (アドホック) 画面遷移をさせる Seam アプリケーションの場合、 JSF/"
+"Seam ナビゲーション規則がページフローを定義するのに最適な方法となります。 画"
+"面遷移に制約が多いスタイルのアプリケーションの場合、 特によりステートフルな"
+"ユーザインタフェースの場合、 ナビゲーション規則ではシステムの流れを本当に理解"
+"するのは困難になります。 フローを理解するには、 ビューページ、 アクション、 "
+"ナビゲーション規則からフローに関する情報をかき集める必要があります。"
+
+#. Tag: para
+#: Tutorial.xml:702
+#, no-c-format
+msgid ""
+"Seam allows you to use a jPDL process definition to define pageflow. The "
+"simple number guessing example shows how this is done."
+msgstr ""
+"Seam は、jPDL プロセス定義を使うことでページフロー定義を可能にします。 この簡"
+"単な数字当てゲームサンプルからどのようにこれが実現されているかがわかります。"
+
+#. Tag: para
+#: Tutorial.xml:715
+#, no-c-format
+msgid ""
+"The example is implemented using one JavaBean, three JSP pages and a jPDL "
+"pageflow definition. Let&#39;s begin with the pageflow:"
+msgstr ""
+"このサンプルは 1 つのJavaBean、3 つの JSP ページ、それと jPDL プロセスフロー"
+"定義で実装されています。 ページフローから見始めましょう。"
+
+#. Tag: programlisting
+#: Tutorial.xml:725
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"numberGuess\"&gt;\n"
+"   \n"
+"   &lt;start-page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"          &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"      &lt;/transition&gt;\n"
+"   &lt;/start-page&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess."
+"correctGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateRemainingGuesses\" expression=\"#{numberGuess."
+"lastGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"lose\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"displayGuess\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"lose\" view-id=\"/lose.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+"&lt;pageflow-definition name=\"numberGuess\"&gt;\n"
+"   \n"
+"   &lt;start-page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"          &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"      &lt;/transition&gt;\n"
+"   &lt;/start-page&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess."
+"correctGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateRemainingGuesses\" expression=\"#{numberGuess."
+"lastGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"lose\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"displayGuess\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"lose\" view-id=\"/lose.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+
+#. Tag: para
+#: Tutorial.xml:728
+#, no-c-format
+msgid ""
+"The <literal>&lt;page&gt;</literal> element defines a wait state where the "
+"system displays a particular JSF view and waits for user input. The "
+"<literal>view-id</literal> is the same JSF view id used in plain JSF "
+"navigation rules. The <literal>redirect</literal> attribute tells Seam to "
+"use post-then-redirect when navigating to the page. (This results in "
+"friendly browser URLs.)"
+msgstr ""
+"<literal>&lt;page&gt;</literal> 要素は、待ち状態を定義しています。 ここでは、"
+"システムは特定の JSF ビューを表示し、ユーザ入力を待っています。 "
+"<literal>view-id</literal> は普通の JSF ナビゲーション規則で使用されている "
+"JSF view id と同じものです。 ページが画面遷移するときに、 <literal>redirect</"
+"literal> 属性は、Seam に post-then-redirect の使用を指示しています。 (この結"
+"果がブラウザ URL に表示されます。)"
+
+#. Tag: para
+#: Tutorial.xml:733
+#, no-c-format
+msgid ""
+"The <literal>&lt;transition&gt;</literal> element names a JSF outcome. The "
+"transition is triggered when a JSF action results in that outcome. Execution "
+"will then proceed to the next node of the pageflow graph, after invocation "
+"of any jBPM transition actions."
+msgstr ""
+"<literal>&lt;transition&gt;</literal> 要素は JSF 結果 (outcome) に名前を付け"
+"ます。 JSF アクションがその結果 (outcome) となる場合に、 transition が起動さ"
+"れます。 jBPM transition action が呼び出された後、 実行はページフローグラフの"
+"次のノードに進みます。"
+
+#. Tag: para
+#: Tutorial.xml:738
+#, no-c-format
+msgid ""
+"A transition <literal>&lt;action&gt;</literal> is just like a JSF action, "
+"except that it occurs when a jBPM transition occurs. The transition action "
+"can invoke any Seam component."
+msgstr ""
+"transition の <literal>&lt;action&gt;</literal> は、 jBPM の transitionでそれ"
+"が起こることを除けば、 JSF action と同じです。 transition action は、どのよう"
+"な Seam コンポーネントでも呼び出すことが可能です。"
+
+#. Tag: para
+#: Tutorial.xml:743
+#, no-c-format
+msgid ""
+"A <literal>&lt;decision&gt;</literal> node branches the pageflow, and "
+"determines the next node to execute by evaluating a JSF EL expression."
+msgstr ""
+"<literal>&lt;decision&gt;</literal> ノードはページフローを分岐させ、 JSF EL "
+"式を評価することによって次に実行されるノードを決定します。"
+
+#. Tag: para
+#: Tutorial.xml:750
+#, no-c-format
+msgid "Here is what the pageflow looks like in the JBossIDE pageflow editor:"
+msgstr "JBossIDE ページフローエディタでのページフローは以下のようになります。"
+
+#. Tag: para
+#: Tutorial.xml:761
+#, no-c-format
+msgid ""
+"Now that we have seen the pageflow, it is very, very easy to understand the "
+"rest of the application!"
+msgstr ""
+"ページフローを見終わりました。 アプリケーションの残りの部分を理解することはも"
+"う簡単です。"
+
+#. Tag: para
+#: Tutorial.xml:764
+#, no-c-format
+msgid "Here is the main page of the application, <literal>numberGuess.jsp</literal>:"
+msgstr ""
+"これはアプリケーションの主要なページ <literal>numberGuess.jsp</literal> で"
+"す。"
+
+#. Tag: programlisting
+#: Tutorial.xml:767
+#, no-c-format
+msgid ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"%&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"%&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Guess a number...&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Guess a number...&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    &lt;h:form&gt;\n"
+"        &lt;h:outputText value=\"Higher!\" rendered=\"#{numberGuess."
+"randomNumber&gt;numberGuess.currentGuess}\" /&gt;\n"
+"        &lt;h:outputText value=\"Lower!\" rendered=\"#{numberGuess."
+"randomNumber&lt;numberGuess.currentGuess}\" /&gt;\n"
+"        &lt;br /&gt;\n"
+"        I&#39;m thinking of a number between &lt;h:outputText value=\"#"
+"{numberGuess.smallest}\" /&gt; and \n"
+"        &lt;h:outputText value=\"#{numberGuess.biggest}\" /&gt;. You have \n"
+"        &lt;h:outputText value=\"#{numberGuess.remainingGuesses}\" /&gt; "
+"guesses.\n"
+"        &lt;br /&gt;\n"
+"        Your guess: \n"
+"        &lt;h:inputText value=\"#{numberGuess.currentGuess}\" id=\"guess\" "
+"required=\"true\"&gt;\n"
+"            &lt;f:validateLongRange\n"
+"                maximum=\"#{numberGuess.biggest}\" \n"
+"                minimum=\"#{numberGuess.smallest}\"/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"        &lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"guess"
+"\" /&gt;\n"
+"        &lt;br/&gt;\n"
+"        &lt;h:message for=\"guess\" style=\"color: red\"/&gt;\n"
+"    &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"%&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"%&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Guess a number...&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Guess a number...&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    &lt;h:form&gt;\n"
+"        &lt;h:outputText value=\"Higher!\" rendered=\"#{numberGuess."
+"randomNumber&gt;numberGuess.currentGuess}\" /&gt;\n"
+"        &lt;h:outputText value=\"Lower!\" rendered=\"#{numberGuess."
+"randomNumber&lt;numberGuess.currentGuess}\" /&gt;\n"
+"        &lt;br /&gt;\n"
+"        I&#39;m thinking of a number between &lt;h:outputText value=\"#"
+"{numberGuess.smallest}\" /&gt; and \n"
+"        &lt;h:outputText value=\"#{numberGuess.biggest}\" /&gt;. You have \n"
+"        &lt;h:outputText value=\"#{numberGuess.remainingGuesses}\" /&gt; "
+"guesses.\n"
+"        &lt;br /&gt;\n"
+"        Your guess: \n"
+"        &lt;h:inputText value=\"#{numberGuess.currentGuess}\" id=\"guess\" "
+"required=\"true\"&gt;\n"
+"            &lt;f:validateLongRange\n"
+"                maximum=\"#{numberGuess.biggest}\" \n"
+"                minimum=\"#{numberGuess.smallest}\"/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"        &lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"guess"
+"\" /&gt;\n"
+"        &lt;br/&gt;\n"
+"        &lt;h:message for=\"guess\" style=\"color: red\"/&gt;\n"
+"    &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+
+#. Tag: para
+#: Tutorial.xml:768
+#, no-c-format
+msgid ""
+"Notice how the command button names the <literal>guess</literal> transition "
+"instead of calling an action directly."
+msgstr ""
+"アクションを直接呼び出す代わりに、 どのようにコマンドボタンは<literal>guess</"
+"literal> transitionを指定しているかに着目してください。"
+
+#. Tag: para
+#: Tutorial.xml:771
+#, no-c-format
+msgid "The <literal>win.jsp</literal> page is predictable:"
+msgstr "<literal>win.jsp</literal> ページはごく普通のものです。"
+
+#. Tag: programlisting
+#: Tutorial.xml:774
+#, no-c-format
+msgid ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"%&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"%&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;You won!&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;You won!&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    Yes, the answer was &lt;h:outputText value=\"#{numberGuess.currentGuess}"
+"\" /&gt;.\n"
+"    It took you &lt;h:outputText value=\"#{numberGuess.guessCount}\" /&gt; "
+"guesses.\n"
+"    Would you like to &lt;a href=\"numberGuess.seam\"&gt;play again&lt;/"
+"a&gt;?\n"
+"  &lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"%&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"%&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;You won!&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;You won!&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    Yes, the answer was &lt;h:outputText value=\"#{numberGuess.currentGuess}"
+"\" /&gt;.\n"
+"    It took you &lt;h:outputText value=\"#{numberGuess.guessCount}\" /&gt; "
+"guesses.\n"
+"    Would you like to &lt;a href=\"numberGuess.seam\"&gt;play again&lt;/"
+"a&gt;?\n"
+"  &lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+
+#. Tag: para
+#: Tutorial.xml:775
+#, no-c-format
+msgid ""
+"As is <literal>lose.jsp</literal> (which I can&#39;t be bothered copy/"
+"pasting). Finally, the JavaBean Seam component:"
+msgstr ""
+"<literal>lose.jsp</literal> も同様です (同様なので省略します)。 最後は、 "
+"JavaBean Seam コンポーネントです。"
+
+#. Tag: programlisting
+#: Tutorial.xml:783
+#, no-c-format
+msgid ""
+"@Name(\"numberGuess\")\n"
+"@Scope(ScopeType.CONVERSATION)\n"
+"public class NumberGuess {\n"
+"   \n"
+"   private int randomNumber;\n"
+"   private Integer currentGuess;\n"
+"   private int biggest;\n"
+"   private int smallest;\n"
+"   private int guessCount;\n"
+"   private int maxGuesses;\n"
+"   \n"
+"   @Create \n"
+"   @Begin(pageflow=\"numberGuess\")\n"
+"   public void begin()\n"
+"   {\n"
+"      randomNumber = new Random().nextInt(100);\n"
+"      guessCount = 0;\n"
+"      biggest = 100;\n"
+"      smallest = 1;\n"
+"   }\n"
+"   \n"
+"   public void setCurrentGuess(Integer guess)\n"
+"   {\n"
+"      this.currentGuess = guess;\n"
+"   }\n"
+"   \n"
+"   public Integer getCurrentGuess()\n"
+"   {\n"
+"      return currentGuess;\n"
+"   }\n"
+"   \n"
+"   public void guess()\n"
+"   {\n"
+"      if (currentGuess&gt;randomNumber)\n"
+"      {\n"
+"         biggest = currentGuess - 1;\n"
+"      }\n"
+"      if (currentGuess&lt;randomNumber)\n"
+"      {\n"
+"         smallest = currentGuess + 1;\n"
+"      }\n"
+"      guessCount ++;\n"
+"   }\n"
+"   \n"
+"   public boolean isCorrectGuess()\n"
+"   {\n"
+"      return currentGuess==randomNumber;\n"
+"   }\n"
+"   \n"
+"   public int getBiggest()\n"
+"   {\n"
+"      return biggest;\n"
+"   }\n"
+"   \n"
+"   public int getSmallest()\n"
+"   {\n"
+"      return smallest;\n"
+"   }\n"
+"   \n"
+"   public int getGuessCount()\n"
+"   {\n"
+"      return guessCount;\n"
+"   }\n"
+"   \n"
+"   public boolean isLastGuess()\n"
+"   {\n"
+"      return guessCount==maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getRemainingGuesses() {\n"
+"      return maxGuesses-guessCount;\n"
+"   }\n"
+"\n"
+"   public void setMaxGuesses(int maxGuesses) {\n"
+"      this.maxGuesses = maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getMaxGuesses() {\n"
+"      return maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getRandomNumber() {\n"
+"      return randomNumber;\n"
+"   }\n"
+"}"
+msgstr ""
+"@Name(\"numberGuess\")\n"
+"@Scope(ScopeType.CONVERSATION)\n"
+"public class NumberGuess {\n"
+"   \n"
+"   private int randomNumber;\n"
+"   private Integer currentGuess;\n"
+"   private int biggest;\n"
+"   private int smallest;\n"
+"   private int guessCount;\n"
+"   private int maxGuesses;\n"
+"   \n"
+"   @Create \n"
+"   @Begin(pageflow=\"numberGuess\")\n"
+"   public void begin()\n"
+"   {\n"
+"      randomNumber = new Random().nextInt(100);\n"
+"      guessCount = 0;\n"
+"      biggest = 100;\n"
+"      smallest = 1;\n"
+"   }\n"
+"   \n"
+"   public void setCurrentGuess(Integer guess)\n"
+"   {\n"
+"      this.currentGuess = guess;\n"
+"   }\n"
+"   \n"
+"   public Integer getCurrentGuess()\n"
+"   {\n"
+"      return currentGuess;\n"
+"   }\n"
+"   \n"
+"   public void guess()\n"
+"   {\n"
+"      if (currentGuess&gt;randomNumber)\n"
+"      {\n"
+"         biggest = currentGuess - 1;\n"
+"      }\n"
+"      if (currentGuess&lt;randomNumber)\n"
+"      {\n"
+"         smallest = currentGuess + 1;\n"
+"      }\n"
+"      guessCount ++;\n"
+"   }\n"
+"   \n"
+"   public boolean isCorrectGuess()\n"
+"   {\n"
+"      return currentGuess==randomNumber;\n"
+"   }\n"
+"   \n"
+"   public int getBiggest()\n"
+"   {\n"
+"      return biggest;\n"
+"   }\n"
+"   \n"
+"   public int getSmallest()\n"
+"   {\n"
+"      return smallest;\n"
+"   }\n"
+"   \n"
+"   public int getGuessCount()\n"
+"   {\n"
+"      return guessCount;\n"
+"   }\n"
+"   \n"
+"   public boolean isLastGuess()\n"
+"   {\n"
+"      return guessCount==maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getRemainingGuesses() {\n"
+"      return maxGuesses-guessCount;\n"
+"   }\n"
+"\n"
+"   public void setMaxGuesses(int maxGuesses) {\n"
+"      this.maxGuesses = maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getMaxGuesses() {\n"
+"      return maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getRandomNumber() {\n"
+"      return randomNumber;\n"
+"   }\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:786
+#, no-c-format
+msgid ""
+"The first time a JSP page asks for a <literal>numberGuess</literal> "
+"component, Seam will create a new one for it, and the <literal>@Create</"
+"literal> method will be invoked, allowing the component to initialize itself."
+msgstr ""
+"最初に、JSP ページが <literal>numberGuess</literal> コンポーネントを要求する"
+"とき、 Seam は新しいコンポーネントを生成します。 そして、<literal>@Create</"
+"literal> メソッドが呼ばれ、 コンポーネント自身の初期化が可能になります。"
+
+#. Tag: para
+#: Tutorial.xml:791
+#, no-c-format
+msgid ""
+"The <literal>@Begin</literal> annotation starts a Seam "
+"<emphasis>conversation</emphasis> (much more about that later), and "
+"specifies the pageflow definition to use for the conversation&#39;s page "
+"flow."
+msgstr ""
+"<literal>@Begin</literal> アノテーションは、 Seam の<emphasis>対話</emphasis>"
+"を開始し (詳細は後述)、 対話のページフローを使用するためのページフロー定義を"
+"指定します。"
+
+#. Tag: para
+#: Tutorial.xml:798
+#, no-c-format
+msgid ""
+"As you can see, this Seam component is pure business logic! It doesn&#39;t "
+"need to know anything at all about the user interaction flow. This makes the "
+"component potentially more reuseable."
+msgstr ""
+"お分かりの通り、この Seam コンポーネントは純粋なビジネスロジックです。 ユーザ"
+"インタラクションのフローについて理解する必要はまったくありません。 これにより"
+"コンポーネント再利用の可能性を向上させます。"
+
+#. Tag: title
+#: Tutorial.xml:813
+#, no-c-format
+msgid "A complete Seam application: the Hotel Booking example"
+msgstr "本格的 Seam アプリケーション: ホテル予約サンプル"
+
+#. Tag: title
+#: Tutorial.xml:815
+#, no-c-format
+msgid "Introduction"
+msgstr "はじめに"
+
+#. Tag: para
+#: Tutorial.xml:816
+#, no-c-format
+msgid ""
+"The booking application is a complete hotel room reservation system "
+"incorporating the following features:"
+msgstr ""
+"この予約アプリケーションは以下の特徴を持つ本格的なホテルの部屋予約システムで"
+"す。"
+
+#. Tag: para
+#: Tutorial.xml:821
+#, no-c-format
+msgid "User registration"
+msgstr "ユーザ登録"
+
+#. Tag: para
+#: Tutorial.xml:826
+#, no-c-format
+msgid "Login"
+msgstr "ログイン"
+
+#. Tag: para
+#: Tutorial.xml:831
+#, no-c-format
+msgid "Logout"
+msgstr "ログアウト"
+
+#. Tag: para
+#: Tutorial.xml:836
+#, no-c-format
+msgid "Set password"
+msgstr "パスワード設定"
+
+#. Tag: para
+#: Tutorial.xml:841
+#, no-c-format
+msgid "Hotel search"
+msgstr "ホテル検索"
+
+#. Tag: para
+#: Tutorial.xml:846
+#, no-c-format
+msgid "Hotel selection"
+msgstr "ホテル選択"
+
+#. Tag: para
+#: Tutorial.xml:851
+#, no-c-format
+msgid "Room reservation"
+msgstr "部屋予約"
+
+#. Tag: para
+#: Tutorial.xml:856
+#, no-c-format
+msgid "Reservation confirmation"
+msgstr "予約確認"
+
+#. Tag: para
+#: Tutorial.xml:861
+#, no-c-format
+msgid "Existing reservation list"
+msgstr "現状の予約一覧"
+
+#. Tag: title
+#: Tutorial.xml:868
+#, no-c-format
+msgid "Booking Example"
+msgstr "予約サンプル"
+
+#. Tag: para
+#: Tutorial.xml:877
+#, no-c-format
+msgid ""
+"The booking application uses JSF, EJB 3.0 and Seam, together with Facelets "
+"for the view. There is also a port of this application to JSF, Facelets, "
+"Seam, JavaBeans and Hibernate3."
+msgstr ""
+"この予約アプリケーションは JSF、EJB 3.0、Seam とともにビューとして Facelet を"
+"使用しています。 JSF、Facelets、Seam、JavaBeans そして、Hibernate3 のアプリ"
+"ケーションの移植版もあります"
+
+#. Tag: para
+#: Tutorial.xml:880
+#, no-c-format
+msgid ""
+"One of the things you&#39;ll notice if you play with this application for "
+"long enough is that it is extremely <emphasis>robust</emphasis>. You can "
+"play with back buttons and browser refresh and opening multiple windows and "
+"entering nonsensical data as much as you like and you will find it very "
+"difficult to make the application crash. You might think that we spent weeks "
+"testing and fixing bugs to achive this. Actually, this is not the case. Seam "
+"was designed to make it very straightforward to build robust web "
+"applications and a lot of robustness that you are probably used to having to "
+"code yourself comes naturally and automatically with Seam."
+msgstr ""
+"このアプリケーションをある程度の期間、 いじってわかることの 1 つは、 それがと"
+"ても <emphasis>堅牢 (robust) </emphasis>であることです。 戻るボタンをいじって"
+"も、 ブラウザの更新をしても、 複数のウィンドを開いても、 無意味なデータを好き"
+"なだけ入力しても、 アプリケーションをクラッシュさせることがとても困難であるこ"
+"とがわかります。 これを達成するためにテストやバグ取りに何週間も掛かったと思わ"
+"れるかもしれません。 現実的にはそんなことありません。 Seam は、堅牢な WEB ア"
+"プリケーションを簡単に構築できるように設計されています。 そして、これまでコー"
+"ディングそのものによって得られていた堅牢性は、 Seam を使用することで自然かつ"
+"自動的に得られます。"
+
+#. Tag: para
+#: Tutorial.xml:883
+#, no-c-format
+msgid ""
+"As you browse the sourcecode of the example application, and learn how the "
+"application works, observe how the declarative state management and "
+"integrated validation has been used to achieve this robustness."
+msgstr ""
+"サンプルアプリケーションのコードを見れば、 どのようにアプリケーションが動作し"
+"ているか習得できます。 そして、この堅牢性の達成するために、 どのように宣言的"
+"状態管理や統合されたデータ妥当性検証が使用されているかを見ることができます。"
+
+#. Tag: title
+#: Tutorial.xml:889
+#, no-c-format
+msgid "Overview of the booking example"
+msgstr "予約サンプルの概要"
+
+#. Tag: para
+#: Tutorial.xml:890
+#, no-c-format
+msgid ""
+"The project structure is identical to the previous one, to install and "
+"deploy this application, please refer to <xref linkend="
+"\"Seam_Reference_Guide-Seam_Tutorial-Try_the_examples\"/>. Once you&#39;ve "
+"successfully started the application, you can access it by pointing your "
+"browser to <ulink url=\"http://localhost:8080/seam-booking/"
+"\"><literal>http://localhost:8080/seam-booking/</literal></ulink>"
+msgstr ""
+"プロジェクトの構成は以前のものと同じです。 このアプリケーションのインストール"
+"およびデプロイを行う場合は、 <xref linkend=\"Seam_Reference_Guide-"
+"Seam_Tutorial-Try_the_examples\"/> を参照してください。 うまくアプリケーショ"
+"ンが起動したならば、 ブラウザから指定して <ulink url=\"http://localhost:8080/"
+"seam-booking/\"><literal>http://localhost:8080/seam-booking/</literal></"
+"ulink> にアクセスすることが可能です。"
+
+#. Tag: para
+#: Tutorial.xml:893
+#, no-c-format
+msgid ""
+"Just nine classes (plus six session beans local interfaces) where used to "
+"implement this application. Six session bean action listeners contain all "
+"the business logic for the listed features."
+msgstr ""
+"ちょうど 9 つのクラス (加えて、6 つのセッション Bean のインタフェースと 1 つ"
+"のアノテーションのインタフェース) が、 このアプリケーションの実装のために使わ"
+"れています。 6 つのセッション Bean アクションリスナは一覧に記載された特徴のた"
+"めにすべてのビジネスロジックを含んでいます。"
+
+#. Tag: para
+#: Tutorial.xml:898
+#, no-c-format
+msgid ""
+"<literal>BookingListAction</literal> retrieves existing bookings for the "
+"currently logged in user."
+msgstr ""
+"<literal>BookingListAction</literal> は、その時のログインユーザのために現状の"
+"予約を取得します。"
+
+#. Tag: para
+#: Tutorial.xml:901
+#, no-c-format
+msgid ""
+"<literal>ChangePasswordAction</literal> updates the password of the "
+"currently logged in user."
+msgstr ""
+"<literal>ChangePasswordAction</literal> は、その時のログインユーザのパスワー"
+"ドを変更します。"
+
+#. Tag: para
+#: Tutorial.xml:904
+#, no-c-format
+msgid ""
+"<literal>HotelBookingAction</literal> implements the core functionality of "
+"the application: hotel room searching, selection, booking and booking "
+"confirmation. This functionality is implemented as a <emphasis>conversation</"
+"emphasis>, so this is the most interesting class in the application."
+msgstr ""
+"<literal>HotelBookingAction</literal> は、アプリケーションの中核的機能を実装"
+"します。 ホテルルーム検索、 選択、 予約、 予約確認など。 この機能は、 "
+"<emphasis>conversation</emphasis> として実装されるため、 このアプリケーション"
+"ではもっとも関心を引くクラスです。"
+
+#. Tag: para
+#: Tutorial.xml:907
+#, no-c-format
+msgid "<literal>RegisterAction</literal> registers a new system user."
+msgstr "<literal>RegisterAction</literal> は、新しいシステムユーザを登録します。"
+
+#. Tag: para
+#: Tutorial.xml:910
+#, no-c-format
+msgid "Three entity beans implement the application&#39;s persistent domain model."
+msgstr ""
+"3 つのエンティティ Bean がアプリケーションの永続ドメインモデルを実装していま"
+"す。"
+
+#. Tag: para
+#: Tutorial.xml:915
+#, no-c-format
+msgid "<literal>Hotel</literal> is an entity bean that represents a hotel"
+msgstr "<literal>Hotel</literal> は、ホテルを表すエンティティ Bean です。"
+
+#. Tag: para
+#: Tutorial.xml:920
+#, no-c-format
+msgid ""
+"<literal>Booking</literal> is an entity bean that represents an existing "
+"booking"
+msgstr "<literal>Booking</literal> は、現状の予約を表すエンティティ Bean です。"
+
+#. Tag: para
+#: Tutorial.xml:925
+#, no-c-format
+msgid ""
+"<literal>User</literal> is an entity bean to represents a user who can make "
+"hotel bookings"
+msgstr ""
+"<literal>User</literal> は、ホテル予約ができるユーザを表すエンティティ Bean "
+"です。"
+
+#. Tag: title
+#: Tutorial.xml:933
+#, no-c-format
+msgid "Understanding Seam conversations"
+msgstr "Seam 対話の理解"
+
+#. Tag: para
+#: Tutorial.xml:934
+#, no-c-format
+msgid ""
+"We encourage you browse the sourcecode at your pleasure. In this tutorial "
+"we&#39;ll concentrate upon one particular piece of functionality: hotel "
+"search, selection, booking and confirmation. From the point of view of the "
+"user, everything from selecting a hotel to confirming a booking is one "
+"continuous unit of work, a <emphasis>conversation</emphasis>. Searching, "
+"however, is <emphasis>not</emphasis> part of the conversation. The user can "
+"select multiple hotels from the same search results page, in different "
+"browser tabs."
+msgstr ""
+"気が向いたならばソースコードを読まれることをお勧めします。 このチュートリアル"
+"では、特定の機能 (ホテル検索、選択、予約と確認) に集中します。 ユーザの視点か"
+"ら見ると、 ホテルの選択から予約確認までのすべては、1 つの連続した仕事の単"
+"位、 つまり <emphasis>対話 (conversations) </emphasis> です。 しかし、検索"
+"は、対話の一部では<emphasis>ありません</emphasis>。 ユーザは、 異なるブラウザ"
+"タブで同じ検索結果ページから複数のホテルを選択可能です。"
+
+#. Tag: para
+#: Tutorial.xml:937
+#, no-c-format
+msgid ""
+"Most web application architectures have no first class construct to "
+"represent a conversation. This causes enormous problems managing state "
+"associated with the conversation. Usually, Java web applications use a "
+"combination of two techniques: first, some state is thrown into the "
+"<literal>HttpSession</literal>; second, persistable state is flushed to the "
+"database after every request, and reconstructed from the database at the "
+"beginning of each new request."
+msgstr ""
+"ほとんどの WEB アプリケーションのアーキテクチャは、対話を公開するための構造を"
+"持っていません。 対話に関連する状態管理に膨大な問題を引き起こすためです。 通"
+"常、Java WEB アプリケーションは 2 つの技術を組み合わせて使用します。 最初に、"
+"なんらかの状態が <literal>HttpSession</literal> に投げられ、 2 番目に、リクエ"
+"ストの後に必ず永続可能な状態がデータベースに書き込みされてから、 新規リクエス"
+"トそれぞれの冒頭で永続可能な状態がデータベースから再構築されます。"
+
+#. Tag: para
+#: Tutorial.xml:940
+#, no-c-format
+msgid ""
+"Since the database is the least scalable tier, this often results in an "
+"utterly unacceptable lack of scalability. Added latency is also a problem, "
+"due to the extra traffic to and from the database on every request. To "
+"reduce this redundant traffic, Java applications often introduce a data "
+"(second-level) cache that keeps commonly accessed data between requests. "
+"This cache is necessarily inefficient, because invalidation is based upon an "
+"LRU policy instead of being based upon when the user has finished working "
+"with the data. Furthermore, because the cache is shared between many "
+"concurrent transactions, we&#39;ve introduced a whole raft of problem&#39;s "
+"associated with keeping the cached state consistent with the database."
+msgstr ""
+"データベースは最もスケーラビリティに乏しい層なので、 許容不能なほどスケーラビ"
+"リティに乏しい結果となることもよくあります。 リクエストごとデータベースを行き"
+"来する転送量が増加するため、 追加待ち時間も問題となります。 この冗長な転送量"
+"を減少させるために、 Java アプリケーションではリクエスト間でよくアクセスされ"
+"るデータを保管するデータキャッシュ (2 次レベル) を導入する場合がよくありま"
+"す。 このキャッシュは、必ずしも効率的ではありません。 なぜならデータが無効か"
+"どうかの判断をユーザがデータの操作を終了したかどうかを基にして行うのではな"
+"く、 LRU ポリシーをベースとして行うためです。 さらに、 キャッシュは多くの並列"
+"トランザクション間で共有されるので、 キャッシュされた状態とデータベース間の一"
+"貫性維持に関する多くの問題をも取り入れてしまうことになるためです。"
+
+#. Tag: para
+#: Tutorial.xml:943
+#, no-c-format
+msgid ""
+"Now consider the state held in the <literal>HttpSession</literal>. By very "
+"careful programming, we might be able to control the size of the session "
+"data. This is a lot more difficult than it sounds, since web browsers permit "
+"ad hoc non-linear navigation. But suppose we suddenly discover a system "
+"requirement that says that a user is allowed to have <emphasis>mutiple "
+"concurrent conversations</emphasis>, halfway through the development of the "
+"system (this has happened to me). Developing mechanisms to isolate session "
+"state associated with different concurrent conversations, and incorporating "
+"failsafes to ensure that conversation state is destroyed when the user "
+"aborts one of the conversations by closing a browser window or tab is not "
+"for the faint hearted (I&#39;ve implemented this stuff twice so far, once "
+"for a client application, once for Seam, but I&#39;m famously psychotic)."
+msgstr ""
+"さて、<literal>HttpSession</literal> に保管された状態を考察してみましょう。 "
+"非常に注意深くプログラミングを行うことにより、 セッションデータのサイズを制御"
+"できる場合があるかもしれませんが、 想像するよりずっと困難です。 なぜならば、 "
+"WEB ブラウザは非線形な画面操作を臨機応変に許可しているためです。 しかし、シス"
+"テムの開発途中で、 ユーザは<emphasis>複数の並列対話</emphasis>を持つことを許"
+"されると述べられたシステム要件を突然見つけたとします (私も同様の状況に遭遇し"
+"ました)。 別々の並列対話に関連するセッションステートを分離するメカニズムを開"
+"発すること、 そhしてブラウザウィンドウやタブを閉じることでユーザーが対話のい"
+"ずれかを中止する場合に対話ステートが必ず破棄されるようフェールセーフを組み込"
+"むことは、 気が小さくてはできないでしょう。 (私は 2 度ほど実装したことがあり"
+"ます。 1 つはクライアントアプリケーション、1 つはSeam でした。 だけど、私は病"
+"的なことで有名です。) "
+
+#. Tag: para
+#: Tutorial.xml:946
+#, no-c-format
+msgid "Now there is a better way."
+msgstr "さらによい方法があります。"
+
+#. Tag: para
+#: Tutorial.xml:949
+#, no-c-format
+msgid ""
+"Seam introduces the <emphasis>conversation context</emphasis> as a first "
+"class construct. You can safely keep conversational state in this context, "
+"and be assured that it will have a well-defined lifecycle. Even better, you "
+"won&#39;t need to be continually pushing data back and forth between the "
+"application server and the database, since the conversation context is a "
+"natural cache of data that the user is currently working with."
+msgstr ""
+"Seam はファーストクラスの構造として <emphasis>対話コンテキスト</emphasis>を導"
+"入しています。 このコンテキスト内では対話状態を安全に維持することができ、 ま"
+"た十分に定義されたライフサイクルが必ず持たされます。 さらに、 対話コンテキス"
+"トはユーザーが現在作業しているデータの自然なキャッシュとなるため、 アプリケー"
+"ションサーバーとデータベース間でデータを継続的に行き来させる必要がありませ"
+"ん。"
+
+#. Tag: para
+#: Tutorial.xml:952
+#, no-c-format
+msgid ""
+"Usually, the components we keep in the conversation context are stateful "
+"session beans. (We can also keep entity beans and JavaBeans in the "
+"conversation context.) There is an ancient canard in the Java community that "
+"stateful session beans are a scalability killer. This may have been true in "
+"1998 when WebFoobar 1.0 was released. It is no longer true today. "
+"Application servers like JBoss 4.0 have extremely sophisticated mechanisms "
+"for stateful session bean state replication. (For example, the JBoss EJB3 "
+"container performs fine-grained replication, replicating only those bean "
+"attribute values which actually changed.) Note that all the traditional "
+"technical arguments for why stateful beans are inefficient apply equally to "
+"the <literal>HttpSession</literal>, so the practice of shifting state from "
+"business tier stateful session bean components to the web session to try and "
+"improve performance is unbelievably misguided. It is certainly possible to "
+"write unscalable applications using stateful session beans, by using "
+"stateful beans incorrectly, or by using them for the wrong thing. But that "
+"doesn&#39;t mean you should <emphasis>never</emphasis> use them. Anyway, "
+"Seam guides you toward a safe usage model. Welcome to 2005."
+msgstr ""
+"通常、対話コンテキスト中で保持するコンポーネントはステートフルセッション "
+"Bean です。 (対話コンテキスト中でエンティティ Bean や JavaBean を保持すること"
+"もできます。) Java コミュニティには、ステートフルセッション Bean が スケーラ"
+"ビリティを無効にしてしまうというデマが古くからあります。 1988年に WebFoobar "
+"1.0 がリリースされた頃は真実だったかもしれませんが、 今日ではもはや真実ではあ"
+"りません。 JBoss 4.0 のようなアプリケーションサーバーはステートフルセッショ"
+"ン Bean ステートの複製に対して非常に優れたメカニズムを持っています。 (例え"
+"ば、 JBoss EJB3 コンテナは微細な部分まで複製を行い、 実際に変化した bean 属性"
+"値のみの複製を行います。) なぜステートフル Bean が非効率的かに関する従来の技"
+"術的な議論はすべて <literal>HttpSession</literal> にも等しく当てはまります。 "
+"従って、 パフォーマンスを改善するために、 ビジネス層のステートフルセッション "
+"Bean から WEB セッションに移行する実践については信じられないほど誤った方向に"
+"誘導されているので注意してください。 ステートフルセッション Bean を使う、 ス"
+"テートフル bean を誤って使う、 ステートフル bean を不正なことに使うなどして拡"
+"張性のないアプリケーションを記述することはたしかに可能です。 しかし、 "
+"<emphasis>絶対に使うべきではない</emphasis>という意味ではありません。 とにか"
+"く、 Seam は安全な使用モデルを目的として案内しています。 ようこそ、 2005 年"
+"へ。"
+
+#. Tag: para
+#: Tutorial.xml:955
+#, no-c-format
+msgid "OK, I&#39;ll stop ranting now, and get back to the tutorial."
+msgstr "それでは、くどくど言うのは止めてチュートリアルに戻りましょう。"
+
+#. Tag: para
+#: Tutorial.xml:958
+#, no-c-format
+msgid ""
+"The booking example application shows how stateful components with different "
+"scopes can collaborate together to achieve complex behaviors. The main page "
+"of the booking application allows the user to search for hotels. The search "
+"results are kept in the Seam session scope. When the user navigates to one "
+"of these hotels, a conversation begins, and a conversation scoped component "
+"calls back to the session scoped component to retrieve the selected hotel."
+msgstr ""
+"この予約サンプルアプリケーションは、 複雑な振る舞いを実現するために、 異なる"
+"スコープを持つステートフルコンポーネントがどのように連携することが可能である"
+"かを示しています。 予約アプリケーションのメインページは、 ユーザにホテル検索"
+"を可能にしています。 検索結果は、Seam セッションスコープに保持されます。 ユー"
+"ザがこれらのホテルの 1 つに遷移するとき、 対話は、開始します。 そして、対話ス"
+"コープのコンポーネントは、 選択されたホテルを取得するために、 セッションス"
+"コープのコンポーネントを呼び返します。"
+
+#. Tag: para
+#: Tutorial.xml:961
+#, no-c-format
+msgid ""
+"The booking example also demonstrates the use of Ajax4JSF to implement rich "
+"client behavior without the use of handwritten JavaScript."
+msgstr ""
+"手書きの JavaScript を使用することなくリッチクライアントの動作を実装するため"
+"に、 Ajax4JSF を使用していることも示しています。"
+
+#. Tag: para
+#: Tutorial.xml:964
+#, no-c-format
+msgid ""
+"The search functionality is implemented using a session-scope stateful "
+"session bean, similar to the one we saw in the message list example above."
+msgstr ""
+"検索機能は、セッションスコープのステートフル Bean を使用して実装されます。 そ"
+"れは、上記のメッセージ一覧サンプルに見られるものと同様です。"
+
+#. Tag: programlisting
+#: Tutorial.xml:974
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"hotelSearch\")\n"
+"@Scope(ScopeType.SESSION)\n"
+"@Restrict(\"#{identity.loggedIn}\")\n"
+"public class HotelSearchingAction implements HotelSearching\n"
+"{\n"
+"   \n"
+"   @PersistenceContext\n"
+"   private EntityManager em;\n"
+"   \n"
+"   private String searchString;\n"
+"   private int pageSize = 10;\n"
+"   private int page;\n"
+"   \n"
+"   @DataModel\n"
+"   private List&lt;Hotel&gt; hotels;\n"
+"   \n"
+"   public String find()\n"
+"   {\n"
+"      page = 0;\n"
+"      queryHotels();   \n"
+"      return \"main\";\n"
+"   }\n"
+"\n"
+"   public String nextPage()\n"
+"   {\n"
+"      page++;\n"
+"      queryHotels();\n"
+"      return \"main\";\n"
+"   }\n"
+"      \n"
+"   private void queryHotels()\n"
+"   {\n"
+"      String searchPattern = searchString==null ? \"%\" : &#39;%&#39; + \n"
+"         searchString.toLowerCase().replace(&#39;*&#39;, &#39;%&#39;) + &#39;"
+"%&#39;;\n"
+"      hotels = em.createQuery(\"select h from Hotel h where lower(h.name) "
+"like \n"
+"        :search or lower(h.city) like :search \n"
+"        or lower(h.zip) like :search or lower(h.address) like :search\")\n"
+"            .setParameter(\"search\", searchPattern)\n"
+"            .setMaxResults(pageSize)\n"
+"            .setFirstResult( page * pageSize )\n"
+"            .getResultList();\n"
+"   }\n"
+"   \n"
+"   public boolean isNextPageAvailable()\n"
+"   {\n"
+"      return hotels!=null &amp;&amp; hotels.size()==pageSize;\n"
+"   }\n"
+"   \n"
+"   public int getPageSize() {\n"
+"      return pageSize;\n"
+"   }\n"
+"\n"
+"   public void setPageSize(int pageSize) {\n"
+"      this.pageSize = pageSize;\n"
+"   }\n"
+"\n"
+"   public String getSearchString()\n"
+"   {\n"
+"      return searchString;\n"
+"   }\n"
+"\n"
+"   public void setSearchString(String searchString)\n"
+"   {\n"
+"      this.searchString = searchString;\n"
+"   }\n"
+"   \n"
+"   @Destroy @Remove\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+"@Stateful\n"
+"@Name(\"hotelSearch\")\n"
+"@Scope(ScopeType.SESSION)\n"
+"@Restrict(\"#{identity.loggedIn}\")\n"
+"public class HotelSearchingAction implements HotelSearching\n"
+"{\n"
+"   \n"
+"   @PersistenceContext\n"
+"   private EntityManager em;\n"
+"   \n"
+"   private String searchString;\n"
+"   private int pageSize = 10;\n"
+"   private int page;\n"
+"   \n"
+"   @DataModel\n"
+"   private List&lt;Hotel&gt; hotels;\n"
+"   \n"
+"   public String find()\n"
+"   {\n"
+"      page = 0;\n"
+"      queryHotels();   \n"
+"      return \"main\";\n"
+"   }\n"
+"\n"
+"   public String nextPage()\n"
+"   {\n"
+"      page++;\n"
+"      queryHotels();\n"
+"      return \"main\";\n"
+"   }\n"
+"      \n"
+"   private void queryHotels()\n"
+"   {\n"
+"      String searchPattern = searchString==null ? \"%\" : &#39;%&#39; + \n"
+"         searchString.toLowerCase().replace(&#39;*&#39;, &#39;%&#39;) + &#39;"
+"%&#39;;\n"
+"      hotels = em.createQuery(\"select h from Hotel h where lower(h.name) "
+"like \n"
+"        :search or lower(h.city) like :search \n"
+"        or lower(h.zip) like :search or lower(h.address) like :search\")\n"
+"            .setParameter(\"search\", searchPattern)\n"
+"            .setMaxResults(pageSize)\n"
+"            .setFirstResult( page * pageSize )\n"
+"            .getResultList();\n"
+"   }\n"
+"   \n"
+"   public boolean isNextPageAvailable()\n"
+"   {\n"
+"      return hotels!=null &amp;&amp; hotels.size()==pageSize;\n"
+"   }\n"
+"   \n"
+"   public int getPageSize() {\n"
+"      return pageSize;\n"
+"   }\n"
+"\n"
+"   public void setPageSize(int pageSize) {\n"
+"      this.pageSize = pageSize;\n"
+"   }\n"
+"\n"
+"   public String getSearchString()\n"
+"   {\n"
+"      return searchString;\n"
+"   }\n"
+"\n"
+"   public void setSearchString(String searchString)\n"
+"   {\n"
+"      this.searchString = searchString;\n"
+"   }\n"
+"   \n"
+"   @Destroy @Remove\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:977
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Stateful</literal> annotation identifies this "
+"class as a stateful session bean. Stateful session beans are scoped to the "
+"conversation context by default."
+msgstr ""
+"EJB 標準 <literal>@Stateful</literal> アノテーションは、 このクラスがステート"
+"フルセッション Bean であることを識別しています。 ステートフルセッション Bean "
+"は、 デフォルトで対話コンテキストのスコープを持ちます。"
+
+#. Tag: para
+#: Tutorial.xml:982
+#, no-c-format
+msgid ""
+"The <literal>@Restrict</literal> annotation applies a security restriction "
+"to the component. It restricts access to the component allowing only logged-"
+"in users. The security chapter explains more about security in Seam."
+msgstr ""
+"<literal>@Restrict</literal> アノテーションはコンポーネントへのセキュリティ制"
+"限に適用します。 ログインユーザだけがコンポーネントにアクセスを許されるように"
+"制限します。 セキュリティの章では、Seam におけるセキュリティがさらに詳細に説"
+"明されています。"
+
+#. Tag: para
+#: Tutorial.xml:987
+#, no-c-format
+msgid ""
+"The <link linkend=\"datamodel-annotation\"><literal>@DataModel</literal></"
+"link> annotation exposes a <literal>List</literal> as a JSF "
+"<literal>ListDataModel</literal>. This makes it easy to implement clickable "
+"lists for search screens. In this case, the list of hotels is exposed to the "
+"page as a <literal>ListDataModel</literal> in the conversation variable "
+"named <literal>hotels</literal>."
+msgstr ""
+"<link linkend=\"datamodel-annotation\"><literal>@DataModel</literal></link> "
+"アノテーションは、 JSF <literal>ListDataModel</literal> として "
+"<literal>List</literal> を公開します。 これは、検索画面でのクリック可能一覧の"
+"実装を容易にします。 このサンプルでは、 ホテル一覧は、 <literal>hotels</"
+"literal> という名前の対話変数の <literal>ListDataModel</literal> としてページ"
+"を公開します。"
+
+#. Tag: para
+#: Tutorial.xml:992
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Remove</literal> annotation specifies that a "
+"stateful session bean should be removed and its state destroyed after "
+"invocation of the annotated method. In Seam, all stateful session beans "
+"should define a method marked <literal>@Destroy @Remove</literal>. This is "
+"the EJB remove method that will be called when Seam destroys the session "
+"context. Actually, the <link linkend=\"destroy-annotation"
+"\"><literal>@Destroy</literal></link> annotation is of more general "
+"usefulness, since it can be used for any kind of cleanup that should happen "
+"when any Seam context ends. If you don&#39;t have an <literal>@Destroy "
+"@Remove</literal> method, state will leak and you will suffer performance "
+"problems."
+msgstr ""
+"EJB 標準 <literal>@Remove</literal> アノテーションは、 アノテーション付きのメ"
+"ソッドが呼ばれた後に、 ステートフルセッション Bean が削除され、そして、その状"
+"態が破棄されることを定義しています。 Seam では、 すべての ステートフルセッ"
+"ション Bean は、 <literal>@Destroy @Remove</literal> 付きメソッドが定義される"
+"必要があります。 これは、Seam がセッションコンテキストを破棄するときに呼ばれ"
+"る EJB remove メソッドです。 実際、 <link linkend=\"destroy-annotation"
+"\"><literal>@Destroy</literal></link> アノテーションは、 Seam コンテキストが"
+"終了するときに発生するさまざまな種類のクリーンアップに利用可能であり、 とても"
+"実用的です。 <literal>@Destroy @Remove</literal> メソッドがないと、 状態が"
+"リークするのでパフォーマンス関連の問題に悩まされます。"
+
+#. Tag: para
+#: Tutorial.xml:999
+#, no-c-format
+msgid ""
+"The main page of the application is a Facelets page. Let&#39;s look at the "
+"fragment which relates to searching for hotels:"
+msgstr ""
+"このアプリケーションの主なページは、Facelets ページです。 ホテル検索に関連す"
+"る断片を見てみましょう。"
+
+#. Tag: programlisting
+#: Tutorial.xml:1009
+#, no-c-format
+msgid ""
+"&lt;div class=\"section\"&gt;\n"
+"&lt;h:form&gt;\n"
+"  \n"
+"  &lt;span class=\"errors\"&gt;\n"
+"    &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"  &lt;/span&gt;\n"
+"    \n"
+"  &lt;h1&gt;Search Hotels&lt;/h1&gt;\n"
+"  &lt;fieldset&gt; \n"
+"     &lt;h:inputText value=\"#{hotelSearch.searchString}\" style=\"width: "
+"165px;\"&gt;\n"
+"        &lt;a:support event=\"onkeyup\" actionListener=\"#{hotelSearch.find}"
+"\" \n"
+"                   reRender=\"searchResults\" /&gt;\n"
+"     &lt;/h:inputText&gt;\n"
+"     &#160;\n"
+"     &lt;a:commandButton value=\"Find Hotels\" action=\"#{hotelSearch.find}"
+"\" \n"
+"                      styleClass=\"button\" reRender=\"searchResults\"/&gt;\n"
+"     &#160;\n"
+"     &lt;a:status&gt;\n"
+"        &lt;f:facet name=\"start\"&gt;\n"
+"           &lt;h:graphicImage value=\"/img/spinner.gif\"/&gt;\n"
+"        &lt;/f:facet&gt;\n"
+"     &lt;/a:status&gt;\n"
+"     &lt;br/&gt;\n"
+"     &lt;h:outputLabel for=\"pageSize\"&gt;Maximum results:&lt;/h:"
+"outputLabel&gt;&#160;\n"
+"     &lt;h:selectOneMenu value=\"#{hotelSearch.pageSize}\" id=\"pageSize"
+"\"&gt;\n"
+"        &lt;f:selectItem itemLabel=\"5\" itemValue=\"5\"/&gt;\n"
+"        &lt;f:selectItem itemLabel=\"10\" itemValue=\"10\"/&gt;\n"
+"        &lt;f:selectItem itemLabel=\"20\" itemValue=\"20\"/&gt;\n"
+"     &lt;/h:selectOneMenu&gt;\n"
+"  &lt;/fieldset&gt;\n"
+"    \n"
+"&lt;/h:form&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;a:outputPanel id=\"searchResults\"&gt;\n"
+"  &lt;div class=\"section\"&gt;\n"
+"  &lt;h:outputText value=\"No Hotels Found\" \n"
+"                rendered=\"#{hotels != null and hotels.rowCount==0}\"/&gt;\n"
+"  &lt;h:dataTable value=\"#{hotels}\" var=\"hot\" rendered=\"#{hotels."
+"rowCount&gt;0}\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Name&lt;/f:facet&gt;\n"
+"      #{hot.name}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Address&lt;/f:facet&gt;\n"
+"      #{hot.address}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;City, State&lt;/f:facet&gt;\n"
+"      #{hot.city}, #{hot.state}, #{hot.country}\n"
+"    &lt;/h:column&gt; \n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Zip&lt;/f:facet&gt;\n"
+"      #{hot.zip}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"      &lt;s:link value=\"View Hotel\" action=\"#{hotelBooking.selectHotel"
+"(hot)}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"  &lt;/h:dataTable&gt;\n"
+"  &lt;s:link value=\"More results\" action=\"#{hotelSearch.nextPage}\" \n"
+"          rendered=\"#{hotelSearch.nextPageAvailable}\"/&gt;\n"
+"  &lt;/div&gt;\n"
+"&lt;/a:outputPanel&gt;"
+msgstr ""
+"&lt;div class=\"section\"&gt;\n"
+"&lt;h:form&gt;\n"
+"  \n"
+"  &lt;span class=\"errors\"&gt;\n"
+"    &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"  &lt;/span&gt;\n"
+"    \n"
+"  &lt;h1&gt;Search Hotels&lt;/h1&gt;\n"
+"  &lt;fieldset&gt; \n"
+"     &lt;h:inputText value=\"#{hotelSearch.searchString}\" style=\"width: "
+"165px;\"&gt;\n"
+"        &lt;a:support event=\"onkeyup\" actionListener=\"#{hotelSearch.find}"
+"\" \n"
+"                   reRender=\"searchResults\" /&gt;\n"
+"     &lt;/h:inputText&gt;\n"
+"     &#160;\n"
+"     &lt;a:commandButton value=\"Find Hotels\" action=\"#{hotelSearch.find}"
+"\" \n"
+"                      styleClass=\"button\" reRender=\"searchResults\"/&gt;\n"
+"     &#160;\n"
+"     &lt;a:status&gt;\n"
+"        &lt;f:facet name=\"start\"&gt;\n"
+"           &lt;h:graphicImage value=\"/img/spinner.gif\"/&gt;\n"
+"        &lt;/f:facet&gt;\n"
+"     &lt;/a:status&gt;\n"
+"     &lt;br/&gt;\n"
+"     &lt;h:outputLabel for=\"pageSize\"&gt;Maximum results:&lt;/h:"
+"outputLabel&gt;&#160;\n"
+"     &lt;h:selectOneMenu value=\"#{hotelSearch.pageSize}\" id=\"pageSize"
+"\"&gt;\n"
+"        &lt;f:selectItem itemLabel=\"5\" itemValue=\"5\"/&gt;\n"
+"        &lt;f:selectItem itemLabel=\"10\" itemValue=\"10\"/&gt;\n"
+"        &lt;f:selectItem itemLabel=\"20\" itemValue=\"20\"/&gt;\n"
+"     &lt;/h:selectOneMenu&gt;\n"
+"  &lt;/fieldset&gt;\n"
+"    \n"
+"&lt;/h:form&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;a:outputPanel id=\"searchResults\"&gt;\n"
+"  &lt;div class=\"section\"&gt;\n"
+"  &lt;h:outputText value=\"No Hotels Found\" \n"
+"                rendered=\"#{hotels != null and hotels.rowCount==0}\"/&gt;\n"
+"  &lt;h:dataTable value=\"#{hotels}\" var=\"hot\" rendered=\"#{hotels."
+"rowCount&gt;0}\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Name&lt;/f:facet&gt;\n"
+"      #{hot.name}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Address&lt;/f:facet&gt;\n"
+"      #{hot.address}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;City, State&lt;/f:facet&gt;\n"
+"      #{hot.city}, #{hot.state}, #{hot.country}\n"
+"    &lt;/h:column&gt; \n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Zip&lt;/f:facet&gt;\n"
+"      #{hot.zip}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"      &lt;s:link value=\"View Hotel\" action=\"#{hotelBooking.selectHotel"
+"(hot)}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"  &lt;/h:dataTable&gt;\n"
+"  &lt;s:link value=\"More results\" action=\"#{hotelSearch.nextPage}\" \n"
+"          rendered=\"#{hotelSearch.nextPageAvailable}\"/&gt;\n"
+"  &lt;/div&gt;\n"
+"&lt;/a:outputPanel&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1012
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:support&gt;</literal> tag allows a JSF action "
+"event listener to be called by asynchronous <literal>XMLHttpRequest</"
+"literal> when a JavaScript event like <literal>onkeyup</literal> occurs. "
+"Even better, the <literal>reRender</literal> attribute lets us render a "
+"fragment of the JSF page and perform a partial page update when the "
+"asynchronous response is received."
+msgstr ""
+"Ajax4JSF <literal>&lt;a:support&gt;</literal> タグは、 <literal>onkeyup</"
+"literal> のような JavaScript イベントが発生したとき、 JSF アクションイベント"
+"リスナが非同期の <literal>XMLHttpRequest</literal> から呼ばれることを可能にし"
+"ています。 さらに良いことには、 再レンダリング属性は、JSF ページの一部分だけ"
+"のレンダリングを可能とし、 非同期のレスポンスを受信したときに、部分的なページ"
+"更新の実行を可能にしています。"
+
+#. Tag: para
+#: Tutorial.xml:1017
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:status&gt;</literal> tag lets us display a "
+"cheesy annimated image while we wait for asynchronous requests to return."
+msgstr ""
+"Ajax4JSF <literal>&lt;a:status&gt;</literal> タグは、 非同期のリクエストが返"
+"されるのを待つ間に、 ちょっとしたアニメーションイメージを表示させます。"
+
+#. Tag: para
+#: Tutorial.xml:1022
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:outputPanel&gt;</literal> tag defines a region "
+"of the page which can be re-rendered by an asynchronous request."
+msgstr ""
+"Ajax4JSF <literal>&lt;a:outputPanel&gt;</literal> タグは、 非同期リクエストに"
+"よって再レンダリング可能なページの領域を定義します。"
+
+#. Tag: para
+#: Tutorial.xml:1027
+#, no-c-format
+msgid ""
+"The Seam <literal>&lt;s:link&gt;</literal> tag lets us attach a JSF action "
+"listener to an ordinary (non-JavaScript) HTML link. The advantage of this "
+"over the standard JSF <literal>&lt;h:commandLink&gt;</literal> is that it "
+"preserves the operation of \"open in new window\" and \"open in new tab\". "
+"Also notice that we use a method binding with a parameter: <literal>#"
+"{hotelBooking.selectHotel(hot)}</literal>. This is not possible in the "
+"standard Unified EL, but Seam provides an extension to the EL that lets you "
+"use parameters on any method binding expression."
+msgstr ""
+"Seam <literal>&lt;s:link&gt;</literal> タグは、 JSF アクションリスナを普通の "
+"(非 JavaScript) HTML リンクに付けることができます。 標準 <literal>&lt;h:"
+"commandLink&gt;</literal> と比べてこれが有利なのは、 \"新しいウィンドウで開く"
+"\" や \"新しいタブで開く\"といった操作を損なわないことです。 パラメータ "
+"<literal>#{hotelBooking.selectHotel(hot)}</literal> のメソッドバインディング"
+"を利用していることにも留意してください。 これは、標準統一された EL式 では不可"
+"能ですが、 Seam は、 すべてのメソッドバインディング表現でパラメータ使用できる"
+"よう EL式 を拡張しています。"
+
+#. Tag: para
+#: Tutorial.xml:1034
+#, no-c-format
+msgid ""
+"This page displays the search results dynamically as we type, and lets us "
+"choose a hotel and pass it to the <literal>selectHotel()</literal> method of "
+"the <literal>HotelBookingAction</literal>, which is where the "
+"<emphasis>really</emphasis> interesting stuff is going to happen."
+msgstr ""
+"このページは、タイプしたときに検索結果が動的に表示し、 ホテルの選択をさせ、 "
+"<literal>HotelBookingAction</literal> の <literal>selectHotel()</literal> メ"
+"ソッドに選択結果を渡します。 そこでは、<emphasis>かなり</emphasis>興味深いこ"
+"とが起こっています。"
+
+#. Tag: para
+#: Tutorial.xml:1037
+#, no-c-format
+msgid ""
+"Now lets see how the booking example application uses a conversation-scoped "
+"stateful session bean to achieve a natural cache of persistent data related "
+"to the conversation. The following code example is pretty long. But if you "
+"think of it as a list of scripted actions that implement the various steps "
+"of the conversation, it&#39;s understandable. Read the class from top to "
+"bottom, as if it were a story."
+msgstr ""
+"対話と関係する永続データを自然にキャッシュするために、 予約サンプルアプリケー"
+"ションがどのように対話スコープのステートフル Bean を利用するか見てみましょ"
+"う。 以下のサンプルコードはかなり冗長ですが、 対話の各種ステップを実装するス"
+"クリプト化されたアクションの一覧と考えると理解しやすくなります。 ストーリーを"
+"読むように、 頭から順に読んでください。"
+
+#. Tag: programlisting
+#: Tutorial.xml:1048
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"hotelBooking\")\n"
+"@Restrict(\"#{identity.loggedIn}\")\n"
+"public class HotelBookingAction implements HotelBooking\n"
+"{\n"
+"   \n"
+"   @PersistenceContext(type=EXTENDED)\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @In \n"
+"   private User user;\n"
+"   \n"
+"   @In(required=false) @Out\n"
+"   private Hotel hotel;\n"
+"   \n"
+"   @In(required=false) \n"
+"   @Out(required=false)\n"
+"   private Booking booking;\n"
+"     \n"
+"   @In\n"
+"   private FacesMessages facesMessages;\n"
+"      \n"
+"   @In\n"
+"   private Events events;\n"
+"   \n"
+"   @Logger \n"
+"   private Log log;\n"
+"   \n"
+"   @Begin\n"
+"   public String selectHotel(Hotel selectedHotel)\n"
+"   {\n"
+"      hotel = em.merge(selectedHotel);\n"
+"      return \"hotel\";\n"
+"   }\n"
+"   \n"
+"   public String bookHotel()\n"
+"   {      \n"
+"      booking = new Booking(hotel, user);\n"
+"      Calendar calendar = Calendar.getInstance();\n"
+"      booking.setCheckinDate( calendar.getTime() );\n"
+"      calendar.add(Calendar.DAY_OF_MONTH, 1);\n"
+"      booking.setCheckoutDate( calendar.getTime() );\n"
+"      \n"
+"      return \"book\";\n"
+"   }\n"
+"\n"
+"   public String setBookingDetails()\n"
+"   {\n"
+"      if (booking==null || hotel==null) return \"main\";\n"
+"      if ( !booking.getCheckinDate().before( booking.getCheckoutDate() ) )\n"
+"      {\n"
+"         facesMessages.add(\"Check out date must be later than check in date"
+"\");\n"
+"         return null;\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return \"confirm\";\n"
+"      }\n"
+"   }\n"
+"\n"
+"   @End\n"
+"   public String confirm()\n"
+"   {\n"
+"      if (booking==null || hotel==null) return \"main\";\n"
+"      em.persist(booking);\n"
+"      facesMessages.add\n"
+"       (\"Thank you, #{user.name}, your confimation number for #{hotel.name} "
+"is #{booking.id}\");\n"
+"      log.info(\"New booking: #{booking.id} for #{user.username}\");\n"
+"      events.raiseEvent(\"bookingConfirmed\");\n"
+"      return \"confirmed\";\n"
+"   }\n"
+"   \n"
+"   @End\n"
+"   public String cancel()\n"
+"   {\n"
+"      return \"main\";\n"
+"   }\n"
+"   \n"
+"   @Destroy @Remove\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+"@Stateful\n"
+"@Name(\"hotelBooking\")\n"
+"@Restrict(\"#{identity.loggedIn}\")\n"
+"public class HotelBookingAction implements HotelBooking\n"
+"{\n"
+"   \n"
+"   @PersistenceContext(type=EXTENDED)\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @In \n"
+"   private User user;\n"
+"   \n"
+"   @In(required=false) @Out\n"
+"   private Hotel hotel;\n"
+"   \n"
+"   @In(required=false) \n"
+"   @Out(required=false)\n"
+"   private Booking booking;\n"
+"     \n"
+"   @In\n"
+"   private FacesMessages facesMessages;\n"
+"      \n"
+"   @In\n"
+"   private Events events;\n"
+"   \n"
+"   @Logger \n"
+"   private Log log;\n"
+"   \n"
+"   @Begin\n"
+"   public String selectHotel(Hotel selectedHotel)\n"
+"   {\n"
+"      hotel = em.merge(selectedHotel);\n"
+"      return \"hotel\";\n"
+"   }\n"
+"   \n"
+"   public String bookHotel()\n"
+"   {      \n"
+"      booking = new Booking(hotel, user);\n"
+"      Calendar calendar = Calendar.getInstance();\n"
+"      booking.setCheckinDate( calendar.getTime() );\n"
+"      calendar.add(Calendar.DAY_OF_MONTH, 1);\n"
+"      booking.setCheckoutDate( calendar.getTime() );\n"
+"      \n"
+"      return \"book\";\n"
+"   }\n"
+"\n"
+"   public String setBookingDetails()\n"
+"   {\n"
+"      if (booking==null || hotel==null) return \"main\";\n"
+"      if ( !booking.getCheckinDate().before( booking.getCheckoutDate() ) )\n"
+"      {\n"
+"         facesMessages.add(\"Check out date must be later than check in date"
+"\");\n"
+"         return null;\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return \"confirm\";\n"
+"      }\n"
+"   }\n"
+"\n"
+"   @End\n"
+"   public String confirm()\n"
+"   {\n"
+"      if (booking==null || hotel==null) return \"main\";\n"
+"      em.persist(booking);\n"
+"      facesMessages.add\n"
+"       (\"Thank you, #{user.name}, your confimation number for #{hotel.name} "
+"is #{booking.id}\");\n"
+"      log.info(\"New booking: #{booking.id} for #{user.username}\");\n"
+"      events.raiseEvent(\"bookingConfirmed\");\n"
+"      return \"confirmed\";\n"
+"   }\n"
+"   \n"
+"   @End\n"
+"   public String cancel()\n"
+"   {\n"
+"      return \"main\";\n"
+"   }\n"
+"   \n"
+"   @Destroy @Remove\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:1051
+#, no-c-format
+msgid ""
+"This bean uses an EJB3 <emphasis>extended persistence context</emphasis>, so "
+"that any entity instances remain managed for the whole lifecycle of the "
+"stateful session bean."
+msgstr ""
+"この Bean は、EJB3 <emphasis>拡張永続コンテキスト</emphasis> を使用します。 "
+"その結果、エンティティインスタンスは、 ステートフルセッション Bean のライフサ"
+"イクル全体の管理を維持します。"
+
+#. Tag: para
+#: Tutorial.xml:1056
+#, no-c-format
+msgid ""
+"The <link linkend=\"out-annotation\"><literal>@Out</literal></link> "
+"annotation declares that an attribute value is <emphasis>outjected</"
+"emphasis> to a context variable after method invocations. In this case, the "
+"context variable named <literal>hotel</literal> will be set to the value of "
+"the <literal>hotel</literal> instance variable after every action listener "
+"invocation completes."
+msgstr ""
+"<link linkend=\"out-annotation\"><literal>@Out</literal></link> アノテーショ"
+"ンは、 メソッド呼び出しの後に、属性の値がコンテキスト変数に<emphasis>アウト"
+"ジェクト</emphasis>されることを宣言します。 このサンプルでは、すべてのアク"
+"ションリスナの呼び出しが完了した後に、 <literal>hotel</literal> の名前のコン"
+"テキスト変数は <literal>hotel</literal> インスタンス変数の値に設定されます。"
+
+#. Tag: para
+#: Tutorial.xml:1061
+#, no-c-format
+msgid ""
+"The <link linkend=\"begin-annotation\"><literal>@Begin</literal></link> "
+"annotation specifies that the annotated method begins a <emphasis>long-"
+"running conversation</emphasis>, so the current conversation context will "
+"not be destroyed at the end of the request. Instead, it will be reassociated "
+"with every request from the current window, and destroyed either by timeout "
+"due to conversation inactivity or invocation of a matching <literal>@End</"
+"literal> method."
+msgstr ""
+"<link linkend=\"begin-annotation\"><literal>@Begin</literal></link> アノテー"
+"ションは、 アノテーション付きメソッドが長期対話を開始することを定義していま"
+"す。 従って、リクエストの終了では現在の対話コンテキストは破棄されません。 そ"
+"の代わりに、 現在のウインドからのすべてのリクエストに再び関連し、 対話の非活"
+"動によるタイムアウトあるいは一致する <literal>@End</literal> メソッドの呼び出"
+"しにより破棄されます。"
+
+#. Tag: para
+#: Tutorial.xml:1066
+#, no-c-format
+msgid ""
+"The <link linkend=\"end-annotation\"><literal>@End</literal></link> "
+"annotation specifies that the annotated method ends the current long-running "
+"conversation, so the current conversation context will be destroyed at the "
+"end of the request."
+msgstr ""
+"<link linkend=\"end-annotation\"><literal>@End</literal></link> アノテーショ"
+"ンは、 アノテーション付きメソッドが現在の長期対話を終了することを定義していま"
+"す。 従って、リクエストの終わりで現在の対話コンテキストは破棄されます。"
+
+#. Tag: para
+#: Tutorial.xml:1071
+#, no-c-format
+msgid ""
+"This EJB remove method will be called when Seam destroys the conversation "
+"context. Don&#39;t ever forget to define this method!"
+msgstr ""
+"Seam は、対話コンテキストを破棄するとき、 この EJB remove メソッドは、呼び出"
+"されます。 このメソッドを定義することを忘れないでください。"
+
+#. Tag: para
+#: Tutorial.xml:1078
+#, no-c-format
+msgid ""
+"<literal>HotelBookingAction</literal> contains all the action listener "
+"methods that implement selection, booking and booking confirmation, and "
+"holds state related to this work in its instance variables. We think you&#39;"
+"ll agree that this code is much cleaner and simpler than getting and setting "
+"<literal>HttpSession</literal> attributes."
+msgstr ""
+"<literal>HotelBookingAction</literal> は、 ホテル検索、選択、予約、予約確認を"
+"実装したすべてのアクションリスナを持っており、 そして、この操作に関連する状態"
+"をインスタンスに保持しています。 このコードが、 <literal>HttpSession</"
+"literal> 属性から get/set するものと比較して、 よりクリーンで簡単なコードであ"
+"ることに同意してもらえると考えています。"
+
+#. Tag: para
+#: Tutorial.xml:1081
+#, no-c-format
+msgid ""
+"Even better, a user can have multiple isolated conversations per login "
+"session. Try it! Log in, run a search, and navigate to different hotel pages "
+"in multiple browser tabs. You&#39;ll be able to work on creating two "
+"different hotel reservations at the same time. If you leave any one "
+"conversation inactive for long enough, Seam will eventually time out that "
+"conversation and destroy its state. If, after ending a conversation, you "
+"backbutton to a page of that conversation and try to perform an action, Seam "
+"will detect that the conversation was already ended, and redirect you to the "
+"search page."
+msgstr ""
+"さらに良くするために、ユーザは、ログインセッション毎に複数の分離された対話を"
+"持つことが可能です。 試してみてください。 同時に 2 つの異なるホテル予約を作成"
+"することが可能です。 対話を長時間、放置した場合、 Seam は、最終的に対話をタイ"
+"ムアウトし、状態を破棄します。 対話が終了した後に、その対話ページに戻るボタン"
+"を押し、アクションの実行を試みた場合、 Seam は、対話が既に終了したことを検出"
+"し、検索ページにリダイレクトします。"
+
+#. Tag: title
+#: Tutorial.xml:1087
+#, no-c-format
+msgid "The Seam UI control library"
+msgstr "The Seam UI 管理ライブラリ"
+
+#. Tag: para
+#: Tutorial.xml:1088
+#, no-c-format
+msgid ""
+"If you check inside the WAR file for the booking application, you&#39;ll "
+"find <literal>seam-ui.jar</literal> in the <literal>WEB-INF/lib</literal> "
+"directory. This package contains a number of JSF custom controls that "
+"integrate with Seam. The booking application uses the <literal>&lt;s:link&gt;"
+"</literal> control for navigation from the search screen to the hotel page:"
+msgstr ""
+"予約アプリケーションの WAR ファイルの中身をチェックすれば、 <literal>WEB-INF/"
+"lib</literal> ディレクトリ中に <literal>seam-ui.jar</literal> が見つかりま"
+"す。 このパッケージは、Seam と統合する多くの JSF カスタムコントロールを含んで"
+"います。 この予約アプリケーションは、 検索画面からホテルページへの画面遷移制"
+"御に <literal>&lt;s:link&gt;</literal> を使用しています。"
+
+#. Tag: programlisting
+#: Tutorial.xml:1091
+#, no-c-format
+msgid "&lt;s:link value=\"View Hotel\" action=\"#{hotelBooking.selectHotel}\"/&gt;"
+msgstr "&lt;s:link value=\"View Hotel\" action=\"#{hotelBooking.selectHotel}\"/&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1092
+#, no-c-format
+msgid ""
+"The use of <literal>&lt;s:link&gt;</literal> here allows us to attach an "
+"action listener to a HTML link without breaking the browser&#39;s \"open in "
+"new window\" feature. The standard JSF <literal>&lt;h:commandLink&gt;</"
+"literal> does not work with \"open in new window\". We&#39;ll see later that "
+"<literal>&lt;s:link&gt;</literal> also offers a number of other useful "
+"features, including conversation propagation rules."
+msgstr ""
+"ここで、<literal>&lt;s:link&gt;</literal> を使用することで、 ブラウザの \"新"
+"しいウィンドウを開く\" 機能を阻害することなく、 アクションリスナに HTML リン"
+"クを付けることが可能です。 標準 JSF <literal>&lt;h:commandLink&gt;</literal> "
+"は、\"新しいウィンドウを開く\" と連動しません。 <literal>&lt;s:link&gt;</"
+"literal> は、 対話伝播ルールを含むその他多くの便利な機能を提供します。"
+
+#. Tag: para
+#: Tutorial.xml:1095
+#, no-c-format
+msgid ""
+"The booking application uses some other Seam and Ajax4JSF controls, "
+"especially on the <literal>/book.xhtml</literal> page. We won&#39;t get into "
+"the details of those controls here, but if you want to understand this code, "
+"please refer to the chapter covering Seam&#39;s functionality for JSF form "
+"validation."
+msgstr ""
+"予約アプリケーションは、特に、<literal>/book.xhtml</literal> においていくつか"
+"の他の Seam コントロールと Ajax4JSF コントロールを使用します。 ここでは、それ"
+"らコントロールの詳細には触れませんが、 このコードを理解したいならば、 JSF "
+"フォームバリデーションのための Seam の機能を対象とする章を参照してください。"
+
+#. Tag: title
+#: Tutorial.xml:1101
+#, no-c-format
+msgid "The Seam Debug Page"
+msgstr "Seam デバッグページ"
+
+#. Tag: para
+#: Tutorial.xml:1102
+#, no-c-format
+msgid ""
+"The WAR also includes <literal>seam-debug.jar</literal>. If this jar is "
+"deployed in <literal>WEB-INF/lib</literal>, along with the Facelets, and if "
+"you set the following Seam property in <literal>web.xml</literal> or "
+"<literal>seam.properties</literal>:"
+msgstr ""
+"WAR は、<literal>seam-debug.jar</literal> も含みます。 この JAR が Facelet と"
+"ともに <literal>WEB-INF/lib</literal> にデプロイされ、 そして、<literal>web."
+"xml</literal> あるいは、<literal>seam.properties</literal> 中に以下のように "
+"Seam プロパティを設定した場合、"
+
+#. Tag: programlisting
+#: Tutorial.xml:1105
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;org.jboss.seam.core.init.debug&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;true&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;org.jboss.seam.core.init.debug&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;true&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1106
+#, no-c-format
+msgid ""
+"Then the Seam debug page will be available. This page lets you browse and "
+"inspect the Seam components in any of the Seam contexts associated with your "
+"current login session. Just point your browser at <ulink url=\"http://"
+"localhost:8080/seam-booking/debug.seam\"><literal>http://localhost:8080/seam-"
+"booking/debug.seam</literal></ulink>."
+msgstr ""
+"Seam デバッグページが有効になります。 このページから現在のログインセッション"
+"に関する Seam コンテキスト中の Seam コンポーネントの閲覧と検査が可能です。 ブ"
+"ラウザから、<ulink url=\"http://localhost:8080/seam-booking/debug.seam"
+"\"><literal>http://localhost:8080/seam-booking/debug.seam</literal></ulink> "
+"と入力してください。 <literal>examples/booking/view</literal> ディレクトリ"
+"に、 <literal>debug.xhtml</literal> と呼ばれる facelets ページがあります。 こ"
+"のページで現在のログインセッションに関する Seam コンテキスト中の Seam コン"
+"ポーネントを見たり検査したりすることができます。 ブラウザに、<ulink url="
+"\"http://localhost:8080/seam-booking/debug.seam\"><literal>http://"
+"localhost:8080/seam-booking/debug.seam</literal></ulink>. と入力してくださ"
+"い。"
+
+#. Tag: title
+#: Tutorial.xml:1122
+#, no-c-format
+msgid "A complete application featuring Seam and jBPM: the DVD Store example"
+msgstr "Seam と jBPM を使った本格的アプリケーション: DVD ストアサンプル"
+
+#. Tag: para
+#: Tutorial.xml:1123
+#, no-c-format
+msgid ""
+"The DVD Store demo application shows the practical usage of jBPM for both "
+"task management and pageflow."
+msgstr ""
+"DVD ストアのデモアプリケーションは、 タスク管理とページフローのための jBPM の"
+"実践的な使用法を見せてくれます。"
+
+#. Tag: para
+#: Tutorial.xml:1126
+#, no-c-format
+msgid ""
+"The user screens take advantage of a jPDL pageflow to implement searching "
+"and shopping cart functionality."
+msgstr ""
+"ユーザ画面は、検索やショッピングカート機能の実装のために jPDL ページフローを"
+"利用しています。"
+
+#. Tag: screeninfo
+#: Tutorial.xml:1129 Tutorial.xml:1140 Tutorial.xml:1166
+#, no-c-format
+msgid "DVD Store example"
+msgstr "DVD Store example"
+
+#. Tag: para
+#: Tutorial.xml:1137
+#, no-c-format
+msgid ""
+"The administration screens take use jBPM to manage the approval and shipping "
+"cycle for orders. The business process may even be changed dynamically, by "
+"selecting a different process definition!"
+msgstr ""
+"この管理画面は、オーダの承認やショッピングサイクルを管理するために jBPM を利"
+"用します。 ビジネスプロセスは、異なるプロセス定義を選択することにより動的に変"
+"更されるかもしれません。"
+
+#. Tag: para
+#: Tutorial.xml:1151
+#, no-c-format
+msgid "Look in the <literal>dvdstore</literal> directory."
+msgstr "<literal>dvdstore</literal> ディレクトリの中をご覧ください。"
+
+#. Tag: title
+#: Tutorial.xml:1157
+#, no-c-format
+msgid ""
+"A complete application featuring Seam workspace management: the Issue "
+"Tracker example"
+msgstr ""
+"Seam ワークスペース管理を使った本格的アプリケーション: 問題追跡システムサンプ"
+"ル"
+
+#. Tag: para
+#: Tutorial.xml:1158
+#, no-c-format
+msgid ""
+"The Issue Tracker demo shows off Seam&#39;s workspace management "
+"functionality: the conversation switcher, conversation list and breadcrumbs."
+msgstr ""
+"問題追跡デモは Seam のワークスペース管理の機能をよく披露しています。 対話ス"
+"イッチャ、 対話一覧、 ブレッドクラムなど。"
+
+#. Tag: para
+#: Tutorial.xml:1163
+#, no-c-format
+msgid ""
+"To log into the Issue Tracker demo you must provide a username and password. "
+"You can find this in the <filename>resources/import.sql</filename> file or "
+"use \"gavin\" and \"foobar\" for username and password respectively."
+msgstr "Issue Tracker デモにログインするにはユーザー名とパスワードを入力しなければなりません。 これは <filename>resources/import.sql</filename> ファイルにあります。 あるいは、 \"gavin\" と \"foobar\" をそれぞれユーザー名とパスワードに使用することもできます。"
+
+#. Tag: para
+#: Tutorial.xml:1177
+#, no-c-format
+msgid "Look in the <literal>issues</literal> directory."
+msgstr "<literal>issues</literal> ディレクトリの中をご覧ください。"
+
+#. Tag: title
+#: Tutorial.xml:1183
+#, no-c-format
+msgid "An example of Seam with Hibernate: the Hibernate Booking example"
+msgstr "Hibernate を使った Seam サンプル: Hibernate 予約システムサンプル"
+
+#. Tag: para
+#: Tutorial.xml:1184
+#, no-c-format
+msgid ""
+"The Hibernate Booking demo is a straight port of the Booking demo to an "
+"alternative architecture that uses Hibernate for persistence and JavaBeans "
+"instead of session beans."
+msgstr ""
+"Hibernate 予約デモは、 永続性のために Hibernate、 セッション Bean の代わりに "
+"JavaBean を使用した簡単な予約デモの移植版です。"
+
+#. Tag: para
+#: Tutorial.xml:1190
+#, no-c-format
+msgid "Look in the <literal>hibernate</literal> directory."
+msgstr "<literal>hibernate</literal> ディレクトリの中をご覧ください。"
+
+#. Tag: title
+#: Tutorial.xml:1196
+#, no-c-format
+msgid "A RESTful Seam application: the Blog example"
+msgstr "RESTful Seam アプリケーション: Blog サンプル"
+
+#. Tag: para
+#: Tutorial.xml:1197
+#, no-c-format
+msgid ""
+"Seam makes it very easy to implement applications which keep state on the "
+"server-side. However, server-side state is not always appropriate, "
+"especially in for functionality that serves up <emphasis>content</emphasis>. "
+"For this kind of problem we often need to let the user bookmark pages and "
+"have a relatively stateless server, so that any page can be accessed at any "
+"time, via the bookmark. The Blog example shows how to a implement RESTful "
+"application using Seam. Every page of the application can be bookmarked, "
+"including the search results page."
+msgstr ""
+"Seam は、サーバサイドで状態保持するアプリケーションの実装をとても容易にしま"
+"す。 しかし、サーバサイドの状態管理は、いつも適切というわけではありません。  "
+"(特に、<emphasis>コンテンツ (content) </emphasis> を提供する機能において ) こ"
+"の種の問題のために、ユーザにページをブックマークさせ、 そして、比較的ステート"
+"レスなサーバとする必要がしばしばあります、 その結果、ブックマークを通していつ"
+"でもどんなページにもアクセス可能になります。 この Blog サンプルは、 Seam を使"
+"用した RESTful アプリケーションの実装方法を見せてくれます。 検索結果ページを"
+"含むすべてのアプリケーションのページは、 ブックマークが可能です。"
+
+#. Tag: screeninfo
+#: Tutorial.xml:1200
+#, no-c-format
+msgid "Blog example"
+msgstr "Blog example"
+
+#. Tag: para
+#: Tutorial.xml:1208
+#, no-c-format
+msgid ""
+"The Blog example demonstrates the use of \"pull\"-style MVC, where instead "
+"of using action listener methods to retrieve data and prepare the data for "
+"the view, the view pulls data from components as it is being rendered."
+msgstr ""
+"この Blog サンプルは、\"引っぱり (PULL) \" - スタイル MVC の使用を実演してい"
+"ます。 ここで、ビューのためのデータ取得とデータ準備のアクションメソッドリスナ"
+"を使用する代わりに、 ビューは、レンダリングしているコンポーネントからデータを"
+"引き出します (PULL) 。"
+
+#. Tag: title
+#: Tutorial.xml:1212
+#, no-c-format
+msgid "Using \"pull\"-style MVC"
+msgstr "\"PULL\" 型 MVC の使用"
+
+#. Tag: para
+#: Tutorial.xml:1213
+#, no-c-format
+msgid ""
+"This snippet from the <literal>index.xhtml</literal> facelets page displays "
+"a list of recent blog entries:"
+msgstr ""
+"<literal>index.xhtml</literal> facelets ページの一部は、 最新の Blog 登録のリ"
+"ストを表示しています。"
+
+#. Tag: programlisting
+#: Tutorial.xml:1216
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{blog.recentBlogEntries}\" var=\"blogEntry\" rows="
+"\"3\"&gt;\n"
+"   &lt;h:column&gt;\n"
+"      &lt;div class=\"blogEntry\"&gt;\n"
+"         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"         &lt;div&gt;\n"
+"            &lt;h:outputText escape=\"false\" \n"
+"                  value=\"#{blogEntry.excerpt==null ? blogEntry.body : "
+"blogEntry.excerpt}\"/&gt;\n"
+"         &lt;/div&gt;\n"
+"         &lt;p&gt;\n"
+"            &lt;h:outputLink value=\"entry.seam\" rendered=\"#{blogEntry."
+"excerpt!=null}\"&gt;\n"
+"               &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/"
+"&gt;\n"
+"               Read more...\n"
+"            &lt;/h:outputLink&gt;\n"
+"         &lt;/p&gt;\n"
+"         &lt;p&gt;\n"
+"            [Posted on \n"
+"            &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"               &lt;f:convertDateTime timeZone=\"#{blog.timeZone}\" locale=\"#"
+"{blog.locale}\" \n"
+"                                     type=\"both\"/&gt;\n"
+"            &lt;/h:outputText&gt;]\n"
+"            &#160;\n"
+"            &lt;h:outputLink value=\"entry.seam\"&gt;[Link]\n"
+"               &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/"
+"&gt;\n"
+"            &lt;/h:outputLink&gt;\n"
+"         &lt;/p&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+"&lt;h:dataTable value=\"#{blog.recentBlogEntries}\" var=\"blogEntry\" rows="
+"\"3\"&gt;\n"
+"   &lt;h:column&gt;\n"
+"      &lt;div class=\"blogEntry\"&gt;\n"
+"         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"         &lt;div&gt;\n"
+"            &lt;h:outputText escape=\"false\" \n"
+"                  value=\"#{blogEntry.excerpt==null ? blogEntry.body : "
+"blogEntry.excerpt}\"/&gt;\n"
+"         &lt;/div&gt;\n"
+"         &lt;p&gt;\n"
+"            &lt;h:outputLink value=\"entry.seam\" rendered=\"#{blogEntry."
+"excerpt!=null}\"&gt;\n"
+"               &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/"
+"&gt;\n"
+"               Read more...\n"
+"            &lt;/h:outputLink&gt;\n"
+"         &lt;/p&gt;\n"
+"         &lt;p&gt;\n"
+"            [Posted on \n"
+"            &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"               &lt;f:convertDateTime timeZone=\"#{blog.timeZone}\" locale=\"#"
+"{blog.locale}\" \n"
+"                                     type=\"both\"/&gt;\n"
+"            &lt;/h:outputText&gt;]\n"
+"            &#160;\n"
+"            &lt;h:outputLink value=\"entry.seam\"&gt;[Link]\n"
+"               &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/"
+"&gt;\n"
+"            &lt;/h:outputLink&gt;\n"
+"         &lt;/p&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1217
+#, no-c-format
+msgid ""
+"If we navigate to this page from a bookmark, how does the data used by the "
+"<literal>&lt;h:dataTable&gt;</literal> actually get initialized? Well, what "
+"happens is that the <literal>Blog</literal> is retrieved lazily&mdash;"
+"\"pulled\"&mdash;when needed, by a Seam component named <literal>blog</"
+"literal>. This is the opposite flow of control to what is usual in "
+"traditional web action-based frameworks like Struts."
+msgstr ""
+"ブックマークからこのページに移動する場合、 <literal>&lt;h:dataTable&gt;</"
+"literal> により使用されるデータは実際にはどのように初期化されるのでしょう"
+"か。 ここで何が起きているかというと、 <literal>Blog</literal> は "
+"<literal>Blog</literal> という名前の Seam コンポーネントによって、 必要なとき"
+"に遅延して取得されて  &mdash; 引き出されて &mdash; いるわけです。 これは、 "
+"Struts のような従来の WEB アクションに基づくフレームワークでは一般的なフロー"
+"制御と逆になっています。"
+
+#. Tag: programlisting
+#: Tutorial.xml:1225
+#, no-c-format
+msgid ""
+"@Name(\"blog\")\n"
+"@Scope(ScopeType.STATELESS)\n"
+"public class BlogService \n"
+"{\n"
+"   \n"
+"   @In\n"
+"   private EntityManager entityManager;\n"
+"  \n"
+"   @Unwrap\n"
+"   public Blog getBlog()\n"
+"   {\n"
+"      return (Blog) entityManager.createQuery(\"from Blog b left join fetch "
+"b.blogEntries\")\n"
+"            .setHint(\"org.hibernate.cacheable\", true)\n"
+"            .getSingleResult();\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+"@Name(\"blog\")\n"
+"@Scope(ScopeType.STATELESS)\n"
+"public class BlogService \n"
+"{\n"
+"   \n"
+"   @In\n"
+"   private EntityManager entityManager;\n"
+"  \n"
+"   @Unwrap\n"
+"   public Blog getBlog()\n"
+"   {\n"
+"      return (Blog) entityManager.createQuery(\"from Blog b left join fetch "
+"b.blogEntries\")\n"
+"            .setHint(\"org.hibernate.cacheable\", true)\n"
+"            .getSingleResult();\n"
+"   }\n"
+"\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:1228
+#, no-c-format
+msgid ""
+"This component uses a <emphasis>seam-managed persistence context</emphasis>. "
+"Unlike the other examples we&#39;ve seen, this persistence context is "
+"managed by Seam, instead of by the EJB3 container. The persistence context "
+"spans the entire web request, allowing us to avoid any exceptions that occur "
+"when accessing unfetched associations in the view."
+msgstr ""
+"このコンポーネントは、<emphasis>Seam 管理永続コンテキスト</emphasis> を使用し"
+"ます。 これまで見てきた他のサンプルとは異なり、 この永続コンテキストは、Seam "
+"によって管理されます。 この永続コンテキストは、WEB リクエスト全体で有効で、 "
+"取得していないビュー関連にアクセスするときに発生するあらゆる例外の回避を可能"
+"にします。"
+
+#. Tag: para
+#: Tutorial.xml:1233
+#, no-c-format
+msgid ""
+"The <literal>@Unwrap</literal> annotation tells Seam to provide the return "
+"value of the method&mdash;the <literal>Blog</literal>&mdash;instead of the "
+"actual <literal>BlogService</literal> component to clients. This is the Seam "
+"<emphasis>manager component pattern</emphasis>."
+msgstr ""
+"<literal>@Unwrap</literal> アノテーションは、 Seam がクライアントに対して実際"
+"の <literal>BlogService</literal> コンポーネントではなくメソッドの返り値 "
+"&mdash; <literal>Blog</literal> &mdash; を渡すよう指示します。 これが Seam "
+"<emphasis>管理コンポーネントパターン</emphasis> です。"
+
+#. Tag: para
+#: Tutorial.xml:1240
+#, no-c-format
+msgid ""
+"This is good so far, but what about bookmarking the result of form "
+"submissions, such as a search results page?"
+msgstr ""
+"これは、これまでのところ良いですが、 検索結果ページのようなフォームサブミット"
+"の結果のブックマークではどうでしょうか?"
+
+#. Tag: title
+#: Tutorial.xml:1246
+#, no-c-format
+msgid "Bookmarkable search results page"
+msgstr "ブックマーク可能検索結果ページ"
+
+#. Tag: para
+#: Tutorial.xml:1247
+#, no-c-format
+msgid ""
+"The blog example has a tiny form in the top right of each page that allows "
+"the user to search for blog entries. This is defined in a file, "
+"<literal>menu.xhtml</literal>, included by the facelets template, "
+"<literal>template.xhtml</literal>:"
+msgstr ""
+"この Blog サンプルは、 各ページの右上にユーザの Blog 記事の検索を可能にする小"
+"さなフォームを持ちます。 これは、facelet テンプレート、<literal>template."
+"xhtml</literal> に含まれる <literal>menu.xhtml</literal> ファイルに定義されま"
+"す。"
+
+#. Tag: programlisting
+#: Tutorial.xml:1250
+#, no-c-format
+msgid ""
+"&lt;div id=\"search\"&gt;\n"
+"   &lt;h:form&gt;\n"
+"      &lt;h:inputText value=\"#{searchAction.searchPattern}\"/&gt;\n"
+"      &lt;h:commandButton value=\"Search\" action=\"/search.xhtml\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+"&lt;div id=\"search\"&gt;\n"
+"   &lt;h:form&gt;\n"
+"      &lt;h:inputText value=\"#{searchAction.searchPattern}\"/&gt;\n"
+"      &lt;h:commandButton value=\"Search\" action=\"/search.xhtml\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/div&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1251
+#, no-c-format
+msgid ""
+"To implement a bookmarkable search results page, we need to perform a "
+"browser redirect after processing the search form submission. Because we "
+"used the JSF view id as the action outcome, Seam automatically redirects to "
+"the view id when the form is submitted. Alternatively, we could have defined "
+"a navigation rule like this:"
+msgstr ""
+"ブックマーク可能検索結果ページの実装のために、 検索フォームのサブミットを処理"
+"した後に、 ブラウザリダイレクトを実行する必要があります。 アクション結果  "
+"(outcome) として JSF ビュー ID を使用しているので、 Seam は、フォームがサブ"
+"ミットされたとき、自動的に ビュー ID にリダイレクトします。 別の方法として、"
+"以下のようなナビゲーションルールを定義することも可能です。"
+
+#. Tag: programlisting
+#: Tutorial.xml:1254
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"   &lt;navigation-case&gt;\n"
+"      &lt;from-outcome&gt;searchResults&lt;/from-outcome&gt;\n"
+"      &lt;to-view-id&gt;/search.xhtml&lt;/to-view-id&gt;\n"
+"      &lt;redirect/&gt;\n"
+"   &lt;/navigation-case&gt;\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+"&lt;navigation-rule&gt;\n"
+"   &lt;navigation-case&gt;\n"
+"      &lt;from-outcome&gt;searchResults&lt;/from-outcome&gt;\n"
+"      &lt;to-view-id&gt;/search.xhtml&lt;/to-view-id&gt;\n"
+"      &lt;redirect/&gt;\n"
+"   &lt;/navigation-case&gt;\n"
+"&lt;/navigation-rule&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1255
+#, no-c-format
+msgid "Then the form would have looked like this:"
+msgstr "フォームは、以下と似たようなものになるでしょう。"
+
+#. Tag: programlisting
+#: Tutorial.xml:1258
+#, no-c-format
+msgid ""
+"&lt;div id=\"search\"&gt;\n"
+"   &lt;h:form&gt;\n"
+"      &lt;h:inputText value=\"#{searchAction.searchPattern}\"/&gt;\n"
+"      &lt;h:commandButton value=\"Search\" action=\"searchResults\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+"&lt;div id=\"search\"&gt;\n"
+"   &lt;h:form&gt;\n"
+"      &lt;h:inputText value=\"#{searchAction.searchPattern}\"/&gt;\n"
+"      &lt;h:commandButton value=\"Search\" action=\"searchResults\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/div&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1259
+#, no-c-format
+msgid ""
+"But when we redirect, we need to include the values submitted with the form "
+"as request parameters, to get a bookmarkable URL like <literal>http://"
+"localhost:8080/seam-blog/search.seam?searchPattern=seam</literal>. JSF does "
+"not provide an easy way to do this, but Seam does. We use a Seam "
+"<emphasis>page parameter</emphasis>, defined in <literal>WEB-INF/pages.xml</"
+"literal>:"
+msgstr ""
+"しかし、リダイレクトするとき、 <literal>http://localhost:8080/seam-blog/"
+"search.seam?searchPattern=seam</literal> のようなブックマーク URL を取得する"
+"ために、 リクエストパラメータとしてフォームによってサブミットされた値を含む必"
+"要があります。 JSF は、これをする簡単な方法は提供しませんが、Seam は提供しま"
+"す。 <literal>WEB-INF/pages.xml</literal> で定義された Seam <emphasis>page "
+"parameter</emphasis> を使用します。"
+
+#. Tag: programlisting
+#: Tutorial.xml:1262
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   &lt;page view-id=\"/search.xhtml\"&gt;\n"
+"      &lt;param name=\"searchPattern\" value=\"#{searchService.searchPattern}"
+"\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"   &lt;page view-id=\"/search.xhtml\"&gt;\n"
+"      &lt;param name=\"searchPattern\" value=\"#{searchService.searchPattern}"
+"\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   ...\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1263
+#, no-c-format
+msgid ""
+"This tells Seam to include the value of <literal>#{searchService."
+"searchPattern}</literal> as a request parameter named "
+"<literal>searchPattern</literal> when redirecting to the page, and then re-"
+"apply the value of that parameter to the model before rendering the page."
+msgstr ""
+"これは、ページにリダイレクトするときに、Seam に <literal>searchPattern</"
+"literal> の名前のリクエストパラメータとして <literal>#{searchService."
+"searchPattern}</literal> の値を含み、ページをレンダリングする前に、パラメータ"
+"の値をモデルに再適用するよう指示します。"
+
+#. Tag: para
+#: Tutorial.xml:1266
+#, no-c-format
+msgid "The redirect takes us to the <literal>search.xhtml</literal> page:"
+msgstr "リダイレクトによって <literal>search.xhtml</literal> ページに移動します。"
+
+#. Tag: programlisting
+#: Tutorial.xml:1269
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{searchResults}\" var=\"blogEntry\"&gt;\n"
+"   &lt;h:column&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:outputLink value=\"entry.seam\"&gt;\n"
+"            &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"            #{blogEntry.title}\n"
+"         &lt;/h:outputLink&gt;\n"
+"         posted on \n"
+"         &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"            &lt;f:convertDateTime timeZone=\"#{blog.timeZone}\" locale=\"#"
+"{blog.locale}\" type=\"both\"/&gt;\n"
+"         &lt;/h:outputText&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+"&lt;h:dataTable value=\"#{searchResults}\" var=\"blogEntry\"&gt;\n"
+"   &lt;h:column&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:outputLink value=\"entry.seam\"&gt;\n"
+"            &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"            #{blogEntry.title}\n"
+"         &lt;/h:outputLink&gt;\n"
+"         posted on \n"
+"         &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"            &lt;f:convertDateTime timeZone=\"#{blog.timeZone}\" locale=\"#"
+"{blog.locale}\" type=\"both\"/&gt;\n"
+"         &lt;/h:outputText&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1270
+#, no-c-format
+msgid "Which again uses \"pull\"-style MVC to retrieve the actual search results:"
+msgstr "これも、また実際の検索結果を取得するために \"PULL\" 型 MVC を使用しています。"
+
+#. Tag: programlisting
+#: Tutorial.xml:1273
+#, no-c-format
+msgid ""
+"@Name(\"searchService\")\n"
+"public class SearchService \n"
+"{\n"
+"   \n"
+"   @In\n"
+"   private EntityManager entityManager;\n"
+"   \n"
+"   private String searchPattern;\n"
+"   \n"
+"   @Factory(\"searchResults\")\n"
+"   public List&lt;BlogEntry&gt; getSearchResults()\n"
+"   {\n"
+"      if (searchPattern==null)\n"
+"      {\n"
+"         return null;\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return entityManager.createQuery(\"select be from BlogEntry be "
+"where lower(be.title) \n"
+"                               like :searchPattern or lower(be.body) like :"
+"searchPattern \n"
+"                               order by be.date desc\")\n"
+"               .setParameter( \"searchPattern\", getSqlSearchPattern() )\n"
+"               .setMaxResults(100)\n"
+"               .getResultList();\n"
+"      }\n"
+"   }\n"
+"\n"
+"   private String getSqlSearchPattern()\n"
+"   {\n"
+"      return searchPattern==null ? \"\" : &#39;%&#39; + \n"
+"        searchPattern.toLowerCase().replace(&#39;*&#39;, &#39;%&#39;).replace"
+"(&#39;?&#39;, &#39;_&#39;) \n"
+"           + &#39;%&#39;;\n"
+"   }\n"
+"\n"
+"   public String getSearchPattern()\n"
+"   {\n"
+"      return searchPattern;\n"
+"   }\n"
+"\n"
+"   public void setSearchPattern(String searchPattern)\n"
+"   {\n"
+"      this.searchPattern = searchPattern;\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+"@Name(\"searchService\")\n"
+"public class SearchService \n"
+"{\n"
+"   \n"
+"   @In\n"
+"   private EntityManager entityManager;\n"
+"   \n"
+"   private String searchPattern;\n"
+"   \n"
+"   @Factory(\"searchResults\")\n"
+"   public List&lt;BlogEntry&gt; getSearchResults()\n"
+"   {\n"
+"      if (searchPattern==null)\n"
+"      {\n"
+"         return null;\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return entityManager.createQuery(\"select be from BlogEntry be "
+"where lower(be.title) \n"
+"                               like :searchPattern or lower(be.body) like :"
+"searchPattern \n"
+"                               order by be.date desc\")\n"
+"               .setParameter( \"searchPattern\", getSqlSearchPattern() )\n"
+"               .setMaxResults(100)\n"
+"               .getResultList();\n"
+"      }\n"
+"   }\n"
+"\n"
+"   private String getSqlSearchPattern()\n"
+"   {\n"
+"      return searchPattern==null ? \"\" : &#39;%&#39; + \n"
+"        searchPattern.toLowerCase().replace(&#39;*&#39;, &#39;%&#39;).replace"
+"(&#39;?&#39;, &#39;_&#39;) \n"
+"           + &#39;%&#39;;\n"
+"   }\n"
+"\n"
+"   public String getSearchPattern()\n"
+"   {\n"
+"      return searchPattern;\n"
+"   }\n"
+"\n"
+"   public void setSearchPattern(String searchPattern)\n"
+"   {\n"
+"      this.searchPattern = searchPattern;\n"
+"   }\n"
+"\n"
+"}"
+
+#. Tag: title
+#: Tutorial.xml:1278
+#, no-c-format
+msgid "Using \"push\"-style MVC in a RESTful application"
+msgstr "RESTful アプリケーションの \"PUSH\" 型 MVC の使用"
+
+#. Tag: para
+#: Tutorial.xml:1279
+#, no-c-format
+msgid ""
+"Very occasionally, it makes more sense to use push-style MVC for processing "
+"RESTful pages, and so Seam provides the notion of a <emphasis>page action</"
+"emphasis>. The Blog example uses a page action for the blog entry page, "
+"<literal>entry.xhtml</literal>. Note that this is a little bit contrived, it "
+"would have been easier to use pull-style MVC here as well."
+msgstr ""
+"ごく希に、RESTful ページ処理のために PUSH 型 MVC を使用することが当然の場合が"
+"あります。 そこで、Seam は、<emphasis>ページアクション</emphasis> の概念を提"
+"供します。 Blog サンプルは、 Blog 記入ページ、 <literal>entry.xhtml</"
+"literal> にページアクションを使用しています。 これは、少しわざとらしい感じ"
+"で、ここでは、PULL 型 MVC を使用する方が容易かもしれません。"
+
+#. Tag: para
+#: Tutorial.xml:1282
+#, no-c-format
+msgid ""
+"The <literal>entryAction</literal> component works much like an action class "
+"in a traditional push-MVC action-oriented framework like Struts:"
+msgstr ""
+"<literal>entryAction</literal> コンポーネントは、 Struts のような典型的な "
+"PUSH 型 MVC アクション指向フレームワークのように動作します。"
+
+#. Tag: programlisting
+#: Tutorial.xml:1285
+#, no-c-format
+msgid ""
+"@Name(\"entryAction\")\n"
+"@Scope(STATELESS)\n"
+"public class EntryAction\n"
+"{\n"
+"   @In(create=true) \n"
+"   private Blog blog;\n"
+"   \n"
+"   @Out\n"
+"   private BlogEntry blogEntry;\n"
+"   \n"
+"   public void loadBlogEntry(String id) throws EntryNotFoundException\n"
+"   {\n"
+"      blogEntry = blog.getBlogEntry(id);\n"
+"      if (blogEntry==null) throw new EntryNotFoundException(id);\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+"@Name(\"entryAction\")\n"
+"@Scope(STATELESS)\n"
+"public class EntryAction\n"
+"{\n"
+"   @In(create=true) \n"
+"   private Blog blog;\n"
+"   \n"
+"   @Out\n"
+"   private BlogEntry blogEntry;\n"
+"   \n"
+"   public void loadBlogEntry(String id) throws EntryNotFoundException\n"
+"   {\n"
+"      blogEntry = blog.getBlogEntry(id);\n"
+"      if (blogEntry==null) throw new EntryNotFoundException(id);\n"
+"   }\n"
+"   \n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:1286
+#, no-c-format
+msgid "Page actions are also declared in <literal>pages.xml</literal>:"
+msgstr "ページアクションは、<literal>pages.xml</literal> でも宣言されます。"
+
+#. Tag: programlisting
+#: Tutorial.xml:1289
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   ...\n"
+"\n"
+"   &lt;page view-id=\"/entry.xhtml\" action=\"#{entryAction.loadBlogEntry"
+"(blogEntry.id)}\"&gt;\n"
+"      &lt;param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"\n"
+"   &lt;page view-id=\"/post.xhtml\" action=\"#{loginAction.challenge}\"/"
+"&gt;\n"
+"\n"
+"   &lt;page view-id=\"*\" action=\"#{blog.hitCount.hit}\"/&gt;\n"
+"\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"   ...\n"
+"\n"
+"   &lt;page view-id=\"/entry.xhtml\" action=\"#{entryAction.loadBlogEntry"
+"(blogEntry.id)}\"&gt;\n"
+"      &lt;param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"\n"
+"   &lt;page view-id=\"/post.xhtml\" action=\"#{loginAction.challenge}\"/"
+"&gt;\n"
+"\n"
+"   &lt;page view-id=\"*\" action=\"#{blog.hitCount.hit}\"/&gt;\n"
+"\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1290
+#, no-c-format
+msgid ""
+"Notice that the example is using page actions for some other "
+"functionality&mdash;the login challenge, and the pageview counter. Also "
+"notice the use of a parameter in the page action method binding. This is not "
+"a standard feature of JSF EL, but Seam lets you use it, not just for page "
+"actions, but also in JSF method bindings."
+msgstr ""
+"上記の例は、 その他の機能に対してページアクションを使っています &mdash; ログ"
+"インチャレンジやページビューカウンタなど。 また、 ページアクションメソッドの"
+"バインディングにパラメータを使用しているのにも注目してください。 これは JSF "
+"EL の標準機能ではありませんが、 Seam ではページアクションだけでなく JSF メ"
+"ソッドのバインディングでも使用できるようになっています。"
+
+#. Tag: para
+#: Tutorial.xml:1293
+#, no-c-format
+msgid ""
+"When the <literal>entry.xhtml</literal> page is requested, Seam first binds "
+"the page parameter <literal>blogEntryId</literal> to the model, then runs "
+"the page action, which retrieves the needed data&mdash;the "
+"<literal>blogEntry</literal>&mdash;and places it in the Seam event context. "
+"Finally, the following is rendered:"
+msgstr ""
+"<literal>entry.xhtml</literal> ページがリクエストされると、 Seam は最初にペー"
+"ジパラメータ <literal>blogEntryId</literal> をモデルにバインドし、 次に必要な"
+"データ &mdash; <literal>blogEntry</literal> &mdash; を取得するページアクショ"
+"ンを実行してから、 それを Seam イベントコンテキストに配置します。 最後に、以"
+"下がレンダリングされます。"
+
+#. Tag: programlisting
+#: Tutorial.xml:1296
+#, no-c-format
+msgid ""
+"&lt;div class=\"blogEntry\"&gt;\n"
+"   &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"   &lt;div&gt;\n"
+"      &lt;h:outputText escape=\"false\" value=\"#{blogEntry.body}\"/&gt;\n"
+"   &lt;/div&gt;\n"
+"   &lt;p&gt;\n"
+"      [Posted on&#160;\n"
+"      &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"         &lt;f:convertDateTime timezone=\"#{blog.timeZone}\" locale=\"#{blog."
+"locale}\" type=\"both\"/&gt;\n"
+"      &lt;/h:outputText&gt;]\n"
+"   &lt;/p&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+"&lt;div class=\"blogEntry\"&gt;\n"
+"   &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"   &lt;div&gt;\n"
+"      &lt;h:outputText escape=\"false\" value=\"#{blogEntry.body}\"/&gt;\n"
+"   &lt;/div&gt;\n"
+"   &lt;p&gt;\n"
+"      [Posted on&#160;\n"
+"      &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"         &lt;f:convertDateTime timezone=\"#{blog.timeZone}\" locale=\"#{blog."
+"locale}\" type=\"both\"/&gt;\n"
+"      &lt;/h:outputText&gt;]\n"
+"   &lt;/p&gt;\n"
+"&lt;/div&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1297
+#, no-c-format
+msgid ""
+"If the blog entry is not found in the database, the "
+"<literal>EntryNotFoundException</literal> exception is thrown. We want this "
+"exception to result in a 404 error, not a 505, so we annotate the exception "
+"class:"
+msgstr ""
+"blog エントリがデータベースで見つからない場合、 "
+"<literal>EntryNotFoundException</literal> 例外がスローされます。 exception "
+"is thrown. この例外は 505 エラーではなく 404 であって欲しいので、 例外クラス"
+"のアノテーションを付けます。"
+
+#. Tag: programlisting
+#: Tutorial.xml:1300
+#, no-c-format
+msgid ""
+"@ApplicationException(rollback=true)\n"
+"@HttpError(errorCode=HttpServletResponse.SC_NOT_FOUND)\n"
+"public class EntryNotFoundException extends Exception\n"
+"{\n"
+"   EntryNotFoundException(String id)\n"
+"   {\n"
+"      super(\"entry not found: \" + id);\n"
+"   }\n"
+"}"
+msgstr ""
+"@ApplicationException(rollback=true)\n"
+"@HttpError(errorCode=HttpServletResponse.SC_NOT_FOUND)\n"
+"public class EntryNotFoundException extends Exception\n"
+"{\n"
+"   EntryNotFoundException(String id)\n"
+"   {\n"
+"      super(\"entry not found: \" + id);\n"
+"   }\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:1301
+#, no-c-format
+msgid ""
+"An alternative implementation of the example does not use the parameter in "
+"the method binding:"
+msgstr "別実装のサンプルは、メソッドバインディングでパラメータを使用しません。"
+
+#. Tag: programlisting
+#: Tutorial.xml:1304
+#, no-c-format
+msgid ""
+"@Name(\"entryAction\")\n"
+"@Scope(STATELESS)\n"
+"public class EntryAction\n"
+"{\n"
+"   @In(create=true) \n"
+"   private Blog blog;\n"
+"   \n"
+"   @In @Out\n"
+"   private BlogEntry blogEntry;\n"
+"   \n"
+"   public void loadBlogEntry() throws EntryNotFoundException\n"
+"   {\n"
+"      blogEntry = blog.getBlogEntry( blogEntry.getId() );\n"
+"      if (blogEntry==null) throw new EntryNotFoundException(id);\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+"@Name(\"entryAction\")\n"
+"@Scope(STATELESS)\n"
+"public class EntryAction\n"
+"{\n"
+"   @In(create=true) \n"
+"   private Blog blog;\n"
+"   \n"
+"   @In @Out\n"
+"   private BlogEntry blogEntry;\n"
+"   \n"
+"   public void loadBlogEntry() throws EntryNotFoundException\n"
+"   {\n"
+"      blogEntry = blog.getBlogEntry( blogEntry.getId() );\n"
+"      if (blogEntry==null) throw new EntryNotFoundException(id);\n"
+"   }\n"
+"   \n"
+"}"
+
+#. Tag: programlisting
+#: Tutorial.xml:1305
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   ...\n"
+"\n"
+"   &lt;page view-id=\"/entry.xhtml\" action=\"#{entryAction.loadBlogEntry}"
+"\"&gt;\n"
+"      &lt;param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"   ...\n"
+"\n"
+"   &lt;page view-id=\"/entry.xhtml\" action=\"#{entryAction.loadBlogEntry}"
+"\"&gt;\n"
+"      &lt;param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   ...\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1306
+#, no-c-format
+msgid "It is a matter of taste which implementation you prefer."
+msgstr "どの実装を選択するかは好みの問題です。"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Validation.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Validation.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Validation.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,608 @@
+# translation of Validation.po to Japanese
+# Noriko Mizumoto <noriko at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Validation\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-30 01:52+0000\n"
+"PO-Revision-Date: 2007-11-01 09:34+1000\n"
+"Last-Translator: Noriko Mizumoto <noriko at redhat.com>\n"
+"Language-Team: Japanese <fedora-trans-ja at redhat.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Validation.xml:6
+#, no-c-format
+msgid "JSF form validation in Seam"
+msgstr "Seam での JSF 形式検証"
+
+#. Tag: para
+#: Validation.xml:7
+#, no-c-format
+msgid "In plain JSF, validation is defined in the view:"
+msgstr "プレーンの JSF では、 検証はビューで定義されます。"
+
+#. Tag: programlisting
+#: Validation.xml:10
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;h:messages/&gt;\n"
+"\n"
+"    &lt;div&gt;\n"
+"        Country:\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;my:validateCountry/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    \n"
+"    &lt;div&gt;\n"
+"        Zip code:\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;my:validateZip/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"\n"
+"    &lt;h:commandButton/&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h:form&gt;\n"
+"    &lt;h:messages/&gt;\n"
+"\n"
+"    &lt;div&gt;\n"
+"        Country:\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;my:validateCountry/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    \n"
+"    &lt;div&gt;\n"
+"        Zip code:\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;my:validateZip/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"\n"
+"    &lt;h:commandButton/&gt;\n"
+"&lt;/h:form&gt;"
+
+#. Tag: para
+#: Validation.xml:11
+#, no-c-format
+msgid ""
+"In practice, this approach usually violates DRY, since most \"validation\" "
+"actually enforces constraints that are part of the data model, and exist all "
+"the way down to the database schema definition. Seam provides support for "
+"model-based constraints defined using Hibernate Validator."
+msgstr ""
+"実際には、 データモデルの一部であり、 またデータベーススキーマの定義全体にわ"
+"たって存在する制約をほとんどの「検証」が強制実行するため、 この方法は通常、 "
+"DRY に違反してしまいます。 Seam は Hibernate Validator を使って定義されるモデ"
+"ルベースの制約に対するサポートを提供しています。"
+
+#. Tag: para
+#: Validation.xml:14
+#, no-c-format
+msgid ""
+"Let&#39;s start by defining our constraints, on our <literal>Location</"
+"literal> class:"
+msgstr "<literal>Location</literal> クラスで制約を定義するところから始めてみます。"
+
+#. Tag: programlisting
+#: Validation.xml:17
+#, no-c-format
+msgid ""
+"public class Location {\n"
+"    private String country;\n"
+"    private String zip;\n"
+"    \n"
+"    @NotNull\n"
+"    @Length(max=30)\n"
+"    public String getCountry() { return country; }\n"
+"    public void setCountry(String c) { country = c; }\n"
+"\n"
+"    @NotNull\n"
+"    @Length(max=6)\n"
+"    @Pattern(\"^\\d*$\")\n"
+"    public String getZip() { return zip; }\n"
+"    public void setZip(String z) { zip = z; }\n"
+"}"
+msgstr ""
+"public class Location {\n"
+"    private String country;\n"
+"    private String zip;\n"
+"    \n"
+"    @NotNull\n"
+"    @Length(max=30)\n"
+"    public String getCountry() { return country; }\n"
+"    public void setCountry(String c) { country = c; }\n"
+"\n"
+"    @NotNull\n"
+"    @Length(max=6)\n"
+"    @Pattern(\"^\\d*$\")\n"
+"    public String getZip() { return zip; }\n"
+"    public void setZip(String z) { zip = z; }\n"
+"}"
+
+#. Tag: para
+#: Validation.xml:18
+#, no-c-format
+msgid ""
+"Well, that&#39;s a decent first cut, but in practice it might be more "
+"elegant to use custom constraints instead of the ones built into Hibernate "
+"Validator:"
+msgstr ""
+"スタートとしてはまあまあですが、 実際には Hibernate Validator にビルトされたものを"
+"使うよりもカスタムな制約を使う方がスマートかもしれません。"
+
+#. Tag: programlisting
+#: Validation.xml:21
+#, no-c-format
+msgid ""
+"public class Location {\n"
+"    private String country;\n"
+"    private String zip;\n"
+"    \n"
+"    @NotNull\n"
+"    @Country\n"
+"    public String getCountry() { return country; }\n"
+"    public void setCountry(String c) { country = c; }\n"
+"\n"
+"    @NotNull\n"
+"    @ZipCode\n"
+"    public String getZip() { return zip; }\n"
+"    public void setZip(String z) { zip = z; }\n"
+"}"
+msgstr ""
+"public class Location {\n"
+"    private String country;\n"
+"    private String zip;\n"
+"    \n"
+"    @NotNull\n"
+"    @Country\n"
+"    public String getCountry() { return country; }\n"
+"    public void setCountry(String c) { country = c; }\n"
+"\n"
+"    @NotNull\n"
+"    @ZipCode\n"
+"    public String getZip() { return zip; }\n"
+"    public void setZip(String z) { zip = z; }\n"
+"}"
+
+#. Tag: para
+#: Validation.xml:22
+#, no-c-format
+msgid ""
+"Whichever route we take, we no longer need to specify the type of validation "
+"to be used in the JSF page. Instead, we can use <literal>&lt;s:validate&gt;</"
+"literal> to validate against the constraint defined on the model object."
+msgstr ""
+"いずれの方法をとるにしても、 JSF ページ内で使用される検証のタイプを指定する必"
+"要がなくなります。 かわりに、 <literal>&lt;s:validate&gt;</literal> を使って"
+"モデルオブジェクトで定義される制約に対して検証を行うことができます。"
+
+#. Tag: programlisting
+#: Validation.xml:25
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;h:messages/&gt;\n"
+"\n"
+"    &lt;div&gt;\n"
+"        Country:\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;s:validate/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    \n"
+"    &lt;div&gt;\n"
+"        Zip code:\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;s:validate/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    \n"
+"    &lt;h:commandButton/&gt;\n"
+"\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h:form&gt;\n"
+"    &lt;h:messages/&gt;\n"
+"\n"
+"    &lt;div&gt;\n"
+"        Country:\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;s:validate/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    \n"
+"    &lt;div&gt;\n"
+"        Zip code:\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;s:validate/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    \n"
+"    &lt;h:commandButton/&gt;\n"
+"\n"
+"&lt;/h:form&gt;"
+
+#. Tag: para
+#: Validation.xml:26
+#, no-c-format
+msgid ""
+"<emphasis>Note:</emphasis> specifying <literal>@NotNull</literal> on the "
+"model does <emphasis>not</emphasis> eliminate the requirement for "
+"<literal>required=\"true\"</literal> to appear on the control! This is due "
+"to a limitation of the JSF validation architecture."
+msgstr ""
+"<emphasis>注記:</emphasis> このモデルで <literal>@NotNull</literal> を指定し"
+"てもコントロールに出現させるのに <literal>required=\"true\"</literal> が必要"
+"なくなるというわけではありません。これは JSF 検証アーキテクチャの限界によるも"
+"のです。"
+
+# <emphasis>presents</emphasis>#: en.xml:115 (para)
+#. Tag: para
+#: Validation.xml:29
+#, no-c-format
+msgid ""
+"This approach <emphasis>defines</emphasis> constraints on the model, and "
+"<emphasis>presents</emphasis> constraint violations in the view&mdash;a "
+"significantly better design."
+msgstr ""
+"この方法はモデル上の制約を<emphasis>定義</emphasis>し、 ビューで制約違反を "
+"<emphasis>表示</emphasis> します &mdash; デザイン性に優れている。。"
+
+#. Tag: para
+#: Validation.xml:32
+#, no-c-format
+msgid ""
+"However, it is not much less verbose than what we started with, so let&#39;s "
+"try <literal>&lt;s:validateAll&gt;</literal>:"
+msgstr ""
+"しかし、 最初の例と比べてそれほど冗長性が軽減されているわけではないので、 "
+"<literal>&lt;s:validateAll&gt;</literal> を使ってみます。"
+
+#. Tag: programlisting
+#: Validation.xml:35
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    \n"
+"    &lt;h:messages/&gt;\n"
+"\n"
+"    &lt;s:validateAll&gt;\n"
+"\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;h:inputText value=\"#{location.country}\" required=\"true\"/"
+"&gt;\n"
+"        &lt;/div&gt;\n"
+"\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/"
+"&gt;\n"
+"        &lt;/div&gt;\n"
+"\n"
+"        &lt;h:commandButton/&gt;\n"
+"\n"
+"    &lt;/s:validateAll&gt;\n"
+"\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h:form&gt;\n"
+"    \n"
+"    &lt;h:messages/&gt;\n"
+"\n"
+"    &lt;s:validateAll&gt;\n"
+"\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;h:inputText value=\"#{location.country}\" required=\"true\"/"
+"&gt;\n"
+"        &lt;/div&gt;\n"
+"\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/"
+"&gt;\n"
+"        &lt;/div&gt;\n"
+"\n"
+"        &lt;h:commandButton/&gt;\n"
+"\n"
+"    &lt;/s:validateAll&gt;\n"
+"\n"
+"&lt;/h:form&gt;"
+
+#. Tag: para
+#: Validation.xml:36
+#, no-c-format
+msgid ""
+"This tag simply adds an <literal>&lt;s:validate&gt;</literal> to every input "
+"in the form. For a large form, it can save a lot of typing!"
+msgstr ""
+"このタグは単純に <literal>&lt;s:validate&gt;</literal> をフォーム内での各入力"
+"に追加します。 フォームが大きくなる場合は、 入力の手間をかなり省くことができ"
+"ることになります。"
+
+#. Tag: para
+#: Validation.xml:39
+#, no-c-format
+msgid ""
+"Now we need to do something about displaying feedback to the user when "
+"validation fails. Currently we are displaying all messages at the top of the "
+"form. What we would really like to do is display the message next to the "
+"field with the error (this is possible in plain JSF), highlight the field "
+"and label (this is not possible) and, for good measure, display some image "
+"next the the field (also not possible). We also want to display a little "
+"colored asterisk next to the label for each required form field."
+msgstr ""
+"ここで、 検証が失敗した場合にユーザーに対してフィードバックを表示させるために"
+"何らか手を打たなければなりません。 現在、 すべてのメッセージはフォームの冒頭"
+"で表示しています。 実際に行いたいのは、 エラーを付けてフィールドのとなりに"
+"メッセージを表示 (プレーン JSF で可能)、 フィールドとラベルをハイライトさせ"
+"て (これは不可能)、 ついでにフィールドのとなりに何かイメージを表示させる (こ"
+"れも不可能) ことです。 また、 必須事項の各フィールドにはラベルのとなりに色の"
+"付いたアスタリスクを表示させたいとします。"
+
+#. Tag: para
+#: Validation.xml:42
+#, no-c-format
+msgid ""
+"That&#39;s quite a lot of functionality we need for each field of our form. "
+"We wouldn&#39;t want to have to specify higlighting and the layout of the "
+"image, message and input field for every field on the form. So, instead, "
+"we&#39;ll specify the common layout in a facelets template:"
+msgstr ""
+"フォームの各フィールドに対してかなり多くの機能を必要としています。 フォームに"
+"あるすべてのフィールドそれぞれに対してイメージ、メッセージ、入力フィールドの"
+"レイアウトやハイライトを指定したいとは思わないでしょうから、 代わりに "
+"facelets テンプレートで一般的なレイアウトを指定します。"
+
+#. Tag: programlisting
+#: Validation.xml:45
+#, no-c-format
+msgid ""
+"&lt;ui:composition xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"                xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"                xmlns:h=\"http://java.sun.com/jsf/html\"\n"
+"                xmlns:f=\"http://java.sun.com/jsf/core\"\n"
+"                xmlns:s=\"http://jboss.com/products/seam/taglib\"&gt;\n"
+"                 \n"
+"    &lt;div&gt;\n"
+"    \n"
+"        &lt;s:label styleClass=\"#{invalid?&#39;error&#39;:&#39;&#39;}"
+"\"&gt;\n"
+"            &lt;ui:insert name=\"label\"/&gt;\n"
+"            &lt;s:span styleClass=\"required\" rendered=\"#{required}\"&gt;"
+"*&lt;/s:span&gt;\n"
+"        &lt;/s:label&gt;\n"
+"        \n"
+"        &lt;span class=\"#{invalid?&#39;error&#39;:&#39;&#39;}\"&gt;\n"
+"            &lt;h:graphicImage src=\"img/error.gif\" rendered=\"#{invalid}\"/"
+"&gt;\n"
+"            &lt;s:validateAll&gt;\n"
+"                &lt;ui:insert/&gt;\n"
+"            &lt;/s:validateAll&gt;\n"
+"        &lt;/span&gt;\n"
+"        \n"
+"        &lt;s:message styleClass=\"error\"/&gt;\n"
+"        \n"
+"    &lt;/div&gt;\n"
+"    \n"
+"&lt;/ui:composition&gt;"
+msgstr ""
+"&lt;ui:composition xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"                xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"                xmlns:h=\"http://java.sun.com/jsf/html\"\n"
+"                xmlns:f=\"http://java.sun.com/jsf/core\"\n"
+"                xmlns:s=\"http://jboss.com/products/seam/taglib\"&gt;\n"
+"                 \n"
+"    &lt;div&gt;\n"
+"    \n"
+"        &lt;s:label styleClass=\"#{invalid?&#39;error&#39;:&#39;&#39;}"
+"\"&gt;\n"
+"            &lt;ui:insert name=\"label\"/&gt;\n"
+"            &lt;s:span styleClass=\"required\" rendered=\"#{required}\"&gt;"
+"*&lt;/s:span&gt;\n"
+"        &lt;/s:label&gt;\n"
+"        \n"
+"        &lt;span class=\"#{invalid?&#39;error&#39;:&#39;&#39;}\"&gt;\n"
+"            &lt;h:graphicImage src=\"img/error.gif\" rendered=\"#{invalid}\"/"
+"&gt;\n"
+"            &lt;s:validateAll&gt;\n"
+"                &lt;ui:insert/&gt;\n"
+"            &lt;/s:validateAll&gt;\n"
+"        &lt;/span&gt;\n"
+"        \n"
+"        &lt;s:message styleClass=\"error\"/&gt;\n"
+"        \n"
+"    &lt;/div&gt;\n"
+"    \n"
+"&lt;/ui:composition&gt;"
+
+#. Tag: para
+#: Validation.xml:46
+#, no-c-format
+msgid ""
+"We can include this template for each of our form fields using <literal>&lt;"
+"s:decorate&gt;</literal>."
+msgstr ""
+"<literal>&lt;s:decorate&gt;</literal> を使って各フォームフィールドにこのテン"
+"プレートを含ませることができます。"
+
+#. Tag: programlisting
+#: Validation.xml:49
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"\n"
+"    &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"\n"
+"    &lt;s:decorate template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Country:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"/"
+"&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"    \n"
+"    &lt;s:decorate template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Zip code:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"\n"
+"    &lt;h:commandButton/&gt;\n"
+"\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h:form&gt;\n"
+"\n"
+"    &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"\n"
+"    &lt;s:decorate template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Country:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"/"
+"&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"    \n"
+"    &lt;s:decorate template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Zip code:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"\n"
+"    &lt;h:commandButton/&gt;\n"
+"\n"
+"&lt;/h:form&gt;"
+
+#. Tag: para
+#: Validation.xml:50
+#, no-c-format
+msgid ""
+"Finally, we can use Ajax4JSF to display validation messages as the user is "
+"navigating around the form:"
+msgstr ""
+"最後に、 ユーザーがフォーム内を行ったり来たりするのに応じて Ajax4JSF を使って"
+"検証メッセージを表示させることができます。"
+
+#. Tag: programlisting
+#: Validation.xml:53
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"\n"
+"    &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"\n"
+"    &lt;s:decorate id=\"countryDecoration\" template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Country:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;a:support event=\"onblur\" reRender=\"countryDecoration\"/"
+"&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"    \n"
+"    &lt;s:decorate id=\"zipDecoration\" template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Zip code:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;a:support event=\"onblur\" reRender=\"zipDecoration\"/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"\n"
+"    &lt;h:commandButton/&gt;\n"
+"\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h:form&gt;\n"
+"\n"
+"    &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"\n"
+"    &lt;s:decorate id=\"countryDecoration\" template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Country:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;a:support event=\"onblur\" reRender=\"countryDecoration\"/"
+"&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"    \n"
+"    &lt;s:decorate id=\"zipDecoration\" template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Zip code:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;a:support event=\"onblur\" reRender=\"zipDecoration\"/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"\n"
+"    &lt;h:commandButton/&gt;\n"
+"\n"
+"&lt;/h:form&gt;"
+
+#. Tag: para
+#: Validation.xml:54
+#, no-c-format
+msgid ""
+"As a final note, it&#39;s better style to define explicit ids for important "
+"controls on the page, especially if you want to do automated testing for the "
+"UI, using some toolkit like Selenium. If you don&#39;t provide explicit ids, "
+"JSF will generate them, but the generated values will change if you change "
+"anything on the page."
+msgstr ""
+"ページ上の重要なコントロールに対して、 特に Selenium のようなツールキットを"
+"使って UI の自動化テストを行いたい場合などは、 明示的な ID を定義するスタイル"
+"の方がよいでしょう。 明示的な ID を与えないと JSF によって ID が生成されます"
+"が、 ページに何らかの変更を加えるとこの生成された値も変更されます。"
+
+#. Tag: programlisting
+#: Validation.xml:57
+#, no-c-format
+msgid ""
+"&lt;h:form id=\"form\"&gt;\n"
+"\n"
+"    &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"\n"
+"    &lt;s:decorate id=\"countryDecoration\" template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Country:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText id=\"country\" value=\"#{location.country}\" "
+"required=\"true\"&gt;\n"
+"            &lt;a:support event=\"onblur\" reRender=\"countryDecoration\"/"
+"&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"    \n"
+"    &lt;s:decorate id=\"zipDecoration\" template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Zip code:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText id=\"zip\" value=\"#{location.zip}\" required=\"true"
+"\"&gt;\n"
+"            &lt;a:support event=\"onblur\" reRender=\"zipDecoration\"/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"\n"
+"    &lt;h:commandButton/&gt;\n"
+"\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h:form id=\"form\"&gt;\n"
+"\n"
+"    &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"\n"
+"    &lt;s:decorate id=\"countryDecoration\" template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Country:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText id=\"country\" value=\"#{location.country}\" "
+"required=\"true\"&gt;\n"
+"            &lt;a:support event=\"onblur\" reRender=\"countryDecoration\"/"
+"&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"    \n"
+"    &lt;s:decorate id=\"zipDecoration\" template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Zip code:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText id=\"zip\" value=\"#{location.zip}\" required=\"true"
+"\"&gt;\n"
+"            &lt;a:support event=\"onblur\" reRender=\"zipDecoration\"/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"\n"
+"    &lt;h:commandButton/&gt;\n"
+"\n"
+"&lt;/h:form&gt;"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Xml.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Xml.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ja-JP/Xml.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1287 @@
+# translation of Xml.po to Japanese
+# Noriko Mizumoto <noriko at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Xml\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-30 01:52+0000\n"
+"PO-Revision-Date: 2007-11-01 10:07+1000\n"
+"Last-Translator: Noriko Mizumoto <noriko at redhat.com>\n"
+"Language-Team: Japanese <fedora-trans-ja at redhat.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Xml.xml:6
+#, no-c-format
+msgid "Configuring Seam components"
+msgstr "Seamコンポーネントの設定"
+
+#. Tag: para
+#: Xml.xml:7
+#, no-c-format
+msgid ""
+"The philosophy of minimizing XML-based configuration is extremely strong in "
+"Seam. Nevertheless, there are various reasons why we might want to configure "
+"a Seam component using XML: to isolate deployment-specific information from "
+"the Java code, to enable the creation of re-usable frameworks, to configure "
+"Seam&#39;s built-in functionality, etc. Seam provides two basic approaches "
+"to configuring components: configuration via property settings in a "
+"properties file or <literal>web.xml</literal>, and configuration via "
+"<literal>components.xml</literal>."
+msgstr ""
+"XMLベースの構成を最小にするという理念が Seam では徹底されています。 とはいえ、 XML を使って Seam コンポーネントを設定したいという理由はさまざまあります。 Java "
+"コードからデプロイメント固有の情報を切り離したい、 再利用可能なフレームワーク"
+"を作成可能にしたい、 Seam 組み込み機能を設定したい等の理由です。 Seam はコン"
+"ポーネントの設定に 2 種類の基本的な手段を提供しています。 プロパティファイルまたは "
+"<literal>web.xml</literal> でのプロパティ設定による設定と、 "
+"<literal>components.xml</literal> による設定です。"
+
+#. Tag: title
+#: Xml.xml:10
+#, no-c-format
+msgid "Configuring components via property settings"
+msgstr "プロパティ設定によるコンポーネントの設定"
+
+#. Tag: para
+#: Xml.xml:11
+#, no-c-format
+msgid ""
+"Seam components may be provided with configuration properties either via "
+"servlet context parameters, or via a properties file named <literal>seam."
+"properties</literal> in the root of the classpath."
+msgstr ""
+"Seamコンポーネントには、サーブレットコンテキストパラメータ、あるいはクラスパ"
+"スのルートに存在する<literal>seam.properties</literal>と名付けられたプロパ"
+"ティファイルのいずれかによって、設定プロパティを提供することが可能です。"
+
+#. Tag: para
+#: Xml.xml:14
+#, no-c-format
+msgid ""
+"The configurable Seam component must expose JavaBeans-style property setter "
+"methods for the configurable attributes. If a seam component named "
+"<literal>com.jboss.myapp.settings</literal> has a setter method named "
+"<literal>setLocale()</literal>, we can provide a property named <literal>com."
+"jboss.myapp.settings.locale</literal> in the <literal>seam.properties</"
+"literal> file or as a servlet context parameter, and Seam will set the value "
+"of the <literal>locale</literal> attribute whenever it instantiates the "
+"component."
+msgstr ""
+"設定可能はSeamコンポーネントは、設定属性に対してJavaBeansスタイルのプロパティ"
+"用セッターメソッドを公開しなければなりません。 <literal>com.jboss.myapp."
+"settings</literal>という名前のSeamコンポーネントが、<literal>setLocale()</"
+"literal>という名前のセッターメソッドを持つとすると、<literal>seam."
+"properties</literal>ファイルあるいはサーブレットコンテキストパラメータで"
+"<literal>com.jboss.myapp.settings.locale</literal>という名前のプロパティを提"
+"供することが可能となり、Seamはそのコンポーネントを生成するときには"
+"<literal>locale</literal>属性の値を設定します。"
+
+#. Tag: para
+#: Xml.xml:17
+#, no-c-format
+msgid ""
+"The same mechanism is used to configure Seam itself. For example, to set the "
+"conversation timeout, we provide a value for <literal>org.jboss.seam.core."
+"manager.conversationTimeout</literal> in <literal>web.xml</literal> or "
+"<literal>seam.properties</literal>. (There is a built-in Seam component "
+"named <literal>org.jboss.seam.core.manager</literal> with a setter method "
+"named <literal>setConversationTimeout()</literal>.)"
+msgstr ""
+"同じメカニズムはSeam自身の設定にも使われます。たとえば、対話のタイムアウトを"
+"設定するには、 <literal>web.xml</literal>または <literal>seam.properties</"
+"literal>において、 <literal>org.jboss.seam.core.manager.conversationTimeout</"
+"literal>の値を提供します。 (<literal>org.jboss.seam.core.manager</literal>と"
+"いう名前の組み込みSeamコンポーネントが存在し、 それには"
+"<literal>setConversationTimeout()</literal>というセッターメソッドがありま"
+"す。)"
+
+#. Tag: title
+#: Xml.xml:20
+#, no-c-format
+msgid "Configuring components via components.xml"
+msgstr "components.xml によるコンポーネントの設定"
+
+#. Tag: para
+#: Xml.xml:21
+#, no-c-format
+msgid ""
+"The <literal>components.xml</literal> file is a bit more powerful than "
+"property settings. It lets you:"
+msgstr "<literal>components.xml</literal>ファイルはプロパティ設定に比べパワフルです。 次を行うことができます。"
+
+#. Tag: para
+#: Xml.xml:26
+#, no-c-format
+msgid ""
+"Configure components that have been installed automatically&mdash;including "
+"both built-in components, and application components that have been "
+"annotated with the <literal>@Name</literal> annotation and picked up by "
+"Seam&#39;s deployment scanner."
+msgstr ""
+"自動的にインストールが完了済みとなっているコンポーネントを設定できます &mdash; これ"
+"には組み込みコンポーネントと、 Seam デプロイメントスキャナーによって検出される "
+"<literal>@Name</literal>アノテーション付きのアプリケーションコンポーネントの両方が含まれます。"
+
+#. Tag: para
+#: Xml.xml:31
+#, no-c-format
+msgid ""
+"Install classes with no <literal>@Name</literal> annotation as Seam "
+"components&mdash;this is most useful for certain kinds of infrastructural "
+"components which can be installed multiple times different names (for "
+"example Seam-managed persistence contexts)."
+msgstr ""
+"<literal>@Name</literal> アノテーションの無いクラスを Seam コンポーネントとして"
+"インストール可能です &mdash; これは異なる名前で複数回インストールできるようなある種"
+"のインフラストラクチャコンポーネントに対して最も役に立ちます(例:Seam管理対象永"
+"続コンテキスト)。"
+
+#. Tag: para
+#: Xml.xml:36
+#, no-c-format
+msgid ""
+"Install components that <emphasis>do</emphasis> have a <literal>@Name</"
+"literal> annotation but are not installed by default because of an "
+"<literal>@Install</literal> annotation that indicates the component should "
+"not be installed."
+msgstr ""
+"<literal>@Name</literal>アノテーションを持ってはいるものの、コンポーネントを"
+"インストールしないことを示す<literal>@Install</literal>のためにデフォルトでイ"
+"ンストールしないコンポーネントをインストール可能です。"
+
+#. Tag: para
+#: Xml.xml:41
+#, no-c-format
+msgid "Override the scope of a component."
+msgstr "コンポーネントのスコープを上書き (override) できます。"
+
+#. Tag: para
+#: Xml.xml:46
+#, no-c-format
+msgid ""
+"A <literal>components.xml</literal> file may appear in one of three "
+"different places:"
+msgstr ""
+"<literal>components.xml</literal>ファイルは次の3つの異なる場所に置くことがで"
+"きます。"
+
+#. Tag: para
+#: Xml.xml:51
+#, no-c-format
+msgid "The <literal>WEB-INF</literal> directory of a <literal>war</literal>."
+msgstr "<literal>war</literal>の<literal>WEB-INF</literal>ディレクトリ"
+
+#. Tag: para
+#: Xml.xml:56
+#, no-c-format
+msgid "The <literal>META-INF</literal> directory of a <literal>jar</literal>."
+msgstr "<literal>jar</literal>の<literal>META-INF</literal>ディレクトリ"
+
+#. Tag: para
+#: Xml.xml:61
+#, no-c-format
+msgid ""
+"Any directory of a <literal>jar</literal> that contains classes with an "
+"<literal>@Name</literal> annotation."
+msgstr ""
+"<literal>@Name</literal>アノテーション付きのクラスを含む任意の<literal>jar</"
+"literal>"
+
+#. Tag: para
+#: Xml.xml:66
+#, no-c-format
+msgid ""
+"Usually, Seam components are installed when the deployment scanner discovers "
+"a class with a <literal>@Name</literal> annotation sitting in an archive "
+"with a <literal>seam.properties</literal> file or a <literal>META-INF/"
+"components.xml</literal> file. (Unless the component has an "
+"<literal>@Install</literal> annotation indicating it should not be installed "
+"by default.) The <literal>components.xml</literal> file lets us handle "
+"special cases where we need to override the annotations."
+msgstr ""
+"通常、Seamコンポーネントはデプロイメントスキャナーが<literal>seam."
+"properties</literal> ファイルや<literal>META-INF/components.xml</literal>を持"
+"つアーカイブ内で <literal>@Name</literal>アノテーションの付いたクラスを発見し"
+"たときにインストールされます (ただし、<literal>@Install</literal> アノテー"
+"ションがデフォルトでインストールしないと 指定していない限り) 。 "
+"<literal>components.xml</literal>ファイルを使えば、 アノテーションを上書きす"
+"る必要があるような特別な場合に対処することができます。"
+
+#. Tag: para
+#: Xml.xml:69
+#, no-c-format
+msgid ""
+"For example, the following <literal>components.xml</literal> file installs "
+"the JBoss Embeddable EJB3 container:"
+msgstr ""
+"たとえば、次の<literal>components.xml</literal>ファイルは JBoss組み込みEJBコ"
+"ンテナをインストールします。"
+
+#. Tag: programlisting
+#: Xml.xml:72
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"&gt;\n"
+"    &lt;core:ejb/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"&gt;\n"
+"    &lt;core:ejb/&gt;\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:73
+#, no-c-format
+msgid "This example does the same thing:"
+msgstr "これは以下と同じことをします。"
+
+#. Tag: programlisting
+#: Xml.xml:76
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component class=\"org.jboss.seam.core.Ejb\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components&gt;\n"
+"    &lt;component class=\"org.jboss.seam.core.Ejb\"/&gt;\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:77
+#, no-c-format
+msgid ""
+"This one installs and configures two different Seam-managed persistence "
+"contexts:"
+msgstr ""
+"これは2種類の異なるSeam管理対象永続コンテキストとインストールと設定を行いま"
+"す。"
+
+#. Tag: programlisting
+#: Xml.xml:80
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"    &lt;core:managed-persistence-context name=\"customerDatabase\"\n"
+"                persistence-unit-jndi-name=\"java:/"
+"customerEntityManagerFactory\"/&gt;\n"
+"        \n"
+"    &lt;core:managed-persistence-context name=\"accountingDatabase\"\n"
+"                persistence-unit-jndi-name=\"java:/"
+"accountingEntityManagerFactory\"/&gt;            \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"    &lt;core:managed-persistence-context name=\"customerDatabase\"\n"
+"                persistence-unit-jndi-name=\"java:/"
+"customerEntityManagerFactory\"/&gt;\n"
+"        \n"
+"    &lt;core:managed-persistence-context name=\"accountingDatabase\"\n"
+"                persistence-unit-jndi-name=\"java:/"
+"accountingEntityManagerFactory\"/&gt;            \n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:81
+#, no-c-format
+msgid "As does this one:"
+msgstr "これは以下と同じです。"
+
+#. Tag: programlisting
+#: Xml.xml:84
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component name=\"customerDatabase\" \n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"customerEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"    \n"
+"    &lt;component name=\"accountingDatabase\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"accountingEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components&gt;\n"
+"    &lt;component name=\"customerDatabase\" \n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"customerEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"    \n"
+"    &lt;component name=\"accountingDatabase\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"accountingEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:85
+#, no-c-format
+msgid ""
+"This example creates a session-scoped Seam-managed persistence context (this "
+"is not recommended in practice):"
+msgstr ""
+"この例はセッションスコープのSeam管理対象永続コンテキストを生成します (実際に"
+"は推奨されるものではありません)。"
+
+#. Tag: programlisting
+#: Xml.xml:88
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"  &lt;core:managed-persistence-context name=\"productDatabase\" \n"
+"                                   scope=\"session\"\n"
+"              persistence-unit-jndi-name=\"java:/productEntityManagerFactory"
+"\"/&gt;        \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"  &lt;core:managed-persistence-context name=\"productDatabase\" \n"
+"                                   scope=\"session\"\n"
+"              persistence-unit-jndi-name=\"java:/productEntityManagerFactory"
+"\"/&gt;        \n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: programlisting
+#: Xml.xml:89
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"            \n"
+"    &lt;component name=\"productDatabase\"\n"
+"              scope=\"session\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"productEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components&gt;\n"
+"            \n"
+"    &lt;component name=\"productDatabase\"\n"
+"              scope=\"session\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"productEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:90
+#, no-c-format
+msgid ""
+"It is common to use the <literal>auto-create</literal> option for "
+"infrastructural objects like persistence contexts, which saves you from "
+"having to explicitly specify <literal>create=true</literal> when you use the "
+"<literal>@In</literal> annotation."
+msgstr ""
+"永続コンテキストのような基盤となるオブジェクトに対して<literal>auto-create</"
+"literal> オプションを使用するのは一般的なことです。そうすることで、"
+"<literal>@In</literal> アノテーションを使うときに明示的に"
+"<literal>create=true</literal>を指定することを防ぐ ことができます。"
+
+#. Tag: programlisting
+#: Xml.xml:93
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"  &lt;core:managed-persistence-context name=\"productDatabase\" \n"
+"                             auto-create=\"true\"\n"
+"              persistence-unit-jndi-name=\"java:/productEntityManagerFactory"
+"\"/&gt;        \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"  &lt;core:managed-persistence-context name=\"productDatabase\" \n"
+"                             auto-create=\"true\"\n"
+"              persistence-unit-jndi-name=\"java:/productEntityManagerFactory"
+"\"/&gt;        \n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: programlisting
+#: Xml.xml:94
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"            \n"
+"    &lt;component name=\"productDatabase\"\n"
+"        auto-create=\"true\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"productEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components&gt;\n"
+"            \n"
+"    &lt;component name=\"productDatabase\"\n"
+"        auto-create=\"true\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"productEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:95
+#, no-c-format
+msgid ""
+"The <literal>&lt;factory&gt;</literal> declaration lets you specify a value "
+"or method binding expression that will be evaluated to initialize the value "
+"of a context variable when it is first referenced."
+msgstr ""
+"<literal>&lt;factory&gt;</literal>宣言は、値もしくはメソッド結合式を指定し"
+"て、 それが最初に参照されたときにコンテキスト変数値を初期化するようにできま"
+"す。"
+
+#. Tag: programlisting
+#: Xml.xml:98
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"contact\" method=\"#{contactManager.loadContact}\" "
+"scope=\"CONVERSATION\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"contact\" method=\"#{contactManager.loadContact}\" "
+"scope=\"CONVERSATION\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:99
+#, no-c-format
+msgid "You can create an \"alias\" (a second name) for a Seam component like so:"
+msgstr "Seamコンポーネントの「エイリアス」 (別名) が生成可能です。"
+
+#. Tag: programlisting
+#: Xml.xml:102
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"user\" value=\"#{actor}\" scope=\"STATELESS\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"user\" value=\"#{actor}\" scope=\"STATELESS\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:103
+#, no-c-format
+msgid "You can even create an \"alias\" for a commonly used expression:"
+msgstr "よく使用される式に対しても「エイリアス」を生成することすら可能です。"
+
+#. Tag: programlisting
+#: Xml.xml:106
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"contact\" value=\"#{contactManager.contact}\" scope="
+"\"STATELESS\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"contact\" value=\"#{contactManager.contact}\" scope="
+"\"STATELESS\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:107
+#, no-c-format
+msgid ""
+"It is especially common to see the use of <literal>auto-create=\"true\"</"
+"literal> with the <literal>&lt;factory&gt;</literal> declaration:"
+msgstr ""
+"<literal>&lt;factory&gt;</literal>宣言で<literal>auto-create=\"true\"</"
+"literal>を使うことは 日常的によく目にすることです。"
+
+#. Tag: programlisting
+#: Xml.xml:110
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"session\" value=\"#{entityManager.delegate}\" scope="
+"\"STATELESS\" \n"
+"       auto-create=\"true\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"session\" value=\"#{entityManager.delegate}\" scope="
+"\"STATELESS\" \n"
+"       auto-create=\"true\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:111
+#, no-c-format
+msgid ""
+"Sometimes we want to reuse the same <literal>components.xml</literal> file "
+"with minor changes during both deployment and testing. Seam lets you place "
+"wildcards of the form <literal>@wildcard@</literal> in the "
+"<literal>components.xml</literal> file which can be replaced either by your "
+"Ant build script (at deployment time) or by providing a file named "
+"<literal>components.properties</literal> in the classpath (at development "
+"time). You&#39;ll see this approach used in the Seam examples."
+msgstr ""
+"デプロイとテストの両方において <literal>components.xml</literal> ファイルをほん"
+"の少し修正するだけで同じファイルを再利用したいということがあります。 Seam は "
+"<literal>components.xml</literal> ファイル内に <literal>@wildcard@</literal> 形"
+"式のワイルドカードを配置することが可能で、 Ant ビルドスクリプト (デプロイ時) "
+"やクラスパスに <literal>components.properties</literal> というファイルを与える"
+"こと (開発時) によって値を置き換えることができます。 この方法は Seam サン"
+"プルプログラムで見ることができます。"
+
+#. Tag: title
+#: Xml.xml:114
+#, no-c-format
+msgid "Fine-grained configuration files"
+msgstr "細分化した設定ファイル"
+
+#. Tag: para
+#: Xml.xml:115
+#, no-c-format
+msgid ""
+"If you have a large number of components that need to be configured in XML, "
+"it makes much more sense to split up the information in <literal>components."
+"xml</literal> into many small files. Seam lets you put configuration for a "
+"class named, for example, <literal>com.helloworld.Hello</literal> in a "
+"resource named <literal>com/helloworld/Hello.component.xml</literal>. (You "
+"might be familiar with this pattern, since it is the same one we use in "
+"Hibernate.) The root element of the file may be either a <literal>&lt;"
+"components&gt;</literal> or <literal>&lt;component&gt;</literal> element."
+msgstr ""
+"もしもXMLで設定が必要な大量のコンポーネントがあるなら、<literal>components."
+"xml</literal> に含まれる情報をを多くの細かなファイルに分割することは意味があ"
+"るでしょう。 Seamはあるクラス <literal>com.helloworld.Hello</literal>の設定"
+"を <literal>com/helloworld/Hello.component.xml</literal>という名前のリソース"
+"内に 置くことができます。 (もしかしたらこのパターンに見覚えがあるかもしれませ"
+"ん。なぜなら、 Hibernateでも同様のやり方をしているからです。) そのファイルの"
+"ルート要素は<literal>&lt;components&gt;</literal> または <literal>&lt;"
+"component&gt;</literal>要素のいずれかが可能です。"
+
+#. Tag: para
+#: Xml.xml:118
+#, no-c-format
+msgid "The first option lets you define multiple components in the file:"
+msgstr "最初のオプションはファイル内に複数コンポーネントの定義が可能です。"
+
+#. Tag: programlisting
+#: Xml.xml:121
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component class=\"com.helloworld.Hello\" name=\"hello\"&gt;\n"
+"        &lt;property name=\"name\"&gt;#{user.name}&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"    &lt;factory name=\"message\" value=\"#{hello.message}\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components&gt;\n"
+"    &lt;component class=\"com.helloworld.Hello\" name=\"hello\"&gt;\n"
+"        &lt;property name=\"name\"&gt;#{user.name}&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"    &lt;factory name=\"message\" value=\"#{hello.message}\"/&gt;\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:122
+#, no-c-format
+msgid ""
+"The second option only lets you define or configure one component, but is "
+"less noisy:"
+msgstr ""
+"二番目のオプションは単一コンポーネントしか定義または設定できませんが、 煩雑さ"
+"はありません。"
+
+#. Tag: programlisting
+#: Xml.xml:125
+#, no-c-format
+msgid ""
+"&lt;component name=\"hello\"&gt;\n"
+"    &lt;property name=\"name\"&gt;#{user.name}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+"&lt;component name=\"hello\"&gt;\n"
+"    &lt;property name=\"name\"&gt;#{user.name}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+
+#. Tag: para
+#: Xml.xml:126
+#, no-c-format
+msgid ""
+"In the second option, the class name is implied by the file in which the "
+"component definition appears."
+msgstr ""
+"二番目のオプションでは、クラス名はコンポーネント定義が登場するファイル名に"
+"よって暗に指定されます。"
+
+#. Tag: para
+#: Xml.xml:129
+#, no-c-format
+msgid ""
+"Alternatively, you may put configuration for all classes in the <literal>com."
+"helloworld</literal> package in <literal>com/helloworld/components.xml</"
+"literal>."
+msgstr ""
+"あるいは、<literal>com/helloworld/components.xml</literal>で <literal>com."
+"helloworld</literal>パッケージ内のすべてのクラスの設定をすることも可能です。"
+
+#. Tag: title
+#: Xml.xml:132
+#, no-c-format
+msgid "Configurable property types"
+msgstr "設定可能なプロパティの型"
+
+#. Tag: para
+#: Xml.xml:133
+#, no-c-format
+msgid ""
+"Properties of string, primitive or primitive wrapper type may be configured "
+"just as you would expect:"
+msgstr ""
+"文字列、プリミティブ、プリミティブラッパー型は、あなたが予想する通りに設定で"
+"きます。"
+
+#. Tag: programlisting
+#: Xml.xml:136
+#, no-c-format
+msgid "org.jboss.seam.core.manager.conversationTimeout 60000"
+msgstr "org.jboss.seam.core.manager.conversationTimeout 60000"
+
+#. Tag: programlisting
+#: Xml.xml:137
+#, no-c-format
+msgid "&lt;core:manager conversation-timeout=\"60000\"/&gt;"
+msgstr "&lt;core:manager conversation-timeout=\"60000\"/&gt;"
+
+#. Tag: programlisting
+#: Xml.xml:138
+#, no-c-format
+msgid ""
+"&lt;component name=\"org.jboss.seam.core.manager\"&gt;\n"
+"    &lt;property name=\"conversationTimeout\"&gt;60000&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+"&lt;component name=\"org.jboss.seam.core.manager\"&gt;\n"
+"    &lt;property name=\"conversationTimeout\"&gt;60000&lt;/property&gt;\n"
+"&lt;/component&gt;"
+
+#. Tag: para
+#: Xml.xml:139
+#, no-c-format
+msgid "Arrays, sets and lists of strings or primitives are also supported:"
+msgstr ""
+"文字列またはプリミティブから構成される配列、セット、リストもサポートされま"
+"す。"
+
+#. Tag: programlisting
+#: Xml.xml:142
+#, no-c-format
+msgid ""
+"org.jboss.seam.core.jbpm.processDefinitions order.jpdl.xml, return.jpdl.xml, "
+"inventory.jpdl.xml"
+msgstr ""
+"org.jboss.seam.core.jbpm.processDefinitions order.jpdl.xml, return.jpdl.xml, "
+"inventory.jpdl.xml"
+
+#. Tag: programlisting
+#: Xml.xml:143
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;order.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;return.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;order.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;return.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+
+#. Tag: programlisting
+#: Xml.xml:144
+#, no-c-format
+msgid ""
+"&lt;component name=\"org.jboss.seam.core.jbpm\"&gt;\n"
+"    &lt;property name=\"processDefinitions\"&gt;\n"
+"        &lt;value&gt;order.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;return.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+"&lt;component name=\"org.jboss.seam.core.jbpm\"&gt;\n"
+"    &lt;property name=\"processDefinitions\"&gt;\n"
+"        &lt;value&gt;order.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;return.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/component&gt;"
+
+#. Tag: para
+#: Xml.xml:145
+#, no-c-format
+msgid ""
+"Even maps with String-valued keys and string or primitive values are "
+"supported:"
+msgstr ""
+"文字列値のキーと、文字列またはプリミティブの値から成るマップでさえもサポート"
+"されます。"
+
+#. Tag: programlisting
+#: Xml.xml:148
+#, no-c-format
+msgid ""
+"&lt;component name=\"issueEditor\"&gt;\n"
+"    &lt;property name=\"issueStatuses\"&gt;\n"
+"        &lt;key&gt;open&lt;/key&gt; &lt;value&gt;open issue&lt;/value&gt;\n"
+"        &lt;key&gt;resolved&lt;/key&gt; &lt;value&gt;issue resolved by "
+"developer&lt;/value&gt;\n"
+"        &lt;key&gt;closed&lt;/key&gt; &lt;value&gt;resolution accepted by "
+"user&lt;/value&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+"&lt;component name=\"issueEditor\"&gt;\n"
+"    &lt;property name=\"issueStatuses\"&gt;\n"
+"        &lt;key&gt;open&lt;/key&gt; &lt;value&gt;open issue&lt;/value&gt;\n"
+"        &lt;key&gt;resolved&lt;/key&gt; &lt;value&gt;issue resolved by "
+"developer&lt;/value&gt;\n"
+"        &lt;key&gt;closed&lt;/key&gt; &lt;value&gt;resolution accepted by "
+"user&lt;/value&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/component&gt;"
+
+#. Tag: para
+#: Xml.xml:149
+#, no-c-format
+msgid ""
+"Finally, you may wire together components using a value-binding expression. "
+"Note that this is quite different to injection using <literal>@In</literal>, "
+"since it happens at component instantiation time instead of invocation time. "
+"It is therefore much more similar to the dependency injection facilities "
+"offered by traditional IoC containers like JSF or Spring."
+msgstr ""
+"最後に、値結合式 (value-binding expression) を使ってコンポーネントを連携させ"
+"ることができます。 これは<literal>@In</literal>をつかった注入とはまったく異な"
+"るので注意してください。 なぜなら、それは呼び出し時ではなく、コンポーネント生"
+"成時に起こるからです。 したがって、JSFやSpringのような既存のIoCコンテナによっ"
+"て提供される依存性注入により近いです。"
+
+#. Tag: programlisting
+#: Xml.xml:152
+#, no-c-format
+msgid ""
+"&lt;drools:managed-working-memory name=\"policyPricingWorkingMemory\" rule-"
+"base=\"#{policyPricingRules}\"/&gt;"
+msgstr ""
+"&lt;drools:managed-working-memory name=\"policyPricingWorkingMemory\" rule-"
+"base=\"#{policyPricingRules}\"/&gt;"
+
+#. Tag: programlisting
+#: Xml.xml:153
+#, no-c-format
+msgid ""
+"&lt;component name=\"policyPricingWorkingMemory\"\n"
+"          class=\"org.jboss.seam.drools.ManagedWorkingMemory\"&gt;\n"
+"    &lt;property name=\"ruleBase\"&gt;#{policyPricingRules}&lt;/"
+"property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+"&lt;component name=\"policyPricingWorkingMemory\"\n"
+"          class=\"org.jboss.seam.drools.ManagedWorkingMemory\"&gt;\n"
+"    &lt;property name=\"ruleBase\"&gt;#{policyPricingRules}&lt;/"
+"property&gt;\n"
+"&lt;/component&gt;"
+
+#. Tag: title
+#: Xml.xml:154
+#, no-c-format
+msgid "Using XML Namespaces"
+msgstr "XML名前空間の使用"
+
+#. Tag: para
+#: Xml.xml:155
+#, no-c-format
+msgid ""
+"Throughout the examples, there have been two competing ways of declaring "
+"components: with and without the use of XML namespaces. The following shows "
+"a typical <literal>components.xml</literal> file without namespaces. It uses "
+"the Seam Components DTD:"
+msgstr ""
+"サンプルプログラムを通して、2種類の相異なるコンポーネント宣言の方法がありま"
+"す。 XML名前空間を使用する方法と使用しない方法です。次は、名前空間を使用しな"
+"い典型的な <literal>components.xml</literal>ファイルを示します。 それはSeamコ"
+"ンポーネントDTDを使っています。"
+
+#. Tag: programlisting
+#: Xml.xml:158
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"&gt;\n"
+"&lt;!DOCTYPE components PUBLIC \"-//JBoss/Seam Component Configuration DTD "
+"1.2//EN\"\n"
+"                            \"http://jboss.com/products/seam/components-1.2."
+"dtd\"&gt;\n"
+"&lt;components&gt;\n"
+"\n"
+"    &lt;component class=\"org.jboss.seam.core.init\"&gt;\n"
+"        &lt;property name=\"debug\"&gt;true&lt;/property&gt;\n"
+"        &lt;property name=\"jndiPattern\"&gt;@jndiPattern@&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"    &lt;component name=\"org.jboss.sean.core.ejb\" installed=\"@embeddedEjb@"
+"\" /&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"&gt;\n"
+"&lt;!DOCTYPE components PUBLIC \"-//JBoss/Seam Component Configuration DTD "
+"1.2//EN\"\n"
+"                            \"http://jboss.com/products/seam/components-1.2."
+"dtd\"&gt;\n"
+"&lt;components&gt;\n"
+"\n"
+"    &lt;component class=\"org.jboss.seam.core.init\"&gt;\n"
+"        &lt;property name=\"debug\"&gt;true&lt;/property&gt;\n"
+"        &lt;property name=\"jndiPattern\"&gt;@jndiPattern@&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"    &lt;component name=\"org.jboss.sean.core.ejb\" installed=\"@embeddedEjb@"
+"\" /&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:159
+#, no-c-format
+msgid ""
+"As you can see, this is somewhat verbose. Even worse, the component and "
+"attribute names cannot be validated at development time."
+msgstr ""
+"ご覧の通り、これは幾分煩雑です。 さらに悪いことには、コンポーネントと属性の名"
+"前は、デプロイ時の妥当性検証の対象となりません。"
+
+#. Tag: para
+#: Xml.xml:162
+#, no-c-format
+msgid "The namespaced version looks like this:"
+msgstr "名前空間を使ったバージョンはこのようになります。"
+
+#. Tag: programlisting
+#: Xml.xml:165
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                                        http://jboss.com/products/seam/core-"
+"1.2.xsd \n"
+"                 http://jboss.com/products/seam/components \n"
+"                                        http://jboss.com/products/seam/"
+"components-1.2.xsd\"&gt;\n"
+"\n"
+"    &lt;core:init debug=\"true\" jndi-pattern=\"@jndiPattern@\"/&gt;\n"
+"\n"
+"    &lt;core:ejb installed=\"@embeddedEjb@\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                                        http://jboss.com/products/seam/core-"
+"1.2.xsd \n"
+"                 http://jboss.com/products/seam/components \n"
+"                                        http://jboss.com/products/seam/"
+"components-1.2.xsd\"&gt;\n"
+"\n"
+"    &lt;core:init debug=\"true\" jndi-pattern=\"@jndiPattern@\"/&gt;\n"
+"\n"
+"    &lt;core:ejb installed=\"@embeddedEjb@\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:166
+#, no-c-format
+msgid ""
+"Even though the schema declarations are verbose, the actual XML content is "
+"lean and easy to understand. The schemas provide detailed information about "
+"each component and the attributes available, allowing XML editors to offer "
+"intelligent autocomplete. The use of namespaced elements makes generating "
+"and maintaining correct <literal>components.xml</literal> files much simpler."
+msgstr ""
+"スキーマ宣言は冗長ではありますが、実際のXMLの内容は簡潔かつ理解しやすいもので"
+"す。 このスキーマは利用可能な各コンポーネントと属性に関する詳細情報を提供する"
+"もので、 XMLエディタでインテリジェントな自動補完入力を可能にします。 名前空間"
+"付きの要素の使用は、正しい<literal>components.xml</literal>ファイルの生成と保"
+"守をより簡単にしてくれます。"
+
+#. Tag: para
+#: Xml.xml:169
+#, no-c-format
+msgid ""
+"Now, this works great for the built-in Seam components, but what about user "
+"components? There are two options. First, Seam supports mixing the two "
+"models, allowing the use of the generic <literal>&lt;component&gt;</literal> "
+"declarations for user components, along with namespaced declarations for "
+"built-in components. But even better, Seam allows you to quickly declare "
+"namespaces for your own components."
+msgstr ""
+"さて、これは組み込みSeamコンポーネントに対しては良く機能するようですが、はた"
+"してユーザコンポーネントに対してはどうでしょうか? 最初に、Seamは2つの混在し"
+"たモデルをサポートします。 1つはユーザコンポーネントに対する一般的な"
+"<literal>&lt;component&gt;</literal> 宣言。 もう1つは組み込みコンポーネントに"
+"対する名前空間付きの宣言です。 Seamはユーザコンポーネントに対しても簡単に名前"
+"空間を宣言できるようにしてくれています。"
+
+#. Tag: para
+#: Xml.xml:172
+#, no-c-format
+msgid ""
+"Any Java package can be associated with an XML namespace by annotating the "
+"package with the <literal>@Namespace</literal> annotation. (Package-level "
+"annotations are declared in a file named <literal>package-info.java</"
+"literal> in the package directory.) Here is an example from the seampay demo:"
+msgstr ""
+"任意のJavaパッケージには、<literal>@Namespace</literal>アノテーションをパッ"
+"ケージに付加することによって、XML名前空間を関連付けることができます。 (パッ"
+"ケージレベルのアノテーションは、パッケージディレクトリ内の<literal>package-"
+"info.java</literal>という名前のファイルで宣言されます。) これはseapayデモから"
+"の例です。"
+
+#. Tag: programlisting
+#: Xml.xml:175
+#, no-c-format
+msgid ""
+"@Namespace(value=\"http://jboss.com/products/seam/examples/seampay\")\n"
+"package org.jboss.seam.example.seampay;\n"
+"\n"
+"import org.jboss.seam.annotations.Namespace;"
+msgstr ""
+"@Namespace(value=\"http://jboss.com/products/seam/examples/seampay\")\n"
+"package org.jboss.seam.example.seampay;\n"
+"\n"
+"import org.jboss.seam.annotations.Namespace;"
+
+#. Tag: para
+#: Xml.xml:176
+#, no-c-format
+msgid ""
+"That is all you need to do to use the namespaced style in "
+"<literal>components.xml</literal>! Now we can write:"
+msgstr ""
+"やらなければならないことは、<literal>components.xml</literal>で名前空間スタイ"
+"ルを使うことだけです! こうして次のように書くことが可能になります。"
+
+#. Tag: programlisting
+#: Xml.xml:179
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pay=\"http://jboss.com/products/seam/examples/seampay\"\n"
+"            ... &gt;\n"
+"\n"
+"    &lt;pay:payment-home new-instance=\"#{newPayment}\"\n"
+"                      created-message=\"Created a new payment to #"
+"{newPayment.payee}\" /&gt;\n"
+"\n"
+"    &lt;pay:payment name=\"newPayment\"\n"
+"                 payee=\"Somebody\"\n"
+"                 account=\"#{selectedAccount}\"\n"
+"                 payment-date=\"#{currentDatetime}\"\n"
+"                 created-date=\"#{currentDatetime}\" /&gt;\n"
+"     ...\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pay=\"http://jboss.com/products/seam/examples/seampay\"\n"
+"            ... &gt;\n"
+"\n"
+"    &lt;pay:payment-home new-instance=\"#{newPayment}\"\n"
+"                      created-message=\"Created a new payment to #"
+"{newPayment.payee}\" /&gt;\n"
+"\n"
+"    &lt;pay:payment name=\"newPayment\"\n"
+"                 payee=\"Somebody\"\n"
+"                 account=\"#{selectedAccount}\"\n"
+"                 payment-date=\"#{currentDatetime}\"\n"
+"                 created-date=\"#{currentDatetime}\" /&gt;\n"
+"     ...\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:180
+#, no-c-format
+msgid "<para>Or:</para>"
+msgstr "<para>または、</para>"
+
+#. Tag: programlisting
+#: Xml.xml:183
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pay=\"http://jboss.com/products/seam/examples/seampay\"\n"
+"            ... &gt;\n"
+"\n"
+"    &lt;pay:payment-home&gt;\n"
+"        &lt;pay:new-instance&gt;\"#{newPayment}\"&lt;/pay:new-instance&gt;\n"
+"        &lt;pay:created-message&gt;Created a new payment to #{newPayment."
+"payee}&lt;/pay:created-message&gt;\n"
+"    &lt;/pay:payment-home&gt;\n"
+"    \n"
+"    &lt;pay:payment name=\"newPayment\"&gt;\n"
+"        &lt;pay:payee&gt;Somebody\"&lt;/pay:payee&gt;\n"
+"        &lt;pay:account&gt;#{selectedAccount}&lt;/pay:account&gt;\n"
+"        &lt;pay:payment-date&gt;#{currentDatetime}&lt;/pay:payment-date&gt;\n"
+"        &lt;pay:created-date&gt;#{currentDatetime}&lt;/pay:created-date&gt;\n"
+"     &lt;/pay:payment&gt;\n"
+"     ...\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pay=\"http://jboss.com/products/seam/examples/seampay\"\n"
+"            ... &gt;\n"
+"\n"
+"    &lt;pay:payment-home&gt;\n"
+"        &lt;pay:new-instance&gt;\"#{newPayment}\"&lt;/pay:new-instance&gt;\n"
+"        &lt;pay:created-message&gt;Created a new payment to #{newPayment."
+"payee}&lt;/pay:created-message&gt;\n"
+"    &lt;/pay:payment-home&gt;\n"
+"    \n"
+"    &lt;pay:payment name=\"newPayment\"&gt;\n"
+"        &lt;pay:payee&gt;Somebody\"&lt;/pay:payee&gt;\n"
+"        &lt;pay:account&gt;#{selectedAccount}&lt;/pay:account&gt;\n"
+"        &lt;pay:payment-date&gt;#{currentDatetime}&lt;/pay:payment-date&gt;\n"
+"        &lt;pay:created-date&gt;#{currentDatetime}&lt;/pay:created-date&gt;\n"
+"     &lt;/pay:payment&gt;\n"
+"     ...\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:184
+#, no-c-format
+msgid ""
+"These examples illustrate the two usage models of a namespaced element. In "
+"the first declaration, the <literal>&lt;pay:payment-home&gt;</literal> "
+"references the <literal>paymentHome</literal> component:"
+msgstr ""
+"これらのサンプルは名前空間付き要素の2つの利用モデルを説明します。 最初の宣言"
+"では<literal>&lt;pay:payment-home&gt;</literal>は <literal>paymentHome</"
+"literal>コンポーネントを参照しています。"
+
+#. Tag: programlisting
+#: Xml.xml:187
+#, no-c-format
+msgid ""
+"package org.jboss.seam.example.seampay;\n"
+"...\n"
+"@Name(\"paymentHome\")\n"
+"public class PaymentController\n"
+"    extends EntityHome&lt;Payment&gt;\n"
+"{\n"
+"    ... \n"
+"}"
+msgstr ""
+"package org.jboss.seam.example.seampay;\n"
+"...\n"
+"@Name(\"paymentHome\")\n"
+"public class PaymentController\n"
+"    extends EntityHome&lt;Payment&gt;\n"
+"{\n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Xml.xml:188
+#, no-c-format
+msgid ""
+"The element name is the hyphenated form of the component name. The "
+"attributes of the element are the hyphenated form of the property names."
+msgstr ""
+"その要素名はコンポーネント名をハイフンで連結した形式になっています。 その要素"
+"の属性名はプロパティ名をハイフンで連結した形式になっています。"
+
+#. Tag: para
+#: Xml.xml:191
+#, no-c-format
+msgid ""
+"In the second declaration, the <literal>&lt;pay:payment&gt;</literal> "
+"element refers to the <literal>Payment</literal> class in the <literal>org."
+"jboss.seam.example.seampay</literal> package. In this case <literal>Payment</"
+"literal> is an entity that is being declared as a Seam component:"
+msgstr ""
+"二番目の宣言では、<literal>&lt;pay:payment&gt;</literal>要素は<literal>org."
+"jboss.seam.example.seampay</literal>パッケージでの<literal>Payment</literal>"
+"クラスを参照します。 <literal>Payment</literal> のケースでは、あるエンティ"
+"ティがSeamコンポーネントとして宣言されようとしています。"
+
+#. Tag: programlisting
+#: Xml.xml:194
+#, no-c-format
+msgid ""
+"package org.jboss.seam.example.seampay;\n"
+"...\n"
+"@Entity\n"
+"public class Payment\n"
+"    implements Serializable\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+"package org.jboss.seam.example.seampay;\n"
+"...\n"
+"@Entity\n"
+"public class Payment\n"
+"    implements Serializable\n"
+"{\n"
+"    ...\n"
+"}"
+
+#. Tag: para
+#: Xml.xml:195
+#, no-c-format
+msgid ""
+"If we want validation and autocompletion to work for user-defined "
+"components, we will need a schema. Seam does not yet provide a mechanism to "
+"automatically generate a schema for a set of components, so it is necessary "
+"to generate one manually. The schema definitions for the standard Seam "
+"packages can be used for guidance."
+msgstr ""
+"ユーザ定義コンポーネントに対して妥当性検証と自動補完入力が機能するようにした"
+"いなら、 スキーマが必要になります。Seamはコンポーネントの集まりからスキーマを"
+"自動生成するような機能 はまだ提供していませんので、手動で生成する必要がありま"
+"す。標準的なSeamパッケージのスキーマ定義はガイドとして利用できます。"
+
+#. Tag: para
+#: Xml.xml:198
+#, no-c-format
+msgid "The following are the the namespaces used by Seam:"
+msgstr "次はSeamによって使用済みの名前空間です。"
+
+#. Tag: para
+#: Xml.xml:203
+#, no-c-format
+msgid ""
+"components &mdash; <literal>http://jboss.com/products/seam/components</"
+"literal>"
+msgstr ""
+"components &mdash; <literal>http://jboss.com/products/seam/components</"
+"literal>"
+
+#. Tag: para
+#: Xml.xml:208
+#, no-c-format
+msgid "core &mdash; <literal>http://jboss.com/products/seam/core</literal>"
+msgstr "core &mdash; <literal>http://jboss.com/products/seam/core</literal>"
+
+#. Tag: para
+#: Xml.xml:213
+#, no-c-format
+msgid "drools &mdash; <literal>http://jboss.com/products/seam/drools</literal>"
+msgstr "drools &mdash; <literal>http://jboss.com/products/seam/drools</literal>"
+
+#. Tag: para
+#: Xml.xml:218
+#, no-c-format
+msgid "framework &mdash; <literal>http://jboss.com/products/seam/framework</literal>"
+msgstr "framework &mdash; <literal>http://jboss.com/products/seam/framework</literal>"
+
+#. Tag: para
+#: Xml.xml:223
+#, no-c-format
+msgid "jms &mdash; <literal>http://jboss.com/products/seam/jms</literal>"
+msgstr "jms &mdash; <literal>http://jboss.com/products/seam/jms</literal>"
+
+#. Tag: para
+#: Xml.xml:228
+#, no-c-format
+msgid "remoting &mdash; <literal>http://jboss.com/products/seam/remoting</literal>"
+msgstr "remoting &mdash; <literal>http://jboss.com/products/seam/remoting</literal>"
+
+#. Tag: para
+#: Xml.xml:233
+#, no-c-format
+msgid "theme &mdash; <literal>http://jboss.com/products/seam/theme</literal>"
+msgstr "theme &mdash; <literal>http://jboss.com/products/seam/theme</literal>"
+
+#. Tag: para
+#: Xml.xml:238
+#, no-c-format
+msgid "security &mdash; <literal>http://jboss.com/products/seam/security</literal>"
+msgstr "security &mdash; <literal>http://jboss.com/products/seam/security</literal>"
+
+#. Tag: para
+#: Xml.xml:243
+#, no-c-format
+msgid "mail &mdash; <literal>http://jboss.com/products/seam/mail</literal>"
+msgstr "mail &mdash; <literal>http://jboss.com/products/seam/mail</literal>"
+
+#. Tag: para
+#: Xml.xml:248
+#, no-c-format
+msgid "web &mdash; <literal>http://jboss.com/products/seam/web</literal>"
+msgstr "web &mdash; <literal>http://jboss.com/products/seam/web</literal>"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Annotations.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Annotations.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Annotations.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2030 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Annotations.xml:10
+#, no-c-format
+msgid "Seam annotations"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:11
+#, no-c-format
+msgid ""
+"When you write a Seam application, you'll use a lot of annotations. Seam "
+"lets you use annotations to achieve a declarative style of programming. Most "
+"of the annotations you'll use are defined by the EJB 3.0 specification. The "
+"annotations for data validation are defined by the Hibernate Validator "
+"package. Finally, Seam defines its own set of annotations, which we'll "
+"describe in this chapter."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:14
+#, no-c-format
+msgid ""
+"All of these annotations are defined in the package <literal>org.jboss.seam."
+"annotations</literal>."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:18
+#, no-c-format
+msgid "Annotations for component definition"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:19
+#, no-c-format
+msgid ""
+"The first group of annotations lets you define a Seam component. These "
+"annotations appear on the component class."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:24
+#, no-c-format
+msgid "@Name"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:26
+#, no-c-format
+msgid "@Name(\"componentName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:27
+#, no-c-format
+msgid ""
+"Defines the Seam component name for a class. This annotation is required for "
+"all Seam components."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:33
+#, no-c-format
+msgid "@Scope"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:35
+#, no-c-format
+msgid "@Scope(ScopeType.CONVERSATION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:36
+#, no-c-format
+msgid ""
+"Defines the default context of the component. The possible values are "
+"defined by the <literal>ScopeType</literal> enumeration: <literal>EVENT, "
+"PAGE, CONVERSATION, SESSION, BUSINESS_PROCESS, APPLICATION, STATELESS</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:39
+#, no-c-format
+msgid ""
+"When no scope is explicitly specified, the default depends upon the "
+"component type. For stateless session beans, the default is "
+"<literal>STATELESS</literal>. For entity beans and stateful session beans, "
+"the default is <literal>CONVERSATION</literal>. For JavaBeans, the default "
+"is <literal>EVENT</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:45
+#, no-c-format
+msgid "@Role"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:47
+#, no-c-format
+msgid "@Role(name=\"roleName\", scope=ScopeType.SESSION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:48
+#, no-c-format
+msgid ""
+"Allows a Seam component to be bound to multiple contexts variables. The "
+"<literal>@Name</literal>/<literal>@Scope</literal> annotations define a "
+"\"default role\". Each <literal>@Role</literal> annotation defines an "
+"additional role."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:53
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the context variable name."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:58
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; the context variable scope. When no scope "
+"is explicitly specified, the default depends upon the component type, as "
+"above."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:66
+#, no-c-format
+msgid "@Roles"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:68
+#, no-c-format
+msgid ""
+"@Roles({\n"
+"        @Role(name=\"user\", scope=ScopeType.CONVERSATION),\n"
+"        @Role(name=\"currentUser\", scope=ScopeType.SESSION)\n"
+"    })"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:69
+#, no-c-format
+msgid "Allows specification of multiple additional roles."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:75
+#, no-c-format
+msgid "@Intercept"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:77
+#, no-c-format
+msgid "@Intercept(InterceptionType.ALWAYS)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:78
+#, no-c-format
+msgid ""
+"Determines when Seam interceptors are active. The possible values are "
+"defined by the <literal>InterceptionType</literal> enumeration: "
+"<literal>ALWAYS, AFTER_RESTORE_VIEW, AFTER_UPDATE_MODEL_VALUES, "
+"INVOKE_APPLICATION, NEVER</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:81
+#, no-c-format
+msgid ""
+"When no interception type is explicitly specified, the default depends upon "
+"the component type. For entity beans, the default is <literal>NEVER</"
+"literal>. For session beans, message driven beans and JavaBeans, the default "
+"is <literal>ALWAYS</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:87
+#, no-c-format
+msgid "@JndiName"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:89
+#, no-c-format
+msgid "@JndiName(\"my/jndi/name\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:90
+#, no-c-format
+msgid ""
+"Specifies the JNDI name that Seam will use to look up the EJB component. If "
+"no JNDI name is explicitly specified, Seam will use the JNDI pattern "
+"specified by <literal>org.jboss.seam.core.init.jndiPattern</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:96
+#, no-c-format
+msgid "@Conversational"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:98
+#, no-c-format
+msgid "@Conversational(ifNotBegunOutcome=\"error\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:99
+#, no-c-format
+msgid ""
+"Specifies that a conversation scope component is conversational, meaning "
+"that no method of the component can be called unless a long-running "
+"conversation started by this component is active (unless the method would "
+"begin a new long-running conversation)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:105
+#, no-c-format
+msgid "<literal>@Startup</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:107
+#, no-c-format
+msgid "@Startup(depends={\"org.jboss.core.jndi\", \"org.jboss.core.jta\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:108
+#, no-c-format
+msgid ""
+"Specifies that an application scope component is started immediately at "
+"initialization time. This is mainly used for certain built-in components "
+"that bootstrap critical infrastructure such as JNDI, datasources, etc."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:111
+#, no-c-format
+msgid "<programlisting>@Startup</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:112
+#, no-c-format
+msgid ""
+"Specifies that a session scope component is started immediately at session "
+"creation time."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:117
+#, no-c-format
+msgid ""
+"<literal>depends</literal> &mdash; specifies that the named components must "
+"be started first, if they are installed."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:125
+#, no-c-format
+msgid "@Install"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:127
+#, no-c-format
+msgid "@Install(false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:128
+#, no-c-format
+msgid ""
+"Specifies whether or not a component should be installed by default. The "
+"lack of an @Install annotation indicates a component should be installed."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:131
+#, no-c-format
+msgid "@Install(dependencies=\"org.jboss.seam.core.jbpm\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:132
+#, no-c-format
+msgid ""
+"Specifies that a component should only be stalled if the components listed "
+"as dependencies are also installed."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:135
+#, no-c-format
+msgid "@Install(genericDependencies=ManagedQueueSender.class)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:136
+#, no-c-format
+msgid ""
+"Specifies that a component should only be installed if a component that is "
+"implemented by a certain class is installed. This is useful when the "
+"dependency doesn't have a single well-known name."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:139
+#, no-c-format
+msgid "@Install(classDependencies=\"org.hibernate.Session\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:140
+#, no-c-format
+msgid ""
+"Specifies that a component should only be installed if the named class is in "
+"the classpath."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:143
+#, no-c-format
+msgid "@Install(precedence=BUILT_IN)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:144
+#, no-c-format
+msgid ""
+"Specifies the precedence of the component. If multiple components with the "
+"same name exist, the one with the higher precedence will be installed. The "
+"defined precendence values are:"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:149
+#, no-c-format
+msgid ""
+"<literal>BUILT_IN</literal> &mdash; Precedence of all built-in Seam "
+"components"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:154
+#, no-c-format
+msgid ""
+"<literal>FRAMEWORK</literal> &mdash; Precedence to use for components of "
+"frameworks which extend Seam"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:159
+#, no-c-format
+msgid ""
+"<literal>APPLICATION</literal> &mdash; Predence of application components "
+"(the default precedence)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:164
+#, no-c-format
+msgid ""
+"<literal>DEPLOYMENT</literal> &mdash; Precedence to use for components which "
+"override application components in a particular deployment"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:172
+#, no-c-format
+msgid "@Synchronized"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:174
+#, no-c-format
+msgid "@Synchronized(timeout=1000)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:175
+#, no-c-format
+msgid ""
+"Specifies that a component is accessed concurrently by multiple clients, and "
+"that Seam should serialize requests. If a request is not able to obtain its "
+"lock on the component in the given timeout period, an exception will be "
+"raised."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:181
+#, no-c-format
+msgid "<literal>@ReadOnly</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:183
+#, no-c-format
+msgid "<programlisting>@ReadOnly</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:184
+#, no-c-format
+msgid ""
+"Specifies that a JavaBean component or component method does not require "
+"state replication at the end of the invocation."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:193
+#, no-c-format
+msgid "Annotations for bijection"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:194
+#, no-c-format
+msgid ""
+"The next two annotations control bijection. These attributes occur on "
+"component instance variables or property accessor methods."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:199
+#, no-c-format
+msgid "<literal>@In</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:201
+#, no-c-format
+msgid "<programlisting>@In</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:202
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. If the context "
+"variable is null, an exception will be thrown."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:205
+#, no-c-format
+msgid "@In(required=false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:206
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. The context variable "
+"may be null."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:209
+#, no-c-format
+msgid "@In(create=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:210
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. If the context "
+"variable is null, an instance of the component is instantiated by Seam."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:213
+#, no-c-format
+msgid "@In(value=\"contextVariableName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:214 Annotations.xml:259
+#, no-c-format
+msgid ""
+"Specifies the name of the context variable explicitly, instead of using the "
+"annotated instance variable name."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:217
+#, no-c-format
+msgid "@In(value=\"#{customer.addresses['shipping']}\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:218
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected by evaluating a JSF "
+"EL expression at the beginning of each component invocation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:223
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"Default to the name of the component attribute. Alternatively, specifies a "
+"JSF EL expression, surrounded by <literal>#{...}</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:228
+#, no-c-format
+msgid ""
+"<literal>create</literal> &mdash; specifies that Seam should instantiate the "
+"component with the same name as the context variable if the context variable "
+"is undefined (null) in all contexts. Default to false."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:233
+#, no-c-format
+msgid ""
+"<literal>required</literal> &mdash; specifies Seam should throw an exception "
+"if the context variable is undefined in all contexts."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:241
+#, no-c-format
+msgid "<literal>@Out</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:243
+#, no-c-format
+msgid "<programlisting>@Out</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:244
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is a Seam component is to be "
+"outjected to its context variable at the end of the invocation. If the "
+"attribute is null, an exception is thrown."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:247
+#, no-c-format
+msgid "@Out(required=false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:248
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is a Seam component is to be "
+"outjected to its context variable at the end of the invocation. The "
+"attribute may be null."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:251
+#, no-c-format
+msgid "@Out(scope=ScopeType.SESSION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:252
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is <emphasis>not</emphasis> a Seam "
+"component type is to be outjected to a specific scope at the end of the "
+"invocation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:255
+#, no-c-format
+msgid ""
+"Alternatively, if no scope is explicitly specified, the scope of the "
+"component with the <literal>@Out</literal> attribute is used (or the "
+"<literal>EVENT</literal> scope if the component is stateless)."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:258
+#, no-c-format
+msgid "@Out(value=\"contextVariableName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:264
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"Default to the name of the component attribute."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:269
+#, no-c-format
+msgid ""
+"<literal>required</literal> &mdash; specifies Seam should throw an exception "
+"if the component attribute is null during outjection."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:277
+#, no-c-format
+msgid ""
+"Note that it is quite common for these annotations to occur together, for "
+"example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:280
+#, no-c-format
+msgid "@In(create=true) @Out private User currentUser;"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:281
+#, no-c-format
+msgid ""
+"The next annotation supports the <emphasis>manager component</emphasis> "
+"pattern, where a Seam component that manages the lifecycle of an instance of "
+"some other class that is to be injected. It appears on a component getter "
+"method."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:286
+#, no-c-format
+msgid "<literal>@Unwrap</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:288
+#, no-c-format
+msgid "<programlisting>@Unwrap</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:289
+#, no-c-format
+msgid ""
+"Specifies that the object returned by the annotated getter method is the "
+"thing that is injected instead of the component instance itself."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:295
+#, no-c-format
+msgid ""
+"The next annotation supports the <emphasis>factory component</emphasis> "
+"pattern, where a Seam component is responsible for initializing the value of "
+"a context variable. This is especially useful for initializing any state "
+"needed for rendering the response to a non-faces request. It appears on a "
+"component method."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:300
+#, no-c-format
+msgid "@Factory"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:302
+#, no-c-format
+msgid "@Factory(\"processInstance\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:303
+#, no-c-format
+msgid ""
+"Specifies that the method of the component is used to initialize the value "
+"of the named context variable, when the context variable has no value. This "
+"style is used with methods that return <literal>void</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:306
+#, no-c-format
+msgid "@Factory(\"processInstance\", scope=CONVERSATION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:307
+#, no-c-format
+msgid ""
+"Specifies that the method returns a value that Seam should use to initialize "
+"the value of the named context variable, when the context variable has no "
+"value. This style is used with methods that return a value. If no scope is "
+"explicitly specified, the scope of the component with the <literal>@Factory</"
+"literal> method is used (unless the component is stateless, in which case "
+"the <literal>EVENT</literal> context is used)."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:312
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"If the method is a getter method, default to the JavaBeans property name."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:317
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; specifies the scope that Seam should bind "
+"the returned value to. Only meaningful for factory methods which return a "
+"value."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:325
+#, no-c-format
+msgid "This annotation lets you inject a <literal>Log</literal>:"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:330
+#, no-c-format
+msgid "@Logger"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:332
+#, no-c-format
+msgid "@Logger(\"categoryName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:333
+#, no-c-format
+msgid ""
+"Specifies that a component field is to be injected with an instance of "
+"<literal>org.jboss.seam.log.Log</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:338
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the log category. "
+"Default to the name of the component class."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:346
+#, no-c-format
+msgid "The last annotation lets you inject a request parameter value:"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:351
+#, no-c-format
+msgid "@RequestParameter"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:353
+#, no-c-format
+msgid "@RequestParameter(\"parameterName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:354
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected with the value of a "
+"request parameter. Basic type conversions are performed automatically."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:359
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the request "
+"parameter. Default to the name of the component attribute."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:370
+#, no-c-format
+msgid "Annotations for component lifecycle methods"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:371
+#, no-c-format
+msgid ""
+"These annotations allow a component to react to its own lifecycle events. "
+"They occur on methods of the component. There may be only one of each per "
+"component class."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:376
+#, no-c-format
+msgid "<literal>@Create</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:378
+#, no-c-format
+msgid "<programlisting>@Create</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:379
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when an instance of the component "
+"is instantiated by Seam. Note that create methods are only supported for "
+"JavaBeans and stateful session beans."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:385
+#, no-c-format
+msgid "<literal>@Destroy</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:387
+#, no-c-format
+msgid "<programlisting>@Destroy</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:388
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when the context ends and its "
+"context variables are destroyed. Note that create methods are only supported "
+"for JavaBeans and stateful session beans."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:391
+#, no-c-format
+msgid ""
+"Note that all stateful session bean components <emphasis>must</emphasis> "
+"define a method annotated <literal>@Destroy @Remove</literal> in order to "
+"guarantee destruction of the stateful bean when a context ends."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:394
+#, no-c-format
+msgid ""
+"Destroy methods should be used only for cleanup. <emphasis>Seam catches, "
+"logs and swallows any exception that propagates out of a destroy method.</"
+"emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:400
+#, no-c-format
+msgid "@Observer"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:402
+#, no-c-format
+msgid "@Observer(\"somethingChanged\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:403
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when a component-driven event of "
+"the specified type occurs."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:406
+#, no-c-format
+msgid "@Observer(value=\"somethingChanged\",create=false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:407
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when an event of the specified "
+"type occurs but that an instance should not be created if one doesn't exist. "
+"If an instance does not exist and create is false, the event will not be "
+"observed. The default value for create is true."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:416
+#, no-c-format
+msgid "Annotations for context demarcation"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:417
+#, no-c-format
+msgid ""
+"These annotations provide declarative conversation demarcation. They appear "
+"on methods of Seam components, usually action listener methods."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:420
+#, no-c-format
+msgid ""
+"Every web request has a conversation context associated with it. Most of "
+"these conversations end at the end of the request. If you want a "
+"conversation that span multiple requests, you must \"promote\" the current "
+"conversation to a <emphasis>long-running conversation</emphasis> by calling "
+"a method marked with <literal>@Begin</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:425
+#, no-c-format
+msgid "<literal>@Begin</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:427
+#, no-c-format
+msgid "<programlisting>@Begin</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:428
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation begins when this method returns a "
+"non-null outcome without exception."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:431
+#, no-c-format
+msgid "@Begin(ifOutcome={\"success\", \"continue\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:432
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation begins when this action listener "
+"method returns with one of the given outcomes."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:435
+#, no-c-format
+msgid "@Begin(join=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:436
+#, no-c-format
+msgid ""
+"Specifies that if a long-running conversation is already in progress, the "
+"conversation context is simply propagated."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:439
+#, no-c-format
+msgid "@Begin(nested=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:440
+#, no-c-format
+msgid ""
+"Specifies that if a long-running conversation is already in progress, a new "
+"<emphasis>nested</emphasis> conversation context begins. The nested "
+"conversation will end when the next <literal>@End</literal> is encountered, "
+"and the outer conversation will resume. It is perfectly legal for multiple "
+"nested conversations to exist concurrently in the same outer conversation."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:443
+#, no-c-format
+msgid "@Begin(pageflow=\"process definition name\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:444
+#, no-c-format
+msgid ""
+"Specifies a jBPM process definition name that defines the pageflow for this "
+"conversation."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:447
+#, no-c-format
+msgid "@Begin(flushMode=FlushModeType.MANUAL)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:448
+#, no-c-format
+msgid ""
+"Specify the flush mode of any Seam-managed persistence contexts. "
+"<literal>flushMode=FlushModeType.MANUAL</literal> supports the use of "
+"<emphasis>atomic conversations</emphasis> where all write operations are "
+"queued in the conversation context until an explicit call to <literal>flush()"
+"</literal> (which usually occurs at the end of the conversation)."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:454
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in a new long-running conversation context."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:459
+#, no-c-format
+msgid ""
+"<literal>join</literal> &mdash; determines the behavior when a long-running "
+"conversation is already in progress. If <literal>true</literal>, the context "
+"is propagated. If <literal>false</literal>, an exception is thrown. Default "
+"to <literal>false</literal>. This setting is ignored when "
+"<literal>nested=true</literal> is specified"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:464
+#, no-c-format
+msgid ""
+"<literal>nested</literal> &mdash; specifies that a nested conversation "
+"should be started if a long-running conversation is already in progress."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:469 Annotations.xml:526 Annotations.xml:550
+#, no-c-format
+msgid ""
+"<literal>flushMode</literal> &mdash; set the flush mode of any Seam-managed "
+"Hibernate sessions or JPA persistence contexts that are created during this "
+"conversation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:474
+#, no-c-format
+msgid ""
+"<literal>pageflow</literal> &mdash; a process definition name of a jBPM "
+"process definition deployed via <literal>org.jboss.seam.core.jbpm."
+"pageflowDefinitions.</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:483
+#, no-c-format
+msgid "<literal>@End</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:485
+#, no-c-format
+msgid "<programlisting>@End</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:486
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation ends when this method returns a "
+"non-null outcome without exception."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:489
+#, no-c-format
+msgid ""
+"@End(ifOutcome={\"success\", \"error\"}, evenIfException={SomeException."
+"class, OtherException.class})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:490
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation ends when this action listener "
+"method returns with one of the given outcomes or throws one of the specified "
+"classes of exception."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:496
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in the end of the current long-running conversation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:501 Annotations.xml:585
+#, no-c-format
+msgid ""
+"<literal>beforeRedirect</literal> &mdash; by default, the conversation will "
+"not actually be destroyed until after any redirect has occurred. Setting "
+"<literal>beforeRedirect=true</literal> specifies that the conversation "
+"should be destroyed at the end of the current request, and that the redirect "
+"will be processed in a new temporary conversation context."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:510
+#, no-c-format
+msgid "<literal>@StartTask</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:512
+#, no-c-format
+msgid "<programlisting>@StartTask</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:513
+#, no-c-format
+msgid ""
+"\"Starts\" a jBPM task. Specifies that a long-running conversation begins "
+"when this method returns a non-null outcome without exception. This "
+"conversation is associated with the jBPM task specified in the named request "
+"parameter. Within the context of this conversation, a business process "
+"context is also defined, for the business process instance of the task "
+"instance."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:516
+#, no-c-format
+msgid ""
+"The jBPM <literal>TaskInstance</literal> will be available in a request "
+"context variable named <literal>taskInstance</literal>. The jPBM "
+"<literal>ProcessInstance</literal> will be available in a request context "
+"variable named <literal>processInstance</literal>. (Of course, these objects "
+"are available for injection via <literal>@In</literal>.)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:521 Annotations.xml:545
+#, no-c-format
+msgid ""
+"<literal>taskIdParameter</literal> &mdash; the name of a request parameter "
+"which holds the id of the task. Default to <literal>\"taskId\"</literal>, "
+"which is also the default used by the Seam <literal>taskList</literal> JSF "
+"component."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:534
+#, no-c-format
+msgid "<literal>@BeginTask</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:536
+#, no-c-format
+msgid "<programlisting>@BeginTask</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:537
+#, no-c-format
+msgid ""
+"Resumes work on an incomplete jBPM task. Specifies that a long-running "
+"conversation begins when this method returns a non-null outcome without "
+"exception. This conversation is associated with the jBPM task specified in "
+"the named request parameter. Within the context of this conversation, a "
+"business process context is also defined, for the business process instance "
+"of the task instance."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:540
+#, no-c-format
+msgid ""
+"The jBPM <literal>TaskInstance</literal> will be available in a request "
+"context variable named <literal>taskInstance</literal>. The jPBM "
+"<literal>ProcessInstance</literal> will be available in a request context "
+"variable named <literal>processInstance</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:558
+#, no-c-format
+msgid "<literal>@EndTask</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:560
+#, no-c-format
+msgid "<programlisting>@EndTask</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:561
+#, no-c-format
+msgid ""
+"\"Ends\" a jBPM task. Specifies that a long-running conversation ends when "
+"this method returns a non-null outcome, and that the current task is "
+"complete. Triggers a jBPM transition. The actual transition triggered will "
+"be the default transition unless the application has called "
+"<literal>Transition.setName()</literal> on the built-in component named "
+"<literal>transition</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:564
+#, no-c-format
+msgid "@EndTask(transition=\"transitionName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:565
+#, no-c-format
+msgid "Triggers the given jBPM transition."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:568
+#, no-c-format
+msgid "@EndTask(ifOutcome={\"success\", \"continue\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:569
+#, no-c-format
+msgid ""
+"Specifies that the task ends when this method returns one of the listed "
+"outcomes."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:575
+#, no-c-format
+msgid ""
+"<literal>transition</literal> &mdash; the name of the jBPM transition to be "
+"triggered when ending the task. Defaults to the default transition."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:580
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in the end of the task."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:594
+#, no-c-format
+msgid "@CreateProcess"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:596
+#, no-c-format
+msgid "@CreateProcess(definition=\"process definition name\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:597
+#, no-c-format
+msgid ""
+"Creates a new jBPM process instance when the method returns a non-null "
+"outcome without exception. The <literal>ProcessInstance</literal> object "
+"will be available in a context variable named <literal>processInstance</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:602
+#, no-c-format
+msgid ""
+"<literal>definition</literal> &mdash; the name of the jBPM process "
+"definition deployed via <literal>org.jboss.seam.core.jbpm."
+"processDefinitions</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:610
+#, no-c-format
+msgid "@ResumeProcess"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:612
+#, no-c-format
+msgid "@ResumeProcess(processIdParameter=\"processId\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:613
+#, no-c-format
+msgid ""
+"Re-enters the scope of an existing jBPM process instance when the method "
+"returns a non-null outcome without exception. The <literal>ProcessInstance</"
+"literal> object will be available in a context variable named "
+"<literal>processInstance</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:618
+#, no-c-format
+msgid ""
+"<literal>processIdParameter</literal> &mdash; the name a request parameter "
+"holding the process id. Default to <literal>\"processId\"</literal>."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:629
+#, no-c-format
+msgid "Annotations for transaction demarcation"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:630
+#, no-c-format
+msgid ""
+"Seam provides an annotation that lets you force a rollback of the JTA "
+"transaction for certain action listener outcomes."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:635
+#, no-c-format
+msgid "@Rollback"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:637
+#, no-c-format
+msgid "@Rollback(ifOutcome={\"failure\", \"not-found\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:638
+#, no-c-format
+msgid ""
+"If the outcome of the method matches any of the listed outcomes, or if no "
+"outcomes are listed, set the transaction to rollback only when the method "
+"completes."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:643
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; the JSF outcomes that cause a "
+"transaction rollback (no outcomes is interpreted to mean any outcome)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:651
+#, no-c-format
+msgid "<literal>@Transactional</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:653
+#, no-c-format
+msgid "<programlisting>@Transactional</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:654
+#, no-c-format
+msgid ""
+"Specifies that a JavaBean component should have a similar transactional "
+"behavior to the default behavior of a session bean component. ie. method "
+"invocations should take place in a transaction, and if no transaction exists "
+"when the method is called, a transaction will be started just for that "
+"method. This annotation may be applied at either class or method level."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:660
+#, no-c-format
+msgid ""
+"Seam applications usually use the standard EJB3 annotations for all other "
+"transaction demarcation needs."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:666
+#, no-c-format
+msgid "Annotations for exceptions"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:667
+#, no-c-format
+msgid ""
+"These annotations let you specify how Seam should handle an exception that "
+"propagates out of a Seam component."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:672
+#, no-c-format
+msgid "@Redirect"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:674
+#, no-c-format
+msgid "@Redirect(viewId=\"error.jsp\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:675
+#, no-c-format
+msgid ""
+"Specifies that the annotated exception causes a browser redirect to a "
+"specified view id."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:680
+#, no-c-format
+msgid ""
+"<literal>viewId</literal> &mdash; specifies the JSF view id to redirect to."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:685
+#, no-c-format
+msgid ""
+"<literal>message</literal> &mdash; a message to be displayed, default to the "
+"exception message."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:690 Annotations.xml:716
+#, no-c-format
+msgid ""
+"<literal>end</literal> &mdash; specifies that the long-running conversation "
+"should end, default to <literal>false</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:698
+#, no-c-format
+msgid "@HttpError"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:700
+#, no-c-format
+msgid "@HttpError(errorCode=404)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:701
+#, no-c-format
+msgid "Specifies that the annotated exception causes a HTTP error to be sent."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:706
+#, no-c-format
+msgid ""
+"<literal>errorCode</literal> &mdash; the HTTP error code, default to "
+"<literal>500</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:711
+#, no-c-format
+msgid ""
+"<literal>message</literal> &mdash; a message to be sent with the HTTP error, "
+"default to the exception message."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:727
+#, no-c-format
+msgid "Annotations for validation"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:728
+#, no-c-format
+msgid ""
+"This annotation triggers Hibernate Validator. It appears on a method of a "
+"Seam component, almost always an action listener method."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:731
+#, no-c-format
+msgid ""
+"Please refer to the documentation for the Hibernate Annotations package for "
+"information about the annotations defined by the Hibernate Validator "
+"framework."
+msgstr ""
+
+#. Tag: emphasis
+#: Annotations.xml:735
+#, no-c-format
+msgid ""
+"Note that use of <literal>@IfInvalid</literal> is now semi-deprecated and "
+"<literal>&lt;s:validateAll&gt;</literal> is now preferred."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:739
+#, no-c-format
+msgid "@IfInvalid"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:741
+#, no-c-format
+msgid "@IfInvalid(outcome=\"invalid\", refreshEntities=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:742
+#, no-c-format
+msgid ""
+"Specifies that Hibernate Validator should validate the component before the "
+"method is invoked. If the invocation fails, the specified outcome will be "
+"returned, and the validation failure messages returned by Hibernate "
+"Validator will be added to the <literal>FacesContext</literal>. Otherwise, "
+"the invocation will proceed."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:747
+#, no-c-format
+msgid ""
+"<literal>outcome</literal> &mdash; the JSF outcome when validation fails."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:752
+#, no-c-format
+msgid ""
+"<literal>refreshEntities</literal> &mdash; specifies that any invalid entity "
+"in the managed state should be refreshed from the database when validation "
+"fails. Default to <literal>false</literal>. (Useful with extended "
+"persistence contexts.)"
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:763
+#, no-c-format
+msgid "Annotations for Seam Remoting"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:764
+#, no-c-format
+msgid ""
+"Seam Remoting requires that the local interface of a session bean be "
+"annotated with the following annotation:"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:769
+#, no-c-format
+msgid "@WebRemote"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:771
+#, no-c-format
+msgid "@WebRemote(exclude=\"path.to.exclude\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:772
+#, no-c-format
+msgid ""
+"Indicates that the annotated method may be called from client-side "
+"JavaScript. The <literal>exclude</literal> property is optional and allows "
+"objects to be excluded from the result's object graph (see the Remoting "
+"chapter for more details)."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:781
+#, no-c-format
+msgid "Annotations for Seam interceptors"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:782
+#, no-c-format
+msgid "The following annotations appear on Seam interceptor classes."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:785
+#, no-c-format
+msgid ""
+"Please refer to the documentation for the EJB 3.0 specification for "
+"information about the annotations required for EJB interceptor definition."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:790
+#, no-c-format
+msgid "@Interceptor"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:792
+#, no-c-format
+msgid "@Interceptor(stateless=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:793
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is stateless and Seam may optimize "
+"replication."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:796
+#, no-c-format
+msgid "@Interceptor(type=CLIENT)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:797
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is a \"client-side\" interceptor that is "
+"called before the EJB container."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:800
+#, no-c-format
+msgid "@Interceptor(around={SomeInterceptor.class, OtherInterceptor.class})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:801
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is positioned higher in the stack than the "
+"given interceptors."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:804
+#, no-c-format
+msgid "@Interceptor(within={SomeInterceptor.class, OtherInterceptor.class})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:805
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is positioned deeper in the stack than the "
+"given interceptors."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:814
+#, no-c-format
+msgid "Annotations for asynchronicity"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:815
+#, no-c-format
+msgid ""
+"The following annotations are used to declare an asynchronous method, for "
+"example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:818
+#, no-c-format
+msgid ""
+"@Asynchronous public void scheduleAlert(Alert alert, @Expiration Date date) "
+"{ ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:819
+#, no-c-format
+msgid ""
+"@Asynchronous public Timer scheduleAlerts(Alert alert, @Expiration Date "
+"date, \n"
+"    @IntervalDuration long interval) { ... }"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:822
+#, no-c-format
+msgid "<literal>@Asynchronous</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:824
+#, no-c-format
+msgid "<programlisting>@Asynchronous</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:825
+#, no-c-format
+msgid "Specifies that the method call is processed asynchronously."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:831
+#, no-c-format
+msgid "<literal>@Duration</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:833
+#, no-c-format
+msgid "<programlisting>@Duration</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:834
+#, no-c-format
+msgid ""
+"Specifies that a parameter of the asynchronous call is the duration before "
+"the call is processed (or first processed for recurring calls)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:840
+#, no-c-format
+msgid "<literal>@Expiration</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:842
+#, no-c-format
+msgid "<programlisting>@Expiration</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:843
+#, no-c-format
+msgid ""
+"Specifies that a parameter of the asynchronous call is the datetime at which "
+"the call is processed (or first processed for recurring calls)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:849
+#, no-c-format
+msgid "<literal>@IntervalDuration</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:851
+#, no-c-format
+msgid "<programlisting>@IntervalDuration</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:852
+#, no-c-format
+msgid ""
+"Specifies that an asynchronous method call recurs, and that the annotationed "
+"parameter is duration between recurrences."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:861
+#, no-c-format
+msgid "Annotations for use with JSF <literal>dataTable</literal>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:862
+#, no-c-format
+msgid ""
+"The following annotations make it easy to implement clickable lists backed "
+"by a stateful session bean. They appear on attributes."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:867
+#, no-c-format
+msgid "@DataModel"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:869
+#, no-c-format
+msgid "@DataModel(\"variableName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:870
+#, no-c-format
+msgid ""
+"Exposes an attribute of type <literal>List</literal>, <literal>Map</"
+"literal>, <literal>Set</literal> or <literal>Object[]</literal> as a JSF "
+"<literal>DataModel</literal> into the scope of the owning component (or the "
+"<literal>EVENT</literal> scope if the owning component is "
+"<literal>STATELESS</literal>). In the case of <literal>Map</literal>, each "
+"row of the <literal>DataModel</literal> is a <literal>Map.Entry</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:875
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; name of the conversation context variable. "
+"Default to the attribute name."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:880
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; if <literal>scope=ScopeType.PAGE</literal> "
+"is explicitly specified, the <literal>DataModel</literal> will be kept in "
+"the <literal>PAGE</literal> context."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:888
+#, no-c-format
+msgid "<literal>@DataModelSelection</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:890
+#, no-c-format
+msgid "<programlisting>@DataModelSelection</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:891
+#, no-c-format
+msgid ""
+"Injects the selected value from the JSF <literal>DataModel</literal> (this "
+"is the element of the underlying collection, or the map value)."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:896 Annotations.xml:912
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; name of the conversation context variable. "
+"Not needed if there is exactly one <literal>@DataModel</literal> in the "
+"component."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:904
+#, no-c-format
+msgid "<literal>@DataModelSelectionIndex</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:906
+#, no-c-format
+msgid "<programlisting>@DataModelSelectionIndex</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:907
+#, no-c-format
+msgid ""
+"Exposes the selection index of the JSF <literal>DataModel</literal> as an "
+"attribute of the component (this is the row number of the underlying "
+"collection, or the map key)."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:923
+#, no-c-format
+msgid "Meta-annotations for databinding"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:924
+#, no-c-format
+msgid ""
+"These meta-annotations make it possible to implement similar functionality "
+"to <literal>@DataModel</literal> and <literal>@DataModelSelection</literal> "
+"for other datastructures apart from lists."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:929
+#, no-c-format
+msgid "@DataBinderClass"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:931
+#, no-c-format
+msgid "@DataBinderClass(DataModelBinder.class)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:932
+#, no-c-format
+msgid "Specifies that an annotation is a databinding annotation."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:938
+#, no-c-format
+msgid "@DataSelectorClass"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:940
+#, no-c-format
+msgid "@DataSelectorClass(DataModelSelector.class)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:941
+#, no-c-format
+msgid "Specifies that an annotation is a dataselection annotation."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:950
+#, no-c-format
+msgid "Annotations for packaging"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:951
+#, no-c-format
+msgid ""
+"This annotation provides a mechanism for declaring information about a set "
+"of components that are packaged together. It can be applied to any Java "
+"package."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:956
+#, no-c-format
+msgid "@Namespace"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:958
+#, no-c-format
+msgid "@Namespace(value=\"http://jboss.com/products/seam/example/seampay\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:959
+#, no-c-format
+msgid ""
+"Specifies that components in the current package are associated with the "
+"given namespace. The declared namespace can be used as an XML namespace in a "
+"<literal>components.xml</literal> file to simplify application configuration."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:962
+#, no-c-format
+msgid ""
+"@Namespace(value=\"http://jboss.com/products/seam/core\", prefix=\"org.jboss."
+"seam.core\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:963
+#, no-c-format
+msgid ""
+"Specifies a namespace to associate with a given package. Additionally, it "
+"specifies a component name prefix to be applied to component names specified "
+"in the XML file. For example, an XML element named <literal>microcontainer</"
+"literal> that is associated with this namespace would be understood to "
+"actually refere to a component named <literal>org.jboss.seam.core."
+"microcontainer</literal>."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Book_Info.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Book_Info.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Book_Info.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,38 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Book_Info.xml:10
+#, no-c-format
+msgid "Seam - Contextual Components"
+msgstr ""
+
+#. Tag: subtitle
+#: Book_Info.xml:11
+#, no-c-format
+msgid "A Framework for Java EE 5"
+msgstr ""
+
+#. Tag: para
+#: Book_Info.xml:15
+#, no-c-format
+msgid "This book is a Reference Guide for Seam"
+msgstr ""
+
+#. Tag: holder
+#: Book_Info.xml:36
+#, no-c-format
+msgid "&FORMAL-RHI;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Cache.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Cache.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Cache.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,318 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Cache.xml:10
+#, no-c-format
+msgid "Caching"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:11
+#, no-c-format
+msgid ""
+"In almost all enterprise applications, the database is the primary "
+"bottleneck, and the least scalable tier of the runtime environment. People "
+"from a PHP/Ruby environment will try to tell you that so-called \"shared "
+"nothing\" architectures scale well. While that may be literally true, I "
+"don't know of many interesting multi-user applications which can be "
+"implemented with no sharing of resources between different nodes of the "
+"cluster. What these silly people are really thinking of is a \"share nothing "
+"except for the database\" architecture. Of course, sharing the database is "
+"the primary problem with scaling a multi-user application&mdash;so the claim "
+"that this architecture is highly scalable is absurd, and tells you a lot "
+"about the kind of applications that these folks spend most of their time "
+"working on."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:14
+#, no-c-format
+msgid ""
+"Almost anything we can possibly do to share the database <emphasis>less "
+"often</emphasis> is worth doing."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:17
+#, no-c-format
+msgid ""
+"This calls for a cache. Well, not just one cache. A well designed Seam "
+"application will feature a rich, multi-layered caching strategy that impacts "
+"every layer of the application:"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:22
+#, no-c-format
+msgid ""
+"The database, of course, has its own cache. This is super-important, but "
+"can't scale like a cache in the application tier."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:27
+#, no-c-format
+msgid ""
+"Your ORM solution (Hibernate, or some other JPA implementation) has a second-"
+"level cache of data from the database. This is a very powerful capability, "
+"but is often misused. In a clustered environment, keeping the data in the "
+"cache transactionally consistent across the whole cluster, and with the "
+"database, is quite expensive. It makes most sense for data which is shared "
+"between many users, and is updated rarely. In traditional stateless "
+"architectures, people often try to use the second-level cache for "
+"conversational state. This is always bad, and is especially wrong in Seam."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:32
+#, no-c-format
+msgid ""
+"The Seam conversation context is a cache of conversational state. Components "
+"you put into the conversation context can hold and cache state relating to "
+"the current user interaction."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:37
+#, no-c-format
+msgid ""
+"In particular, the Seam-managed persistence context (or an extended EJB "
+"container-managed persistence context associated with a conversation-scoped "
+"stateful session bean) acts as a cache of data that has been read in the "
+"current conversation. This cache tends to have a pretty high hitrate! Seam "
+"optimizes the replication of Seam-managed persistence contexts in a "
+"clustered environment, and there is no requirement for transactional "
+"consistency with the database (optimistic locking is sufficient) so you "
+"don't need to worry too much about the performance implications of this "
+"cache, unless you read thousands of objects into a single persistence "
+"context."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:42
+#, no-c-format
+msgid ""
+"The application can cache non-transactional state in the Seam application "
+"context. State kept in the application context is of course not visible to "
+"other nodes in the cluster."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:47
+#, no-c-format
+msgid ""
+"The application can cache transactional state using the Seam "
+"<literal>pojoCache</literal> component, which integrates JBossCache into the "
+"Seam environment. This state will be visible to other nodes if you run JBoss "
+"cache in a clustered mode."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:52
+#, no-c-format
+msgid ""
+"Finally, Seam lets you cache rendered fragments of a JSF page. Unlike the "
+"ORM second-level cache, this cache is not automatically invalidated when "
+"data changes, so you need to write application code to perform explicit "
+"invalidation, or set appropriate expiration policies."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:57
+#, no-c-format
+msgid ""
+"For more information about the second-level cache, you'll need to refer to "
+"the documentation of your ORM solution, since this is an extremely complex "
+"topic. In this section we'll discuss the use of JBossCache directly, via the "
+"<literal>pojoCache</literal> component, or as the page fragment cache, via "
+"the <literal>&lt;s:cache&gt;</literal> control."
+msgstr ""
+
+#. Tag: title
+#: Cache.xml:61
+#, no-c-format
+msgid "Using JBossCache in Seam"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:62
+#, no-c-format
+msgid ""
+"The built-in <literal>pojoCache</literal> component manages an instance of "
+"<literal>org.jboss.cache.aop.PojoCache</literal>. You can safely put any "
+"immutable Java object in the cache, and it will be replicated across the "
+"cluster (assuming that replication is enabled). If you want to keep mutable "
+"objects in the cache, you'll need to run the JBossCache bytecode "
+"preprocessor to ensure that changes to the objects will be automatically "
+"detected and replicated."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:65
+#, no-c-format
+msgid ""
+"To use <literal>pojoCache</literal>, all you need to do is put the "
+"JBossCache jars in the classpath, and provide a resource named "
+"<literal>treecache.xml</literal> with an appropriate cache configuration. "
+"JBossCache has many scary and confusing configuration settings, so we won't "
+"discuss them here. Please refer to the JBossCache documentation for more "
+"information."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:68
+#, no-c-format
+msgid ""
+"For an EAR depoyment of Seam, we recommend that the JBossCache jars and "
+"configuration go directly into the EAR. Make sure you declare the jars in "
+"<literal>application.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:71
+#, no-c-format
+msgid "Now you can inject the cache into any Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:74
+#, no-c-format
+msgid ""
+"@Name(\"chatroom\")\n"
+"public class Chatroom {\n"
+"    @In PojoCache pojoCache;\n"
+"    \n"
+"    public void join(String username) {\n"
+"      try\n"
+"      {\n"
+"         Set&lt;String&gt; userList = (Set&lt;String&gt;) pojoCache.get"
+"(\"chatroom\", \"userList\");\n"
+"         if (userList==null) \n"
+"         {\n"
+"            userList = new HashSet&lt;String&gt;();\n"
+"            pojoCache.put(\"chatroom\", \"userList\", userList);\n"
+"         }\n"
+"         userList.put(username);\n"
+"      }\n"
+"      catch (CacheException ce)\n"
+"      {\n"
+"         throw new RuntimeException(ce);\n"
+"      }\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:75
+#, no-c-format
+msgid ""
+"If you want to have multiple JBossCache configurations in your application, "
+"use <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:78
+#, no-c-format
+msgid ""
+"&lt;core:pojo-cache name=\"myCache\" cfg-resource-name=\"myown/cache.xml\"/"
+"&gt;"
+msgstr ""
+
+#. Tag: title
+#: Cache.xml:82
+#, no-c-format
+msgid "Page fragment caching"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:83
+#, no-c-format
+msgid ""
+"The most interesting user of JBossCache is the <literal>&lt;s:cache&gt;</"
+"literal> tag, Seam's solution to the problem of page fragment caching in "
+"JSF. <literal>&lt;s:cache&gt;</literal> uses <literal>pojoCache</literal> "
+"internally, so you need to follow the steps listed above before you can use "
+"it. (Put the jars in the EAR, wade through the scary configuration options, "
+"etc.)"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:86
+#, no-c-format
+msgid ""
+"<literal>&lt;s:cache&gt;</literal> is used for caching some rendered content "
+"which changes rarely. For example, the welcome page of our blog displays the "
+"recent blog entries:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:89
+#, no-c-format
+msgid ""
+"&lt;s:cache key=\"recentEntries-#{blog.id}\" region=\"welcomePageFragments"
+"\"&gt;\n"
+"   &lt;h:dataTable value=\"#{blog.recentEntries}\" var=\"blogEntry\"&gt;\n"
+"      &lt;h:column&gt;\n"
+"         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"         &lt;div&gt;\n"
+"            &lt;s:formattedText value=\"#{blogEntry.body}\"/&gt;\n"
+"         &lt;/div&gt;\n"
+"      &lt;/h:column&gt;\n"
+"   &lt;/h:dataTable&gt;\n"
+"&lt;/s:cache&gt;"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:90
+#, no-c-format
+msgid ""
+"The <literal>key</literal> let's you have multiple cached versions of each "
+"page fragment. In this case, there is one cached version per blog. The "
+"<literal>region</literal> determines the JBossCache node that all version "
+"will be stored in. Different nodes may have different expiry policies. "
+"(That's the stuff you set up using the aforementioned scary configuration "
+"options.)"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:93
+#, no-c-format
+msgid ""
+"Of course, the big problem with <literal>&lt;s:cache&gt;</literal> is that "
+"it is too stupid to know when the underlying data changes (for example, when "
+"the blogger posts a new entry). So you need to evict the cached fragment "
+"manually:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:96
+#, no-c-format
+msgid ""
+"public void post() {\n"
+"    ...\n"
+"    entityManager.persist(blogEntry);\n"
+"    pojoCache.remove(\"welcomePageFragments\", \"recentEntries-\" + blog."
+"getId() );\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:97
+#, no-c-format
+msgid ""
+"Alternatively, if it is not critical that changes are immediately visible to "
+"the user, you could set a short expiry time on the JbossCache node."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Components.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Components.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Components.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2007 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Components.xml:10
+#, no-c-format
+msgid "Built-in Seam components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:11
+#, no-c-format
+msgid ""
+"This chapter describes Seam's built-in components, and their configuration "
+"properties."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:14
+#, no-c-format
+msgid ""
+"Note that you can replace any of the built in components with your own "
+"implementations simply by specifying the name of one of the built in "
+"components on your own class using <literal>@Name</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:17
+#, no-c-format
+msgid ""
+"Note also that even though all the built in components use a qualified name, "
+"most of them are aliased to unqualified names by default. These aliases "
+"specify <literal>auto-create=\"true\"</literal>, so you do not need to use "
+"<literal>create=true</literal> when injecting built-in components by their "
+"unqualified name."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:21
+#, no-c-format
+msgid "Context injection components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:22
+#, no-c-format
+msgid ""
+"The first set of built in components exist purely to support injection of "
+"various contextual objects. For example, the following component instance "
+"variable would have the Seam session context object injected:"
+msgstr ""
+
+#. Tag: programlisting
+#: Components.xml:25
+#, no-c-format
+msgid "@In private Context sessionContext;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:28
+#, no-c-format
+msgid "org.jboss.seam.core.eventContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:30
+#, no-c-format
+msgid "Manager component for the event context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:36
+#, no-c-format
+msgid "org.jboss.seam.core.pageContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:38
+#, no-c-format
+msgid "Manager component for the page context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:44
+#, no-c-format
+msgid "org.jboss.seam.core.conversationContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:46
+#, no-c-format
+msgid "Manager component for the conversation context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:52
+#, no-c-format
+msgid "org.jboss.seam.core.sessionContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:54
+#, no-c-format
+msgid "Manager component for the session context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:60
+#, no-c-format
+msgid "org.jboss.seam.core.applicationContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:62
+#, no-c-format
+msgid "Manager component for the appication context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:68
+#, no-c-format
+msgid "org.jboss.seam.core.businessProcessContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:70
+#, no-c-format
+msgid "Manager component for the business process context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:76
+#, no-c-format
+msgid "org.jboss.seam.core.facesContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:78
+#, no-c-format
+msgid ""
+"Manager component for the <literal>FacesContext</literal> context object "
+"(not a true Seam context)"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:84 Components.xml:267 Components.xml:441 Components.xml:572
+#, no-c-format
+msgid "All of these components are always installed."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:90
+#, no-c-format
+msgid "Utility components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:91
+#, no-c-format
+msgid "These components are merely useful."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:96
+#, no-c-format
+msgid "org.jboss.seam.core.facesMessages"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:98
+#, no-c-format
+msgid "Allows faces success messages to propagate across a browser redirect."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:103
+#, no-c-format
+msgid ""
+"<literal>add(FacesMessage facesMessage)</literal> &mdash; add a faces "
+"message, which will be displayed during the next render response phase that "
+"occurs in the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:108
+#, no-c-format
+msgid ""
+"<literal>add(String messageTemplate)</literal> &mdash; add a faces message, "
+"rendered from the given message template which may contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:113
+#, no-c-format
+msgid ""
+"<literal>add(Severity severity, String messageTemplate)</literal> &mdash; "
+"add a faces message, rendered from the given message template which may "
+"contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:118
+#, no-c-format
+msgid ""
+"<literal>addFromResourceBundle(String key)</literal> &mdash; add a faces "
+"message, rendered from a message template defined in the Seam resource "
+"bundle which may contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:123
+#, no-c-format
+msgid ""
+"<literal>addFromResourceBundle(Severity severity, String key)</literal> "
+"&mdash; add a faces message, rendered from a message template defined in the "
+"Seam resource bundle which may contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:128
+#, no-c-format
+msgid "<literal>clear()</literal> &mdash; clear all messages."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:136
+#, no-c-format
+msgid "org.jboss.seam.core.redirect"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:138
+#, no-c-format
+msgid ""
+"A convenient API for performing redirects with parameters (this is "
+"especially useful for bookmarkable search results screens)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:143
+#, no-c-format
+msgid ""
+"<literal>redirect.viewId</literal> &mdash; the JSF view id to redirect to."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:148
+#, no-c-format
+msgid ""
+"<literal>redirect.conversationPropagationEnabled</literal> &mdash; "
+"determines whether the conversation will propagate across the redirect."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:153
+#, no-c-format
+msgid ""
+"<literal>redirect.parameters</literal> &mdash; a map of request parameter "
+"name to value, to be passed in the redirect request."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:158
+#, no-c-format
+msgid "<literal>execute()</literal> &mdash; perform the redirect immediately."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:163
+#, no-c-format
+msgid ""
+"<literal>captureCurrentRequest()</literal> &mdash; stores the view id and "
+"request parameters of the current GET request (in the conversation context), "
+"for later use by calling <literal>execute()</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:171
+#, no-c-format
+msgid "org.jboss.seam.core.httpError"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:173
+#, no-c-format
+msgid "A convenient API for sending HTTP errors."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:179
+#, no-c-format
+msgid "org.jboss.seam.core.events"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:181
+#, no-c-format
+msgid ""
+"An API for raising events that can be observed via <literal>@Observer</"
+"literal> methods, or method bindings in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:186
+#, no-c-format
+msgid ""
+"<literal>raiseEvent(String type)</literal> &mdash; raise an event of a "
+"particular type and distribute to all observers."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:191
+#, no-c-format
+msgid ""
+"<literal>raiseAsynchronousEvent(String type)</literal> &mdash; raise an "
+"event to be processed asynchronously by the EJB3 timer service."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:196
+#, no-c-format
+msgid ""
+"<literal>raiseTimedEvent(String type, ....)</literal> &mdash; schedule an "
+"event to be processed asynchronously by the EJB3 timer service."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:201
+#, no-c-format
+msgid ""
+"<literal>addListener(String type, String methodBinding)</literal> &mdash; "
+"add an observer for a particular event type."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:209
+#, no-c-format
+msgid "org.jboss.seam.core.interpolator"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:211
+#, no-c-format
+msgid "An API for interpolating the values of JSF EL expressions in Strings."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:216
+#, no-c-format
+msgid ""
+"<literal>interpolate(String template)</literal> &mdash; scan the template "
+"for JSF EL expressions of the form <literal>#{...}</literal> and replace "
+"them with their evaluated values."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:224
+#, no-c-format
+msgid "org.jboss.seam.core.expressions"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:226
+#, no-c-format
+msgid "An API for creating value and method bindings."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:231
+#, no-c-format
+msgid ""
+"<literal>createValueBinding(String expression)</literal> &mdash; create a "
+"value binding object."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:236
+#, no-c-format
+msgid ""
+"<literal>createMethodBinding(String expression)</literal> &mdash; create a "
+"method binding object."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:244
+#, no-c-format
+msgid "org.jboss.seam.core.pojoCache"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:246
+#, no-c-format
+msgid ""
+"Manager component for a JBoss Cache <literal>PojoCache</literal> instance."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:251
+#, no-c-format
+msgid ""
+"<literal>pojoCache.cfgResourceName</literal> &mdash; the name of the "
+"configuration file. Default to <literal>treecache.xml</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:259
+#, no-c-format
+msgid "org.jboss.seam.core.uiComponent"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:261
+#, no-c-format
+msgid ""
+"Allows access to a JSF <literal>UIComponent</literal> by its id from the EL. "
+"For example, we can write <literal>@In(\"#{uiComponent['myForm:address']."
+"value}\")</literal>."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:273
+#, no-c-format
+msgid "Components for internationalization and themes"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:274
+#, no-c-format
+msgid ""
+"The next group of components make it easy to build internationalized user "
+"interfaces using Seam."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:279
+#, no-c-format
+msgid "org.jboss.seam.core.locale"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:281
+#, no-c-format
+msgid "The Seam locale. The locale is session scoped."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:287
+#, no-c-format
+msgid "org.jboss.seam.core.timezone"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:289
+#, no-c-format
+msgid "The Seam timezone. The timezone is session scoped."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:295
+#, no-c-format
+msgid "org.jboss.seam.core.resourceBundle"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:297
+#, no-c-format
+msgid ""
+"The Seam resource bundle. The resource bundle is session scoped. The Seam "
+"resource bundle performs a depth-first search for keys in a list of Java "
+"resource bundles."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:302
+#, no-c-format
+msgid ""
+"<literal>resourceBundle.bundleNames</literal> &mdash; the names of the Java "
+"resource bundles to search. Default to <literal>messages</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:310
+#, no-c-format
+msgid "org.jboss.seam.core.localeSelector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:312
+#, no-c-format
+msgid ""
+"Supports selection of the locale either at configuration time, or by the "
+"user at runtime."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:317 Components.xml:367
+#, no-c-format
+msgid "<literal>select()</literal> &mdash; select the specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:322
+#, no-c-format
+msgid ""
+"<literal>localeSelector.locale</literal> &mdash; the actual <literal>java."
+"util.Locale</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:327
+#, no-c-format
+msgid ""
+"<literal>localeSelector.localeString</literal> &mdash; the stringified "
+"representation of the locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:332
+#, no-c-format
+msgid ""
+"<literal>localeSelector.language</literal> &mdash; the language for the "
+"specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:337
+#, no-c-format
+msgid ""
+"<literal>localeSelector.country</literal> &mdash; the country for the "
+"specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:342
+#, no-c-format
+msgid ""
+"<literal>localeSelector.variant</literal> &mdash; the variant for the "
+"specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:347
+#, no-c-format
+msgid ""
+"<literal>localeSelector.supportedLocales</literal> &mdash; a list of "
+"<literal>SelectItem</literal>s representing the supported locales listed in "
+"<literal>jsf-config.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:352
+#, no-c-format
+msgid ""
+"<literal>localeSelector.cookieEnabled</literal> &mdash; specifies that the "
+"locale selection should be persisted via a cookie."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:360
+#, no-c-format
+msgid "org.jboss.seam.core.timezoneSelector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:362
+#, no-c-format
+msgid ""
+"Supports selection of the timezone either at configuration time, or by the "
+"user at runtime."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:372
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.timezone</literal> &mdash; the actual "
+"<literal>java.util.TimeZone</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:377
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.timeZoneId</literal> &mdash; the stringified "
+"representation of the timezone."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:382
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.cookieEnabled</literal> &mdash; specifies that the "
+"timezone selection should be persisted via a cookie."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:390
+#, no-c-format
+msgid "org.jboss.seam.core.messages"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:392
+#, no-c-format
+msgid ""
+"A map containing internationalized messages rendered from message templates "
+"defined in the Seam resource bundle."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:398
+#, no-c-format
+msgid "org.jboss.seam.theme.themeSelector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:400
+#, no-c-format
+msgid ""
+"Supports selection of the theme either at configuration time, or by the user "
+"at runtime."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:405
+#, no-c-format
+msgid "<literal>select()</literal> &mdash; select the specified theme."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:410
+#, no-c-format
+msgid ""
+"<literal>theme.availableThemes</literal> &mdash; the list of defined themes."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:415
+#, no-c-format
+msgid "<literal>themeSelector.theme</literal> &mdash; the selected theme."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:420
+#, no-c-format
+msgid ""
+"<literal>themeSelector.themes</literal> &mdash; a list of "
+"<literal>SelectItem</literal>s representing the defined themes."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:425
+#, no-c-format
+msgid ""
+"<literal>themeSelector.cookieEnabled</literal> &mdash; specifies that the "
+"theme selection should be persisted via a cookie."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:433
+#, no-c-format
+msgid "org.jboss.seam.theme.theme"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:435
+#, no-c-format
+msgid "A map containing theme entries."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:447
+#, no-c-format
+msgid "Components for controlling conversations"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:448
+#, no-c-format
+msgid ""
+"The next group of components allow control of conversations by the "
+"application or user interface."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:453
+#, no-c-format
+msgid "org.jboss.seam.core.conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:455
+#, no-c-format
+msgid ""
+"API for application control of attributes of the current Seam conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:460 Components.xml:475
+#, no-c-format
+msgid "<literal>getId()</literal> &mdash; returns the current conversation id"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:465
+#, no-c-format
+msgid ""
+"<literal>isNested()</literal> &mdash; is the current conversation a nested "
+"conversation?"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:470
+#, no-c-format
+msgid ""
+"<literal>isLongRunning()</literal> &mdash; is the current conversation a "
+"long-running conversation?"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:480
+#, no-c-format
+msgid ""
+"<literal>getParentId()</literal> &mdash; returns the conversation id of the "
+"parent conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:485
+#, no-c-format
+msgid ""
+"<literal>getRootId()</literal> &mdash; returns the conversation id of the "
+"root conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:490
+#, no-c-format
+msgid ""
+"<literal>setTimeout(int timeout)</literal> &mdash; sets the timeout for the "
+"current conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:495
+#, no-c-format
+msgid ""
+"<literal>setViewId(String outcome)</literal> &mdash; sets the view id to be "
+"used when switching back to the current conversation from the conversation "
+"switcher, conversation list, or breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:500
+#, no-c-format
+msgid ""
+"<literal>setDescription(String description)</literal> &mdash; sets the "
+"description of the current conversation to be displayed in the conversation "
+"switcher, conversation list, or breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:505
+#, no-c-format
+msgid ""
+"<literal>redirect()</literal> &mdash; redirect to the last well-defined view "
+"id for this conversation (useful after login challenges)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:510
+#, no-c-format
+msgid ""
+"<literal>leave()</literal> &mdash; exit the scope of this conversation, "
+"without actually ending the conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:515
+#, no-c-format
+msgid ""
+"<literal>begin()</literal> &mdash; begin a long-running conversation "
+"(equivalent to <literal>@Begin</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:520
+#, no-c-format
+msgid ""
+"<literal>beginPageflow(String pageflowName)</literal> &mdash; begin a long-"
+"running conversation with a pageflow (equivalent to <literal>@Begin(pageflow="
+"\"...\")</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:525
+#, no-c-format
+msgid ""
+"<literal>end()</literal> &mdash; end a long-running conversation (equivalent "
+"to <literal>@End</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:530
+#, no-c-format
+msgid ""
+"<literal>pop()</literal> &mdash; pop the conversation stack, returning to "
+"the parent conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:535
+#, no-c-format
+msgid ""
+"<literal>root()</literal> &mdash; return to the root conversation of the "
+"conversation stack."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:540
+#, no-c-format
+msgid ""
+"<literal>changeFlushMode(FlushModeType flushMode)</literal> &mdash; change "
+"the flush mode of the conversation."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:548
+#, no-c-format
+msgid "org.jboss.seam.core.conversationList"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:550
+#, no-c-format
+msgid "Manager component for the conversation list."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:556
+#, no-c-format
+msgid "org.jboss.seam.core.conversationStack"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:558
+#, no-c-format
+msgid "Manager component for the conversation stack (breadcrumbs)."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:564
+#, no-c-format
+msgid "org.jboss.seam.core.switcher"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:566
+#, no-c-format
+msgid "The conversation switcher."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:578
+#, no-c-format
+msgid "jBPM-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:579
+#, no-c-format
+msgid "These components are for use with jBPM."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:584
+#, no-c-format
+msgid "org.jboss.seam.core.pageflow"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:586
+#, no-c-format
+msgid "API control of Seam pageflows."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:591
+#, no-c-format
+msgid ""
+"<literal>isInProcess()</literal> &mdash; returns <literal>true</literal> if "
+"there is currently a pageflow in process"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:596
+#, no-c-format
+msgid ""
+"<literal>getProcessInstance()</literal> &mdash; returns jBPM "
+"<literal>ProcessInstance</literal> for the current pageflow"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:601
+#, no-c-format
+msgid ""
+"<literal>begin(String pageflowName)</literal> &mdash; begin a pageflow in "
+"the context of the current conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:606
+#, no-c-format
+msgid ""
+"<literal>reposition(String nodeName)</literal> &mdash; reposition the "
+"current pageflow to a particular node"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:614
+#, no-c-format
+msgid "org.jboss.seam.core.actor"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:616
+#, no-c-format
+msgid ""
+"API for application control of attributes of the jBPM actor associated with "
+"the current session."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:621
+#, no-c-format
+msgid ""
+"<literal>setId(String actorId)</literal> &mdash; sets the jBPM actor id of "
+"the current user."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:626
+#, no-c-format
+msgid ""
+"<literal>getGroupActorIds()</literal> &mdash; returns a <literal>Set</"
+"literal> to which jBPM actor ids for the current users groups may be added."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:634
+#, no-c-format
+msgid "org.jboss.seam.core.transition"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:636
+#, no-c-format
+msgid ""
+"API for application control of the jBPM transition for the current task."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:641
+#, no-c-format
+msgid ""
+"<literal>setName(String transitionName)</literal> &mdash; sets the jBPM "
+"transition name to be used when the current task is ended via "
+"<literal>@EndTask</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:649
+#, no-c-format
+msgid "org.jboss.seam.core.businessProcess"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:651
+#, no-c-format
+msgid ""
+"API for programmatic control of the association between the conversation and "
+"business process."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:656
+#, no-c-format
+msgid ""
+"<literal>businessProcess.taskId</literal> &mdash; the id of the task "
+"associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:661
+#, no-c-format
+msgid ""
+"<literal>businessProcess.processId</literal> &mdash; the id of the process "
+"associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:666
+#, no-c-format
+msgid ""
+"<literal>businessProcess.hasCurrentTask()</literal> &mdash; is a task "
+"instance associated with the current conversation?"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:671
+#, no-c-format
+msgid ""
+"<literal>businessProcess.hasCurrentProcess()</literal> &mdash; is a process "
+"instance associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:676
+#, no-c-format
+msgid ""
+"<literal>createProcess(String name)</literal> &mdash; create an instance of "
+"the named process definition and associate it with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:681
+#, no-c-format
+msgid ""
+"<literal>startTask()</literal> &mdash; start the task associated with the "
+"current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:686
+#, no-c-format
+msgid ""
+"<literal>endTask(String transitionName)</literal> &mdash; end the task "
+"associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:691
+#, no-c-format
+msgid ""
+"<literal>resumeTask(Long id)</literal> &mdash; associate the task with the "
+"given id with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:696
+#, no-c-format
+msgid ""
+"<literal>resumeProcess(Long id)</literal> &mdash; associate the process with "
+"the given id with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:701
+#, no-c-format
+msgid ""
+"<literal>transition(String transitionName)</literal> &mdash; trigger the "
+"transition."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:709
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstance"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:711
+#, no-c-format
+msgid "Manager component for the jBPM <literal>TaskInstance</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:717
+#, no-c-format
+msgid "org.jboss.seam.core.processInstance"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:719
+#, no-c-format
+msgid "Manager component for the jBPM <literal>ProcessInstance</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:725
+#, no-c-format
+msgid "org.jboss.seam.core.jbpmContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:727
+#, no-c-format
+msgid "Manager component for an event-scoped <literal>JbpmContext</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:733
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstanceList"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:735
+#, no-c-format
+msgid "Manager component for the jBPM task list."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:741
+#, no-c-format
+msgid "org.jboss.seam.core.pooledTaskInstanceList"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:743
+#, no-c-format
+msgid "Manager component for the jBPM pooled task list."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:749
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstanceListForType"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:751
+#, no-c-format
+msgid "Manager component for the jBPM task lists."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:757
+#, no-c-format
+msgid "org.jboss.seam.core.pooledTask"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:759
+#, no-c-format
+msgid "Action handler for pooled task assignment."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:765
+#, no-c-format
+msgid ""
+"All of these components are installed whenever the component <literal>org."
+"jboss.seam.core.jbpm</literal> is installed."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:771
+#, no-c-format
+msgid "Security-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:772
+#, no-c-format
+msgid "These components relate to web-tier security."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:777
+#, no-c-format
+msgid "org.jboss.seam.core.userPrincipal"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:779
+#, no-c-format
+msgid "Manager component for the current user <literal>Principal</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:785
+#, no-c-format
+msgid "org.jboss.seam.core.isUserInRole"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:787
+#, no-c-format
+msgid ""
+"Allows JSF pages to choose to render a control, depending upon the roles "
+"available to the current principal. <literal>&lt;h:commandButton value=\"edit"
+"\" rendered=\"#{isUserInRole['admin']}\"/&gt;</literal>."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:796
+#, no-c-format
+msgid "JMS-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:797
+#, no-c-format
+msgid ""
+"These components are for use with managed <literal>TopicPublisher</literal>s "
+"and <literal>QueueSender</literal>s (see below)."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:802
+#, no-c-format
+msgid "org.jboss.seam.jms.queueSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:804
+#, no-c-format
+msgid "Manager component for a JMS <literal>QueueSession</literal> ."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:810
+#, no-c-format
+msgid "org.jboss.seam.jms.topicSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:812
+#, no-c-format
+msgid "Manager component for a JMS <literal>TopicSession</literal> ."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:821
+#, no-c-format
+msgid "Mail-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:822
+#, no-c-format
+msgid "These components are for use with Seam's Email support"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:827
+#, no-c-format
+msgid "org.jboss.seam.mail.mailSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:829
+#, no-c-format
+msgid "Manager component for a JavaMail <literal>Session</literal> ."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:834
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.host</literal> &mdash; the hostname "
+"of the SMTP server to use"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:839
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.port</literal> &mdash; the port of "
+"the SMTP server to use"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:844
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.username</literal> &mdash; the "
+"username to use to connect to the SMTP server."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:849
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.password</literal> &mdash; the "
+"password to use to connect to the SMTP server"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:854
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.debug</literal> &mdash; enable "
+"JavaMail debugging (very verbose)"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:859
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.sessionJndiName</literal> &mdash; "
+"name under which a javax.mail.Session is bound to JNDI"
+msgstr ""
+
+#. Tag: title
+#: Components.xml:870
+#, no-c-format
+msgid "Infrastructural components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:871
+#, no-c-format
+msgid ""
+"These components provide critical platform infrastructure. You can install a "
+"component by including its class name in the <literal>org.jboss.seam.core."
+"init.componentClasses</literal> configuration property."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:876
+#, no-c-format
+msgid "org.jboss.seam.core.init"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:878
+#, no-c-format
+msgid "Initialization settings for Seam. Always installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:883
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.jndiPattern</literal> &mdash; the JNDI "
+"pattern used for looking up session beans"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:888
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.debug</literal> &mdash; enable Seam debug "
+"mode"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:893
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.clientSideConversations</literal> &mdash; "
+"if set to <literal>true</literal>, Seam will save conversation context "
+"variables in the client instead of in the <literal>HttpSession</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:898
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.userTransactionName</literal> &mdash; the "
+"JNDI name to use when looking up the JTA <literal>UserTransaction</literal> "
+"object."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:906
+#, no-c-format
+msgid "org.jboss.seam.core.manager"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:908
+#, no-c-format
+msgid ""
+"Internal component for Seam page and conversation context management. Always "
+"installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:913
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationTimeout</literal> &mdash; "
+"the conversation context timeout in milliseconds."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:918
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.concurrentRequestTimeout</literal> "
+"&mdash; maximum wait time for a thread attempting to gain a lock on the long-"
+"running conversation context."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:923
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationIdParameter</literal> "
+"&mdash; the request parameter used to propagate the conversation id, default "
+"to <literal>conversationId</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:928
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationIsLongRunningParameter</"
+"literal> &mdash; the request parameter used to propagate information about "
+"whether the conversation is long-running, default to "
+"<literal>conversationIsLongRunning</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:936
+#, no-c-format
+msgid "org.jboss.seam.core.pages"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:938
+#, no-c-format
+msgid "Internal component for Seam workspace management. Always installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:943
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.pages.noConversationViewId</literal> &mdash; "
+"global setting for the view id to redirect to when a conversation entry is "
+"not found on the server side."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:951
+#, no-c-format
+msgid "org.jboss.seam.core.ejb"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:953
+#, no-c-format
+msgid ""
+"Bootstraps the JBoss Embeddable EJB3 container. Install as class "
+"<literal>org.jboss.seam.core.Ejb</literal>. This is useful when using Seam "
+"with EJB components outside the context of a Java EE 5 application server."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:956
+#, no-c-format
+msgid ""
+"The basic Embedded EJB configuration is defined in <literal>jboss-embedded-"
+"beans.xml</literal>. Additional microcontainer configuration (for example, "
+"extra datasources) may be specified by <literal>jboss-beans.xml</literal> or "
+"<literal>META-INF/jboss-beans.xml</literal> in the classpath."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:962
+#, no-c-format
+msgid "org.jboss.seam.core.microcontainer"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:964
+#, no-c-format
+msgid ""
+"Bootstraps the JBoss microcontainer. Install as class <literal>org.jboss."
+"seam.core.Microcontainer</literal>. This is useful when using Seam with "
+"Hibernate and no EJB components outside the context of a Java EE application "
+"server. The microcontainer can provide a partial EE environment with JNDI, "
+"JTA, a JCA datasource and Hibernate."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:967
+#, no-c-format
+msgid ""
+"The microcontainer configuration may be specified by <literal>jboss-beans."
+"xml</literal> or <literal>META-INF/jboss-beans.xml</literal> in the "
+"classpath."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:973
+#, no-c-format
+msgid "org.jboss.seam.core.jbpm"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:975
+#, no-c-format
+msgid ""
+"Bootstraps a <literal>JbpmConfiguration</literal>. Install as class "
+"<literal>org.jboss.seam.core.Jbpm</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:980
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.jbpm.processDefinitions</literal> &mdash; a "
+"list of resource names of jPDL files to be used for orchestration of "
+"business processes."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:985
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.jbpm.pageflowDefinitions</literal> &mdash; a "
+"list of resource names of jPDL files to be used for orchestration of "
+"conversation page flows."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:993
+#, no-c-format
+msgid "org.jboss.seam.core.conversationEntries"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:995
+#, no-c-format
+msgid ""
+"Internal session-scoped component recording the active long-running "
+"conversations between requests."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1001
+#, no-c-format
+msgid "org.jboss.seam.core.facesPage"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1003
+#, no-c-format
+msgid ""
+"Internal page-scoped component recording the conversation context associated "
+"with a page."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1009
+#, no-c-format
+msgid "org.jboss.seam.core.persistenceContexts"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1011
+#, no-c-format
+msgid ""
+"Internal component recording the persistence contexts which were used in the "
+"current conversation."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1017
+#, no-c-format
+msgid "org.jboss.seam.jms.queueConnection"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1019
+#, no-c-format
+msgid ""
+"Manages a JMS <literal>QueueConnection</literal>. Installed whenever managed "
+"managed <literal>QueueSender</literal> is installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1024
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.jms.queueConnection.queueConnectionFactoryJndiName</"
+"literal> &mdash; the JNDI name of a JMS <literal>QueueConnectionFactory</"
+"literal>. Default to <literal>UIL2ConnectionFactory</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1032
+#, no-c-format
+msgid "org.jboss.seam.jms.topicConnection"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1034
+#, no-c-format
+msgid ""
+"Manages a JMS <literal>TopicConnection</literal>. Installed whenever managed "
+"managed <literal>TopicPublisher</literal> is installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1039
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.jms.topicConnection.topicConnectionFactoryJndiName</"
+"literal> &mdash; the JNDI name of a JMS <literal>TopicConnectionFactory</"
+"literal>. Default to <literal>UIL2ConnectionFactory</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1047
+#, no-c-format
+msgid "org.jboss.seam.persistence.persistenceProvider"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1049
+#, no-c-format
+msgid "Abstraction layer for non-standardized features of JPA provider."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1055
+#, no-c-format
+msgid "org.jboss.seam.core.validation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1057
+#, no-c-format
+msgid "Internal component for Hibernate Validator support."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1063
+#, no-c-format
+msgid "org.jboss.seam.debug.introspector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1065 Components.xml:1073
+#, no-c-format
+msgid "Support for the Seam Debug Page."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1071
+#, no-c-format
+msgid "org.jboss.seam.debug.contexts"
+msgstr ""
+
+#. Tag: title
+#: Components.xml:1082
+#, no-c-format
+msgid "Special components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1083
+#, no-c-format
+msgid ""
+"Certain special Seam component classes are installable multiple times under "
+"names specified in the Seam configuration. For example, the following lines "
+"in <literal>components.xml</literal> install and configure two Seam "
+"components:"
+msgstr ""
+
+#. Tag: programlisting
+#: Components.xml:1086
+#, no-c-format
+msgid ""
+"&lt;component name=\"bookingDatabase\"\n"
+"          class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"    &lt;property name=\"persistenceUnitJndiName\"&gt;java:/comp/emf/"
+"bookingPersistence&lt;/property&gt;\n"
+"&lt;/component&gt;\n"
+"\n"
+"&lt;component name=\"userDatabase\"\n"
+"          class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"    &lt;property name=\"persistenceUnitJndiName\"&gt;java:/comp/emf/"
+"userPersistence&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1087
+#, no-c-format
+msgid ""
+"The Seam component names are <literal>bookingDatabase</literal> and "
+"<literal>userDatabase</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1092
+#, no-c-format
+msgid "&lt;entityManager&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1093
+#, no-c-format
+msgid "org.jboss.seam.core.ManagedPersistenceContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1095
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed <literal>EntityManager</"
+"literal> with an extended persistence context."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1100
+#, no-c-format
+msgid ""
+"<literal>&lt;entityManager&gt;.entityManagerFactory</literal> &mdash; a "
+"value binding expression that evaluates to an instance of "
+"<literal>EntityManagerFactory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1103
+#, no-c-format
+msgid ""
+"<literal>&lt;entityManager&gt;.persistenceUnitJndiName</literal> &mdash; the "
+"JNDI name of the entity manager factory, default to <literal>java:/&lt;"
+"managedPersistenceContext&gt;</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1111
+#, no-c-format
+msgid "&lt;entityManagerFactory&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1112
+#, no-c-format
+msgid "org.jboss.seam.core.EntityManagerFactory"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1114
+#, no-c-format
+msgid ""
+"Manages a JPA <literal>EntityManagerFactory</literal>. This is most useful "
+"when using JPA outside of an EJB 3.0 supporting environment."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1119
+#, no-c-format
+msgid ""
+"<literal>entityManagerFactory.persistenceUnitName</literal> &mdash; the name "
+"of the persistence unit."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1124 Components.xml:1162
+#, no-c-format
+msgid "See the API JavaDoc for further configuration properties."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1130
+#, no-c-format
+msgid "&lt;session&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1131
+#, no-c-format
+msgid "org.jboss.seam.core.ManagedSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1133
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed Hibernate "
+"<literal>Session</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1138
+#, no-c-format
+msgid ""
+"<literal>&lt;session&gt;.sessionFactory</literal> &mdash; a value binding "
+"expression that evaluates to an instance of <literal>SessionFactory</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1141
+#, no-c-format
+msgid ""
+"<literal>&lt;session&gt;.sessionFactoryJndiName</literal> &mdash; the JNDI "
+"name of the session factory, default to <literal>java:/&lt;managedSession&gt;"
+"</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1149
+#, no-c-format
+msgid "&lt;sessionFactory&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1150
+#, no-c-format
+msgid "org.jboss.seam.core.HibernateSessionFactory"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1152
+#, no-c-format
+msgid "Manages a Hibernate <literal>SessionFactory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1157
+#, no-c-format
+msgid ""
+"<literal>&lt;sessionFactory&gt;.cfgResourceName</literal> &mdash; the path "
+"to the configuration file. Default to <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1168
+#, no-c-format
+msgid "&lt;managedQueueSender&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1169
+#, no-c-format
+msgid "org.jboss.seam.jms.ManagedQueueSender"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1171
+#, no-c-format
+msgid ""
+"Manager component for an event scoped managed JMS <literal>QueueSender</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1176
+#, no-c-format
+msgid ""
+"<literal>&lt;managedQueueSender&gt;.queueJndiName</literal> &mdash; the JNDI "
+"name of the JMS queue."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1184
+#, no-c-format
+msgid "&lt;managedTopicPublisher&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1185
+#, no-c-format
+msgid "org.jboss.seam.jms.ManagedTopicPublisher"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1187
+#, no-c-format
+msgid ""
+"Manager component for an event scoped managed JMS <literal>TopicPublisher</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1192
+#, no-c-format
+msgid ""
+"<literal>&lt;managedTopicPublisher&gt;.topicJndiName</literal> &mdash; the "
+"JNDI name of the JMS topic."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1200
+#, no-c-format
+msgid "&lt;managedWorkingMemory&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1201
+#, no-c-format
+msgid "org.jboss.seam.drools.ManagedWorkingMemory"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1203
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed Drools "
+"<literal>WorkingMemory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1208
+#, no-c-format
+msgid ""
+"<literal>&lt;managedWorkingMemory&gt;.ruleBase</literal> &mdash; a value "
+"expression that evaluates to an instance of <literal>RuleBase</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1216
+#, no-c-format
+msgid "&lt;ruleBase&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1217
+#, no-c-format
+msgid "org.jboss.seam.drools.RuleBase"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1219
+#, no-c-format
+msgid ""
+"Manager component for an application scoped Drools <literal>RuleBase</"
+"literal>. <emphasis>Note that this is not really intended for production "
+"usage, since it does not support dynamic installation of new rules.</"
+"emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1224
+#, no-c-format
+msgid ""
+"<literal>&lt;ruleBase&gt;.ruleFiles</literal> &mdash; a list of files "
+"containing Drools rules."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1227
+#, no-c-format
+msgid ""
+"<literal>&lt;ruleBase&gt;.dslFile</literal> &mdash; a Drools DSL definition."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1235
+#, no-c-format
+msgid "&lt;entityHome&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1236
+#, no-c-format
+msgid "org.jboss.seam.framework.EntityHome"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1240
+#, no-c-format
+msgid "&lt;hibernateEntityHome&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1241
+#, no-c-format
+msgid "org.jboss.seam.framework.HibernateEntityHome"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1245
+#, no-c-format
+msgid "&lt;entityQuery&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1246
+#, no-c-format
+msgid "org.jboss.seam.framework.EntityQuery"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1250
+#, no-c-format
+msgid "&lt;hibernateEntityQuery&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1251
+#, no-c-format
+msgid "org.jboss.seam.framework.HibernateEntityQuery"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Concepts.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Concepts.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Concepts.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1922 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Concepts.xml:10
+#, no-c-format
+msgid "The contextual component model"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:11
+#, no-c-format
+msgid ""
+"The two core concepts in Seam are the notion of a <emphasis>context</"
+"emphasis> and the notion of a <emphasis>component</emphasis>. Components are "
+"stateful objects, usually EJBs, and an instance of a component is associated "
+"with a context, and given a name in that context. <emphasis>Bijection</"
+"emphasis> provides a mechanism for aliasing internal component names "
+"(instance variables) to contextual names, allowing component trees to be "
+"dynamically assembled, and reassembled by Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:14
+#, no-c-format
+msgid "Let's start by describing the contexts built in to Seam."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:17
+#, no-c-format
+msgid "Seam contexts"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:18
+#, no-c-format
+msgid ""
+"Seam contexts are created and destroyed by the framework. The application "
+"does not control context demarcation via explicit Java API calls. Context "
+"are usually implicit. In some cases, however, contexts are demarcated via "
+"annotations."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:21
+#, no-c-format
+msgid "The basic Seam contexts are:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:26
+#, no-c-format
+msgid "<para>Stateless context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:31
+#, no-c-format
+msgid "Event (or request) context"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:36 Concepts.xml:151
+#, no-c-format
+msgid "<para>Page context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:41 Concepts.xml:156
+#, no-c-format
+msgid "<para>Conversation context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:46 Concepts.xml:161
+#, no-c-format
+msgid "<para>Session context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:51 Concepts.xml:166
+#, no-c-format
+msgid "<para>Business process context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:56 Concepts.xml:171
+#, no-c-format
+msgid "<para>Application context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:61
+#, no-c-format
+msgid ""
+"You will recognize some of these contexts from servlet and related "
+"specifications. However, two of them might be new to you: "
+"<emphasis>conversation context</emphasis>, and <emphasis>business process "
+"context</emphasis>. One reason state management in web applications is so "
+"fragile and error-prone is that the three built-in contexts (request, "
+"session and application) are not especially meaningful from the point of "
+"view of the business logic. A user login session, for example, is a fairly "
+"arbitrary construct in terms of the actual application work flow. Therefore, "
+"most Seam components are scoped to the conversation or business process "
+"contexts, since they are the contexts which are most meaningful in terms of "
+"the application."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:64
+#, no-c-format
+msgid "Let's look at each context in turn."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:67
+#, no-c-format
+msgid "<title>Stateless context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:68
+#, no-c-format
+msgid ""
+"Components which are truly stateless (stateless session beans, primarily) "
+"always live in the stateless context (this is really a non-context). "
+"Stateless components are not very interesting, and are arguably not very "
+"object-oriented. Nevertheless, they are important and often useful."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:71
+#, no-c-format
+msgid "<title>Event context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:72
+#, no-c-format
+msgid ""
+"The event context is the \"narrowest\" stateful context, and is a "
+"generalization of the notion of the web request context to cover other kinds "
+"of events. Nevertheless, the event context associated with the lifecycle of "
+"a JSF request is the most important example of an event context, and the one "
+"you will work with most often. Components associated with the event context "
+"are destroyed at the end of the request, but their state is available and "
+"well-defined for at least the lifecycle of the request."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:75
+#, no-c-format
+msgid ""
+"When you invoke a Seam component via RMI, or Seam Remoting, the event "
+"context is created and destroyed just for the invocation."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:78
+#, no-c-format
+msgid "<title>Page context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:79
+#, no-c-format
+msgid ""
+"The page context allows you to associate state with a particular instance of "
+"a rendered page. You can initialize state in your event listener, or while "
+"actually rendering the page, and then have access to it from any event that "
+"originates from that page. This is especially useful for functionality like "
+"clickable lists, where the list is backed by changing data on the server "
+"side. The state is actually serialized to the client, so this construct is "
+"extremely robust with respect to multi-window operation and the back button."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:82
+#, no-c-format
+msgid "<title>Conversation context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:83
+#, no-c-format
+msgid ""
+"The conversation context is a truly central concept in Seam. A "
+"<emphasis>conversation</emphasis> is a unit of work from the point of view "
+"of the user. It might span several interactions with the user, several "
+"requests, and several database transactions. But to the user, a conversation "
+"solves a single problem. For example, \"book hotel\", \"approve contract\", "
+"\"create order\" are all conversations. You might like to think of a "
+"conversation implementing a single \"use case\" or \"user story\", but the "
+"relationship is not necessarily quite exact."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:86
+#, no-c-format
+msgid ""
+"A conversation holds state associated with \"what the user is doing now, in "
+"this window\". A single user may have multiple conversations in progress at "
+"any point in time, usually in multiple windows. The conversation context "
+"allows us to ensure that state from the different conversations does not "
+"collide and cause bugs."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:89
+#, no-c-format
+msgid ""
+"It might take you some time to get used to thinking of applications in terms "
+"of conversations. But once you get used to it, we think you'll love the "
+"notion, and never be able to not think in terms of conversations again!"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:92
+#, no-c-format
+msgid ""
+"Some conversations last for just a single request. Conversations that span "
+"multiple requests must be demarcated using annotations provided by Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:95
+#, no-c-format
+msgid ""
+"Some conversations are also <emphasis>tasks</emphasis>. A task is a "
+"conversation that is significant in terms of a long-running business "
+"process, and has the potential to trigger a business process state "
+"transition when it is successfully completed. Seam provides a special set of "
+"annotations for task demarcation."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:98
+#, no-c-format
+msgid ""
+"Conversations may be <emphasis>nested</emphasis>, with one conversation "
+"taking place \"inside\" a wider conversation. This is an advanced feature."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:101
+#, no-c-format
+msgid ""
+"Usually, conversation state is actually held by Seam in the servlet session "
+"between requests. Seam implements configurable <emphasis>conversation "
+"timeout</emphasis>, automatically destroying inactive conversations, and "
+"thus ensuring that the state held by a single user login session does not "
+"grow without bound if the user abandons conversations."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:104
+#, no-c-format
+msgid ""
+"Seam serializes processing of concurrent requests that take place in the "
+"same long-running conversation context, in the same process."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:107
+#, no-c-format
+msgid ""
+"Alternatively, Seam may be configured to keep conversational state in the "
+"client browser."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:110
+#, no-c-format
+msgid "<title>Session context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:111
+#, no-c-format
+msgid ""
+"A session context holds state associated with the user login session. While "
+"there are some cases where it is useful to share state between several "
+"conversations, we generally frown on the use of session context for holding "
+"components other than global information about the logged in user."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:114
+#, no-c-format
+msgid ""
+"In a JSR-168 portal environment, the session context represents the portlet "
+"session."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:117
+#, no-c-format
+msgid "<title>Business process context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:118
+#, no-c-format
+msgid ""
+"The business process context holds state associated with the long running "
+"business process. This state is managed and made persistent by the BPM "
+"engine (JBoss jBPM). The business process spans multiple interactions with "
+"multiple users, so this state is shared between multiple users, but in a "
+"well-defined manner. The current task determines the current business "
+"process instance, and the lifecycle of the business process is defined "
+"externally using a <emphasis>process definition language</emphasis>, so "
+"there are no special annotations for business process demarcation."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:121
+#, no-c-format
+msgid "<title>Application context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:122
+#, no-c-format
+msgid ""
+"The application context is the familiar servlet context from the servlet "
+"spec. Application context is mainly useful for holding static information "
+"such as configuration data, reference data or metamodels. For example, Seam "
+"stores its own configuration and metamodel in the application context."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:125
+#, no-c-format
+msgid "Context variables"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:126
+#, no-c-format
+msgid ""
+"A context defines a namespace, a set of <emphasis>context variables</"
+"emphasis>. These work much the same as session or request attributes in the "
+"servlet spec. You may bind any value you like to a context variable, but "
+"usually we bind Seam component instances to context variables."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:129
+#, no-c-format
+msgid ""
+"So, within a context, a component instance is identified by the context "
+"variable name (this is usually, but not always, the same as the component "
+"name). You may programatically access a named component instance in a "
+"particular scope via the <literal>Contexts</literal> class, which provides "
+"access to several thread-bound instances of the <literal>Context</literal> "
+"interface:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:132
+#, no-c-format
+msgid "User user = (User) Contexts.getSessionContext().get(\"user\");"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:133
+#, no-c-format
+msgid "You may also set or change the value associated with a name:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:136
+#, no-c-format
+msgid "Contexts.getSessionContext().set(\"user\", user);"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:137
+#, no-c-format
+msgid ""
+"Usually, however, we obtain components from a context via injection, and put "
+"component instances into a context via outjection."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:140
+#, no-c-format
+msgid "Context search priority"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:141
+#, no-c-format
+msgid ""
+"Sometimes, as above, component instances are obtained from a particular "
+"known scope. Other times, all stateful scopes are searched, in "
+"<emphasis>priority order</emphasis>. The order is as follows:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:146
+#, no-c-format
+msgid "<para>Event context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:176
+#, no-c-format
+msgid ""
+"You can perform a priority search by calling <literal>Contexts."
+"lookupInStatefulContexts()</literal>. Whenever you access a component by "
+"name from a JSF page, a priority search occurs."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:179
+#, no-c-format
+msgid "Concurrency model"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:180
+#, no-c-format
+msgid ""
+"Neither the servlet nor EJB specifications define any facilities for "
+"managing concurrent requests originating from the same client. The servlet "
+"container simply lets all threads run concurrently and leaves enforcing "
+"threadsafeness to application code. The EJB container allows stateless "
+"components to be accessed concurrently, and throws an exception if multiple "
+"threads access a stateful session bean."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:183
+#, no-c-format
+msgid ""
+"This behavior might have been okay in old-style web applications which were "
+"based around fine-grained, synchronous requests. But for modern applications "
+"which make heavy use of many fine-grained, asynchronous (AJAX) requests, "
+"concurrency is a fact of life, and must be supported by the programming "
+"model. Seam weaves a concurrency management layer into its context model."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:186
+#, no-c-format
+msgid ""
+"The Seam session and application contexts are multithreaded. Seam will allow "
+"concurrent requests in a context to be processed concurrently. The event and "
+"page contexts are by nature single threaded. The business process context is "
+"strictly speaking multi-threaded, but in practice concurrency is "
+"sufficiently rare that this fact may be disregarded most of the time. "
+"Finally, Seam enforces a <emphasis>single thread per conversation per "
+"process</emphasis> model for the conversation context by serializing "
+"concurrent requests in the same long-running conversation context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:189
+#, no-c-format
+msgid ""
+"Since the session context is multithreaded, and often contains volatile "
+"state, session scope components are always protected by Seam from concurrent "
+"access. Seam serializes requests to session scope session beans and "
+"JavaBeans by default (and detects and breaks any deadlocks that occur). This "
+"is not the default behaviour for application scoped components however, "
+"since application scoped components do not usually hold volatile state and "
+"because synchronization at the global level is <emphasis>extremely</"
+"emphasis> expensive. However, you can force a serialized threading model on "
+"any session bean or JavaBean component by adding the <literal>@Synchronized</"
+"literal> annotation."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:192
+#, no-c-format
+msgid ""
+"This concurrency model means that AJAX clients can safely use volatile "
+"session and conversational state, without the need for any special work on "
+"the part of the developer."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:195
+#, no-c-format
+msgid "Seam components"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:196
+#, no-c-format
+msgid ""
+"Seam components are POJOs (Plain Old Java Objects). In particular, they are "
+"JavaBeans or EJB 3.0 enterprise beans. While Seam does not require that "
+"components be EJBs and can even be used without an EJB 3.0 compliant "
+"container, Seam was designed with EJB 3.0 in mind and includes deep "
+"integration with EJB 3.0. Seam supports the following <emphasis>component "
+"types</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:201
+#, no-c-format
+msgid "EJB 3.0 stateless session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:206
+#, no-c-format
+msgid "EJB 3.0 stateful session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:211
+#, no-c-format
+msgid "EJB 3.0 entity beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:216
+#, no-c-format
+msgid "<para>JavaBeans</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:221
+#, no-c-format
+msgid "EJB 3.0 message-driven beans"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:226
+#, no-c-format
+msgid "Stateless session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:227
+#, no-c-format
+msgid ""
+"Stateless session bean components are not able to hold state across multiple "
+"invocations. Therefore, they usually work by operating upon the state of "
+"other components in the various Seam contexts. They may be used as JSF "
+"action listeners, but cannot provide properties to JSF components for "
+"display."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:230
+#, no-c-format
+msgid "Stateless session beans always live in the stateless context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:233
+#, no-c-format
+msgid ""
+"Stateless session beans are the least interesting kind of Seam component."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:236
+#, no-c-format
+msgid "Stateful session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:237
+#, no-c-format
+msgid ""
+"Stateful session bean components are able to hold state not only across "
+"multiple invocations of the bean, but also across multiple requests. "
+"Application state that does not belong in the database should usually be "
+"held by stateful session beans. This is a major difference between Seam and "
+"many other web application frameworks. Instead of sticking information about "
+"the current conversation directly in the <literal>HttpSession</literal>, you "
+"should keep it in instance variables of a stateful session bean that is "
+"bound to the conversation context. This allows Seam to manage the lifecycle "
+"of this state for you, and ensure that there are no collisions between state "
+"relating to different concurrent conversations."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:240
+#, no-c-format
+msgid ""
+"Stateful session beans are often used as JSF action listener, and as backing "
+"beans that provide properties to JSF components for display or form "
+"submission."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:243
+#, no-c-format
+msgid ""
+"By default, stateful session beans are bound to the conversation context. "
+"They may never be bound to the page or stateless contexts."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:246
+#, no-c-format
+msgid ""
+"Concurrent requests to session-scoped stateful session beans are always "
+"serialized by Seam."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:249
+#, no-c-format
+msgid "Entity beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:250
+#, no-c-format
+msgid ""
+"Entity beans may be bound to a context variable and function as a seam "
+"component. Because entities have a persistent identity in addition to their "
+"contextual identity, entity instances are usually bound explicitly in Java "
+"code, rather than being instantiated implicitly by Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:253
+#, no-c-format
+msgid ""
+"Entity bean components do not support bijection or context demarcation. Nor "
+"does invocation of an entity bean trigger validation."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:256
+#, no-c-format
+msgid ""
+"Entity beans are not usually used as JSF action listeners, but do often "
+"function as backing beans that provide properties to JSF components for "
+"display or form submission. In particular, it is common to use an entity as "
+"a backing bean, together with a stateless session bean action listener to "
+"implement create/update/delete type functionality."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:259
+#, no-c-format
+msgid ""
+"By default, entity beans are bound to the conversation context. They may "
+"never be bound to the stateless context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:262
+#, no-c-format
+msgid ""
+"Note that it in a clustered environment is somewhat less efficient to bind "
+"an entity bean directly to a conversation or session scoped Seam context "
+"variable than it would be to hold a reference to the entity bean in a "
+"stateful session bean. For this reason, not all Seam applications define "
+"entity beans to be Seam components."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:265
+#, no-c-format
+msgid "<title>JavaBeans</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:266
+#, no-c-format
+msgid ""
+"Javabeans may be used just like a stateless or stateful session bean. "
+"However, they do not provide the functionality of a session bean "
+"(declarative transaction demarcation, declarative security, efficient "
+"clustered state replication, EJB 3.0 persistence, timeout methods, etc)."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:269
+#, no-c-format
+msgid ""
+"In a later chapter, we show you how to use Seam and Hibernate without an EJB "
+"container. In this use case, components are JavaBeans instead of session "
+"beans. Note, however, that in many application servers it is somewhat less "
+"efficient to cluster conversation or session scoped Seam JavaBean components "
+"than it is to cluster stateful session bean components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:272
+#, no-c-format
+msgid "By default, JavaBeans are bound to the event context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:275
+#, no-c-format
+msgid ""
+"Concurrent requests to session-scoped JavaBeans are always serialized by "
+"Seam."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:278
+#, no-c-format
+msgid "Message-driven beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:279
+#, no-c-format
+msgid ""
+"Message-driven beans may function as a seam component. However, message-"
+"driven beans are called quite differently to other Seam components - instead "
+"of invoking them via the context variable, they listen for messages sent to "
+"a JMS queue or topic."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:282
+#, no-c-format
+msgid ""
+"Message-driven beans may not be bound to a Seam context. Nor do they have "
+"access to the session or conversation state of their \"caller\". However, "
+"they do support bijection and some other Seam functionality."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:285
+#, no-c-format
+msgid "Interception"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:286
+#, no-c-format
+msgid ""
+"In order to perform its magic (bijection, context demarcation, validation, "
+"etc), Seam must intercept component invocations. For JavaBeans, Seam is in "
+"full control of instantiation of the component, and no special configuration "
+"is needed. For entity beans, interception is not required since bijection "
+"and context demarcation are not defined. For session beans, we must register "
+"an EJB interceptor for the session bean component. We could use an "
+"annotation, as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:289
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:290
+#, no-c-format
+msgid ""
+"But a much better way is to define the interceptor in <literal>ejb-jar.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:293
+#, no-c-format
+msgid ""
+"&lt;interceptors&gt;\n"
+"   &lt;interceptor&gt;\n"
+"      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"   &lt;/interceptor&gt;\n"
+"&lt;/interceptors&gt;\n"
+"   \n"
+"&lt;assembly-descriptor&gt;\n"
+"   &lt;interceptor-binding&gt;\n"
+"      &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"   &lt;/interceptor-binding&gt;\n"
+"&lt;/assembly-descriptor&gt;"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:294
+#, no-c-format
+msgid "Component names"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:295
+#, no-c-format
+msgid ""
+"All seam components need a name. We can assign a name to a component using "
+"the <literal>@Name</literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:298
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:299
+#, no-c-format
+msgid ""
+"This name is the <emphasis>seam component name</emphasis> and is not related "
+"to any other name defined by the EJB specification. However, seam component "
+"names work just like JSF managed bean names and you can think of the two "
+"concepts as identical."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:302
+#, no-c-format
+msgid ""
+"<literal>@Name</literal> is not the only way to define a component name, but "
+"we always need to specify the name <emphasis>somewhere</emphasis>. If we "
+"don't, then none of the other Seam annotations will function."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:305
+#, no-c-format
+msgid ""
+"Just like in JSF, a seam component instance is usually bound to a context "
+"variable with the same name as the component name. So, for example, we would "
+"access the <literal>LoginAction</literal> using <literal>Contexts."
+"getStatelessContext().get(\"loginAction\")</literal>. In particular, "
+"whenever Seam itself instantiates a component, it binds the new instance to "
+"a variable with the component name. However, again like JSF, it is possible "
+"for the application to bind a component to some other context variable by "
+"programmatic API call. This is only useful if a particular component serves "
+"more than one role in the system. For example, the currently logged in "
+"<literal>User</literal> might be bound to the <literal>currentUser</literal> "
+"session context variable, while a <literal>User</literal> that is the "
+"subject of some administration functionality might be bound to the "
+"<literal>user</literal> conversation context variable."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:308
+#, no-c-format
+msgid ""
+"For very large applications, and for built-in seam components, qualified "
+"names are often used."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:311
+#, no-c-format
+msgid ""
+"@Name(\"com.jboss.myapp.loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:312
+#, no-c-format
+msgid ""
+"We may use the qualified component name both in Java code and in JSF's "
+"expression language:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:315
+#, no-c-format
+msgid ""
+"&lt;h:commandButton type=\"submit\" value=\"Login\"\n"
+"                 action=\"#{com.jboss.myapp.loginAction.login}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:316
+#, no-c-format
+msgid ""
+"Since this is noisy, Seam also provides a means of aliasing a qualified name "
+"to a simple name. Add a line like this to the <literal>components.xml</"
+"literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:319
+#, no-c-format
+msgid ""
+"&lt;factory name=\"loginAction\" scope=\"STATELESS\" value=\"#{com.jboss."
+"myapp.loginAction}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:320
+#, no-c-format
+msgid ""
+"All of the built-in Seam components have qualified names, but most of them "
+"are aliased to a simple name by the <literal>components.xml</literal> file "
+"included in the Seam jar."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:323
+#, no-c-format
+msgid "Defining the component scope"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:324
+#, no-c-format
+msgid ""
+"We can override the default scope (context) of a component using the "
+"<literal>@Scope</literal> annotation. This lets us define what context a "
+"component instance is bound to, when it is instantiated by Seam."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:327
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(SESSION)\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:328
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.ScopeType</literal> defines an enumeration of "
+"possible scopes."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:331
+#, no-c-format
+msgid "Components with multiple roles"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:332
+#, no-c-format
+msgid ""
+"Some Seam component classes can fulfill more than one role in the system. "
+"For example, we often have a <literal>User</literal> class which is usually "
+"used as a session-scoped component representing the current user but is used "
+"in user administration screens as a conversation-scoped component. The "
+"<literal>@Role</literal> annotation lets us define an additional named role "
+"for a component, with a different scope&mdash;it lets us bind the same "
+"component class to different context variables. (Any Seam component "
+"<emphasis>instance</emphasis> may be bound to multiple context variables, "
+"but this lets us do it at the class level, and take advantage of auto-"
+"instantiation.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:335
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(CONVERSATION)\n"
+"@Role(name=\"currentUser\", scope=SESSION)\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:336
+#, no-c-format
+msgid ""
+"The <literal>@Roles</literal> annotation lets us specify as many additional "
+"roles as we like."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:339
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(CONVERSATION)\n"
+"@Roles({@Role(name=\"currentUser\", scope=SESSION)\n"
+"        @Role(name=\"tempUser\", scope=EVENT)})\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:340
+#, no-c-format
+msgid "Built-in components"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:341
+#, no-c-format
+msgid ""
+"Like many good frameworks, Seam eats its own dogfood and is implemented "
+"mostly as a set of built-in Seam interceptors (see later) and Seam "
+"components. This makes it easy for applications to interact with built-in "
+"components at runtime or even customize the basic functionality of Seam by "
+"replacing the built-in components with custom implementations. The built-in "
+"components are defined in the Seam namespace <literal>org.jboss.seam.core</"
+"literal> and the Java package of the same name."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:344
+#, no-c-format
+msgid ""
+"The built-in components may be injected, just like any Seam components, but "
+"they also provide convenient static <literal>instance()</literal> methods:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:347
+#, no-c-format
+msgid "FacesMessages.instance().add(\"Welcome back, #{user.name}!\");"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:348
+#, no-c-format
+msgid ""
+"Seam was designed to integrate tightly in a Java EE 5 environment. However, "
+"we understand that there are many projects which are not running in a full "
+"EE environment. We also realize the critical importance of easy unit and "
+"integration testing using frameworks such as TestNG and JUnit. So, we've "
+"made it easy to run Seam in Java SE environments by allowing you to boostrap "
+"certain critical infrastructure normally only found in EE environments by "
+"installing built-in Seam components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:351
+#, no-c-format
+msgid ""
+"For example, you can run your EJB3 components in Tomcat or an integration "
+"test suite just by installing the built-in component <literal>org.jboss.seam."
+"core.ejb</literal>, which automatically bootstraps the JBoss Embeddable EJB3 "
+"container and deploys your EJB components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:354
+#, no-c-format
+msgid ""
+"Or, if you're not quite ready for the Brave New World of EJB 3.0, you can "
+"write a Seam application that uses only JavaBean components, together with "
+"Hibernate3 for persistence, by installing a built-in component that manages "
+"a Hibernate <literal>SessionFactory</literal>. When using Hibernate outside "
+"of a J2EE environment, you will also probably need a JTA transaction manager "
+"and JNDI server, which are available via the built-in component <literal>org."
+"jboss.seam.core.microcontainer</literal>. This lets you use the bulletproof "
+"JTA/JCA pooling datasource from JBoss application server in an SE "
+"environment like Tomcat!"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:357
+#, no-c-format
+msgid "Bijection"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:358
+#, no-c-format
+msgid ""
+"<emphasis>Dependency injection</emphasis> or <emphasis>inversion of control</"
+"emphasis> is by now a familiar concept to most Java developers. Dependency "
+"injection allows a component to obtain a reference to another component by "
+"having the container \"inject\" the other component to a setter method or "
+"instance variable. In all dependency injection implementations that we have "
+"seen, injection occurs when the component is constructed, and the reference "
+"does not subsequently change for the lifetime of the component instance. For "
+"stateless components, this is reasonable. From the point of view of a "
+"client, all instances of a particular stateless component are "
+"interchangeable. On the other hand, Seam emphasizes the use of stateful "
+"components. So traditional dependency injection is no longer a very useful "
+"construct. Seam introduces the notion of <emphasis>bijection</emphasis> as a "
+"generalization of injection. In contrast to injection, bijection is:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:363
+#, no-c-format
+msgid ""
+"<emphasis>contextual</emphasis> - bijection is used to assemble stateful "
+"components from various different contexts (a component from a \"wider\" "
+"context may even have a reference to a component from a \"narrower\" context)"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:368
+#, no-c-format
+msgid ""
+"<emphasis>bidirectional</emphasis> - values are injected from context "
+"variables into attributes of the component being invoked, and also "
+"<emphasis>outjected</emphasis> from the component attributes back out to the "
+"context, allowing the component being invoked to manipulate the values of "
+"contextual variables simply by setting its own instance variables"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:373
+#, no-c-format
+msgid ""
+"<emphasis>dynamic</emphasis> - since the value of contextual variables "
+"changes over time, and since Seam components are stateful, bijection takes "
+"place every time a component is invoked"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:378
+#, no-c-format
+msgid ""
+"In essence, bijection lets you alias a context variable to a component "
+"instance variable, by specifying that the value of the instance variable is "
+"injected, outjected, or both. Of course, we use annotations to enable "
+"bijection."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:381
+#, no-c-format
+msgid ""
+"The <literal>@In</literal> annotation specifies that a value should be "
+"injected, either into an instance variable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:384
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:385
+#, no-c-format
+msgid "or into a setter method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:388
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @In\n"
+"    public void setUser(User user) {\n"
+"        this.user=user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:389
+#, no-c-format
+msgid ""
+"By default, Seam will do a priority search of all contexts, using the name "
+"of the property or instance variable that is being injected. You may wish to "
+"specify the context variable name explicitly, using, for example, "
+"<literal>@In(\"currentUser\")</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:392
+#, no-c-format
+msgid ""
+"If you want Seam to create an instance of the component when there is no "
+"existing component instance bound to the named context variable, you should "
+"specify <literal>@In(create=true)</literal>. If the value is optional (it "
+"can be null), specify <literal>@In(required=false)</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:395
+#, no-c-format
+msgid ""
+"For some components, it can be repetitive to have to specify <literal>@In"
+"(create=true)</literal> everywhere they are used. In such cases, you can "
+"annotate the component <literal>@AutoCreate</literal>, and then it will "
+"always be created, whenever needed, even without the explicit use of "
+"<literal>create=true</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:398
+#, no-c-format
+msgid "You can even inject the value of an expression:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:401
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In(\"#{user.username}\") String username;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:402
+#, no-c-format
+msgid ""
+"(There is much more information about component lifecycle and injection in "
+"the next chapter.)"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:405
+#, no-c-format
+msgid ""
+"The <literal>@Out</literal> annotation specifies that an attribute should be "
+"outjected, either from an instance variable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:408
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @Out User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:409
+#, no-c-format
+msgid "or from a getter method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:412
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @Out\n"
+"    public User getUser() {\n"
+"        return user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:413
+#, no-c-format
+msgid "An attribute may be both injected and outjected:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:416
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In @Out User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:417
+#, no-c-format
+msgid "<para>or:</para>"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:420
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @In\n"
+"    public void setUser(User user) {\n"
+"        this.user=user;\n"
+"    }\n"
+"    \n"
+"    @Out\n"
+"    public User getUser() {\n"
+"        return user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:421
+#, no-c-format
+msgid "Lifecycle methods"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:422
+#, no-c-format
+msgid ""
+"Session bean and entity bean Seam components support all the usual EJB 3.0 "
+"lifecycle callback (<literal>@PostConstruct</literal>, <literal>@PreDestroy</"
+"literal>, etc). Seam extends all of these callbacks except "
+"<literal>@PreDestroy</literal> to JavaBean components. But Seam also defines "
+"its own component lifecycle callbacks."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:425
+#, no-c-format
+msgid ""
+"The <literal>@Create</literal> method is called every time Seam instantiates "
+"a component. Unlike the <literal>@PostConstruct</literal> method, this "
+"method is called after the component is fully constructed by the EJB "
+"container, and has access to all the usual Seam functionality (bijection, "
+"etc). Components may define only one <literal>@Create</literal> method."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:428
+#, no-c-format
+msgid ""
+"The <literal>@Destroy</literal> method is called when the context that the "
+"Seam component is bound to ends. Components may define only one "
+"<literal>@Destroy</literal> method. Stateful session bean components "
+"<emphasis>must</emphasis> define a method annotated <literal>@Destroy "
+"@Remove</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:431
+#, no-c-format
+msgid ""
+"Finally, a related annotation is the <literal>@Startup</literal> annotation, "
+"which may be applied to any application or session scoped component. The "
+"<literal>@Startup</literal> annotation tells Seam to instantiate the "
+"component immediately, when the context begins, instead of waiting until it "
+"is first referenced by a client. It is possible to control the order of "
+"instantiation of startup components by specifying <literal>@Startup(depends="
+"{....})</literal>."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:434
+#, no-c-format
+msgid "Conditional installation"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:435
+#, no-c-format
+msgid ""
+"The <literal>@Install</literal> annotation lets you control conditional "
+"installation of components that are required in some deployment scenarios "
+"and not in others. This is useful if:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:440
+#, no-c-format
+msgid "You want to mock out some infrastructural component in tests."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:445
+#, no-c-format
+msgid ""
+"You want change the implementation of a component in certain deployment "
+"scenarios."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:450
+#, no-c-format
+msgid ""
+"You want to install some components only if their dependencies are available "
+"(useful for framework authors)."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:455
+#, no-c-format
+msgid ""
+"<literal>@Install</literal> works by letting you specify "
+"<emphasis>precedence</emphasis> and <emphasis>dependencies</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:458
+#, no-c-format
+msgid ""
+"The precedence of a component is a number that Seam uses to decide which "
+"component to install when there are multiple classes with the same component "
+"name in the classpath. Seam will choose the component with the higher "
+"precendence. There are some predefined precedence values:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:463
+#, no-c-format
+msgid ""
+"<literal>BUILT_IN</literal> &mdash; the lowest precedece components are the "
+"components built in to Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:468
+#, no-c-format
+msgid ""
+"<literal>FRAMEWORK</literal> &mdash; components defined by third-party "
+"frameworks may override built-in components, but are overridden by "
+"application components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:473
+#, no-c-format
+msgid ""
+"<literal>APPLICATION</literal> &mdash; the default precedence. This is "
+"appropriate for most application components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:478
+#, no-c-format
+msgid ""
+"<literal>DEPLOYMENT</literal> &mdash; for application components which are "
+"deployment-specific."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:483
+#, no-c-format
+msgid "<literal>MOCK</literal> &mdash; for mock objects used in testing."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:488
+#, no-c-format
+msgid ""
+"Suppose we have a component named <literal>messageSender</literal> that "
+"talks to a JMS queue."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:491
+#, no-c-format
+msgid ""
+"@Name(\"messageSender\") \n"
+"public class MessageSender {\n"
+"    public void sendMessage() {\n"
+"        //do something with JMS\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:492
+#, no-c-format
+msgid ""
+"In our unit tests, we don't have a JMS queue available, so we would like to "
+"stub out this method. We'll create a <emphasis>mock</emphasis> component "
+"that exists in the classpath when unit tests are running, but is never "
+"deployed with the application:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:495
+#, no-c-format
+msgid ""
+"@Name(\"messageSender\") \n"
+"@Install(precedence=MOCK)\n"
+"public class MockMessageSender extends MessageSender {\n"
+"    public void sendMessage() {\n"
+"        //do nothing!\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:496
+#, no-c-format
+msgid ""
+"The <literal>precedence</literal> helps Seam decide which version to use "
+"when it finds both components in the classpath."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:499
+#, no-c-format
+msgid ""
+"This is nice if we are able to control exactly which classes are in the "
+"classpath. But if I'm writing a reusable framework with many dependecies, I "
+"don't want to have to break that framework across many jars. I want to be "
+"able to decide which components to install depending upon what other "
+"components are installed, and upon what classes are available in the "
+"classpath. The <literal>@Install</literal> annotation also controls this "
+"functionality. Seam uses this mechanism internally to enable conditional "
+"installation of many of the built-in components. However, you probably won't "
+"need to use it in your application."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:502
+#, no-c-format
+msgid "Logging"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:503
+#, no-c-format
+msgid "Who is not totally fed up with seeing noisy code like this?"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:506
+#, no-c-format
+msgid ""
+"private static final Log log = LogFactory.getLog(CreateOrderAction.class);\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    if ( log.isDebugEnabled() ) {\n"
+"        log.debug(\"Creating new order for user: \" + user.username() + \n"
+"            \" product: \" + product.name() \n"
+"            + \" quantity: \" + quantity);\n"
+"    }\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:507
+#, no-c-format
+msgid ""
+"It is difficult to imagine how the code for a simple log message could "
+"possibly be more verbose. There is more lines of code tied up in logging "
+"than in the actual business logic! I remain totally astonished that the Java "
+"community has not come up with anything better in 10 years."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:510
+#, no-c-format
+msgid ""
+"Seam provides a logging API built on top of Apache commons-logging that "
+"simplifies this code significantly:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:513
+#, no-c-format
+msgid ""
+"@Logger private Log log;\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    log.debug(\"Creating new order for user: #0 product: #1 quantity: #2\", "
+"user.username(), \n"
+"       product.name(), quantity);\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:514
+#, no-c-format
+msgid ""
+"It doesn't matter if you declare the <literal>log</literal> variable static "
+"or not&mdash;it will work either way."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:517
+#, no-c-format
+msgid ""
+"Note that we don't need the noisy <literal>if ( log.isDebugEnabled() )</"
+"literal> guard, since string concatenation happens <emphasis>inside</"
+"emphasis> the <literal>debug()</literal> method. Note also that we don't "
+"usually need to specify the log category explicitly, since Seam knows what "
+"component it is injecting the <literal>Log</literal> into."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:520
+#, no-c-format
+msgid ""
+"If <literal>User</literal> and <literal>Product</literal> are Seam "
+"components available in the current contexts, it gets even better:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:523
+#, no-c-format
+msgid ""
+"@Logger private Log log;\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    log.debug(\"Creating new order for user: #{user.username} product: #"
+"{product.name}\n"
+"       quantity: #0\", quantity);\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:524
+#, no-c-format
+msgid ""
+"The <literal>Mutable</literal> interface and <literal>@ReadOnly</literal>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:525
+#, no-c-format
+msgid ""
+"Many application servers feature an amazingly broken implementation of "
+"<literal>HttpSession</literal> clustering, where changes to the state of "
+"mutable objects bound to the session are only replicated when the "
+"application calls <literal>setAttribute()</literal> explicitly. This is a "
+"source of bugs that can not effectively be tested for at development time, "
+"since they will only manifest when failover occurs. Furthermore, the actual "
+"replication message contains the entire serialized object graph bound to the "
+"session attribute, which is inefficient."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:528
+#, no-c-format
+msgid ""
+"Of course, EJB stateful session beans must perform automatic dirty checking "
+"and replication of mutable state and a sophisticated EJB container can "
+"introduce optimizations such as attribute-level replication. Unfortunately, "
+"not all Seam users have the good fortune to be working in an environment "
+"that supports EJB 3.0. So, for session and conversation scoped JavaBean and "
+"entity bean components, Seam provides an extra layer of cluster-safe state "
+"management over the top of the web container session clustering."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:531
+#, no-c-format
+msgid ""
+"For session or conversation scoped JavaBean components, Seam automatically "
+"forces replication to occur by calling <literal>setAttribute()</literal> "
+"once in every request that the component was invoked by the application. Of "
+"course, this strategy is inefficient for read-mostly components. You can "
+"control this behavior by implementing the <literal>org.jboss.seam.core."
+"Mutable</literal> interface, or by extending <literal>org.jboss.seam.core."
+"AbstractMutable</literal>, and writing your own dirty-checking logic inside "
+"the component. For example,"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:534
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class Account extends AbstractMutable\n"
+"{\n"
+"    private BigDecimal balance;\n"
+"    \n"
+"    public void setBalance(BigDecimal balance)\n"
+"    {\n"
+"        setDirty(this.balance, balance);\n"
+"        this.balance = balance;\n"
+"    }\n"
+"    \n"
+"    public BigDecimal getBalance()\n"
+"    {\n"
+"        return balance;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:535
+#, no-c-format
+msgid ""
+"Or, you can use the <literal>@ReadOnly</literal> annotation to achieve a "
+"similar effect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:538
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class Account\n"
+"{\n"
+"    private BigDecimal balance;\n"
+"    \n"
+"    public void setBalance(BigDecimal balance)\n"
+"    {\n"
+"        this.balance = balance;\n"
+"    }\n"
+"    \n"
+"    @ReadOnly\n"
+"    public BigDecimal getBalance()\n"
+"    {\n"
+"        return balance;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:539
+#, no-c-format
+msgid ""
+"For session or conversation scoped entity bean components, Seam "
+"automatically forces replication to occur by calling <literal>setAttribute()"
+"</literal> once in every request, <emphasis>unless the (conversation-scoped) "
+"entity is currently associated with a Seam-managed persistence context, in "
+"which case no replication is needed</emphasis>. This strategy is not "
+"necessarily efficient, so session or conversation scope entity beans should "
+"be used with care. You can always write a stateful session bean or JavaBean "
+"component to \"manage\" the entity bean instance. For example,"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:542
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"account\")\n"
+"public class AccountManager extends AbstractMutable\n"
+"{\n"
+"    private Account account; // an entity bean\n"
+"    \n"
+"    @Unwrap\n"
+"    public void getAccount()\n"
+"    {\n"
+"        return account;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:543
+#, no-c-format
+msgid ""
+"Note that the <literal>EntityHome</literal> class in the Seam Application "
+"Framework provides a great example of this pattern."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:546
+#, no-c-format
+msgid "Factory and manager components"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:547
+#, no-c-format
+msgid ""
+"We often need to work with objects that are not Seam components. But we "
+"still want to be able to inject them into our components using <literal>@In</"
+"literal> and use them in value and method binding expressions, etc. "
+"Sometimes, we even need to tie them into the Seam context lifecycle "
+"(<literal>@Destroy</literal>, for example). So the Seam contexts can contain "
+"objects which are not Seam components, and Seam provides a couple of nice "
+"features that make it easier to work with non-component objects bound to "
+"contexts."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:550
+#, no-c-format
+msgid ""
+"The <emphasis>factory component pattern</emphasis> lets a Seam component act "
+"as the instantiator for a non-component object. A <emphasis>factory method</"
+"emphasis> will be called when a context variable is referenced but has no "
+"value bound to it. We define factory methods using the <literal>@Factory</"
+"literal> annotation. The factory method binds a value to the context "
+"variable, and determines the scope of the bound value. There are two styles "
+"of factory method. The first style returns a value, which is bound to the "
+"context by Seam:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:553
+#, no-c-format
+msgid ""
+"@Factory(scope=CONVERSATION)\n"
+"public List&lt;Customer&gt; getCustomerList() { \n"
+"    return ... ;\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:554
+#, no-c-format
+msgid ""
+"The second style is a method of type <literal>void</literal> which binds the "
+"value to the context variable itself:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:557
+#, no-c-format
+msgid ""
+"@DataModel List&lt;Customer&gt; customerList;\n"
+"\n"
+"@Factory(\"customerList\")\n"
+"public void initCustomerList() { \n"
+"    customerList = ...  ;\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:558
+#, no-c-format
+msgid ""
+"In both cases, the factory method is called when we reference the "
+"<literal>customerList</literal> context variable and its value is null, and "
+"then has no further part to play in the lifecycle of the value. An even more "
+"powerful pattern is the <emphasis>manager component pattern</emphasis>. In "
+"this case, we have a Seam component that is bound to a context variable, "
+"that manages the value of the context variable, while remaining invisible to "
+"clients."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:561
+#, no-c-format
+msgid ""
+"A manager component is any component with an <literal>@Unwrap</literal> "
+"method. This method returns the value that will be visable to clients, and "
+"is called <emphasis>every time</emphasis> a context variable is referenced."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:564
+#, no-c-format
+msgid ""
+"@Name(\"customerList\")\n"
+"@Scope(CONVERSATION)\n"
+"public class CustomerListManager\n"
+"{\n"
+"    ...\n"
+"    \n"
+"    @Unwrap\n"
+"    public List&lt;Customer&gt; getCustomerList() { \n"
+"        return ... ;\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:565
+#, no-c-format
+msgid ""
+"This pattern is especially useful if we have some heavyweight object that "
+"needs a cleanup operation when the context ends. In this case, the manager "
+"component may perform cleanup in the <literal>@Destroy</literal> method."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Configuration.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Configuration.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Configuration.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1435 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Configuration.xml:10
+#, no-c-format
+msgid "Configuring Seam and packaging Seam applications"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:11
+#, no-c-format
+msgid ""
+"Configuration is a very boring topic and an extremely tedious pastime. "
+"Unfortunately, several lines of XML are required to integrate Seam into your "
+"JSF implementation and servlet container. There's no need to be too put off "
+"by the following sections; you'll never need to type any of this stuff "
+"yourself, since you can just copy and paste from the example applications!"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:14
+#, no-c-format
+msgid "Basic Seam configuration"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:15
+#, no-c-format
+msgid ""
+"First, let's look at the basic configuration that is needed whenever we use "
+"Seam with JSF."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:18
+#, no-c-format
+msgid "Integrating Seam with JSF and your servlet container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:19
+#, no-c-format
+msgid ""
+"Seam requires the following entry in your <literal>web.xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:22
+#, no-c-format
+msgid ""
+"&lt;listener&gt;\n"
+"    &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/listener-"
+"class&gt;\n"
+"&lt;/listener&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:23
+#, no-c-format
+msgid ""
+"This listener is responsible for bootstrapping Seam, and for destroying "
+"session and application contexts."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:26
+#, no-c-format
+msgid ""
+"To integrate with the JSF request lifecycle, we also need a JSF "
+"<literal>PhaseListener</literal> registered in in the <literal>faces-config."
+"xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:29
+#, no-c-format
+msgid ""
+"&lt;lifecycle&gt;\n"
+"    &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-"
+"listener&gt;\n"
+"&lt;/lifecycle&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:30
+#, no-c-format
+msgid ""
+"The actual listener class here varies depending upon how you want to manage "
+"transaction demarcation (more on this below)."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:33
+#, no-c-format
+msgid ""
+"If you are using Sun's JSF 1.2 reference implementation, you should also add "
+"this to <literal>faces-config.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:36
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;el-resolver&gt;org.jboss.seam.jsf.SeamELResolver&lt;/el-"
+"resolver&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:37
+#, no-c-format
+msgid ""
+"(This line should not strictly speaking be necessary, but it works around a "
+"minor bug in the RI.)"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:40
+#, no-c-format
+msgid ""
+"Some JSF implementations have a broken implementation of server-side state "
+"saving that interferes with Seam's conversation propagation. If you have "
+"problems with conversation propagation during form submissions, try "
+"switching to client-side state saving. You'll need this in <literal>web.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:43
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;client&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:44
+#, no-c-format
+msgid "Seam servlet filters"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:45
+#, no-c-format
+msgid ""
+"Seam doesn't need any servlet filters for basic operation. However, there "
+"are several features which depend upon the use of filters. To make things "
+"easier for you guys, Seam lets you add and configure servlet filters just "
+"like you would configure other built-in Seam components. To take advantage "
+"of this feature, we must first install a master filter in <literal>web.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:48
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;/*&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:49
+#, no-c-format
+msgid "Adding the master filter enables the following built-in filters."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:52
+#, no-c-format
+msgid "Exception handling"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:53
+#, no-c-format
+msgid ""
+"This filter provides the exception mapping functionality in <literal>pages."
+"xml</literal> (almost all applications will need this). It also takes care "
+"of rolling back uncommitted transactions when uncaught exceptions occur. "
+"(According to the Java EE specification, the web container should do this "
+"automatically, but we've found that this behavior cannot be relied upon in "
+"all application servers. And it is certainly not required of plain servlet "
+"engines like Tomcat.)"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:56
+#, no-c-format
+msgid ""
+"By default, the exception handling filter will process all requests, however "
+"this behavior may be adjusted by adding a <literal>&lt;web:exception-"
+"filter&gt;</literal> entry to <literal>components.xml</literal>, as shown in "
+"this example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:59
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:web=\"http://jboss.com/products/seam/web\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                    http://jboss.com/products/seam/core-1.2.xsd\n"
+"                 http://jboss.com/products/seam/components \n"
+"                     http://jboss.com/products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/web \n"
+"                     http://jboss.com/products/seam/web-1.2.xsd\"&gt;\n"
+"\n"
+"    &lt;web:exception-filter url-pattern=\"*.seam\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:62 Configuration.xml:77 Configuration.xml:99
+#: Configuration.xml:124
+#, no-c-format
+msgid ""
+"<literal>url-pattern</literal> &mdash; Used to specify which requests are "
+"filtered, the default is all requests."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:67
+#, no-c-format
+msgid "Conversation propagation with redirects"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:68
+#, no-c-format
+msgid ""
+"This filter allows Seam to propagate the conversation context across browser "
+"redirects. It intercepts any browser redirects and adds a request parameter "
+"that specifies the Seam conversation identifier."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:71
+#, no-c-format
+msgid ""
+"The redirect filter will process all requests by default, but this behavior "
+"can also be adjusted in <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:74
+#, no-c-format
+msgid "&lt;web:redirect-filter url-pattern=\"*.seam\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:82
+#, no-c-format
+msgid "Multipart form submissions"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:83
+#, no-c-format
+msgid ""
+"This feature is necessary when using the Seam file upload JSF control. It "
+"detects multipart form requests and processes them according to the "
+"multipart/form-data specification (RFC-2388). To override the default "
+"settings, add the following entry to <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:86
+#, no-c-format
+msgid ""
+"&lt;web:multipart-filter create-temp-files=\"true\" \n"
+"        max-request-size=\"1000000\" \n"
+"        url-pattern=\"*.seam\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:89
+#, no-c-format
+msgid ""
+"<literal>create-temp-files</literal> &mdash; If set to <literal>true</"
+"literal>, uploaded files are written to a temporary file (instead of held in "
+"memory). This may be an important consideration if large file uploads are "
+"expected. The default setting is <literal>false</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:94
+#, no-c-format
+msgid ""
+"<literal>max-request-size</literal> &mdash; If the size of a file upload "
+"request (determined by reading the <literal>Content-Length</literal> header "
+"in the request) exceeds this value, the request will be aborted. The default "
+"setting is 0 (no size limit)."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:104
+#, no-c-format
+msgid "Character encoding"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:105
+#, no-c-format
+msgid "Sets the character encoding of submitted form data."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:108 Configuration.xml:136
+#, no-c-format
+msgid ""
+"This filter is not installed by default and requires an entry in "
+"<literal>components.xml</literal> to enable it:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:111
+#, no-c-format
+msgid ""
+"&lt;web:character-encoding-filter encoding=\"UTF-16\" \n"
+"        override-client=\"true\" \n"
+"        url-pattern=\"*.seam\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:114
+#, no-c-format
+msgid "<literal>encoding</literal> &mdash; The encoding to use."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:119
+#, no-c-format
+msgid ""
+"<literal>override-client</literal> &mdash; If this is set to <literal>true</"
+"literal>, the request encoding will be set to whatever is specified by "
+"<literal>encoding</literal> no matter whether the request already specifies "
+"an encoding or not. If set to <literal>false</literal>, the request encoding "
+"will only be set if the request doesn't already specify an encoding. The "
+"default setting is <literal>false</literal>."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:129
+#, no-c-format
+msgid "Context management for custom servlets"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:130
+#, no-c-format
+msgid ""
+"Requests sent direct to some servlet other than the JSF servlet are not "
+"processed through the JSF lifecycle, so Seam provides a servlet filter that "
+"can be applied to any other servlet that needs access to Seam components."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:133
+#, no-c-format
+msgid ""
+"This filter allows custom servlets to interact with the Seam contexts. It "
+"sets up the Seam contexts at the beginning of each request, and tears them "
+"down at the end of the request. You should make sure that this filter is "
+"<emphasis>never</emphasis> applied to the JSF <literal>FacesServlet</"
+"literal>. Seam uses the phase listener for context management in a JSF "
+"request."
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:139
+#, no-c-format
+msgid "&lt;web:context-filter url-pattern=\"/media/*\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:142
+#, no-c-format
+msgid ""
+"<literal>url-pattern</literal> &mdash; Used to specify which requests are "
+"filtered, the default is all requests. If the url-pattern is specified for "
+"the context filter, then the filter will be enabled (unless explicitly "
+"disabled)."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:147
+#, no-c-format
+msgid ""
+"The context filter expects to find the conversation id of any conversation "
+"context in a request parameter named <literal>conversationId</literal>. You "
+"are responsible for ensuring that it gets sent in the request."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:150
+#, no-c-format
+msgid ""
+"You are also responsible for ensuring propagation of any new conversation id "
+"back to the client. Seam exposes the conversation id as a property of the "
+"built in component <literal>conversation</literal>."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:153
+#, no-c-format
+msgid "Integrating Seam with your EJB container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:154
+#, no-c-format
+msgid ""
+"We need to apply the <literal>SeamInterceptor</literal> to our Seam "
+"components. The simplest way to do this is to add the following interceptor "
+"binding to the <literal>&lt;assembly-descriptor&gt;</literal> in "
+"<literal>ejb-jar.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:157
+#, no-c-format
+msgid ""
+"&lt;interceptor-binding&gt;\n"
+"    &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"    &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"&lt;/interceptor-binding&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:158
+#, no-c-format
+msgid ""
+"Seam needs to know where to go to find session beans in JNDI. One way to do "
+"this is specify the <literal>@JndiName</literal> annotation on every session "
+"bean Seam component. However, this is quite tedious. A better approach is to "
+"specify a pattern that Seam can use to calculate the JNDI name from the EJB "
+"name. Unfortunately, there is no standard mapping to global JNDI defined in "
+"the EJB3 specification, so this mapping is vendor-specific. We usually "
+"specify this option in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:161
+#, no-c-format
+msgid "For JBoss AS, the following pattern is correct:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:164
+#, no-c-format
+msgid "&lt;core:init jndi-name=\"myEarName/#{ejbName}/local\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:165
+#, no-c-format
+msgid ""
+"Where <literal>myEarName</literal> is the name of the EAR in which the bean "
+"is deployed."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:168
+#, no-c-format
+msgid ""
+"Outside the context of an EAR (when using the JBoss Embeddable EJB3 "
+"container), the following pattern is the one to use:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:171
+#, no-c-format
+msgid "&lt;core:init jndi-name=\"#{ejbName}/local\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:172
+#, no-c-format
+msgid ""
+"You'll have to experiment to find the right setting for other application "
+"servers. Note that some servers (such as GlassFish) require you to specify "
+"JNDI names for all EJB components explicitly (and tediously). In this case, "
+"you can pick your own pattern ;-)"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:175
+#, no-c-format
+msgid "Using facelets"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:176
+#, no-c-format
+msgid ""
+"If you want follow our advice and use facelets instead of JSP, add the "
+"following lines to <literal>faces-config.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:179
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;view-handler&gt;com.sun.facelets.FaceletViewHandler&lt;/view-"
+"handler&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:180
+#, no-c-format
+msgid "And the following lines to <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:183
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;javax.faces.DEFAULT_SUFFIX&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;.xhtml&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:184
+#, no-c-format
+msgid "Don't forget!"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:185
+#, no-c-format
+msgid ""
+"There is one final item you need to know about. You must place a "
+"<literal>seam.properties</literal>, <literal>META-INF/seam.properties</"
+"literal> or <literal>META-INF/components.xml</literal> file in any archive "
+"in which your Seam components are deployed (even an empty properties file "
+"will do). At startup, Seam will scan any archives with <literal>seam."
+"properties</literal> files for seam components."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:188
+#, no-c-format
+msgid ""
+"That's why all the Seam examples have an empty <literal>seam.properties</"
+"literal> file. You can't just delete this file and expect everything to "
+"still work!"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:191
+#, no-c-format
+msgid ""
+"You might think this is silly and what kind of idiot framework designers "
+"would make an empty file affect the behavior of their software?? Well, this "
+"is a workaround for a limitation of the JVM&mdash;if we didn't use this "
+"mechanism, our next best option would be to force you to list every "
+"component explicitly in <literal>components.xml</literal>, just like some "
+"other competing frameworks do! I think you'll like our way better."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:195
+#, no-c-format
+msgid "Configuring Seam in Java EE 5"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:204
+#, no-c-format
+msgid ""
+"If you're running in a Java EE 5 environment, this is all the configuration "
+"required to start using Seam!"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:207 Configuration.xml:270 Configuration.xml:318
+#: Configuration.xml:354 Configuration.xml:371
+#, no-c-format
+msgid "Packaging"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:208
+#, no-c-format
+msgid ""
+"Once you've packaged all this stuff together into an EAR, the archive "
+"structure will look something like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:211
+#, no-c-format
+msgid ""
+"my-application.ear/\n"
+"    jboss-seam.jar\n"
+"    el-api.jar\n"
+"    el-ri.jar\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"        application.xml\n"
+"    my-application.war/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"        WEB-INF/\n"
+"            web.xml\n"
+"            components.xml\n"
+"            faces-config.xml\n"
+"            lib/\n"
+"                jsf-facelets.jar\n"
+"                jboss-seam-ui.jar\n"
+"        login.jsp\n"
+"        register.jsp\n"
+"        ...\n"
+"    my-application.jar/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"            persistence.xml\n"
+"        seam.properties\n"
+"        org/\n"
+"            jboss/\n"
+"                myapplication/\n"
+"                    User.class\n"
+"                    Login.class\n"
+"                    LoginBean.class\n"
+"                    Register.class\n"
+"                    RegisterBean.class\n"
+"                    ..."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:212
+#, no-c-format
+msgid ""
+"You must include <literal>jboss-seam.jar</literal>, <literal>el-api.jar</"
+"literal> and <literal>el-ri.jar</literal> in the EAR classpath. Make sure "
+"you reference all of these jars from <literal>application.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:215
+#, no-c-format
+msgid ""
+"If you want to use jBPM or Drools, you must include the needed jars in the "
+"EAR classpath. Make sure you reference all of the jars from "
+"<literal>application.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:218
+#, no-c-format
+msgid ""
+"If you want to use facelets (our recommendation), you must include "
+"<literal>jsf-facelets.jar</literal> in the <literal>WEB-INF/lib</literal> "
+"directory of the WAR."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:221
+#, no-c-format
+msgid ""
+"If you want to use the Seam tag library (most Seam applications do), you "
+"must include <literal>jboss-seam-ui.jar</literal> in the <literal>WEB-INF/"
+"lib</literal> directory of the WAR. If you want to use the PDF or email tag "
+"libraries, you need to put <literal>jboss-seam-pdf.jar</literal> or "
+"<literal>jboss-seam-mail.jar</literal> in <literal>WEB-INF/lib</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:224
+#, no-c-format
+msgid ""
+"If you want to use the Seam debug page (only works for applications using "
+"facelets), you must include <literal>jboss-seam-debug.jar</literal> in the "
+"<literal>WEB-INF/lib</literal> directory of the WAR."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:227
+#, no-c-format
+msgid ""
+"Seam ships with several example applications that are deployable in any Java "
+"EE container that supports EJB 3.0."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:231
+#, no-c-format
+msgid "Configuring Seam in Java SE, with the JBoss Embeddable EJB3 container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:232
+#, no-c-format
+msgid ""
+"The JBoss Embeddable EJB3 container lets you run EJB3 components outside the "
+"context of the Java EE 5 application server. This is especially, but not "
+"only, useful for testing."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:235
+#, no-c-format
+msgid ""
+"The Seam booking example application includes a TestNG integration test "
+"suite that runs on the Embeddable EJB3 container."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:246
+#, no-c-format
+msgid "The booking example application may even be deployed to Tomcat."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:257
+#, no-c-format
+msgid "Installing the Embeddable EJB3 container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:258
+#, no-c-format
+msgid ""
+"Seam ships with a build of the Embeddable EJB3 container in the "
+"<literal>embedded-ejb</literal> directory. To use the Embeddable EJB3 "
+"container with Seam, add the <literal>embedded-ejb/conf</literal> directory, "
+"and all jars in the <literal>lib</literal> and <literal>embedded-ejb/lib</"
+"literal> directories to your classpath. Then, add the following line to "
+"<literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:261
+#, no-c-format
+msgid "&lt;core:ejb /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:262
+#, no-c-format
+msgid ""
+"This setting installs the built-in component named <literal>org.jboss.seam."
+"core.ejb</literal>. This component is responsible for bootstrapping the EJB "
+"container when Seam is started, and shutting it down when the web "
+"application is undeployed."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:265
+#, no-c-format
+msgid "Configuring a datasource with the Embeddable EJB3 container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:266
+#, no-c-format
+msgid ""
+"You should refer to the Embeddable EJB3 container documentation for more "
+"information about configuring the container. You'll probably at least need "
+"to set up your own datasource. Embeddable EJB3 is implemented using the "
+"JBoss Microcontainer, so it's very easy to add new services to the minimal "
+"set of services provided by default. For example, I can add a new datasource "
+"by putting this <literal>jboss-beans.xml</literal> file in my classpath:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:269
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"\n"
+"&lt;deployment xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"urn:jboss:bean-deployer bean-deployer_1_0."
+"xsd\"\n"
+"            xmlns=\"urn:jboss:bean-deployer\"&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasourceBootstrap\"\n"
+"        class=\"org.jboss.resource.adapter.jdbc.local.LocalTxDataSource"
+"\"&gt;\n"
+"      &lt;property name=\"driverClass\"&gt;org.hsqldb.jdbcDriver&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"connectionURL\"&gt;jdbc:hsqldb:.&lt;/property&gt;\n"
+"      &lt;property name=\"userName\"&gt;sa&lt;/property&gt;\n"
+"      &lt;property name=\"jndiName\"&gt;java:/bookingDatasource&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"minSize\"&gt;0&lt;/property&gt;\n"
+"      &lt;property name=\"maxSize\"&gt;10&lt;/property&gt;\n"
+"      &lt;property name=\"blockingTimeout\"&gt;1000&lt;/property&gt;\n"
+"      &lt;property name=\"idleTimeout\"&gt;100000&lt;/property&gt;\n"
+"      &lt;property name=\"transactionManager\"&gt;\n"
+"        &lt;inject bean=\"TransactionManager\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"      &lt;property name=\"cachedConnectionManager\"&gt;\n"
+"        &lt;inject bean=\"CachedConnectionManager\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"      &lt;property name=\"initialContextProperties\"&gt;\n"
+"        &lt;inject bean=\"InitialContextProperties\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasource\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getDatasource\"&gt;\n"
+"         &lt;factory bean=\"bookingDatasourceBootstrap\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"&lt;/deployment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:271
+#, no-c-format
+msgid ""
+"The archive structure of a WAR-based deployment on an servlet engine like "
+"Tomcat will look something like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:274
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            myfaces-api.jar\n"
+"            myfaces-impl.jar\n"
+"            jboss-ejb3.jar\n"
+"            jboss-jca.jar\n"
+"            jboss-j2ee.jar\n"
+"            ...\n"
+"            mc-conf.jar/\n"
+"                ejb3-interceptors-aop.xml\n"
+"                embedded-jboss-beans.xml\n"
+"                default.persistence.properties\n"
+"                jndi.properties\n"
+"                login-config.xml\n"
+"                security-beans.xml\n"
+"                log4j.xml\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                    MANIFEST.MF\n"
+"                    persistence.xml\n"
+"                    jboss-beans.xml\n"
+"                log4j.xml\n"
+"                seam.properties\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            LoginBean.class\n"
+"                            Register.class\n"
+"                            RegisterBean.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:275
+#, no-c-format
+msgid ""
+"The <literal>mc-conf.jar</literal> just contains the standard JBoss "
+"Microcontainer configuration files for Embeddable EJB3. You won't usually "
+"need to edit these files yourself."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:278
+#, no-c-format
+msgid ""
+"Most of the Seam example applications may be deployed to Tomcat by running "
+"<literal>ant deploy.tomcat</literal>."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:281
+#, no-c-format
+msgid "Configuring Seam in J2EE"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:282
+#, no-c-format
+msgid ""
+"Seam is useful even if you're not yet ready to take the plunge into EJB 3.0. "
+"In this case you would use Hibernate3 or JPA instead of EJB 3.0 persistence, "
+"and plain JavaBeans instead of session beans. You'll miss out on some of the "
+"nice features of session beans but it will be very easy to migrate to EJB "
+"3.0 when you're ready and, in the meantime, you'll be able to take advantage "
+"of Seam's unique declarative state management architecture."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:293
+#, no-c-format
+msgid ""
+"Seam JavaBean components do not provide declarative transaction demarcation "
+"like session beans do. You <emphasis>could</emphasis> manage your "
+"transactions manually using the JTA <literal>UserTransaction</literal> (you "
+"could even implement your own declarative transaction management in a Seam "
+"interceptor). But most applications will use Seam managed transactions when "
+"using Hibernate with JavaBeans. Follow the instructions in the persistence "
+"chapter to install <literal>TransactionalSeamPhaseListener</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:296
+#, no-c-format
+msgid ""
+"The Seam distribution includes a version of the booking example application "
+"that uses Hibernate3 and JavaBeans instead of EJB3, and another version that "
+"uses JPA and JavaBeans. These example applications are ready to deploy into "
+"any J2EE application server."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:299
+#, no-c-format
+msgid ""
+"If we want to deploy Hibernate in a non-J2EE environment like Tomcat or "
+"TestNG, we need to do a little bit more work."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:302
+#, no-c-format
+msgid "Boostrapping Hibernate in Seam"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:303
+#, no-c-format
+msgid ""
+"Seam will bootstrap a Hibernate <literal>SessionFactory</literal> from your "
+"<literal>hibernate.cfg.xml</literal> file if you install a built-in "
+"component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:306
+#, no-c-format
+msgid ""
+"&lt;core:hibernate-session-factory name=\"hibernateSessionFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:307
+#, no-c-format
+msgid ""
+"You will also need to configure a <emphasis>managed session</emphasis> if "
+"you want a Seam managed Hibernate <literal>Session</literal> to be available "
+"via injection."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:310
+#, no-c-format
+msgid "Boostrapping JPA in Seam"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:311
+#, no-c-format
+msgid ""
+"Seam will bootstrap a JPA <literal>EntityManagerFactory</literal> from your "
+"<literal>persistence.xml</literal> file if you install this built-in "
+"component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:314
+#, no-c-format
+msgid "&lt;core:entity-manager-factory name=\"entityManagerFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:315
+#, no-c-format
+msgid ""
+"You will also need to configure a <emphasis>managed persistencece context</"
+"emphasis> if you want a Seam managed JPA <literal>EntityManager</literal> to "
+"be available via injection."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:319
+#, no-c-format
+msgid "We can package our application as a WAR, in the following structure:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:322
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            hibernate3.jar\n"
+"            hibernate-annotations.jar\n"
+"            ...\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                   MANIFEST.MF\n"
+"                seam.properties\n"
+"                hibernate.cfg.xml\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            Register.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:324
+#, no-c-format
+msgid "Configuring Seam in Java SE, with the JBoss Microcontainer"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:325
+#, no-c-format
+msgid ""
+"The Seam support for Hibernate and JPA requires JTA and a JCA datasource. If "
+"you are running in a non-EE environment like Tomcat or TestNG you can run "
+"these services, and Hibernate itself, in the JBoss Microcontainer."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:328
+#, no-c-format
+msgid ""
+"You can even deploy the Hibernate and JPA versions of the booking example in "
+"Tomcat."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:339
+#, no-c-format
+msgid ""
+"Seam ships with an example Microcontainer configuration in "
+"<literal>microcontainer/conf/jboss-beans.xml</literal> that provides all the "
+"things you need to run Seam with Hibernate in any non-EE environment. Just "
+"add the <literal>microcontainer/conf</literal> directory, and all jars in "
+"the <literal>lib</literal> and <literal>microcontainer/lib</literal> "
+"directories to your classpath. Refer to the documentation for the JBoss "
+"Microcontainer for more information."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:342
+#, no-c-format
+msgid "Using Hibernate and the JBoss Microcontainer"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:343
+#, no-c-format
+msgid ""
+"The built-in Seam component named <literal>org.jboss.seam.core."
+"microcontainer</literal> bootstraps the microcontainer. As before, we "
+"probably want to use a Seam managed session."
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:346
+#, no-c-format
+msgid ""
+"&lt;core:microcontainer/&gt;\n"
+"\n"
+"&lt;core:managed-hibernate-session name=\"bookingDatabase\" auto-create="
+"\"true\"\n"
+"    session-factory-jndi-name=\"java:/bookingSessionFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:347
+#, no-c-format
+msgid ""
+"Where <literal>java:/bookingSessionFactory</literal> is the name of the "
+"Hibernate session factory specified in <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:350
+#, no-c-format
+msgid ""
+"You'll need to provide a <literal>jboss.beans.xml</literal> file that "
+"installs JNDI, JTA, your JCA datasource and Hibernate into the "
+"microcontainer:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:353
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"\n"
+"&lt;deployment xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"urn:jboss:bean-deployer bean-deployer_1_0."
+"xsd\"\n"
+"            xmlns=\"urn:jboss:bean-deployer\"&gt;\n"
+"\n"
+"   &lt;bean name=\"Naming\" class=\"org.jnp.server.SingletonNamingServer\"/"
+"&gt;\n"
+"\n"
+"   &lt;bean name=\"TransactionManagerFactory\"\n"
+"       class=\"org.jboss.seam.microcontainer.TransactionManagerFactory\"/"
+"&gt;\n"
+"   &lt;bean name=\"TransactionManager\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getTransactionManager\"&gt;\n"
+"         &lt;factory bean=\"TransactionManagerFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasourceFactory\" class=\"org.jboss.seam."
+"microcontainer.DataSourceFactory\"&gt;\n"
+"      &lt;property name=\"driverClass\"&gt;org.hsqldb.jdbcDriver&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"connectionUrl\"&gt;jdbc:hsqldb:.&lt;/property&gt;\n"
+"      &lt;property name=\"userName\"&gt;sa&lt;/property&gt;\n"
+"      &lt;property name=\"jndiName\"&gt;java:/hibernateDatasource&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"minSize\"&gt;0&lt;/property&gt;\n"
+"      &lt;property name=\"maxSize\"&gt;10&lt;/property&gt;\n"
+"      &lt;property name=\"blockingTimeout\"&gt;1000&lt;/property&gt;\n"
+"      &lt;property name=\"idleTimeout\"&gt;100000&lt;/property&gt;\n"
+"      &lt;property name=\"transactionManager\"&gt;&lt;inject bean="
+"\"TransactionManager\"/&gt;&lt;/property&gt;\n"
+"   &lt;/bean&gt;\n"
+"   &lt;bean name=\"bookingDatasource\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getDataSource\"&gt;\n"
+"         &lt;factory bean=\"bookingDatasourceFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingSessionFactoryFactory\"\n"
+"       class=\"org.jboss.seam.microcontainer.HibernateFactory\"/&gt;\n"
+"   &lt;bean name=\"bookingSessionFactory\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getSessionFactory\"&gt;\n"
+"         &lt;factory bean=\"bookingSessionFactoryFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"      &lt;depends&gt;bookingDatasource&lt;/depends&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"&lt;/deployment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:355
+#, no-c-format
+msgid "The WAR could have the following structure:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:358
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            hibernate3.jar\n"
+"            ...\n"
+"            jboss-microcontainer.jar\n"
+"            jboss-jca.jar\n"
+"            ...\n"
+"            myfaces-api.jar\n"
+"            myfaces-impl.jar\n"
+"            mc-conf.jar/\n"
+"                jndi.properties\n"
+"                log4j.xml\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                    MANIFEST.MF\n"
+"                    jboss-beans.xml\n"
+"                seam.properties\n"
+"                hibernate.cfg.xml\n"
+"                log4j.xml\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            Register.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:359
+#, no-c-format
+msgid "Configuring jBPM in Seam"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:360
+#, no-c-format
+msgid ""
+"Seam's jBPM integration is not installed by default, so you'll need to "
+"enable jBPM by installing a built-in component. You'll also need to "
+"explicitly list your process and pageflow definitions. In "
+"<literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:363
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:pageflow-definitions&gt;\n"
+"        &lt;value&gt;createDocument.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;editDocument.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;approveDocument.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:pageflow-definitions&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;documentLifecycle.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:364
+#, no-c-format
+msgid ""
+"No further special configuration is needed if you only have pageflows. If "
+"you do have business process definitions, you need to provide a jBPM "
+"configuration, and a Hibernate configuration for jBPM. The Seam DVD Store "
+"demo includes example <literal>jbpm.cfg.xml</literal> and <literal>hibernate."
+"cfg.xml</literal> files that will work with Seam:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:367
+#, no-c-format
+msgid ""
+"&lt;jbpm-configuration&gt;\n"
+"\n"
+"  &lt;jbpm-context&gt;\n"
+"    &lt;service name=\"persistence\"&gt;\n"
+"       &lt;factory&gt;\n"
+"          &lt;bean class=\"org.jbpm.persistence.db."
+"DbPersistenceServiceFactory\"&gt;\n"
+"             &lt;field name=\"isTransactionEnabled\"&gt;&lt;false/&gt;&lt;/"
+"field&gt;\n"
+"          &lt;/bean&gt;\n"
+"       &lt;/factory&gt;\n"
+"    &lt;/service&gt;\n"
+"    &lt;service name=\"message\" factory=\"org.jbpm.msg.db."
+"DbMessageServiceFactory\" /&gt;\n"
+"    &lt;service name=\"scheduler\" factory=\"org.jbpm.scheduler.db."
+"DbSchedulerServiceFactory\" /&gt;\n"
+"    &lt;service name=\"logging\" factory=\"org.jbpm.logging.db."
+"DbLoggingServiceFactory\" /&gt;\n"
+"    &lt;service name=\"authentication\" \n"
+"        factory=\"org.jbpm.security.authentication."
+"DefaultAuthenticationServiceFactory\" /&gt;\n"
+"  &lt;/jbpm-context&gt;\n"
+"\n"
+"&lt;/jbpm-configuration&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:368
+#, no-c-format
+msgid ""
+"The most important thing to notice here is that jBPM transaction control is "
+"disabled. Seam or EJB3 should control the JTA transactions."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:372
+#, no-c-format
+msgid ""
+"There is not yet any well-defined packaging format for jBPM configuration "
+"and process/pageflow definition files. In the Seam examples we've decided to "
+"simply package all these files into the root of the EAR. In future, we will "
+"probably design some other standard packaging format. So the EAR looks "
+"something like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:375
+#, no-c-format
+msgid ""
+"my-application.ear/\n"
+"    jboss-seam.jar\n"
+"    el-api.jar\n"
+"    el-ri.jar\n"
+"    jbpm-3.1.jar\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"        application.xml\n"
+"    my-application.war/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"        WEB-INF/\n"
+"            web.xml\n"
+"            components.xml\n"
+"            faces-config.xml\n"
+"            lib/\n"
+"                jsf-facelets.jar\n"
+"                jboss-seam-ui.jar\n"
+"        login.jsp\n"
+"        register.jsp\n"
+"        ...\n"
+"    my-application.jar/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"            persistence.xml\n"
+"        seam.properties\n"
+"        org/\n"
+"            jboss/\n"
+"                myapplication/\n"
+"                    User.class\n"
+"                    Login.class\n"
+"                    LoginBean.class\n"
+"                    Register.class\n"
+"                    RegisterBean.class\n"
+"                    ...\n"
+"    jbpm.cfg.xml\n"
+"    hibernate.cfg.xml\n"
+"    createDocument.jpdl.xml\n"
+"    editDocument.jpdl.xml\n"
+"    approveDocument.jpdl.xml\n"
+"    documentLifecycle.jpdl.xml"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:376
+#, no-c-format
+msgid ""
+"Remember to add <literal>jbpm-3.1.jar</literal> to the manifest of your EJB-"
+"JAR and WAR."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:379
+#, no-c-format
+msgid "Configuring Seam in a Portal"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:380
+#, no-c-format
+msgid ""
+"To run a Seam application as a portlet, you'll need to provide certain "
+"portlet metadata (<literal>portlet.xml</literal>, etc) in addition to the "
+"usual Java EE metadata. See the <literal>examples/portal</literal> directory "
+"for an example of the booking demo preconfigured to run on JBoss Portal."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:383
+#, no-c-format
+msgid ""
+"In addition, you'll need to use a portlet-specific phase listener instead of "
+"<literal>SeamPhaseListener</literal> or "
+"<literal>TransactionalSeamPhaseListener</literal>. The "
+"<literal>SeamPortletPhaseListener</literal> and "
+"<literal>TransactionalSeamPortletPhaseListener</literal> are adapted to the "
+"portlet lifecycle. I would like to offer my sincerest apologies for the name "
+"of that last class. I really couldn't think of anything better. Sorry."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Controls.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Controls.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Controls.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,591 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Controls.xml:10
+#, no-c-format
+msgid "Seam JSF controls"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:11
+#, no-c-format
+msgid ""
+"Seam includes a number of JSF controls that are useful for working with "
+"Seam. These are intended to complement the built-in JSF controls, and "
+"controls from other third-party libraries. We recommend the Ajax4JSF and ADF "
+"faces (now Trinidad) tag libraries for use with Seam. We do not recommend "
+"the use of the Tomahawk tag library."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:14
+#, no-c-format
+msgid "The ui example demonstrates the use of a number of these tags."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:19
+#, no-c-format
+msgid "&lt;s:validate&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:21
+#, no-c-format
+msgid ""
+"Validate a JSF input field against the bound property using Hibernate "
+"Validator."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:27
+#, no-c-format
+msgid "&lt;s:validateAll&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:29
+#, no-c-format
+msgid ""
+"Validate all child JSF input fields against the bound propertys using "
+"Hibernate Validator."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:35
+#, no-c-format
+msgid "&lt;s:formattedText&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:37
+#, no-c-format
+msgid "Output <emphasis>Seam Text</emphasis>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:43
+#, no-c-format
+msgid "&lt;s:convertDateTime&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:45
+#, no-c-format
+msgid "Perform date or time conversions in the Seam timezone."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:51
+#, no-c-format
+msgid "&lt;s:convertEnum&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:53
+#, no-c-format
+msgid ""
+"Assigns an enum converter to the current component. This is primarily useful "
+"for radio button and dropdown controls."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:59
+#, no-c-format
+msgid "&lt;s:enumItem&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:61
+#, no-c-format
+msgid "Creates a <literal>SelectItem</literal> from an enum value."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:66
+#, no-c-format
+msgid ""
+"<literal>enumValue</literal> &mdash; the string representation of the enum "
+"value."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:71
+#, no-c-format
+msgid ""
+"<literal>label</literal> &mdash; the label to be used when rendering the "
+"<literal>SelectItem</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:79
+#, no-c-format
+msgid "&lt;s:selectItems&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:81
+#, no-c-format
+msgid ""
+"Creates a <literal>List&lt;SelectItem&gt;</literal> from a List, Set, "
+"DataModel or Array."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:86
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; an EL expression specifying the data that "
+"backs the <literal>List&lt;SelectItem&gt;</literal>"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:91
+#, no-c-format
+msgid ""
+"<literal>var</literal> &mdash; defines the name of the local variable that "
+"holds the current object during iteration"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:96
+#, no-c-format
+msgid ""
+"<literal>label</literal> &mdash; the label to be used when rendering the "
+"<literal>SelectItem</literal>. Can reference the <literal>var</literal> "
+"variable"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:101
+#, no-c-format
+msgid ""
+"<literal>disabled</literal> &mdash; if true the <literal>SelectItem</"
+"literal> will be rendered disabled. Can reference the <literal>var</literal> "
+"variable"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:106
+#, no-c-format
+msgid ""
+"<literal>noSelectionLabel</literal> &mdash; specifies the (optional) label "
+"to place at the top of list (if <literal>required=\"true\"</literal> is also "
+"specified then selecting this value will cause a validation error)"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:111
+#, no-c-format
+msgid ""
+"<literal>hideNoSelectionLabel</literal> &mdash; if true, the "
+"<literal>noSelectionLabel</literal> will be hidden when a value is selected"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:119
+#, no-c-format
+msgid "&lt;s:decorate&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:121
+#, no-c-format
+msgid "\"Decorate\" a JSF input field when validation fails."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:127
+#, no-c-format
+msgid "&lt;s:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:129
+#, no-c-format
+msgid "\"Decorate\" a JSF input field with the validation error message."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:135
+#, no-c-format
+msgid "&lt;s:span&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:137
+#, no-c-format
+msgid "Render a HTML <literal>&lt;span&gt;</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:143
+#, no-c-format
+msgid "&lt;s:div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:145
+#, no-c-format
+msgid "Render a HTML <literal>&lt;div&gt;</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:151
+#, no-c-format
+msgid "&lt;s:fragment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:153
+#, no-c-format
+msgid ""
+"A non-rendering component useful for enabling/disabling rendering of it's "
+"children"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:159
+#, no-c-format
+msgid "&lt;s:cache&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:161
+#, no-c-format
+msgid ""
+"Cache the rendered page fragment using JBoss Cache. Note that <literal>&lt;s:"
+"cache&gt;</literal> actually uses the instance of JBoss Cache managed by the "
+"built-in <literal>pojoCache</literal> component."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:166
+#, no-c-format
+msgid ""
+"<literal>key</literal> &mdash; the key to cache rendered content, often a "
+"value expression. For example, if we were caching a page fragment that "
+"displays a document, we might use <literal>key=\"Document-#{document.id}\"</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:171
+#, no-c-format
+msgid ""
+"<literal>enabled</literal> &mdash; a value expression that determines if the "
+"cache should be used."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:176
+#, no-c-format
+msgid ""
+"<literal>region</literal> &mdash; a JBoss Cache node to use (different nodes "
+"can have different expiry policies)."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:184
+#, no-c-format
+msgid "&lt;s:link&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:186
+#, no-c-format
+msgid ""
+"A link that supports invocation of an action with control over conversation "
+"propagation. <emphasis>Does not submit the form.</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:191 Controls.xml:236
+#, no-c-format
+msgid "<literal>value</literal> &mdash; the label."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:196 Controls.xml:241
+#, no-c-format
+msgid ""
+"<literal>action</literal> &mdash; a method binding that specified the action "
+"listener."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:201 Controls.xml:246
+#, no-c-format
+msgid "<literal>view</literal> &mdash; the JSF view id to link to."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:206 Controls.xml:251
+#, no-c-format
+msgid "<literal>fragment</literal> &mdash; the fragment identifier to link to."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:211 Controls.xml:256
+#, no-c-format
+msgid "<literal>disabled</literal> &mdash; is the link disabled?"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:216 Controls.xml:261 Controls.xml:301
+#, no-c-format
+msgid ""
+"<literal>propagation</literal> &mdash; determines the conversation "
+"propagation style: <literal>begin</literal>, <literal>join</literal>, "
+"<literal>nest</literal>, <literal>none</literal> or <literal>end</literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:221 Controls.xml:266 Controls.xml:306
+#, no-c-format
+msgid ""
+"<literal>pageflow</literal> &mdash; a pageflow definition to begin. (This is "
+"only useful when <literal>propagation=\"begin\"</literal> or "
+"<literal>propagation=\"join\"</literal>.)"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:229
+#, no-c-format
+msgid "&lt;s:button&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:231
+#, no-c-format
+msgid ""
+"A button that supports invocation of an action with control over "
+"conversation propagation. <emphasis>Does not submit the form.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:274
+#, no-c-format
+msgid "&lt;s:selectDate&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:276
+#, no-c-format
+msgid ""
+"Displays a dynamic date picker component that selects a date for the "
+"specified input field. The body of the <literal>selectDate</literal> element "
+"should contain HTML elements, such as text or an image, that prompt the user "
+"to click to display the date picker. The date picker can be styled using "
+"CSS. An example CSS file can be found in the Seam booking demo as "
+"<literal>date.css</literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:281
+#, no-c-format
+msgid ""
+"<literal>for</literal> &mdash; The id of the input field that the date "
+"picker will insert the selected date into."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:286
+#, no-c-format
+msgid ""
+"<literal>dateFormat</literal> &mdash; The date format string. This should "
+"match the date format of the input field."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:294
+#, no-c-format
+msgid "&lt;s:conversationPropagation&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:296
+#, no-c-format
+msgid ""
+"Customize the conversation propagation for a command link or button (or "
+"similar JSF control). <emphasis>Facelets only.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:314
+#, no-c-format
+msgid "&lt;s:conversationId&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:316
+#, no-c-format
+msgid ""
+"Add the conversation id to an output link (or similar JSF control). "
+"<emphasis>Facelets only.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:322
+#, no-c-format
+msgid "&lt;s:taskId&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:324
+#, no-c-format
+msgid ""
+"Add the task id to an output link (or similar JSF control), when the task is "
+"available via <literal>#{task}</literal>. <emphasis>Facelets only.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:330
+#, no-c-format
+msgid "&lt;s:fileUpload&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:332
+#, no-c-format
+msgid ""
+"Renders a file upload control. This control must be used within a form with "
+"an encoding type of <literal>multipart/form-data</literal>, i.e:"
+msgstr ""
+
+#. Tag: programlisting
+#: Controls.xml:335
+#, no-c-format
+msgid "&lt;h:form enctype=\"multipart/form-data\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:336
+#, no-c-format
+msgid ""
+"For multipart requests, the Seam Multipart servlet filter must also be "
+"configured in <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Controls.xml:339
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"      &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"      &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-"
+"class&gt;\n"
+"    &lt;/filter&gt;\n"
+"    \n"
+"    &lt;filter-mapping&gt;\n"
+"      &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"      &lt;url-pattern&gt;/*&lt;/url-pattern&gt;\n"
+"    &lt;/filter-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:340
+#, no-c-format
+msgid ""
+"The following configuration options for multipart requests may be configured "
+"in components.xml:"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:345
+#, no-c-format
+msgid ""
+"<literal>createTempFiles</literal> &mdash; if this option is set to true, "
+"uploaded files are streamed to a temporary file instead of in memory."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:350
+#, no-c-format
+msgid ""
+"<literal>maxRequestSize</literal> &mdash; the maximum size of a file upload "
+"request, in bytes."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:355
+#, no-c-format
+msgid "Here's an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Controls.xml:358
+#, no-c-format
+msgid ""
+"&lt;component class=\"org.jboss.seam.servlet.MultipartConfig\"&gt;\n"
+"        &lt;property name=\"createTempFiles\"&gt;true&lt;/property&gt;\n"
+"        &lt;property name=\"maxRequestSize\"&gt;1000000&lt;/property&gt;\n"
+"    &lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:359
+#, no-c-format
+msgid ""
+"And here's a list of the supported attributes for the <literal>fileUpload</"
+"literal> control:"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:364
+#, no-c-format
+msgid ""
+"<literal>data</literal> &mdash; this value binding receives the binary file "
+"data. The receiving field should be declared as a <literal>byte[]</literal> "
+"or <literal>InputStream</literal> (required)."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:369
+#, no-c-format
+msgid ""
+"<literal>contentType</literal> &mdash; this value binding receives the "
+"file's content type (optional)."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:374
+#, no-c-format
+msgid ""
+"<literal>fileName</literal> &mdash; this value binding receives the filename "
+"(optional)."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:379
+#, no-c-format
+msgid ""
+"<literal>accept</literal> &mdash; a comma-separated list of content types to "
+"accept, may not be supported by the browser. E.g. <literal>\"images/png,"
+"images/jpg\"</literal>, <literal>\"images/*\"</literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:384
+#, no-c-format
+msgid "<literal>style</literal> &mdash; The control's style"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:389
+#, no-c-format
+msgid "<literal>styleClass</literal> &mdash; The control's style class"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Conversations.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Conversations.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Conversations.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1248 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Conversations.xml:10
+#, no-c-format
+msgid "Conversations and workspace management"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:11
+#, no-c-format
+msgid "It's time to understand Seam's conversation model in more detail."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:14
+#, no-c-format
+msgid ""
+"Historically, the notion of a Seam \"conversation\" came about as a merger "
+"of three different ideas:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:19
+#, no-c-format
+msgid ""
+"The idea of a <emphasis>workspace</emphasis>, which I encountered in a "
+"project for the Victorian government in 2002. In this project I was forced "
+"to implement workspace management on top of Struts, an experience I pray "
+"never to repeat."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:24
+#, no-c-format
+msgid ""
+"The idea of an <emphasis>application transaction</emphasis> with optimistic "
+"semantics, and the realization that existing frameworks based around a "
+"stateless architecture could not provide effective management of extended "
+"persistence contexts. (The Hibernate team is truly fed up with copping the "
+"blame for <literal>LazyInitializationException</literal>s, which are not "
+"really Hibernate's fault, but rather the fault of the extremely limiting "
+"persistence context model supported by stateless architectures such as the "
+"Spring framework or the traditional <emphasis>stateless session facade</"
+"emphasis> (anti)pattern in J2EE.)"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:29
+#, no-c-format
+msgid "The idea of a workflow <emphasis>task</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:34
+#, no-c-format
+msgid ""
+"By unifying these ideas and providing deep support in the framework, we have "
+"a powerful construct that lets us build richer and more efficient "
+"applications with less code than before."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:38
+#, no-c-format
+msgid "Seam's conversation model"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:39
+#, no-c-format
+msgid ""
+"The examples we have seen so far make use of a very simple conversation "
+"model that follows these rules:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:44
+#, no-c-format
+msgid ""
+"There is always a conversation context active during the apply request "
+"values, process validations, update model values, invoke application and "
+"render response phases of the JSF request lifecycle."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:49
+#, no-c-format
+msgid ""
+"At the end of the restore view phase of the JSF request lifecycle, Seam "
+"attempts to restore any previous long-running conversation context. If none "
+"exists, Seam creates a new temporary conversation context."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:54
+#, no-c-format
+msgid ""
+"When an <literal>@Begin</literal> method is encountered, the temporary "
+"conversation context is promoted to a long running conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:59
+#, no-c-format
+msgid ""
+"When an <literal>@End</literal> method is encountered, any long-running "
+"conversation context is demoted to a temporary conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:64
+#, no-c-format
+msgid ""
+"At the end of the render response phase of the JSF request lifecycle, Seam "
+"stores the contents of a long running conversation context or destroys the "
+"contents of a temporary conversation context."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:69
+#, no-c-format
+msgid ""
+"Any faces request (a JSF postback) will propagate the conversation context. "
+"By default, non-faces requests (GET requests, for example) do not propagate "
+"the conversation context, but see below for more information on this."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:74
+#, no-c-format
+msgid ""
+"If the JSF request lifecycle is foreshortened by a redirect, Seam "
+"transparently stores and restores the current conversation context&mdash;"
+"unless the conversation was already ended via <literal>@End"
+"(beforeRedirect=true)</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:79
+#, no-c-format
+msgid ""
+"Seam transparently propagates the conversation context across JSF postbacks "
+"and redirects. If you don't do anything special, a <emphasis>non-faces "
+"request</emphasis> (a GET request for example) will not propagate the "
+"conversation context and will be processed in a new temporary conversation. "
+"This is usually - but not always - the desired behavior."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:82
+#, no-c-format
+msgid ""
+"If you want to propagate a Seam conversation across a non-faces request, you "
+"need to explicitly code the Seam <emphasis>conversation id</emphasis> as a "
+"request parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:85
+#, no-c-format
+msgid ""
+"&lt;a href=\"main.jsf?conversationId=#{conversation.id}\"&gt;Continue&lt;/"
+"a&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:86
+#, no-c-format
+msgid "Or, the more JSF-ish:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:89
+#, no-c-format
+msgid ""
+"&lt;h:outputLink value=\"main.jsf\"&gt;\n"
+"    &lt;f:param name=\"conversationId\" value=\"#{conversation.id}\"/&gt;\n"
+"    &lt;h:outputText value=\"Continue\"/&gt;\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:90 Conversations.xml:98
+#, no-c-format
+msgid "If you use the Seam tag library, this is equivalent:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:93
+#, no-c-format
+msgid ""
+"&lt;h:outputLink value=\"main.jsf\"&gt;\n"
+"    &lt;s:conversationId/&gt;\n"
+"    &lt;h:outputText value=\"Continue\"/&gt;\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:94
+#, no-c-format
+msgid ""
+"If you wish to disable propagation of the conversation context for a "
+"postback, a similar trick is used:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:97
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;f:param name=\"conversationPropagation\" value=\"none\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:101
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"none\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:102
+#, no-c-format
+msgid ""
+"Note that disabling conversation context propagation is absolutely not the "
+"same thing as ending the conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:105
+#, no-c-format
+msgid ""
+"The <literal>conversationPropagation</literal> request parameter, or the "
+"<literal>&lt;s:conversationPropagation&gt;</literal> tag may even be used to "
+"begin and end conversation, or begin a nested conversation."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:108
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"end\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:109
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Child\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"nested\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:110
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Hotel\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"begin\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:111
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Hotel\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"join\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:112
+#, no-c-format
+msgid ""
+"This conversation model makes it easy to build applications which behave "
+"correctly with respect to multi-window operation. For many applications, "
+"this is all that is needed. Some complex applications have either or both of "
+"the following additional requirements:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:117
+#, no-c-format
+msgid ""
+"A conversation spans many smaller units of user interaction, which execute "
+"serially or even concurrently. The smaller <emphasis>nested conversations</"
+"emphasis> have their own isolated set of conversation state, and also have "
+"access to the state of the outer conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:122
+#, no-c-format
+msgid ""
+"The user is able to switch between many conversations within the same "
+"browser window. This feature is called <emphasis>workspace management</"
+"emphasis>."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:130
+#, no-c-format
+msgid "Nested conversations"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:131
+#, no-c-format
+msgid ""
+"A nested conversation is created by invoking a method marked <literal>@Begin"
+"(nested=true)</literal> inside the scope of an existing conversation. A "
+"nested conversation has its own conversation context, and also has read-only "
+"access to the context of the outer conversation. (It can read the outer "
+"conversation's context variables, but not write to them.) When an "
+"<literal>@End</literal> is subsequently encountered, the nested conversation "
+"will be destroyed, and the outer conversation will resume, by \"popping\" "
+"the conversation stack. Conversations may be nested to any arbitrary depth."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:134
+#, no-c-format
+msgid ""
+"Certain user activity (workspace management, or the back button) can cause "
+"the outer conversation to be resumed before the inner conversation is ended. "
+"In this case it is possible to have multiple concurrent nested conversations "
+"belonging to the same outer conversation. If the outer conversation ends "
+"before a nested conversation ends, Seam destroys all nested conversation "
+"contexts along with the outer context."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:137
+#, no-c-format
+msgid ""
+"A conversation may be thought of as a <emphasis>continuable state</"
+"emphasis>. Nested conversations allow the application to capture a "
+"consistent continuable state at various points in a user interaction, thus "
+"insuring truly correct behavior in the face of backbuttoning and workspace "
+"management."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:140
+#, no-c-format
+msgid ""
+"TODO: an example to show how a nested conversation prevents bad stuff "
+"happening when you backbutton."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:143
+#, no-c-format
+msgid ""
+"Usually, if a component exists in a parent conversation of the current "
+"nested conversation, the nested conversation will use the same instance. "
+"Occasionally, it is useful to have a different instance in each nested "
+"conversation, so that the component instance that exists in the parent "
+"conversation is invisible to its child conversations. You can achieve this "
+"behavior by annotating the component <literal>@PerNestedConversation</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:149
+#, no-c-format
+msgid "Starting conversations with GET requests"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:150
+#, no-c-format
+msgid ""
+"JSF does not define any kind of action listener that is triggered when a "
+"page is accessed via a non-faces request (for example, a HTTP GET request). "
+"This can occur if the user bookmarks the page, or if we navigate to the page "
+"via an <literal>&lt;h:outputLink&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:153
+#, no-c-format
+msgid ""
+"Sometimes we want to begin a conversation immediately the page is accessed. "
+"Since there is no JSF action method, we can't solve the problem in the usual "
+"way, by annotating the action with <literal>@Begin</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:156
+#, no-c-format
+msgid ""
+"A further problem arises if the page needs some state to be fetched into a "
+"context variable. We've already seen two ways to solve this problem. If that "
+"state is held in a Seam component, we can fetch the state in a "
+"<literal>@Create</literal> method. If not, we can define a "
+"<literal>@Factory</literal> method for the context variable."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:159
+#, no-c-format
+msgid ""
+"If none of these options works for you, Seam lets you define a "
+"<emphasis>page action</emphasis> in the <literal>pages.xml</literal> file."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:162
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\" action=\"#{messageManager.list}\"/"
+"&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:163
+#, no-c-format
+msgid ""
+"This action method is called at the beginning of the render response phase, "
+"any time the page is about to be rendered. If a page action returns a non-"
+"null outcome, Seam will process any appropriate JSF and Seam navigation "
+"rules, possibly resulting in a completely different page being rendered."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:166
+#, no-c-format
+msgid ""
+"If <emphasis>all</emphasis> you want to do before rendering the page is "
+"begin a conversation, you could use a built-in action method that does just "
+"that:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:169
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\" action=\"#{conversation.begin}\"/"
+"&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:170
+#, no-c-format
+msgid ""
+"Note that you can also call this built-in action from a JSF control, and, "
+"similarly, you can use <literal>#{conversation.end}</literal> to end "
+"conversations."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:173
+#, no-c-format
+msgid ""
+"If you want more control, to join existing conversations or begin a nested "
+"conversion, to begin a pageflow or an atomic conversation, you should use "
+"the <literal>&lt;begin-conversation&gt;</literal> element."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:176
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\"&gt;\n"
+"       &lt;begin-conversation nested=\"true\" pageflow=\"AddItem\"/&gt;\n"
+"    &lt;page&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:177
+#, no-c-format
+msgid "There is also an <literal>&lt;end-conversation&gt;</literal> element."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:180
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/home.jsp\"&gt;\n"
+"       &lt;end-conversation/&gt;\n"
+"    &lt;page&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:181
+#, no-c-format
+msgid "To solve the first problem, we now have five options:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:186
+#, no-c-format
+msgid ""
+"Annotate the <literal>@Create</literal> method with <literal>@Begin</literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:191
+#, no-c-format
+msgid ""
+"Annotate the <literal>@Factory</literal> method with <literal>@Begin</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:196
+#, no-c-format
+msgid "Annotate the Seam page action method with <literal>@Begin</literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:201
+#, no-c-format
+msgid ""
+"Use <literal>&lt;begin-conversation&gt;</literal> in <literal>pages.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:206
+#, no-c-format
+msgid ""
+"Use <literal>#{conversation.begin}</literal> as the Seam page action method"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:214
+#, no-c-format
+msgid ""
+"Using <literal>&lt;s:link&gt;</literal> and <literal>&lt;s:button&gt;</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:215
+#, no-c-format
+msgid ""
+"JSF command links always perform a form submission via JavaScript, which "
+"breaks the web browser's \"open in new window\" or \"open in new tab\" "
+"feature. In plain JSF, you need to use an <literal>&lt;h:outputLink&gt;</"
+"literal> if you need this functionality. But there are two major limitations "
+"to <literal>&lt;h:outputLink&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:220
+#, no-c-format
+msgid ""
+"JSF provides no way to attach an action listener to an <literal>&lt;h:"
+"outputLink&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:225
+#, no-c-format
+msgid ""
+"JSF does not propagate the selected row of a <literal>DataModel</literal> "
+"since there is no actual form submission."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:230
+#, no-c-format
+msgid ""
+"Seam provides the notion of a <emphasis>page action</emphasis> to help solve "
+"the first problem, but this does nothing to help us with the second problem. "
+"We <emphasis>could</emphasis> work around this by using the RESTful approach "
+"of passing a request parameter and requerying for the selected object on the "
+"server side. In some cases&mdash;such as the Seam blog example "
+"application&mdash;this is indeed the best approach. The RESTful style "
+"supports bookmarking, since it does not require server-side state. In other "
+"cases, where we don't care about bookmarks, the use of <literal>@DataModel</"
+"literal> and <literal>@DataModelSelection</literal> is just so convenient "
+"and transparent!"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:233
+#, no-c-format
+msgid ""
+"To fill in this missing functionality, and to make conversation propagation "
+"even simpler to manage, Seam provides the <literal>&lt;s:link&gt;</literal> "
+"JSF tag."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:236
+#, no-c-format
+msgid "The link may specify just the JSF view id:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:239
+#, no-c-format
+msgid ""
+"&lt;s:link view=&#8220;/login.xhtml&#8221; value=&#8220;Login&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:240
+#, no-c-format
+msgid ""
+"Or, it may specify an action method (in which case the action outcome "
+"determines the page that results):"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:243
+#, no-c-format
+msgid ""
+"&lt;s:link action=&#8220;#{login.logout}&#8221; value=&#8220;Logout&#8221;/"
+"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:244
+#, no-c-format
+msgid ""
+"If you specify <emphasis>both</emphasis> a JSF view id and an action method, "
+"the 'view' will be used <emphasis>unless</emphasis> the action method "
+"returns a non-null outcome:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:247
+#, no-c-format
+msgid ""
+"&lt;s:link view=\"/loggedOut.xhtml\"  action=&#8220;#{login.logout}&#8221; "
+"value=&#8220;Logout&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:248
+#, no-c-format
+msgid ""
+"The link automatically propagates the selected row of a <literal>DataModel</"
+"literal> using inside <literal>&lt;h:dataTable&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:251
+#, no-c-format
+msgid ""
+"&lt;s:link view=&#8220;/hotel.xhtml&#8221; action=&#8220;#{hotelSearch."
+"selectHotel}&#8221; value=&#8220;#{hotel.name}&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:252
+#, no-c-format
+msgid "You can leave the scope of an existing conversation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:255
+#, no-c-format
+msgid ""
+"&lt;s:link view=&#8220;/main.xhtml&#8221; propagation=&#8220;none&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:256
+#, no-c-format
+msgid "You can begin, end, or nest conversations:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:259
+#, no-c-format
+msgid ""
+"&lt;s:link action=&#8220;#{issueEditor.viewComment}&#8221; "
+"propagation=&#8220;nest&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:260
+#, no-c-format
+msgid ""
+"If the link begins a conversation, you can even specify a pageflow to be "
+"used:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:263
+#, no-c-format
+msgid ""
+"&lt;s:link action=&#8220;#{documentEditor.getDocument}&#8221; "
+"propagation=&#8220;begin&#8221; \n"
+"        pageflow=&#8220;EditDocument&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:264
+#, no-c-format
+msgid ""
+"The <literal>taskInstance</literal> attribute if for use in jBPM task lists:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:267
+#, no-c-format
+msgid ""
+"&lt;s:link action=&#8220;#{documentApproval.approveOrReject}&#8221; "
+"taskInstance=&#8220;#{task}&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:268
+#, no-c-format
+msgid "(See the DVD Store demo application for examples of this.)"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:271
+#, no-c-format
+msgid ""
+"Finally, if you need the \"link\" to be rendered as a button, use "
+"<literal>&lt;s:button&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:274
+#, no-c-format
+msgid ""
+"&lt;s:button action=&#8220;#{login.logout}&#8221; value=&#8220;Logout&#8221;/"
+"&gt;"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:278
+#, no-c-format
+msgid "Success messages"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:279
+#, no-c-format
+msgid ""
+"It is quite common to display a message to the user indicating success or "
+"failure of an action. It is convenient to use a JSF <literal>FacesMessage</"
+"literal> for this. Unfortunately, a successful action often requires a "
+"browser redirect, and JSF does not propagate faces messages across "
+"redirects. This makes it quite difficult to display success messages in "
+"plain JSF."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:282
+#, no-c-format
+msgid ""
+"The built in conversation-scoped Seam component named "
+"<literal>facesMessages</literal> solves this problem. (You must have the "
+"Seam redirect filter installed.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:285
+#, no-c-format
+msgid ""
+"@Name(\"editDocumentAction\")\n"
+"@Stateless\n"
+"public class EditDocumentBean implements EditDocument {\n"
+"    @In EntityManager em;\n"
+"    @In Document document;\n"
+"    @In FacesMessages facesMessages;\n"
+"    \n"
+"    public String update() {\n"
+"        em.merge(document);\n"
+"        facesMessages.add(\"Document updated\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:286
+#, no-c-format
+msgid ""
+"Any message added to <literal>facesMessages</literal> is used in the very "
+"next render response phase for the current conversation. This even works "
+"when there is no long-running conversation since Seam preserves even "
+"temporary conversation contexts across redirects."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:289
+#, no-c-format
+msgid "You can even include JSF EL expressions in a faces message summary:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:292
+#, no-c-format
+msgid "facesMessages.add(\"Document #{document.title} was updated\");"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:293
+#, no-c-format
+msgid "You may display the messages in the usual way, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:296
+#, no-c-format
+msgid "&lt;h:messages globalOnly=\"true\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:300
+#, no-c-format
+msgid "Using an \"explicit\" conversation id"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:301
+#, no-c-format
+msgid ""
+"Ordinarily, Seam generates a meaningless unique id for each conversation in "
+"each session. You can customize the id value when you begin the conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:304
+#, no-c-format
+msgid ""
+"This feature can be used to customize the conversation id generation "
+"algorithm like so:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:307
+#, no-c-format
+msgid ""
+"@Begin(id=\"#{myConversationIdGenerator.nextId}\") \n"
+"public void editHotel() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:308
+#, no-c-format
+msgid "Or it can be used to assign a meaningful conversation id:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:311
+#, no-c-format
+msgid ""
+"@Begin(id=\"hotel#{hotel.id}\") \n"
+"public String editHotel() { ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:312
+#, no-c-format
+msgid ""
+"@Begin(id=\"hotel#{hotelsDataModel.rowData.id}\") \n"
+"public String selectHotel() { ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:313
+#, no-c-format
+msgid ""
+"@Begin(id=\"entry#{params['blogId']}\")\n"
+"public String viewBlogEntry() { ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:314
+#, no-c-format
+msgid ""
+"@BeginTask(id=\"task#{taskInstance.id}\") \n"
+"public String approveDocument() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:315
+#, no-c-format
+msgid ""
+"Clearly, these example result in the same conversation id every time a "
+"particular hotel, blog or task is selected. So what happens if a "
+"conversation with the same conversation id already exists when the new "
+"conversation begins? Well, Seam detects the existing conversation and "
+"redirects to that conversation without running the <literal>@Begin</literal> "
+"method again. This feature helps control the number of workspaces that are "
+"created when using workspace management."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:321
+#, no-c-format
+msgid "Workspace management"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:322
+#, no-c-format
+msgid ""
+"Workspace management is the ability to \"switch\" conversations in a single "
+"window. Seam makes workspace management completely transparent at the level "
+"of the Java code. To enable workspace management, all you need to do is:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:327
+#, no-c-format
+msgid ""
+"Provide <emphasis>description</emphasis> text for each view id (when using "
+"JSF or Seam navigation rules) or page node (when using jPDL pageflows). This "
+"description text is displayed to the user by the workspace switchers."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:332
+#, no-c-format
+msgid ""
+"Include one or more of the standard workspace switcher JSP or facelets "
+"fragments in your pages. The standard fragments support workspace management "
+"via a drop down menu, a list of conversations, or breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:335
+#, no-c-format
+msgid ""
+"Please refer to the Seam Issue Tracker demo to see all this functionality in "
+"action!"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:339
+#, no-c-format
+msgid "Workspace management and JSF navigation"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:340
+#, no-c-format
+msgid ""
+"When you use JSF or Seam navigation rules, Seam switches to a conversation "
+"by restoring the current <literal>view-id</literal> for that conversation. "
+"The descriptive text for the workspace is defined in a file called "
+"<literal>pages.xml</literal> that Seam expects to find in the <literal>WEB-"
+"INF</literal> directory, right next to <literal>faces-config.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:343
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/main.xhtml\"&gt;Search hotels: #{hotelBooking."
+"searchString}&lt;/page&gt;\n"
+"    &lt;page view-id=\"/hotel.xhtml\"&gt;View hotel: #{hotel.name}&lt;/"
+"page&gt;\n"
+"    &lt;page view-id=\"/book.xhtml\"&gt;Book hotel: #{hotel.name}&lt;/"
+"page&gt;\n"
+"    &lt;page view-id=\"/confirm.xhtml\"&gt;Confirm: #{booking.description}"
+"&lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:344
+#, no-c-format
+msgid ""
+"Note that if this file is missing, the Seam application will continue to "
+"work perfectly! The only missing functionality will be the ability to switch "
+"workspaces."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:350
+#, no-c-format
+msgid "Workspace management and jPDL pageflow"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:351
+#, no-c-format
+msgid ""
+"When you use a jPDL pageflow definition, Seam switches to a conversation by "
+"restoring the current jBPM process state. This is a more flexible model "
+"since it allows the same <literal>view-id</literal> to have different "
+"descriptions depending upon the current <literal>&lt;page&gt;</literal> "
+"node. The description text is defined by the <literal>&lt;page&gt;</literal> "
+"node:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:354
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"shopping\"&gt;\n"
+"\n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"browse\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;page name=\"browse\" view-id=\"/browse.xhtml\"&gt;\n"
+"      &lt;description&gt;DVD Search: #{search.searchPattern}&lt;/"
+"description&gt;\n"
+"      &lt;transition to=\"browse\"/&gt;\n"
+"      &lt;transition name=\"checkout\" to=\"checkout\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"checkout\" view-id=\"/checkout.xhtml\"&gt;\n"
+"      &lt;description&gt;Purchase: &#36;#{cart.total}&lt;/description&gt;\n"
+"      &lt;transition to=\"checkout\"/&gt;\n"
+"      &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"complete\" view-id=\"/complete.xhtml\"&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:358
+#, no-c-format
+msgid "The conversation switcher"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:359
+#, no-c-format
+msgid ""
+"Include the following fragment in your JSP or facelets page to get a drop-"
+"down menu that lets you switch to any current conversation, or to any other "
+"page of the application:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:362
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{switcher.conversationIdOrOutcome}\"&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Find Issues\" itemValue=\"findIssue\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Create Issue\" itemValue=\"editIssue\"/"
+"&gt;\n"
+"    &lt;f:selectItems value=\"#{switcher.selectItems}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{switcher.select}\" value=\"Switch\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:363
+#, no-c-format
+msgid ""
+"In this example, we have a menu that includes an item for each conversation, "
+"together with two additional items that let the user begin a new "
+"conversation."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:377
+#, no-c-format
+msgid "The conversation list"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:378
+#, no-c-format
+msgid ""
+"The conversation list is very similar to the conversation switcher, except "
+"that it is displayed as a table:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:381
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{conversationList}\" var=\"entry\"\n"
+"        rendered=\"#{not empty conversationList}\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Workspace&lt;/f:facet&gt;\n"
+"        &lt;h:commandLink action=\"#{entry.select}\" value=\"#{entry."
+"description}\"/&gt;\n"
+"        &lt;h:outputText value=\"[current]\" rendered=\"#{entry.current}\"/"
+"&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Activity&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{entry.startDatetime}\"&gt;\n"
+"            &lt;f:convertDateTime type=\"time\" pattern=\"hh:mm a\"/&gt;\n"
+"        &lt;/h:outputText&gt;\n"
+"        &lt;h:outputText value=\" - \"/&gt;\n"
+"        &lt;h:outputText value=\"#{entry.lastDatetime}\"&gt;\n"
+"            &lt;f:convertDateTime type=\"time\" pattern=\"hh:mm a\"/&gt;\n"
+"        &lt;/h:outputText&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"        &lt;h:commandButton action=\"#{entry.select}\" value=\"#{msg.Switch}"
+"\"/&gt;\n"
+"        &lt;h:commandButton action=\"#{entry.destroy}\" value=\"#{msg."
+"Destroy}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:382
+#, no-c-format
+msgid ""
+"We imagine that you will want to customize this for your own application."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:393
+#, no-c-format
+msgid ""
+"The conversation list is nice, but it takes up a lot of space on the page, "
+"so you probably don't want to put it on <emphasis>every</emphasis> page."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:396
+#, no-c-format
+msgid "Notice that the conversation list lets the user destroy workspaces."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:402
+#, no-c-format
+msgid "Breadcrumbs"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:403
+#, no-c-format
+msgid ""
+"Breadcrumbs are useful in applications which use a nested conversation "
+"model. The breadcrumbs are a list of links to conversations in the current "
+"conversation stack:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:406
+#, no-c-format
+msgid ""
+"&lt;t:dataList value=\"#{conversationStack}\" var=\"entry\"&gt;\n"
+"    &lt;h:outputText value=\" | \"/&gt; \n"
+"    &lt;h:commandLink value=\"#{entry.description}\" action=\"#{entry.select}"
+"\"/&gt;\n"
+"&lt;/t:dataList&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:407
+#, no-c-format
+msgid ""
+"Notice that here we are using the MyFaces <literal>&lt;t:dataList&gt;</"
+"literal> component, since JSF amazingly does not provide any standard "
+"component for looping."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:424
+#, no-c-format
+msgid "Conversational components and JSF component bindings"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:425
+#, no-c-format
+msgid ""
+"Conversational components have one minor limitation: they cannot be used to "
+"hold bindings to JSF components. (We generally prefer not to use this "
+"feature of JSF unless absolutely necessary, since it creates a hard "
+"dependency from application logic to the view.) On a postback request, "
+"component bindings are updated during the Restore View phase, before the "
+"Seam conversation context has been restored."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:428
+#, no-c-format
+msgid ""
+"To work around this use an event scoped component to store the component "
+"bindings and inject it into the conversation scoped component that requires "
+"it."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:431
+#, no-c-format
+msgid ""
+"@Name(\"grid\")\n"
+"@Scope(ScopeType.EVENT)\n"
+"public class Grid\n"
+"{\n"
+"    private HtmlPanelGrid htmlPanelGrid;\n"
+"\n"
+"    // getters and setters\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:432
+#, no-c-format
+msgid ""
+"@Name(\"gridEditor\")\n"
+"@Scope(ScopeType.CONVERSATION)\n"
+"public class GridEditor\n"
+"{\n"
+"    @In(required=false)\n"
+"    private Grid grid;\n"
+"    \n"
+"    ...\n"
+"}"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Drools.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Drools.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Drools.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,281 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Drools.xml:10
+#, no-c-format
+msgid "Seam and JBoss Rules"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:11
+#, no-c-format
+msgid ""
+"Seam makes it easy to call JBoss Rules (Drools) rulebases from Seam "
+"components or jBPM process definitions."
+msgstr ""
+
+#. Tag: title
+#: Drools.xml:15
+#, no-c-format
+msgid "Installing rules"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:16
+#, no-c-format
+msgid ""
+"The first step is to make an instance of <literal>org.drools.RuleBase</"
+"literal> available in a Seam context variable. In most rules-driven "
+"applications, rules need to be dynamically deployable, so you will need to "
+"implement some solution that allows you to deploy rules and make them "
+"available to Seam (a future release of Drools will provide a Rule Server "
+"that solves this problem). For testing purposes, Seam provides a built-in "
+"component that compiles a static set of rules from the classpath. You can "
+"install this component via <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:19
+#, no-c-format
+msgid ""
+"&lt;drools:rule-base name=\"policyPricingRules\"&gt;\n"
+"    &lt;drools:rule-files&gt;\n"
+"        &lt;value&gt;policyPricingRules&lt;/value&gt;\n"
+"    &lt;/drools:rule-files&gt;\n"
+"&lt;/drools:rule-base&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:20
+#, no-c-format
+msgid ""
+"This component compiles rules from a set of <literal>.drl</literal> files "
+"and caches an instance of <literal>org.drools.RuleBase</literal> in the Seam "
+"<literal>APPLICATION</literal> context. Note that it is quite likely that "
+"you will need to install multiple rule bases in a rule-driven application."
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:23
+#, no-c-format
+msgid ""
+"If you want to use a Drools DSL, you alse need to specify the DSL definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:26
+#, no-c-format
+msgid ""
+"&lt;drools:rule-base name=\"policyPricingRules\" dsl-file=\"policyPricing.dsl"
+"\"&gt;\n"
+"    &lt;drools:rule-files&gt;\n"
+"        &lt;value&gt;policyPricingRules&lt;/value&gt;\n"
+"    &lt;/drools:rule-files&gt;\n"
+"&lt;/drools:rule-base&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:27
+#, no-c-format
+msgid ""
+"Next, we need to make an instance of <literal>org.drools.WorkingMemory</"
+"literal> available to each conversation. (Each <literal>WorkingMemory</"
+"literal> accumulates facts relating to the current conversation.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:30
+#, no-c-format
+msgid ""
+"&lt;drools:managed-working-memory name=\"policyPricingWorkingMemory\" auto-"
+"create=\"true\" rule-base=\"#{policyPricingRules}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:31
+#, no-c-format
+msgid ""
+"Notice that we gave the <literal>policyPricingWorkingMemory</literal> a "
+"reference back to our rule base via the <literal>ruleBase</literal> "
+"configuration property."
+msgstr ""
+
+#. Tag: title
+#: Drools.xml:37
+#, no-c-format
+msgid "Using rules from a Seam component"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:38
+#, no-c-format
+msgid ""
+"We can now inject our <literal>WorkingMemory</literal> into any Seam "
+"component, assert facts, and fire rules:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:41
+#, no-c-format
+msgid ""
+"@In WorkingMemory policyPricingWorkingMemory;\n"
+"\n"
+"@In Policy policy;\n"
+"@In Customer customer;\n"
+"\n"
+"public void pricePolicy() throws FactException\n"
+"{\n"
+"    policyPricingWorkingMemory.assertObject(policy);\n"
+"    policyPricingWorkingMemory.assertObject(customer);\n"
+"    policyPricingWorkingMemory.fireAllRules();\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Drools.xml:45
+#, no-c-format
+msgid "Using rules from a jBPM process definition"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:46
+#, no-c-format
+msgid ""
+"You can even allow a rule base to act as a jBPM action handler, decision "
+"handler, or assignment handler&mdash;in either a pageflow or business "
+"process definition."
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:49
+#, no-c-format
+msgid ""
+"&lt;decision name=\"approval\"&gt;\n"
+"         \n"
+"    &lt;handler class=\"org.jboss.seam.drools.DroolsDecisionHandler\"&gt;\n"
+"        &lt;workingMemoryName&gt;orderApprovalRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"        &lt;assertObjects&gt;\n"
+"            &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"            &lt;element&gt;#{order}&lt;/element&gt;\n"
+"            &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"        &lt;/assertObjects&gt;\n"
+"    &lt;/handler&gt;\n"
+"    \n"
+"    &lt;transition name=\"approved\" to=\"ship\"&gt;\n"
+"        &lt;action class=\"org.jboss.seam.drools.DroolsActionHandler\"&gt;\n"
+"            &lt;workingMemoryName&gt;shippingRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"            &lt;assertObjects&gt;\n"
+"                &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"            &lt;/assertObjects&gt;\n"
+"        &lt;/action&gt;\n"
+"    &lt;/transition&gt;\n"
+"    \n"
+"    &lt;transition name=\"rejected\" to=\"cancelled\"/&gt;\n"
+"    \n"
+"&lt;/decision&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:50
+#, no-c-format
+msgid ""
+"The <literal>&lt;assertObjects&gt;</literal> element specifies EL "
+"expressions that return an object or collection of objects to be asserted as "
+"facts into the <literal>WorkingMemory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:53
+#, no-c-format
+msgid "There is also support for using Drools for jBPM task assignments:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:56
+#, no-c-format
+msgid ""
+"&lt;task-node name=\"review\"&gt;\n"
+"    &lt;task name=\"review\" description=\"Review Order\"&gt;\n"
+"        &lt;assignment handler=\"org.jboss.seam.drools."
+"DroolsAssignmentHandler\"&gt;\n"
+"            &lt;workingMemoryName&gt;orderApprovalRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"            &lt;assertObjects&gt;\n"
+"                &lt;element&gt;#{actor}&lt;/element&gt;\n"
+"                &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"            &lt;/assertObjects&gt;\n"
+"        &lt;/assignment&gt;\n"
+"    &lt;/task&gt;\n"
+"    &lt;transition name=\"rejected\" to=\"cancelled\"/&gt;\n"
+"    &lt;transition name=\"approved\" to=\"approved\"/&gt;\n"
+"&lt;/task-node&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:57
+#, no-c-format
+msgid ""
+"Certain objects are available to the rules as Drools globals, namely the "
+"jBPM <literal>Assignable</literal>, as <literal>assignable</literal> and a "
+"Seam <literal>Decision</literal> object, as <literal>decision</literal>. "
+"Rules which handle decisions should call <literal>decision.setOutcome"
+"(\"result\")</literal> to determine the result of the decision. Rules which "
+"perform assignments should set the actor id using the <literal>Assignable</"
+"literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:60
+#, no-c-format
+msgid ""
+"package org.jboss.seam.examples.shop\n"
+"\n"
+"import org.jboss.seam.drools.Decision\n"
+"\n"
+"global Decision decision\n"
+"\n"
+"rule \"Approve Order For Loyal Customer\"\n"
+"  when\n"
+"    Customer( loyaltyStatus == \"GOLD\" )\n"
+"    Order( totalAmount &lt;= 10000 )\n"
+"  then\n"
+"    decision.setOutcome(\"approved\");\n"
+"end"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:61
+#, no-c-format
+msgid ""
+"package org.jboss.seam.examples.shop\n"
+"\n"
+"import org.jbpm.taskmgmt.exe.Assignable\n"
+"\n"
+"global Assignable assignable\n"
+"\n"
+"rule \"Assign Review For Small Order\"\n"
+"  when\n"
+"    Order( totalAmount &lt;= 100 )\n"
+"  then\n"
+"    assignable.setPooledActors( new String[] {\"reviewers\"} );\n"
+"end"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Elenhancements.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Elenhancements.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Elenhancements.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,221 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Elenhancements.xml:10
+#, no-c-format
+msgid "Expression language enhancements"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:11
+#, no-c-format
+msgid ""
+"The standard Unified Expression Language (EL) assumes that any parameters to "
+"a method expression will be provided by Java code. This means that a method "
+"with parameters cannot be used as a JSF method binding. Seam provides an "
+"enhancement to the EL that allows parameters to be included in a method "
+"expression itself. This applies to <emphasis>any</emphasis> Seam method "
+"expression, including any JSF method binding, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:14
+#, no-c-format
+msgid ""
+"&lt;s:commandButton action=\"#{hotelBooking.bookHotel(hotel)}\" value=\"Book "
+"Hotel\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:16
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:17
+#, no-c-format
+msgid ""
+"To use this feature in Facelets, you will need to declare a special view "
+"handler, <literal>SeamFaceletViewHandler</literal> in <literal>faces-config."
+"xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:20
+#, no-c-format
+msgid ""
+"&lt;faces-config&gt;\n"
+"    &lt;application&gt;\n"
+"        &lt;view-handler&gt;org.jboss.seam.ui.facelet."
+"SeamFaceletViewHandler&lt;/view-handler&gt;\n"
+"    &lt;/application&gt;\n"
+"&lt;/faces-config&gt;"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:24
+#, no-c-format
+msgid "Usage"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:25
+#, no-c-format
+msgid "Parameters are surrounded by parentheses, and separated by commas:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:28
+#, no-c-format
+msgid ""
+"&lt;h:commandButton action=\"#{hotelBooking.bookHotel(hotel, user)}\" value="
+"\"Book Hotel\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:29
+#, no-c-format
+msgid ""
+"The parameters <literal>hotel</literal> and <literal>user</literal> will be "
+"evaluated as value expressions and passed to the <literal>bookHotel()</"
+"literal> method of the component. This gives you an alternative to the use "
+"of <literal>@In</literal>."
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:32
+#, no-c-format
+msgid "Any value expression may be used as a parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:35
+#, no-c-format
+msgid ""
+"&lt;h:commandButton action=\"#{hotelBooking.bookHotel(hotel.id, user."
+"username)}\" value=\"Book Hotel\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:36
+#, no-c-format
+msgid "You may even pass literal strings using single or double quotes:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:39
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=&#8221;#{printer.println( &#8216;Hello world!"
+"&#8217; )}&#8221; value=&#8221;Hello&#8221;/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:40
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=&#8217;#{printer.println( &#8220;Hello "
+"again&#8221; )}&#8217; value=&#8217;Hello&#8217;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:41
+#, no-c-format
+msgid ""
+"You might even want to use this notation for all your action methods, even "
+"when you don&#8217;t have parameters to pass. This improves readability by "
+"making it clear that the expression is a method expression and not a value "
+"expression:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:44
+#, no-c-format
+msgid "&lt;s:link value=\"Cancel\" action=\"#{hotelBooking.cancel()}\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:48
+#, no-c-format
+msgid "Limitations"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:49
+#, no-c-format
+msgid "Please be aware of the following limitations:"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:53
+#, no-c-format
+msgid "Incompatibility with JSP 2.1"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:54
+#, no-c-format
+msgid ""
+"This extension is not currently compatible with JSP 2.1. So if you want to "
+"use this extension with JSF 1.2, you will need to use Facelets. The "
+"extension works correctly with JSP 2.0."
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:60
+#, no-c-format
+msgid "Calling a <literal>MethodExpression</literal> from Java code"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:61
+#, no-c-format
+msgid ""
+"Normally, when a <literal>MethodExpression</literal> or "
+"<literal>MethodBinding</literal> is created, the parameter types are passed "
+"in by JSF. In the case of a method binding, JSF assumes that there are no "
+"parameters to pass. With this extension, we can&#8217;t know the parameter "
+"types until after the expression has been evaluated. This has two minor "
+"consequences:"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:66
+#, no-c-format
+msgid ""
+"When you invoke a <literal>MethodExpression</literal> in Java code, "
+"parameters you pass may be ignored. Parameters defined in the expression "
+"will take precedence."
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:71
+#, no-c-format
+msgid ""
+"Ordinarily, it is safe to call <literal>methodExpression.getMethodInfo()."
+"getParamTypes()</literal> at any time. For an expression with parameters, "
+"you must first invoke the <literal>MethodExpression</literal> before calling "
+"<literal>getParamTypes()</literal>."
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:76
+#, no-c-format
+msgid ""
+"Both of these cases are exceedingly rare and only apply when you want to "
+"invoke the <literal>MethodExpression</literal> by hand in Java code."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Events.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Events.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Events.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1430 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Events.xml:10
+#, no-c-format
+msgid "Events, interceptors and exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:11
+#, no-c-format
+msgid ""
+"Complementing the contextual component model, there are two further basic "
+"concepts that facilitate the extreme loose-coupling that is the distinctive "
+"feature of Seam applications. The first is a strong event model where events "
+"may be mapped to event listeners via JSF-like method binding expressions. "
+"The second is the pervasive use of annotations and interceptors to apply "
+"cross-cutting concerns to components which implement business logic."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:14
+#, no-c-format
+msgid "Seam events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:15
+#, no-c-format
+msgid ""
+"The Seam component model was developed for use with <emphasis>event-driven "
+"applications</emphasis>, specifically to enable the development of fine-"
+"grained, loosely-coupled components in a fine-grained eventing model. Events "
+"in Seam come in several types, most of which we have already seen:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:20
+#, no-c-format
+msgid "JSF events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:25
+#, no-c-format
+msgid "jBPM transition events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:30
+#, no-c-format
+msgid "Seam page actions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:35
+#, no-c-format
+msgid "Seam component-driven events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:40
+#, no-c-format
+msgid "Seam contextual events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:45
+#, no-c-format
+msgid ""
+"All of these various kinds of events are mapped to Seam components via JSF "
+"EL method binding expressions. For a JSF event, this is defined in the JSF "
+"template:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:48
+#, no-c-format
+msgid ""
+"&lt;h:commandButton value=\"Click me!\" action=\"#{helloWorld.sayHello}\"/"
+"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:49
+#, no-c-format
+msgid ""
+"For a jBPM transition event, it is specified in the jBPM process definition "
+"or pageflow definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:52
+#, no-c-format
+msgid ""
+"&lt;start-page name=\"hello\" view-id=\"/hello.jsp\"&gt;\n"
+"    &lt;transition to=\"hello\"&gt;\n"
+"        &lt;action expression=\"#{helloWorld.sayHello}\"/&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/start-page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:53
+#, no-c-format
+msgid ""
+"You can find out more information about JSF events and jBPM events "
+"elsewhere. Lets concentrate for now upon the two additional kinds of events "
+"defined by Seam."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:56
+#, no-c-format
+msgid "Page actions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:57
+#, no-c-format
+msgid ""
+"A Seam page action is an event that occurs just before we render a page. We "
+"declare page actions in <literal>WEB-INF/pages.xml</literal>. We can define "
+"a page action for either a particular JSF view id:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:60
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\" action=\"#{helloWorld.sayHello}\"/&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:61
+#, no-c-format
+msgid ""
+"Or we can use a wildcard to specify an action that applies to all view ids "
+"that match the pattern:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:64
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello/*\" action=\"#{helloWorld.sayHello}\"/&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:65
+#, no-c-format
+msgid ""
+"If multiple wildcarded page actions match the current view-id, Seam will "
+"call all the actions, in order of least-specific to most-specific."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:68
+#, no-c-format
+msgid ""
+"The page action method can return a JSF outcome. If the outcome is non-null, "
+"Seam will delegate to the defined JSFadn Seam navigation rules and a "
+"different view may end up being rendered."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:71
+#, no-c-format
+msgid ""
+"Furthermore, the view id mentioned in the <literal>&lt;page&gt;</literal> "
+"element need not correspond to a real JSP or Facelets page! So, we can "
+"reproduce the functionality of a traditional action-oriented framework like "
+"Struts or WebWork using page actions. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:74
+#, no-c-format
+msgid "TODO: translate struts action into page action"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:75
+#, no-c-format
+msgid ""
+"This is quite useful if you want to do complex things in response to non-"
+"faces requests (for example, HTTP GET requests)."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:78
+#, no-c-format
+msgid "Page parameters"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:79
+#, no-c-format
+msgid ""
+"A JSF faces request (a form submission) encapsulates both an \"action\" (a "
+"method binding) and \"parameters\" (input value bindings). A page action "
+"might also needs parameters!"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:82
+#, no-c-format
+msgid ""
+"Since GET requests are bookmarkable, page parameters are passed as human-"
+"readable request parameters. (Unlike JSF form inputs, which are anything "
+"but!)"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:85
+#, no-c-format
+msgid ""
+"Seam lets us provide a value binding that maps a named request parameter to "
+"an attribute of a model object."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:88
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\" action=\"#{helloWorld.sayHello}\"&gt;\n"
+"        &lt;param name=\"firstName\" value=\"#{person.firstName}\"/&gt;\n"
+"        &lt;param name=\"lastName\" value=\"#{person.lastName}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:89
+#, no-c-format
+msgid ""
+"The <literal>&lt;param&gt;</literal> declaration is bidirectional, just like "
+"a value binding for a JSF input:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:94
+#, no-c-format
+msgid ""
+"When a non-faces (GET) request for the view id occurs, Seam sets the value "
+"of the named request parameter onto the model object, after performing "
+"appropriate type conversions."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:99
+#, no-c-format
+msgid ""
+"Any <literal>&lt;s:link&gt;</literal> or <literal>&lt;s:button&gt;</literal> "
+"transparently includes the request parameter. The value of the parameter is "
+"determined by evaluating the value binding during the render phase (when the "
+"<literal>&lt;s:link&gt;</literal> is rendered)."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:104
+#, no-c-format
+msgid ""
+"Any navigation rule with a <literal>&lt;redirect/&gt;</literal> to the view "
+"id transparently includes the request parameter. The value of the parameter "
+"is determined by evaluating the value binding at the end of the invoke "
+"application phase."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:109
+#, no-c-format
+msgid ""
+"The value is transparently propagated with any JSF form submission for the "
+"page with the given view id. (This means that view parameters behave like "
+"<literal>PAGE</literal>-scoped context variables for faces requests."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:114
+#, no-c-format
+msgid ""
+"The essential idea behind all this is that <emphasis>however</emphasis> we "
+"get from any other page to <literal>/hello.jsp</literal> (or from <literal>/"
+"hello.jsp</literal> back to <literal>/hello.jsp</literal>), the value of the "
+"model attribute referred to in the value binding is \"remembered\", without "
+"the need for a conversation (or other server-side state)."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:117
+#, no-c-format
+msgid ""
+"This all sounds pretty complex, and you're probably wondering if such an "
+"exotic construct is really worth the effort. Actually, the idea is very "
+"natural once you \"get it\". It is definitely worth taking the time to "
+"understand this stuff. Page parameters are the most elegant way to propagate "
+"state across a non-faces request. They are especially cool for problems like "
+"search screens with bookmarkable results pages, where we would like to be "
+"able to write our application code to handle both POST and GET requests with "
+"the same code. Page parameters eliminate repetitive listing of request "
+"parameters in the view definition and make redirects much easier to code."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:120
+#, no-c-format
+msgid ""
+"Note that you don't need an actual page action method binding to use a page "
+"parameter. The following is perfectly valid:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:123
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\"&gt;\n"
+"        &lt;param name=\"firstName\" value=\"#{person.firstName}\"/&gt;\n"
+"        &lt;param name=\"lastName\" value=\"#{person.lastName}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:124
+#, no-c-format
+msgid "You can even specify a JSF converter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:127
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/calculator.jsp\" action=\"#{calculator.calculate}"
+"\"&gt;\n"
+"        &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"        &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"        &lt;param name=\"op\" converterId=\"com.my.calculator."
+"OperatorConverter\" value=\"#{calculator.op}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:128
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/calculator.jsp\" action=\"#{calculator.calculate}"
+"\"&gt;\n"
+"        &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"        &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"        &lt;param name=\"op\" converter=\"#{operatorConverter}\" value=\"#"
+"{calculator.op}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:129
+#, no-c-format
+msgid "Navigation"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:130
+#, no-c-format
+msgid ""
+"You can use standard JSF navigation rules defined in <literal>faces-config."
+"xml</literal> in a Seam application. However, JSF navigation rules have a "
+"number of annoying limitations:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:135
+#, no-c-format
+msgid ""
+"It is not possible to specify request parameters to be used when redirecting."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:140
+#, no-c-format
+msgid "It is not possible to begin or end conversations from a rule."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:145
+#, no-c-format
+msgid ""
+"Rules work by evaluating the return value of the action method; it is not "
+"possible to evaluate an arbitrary EL expression."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:150
+#, no-c-format
+msgid ""
+"A further problem is that \"orchestration\" logic gets scattered between "
+"<literal>pages.xml</literal> and <literal>faces-config.xml</literal>. It's "
+"better to unify this logic into <literal>pages.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:153
+#, no-c-format
+msgid "This JSF navigation rule:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:156
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"    &lt;from-view-id&gt;/editDocument.xhtml&lt;/from-view-id&gt;\n"
+"    \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-action&gt;#{documentEditor.update}&lt;/from-action&gt;\n"
+"        &lt;from-outcome&gt;success&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/viewDocument.xhtml&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"    \n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:157
+#, no-c-format
+msgid "Can be rewritten as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:160
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if-outcome=\"success\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:161
+#, no-c-format
+msgid ""
+"But it would be even nicer if we didn't have to pollute our "
+"<literal>DocumentEditor</literal> component with string-valued return values "
+"(the JSF outcomes). So Seam lets us write:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:164
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\" \n"
+"                   evaluate=\"#{documentEditor.errors.size}\"&gt;\n"
+"        &lt;rule if-outcome=\"0\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:165
+#, no-c-format
+msgid "Or even:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:168
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:169
+#, no-c-format
+msgid ""
+"The first form evaluates a value binding to determine the outcome value to "
+"be used by the subsequent rules. The second approach ignores the outcome and "
+"evaluates a value binding for each possible rule."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:172
+#, no-c-format
+msgid ""
+"Of course, when an update succeeds, we probably want to end the current "
+"conversation. We can do that like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:175
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:176
+#, no-c-format
+msgid ""
+"But ending the conversation loses any state associated with the "
+"conversation, including the document we are currently interested in! One "
+"solution would be to use an immediate render instead of a redirect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:179
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:180
+#, no-c-format
+msgid ""
+"But the correct solution is to pass the document id as a request parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:183
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"&gt;\n"
+"                &lt;param name=\"documentId\" value=\"#{documentEditor."
+"documentId}\"/&gt;\n"
+"            &lt;/redirect&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:184
+#, no-c-format
+msgid ""
+"Null outcomes are a special case in JSF. The null outcome is interpreted to "
+"mean \"redisplay the page\". The following navigation rule matches any non-"
+"null outcome, but <emphasis>not</emphasis> the null outcome:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:187
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule&gt;\n"
+"            &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:188
+#, no-c-format
+msgid ""
+"If you want to perform navigation when a null outcome occurs, use the "
+"following form instead:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:191
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:192
+#, no-c-format
+msgid ""
+"Fine-grained files for definition of navigation, page actions and parameters"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:193
+#, no-c-format
+msgid ""
+"If you have a lot of different page actions and page parameters, or even "
+"just a lot of navigation rules, you will almost certainly want to split the "
+"declarations up over multiple files. You can define actions and parameters "
+"for a page with the view id <literal>/calc/calculator.jsp</literal> in a "
+"resource named <literal>calc/calculator.page.xml</literal>. The root element "
+"in this case is the <literal>&lt;page&gt;</literal> element, and the view id "
+"is implied:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:196
+#, no-c-format
+msgid ""
+"&lt;page action=\"#{calculator.calculate}\"&gt;\n"
+"    &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"    &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"    &lt;param name=\"op\" converter=\"#{operatorConverter}\" value=\"#"
+"{calculator.op}\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:197
+#, no-c-format
+msgid "Component-driven events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:198
+#, no-c-format
+msgid ""
+"Seam components can interact by simply calling each others methods. Stateful "
+"components may even implement the observer/observable pattern. But to enable "
+"components to interact in a more loosely-coupled fashion than is possible "
+"when the components call each others methods directly, Seam provides "
+"<emphasis>component-driven events</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:201
+#, no-c-format
+msgid ""
+"We specify event listeners (observers) in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:204
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;event type=\"hello\"&gt;\n"
+"        &lt;action expression=\"#{helloListener.sayHelloBack}\"/&gt;\n"
+"        &lt;action expression=\"#{logger.logHello}\"/&gt;\n"
+"    &lt;/event&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:205
+#, no-c-format
+msgid "Where the <emphasis>event type</emphasis> is just an arbitrary string."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:208
+#, no-c-format
+msgid ""
+"When an event occurs, the actions registered for that event will be called "
+"in the order they appear in <literal>components.xml</literal>. How does a "
+"component raise an event? Seam provides a built-in component for this."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:211
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World!\");\n"
+"        Events.instance().raiseEvent(\"hello\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:212
+#, no-c-format
+msgid "Or you can use an annotation."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:215
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    @RaiseEvent(\"hello\")\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World!\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:216
+#, no-c-format
+msgid ""
+"Notice that this event producer has no dependency upon event consumers. The "
+"event listener may now be implemented with absolutely no dependency upon the "
+"producer:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:219
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    public void sayHelloBack() {\n"
+"        FacesMessages.instance().add(\"Hello to you too!\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:220
+#, no-c-format
+msgid ""
+"The method binding defined in <literal>components.xml</literal> above takes "
+"care of mapping the event to the consumer. If you don't like futzing about "
+"in the <literal>components.xml</literal> file, you can use an annotation "
+"instead:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:223
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    @Observer(\"hello\")\n"
+"    public void sayHelloBack() {\n"
+"        FacesMessages.instance().add(\"Hello to you too!\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:224
+#, no-c-format
+msgid ""
+"You might wonder why I've not mentioned anything about event objects in this "
+"discussion. In Seam, there is no need for an event object to propagate state "
+"between event producer and listener. State is held in the Seam contexts, and "
+"is shared between components. However, if you really want to pass an event "
+"object, you can:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:227
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    private String name;\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World, my name is #0.\", "
+"name);\n"
+"        Events.instance().raiseEvent(\"hello\", name);\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:228
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    @Observer(\"hello\")\n"
+"    public void sayHelloBack(String name) {\n"
+"        FacesMessages.instance().add(\"Hello #0!\", name);\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:229
+#, no-c-format
+msgid "Contextual events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:230
+#, no-c-format
+msgid ""
+"Seam defines a number of built-in events that the application can use to "
+"perform special kinds of framework integration. The events are:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:235
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preSetVariable.&lt;name&gt;</literal> &mdash; called "
+"when the context variable &lt;name&gt; is set"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:240
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postSetVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is set"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:245
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preRemoveVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is unset"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:250
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postRemoveVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is unset"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:255
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preDestroyContext.&lt;SCOPE&gt;</literal> &mdash; "
+"called before the &lt;SCOPE&gt; context is destroyed"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:260
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postDestroyContext.&lt;SCOPE&gt;</literal> &mdash; "
+"called after the &lt;SCOPE&gt; context is destroyed"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:265
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beginConversation </literal>&mdash; called whenever "
+"a long-running conversation begins"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:270
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endConversation </literal>&mdash; called whenever a "
+"long-running conversation ends"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:275
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beginPageflow.&lt;name&gt; </literal>&mdash; called "
+"when the pageflow &lt;name&gt; begins"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:280
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endPageflow.&lt;name&gt; </literal>&mdash; called "
+"when the pageflow &lt;name&gt; ends"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:285
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.createProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; is created"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:290
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; ends"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:295
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.initProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; is associated with the conversation"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:300
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.initTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is associated with the conversation"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:305
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.startTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is started"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:310
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is ended"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:315
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postCreate.&lt;name&gt; </literal>&mdash; called "
+"when the component &lt;name&gt; is created"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:320
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preDestroy.&lt;name&gt; </literal>&mdash; called "
+"when the component &lt;name&gt; is destroyed"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:325
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beforePhase </literal>&mdash; called before the "
+"start of a JSF phase"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:330
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.afterPhase </literal>&mdash; called after the end of "
+"a JSF phase"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:335
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postAuthenticate.&lt;name&gt; </literal>&mdash; "
+"called after a user is authenticated"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:340
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preAuthenticate.&lt;name&gt; </literal>&mdash; "
+"called before attempting to authenticate a user"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:345
+#, no-c-format
+msgid ""
+"Seam components may observe any of these events in just the same way they "
+"observe any other component-driven events."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:348
+#, no-c-format
+msgid "Seam interceptors"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:349
+#, no-c-format
+msgid ""
+"EJB 3.0 introduced a standard interceptor model for session bean components. "
+"To add an interceptor to a bean, you need to write a class with a method "
+"annotated <literal>@AroundInvoke</literal> and annotate the bean with an "
+"<literal>@Interceptors</literal> annotation that specifies the name of the "
+"interceptor class. For example, the following interceptor checks that the "
+"user is logged in before allowing invoking an action listener method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:352
+#, no-c-format
+msgid ""
+"public class LoggedInInterceptor {\n"
+"\n"
+"   @AroundInvoke\n"
+"   public Object checkLoggedIn(InvocationContext invocation) throws "
+"Exception {\n"
+"   \n"
+"      boolean isLoggedIn = Contexts.getSessionContext().get(\"loggedIn\")!"
+"=null;\n"
+"      if (isLoggedIn) {\n"
+"         //the user is already logged in\n"
+"         return invocation.proceed();\n"
+"      }\n"
+"      else {\n"
+"         //the user is not logged in, fwd to login page\n"
+"         return \"login\";\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:353
+#, no-c-format
+msgid ""
+"To apply this interceptor to a session bean which acts as an action "
+"listener, we must annotate the session bean <literal>@Interceptors"
+"(LoggedInInterceptor.class)</literal>. This is a somewhat ugly annotation. "
+"Seam builds upon the interceptor framework in EJB3 by allowing you to use "
+"<literal>@Interceptors</literal> as a meta-annotation. In our example, we "
+"would create an <literal>@LoggedIn</literal> annotation, as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:356
+#, no-c-format
+msgid ""
+"@Target(TYPE)\n"
+"@Retention(RUNTIME)\n"
+"@Interceptors(LoggedInInterceptor.class)\n"
+"public @interface LoggedIn {}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:357
+#, no-c-format
+msgid ""
+"We can now simply annotate our action listener bean with <literal>@LoggedIn</"
+"literal> to apply the interceptor."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:360
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"changePasswordAction\")\n"
+"@LoggedIn\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class ChangePasswordAction implements ChangePassword { \n"
+"    \n"
+"    ...\n"
+"    \n"
+"    public String changePassword() { ... }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:361
+#, no-c-format
+msgid ""
+"If interceptor ordering is important (it usually is), you can add "
+"<literal>@Interceptor</literal> annotations to your interceptor classes to "
+"specify a partial order of interceptors."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:364
+#, no-c-format
+msgid ""
+"@Interceptor(around={BijectionInterceptor.class,\n"
+"                     ValidationInterceptor.class,\n"
+"                     ConversationInterceptor.class},\n"
+"             within=RemoveInterceptor.class)\n"
+"public class LoggedInInterceptor\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:365
+#, no-c-format
+msgid ""
+"You can even have a \"client-side\" interceptor, that runs around any of the "
+"built-in functionality of EJB3:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:368
+#, no-c-format
+msgid ""
+"@Interceptor(type=CLIENT)\n"
+"public class LoggedInInterceptor\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:369
+#, no-c-format
+msgid ""
+"EJB interceptors are stateful, with a lifecycle that is the same as the "
+"component they intercept. For interceptors which do not need to maintain "
+"state, Seam lets you get a performance optimization by specifying "
+"<literal>@Interceptor(stateless=true)</literal>."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:372
+#, no-c-format
+msgid ""
+"Much of the functionality of Seam is implemented as a set of built-in Seam "
+"interceptors, including the interceptors named in the previous example. You "
+"don't have to explicitly specify these interceptors by annotating your "
+"components; they exist for all interceptable Seam components."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:375
+#, no-c-format
+msgid ""
+"You can even use Seam interceptors with JavaBean components, not just EJB3 "
+"beans!"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:378
+#, no-c-format
+msgid ""
+"EJB defines interception not only for business methods (using "
+"<literal>@AroundInvoke</literal>), but also for the lifecycle methods "
+"<literal>@PostConstruct</literal>, <literal>@PreDestroy</literal>, "
+"<literal>@PrePassivate</literal> and <literal>@PostActive</literal>. Seam "
+"supports all these lifecycle methods on both component and interceptor not "
+"only for EJB3 beans, but also for JavaBean components (except "
+"<literal>@PreDestroy</literal> which is not meaningful for JavaBean "
+"components)."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:381
+#, no-c-format
+msgid "Managing exceptions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:382
+#, no-c-format
+msgid ""
+"JSF is surprisingly limited when it comes to exception handling. As a "
+"partial workaround for this problem, Seam lets you define how a particular "
+"class of exception is to be treated by annotating the exception class, or "
+"declaring the exception class in an XML file. This facility is meant to be "
+"combined with the EJB 3.0-standard <literal>@ApplicationException</literal> "
+"annotation which specifies whether the exception should cause a transaction "
+"rollback."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:385
+#, no-c-format
+msgid "Exceptions and transactions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:386
+#, no-c-format
+msgid ""
+"EJB specifies well-defined rules that let us control whether an exception "
+"immediately marks the current transaction for rollback when it is thrown by "
+"a business method of the bean: <emphasis>system exceptions</emphasis> always "
+"cause a transaction rollback, <emphasis>application exceptions</emphasis> do "
+"not cause a rollback by default, but they do if "
+"<literal>@ApplicationException(rollback=true)</literal> is specified. (An "
+"application exception is any checked exception, or any unchecked exception "
+"annotated <literal>@ApplicationException</literal>. A system exception is "
+"any unchecked exception without an <literal>@ApplicationException</literal> "
+"annotation.)"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:389
+#, no-c-format
+msgid ""
+"Note that there is a difference between marking a transaction for rollback, "
+"and actually rolling it back. The exception rules say that the transaction "
+"should be marked rollback only, but it may still be active after the "
+"exception is thrown."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:392
+#, no-c-format
+msgid ""
+"Seam applies the EJB 3.0 exception rollback rules also to Seam JavaBean "
+"components."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:395
+#, no-c-format
+msgid ""
+"But these rules only apply in the Seam component layer. What about an "
+"exception that is uncaught and propagates out of the Seam component layer, "
+"and out of the JSF layer? Well, it is always wrong to leave a dangling "
+"transaction open, so Seam rolls back any active transaction when an "
+"exception occurs and is uncaught in the Seam component layer."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:398
+#, no-c-format
+msgid "Enabling Seam exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:399
+#, no-c-format
+msgid ""
+"To enable Seam's exception handling, we need to make sure we have the master "
+"servlet filter declared in <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:402
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.servlet.SeamFilter&lt;/filter-"
+"class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:403
+#, no-c-format
+msgid "Using annotations for exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:404
+#, no-c-format
+msgid ""
+"The following exception results in a HTTP 404 error whenever it propagates "
+"out of the Seam component layer. It does not roll back the current "
+"transaction immediately when thrown, but the transaction will be rolled back "
+"if it the exception is not caught by another Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:407
+#, no-c-format
+msgid ""
+"@HttpError(errorCode=404)\n"
+"public class ApplicationException extends Exception { ... }"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:408
+#, no-c-format
+msgid ""
+"This exception results in a browser redirect whenever it propagates out of "
+"the Seam component layer. It also ends the current conversation. It causes "
+"an immediate rollback of the current transaction."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:411
+#, no-c-format
+msgid ""
+"@Redirect(viewId=\"/failure.xhtml\", end=true)\n"
+"@ApplicationException(rollback=true)\n"
+"public class UnrecoverableApplicationException extends RuntimeException "
+"{ ... }"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:412
+#, no-c-format
+msgid ""
+"Note that <literal>@Redirect</literal> does not work for exceptions which "
+"occur during the render phase of the JSF lifecycle."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:415
+#, no-c-format
+msgid ""
+"This exception results in a redirect, along with a message to the user, when "
+"it propagates out of the Seam component layer. It also immediately rolls "
+"back the current transaction."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:418
+#, no-c-format
+msgid ""
+"@Redirect(viewId=\"/error.xhtml\", message=\"Unexpected error\")\n"
+"public class SystemException extends RuntimeException { ... }"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:419
+#, no-c-format
+msgid "Using XML for exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:420
+#, no-c-format
+msgid ""
+"Since we can't add annotations to all the exception classes we are "
+"interested in, Seam also lets us specify this functionality in "
+"<literal>pages.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:423
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   \n"
+"   &lt;exception class=\"javax.persistence.EntityNotFoundException\"&gt;\n"
+"      &lt;http-error error-code=\"404\"/&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"   &lt;exception class=\"javax.persistence.PersistenceException\"&gt;\n"
+"      &lt;end-conversation/&gt;\n"
+"      &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"          &lt;message&gt;Database access failed&lt;/message&gt;\n"
+"      &lt;/redirect&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"   &lt;exception&gt;\n"
+"      &lt;end-conversation/&gt;\n"
+"      &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"          &lt;message&gt;Unexpected failure&lt;/message&gt;\n"
+"      &lt;/redirect&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:424
+#, no-c-format
+msgid ""
+"The last <literal>&lt;exception&gt;</literal> declaration does not specify a "
+"class, and is a catch-all for any exception for which handling is not "
+"otherwise specified via annotations or in <literal>pages.xml</literal>."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Framework.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Framework.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Framework.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,828 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Framework.xml:10
+#, no-c-format
+msgid "The Seam Application Framework"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:11
+#, no-c-format
+msgid ""
+"Seam makes it really easy to create applications by writing plain Java "
+"classes with annotations, which don't need to extend any special interfaces "
+"or superclasses. But we can simplify some common programming tasks even "
+"further, by providing a set of pre-built components which can be re-used "
+"either by configuration in <literal>components.xml</literal> (for very "
+"simple cases) or extension."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:14
+#, no-c-format
+msgid ""
+"The <emphasis>Seam Application Framework</emphasis> can reduce the amount of "
+"code you need to write when doing basic database access in a web "
+"application, using either Hibernate or JPA."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:17
+#, no-c-format
+msgid ""
+"We should emphasize that the framework is extremely simple, just a handful "
+"of simple classes that are easy to understand and extend. The \"magic\" is "
+"in Seam itself&mdash;the same magic you use when creating any Seam "
+"application even without using this framework."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:21
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:22
+#, no-c-format
+msgid ""
+"The components provided by the Seam application framework may be used in one "
+"of two different approaches. The first way is to install and configure an "
+"instance of the component in <literal>components.xml</literal>, just like we "
+"have done with other kinds of built-in Seam components. For example, the "
+"following fragment from <literal>components.xml</literal> installs a "
+"component which can perform basic CRUD operations for a <literal>Contact</"
+"literal> entity:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:25
+#, no-c-format
+msgid ""
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" \n"
+"                       entity-manager=\"#{personDatabase}\"&gt;\n"
+"    &lt;framework:id&gt;#{param.personId}&lt;/framework:id&gt;\n"
+"&lt;/framework:entity-home&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:26
+#, no-c-format
+msgid ""
+"If that looks a bit too much like \"programming in XML\" for your taste, you "
+"can use extension instead:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:29
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; implements "
+"LocalPersonHome {\n"
+"    @RequestParameter String personId;\n"
+"    @In EntityManager personDatabase;\n"
+"    \n"
+"    public Object getId() { return personId; }\n"
+"    public EntityManager getEntityManager() { return personDatabase; }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:30
+#, no-c-format
+msgid ""
+"The second approach has one huge advantage: you can easily add extra "
+"functionality, and override the built-in functionality (the framework "
+"classes were carefully designed for extension and customization)."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:33
+#, no-c-format
+msgid ""
+"A second advantage is that your classes may be EJB stateful sessin beans, if "
+"you like. (They do not have to be, they can be plain JavaBean components if "
+"you prefer.)"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:36
+#, no-c-format
+msgid ""
+"At this time, the Seam Application Framework provides just four built-in "
+"components: <literal>EntityHome</literal> and <literal>HibernateEntityHome</"
+"literal> for CRUD, along with <literal>EntityQuery</literal> and "
+"<literal>HibernateEntityQuery</literal> for queries."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:39
+#, no-c-format
+msgid ""
+"The Home and Query components are written so that they can function with a "
+"scope of session, event or conversation. Which scope you use depends upon "
+"the state model you wish to use in your application."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:42
+#, no-c-format
+msgid ""
+"The Seam Application Framework only works with Seam-managed persistence "
+"contexts. By default, the components will look for a persistence context "
+"named <literal>entityManager</literal>."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:48
+#, no-c-format
+msgid "Home objects"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:49
+#, no-c-format
+msgid ""
+"A Home object provides persistence operations for a particular entity class. "
+"Suppose we have our trusty <literal>Person</literal> class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:52
+#, no-c-format
+msgid ""
+"@Entity\n"
+"public class Person {\n"
+"    @Id private Long id;\n"
+"    private String firstName;\n"
+"    private String lastName;\n"
+"    private Country nationality;\n"
+"    \n"
+"    //getters and setters...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:53
+#, no-c-format
+msgid ""
+"We can define a <literal>personHome</literal> component either via "
+"configuration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:56
+#, no-c-format
+msgid ""
+"&lt;framework:entity-home name=\"personHome\" entity-class=\"eg.Person\" /"
+"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:57
+#, no-c-format
+msgid "Or via extension:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:60
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:61
+#, no-c-format
+msgid ""
+"A Home object provides the following operations: <literal>persist()</"
+"literal>, <literal>remove()</literal>, <literal>update()</literal> and "
+"<literal>getInstance()</literal>. Before you can call the <literal>remove()</"
+"literal>, or <literal>update()</literal> operations, you must first set the "
+"identifier of the object you are interested in, using the <literal>setId()</"
+"literal> method."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:64
+#, no-c-format
+msgid "We can use a Home directly from a JSF page, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:67
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Create Person&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{personHome.instance."
+"firstName}\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{personHome.instance."
+"lastName}\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:68
+#, no-c-format
+msgid ""
+"Usually, it is much nicer to be able to refer to the <literal>Person</"
+"literal> merely as <literal>person</literal>, so let's make that possible by "
+"adding a line to <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:71
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:72
+#, no-c-format
+msgid ""
+"(If we are using configuration.) Or by adding a <literal>@Factory</literal> "
+"method to <literal>PersonHome</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:75
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:76
+#, no-c-format
+msgid ""
+"(If we are using extension.) This change simplifies our JSF page to the "
+"following:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:79
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Create Person&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{person.firstName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{person.lastName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:80
+#, no-c-format
+msgid ""
+"Well, that lets us create new <literal>Person</literal> entries. Yes, that "
+"is all the code that is required! Now, if we want to be able to display, "
+"update and delete pre-existing <literal>Person</literal> entries in the "
+"database, we need to be able to pass the entry identifier to the "
+"<literal>PersonHome</literal>. Page parameters are a great way to do that:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:83
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page viewid=\"/editPerson.jsp\"&gt;\n"
+"        &lt;param name=\"personId\" value=\"#{personHome.id}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:84
+#, no-c-format
+msgid "Now we can add the extra operations to our JSF page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:87
+#, no-c-format
+msgid ""
+"&lt;h1&gt;\n"
+"    &lt;h:outputText rendered=\"#{!personHome.managed}\" value=\"Create "
+"Person\"/&gt;\n"
+"    &lt;h:outputText rendered=\"#{personHome.managed}\" value=\"Edit Person"
+"\"/&gt;\n"
+"&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{person.firstName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{person.lastName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\" \n"
+"            rendered=\"#{!personHome.managed}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Update Person\" action=\"#{personHome."
+"update}\" \n"
+"            rendered=\"#{personHome.managed}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Delete Person\" action=\"#{personHome."
+"remove}\" \n"
+"            rendered=\"#{personHome.managed}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:88
+#, no-c-format
+msgid ""
+"When we link to the page with no request parameters, the page will be "
+"displayed as a \"Create Person\" page. When we provide a value for the "
+"<literal>personId</literal> request parameter, it will be an \"Edit Person\" "
+"page."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:91
+#, no-c-format
+msgid ""
+"Suppose we need to create <literal>Person</literal> entries with their "
+"nationality initialized. We can do that easily, via configuration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:94
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" \n"
+"                       new-instance=\"#{newPerson}\"/&gt;\n"
+"\n"
+"&lt;component name=\"newPerson\" \n"
+"           class=\"eg.Person\"&gt;\n"
+"    &lt;property name=\"nationality\"&gt;#{country}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:95
+#, no-c-format
+msgid "Or by extension:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:98
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:99
+#, no-c-format
+msgid ""
+"Of course, the <literal>Country</literal> could be an object managed by "
+"another Home object, for example, <literal>CountryHome</literal>."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:102
+#, no-c-format
+msgid ""
+"To add more sophisticated operations (association management, etc), we can "
+"just add methods to <literal>PersonHome</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:105
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"    public void migrate()\n"
+"    {\n"
+"        getInstance().setCountry(country);\n"
+"        update();\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:106
+#, no-c-format
+msgid ""
+"The Home object automatically displays faces messages when an operation is "
+"successful. To customize these messages we can, again, use configuration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:109
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\"\n"
+"                       entity-class=\"eg.Person\"\n"
+"                       new-instance=\"#{newPerson}\"&gt;\n"
+"    &lt;framework:created-message&gt;New person #{person.firstName} #{person."
+"lastName} \n"
+"        created&lt;/framework:created-message&gt;\n"
+"    &lt;framework:deleted-message&gt;Person #{person.firstName} #{person."
+"lastName}\n"
+"        deleted&lt;/framework:deleted-message&gt;\n"
+"    &lt;framework:updated-message&gt;Person #{person.firstName} #{person."
+"lastName} \n"
+"        updated&lt;/framework:updated-message&gt;\n"
+"&lt;/framework:entity-home&gt;\n"
+"\n"
+"&lt;component name=\"newPerson\" \n"
+"           class=\"eg.Person\"&gt;\n"
+"    &lt;property name=\"nationality\"&gt;#{country}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:110
+#, no-c-format
+msgid "Or extension:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:113
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"    protected String getCreatedMessage() { return \"New person #{person."
+"firstName} \n"
+"        #{person.lastName} created\"; }\n"
+"    protected String getUpdatedMessage() { return \"Person #{person."
+"firstName} \n"
+"        #{person.lastName} updated\"; }\n"
+"    protected String getDeletedMessage() { return \"Person #{person."
+"firstName} \n"
+"        #{person.lastName} deleted\"; }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:114
+#, no-c-format
+msgid ""
+"But the best way to specify the messages is to put them in a resource bundle "
+"known to Seam (the bundle named <literal>messages</literal>, by default)."
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:117
+#, no-c-format
+msgid ""
+"Person_created=New person #{person.firstName} #{person.lastName} created\n"
+"Person_deleted=Person #{person.firstName} #{person.lastName} deleted\n"
+"Person_updated=Person #{person.firstName} #{person.lastName} updated"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:118
+#, no-c-format
+msgid ""
+"This enables internationalization, and keeps your code and configuration "
+"clean of presentation concerns."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:121
+#, no-c-format
+msgid ""
+"The final step is to add validation functionality to the page, using "
+"<literal>&lt;s:validateAll&gt;</literal> and <literal>&lt;s:decorate&gt;</"
+"literal>, but I'll leave that for you to figure out."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:127
+#, no-c-format
+msgid "Query objects"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:128
+#, no-c-format
+msgid ""
+"If we need a list of all <literal>Person</literal> instance in the database, "
+"we can use a Query object. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:131
+#, no-c-format
+msgid ""
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:132
+#, no-c-format
+msgid "We can use it from a JSF page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:135
+#, no-c-format
+msgid ""
+"&lt;h1&gt;List of people&lt;/h1&gt;\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view-id=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:136
+#, no-c-format
+msgid "We probably need to support pagination:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:139
+#, no-c-format
+msgid ""
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\" \n"
+"                        order=\"lastName\" \n"
+"                        max-results=\"20\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:140
+#, no-c-format
+msgid "We'll use a page parameter to determine the page to display:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:143
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page viewid=\"/searchPerson.jsp\"&gt;\n"
+"        &lt;param name=\"firstResult\" value=\"#{people.firstResult}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:144
+#, no-c-format
+msgid "The JSF code for a pagination control is a bit verbose, but manageable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:147
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Search for people&lt;/h1&gt;\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view-id=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.previousExists}\" "
+"value=\"First Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"0\"/&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.previousExists}\" "
+"value=\"Previous Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.previousFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.nextExists}\" value="
+"\"Next Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.nextFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.nextExists}\" value="
+"\"Last Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.lastFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:148
+#, no-c-format
+msgid ""
+"Real search screens let the user enter a bunch of optional search criteria "
+"to narrow the list of results returned. The Query object lets you specify "
+"optional \"restrictions\" to support this important usecase:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:151
+#, no-c-format
+msgid ""
+"&lt;component name=\"examplePerson\" class=\"Person\"/&gt;\n"
+"        \n"
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\" \n"
+"                        order=\"lastName\" \n"
+"                        max-results=\"20\"&gt;\n"
+"    &lt;framework:restrictions&gt;\n"
+"        &lt;value&gt;lower(firstName) like lower( #{examplePerson.firstName} "
+"+ '&#37;' )&lt;/value&gt;\n"
+"        &lt;value&gt;lower(lastName) like lower( #{examplePerson.lastName} + "
+"'&#37;' )&lt;/value&gt;\n"
+"    &lt;/framework:restrictions&gt;\n"
+"&lt;/framework:entity-query&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:152
+#, no-c-format
+msgid "Notice the use of an \"example\" object."
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:155
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Search for people&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{examplePerson.firstName}"
+"\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{examplePerson.lastName}"
+"\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;&lt;h:commandButton value=\"Search\" action=\"/search.jsp\"/"
+"&gt;&lt;/div&gt;\n"
+"&lt;/h:form&gt;\n"
+"\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view-id=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:156
+#, no-c-format
+msgid ""
+"The examples in this section have all shown reuse by configuration. However, "
+"reuse by extension is equally possible for Query objects."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:162
+#, no-c-format
+msgid "Controller objects"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:163
+#, no-c-format
+msgid ""
+"A totally optional part of the Seam Application Framework is the class "
+"<literal>Controller</literal> and its subclasses <literal>EntityController</"
+"literal><literal>HibernateEntityController</literal> and "
+"<literal>BusinessProcessController</literal>. These classes provide nothing "
+"more than some convenience methods for access to commonly used built-in "
+"components and methods of built-in components. They help save a few "
+"keystrokes (characters can add up!) and provide a great launchpad for new "
+"users to explore the rich functionality built in to Seam."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:166
+#, no-c-format
+msgid ""
+"For example, here is what <literal>RegisterAction</literal> from the Seam "
+"registration example would look like:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:169
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"register\")\n"
+"public class RegisterAction extends EntityController implements Register\n"
+"{\n"
+"\n"
+"   @In private User user;\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = createQuery(\"select u.username from User u where u."
+"username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getResultList();\n"
+"      \n"
+"      if ( existing.size()==0 )\n"
+"      {\n"
+"         persist(user);\n"
+"         info(\"Registered new user #{user.username}\");\n"
+"         return \"/registered.jspx\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         addFacesMessage(\"User #{user.username} already exists\");\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:170
+#, no-c-format
+msgid "As you can see, its not an earthshattering improvement..."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Gettingstarted.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Gettingstarted.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Gettingstarted.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,588 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Gettingstarted.xml:10
+#, no-c-format
+msgid "Getting started with Seam, using seam-gen"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:11
+#, no-c-format
+msgid ""
+"The Seam distribution includes a command line utility that makes it really "
+"easy to set up an Eclipse project, generate some simple Seam skeleton code, "
+"and reverse engineer an application from a pre-existing database."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:14
+#, no-c-format
+msgid ""
+"This is the easy way to get your feet wet with Seam, and gives you some "
+"ammunition for next time you find yourself trapped in an elevator with one "
+"of those tedious Ruby guys ranting about how great and wonderful his new toy "
+"is for building totally trivial applications that put things in databases."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:17
+#, no-c-format
+msgid ""
+"In this release, seam-gen works best for people with JBoss AS. You can use "
+"the generated project with other J2EE or Java EE 5 application servers by "
+"making a few manual changes to the project configuration."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:20
+#, no-c-format
+msgid ""
+"You <emphasis>can</emphasis> use seam-gen without Eclipse, but in this "
+"tutorial, we want to show you how to use it in conjunction with Eclipse for "
+"debugging and integration testing. If you don't want to install Eclipse, you "
+"can still follow along with this tutorial&mdash;all steps can be peformed "
+"from the command line."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:23
+#, no-c-format
+msgid ""
+"Seam-gen is basically just a big ugly Ant script wrapped around Hibernate "
+"Tools, together with some templates. Which means it is easy to customize if "
+"you need to."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:27
+#, no-c-format
+msgid "Before you start"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:28
+#, no-c-format
+msgid ""
+"Make sure you have JDK 5 or JDK 6, JBoss AS 4.0.5 and Ant 1.6, along with "
+"recent versions of Eclipse, the JBoss IDE plugin for Eclipse and the TestNG "
+"plugin for Eclipse correctly installed before starting. Add your JBoss "
+"installation to the JBoss Server View in Eclipse. Start JBoss in debug mode. "
+"Finally, start a command prompt in the directory where you unzipped the Seam "
+"distribution."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:34
+#, no-c-format
+msgid "Setting up a new Eclipse project"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:35
+#, no-c-format
+msgid ""
+"The first thing we need to do is configure seam-gen for your environment: "
+"JBoss AS installation directory, Eclipse workspace, and database connection. "
+"It's easy, just type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:38
+#, no-c-format
+msgid ""
+"cd jboss-seam-1.1.x\n"
+"seam setup"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:39
+#, no-c-format
+msgid "And you will be prompted for the needed information:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:42
+#, no-c-format
+msgid ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam setup\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"setup:\n"
+"    [echo] Welcome to seam-gen :-)\n"
+"    [input] Enter your Java project workspace [C:/Projects]\n"
+"\n"
+"    [input] Enter your JBoss home directory [C:/Program Files/jboss-4.0.5."
+"GA]\n"
+"\n"
+"    [input] Enter the project name [myproject]\n"
+"helloworld\n"
+"    [input] Is this project deployed as an EAR (with EJB components) or a "
+"WAR \n"
+"        (with no EJB support) [ear] (ear,war,)\n"
+"\n"
+"    [input] Enter the Java package name for your session beans [com.mydomain."
+"helloworld]\n"
+"org.jboss.helloworld\n"
+"    [input] Enter the Java package name for your entity beans [org.jboss."
+"helloworld]\n"
+"\n"
+"    [input] Enter the Java package name for your test cases [org.jboss."
+"helloworld.test]\n"
+"\n"
+"    [input] What kind of database are you using? [hsql]\n"
+"    (hsql,mysql,oracle,postgres,mssql,db2,sybase,)\n"
+"mysql\n"
+"    [input] Enter the Hibernate dialect for your database [org.hibernate."
+"dialect.MySQLDialect]\n"
+"\n"
+"    [input] Enter the filesystem path to the JDBC driver jar [lib/hsqldb."
+"jar]\n"
+"../../mysql-connector.jar\n"
+"    [input] Enter JDBC driver class for your database [com.mysql.jdbc."
+"Driver]\n"
+"\n"
+"    [input] Enter the JDBC URL for your database [jdbc:mysql:///test]\n"
+"\n"
+"    [input] Enter database username [sa]\n"
+"gavin\n"
+"    [input] Enter database password []\n"
+"\n"
+"    [input] Are you working with tables that already exist in the database? "
+"[n] (y,n,)\n"
+"y\n"
+"    [input] Do you want to drop and recreate the database tables and data in "
+"import.sql \n"
+"    each time you deploy? [n] (y,n,)\n"
+"n\n"
+"[propertyfile] Creating new property file: C:&#92;Projects&#92;jboss-"
+"seam&#92;seam-gen&#92;build.properties\n"
+"     [echo] Installing JDBC driver jar to JBoss server\n"
+"     [echo] Type 'seam new-project' to create the new project\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 1 minute 17 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:43
+#, no-c-format
+msgid ""
+"The tool provides sensible defaults, which you can accept by just pressing "
+"enter at the prompt."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:46
+#, no-c-format
+msgid ""
+"The most important choice you need to make is between EAR deployment and WAR "
+"deployment of your project. EAR projects support EJB 3.0 and require Java EE "
+"5. WAR projects do not support EJB 3.0, but may be deployed to a J2EE "
+"environment. The packaging of a WAR is also simpler to understand. If you "
+"installed JBoss with the ejb3 profile, choose <literal>ear</literal>. "
+"Otherwise, choose <literal>war</literal>. We'll assume that you've chosen an "
+"EAR deployment for the rest of the tutorial, but you can follow exactly the "
+"same steps for a WAR deployment."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:49
+#, no-c-format
+msgid ""
+"If you are working with an existing data model, make sure you tell seam-gen "
+"that the tables already exist in the database."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:52
+#, no-c-format
+msgid ""
+"The settings are stored in <literal>seam-gen/build.properties</literal>, but "
+"you can also modify them simply by running <literal>seam setup</literal> a "
+"second time."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:55
+#, no-c-format
+msgid ""
+"Now we can create a new project in our Eclipse workspace directory, by "
+"typing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:58
+#, no-c-format
+msgid "seam new-project"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:59
+#, no-c-format
+msgid ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam new-project\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"copy-lib:\n"
+"     [echo] Copying project jars ...\n"
+"     [copy] Copying 32 files to C:&#92;Projects&#92;helloworld&#92;lib\n"
+"     [copy] Copying 9 files to C:&#92;Projects&#92;helloworld&#92;embedded-"
+"ejb\n"
+"\n"
+"file-copy-wtp:\n"
+"\n"
+"file-copy:\n"
+"     [echo] Copying project resources ...\n"
+"     [copy] Copying 12 files to C:&#92;Projects&#92;helloworld&#92;"
+"resources\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;helloworld&#92;resources\n"
+"     [copy] Copying 5 files to C:&#92;Projects&#92;helloworld&#92;view\n"
+"     [copy] Copying 5 files to C:&#92;Projects&#92;helloworld\n"
+"    [mkdir] Created dir: C:&#92;Projects&#92;helloworld&#92;src\n"
+"\n"
+"new-project:\n"
+"     [echo] A new Seam project was created in the C:/Projects directory\n"
+"     [echo] Add the project from inside Eclipse (or type 'seam explode') and "
+"go to http://localhost:\n"
+"8080/helloworld\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 7 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:60
+#, no-c-format
+msgid ""
+"This copies the Seam jars, dependent jars and the JDBC driver jar to a new "
+"Eclipse project, and generates all needed resources and configuration files, "
+"a facelets template file and stylesheet, along with Eclipse metadata and an "
+"Ant build script. The Eclipse project will be automatically deployed to an "
+"exploded directory structure in JBoss AS as soon as you add the project "
+"using <literal>New -&gt; Project... -&gt; Java Project -&gt; Next</literal>, "
+"typing the <literal>Project name</literal> (<literal>myproject</literal> in "
+"this case), selecting your Java SE 5 or Java SE 6 JRE and then clicking "
+"<literal>Finish</literal>. Do not select <literal>Create new project from "
+"existing source</literal>. Alternatively, you can deploy the project from "
+"outside Eclipse by typing <literal>seam explode</literal>."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:63
+#, no-c-format
+msgid ""
+"Go to <literal>http://localhost:8080/helloworld</literal> to see a welcome "
+"page. This is a facelets page, <literal>view/home.xhtml</literal>, using the "
+"template <literal>view/layout/template.xhtml</literal>. You can edit this "
+"page, or the template, in eclipse, and see the results "
+"<emphasis>immediately</emphasis>, by clicking refresh in your browser."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:66
+#, no-c-format
+msgid ""
+"Don't get scared by the XML configuration documents that were generated into "
+"the project directory. They are mostly standard Java EE stuff, the stuff you "
+"need to create once and then never look at again, and they are 90&#37; the "
+"same between all Seam projects. (They are so easy to write that even seam-"
+"gen can do it.)"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:69
+#, no-c-format
+msgid ""
+"The generated project includes three database and persistence "
+"configurations. The <literal>jboss-beans.xml</literal>, <literal>persistence-"
+"test.xml</literal> and <literal>import-test.sql</literal> files are used "
+"when running the TestNG unit tests against HSQLDB. The database schema and "
+"the test data in <literal>import-test.sql</literal> is always exported to "
+"the database before running tests. The <literal>myproject-dev-ds.xml</"
+"literal>, <literal>persistence-dev.xml</literal>and <literal>import-dev.sql</"
+"literal> files are for use when deploying the application to your "
+"development database. The schema might be exported automatically at "
+"deployment, depending upon whether you told seam-gen that you are working "
+"with an existing database. The <literal>myproject-prod-ds.xml</literal>, "
+"<literal>persistence-prod.xml</literal>and <literal>import-prod.sql</"
+"literal> files are for use when deploying the application to your production "
+"database. The schema is not exported automatically at deployment."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:75
+#, no-c-format
+msgid "Creating a new action"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:76
+#, no-c-format
+msgid ""
+"If you're used to traditional action-style web frameworks, you're probably "
+"wondering how you can create a simple webpage with a stateless action method "
+"in Java. If you type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:79
+#, no-c-format
+msgid "seam new-action"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:80
+#, no-c-format
+msgid ""
+"Seam will prompt for some information, and generate a new facelets page and "
+"Seam component for your project."
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:83
+#, no-c-format
+msgid ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam new-action ping\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"action-input:\n"
+"    [input] Enter the Seam component name\n"
+"ping\n"
+"    [input] Enter the local interface name [Ping]\n"
+"\n"
+"    [input] Enter the bean class name [PingBean]\n"
+"\n"
+"    [input] Enter the action method name [ping]\n"
+"\n"
+"    [input] Enter the page name [ping]\n"
+"\n"
+"\n"
+"setup-filters:\n"
+"\n"
+"new-action:\n"
+"     [echo] Creating a new stateless session bean component with an action "
+"method\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;view\n"
+"     [echo] Type 'seam restart' and go to \n"
+"     http://localhost:8080/helloworld/ping.seam\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 13 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:84
+#, no-c-format
+msgid ""
+"Because we've added a new Seam component, we need to restart the exploded "
+"directory deployment. You can do this by typing <literal>seam restart</"
+"literal>, or by running the <literal>restart</literal> target in the "
+"generated project <literal>build.xml</literal> file from inside Eclipse. "
+"Another way to force a restart is to edit the file <literal>resources/META-"
+"INF/application.xml</literal> in Eclipse. <emphasis>Note that you do not "
+"need to restart JBoss each time you change the application.</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:87
+#, no-c-format
+msgid ""
+"Now go to <literal>http://localhost:8080/helloworld/ping.seam</literal> and "
+"click the button. You can see the code behind this action by looking in the "
+"project <literal>src</literal> directory. Put a breakpoint in the "
+"<literal>ping()</literal> method, and click the button again."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:90
+#, no-c-format
+msgid ""
+"Finally, locate the <literal>PingTest.xml</literal> file in the test package "
+"and run the integration tests using the TestNG plugin for Eclipse. "
+"Alternatively, run the tests using <literal>seam test</literal> or the "
+"<literal>test</literal> target of the generated build."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:96
+#, no-c-format
+msgid "Creating a form with an action"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:97
+#, no-c-format
+msgid "The next step is to create a form. Type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:100
+#, no-c-format
+msgid "seam new-form"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:101
+#, no-c-format
+msgid ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam new-form\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"action-input:\n"
+"    [input] Enter the Seam component name\n"
+"hello\n"
+"    [input] Enter the local interface name [Hello]\n"
+"\n"
+"    [input] Enter the bean class name [HelloBean]\n"
+"\n"
+"    [input] Enter the action method name [hello]\n"
+"\n"
+"    [input] Enter the page name [hello]\n"
+"\n"
+"\n"
+"setup-filters:\n"
+"\n"
+"new-form:\n"
+"     [echo] Creating a new stateful session bean component with an action "
+"method\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;view\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [echo] Type 'seam restart' and go to http://localhost:8080/hello/hello."
+"seam\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 5 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:102
+#, no-c-format
+msgid ""
+"Restart the application again, and go to <literal>http://localhost:8080/"
+"helloworld/hello.seam</literal>. Then take a look at the generated code. Run "
+"the test. Try adding some new fields to the form and Seam component "
+"(remember to restart the deploment each time you change the Java code)."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:108
+#, no-c-format
+msgid "Generating an application from an existing database"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:109
+#, no-c-format
+msgid ""
+"Manually create some tables in your database. (If you need to switch to a "
+"different database, just run <literal>seam setup</literal> again.) Now type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:112
+#, no-c-format
+msgid "seam generate-entities"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:113
+#, no-c-format
+msgid ""
+"Restart the deployment, and go to <literal>http://localhost:8080/helloworld</"
+"literal>. You can browse the database, edit existing objects, and create new "
+"objects. If you look at the generated code, you'll probably be amazed how "
+"simple it is! Seam was designed so that data access code is easy to write by "
+"hand, even for people who don't want to cheat by using seam-gen."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:119
+#, no-c-format
+msgid "Deploying the application as an EAR"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:120
+#, no-c-format
+msgid ""
+"Finally, we want to be able to deploy the application using standard Java EE "
+"5 packaging. First, we need to remove the exploded directory by running "
+"<literal>seam unexplode</literal>. To deploy the EAR, we can type "
+"<literal>seam deploy</literal> at the command prompt, or run the "
+"<literal>deploy</literal> target of the generated project build script. You "
+"can undeploy using <literal>seam undeploy</literal> or the "
+"<literal>undeploy</literal> target."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:123
+#, no-c-format
+msgid ""
+"By default, the application will be deployed with the <emphasis>dev profile</"
+"emphasis>. The EAR will include the <literal>persistence-dev.xml</literal> "
+"and <literal>import-dev.sql</literal> files, and the <literal>myproject-dev-"
+"ds.xml</literal> file will be deployed. You can change the profile, and use "
+"the <emphasis>prod profile</emphasis>, by typing"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:126
+#, no-c-format
+msgid "seam -Dprofile=prod deploy"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:127
+#, no-c-format
+msgid ""
+"You can even define new deployment profiles for your application. Just add "
+"appropriately named files to your project&mdash;for example, "
+"<literal>persistence-staging.xml</literal>, <literal>import-staging.sql</"
+"literal> and <literal>myproject-staging-ds.xml</literal>&mdash;and select "
+"the name of the profile using <literal>-Dprofile=staging</literal>."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/I18n.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/I18n.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/I18n.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,533 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: I18n.xml:10
+#, no-c-format
+msgid "Internationalization and themes"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:11
+#, no-c-format
+msgid ""
+"Seam makes it easy to build internationalized applications by providing "
+"several built-in components for handling multi-language UI messages."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:15
+#, no-c-format
+msgid "Locales"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:16
+#, no-c-format
+msgid ""
+"Each user login session has an associated instance of <literal>java.util."
+"Locale</literal> (available to the application as a session-scoped component "
+"named <literal>locale</literal>). Under normal circumstances, you won't need "
+"to do any special configuration to set the locale. Seam just delegates to "
+"JSF to determine the active locale:"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:21
+#, no-c-format
+msgid ""
+"If there is a locale associated with the HTTP request (the browser locale), "
+"and that locale is in the list of supported locales from <literal>faces-"
+"config.xml</literal>, use that locale for the rest of the session."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:24
+#, no-c-format
+msgid ""
+"Otherwise, if a default locale was specified in the <literal>faces-config."
+"xml</literal>, use that locale for the rest of the session."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:27
+#, no-c-format
+msgid "Otherwise, use the default locale of the server."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:30
+#, no-c-format
+msgid ""
+"It is <emphasis>possible</emphasis> to set the locale manually via the Seam "
+"configuration properties <literal>org.jboss.seam.core.localeSelector."
+"language</literal>, <literal>org.jboss.seam.core.localeSelector.country</"
+"literal> and <literal>org.jboss.seam.core.localeSelector.variant</literal>, "
+"but we can't think of any good reason to ever do this."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:33
+#, no-c-format
+msgid ""
+"It is, however, useful to allow the user to set the locale manually via the "
+"application user interface. Seam provides built-in functionality for "
+"overriding the locale determined by the algorithm above. All you have to do "
+"is add the following fragment to a form in your JSP or Facelets page:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:36
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{localeSelector.language}\"&gt;\n"
+"    &lt;f:selectItem itemLabel=\"English\" itemValue=\"en\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Deutsch\" itemValue=\"de\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Francais\" itemValue=\"fr\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{localeSelector.select}\" value=\"#{messages"
+"['ChangeLanguage']}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:37
+#, no-c-format
+msgid ""
+"Or, if you want a list of all supported locales from <literal>faces-config."
+"xml</literal>, just use:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:40
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{localeSelector.localeString}\"&gt;\n"
+"    &lt;f:selectItems value=\"#{localeSelector.supportedLocales}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{localeSelector.select}\" value=\"#{messages"
+"['ChangeLanguage']}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:41
+#, no-c-format
+msgid ""
+"When this use selects an item from the drop-down, and clicks the button, the "
+"Seam and JSF locales will be overridden for the rest of the session."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:47
+#, no-c-format
+msgid "Labels"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:48
+#, no-c-format
+msgid ""
+"JSF supports internationalization of user interface labels and descriptive "
+"text via the use of <literal>&lt;f:loadBundle /&gt;</literal>. You can use "
+"this approach in Seam applications. Alternatively, you can take advantage of "
+"the Seam <literal>messages</literal> component to display templated labels "
+"with embedded EL expressions."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:52
+#, no-c-format
+msgid "Defining labels"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:53
+#, no-c-format
+msgid ""
+"Each login session has an associated instance of <literal>java.util."
+"ResourceBundle</literal> (available to the application as a session-scoped "
+"component named <literal>org.jboss.seam.core.resourceBundle</literal>). "
+"You'll need to make your internationalized labels available via this special "
+"resource bundle. By default, the resource bundle used by Seam is named "
+"<literal>messages</literal> and so you'll need to define your labels in "
+"files named <literal>messages.properties</literal>, <literal>messages_en."
+"properties</literal>, <literal>messages_en_AU.properties</literal>, etc. "
+"These files usually belong in the <literal>WEB-INF/classes</literal> "
+"directory."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:56
+#, no-c-format
+msgid "So, in <literal>messages_en.properties</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:59
+#, no-c-format
+msgid "Hello=Hello"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:60
+#, no-c-format
+msgid "And in <literal>messages_en_AU.properties</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:63
+#, no-c-format
+msgid "Hello=G'day"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:64
+#, no-c-format
+msgid ""
+"You can select a different name for the resource bundle by setting the Seam "
+"configuration property named <literal>org.jboss.seam.core.resourceBundle."
+"bundleNames</literal>. You can even specify a list of resource bundle names "
+"to be searched (depth first) for messages."
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:67
+#, no-c-format
+msgid ""
+"&lt;core:resource-bundle&gt;\n"
+"    &lt;core:bundle-names&gt;\n"
+"        &lt;value&gt;mycompany_messages&lt;/value&gt;\n"
+"        &lt;value&gt;standard_messages&lt;/value&gt;       \n"
+"    &lt;/core:bundle-names&gt;\n"
+"&lt;/core:resource-bundle&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:68
+#, no-c-format
+msgid ""
+"If you want to define a message just for a particular page, you can specify "
+"it in a resource bundle with the same name as the JSF view id, with the "
+"leading <literal>/</literal> and trailing file extension removed. So we "
+"could put our message in <literal>welcome/hello_en.properties</literal> if "
+"we only needed to display the message on <literal>/welcome/hello.jsp</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:71
+#, no-c-format
+msgid ""
+"You can even specify an explicit bundle name in <literal>pages.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:74
+#, no-c-format
+msgid "&lt;page view-id=\"/welcome/hello.jsp\" bundle=\"HelloMessages\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:75
+#, no-c-format
+msgid ""
+"Then we could use messages defined in <literal>HelloMessages.properties</"
+"literal> on <literal>/welcome/hello.jsp</literal>."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:81
+#, no-c-format
+msgid "Displaying labels"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:82
+#, no-c-format
+msgid ""
+"If you define your labels using the Seam resource bundle, you'll be able to "
+"use them without having to type <literal>&lt;f:loadBundle ... /&gt;</"
+"literal> on every page. Instead, you can simply type:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:85
+#, no-c-format
+msgid "&lt;h:outputText value=\"#{messages['Hello']}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:86
+#, no-c-format
+msgid "<para>or:</para>"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:89
+#, no-c-format
+msgid "&lt;h:outputText value=\"#{messages.Hello}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:90
+#, no-c-format
+msgid "Even better, the messages themselves may contain EL expressions:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:93
+#, no-c-format
+msgid "Hello=Hello, #{user.firstName} #{user.lastName}"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:94
+#, no-c-format
+msgid "Hello=G'day, #{user.firstName}"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:95
+#, no-c-format
+msgid "You can even use the messages in your code:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:98
+#, no-c-format
+msgid "@In private Map&lt;String, String&gt; messages;"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:99
+#, no-c-format
+msgid "@In(\"#{messages['Hello']}\") private String helloMessage;"
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:103
+#, no-c-format
+msgid "Faces messages"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:104
+#, no-c-format
+msgid ""
+"The <literal>facesMessages</literal> component is a super-convenient way to "
+"display success or failure messages to the user. The functionality we just "
+"described also works for faces messages:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:107
+#, no-c-format
+msgid ""
+"@Name(\"hello\")\n"
+"@Stateless\n"
+"public class HelloBean implements Hello {\n"
+"    @In FacesMessages facesMessages;\n"
+"    \n"
+"    public String sayIt() {\n"
+"        facesMessages.addFromResourceBundle(\"Hello\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:108
+#, no-c-format
+msgid ""
+"This will display <literal>Hello, Gavin King</literal> or <literal>G'day, "
+"Gavin</literal>, depending upon the user's locale."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:116
+#, no-c-format
+msgid "Timezones"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:117
+#, no-c-format
+msgid ""
+"There is also a session-scoped instance of <literal>java.util.Timezone</"
+"literal>, named <literal>org.jboss.seam.core.timezone</literal>, and a Seam "
+"component for changing the timezone named <literal>org.jboss.seam.core."
+"timezoneSelector</literal>. By default, the timezone is the default timezone "
+"of the server. Unfortunately, the JSF specification says that all dates and "
+"times should be assumed to be UTC, and displayed as UTC, unless a timezone "
+"is explicitly specified using <literal>&lt;f:convertDateTime&gt;</literal>. "
+"This is an extremely inconvenient default behavior."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:120
+#, no-c-format
+msgid ""
+"Seam overrides this behavior, and defaults all dates and times to the Seam "
+"timezone. In addition, Seam provides the <literal>&lt;s:convertDateTime&gt;</"
+"literal> tag which always performs conversions in the Seam timezone."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:126
+#, no-c-format
+msgid "Themes"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:127
+#, no-c-format
+msgid ""
+"Seam applications are also very easily skinnable. The theme API is very "
+"similar to the localization API, but of course these two concerns are "
+"orthogonal, and some applications support both localization and themes."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:130
+#, no-c-format
+msgid "First, configure the set of supported themes:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:133
+#, no-c-format
+msgid ""
+"&lt;theme:theme-selector cookie-enabled=\"true\"&gt;\n"
+"    &lt;theme:available-themes&gt;\n"
+"        &lt;value&gt;default&lt;/value&gt;\n"
+"        &lt;value&gt;accessible&lt;/value&gt;\n"
+"        &lt;value&gt;printable&lt;/value&gt;\n"
+"    &lt;/theme:available-themes&gt;\n"
+"&lt;/theme:theme-selector&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:134
+#, no-c-format
+msgid "Note that the first theme listed is the default theme."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:137
+#, no-c-format
+msgid ""
+"Themes are defined in a properties file with the same name as the theme. For "
+"example, the <literal>default</literal> theme is defined as a set of entries "
+"in <literal>default.properties</literal>. For example, <literal>default."
+"properties</literal> might define:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:140
+#, no-c-format
+msgid ""
+"css ../screen.css\n"
+"template template.xhtml"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:141
+#, no-c-format
+msgid ""
+"Usually the entries in a theme resource bundle will be paths to CSS styles "
+"or images and names of facelets templates (unlike localization resource "
+"bundles which are usually text)."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:144
+#, no-c-format
+msgid ""
+"Now we can use these entries in our JSP or facelets pages. For example, to "
+"theme the stylesheet in a facelets page:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:147
+#, no-c-format
+msgid ""
+"&lt;link href=\"#{theme.css}\" rel=\"stylesheet\" type=\"text/css\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:148
+#, no-c-format
+msgid ""
+"Most powerfully, facelets lets us theme the template used by a <literal>&lt;"
+"ui:composition&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:151
+#, no-c-format
+msgid ""
+"&lt;ui:composition xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"    xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"    xmlns:h=\"http://java.sun.com/jsf/html\"\n"
+"    xmlns:f=\"http://java.sun.com/jsf/core\"\n"
+"    template=\"#{theme.template}\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:152
+#, no-c-format
+msgid ""
+"Just like the locale selector, there is a built-in theme selector to allow "
+"the user to freely switch themes:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:155
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{themeSelector.theme}\"&gt;\n"
+"    &lt;f:selectItems value=\"#{themeSelector.themes}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{themeSelector.select}\" value=\"Select Theme"
+"\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:159
+#, no-c-format
+msgid "Persisting locale and theme preferences via cookies"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:160
+#, no-c-format
+msgid ""
+"The locale selector, theme selector and timezone selector all support "
+"persistence of locale and theme preference to a cookie. Simply set the "
+"<literal>cookie-enabled</literal> configuration property:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:163
+#, no-c-format
+msgid ""
+"&lt;theme:theme-selector cookie-enabled=\"true\"&gt;\n"
+"    &lt;theme:available-themes&gt;\n"
+"        &lt;value&gt;default&lt;/value&gt;\n"
+"        &lt;value&gt;accessible&lt;/value&gt;\n"
+"        &lt;value&gt;printable&lt;/value&gt;\n"
+"    &lt;/theme:available-themes&gt;\n"
+"&lt;/theme:theme-selector&gt;\n"
+"\n"
+"&lt;core:locale-selector cookie-enabled=\"true\"/&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Itext.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Itext.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Itext.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1452 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Itext.xml:10
+#, no-c-format
+msgid "iText PDF generation"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:11
+#, no-c-format
+msgid ""
+"Seam now includes an component set for generating documents using iText. The "
+"primary focus of Seam's iText document support is for the generation of PDF "
+"doucuments, but Seam also offers basic support for RTF document generation."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:15
+#, no-c-format
+msgid "Using PDF Support"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:16
+#, no-c-format
+msgid ""
+"iText support is provided by <literal>jboss-seam-pdf.jar</literal>. This JAR "
+"contains the iText JSF controls, which are used to construct views that can "
+"render to PDF, and the DocumentStore component, which serves the rendered "
+"documents to the user. To include PDF support in your application, included "
+"<literal>jboss-seam-pdf.jar</literal> in your <literal>WEB-INF/lib</literal> "
+"directory along with the iText JAR file. There is no further configuration "
+"needed to use Seam's iText support."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:19
+#, no-c-format
+msgid ""
+"The Seam iText module requires the use of Facelets as the view technology. "
+"Future versions of the library may also support the use of JSP. "
+"Additionally, it requires the use of the seam-ui package."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:22
+#, no-c-format
+msgid ""
+"The <literal>examples/itext</literal> project contains an example of the PDF "
+"support in action. It demonstrates proper deployment packaging, and it "
+"contains a number examples that demonstrate the key PDF generation features "
+"current supported."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:28
+#, no-c-format
+msgid "Creating a document"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:29
+#, no-c-format
+msgid ""
+"Documents are generated by facelets documents using tags in the "
+"<literal>http://jboss.com/products/seam/pdf</literal> namespace. Documents "
+"should always have the <literal>document</literal> tag at the root of the "
+"document. The <literal>document</literal> tag prepares Seam to generate a "
+"document into the DocumentStore and renders an HTML redirect to that stored "
+"content. The following is a a small PDF document consisting only a single "
+"line of text:"
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:32
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf"
+"\"&gt;                                                      \n"
+"   The document goes "
+"here.                                                                                             \n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:34
+#, no-c-format
+msgid "p:document"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:35
+#, no-c-format
+msgid ""
+"The <literal>p:document</literal> tag supports the following attributes:"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:40
+#, no-c-format
+msgid "type"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:42
+#, no-c-format
+msgid ""
+"The type of the document to be produced. Valid values are <literal>PDF</"
+"literal>, <literal>RTF</literal> and <literal>HTML</literal> modes. Seam "
+"defaults to PDF generation, and many of the features only work correctly "
+"when generating PDF documents."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:48
+#, no-c-format
+msgid "pageSize"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:50
+#, no-c-format
+msgid ""
+"The size of the page to be generate. The most commonly used values would be "
+"<literal>LETTER</literal> and <literal>A4</literal>. A full list of "
+"supported pages sizes can be found in <literal>com.lowagie.text.PageSize</"
+"literal> class. Alternatively, pageSize can provide the width and height of "
+"the page directly. The value \"612 792\", for example, is equizalent to the "
+"LETTER page size."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:56
+#, no-c-format
+msgid "orientation"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:58
+#, no-c-format
+msgid ""
+"The orientation of the page. Valid values are <literal>portrait</literal> "
+"and <literal>landscape</literal>. In landscape mode, the height and width "
+"page size values are reversed."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:64
+#, no-c-format
+msgid "margins"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:66
+#, no-c-format
+msgid "The left, right, top and bottom margin values."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:72
+#, no-c-format
+msgid "marginMirroring"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:74
+#, no-c-format
+msgid "Indicates that margin settings should be reversed an alternating pages."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:80
+#, no-c-format
+msgid ""
+"Document metadata is also set as attributes of the document tag. The "
+"following metadata fields are supported:"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:85
+#, no-c-format
+msgid "title"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:92
+#, no-c-format
+msgid "subject"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:99
+#, no-c-format
+msgid "keywords"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:106
+#, no-c-format
+msgid "author"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:113
+#, no-c-format
+msgid "creator"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:125
+#, no-c-format
+msgid "Basic Text Elements"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:126
+#, no-c-format
+msgid ""
+"Useful documents will need to contain more than just text; however, the "
+"standard UI components are geared towards HTML generation and are not useful "
+"for generating PDF content. Instead, Seam provides a special UI components "
+"for generating suitable PDF content. Tags like <literal>&lt;p:image&gt;</"
+"literal> and <literal>&lt;p:paragraph&gt;</literal> are the basic "
+"foundations of simple documents. Tags like <literal>&lt;p:font&gt;</literal> "
+"provide style information to all the content surrounging them."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:129
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"&gt; \n"
+"    &lt;p:image alignment=\"right\" wrap=\"true\" resource=\"/logo.jpg\" /"
+"&gt;\n"
+"    &lt;p:font size=\"24\"&gt;\n"
+"        &lt;p:paragraph spacingAfter=\"50\"&gt;My First Document&lt;/p:"
+"paragraph&gt;\n"
+"    &lt;/p:font&gt;\n"
+"\n"
+"    &lt;p:paragraph alignment=\"justify\"&gt;\n"
+"        This is a simple document.  It isn't very fancy.\n"
+"    &lt;/p:paragraph&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:131
+#, no-c-format
+msgid "p:paragraph"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:132
+#, no-c-format
+msgid ""
+"Most uses of text should be sectioned into paragraphs so that text fragments "
+"can be flowed, formatted and styled in logical groups."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:137
+#, no-c-format
+msgid "firstLineIndent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:144 Itext.xml:836
+#, no-c-format
+msgid "extraParagraphSpace"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:151 Itext.xml:808
+#, no-c-format
+msgid "leading"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:158 Itext.xml:815
+#, no-c-format
+msgid "multipliedLeading"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:165 Itext.xml:344 Itext.xml:716
+#, no-c-format
+msgid "spacingBefore"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:167 Itext.xml:346 Itext.xml:718
+#, no-c-format
+msgid "The blank space to be inserted before the element."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:173 Itext.xml:352 Itext.xml:724
+#, no-c-format
+msgid "spacingAfter"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:175 Itext.xml:354 Itext.xml:726
+#, no-c-format
+msgid "The blank space to be inserted after the element."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:181 Itext.xml:330 Itext.xml:599
+#, no-c-format
+msgid "indentationLeft"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:188 Itext.xml:337 Itext.xml:607
+#, no-c-format
+msgid "indentationRight"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:195 Itext.xml:753
+#, no-c-format
+msgid "keepTogether"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:205
+#, no-c-format
+msgid "p:text"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:206
+#, no-c-format
+msgid ""
+"The <literal>text</literal> tag allows text fragments to be produced from "
+"application data using normal JSF converter mechanisms. It is very similar "
+"to the <literal>outputText</literal> tag used when rendering HTML documents. "
+"Here is an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:209
+#, no-c-format
+msgid ""
+"&lt;p:paragraph&gt;\n"
+"    The item costs &lt;p:text value=\"#{product.price}\"&gt;\n"
+"        &lt;f:convertNumber type=\"currency\" currencySymbol=\"&#36;\"/&gt;\n"
+"    &lt;/p:text&gt;\n"
+"&lt;/p:paragraph&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:212
+#, no-c-format
+msgid "value"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:214
+#, no-c-format
+msgid ""
+"The value to be displayed. This will typically be a value binding expression."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:223
+#, no-c-format
+msgid "p:font"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:224
+#, no-c-format
+msgid "Font declarations have no direct"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:229
+#, no-c-format
+msgid "familyName"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:231
+#, no-c-format
+msgid ""
+"The font family. One of: <literal>COURIER</literal>, <literal>HELVETICA</"
+"literal>, <literal>TIMES-ROMAN</literal>, <literal>SYMBOL</literal> or "
+"<literal>ZAPFDINGBATS</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:237
+#, no-c-format
+msgid "size"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:239
+#, no-c-format
+msgid "The point size of the font."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:245 Itext.xml:534
+#, no-c-format
+msgid "style"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:247
+#, no-c-format
+msgid ""
+"The font styles. Any combination of : <literal>NORMAL</literal>, "
+"<literal>BOLD</literal>, <literal>ITALIC</literal>, <literal>OBLIQUE</"
+"literal>, <literal>UNDERLINE</literal>, <literal>LINE-THROUGH</literal>"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:256
+#, no-c-format
+msgid "p:newPage"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:257
+#, no-c-format
+msgid "<literal>p:newPage</literal> inserts a page break."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:263
+#, no-c-format
+msgid "p:image"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:264
+#, no-c-format
+msgid ""
+"<literal>p:image</literal> inserts an image into the document. Images can be "
+"be loaded from the classpath or from the web application context using the "
+"<literal>resource</literal> attribute."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:267
+#, no-c-format
+msgid "&lt;p:image resource=\"/jboss.jpg\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:268
+#, no-c-format
+msgid ""
+"Resources can also be dynamically generated by application code. The "
+"<literal>imageData</literal> attribute can specify a value binding "
+"expression whose value is a <literal>java.awt.Image</literal> object."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:271
+#, no-c-format
+msgid "&lt;p:image imageData=\"#{images.chart}\" /&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:274
+#, no-c-format
+msgid "resource"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:276
+#, no-c-format
+msgid ""
+"The location of the image resource to be included. Resources should be "
+"relative to the document root of the web application."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:282
+#, no-c-format
+msgid "imageData"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:284
+#, no-c-format
+msgid "A method expression binding to an application-generated image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:290 Itext.xml:913
+#, no-c-format
+msgid "rotation"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:292
+#, no-c-format
+msgid "The rotation of the image in degrees."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:298
+#, no-c-format
+msgid "height"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:300
+#, no-c-format
+msgid "The height of the image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:306
+#, no-c-format
+msgid "width"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:308
+#, no-c-format
+msgid "The width of the image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:314 Itext.xml:441 Itext.xml:591
+#, no-c-format
+msgid "alignment"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:316
+#, no-c-format
+msgid ""
+"The alignment of the image. (see <xref linkend=\"Document_Constants-"
+"Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:322
+#, no-c-format
+msgid "<literal>alt</literal>"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:324
+#, no-c-format
+msgid "Alternative text representation for the image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:360 Itext.xml:672
+#, no-c-format
+msgid "widthPercentage"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:367
+#, no-c-format
+msgid "initialRotation"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:374
+#, no-c-format
+msgid "<literal>dpi</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:381
+#, no-c-format
+msgid "scalePercent"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:383
+#, no-c-format
+msgid ""
+"The scaling factor (as a percentage) to use for the image. This can be "
+"expressed as a single percentage value or as two percentage values "
+"representing separate x and y scaling percentages."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:389
+#, no-c-format
+msgid "wrap"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:396
+#, no-c-format
+msgid "underlying"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:406
+#, no-c-format
+msgid "p:anchor"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:407
+#, no-c-format
+msgid ""
+"<literal>p:anchor</literal> defines clickable links from a document. It "
+"supports the following attributes:"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:412
+#, no-c-format
+msgid "name"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:414
+#, no-c-format
+msgid "The name of an in-document anchor destination."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:420
+#, no-c-format
+msgid "reference"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:422
+#, no-c-format
+msgid ""
+"The destination the link refers to. Links to other points in the document "
+"should begin with a \"#\". For example, \"#link1\" to refer to an anchor "
+"postion with a <literal>name</literal> of <literal>link1</literal>. Links "
+"may also be a full URL to point to a resource outside of the document."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:433
+#, no-c-format
+msgid "Headers and Footers"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:435
+#, no-c-format
+msgid "p:header and p:footer"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:436
+#, no-c-format
+msgid ""
+"The <literal>p:header</literal> and <literal>p:footer</literal> components "
+"provide the ability to place header and footer text on each page of a "
+"generated document, with the exception of the first page. Header and footer "
+"declarations should appear near the top of a document."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:443
+#, no-c-format
+msgid ""
+"The alignment of the header/footer box section. (see <xref linkend="
+"\"Document_Constants-Alignment_Values\"/> for alignment values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:449
+#, no-c-format
+msgid "backgroundColor"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:451
+#, no-c-format
+msgid ""
+"The background color of the header/footer box. (see <xref linkend="
+"\"Document_Constants-Color_Values\"/> for color values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:457
+#, no-c-format
+msgid "borderColor"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:459
+#, no-c-format
+msgid ""
+"The border color of the header/footer box. Individual border sides can be "
+"set using <literal>borderColorLeft</literal>, <literal>borderColorRight</"
+"literal>, <literal>borderColorTop</literal> and <literal>borderColorBottom</"
+"literal>.(see <xref linkend=\"Document_Constants-Color_Values\"/> for color "
+"values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:465
+#, no-c-format
+msgid "borderWidth"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:467
+#, no-c-format
+msgid ""
+"The width of the border. Inidvidual border sides can be specified using "
+"<literal>borderWidthLeft</literal>, <literal>borderWidthRight</literal>, "
+"<literal>borderWidthTop</literal> and <literal>borderWidthBottom</literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:476
+#, no-c-format
+msgid "p:pageNumber"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:477
+#, no-c-format
+msgid ""
+"The current page number can be placed inside of a header or footer using the "
+"<literal>p:pageNumber</literal> tag. The page number tag can only be used in "
+"the context of a header or footer and can only be used once."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:485
+#, no-c-format
+msgid "Chapters and Sections"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:486
+#, no-c-format
+msgid ""
+"If the generated document follows a book/article structure, the <literal>p:"
+"chapter</literal> and <literal>p:section</literal> tags can be used to "
+"provide the necessary structure. Sections can only be used inside of "
+"chapters, but they may be nested arbitrarily deep. Most PDF viewers provide "
+"easy navigation between chapters and sections in a document."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:489
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"\n"
+"            title=\"Hello\"&gt;\n"
+"\n"
+"   &lt;p:chapter number=\"1\"&gt;\n"
+"      &lt;p:title&gt;&lt;p:paragraph&gt;Hello&lt;/p:paragraph&gt;&lt;/p:"
+"title&gt;\n"
+"      &lt;p:paragraph&gt;Hello #{user.name}!&lt;/p:paragraph&gt;\n"
+"   &lt;/p:chapter&gt;\n"
+"\n"
+"   &lt;p:chapter number=\"2\"&gt;\n"
+"      &lt;p:title&gt;&lt;p:paragraph&gt;Goodbye&lt;/p:paragraph&gt;&lt;/p:"
+"title&gt;\n"
+"      &lt;p:paragraph&gt;Goodbye #{user.name}.&lt;/p:paragraph&gt;\n"
+"   &lt;/p:chapter&gt;\n"
+"\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:491
+#, no-c-format
+msgid "p:chapter and p:section"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:494
+#, no-c-format
+msgid "number"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:496
+#, no-c-format
+msgid "The chapter number. Every chapter should be assigned a chapter number."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:502
+#, no-c-format
+msgid "numberDepth"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:504
+#, no-c-format
+msgid ""
+"The depth of numbering for section. All sections are numbered relative to "
+"their surrounding chapter/sections. The fourth section of of the first "
+"section of chapter three would be section 3.1.4, if displayed at the default "
+"number depth of three. To omit the chapter number, a number depth of 2 "
+"should be used. In that case, the section number would be displayed as 1.4."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:513
+#, no-c-format
+msgid "p:title"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:514
+#, no-c-format
+msgid ""
+"Any chapter or section can contain a <literal>p:title</literal>. The title "
+"will be displayed next to the chapter/section number. The body of the title "
+"may contain raw text or may be a <literal>p:paragraph</literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:522
+#, no-c-format
+msgid "Lists"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:523
+#, no-c-format
+msgid ""
+"List structures can be displayed using the <literal>p:list</literal> and "
+"<literal>p:listItem</literal> tags. Lists may contain arbitrarily-nested "
+"sublists. List items may not be used outside of a list. he following "
+"document uses the <literal>ui:repeat</literal> tag to to display a list of "
+"values retrieved from a Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:526
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"\n"
+"            xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"            title=\"Hello\"&gt;\n"
+"   &lt;p:list style=\"numbered\"&gt;\n"
+"      &lt;ui:repeat value=\"#{documents}\" var=\"doc\"&gt;\n"
+"         &lt;p:listItem&gt;#{doc.name}&lt;/p:listItem&gt;\n"
+"      &lt;/ui:repeat&gt;\n"
+"   &lt;/p:list&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:528
+#, no-c-format
+msgid "p:list"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:529
+#, no-c-format
+msgid "<literal>p:list</literal> supports the following attributes:"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:536
+#, no-c-format
+msgid ""
+"The ordering/bulleting style of list. One of: <literal>NUMBERED</literal>, "
+"<literal>LETTERED</literal>, <literal>GREEK</literal>, <literal>ROMAN</"
+"literal>, <literal>ZAPFDINGBATS</literal>, <literal>ZAPFDINGBATS_NUMBER</"
+"literal>. If no style is given, the list items are bulleted."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:542 Itext.xml:615
+#, no-c-format
+msgid "listSymbol"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:544
+#, no-c-format
+msgid "For bulleted lists, specifies the bullet symbol."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:550 Itext.xml:822
+#, no-c-format
+msgid "indent"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:552
+#, no-c-format
+msgid "The indentation level of the list."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:558
+#, no-c-format
+msgid "lowerCase"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:560
+#, no-c-format
+msgid ""
+"For list styles using letters, indicates whether the letters should be lower "
+"case."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:566
+#, no-c-format
+msgid "charNumber"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:568
+#, no-c-format
+msgid "For ZAPFDINGBATS, indicates the character code of the bullet character."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:574
+#, no-c-format
+msgid "numberType"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:576
+#, no-c-format
+msgid "For ZAPFDINGBATS_NUMBER, indicates the numbering style."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:585
+#, no-c-format
+msgid "p:listItem"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:586
+#, no-c-format
+msgid "<literal>p:listItem</literal> supports the following attributes:"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:593
+#, no-c-format
+msgid ""
+"The alignment of the list item. (See <xref linkend=\"Document_Constants-"
+"Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:601
+#, no-c-format
+msgid "The left indentation amount."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:609
+#, no-c-format
+msgid "The right indentation amount."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:617
+#, no-c-format
+msgid "Overrides the default list symbol for this list item."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:628
+#, no-c-format
+msgid "Tables"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:629
+#, no-c-format
+msgid ""
+"Table structures can be created using the <literal>p:table</literal> and "
+"<literal>p:cell</literal> tags. Unlike many table structures, there is no "
+"explicit row declaration. If a table has 3 columns, then every 3 cells will "
+"automatically form a row. Header and footer rows can be declared, and the "
+"headers and footers will be repeated in the event a table structure spans "
+"multiple pages."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:632
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"   \n"
+"            xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"            title=\"Hello\"&gt;   \n"
+"   &lt;p:table columns=\"3\" headerRows=\"1\"&gt;\n"
+"      &lt;p:cell&gt;name&lt;/p:cell&gt;\n"
+"      &lt;p:cell&gt;owner&lt;/p:cell&gt;\n"
+"      &lt;p:cell&gt;size&lt;/p:cell&gt;\n"
+"      &lt;ui:repeat value=\"#{documents}\" var=\"doc\"&gt;\n"
+"         &lt;p:cell&gt;#{doc.name}&lt;/p:cell&gt;\n"
+"         &lt;p:cell&gt;#{doc.user.name}&lt;/p:cell&gt;\n"
+"         &lt;p:cell&gt;#{doc.size}&lt;/p:cell&gt;\n"
+"      &lt;/ui:repeat&gt;\n"
+"   &lt;/p:table&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:634
+#, no-c-format
+msgid "p:table"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:635
+#, no-c-format
+msgid "<literal>p:table</literal> supports the following attributes."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:640
+#, no-c-format
+msgid "columns"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:642
+#, no-c-format
+msgid "The number of columns (cells) that make up a table row."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:648
+#, no-c-format
+msgid "widths"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:650
+#, no-c-format
+msgid ""
+"The relative widths of each column. There should be one value for each "
+"column. For example: widths=\"2 1 1\" would indicate that there are 3 "
+"columns and the first column should be twice the size of the second and "
+"third column."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:656
+#, no-c-format
+msgid "headerRows"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:658
+#, no-c-format
+msgid ""
+"The initial number of rows which are considered to be headers or footer rows "
+"and should be repeated if the table spans multiple pages."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:664
+#, no-c-format
+msgid "footerRows"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:666
+#, no-c-format
+msgid ""
+"The number of rows that are considered to be footer rows. This value is "
+"subtracted from the <literal>headerRows</literal> value. If document has 2 "
+"rows which make up the header and one row that makes up the footer, "
+"<literal>headerRows</literal> should be set to 3 and <literal>footerRows</"
+"literal> should be set to 1"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:674
+#, no-c-format
+msgid "The percentage of the page width that the table spans."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:680 Itext.xml:777
+#, no-c-format
+msgid "horizontalAlignment"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:682
+#, no-c-format
+msgid ""
+"The horizontal alignment of the table. (See <xref linkend="
+"\"Document_Constants-Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:688
+#, no-c-format
+msgid "skipFirstHeader"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:695 Itext.xml:885
+#, no-c-format
+msgid "runDirection"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:702
+#, no-c-format
+msgid "lockedWidth"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:709
+#, no-c-format
+msgid "splitRows"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:732
+#, no-c-format
+msgid "extendLastRow"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:739
+#, no-c-format
+msgid "headersInEvent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:746
+#, no-c-format
+msgid "splitLate"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:763
+#, no-c-format
+msgid "p:cell"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:764
+#, no-c-format
+msgid "<literal>p:cell</literal> supports the following attributes."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:769
+#, no-c-format
+msgid "colspan"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:771
+#, no-c-format
+msgid ""
+"Cells can span more than one column by declaring a <literal>colspan</"
+"literal> greater than 1. Tables do not have the ability to span across "
+"multiple rows."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:779
+#, no-c-format
+msgid ""
+"The horizontal alignment of the cell. (see <xref linkend="
+"\"Document_Constants-Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:785 Itext.xml:829
+#, no-c-format
+msgid "verticalAlignment"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:787
+#, no-c-format
+msgid ""
+"The vertical alignment of the cell. (see <xref linkend=\"Document_Constants-"
+"Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:793
+#, no-c-format
+msgid "padding"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:795
+#, no-c-format
+msgid ""
+"Padding on a given side can also be specified using <literal>paddingLeft</"
+"literal>, <literal>paddingRight</literal>, <literal>paddingTop</literal> and "
+"<literal>paddingBottom</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:801
+#, no-c-format
+msgid "useBorderPadding"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:843
+#, no-c-format
+msgid "fixedHeight"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:850
+#, no-c-format
+msgid "noWrap"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:857
+#, no-c-format
+msgid "minimumHeight"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:864
+#, no-c-format
+msgid "followingIndent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:871
+#, no-c-format
+msgid "rightIndent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:878
+#, no-c-format
+msgid "spaceCharRatio"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:892
+#, no-c-format
+msgid "arabicOptions"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:899
+#, no-c-format
+msgid "useAscender"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:906
+#, no-c-format
+msgid "grayFill"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:925
+#, no-c-format
+msgid "Document Constants"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:926
+#, no-c-format
+msgid ""
+"This section documents some of the constants shared by attributes on "
+"multiple tags."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:930
+#, no-c-format
+msgid "Color Values"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:931
+#, no-c-format
+msgid ""
+"Seam documents do not yet support a full color specification. Currently, "
+"only named colors are supported. They are: <literal>white</literal>, "
+"<literal>gray</literal>, <literal>lightgray</literal>, <literal>darkgray</"
+"literal>, <literal>black</literal>, <literal>red</literal>, <literal>pink</"
+"literal>, <literal>yellow</literal>, <literal>green</literal>, "
+"<literal>magenta</literal>, <literal>cyan</literal> and <literal>blue</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:937
+#, no-c-format
+msgid "Alignment Values"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:938
+#, no-c-format
+msgid ""
+"Where alignment values are used, the Seam PDF supports the following "
+"horizontal alignment values: <literal>left</literal>, <literal>right</"
+"literal>, <literal>center</literal>, <literal>justify</literal> and "
+"<literal>justifyall</literal>. The vertical alignment values are "
+"<literal>top</literal>, <literal>middle</literal>, <literal>bottom</"
+"literal>, and <literal>baseline</literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:946
+#, no-c-format
+msgid "Configuring iText"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:947
+#, no-c-format
+msgid ""
+"Document generation works out of the box with no additional configuration "
+"needed. However, there are a few points of configuration that are needed for "
+"more serious applications."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:950
+#, no-c-format
+msgid ""
+"The default implementation serves PDF documents from a generic URL, "
+"<literal>/seam-doc.seam</literal>. Many browsers (and users) would prefer to "
+"see URLs that contain the actual PDF name like <literal>/myDocument.pdf</"
+"literal>. This capability requires some configuration. To serve PDF files, "
+"all *.pdf resources should be mapped to the Seam Servlet Filter and to the "
+"DocumentStoreServlet:"
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:953
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.servlet.SeamServletFilter&lt;/filter-"
+"class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;\n"
+"\n"
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.pdf.DocumentStoreServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"\n"
+"&lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:954
+#, no-c-format
+msgid ""
+"The <literal>useExtensions</literal> option on the document store component "
+"completes the functionality by instructing the document store to generate "
+"URLs with the correct filename extension for the document type being "
+"generated."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:957
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pdf=\"http://jboss.com/products/seam/pdf\"&gt;\n"
+"    &lt;pdf:documentStore useExtensions=\"true\" /&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:958
+#, no-c-format
+msgid ""
+"Generated documents are stored in conversation scope and will expire when "
+"the conversation ends. At that point, references to the document will be "
+"invalid. To You can specify a default view to be shown when a document does "
+"not exist using the <literal>errorPage</literal> property of the "
+"documentStore."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:961
+#, no-c-format
+msgid ""
+"&lt;pdf:documentStore useExtensions=\"true\" errorPage=\"/pdfMissing.seam\" /"
+"&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:965
+#, no-c-format
+msgid "iText links"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:966
+#, no-c-format
+msgid "For further information on iText, see:"
+msgstr ""
+
+#. Tag: ulink
+#: Itext.xml:973
+#, no-c-format
+msgid "iText Home Page"
+msgstr ""
+
+#. Tag: ulink
+#: Itext.xml:978
+#, no-c-format
+msgid "iText in Action"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Jbpm.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Jbpm.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Jbpm.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1189 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Jbpm.xml:10
+#, no-c-format
+msgid "Pageflows and business processes"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:11
+#, no-c-format
+msgid ""
+"JBoss jBPM is a business process management engine for any Java SE or EE "
+"environment. jBPM lets you represent a business process or user interaction "
+"as a graph of nodes representing wait states, decisions, tasks, web pages, "
+"etc. The graph is defined using a simple, very readable, XML dialect called "
+"jPDL, and may be edited and visualised graphically using an eclipse plugin. "
+"jPDL is an extensible language, and is suitable for a range of problems, "
+"from defining web application page flow, to traditional workflow management, "
+"all the way up to orchestration of services in a SOA environment."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:14
+#, no-c-format
+msgid "Seam applications use jBPM for two different problems:"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:20
+#, no-c-format
+msgid ""
+"Defining the pageflow involved in complex user interactions. A jPDL process "
+"definition defines the page flow for a single conversation. A Seam "
+"conversation is considered to be a relatively short-running interaction with "
+"a single user."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:25
+#, no-c-format
+msgid ""
+"Defining the overarching business process. The business process may span "
+"multiple conversations with multiple users. Its state is persistent in the "
+"jBPM database, so it is considered long-running. Coordination of the "
+"activities of multiple users is a much more complex problem than scripting "
+"an interaction with a single user, so jBPM offers sophisticated facilities "
+"for task management and dealing with multiple concurrent paths of execution."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:31
+#, no-c-format
+msgid ""
+"Don't get these two things confused ! They operate at very different levels "
+"or granularity. <emphasis>Pageflow</emphasis>, <emphasis>conversation</"
+"emphasis> and <emphasis>task</emphasis> all refer to a single interaction "
+"with a single user. A business process spans many tasks. Futhermore, the two "
+"applications of jBPM are totally orthogonal. You can use them together or "
+"independently or not at all."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:34
+#, no-c-format
+msgid ""
+"You don't have to know jDPL to use Seam. If you're perfectly happy defining "
+"pageflow using JSF or Seam navigation rules, and if your application is more "
+"data-driven that process-driven, you probably don't need jBPM. But we're "
+"finding that thinking of user interaction in terms of a well-defined "
+"graphical representation is helping us build more robust applications."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:37
+#, no-c-format
+msgid ""
+"Please refer to the jBPM documentation for a more thorough overview of the "
+"sophisticated features that jBPM provides for managing complex business "
+"processes."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:41
+#, no-c-format
+msgid "Pageflow in Seam"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:42
+#, no-c-format
+msgid "There are two ways to define pageflow in Seam:"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:47
+#, no-c-format
+msgid ""
+"Using JSF or Seam navigation rules - the <emphasis>stateless navigation "
+"model</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:52
+#, no-c-format
+msgid "Using jPDL - the <emphasis>stateful navigation model</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:57
+#, no-c-format
+msgid ""
+"Very simple applications will only need the stateless navigation model. Very "
+"complex applications will use both models in different places. Each model "
+"has its strengths and weaknesses!"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:60
+#, no-c-format
+msgid ""
+"In practice, both navigation models have their place, and you'll quickly "
+"learn to recognize when to prefer one model over the other."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:64
+#, no-c-format
+msgid "The two navigation models"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:65
+#, no-c-format
+msgid ""
+"The stateless model defines a mapping from a set of named, logical outcomes "
+"of an event directly to the resulting page of the view. The navigation rules "
+"are entirely oblivious to any state held by the application other than what "
+"page was the source of the event. This means that your action listener "
+"methods must sometimes make decisions about the page flow, since only they "
+"have access to the current state of the application."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:68
+#, no-c-format
+msgid "Here is an example page flow definition using JSF navigation rules:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:71
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"    &lt;from-view-id&gt;/numberGuess.jsp&lt;/from-view-id&gt;\n"
+"        \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;guess&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/numberGuess.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;win&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/win.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"        \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;lose&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/lose.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:72
+#, no-c-format
+msgid ""
+"Here is the same example page flow definition using Seam navigation rules:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:75
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/numberGuess.jsp\"&gt;\n"
+"        \n"
+"    &lt;navigation&gt;\n"
+"        &lt;rule if-outcome=\"guess\"&gt;\n"
+"            &lt;redirect view-id=\"/numberGuess.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"        &lt;rule if-outcome=\"win\"&gt;\n"
+"            &lt;redirect view-id=\"/win.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"        &lt;rule if-outcome=\"lose\"&gt;\n"
+"            &lt;redirect view-id=\"/lose.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:76
+#, no-c-format
+msgid ""
+"If you find navigation rules overly verbose, you can return view ids "
+"directly from your action listener methods:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:79
+#, no-c-format
+msgid ""
+"public String guess() {\n"
+"    if (guess==randomNumber) return \"/win.jsp\";\n"
+"    if (++guessCount==maxGuesses) return \"/lose.jsp\";\n"
+"    return null;\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:80
+#, no-c-format
+msgid ""
+"Note that this results in a redirect. You can even specify parameters to be "
+"used in the redirect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:83
+#, no-c-format
+msgid ""
+"public String search() {\n"
+"    return \"/searchResults.jsp?searchPattern=#{searchAction.searchPattern}"
+"\";\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:84
+#, no-c-format
+msgid ""
+"The stateful model defines a set of transitions between a set of named, "
+"logical application states. In this model, it is possible to express the "
+"flow of any user interaction entirely in the jPDL pageflow definition, and "
+"write action listener methods that are completely unaware of the flow of the "
+"interaction."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:87
+#, no-c-format
+msgid "Here is an example page flow definition using jPDL:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:90
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"numberGuess\"&gt;\n"
+"    \n"
+"   &lt;start-page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"      &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"      &lt;/transition&gt;\n"
+"   &lt;/start-page&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess."
+"correctGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateRemainingGuesses\" expression=\"#{numberGuess."
+"lastGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"lose\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"displayGuess\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"lose\" view-id=\"/lose.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:99
+#, no-c-format
+msgid "There are two things we notice immediately here:"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:104
+#, no-c-format
+msgid ""
+"The JSF/Seam navigation rules are <emphasis>much</emphasis> simpler. "
+"(However, this obscures the fact that the underlying Java code is more "
+"complex.)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:109
+#, no-c-format
+msgid ""
+"The jPDL makes the user interaction immediately understandable, without us "
+"needing to even look at the JSP or Java code."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:114
+#, no-c-format
+msgid ""
+"In addition, the stateful model is more <emphasis>constrained</emphasis>. "
+"For each logical state (each step in the page flow), there are a constrained "
+"set of possible transitions to other states. The stateless model is an "
+"<emphasis>ad hoc</emphasis> model which is suitable to relatively "
+"unconstrained, freeform navigation where the user decides where he/she wants "
+"to go next, not the application."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:117
+#, no-c-format
+msgid ""
+"The stateful/stateless navigation distinction is quite similar to the "
+"traditional view of modal/modeless interaction. Now, Seam applications are "
+"not usually modal in the simple sense of the word - indeed, avoiding "
+"application modal behavior is one of the main reasons for having "
+"conversations! However, Seam applications can be, and often are, modal at "
+"the level of a particular conversation. It is well-known that modal behavior "
+"is something to avoid as much as possible; it is very difficult to predict "
+"the order in which your users are going to want to do things! However, there "
+"is no doubt that the stateful model has its place."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:120
+#, no-c-format
+msgid ""
+"The biggest contrast between the two models is the back-button behavior."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:126
+#, no-c-format
+msgid "Seam and the back button"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:127
+#, no-c-format
+msgid ""
+"When JSF or Seam navigation rules are used, Seam lets the user freely "
+"navigate via the back, forward and refresh buttons. It is the responsibility "
+"of the application to ensure that conversational state remains internally "
+"consistent when this occurs. Experience with the combination of web "
+"application frameworks like Struts or WebWork - that do not support a "
+"conversational model - and stateless component models like EJB stateless "
+"session beans or the Spring framework has taught many developers that this "
+"is close to impossible to do! However, our experience is that in the context "
+"of Seam, where there is a well-defined conversational model, backed by "
+"stateful session beans, it is actually quite straightforward. Usually it is "
+"as simple as combining the use of <literal>no-conversation-view-id</literal> "
+"with null checks at the beginning of action listener methods. We consider "
+"support for freeform navigation to be almost always desirable."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:130
+#, no-c-format
+msgid ""
+"In this case, the <literal>no-conversation-view-id</literal> declaration "
+"goes in <literal>pages.xml</literal>. It tells Seam to redirect to a "
+"different page if a request originates from a page rendered during a "
+"conversation, and that conversation no longer exists:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:133
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/checkout.xhtml\" \n"
+"        no-conversation-view-id=\"/main.xhtml\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:134
+#, no-c-format
+msgid ""
+"On the other hand, in the stateful model, backbuttoning is interpreted as an "
+"undefined transition back to a previous state. Since the stateful model "
+"enforces a defined set of transitions from the current state, back buttoning "
+"is be default disallowed in the stateful model! Seam transparently detects "
+"the use of the back button, and blocks any attempt to perform an action from "
+"a previous, \"stale\" page, and simply redirects the user to the \"current\" "
+"page (and displays a faces message). Whether you consider this a feature or "
+"a limitation of the stateful model depends upon your point of view: as an "
+"application developer, it is a feature; as a user, it might be frustrating! "
+"You can enable backbutton navigation from a particular page node by setting "
+"<literal>back=\"enabled\"</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:137
+#, no-c-format
+msgid ""
+"&lt;page name=\"checkout\" \n"
+"        view-id=\"/checkout.xhtml\" \n"
+"        back=\"enabled\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"checkout\"/&gt;\n"
+"    &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:138
+#, no-c-format
+msgid ""
+"This allows backbuttoning <emphasis>from</emphasis> the <literal>checkout</"
+"literal> state to <emphasis>any previous state!</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:141
+#, no-c-format
+msgid ""
+"Of course, we still need to define what happens if a request originates from "
+"a page rendered during a pageflow, and the conversation with the pageflow no "
+"longer exists. In this case, the <literal>no-conversation-view-id</literal> "
+"declaration goes into the pageflow definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:144
+#, no-c-format
+msgid ""
+"&lt;page name=\"checkout\" \n"
+"        view-id=\"/checkout.xhtml\" \n"
+"        back=\"enabled\" \n"
+"        no-conversation-view-id=\"/main.xhtml\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"checkout\"/&gt;\n"
+"    &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:151
+#, no-c-format
+msgid "Using jPDL pageflows"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:153
+#, no-c-format
+msgid "Installing pageflows"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:154
+#, no-c-format
+msgid ""
+"We need to install the Seam jBPM-related components, and tell them where to "
+"find our pageflow definition. We can specify this Seam configuration in "
+"<literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:157
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:pageflow-definitions&gt;\n"
+"        &lt;value&gt;pageflow.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:pageflow-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:158
+#, no-c-format
+msgid ""
+"The first line installs jBPM, the second points to a jPDL-based pageflow "
+"definition."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:164
+#, no-c-format
+msgid "Starting pageflows"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:165
+#, no-c-format
+msgid ""
+"We \"start\" a jPDL-based pageflow by specifying the name of the process "
+"definition using a <literal>@Begin</literal>, <literal>@BeginTask</literal> "
+"or <literal>@StartTask</literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:168
+#, no-c-format
+msgid ""
+"@Begin(pageflow=\"numberguess\")\n"
+"public void begin() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:169
+#, no-c-format
+msgid "Alternatively we can start a pageflow using pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:172
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"        &lt;begin-conversation pageflow=\"numberguess\"/&gt;\n"
+"    &lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:173
+#, no-c-format
+msgid ""
+"If we are beginning the pageflow during the <literal>RENDER_RESPONSE</"
+"literal> phase&mdash;during a <literal>@Factory</literal> or "
+"<literal>@Create</literal> method, for example&mdash;we consider ourselves "
+"to be already at the page being rendered, and use a <literal>&lt;start-"
+"page&gt;</literal> node as the first node in the pageflow, as in the example "
+"above."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:176
+#, no-c-format
+msgid ""
+"But if the pageflow is begun as the result of an action listener invocation, "
+"the outcome of the action listener determines which is the first page to be "
+"rendered. In this case, we use a <literal>&lt;start-state&gt;</literal> as "
+"the first node in the pageflow, and declare a transition for each possible "
+"outcome:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:179
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"viewEditDocument\"&gt;\n"
+"\n"
+"    &lt;start-state name=\"start\"&gt;\n"
+"        &lt;transition name=\"documentFound\" to=\"displayDocument\"/&gt;\n"
+"        &lt;transition name=\"documentNotFound\" to=\"notFound\"/&gt;\n"
+"    &lt;/start-state&gt;\n"
+"    \n"
+"    &lt;page name=\"displayDocument\" view-id=\"/document.jsp\"&gt;\n"
+"        &lt;transition name=\"edit\" to=\"editDocument\"/&gt;\n"
+"        &lt;transition name=\"done\" to=\"main\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"    \n"
+"    ...\n"
+"    \n"
+"    &lt;page name=\"notFound\" view-id=\"/404.jsp\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"    &lt;/page&gt;\n"
+"    \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:183
+#, no-c-format
+msgid "Page nodes and transitions"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:184
+#, no-c-format
+msgid ""
+"Each <literal>&lt;page&gt;</literal> node represents a state where the "
+"system is waiting for user input:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:187
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"        &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:188
+#, no-c-format
+msgid ""
+"The <literal>view-id</literal> is the JSF view id. The <literal>&lt;redirect/"
+"&gt;</literal> element has the same effect as <literal>&lt;redirect/&gt;</"
+"literal> in a JSF navigation rule: namely, a post-then-redirect behavior, to "
+"overcome problems with the browser's refresh button. (Note that Seam "
+"propagates conversation contexts over these browser redirects. So there is "
+"no need for a Ruby on Rails style \"flash\" construct in Seam!)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:191
+#, no-c-format
+msgid ""
+"The transition name is the name of a JSF outcome triggered by clicking a "
+"command button or command link in <literal>numberGuess.jsp</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:194
+#, no-c-format
+msgid ""
+"&lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"guess\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:195
+#, no-c-format
+msgid ""
+"When the transition is triggered by clicking this button, jBPM will activate "
+"the transition action by calling the <literal>guess()</literal> method of "
+"the <literal>numberGuess</literal> component. Notice that the syntax used "
+"for specifying actions in the jPDL is just a familiar JSF EL expression, and "
+"that the transition action handler is just a method of a Seam component in "
+"the current Seam contexts. So we have exactly the same event model for jBPM "
+"events that we already have for JSF events! (The <emphasis>One Kind of "
+"Stuff</emphasis> principle.)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:198
+#, no-c-format
+msgid ""
+"In the case of a null outcome (for example, a command button with no "
+"<literal>action</literal> defined), Seam will signal the transition with no "
+"name if one exists, or else simply redisplay the page if all transitions "
+"have names. So we could slightly simplify our example pageflow and this "
+"button:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:201
+#, no-c-format
+msgid "&lt;h:commandButton type=\"submit\" value=\"Guess\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:202
+#, no-c-format
+msgid "Would fire the following un-named transition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:205
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"evaluateGuess\"&gt;\n"
+"        &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:206
+#, no-c-format
+msgid ""
+"It is even possible to have the button call an action method, in which case "
+"the action outcome will determine the transition to be taken:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:209
+#, no-c-format
+msgid ""
+"&lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"#{numberGuess."
+"guess}\"/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:210
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;transition name=\"correctGuess\" to=\"win\"/&gt;\n"
+"    &lt;transition name=\"incorrectGuess\" to=\"evaluateGuess\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:211
+#, no-c-format
+msgid ""
+"However, this is considered an inferior style, since it moves responsibility "
+"for controlling the flow out of the pageflow definition and back into the "
+"other components. It is much better to centralize this concern in the "
+"pageflow itself."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:217
+#, no-c-format
+msgid "Controlling the flow"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:218
+#, no-c-format
+msgid ""
+"Usually, we don't need the more powerful features of jPDL when defining "
+"pageflows. We do need the <literal>&lt;decision&gt;</literal> node, however:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:221
+#, no-c-format
+msgid ""
+"&lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess.correctGuess}"
+"\"&gt;\n"
+"    &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"    &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"&lt;/decision&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:222
+#, no-c-format
+msgid ""
+"A decision is made by evaluating a JSF EL expression in the Seam contexts."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:228
+#, no-c-format
+msgid "Ending the flow"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:229
+#, no-c-format
+msgid ""
+"We end the conversation using <literal>&lt;end-conversation&gt;</literal> or "
+"<literal>@End</literal>. (In fact, for readability, use of <emphasis>both</"
+"emphasis> is encouraged.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:232
+#, no-c-format
+msgid ""
+"&lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;end-conversation/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:233
+#, no-c-format
+msgid ""
+"Optionally, we can end a task, specify a jBPM <literal>transition</literal> "
+"name. In this case, Seam will signal the end of the current task in the "
+"overarching business process."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:236
+#, no-c-format
+msgid ""
+"&lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;end-task transition=\"success\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:242
+#, no-c-format
+msgid "Business process management in Seam"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:243
+#, no-c-format
+msgid ""
+"A business process is a well-defined set of tasks that must be performed by "
+"users or software systems according to well-defined rules about "
+"<emphasis>who</emphasis> can perform a task, and <emphasis>when</emphasis> "
+"it should be performed. Seam's jBPM integration makes it easy to display "
+"lists of tasks to users and let them manage their tasks. Seam also lets the "
+"application store state associated with the business process in the "
+"<literal>BUSINESS_PROCESS</literal> context, and have that state made "
+"persistent via jBPM variables."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:246
+#, no-c-format
+msgid ""
+"A simple business process definition looks much the same as a page flow "
+"definition (<emphasis>One Kind of Stuff</emphasis>), except that instead of "
+"<literal>&lt;page&gt;</literal> nodes, we have <literal>&lt;task-node&gt;</"
+"literal> nodes. In a long-running business process, the wait states are "
+"where the system is waiting for some user to log in and perform a task."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:249
+#, no-c-format
+msgid ""
+"&lt;process-definition name=\"todo\"&gt;\n"
+"   \n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"todo\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;task-node name=\"todo\"&gt;\n"
+"      &lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"         &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"      &lt;/task&gt;\n"
+"      &lt;transition to=\"done\"/&gt;\n"
+"   &lt;/task-node&gt;\n"
+"   \n"
+"   &lt;end-state name=\"done\"/&gt;\n"
+"   \n"
+"&lt;/process-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:260
+#, no-c-format
+msgid ""
+"It is perfectly possible that we might have both jPDL business process "
+"definitions and jPDL pageflow definitions in the same project. If so, the "
+"relationship between the two is that a single <literal>&lt;task&gt;</"
+"literal> in a business process corresponds to a whole pageflow <literal>&lt;"
+"pageflow-definition&gt;</literal>"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:265
+#, no-c-format
+msgid "Using jPDL business process definitions"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:267
+#, no-c-format
+msgid "Installing process definitions"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:268
+#, no-c-format
+msgid ""
+"We need to install jBPM, and tell it where to find the business process "
+"definitions:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:271
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;todo.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:275
+#, no-c-format
+msgid "Initializing actor ids"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:276
+#, no-c-format
+msgid ""
+"We always need to know what user is currently logged in. jBPM \"knows\" "
+"users by their <emphasis>actor id</emphasis> and <emphasis>group actor ids</"
+"emphasis>. We specify the current actor ids using the built in Seam "
+"component named <literal>actor</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:279
+#, no-c-format
+msgid ""
+"@In Actor actor;\n"
+"\n"
+"public String login() {\n"
+"    ...\n"
+"    actor.setId( user.getUserName() );\n"
+"    actor.getGroupActorIds().addAll( user.getGroupNames() );\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:283
+#, no-c-format
+msgid "Initiating a business process"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:284
+#, no-c-format
+msgid ""
+"To initiate a business process instance, we use the <literal>@CreateProcess</"
+"literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:287
+#, no-c-format
+msgid ""
+"@CreateProcess(definition=\"todo\")\n"
+"public void createTodo() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:288
+#, no-c-format
+msgid "Alternatively we can initiate a business process using pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:291
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;create-process definition=\"todo\" /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:295
+#, no-c-format
+msgid "Task assignment"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:296
+#, no-c-format
+msgid ""
+"When a process starts, task instances are created. These must be assigned to "
+"users or user groups. We can either hardcode our actor ids, or delegate to a "
+"Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:299
+#, no-c-format
+msgid ""
+"&lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"    &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"&lt;/task&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:300
+#, no-c-format
+msgid ""
+"In this case, we have simply assigned the task to the current user. We can "
+"also assign tasks to a pool:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:303
+#, no-c-format
+msgid ""
+"&lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"    &lt;assignment pooled-actors=\"employees\"/&gt;\n"
+"&lt;/task&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:307
+#, no-c-format
+msgid "Task lists"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:308
+#, no-c-format
+msgid ""
+"Several built-in Seam components make it easy to display task lists. The "
+"<literal>pooledTaskInstanceList</literal> is a list of pooled tasks that "
+"users may assign to themselves:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:311
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{pooledTaskInstanceList}\" var=\"task\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Description&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{task.description}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link action=\"#{pooledTask.assignToCurrentActor}\" value="
+"\"Assign\" taskInstance=\"#{task}\"/&gt;\n"
+"    &lt;/h:column&gt;            \n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:312
+#, no-c-format
+msgid ""
+"Note that instead of <literal>&lt;s:link&gt;</literal> we could have used a "
+"plain JSF <literal>&lt;h:commandLink&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:315
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"#{pooledTask.assignToCurrentActor}\"&gt; \n"
+"    &lt;f:param name=\"taskId\" value=\"#{task.id}\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:316
+#, no-c-format
+msgid ""
+"The <literal>pooledTask</literal> component is a built-in component that "
+"simply assigns the task to the current user."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:319
+#, no-c-format
+msgid ""
+"The <literal>taskInstanceListByType</literal> component includes tasks of a "
+"particular type that are assigned to the current user:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:322
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{taskInstanceListByType['todo']}\" var=\"task"
+"\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Description&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{task.description}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link action=\"#{todoList.start}\" value=\"Start Work\" "
+"taskInstance=\"#{task}\"/&gt;\n"
+"    &lt;/h:column&gt;            \n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:326
+#, no-c-format
+msgid "Performing a task"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:327
+#, no-c-format
+msgid ""
+"To begin work on a task, we use either <literal>@StartTask</literal> or "
+"<literal>@BeginTask</literal> on the listener method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:330
+#, no-c-format
+msgid ""
+"@StartTask\n"
+"public String start() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:331
+#, no-c-format
+msgid "Alternatively we can begin work on a task using pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:334
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;start-task /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:335
+#, no-c-format
+msgid ""
+"These annotations begin a special kind of conversation that has significance "
+"in terms of the overarching business process. Work done by this conversation "
+"has access to state held in the business process context."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:338
+#, no-c-format
+msgid ""
+"If we end the conversation using <literal>@EndTask</literal>, Seam will "
+"signal the completion of the task:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:341
+#, no-c-format
+msgid ""
+"@EndTask(transition=\"completed\")\n"
+"public String completed() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:342
+#, no-c-format
+msgid "Alternatively we can use pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:345
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;end-task transition=\"completed\" /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:346
+#, no-c-format
+msgid ""
+"(Alternatively, we could have used <literal>&lt;end-conversation&gt;</"
+"literal> as shown above.)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:349
+#, no-c-format
+msgid ""
+"At this point, jBPM takes over and continues executing the business process "
+"definition. (In more complex processes, several tasks might need to be "
+"completed before process execution can resume.)"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Jms.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Jms.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Jms.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,477 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Jms.xml:10
+#, no-c-format
+msgid "Asynchronicity and messaging"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:11
+#, no-c-format
+msgid ""
+"Seam makes it very easy to perform work asynchronously from a web request. "
+"When most people think of asynchronicity in Java EE, they think of using "
+"JMS. This is certainly one way to approach the problem in Seam, and is the "
+"right way when you have strict and well-defined quality of service "
+"requirements. Seam makes it easy to send and recieve JMS messages using Seam "
+"components."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:14
+#, no-c-format
+msgid ""
+"But for many usecases, JMS is overkill. Seam layers a simple asynchronous "
+"method and event facility over the EJB 3.0 timer service."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:17
+#, no-c-format
+msgid "Asynchronicity"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:18
+#, no-c-format
+msgid ""
+"Asynchronous events and method calls have the same quality of service "
+"expectations as the container's EJB timer service. If you're not familiar "
+"with the Timer service, don't worry, you don't need to interact with it "
+"directly if you want to use asynchronous methods in Seam."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:21
+#, no-c-format
+msgid ""
+"To use asynchronous methods and events, you need to add the following line "
+"to <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:24
+#, no-c-format
+msgid "&lt;core:dispatcher/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:25
+#, no-c-format
+msgid ""
+"Note that this functionality is not available in environments which do not "
+"support EJB 3.0."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:28
+#, no-c-format
+msgid "Asynchronous methods"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:29
+#, no-c-format
+msgid ""
+"In simplest form, an asynchronous call just lets a method call be processed "
+"asynchronously (in a different thread) from the caller. We usually use an "
+"asynchronous call when we want to return an immediate response to the "
+"client, and let some expensive work be processed in the background. This "
+"pattern works very well in applications which use AJAX, where the client can "
+"automatically poll the server for the result of the work."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:32
+#, no-c-format
+msgid ""
+"For EJB components, we annotate the local interface to specify that a method "
+"is processed asynchronously."
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:35
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public void processPayment(Payment payment);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:36
+#, no-c-format
+msgid ""
+"(For JavaBean components we can annotate the component implementation class "
+"if we like.)"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:39
+#, no-c-format
+msgid "The use of asynchronicity is transparent to the bean class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:42
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"paymentHandler\")\n"
+"public class PaymentHandlerBean implements PaymentHandler\n"
+"{\n"
+"    public void processPayment(Payment payment)\n"
+"    {\n"
+"        //do some work!\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:43
+#, no-c-format
+msgid "And also transparent to the client:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:46
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String pay()\n"
+"    {\n"
+"        paymentHandler.processPayment( new Payment(bill) );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:47
+#, no-c-format
+msgid ""
+"The asynchronous method is processed in a completely new event context and "
+"does not have access to the session or conversation context state of the "
+"caller. However, the business process context <emphasis>is</emphasis> "
+"propagated."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:50
+#, no-c-format
+msgid ""
+"Asynchronous method calls may be scheduled for later execution using the "
+"<literal>@Duration</literal>, <literal>@Expiration</literal> and "
+"<literal>@IntervalDuration</literal> annotations."
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:53
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public void processScheduledPayment(Payment payment, @Expiration Date "
+"date);\n"
+"\n"
+"    @Asynchronous\n"
+"    public void processRecurringPayment(Payment payment, @Expiration Date "
+"date, \n"
+"        @IntervalDuration Long interval)'\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:54
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String schedulePayment()\n"
+"    {\n"
+"        paymentHandler.processScheduledPayment( new Payment(bill), bill."
+"getDueDate() );\n"
+"        return \"success\";\n"
+"    }\n"
+"\n"
+"    public String scheduleRecurringPayment()\n"
+"    {\n"
+"        paymentHandler.processRecurringPayment( new Payment(bill), bill."
+"getDueDate(), ONE_MONTH );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:55
+#, no-c-format
+msgid ""
+"Both client and server may access the <literal>Timer</literal> object "
+"associated with the invocation."
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:58
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public Timer processScheduledPayment(Payment payment, @Expiration Date "
+"date);\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:59
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"paymentHandler\")\n"
+"public class PaymentHandlerBean implements PaymentHandler\n"
+"{\n"
+"    @In Timer timer;\n"
+"    \n"
+"    public Timer processScheduledPayment(Payment payment, @Expiration Date "
+"date)\n"
+"    {\n"
+"        //do some work!\n"
+"        \n"
+"        return timer; //note that return value is completely ignored\n"
+"    }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:60
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String schedulePayment()\n"
+"    {\n"
+"        Timer timer = paymentHandler.processScheduledPayment( new Payment"
+"(bill), bill.getDueDate() );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:61
+#, no-c-format
+msgid "Asynchronous methods cannot return any other value to the caller."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:64
+#, no-c-format
+msgid "Asynchronous events"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:65
+#, no-c-format
+msgid ""
+"Component-driven events may also be asynchronous. To raise an event for "
+"asynchronous processing, simply call the <literal>raiseAsynchronousEvent()</"
+"literal> methods of the <literal>Events</literal> class. To schedule a timed "
+"event, call one of the <literal>raiseTimedEvent()</literal> methods. "
+"Components may observe asynchronous events in the usual way, but remember "
+"that only the business process context is propagated to the asynchronous "
+"thread."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:68
+#, no-c-format
+msgid "Messaging in Seam"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:69
+#, no-c-format
+msgid ""
+"Seam makes it easy to send and receive JMS messages to and from Seam "
+"components."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:72
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:73
+#, no-c-format
+msgid ""
+"To configure Seam's infrastructure for sending JMS messages, you need to "
+"tell Seam about any topics and queues you want to send messages to, and also "
+"tell Seam where to find the <literal>QueueConnectionFactory</literal> and/or "
+"<literal>TopicConnectionFactory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:76
+#, no-c-format
+msgid ""
+"Seam defaults to using <literal>UIL2ConnectionFactory</literal> which is the "
+"usual connection factory for use with JBossMQ. If you are using some other "
+"JMS provider, you need to set one or both of <literal>queueConnection."
+"queueConnectionFactoryJndiName</literal> and <literal>topicConnection."
+"topicConnectionFactoryJndiName</literal> in <literal>seam.properties</"
+"literal>, <literal>web.xml</literal> or <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:79
+#, no-c-format
+msgid ""
+"You also need to list topics and queues in <literal>components.xml</literal> "
+"to install Seam managed <literal>TopicPublisher</literal>s and "
+"<literal>QueueSender</literal>s:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:82
+#, no-c-format
+msgid ""
+"&lt;jms:managed-topic-publisher name=\"stockTickerPublisher\" auto-create="
+"\"true\" \n"
+"    topic-jndi-name=\"topic/stockTickerTopic\"/&gt;\n"
+"\n"
+"&lt;jms:managed-queue-sender name=\"paymentQueueSender\" auto-create=\"true"
+"\" \n"
+"    queue-jndi-name=\"queue/paymentQueue\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:83
+#, no-c-format
+msgid "Sending messages"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:84
+#, no-c-format
+msgid ""
+"Now, you can inject a JMS <literal>TopicPublisher</literal> and "
+"<literal>TopicSession</literal> into any component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:87
+#, no-c-format
+msgid ""
+"@In \n"
+"private TopicPublisher stockTickerPublisher;   \n"
+"@In \n"
+"private TopicSession topicSession;\n"
+"\n"
+"public void publish(StockPrice price) {\n"
+"      try\n"
+"      {\n"
+"         topicPublisher.publish( topicSession.createObjectMessage(price) );\n"
+"      } \n"
+"      catch (Exception ex)\n"
+"      {\n"
+"         throw new RuntimeException(ex);\n"
+"      } \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:88
+#, no-c-format
+msgid "Or, for working with a queue:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:91
+#, no-c-format
+msgid ""
+"@In\n"
+"private QueueSender paymentQueueSender;   \n"
+"@In\n"
+"private QueueSession queueSession;\n"
+"\n"
+"public void publish(Payment payment) {\n"
+"      try\n"
+"      {\n"
+"         paymentQueueSender.send( queueSession.createObjectMessage"
+"(payment) );\n"
+"      } \n"
+"      catch (Exception ex)\n"
+"      {\n"
+"         throw new RuntimeException(ex);\n"
+"      } \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:92
+#, no-c-format
+msgid "Receiving messages using a message-driven bean"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:93
+#, no-c-format
+msgid ""
+"You can process messages using any EJB3 message driven bean. Message-driven "
+"beans may even be Seam components, in which case it is possible to inject "
+"other event and application scoped Seam components."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:96
+#, no-c-format
+msgid "Receiving messages in the client"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:97
+#, no-c-format
+msgid ""
+"Seam Remoting lets you subscribe to a JMS topic from client-side JavaScript. "
+"This is described in the next chapter."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Mail.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Mail.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Mail.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,985 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Mail.xml:10
+#, no-c-format
+msgid "Email"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:11
+#, no-c-format
+msgid ""
+"Seam now includes an optional components for templating and sending emails."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:14
+#, no-c-format
+msgid ""
+"Email support is provided by <literal>jboss-seam-mail.jar</literal>. This "
+"JAR contains the mail JSF controls, which are used to construct emails, and "
+"the <literal>mailSession</literal> manager component."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:17
+#, no-c-format
+msgid ""
+"The examples/mail project contains an example of the email support in "
+"action. It demonstrates proper packaging, and it contains a number of "
+"example that demonstrate the key features currently supported."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:21
+#, no-c-format
+msgid "Creating a message"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:22
+#, no-c-format
+msgid ""
+"You don't need to learn a whole new templating language to use Seam "
+"Mail&mdash;an email is just facelet!"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:25
+#, no-c-format
+msgid ""
+"&lt;m:message xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"    xmlns:m=\"http://jboss.com/products/seam/mail\"\n"
+"    xmlns:h=\"http://java.sun.com/jsf/html\"&gt;\n"
+"  \n"
+"    &lt;m:from name=\"Peter\" address=\"peter at example.com\" /&gt;\n"
+"    &lt;m:to name=\"#{person.firstname} #{person.lastname}\"&gt;#{person."
+"address}&lt;/m:to&gt;\n"
+"    &lt;m:subject&gt;Try out Seam!&lt;/m:subject&gt;\n"
+"    \n"
+"    &lt;m:body&gt;\n"
+"        &lt;p&gt;&lt;h:outputText value=\"Dear #{person.firstname}\" /&gt;,"
+"&lt;/p&gt;\n"
+"        &lt;p&gt;You can try out Seam by visiting \n"
+"        &lt;a href=\"http://labs.jboss.com/jbossseam\"&gt;http://labs.jboss."
+"com/jbossseam&lt;/a&gt;.&lt;/p&gt;\n"
+"        &lt;p&gt;Regards,&lt;/p&gt;\n"
+"        &lt;p&gt;Peter&lt;/p&gt;\n"
+"    &lt;/m:body&gt;\n"
+"    \n"
+"&lt;/m:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:26
+#, no-c-format
+msgid ""
+"The <literal>&lt;m:message&gt;</literal> tag wraps the whole message, and "
+"tells Seam to start rendering an email. Inside the <literal>&lt;m:message&gt;"
+"</literal> tag we use an <literal>&lt;m:from&gt;</literal> tag to set who "
+"the message is from, a <literal>&lt;m:to&gt;</literal> tag to specify a "
+"sender (notice how we use EL as we would in a normal facelet), and a "
+"<literal>&lt;m:subject&gt;</literal> tag."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:29
+#, no-c-format
+msgid ""
+"The <literal>&lt;m:body&gt;</literal> tag wraps the body of the email. You "
+"can use regular HTML tags inside the body as well as JSF components."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:32
+#, no-c-format
+msgid ""
+"So, now you have your email template, how do you go about sending it? Well, "
+"at the end of rendering the <literal>m:message</literal> the "
+"<literal>mailSession</literal> is called to send the email, so all you have "
+"to do is ask Seam to render the view:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:35
+#, no-c-format
+msgid ""
+"@In(create=true)\n"
+"private Renderer renderer;\n"
+"   \n"
+"public void send() {\n"
+"    try {\n"
+"       renderer.render(\"/simple.xhtml\");\n"
+"       facesMessages.add(\"Email sent successfully\");\n"
+"   } \n"
+"   catch (Exception e) {\n"
+"       facesMessages.add(\"Email sending failed: \" + e.getMessage());\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:36
+#, no-c-format
+msgid ""
+"If, for example, you entered an invalid email address, then an exception "
+"would be thrown, which is caught and then displayed to the user."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:40
+#, no-c-format
+msgid "Attachments"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:41
+#, no-c-format
+msgid ""
+"Seam makes it easy to attach files to an email. It supports most of the "
+"standard java types used when working with files."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:44
+#, no-c-format
+msgid "If you wanted to email the <literal>jboss-seam-mail.jar</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:47
+#, no-c-format
+msgid "&lt;m:attachment value=\"/WEB-INF/lib/jboss-seam-mail.jar\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:48
+#, no-c-format
+msgid ""
+"Seam will load the file from the classpath, and attach it to the email. By "
+"default it would be attached as <literal>jboss-seam-mail.jar</literal>; if "
+"you wanted it to have another name you would just add the <literal>fileName</"
+"literal> attribute:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:51
+#, no-c-format
+msgid ""
+"&lt;m:attachment value=\"/WEB-INF/lib/jboss-seam-mail.jar\" fileName=\"this-"
+"is-so-cool.jar\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:52
+#, no-c-format
+msgid ""
+"You could also attach a <literal>java.io.File</literal>, a <literal>java.net."
+"URL</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:55
+#, no-c-format
+msgid "&lt;m:attachment value=\"#{numbers}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:56
+#, no-c-format
+msgid ""
+"Or a <literal>byte[]</literal> or a <literal>java.io.InputStream</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:59
+#, no-c-format
+msgid ""
+"&lt;m:attachment value=\"#{person.photo}\" contentType=\"image/png\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:60
+#, no-c-format
+msgid ""
+"You'll notice that for a <literal>byte[]</literal> and a <literal>java.io."
+"InputStream</literal> you need to specify the MIME type of the attachment "
+"(as that information is not carried as part of the file)."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:63
+#, no-c-format
+msgid ""
+"And it gets even better, you can attach a Seam generated PDF, or any "
+"standard JSF view, just by wrapping a <literal>&lt;m:attachment&gt;</"
+"literal> around the normal tags you would use:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:66
+#, no-c-format
+msgid ""
+"&lt;m:attachment fileName=\"tiny.pdf\"&gt;\n"
+"    &lt;p:"
+"document&gt;                                                      \n"
+"        A very tiny "
+"PDF                                                                                                \n"
+"    &lt;/p:document&gt;\n"
+"&lt;/m:attachment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:67
+#, no-c-format
+msgid ""
+"If you had a set of files you wanted to attach (for example a set of "
+"pictures loaded from a database) you can just use a <literal>&lt;ui:"
+"repeat&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:70
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{people}\" var=\"person\"&gt;\n"
+"    &lt;m:attachment value=\"#{person.photo}\" contentType=\"image/jpeg\"\n"
+"    fileName=\"#{person.firstname}_#{person.lastname}.jpg\"/&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:74
+#, no-c-format
+msgid "HTML/Text alternative part"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:75
+#, no-c-format
+msgid ""
+"Whilst most mail readers nowadays support HTML, some don't, so you can add a "
+"plain text alternative to your email body:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:78
+#, no-c-format
+msgid ""
+"&lt;m:body&gt;\n"
+"    &lt;f:facet name=\"alternative\"&gt;Sorry, your email reader can't show "
+"our fancy email, \n"
+"please go to http://labs.jboss.com/jbossseam to explore Seam.&lt;/f:"
+"facet&gt;\n"
+"&lt;/m:body&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:82
+#, no-c-format
+msgid "Multiple recipients"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:83
+#, no-c-format
+msgid ""
+"Often you'll want to send an email to a group of recipients (for example "
+"your users). All of the recipient mail tags can be placed inside a "
+"<literal>&lt;ui:repeat&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:86
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{allUsers} var=\"user\"&gt;\n"
+"    &lt;m:to name=\"#{user.firstname} #{user.lastname}\" address=\"#{user."
+"emailAddress}\" /&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:90
+#, no-c-format
+msgid "Multiple messages"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:91
+#, no-c-format
+msgid ""
+"Sometimes, however, you need to send a slightly different message to each "
+"recipient (e.g. a password reset). The best way to do this is to place the "
+"whole message inside a <literal>&lt;ui:repeat&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:94
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{people}\" var=\"p\"&gt;\n"
+"    &lt;m:message&gt;\n"
+"        &lt;m:from name=\"#{person.firstname} #{person.lastname}\"&gt;#"
+"{person.address}&lt;/m:from&gt;\n"
+"        &lt;m:to name=\"#{p.firstname}\"&gt;#{p.address}&lt;/m:to&gt;\n"
+"            ...\n"
+"    &lt;/m:message&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:98
+#, no-c-format
+msgid "Templating"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:99
+#, no-c-format
+msgid ""
+"The mail templating example shows that facelets templating Just Works with "
+"the Seam mail tags."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:102
+#, no-c-format
+msgid "Our <literal>template.xhtml</literal> contains:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:105
+#, no-c-format
+msgid ""
+"&lt;m:message&gt;\n"
+"   &lt;m:from name=\"Seam\" address=\"do-not-reply at jboss.com\" /&gt;\n"
+"   &lt;m:to name=\"#{person.firstname} #{person.lastname}\"&gt;#{person."
+"address}&lt;/m:to&gt;\n"
+"   &lt;m:subject&gt;#{subject}&lt;/m:subject&gt;\n"
+"   &lt;m:body&gt;\n"
+"       &lt;html&gt;\n"
+"           &lt;body&gt;\n"
+"               &lt;ui:insert name=\"body\"&gt;This is the default body, "
+"specified by the template.\n"
+"               &lt;/ui:insert&gt;\n"
+"           &lt;/body&gt;\n"
+"       &lt;/html&gt;\n"
+"   &lt;/m:body&gt;\n"
+"&lt;/m:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:106
+#, no-c-format
+msgid "Our <literal>templating.xhtml</literal> contains:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:109
+#, no-c-format
+msgid ""
+"&lt;ui:param name=\"subject\" value=\"Templating with Seam Mail\"/&gt;\n"
+"&lt;ui:define name=\"body\"&gt;\n"
+"    &lt;p&gt;This example demonstrates that you can easily use &lt;i&gt;"
+"facelets templating&lt;/i&gt; in email!&lt;/p&gt;\n"
+"&lt;/ui:define&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:113
+#, no-c-format
+msgid "Other Headers"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:114
+#, no-c-format
+msgid ""
+"Sometimes you'll want to add other headers to your email. Seam provides "
+"support for some (see <xref linkend=\"Email-Tags\"/>). For example, we can "
+"set the importance of the email, and ask for a read receipt:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:117
+#, no-c-format
+msgid ""
+"&lt;m:message xmlns:m=\"http://jboss.com/products/seam/mail\"\n"
+"           importance=\"low\"\n"
+"           requestReadReceipt=\"true\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:118
+#, no-c-format
+msgid ""
+"Otherise you can add any header to the message using the <literal>&lt;m:"
+"header&gt;</literal> tag:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:121
+#, no-c-format
+msgid "&lt;m:header name=\"X-Sent-From\" value=\"JBoss Seam\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:127
+#, no-c-format
+msgid "Receiving emails"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:128
+#, no-c-format
+msgid ""
+"If you are using EJB then you can use a MDB (Message Driven Bean) to receive "
+"email. Seam comes with an improved version of <literal>mail-ra.rar</literal> "
+"as distributed in JBoss AS; until the improvements make there way into a "
+"released version of JBoss AS, replacing the default <literal>rar</literal> "
+"with the one distributed with Seam is recommended."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:131
+#, no-c-format
+msgid "You can configure it like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:134
+#, no-c-format
+msgid ""
+"@MessageDriven(activationConfig={\n"
+"         @ActivationConfigProperty(propertyName=\"mailServer\", "
+"propertyValue=\"localhost\"),\n"
+"         @ActivationConfigProperty(propertyName=\"mailFolder\", "
+"propertyValue=\"INBOX\"),\n"
+"         @ActivationConfigProperty(propertyName=\"storeProtocol\", "
+"propertyValue=\"pop3\"),\n"
+"         @ActivationConfigProperty(propertyName=\"userName\", propertyValue="
+"\"seam\"),\n"
+"         @ActivationConfigProperty(propertyName=\"password\", propertyValue="
+"\"seam\")\n"
+"})\n"
+"@ResourceAdapter(\"mail-ra.rar\")\n"
+"@Name(\"mailListener\")\n"
+"public class MailListenerMDB implements MailListener {\n"
+"\n"
+"   @In(create=true)\n"
+"   private OrderProcessor orderProcessor;\n"
+"\n"
+"   public void onMessage(Message message) {\n"
+"      // Process the message\n"
+"      orderProcessor.process(message.getSubject());\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:135
+#, no-c-format
+msgid ""
+"Each message received will cause <literal>onMessage(Message message)</"
+"literal> to be called. Most seam annotations will work inside a MDB but you "
+"musn't access the persistence context."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:138
+#, no-c-format
+msgid ""
+"You can find more information on the default <literal>mail-ra.rar</literal> "
+"at <ulink url=\"http://wiki.jboss.org/wiki/Wiki.jsp?page=InboundJavaMail"
+"\">http://wiki.jboss.org/wiki/Wiki.jsp?page=InboundJavaMail</ulink>. The "
+"version distributed with Seam also includes a <literal>debug</literal> "
+"property to enable JavaMail debugging, a <literal>flush</literal> property "
+"(by default true) to disable flushing a <literal>POP3</literal> mailbox "
+"after successfullying delivering a message to your MDB and a <literal>port</"
+"literal> property to override the default TCP port. Beware that the api for "
+"this may be altered as changes make there way into JBoss AS."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:141
+#, no-c-format
+msgid ""
+"If you aren't using JBoss AS you can still use <literal>mail-ra.rar</"
+"literal> (included with Seam in the mail directory), or you may find your "
+"application server includes a similar adapter."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:147
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:148
+#, no-c-format
+msgid ""
+"To include Email support in your application, include <literal>jboss-seam-"
+"mail.jar</literal> in your WEB-INF/lib directory. If you are using JBoss AS "
+"there is no further configuration needed to use Seam's email support. "
+"Otherwise you need to make sure you have the JavaMail API, an implementation "
+"of the JavaMail API present (the API and impl used in JBoss AS are "
+"distributed with seam as <literal>lib/mail.jar</literal>), and a copy of the "
+"Java Activation Framework (distributed with seam as <literal>lib/activation."
+"jar</literal>."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:151
+#, no-c-format
+msgid ""
+"The Seam Email module requires the use of Facelets as the view technology. "
+"Future versions of the library may also support the use of JSP. "
+"Additionally, it requires the use of the seam-ui package."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:154
+#, no-c-format
+msgid ""
+"The <literal>mailSession</literal> component uses JavaMail to talk to a "
+"'real' SMTP server."
+msgstr ""
+
+#. Tag: literal
+#: Mail.xml:158
+#, no-c-format
+msgid "mailSession"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:159
+#, no-c-format
+msgid ""
+"A JavaMail Session may be available via a JNDI lookup if you are working in "
+"an JEE environment or you can use a Seam configured Session."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:162
+#, no-c-format
+msgid ""
+"The mailSession component's properties are described in more detail in <xref "
+"linkend=\"Built_in_Seam_components-Mail_related_components\"/>."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:166
+#, no-c-format
+msgid "JNDI lookup in JBoss AS"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:167
+#, no-c-format
+msgid ""
+"The JBossAS <literal>deploy/mail-service.xml</literal> configures a JavaMail "
+"session binding into JNDI. The default service configuration will need "
+"altering for your network. <ulink url=\"http://wiki.jboss.org/wiki/Wiki.jsp?"
+"page=JavaMail\">http://wiki.jboss.org/wiki/Wiki.jsp?page=JavaMail</ulink> "
+"describes the service in more detail."
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:170
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"        xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"        xmlns:mail=\"http://jboss.com/products/seam/mail\"&gt;\n"
+"        \n"
+"    &lt;mail:mail-session session-jndi-name=\"java:/Mail\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:171
+#, no-c-format
+msgid ""
+"Here we tell Seam to get the mail session bound to <literal>java:/Mail</"
+"literal> from JNDI."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:177
+#, no-c-format
+msgid "Seam configured Session"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:178
+#, no-c-format
+msgid ""
+"A mail session can be configured via <literal>components.xml</literal>. Here "
+"we tell Seam to use <literal>smtp.example.com</literal> as the smtp server,"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:181
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"        xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"        xmlns:mail=\"http://jboss.com/products/seam/mail\"&gt;\n"
+"        \n"
+"    &lt;mail:mail-session host=\"smtp.example.com\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:189
+#, no-c-format
+msgid "Tags"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:190
+#, no-c-format
+msgid ""
+"Emails are generated using tags in the <literal>http://jboss.com/products/"
+"seam/mail</literal> namespace. Documents should always have the "
+"<literal>message</literal> tag at the root of the message. The message tag "
+"prepares Seam to generate an email."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:193
+#, no-c-format
+msgid ""
+"The standard templating tags of facelets can be used as normal. Inside the "
+"body you can use any JSF tag which doesn't require access to external "
+"resources (stylesheets, javascript)."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:198
+#, no-c-format
+msgid "&lt;m:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:200
+#, no-c-format
+msgid "Root tag of a mail message"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:205
+#, no-c-format
+msgid ""
+"<literal>importance</literal> &mdash; low, normal or high. By default "
+"normal, this sets the importance of the mail message."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:210
+#, no-c-format
+msgid ""
+"<literal>precedence</literal> &mdash; sets the precedence of the message (e."
+"g. bulk)."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:215
+#, no-c-format
+msgid ""
+"<literal>requestReadReceipt</literal> &mdash; by default false, if set, a "
+"read receipt will be request will be added, with the read receipt being sent "
+"to the <literal>From:</literal> address."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:220
+#, no-c-format
+msgid ""
+"<literal>urlBase</literal> &mdash; If set, the value is prepended to the "
+"<literal>requestContextPath</literal> allowing you to use components such as "
+"<literal>&lt;h:graphicImage&gt;</literal> in your emails."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:228
+#, no-c-format
+msgid "&lt;m:from&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:230
+#, no-c-format
+msgid ""
+"Set's the From: address for the email. You can only have one of these per "
+"email."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:235
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the name the email should come from."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:240 Mail.xml:255
+#, no-c-format
+msgid ""
+"<literal>address</literal> &mdash; the email address the email should come "
+"from."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:248
+#, no-c-format
+msgid "&lt;m:replyTo&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:250
+#, no-c-format
+msgid ""
+"Set's the Reply-to: address for the email. You can only have one of these "
+"per email."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:263
+#, no-c-format
+msgid "&lt;m:to&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:265
+#, no-c-format
+msgid ""
+"Add a recipient to the email. Use multiple &lt;m:to&gt; tags for multiple "
+"recipients. This tag can be safely placed inside a repeat tag such as &lt;ui:"
+"repeat&gt;."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:270 Mail.xml:290 Mail.xml:310
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the name of the recipient."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:275 Mail.xml:295 Mail.xml:315
+#, no-c-format
+msgid "<literal>address</literal> &mdash; the email address of the recipient."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:283
+#, no-c-format
+msgid "&lt;m:cc&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:285
+#, no-c-format
+msgid ""
+"Add a cc recipient to the email. Use multiple &lt;m:cc&gt; tags for multiple "
+"ccs. This tag can be safely placed inside a repeat tag such as &lt;ui:"
+"repeat&gt;."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:303
+#, no-c-format
+msgid "&lt;m:bcc&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:305
+#, no-c-format
+msgid ""
+"Add a bcc recipient to the email. Use multiple &lt;m:bcc&gt; tags for "
+"multiple bccs. This tag can be safely placed inside a repeat tag such as &lt;"
+"ui:repeat&gt;."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:323
+#, no-c-format
+msgid "&lt;m:header&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:325
+#, no-c-format
+msgid ""
+"Add a header to the email (e.g. <literal>X-Sent-From: JBoss Seam</literal>"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:330
+#, no-c-format
+msgid ""
+"<literal>name</literal> &mdash; The name of the header to add (e.g. "
+"<literal>X-Sent-From</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:335
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; The value of the header to add (e.g. "
+"<literal>JBoss Seam</literal>)."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:343
+#, no-c-format
+msgid "&lt;m:attachment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:345
+#, no-c-format
+msgid "Add an attachment to the email."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:350
+#, no-c-format
+msgid "<literal>value</literal> &mdash; The file to attach:"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:355
+#, no-c-format
+msgid ""
+"<literal>String</literal> &mdash; A <literal>String</literal> is interpreted "
+"as a path to file within the classpath"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:360
+#, no-c-format
+msgid ""
+"<literal>java.io.File</literal> &mdash; An EL expression can reference a "
+"<literal>File</literal> object"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:365
+#, no-c-format
+msgid ""
+"<literal>java.net.URL</literal> &mdash; An EL expression can reference a "
+"<literal>URL</literal> object"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:370
+#, no-c-format
+msgid ""
+"<literal>java.io.InputStream</literal> &mdash; An EL expression can "
+"reference an <literal>InputStream</literal>. In this case both a "
+"<literal>fileName</literal> and a <literal>contentType</literal> must be "
+"specified."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:375
+#, no-c-format
+msgid ""
+"<literal>byte[]</literal> &mdash; An EL expression can reference an "
+"<literal>byte[]</literal>. In this case both a <literal>fileName</literal> "
+"and a <literal>contentType</literal> must be specified."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:380
+#, no-c-format
+msgid "If the value attribute is ommitted:"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:385
+#, no-c-format
+msgid ""
+"If this tag contains a <literal>&lt;p:document&gt;</literal> tag, the "
+"document described will be generated and attached to the email. A "
+"<literal>fileName</literal> should be specfied."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:390
+#, no-c-format
+msgid ""
+"If this tag contains other JSF tags a HTML document will be generated from "
+"them and attached to the email. A <literal>fileName</literal> should be "
+"specfied."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:397
+#, no-c-format
+msgid ""
+"<literal>fileName</literal> &mdash; Specify the file name to use for the "
+"attached file."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:402
+#, no-c-format
+msgid ""
+"<literal>contentType</literal> &mdash; Specify the MIME type of the attached "
+"file"
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:410
+#, no-c-format
+msgid "&lt;m:subject&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:412
+#, no-c-format
+msgid "Set's the subject for the email."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:418
+#, no-c-format
+msgid "&lt;m:body&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:420
+#, no-c-format
+msgid ""
+"Set's the body for the email. Supports an <literal>alternative</literal> "
+"facet which, if an HTML email is generated can contain alternative text for "
+"a mail reader which doesn't support html."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:425
+#, no-c-format
+msgid ""
+"<literal>type</literal> &mdash; If set to <literal>plain</literal> then a "
+"plain text email will be generated otherwise an HTML email is generated."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Persistence.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Persistence.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Persistence.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,750 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Persistence.xml:10
+#, no-c-format
+msgid "Seam and Object/Relational Mapping"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:11
+#, no-c-format
+msgid ""
+"Seam provides extensive support for the two most popular persistence "
+"architectures for Java: Hibernate3, and the Java Persistence API introduced "
+"with EJB 3.0. Seam's unique state-management architecture allows the most "
+"sophisticated ORM integration of any web application framework."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:15
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:16
+#, no-c-format
+msgid ""
+"Seam grew out of the frustration of the Hibernate team with the "
+"statelessness typical of the previous generation of Java application "
+"architectures. The state management architecture of Seam was originally "
+"designed to solve problems relating to persistence&mdash;in particular "
+"problems associated with <emphasis>optimistic transaction processing</"
+"emphasis>. Scalable online applications always use optimistic transactions. "
+"An atomic (database/JTA) level transaction should not span a user "
+"interaction unless the application is designed to support only a very small "
+"number of concurrent clients. But almost all interesting work involves first "
+"displaying data to a user, and then, slightly later, updating the same data. "
+"So Hibernate was designed to support the idea of a persistence context which "
+"spanned an optimistic transaction."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:19
+#, no-c-format
+msgid ""
+"Unfortunately, the so-called \"stateless\" architectures that preceded Seam "
+"and EJB 3.0 had no construct for representing an optimistic transaction. So, "
+"instead, these architectures provided persistence contexts scoped to the "
+"atomic transaction. Of course, this resulted in many problems for users, and "
+"is the cause of the number one user complaint about Hibernate: the dreaded "
+"<literal>LazyInitializationException</literal>. What we need is a construct "
+"for representing an optimistic transaction in the application tier."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:22
+#, no-c-format
+msgid ""
+"EJB 3.0 recognizes this problem, and introduces the idea of a stateful "
+"component (a stateful session bean) with an <emphasis>extended persistence "
+"context</emphasis> scoped to the lifetime of the component. This is a "
+"partial solution to the problem (and is a useful construct in and of itself) "
+"however there are two problems:"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:27
+#, no-c-format
+msgid ""
+"The lifecycle of the stateful session bean must be managed manually via code "
+"in the web tier (it turns out that this is a subtle problem and much more "
+"difficult in practice than it sounds)."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:32
+#, no-c-format
+msgid ""
+"Propagation of the persistence context between stateful components in the "
+"same optimistic transaction is possible, but tricky."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:37
+#, no-c-format
+msgid ""
+"Seam solves the first problem by providing conversations, and stateful "
+"session bean components scoped to the conversation. (Most conversations "
+"actually represent optimistic transactions in the data layer.) This is "
+"sufficient for many simple applications (such as the Seam booking demo) "
+"where persistence context propagation is not needed. For more complex "
+"applications, with many loosly-interacting components in each conversation, "
+"propagation of the persistence context across components becomes an "
+"important issue. So Seam extends the persistence context management model of "
+"EJB 3.0, to provide conversation-scoped extended persistence contexts."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:43
+#, no-c-format
+msgid "Seam managed transactions"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:44
+#, no-c-format
+msgid ""
+"EJB session beans feature declarative transaction management. The EJB "
+"container is able to start a transaction transparently when the bean is "
+"invoked, and end it when the invocation ends. If we write a session bean "
+"method that acts as a JSF action listener, we can do all the work associated "
+"with that action in one transaction, and be sure that it is committed or "
+"rolled back when we finish processing the action. This is a great feature, "
+"and all that is needed by some Seam applications."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:47
+#, no-c-format
+msgid ""
+"However, there is a problem with this approach. A Seam application may not "
+"perform all data access for a request from a single method call to a session "
+"bean."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:52
+#, no-c-format
+msgid ""
+"The request might require processing by several loosly-coupled components, "
+"each of which is called independently from the web layer. It is common to "
+"see several or even many calls per request from the web layer to EJB "
+"components in Seam."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:57
+#, no-c-format
+msgid "Rendering of the view might require lazy fetching of associations."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:62
+#, no-c-format
+msgid ""
+"The more transactions per request, the more likely we are to encounter "
+"atomicity and isolation problems when our application is processing many "
+"concurrent requests. Certainly, all write operations should occur in the "
+"same transaction!"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:65
+#, no-c-format
+msgid ""
+"Hibernate users developed the <emphasis>\"open session in view\"</emphasis> "
+"pattern to work around this problem. In the Hibernate community, \"open "
+"session in view\" was historically even more important because frameworks "
+"like Spring use transaction-scoped persistence contexts. So rendering the "
+"view would cause <literal>LazyInitializationException</literal>s when "
+"unfetched associations were accessed."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:68
+#, no-c-format
+msgid ""
+"This pattern is usually implemented as a single transaction which spans the "
+"entire request. There are several problems with this implementation, the "
+"most serious being that we can never be sure that a transaction is "
+"successful until we commit it&mdash;but by the time the \"open session in "
+"view\" transaction is committed, the view is fully rendered, and the "
+"rendered response may already have been flushed to the client. How can we "
+"notify the user that their transaction was unsuccessful?"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:71
+#, no-c-format
+msgid ""
+"Seam solves both the transaction isolation problem and the association "
+"fetching problem, while working around the problems with \"open session in "
+"view\". The solution comes in two parts:"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:76
+#, no-c-format
+msgid ""
+"use an extended persistence context that is scoped to the conversation, "
+"instead of to the transaction"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:81
+#, no-c-format
+msgid ""
+"use two transactions per request; the first spans the beginning of the "
+"update model values phase until the end of the invoke application phase; the "
+"second spans the render response phase"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:86
+#, no-c-format
+msgid ""
+"In the next section, we'll tell you how to set up a conversation-scope "
+"persistence context. But first we need to tell you how to enable Seam "
+"transaction management. Note that you can use conversation-scoped "
+"persistence contexts without Seam transaction management, and there are good "
+"reasons to use Seam transaction management even when you're not using Seam-"
+"managed persistence contexts. However, the two facilities were designed to "
+"work together, and work best when used together."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:90
+#, no-c-format
+msgid "Enabling Seam-managed transactions"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:91
+#, no-c-format
+msgid ""
+"To make use of <emphasis>Seam managed transactions</emphasis>, you need to "
+"use <literal>TransactionalSeamPhaseListener</literal> in place of "
+"<literal>SeamPhaseListener</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:94
+#, no-c-format
+msgid ""
+"&lt;lifecycle&gt;\n"
+"     &lt;phase-listener&gt;\n"
+"        org.jboss.seam.jsf.TransactionalSeamPhaseListener\n"
+"    &lt;/phase-listener&gt;\n"
+"&lt;/lifecycle&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:95
+#, no-c-format
+msgid ""
+"Seam transaction management is useful even if you're using EJB 3.0 container-"
+"managed persistence contexts. But it is especially useful if you use Seam "
+"outside a Java EE 5 environment, or in any other case where you would use a "
+"Seam-managed persistence context."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:103
+#, no-c-format
+msgid "Seam-managed persistence contexts"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:104
+#, no-c-format
+msgid ""
+"If you're using Seam outside of a Java EE 5 environment, you can't rely upon "
+"the container to manage the persistence context lifecycle for you. Even if "
+"you are in an EE 5 environment, you might have a complex application with "
+"many loosly coupled components that collaborate together in the scope of a "
+"single conversation, and in this case you might find that propagation of the "
+"persistence context between component is tricky and error-prone."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:107
+#, no-c-format
+msgid ""
+"In either case, you'll need to use a <emphasis>managed persistence context</"
+"emphasis> (for JPA) or a <emphasis>managed session</emphasis> (for "
+"Hibernate) in your components. A Seam-managed persistence context is just a "
+"built-in Seam component that manages an instance of <literal>EntityManager</"
+"literal> or <literal>Session</literal> in the conversation context. You can "
+"inject it with <literal>@In</literal>."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:110
+#, no-c-format
+msgid ""
+"Seam-managed persistence contexts are extremely efficient in a clustered "
+"environment. Seam is able to perform an optimization that EJB 3.0 "
+"specification does not allow containers to use for container-managed "
+"extended persistence contexts. Seam supports transparent failover of "
+"extended persisence contexts, without the need to replicate any persistence "
+"context state between nodes. (We hope to fix this oversight in the next "
+"revision of the EJB spec.)"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:114
+#, no-c-format
+msgid "Using a Seam-managed persistence context with JPA"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:115
+#, no-c-format
+msgid ""
+"Configuring a managed persistence context is easy. In <literal>components."
+"xml</literal>, we can write:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:118
+#, no-c-format
+msgid ""
+"&lt;core:managed-persistence-context name=\"bookingDatabase\" \n"
+"                           auto-create=\"true\"\n"
+"            persistence-unit-jndi-name=\"java:/EntityManagerFactories/"
+"bookingData\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:119
+#, no-c-format
+msgid ""
+"This configuration creates a conversation-scoped Seam component named "
+"<literal>bookingDatabase</literal> that manages the lifecycle of "
+"<literal>EntityManager</literal> instances for the persistence unit "
+"(<literal>EntityManagerFactory</literal> instance) with JNDI name "
+"<literal>java:/EntityManagerFactories/bookingData</literal>."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:122
+#, no-c-format
+msgid ""
+"Of course, you need to make sure that you have bound the "
+"<literal>EntityManagerFactory</literal> into JNDI. In JBoss, you can do this "
+"by adding the following property setting to <literal>persistence.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:125
+#, no-c-format
+msgid ""
+"&lt;property name=\"jboss.entity.manager.factory.jndi.name\" \n"
+"          value=\"java:/EntityManagerFactories/bookingData\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:126
+#, no-c-format
+msgid "Now we can have our <literal>EntityManager</literal> injected using:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:129
+#, no-c-format
+msgid "@In EntityManager bookingDatabase;"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:133
+#, no-c-format
+msgid "Using a Seam-managed Hibernate session"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:134
+#, no-c-format
+msgid ""
+"Seam-managed Hibernate sessions are similar. In <literal>components.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:137
+#, no-c-format
+msgid ""
+"&lt;core:hibernate-session-factory name=\"hibernateSessionFactory\"/&gt;\n"
+"\n"
+"&lt;core:managed-hibernate-session name=\"bookingDatabase\" \n"
+"                         auto-create=\"true\"\n"
+"           session-factory-jndi-name=\"java:/bookingSessionFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:138
+#, no-c-format
+msgid ""
+"Where <literal>java:/bookingSessionFactory</literal> is the name of the "
+"session factory specified in <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:141
+#, no-c-format
+msgid ""
+"&lt;session-factory name=\"java:/bookingSessionFactory\"&gt;\n"
+"    &lt;property name=\"transaction.flush_before_completion\"&gt;true&lt;/"
+"property&gt;\n"
+"    &lt;property name=\"connection.release_mode\"&gt;after_statement&lt;/"
+"property&gt;\n"
+"    &lt;property name=\"transaction.manager_lookup_class\"&gt;\n"
+"        org.hibernate.transaction.JBossTransactionManagerLookup\n"
+"    &lt;/property&gt;\n"
+"    &lt;property name=\"transaction.factory_class\"&gt;\n"
+"        org.hibernate.transaction.JTATransactionFactory\n"
+"    &lt;/property&gt;\n"
+"    &lt;property name=\"connection.datasource\"&gt;java:/"
+"bookingDatasource&lt;/property&gt;\n"
+"    ...\n"
+"&lt;/session-factory&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:142
+#, no-c-format
+msgid ""
+"Note that Seam does not flush the session, so you should always enable "
+"<literal>hibernate.transaction.flush_before_completion</literal> to ensure "
+"that the session is automatically flushed before the JTA transaction commits."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:145
+#, no-c-format
+msgid ""
+"We can now have a managed Hibernate <literal>Session</literal> injected into "
+"our JavaBean components using the following code:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:148
+#, no-c-format
+msgid "@In Session bookingDatabase;"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:152
+#, no-c-format
+msgid "Seam-managed persistence contexts and atomic conversations"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:153
+#, no-c-format
+msgid ""
+"Persistence contexts scoped to the conversation allows you to program "
+"optimistic transactions that span multiple requests to the server without "
+"the need to use the <literal>merge()</literal> operation , without the need "
+"to re-load data at the beginning of each request, and without the need to "
+"wrestle with the <literal>LazyInitializationException</literal> or "
+"<literal>NonUniqueObjectException</literal>."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:156
+#, no-c-format
+msgid ""
+"As with any optimistic transaction management, transaction isolation and "
+"consistency can be achieved via use of optimistic locking. Fortunately, both "
+"Hibernate and EJB 3.0 make it very easy to use optimistic locking, by "
+"providing the <literal>@Version</literal> annotation."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:159
+#, no-c-format
+msgid ""
+"By default, the persistence context is flushed (synchronized with the "
+"database) at the end of each transaction. This is sometimes the desired "
+"behavior. But very often, we would prefer that all changes are held in "
+"memory and only written to the database when the conversation ends "
+"successfully. This allows for truly atomic conversations. As the result of a "
+"truly stupid and shortsighted decision by certain non-JBoss, non-Sun and non-"
+"Sybase members of the EJB 3.0 expert group, there is currently no simple, "
+"usable and portable way to implement atomic conversations using EJB 3.0 "
+"persistence. However, Hibernate provides this feature as a vendor extension "
+"to the <literal>FlushModeType</literal>s defined by the specification, and "
+"it is our expectation that other vendors will soon provide a similar "
+"extension."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:162
+#, no-c-format
+msgid ""
+"Seam lets you specify <literal>FlushModeType.MANUAL</literal> when beginning "
+"a conversation. Currently, this works only when Hibernate is the underlying "
+"persistence provider, but we plan to support other equivalent vendor "
+"extensions."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:165
+#, no-c-format
+msgid ""
+"@In EntityManager em; //a Seam-managed persistence context\n"
+"\n"
+"@Begin(flushMode=MANUAL)\n"
+"public void beginClaimWizard() {\n"
+"    claim = em.find(Claim.class, claimId);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:166
+#, no-c-format
+msgid ""
+"Now, the <literal>claim</literal> object remains managed by the persistence "
+"context for the rest ot the conversation. We can make changes to the claim:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:169
+#, no-c-format
+msgid ""
+"public void addPartyToClaim() {\n"
+"    Party party = ....;\n"
+"    claim.addParty(party);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:170
+#, no-c-format
+msgid ""
+"But these changes will not be flushed to the database until we explicitly "
+"force the flush to occur:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:173
+#, no-c-format
+msgid ""
+"@End\n"
+"public void commitClaim() {\n"
+"    em.flush();\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:179
+#, no-c-format
+msgid "Using the JPA \"delegate\""
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:180
+#, no-c-format
+msgid ""
+"The <literal>EntityManager</literal> interface lets you access a vendor-"
+"specific API via the <literal>getDelegate()</literal> method. Naturally, the "
+"most interesting vendor is Hibernate, and the most powerful delegate "
+"interface is <literal>org.hibernate.Session</literal>. You'd be nuts to use "
+"anything else. Trust me, I'm not biased at all."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:183
+#, no-c-format
+msgid ""
+"But regardless of whether you're using Hibernate (genius!) or something else "
+"(masochist, or just not very bright), you'll almost certainly want to use "
+"the delegate in your Seam components from time to time. One approach would "
+"be the following:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:186
+#, no-c-format
+msgid ""
+"@In EntityManager entityManager;\n"
+"\n"
+"@Create\n"
+"public void init() {\n"
+"    ( (Session) entityManager.getDelegate() ).enableFilter(\"currentVersions"
+"\");\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:187
+#, no-c-format
+msgid ""
+"But typecasts are unquestionably the ugliest syntax in the Java language, so "
+"most people avoid them whenever possible. Here's a different way to get at "
+"the delegate. First, add the following line to <literal>components.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:190
+#, no-c-format
+msgid ""
+"&lt;factory name=\"session\" \n"
+"         scope=\"STATELESS\" \n"
+"         auto-create=\"true\" \n"
+"         value=\"#{entityManager.delegate}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:191
+#, no-c-format
+msgid "Now we can inject the session directly:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:194
+#, no-c-format
+msgid ""
+"@In Session session;\n"
+"\n"
+"@Create\n"
+"public void init() {\n"
+"    session.enableFilter(\"currentVersions\");\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:198
+#, no-c-format
+msgid "Using EL in EJB-QL/HQL"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:199
+#, no-c-format
+msgid ""
+"Seam proxies the <literal>EntityManager</literal> or <literal>Session</"
+"literal> object whenever you use a Seam-managed persistence context or "
+"inject a container managed persistence context using "
+"<literal>@PersistenceContext</literal>. This lets you use EL expressions in "
+"your query strings, safely and efficiently. For example, this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:202
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=#{user.username}\")\n"
+"         .getSingleResult();"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:203
+#, no-c-format
+msgid "is equivalent to:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:206
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getSingleResult();"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:207
+#, no-c-format
+msgid "Of course, you should never, ever write it like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:210
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=\" + user.getUsername"
+"()) //BAD!\n"
+"         .getSingleResult();"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:211
+#, no-c-format
+msgid "(It is inefficient and vulnerable to SQL injection attacks.)"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:217
+#, no-c-format
+msgid "Using Hibernate filters"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:218
+#, no-c-format
+msgid ""
+"The coolest, and most unique, feature of Hibernate is <emphasis>filters</"
+"emphasis>. Filters let you provide a restricted view of the data in the "
+"database. You can find out more about filters in the Hibernate "
+"documentation. But we thought we'd mention an easy way to incorporate "
+"filters into a Seam application, one that works especially well with the "
+"Seam Application Framework."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:221
+#, no-c-format
+msgid ""
+"Seam-managed persistence contexts may have a list of filters defined, which "
+"will be enabled whenever an <literal>EntityManager</literal> or Hibernate "
+"<literal>Session</literal> is first created. (Of course, they may only be "
+"used when Hibernate is the underlying persistence provider.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:224
+#, no-c-format
+msgid ""
+"&lt;core:filter name=\"regionFilter\"&gt;\n"
+"    &lt;core:name&gt;region&lt;/core:name&gt;\n"
+"    &lt;core:parameters&gt;\n"
+"        &lt;key&gt;regionCode&lt;/key&gt;\n"
+"        &lt;value&gt;#{region.code}&lt;/value&gt;\n"
+"    &lt;/core:parameters&gt;\n"
+"&lt;/core:filter&gt;\n"
+"\n"
+"&lt;core:filter name=\"currentFilter\"&gt;\n"
+"    &lt;core:name&gt;current&lt;/core:name&gt;\n"
+"    &lt;core:parameters&gt;\n"
+"        &lt;key&gt;date&lt;/key&gt;\n"
+"        &lt;value&gt;#{currentDate}&lt;/value&gt;\n"
+"    &lt;/core:parameters&gt;\n"
+"&lt;/core:filter&gt;\n"
+"\n"
+"&lt;core:managed-persistence-context name=\"personDatabase\"\n"
+"    persistence-unit-jndi-name=\"java:/EntityManagerFactories/personDatabase"
+"\"&gt;\n"
+"    &lt;core:filters&gt;\n"
+"        &lt;value&gt;#{regionFilter}&lt;/value&gt;\n"
+"        &lt;value&gt;#{currentFilter}&lt;/value&gt;\n"
+"    &lt;/core:filters&gt;\n"
+"&lt;/core:managed-persistence-context&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Remoting.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Remoting.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Remoting.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1458 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Remoting.xml:10
+#, no-c-format
+msgid "Remoting"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:11
+#, no-c-format
+msgid ""
+"Seam provides a convenient method of remotely accessing components from a "
+"web page, using AJAX (Asynchronous Javascript and XML). The framework for "
+"this functionality is provided with almost no up-front development effort - "
+"your components only require simple annotating to become accessible via "
+"AJAX. This chapter describes the steps required to build an AJAX-enabled web "
+"page, then goes on to explain the features of the Seam Remoting framework in "
+"more detail."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:14 Remoting.xml:296
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:15
+#, no-c-format
+msgid ""
+"To use remoting, the Seam Resource servlet must first be configured in your "
+"<literal>web.xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:18
+#, no-c-format
+msgid ""
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"  &lt;/servlet&gt;\n"
+"\n"
+"  &lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"  &lt;/servlet-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:19
+#, no-c-format
+msgid ""
+"The next step is to import the necessary Javascript into your web page. "
+"There are a minimum of two scripts that must be imported. The first one "
+"contains all the client-side framework code that enables remoting "
+"functionality:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:22
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/resource/"
+"remote.js\"&gt;&lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:23
+#, no-c-format
+msgid ""
+"The second script contains the stubs and type definitions for the components "
+"you wish to call. It is generated dynamically based on the local interface "
+"of your components, and includes type definitions for all of the classes "
+"that can be used to call the remotable methods of the interface. The name of "
+"the script reflects the name of your component. For example, if you have a "
+"stateless session bean annotated with <literal>@Name(\"customerAction\")</"
+"literal>, then your script tag should look like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:26
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?customerAction\"&gt;\n"
+"      &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:27
+#, no-c-format
+msgid ""
+"If you wish to access more than one component from the same page, then "
+"include them all as parameters of your script tag:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:30
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" \n"
+"      src=\"seam/resource/remoting/interface.js?customerAction&amp;"
+"accountAction\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:31
+#, no-c-format
+msgid "The \"Seam\" object"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:32
+#, no-c-format
+msgid ""
+"Client-side interaction with your components is all performed via the "
+"<literal>Seam</literal> Javascript object. This object is defined in "
+"<literal>remote.js</literal>, and you'll be using it to make asynchronous "
+"calls against your component. It is split into two areas of functionality; "
+"<literal>Seam.Component</literal> contains methods for working with "
+"components and <literal>Seam.Remoting</literal> contains methods for "
+"executing remote requests. The easiest way to become familiar with this "
+"object is to start with a simple example."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:35
+#, no-c-format
+msgid "A Hello World example"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:36
+#, no-c-format
+msgid ""
+"Let's step through a simple example to see how the <literal>Seam</literal> "
+"object works. First of all, let's create a new Seam component called "
+"<literal>helloAction</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:39
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"  @Name(\"helloAction\")\n"
+"  public class HelloAction implements HelloLocal {\n"
+"    public String sayHello(String name) {\n"
+"      return \"Hello, \" + name;\n"
+"    }\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:40
+#, no-c-format
+msgid ""
+"You also need to create a local interface for our new component - take "
+"special note of the <literal>@WebRemote</literal> annotation, as it's "
+"required to make our method accessible via remoting:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:43
+#, no-c-format
+msgid ""
+"@Local\n"
+"  public interface HelloLocal {\n"
+"    @WebRemote\n"
+"    public String sayHello(String name);\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:44
+#, no-c-format
+msgid ""
+"That's all the server-side code we need to write. Now for our web page - "
+"create a new page and import the following scripts:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:47
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/resource/"
+"remote.js\"&gt;&lt;/script&gt;\n"
+"  &lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?helloAction\"&gt;&lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:48
+#, no-c-format
+msgid ""
+"To make this a fully interactive user experience, let's add a button to our "
+"page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:51
+#, no-c-format
+msgid ""
+"&lt;button onclick=\"javascript:sayHello()\"&gt;Say Hello&lt;/button&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:52
+#, no-c-format
+msgid ""
+"We'll also need to add some more script to make our button actually do "
+"something when it's clicked:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:55
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\"&gt;\n"
+"    //&lt;![CDATA[\n"
+"\n"
+"    function sayHello() {\n"
+"      var name = prompt(\"What is your name?\");\n"
+"      Seam.Component.getInstance(\"helloAction\").sayHello(name, "
+"sayHelloCallback);\n"
+"    }\n"
+"\n"
+"    function sayHelloCallback(result) {\n"
+"      alert(result);\n"
+"    }\n"
+"\n"
+"    // ]]&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:56
+#, no-c-format
+msgid ""
+"We're done! Deploy your application and browse to your page. Click the "
+"button, and enter a name when prompted. A message box will display the hello "
+"message confirming that the call was successful. If you want to save some "
+"time, you'll find the full source code for this Hello World example in "
+"Seam's <literal>/examples/remoting/helloworld</literal> directory."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:59
+#, no-c-format
+msgid ""
+"So what does the code of our script actually do? Let's break it down into "
+"smaller pieces. To start with, you can see from the Javascript code listing "
+"that we have implemented two methods - the first method is responsible for "
+"prompting the user for their name and then making a remote request. Take a "
+"look at the following line:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:62
+#, no-c-format
+msgid ""
+"Seam.Component.getInstance(\"helloAction\").sayHello(name, sayHelloCallback);"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:63
+#, no-c-format
+msgid ""
+"The first section of this line, <literal>Seam.Component.getInstance"
+"(\"helloAction\")</literal> returns a proxy, or \"stub\" for our "
+"<literal>helloAction</literal> component. We can invoke the methods of our "
+"component against this stub, which is exactly what happens with the "
+"remainder of the line: <literal>sayHello(name, sayHelloCallback);</literal>."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:66
+#, no-c-format
+msgid ""
+"What this line of code in its completeness does, is invoke the "
+"<literal>sayHello</literal> method of our component, passing in "
+"<literal>name</literal> as a parameter. The second parameter, "
+"<literal>sayHelloCallback</literal> isn't a parameter of our component's "
+"<literal>sayHello</literal> method, instead it tells the Seam Remoting "
+"framework that once it receives the response to our request, it should pass "
+"it to the <literal>sayHelloCallback</literal> Javascript method. This "
+"callback parameter is entirely optional, so feel free to leave it out if "
+"you're calling a method with a <literal>void</literal> return type or if you "
+"don't care about the result."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:69
+#, no-c-format
+msgid ""
+"The <literal>sayHelloCallback</literal> method, once receiving the response "
+"to our remote request then pops up an alert message displaying the result of "
+"our method call."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:72
+#, no-c-format
+msgid "Seam.Component"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:73
+#, no-c-format
+msgid ""
+"The <literal>Seam.Component</literal> Javascript object provides a number of "
+"client-side methods for working with your Seam components. The two main "
+"methods, <literal>newInstance()</literal> and <literal>getInstance()</"
+"literal> are documented in the following sections however their main "
+"difference is that <literal>newInstance()</literal> will always create a new "
+"instance of a component type, and <literal>getInstance()</literal> will "
+"return a singleton instance."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:76
+#, no-c-format
+msgid "Seam.Component.newInstance()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:77
+#, no-c-format
+msgid ""
+"Use this method to create a new instance of an entity or Javabean component. "
+"The object returned by this method will have the same getter/setter methods "
+"as its server-side counterpart, or alternatively if you wish you can access "
+"its fields directly. Take the following Seam entity component for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:80
+#, no-c-format
+msgid ""
+"@Name(\"customer\")\n"
+"  @Entity\n"
+"  public class Customer implements Serializable\n"
+"  {\n"
+"    private Integer customerId;\n"
+"    private String firstName;\n"
+"    private String lastName;\n"
+"    \n"
+"    @Column public Integer getCustomerId() { \n"
+"      return customerId; \n"
+"    }\n"
+"    \n"
+"    public void setCustomerId(Integer customerId} { \n"
+"      this.customerId = customerId; \n"
+"    }\n"
+"    \n"
+"    @Column public String getFirstName() { \n"
+"      return firstName; \n"
+"    }\n"
+"    \n"
+"    public void setFirstName(String firstName) {\n"
+"      this.firstName = firstName; \n"
+"    }\n"
+"    \n"
+"    @Column public String getLastName() {\n"
+"      return lastName;\n"
+"    }\n"
+"    \n"
+"    public void setLastName(String lastName) {\n"
+"      this.lastName = lastName;\n"
+"    }\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:81
+#, no-c-format
+msgid "To create a client-side Customer you would write the following code:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:84
+#, no-c-format
+msgid "var customer = Seam.Component.newInstance(\"customer\");"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:85
+#, no-c-format
+msgid "Then from here you can set the fields of the customer object:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:88
+#, no-c-format
+msgid ""
+"customer.setFirstName(\"John\");\n"
+"  // Or you can set the fields directly\n"
+"  customer.lastName = \"Smith\";"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:89
+#, no-c-format
+msgid "Seam.Component.getInstance()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:90
+#, no-c-format
+msgid ""
+"The <literal>getInstance()</literal> method is used to get a reference to a "
+"Seam session bean component stub, which can then be used to remotely execute "
+"methods against your component. This method returns a singleton for the "
+"specified component, so calling it twice in a row with the same component "
+"name will return the same instance of the component."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:93
+#, no-c-format
+msgid ""
+"To continue our example from before, if we have created a new "
+"<literal>customer</literal> and we now wish to save it, we would pass it to "
+"the <literal>saveCustomer()</literal> method of our <literal>customerAction</"
+"literal> component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:96
+#, no-c-format
+msgid "Seam.Component.getInstance(\"customerAction\").saveCustomer(customer);"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:97
+#, no-c-format
+msgid "Seam.Component.getComponentName()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:98
+#, no-c-format
+msgid ""
+"Passing an object into this method will return its component name if it is a "
+"component, or <literal>null</literal> if it is not."
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:101
+#, no-c-format
+msgid ""
+"if (Seam.Component.getComponentName(instance) == \"customer\")\n"
+"    alert(\"Customer\");\n"
+"  else if (Seam.Component.getComponentName(instance) == \"staff\")\n"
+"    alert(\"Staff member\");"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:102
+#, no-c-format
+msgid "Seam.Remoting"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:103
+#, no-c-format
+msgid ""
+"Most of the client side functionality for Seam Remoting is contained within "
+"the <literal>Seam.Remoting</literal> object. While you shouldn't need to "
+"directly call most of its methods, there are a couple of important ones "
+"worth mentioning."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:106
+#, no-c-format
+msgid "Seam.Remoting.createType()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:107
+#, no-c-format
+msgid ""
+"If your application contains or uses Javabean classes that aren't Seam "
+"components, you may need to create these types on the client side to pass as "
+"parameters into your component method. Use the <literal>createType()</"
+"literal> method to create an instance of your type. Pass in the fully "
+"qualified Java class name as a parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:110
+#, no-c-format
+msgid "var widget = Seam.Remoting.createType(\"com.acme.widgets.MyWidget\");"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:111
+#, no-c-format
+msgid "Seam.Remoting.getTypeName()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:112
+#, no-c-format
+msgid ""
+"This method is the equivalent of <literal>Seam.Component.getComponentName()</"
+"literal> but for non-component types. It will return the name of the type "
+"for an object instance, or <literal>null</literal> if the type is not known. "
+"The name is the fully qualified name of the type's Java class."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:115
+#, no-c-format
+msgid "Client Interfaces"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:116
+#, no-c-format
+msgid ""
+"In the configuration section above, the interface, or \"stub\" for our "
+"component is imported into our page via <literal>seam/resource/remoting/"
+"interface.js</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:119
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?customerAction\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:120
+#, no-c-format
+msgid ""
+"By including this script in our page, the interface definitions for our "
+"component, plus any other components or types that are required to execute "
+"the methods of our component are generated and made available for the "
+"remoting framework to use."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:123
+#, no-c-format
+msgid ""
+"There are two types of client stub that can be generated, \"executable\" "
+"stubs and \"type\" stubs. Executable stubs are behavioural, and are used to "
+"execute methods against your session bean components, while type stubs "
+"contain state and represent the types that can be passed in as parameters or "
+"returned as a result."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:126
+#, no-c-format
+msgid ""
+"The type of client stub that is generated depends on the type of your Seam "
+"component. If the component is a session bean, then an executable stub will "
+"be generated, otherwise if it's an entity or JavaBean, then a type stub will "
+"be generated. There is one exception to this rule; if your component is a "
+"JavaBean (ie it is not a session bean nor an entity bean) and any of its "
+"methods are annotated with @WebRemote, then an executable stub will be "
+"generated for it instead of a type stub. This allows you to use remoting to "
+"call methods of your JavaBean components in a non-EJB environment where you "
+"don't have access to session beans."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:130
+#, no-c-format
+msgid "The Context"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:131
+#, no-c-format
+msgid ""
+"The Seam Remoting Context contains additional information which is sent and "
+"received as part of a remoting request/response cycle. At this stage it only "
+"contains the conversation ID but may be expanded in the future."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:134
+#, no-c-format
+msgid "Setting and reading the Conversation ID"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:136
+#, no-c-format
+msgid ""
+"If you intend on using remote calls within the scope of a conversation then "
+"you need to be able to read or set the conversation ID in the Seam Remoting "
+"Context. To read the conversation ID after making a remote request call "
+"<literal>Seam.Remoting.getContext().getConversationId()</literal>. To set "
+"the conversation ID before making a request, call <literal>Seam.Remoting."
+"getContext().setConversationId()</literal>."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:139
+#, no-c-format
+msgid ""
+"If the conversation ID hasn't been explicitly set with <literal>Seam."
+"Remoting.getContext().setConversationId()</literal>, then it will be "
+"automatically assigned the first valid conversation ID that is returned by "
+"any remoting call. If you are working with multiple conversations within "
+"your page, then you may need to explicitly set the conversation ID before "
+"each call. If you are working with just a single conversation, then you "
+"don't need to do anything special."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:145
+#, no-c-format
+msgid "Batch Requests"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:146
+#, no-c-format
+msgid ""
+"Seam Remoting allows multiple component calls to be executed within a single "
+"request. It is recommended that this feature is used wherever it is "
+"appropriate to reduce network traffic."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:149
+#, no-c-format
+msgid ""
+"The method <literal>Seam.Remoting.startBatch()</literal> will start a new "
+"batch, and any component calls executed after starting a batch are queued, "
+"rather than being sent immediately. When all the desired component calls "
+"have been added to the batch, the <literal>Seam.Remoting.executeBatch()</"
+"literal> method will send a single request containing all of the queued "
+"calls to the server, where they will be executed in order. After the calls "
+"have been executed, a single response containining all return values will be "
+"returned to the client and the callback functions (if provided) triggered in "
+"the same order as execution."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:152
+#, no-c-format
+msgid ""
+"If you start a new batch via the <literal>startBatch()</literal> method but "
+"then decide you don't want to send it, the <literal>Seam.Remoting.cancelBatch"
+"()</literal> method will discard any calls that were queued and exit the "
+"batch mode."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:155
+#, no-c-format
+msgid ""
+"To see an example of a batch being used, take a look at <literal>/examples/"
+"remoting/chatroom</literal>."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:159
+#, no-c-format
+msgid "Working with Data types"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:160
+#, no-c-format
+msgid "Primitives / Basic Types"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:161
+#, no-c-format
+msgid ""
+"This section describes the support for basic data types. On the server side "
+"these values are generally compatible with either their primitive type or "
+"their corresponding wrapper class."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:164
+#, no-c-format
+msgid "String"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:165
+#, no-c-format
+msgid ""
+"Simply use Javascript String objects when setting String parameter values."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:168
+#, no-c-format
+msgid "Number"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:169
+#, no-c-format
+msgid ""
+"There is support for all number types supported by Java. On the client side, "
+"number values are always serialized as their String representation and then "
+"on the server side they are converted to the correct destination type. "
+"Conversion into either a primitive or wrapper type is supported for "
+"<literal>Byte</literal>, <literal>Double</literal>, <literal>Float</"
+"literal>, <literal>Integer</literal>, <literal>Long</literal> and "
+"<literal>Short</literal> types."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:172
+#, no-c-format
+msgid "Boolean"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:173
+#, no-c-format
+msgid ""
+"Booleans are represented client side by Javascript Boolean values, and "
+"server side by a Java boolean."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:176
+#, no-c-format
+msgid "JavaBeans"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:177
+#, no-c-format
+msgid ""
+"In general these will be either Seam entity or JavaBean components, or some "
+"other non-component class. Use the appropriate method (either <literal>Seam."
+"Component.newInstance()</literal> for Seam components or <literal>Seam."
+"Remoting.createType()</literal> for everything else) to create a new "
+"instance of the object."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:180
+#, no-c-format
+msgid ""
+"It is important to note that only objects that are created by either of "
+"these two methods should be used as parameter values, where the parameter is "
+"not one of the other valid types mentioned anywhere else in this section. In "
+"some situations you may have a component method where the exact parameter "
+"type cannot be determined, such as:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:183
+#, no-c-format
+msgid ""
+"@Name(\"myAction\")\n"
+"  public class MyAction implements MyActionLocal {\n"
+"    public void doSomethingWithObject(Object obj) {\n"
+"      // code\n"
+"    }\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:184
+#, no-c-format
+msgid ""
+"In this case you might want to pass in an instance of your "
+"<literal>myWidget</literal> component, however the interface for "
+"<literal>myAction</literal> won't include <literal>myWidget</literal> as it "
+"is not directly referenced by any of its methods. To get around this, "
+"<literal>MyWidget</literal> needs to be explicitly imported:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:187
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?myAction&amp;myWidget\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:188
+#, no-c-format
+msgid ""
+"This will then allow a <literal>myWidget</literal> object to be created with "
+"<literal>Seam.Component.newInstance(\"myWidget\")</literal>, which can then "
+"be passed to <literal>myAction.doSomethingWithObject()</literal>."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:191
+#, no-c-format
+msgid "Dates and Times"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:192
+#, no-c-format
+msgid ""
+"Date values are serialized into a String representation that is accurate to "
+"the millisecond. On the client side, use a Javascript Date object to work "
+"with date values. On the server side, use any <literal>java.util.Date</"
+"literal> (or descendent, such as <literal>java.sql.Date</literal> or "
+"<literal>java.sql.Timestamp</literal> class."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:195
+#, no-c-format
+msgid "Enums"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:196
+#, no-c-format
+msgid ""
+"On the client side, enums are treated the same as Strings. When setting the "
+"value for an enum parameter, simply use the String representation of the "
+"enum. Take the following component as an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:199
+#, no-c-format
+msgid ""
+"@Name(\"paintAction\")\n"
+"  public class paintAction implements paintLocal {\n"
+"    public enum Color {red, green, blue, yellow, orange, purple};\n"
+"\n"
+"    public void paint(Color color) {\n"
+"      // code\n"
+"    }    \n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:200
+#, no-c-format
+msgid ""
+"To call the <literal>paint()</literal> method with the color <literal>red</"
+"literal>, pass the parameter value as a String literal:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:203
+#, no-c-format
+msgid "Seam.Component.getInstance(\"paintAction\").paint(\"red\");"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:204
+#, no-c-format
+msgid ""
+"The inverse is also true - that is, if a component method returns an enum "
+"parameter (or contains an enum field anywhere in the returned object graph) "
+"then on the client-side it will be represented as a String."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:207
+#, no-c-format
+msgid "Collections"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:208
+#, no-c-format
+msgid "Bags"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:209
+#, no-c-format
+msgid ""
+"Bags cover all collection types including arrays, collections, lists, sets, "
+"(but excluding Maps - see the next section for those), and are implemented "
+"client-side as a Javascript array. When calling a component method that "
+"accepts one of these types as a parameter, your parameter should be a "
+"Javascript array. If a component method returns one of these types, then the "
+"return value will also be a Javascript array. The remoting framework is "
+"clever enough on the server side to convert the bag to an appropriate type "
+"for the component method call."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:212
+#, no-c-format
+msgid "Maps"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:213
+#, no-c-format
+msgid ""
+"As there is no native support for Maps within Javascript, a simple Map "
+"implementation is provided with the Seam Remoting framework. To create a Map "
+"which can be used as a parameter to a remote call, create a new "
+"<literal>Seam.Remoting.Map</literal> object:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:216
+#, no-c-format
+msgid "var map = new Seam.Remoting.Map();"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:217
+#, no-c-format
+msgid ""
+"This Javascript implementation provides basic methods for working with Maps: "
+"<literal>size()</literal>, <literal>isEmpty()</literal>, <literal>keySet()</"
+"literal>, <literal>values()</literal>, <literal>get(key)</literal>, "
+"<literal>put(key, value)</literal>, <literal>remove(key)</literal> and "
+"<literal>contains(key)</literal>. Each of these methods are equivalent to "
+"their Java counterpart. Where the method returns a collection, such as "
+"<literal>keySet()</literal> and <literal>values()</literal>, a Javascript "
+"Array object will be returned that contains the key or value objects "
+"(respectively)."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:220
+#, no-c-format
+msgid "Debugging"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:221
+#, no-c-format
+msgid ""
+"To aid in tracking down bugs, it is possible to enable a debug mode which "
+"will display the contents of all the packets send back and forth between the "
+"client and server in a popup window. To enable debug mode, either execute "
+"the <literal>setDebug()</literal> method in Javascript:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:224
+#, no-c-format
+msgid "Seam.Remoting.setDebug(true);"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:225
+#, no-c-format
+msgid "Or configure it via components.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:228
+#, no-c-format
+msgid "&lt;remoting:remoting debug=\"true\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:229
+#, no-c-format
+msgid ""
+"To turn off debugging, call <literal>setDebug(false)</literal>. If you want "
+"to write your own messages to the debug log, call <literal>Seam.Remoting.log"
+"(message)</literal>."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:233
+#, no-c-format
+msgid "The Loading Message"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:234
+#, no-c-format
+msgid ""
+"The default loading message that appears in the top right corner of the "
+"screen can be modified, its rendering customised or even turned off "
+"completely."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:237
+#, no-c-format
+msgid "Changing the message"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:238
+#, no-c-format
+msgid ""
+"To change the message from the default \"Please Wait...\" to something "
+"different, set the value of <literal>Seam.Remoting.loadingMessage</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:241
+#, no-c-format
+msgid "Seam.Remoting.loadingMessage = \"Loading...\";"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:243
+#, no-c-format
+msgid "Hiding the loading message"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:244
+#, no-c-format
+msgid ""
+"To completely suppress the display of the loading message, override the "
+"implementation of <literal>displayLoadingMessage()</literal> and "
+"<literal>hideLoadingMessage()</literal> with functions that instead do "
+"nothing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:247
+#, no-c-format
+msgid ""
+"// don't display the loading indicator\n"
+"  Seam.Remoting.displayLoadingMessage = function() {};\n"
+"  Seam.Remoting.hideLoadingMessage = function() {};"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:248
+#, no-c-format
+msgid "A Custom Loading Indicator"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:249
+#, no-c-format
+msgid ""
+"It is also possible to override the loading indicator to display an animated "
+"icon, or anything else that you want. To do this override the "
+"<literal>displayLoadingMessage()</literal> and <literal>hideLoadingMessage()"
+"</literal> messages with your own implementation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:252
+#, no-c-format
+msgid ""
+"Seam.Remoting.displayLoadingMessage = function() {\n"
+"    // Write code here to display the indicator\n"
+"  };\n"
+"  \n"
+"  Seam.Remoting.hideLoadingMessage = function() {\n"
+"    // Write code here to hide the indicator\n"
+"  };"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:253
+#, no-c-format
+msgid "Controlling what data is returned"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:254
+#, no-c-format
+msgid ""
+"When a remote method is executed, the result is serialized into an XML "
+"response that is returned to the client. This response is then unmarshaled "
+"by the client into a Javascript object. For complex types (i.e. Javabeans) "
+"that include references to other objects, all of these referenced objects "
+"are also serialized as part of the response. These objects may reference "
+"other objects, which may reference other objects, and so forth. If left "
+"unchecked, this object \"graph\" could potentially be enormous, depending on "
+"what relationships exist between your objects. And as a side issue (besides "
+"the potential verbosity of the response), you might also wish to prevent "
+"sensitive information from being exposed to the client."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:257
+#, no-c-format
+msgid ""
+"Seam Remoting provides a simple means to \"constrain\" the object graph, by "
+"specifying the <literal>exclude</literal> field of the remote method's "
+"<literal>@WebRemote</literal> annotation. This field accepts a String array "
+"containing one or more paths specified using dot notation. When invoking a "
+"remote method, the objects in the result's object graph that match these "
+"paths are excluded from the serialized result packet."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:260
+#, no-c-format
+msgid ""
+"For all our examples, we'll use the following <literal>Widget</literal> "
+"class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:263
+#, no-c-format
+msgid ""
+"@Name(\"widget\")\n"
+"public class Widget\n"
+"{\n"
+"  private String value;\n"
+"  private String secret;\n"
+"  private Widget child;\n"
+"  private Map&lt;String,Widget&gt; widgetMap;\n"
+"  private List&lt;Widget&gt; widgetList;\n"
+"  \n"
+"  // getters and setters for all fields\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:264
+#, no-c-format
+msgid "Constraining normal fields"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:265
+#, no-c-format
+msgid ""
+"If your remote method returns an instance of <literal>Widget</literal>, but "
+"you don't want to expose the <literal>secret</literal> field because it "
+"contains sensitive information, you would constrain it like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:268
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:269
+#, no-c-format
+msgid ""
+"The value \"secret\" refers to the <literal>secret</literal> field of the "
+"returned object. Now, suppose that we don't care about exposing this "
+"particular field to the client. Instead, notice that the <literal>Widget</"
+"literal> value that is returned has a field <literal>child</literal> that is "
+"also a <literal>Widget</literal>. What if we want to hide the "
+"<literal>child</literal>'s <literal>secret</literal> value instead? We can "
+"do this by using dot notation to specify this field's path within the "
+"result's object graph:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:272
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"child.secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:273
+#, no-c-format
+msgid "Constraining Maps and Collections"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:274
+#, no-c-format
+msgid ""
+"The other place that objects can exist within an object graph are within a "
+"<literal>Map</literal> or some kind of collection (<literal>List</literal>, "
+"<literal>Set</literal>, <literal>Array</literal>, etc). Collections are "
+"easy, and are treated like any other field. For example, if our "
+"<literal>Widget</literal> contained a list of other <literal>Widget</"
+"literal>s in its <literal>widgetList</literal> field, to constrain the "
+"<literal>secret</literal> field of the <literal>Widget</literal>s in this "
+"list the annotation would look like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:277
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetList.secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:278
+#, no-c-format
+msgid ""
+"To constrain a <literal>Map</literal>'s key or value, the notation is "
+"slightly different. Appending <literal>[key]</literal> after the "
+"<literal>Map</literal>'s field name will constrain the <literal>Map</"
+"literal>'s key object values, while <literal>[value]</literal> will "
+"constrain the value object values. The following example demonstrates how "
+"the values of the <literal>widgetMap</literal> field have their "
+"<literal>secret</literal> field constrained:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:281
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetMap[value].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:282
+#, no-c-format
+msgid "Constraining objects of a specific type"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:283
+#, no-c-format
+msgid ""
+"There is one last notation that can be used to constrain the fields of a "
+"type of object no matter where in the result's object graph it appears. This "
+"notation uses either the name of the component (if the object is a Seam "
+"component) or the fully qualified class name (only if the object is not a "
+"Seam component) and is expressed using square brackets:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:286
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"[widget].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:287
+#, no-c-format
+msgid "Combining Constraints"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:288
+#, no-c-format
+msgid ""
+"Constraints can also be combined, to filter objects from multiple paths "
+"within the object graph:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:291
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetList.secret\", \"widgetMap[value].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:292
+#, no-c-format
+msgid "JMS Messaging"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:293
+#, no-c-format
+msgid ""
+"Seam Remoting provides experimental support for JMS Messaging. This section "
+"describes the JMS support that is currently implemented, but please note "
+"that this may change in the future. It is currently not recommended that "
+"this feature is used within a production environment."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:297
+#, no-c-format
+msgid ""
+"Before you can subscribe to a JMS topic, you must first configure a list of "
+"the topics that can be subscribed to by Seam Remoting. List the topics under "
+"<literal>org.jboss.seam.remoting.messaging.subscriptionRegistry."
+"allowedTopics</literal> in <literal>seam.properties</literal>, <literal>web."
+"xml</literal> or <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:300 Remoting.xml:333
+#, no-c-format
+msgid "&lt;remoting:remoting poll-timeout=\"5\" poll-interval=\"1\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:301
+#, no-c-format
+msgid "Subscribing to a JMS Topic"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:302
+#, no-c-format
+msgid "The following example demonstrates how to subscribe to a JMS Topic:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:305
+#, no-c-format
+msgid ""
+"function subscriptionCallback(message)\n"
+"  {\n"
+"    if (message instanceof Seam.Remoting.TextMessage)\n"
+"      alert(\"Received message: \" + message.getText());\n"
+"  }        \n"
+"        \n"
+"  Seam.Remoting.subscribe(\"topicName\", subscriptionCallback);"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:306
+#, no-c-format
+msgid ""
+"The <literal>Seam.Remoting.subscribe()</literal> method accepts two "
+"parameters, the first being the name of the JMS Topic to subscribe to, the "
+"second being the callback function to invoke when a message is received."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:309
+#, no-c-format
+msgid ""
+"There are two types of messages supported, Text messages and Object "
+"messages. If you need to test for the type of message that is passed to your "
+"callback function you can use the <literal>instanceof</literal> operator to "
+"test whether the message is a <literal>Seam.Remoting.TextMessage</literal> "
+"or <literal>Seam.Remoting.ObjectMessage</literal>. A <literal>TextMessage</"
+"literal> contains the text value in its <literal>text</literal> field (or "
+"alternatively call <literal>getText()</literal> on it), while an "
+"<literal>ObjectMessage</literal> contains its object value in its "
+"<literal>object</literal> field (or call its <literal>getObject()</literal> "
+"method)."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:312
+#, no-c-format
+msgid "Unsubscribing from a Topic"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:313
+#, no-c-format
+msgid ""
+"To unsubscribe from a topic, call <literal>Seam.Remoting.unsubscribe()</"
+"literal> and pass in the topic name:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:316
+#, no-c-format
+msgid "Seam.Remoting.unsubscribe(\"topicName\");"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:317
+#, no-c-format
+msgid "Tuning the Polling Process"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:318
+#, no-c-format
+msgid ""
+"There are two parameters which you can modify to control how polling occurs. "
+"The first one is <literal>Seam.Remoting.pollInterval</literal>, which "
+"controls how long to wait between subsequent polls for new messages. This "
+"parameter is expressed in seconds, and its default setting is 10."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:321
+#, no-c-format
+msgid ""
+"The second parameter is <literal>Seam.Remoting.pollTimeout</literal>, and is "
+"also expressed as seconds. It controls how long a request to the server "
+"should wait for a new message before timing out and sending an empty "
+"response. Its default is 0 seconds, which means that when the server is "
+"polled, if there are no messages ready for delivery then an empty response "
+"will be immediately returned."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:324
+#, no-c-format
+msgid ""
+"Caution should be used when setting a high <literal>pollTimeout</literal> "
+"value; each request that has to wait for a message means that a server "
+"thread is tied up until a message is received, or until the request times "
+"out. If many such requests are being served simultaneously, it could mean a "
+"large number of threads become tied up because of this reason."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:327
+#, no-c-format
+msgid ""
+"It is recommended that you set these options via components.xml, however "
+"they can be overridden via Javascript if desired. The following example "
+"demonstrates how to configure the polling to occur much more aggressively. "
+"You should set these parameters to suitable values for your application:"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:330
+#, no-c-format
+msgid "Via components.xml:"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:334
+#, no-c-format
+msgid "Via JavaScript:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:337
+#, no-c-format
+msgid ""
+"// Only wait 1 second between receiving a poll response and sending the next "
+"poll request.\n"
+"  Seam.Remoting.pollInterval = 1;\n"
+"  \n"
+"  // Wait up to 5 seconds on the server for new messages\n"
+"  Seam.Remoting.pollTimeout = 5;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Security.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Security.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Security.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1676 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Security.xml:10
+#, no-c-format
+msgid "Security"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:11
+#, no-c-format
+msgid ""
+"The Seam Security API is an optional Seam feature that provides "
+"authentication and authorization features for securing both domain and page "
+"resources within your Seam project."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:14
+#, no-c-format
+msgid "Overview"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:15
+#, no-c-format
+msgid "Seam Security provides two different modes of operation:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:20
+#, no-c-format
+msgid ""
+"<emphasis>simplified mode</emphasis> - this mode supports authentication "
+"services and simple role-based security checks."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:25
+#, no-c-format
+msgid ""
+"<emphasis>advanced mode</emphasis> - this mode supports all the same "
+"features as the simplified mode, plus it offers rule-based security checks "
+"using JBoss Rules."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:30
+#, no-c-format
+msgid "Which mode is right for my application?"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:31
+#, no-c-format
+msgid ""
+"That all depends on the requirements of your application. If you have "
+"minimal security requirements, for example if you only wish to restrict "
+"certain pages and actions to users who are logged in, or who belong to a "
+"certain role, then the simplified mode will probably be sufficient. The "
+"advantages of this is a more simplified configuration, significantly less "
+"libraries to include, and a smaller memory footprint."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:34
+#, no-c-format
+msgid ""
+"If on the other hand, your application requires security checks based on "
+"contextual state or complex business rules, then you will require the "
+"features provided by the advanced mode."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:37
+#, no-c-format
+msgid "Requirements"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:38
+#, no-c-format
+msgid ""
+"If using the advanced mode features of Seam Security, the following jar "
+"files are required to be configured as modules in <literal>application.xml</"
+"literal>. If you are using Seam Security in simplified mode, these are "
+"<emphasis>not</emphasis> required:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:43
+#, no-c-format
+msgid "drools-compiler-3.0.5.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:48
+#, no-c-format
+msgid "drools-core-3.0.5.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:53
+#, no-c-format
+msgid "commons-jci-core-1.0-406301.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:58
+#, no-c-format
+msgid "commons-jci-janino-2.4.3.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:63
+#, no-c-format
+msgid "commons-lang-2.1.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:68
+#, no-c-format
+msgid "janino-2.4.3.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:73
+#, no-c-format
+msgid "stringtemplate-2.3b6.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:78
+#, no-c-format
+msgid "antlr-2.7.6.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:83
+#, no-c-format
+msgid "antlr-3.0ea8.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:88
+#, no-c-format
+msgid ""
+"For web-based security, <literal>jboss-seam-ui.jar</literal> must also be "
+"included in the application's war file. Also, to make use of the security EL "
+"functions, <literal>SeamFaceletViewHandler</literal> must be used. Configure "
+"it in <literal>faces-config.xml</literal> like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:91
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;view-handler&gt;org.jboss.seam.ui.facelet.SeamFaceletViewHandler&lt;/"
+"view-handler&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:92
+#, no-c-format
+msgid "Authentication"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:93
+#, no-c-format
+msgid ""
+"The authentication features provided by Seam Security are built upon JAAS "
+"(Java Authentication and Authorization Service), and as such provide a "
+"robust and highly configurable API for handling user authentication. "
+"However, for less complex authentication requirements Seam offers a much "
+"more simplified method of authentication that hides the complexity of JAAS."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:96
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:97
+#, no-c-format
+msgid ""
+"The simplified authentication method uses a built-in JAAS login module, "
+"<literal>SeamLoginModule</literal>, which delegates authentication to one of "
+"your own Seam components. This login module is already configured inside "
+"Seam as part of a default application policy and as such does not require "
+"any additional configuration files. It allows you to write an authentication "
+"method using the entity classes that are provided by your own application. "
+"Configuring this simplified form of authentication requires the "
+"<literal>identity</literal> component to be configured in "
+"<literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:100
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:security=\"http://jboss.com/products/seam/security\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core http://jboss.com/"
+"products/seam/core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components http://jboss.com/"
+"products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/drools http://jboss.com/"
+"products/seam/drools-1.2.xsd\"\n"
+"                 http://jboss.com/products/seam/security http://jboss.com/"
+"products/seam/security-1.2.xsd\"&gt;                \n"
+"        \n"
+"    &lt;security:identity authenticate-method=\"#{authenticator.authenticate}"
+"\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:101
+#, no-c-format
+msgid ""
+"If you wish to use the advanced security features such as rule-based "
+"permission checks, all you need to do is include the Drools (JBoss Rules) "
+"jars in your classpath, and add some additional configuration, described "
+"later."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:104
+#, no-c-format
+msgid ""
+"The EL expression <literal>#{authenticator.authenticate}</literal> is a "
+"method binding indicating that the <literal>authenticate</literal> method of "
+"the <literal>authenticator</literal> component will be used to authenticate "
+"the user."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:107
+#, no-c-format
+msgid "Writing an authentication method"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:108
+#, no-c-format
+msgid ""
+"The <literal>authenticate-method</literal> property specified for "
+"<literal>identity</literal> in <literal>components.xml</literal> specifies "
+"which method will be used by <literal>SeamLoginModule</literal> to "
+"authenticate users. This method takes no parameters, and is expected to "
+"return a boolean indicating whether authentication is successful or not. The "
+"user's username and password can be obtained from <literal>Identity.instance"
+"().getUsername()</literal> and <literal>Identity.instance().getPassword()</"
+"literal>, respectively. Any roles that the user is a member of should be "
+"assigned using <literal>Identity.instance().addRole()</literal>. Here's a "
+"complete example of an authentication method inside a JavaBean component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:111
+#, no-c-format
+msgid ""
+"@Name(\"authenticator\")\n"
+"public class Authenticator {\n"
+"   @In EntityManager entityManager;\n"
+"   \n"
+"   public boolean authenticate() {\n"
+"      try\n"
+"      {\n"
+"         User user = (User) entityManager.createQuery(\n"
+"            \"from User where username = :username and password = :password"
+"\")\n"
+"            .setParameter(\"username\", Identity.instance().getUsername())\n"
+"            .setParameter(\"password\", Identity.instance().getPassword())\n"
+"            .getSingleResult();\n"
+"\n"
+"         if (user.getRoles() != null)\n"
+"         {\n"
+"            for (UserRole mr : user.getRoles())\n"
+"               Identity.instance().addRole(mr.getName());\n"
+"         }\n"
+"\n"
+"         return true;\n"
+"      }\n"
+"      catch (NoResultException ex)\n"
+"      {\n"
+"         FacesMessages.instance().add(\"Invalid username/password\");\n"
+"         return false;\n"
+"      }\n"
+"      \n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:112
+#, no-c-format
+msgid ""
+"In the above example, both <literal>User</literal> and <literal>UserRole</"
+"literal> are application-specific entity beans. The <literal>roles</literal> "
+"parameter is populated with the roles that the user is a member of, which "
+"should be added to the <literal>Set</literal> as literal string values, e.g. "
+"\"admin\", \"user\". In this case, if the user record is not found and a "
+"<literal>NoResultException</literal> thrown, the authentication method "
+"returns <literal>false</literal> to indicate the authentication failed."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:115
+#, no-c-format
+msgid "Writing a login form"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:116
+#, no-c-format
+msgid ""
+"The <literal>Identity</literal> component provides both <literal>username</"
+"literal> and <literal>password</literal> properties, catering for the most "
+"common authentication scenario. These properties can be bound directly to "
+"the username and password fields on a login form. Once these properties are "
+"set, calling the <literal>identity.login()</literal> method will "
+"authenticate the user using the provided credentials. Here's an example of a "
+"simple login form:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:119
+#, no-c-format
+msgid ""
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"name\" value=\"Username\"/&gt;\n"
+"    &lt;h:inputText id=\"name\" value=\"#{identity.username}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"password\" value=\"Password\"/&gt;\n"
+"    &lt;h:inputSecret id=\"password\" value=\"#{identity.password}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;div&gt;\n"
+"    &lt;h:commandButton value=\"Login\" action=\"#{identity.login}\"/&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:120
+#, no-c-format
+msgid ""
+"Similarly, logging out the user is done by calling <literal>#{identity."
+"logout}</literal>. Calling this action will clear the security state of the "
+"currently authenticated user."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:123
+#, no-c-format
+msgid "Simplified Configuration - Summary"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:124
+#, no-c-format
+msgid ""
+"So to sum up, there are the three easy steps to configure authentication:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:129
+#, no-c-format
+msgid ""
+"Configure an authentication method in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:134
+#, no-c-format
+msgid "Write an authentication method."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:139
+#, no-c-format
+msgid "Write a login form so that the user can authenticate."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:144
+#, no-c-format
+msgid "Handling Security Exceptions"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:145
+#, no-c-format
+msgid ""
+"To prevent users from receiving the default error page in response to a "
+"security error, it's recommended that <literal>pages.xml</literal> is "
+"configured to redirect security errors to a more \"pretty\" page. The two "
+"main types of exceptions thrown by the security API are:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:150
+#, no-c-format
+msgid ""
+"<literal>NotLoggedInException</literal> - This exception is thrown if the "
+"user attempts to access a restricted action or page when they are not logged "
+"in."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:155
+#, no-c-format
+msgid ""
+"<literal>AuthorizationException</literal> - This exception is only thrown if "
+"the user is already logged in, and they have attempted to access a "
+"restricted action or page for which they do not have the necessary "
+"privileges."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:160
+#, no-c-format
+msgid ""
+"In the case of a <literal>NotLoggedInException</literal>, it is recommended "
+"that the user is redirected to either a login or registration page so that "
+"they can log in. For an <literal>AuthorizationException</literal>, it may be "
+"useful to redirect the user to an error page. Here's an example of a "
+"<literal>pages.xml</literal> file that redirects both of these security "
+"exceptions:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:163
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"\n"
+"    ...\n"
+"    \n"
+"    &lt;exception class=\"org.jboss.seam.security.NotLoggedInException"
+"\"&gt;\n"
+"        &lt;redirect view-id=\"/login.xhtml\"&gt;\n"
+"            &lt;message&gt;You must be logged in to perform this action&lt;/"
+"message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"    \n"
+"    &lt;exception class=\"org.jboss.seam.security.AuthorizationException"
+"\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"        &lt;redirect view-id=\"/security_error.xhtml\"&gt;\n"
+"            &lt;message&gt;\n"
+"                You do not have the necessary security privileges to perform "
+"this action.\n"
+"            &lt;/message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"  \n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:164
+#, no-c-format
+msgid ""
+"Most web applications require even more sophisticated handling of login "
+"redirection, so Seam includes some special functionality for handling this "
+"problem."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:167
+#, no-c-format
+msgid "Login Redirection"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:168
+#, no-c-format
+msgid ""
+"You can ask Seam to redirect the user to a login screen when an "
+"unauthenticated user tries to access a particular view (or wildcarded view "
+"id) as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:171
+#, no-c-format
+msgid ""
+"&lt;pages login-view-id=\"/login.xhtml\"&gt;\n"
+"\n"
+"    &lt;page view-id=\"/members/*\" login-required=\"true\"/&gt;\n"
+"    \n"
+"    ...\n"
+"    \n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:172
+#, no-c-format
+msgid ""
+"(This is less of a blunt instrument than the exception handler shown above, "
+"but should probably be used in conjunction with it.)"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:175
+#, no-c-format
+msgid ""
+"After the user logs in, we want to automatically send them back where they "
+"came from, so they can retry the action that required logging in. If you add "
+"the following event listeners to <literal>components.xml</literal>, attempts "
+"to access a restricted view while not logged in will be remembered, so that "
+"upon the user successfully logging in they will be redirected to the "
+"originally requested view, with any page parameters that existed in the "
+"original request."
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:178
+#, no-c-format
+msgid ""
+"&lt;event type=\"org.jboss.seam.notLoggedIn\"&gt;\n"
+"    &lt;action expression=\"#{redirect.captureCurrentView}\"/&gt;\n"
+"&lt;/event&gt;\n"
+"    \n"
+"&lt;event type=\"org.jboss.seam.postAuthenticate\"&gt;\n"
+"    &lt;action expression=\"#{redirect.returnToCapturedView}\"/&gt;\n"
+"&lt;/event&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:179
+#, no-c-format
+msgid ""
+"Note that login redirection is implemented as a conversation-scoped "
+"mechanism, so don't end the conversation in your <literal>authenticate()</"
+"literal> method."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:182
+#, no-c-format
+msgid "Advanced Authentication Features"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:183
+#, no-c-format
+msgid ""
+"This section explores some of the advanced features provided by the security "
+"API for addressing more complex security requirements."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:186
+#, no-c-format
+msgid "Using your container's JAAS configuration"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:187
+#, no-c-format
+msgid ""
+"If you would rather not use the simplified JAAS configuration provided by "
+"the Seam Security API, you may instead delegate to the default system JAAS "
+"configuration by providing a <literal>jaasConfigName</literal> property in "
+"<literal>components.xml</literal>. For example, if you are using JBoss AS "
+"and wish to use the <literal>other</literal> policy (which uses the "
+"<literal>UsersRolesLoginModule</literal> login module provided by JBoss AS), "
+"then the entry in <literal>components.xml</literal> would look like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:190
+#, no-c-format
+msgid ""
+"&lt;security:identity authenticate-method=\"#{authenticator.authenticate}"
+"\" \n"
+"                      jaas-config-name=\"other\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:191
+#, no-c-format
+msgid "Authorization"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:192
+#, no-c-format
+msgid ""
+"There are a number of authorization features provided by the Seam Security "
+"API for securing access to components, component methods, and pages. This "
+"section describes each of these. An important thing to note is that if you "
+"wish to use any of the advanced features (such as rule-based permissions) "
+"then your <literal>components.xml</literal> must be configured to support "
+"this - see the Configuration section above."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:195
+#, no-c-format
+msgid "Core concepts"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:196
+#, no-c-format
+msgid ""
+"Each of the authorization mechanisms provided by the Seam Security API are "
+"built upon the concept of a user being granted roles and/or permissions. A "
+"role is a <emphasis>group</emphasis>, or <emphasis>type</emphasis>, of user "
+"that may have been granted certain privileges for performing one or more "
+"specific actions within an application. A permission on the other hand is a "
+"privilege (sometimes once-off) for performing a single, specific action. It "
+"is entirely possible to build an application using nothing but permissions, "
+"however roles offer a higher level of convenience when granting privileges "
+"to groups of users."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:199
+#, no-c-format
+msgid ""
+"Roles are simple, consisting of only a name such as \"admin\", \"user\", "
+"\"customer\", etc. Permissions consist of both a name and an action, and are "
+"represented within this documentation in the form <literal>name:action</"
+"literal>, for example <literal>customer:delete</literal>, or "
+"<literal>customer:insert</literal>."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:202
+#, no-c-format
+msgid "Securing components"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:203
+#, no-c-format
+msgid ""
+"Let's start by examining the simplest form of authorization, component "
+"security, starting with the <literal>@Restrict</literal> annotation."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:206
+#, no-c-format
+msgid "The @Restrict annotation"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:207
+#, no-c-format
+msgid ""
+"Seam components may be secured either at the method or the class level, "
+"using the <literal>@Restrict</literal> annotation. If both a method and it's "
+"declaring class are annotated with <literal>@Restrict</literal>, the method "
+"restriction will take precedence (and the class restriction will not apply). "
+"If a method invocation fails a security check, then an exception will be "
+"thrown as per the contract for <literal>Identity.checkRestriction()</"
+"literal> (see Inline Restrictions). A <literal>@Restrict</literal> on just "
+"the component class itself is equivalent to adding <literal>@Restrict</"
+"literal> to each of its methods."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:210
+#, no-c-format
+msgid ""
+"An empty <literal>@Restrict</literal> implies a permission check of "
+"<literal>componentName:methodName</literal>. Take for example the following "
+"component method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:213
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class AccountAction {\n"
+"    @Restrict public void delete() {\n"
+"      ...\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:214
+#, no-c-format
+msgid ""
+"In this example, the implied permission required to call the <literal>delete"
+"()</literal> method is <literal>account:delete</literal>. The equivalent of "
+"this would be to write <literal>@Restrict(\"#{s:hasPermission"
+"('account','delete',null)}\")</literal>. Now let's look at another example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:217
+#, no-c-format
+msgid ""
+"@Restrict @Name(\"account\")\n"
+"public class AccountAction {\n"
+"    public void insert() {\n"
+"      ...\n"
+"    }\n"
+"    @Restrict(\"#{s:hasRole('admin')}\") \n"
+"    public void delete() {\n"
+"      ...\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:218
+#, no-c-format
+msgid ""
+"This time, the component class itself is annotated with <literal>@Restrict</"
+"literal>. This means that any methods without an overriding "
+"<literal>@Restrict</literal> annotation require an implicit permission "
+"check. In the case of this example, the <literal>insert()</literal> method "
+"requires a permission of <literal>account:insert</literal>, while the "
+"<literal>delete()</literal> method requires that the user is a member of the "
+"<literal>admin</literal> role."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:221
+#, no-c-format
+msgid ""
+"Before we go any further, let's address the <literal>#{s:hasRole()}</"
+"literal> expression seen in the above example. Both <literal>s:hasRole</"
+"literal> and <literal>s:hasPermission</literal> are EL functions, which "
+"delegate to the correspondingly named methods of the <literal>Identity</"
+"literal> class. These functions can be used within any EL expression "
+"throughout the entirety of the security API."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:224
+#, no-c-format
+msgid ""
+"Being an EL expression, the value of the <literal>@Restrict</literal> "
+"annotation may reference any objects that exist within a Seam context. This "
+"is extremely useful when performing permission checks for a specific object "
+"instance. Look at this example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:227
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class AccountAction {\n"
+"    @In Account selectedAccount;\n"
+"    @Restrict(\"#{s:hasPermission('account','modify',selectedAccount)}\")\n"
+"    public void modify() {\n"
+"        selectedAccount.modify();\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:228
+#, no-c-format
+msgid ""
+"The interesting thing to note from this example is the reference to "
+"<literal>selectedAccount</literal> seen within the <literal>hasPermission()</"
+"literal> function call. The value of this variable will be looked up from "
+"within the Seam context, and passed to the <literal>hasPermission()</"
+"literal> method in <literal>Identity</literal>, which in this case can then "
+"determine if the user has the required permission for modifying the "
+"specified <literal>Account</literal> object."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:231
+#, no-c-format
+msgid "Inline restrictions"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:232
+#, no-c-format
+msgid ""
+"Sometimes it might be desirable to perform a security check in code, without "
+"using the <literal>@Restrict</literal> annotation. In this situation, simply "
+"use <literal>Identity.checkRestriction()</literal> to evaluate a security "
+"expression, like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:235
+#, no-c-format
+msgid ""
+"public void deleteCustomer() {\n"
+"    Identity.instance().checkRestriction(\"#{s:hasPermission"
+"('customer','delete',\n"
+"        selectedCustomer)}\");\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:236
+#, no-c-format
+msgid ""
+"If the expression specified doesn't evaluate to <literal>true</literal>, "
+"either"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:241
+#, no-c-format
+msgid ""
+"if the user is not logged in, a <literal>NotLoggedInException</literal> "
+"exception is thrown or"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:246
+#, no-c-format
+msgid ""
+"if the user is logged in, an <literal>AuthorizationException</literal> "
+"exception is thrown."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:251
+#, no-c-format
+msgid ""
+"It is also possible to call the <literal>hasRole()</literal> and "
+"<literal>hasPermission()</literal> methods directly from Java code:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:254
+#, no-c-format
+msgid ""
+"if (!Identity.instance().hasRole(\"admin\"))\n"
+"     throw new AuthorizationException(\"Must be admin to perform this action"
+"\");\n"
+"\n"
+"if (!Identity.instance().hasPermission(\"customer\", \"create\", null))\n"
+"     throw new AuthorizationException(\"You may not create new customers\");"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:255
+#, no-c-format
+msgid "Security in the user interface"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:256
+#, no-c-format
+msgid ""
+"One indication of a well designed user interface is that the user is not "
+"presented with options for which they don't have the necessary privileges to "
+"use. Seam Security allows conditional rendering of either 1) sections of a "
+"page or 2) individual controls, based upon the privileges of the user, using "
+"the very same EL expressions that are used for component security."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:259
+#, no-c-format
+msgid ""
+"Let's take a look at some examples of interface security. First of all, "
+"let's pretend that we have a login form that should only be rendered if the "
+"user is not already logged in. Using the <literal>identity.isLoggedIn()</"
+"literal> property, we can write this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:262
+#, no-c-format
+msgid ""
+"&lt;h:form class=\"loginForm\" rendered=\"#{not identity.loggedIn}\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:263
+#, no-c-format
+msgid ""
+"If the user isn't logged in, then the login form will be rendered - very "
+"straight forward so far. Now let's pretend there is a menu on the page that "
+"contains some actions which should only be accessible to users in the "
+"<literal>manager</literal> role. Here's one way that these could be written:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:266
+#, no-c-format
+msgid ""
+"&lt;h:outputLink action=\"#{reports.listManagerReports}\" rendered=\"#{s:"
+"hasRole('manager')}\"&gt;\n"
+"    Manager Reports\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:267
+#, no-c-format
+msgid ""
+"This is also quite straight forward. If the user is not a member of the "
+"<literal>manager</literal> role, then the outputLink will not be rendered. "
+"The <literal>rendered</literal> attribute can generally be used on the "
+"control itself, or on a surrounding <literal>&lt;s:div&gt;</literal> or "
+"<literal>&lt;s:span&gt;</literal> control."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:270
+#, no-c-format
+msgid ""
+"Now for something more complex. Let's say you have a <literal>h:dataTable</"
+"literal> control on a page listing records for which you may or may not wish "
+"to render action links depending on the user's privileges. The <literal>s:"
+"hasPermission</literal> EL function allows us to pass in an object parameter "
+"which can be used to determine whether the user has the requested permission "
+"for that object or not. Here's how a dataTable with secured links might look:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:273
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{clients}\" var=\"cl\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Name&lt;/f:facet&gt;\n"
+"        #{cl.name}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;City&lt;/f:facet&gt;\n"
+"        #{cl.city}\n"
+"    &lt;/h:column&gt;   \n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"        &lt;s:link value=\"Modify Client\" action=\"#{clientAction.modify}"
+"\"\n"
+"                rendered=\"#{s:hasPermission('client','modify',cl)\"/&gt;\n"
+"        &lt;s:link value=\"Delete Client\" action=\"#{clientAction.delete}"
+"\"\n"
+"                rendered=\"#{s:hasPermission('client','delete',cl)\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:274
+#, no-c-format
+msgid "Securing pages"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:275
+#, no-c-format
+msgid ""
+"Page security requires that the application is using a <literal>pages.xml</"
+"literal> file, however is extremely simple to configure. Simply include a "
+"<literal>&lt;restrict/&gt;</literal> element within the <literal>page</"
+"literal> elements that you wish to secure. By default, if a value is not "
+"provided for the <literal>restrict</literal> element, an implied permission "
+"of <literal>{viewId}:render</literal> will be checked for whenever accessing "
+"that page. Otherwise the value will be evaluated as a standard security "
+"expression. Here's a couple of examples:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:278
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/settings.xhtml\"&gt;\n"
+"    &lt;restrict/&gt;\n"
+"&lt;/page&gt;\n"
+"        \n"
+"&lt;page view-id=\"/reports.xhtml\"&gt;    \n"
+"    &lt;restrict&gt;#{s:hasRole('admin')}&lt;/restrict&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:279
+#, no-c-format
+msgid ""
+"In the above example, the first page has an implied permission restriction "
+"of <literal>/settings.xhtml:render</literal>, while the second one checks "
+"that the user is a member of the <literal>admin</literal> role."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:282
+#, no-c-format
+msgid "Securing Entities"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:283
+#, no-c-format
+msgid ""
+"Seam security also makes it possible to apply security restrictions to read, "
+"insert, update and delete actions for entities."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:286
+#, no-c-format
+msgid ""
+"To secure all actions for an entity class, add a <literal>@Restrict</"
+"literal> annotation on the class itself:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:289
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"customer\")\n"
+"@Restrict\n"
+"public class Customer {\n"
+"  ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:290
+#, no-c-format
+msgid ""
+"If no expression is specified in the <literal>@Restrict</literal> "
+"annotation, the default security check that is performed is a permission "
+"check of <literal>entityName:action</literal>, where <literal>entityName</"
+"literal> is the name of the entity (or the class name if no @Name is "
+"specified), and the <literal>action</literal> is either <literal>read</"
+"literal>, <literal>insert</literal>, <literal>update</literal> or "
+"<literal>delete</literal>."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:293
+#, no-c-format
+msgid ""
+"It is also possible to only restrict certain actions, by placing a "
+"<literal>@Restrict</literal> annotation on the relevent entity lifecycle "
+"method (annotated as follows):"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:298
+#, no-c-format
+msgid ""
+"<literal>@PostLoad</literal> - Called after an entity instance is loaded "
+"from the database. Use this method to configure a <literal>read</literal> "
+"permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:303
+#, no-c-format
+msgid ""
+"<literal>@PrePersist</literal> - Called before a new instance of the entity "
+"is inserted. Use this method to configure an <literal>insert</literal> "
+"permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:308
+#, no-c-format
+msgid ""
+"<literal>@PreUpdate</literal> - Called before an entity is updated. Use this "
+"method to configure an <literal>update</literal> permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:313
+#, no-c-format
+msgid ""
+"<literal>@PreRemove</literal> - Called before an entity is deleted. Use this "
+"method to configure a <literal>delete</literal> permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:318
+#, no-c-format
+msgid ""
+"Here's an example of how an entity would be configured to perform a security "
+"check for any <literal>insert</literal> operations. Please note that the "
+"method is not required to do anything, the only important thing in regard to "
+"security is how it is annotated:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:321
+#, no-c-format
+msgid ""
+"@PrePersist @Restrict\n"
+"  public void prePersist() {}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:322
+#, no-c-format
+msgid ""
+"And here's an example of an entity permission rule that checks if the "
+"authenticated user is allowed to create a new blog entry (from the seamspace "
+"example):"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:325
+#, no-c-format
+msgid ""
+"rule InsertMemberBlog\n"
+"  no-loop\n"
+"  activation-group \"permissions\"\n"
+"when\n"
+"  c: PermissionCheck(name == \"memberBlog\", action == \"insert\", granted "
+"== false)\n"
+"  Principal(nm : name)\n"
+"  MemberBlog(mbr : member -&gt; (mbr.getUsername().equals(nm)))\n"
+"then\n"
+"  c.grant();\n"
+"  modify(c);\n"
+"end;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:326
+#, no-c-format
+msgid ""
+"Finally, we need to install a listener class that integrates Seam security "
+"with your JPA provider."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:329
+#, no-c-format
+msgid "Entity security with JPA"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:330
+#, no-c-format
+msgid ""
+"Security checks for EJB3 entity beans are performed with an "
+"<literal>EntityListener</literal>. You can install this listener by using "
+"the following <literal>META-INF/orm.xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:333
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;entity-mappings xmlns=\"http://java.sun.com/xml/ns/persistence/orm\"\n"
+"                 xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"                 xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence/"
+"orm \n"
+"                 http://java.sun.com/xml/ns/persistence/orm_1_0.xsd\"\n"
+"                 version=\"1.0\"&gt;\n"
+"                 \n"
+"    &lt;persistence-unit-metadata&gt;\n"
+"        &lt;persistence-unit-defaults&gt;\n"
+"            &lt;entity-listeners&gt;\n"
+"                &lt;entity-listener class=\"org.jboss.seam.security."
+"EntitySecurityListener\"/&gt;\n"
+"            &lt;/entity-listeners&gt;\n"
+"        &lt;/persistence-unit-defaults&gt;\n"
+"    &lt;/persistence-unit-metadata&gt;\n"
+"    \n"
+"&lt;/entity-mappings&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:334
+#, no-c-format
+msgid "Entity security with Hibernate"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:335
+#, no-c-format
+msgid ""
+"If you are using a Hibernate <literal>SessionFactory</literal> configured "
+"via Seam, you don't need to do anything special to use entity security."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:338
+#, no-c-format
+msgid "Writing Security Rules"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:339
+#, no-c-format
+msgid ""
+"Up to this point there has been a lot of mention of permissions, but no "
+"information about how permissions are actually defined or granted. This "
+"section completes the picture, by explaining how permission checks are "
+"processed, and how to implement permission checks for a Seam application."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:342
+#, no-c-format
+msgid "Permissions Overview"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:343
+#, no-c-format
+msgid ""
+"So how does the security API know whether a user has the <literal>customer:"
+"modify</literal> permission for a specific customer? Seam Security provides "
+"quite a novel method for determining user permissions, based on JBoss Rules. "
+"A couple of the advantages of using a rule engine are 1) a centralized "
+"location for the business logic that is behind each user permission, and 2) "
+"speed - JBoss Rules uses very efficient algorithms for evaluating large "
+"numbers of complex rules involving multiple conditions."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:346
+#, no-c-format
+msgid "Configuring a rules file"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:347
+#, no-c-format
+msgid ""
+"Seam Security expects to find a <literal>RuleBase</literal> component called "
+"<literal>securityRules</literal> which it uses to evaluate permission "
+"checks. This is configured in <literal>components.xml</literal> as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:350
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:security=\"http://jboss.com/products/seam/security\"\n"
+"            xmlns:drools=\"http://jboss.com/products/seam/drools\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                     http://jboss.com/products/seam/core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components  \n"
+"                     http://jboss.com/products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/drools \n"
+"                     http://jboss.com/products/seam/drools-1.2.xsd\"\n"
+"                 http://jboss.com/products/seam/security \n"
+"                     http://jboss.com/products/seam/security-1.2.xsd"
+"\"&gt;                 \n"
+"        \n"
+"   &lt;drools:rule-base name=\"securityRules\"&gt;\n"
+"       &lt;drools:rule-files&gt;\n"
+"           &lt;value&gt;/META-INF/security.drl&lt;/value&gt;\n"
+"       &lt;/drools:rule-files&gt;\n"
+"   &lt;/drools:rule-base&gt;    \n"
+"   \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:351
+#, no-c-format
+msgid ""
+"Once the <literal>RuleBase</literal> component is configured, it's time to "
+"write the security rules."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:354
+#, no-c-format
+msgid "Creating a security rules file"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:355
+#, no-c-format
+msgid ""
+"For this step you need to create a file called <literal>security.drl</"
+"literal> in the <literal>/META-INF</literal> directory of your application's "
+"jar file. In actual fact this file can be called anything you want, and "
+"exist in any location as long as it is configured appropriately in "
+"<literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:358
+#, no-c-format
+msgid ""
+"So what should the security rules file contain? At this stage it might be a "
+"good idea to at least skim through the JBoss Rules documentation, however to "
+"get started here's an extremely simple example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:361
+#, no-c-format
+msgid ""
+"package MyApplicationPermissions;\n"
+"\n"
+"import org.jboss.seam.security.PermissionCheck;\n"
+"import org.jboss.seam.security.Role;\n"
+"\n"
+"rule CanUserDeleteCustomers\n"
+"when\n"
+"  c: PermissionCheck(name == \"customer\", action == \"delete\")\n"
+"  Role(name == \"admin\")\n"
+"then\n"
+"  c.grant();\n"
+"end;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:362
+#, no-c-format
+msgid ""
+"Let's break this down. The first thing we see is the package declaration. A "
+"package in JBoss Rules is essentially a collection of rules. The package "
+"name can be anything you want - it doesn't relate to anything else outside "
+"the scope of the rule base."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:365
+#, no-c-format
+msgid ""
+"The next thing we can notice is a couple of import statements for the "
+"<literal>PermissionCheck</literal> and <literal>Role</literal> classes. "
+"These imports inform the rules engine that we'll be referencing these "
+"classes within our rules."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:368
+#, no-c-format
+msgid ""
+"Finally we have the code for the rule. Each rule within a package should be "
+"given a unique name (usually describing the purpose of the rule). In this "
+"case our rule is called <literal>CanUserDeleteCustomers</literal> and will "
+"be used to check whether a user is allowed to delete a customer record."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:371
+#, no-c-format
+msgid ""
+"Looking at the body of the rule definition we can notice two distinct "
+"sections. Rules have what is known as a left hand side (LHS) and a right "
+"hand side (RHS). The LHS consists of the conditional part of the rule, i.e. "
+"a list of conditions which must be satisfied for the rule to fire. The LHS "
+"is represented by the <literal>when</literal> section. The RHS is the "
+"consequence, or action section of the rule that will only be fired if all of "
+"the conditions in the LHS are met. The RHS is represented by the "
+"<literal>then</literal> section. The end of the rule is denoted by the "
+"<literal>end;</literal> line."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:374
+#, no-c-format
+msgid ""
+"If we look at the LHS of the rule, we see two conditions listed there. Let's "
+"examine the first condition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:377
+#, no-c-format
+msgid "c: PermissionCheck(name == \"customer\", action == \"delete\")"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:378
+#, no-c-format
+msgid ""
+"In plain english, this condition is stating that there must exist a "
+"<literal>PermissionCheck</literal> object with a <literal>name</literal> "
+"property equal to \"customer\", and an <literal>action</literal> property "
+"equal to \"delete\" within the working memory. What is the working memory? "
+"It is a session-scoped object that contains the contextual information that "
+"is required by the rules engine to make a decision about a permission check. "
+"Each time the <literal>hasPermission()</literal> method is called, a "
+"temporary <literal>PermissionCheck</literal> object, or <emphasis>Fact</"
+"emphasis>, is asserted into the working memory. This "
+"<literal>PermissionCheck</literal> corresponds exactly to the permission "
+"that is being checked, so for example if you call <literal>hasPermission"
+"(\"account\", \"create\", null)</literal> then a <literal>PermissionCheck</"
+"literal> object with a <literal>name</literal> equal to \"account\" and "
+"<literal>action</literal> equal to \"create\" will be asserted into the "
+"working memory for the duration of the permission check."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:381
+#, no-c-format
+msgid ""
+"So what else is in the working memory? Besides the short-lived temporary "
+"facts asserted during a permission check, there are some longer-lived "
+"objects in the working memory that stay there for the entire duration of a "
+"user being authenticated. These include any <literal>java.security."
+"Principal</literal> objects that are created as part of the authentication "
+"process, plus a <literal>org.jboss.seam.security.Role</literal> object for "
+"each of the roles that the user is a member of. It is also possible to "
+"assert additional long-lived facts into the working memory by calling "
+"<literal>Identity.instance().getSecurityContext().assertObject()</literal>, "
+"passing the object as a parameter."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:384
+#, no-c-format
+msgid ""
+"Getting back to our simple example, we can also notice that the first line "
+"of our LHS is prefixed with <literal>c:</literal>. This is a variable "
+"binding, and is used to refer back to the object that is matched by the "
+"condition. Moving onto the second line of our LHS, we see this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:387
+#, no-c-format
+msgid "Role(name == \"admin\")"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:388
+#, no-c-format
+msgid ""
+"This condition simply states that there must be a <literal>Role</literal> "
+"object with a <literal>name</literal> of \"admin\" within the working "
+"memory. As mentioned, user roles are asserted into the working memory as "
+"long-lived facts. So, putting both conditions together, this rule is "
+"essentially saying \"I will fire if you are checking for the "
+"<literal>customer:delete</literal> permission and the user is a member of "
+"the <literal>admin</literal> role\"."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:391
+#, no-c-format
+msgid ""
+"So what is the consequence of the rule firing? Let's take a look at the RHS "
+"of the rule:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:394
+#, no-c-format
+msgid "c.grant()"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:395
+#, no-c-format
+msgid ""
+"The RHS consists of Java code, and in this case is invoking the "
+"<literal>grant()</literal> method of the <literal>c</literal> object, which "
+"as already mentioned is a variable binding for the <literal>PermissionCheck</"
+"literal> object. Besides the <literal>name</literal> and <literal>action</"
+"literal> properties of the <literal>PermissionCheck</literal> object, there "
+"is also a <literal>granted</literal> property which is initially set to "
+"<literal>false</literal>. Calling <literal>grant()</literal> on a "
+"<literal>PermissionCheck</literal> sets the <literal>granted</literal> "
+"property to <literal>true</literal>, which means that the permission check "
+"was successful, allowing the user to carry out whatever action the "
+"permission check was intended for."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:398
+#, no-c-format
+msgid "SSL Security"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:399
+#, no-c-format
+msgid ""
+"Seam includes basic support for serving sensitive pages via the HTTPS "
+"protocol. This is easily configured by specifying a <literal>scheme</"
+"literal> for the page in <literal>pages.xml</literal>. The following example "
+"shows how the view <literal>/login.xhtml</literal> is configured to use "
+"HTTPS:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:402
+#, no-c-format
+msgid "&lt;page view-id=\"/login.xhtml\" scheme=\"https\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:403
+#, no-c-format
+msgid ""
+"This configuration is automatically extended to both <literal>s:link</"
+"literal> and <literal>s:button</literal> JSF controls, which (when "
+"specifying the <literal>view</literal>) will also render the link using the "
+"correct protocol. Based on the previous example, the following link will use "
+"the HTTPS protocol because <literal>/login.xhtml</literal> is configured to "
+"use it:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:406
+#, no-c-format
+msgid "&lt;s:link view=\"/login.xhtml\" value=\"Login\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:407
+#, no-c-format
+msgid ""
+"Browsing directly to a view when using the <emphasis>incorrect</emphasis> "
+"protocol will cause a redirect to the same view using the <emphasis>correct</"
+"emphasis> protocol. For example, browsing to a page that has <literal>scheme="
+"\"https\"</literal> using HTTP will cause a redirect to the same page using "
+"HTTPS."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:410
+#, no-c-format
+msgid ""
+"It is also possible to configure a default <literal>scheme</literal> for all "
+"pages. This is actually quite important, as you might only wish to use HTTPS "
+"for a few pages, and if no default scheme is specified then the default "
+"behavior is to continue using the current scheme. What this means is that "
+"once you enter a page with HTTPS, then HTTPS will continue to be used even "
+"if you navigate away to other non-HTTPS pages (a bad thing!). So it is "
+"strongly recommended to include a default <literal>scheme</literal>, by "
+"configuring it on the default (<literal>\"*\"</literal>) view:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:413
+#, no-c-format
+msgid "&lt;page view-id=\"*\" scheme=\"http\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:414
+#, no-c-format
+msgid ""
+"Of course, if <emphasis>none</emphasis> of the pages in your application use "
+"HTTPS then it is not required to specify a default scheme."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:417
+#, no-c-format
+msgid "Implementing a Captcha Test"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:418
+#, no-c-format
+msgid ""
+"Though strictly not part of the security API, it might be useful in certain "
+"circumstances (such as new user registrations, posting to a public blog or "
+"forum) to implement a Captcha (<emphasis>C</emphasis>ompletely <emphasis>A</"
+"emphasis>utomated <emphasis>P</emphasis>ublic <emphasis>T</emphasis>uring "
+"test to tell <emphasis>C</emphasis>omputers and <emphasis>H</emphasis>umans "
+"<emphasis>A</emphasis>part) to prevent automated bots from interacting with "
+"your application. Seam provides seamless integration with JCaptcha, an "
+"excellent library for generating Captcha challenges. If you wish to use the "
+"captcha feature in your application you need to include the jcaptcha-* jar "
+"file from the Seam lib directory in your project, and register it in "
+"<literal>application.xml</literal> as a java module."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:421
+#, no-c-format
+msgid "Configuring the Captcha Servlet"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:422
+#, no-c-format
+msgid ""
+"To get up and running, it is necessary to configure the Seam Resource "
+"Servlet, which will provide the Captcha challenge images to your pages. This "
+"requires the following entry in <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:425
+#, no-c-format
+msgid ""
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"    \n"
+"&lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:426
+#, no-c-format
+msgid "Adding a Captcha to a page"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:427
+#, no-c-format
+msgid ""
+"Adding a captcha challenge to a page is extremely easy. Seam provides a page-"
+"scoped component, <literal>captcha</literal>, which provides everything that "
+"is required, including built-in captcha validation. Here's an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:430
+#, no-c-format
+msgid ""
+"&lt;div&gt;\n"
+"    &lt;h:graphicImage value=\"/seam/resource/captcha?#{captcha.id}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"  \n"
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"verifyCaptcha\"&gt;Enter the above letters&lt;/h:"
+"outputLabel&gt;\n"
+"    &lt;h:inputText id=\"verifyCaptcha\" value=\"#{captcha.response}\" "
+"required=\"true\"/&gt;\n"
+"    &lt;div class=\"validationError\"&gt;&lt;h:message for=\"verifyCaptcha\"/"
+"&gt;&lt;/div&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:431
+#, no-c-format
+msgid ""
+"That's all there is to it. The <literal>graphicImage</literal> control "
+"displays the Captcha challenge, and the <literal>inputText</literal> "
+"receives the user's response. The response is automatically validated "
+"against the Captcha when the form is submitted."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Spring.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Spring.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Spring.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,416 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Spring.xml:10
+#, no-c-format
+msgid "Spring Framework integration"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:11
+#, no-c-format
+msgid ""
+"The Spring integration module allows easy migration of Spring-based projects "
+"to Seam and allows Spring applications to take advantage of key Seam "
+"features like conversations and Seam's more sophisticated persistence "
+"context management."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:14
+#, no-c-format
+msgid "Seam's support for Spring provides the ability to:"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:19
+#, no-c-format
+msgid "inject Seam component instances into Spring beans"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:24
+#, no-c-format
+msgid "inject Spring beans into Seam components"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:29
+#, no-c-format
+msgid "turn Spring beans into Seam components"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:34
+#, no-c-format
+msgid "allow Spring beans to live in any Seam context"
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:40
+#, no-c-format
+msgid "Injecting Seam components into Spring beans"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:41
+#, no-c-format
+msgid ""
+"Injecting Seam component instances into Spring beans is accomplished using "
+"the <literal>&lt;seam:instance/&gt;</literal> namespace handler. To enable "
+"the Seam namespace handler, the Seam namespace must be added to the Spring "
+"beans definition file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:44
+#, no-c-format
+msgid ""
+"&lt;beans xmlns=\"http://www.springframework.org/schema/beans\"\n"
+"    xmlns:seam=\"http://jboss.com/products/seam/spring\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://www.springframework.org/schema/beans \n"
+"                        http://www.springframework.org/schema/beans/spring-"
+"beans-2.0.xsd\n"
+"                        http://jboss.com/products/seam/spring \n"
+"                        http://jboss.com/products/seam/spring-1.2.xsd\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:45
+#, no-c-format
+msgid "Now any Seam component may be injected into any Spring bean:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:48
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\"&gt;\n"
+"        &lt;seam:instance name=\"someComponent\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:49
+#, no-c-format
+msgid "An EL expression may be used instead of a component name:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:52
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\"&gt;\n"
+"        &lt;seam:instance name=\"#{someExpression}\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:53
+#, no-c-format
+msgid ""
+"Seam component instances may even be made available for injection into "
+"Spring beans by a Spring bean id."
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:56
+#, no-c-format
+msgid ""
+"&lt;seam:instance name=\"someComponent\" id=\"someSeamComponentInstance\"/"
+"&gt;\n"
+"\n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\" ref=\"someSeamComponentInstance"
+"\"&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:57
+#, no-c-format
+msgid "Now for the caveat!"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:60
+#, no-c-format
+msgid ""
+"Seam was designed from the ground up to support a stateful component model "
+"with multiple contexts. Spring was not. Unlike Seam bijection, Spring "
+"injection does not occur at method invocation time. Instead, injection "
+"happens only when the Spring bean is instantiated. So the instance available "
+"when the bean is instantiated will be the same instance that the bean uses "
+"for the entire life of the bean. For example, if a Seam "
+"<literal>CONVERSATION</literal>-scoped component instance is directly "
+"injected into a singleton Spring bean, that singleton will hold a reference "
+"to the same instance long after the conversation is over! We call this "
+"problem <emphasis>scope impedance</emphasis>. Seam bijection ensures that "
+"scope impedance is maintained naturally as an invocation flows through the "
+"system. In Spring, we need to inject a proxy of the Seam component, and "
+"resolve the reference when the proxy is invoked."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:63
+#, no-c-format
+msgid ""
+"The <literal>&lt;seam:instance/&gt;</literal> tag lets us automatically "
+"proxy the Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:66
+#, no-c-format
+msgid ""
+"&lt;seam:instance id=\"seamManagedEM\" name=\"someManagedEMComponent\" proxy="
+"\"true\"/&gt;\n"
+"        \n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\"&gt;\n"
+"    &lt;property name=\"entityManager\" ref=\"seamManagedEM\"&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:67
+#, no-c-format
+msgid ""
+"This example shows one way to use a Seam-managed persistence context from a "
+"Spring bean. (A more robust way to use Seam-managed persistence contexts as "
+"a replacement for the Spring <literal>OpenEntityManagerInView</literal> "
+"filter will be provided in a future release)"
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:73
+#, no-c-format
+msgid "Injecting Spring beans into Seam components"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:74
+#, no-c-format
+msgid ""
+"It is even easier to inject Spring beans into Seam component instances. "
+"Actually, there are two possible approaches:"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:79
+#, no-c-format
+msgid "inject a Spring bean using an EL expression"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:84
+#, no-c-format
+msgid "make the Spring bean a Seam component"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:89
+#, no-c-format
+msgid ""
+"We'll discuss the second option in the next section. The easiest approach is "
+"to access the Spring beans via EL."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:92
+#, no-c-format
+msgid ""
+"The Spring <literal>DelegatingVariableResolver</literal> is an integration "
+"point Spring provides for integrating Spring with JSF. This "
+"<literal>VariableResolver</literal> makes all Spring beans available in EL "
+"by their bean id. You'll need to add the "
+"<literal>DelegatingVariableResolver</literal> to <literal>faces-config.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:95
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;variable-resolver&gt;\n"
+"        org.springframework.web.jsf.DelegatingVariableResolver\n"
+"    &lt;/variable-resolver&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:96
+#, no-c-format
+msgid "Then you can inject Spring beans using <literal>@In</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:99
+#, no-c-format
+msgid ""
+"@In(\"#{bookingService}\")\n"
+"private BookingService bookingService;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:100
+#, no-c-format
+msgid ""
+"The use of Spring beans in EL is not limited to injection. Spring beans may "
+"be used anywhere that EL expressions are used in Seam: process and pageflow "
+"definitions, working memory assertions, etc..."
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:106
+#, no-c-format
+msgid "Making a Spring bean into a Seam component"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:107
+#, no-c-format
+msgid ""
+"The <literal>&lt;seam:component/&gt;</literal> namespace handler can be used "
+"to make any Spring bean a Seam component. Just place the <literal>&lt;seam:"
+"component/&gt;</literal> tag within the declaration of the bean that you "
+"wish to be a Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:110
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;seam:component/&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:111
+#, no-c-format
+msgid ""
+"By default, <literal>&lt;seam:component/&gt;</literal> will create a "
+"<literal>STATELESS</literal> Seam component with class and name provided in "
+"the bean definition. Occasionally, such as when a <literal>FactoryBean</"
+"literal> is used, the class of the Spring bean may not be the class "
+"appearing in the bean definition. In such cases the <literal>beanClass</"
+"literal> should be explicitly specified. A Seam component name may be "
+"explicitly specified in cases where there is potential for a naming conflict."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:114
+#, no-c-format
+msgid ""
+"The <literal>scope</literal> attribute of <literal>&lt;seam:component/&gt;</"
+"literal> may be used if you wish the Spring bean to be managed in a "
+"particular Seam scope. The Spring bean must be scoped to <literal>prototype</"
+"literal> if the Seam scope specified is anything other than "
+"<literal>STATELESS</literal>. Pre-existing Spring beans usually have a "
+"fundamentally stateless character, so this attribute is not usually needed."
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:120
+#, no-c-format
+msgid "Seam-scoped Spring beans"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:121
+#, no-c-format
+msgid ""
+"The Seam integration package also lets you use Seam's contexts as Spring 2.0 "
+"style custom scopes. This lets you declare any Spring bean in any of Seam's "
+"contexts. However, note once again that Spring's component model was never "
+"architected to support statefulness, so please use this feature with great "
+"care. In particular, clustering of session or conversation scoped Spring "
+"beans is deeply problematic, and care must be taken when injecting a bean or "
+"component from a wider scope into a bean of a narrower scope."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:124
+#, no-c-format
+msgid ""
+"By specifying <literal>&lt;seam:configure-scopes/&gt;</literal> once in a "
+"Spring bean factory configuration, all of the Seam scopes will be available "
+"to Spring beans as custom scopes. To associate a Spring bean with a "
+"particular Seam scope, specify the Seam scope in the <literal>scope</"
+"literal> attribute of the bean definition."
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:127
+#, no-c-format
+msgid ""
+"&lt;!-- Only needs to be specified once per bean factory--&gt;\n"
+"&lt;seam:configure-scopes/&gt;\n"
+"\n"
+"...\n"
+"\n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope=\"seam."
+"CONVERSATION\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:128
+#, no-c-format
+msgid ""
+"The prefix of the scope name may be changed by specifying the "
+"<literal>prefix</literal> attribute in the <literal>configure-scopes</"
+"literal> definition. (The default prefix is <literal>seam.</literal>)"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:131
+#, no-c-format
+msgid ""
+"Seam-scoped Spring beans defined this way can be injected into other Spring "
+"beans without the use of <literal>&lt;seam:instance/&gt;</literal>. However, "
+"care must be taken to ensure scope impedance is maintained. The normal "
+"approach used in Spring is to specify <literal>&lt;aop:scoped-proxy/&gt;</"
+"literal> in the bean definition. However, Seam-scoped Spring beans are "
+"<emphasis>not</emphasis> compatible with <literal>&lt;aop:scoped-proxy/&gt;</"
+"literal>. So if you need to inject a Seam-scoped Spring bean into a "
+"singleton, <literal>&lt;seam:instance/&gt;</literal> must be used:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:134
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope=\"seam."
+"CONVERSATION\"/&gt;\n"
+"\n"
+"...\n"
+"\n"
+"&lt;bean id=\"someSingleton\"&gt;\n"
+"    &lt;property name=\"someSeamScopedSpringBean\"&gt;\n"
+"        &lt;seam:instance name=\"someSpringBean\" proxy=\"true\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Testing.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Testing.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Testing.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,342 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Testing.xml:10
+#, no-c-format
+msgid "Testing Seam applications"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:11
+#, no-c-format
+msgid ""
+"Most Seam applications will need at least two kinds of automated tests: "
+"<emphasis>unit tests</emphasis>, which test a particular Seam component in "
+"isolation, and scripted <emphasis>integration tests</emphasis> which "
+"exercise all Java layers of the application (that is, everything except the "
+"view pages)."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:14
+#, no-c-format
+msgid "Both kinds of tests are very easy to write."
+msgstr ""
+
+#. Tag: title
+#: Testing.xml:18
+#, no-c-format
+msgid "Unit testing Seam components"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:19
+#, no-c-format
+msgid ""
+"All Seam components are POJOs. This is a great place to start if you want "
+"easy unit testing. And since Seam emphasises the use of bijection for inter-"
+"component interactions and access to contextual objects, it's very easy to "
+"test a Seam component outside of its normal runtime environment."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:22
+#, no-c-format
+msgid "Consider the following Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:25
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Scope(EVENT)\n"
+"@Name(\"register\")\n"
+"public class RegisterAction implements Register\n"
+"{\n"
+"   private User user;\n"
+"   private EntityManager em;\n"
+"\n"
+"   @In\n"
+"   public void setUser(User user) {\n"
+"       this.user = user;\n"
+"   }\n"
+"   \n"
+"   @PersistenceContext\n"
+"   public void setBookingDatabase(EntityManager em) {\n"
+"       this.em = em;\n"
+"   }\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = em.createQuery(\"select username from User where "
+"username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getResultList();\n"
+"      if (existing.size()==0)\n"
+"      {\n"
+"         em.persist(user);\n"
+"         return \"success\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:26
+#, no-c-format
+msgid "We could write a TestNG test for this component as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:29
+#, no-c-format
+msgid ""
+"public class RegisterActionTest\n"
+"{\n"
+"\n"
+"    @Test\n"
+"    public testRegisterAction()\n"
+"    {\n"
+"        EntityManager em = getEntityManagerFactory().createEntityManager();\n"
+"        em.getTransaction().begin();\n"
+"        \n"
+"        User gavin = new User();\n"
+"        gavin.setName(\"Gavin King\");\n"
+"        gavin.setUserName(\"1ovthafew\");\n"
+"        gavin.setPassword(\"secret\");\n"
+"        \n"
+"        RegisterAction action = new RegisterAction();\n"
+"        action.setUser(gavin);\n"
+"        action.setBookingDatabase(em);\n"
+"        \n"
+"        assert \"success\".equals( action.register() );\n"
+"        \n"
+"        em.getTransaction().commit();\n"
+"        em.close();\n"
+"    }\n"
+"    \n"
+"    \n"
+"    private EntityManagerFactory emf;\n"
+"    \n"
+"    public EntityManagerFactory getEntityManagerFactory()\n"
+"    {\n"
+"        return emf;\n"
+"    }\n"
+"    \n"
+"    @Configuration(beforeTestClass=true)\n"
+"    public void init() \n"
+"    {\n"
+"        emf = Persistence.createEntityManagerFactory"
+"(\"myResourceLocalEntityManager\");\n"
+"    }\n"
+"    \n"
+"    @Configuration(afterTestClass=true)\n"
+"    public void destroy()\n"
+"    {\n"
+"        emf.close();\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:30
+#, no-c-format
+msgid ""
+"Seam components don't usually depend directly upon container infrastructure, "
+"so most unit testing as as easy as that!"
+msgstr ""
+
+#. Tag: title
+#: Testing.xml:36
+#, no-c-format
+msgid "Integration testing Seam applications"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:37
+#, no-c-format
+msgid ""
+"Integration testing is slightly more difficult. In this case, we can't "
+"eliminate the container infrastructure; indeed, that is part of what is "
+"being tested! At the same time, we don't want to be forced to deploy our "
+"application to an application server to run the automated tests. We need to "
+"be able to reproduce just enough of the container infrastructure inside our "
+"testing environment to be able to exercise the whole application, without "
+"hurting performance too much."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:40
+#, no-c-format
+msgid ""
+"A second problem is emulating user interactions. A third problem is where to "
+"put our assertions. Some test frameworks let us test the whole application "
+"by reproducing user interactions with the web browser. These frameworks have "
+"their place, but they are not appropriate for use at development time."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:43
+#, no-c-format
+msgid ""
+"The approach taken by Seam is to let you write tests that script your "
+"components while running inside a pruned down container environment (Seam, "
+"together with the JBoss Embeddable EJB container). The role of the test "
+"script is basically to reproduce the interaction between the view and the "
+"Seam components. In other words, you get to pretend you are the JSF "
+"implementation!"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:46
+#, no-c-format
+msgid "This approach tests everything except the view."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:49
+#, no-c-format
+msgid "Let's consider a JSP view for the component we unit tested above:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:52
+#, no-c-format
+msgid ""
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Register New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;table border=\"0\"&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Username&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputText value=\"#{user.username}\"/&gt;&lt;/"
+"td&gt;\n"
+"       &lt;/tr&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Real Name&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputText value=\"#{user.name}\"/&gt;&lt;/td&gt;\n"
+"       &lt;/tr&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Password&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputSecret value=\"#{user.password}\"/&gt;&lt;/"
+"td&gt;\n"
+"       &lt;/tr&gt;\n"
+"     &lt;/table&gt;\n"
+"     &lt;h:messages/&gt;\n"
+"     &lt;h:commandButton type=\"submit\" value=\"Register\" action=\"#"
+"{register.register}\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:53
+#, no-c-format
+msgid ""
+"We want to test the registration functionality of our application (the stuff "
+"that happens when the user clicks the Register button). We'll reproduce the "
+"JSF request lifecycle in an automated TestNG test:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:56
+#, no-c-format
+msgid ""
+"public class RegisterTest extends SeamTest\n"
+"{\n"
+"   \n"
+"   @Test\n"
+"   public void testRegister() throws Exception\n"
+"   {\n"
+"            \n"
+"      new FacesRequest() {\n"
+"\n"
+"         @Override\n"
+"         protected void processValidations() throws Exception\n"
+"         {\n"
+"            validateValue(\"#{user.username}\", \"1ovthafew\");\n"
+"            validateValue(\"#{user.name}\", \"Gavin King\");\n"
+"            validateValue(\"#{user.password}\", \"secret\");\n"
+"            assert !isValidationFailure();\n"
+"         }\n"
+"         \n"
+"         @Override\n"
+"         protected void updateModelValues() throws Exception\n"
+"         {\n"
+"            setValue(\"#{user.username}\", \"1ovthafew\");\n"
+"            setValue(\"#{user.name}\", \"Gavin King\");\n"
+"            setValue(\"#{user.password}\", \"secret\");\n"
+"         }\n"
+"\n"
+"         @Override\n"
+"         protected void invokeApplication()\n"
+"         {\n"
+"            assert invokeMethod(\"#{register.register}\").equals(\"success"
+"\");\n"
+"         }\n"
+"\n"
+"         @Override\n"
+"         protected void renderResponse()\n"
+"         {\n"
+"            assert getValue(\"#{user.username}\").equals(\"1ovthafew\");\n"
+"            assert getValue(\"#{user.name}\").equals(\"Gavin King\");\n"
+"            assert getValue(\"#{user.password}\").equals(\"secret\");\n"
+"         }\n"
+"         \n"
+"      }.run();\n"
+"      \n"
+"   }\n"
+"\n"
+"   ...\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:57
+#, no-c-format
+msgid ""
+"Notice that we've extended <literal>SeamTest</literal>, which provides a "
+"Seam environment for our components, and written our test script as an "
+"anonymous class that extends <literal>SeamTest.FacesRequest</literal>, which "
+"provides an emulated JSF request lifecycle. (There is also a "
+"<literal>SeamTest.NonFacesRequest</literal> for testing GET requests.) We've "
+"written our code in methods which are named for the various JSF phases, to "
+"emulate the calls that JSF would make to our components. Then we've thrown "
+"in various assertions."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:60
+#, no-c-format
+msgid ""
+"You'll find plenty of integration tests for the Seam example applications "
+"which demonstrate more complex cases. There are instructions for running "
+"these tests using Ant, or using the TestNG plugin for eclipse:"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Text.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Text.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Text.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,362 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Text.xml:10
+#, no-c-format
+msgid "Seam Text"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:11
+#, no-c-format
+msgid ""
+"Collaboration-oriented websites require a human-friendly markup language for "
+"easy entry of formatted text in forum posts, wiki pages, blogs, comments, "
+"etc. Seam provides the <literal>&lt;s:formattedText/&gt;</literal> control "
+"for display of formatted text that conforms to the <emphasis>Seam Text</"
+"emphasis> language. Seam Text is implemented using an ANTLR-based parser. "
+"You don't need to know anything about ANTLR to use it, however."
+msgstr ""
+
+#. Tag: title
+#: Text.xml:15
+#, no-c-format
+msgid "Basic fomatting"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:16
+#, no-c-format
+msgid "Here is a simple example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:19
+#, no-c-format
+msgid ""
+"It's easy to make *bold text*, /italic text/, |monospace|, \n"
+"~deleted text~, super^scripts^ or _underlines_."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:20
+#, no-c-format
+msgid ""
+"If we display this using <literal>&lt;s:formattedText/&gt;</literal>, we "
+"will get the following HTML produced:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:23
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"It's easy to make &lt;b&gt;bold text&lt;/b&gt;, &lt;i&gt;italic text&lt;/"
+"i&gt;, &lt;tt&gt;monospace&lt;/tt&gt;\n"
+"&lt;del&gt;deleted text&lt;/del&gt;, super&lt;sup&gt;scripts&lt;/sup&gt; or "
+"&lt;u&gt;underlines&lt;/u&gt;.\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:24
+#, no-c-format
+msgid ""
+"We can use a blank line to indicate a new paragraph, and <literal>+</"
+"literal> to indicate a heading:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:27
+#, no-c-format
+msgid ""
+"+This is a big heading\n"
+"You /must/ have some text following a heading!\n"
+" \n"
+"++This is a smaller heading\n"
+"This is the first paragraph. We can split it across multiple \n"
+"lines, but we must end it with a blank line.\n"
+"\n"
+"This is the second paragraph."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:28
+#, no-c-format
+msgid ""
+"(Note that a simple newline is ignored, you need an additional blank line to "
+"wrap text into a new paragraph.) This is the HTML that results:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:31
+#, no-c-format
+msgid ""
+"&lt;h1&gt;This is a big heading&lt;/h1&gt;\n"
+"&lt;p&gt;\n"
+"You &lt;i&gt;must&lt;/i&gt; have some text following a heading!\n"
+"&lt;/p&gt;\n"
+" \n"
+"&lt;h2&gt;This is a smaller heading&lt;/h2&gt;\n"
+"&lt;p&gt;\n"
+"This is the first paragraph. We can split it across multiple \n"
+"lines, but we must end it with a blank line.\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"This is the second paragraph.\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:32
+#, no-c-format
+msgid ""
+"Ordered lists are created using the <literal>#</literal> character. "
+"Unordered lists use the <literal>=</literal> character:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:35
+#, no-c-format
+msgid ""
+"An ordered list:\n"
+"        \n"
+"#first item\n"
+"#second item\n"
+"#and even the /third/ item\n"
+"\n"
+"An unordered list:\n"
+"\n"
+"=an item\n"
+"=another item"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:36
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"An ordered list:\n"
+"&lt;/p&gt;\n"
+" \n"
+"&lt;ol&gt;       \n"
+"&lt;li&gt;first item&lt;/li&gt;\n"
+"&lt;li&gt;second item&lt;/li&gt;\n"
+"&lt;li&gt;and even the &lt;i&gt;third&lt;/i&gt; item&lt;/li&gt;\n"
+"&lt;/ol&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"An unordered list:\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;ul&gt;\n"
+"&lt;li&gt;an item&lt;/li&gt;\n"
+"&lt;li&gt;another item&lt;/li&gt;\n"
+"&lt;/ul&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:37
+#, no-c-format
+msgid "Quoted sections should be surrounded in double quotes:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:40
+#, no-c-format
+msgid ""
+"The other guy said:\n"
+"        \n"
+"\"Nyeah nyeah-nee \n"
+"/nyeah/ nyeah!\"\n"
+"\n"
+"But what do you think he means by \"nyeah-nee\"?"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:41
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"The other guy said:\n"
+"&lt;/p&gt;\n"
+"        \n"
+"&lt;q&gt;Nyeah nyeah-nee\n"
+"&lt;i&gt;nyeah&lt;/i&gt; nyeah!&lt;/q&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"But what do you think he means by &lt;q&gt;nyeah-nee&lt;/q&gt;?\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: title
+#: Text.xml:45
+#, no-c-format
+msgid "Entering code and text with special characters"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:46
+#, no-c-format
+msgid ""
+"Special characters such as <literal>*</literal>, <literal>|</literal> and "
+"<literal>#</literal>, along with HTML characters such as <literal>&lt;</"
+"literal>, <literal>&gt;</literal> and <literal>&amp;</literal> may be "
+"escaped using <literal>&#92;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:49
+#, no-c-format
+msgid ""
+"You can write down equations like 2&#92;*3&#92;=6 and HTML tags\n"
+"like &#92;&lt;body&#92;&gt; using the escape character: &#92;&#92;."
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:50
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"You can write down equations like 2*3=6 and HTML tags\n"
+"like &lt;body&gt; using the escape character: &#92;.\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:51
+#, no-c-format
+msgid "And we can quote code blocks using backticks:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:54
+#, no-c-format
+msgid ""
+"My code doesn't work:\n"
+"\n"
+"`for (int i=0; i&lt;100; i--)\n"
+"{\n"
+"    doSomething();\n"
+"}`\n"
+"\n"
+"Any ideas?"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:55
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"My code doesn't work:\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;pre&gt;for (int i=0; i&lt;100; i--)\n"
+"{\n"
+"    doSomething();\n"
+"}&lt;/pre&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"Any ideas?\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: title
+#: Text.xml:59
+#, no-c-format
+msgid "Links"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:60
+#, no-c-format
+msgid "A link may be created using the following syntax:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:63
+#, no-c-format
+msgid "Go to the Seam website at [=&gt;http://jboss.com/products/seam]."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:64
+#, no-c-format
+msgid "Or, if you want to specify the text of the link:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:67
+#, no-c-format
+msgid "Go to [the Seam website=&gt;http://jboss.com/products/seam]."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:68
+#, no-c-format
+msgid ""
+"For advanced users, it is even possible to customize the Seam Text parser to "
+"understand wikiword links written using this syntax."
+msgstr ""
+
+#. Tag: title
+#: Text.xml:74
+#, no-c-format
+msgid "Entering HTML"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:75
+#, no-c-format
+msgid ""
+"Text may even include a certain limited subset of HTML (don't worry, the "
+"subset is chosen to be safe from cross-site scripting attacks). This is "
+"useful for creating links:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:78
+#, no-c-format
+msgid ""
+"You might want to link to &lt;a href=\"http://jboss.com/products/seam\"&gt;"
+"something\n"
+"cool&lt;/a&gt;, or even include an image: &lt;img src=\"/logo.jpg\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:79
+#, no-c-format
+msgid "And for creating tables:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:82
+#, no-c-format
+msgid ""
+"&lt;table&gt;\n"
+"    &lt;tr&gt;&lt;td&gt;First name:&lt;/td&gt;&lt;td&gt;Gavin&lt;/td&gt;&lt;/"
+"tr&gt;\n"
+"    &lt;tr&gt;&lt;td&gt;Last name:&lt;/td&gt;&lt;td&gt;King&lt;/td&gt;&lt;/"
+"tr&gt;\n"
+"&lt;/table&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:83
+#, no-c-format
+msgid "But you can do much more if you want!"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Tools.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Tools.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Tools.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,769 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Tools.xml:10
+#, no-c-format
+msgid "Seam tools"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:12
+#, no-c-format
+msgid "jBPM designer and viewer"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:13
+#, no-c-format
+msgid ""
+"The jBPM designer and viewer will let you design and view in a nice way your "
+"business processes and your pageflows. This convenient tool is part of JBoss "
+"Eclipse IDE and more details can be found in the jBPM's documentation "
+"(http://docs.jboss.com/jbpm/v3/gpd/)"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:17
+#, no-c-format
+msgid "<title>Business process designer</title>"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:18
+#, no-c-format
+msgid "This tool lets you design your own business process in a graphical way."
+msgstr ""
+
+#. Tag: screeninfo
+#: Tools.xml:21 Tools.xml:37
+#, no-c-format
+msgid "<screeninfo>Business process designer</screeninfo>"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:33
+#, no-c-format
+msgid "Pageflow viewer"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:34
+#, no-c-format
+msgid ""
+"This tool let you design to some extend your pageflows and let you build "
+"graphical views of them so you can easily share and compare ideas on how it "
+"should be designed."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:51
+#, no-c-format
+msgid "CRUD-application generator"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:52
+#, no-c-format
+msgid ""
+"This chapter, will give you a short overview of the support for Seam that is "
+"available in the Hibernate Tools. Hibernate Tools is a set of tools for "
+"working with Hibernate and related technologies, such as JBoss Seam and "
+"EJB3. The tools are available as a set of eclipse plugins and Ant tasks. You "
+"can download the Hibernate Tools from the JBoss Eclipse IDE or Hibernate "
+"Tools websites."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:55
+#, no-c-format
+msgid ""
+"The specific support for Seam that is currently available is generation of a "
+"fully functional Seam based CRUD-application. The CRUD-application can be "
+"generated based on your existing Hibernate mapping files or EJB3 annotated "
+"POJO's or even fully reverse engineered from your existing database schema."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:58
+#, no-c-format
+msgid ""
+"The following sections is focused on the features required to understand for "
+"usage with Seam. The content is derived from the the Hibernate Tools "
+"reference documentation. Thus if you need more detailed information please "
+"refer to the Hibernate Tools documentation."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:62
+#, no-c-format
+msgid "Creating a Hibernate configuration file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:63
+#, no-c-format
+msgid ""
+"To be able to reverse engineer and generate code a hibernate.properties or "
+"hibernate.cfg.xml file is needed. The Hibernate Tools provide a wizard for "
+"generating the hibernate.cfg.xml file if you do not already have such file."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:66
+#, no-c-format
+msgid ""
+"Start the wizard by clicking \"New Wizard\" (Ctrl+N), select the Hibernate/"
+"Hibernate Configuration file (cfg.xml) wizard and press \"Next\". After "
+"selecting the wanted location for the hibernate.cfg.xml file, you will see "
+"the following page:"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:77
+#, no-c-format
+msgid ""
+"Tip: The contents in the combo boxes for the JDBC driver class and JDBC URL "
+"change automatically, depending on the Dialect and actual driver you have "
+"chosen."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:80
+#, no-c-format
+msgid ""
+"Enter your configuration information in this dialog. Details about the "
+"configuration options can be found in Hibernate reference documentation."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:83
+#, no-c-format
+msgid ""
+"Press \"Finish\" to create the configuration file, after optionally creating "
+"a Console onfiguration, the hibernate.cfg.xml will be automatically opened "
+"in an editor. The last option \"Create Console Configuration\" is enabled by "
+"default and when enabled i will automatically use the hibernate.cfg.xml for "
+"the basis of a \"Console Configuration\""
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:89
+#, no-c-format
+msgid "<title>Creating a Hibernate Console configuration</title>"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:90
+#, no-c-format
+msgid ""
+"A Console Configuration describes to the Hibernate plugin which "
+"configuration files should be used to configure hibernate, including which "
+"classpath is needed to load the POJO's, JDBC drivers etc. It is required to "
+"make usage of query prototyping, reverse engineering and code generation. "
+"You can have multiple named console configurations. Normally you would just "
+"need one per project, but more (or less) is definitly possible."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:93
+#, no-c-format
+msgid ""
+"You create a console configuration by running the Console Configuration "
+"wizard, shown in the following screenshot. The same wizard will also be used "
+"if you are coming from the hibernate.cfg.xml wizard and had enabled \"Create "
+"Console Configuration\"."
+msgstr ""
+
+#. Tag: caption
+#: Tools.xml:103
+#, no-c-format
+msgid "<caption>Creating a Hibernate Console configuration</caption>"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:105
+#, no-c-format
+msgid ""
+"The following table describes the relevant settings. The wizard can "
+"automatically detect default values for most of these if you started the "
+"Wizard with the relevant java project selected"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:109
+#, no-c-format
+msgid "Hibernate Console Configuration Parameters"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:117
+#, no-c-format
+msgid "Parameter"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:122 Tools.xml:308 Tools.xml:458
+#, no-c-format
+msgid "Description"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:127
+#, no-c-format
+msgid "Auto detected value"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:136
+#, no-c-format
+msgid "Name"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:141
+#, no-c-format
+msgid "The unique name of the configuration"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:146
+#, no-c-format
+msgid "Name of the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:153
+#, no-c-format
+msgid "Property file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:158
+#, no-c-format
+msgid "Path to a hibernate.properties file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:163
+#, no-c-format
+msgid "First hibernate.properties file found in the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:170
+#, no-c-format
+msgid "Configuration file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:175
+#, no-c-format
+msgid "Path to a hibernate.cfg.xml file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:180
+#, no-c-format
+msgid "First hibernate.cfg.xml file found in the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:187
+#, no-c-format
+msgid "Enable Hibernate ejb3/annotations"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:192
+#, no-c-format
+msgid ""
+"Selecting this option enables usage of annotated classes. hbm.xml files are "
+"of course still possible to use too. This feature requires running the "
+"Eclipse IDE with a JDK 5 runtime, otherwise you will get classloading and/or "
+"version errors."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:197
+#, no-c-format
+msgid "Not enabled"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:204
+#, no-c-format
+msgid "Mapping files"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:209
+#, no-c-format
+msgid ""
+"List of additional mapping files that should be loaded. Note: A hibernate."
+"cfg.xml can also contain mappings. Thus if these a duplicated here, you will "
+"get \"Duplicate mapping\" errors when using the console configuration."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:214
+#, no-c-format
+msgid ""
+"If no hibernate.cfg.xml file is found, all hbm.xml files found in the "
+"selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:221
+#, no-c-format
+msgid "Classpath"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:226
+#, no-c-format
+msgid ""
+"The classpath for loading POJO and JDBC drivers. Do not add Hibernate core "
+"libraries or dependencies, they are already included. If you get "
+"ClassNotFound errors then check this list for possible missing or redundant "
+"directories/jars."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:231
+#, no-c-format
+msgid ""
+"The default build output directory and any JARs with a class implementing "
+"java.sql.Driver in the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:239
+#, no-c-format
+msgid ""
+"Clicking \"Finish\" creates the configuration and shows it in the "
+"\"Hibernate Configurations\" view"
+msgstr ""
+
+#. Tag: caption
+#: Tools.xml:249
+#, no-c-format
+msgid "Console overview"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:254
+#, no-c-format
+msgid "Reverse engineering and code generation"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:255
+#, no-c-format
+msgid ""
+"A very simple \"click-and-generate\" reverse engineering and code generation "
+"facility is available. It is this facility that allows you to generate the "
+"skeleton for a full Seam CRUD application."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:258
+#, no-c-format
+msgid ""
+"To start working with this process, start the \"Hibernate Code Generation\" "
+"which is available in the toolbar via the Hibernate icon or via the \"Run/"
+"Hibernate Code Generation\" menu item."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:262
+#, no-c-format
+msgid "Code Generation Launcher"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:263
+#, no-c-format
+msgid ""
+"When you click on \"Hibernate Code Generation\" the standard Eclipse "
+"launcher dialog will appear. In this dialog you can create, edit and delete "
+"named Hibernate code generation \"launchers\"."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:274
+#, no-c-format
+msgid ""
+"The dialog has the standard tabs \"Refresh\" and \"Common\" that can be used "
+"to configure which directories should be automatically refreshed and various "
+"general settings launchers, such as saving them in a project for sharing the "
+"launcher within a team."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:285
+#, no-c-format
+msgid ""
+"The first time you create a code generation launcher you should give it a "
+"meaningfull name, otherwise the default prefix \"New_Generation\" will be "
+"used."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:288
+#, no-c-format
+msgid ""
+"Note: The \"At least one exporter option must be selected\" is just a "
+"warning stating that for this launch to work you need to select an exporter "
+"on the Exporter tab. When an exporter has been selected the warning will "
+"disappear."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:291
+#, no-c-format
+msgid "On the \"Main\" tab you the following fields:"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:295
+#, no-c-format
+msgid "Code generation \"Main\" tab fields"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:303 Tools.xml:453
+#, no-c-format
+msgid "Field"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:317
+#, no-c-format
+msgid "Console Configuration"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:322
+#, no-c-format
+msgid ""
+"The name of the console configuration which should be used when code "
+"generating."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:329
+#, no-c-format
+msgid "Output directory"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:334
+#, no-c-format
+msgid ""
+"Path to a directory into where all output will be written by default. Be "
+"aware that existing files will be overwritten, so be sure to specify the "
+"correct directory."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:341
+#, no-c-format
+msgid "Reverse engineer from JDBC Connection"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:346
+#, no-c-format
+msgid ""
+"If enabled the tools will reverse engineer the database available via the "
+"connection information in the selected Hibernate Console Configuration and "
+"generate code based on the database schema. If not enabled the code "
+"generation will just be based on the mappings already specified in the "
+"Hibernate Console configuration."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:353
+#, no-c-format
+msgid "Package"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:358
+#, no-c-format
+msgid ""
+"The package name here is used as the default package name for any entities "
+"found when reverse engineering."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:365
+#, no-c-format
+msgid "reveng.xml"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:370
+#, no-c-format
+msgid ""
+"Path to a reveng.xml file. A reveng.xml file allows you to control certain "
+"aspects of the reverse engineering. e.g. how jdbc types are mapped to "
+"hibernate types and especially important which tables are included/excluded "
+"from the process. Clicking \"setup\" allows you to select an existing reveng."
+"xml file or create a new one.."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:377
+#, no-c-format
+msgid "reveng. strategy"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:382
+#, no-c-format
+msgid ""
+"If reveng.xml does not provide enough customization you can provide your own "
+"implementation of an ReverseEngineeringStrategy. The class need to be in the "
+"claspath of the Console Configuration, otherwise you will get class not "
+"found exceptions."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:389
+#, no-c-format
+msgid "Generate basic typed composite ids"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:394
+#, no-c-format
+msgid ""
+"This field should always be enabled when generating the Seam CRUD "
+"application. A table that has a multi-colum primary key a &lt;composite-"
+"id&gt; mapping will always be created. If this option is enabled and there "
+"are matching foreign-keys each key column is still considered a 'basic' "
+"scalar (string, long, etc.) instead of a reference to an entity. If you "
+"disable this option a &lt;key-many-to-one&gt; instead. Note: a &lt;many-to-"
+"one&gt; property is still created, but is simply marked as non-updatable and "
+"non-insertable."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:401
+#, no-c-format
+msgid "Use custom templates"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:406
+#, no-c-format
+msgid ""
+"If enabled, the Template directory will be searched first when looking up "
+"the velocity templates, allowing you to redefine how the individual "
+"templates process the hibernate mapping model."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:413
+#, no-c-format
+msgid "Template directory"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:418
+#, no-c-format
+msgid "A path to a directory with custom velocity templates."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:429
+#, no-c-format
+msgid "Exporters"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:430
+#, no-c-format
+msgid ""
+"The exporters tab is used to specify which type of code that should be "
+"generated. Each selection represents an \"Exporter\" that are responsible "
+"for generating the code, hence the name."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:441
+#, no-c-format
+msgid ""
+"The following table describes in short the various exporters. The most "
+"relevant for Seam is of course the \"JBoss Seam Skeleton app\"."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:445
+#, no-c-format
+msgid "Code generation \"Exporter\" tab fields"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:467
+#, no-c-format
+msgid "Generate domain code"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:472
+#, no-c-format
+msgid ""
+"Generates POJO's for all the persistent classes and components found in the "
+"given Hibernate configuration."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:479
+#, no-c-format
+msgid "JDK 1.5 constructs"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:484
+#, no-c-format
+msgid "When enabled the POJO's will use JDK 1.5 constructs."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:491
+#, no-c-format
+msgid "EJB3/JSR-220 annotations"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:496
+#, no-c-format
+msgid ""
+"When enabled the POJO's will be annotated according to the EJB3/JSR-220 "
+"persistency specification."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:503
+#, no-c-format
+msgid "Generate DAO code"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:508
+#, no-c-format
+msgid "Generates a set of DAO's for each entity found."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:515
+#, no-c-format
+msgid "Generate Mappings"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:520
+#, no-c-format
+msgid "Generate mapping (hbm.xml) files for each entity"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:527
+#, no-c-format
+msgid "Generate hibernate configuration file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:532
+#, no-c-format
+msgid ""
+"Generate a hibernate.cfg.xml file. Used to keep the hibernate.cfg.xml "
+"uptodate with any new found mapping files."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:539
+#, no-c-format
+msgid "Generate schema html-documentation"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:544
+#, no-c-format
+msgid ""
+"Generates set of html pages that documents the database schema and some of "
+"the mappings."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:551
+#, no-c-format
+msgid "Generate JBoss Seam skeleton app (beta)"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:556
+#, no-c-format
+msgid ""
+"Generates a complete JBoss Seam skeleton app. The generation will include "
+"annotated POJO's, Seam controller beans and a JSP for the presentation "
+"layer. See the generated readme.txt for how to use it."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:559
+#, no-c-format
+msgid ""
+"Note: this exporter generates a full application, including a build.xml thus "
+"you will get the best results if you use an output directory which is the "
+"root of your project."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:570
+#, no-c-format
+msgid "Generating and using the code"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:571
+#, no-c-format
+msgid ""
+"When you have finished filling out the settings, simply press \"Run\" to "
+"start the generation of code. This might take a little while if you are "
+"reverse engineering from a database."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:574
+#, no-c-format
+msgid ""
+"When the generation have finished you should now have a complete skeleton "
+"Seam application in the output directory. In the output directory there is a "
+"<literal>readme.txt</literal> file describing the steps needed to deploy and "
+"run the example."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:577
+#, no-c-format
+msgid ""
+"If you want to regenerate/update the skeleton code then simply run the code "
+"generation again by selecting the \"Hibernate Code Generation\" in the "
+"toolbar or \"Run\" menu. Enjoy."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Tutorial.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Tutorial.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Tutorial.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,4041 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Tutorial.xml:10
+#, no-c-format
+msgid "Seam Tutorial"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:12
+#, no-c-format
+msgid "Try the examples"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:13
+#, no-c-format
+msgid ""
+"In this tutorial, we'll assume that you have downloaded JBoss AS 4.0.5 and "
+"installed the EJB 3.0 profile (using the JBoss AS installer). You should "
+"also have a copy of Seam downloaded and extracted to a work directory."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:16
+#, no-c-format
+msgid "The directory structure of each example in Seam follows this pattern:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:21
+#, no-c-format
+msgid ""
+"Web pages, images and stylesheets may be found in <filename>examples/"
+"<replaceable>registration</replaceable>/view</filename>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:26
+#, no-c-format
+msgid ""
+"Resources such as deployment descriptors and data import scripts may be "
+"found in <filename>examples/<replaceable>registration</replaceable>/"
+"resources</filename>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:31
+#, no-c-format
+msgid ""
+"Java source code may be found in <filename>examples/"
+"<replaceable>registration</replaceable>/src</filename>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:36
+#, no-c-format
+msgid ""
+"The Ant build script is <filename>examples/<replaceable>registration</"
+"replaceable>/build.xml</filename>"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:42
+#, no-c-format
+msgid "Running the examples on JBoss AS"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:43
+#, no-c-format
+msgid ""
+"First, make sure you have Ant correctly installed, with <literal>&#36;"
+"ANT_HOME</literal> and <literal>&#36;JAVA_HOME</literal> set correctly. "
+"Next, make sure you set the location of your JBoss AS 4.0.5 installation in "
+"the <literal>build.properties</literal> file in the root folder of your Seam "
+"installation. If you haven't already done so, start JBoss AS now by typing "
+"<literal>bin/run.sh</literal> or <literal>bin/run.bat</literal> in the root "
+"directory of your JBoss installation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:46
+#, no-c-format
+msgid ""
+"By default the examples will deploy to the default configuration of the "
+"server. If the server has been started using an a configuration other than "
+"default then the example <literal>build.xml</literal> file should be "
+"modified to reflect this before building and deploying. Two lines should be "
+"changed in this file:"
+msgstr ""
+
+#. Tag: screen
+#: Tutorial.xml:49
+#, no-c-format
+msgid ""
+"&lt;property name=\"deploy.dir\"           value=\"${jboss.home}/server/"
+"default/deploy\"/&gt;"
+msgstr ""
+
+#. Tag: screen
+#: Tutorial.xml:50
+#, no-c-format
+msgid ""
+"&lt;property name=\"webroot.dir\"         \n"
+"        value=\"${deploy.dir}/jboss-web.deployer/ROOT.war\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:51
+#, no-c-format
+msgid ""
+"Now, build and deploy the example by typing <literal>ant deploy</literal> in "
+"the <filename>examples/<replaceable>registration</replaceable></filename> "
+"directory."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:54
+#, no-c-format
+msgid ""
+"Try it out by accessing <ulink url=\"http://localhost:8080/seam-registration/"
+"\"><literal>http://localhost:8080/seam-registration/</literal></ulink> with "
+"your web browser."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:60
+#, no-c-format
+msgid "Running the examples on Tomcat"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:61
+#, no-c-format
+msgid ""
+"First, make sure you have Ant correctly installed, with <literal>&#36;"
+"ANT_HOME</literal> and <literal>&#36;JAVA_HOME</literal> set correctly. "
+"Next, make sure you set the location of your Tomcat 5.5 installation in the "
+"<literal>build.properties</literal> file in the root folder of your Seam "
+"installation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:64
+#, no-c-format
+msgid ""
+"Now, build and deploy the example by typing <literal>ant deploy.tomcat</"
+"literal> in the <filename>examples/<replaceable>registration</replaceable></"
+"filename> directory."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:67
+#, no-c-format
+msgid "Finally, start Tomcat."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:70
+#, no-c-format
+msgid ""
+"Try it out by accessing <ulink url=\"http://localhost:8080/jboss-seam-"
+"registration/\"><literal>http://localhost:8080/jboss-seam-registration/</"
+"literal></ulink> with your web browser."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:73
+#, no-c-format
+msgid ""
+"When you deploy the example to Tomcat, any EJB3 components will run inside "
+"the JBoss Embeddable EJB3 container, a complete standalone EJB3 container "
+"environment."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:79
+#, no-c-format
+msgid "Running the example tests"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:80
+#, no-c-format
+msgid ""
+"Most of the examples come with a suite of TestNG integration tests. The "
+"easiest way to run the tests is to run <literal>ant testexample</literal> "
+"inside the <filename>examples/<replaceable>registration</replaceable></"
+"filename> directory. It is also possible to run the tests inside your IDE "
+"using the TestNG plugin."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:88
+#, no-c-format
+msgid "Your first Seam application: the registration example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:89
+#, no-c-format
+msgid ""
+"The registration example is a fairly trivial application that lets a new "
+"user store his username, real name and password in the database. The example "
+"isn't intended to show off all of the cool functionality of Seam. However, "
+"it demonstrates the use of an EJB3 session bean as a JSF action listener, "
+"and basic configuration of Seam."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:92
+#, no-c-format
+msgid ""
+"We'll go slowly, since we realize you might not yet be familiar with EJB 3.0."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:95
+#, no-c-format
+msgid ""
+"The start page displays a very basic form with three input fields. Try "
+"filling them in and then submitting the form. This will save a user object "
+"in the database."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:107 Tutorial.xml:424 Tutorial.xml:563 Tutorial.xml:723
+#, no-c-format
+msgid "Understanding the code"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:108
+#, no-c-format
+msgid ""
+"The example is implemented with two JSP pages, one entity bean and one "
+"stateless session bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:119
+#, no-c-format
+msgid "Let's take a look at the code, starting from the \"bottom\"."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:123
+#, no-c-format
+msgid "The entity bean: <literal>User.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:124
+#, no-c-format
+msgid ""
+"We need an EJB entity bean for user data. This class defines "
+"<emphasis>persistence</emphasis> and <emphasis>validation</emphasis> "
+"declaratively, via annotations. It also needs some extra annotations that "
+"define the class as a Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:140
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"user\")\n"
+"@Scope(SESSION)\n"
+"@Table(name=\"users\")\n"
+"public class User implements Serializable\n"
+"{\n"
+"   private static final long serialVersionUID = 1881413500711441951L;\n"
+"   \n"
+"   private String username;\n"
+"   private String password;\n"
+"   private String name;\n"
+"   \n"
+"   public User(String name, String password, String username)\n"
+"   {\n"
+"      this.name = name;\n"
+"      this.password = password;\n"
+"      this.username = username;\n"
+"   }\n"
+"   \n"
+"   public User() {}\n"
+"   \n"
+"   @NotNull @Length(min=5, max=15)\n"
+"   public String getPassword()\n"
+"   {\n"
+"      return password;\n"
+"   }\n"
+"\n"
+"   public void setPassword(String password)\n"
+"   {\n"
+"      this.password = password;\n"
+"   }\n"
+"   \n"
+"   @NotNull\n"
+"   public String getName()\n"
+"   {\n"
+"      return name;\n"
+"   }\n"
+"\n"
+"   public void setName(String name)\n"
+"   {\n"
+"      this.name = name;\n"
+"   }\n"
+"   \n"
+"   @Id @NotNull @Length(min=5, max=15)\n"
+"   public String getUsername()\n"
+"   {\n"
+"      return username;\n"
+"   }\n"
+"\n"
+"   public void setUsername(String username)\n"
+"   {\n"
+"      this.username = username;\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:143
+#, no-c-format
+msgid ""
+"The EJB3 standard <literal>@Entity</literal> annotation indicates that the "
+"<literal>User</literal> class is an entity bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:148
+#, no-c-format
+msgid ""
+"A Seam component needs a <emphasis>component name</emphasis> specified by "
+"the <link linkend=\"name-annotation\"><literal>@Name</literal></link> "
+"annotation. This name must be unique within the Seam application. When JSF "
+"asks Seam to resolve a context variable with a name that is the same as a "
+"Seam component name, and the context variable is currently undefined (null), "
+"Seam will instantiate that component, and bind the new instance to the "
+"context variable. In this case, Seam will instantiate a <literal>User</"
+"literal> the first time JSF encounters a variable named <literal>user</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:153
+#, no-c-format
+msgid ""
+"Whenever Seam instantiates a component, it binds the new instance to a "
+"context variable in the component's <emphasis>default context</emphasis>. "
+"The default context is specified using the <link linkend=\"scope-annotation"
+"\"><literal>@Scope</literal></link> annotation. The <literal>User</literal> "
+"bean is a session scoped component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:158
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Table</literal> annotation indicates that the "
+"<literal>User</literal> class is mapped to the <literal>users</literal> "
+"table."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:163
+#, no-c-format
+msgid ""
+"<literal>name</literal>, <literal>password</literal> and <literal>username</"
+"literal> are the persistent attributes of the entity bean. All of our "
+"persistent attributes define accessor methods. These are needed when this "
+"component is used by JSF in the render response and update model values "
+"phases."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:168
+#, no-c-format
+msgid ""
+"An empty constructor is both required by both the EJB specification and by "
+"Seam."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:173
+#, no-c-format
+msgid ""
+"The <literal>@NotNull</literal> and <literal>@Length</literal> annotations "
+"are part of the Hibernate Validator framework. Seam integrates Hibernate "
+"Validator and lets you use it for data validation (even if you are not using "
+"Hibernate for persistence)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:178
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Id</literal> annotation indicates the primary key "
+"attribute of the entity bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:185
+#, no-c-format
+msgid ""
+"The most important things to notice in this example are the <literal>@Name</"
+"literal> and <literal>@Scope</literal> annotations. These annotations "
+"establish that this class is a Seam component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:188
+#, no-c-format
+msgid ""
+"We'll see below that the properties of our <literal>User</literal> class are "
+"bound to directly to JSF components and are populated by JSF during the "
+"update model values phase. We don't need any tedious glue code to copy data "
+"back and forth between the JSP pages and the entity bean domain model."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:191
+#, no-c-format
+msgid ""
+"However, entity beans shouldn't do transaction management or database "
+"access. So we can't use this component as a JSF action listener. For that we "
+"need a session bean."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:198
+#, no-c-format
+msgid ""
+"The stateless session bean class: <literal>RegisterAction.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:199
+#, no-c-format
+msgid ""
+"Most Seam application use session beans as JSF action listeners (you can use "
+"JavaBeans instead if you like)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:202
+#, no-c-format
+msgid ""
+"We have exactly one JSF action in our application, and one session bean "
+"method attached to it. In this case, we'll use a stateless session bean, "
+"since all the state associated with our action is held by the <literal>User</"
+"literal> bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:205
+#, no-c-format
+msgid "This is the only really interesting code in the example!"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:222
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"register\")\n"
+"public class RegisterAction implements Register\n"
+"{\n"
+"\n"
+"   @In\n"
+"   private User user;\n"
+"   \n"
+"   @PersistenceContext\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @Logger\n"
+"   private Log log;\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = em.createQuery(\n"
+"         \"select username from User where username=#{user.username}\")\n"
+"         .getResultList();\n"
+"         \n"
+"      if (existing.size()==0)\n"
+"      {\n"
+"         em.persist(user);\n"
+"         log.info(\"Registered new user #{user.username}\");\n"
+"         return \"/registered.jsp\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         FacesMessages.instance().add(\"User #{user.username} already exists"
+"\");\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:225
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Stateless</literal> annotation marks this class "
+"as stateless session bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:230
+#, no-c-format
+msgid ""
+"The <link linkend=\"in-annotation\"><literal>@In</literal></link> annotation "
+"marks an attribute of the bean as injected by Seam. In this case, the "
+"attribute is injected from a context variable named <literal>user</literal> "
+"(the instance variable name)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:235
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@PersistenceContext</literal> annotation is used "
+"to inject the EJB3 entity manager."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:240
+#, no-c-format
+msgid ""
+"The Seam <literal>@Logger</literal> annotation is used to inject the "
+"component's <literal>Log</literal> instance."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:245
+#, no-c-format
+msgid ""
+"The action listener method uses the standard EJB3 <literal>EntityManager</"
+"literal> API to interact with the database, and returns the JSF outcome. "
+"Note that, since this is a sesson bean, a transaction is automatically begun "
+"when the <literal>register()</literal> method is called, and committed when "
+"it completes."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:250
+#, no-c-format
+msgid ""
+"Notice that Seam lets you use a JSF EL expression inside EJB-QL. Under the "
+"covers, this results in an ordinary JPA <literal>setParameter()</literal> "
+"call on the standard JPA <literal>Query</literal> object. Nice, huh?"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:255
+#, no-c-format
+msgid ""
+"The <literal>Log</literal> API lets us easily display templated log messages."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:260
+#, no-c-format
+msgid ""
+"JSF action listener methods return a string-valued outcome that determines "
+"what page will be displayed next. A null outcome (or a void action listener "
+"method) redisplays the previous page. In plain JSF, it is normal to always "
+"use a JSF <emphasis>navigation rule</emphasis> to determine the JSF view id "
+"from the outcome. For complex application this indirection is useful and a "
+"good practice. However, for very simple examples like this one, Seam lets "
+"you use the JSF view id as the outcome, eliminating the requirement for a "
+"navigation rule. <emphasis>Note that when you use a view id as an outcome, "
+"Seam always performs a browser redirect.</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:265
+#, no-c-format
+msgid ""
+"Seam provides a number of <emphasis>built-in components</emphasis> to help "
+"solve common problems. The <literal>FacesMessages</literal> component makes "
+"it easy to display templated error or success messages. Built-in Seam "
+"components may be obtained by injection, or by calling an <literal>instance()"
+"</literal> method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:272
+#, no-c-format
+msgid ""
+"Note that we did not explicitly specify a <literal>@Scope</literal> this "
+"time. Each Seam component type has a default scope if not explicitly "
+"specified. For stateless session beans, the default scope is the stateless "
+"context. Actually, <emphasis>all</emphasis> stateless session beans belong "
+"in the stateless context."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:275
+#, no-c-format
+msgid ""
+"Our session bean action listener performs the business and persistence logic "
+"for our mini-application. In more complex applications, we might need to "
+"layer the code and refactor persistence logic into a dedicated data access "
+"component. That's perfectly trivial to do. But notice that Seam does not "
+"force you into any particular strategy for application layering."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:278
+#, no-c-format
+msgid ""
+"Furthermore, notice that our session bean has simultaneous access to context "
+"associated with the web request (the form values in the <literal>User</"
+"literal> object, for example), and state held in transactional resources "
+"(the <literal>EntityManager</literal> object). This is a break from "
+"traditional J2EE architectures. Again, if you are more comfortable with the "
+"traditional J2EE layering, you can certainly implement that in a Seam "
+"application. But for many applications, it's simply not very useful."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:285
+#, no-c-format
+msgid "The session bean local interface: <literal>Register.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:286
+#, no-c-format
+msgid "Naturally, our session bean needs a local interface."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:291
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface Register\n"
+"{\n"
+"   public String register();\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:292
+#, no-c-format
+msgid "That's the end of the Java code. Now onto the deployment descriptors."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:298
+#, no-c-format
+msgid ""
+"The Seam component deployment descriptor: <literal>components.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:299
+#, no-c-format
+msgid ""
+"If you've used many Java frameworks before, you'll be used to having to "
+"declate all your component classes in some kind of XML file that gradually "
+"grows more and more unmanageable as your project matures. You'll be relieved "
+"to know that Seam does not require that application components be "
+"accompanied by XML. Most Seam applications require a very small amount of "
+"XML that does not grow very much as the project gets bigger."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:302
+#, no-c-format
+msgid ""
+"Nevertheless, it is often useful to be able to provide for <emphasis>some</"
+"emphasis> external configuration of <emphasis>some</emphasis> components "
+"(particularly the components built in to Seam). You have a couple of options "
+"here, but the most flexible option is to provide this configuration in a "
+"file called <literal>components.xml</literal>, located in the <literal>WEB-"
+"INF</literal> directory. We'll use the <literal>components.xml</literal> "
+"file to tell Seam how to find our EJB components in JNDI:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:305
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"&gt;\n"
+"     &lt;core:init jndi-pattern=\"@jndiPattern@\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:306
+#, no-c-format
+msgid ""
+"This code configures a property named <literal>jndiPattern</literal> of a "
+"built-in Seam component named <literal>org.jboss.seam.core.init</literal>."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:312
+#, no-c-format
+msgid "The web deployment description: <literal>web.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:313
+#, no-c-format
+msgid ""
+"The presentation layer for our mini-application will be deployed in a WAR. "
+"So we'll need a web deployment descriptor."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:316
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;web-app version=\"2.5\"\n"
+"    xmlns=\"http://java.sun.com/xml/ns/javaee\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n"
+"        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\"&gt;\n"
+"\n"
+"    &lt;!-- Seam --&gt;\n"
+"\n"
+"    &lt;listener&gt;\n"
+"        &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/"
+"listener-class&gt;\n"
+"    &lt;/listener&gt;\n"
+"\n"
+"    &lt;!-- MyFaces --&gt;\n"
+"\n"
+"    &lt;listener&gt;\n"
+"        &lt;listener-class&gt;\n"
+"            org.apache.myfaces.webapp.StartupServletContextListener\n"
+"        &lt;/listener-class&gt;\n"
+"    &lt;/listener&gt;\n"
+"\n"
+"    &lt;context-param&gt;\n"
+"        &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-"
+"name&gt;\n"
+"        &lt;param-value&gt;client&lt;/param-value&gt;\n"
+"    &lt;/context-param&gt;\n"
+"\n"
+"    &lt;servlet&gt;\n"
+"        &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;\n"
+"        &lt;servlet-class&gt;javax.faces.webapp.FacesServlet&lt;/servlet-"
+"class&gt;\n"
+"        &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;\n"
+"    &lt;/servlet&gt;\n"
+"\n"
+"    &lt;!-- Faces Servlet Mapping --&gt;\n"
+"    &lt;servlet-mapping&gt;\n"
+"        &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;\n"
+"        &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;\n"
+"    &lt;/servlet-mapping&gt;\n"
+"\n"
+"&lt;/web-app&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:317
+#, no-c-format
+msgid ""
+"This <literal>web.xml</literal> file configures Seam and MyFaces. The "
+"configuration you see here is pretty much identical in all Seam applications."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:323
+#, no-c-format
+msgid "The JSF configration: <literal>faces-config.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:324
+#, no-c-format
+msgid ""
+"All Seam applications use JSF views as the presentation layer. So we'll need "
+"<literal>faces-config.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:327
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;!DOCTYPE faces-config \n"
+"PUBLIC \"-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN\"\n"
+"                            \"http://java.sun.com/dtd/web-facesconfig_1_0.dtd"
+"\"&gt;\n"
+"&lt;faces-config&gt;\n"
+"\n"
+"    &lt;!-- A phase listener is needed by all Seam applications --&gt;\n"
+"    \n"
+"    &lt;lifecycle&gt;\n"
+"        &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-"
+"listener&gt;\n"
+"    &lt;/lifecycle&gt;\n"
+"\n"
+"&lt;/faces-config&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:328
+#, no-c-format
+msgid ""
+"The <literal>faces-config.xml</literal> file integrates Seam into JSF. Note "
+"that we don't need any JSF managed bean declarations! The managed beans are "
+"the Seam components. In Seam applications, the <literal>faces-config.xml</"
+"literal> is used much less often than in plain JSF."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:331
+#, no-c-format
+msgid ""
+"In fact, once you have all the basic descriptors set up, the <emphasis>only</"
+"emphasis> XML you need to write as you add new functionality to a Seam "
+"application is the navigation rules, and possibly jBPM process definitions. "
+"Seam takes the view that <emphasis>process flow</emphasis> and "
+"<emphasis>configuration data</emphasis> are the only things that truly "
+"belong in XML."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:334
+#, no-c-format
+msgid ""
+"In this simple example, we don't even need a navigation rule, since we "
+"decided to embed the view id in our action code."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:340
+#, no-c-format
+msgid "The EJB deployment descriptor: <literal>ejb-jar.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:341
+#, no-c-format
+msgid ""
+"The <literal>ejb-jar.xml</literal> file integrates Seam with EJB3, by "
+"attaching the <literal>SeamInterceptor</literal> to all session beans in the "
+"archive."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:344
+#, no-c-format
+msgid ""
+"&lt;ejb-jar xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \n"
+"         xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n"
+"         http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd\"\n"
+"         version=\"3.0\"&gt;\n"
+"         \n"
+"   &lt;interceptors&gt;\n"
+"     &lt;interceptor&gt;\n"
+"       &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"     &lt;/interceptor&gt;\n"
+"   &lt;/interceptors&gt;\n"
+"   \n"
+"   &lt;assembly-descriptor&gt;\n"
+"      &lt;interceptor-binding&gt;\n"
+"         &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"         &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"      &lt;/interceptor-binding&gt;\n"
+"   &lt;/assembly-descriptor&gt;\n"
+"   \n"
+"&lt;/ejb-jar&gt;"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:348
+#, no-c-format
+msgid ""
+"The EJB persistence deployment descriptor: <literal>persistence.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:349
+#, no-c-format
+msgid ""
+"The <literal>persistence.xml</literal> file tells the EJB persistence "
+"provider where to find the datasource, and contains some vendor-specific "
+"settings. In this case, enables automatic schema export at startup time."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:352
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;persistence xmlns=\"http://java.sun.com/xml/ns/persistence\" \n"
+"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence \n"
+"             http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd\" \n"
+"             version=\"1.0\"&gt;\n"
+"    &lt;persistence-unit name=\"userDatabase\"&gt;\n"
+"      &lt;provider&gt;org.hibernate.ejb.HibernatePersistence&lt;/"
+"provider&gt;\n"
+"      &lt;jta-data-source&gt;java:/DefaultDS&lt;/jta-data-source&gt;\n"
+"      &lt;properties&gt;\n"
+"         &lt;property name=\"hibernate.hbm2ddl.auto\" value=\"create-drop\"/"
+"&gt;\n"
+"      &lt;/properties&gt;\n"
+"    &lt;/persistence-unit&gt;\n"
+"&lt;/persistence&gt;"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:356
+#, no-c-format
+msgid ""
+"The view: <literal>register.jsp</literal> and <literal>registered.jsp</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:357
+#, no-c-format
+msgid ""
+"The view pages for a Seam application could be implemented using any "
+"technology that supports JSF. In this example we use JSP, since it is "
+"familiar to most developers and since we have minimal requirements here "
+"anyway. (But if you take our advice, you'll use Facelets for your own "
+"applications.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:360
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://jboss.com/products/seam/taglib\" prefix=\"s\" "
+"&#37;&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Register New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;table border=\"0\"&gt;\n"
+"       &lt;s:validateAll&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Username&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputText value=\"#{user.username}\"/&gt;&lt;/"
+"td&gt;\n"
+"         &lt;/tr&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Real Name&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputText value=\"#{user.name}\"/&gt;&lt;/td&gt;\n"
+"         &lt;/tr&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Password&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputSecret value=\"#{user.password}\"/&gt;&lt;/"
+"td&gt;\n"
+"         &lt;/tr&gt;\n"
+"       &lt;/s:validateAll&gt;\n"
+"     &lt;/table&gt;\n"
+"     &lt;h:messages/&gt;\n"
+"     &lt;h:commandButton type=\"submit\" value=\"Register\" action=\"#"
+"{register.register}\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:361
+#, no-c-format
+msgid ""
+"The only thing here that is specific to Seam is the <literal>&lt;s:"
+"validateAll&gt;</literal> tag. This JSF component tells JSF to validate all "
+"the contained input fields against the Hibernate Validator annotations "
+"specified on the entity bean."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:364
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Successfully Registered New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"    Welcome, &lt;h:outputText value=\"#{user.name}\"/&gt;, \n"
+"    you are successfully registered as &lt;h:outputText value=\"#{user."
+"username}\"/&gt;.\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:365
+#, no-c-format
+msgid ""
+"This is a boring old JSP pages using standard JSF components. There is "
+"nothing specific to Seam here."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:371
+#, no-c-format
+msgid "The EAR deployment descriptor: <literal>application.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:372
+#, no-c-format
+msgid ""
+"Finally, since our application is deployed as an EAR, we need a deployment "
+"descriptor there, too."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:375
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;application xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee \n"
+"             http://java.sun.com/xml/ns/javaee/application_5.xsd\"\n"
+"             version=\"5\"&gt;\n"
+"             \n"
+"    &lt;display-name&gt;Seam Registration&lt;/display-name&gt;\n"
+"\n"
+"    &lt;module&gt;\n"
+"        &lt;web&gt;\n"
+"            &lt;web-uri&gt;jboss-seam-registration.war&lt;/web-uri&gt;\n"
+"            &lt;context-root&gt;/seam-registration&lt;/context-root&gt;\n"
+"        &lt;/web&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;ejb&gt;jboss-seam-registration.jar&lt;/ejb&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;jboss-seam.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;el-api.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;el-ri.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    \n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:376
+#, no-c-format
+msgid ""
+"This deployment descriptor links modules in the enterprise archive and binds "
+"the web application to the context root <literal>/seam-registration</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:387 Tutorial.xml:535 Tutorial.xml:698 Tutorial.xml:813
+#, no-c-format
+msgid "How it works"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:388
+#, no-c-format
+msgid ""
+"When the form is submitted, JSF asks Seam to resolve the variable named "
+"<literal>user</literal>. Since there is no value already bound to that name "
+"(in any Seam context), Seam instantiates the <literal>user</literal> "
+"component, and returns the resulting <literal>User</literal> entity bean "
+"instance to JSF after storing it in the Seam session context."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:391
+#, no-c-format
+msgid ""
+"The form input values are now validated against the Hibernate Validator "
+"constraints specified on the <literal>User</literal> entity. If the "
+"constraints are violated, JSF redisplays the page. Otherwise, JSF binds the "
+"form input values to properties of the <literal>User</literal> entity bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:394
+#, no-c-format
+msgid ""
+"Next, JSF asks Seam to resolve the variable named <literal>register</"
+"literal>. Seam finds the <literal>RegisterAction</literal> stateless session "
+"bean in the stateless context and returns it. JSF invokes the "
+"<literal>register()</literal> action listener method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:397
+#, no-c-format
+msgid ""
+"Seam intercepts the method call and injects the <literal>User</literal> "
+"entity from the Seam session context, before continuing the invocation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:400
+#, no-c-format
+msgid ""
+"The <literal>register()</literal> method checks if a user with the entered "
+"username already exists. If so, an error message is queued with the "
+"<literal>FacesMessages</literal> component, and a null outcome is returned, "
+"causing a page redisplay. The <literal>FacesMessages</literal> component "
+"interpolates the JSF expression embedded in the message string and adds a "
+"JSF <literal>FacesMessage</literal> to the view."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:403
+#, no-c-format
+msgid ""
+"If no user with that username exists, the <literal>\"/registered.jsp\"</"
+"literal> outcome triggers a browser redirect to the <literal>registered.jsp</"
+"literal> page. When JSF comes to render the page, it asks Seam to resolve "
+"the variable named <literal>user</literal> and uses property values of the "
+"returned <literal>User</literal> entity from Seam's session scope."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:411
+#, no-c-format
+msgid "Clickable lists in Seam: the messages example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:412
+#, no-c-format
+msgid ""
+"Clickable lists of database search results are such an important part of any "
+"online application that Seam provides special functionality on top of JSF to "
+"make it easier to query data using EJB-QL or HQL and display it as a "
+"clickable list using a JSF <literal>&lt;h:dataTable&gt;</literal>. The "
+"messages example demonstrates this functionality."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:425
+#, no-c-format
+msgid ""
+"The message list example has one entity bean, <literal>Message</literal>, "
+"one session bean, <literal>MessageListBean</literal> and one JSP."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:429
+#, no-c-format
+msgid "The entity bean: <literal>Message.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:430
+#, no-c-format
+msgid ""
+"The <literal>Message</literal> entity defines the title, text, date and time "
+"of a message, and a flag indicating whether the message has been read:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:433
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"message\")\n"
+"@Scope(EVENT)\n"
+"public class Message implements Serializable\n"
+"{\n"
+"   private Long id;\n"
+"   private String title;\n"
+"   private String text;\n"
+"   private boolean read;\n"
+"   private Date datetime;\n"
+"   \n"
+"   @Id @GeneratedValue\n"
+"   public Long getId() {\n"
+"      return id;\n"
+"   }\n"
+"   public void setId(Long id) {\n"
+"      this.id = id;\n"
+"   }\n"
+"   \n"
+"   @NotNull @Length(max=100)\n"
+"   public String getTitle() {\n"
+"      return title;\n"
+"   }\n"
+"   public void setTitle(String title) {\n"
+"      this.title = title;\n"
+"   }\n"
+"   \n"
+"   @NotNull @Lob\n"
+"   public String getText() {\n"
+"      return text;\n"
+"   }\n"
+"   public void setText(String text) {\n"
+"      this.text = text;\n"
+"   }\n"
+"   \n"
+"   @NotNull\n"
+"   public boolean isRead() {\n"
+"      return read;\n"
+"   }\n"
+"   public void setRead(boolean read) {\n"
+"      this.read = read;\n"
+"   }\n"
+"   \n"
+"   @NotNull \n"
+"   @Basic @Temporal(TemporalType.TIMESTAMP)\n"
+"   public Date getDatetime() {\n"
+"      return datetime;\n"
+"   }\n"
+"   public void setDatetime(Date datetime) {\n"
+"      this.datetime = datetime;\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:438
+#, no-c-format
+msgid "The stateful session bean: <literal>MessageManagerBean.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:439
+#, no-c-format
+msgid ""
+"Just like in the previous example, we have a session bean, "
+"<literal>MessageManagerBean</literal>, which defines the action listener "
+"methods for the two buttons on our form. One of the buttons selects a "
+"message from the list, and displays that message. The other button deletes a "
+"message. So far, this is not so different to the previous example."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:442
+#, no-c-format
+msgid ""
+"But <literal>MessageManagerBean</literal> is also responsible for fetching "
+"the list of messages the first time we navigate to the message list page. "
+"There are various ways the user could navigate to the page, and not all of "
+"them are preceded by a JSF action&mdash;the user might have bookmarked the "
+"page, for example. So the job of fetching the message list takes place in a "
+"Seam <emphasis>factory method</emphasis>, instead of in an action listener "
+"method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:445
+#, no-c-format
+msgid ""
+"We want to cache the list of messages in memory between server requests, so "
+"we will make this a stateful session bean."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:459
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Scope(SESSION)\n"
+"@Name(\"messageManager\")\n"
+"public class MessageManagerBean implements Serializable, MessageManager\n"
+"{\n"
+"\n"
+"   @DataModel\n"
+"   private List&lt;Message&gt; messageList;\n"
+"   \n"
+"   @DataModelSelection\n"
+"   @Out(required=false)\n"
+"   private Message message;\n"
+"   \n"
+"   @PersistenceContext(type=EXTENDED)\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @Factory(\"messageList\")\n"
+"   public void findMessages()\n"
+"   {\n"
+"      messageList = em.createQuery(\"from Message msg order by msg.datetime "
+"desc\").getResultList();\n"
+"   }\n"
+"   \n"
+"   public void select()\n"
+"   {\n"
+"      message.setRead(true);\n"
+"   }\n"
+"   \n"
+"   public void delete()\n"
+"   {\n"
+"      messageList.remove(message);\n"
+"      em.remove(message);\n"
+"      message=null;\n"
+"   }\n"
+"   \n"
+"   @Remove @Destroy\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:462
+#, no-c-format
+msgid ""
+"The <literal>@DataModel</literal> annotation exposes an attibute of type "
+"<literal>java.util.List</literal> to the JSF page as an instance of "
+"<literal>javax.faces.model.DataModel</literal>. This allows us to use the "
+"list in a JSF <literal>&lt;h:dataTable&gt;</literal> with clickable links "
+"for each row. In this case, the <literal>DataModel</literal> is made "
+"available in a session context variable named <literal>messageList</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:467
+#, no-c-format
+msgid ""
+"The <literal>@DataModelSelection</literal> annotation tells Seam to inject "
+"the <literal>List</literal> element that corresponded to the clicked link."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:472
+#, no-c-format
+msgid ""
+"The <literal>@Out</literal> annotation then exposes the selected value "
+"directly to the page. So ever time a row of the clickable list is selected, "
+"the <literal>Message</literal> is injected to the attribute of the stateful "
+"bean, and the subsequently <emphasis>outjected</emphasis> to the event "
+"context variable named <literal>message</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:477
+#, no-c-format
+msgid ""
+"This stateful bean has an EJB3 <emphasis>extended persistence context</"
+"emphasis>. The messages retrieved in the query remain in the managed state "
+"as long as the bean exists, so any subsequent method calls to the stateful "
+"bean can update them without needing to make any explicit call to the "
+"<literal>EntityManager</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:482
+#, no-c-format
+msgid ""
+"The first time we navigate to the JSP page, there will be no value in the "
+"<literal>messageList</literal> context variable. The <literal>@Factory</"
+"literal> annotation tells Seam to create an instance of "
+"<literal>MessageManagerBean</literal> and invoke the <literal>findMessages()"
+"</literal> method to initialize the value. We call <literal>findMessages()</"
+"literal> a <emphasis>factory method</emphasis> for <literal>messages</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:487
+#, no-c-format
+msgid ""
+"The <literal>select()</literal> action listener method marks the selected "
+"<literal>Message</literal> as read, and updates it in the database."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:492
+#, no-c-format
+msgid ""
+"The <literal>delete()</literal> action listener method removes the selected "
+"<literal>Message</literal> from the database."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:497
+#, no-c-format
+msgid ""
+"All stateful session bean Seam components <emphasis>must</emphasis> have a "
+"method marked <literal>@Remove @Destroy</literal> to ensure that Seam will "
+"remove the stateful bean when the Seam context ends, and clean up any server-"
+"side state."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:504
+#, no-c-format
+msgid ""
+"Note that this is a session-scoped Seam component. It is associated with the "
+"user login session, and all requests from a login session share the same "
+"instance of the component. (In Seam applications, we usually use session-"
+"scoped components sparingly.)"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:510
+#, no-c-format
+msgid ""
+"The session bean local interface: <literal>MessageManager.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:511
+#, no-c-format
+msgid "All session beans have a business interface, of course."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:514
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface MessageManager\n"
+"{\n"
+"   public void findMessages();\n"
+"   public void select();\n"
+"   public void delete();\n"
+"   public void destroy();\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:515
+#, no-c-format
+msgid "From now on, we won't show local interfaces in our code examples."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:518
+#, no-c-format
+msgid ""
+"Let's skip over <literal>components.xml</literal>, <literal>persistence.xml</"
+"literal>, <literal>web.xml</literal>, <literal>ejb-jar.xml</literal>, "
+"<literal>faces-config.xml</literal> and <literal>application.xml</literal> "
+"since they are much the same as the previous example, and go straight to the "
+"JSP."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:524
+#, no-c-format
+msgid "The view: <literal>messages.jsp</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:525
+#, no-c-format
+msgid ""
+"The JSP page is a straightforward use of the JSF <literal>&lt;h:dataTable&gt;"
+"</literal> component. Again, nothing specific to Seam."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:528
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Messages&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;h2&gt;Message List&lt;/h2&gt;\n"
+"     &lt;h:outputText value=\"No messages to display\" rendered=\"#"
+"{messageList.rowCount==0}\"/&gt;\n"
+"     &lt;h:dataTable var=\"msg\" value=\"#{messageList}\" rendered=\"#"
+"{messageList.rowCount&gt;0}\"&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Read\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:selectBooleanCheckbox value=\"#{msg.read}\" disabled=\"true"
+"\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Title\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:commandLink value=\"#{msg.title}\" action=\"#"
+"{messageManager.select}\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Date/Time\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:outputText value=\"#{msg.datetime}\"&gt;\n"
+"              &lt;f:convertDateTime type=\"both\" dateStyle=\"medium\" "
+"timeStyle=\"short\"/&gt;\n"
+"           &lt;/h:outputText&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;h:commandButton value=\"Delete\" action=\"#{messageManager."
+"delete}\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"     &lt;/h:dataTable&gt;\n"
+"     &lt;h3&gt;&lt;h:outputText value=\"#{message.title}\"/&gt;&lt;/h3&gt;\n"
+"     &lt;div&gt;&lt;h:outputText value=\"#{message.text}\"/&gt;&lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:536
+#, no-c-format
+msgid ""
+"The first time we navigate to the <literal>messages.jsp</literal> page, "
+"whether by a JSF postback (faces request) or a direct browser GET request "
+"(non-faces request), the page will try to resolve the <literal>messageList</"
+"literal> context variable. Since this context variable is not initialized, "
+"Seam will call the factory method <literal>findMessages()</literal>, which "
+"performs a query against the database and results in a <literal>DataModel</"
+"literal> being outjected. This <literal>DataModel</literal> provides the row "
+"data needed for rendering the <literal>&lt;h:dataTable&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:539
+#, no-c-format
+msgid ""
+"When the user clicks the <literal>&lt;h:commandLink&gt;</literal>, JSF calls "
+"the <literal>select()</literal> action listener. Seam intercepts this call "
+"and injects the selected row data into the <literal>message</literal> "
+"attribute of the <literal>messageManager</literal> component. The action "
+"listener fires, marking the selected <literal>Message</literal> as read. At "
+"the end of the call, Seam outjects the selected <literal>Message</literal> "
+"to the context variable named <literal>message</literal>. Next, the EJB "
+"container commits the transaction, and the change to the <literal>Message</"
+"literal> is flushed to the database. Finally, the page is re-rendered, "
+"redisplaying the message list, and displaying the selected message below it."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:542
+#, no-c-format
+msgid ""
+"If the user clicks the <literal>&lt;h:commandButton&gt;</literal>, JSF calls "
+"the <literal>delete()</literal> action listener. Seam intercepts this call "
+"and injects the selected row data into the <literal>message</literal> "
+"attribute of the <literal>messageList</literal> component. The action "
+"listener fires, removing the selected <literal>Message</literal> from the "
+"list, and also calling <literal>remove()</literal> on the "
+"<literal>EntityManager</literal>. At the end of the call, Seam refreshes the "
+"<literal>messageList</literal> context variable and clears the context "
+"variable named <literal>message</literal>. The EJB container commits the "
+"transaction, and deletes the <literal>Message</literal> from the database. "
+"Finally, the page is re-rendered, redisplaying the message list."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:550
+#, no-c-format
+msgid "Seam and jBPM: the todo list example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:551
+#, no-c-format
+msgid ""
+"jBPM provides sophisticated functionality for workflow and task management. "
+"To get a small taste of how jBPM integrates with Seam, we'll show you a "
+"simple \"todo list\" application. Since managing lists of tasks is such core "
+"functionality for jBPM, there is hardly any Java code at all in this example."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:564
+#, no-c-format
+msgid ""
+"The center of this example is the jBPM process definition. There are also "
+"two JSPs and two trivial JavaBeans (There was no reason to use session "
+"beans, since they do not access the database, or have any other "
+"transactional behavior). Let's start with the process definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:575
+#, no-c-format
+msgid ""
+"&lt;process-definition name=\"todo\"&gt;\n"
+"   \n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"todo\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;task-node name=\"todo\"&gt;\n"
+"      &lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"         &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"      &lt;/task&gt;\n"
+"      &lt;transition to=\"done\"/&gt;\n"
+"   &lt;/task-node&gt;\n"
+"   \n"
+"   &lt;end-state name=\"done\"/&gt;\n"
+"   \n"
+"&lt;/process-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:578
+#, no-c-format
+msgid ""
+"The <literal>&lt;start-state&gt;</literal> node represents the logical start "
+"of the process. When the process starts, it immediately transitions to the "
+"<literal>todo</literal> node."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:583
+#, no-c-format
+msgid ""
+"The <literal>&lt;task-node&gt;</literal> node represents a <emphasis>wait "
+"state</emphasis>, where business process execution pauses, waiting for one "
+"or more tasks to be performed."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:588
+#, no-c-format
+msgid ""
+"The <literal>&lt;task&gt;</literal> element defines a task to be performed "
+"by a user. Since there is only one task defined on this node, when it is "
+"complete, execution resumes, and we transition to the end state. The task "
+"gets its description from a Seam component named <literal>todoList</literal> "
+"(one of the JavaBeans)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:593
+#, no-c-format
+msgid ""
+"Tasks need to be assigned to a user or group of users when they are created. "
+"In this case, the task is assigned to the current user, which we get from a "
+"built-in Seam component named <literal>actor</literal>. Any Seam component "
+"may be used to perform task assignment."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:598
+#, no-c-format
+msgid ""
+"The <literal>&lt;end-state&gt;</literal> node defines the logical end of the "
+"business process. When execution reaches this node, the process instance is "
+"destroyed."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:605
+#, no-c-format
+msgid ""
+"If we view this process definition using the process definition editor "
+"provided by JBossIDE, this is what it looks like:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:616
+#, no-c-format
+msgid ""
+"This document defines our <emphasis>business process</emphasis> as a graph "
+"of nodes. This is the most trivial possible business process: there is one "
+"<emphasis>task</emphasis> to be performed, and when that task is complete, "
+"the business process ends."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:619
+#, no-c-format
+msgid ""
+"The first JavaBean handles the login screen <literal>login.jsp</literal>. "
+"Its job is just to initialize the jBPM actor id using the <literal>actor</"
+"literal> component. (In a real application, it would also need to "
+"authenticate the user.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:622
+#, no-c-format
+msgid ""
+"@Name(\"login\")\n"
+"public class Login {\n"
+"   \n"
+"   @In\n"
+"   private Actor actor;\n"
+"   \n"
+"   private String user;\n"
+"\n"
+"   public String getUser() {\n"
+"      return user;\n"
+"   }\n"
+"\n"
+"   public void setUser(String user) {\n"
+"      this.user = user;\n"
+"   }\n"
+"   \n"
+"   public String login()\n"
+"   {\n"
+"      actor.setId(user);\n"
+"      return \"/todo.jsp\";\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:623
+#, no-c-format
+msgid ""
+"Here we see the use of <literal>@In</literal> to inject the built-in "
+"<literal>Actor</literal> component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:626
+#, no-c-format
+msgid "The JSP itself is trivial:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:629
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"&#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"&#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Login&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Login&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    &lt;h:form&gt;\n"
+"      &lt;div&gt;\n"
+"        &lt;h:inputText value=\"#{login.user}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Login\" action=\"#{login.login}\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"    &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:630
+#, no-c-format
+msgid ""
+"The second JavaBean is responsible for starting business process instances, "
+"and ending tasks."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:639
+#, no-c-format
+msgid ""
+"@Name(\"todoList\")\n"
+"public class TodoList {\n"
+"   \n"
+"   private String description;\n"
+"   \n"
+"   public String getDescription()\n"
+"   {\n"
+"      return description;\n"
+"   }\n"
+"\n"
+"   public void setDescription(String description) {\n"
+"      this.description = description;\n"
+"   }\n"
+"   \n"
+"   @CreateProcess(definition=\"todo\")\n"
+"   public void createTodo() {}\n"
+"   \n"
+"   @StartTask @EndTask\n"
+"   public void done() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:642
+#, no-c-format
+msgid ""
+"The description property accepts user input form the JSP page, and exposes "
+"it to the process definition, allowing the task description to be set."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:647
+#, no-c-format
+msgid ""
+"The Seam <literal>@CreateProcess</literal> annotation creates a new jBPM "
+"process instance for the named process definition."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:652
+#, no-c-format
+msgid ""
+"The Seam <literal>@StartTask</literal> annotation starts work on a task. The "
+"<literal>@EndTask</literal> ends the task, and allows the business process "
+"execution to resume."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:659
+#, no-c-format
+msgid ""
+"In a more realistic example, <literal>@StartTask</literal> and "
+"<literal>@EndTask</literal> would not appear on the same method, because "
+"there is usually work to be done using the application in order to complete "
+"the task."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:662
+#, no-c-format
+msgid "Finally, the meat of the application is in <literal>todo.jsp</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:665
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://jboss.com/products/seam/taglib\" prefix=\"s\" "
+"&#37;&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Todo List&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Todo List&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"   &lt;h:form id=\"list\"&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:outputText value=\"There are no todo items.\" rendered=\"#"
+"{empty \n"
+"             taskInstanceList}\"/&gt;\n"
+"         &lt;h:dataTable value=\"#{taskInstanceList}\" var=\"task\" rendered="
+"\"#{not empty taskInstanceList}\"&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Description\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.description}\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Created\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:outputText value=\"#{task.taskMgmtInstance."
+"processInstance.start}\"&gt;\n"
+"                    &lt;f:convertDateTime type=\"date\"/&gt;\n"
+"                &lt;/h:outputText&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Priority\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.priority}\" style=\"width: 30"
+"\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Due Date\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.dueDate}\" style=\"width: 100"
+"\"&gt;\n"
+"                    &lt;f:convertDateTime type=\"date\" dateStyle=\"short\"/"
+"&gt;\n"
+"                &lt;/h:inputText&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;s:button value=\"Done\" action=\"#{todoList.done}\" "
+"taskInstance=\"#{task}\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"         &lt;/h:dataTable&gt;\n"
+"      &lt;/div&gt;\n"
+"      &lt;div&gt;\n"
+"      &lt;h:messages/&gt;\n"
+"      &lt;/div&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:commandButton value=\"Update Items\" action=\"update\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"   &lt;h:form id=\"new\"&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:inputText value=\"#{todoList.description}\"/&gt;\n"
+"         &lt;h:commandButton value=\"Create New Item\" action=\"#{todoList."
+"createTodo}\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:666
+#, no-c-format
+msgid "Let's take this one piece at a time."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:669
+#, no-c-format
+msgid ""
+"The page renders a list of tasks, which it gets from a built-in Seam "
+"component named <literal>taskInstanceList</literal>. The list is defined "
+"inside a JSF form."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:672
+#, no-c-format
+msgid ""
+"&lt;h:form id=\"list\"&gt;\n"
+"   &lt;div&gt;\n"
+"      &lt;h:outputText value=\"There are no todo items.\" rendered=\"#{empty "
+"taskInstanceList}\"/&gt;\n"
+"      &lt;h:dataTable value=\"#{taskInstanceList}\" var=\"task\" rendered=\"#"
+"{not empty taskInstanceList}\"&gt;\n"
+"         ...\n"
+"      &lt;/h:dataTable&gt;\n"
+"   &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:673
+#, no-c-format
+msgid ""
+"Each element of the list is an instance of the jBPM class "
+"<literal>TaskInstance</literal>. The following code simply displays the "
+"interesting properties of each task in the list. For the description, "
+"priority and due date, we use input controls, to allow the user to update "
+"these values."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:676
+#, no-c-format
+msgid ""
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"       &lt;h:outputText value=\"Description\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.description}\"/&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Created\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:outputText value=\"#{task.taskMgmtInstance.processInstance.start}"
+"\"&gt;\n"
+"        &lt;f:convertDateTime type=\"date\"/&gt;\n"
+"    &lt;/h:outputText&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Priority\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.priority}\" style=\"width: 30\"/&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Due Date\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.dueDate}\" style=\"width: 100\"&gt;\n"
+"        &lt;f:convertDateTime type=\"date\" dateStyle=\"short\"/&gt;\n"
+"    &lt;/h:inputText&gt;\n"
+"&lt;/h:column&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:677
+#, no-c-format
+msgid ""
+"This button ends the task by calling the action method annotated "
+"<literal>@StartTask @EndTask</literal>. It passes the task id to Seam as a "
+"request parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:680
+#, no-c-format
+msgid ""
+"&lt;h:column&gt;\n"
+"    &lt;s:button value=\"Done\" action=\"#{todoList.done}\" taskInstance=\"#"
+"{task}\"/&gt;\n"
+"&lt;/h:column&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:681
+#, no-c-format
+msgid ""
+"(Note that this is using a Seam <literal>&lt;s:button&gt;</literal> JSF "
+"control from the <literal>seam-ui.jar</literal> package.)"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:684
+#, no-c-format
+msgid ""
+"This button is used to update the properties of the tasks. When the form is "
+"submitted, Seam and jBPM will make any changes to the tasks persistent. "
+"There is no need for any action listener method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:687
+#, no-c-format
+msgid "&lt;h:commandButton value=\"Update Items\" action=\"update\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:688
+#, no-c-format
+msgid ""
+"A second form on the page is used to create new items, by calling the action "
+"method annotated <literal>@CreateProcess</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:691
+#, no-c-format
+msgid ""
+"&lt;h:form id=\"new\"&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:inputText value=\"#{todoList.description}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Create New Item\" action=\"#{todoList."
+"createTodo}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:692
+#, no-c-format
+msgid ""
+"There are several other files needed for the example, but they are just "
+"standard jBPM and Seam configuration and not very interesting."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:699 Tutorial.xml:814 Tutorial.xml:1157 Tutorial.xml:1178
+#: Tutorial.xml:1191
+#, no-c-format
+msgid "TODO"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:707
+#, no-c-format
+msgid "Seam pageflow: the numberguess example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:708
+#, no-c-format
+msgid ""
+"For Seam applications with relatively freeform (ad hoc) navigation, JSF/Seam "
+"navigation rules are a perfectly good way to define the page flow. For "
+"applications with a more constrained style of navigation, especially for "
+"user interfaces which are more stateful, navigation rules make it difficult "
+"to really understand the flow of the system. To understand the flow, you "
+"need to piece it together from the view pages, the actions and the "
+"navigation rules."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:711
+#, no-c-format
+msgid ""
+"Seam allows you to use a jPDL process definition to define pageflow. The "
+"simple number guessing example shows how this is done."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:724
+#, no-c-format
+msgid ""
+"The example is implemented using one JavaBean, three JSP pages and a jPDL "
+"pageflow definition. Let's begin with the pageflow:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:734
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"numberGuess\"&gt;\n"
+"   \n"
+"   &lt;start-page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"          &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"      &lt;/transition&gt;\n"
+"   &lt;/start-page&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess."
+"correctGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateRemainingGuesses\" expression=\"#{numberGuess."
+"lastGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"lose\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"displayGuess\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"lose\" view-id=\"/lose.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:737
+#, no-c-format
+msgid ""
+"The <literal>&lt;page&gt;</literal> element defines a wait state where the "
+"system displays a particular JSF view and waits for user input. The "
+"<literal>view-id</literal> is the same JSF view id used in plain JSF "
+"navigation rules. The <literal>redirect</literal> attribute tells Seam to "
+"use post-then-redirect when navigating to the page. (This results in "
+"friendly browser URLs.)"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:742
+#, no-c-format
+msgid ""
+"The <literal>&lt;transition&gt;</literal> element names a JSF outcome. The "
+"transition is triggered when a JSF action results in that outcome. Execution "
+"will then proceed to the next node of the pageflow graph, after invocation "
+"of any jBPM transition actions."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:747
+#, no-c-format
+msgid ""
+"A transition <literal>&lt;action&gt;</literal> is just like a JSF action, "
+"except that it occurs when a jBPM transition occurs. The transition action "
+"can invoke any Seam component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:752
+#, no-c-format
+msgid ""
+"A <literal>&lt;decision&gt;</literal> node branches the pageflow, and "
+"determines the next node to execute by evaluating a JSF EL expression."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:759
+#, no-c-format
+msgid "Here is what the pageflow looks like in the JBossIDE pageflow editor:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:770
+#, no-c-format
+msgid ""
+"Now that we have seen the pageflow, it is very, very easy to understand the "
+"rest of the application!"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:773
+#, no-c-format
+msgid ""
+"Here is the main page of the application, <literal>numberGuess.jsp</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:776
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"&#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"&#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Guess a number...&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Guess a number...&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    &lt;h:form&gt;\n"
+"        &lt;h:outputText value=\"Higher!\" rendered=\"#{numberGuess."
+"randomNumber&gt;numberGuess.currentGuess}\" /&gt;\n"
+"        &lt;h:outputText value=\"Lower!\" rendered=\"#{numberGuess."
+"randomNumber&lt;numberGuess.currentGuess}\" /&gt;\n"
+"        &lt;br /&gt;\n"
+"        I'm thinking of a number between &lt;h:outputText value=\"#"
+"{numberGuess.smallest}\" /&gt; and \n"
+"        &lt;h:outputText value=\"#{numberGuess.biggest}\" /&gt;. You have \n"
+"        &lt;h:outputText value=\"#{numberGuess.remainingGuesses}\" /&gt; "
+"guesses.\n"
+"        &lt;br /&gt;\n"
+"        Your guess: \n"
+"        &lt;h:inputText value=\"#{numberGuess.currentGuess}\" id=\"guess\" "
+"required=\"true\"&gt;\n"
+"            &lt;f:validateLongRange\n"
+"                maximum=\"#{numberGuess.biggest}\" \n"
+"                minimum=\"#{numberGuess.smallest}\"/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"        &lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"guess"
+"\" /&gt;\n"
+"        &lt;br/&gt;\n"
+"        &lt;h:message for=\"guess\" style=\"color: red\"/&gt;\n"
+"    &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:777
+#, no-c-format
+msgid ""
+"Notice how the command button names the <literal>guess</literal> transition "
+"instead of calling an action directly."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:780
+#, no-c-format
+msgid "The <literal>win.jsp</literal> page is predictable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:783
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"&#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"&#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;You won!&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;You won!&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    Yes, the answer was &lt;h:outputText value=\"#{numberGuess.currentGuess}"
+"\" /&gt;.\n"
+"    It took you &lt;h:outputText value=\"#{numberGuess.guessCount}\" /&gt; "
+"guesses.\n"
+"    Would you like to &lt;a href=\"numberGuess.seam\"&gt;play again&lt;/"
+"a&gt;?\n"
+"  &lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:784
+#, no-c-format
+msgid ""
+"As is <literal>lose.jsp</literal> (which I can't be bothered copy/pasting). "
+"Finally, the JavaBean Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:792
+#, no-c-format
+msgid ""
+"@Name(\"numberGuess\")\n"
+"@Scope(ScopeType.CONVERSATION)\n"
+"public class NumberGuess {\n"
+"   \n"
+"   private int randomNumber;\n"
+"   private Integer currentGuess;\n"
+"   private int biggest;\n"
+"   private int smallest;\n"
+"   private int guessCount;\n"
+"   private int maxGuesses;\n"
+"   \n"
+"   @Create \n"
+"   @Begin(pageflow=\"numberGuess\")\n"
+"   public void begin()\n"
+"   {\n"
+"      randomNumber = new Random().nextInt(100);\n"
+"      guessCount = 0;\n"
+"      biggest = 100;\n"
+"      smallest = 1;\n"
+"   }\n"
+"   \n"
+"   public void setCurrentGuess(Integer guess)\n"
+"   {\n"
+"      this.currentGuess = guess;\n"
+"   }\n"
+"   \n"
+"   public Integer getCurrentGuess()\n"
+"   {\n"
+"      return currentGuess;\n"
+"   }\n"
+"   \n"
+"   public void guess()\n"
+"   {\n"
+"      if (currentGuess&gt;randomNumber)\n"
+"      {\n"
+"         biggest = currentGuess - 1;\n"
+"      }\n"
+"      if (currentGuess&lt;randomNumber)\n"
+"      {\n"
+"         smallest = currentGuess + 1;\n"
+"      }\n"
+"      guessCount ++;\n"
+"   }\n"
+"   \n"
+"   public boolean isCorrectGuess()\n"
+"   {\n"
+"      return currentGuess==randomNumber;\n"
+"   }\n"
+"   \n"
+"   public int getBiggest()\n"
+"   {\n"
+"      return biggest;\n"
+"   }\n"
+"   \n"
+"   public int getSmallest()\n"
+"   {\n"
+"      return smallest;\n"
+"   }\n"
+"   \n"
+"   public int getGuessCount()\n"
+"   {\n"
+"      return guessCount;\n"
+"   }\n"
+"   \n"
+"   public boolean isLastGuess()\n"
+"   {\n"
+"      return guessCount==maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getRemainingGuesses() {\n"
+"      return maxGuesses-guessCount;\n"
+"   }\n"
+"\n"
+"   public void setMaxGuesses(int maxGuesses) {\n"
+"      this.maxGuesses = maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getMaxGuesses() {\n"
+"      return maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getRandomNumber() {\n"
+"      return randomNumber;\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:795
+#, no-c-format
+msgid ""
+"The first time a JSP page asks for a <literal>numberGuess</literal> "
+"component, Seam will create a new one for it, and the <literal>@Create</"
+"literal> method will be invoked, allowing the component to initialize itself."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:800
+#, no-c-format
+msgid ""
+"The <literal>@Begin</literal> annotation starts a Seam "
+"<emphasis>conversation</emphasis> (much more about that later), and "
+"specifies the pageflow definition to use for the conversation's page flow."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:807
+#, no-c-format
+msgid ""
+"As you can see, this Seam component is pure business logic! It doesn't need "
+"to know anything at all about the user interaction flow. This makes the "
+"component potentially more reuseable."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:822
+#, no-c-format
+msgid "A complete Seam application: the Hotel Booking example"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:824
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:825
+#, no-c-format
+msgid ""
+"The booking application is a complete hotel room reservation system "
+"incorporating the following features:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:830
+#, no-c-format
+msgid "User registration"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:835
+#, no-c-format
+msgid "Login"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:840
+#, no-c-format
+msgid "Logout"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:845
+#, no-c-format
+msgid "Set password"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:850
+#, no-c-format
+msgid "Hotel search"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:855
+#, no-c-format
+msgid "Hotel selection"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:860
+#, no-c-format
+msgid "Room reservation"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:865
+#, no-c-format
+msgid "Reservation confirmation"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:870
+#, no-c-format
+msgid "Existing reservation list"
+msgstr ""
+
+#. Tag: screeninfo
+#: Tutorial.xml:875
+#, no-c-format
+msgid "Booking example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:883
+#, no-c-format
+msgid ""
+"The booking application uses JSF, EJB 3.0 and Seam, together with Facelets "
+"for the view. There is also a port of this application to JSF, Facelets, "
+"Seam, JavaBeans and Hibernate3."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:886
+#, no-c-format
+msgid ""
+"One of the things you'll notice if you play with this application for long "
+"enough is that it is extremely <emphasis>robust</emphasis>. You can play "
+"with back buttons and browser refresh and opening multiple windows and "
+"entering nonsensical data as much as you like and you will find it very "
+"difficult to make the application crash. You might think that we spent weeks "
+"testing and fixing bugs to achive this. Actually, this is not the case. Seam "
+"was designed to make it very straightforward to build robust web "
+"applications and a lot of robustness that you are probably used to having to "
+"code yourself comes naturally and automatically with Seam."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:889
+#, no-c-format
+msgid ""
+"As you browse the sourcecode of the example application, and learn how the "
+"application works, observe how the declarative state management and "
+"integrated validation has been used to achieve this robustness."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:895
+#, no-c-format
+msgid "Overview of the booking example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:896
+#, no-c-format
+msgid ""
+"The project structure is identical to the previous one, to install and "
+"deploy this application, please refer to <xref linkend=\"Seam_Tutorial-"
+"Try_the_examples\"/>. Once you've successfully started the application, you "
+"can access it by pointing your browser to <ulink url=\"http://localhost:8080/"
+"seam-booking/\"><literal>http://localhost:8080/seam-booking/</literal></"
+"ulink>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:899
+#, no-c-format
+msgid ""
+"Just ten classes (plus six session beans local interfaces and 1 annotation "
+"interface) where used to implement this application. Six session bean action "
+"listeners contain all the business logic for the listed features."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:904
+#, no-c-format
+msgid ""
+"<literal>BookingListAction</literal> retrieves existing bookings for the "
+"currently logged in user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:907
+#, no-c-format
+msgid ""
+"<literal>ChangePasswordAction</literal> updates the password of the "
+"currently logged in user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:910
+#, no-c-format
+msgid ""
+"<literal>HotelBookingAction</literal> implements the core functionality of "
+"the application: hotel room searching, selection, booking and booking "
+"confirmation. This functionality is implemented as a <emphasis>conversation</"
+"emphasis>, so this is the most interesting class in the application."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:913
+#, no-c-format
+msgid ""
+"<literal>LoginAction</literal> validates the login details and retrieves the "
+"logged in user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:916
+#, no-c-format
+msgid "<literal>LogoutAction</literal> ends the login session."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:919
+#, no-c-format
+msgid "<literal>RegisterAction</literal> registers a new system user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:922
+#, no-c-format
+msgid "Three entity beans implement the application's persistent domain model."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:927
+#, no-c-format
+msgid "<literal>Hotel</literal> is an entity bean that represent a hotel"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:930
+#, no-c-format
+msgid ""
+"<literal>Booking</literal> is an entity bean that represents an existing "
+"booking"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:933
+#, no-c-format
+msgid ""
+"<literal>User</literal> is an entity bean to represents a user who can make "
+"hotel bookings"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:936
+#, no-c-format
+msgid ""
+"Finally, the <literal>LoggedIn</literal> annotation and the "
+"<literal>LoggedInInterceptor</literal> are used to protect actions that "
+"require a logged in user."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:942
+#, no-c-format
+msgid "Understanding Seam conversations"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:943
+#, no-c-format
+msgid ""
+"We encourage you browse the sourcecode at your pleasure. In this tutorial "
+"we'll concentrate upon one particular piece of functionality: hotel search, "
+"selection, booking and confirmation. From the point of view of the user, "
+"everything from selecting a hotel to confirming a booking is one continuous "
+"unit of work, a <emphasis>conversation</emphasis>. Searching, however, is "
+"<emphasis>not</emphasis> part of the conversation. The user can select "
+"multiple hotels from the same search results page, in different browser tabs."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:946
+#, no-c-format
+msgid ""
+"Most web application architectures have no first class construct to "
+"represent a conversation. This causes enormous problems managing state "
+"associated with the conversation. Usually, Java web applications use a "
+"combination of two techniques: first, some state is thrown into the "
+"<literal>HttpSession</literal>; second, persistable state is flushed to the "
+"database after every request, and reconstructed from the database at the "
+"beginning of each new request."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:949
+#, no-c-format
+msgid ""
+"Since the database is the least scalable tier, this often results in an "
+"utterly unacceptable lack of scalability. Added latency is also a problem, "
+"due to the extra traffic to and from the database on every request. To "
+"reduce this redundant traffic, Java applications often introduce a data "
+"(second-level) cache that keeps commonly accessed data between requests. "
+"This cache is necessarily inefficient, because invalidation is based upon an "
+"LRU policy instead of being based upon when the user has finished working "
+"with the data. Furthermore, because the cache is shared between many "
+"concurrent transactions, we've introduced a whole raft of problem's "
+"associated with keeping the cached state consistent with the database."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:952
+#, no-c-format
+msgid ""
+"Now consider the state held in the <literal>HttpSession</literal>. By very "
+"careful programming, we might be able to control the size of the session "
+"data. This is a lot more difficult than it sounds, since web browsers permit "
+"ad hoc non-linear navigation. But suppose we suddenly discover a system "
+"requirement that says that a user is allowed to have <emphasis>mutiple "
+"concurrent conversations</emphasis>, halfway through the development of the "
+"system (this has happened to me). Developing mechanisms to isolate session "
+"state associated with different concurrent conversations, and incorporating "
+"failsafes to ensure that conversation state is destroyed when the user "
+"aborts one of the conversations by closing a browser window or tab is not "
+"for the faint hearted (I've implemented this stuff twice so far, once for a "
+"client application, once for Seam, but I'm famously psychotic)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:955
+#, no-c-format
+msgid "Now there is a better way."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:958
+#, no-c-format
+msgid ""
+"Seam introduces the <emphasis>conversation context</emphasis> as a first "
+"class construct. You can safely keep conversational state in this context, "
+"and be assured that it will have a well-defined lifecycle. Even better, you "
+"won't need to be continually pushing data back and forth between the "
+"application server and the database, since the conversation context is a "
+"natural cache of data that the user is currently working with."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:961
+#, no-c-format
+msgid ""
+"Usually, the components we keep in the conversation context are stateful "
+"session beans. (We can also keep entity beans and JavaBeans in the "
+"conversation context.) There is an ancient canard in the Java community that "
+"stateful session beans are a scalability killer. This may have been true in "
+"1998 when WebFoobar 1.0 was released. It is no longer true today. "
+"Application servers like JBoss 4.0 have extremely sophisticated mechanisms "
+"for stateful session bean state replication. (For example, the JBoss EJB3 "
+"container performs fine-grained replication, replicating only those bean "
+"attribute values which actually changed.) Note that all the traditional "
+"technical arguments for why stateful beans are inefficient apply equally to "
+"the <literal>HttpSession</literal>, so the practice of shifting state from "
+"business tier stateful session bean components to the web session to try and "
+"improve performance is unbelievably misguided. It is certainly possible to "
+"write unscalable applications using stateful session beans, by using "
+"stateful beans incorrectly, or by using them for the wrong thing. But that "
+"doesn't mean you should <emphasis>never</emphasis> use them. Anyway, Seam "
+"guides you toward a safe usage model. Welcome to 2005."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:964
+#, no-c-format
+msgid "OK, I'll stop ranting now, and get back to the tutorial."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:967
+#, no-c-format
+msgid ""
+"The booking example application shows how stateful components with different "
+"scopes can collaborate together to achieve complex behaviors. The main page "
+"of the booking application allows the user to search for hotels. The search "
+"results are kept in the Seam session scope. When the user navigates to one "
+"of these hotels, a conversation begins, and a conversation scoped component "
+"calls back to the session scoped component to retrieve the selected hotel."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:970
+#, no-c-format
+msgid ""
+"The booking example also demonstrates the use of Ajax4JSF to implement rich "
+"client behavior without the use of handwritten JavaScript."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:973
+#, no-c-format
+msgid ""
+"The search functionality is implemented using a session-scope stateful "
+"session bean, similar to the one we saw in the message list example above."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:983
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"hotelSearch\")\n"
+"@Scope(ScopeType.SESSION)\n"
+"@LoggedIn\n"
+"public class HotelSearchingAction implements HotelSearching\n"
+"{\n"
+"   \n"
+"   @PersistenceContext\n"
+"   private EntityManager em;\n"
+"   \n"
+"   private String searchString;\n"
+"   private int pageSize = 10;\n"
+"   private int page;\n"
+"   \n"
+"   @DataModel\n"
+"   private List&lt;Hotel&gt; hotels;\n"
+"   \n"
+"   public String find()\n"
+"   {\n"
+"      page = 0;\n"
+"      queryHotels();   \n"
+"      return \"main\";\n"
+"   }\n"
+"\n"
+"   public String nextPage()\n"
+"   {\n"
+"      page++;\n"
+"      queryHotels();\n"
+"      return \"main\";\n"
+"   }\n"
+"      \n"
+"   private void queryHotels()\n"
+"   {\n"
+"      String searchPattern = searchString==null ? \"&#37;\" : '&#37;' + \n"
+"          searchString.toLowerCase().replace('*', '&#37;') + '&#37;';\n"
+"      hotels = em.createQuery(\"select h from Hotel h where lower(h.name) "
+"like\n"
+"          :search or lower(h.city) like :search \n"
+"          or lower(h.zip) like :search or lower(h.address) like :search\")\n"
+"            .setParameter(\"search\", searchPattern)\n"
+"            .setMaxResults(pageSize)\n"
+"            .setFirstResult( page * pageSize )\n"
+"            .getResultList();\n"
+"   }\n"
+"   \n"
+"   public boolean isNextPageAvailable()\n"
+"   {\n"
+"      return hotels!=null &amp;&amp; hotels.size()==pageSize;\n"
+"   }\n"
+"   \n"
+"   public int getPageSize() {\n"
+"      return pageSize;\n"
+"   }\n"
+"\n"
+"   public void setPageSize(int pageSize) {\n"
+"      this.pageSize = pageSize;\n"
+"   }\n"
+"\n"
+"   public String getSearchString()\n"
+"   {\n"
+"      return searchString;\n"
+"   }\n"
+"\n"
+"   public void setSearchString(String searchString)\n"
+"   {\n"
+"      this.searchString = searchString;\n"
+"   }\n"
+"   \n"
+"   @Destroy @Remove\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:986
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Stateful</literal> annotation identifies this "
+"class as a stateful session bean. Stateful session beans are scoped to the "
+"conversation context by default."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:991
+#, no-c-format
+msgid ""
+"The <literal>@LoggedIn</literal> annotation applies a custom Seam "
+"interceptor to the component. This works because <literal>@LoggedIn</"
+"literal> is marked with an <literal>@Interceptor</literal> meta-annotation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:996
+#, no-c-format
+msgid ""
+"The <link linkend=\"datamodel-annotation\"><literal>@DataModel</literal></"
+"link> annotation exposes a <literal>List</literal> as a JSF "
+"<literal>ListDataModel</literal>. This makes it easy to implement clickable "
+"lists for search screens. In this case, the list of hotels is exposed to the "
+"page as a <literal>ListDataModel</literal> in the conversation variable "
+"named <literal>hotels</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1001
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Remove</literal> annotation specifies that a "
+"stateful session bean should be removed and its state destroyed after "
+"invocation of the annotated method. In Seam, all stateful session beans "
+"should define a method marked <literal>@Destroy @Remove</literal>. This is "
+"the EJB remove method that will be called when Seam destroys the session "
+"context. Actually, the <link linkend=\"destroy-annotation"
+"\"><literal>@Destroy</literal></link> annotation is of more general "
+"usefulness, since it can be used for any kind of cleanup that should happen "
+"when any Seam context ends. If you don't have an <literal>@Destroy @Remove</"
+"literal> method, state will leak and you will suffer performance problems."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1008
+#, no-c-format
+msgid ""
+"The main page of the application is a Facelets page. Let's look at the "
+"fragment which relates to searching for hotels:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1018
+#, no-c-format
+msgid ""
+"&lt;div class=\"section\"&gt;\n"
+"&lt;h:form&gt;\n"
+"  \n"
+"  &lt;span class=\"errors\"&gt;\n"
+"    &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"  &lt;/span&gt;\n"
+"    \n"
+"  &lt;h1&gt;Search Hotels&lt;/h1&gt;\n"
+"  &lt;fieldset&gt; \n"
+"     &lt;h:inputText value=\"#{hotelSearch.searchString}\" style=\"width: "
+"165px;\"&gt;\n"
+"        &lt;a:support event=\"onkeyup\" actionListener=\"#{hotelSearch.find}"
+"\" \n"
+"                   reRender=\"searchResults\" /&gt;\n"
+"     &lt;/h:inputText&gt;\n"
+"     &amp;#160;\n"
+"     &lt;a:commandButton value=\"Find Hotels\" action=\"#{hotelSearch.find}"
+"\" \n"
+"                      styleClass=\"button\" reRender=\"searchResults\"/&gt;\n"
+"     &amp;#160;\n"
+"     &lt;a:status&gt;\n"
+"        &lt;f:facet name=\"start\"&gt;\n"
+"           &lt;h:graphicImage value=\"/img/spinner.gif\"/&gt;\n"
+"        &lt;/f:facet&gt;\n"
+"     &lt;/a:status&gt;\n"
+"     &lt;br/&gt;\n"
+"     &lt;h:outputLabel for=\"pageSize\"&gt;Maximum results:&lt;/h:"
+"outputLabel&gt;&amp;#160;\n"
+"     &lt;h:selectOneMenu value=\"#{hotelSearch.pageSize}\" id=\"pageSize"
+"\"&gt;\n"
+"        &lt;f:selectItem itemLabel=\"5\" itemValue=\"5\"/&gt;\n"
+"        &lt;f:selectItem itemLabel=\"10\" itemValue=\"10\"/&gt;\n"
+"        &lt;f:selectItem itemLabel=\"20\" itemValue=\"20\"/&gt;\n"
+"     &lt;/h:selectOneMenu&gt;\n"
+"  &lt;/fieldset&gt;\n"
+"    \n"
+"&lt;/h:form&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;a:outputPanel id=\"searchResults\"&gt;\n"
+"  &lt;div class=\"section\"&gt;\n"
+"  &lt;h:outputText value=\"No Hotels Found\" \n"
+"                rendered=\"#{hotels != null and hotels.rowCount==0}\"/&gt;\n"
+"  &lt;h:dataTable value=\"#{hotels}\" var=\"hot\" rendered=\"#{hotels."
+"rowCount&gt;0}\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Name&lt;/f:facet&gt;\n"
+"      #{hot.name}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Address&lt;/f:facet&gt;\n"
+"      #{hot.address}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;City, State&lt;/f:facet&gt;\n"
+"      #{hot.city}, #{hot.state}, #{hot.country}\n"
+"    &lt;/h:column&gt; \n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Zip&lt;/f:facet&gt;\n"
+"      #{hot.zip}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"      &lt;s:link value=\"View Hotel\" action=\"#{hotelBooking.selectHotel"
+"(hot)}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"  &lt;/h:dataTable&gt;\n"
+"  &lt;s:link value=\"More results\" action=\"#{hotelSearch.nextPage}\" \n"
+"          rendered=\"#{hotelSearch.nextPageAvailable}\"/&gt;\n"
+"  &lt;/div&gt;\n"
+"&lt;/a:outputPanel&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1021
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:support&gt;</literal> tag allows a JSF action "
+"event listener to be called by asynchronous <literal>XMLHttpRequest</"
+"literal> when a JavaScript event like <literal>onkeyup</literal> occurs. "
+"Even better, the <literal>reRender</literal> attribute lets us render a "
+"fragment of the JSF page and perform a partial page update when the "
+"asynchronous response is received."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1026
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:status&gt;</literal> tag lets us display a "
+"cheesy annimated image while we wait for asynchronous requests to return."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1031
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:outputPanel&gt;</literal> tag defines a region "
+"of the page which can be re-rendered by an asynchronous request."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1036
+#, no-c-format
+msgid ""
+"The Seam <literal>&lt;s:link&gt;</literal> tag lets us attach a JSF action "
+"listener to an ordinary (non-JavaScript) HTML link. The advantage of this "
+"over the standard JSF <literal>&lt;h:commandLink&gt;</literal> is that it "
+"preserves the operation of \"open in new window\" and \"open in new tab\". "
+"Also notice that we use a method binding with a parameter: <literal>#"
+"{hotelBooking.selectHotel(hot)}</literal>. This is not possible in the "
+"standard Unified EL, but Seam provides an extension to the EL that lets you "
+"use parameters on any method binding expression."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1043
+#, no-c-format
+msgid ""
+"This page displays the search results dynamically as we type, and lets us "
+"choose a hotel and pass it to the <literal>selectHotel()</literal> method of "
+"the <literal>HotelBookingAction</literal>, which is where the "
+"<emphasis>really</emphasis> interesting stuff is going to happen."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1046
+#, no-c-format
+msgid ""
+"Now lets see how the booking example application uses a conversation-scoped "
+"stateful session bean to achieve a natural cache of persistent data related "
+"to the conversation. The following code example is pretty long. But if you "
+"think of it as a list of scripted actions that implement the various steps "
+"of the conversation, it's understandable. Read the class from top to bottom, "
+"as if it were a story."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1057
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"hotelBooking\")\n"
+"@LoggedIn\n"
+"public class HotelBookingAction implements HotelBooking\n"
+"{\n"
+"   \n"
+"   @PersistenceContext(type=EXTENDED)\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @In \n"
+"   private User user;\n"
+"   \n"
+"   @In(required=false) @Out\n"
+"   private Hotel hotel;\n"
+"   \n"
+"   @In(required=false) \n"
+"   @Out(required=false)\n"
+"   private Booking booking;\n"
+"     \n"
+"   @In\n"
+"   private FacesMessages facesMessages;\n"
+"      \n"
+"   @In\n"
+"   private Events events;\n"
+"   \n"
+"   @Logger \n"
+"   private Log log;\n"
+"   \n"
+"   @Begin\n"
+"   public String selectHotel(Hotel selectedHotel)\n"
+"   {\n"
+"      hotel = em.merge(selectedHotel);\n"
+"      return \"hotel\";\n"
+"   }\n"
+"   \n"
+"   public String bookHotel()\n"
+"   {      \n"
+"      booking = new Booking(hotel, user);\n"
+"      Calendar calendar = Calendar.getInstance();\n"
+"      booking.setCheckinDate( calendar.getTime() );\n"
+"      calendar.add(Calendar.DAY_OF_MONTH, 1);\n"
+"      booking.setCheckoutDate( calendar.getTime() );\n"
+"      \n"
+"      return \"book\";\n"
+"   }\n"
+"\n"
+"   public String setBookingDetails()\n"
+"   {\n"
+"      if (booking==null || hotel==null) return \"main\";\n"
+"      if ( !booking.getCheckinDate().before( booking.getCheckoutDate() ) )\n"
+"      {\n"
+"         facesMessages.add(\"Check out date must be later than check in date"
+"\");\n"
+"         return null;\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return \"confirm\";\n"
+"      }\n"
+"   }\n"
+"\n"
+"   @End\n"
+"   public String confirm()\n"
+"   {\n"
+"      if (booking==null || hotel==null) return \"main\";\n"
+"      em.persist(booking);\n"
+"      facesMessages.add\n"
+"          (\"Thank you, #{user.name}, your confimation number for #{hotel."
+"name} is #{booking.id}\");\n"
+"      log.info(\"New booking: #{booking.id} for #{user.username}\");\n"
+"      events.raiseEvent(\"bookingConfirmed\");\n"
+"      return \"confirmed\";\n"
+"   }\n"
+"   \n"
+"   @End\n"
+"   public String cancel()\n"
+"   {\n"
+"      return \"main\";\n"
+"   }\n"
+"   \n"
+"   @Destroy @Remove\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1060
+#, no-c-format
+msgid ""
+"This bean uses an EJB3 <emphasis>extended persistence context</emphasis>, so "
+"that any entity instances remain managed for the whole lifecycle of the "
+"stateful session bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1065
+#, no-c-format
+msgid ""
+"The <link linkend=\"out-annotation\"><literal>@Out</literal></link> "
+"annotation declares that an attribute value is <emphasis>outjected</"
+"emphasis> to a context variable after method invocations. In this case, the "
+"context variable named <literal>hotel</literal> will be set to the value of "
+"the <literal>hotel</literal> instance variable after every action listener "
+"invocation completes."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1070
+#, no-c-format
+msgid ""
+"The <link linkend=\"begin-annotation\"><literal>@Begin</literal></link> "
+"annotation specifies that the annotated method begins a <emphasis>long-"
+"running conversation</emphasis>, so the current conversation context will "
+"not be destroyed at the end of the request. Instead, it will be reassociated "
+"with every request from the current window, and destroyed either by timeout "
+"due to conversation inactivity or invocation of a matching <literal>@End</"
+"literal> method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1075
+#, no-c-format
+msgid ""
+"The <link linkend=\"end-annotation\"><literal>@End</literal></link> "
+"annotation specifies that the annotated method ends the current long-running "
+"conversation, so the current conversation context will be destroyed at the "
+"end of the request."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1080
+#, no-c-format
+msgid ""
+"This EJB remove method will be called when Seam destroys the conversation "
+"context. Don't ever forget to define this method!"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1087
+#, no-c-format
+msgid ""
+"<literal>HotelBookingAction</literal> contains all the action listener "
+"methods that implement selection, booking and booking confirmation, and "
+"holds state related to this work in its instance variables. We think you'll "
+"agree that this code is much cleaner and simpler than getting and setting "
+"<literal>HttpSession</literal> attributes."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1090
+#, no-c-format
+msgid ""
+"Even better, a user can have multiple isolated conversations per login "
+"session. Try it! Log in, run a search, and navigate to different hotel pages "
+"in multiple browser tabs. You'll be able to work on creating two different "
+"hotel reservations at the same time. If you leave any one conversation "
+"inactive for long enough, Seam will eventually time out that conversation "
+"and destroy its state. If, after ending a conversation, you backbutton to a "
+"page of that conversation and try to perform an action, Seam will detect "
+"that the conversation was already ended, and redirect you to the search page."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1096
+#, no-c-format
+msgid "The Seam UI control library"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1097
+#, no-c-format
+msgid ""
+"If you check inside the WAR file for the booking application, you'll find "
+"<literal>seam-ui.jar</literal> in the <literal>WEB-INF/lib</literal> "
+"directory. This package contains a number of JSF custom controls that "
+"integrate with Seam. The booking application uses the <literal>&lt;s:link&gt;"
+"</literal> control for navigation from the search screen to the hotel page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1100
+#, no-c-format
+msgid ""
+"&lt;s:link value=\"View Hotel\" action=\"#{hotelBooking.selectHotel}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1101
+#, no-c-format
+msgid ""
+"The use of <literal>&lt;s:link&gt;</literal> here allows us to attach an "
+"action listener to a HTML link without breaking the browser's \"open in new "
+"window\" feature. The standard JSF <literal>&lt;h:commandLink&gt;</literal> "
+"does not work with \"open in new window\". We'll see later that <literal>&lt;"
+"s:link&gt;</literal> also offers a number of other useful features, "
+"including conversation propagation rules."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1104
+#, no-c-format
+msgid ""
+"The booking application uses some other Seam and Ajax4JSF controls, "
+"especially on the <literal>/book.xhtml</literal> page. We won't get into the "
+"details of those controls here, but if you want to understand this code, "
+"please refer to the chapter covering Seam's functionality for JSF form "
+"validation."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1110
+#, no-c-format
+msgid "The Seam Debug Page"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1111
+#, no-c-format
+msgid ""
+"The WAR also includes <literal>seam-debug.jar</literal>. If this jar is "
+"deployed in <literal>WEB-INF/lib</literal>, along with the Facelets, and if "
+"you set the following Seam property in <literal>web.xml</literal> or "
+"<literal>seam.properties</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1114
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;org.jboss.seam.core.init.debug&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;true&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1115
+#, no-c-format
+msgid ""
+"Then the Seam debug page will be available. This page lets you browse and "
+"inspect the Seam components in any of the Seam contexts associated with your "
+"current login session. Just point your browser at <ulink url=\"http://"
+"localhost:8080/seam-booking/debug.seam\"><literal>http://localhost:8080/seam-"
+"booking/debug.seam</literal></ulink>."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1131
+#, no-c-format
+msgid "A complete application featuring Seam and jBPM: the DVD Store example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1132
+#, no-c-format
+msgid ""
+"The DVD Store demo application shows the practical usage of jBPM for both "
+"task management and pageflow."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1135
+#, no-c-format
+msgid ""
+"The user screens take advantage of a jPDL pageflow to implement searching "
+"and shopping cart functionality."
+msgstr ""
+
+#. Tag: screeninfo
+#: Tutorial.xml:1138 Tutorial.xml:1149 Tutorial.xml:1170
+#, no-c-format
+msgid "DVD Store example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1146
+#, no-c-format
+msgid ""
+"The administration screens take use jBPM to manage the approval and shipping "
+"cycle for orders. The business process may even be changed dynamically, by "
+"selecting a different process definition!"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1160
+#, no-c-format
+msgid "Look in the <literal>dvdstore</literal> directory."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1166
+#, no-c-format
+msgid ""
+"A complete application featuring Seam workspace management: the Issue "
+"Tracker example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1167
+#, no-c-format
+msgid ""
+"The Issue Tracker demo shows off Seam's workspace management functionality: "
+"the conversation switcher, conversation list and breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1181
+#, no-c-format
+msgid "Look in the <literal>issues</literal> directory."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1187
+#, no-c-format
+msgid "An example of Seam with Hibernate: the Hibernate Booking example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1188
+#, no-c-format
+msgid ""
+"The Hibernate Booking demo is a straight port of the Booking demo to an "
+"alternative architecture that uses Hibernate for persistence and JavaBeans "
+"instead of session beans."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1194
+#, no-c-format
+msgid "Look in the <literal>hibernate</literal> directory."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1200
+#, no-c-format
+msgid "A RESTful Seam application: the Blog example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1201
+#, no-c-format
+msgid ""
+"Seam makes it very easy to implement applications which keep state on the "
+"server-side. However, server-side state is not always appropriate, "
+"especially in for functionality that serves up <emphasis>content</emphasis>. "
+"For this kind of problem we often need to let the user bookmark pages and "
+"have a relatively stateless server, so that any page can be accessed at any "
+"time, via the bookmark. The Blog example shows how to a implement RESTful "
+"application using Seam. Every page of the application can be bookmarked, "
+"including the search results page."
+msgstr ""
+
+#. Tag: screeninfo
+#: Tutorial.xml:1204
+#, no-c-format
+msgid "Blog example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1212
+#, no-c-format
+msgid ""
+"The Blog example demonstrates the use of \"pull\"-style MVC, where instead "
+"of using action listener methods to retrieve data and prepare the data for "
+"the view, the view pulls data from components as it is being rendered."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1216
+#, no-c-format
+msgid "Using \"pull\"-style MVC"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1217
+#, no-c-format
+msgid ""
+"This snippet from the <literal>index.xhtml</literal> facelets page displays "
+"a list of recent blog entries:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1220
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{blog.recentBlogEntries}\" var=\"blogEntry\" rows="
+"\"3\"&gt;\n"
+"   &lt;h:column&gt;\n"
+"      &lt;div class=\"blogEntry\"&gt;\n"
+"         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"         &lt;div&gt;\n"
+"            &lt;h:outputText escape=\"false\" \n"
+"                  value=\"#{blogEntry.excerpt==null ? blogEntry.body : "
+"blogEntry.excerpt}\"/&gt;\n"
+"         &lt;/div&gt;\n"
+"         &lt;p&gt;\n"
+"            &lt;h:outputLink value=\"entry.seam\" rendered=\"#{blogEntry."
+"excerpt!=null}\"&gt;\n"
+"               &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/"
+"&gt;\n"
+"               Read more...\n"
+"            &lt;/h:outputLink&gt;\n"
+"         &lt;/p&gt;\n"
+"         &lt;p&gt;\n"
+"            [Posted on \n"
+"            &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"               &lt;f:convertDateTime timeZone=\"#{blog.timeZone}\" locale=\"#"
+"{blog.locale}\" \n"
+"                   type=\"both\"/&gt;\n"
+"            &lt;/h:outputText&gt;]\n"
+"            &amp;#160;\n"
+"            &lt;h:outputLink value=\"entry.seam\"&gt;[Link]\n"
+"               &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/"
+"&gt;\n"
+"            &lt;/h:outputLink&gt;\n"
+"         &lt;/p&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1221
+#, no-c-format
+msgid ""
+"If we navigate to this page from a bookmark, how does the data used by the "
+"<literal>&lt;h:dataTable&gt;</literal> actually get initialized? Well, what "
+"happens is that the <literal>Blog</literal> is retrieved lazily&mdash;"
+"\"pulled\"&mdash;when needed, by a Seam component named <literal>blog</"
+"literal>. This is the opposite flow of control to what is usual in "
+"traditional web action-based frameworks like Struts."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1229
+#, no-c-format
+msgid ""
+"@Name(\"blog\")\n"
+"@Scope(ScopeType.STATELESS)\n"
+"public class BlogService \n"
+"{\n"
+"   \n"
+"   @In\n"
+"   private EntityManager entityManager;\n"
+"  \n"
+"   @Unwrap\n"
+"   public Blog getBlog()\n"
+"   {\n"
+"      return (Blog) entityManager.createQuery(\"from Blog b left join fetch "
+"b.blogEntries\")\n"
+"            .setHint(\"org.hibernate.cacheable\", true)\n"
+"            .getSingleResult();\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1232
+#, no-c-format
+msgid ""
+"This component uses a <emphasis>seam-managed persistence context</emphasis>. "
+"Unlike the other examples we've seen, this persistence context is managed by "
+"Seam, instead of by the EJB3 container. The persistence context spans the "
+"entire web request, allowing us to avoid any exceptions that occur when "
+"accessing unfetched associations in the view."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1237
+#, no-c-format
+msgid ""
+"The <literal>@Unwrap</literal> annotation tells Seam to provide the return "
+"value of the method&mdash;the <literal>Blog</literal>&mdash;instead of the "
+"actual <literal>BlogService</literal> component to clients. This is the Seam "
+"<emphasis>manager component pattern</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1244
+#, no-c-format
+msgid ""
+"This is good so far, but what about bookmarking the result of form "
+"submissions, such as a search results page?"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1250
+#, no-c-format
+msgid "Bookmarkable search results page"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1251
+#, no-c-format
+msgid ""
+"The blog example has a tiny form in the top right of each page that allows "
+"the user to search for blog entries. This is defined in a file, "
+"<literal>menu.xhtml</literal>, included by the facelets template, "
+"<literal>template.xhtml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1254
+#, no-c-format
+msgid ""
+"&lt;div id=\"search\"&gt;\n"
+"   &lt;h:form&gt;\n"
+"      &lt;h:inputText value=\"#{searchAction.searchPattern}\"/&gt;\n"
+"      &lt;h:commandButton value=\"Search\" action=\"/search.xhtml\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1255
+#, no-c-format
+msgid ""
+"To implement a bookmarkable search results page, we need to perform a "
+"browser redirect after processing the search form submission. Because we "
+"used the JSF view id as the action outcome, Seam automatically redirects to "
+"the view id when the form is submitted. Alternatively, we could have defined "
+"a navigation rule like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1258
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"   &lt;navigation-case&gt;\n"
+"      &lt;from-outcome&gt;searchResults&lt;/from-outcome&gt;\n"
+"      &lt;to-view-id&gt;/search.xhtml&lt;/to-view-id&gt;\n"
+"      &lt;redirect/&gt;\n"
+"   &lt;/navigation-case&gt;\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1259
+#, no-c-format
+msgid "Then the form would have looked like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1262
+#, no-c-format
+msgid ""
+"&lt;div id=\"search\"&gt;\n"
+"   &lt;h:form&gt;\n"
+"      &lt;h:inputText value=\"#{searchAction.searchPattern}\"/&gt;\n"
+"      &lt;h:commandButton value=\"Search\" action=\"searchResults\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1263
+#, no-c-format
+msgid ""
+"But when we redirect, we need to include the values submitted with the form "
+"as request parameters, to get a bookmarkable URL like <literal>http://"
+"localhost:8080/seam-blog/search.seam?searchPattern=seam</literal>. JSF does "
+"not provide an easy way to do this, but Seam does. We use a Seam "
+"<emphasis>page parameter</emphasis>, defined in <literal>WEB-INF/pages.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1266
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   &lt;page view-id=\"/search.xhtml\"&gt;\n"
+"      &lt;param name=\"searchPattern\" value=\"#{searchService.searchPattern}"
+"\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1267
+#, no-c-format
+msgid ""
+"This tells Seam to include the value of <literal>#{searchService."
+"searchPattern}</literal> as a request parameter named "
+"<literal>searchPattern</literal> when redirecting to the page, and then re-"
+"apply the value of that parameter to the model before rendering the page."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1270
+#, no-c-format
+msgid "The redirect takes us to the <literal>search.xhtml</literal> page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1273
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{searchResults}\" var=\"blogEntry\"&gt;\n"
+"   &lt;h:column&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:outputLink value=\"entry.seam\"&gt;\n"
+"            &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"            #{blogEntry.title}\n"
+"         &lt;/h:outputLink&gt;\n"
+"         posted on \n"
+"         &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"            &lt;f:convertDateTime timeZone=\"#{blog.timeZone}\" locale=\"#"
+"{blog.locale}\" type=\"both\"/&gt;\n"
+"         &lt;/h:outputText&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1274
+#, no-c-format
+msgid ""
+"Which again uses \"pull\"-style MVC to retrieve the actual search results:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1277
+#, no-c-format
+msgid ""
+"@Name(\"searchService\")\n"
+"public class SearchService \n"
+"{\n"
+"   \n"
+"   @In\n"
+"   private EntityManager entityManager;\n"
+"   \n"
+"   private String searchPattern;\n"
+"   \n"
+"   @Factory(\"searchResults\")\n"
+"   public List&lt;BlogEntry&gt; getSearchResults()\n"
+"   {\n"
+"      if (searchPattern==null)\n"
+"      {\n"
+"         return null;\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return entityManager.createQuery(\"select be from BlogEntry be "
+"where lower(be.title)\n"
+"             like :searchPattern or lower(be.body) like :searchPattern \n"
+"             order by be.date desc\")\n"
+"               .setParameter( \"searchPattern\", getSqlSearchPattern() )\n"
+"               .setMaxResults(100)\n"
+"               .getResultList();\n"
+"      }\n"
+"   }\n"
+"\n"
+"   private String getSqlSearchPattern()\n"
+"   {\n"
+"      return searchPattern==null ? \"\" : '&#37;' + \n"
+"          searchPattern.toLowerCase().replace('*', '&#37;').replace('?', "
+"'_') + '&#37;';\n"
+"   }\n"
+"\n"
+"   public String getSearchPattern()\n"
+"   {\n"
+"      return searchPattern;\n"
+"   }\n"
+"\n"
+"   public void setSearchPattern(String searchPattern)\n"
+"   {\n"
+"      this.searchPattern = searchPattern;\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1282
+#, no-c-format
+msgid "Using \"push\"-style MVC in a RESTful application"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1283
+#, no-c-format
+msgid ""
+"Very occasionally, it makes more sense to use push-style MVC for processing "
+"RESTful pages, and so Seam provides the notion of a <emphasis>page action</"
+"emphasis>. The Blog example uses a page action for the blog entry page, "
+"<literal>entry.xhtml</literal>. Note that this is a little bit contrived, it "
+"would have been easier to use pull-style MVC here as well."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1286
+#, no-c-format
+msgid ""
+"The <literal>entryAction</literal> component works much like an action class "
+"in a traditional push-MVC action-oriented framework like Struts:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1289
+#, no-c-format
+msgid ""
+"@Name(\"entryAction\")\n"
+"@Scope(STATELESS)\n"
+"public class EntryAction\n"
+"{\n"
+"   @In(create=true) \n"
+"   private Blog blog;\n"
+"   \n"
+"   @Out\n"
+"   private BlogEntry blogEntry;\n"
+"   \n"
+"   public void loadBlogEntry(String id) throws EntryNotFoundException\n"
+"   {\n"
+"      blogEntry = blog.getBlogEntry(id);\n"
+"      if (blogEntry==null) throw new EntryNotFoundException(id);\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1290
+#, no-c-format
+msgid "Page actions are also declared in <literal>pages.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1293
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   ...\n"
+"\n"
+"   &lt;page view-id=\"/entry.xhtml\" action=\"#{entryAction.loadBlogEntry"
+"(blogEntry.id)}\"&gt;\n"
+"      &lt;param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"\n"
+"   &lt;page view-id=\"/post.xhtml\" action=\"#{loginAction.challenge}\"/"
+"&gt;\n"
+"\n"
+"   &lt;page view-id=\"*\" action=\"#{blog.hitCount.hit}\"/&gt;\n"
+"\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1294
+#, no-c-format
+msgid ""
+"Notice that the example is using page actions for some other "
+"functionality&mdash;the login challenge, and the pageview counter. Also "
+"notice the use of a parameter in the page action method binding. This is not "
+"a standard feature of JSF EL, but Seam lets you use it, not just for page "
+"actions, but also in JSF method bindings."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1297
+#, no-c-format
+msgid ""
+"When the <literal>entry.xhtml</literal> page is requested, Seam first binds "
+"the page parameter <literal>blogEntryId</literal> to the model, then runs "
+"the page action, which retrieves the needed data&mdash;the "
+"<literal>blogEntry</literal>&mdash;and places it in the Seam event context. "
+"Finally, the following is rendered:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1300
+#, no-c-format
+msgid ""
+"&lt;div class=\"blogEntry\"&gt;\n"
+"   &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"   &lt;div&gt;\n"
+"      &lt;h:outputText escape=\"false\" value=\"#{blogEntry.body}\"/&gt;\n"
+"   &lt;/div&gt;\n"
+"   &lt;p&gt;\n"
+"      [Posted on&amp;#160;\n"
+"      &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"         &lt;f:convertDateTime timezone=\"#{blog.timeZone}\" locale=\"#{blog."
+"locale}\" type=\"both\"/&gt;\n"
+"      &lt;/h:outputText&gt;]\n"
+"   &lt;/p&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1301
+#, no-c-format
+msgid ""
+"If the blog entry is not found in the database, the "
+"<literal>EntryNotFoundException</literal> exception is thrown. We want this "
+"exception to result in a 404 error, not a 505, so we annotate the exception "
+"class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1304
+#, no-c-format
+msgid ""
+"@ApplicationException(rollback=true)\n"
+"@HttpError(errorCode=HttpServletResponse.SC_NOT_FOUND)\n"
+"public class EntryNotFoundException extends Exception\n"
+"{\n"
+"   EntryNotFoundException(String id)\n"
+"   {\n"
+"      super(\"entry not found: \" + id);\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1305
+#, no-c-format
+msgid ""
+"An alternative implementation of the example does not use the parameter in "
+"the method binding:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1308
+#, no-c-format
+msgid ""
+"@Name(\"entryAction\")\n"
+"@Scope(STATELESS)\n"
+"public class EntryAction\n"
+"{\n"
+"   @In(create=true) \n"
+"   private Blog blog;\n"
+"   \n"
+"   @In @Out\n"
+"   private BlogEntry blogEntry;\n"
+"   \n"
+"   public void loadBlogEntry() throws EntryNotFoundException\n"
+"   {\n"
+"      blogEntry = blog.getBlogEntry( blogEntry.getId() );\n"
+"      if (blogEntry==null) throw new EntryNotFoundException(id);\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1309
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   ...\n"
+"\n"
+"   &lt;page view-id=\"/entry.xhtml\" action=\"#{entryAction.loadBlogEntry}"
+"\"&gt;\n"
+"      &lt;param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1310
+#, no-c-format
+msgid "It is a matter of taste which implementation you prefer."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1318
+#, no-c-format
+msgid "Running the Seam examples in JBoss using the JSF 1.2 RI"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1319
+#, no-c-format
+msgid ""
+"JBoss AS 4.0 ships with the Apache MyFaces implementation of JSF 1.1. After "
+"many months of waiting, there is <emphasis>still</emphasis> no "
+"implementation of JSF 1.2 from MyFaces. For this and other reasons, JBoss AS "
+"4.2 will embed the JSF 1.2 Reference Implementation by default. Soon after "
+"the release of 4.2, we will migrate the Seam examples to JSF 1.2."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1322
+#, no-c-format
+msgid ""
+"For those who can't wait, Seam is already compatible with JSF 1.2, and it's "
+"easy to get the Seam examples running with JSF 1.2 in JBoss 4.0.5. Let's "
+"start with the famous booking example:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1327
+#, no-c-format
+msgid ""
+"copy <literal>jsf-api.jar</literal>, <literal>jsf-impl.jar</literal>, "
+"<literal>el-api.jar</literal>, <literal>el-impl.jar</literal> to "
+"<literal>server/default/deploy/tomcat/jbossweb-tomcat55.sar/jsf-libs</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1332
+#, no-c-format
+msgid ""
+"delete <literal>myfaces-api.jar</literal> and <literal>myfaces-impl.jar</"
+"literal> from <literal>server/default/deploy/tomcat/jbossweb-tomcat55.sar/"
+"jsf-libs</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1337
+#, no-c-format
+msgid ""
+"edit <literal>server/default/deploy/tomcat/jbossweb-tomcat55.sar/conf/web."
+"xml</literal>, replacing <literal>myfaces-impl.jar</literal> with "
+"<literal>jsf-impl.jar</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1342
+#, no-c-format
+msgid ""
+"edit <literal>examples/booking/resources/WEB-INF/web.xml</literal>, deleting "
+"the MyFaces listener, uncommenting the RI listener"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1347
+#, no-c-format
+msgid ""
+"edit <literal>examples/booking/resources/WEB-INF/faces-config.xml</literal>, "
+"uncommenting the lines that install the <literal>SeamELResolver</literal> "
+"using the new JSF 1.2 XML schema declaration."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1352
+#, no-c-format
+msgid ""
+"edit <literal>examples/booking/resources/META-INF/application.xml</literal>, "
+"deleting the lines that declare <literal>el-api.jar</literal> and "
+"<literal>el-impl.jar</literal> as Java modules."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1357
+#, no-c-format
+msgid ""
+"Restart JBoss, and type <literal>ant</literal> in the <literal>examples/"
+"booking</literal> directory."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Validation.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Validation.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Validation.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,375 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Validation.xml:10
+#, no-c-format
+msgid "JSF form validation in Seam"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:11
+#, no-c-format
+msgid "In plain JSF, validation is defined in the view:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:14
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Country:\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;my:validateCountry/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Zip code:\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;my:validateZip/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:15
+#, no-c-format
+msgid ""
+"In practice, this approach usually violates DRY, since most \"validation\" "
+"actually enforces constraints that are part of the data model, and exist all "
+"the way down to the database schema definition. Seam provides support for "
+"model-based constraints defined using Hibernate Validator."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:18
+#, no-c-format
+msgid ""
+"Let's start by defining our constraints, on our <literal>Location</literal> "
+"class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:21
+#, no-c-format
+msgid ""
+"public class Location {\n"
+"    private String country;\n"
+"    private String zip;\n"
+"    \n"
+"    @NotNull\n"
+"    @Length(max=30)\n"
+"    public String getCountry() { return country; }\n"
+"    public void setCountry(String c) { country = c; }\n"
+"\n"
+"    @NotNull\n"
+"    @Length(max=6)\n"
+"    @Pattern(\"^&#92;d*&#36;\")\n"
+"    public String getZip() { return zip; }\n"
+"    public void setZip(String z) { zip = z; }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:22
+#, no-c-format
+msgid ""
+"Well, that's a decent first cut, but in practice it might be more elegant to "
+"use custom constraints instead of the ones built into Hibernate Validator:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:25
+#, no-c-format
+msgid ""
+"public class Location {\n"
+"    private String country;\n"
+"    private String zip;\n"
+"    \n"
+"    @NotNull\n"
+"    @Country\n"
+"    public String getCountry() { return country; }\n"
+"    public void setCountry(String c) { country = c; }\n"
+"\n"
+"    @NotNull\n"
+"    @ZipCode\n"
+"    public String getZip() { return zip; }\n"
+"    public void setZip(String z) { zip = z; }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:26
+#, no-c-format
+msgid ""
+"Whichever route we take, we no longer need to specify the type of validation "
+"to be used in the JSF page. Instead, we can use <literal>&lt;s:validate&gt;</"
+"literal> to validate against the constraint defined on the model object."
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:29
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Country:\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;s:validate/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Zip code:\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;s:validate/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:30
+#, no-c-format
+msgid ""
+"<emphasis>Note:</emphasis> specifying <literal>@NotNull</literal> on the "
+"model does <emphasis>not</emphasis> eliminate the requirement for "
+"<literal>required=\"true\"</literal> to appear on the control! This is due "
+"to a limitation of the JSF validation architecture."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:33
+#, no-c-format
+msgid ""
+"This version is not much less verbose than what we started with, so let's "
+"try <literal>&lt;s:validateAll&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:36
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;h:inputText value=\"#{location.country}\" required=\"true\"/"
+"&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/"
+"&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:37
+#, no-c-format
+msgid ""
+"This tag simply adds an <literal>&lt;s:validate&gt;</literal> to every input "
+"in the form. For a large form, it can save a lot of typing!"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:40
+#, no-c-format
+msgid ""
+"Now we need to do something about displaying feedback to the user when "
+"validation fails. Currently we are displaying all messages at the top of the "
+"form. What we would really like to do is display the message next to the "
+"field with the error (this is possible in plain JSF), highlight the field "
+"(this is not possible) and, for good measure, display some image next the "
+"the field (also not possible)."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:43
+#, no-c-format
+msgid "Let's try out <literal>&lt;s:decorate&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:46
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;s:decorate&gt;\n"
+"                &lt;f:facet name=\"beforeInvalidField\"&gt;&lt;h:"
+"graphicImage src=\"img/error.gif\"/&gt;&lt;/f:facet&gt;\n"
+"                &lt;f:facet name=\"afterInvalidField\"&gt;&lt;s:message/&gt;"
+"&lt;/f:facet&gt;\n"
+"                &lt;f:facet name=\"aroundInvalidField\"&gt;&lt;s:span "
+"styleClass=\"error\"/&gt;&lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{location.country}\" required=\"true"
+"\"/&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;s:decorate&gt;\n"
+"                &lt;f:facet name=\"beforeInvalidField\"&gt;&lt;h:"
+"graphicImage src=\"img/error.gif\"/&gt;&lt;/f:facet&gt;\n"
+"                &lt;f:facet name=\"afterInvalidField\"&gt;&lt;s:message/&gt;"
+"&lt;/f:facet&gt;\n"
+"                &lt;f:facet name=\"aroundInvalidField\"&gt;&lt;s:span "
+"styleClass=\"error\"/&gt;&lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/"
+"&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:47
+#, no-c-format
+msgid ""
+"Well, that looks much better to the user, but it is extremely verbose. "
+"Fortunately, the facets of <literal>&lt;s:decorate&gt;</literal> may be "
+"defined on any parent element:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:50
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;f:facet name=\"beforeInvalidField\"&gt;\n"
+"        &lt;h:graphicImage src=\"img/error.gif\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;f:facet name=\"afterInvalidField\"&gt;\n"
+"        &lt;s:message/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;f:facet name=\"aroundInvalidField\"&gt;\n"
+"        &lt;s:span styleClass=\"error\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;s:decorate&gt;\n"
+"                &lt;h:inputText value=\"#{location.country}\" required=\"true"
+"\"/&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;s:decorate&gt;\n"
+"                &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/"
+"&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:51
+#, no-c-format
+msgid ""
+"This approach <emphasis>defines</emphasis> constraints on the model, and "
+"<emphasis>presents</emphasis> constraint violations in the view&mdash;a "
+"significantly better design."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:54
+#, no-c-format
+msgid ""
+"Finally, we can use Ajax4JSF to display validation messages as the user is "
+"typing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:57
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;f:facet name=\"beforeInvalidField\"&gt;\n"
+"        &lt;h:graphicImage src=\"img/error.gif\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;f:facet name=\"afterInvalidField\"&gt;\n"
+"        &lt;s:message/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;f:facet name=\"aroundInvalidField\"&gt;\n"
+"        &lt;s:span styleClass=\"error\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;s:decorate id=\"country\"&gt;\n"
+"                &lt;h:inputText value=\"#{location.country}\" required=\"true"
+"\"&gt;\n"
+"                    &lt;a:support event=\"onblur\" reRender=\"country\"/"
+"&gt;\n"
+"                &lt;/h:inputText&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;s:decorate id=\"zip\"&gt;\n"
+"                &lt;h:inputText value=\"#{location.zip}\" required=\"true"
+"\"&gt;\n"
+"                    &lt;a:support event=\"onblur\" reRender=\"zip\"/&gt;\n"
+"                &lt;/h:inputText&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Xml.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Xml.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/kn-IN/Xml.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,933 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Xml.xml:10
+#, no-c-format
+msgid "Configuring Seam components"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:11
+#, no-c-format
+msgid ""
+"The philosophy of minimizing XML-based configuration is extremely strong in "
+"Seam. Nevertheless, there are various reasons why we might want to configure "
+"a Seam component using XML: to isolate deployment-specific information from "
+"the Java code, to enable the creation of re-usable frameworks, to configure "
+"Seam's built-in functionality, etc. Seam provides two basic approaches to "
+"configuring components: configuration via property settings in a properties "
+"file or <literal>web.xml</literal>, and configuration via "
+"<literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:14
+#, no-c-format
+msgid "Configuring components via property settings"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:15
+#, no-c-format
+msgid ""
+"Seam components may be provided with configuration properties either via "
+"servlet context parameters, or via a properties file named <literal>seam."
+"properties</literal> in the root of the classpath."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:18
+#, no-c-format
+msgid ""
+"The configurable Seam component must expose JavaBeans-style property setter "
+"methods for the configurable attributes. If a seam component named "
+"<literal>com.jboss.myapp.settings</literal> has a setter method named "
+"<literal>setLocale()</literal>, we can provide a property named <literal>com."
+"jboss.myapp.settings.locale</literal> in the <literal>seam.properties</"
+"literal> file or as a servlet context parameter, and Seam will set the value "
+"of the <literal>locale</literal> attribute whenever it instantiates the "
+"component."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:21
+#, no-c-format
+msgid ""
+"The same mechanism is used to configure Seam itself. For example, to set the "
+"conversation timeout, we provide a value for <literal>org.jboss.seam.core."
+"manager.conversationTimeout</literal> in <literal>web.xml</literal> or "
+"<literal>seam.properties</literal>. (There is a built-in Seam component "
+"named <literal>org.jboss.seam.core.manager</literal> with a setter method "
+"named <literal>setConversationTimeout()</literal>.)"
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:24
+#, no-c-format
+msgid "Configuring components via components.xml"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:25
+#, no-c-format
+msgid ""
+"The <literal>components.xml</literal> file is a bit more powerful than "
+"property settings. It lets you:"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:30
+#, no-c-format
+msgid ""
+"Configure components that have been installed automatically&mdash;including "
+"both built-in components, and application components that have been "
+"annotated with the <literal>@Name</literal> annotation and picked up by "
+"Seam's deployment scanner."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:35
+#, no-c-format
+msgid ""
+"Install classes with no <literal>@Name</literal> annotation as Seam "
+"components&mdash;this is most useful for certain kinds of infrastructural "
+"components which can be installed multiple times different names (for "
+"example Seam-managed persistence contexts)."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:40
+#, no-c-format
+msgid ""
+"Install components that <emphasis>do</emphasis> have a <literal>@Name</"
+"literal> annotation but are not installed by default because of an "
+"<literal>@Install</literal> annotation that indicates the component should "
+"not be installed."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:45
+#, no-c-format
+msgid "Override the scope of a component."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:50
+#, no-c-format
+msgid ""
+"A <literal>components.xml</literal> file may appear in one of three "
+"different places:"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:55
+#, no-c-format
+msgid "The <literal>WEB-INF</literal> directory of a <literal>war</literal>."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:60
+#, no-c-format
+msgid "The <literal>META-INF</literal> directory of a <literal>jar</literal>."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:65
+#, no-c-format
+msgid ""
+"Any directory of a <literal>jar</literal> that contains classes with an "
+"<literal>@Name</literal> annotation."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:70
+#, no-c-format
+msgid ""
+"Usually, Seam components are installed when the deployment scanner discovers "
+"a class with a <literal>@Name</literal> annotation sitting in an archive "
+"with a <literal>seam.properties</literal> file or a <literal>META-INF/"
+"components.xml</literal> file. (Unless the component has an "
+"<literal>@Install</literal> annotation indicating it should not be installed "
+"by default.) The <literal>components.xml</literal> file lets us handle "
+"special cases where we need to override the annotations."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:73
+#, no-c-format
+msgid ""
+"For example, the following <literal>components.xml</literal> file installs "
+"the JBoss Embeddable EJB3 container:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:76
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"&gt;\n"
+"    &lt;core:ejb/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:77
+#, no-c-format
+msgid "This example does the same thing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:80
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component class=\"org.jboss.seam.core.Ejb\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:81
+#, no-c-format
+msgid ""
+"This one installs and configures two different Seam-managed persistence "
+"contexts:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:84
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"    &lt;core:managed-persistence-context name=\"customerDatabase\"\n"
+"                persistence-unit-jndi-name=\"java:/"
+"customerEntityManagerFactory\"/&gt;\n"
+"        \n"
+"    &lt;core:managed-persistence-context name=\"accountingDatabase\"\n"
+"                persistence-unit-jndi-name=\"java:/"
+"accountingEntityManagerFactory\"/&gt;            \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:85
+#, no-c-format
+msgid "As does this one:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:88
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component name=\"customerDatabase\" \n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"customerEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"    \n"
+"    &lt;component name=\"accountingDatabase\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"accountingEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:89
+#, no-c-format
+msgid ""
+"This example creates a session-scoped Seam-managed persistence context (this "
+"is not recommended in practice):"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:92
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"  &lt;core:managed-persistence-context name=\"productDatabase\" \n"
+"                                   scope=\"session\"\n"
+"              persistence-unit-jndi-name=\"java:/productEntityManagerFactory"
+"\"/&gt;        \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:93
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"            \n"
+"    &lt;component name=\"productDatabase\"\n"
+"              scope=\"session\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"productEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:94
+#, no-c-format
+msgid ""
+"It is common to use the <literal>auto-create</literal> option for "
+"infrastructural objects like persistence contexts, which saves you from "
+"having to explicitly specify <literal>create=true</literal> when you use the "
+"<literal>@In</literal> annotation."
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:97
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"  &lt;core:managed-persistence-context name=\"productDatabase\" \n"
+"                             auto-create=\"true\"\n"
+"              persistence-unit-jndi-name=\"java:/productEntityManagerFactory"
+"\"/&gt;        \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:98
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"            \n"
+"    &lt;component name=\"productDatabase\"\n"
+"        auto-create=\"true\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"productEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:99
+#, no-c-format
+msgid ""
+"The <literal>&lt;factory&gt;</literal> declaration lets you specify a value "
+"or method binding expression that will be evaluated to initialize the value "
+"of a context variable when it is first referenced."
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:102
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"contact\" method=\"#{contactManager.loadContact}\" "
+"scope=\"CONVERSATION\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:103
+#, no-c-format
+msgid ""
+"You can create an \"alias\" (a second name) for a Seam component like so:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:106
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"user\" value=\"#{actor}\" scope=\"STATELESS\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:107
+#, no-c-format
+msgid "You can even create an \"alias\" for a commonly used expression:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:110
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"contact\" value=\"#{contactManager.contact}\" scope="
+"\"STATELESS\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:111
+#, no-c-format
+msgid ""
+"It is especially common to see the use of <literal>auto-create=\"true\"</"
+"literal> with the <literal>&lt;factory&gt;</literal> declaration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:114
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"session\" value=\"#{entityManager.delegate}\" scope="
+"\"STATELESS\" \n"
+"        auto-create=\"true\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:115
+#, no-c-format
+msgid ""
+"Sometimes we want to reuse the same <literal>components.xml</literal> file "
+"with minor changes during both deployment and testing. Seam lets you place "
+"wildcards of the form <literal>@wildcard@</literal> in the "
+"<literal>components.xml</literal> file which can be replaced either by your "
+"Ant build script (at deployment time) or by providing a file named "
+"<literal>components.properties</literal> in the classpath (at development "
+"time). You'll see this approach used in the Seam examples."
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:118
+#, no-c-format
+msgid "Fine-grained configuration files"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:119
+#, no-c-format
+msgid ""
+"If you have a large number of components that need to be configured in XML, "
+"it makes much more sense to split up the information in <literal>components."
+"xml</literal> into many small files. Seam lets you put configuration for a "
+"class named, for example, <literal>com.helloworld.Hello</literal> in a "
+"resource named <literal>com/helloworld/Hello.component.xml</literal>. (You "
+"might be familiar with this pattern, since it is the same one we use in "
+"Hibernate.) The root element of the file may be either a <literal>&lt;"
+"components&gt;</literal> or <literal>&lt;component&gt;</literal> element."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:122
+#, no-c-format
+msgid "The first option lets you define multiple components in the file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:125
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component class=\"com.helloworld.Hello\" name=\"hello\"&gt;\n"
+"        &lt;property name=\"name\"&gt;#{user.name}&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"    &lt;factory name=\"message\" value=\"#{hello.message}\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:126
+#, no-c-format
+msgid ""
+"The second option only lets you define or configure one component, but is "
+"less noisy:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:129
+#, no-c-format
+msgid ""
+"&lt;component name=\"hello\"&gt;\n"
+"    &lt;property name=\"name\"&gt;#{user.name}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:130
+#, no-c-format
+msgid ""
+"In the second option, the class name is implied by the file in which the "
+"component definition appears."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:133
+#, no-c-format
+msgid ""
+"Alternatively, you may put configuration for all classes in the <literal>com."
+"helloworld</literal> package in <literal>com/helloworld/components.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:136
+#, no-c-format
+msgid "Configurable property types"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:137
+#, no-c-format
+msgid ""
+"Properties of string, primitive or primitive wrapper type may be configured "
+"just as you would expect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:140
+#, no-c-format
+msgid "org.jboss.seam.core.manager.conversationTimeout 60000"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:141
+#, no-c-format
+msgid "&lt;core:manager conversation-timeout=\"60000\"/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:142
+#, no-c-format
+msgid ""
+"&lt;component name=\"org.jboss.seam.core.manager\"&gt;\n"
+"    &lt;property name=\"conversationTimeout\"&gt;60000&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:143
+#, no-c-format
+msgid "Arrays, sets and lists of strings or primitives are also supported:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:146
+#, no-c-format
+msgid ""
+"org.jboss.seam.core.jbpm.processDefinitions order.jpdl.xml, return.jpdl.xml, "
+"inventory.jpdl.xml"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:147
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;order.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;return.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:148
+#, no-c-format
+msgid ""
+"&lt;component name=\"org.jboss.seam.core.jbpm\"&gt;\n"
+"    &lt;property name=\"processDefinitions\"&gt;\n"
+"        &lt;value&gt;order.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;return.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:149
+#, no-c-format
+msgid ""
+"Even maps with String-valued keys and string or primitive values are "
+"supported:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:152
+#, no-c-format
+msgid ""
+"&lt;component name=\"issueEditor\"&gt;\n"
+"    &lt;property name=\"issueStatuses\"&gt;\n"
+"        &lt;key&gt;open&lt;/key&gt; &lt;value&gt;open issue&lt;/value&gt;\n"
+"        &lt;key&gt;resolved&lt;/key&gt; &lt;value&gt;issue resolved by "
+"developer&lt;/value&gt;\n"
+"        &lt;key&gt;closed&lt;/key&gt; &lt;value&gt;resolution accepted by "
+"user&lt;/value&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:153
+#, no-c-format
+msgid ""
+"Finally, you may wire together components using a value-binding expression. "
+"Note that this is quite different to injection using <literal>@In</literal>, "
+"since it happens at component instantiation time instead of invocation time. "
+"It is therefore much more similar to the dependency injection facilities "
+"offered by traditional IoC containers like JSF or Spring."
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:156
+#, no-c-format
+msgid ""
+"&lt;drools:managed-working-memory name=\"policyPricingWorkingMemory\" rule-"
+"base=\"#{policyPricingRules}\"/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:157
+#, no-c-format
+msgid ""
+"&lt;component name=\"policyPricingWorkingMemory\"\n"
+"          class=\"org.jboss.seam.drools.ManagedWorkingMemory\"&gt;\n"
+"    &lt;property name=\"ruleBase\"&gt;#{policyPricingRules}&lt;/"
+"property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:158
+#, no-c-format
+msgid "Using XML Namespaces"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:159
+#, no-c-format
+msgid ""
+"Throughout the examples, there have been two competing ways of declaring "
+"components: with and without the use of XML namespaces. The following shows "
+"a typical <literal>components.xml</literal> file without namespaces. It uses "
+"the Seam Components DTD:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:162
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"&gt;\n"
+"&lt;!DOCTYPE components PUBLIC \"-//JBoss/Seam Component Configuration DTD "
+"1.2//EN\"\n"
+"                            \"http://jboss.com/products/seam/components-1.2."
+"dtd\"&gt;\n"
+"&lt;components&gt;\n"
+"\n"
+"    &lt;component class=\"org.jboss.seam.core.init\"&gt;\n"
+"        &lt;property name=\"debug\"&gt;true&lt;/property&gt;\n"
+"        &lt;property name=\"jndiPattern\"&gt;@jndiPattern@&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"    &lt;component name=\"org.jboss.sean.core.ejb\" installed=\"@embeddedEjb@"
+"\" /&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:163
+#, no-c-format
+msgid ""
+"As you can see, this is somewhat verbose. Even worse, the component and "
+"attribute names cannot be validated at development time."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:166
+#, no-c-format
+msgid "The namespaced version looks like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:169
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                http://jboss.com/products/seam/core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components \n"
+"                 http://jboss.com/products/seam/components-1.2.xsd\"&gt;\n"
+"\n"
+"    &lt;core:init debug=\"true\" jndi-pattern=\"@jndiPattern@\"/&gt;\n"
+"\n"
+"    &lt;core:ejb installed=\"@embeddedEjb@\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:170
+#, no-c-format
+msgid ""
+"Even though the schema declarations are verbose, the actual XML content is "
+"lean and easy to understand. The schemas provide detailed information about "
+"each component and the attributes available, allowing XML editors to offer "
+"intelligent autocomplete. The use of namespaced elements makes generating "
+"and maintaining correct <literal>components.xml</literal> files much simpler."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:173
+#, no-c-format
+msgid ""
+"Now, this works great for the built-in Seam components, but what about user "
+"components? There are two options. First, Seam supports mixing the two "
+"models, allowing the use of the generic <literal>&lt;component&gt;</literal> "
+"declarations for user components, along with namespaced declarations for "
+"built-in components. But even better, Seam allows you to quickly declare "
+"namespaces for your own components."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:176
+#, no-c-format
+msgid ""
+"Any Java package can be associated with an XML namespace by annotating the "
+"package with the <literal>@Namespace</literal> annotation. (Package-level "
+"annotations are declared in a file named <literal>package-info.java</"
+"literal> in the package directory.) Here is an example from the seampay demo:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:179
+#, no-c-format
+msgid ""
+"@Namespace(value=\"http://jboss.com/products/seam/examples/seampay\")\n"
+"package org.jboss.seam.example.seampay;\n"
+"\n"
+"import org.jboss.seam.annotations.Namespace;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:180
+#, no-c-format
+msgid ""
+"That is all you need to do to use the namespaced style in "
+"<literal>components.xml</literal>! Now we can write:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:183
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pay=\"http://jboss.com/products/seam/examples/seampay\"\n"
+"            ... &gt;\n"
+"\n"
+"    &lt;pay:payment-home new-instance=\"#{newPayment}\"\n"
+"                      created-message=\"Created a new payment to #"
+"{newPayment.payee}\" /&gt;\n"
+"\n"
+"    &lt;pay:payment name=\"newPayment\"\n"
+"                 payee=\"Somebody\"\n"
+"                 account=\"#{selectedAccount}\"\n"
+"                 payment-date=\"#{currentDatetime}\"\n"
+"                 created-date=\"#{currentDatetime}\" /&gt;\n"
+"     ...\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:184
+#, no-c-format
+msgid "<para>Or:</para>"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:187
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pay=\"http://jboss.com/products/seam/examples/seampay\"\n"
+"            ... &gt;\n"
+"\n"
+"    &lt;pay:payment-home&gt;\n"
+"        &lt;pay:new-instance&gt;\"#{newPayment}\"&lt;/pay:new-instance&gt;\n"
+"        &lt;pay:created-message&gt;Created a new payment to #{newPayment."
+"payee}&lt;/pay:created-message&gt;\n"
+"    &lt;/pay:payment-home&gt;\n"
+"    \n"
+"    &lt;pay:payment name=\"newPayment\"&gt;\n"
+"        &lt;pay:payee&gt;Somebody\"&lt;/pay:payee&gt;\n"
+"        &lt;pay:account&gt;#{selectedAccount}&lt;/pay:account&gt;\n"
+"        &lt;pay:payment-date&gt;#{currentDatetime}&lt;/pay:payment-date&gt;\n"
+"        &lt;pay:created-date&gt;#{currentDatetime}&lt;/pay:created-date&gt;\n"
+"     &lt;/pay:payment&gt;\n"
+"     ...\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:188
+#, no-c-format
+msgid ""
+"These examples illustrate the two usage models of a namespaced element. In "
+"the first declaration, the <literal>&lt;pay:payment-home&gt;</literal> "
+"references the <literal>paymentHome</literal> component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:191
+#, no-c-format
+msgid ""
+"package org.jboss.seam.example.seampay;\n"
+"...\n"
+"@Name(\"paymentHome\")\n"
+"public class PaymentController\n"
+"    extends EntityHome&lt;Payment&gt;\n"
+"{\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:192
+#, no-c-format
+msgid ""
+"The element name is the hyphenated form of the component name. The "
+"attributes of the element are the hyphenated form of the property names."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:195
+#, no-c-format
+msgid ""
+"In the second declaration, the <literal>&lt;pay:payment&gt;</literal> "
+"element refers to the <literal>Payment</literal> class in the <literal>org."
+"jboss.seam.example.seampay</literal> package. In this case <literal>Payment</"
+"literal> is an entity that is being declared as a Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:198
+#, no-c-format
+msgid ""
+"package org.jboss.seam.example.seampay;\n"
+"...\n"
+"@Entity\n"
+"public class Payment\n"
+"    implements Serializable\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:199
+#, no-c-format
+msgid ""
+"If we want validation and autocompletion to work for user-defined "
+"components, we will need a schema. Seam does not yet provide a mechanism to "
+"automatically generate a schema for a set of components, so it is necessary "
+"to generate one manually. The schema definitions for the standard Seam "
+"packages can be used for guidance."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:202
+#, no-c-format
+msgid "The following are the the namespaces used by Seam:"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:207
+#, no-c-format
+msgid ""
+"components &mdash; <literal>http://jboss.com/products/seam/components</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:212
+#, no-c-format
+msgid "core &mdash; <literal>http://jboss.com/products/seam/core</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:217
+#, no-c-format
+msgid "drools &mdash; <literal>http://jboss.com/products/seam/drools</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:222
+#, no-c-format
+msgid ""
+"framework &mdash; <literal>http://jboss.com/products/seam/framework</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:227
+#, no-c-format
+msgid "jms &mdash; <literal>http://jboss.com/products/seam/jms</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:232
+#, no-c-format
+msgid ""
+"remoting &mdash; <literal>http://jboss.com/products/seam/remoting</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:237
+#, no-c-format
+msgid "theme &mdash; <literal>http://jboss.com/products/seam/theme</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:242
+#, no-c-format
+msgid ""
+"security &mdash; <literal>http://jboss.com/products/seam/security</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:247
+#, no-c-format
+msgid "mail &mdash; <literal>http://jboss.com/products/seam/mail</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:252
+#, no-c-format
+msgid "web &mdash; <literal>http://jboss.com/products/seam/web</literal>"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Annotations.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Annotations.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Annotations.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2030 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Annotations.xml:10
+#, no-c-format
+msgid "Seam annotations"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:11
+#, no-c-format
+msgid ""
+"When you write a Seam application, you'll use a lot of annotations. Seam "
+"lets you use annotations to achieve a declarative style of programming. Most "
+"of the annotations you'll use are defined by the EJB 3.0 specification. The "
+"annotations for data validation are defined by the Hibernate Validator "
+"package. Finally, Seam defines its own set of annotations, which we'll "
+"describe in this chapter."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:14
+#, no-c-format
+msgid ""
+"All of these annotations are defined in the package <literal>org.jboss.seam."
+"annotations</literal>."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:18
+#, no-c-format
+msgid "Annotations for component definition"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:19
+#, no-c-format
+msgid ""
+"The first group of annotations lets you define a Seam component. These "
+"annotations appear on the component class."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:24
+#, no-c-format
+msgid "@Name"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:26
+#, no-c-format
+msgid "@Name(\"componentName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:27
+#, no-c-format
+msgid ""
+"Defines the Seam component name for a class. This annotation is required for "
+"all Seam components."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:33
+#, no-c-format
+msgid "@Scope"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:35
+#, no-c-format
+msgid "@Scope(ScopeType.CONVERSATION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:36
+#, no-c-format
+msgid ""
+"Defines the default context of the component. The possible values are "
+"defined by the <literal>ScopeType</literal> enumeration: <literal>EVENT, "
+"PAGE, CONVERSATION, SESSION, BUSINESS_PROCESS, APPLICATION, STATELESS</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:39
+#, no-c-format
+msgid ""
+"When no scope is explicitly specified, the default depends upon the "
+"component type. For stateless session beans, the default is "
+"<literal>STATELESS</literal>. For entity beans and stateful session beans, "
+"the default is <literal>CONVERSATION</literal>. For JavaBeans, the default "
+"is <literal>EVENT</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:45
+#, no-c-format
+msgid "@Role"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:47
+#, no-c-format
+msgid "@Role(name=\"roleName\", scope=ScopeType.SESSION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:48
+#, no-c-format
+msgid ""
+"Allows a Seam component to be bound to multiple contexts variables. The "
+"<literal>@Name</literal>/<literal>@Scope</literal> annotations define a "
+"\"default role\". Each <literal>@Role</literal> annotation defines an "
+"additional role."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:53
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the context variable name."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:58
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; the context variable scope. When no scope "
+"is explicitly specified, the default depends upon the component type, as "
+"above."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:66
+#, no-c-format
+msgid "@Roles"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:68
+#, no-c-format
+msgid ""
+"@Roles({\n"
+"        @Role(name=\"user\", scope=ScopeType.CONVERSATION),\n"
+"        @Role(name=\"currentUser\", scope=ScopeType.SESSION)\n"
+"    })"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:69
+#, no-c-format
+msgid "Allows specification of multiple additional roles."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:75
+#, no-c-format
+msgid "@Intercept"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:77
+#, no-c-format
+msgid "@Intercept(InterceptionType.ALWAYS)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:78
+#, no-c-format
+msgid ""
+"Determines when Seam interceptors are active. The possible values are "
+"defined by the <literal>InterceptionType</literal> enumeration: "
+"<literal>ALWAYS, AFTER_RESTORE_VIEW, AFTER_UPDATE_MODEL_VALUES, "
+"INVOKE_APPLICATION, NEVER</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:81
+#, no-c-format
+msgid ""
+"When no interception type is explicitly specified, the default depends upon "
+"the component type. For entity beans, the default is <literal>NEVER</"
+"literal>. For session beans, message driven beans and JavaBeans, the default "
+"is <literal>ALWAYS</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:87
+#, no-c-format
+msgid "@JndiName"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:89
+#, no-c-format
+msgid "@JndiName(\"my/jndi/name\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:90
+#, no-c-format
+msgid ""
+"Specifies the JNDI name that Seam will use to look up the EJB component. If "
+"no JNDI name is explicitly specified, Seam will use the JNDI pattern "
+"specified by <literal>org.jboss.seam.core.init.jndiPattern</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:96
+#, no-c-format
+msgid "@Conversational"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:98
+#, no-c-format
+msgid "@Conversational(ifNotBegunOutcome=\"error\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:99
+#, no-c-format
+msgid ""
+"Specifies that a conversation scope component is conversational, meaning "
+"that no method of the component can be called unless a long-running "
+"conversation started by this component is active (unless the method would "
+"begin a new long-running conversation)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:105
+#, no-c-format
+msgid "<literal>@Startup</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:107
+#, no-c-format
+msgid "@Startup(depends={\"org.jboss.core.jndi\", \"org.jboss.core.jta\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:108
+#, no-c-format
+msgid ""
+"Specifies that an application scope component is started immediately at "
+"initialization time. This is mainly used for certain built-in components "
+"that bootstrap critical infrastructure such as JNDI, datasources, etc."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:111
+#, no-c-format
+msgid "<programlisting>@Startup</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:112
+#, no-c-format
+msgid ""
+"Specifies that a session scope component is started immediately at session "
+"creation time."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:117
+#, no-c-format
+msgid ""
+"<literal>depends</literal> &mdash; specifies that the named components must "
+"be started first, if they are installed."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:125
+#, no-c-format
+msgid "@Install"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:127
+#, no-c-format
+msgid "@Install(false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:128
+#, no-c-format
+msgid ""
+"Specifies whether or not a component should be installed by default. The "
+"lack of an @Install annotation indicates a component should be installed."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:131
+#, no-c-format
+msgid "@Install(dependencies=\"org.jboss.seam.core.jbpm\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:132
+#, no-c-format
+msgid ""
+"Specifies that a component should only be stalled if the components listed "
+"as dependencies are also installed."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:135
+#, no-c-format
+msgid "@Install(genericDependencies=ManagedQueueSender.class)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:136
+#, no-c-format
+msgid ""
+"Specifies that a component should only be installed if a component that is "
+"implemented by a certain class is installed. This is useful when the "
+"dependency doesn't have a single well-known name."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:139
+#, no-c-format
+msgid "@Install(classDependencies=\"org.hibernate.Session\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:140
+#, no-c-format
+msgid ""
+"Specifies that a component should only be installed if the named class is in "
+"the classpath."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:143
+#, no-c-format
+msgid "@Install(precedence=BUILT_IN)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:144
+#, no-c-format
+msgid ""
+"Specifies the precedence of the component. If multiple components with the "
+"same name exist, the one with the higher precedence will be installed. The "
+"defined precendence values are:"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:149
+#, no-c-format
+msgid ""
+"<literal>BUILT_IN</literal> &mdash; Precedence of all built-in Seam "
+"components"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:154
+#, no-c-format
+msgid ""
+"<literal>FRAMEWORK</literal> &mdash; Precedence to use for components of "
+"frameworks which extend Seam"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:159
+#, no-c-format
+msgid ""
+"<literal>APPLICATION</literal> &mdash; Predence of application components "
+"(the default precedence)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:164
+#, no-c-format
+msgid ""
+"<literal>DEPLOYMENT</literal> &mdash; Precedence to use for components which "
+"override application components in a particular deployment"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:172
+#, no-c-format
+msgid "@Synchronized"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:174
+#, no-c-format
+msgid "@Synchronized(timeout=1000)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:175
+#, no-c-format
+msgid ""
+"Specifies that a component is accessed concurrently by multiple clients, and "
+"that Seam should serialize requests. If a request is not able to obtain its "
+"lock on the component in the given timeout period, an exception will be "
+"raised."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:181
+#, no-c-format
+msgid "<literal>@ReadOnly</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:183
+#, no-c-format
+msgid "<programlisting>@ReadOnly</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:184
+#, no-c-format
+msgid ""
+"Specifies that a JavaBean component or component method does not require "
+"state replication at the end of the invocation."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:193
+#, no-c-format
+msgid "Annotations for bijection"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:194
+#, no-c-format
+msgid ""
+"The next two annotations control bijection. These attributes occur on "
+"component instance variables or property accessor methods."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:199
+#, no-c-format
+msgid "<literal>@In</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:201
+#, no-c-format
+msgid "<programlisting>@In</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:202
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. If the context "
+"variable is null, an exception will be thrown."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:205
+#, no-c-format
+msgid "@In(required=false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:206
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. The context variable "
+"may be null."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:209
+#, no-c-format
+msgid "@In(create=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:210
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. If the context "
+"variable is null, an instance of the component is instantiated by Seam."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:213
+#, no-c-format
+msgid "@In(value=\"contextVariableName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:214 Annotations.xml:259
+#, no-c-format
+msgid ""
+"Specifies the name of the context variable explicitly, instead of using the "
+"annotated instance variable name."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:217
+#, no-c-format
+msgid "@In(value=\"#{customer.addresses['shipping']}\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:218
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected by evaluating a JSF "
+"EL expression at the beginning of each component invocation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:223
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"Default to the name of the component attribute. Alternatively, specifies a "
+"JSF EL expression, surrounded by <literal>#{...}</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:228
+#, no-c-format
+msgid ""
+"<literal>create</literal> &mdash; specifies that Seam should instantiate the "
+"component with the same name as the context variable if the context variable "
+"is undefined (null) in all contexts. Default to false."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:233
+#, no-c-format
+msgid ""
+"<literal>required</literal> &mdash; specifies Seam should throw an exception "
+"if the context variable is undefined in all contexts."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:241
+#, no-c-format
+msgid "<literal>@Out</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:243
+#, no-c-format
+msgid "<programlisting>@Out</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:244
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is a Seam component is to be "
+"outjected to its context variable at the end of the invocation. If the "
+"attribute is null, an exception is thrown."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:247
+#, no-c-format
+msgid "@Out(required=false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:248
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is a Seam component is to be "
+"outjected to its context variable at the end of the invocation. The "
+"attribute may be null."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:251
+#, no-c-format
+msgid "@Out(scope=ScopeType.SESSION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:252
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is <emphasis>not</emphasis> a Seam "
+"component type is to be outjected to a specific scope at the end of the "
+"invocation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:255
+#, no-c-format
+msgid ""
+"Alternatively, if no scope is explicitly specified, the scope of the "
+"component with the <literal>@Out</literal> attribute is used (or the "
+"<literal>EVENT</literal> scope if the component is stateless)."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:258
+#, no-c-format
+msgid "@Out(value=\"contextVariableName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:264
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"Default to the name of the component attribute."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:269
+#, no-c-format
+msgid ""
+"<literal>required</literal> &mdash; specifies Seam should throw an exception "
+"if the component attribute is null during outjection."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:277
+#, no-c-format
+msgid ""
+"Note that it is quite common for these annotations to occur together, for "
+"example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:280
+#, no-c-format
+msgid "@In(create=true) @Out private User currentUser;"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:281
+#, no-c-format
+msgid ""
+"The next annotation supports the <emphasis>manager component</emphasis> "
+"pattern, where a Seam component that manages the lifecycle of an instance of "
+"some other class that is to be injected. It appears on a component getter "
+"method."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:286
+#, no-c-format
+msgid "<literal>@Unwrap</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:288
+#, no-c-format
+msgid "<programlisting>@Unwrap</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:289
+#, no-c-format
+msgid ""
+"Specifies that the object returned by the annotated getter method is the "
+"thing that is injected instead of the component instance itself."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:295
+#, no-c-format
+msgid ""
+"The next annotation supports the <emphasis>factory component</emphasis> "
+"pattern, where a Seam component is responsible for initializing the value of "
+"a context variable. This is especially useful for initializing any state "
+"needed for rendering the response to a non-faces request. It appears on a "
+"component method."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:300
+#, no-c-format
+msgid "@Factory"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:302
+#, no-c-format
+msgid "@Factory(\"processInstance\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:303
+#, no-c-format
+msgid ""
+"Specifies that the method of the component is used to initialize the value "
+"of the named context variable, when the context variable has no value. This "
+"style is used with methods that return <literal>void</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:306
+#, no-c-format
+msgid "@Factory(\"processInstance\", scope=CONVERSATION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:307
+#, no-c-format
+msgid ""
+"Specifies that the method returns a value that Seam should use to initialize "
+"the value of the named context variable, when the context variable has no "
+"value. This style is used with methods that return a value. If no scope is "
+"explicitly specified, the scope of the component with the <literal>@Factory</"
+"literal> method is used (unless the component is stateless, in which case "
+"the <literal>EVENT</literal> context is used)."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:312
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"If the method is a getter method, default to the JavaBeans property name."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:317
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; specifies the scope that Seam should bind "
+"the returned value to. Only meaningful for factory methods which return a "
+"value."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:325
+#, no-c-format
+msgid "This annotation lets you inject a <literal>Log</literal>:"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:330
+#, no-c-format
+msgid "@Logger"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:332
+#, no-c-format
+msgid "@Logger(\"categoryName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:333
+#, no-c-format
+msgid ""
+"Specifies that a component field is to be injected with an instance of "
+"<literal>org.jboss.seam.log.Log</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:338
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the log category. "
+"Default to the name of the component class."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:346
+#, no-c-format
+msgid "The last annotation lets you inject a request parameter value:"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:351
+#, no-c-format
+msgid "@RequestParameter"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:353
+#, no-c-format
+msgid "@RequestParameter(\"parameterName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:354
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected with the value of a "
+"request parameter. Basic type conversions are performed automatically."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:359
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the request "
+"parameter. Default to the name of the component attribute."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:370
+#, no-c-format
+msgid "Annotations for component lifecycle methods"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:371
+#, no-c-format
+msgid ""
+"These annotations allow a component to react to its own lifecycle events. "
+"They occur on methods of the component. There may be only one of each per "
+"component class."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:376
+#, no-c-format
+msgid "<literal>@Create</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:378
+#, no-c-format
+msgid "<programlisting>@Create</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:379
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when an instance of the component "
+"is instantiated by Seam. Note that create methods are only supported for "
+"JavaBeans and stateful session beans."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:385
+#, no-c-format
+msgid "<literal>@Destroy</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:387
+#, no-c-format
+msgid "<programlisting>@Destroy</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:388
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when the context ends and its "
+"context variables are destroyed. Note that create methods are only supported "
+"for JavaBeans and stateful session beans."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:391
+#, no-c-format
+msgid ""
+"Note that all stateful session bean components <emphasis>must</emphasis> "
+"define a method annotated <literal>@Destroy @Remove</literal> in order to "
+"guarantee destruction of the stateful bean when a context ends."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:394
+#, no-c-format
+msgid ""
+"Destroy methods should be used only for cleanup. <emphasis>Seam catches, "
+"logs and swallows any exception that propagates out of a destroy method.</"
+"emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:400
+#, no-c-format
+msgid "@Observer"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:402
+#, no-c-format
+msgid "@Observer(\"somethingChanged\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:403
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when a component-driven event of "
+"the specified type occurs."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:406
+#, no-c-format
+msgid "@Observer(value=\"somethingChanged\",create=false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:407
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when an event of the specified "
+"type occurs but that an instance should not be created if one doesn't exist. "
+"If an instance does not exist and create is false, the event will not be "
+"observed. The default value for create is true."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:416
+#, no-c-format
+msgid "Annotations for context demarcation"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:417
+#, no-c-format
+msgid ""
+"These annotations provide declarative conversation demarcation. They appear "
+"on methods of Seam components, usually action listener methods."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:420
+#, no-c-format
+msgid ""
+"Every web request has a conversation context associated with it. Most of "
+"these conversations end at the end of the request. If you want a "
+"conversation that span multiple requests, you must \"promote\" the current "
+"conversation to a <emphasis>long-running conversation</emphasis> by calling "
+"a method marked with <literal>@Begin</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:425
+#, no-c-format
+msgid "<literal>@Begin</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:427
+#, no-c-format
+msgid "<programlisting>@Begin</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:428
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation begins when this method returns a "
+"non-null outcome without exception."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:431
+#, no-c-format
+msgid "@Begin(ifOutcome={\"success\", \"continue\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:432
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation begins when this action listener "
+"method returns with one of the given outcomes."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:435
+#, no-c-format
+msgid "@Begin(join=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:436
+#, no-c-format
+msgid ""
+"Specifies that if a long-running conversation is already in progress, the "
+"conversation context is simply propagated."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:439
+#, no-c-format
+msgid "@Begin(nested=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:440
+#, no-c-format
+msgid ""
+"Specifies that if a long-running conversation is already in progress, a new "
+"<emphasis>nested</emphasis> conversation context begins. The nested "
+"conversation will end when the next <literal>@End</literal> is encountered, "
+"and the outer conversation will resume. It is perfectly legal for multiple "
+"nested conversations to exist concurrently in the same outer conversation."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:443
+#, no-c-format
+msgid "@Begin(pageflow=\"process definition name\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:444
+#, no-c-format
+msgid ""
+"Specifies a jBPM process definition name that defines the pageflow for this "
+"conversation."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:447
+#, no-c-format
+msgid "@Begin(flushMode=FlushModeType.MANUAL)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:448
+#, no-c-format
+msgid ""
+"Specify the flush mode of any Seam-managed persistence contexts. "
+"<literal>flushMode=FlushModeType.MANUAL</literal> supports the use of "
+"<emphasis>atomic conversations</emphasis> where all write operations are "
+"queued in the conversation context until an explicit call to <literal>flush()"
+"</literal> (which usually occurs at the end of the conversation)."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:454
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in a new long-running conversation context."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:459
+#, no-c-format
+msgid ""
+"<literal>join</literal> &mdash; determines the behavior when a long-running "
+"conversation is already in progress. If <literal>true</literal>, the context "
+"is propagated. If <literal>false</literal>, an exception is thrown. Default "
+"to <literal>false</literal>. This setting is ignored when "
+"<literal>nested=true</literal> is specified"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:464
+#, no-c-format
+msgid ""
+"<literal>nested</literal> &mdash; specifies that a nested conversation "
+"should be started if a long-running conversation is already in progress."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:469 Annotations.xml:526 Annotations.xml:550
+#, no-c-format
+msgid ""
+"<literal>flushMode</literal> &mdash; set the flush mode of any Seam-managed "
+"Hibernate sessions or JPA persistence contexts that are created during this "
+"conversation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:474
+#, no-c-format
+msgid ""
+"<literal>pageflow</literal> &mdash; a process definition name of a jBPM "
+"process definition deployed via <literal>org.jboss.seam.core.jbpm."
+"pageflowDefinitions.</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:483
+#, no-c-format
+msgid "<literal>@End</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:485
+#, no-c-format
+msgid "<programlisting>@End</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:486
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation ends when this method returns a "
+"non-null outcome without exception."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:489
+#, no-c-format
+msgid ""
+"@End(ifOutcome={\"success\", \"error\"}, evenIfException={SomeException."
+"class, OtherException.class})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:490
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation ends when this action listener "
+"method returns with one of the given outcomes or throws one of the specified "
+"classes of exception."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:496
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in the end of the current long-running conversation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:501 Annotations.xml:585
+#, no-c-format
+msgid ""
+"<literal>beforeRedirect</literal> &mdash; by default, the conversation will "
+"not actually be destroyed until after any redirect has occurred. Setting "
+"<literal>beforeRedirect=true</literal> specifies that the conversation "
+"should be destroyed at the end of the current request, and that the redirect "
+"will be processed in a new temporary conversation context."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:510
+#, no-c-format
+msgid "<literal>@StartTask</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:512
+#, no-c-format
+msgid "<programlisting>@StartTask</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:513
+#, no-c-format
+msgid ""
+"\"Starts\" a jBPM task. Specifies that a long-running conversation begins "
+"when this method returns a non-null outcome without exception. This "
+"conversation is associated with the jBPM task specified in the named request "
+"parameter. Within the context of this conversation, a business process "
+"context is also defined, for the business process instance of the task "
+"instance."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:516
+#, no-c-format
+msgid ""
+"The jBPM <literal>TaskInstance</literal> will be available in a request "
+"context variable named <literal>taskInstance</literal>. The jPBM "
+"<literal>ProcessInstance</literal> will be available in a request context "
+"variable named <literal>processInstance</literal>. (Of course, these objects "
+"are available for injection via <literal>@In</literal>.)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:521 Annotations.xml:545
+#, no-c-format
+msgid ""
+"<literal>taskIdParameter</literal> &mdash; the name of a request parameter "
+"which holds the id of the task. Default to <literal>\"taskId\"</literal>, "
+"which is also the default used by the Seam <literal>taskList</literal> JSF "
+"component."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:534
+#, no-c-format
+msgid "<literal>@BeginTask</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:536
+#, no-c-format
+msgid "<programlisting>@BeginTask</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:537
+#, no-c-format
+msgid ""
+"Resumes work on an incomplete jBPM task. Specifies that a long-running "
+"conversation begins when this method returns a non-null outcome without "
+"exception. This conversation is associated with the jBPM task specified in "
+"the named request parameter. Within the context of this conversation, a "
+"business process context is also defined, for the business process instance "
+"of the task instance."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:540
+#, no-c-format
+msgid ""
+"The jBPM <literal>TaskInstance</literal> will be available in a request "
+"context variable named <literal>taskInstance</literal>. The jPBM "
+"<literal>ProcessInstance</literal> will be available in a request context "
+"variable named <literal>processInstance</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:558
+#, no-c-format
+msgid "<literal>@EndTask</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:560
+#, no-c-format
+msgid "<programlisting>@EndTask</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:561
+#, no-c-format
+msgid ""
+"\"Ends\" a jBPM task. Specifies that a long-running conversation ends when "
+"this method returns a non-null outcome, and that the current task is "
+"complete. Triggers a jBPM transition. The actual transition triggered will "
+"be the default transition unless the application has called "
+"<literal>Transition.setName()</literal> on the built-in component named "
+"<literal>transition</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:564
+#, no-c-format
+msgid "@EndTask(transition=\"transitionName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:565
+#, no-c-format
+msgid "Triggers the given jBPM transition."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:568
+#, no-c-format
+msgid "@EndTask(ifOutcome={\"success\", \"continue\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:569
+#, no-c-format
+msgid ""
+"Specifies that the task ends when this method returns one of the listed "
+"outcomes."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:575
+#, no-c-format
+msgid ""
+"<literal>transition</literal> &mdash; the name of the jBPM transition to be "
+"triggered when ending the task. Defaults to the default transition."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:580
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in the end of the task."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:594
+#, no-c-format
+msgid "@CreateProcess"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:596
+#, no-c-format
+msgid "@CreateProcess(definition=\"process definition name\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:597
+#, no-c-format
+msgid ""
+"Creates a new jBPM process instance when the method returns a non-null "
+"outcome without exception. The <literal>ProcessInstance</literal> object "
+"will be available in a context variable named <literal>processInstance</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:602
+#, no-c-format
+msgid ""
+"<literal>definition</literal> &mdash; the name of the jBPM process "
+"definition deployed via <literal>org.jboss.seam.core.jbpm."
+"processDefinitions</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:610
+#, no-c-format
+msgid "@ResumeProcess"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:612
+#, no-c-format
+msgid "@ResumeProcess(processIdParameter=\"processId\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:613
+#, no-c-format
+msgid ""
+"Re-enters the scope of an existing jBPM process instance when the method "
+"returns a non-null outcome without exception. The <literal>ProcessInstance</"
+"literal> object will be available in a context variable named "
+"<literal>processInstance</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:618
+#, no-c-format
+msgid ""
+"<literal>processIdParameter</literal> &mdash; the name a request parameter "
+"holding the process id. Default to <literal>\"processId\"</literal>."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:629
+#, no-c-format
+msgid "Annotations for transaction demarcation"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:630
+#, no-c-format
+msgid ""
+"Seam provides an annotation that lets you force a rollback of the JTA "
+"transaction for certain action listener outcomes."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:635
+#, no-c-format
+msgid "@Rollback"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:637
+#, no-c-format
+msgid "@Rollback(ifOutcome={\"failure\", \"not-found\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:638
+#, no-c-format
+msgid ""
+"If the outcome of the method matches any of the listed outcomes, or if no "
+"outcomes are listed, set the transaction to rollback only when the method "
+"completes."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:643
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; the JSF outcomes that cause a "
+"transaction rollback (no outcomes is interpreted to mean any outcome)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:651
+#, no-c-format
+msgid "<literal>@Transactional</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:653
+#, no-c-format
+msgid "<programlisting>@Transactional</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:654
+#, no-c-format
+msgid ""
+"Specifies that a JavaBean component should have a similar transactional "
+"behavior to the default behavior of a session bean component. ie. method "
+"invocations should take place in a transaction, and if no transaction exists "
+"when the method is called, a transaction will be started just for that "
+"method. This annotation may be applied at either class or method level."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:660
+#, no-c-format
+msgid ""
+"Seam applications usually use the standard EJB3 annotations for all other "
+"transaction demarcation needs."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:666
+#, no-c-format
+msgid "Annotations for exceptions"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:667
+#, no-c-format
+msgid ""
+"These annotations let you specify how Seam should handle an exception that "
+"propagates out of a Seam component."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:672
+#, no-c-format
+msgid "@Redirect"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:674
+#, no-c-format
+msgid "@Redirect(viewId=\"error.jsp\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:675
+#, no-c-format
+msgid ""
+"Specifies that the annotated exception causes a browser redirect to a "
+"specified view id."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:680
+#, no-c-format
+msgid ""
+"<literal>viewId</literal> &mdash; specifies the JSF view id to redirect to."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:685
+#, no-c-format
+msgid ""
+"<literal>message</literal> &mdash; a message to be displayed, default to the "
+"exception message."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:690 Annotations.xml:716
+#, no-c-format
+msgid ""
+"<literal>end</literal> &mdash; specifies that the long-running conversation "
+"should end, default to <literal>false</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:698
+#, no-c-format
+msgid "@HttpError"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:700
+#, no-c-format
+msgid "@HttpError(errorCode=404)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:701
+#, no-c-format
+msgid "Specifies that the annotated exception causes a HTTP error to be sent."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:706
+#, no-c-format
+msgid ""
+"<literal>errorCode</literal> &mdash; the HTTP error code, default to "
+"<literal>500</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:711
+#, no-c-format
+msgid ""
+"<literal>message</literal> &mdash; a message to be sent with the HTTP error, "
+"default to the exception message."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:727
+#, no-c-format
+msgid "Annotations for validation"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:728
+#, no-c-format
+msgid ""
+"This annotation triggers Hibernate Validator. It appears on a method of a "
+"Seam component, almost always an action listener method."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:731
+#, no-c-format
+msgid ""
+"Please refer to the documentation for the Hibernate Annotations package for "
+"information about the annotations defined by the Hibernate Validator "
+"framework."
+msgstr ""
+
+#. Tag: emphasis
+#: Annotations.xml:735
+#, no-c-format
+msgid ""
+"Note that use of <literal>@IfInvalid</literal> is now semi-deprecated and "
+"<literal>&lt;s:validateAll&gt;</literal> is now preferred."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:739
+#, no-c-format
+msgid "@IfInvalid"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:741
+#, no-c-format
+msgid "@IfInvalid(outcome=\"invalid\", refreshEntities=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:742
+#, no-c-format
+msgid ""
+"Specifies that Hibernate Validator should validate the component before the "
+"method is invoked. If the invocation fails, the specified outcome will be "
+"returned, and the validation failure messages returned by Hibernate "
+"Validator will be added to the <literal>FacesContext</literal>. Otherwise, "
+"the invocation will proceed."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:747
+#, no-c-format
+msgid ""
+"<literal>outcome</literal> &mdash; the JSF outcome when validation fails."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:752
+#, no-c-format
+msgid ""
+"<literal>refreshEntities</literal> &mdash; specifies that any invalid entity "
+"in the managed state should be refreshed from the database when validation "
+"fails. Default to <literal>false</literal>. (Useful with extended "
+"persistence contexts.)"
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:763
+#, no-c-format
+msgid "Annotations for Seam Remoting"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:764
+#, no-c-format
+msgid ""
+"Seam Remoting requires that the local interface of a session bean be "
+"annotated with the following annotation:"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:769
+#, no-c-format
+msgid "@WebRemote"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:771
+#, no-c-format
+msgid "@WebRemote(exclude=\"path.to.exclude\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:772
+#, no-c-format
+msgid ""
+"Indicates that the annotated method may be called from client-side "
+"JavaScript. The <literal>exclude</literal> property is optional and allows "
+"objects to be excluded from the result's object graph (see the Remoting "
+"chapter for more details)."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:781
+#, no-c-format
+msgid "Annotations for Seam interceptors"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:782
+#, no-c-format
+msgid "The following annotations appear on Seam interceptor classes."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:785
+#, no-c-format
+msgid ""
+"Please refer to the documentation for the EJB 3.0 specification for "
+"information about the annotations required for EJB interceptor definition."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:790
+#, no-c-format
+msgid "@Interceptor"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:792
+#, no-c-format
+msgid "@Interceptor(stateless=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:793
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is stateless and Seam may optimize "
+"replication."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:796
+#, no-c-format
+msgid "@Interceptor(type=CLIENT)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:797
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is a \"client-side\" interceptor that is "
+"called before the EJB container."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:800
+#, no-c-format
+msgid "@Interceptor(around={SomeInterceptor.class, OtherInterceptor.class})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:801
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is positioned higher in the stack than the "
+"given interceptors."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:804
+#, no-c-format
+msgid "@Interceptor(within={SomeInterceptor.class, OtherInterceptor.class})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:805
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is positioned deeper in the stack than the "
+"given interceptors."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:814
+#, no-c-format
+msgid "Annotations for asynchronicity"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:815
+#, no-c-format
+msgid ""
+"The following annotations are used to declare an asynchronous method, for "
+"example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:818
+#, no-c-format
+msgid ""
+"@Asynchronous public void scheduleAlert(Alert alert, @Expiration Date date) "
+"{ ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:819
+#, no-c-format
+msgid ""
+"@Asynchronous public Timer scheduleAlerts(Alert alert, @Expiration Date "
+"date, \n"
+"    @IntervalDuration long interval) { ... }"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:822
+#, no-c-format
+msgid "<literal>@Asynchronous</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:824
+#, no-c-format
+msgid "<programlisting>@Asynchronous</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:825
+#, no-c-format
+msgid "Specifies that the method call is processed asynchronously."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:831
+#, no-c-format
+msgid "<literal>@Duration</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:833
+#, no-c-format
+msgid "<programlisting>@Duration</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:834
+#, no-c-format
+msgid ""
+"Specifies that a parameter of the asynchronous call is the duration before "
+"the call is processed (or first processed for recurring calls)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:840
+#, no-c-format
+msgid "<literal>@Expiration</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:842
+#, no-c-format
+msgid "<programlisting>@Expiration</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:843
+#, no-c-format
+msgid ""
+"Specifies that a parameter of the asynchronous call is the datetime at which "
+"the call is processed (or first processed for recurring calls)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:849
+#, no-c-format
+msgid "<literal>@IntervalDuration</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:851
+#, no-c-format
+msgid "<programlisting>@IntervalDuration</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:852
+#, no-c-format
+msgid ""
+"Specifies that an asynchronous method call recurs, and that the annotationed "
+"parameter is duration between recurrences."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:861
+#, no-c-format
+msgid "Annotations for use with JSF <literal>dataTable</literal>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:862
+#, no-c-format
+msgid ""
+"The following annotations make it easy to implement clickable lists backed "
+"by a stateful session bean. They appear on attributes."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:867
+#, no-c-format
+msgid "@DataModel"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:869
+#, no-c-format
+msgid "@DataModel(\"variableName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:870
+#, no-c-format
+msgid ""
+"Exposes an attribute of type <literal>List</literal>, <literal>Map</"
+"literal>, <literal>Set</literal> or <literal>Object[]</literal> as a JSF "
+"<literal>DataModel</literal> into the scope of the owning component (or the "
+"<literal>EVENT</literal> scope if the owning component is "
+"<literal>STATELESS</literal>). In the case of <literal>Map</literal>, each "
+"row of the <literal>DataModel</literal> is a <literal>Map.Entry</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:875
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; name of the conversation context variable. "
+"Default to the attribute name."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:880
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; if <literal>scope=ScopeType.PAGE</literal> "
+"is explicitly specified, the <literal>DataModel</literal> will be kept in "
+"the <literal>PAGE</literal> context."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:888
+#, no-c-format
+msgid "<literal>@DataModelSelection</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:890
+#, no-c-format
+msgid "<programlisting>@DataModelSelection</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:891
+#, no-c-format
+msgid ""
+"Injects the selected value from the JSF <literal>DataModel</literal> (this "
+"is the element of the underlying collection, or the map value)."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:896 Annotations.xml:912
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; name of the conversation context variable. "
+"Not needed if there is exactly one <literal>@DataModel</literal> in the "
+"component."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:904
+#, no-c-format
+msgid "<literal>@DataModelSelectionIndex</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:906
+#, no-c-format
+msgid "<programlisting>@DataModelSelectionIndex</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:907
+#, no-c-format
+msgid ""
+"Exposes the selection index of the JSF <literal>DataModel</literal> as an "
+"attribute of the component (this is the row number of the underlying "
+"collection, or the map key)."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:923
+#, no-c-format
+msgid "Meta-annotations for databinding"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:924
+#, no-c-format
+msgid ""
+"These meta-annotations make it possible to implement similar functionality "
+"to <literal>@DataModel</literal> and <literal>@DataModelSelection</literal> "
+"for other datastructures apart from lists."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:929
+#, no-c-format
+msgid "@DataBinderClass"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:931
+#, no-c-format
+msgid "@DataBinderClass(DataModelBinder.class)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:932
+#, no-c-format
+msgid "Specifies that an annotation is a databinding annotation."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:938
+#, no-c-format
+msgid "@DataSelectorClass"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:940
+#, no-c-format
+msgid "@DataSelectorClass(DataModelSelector.class)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:941
+#, no-c-format
+msgid "Specifies that an annotation is a dataselection annotation."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:950
+#, no-c-format
+msgid "Annotations for packaging"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:951
+#, no-c-format
+msgid ""
+"This annotation provides a mechanism for declaring information about a set "
+"of components that are packaged together. It can be applied to any Java "
+"package."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:956
+#, no-c-format
+msgid "@Namespace"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:958
+#, no-c-format
+msgid "@Namespace(value=\"http://jboss.com/products/seam/example/seampay\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:959
+#, no-c-format
+msgid ""
+"Specifies that components in the current package are associated with the "
+"given namespace. The declared namespace can be used as an XML namespace in a "
+"<literal>components.xml</literal> file to simplify application configuration."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:962
+#, no-c-format
+msgid ""
+"@Namespace(value=\"http://jboss.com/products/seam/core\", prefix=\"org.jboss."
+"seam.core\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:963
+#, no-c-format
+msgid ""
+"Specifies a namespace to associate with a given package. Additionally, it "
+"specifies a component name prefix to be applied to component names specified "
+"in the XML file. For example, an XML element named <literal>microcontainer</"
+"literal> that is associated with this namespace would be understood to "
+"actually refere to a component named <literal>org.jboss.seam.core."
+"microcontainer</literal>."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Book_Info.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Book_Info.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Book_Info.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,38 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Book_Info.xml:10
+#, no-c-format
+msgid "Seam - Contextual Components"
+msgstr ""
+
+#. Tag: subtitle
+#: Book_Info.xml:11
+#, no-c-format
+msgid "A Framework for Java EE 5"
+msgstr ""
+
+#. Tag: para
+#: Book_Info.xml:15
+#, no-c-format
+msgid "This book is a Reference Guide for Seam"
+msgstr ""
+
+#. Tag: holder
+#: Book_Info.xml:36
+#, no-c-format
+msgid "&FORMAL-RHI;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Cache.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Cache.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Cache.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,318 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Cache.xml:10
+#, no-c-format
+msgid "Caching"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:11
+#, no-c-format
+msgid ""
+"In almost all enterprise applications, the database is the primary "
+"bottleneck, and the least scalable tier of the runtime environment. People "
+"from a PHP/Ruby environment will try to tell you that so-called \"shared "
+"nothing\" architectures scale well. While that may be literally true, I "
+"don't know of many interesting multi-user applications which can be "
+"implemented with no sharing of resources between different nodes of the "
+"cluster. What these silly people are really thinking of is a \"share nothing "
+"except for the database\" architecture. Of course, sharing the database is "
+"the primary problem with scaling a multi-user application&mdash;so the claim "
+"that this architecture is highly scalable is absurd, and tells you a lot "
+"about the kind of applications that these folks spend most of their time "
+"working on."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:14
+#, no-c-format
+msgid ""
+"Almost anything we can possibly do to share the database <emphasis>less "
+"often</emphasis> is worth doing."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:17
+#, no-c-format
+msgid ""
+"This calls for a cache. Well, not just one cache. A well designed Seam "
+"application will feature a rich, multi-layered caching strategy that impacts "
+"every layer of the application:"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:22
+#, no-c-format
+msgid ""
+"The database, of course, has its own cache. This is super-important, but "
+"can't scale like a cache in the application tier."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:27
+#, no-c-format
+msgid ""
+"Your ORM solution (Hibernate, or some other JPA implementation) has a second-"
+"level cache of data from the database. This is a very powerful capability, "
+"but is often misused. In a clustered environment, keeping the data in the "
+"cache transactionally consistent across the whole cluster, and with the "
+"database, is quite expensive. It makes most sense for data which is shared "
+"between many users, and is updated rarely. In traditional stateless "
+"architectures, people often try to use the second-level cache for "
+"conversational state. This is always bad, and is especially wrong in Seam."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:32
+#, no-c-format
+msgid ""
+"The Seam conversation context is a cache of conversational state. Components "
+"you put into the conversation context can hold and cache state relating to "
+"the current user interaction."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:37
+#, no-c-format
+msgid ""
+"In particular, the Seam-managed persistence context (or an extended EJB "
+"container-managed persistence context associated with a conversation-scoped "
+"stateful session bean) acts as a cache of data that has been read in the "
+"current conversation. This cache tends to have a pretty high hitrate! Seam "
+"optimizes the replication of Seam-managed persistence contexts in a "
+"clustered environment, and there is no requirement for transactional "
+"consistency with the database (optimistic locking is sufficient) so you "
+"don't need to worry too much about the performance implications of this "
+"cache, unless you read thousands of objects into a single persistence "
+"context."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:42
+#, no-c-format
+msgid ""
+"The application can cache non-transactional state in the Seam application "
+"context. State kept in the application context is of course not visible to "
+"other nodes in the cluster."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:47
+#, no-c-format
+msgid ""
+"The application can cache transactional state using the Seam "
+"<literal>pojoCache</literal> component, which integrates JBossCache into the "
+"Seam environment. This state will be visible to other nodes if you run JBoss "
+"cache in a clustered mode."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:52
+#, no-c-format
+msgid ""
+"Finally, Seam lets you cache rendered fragments of a JSF page. Unlike the "
+"ORM second-level cache, this cache is not automatically invalidated when "
+"data changes, so you need to write application code to perform explicit "
+"invalidation, or set appropriate expiration policies."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:57
+#, no-c-format
+msgid ""
+"For more information about the second-level cache, you'll need to refer to "
+"the documentation of your ORM solution, since this is an extremely complex "
+"topic. In this section we'll discuss the use of JBossCache directly, via the "
+"<literal>pojoCache</literal> component, or as the page fragment cache, via "
+"the <literal>&lt;s:cache&gt;</literal> control."
+msgstr ""
+
+#. Tag: title
+#: Cache.xml:61
+#, no-c-format
+msgid "Using JBossCache in Seam"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:62
+#, no-c-format
+msgid ""
+"The built-in <literal>pojoCache</literal> component manages an instance of "
+"<literal>org.jboss.cache.aop.PojoCache</literal>. You can safely put any "
+"immutable Java object in the cache, and it will be replicated across the "
+"cluster (assuming that replication is enabled). If you want to keep mutable "
+"objects in the cache, you'll need to run the JBossCache bytecode "
+"preprocessor to ensure that changes to the objects will be automatically "
+"detected and replicated."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:65
+#, no-c-format
+msgid ""
+"To use <literal>pojoCache</literal>, all you need to do is put the "
+"JBossCache jars in the classpath, and provide a resource named "
+"<literal>treecache.xml</literal> with an appropriate cache configuration. "
+"JBossCache has many scary and confusing configuration settings, so we won't "
+"discuss them here. Please refer to the JBossCache documentation for more "
+"information."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:68
+#, no-c-format
+msgid ""
+"For an EAR depoyment of Seam, we recommend that the JBossCache jars and "
+"configuration go directly into the EAR. Make sure you declare the jars in "
+"<literal>application.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:71
+#, no-c-format
+msgid "Now you can inject the cache into any Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:74
+#, no-c-format
+msgid ""
+"@Name(\"chatroom\")\n"
+"public class Chatroom {\n"
+"    @In PojoCache pojoCache;\n"
+"    \n"
+"    public void join(String username) {\n"
+"      try\n"
+"      {\n"
+"         Set&lt;String&gt; userList = (Set&lt;String&gt;) pojoCache.get"
+"(\"chatroom\", \"userList\");\n"
+"         if (userList==null) \n"
+"         {\n"
+"            userList = new HashSet&lt;String&gt;();\n"
+"            pojoCache.put(\"chatroom\", \"userList\", userList);\n"
+"         }\n"
+"         userList.put(username);\n"
+"      }\n"
+"      catch (CacheException ce)\n"
+"      {\n"
+"         throw new RuntimeException(ce);\n"
+"      }\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:75
+#, no-c-format
+msgid ""
+"If you want to have multiple JBossCache configurations in your application, "
+"use <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:78
+#, no-c-format
+msgid ""
+"&lt;core:pojo-cache name=\"myCache\" cfg-resource-name=\"myown/cache.xml\"/"
+"&gt;"
+msgstr ""
+
+#. Tag: title
+#: Cache.xml:82
+#, no-c-format
+msgid "Page fragment caching"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:83
+#, no-c-format
+msgid ""
+"The most interesting user of JBossCache is the <literal>&lt;s:cache&gt;</"
+"literal> tag, Seam's solution to the problem of page fragment caching in "
+"JSF. <literal>&lt;s:cache&gt;</literal> uses <literal>pojoCache</literal> "
+"internally, so you need to follow the steps listed above before you can use "
+"it. (Put the jars in the EAR, wade through the scary configuration options, "
+"etc.)"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:86
+#, no-c-format
+msgid ""
+"<literal>&lt;s:cache&gt;</literal> is used for caching some rendered content "
+"which changes rarely. For example, the welcome page of our blog displays the "
+"recent blog entries:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:89
+#, no-c-format
+msgid ""
+"&lt;s:cache key=\"recentEntries-#{blog.id}\" region=\"welcomePageFragments"
+"\"&gt;\n"
+"   &lt;h:dataTable value=\"#{blog.recentEntries}\" var=\"blogEntry\"&gt;\n"
+"      &lt;h:column&gt;\n"
+"         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"         &lt;div&gt;\n"
+"            &lt;s:formattedText value=\"#{blogEntry.body}\"/&gt;\n"
+"         &lt;/div&gt;\n"
+"      &lt;/h:column&gt;\n"
+"   &lt;/h:dataTable&gt;\n"
+"&lt;/s:cache&gt;"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:90
+#, no-c-format
+msgid ""
+"The <literal>key</literal> let's you have multiple cached versions of each "
+"page fragment. In this case, there is one cached version per blog. The "
+"<literal>region</literal> determines the JBossCache node that all version "
+"will be stored in. Different nodes may have different expiry policies. "
+"(That's the stuff you set up using the aforementioned scary configuration "
+"options.)"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:93
+#, no-c-format
+msgid ""
+"Of course, the big problem with <literal>&lt;s:cache&gt;</literal> is that "
+"it is too stupid to know when the underlying data changes (for example, when "
+"the blogger posts a new entry). So you need to evict the cached fragment "
+"manually:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:96
+#, no-c-format
+msgid ""
+"public void post() {\n"
+"    ...\n"
+"    entityManager.persist(blogEntry);\n"
+"    pojoCache.remove(\"welcomePageFragments\", \"recentEntries-\" + blog."
+"getId() );\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:97
+#, no-c-format
+msgid ""
+"Alternatively, if it is not critical that changes are immediately visible to "
+"the user, you could set a short expiry time on the JbossCache node."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Components.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Components.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Components.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2007 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Components.xml:10
+#, no-c-format
+msgid "Built-in Seam components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:11
+#, no-c-format
+msgid ""
+"This chapter describes Seam's built-in components, and their configuration "
+"properties."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:14
+#, no-c-format
+msgid ""
+"Note that you can replace any of the built in components with your own "
+"implementations simply by specifying the name of one of the built in "
+"components on your own class using <literal>@Name</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:17
+#, no-c-format
+msgid ""
+"Note also that even though all the built in components use a qualified name, "
+"most of them are aliased to unqualified names by default. These aliases "
+"specify <literal>auto-create=\"true\"</literal>, so you do not need to use "
+"<literal>create=true</literal> when injecting built-in components by their "
+"unqualified name."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:21
+#, no-c-format
+msgid "Context injection components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:22
+#, no-c-format
+msgid ""
+"The first set of built in components exist purely to support injection of "
+"various contextual objects. For example, the following component instance "
+"variable would have the Seam session context object injected:"
+msgstr ""
+
+#. Tag: programlisting
+#: Components.xml:25
+#, no-c-format
+msgid "@In private Context sessionContext;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:28
+#, no-c-format
+msgid "org.jboss.seam.core.eventContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:30
+#, no-c-format
+msgid "Manager component for the event context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:36
+#, no-c-format
+msgid "org.jboss.seam.core.pageContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:38
+#, no-c-format
+msgid "Manager component for the page context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:44
+#, no-c-format
+msgid "org.jboss.seam.core.conversationContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:46
+#, no-c-format
+msgid "Manager component for the conversation context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:52
+#, no-c-format
+msgid "org.jboss.seam.core.sessionContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:54
+#, no-c-format
+msgid "Manager component for the session context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:60
+#, no-c-format
+msgid "org.jboss.seam.core.applicationContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:62
+#, no-c-format
+msgid "Manager component for the appication context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:68
+#, no-c-format
+msgid "org.jboss.seam.core.businessProcessContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:70
+#, no-c-format
+msgid "Manager component for the business process context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:76
+#, no-c-format
+msgid "org.jboss.seam.core.facesContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:78
+#, no-c-format
+msgid ""
+"Manager component for the <literal>FacesContext</literal> context object "
+"(not a true Seam context)"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:84 Components.xml:267 Components.xml:441 Components.xml:572
+#, no-c-format
+msgid "All of these components are always installed."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:90
+#, no-c-format
+msgid "Utility components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:91
+#, no-c-format
+msgid "These components are merely useful."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:96
+#, no-c-format
+msgid "org.jboss.seam.core.facesMessages"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:98
+#, no-c-format
+msgid "Allows faces success messages to propagate across a browser redirect."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:103
+#, no-c-format
+msgid ""
+"<literal>add(FacesMessage facesMessage)</literal> &mdash; add a faces "
+"message, which will be displayed during the next render response phase that "
+"occurs in the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:108
+#, no-c-format
+msgid ""
+"<literal>add(String messageTemplate)</literal> &mdash; add a faces message, "
+"rendered from the given message template which may contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:113
+#, no-c-format
+msgid ""
+"<literal>add(Severity severity, String messageTemplate)</literal> &mdash; "
+"add a faces message, rendered from the given message template which may "
+"contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:118
+#, no-c-format
+msgid ""
+"<literal>addFromResourceBundle(String key)</literal> &mdash; add a faces "
+"message, rendered from a message template defined in the Seam resource "
+"bundle which may contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:123
+#, no-c-format
+msgid ""
+"<literal>addFromResourceBundle(Severity severity, String key)</literal> "
+"&mdash; add a faces message, rendered from a message template defined in the "
+"Seam resource bundle which may contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:128
+#, no-c-format
+msgid "<literal>clear()</literal> &mdash; clear all messages."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:136
+#, no-c-format
+msgid "org.jboss.seam.core.redirect"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:138
+#, no-c-format
+msgid ""
+"A convenient API for performing redirects with parameters (this is "
+"especially useful for bookmarkable search results screens)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:143
+#, no-c-format
+msgid ""
+"<literal>redirect.viewId</literal> &mdash; the JSF view id to redirect to."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:148
+#, no-c-format
+msgid ""
+"<literal>redirect.conversationPropagationEnabled</literal> &mdash; "
+"determines whether the conversation will propagate across the redirect."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:153
+#, no-c-format
+msgid ""
+"<literal>redirect.parameters</literal> &mdash; a map of request parameter "
+"name to value, to be passed in the redirect request."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:158
+#, no-c-format
+msgid "<literal>execute()</literal> &mdash; perform the redirect immediately."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:163
+#, no-c-format
+msgid ""
+"<literal>captureCurrentRequest()</literal> &mdash; stores the view id and "
+"request parameters of the current GET request (in the conversation context), "
+"for later use by calling <literal>execute()</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:171
+#, no-c-format
+msgid "org.jboss.seam.core.httpError"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:173
+#, no-c-format
+msgid "A convenient API for sending HTTP errors."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:179
+#, no-c-format
+msgid "org.jboss.seam.core.events"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:181
+#, no-c-format
+msgid ""
+"An API for raising events that can be observed via <literal>@Observer</"
+"literal> methods, or method bindings in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:186
+#, no-c-format
+msgid ""
+"<literal>raiseEvent(String type)</literal> &mdash; raise an event of a "
+"particular type and distribute to all observers."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:191
+#, no-c-format
+msgid ""
+"<literal>raiseAsynchronousEvent(String type)</literal> &mdash; raise an "
+"event to be processed asynchronously by the EJB3 timer service."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:196
+#, no-c-format
+msgid ""
+"<literal>raiseTimedEvent(String type, ....)</literal> &mdash; schedule an "
+"event to be processed asynchronously by the EJB3 timer service."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:201
+#, no-c-format
+msgid ""
+"<literal>addListener(String type, String methodBinding)</literal> &mdash; "
+"add an observer for a particular event type."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:209
+#, no-c-format
+msgid "org.jboss.seam.core.interpolator"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:211
+#, no-c-format
+msgid "An API for interpolating the values of JSF EL expressions in Strings."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:216
+#, no-c-format
+msgid ""
+"<literal>interpolate(String template)</literal> &mdash; scan the template "
+"for JSF EL expressions of the form <literal>#{...}</literal> and replace "
+"them with their evaluated values."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:224
+#, no-c-format
+msgid "org.jboss.seam.core.expressions"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:226
+#, no-c-format
+msgid "An API for creating value and method bindings."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:231
+#, no-c-format
+msgid ""
+"<literal>createValueBinding(String expression)</literal> &mdash; create a "
+"value binding object."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:236
+#, no-c-format
+msgid ""
+"<literal>createMethodBinding(String expression)</literal> &mdash; create a "
+"method binding object."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:244
+#, no-c-format
+msgid "org.jboss.seam.core.pojoCache"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:246
+#, no-c-format
+msgid ""
+"Manager component for a JBoss Cache <literal>PojoCache</literal> instance."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:251
+#, no-c-format
+msgid ""
+"<literal>pojoCache.cfgResourceName</literal> &mdash; the name of the "
+"configuration file. Default to <literal>treecache.xml</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:259
+#, no-c-format
+msgid "org.jboss.seam.core.uiComponent"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:261
+#, no-c-format
+msgid ""
+"Allows access to a JSF <literal>UIComponent</literal> by its id from the EL. "
+"For example, we can write <literal>@In(\"#{uiComponent['myForm:address']."
+"value}\")</literal>."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:273
+#, no-c-format
+msgid "Components for internationalization and themes"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:274
+#, no-c-format
+msgid ""
+"The next group of components make it easy to build internationalized user "
+"interfaces using Seam."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:279
+#, no-c-format
+msgid "org.jboss.seam.core.locale"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:281
+#, no-c-format
+msgid "The Seam locale. The locale is session scoped."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:287
+#, no-c-format
+msgid "org.jboss.seam.core.timezone"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:289
+#, no-c-format
+msgid "The Seam timezone. The timezone is session scoped."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:295
+#, no-c-format
+msgid "org.jboss.seam.core.resourceBundle"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:297
+#, no-c-format
+msgid ""
+"The Seam resource bundle. The resource bundle is session scoped. The Seam "
+"resource bundle performs a depth-first search for keys in a list of Java "
+"resource bundles."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:302
+#, no-c-format
+msgid ""
+"<literal>resourceBundle.bundleNames</literal> &mdash; the names of the Java "
+"resource bundles to search. Default to <literal>messages</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:310
+#, no-c-format
+msgid "org.jboss.seam.core.localeSelector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:312
+#, no-c-format
+msgid ""
+"Supports selection of the locale either at configuration time, or by the "
+"user at runtime."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:317 Components.xml:367
+#, no-c-format
+msgid "<literal>select()</literal> &mdash; select the specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:322
+#, no-c-format
+msgid ""
+"<literal>localeSelector.locale</literal> &mdash; the actual <literal>java."
+"util.Locale</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:327
+#, no-c-format
+msgid ""
+"<literal>localeSelector.localeString</literal> &mdash; the stringified "
+"representation of the locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:332
+#, no-c-format
+msgid ""
+"<literal>localeSelector.language</literal> &mdash; the language for the "
+"specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:337
+#, no-c-format
+msgid ""
+"<literal>localeSelector.country</literal> &mdash; the country for the "
+"specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:342
+#, no-c-format
+msgid ""
+"<literal>localeSelector.variant</literal> &mdash; the variant for the "
+"specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:347
+#, no-c-format
+msgid ""
+"<literal>localeSelector.supportedLocales</literal> &mdash; a list of "
+"<literal>SelectItem</literal>s representing the supported locales listed in "
+"<literal>jsf-config.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:352
+#, no-c-format
+msgid ""
+"<literal>localeSelector.cookieEnabled</literal> &mdash; specifies that the "
+"locale selection should be persisted via a cookie."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:360
+#, no-c-format
+msgid "org.jboss.seam.core.timezoneSelector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:362
+#, no-c-format
+msgid ""
+"Supports selection of the timezone either at configuration time, or by the "
+"user at runtime."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:372
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.timezone</literal> &mdash; the actual "
+"<literal>java.util.TimeZone</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:377
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.timeZoneId</literal> &mdash; the stringified "
+"representation of the timezone."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:382
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.cookieEnabled</literal> &mdash; specifies that the "
+"timezone selection should be persisted via a cookie."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:390
+#, no-c-format
+msgid "org.jboss.seam.core.messages"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:392
+#, no-c-format
+msgid ""
+"A map containing internationalized messages rendered from message templates "
+"defined in the Seam resource bundle."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:398
+#, no-c-format
+msgid "org.jboss.seam.theme.themeSelector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:400
+#, no-c-format
+msgid ""
+"Supports selection of the theme either at configuration time, or by the user "
+"at runtime."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:405
+#, no-c-format
+msgid "<literal>select()</literal> &mdash; select the specified theme."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:410
+#, no-c-format
+msgid ""
+"<literal>theme.availableThemes</literal> &mdash; the list of defined themes."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:415
+#, no-c-format
+msgid "<literal>themeSelector.theme</literal> &mdash; the selected theme."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:420
+#, no-c-format
+msgid ""
+"<literal>themeSelector.themes</literal> &mdash; a list of "
+"<literal>SelectItem</literal>s representing the defined themes."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:425
+#, no-c-format
+msgid ""
+"<literal>themeSelector.cookieEnabled</literal> &mdash; specifies that the "
+"theme selection should be persisted via a cookie."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:433
+#, no-c-format
+msgid "org.jboss.seam.theme.theme"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:435
+#, no-c-format
+msgid "A map containing theme entries."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:447
+#, no-c-format
+msgid "Components for controlling conversations"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:448
+#, no-c-format
+msgid ""
+"The next group of components allow control of conversations by the "
+"application or user interface."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:453
+#, no-c-format
+msgid "org.jboss.seam.core.conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:455
+#, no-c-format
+msgid ""
+"API for application control of attributes of the current Seam conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:460 Components.xml:475
+#, no-c-format
+msgid "<literal>getId()</literal> &mdash; returns the current conversation id"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:465
+#, no-c-format
+msgid ""
+"<literal>isNested()</literal> &mdash; is the current conversation a nested "
+"conversation?"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:470
+#, no-c-format
+msgid ""
+"<literal>isLongRunning()</literal> &mdash; is the current conversation a "
+"long-running conversation?"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:480
+#, no-c-format
+msgid ""
+"<literal>getParentId()</literal> &mdash; returns the conversation id of the "
+"parent conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:485
+#, no-c-format
+msgid ""
+"<literal>getRootId()</literal> &mdash; returns the conversation id of the "
+"root conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:490
+#, no-c-format
+msgid ""
+"<literal>setTimeout(int timeout)</literal> &mdash; sets the timeout for the "
+"current conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:495
+#, no-c-format
+msgid ""
+"<literal>setViewId(String outcome)</literal> &mdash; sets the view id to be "
+"used when switching back to the current conversation from the conversation "
+"switcher, conversation list, or breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:500
+#, no-c-format
+msgid ""
+"<literal>setDescription(String description)</literal> &mdash; sets the "
+"description of the current conversation to be displayed in the conversation "
+"switcher, conversation list, or breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:505
+#, no-c-format
+msgid ""
+"<literal>redirect()</literal> &mdash; redirect to the last well-defined view "
+"id for this conversation (useful after login challenges)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:510
+#, no-c-format
+msgid ""
+"<literal>leave()</literal> &mdash; exit the scope of this conversation, "
+"without actually ending the conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:515
+#, no-c-format
+msgid ""
+"<literal>begin()</literal> &mdash; begin a long-running conversation "
+"(equivalent to <literal>@Begin</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:520
+#, no-c-format
+msgid ""
+"<literal>beginPageflow(String pageflowName)</literal> &mdash; begin a long-"
+"running conversation with a pageflow (equivalent to <literal>@Begin(pageflow="
+"\"...\")</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:525
+#, no-c-format
+msgid ""
+"<literal>end()</literal> &mdash; end a long-running conversation (equivalent "
+"to <literal>@End</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:530
+#, no-c-format
+msgid ""
+"<literal>pop()</literal> &mdash; pop the conversation stack, returning to "
+"the parent conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:535
+#, no-c-format
+msgid ""
+"<literal>root()</literal> &mdash; return to the root conversation of the "
+"conversation stack."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:540
+#, no-c-format
+msgid ""
+"<literal>changeFlushMode(FlushModeType flushMode)</literal> &mdash; change "
+"the flush mode of the conversation."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:548
+#, no-c-format
+msgid "org.jboss.seam.core.conversationList"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:550
+#, no-c-format
+msgid "Manager component for the conversation list."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:556
+#, no-c-format
+msgid "org.jboss.seam.core.conversationStack"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:558
+#, no-c-format
+msgid "Manager component for the conversation stack (breadcrumbs)."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:564
+#, no-c-format
+msgid "org.jboss.seam.core.switcher"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:566
+#, no-c-format
+msgid "The conversation switcher."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:578
+#, no-c-format
+msgid "jBPM-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:579
+#, no-c-format
+msgid "These components are for use with jBPM."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:584
+#, no-c-format
+msgid "org.jboss.seam.core.pageflow"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:586
+#, no-c-format
+msgid "API control of Seam pageflows."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:591
+#, no-c-format
+msgid ""
+"<literal>isInProcess()</literal> &mdash; returns <literal>true</literal> if "
+"there is currently a pageflow in process"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:596
+#, no-c-format
+msgid ""
+"<literal>getProcessInstance()</literal> &mdash; returns jBPM "
+"<literal>ProcessInstance</literal> for the current pageflow"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:601
+#, no-c-format
+msgid ""
+"<literal>begin(String pageflowName)</literal> &mdash; begin a pageflow in "
+"the context of the current conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:606
+#, no-c-format
+msgid ""
+"<literal>reposition(String nodeName)</literal> &mdash; reposition the "
+"current pageflow to a particular node"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:614
+#, no-c-format
+msgid "org.jboss.seam.core.actor"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:616
+#, no-c-format
+msgid ""
+"API for application control of attributes of the jBPM actor associated with "
+"the current session."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:621
+#, no-c-format
+msgid ""
+"<literal>setId(String actorId)</literal> &mdash; sets the jBPM actor id of "
+"the current user."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:626
+#, no-c-format
+msgid ""
+"<literal>getGroupActorIds()</literal> &mdash; returns a <literal>Set</"
+"literal> to which jBPM actor ids for the current users groups may be added."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:634
+#, no-c-format
+msgid "org.jboss.seam.core.transition"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:636
+#, no-c-format
+msgid ""
+"API for application control of the jBPM transition for the current task."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:641
+#, no-c-format
+msgid ""
+"<literal>setName(String transitionName)</literal> &mdash; sets the jBPM "
+"transition name to be used when the current task is ended via "
+"<literal>@EndTask</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:649
+#, no-c-format
+msgid "org.jboss.seam.core.businessProcess"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:651
+#, no-c-format
+msgid ""
+"API for programmatic control of the association between the conversation and "
+"business process."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:656
+#, no-c-format
+msgid ""
+"<literal>businessProcess.taskId</literal> &mdash; the id of the task "
+"associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:661
+#, no-c-format
+msgid ""
+"<literal>businessProcess.processId</literal> &mdash; the id of the process "
+"associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:666
+#, no-c-format
+msgid ""
+"<literal>businessProcess.hasCurrentTask()</literal> &mdash; is a task "
+"instance associated with the current conversation?"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:671
+#, no-c-format
+msgid ""
+"<literal>businessProcess.hasCurrentProcess()</literal> &mdash; is a process "
+"instance associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:676
+#, no-c-format
+msgid ""
+"<literal>createProcess(String name)</literal> &mdash; create an instance of "
+"the named process definition and associate it with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:681
+#, no-c-format
+msgid ""
+"<literal>startTask()</literal> &mdash; start the task associated with the "
+"current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:686
+#, no-c-format
+msgid ""
+"<literal>endTask(String transitionName)</literal> &mdash; end the task "
+"associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:691
+#, no-c-format
+msgid ""
+"<literal>resumeTask(Long id)</literal> &mdash; associate the task with the "
+"given id with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:696
+#, no-c-format
+msgid ""
+"<literal>resumeProcess(Long id)</literal> &mdash; associate the process with "
+"the given id with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:701
+#, no-c-format
+msgid ""
+"<literal>transition(String transitionName)</literal> &mdash; trigger the "
+"transition."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:709
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstance"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:711
+#, no-c-format
+msgid "Manager component for the jBPM <literal>TaskInstance</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:717
+#, no-c-format
+msgid "org.jboss.seam.core.processInstance"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:719
+#, no-c-format
+msgid "Manager component for the jBPM <literal>ProcessInstance</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:725
+#, no-c-format
+msgid "org.jboss.seam.core.jbpmContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:727
+#, no-c-format
+msgid "Manager component for an event-scoped <literal>JbpmContext</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:733
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstanceList"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:735
+#, no-c-format
+msgid "Manager component for the jBPM task list."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:741
+#, no-c-format
+msgid "org.jboss.seam.core.pooledTaskInstanceList"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:743
+#, no-c-format
+msgid "Manager component for the jBPM pooled task list."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:749
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstanceListForType"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:751
+#, no-c-format
+msgid "Manager component for the jBPM task lists."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:757
+#, no-c-format
+msgid "org.jboss.seam.core.pooledTask"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:759
+#, no-c-format
+msgid "Action handler for pooled task assignment."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:765
+#, no-c-format
+msgid ""
+"All of these components are installed whenever the component <literal>org."
+"jboss.seam.core.jbpm</literal> is installed."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:771
+#, no-c-format
+msgid "Security-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:772
+#, no-c-format
+msgid "These components relate to web-tier security."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:777
+#, no-c-format
+msgid "org.jboss.seam.core.userPrincipal"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:779
+#, no-c-format
+msgid "Manager component for the current user <literal>Principal</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:785
+#, no-c-format
+msgid "org.jboss.seam.core.isUserInRole"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:787
+#, no-c-format
+msgid ""
+"Allows JSF pages to choose to render a control, depending upon the roles "
+"available to the current principal. <literal>&lt;h:commandButton value=\"edit"
+"\" rendered=\"#{isUserInRole['admin']}\"/&gt;</literal>."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:796
+#, no-c-format
+msgid "JMS-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:797
+#, no-c-format
+msgid ""
+"These components are for use with managed <literal>TopicPublisher</literal>s "
+"and <literal>QueueSender</literal>s (see below)."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:802
+#, no-c-format
+msgid "org.jboss.seam.jms.queueSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:804
+#, no-c-format
+msgid "Manager component for a JMS <literal>QueueSession</literal> ."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:810
+#, no-c-format
+msgid "org.jboss.seam.jms.topicSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:812
+#, no-c-format
+msgid "Manager component for a JMS <literal>TopicSession</literal> ."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:821
+#, no-c-format
+msgid "Mail-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:822
+#, no-c-format
+msgid "These components are for use with Seam's Email support"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:827
+#, no-c-format
+msgid "org.jboss.seam.mail.mailSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:829
+#, no-c-format
+msgid "Manager component for a JavaMail <literal>Session</literal> ."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:834
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.host</literal> &mdash; the hostname "
+"of the SMTP server to use"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:839
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.port</literal> &mdash; the port of "
+"the SMTP server to use"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:844
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.username</literal> &mdash; the "
+"username to use to connect to the SMTP server."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:849
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.password</literal> &mdash; the "
+"password to use to connect to the SMTP server"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:854
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.debug</literal> &mdash; enable "
+"JavaMail debugging (very verbose)"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:859
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.sessionJndiName</literal> &mdash; "
+"name under which a javax.mail.Session is bound to JNDI"
+msgstr ""
+
+#. Tag: title
+#: Components.xml:870
+#, no-c-format
+msgid "Infrastructural components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:871
+#, no-c-format
+msgid ""
+"These components provide critical platform infrastructure. You can install a "
+"component by including its class name in the <literal>org.jboss.seam.core."
+"init.componentClasses</literal> configuration property."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:876
+#, no-c-format
+msgid "org.jboss.seam.core.init"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:878
+#, no-c-format
+msgid "Initialization settings for Seam. Always installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:883
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.jndiPattern</literal> &mdash; the JNDI "
+"pattern used for looking up session beans"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:888
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.debug</literal> &mdash; enable Seam debug "
+"mode"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:893
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.clientSideConversations</literal> &mdash; "
+"if set to <literal>true</literal>, Seam will save conversation context "
+"variables in the client instead of in the <literal>HttpSession</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:898
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.userTransactionName</literal> &mdash; the "
+"JNDI name to use when looking up the JTA <literal>UserTransaction</literal> "
+"object."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:906
+#, no-c-format
+msgid "org.jboss.seam.core.manager"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:908
+#, no-c-format
+msgid ""
+"Internal component for Seam page and conversation context management. Always "
+"installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:913
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationTimeout</literal> &mdash; "
+"the conversation context timeout in milliseconds."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:918
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.concurrentRequestTimeout</literal> "
+"&mdash; maximum wait time for a thread attempting to gain a lock on the long-"
+"running conversation context."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:923
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationIdParameter</literal> "
+"&mdash; the request parameter used to propagate the conversation id, default "
+"to <literal>conversationId</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:928
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationIsLongRunningParameter</"
+"literal> &mdash; the request parameter used to propagate information about "
+"whether the conversation is long-running, default to "
+"<literal>conversationIsLongRunning</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:936
+#, no-c-format
+msgid "org.jboss.seam.core.pages"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:938
+#, no-c-format
+msgid "Internal component for Seam workspace management. Always installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:943
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.pages.noConversationViewId</literal> &mdash; "
+"global setting for the view id to redirect to when a conversation entry is "
+"not found on the server side."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:951
+#, no-c-format
+msgid "org.jboss.seam.core.ejb"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:953
+#, no-c-format
+msgid ""
+"Bootstraps the JBoss Embeddable EJB3 container. Install as class "
+"<literal>org.jboss.seam.core.Ejb</literal>. This is useful when using Seam "
+"with EJB components outside the context of a Java EE 5 application server."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:956
+#, no-c-format
+msgid ""
+"The basic Embedded EJB configuration is defined in <literal>jboss-embedded-"
+"beans.xml</literal>. Additional microcontainer configuration (for example, "
+"extra datasources) may be specified by <literal>jboss-beans.xml</literal> or "
+"<literal>META-INF/jboss-beans.xml</literal> in the classpath."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:962
+#, no-c-format
+msgid "org.jboss.seam.core.microcontainer"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:964
+#, no-c-format
+msgid ""
+"Bootstraps the JBoss microcontainer. Install as class <literal>org.jboss."
+"seam.core.Microcontainer</literal>. This is useful when using Seam with "
+"Hibernate and no EJB components outside the context of a Java EE application "
+"server. The microcontainer can provide a partial EE environment with JNDI, "
+"JTA, a JCA datasource and Hibernate."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:967
+#, no-c-format
+msgid ""
+"The microcontainer configuration may be specified by <literal>jboss-beans."
+"xml</literal> or <literal>META-INF/jboss-beans.xml</literal> in the "
+"classpath."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:973
+#, no-c-format
+msgid "org.jboss.seam.core.jbpm"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:975
+#, no-c-format
+msgid ""
+"Bootstraps a <literal>JbpmConfiguration</literal>. Install as class "
+"<literal>org.jboss.seam.core.Jbpm</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:980
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.jbpm.processDefinitions</literal> &mdash; a "
+"list of resource names of jPDL files to be used for orchestration of "
+"business processes."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:985
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.jbpm.pageflowDefinitions</literal> &mdash; a "
+"list of resource names of jPDL files to be used for orchestration of "
+"conversation page flows."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:993
+#, no-c-format
+msgid "org.jboss.seam.core.conversationEntries"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:995
+#, no-c-format
+msgid ""
+"Internal session-scoped component recording the active long-running "
+"conversations between requests."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1001
+#, no-c-format
+msgid "org.jboss.seam.core.facesPage"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1003
+#, no-c-format
+msgid ""
+"Internal page-scoped component recording the conversation context associated "
+"with a page."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1009
+#, no-c-format
+msgid "org.jboss.seam.core.persistenceContexts"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1011
+#, no-c-format
+msgid ""
+"Internal component recording the persistence contexts which were used in the "
+"current conversation."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1017
+#, no-c-format
+msgid "org.jboss.seam.jms.queueConnection"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1019
+#, no-c-format
+msgid ""
+"Manages a JMS <literal>QueueConnection</literal>. Installed whenever managed "
+"managed <literal>QueueSender</literal> is installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1024
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.jms.queueConnection.queueConnectionFactoryJndiName</"
+"literal> &mdash; the JNDI name of a JMS <literal>QueueConnectionFactory</"
+"literal>. Default to <literal>UIL2ConnectionFactory</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1032
+#, no-c-format
+msgid "org.jboss.seam.jms.topicConnection"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1034
+#, no-c-format
+msgid ""
+"Manages a JMS <literal>TopicConnection</literal>. Installed whenever managed "
+"managed <literal>TopicPublisher</literal> is installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1039
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.jms.topicConnection.topicConnectionFactoryJndiName</"
+"literal> &mdash; the JNDI name of a JMS <literal>TopicConnectionFactory</"
+"literal>. Default to <literal>UIL2ConnectionFactory</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1047
+#, no-c-format
+msgid "org.jboss.seam.persistence.persistenceProvider"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1049
+#, no-c-format
+msgid "Abstraction layer for non-standardized features of JPA provider."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1055
+#, no-c-format
+msgid "org.jboss.seam.core.validation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1057
+#, no-c-format
+msgid "Internal component for Hibernate Validator support."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1063
+#, no-c-format
+msgid "org.jboss.seam.debug.introspector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1065 Components.xml:1073
+#, no-c-format
+msgid "Support for the Seam Debug Page."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1071
+#, no-c-format
+msgid "org.jboss.seam.debug.contexts"
+msgstr ""
+
+#. Tag: title
+#: Components.xml:1082
+#, no-c-format
+msgid "Special components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1083
+#, no-c-format
+msgid ""
+"Certain special Seam component classes are installable multiple times under "
+"names specified in the Seam configuration. For example, the following lines "
+"in <literal>components.xml</literal> install and configure two Seam "
+"components:"
+msgstr ""
+
+#. Tag: programlisting
+#: Components.xml:1086
+#, no-c-format
+msgid ""
+"&lt;component name=\"bookingDatabase\"\n"
+"          class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"    &lt;property name=\"persistenceUnitJndiName\"&gt;java:/comp/emf/"
+"bookingPersistence&lt;/property&gt;\n"
+"&lt;/component&gt;\n"
+"\n"
+"&lt;component name=\"userDatabase\"\n"
+"          class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"    &lt;property name=\"persistenceUnitJndiName\"&gt;java:/comp/emf/"
+"userPersistence&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1087
+#, no-c-format
+msgid ""
+"The Seam component names are <literal>bookingDatabase</literal> and "
+"<literal>userDatabase</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1092
+#, no-c-format
+msgid "&lt;entityManager&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1093
+#, no-c-format
+msgid "org.jboss.seam.core.ManagedPersistenceContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1095
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed <literal>EntityManager</"
+"literal> with an extended persistence context."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1100
+#, no-c-format
+msgid ""
+"<literal>&lt;entityManager&gt;.entityManagerFactory</literal> &mdash; a "
+"value binding expression that evaluates to an instance of "
+"<literal>EntityManagerFactory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1103
+#, no-c-format
+msgid ""
+"<literal>&lt;entityManager&gt;.persistenceUnitJndiName</literal> &mdash; the "
+"JNDI name of the entity manager factory, default to <literal>java:/&lt;"
+"managedPersistenceContext&gt;</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1111
+#, no-c-format
+msgid "&lt;entityManagerFactory&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1112
+#, no-c-format
+msgid "org.jboss.seam.core.EntityManagerFactory"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1114
+#, no-c-format
+msgid ""
+"Manages a JPA <literal>EntityManagerFactory</literal>. This is most useful "
+"when using JPA outside of an EJB 3.0 supporting environment."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1119
+#, no-c-format
+msgid ""
+"<literal>entityManagerFactory.persistenceUnitName</literal> &mdash; the name "
+"of the persistence unit."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1124 Components.xml:1162
+#, no-c-format
+msgid "See the API JavaDoc for further configuration properties."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1130
+#, no-c-format
+msgid "&lt;session&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1131
+#, no-c-format
+msgid "org.jboss.seam.core.ManagedSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1133
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed Hibernate "
+"<literal>Session</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1138
+#, no-c-format
+msgid ""
+"<literal>&lt;session&gt;.sessionFactory</literal> &mdash; a value binding "
+"expression that evaluates to an instance of <literal>SessionFactory</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1141
+#, no-c-format
+msgid ""
+"<literal>&lt;session&gt;.sessionFactoryJndiName</literal> &mdash; the JNDI "
+"name of the session factory, default to <literal>java:/&lt;managedSession&gt;"
+"</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1149
+#, no-c-format
+msgid "&lt;sessionFactory&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1150
+#, no-c-format
+msgid "org.jboss.seam.core.HibernateSessionFactory"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1152
+#, no-c-format
+msgid "Manages a Hibernate <literal>SessionFactory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1157
+#, no-c-format
+msgid ""
+"<literal>&lt;sessionFactory&gt;.cfgResourceName</literal> &mdash; the path "
+"to the configuration file. Default to <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1168
+#, no-c-format
+msgid "&lt;managedQueueSender&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1169
+#, no-c-format
+msgid "org.jboss.seam.jms.ManagedQueueSender"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1171
+#, no-c-format
+msgid ""
+"Manager component for an event scoped managed JMS <literal>QueueSender</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1176
+#, no-c-format
+msgid ""
+"<literal>&lt;managedQueueSender&gt;.queueJndiName</literal> &mdash; the JNDI "
+"name of the JMS queue."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1184
+#, no-c-format
+msgid "&lt;managedTopicPublisher&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1185
+#, no-c-format
+msgid "org.jboss.seam.jms.ManagedTopicPublisher"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1187
+#, no-c-format
+msgid ""
+"Manager component for an event scoped managed JMS <literal>TopicPublisher</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1192
+#, no-c-format
+msgid ""
+"<literal>&lt;managedTopicPublisher&gt;.topicJndiName</literal> &mdash; the "
+"JNDI name of the JMS topic."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1200
+#, no-c-format
+msgid "&lt;managedWorkingMemory&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1201
+#, no-c-format
+msgid "org.jboss.seam.drools.ManagedWorkingMemory"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1203
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed Drools "
+"<literal>WorkingMemory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1208
+#, no-c-format
+msgid ""
+"<literal>&lt;managedWorkingMemory&gt;.ruleBase</literal> &mdash; a value "
+"expression that evaluates to an instance of <literal>RuleBase</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1216
+#, no-c-format
+msgid "&lt;ruleBase&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1217
+#, no-c-format
+msgid "org.jboss.seam.drools.RuleBase"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1219
+#, no-c-format
+msgid ""
+"Manager component for an application scoped Drools <literal>RuleBase</"
+"literal>. <emphasis>Note that this is not really intended for production "
+"usage, since it does not support dynamic installation of new rules.</"
+"emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1224
+#, no-c-format
+msgid ""
+"<literal>&lt;ruleBase&gt;.ruleFiles</literal> &mdash; a list of files "
+"containing Drools rules."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1227
+#, no-c-format
+msgid ""
+"<literal>&lt;ruleBase&gt;.dslFile</literal> &mdash; a Drools DSL definition."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1235
+#, no-c-format
+msgid "&lt;entityHome&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1236
+#, no-c-format
+msgid "org.jboss.seam.framework.EntityHome"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1240
+#, no-c-format
+msgid "&lt;hibernateEntityHome&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1241
+#, no-c-format
+msgid "org.jboss.seam.framework.HibernateEntityHome"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1245
+#, no-c-format
+msgid "&lt;entityQuery&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1246
+#, no-c-format
+msgid "org.jboss.seam.framework.EntityQuery"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1250
+#, no-c-format
+msgid "&lt;hibernateEntityQuery&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1251
+#, no-c-format
+msgid "org.jboss.seam.framework.HibernateEntityQuery"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Concepts.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Concepts.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Concepts.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1922 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Concepts.xml:10
+#, no-c-format
+msgid "The contextual component model"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:11
+#, no-c-format
+msgid ""
+"The two core concepts in Seam are the notion of a <emphasis>context</"
+"emphasis> and the notion of a <emphasis>component</emphasis>. Components are "
+"stateful objects, usually EJBs, and an instance of a component is associated "
+"with a context, and given a name in that context. <emphasis>Bijection</"
+"emphasis> provides a mechanism for aliasing internal component names "
+"(instance variables) to contextual names, allowing component trees to be "
+"dynamically assembled, and reassembled by Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:14
+#, no-c-format
+msgid "Let's start by describing the contexts built in to Seam."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:17
+#, no-c-format
+msgid "Seam contexts"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:18
+#, no-c-format
+msgid ""
+"Seam contexts are created and destroyed by the framework. The application "
+"does not control context demarcation via explicit Java API calls. Context "
+"are usually implicit. In some cases, however, contexts are demarcated via "
+"annotations."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:21
+#, no-c-format
+msgid "The basic Seam contexts are:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:26
+#, no-c-format
+msgid "<para>Stateless context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:31
+#, no-c-format
+msgid "Event (or request) context"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:36 Concepts.xml:151
+#, no-c-format
+msgid "<para>Page context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:41 Concepts.xml:156
+#, no-c-format
+msgid "<para>Conversation context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:46 Concepts.xml:161
+#, no-c-format
+msgid "<para>Session context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:51 Concepts.xml:166
+#, no-c-format
+msgid "<para>Business process context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:56 Concepts.xml:171
+#, no-c-format
+msgid "<para>Application context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:61
+#, no-c-format
+msgid ""
+"You will recognize some of these contexts from servlet and related "
+"specifications. However, two of them might be new to you: "
+"<emphasis>conversation context</emphasis>, and <emphasis>business process "
+"context</emphasis>. One reason state management in web applications is so "
+"fragile and error-prone is that the three built-in contexts (request, "
+"session and application) are not especially meaningful from the point of "
+"view of the business logic. A user login session, for example, is a fairly "
+"arbitrary construct in terms of the actual application work flow. Therefore, "
+"most Seam components are scoped to the conversation or business process "
+"contexts, since they are the contexts which are most meaningful in terms of "
+"the application."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:64
+#, no-c-format
+msgid "Let's look at each context in turn."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:67
+#, no-c-format
+msgid "<title>Stateless context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:68
+#, no-c-format
+msgid ""
+"Components which are truly stateless (stateless session beans, primarily) "
+"always live in the stateless context (this is really a non-context). "
+"Stateless components are not very interesting, and are arguably not very "
+"object-oriented. Nevertheless, they are important and often useful."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:71
+#, no-c-format
+msgid "<title>Event context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:72
+#, no-c-format
+msgid ""
+"The event context is the \"narrowest\" stateful context, and is a "
+"generalization of the notion of the web request context to cover other kinds "
+"of events. Nevertheless, the event context associated with the lifecycle of "
+"a JSF request is the most important example of an event context, and the one "
+"you will work with most often. Components associated with the event context "
+"are destroyed at the end of the request, but their state is available and "
+"well-defined for at least the lifecycle of the request."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:75
+#, no-c-format
+msgid ""
+"When you invoke a Seam component via RMI, or Seam Remoting, the event "
+"context is created and destroyed just for the invocation."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:78
+#, no-c-format
+msgid "<title>Page context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:79
+#, no-c-format
+msgid ""
+"The page context allows you to associate state with a particular instance of "
+"a rendered page. You can initialize state in your event listener, or while "
+"actually rendering the page, and then have access to it from any event that "
+"originates from that page. This is especially useful for functionality like "
+"clickable lists, where the list is backed by changing data on the server "
+"side. The state is actually serialized to the client, so this construct is "
+"extremely robust with respect to multi-window operation and the back button."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:82
+#, no-c-format
+msgid "<title>Conversation context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:83
+#, no-c-format
+msgid ""
+"The conversation context is a truly central concept in Seam. A "
+"<emphasis>conversation</emphasis> is a unit of work from the point of view "
+"of the user. It might span several interactions with the user, several "
+"requests, and several database transactions. But to the user, a conversation "
+"solves a single problem. For example, \"book hotel\", \"approve contract\", "
+"\"create order\" are all conversations. You might like to think of a "
+"conversation implementing a single \"use case\" or \"user story\", but the "
+"relationship is not necessarily quite exact."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:86
+#, no-c-format
+msgid ""
+"A conversation holds state associated with \"what the user is doing now, in "
+"this window\". A single user may have multiple conversations in progress at "
+"any point in time, usually in multiple windows. The conversation context "
+"allows us to ensure that state from the different conversations does not "
+"collide and cause bugs."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:89
+#, no-c-format
+msgid ""
+"It might take you some time to get used to thinking of applications in terms "
+"of conversations. But once you get used to it, we think you'll love the "
+"notion, and never be able to not think in terms of conversations again!"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:92
+#, no-c-format
+msgid ""
+"Some conversations last for just a single request. Conversations that span "
+"multiple requests must be demarcated using annotations provided by Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:95
+#, no-c-format
+msgid ""
+"Some conversations are also <emphasis>tasks</emphasis>. A task is a "
+"conversation that is significant in terms of a long-running business "
+"process, and has the potential to trigger a business process state "
+"transition when it is successfully completed. Seam provides a special set of "
+"annotations for task demarcation."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:98
+#, no-c-format
+msgid ""
+"Conversations may be <emphasis>nested</emphasis>, with one conversation "
+"taking place \"inside\" a wider conversation. This is an advanced feature."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:101
+#, no-c-format
+msgid ""
+"Usually, conversation state is actually held by Seam in the servlet session "
+"between requests. Seam implements configurable <emphasis>conversation "
+"timeout</emphasis>, automatically destroying inactive conversations, and "
+"thus ensuring that the state held by a single user login session does not "
+"grow without bound if the user abandons conversations."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:104
+#, no-c-format
+msgid ""
+"Seam serializes processing of concurrent requests that take place in the "
+"same long-running conversation context, in the same process."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:107
+#, no-c-format
+msgid ""
+"Alternatively, Seam may be configured to keep conversational state in the "
+"client browser."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:110
+#, no-c-format
+msgid "<title>Session context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:111
+#, no-c-format
+msgid ""
+"A session context holds state associated with the user login session. While "
+"there are some cases where it is useful to share state between several "
+"conversations, we generally frown on the use of session context for holding "
+"components other than global information about the logged in user."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:114
+#, no-c-format
+msgid ""
+"In a JSR-168 portal environment, the session context represents the portlet "
+"session."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:117
+#, no-c-format
+msgid "<title>Business process context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:118
+#, no-c-format
+msgid ""
+"The business process context holds state associated with the long running "
+"business process. This state is managed and made persistent by the BPM "
+"engine (JBoss jBPM). The business process spans multiple interactions with "
+"multiple users, so this state is shared between multiple users, but in a "
+"well-defined manner. The current task determines the current business "
+"process instance, and the lifecycle of the business process is defined "
+"externally using a <emphasis>process definition language</emphasis>, so "
+"there are no special annotations for business process demarcation."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:121
+#, no-c-format
+msgid "<title>Application context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:122
+#, no-c-format
+msgid ""
+"The application context is the familiar servlet context from the servlet "
+"spec. Application context is mainly useful for holding static information "
+"such as configuration data, reference data or metamodels. For example, Seam "
+"stores its own configuration and metamodel in the application context."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:125
+#, no-c-format
+msgid "Context variables"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:126
+#, no-c-format
+msgid ""
+"A context defines a namespace, a set of <emphasis>context variables</"
+"emphasis>. These work much the same as session or request attributes in the "
+"servlet spec. You may bind any value you like to a context variable, but "
+"usually we bind Seam component instances to context variables."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:129
+#, no-c-format
+msgid ""
+"So, within a context, a component instance is identified by the context "
+"variable name (this is usually, but not always, the same as the component "
+"name). You may programatically access a named component instance in a "
+"particular scope via the <literal>Contexts</literal> class, which provides "
+"access to several thread-bound instances of the <literal>Context</literal> "
+"interface:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:132
+#, no-c-format
+msgid "User user = (User) Contexts.getSessionContext().get(\"user\");"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:133
+#, no-c-format
+msgid "You may also set or change the value associated with a name:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:136
+#, no-c-format
+msgid "Contexts.getSessionContext().set(\"user\", user);"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:137
+#, no-c-format
+msgid ""
+"Usually, however, we obtain components from a context via injection, and put "
+"component instances into a context via outjection."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:140
+#, no-c-format
+msgid "Context search priority"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:141
+#, no-c-format
+msgid ""
+"Sometimes, as above, component instances are obtained from a particular "
+"known scope. Other times, all stateful scopes are searched, in "
+"<emphasis>priority order</emphasis>. The order is as follows:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:146
+#, no-c-format
+msgid "<para>Event context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:176
+#, no-c-format
+msgid ""
+"You can perform a priority search by calling <literal>Contexts."
+"lookupInStatefulContexts()</literal>. Whenever you access a component by "
+"name from a JSF page, a priority search occurs."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:179
+#, no-c-format
+msgid "Concurrency model"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:180
+#, no-c-format
+msgid ""
+"Neither the servlet nor EJB specifications define any facilities for "
+"managing concurrent requests originating from the same client. The servlet "
+"container simply lets all threads run concurrently and leaves enforcing "
+"threadsafeness to application code. The EJB container allows stateless "
+"components to be accessed concurrently, and throws an exception if multiple "
+"threads access a stateful session bean."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:183
+#, no-c-format
+msgid ""
+"This behavior might have been okay in old-style web applications which were "
+"based around fine-grained, synchronous requests. But for modern applications "
+"which make heavy use of many fine-grained, asynchronous (AJAX) requests, "
+"concurrency is a fact of life, and must be supported by the programming "
+"model. Seam weaves a concurrency management layer into its context model."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:186
+#, no-c-format
+msgid ""
+"The Seam session and application contexts are multithreaded. Seam will allow "
+"concurrent requests in a context to be processed concurrently. The event and "
+"page contexts are by nature single threaded. The business process context is "
+"strictly speaking multi-threaded, but in practice concurrency is "
+"sufficiently rare that this fact may be disregarded most of the time. "
+"Finally, Seam enforces a <emphasis>single thread per conversation per "
+"process</emphasis> model for the conversation context by serializing "
+"concurrent requests in the same long-running conversation context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:189
+#, no-c-format
+msgid ""
+"Since the session context is multithreaded, and often contains volatile "
+"state, session scope components are always protected by Seam from concurrent "
+"access. Seam serializes requests to session scope session beans and "
+"JavaBeans by default (and detects and breaks any deadlocks that occur). This "
+"is not the default behaviour for application scoped components however, "
+"since application scoped components do not usually hold volatile state and "
+"because synchronization at the global level is <emphasis>extremely</"
+"emphasis> expensive. However, you can force a serialized threading model on "
+"any session bean or JavaBean component by adding the <literal>@Synchronized</"
+"literal> annotation."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:192
+#, no-c-format
+msgid ""
+"This concurrency model means that AJAX clients can safely use volatile "
+"session and conversational state, without the need for any special work on "
+"the part of the developer."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:195
+#, no-c-format
+msgid "Seam components"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:196
+#, no-c-format
+msgid ""
+"Seam components are POJOs (Plain Old Java Objects). In particular, they are "
+"JavaBeans or EJB 3.0 enterprise beans. While Seam does not require that "
+"components be EJBs and can even be used without an EJB 3.0 compliant "
+"container, Seam was designed with EJB 3.0 in mind and includes deep "
+"integration with EJB 3.0. Seam supports the following <emphasis>component "
+"types</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:201
+#, no-c-format
+msgid "EJB 3.0 stateless session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:206
+#, no-c-format
+msgid "EJB 3.0 stateful session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:211
+#, no-c-format
+msgid "EJB 3.0 entity beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:216
+#, no-c-format
+msgid "<para>JavaBeans</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:221
+#, no-c-format
+msgid "EJB 3.0 message-driven beans"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:226
+#, no-c-format
+msgid "Stateless session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:227
+#, no-c-format
+msgid ""
+"Stateless session bean components are not able to hold state across multiple "
+"invocations. Therefore, they usually work by operating upon the state of "
+"other components in the various Seam contexts. They may be used as JSF "
+"action listeners, but cannot provide properties to JSF components for "
+"display."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:230
+#, no-c-format
+msgid "Stateless session beans always live in the stateless context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:233
+#, no-c-format
+msgid ""
+"Stateless session beans are the least interesting kind of Seam component."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:236
+#, no-c-format
+msgid "Stateful session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:237
+#, no-c-format
+msgid ""
+"Stateful session bean components are able to hold state not only across "
+"multiple invocations of the bean, but also across multiple requests. "
+"Application state that does not belong in the database should usually be "
+"held by stateful session beans. This is a major difference between Seam and "
+"many other web application frameworks. Instead of sticking information about "
+"the current conversation directly in the <literal>HttpSession</literal>, you "
+"should keep it in instance variables of a stateful session bean that is "
+"bound to the conversation context. This allows Seam to manage the lifecycle "
+"of this state for you, and ensure that there are no collisions between state "
+"relating to different concurrent conversations."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:240
+#, no-c-format
+msgid ""
+"Stateful session beans are often used as JSF action listener, and as backing "
+"beans that provide properties to JSF components for display or form "
+"submission."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:243
+#, no-c-format
+msgid ""
+"By default, stateful session beans are bound to the conversation context. "
+"They may never be bound to the page or stateless contexts."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:246
+#, no-c-format
+msgid ""
+"Concurrent requests to session-scoped stateful session beans are always "
+"serialized by Seam."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:249
+#, no-c-format
+msgid "Entity beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:250
+#, no-c-format
+msgid ""
+"Entity beans may be bound to a context variable and function as a seam "
+"component. Because entities have a persistent identity in addition to their "
+"contextual identity, entity instances are usually bound explicitly in Java "
+"code, rather than being instantiated implicitly by Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:253
+#, no-c-format
+msgid ""
+"Entity bean components do not support bijection or context demarcation. Nor "
+"does invocation of an entity bean trigger validation."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:256
+#, no-c-format
+msgid ""
+"Entity beans are not usually used as JSF action listeners, but do often "
+"function as backing beans that provide properties to JSF components for "
+"display or form submission. In particular, it is common to use an entity as "
+"a backing bean, together with a stateless session bean action listener to "
+"implement create/update/delete type functionality."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:259
+#, no-c-format
+msgid ""
+"By default, entity beans are bound to the conversation context. They may "
+"never be bound to the stateless context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:262
+#, no-c-format
+msgid ""
+"Note that it in a clustered environment is somewhat less efficient to bind "
+"an entity bean directly to a conversation or session scoped Seam context "
+"variable than it would be to hold a reference to the entity bean in a "
+"stateful session bean. For this reason, not all Seam applications define "
+"entity beans to be Seam components."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:265
+#, no-c-format
+msgid "<title>JavaBeans</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:266
+#, no-c-format
+msgid ""
+"Javabeans may be used just like a stateless or stateful session bean. "
+"However, they do not provide the functionality of a session bean "
+"(declarative transaction demarcation, declarative security, efficient "
+"clustered state replication, EJB 3.0 persistence, timeout methods, etc)."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:269
+#, no-c-format
+msgid ""
+"In a later chapter, we show you how to use Seam and Hibernate without an EJB "
+"container. In this use case, components are JavaBeans instead of session "
+"beans. Note, however, that in many application servers it is somewhat less "
+"efficient to cluster conversation or session scoped Seam JavaBean components "
+"than it is to cluster stateful session bean components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:272
+#, no-c-format
+msgid "By default, JavaBeans are bound to the event context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:275
+#, no-c-format
+msgid ""
+"Concurrent requests to session-scoped JavaBeans are always serialized by "
+"Seam."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:278
+#, no-c-format
+msgid "Message-driven beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:279
+#, no-c-format
+msgid ""
+"Message-driven beans may function as a seam component. However, message-"
+"driven beans are called quite differently to other Seam components - instead "
+"of invoking them via the context variable, they listen for messages sent to "
+"a JMS queue or topic."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:282
+#, no-c-format
+msgid ""
+"Message-driven beans may not be bound to a Seam context. Nor do they have "
+"access to the session or conversation state of their \"caller\". However, "
+"they do support bijection and some other Seam functionality."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:285
+#, no-c-format
+msgid "Interception"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:286
+#, no-c-format
+msgid ""
+"In order to perform its magic (bijection, context demarcation, validation, "
+"etc), Seam must intercept component invocations. For JavaBeans, Seam is in "
+"full control of instantiation of the component, and no special configuration "
+"is needed. For entity beans, interception is not required since bijection "
+"and context demarcation are not defined. For session beans, we must register "
+"an EJB interceptor for the session bean component. We could use an "
+"annotation, as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:289
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:290
+#, no-c-format
+msgid ""
+"But a much better way is to define the interceptor in <literal>ejb-jar.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:293
+#, no-c-format
+msgid ""
+"&lt;interceptors&gt;\n"
+"   &lt;interceptor&gt;\n"
+"      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"   &lt;/interceptor&gt;\n"
+"&lt;/interceptors&gt;\n"
+"   \n"
+"&lt;assembly-descriptor&gt;\n"
+"   &lt;interceptor-binding&gt;\n"
+"      &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"   &lt;/interceptor-binding&gt;\n"
+"&lt;/assembly-descriptor&gt;"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:294
+#, no-c-format
+msgid "Component names"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:295
+#, no-c-format
+msgid ""
+"All seam components need a name. We can assign a name to a component using "
+"the <literal>@Name</literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:298
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:299
+#, no-c-format
+msgid ""
+"This name is the <emphasis>seam component name</emphasis> and is not related "
+"to any other name defined by the EJB specification. However, seam component "
+"names work just like JSF managed bean names and you can think of the two "
+"concepts as identical."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:302
+#, no-c-format
+msgid ""
+"<literal>@Name</literal> is not the only way to define a component name, but "
+"we always need to specify the name <emphasis>somewhere</emphasis>. If we "
+"don't, then none of the other Seam annotations will function."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:305
+#, no-c-format
+msgid ""
+"Just like in JSF, a seam component instance is usually bound to a context "
+"variable with the same name as the component name. So, for example, we would "
+"access the <literal>LoginAction</literal> using <literal>Contexts."
+"getStatelessContext().get(\"loginAction\")</literal>. In particular, "
+"whenever Seam itself instantiates a component, it binds the new instance to "
+"a variable with the component name. However, again like JSF, it is possible "
+"for the application to bind a component to some other context variable by "
+"programmatic API call. This is only useful if a particular component serves "
+"more than one role in the system. For example, the currently logged in "
+"<literal>User</literal> might be bound to the <literal>currentUser</literal> "
+"session context variable, while a <literal>User</literal> that is the "
+"subject of some administration functionality might be bound to the "
+"<literal>user</literal> conversation context variable."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:308
+#, no-c-format
+msgid ""
+"For very large applications, and for built-in seam components, qualified "
+"names are often used."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:311
+#, no-c-format
+msgid ""
+"@Name(\"com.jboss.myapp.loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:312
+#, no-c-format
+msgid ""
+"We may use the qualified component name both in Java code and in JSF's "
+"expression language:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:315
+#, no-c-format
+msgid ""
+"&lt;h:commandButton type=\"submit\" value=\"Login\"\n"
+"                 action=\"#{com.jboss.myapp.loginAction.login}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:316
+#, no-c-format
+msgid ""
+"Since this is noisy, Seam also provides a means of aliasing a qualified name "
+"to a simple name. Add a line like this to the <literal>components.xml</"
+"literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:319
+#, no-c-format
+msgid ""
+"&lt;factory name=\"loginAction\" scope=\"STATELESS\" value=\"#{com.jboss."
+"myapp.loginAction}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:320
+#, no-c-format
+msgid ""
+"All of the built-in Seam components have qualified names, but most of them "
+"are aliased to a simple name by the <literal>components.xml</literal> file "
+"included in the Seam jar."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:323
+#, no-c-format
+msgid "Defining the component scope"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:324
+#, no-c-format
+msgid ""
+"We can override the default scope (context) of a component using the "
+"<literal>@Scope</literal> annotation. This lets us define what context a "
+"component instance is bound to, when it is instantiated by Seam."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:327
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(SESSION)\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:328
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.ScopeType</literal> defines an enumeration of "
+"possible scopes."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:331
+#, no-c-format
+msgid "Components with multiple roles"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:332
+#, no-c-format
+msgid ""
+"Some Seam component classes can fulfill more than one role in the system. "
+"For example, we often have a <literal>User</literal> class which is usually "
+"used as a session-scoped component representing the current user but is used "
+"in user administration screens as a conversation-scoped component. The "
+"<literal>@Role</literal> annotation lets us define an additional named role "
+"for a component, with a different scope&mdash;it lets us bind the same "
+"component class to different context variables. (Any Seam component "
+"<emphasis>instance</emphasis> may be bound to multiple context variables, "
+"but this lets us do it at the class level, and take advantage of auto-"
+"instantiation.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:335
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(CONVERSATION)\n"
+"@Role(name=\"currentUser\", scope=SESSION)\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:336
+#, no-c-format
+msgid ""
+"The <literal>@Roles</literal> annotation lets us specify as many additional "
+"roles as we like."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:339
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(CONVERSATION)\n"
+"@Roles({@Role(name=\"currentUser\", scope=SESSION)\n"
+"        @Role(name=\"tempUser\", scope=EVENT)})\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:340
+#, no-c-format
+msgid "Built-in components"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:341
+#, no-c-format
+msgid ""
+"Like many good frameworks, Seam eats its own dogfood and is implemented "
+"mostly as a set of built-in Seam interceptors (see later) and Seam "
+"components. This makes it easy for applications to interact with built-in "
+"components at runtime or even customize the basic functionality of Seam by "
+"replacing the built-in components with custom implementations. The built-in "
+"components are defined in the Seam namespace <literal>org.jboss.seam.core</"
+"literal> and the Java package of the same name."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:344
+#, no-c-format
+msgid ""
+"The built-in components may be injected, just like any Seam components, but "
+"they also provide convenient static <literal>instance()</literal> methods:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:347
+#, no-c-format
+msgid "FacesMessages.instance().add(\"Welcome back, #{user.name}!\");"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:348
+#, no-c-format
+msgid ""
+"Seam was designed to integrate tightly in a Java EE 5 environment. However, "
+"we understand that there are many projects which are not running in a full "
+"EE environment. We also realize the critical importance of easy unit and "
+"integration testing using frameworks such as TestNG and JUnit. So, we've "
+"made it easy to run Seam in Java SE environments by allowing you to boostrap "
+"certain critical infrastructure normally only found in EE environments by "
+"installing built-in Seam components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:351
+#, no-c-format
+msgid ""
+"For example, you can run your EJB3 components in Tomcat or an integration "
+"test suite just by installing the built-in component <literal>org.jboss.seam."
+"core.ejb</literal>, which automatically bootstraps the JBoss Embeddable EJB3 "
+"container and deploys your EJB components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:354
+#, no-c-format
+msgid ""
+"Or, if you're not quite ready for the Brave New World of EJB 3.0, you can "
+"write a Seam application that uses only JavaBean components, together with "
+"Hibernate3 for persistence, by installing a built-in component that manages "
+"a Hibernate <literal>SessionFactory</literal>. When using Hibernate outside "
+"of a J2EE environment, you will also probably need a JTA transaction manager "
+"and JNDI server, which are available via the built-in component <literal>org."
+"jboss.seam.core.microcontainer</literal>. This lets you use the bulletproof "
+"JTA/JCA pooling datasource from JBoss application server in an SE "
+"environment like Tomcat!"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:357
+#, no-c-format
+msgid "Bijection"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:358
+#, no-c-format
+msgid ""
+"<emphasis>Dependency injection</emphasis> or <emphasis>inversion of control</"
+"emphasis> is by now a familiar concept to most Java developers. Dependency "
+"injection allows a component to obtain a reference to another component by "
+"having the container \"inject\" the other component to a setter method or "
+"instance variable. In all dependency injection implementations that we have "
+"seen, injection occurs when the component is constructed, and the reference "
+"does not subsequently change for the lifetime of the component instance. For "
+"stateless components, this is reasonable. From the point of view of a "
+"client, all instances of a particular stateless component are "
+"interchangeable. On the other hand, Seam emphasizes the use of stateful "
+"components. So traditional dependency injection is no longer a very useful "
+"construct. Seam introduces the notion of <emphasis>bijection</emphasis> as a "
+"generalization of injection. In contrast to injection, bijection is:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:363
+#, no-c-format
+msgid ""
+"<emphasis>contextual</emphasis> - bijection is used to assemble stateful "
+"components from various different contexts (a component from a \"wider\" "
+"context may even have a reference to a component from a \"narrower\" context)"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:368
+#, no-c-format
+msgid ""
+"<emphasis>bidirectional</emphasis> - values are injected from context "
+"variables into attributes of the component being invoked, and also "
+"<emphasis>outjected</emphasis> from the component attributes back out to the "
+"context, allowing the component being invoked to manipulate the values of "
+"contextual variables simply by setting its own instance variables"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:373
+#, no-c-format
+msgid ""
+"<emphasis>dynamic</emphasis> - since the value of contextual variables "
+"changes over time, and since Seam components are stateful, bijection takes "
+"place every time a component is invoked"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:378
+#, no-c-format
+msgid ""
+"In essence, bijection lets you alias a context variable to a component "
+"instance variable, by specifying that the value of the instance variable is "
+"injected, outjected, or both. Of course, we use annotations to enable "
+"bijection."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:381
+#, no-c-format
+msgid ""
+"The <literal>@In</literal> annotation specifies that a value should be "
+"injected, either into an instance variable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:384
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:385
+#, no-c-format
+msgid "or into a setter method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:388
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @In\n"
+"    public void setUser(User user) {\n"
+"        this.user=user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:389
+#, no-c-format
+msgid ""
+"By default, Seam will do a priority search of all contexts, using the name "
+"of the property or instance variable that is being injected. You may wish to "
+"specify the context variable name explicitly, using, for example, "
+"<literal>@In(\"currentUser\")</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:392
+#, no-c-format
+msgid ""
+"If you want Seam to create an instance of the component when there is no "
+"existing component instance bound to the named context variable, you should "
+"specify <literal>@In(create=true)</literal>. If the value is optional (it "
+"can be null), specify <literal>@In(required=false)</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:395
+#, no-c-format
+msgid ""
+"For some components, it can be repetitive to have to specify <literal>@In"
+"(create=true)</literal> everywhere they are used. In such cases, you can "
+"annotate the component <literal>@AutoCreate</literal>, and then it will "
+"always be created, whenever needed, even without the explicit use of "
+"<literal>create=true</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:398
+#, no-c-format
+msgid "You can even inject the value of an expression:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:401
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In(\"#{user.username}\") String username;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:402
+#, no-c-format
+msgid ""
+"(There is much more information about component lifecycle and injection in "
+"the next chapter.)"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:405
+#, no-c-format
+msgid ""
+"The <literal>@Out</literal> annotation specifies that an attribute should be "
+"outjected, either from an instance variable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:408
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @Out User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:409
+#, no-c-format
+msgid "or from a getter method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:412
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @Out\n"
+"    public User getUser() {\n"
+"        return user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:413
+#, no-c-format
+msgid "An attribute may be both injected and outjected:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:416
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In @Out User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:417
+#, no-c-format
+msgid "<para>or:</para>"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:420
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @In\n"
+"    public void setUser(User user) {\n"
+"        this.user=user;\n"
+"    }\n"
+"    \n"
+"    @Out\n"
+"    public User getUser() {\n"
+"        return user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:421
+#, no-c-format
+msgid "Lifecycle methods"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:422
+#, no-c-format
+msgid ""
+"Session bean and entity bean Seam components support all the usual EJB 3.0 "
+"lifecycle callback (<literal>@PostConstruct</literal>, <literal>@PreDestroy</"
+"literal>, etc). Seam extends all of these callbacks except "
+"<literal>@PreDestroy</literal> to JavaBean components. But Seam also defines "
+"its own component lifecycle callbacks."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:425
+#, no-c-format
+msgid ""
+"The <literal>@Create</literal> method is called every time Seam instantiates "
+"a component. Unlike the <literal>@PostConstruct</literal> method, this "
+"method is called after the component is fully constructed by the EJB "
+"container, and has access to all the usual Seam functionality (bijection, "
+"etc). Components may define only one <literal>@Create</literal> method."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:428
+#, no-c-format
+msgid ""
+"The <literal>@Destroy</literal> method is called when the context that the "
+"Seam component is bound to ends. Components may define only one "
+"<literal>@Destroy</literal> method. Stateful session bean components "
+"<emphasis>must</emphasis> define a method annotated <literal>@Destroy "
+"@Remove</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:431
+#, no-c-format
+msgid ""
+"Finally, a related annotation is the <literal>@Startup</literal> annotation, "
+"which may be applied to any application or session scoped component. The "
+"<literal>@Startup</literal> annotation tells Seam to instantiate the "
+"component immediately, when the context begins, instead of waiting until it "
+"is first referenced by a client. It is possible to control the order of "
+"instantiation of startup components by specifying <literal>@Startup(depends="
+"{....})</literal>."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:434
+#, no-c-format
+msgid "Conditional installation"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:435
+#, no-c-format
+msgid ""
+"The <literal>@Install</literal> annotation lets you control conditional "
+"installation of components that are required in some deployment scenarios "
+"and not in others. This is useful if:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:440
+#, no-c-format
+msgid "You want to mock out some infrastructural component in tests."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:445
+#, no-c-format
+msgid ""
+"You want change the implementation of a component in certain deployment "
+"scenarios."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:450
+#, no-c-format
+msgid ""
+"You want to install some components only if their dependencies are available "
+"(useful for framework authors)."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:455
+#, no-c-format
+msgid ""
+"<literal>@Install</literal> works by letting you specify "
+"<emphasis>precedence</emphasis> and <emphasis>dependencies</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:458
+#, no-c-format
+msgid ""
+"The precedence of a component is a number that Seam uses to decide which "
+"component to install when there are multiple classes with the same component "
+"name in the classpath. Seam will choose the component with the higher "
+"precendence. There are some predefined precedence values:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:463
+#, no-c-format
+msgid ""
+"<literal>BUILT_IN</literal> &mdash; the lowest precedece components are the "
+"components built in to Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:468
+#, no-c-format
+msgid ""
+"<literal>FRAMEWORK</literal> &mdash; components defined by third-party "
+"frameworks may override built-in components, but are overridden by "
+"application components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:473
+#, no-c-format
+msgid ""
+"<literal>APPLICATION</literal> &mdash; the default precedence. This is "
+"appropriate for most application components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:478
+#, no-c-format
+msgid ""
+"<literal>DEPLOYMENT</literal> &mdash; for application components which are "
+"deployment-specific."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:483
+#, no-c-format
+msgid "<literal>MOCK</literal> &mdash; for mock objects used in testing."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:488
+#, no-c-format
+msgid ""
+"Suppose we have a component named <literal>messageSender</literal> that "
+"talks to a JMS queue."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:491
+#, no-c-format
+msgid ""
+"@Name(\"messageSender\") \n"
+"public class MessageSender {\n"
+"    public void sendMessage() {\n"
+"        //do something with JMS\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:492
+#, no-c-format
+msgid ""
+"In our unit tests, we don't have a JMS queue available, so we would like to "
+"stub out this method. We'll create a <emphasis>mock</emphasis> component "
+"that exists in the classpath when unit tests are running, but is never "
+"deployed with the application:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:495
+#, no-c-format
+msgid ""
+"@Name(\"messageSender\") \n"
+"@Install(precedence=MOCK)\n"
+"public class MockMessageSender extends MessageSender {\n"
+"    public void sendMessage() {\n"
+"        //do nothing!\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:496
+#, no-c-format
+msgid ""
+"The <literal>precedence</literal> helps Seam decide which version to use "
+"when it finds both components in the classpath."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:499
+#, no-c-format
+msgid ""
+"This is nice if we are able to control exactly which classes are in the "
+"classpath. But if I'm writing a reusable framework with many dependecies, I "
+"don't want to have to break that framework across many jars. I want to be "
+"able to decide which components to install depending upon what other "
+"components are installed, and upon what classes are available in the "
+"classpath. The <literal>@Install</literal> annotation also controls this "
+"functionality. Seam uses this mechanism internally to enable conditional "
+"installation of many of the built-in components. However, you probably won't "
+"need to use it in your application."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:502
+#, no-c-format
+msgid "Logging"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:503
+#, no-c-format
+msgid "Who is not totally fed up with seeing noisy code like this?"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:506
+#, no-c-format
+msgid ""
+"private static final Log log = LogFactory.getLog(CreateOrderAction.class);\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    if ( log.isDebugEnabled() ) {\n"
+"        log.debug(\"Creating new order for user: \" + user.username() + \n"
+"            \" product: \" + product.name() \n"
+"            + \" quantity: \" + quantity);\n"
+"    }\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:507
+#, no-c-format
+msgid ""
+"It is difficult to imagine how the code for a simple log message could "
+"possibly be more verbose. There is more lines of code tied up in logging "
+"than in the actual business logic! I remain totally astonished that the Java "
+"community has not come up with anything better in 10 years."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:510
+#, no-c-format
+msgid ""
+"Seam provides a logging API built on top of Apache commons-logging that "
+"simplifies this code significantly:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:513
+#, no-c-format
+msgid ""
+"@Logger private Log log;\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    log.debug(\"Creating new order for user: #0 product: #1 quantity: #2\", "
+"user.username(), \n"
+"       product.name(), quantity);\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:514
+#, no-c-format
+msgid ""
+"It doesn't matter if you declare the <literal>log</literal> variable static "
+"or not&mdash;it will work either way."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:517
+#, no-c-format
+msgid ""
+"Note that we don't need the noisy <literal>if ( log.isDebugEnabled() )</"
+"literal> guard, since string concatenation happens <emphasis>inside</"
+"emphasis> the <literal>debug()</literal> method. Note also that we don't "
+"usually need to specify the log category explicitly, since Seam knows what "
+"component it is injecting the <literal>Log</literal> into."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:520
+#, no-c-format
+msgid ""
+"If <literal>User</literal> and <literal>Product</literal> are Seam "
+"components available in the current contexts, it gets even better:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:523
+#, no-c-format
+msgid ""
+"@Logger private Log log;\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    log.debug(\"Creating new order for user: #{user.username} product: #"
+"{product.name}\n"
+"       quantity: #0\", quantity);\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:524
+#, no-c-format
+msgid ""
+"The <literal>Mutable</literal> interface and <literal>@ReadOnly</literal>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:525
+#, no-c-format
+msgid ""
+"Many application servers feature an amazingly broken implementation of "
+"<literal>HttpSession</literal> clustering, where changes to the state of "
+"mutable objects bound to the session are only replicated when the "
+"application calls <literal>setAttribute()</literal> explicitly. This is a "
+"source of bugs that can not effectively be tested for at development time, "
+"since they will only manifest when failover occurs. Furthermore, the actual "
+"replication message contains the entire serialized object graph bound to the "
+"session attribute, which is inefficient."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:528
+#, no-c-format
+msgid ""
+"Of course, EJB stateful session beans must perform automatic dirty checking "
+"and replication of mutable state and a sophisticated EJB container can "
+"introduce optimizations such as attribute-level replication. Unfortunately, "
+"not all Seam users have the good fortune to be working in an environment "
+"that supports EJB 3.0. So, for session and conversation scoped JavaBean and "
+"entity bean components, Seam provides an extra layer of cluster-safe state "
+"management over the top of the web container session clustering."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:531
+#, no-c-format
+msgid ""
+"For session or conversation scoped JavaBean components, Seam automatically "
+"forces replication to occur by calling <literal>setAttribute()</literal> "
+"once in every request that the component was invoked by the application. Of "
+"course, this strategy is inefficient for read-mostly components. You can "
+"control this behavior by implementing the <literal>org.jboss.seam.core."
+"Mutable</literal> interface, or by extending <literal>org.jboss.seam.core."
+"AbstractMutable</literal>, and writing your own dirty-checking logic inside "
+"the component. For example,"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:534
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class Account extends AbstractMutable\n"
+"{\n"
+"    private BigDecimal balance;\n"
+"    \n"
+"    public void setBalance(BigDecimal balance)\n"
+"    {\n"
+"        setDirty(this.balance, balance);\n"
+"        this.balance = balance;\n"
+"    }\n"
+"    \n"
+"    public BigDecimal getBalance()\n"
+"    {\n"
+"        return balance;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:535
+#, no-c-format
+msgid ""
+"Or, you can use the <literal>@ReadOnly</literal> annotation to achieve a "
+"similar effect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:538
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class Account\n"
+"{\n"
+"    private BigDecimal balance;\n"
+"    \n"
+"    public void setBalance(BigDecimal balance)\n"
+"    {\n"
+"        this.balance = balance;\n"
+"    }\n"
+"    \n"
+"    @ReadOnly\n"
+"    public BigDecimal getBalance()\n"
+"    {\n"
+"        return balance;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:539
+#, no-c-format
+msgid ""
+"For session or conversation scoped entity bean components, Seam "
+"automatically forces replication to occur by calling <literal>setAttribute()"
+"</literal> once in every request, <emphasis>unless the (conversation-scoped) "
+"entity is currently associated with a Seam-managed persistence context, in "
+"which case no replication is needed</emphasis>. This strategy is not "
+"necessarily efficient, so session or conversation scope entity beans should "
+"be used with care. You can always write a stateful session bean or JavaBean "
+"component to \"manage\" the entity bean instance. For example,"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:542
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"account\")\n"
+"public class AccountManager extends AbstractMutable\n"
+"{\n"
+"    private Account account; // an entity bean\n"
+"    \n"
+"    @Unwrap\n"
+"    public void getAccount()\n"
+"    {\n"
+"        return account;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:543
+#, no-c-format
+msgid ""
+"Note that the <literal>EntityHome</literal> class in the Seam Application "
+"Framework provides a great example of this pattern."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:546
+#, no-c-format
+msgid "Factory and manager components"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:547
+#, no-c-format
+msgid ""
+"We often need to work with objects that are not Seam components. But we "
+"still want to be able to inject them into our components using <literal>@In</"
+"literal> and use them in value and method binding expressions, etc. "
+"Sometimes, we even need to tie them into the Seam context lifecycle "
+"(<literal>@Destroy</literal>, for example). So the Seam contexts can contain "
+"objects which are not Seam components, and Seam provides a couple of nice "
+"features that make it easier to work with non-component objects bound to "
+"contexts."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:550
+#, no-c-format
+msgid ""
+"The <emphasis>factory component pattern</emphasis> lets a Seam component act "
+"as the instantiator for a non-component object. A <emphasis>factory method</"
+"emphasis> will be called when a context variable is referenced but has no "
+"value bound to it. We define factory methods using the <literal>@Factory</"
+"literal> annotation. The factory method binds a value to the context "
+"variable, and determines the scope of the bound value. There are two styles "
+"of factory method. The first style returns a value, which is bound to the "
+"context by Seam:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:553
+#, no-c-format
+msgid ""
+"@Factory(scope=CONVERSATION)\n"
+"public List&lt;Customer&gt; getCustomerList() { \n"
+"    return ... ;\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:554
+#, no-c-format
+msgid ""
+"The second style is a method of type <literal>void</literal> which binds the "
+"value to the context variable itself:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:557
+#, no-c-format
+msgid ""
+"@DataModel List&lt;Customer&gt; customerList;\n"
+"\n"
+"@Factory(\"customerList\")\n"
+"public void initCustomerList() { \n"
+"    customerList = ...  ;\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:558
+#, no-c-format
+msgid ""
+"In both cases, the factory method is called when we reference the "
+"<literal>customerList</literal> context variable and its value is null, and "
+"then has no further part to play in the lifecycle of the value. An even more "
+"powerful pattern is the <emphasis>manager component pattern</emphasis>. In "
+"this case, we have a Seam component that is bound to a context variable, "
+"that manages the value of the context variable, while remaining invisible to "
+"clients."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:561
+#, no-c-format
+msgid ""
+"A manager component is any component with an <literal>@Unwrap</literal> "
+"method. This method returns the value that will be visable to clients, and "
+"is called <emphasis>every time</emphasis> a context variable is referenced."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:564
+#, no-c-format
+msgid ""
+"@Name(\"customerList\")\n"
+"@Scope(CONVERSATION)\n"
+"public class CustomerListManager\n"
+"{\n"
+"    ...\n"
+"    \n"
+"    @Unwrap\n"
+"    public List&lt;Customer&gt; getCustomerList() { \n"
+"        return ... ;\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:565
+#, no-c-format
+msgid ""
+"This pattern is especially useful if we have some heavyweight object that "
+"needs a cleanup operation when the context ends. In this case, the manager "
+"component may perform cleanup in the <literal>@Destroy</literal> method."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Configuration.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Configuration.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Configuration.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1435 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Configuration.xml:10
+#, no-c-format
+msgid "Configuring Seam and packaging Seam applications"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:11
+#, no-c-format
+msgid ""
+"Configuration is a very boring topic and an extremely tedious pastime. "
+"Unfortunately, several lines of XML are required to integrate Seam into your "
+"JSF implementation and servlet container. There's no need to be too put off "
+"by the following sections; you'll never need to type any of this stuff "
+"yourself, since you can just copy and paste from the example applications!"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:14
+#, no-c-format
+msgid "Basic Seam configuration"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:15
+#, no-c-format
+msgid ""
+"First, let's look at the basic configuration that is needed whenever we use "
+"Seam with JSF."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:18
+#, no-c-format
+msgid "Integrating Seam with JSF and your servlet container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:19
+#, no-c-format
+msgid ""
+"Seam requires the following entry in your <literal>web.xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:22
+#, no-c-format
+msgid ""
+"&lt;listener&gt;\n"
+"    &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/listener-"
+"class&gt;\n"
+"&lt;/listener&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:23
+#, no-c-format
+msgid ""
+"This listener is responsible for bootstrapping Seam, and for destroying "
+"session and application contexts."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:26
+#, no-c-format
+msgid ""
+"To integrate with the JSF request lifecycle, we also need a JSF "
+"<literal>PhaseListener</literal> registered in in the <literal>faces-config."
+"xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:29
+#, no-c-format
+msgid ""
+"&lt;lifecycle&gt;\n"
+"    &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-"
+"listener&gt;\n"
+"&lt;/lifecycle&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:30
+#, no-c-format
+msgid ""
+"The actual listener class here varies depending upon how you want to manage "
+"transaction demarcation (more on this below)."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:33
+#, no-c-format
+msgid ""
+"If you are using Sun's JSF 1.2 reference implementation, you should also add "
+"this to <literal>faces-config.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:36
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;el-resolver&gt;org.jboss.seam.jsf.SeamELResolver&lt;/el-"
+"resolver&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:37
+#, no-c-format
+msgid ""
+"(This line should not strictly speaking be necessary, but it works around a "
+"minor bug in the RI.)"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:40
+#, no-c-format
+msgid ""
+"Some JSF implementations have a broken implementation of server-side state "
+"saving that interferes with Seam's conversation propagation. If you have "
+"problems with conversation propagation during form submissions, try "
+"switching to client-side state saving. You'll need this in <literal>web.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:43
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;client&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:44
+#, no-c-format
+msgid "Seam servlet filters"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:45
+#, no-c-format
+msgid ""
+"Seam doesn't need any servlet filters for basic operation. However, there "
+"are several features which depend upon the use of filters. To make things "
+"easier for you guys, Seam lets you add and configure servlet filters just "
+"like you would configure other built-in Seam components. To take advantage "
+"of this feature, we must first install a master filter in <literal>web.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:48
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;/*&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:49
+#, no-c-format
+msgid "Adding the master filter enables the following built-in filters."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:52
+#, no-c-format
+msgid "Exception handling"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:53
+#, no-c-format
+msgid ""
+"This filter provides the exception mapping functionality in <literal>pages."
+"xml</literal> (almost all applications will need this). It also takes care "
+"of rolling back uncommitted transactions when uncaught exceptions occur. "
+"(According to the Java EE specification, the web container should do this "
+"automatically, but we've found that this behavior cannot be relied upon in "
+"all application servers. And it is certainly not required of plain servlet "
+"engines like Tomcat.)"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:56
+#, no-c-format
+msgid ""
+"By default, the exception handling filter will process all requests, however "
+"this behavior may be adjusted by adding a <literal>&lt;web:exception-"
+"filter&gt;</literal> entry to <literal>components.xml</literal>, as shown in "
+"this example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:59
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:web=\"http://jboss.com/products/seam/web\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                    http://jboss.com/products/seam/core-1.2.xsd\n"
+"                 http://jboss.com/products/seam/components \n"
+"                     http://jboss.com/products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/web \n"
+"                     http://jboss.com/products/seam/web-1.2.xsd\"&gt;\n"
+"\n"
+"    &lt;web:exception-filter url-pattern=\"*.seam\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:62 Configuration.xml:77 Configuration.xml:99
+#: Configuration.xml:124
+#, no-c-format
+msgid ""
+"<literal>url-pattern</literal> &mdash; Used to specify which requests are "
+"filtered, the default is all requests."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:67
+#, no-c-format
+msgid "Conversation propagation with redirects"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:68
+#, no-c-format
+msgid ""
+"This filter allows Seam to propagate the conversation context across browser "
+"redirects. It intercepts any browser redirects and adds a request parameter "
+"that specifies the Seam conversation identifier."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:71
+#, no-c-format
+msgid ""
+"The redirect filter will process all requests by default, but this behavior "
+"can also be adjusted in <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:74
+#, no-c-format
+msgid "&lt;web:redirect-filter url-pattern=\"*.seam\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:82
+#, no-c-format
+msgid "Multipart form submissions"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:83
+#, no-c-format
+msgid ""
+"This feature is necessary when using the Seam file upload JSF control. It "
+"detects multipart form requests and processes them according to the "
+"multipart/form-data specification (RFC-2388). To override the default "
+"settings, add the following entry to <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:86
+#, no-c-format
+msgid ""
+"&lt;web:multipart-filter create-temp-files=\"true\" \n"
+"        max-request-size=\"1000000\" \n"
+"        url-pattern=\"*.seam\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:89
+#, no-c-format
+msgid ""
+"<literal>create-temp-files</literal> &mdash; If set to <literal>true</"
+"literal>, uploaded files are written to a temporary file (instead of held in "
+"memory). This may be an important consideration if large file uploads are "
+"expected. The default setting is <literal>false</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:94
+#, no-c-format
+msgid ""
+"<literal>max-request-size</literal> &mdash; If the size of a file upload "
+"request (determined by reading the <literal>Content-Length</literal> header "
+"in the request) exceeds this value, the request will be aborted. The default "
+"setting is 0 (no size limit)."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:104
+#, no-c-format
+msgid "Character encoding"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:105
+#, no-c-format
+msgid "Sets the character encoding of submitted form data."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:108 Configuration.xml:136
+#, no-c-format
+msgid ""
+"This filter is not installed by default and requires an entry in "
+"<literal>components.xml</literal> to enable it:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:111
+#, no-c-format
+msgid ""
+"&lt;web:character-encoding-filter encoding=\"UTF-16\" \n"
+"        override-client=\"true\" \n"
+"        url-pattern=\"*.seam\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:114
+#, no-c-format
+msgid "<literal>encoding</literal> &mdash; The encoding to use."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:119
+#, no-c-format
+msgid ""
+"<literal>override-client</literal> &mdash; If this is set to <literal>true</"
+"literal>, the request encoding will be set to whatever is specified by "
+"<literal>encoding</literal> no matter whether the request already specifies "
+"an encoding or not. If set to <literal>false</literal>, the request encoding "
+"will only be set if the request doesn't already specify an encoding. The "
+"default setting is <literal>false</literal>."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:129
+#, no-c-format
+msgid "Context management for custom servlets"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:130
+#, no-c-format
+msgid ""
+"Requests sent direct to some servlet other than the JSF servlet are not "
+"processed through the JSF lifecycle, so Seam provides a servlet filter that "
+"can be applied to any other servlet that needs access to Seam components."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:133
+#, no-c-format
+msgid ""
+"This filter allows custom servlets to interact with the Seam contexts. It "
+"sets up the Seam contexts at the beginning of each request, and tears them "
+"down at the end of the request. You should make sure that this filter is "
+"<emphasis>never</emphasis> applied to the JSF <literal>FacesServlet</"
+"literal>. Seam uses the phase listener for context management in a JSF "
+"request."
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:139
+#, no-c-format
+msgid "&lt;web:context-filter url-pattern=\"/media/*\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:142
+#, no-c-format
+msgid ""
+"<literal>url-pattern</literal> &mdash; Used to specify which requests are "
+"filtered, the default is all requests. If the url-pattern is specified for "
+"the context filter, then the filter will be enabled (unless explicitly "
+"disabled)."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:147
+#, no-c-format
+msgid ""
+"The context filter expects to find the conversation id of any conversation "
+"context in a request parameter named <literal>conversationId</literal>. You "
+"are responsible for ensuring that it gets sent in the request."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:150
+#, no-c-format
+msgid ""
+"You are also responsible for ensuring propagation of any new conversation id "
+"back to the client. Seam exposes the conversation id as a property of the "
+"built in component <literal>conversation</literal>."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:153
+#, no-c-format
+msgid "Integrating Seam with your EJB container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:154
+#, no-c-format
+msgid ""
+"We need to apply the <literal>SeamInterceptor</literal> to our Seam "
+"components. The simplest way to do this is to add the following interceptor "
+"binding to the <literal>&lt;assembly-descriptor&gt;</literal> in "
+"<literal>ejb-jar.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:157
+#, no-c-format
+msgid ""
+"&lt;interceptor-binding&gt;\n"
+"    &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"    &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"&lt;/interceptor-binding&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:158
+#, no-c-format
+msgid ""
+"Seam needs to know where to go to find session beans in JNDI. One way to do "
+"this is specify the <literal>@JndiName</literal> annotation on every session "
+"bean Seam component. However, this is quite tedious. A better approach is to "
+"specify a pattern that Seam can use to calculate the JNDI name from the EJB "
+"name. Unfortunately, there is no standard mapping to global JNDI defined in "
+"the EJB3 specification, so this mapping is vendor-specific. We usually "
+"specify this option in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:161
+#, no-c-format
+msgid "For JBoss AS, the following pattern is correct:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:164
+#, no-c-format
+msgid "&lt;core:init jndi-name=\"myEarName/#{ejbName}/local\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:165
+#, no-c-format
+msgid ""
+"Where <literal>myEarName</literal> is the name of the EAR in which the bean "
+"is deployed."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:168
+#, no-c-format
+msgid ""
+"Outside the context of an EAR (when using the JBoss Embeddable EJB3 "
+"container), the following pattern is the one to use:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:171
+#, no-c-format
+msgid "&lt;core:init jndi-name=\"#{ejbName}/local\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:172
+#, no-c-format
+msgid ""
+"You'll have to experiment to find the right setting for other application "
+"servers. Note that some servers (such as GlassFish) require you to specify "
+"JNDI names for all EJB components explicitly (and tediously). In this case, "
+"you can pick your own pattern ;-)"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:175
+#, no-c-format
+msgid "Using facelets"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:176
+#, no-c-format
+msgid ""
+"If you want follow our advice and use facelets instead of JSP, add the "
+"following lines to <literal>faces-config.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:179
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;view-handler&gt;com.sun.facelets.FaceletViewHandler&lt;/view-"
+"handler&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:180
+#, no-c-format
+msgid "And the following lines to <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:183
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;javax.faces.DEFAULT_SUFFIX&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;.xhtml&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:184
+#, no-c-format
+msgid "Don't forget!"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:185
+#, no-c-format
+msgid ""
+"There is one final item you need to know about. You must place a "
+"<literal>seam.properties</literal>, <literal>META-INF/seam.properties</"
+"literal> or <literal>META-INF/components.xml</literal> file in any archive "
+"in which your Seam components are deployed (even an empty properties file "
+"will do). At startup, Seam will scan any archives with <literal>seam."
+"properties</literal> files for seam components."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:188
+#, no-c-format
+msgid ""
+"That's why all the Seam examples have an empty <literal>seam.properties</"
+"literal> file. You can't just delete this file and expect everything to "
+"still work!"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:191
+#, no-c-format
+msgid ""
+"You might think this is silly and what kind of idiot framework designers "
+"would make an empty file affect the behavior of their software?? Well, this "
+"is a workaround for a limitation of the JVM&mdash;if we didn't use this "
+"mechanism, our next best option would be to force you to list every "
+"component explicitly in <literal>components.xml</literal>, just like some "
+"other competing frameworks do! I think you'll like our way better."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:195
+#, no-c-format
+msgid "Configuring Seam in Java EE 5"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:204
+#, no-c-format
+msgid ""
+"If you're running in a Java EE 5 environment, this is all the configuration "
+"required to start using Seam!"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:207 Configuration.xml:270 Configuration.xml:318
+#: Configuration.xml:354 Configuration.xml:371
+#, no-c-format
+msgid "Packaging"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:208
+#, no-c-format
+msgid ""
+"Once you've packaged all this stuff together into an EAR, the archive "
+"structure will look something like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:211
+#, no-c-format
+msgid ""
+"my-application.ear/\n"
+"    jboss-seam.jar\n"
+"    el-api.jar\n"
+"    el-ri.jar\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"        application.xml\n"
+"    my-application.war/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"        WEB-INF/\n"
+"            web.xml\n"
+"            components.xml\n"
+"            faces-config.xml\n"
+"            lib/\n"
+"                jsf-facelets.jar\n"
+"                jboss-seam-ui.jar\n"
+"        login.jsp\n"
+"        register.jsp\n"
+"        ...\n"
+"    my-application.jar/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"            persistence.xml\n"
+"        seam.properties\n"
+"        org/\n"
+"            jboss/\n"
+"                myapplication/\n"
+"                    User.class\n"
+"                    Login.class\n"
+"                    LoginBean.class\n"
+"                    Register.class\n"
+"                    RegisterBean.class\n"
+"                    ..."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:212
+#, no-c-format
+msgid ""
+"You must include <literal>jboss-seam.jar</literal>, <literal>el-api.jar</"
+"literal> and <literal>el-ri.jar</literal> in the EAR classpath. Make sure "
+"you reference all of these jars from <literal>application.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:215
+#, no-c-format
+msgid ""
+"If you want to use jBPM or Drools, you must include the needed jars in the "
+"EAR classpath. Make sure you reference all of the jars from "
+"<literal>application.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:218
+#, no-c-format
+msgid ""
+"If you want to use facelets (our recommendation), you must include "
+"<literal>jsf-facelets.jar</literal> in the <literal>WEB-INF/lib</literal> "
+"directory of the WAR."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:221
+#, no-c-format
+msgid ""
+"If you want to use the Seam tag library (most Seam applications do), you "
+"must include <literal>jboss-seam-ui.jar</literal> in the <literal>WEB-INF/"
+"lib</literal> directory of the WAR. If you want to use the PDF or email tag "
+"libraries, you need to put <literal>jboss-seam-pdf.jar</literal> or "
+"<literal>jboss-seam-mail.jar</literal> in <literal>WEB-INF/lib</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:224
+#, no-c-format
+msgid ""
+"If you want to use the Seam debug page (only works for applications using "
+"facelets), you must include <literal>jboss-seam-debug.jar</literal> in the "
+"<literal>WEB-INF/lib</literal> directory of the WAR."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:227
+#, no-c-format
+msgid ""
+"Seam ships with several example applications that are deployable in any Java "
+"EE container that supports EJB 3.0."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:231
+#, no-c-format
+msgid "Configuring Seam in Java SE, with the JBoss Embeddable EJB3 container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:232
+#, no-c-format
+msgid ""
+"The JBoss Embeddable EJB3 container lets you run EJB3 components outside the "
+"context of the Java EE 5 application server. This is especially, but not "
+"only, useful for testing."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:235
+#, no-c-format
+msgid ""
+"The Seam booking example application includes a TestNG integration test "
+"suite that runs on the Embeddable EJB3 container."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:246
+#, no-c-format
+msgid "The booking example application may even be deployed to Tomcat."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:257
+#, no-c-format
+msgid "Installing the Embeddable EJB3 container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:258
+#, no-c-format
+msgid ""
+"Seam ships with a build of the Embeddable EJB3 container in the "
+"<literal>embedded-ejb</literal> directory. To use the Embeddable EJB3 "
+"container with Seam, add the <literal>embedded-ejb/conf</literal> directory, "
+"and all jars in the <literal>lib</literal> and <literal>embedded-ejb/lib</"
+"literal> directories to your classpath. Then, add the following line to "
+"<literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:261
+#, no-c-format
+msgid "&lt;core:ejb /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:262
+#, no-c-format
+msgid ""
+"This setting installs the built-in component named <literal>org.jboss.seam."
+"core.ejb</literal>. This component is responsible for bootstrapping the EJB "
+"container when Seam is started, and shutting it down when the web "
+"application is undeployed."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:265
+#, no-c-format
+msgid "Configuring a datasource with the Embeddable EJB3 container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:266
+#, no-c-format
+msgid ""
+"You should refer to the Embeddable EJB3 container documentation for more "
+"information about configuring the container. You'll probably at least need "
+"to set up your own datasource. Embeddable EJB3 is implemented using the "
+"JBoss Microcontainer, so it's very easy to add new services to the minimal "
+"set of services provided by default. For example, I can add a new datasource "
+"by putting this <literal>jboss-beans.xml</literal> file in my classpath:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:269
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"\n"
+"&lt;deployment xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"urn:jboss:bean-deployer bean-deployer_1_0."
+"xsd\"\n"
+"            xmlns=\"urn:jboss:bean-deployer\"&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasourceBootstrap\"\n"
+"        class=\"org.jboss.resource.adapter.jdbc.local.LocalTxDataSource"
+"\"&gt;\n"
+"      &lt;property name=\"driverClass\"&gt;org.hsqldb.jdbcDriver&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"connectionURL\"&gt;jdbc:hsqldb:.&lt;/property&gt;\n"
+"      &lt;property name=\"userName\"&gt;sa&lt;/property&gt;\n"
+"      &lt;property name=\"jndiName\"&gt;java:/bookingDatasource&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"minSize\"&gt;0&lt;/property&gt;\n"
+"      &lt;property name=\"maxSize\"&gt;10&lt;/property&gt;\n"
+"      &lt;property name=\"blockingTimeout\"&gt;1000&lt;/property&gt;\n"
+"      &lt;property name=\"idleTimeout\"&gt;100000&lt;/property&gt;\n"
+"      &lt;property name=\"transactionManager\"&gt;\n"
+"        &lt;inject bean=\"TransactionManager\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"      &lt;property name=\"cachedConnectionManager\"&gt;\n"
+"        &lt;inject bean=\"CachedConnectionManager\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"      &lt;property name=\"initialContextProperties\"&gt;\n"
+"        &lt;inject bean=\"InitialContextProperties\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasource\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getDatasource\"&gt;\n"
+"         &lt;factory bean=\"bookingDatasourceBootstrap\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"&lt;/deployment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:271
+#, no-c-format
+msgid ""
+"The archive structure of a WAR-based deployment on an servlet engine like "
+"Tomcat will look something like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:274
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            myfaces-api.jar\n"
+"            myfaces-impl.jar\n"
+"            jboss-ejb3.jar\n"
+"            jboss-jca.jar\n"
+"            jboss-j2ee.jar\n"
+"            ...\n"
+"            mc-conf.jar/\n"
+"                ejb3-interceptors-aop.xml\n"
+"                embedded-jboss-beans.xml\n"
+"                default.persistence.properties\n"
+"                jndi.properties\n"
+"                login-config.xml\n"
+"                security-beans.xml\n"
+"                log4j.xml\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                    MANIFEST.MF\n"
+"                    persistence.xml\n"
+"                    jboss-beans.xml\n"
+"                log4j.xml\n"
+"                seam.properties\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            LoginBean.class\n"
+"                            Register.class\n"
+"                            RegisterBean.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:275
+#, no-c-format
+msgid ""
+"The <literal>mc-conf.jar</literal> just contains the standard JBoss "
+"Microcontainer configuration files for Embeddable EJB3. You won't usually "
+"need to edit these files yourself."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:278
+#, no-c-format
+msgid ""
+"Most of the Seam example applications may be deployed to Tomcat by running "
+"<literal>ant deploy.tomcat</literal>."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:281
+#, no-c-format
+msgid "Configuring Seam in J2EE"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:282
+#, no-c-format
+msgid ""
+"Seam is useful even if you're not yet ready to take the plunge into EJB 3.0. "
+"In this case you would use Hibernate3 or JPA instead of EJB 3.0 persistence, "
+"and plain JavaBeans instead of session beans. You'll miss out on some of the "
+"nice features of session beans but it will be very easy to migrate to EJB "
+"3.0 when you're ready and, in the meantime, you'll be able to take advantage "
+"of Seam's unique declarative state management architecture."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:293
+#, no-c-format
+msgid ""
+"Seam JavaBean components do not provide declarative transaction demarcation "
+"like session beans do. You <emphasis>could</emphasis> manage your "
+"transactions manually using the JTA <literal>UserTransaction</literal> (you "
+"could even implement your own declarative transaction management in a Seam "
+"interceptor). But most applications will use Seam managed transactions when "
+"using Hibernate with JavaBeans. Follow the instructions in the persistence "
+"chapter to install <literal>TransactionalSeamPhaseListener</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:296
+#, no-c-format
+msgid ""
+"The Seam distribution includes a version of the booking example application "
+"that uses Hibernate3 and JavaBeans instead of EJB3, and another version that "
+"uses JPA and JavaBeans. These example applications are ready to deploy into "
+"any J2EE application server."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:299
+#, no-c-format
+msgid ""
+"If we want to deploy Hibernate in a non-J2EE environment like Tomcat or "
+"TestNG, we need to do a little bit more work."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:302
+#, no-c-format
+msgid "Boostrapping Hibernate in Seam"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:303
+#, no-c-format
+msgid ""
+"Seam will bootstrap a Hibernate <literal>SessionFactory</literal> from your "
+"<literal>hibernate.cfg.xml</literal> file if you install a built-in "
+"component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:306
+#, no-c-format
+msgid ""
+"&lt;core:hibernate-session-factory name=\"hibernateSessionFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:307
+#, no-c-format
+msgid ""
+"You will also need to configure a <emphasis>managed session</emphasis> if "
+"you want a Seam managed Hibernate <literal>Session</literal> to be available "
+"via injection."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:310
+#, no-c-format
+msgid "Boostrapping JPA in Seam"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:311
+#, no-c-format
+msgid ""
+"Seam will bootstrap a JPA <literal>EntityManagerFactory</literal> from your "
+"<literal>persistence.xml</literal> file if you install this built-in "
+"component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:314
+#, no-c-format
+msgid "&lt;core:entity-manager-factory name=\"entityManagerFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:315
+#, no-c-format
+msgid ""
+"You will also need to configure a <emphasis>managed persistencece context</"
+"emphasis> if you want a Seam managed JPA <literal>EntityManager</literal> to "
+"be available via injection."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:319
+#, no-c-format
+msgid "We can package our application as a WAR, in the following structure:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:322
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            hibernate3.jar\n"
+"            hibernate-annotations.jar\n"
+"            ...\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                   MANIFEST.MF\n"
+"                seam.properties\n"
+"                hibernate.cfg.xml\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            Register.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:324
+#, no-c-format
+msgid "Configuring Seam in Java SE, with the JBoss Microcontainer"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:325
+#, no-c-format
+msgid ""
+"The Seam support for Hibernate and JPA requires JTA and a JCA datasource. If "
+"you are running in a non-EE environment like Tomcat or TestNG you can run "
+"these services, and Hibernate itself, in the JBoss Microcontainer."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:328
+#, no-c-format
+msgid ""
+"You can even deploy the Hibernate and JPA versions of the booking example in "
+"Tomcat."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:339
+#, no-c-format
+msgid ""
+"Seam ships with an example Microcontainer configuration in "
+"<literal>microcontainer/conf/jboss-beans.xml</literal> that provides all the "
+"things you need to run Seam with Hibernate in any non-EE environment. Just "
+"add the <literal>microcontainer/conf</literal> directory, and all jars in "
+"the <literal>lib</literal> and <literal>microcontainer/lib</literal> "
+"directories to your classpath. Refer to the documentation for the JBoss "
+"Microcontainer for more information."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:342
+#, no-c-format
+msgid "Using Hibernate and the JBoss Microcontainer"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:343
+#, no-c-format
+msgid ""
+"The built-in Seam component named <literal>org.jboss.seam.core."
+"microcontainer</literal> bootstraps the microcontainer. As before, we "
+"probably want to use a Seam managed session."
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:346
+#, no-c-format
+msgid ""
+"&lt;core:microcontainer/&gt;\n"
+"\n"
+"&lt;core:managed-hibernate-session name=\"bookingDatabase\" auto-create="
+"\"true\"\n"
+"    session-factory-jndi-name=\"java:/bookingSessionFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:347
+#, no-c-format
+msgid ""
+"Where <literal>java:/bookingSessionFactory</literal> is the name of the "
+"Hibernate session factory specified in <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:350
+#, no-c-format
+msgid ""
+"You'll need to provide a <literal>jboss.beans.xml</literal> file that "
+"installs JNDI, JTA, your JCA datasource and Hibernate into the "
+"microcontainer:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:353
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"\n"
+"&lt;deployment xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"urn:jboss:bean-deployer bean-deployer_1_0."
+"xsd\"\n"
+"            xmlns=\"urn:jboss:bean-deployer\"&gt;\n"
+"\n"
+"   &lt;bean name=\"Naming\" class=\"org.jnp.server.SingletonNamingServer\"/"
+"&gt;\n"
+"\n"
+"   &lt;bean name=\"TransactionManagerFactory\"\n"
+"       class=\"org.jboss.seam.microcontainer.TransactionManagerFactory\"/"
+"&gt;\n"
+"   &lt;bean name=\"TransactionManager\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getTransactionManager\"&gt;\n"
+"         &lt;factory bean=\"TransactionManagerFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasourceFactory\" class=\"org.jboss.seam."
+"microcontainer.DataSourceFactory\"&gt;\n"
+"      &lt;property name=\"driverClass\"&gt;org.hsqldb.jdbcDriver&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"connectionUrl\"&gt;jdbc:hsqldb:.&lt;/property&gt;\n"
+"      &lt;property name=\"userName\"&gt;sa&lt;/property&gt;\n"
+"      &lt;property name=\"jndiName\"&gt;java:/hibernateDatasource&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"minSize\"&gt;0&lt;/property&gt;\n"
+"      &lt;property name=\"maxSize\"&gt;10&lt;/property&gt;\n"
+"      &lt;property name=\"blockingTimeout\"&gt;1000&lt;/property&gt;\n"
+"      &lt;property name=\"idleTimeout\"&gt;100000&lt;/property&gt;\n"
+"      &lt;property name=\"transactionManager\"&gt;&lt;inject bean="
+"\"TransactionManager\"/&gt;&lt;/property&gt;\n"
+"   &lt;/bean&gt;\n"
+"   &lt;bean name=\"bookingDatasource\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getDataSource\"&gt;\n"
+"         &lt;factory bean=\"bookingDatasourceFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingSessionFactoryFactory\"\n"
+"       class=\"org.jboss.seam.microcontainer.HibernateFactory\"/&gt;\n"
+"   &lt;bean name=\"bookingSessionFactory\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getSessionFactory\"&gt;\n"
+"         &lt;factory bean=\"bookingSessionFactoryFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"      &lt;depends&gt;bookingDatasource&lt;/depends&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"&lt;/deployment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:355
+#, no-c-format
+msgid "The WAR could have the following structure:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:358
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            hibernate3.jar\n"
+"            ...\n"
+"            jboss-microcontainer.jar\n"
+"            jboss-jca.jar\n"
+"            ...\n"
+"            myfaces-api.jar\n"
+"            myfaces-impl.jar\n"
+"            mc-conf.jar/\n"
+"                jndi.properties\n"
+"                log4j.xml\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                    MANIFEST.MF\n"
+"                    jboss-beans.xml\n"
+"                seam.properties\n"
+"                hibernate.cfg.xml\n"
+"                log4j.xml\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            Register.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:359
+#, no-c-format
+msgid "Configuring jBPM in Seam"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:360
+#, no-c-format
+msgid ""
+"Seam's jBPM integration is not installed by default, so you'll need to "
+"enable jBPM by installing a built-in component. You'll also need to "
+"explicitly list your process and pageflow definitions. In "
+"<literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:363
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:pageflow-definitions&gt;\n"
+"        &lt;value&gt;createDocument.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;editDocument.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;approveDocument.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:pageflow-definitions&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;documentLifecycle.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:364
+#, no-c-format
+msgid ""
+"No further special configuration is needed if you only have pageflows. If "
+"you do have business process definitions, you need to provide a jBPM "
+"configuration, and a Hibernate configuration for jBPM. The Seam DVD Store "
+"demo includes example <literal>jbpm.cfg.xml</literal> and <literal>hibernate."
+"cfg.xml</literal> files that will work with Seam:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:367
+#, no-c-format
+msgid ""
+"&lt;jbpm-configuration&gt;\n"
+"\n"
+"  &lt;jbpm-context&gt;\n"
+"    &lt;service name=\"persistence\"&gt;\n"
+"       &lt;factory&gt;\n"
+"          &lt;bean class=\"org.jbpm.persistence.db."
+"DbPersistenceServiceFactory\"&gt;\n"
+"             &lt;field name=\"isTransactionEnabled\"&gt;&lt;false/&gt;&lt;/"
+"field&gt;\n"
+"          &lt;/bean&gt;\n"
+"       &lt;/factory&gt;\n"
+"    &lt;/service&gt;\n"
+"    &lt;service name=\"message\" factory=\"org.jbpm.msg.db."
+"DbMessageServiceFactory\" /&gt;\n"
+"    &lt;service name=\"scheduler\" factory=\"org.jbpm.scheduler.db."
+"DbSchedulerServiceFactory\" /&gt;\n"
+"    &lt;service name=\"logging\" factory=\"org.jbpm.logging.db."
+"DbLoggingServiceFactory\" /&gt;\n"
+"    &lt;service name=\"authentication\" \n"
+"        factory=\"org.jbpm.security.authentication."
+"DefaultAuthenticationServiceFactory\" /&gt;\n"
+"  &lt;/jbpm-context&gt;\n"
+"\n"
+"&lt;/jbpm-configuration&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:368
+#, no-c-format
+msgid ""
+"The most important thing to notice here is that jBPM transaction control is "
+"disabled. Seam or EJB3 should control the JTA transactions."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:372
+#, no-c-format
+msgid ""
+"There is not yet any well-defined packaging format for jBPM configuration "
+"and process/pageflow definition files. In the Seam examples we've decided to "
+"simply package all these files into the root of the EAR. In future, we will "
+"probably design some other standard packaging format. So the EAR looks "
+"something like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:375
+#, no-c-format
+msgid ""
+"my-application.ear/\n"
+"    jboss-seam.jar\n"
+"    el-api.jar\n"
+"    el-ri.jar\n"
+"    jbpm-3.1.jar\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"        application.xml\n"
+"    my-application.war/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"        WEB-INF/\n"
+"            web.xml\n"
+"            components.xml\n"
+"            faces-config.xml\n"
+"            lib/\n"
+"                jsf-facelets.jar\n"
+"                jboss-seam-ui.jar\n"
+"        login.jsp\n"
+"        register.jsp\n"
+"        ...\n"
+"    my-application.jar/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"            persistence.xml\n"
+"        seam.properties\n"
+"        org/\n"
+"            jboss/\n"
+"                myapplication/\n"
+"                    User.class\n"
+"                    Login.class\n"
+"                    LoginBean.class\n"
+"                    Register.class\n"
+"                    RegisterBean.class\n"
+"                    ...\n"
+"    jbpm.cfg.xml\n"
+"    hibernate.cfg.xml\n"
+"    createDocument.jpdl.xml\n"
+"    editDocument.jpdl.xml\n"
+"    approveDocument.jpdl.xml\n"
+"    documentLifecycle.jpdl.xml"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:376
+#, no-c-format
+msgid ""
+"Remember to add <literal>jbpm-3.1.jar</literal> to the manifest of your EJB-"
+"JAR and WAR."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:379
+#, no-c-format
+msgid "Configuring Seam in a Portal"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:380
+#, no-c-format
+msgid ""
+"To run a Seam application as a portlet, you'll need to provide certain "
+"portlet metadata (<literal>portlet.xml</literal>, etc) in addition to the "
+"usual Java EE metadata. See the <literal>examples/portal</literal> directory "
+"for an example of the booking demo preconfigured to run on JBoss Portal."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:383
+#, no-c-format
+msgid ""
+"In addition, you'll need to use a portlet-specific phase listener instead of "
+"<literal>SeamPhaseListener</literal> or "
+"<literal>TransactionalSeamPhaseListener</literal>. The "
+"<literal>SeamPortletPhaseListener</literal> and "
+"<literal>TransactionalSeamPortletPhaseListener</literal> are adapted to the "
+"portlet lifecycle. I would like to offer my sincerest apologies for the name "
+"of that last class. I really couldn't think of anything better. Sorry."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Controls.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Controls.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Controls.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,591 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Controls.xml:10
+#, no-c-format
+msgid "Seam JSF controls"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:11
+#, no-c-format
+msgid ""
+"Seam includes a number of JSF controls that are useful for working with "
+"Seam. These are intended to complement the built-in JSF controls, and "
+"controls from other third-party libraries. We recommend the Ajax4JSF and ADF "
+"faces (now Trinidad) tag libraries for use with Seam. We do not recommend "
+"the use of the Tomahawk tag library."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:14
+#, no-c-format
+msgid "The ui example demonstrates the use of a number of these tags."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:19
+#, no-c-format
+msgid "&lt;s:validate&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:21
+#, no-c-format
+msgid ""
+"Validate a JSF input field against the bound property using Hibernate "
+"Validator."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:27
+#, no-c-format
+msgid "&lt;s:validateAll&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:29
+#, no-c-format
+msgid ""
+"Validate all child JSF input fields against the bound propertys using "
+"Hibernate Validator."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:35
+#, no-c-format
+msgid "&lt;s:formattedText&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:37
+#, no-c-format
+msgid "Output <emphasis>Seam Text</emphasis>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:43
+#, no-c-format
+msgid "&lt;s:convertDateTime&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:45
+#, no-c-format
+msgid "Perform date or time conversions in the Seam timezone."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:51
+#, no-c-format
+msgid "&lt;s:convertEnum&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:53
+#, no-c-format
+msgid ""
+"Assigns an enum converter to the current component. This is primarily useful "
+"for radio button and dropdown controls."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:59
+#, no-c-format
+msgid "&lt;s:enumItem&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:61
+#, no-c-format
+msgid "Creates a <literal>SelectItem</literal> from an enum value."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:66
+#, no-c-format
+msgid ""
+"<literal>enumValue</literal> &mdash; the string representation of the enum "
+"value."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:71
+#, no-c-format
+msgid ""
+"<literal>label</literal> &mdash; the label to be used when rendering the "
+"<literal>SelectItem</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:79
+#, no-c-format
+msgid "&lt;s:selectItems&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:81
+#, no-c-format
+msgid ""
+"Creates a <literal>List&lt;SelectItem&gt;</literal> from a List, Set, "
+"DataModel or Array."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:86
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; an EL expression specifying the data that "
+"backs the <literal>List&lt;SelectItem&gt;</literal>"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:91
+#, no-c-format
+msgid ""
+"<literal>var</literal> &mdash; defines the name of the local variable that "
+"holds the current object during iteration"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:96
+#, no-c-format
+msgid ""
+"<literal>label</literal> &mdash; the label to be used when rendering the "
+"<literal>SelectItem</literal>. Can reference the <literal>var</literal> "
+"variable"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:101
+#, no-c-format
+msgid ""
+"<literal>disabled</literal> &mdash; if true the <literal>SelectItem</"
+"literal> will be rendered disabled. Can reference the <literal>var</literal> "
+"variable"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:106
+#, no-c-format
+msgid ""
+"<literal>noSelectionLabel</literal> &mdash; specifies the (optional) label "
+"to place at the top of list (if <literal>required=\"true\"</literal> is also "
+"specified then selecting this value will cause a validation error)"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:111
+#, no-c-format
+msgid ""
+"<literal>hideNoSelectionLabel</literal> &mdash; if true, the "
+"<literal>noSelectionLabel</literal> will be hidden when a value is selected"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:119
+#, no-c-format
+msgid "&lt;s:decorate&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:121
+#, no-c-format
+msgid "\"Decorate\" a JSF input field when validation fails."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:127
+#, no-c-format
+msgid "&lt;s:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:129
+#, no-c-format
+msgid "\"Decorate\" a JSF input field with the validation error message."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:135
+#, no-c-format
+msgid "&lt;s:span&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:137
+#, no-c-format
+msgid "Render a HTML <literal>&lt;span&gt;</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:143
+#, no-c-format
+msgid "&lt;s:div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:145
+#, no-c-format
+msgid "Render a HTML <literal>&lt;div&gt;</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:151
+#, no-c-format
+msgid "&lt;s:fragment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:153
+#, no-c-format
+msgid ""
+"A non-rendering component useful for enabling/disabling rendering of it's "
+"children"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:159
+#, no-c-format
+msgid "&lt;s:cache&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:161
+#, no-c-format
+msgid ""
+"Cache the rendered page fragment using JBoss Cache. Note that <literal>&lt;s:"
+"cache&gt;</literal> actually uses the instance of JBoss Cache managed by the "
+"built-in <literal>pojoCache</literal> component."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:166
+#, no-c-format
+msgid ""
+"<literal>key</literal> &mdash; the key to cache rendered content, often a "
+"value expression. For example, if we were caching a page fragment that "
+"displays a document, we might use <literal>key=\"Document-#{document.id}\"</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:171
+#, no-c-format
+msgid ""
+"<literal>enabled</literal> &mdash; a value expression that determines if the "
+"cache should be used."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:176
+#, no-c-format
+msgid ""
+"<literal>region</literal> &mdash; a JBoss Cache node to use (different nodes "
+"can have different expiry policies)."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:184
+#, no-c-format
+msgid "&lt;s:link&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:186
+#, no-c-format
+msgid ""
+"A link that supports invocation of an action with control over conversation "
+"propagation. <emphasis>Does not submit the form.</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:191 Controls.xml:236
+#, no-c-format
+msgid "<literal>value</literal> &mdash; the label."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:196 Controls.xml:241
+#, no-c-format
+msgid ""
+"<literal>action</literal> &mdash; a method binding that specified the action "
+"listener."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:201 Controls.xml:246
+#, no-c-format
+msgid "<literal>view</literal> &mdash; the JSF view id to link to."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:206 Controls.xml:251
+#, no-c-format
+msgid "<literal>fragment</literal> &mdash; the fragment identifier to link to."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:211 Controls.xml:256
+#, no-c-format
+msgid "<literal>disabled</literal> &mdash; is the link disabled?"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:216 Controls.xml:261 Controls.xml:301
+#, no-c-format
+msgid ""
+"<literal>propagation</literal> &mdash; determines the conversation "
+"propagation style: <literal>begin</literal>, <literal>join</literal>, "
+"<literal>nest</literal>, <literal>none</literal> or <literal>end</literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:221 Controls.xml:266 Controls.xml:306
+#, no-c-format
+msgid ""
+"<literal>pageflow</literal> &mdash; a pageflow definition to begin. (This is "
+"only useful when <literal>propagation=\"begin\"</literal> or "
+"<literal>propagation=\"join\"</literal>.)"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:229
+#, no-c-format
+msgid "&lt;s:button&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:231
+#, no-c-format
+msgid ""
+"A button that supports invocation of an action with control over "
+"conversation propagation. <emphasis>Does not submit the form.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:274
+#, no-c-format
+msgid "&lt;s:selectDate&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:276
+#, no-c-format
+msgid ""
+"Displays a dynamic date picker component that selects a date for the "
+"specified input field. The body of the <literal>selectDate</literal> element "
+"should contain HTML elements, such as text or an image, that prompt the user "
+"to click to display the date picker. The date picker can be styled using "
+"CSS. An example CSS file can be found in the Seam booking demo as "
+"<literal>date.css</literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:281
+#, no-c-format
+msgid ""
+"<literal>for</literal> &mdash; The id of the input field that the date "
+"picker will insert the selected date into."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:286
+#, no-c-format
+msgid ""
+"<literal>dateFormat</literal> &mdash; The date format string. This should "
+"match the date format of the input field."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:294
+#, no-c-format
+msgid "&lt;s:conversationPropagation&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:296
+#, no-c-format
+msgid ""
+"Customize the conversation propagation for a command link or button (or "
+"similar JSF control). <emphasis>Facelets only.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:314
+#, no-c-format
+msgid "&lt;s:conversationId&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:316
+#, no-c-format
+msgid ""
+"Add the conversation id to an output link (or similar JSF control). "
+"<emphasis>Facelets only.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:322
+#, no-c-format
+msgid "&lt;s:taskId&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:324
+#, no-c-format
+msgid ""
+"Add the task id to an output link (or similar JSF control), when the task is "
+"available via <literal>#{task}</literal>. <emphasis>Facelets only.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:330
+#, no-c-format
+msgid "&lt;s:fileUpload&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:332
+#, no-c-format
+msgid ""
+"Renders a file upload control. This control must be used within a form with "
+"an encoding type of <literal>multipart/form-data</literal>, i.e:"
+msgstr ""
+
+#. Tag: programlisting
+#: Controls.xml:335
+#, no-c-format
+msgid "&lt;h:form enctype=\"multipart/form-data\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:336
+#, no-c-format
+msgid ""
+"For multipart requests, the Seam Multipart servlet filter must also be "
+"configured in <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Controls.xml:339
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"      &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"      &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-"
+"class&gt;\n"
+"    &lt;/filter&gt;\n"
+"    \n"
+"    &lt;filter-mapping&gt;\n"
+"      &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"      &lt;url-pattern&gt;/*&lt;/url-pattern&gt;\n"
+"    &lt;/filter-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:340
+#, no-c-format
+msgid ""
+"The following configuration options for multipart requests may be configured "
+"in components.xml:"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:345
+#, no-c-format
+msgid ""
+"<literal>createTempFiles</literal> &mdash; if this option is set to true, "
+"uploaded files are streamed to a temporary file instead of in memory."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:350
+#, no-c-format
+msgid ""
+"<literal>maxRequestSize</literal> &mdash; the maximum size of a file upload "
+"request, in bytes."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:355
+#, no-c-format
+msgid "Here's an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Controls.xml:358
+#, no-c-format
+msgid ""
+"&lt;component class=\"org.jboss.seam.servlet.MultipartConfig\"&gt;\n"
+"        &lt;property name=\"createTempFiles\"&gt;true&lt;/property&gt;\n"
+"        &lt;property name=\"maxRequestSize\"&gt;1000000&lt;/property&gt;\n"
+"    &lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:359
+#, no-c-format
+msgid ""
+"And here's a list of the supported attributes for the <literal>fileUpload</"
+"literal> control:"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:364
+#, no-c-format
+msgid ""
+"<literal>data</literal> &mdash; this value binding receives the binary file "
+"data. The receiving field should be declared as a <literal>byte[]</literal> "
+"or <literal>InputStream</literal> (required)."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:369
+#, no-c-format
+msgid ""
+"<literal>contentType</literal> &mdash; this value binding receives the "
+"file's content type (optional)."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:374
+#, no-c-format
+msgid ""
+"<literal>fileName</literal> &mdash; this value binding receives the filename "
+"(optional)."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:379
+#, no-c-format
+msgid ""
+"<literal>accept</literal> &mdash; a comma-separated list of content types to "
+"accept, may not be supported by the browser. E.g. <literal>\"images/png,"
+"images/jpg\"</literal>, <literal>\"images/*\"</literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:384
+#, no-c-format
+msgid "<literal>style</literal> &mdash; The control's style"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:389
+#, no-c-format
+msgid "<literal>styleClass</literal> &mdash; The control's style class"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Conversations.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Conversations.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Conversations.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1248 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Conversations.xml:10
+#, no-c-format
+msgid "Conversations and workspace management"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:11
+#, no-c-format
+msgid "It's time to understand Seam's conversation model in more detail."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:14
+#, no-c-format
+msgid ""
+"Historically, the notion of a Seam \"conversation\" came about as a merger "
+"of three different ideas:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:19
+#, no-c-format
+msgid ""
+"The idea of a <emphasis>workspace</emphasis>, which I encountered in a "
+"project for the Victorian government in 2002. In this project I was forced "
+"to implement workspace management on top of Struts, an experience I pray "
+"never to repeat."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:24
+#, no-c-format
+msgid ""
+"The idea of an <emphasis>application transaction</emphasis> with optimistic "
+"semantics, and the realization that existing frameworks based around a "
+"stateless architecture could not provide effective management of extended "
+"persistence contexts. (The Hibernate team is truly fed up with copping the "
+"blame for <literal>LazyInitializationException</literal>s, which are not "
+"really Hibernate's fault, but rather the fault of the extremely limiting "
+"persistence context model supported by stateless architectures such as the "
+"Spring framework or the traditional <emphasis>stateless session facade</"
+"emphasis> (anti)pattern in J2EE.)"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:29
+#, no-c-format
+msgid "The idea of a workflow <emphasis>task</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:34
+#, no-c-format
+msgid ""
+"By unifying these ideas and providing deep support in the framework, we have "
+"a powerful construct that lets us build richer and more efficient "
+"applications with less code than before."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:38
+#, no-c-format
+msgid "Seam's conversation model"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:39
+#, no-c-format
+msgid ""
+"The examples we have seen so far make use of a very simple conversation "
+"model that follows these rules:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:44
+#, no-c-format
+msgid ""
+"There is always a conversation context active during the apply request "
+"values, process validations, update model values, invoke application and "
+"render response phases of the JSF request lifecycle."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:49
+#, no-c-format
+msgid ""
+"At the end of the restore view phase of the JSF request lifecycle, Seam "
+"attempts to restore any previous long-running conversation context. If none "
+"exists, Seam creates a new temporary conversation context."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:54
+#, no-c-format
+msgid ""
+"When an <literal>@Begin</literal> method is encountered, the temporary "
+"conversation context is promoted to a long running conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:59
+#, no-c-format
+msgid ""
+"When an <literal>@End</literal> method is encountered, any long-running "
+"conversation context is demoted to a temporary conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:64
+#, no-c-format
+msgid ""
+"At the end of the render response phase of the JSF request lifecycle, Seam "
+"stores the contents of a long running conversation context or destroys the "
+"contents of a temporary conversation context."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:69
+#, no-c-format
+msgid ""
+"Any faces request (a JSF postback) will propagate the conversation context. "
+"By default, non-faces requests (GET requests, for example) do not propagate "
+"the conversation context, but see below for more information on this."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:74
+#, no-c-format
+msgid ""
+"If the JSF request lifecycle is foreshortened by a redirect, Seam "
+"transparently stores and restores the current conversation context&mdash;"
+"unless the conversation was already ended via <literal>@End"
+"(beforeRedirect=true)</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:79
+#, no-c-format
+msgid ""
+"Seam transparently propagates the conversation context across JSF postbacks "
+"and redirects. If you don't do anything special, a <emphasis>non-faces "
+"request</emphasis> (a GET request for example) will not propagate the "
+"conversation context and will be processed in a new temporary conversation. "
+"This is usually - but not always - the desired behavior."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:82
+#, no-c-format
+msgid ""
+"If you want to propagate a Seam conversation across a non-faces request, you "
+"need to explicitly code the Seam <emphasis>conversation id</emphasis> as a "
+"request parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:85
+#, no-c-format
+msgid ""
+"&lt;a href=\"main.jsf?conversationId=#{conversation.id}\"&gt;Continue&lt;/"
+"a&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:86
+#, no-c-format
+msgid "Or, the more JSF-ish:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:89
+#, no-c-format
+msgid ""
+"&lt;h:outputLink value=\"main.jsf\"&gt;\n"
+"    &lt;f:param name=\"conversationId\" value=\"#{conversation.id}\"/&gt;\n"
+"    &lt;h:outputText value=\"Continue\"/&gt;\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:90 Conversations.xml:98
+#, no-c-format
+msgid "If you use the Seam tag library, this is equivalent:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:93
+#, no-c-format
+msgid ""
+"&lt;h:outputLink value=\"main.jsf\"&gt;\n"
+"    &lt;s:conversationId/&gt;\n"
+"    &lt;h:outputText value=\"Continue\"/&gt;\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:94
+#, no-c-format
+msgid ""
+"If you wish to disable propagation of the conversation context for a "
+"postback, a similar trick is used:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:97
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;f:param name=\"conversationPropagation\" value=\"none\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:101
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"none\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:102
+#, no-c-format
+msgid ""
+"Note that disabling conversation context propagation is absolutely not the "
+"same thing as ending the conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:105
+#, no-c-format
+msgid ""
+"The <literal>conversationPropagation</literal> request parameter, or the "
+"<literal>&lt;s:conversationPropagation&gt;</literal> tag may even be used to "
+"begin and end conversation, or begin a nested conversation."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:108
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"end\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:109
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Child\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"nested\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:110
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Hotel\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"begin\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:111
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Hotel\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"join\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:112
+#, no-c-format
+msgid ""
+"This conversation model makes it easy to build applications which behave "
+"correctly with respect to multi-window operation. For many applications, "
+"this is all that is needed. Some complex applications have either or both of "
+"the following additional requirements:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:117
+#, no-c-format
+msgid ""
+"A conversation spans many smaller units of user interaction, which execute "
+"serially or even concurrently. The smaller <emphasis>nested conversations</"
+"emphasis> have their own isolated set of conversation state, and also have "
+"access to the state of the outer conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:122
+#, no-c-format
+msgid ""
+"The user is able to switch between many conversations within the same "
+"browser window. This feature is called <emphasis>workspace management</"
+"emphasis>."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:130
+#, no-c-format
+msgid "Nested conversations"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:131
+#, no-c-format
+msgid ""
+"A nested conversation is created by invoking a method marked <literal>@Begin"
+"(nested=true)</literal> inside the scope of an existing conversation. A "
+"nested conversation has its own conversation context, and also has read-only "
+"access to the context of the outer conversation. (It can read the outer "
+"conversation's context variables, but not write to them.) When an "
+"<literal>@End</literal> is subsequently encountered, the nested conversation "
+"will be destroyed, and the outer conversation will resume, by \"popping\" "
+"the conversation stack. Conversations may be nested to any arbitrary depth."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:134
+#, no-c-format
+msgid ""
+"Certain user activity (workspace management, or the back button) can cause "
+"the outer conversation to be resumed before the inner conversation is ended. "
+"In this case it is possible to have multiple concurrent nested conversations "
+"belonging to the same outer conversation. If the outer conversation ends "
+"before a nested conversation ends, Seam destroys all nested conversation "
+"contexts along with the outer context."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:137
+#, no-c-format
+msgid ""
+"A conversation may be thought of as a <emphasis>continuable state</"
+"emphasis>. Nested conversations allow the application to capture a "
+"consistent continuable state at various points in a user interaction, thus "
+"insuring truly correct behavior in the face of backbuttoning and workspace "
+"management."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:140
+#, no-c-format
+msgid ""
+"TODO: an example to show how a nested conversation prevents bad stuff "
+"happening when you backbutton."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:143
+#, no-c-format
+msgid ""
+"Usually, if a component exists in a parent conversation of the current "
+"nested conversation, the nested conversation will use the same instance. "
+"Occasionally, it is useful to have a different instance in each nested "
+"conversation, so that the component instance that exists in the parent "
+"conversation is invisible to its child conversations. You can achieve this "
+"behavior by annotating the component <literal>@PerNestedConversation</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:149
+#, no-c-format
+msgid "Starting conversations with GET requests"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:150
+#, no-c-format
+msgid ""
+"JSF does not define any kind of action listener that is triggered when a "
+"page is accessed via a non-faces request (for example, a HTTP GET request). "
+"This can occur if the user bookmarks the page, or if we navigate to the page "
+"via an <literal>&lt;h:outputLink&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:153
+#, no-c-format
+msgid ""
+"Sometimes we want to begin a conversation immediately the page is accessed. "
+"Since there is no JSF action method, we can't solve the problem in the usual "
+"way, by annotating the action with <literal>@Begin</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:156
+#, no-c-format
+msgid ""
+"A further problem arises if the page needs some state to be fetched into a "
+"context variable. We've already seen two ways to solve this problem. If that "
+"state is held in a Seam component, we can fetch the state in a "
+"<literal>@Create</literal> method. If not, we can define a "
+"<literal>@Factory</literal> method for the context variable."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:159
+#, no-c-format
+msgid ""
+"If none of these options works for you, Seam lets you define a "
+"<emphasis>page action</emphasis> in the <literal>pages.xml</literal> file."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:162
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\" action=\"#{messageManager.list}\"/"
+"&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:163
+#, no-c-format
+msgid ""
+"This action method is called at the beginning of the render response phase, "
+"any time the page is about to be rendered. If a page action returns a non-"
+"null outcome, Seam will process any appropriate JSF and Seam navigation "
+"rules, possibly resulting in a completely different page being rendered."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:166
+#, no-c-format
+msgid ""
+"If <emphasis>all</emphasis> you want to do before rendering the page is "
+"begin a conversation, you could use a built-in action method that does just "
+"that:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:169
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\" action=\"#{conversation.begin}\"/"
+"&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:170
+#, no-c-format
+msgid ""
+"Note that you can also call this built-in action from a JSF control, and, "
+"similarly, you can use <literal>#{conversation.end}</literal> to end "
+"conversations."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:173
+#, no-c-format
+msgid ""
+"If you want more control, to join existing conversations or begin a nested "
+"conversion, to begin a pageflow or an atomic conversation, you should use "
+"the <literal>&lt;begin-conversation&gt;</literal> element."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:176
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\"&gt;\n"
+"       &lt;begin-conversation nested=\"true\" pageflow=\"AddItem\"/&gt;\n"
+"    &lt;page&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:177
+#, no-c-format
+msgid "There is also an <literal>&lt;end-conversation&gt;</literal> element."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:180
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/home.jsp\"&gt;\n"
+"       &lt;end-conversation/&gt;\n"
+"    &lt;page&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:181
+#, no-c-format
+msgid "To solve the first problem, we now have five options:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:186
+#, no-c-format
+msgid ""
+"Annotate the <literal>@Create</literal> method with <literal>@Begin</literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:191
+#, no-c-format
+msgid ""
+"Annotate the <literal>@Factory</literal> method with <literal>@Begin</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:196
+#, no-c-format
+msgid "Annotate the Seam page action method with <literal>@Begin</literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:201
+#, no-c-format
+msgid ""
+"Use <literal>&lt;begin-conversation&gt;</literal> in <literal>pages.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:206
+#, no-c-format
+msgid ""
+"Use <literal>#{conversation.begin}</literal> as the Seam page action method"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:214
+#, no-c-format
+msgid ""
+"Using <literal>&lt;s:link&gt;</literal> and <literal>&lt;s:button&gt;</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:215
+#, no-c-format
+msgid ""
+"JSF command links always perform a form submission via JavaScript, which "
+"breaks the web browser's \"open in new window\" or \"open in new tab\" "
+"feature. In plain JSF, you need to use an <literal>&lt;h:outputLink&gt;</"
+"literal> if you need this functionality. But there are two major limitations "
+"to <literal>&lt;h:outputLink&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:220
+#, no-c-format
+msgid ""
+"JSF provides no way to attach an action listener to an <literal>&lt;h:"
+"outputLink&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:225
+#, no-c-format
+msgid ""
+"JSF does not propagate the selected row of a <literal>DataModel</literal> "
+"since there is no actual form submission."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:230
+#, no-c-format
+msgid ""
+"Seam provides the notion of a <emphasis>page action</emphasis> to help solve "
+"the first problem, but this does nothing to help us with the second problem. "
+"We <emphasis>could</emphasis> work around this by using the RESTful approach "
+"of passing a request parameter and requerying for the selected object on the "
+"server side. In some cases&mdash;such as the Seam blog example "
+"application&mdash;this is indeed the best approach. The RESTful style "
+"supports bookmarking, since it does not require server-side state. In other "
+"cases, where we don't care about bookmarks, the use of <literal>@DataModel</"
+"literal> and <literal>@DataModelSelection</literal> is just so convenient "
+"and transparent!"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:233
+#, no-c-format
+msgid ""
+"To fill in this missing functionality, and to make conversation propagation "
+"even simpler to manage, Seam provides the <literal>&lt;s:link&gt;</literal> "
+"JSF tag."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:236
+#, no-c-format
+msgid "The link may specify just the JSF view id:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:239
+#, no-c-format
+msgid ""
+"&lt;s:link view=&#8220;/login.xhtml&#8221; value=&#8220;Login&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:240
+#, no-c-format
+msgid ""
+"Or, it may specify an action method (in which case the action outcome "
+"determines the page that results):"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:243
+#, no-c-format
+msgid ""
+"&lt;s:link action=&#8220;#{login.logout}&#8221; value=&#8220;Logout&#8221;/"
+"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:244
+#, no-c-format
+msgid ""
+"If you specify <emphasis>both</emphasis> a JSF view id and an action method, "
+"the 'view' will be used <emphasis>unless</emphasis> the action method "
+"returns a non-null outcome:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:247
+#, no-c-format
+msgid ""
+"&lt;s:link view=\"/loggedOut.xhtml\"  action=&#8220;#{login.logout}&#8221; "
+"value=&#8220;Logout&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:248
+#, no-c-format
+msgid ""
+"The link automatically propagates the selected row of a <literal>DataModel</"
+"literal> using inside <literal>&lt;h:dataTable&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:251
+#, no-c-format
+msgid ""
+"&lt;s:link view=&#8220;/hotel.xhtml&#8221; action=&#8220;#{hotelSearch."
+"selectHotel}&#8221; value=&#8220;#{hotel.name}&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:252
+#, no-c-format
+msgid "You can leave the scope of an existing conversation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:255
+#, no-c-format
+msgid ""
+"&lt;s:link view=&#8220;/main.xhtml&#8221; propagation=&#8220;none&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:256
+#, no-c-format
+msgid "You can begin, end, or nest conversations:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:259
+#, no-c-format
+msgid ""
+"&lt;s:link action=&#8220;#{issueEditor.viewComment}&#8221; "
+"propagation=&#8220;nest&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:260
+#, no-c-format
+msgid ""
+"If the link begins a conversation, you can even specify a pageflow to be "
+"used:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:263
+#, no-c-format
+msgid ""
+"&lt;s:link action=&#8220;#{documentEditor.getDocument}&#8221; "
+"propagation=&#8220;begin&#8221; \n"
+"        pageflow=&#8220;EditDocument&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:264
+#, no-c-format
+msgid ""
+"The <literal>taskInstance</literal> attribute if for use in jBPM task lists:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:267
+#, no-c-format
+msgid ""
+"&lt;s:link action=&#8220;#{documentApproval.approveOrReject}&#8221; "
+"taskInstance=&#8220;#{task}&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:268
+#, no-c-format
+msgid "(See the DVD Store demo application for examples of this.)"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:271
+#, no-c-format
+msgid ""
+"Finally, if you need the \"link\" to be rendered as a button, use "
+"<literal>&lt;s:button&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:274
+#, no-c-format
+msgid ""
+"&lt;s:button action=&#8220;#{login.logout}&#8221; value=&#8220;Logout&#8221;/"
+"&gt;"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:278
+#, no-c-format
+msgid "Success messages"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:279
+#, no-c-format
+msgid ""
+"It is quite common to display a message to the user indicating success or "
+"failure of an action. It is convenient to use a JSF <literal>FacesMessage</"
+"literal> for this. Unfortunately, a successful action often requires a "
+"browser redirect, and JSF does not propagate faces messages across "
+"redirects. This makes it quite difficult to display success messages in "
+"plain JSF."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:282
+#, no-c-format
+msgid ""
+"The built in conversation-scoped Seam component named "
+"<literal>facesMessages</literal> solves this problem. (You must have the "
+"Seam redirect filter installed.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:285
+#, no-c-format
+msgid ""
+"@Name(\"editDocumentAction\")\n"
+"@Stateless\n"
+"public class EditDocumentBean implements EditDocument {\n"
+"    @In EntityManager em;\n"
+"    @In Document document;\n"
+"    @In FacesMessages facesMessages;\n"
+"    \n"
+"    public String update() {\n"
+"        em.merge(document);\n"
+"        facesMessages.add(\"Document updated\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:286
+#, no-c-format
+msgid ""
+"Any message added to <literal>facesMessages</literal> is used in the very "
+"next render response phase for the current conversation. This even works "
+"when there is no long-running conversation since Seam preserves even "
+"temporary conversation contexts across redirects."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:289
+#, no-c-format
+msgid "You can even include JSF EL expressions in a faces message summary:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:292
+#, no-c-format
+msgid "facesMessages.add(\"Document #{document.title} was updated\");"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:293
+#, no-c-format
+msgid "You may display the messages in the usual way, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:296
+#, no-c-format
+msgid "&lt;h:messages globalOnly=\"true\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:300
+#, no-c-format
+msgid "Using an \"explicit\" conversation id"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:301
+#, no-c-format
+msgid ""
+"Ordinarily, Seam generates a meaningless unique id for each conversation in "
+"each session. You can customize the id value when you begin the conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:304
+#, no-c-format
+msgid ""
+"This feature can be used to customize the conversation id generation "
+"algorithm like so:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:307
+#, no-c-format
+msgid ""
+"@Begin(id=\"#{myConversationIdGenerator.nextId}\") \n"
+"public void editHotel() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:308
+#, no-c-format
+msgid "Or it can be used to assign a meaningful conversation id:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:311
+#, no-c-format
+msgid ""
+"@Begin(id=\"hotel#{hotel.id}\") \n"
+"public String editHotel() { ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:312
+#, no-c-format
+msgid ""
+"@Begin(id=\"hotel#{hotelsDataModel.rowData.id}\") \n"
+"public String selectHotel() { ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:313
+#, no-c-format
+msgid ""
+"@Begin(id=\"entry#{params['blogId']}\")\n"
+"public String viewBlogEntry() { ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:314
+#, no-c-format
+msgid ""
+"@BeginTask(id=\"task#{taskInstance.id}\") \n"
+"public String approveDocument() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:315
+#, no-c-format
+msgid ""
+"Clearly, these example result in the same conversation id every time a "
+"particular hotel, blog or task is selected. So what happens if a "
+"conversation with the same conversation id already exists when the new "
+"conversation begins? Well, Seam detects the existing conversation and "
+"redirects to that conversation without running the <literal>@Begin</literal> "
+"method again. This feature helps control the number of workspaces that are "
+"created when using workspace management."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:321
+#, no-c-format
+msgid "Workspace management"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:322
+#, no-c-format
+msgid ""
+"Workspace management is the ability to \"switch\" conversations in a single "
+"window. Seam makes workspace management completely transparent at the level "
+"of the Java code. To enable workspace management, all you need to do is:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:327
+#, no-c-format
+msgid ""
+"Provide <emphasis>description</emphasis> text for each view id (when using "
+"JSF or Seam navigation rules) or page node (when using jPDL pageflows). This "
+"description text is displayed to the user by the workspace switchers."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:332
+#, no-c-format
+msgid ""
+"Include one or more of the standard workspace switcher JSP or facelets "
+"fragments in your pages. The standard fragments support workspace management "
+"via a drop down menu, a list of conversations, or breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:335
+#, no-c-format
+msgid ""
+"Please refer to the Seam Issue Tracker demo to see all this functionality in "
+"action!"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:339
+#, no-c-format
+msgid "Workspace management and JSF navigation"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:340
+#, no-c-format
+msgid ""
+"When you use JSF or Seam navigation rules, Seam switches to a conversation "
+"by restoring the current <literal>view-id</literal> for that conversation. "
+"The descriptive text for the workspace is defined in a file called "
+"<literal>pages.xml</literal> that Seam expects to find in the <literal>WEB-"
+"INF</literal> directory, right next to <literal>faces-config.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:343
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/main.xhtml\"&gt;Search hotels: #{hotelBooking."
+"searchString}&lt;/page&gt;\n"
+"    &lt;page view-id=\"/hotel.xhtml\"&gt;View hotel: #{hotel.name}&lt;/"
+"page&gt;\n"
+"    &lt;page view-id=\"/book.xhtml\"&gt;Book hotel: #{hotel.name}&lt;/"
+"page&gt;\n"
+"    &lt;page view-id=\"/confirm.xhtml\"&gt;Confirm: #{booking.description}"
+"&lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:344
+#, no-c-format
+msgid ""
+"Note that if this file is missing, the Seam application will continue to "
+"work perfectly! The only missing functionality will be the ability to switch "
+"workspaces."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:350
+#, no-c-format
+msgid "Workspace management and jPDL pageflow"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:351
+#, no-c-format
+msgid ""
+"When you use a jPDL pageflow definition, Seam switches to a conversation by "
+"restoring the current jBPM process state. This is a more flexible model "
+"since it allows the same <literal>view-id</literal> to have different "
+"descriptions depending upon the current <literal>&lt;page&gt;</literal> "
+"node. The description text is defined by the <literal>&lt;page&gt;</literal> "
+"node:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:354
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"shopping\"&gt;\n"
+"\n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"browse\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;page name=\"browse\" view-id=\"/browse.xhtml\"&gt;\n"
+"      &lt;description&gt;DVD Search: #{search.searchPattern}&lt;/"
+"description&gt;\n"
+"      &lt;transition to=\"browse\"/&gt;\n"
+"      &lt;transition name=\"checkout\" to=\"checkout\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"checkout\" view-id=\"/checkout.xhtml\"&gt;\n"
+"      &lt;description&gt;Purchase: &#36;#{cart.total}&lt;/description&gt;\n"
+"      &lt;transition to=\"checkout\"/&gt;\n"
+"      &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"complete\" view-id=\"/complete.xhtml\"&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:358
+#, no-c-format
+msgid "The conversation switcher"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:359
+#, no-c-format
+msgid ""
+"Include the following fragment in your JSP or facelets page to get a drop-"
+"down menu that lets you switch to any current conversation, or to any other "
+"page of the application:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:362
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{switcher.conversationIdOrOutcome}\"&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Find Issues\" itemValue=\"findIssue\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Create Issue\" itemValue=\"editIssue\"/"
+"&gt;\n"
+"    &lt;f:selectItems value=\"#{switcher.selectItems}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{switcher.select}\" value=\"Switch\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:363
+#, no-c-format
+msgid ""
+"In this example, we have a menu that includes an item for each conversation, "
+"together with two additional items that let the user begin a new "
+"conversation."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:377
+#, no-c-format
+msgid "The conversation list"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:378
+#, no-c-format
+msgid ""
+"The conversation list is very similar to the conversation switcher, except "
+"that it is displayed as a table:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:381
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{conversationList}\" var=\"entry\"\n"
+"        rendered=\"#{not empty conversationList}\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Workspace&lt;/f:facet&gt;\n"
+"        &lt;h:commandLink action=\"#{entry.select}\" value=\"#{entry."
+"description}\"/&gt;\n"
+"        &lt;h:outputText value=\"[current]\" rendered=\"#{entry.current}\"/"
+"&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Activity&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{entry.startDatetime}\"&gt;\n"
+"            &lt;f:convertDateTime type=\"time\" pattern=\"hh:mm a\"/&gt;\n"
+"        &lt;/h:outputText&gt;\n"
+"        &lt;h:outputText value=\" - \"/&gt;\n"
+"        &lt;h:outputText value=\"#{entry.lastDatetime}\"&gt;\n"
+"            &lt;f:convertDateTime type=\"time\" pattern=\"hh:mm a\"/&gt;\n"
+"        &lt;/h:outputText&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"        &lt;h:commandButton action=\"#{entry.select}\" value=\"#{msg.Switch}"
+"\"/&gt;\n"
+"        &lt;h:commandButton action=\"#{entry.destroy}\" value=\"#{msg."
+"Destroy}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:382
+#, no-c-format
+msgid ""
+"We imagine that you will want to customize this for your own application."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:393
+#, no-c-format
+msgid ""
+"The conversation list is nice, but it takes up a lot of space on the page, "
+"so you probably don't want to put it on <emphasis>every</emphasis> page."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:396
+#, no-c-format
+msgid "Notice that the conversation list lets the user destroy workspaces."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:402
+#, no-c-format
+msgid "Breadcrumbs"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:403
+#, no-c-format
+msgid ""
+"Breadcrumbs are useful in applications which use a nested conversation "
+"model. The breadcrumbs are a list of links to conversations in the current "
+"conversation stack:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:406
+#, no-c-format
+msgid ""
+"&lt;t:dataList value=\"#{conversationStack}\" var=\"entry\"&gt;\n"
+"    &lt;h:outputText value=\" | \"/&gt; \n"
+"    &lt;h:commandLink value=\"#{entry.description}\" action=\"#{entry.select}"
+"\"/&gt;\n"
+"&lt;/t:dataList&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:407
+#, no-c-format
+msgid ""
+"Notice that here we are using the MyFaces <literal>&lt;t:dataList&gt;</"
+"literal> component, since JSF amazingly does not provide any standard "
+"component for looping."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:424
+#, no-c-format
+msgid "Conversational components and JSF component bindings"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:425
+#, no-c-format
+msgid ""
+"Conversational components have one minor limitation: they cannot be used to "
+"hold bindings to JSF components. (We generally prefer not to use this "
+"feature of JSF unless absolutely necessary, since it creates a hard "
+"dependency from application logic to the view.) On a postback request, "
+"component bindings are updated during the Restore View phase, before the "
+"Seam conversation context has been restored."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:428
+#, no-c-format
+msgid ""
+"To work around this use an event scoped component to store the component "
+"bindings and inject it into the conversation scoped component that requires "
+"it."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:431
+#, no-c-format
+msgid ""
+"@Name(\"grid\")\n"
+"@Scope(ScopeType.EVENT)\n"
+"public class Grid\n"
+"{\n"
+"    private HtmlPanelGrid htmlPanelGrid;\n"
+"\n"
+"    // getters and setters\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:432
+#, no-c-format
+msgid ""
+"@Name(\"gridEditor\")\n"
+"@Scope(ScopeType.CONVERSATION)\n"
+"public class GridEditor\n"
+"{\n"
+"    @In(required=false)\n"
+"    private Grid grid;\n"
+"    \n"
+"    ...\n"
+"}"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Drools.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Drools.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Drools.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,281 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Drools.xml:10
+#, no-c-format
+msgid "Seam and JBoss Rules"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:11
+#, no-c-format
+msgid ""
+"Seam makes it easy to call JBoss Rules (Drools) rulebases from Seam "
+"components or jBPM process definitions."
+msgstr ""
+
+#. Tag: title
+#: Drools.xml:15
+#, no-c-format
+msgid "Installing rules"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:16
+#, no-c-format
+msgid ""
+"The first step is to make an instance of <literal>org.drools.RuleBase</"
+"literal> available in a Seam context variable. In most rules-driven "
+"applications, rules need to be dynamically deployable, so you will need to "
+"implement some solution that allows you to deploy rules and make them "
+"available to Seam (a future release of Drools will provide a Rule Server "
+"that solves this problem). For testing purposes, Seam provides a built-in "
+"component that compiles a static set of rules from the classpath. You can "
+"install this component via <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:19
+#, no-c-format
+msgid ""
+"&lt;drools:rule-base name=\"policyPricingRules\"&gt;\n"
+"    &lt;drools:rule-files&gt;\n"
+"        &lt;value&gt;policyPricingRules&lt;/value&gt;\n"
+"    &lt;/drools:rule-files&gt;\n"
+"&lt;/drools:rule-base&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:20
+#, no-c-format
+msgid ""
+"This component compiles rules from a set of <literal>.drl</literal> files "
+"and caches an instance of <literal>org.drools.RuleBase</literal> in the Seam "
+"<literal>APPLICATION</literal> context. Note that it is quite likely that "
+"you will need to install multiple rule bases in a rule-driven application."
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:23
+#, no-c-format
+msgid ""
+"If you want to use a Drools DSL, you alse need to specify the DSL definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:26
+#, no-c-format
+msgid ""
+"&lt;drools:rule-base name=\"policyPricingRules\" dsl-file=\"policyPricing.dsl"
+"\"&gt;\n"
+"    &lt;drools:rule-files&gt;\n"
+"        &lt;value&gt;policyPricingRules&lt;/value&gt;\n"
+"    &lt;/drools:rule-files&gt;\n"
+"&lt;/drools:rule-base&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:27
+#, no-c-format
+msgid ""
+"Next, we need to make an instance of <literal>org.drools.WorkingMemory</"
+"literal> available to each conversation. (Each <literal>WorkingMemory</"
+"literal> accumulates facts relating to the current conversation.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:30
+#, no-c-format
+msgid ""
+"&lt;drools:managed-working-memory name=\"policyPricingWorkingMemory\" auto-"
+"create=\"true\" rule-base=\"#{policyPricingRules}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:31
+#, no-c-format
+msgid ""
+"Notice that we gave the <literal>policyPricingWorkingMemory</literal> a "
+"reference back to our rule base via the <literal>ruleBase</literal> "
+"configuration property."
+msgstr ""
+
+#. Tag: title
+#: Drools.xml:37
+#, no-c-format
+msgid "Using rules from a Seam component"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:38
+#, no-c-format
+msgid ""
+"We can now inject our <literal>WorkingMemory</literal> into any Seam "
+"component, assert facts, and fire rules:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:41
+#, no-c-format
+msgid ""
+"@In WorkingMemory policyPricingWorkingMemory;\n"
+"\n"
+"@In Policy policy;\n"
+"@In Customer customer;\n"
+"\n"
+"public void pricePolicy() throws FactException\n"
+"{\n"
+"    policyPricingWorkingMemory.assertObject(policy);\n"
+"    policyPricingWorkingMemory.assertObject(customer);\n"
+"    policyPricingWorkingMemory.fireAllRules();\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Drools.xml:45
+#, no-c-format
+msgid "Using rules from a jBPM process definition"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:46
+#, no-c-format
+msgid ""
+"You can even allow a rule base to act as a jBPM action handler, decision "
+"handler, or assignment handler&mdash;in either a pageflow or business "
+"process definition."
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:49
+#, no-c-format
+msgid ""
+"&lt;decision name=\"approval\"&gt;\n"
+"         \n"
+"    &lt;handler class=\"org.jboss.seam.drools.DroolsDecisionHandler\"&gt;\n"
+"        &lt;workingMemoryName&gt;orderApprovalRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"        &lt;assertObjects&gt;\n"
+"            &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"            &lt;element&gt;#{order}&lt;/element&gt;\n"
+"            &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"        &lt;/assertObjects&gt;\n"
+"    &lt;/handler&gt;\n"
+"    \n"
+"    &lt;transition name=\"approved\" to=\"ship\"&gt;\n"
+"        &lt;action class=\"org.jboss.seam.drools.DroolsActionHandler\"&gt;\n"
+"            &lt;workingMemoryName&gt;shippingRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"            &lt;assertObjects&gt;\n"
+"                &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"            &lt;/assertObjects&gt;\n"
+"        &lt;/action&gt;\n"
+"    &lt;/transition&gt;\n"
+"    \n"
+"    &lt;transition name=\"rejected\" to=\"cancelled\"/&gt;\n"
+"    \n"
+"&lt;/decision&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:50
+#, no-c-format
+msgid ""
+"The <literal>&lt;assertObjects&gt;</literal> element specifies EL "
+"expressions that return an object or collection of objects to be asserted as "
+"facts into the <literal>WorkingMemory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:53
+#, no-c-format
+msgid "There is also support for using Drools for jBPM task assignments:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:56
+#, no-c-format
+msgid ""
+"&lt;task-node name=\"review\"&gt;\n"
+"    &lt;task name=\"review\" description=\"Review Order\"&gt;\n"
+"        &lt;assignment handler=\"org.jboss.seam.drools."
+"DroolsAssignmentHandler\"&gt;\n"
+"            &lt;workingMemoryName&gt;orderApprovalRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"            &lt;assertObjects&gt;\n"
+"                &lt;element&gt;#{actor}&lt;/element&gt;\n"
+"                &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"            &lt;/assertObjects&gt;\n"
+"        &lt;/assignment&gt;\n"
+"    &lt;/task&gt;\n"
+"    &lt;transition name=\"rejected\" to=\"cancelled\"/&gt;\n"
+"    &lt;transition name=\"approved\" to=\"approved\"/&gt;\n"
+"&lt;/task-node&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:57
+#, no-c-format
+msgid ""
+"Certain objects are available to the rules as Drools globals, namely the "
+"jBPM <literal>Assignable</literal>, as <literal>assignable</literal> and a "
+"Seam <literal>Decision</literal> object, as <literal>decision</literal>. "
+"Rules which handle decisions should call <literal>decision.setOutcome"
+"(\"result\")</literal> to determine the result of the decision. Rules which "
+"perform assignments should set the actor id using the <literal>Assignable</"
+"literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:60
+#, no-c-format
+msgid ""
+"package org.jboss.seam.examples.shop\n"
+"\n"
+"import org.jboss.seam.drools.Decision\n"
+"\n"
+"global Decision decision\n"
+"\n"
+"rule \"Approve Order For Loyal Customer\"\n"
+"  when\n"
+"    Customer( loyaltyStatus == \"GOLD\" )\n"
+"    Order( totalAmount &lt;= 10000 )\n"
+"  then\n"
+"    decision.setOutcome(\"approved\");\n"
+"end"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:61
+#, no-c-format
+msgid ""
+"package org.jboss.seam.examples.shop\n"
+"\n"
+"import org.jbpm.taskmgmt.exe.Assignable\n"
+"\n"
+"global Assignable assignable\n"
+"\n"
+"rule \"Assign Review For Small Order\"\n"
+"  when\n"
+"    Order( totalAmount &lt;= 100 )\n"
+"  then\n"
+"    assignable.setPooledActors( new String[] {\"reviewers\"} );\n"
+"end"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Elenhancements.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Elenhancements.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Elenhancements.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,221 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Elenhancements.xml:10
+#, no-c-format
+msgid "Expression language enhancements"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:11
+#, no-c-format
+msgid ""
+"The standard Unified Expression Language (EL) assumes that any parameters to "
+"a method expression will be provided by Java code. This means that a method "
+"with parameters cannot be used as a JSF method binding. Seam provides an "
+"enhancement to the EL that allows parameters to be included in a method "
+"expression itself. This applies to <emphasis>any</emphasis> Seam method "
+"expression, including any JSF method binding, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:14
+#, no-c-format
+msgid ""
+"&lt;s:commandButton action=\"#{hotelBooking.bookHotel(hotel)}\" value=\"Book "
+"Hotel\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:16
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:17
+#, no-c-format
+msgid ""
+"To use this feature in Facelets, you will need to declare a special view "
+"handler, <literal>SeamFaceletViewHandler</literal> in <literal>faces-config."
+"xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:20
+#, no-c-format
+msgid ""
+"&lt;faces-config&gt;\n"
+"    &lt;application&gt;\n"
+"        &lt;view-handler&gt;org.jboss.seam.ui.facelet."
+"SeamFaceletViewHandler&lt;/view-handler&gt;\n"
+"    &lt;/application&gt;\n"
+"&lt;/faces-config&gt;"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:24
+#, no-c-format
+msgid "Usage"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:25
+#, no-c-format
+msgid "Parameters are surrounded by parentheses, and separated by commas:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:28
+#, no-c-format
+msgid ""
+"&lt;h:commandButton action=\"#{hotelBooking.bookHotel(hotel, user)}\" value="
+"\"Book Hotel\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:29
+#, no-c-format
+msgid ""
+"The parameters <literal>hotel</literal> and <literal>user</literal> will be "
+"evaluated as value expressions and passed to the <literal>bookHotel()</"
+"literal> method of the component. This gives you an alternative to the use "
+"of <literal>@In</literal>."
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:32
+#, no-c-format
+msgid "Any value expression may be used as a parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:35
+#, no-c-format
+msgid ""
+"&lt;h:commandButton action=\"#{hotelBooking.bookHotel(hotel.id, user."
+"username)}\" value=\"Book Hotel\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:36
+#, no-c-format
+msgid "You may even pass literal strings using single or double quotes:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:39
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=&#8221;#{printer.println( &#8216;Hello world!"
+"&#8217; )}&#8221; value=&#8221;Hello&#8221;/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:40
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=&#8217;#{printer.println( &#8220;Hello "
+"again&#8221; )}&#8217; value=&#8217;Hello&#8217;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:41
+#, no-c-format
+msgid ""
+"You might even want to use this notation for all your action methods, even "
+"when you don&#8217;t have parameters to pass. This improves readability by "
+"making it clear that the expression is a method expression and not a value "
+"expression:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:44
+#, no-c-format
+msgid "&lt;s:link value=\"Cancel\" action=\"#{hotelBooking.cancel()}\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:48
+#, no-c-format
+msgid "Limitations"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:49
+#, no-c-format
+msgid "Please be aware of the following limitations:"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:53
+#, no-c-format
+msgid "Incompatibility with JSP 2.1"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:54
+#, no-c-format
+msgid ""
+"This extension is not currently compatible with JSP 2.1. So if you want to "
+"use this extension with JSF 1.2, you will need to use Facelets. The "
+"extension works correctly with JSP 2.0."
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:60
+#, no-c-format
+msgid "Calling a <literal>MethodExpression</literal> from Java code"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:61
+#, no-c-format
+msgid ""
+"Normally, when a <literal>MethodExpression</literal> or "
+"<literal>MethodBinding</literal> is created, the parameter types are passed "
+"in by JSF. In the case of a method binding, JSF assumes that there are no "
+"parameters to pass. With this extension, we can&#8217;t know the parameter "
+"types until after the expression has been evaluated. This has two minor "
+"consequences:"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:66
+#, no-c-format
+msgid ""
+"When you invoke a <literal>MethodExpression</literal> in Java code, "
+"parameters you pass may be ignored. Parameters defined in the expression "
+"will take precedence."
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:71
+#, no-c-format
+msgid ""
+"Ordinarily, it is safe to call <literal>methodExpression.getMethodInfo()."
+"getParamTypes()</literal> at any time. For an expression with parameters, "
+"you must first invoke the <literal>MethodExpression</literal> before calling "
+"<literal>getParamTypes()</literal>."
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:76
+#, no-c-format
+msgid ""
+"Both of these cases are exceedingly rare and only apply when you want to "
+"invoke the <literal>MethodExpression</literal> by hand in Java code."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Events.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Events.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Events.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1430 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Events.xml:10
+#, no-c-format
+msgid "Events, interceptors and exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:11
+#, no-c-format
+msgid ""
+"Complementing the contextual component model, there are two further basic "
+"concepts that facilitate the extreme loose-coupling that is the distinctive "
+"feature of Seam applications. The first is a strong event model where events "
+"may be mapped to event listeners via JSF-like method binding expressions. "
+"The second is the pervasive use of annotations and interceptors to apply "
+"cross-cutting concerns to components which implement business logic."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:14
+#, no-c-format
+msgid "Seam events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:15
+#, no-c-format
+msgid ""
+"The Seam component model was developed for use with <emphasis>event-driven "
+"applications</emphasis>, specifically to enable the development of fine-"
+"grained, loosely-coupled components in a fine-grained eventing model. Events "
+"in Seam come in several types, most of which we have already seen:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:20
+#, no-c-format
+msgid "JSF events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:25
+#, no-c-format
+msgid "jBPM transition events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:30
+#, no-c-format
+msgid "Seam page actions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:35
+#, no-c-format
+msgid "Seam component-driven events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:40
+#, no-c-format
+msgid "Seam contextual events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:45
+#, no-c-format
+msgid ""
+"All of these various kinds of events are mapped to Seam components via JSF "
+"EL method binding expressions. For a JSF event, this is defined in the JSF "
+"template:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:48
+#, no-c-format
+msgid ""
+"&lt;h:commandButton value=\"Click me!\" action=\"#{helloWorld.sayHello}\"/"
+"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:49
+#, no-c-format
+msgid ""
+"For a jBPM transition event, it is specified in the jBPM process definition "
+"or pageflow definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:52
+#, no-c-format
+msgid ""
+"&lt;start-page name=\"hello\" view-id=\"/hello.jsp\"&gt;\n"
+"    &lt;transition to=\"hello\"&gt;\n"
+"        &lt;action expression=\"#{helloWorld.sayHello}\"/&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/start-page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:53
+#, no-c-format
+msgid ""
+"You can find out more information about JSF events and jBPM events "
+"elsewhere. Lets concentrate for now upon the two additional kinds of events "
+"defined by Seam."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:56
+#, no-c-format
+msgid "Page actions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:57
+#, no-c-format
+msgid ""
+"A Seam page action is an event that occurs just before we render a page. We "
+"declare page actions in <literal>WEB-INF/pages.xml</literal>. We can define "
+"a page action for either a particular JSF view id:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:60
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\" action=\"#{helloWorld.sayHello}\"/&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:61
+#, no-c-format
+msgid ""
+"Or we can use a wildcard to specify an action that applies to all view ids "
+"that match the pattern:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:64
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello/*\" action=\"#{helloWorld.sayHello}\"/&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:65
+#, no-c-format
+msgid ""
+"If multiple wildcarded page actions match the current view-id, Seam will "
+"call all the actions, in order of least-specific to most-specific."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:68
+#, no-c-format
+msgid ""
+"The page action method can return a JSF outcome. If the outcome is non-null, "
+"Seam will delegate to the defined JSFadn Seam navigation rules and a "
+"different view may end up being rendered."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:71
+#, no-c-format
+msgid ""
+"Furthermore, the view id mentioned in the <literal>&lt;page&gt;</literal> "
+"element need not correspond to a real JSP or Facelets page! So, we can "
+"reproduce the functionality of a traditional action-oriented framework like "
+"Struts or WebWork using page actions. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:74
+#, no-c-format
+msgid "TODO: translate struts action into page action"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:75
+#, no-c-format
+msgid ""
+"This is quite useful if you want to do complex things in response to non-"
+"faces requests (for example, HTTP GET requests)."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:78
+#, no-c-format
+msgid "Page parameters"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:79
+#, no-c-format
+msgid ""
+"A JSF faces request (a form submission) encapsulates both an \"action\" (a "
+"method binding) and \"parameters\" (input value bindings). A page action "
+"might also needs parameters!"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:82
+#, no-c-format
+msgid ""
+"Since GET requests are bookmarkable, page parameters are passed as human-"
+"readable request parameters. (Unlike JSF form inputs, which are anything "
+"but!)"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:85
+#, no-c-format
+msgid ""
+"Seam lets us provide a value binding that maps a named request parameter to "
+"an attribute of a model object."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:88
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\" action=\"#{helloWorld.sayHello}\"&gt;\n"
+"        &lt;param name=\"firstName\" value=\"#{person.firstName}\"/&gt;\n"
+"        &lt;param name=\"lastName\" value=\"#{person.lastName}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:89
+#, no-c-format
+msgid ""
+"The <literal>&lt;param&gt;</literal> declaration is bidirectional, just like "
+"a value binding for a JSF input:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:94
+#, no-c-format
+msgid ""
+"When a non-faces (GET) request for the view id occurs, Seam sets the value "
+"of the named request parameter onto the model object, after performing "
+"appropriate type conversions."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:99
+#, no-c-format
+msgid ""
+"Any <literal>&lt;s:link&gt;</literal> or <literal>&lt;s:button&gt;</literal> "
+"transparently includes the request parameter. The value of the parameter is "
+"determined by evaluating the value binding during the render phase (when the "
+"<literal>&lt;s:link&gt;</literal> is rendered)."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:104
+#, no-c-format
+msgid ""
+"Any navigation rule with a <literal>&lt;redirect/&gt;</literal> to the view "
+"id transparently includes the request parameter. The value of the parameter "
+"is determined by evaluating the value binding at the end of the invoke "
+"application phase."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:109
+#, no-c-format
+msgid ""
+"The value is transparently propagated with any JSF form submission for the "
+"page with the given view id. (This means that view parameters behave like "
+"<literal>PAGE</literal>-scoped context variables for faces requests."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:114
+#, no-c-format
+msgid ""
+"The essential idea behind all this is that <emphasis>however</emphasis> we "
+"get from any other page to <literal>/hello.jsp</literal> (or from <literal>/"
+"hello.jsp</literal> back to <literal>/hello.jsp</literal>), the value of the "
+"model attribute referred to in the value binding is \"remembered\", without "
+"the need for a conversation (or other server-side state)."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:117
+#, no-c-format
+msgid ""
+"This all sounds pretty complex, and you're probably wondering if such an "
+"exotic construct is really worth the effort. Actually, the idea is very "
+"natural once you \"get it\". It is definitely worth taking the time to "
+"understand this stuff. Page parameters are the most elegant way to propagate "
+"state across a non-faces request. They are especially cool for problems like "
+"search screens with bookmarkable results pages, where we would like to be "
+"able to write our application code to handle both POST and GET requests with "
+"the same code. Page parameters eliminate repetitive listing of request "
+"parameters in the view definition and make redirects much easier to code."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:120
+#, no-c-format
+msgid ""
+"Note that you don't need an actual page action method binding to use a page "
+"parameter. The following is perfectly valid:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:123
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\"&gt;\n"
+"        &lt;param name=\"firstName\" value=\"#{person.firstName}\"/&gt;\n"
+"        &lt;param name=\"lastName\" value=\"#{person.lastName}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:124
+#, no-c-format
+msgid "You can even specify a JSF converter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:127
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/calculator.jsp\" action=\"#{calculator.calculate}"
+"\"&gt;\n"
+"        &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"        &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"        &lt;param name=\"op\" converterId=\"com.my.calculator."
+"OperatorConverter\" value=\"#{calculator.op}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:128
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/calculator.jsp\" action=\"#{calculator.calculate}"
+"\"&gt;\n"
+"        &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"        &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"        &lt;param name=\"op\" converter=\"#{operatorConverter}\" value=\"#"
+"{calculator.op}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:129
+#, no-c-format
+msgid "Navigation"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:130
+#, no-c-format
+msgid ""
+"You can use standard JSF navigation rules defined in <literal>faces-config."
+"xml</literal> in a Seam application. However, JSF navigation rules have a "
+"number of annoying limitations:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:135
+#, no-c-format
+msgid ""
+"It is not possible to specify request parameters to be used when redirecting."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:140
+#, no-c-format
+msgid "It is not possible to begin or end conversations from a rule."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:145
+#, no-c-format
+msgid ""
+"Rules work by evaluating the return value of the action method; it is not "
+"possible to evaluate an arbitrary EL expression."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:150
+#, no-c-format
+msgid ""
+"A further problem is that \"orchestration\" logic gets scattered between "
+"<literal>pages.xml</literal> and <literal>faces-config.xml</literal>. It's "
+"better to unify this logic into <literal>pages.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:153
+#, no-c-format
+msgid "This JSF navigation rule:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:156
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"    &lt;from-view-id&gt;/editDocument.xhtml&lt;/from-view-id&gt;\n"
+"    \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-action&gt;#{documentEditor.update}&lt;/from-action&gt;\n"
+"        &lt;from-outcome&gt;success&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/viewDocument.xhtml&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"    \n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:157
+#, no-c-format
+msgid "Can be rewritten as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:160
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if-outcome=\"success\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:161
+#, no-c-format
+msgid ""
+"But it would be even nicer if we didn't have to pollute our "
+"<literal>DocumentEditor</literal> component with string-valued return values "
+"(the JSF outcomes). So Seam lets us write:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:164
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\" \n"
+"                   evaluate=\"#{documentEditor.errors.size}\"&gt;\n"
+"        &lt;rule if-outcome=\"0\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:165
+#, no-c-format
+msgid "Or even:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:168
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:169
+#, no-c-format
+msgid ""
+"The first form evaluates a value binding to determine the outcome value to "
+"be used by the subsequent rules. The second approach ignores the outcome and "
+"evaluates a value binding for each possible rule."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:172
+#, no-c-format
+msgid ""
+"Of course, when an update succeeds, we probably want to end the current "
+"conversation. We can do that like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:175
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:176
+#, no-c-format
+msgid ""
+"But ending the conversation loses any state associated with the "
+"conversation, including the document we are currently interested in! One "
+"solution would be to use an immediate render instead of a redirect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:179
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:180
+#, no-c-format
+msgid ""
+"But the correct solution is to pass the document id as a request parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:183
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"&gt;\n"
+"                &lt;param name=\"documentId\" value=\"#{documentEditor."
+"documentId}\"/&gt;\n"
+"            &lt;/redirect&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:184
+#, no-c-format
+msgid ""
+"Null outcomes are a special case in JSF. The null outcome is interpreted to "
+"mean \"redisplay the page\". The following navigation rule matches any non-"
+"null outcome, but <emphasis>not</emphasis> the null outcome:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:187
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule&gt;\n"
+"            &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:188
+#, no-c-format
+msgid ""
+"If you want to perform navigation when a null outcome occurs, use the "
+"following form instead:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:191
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:192
+#, no-c-format
+msgid ""
+"Fine-grained files for definition of navigation, page actions and parameters"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:193
+#, no-c-format
+msgid ""
+"If you have a lot of different page actions and page parameters, or even "
+"just a lot of navigation rules, you will almost certainly want to split the "
+"declarations up over multiple files. You can define actions and parameters "
+"for a page with the view id <literal>/calc/calculator.jsp</literal> in a "
+"resource named <literal>calc/calculator.page.xml</literal>. The root element "
+"in this case is the <literal>&lt;page&gt;</literal> element, and the view id "
+"is implied:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:196
+#, no-c-format
+msgid ""
+"&lt;page action=\"#{calculator.calculate}\"&gt;\n"
+"    &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"    &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"    &lt;param name=\"op\" converter=\"#{operatorConverter}\" value=\"#"
+"{calculator.op}\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:197
+#, no-c-format
+msgid "Component-driven events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:198
+#, no-c-format
+msgid ""
+"Seam components can interact by simply calling each others methods. Stateful "
+"components may even implement the observer/observable pattern. But to enable "
+"components to interact in a more loosely-coupled fashion than is possible "
+"when the components call each others methods directly, Seam provides "
+"<emphasis>component-driven events</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:201
+#, no-c-format
+msgid ""
+"We specify event listeners (observers) in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:204
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;event type=\"hello\"&gt;\n"
+"        &lt;action expression=\"#{helloListener.sayHelloBack}\"/&gt;\n"
+"        &lt;action expression=\"#{logger.logHello}\"/&gt;\n"
+"    &lt;/event&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:205
+#, no-c-format
+msgid "Where the <emphasis>event type</emphasis> is just an arbitrary string."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:208
+#, no-c-format
+msgid ""
+"When an event occurs, the actions registered for that event will be called "
+"in the order they appear in <literal>components.xml</literal>. How does a "
+"component raise an event? Seam provides a built-in component for this."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:211
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World!\");\n"
+"        Events.instance().raiseEvent(\"hello\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:212
+#, no-c-format
+msgid "Or you can use an annotation."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:215
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    @RaiseEvent(\"hello\")\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World!\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:216
+#, no-c-format
+msgid ""
+"Notice that this event producer has no dependency upon event consumers. The "
+"event listener may now be implemented with absolutely no dependency upon the "
+"producer:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:219
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    public void sayHelloBack() {\n"
+"        FacesMessages.instance().add(\"Hello to you too!\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:220
+#, no-c-format
+msgid ""
+"The method binding defined in <literal>components.xml</literal> above takes "
+"care of mapping the event to the consumer. If you don't like futzing about "
+"in the <literal>components.xml</literal> file, you can use an annotation "
+"instead:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:223
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    @Observer(\"hello\")\n"
+"    public void sayHelloBack() {\n"
+"        FacesMessages.instance().add(\"Hello to you too!\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:224
+#, no-c-format
+msgid ""
+"You might wonder why I've not mentioned anything about event objects in this "
+"discussion. In Seam, there is no need for an event object to propagate state "
+"between event producer and listener. State is held in the Seam contexts, and "
+"is shared between components. However, if you really want to pass an event "
+"object, you can:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:227
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    private String name;\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World, my name is #0.\", "
+"name);\n"
+"        Events.instance().raiseEvent(\"hello\", name);\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:228
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    @Observer(\"hello\")\n"
+"    public void sayHelloBack(String name) {\n"
+"        FacesMessages.instance().add(\"Hello #0!\", name);\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:229
+#, no-c-format
+msgid "Contextual events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:230
+#, no-c-format
+msgid ""
+"Seam defines a number of built-in events that the application can use to "
+"perform special kinds of framework integration. The events are:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:235
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preSetVariable.&lt;name&gt;</literal> &mdash; called "
+"when the context variable &lt;name&gt; is set"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:240
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postSetVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is set"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:245
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preRemoveVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is unset"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:250
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postRemoveVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is unset"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:255
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preDestroyContext.&lt;SCOPE&gt;</literal> &mdash; "
+"called before the &lt;SCOPE&gt; context is destroyed"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:260
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postDestroyContext.&lt;SCOPE&gt;</literal> &mdash; "
+"called after the &lt;SCOPE&gt; context is destroyed"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:265
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beginConversation </literal>&mdash; called whenever "
+"a long-running conversation begins"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:270
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endConversation </literal>&mdash; called whenever a "
+"long-running conversation ends"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:275
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beginPageflow.&lt;name&gt; </literal>&mdash; called "
+"when the pageflow &lt;name&gt; begins"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:280
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endPageflow.&lt;name&gt; </literal>&mdash; called "
+"when the pageflow &lt;name&gt; ends"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:285
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.createProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; is created"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:290
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; ends"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:295
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.initProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; is associated with the conversation"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:300
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.initTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is associated with the conversation"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:305
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.startTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is started"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:310
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is ended"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:315
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postCreate.&lt;name&gt; </literal>&mdash; called "
+"when the component &lt;name&gt; is created"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:320
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preDestroy.&lt;name&gt; </literal>&mdash; called "
+"when the component &lt;name&gt; is destroyed"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:325
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beforePhase </literal>&mdash; called before the "
+"start of a JSF phase"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:330
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.afterPhase </literal>&mdash; called after the end of "
+"a JSF phase"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:335
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postAuthenticate.&lt;name&gt; </literal>&mdash; "
+"called after a user is authenticated"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:340
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preAuthenticate.&lt;name&gt; </literal>&mdash; "
+"called before attempting to authenticate a user"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:345
+#, no-c-format
+msgid ""
+"Seam components may observe any of these events in just the same way they "
+"observe any other component-driven events."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:348
+#, no-c-format
+msgid "Seam interceptors"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:349
+#, no-c-format
+msgid ""
+"EJB 3.0 introduced a standard interceptor model for session bean components. "
+"To add an interceptor to a bean, you need to write a class with a method "
+"annotated <literal>@AroundInvoke</literal> and annotate the bean with an "
+"<literal>@Interceptors</literal> annotation that specifies the name of the "
+"interceptor class. For example, the following interceptor checks that the "
+"user is logged in before allowing invoking an action listener method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:352
+#, no-c-format
+msgid ""
+"public class LoggedInInterceptor {\n"
+"\n"
+"   @AroundInvoke\n"
+"   public Object checkLoggedIn(InvocationContext invocation) throws "
+"Exception {\n"
+"   \n"
+"      boolean isLoggedIn = Contexts.getSessionContext().get(\"loggedIn\")!"
+"=null;\n"
+"      if (isLoggedIn) {\n"
+"         //the user is already logged in\n"
+"         return invocation.proceed();\n"
+"      }\n"
+"      else {\n"
+"         //the user is not logged in, fwd to login page\n"
+"         return \"login\";\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:353
+#, no-c-format
+msgid ""
+"To apply this interceptor to a session bean which acts as an action "
+"listener, we must annotate the session bean <literal>@Interceptors"
+"(LoggedInInterceptor.class)</literal>. This is a somewhat ugly annotation. "
+"Seam builds upon the interceptor framework in EJB3 by allowing you to use "
+"<literal>@Interceptors</literal> as a meta-annotation. In our example, we "
+"would create an <literal>@LoggedIn</literal> annotation, as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:356
+#, no-c-format
+msgid ""
+"@Target(TYPE)\n"
+"@Retention(RUNTIME)\n"
+"@Interceptors(LoggedInInterceptor.class)\n"
+"public @interface LoggedIn {}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:357
+#, no-c-format
+msgid ""
+"We can now simply annotate our action listener bean with <literal>@LoggedIn</"
+"literal> to apply the interceptor."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:360
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"changePasswordAction\")\n"
+"@LoggedIn\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class ChangePasswordAction implements ChangePassword { \n"
+"    \n"
+"    ...\n"
+"    \n"
+"    public String changePassword() { ... }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:361
+#, no-c-format
+msgid ""
+"If interceptor ordering is important (it usually is), you can add "
+"<literal>@Interceptor</literal> annotations to your interceptor classes to "
+"specify a partial order of interceptors."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:364
+#, no-c-format
+msgid ""
+"@Interceptor(around={BijectionInterceptor.class,\n"
+"                     ValidationInterceptor.class,\n"
+"                     ConversationInterceptor.class},\n"
+"             within=RemoveInterceptor.class)\n"
+"public class LoggedInInterceptor\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:365
+#, no-c-format
+msgid ""
+"You can even have a \"client-side\" interceptor, that runs around any of the "
+"built-in functionality of EJB3:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:368
+#, no-c-format
+msgid ""
+"@Interceptor(type=CLIENT)\n"
+"public class LoggedInInterceptor\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:369
+#, no-c-format
+msgid ""
+"EJB interceptors are stateful, with a lifecycle that is the same as the "
+"component they intercept. For interceptors which do not need to maintain "
+"state, Seam lets you get a performance optimization by specifying "
+"<literal>@Interceptor(stateless=true)</literal>."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:372
+#, no-c-format
+msgid ""
+"Much of the functionality of Seam is implemented as a set of built-in Seam "
+"interceptors, including the interceptors named in the previous example. You "
+"don't have to explicitly specify these interceptors by annotating your "
+"components; they exist for all interceptable Seam components."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:375
+#, no-c-format
+msgid ""
+"You can even use Seam interceptors with JavaBean components, not just EJB3 "
+"beans!"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:378
+#, no-c-format
+msgid ""
+"EJB defines interception not only for business methods (using "
+"<literal>@AroundInvoke</literal>), but also for the lifecycle methods "
+"<literal>@PostConstruct</literal>, <literal>@PreDestroy</literal>, "
+"<literal>@PrePassivate</literal> and <literal>@PostActive</literal>. Seam "
+"supports all these lifecycle methods on both component and interceptor not "
+"only for EJB3 beans, but also for JavaBean components (except "
+"<literal>@PreDestroy</literal> which is not meaningful for JavaBean "
+"components)."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:381
+#, no-c-format
+msgid "Managing exceptions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:382
+#, no-c-format
+msgid ""
+"JSF is surprisingly limited when it comes to exception handling. As a "
+"partial workaround for this problem, Seam lets you define how a particular "
+"class of exception is to be treated by annotating the exception class, or "
+"declaring the exception class in an XML file. This facility is meant to be "
+"combined with the EJB 3.0-standard <literal>@ApplicationException</literal> "
+"annotation which specifies whether the exception should cause a transaction "
+"rollback."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:385
+#, no-c-format
+msgid "Exceptions and transactions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:386
+#, no-c-format
+msgid ""
+"EJB specifies well-defined rules that let us control whether an exception "
+"immediately marks the current transaction for rollback when it is thrown by "
+"a business method of the bean: <emphasis>system exceptions</emphasis> always "
+"cause a transaction rollback, <emphasis>application exceptions</emphasis> do "
+"not cause a rollback by default, but they do if "
+"<literal>@ApplicationException(rollback=true)</literal> is specified. (An "
+"application exception is any checked exception, or any unchecked exception "
+"annotated <literal>@ApplicationException</literal>. A system exception is "
+"any unchecked exception without an <literal>@ApplicationException</literal> "
+"annotation.)"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:389
+#, no-c-format
+msgid ""
+"Note that there is a difference between marking a transaction for rollback, "
+"and actually rolling it back. The exception rules say that the transaction "
+"should be marked rollback only, but it may still be active after the "
+"exception is thrown."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:392
+#, no-c-format
+msgid ""
+"Seam applies the EJB 3.0 exception rollback rules also to Seam JavaBean "
+"components."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:395
+#, no-c-format
+msgid ""
+"But these rules only apply in the Seam component layer. What about an "
+"exception that is uncaught and propagates out of the Seam component layer, "
+"and out of the JSF layer? Well, it is always wrong to leave a dangling "
+"transaction open, so Seam rolls back any active transaction when an "
+"exception occurs and is uncaught in the Seam component layer."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:398
+#, no-c-format
+msgid "Enabling Seam exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:399
+#, no-c-format
+msgid ""
+"To enable Seam's exception handling, we need to make sure we have the master "
+"servlet filter declared in <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:402
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.servlet.SeamFilter&lt;/filter-"
+"class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:403
+#, no-c-format
+msgid "Using annotations for exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:404
+#, no-c-format
+msgid ""
+"The following exception results in a HTTP 404 error whenever it propagates "
+"out of the Seam component layer. It does not roll back the current "
+"transaction immediately when thrown, but the transaction will be rolled back "
+"if it the exception is not caught by another Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:407
+#, no-c-format
+msgid ""
+"@HttpError(errorCode=404)\n"
+"public class ApplicationException extends Exception { ... }"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:408
+#, no-c-format
+msgid ""
+"This exception results in a browser redirect whenever it propagates out of "
+"the Seam component layer. It also ends the current conversation. It causes "
+"an immediate rollback of the current transaction."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:411
+#, no-c-format
+msgid ""
+"@Redirect(viewId=\"/failure.xhtml\", end=true)\n"
+"@ApplicationException(rollback=true)\n"
+"public class UnrecoverableApplicationException extends RuntimeException "
+"{ ... }"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:412
+#, no-c-format
+msgid ""
+"Note that <literal>@Redirect</literal> does not work for exceptions which "
+"occur during the render phase of the JSF lifecycle."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:415
+#, no-c-format
+msgid ""
+"This exception results in a redirect, along with a message to the user, when "
+"it propagates out of the Seam component layer. It also immediately rolls "
+"back the current transaction."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:418
+#, no-c-format
+msgid ""
+"@Redirect(viewId=\"/error.xhtml\", message=\"Unexpected error\")\n"
+"public class SystemException extends RuntimeException { ... }"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:419
+#, no-c-format
+msgid "Using XML for exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:420
+#, no-c-format
+msgid ""
+"Since we can't add annotations to all the exception classes we are "
+"interested in, Seam also lets us specify this functionality in "
+"<literal>pages.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:423
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   \n"
+"   &lt;exception class=\"javax.persistence.EntityNotFoundException\"&gt;\n"
+"      &lt;http-error error-code=\"404\"/&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"   &lt;exception class=\"javax.persistence.PersistenceException\"&gt;\n"
+"      &lt;end-conversation/&gt;\n"
+"      &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"          &lt;message&gt;Database access failed&lt;/message&gt;\n"
+"      &lt;/redirect&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"   &lt;exception&gt;\n"
+"      &lt;end-conversation/&gt;\n"
+"      &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"          &lt;message&gt;Unexpected failure&lt;/message&gt;\n"
+"      &lt;/redirect&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:424
+#, no-c-format
+msgid ""
+"The last <literal>&lt;exception&gt;</literal> declaration does not specify a "
+"class, and is a catch-all for any exception for which handling is not "
+"otherwise specified via annotations or in <literal>pages.xml</literal>."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Framework.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Framework.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Framework.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,828 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Framework.xml:10
+#, no-c-format
+msgid "The Seam Application Framework"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:11
+#, no-c-format
+msgid ""
+"Seam makes it really easy to create applications by writing plain Java "
+"classes with annotations, which don't need to extend any special interfaces "
+"or superclasses. But we can simplify some common programming tasks even "
+"further, by providing a set of pre-built components which can be re-used "
+"either by configuration in <literal>components.xml</literal> (for very "
+"simple cases) or extension."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:14
+#, no-c-format
+msgid ""
+"The <emphasis>Seam Application Framework</emphasis> can reduce the amount of "
+"code you need to write when doing basic database access in a web "
+"application, using either Hibernate or JPA."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:17
+#, no-c-format
+msgid ""
+"We should emphasize that the framework is extremely simple, just a handful "
+"of simple classes that are easy to understand and extend. The \"magic\" is "
+"in Seam itself&mdash;the same magic you use when creating any Seam "
+"application even without using this framework."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:21
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:22
+#, no-c-format
+msgid ""
+"The components provided by the Seam application framework may be used in one "
+"of two different approaches. The first way is to install and configure an "
+"instance of the component in <literal>components.xml</literal>, just like we "
+"have done with other kinds of built-in Seam components. For example, the "
+"following fragment from <literal>components.xml</literal> installs a "
+"component which can perform basic CRUD operations for a <literal>Contact</"
+"literal> entity:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:25
+#, no-c-format
+msgid ""
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" \n"
+"                       entity-manager=\"#{personDatabase}\"&gt;\n"
+"    &lt;framework:id&gt;#{param.personId}&lt;/framework:id&gt;\n"
+"&lt;/framework:entity-home&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:26
+#, no-c-format
+msgid ""
+"If that looks a bit too much like \"programming in XML\" for your taste, you "
+"can use extension instead:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:29
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; implements "
+"LocalPersonHome {\n"
+"    @RequestParameter String personId;\n"
+"    @In EntityManager personDatabase;\n"
+"    \n"
+"    public Object getId() { return personId; }\n"
+"    public EntityManager getEntityManager() { return personDatabase; }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:30
+#, no-c-format
+msgid ""
+"The second approach has one huge advantage: you can easily add extra "
+"functionality, and override the built-in functionality (the framework "
+"classes were carefully designed for extension and customization)."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:33
+#, no-c-format
+msgid ""
+"A second advantage is that your classes may be EJB stateful sessin beans, if "
+"you like. (They do not have to be, they can be plain JavaBean components if "
+"you prefer.)"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:36
+#, no-c-format
+msgid ""
+"At this time, the Seam Application Framework provides just four built-in "
+"components: <literal>EntityHome</literal> and <literal>HibernateEntityHome</"
+"literal> for CRUD, along with <literal>EntityQuery</literal> and "
+"<literal>HibernateEntityQuery</literal> for queries."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:39
+#, no-c-format
+msgid ""
+"The Home and Query components are written so that they can function with a "
+"scope of session, event or conversation. Which scope you use depends upon "
+"the state model you wish to use in your application."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:42
+#, no-c-format
+msgid ""
+"The Seam Application Framework only works with Seam-managed persistence "
+"contexts. By default, the components will look for a persistence context "
+"named <literal>entityManager</literal>."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:48
+#, no-c-format
+msgid "Home objects"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:49
+#, no-c-format
+msgid ""
+"A Home object provides persistence operations for a particular entity class. "
+"Suppose we have our trusty <literal>Person</literal> class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:52
+#, no-c-format
+msgid ""
+"@Entity\n"
+"public class Person {\n"
+"    @Id private Long id;\n"
+"    private String firstName;\n"
+"    private String lastName;\n"
+"    private Country nationality;\n"
+"    \n"
+"    //getters and setters...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:53
+#, no-c-format
+msgid ""
+"We can define a <literal>personHome</literal> component either via "
+"configuration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:56
+#, no-c-format
+msgid ""
+"&lt;framework:entity-home name=\"personHome\" entity-class=\"eg.Person\" /"
+"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:57
+#, no-c-format
+msgid "Or via extension:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:60
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:61
+#, no-c-format
+msgid ""
+"A Home object provides the following operations: <literal>persist()</"
+"literal>, <literal>remove()</literal>, <literal>update()</literal> and "
+"<literal>getInstance()</literal>. Before you can call the <literal>remove()</"
+"literal>, or <literal>update()</literal> operations, you must first set the "
+"identifier of the object you are interested in, using the <literal>setId()</"
+"literal> method."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:64
+#, no-c-format
+msgid "We can use a Home directly from a JSF page, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:67
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Create Person&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{personHome.instance."
+"firstName}\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{personHome.instance."
+"lastName}\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:68
+#, no-c-format
+msgid ""
+"Usually, it is much nicer to be able to refer to the <literal>Person</"
+"literal> merely as <literal>person</literal>, so let's make that possible by "
+"adding a line to <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:71
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:72
+#, no-c-format
+msgid ""
+"(If we are using configuration.) Or by adding a <literal>@Factory</literal> "
+"method to <literal>PersonHome</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:75
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:76
+#, no-c-format
+msgid ""
+"(If we are using extension.) This change simplifies our JSF page to the "
+"following:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:79
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Create Person&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{person.firstName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{person.lastName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:80
+#, no-c-format
+msgid ""
+"Well, that lets us create new <literal>Person</literal> entries. Yes, that "
+"is all the code that is required! Now, if we want to be able to display, "
+"update and delete pre-existing <literal>Person</literal> entries in the "
+"database, we need to be able to pass the entry identifier to the "
+"<literal>PersonHome</literal>. Page parameters are a great way to do that:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:83
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page viewid=\"/editPerson.jsp\"&gt;\n"
+"        &lt;param name=\"personId\" value=\"#{personHome.id}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:84
+#, no-c-format
+msgid "Now we can add the extra operations to our JSF page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:87
+#, no-c-format
+msgid ""
+"&lt;h1&gt;\n"
+"    &lt;h:outputText rendered=\"#{!personHome.managed}\" value=\"Create "
+"Person\"/&gt;\n"
+"    &lt;h:outputText rendered=\"#{personHome.managed}\" value=\"Edit Person"
+"\"/&gt;\n"
+"&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{person.firstName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{person.lastName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\" \n"
+"            rendered=\"#{!personHome.managed}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Update Person\" action=\"#{personHome."
+"update}\" \n"
+"            rendered=\"#{personHome.managed}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Delete Person\" action=\"#{personHome."
+"remove}\" \n"
+"            rendered=\"#{personHome.managed}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:88
+#, no-c-format
+msgid ""
+"When we link to the page with no request parameters, the page will be "
+"displayed as a \"Create Person\" page. When we provide a value for the "
+"<literal>personId</literal> request parameter, it will be an \"Edit Person\" "
+"page."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:91
+#, no-c-format
+msgid ""
+"Suppose we need to create <literal>Person</literal> entries with their "
+"nationality initialized. We can do that easily, via configuration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:94
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" \n"
+"                       new-instance=\"#{newPerson}\"/&gt;\n"
+"\n"
+"&lt;component name=\"newPerson\" \n"
+"           class=\"eg.Person\"&gt;\n"
+"    &lt;property name=\"nationality\"&gt;#{country}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:95
+#, no-c-format
+msgid "Or by extension:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:98
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:99
+#, no-c-format
+msgid ""
+"Of course, the <literal>Country</literal> could be an object managed by "
+"another Home object, for example, <literal>CountryHome</literal>."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:102
+#, no-c-format
+msgid ""
+"To add more sophisticated operations (association management, etc), we can "
+"just add methods to <literal>PersonHome</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:105
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"    public void migrate()\n"
+"    {\n"
+"        getInstance().setCountry(country);\n"
+"        update();\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:106
+#, no-c-format
+msgid ""
+"The Home object automatically displays faces messages when an operation is "
+"successful. To customize these messages we can, again, use configuration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:109
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\"\n"
+"                       entity-class=\"eg.Person\"\n"
+"                       new-instance=\"#{newPerson}\"&gt;\n"
+"    &lt;framework:created-message&gt;New person #{person.firstName} #{person."
+"lastName} \n"
+"        created&lt;/framework:created-message&gt;\n"
+"    &lt;framework:deleted-message&gt;Person #{person.firstName} #{person."
+"lastName}\n"
+"        deleted&lt;/framework:deleted-message&gt;\n"
+"    &lt;framework:updated-message&gt;Person #{person.firstName} #{person."
+"lastName} \n"
+"        updated&lt;/framework:updated-message&gt;\n"
+"&lt;/framework:entity-home&gt;\n"
+"\n"
+"&lt;component name=\"newPerson\" \n"
+"           class=\"eg.Person\"&gt;\n"
+"    &lt;property name=\"nationality\"&gt;#{country}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:110
+#, no-c-format
+msgid "Or extension:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:113
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"    protected String getCreatedMessage() { return \"New person #{person."
+"firstName} \n"
+"        #{person.lastName} created\"; }\n"
+"    protected String getUpdatedMessage() { return \"Person #{person."
+"firstName} \n"
+"        #{person.lastName} updated\"; }\n"
+"    protected String getDeletedMessage() { return \"Person #{person."
+"firstName} \n"
+"        #{person.lastName} deleted\"; }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:114
+#, no-c-format
+msgid ""
+"But the best way to specify the messages is to put them in a resource bundle "
+"known to Seam (the bundle named <literal>messages</literal>, by default)."
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:117
+#, no-c-format
+msgid ""
+"Person_created=New person #{person.firstName} #{person.lastName} created\n"
+"Person_deleted=Person #{person.firstName} #{person.lastName} deleted\n"
+"Person_updated=Person #{person.firstName} #{person.lastName} updated"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:118
+#, no-c-format
+msgid ""
+"This enables internationalization, and keeps your code and configuration "
+"clean of presentation concerns."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:121
+#, no-c-format
+msgid ""
+"The final step is to add validation functionality to the page, using "
+"<literal>&lt;s:validateAll&gt;</literal> and <literal>&lt;s:decorate&gt;</"
+"literal>, but I'll leave that for you to figure out."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:127
+#, no-c-format
+msgid "Query objects"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:128
+#, no-c-format
+msgid ""
+"If we need a list of all <literal>Person</literal> instance in the database, "
+"we can use a Query object. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:131
+#, no-c-format
+msgid ""
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:132
+#, no-c-format
+msgid "We can use it from a JSF page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:135
+#, no-c-format
+msgid ""
+"&lt;h1&gt;List of people&lt;/h1&gt;\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view-id=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:136
+#, no-c-format
+msgid "We probably need to support pagination:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:139
+#, no-c-format
+msgid ""
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\" \n"
+"                        order=\"lastName\" \n"
+"                        max-results=\"20\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:140
+#, no-c-format
+msgid "We'll use a page parameter to determine the page to display:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:143
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page viewid=\"/searchPerson.jsp\"&gt;\n"
+"        &lt;param name=\"firstResult\" value=\"#{people.firstResult}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:144
+#, no-c-format
+msgid "The JSF code for a pagination control is a bit verbose, but manageable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:147
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Search for people&lt;/h1&gt;\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view-id=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.previousExists}\" "
+"value=\"First Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"0\"/&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.previousExists}\" "
+"value=\"Previous Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.previousFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.nextExists}\" value="
+"\"Next Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.nextFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.nextExists}\" value="
+"\"Last Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.lastFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:148
+#, no-c-format
+msgid ""
+"Real search screens let the user enter a bunch of optional search criteria "
+"to narrow the list of results returned. The Query object lets you specify "
+"optional \"restrictions\" to support this important usecase:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:151
+#, no-c-format
+msgid ""
+"&lt;component name=\"examplePerson\" class=\"Person\"/&gt;\n"
+"        \n"
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\" \n"
+"                        order=\"lastName\" \n"
+"                        max-results=\"20\"&gt;\n"
+"    &lt;framework:restrictions&gt;\n"
+"        &lt;value&gt;lower(firstName) like lower( #{examplePerson.firstName} "
+"+ '&#37;' )&lt;/value&gt;\n"
+"        &lt;value&gt;lower(lastName) like lower( #{examplePerson.lastName} + "
+"'&#37;' )&lt;/value&gt;\n"
+"    &lt;/framework:restrictions&gt;\n"
+"&lt;/framework:entity-query&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:152
+#, no-c-format
+msgid "Notice the use of an \"example\" object."
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:155
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Search for people&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{examplePerson.firstName}"
+"\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{examplePerson.lastName}"
+"\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;&lt;h:commandButton value=\"Search\" action=\"/search.jsp\"/"
+"&gt;&lt;/div&gt;\n"
+"&lt;/h:form&gt;\n"
+"\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view-id=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:156
+#, no-c-format
+msgid ""
+"The examples in this section have all shown reuse by configuration. However, "
+"reuse by extension is equally possible for Query objects."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:162
+#, no-c-format
+msgid "Controller objects"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:163
+#, no-c-format
+msgid ""
+"A totally optional part of the Seam Application Framework is the class "
+"<literal>Controller</literal> and its subclasses <literal>EntityController</"
+"literal><literal>HibernateEntityController</literal> and "
+"<literal>BusinessProcessController</literal>. These classes provide nothing "
+"more than some convenience methods for access to commonly used built-in "
+"components and methods of built-in components. They help save a few "
+"keystrokes (characters can add up!) and provide a great launchpad for new "
+"users to explore the rich functionality built in to Seam."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:166
+#, no-c-format
+msgid ""
+"For example, here is what <literal>RegisterAction</literal> from the Seam "
+"registration example would look like:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:169
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"register\")\n"
+"public class RegisterAction extends EntityController implements Register\n"
+"{\n"
+"\n"
+"   @In private User user;\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = createQuery(\"select u.username from User u where u."
+"username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getResultList();\n"
+"      \n"
+"      if ( existing.size()==0 )\n"
+"      {\n"
+"         persist(user);\n"
+"         info(\"Registered new user #{user.username}\");\n"
+"         return \"/registered.jspx\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         addFacesMessage(\"User #{user.username} already exists\");\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:170
+#, no-c-format
+msgid "As you can see, its not an earthshattering improvement..."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Gettingstarted.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Gettingstarted.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Gettingstarted.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,588 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Gettingstarted.xml:10
+#, no-c-format
+msgid "Getting started with Seam, using seam-gen"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:11
+#, no-c-format
+msgid ""
+"The Seam distribution includes a command line utility that makes it really "
+"easy to set up an Eclipse project, generate some simple Seam skeleton code, "
+"and reverse engineer an application from a pre-existing database."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:14
+#, no-c-format
+msgid ""
+"This is the easy way to get your feet wet with Seam, and gives you some "
+"ammunition for next time you find yourself trapped in an elevator with one "
+"of those tedious Ruby guys ranting about how great and wonderful his new toy "
+"is for building totally trivial applications that put things in databases."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:17
+#, no-c-format
+msgid ""
+"In this release, seam-gen works best for people with JBoss AS. You can use "
+"the generated project with other J2EE or Java EE 5 application servers by "
+"making a few manual changes to the project configuration."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:20
+#, no-c-format
+msgid ""
+"You <emphasis>can</emphasis> use seam-gen without Eclipse, but in this "
+"tutorial, we want to show you how to use it in conjunction with Eclipse for "
+"debugging and integration testing. If you don't want to install Eclipse, you "
+"can still follow along with this tutorial&mdash;all steps can be peformed "
+"from the command line."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:23
+#, no-c-format
+msgid ""
+"Seam-gen is basically just a big ugly Ant script wrapped around Hibernate "
+"Tools, together with some templates. Which means it is easy to customize if "
+"you need to."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:27
+#, no-c-format
+msgid "Before you start"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:28
+#, no-c-format
+msgid ""
+"Make sure you have JDK 5 or JDK 6, JBoss AS 4.0.5 and Ant 1.6, along with "
+"recent versions of Eclipse, the JBoss IDE plugin for Eclipse and the TestNG "
+"plugin for Eclipse correctly installed before starting. Add your JBoss "
+"installation to the JBoss Server View in Eclipse. Start JBoss in debug mode. "
+"Finally, start a command prompt in the directory where you unzipped the Seam "
+"distribution."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:34
+#, no-c-format
+msgid "Setting up a new Eclipse project"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:35
+#, no-c-format
+msgid ""
+"The first thing we need to do is configure seam-gen for your environment: "
+"JBoss AS installation directory, Eclipse workspace, and database connection. "
+"It's easy, just type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:38
+#, no-c-format
+msgid ""
+"cd jboss-seam-1.1.x\n"
+"seam setup"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:39
+#, no-c-format
+msgid "And you will be prompted for the needed information:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:42
+#, no-c-format
+msgid ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam setup\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"setup:\n"
+"    [echo] Welcome to seam-gen :-)\n"
+"    [input] Enter your Java project workspace [C:/Projects]\n"
+"\n"
+"    [input] Enter your JBoss home directory [C:/Program Files/jboss-4.0.5."
+"GA]\n"
+"\n"
+"    [input] Enter the project name [myproject]\n"
+"helloworld\n"
+"    [input] Is this project deployed as an EAR (with EJB components) or a "
+"WAR \n"
+"        (with no EJB support) [ear] (ear,war,)\n"
+"\n"
+"    [input] Enter the Java package name for your session beans [com.mydomain."
+"helloworld]\n"
+"org.jboss.helloworld\n"
+"    [input] Enter the Java package name for your entity beans [org.jboss."
+"helloworld]\n"
+"\n"
+"    [input] Enter the Java package name for your test cases [org.jboss."
+"helloworld.test]\n"
+"\n"
+"    [input] What kind of database are you using? [hsql]\n"
+"    (hsql,mysql,oracle,postgres,mssql,db2,sybase,)\n"
+"mysql\n"
+"    [input] Enter the Hibernate dialect for your database [org.hibernate."
+"dialect.MySQLDialect]\n"
+"\n"
+"    [input] Enter the filesystem path to the JDBC driver jar [lib/hsqldb."
+"jar]\n"
+"../../mysql-connector.jar\n"
+"    [input] Enter JDBC driver class for your database [com.mysql.jdbc."
+"Driver]\n"
+"\n"
+"    [input] Enter the JDBC URL for your database [jdbc:mysql:///test]\n"
+"\n"
+"    [input] Enter database username [sa]\n"
+"gavin\n"
+"    [input] Enter database password []\n"
+"\n"
+"    [input] Are you working with tables that already exist in the database? "
+"[n] (y,n,)\n"
+"y\n"
+"    [input] Do you want to drop and recreate the database tables and data in "
+"import.sql \n"
+"    each time you deploy? [n] (y,n,)\n"
+"n\n"
+"[propertyfile] Creating new property file: C:&#92;Projects&#92;jboss-"
+"seam&#92;seam-gen&#92;build.properties\n"
+"     [echo] Installing JDBC driver jar to JBoss server\n"
+"     [echo] Type 'seam new-project' to create the new project\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 1 minute 17 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:43
+#, no-c-format
+msgid ""
+"The tool provides sensible defaults, which you can accept by just pressing "
+"enter at the prompt."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:46
+#, no-c-format
+msgid ""
+"The most important choice you need to make is between EAR deployment and WAR "
+"deployment of your project. EAR projects support EJB 3.0 and require Java EE "
+"5. WAR projects do not support EJB 3.0, but may be deployed to a J2EE "
+"environment. The packaging of a WAR is also simpler to understand. If you "
+"installed JBoss with the ejb3 profile, choose <literal>ear</literal>. "
+"Otherwise, choose <literal>war</literal>. We'll assume that you've chosen an "
+"EAR deployment for the rest of the tutorial, but you can follow exactly the "
+"same steps for a WAR deployment."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:49
+#, no-c-format
+msgid ""
+"If you are working with an existing data model, make sure you tell seam-gen "
+"that the tables already exist in the database."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:52
+#, no-c-format
+msgid ""
+"The settings are stored in <literal>seam-gen/build.properties</literal>, but "
+"you can also modify them simply by running <literal>seam setup</literal> a "
+"second time."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:55
+#, no-c-format
+msgid ""
+"Now we can create a new project in our Eclipse workspace directory, by "
+"typing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:58
+#, no-c-format
+msgid "seam new-project"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:59
+#, no-c-format
+msgid ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam new-project\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"copy-lib:\n"
+"     [echo] Copying project jars ...\n"
+"     [copy] Copying 32 files to C:&#92;Projects&#92;helloworld&#92;lib\n"
+"     [copy] Copying 9 files to C:&#92;Projects&#92;helloworld&#92;embedded-"
+"ejb\n"
+"\n"
+"file-copy-wtp:\n"
+"\n"
+"file-copy:\n"
+"     [echo] Copying project resources ...\n"
+"     [copy] Copying 12 files to C:&#92;Projects&#92;helloworld&#92;"
+"resources\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;helloworld&#92;resources\n"
+"     [copy] Copying 5 files to C:&#92;Projects&#92;helloworld&#92;view\n"
+"     [copy] Copying 5 files to C:&#92;Projects&#92;helloworld\n"
+"    [mkdir] Created dir: C:&#92;Projects&#92;helloworld&#92;src\n"
+"\n"
+"new-project:\n"
+"     [echo] A new Seam project was created in the C:/Projects directory\n"
+"     [echo] Add the project from inside Eclipse (or type 'seam explode') and "
+"go to http://localhost:\n"
+"8080/helloworld\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 7 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:60
+#, no-c-format
+msgid ""
+"This copies the Seam jars, dependent jars and the JDBC driver jar to a new "
+"Eclipse project, and generates all needed resources and configuration files, "
+"a facelets template file and stylesheet, along with Eclipse metadata and an "
+"Ant build script. The Eclipse project will be automatically deployed to an "
+"exploded directory structure in JBoss AS as soon as you add the project "
+"using <literal>New -&gt; Project... -&gt; Java Project -&gt; Next</literal>, "
+"typing the <literal>Project name</literal> (<literal>myproject</literal> in "
+"this case), selecting your Java SE 5 or Java SE 6 JRE and then clicking "
+"<literal>Finish</literal>. Do not select <literal>Create new project from "
+"existing source</literal>. Alternatively, you can deploy the project from "
+"outside Eclipse by typing <literal>seam explode</literal>."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:63
+#, no-c-format
+msgid ""
+"Go to <literal>http://localhost:8080/helloworld</literal> to see a welcome "
+"page. This is a facelets page, <literal>view/home.xhtml</literal>, using the "
+"template <literal>view/layout/template.xhtml</literal>. You can edit this "
+"page, or the template, in eclipse, and see the results "
+"<emphasis>immediately</emphasis>, by clicking refresh in your browser."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:66
+#, no-c-format
+msgid ""
+"Don't get scared by the XML configuration documents that were generated into "
+"the project directory. They are mostly standard Java EE stuff, the stuff you "
+"need to create once and then never look at again, and they are 90&#37; the "
+"same between all Seam projects. (They are so easy to write that even seam-"
+"gen can do it.)"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:69
+#, no-c-format
+msgid ""
+"The generated project includes three database and persistence "
+"configurations. The <literal>jboss-beans.xml</literal>, <literal>persistence-"
+"test.xml</literal> and <literal>import-test.sql</literal> files are used "
+"when running the TestNG unit tests against HSQLDB. The database schema and "
+"the test data in <literal>import-test.sql</literal> is always exported to "
+"the database before running tests. The <literal>myproject-dev-ds.xml</"
+"literal>, <literal>persistence-dev.xml</literal>and <literal>import-dev.sql</"
+"literal> files are for use when deploying the application to your "
+"development database. The schema might be exported automatically at "
+"deployment, depending upon whether you told seam-gen that you are working "
+"with an existing database. The <literal>myproject-prod-ds.xml</literal>, "
+"<literal>persistence-prod.xml</literal>and <literal>import-prod.sql</"
+"literal> files are for use when deploying the application to your production "
+"database. The schema is not exported automatically at deployment."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:75
+#, no-c-format
+msgid "Creating a new action"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:76
+#, no-c-format
+msgid ""
+"If you're used to traditional action-style web frameworks, you're probably "
+"wondering how you can create a simple webpage with a stateless action method "
+"in Java. If you type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:79
+#, no-c-format
+msgid "seam new-action"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:80
+#, no-c-format
+msgid ""
+"Seam will prompt for some information, and generate a new facelets page and "
+"Seam component for your project."
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:83
+#, no-c-format
+msgid ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam new-action ping\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"action-input:\n"
+"    [input] Enter the Seam component name\n"
+"ping\n"
+"    [input] Enter the local interface name [Ping]\n"
+"\n"
+"    [input] Enter the bean class name [PingBean]\n"
+"\n"
+"    [input] Enter the action method name [ping]\n"
+"\n"
+"    [input] Enter the page name [ping]\n"
+"\n"
+"\n"
+"setup-filters:\n"
+"\n"
+"new-action:\n"
+"     [echo] Creating a new stateless session bean component with an action "
+"method\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;view\n"
+"     [echo] Type 'seam restart' and go to \n"
+"     http://localhost:8080/helloworld/ping.seam\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 13 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:84
+#, no-c-format
+msgid ""
+"Because we've added a new Seam component, we need to restart the exploded "
+"directory deployment. You can do this by typing <literal>seam restart</"
+"literal>, or by running the <literal>restart</literal> target in the "
+"generated project <literal>build.xml</literal> file from inside Eclipse. "
+"Another way to force a restart is to edit the file <literal>resources/META-"
+"INF/application.xml</literal> in Eclipse. <emphasis>Note that you do not "
+"need to restart JBoss each time you change the application.</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:87
+#, no-c-format
+msgid ""
+"Now go to <literal>http://localhost:8080/helloworld/ping.seam</literal> and "
+"click the button. You can see the code behind this action by looking in the "
+"project <literal>src</literal> directory. Put a breakpoint in the "
+"<literal>ping()</literal> method, and click the button again."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:90
+#, no-c-format
+msgid ""
+"Finally, locate the <literal>PingTest.xml</literal> file in the test package "
+"and run the integration tests using the TestNG plugin for Eclipse. "
+"Alternatively, run the tests using <literal>seam test</literal> or the "
+"<literal>test</literal> target of the generated build."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:96
+#, no-c-format
+msgid "Creating a form with an action"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:97
+#, no-c-format
+msgid "The next step is to create a form. Type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:100
+#, no-c-format
+msgid "seam new-form"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:101
+#, no-c-format
+msgid ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam new-form\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"action-input:\n"
+"    [input] Enter the Seam component name\n"
+"hello\n"
+"    [input] Enter the local interface name [Hello]\n"
+"\n"
+"    [input] Enter the bean class name [HelloBean]\n"
+"\n"
+"    [input] Enter the action method name [hello]\n"
+"\n"
+"    [input] Enter the page name [hello]\n"
+"\n"
+"\n"
+"setup-filters:\n"
+"\n"
+"new-form:\n"
+"     [echo] Creating a new stateful session bean component with an action "
+"method\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;view\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [echo] Type 'seam restart' and go to http://localhost:8080/hello/hello."
+"seam\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 5 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:102
+#, no-c-format
+msgid ""
+"Restart the application again, and go to <literal>http://localhost:8080/"
+"helloworld/hello.seam</literal>. Then take a look at the generated code. Run "
+"the test. Try adding some new fields to the form and Seam component "
+"(remember to restart the deploment each time you change the Java code)."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:108
+#, no-c-format
+msgid "Generating an application from an existing database"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:109
+#, no-c-format
+msgid ""
+"Manually create some tables in your database. (If you need to switch to a "
+"different database, just run <literal>seam setup</literal> again.) Now type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:112
+#, no-c-format
+msgid "seam generate-entities"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:113
+#, no-c-format
+msgid ""
+"Restart the deployment, and go to <literal>http://localhost:8080/helloworld</"
+"literal>. You can browse the database, edit existing objects, and create new "
+"objects. If you look at the generated code, you'll probably be amazed how "
+"simple it is! Seam was designed so that data access code is easy to write by "
+"hand, even for people who don't want to cheat by using seam-gen."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:119
+#, no-c-format
+msgid "Deploying the application as an EAR"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:120
+#, no-c-format
+msgid ""
+"Finally, we want to be able to deploy the application using standard Java EE "
+"5 packaging. First, we need to remove the exploded directory by running "
+"<literal>seam unexplode</literal>. To deploy the EAR, we can type "
+"<literal>seam deploy</literal> at the command prompt, or run the "
+"<literal>deploy</literal> target of the generated project build script. You "
+"can undeploy using <literal>seam undeploy</literal> or the "
+"<literal>undeploy</literal> target."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:123
+#, no-c-format
+msgid ""
+"By default, the application will be deployed with the <emphasis>dev profile</"
+"emphasis>. The EAR will include the <literal>persistence-dev.xml</literal> "
+"and <literal>import-dev.sql</literal> files, and the <literal>myproject-dev-"
+"ds.xml</literal> file will be deployed. You can change the profile, and use "
+"the <emphasis>prod profile</emphasis>, by typing"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:126
+#, no-c-format
+msgid "seam -Dprofile=prod deploy"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:127
+#, no-c-format
+msgid ""
+"You can even define new deployment profiles for your application. Just add "
+"appropriately named files to your project&mdash;for example, "
+"<literal>persistence-staging.xml</literal>, <literal>import-staging.sql</"
+"literal> and <literal>myproject-staging-ds.xml</literal>&mdash;and select "
+"the name of the profile using <literal>-Dprofile=staging</literal>."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/I18n.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/I18n.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/I18n.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,533 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: I18n.xml:10
+#, no-c-format
+msgid "Internationalization and themes"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:11
+#, no-c-format
+msgid ""
+"Seam makes it easy to build internationalized applications by providing "
+"several built-in components for handling multi-language UI messages."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:15
+#, no-c-format
+msgid "Locales"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:16
+#, no-c-format
+msgid ""
+"Each user login session has an associated instance of <literal>java.util."
+"Locale</literal> (available to the application as a session-scoped component "
+"named <literal>locale</literal>). Under normal circumstances, you won't need "
+"to do any special configuration to set the locale. Seam just delegates to "
+"JSF to determine the active locale:"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:21
+#, no-c-format
+msgid ""
+"If there is a locale associated with the HTTP request (the browser locale), "
+"and that locale is in the list of supported locales from <literal>faces-"
+"config.xml</literal>, use that locale for the rest of the session."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:24
+#, no-c-format
+msgid ""
+"Otherwise, if a default locale was specified in the <literal>faces-config."
+"xml</literal>, use that locale for the rest of the session."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:27
+#, no-c-format
+msgid "Otherwise, use the default locale of the server."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:30
+#, no-c-format
+msgid ""
+"It is <emphasis>possible</emphasis> to set the locale manually via the Seam "
+"configuration properties <literal>org.jboss.seam.core.localeSelector."
+"language</literal>, <literal>org.jboss.seam.core.localeSelector.country</"
+"literal> and <literal>org.jboss.seam.core.localeSelector.variant</literal>, "
+"but we can't think of any good reason to ever do this."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:33
+#, no-c-format
+msgid ""
+"It is, however, useful to allow the user to set the locale manually via the "
+"application user interface. Seam provides built-in functionality for "
+"overriding the locale determined by the algorithm above. All you have to do "
+"is add the following fragment to a form in your JSP or Facelets page:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:36
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{localeSelector.language}\"&gt;\n"
+"    &lt;f:selectItem itemLabel=\"English\" itemValue=\"en\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Deutsch\" itemValue=\"de\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Francais\" itemValue=\"fr\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{localeSelector.select}\" value=\"#{messages"
+"['ChangeLanguage']}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:37
+#, no-c-format
+msgid ""
+"Or, if you want a list of all supported locales from <literal>faces-config."
+"xml</literal>, just use:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:40
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{localeSelector.localeString}\"&gt;\n"
+"    &lt;f:selectItems value=\"#{localeSelector.supportedLocales}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{localeSelector.select}\" value=\"#{messages"
+"['ChangeLanguage']}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:41
+#, no-c-format
+msgid ""
+"When this use selects an item from the drop-down, and clicks the button, the "
+"Seam and JSF locales will be overridden for the rest of the session."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:47
+#, no-c-format
+msgid "Labels"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:48
+#, no-c-format
+msgid ""
+"JSF supports internationalization of user interface labels and descriptive "
+"text via the use of <literal>&lt;f:loadBundle /&gt;</literal>. You can use "
+"this approach in Seam applications. Alternatively, you can take advantage of "
+"the Seam <literal>messages</literal> component to display templated labels "
+"with embedded EL expressions."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:52
+#, no-c-format
+msgid "Defining labels"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:53
+#, no-c-format
+msgid ""
+"Each login session has an associated instance of <literal>java.util."
+"ResourceBundle</literal> (available to the application as a session-scoped "
+"component named <literal>org.jboss.seam.core.resourceBundle</literal>). "
+"You'll need to make your internationalized labels available via this special "
+"resource bundle. By default, the resource bundle used by Seam is named "
+"<literal>messages</literal> and so you'll need to define your labels in "
+"files named <literal>messages.properties</literal>, <literal>messages_en."
+"properties</literal>, <literal>messages_en_AU.properties</literal>, etc. "
+"These files usually belong in the <literal>WEB-INF/classes</literal> "
+"directory."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:56
+#, no-c-format
+msgid "So, in <literal>messages_en.properties</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:59
+#, no-c-format
+msgid "Hello=Hello"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:60
+#, no-c-format
+msgid "And in <literal>messages_en_AU.properties</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:63
+#, no-c-format
+msgid "Hello=G'day"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:64
+#, no-c-format
+msgid ""
+"You can select a different name for the resource bundle by setting the Seam "
+"configuration property named <literal>org.jboss.seam.core.resourceBundle."
+"bundleNames</literal>. You can even specify a list of resource bundle names "
+"to be searched (depth first) for messages."
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:67
+#, no-c-format
+msgid ""
+"&lt;core:resource-bundle&gt;\n"
+"    &lt;core:bundle-names&gt;\n"
+"        &lt;value&gt;mycompany_messages&lt;/value&gt;\n"
+"        &lt;value&gt;standard_messages&lt;/value&gt;       \n"
+"    &lt;/core:bundle-names&gt;\n"
+"&lt;/core:resource-bundle&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:68
+#, no-c-format
+msgid ""
+"If you want to define a message just for a particular page, you can specify "
+"it in a resource bundle with the same name as the JSF view id, with the "
+"leading <literal>/</literal> and trailing file extension removed. So we "
+"could put our message in <literal>welcome/hello_en.properties</literal> if "
+"we only needed to display the message on <literal>/welcome/hello.jsp</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:71
+#, no-c-format
+msgid ""
+"You can even specify an explicit bundle name in <literal>pages.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:74
+#, no-c-format
+msgid "&lt;page view-id=\"/welcome/hello.jsp\" bundle=\"HelloMessages\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:75
+#, no-c-format
+msgid ""
+"Then we could use messages defined in <literal>HelloMessages.properties</"
+"literal> on <literal>/welcome/hello.jsp</literal>."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:81
+#, no-c-format
+msgid "Displaying labels"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:82
+#, no-c-format
+msgid ""
+"If you define your labels using the Seam resource bundle, you'll be able to "
+"use them without having to type <literal>&lt;f:loadBundle ... /&gt;</"
+"literal> on every page. Instead, you can simply type:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:85
+#, no-c-format
+msgid "&lt;h:outputText value=\"#{messages['Hello']}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:86
+#, no-c-format
+msgid "<para>or:</para>"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:89
+#, no-c-format
+msgid "&lt;h:outputText value=\"#{messages.Hello}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:90
+#, no-c-format
+msgid "Even better, the messages themselves may contain EL expressions:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:93
+#, no-c-format
+msgid "Hello=Hello, #{user.firstName} #{user.lastName}"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:94
+#, no-c-format
+msgid "Hello=G'day, #{user.firstName}"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:95
+#, no-c-format
+msgid "You can even use the messages in your code:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:98
+#, no-c-format
+msgid "@In private Map&lt;String, String&gt; messages;"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:99
+#, no-c-format
+msgid "@In(\"#{messages['Hello']}\") private String helloMessage;"
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:103
+#, no-c-format
+msgid "Faces messages"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:104
+#, no-c-format
+msgid ""
+"The <literal>facesMessages</literal> component is a super-convenient way to "
+"display success or failure messages to the user. The functionality we just "
+"described also works for faces messages:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:107
+#, no-c-format
+msgid ""
+"@Name(\"hello\")\n"
+"@Stateless\n"
+"public class HelloBean implements Hello {\n"
+"    @In FacesMessages facesMessages;\n"
+"    \n"
+"    public String sayIt() {\n"
+"        facesMessages.addFromResourceBundle(\"Hello\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:108
+#, no-c-format
+msgid ""
+"This will display <literal>Hello, Gavin King</literal> or <literal>G'day, "
+"Gavin</literal>, depending upon the user's locale."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:116
+#, no-c-format
+msgid "Timezones"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:117
+#, no-c-format
+msgid ""
+"There is also a session-scoped instance of <literal>java.util.Timezone</"
+"literal>, named <literal>org.jboss.seam.core.timezone</literal>, and a Seam "
+"component for changing the timezone named <literal>org.jboss.seam.core."
+"timezoneSelector</literal>. By default, the timezone is the default timezone "
+"of the server. Unfortunately, the JSF specification says that all dates and "
+"times should be assumed to be UTC, and displayed as UTC, unless a timezone "
+"is explicitly specified using <literal>&lt;f:convertDateTime&gt;</literal>. "
+"This is an extremely inconvenient default behavior."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:120
+#, no-c-format
+msgid ""
+"Seam overrides this behavior, and defaults all dates and times to the Seam "
+"timezone. In addition, Seam provides the <literal>&lt;s:convertDateTime&gt;</"
+"literal> tag which always performs conversions in the Seam timezone."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:126
+#, no-c-format
+msgid "Themes"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:127
+#, no-c-format
+msgid ""
+"Seam applications are also very easily skinnable. The theme API is very "
+"similar to the localization API, but of course these two concerns are "
+"orthogonal, and some applications support both localization and themes."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:130
+#, no-c-format
+msgid "First, configure the set of supported themes:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:133
+#, no-c-format
+msgid ""
+"&lt;theme:theme-selector cookie-enabled=\"true\"&gt;\n"
+"    &lt;theme:available-themes&gt;\n"
+"        &lt;value&gt;default&lt;/value&gt;\n"
+"        &lt;value&gt;accessible&lt;/value&gt;\n"
+"        &lt;value&gt;printable&lt;/value&gt;\n"
+"    &lt;/theme:available-themes&gt;\n"
+"&lt;/theme:theme-selector&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:134
+#, no-c-format
+msgid "Note that the first theme listed is the default theme."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:137
+#, no-c-format
+msgid ""
+"Themes are defined in a properties file with the same name as the theme. For "
+"example, the <literal>default</literal> theme is defined as a set of entries "
+"in <literal>default.properties</literal>. For example, <literal>default."
+"properties</literal> might define:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:140
+#, no-c-format
+msgid ""
+"css ../screen.css\n"
+"template template.xhtml"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:141
+#, no-c-format
+msgid ""
+"Usually the entries in a theme resource bundle will be paths to CSS styles "
+"or images and names of facelets templates (unlike localization resource "
+"bundles which are usually text)."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:144
+#, no-c-format
+msgid ""
+"Now we can use these entries in our JSP or facelets pages. For example, to "
+"theme the stylesheet in a facelets page:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:147
+#, no-c-format
+msgid ""
+"&lt;link href=\"#{theme.css}\" rel=\"stylesheet\" type=\"text/css\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:148
+#, no-c-format
+msgid ""
+"Most powerfully, facelets lets us theme the template used by a <literal>&lt;"
+"ui:composition&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:151
+#, no-c-format
+msgid ""
+"&lt;ui:composition xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"    xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"    xmlns:h=\"http://java.sun.com/jsf/html\"\n"
+"    xmlns:f=\"http://java.sun.com/jsf/core\"\n"
+"    template=\"#{theme.template}\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:152
+#, no-c-format
+msgid ""
+"Just like the locale selector, there is a built-in theme selector to allow "
+"the user to freely switch themes:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:155
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{themeSelector.theme}\"&gt;\n"
+"    &lt;f:selectItems value=\"#{themeSelector.themes}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{themeSelector.select}\" value=\"Select Theme"
+"\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:159
+#, no-c-format
+msgid "Persisting locale and theme preferences via cookies"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:160
+#, no-c-format
+msgid ""
+"The locale selector, theme selector and timezone selector all support "
+"persistence of locale and theme preference to a cookie. Simply set the "
+"<literal>cookie-enabled</literal> configuration property:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:163
+#, no-c-format
+msgid ""
+"&lt;theme:theme-selector cookie-enabled=\"true\"&gt;\n"
+"    &lt;theme:available-themes&gt;\n"
+"        &lt;value&gt;default&lt;/value&gt;\n"
+"        &lt;value&gt;accessible&lt;/value&gt;\n"
+"        &lt;value&gt;printable&lt;/value&gt;\n"
+"    &lt;/theme:available-themes&gt;\n"
+"&lt;/theme:theme-selector&gt;\n"
+"\n"
+"&lt;core:locale-selector cookie-enabled=\"true\"/&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Itext.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Itext.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Itext.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1452 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Itext.xml:10
+#, no-c-format
+msgid "iText PDF generation"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:11
+#, no-c-format
+msgid ""
+"Seam now includes an component set for generating documents using iText. The "
+"primary focus of Seam's iText document support is for the generation of PDF "
+"doucuments, but Seam also offers basic support for RTF document generation."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:15
+#, no-c-format
+msgid "Using PDF Support"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:16
+#, no-c-format
+msgid ""
+"iText support is provided by <literal>jboss-seam-pdf.jar</literal>. This JAR "
+"contains the iText JSF controls, which are used to construct views that can "
+"render to PDF, and the DocumentStore component, which serves the rendered "
+"documents to the user. To include PDF support in your application, included "
+"<literal>jboss-seam-pdf.jar</literal> in your <literal>WEB-INF/lib</literal> "
+"directory along with the iText JAR file. There is no further configuration "
+"needed to use Seam's iText support."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:19
+#, no-c-format
+msgid ""
+"The Seam iText module requires the use of Facelets as the view technology. "
+"Future versions of the library may also support the use of JSP. "
+"Additionally, it requires the use of the seam-ui package."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:22
+#, no-c-format
+msgid ""
+"The <literal>examples/itext</literal> project contains an example of the PDF "
+"support in action. It demonstrates proper deployment packaging, and it "
+"contains a number examples that demonstrate the key PDF generation features "
+"current supported."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:28
+#, no-c-format
+msgid "Creating a document"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:29
+#, no-c-format
+msgid ""
+"Documents are generated by facelets documents using tags in the "
+"<literal>http://jboss.com/products/seam/pdf</literal> namespace. Documents "
+"should always have the <literal>document</literal> tag at the root of the "
+"document. The <literal>document</literal> tag prepares Seam to generate a "
+"document into the DocumentStore and renders an HTML redirect to that stored "
+"content. The following is a a small PDF document consisting only a single "
+"line of text:"
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:32
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf"
+"\"&gt;                                                      \n"
+"   The document goes "
+"here.                                                                                             \n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:34
+#, no-c-format
+msgid "p:document"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:35
+#, no-c-format
+msgid ""
+"The <literal>p:document</literal> tag supports the following attributes:"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:40
+#, no-c-format
+msgid "type"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:42
+#, no-c-format
+msgid ""
+"The type of the document to be produced. Valid values are <literal>PDF</"
+"literal>, <literal>RTF</literal> and <literal>HTML</literal> modes. Seam "
+"defaults to PDF generation, and many of the features only work correctly "
+"when generating PDF documents."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:48
+#, no-c-format
+msgid "pageSize"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:50
+#, no-c-format
+msgid ""
+"The size of the page to be generate. The most commonly used values would be "
+"<literal>LETTER</literal> and <literal>A4</literal>. A full list of "
+"supported pages sizes can be found in <literal>com.lowagie.text.PageSize</"
+"literal> class. Alternatively, pageSize can provide the width and height of "
+"the page directly. The value \"612 792\", for example, is equizalent to the "
+"LETTER page size."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:56
+#, no-c-format
+msgid "orientation"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:58
+#, no-c-format
+msgid ""
+"The orientation of the page. Valid values are <literal>portrait</literal> "
+"and <literal>landscape</literal>. In landscape mode, the height and width "
+"page size values are reversed."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:64
+#, no-c-format
+msgid "margins"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:66
+#, no-c-format
+msgid "The left, right, top and bottom margin values."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:72
+#, no-c-format
+msgid "marginMirroring"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:74
+#, no-c-format
+msgid "Indicates that margin settings should be reversed an alternating pages."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:80
+#, no-c-format
+msgid ""
+"Document metadata is also set as attributes of the document tag. The "
+"following metadata fields are supported:"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:85
+#, no-c-format
+msgid "title"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:92
+#, no-c-format
+msgid "subject"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:99
+#, no-c-format
+msgid "keywords"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:106
+#, no-c-format
+msgid "author"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:113
+#, no-c-format
+msgid "creator"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:125
+#, no-c-format
+msgid "Basic Text Elements"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:126
+#, no-c-format
+msgid ""
+"Useful documents will need to contain more than just text; however, the "
+"standard UI components are geared towards HTML generation and are not useful "
+"for generating PDF content. Instead, Seam provides a special UI components "
+"for generating suitable PDF content. Tags like <literal>&lt;p:image&gt;</"
+"literal> and <literal>&lt;p:paragraph&gt;</literal> are the basic "
+"foundations of simple documents. Tags like <literal>&lt;p:font&gt;</literal> "
+"provide style information to all the content surrounging them."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:129
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"&gt; \n"
+"    &lt;p:image alignment=\"right\" wrap=\"true\" resource=\"/logo.jpg\" /"
+"&gt;\n"
+"    &lt;p:font size=\"24\"&gt;\n"
+"        &lt;p:paragraph spacingAfter=\"50\"&gt;My First Document&lt;/p:"
+"paragraph&gt;\n"
+"    &lt;/p:font&gt;\n"
+"\n"
+"    &lt;p:paragraph alignment=\"justify\"&gt;\n"
+"        This is a simple document.  It isn't very fancy.\n"
+"    &lt;/p:paragraph&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:131
+#, no-c-format
+msgid "p:paragraph"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:132
+#, no-c-format
+msgid ""
+"Most uses of text should be sectioned into paragraphs so that text fragments "
+"can be flowed, formatted and styled in logical groups."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:137
+#, no-c-format
+msgid "firstLineIndent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:144 Itext.xml:836
+#, no-c-format
+msgid "extraParagraphSpace"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:151 Itext.xml:808
+#, no-c-format
+msgid "leading"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:158 Itext.xml:815
+#, no-c-format
+msgid "multipliedLeading"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:165 Itext.xml:344 Itext.xml:716
+#, no-c-format
+msgid "spacingBefore"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:167 Itext.xml:346 Itext.xml:718
+#, no-c-format
+msgid "The blank space to be inserted before the element."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:173 Itext.xml:352 Itext.xml:724
+#, no-c-format
+msgid "spacingAfter"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:175 Itext.xml:354 Itext.xml:726
+#, no-c-format
+msgid "The blank space to be inserted after the element."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:181 Itext.xml:330 Itext.xml:599
+#, no-c-format
+msgid "indentationLeft"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:188 Itext.xml:337 Itext.xml:607
+#, no-c-format
+msgid "indentationRight"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:195 Itext.xml:753
+#, no-c-format
+msgid "keepTogether"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:205
+#, no-c-format
+msgid "p:text"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:206
+#, no-c-format
+msgid ""
+"The <literal>text</literal> tag allows text fragments to be produced from "
+"application data using normal JSF converter mechanisms. It is very similar "
+"to the <literal>outputText</literal> tag used when rendering HTML documents. "
+"Here is an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:209
+#, no-c-format
+msgid ""
+"&lt;p:paragraph&gt;\n"
+"    The item costs &lt;p:text value=\"#{product.price}\"&gt;\n"
+"        &lt;f:convertNumber type=\"currency\" currencySymbol=\"&#36;\"/&gt;\n"
+"    &lt;/p:text&gt;\n"
+"&lt;/p:paragraph&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:212
+#, no-c-format
+msgid "value"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:214
+#, no-c-format
+msgid ""
+"The value to be displayed. This will typically be a value binding expression."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:223
+#, no-c-format
+msgid "p:font"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:224
+#, no-c-format
+msgid "Font declarations have no direct"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:229
+#, no-c-format
+msgid "familyName"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:231
+#, no-c-format
+msgid ""
+"The font family. One of: <literal>COURIER</literal>, <literal>HELVETICA</"
+"literal>, <literal>TIMES-ROMAN</literal>, <literal>SYMBOL</literal> or "
+"<literal>ZAPFDINGBATS</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:237
+#, no-c-format
+msgid "size"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:239
+#, no-c-format
+msgid "The point size of the font."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:245 Itext.xml:534
+#, no-c-format
+msgid "style"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:247
+#, no-c-format
+msgid ""
+"The font styles. Any combination of : <literal>NORMAL</literal>, "
+"<literal>BOLD</literal>, <literal>ITALIC</literal>, <literal>OBLIQUE</"
+"literal>, <literal>UNDERLINE</literal>, <literal>LINE-THROUGH</literal>"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:256
+#, no-c-format
+msgid "p:newPage"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:257
+#, no-c-format
+msgid "<literal>p:newPage</literal> inserts a page break."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:263
+#, no-c-format
+msgid "p:image"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:264
+#, no-c-format
+msgid ""
+"<literal>p:image</literal> inserts an image into the document. Images can be "
+"be loaded from the classpath or from the web application context using the "
+"<literal>resource</literal> attribute."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:267
+#, no-c-format
+msgid "&lt;p:image resource=\"/jboss.jpg\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:268
+#, no-c-format
+msgid ""
+"Resources can also be dynamically generated by application code. The "
+"<literal>imageData</literal> attribute can specify a value binding "
+"expression whose value is a <literal>java.awt.Image</literal> object."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:271
+#, no-c-format
+msgid "&lt;p:image imageData=\"#{images.chart}\" /&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:274
+#, no-c-format
+msgid "resource"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:276
+#, no-c-format
+msgid ""
+"The location of the image resource to be included. Resources should be "
+"relative to the document root of the web application."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:282
+#, no-c-format
+msgid "imageData"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:284
+#, no-c-format
+msgid "A method expression binding to an application-generated image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:290 Itext.xml:913
+#, no-c-format
+msgid "rotation"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:292
+#, no-c-format
+msgid "The rotation of the image in degrees."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:298
+#, no-c-format
+msgid "height"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:300
+#, no-c-format
+msgid "The height of the image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:306
+#, no-c-format
+msgid "width"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:308
+#, no-c-format
+msgid "The width of the image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:314 Itext.xml:441 Itext.xml:591
+#, no-c-format
+msgid "alignment"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:316
+#, no-c-format
+msgid ""
+"The alignment of the image. (see <xref linkend=\"Document_Constants-"
+"Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:322
+#, no-c-format
+msgid "<literal>alt</literal>"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:324
+#, no-c-format
+msgid "Alternative text representation for the image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:360 Itext.xml:672
+#, no-c-format
+msgid "widthPercentage"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:367
+#, no-c-format
+msgid "initialRotation"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:374
+#, no-c-format
+msgid "<literal>dpi</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:381
+#, no-c-format
+msgid "scalePercent"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:383
+#, no-c-format
+msgid ""
+"The scaling factor (as a percentage) to use for the image. This can be "
+"expressed as a single percentage value or as two percentage values "
+"representing separate x and y scaling percentages."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:389
+#, no-c-format
+msgid "wrap"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:396
+#, no-c-format
+msgid "underlying"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:406
+#, no-c-format
+msgid "p:anchor"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:407
+#, no-c-format
+msgid ""
+"<literal>p:anchor</literal> defines clickable links from a document. It "
+"supports the following attributes:"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:412
+#, no-c-format
+msgid "name"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:414
+#, no-c-format
+msgid "The name of an in-document anchor destination."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:420
+#, no-c-format
+msgid "reference"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:422
+#, no-c-format
+msgid ""
+"The destination the link refers to. Links to other points in the document "
+"should begin with a \"#\". For example, \"#link1\" to refer to an anchor "
+"postion with a <literal>name</literal> of <literal>link1</literal>. Links "
+"may also be a full URL to point to a resource outside of the document."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:433
+#, no-c-format
+msgid "Headers and Footers"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:435
+#, no-c-format
+msgid "p:header and p:footer"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:436
+#, no-c-format
+msgid ""
+"The <literal>p:header</literal> and <literal>p:footer</literal> components "
+"provide the ability to place header and footer text on each page of a "
+"generated document, with the exception of the first page. Header and footer "
+"declarations should appear near the top of a document."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:443
+#, no-c-format
+msgid ""
+"The alignment of the header/footer box section. (see <xref linkend="
+"\"Document_Constants-Alignment_Values\"/> for alignment values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:449
+#, no-c-format
+msgid "backgroundColor"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:451
+#, no-c-format
+msgid ""
+"The background color of the header/footer box. (see <xref linkend="
+"\"Document_Constants-Color_Values\"/> for color values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:457
+#, no-c-format
+msgid "borderColor"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:459
+#, no-c-format
+msgid ""
+"The border color of the header/footer box. Individual border sides can be "
+"set using <literal>borderColorLeft</literal>, <literal>borderColorRight</"
+"literal>, <literal>borderColorTop</literal> and <literal>borderColorBottom</"
+"literal>.(see <xref linkend=\"Document_Constants-Color_Values\"/> for color "
+"values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:465
+#, no-c-format
+msgid "borderWidth"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:467
+#, no-c-format
+msgid ""
+"The width of the border. Inidvidual border sides can be specified using "
+"<literal>borderWidthLeft</literal>, <literal>borderWidthRight</literal>, "
+"<literal>borderWidthTop</literal> and <literal>borderWidthBottom</literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:476
+#, no-c-format
+msgid "p:pageNumber"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:477
+#, no-c-format
+msgid ""
+"The current page number can be placed inside of a header or footer using the "
+"<literal>p:pageNumber</literal> tag. The page number tag can only be used in "
+"the context of a header or footer and can only be used once."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:485
+#, no-c-format
+msgid "Chapters and Sections"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:486
+#, no-c-format
+msgid ""
+"If the generated document follows a book/article structure, the <literal>p:"
+"chapter</literal> and <literal>p:section</literal> tags can be used to "
+"provide the necessary structure. Sections can only be used inside of "
+"chapters, but they may be nested arbitrarily deep. Most PDF viewers provide "
+"easy navigation between chapters and sections in a document."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:489
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"\n"
+"            title=\"Hello\"&gt;\n"
+"\n"
+"   &lt;p:chapter number=\"1\"&gt;\n"
+"      &lt;p:title&gt;&lt;p:paragraph&gt;Hello&lt;/p:paragraph&gt;&lt;/p:"
+"title&gt;\n"
+"      &lt;p:paragraph&gt;Hello #{user.name}!&lt;/p:paragraph&gt;\n"
+"   &lt;/p:chapter&gt;\n"
+"\n"
+"   &lt;p:chapter number=\"2\"&gt;\n"
+"      &lt;p:title&gt;&lt;p:paragraph&gt;Goodbye&lt;/p:paragraph&gt;&lt;/p:"
+"title&gt;\n"
+"      &lt;p:paragraph&gt;Goodbye #{user.name}.&lt;/p:paragraph&gt;\n"
+"   &lt;/p:chapter&gt;\n"
+"\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:491
+#, no-c-format
+msgid "p:chapter and p:section"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:494
+#, no-c-format
+msgid "number"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:496
+#, no-c-format
+msgid "The chapter number. Every chapter should be assigned a chapter number."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:502
+#, no-c-format
+msgid "numberDepth"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:504
+#, no-c-format
+msgid ""
+"The depth of numbering for section. All sections are numbered relative to "
+"their surrounding chapter/sections. The fourth section of of the first "
+"section of chapter three would be section 3.1.4, if displayed at the default "
+"number depth of three. To omit the chapter number, a number depth of 2 "
+"should be used. In that case, the section number would be displayed as 1.4."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:513
+#, no-c-format
+msgid "p:title"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:514
+#, no-c-format
+msgid ""
+"Any chapter or section can contain a <literal>p:title</literal>. The title "
+"will be displayed next to the chapter/section number. The body of the title "
+"may contain raw text or may be a <literal>p:paragraph</literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:522
+#, no-c-format
+msgid "Lists"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:523
+#, no-c-format
+msgid ""
+"List structures can be displayed using the <literal>p:list</literal> and "
+"<literal>p:listItem</literal> tags. Lists may contain arbitrarily-nested "
+"sublists. List items may not be used outside of a list. he following "
+"document uses the <literal>ui:repeat</literal> tag to to display a list of "
+"values retrieved from a Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:526
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"\n"
+"            xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"            title=\"Hello\"&gt;\n"
+"   &lt;p:list style=\"numbered\"&gt;\n"
+"      &lt;ui:repeat value=\"#{documents}\" var=\"doc\"&gt;\n"
+"         &lt;p:listItem&gt;#{doc.name}&lt;/p:listItem&gt;\n"
+"      &lt;/ui:repeat&gt;\n"
+"   &lt;/p:list&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:528
+#, no-c-format
+msgid "p:list"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:529
+#, no-c-format
+msgid "<literal>p:list</literal> supports the following attributes:"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:536
+#, no-c-format
+msgid ""
+"The ordering/bulleting style of list. One of: <literal>NUMBERED</literal>, "
+"<literal>LETTERED</literal>, <literal>GREEK</literal>, <literal>ROMAN</"
+"literal>, <literal>ZAPFDINGBATS</literal>, <literal>ZAPFDINGBATS_NUMBER</"
+"literal>. If no style is given, the list items are bulleted."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:542 Itext.xml:615
+#, no-c-format
+msgid "listSymbol"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:544
+#, no-c-format
+msgid "For bulleted lists, specifies the bullet symbol."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:550 Itext.xml:822
+#, no-c-format
+msgid "indent"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:552
+#, no-c-format
+msgid "The indentation level of the list."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:558
+#, no-c-format
+msgid "lowerCase"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:560
+#, no-c-format
+msgid ""
+"For list styles using letters, indicates whether the letters should be lower "
+"case."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:566
+#, no-c-format
+msgid "charNumber"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:568
+#, no-c-format
+msgid "For ZAPFDINGBATS, indicates the character code of the bullet character."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:574
+#, no-c-format
+msgid "numberType"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:576
+#, no-c-format
+msgid "For ZAPFDINGBATS_NUMBER, indicates the numbering style."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:585
+#, no-c-format
+msgid "p:listItem"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:586
+#, no-c-format
+msgid "<literal>p:listItem</literal> supports the following attributes:"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:593
+#, no-c-format
+msgid ""
+"The alignment of the list item. (See <xref linkend=\"Document_Constants-"
+"Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:601
+#, no-c-format
+msgid "The left indentation amount."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:609
+#, no-c-format
+msgid "The right indentation amount."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:617
+#, no-c-format
+msgid "Overrides the default list symbol for this list item."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:628
+#, no-c-format
+msgid "Tables"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:629
+#, no-c-format
+msgid ""
+"Table structures can be created using the <literal>p:table</literal> and "
+"<literal>p:cell</literal> tags. Unlike many table structures, there is no "
+"explicit row declaration. If a table has 3 columns, then every 3 cells will "
+"automatically form a row. Header and footer rows can be declared, and the "
+"headers and footers will be repeated in the event a table structure spans "
+"multiple pages."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:632
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"   \n"
+"            xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"            title=\"Hello\"&gt;   \n"
+"   &lt;p:table columns=\"3\" headerRows=\"1\"&gt;\n"
+"      &lt;p:cell&gt;name&lt;/p:cell&gt;\n"
+"      &lt;p:cell&gt;owner&lt;/p:cell&gt;\n"
+"      &lt;p:cell&gt;size&lt;/p:cell&gt;\n"
+"      &lt;ui:repeat value=\"#{documents}\" var=\"doc\"&gt;\n"
+"         &lt;p:cell&gt;#{doc.name}&lt;/p:cell&gt;\n"
+"         &lt;p:cell&gt;#{doc.user.name}&lt;/p:cell&gt;\n"
+"         &lt;p:cell&gt;#{doc.size}&lt;/p:cell&gt;\n"
+"      &lt;/ui:repeat&gt;\n"
+"   &lt;/p:table&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:634
+#, no-c-format
+msgid "p:table"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:635
+#, no-c-format
+msgid "<literal>p:table</literal> supports the following attributes."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:640
+#, no-c-format
+msgid "columns"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:642
+#, no-c-format
+msgid "The number of columns (cells) that make up a table row."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:648
+#, no-c-format
+msgid "widths"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:650
+#, no-c-format
+msgid ""
+"The relative widths of each column. There should be one value for each "
+"column. For example: widths=\"2 1 1\" would indicate that there are 3 "
+"columns and the first column should be twice the size of the second and "
+"third column."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:656
+#, no-c-format
+msgid "headerRows"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:658
+#, no-c-format
+msgid ""
+"The initial number of rows which are considered to be headers or footer rows "
+"and should be repeated if the table spans multiple pages."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:664
+#, no-c-format
+msgid "footerRows"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:666
+#, no-c-format
+msgid ""
+"The number of rows that are considered to be footer rows. This value is "
+"subtracted from the <literal>headerRows</literal> value. If document has 2 "
+"rows which make up the header and one row that makes up the footer, "
+"<literal>headerRows</literal> should be set to 3 and <literal>footerRows</"
+"literal> should be set to 1"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:674
+#, no-c-format
+msgid "The percentage of the page width that the table spans."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:680 Itext.xml:777
+#, no-c-format
+msgid "horizontalAlignment"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:682
+#, no-c-format
+msgid ""
+"The horizontal alignment of the table. (See <xref linkend="
+"\"Document_Constants-Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:688
+#, no-c-format
+msgid "skipFirstHeader"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:695 Itext.xml:885
+#, no-c-format
+msgid "runDirection"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:702
+#, no-c-format
+msgid "lockedWidth"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:709
+#, no-c-format
+msgid "splitRows"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:732
+#, no-c-format
+msgid "extendLastRow"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:739
+#, no-c-format
+msgid "headersInEvent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:746
+#, no-c-format
+msgid "splitLate"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:763
+#, no-c-format
+msgid "p:cell"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:764
+#, no-c-format
+msgid "<literal>p:cell</literal> supports the following attributes."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:769
+#, no-c-format
+msgid "colspan"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:771
+#, no-c-format
+msgid ""
+"Cells can span more than one column by declaring a <literal>colspan</"
+"literal> greater than 1. Tables do not have the ability to span across "
+"multiple rows."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:779
+#, no-c-format
+msgid ""
+"The horizontal alignment of the cell. (see <xref linkend="
+"\"Document_Constants-Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:785 Itext.xml:829
+#, no-c-format
+msgid "verticalAlignment"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:787
+#, no-c-format
+msgid ""
+"The vertical alignment of the cell. (see <xref linkend=\"Document_Constants-"
+"Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:793
+#, no-c-format
+msgid "padding"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:795
+#, no-c-format
+msgid ""
+"Padding on a given side can also be specified using <literal>paddingLeft</"
+"literal>, <literal>paddingRight</literal>, <literal>paddingTop</literal> and "
+"<literal>paddingBottom</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:801
+#, no-c-format
+msgid "useBorderPadding"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:843
+#, no-c-format
+msgid "fixedHeight"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:850
+#, no-c-format
+msgid "noWrap"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:857
+#, no-c-format
+msgid "minimumHeight"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:864
+#, no-c-format
+msgid "followingIndent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:871
+#, no-c-format
+msgid "rightIndent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:878
+#, no-c-format
+msgid "spaceCharRatio"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:892
+#, no-c-format
+msgid "arabicOptions"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:899
+#, no-c-format
+msgid "useAscender"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:906
+#, no-c-format
+msgid "grayFill"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:925
+#, no-c-format
+msgid "Document Constants"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:926
+#, no-c-format
+msgid ""
+"This section documents some of the constants shared by attributes on "
+"multiple tags."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:930
+#, no-c-format
+msgid "Color Values"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:931
+#, no-c-format
+msgid ""
+"Seam documents do not yet support a full color specification. Currently, "
+"only named colors are supported. They are: <literal>white</literal>, "
+"<literal>gray</literal>, <literal>lightgray</literal>, <literal>darkgray</"
+"literal>, <literal>black</literal>, <literal>red</literal>, <literal>pink</"
+"literal>, <literal>yellow</literal>, <literal>green</literal>, "
+"<literal>magenta</literal>, <literal>cyan</literal> and <literal>blue</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:937
+#, no-c-format
+msgid "Alignment Values"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:938
+#, no-c-format
+msgid ""
+"Where alignment values are used, the Seam PDF supports the following "
+"horizontal alignment values: <literal>left</literal>, <literal>right</"
+"literal>, <literal>center</literal>, <literal>justify</literal> and "
+"<literal>justifyall</literal>. The vertical alignment values are "
+"<literal>top</literal>, <literal>middle</literal>, <literal>bottom</"
+"literal>, and <literal>baseline</literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:946
+#, no-c-format
+msgid "Configuring iText"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:947
+#, no-c-format
+msgid ""
+"Document generation works out of the box with no additional configuration "
+"needed. However, there are a few points of configuration that are needed for "
+"more serious applications."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:950
+#, no-c-format
+msgid ""
+"The default implementation serves PDF documents from a generic URL, "
+"<literal>/seam-doc.seam</literal>. Many browsers (and users) would prefer to "
+"see URLs that contain the actual PDF name like <literal>/myDocument.pdf</"
+"literal>. This capability requires some configuration. To serve PDF files, "
+"all *.pdf resources should be mapped to the Seam Servlet Filter and to the "
+"DocumentStoreServlet:"
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:953
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.servlet.SeamServletFilter&lt;/filter-"
+"class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;\n"
+"\n"
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.pdf.DocumentStoreServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"\n"
+"&lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:954
+#, no-c-format
+msgid ""
+"The <literal>useExtensions</literal> option on the document store component "
+"completes the functionality by instructing the document store to generate "
+"URLs with the correct filename extension for the document type being "
+"generated."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:957
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pdf=\"http://jboss.com/products/seam/pdf\"&gt;\n"
+"    &lt;pdf:documentStore useExtensions=\"true\" /&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:958
+#, no-c-format
+msgid ""
+"Generated documents are stored in conversation scope and will expire when "
+"the conversation ends. At that point, references to the document will be "
+"invalid. To You can specify a default view to be shown when a document does "
+"not exist using the <literal>errorPage</literal> property of the "
+"documentStore."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:961
+#, no-c-format
+msgid ""
+"&lt;pdf:documentStore useExtensions=\"true\" errorPage=\"/pdfMissing.seam\" /"
+"&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:965
+#, no-c-format
+msgid "iText links"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:966
+#, no-c-format
+msgid "For further information on iText, see:"
+msgstr ""
+
+#. Tag: ulink
+#: Itext.xml:973
+#, no-c-format
+msgid "iText Home Page"
+msgstr ""
+
+#. Tag: ulink
+#: Itext.xml:978
+#, no-c-format
+msgid "iText in Action"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Jbpm.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Jbpm.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Jbpm.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1189 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Jbpm.xml:10
+#, no-c-format
+msgid "Pageflows and business processes"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:11
+#, no-c-format
+msgid ""
+"JBoss jBPM is a business process management engine for any Java SE or EE "
+"environment. jBPM lets you represent a business process or user interaction "
+"as a graph of nodes representing wait states, decisions, tasks, web pages, "
+"etc. The graph is defined using a simple, very readable, XML dialect called "
+"jPDL, and may be edited and visualised graphically using an eclipse plugin. "
+"jPDL is an extensible language, and is suitable for a range of problems, "
+"from defining web application page flow, to traditional workflow management, "
+"all the way up to orchestration of services in a SOA environment."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:14
+#, no-c-format
+msgid "Seam applications use jBPM for two different problems:"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:20
+#, no-c-format
+msgid ""
+"Defining the pageflow involved in complex user interactions. A jPDL process "
+"definition defines the page flow for a single conversation. A Seam "
+"conversation is considered to be a relatively short-running interaction with "
+"a single user."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:25
+#, no-c-format
+msgid ""
+"Defining the overarching business process. The business process may span "
+"multiple conversations with multiple users. Its state is persistent in the "
+"jBPM database, so it is considered long-running. Coordination of the "
+"activities of multiple users is a much more complex problem than scripting "
+"an interaction with a single user, so jBPM offers sophisticated facilities "
+"for task management and dealing with multiple concurrent paths of execution."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:31
+#, no-c-format
+msgid ""
+"Don't get these two things confused ! They operate at very different levels "
+"or granularity. <emphasis>Pageflow</emphasis>, <emphasis>conversation</"
+"emphasis> and <emphasis>task</emphasis> all refer to a single interaction "
+"with a single user. A business process spans many tasks. Futhermore, the two "
+"applications of jBPM are totally orthogonal. You can use them together or "
+"independently or not at all."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:34
+#, no-c-format
+msgid ""
+"You don't have to know jDPL to use Seam. If you're perfectly happy defining "
+"pageflow using JSF or Seam navigation rules, and if your application is more "
+"data-driven that process-driven, you probably don't need jBPM. But we're "
+"finding that thinking of user interaction in terms of a well-defined "
+"graphical representation is helping us build more robust applications."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:37
+#, no-c-format
+msgid ""
+"Please refer to the jBPM documentation for a more thorough overview of the "
+"sophisticated features that jBPM provides for managing complex business "
+"processes."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:41
+#, no-c-format
+msgid "Pageflow in Seam"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:42
+#, no-c-format
+msgid "There are two ways to define pageflow in Seam:"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:47
+#, no-c-format
+msgid ""
+"Using JSF or Seam navigation rules - the <emphasis>stateless navigation "
+"model</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:52
+#, no-c-format
+msgid "Using jPDL - the <emphasis>stateful navigation model</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:57
+#, no-c-format
+msgid ""
+"Very simple applications will only need the stateless navigation model. Very "
+"complex applications will use both models in different places. Each model "
+"has its strengths and weaknesses!"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:60
+#, no-c-format
+msgid ""
+"In practice, both navigation models have their place, and you'll quickly "
+"learn to recognize when to prefer one model over the other."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:64
+#, no-c-format
+msgid "The two navigation models"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:65
+#, no-c-format
+msgid ""
+"The stateless model defines a mapping from a set of named, logical outcomes "
+"of an event directly to the resulting page of the view. The navigation rules "
+"are entirely oblivious to any state held by the application other than what "
+"page was the source of the event. This means that your action listener "
+"methods must sometimes make decisions about the page flow, since only they "
+"have access to the current state of the application."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:68
+#, no-c-format
+msgid "Here is an example page flow definition using JSF navigation rules:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:71
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"    &lt;from-view-id&gt;/numberGuess.jsp&lt;/from-view-id&gt;\n"
+"        \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;guess&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/numberGuess.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;win&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/win.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"        \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;lose&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/lose.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:72
+#, no-c-format
+msgid ""
+"Here is the same example page flow definition using Seam navigation rules:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:75
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/numberGuess.jsp\"&gt;\n"
+"        \n"
+"    &lt;navigation&gt;\n"
+"        &lt;rule if-outcome=\"guess\"&gt;\n"
+"            &lt;redirect view-id=\"/numberGuess.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"        &lt;rule if-outcome=\"win\"&gt;\n"
+"            &lt;redirect view-id=\"/win.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"        &lt;rule if-outcome=\"lose\"&gt;\n"
+"            &lt;redirect view-id=\"/lose.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:76
+#, no-c-format
+msgid ""
+"If you find navigation rules overly verbose, you can return view ids "
+"directly from your action listener methods:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:79
+#, no-c-format
+msgid ""
+"public String guess() {\n"
+"    if (guess==randomNumber) return \"/win.jsp\";\n"
+"    if (++guessCount==maxGuesses) return \"/lose.jsp\";\n"
+"    return null;\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:80
+#, no-c-format
+msgid ""
+"Note that this results in a redirect. You can even specify parameters to be "
+"used in the redirect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:83
+#, no-c-format
+msgid ""
+"public String search() {\n"
+"    return \"/searchResults.jsp?searchPattern=#{searchAction.searchPattern}"
+"\";\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:84
+#, no-c-format
+msgid ""
+"The stateful model defines a set of transitions between a set of named, "
+"logical application states. In this model, it is possible to express the "
+"flow of any user interaction entirely in the jPDL pageflow definition, and "
+"write action listener methods that are completely unaware of the flow of the "
+"interaction."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:87
+#, no-c-format
+msgid "Here is an example page flow definition using jPDL:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:90
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"numberGuess\"&gt;\n"
+"    \n"
+"   &lt;start-page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"      &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"      &lt;/transition&gt;\n"
+"   &lt;/start-page&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess."
+"correctGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateRemainingGuesses\" expression=\"#{numberGuess."
+"lastGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"lose\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"displayGuess\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"lose\" view-id=\"/lose.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:99
+#, no-c-format
+msgid "There are two things we notice immediately here:"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:104
+#, no-c-format
+msgid ""
+"The JSF/Seam navigation rules are <emphasis>much</emphasis> simpler. "
+"(However, this obscures the fact that the underlying Java code is more "
+"complex.)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:109
+#, no-c-format
+msgid ""
+"The jPDL makes the user interaction immediately understandable, without us "
+"needing to even look at the JSP or Java code."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:114
+#, no-c-format
+msgid ""
+"In addition, the stateful model is more <emphasis>constrained</emphasis>. "
+"For each logical state (each step in the page flow), there are a constrained "
+"set of possible transitions to other states. The stateless model is an "
+"<emphasis>ad hoc</emphasis> model which is suitable to relatively "
+"unconstrained, freeform navigation where the user decides where he/she wants "
+"to go next, not the application."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:117
+#, no-c-format
+msgid ""
+"The stateful/stateless navigation distinction is quite similar to the "
+"traditional view of modal/modeless interaction. Now, Seam applications are "
+"not usually modal in the simple sense of the word - indeed, avoiding "
+"application modal behavior is one of the main reasons for having "
+"conversations! However, Seam applications can be, and often are, modal at "
+"the level of a particular conversation. It is well-known that modal behavior "
+"is something to avoid as much as possible; it is very difficult to predict "
+"the order in which your users are going to want to do things! However, there "
+"is no doubt that the stateful model has its place."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:120
+#, no-c-format
+msgid ""
+"The biggest contrast between the two models is the back-button behavior."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:126
+#, no-c-format
+msgid "Seam and the back button"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:127
+#, no-c-format
+msgid ""
+"When JSF or Seam navigation rules are used, Seam lets the user freely "
+"navigate via the back, forward and refresh buttons. It is the responsibility "
+"of the application to ensure that conversational state remains internally "
+"consistent when this occurs. Experience with the combination of web "
+"application frameworks like Struts or WebWork - that do not support a "
+"conversational model - and stateless component models like EJB stateless "
+"session beans or the Spring framework has taught many developers that this "
+"is close to impossible to do! However, our experience is that in the context "
+"of Seam, where there is a well-defined conversational model, backed by "
+"stateful session beans, it is actually quite straightforward. Usually it is "
+"as simple as combining the use of <literal>no-conversation-view-id</literal> "
+"with null checks at the beginning of action listener methods. We consider "
+"support for freeform navigation to be almost always desirable."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:130
+#, no-c-format
+msgid ""
+"In this case, the <literal>no-conversation-view-id</literal> declaration "
+"goes in <literal>pages.xml</literal>. It tells Seam to redirect to a "
+"different page if a request originates from a page rendered during a "
+"conversation, and that conversation no longer exists:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:133
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/checkout.xhtml\" \n"
+"        no-conversation-view-id=\"/main.xhtml\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:134
+#, no-c-format
+msgid ""
+"On the other hand, in the stateful model, backbuttoning is interpreted as an "
+"undefined transition back to a previous state. Since the stateful model "
+"enforces a defined set of transitions from the current state, back buttoning "
+"is be default disallowed in the stateful model! Seam transparently detects "
+"the use of the back button, and blocks any attempt to perform an action from "
+"a previous, \"stale\" page, and simply redirects the user to the \"current\" "
+"page (and displays a faces message). Whether you consider this a feature or "
+"a limitation of the stateful model depends upon your point of view: as an "
+"application developer, it is a feature; as a user, it might be frustrating! "
+"You can enable backbutton navigation from a particular page node by setting "
+"<literal>back=\"enabled\"</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:137
+#, no-c-format
+msgid ""
+"&lt;page name=\"checkout\" \n"
+"        view-id=\"/checkout.xhtml\" \n"
+"        back=\"enabled\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"checkout\"/&gt;\n"
+"    &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:138
+#, no-c-format
+msgid ""
+"This allows backbuttoning <emphasis>from</emphasis> the <literal>checkout</"
+"literal> state to <emphasis>any previous state!</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:141
+#, no-c-format
+msgid ""
+"Of course, we still need to define what happens if a request originates from "
+"a page rendered during a pageflow, and the conversation with the pageflow no "
+"longer exists. In this case, the <literal>no-conversation-view-id</literal> "
+"declaration goes into the pageflow definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:144
+#, no-c-format
+msgid ""
+"&lt;page name=\"checkout\" \n"
+"        view-id=\"/checkout.xhtml\" \n"
+"        back=\"enabled\" \n"
+"        no-conversation-view-id=\"/main.xhtml\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"checkout\"/&gt;\n"
+"    &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:151
+#, no-c-format
+msgid "Using jPDL pageflows"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:153
+#, no-c-format
+msgid "Installing pageflows"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:154
+#, no-c-format
+msgid ""
+"We need to install the Seam jBPM-related components, and tell them where to "
+"find our pageflow definition. We can specify this Seam configuration in "
+"<literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:157
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:pageflow-definitions&gt;\n"
+"        &lt;value&gt;pageflow.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:pageflow-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:158
+#, no-c-format
+msgid ""
+"The first line installs jBPM, the second points to a jPDL-based pageflow "
+"definition."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:164
+#, no-c-format
+msgid "Starting pageflows"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:165
+#, no-c-format
+msgid ""
+"We \"start\" a jPDL-based pageflow by specifying the name of the process "
+"definition using a <literal>@Begin</literal>, <literal>@BeginTask</literal> "
+"or <literal>@StartTask</literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:168
+#, no-c-format
+msgid ""
+"@Begin(pageflow=\"numberguess\")\n"
+"public void begin() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:169
+#, no-c-format
+msgid "Alternatively we can start a pageflow using pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:172
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"        &lt;begin-conversation pageflow=\"numberguess\"/&gt;\n"
+"    &lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:173
+#, no-c-format
+msgid ""
+"If we are beginning the pageflow during the <literal>RENDER_RESPONSE</"
+"literal> phase&mdash;during a <literal>@Factory</literal> or "
+"<literal>@Create</literal> method, for example&mdash;we consider ourselves "
+"to be already at the page being rendered, and use a <literal>&lt;start-"
+"page&gt;</literal> node as the first node in the pageflow, as in the example "
+"above."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:176
+#, no-c-format
+msgid ""
+"But if the pageflow is begun as the result of an action listener invocation, "
+"the outcome of the action listener determines which is the first page to be "
+"rendered. In this case, we use a <literal>&lt;start-state&gt;</literal> as "
+"the first node in the pageflow, and declare a transition for each possible "
+"outcome:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:179
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"viewEditDocument\"&gt;\n"
+"\n"
+"    &lt;start-state name=\"start\"&gt;\n"
+"        &lt;transition name=\"documentFound\" to=\"displayDocument\"/&gt;\n"
+"        &lt;transition name=\"documentNotFound\" to=\"notFound\"/&gt;\n"
+"    &lt;/start-state&gt;\n"
+"    \n"
+"    &lt;page name=\"displayDocument\" view-id=\"/document.jsp\"&gt;\n"
+"        &lt;transition name=\"edit\" to=\"editDocument\"/&gt;\n"
+"        &lt;transition name=\"done\" to=\"main\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"    \n"
+"    ...\n"
+"    \n"
+"    &lt;page name=\"notFound\" view-id=\"/404.jsp\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"    &lt;/page&gt;\n"
+"    \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:183
+#, no-c-format
+msgid "Page nodes and transitions"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:184
+#, no-c-format
+msgid ""
+"Each <literal>&lt;page&gt;</literal> node represents a state where the "
+"system is waiting for user input:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:187
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"        &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:188
+#, no-c-format
+msgid ""
+"The <literal>view-id</literal> is the JSF view id. The <literal>&lt;redirect/"
+"&gt;</literal> element has the same effect as <literal>&lt;redirect/&gt;</"
+"literal> in a JSF navigation rule: namely, a post-then-redirect behavior, to "
+"overcome problems with the browser's refresh button. (Note that Seam "
+"propagates conversation contexts over these browser redirects. So there is "
+"no need for a Ruby on Rails style \"flash\" construct in Seam!)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:191
+#, no-c-format
+msgid ""
+"The transition name is the name of a JSF outcome triggered by clicking a "
+"command button or command link in <literal>numberGuess.jsp</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:194
+#, no-c-format
+msgid ""
+"&lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"guess\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:195
+#, no-c-format
+msgid ""
+"When the transition is triggered by clicking this button, jBPM will activate "
+"the transition action by calling the <literal>guess()</literal> method of "
+"the <literal>numberGuess</literal> component. Notice that the syntax used "
+"for specifying actions in the jPDL is just a familiar JSF EL expression, and "
+"that the transition action handler is just a method of a Seam component in "
+"the current Seam contexts. So we have exactly the same event model for jBPM "
+"events that we already have for JSF events! (The <emphasis>One Kind of "
+"Stuff</emphasis> principle.)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:198
+#, no-c-format
+msgid ""
+"In the case of a null outcome (for example, a command button with no "
+"<literal>action</literal> defined), Seam will signal the transition with no "
+"name if one exists, or else simply redisplay the page if all transitions "
+"have names. So we could slightly simplify our example pageflow and this "
+"button:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:201
+#, no-c-format
+msgid "&lt;h:commandButton type=\"submit\" value=\"Guess\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:202
+#, no-c-format
+msgid "Would fire the following un-named transition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:205
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"evaluateGuess\"&gt;\n"
+"        &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:206
+#, no-c-format
+msgid ""
+"It is even possible to have the button call an action method, in which case "
+"the action outcome will determine the transition to be taken:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:209
+#, no-c-format
+msgid ""
+"&lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"#{numberGuess."
+"guess}\"/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:210
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;transition name=\"correctGuess\" to=\"win\"/&gt;\n"
+"    &lt;transition name=\"incorrectGuess\" to=\"evaluateGuess\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:211
+#, no-c-format
+msgid ""
+"However, this is considered an inferior style, since it moves responsibility "
+"for controlling the flow out of the pageflow definition and back into the "
+"other components. It is much better to centralize this concern in the "
+"pageflow itself."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:217
+#, no-c-format
+msgid "Controlling the flow"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:218
+#, no-c-format
+msgid ""
+"Usually, we don't need the more powerful features of jPDL when defining "
+"pageflows. We do need the <literal>&lt;decision&gt;</literal> node, however:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:221
+#, no-c-format
+msgid ""
+"&lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess.correctGuess}"
+"\"&gt;\n"
+"    &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"    &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"&lt;/decision&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:222
+#, no-c-format
+msgid ""
+"A decision is made by evaluating a JSF EL expression in the Seam contexts."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:228
+#, no-c-format
+msgid "Ending the flow"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:229
+#, no-c-format
+msgid ""
+"We end the conversation using <literal>&lt;end-conversation&gt;</literal> or "
+"<literal>@End</literal>. (In fact, for readability, use of <emphasis>both</"
+"emphasis> is encouraged.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:232
+#, no-c-format
+msgid ""
+"&lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;end-conversation/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:233
+#, no-c-format
+msgid ""
+"Optionally, we can end a task, specify a jBPM <literal>transition</literal> "
+"name. In this case, Seam will signal the end of the current task in the "
+"overarching business process."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:236
+#, no-c-format
+msgid ""
+"&lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;end-task transition=\"success\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:242
+#, no-c-format
+msgid "Business process management in Seam"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:243
+#, no-c-format
+msgid ""
+"A business process is a well-defined set of tasks that must be performed by "
+"users or software systems according to well-defined rules about "
+"<emphasis>who</emphasis> can perform a task, and <emphasis>when</emphasis> "
+"it should be performed. Seam's jBPM integration makes it easy to display "
+"lists of tasks to users and let them manage their tasks. Seam also lets the "
+"application store state associated with the business process in the "
+"<literal>BUSINESS_PROCESS</literal> context, and have that state made "
+"persistent via jBPM variables."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:246
+#, no-c-format
+msgid ""
+"A simple business process definition looks much the same as a page flow "
+"definition (<emphasis>One Kind of Stuff</emphasis>), except that instead of "
+"<literal>&lt;page&gt;</literal> nodes, we have <literal>&lt;task-node&gt;</"
+"literal> nodes. In a long-running business process, the wait states are "
+"where the system is waiting for some user to log in and perform a task."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:249
+#, no-c-format
+msgid ""
+"&lt;process-definition name=\"todo\"&gt;\n"
+"   \n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"todo\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;task-node name=\"todo\"&gt;\n"
+"      &lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"         &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"      &lt;/task&gt;\n"
+"      &lt;transition to=\"done\"/&gt;\n"
+"   &lt;/task-node&gt;\n"
+"   \n"
+"   &lt;end-state name=\"done\"/&gt;\n"
+"   \n"
+"&lt;/process-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:260
+#, no-c-format
+msgid ""
+"It is perfectly possible that we might have both jPDL business process "
+"definitions and jPDL pageflow definitions in the same project. If so, the "
+"relationship between the two is that a single <literal>&lt;task&gt;</"
+"literal> in a business process corresponds to a whole pageflow <literal>&lt;"
+"pageflow-definition&gt;</literal>"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:265
+#, no-c-format
+msgid "Using jPDL business process definitions"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:267
+#, no-c-format
+msgid "Installing process definitions"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:268
+#, no-c-format
+msgid ""
+"We need to install jBPM, and tell it where to find the business process "
+"definitions:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:271
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;todo.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:275
+#, no-c-format
+msgid "Initializing actor ids"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:276
+#, no-c-format
+msgid ""
+"We always need to know what user is currently logged in. jBPM \"knows\" "
+"users by their <emphasis>actor id</emphasis> and <emphasis>group actor ids</"
+"emphasis>. We specify the current actor ids using the built in Seam "
+"component named <literal>actor</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:279
+#, no-c-format
+msgid ""
+"@In Actor actor;\n"
+"\n"
+"public String login() {\n"
+"    ...\n"
+"    actor.setId( user.getUserName() );\n"
+"    actor.getGroupActorIds().addAll( user.getGroupNames() );\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:283
+#, no-c-format
+msgid "Initiating a business process"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:284
+#, no-c-format
+msgid ""
+"To initiate a business process instance, we use the <literal>@CreateProcess</"
+"literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:287
+#, no-c-format
+msgid ""
+"@CreateProcess(definition=\"todo\")\n"
+"public void createTodo() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:288
+#, no-c-format
+msgid "Alternatively we can initiate a business process using pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:291
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;create-process definition=\"todo\" /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:295
+#, no-c-format
+msgid "Task assignment"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:296
+#, no-c-format
+msgid ""
+"When a process starts, task instances are created. These must be assigned to "
+"users or user groups. We can either hardcode our actor ids, or delegate to a "
+"Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:299
+#, no-c-format
+msgid ""
+"&lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"    &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"&lt;/task&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:300
+#, no-c-format
+msgid ""
+"In this case, we have simply assigned the task to the current user. We can "
+"also assign tasks to a pool:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:303
+#, no-c-format
+msgid ""
+"&lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"    &lt;assignment pooled-actors=\"employees\"/&gt;\n"
+"&lt;/task&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:307
+#, no-c-format
+msgid "Task lists"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:308
+#, no-c-format
+msgid ""
+"Several built-in Seam components make it easy to display task lists. The "
+"<literal>pooledTaskInstanceList</literal> is a list of pooled tasks that "
+"users may assign to themselves:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:311
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{pooledTaskInstanceList}\" var=\"task\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Description&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{task.description}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link action=\"#{pooledTask.assignToCurrentActor}\" value="
+"\"Assign\" taskInstance=\"#{task}\"/&gt;\n"
+"    &lt;/h:column&gt;            \n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:312
+#, no-c-format
+msgid ""
+"Note that instead of <literal>&lt;s:link&gt;</literal> we could have used a "
+"plain JSF <literal>&lt;h:commandLink&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:315
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"#{pooledTask.assignToCurrentActor}\"&gt; \n"
+"    &lt;f:param name=\"taskId\" value=\"#{task.id}\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:316
+#, no-c-format
+msgid ""
+"The <literal>pooledTask</literal> component is a built-in component that "
+"simply assigns the task to the current user."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:319
+#, no-c-format
+msgid ""
+"The <literal>taskInstanceListByType</literal> component includes tasks of a "
+"particular type that are assigned to the current user:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:322
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{taskInstanceListByType['todo']}\" var=\"task"
+"\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Description&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{task.description}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link action=\"#{todoList.start}\" value=\"Start Work\" "
+"taskInstance=\"#{task}\"/&gt;\n"
+"    &lt;/h:column&gt;            \n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:326
+#, no-c-format
+msgid "Performing a task"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:327
+#, no-c-format
+msgid ""
+"To begin work on a task, we use either <literal>@StartTask</literal> or "
+"<literal>@BeginTask</literal> on the listener method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:330
+#, no-c-format
+msgid ""
+"@StartTask\n"
+"public String start() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:331
+#, no-c-format
+msgid "Alternatively we can begin work on a task using pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:334
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;start-task /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:335
+#, no-c-format
+msgid ""
+"These annotations begin a special kind of conversation that has significance "
+"in terms of the overarching business process. Work done by this conversation "
+"has access to state held in the business process context."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:338
+#, no-c-format
+msgid ""
+"If we end the conversation using <literal>@EndTask</literal>, Seam will "
+"signal the completion of the task:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:341
+#, no-c-format
+msgid ""
+"@EndTask(transition=\"completed\")\n"
+"public String completed() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:342
+#, no-c-format
+msgid "Alternatively we can use pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:345
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;end-task transition=\"completed\" /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:346
+#, no-c-format
+msgid ""
+"(Alternatively, we could have used <literal>&lt;end-conversation&gt;</"
+"literal> as shown above.)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:349
+#, no-c-format
+msgid ""
+"At this point, jBPM takes over and continues executing the business process "
+"definition. (In more complex processes, several tasks might need to be "
+"completed before process execution can resume.)"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Jms.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Jms.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Jms.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,477 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Jms.xml:10
+#, no-c-format
+msgid "Asynchronicity and messaging"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:11
+#, no-c-format
+msgid ""
+"Seam makes it very easy to perform work asynchronously from a web request. "
+"When most people think of asynchronicity in Java EE, they think of using "
+"JMS. This is certainly one way to approach the problem in Seam, and is the "
+"right way when you have strict and well-defined quality of service "
+"requirements. Seam makes it easy to send and recieve JMS messages using Seam "
+"components."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:14
+#, no-c-format
+msgid ""
+"But for many usecases, JMS is overkill. Seam layers a simple asynchronous "
+"method and event facility over the EJB 3.0 timer service."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:17
+#, no-c-format
+msgid "Asynchronicity"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:18
+#, no-c-format
+msgid ""
+"Asynchronous events and method calls have the same quality of service "
+"expectations as the container's EJB timer service. If you're not familiar "
+"with the Timer service, don't worry, you don't need to interact with it "
+"directly if you want to use asynchronous methods in Seam."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:21
+#, no-c-format
+msgid ""
+"To use asynchronous methods and events, you need to add the following line "
+"to <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:24
+#, no-c-format
+msgid "&lt;core:dispatcher/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:25
+#, no-c-format
+msgid ""
+"Note that this functionality is not available in environments which do not "
+"support EJB 3.0."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:28
+#, no-c-format
+msgid "Asynchronous methods"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:29
+#, no-c-format
+msgid ""
+"In simplest form, an asynchronous call just lets a method call be processed "
+"asynchronously (in a different thread) from the caller. We usually use an "
+"asynchronous call when we want to return an immediate response to the "
+"client, and let some expensive work be processed in the background. This "
+"pattern works very well in applications which use AJAX, where the client can "
+"automatically poll the server for the result of the work."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:32
+#, no-c-format
+msgid ""
+"For EJB components, we annotate the local interface to specify that a method "
+"is processed asynchronously."
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:35
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public void processPayment(Payment payment);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:36
+#, no-c-format
+msgid ""
+"(For JavaBean components we can annotate the component implementation class "
+"if we like.)"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:39
+#, no-c-format
+msgid "The use of asynchronicity is transparent to the bean class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:42
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"paymentHandler\")\n"
+"public class PaymentHandlerBean implements PaymentHandler\n"
+"{\n"
+"    public void processPayment(Payment payment)\n"
+"    {\n"
+"        //do some work!\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:43
+#, no-c-format
+msgid "And also transparent to the client:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:46
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String pay()\n"
+"    {\n"
+"        paymentHandler.processPayment( new Payment(bill) );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:47
+#, no-c-format
+msgid ""
+"The asynchronous method is processed in a completely new event context and "
+"does not have access to the session or conversation context state of the "
+"caller. However, the business process context <emphasis>is</emphasis> "
+"propagated."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:50
+#, no-c-format
+msgid ""
+"Asynchronous method calls may be scheduled for later execution using the "
+"<literal>@Duration</literal>, <literal>@Expiration</literal> and "
+"<literal>@IntervalDuration</literal> annotations."
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:53
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public void processScheduledPayment(Payment payment, @Expiration Date "
+"date);\n"
+"\n"
+"    @Asynchronous\n"
+"    public void processRecurringPayment(Payment payment, @Expiration Date "
+"date, \n"
+"        @IntervalDuration Long interval)'\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:54
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String schedulePayment()\n"
+"    {\n"
+"        paymentHandler.processScheduledPayment( new Payment(bill), bill."
+"getDueDate() );\n"
+"        return \"success\";\n"
+"    }\n"
+"\n"
+"    public String scheduleRecurringPayment()\n"
+"    {\n"
+"        paymentHandler.processRecurringPayment( new Payment(bill), bill."
+"getDueDate(), ONE_MONTH );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:55
+#, no-c-format
+msgid ""
+"Both client and server may access the <literal>Timer</literal> object "
+"associated with the invocation."
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:58
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public Timer processScheduledPayment(Payment payment, @Expiration Date "
+"date);\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:59
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"paymentHandler\")\n"
+"public class PaymentHandlerBean implements PaymentHandler\n"
+"{\n"
+"    @In Timer timer;\n"
+"    \n"
+"    public Timer processScheduledPayment(Payment payment, @Expiration Date "
+"date)\n"
+"    {\n"
+"        //do some work!\n"
+"        \n"
+"        return timer; //note that return value is completely ignored\n"
+"    }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:60
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String schedulePayment()\n"
+"    {\n"
+"        Timer timer = paymentHandler.processScheduledPayment( new Payment"
+"(bill), bill.getDueDate() );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:61
+#, no-c-format
+msgid "Asynchronous methods cannot return any other value to the caller."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:64
+#, no-c-format
+msgid "Asynchronous events"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:65
+#, no-c-format
+msgid ""
+"Component-driven events may also be asynchronous. To raise an event for "
+"asynchronous processing, simply call the <literal>raiseAsynchronousEvent()</"
+"literal> methods of the <literal>Events</literal> class. To schedule a timed "
+"event, call one of the <literal>raiseTimedEvent()</literal> methods. "
+"Components may observe asynchronous events in the usual way, but remember "
+"that only the business process context is propagated to the asynchronous "
+"thread."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:68
+#, no-c-format
+msgid "Messaging in Seam"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:69
+#, no-c-format
+msgid ""
+"Seam makes it easy to send and receive JMS messages to and from Seam "
+"components."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:72
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:73
+#, no-c-format
+msgid ""
+"To configure Seam's infrastructure for sending JMS messages, you need to "
+"tell Seam about any topics and queues you want to send messages to, and also "
+"tell Seam where to find the <literal>QueueConnectionFactory</literal> and/or "
+"<literal>TopicConnectionFactory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:76
+#, no-c-format
+msgid ""
+"Seam defaults to using <literal>UIL2ConnectionFactory</literal> which is the "
+"usual connection factory for use with JBossMQ. If you are using some other "
+"JMS provider, you need to set one or both of <literal>queueConnection."
+"queueConnectionFactoryJndiName</literal> and <literal>topicConnection."
+"topicConnectionFactoryJndiName</literal> in <literal>seam.properties</"
+"literal>, <literal>web.xml</literal> or <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:79
+#, no-c-format
+msgid ""
+"You also need to list topics and queues in <literal>components.xml</literal> "
+"to install Seam managed <literal>TopicPublisher</literal>s and "
+"<literal>QueueSender</literal>s:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:82
+#, no-c-format
+msgid ""
+"&lt;jms:managed-topic-publisher name=\"stockTickerPublisher\" auto-create="
+"\"true\" \n"
+"    topic-jndi-name=\"topic/stockTickerTopic\"/&gt;\n"
+"\n"
+"&lt;jms:managed-queue-sender name=\"paymentQueueSender\" auto-create=\"true"
+"\" \n"
+"    queue-jndi-name=\"queue/paymentQueue\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:83
+#, no-c-format
+msgid "Sending messages"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:84
+#, no-c-format
+msgid ""
+"Now, you can inject a JMS <literal>TopicPublisher</literal> and "
+"<literal>TopicSession</literal> into any component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:87
+#, no-c-format
+msgid ""
+"@In \n"
+"private TopicPublisher stockTickerPublisher;   \n"
+"@In \n"
+"private TopicSession topicSession;\n"
+"\n"
+"public void publish(StockPrice price) {\n"
+"      try\n"
+"      {\n"
+"         topicPublisher.publish( topicSession.createObjectMessage(price) );\n"
+"      } \n"
+"      catch (Exception ex)\n"
+"      {\n"
+"         throw new RuntimeException(ex);\n"
+"      } \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:88
+#, no-c-format
+msgid "Or, for working with a queue:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:91
+#, no-c-format
+msgid ""
+"@In\n"
+"private QueueSender paymentQueueSender;   \n"
+"@In\n"
+"private QueueSession queueSession;\n"
+"\n"
+"public void publish(Payment payment) {\n"
+"      try\n"
+"      {\n"
+"         paymentQueueSender.send( queueSession.createObjectMessage"
+"(payment) );\n"
+"      } \n"
+"      catch (Exception ex)\n"
+"      {\n"
+"         throw new RuntimeException(ex);\n"
+"      } \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:92
+#, no-c-format
+msgid "Receiving messages using a message-driven bean"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:93
+#, no-c-format
+msgid ""
+"You can process messages using any EJB3 message driven bean. Message-driven "
+"beans may even be Seam components, in which case it is possible to inject "
+"other event and application scoped Seam components."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:96
+#, no-c-format
+msgid "Receiving messages in the client"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:97
+#, no-c-format
+msgid ""
+"Seam Remoting lets you subscribe to a JMS topic from client-side JavaScript. "
+"This is described in the next chapter."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Mail.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Mail.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Mail.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,985 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Mail.xml:10
+#, no-c-format
+msgid "Email"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:11
+#, no-c-format
+msgid ""
+"Seam now includes an optional components for templating and sending emails."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:14
+#, no-c-format
+msgid ""
+"Email support is provided by <literal>jboss-seam-mail.jar</literal>. This "
+"JAR contains the mail JSF controls, which are used to construct emails, and "
+"the <literal>mailSession</literal> manager component."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:17
+#, no-c-format
+msgid ""
+"The examples/mail project contains an example of the email support in "
+"action. It demonstrates proper packaging, and it contains a number of "
+"example that demonstrate the key features currently supported."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:21
+#, no-c-format
+msgid "Creating a message"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:22
+#, no-c-format
+msgid ""
+"You don't need to learn a whole new templating language to use Seam "
+"Mail&mdash;an email is just facelet!"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:25
+#, no-c-format
+msgid ""
+"&lt;m:message xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"    xmlns:m=\"http://jboss.com/products/seam/mail\"\n"
+"    xmlns:h=\"http://java.sun.com/jsf/html\"&gt;\n"
+"  \n"
+"    &lt;m:from name=\"Peter\" address=\"peter at example.com\" /&gt;\n"
+"    &lt;m:to name=\"#{person.firstname} #{person.lastname}\"&gt;#{person."
+"address}&lt;/m:to&gt;\n"
+"    &lt;m:subject&gt;Try out Seam!&lt;/m:subject&gt;\n"
+"    \n"
+"    &lt;m:body&gt;\n"
+"        &lt;p&gt;&lt;h:outputText value=\"Dear #{person.firstname}\" /&gt;,"
+"&lt;/p&gt;\n"
+"        &lt;p&gt;You can try out Seam by visiting \n"
+"        &lt;a href=\"http://labs.jboss.com/jbossseam\"&gt;http://labs.jboss."
+"com/jbossseam&lt;/a&gt;.&lt;/p&gt;\n"
+"        &lt;p&gt;Regards,&lt;/p&gt;\n"
+"        &lt;p&gt;Peter&lt;/p&gt;\n"
+"    &lt;/m:body&gt;\n"
+"    \n"
+"&lt;/m:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:26
+#, no-c-format
+msgid ""
+"The <literal>&lt;m:message&gt;</literal> tag wraps the whole message, and "
+"tells Seam to start rendering an email. Inside the <literal>&lt;m:message&gt;"
+"</literal> tag we use an <literal>&lt;m:from&gt;</literal> tag to set who "
+"the message is from, a <literal>&lt;m:to&gt;</literal> tag to specify a "
+"sender (notice how we use EL as we would in a normal facelet), and a "
+"<literal>&lt;m:subject&gt;</literal> tag."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:29
+#, no-c-format
+msgid ""
+"The <literal>&lt;m:body&gt;</literal> tag wraps the body of the email. You "
+"can use regular HTML tags inside the body as well as JSF components."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:32
+#, no-c-format
+msgid ""
+"So, now you have your email template, how do you go about sending it? Well, "
+"at the end of rendering the <literal>m:message</literal> the "
+"<literal>mailSession</literal> is called to send the email, so all you have "
+"to do is ask Seam to render the view:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:35
+#, no-c-format
+msgid ""
+"@In(create=true)\n"
+"private Renderer renderer;\n"
+"   \n"
+"public void send() {\n"
+"    try {\n"
+"       renderer.render(\"/simple.xhtml\");\n"
+"       facesMessages.add(\"Email sent successfully\");\n"
+"   } \n"
+"   catch (Exception e) {\n"
+"       facesMessages.add(\"Email sending failed: \" + e.getMessage());\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:36
+#, no-c-format
+msgid ""
+"If, for example, you entered an invalid email address, then an exception "
+"would be thrown, which is caught and then displayed to the user."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:40
+#, no-c-format
+msgid "Attachments"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:41
+#, no-c-format
+msgid ""
+"Seam makes it easy to attach files to an email. It supports most of the "
+"standard java types used when working with files."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:44
+#, no-c-format
+msgid "If you wanted to email the <literal>jboss-seam-mail.jar</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:47
+#, no-c-format
+msgid "&lt;m:attachment value=\"/WEB-INF/lib/jboss-seam-mail.jar\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:48
+#, no-c-format
+msgid ""
+"Seam will load the file from the classpath, and attach it to the email. By "
+"default it would be attached as <literal>jboss-seam-mail.jar</literal>; if "
+"you wanted it to have another name you would just add the <literal>fileName</"
+"literal> attribute:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:51
+#, no-c-format
+msgid ""
+"&lt;m:attachment value=\"/WEB-INF/lib/jboss-seam-mail.jar\" fileName=\"this-"
+"is-so-cool.jar\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:52
+#, no-c-format
+msgid ""
+"You could also attach a <literal>java.io.File</literal>, a <literal>java.net."
+"URL</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:55
+#, no-c-format
+msgid "&lt;m:attachment value=\"#{numbers}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:56
+#, no-c-format
+msgid ""
+"Or a <literal>byte[]</literal> or a <literal>java.io.InputStream</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:59
+#, no-c-format
+msgid ""
+"&lt;m:attachment value=\"#{person.photo}\" contentType=\"image/png\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:60
+#, no-c-format
+msgid ""
+"You'll notice that for a <literal>byte[]</literal> and a <literal>java.io."
+"InputStream</literal> you need to specify the MIME type of the attachment "
+"(as that information is not carried as part of the file)."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:63
+#, no-c-format
+msgid ""
+"And it gets even better, you can attach a Seam generated PDF, or any "
+"standard JSF view, just by wrapping a <literal>&lt;m:attachment&gt;</"
+"literal> around the normal tags you would use:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:66
+#, no-c-format
+msgid ""
+"&lt;m:attachment fileName=\"tiny.pdf\"&gt;\n"
+"    &lt;p:"
+"document&gt;                                                      \n"
+"        A very tiny "
+"PDF                                                                                                \n"
+"    &lt;/p:document&gt;\n"
+"&lt;/m:attachment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:67
+#, no-c-format
+msgid ""
+"If you had a set of files you wanted to attach (for example a set of "
+"pictures loaded from a database) you can just use a <literal>&lt;ui:"
+"repeat&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:70
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{people}\" var=\"person\"&gt;\n"
+"    &lt;m:attachment value=\"#{person.photo}\" contentType=\"image/jpeg\"\n"
+"    fileName=\"#{person.firstname}_#{person.lastname}.jpg\"/&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:74
+#, no-c-format
+msgid "HTML/Text alternative part"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:75
+#, no-c-format
+msgid ""
+"Whilst most mail readers nowadays support HTML, some don't, so you can add a "
+"plain text alternative to your email body:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:78
+#, no-c-format
+msgid ""
+"&lt;m:body&gt;\n"
+"    &lt;f:facet name=\"alternative\"&gt;Sorry, your email reader can't show "
+"our fancy email, \n"
+"please go to http://labs.jboss.com/jbossseam to explore Seam.&lt;/f:"
+"facet&gt;\n"
+"&lt;/m:body&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:82
+#, no-c-format
+msgid "Multiple recipients"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:83
+#, no-c-format
+msgid ""
+"Often you'll want to send an email to a group of recipients (for example "
+"your users). All of the recipient mail tags can be placed inside a "
+"<literal>&lt;ui:repeat&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:86
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{allUsers} var=\"user\"&gt;\n"
+"    &lt;m:to name=\"#{user.firstname} #{user.lastname}\" address=\"#{user."
+"emailAddress}\" /&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:90
+#, no-c-format
+msgid "Multiple messages"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:91
+#, no-c-format
+msgid ""
+"Sometimes, however, you need to send a slightly different message to each "
+"recipient (e.g. a password reset). The best way to do this is to place the "
+"whole message inside a <literal>&lt;ui:repeat&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:94
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{people}\" var=\"p\"&gt;\n"
+"    &lt;m:message&gt;\n"
+"        &lt;m:from name=\"#{person.firstname} #{person.lastname}\"&gt;#"
+"{person.address}&lt;/m:from&gt;\n"
+"        &lt;m:to name=\"#{p.firstname}\"&gt;#{p.address}&lt;/m:to&gt;\n"
+"            ...\n"
+"    &lt;/m:message&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:98
+#, no-c-format
+msgid "Templating"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:99
+#, no-c-format
+msgid ""
+"The mail templating example shows that facelets templating Just Works with "
+"the Seam mail tags."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:102
+#, no-c-format
+msgid "Our <literal>template.xhtml</literal> contains:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:105
+#, no-c-format
+msgid ""
+"&lt;m:message&gt;\n"
+"   &lt;m:from name=\"Seam\" address=\"do-not-reply at jboss.com\" /&gt;\n"
+"   &lt;m:to name=\"#{person.firstname} #{person.lastname}\"&gt;#{person."
+"address}&lt;/m:to&gt;\n"
+"   &lt;m:subject&gt;#{subject}&lt;/m:subject&gt;\n"
+"   &lt;m:body&gt;\n"
+"       &lt;html&gt;\n"
+"           &lt;body&gt;\n"
+"               &lt;ui:insert name=\"body\"&gt;This is the default body, "
+"specified by the template.\n"
+"               &lt;/ui:insert&gt;\n"
+"           &lt;/body&gt;\n"
+"       &lt;/html&gt;\n"
+"   &lt;/m:body&gt;\n"
+"&lt;/m:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:106
+#, no-c-format
+msgid "Our <literal>templating.xhtml</literal> contains:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:109
+#, no-c-format
+msgid ""
+"&lt;ui:param name=\"subject\" value=\"Templating with Seam Mail\"/&gt;\n"
+"&lt;ui:define name=\"body\"&gt;\n"
+"    &lt;p&gt;This example demonstrates that you can easily use &lt;i&gt;"
+"facelets templating&lt;/i&gt; in email!&lt;/p&gt;\n"
+"&lt;/ui:define&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:113
+#, no-c-format
+msgid "Other Headers"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:114
+#, no-c-format
+msgid ""
+"Sometimes you'll want to add other headers to your email. Seam provides "
+"support for some (see <xref linkend=\"Email-Tags\"/>). For example, we can "
+"set the importance of the email, and ask for a read receipt:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:117
+#, no-c-format
+msgid ""
+"&lt;m:message xmlns:m=\"http://jboss.com/products/seam/mail\"\n"
+"           importance=\"low\"\n"
+"           requestReadReceipt=\"true\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:118
+#, no-c-format
+msgid ""
+"Otherise you can add any header to the message using the <literal>&lt;m:"
+"header&gt;</literal> tag:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:121
+#, no-c-format
+msgid "&lt;m:header name=\"X-Sent-From\" value=\"JBoss Seam\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:127
+#, no-c-format
+msgid "Receiving emails"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:128
+#, no-c-format
+msgid ""
+"If you are using EJB then you can use a MDB (Message Driven Bean) to receive "
+"email. Seam comes with an improved version of <literal>mail-ra.rar</literal> "
+"as distributed in JBoss AS; until the improvements make there way into a "
+"released version of JBoss AS, replacing the default <literal>rar</literal> "
+"with the one distributed with Seam is recommended."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:131
+#, no-c-format
+msgid "You can configure it like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:134
+#, no-c-format
+msgid ""
+"@MessageDriven(activationConfig={\n"
+"         @ActivationConfigProperty(propertyName=\"mailServer\", "
+"propertyValue=\"localhost\"),\n"
+"         @ActivationConfigProperty(propertyName=\"mailFolder\", "
+"propertyValue=\"INBOX\"),\n"
+"         @ActivationConfigProperty(propertyName=\"storeProtocol\", "
+"propertyValue=\"pop3\"),\n"
+"         @ActivationConfigProperty(propertyName=\"userName\", propertyValue="
+"\"seam\"),\n"
+"         @ActivationConfigProperty(propertyName=\"password\", propertyValue="
+"\"seam\")\n"
+"})\n"
+"@ResourceAdapter(\"mail-ra.rar\")\n"
+"@Name(\"mailListener\")\n"
+"public class MailListenerMDB implements MailListener {\n"
+"\n"
+"   @In(create=true)\n"
+"   private OrderProcessor orderProcessor;\n"
+"\n"
+"   public void onMessage(Message message) {\n"
+"      // Process the message\n"
+"      orderProcessor.process(message.getSubject());\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:135
+#, no-c-format
+msgid ""
+"Each message received will cause <literal>onMessage(Message message)</"
+"literal> to be called. Most seam annotations will work inside a MDB but you "
+"musn't access the persistence context."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:138
+#, no-c-format
+msgid ""
+"You can find more information on the default <literal>mail-ra.rar</literal> "
+"at <ulink url=\"http://wiki.jboss.org/wiki/Wiki.jsp?page=InboundJavaMail"
+"\">http://wiki.jboss.org/wiki/Wiki.jsp?page=InboundJavaMail</ulink>. The "
+"version distributed with Seam also includes a <literal>debug</literal> "
+"property to enable JavaMail debugging, a <literal>flush</literal> property "
+"(by default true) to disable flushing a <literal>POP3</literal> mailbox "
+"after successfullying delivering a message to your MDB and a <literal>port</"
+"literal> property to override the default TCP port. Beware that the api for "
+"this may be altered as changes make there way into JBoss AS."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:141
+#, no-c-format
+msgid ""
+"If you aren't using JBoss AS you can still use <literal>mail-ra.rar</"
+"literal> (included with Seam in the mail directory), or you may find your "
+"application server includes a similar adapter."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:147
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:148
+#, no-c-format
+msgid ""
+"To include Email support in your application, include <literal>jboss-seam-"
+"mail.jar</literal> in your WEB-INF/lib directory. If you are using JBoss AS "
+"there is no further configuration needed to use Seam's email support. "
+"Otherwise you need to make sure you have the JavaMail API, an implementation "
+"of the JavaMail API present (the API and impl used in JBoss AS are "
+"distributed with seam as <literal>lib/mail.jar</literal>), and a copy of the "
+"Java Activation Framework (distributed with seam as <literal>lib/activation."
+"jar</literal>."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:151
+#, no-c-format
+msgid ""
+"The Seam Email module requires the use of Facelets as the view technology. "
+"Future versions of the library may also support the use of JSP. "
+"Additionally, it requires the use of the seam-ui package."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:154
+#, no-c-format
+msgid ""
+"The <literal>mailSession</literal> component uses JavaMail to talk to a "
+"'real' SMTP server."
+msgstr ""
+
+#. Tag: literal
+#: Mail.xml:158
+#, no-c-format
+msgid "mailSession"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:159
+#, no-c-format
+msgid ""
+"A JavaMail Session may be available via a JNDI lookup if you are working in "
+"an JEE environment or you can use a Seam configured Session."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:162
+#, no-c-format
+msgid ""
+"The mailSession component's properties are described in more detail in <xref "
+"linkend=\"Built_in_Seam_components-Mail_related_components\"/>."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:166
+#, no-c-format
+msgid "JNDI lookup in JBoss AS"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:167
+#, no-c-format
+msgid ""
+"The JBossAS <literal>deploy/mail-service.xml</literal> configures a JavaMail "
+"session binding into JNDI. The default service configuration will need "
+"altering for your network. <ulink url=\"http://wiki.jboss.org/wiki/Wiki.jsp?"
+"page=JavaMail\">http://wiki.jboss.org/wiki/Wiki.jsp?page=JavaMail</ulink> "
+"describes the service in more detail."
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:170
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"        xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"        xmlns:mail=\"http://jboss.com/products/seam/mail\"&gt;\n"
+"        \n"
+"    &lt;mail:mail-session session-jndi-name=\"java:/Mail\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:171
+#, no-c-format
+msgid ""
+"Here we tell Seam to get the mail session bound to <literal>java:/Mail</"
+"literal> from JNDI."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:177
+#, no-c-format
+msgid "Seam configured Session"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:178
+#, no-c-format
+msgid ""
+"A mail session can be configured via <literal>components.xml</literal>. Here "
+"we tell Seam to use <literal>smtp.example.com</literal> as the smtp server,"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:181
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"        xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"        xmlns:mail=\"http://jboss.com/products/seam/mail\"&gt;\n"
+"        \n"
+"    &lt;mail:mail-session host=\"smtp.example.com\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:189
+#, no-c-format
+msgid "Tags"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:190
+#, no-c-format
+msgid ""
+"Emails are generated using tags in the <literal>http://jboss.com/products/"
+"seam/mail</literal> namespace. Documents should always have the "
+"<literal>message</literal> tag at the root of the message. The message tag "
+"prepares Seam to generate an email."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:193
+#, no-c-format
+msgid ""
+"The standard templating tags of facelets can be used as normal. Inside the "
+"body you can use any JSF tag which doesn't require access to external "
+"resources (stylesheets, javascript)."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:198
+#, no-c-format
+msgid "&lt;m:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:200
+#, no-c-format
+msgid "Root tag of a mail message"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:205
+#, no-c-format
+msgid ""
+"<literal>importance</literal> &mdash; low, normal or high. By default "
+"normal, this sets the importance of the mail message."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:210
+#, no-c-format
+msgid ""
+"<literal>precedence</literal> &mdash; sets the precedence of the message (e."
+"g. bulk)."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:215
+#, no-c-format
+msgid ""
+"<literal>requestReadReceipt</literal> &mdash; by default false, if set, a "
+"read receipt will be request will be added, with the read receipt being sent "
+"to the <literal>From:</literal> address."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:220
+#, no-c-format
+msgid ""
+"<literal>urlBase</literal> &mdash; If set, the value is prepended to the "
+"<literal>requestContextPath</literal> allowing you to use components such as "
+"<literal>&lt;h:graphicImage&gt;</literal> in your emails."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:228
+#, no-c-format
+msgid "&lt;m:from&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:230
+#, no-c-format
+msgid ""
+"Set's the From: address for the email. You can only have one of these per "
+"email."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:235
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the name the email should come from."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:240 Mail.xml:255
+#, no-c-format
+msgid ""
+"<literal>address</literal> &mdash; the email address the email should come "
+"from."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:248
+#, no-c-format
+msgid "&lt;m:replyTo&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:250
+#, no-c-format
+msgid ""
+"Set's the Reply-to: address for the email. You can only have one of these "
+"per email."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:263
+#, no-c-format
+msgid "&lt;m:to&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:265
+#, no-c-format
+msgid ""
+"Add a recipient to the email. Use multiple &lt;m:to&gt; tags for multiple "
+"recipients. This tag can be safely placed inside a repeat tag such as &lt;ui:"
+"repeat&gt;."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:270 Mail.xml:290 Mail.xml:310
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the name of the recipient."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:275 Mail.xml:295 Mail.xml:315
+#, no-c-format
+msgid "<literal>address</literal> &mdash; the email address of the recipient."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:283
+#, no-c-format
+msgid "&lt;m:cc&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:285
+#, no-c-format
+msgid ""
+"Add a cc recipient to the email. Use multiple &lt;m:cc&gt; tags for multiple "
+"ccs. This tag can be safely placed inside a repeat tag such as &lt;ui:"
+"repeat&gt;."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:303
+#, no-c-format
+msgid "&lt;m:bcc&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:305
+#, no-c-format
+msgid ""
+"Add a bcc recipient to the email. Use multiple &lt;m:bcc&gt; tags for "
+"multiple bccs. This tag can be safely placed inside a repeat tag such as &lt;"
+"ui:repeat&gt;."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:323
+#, no-c-format
+msgid "&lt;m:header&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:325
+#, no-c-format
+msgid ""
+"Add a header to the email (e.g. <literal>X-Sent-From: JBoss Seam</literal>"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:330
+#, no-c-format
+msgid ""
+"<literal>name</literal> &mdash; The name of the header to add (e.g. "
+"<literal>X-Sent-From</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:335
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; The value of the header to add (e.g. "
+"<literal>JBoss Seam</literal>)."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:343
+#, no-c-format
+msgid "&lt;m:attachment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:345
+#, no-c-format
+msgid "Add an attachment to the email."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:350
+#, no-c-format
+msgid "<literal>value</literal> &mdash; The file to attach:"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:355
+#, no-c-format
+msgid ""
+"<literal>String</literal> &mdash; A <literal>String</literal> is interpreted "
+"as a path to file within the classpath"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:360
+#, no-c-format
+msgid ""
+"<literal>java.io.File</literal> &mdash; An EL expression can reference a "
+"<literal>File</literal> object"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:365
+#, no-c-format
+msgid ""
+"<literal>java.net.URL</literal> &mdash; An EL expression can reference a "
+"<literal>URL</literal> object"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:370
+#, no-c-format
+msgid ""
+"<literal>java.io.InputStream</literal> &mdash; An EL expression can "
+"reference an <literal>InputStream</literal>. In this case both a "
+"<literal>fileName</literal> and a <literal>contentType</literal> must be "
+"specified."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:375
+#, no-c-format
+msgid ""
+"<literal>byte[]</literal> &mdash; An EL expression can reference an "
+"<literal>byte[]</literal>. In this case both a <literal>fileName</literal> "
+"and a <literal>contentType</literal> must be specified."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:380
+#, no-c-format
+msgid "If the value attribute is ommitted:"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:385
+#, no-c-format
+msgid ""
+"If this tag contains a <literal>&lt;p:document&gt;</literal> tag, the "
+"document described will be generated and attached to the email. A "
+"<literal>fileName</literal> should be specfied."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:390
+#, no-c-format
+msgid ""
+"If this tag contains other JSF tags a HTML document will be generated from "
+"them and attached to the email. A <literal>fileName</literal> should be "
+"specfied."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:397
+#, no-c-format
+msgid ""
+"<literal>fileName</literal> &mdash; Specify the file name to use for the "
+"attached file."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:402
+#, no-c-format
+msgid ""
+"<literal>contentType</literal> &mdash; Specify the MIME type of the attached "
+"file"
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:410
+#, no-c-format
+msgid "&lt;m:subject&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:412
+#, no-c-format
+msgid "Set's the subject for the email."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:418
+#, no-c-format
+msgid "&lt;m:body&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:420
+#, no-c-format
+msgid ""
+"Set's the body for the email. Supports an <literal>alternative</literal> "
+"facet which, if an HTML email is generated can contain alternative text for "
+"a mail reader which doesn't support html."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:425
+#, no-c-format
+msgid ""
+"<literal>type</literal> &mdash; If set to <literal>plain</literal> then a "
+"plain text email will be generated otherwise an HTML email is generated."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Persistence.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Persistence.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Persistence.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,750 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Persistence.xml:10
+#, no-c-format
+msgid "Seam and Object/Relational Mapping"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:11
+#, no-c-format
+msgid ""
+"Seam provides extensive support for the two most popular persistence "
+"architectures for Java: Hibernate3, and the Java Persistence API introduced "
+"with EJB 3.0. Seam's unique state-management architecture allows the most "
+"sophisticated ORM integration of any web application framework."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:15
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:16
+#, no-c-format
+msgid ""
+"Seam grew out of the frustration of the Hibernate team with the "
+"statelessness typical of the previous generation of Java application "
+"architectures. The state management architecture of Seam was originally "
+"designed to solve problems relating to persistence&mdash;in particular "
+"problems associated with <emphasis>optimistic transaction processing</"
+"emphasis>. Scalable online applications always use optimistic transactions. "
+"An atomic (database/JTA) level transaction should not span a user "
+"interaction unless the application is designed to support only a very small "
+"number of concurrent clients. But almost all interesting work involves first "
+"displaying data to a user, and then, slightly later, updating the same data. "
+"So Hibernate was designed to support the idea of a persistence context which "
+"spanned an optimistic transaction."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:19
+#, no-c-format
+msgid ""
+"Unfortunately, the so-called \"stateless\" architectures that preceded Seam "
+"and EJB 3.0 had no construct for representing an optimistic transaction. So, "
+"instead, these architectures provided persistence contexts scoped to the "
+"atomic transaction. Of course, this resulted in many problems for users, and "
+"is the cause of the number one user complaint about Hibernate: the dreaded "
+"<literal>LazyInitializationException</literal>. What we need is a construct "
+"for representing an optimistic transaction in the application tier."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:22
+#, no-c-format
+msgid ""
+"EJB 3.0 recognizes this problem, and introduces the idea of a stateful "
+"component (a stateful session bean) with an <emphasis>extended persistence "
+"context</emphasis> scoped to the lifetime of the component. This is a "
+"partial solution to the problem (and is a useful construct in and of itself) "
+"however there are two problems:"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:27
+#, no-c-format
+msgid ""
+"The lifecycle of the stateful session bean must be managed manually via code "
+"in the web tier (it turns out that this is a subtle problem and much more "
+"difficult in practice than it sounds)."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:32
+#, no-c-format
+msgid ""
+"Propagation of the persistence context between stateful components in the "
+"same optimistic transaction is possible, but tricky."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:37
+#, no-c-format
+msgid ""
+"Seam solves the first problem by providing conversations, and stateful "
+"session bean components scoped to the conversation. (Most conversations "
+"actually represent optimistic transactions in the data layer.) This is "
+"sufficient for many simple applications (such as the Seam booking demo) "
+"where persistence context propagation is not needed. For more complex "
+"applications, with many loosly-interacting components in each conversation, "
+"propagation of the persistence context across components becomes an "
+"important issue. So Seam extends the persistence context management model of "
+"EJB 3.0, to provide conversation-scoped extended persistence contexts."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:43
+#, no-c-format
+msgid "Seam managed transactions"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:44
+#, no-c-format
+msgid ""
+"EJB session beans feature declarative transaction management. The EJB "
+"container is able to start a transaction transparently when the bean is "
+"invoked, and end it when the invocation ends. If we write a session bean "
+"method that acts as a JSF action listener, we can do all the work associated "
+"with that action in one transaction, and be sure that it is committed or "
+"rolled back when we finish processing the action. This is a great feature, "
+"and all that is needed by some Seam applications."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:47
+#, no-c-format
+msgid ""
+"However, there is a problem with this approach. A Seam application may not "
+"perform all data access for a request from a single method call to a session "
+"bean."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:52
+#, no-c-format
+msgid ""
+"The request might require processing by several loosly-coupled components, "
+"each of which is called independently from the web layer. It is common to "
+"see several or even many calls per request from the web layer to EJB "
+"components in Seam."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:57
+#, no-c-format
+msgid "Rendering of the view might require lazy fetching of associations."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:62
+#, no-c-format
+msgid ""
+"The more transactions per request, the more likely we are to encounter "
+"atomicity and isolation problems when our application is processing many "
+"concurrent requests. Certainly, all write operations should occur in the "
+"same transaction!"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:65
+#, no-c-format
+msgid ""
+"Hibernate users developed the <emphasis>\"open session in view\"</emphasis> "
+"pattern to work around this problem. In the Hibernate community, \"open "
+"session in view\" was historically even more important because frameworks "
+"like Spring use transaction-scoped persistence contexts. So rendering the "
+"view would cause <literal>LazyInitializationException</literal>s when "
+"unfetched associations were accessed."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:68
+#, no-c-format
+msgid ""
+"This pattern is usually implemented as a single transaction which spans the "
+"entire request. There are several problems with this implementation, the "
+"most serious being that we can never be sure that a transaction is "
+"successful until we commit it&mdash;but by the time the \"open session in "
+"view\" transaction is committed, the view is fully rendered, and the "
+"rendered response may already have been flushed to the client. How can we "
+"notify the user that their transaction was unsuccessful?"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:71
+#, no-c-format
+msgid ""
+"Seam solves both the transaction isolation problem and the association "
+"fetching problem, while working around the problems with \"open session in "
+"view\". The solution comes in two parts:"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:76
+#, no-c-format
+msgid ""
+"use an extended persistence context that is scoped to the conversation, "
+"instead of to the transaction"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:81
+#, no-c-format
+msgid ""
+"use two transactions per request; the first spans the beginning of the "
+"update model values phase until the end of the invoke application phase; the "
+"second spans the render response phase"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:86
+#, no-c-format
+msgid ""
+"In the next section, we'll tell you how to set up a conversation-scope "
+"persistence context. But first we need to tell you how to enable Seam "
+"transaction management. Note that you can use conversation-scoped "
+"persistence contexts without Seam transaction management, and there are good "
+"reasons to use Seam transaction management even when you're not using Seam-"
+"managed persistence contexts. However, the two facilities were designed to "
+"work together, and work best when used together."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:90
+#, no-c-format
+msgid "Enabling Seam-managed transactions"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:91
+#, no-c-format
+msgid ""
+"To make use of <emphasis>Seam managed transactions</emphasis>, you need to "
+"use <literal>TransactionalSeamPhaseListener</literal> in place of "
+"<literal>SeamPhaseListener</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:94
+#, no-c-format
+msgid ""
+"&lt;lifecycle&gt;\n"
+"     &lt;phase-listener&gt;\n"
+"        org.jboss.seam.jsf.TransactionalSeamPhaseListener\n"
+"    &lt;/phase-listener&gt;\n"
+"&lt;/lifecycle&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:95
+#, no-c-format
+msgid ""
+"Seam transaction management is useful even if you're using EJB 3.0 container-"
+"managed persistence contexts. But it is especially useful if you use Seam "
+"outside a Java EE 5 environment, or in any other case where you would use a "
+"Seam-managed persistence context."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:103
+#, no-c-format
+msgid "Seam-managed persistence contexts"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:104
+#, no-c-format
+msgid ""
+"If you're using Seam outside of a Java EE 5 environment, you can't rely upon "
+"the container to manage the persistence context lifecycle for you. Even if "
+"you are in an EE 5 environment, you might have a complex application with "
+"many loosly coupled components that collaborate together in the scope of a "
+"single conversation, and in this case you might find that propagation of the "
+"persistence context between component is tricky and error-prone."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:107
+#, no-c-format
+msgid ""
+"In either case, you'll need to use a <emphasis>managed persistence context</"
+"emphasis> (for JPA) or a <emphasis>managed session</emphasis> (for "
+"Hibernate) in your components. A Seam-managed persistence context is just a "
+"built-in Seam component that manages an instance of <literal>EntityManager</"
+"literal> or <literal>Session</literal> in the conversation context. You can "
+"inject it with <literal>@In</literal>."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:110
+#, no-c-format
+msgid ""
+"Seam-managed persistence contexts are extremely efficient in a clustered "
+"environment. Seam is able to perform an optimization that EJB 3.0 "
+"specification does not allow containers to use for container-managed "
+"extended persistence contexts. Seam supports transparent failover of "
+"extended persisence contexts, without the need to replicate any persistence "
+"context state between nodes. (We hope to fix this oversight in the next "
+"revision of the EJB spec.)"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:114
+#, no-c-format
+msgid "Using a Seam-managed persistence context with JPA"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:115
+#, no-c-format
+msgid ""
+"Configuring a managed persistence context is easy. In <literal>components."
+"xml</literal>, we can write:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:118
+#, no-c-format
+msgid ""
+"&lt;core:managed-persistence-context name=\"bookingDatabase\" \n"
+"                           auto-create=\"true\"\n"
+"            persistence-unit-jndi-name=\"java:/EntityManagerFactories/"
+"bookingData\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:119
+#, no-c-format
+msgid ""
+"This configuration creates a conversation-scoped Seam component named "
+"<literal>bookingDatabase</literal> that manages the lifecycle of "
+"<literal>EntityManager</literal> instances for the persistence unit "
+"(<literal>EntityManagerFactory</literal> instance) with JNDI name "
+"<literal>java:/EntityManagerFactories/bookingData</literal>."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:122
+#, no-c-format
+msgid ""
+"Of course, you need to make sure that you have bound the "
+"<literal>EntityManagerFactory</literal> into JNDI. In JBoss, you can do this "
+"by adding the following property setting to <literal>persistence.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:125
+#, no-c-format
+msgid ""
+"&lt;property name=\"jboss.entity.manager.factory.jndi.name\" \n"
+"          value=\"java:/EntityManagerFactories/bookingData\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:126
+#, no-c-format
+msgid "Now we can have our <literal>EntityManager</literal> injected using:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:129
+#, no-c-format
+msgid "@In EntityManager bookingDatabase;"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:133
+#, no-c-format
+msgid "Using a Seam-managed Hibernate session"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:134
+#, no-c-format
+msgid ""
+"Seam-managed Hibernate sessions are similar. In <literal>components.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:137
+#, no-c-format
+msgid ""
+"&lt;core:hibernate-session-factory name=\"hibernateSessionFactory\"/&gt;\n"
+"\n"
+"&lt;core:managed-hibernate-session name=\"bookingDatabase\" \n"
+"                         auto-create=\"true\"\n"
+"           session-factory-jndi-name=\"java:/bookingSessionFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:138
+#, no-c-format
+msgid ""
+"Where <literal>java:/bookingSessionFactory</literal> is the name of the "
+"session factory specified in <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:141
+#, no-c-format
+msgid ""
+"&lt;session-factory name=\"java:/bookingSessionFactory\"&gt;\n"
+"    &lt;property name=\"transaction.flush_before_completion\"&gt;true&lt;/"
+"property&gt;\n"
+"    &lt;property name=\"connection.release_mode\"&gt;after_statement&lt;/"
+"property&gt;\n"
+"    &lt;property name=\"transaction.manager_lookup_class\"&gt;\n"
+"        org.hibernate.transaction.JBossTransactionManagerLookup\n"
+"    &lt;/property&gt;\n"
+"    &lt;property name=\"transaction.factory_class\"&gt;\n"
+"        org.hibernate.transaction.JTATransactionFactory\n"
+"    &lt;/property&gt;\n"
+"    &lt;property name=\"connection.datasource\"&gt;java:/"
+"bookingDatasource&lt;/property&gt;\n"
+"    ...\n"
+"&lt;/session-factory&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:142
+#, no-c-format
+msgid ""
+"Note that Seam does not flush the session, so you should always enable "
+"<literal>hibernate.transaction.flush_before_completion</literal> to ensure "
+"that the session is automatically flushed before the JTA transaction commits."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:145
+#, no-c-format
+msgid ""
+"We can now have a managed Hibernate <literal>Session</literal> injected into "
+"our JavaBean components using the following code:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:148
+#, no-c-format
+msgid "@In Session bookingDatabase;"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:152
+#, no-c-format
+msgid "Seam-managed persistence contexts and atomic conversations"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:153
+#, no-c-format
+msgid ""
+"Persistence contexts scoped to the conversation allows you to program "
+"optimistic transactions that span multiple requests to the server without "
+"the need to use the <literal>merge()</literal> operation , without the need "
+"to re-load data at the beginning of each request, and without the need to "
+"wrestle with the <literal>LazyInitializationException</literal> or "
+"<literal>NonUniqueObjectException</literal>."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:156
+#, no-c-format
+msgid ""
+"As with any optimistic transaction management, transaction isolation and "
+"consistency can be achieved via use of optimistic locking. Fortunately, both "
+"Hibernate and EJB 3.0 make it very easy to use optimistic locking, by "
+"providing the <literal>@Version</literal> annotation."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:159
+#, no-c-format
+msgid ""
+"By default, the persistence context is flushed (synchronized with the "
+"database) at the end of each transaction. This is sometimes the desired "
+"behavior. But very often, we would prefer that all changes are held in "
+"memory and only written to the database when the conversation ends "
+"successfully. This allows for truly atomic conversations. As the result of a "
+"truly stupid and shortsighted decision by certain non-JBoss, non-Sun and non-"
+"Sybase members of the EJB 3.0 expert group, there is currently no simple, "
+"usable and portable way to implement atomic conversations using EJB 3.0 "
+"persistence. However, Hibernate provides this feature as a vendor extension "
+"to the <literal>FlushModeType</literal>s defined by the specification, and "
+"it is our expectation that other vendors will soon provide a similar "
+"extension."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:162
+#, no-c-format
+msgid ""
+"Seam lets you specify <literal>FlushModeType.MANUAL</literal> when beginning "
+"a conversation. Currently, this works only when Hibernate is the underlying "
+"persistence provider, but we plan to support other equivalent vendor "
+"extensions."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:165
+#, no-c-format
+msgid ""
+"@In EntityManager em; //a Seam-managed persistence context\n"
+"\n"
+"@Begin(flushMode=MANUAL)\n"
+"public void beginClaimWizard() {\n"
+"    claim = em.find(Claim.class, claimId);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:166
+#, no-c-format
+msgid ""
+"Now, the <literal>claim</literal> object remains managed by the persistence "
+"context for the rest ot the conversation. We can make changes to the claim:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:169
+#, no-c-format
+msgid ""
+"public void addPartyToClaim() {\n"
+"    Party party = ....;\n"
+"    claim.addParty(party);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:170
+#, no-c-format
+msgid ""
+"But these changes will not be flushed to the database until we explicitly "
+"force the flush to occur:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:173
+#, no-c-format
+msgid ""
+"@End\n"
+"public void commitClaim() {\n"
+"    em.flush();\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:179
+#, no-c-format
+msgid "Using the JPA \"delegate\""
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:180
+#, no-c-format
+msgid ""
+"The <literal>EntityManager</literal> interface lets you access a vendor-"
+"specific API via the <literal>getDelegate()</literal> method. Naturally, the "
+"most interesting vendor is Hibernate, and the most powerful delegate "
+"interface is <literal>org.hibernate.Session</literal>. You'd be nuts to use "
+"anything else. Trust me, I'm not biased at all."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:183
+#, no-c-format
+msgid ""
+"But regardless of whether you're using Hibernate (genius!) or something else "
+"(masochist, or just not very bright), you'll almost certainly want to use "
+"the delegate in your Seam components from time to time. One approach would "
+"be the following:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:186
+#, no-c-format
+msgid ""
+"@In EntityManager entityManager;\n"
+"\n"
+"@Create\n"
+"public void init() {\n"
+"    ( (Session) entityManager.getDelegate() ).enableFilter(\"currentVersions"
+"\");\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:187
+#, no-c-format
+msgid ""
+"But typecasts are unquestionably the ugliest syntax in the Java language, so "
+"most people avoid them whenever possible. Here's a different way to get at "
+"the delegate. First, add the following line to <literal>components.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:190
+#, no-c-format
+msgid ""
+"&lt;factory name=\"session\" \n"
+"         scope=\"STATELESS\" \n"
+"         auto-create=\"true\" \n"
+"         value=\"#{entityManager.delegate}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:191
+#, no-c-format
+msgid "Now we can inject the session directly:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:194
+#, no-c-format
+msgid ""
+"@In Session session;\n"
+"\n"
+"@Create\n"
+"public void init() {\n"
+"    session.enableFilter(\"currentVersions\");\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:198
+#, no-c-format
+msgid "Using EL in EJB-QL/HQL"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:199
+#, no-c-format
+msgid ""
+"Seam proxies the <literal>EntityManager</literal> or <literal>Session</"
+"literal> object whenever you use a Seam-managed persistence context or "
+"inject a container managed persistence context using "
+"<literal>@PersistenceContext</literal>. This lets you use EL expressions in "
+"your query strings, safely and efficiently. For example, this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:202
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=#{user.username}\")\n"
+"         .getSingleResult();"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:203
+#, no-c-format
+msgid "is equivalent to:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:206
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getSingleResult();"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:207
+#, no-c-format
+msgid "Of course, you should never, ever write it like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:210
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=\" + user.getUsername"
+"()) //BAD!\n"
+"         .getSingleResult();"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:211
+#, no-c-format
+msgid "(It is inefficient and vulnerable to SQL injection attacks.)"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:217
+#, no-c-format
+msgid "Using Hibernate filters"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:218
+#, no-c-format
+msgid ""
+"The coolest, and most unique, feature of Hibernate is <emphasis>filters</"
+"emphasis>. Filters let you provide a restricted view of the data in the "
+"database. You can find out more about filters in the Hibernate "
+"documentation. But we thought we'd mention an easy way to incorporate "
+"filters into a Seam application, one that works especially well with the "
+"Seam Application Framework."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:221
+#, no-c-format
+msgid ""
+"Seam-managed persistence contexts may have a list of filters defined, which "
+"will be enabled whenever an <literal>EntityManager</literal> or Hibernate "
+"<literal>Session</literal> is first created. (Of course, they may only be "
+"used when Hibernate is the underlying persistence provider.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:224
+#, no-c-format
+msgid ""
+"&lt;core:filter name=\"regionFilter\"&gt;\n"
+"    &lt;core:name&gt;region&lt;/core:name&gt;\n"
+"    &lt;core:parameters&gt;\n"
+"        &lt;key&gt;regionCode&lt;/key&gt;\n"
+"        &lt;value&gt;#{region.code}&lt;/value&gt;\n"
+"    &lt;/core:parameters&gt;\n"
+"&lt;/core:filter&gt;\n"
+"\n"
+"&lt;core:filter name=\"currentFilter\"&gt;\n"
+"    &lt;core:name&gt;current&lt;/core:name&gt;\n"
+"    &lt;core:parameters&gt;\n"
+"        &lt;key&gt;date&lt;/key&gt;\n"
+"        &lt;value&gt;#{currentDate}&lt;/value&gt;\n"
+"    &lt;/core:parameters&gt;\n"
+"&lt;/core:filter&gt;\n"
+"\n"
+"&lt;core:managed-persistence-context name=\"personDatabase\"\n"
+"    persistence-unit-jndi-name=\"java:/EntityManagerFactories/personDatabase"
+"\"&gt;\n"
+"    &lt;core:filters&gt;\n"
+"        &lt;value&gt;#{regionFilter}&lt;/value&gt;\n"
+"        &lt;value&gt;#{currentFilter}&lt;/value&gt;\n"
+"    &lt;/core:filters&gt;\n"
+"&lt;/core:managed-persistence-context&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Remoting.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Remoting.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Remoting.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1458 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Remoting.xml:10
+#, no-c-format
+msgid "Remoting"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:11
+#, no-c-format
+msgid ""
+"Seam provides a convenient method of remotely accessing components from a "
+"web page, using AJAX (Asynchronous Javascript and XML). The framework for "
+"this functionality is provided with almost no up-front development effort - "
+"your components only require simple annotating to become accessible via "
+"AJAX. This chapter describes the steps required to build an AJAX-enabled web "
+"page, then goes on to explain the features of the Seam Remoting framework in "
+"more detail."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:14 Remoting.xml:296
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:15
+#, no-c-format
+msgid ""
+"To use remoting, the Seam Resource servlet must first be configured in your "
+"<literal>web.xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:18
+#, no-c-format
+msgid ""
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"  &lt;/servlet&gt;\n"
+"\n"
+"  &lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"  &lt;/servlet-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:19
+#, no-c-format
+msgid ""
+"The next step is to import the necessary Javascript into your web page. "
+"There are a minimum of two scripts that must be imported. The first one "
+"contains all the client-side framework code that enables remoting "
+"functionality:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:22
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/resource/"
+"remote.js\"&gt;&lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:23
+#, no-c-format
+msgid ""
+"The second script contains the stubs and type definitions for the components "
+"you wish to call. It is generated dynamically based on the local interface "
+"of your components, and includes type definitions for all of the classes "
+"that can be used to call the remotable methods of the interface. The name of "
+"the script reflects the name of your component. For example, if you have a "
+"stateless session bean annotated with <literal>@Name(\"customerAction\")</"
+"literal>, then your script tag should look like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:26
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?customerAction\"&gt;\n"
+"      &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:27
+#, no-c-format
+msgid ""
+"If you wish to access more than one component from the same page, then "
+"include them all as parameters of your script tag:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:30
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" \n"
+"      src=\"seam/resource/remoting/interface.js?customerAction&amp;"
+"accountAction\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:31
+#, no-c-format
+msgid "The \"Seam\" object"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:32
+#, no-c-format
+msgid ""
+"Client-side interaction with your components is all performed via the "
+"<literal>Seam</literal> Javascript object. This object is defined in "
+"<literal>remote.js</literal>, and you'll be using it to make asynchronous "
+"calls against your component. It is split into two areas of functionality; "
+"<literal>Seam.Component</literal> contains methods for working with "
+"components and <literal>Seam.Remoting</literal> contains methods for "
+"executing remote requests. The easiest way to become familiar with this "
+"object is to start with a simple example."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:35
+#, no-c-format
+msgid "A Hello World example"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:36
+#, no-c-format
+msgid ""
+"Let's step through a simple example to see how the <literal>Seam</literal> "
+"object works. First of all, let's create a new Seam component called "
+"<literal>helloAction</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:39
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"  @Name(\"helloAction\")\n"
+"  public class HelloAction implements HelloLocal {\n"
+"    public String sayHello(String name) {\n"
+"      return \"Hello, \" + name;\n"
+"    }\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:40
+#, no-c-format
+msgid ""
+"You also need to create a local interface for our new component - take "
+"special note of the <literal>@WebRemote</literal> annotation, as it's "
+"required to make our method accessible via remoting:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:43
+#, no-c-format
+msgid ""
+"@Local\n"
+"  public interface HelloLocal {\n"
+"    @WebRemote\n"
+"    public String sayHello(String name);\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:44
+#, no-c-format
+msgid ""
+"That's all the server-side code we need to write. Now for our web page - "
+"create a new page and import the following scripts:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:47
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/resource/"
+"remote.js\"&gt;&lt;/script&gt;\n"
+"  &lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?helloAction\"&gt;&lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:48
+#, no-c-format
+msgid ""
+"To make this a fully interactive user experience, let's add a button to our "
+"page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:51
+#, no-c-format
+msgid ""
+"&lt;button onclick=\"javascript:sayHello()\"&gt;Say Hello&lt;/button&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:52
+#, no-c-format
+msgid ""
+"We'll also need to add some more script to make our button actually do "
+"something when it's clicked:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:55
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\"&gt;\n"
+"    //&lt;![CDATA[\n"
+"\n"
+"    function sayHello() {\n"
+"      var name = prompt(\"What is your name?\");\n"
+"      Seam.Component.getInstance(\"helloAction\").sayHello(name, "
+"sayHelloCallback);\n"
+"    }\n"
+"\n"
+"    function sayHelloCallback(result) {\n"
+"      alert(result);\n"
+"    }\n"
+"\n"
+"    // ]]&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:56
+#, no-c-format
+msgid ""
+"We're done! Deploy your application and browse to your page. Click the "
+"button, and enter a name when prompted. A message box will display the hello "
+"message confirming that the call was successful. If you want to save some "
+"time, you'll find the full source code for this Hello World example in "
+"Seam's <literal>/examples/remoting/helloworld</literal> directory."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:59
+#, no-c-format
+msgid ""
+"So what does the code of our script actually do? Let's break it down into "
+"smaller pieces. To start with, you can see from the Javascript code listing "
+"that we have implemented two methods - the first method is responsible for "
+"prompting the user for their name and then making a remote request. Take a "
+"look at the following line:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:62
+#, no-c-format
+msgid ""
+"Seam.Component.getInstance(\"helloAction\").sayHello(name, sayHelloCallback);"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:63
+#, no-c-format
+msgid ""
+"The first section of this line, <literal>Seam.Component.getInstance"
+"(\"helloAction\")</literal> returns a proxy, or \"stub\" for our "
+"<literal>helloAction</literal> component. We can invoke the methods of our "
+"component against this stub, which is exactly what happens with the "
+"remainder of the line: <literal>sayHello(name, sayHelloCallback);</literal>."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:66
+#, no-c-format
+msgid ""
+"What this line of code in its completeness does, is invoke the "
+"<literal>sayHello</literal> method of our component, passing in "
+"<literal>name</literal> as a parameter. The second parameter, "
+"<literal>sayHelloCallback</literal> isn't a parameter of our component's "
+"<literal>sayHello</literal> method, instead it tells the Seam Remoting "
+"framework that once it receives the response to our request, it should pass "
+"it to the <literal>sayHelloCallback</literal> Javascript method. This "
+"callback parameter is entirely optional, so feel free to leave it out if "
+"you're calling a method with a <literal>void</literal> return type or if you "
+"don't care about the result."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:69
+#, no-c-format
+msgid ""
+"The <literal>sayHelloCallback</literal> method, once receiving the response "
+"to our remote request then pops up an alert message displaying the result of "
+"our method call."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:72
+#, no-c-format
+msgid "Seam.Component"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:73
+#, no-c-format
+msgid ""
+"The <literal>Seam.Component</literal> Javascript object provides a number of "
+"client-side methods for working with your Seam components. The two main "
+"methods, <literal>newInstance()</literal> and <literal>getInstance()</"
+"literal> are documented in the following sections however their main "
+"difference is that <literal>newInstance()</literal> will always create a new "
+"instance of a component type, and <literal>getInstance()</literal> will "
+"return a singleton instance."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:76
+#, no-c-format
+msgid "Seam.Component.newInstance()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:77
+#, no-c-format
+msgid ""
+"Use this method to create a new instance of an entity or Javabean component. "
+"The object returned by this method will have the same getter/setter methods "
+"as its server-side counterpart, or alternatively if you wish you can access "
+"its fields directly. Take the following Seam entity component for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:80
+#, no-c-format
+msgid ""
+"@Name(\"customer\")\n"
+"  @Entity\n"
+"  public class Customer implements Serializable\n"
+"  {\n"
+"    private Integer customerId;\n"
+"    private String firstName;\n"
+"    private String lastName;\n"
+"    \n"
+"    @Column public Integer getCustomerId() { \n"
+"      return customerId; \n"
+"    }\n"
+"    \n"
+"    public void setCustomerId(Integer customerId} { \n"
+"      this.customerId = customerId; \n"
+"    }\n"
+"    \n"
+"    @Column public String getFirstName() { \n"
+"      return firstName; \n"
+"    }\n"
+"    \n"
+"    public void setFirstName(String firstName) {\n"
+"      this.firstName = firstName; \n"
+"    }\n"
+"    \n"
+"    @Column public String getLastName() {\n"
+"      return lastName;\n"
+"    }\n"
+"    \n"
+"    public void setLastName(String lastName) {\n"
+"      this.lastName = lastName;\n"
+"    }\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:81
+#, no-c-format
+msgid "To create a client-side Customer you would write the following code:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:84
+#, no-c-format
+msgid "var customer = Seam.Component.newInstance(\"customer\");"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:85
+#, no-c-format
+msgid "Then from here you can set the fields of the customer object:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:88
+#, no-c-format
+msgid ""
+"customer.setFirstName(\"John\");\n"
+"  // Or you can set the fields directly\n"
+"  customer.lastName = \"Smith\";"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:89
+#, no-c-format
+msgid "Seam.Component.getInstance()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:90
+#, no-c-format
+msgid ""
+"The <literal>getInstance()</literal> method is used to get a reference to a "
+"Seam session bean component stub, which can then be used to remotely execute "
+"methods against your component. This method returns a singleton for the "
+"specified component, so calling it twice in a row with the same component "
+"name will return the same instance of the component."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:93
+#, no-c-format
+msgid ""
+"To continue our example from before, if we have created a new "
+"<literal>customer</literal> and we now wish to save it, we would pass it to "
+"the <literal>saveCustomer()</literal> method of our <literal>customerAction</"
+"literal> component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:96
+#, no-c-format
+msgid "Seam.Component.getInstance(\"customerAction\").saveCustomer(customer);"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:97
+#, no-c-format
+msgid "Seam.Component.getComponentName()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:98
+#, no-c-format
+msgid ""
+"Passing an object into this method will return its component name if it is a "
+"component, or <literal>null</literal> if it is not."
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:101
+#, no-c-format
+msgid ""
+"if (Seam.Component.getComponentName(instance) == \"customer\")\n"
+"    alert(\"Customer\");\n"
+"  else if (Seam.Component.getComponentName(instance) == \"staff\")\n"
+"    alert(\"Staff member\");"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:102
+#, no-c-format
+msgid "Seam.Remoting"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:103
+#, no-c-format
+msgid ""
+"Most of the client side functionality for Seam Remoting is contained within "
+"the <literal>Seam.Remoting</literal> object. While you shouldn't need to "
+"directly call most of its methods, there are a couple of important ones "
+"worth mentioning."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:106
+#, no-c-format
+msgid "Seam.Remoting.createType()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:107
+#, no-c-format
+msgid ""
+"If your application contains or uses Javabean classes that aren't Seam "
+"components, you may need to create these types on the client side to pass as "
+"parameters into your component method. Use the <literal>createType()</"
+"literal> method to create an instance of your type. Pass in the fully "
+"qualified Java class name as a parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:110
+#, no-c-format
+msgid "var widget = Seam.Remoting.createType(\"com.acme.widgets.MyWidget\");"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:111
+#, no-c-format
+msgid "Seam.Remoting.getTypeName()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:112
+#, no-c-format
+msgid ""
+"This method is the equivalent of <literal>Seam.Component.getComponentName()</"
+"literal> but for non-component types. It will return the name of the type "
+"for an object instance, or <literal>null</literal> if the type is not known. "
+"The name is the fully qualified name of the type's Java class."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:115
+#, no-c-format
+msgid "Client Interfaces"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:116
+#, no-c-format
+msgid ""
+"In the configuration section above, the interface, or \"stub\" for our "
+"component is imported into our page via <literal>seam/resource/remoting/"
+"interface.js</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:119
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?customerAction\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:120
+#, no-c-format
+msgid ""
+"By including this script in our page, the interface definitions for our "
+"component, plus any other components or types that are required to execute "
+"the methods of our component are generated and made available for the "
+"remoting framework to use."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:123
+#, no-c-format
+msgid ""
+"There are two types of client stub that can be generated, \"executable\" "
+"stubs and \"type\" stubs. Executable stubs are behavioural, and are used to "
+"execute methods against your session bean components, while type stubs "
+"contain state and represent the types that can be passed in as parameters or "
+"returned as a result."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:126
+#, no-c-format
+msgid ""
+"The type of client stub that is generated depends on the type of your Seam "
+"component. If the component is a session bean, then an executable stub will "
+"be generated, otherwise if it's an entity or JavaBean, then a type stub will "
+"be generated. There is one exception to this rule; if your component is a "
+"JavaBean (ie it is not a session bean nor an entity bean) and any of its "
+"methods are annotated with @WebRemote, then an executable stub will be "
+"generated for it instead of a type stub. This allows you to use remoting to "
+"call methods of your JavaBean components in a non-EJB environment where you "
+"don't have access to session beans."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:130
+#, no-c-format
+msgid "The Context"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:131
+#, no-c-format
+msgid ""
+"The Seam Remoting Context contains additional information which is sent and "
+"received as part of a remoting request/response cycle. At this stage it only "
+"contains the conversation ID but may be expanded in the future."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:134
+#, no-c-format
+msgid "Setting and reading the Conversation ID"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:136
+#, no-c-format
+msgid ""
+"If you intend on using remote calls within the scope of a conversation then "
+"you need to be able to read or set the conversation ID in the Seam Remoting "
+"Context. To read the conversation ID after making a remote request call "
+"<literal>Seam.Remoting.getContext().getConversationId()</literal>. To set "
+"the conversation ID before making a request, call <literal>Seam.Remoting."
+"getContext().setConversationId()</literal>."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:139
+#, no-c-format
+msgid ""
+"If the conversation ID hasn't been explicitly set with <literal>Seam."
+"Remoting.getContext().setConversationId()</literal>, then it will be "
+"automatically assigned the first valid conversation ID that is returned by "
+"any remoting call. If you are working with multiple conversations within "
+"your page, then you may need to explicitly set the conversation ID before "
+"each call. If you are working with just a single conversation, then you "
+"don't need to do anything special."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:145
+#, no-c-format
+msgid "Batch Requests"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:146
+#, no-c-format
+msgid ""
+"Seam Remoting allows multiple component calls to be executed within a single "
+"request. It is recommended that this feature is used wherever it is "
+"appropriate to reduce network traffic."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:149
+#, no-c-format
+msgid ""
+"The method <literal>Seam.Remoting.startBatch()</literal> will start a new "
+"batch, and any component calls executed after starting a batch are queued, "
+"rather than being sent immediately. When all the desired component calls "
+"have been added to the batch, the <literal>Seam.Remoting.executeBatch()</"
+"literal> method will send a single request containing all of the queued "
+"calls to the server, where they will be executed in order. After the calls "
+"have been executed, a single response containining all return values will be "
+"returned to the client and the callback functions (if provided) triggered in "
+"the same order as execution."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:152
+#, no-c-format
+msgid ""
+"If you start a new batch via the <literal>startBatch()</literal> method but "
+"then decide you don't want to send it, the <literal>Seam.Remoting.cancelBatch"
+"()</literal> method will discard any calls that were queued and exit the "
+"batch mode."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:155
+#, no-c-format
+msgid ""
+"To see an example of a batch being used, take a look at <literal>/examples/"
+"remoting/chatroom</literal>."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:159
+#, no-c-format
+msgid "Working with Data types"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:160
+#, no-c-format
+msgid "Primitives / Basic Types"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:161
+#, no-c-format
+msgid ""
+"This section describes the support for basic data types. On the server side "
+"these values are generally compatible with either their primitive type or "
+"their corresponding wrapper class."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:164
+#, no-c-format
+msgid "String"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:165
+#, no-c-format
+msgid ""
+"Simply use Javascript String objects when setting String parameter values."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:168
+#, no-c-format
+msgid "Number"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:169
+#, no-c-format
+msgid ""
+"There is support for all number types supported by Java. On the client side, "
+"number values are always serialized as their String representation and then "
+"on the server side they are converted to the correct destination type. "
+"Conversion into either a primitive or wrapper type is supported for "
+"<literal>Byte</literal>, <literal>Double</literal>, <literal>Float</"
+"literal>, <literal>Integer</literal>, <literal>Long</literal> and "
+"<literal>Short</literal> types."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:172
+#, no-c-format
+msgid "Boolean"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:173
+#, no-c-format
+msgid ""
+"Booleans are represented client side by Javascript Boolean values, and "
+"server side by a Java boolean."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:176
+#, no-c-format
+msgid "JavaBeans"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:177
+#, no-c-format
+msgid ""
+"In general these will be either Seam entity or JavaBean components, or some "
+"other non-component class. Use the appropriate method (either <literal>Seam."
+"Component.newInstance()</literal> for Seam components or <literal>Seam."
+"Remoting.createType()</literal> for everything else) to create a new "
+"instance of the object."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:180
+#, no-c-format
+msgid ""
+"It is important to note that only objects that are created by either of "
+"these two methods should be used as parameter values, where the parameter is "
+"not one of the other valid types mentioned anywhere else in this section. In "
+"some situations you may have a component method where the exact parameter "
+"type cannot be determined, such as:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:183
+#, no-c-format
+msgid ""
+"@Name(\"myAction\")\n"
+"  public class MyAction implements MyActionLocal {\n"
+"    public void doSomethingWithObject(Object obj) {\n"
+"      // code\n"
+"    }\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:184
+#, no-c-format
+msgid ""
+"In this case you might want to pass in an instance of your "
+"<literal>myWidget</literal> component, however the interface for "
+"<literal>myAction</literal> won't include <literal>myWidget</literal> as it "
+"is not directly referenced by any of its methods. To get around this, "
+"<literal>MyWidget</literal> needs to be explicitly imported:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:187
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?myAction&amp;myWidget\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:188
+#, no-c-format
+msgid ""
+"This will then allow a <literal>myWidget</literal> object to be created with "
+"<literal>Seam.Component.newInstance(\"myWidget\")</literal>, which can then "
+"be passed to <literal>myAction.doSomethingWithObject()</literal>."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:191
+#, no-c-format
+msgid "Dates and Times"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:192
+#, no-c-format
+msgid ""
+"Date values are serialized into a String representation that is accurate to "
+"the millisecond. On the client side, use a Javascript Date object to work "
+"with date values. On the server side, use any <literal>java.util.Date</"
+"literal> (or descendent, such as <literal>java.sql.Date</literal> or "
+"<literal>java.sql.Timestamp</literal> class."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:195
+#, no-c-format
+msgid "Enums"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:196
+#, no-c-format
+msgid ""
+"On the client side, enums are treated the same as Strings. When setting the "
+"value for an enum parameter, simply use the String representation of the "
+"enum. Take the following component as an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:199
+#, no-c-format
+msgid ""
+"@Name(\"paintAction\")\n"
+"  public class paintAction implements paintLocal {\n"
+"    public enum Color {red, green, blue, yellow, orange, purple};\n"
+"\n"
+"    public void paint(Color color) {\n"
+"      // code\n"
+"    }    \n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:200
+#, no-c-format
+msgid ""
+"To call the <literal>paint()</literal> method with the color <literal>red</"
+"literal>, pass the parameter value as a String literal:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:203
+#, no-c-format
+msgid "Seam.Component.getInstance(\"paintAction\").paint(\"red\");"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:204
+#, no-c-format
+msgid ""
+"The inverse is also true - that is, if a component method returns an enum "
+"parameter (or contains an enum field anywhere in the returned object graph) "
+"then on the client-side it will be represented as a String."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:207
+#, no-c-format
+msgid "Collections"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:208
+#, no-c-format
+msgid "Bags"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:209
+#, no-c-format
+msgid ""
+"Bags cover all collection types including arrays, collections, lists, sets, "
+"(but excluding Maps - see the next section for those), and are implemented "
+"client-side as a Javascript array. When calling a component method that "
+"accepts one of these types as a parameter, your parameter should be a "
+"Javascript array. If a component method returns one of these types, then the "
+"return value will also be a Javascript array. The remoting framework is "
+"clever enough on the server side to convert the bag to an appropriate type "
+"for the component method call."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:212
+#, no-c-format
+msgid "Maps"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:213
+#, no-c-format
+msgid ""
+"As there is no native support for Maps within Javascript, a simple Map "
+"implementation is provided with the Seam Remoting framework. To create a Map "
+"which can be used as a parameter to a remote call, create a new "
+"<literal>Seam.Remoting.Map</literal> object:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:216
+#, no-c-format
+msgid "var map = new Seam.Remoting.Map();"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:217
+#, no-c-format
+msgid ""
+"This Javascript implementation provides basic methods for working with Maps: "
+"<literal>size()</literal>, <literal>isEmpty()</literal>, <literal>keySet()</"
+"literal>, <literal>values()</literal>, <literal>get(key)</literal>, "
+"<literal>put(key, value)</literal>, <literal>remove(key)</literal> and "
+"<literal>contains(key)</literal>. Each of these methods are equivalent to "
+"their Java counterpart. Where the method returns a collection, such as "
+"<literal>keySet()</literal> and <literal>values()</literal>, a Javascript "
+"Array object will be returned that contains the key or value objects "
+"(respectively)."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:220
+#, no-c-format
+msgid "Debugging"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:221
+#, no-c-format
+msgid ""
+"To aid in tracking down bugs, it is possible to enable a debug mode which "
+"will display the contents of all the packets send back and forth between the "
+"client and server in a popup window. To enable debug mode, either execute "
+"the <literal>setDebug()</literal> method in Javascript:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:224
+#, no-c-format
+msgid "Seam.Remoting.setDebug(true);"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:225
+#, no-c-format
+msgid "Or configure it via components.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:228
+#, no-c-format
+msgid "&lt;remoting:remoting debug=\"true\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:229
+#, no-c-format
+msgid ""
+"To turn off debugging, call <literal>setDebug(false)</literal>. If you want "
+"to write your own messages to the debug log, call <literal>Seam.Remoting.log"
+"(message)</literal>."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:233
+#, no-c-format
+msgid "The Loading Message"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:234
+#, no-c-format
+msgid ""
+"The default loading message that appears in the top right corner of the "
+"screen can be modified, its rendering customised or even turned off "
+"completely."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:237
+#, no-c-format
+msgid "Changing the message"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:238
+#, no-c-format
+msgid ""
+"To change the message from the default \"Please Wait...\" to something "
+"different, set the value of <literal>Seam.Remoting.loadingMessage</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:241
+#, no-c-format
+msgid "Seam.Remoting.loadingMessage = \"Loading...\";"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:243
+#, no-c-format
+msgid "Hiding the loading message"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:244
+#, no-c-format
+msgid ""
+"To completely suppress the display of the loading message, override the "
+"implementation of <literal>displayLoadingMessage()</literal> and "
+"<literal>hideLoadingMessage()</literal> with functions that instead do "
+"nothing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:247
+#, no-c-format
+msgid ""
+"// don't display the loading indicator\n"
+"  Seam.Remoting.displayLoadingMessage = function() {};\n"
+"  Seam.Remoting.hideLoadingMessage = function() {};"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:248
+#, no-c-format
+msgid "A Custom Loading Indicator"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:249
+#, no-c-format
+msgid ""
+"It is also possible to override the loading indicator to display an animated "
+"icon, or anything else that you want. To do this override the "
+"<literal>displayLoadingMessage()</literal> and <literal>hideLoadingMessage()"
+"</literal> messages with your own implementation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:252
+#, no-c-format
+msgid ""
+"Seam.Remoting.displayLoadingMessage = function() {\n"
+"    // Write code here to display the indicator\n"
+"  };\n"
+"  \n"
+"  Seam.Remoting.hideLoadingMessage = function() {\n"
+"    // Write code here to hide the indicator\n"
+"  };"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:253
+#, no-c-format
+msgid "Controlling what data is returned"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:254
+#, no-c-format
+msgid ""
+"When a remote method is executed, the result is serialized into an XML "
+"response that is returned to the client. This response is then unmarshaled "
+"by the client into a Javascript object. For complex types (i.e. Javabeans) "
+"that include references to other objects, all of these referenced objects "
+"are also serialized as part of the response. These objects may reference "
+"other objects, which may reference other objects, and so forth. If left "
+"unchecked, this object \"graph\" could potentially be enormous, depending on "
+"what relationships exist between your objects. And as a side issue (besides "
+"the potential verbosity of the response), you might also wish to prevent "
+"sensitive information from being exposed to the client."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:257
+#, no-c-format
+msgid ""
+"Seam Remoting provides a simple means to \"constrain\" the object graph, by "
+"specifying the <literal>exclude</literal> field of the remote method's "
+"<literal>@WebRemote</literal> annotation. This field accepts a String array "
+"containing one or more paths specified using dot notation. When invoking a "
+"remote method, the objects in the result's object graph that match these "
+"paths are excluded from the serialized result packet."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:260
+#, no-c-format
+msgid ""
+"For all our examples, we'll use the following <literal>Widget</literal> "
+"class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:263
+#, no-c-format
+msgid ""
+"@Name(\"widget\")\n"
+"public class Widget\n"
+"{\n"
+"  private String value;\n"
+"  private String secret;\n"
+"  private Widget child;\n"
+"  private Map&lt;String,Widget&gt; widgetMap;\n"
+"  private List&lt;Widget&gt; widgetList;\n"
+"  \n"
+"  // getters and setters for all fields\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:264
+#, no-c-format
+msgid "Constraining normal fields"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:265
+#, no-c-format
+msgid ""
+"If your remote method returns an instance of <literal>Widget</literal>, but "
+"you don't want to expose the <literal>secret</literal> field because it "
+"contains sensitive information, you would constrain it like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:268
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:269
+#, no-c-format
+msgid ""
+"The value \"secret\" refers to the <literal>secret</literal> field of the "
+"returned object. Now, suppose that we don't care about exposing this "
+"particular field to the client. Instead, notice that the <literal>Widget</"
+"literal> value that is returned has a field <literal>child</literal> that is "
+"also a <literal>Widget</literal>. What if we want to hide the "
+"<literal>child</literal>'s <literal>secret</literal> value instead? We can "
+"do this by using dot notation to specify this field's path within the "
+"result's object graph:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:272
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"child.secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:273
+#, no-c-format
+msgid "Constraining Maps and Collections"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:274
+#, no-c-format
+msgid ""
+"The other place that objects can exist within an object graph are within a "
+"<literal>Map</literal> or some kind of collection (<literal>List</literal>, "
+"<literal>Set</literal>, <literal>Array</literal>, etc). Collections are "
+"easy, and are treated like any other field. For example, if our "
+"<literal>Widget</literal> contained a list of other <literal>Widget</"
+"literal>s in its <literal>widgetList</literal> field, to constrain the "
+"<literal>secret</literal> field of the <literal>Widget</literal>s in this "
+"list the annotation would look like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:277
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetList.secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:278
+#, no-c-format
+msgid ""
+"To constrain a <literal>Map</literal>'s key or value, the notation is "
+"slightly different. Appending <literal>[key]</literal> after the "
+"<literal>Map</literal>'s field name will constrain the <literal>Map</"
+"literal>'s key object values, while <literal>[value]</literal> will "
+"constrain the value object values. The following example demonstrates how "
+"the values of the <literal>widgetMap</literal> field have their "
+"<literal>secret</literal> field constrained:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:281
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetMap[value].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:282
+#, no-c-format
+msgid "Constraining objects of a specific type"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:283
+#, no-c-format
+msgid ""
+"There is one last notation that can be used to constrain the fields of a "
+"type of object no matter where in the result's object graph it appears. This "
+"notation uses either the name of the component (if the object is a Seam "
+"component) or the fully qualified class name (only if the object is not a "
+"Seam component) and is expressed using square brackets:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:286
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"[widget].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:287
+#, no-c-format
+msgid "Combining Constraints"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:288
+#, no-c-format
+msgid ""
+"Constraints can also be combined, to filter objects from multiple paths "
+"within the object graph:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:291
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetList.secret\", \"widgetMap[value].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:292
+#, no-c-format
+msgid "JMS Messaging"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:293
+#, no-c-format
+msgid ""
+"Seam Remoting provides experimental support for JMS Messaging. This section "
+"describes the JMS support that is currently implemented, but please note "
+"that this may change in the future. It is currently not recommended that "
+"this feature is used within a production environment."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:297
+#, no-c-format
+msgid ""
+"Before you can subscribe to a JMS topic, you must first configure a list of "
+"the topics that can be subscribed to by Seam Remoting. List the topics under "
+"<literal>org.jboss.seam.remoting.messaging.subscriptionRegistry."
+"allowedTopics</literal> in <literal>seam.properties</literal>, <literal>web."
+"xml</literal> or <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:300 Remoting.xml:333
+#, no-c-format
+msgid "&lt;remoting:remoting poll-timeout=\"5\" poll-interval=\"1\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:301
+#, no-c-format
+msgid "Subscribing to a JMS Topic"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:302
+#, no-c-format
+msgid "The following example demonstrates how to subscribe to a JMS Topic:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:305
+#, no-c-format
+msgid ""
+"function subscriptionCallback(message)\n"
+"  {\n"
+"    if (message instanceof Seam.Remoting.TextMessage)\n"
+"      alert(\"Received message: \" + message.getText());\n"
+"  }        \n"
+"        \n"
+"  Seam.Remoting.subscribe(\"topicName\", subscriptionCallback);"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:306
+#, no-c-format
+msgid ""
+"The <literal>Seam.Remoting.subscribe()</literal> method accepts two "
+"parameters, the first being the name of the JMS Topic to subscribe to, the "
+"second being the callback function to invoke when a message is received."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:309
+#, no-c-format
+msgid ""
+"There are two types of messages supported, Text messages and Object "
+"messages. If you need to test for the type of message that is passed to your "
+"callback function you can use the <literal>instanceof</literal> operator to "
+"test whether the message is a <literal>Seam.Remoting.TextMessage</literal> "
+"or <literal>Seam.Remoting.ObjectMessage</literal>. A <literal>TextMessage</"
+"literal> contains the text value in its <literal>text</literal> field (or "
+"alternatively call <literal>getText()</literal> on it), while an "
+"<literal>ObjectMessage</literal> contains its object value in its "
+"<literal>object</literal> field (or call its <literal>getObject()</literal> "
+"method)."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:312
+#, no-c-format
+msgid "Unsubscribing from a Topic"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:313
+#, no-c-format
+msgid ""
+"To unsubscribe from a topic, call <literal>Seam.Remoting.unsubscribe()</"
+"literal> and pass in the topic name:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:316
+#, no-c-format
+msgid "Seam.Remoting.unsubscribe(\"topicName\");"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:317
+#, no-c-format
+msgid "Tuning the Polling Process"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:318
+#, no-c-format
+msgid ""
+"There are two parameters which you can modify to control how polling occurs. "
+"The first one is <literal>Seam.Remoting.pollInterval</literal>, which "
+"controls how long to wait between subsequent polls for new messages. This "
+"parameter is expressed in seconds, and its default setting is 10."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:321
+#, no-c-format
+msgid ""
+"The second parameter is <literal>Seam.Remoting.pollTimeout</literal>, and is "
+"also expressed as seconds. It controls how long a request to the server "
+"should wait for a new message before timing out and sending an empty "
+"response. Its default is 0 seconds, which means that when the server is "
+"polled, if there are no messages ready for delivery then an empty response "
+"will be immediately returned."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:324
+#, no-c-format
+msgid ""
+"Caution should be used when setting a high <literal>pollTimeout</literal> "
+"value; each request that has to wait for a message means that a server "
+"thread is tied up until a message is received, or until the request times "
+"out. If many such requests are being served simultaneously, it could mean a "
+"large number of threads become tied up because of this reason."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:327
+#, no-c-format
+msgid ""
+"It is recommended that you set these options via components.xml, however "
+"they can be overridden via Javascript if desired. The following example "
+"demonstrates how to configure the polling to occur much more aggressively. "
+"You should set these parameters to suitable values for your application:"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:330
+#, no-c-format
+msgid "Via components.xml:"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:334
+#, no-c-format
+msgid "Via JavaScript:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:337
+#, no-c-format
+msgid ""
+"// Only wait 1 second between receiving a poll response and sending the next "
+"poll request.\n"
+"  Seam.Remoting.pollInterval = 1;\n"
+"  \n"
+"  // Wait up to 5 seconds on the server for new messages\n"
+"  Seam.Remoting.pollTimeout = 5;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Security.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Security.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Security.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1676 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Security.xml:10
+#, no-c-format
+msgid "Security"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:11
+#, no-c-format
+msgid ""
+"The Seam Security API is an optional Seam feature that provides "
+"authentication and authorization features for securing both domain and page "
+"resources within your Seam project."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:14
+#, no-c-format
+msgid "Overview"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:15
+#, no-c-format
+msgid "Seam Security provides two different modes of operation:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:20
+#, no-c-format
+msgid ""
+"<emphasis>simplified mode</emphasis> - this mode supports authentication "
+"services and simple role-based security checks."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:25
+#, no-c-format
+msgid ""
+"<emphasis>advanced mode</emphasis> - this mode supports all the same "
+"features as the simplified mode, plus it offers rule-based security checks "
+"using JBoss Rules."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:30
+#, no-c-format
+msgid "Which mode is right for my application?"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:31
+#, no-c-format
+msgid ""
+"That all depends on the requirements of your application. If you have "
+"minimal security requirements, for example if you only wish to restrict "
+"certain pages and actions to users who are logged in, or who belong to a "
+"certain role, then the simplified mode will probably be sufficient. The "
+"advantages of this is a more simplified configuration, significantly less "
+"libraries to include, and a smaller memory footprint."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:34
+#, no-c-format
+msgid ""
+"If on the other hand, your application requires security checks based on "
+"contextual state or complex business rules, then you will require the "
+"features provided by the advanced mode."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:37
+#, no-c-format
+msgid "Requirements"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:38
+#, no-c-format
+msgid ""
+"If using the advanced mode features of Seam Security, the following jar "
+"files are required to be configured as modules in <literal>application.xml</"
+"literal>. If you are using Seam Security in simplified mode, these are "
+"<emphasis>not</emphasis> required:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:43
+#, no-c-format
+msgid "drools-compiler-3.0.5.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:48
+#, no-c-format
+msgid "drools-core-3.0.5.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:53
+#, no-c-format
+msgid "commons-jci-core-1.0-406301.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:58
+#, no-c-format
+msgid "commons-jci-janino-2.4.3.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:63
+#, no-c-format
+msgid "commons-lang-2.1.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:68
+#, no-c-format
+msgid "janino-2.4.3.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:73
+#, no-c-format
+msgid "stringtemplate-2.3b6.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:78
+#, no-c-format
+msgid "antlr-2.7.6.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:83
+#, no-c-format
+msgid "antlr-3.0ea8.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:88
+#, no-c-format
+msgid ""
+"For web-based security, <literal>jboss-seam-ui.jar</literal> must also be "
+"included in the application's war file. Also, to make use of the security EL "
+"functions, <literal>SeamFaceletViewHandler</literal> must be used. Configure "
+"it in <literal>faces-config.xml</literal> like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:91
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;view-handler&gt;org.jboss.seam.ui.facelet.SeamFaceletViewHandler&lt;/"
+"view-handler&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:92
+#, no-c-format
+msgid "Authentication"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:93
+#, no-c-format
+msgid ""
+"The authentication features provided by Seam Security are built upon JAAS "
+"(Java Authentication and Authorization Service), and as such provide a "
+"robust and highly configurable API for handling user authentication. "
+"However, for less complex authentication requirements Seam offers a much "
+"more simplified method of authentication that hides the complexity of JAAS."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:96
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:97
+#, no-c-format
+msgid ""
+"The simplified authentication method uses a built-in JAAS login module, "
+"<literal>SeamLoginModule</literal>, which delegates authentication to one of "
+"your own Seam components. This login module is already configured inside "
+"Seam as part of a default application policy and as such does not require "
+"any additional configuration files. It allows you to write an authentication "
+"method using the entity classes that are provided by your own application. "
+"Configuring this simplified form of authentication requires the "
+"<literal>identity</literal> component to be configured in "
+"<literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:100
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:security=\"http://jboss.com/products/seam/security\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core http://jboss.com/"
+"products/seam/core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components http://jboss.com/"
+"products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/drools http://jboss.com/"
+"products/seam/drools-1.2.xsd\"\n"
+"                 http://jboss.com/products/seam/security http://jboss.com/"
+"products/seam/security-1.2.xsd\"&gt;                \n"
+"        \n"
+"    &lt;security:identity authenticate-method=\"#{authenticator.authenticate}"
+"\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:101
+#, no-c-format
+msgid ""
+"If you wish to use the advanced security features such as rule-based "
+"permission checks, all you need to do is include the Drools (JBoss Rules) "
+"jars in your classpath, and add some additional configuration, described "
+"later."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:104
+#, no-c-format
+msgid ""
+"The EL expression <literal>#{authenticator.authenticate}</literal> is a "
+"method binding indicating that the <literal>authenticate</literal> method of "
+"the <literal>authenticator</literal> component will be used to authenticate "
+"the user."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:107
+#, no-c-format
+msgid "Writing an authentication method"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:108
+#, no-c-format
+msgid ""
+"The <literal>authenticate-method</literal> property specified for "
+"<literal>identity</literal> in <literal>components.xml</literal> specifies "
+"which method will be used by <literal>SeamLoginModule</literal> to "
+"authenticate users. This method takes no parameters, and is expected to "
+"return a boolean indicating whether authentication is successful or not. The "
+"user's username and password can be obtained from <literal>Identity.instance"
+"().getUsername()</literal> and <literal>Identity.instance().getPassword()</"
+"literal>, respectively. Any roles that the user is a member of should be "
+"assigned using <literal>Identity.instance().addRole()</literal>. Here's a "
+"complete example of an authentication method inside a JavaBean component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:111
+#, no-c-format
+msgid ""
+"@Name(\"authenticator\")\n"
+"public class Authenticator {\n"
+"   @In EntityManager entityManager;\n"
+"   \n"
+"   public boolean authenticate() {\n"
+"      try\n"
+"      {\n"
+"         User user = (User) entityManager.createQuery(\n"
+"            \"from User where username = :username and password = :password"
+"\")\n"
+"            .setParameter(\"username\", Identity.instance().getUsername())\n"
+"            .setParameter(\"password\", Identity.instance().getPassword())\n"
+"            .getSingleResult();\n"
+"\n"
+"         if (user.getRoles() != null)\n"
+"         {\n"
+"            for (UserRole mr : user.getRoles())\n"
+"               Identity.instance().addRole(mr.getName());\n"
+"         }\n"
+"\n"
+"         return true;\n"
+"      }\n"
+"      catch (NoResultException ex)\n"
+"      {\n"
+"         FacesMessages.instance().add(\"Invalid username/password\");\n"
+"         return false;\n"
+"      }\n"
+"      \n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:112
+#, no-c-format
+msgid ""
+"In the above example, both <literal>User</literal> and <literal>UserRole</"
+"literal> are application-specific entity beans. The <literal>roles</literal> "
+"parameter is populated with the roles that the user is a member of, which "
+"should be added to the <literal>Set</literal> as literal string values, e.g. "
+"\"admin\", \"user\". In this case, if the user record is not found and a "
+"<literal>NoResultException</literal> thrown, the authentication method "
+"returns <literal>false</literal> to indicate the authentication failed."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:115
+#, no-c-format
+msgid "Writing a login form"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:116
+#, no-c-format
+msgid ""
+"The <literal>Identity</literal> component provides both <literal>username</"
+"literal> and <literal>password</literal> properties, catering for the most "
+"common authentication scenario. These properties can be bound directly to "
+"the username and password fields on a login form. Once these properties are "
+"set, calling the <literal>identity.login()</literal> method will "
+"authenticate the user using the provided credentials. Here's an example of a "
+"simple login form:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:119
+#, no-c-format
+msgid ""
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"name\" value=\"Username\"/&gt;\n"
+"    &lt;h:inputText id=\"name\" value=\"#{identity.username}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"password\" value=\"Password\"/&gt;\n"
+"    &lt;h:inputSecret id=\"password\" value=\"#{identity.password}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;div&gt;\n"
+"    &lt;h:commandButton value=\"Login\" action=\"#{identity.login}\"/&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:120
+#, no-c-format
+msgid ""
+"Similarly, logging out the user is done by calling <literal>#{identity."
+"logout}</literal>. Calling this action will clear the security state of the "
+"currently authenticated user."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:123
+#, no-c-format
+msgid "Simplified Configuration - Summary"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:124
+#, no-c-format
+msgid ""
+"So to sum up, there are the three easy steps to configure authentication:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:129
+#, no-c-format
+msgid ""
+"Configure an authentication method in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:134
+#, no-c-format
+msgid "Write an authentication method."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:139
+#, no-c-format
+msgid "Write a login form so that the user can authenticate."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:144
+#, no-c-format
+msgid "Handling Security Exceptions"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:145
+#, no-c-format
+msgid ""
+"To prevent users from receiving the default error page in response to a "
+"security error, it's recommended that <literal>pages.xml</literal> is "
+"configured to redirect security errors to a more \"pretty\" page. The two "
+"main types of exceptions thrown by the security API are:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:150
+#, no-c-format
+msgid ""
+"<literal>NotLoggedInException</literal> - This exception is thrown if the "
+"user attempts to access a restricted action or page when they are not logged "
+"in."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:155
+#, no-c-format
+msgid ""
+"<literal>AuthorizationException</literal> - This exception is only thrown if "
+"the user is already logged in, and they have attempted to access a "
+"restricted action or page for which they do not have the necessary "
+"privileges."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:160
+#, no-c-format
+msgid ""
+"In the case of a <literal>NotLoggedInException</literal>, it is recommended "
+"that the user is redirected to either a login or registration page so that "
+"they can log in. For an <literal>AuthorizationException</literal>, it may be "
+"useful to redirect the user to an error page. Here's an example of a "
+"<literal>pages.xml</literal> file that redirects both of these security "
+"exceptions:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:163
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"\n"
+"    ...\n"
+"    \n"
+"    &lt;exception class=\"org.jboss.seam.security.NotLoggedInException"
+"\"&gt;\n"
+"        &lt;redirect view-id=\"/login.xhtml\"&gt;\n"
+"            &lt;message&gt;You must be logged in to perform this action&lt;/"
+"message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"    \n"
+"    &lt;exception class=\"org.jboss.seam.security.AuthorizationException"
+"\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"        &lt;redirect view-id=\"/security_error.xhtml\"&gt;\n"
+"            &lt;message&gt;\n"
+"                You do not have the necessary security privileges to perform "
+"this action.\n"
+"            &lt;/message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"  \n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:164
+#, no-c-format
+msgid ""
+"Most web applications require even more sophisticated handling of login "
+"redirection, so Seam includes some special functionality for handling this "
+"problem."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:167
+#, no-c-format
+msgid "Login Redirection"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:168
+#, no-c-format
+msgid ""
+"You can ask Seam to redirect the user to a login screen when an "
+"unauthenticated user tries to access a particular view (or wildcarded view "
+"id) as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:171
+#, no-c-format
+msgid ""
+"&lt;pages login-view-id=\"/login.xhtml\"&gt;\n"
+"\n"
+"    &lt;page view-id=\"/members/*\" login-required=\"true\"/&gt;\n"
+"    \n"
+"    ...\n"
+"    \n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:172
+#, no-c-format
+msgid ""
+"(This is less of a blunt instrument than the exception handler shown above, "
+"but should probably be used in conjunction with it.)"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:175
+#, no-c-format
+msgid ""
+"After the user logs in, we want to automatically send them back where they "
+"came from, so they can retry the action that required logging in. If you add "
+"the following event listeners to <literal>components.xml</literal>, attempts "
+"to access a restricted view while not logged in will be remembered, so that "
+"upon the user successfully logging in they will be redirected to the "
+"originally requested view, with any page parameters that existed in the "
+"original request."
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:178
+#, no-c-format
+msgid ""
+"&lt;event type=\"org.jboss.seam.notLoggedIn\"&gt;\n"
+"    &lt;action expression=\"#{redirect.captureCurrentView}\"/&gt;\n"
+"&lt;/event&gt;\n"
+"    \n"
+"&lt;event type=\"org.jboss.seam.postAuthenticate\"&gt;\n"
+"    &lt;action expression=\"#{redirect.returnToCapturedView}\"/&gt;\n"
+"&lt;/event&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:179
+#, no-c-format
+msgid ""
+"Note that login redirection is implemented as a conversation-scoped "
+"mechanism, so don't end the conversation in your <literal>authenticate()</"
+"literal> method."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:182
+#, no-c-format
+msgid "Advanced Authentication Features"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:183
+#, no-c-format
+msgid ""
+"This section explores some of the advanced features provided by the security "
+"API for addressing more complex security requirements."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:186
+#, no-c-format
+msgid "Using your container's JAAS configuration"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:187
+#, no-c-format
+msgid ""
+"If you would rather not use the simplified JAAS configuration provided by "
+"the Seam Security API, you may instead delegate to the default system JAAS "
+"configuration by providing a <literal>jaasConfigName</literal> property in "
+"<literal>components.xml</literal>. For example, if you are using JBoss AS "
+"and wish to use the <literal>other</literal> policy (which uses the "
+"<literal>UsersRolesLoginModule</literal> login module provided by JBoss AS), "
+"then the entry in <literal>components.xml</literal> would look like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:190
+#, no-c-format
+msgid ""
+"&lt;security:identity authenticate-method=\"#{authenticator.authenticate}"
+"\" \n"
+"                      jaas-config-name=\"other\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:191
+#, no-c-format
+msgid "Authorization"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:192
+#, no-c-format
+msgid ""
+"There are a number of authorization features provided by the Seam Security "
+"API for securing access to components, component methods, and pages. This "
+"section describes each of these. An important thing to note is that if you "
+"wish to use any of the advanced features (such as rule-based permissions) "
+"then your <literal>components.xml</literal> must be configured to support "
+"this - see the Configuration section above."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:195
+#, no-c-format
+msgid "Core concepts"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:196
+#, no-c-format
+msgid ""
+"Each of the authorization mechanisms provided by the Seam Security API are "
+"built upon the concept of a user being granted roles and/or permissions. A "
+"role is a <emphasis>group</emphasis>, or <emphasis>type</emphasis>, of user "
+"that may have been granted certain privileges for performing one or more "
+"specific actions within an application. A permission on the other hand is a "
+"privilege (sometimes once-off) for performing a single, specific action. It "
+"is entirely possible to build an application using nothing but permissions, "
+"however roles offer a higher level of convenience when granting privileges "
+"to groups of users."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:199
+#, no-c-format
+msgid ""
+"Roles are simple, consisting of only a name such as \"admin\", \"user\", "
+"\"customer\", etc. Permissions consist of both a name and an action, and are "
+"represented within this documentation in the form <literal>name:action</"
+"literal>, for example <literal>customer:delete</literal>, or "
+"<literal>customer:insert</literal>."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:202
+#, no-c-format
+msgid "Securing components"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:203
+#, no-c-format
+msgid ""
+"Let's start by examining the simplest form of authorization, component "
+"security, starting with the <literal>@Restrict</literal> annotation."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:206
+#, no-c-format
+msgid "The @Restrict annotation"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:207
+#, no-c-format
+msgid ""
+"Seam components may be secured either at the method or the class level, "
+"using the <literal>@Restrict</literal> annotation. If both a method and it's "
+"declaring class are annotated with <literal>@Restrict</literal>, the method "
+"restriction will take precedence (and the class restriction will not apply). "
+"If a method invocation fails a security check, then an exception will be "
+"thrown as per the contract for <literal>Identity.checkRestriction()</"
+"literal> (see Inline Restrictions). A <literal>@Restrict</literal> on just "
+"the component class itself is equivalent to adding <literal>@Restrict</"
+"literal> to each of its methods."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:210
+#, no-c-format
+msgid ""
+"An empty <literal>@Restrict</literal> implies a permission check of "
+"<literal>componentName:methodName</literal>. Take for example the following "
+"component method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:213
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class AccountAction {\n"
+"    @Restrict public void delete() {\n"
+"      ...\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:214
+#, no-c-format
+msgid ""
+"In this example, the implied permission required to call the <literal>delete"
+"()</literal> method is <literal>account:delete</literal>. The equivalent of "
+"this would be to write <literal>@Restrict(\"#{s:hasPermission"
+"('account','delete',null)}\")</literal>. Now let's look at another example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:217
+#, no-c-format
+msgid ""
+"@Restrict @Name(\"account\")\n"
+"public class AccountAction {\n"
+"    public void insert() {\n"
+"      ...\n"
+"    }\n"
+"    @Restrict(\"#{s:hasRole('admin')}\") \n"
+"    public void delete() {\n"
+"      ...\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:218
+#, no-c-format
+msgid ""
+"This time, the component class itself is annotated with <literal>@Restrict</"
+"literal>. This means that any methods without an overriding "
+"<literal>@Restrict</literal> annotation require an implicit permission "
+"check. In the case of this example, the <literal>insert()</literal> method "
+"requires a permission of <literal>account:insert</literal>, while the "
+"<literal>delete()</literal> method requires that the user is a member of the "
+"<literal>admin</literal> role."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:221
+#, no-c-format
+msgid ""
+"Before we go any further, let's address the <literal>#{s:hasRole()}</"
+"literal> expression seen in the above example. Both <literal>s:hasRole</"
+"literal> and <literal>s:hasPermission</literal> are EL functions, which "
+"delegate to the correspondingly named methods of the <literal>Identity</"
+"literal> class. These functions can be used within any EL expression "
+"throughout the entirety of the security API."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:224
+#, no-c-format
+msgid ""
+"Being an EL expression, the value of the <literal>@Restrict</literal> "
+"annotation may reference any objects that exist within a Seam context. This "
+"is extremely useful when performing permission checks for a specific object "
+"instance. Look at this example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:227
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class AccountAction {\n"
+"    @In Account selectedAccount;\n"
+"    @Restrict(\"#{s:hasPermission('account','modify',selectedAccount)}\")\n"
+"    public void modify() {\n"
+"        selectedAccount.modify();\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:228
+#, no-c-format
+msgid ""
+"The interesting thing to note from this example is the reference to "
+"<literal>selectedAccount</literal> seen within the <literal>hasPermission()</"
+"literal> function call. The value of this variable will be looked up from "
+"within the Seam context, and passed to the <literal>hasPermission()</"
+"literal> method in <literal>Identity</literal>, which in this case can then "
+"determine if the user has the required permission for modifying the "
+"specified <literal>Account</literal> object."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:231
+#, no-c-format
+msgid "Inline restrictions"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:232
+#, no-c-format
+msgid ""
+"Sometimes it might be desirable to perform a security check in code, without "
+"using the <literal>@Restrict</literal> annotation. In this situation, simply "
+"use <literal>Identity.checkRestriction()</literal> to evaluate a security "
+"expression, like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:235
+#, no-c-format
+msgid ""
+"public void deleteCustomer() {\n"
+"    Identity.instance().checkRestriction(\"#{s:hasPermission"
+"('customer','delete',\n"
+"        selectedCustomer)}\");\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:236
+#, no-c-format
+msgid ""
+"If the expression specified doesn't evaluate to <literal>true</literal>, "
+"either"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:241
+#, no-c-format
+msgid ""
+"if the user is not logged in, a <literal>NotLoggedInException</literal> "
+"exception is thrown or"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:246
+#, no-c-format
+msgid ""
+"if the user is logged in, an <literal>AuthorizationException</literal> "
+"exception is thrown."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:251
+#, no-c-format
+msgid ""
+"It is also possible to call the <literal>hasRole()</literal> and "
+"<literal>hasPermission()</literal> methods directly from Java code:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:254
+#, no-c-format
+msgid ""
+"if (!Identity.instance().hasRole(\"admin\"))\n"
+"     throw new AuthorizationException(\"Must be admin to perform this action"
+"\");\n"
+"\n"
+"if (!Identity.instance().hasPermission(\"customer\", \"create\", null))\n"
+"     throw new AuthorizationException(\"You may not create new customers\");"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:255
+#, no-c-format
+msgid "Security in the user interface"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:256
+#, no-c-format
+msgid ""
+"One indication of a well designed user interface is that the user is not "
+"presented with options for which they don't have the necessary privileges to "
+"use. Seam Security allows conditional rendering of either 1) sections of a "
+"page or 2) individual controls, based upon the privileges of the user, using "
+"the very same EL expressions that are used for component security."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:259
+#, no-c-format
+msgid ""
+"Let's take a look at some examples of interface security. First of all, "
+"let's pretend that we have a login form that should only be rendered if the "
+"user is not already logged in. Using the <literal>identity.isLoggedIn()</"
+"literal> property, we can write this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:262
+#, no-c-format
+msgid ""
+"&lt;h:form class=\"loginForm\" rendered=\"#{not identity.loggedIn}\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:263
+#, no-c-format
+msgid ""
+"If the user isn't logged in, then the login form will be rendered - very "
+"straight forward so far. Now let's pretend there is a menu on the page that "
+"contains some actions which should only be accessible to users in the "
+"<literal>manager</literal> role. Here's one way that these could be written:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:266
+#, no-c-format
+msgid ""
+"&lt;h:outputLink action=\"#{reports.listManagerReports}\" rendered=\"#{s:"
+"hasRole('manager')}\"&gt;\n"
+"    Manager Reports\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:267
+#, no-c-format
+msgid ""
+"This is also quite straight forward. If the user is not a member of the "
+"<literal>manager</literal> role, then the outputLink will not be rendered. "
+"The <literal>rendered</literal> attribute can generally be used on the "
+"control itself, or on a surrounding <literal>&lt;s:div&gt;</literal> or "
+"<literal>&lt;s:span&gt;</literal> control."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:270
+#, no-c-format
+msgid ""
+"Now for something more complex. Let's say you have a <literal>h:dataTable</"
+"literal> control on a page listing records for which you may or may not wish "
+"to render action links depending on the user's privileges. The <literal>s:"
+"hasPermission</literal> EL function allows us to pass in an object parameter "
+"which can be used to determine whether the user has the requested permission "
+"for that object or not. Here's how a dataTable with secured links might look:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:273
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{clients}\" var=\"cl\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Name&lt;/f:facet&gt;\n"
+"        #{cl.name}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;City&lt;/f:facet&gt;\n"
+"        #{cl.city}\n"
+"    &lt;/h:column&gt;   \n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"        &lt;s:link value=\"Modify Client\" action=\"#{clientAction.modify}"
+"\"\n"
+"                rendered=\"#{s:hasPermission('client','modify',cl)\"/&gt;\n"
+"        &lt;s:link value=\"Delete Client\" action=\"#{clientAction.delete}"
+"\"\n"
+"                rendered=\"#{s:hasPermission('client','delete',cl)\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:274
+#, no-c-format
+msgid "Securing pages"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:275
+#, no-c-format
+msgid ""
+"Page security requires that the application is using a <literal>pages.xml</"
+"literal> file, however is extremely simple to configure. Simply include a "
+"<literal>&lt;restrict/&gt;</literal> element within the <literal>page</"
+"literal> elements that you wish to secure. By default, if a value is not "
+"provided for the <literal>restrict</literal> element, an implied permission "
+"of <literal>{viewId}:render</literal> will be checked for whenever accessing "
+"that page. Otherwise the value will be evaluated as a standard security "
+"expression. Here's a couple of examples:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:278
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/settings.xhtml\"&gt;\n"
+"    &lt;restrict/&gt;\n"
+"&lt;/page&gt;\n"
+"        \n"
+"&lt;page view-id=\"/reports.xhtml\"&gt;    \n"
+"    &lt;restrict&gt;#{s:hasRole('admin')}&lt;/restrict&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:279
+#, no-c-format
+msgid ""
+"In the above example, the first page has an implied permission restriction "
+"of <literal>/settings.xhtml:render</literal>, while the second one checks "
+"that the user is a member of the <literal>admin</literal> role."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:282
+#, no-c-format
+msgid "Securing Entities"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:283
+#, no-c-format
+msgid ""
+"Seam security also makes it possible to apply security restrictions to read, "
+"insert, update and delete actions for entities."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:286
+#, no-c-format
+msgid ""
+"To secure all actions for an entity class, add a <literal>@Restrict</"
+"literal> annotation on the class itself:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:289
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"customer\")\n"
+"@Restrict\n"
+"public class Customer {\n"
+"  ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:290
+#, no-c-format
+msgid ""
+"If no expression is specified in the <literal>@Restrict</literal> "
+"annotation, the default security check that is performed is a permission "
+"check of <literal>entityName:action</literal>, where <literal>entityName</"
+"literal> is the name of the entity (or the class name if no @Name is "
+"specified), and the <literal>action</literal> is either <literal>read</"
+"literal>, <literal>insert</literal>, <literal>update</literal> or "
+"<literal>delete</literal>."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:293
+#, no-c-format
+msgid ""
+"It is also possible to only restrict certain actions, by placing a "
+"<literal>@Restrict</literal> annotation on the relevent entity lifecycle "
+"method (annotated as follows):"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:298
+#, no-c-format
+msgid ""
+"<literal>@PostLoad</literal> - Called after an entity instance is loaded "
+"from the database. Use this method to configure a <literal>read</literal> "
+"permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:303
+#, no-c-format
+msgid ""
+"<literal>@PrePersist</literal> - Called before a new instance of the entity "
+"is inserted. Use this method to configure an <literal>insert</literal> "
+"permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:308
+#, no-c-format
+msgid ""
+"<literal>@PreUpdate</literal> - Called before an entity is updated. Use this "
+"method to configure an <literal>update</literal> permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:313
+#, no-c-format
+msgid ""
+"<literal>@PreRemove</literal> - Called before an entity is deleted. Use this "
+"method to configure a <literal>delete</literal> permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:318
+#, no-c-format
+msgid ""
+"Here's an example of how an entity would be configured to perform a security "
+"check for any <literal>insert</literal> operations. Please note that the "
+"method is not required to do anything, the only important thing in regard to "
+"security is how it is annotated:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:321
+#, no-c-format
+msgid ""
+"@PrePersist @Restrict\n"
+"  public void prePersist() {}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:322
+#, no-c-format
+msgid ""
+"And here's an example of an entity permission rule that checks if the "
+"authenticated user is allowed to create a new blog entry (from the seamspace "
+"example):"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:325
+#, no-c-format
+msgid ""
+"rule InsertMemberBlog\n"
+"  no-loop\n"
+"  activation-group \"permissions\"\n"
+"when\n"
+"  c: PermissionCheck(name == \"memberBlog\", action == \"insert\", granted "
+"== false)\n"
+"  Principal(nm : name)\n"
+"  MemberBlog(mbr : member -&gt; (mbr.getUsername().equals(nm)))\n"
+"then\n"
+"  c.grant();\n"
+"  modify(c);\n"
+"end;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:326
+#, no-c-format
+msgid ""
+"Finally, we need to install a listener class that integrates Seam security "
+"with your JPA provider."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:329
+#, no-c-format
+msgid "Entity security with JPA"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:330
+#, no-c-format
+msgid ""
+"Security checks for EJB3 entity beans are performed with an "
+"<literal>EntityListener</literal>. You can install this listener by using "
+"the following <literal>META-INF/orm.xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:333
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;entity-mappings xmlns=\"http://java.sun.com/xml/ns/persistence/orm\"\n"
+"                 xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"                 xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence/"
+"orm \n"
+"                 http://java.sun.com/xml/ns/persistence/orm_1_0.xsd\"\n"
+"                 version=\"1.0\"&gt;\n"
+"                 \n"
+"    &lt;persistence-unit-metadata&gt;\n"
+"        &lt;persistence-unit-defaults&gt;\n"
+"            &lt;entity-listeners&gt;\n"
+"                &lt;entity-listener class=\"org.jboss.seam.security."
+"EntitySecurityListener\"/&gt;\n"
+"            &lt;/entity-listeners&gt;\n"
+"        &lt;/persistence-unit-defaults&gt;\n"
+"    &lt;/persistence-unit-metadata&gt;\n"
+"    \n"
+"&lt;/entity-mappings&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:334
+#, no-c-format
+msgid "Entity security with Hibernate"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:335
+#, no-c-format
+msgid ""
+"If you are using a Hibernate <literal>SessionFactory</literal> configured "
+"via Seam, you don't need to do anything special to use entity security."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:338
+#, no-c-format
+msgid "Writing Security Rules"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:339
+#, no-c-format
+msgid ""
+"Up to this point there has been a lot of mention of permissions, but no "
+"information about how permissions are actually defined or granted. This "
+"section completes the picture, by explaining how permission checks are "
+"processed, and how to implement permission checks for a Seam application."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:342
+#, no-c-format
+msgid "Permissions Overview"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:343
+#, no-c-format
+msgid ""
+"So how does the security API know whether a user has the <literal>customer:"
+"modify</literal> permission for a specific customer? Seam Security provides "
+"quite a novel method for determining user permissions, based on JBoss Rules. "
+"A couple of the advantages of using a rule engine are 1) a centralized "
+"location for the business logic that is behind each user permission, and 2) "
+"speed - JBoss Rules uses very efficient algorithms for evaluating large "
+"numbers of complex rules involving multiple conditions."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:346
+#, no-c-format
+msgid "Configuring a rules file"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:347
+#, no-c-format
+msgid ""
+"Seam Security expects to find a <literal>RuleBase</literal> component called "
+"<literal>securityRules</literal> which it uses to evaluate permission "
+"checks. This is configured in <literal>components.xml</literal> as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:350
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:security=\"http://jboss.com/products/seam/security\"\n"
+"            xmlns:drools=\"http://jboss.com/products/seam/drools\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                     http://jboss.com/products/seam/core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components  \n"
+"                     http://jboss.com/products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/drools \n"
+"                     http://jboss.com/products/seam/drools-1.2.xsd\"\n"
+"                 http://jboss.com/products/seam/security \n"
+"                     http://jboss.com/products/seam/security-1.2.xsd"
+"\"&gt;                 \n"
+"        \n"
+"   &lt;drools:rule-base name=\"securityRules\"&gt;\n"
+"       &lt;drools:rule-files&gt;\n"
+"           &lt;value&gt;/META-INF/security.drl&lt;/value&gt;\n"
+"       &lt;/drools:rule-files&gt;\n"
+"   &lt;/drools:rule-base&gt;    \n"
+"   \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:351
+#, no-c-format
+msgid ""
+"Once the <literal>RuleBase</literal> component is configured, it's time to "
+"write the security rules."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:354
+#, no-c-format
+msgid "Creating a security rules file"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:355
+#, no-c-format
+msgid ""
+"For this step you need to create a file called <literal>security.drl</"
+"literal> in the <literal>/META-INF</literal> directory of your application's "
+"jar file. In actual fact this file can be called anything you want, and "
+"exist in any location as long as it is configured appropriately in "
+"<literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:358
+#, no-c-format
+msgid ""
+"So what should the security rules file contain? At this stage it might be a "
+"good idea to at least skim through the JBoss Rules documentation, however to "
+"get started here's an extremely simple example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:361
+#, no-c-format
+msgid ""
+"package MyApplicationPermissions;\n"
+"\n"
+"import org.jboss.seam.security.PermissionCheck;\n"
+"import org.jboss.seam.security.Role;\n"
+"\n"
+"rule CanUserDeleteCustomers\n"
+"when\n"
+"  c: PermissionCheck(name == \"customer\", action == \"delete\")\n"
+"  Role(name == \"admin\")\n"
+"then\n"
+"  c.grant();\n"
+"end;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:362
+#, no-c-format
+msgid ""
+"Let's break this down. The first thing we see is the package declaration. A "
+"package in JBoss Rules is essentially a collection of rules. The package "
+"name can be anything you want - it doesn't relate to anything else outside "
+"the scope of the rule base."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:365
+#, no-c-format
+msgid ""
+"The next thing we can notice is a couple of import statements for the "
+"<literal>PermissionCheck</literal> and <literal>Role</literal> classes. "
+"These imports inform the rules engine that we'll be referencing these "
+"classes within our rules."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:368
+#, no-c-format
+msgid ""
+"Finally we have the code for the rule. Each rule within a package should be "
+"given a unique name (usually describing the purpose of the rule). In this "
+"case our rule is called <literal>CanUserDeleteCustomers</literal> and will "
+"be used to check whether a user is allowed to delete a customer record."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:371
+#, no-c-format
+msgid ""
+"Looking at the body of the rule definition we can notice two distinct "
+"sections. Rules have what is known as a left hand side (LHS) and a right "
+"hand side (RHS). The LHS consists of the conditional part of the rule, i.e. "
+"a list of conditions which must be satisfied for the rule to fire. The LHS "
+"is represented by the <literal>when</literal> section. The RHS is the "
+"consequence, or action section of the rule that will only be fired if all of "
+"the conditions in the LHS are met. The RHS is represented by the "
+"<literal>then</literal> section. The end of the rule is denoted by the "
+"<literal>end;</literal> line."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:374
+#, no-c-format
+msgid ""
+"If we look at the LHS of the rule, we see two conditions listed there. Let's "
+"examine the first condition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:377
+#, no-c-format
+msgid "c: PermissionCheck(name == \"customer\", action == \"delete\")"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:378
+#, no-c-format
+msgid ""
+"In plain english, this condition is stating that there must exist a "
+"<literal>PermissionCheck</literal> object with a <literal>name</literal> "
+"property equal to \"customer\", and an <literal>action</literal> property "
+"equal to \"delete\" within the working memory. What is the working memory? "
+"It is a session-scoped object that contains the contextual information that "
+"is required by the rules engine to make a decision about a permission check. "
+"Each time the <literal>hasPermission()</literal> method is called, a "
+"temporary <literal>PermissionCheck</literal> object, or <emphasis>Fact</"
+"emphasis>, is asserted into the working memory. This "
+"<literal>PermissionCheck</literal> corresponds exactly to the permission "
+"that is being checked, so for example if you call <literal>hasPermission"
+"(\"account\", \"create\", null)</literal> then a <literal>PermissionCheck</"
+"literal> object with a <literal>name</literal> equal to \"account\" and "
+"<literal>action</literal> equal to \"create\" will be asserted into the "
+"working memory for the duration of the permission check."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:381
+#, no-c-format
+msgid ""
+"So what else is in the working memory? Besides the short-lived temporary "
+"facts asserted during a permission check, there are some longer-lived "
+"objects in the working memory that stay there for the entire duration of a "
+"user being authenticated. These include any <literal>java.security."
+"Principal</literal> objects that are created as part of the authentication "
+"process, plus a <literal>org.jboss.seam.security.Role</literal> object for "
+"each of the roles that the user is a member of. It is also possible to "
+"assert additional long-lived facts into the working memory by calling "
+"<literal>Identity.instance().getSecurityContext().assertObject()</literal>, "
+"passing the object as a parameter."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:384
+#, no-c-format
+msgid ""
+"Getting back to our simple example, we can also notice that the first line "
+"of our LHS is prefixed with <literal>c:</literal>. This is a variable "
+"binding, and is used to refer back to the object that is matched by the "
+"condition. Moving onto the second line of our LHS, we see this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:387
+#, no-c-format
+msgid "Role(name == \"admin\")"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:388
+#, no-c-format
+msgid ""
+"This condition simply states that there must be a <literal>Role</literal> "
+"object with a <literal>name</literal> of \"admin\" within the working "
+"memory. As mentioned, user roles are asserted into the working memory as "
+"long-lived facts. So, putting both conditions together, this rule is "
+"essentially saying \"I will fire if you are checking for the "
+"<literal>customer:delete</literal> permission and the user is a member of "
+"the <literal>admin</literal> role\"."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:391
+#, no-c-format
+msgid ""
+"So what is the consequence of the rule firing? Let's take a look at the RHS "
+"of the rule:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:394
+#, no-c-format
+msgid "c.grant()"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:395
+#, no-c-format
+msgid ""
+"The RHS consists of Java code, and in this case is invoking the "
+"<literal>grant()</literal> method of the <literal>c</literal> object, which "
+"as already mentioned is a variable binding for the <literal>PermissionCheck</"
+"literal> object. Besides the <literal>name</literal> and <literal>action</"
+"literal> properties of the <literal>PermissionCheck</literal> object, there "
+"is also a <literal>granted</literal> property which is initially set to "
+"<literal>false</literal>. Calling <literal>grant()</literal> on a "
+"<literal>PermissionCheck</literal> sets the <literal>granted</literal> "
+"property to <literal>true</literal>, which means that the permission check "
+"was successful, allowing the user to carry out whatever action the "
+"permission check was intended for."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:398
+#, no-c-format
+msgid "SSL Security"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:399
+#, no-c-format
+msgid ""
+"Seam includes basic support for serving sensitive pages via the HTTPS "
+"protocol. This is easily configured by specifying a <literal>scheme</"
+"literal> for the page in <literal>pages.xml</literal>. The following example "
+"shows how the view <literal>/login.xhtml</literal> is configured to use "
+"HTTPS:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:402
+#, no-c-format
+msgid "&lt;page view-id=\"/login.xhtml\" scheme=\"https\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:403
+#, no-c-format
+msgid ""
+"This configuration is automatically extended to both <literal>s:link</"
+"literal> and <literal>s:button</literal> JSF controls, which (when "
+"specifying the <literal>view</literal>) will also render the link using the "
+"correct protocol. Based on the previous example, the following link will use "
+"the HTTPS protocol because <literal>/login.xhtml</literal> is configured to "
+"use it:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:406
+#, no-c-format
+msgid "&lt;s:link view=\"/login.xhtml\" value=\"Login\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:407
+#, no-c-format
+msgid ""
+"Browsing directly to a view when using the <emphasis>incorrect</emphasis> "
+"protocol will cause a redirect to the same view using the <emphasis>correct</"
+"emphasis> protocol. For example, browsing to a page that has <literal>scheme="
+"\"https\"</literal> using HTTP will cause a redirect to the same page using "
+"HTTPS."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:410
+#, no-c-format
+msgid ""
+"It is also possible to configure a default <literal>scheme</literal> for all "
+"pages. This is actually quite important, as you might only wish to use HTTPS "
+"for a few pages, and if no default scheme is specified then the default "
+"behavior is to continue using the current scheme. What this means is that "
+"once you enter a page with HTTPS, then HTTPS will continue to be used even "
+"if you navigate away to other non-HTTPS pages (a bad thing!). So it is "
+"strongly recommended to include a default <literal>scheme</literal>, by "
+"configuring it on the default (<literal>\"*\"</literal>) view:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:413
+#, no-c-format
+msgid "&lt;page view-id=\"*\" scheme=\"http\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:414
+#, no-c-format
+msgid ""
+"Of course, if <emphasis>none</emphasis> of the pages in your application use "
+"HTTPS then it is not required to specify a default scheme."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:417
+#, no-c-format
+msgid "Implementing a Captcha Test"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:418
+#, no-c-format
+msgid ""
+"Though strictly not part of the security API, it might be useful in certain "
+"circumstances (such as new user registrations, posting to a public blog or "
+"forum) to implement a Captcha (<emphasis>C</emphasis>ompletely <emphasis>A</"
+"emphasis>utomated <emphasis>P</emphasis>ublic <emphasis>T</emphasis>uring "
+"test to tell <emphasis>C</emphasis>omputers and <emphasis>H</emphasis>umans "
+"<emphasis>A</emphasis>part) to prevent automated bots from interacting with "
+"your application. Seam provides seamless integration with JCaptcha, an "
+"excellent library for generating Captcha challenges. If you wish to use the "
+"captcha feature in your application you need to include the jcaptcha-* jar "
+"file from the Seam lib directory in your project, and register it in "
+"<literal>application.xml</literal> as a java module."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:421
+#, no-c-format
+msgid "Configuring the Captcha Servlet"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:422
+#, no-c-format
+msgid ""
+"To get up and running, it is necessary to configure the Seam Resource "
+"Servlet, which will provide the Captcha challenge images to your pages. This "
+"requires the following entry in <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:425
+#, no-c-format
+msgid ""
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"    \n"
+"&lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:426
+#, no-c-format
+msgid "Adding a Captcha to a page"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:427
+#, no-c-format
+msgid ""
+"Adding a captcha challenge to a page is extremely easy. Seam provides a page-"
+"scoped component, <literal>captcha</literal>, which provides everything that "
+"is required, including built-in captcha validation. Here's an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:430
+#, no-c-format
+msgid ""
+"&lt;div&gt;\n"
+"    &lt;h:graphicImage value=\"/seam/resource/captcha?#{captcha.id}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"  \n"
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"verifyCaptcha\"&gt;Enter the above letters&lt;/h:"
+"outputLabel&gt;\n"
+"    &lt;h:inputText id=\"verifyCaptcha\" value=\"#{captcha.response}\" "
+"required=\"true\"/&gt;\n"
+"    &lt;div class=\"validationError\"&gt;&lt;h:message for=\"verifyCaptcha\"/"
+"&gt;&lt;/div&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:431
+#, no-c-format
+msgid ""
+"That's all there is to it. The <literal>graphicImage</literal> control "
+"displays the Captcha challenge, and the <literal>inputText</literal> "
+"receives the user's response. The response is automatically validated "
+"against the Captcha when the form is submitted."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Spring.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Spring.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Spring.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,416 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Spring.xml:10
+#, no-c-format
+msgid "Spring Framework integration"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:11
+#, no-c-format
+msgid ""
+"The Spring integration module allows easy migration of Spring-based projects "
+"to Seam and allows Spring applications to take advantage of key Seam "
+"features like conversations and Seam's more sophisticated persistence "
+"context management."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:14
+#, no-c-format
+msgid "Seam's support for Spring provides the ability to:"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:19
+#, no-c-format
+msgid "inject Seam component instances into Spring beans"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:24
+#, no-c-format
+msgid "inject Spring beans into Seam components"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:29
+#, no-c-format
+msgid "turn Spring beans into Seam components"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:34
+#, no-c-format
+msgid "allow Spring beans to live in any Seam context"
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:40
+#, no-c-format
+msgid "Injecting Seam components into Spring beans"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:41
+#, no-c-format
+msgid ""
+"Injecting Seam component instances into Spring beans is accomplished using "
+"the <literal>&lt;seam:instance/&gt;</literal> namespace handler. To enable "
+"the Seam namespace handler, the Seam namespace must be added to the Spring "
+"beans definition file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:44
+#, no-c-format
+msgid ""
+"&lt;beans xmlns=\"http://www.springframework.org/schema/beans\"\n"
+"    xmlns:seam=\"http://jboss.com/products/seam/spring\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://www.springframework.org/schema/beans \n"
+"                        http://www.springframework.org/schema/beans/spring-"
+"beans-2.0.xsd\n"
+"                        http://jboss.com/products/seam/spring \n"
+"                        http://jboss.com/products/seam/spring-1.2.xsd\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:45
+#, no-c-format
+msgid "Now any Seam component may be injected into any Spring bean:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:48
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\"&gt;\n"
+"        &lt;seam:instance name=\"someComponent\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:49
+#, no-c-format
+msgid "An EL expression may be used instead of a component name:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:52
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\"&gt;\n"
+"        &lt;seam:instance name=\"#{someExpression}\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:53
+#, no-c-format
+msgid ""
+"Seam component instances may even be made available for injection into "
+"Spring beans by a Spring bean id."
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:56
+#, no-c-format
+msgid ""
+"&lt;seam:instance name=\"someComponent\" id=\"someSeamComponentInstance\"/"
+"&gt;\n"
+"\n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\" ref=\"someSeamComponentInstance"
+"\"&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:57
+#, no-c-format
+msgid "Now for the caveat!"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:60
+#, no-c-format
+msgid ""
+"Seam was designed from the ground up to support a stateful component model "
+"with multiple contexts. Spring was not. Unlike Seam bijection, Spring "
+"injection does not occur at method invocation time. Instead, injection "
+"happens only when the Spring bean is instantiated. So the instance available "
+"when the bean is instantiated will be the same instance that the bean uses "
+"for the entire life of the bean. For example, if a Seam "
+"<literal>CONVERSATION</literal>-scoped component instance is directly "
+"injected into a singleton Spring bean, that singleton will hold a reference "
+"to the same instance long after the conversation is over! We call this "
+"problem <emphasis>scope impedance</emphasis>. Seam bijection ensures that "
+"scope impedance is maintained naturally as an invocation flows through the "
+"system. In Spring, we need to inject a proxy of the Seam component, and "
+"resolve the reference when the proxy is invoked."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:63
+#, no-c-format
+msgid ""
+"The <literal>&lt;seam:instance/&gt;</literal> tag lets us automatically "
+"proxy the Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:66
+#, no-c-format
+msgid ""
+"&lt;seam:instance id=\"seamManagedEM\" name=\"someManagedEMComponent\" proxy="
+"\"true\"/&gt;\n"
+"        \n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\"&gt;\n"
+"    &lt;property name=\"entityManager\" ref=\"seamManagedEM\"&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:67
+#, no-c-format
+msgid ""
+"This example shows one way to use a Seam-managed persistence context from a "
+"Spring bean. (A more robust way to use Seam-managed persistence contexts as "
+"a replacement for the Spring <literal>OpenEntityManagerInView</literal> "
+"filter will be provided in a future release)"
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:73
+#, no-c-format
+msgid "Injecting Spring beans into Seam components"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:74
+#, no-c-format
+msgid ""
+"It is even easier to inject Spring beans into Seam component instances. "
+"Actually, there are two possible approaches:"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:79
+#, no-c-format
+msgid "inject a Spring bean using an EL expression"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:84
+#, no-c-format
+msgid "make the Spring bean a Seam component"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:89
+#, no-c-format
+msgid ""
+"We'll discuss the second option in the next section. The easiest approach is "
+"to access the Spring beans via EL."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:92
+#, no-c-format
+msgid ""
+"The Spring <literal>DelegatingVariableResolver</literal> is an integration "
+"point Spring provides for integrating Spring with JSF. This "
+"<literal>VariableResolver</literal> makes all Spring beans available in EL "
+"by their bean id. You'll need to add the "
+"<literal>DelegatingVariableResolver</literal> to <literal>faces-config.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:95
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;variable-resolver&gt;\n"
+"        org.springframework.web.jsf.DelegatingVariableResolver\n"
+"    &lt;/variable-resolver&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:96
+#, no-c-format
+msgid "Then you can inject Spring beans using <literal>@In</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:99
+#, no-c-format
+msgid ""
+"@In(\"#{bookingService}\")\n"
+"private BookingService bookingService;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:100
+#, no-c-format
+msgid ""
+"The use of Spring beans in EL is not limited to injection. Spring beans may "
+"be used anywhere that EL expressions are used in Seam: process and pageflow "
+"definitions, working memory assertions, etc..."
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:106
+#, no-c-format
+msgid "Making a Spring bean into a Seam component"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:107
+#, no-c-format
+msgid ""
+"The <literal>&lt;seam:component/&gt;</literal> namespace handler can be used "
+"to make any Spring bean a Seam component. Just place the <literal>&lt;seam:"
+"component/&gt;</literal> tag within the declaration of the bean that you "
+"wish to be a Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:110
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;seam:component/&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:111
+#, no-c-format
+msgid ""
+"By default, <literal>&lt;seam:component/&gt;</literal> will create a "
+"<literal>STATELESS</literal> Seam component with class and name provided in "
+"the bean definition. Occasionally, such as when a <literal>FactoryBean</"
+"literal> is used, the class of the Spring bean may not be the class "
+"appearing in the bean definition. In such cases the <literal>beanClass</"
+"literal> should be explicitly specified. A Seam component name may be "
+"explicitly specified in cases where there is potential for a naming conflict."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:114
+#, no-c-format
+msgid ""
+"The <literal>scope</literal> attribute of <literal>&lt;seam:component/&gt;</"
+"literal> may be used if you wish the Spring bean to be managed in a "
+"particular Seam scope. The Spring bean must be scoped to <literal>prototype</"
+"literal> if the Seam scope specified is anything other than "
+"<literal>STATELESS</literal>. Pre-existing Spring beans usually have a "
+"fundamentally stateless character, so this attribute is not usually needed."
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:120
+#, no-c-format
+msgid "Seam-scoped Spring beans"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:121
+#, no-c-format
+msgid ""
+"The Seam integration package also lets you use Seam's contexts as Spring 2.0 "
+"style custom scopes. This lets you declare any Spring bean in any of Seam's "
+"contexts. However, note once again that Spring's component model was never "
+"architected to support statefulness, so please use this feature with great "
+"care. In particular, clustering of session or conversation scoped Spring "
+"beans is deeply problematic, and care must be taken when injecting a bean or "
+"component from a wider scope into a bean of a narrower scope."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:124
+#, no-c-format
+msgid ""
+"By specifying <literal>&lt;seam:configure-scopes/&gt;</literal> once in a "
+"Spring bean factory configuration, all of the Seam scopes will be available "
+"to Spring beans as custom scopes. To associate a Spring bean with a "
+"particular Seam scope, specify the Seam scope in the <literal>scope</"
+"literal> attribute of the bean definition."
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:127
+#, no-c-format
+msgid ""
+"&lt;!-- Only needs to be specified once per bean factory--&gt;\n"
+"&lt;seam:configure-scopes/&gt;\n"
+"\n"
+"...\n"
+"\n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope=\"seam."
+"CONVERSATION\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:128
+#, no-c-format
+msgid ""
+"The prefix of the scope name may be changed by specifying the "
+"<literal>prefix</literal> attribute in the <literal>configure-scopes</"
+"literal> definition. (The default prefix is <literal>seam.</literal>)"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:131
+#, no-c-format
+msgid ""
+"Seam-scoped Spring beans defined this way can be injected into other Spring "
+"beans without the use of <literal>&lt;seam:instance/&gt;</literal>. However, "
+"care must be taken to ensure scope impedance is maintained. The normal "
+"approach used in Spring is to specify <literal>&lt;aop:scoped-proxy/&gt;</"
+"literal> in the bean definition. However, Seam-scoped Spring beans are "
+"<emphasis>not</emphasis> compatible with <literal>&lt;aop:scoped-proxy/&gt;</"
+"literal>. So if you need to inject a Seam-scoped Spring bean into a "
+"singleton, <literal>&lt;seam:instance/&gt;</literal> must be used:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:134
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope=\"seam."
+"CONVERSATION\"/&gt;\n"
+"\n"
+"...\n"
+"\n"
+"&lt;bean id=\"someSingleton\"&gt;\n"
+"    &lt;property name=\"someSeamScopedSpringBean\"&gt;\n"
+"        &lt;seam:instance name=\"someSpringBean\" proxy=\"true\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Testing.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Testing.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Testing.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,342 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Testing.xml:10
+#, no-c-format
+msgid "Testing Seam applications"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:11
+#, no-c-format
+msgid ""
+"Most Seam applications will need at least two kinds of automated tests: "
+"<emphasis>unit tests</emphasis>, which test a particular Seam component in "
+"isolation, and scripted <emphasis>integration tests</emphasis> which "
+"exercise all Java layers of the application (that is, everything except the "
+"view pages)."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:14
+#, no-c-format
+msgid "Both kinds of tests are very easy to write."
+msgstr ""
+
+#. Tag: title
+#: Testing.xml:18
+#, no-c-format
+msgid "Unit testing Seam components"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:19
+#, no-c-format
+msgid ""
+"All Seam components are POJOs. This is a great place to start if you want "
+"easy unit testing. And since Seam emphasises the use of bijection for inter-"
+"component interactions and access to contextual objects, it's very easy to "
+"test a Seam component outside of its normal runtime environment."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:22
+#, no-c-format
+msgid "Consider the following Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:25
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Scope(EVENT)\n"
+"@Name(\"register\")\n"
+"public class RegisterAction implements Register\n"
+"{\n"
+"   private User user;\n"
+"   private EntityManager em;\n"
+"\n"
+"   @In\n"
+"   public void setUser(User user) {\n"
+"       this.user = user;\n"
+"   }\n"
+"   \n"
+"   @PersistenceContext\n"
+"   public void setBookingDatabase(EntityManager em) {\n"
+"       this.em = em;\n"
+"   }\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = em.createQuery(\"select username from User where "
+"username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getResultList();\n"
+"      if (existing.size()==0)\n"
+"      {\n"
+"         em.persist(user);\n"
+"         return \"success\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:26
+#, no-c-format
+msgid "We could write a TestNG test for this component as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:29
+#, no-c-format
+msgid ""
+"public class RegisterActionTest\n"
+"{\n"
+"\n"
+"    @Test\n"
+"    public testRegisterAction()\n"
+"    {\n"
+"        EntityManager em = getEntityManagerFactory().createEntityManager();\n"
+"        em.getTransaction().begin();\n"
+"        \n"
+"        User gavin = new User();\n"
+"        gavin.setName(\"Gavin King\");\n"
+"        gavin.setUserName(\"1ovthafew\");\n"
+"        gavin.setPassword(\"secret\");\n"
+"        \n"
+"        RegisterAction action = new RegisterAction();\n"
+"        action.setUser(gavin);\n"
+"        action.setBookingDatabase(em);\n"
+"        \n"
+"        assert \"success\".equals( action.register() );\n"
+"        \n"
+"        em.getTransaction().commit();\n"
+"        em.close();\n"
+"    }\n"
+"    \n"
+"    \n"
+"    private EntityManagerFactory emf;\n"
+"    \n"
+"    public EntityManagerFactory getEntityManagerFactory()\n"
+"    {\n"
+"        return emf;\n"
+"    }\n"
+"    \n"
+"    @Configuration(beforeTestClass=true)\n"
+"    public void init() \n"
+"    {\n"
+"        emf = Persistence.createEntityManagerFactory"
+"(\"myResourceLocalEntityManager\");\n"
+"    }\n"
+"    \n"
+"    @Configuration(afterTestClass=true)\n"
+"    public void destroy()\n"
+"    {\n"
+"        emf.close();\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:30
+#, no-c-format
+msgid ""
+"Seam components don't usually depend directly upon container infrastructure, "
+"so most unit testing as as easy as that!"
+msgstr ""
+
+#. Tag: title
+#: Testing.xml:36
+#, no-c-format
+msgid "Integration testing Seam applications"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:37
+#, no-c-format
+msgid ""
+"Integration testing is slightly more difficult. In this case, we can't "
+"eliminate the container infrastructure; indeed, that is part of what is "
+"being tested! At the same time, we don't want to be forced to deploy our "
+"application to an application server to run the automated tests. We need to "
+"be able to reproduce just enough of the container infrastructure inside our "
+"testing environment to be able to exercise the whole application, without "
+"hurting performance too much."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:40
+#, no-c-format
+msgid ""
+"A second problem is emulating user interactions. A third problem is where to "
+"put our assertions. Some test frameworks let us test the whole application "
+"by reproducing user interactions with the web browser. These frameworks have "
+"their place, but they are not appropriate for use at development time."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:43
+#, no-c-format
+msgid ""
+"The approach taken by Seam is to let you write tests that script your "
+"components while running inside a pruned down container environment (Seam, "
+"together with the JBoss Embeddable EJB container). The role of the test "
+"script is basically to reproduce the interaction between the view and the "
+"Seam components. In other words, you get to pretend you are the JSF "
+"implementation!"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:46
+#, no-c-format
+msgid "This approach tests everything except the view."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:49
+#, no-c-format
+msgid "Let's consider a JSP view for the component we unit tested above:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:52
+#, no-c-format
+msgid ""
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Register New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;table border=\"0\"&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Username&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputText value=\"#{user.username}\"/&gt;&lt;/"
+"td&gt;\n"
+"       &lt;/tr&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Real Name&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputText value=\"#{user.name}\"/&gt;&lt;/td&gt;\n"
+"       &lt;/tr&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Password&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputSecret value=\"#{user.password}\"/&gt;&lt;/"
+"td&gt;\n"
+"       &lt;/tr&gt;\n"
+"     &lt;/table&gt;\n"
+"     &lt;h:messages/&gt;\n"
+"     &lt;h:commandButton type=\"submit\" value=\"Register\" action=\"#"
+"{register.register}\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:53
+#, no-c-format
+msgid ""
+"We want to test the registration functionality of our application (the stuff "
+"that happens when the user clicks the Register button). We'll reproduce the "
+"JSF request lifecycle in an automated TestNG test:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:56
+#, no-c-format
+msgid ""
+"public class RegisterTest extends SeamTest\n"
+"{\n"
+"   \n"
+"   @Test\n"
+"   public void testRegister() throws Exception\n"
+"   {\n"
+"            \n"
+"      new FacesRequest() {\n"
+"\n"
+"         @Override\n"
+"         protected void processValidations() throws Exception\n"
+"         {\n"
+"            validateValue(\"#{user.username}\", \"1ovthafew\");\n"
+"            validateValue(\"#{user.name}\", \"Gavin King\");\n"
+"            validateValue(\"#{user.password}\", \"secret\");\n"
+"            assert !isValidationFailure();\n"
+"         }\n"
+"         \n"
+"         @Override\n"
+"         protected void updateModelValues() throws Exception\n"
+"         {\n"
+"            setValue(\"#{user.username}\", \"1ovthafew\");\n"
+"            setValue(\"#{user.name}\", \"Gavin King\");\n"
+"            setValue(\"#{user.password}\", \"secret\");\n"
+"         }\n"
+"\n"
+"         @Override\n"
+"         protected void invokeApplication()\n"
+"         {\n"
+"            assert invokeMethod(\"#{register.register}\").equals(\"success"
+"\");\n"
+"         }\n"
+"\n"
+"         @Override\n"
+"         protected void renderResponse()\n"
+"         {\n"
+"            assert getValue(\"#{user.username}\").equals(\"1ovthafew\");\n"
+"            assert getValue(\"#{user.name}\").equals(\"Gavin King\");\n"
+"            assert getValue(\"#{user.password}\").equals(\"secret\");\n"
+"         }\n"
+"         \n"
+"      }.run();\n"
+"      \n"
+"   }\n"
+"\n"
+"   ...\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:57
+#, no-c-format
+msgid ""
+"Notice that we've extended <literal>SeamTest</literal>, which provides a "
+"Seam environment for our components, and written our test script as an "
+"anonymous class that extends <literal>SeamTest.FacesRequest</literal>, which "
+"provides an emulated JSF request lifecycle. (There is also a "
+"<literal>SeamTest.NonFacesRequest</literal> for testing GET requests.) We've "
+"written our code in methods which are named for the various JSF phases, to "
+"emulate the calls that JSF would make to our components. Then we've thrown "
+"in various assertions."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:60
+#, no-c-format
+msgid ""
+"You'll find plenty of integration tests for the Seam example applications "
+"which demonstrate more complex cases. There are instructions for running "
+"these tests using Ant, or using the TestNG plugin for eclipse:"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Text.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Text.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Text.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,362 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Text.xml:10
+#, no-c-format
+msgid "Seam Text"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:11
+#, no-c-format
+msgid ""
+"Collaboration-oriented websites require a human-friendly markup language for "
+"easy entry of formatted text in forum posts, wiki pages, blogs, comments, "
+"etc. Seam provides the <literal>&lt;s:formattedText/&gt;</literal> control "
+"for display of formatted text that conforms to the <emphasis>Seam Text</"
+"emphasis> language. Seam Text is implemented using an ANTLR-based parser. "
+"You don't need to know anything about ANTLR to use it, however."
+msgstr ""
+
+#. Tag: title
+#: Text.xml:15
+#, no-c-format
+msgid "Basic fomatting"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:16
+#, no-c-format
+msgid "Here is a simple example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:19
+#, no-c-format
+msgid ""
+"It's easy to make *bold text*, /italic text/, |monospace|, \n"
+"~deleted text~, super^scripts^ or _underlines_."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:20
+#, no-c-format
+msgid ""
+"If we display this using <literal>&lt;s:formattedText/&gt;</literal>, we "
+"will get the following HTML produced:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:23
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"It's easy to make &lt;b&gt;bold text&lt;/b&gt;, &lt;i&gt;italic text&lt;/"
+"i&gt;, &lt;tt&gt;monospace&lt;/tt&gt;\n"
+"&lt;del&gt;deleted text&lt;/del&gt;, super&lt;sup&gt;scripts&lt;/sup&gt; or "
+"&lt;u&gt;underlines&lt;/u&gt;.\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:24
+#, no-c-format
+msgid ""
+"We can use a blank line to indicate a new paragraph, and <literal>+</"
+"literal> to indicate a heading:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:27
+#, no-c-format
+msgid ""
+"+This is a big heading\n"
+"You /must/ have some text following a heading!\n"
+" \n"
+"++This is a smaller heading\n"
+"This is the first paragraph. We can split it across multiple \n"
+"lines, but we must end it with a blank line.\n"
+"\n"
+"This is the second paragraph."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:28
+#, no-c-format
+msgid ""
+"(Note that a simple newline is ignored, you need an additional blank line to "
+"wrap text into a new paragraph.) This is the HTML that results:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:31
+#, no-c-format
+msgid ""
+"&lt;h1&gt;This is a big heading&lt;/h1&gt;\n"
+"&lt;p&gt;\n"
+"You &lt;i&gt;must&lt;/i&gt; have some text following a heading!\n"
+"&lt;/p&gt;\n"
+" \n"
+"&lt;h2&gt;This is a smaller heading&lt;/h2&gt;\n"
+"&lt;p&gt;\n"
+"This is the first paragraph. We can split it across multiple \n"
+"lines, but we must end it with a blank line.\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"This is the second paragraph.\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:32
+#, no-c-format
+msgid ""
+"Ordered lists are created using the <literal>#</literal> character. "
+"Unordered lists use the <literal>=</literal> character:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:35
+#, no-c-format
+msgid ""
+"An ordered list:\n"
+"        \n"
+"#first item\n"
+"#second item\n"
+"#and even the /third/ item\n"
+"\n"
+"An unordered list:\n"
+"\n"
+"=an item\n"
+"=another item"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:36
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"An ordered list:\n"
+"&lt;/p&gt;\n"
+" \n"
+"&lt;ol&gt;       \n"
+"&lt;li&gt;first item&lt;/li&gt;\n"
+"&lt;li&gt;second item&lt;/li&gt;\n"
+"&lt;li&gt;and even the &lt;i&gt;third&lt;/i&gt; item&lt;/li&gt;\n"
+"&lt;/ol&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"An unordered list:\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;ul&gt;\n"
+"&lt;li&gt;an item&lt;/li&gt;\n"
+"&lt;li&gt;another item&lt;/li&gt;\n"
+"&lt;/ul&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:37
+#, no-c-format
+msgid "Quoted sections should be surrounded in double quotes:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:40
+#, no-c-format
+msgid ""
+"The other guy said:\n"
+"        \n"
+"\"Nyeah nyeah-nee \n"
+"/nyeah/ nyeah!\"\n"
+"\n"
+"But what do you think he means by \"nyeah-nee\"?"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:41
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"The other guy said:\n"
+"&lt;/p&gt;\n"
+"        \n"
+"&lt;q&gt;Nyeah nyeah-nee\n"
+"&lt;i&gt;nyeah&lt;/i&gt; nyeah!&lt;/q&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"But what do you think he means by &lt;q&gt;nyeah-nee&lt;/q&gt;?\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: title
+#: Text.xml:45
+#, no-c-format
+msgid "Entering code and text with special characters"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:46
+#, no-c-format
+msgid ""
+"Special characters such as <literal>*</literal>, <literal>|</literal> and "
+"<literal>#</literal>, along with HTML characters such as <literal>&lt;</"
+"literal>, <literal>&gt;</literal> and <literal>&amp;</literal> may be "
+"escaped using <literal>&#92;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:49
+#, no-c-format
+msgid ""
+"You can write down equations like 2&#92;*3&#92;=6 and HTML tags\n"
+"like &#92;&lt;body&#92;&gt; using the escape character: &#92;&#92;."
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:50
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"You can write down equations like 2*3=6 and HTML tags\n"
+"like &lt;body&gt; using the escape character: &#92;.\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:51
+#, no-c-format
+msgid "And we can quote code blocks using backticks:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:54
+#, no-c-format
+msgid ""
+"My code doesn't work:\n"
+"\n"
+"`for (int i=0; i&lt;100; i--)\n"
+"{\n"
+"    doSomething();\n"
+"}`\n"
+"\n"
+"Any ideas?"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:55
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"My code doesn't work:\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;pre&gt;for (int i=0; i&lt;100; i--)\n"
+"{\n"
+"    doSomething();\n"
+"}&lt;/pre&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"Any ideas?\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: title
+#: Text.xml:59
+#, no-c-format
+msgid "Links"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:60
+#, no-c-format
+msgid "A link may be created using the following syntax:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:63
+#, no-c-format
+msgid "Go to the Seam website at [=&gt;http://jboss.com/products/seam]."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:64
+#, no-c-format
+msgid "Or, if you want to specify the text of the link:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:67
+#, no-c-format
+msgid "Go to [the Seam website=&gt;http://jboss.com/products/seam]."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:68
+#, no-c-format
+msgid ""
+"For advanced users, it is even possible to customize the Seam Text parser to "
+"understand wikiword links written using this syntax."
+msgstr ""
+
+#. Tag: title
+#: Text.xml:74
+#, no-c-format
+msgid "Entering HTML"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:75
+#, no-c-format
+msgid ""
+"Text may even include a certain limited subset of HTML (don't worry, the "
+"subset is chosen to be safe from cross-site scripting attacks). This is "
+"useful for creating links:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:78
+#, no-c-format
+msgid ""
+"You might want to link to &lt;a href=\"http://jboss.com/products/seam\"&gt;"
+"something\n"
+"cool&lt;/a&gt;, or even include an image: &lt;img src=\"/logo.jpg\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:79
+#, no-c-format
+msgid "And for creating tables:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:82
+#, no-c-format
+msgid ""
+"&lt;table&gt;\n"
+"    &lt;tr&gt;&lt;td&gt;First name:&lt;/td&gt;&lt;td&gt;Gavin&lt;/td&gt;&lt;/"
+"tr&gt;\n"
+"    &lt;tr&gt;&lt;td&gt;Last name:&lt;/td&gt;&lt;td&gt;King&lt;/td&gt;&lt;/"
+"tr&gt;\n"
+"&lt;/table&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:83
+#, no-c-format
+msgid "But you can do much more if you want!"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Tools.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Tools.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Tools.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,769 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Tools.xml:10
+#, no-c-format
+msgid "Seam tools"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:12
+#, no-c-format
+msgid "jBPM designer and viewer"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:13
+#, no-c-format
+msgid ""
+"The jBPM designer and viewer will let you design and view in a nice way your "
+"business processes and your pageflows. This convenient tool is part of JBoss "
+"Eclipse IDE and more details can be found in the jBPM's documentation "
+"(http://docs.jboss.com/jbpm/v3/gpd/)"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:17
+#, no-c-format
+msgid "<title>Business process designer</title>"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:18
+#, no-c-format
+msgid "This tool lets you design your own business process in a graphical way."
+msgstr ""
+
+#. Tag: screeninfo
+#: Tools.xml:21 Tools.xml:37
+#, no-c-format
+msgid "<screeninfo>Business process designer</screeninfo>"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:33
+#, no-c-format
+msgid "Pageflow viewer"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:34
+#, no-c-format
+msgid ""
+"This tool let you design to some extend your pageflows and let you build "
+"graphical views of them so you can easily share and compare ideas on how it "
+"should be designed."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:51
+#, no-c-format
+msgid "CRUD-application generator"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:52
+#, no-c-format
+msgid ""
+"This chapter, will give you a short overview of the support for Seam that is "
+"available in the Hibernate Tools. Hibernate Tools is a set of tools for "
+"working with Hibernate and related technologies, such as JBoss Seam and "
+"EJB3. The tools are available as a set of eclipse plugins and Ant tasks. You "
+"can download the Hibernate Tools from the JBoss Eclipse IDE or Hibernate "
+"Tools websites."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:55
+#, no-c-format
+msgid ""
+"The specific support for Seam that is currently available is generation of a "
+"fully functional Seam based CRUD-application. The CRUD-application can be "
+"generated based on your existing Hibernate mapping files or EJB3 annotated "
+"POJO's or even fully reverse engineered from your existing database schema."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:58
+#, no-c-format
+msgid ""
+"The following sections is focused on the features required to understand for "
+"usage with Seam. The content is derived from the the Hibernate Tools "
+"reference documentation. Thus if you need more detailed information please "
+"refer to the Hibernate Tools documentation."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:62
+#, no-c-format
+msgid "Creating a Hibernate configuration file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:63
+#, no-c-format
+msgid ""
+"To be able to reverse engineer and generate code a hibernate.properties or "
+"hibernate.cfg.xml file is needed. The Hibernate Tools provide a wizard for "
+"generating the hibernate.cfg.xml file if you do not already have such file."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:66
+#, no-c-format
+msgid ""
+"Start the wizard by clicking \"New Wizard\" (Ctrl+N), select the Hibernate/"
+"Hibernate Configuration file (cfg.xml) wizard and press \"Next\". After "
+"selecting the wanted location for the hibernate.cfg.xml file, you will see "
+"the following page:"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:77
+#, no-c-format
+msgid ""
+"Tip: The contents in the combo boxes for the JDBC driver class and JDBC URL "
+"change automatically, depending on the Dialect and actual driver you have "
+"chosen."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:80
+#, no-c-format
+msgid ""
+"Enter your configuration information in this dialog. Details about the "
+"configuration options can be found in Hibernate reference documentation."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:83
+#, no-c-format
+msgid ""
+"Press \"Finish\" to create the configuration file, after optionally creating "
+"a Console onfiguration, the hibernate.cfg.xml will be automatically opened "
+"in an editor. The last option \"Create Console Configuration\" is enabled by "
+"default and when enabled i will automatically use the hibernate.cfg.xml for "
+"the basis of a \"Console Configuration\""
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:89
+#, no-c-format
+msgid "<title>Creating a Hibernate Console configuration</title>"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:90
+#, no-c-format
+msgid ""
+"A Console Configuration describes to the Hibernate plugin which "
+"configuration files should be used to configure hibernate, including which "
+"classpath is needed to load the POJO's, JDBC drivers etc. It is required to "
+"make usage of query prototyping, reverse engineering and code generation. "
+"You can have multiple named console configurations. Normally you would just "
+"need one per project, but more (or less) is definitly possible."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:93
+#, no-c-format
+msgid ""
+"You create a console configuration by running the Console Configuration "
+"wizard, shown in the following screenshot. The same wizard will also be used "
+"if you are coming from the hibernate.cfg.xml wizard and had enabled \"Create "
+"Console Configuration\"."
+msgstr ""
+
+#. Tag: caption
+#: Tools.xml:103
+#, no-c-format
+msgid "<caption>Creating a Hibernate Console configuration</caption>"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:105
+#, no-c-format
+msgid ""
+"The following table describes the relevant settings. The wizard can "
+"automatically detect default values for most of these if you started the "
+"Wizard with the relevant java project selected"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:109
+#, no-c-format
+msgid "Hibernate Console Configuration Parameters"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:117
+#, no-c-format
+msgid "Parameter"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:122 Tools.xml:308 Tools.xml:458
+#, no-c-format
+msgid "Description"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:127
+#, no-c-format
+msgid "Auto detected value"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:136
+#, no-c-format
+msgid "Name"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:141
+#, no-c-format
+msgid "The unique name of the configuration"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:146
+#, no-c-format
+msgid "Name of the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:153
+#, no-c-format
+msgid "Property file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:158
+#, no-c-format
+msgid "Path to a hibernate.properties file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:163
+#, no-c-format
+msgid "First hibernate.properties file found in the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:170
+#, no-c-format
+msgid "Configuration file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:175
+#, no-c-format
+msgid "Path to a hibernate.cfg.xml file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:180
+#, no-c-format
+msgid "First hibernate.cfg.xml file found in the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:187
+#, no-c-format
+msgid "Enable Hibernate ejb3/annotations"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:192
+#, no-c-format
+msgid ""
+"Selecting this option enables usage of annotated classes. hbm.xml files are "
+"of course still possible to use too. This feature requires running the "
+"Eclipse IDE with a JDK 5 runtime, otherwise you will get classloading and/or "
+"version errors."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:197
+#, no-c-format
+msgid "Not enabled"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:204
+#, no-c-format
+msgid "Mapping files"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:209
+#, no-c-format
+msgid ""
+"List of additional mapping files that should be loaded. Note: A hibernate."
+"cfg.xml can also contain mappings. Thus if these a duplicated here, you will "
+"get \"Duplicate mapping\" errors when using the console configuration."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:214
+#, no-c-format
+msgid ""
+"If no hibernate.cfg.xml file is found, all hbm.xml files found in the "
+"selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:221
+#, no-c-format
+msgid "Classpath"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:226
+#, no-c-format
+msgid ""
+"The classpath for loading POJO and JDBC drivers. Do not add Hibernate core "
+"libraries or dependencies, they are already included. If you get "
+"ClassNotFound errors then check this list for possible missing or redundant "
+"directories/jars."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:231
+#, no-c-format
+msgid ""
+"The default build output directory and any JARs with a class implementing "
+"java.sql.Driver in the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:239
+#, no-c-format
+msgid ""
+"Clicking \"Finish\" creates the configuration and shows it in the "
+"\"Hibernate Configurations\" view"
+msgstr ""
+
+#. Tag: caption
+#: Tools.xml:249
+#, no-c-format
+msgid "Console overview"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:254
+#, no-c-format
+msgid "Reverse engineering and code generation"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:255
+#, no-c-format
+msgid ""
+"A very simple \"click-and-generate\" reverse engineering and code generation "
+"facility is available. It is this facility that allows you to generate the "
+"skeleton for a full Seam CRUD application."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:258
+#, no-c-format
+msgid ""
+"To start working with this process, start the \"Hibernate Code Generation\" "
+"which is available in the toolbar via the Hibernate icon or via the \"Run/"
+"Hibernate Code Generation\" menu item."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:262
+#, no-c-format
+msgid "Code Generation Launcher"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:263
+#, no-c-format
+msgid ""
+"When you click on \"Hibernate Code Generation\" the standard Eclipse "
+"launcher dialog will appear. In this dialog you can create, edit and delete "
+"named Hibernate code generation \"launchers\"."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:274
+#, no-c-format
+msgid ""
+"The dialog has the standard tabs \"Refresh\" and \"Common\" that can be used "
+"to configure which directories should be automatically refreshed and various "
+"general settings launchers, such as saving them in a project for sharing the "
+"launcher within a team."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:285
+#, no-c-format
+msgid ""
+"The first time you create a code generation launcher you should give it a "
+"meaningfull name, otherwise the default prefix \"New_Generation\" will be "
+"used."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:288
+#, no-c-format
+msgid ""
+"Note: The \"At least one exporter option must be selected\" is just a "
+"warning stating that for this launch to work you need to select an exporter "
+"on the Exporter tab. When an exporter has been selected the warning will "
+"disappear."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:291
+#, no-c-format
+msgid "On the \"Main\" tab you the following fields:"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:295
+#, no-c-format
+msgid "Code generation \"Main\" tab fields"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:303 Tools.xml:453
+#, no-c-format
+msgid "Field"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:317
+#, no-c-format
+msgid "Console Configuration"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:322
+#, no-c-format
+msgid ""
+"The name of the console configuration which should be used when code "
+"generating."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:329
+#, no-c-format
+msgid "Output directory"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:334
+#, no-c-format
+msgid ""
+"Path to a directory into where all output will be written by default. Be "
+"aware that existing files will be overwritten, so be sure to specify the "
+"correct directory."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:341
+#, no-c-format
+msgid "Reverse engineer from JDBC Connection"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:346
+#, no-c-format
+msgid ""
+"If enabled the tools will reverse engineer the database available via the "
+"connection information in the selected Hibernate Console Configuration and "
+"generate code based on the database schema. If not enabled the code "
+"generation will just be based on the mappings already specified in the "
+"Hibernate Console configuration."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:353
+#, no-c-format
+msgid "Package"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:358
+#, no-c-format
+msgid ""
+"The package name here is used as the default package name for any entities "
+"found when reverse engineering."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:365
+#, no-c-format
+msgid "reveng.xml"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:370
+#, no-c-format
+msgid ""
+"Path to a reveng.xml file. A reveng.xml file allows you to control certain "
+"aspects of the reverse engineering. e.g. how jdbc types are mapped to "
+"hibernate types and especially important which tables are included/excluded "
+"from the process. Clicking \"setup\" allows you to select an existing reveng."
+"xml file or create a new one.."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:377
+#, no-c-format
+msgid "reveng. strategy"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:382
+#, no-c-format
+msgid ""
+"If reveng.xml does not provide enough customization you can provide your own "
+"implementation of an ReverseEngineeringStrategy. The class need to be in the "
+"claspath of the Console Configuration, otherwise you will get class not "
+"found exceptions."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:389
+#, no-c-format
+msgid "Generate basic typed composite ids"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:394
+#, no-c-format
+msgid ""
+"This field should always be enabled when generating the Seam CRUD "
+"application. A table that has a multi-colum primary key a &lt;composite-"
+"id&gt; mapping will always be created. If this option is enabled and there "
+"are matching foreign-keys each key column is still considered a 'basic' "
+"scalar (string, long, etc.) instead of a reference to an entity. If you "
+"disable this option a &lt;key-many-to-one&gt; instead. Note: a &lt;many-to-"
+"one&gt; property is still created, but is simply marked as non-updatable and "
+"non-insertable."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:401
+#, no-c-format
+msgid "Use custom templates"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:406
+#, no-c-format
+msgid ""
+"If enabled, the Template directory will be searched first when looking up "
+"the velocity templates, allowing you to redefine how the individual "
+"templates process the hibernate mapping model."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:413
+#, no-c-format
+msgid "Template directory"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:418
+#, no-c-format
+msgid "A path to a directory with custom velocity templates."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:429
+#, no-c-format
+msgid "Exporters"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:430
+#, no-c-format
+msgid ""
+"The exporters tab is used to specify which type of code that should be "
+"generated. Each selection represents an \"Exporter\" that are responsible "
+"for generating the code, hence the name."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:441
+#, no-c-format
+msgid ""
+"The following table describes in short the various exporters. The most "
+"relevant for Seam is of course the \"JBoss Seam Skeleton app\"."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:445
+#, no-c-format
+msgid "Code generation \"Exporter\" tab fields"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:467
+#, no-c-format
+msgid "Generate domain code"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:472
+#, no-c-format
+msgid ""
+"Generates POJO's for all the persistent classes and components found in the "
+"given Hibernate configuration."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:479
+#, no-c-format
+msgid "JDK 1.5 constructs"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:484
+#, no-c-format
+msgid "When enabled the POJO's will use JDK 1.5 constructs."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:491
+#, no-c-format
+msgid "EJB3/JSR-220 annotations"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:496
+#, no-c-format
+msgid ""
+"When enabled the POJO's will be annotated according to the EJB3/JSR-220 "
+"persistency specification."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:503
+#, no-c-format
+msgid "Generate DAO code"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:508
+#, no-c-format
+msgid "Generates a set of DAO's for each entity found."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:515
+#, no-c-format
+msgid "Generate Mappings"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:520
+#, no-c-format
+msgid "Generate mapping (hbm.xml) files for each entity"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:527
+#, no-c-format
+msgid "Generate hibernate configuration file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:532
+#, no-c-format
+msgid ""
+"Generate a hibernate.cfg.xml file. Used to keep the hibernate.cfg.xml "
+"uptodate with any new found mapping files."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:539
+#, no-c-format
+msgid "Generate schema html-documentation"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:544
+#, no-c-format
+msgid ""
+"Generates set of html pages that documents the database schema and some of "
+"the mappings."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:551
+#, no-c-format
+msgid "Generate JBoss Seam skeleton app (beta)"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:556
+#, no-c-format
+msgid ""
+"Generates a complete JBoss Seam skeleton app. The generation will include "
+"annotated POJO's, Seam controller beans and a JSP for the presentation "
+"layer. See the generated readme.txt for how to use it."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:559
+#, no-c-format
+msgid ""
+"Note: this exporter generates a full application, including a build.xml thus "
+"you will get the best results if you use an output directory which is the "
+"root of your project."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:570
+#, no-c-format
+msgid "Generating and using the code"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:571
+#, no-c-format
+msgid ""
+"When you have finished filling out the settings, simply press \"Run\" to "
+"start the generation of code. This might take a little while if you are "
+"reverse engineering from a database."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:574
+#, no-c-format
+msgid ""
+"When the generation have finished you should now have a complete skeleton "
+"Seam application in the output directory. In the output directory there is a "
+"<literal>readme.txt</literal> file describing the steps needed to deploy and "
+"run the example."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:577
+#, no-c-format
+msgid ""
+"If you want to regenerate/update the skeleton code then simply run the code "
+"generation again by selecting the \"Hibernate Code Generation\" in the "
+"toolbar or \"Run\" menu. Enjoy."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Tutorial.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Tutorial.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Tutorial.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,4041 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Tutorial.xml:10
+#, no-c-format
+msgid "Seam Tutorial"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:12
+#, no-c-format
+msgid "Try the examples"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:13
+#, no-c-format
+msgid ""
+"In this tutorial, we'll assume that you have downloaded JBoss AS 4.0.5 and "
+"installed the EJB 3.0 profile (using the JBoss AS installer). You should "
+"also have a copy of Seam downloaded and extracted to a work directory."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:16
+#, no-c-format
+msgid "The directory structure of each example in Seam follows this pattern:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:21
+#, no-c-format
+msgid ""
+"Web pages, images and stylesheets may be found in <filename>examples/"
+"<replaceable>registration</replaceable>/view</filename>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:26
+#, no-c-format
+msgid ""
+"Resources such as deployment descriptors and data import scripts may be "
+"found in <filename>examples/<replaceable>registration</replaceable>/"
+"resources</filename>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:31
+#, no-c-format
+msgid ""
+"Java source code may be found in <filename>examples/"
+"<replaceable>registration</replaceable>/src</filename>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:36
+#, no-c-format
+msgid ""
+"The Ant build script is <filename>examples/<replaceable>registration</"
+"replaceable>/build.xml</filename>"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:42
+#, no-c-format
+msgid "Running the examples on JBoss AS"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:43
+#, no-c-format
+msgid ""
+"First, make sure you have Ant correctly installed, with <literal>&#36;"
+"ANT_HOME</literal> and <literal>&#36;JAVA_HOME</literal> set correctly. "
+"Next, make sure you set the location of your JBoss AS 4.0.5 installation in "
+"the <literal>build.properties</literal> file in the root folder of your Seam "
+"installation. If you haven't already done so, start JBoss AS now by typing "
+"<literal>bin/run.sh</literal> or <literal>bin/run.bat</literal> in the root "
+"directory of your JBoss installation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:46
+#, no-c-format
+msgid ""
+"By default the examples will deploy to the default configuration of the "
+"server. If the server has been started using an a configuration other than "
+"default then the example <literal>build.xml</literal> file should be "
+"modified to reflect this before building and deploying. Two lines should be "
+"changed in this file:"
+msgstr ""
+
+#. Tag: screen
+#: Tutorial.xml:49
+#, no-c-format
+msgid ""
+"&lt;property name=\"deploy.dir\"           value=\"${jboss.home}/server/"
+"default/deploy\"/&gt;"
+msgstr ""
+
+#. Tag: screen
+#: Tutorial.xml:50
+#, no-c-format
+msgid ""
+"&lt;property name=\"webroot.dir\"         \n"
+"        value=\"${deploy.dir}/jboss-web.deployer/ROOT.war\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:51
+#, no-c-format
+msgid ""
+"Now, build and deploy the example by typing <literal>ant deploy</literal> in "
+"the <filename>examples/<replaceable>registration</replaceable></filename> "
+"directory."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:54
+#, no-c-format
+msgid ""
+"Try it out by accessing <ulink url=\"http://localhost:8080/seam-registration/"
+"\"><literal>http://localhost:8080/seam-registration/</literal></ulink> with "
+"your web browser."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:60
+#, no-c-format
+msgid "Running the examples on Tomcat"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:61
+#, no-c-format
+msgid ""
+"First, make sure you have Ant correctly installed, with <literal>&#36;"
+"ANT_HOME</literal> and <literal>&#36;JAVA_HOME</literal> set correctly. "
+"Next, make sure you set the location of your Tomcat 5.5 installation in the "
+"<literal>build.properties</literal> file in the root folder of your Seam "
+"installation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:64
+#, no-c-format
+msgid ""
+"Now, build and deploy the example by typing <literal>ant deploy.tomcat</"
+"literal> in the <filename>examples/<replaceable>registration</replaceable></"
+"filename> directory."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:67
+#, no-c-format
+msgid "Finally, start Tomcat."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:70
+#, no-c-format
+msgid ""
+"Try it out by accessing <ulink url=\"http://localhost:8080/jboss-seam-"
+"registration/\"><literal>http://localhost:8080/jboss-seam-registration/</"
+"literal></ulink> with your web browser."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:73
+#, no-c-format
+msgid ""
+"When you deploy the example to Tomcat, any EJB3 components will run inside "
+"the JBoss Embeddable EJB3 container, a complete standalone EJB3 container "
+"environment."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:79
+#, no-c-format
+msgid "Running the example tests"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:80
+#, no-c-format
+msgid ""
+"Most of the examples come with a suite of TestNG integration tests. The "
+"easiest way to run the tests is to run <literal>ant testexample</literal> "
+"inside the <filename>examples/<replaceable>registration</replaceable></"
+"filename> directory. It is also possible to run the tests inside your IDE "
+"using the TestNG plugin."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:88
+#, no-c-format
+msgid "Your first Seam application: the registration example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:89
+#, no-c-format
+msgid ""
+"The registration example is a fairly trivial application that lets a new "
+"user store his username, real name and password in the database. The example "
+"isn't intended to show off all of the cool functionality of Seam. However, "
+"it demonstrates the use of an EJB3 session bean as a JSF action listener, "
+"and basic configuration of Seam."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:92
+#, no-c-format
+msgid ""
+"We'll go slowly, since we realize you might not yet be familiar with EJB 3.0."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:95
+#, no-c-format
+msgid ""
+"The start page displays a very basic form with three input fields. Try "
+"filling them in and then submitting the form. This will save a user object "
+"in the database."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:107 Tutorial.xml:424 Tutorial.xml:563 Tutorial.xml:723
+#, no-c-format
+msgid "Understanding the code"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:108
+#, no-c-format
+msgid ""
+"The example is implemented with two JSP pages, one entity bean and one "
+"stateless session bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:119
+#, no-c-format
+msgid "Let's take a look at the code, starting from the \"bottom\"."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:123
+#, no-c-format
+msgid "The entity bean: <literal>User.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:124
+#, no-c-format
+msgid ""
+"We need an EJB entity bean for user data. This class defines "
+"<emphasis>persistence</emphasis> and <emphasis>validation</emphasis> "
+"declaratively, via annotations. It also needs some extra annotations that "
+"define the class as a Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:140
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"user\")\n"
+"@Scope(SESSION)\n"
+"@Table(name=\"users\")\n"
+"public class User implements Serializable\n"
+"{\n"
+"   private static final long serialVersionUID = 1881413500711441951L;\n"
+"   \n"
+"   private String username;\n"
+"   private String password;\n"
+"   private String name;\n"
+"   \n"
+"   public User(String name, String password, String username)\n"
+"   {\n"
+"      this.name = name;\n"
+"      this.password = password;\n"
+"      this.username = username;\n"
+"   }\n"
+"   \n"
+"   public User() {}\n"
+"   \n"
+"   @NotNull @Length(min=5, max=15)\n"
+"   public String getPassword()\n"
+"   {\n"
+"      return password;\n"
+"   }\n"
+"\n"
+"   public void setPassword(String password)\n"
+"   {\n"
+"      this.password = password;\n"
+"   }\n"
+"   \n"
+"   @NotNull\n"
+"   public String getName()\n"
+"   {\n"
+"      return name;\n"
+"   }\n"
+"\n"
+"   public void setName(String name)\n"
+"   {\n"
+"      this.name = name;\n"
+"   }\n"
+"   \n"
+"   @Id @NotNull @Length(min=5, max=15)\n"
+"   public String getUsername()\n"
+"   {\n"
+"      return username;\n"
+"   }\n"
+"\n"
+"   public void setUsername(String username)\n"
+"   {\n"
+"      this.username = username;\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:143
+#, no-c-format
+msgid ""
+"The EJB3 standard <literal>@Entity</literal> annotation indicates that the "
+"<literal>User</literal> class is an entity bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:148
+#, no-c-format
+msgid ""
+"A Seam component needs a <emphasis>component name</emphasis> specified by "
+"the <link linkend=\"name-annotation\"><literal>@Name</literal></link> "
+"annotation. This name must be unique within the Seam application. When JSF "
+"asks Seam to resolve a context variable with a name that is the same as a "
+"Seam component name, and the context variable is currently undefined (null), "
+"Seam will instantiate that component, and bind the new instance to the "
+"context variable. In this case, Seam will instantiate a <literal>User</"
+"literal> the first time JSF encounters a variable named <literal>user</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:153
+#, no-c-format
+msgid ""
+"Whenever Seam instantiates a component, it binds the new instance to a "
+"context variable in the component's <emphasis>default context</emphasis>. "
+"The default context is specified using the <link linkend=\"scope-annotation"
+"\"><literal>@Scope</literal></link> annotation. The <literal>User</literal> "
+"bean is a session scoped component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:158
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Table</literal> annotation indicates that the "
+"<literal>User</literal> class is mapped to the <literal>users</literal> "
+"table."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:163
+#, no-c-format
+msgid ""
+"<literal>name</literal>, <literal>password</literal> and <literal>username</"
+"literal> are the persistent attributes of the entity bean. All of our "
+"persistent attributes define accessor methods. These are needed when this "
+"component is used by JSF in the render response and update model values "
+"phases."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:168
+#, no-c-format
+msgid ""
+"An empty constructor is both required by both the EJB specification and by "
+"Seam."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:173
+#, no-c-format
+msgid ""
+"The <literal>@NotNull</literal> and <literal>@Length</literal> annotations "
+"are part of the Hibernate Validator framework. Seam integrates Hibernate "
+"Validator and lets you use it for data validation (even if you are not using "
+"Hibernate for persistence)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:178
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Id</literal> annotation indicates the primary key "
+"attribute of the entity bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:185
+#, no-c-format
+msgid ""
+"The most important things to notice in this example are the <literal>@Name</"
+"literal> and <literal>@Scope</literal> annotations. These annotations "
+"establish that this class is a Seam component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:188
+#, no-c-format
+msgid ""
+"We'll see below that the properties of our <literal>User</literal> class are "
+"bound to directly to JSF components and are populated by JSF during the "
+"update model values phase. We don't need any tedious glue code to copy data "
+"back and forth between the JSP pages and the entity bean domain model."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:191
+#, no-c-format
+msgid ""
+"However, entity beans shouldn't do transaction management or database "
+"access. So we can't use this component as a JSF action listener. For that we "
+"need a session bean."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:198
+#, no-c-format
+msgid ""
+"The stateless session bean class: <literal>RegisterAction.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:199
+#, no-c-format
+msgid ""
+"Most Seam application use session beans as JSF action listeners (you can use "
+"JavaBeans instead if you like)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:202
+#, no-c-format
+msgid ""
+"We have exactly one JSF action in our application, and one session bean "
+"method attached to it. In this case, we'll use a stateless session bean, "
+"since all the state associated with our action is held by the <literal>User</"
+"literal> bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:205
+#, no-c-format
+msgid "This is the only really interesting code in the example!"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:222
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"register\")\n"
+"public class RegisterAction implements Register\n"
+"{\n"
+"\n"
+"   @In\n"
+"   private User user;\n"
+"   \n"
+"   @PersistenceContext\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @Logger\n"
+"   private Log log;\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = em.createQuery(\n"
+"         \"select username from User where username=#{user.username}\")\n"
+"         .getResultList();\n"
+"         \n"
+"      if (existing.size()==0)\n"
+"      {\n"
+"         em.persist(user);\n"
+"         log.info(\"Registered new user #{user.username}\");\n"
+"         return \"/registered.jsp\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         FacesMessages.instance().add(\"User #{user.username} already exists"
+"\");\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:225
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Stateless</literal> annotation marks this class "
+"as stateless session bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:230
+#, no-c-format
+msgid ""
+"The <link linkend=\"in-annotation\"><literal>@In</literal></link> annotation "
+"marks an attribute of the bean as injected by Seam. In this case, the "
+"attribute is injected from a context variable named <literal>user</literal> "
+"(the instance variable name)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:235
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@PersistenceContext</literal> annotation is used "
+"to inject the EJB3 entity manager."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:240
+#, no-c-format
+msgid ""
+"The Seam <literal>@Logger</literal> annotation is used to inject the "
+"component's <literal>Log</literal> instance."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:245
+#, no-c-format
+msgid ""
+"The action listener method uses the standard EJB3 <literal>EntityManager</"
+"literal> API to interact with the database, and returns the JSF outcome. "
+"Note that, since this is a sesson bean, a transaction is automatically begun "
+"when the <literal>register()</literal> method is called, and committed when "
+"it completes."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:250
+#, no-c-format
+msgid ""
+"Notice that Seam lets you use a JSF EL expression inside EJB-QL. Under the "
+"covers, this results in an ordinary JPA <literal>setParameter()</literal> "
+"call on the standard JPA <literal>Query</literal> object. Nice, huh?"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:255
+#, no-c-format
+msgid ""
+"The <literal>Log</literal> API lets us easily display templated log messages."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:260
+#, no-c-format
+msgid ""
+"JSF action listener methods return a string-valued outcome that determines "
+"what page will be displayed next. A null outcome (or a void action listener "
+"method) redisplays the previous page. In plain JSF, it is normal to always "
+"use a JSF <emphasis>navigation rule</emphasis> to determine the JSF view id "
+"from the outcome. For complex application this indirection is useful and a "
+"good practice. However, for very simple examples like this one, Seam lets "
+"you use the JSF view id as the outcome, eliminating the requirement for a "
+"navigation rule. <emphasis>Note that when you use a view id as an outcome, "
+"Seam always performs a browser redirect.</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:265
+#, no-c-format
+msgid ""
+"Seam provides a number of <emphasis>built-in components</emphasis> to help "
+"solve common problems. The <literal>FacesMessages</literal> component makes "
+"it easy to display templated error or success messages. Built-in Seam "
+"components may be obtained by injection, or by calling an <literal>instance()"
+"</literal> method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:272
+#, no-c-format
+msgid ""
+"Note that we did not explicitly specify a <literal>@Scope</literal> this "
+"time. Each Seam component type has a default scope if not explicitly "
+"specified. For stateless session beans, the default scope is the stateless "
+"context. Actually, <emphasis>all</emphasis> stateless session beans belong "
+"in the stateless context."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:275
+#, no-c-format
+msgid ""
+"Our session bean action listener performs the business and persistence logic "
+"for our mini-application. In more complex applications, we might need to "
+"layer the code and refactor persistence logic into a dedicated data access "
+"component. That's perfectly trivial to do. But notice that Seam does not "
+"force you into any particular strategy for application layering."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:278
+#, no-c-format
+msgid ""
+"Furthermore, notice that our session bean has simultaneous access to context "
+"associated with the web request (the form values in the <literal>User</"
+"literal> object, for example), and state held in transactional resources "
+"(the <literal>EntityManager</literal> object). This is a break from "
+"traditional J2EE architectures. Again, if you are more comfortable with the "
+"traditional J2EE layering, you can certainly implement that in a Seam "
+"application. But for many applications, it's simply not very useful."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:285
+#, no-c-format
+msgid "The session bean local interface: <literal>Register.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:286
+#, no-c-format
+msgid "Naturally, our session bean needs a local interface."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:291
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface Register\n"
+"{\n"
+"   public String register();\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:292
+#, no-c-format
+msgid "That's the end of the Java code. Now onto the deployment descriptors."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:298
+#, no-c-format
+msgid ""
+"The Seam component deployment descriptor: <literal>components.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:299
+#, no-c-format
+msgid ""
+"If you've used many Java frameworks before, you'll be used to having to "
+"declate all your component classes in some kind of XML file that gradually "
+"grows more and more unmanageable as your project matures. You'll be relieved "
+"to know that Seam does not require that application components be "
+"accompanied by XML. Most Seam applications require a very small amount of "
+"XML that does not grow very much as the project gets bigger."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:302
+#, no-c-format
+msgid ""
+"Nevertheless, it is often useful to be able to provide for <emphasis>some</"
+"emphasis> external configuration of <emphasis>some</emphasis> components "
+"(particularly the components built in to Seam). You have a couple of options "
+"here, but the most flexible option is to provide this configuration in a "
+"file called <literal>components.xml</literal>, located in the <literal>WEB-"
+"INF</literal> directory. We'll use the <literal>components.xml</literal> "
+"file to tell Seam how to find our EJB components in JNDI:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:305
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"&gt;\n"
+"     &lt;core:init jndi-pattern=\"@jndiPattern@\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:306
+#, no-c-format
+msgid ""
+"This code configures a property named <literal>jndiPattern</literal> of a "
+"built-in Seam component named <literal>org.jboss.seam.core.init</literal>."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:312
+#, no-c-format
+msgid "The web deployment description: <literal>web.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:313
+#, no-c-format
+msgid ""
+"The presentation layer for our mini-application will be deployed in a WAR. "
+"So we'll need a web deployment descriptor."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:316
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;web-app version=\"2.5\"\n"
+"    xmlns=\"http://java.sun.com/xml/ns/javaee\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n"
+"        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\"&gt;\n"
+"\n"
+"    &lt;!-- Seam --&gt;\n"
+"\n"
+"    &lt;listener&gt;\n"
+"        &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/"
+"listener-class&gt;\n"
+"    &lt;/listener&gt;\n"
+"\n"
+"    &lt;!-- MyFaces --&gt;\n"
+"\n"
+"    &lt;listener&gt;\n"
+"        &lt;listener-class&gt;\n"
+"            org.apache.myfaces.webapp.StartupServletContextListener\n"
+"        &lt;/listener-class&gt;\n"
+"    &lt;/listener&gt;\n"
+"\n"
+"    &lt;context-param&gt;\n"
+"        &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-"
+"name&gt;\n"
+"        &lt;param-value&gt;client&lt;/param-value&gt;\n"
+"    &lt;/context-param&gt;\n"
+"\n"
+"    &lt;servlet&gt;\n"
+"        &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;\n"
+"        &lt;servlet-class&gt;javax.faces.webapp.FacesServlet&lt;/servlet-"
+"class&gt;\n"
+"        &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;\n"
+"    &lt;/servlet&gt;\n"
+"\n"
+"    &lt;!-- Faces Servlet Mapping --&gt;\n"
+"    &lt;servlet-mapping&gt;\n"
+"        &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;\n"
+"        &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;\n"
+"    &lt;/servlet-mapping&gt;\n"
+"\n"
+"&lt;/web-app&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:317
+#, no-c-format
+msgid ""
+"This <literal>web.xml</literal> file configures Seam and MyFaces. The "
+"configuration you see here is pretty much identical in all Seam applications."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:323
+#, no-c-format
+msgid "The JSF configration: <literal>faces-config.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:324
+#, no-c-format
+msgid ""
+"All Seam applications use JSF views as the presentation layer. So we'll need "
+"<literal>faces-config.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:327
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;!DOCTYPE faces-config \n"
+"PUBLIC \"-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN\"\n"
+"                            \"http://java.sun.com/dtd/web-facesconfig_1_0.dtd"
+"\"&gt;\n"
+"&lt;faces-config&gt;\n"
+"\n"
+"    &lt;!-- A phase listener is needed by all Seam applications --&gt;\n"
+"    \n"
+"    &lt;lifecycle&gt;\n"
+"        &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-"
+"listener&gt;\n"
+"    &lt;/lifecycle&gt;\n"
+"\n"
+"&lt;/faces-config&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:328
+#, no-c-format
+msgid ""
+"The <literal>faces-config.xml</literal> file integrates Seam into JSF. Note "
+"that we don't need any JSF managed bean declarations! The managed beans are "
+"the Seam components. In Seam applications, the <literal>faces-config.xml</"
+"literal> is used much less often than in plain JSF."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:331
+#, no-c-format
+msgid ""
+"In fact, once you have all the basic descriptors set up, the <emphasis>only</"
+"emphasis> XML you need to write as you add new functionality to a Seam "
+"application is the navigation rules, and possibly jBPM process definitions. "
+"Seam takes the view that <emphasis>process flow</emphasis> and "
+"<emphasis>configuration data</emphasis> are the only things that truly "
+"belong in XML."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:334
+#, no-c-format
+msgid ""
+"In this simple example, we don't even need a navigation rule, since we "
+"decided to embed the view id in our action code."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:340
+#, no-c-format
+msgid "The EJB deployment descriptor: <literal>ejb-jar.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:341
+#, no-c-format
+msgid ""
+"The <literal>ejb-jar.xml</literal> file integrates Seam with EJB3, by "
+"attaching the <literal>SeamInterceptor</literal> to all session beans in the "
+"archive."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:344
+#, no-c-format
+msgid ""
+"&lt;ejb-jar xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \n"
+"         xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n"
+"         http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd\"\n"
+"         version=\"3.0\"&gt;\n"
+"         \n"
+"   &lt;interceptors&gt;\n"
+"     &lt;interceptor&gt;\n"
+"       &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"     &lt;/interceptor&gt;\n"
+"   &lt;/interceptors&gt;\n"
+"   \n"
+"   &lt;assembly-descriptor&gt;\n"
+"      &lt;interceptor-binding&gt;\n"
+"         &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"         &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"      &lt;/interceptor-binding&gt;\n"
+"   &lt;/assembly-descriptor&gt;\n"
+"   \n"
+"&lt;/ejb-jar&gt;"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:348
+#, no-c-format
+msgid ""
+"The EJB persistence deployment descriptor: <literal>persistence.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:349
+#, no-c-format
+msgid ""
+"The <literal>persistence.xml</literal> file tells the EJB persistence "
+"provider where to find the datasource, and contains some vendor-specific "
+"settings. In this case, enables automatic schema export at startup time."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:352
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;persistence xmlns=\"http://java.sun.com/xml/ns/persistence\" \n"
+"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence \n"
+"             http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd\" \n"
+"             version=\"1.0\"&gt;\n"
+"    &lt;persistence-unit name=\"userDatabase\"&gt;\n"
+"      &lt;provider&gt;org.hibernate.ejb.HibernatePersistence&lt;/"
+"provider&gt;\n"
+"      &lt;jta-data-source&gt;java:/DefaultDS&lt;/jta-data-source&gt;\n"
+"      &lt;properties&gt;\n"
+"         &lt;property name=\"hibernate.hbm2ddl.auto\" value=\"create-drop\"/"
+"&gt;\n"
+"      &lt;/properties&gt;\n"
+"    &lt;/persistence-unit&gt;\n"
+"&lt;/persistence&gt;"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:356
+#, no-c-format
+msgid ""
+"The view: <literal>register.jsp</literal> and <literal>registered.jsp</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:357
+#, no-c-format
+msgid ""
+"The view pages for a Seam application could be implemented using any "
+"technology that supports JSF. In this example we use JSP, since it is "
+"familiar to most developers and since we have minimal requirements here "
+"anyway. (But if you take our advice, you'll use Facelets for your own "
+"applications.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:360
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://jboss.com/products/seam/taglib\" prefix=\"s\" "
+"&#37;&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Register New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;table border=\"0\"&gt;\n"
+"       &lt;s:validateAll&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Username&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputText value=\"#{user.username}\"/&gt;&lt;/"
+"td&gt;\n"
+"         &lt;/tr&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Real Name&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputText value=\"#{user.name}\"/&gt;&lt;/td&gt;\n"
+"         &lt;/tr&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Password&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputSecret value=\"#{user.password}\"/&gt;&lt;/"
+"td&gt;\n"
+"         &lt;/tr&gt;\n"
+"       &lt;/s:validateAll&gt;\n"
+"     &lt;/table&gt;\n"
+"     &lt;h:messages/&gt;\n"
+"     &lt;h:commandButton type=\"submit\" value=\"Register\" action=\"#"
+"{register.register}\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:361
+#, no-c-format
+msgid ""
+"The only thing here that is specific to Seam is the <literal>&lt;s:"
+"validateAll&gt;</literal> tag. This JSF component tells JSF to validate all "
+"the contained input fields against the Hibernate Validator annotations "
+"specified on the entity bean."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:364
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Successfully Registered New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"    Welcome, &lt;h:outputText value=\"#{user.name}\"/&gt;, \n"
+"    you are successfully registered as &lt;h:outputText value=\"#{user."
+"username}\"/&gt;.\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:365
+#, no-c-format
+msgid ""
+"This is a boring old JSP pages using standard JSF components. There is "
+"nothing specific to Seam here."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:371
+#, no-c-format
+msgid "The EAR deployment descriptor: <literal>application.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:372
+#, no-c-format
+msgid ""
+"Finally, since our application is deployed as an EAR, we need a deployment "
+"descriptor there, too."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:375
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;application xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee \n"
+"             http://java.sun.com/xml/ns/javaee/application_5.xsd\"\n"
+"             version=\"5\"&gt;\n"
+"             \n"
+"    &lt;display-name&gt;Seam Registration&lt;/display-name&gt;\n"
+"\n"
+"    &lt;module&gt;\n"
+"        &lt;web&gt;\n"
+"            &lt;web-uri&gt;jboss-seam-registration.war&lt;/web-uri&gt;\n"
+"            &lt;context-root&gt;/seam-registration&lt;/context-root&gt;\n"
+"        &lt;/web&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;ejb&gt;jboss-seam-registration.jar&lt;/ejb&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;jboss-seam.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;el-api.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;el-ri.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    \n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:376
+#, no-c-format
+msgid ""
+"This deployment descriptor links modules in the enterprise archive and binds "
+"the web application to the context root <literal>/seam-registration</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:387 Tutorial.xml:535 Tutorial.xml:698 Tutorial.xml:813
+#, no-c-format
+msgid "How it works"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:388
+#, no-c-format
+msgid ""
+"When the form is submitted, JSF asks Seam to resolve the variable named "
+"<literal>user</literal>. Since there is no value already bound to that name "
+"(in any Seam context), Seam instantiates the <literal>user</literal> "
+"component, and returns the resulting <literal>User</literal> entity bean "
+"instance to JSF after storing it in the Seam session context."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:391
+#, no-c-format
+msgid ""
+"The form input values are now validated against the Hibernate Validator "
+"constraints specified on the <literal>User</literal> entity. If the "
+"constraints are violated, JSF redisplays the page. Otherwise, JSF binds the "
+"form input values to properties of the <literal>User</literal> entity bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:394
+#, no-c-format
+msgid ""
+"Next, JSF asks Seam to resolve the variable named <literal>register</"
+"literal>. Seam finds the <literal>RegisterAction</literal> stateless session "
+"bean in the stateless context and returns it. JSF invokes the "
+"<literal>register()</literal> action listener method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:397
+#, no-c-format
+msgid ""
+"Seam intercepts the method call and injects the <literal>User</literal> "
+"entity from the Seam session context, before continuing the invocation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:400
+#, no-c-format
+msgid ""
+"The <literal>register()</literal> method checks if a user with the entered "
+"username already exists. If so, an error message is queued with the "
+"<literal>FacesMessages</literal> component, and a null outcome is returned, "
+"causing a page redisplay. The <literal>FacesMessages</literal> component "
+"interpolates the JSF expression embedded in the message string and adds a "
+"JSF <literal>FacesMessage</literal> to the view."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:403
+#, no-c-format
+msgid ""
+"If no user with that username exists, the <literal>\"/registered.jsp\"</"
+"literal> outcome triggers a browser redirect to the <literal>registered.jsp</"
+"literal> page. When JSF comes to render the page, it asks Seam to resolve "
+"the variable named <literal>user</literal> and uses property values of the "
+"returned <literal>User</literal> entity from Seam's session scope."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:411
+#, no-c-format
+msgid "Clickable lists in Seam: the messages example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:412
+#, no-c-format
+msgid ""
+"Clickable lists of database search results are such an important part of any "
+"online application that Seam provides special functionality on top of JSF to "
+"make it easier to query data using EJB-QL or HQL and display it as a "
+"clickable list using a JSF <literal>&lt;h:dataTable&gt;</literal>. The "
+"messages example demonstrates this functionality."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:425
+#, no-c-format
+msgid ""
+"The message list example has one entity bean, <literal>Message</literal>, "
+"one session bean, <literal>MessageListBean</literal> and one JSP."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:429
+#, no-c-format
+msgid "The entity bean: <literal>Message.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:430
+#, no-c-format
+msgid ""
+"The <literal>Message</literal> entity defines the title, text, date and time "
+"of a message, and a flag indicating whether the message has been read:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:433
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"message\")\n"
+"@Scope(EVENT)\n"
+"public class Message implements Serializable\n"
+"{\n"
+"   private Long id;\n"
+"   private String title;\n"
+"   private String text;\n"
+"   private boolean read;\n"
+"   private Date datetime;\n"
+"   \n"
+"   @Id @GeneratedValue\n"
+"   public Long getId() {\n"
+"      return id;\n"
+"   }\n"
+"   public void setId(Long id) {\n"
+"      this.id = id;\n"
+"   }\n"
+"   \n"
+"   @NotNull @Length(max=100)\n"
+"   public String getTitle() {\n"
+"      return title;\n"
+"   }\n"
+"   public void setTitle(String title) {\n"
+"      this.title = title;\n"
+"   }\n"
+"   \n"
+"   @NotNull @Lob\n"
+"   public String getText() {\n"
+"      return text;\n"
+"   }\n"
+"   public void setText(String text) {\n"
+"      this.text = text;\n"
+"   }\n"
+"   \n"
+"   @NotNull\n"
+"   public boolean isRead() {\n"
+"      return read;\n"
+"   }\n"
+"   public void setRead(boolean read) {\n"
+"      this.read = read;\n"
+"   }\n"
+"   \n"
+"   @NotNull \n"
+"   @Basic @Temporal(TemporalType.TIMESTAMP)\n"
+"   public Date getDatetime() {\n"
+"      return datetime;\n"
+"   }\n"
+"   public void setDatetime(Date datetime) {\n"
+"      this.datetime = datetime;\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:438
+#, no-c-format
+msgid "The stateful session bean: <literal>MessageManagerBean.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:439
+#, no-c-format
+msgid ""
+"Just like in the previous example, we have a session bean, "
+"<literal>MessageManagerBean</literal>, which defines the action listener "
+"methods for the two buttons on our form. One of the buttons selects a "
+"message from the list, and displays that message. The other button deletes a "
+"message. So far, this is not so different to the previous example."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:442
+#, no-c-format
+msgid ""
+"But <literal>MessageManagerBean</literal> is also responsible for fetching "
+"the list of messages the first time we navigate to the message list page. "
+"There are various ways the user could navigate to the page, and not all of "
+"them are preceded by a JSF action&mdash;the user might have bookmarked the "
+"page, for example. So the job of fetching the message list takes place in a "
+"Seam <emphasis>factory method</emphasis>, instead of in an action listener "
+"method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:445
+#, no-c-format
+msgid ""
+"We want to cache the list of messages in memory between server requests, so "
+"we will make this a stateful session bean."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:459
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Scope(SESSION)\n"
+"@Name(\"messageManager\")\n"
+"public class MessageManagerBean implements Serializable, MessageManager\n"
+"{\n"
+"\n"
+"   @DataModel\n"
+"   private List&lt;Message&gt; messageList;\n"
+"   \n"
+"   @DataModelSelection\n"
+"   @Out(required=false)\n"
+"   private Message message;\n"
+"   \n"
+"   @PersistenceContext(type=EXTENDED)\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @Factory(\"messageList\")\n"
+"   public void findMessages()\n"
+"   {\n"
+"      messageList = em.createQuery(\"from Message msg order by msg.datetime "
+"desc\").getResultList();\n"
+"   }\n"
+"   \n"
+"   public void select()\n"
+"   {\n"
+"      message.setRead(true);\n"
+"   }\n"
+"   \n"
+"   public void delete()\n"
+"   {\n"
+"      messageList.remove(message);\n"
+"      em.remove(message);\n"
+"      message=null;\n"
+"   }\n"
+"   \n"
+"   @Remove @Destroy\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:462
+#, no-c-format
+msgid ""
+"The <literal>@DataModel</literal> annotation exposes an attibute of type "
+"<literal>java.util.List</literal> to the JSF page as an instance of "
+"<literal>javax.faces.model.DataModel</literal>. This allows us to use the "
+"list in a JSF <literal>&lt;h:dataTable&gt;</literal> with clickable links "
+"for each row. In this case, the <literal>DataModel</literal> is made "
+"available in a session context variable named <literal>messageList</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:467
+#, no-c-format
+msgid ""
+"The <literal>@DataModelSelection</literal> annotation tells Seam to inject "
+"the <literal>List</literal> element that corresponded to the clicked link."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:472
+#, no-c-format
+msgid ""
+"The <literal>@Out</literal> annotation then exposes the selected value "
+"directly to the page. So ever time a row of the clickable list is selected, "
+"the <literal>Message</literal> is injected to the attribute of the stateful "
+"bean, and the subsequently <emphasis>outjected</emphasis> to the event "
+"context variable named <literal>message</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:477
+#, no-c-format
+msgid ""
+"This stateful bean has an EJB3 <emphasis>extended persistence context</"
+"emphasis>. The messages retrieved in the query remain in the managed state "
+"as long as the bean exists, so any subsequent method calls to the stateful "
+"bean can update them without needing to make any explicit call to the "
+"<literal>EntityManager</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:482
+#, no-c-format
+msgid ""
+"The first time we navigate to the JSP page, there will be no value in the "
+"<literal>messageList</literal> context variable. The <literal>@Factory</"
+"literal> annotation tells Seam to create an instance of "
+"<literal>MessageManagerBean</literal> and invoke the <literal>findMessages()"
+"</literal> method to initialize the value. We call <literal>findMessages()</"
+"literal> a <emphasis>factory method</emphasis> for <literal>messages</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:487
+#, no-c-format
+msgid ""
+"The <literal>select()</literal> action listener method marks the selected "
+"<literal>Message</literal> as read, and updates it in the database."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:492
+#, no-c-format
+msgid ""
+"The <literal>delete()</literal> action listener method removes the selected "
+"<literal>Message</literal> from the database."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:497
+#, no-c-format
+msgid ""
+"All stateful session bean Seam components <emphasis>must</emphasis> have a "
+"method marked <literal>@Remove @Destroy</literal> to ensure that Seam will "
+"remove the stateful bean when the Seam context ends, and clean up any server-"
+"side state."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:504
+#, no-c-format
+msgid ""
+"Note that this is a session-scoped Seam component. It is associated with the "
+"user login session, and all requests from a login session share the same "
+"instance of the component. (In Seam applications, we usually use session-"
+"scoped components sparingly.)"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:510
+#, no-c-format
+msgid ""
+"The session bean local interface: <literal>MessageManager.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:511
+#, no-c-format
+msgid "All session beans have a business interface, of course."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:514
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface MessageManager\n"
+"{\n"
+"   public void findMessages();\n"
+"   public void select();\n"
+"   public void delete();\n"
+"   public void destroy();\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:515
+#, no-c-format
+msgid "From now on, we won't show local interfaces in our code examples."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:518
+#, no-c-format
+msgid ""
+"Let's skip over <literal>components.xml</literal>, <literal>persistence.xml</"
+"literal>, <literal>web.xml</literal>, <literal>ejb-jar.xml</literal>, "
+"<literal>faces-config.xml</literal> and <literal>application.xml</literal> "
+"since they are much the same as the previous example, and go straight to the "
+"JSP."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:524
+#, no-c-format
+msgid "The view: <literal>messages.jsp</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:525
+#, no-c-format
+msgid ""
+"The JSP page is a straightforward use of the JSF <literal>&lt;h:dataTable&gt;"
+"</literal> component. Again, nothing specific to Seam."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:528
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Messages&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;h2&gt;Message List&lt;/h2&gt;\n"
+"     &lt;h:outputText value=\"No messages to display\" rendered=\"#"
+"{messageList.rowCount==0}\"/&gt;\n"
+"     &lt;h:dataTable var=\"msg\" value=\"#{messageList}\" rendered=\"#"
+"{messageList.rowCount&gt;0}\"&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Read\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:selectBooleanCheckbox value=\"#{msg.read}\" disabled=\"true"
+"\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Title\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:commandLink value=\"#{msg.title}\" action=\"#"
+"{messageManager.select}\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Date/Time\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:outputText value=\"#{msg.datetime}\"&gt;\n"
+"              &lt;f:convertDateTime type=\"both\" dateStyle=\"medium\" "
+"timeStyle=\"short\"/&gt;\n"
+"           &lt;/h:outputText&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;h:commandButton value=\"Delete\" action=\"#{messageManager."
+"delete}\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"     &lt;/h:dataTable&gt;\n"
+"     &lt;h3&gt;&lt;h:outputText value=\"#{message.title}\"/&gt;&lt;/h3&gt;\n"
+"     &lt;div&gt;&lt;h:outputText value=\"#{message.text}\"/&gt;&lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:536
+#, no-c-format
+msgid ""
+"The first time we navigate to the <literal>messages.jsp</literal> page, "
+"whether by a JSF postback (faces request) or a direct browser GET request "
+"(non-faces request), the page will try to resolve the <literal>messageList</"
+"literal> context variable. Since this context variable is not initialized, "
+"Seam will call the factory method <literal>findMessages()</literal>, which "
+"performs a query against the database and results in a <literal>DataModel</"
+"literal> being outjected. This <literal>DataModel</literal> provides the row "
+"data needed for rendering the <literal>&lt;h:dataTable&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:539
+#, no-c-format
+msgid ""
+"When the user clicks the <literal>&lt;h:commandLink&gt;</literal>, JSF calls "
+"the <literal>select()</literal> action listener. Seam intercepts this call "
+"and injects the selected row data into the <literal>message</literal> "
+"attribute of the <literal>messageManager</literal> component. The action "
+"listener fires, marking the selected <literal>Message</literal> as read. At "
+"the end of the call, Seam outjects the selected <literal>Message</literal> "
+"to the context variable named <literal>message</literal>. Next, the EJB "
+"container commits the transaction, and the change to the <literal>Message</"
+"literal> is flushed to the database. Finally, the page is re-rendered, "
+"redisplaying the message list, and displaying the selected message below it."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:542
+#, no-c-format
+msgid ""
+"If the user clicks the <literal>&lt;h:commandButton&gt;</literal>, JSF calls "
+"the <literal>delete()</literal> action listener. Seam intercepts this call "
+"and injects the selected row data into the <literal>message</literal> "
+"attribute of the <literal>messageList</literal> component. The action "
+"listener fires, removing the selected <literal>Message</literal> from the "
+"list, and also calling <literal>remove()</literal> on the "
+"<literal>EntityManager</literal>. At the end of the call, Seam refreshes the "
+"<literal>messageList</literal> context variable and clears the context "
+"variable named <literal>message</literal>. The EJB container commits the "
+"transaction, and deletes the <literal>Message</literal> from the database. "
+"Finally, the page is re-rendered, redisplaying the message list."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:550
+#, no-c-format
+msgid "Seam and jBPM: the todo list example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:551
+#, no-c-format
+msgid ""
+"jBPM provides sophisticated functionality for workflow and task management. "
+"To get a small taste of how jBPM integrates with Seam, we'll show you a "
+"simple \"todo list\" application. Since managing lists of tasks is such core "
+"functionality for jBPM, there is hardly any Java code at all in this example."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:564
+#, no-c-format
+msgid ""
+"The center of this example is the jBPM process definition. There are also "
+"two JSPs and two trivial JavaBeans (There was no reason to use session "
+"beans, since they do not access the database, or have any other "
+"transactional behavior). Let's start with the process definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:575
+#, no-c-format
+msgid ""
+"&lt;process-definition name=\"todo\"&gt;\n"
+"   \n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"todo\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;task-node name=\"todo\"&gt;\n"
+"      &lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"         &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"      &lt;/task&gt;\n"
+"      &lt;transition to=\"done\"/&gt;\n"
+"   &lt;/task-node&gt;\n"
+"   \n"
+"   &lt;end-state name=\"done\"/&gt;\n"
+"   \n"
+"&lt;/process-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:578
+#, no-c-format
+msgid ""
+"The <literal>&lt;start-state&gt;</literal> node represents the logical start "
+"of the process. When the process starts, it immediately transitions to the "
+"<literal>todo</literal> node."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:583
+#, no-c-format
+msgid ""
+"The <literal>&lt;task-node&gt;</literal> node represents a <emphasis>wait "
+"state</emphasis>, where business process execution pauses, waiting for one "
+"or more tasks to be performed."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:588
+#, no-c-format
+msgid ""
+"The <literal>&lt;task&gt;</literal> element defines a task to be performed "
+"by a user. Since there is only one task defined on this node, when it is "
+"complete, execution resumes, and we transition to the end state. The task "
+"gets its description from a Seam component named <literal>todoList</literal> "
+"(one of the JavaBeans)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:593
+#, no-c-format
+msgid ""
+"Tasks need to be assigned to a user or group of users when they are created. "
+"In this case, the task is assigned to the current user, which we get from a "
+"built-in Seam component named <literal>actor</literal>. Any Seam component "
+"may be used to perform task assignment."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:598
+#, no-c-format
+msgid ""
+"The <literal>&lt;end-state&gt;</literal> node defines the logical end of the "
+"business process. When execution reaches this node, the process instance is "
+"destroyed."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:605
+#, no-c-format
+msgid ""
+"If we view this process definition using the process definition editor "
+"provided by JBossIDE, this is what it looks like:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:616
+#, no-c-format
+msgid ""
+"This document defines our <emphasis>business process</emphasis> as a graph "
+"of nodes. This is the most trivial possible business process: there is one "
+"<emphasis>task</emphasis> to be performed, and when that task is complete, "
+"the business process ends."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:619
+#, no-c-format
+msgid ""
+"The first JavaBean handles the login screen <literal>login.jsp</literal>. "
+"Its job is just to initialize the jBPM actor id using the <literal>actor</"
+"literal> component. (In a real application, it would also need to "
+"authenticate the user.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:622
+#, no-c-format
+msgid ""
+"@Name(\"login\")\n"
+"public class Login {\n"
+"   \n"
+"   @In\n"
+"   private Actor actor;\n"
+"   \n"
+"   private String user;\n"
+"\n"
+"   public String getUser() {\n"
+"      return user;\n"
+"   }\n"
+"\n"
+"   public void setUser(String user) {\n"
+"      this.user = user;\n"
+"   }\n"
+"   \n"
+"   public String login()\n"
+"   {\n"
+"      actor.setId(user);\n"
+"      return \"/todo.jsp\";\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:623
+#, no-c-format
+msgid ""
+"Here we see the use of <literal>@In</literal> to inject the built-in "
+"<literal>Actor</literal> component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:626
+#, no-c-format
+msgid "The JSP itself is trivial:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:629
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"&#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"&#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Login&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Login&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    &lt;h:form&gt;\n"
+"      &lt;div&gt;\n"
+"        &lt;h:inputText value=\"#{login.user}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Login\" action=\"#{login.login}\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"    &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:630
+#, no-c-format
+msgid ""
+"The second JavaBean is responsible for starting business process instances, "
+"and ending tasks."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:639
+#, no-c-format
+msgid ""
+"@Name(\"todoList\")\n"
+"public class TodoList {\n"
+"   \n"
+"   private String description;\n"
+"   \n"
+"   public String getDescription()\n"
+"   {\n"
+"      return description;\n"
+"   }\n"
+"\n"
+"   public void setDescription(String description) {\n"
+"      this.description = description;\n"
+"   }\n"
+"   \n"
+"   @CreateProcess(definition=\"todo\")\n"
+"   public void createTodo() {}\n"
+"   \n"
+"   @StartTask @EndTask\n"
+"   public void done() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:642
+#, no-c-format
+msgid ""
+"The description property accepts user input form the JSP page, and exposes "
+"it to the process definition, allowing the task description to be set."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:647
+#, no-c-format
+msgid ""
+"The Seam <literal>@CreateProcess</literal> annotation creates a new jBPM "
+"process instance for the named process definition."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:652
+#, no-c-format
+msgid ""
+"The Seam <literal>@StartTask</literal> annotation starts work on a task. The "
+"<literal>@EndTask</literal> ends the task, and allows the business process "
+"execution to resume."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:659
+#, no-c-format
+msgid ""
+"In a more realistic example, <literal>@StartTask</literal> and "
+"<literal>@EndTask</literal> would not appear on the same method, because "
+"there is usually work to be done using the application in order to complete "
+"the task."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:662
+#, no-c-format
+msgid "Finally, the meat of the application is in <literal>todo.jsp</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:665
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://jboss.com/products/seam/taglib\" prefix=\"s\" "
+"&#37;&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Todo List&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Todo List&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"   &lt;h:form id=\"list\"&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:outputText value=\"There are no todo items.\" rendered=\"#"
+"{empty \n"
+"             taskInstanceList}\"/&gt;\n"
+"         &lt;h:dataTable value=\"#{taskInstanceList}\" var=\"task\" rendered="
+"\"#{not empty taskInstanceList}\"&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Description\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.description}\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Created\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:outputText value=\"#{task.taskMgmtInstance."
+"processInstance.start}\"&gt;\n"
+"                    &lt;f:convertDateTime type=\"date\"/&gt;\n"
+"                &lt;/h:outputText&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Priority\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.priority}\" style=\"width: 30"
+"\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Due Date\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.dueDate}\" style=\"width: 100"
+"\"&gt;\n"
+"                    &lt;f:convertDateTime type=\"date\" dateStyle=\"short\"/"
+"&gt;\n"
+"                &lt;/h:inputText&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;s:button value=\"Done\" action=\"#{todoList.done}\" "
+"taskInstance=\"#{task}\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"         &lt;/h:dataTable&gt;\n"
+"      &lt;/div&gt;\n"
+"      &lt;div&gt;\n"
+"      &lt;h:messages/&gt;\n"
+"      &lt;/div&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:commandButton value=\"Update Items\" action=\"update\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"   &lt;h:form id=\"new\"&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:inputText value=\"#{todoList.description}\"/&gt;\n"
+"         &lt;h:commandButton value=\"Create New Item\" action=\"#{todoList."
+"createTodo}\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:666
+#, no-c-format
+msgid "Let's take this one piece at a time."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:669
+#, no-c-format
+msgid ""
+"The page renders a list of tasks, which it gets from a built-in Seam "
+"component named <literal>taskInstanceList</literal>. The list is defined "
+"inside a JSF form."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:672
+#, no-c-format
+msgid ""
+"&lt;h:form id=\"list\"&gt;\n"
+"   &lt;div&gt;\n"
+"      &lt;h:outputText value=\"There are no todo items.\" rendered=\"#{empty "
+"taskInstanceList}\"/&gt;\n"
+"      &lt;h:dataTable value=\"#{taskInstanceList}\" var=\"task\" rendered=\"#"
+"{not empty taskInstanceList}\"&gt;\n"
+"         ...\n"
+"      &lt;/h:dataTable&gt;\n"
+"   &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:673
+#, no-c-format
+msgid ""
+"Each element of the list is an instance of the jBPM class "
+"<literal>TaskInstance</literal>. The following code simply displays the "
+"interesting properties of each task in the list. For the description, "
+"priority and due date, we use input controls, to allow the user to update "
+"these values."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:676
+#, no-c-format
+msgid ""
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"       &lt;h:outputText value=\"Description\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.description}\"/&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Created\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:outputText value=\"#{task.taskMgmtInstance.processInstance.start}"
+"\"&gt;\n"
+"        &lt;f:convertDateTime type=\"date\"/&gt;\n"
+"    &lt;/h:outputText&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Priority\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.priority}\" style=\"width: 30\"/&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Due Date\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.dueDate}\" style=\"width: 100\"&gt;\n"
+"        &lt;f:convertDateTime type=\"date\" dateStyle=\"short\"/&gt;\n"
+"    &lt;/h:inputText&gt;\n"
+"&lt;/h:column&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:677
+#, no-c-format
+msgid ""
+"This button ends the task by calling the action method annotated "
+"<literal>@StartTask @EndTask</literal>. It passes the task id to Seam as a "
+"request parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:680
+#, no-c-format
+msgid ""
+"&lt;h:column&gt;\n"
+"    &lt;s:button value=\"Done\" action=\"#{todoList.done}\" taskInstance=\"#"
+"{task}\"/&gt;\n"
+"&lt;/h:column&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:681
+#, no-c-format
+msgid ""
+"(Note that this is using a Seam <literal>&lt;s:button&gt;</literal> JSF "
+"control from the <literal>seam-ui.jar</literal> package.)"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:684
+#, no-c-format
+msgid ""
+"This button is used to update the properties of the tasks. When the form is "
+"submitted, Seam and jBPM will make any changes to the tasks persistent. "
+"There is no need for any action listener method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:687
+#, no-c-format
+msgid "&lt;h:commandButton value=\"Update Items\" action=\"update\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:688
+#, no-c-format
+msgid ""
+"A second form on the page is used to create new items, by calling the action "
+"method annotated <literal>@CreateProcess</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:691
+#, no-c-format
+msgid ""
+"&lt;h:form id=\"new\"&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:inputText value=\"#{todoList.description}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Create New Item\" action=\"#{todoList."
+"createTodo}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:692
+#, no-c-format
+msgid ""
+"There are several other files needed for the example, but they are just "
+"standard jBPM and Seam configuration and not very interesting."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:699 Tutorial.xml:814 Tutorial.xml:1157 Tutorial.xml:1178
+#: Tutorial.xml:1191
+#, no-c-format
+msgid "TODO"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:707
+#, no-c-format
+msgid "Seam pageflow: the numberguess example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:708
+#, no-c-format
+msgid ""
+"For Seam applications with relatively freeform (ad hoc) navigation, JSF/Seam "
+"navigation rules are a perfectly good way to define the page flow. For "
+"applications with a more constrained style of navigation, especially for "
+"user interfaces which are more stateful, navigation rules make it difficult "
+"to really understand the flow of the system. To understand the flow, you "
+"need to piece it together from the view pages, the actions and the "
+"navigation rules."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:711
+#, no-c-format
+msgid ""
+"Seam allows you to use a jPDL process definition to define pageflow. The "
+"simple number guessing example shows how this is done."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:724
+#, no-c-format
+msgid ""
+"The example is implemented using one JavaBean, three JSP pages and a jPDL "
+"pageflow definition. Let's begin with the pageflow:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:734
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"numberGuess\"&gt;\n"
+"   \n"
+"   &lt;start-page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"          &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"      &lt;/transition&gt;\n"
+"   &lt;/start-page&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess."
+"correctGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateRemainingGuesses\" expression=\"#{numberGuess."
+"lastGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"lose\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"displayGuess\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"lose\" view-id=\"/lose.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:737
+#, no-c-format
+msgid ""
+"The <literal>&lt;page&gt;</literal> element defines a wait state where the "
+"system displays a particular JSF view and waits for user input. The "
+"<literal>view-id</literal> is the same JSF view id used in plain JSF "
+"navigation rules. The <literal>redirect</literal> attribute tells Seam to "
+"use post-then-redirect when navigating to the page. (This results in "
+"friendly browser URLs.)"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:742
+#, no-c-format
+msgid ""
+"The <literal>&lt;transition&gt;</literal> element names a JSF outcome. The "
+"transition is triggered when a JSF action results in that outcome. Execution "
+"will then proceed to the next node of the pageflow graph, after invocation "
+"of any jBPM transition actions."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:747
+#, no-c-format
+msgid ""
+"A transition <literal>&lt;action&gt;</literal> is just like a JSF action, "
+"except that it occurs when a jBPM transition occurs. The transition action "
+"can invoke any Seam component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:752
+#, no-c-format
+msgid ""
+"A <literal>&lt;decision&gt;</literal> node branches the pageflow, and "
+"determines the next node to execute by evaluating a JSF EL expression."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:759
+#, no-c-format
+msgid "Here is what the pageflow looks like in the JBossIDE pageflow editor:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:770
+#, no-c-format
+msgid ""
+"Now that we have seen the pageflow, it is very, very easy to understand the "
+"rest of the application!"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:773
+#, no-c-format
+msgid ""
+"Here is the main page of the application, <literal>numberGuess.jsp</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:776
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"&#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"&#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Guess a number...&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Guess a number...&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    &lt;h:form&gt;\n"
+"        &lt;h:outputText value=\"Higher!\" rendered=\"#{numberGuess."
+"randomNumber&gt;numberGuess.currentGuess}\" /&gt;\n"
+"        &lt;h:outputText value=\"Lower!\" rendered=\"#{numberGuess."
+"randomNumber&lt;numberGuess.currentGuess}\" /&gt;\n"
+"        &lt;br /&gt;\n"
+"        I'm thinking of a number between &lt;h:outputText value=\"#"
+"{numberGuess.smallest}\" /&gt; and \n"
+"        &lt;h:outputText value=\"#{numberGuess.biggest}\" /&gt;. You have \n"
+"        &lt;h:outputText value=\"#{numberGuess.remainingGuesses}\" /&gt; "
+"guesses.\n"
+"        &lt;br /&gt;\n"
+"        Your guess: \n"
+"        &lt;h:inputText value=\"#{numberGuess.currentGuess}\" id=\"guess\" "
+"required=\"true\"&gt;\n"
+"            &lt;f:validateLongRange\n"
+"                maximum=\"#{numberGuess.biggest}\" \n"
+"                minimum=\"#{numberGuess.smallest}\"/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"        &lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"guess"
+"\" /&gt;\n"
+"        &lt;br/&gt;\n"
+"        &lt;h:message for=\"guess\" style=\"color: red\"/&gt;\n"
+"    &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:777
+#, no-c-format
+msgid ""
+"Notice how the command button names the <literal>guess</literal> transition "
+"instead of calling an action directly."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:780
+#, no-c-format
+msgid "The <literal>win.jsp</literal> page is predictable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:783
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"&#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"&#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;You won!&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;You won!&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    Yes, the answer was &lt;h:outputText value=\"#{numberGuess.currentGuess}"
+"\" /&gt;.\n"
+"    It took you &lt;h:outputText value=\"#{numberGuess.guessCount}\" /&gt; "
+"guesses.\n"
+"    Would you like to &lt;a href=\"numberGuess.seam\"&gt;play again&lt;/"
+"a&gt;?\n"
+"  &lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:784
+#, no-c-format
+msgid ""
+"As is <literal>lose.jsp</literal> (which I can't be bothered copy/pasting). "
+"Finally, the JavaBean Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:792
+#, no-c-format
+msgid ""
+"@Name(\"numberGuess\")\n"
+"@Scope(ScopeType.CONVERSATION)\n"
+"public class NumberGuess {\n"
+"   \n"
+"   private int randomNumber;\n"
+"   private Integer currentGuess;\n"
+"   private int biggest;\n"
+"   private int smallest;\n"
+"   private int guessCount;\n"
+"   private int maxGuesses;\n"
+"   \n"
+"   @Create \n"
+"   @Begin(pageflow=\"numberGuess\")\n"
+"   public void begin()\n"
+"   {\n"
+"      randomNumber = new Random().nextInt(100);\n"
+"      guessCount = 0;\n"
+"      biggest = 100;\n"
+"      smallest = 1;\n"
+"   }\n"
+"   \n"
+"   public void setCurrentGuess(Integer guess)\n"
+"   {\n"
+"      this.currentGuess = guess;\n"
+"   }\n"
+"   \n"
+"   public Integer getCurrentGuess()\n"
+"   {\n"
+"      return currentGuess;\n"
+"   }\n"
+"   \n"
+"   public void guess()\n"
+"   {\n"
+"      if (currentGuess&gt;randomNumber)\n"
+"      {\n"
+"         biggest = currentGuess - 1;\n"
+"      }\n"
+"      if (currentGuess&lt;randomNumber)\n"
+"      {\n"
+"         smallest = currentGuess + 1;\n"
+"      }\n"
+"      guessCount ++;\n"
+"   }\n"
+"   \n"
+"   public boolean isCorrectGuess()\n"
+"   {\n"
+"      return currentGuess==randomNumber;\n"
+"   }\n"
+"   \n"
+"   public int getBiggest()\n"
+"   {\n"
+"      return biggest;\n"
+"   }\n"
+"   \n"
+"   public int getSmallest()\n"
+"   {\n"
+"      return smallest;\n"
+"   }\n"
+"   \n"
+"   public int getGuessCount()\n"
+"   {\n"
+"      return guessCount;\n"
+"   }\n"
+"   \n"
+"   public boolean isLastGuess()\n"
+"   {\n"
+"      return guessCount==maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getRemainingGuesses() {\n"
+"      return maxGuesses-guessCount;\n"
+"   }\n"
+"\n"
+"   public void setMaxGuesses(int maxGuesses) {\n"
+"      this.maxGuesses = maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getMaxGuesses() {\n"
+"      return maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getRandomNumber() {\n"
+"      return randomNumber;\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:795
+#, no-c-format
+msgid ""
+"The first time a JSP page asks for a <literal>numberGuess</literal> "
+"component, Seam will create a new one for it, and the <literal>@Create</"
+"literal> method will be invoked, allowing the component to initialize itself."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:800
+#, no-c-format
+msgid ""
+"The <literal>@Begin</literal> annotation starts a Seam "
+"<emphasis>conversation</emphasis> (much more about that later), and "
+"specifies the pageflow definition to use for the conversation's page flow."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:807
+#, no-c-format
+msgid ""
+"As you can see, this Seam component is pure business logic! It doesn't need "
+"to know anything at all about the user interaction flow. This makes the "
+"component potentially more reuseable."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:822
+#, no-c-format
+msgid "A complete Seam application: the Hotel Booking example"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:824
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:825
+#, no-c-format
+msgid ""
+"The booking application is a complete hotel room reservation system "
+"incorporating the following features:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:830
+#, no-c-format
+msgid "User registration"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:835
+#, no-c-format
+msgid "Login"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:840
+#, no-c-format
+msgid "Logout"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:845
+#, no-c-format
+msgid "Set password"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:850
+#, no-c-format
+msgid "Hotel search"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:855
+#, no-c-format
+msgid "Hotel selection"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:860
+#, no-c-format
+msgid "Room reservation"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:865
+#, no-c-format
+msgid "Reservation confirmation"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:870
+#, no-c-format
+msgid "Existing reservation list"
+msgstr ""
+
+#. Tag: screeninfo
+#: Tutorial.xml:875
+#, no-c-format
+msgid "Booking example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:883
+#, no-c-format
+msgid ""
+"The booking application uses JSF, EJB 3.0 and Seam, together with Facelets "
+"for the view. There is also a port of this application to JSF, Facelets, "
+"Seam, JavaBeans and Hibernate3."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:886
+#, no-c-format
+msgid ""
+"One of the things you'll notice if you play with this application for long "
+"enough is that it is extremely <emphasis>robust</emphasis>. You can play "
+"with back buttons and browser refresh and opening multiple windows and "
+"entering nonsensical data as much as you like and you will find it very "
+"difficult to make the application crash. You might think that we spent weeks "
+"testing and fixing bugs to achive this. Actually, this is not the case. Seam "
+"was designed to make it very straightforward to build robust web "
+"applications and a lot of robustness that you are probably used to having to "
+"code yourself comes naturally and automatically with Seam."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:889
+#, no-c-format
+msgid ""
+"As you browse the sourcecode of the example application, and learn how the "
+"application works, observe how the declarative state management and "
+"integrated validation has been used to achieve this robustness."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:895
+#, no-c-format
+msgid "Overview of the booking example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:896
+#, no-c-format
+msgid ""
+"The project structure is identical to the previous one, to install and "
+"deploy this application, please refer to <xref linkend=\"Seam_Tutorial-"
+"Try_the_examples\"/>. Once you've successfully started the application, you "
+"can access it by pointing your browser to <ulink url=\"http://localhost:8080/"
+"seam-booking/\"><literal>http://localhost:8080/seam-booking/</literal></"
+"ulink>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:899
+#, no-c-format
+msgid ""
+"Just ten classes (plus six session beans local interfaces and 1 annotation "
+"interface) where used to implement this application. Six session bean action "
+"listeners contain all the business logic for the listed features."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:904
+#, no-c-format
+msgid ""
+"<literal>BookingListAction</literal> retrieves existing bookings for the "
+"currently logged in user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:907
+#, no-c-format
+msgid ""
+"<literal>ChangePasswordAction</literal> updates the password of the "
+"currently logged in user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:910
+#, no-c-format
+msgid ""
+"<literal>HotelBookingAction</literal> implements the core functionality of "
+"the application: hotel room searching, selection, booking and booking "
+"confirmation. This functionality is implemented as a <emphasis>conversation</"
+"emphasis>, so this is the most interesting class in the application."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:913
+#, no-c-format
+msgid ""
+"<literal>LoginAction</literal> validates the login details and retrieves the "
+"logged in user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:916
+#, no-c-format
+msgid "<literal>LogoutAction</literal> ends the login session."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:919
+#, no-c-format
+msgid "<literal>RegisterAction</literal> registers a new system user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:922
+#, no-c-format
+msgid "Three entity beans implement the application's persistent domain model."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:927
+#, no-c-format
+msgid "<literal>Hotel</literal> is an entity bean that represent a hotel"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:930
+#, no-c-format
+msgid ""
+"<literal>Booking</literal> is an entity bean that represents an existing "
+"booking"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:933
+#, no-c-format
+msgid ""
+"<literal>User</literal> is an entity bean to represents a user who can make "
+"hotel bookings"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:936
+#, no-c-format
+msgid ""
+"Finally, the <literal>LoggedIn</literal> annotation and the "
+"<literal>LoggedInInterceptor</literal> are used to protect actions that "
+"require a logged in user."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:942
+#, no-c-format
+msgid "Understanding Seam conversations"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:943
+#, no-c-format
+msgid ""
+"We encourage you browse the sourcecode at your pleasure. In this tutorial "
+"we'll concentrate upon one particular piece of functionality: hotel search, "
+"selection, booking and confirmation. From the point of view of the user, "
+"everything from selecting a hotel to confirming a booking is one continuous "
+"unit of work, a <emphasis>conversation</emphasis>. Searching, however, is "
+"<emphasis>not</emphasis> part of the conversation. The user can select "
+"multiple hotels from the same search results page, in different browser tabs."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:946
+#, no-c-format
+msgid ""
+"Most web application architectures have no first class construct to "
+"represent a conversation. This causes enormous problems managing state "
+"associated with the conversation. Usually, Java web applications use a "
+"combination of two techniques: first, some state is thrown into the "
+"<literal>HttpSession</literal>; second, persistable state is flushed to the "
+"database after every request, and reconstructed from the database at the "
+"beginning of each new request."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:949
+#, no-c-format
+msgid ""
+"Since the database is the least scalable tier, this often results in an "
+"utterly unacceptable lack of scalability. Added latency is also a problem, "
+"due to the extra traffic to and from the database on every request. To "
+"reduce this redundant traffic, Java applications often introduce a data "
+"(second-level) cache that keeps commonly accessed data between requests. "
+"This cache is necessarily inefficient, because invalidation is based upon an "
+"LRU policy instead of being based upon when the user has finished working "
+"with the data. Furthermore, because the cache is shared between many "
+"concurrent transactions, we've introduced a whole raft of problem's "
+"associated with keeping the cached state consistent with the database."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:952
+#, no-c-format
+msgid ""
+"Now consider the state held in the <literal>HttpSession</literal>. By very "
+"careful programming, we might be able to control the size of the session "
+"data. This is a lot more difficult than it sounds, since web browsers permit "
+"ad hoc non-linear navigation. But suppose we suddenly discover a system "
+"requirement that says that a user is allowed to have <emphasis>mutiple "
+"concurrent conversations</emphasis>, halfway through the development of the "
+"system (this has happened to me). Developing mechanisms to isolate session "
+"state associated with different concurrent conversations, and incorporating "
+"failsafes to ensure that conversation state is destroyed when the user "
+"aborts one of the conversations by closing a browser window or tab is not "
+"for the faint hearted (I've implemented this stuff twice so far, once for a "
+"client application, once for Seam, but I'm famously psychotic)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:955
+#, no-c-format
+msgid "Now there is a better way."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:958
+#, no-c-format
+msgid ""
+"Seam introduces the <emphasis>conversation context</emphasis> as a first "
+"class construct. You can safely keep conversational state in this context, "
+"and be assured that it will have a well-defined lifecycle. Even better, you "
+"won't need to be continually pushing data back and forth between the "
+"application server and the database, since the conversation context is a "
+"natural cache of data that the user is currently working with."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:961
+#, no-c-format
+msgid ""
+"Usually, the components we keep in the conversation context are stateful "
+"session beans. (We can also keep entity beans and JavaBeans in the "
+"conversation context.) There is an ancient canard in the Java community that "
+"stateful session beans are a scalability killer. This may have been true in "
+"1998 when WebFoobar 1.0 was released. It is no longer true today. "
+"Application servers like JBoss 4.0 have extremely sophisticated mechanisms "
+"for stateful session bean state replication. (For example, the JBoss EJB3 "
+"container performs fine-grained replication, replicating only those bean "
+"attribute values which actually changed.) Note that all the traditional "
+"technical arguments for why stateful beans are inefficient apply equally to "
+"the <literal>HttpSession</literal>, so the practice of shifting state from "
+"business tier stateful session bean components to the web session to try and "
+"improve performance is unbelievably misguided. It is certainly possible to "
+"write unscalable applications using stateful session beans, by using "
+"stateful beans incorrectly, or by using them for the wrong thing. But that "
+"doesn't mean you should <emphasis>never</emphasis> use them. Anyway, Seam "
+"guides you toward a safe usage model. Welcome to 2005."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:964
+#, no-c-format
+msgid "OK, I'll stop ranting now, and get back to the tutorial."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:967
+#, no-c-format
+msgid ""
+"The booking example application shows how stateful components with different "
+"scopes can collaborate together to achieve complex behaviors. The main page "
+"of the booking application allows the user to search for hotels. The search "
+"results are kept in the Seam session scope. When the user navigates to one "
+"of these hotels, a conversation begins, and a conversation scoped component "
+"calls back to the session scoped component to retrieve the selected hotel."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:970
+#, no-c-format
+msgid ""
+"The booking example also demonstrates the use of Ajax4JSF to implement rich "
+"client behavior without the use of handwritten JavaScript."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:973
+#, no-c-format
+msgid ""
+"The search functionality is implemented using a session-scope stateful "
+"session bean, similar to the one we saw in the message list example above."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:983
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"hotelSearch\")\n"
+"@Scope(ScopeType.SESSION)\n"
+"@LoggedIn\n"
+"public class HotelSearchingAction implements HotelSearching\n"
+"{\n"
+"   \n"
+"   @PersistenceContext\n"
+"   private EntityManager em;\n"
+"   \n"
+"   private String searchString;\n"
+"   private int pageSize = 10;\n"
+"   private int page;\n"
+"   \n"
+"   @DataModel\n"
+"   private List&lt;Hotel&gt; hotels;\n"
+"   \n"
+"   public String find()\n"
+"   {\n"
+"      page = 0;\n"
+"      queryHotels();   \n"
+"      return \"main\";\n"
+"   }\n"
+"\n"
+"   public String nextPage()\n"
+"   {\n"
+"      page++;\n"
+"      queryHotels();\n"
+"      return \"main\";\n"
+"   }\n"
+"      \n"
+"   private void queryHotels()\n"
+"   {\n"
+"      String searchPattern = searchString==null ? \"&#37;\" : '&#37;' + \n"
+"          searchString.toLowerCase().replace('*', '&#37;') + '&#37;';\n"
+"      hotels = em.createQuery(\"select h from Hotel h where lower(h.name) "
+"like\n"
+"          :search or lower(h.city) like :search \n"
+"          or lower(h.zip) like :search or lower(h.address) like :search\")\n"
+"            .setParameter(\"search\", searchPattern)\n"
+"            .setMaxResults(pageSize)\n"
+"            .setFirstResult( page * pageSize )\n"
+"            .getResultList();\n"
+"   }\n"
+"   \n"
+"   public boolean isNextPageAvailable()\n"
+"   {\n"
+"      return hotels!=null &amp;&amp; hotels.size()==pageSize;\n"
+"   }\n"
+"   \n"
+"   public int getPageSize() {\n"
+"      return pageSize;\n"
+"   }\n"
+"\n"
+"   public void setPageSize(int pageSize) {\n"
+"      this.pageSize = pageSize;\n"
+"   }\n"
+"\n"
+"   public String getSearchString()\n"
+"   {\n"
+"      return searchString;\n"
+"   }\n"
+"\n"
+"   public void setSearchString(String searchString)\n"
+"   {\n"
+"      this.searchString = searchString;\n"
+"   }\n"
+"   \n"
+"   @Destroy @Remove\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:986
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Stateful</literal> annotation identifies this "
+"class as a stateful session bean. Stateful session beans are scoped to the "
+"conversation context by default."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:991
+#, no-c-format
+msgid ""
+"The <literal>@LoggedIn</literal> annotation applies a custom Seam "
+"interceptor to the component. This works because <literal>@LoggedIn</"
+"literal> is marked with an <literal>@Interceptor</literal> meta-annotation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:996
+#, no-c-format
+msgid ""
+"The <link linkend=\"datamodel-annotation\"><literal>@DataModel</literal></"
+"link> annotation exposes a <literal>List</literal> as a JSF "
+"<literal>ListDataModel</literal>. This makes it easy to implement clickable "
+"lists for search screens. In this case, the list of hotels is exposed to the "
+"page as a <literal>ListDataModel</literal> in the conversation variable "
+"named <literal>hotels</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1001
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Remove</literal> annotation specifies that a "
+"stateful session bean should be removed and its state destroyed after "
+"invocation of the annotated method. In Seam, all stateful session beans "
+"should define a method marked <literal>@Destroy @Remove</literal>. This is "
+"the EJB remove method that will be called when Seam destroys the session "
+"context. Actually, the <link linkend=\"destroy-annotation"
+"\"><literal>@Destroy</literal></link> annotation is of more general "
+"usefulness, since it can be used for any kind of cleanup that should happen "
+"when any Seam context ends. If you don't have an <literal>@Destroy @Remove</"
+"literal> method, state will leak and you will suffer performance problems."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1008
+#, no-c-format
+msgid ""
+"The main page of the application is a Facelets page. Let's look at the "
+"fragment which relates to searching for hotels:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1018
+#, no-c-format
+msgid ""
+"&lt;div class=\"section\"&gt;\n"
+"&lt;h:form&gt;\n"
+"  \n"
+"  &lt;span class=\"errors\"&gt;\n"
+"    &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"  &lt;/span&gt;\n"
+"    \n"
+"  &lt;h1&gt;Search Hotels&lt;/h1&gt;\n"
+"  &lt;fieldset&gt; \n"
+"     &lt;h:inputText value=\"#{hotelSearch.searchString}\" style=\"width: "
+"165px;\"&gt;\n"
+"        &lt;a:support event=\"onkeyup\" actionListener=\"#{hotelSearch.find}"
+"\" \n"
+"                   reRender=\"searchResults\" /&gt;\n"
+"     &lt;/h:inputText&gt;\n"
+"     &amp;#160;\n"
+"     &lt;a:commandButton value=\"Find Hotels\" action=\"#{hotelSearch.find}"
+"\" \n"
+"                      styleClass=\"button\" reRender=\"searchResults\"/&gt;\n"
+"     &amp;#160;\n"
+"     &lt;a:status&gt;\n"
+"        &lt;f:facet name=\"start\"&gt;\n"
+"           &lt;h:graphicImage value=\"/img/spinner.gif\"/&gt;\n"
+"        &lt;/f:facet&gt;\n"
+"     &lt;/a:status&gt;\n"
+"     &lt;br/&gt;\n"
+"     &lt;h:outputLabel for=\"pageSize\"&gt;Maximum results:&lt;/h:"
+"outputLabel&gt;&amp;#160;\n"
+"     &lt;h:selectOneMenu value=\"#{hotelSearch.pageSize}\" id=\"pageSize"
+"\"&gt;\n"
+"        &lt;f:selectItem itemLabel=\"5\" itemValue=\"5\"/&gt;\n"
+"        &lt;f:selectItem itemLabel=\"10\" itemValue=\"10\"/&gt;\n"
+"        &lt;f:selectItem itemLabel=\"20\" itemValue=\"20\"/&gt;\n"
+"     &lt;/h:selectOneMenu&gt;\n"
+"  &lt;/fieldset&gt;\n"
+"    \n"
+"&lt;/h:form&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;a:outputPanel id=\"searchResults\"&gt;\n"
+"  &lt;div class=\"section\"&gt;\n"
+"  &lt;h:outputText value=\"No Hotels Found\" \n"
+"                rendered=\"#{hotels != null and hotels.rowCount==0}\"/&gt;\n"
+"  &lt;h:dataTable value=\"#{hotels}\" var=\"hot\" rendered=\"#{hotels."
+"rowCount&gt;0}\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Name&lt;/f:facet&gt;\n"
+"      #{hot.name}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Address&lt;/f:facet&gt;\n"
+"      #{hot.address}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;City, State&lt;/f:facet&gt;\n"
+"      #{hot.city}, #{hot.state}, #{hot.country}\n"
+"    &lt;/h:column&gt; \n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Zip&lt;/f:facet&gt;\n"
+"      #{hot.zip}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"      &lt;s:link value=\"View Hotel\" action=\"#{hotelBooking.selectHotel"
+"(hot)}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"  &lt;/h:dataTable&gt;\n"
+"  &lt;s:link value=\"More results\" action=\"#{hotelSearch.nextPage}\" \n"
+"          rendered=\"#{hotelSearch.nextPageAvailable}\"/&gt;\n"
+"  &lt;/div&gt;\n"
+"&lt;/a:outputPanel&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1021
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:support&gt;</literal> tag allows a JSF action "
+"event listener to be called by asynchronous <literal>XMLHttpRequest</"
+"literal> when a JavaScript event like <literal>onkeyup</literal> occurs. "
+"Even better, the <literal>reRender</literal> attribute lets us render a "
+"fragment of the JSF page and perform a partial page update when the "
+"asynchronous response is received."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1026
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:status&gt;</literal> tag lets us display a "
+"cheesy annimated image while we wait for asynchronous requests to return."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1031
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:outputPanel&gt;</literal> tag defines a region "
+"of the page which can be re-rendered by an asynchronous request."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1036
+#, no-c-format
+msgid ""
+"The Seam <literal>&lt;s:link&gt;</literal> tag lets us attach a JSF action "
+"listener to an ordinary (non-JavaScript) HTML link. The advantage of this "
+"over the standard JSF <literal>&lt;h:commandLink&gt;</literal> is that it "
+"preserves the operation of \"open in new window\" and \"open in new tab\". "
+"Also notice that we use a method binding with a parameter: <literal>#"
+"{hotelBooking.selectHotel(hot)}</literal>. This is not possible in the "
+"standard Unified EL, but Seam provides an extension to the EL that lets you "
+"use parameters on any method binding expression."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1043
+#, no-c-format
+msgid ""
+"This page displays the search results dynamically as we type, and lets us "
+"choose a hotel and pass it to the <literal>selectHotel()</literal> method of "
+"the <literal>HotelBookingAction</literal>, which is where the "
+"<emphasis>really</emphasis> interesting stuff is going to happen."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1046
+#, no-c-format
+msgid ""
+"Now lets see how the booking example application uses a conversation-scoped "
+"stateful session bean to achieve a natural cache of persistent data related "
+"to the conversation. The following code example is pretty long. But if you "
+"think of it as a list of scripted actions that implement the various steps "
+"of the conversation, it's understandable. Read the class from top to bottom, "
+"as if it were a story."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1057
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"hotelBooking\")\n"
+"@LoggedIn\n"
+"public class HotelBookingAction implements HotelBooking\n"
+"{\n"
+"   \n"
+"   @PersistenceContext(type=EXTENDED)\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @In \n"
+"   private User user;\n"
+"   \n"
+"   @In(required=false) @Out\n"
+"   private Hotel hotel;\n"
+"   \n"
+"   @In(required=false) \n"
+"   @Out(required=false)\n"
+"   private Booking booking;\n"
+"     \n"
+"   @In\n"
+"   private FacesMessages facesMessages;\n"
+"      \n"
+"   @In\n"
+"   private Events events;\n"
+"   \n"
+"   @Logger \n"
+"   private Log log;\n"
+"   \n"
+"   @Begin\n"
+"   public String selectHotel(Hotel selectedHotel)\n"
+"   {\n"
+"      hotel = em.merge(selectedHotel);\n"
+"      return \"hotel\";\n"
+"   }\n"
+"   \n"
+"   public String bookHotel()\n"
+"   {      \n"
+"      booking = new Booking(hotel, user);\n"
+"      Calendar calendar = Calendar.getInstance();\n"
+"      booking.setCheckinDate( calendar.getTime() );\n"
+"      calendar.add(Calendar.DAY_OF_MONTH, 1);\n"
+"      booking.setCheckoutDate( calendar.getTime() );\n"
+"      \n"
+"      return \"book\";\n"
+"   }\n"
+"\n"
+"   public String setBookingDetails()\n"
+"   {\n"
+"      if (booking==null || hotel==null) return \"main\";\n"
+"      if ( !booking.getCheckinDate().before( booking.getCheckoutDate() ) )\n"
+"      {\n"
+"         facesMessages.add(\"Check out date must be later than check in date"
+"\");\n"
+"         return null;\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return \"confirm\";\n"
+"      }\n"
+"   }\n"
+"\n"
+"   @End\n"
+"   public String confirm()\n"
+"   {\n"
+"      if (booking==null || hotel==null) return \"main\";\n"
+"      em.persist(booking);\n"
+"      facesMessages.add\n"
+"          (\"Thank you, #{user.name}, your confimation number for #{hotel."
+"name} is #{booking.id}\");\n"
+"      log.info(\"New booking: #{booking.id} for #{user.username}\");\n"
+"      events.raiseEvent(\"bookingConfirmed\");\n"
+"      return \"confirmed\";\n"
+"   }\n"
+"   \n"
+"   @End\n"
+"   public String cancel()\n"
+"   {\n"
+"      return \"main\";\n"
+"   }\n"
+"   \n"
+"   @Destroy @Remove\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1060
+#, no-c-format
+msgid ""
+"This bean uses an EJB3 <emphasis>extended persistence context</emphasis>, so "
+"that any entity instances remain managed for the whole lifecycle of the "
+"stateful session bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1065
+#, no-c-format
+msgid ""
+"The <link linkend=\"out-annotation\"><literal>@Out</literal></link> "
+"annotation declares that an attribute value is <emphasis>outjected</"
+"emphasis> to a context variable after method invocations. In this case, the "
+"context variable named <literal>hotel</literal> will be set to the value of "
+"the <literal>hotel</literal> instance variable after every action listener "
+"invocation completes."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1070
+#, no-c-format
+msgid ""
+"The <link linkend=\"begin-annotation\"><literal>@Begin</literal></link> "
+"annotation specifies that the annotated method begins a <emphasis>long-"
+"running conversation</emphasis>, so the current conversation context will "
+"not be destroyed at the end of the request. Instead, it will be reassociated "
+"with every request from the current window, and destroyed either by timeout "
+"due to conversation inactivity or invocation of a matching <literal>@End</"
+"literal> method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1075
+#, no-c-format
+msgid ""
+"The <link linkend=\"end-annotation\"><literal>@End</literal></link> "
+"annotation specifies that the annotated method ends the current long-running "
+"conversation, so the current conversation context will be destroyed at the "
+"end of the request."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1080
+#, no-c-format
+msgid ""
+"This EJB remove method will be called when Seam destroys the conversation "
+"context. Don't ever forget to define this method!"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1087
+#, no-c-format
+msgid ""
+"<literal>HotelBookingAction</literal> contains all the action listener "
+"methods that implement selection, booking and booking confirmation, and "
+"holds state related to this work in its instance variables. We think you'll "
+"agree that this code is much cleaner and simpler than getting and setting "
+"<literal>HttpSession</literal> attributes."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1090
+#, no-c-format
+msgid ""
+"Even better, a user can have multiple isolated conversations per login "
+"session. Try it! Log in, run a search, and navigate to different hotel pages "
+"in multiple browser tabs. You'll be able to work on creating two different "
+"hotel reservations at the same time. If you leave any one conversation "
+"inactive for long enough, Seam will eventually time out that conversation "
+"and destroy its state. If, after ending a conversation, you backbutton to a "
+"page of that conversation and try to perform an action, Seam will detect "
+"that the conversation was already ended, and redirect you to the search page."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1096
+#, no-c-format
+msgid "The Seam UI control library"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1097
+#, no-c-format
+msgid ""
+"If you check inside the WAR file for the booking application, you'll find "
+"<literal>seam-ui.jar</literal> in the <literal>WEB-INF/lib</literal> "
+"directory. This package contains a number of JSF custom controls that "
+"integrate with Seam. The booking application uses the <literal>&lt;s:link&gt;"
+"</literal> control for navigation from the search screen to the hotel page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1100
+#, no-c-format
+msgid ""
+"&lt;s:link value=\"View Hotel\" action=\"#{hotelBooking.selectHotel}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1101
+#, no-c-format
+msgid ""
+"The use of <literal>&lt;s:link&gt;</literal> here allows us to attach an "
+"action listener to a HTML link without breaking the browser's \"open in new "
+"window\" feature. The standard JSF <literal>&lt;h:commandLink&gt;</literal> "
+"does not work with \"open in new window\". We'll see later that <literal>&lt;"
+"s:link&gt;</literal> also offers a number of other useful features, "
+"including conversation propagation rules."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1104
+#, no-c-format
+msgid ""
+"The booking application uses some other Seam and Ajax4JSF controls, "
+"especially on the <literal>/book.xhtml</literal> page. We won't get into the "
+"details of those controls here, but if you want to understand this code, "
+"please refer to the chapter covering Seam's functionality for JSF form "
+"validation."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1110
+#, no-c-format
+msgid "The Seam Debug Page"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1111
+#, no-c-format
+msgid ""
+"The WAR also includes <literal>seam-debug.jar</literal>. If this jar is "
+"deployed in <literal>WEB-INF/lib</literal>, along with the Facelets, and if "
+"you set the following Seam property in <literal>web.xml</literal> or "
+"<literal>seam.properties</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1114
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;org.jboss.seam.core.init.debug&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;true&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1115
+#, no-c-format
+msgid ""
+"Then the Seam debug page will be available. This page lets you browse and "
+"inspect the Seam components in any of the Seam contexts associated with your "
+"current login session. Just point your browser at <ulink url=\"http://"
+"localhost:8080/seam-booking/debug.seam\"><literal>http://localhost:8080/seam-"
+"booking/debug.seam</literal></ulink>."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1131
+#, no-c-format
+msgid "A complete application featuring Seam and jBPM: the DVD Store example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1132
+#, no-c-format
+msgid ""
+"The DVD Store demo application shows the practical usage of jBPM for both "
+"task management and pageflow."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1135
+#, no-c-format
+msgid ""
+"The user screens take advantage of a jPDL pageflow to implement searching "
+"and shopping cart functionality."
+msgstr ""
+
+#. Tag: screeninfo
+#: Tutorial.xml:1138 Tutorial.xml:1149 Tutorial.xml:1170
+#, no-c-format
+msgid "DVD Store example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1146
+#, no-c-format
+msgid ""
+"The administration screens take use jBPM to manage the approval and shipping "
+"cycle for orders. The business process may even be changed dynamically, by "
+"selecting a different process definition!"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1160
+#, no-c-format
+msgid "Look in the <literal>dvdstore</literal> directory."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1166
+#, no-c-format
+msgid ""
+"A complete application featuring Seam workspace management: the Issue "
+"Tracker example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1167
+#, no-c-format
+msgid ""
+"The Issue Tracker demo shows off Seam's workspace management functionality: "
+"the conversation switcher, conversation list and breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1181
+#, no-c-format
+msgid "Look in the <literal>issues</literal> directory."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1187
+#, no-c-format
+msgid "An example of Seam with Hibernate: the Hibernate Booking example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1188
+#, no-c-format
+msgid ""
+"The Hibernate Booking demo is a straight port of the Booking demo to an "
+"alternative architecture that uses Hibernate for persistence and JavaBeans "
+"instead of session beans."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1194
+#, no-c-format
+msgid "Look in the <literal>hibernate</literal> directory."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1200
+#, no-c-format
+msgid "A RESTful Seam application: the Blog example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1201
+#, no-c-format
+msgid ""
+"Seam makes it very easy to implement applications which keep state on the "
+"server-side. However, server-side state is not always appropriate, "
+"especially in for functionality that serves up <emphasis>content</emphasis>. "
+"For this kind of problem we often need to let the user bookmark pages and "
+"have a relatively stateless server, so that any page can be accessed at any "
+"time, via the bookmark. The Blog example shows how to a implement RESTful "
+"application using Seam. Every page of the application can be bookmarked, "
+"including the search results page."
+msgstr ""
+
+#. Tag: screeninfo
+#: Tutorial.xml:1204
+#, no-c-format
+msgid "Blog example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1212
+#, no-c-format
+msgid ""
+"The Blog example demonstrates the use of \"pull\"-style MVC, where instead "
+"of using action listener methods to retrieve data and prepare the data for "
+"the view, the view pulls data from components as it is being rendered."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1216
+#, no-c-format
+msgid "Using \"pull\"-style MVC"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1217
+#, no-c-format
+msgid ""
+"This snippet from the <literal>index.xhtml</literal> facelets page displays "
+"a list of recent blog entries:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1220
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{blog.recentBlogEntries}\" var=\"blogEntry\" rows="
+"\"3\"&gt;\n"
+"   &lt;h:column&gt;\n"
+"      &lt;div class=\"blogEntry\"&gt;\n"
+"         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"         &lt;div&gt;\n"
+"            &lt;h:outputText escape=\"false\" \n"
+"                  value=\"#{blogEntry.excerpt==null ? blogEntry.body : "
+"blogEntry.excerpt}\"/&gt;\n"
+"         &lt;/div&gt;\n"
+"         &lt;p&gt;\n"
+"            &lt;h:outputLink value=\"entry.seam\" rendered=\"#{blogEntry."
+"excerpt!=null}\"&gt;\n"
+"               &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/"
+"&gt;\n"
+"               Read more...\n"
+"            &lt;/h:outputLink&gt;\n"
+"         &lt;/p&gt;\n"
+"         &lt;p&gt;\n"
+"            [Posted on \n"
+"            &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"               &lt;f:convertDateTime timeZone=\"#{blog.timeZone}\" locale=\"#"
+"{blog.locale}\" \n"
+"                   type=\"both\"/&gt;\n"
+"            &lt;/h:outputText&gt;]\n"
+"            &amp;#160;\n"
+"            &lt;h:outputLink value=\"entry.seam\"&gt;[Link]\n"
+"               &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/"
+"&gt;\n"
+"            &lt;/h:outputLink&gt;\n"
+"         &lt;/p&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1221
+#, no-c-format
+msgid ""
+"If we navigate to this page from a bookmark, how does the data used by the "
+"<literal>&lt;h:dataTable&gt;</literal> actually get initialized? Well, what "
+"happens is that the <literal>Blog</literal> is retrieved lazily&mdash;"
+"\"pulled\"&mdash;when needed, by a Seam component named <literal>blog</"
+"literal>. This is the opposite flow of control to what is usual in "
+"traditional web action-based frameworks like Struts."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1229
+#, no-c-format
+msgid ""
+"@Name(\"blog\")\n"
+"@Scope(ScopeType.STATELESS)\n"
+"public class BlogService \n"
+"{\n"
+"   \n"
+"   @In\n"
+"   private EntityManager entityManager;\n"
+"  \n"
+"   @Unwrap\n"
+"   public Blog getBlog()\n"
+"   {\n"
+"      return (Blog) entityManager.createQuery(\"from Blog b left join fetch "
+"b.blogEntries\")\n"
+"            .setHint(\"org.hibernate.cacheable\", true)\n"
+"            .getSingleResult();\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1232
+#, no-c-format
+msgid ""
+"This component uses a <emphasis>seam-managed persistence context</emphasis>. "
+"Unlike the other examples we've seen, this persistence context is managed by "
+"Seam, instead of by the EJB3 container. The persistence context spans the "
+"entire web request, allowing us to avoid any exceptions that occur when "
+"accessing unfetched associations in the view."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1237
+#, no-c-format
+msgid ""
+"The <literal>@Unwrap</literal> annotation tells Seam to provide the return "
+"value of the method&mdash;the <literal>Blog</literal>&mdash;instead of the "
+"actual <literal>BlogService</literal> component to clients. This is the Seam "
+"<emphasis>manager component pattern</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1244
+#, no-c-format
+msgid ""
+"This is good so far, but what about bookmarking the result of form "
+"submissions, such as a search results page?"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1250
+#, no-c-format
+msgid "Bookmarkable search results page"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1251
+#, no-c-format
+msgid ""
+"The blog example has a tiny form in the top right of each page that allows "
+"the user to search for blog entries. This is defined in a file, "
+"<literal>menu.xhtml</literal>, included by the facelets template, "
+"<literal>template.xhtml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1254
+#, no-c-format
+msgid ""
+"&lt;div id=\"search\"&gt;\n"
+"   &lt;h:form&gt;\n"
+"      &lt;h:inputText value=\"#{searchAction.searchPattern}\"/&gt;\n"
+"      &lt;h:commandButton value=\"Search\" action=\"/search.xhtml\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1255
+#, no-c-format
+msgid ""
+"To implement a bookmarkable search results page, we need to perform a "
+"browser redirect after processing the search form submission. Because we "
+"used the JSF view id as the action outcome, Seam automatically redirects to "
+"the view id when the form is submitted. Alternatively, we could have defined "
+"a navigation rule like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1258
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"   &lt;navigation-case&gt;\n"
+"      &lt;from-outcome&gt;searchResults&lt;/from-outcome&gt;\n"
+"      &lt;to-view-id&gt;/search.xhtml&lt;/to-view-id&gt;\n"
+"      &lt;redirect/&gt;\n"
+"   &lt;/navigation-case&gt;\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1259
+#, no-c-format
+msgid "Then the form would have looked like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1262
+#, no-c-format
+msgid ""
+"&lt;div id=\"search\"&gt;\n"
+"   &lt;h:form&gt;\n"
+"      &lt;h:inputText value=\"#{searchAction.searchPattern}\"/&gt;\n"
+"      &lt;h:commandButton value=\"Search\" action=\"searchResults\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1263
+#, no-c-format
+msgid ""
+"But when we redirect, we need to include the values submitted with the form "
+"as request parameters, to get a bookmarkable URL like <literal>http://"
+"localhost:8080/seam-blog/search.seam?searchPattern=seam</literal>. JSF does "
+"not provide an easy way to do this, but Seam does. We use a Seam "
+"<emphasis>page parameter</emphasis>, defined in <literal>WEB-INF/pages.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1266
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   &lt;page view-id=\"/search.xhtml\"&gt;\n"
+"      &lt;param name=\"searchPattern\" value=\"#{searchService.searchPattern}"
+"\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1267
+#, no-c-format
+msgid ""
+"This tells Seam to include the value of <literal>#{searchService."
+"searchPattern}</literal> as a request parameter named "
+"<literal>searchPattern</literal> when redirecting to the page, and then re-"
+"apply the value of that parameter to the model before rendering the page."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1270
+#, no-c-format
+msgid "The redirect takes us to the <literal>search.xhtml</literal> page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1273
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{searchResults}\" var=\"blogEntry\"&gt;\n"
+"   &lt;h:column&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:outputLink value=\"entry.seam\"&gt;\n"
+"            &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"            #{blogEntry.title}\n"
+"         &lt;/h:outputLink&gt;\n"
+"         posted on \n"
+"         &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"            &lt;f:convertDateTime timeZone=\"#{blog.timeZone}\" locale=\"#"
+"{blog.locale}\" type=\"both\"/&gt;\n"
+"         &lt;/h:outputText&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1274
+#, no-c-format
+msgid ""
+"Which again uses \"pull\"-style MVC to retrieve the actual search results:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1277
+#, no-c-format
+msgid ""
+"@Name(\"searchService\")\n"
+"public class SearchService \n"
+"{\n"
+"   \n"
+"   @In\n"
+"   private EntityManager entityManager;\n"
+"   \n"
+"   private String searchPattern;\n"
+"   \n"
+"   @Factory(\"searchResults\")\n"
+"   public List&lt;BlogEntry&gt; getSearchResults()\n"
+"   {\n"
+"      if (searchPattern==null)\n"
+"      {\n"
+"         return null;\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return entityManager.createQuery(\"select be from BlogEntry be "
+"where lower(be.title)\n"
+"             like :searchPattern or lower(be.body) like :searchPattern \n"
+"             order by be.date desc\")\n"
+"               .setParameter( \"searchPattern\", getSqlSearchPattern() )\n"
+"               .setMaxResults(100)\n"
+"               .getResultList();\n"
+"      }\n"
+"   }\n"
+"\n"
+"   private String getSqlSearchPattern()\n"
+"   {\n"
+"      return searchPattern==null ? \"\" : '&#37;' + \n"
+"          searchPattern.toLowerCase().replace('*', '&#37;').replace('?', "
+"'_') + '&#37;';\n"
+"   }\n"
+"\n"
+"   public String getSearchPattern()\n"
+"   {\n"
+"      return searchPattern;\n"
+"   }\n"
+"\n"
+"   public void setSearchPattern(String searchPattern)\n"
+"   {\n"
+"      this.searchPattern = searchPattern;\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1282
+#, no-c-format
+msgid "Using \"push\"-style MVC in a RESTful application"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1283
+#, no-c-format
+msgid ""
+"Very occasionally, it makes more sense to use push-style MVC for processing "
+"RESTful pages, and so Seam provides the notion of a <emphasis>page action</"
+"emphasis>. The Blog example uses a page action for the blog entry page, "
+"<literal>entry.xhtml</literal>. Note that this is a little bit contrived, it "
+"would have been easier to use pull-style MVC here as well."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1286
+#, no-c-format
+msgid ""
+"The <literal>entryAction</literal> component works much like an action class "
+"in a traditional push-MVC action-oriented framework like Struts:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1289
+#, no-c-format
+msgid ""
+"@Name(\"entryAction\")\n"
+"@Scope(STATELESS)\n"
+"public class EntryAction\n"
+"{\n"
+"   @In(create=true) \n"
+"   private Blog blog;\n"
+"   \n"
+"   @Out\n"
+"   private BlogEntry blogEntry;\n"
+"   \n"
+"   public void loadBlogEntry(String id) throws EntryNotFoundException\n"
+"   {\n"
+"      blogEntry = blog.getBlogEntry(id);\n"
+"      if (blogEntry==null) throw new EntryNotFoundException(id);\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1290
+#, no-c-format
+msgid "Page actions are also declared in <literal>pages.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1293
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   ...\n"
+"\n"
+"   &lt;page view-id=\"/entry.xhtml\" action=\"#{entryAction.loadBlogEntry"
+"(blogEntry.id)}\"&gt;\n"
+"      &lt;param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"\n"
+"   &lt;page view-id=\"/post.xhtml\" action=\"#{loginAction.challenge}\"/"
+"&gt;\n"
+"\n"
+"   &lt;page view-id=\"*\" action=\"#{blog.hitCount.hit}\"/&gt;\n"
+"\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1294
+#, no-c-format
+msgid ""
+"Notice that the example is using page actions for some other "
+"functionality&mdash;the login challenge, and the pageview counter. Also "
+"notice the use of a parameter in the page action method binding. This is not "
+"a standard feature of JSF EL, but Seam lets you use it, not just for page "
+"actions, but also in JSF method bindings."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1297
+#, no-c-format
+msgid ""
+"When the <literal>entry.xhtml</literal> page is requested, Seam first binds "
+"the page parameter <literal>blogEntryId</literal> to the model, then runs "
+"the page action, which retrieves the needed data&mdash;the "
+"<literal>blogEntry</literal>&mdash;and places it in the Seam event context. "
+"Finally, the following is rendered:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1300
+#, no-c-format
+msgid ""
+"&lt;div class=\"blogEntry\"&gt;\n"
+"   &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"   &lt;div&gt;\n"
+"      &lt;h:outputText escape=\"false\" value=\"#{blogEntry.body}\"/&gt;\n"
+"   &lt;/div&gt;\n"
+"   &lt;p&gt;\n"
+"      [Posted on&amp;#160;\n"
+"      &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"         &lt;f:convertDateTime timezone=\"#{blog.timeZone}\" locale=\"#{blog."
+"locale}\" type=\"both\"/&gt;\n"
+"      &lt;/h:outputText&gt;]\n"
+"   &lt;/p&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1301
+#, no-c-format
+msgid ""
+"If the blog entry is not found in the database, the "
+"<literal>EntryNotFoundException</literal> exception is thrown. We want this "
+"exception to result in a 404 error, not a 505, so we annotate the exception "
+"class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1304
+#, no-c-format
+msgid ""
+"@ApplicationException(rollback=true)\n"
+"@HttpError(errorCode=HttpServletResponse.SC_NOT_FOUND)\n"
+"public class EntryNotFoundException extends Exception\n"
+"{\n"
+"   EntryNotFoundException(String id)\n"
+"   {\n"
+"      super(\"entry not found: \" + id);\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1305
+#, no-c-format
+msgid ""
+"An alternative implementation of the example does not use the parameter in "
+"the method binding:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1308
+#, no-c-format
+msgid ""
+"@Name(\"entryAction\")\n"
+"@Scope(STATELESS)\n"
+"public class EntryAction\n"
+"{\n"
+"   @In(create=true) \n"
+"   private Blog blog;\n"
+"   \n"
+"   @In @Out\n"
+"   private BlogEntry blogEntry;\n"
+"   \n"
+"   public void loadBlogEntry() throws EntryNotFoundException\n"
+"   {\n"
+"      blogEntry = blog.getBlogEntry( blogEntry.getId() );\n"
+"      if (blogEntry==null) throw new EntryNotFoundException(id);\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1309
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   ...\n"
+"\n"
+"   &lt;page view-id=\"/entry.xhtml\" action=\"#{entryAction.loadBlogEntry}"
+"\"&gt;\n"
+"      &lt;param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1310
+#, no-c-format
+msgid "It is a matter of taste which implementation you prefer."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1318
+#, no-c-format
+msgid "Running the Seam examples in JBoss using the JSF 1.2 RI"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1319
+#, no-c-format
+msgid ""
+"JBoss AS 4.0 ships with the Apache MyFaces implementation of JSF 1.1. After "
+"many months of waiting, there is <emphasis>still</emphasis> no "
+"implementation of JSF 1.2 from MyFaces. For this and other reasons, JBoss AS "
+"4.2 will embed the JSF 1.2 Reference Implementation by default. Soon after "
+"the release of 4.2, we will migrate the Seam examples to JSF 1.2."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1322
+#, no-c-format
+msgid ""
+"For those who can't wait, Seam is already compatible with JSF 1.2, and it's "
+"easy to get the Seam examples running with JSF 1.2 in JBoss 4.0.5. Let's "
+"start with the famous booking example:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1327
+#, no-c-format
+msgid ""
+"copy <literal>jsf-api.jar</literal>, <literal>jsf-impl.jar</literal>, "
+"<literal>el-api.jar</literal>, <literal>el-impl.jar</literal> to "
+"<literal>server/default/deploy/tomcat/jbossweb-tomcat55.sar/jsf-libs</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1332
+#, no-c-format
+msgid ""
+"delete <literal>myfaces-api.jar</literal> and <literal>myfaces-impl.jar</"
+"literal> from <literal>server/default/deploy/tomcat/jbossweb-tomcat55.sar/"
+"jsf-libs</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1337
+#, no-c-format
+msgid ""
+"edit <literal>server/default/deploy/tomcat/jbossweb-tomcat55.sar/conf/web."
+"xml</literal>, replacing <literal>myfaces-impl.jar</literal> with "
+"<literal>jsf-impl.jar</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1342
+#, no-c-format
+msgid ""
+"edit <literal>examples/booking/resources/WEB-INF/web.xml</literal>, deleting "
+"the MyFaces listener, uncommenting the RI listener"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1347
+#, no-c-format
+msgid ""
+"edit <literal>examples/booking/resources/WEB-INF/faces-config.xml</literal>, "
+"uncommenting the lines that install the <literal>SeamELResolver</literal> "
+"using the new JSF 1.2 XML schema declaration."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1352
+#, no-c-format
+msgid ""
+"edit <literal>examples/booking/resources/META-INF/application.xml</literal>, "
+"deleting the lines that declare <literal>el-api.jar</literal> and "
+"<literal>el-impl.jar</literal> as Java modules."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1357
+#, no-c-format
+msgid ""
+"Restart JBoss, and type <literal>ant</literal> in the <literal>examples/"
+"booking</literal> directory."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Validation.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Validation.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Validation.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,375 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Validation.xml:10
+#, no-c-format
+msgid "JSF form validation in Seam"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:11
+#, no-c-format
+msgid "In plain JSF, validation is defined in the view:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:14
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Country:\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;my:validateCountry/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Zip code:\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;my:validateZip/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:15
+#, no-c-format
+msgid ""
+"In practice, this approach usually violates DRY, since most \"validation\" "
+"actually enforces constraints that are part of the data model, and exist all "
+"the way down to the database schema definition. Seam provides support for "
+"model-based constraints defined using Hibernate Validator."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:18
+#, no-c-format
+msgid ""
+"Let's start by defining our constraints, on our <literal>Location</literal> "
+"class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:21
+#, no-c-format
+msgid ""
+"public class Location {\n"
+"    private String country;\n"
+"    private String zip;\n"
+"    \n"
+"    @NotNull\n"
+"    @Length(max=30)\n"
+"    public String getCountry() { return country; }\n"
+"    public void setCountry(String c) { country = c; }\n"
+"\n"
+"    @NotNull\n"
+"    @Length(max=6)\n"
+"    @Pattern(\"^&#92;d*&#36;\")\n"
+"    public String getZip() { return zip; }\n"
+"    public void setZip(String z) { zip = z; }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:22
+#, no-c-format
+msgid ""
+"Well, that's a decent first cut, but in practice it might be more elegant to "
+"use custom constraints instead of the ones built into Hibernate Validator:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:25
+#, no-c-format
+msgid ""
+"public class Location {\n"
+"    private String country;\n"
+"    private String zip;\n"
+"    \n"
+"    @NotNull\n"
+"    @Country\n"
+"    public String getCountry() { return country; }\n"
+"    public void setCountry(String c) { country = c; }\n"
+"\n"
+"    @NotNull\n"
+"    @ZipCode\n"
+"    public String getZip() { return zip; }\n"
+"    public void setZip(String z) { zip = z; }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:26
+#, no-c-format
+msgid ""
+"Whichever route we take, we no longer need to specify the type of validation "
+"to be used in the JSF page. Instead, we can use <literal>&lt;s:validate&gt;</"
+"literal> to validate against the constraint defined on the model object."
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:29
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Country:\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;s:validate/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Zip code:\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;s:validate/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:30
+#, no-c-format
+msgid ""
+"<emphasis>Note:</emphasis> specifying <literal>@NotNull</literal> on the "
+"model does <emphasis>not</emphasis> eliminate the requirement for "
+"<literal>required=\"true\"</literal> to appear on the control! This is due "
+"to a limitation of the JSF validation architecture."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:33
+#, no-c-format
+msgid ""
+"This version is not much less verbose than what we started with, so let's "
+"try <literal>&lt;s:validateAll&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:36
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;h:inputText value=\"#{location.country}\" required=\"true\"/"
+"&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/"
+"&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:37
+#, no-c-format
+msgid ""
+"This tag simply adds an <literal>&lt;s:validate&gt;</literal> to every input "
+"in the form. For a large form, it can save a lot of typing!"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:40
+#, no-c-format
+msgid ""
+"Now we need to do something about displaying feedback to the user when "
+"validation fails. Currently we are displaying all messages at the top of the "
+"form. What we would really like to do is display the message next to the "
+"field with the error (this is possible in plain JSF), highlight the field "
+"(this is not possible) and, for good measure, display some image next the "
+"the field (also not possible)."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:43
+#, no-c-format
+msgid "Let's try out <literal>&lt;s:decorate&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:46
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;s:decorate&gt;\n"
+"                &lt;f:facet name=\"beforeInvalidField\"&gt;&lt;h:"
+"graphicImage src=\"img/error.gif\"/&gt;&lt;/f:facet&gt;\n"
+"                &lt;f:facet name=\"afterInvalidField\"&gt;&lt;s:message/&gt;"
+"&lt;/f:facet&gt;\n"
+"                &lt;f:facet name=\"aroundInvalidField\"&gt;&lt;s:span "
+"styleClass=\"error\"/&gt;&lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{location.country}\" required=\"true"
+"\"/&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;s:decorate&gt;\n"
+"                &lt;f:facet name=\"beforeInvalidField\"&gt;&lt;h:"
+"graphicImage src=\"img/error.gif\"/&gt;&lt;/f:facet&gt;\n"
+"                &lt;f:facet name=\"afterInvalidField\"&gt;&lt;s:message/&gt;"
+"&lt;/f:facet&gt;\n"
+"                &lt;f:facet name=\"aroundInvalidField\"&gt;&lt;s:span "
+"styleClass=\"error\"/&gt;&lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/"
+"&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:47
+#, no-c-format
+msgid ""
+"Well, that looks much better to the user, but it is extremely verbose. "
+"Fortunately, the facets of <literal>&lt;s:decorate&gt;</literal> may be "
+"defined on any parent element:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:50
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;f:facet name=\"beforeInvalidField\"&gt;\n"
+"        &lt;h:graphicImage src=\"img/error.gif\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;f:facet name=\"afterInvalidField\"&gt;\n"
+"        &lt;s:message/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;f:facet name=\"aroundInvalidField\"&gt;\n"
+"        &lt;s:span styleClass=\"error\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;s:decorate&gt;\n"
+"                &lt;h:inputText value=\"#{location.country}\" required=\"true"
+"\"/&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;s:decorate&gt;\n"
+"                &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/"
+"&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:51
+#, no-c-format
+msgid ""
+"This approach <emphasis>defines</emphasis> constraints on the model, and "
+"<emphasis>presents</emphasis> constraint violations in the view&mdash;a "
+"significantly better design."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:54
+#, no-c-format
+msgid ""
+"Finally, we can use Ajax4JSF to display validation messages as the user is "
+"typing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:57
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;f:facet name=\"beforeInvalidField\"&gt;\n"
+"        &lt;h:graphicImage src=\"img/error.gif\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;f:facet name=\"afterInvalidField\"&gt;\n"
+"        &lt;s:message/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;f:facet name=\"aroundInvalidField\"&gt;\n"
+"        &lt;s:span styleClass=\"error\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;s:decorate id=\"country\"&gt;\n"
+"                &lt;h:inputText value=\"#{location.country}\" required=\"true"
+"\"&gt;\n"
+"                    &lt;a:support event=\"onblur\" reRender=\"country\"/"
+"&gt;\n"
+"                &lt;/h:inputText&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;s:decorate id=\"zip\"&gt;\n"
+"                &lt;h:inputText value=\"#{location.zip}\" required=\"true"
+"\"&gt;\n"
+"                    &lt;a:support event=\"onblur\" reRender=\"zip\"/&gt;\n"
+"                &lt;/h:inputText&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Xml.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Xml.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ko-KR/Xml.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,933 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Xml.xml:10
+#, no-c-format
+msgid "Configuring Seam components"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:11
+#, no-c-format
+msgid ""
+"The philosophy of minimizing XML-based configuration is extremely strong in "
+"Seam. Nevertheless, there are various reasons why we might want to configure "
+"a Seam component using XML: to isolate deployment-specific information from "
+"the Java code, to enable the creation of re-usable frameworks, to configure "
+"Seam's built-in functionality, etc. Seam provides two basic approaches to "
+"configuring components: configuration via property settings in a properties "
+"file or <literal>web.xml</literal>, and configuration via "
+"<literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:14
+#, no-c-format
+msgid "Configuring components via property settings"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:15
+#, no-c-format
+msgid ""
+"Seam components may be provided with configuration properties either via "
+"servlet context parameters, or via a properties file named <literal>seam."
+"properties</literal> in the root of the classpath."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:18
+#, no-c-format
+msgid ""
+"The configurable Seam component must expose JavaBeans-style property setter "
+"methods for the configurable attributes. If a seam component named "
+"<literal>com.jboss.myapp.settings</literal> has a setter method named "
+"<literal>setLocale()</literal>, we can provide a property named <literal>com."
+"jboss.myapp.settings.locale</literal> in the <literal>seam.properties</"
+"literal> file or as a servlet context parameter, and Seam will set the value "
+"of the <literal>locale</literal> attribute whenever it instantiates the "
+"component."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:21
+#, no-c-format
+msgid ""
+"The same mechanism is used to configure Seam itself. For example, to set the "
+"conversation timeout, we provide a value for <literal>org.jboss.seam.core."
+"manager.conversationTimeout</literal> in <literal>web.xml</literal> or "
+"<literal>seam.properties</literal>. (There is a built-in Seam component "
+"named <literal>org.jboss.seam.core.manager</literal> with a setter method "
+"named <literal>setConversationTimeout()</literal>.)"
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:24
+#, no-c-format
+msgid "Configuring components via components.xml"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:25
+#, no-c-format
+msgid ""
+"The <literal>components.xml</literal> file is a bit more powerful than "
+"property settings. It lets you:"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:30
+#, no-c-format
+msgid ""
+"Configure components that have been installed automatically&mdash;including "
+"both built-in components, and application components that have been "
+"annotated with the <literal>@Name</literal> annotation and picked up by "
+"Seam's deployment scanner."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:35
+#, no-c-format
+msgid ""
+"Install classes with no <literal>@Name</literal> annotation as Seam "
+"components&mdash;this is most useful for certain kinds of infrastructural "
+"components which can be installed multiple times different names (for "
+"example Seam-managed persistence contexts)."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:40
+#, no-c-format
+msgid ""
+"Install components that <emphasis>do</emphasis> have a <literal>@Name</"
+"literal> annotation but are not installed by default because of an "
+"<literal>@Install</literal> annotation that indicates the component should "
+"not be installed."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:45
+#, no-c-format
+msgid "Override the scope of a component."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:50
+#, no-c-format
+msgid ""
+"A <literal>components.xml</literal> file may appear in one of three "
+"different places:"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:55
+#, no-c-format
+msgid "The <literal>WEB-INF</literal> directory of a <literal>war</literal>."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:60
+#, no-c-format
+msgid "The <literal>META-INF</literal> directory of a <literal>jar</literal>."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:65
+#, no-c-format
+msgid ""
+"Any directory of a <literal>jar</literal> that contains classes with an "
+"<literal>@Name</literal> annotation."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:70
+#, no-c-format
+msgid ""
+"Usually, Seam components are installed when the deployment scanner discovers "
+"a class with a <literal>@Name</literal> annotation sitting in an archive "
+"with a <literal>seam.properties</literal> file or a <literal>META-INF/"
+"components.xml</literal> file. (Unless the component has an "
+"<literal>@Install</literal> annotation indicating it should not be installed "
+"by default.) The <literal>components.xml</literal> file lets us handle "
+"special cases where we need to override the annotations."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:73
+#, no-c-format
+msgid ""
+"For example, the following <literal>components.xml</literal> file installs "
+"the JBoss Embeddable EJB3 container:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:76
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"&gt;\n"
+"    &lt;core:ejb/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:77
+#, no-c-format
+msgid "This example does the same thing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:80
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component class=\"org.jboss.seam.core.Ejb\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:81
+#, no-c-format
+msgid ""
+"This one installs and configures two different Seam-managed persistence "
+"contexts:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:84
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"    &lt;core:managed-persistence-context name=\"customerDatabase\"\n"
+"                persistence-unit-jndi-name=\"java:/"
+"customerEntityManagerFactory\"/&gt;\n"
+"        \n"
+"    &lt;core:managed-persistence-context name=\"accountingDatabase\"\n"
+"                persistence-unit-jndi-name=\"java:/"
+"accountingEntityManagerFactory\"/&gt;            \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:85
+#, no-c-format
+msgid "As does this one:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:88
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component name=\"customerDatabase\" \n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"customerEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"    \n"
+"    &lt;component name=\"accountingDatabase\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"accountingEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:89
+#, no-c-format
+msgid ""
+"This example creates a session-scoped Seam-managed persistence context (this "
+"is not recommended in practice):"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:92
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"  &lt;core:managed-persistence-context name=\"productDatabase\" \n"
+"                                   scope=\"session\"\n"
+"              persistence-unit-jndi-name=\"java:/productEntityManagerFactory"
+"\"/&gt;        \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:93
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"            \n"
+"    &lt;component name=\"productDatabase\"\n"
+"              scope=\"session\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"productEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:94
+#, no-c-format
+msgid ""
+"It is common to use the <literal>auto-create</literal> option for "
+"infrastructural objects like persistence contexts, which saves you from "
+"having to explicitly specify <literal>create=true</literal> when you use the "
+"<literal>@In</literal> annotation."
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:97
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"  &lt;core:managed-persistence-context name=\"productDatabase\" \n"
+"                             auto-create=\"true\"\n"
+"              persistence-unit-jndi-name=\"java:/productEntityManagerFactory"
+"\"/&gt;        \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:98
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"            \n"
+"    &lt;component name=\"productDatabase\"\n"
+"        auto-create=\"true\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"productEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:99
+#, no-c-format
+msgid ""
+"The <literal>&lt;factory&gt;</literal> declaration lets you specify a value "
+"or method binding expression that will be evaluated to initialize the value "
+"of a context variable when it is first referenced."
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:102
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"contact\" method=\"#{contactManager.loadContact}\" "
+"scope=\"CONVERSATION\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:103
+#, no-c-format
+msgid ""
+"You can create an \"alias\" (a second name) for a Seam component like so:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:106
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"user\" value=\"#{actor}\" scope=\"STATELESS\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:107
+#, no-c-format
+msgid "You can even create an \"alias\" for a commonly used expression:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:110
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"contact\" value=\"#{contactManager.contact}\" scope="
+"\"STATELESS\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:111
+#, no-c-format
+msgid ""
+"It is especially common to see the use of <literal>auto-create=\"true\"</"
+"literal> with the <literal>&lt;factory&gt;</literal> declaration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:114
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"session\" value=\"#{entityManager.delegate}\" scope="
+"\"STATELESS\" \n"
+"        auto-create=\"true\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:115
+#, no-c-format
+msgid ""
+"Sometimes we want to reuse the same <literal>components.xml</literal> file "
+"with minor changes during both deployment and testing. Seam lets you place "
+"wildcards of the form <literal>@wildcard@</literal> in the "
+"<literal>components.xml</literal> file which can be replaced either by your "
+"Ant build script (at deployment time) or by providing a file named "
+"<literal>components.properties</literal> in the classpath (at development "
+"time). You'll see this approach used in the Seam examples."
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:118
+#, no-c-format
+msgid "Fine-grained configuration files"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:119
+#, no-c-format
+msgid ""
+"If you have a large number of components that need to be configured in XML, "
+"it makes much more sense to split up the information in <literal>components."
+"xml</literal> into many small files. Seam lets you put configuration for a "
+"class named, for example, <literal>com.helloworld.Hello</literal> in a "
+"resource named <literal>com/helloworld/Hello.component.xml</literal>. (You "
+"might be familiar with this pattern, since it is the same one we use in "
+"Hibernate.) The root element of the file may be either a <literal>&lt;"
+"components&gt;</literal> or <literal>&lt;component&gt;</literal> element."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:122
+#, no-c-format
+msgid "The first option lets you define multiple components in the file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:125
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component class=\"com.helloworld.Hello\" name=\"hello\"&gt;\n"
+"        &lt;property name=\"name\"&gt;#{user.name}&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"    &lt;factory name=\"message\" value=\"#{hello.message}\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:126
+#, no-c-format
+msgid ""
+"The second option only lets you define or configure one component, but is "
+"less noisy:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:129
+#, no-c-format
+msgid ""
+"&lt;component name=\"hello\"&gt;\n"
+"    &lt;property name=\"name\"&gt;#{user.name}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:130
+#, no-c-format
+msgid ""
+"In the second option, the class name is implied by the file in which the "
+"component definition appears."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:133
+#, no-c-format
+msgid ""
+"Alternatively, you may put configuration for all classes in the <literal>com."
+"helloworld</literal> package in <literal>com/helloworld/components.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:136
+#, no-c-format
+msgid "Configurable property types"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:137
+#, no-c-format
+msgid ""
+"Properties of string, primitive or primitive wrapper type may be configured "
+"just as you would expect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:140
+#, no-c-format
+msgid "org.jboss.seam.core.manager.conversationTimeout 60000"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:141
+#, no-c-format
+msgid "&lt;core:manager conversation-timeout=\"60000\"/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:142
+#, no-c-format
+msgid ""
+"&lt;component name=\"org.jboss.seam.core.manager\"&gt;\n"
+"    &lt;property name=\"conversationTimeout\"&gt;60000&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:143
+#, no-c-format
+msgid "Arrays, sets and lists of strings or primitives are also supported:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:146
+#, no-c-format
+msgid ""
+"org.jboss.seam.core.jbpm.processDefinitions order.jpdl.xml, return.jpdl.xml, "
+"inventory.jpdl.xml"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:147
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;order.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;return.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:148
+#, no-c-format
+msgid ""
+"&lt;component name=\"org.jboss.seam.core.jbpm\"&gt;\n"
+"    &lt;property name=\"processDefinitions\"&gt;\n"
+"        &lt;value&gt;order.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;return.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:149
+#, no-c-format
+msgid ""
+"Even maps with String-valued keys and string or primitive values are "
+"supported:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:152
+#, no-c-format
+msgid ""
+"&lt;component name=\"issueEditor\"&gt;\n"
+"    &lt;property name=\"issueStatuses\"&gt;\n"
+"        &lt;key&gt;open&lt;/key&gt; &lt;value&gt;open issue&lt;/value&gt;\n"
+"        &lt;key&gt;resolved&lt;/key&gt; &lt;value&gt;issue resolved by "
+"developer&lt;/value&gt;\n"
+"        &lt;key&gt;closed&lt;/key&gt; &lt;value&gt;resolution accepted by "
+"user&lt;/value&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:153
+#, no-c-format
+msgid ""
+"Finally, you may wire together components using a value-binding expression. "
+"Note that this is quite different to injection using <literal>@In</literal>, "
+"since it happens at component instantiation time instead of invocation time. "
+"It is therefore much more similar to the dependency injection facilities "
+"offered by traditional IoC containers like JSF or Spring."
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:156
+#, no-c-format
+msgid ""
+"&lt;drools:managed-working-memory name=\"policyPricingWorkingMemory\" rule-"
+"base=\"#{policyPricingRules}\"/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:157
+#, no-c-format
+msgid ""
+"&lt;component name=\"policyPricingWorkingMemory\"\n"
+"          class=\"org.jboss.seam.drools.ManagedWorkingMemory\"&gt;\n"
+"    &lt;property name=\"ruleBase\"&gt;#{policyPricingRules}&lt;/"
+"property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:158
+#, no-c-format
+msgid "Using XML Namespaces"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:159
+#, no-c-format
+msgid ""
+"Throughout the examples, there have been two competing ways of declaring "
+"components: with and without the use of XML namespaces. The following shows "
+"a typical <literal>components.xml</literal> file without namespaces. It uses "
+"the Seam Components DTD:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:162
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"&gt;\n"
+"&lt;!DOCTYPE components PUBLIC \"-//JBoss/Seam Component Configuration DTD "
+"1.2//EN\"\n"
+"                            \"http://jboss.com/products/seam/components-1.2."
+"dtd\"&gt;\n"
+"&lt;components&gt;\n"
+"\n"
+"    &lt;component class=\"org.jboss.seam.core.init\"&gt;\n"
+"        &lt;property name=\"debug\"&gt;true&lt;/property&gt;\n"
+"        &lt;property name=\"jndiPattern\"&gt;@jndiPattern@&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"    &lt;component name=\"org.jboss.sean.core.ejb\" installed=\"@embeddedEjb@"
+"\" /&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:163
+#, no-c-format
+msgid ""
+"As you can see, this is somewhat verbose. Even worse, the component and "
+"attribute names cannot be validated at development time."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:166
+#, no-c-format
+msgid "The namespaced version looks like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:169
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                http://jboss.com/products/seam/core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components \n"
+"                 http://jboss.com/products/seam/components-1.2.xsd\"&gt;\n"
+"\n"
+"    &lt;core:init debug=\"true\" jndi-pattern=\"@jndiPattern@\"/&gt;\n"
+"\n"
+"    &lt;core:ejb installed=\"@embeddedEjb@\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:170
+#, no-c-format
+msgid ""
+"Even though the schema declarations are verbose, the actual XML content is "
+"lean and easy to understand. The schemas provide detailed information about "
+"each component and the attributes available, allowing XML editors to offer "
+"intelligent autocomplete. The use of namespaced elements makes generating "
+"and maintaining correct <literal>components.xml</literal> files much simpler."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:173
+#, no-c-format
+msgid ""
+"Now, this works great for the built-in Seam components, but what about user "
+"components? There are two options. First, Seam supports mixing the two "
+"models, allowing the use of the generic <literal>&lt;component&gt;</literal> "
+"declarations for user components, along with namespaced declarations for "
+"built-in components. But even better, Seam allows you to quickly declare "
+"namespaces for your own components."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:176
+#, no-c-format
+msgid ""
+"Any Java package can be associated with an XML namespace by annotating the "
+"package with the <literal>@Namespace</literal> annotation. (Package-level "
+"annotations are declared in a file named <literal>package-info.java</"
+"literal> in the package directory.) Here is an example from the seampay demo:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:179
+#, no-c-format
+msgid ""
+"@Namespace(value=\"http://jboss.com/products/seam/examples/seampay\")\n"
+"package org.jboss.seam.example.seampay;\n"
+"\n"
+"import org.jboss.seam.annotations.Namespace;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:180
+#, no-c-format
+msgid ""
+"That is all you need to do to use the namespaced style in "
+"<literal>components.xml</literal>! Now we can write:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:183
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pay=\"http://jboss.com/products/seam/examples/seampay\"\n"
+"            ... &gt;\n"
+"\n"
+"    &lt;pay:payment-home new-instance=\"#{newPayment}\"\n"
+"                      created-message=\"Created a new payment to #"
+"{newPayment.payee}\" /&gt;\n"
+"\n"
+"    &lt;pay:payment name=\"newPayment\"\n"
+"                 payee=\"Somebody\"\n"
+"                 account=\"#{selectedAccount}\"\n"
+"                 payment-date=\"#{currentDatetime}\"\n"
+"                 created-date=\"#{currentDatetime}\" /&gt;\n"
+"     ...\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:184
+#, no-c-format
+msgid "<para>Or:</para>"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:187
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pay=\"http://jboss.com/products/seam/examples/seampay\"\n"
+"            ... &gt;\n"
+"\n"
+"    &lt;pay:payment-home&gt;\n"
+"        &lt;pay:new-instance&gt;\"#{newPayment}\"&lt;/pay:new-instance&gt;\n"
+"        &lt;pay:created-message&gt;Created a new payment to #{newPayment."
+"payee}&lt;/pay:created-message&gt;\n"
+"    &lt;/pay:payment-home&gt;\n"
+"    \n"
+"    &lt;pay:payment name=\"newPayment\"&gt;\n"
+"        &lt;pay:payee&gt;Somebody\"&lt;/pay:payee&gt;\n"
+"        &lt;pay:account&gt;#{selectedAccount}&lt;/pay:account&gt;\n"
+"        &lt;pay:payment-date&gt;#{currentDatetime}&lt;/pay:payment-date&gt;\n"
+"        &lt;pay:created-date&gt;#{currentDatetime}&lt;/pay:created-date&gt;\n"
+"     &lt;/pay:payment&gt;\n"
+"     ...\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:188
+#, no-c-format
+msgid ""
+"These examples illustrate the two usage models of a namespaced element. In "
+"the first declaration, the <literal>&lt;pay:payment-home&gt;</literal> "
+"references the <literal>paymentHome</literal> component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:191
+#, no-c-format
+msgid ""
+"package org.jboss.seam.example.seampay;\n"
+"...\n"
+"@Name(\"paymentHome\")\n"
+"public class PaymentController\n"
+"    extends EntityHome&lt;Payment&gt;\n"
+"{\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:192
+#, no-c-format
+msgid ""
+"The element name is the hyphenated form of the component name. The "
+"attributes of the element are the hyphenated form of the property names."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:195
+#, no-c-format
+msgid ""
+"In the second declaration, the <literal>&lt;pay:payment&gt;</literal> "
+"element refers to the <literal>Payment</literal> class in the <literal>org."
+"jboss.seam.example.seampay</literal> package. In this case <literal>Payment</"
+"literal> is an entity that is being declared as a Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:198
+#, no-c-format
+msgid ""
+"package org.jboss.seam.example.seampay;\n"
+"...\n"
+"@Entity\n"
+"public class Payment\n"
+"    implements Serializable\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:199
+#, no-c-format
+msgid ""
+"If we want validation and autocompletion to work for user-defined "
+"components, we will need a schema. Seam does not yet provide a mechanism to "
+"automatically generate a schema for a set of components, so it is necessary "
+"to generate one manually. The schema definitions for the standard Seam "
+"packages can be used for guidance."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:202
+#, no-c-format
+msgid "The following are the the namespaces used by Seam:"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:207
+#, no-c-format
+msgid ""
+"components &mdash; <literal>http://jboss.com/products/seam/components</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:212
+#, no-c-format
+msgid "core &mdash; <literal>http://jboss.com/products/seam/core</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:217
+#, no-c-format
+msgid "drools &mdash; <literal>http://jboss.com/products/seam/drools</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:222
+#, no-c-format
+msgid ""
+"framework &mdash; <literal>http://jboss.com/products/seam/framework</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:227
+#, no-c-format
+msgid "jms &mdash; <literal>http://jboss.com/products/seam/jms</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:232
+#, no-c-format
+msgid ""
+"remoting &mdash; <literal>http://jboss.com/products/seam/remoting</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:237
+#, no-c-format
+msgid "theme &mdash; <literal>http://jboss.com/products/seam/theme</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:242
+#, no-c-format
+msgid ""
+"security &mdash; <literal>http://jboss.com/products/seam/security</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:247
+#, no-c-format
+msgid "mail &mdash; <literal>http://jboss.com/products/seam/mail</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:252
+#, no-c-format
+msgid "web &mdash; <literal>http://jboss.com/products/seam/web</literal>"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Annotations.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Annotations.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Annotations.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2030 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Annotations.xml:10
+#, no-c-format
+msgid "Seam annotations"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:11
+#, no-c-format
+msgid ""
+"When you write a Seam application, you'll use a lot of annotations. Seam "
+"lets you use annotations to achieve a declarative style of programming. Most "
+"of the annotations you'll use are defined by the EJB 3.0 specification. The "
+"annotations for data validation are defined by the Hibernate Validator "
+"package. Finally, Seam defines its own set of annotations, which we'll "
+"describe in this chapter."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:14
+#, no-c-format
+msgid ""
+"All of these annotations are defined in the package <literal>org.jboss.seam."
+"annotations</literal>."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:18
+#, no-c-format
+msgid "Annotations for component definition"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:19
+#, no-c-format
+msgid ""
+"The first group of annotations lets you define a Seam component. These "
+"annotations appear on the component class."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:24
+#, no-c-format
+msgid "@Name"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:26
+#, no-c-format
+msgid "@Name(\"componentName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:27
+#, no-c-format
+msgid ""
+"Defines the Seam component name for a class. This annotation is required for "
+"all Seam components."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:33
+#, no-c-format
+msgid "@Scope"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:35
+#, no-c-format
+msgid "@Scope(ScopeType.CONVERSATION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:36
+#, no-c-format
+msgid ""
+"Defines the default context of the component. The possible values are "
+"defined by the <literal>ScopeType</literal> enumeration: <literal>EVENT, "
+"PAGE, CONVERSATION, SESSION, BUSINESS_PROCESS, APPLICATION, STATELESS</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:39
+#, no-c-format
+msgid ""
+"When no scope is explicitly specified, the default depends upon the "
+"component type. For stateless session beans, the default is "
+"<literal>STATELESS</literal>. For entity beans and stateful session beans, "
+"the default is <literal>CONVERSATION</literal>. For JavaBeans, the default "
+"is <literal>EVENT</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:45
+#, no-c-format
+msgid "@Role"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:47
+#, no-c-format
+msgid "@Role(name=\"roleName\", scope=ScopeType.SESSION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:48
+#, no-c-format
+msgid ""
+"Allows a Seam component to be bound to multiple contexts variables. The "
+"<literal>@Name</literal>/<literal>@Scope</literal> annotations define a "
+"\"default role\". Each <literal>@Role</literal> annotation defines an "
+"additional role."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:53
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the context variable name."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:58
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; the context variable scope. When no scope "
+"is explicitly specified, the default depends upon the component type, as "
+"above."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:66
+#, no-c-format
+msgid "@Roles"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:68
+#, no-c-format
+msgid ""
+"@Roles({\n"
+"        @Role(name=\"user\", scope=ScopeType.CONVERSATION),\n"
+"        @Role(name=\"currentUser\", scope=ScopeType.SESSION)\n"
+"    })"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:69
+#, no-c-format
+msgid "Allows specification of multiple additional roles."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:75
+#, no-c-format
+msgid "@Intercept"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:77
+#, no-c-format
+msgid "@Intercept(InterceptionType.ALWAYS)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:78
+#, no-c-format
+msgid ""
+"Determines when Seam interceptors are active. The possible values are "
+"defined by the <literal>InterceptionType</literal> enumeration: "
+"<literal>ALWAYS, AFTER_RESTORE_VIEW, AFTER_UPDATE_MODEL_VALUES, "
+"INVOKE_APPLICATION, NEVER</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:81
+#, no-c-format
+msgid ""
+"When no interception type is explicitly specified, the default depends upon "
+"the component type. For entity beans, the default is <literal>NEVER</"
+"literal>. For session beans, message driven beans and JavaBeans, the default "
+"is <literal>ALWAYS</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:87
+#, no-c-format
+msgid "@JndiName"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:89
+#, no-c-format
+msgid "@JndiName(\"my/jndi/name\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:90
+#, no-c-format
+msgid ""
+"Specifies the JNDI name that Seam will use to look up the EJB component. If "
+"no JNDI name is explicitly specified, Seam will use the JNDI pattern "
+"specified by <literal>org.jboss.seam.core.init.jndiPattern</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:96
+#, no-c-format
+msgid "@Conversational"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:98
+#, no-c-format
+msgid "@Conversational(ifNotBegunOutcome=\"error\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:99
+#, no-c-format
+msgid ""
+"Specifies that a conversation scope component is conversational, meaning "
+"that no method of the component can be called unless a long-running "
+"conversation started by this component is active (unless the method would "
+"begin a new long-running conversation)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:105
+#, no-c-format
+msgid "<literal>@Startup</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:107
+#, no-c-format
+msgid "@Startup(depends={\"org.jboss.core.jndi\", \"org.jboss.core.jta\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:108
+#, no-c-format
+msgid ""
+"Specifies that an application scope component is started immediately at "
+"initialization time. This is mainly used for certain built-in components "
+"that bootstrap critical infrastructure such as JNDI, datasources, etc."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:111
+#, no-c-format
+msgid "<programlisting>@Startup</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:112
+#, no-c-format
+msgid ""
+"Specifies that a session scope component is started immediately at session "
+"creation time."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:117
+#, no-c-format
+msgid ""
+"<literal>depends</literal> &mdash; specifies that the named components must "
+"be started first, if they are installed."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:125
+#, no-c-format
+msgid "@Install"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:127
+#, no-c-format
+msgid "@Install(false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:128
+#, no-c-format
+msgid ""
+"Specifies whether or not a component should be installed by default. The "
+"lack of an @Install annotation indicates a component should be installed."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:131
+#, no-c-format
+msgid "@Install(dependencies=\"org.jboss.seam.core.jbpm\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:132
+#, no-c-format
+msgid ""
+"Specifies that a component should only be stalled if the components listed "
+"as dependencies are also installed."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:135
+#, no-c-format
+msgid "@Install(genericDependencies=ManagedQueueSender.class)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:136
+#, no-c-format
+msgid ""
+"Specifies that a component should only be installed if a component that is "
+"implemented by a certain class is installed. This is useful when the "
+"dependency doesn't have a single well-known name."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:139
+#, no-c-format
+msgid "@Install(classDependencies=\"org.hibernate.Session\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:140
+#, no-c-format
+msgid ""
+"Specifies that a component should only be installed if the named class is in "
+"the classpath."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:143
+#, no-c-format
+msgid "@Install(precedence=BUILT_IN)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:144
+#, no-c-format
+msgid ""
+"Specifies the precedence of the component. If multiple components with the "
+"same name exist, the one with the higher precedence will be installed. The "
+"defined precendence values are:"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:149
+#, no-c-format
+msgid ""
+"<literal>BUILT_IN</literal> &mdash; Precedence of all built-in Seam "
+"components"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:154
+#, no-c-format
+msgid ""
+"<literal>FRAMEWORK</literal> &mdash; Precedence to use for components of "
+"frameworks which extend Seam"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:159
+#, no-c-format
+msgid ""
+"<literal>APPLICATION</literal> &mdash; Predence of application components "
+"(the default precedence)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:164
+#, no-c-format
+msgid ""
+"<literal>DEPLOYMENT</literal> &mdash; Precedence to use for components which "
+"override application components in a particular deployment"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:172
+#, no-c-format
+msgid "@Synchronized"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:174
+#, no-c-format
+msgid "@Synchronized(timeout=1000)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:175
+#, no-c-format
+msgid ""
+"Specifies that a component is accessed concurrently by multiple clients, and "
+"that Seam should serialize requests. If a request is not able to obtain its "
+"lock on the component in the given timeout period, an exception will be "
+"raised."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:181
+#, no-c-format
+msgid "<literal>@ReadOnly</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:183
+#, no-c-format
+msgid "<programlisting>@ReadOnly</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:184
+#, no-c-format
+msgid ""
+"Specifies that a JavaBean component or component method does not require "
+"state replication at the end of the invocation."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:193
+#, no-c-format
+msgid "Annotations for bijection"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:194
+#, no-c-format
+msgid ""
+"The next two annotations control bijection. These attributes occur on "
+"component instance variables or property accessor methods."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:199
+#, no-c-format
+msgid "<literal>@In</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:201
+#, no-c-format
+msgid "<programlisting>@In</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:202
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. If the context "
+"variable is null, an exception will be thrown."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:205
+#, no-c-format
+msgid "@In(required=false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:206
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. The context variable "
+"may be null."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:209
+#, no-c-format
+msgid "@In(create=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:210
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. If the context "
+"variable is null, an instance of the component is instantiated by Seam."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:213
+#, no-c-format
+msgid "@In(value=\"contextVariableName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:214 Annotations.xml:259
+#, no-c-format
+msgid ""
+"Specifies the name of the context variable explicitly, instead of using the "
+"annotated instance variable name."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:217
+#, no-c-format
+msgid "@In(value=\"#{customer.addresses['shipping']}\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:218
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected by evaluating a JSF "
+"EL expression at the beginning of each component invocation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:223
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"Default to the name of the component attribute. Alternatively, specifies a "
+"JSF EL expression, surrounded by <literal>#{...}</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:228
+#, no-c-format
+msgid ""
+"<literal>create</literal> &mdash; specifies that Seam should instantiate the "
+"component with the same name as the context variable if the context variable "
+"is undefined (null) in all contexts. Default to false."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:233
+#, no-c-format
+msgid ""
+"<literal>required</literal> &mdash; specifies Seam should throw an exception "
+"if the context variable is undefined in all contexts."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:241
+#, no-c-format
+msgid "<literal>@Out</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:243
+#, no-c-format
+msgid "<programlisting>@Out</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:244
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is a Seam component is to be "
+"outjected to its context variable at the end of the invocation. If the "
+"attribute is null, an exception is thrown."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:247
+#, no-c-format
+msgid "@Out(required=false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:248
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is a Seam component is to be "
+"outjected to its context variable at the end of the invocation. The "
+"attribute may be null."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:251
+#, no-c-format
+msgid "@Out(scope=ScopeType.SESSION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:252
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is <emphasis>not</emphasis> a Seam "
+"component type is to be outjected to a specific scope at the end of the "
+"invocation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:255
+#, no-c-format
+msgid ""
+"Alternatively, if no scope is explicitly specified, the scope of the "
+"component with the <literal>@Out</literal> attribute is used (or the "
+"<literal>EVENT</literal> scope if the component is stateless)."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:258
+#, no-c-format
+msgid "@Out(value=\"contextVariableName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:264
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"Default to the name of the component attribute."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:269
+#, no-c-format
+msgid ""
+"<literal>required</literal> &mdash; specifies Seam should throw an exception "
+"if the component attribute is null during outjection."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:277
+#, no-c-format
+msgid ""
+"Note that it is quite common for these annotations to occur together, for "
+"example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:280
+#, no-c-format
+msgid "@In(create=true) @Out private User currentUser;"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:281
+#, no-c-format
+msgid ""
+"The next annotation supports the <emphasis>manager component</emphasis> "
+"pattern, where a Seam component that manages the lifecycle of an instance of "
+"some other class that is to be injected. It appears on a component getter "
+"method."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:286
+#, no-c-format
+msgid "<literal>@Unwrap</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:288
+#, no-c-format
+msgid "<programlisting>@Unwrap</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:289
+#, no-c-format
+msgid ""
+"Specifies that the object returned by the annotated getter method is the "
+"thing that is injected instead of the component instance itself."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:295
+#, no-c-format
+msgid ""
+"The next annotation supports the <emphasis>factory component</emphasis> "
+"pattern, where a Seam component is responsible for initializing the value of "
+"a context variable. This is especially useful for initializing any state "
+"needed for rendering the response to a non-faces request. It appears on a "
+"component method."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:300
+#, no-c-format
+msgid "@Factory"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:302
+#, no-c-format
+msgid "@Factory(\"processInstance\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:303
+#, no-c-format
+msgid ""
+"Specifies that the method of the component is used to initialize the value "
+"of the named context variable, when the context variable has no value. This "
+"style is used with methods that return <literal>void</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:306
+#, no-c-format
+msgid "@Factory(\"processInstance\", scope=CONVERSATION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:307
+#, no-c-format
+msgid ""
+"Specifies that the method returns a value that Seam should use to initialize "
+"the value of the named context variable, when the context variable has no "
+"value. This style is used with methods that return a value. If no scope is "
+"explicitly specified, the scope of the component with the <literal>@Factory</"
+"literal> method is used (unless the component is stateless, in which case "
+"the <literal>EVENT</literal> context is used)."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:312
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"If the method is a getter method, default to the JavaBeans property name."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:317
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; specifies the scope that Seam should bind "
+"the returned value to. Only meaningful for factory methods which return a "
+"value."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:325
+#, no-c-format
+msgid "This annotation lets you inject a <literal>Log</literal>:"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:330
+#, no-c-format
+msgid "@Logger"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:332
+#, no-c-format
+msgid "@Logger(\"categoryName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:333
+#, no-c-format
+msgid ""
+"Specifies that a component field is to be injected with an instance of "
+"<literal>org.jboss.seam.log.Log</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:338
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the log category. "
+"Default to the name of the component class."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:346
+#, no-c-format
+msgid "The last annotation lets you inject a request parameter value:"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:351
+#, no-c-format
+msgid "@RequestParameter"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:353
+#, no-c-format
+msgid "@RequestParameter(\"parameterName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:354
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected with the value of a "
+"request parameter. Basic type conversions are performed automatically."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:359
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the request "
+"parameter. Default to the name of the component attribute."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:370
+#, no-c-format
+msgid "Annotations for component lifecycle methods"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:371
+#, no-c-format
+msgid ""
+"These annotations allow a component to react to its own lifecycle events. "
+"They occur on methods of the component. There may be only one of each per "
+"component class."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:376
+#, no-c-format
+msgid "<literal>@Create</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:378
+#, no-c-format
+msgid "<programlisting>@Create</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:379
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when an instance of the component "
+"is instantiated by Seam. Note that create methods are only supported for "
+"JavaBeans and stateful session beans."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:385
+#, no-c-format
+msgid "<literal>@Destroy</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:387
+#, no-c-format
+msgid "<programlisting>@Destroy</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:388
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when the context ends and its "
+"context variables are destroyed. Note that create methods are only supported "
+"for JavaBeans and stateful session beans."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:391
+#, no-c-format
+msgid ""
+"Note that all stateful session bean components <emphasis>must</emphasis> "
+"define a method annotated <literal>@Destroy @Remove</literal> in order to "
+"guarantee destruction of the stateful bean when a context ends."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:394
+#, no-c-format
+msgid ""
+"Destroy methods should be used only for cleanup. <emphasis>Seam catches, "
+"logs and swallows any exception that propagates out of a destroy method.</"
+"emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:400
+#, no-c-format
+msgid "@Observer"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:402
+#, no-c-format
+msgid "@Observer(\"somethingChanged\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:403
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when a component-driven event of "
+"the specified type occurs."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:406
+#, no-c-format
+msgid "@Observer(value=\"somethingChanged\",create=false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:407
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when an event of the specified "
+"type occurs but that an instance should not be created if one doesn't exist. "
+"If an instance does not exist and create is false, the event will not be "
+"observed. The default value for create is true."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:416
+#, no-c-format
+msgid "Annotations for context demarcation"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:417
+#, no-c-format
+msgid ""
+"These annotations provide declarative conversation demarcation. They appear "
+"on methods of Seam components, usually action listener methods."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:420
+#, no-c-format
+msgid ""
+"Every web request has a conversation context associated with it. Most of "
+"these conversations end at the end of the request. If you want a "
+"conversation that span multiple requests, you must \"promote\" the current "
+"conversation to a <emphasis>long-running conversation</emphasis> by calling "
+"a method marked with <literal>@Begin</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:425
+#, no-c-format
+msgid "<literal>@Begin</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:427
+#, no-c-format
+msgid "<programlisting>@Begin</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:428
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation begins when this method returns a "
+"non-null outcome without exception."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:431
+#, no-c-format
+msgid "@Begin(ifOutcome={\"success\", \"continue\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:432
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation begins when this action listener "
+"method returns with one of the given outcomes."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:435
+#, no-c-format
+msgid "@Begin(join=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:436
+#, no-c-format
+msgid ""
+"Specifies that if a long-running conversation is already in progress, the "
+"conversation context is simply propagated."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:439
+#, no-c-format
+msgid "@Begin(nested=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:440
+#, no-c-format
+msgid ""
+"Specifies that if a long-running conversation is already in progress, a new "
+"<emphasis>nested</emphasis> conversation context begins. The nested "
+"conversation will end when the next <literal>@End</literal> is encountered, "
+"and the outer conversation will resume. It is perfectly legal for multiple "
+"nested conversations to exist concurrently in the same outer conversation."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:443
+#, no-c-format
+msgid "@Begin(pageflow=\"process definition name\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:444
+#, no-c-format
+msgid ""
+"Specifies a jBPM process definition name that defines the pageflow for this "
+"conversation."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:447
+#, no-c-format
+msgid "@Begin(flushMode=FlushModeType.MANUAL)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:448
+#, no-c-format
+msgid ""
+"Specify the flush mode of any Seam-managed persistence contexts. "
+"<literal>flushMode=FlushModeType.MANUAL</literal> supports the use of "
+"<emphasis>atomic conversations</emphasis> where all write operations are "
+"queued in the conversation context until an explicit call to <literal>flush()"
+"</literal> (which usually occurs at the end of the conversation)."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:454
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in a new long-running conversation context."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:459
+#, no-c-format
+msgid ""
+"<literal>join</literal> &mdash; determines the behavior when a long-running "
+"conversation is already in progress. If <literal>true</literal>, the context "
+"is propagated. If <literal>false</literal>, an exception is thrown. Default "
+"to <literal>false</literal>. This setting is ignored when "
+"<literal>nested=true</literal> is specified"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:464
+#, no-c-format
+msgid ""
+"<literal>nested</literal> &mdash; specifies that a nested conversation "
+"should be started if a long-running conversation is already in progress."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:469 Annotations.xml:526 Annotations.xml:550
+#, no-c-format
+msgid ""
+"<literal>flushMode</literal> &mdash; set the flush mode of any Seam-managed "
+"Hibernate sessions or JPA persistence contexts that are created during this "
+"conversation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:474
+#, no-c-format
+msgid ""
+"<literal>pageflow</literal> &mdash; a process definition name of a jBPM "
+"process definition deployed via <literal>org.jboss.seam.core.jbpm."
+"pageflowDefinitions.</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:483
+#, no-c-format
+msgid "<literal>@End</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:485
+#, no-c-format
+msgid "<programlisting>@End</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:486
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation ends when this method returns a "
+"non-null outcome without exception."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:489
+#, no-c-format
+msgid ""
+"@End(ifOutcome={\"success\", \"error\"}, evenIfException={SomeException."
+"class, OtherException.class})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:490
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation ends when this action listener "
+"method returns with one of the given outcomes or throws one of the specified "
+"classes of exception."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:496
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in the end of the current long-running conversation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:501 Annotations.xml:585
+#, no-c-format
+msgid ""
+"<literal>beforeRedirect</literal> &mdash; by default, the conversation will "
+"not actually be destroyed until after any redirect has occurred. Setting "
+"<literal>beforeRedirect=true</literal> specifies that the conversation "
+"should be destroyed at the end of the current request, and that the redirect "
+"will be processed in a new temporary conversation context."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:510
+#, no-c-format
+msgid "<literal>@StartTask</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:512
+#, no-c-format
+msgid "<programlisting>@StartTask</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:513
+#, no-c-format
+msgid ""
+"\"Starts\" a jBPM task. Specifies that a long-running conversation begins "
+"when this method returns a non-null outcome without exception. This "
+"conversation is associated with the jBPM task specified in the named request "
+"parameter. Within the context of this conversation, a business process "
+"context is also defined, for the business process instance of the task "
+"instance."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:516
+#, no-c-format
+msgid ""
+"The jBPM <literal>TaskInstance</literal> will be available in a request "
+"context variable named <literal>taskInstance</literal>. The jPBM "
+"<literal>ProcessInstance</literal> will be available in a request context "
+"variable named <literal>processInstance</literal>. (Of course, these objects "
+"are available for injection via <literal>@In</literal>.)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:521 Annotations.xml:545
+#, no-c-format
+msgid ""
+"<literal>taskIdParameter</literal> &mdash; the name of a request parameter "
+"which holds the id of the task. Default to <literal>\"taskId\"</literal>, "
+"which is also the default used by the Seam <literal>taskList</literal> JSF "
+"component."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:534
+#, no-c-format
+msgid "<literal>@BeginTask</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:536
+#, no-c-format
+msgid "<programlisting>@BeginTask</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:537
+#, no-c-format
+msgid ""
+"Resumes work on an incomplete jBPM task. Specifies that a long-running "
+"conversation begins when this method returns a non-null outcome without "
+"exception. This conversation is associated with the jBPM task specified in "
+"the named request parameter. Within the context of this conversation, a "
+"business process context is also defined, for the business process instance "
+"of the task instance."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:540
+#, no-c-format
+msgid ""
+"The jBPM <literal>TaskInstance</literal> will be available in a request "
+"context variable named <literal>taskInstance</literal>. The jPBM "
+"<literal>ProcessInstance</literal> will be available in a request context "
+"variable named <literal>processInstance</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:558
+#, no-c-format
+msgid "<literal>@EndTask</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:560
+#, no-c-format
+msgid "<programlisting>@EndTask</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:561
+#, no-c-format
+msgid ""
+"\"Ends\" a jBPM task. Specifies that a long-running conversation ends when "
+"this method returns a non-null outcome, and that the current task is "
+"complete. Triggers a jBPM transition. The actual transition triggered will "
+"be the default transition unless the application has called "
+"<literal>Transition.setName()</literal> on the built-in component named "
+"<literal>transition</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:564
+#, no-c-format
+msgid "@EndTask(transition=\"transitionName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:565
+#, no-c-format
+msgid "Triggers the given jBPM transition."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:568
+#, no-c-format
+msgid "@EndTask(ifOutcome={\"success\", \"continue\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:569
+#, no-c-format
+msgid ""
+"Specifies that the task ends when this method returns one of the listed "
+"outcomes."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:575
+#, no-c-format
+msgid ""
+"<literal>transition</literal> &mdash; the name of the jBPM transition to be "
+"triggered when ending the task. Defaults to the default transition."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:580
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in the end of the task."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:594
+#, no-c-format
+msgid "@CreateProcess"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:596
+#, no-c-format
+msgid "@CreateProcess(definition=\"process definition name\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:597
+#, no-c-format
+msgid ""
+"Creates a new jBPM process instance when the method returns a non-null "
+"outcome without exception. The <literal>ProcessInstance</literal> object "
+"will be available in a context variable named <literal>processInstance</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:602
+#, no-c-format
+msgid ""
+"<literal>definition</literal> &mdash; the name of the jBPM process "
+"definition deployed via <literal>org.jboss.seam.core.jbpm."
+"processDefinitions</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:610
+#, no-c-format
+msgid "@ResumeProcess"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:612
+#, no-c-format
+msgid "@ResumeProcess(processIdParameter=\"processId\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:613
+#, no-c-format
+msgid ""
+"Re-enters the scope of an existing jBPM process instance when the method "
+"returns a non-null outcome without exception. The <literal>ProcessInstance</"
+"literal> object will be available in a context variable named "
+"<literal>processInstance</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:618
+#, no-c-format
+msgid ""
+"<literal>processIdParameter</literal> &mdash; the name a request parameter "
+"holding the process id. Default to <literal>\"processId\"</literal>."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:629
+#, no-c-format
+msgid "Annotations for transaction demarcation"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:630
+#, no-c-format
+msgid ""
+"Seam provides an annotation that lets you force a rollback of the JTA "
+"transaction for certain action listener outcomes."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:635
+#, no-c-format
+msgid "@Rollback"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:637
+#, no-c-format
+msgid "@Rollback(ifOutcome={\"failure\", \"not-found\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:638
+#, no-c-format
+msgid ""
+"If the outcome of the method matches any of the listed outcomes, or if no "
+"outcomes are listed, set the transaction to rollback only when the method "
+"completes."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:643
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; the JSF outcomes that cause a "
+"transaction rollback (no outcomes is interpreted to mean any outcome)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:651
+#, no-c-format
+msgid "<literal>@Transactional</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:653
+#, no-c-format
+msgid "<programlisting>@Transactional</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:654
+#, no-c-format
+msgid ""
+"Specifies that a JavaBean component should have a similar transactional "
+"behavior to the default behavior of a session bean component. ie. method "
+"invocations should take place in a transaction, and if no transaction exists "
+"when the method is called, a transaction will be started just for that "
+"method. This annotation may be applied at either class or method level."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:660
+#, no-c-format
+msgid ""
+"Seam applications usually use the standard EJB3 annotations for all other "
+"transaction demarcation needs."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:666
+#, no-c-format
+msgid "Annotations for exceptions"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:667
+#, no-c-format
+msgid ""
+"These annotations let you specify how Seam should handle an exception that "
+"propagates out of a Seam component."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:672
+#, no-c-format
+msgid "@Redirect"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:674
+#, no-c-format
+msgid "@Redirect(viewId=\"error.jsp\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:675
+#, no-c-format
+msgid ""
+"Specifies that the annotated exception causes a browser redirect to a "
+"specified view id."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:680
+#, no-c-format
+msgid ""
+"<literal>viewId</literal> &mdash; specifies the JSF view id to redirect to."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:685
+#, no-c-format
+msgid ""
+"<literal>message</literal> &mdash; a message to be displayed, default to the "
+"exception message."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:690 Annotations.xml:716
+#, no-c-format
+msgid ""
+"<literal>end</literal> &mdash; specifies that the long-running conversation "
+"should end, default to <literal>false</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:698
+#, no-c-format
+msgid "@HttpError"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:700
+#, no-c-format
+msgid "@HttpError(errorCode=404)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:701
+#, no-c-format
+msgid "Specifies that the annotated exception causes a HTTP error to be sent."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:706
+#, no-c-format
+msgid ""
+"<literal>errorCode</literal> &mdash; the HTTP error code, default to "
+"<literal>500</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:711
+#, no-c-format
+msgid ""
+"<literal>message</literal> &mdash; a message to be sent with the HTTP error, "
+"default to the exception message."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:727
+#, no-c-format
+msgid "Annotations for validation"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:728
+#, no-c-format
+msgid ""
+"This annotation triggers Hibernate Validator. It appears on a method of a "
+"Seam component, almost always an action listener method."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:731
+#, no-c-format
+msgid ""
+"Please refer to the documentation for the Hibernate Annotations package for "
+"information about the annotations defined by the Hibernate Validator "
+"framework."
+msgstr ""
+
+#. Tag: emphasis
+#: Annotations.xml:735
+#, no-c-format
+msgid ""
+"Note that use of <literal>@IfInvalid</literal> is now semi-deprecated and "
+"<literal>&lt;s:validateAll&gt;</literal> is now preferred."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:739
+#, no-c-format
+msgid "@IfInvalid"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:741
+#, no-c-format
+msgid "@IfInvalid(outcome=\"invalid\", refreshEntities=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:742
+#, no-c-format
+msgid ""
+"Specifies that Hibernate Validator should validate the component before the "
+"method is invoked. If the invocation fails, the specified outcome will be "
+"returned, and the validation failure messages returned by Hibernate "
+"Validator will be added to the <literal>FacesContext</literal>. Otherwise, "
+"the invocation will proceed."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:747
+#, no-c-format
+msgid ""
+"<literal>outcome</literal> &mdash; the JSF outcome when validation fails."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:752
+#, no-c-format
+msgid ""
+"<literal>refreshEntities</literal> &mdash; specifies that any invalid entity "
+"in the managed state should be refreshed from the database when validation "
+"fails. Default to <literal>false</literal>. (Useful with extended "
+"persistence contexts.)"
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:763
+#, no-c-format
+msgid "Annotations for Seam Remoting"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:764
+#, no-c-format
+msgid ""
+"Seam Remoting requires that the local interface of a session bean be "
+"annotated with the following annotation:"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:769
+#, no-c-format
+msgid "@WebRemote"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:771
+#, no-c-format
+msgid "@WebRemote(exclude=\"path.to.exclude\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:772
+#, no-c-format
+msgid ""
+"Indicates that the annotated method may be called from client-side "
+"JavaScript. The <literal>exclude</literal> property is optional and allows "
+"objects to be excluded from the result's object graph (see the Remoting "
+"chapter for more details)."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:781
+#, no-c-format
+msgid "Annotations for Seam interceptors"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:782
+#, no-c-format
+msgid "The following annotations appear on Seam interceptor classes."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:785
+#, no-c-format
+msgid ""
+"Please refer to the documentation for the EJB 3.0 specification for "
+"information about the annotations required for EJB interceptor definition."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:790
+#, no-c-format
+msgid "@Interceptor"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:792
+#, no-c-format
+msgid "@Interceptor(stateless=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:793
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is stateless and Seam may optimize "
+"replication."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:796
+#, no-c-format
+msgid "@Interceptor(type=CLIENT)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:797
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is a \"client-side\" interceptor that is "
+"called before the EJB container."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:800
+#, no-c-format
+msgid "@Interceptor(around={SomeInterceptor.class, OtherInterceptor.class})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:801
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is positioned higher in the stack than the "
+"given interceptors."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:804
+#, no-c-format
+msgid "@Interceptor(within={SomeInterceptor.class, OtherInterceptor.class})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:805
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is positioned deeper in the stack than the "
+"given interceptors."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:814
+#, no-c-format
+msgid "Annotations for asynchronicity"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:815
+#, no-c-format
+msgid ""
+"The following annotations are used to declare an asynchronous method, for "
+"example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:818
+#, no-c-format
+msgid ""
+"@Asynchronous public void scheduleAlert(Alert alert, @Expiration Date date) "
+"{ ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:819
+#, no-c-format
+msgid ""
+"@Asynchronous public Timer scheduleAlerts(Alert alert, @Expiration Date "
+"date, \n"
+"    @IntervalDuration long interval) { ... }"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:822
+#, no-c-format
+msgid "<literal>@Asynchronous</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:824
+#, no-c-format
+msgid "<programlisting>@Asynchronous</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:825
+#, no-c-format
+msgid "Specifies that the method call is processed asynchronously."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:831
+#, no-c-format
+msgid "<literal>@Duration</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:833
+#, no-c-format
+msgid "<programlisting>@Duration</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:834
+#, no-c-format
+msgid ""
+"Specifies that a parameter of the asynchronous call is the duration before "
+"the call is processed (or first processed for recurring calls)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:840
+#, no-c-format
+msgid "<literal>@Expiration</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:842
+#, no-c-format
+msgid "<programlisting>@Expiration</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:843
+#, no-c-format
+msgid ""
+"Specifies that a parameter of the asynchronous call is the datetime at which "
+"the call is processed (or first processed for recurring calls)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:849
+#, no-c-format
+msgid "<literal>@IntervalDuration</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:851
+#, no-c-format
+msgid "<programlisting>@IntervalDuration</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:852
+#, no-c-format
+msgid ""
+"Specifies that an asynchronous method call recurs, and that the annotationed "
+"parameter is duration between recurrences."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:861
+#, no-c-format
+msgid "Annotations for use with JSF <literal>dataTable</literal>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:862
+#, no-c-format
+msgid ""
+"The following annotations make it easy to implement clickable lists backed "
+"by a stateful session bean. They appear on attributes."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:867
+#, no-c-format
+msgid "@DataModel"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:869
+#, no-c-format
+msgid "@DataModel(\"variableName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:870
+#, no-c-format
+msgid ""
+"Exposes an attribute of type <literal>List</literal>, <literal>Map</"
+"literal>, <literal>Set</literal> or <literal>Object[]</literal> as a JSF "
+"<literal>DataModel</literal> into the scope of the owning component (or the "
+"<literal>EVENT</literal> scope if the owning component is "
+"<literal>STATELESS</literal>). In the case of <literal>Map</literal>, each "
+"row of the <literal>DataModel</literal> is a <literal>Map.Entry</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:875
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; name of the conversation context variable. "
+"Default to the attribute name."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:880
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; if <literal>scope=ScopeType.PAGE</literal> "
+"is explicitly specified, the <literal>DataModel</literal> will be kept in "
+"the <literal>PAGE</literal> context."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:888
+#, no-c-format
+msgid "<literal>@DataModelSelection</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:890
+#, no-c-format
+msgid "<programlisting>@DataModelSelection</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:891
+#, no-c-format
+msgid ""
+"Injects the selected value from the JSF <literal>DataModel</literal> (this "
+"is the element of the underlying collection, or the map value)."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:896 Annotations.xml:912
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; name of the conversation context variable. "
+"Not needed if there is exactly one <literal>@DataModel</literal> in the "
+"component."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:904
+#, no-c-format
+msgid "<literal>@DataModelSelectionIndex</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:906
+#, no-c-format
+msgid "<programlisting>@DataModelSelectionIndex</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:907
+#, no-c-format
+msgid ""
+"Exposes the selection index of the JSF <literal>DataModel</literal> as an "
+"attribute of the component (this is the row number of the underlying "
+"collection, or the map key)."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:923
+#, no-c-format
+msgid "Meta-annotations for databinding"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:924
+#, no-c-format
+msgid ""
+"These meta-annotations make it possible to implement similar functionality "
+"to <literal>@DataModel</literal> and <literal>@DataModelSelection</literal> "
+"for other datastructures apart from lists."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:929
+#, no-c-format
+msgid "@DataBinderClass"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:931
+#, no-c-format
+msgid "@DataBinderClass(DataModelBinder.class)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:932
+#, no-c-format
+msgid "Specifies that an annotation is a databinding annotation."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:938
+#, no-c-format
+msgid "@DataSelectorClass"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:940
+#, no-c-format
+msgid "@DataSelectorClass(DataModelSelector.class)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:941
+#, no-c-format
+msgid "Specifies that an annotation is a dataselection annotation."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:950
+#, no-c-format
+msgid "Annotations for packaging"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:951
+#, no-c-format
+msgid ""
+"This annotation provides a mechanism for declaring information about a set "
+"of components that are packaged together. It can be applied to any Java "
+"package."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:956
+#, no-c-format
+msgid "@Namespace"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:958
+#, no-c-format
+msgid "@Namespace(value=\"http://jboss.com/products/seam/example/seampay\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:959
+#, no-c-format
+msgid ""
+"Specifies that components in the current package are associated with the "
+"given namespace. The declared namespace can be used as an XML namespace in a "
+"<literal>components.xml</literal> file to simplify application configuration."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:962
+#, no-c-format
+msgid ""
+"@Namespace(value=\"http://jboss.com/products/seam/core\", prefix=\"org.jboss."
+"seam.core\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:963
+#, no-c-format
+msgid ""
+"Specifies a namespace to associate with a given package. Additionally, it "
+"specifies a component name prefix to be applied to component names specified "
+"in the XML file. For example, an XML element named <literal>microcontainer</"
+"literal> that is associated with this namespace would be understood to "
+"actually refere to a component named <literal>org.jboss.seam.core."
+"microcontainer</literal>."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Book_Info.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Book_Info.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Book_Info.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,38 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Book_Info.xml:10
+#, no-c-format
+msgid "Seam - Contextual Components"
+msgstr ""
+
+#. Tag: subtitle
+#: Book_Info.xml:11
+#, no-c-format
+msgid "A Framework for Java EE 5"
+msgstr ""
+
+#. Tag: para
+#: Book_Info.xml:15
+#, no-c-format
+msgid "This book is a Reference Guide for Seam"
+msgstr ""
+
+#. Tag: holder
+#: Book_Info.xml:36
+#, no-c-format
+msgid "&FORMAL-RHI;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Cache.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Cache.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Cache.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,318 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Cache.xml:10
+#, no-c-format
+msgid "Caching"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:11
+#, no-c-format
+msgid ""
+"In almost all enterprise applications, the database is the primary "
+"bottleneck, and the least scalable tier of the runtime environment. People "
+"from a PHP/Ruby environment will try to tell you that so-called \"shared "
+"nothing\" architectures scale well. While that may be literally true, I "
+"don't know of many interesting multi-user applications which can be "
+"implemented with no sharing of resources between different nodes of the "
+"cluster. What these silly people are really thinking of is a \"share nothing "
+"except for the database\" architecture. Of course, sharing the database is "
+"the primary problem with scaling a multi-user application&mdash;so the claim "
+"that this architecture is highly scalable is absurd, and tells you a lot "
+"about the kind of applications that these folks spend most of their time "
+"working on."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:14
+#, no-c-format
+msgid ""
+"Almost anything we can possibly do to share the database <emphasis>less "
+"often</emphasis> is worth doing."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:17
+#, no-c-format
+msgid ""
+"This calls for a cache. Well, not just one cache. A well designed Seam "
+"application will feature a rich, multi-layered caching strategy that impacts "
+"every layer of the application:"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:22
+#, no-c-format
+msgid ""
+"The database, of course, has its own cache. This is super-important, but "
+"can't scale like a cache in the application tier."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:27
+#, no-c-format
+msgid ""
+"Your ORM solution (Hibernate, or some other JPA implementation) has a second-"
+"level cache of data from the database. This is a very powerful capability, "
+"but is often misused. In a clustered environment, keeping the data in the "
+"cache transactionally consistent across the whole cluster, and with the "
+"database, is quite expensive. It makes most sense for data which is shared "
+"between many users, and is updated rarely. In traditional stateless "
+"architectures, people often try to use the second-level cache for "
+"conversational state. This is always bad, and is especially wrong in Seam."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:32
+#, no-c-format
+msgid ""
+"The Seam conversation context is a cache of conversational state. Components "
+"you put into the conversation context can hold and cache state relating to "
+"the current user interaction."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:37
+#, no-c-format
+msgid ""
+"In particular, the Seam-managed persistence context (or an extended EJB "
+"container-managed persistence context associated with a conversation-scoped "
+"stateful session bean) acts as a cache of data that has been read in the "
+"current conversation. This cache tends to have a pretty high hitrate! Seam "
+"optimizes the replication of Seam-managed persistence contexts in a "
+"clustered environment, and there is no requirement for transactional "
+"consistency with the database (optimistic locking is sufficient) so you "
+"don't need to worry too much about the performance implications of this "
+"cache, unless you read thousands of objects into a single persistence "
+"context."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:42
+#, no-c-format
+msgid ""
+"The application can cache non-transactional state in the Seam application "
+"context. State kept in the application context is of course not visible to "
+"other nodes in the cluster."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:47
+#, no-c-format
+msgid ""
+"The application can cache transactional state using the Seam "
+"<literal>pojoCache</literal> component, which integrates JBossCache into the "
+"Seam environment. This state will be visible to other nodes if you run JBoss "
+"cache in a clustered mode."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:52
+#, no-c-format
+msgid ""
+"Finally, Seam lets you cache rendered fragments of a JSF page. Unlike the "
+"ORM second-level cache, this cache is not automatically invalidated when "
+"data changes, so you need to write application code to perform explicit "
+"invalidation, or set appropriate expiration policies."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:57
+#, no-c-format
+msgid ""
+"For more information about the second-level cache, you'll need to refer to "
+"the documentation of your ORM solution, since this is an extremely complex "
+"topic. In this section we'll discuss the use of JBossCache directly, via the "
+"<literal>pojoCache</literal> component, or as the page fragment cache, via "
+"the <literal>&lt;s:cache&gt;</literal> control."
+msgstr ""
+
+#. Tag: title
+#: Cache.xml:61
+#, no-c-format
+msgid "Using JBossCache in Seam"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:62
+#, no-c-format
+msgid ""
+"The built-in <literal>pojoCache</literal> component manages an instance of "
+"<literal>org.jboss.cache.aop.PojoCache</literal>. You can safely put any "
+"immutable Java object in the cache, and it will be replicated across the "
+"cluster (assuming that replication is enabled). If you want to keep mutable "
+"objects in the cache, you'll need to run the JBossCache bytecode "
+"preprocessor to ensure that changes to the objects will be automatically "
+"detected and replicated."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:65
+#, no-c-format
+msgid ""
+"To use <literal>pojoCache</literal>, all you need to do is put the "
+"JBossCache jars in the classpath, and provide a resource named "
+"<literal>treecache.xml</literal> with an appropriate cache configuration. "
+"JBossCache has many scary and confusing configuration settings, so we won't "
+"discuss them here. Please refer to the JBossCache documentation for more "
+"information."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:68
+#, no-c-format
+msgid ""
+"For an EAR depoyment of Seam, we recommend that the JBossCache jars and "
+"configuration go directly into the EAR. Make sure you declare the jars in "
+"<literal>application.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:71
+#, no-c-format
+msgid "Now you can inject the cache into any Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:74
+#, no-c-format
+msgid ""
+"@Name(\"chatroom\")\n"
+"public class Chatroom {\n"
+"    @In PojoCache pojoCache;\n"
+"    \n"
+"    public void join(String username) {\n"
+"      try\n"
+"      {\n"
+"         Set&lt;String&gt; userList = (Set&lt;String&gt;) pojoCache.get"
+"(\"chatroom\", \"userList\");\n"
+"         if (userList==null) \n"
+"         {\n"
+"            userList = new HashSet&lt;String&gt;();\n"
+"            pojoCache.put(\"chatroom\", \"userList\", userList);\n"
+"         }\n"
+"         userList.put(username);\n"
+"      }\n"
+"      catch (CacheException ce)\n"
+"      {\n"
+"         throw new RuntimeException(ce);\n"
+"      }\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:75
+#, no-c-format
+msgid ""
+"If you want to have multiple JBossCache configurations in your application, "
+"use <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:78
+#, no-c-format
+msgid ""
+"&lt;core:pojo-cache name=\"myCache\" cfg-resource-name=\"myown/cache.xml\"/"
+"&gt;"
+msgstr ""
+
+#. Tag: title
+#: Cache.xml:82
+#, no-c-format
+msgid "Page fragment caching"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:83
+#, no-c-format
+msgid ""
+"The most interesting user of JBossCache is the <literal>&lt;s:cache&gt;</"
+"literal> tag, Seam's solution to the problem of page fragment caching in "
+"JSF. <literal>&lt;s:cache&gt;</literal> uses <literal>pojoCache</literal> "
+"internally, so you need to follow the steps listed above before you can use "
+"it. (Put the jars in the EAR, wade through the scary configuration options, "
+"etc.)"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:86
+#, no-c-format
+msgid ""
+"<literal>&lt;s:cache&gt;</literal> is used for caching some rendered content "
+"which changes rarely. For example, the welcome page of our blog displays the "
+"recent blog entries:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:89
+#, no-c-format
+msgid ""
+"&lt;s:cache key=\"recentEntries-#{blog.id}\" region=\"welcomePageFragments"
+"\"&gt;\n"
+"   &lt;h:dataTable value=\"#{blog.recentEntries}\" var=\"blogEntry\"&gt;\n"
+"      &lt;h:column&gt;\n"
+"         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"         &lt;div&gt;\n"
+"            &lt;s:formattedText value=\"#{blogEntry.body}\"/&gt;\n"
+"         &lt;/div&gt;\n"
+"      &lt;/h:column&gt;\n"
+"   &lt;/h:dataTable&gt;\n"
+"&lt;/s:cache&gt;"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:90
+#, no-c-format
+msgid ""
+"The <literal>key</literal> let's you have multiple cached versions of each "
+"page fragment. In this case, there is one cached version per blog. The "
+"<literal>region</literal> determines the JBossCache node that all version "
+"will be stored in. Different nodes may have different expiry policies. "
+"(That's the stuff you set up using the aforementioned scary configuration "
+"options.)"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:93
+#, no-c-format
+msgid ""
+"Of course, the big problem with <literal>&lt;s:cache&gt;</literal> is that "
+"it is too stupid to know when the underlying data changes (for example, when "
+"the blogger posts a new entry). So you need to evict the cached fragment "
+"manually:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:96
+#, no-c-format
+msgid ""
+"public void post() {\n"
+"    ...\n"
+"    entityManager.persist(blogEntry);\n"
+"    pojoCache.remove(\"welcomePageFragments\", \"recentEntries-\" + blog."
+"getId() );\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:97
+#, no-c-format
+msgid ""
+"Alternatively, if it is not critical that changes are immediately visible to "
+"the user, you could set a short expiry time on the JbossCache node."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Components.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Components.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Components.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2007 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Components.xml:10
+#, no-c-format
+msgid "Built-in Seam components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:11
+#, no-c-format
+msgid ""
+"This chapter describes Seam's built-in components, and their configuration "
+"properties."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:14
+#, no-c-format
+msgid ""
+"Note that you can replace any of the built in components with your own "
+"implementations simply by specifying the name of one of the built in "
+"components on your own class using <literal>@Name</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:17
+#, no-c-format
+msgid ""
+"Note also that even though all the built in components use a qualified name, "
+"most of them are aliased to unqualified names by default. These aliases "
+"specify <literal>auto-create=\"true\"</literal>, so you do not need to use "
+"<literal>create=true</literal> when injecting built-in components by their "
+"unqualified name."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:21
+#, no-c-format
+msgid "Context injection components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:22
+#, no-c-format
+msgid ""
+"The first set of built in components exist purely to support injection of "
+"various contextual objects. For example, the following component instance "
+"variable would have the Seam session context object injected:"
+msgstr ""
+
+#. Tag: programlisting
+#: Components.xml:25
+#, no-c-format
+msgid "@In private Context sessionContext;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:28
+#, no-c-format
+msgid "org.jboss.seam.core.eventContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:30
+#, no-c-format
+msgid "Manager component for the event context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:36
+#, no-c-format
+msgid "org.jboss.seam.core.pageContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:38
+#, no-c-format
+msgid "Manager component for the page context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:44
+#, no-c-format
+msgid "org.jboss.seam.core.conversationContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:46
+#, no-c-format
+msgid "Manager component for the conversation context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:52
+#, no-c-format
+msgid "org.jboss.seam.core.sessionContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:54
+#, no-c-format
+msgid "Manager component for the session context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:60
+#, no-c-format
+msgid "org.jboss.seam.core.applicationContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:62
+#, no-c-format
+msgid "Manager component for the appication context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:68
+#, no-c-format
+msgid "org.jboss.seam.core.businessProcessContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:70
+#, no-c-format
+msgid "Manager component for the business process context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:76
+#, no-c-format
+msgid "org.jboss.seam.core.facesContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:78
+#, no-c-format
+msgid ""
+"Manager component for the <literal>FacesContext</literal> context object "
+"(not a true Seam context)"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:84 Components.xml:267 Components.xml:441 Components.xml:572
+#, no-c-format
+msgid "All of these components are always installed."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:90
+#, no-c-format
+msgid "Utility components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:91
+#, no-c-format
+msgid "These components are merely useful."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:96
+#, no-c-format
+msgid "org.jboss.seam.core.facesMessages"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:98
+#, no-c-format
+msgid "Allows faces success messages to propagate across a browser redirect."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:103
+#, no-c-format
+msgid ""
+"<literal>add(FacesMessage facesMessage)</literal> &mdash; add a faces "
+"message, which will be displayed during the next render response phase that "
+"occurs in the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:108
+#, no-c-format
+msgid ""
+"<literal>add(String messageTemplate)</literal> &mdash; add a faces message, "
+"rendered from the given message template which may contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:113
+#, no-c-format
+msgid ""
+"<literal>add(Severity severity, String messageTemplate)</literal> &mdash; "
+"add a faces message, rendered from the given message template which may "
+"contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:118
+#, no-c-format
+msgid ""
+"<literal>addFromResourceBundle(String key)</literal> &mdash; add a faces "
+"message, rendered from a message template defined in the Seam resource "
+"bundle which may contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:123
+#, no-c-format
+msgid ""
+"<literal>addFromResourceBundle(Severity severity, String key)</literal> "
+"&mdash; add a faces message, rendered from a message template defined in the "
+"Seam resource bundle which may contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:128
+#, no-c-format
+msgid "<literal>clear()</literal> &mdash; clear all messages."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:136
+#, no-c-format
+msgid "org.jboss.seam.core.redirect"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:138
+#, no-c-format
+msgid ""
+"A convenient API for performing redirects with parameters (this is "
+"especially useful for bookmarkable search results screens)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:143
+#, no-c-format
+msgid ""
+"<literal>redirect.viewId</literal> &mdash; the JSF view id to redirect to."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:148
+#, no-c-format
+msgid ""
+"<literal>redirect.conversationPropagationEnabled</literal> &mdash; "
+"determines whether the conversation will propagate across the redirect."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:153
+#, no-c-format
+msgid ""
+"<literal>redirect.parameters</literal> &mdash; a map of request parameter "
+"name to value, to be passed in the redirect request."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:158
+#, no-c-format
+msgid "<literal>execute()</literal> &mdash; perform the redirect immediately."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:163
+#, no-c-format
+msgid ""
+"<literal>captureCurrentRequest()</literal> &mdash; stores the view id and "
+"request parameters of the current GET request (in the conversation context), "
+"for later use by calling <literal>execute()</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:171
+#, no-c-format
+msgid "org.jboss.seam.core.httpError"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:173
+#, no-c-format
+msgid "A convenient API for sending HTTP errors."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:179
+#, no-c-format
+msgid "org.jboss.seam.core.events"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:181
+#, no-c-format
+msgid ""
+"An API for raising events that can be observed via <literal>@Observer</"
+"literal> methods, or method bindings in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:186
+#, no-c-format
+msgid ""
+"<literal>raiseEvent(String type)</literal> &mdash; raise an event of a "
+"particular type and distribute to all observers."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:191
+#, no-c-format
+msgid ""
+"<literal>raiseAsynchronousEvent(String type)</literal> &mdash; raise an "
+"event to be processed asynchronously by the EJB3 timer service."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:196
+#, no-c-format
+msgid ""
+"<literal>raiseTimedEvent(String type, ....)</literal> &mdash; schedule an "
+"event to be processed asynchronously by the EJB3 timer service."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:201
+#, no-c-format
+msgid ""
+"<literal>addListener(String type, String methodBinding)</literal> &mdash; "
+"add an observer for a particular event type."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:209
+#, no-c-format
+msgid "org.jboss.seam.core.interpolator"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:211
+#, no-c-format
+msgid "An API for interpolating the values of JSF EL expressions in Strings."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:216
+#, no-c-format
+msgid ""
+"<literal>interpolate(String template)</literal> &mdash; scan the template "
+"for JSF EL expressions of the form <literal>#{...}</literal> and replace "
+"them with their evaluated values."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:224
+#, no-c-format
+msgid "org.jboss.seam.core.expressions"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:226
+#, no-c-format
+msgid "An API for creating value and method bindings."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:231
+#, no-c-format
+msgid ""
+"<literal>createValueBinding(String expression)</literal> &mdash; create a "
+"value binding object."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:236
+#, no-c-format
+msgid ""
+"<literal>createMethodBinding(String expression)</literal> &mdash; create a "
+"method binding object."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:244
+#, no-c-format
+msgid "org.jboss.seam.core.pojoCache"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:246
+#, no-c-format
+msgid ""
+"Manager component for a JBoss Cache <literal>PojoCache</literal> instance."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:251
+#, no-c-format
+msgid ""
+"<literal>pojoCache.cfgResourceName</literal> &mdash; the name of the "
+"configuration file. Default to <literal>treecache.xml</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:259
+#, no-c-format
+msgid "org.jboss.seam.core.uiComponent"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:261
+#, no-c-format
+msgid ""
+"Allows access to a JSF <literal>UIComponent</literal> by its id from the EL. "
+"For example, we can write <literal>@In(\"#{uiComponent['myForm:address']."
+"value}\")</literal>."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:273
+#, no-c-format
+msgid "Components for internationalization and themes"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:274
+#, no-c-format
+msgid ""
+"The next group of components make it easy to build internationalized user "
+"interfaces using Seam."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:279
+#, no-c-format
+msgid "org.jboss.seam.core.locale"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:281
+#, no-c-format
+msgid "The Seam locale. The locale is session scoped."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:287
+#, no-c-format
+msgid "org.jboss.seam.core.timezone"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:289
+#, no-c-format
+msgid "The Seam timezone. The timezone is session scoped."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:295
+#, no-c-format
+msgid "org.jboss.seam.core.resourceBundle"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:297
+#, no-c-format
+msgid ""
+"The Seam resource bundle. The resource bundle is session scoped. The Seam "
+"resource bundle performs a depth-first search for keys in a list of Java "
+"resource bundles."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:302
+#, no-c-format
+msgid ""
+"<literal>resourceBundle.bundleNames</literal> &mdash; the names of the Java "
+"resource bundles to search. Default to <literal>messages</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:310
+#, no-c-format
+msgid "org.jboss.seam.core.localeSelector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:312
+#, no-c-format
+msgid ""
+"Supports selection of the locale either at configuration time, or by the "
+"user at runtime."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:317 Components.xml:367
+#, no-c-format
+msgid "<literal>select()</literal> &mdash; select the specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:322
+#, no-c-format
+msgid ""
+"<literal>localeSelector.locale</literal> &mdash; the actual <literal>java."
+"util.Locale</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:327
+#, no-c-format
+msgid ""
+"<literal>localeSelector.localeString</literal> &mdash; the stringified "
+"representation of the locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:332
+#, no-c-format
+msgid ""
+"<literal>localeSelector.language</literal> &mdash; the language for the "
+"specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:337
+#, no-c-format
+msgid ""
+"<literal>localeSelector.country</literal> &mdash; the country for the "
+"specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:342
+#, no-c-format
+msgid ""
+"<literal>localeSelector.variant</literal> &mdash; the variant for the "
+"specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:347
+#, no-c-format
+msgid ""
+"<literal>localeSelector.supportedLocales</literal> &mdash; a list of "
+"<literal>SelectItem</literal>s representing the supported locales listed in "
+"<literal>jsf-config.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:352
+#, no-c-format
+msgid ""
+"<literal>localeSelector.cookieEnabled</literal> &mdash; specifies that the "
+"locale selection should be persisted via a cookie."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:360
+#, no-c-format
+msgid "org.jboss.seam.core.timezoneSelector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:362
+#, no-c-format
+msgid ""
+"Supports selection of the timezone either at configuration time, or by the "
+"user at runtime."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:372
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.timezone</literal> &mdash; the actual "
+"<literal>java.util.TimeZone</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:377
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.timeZoneId</literal> &mdash; the stringified "
+"representation of the timezone."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:382
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.cookieEnabled</literal> &mdash; specifies that the "
+"timezone selection should be persisted via a cookie."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:390
+#, no-c-format
+msgid "org.jboss.seam.core.messages"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:392
+#, no-c-format
+msgid ""
+"A map containing internationalized messages rendered from message templates "
+"defined in the Seam resource bundle."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:398
+#, no-c-format
+msgid "org.jboss.seam.theme.themeSelector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:400
+#, no-c-format
+msgid ""
+"Supports selection of the theme either at configuration time, or by the user "
+"at runtime."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:405
+#, no-c-format
+msgid "<literal>select()</literal> &mdash; select the specified theme."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:410
+#, no-c-format
+msgid ""
+"<literal>theme.availableThemes</literal> &mdash; the list of defined themes."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:415
+#, no-c-format
+msgid "<literal>themeSelector.theme</literal> &mdash; the selected theme."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:420
+#, no-c-format
+msgid ""
+"<literal>themeSelector.themes</literal> &mdash; a list of "
+"<literal>SelectItem</literal>s representing the defined themes."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:425
+#, no-c-format
+msgid ""
+"<literal>themeSelector.cookieEnabled</literal> &mdash; specifies that the "
+"theme selection should be persisted via a cookie."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:433
+#, no-c-format
+msgid "org.jboss.seam.theme.theme"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:435
+#, no-c-format
+msgid "A map containing theme entries."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:447
+#, no-c-format
+msgid "Components for controlling conversations"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:448
+#, no-c-format
+msgid ""
+"The next group of components allow control of conversations by the "
+"application or user interface."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:453
+#, no-c-format
+msgid "org.jboss.seam.core.conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:455
+#, no-c-format
+msgid ""
+"API for application control of attributes of the current Seam conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:460 Components.xml:475
+#, no-c-format
+msgid "<literal>getId()</literal> &mdash; returns the current conversation id"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:465
+#, no-c-format
+msgid ""
+"<literal>isNested()</literal> &mdash; is the current conversation a nested "
+"conversation?"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:470
+#, no-c-format
+msgid ""
+"<literal>isLongRunning()</literal> &mdash; is the current conversation a "
+"long-running conversation?"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:480
+#, no-c-format
+msgid ""
+"<literal>getParentId()</literal> &mdash; returns the conversation id of the "
+"parent conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:485
+#, no-c-format
+msgid ""
+"<literal>getRootId()</literal> &mdash; returns the conversation id of the "
+"root conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:490
+#, no-c-format
+msgid ""
+"<literal>setTimeout(int timeout)</literal> &mdash; sets the timeout for the "
+"current conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:495
+#, no-c-format
+msgid ""
+"<literal>setViewId(String outcome)</literal> &mdash; sets the view id to be "
+"used when switching back to the current conversation from the conversation "
+"switcher, conversation list, or breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:500
+#, no-c-format
+msgid ""
+"<literal>setDescription(String description)</literal> &mdash; sets the "
+"description of the current conversation to be displayed in the conversation "
+"switcher, conversation list, or breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:505
+#, no-c-format
+msgid ""
+"<literal>redirect()</literal> &mdash; redirect to the last well-defined view "
+"id for this conversation (useful after login challenges)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:510
+#, no-c-format
+msgid ""
+"<literal>leave()</literal> &mdash; exit the scope of this conversation, "
+"without actually ending the conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:515
+#, no-c-format
+msgid ""
+"<literal>begin()</literal> &mdash; begin a long-running conversation "
+"(equivalent to <literal>@Begin</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:520
+#, no-c-format
+msgid ""
+"<literal>beginPageflow(String pageflowName)</literal> &mdash; begin a long-"
+"running conversation with a pageflow (equivalent to <literal>@Begin(pageflow="
+"\"...\")</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:525
+#, no-c-format
+msgid ""
+"<literal>end()</literal> &mdash; end a long-running conversation (equivalent "
+"to <literal>@End</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:530
+#, no-c-format
+msgid ""
+"<literal>pop()</literal> &mdash; pop the conversation stack, returning to "
+"the parent conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:535
+#, no-c-format
+msgid ""
+"<literal>root()</literal> &mdash; return to the root conversation of the "
+"conversation stack."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:540
+#, no-c-format
+msgid ""
+"<literal>changeFlushMode(FlushModeType flushMode)</literal> &mdash; change "
+"the flush mode of the conversation."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:548
+#, no-c-format
+msgid "org.jboss.seam.core.conversationList"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:550
+#, no-c-format
+msgid "Manager component for the conversation list."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:556
+#, no-c-format
+msgid "org.jboss.seam.core.conversationStack"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:558
+#, no-c-format
+msgid "Manager component for the conversation stack (breadcrumbs)."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:564
+#, no-c-format
+msgid "org.jboss.seam.core.switcher"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:566
+#, no-c-format
+msgid "The conversation switcher."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:578
+#, no-c-format
+msgid "jBPM-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:579
+#, no-c-format
+msgid "These components are for use with jBPM."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:584
+#, no-c-format
+msgid "org.jboss.seam.core.pageflow"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:586
+#, no-c-format
+msgid "API control of Seam pageflows."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:591
+#, no-c-format
+msgid ""
+"<literal>isInProcess()</literal> &mdash; returns <literal>true</literal> if "
+"there is currently a pageflow in process"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:596
+#, no-c-format
+msgid ""
+"<literal>getProcessInstance()</literal> &mdash; returns jBPM "
+"<literal>ProcessInstance</literal> for the current pageflow"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:601
+#, no-c-format
+msgid ""
+"<literal>begin(String pageflowName)</literal> &mdash; begin a pageflow in "
+"the context of the current conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:606
+#, no-c-format
+msgid ""
+"<literal>reposition(String nodeName)</literal> &mdash; reposition the "
+"current pageflow to a particular node"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:614
+#, no-c-format
+msgid "org.jboss.seam.core.actor"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:616
+#, no-c-format
+msgid ""
+"API for application control of attributes of the jBPM actor associated with "
+"the current session."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:621
+#, no-c-format
+msgid ""
+"<literal>setId(String actorId)</literal> &mdash; sets the jBPM actor id of "
+"the current user."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:626
+#, no-c-format
+msgid ""
+"<literal>getGroupActorIds()</literal> &mdash; returns a <literal>Set</"
+"literal> to which jBPM actor ids for the current users groups may be added."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:634
+#, no-c-format
+msgid "org.jboss.seam.core.transition"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:636
+#, no-c-format
+msgid ""
+"API for application control of the jBPM transition for the current task."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:641
+#, no-c-format
+msgid ""
+"<literal>setName(String transitionName)</literal> &mdash; sets the jBPM "
+"transition name to be used when the current task is ended via "
+"<literal>@EndTask</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:649
+#, no-c-format
+msgid "org.jboss.seam.core.businessProcess"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:651
+#, no-c-format
+msgid ""
+"API for programmatic control of the association between the conversation and "
+"business process."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:656
+#, no-c-format
+msgid ""
+"<literal>businessProcess.taskId</literal> &mdash; the id of the task "
+"associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:661
+#, no-c-format
+msgid ""
+"<literal>businessProcess.processId</literal> &mdash; the id of the process "
+"associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:666
+#, no-c-format
+msgid ""
+"<literal>businessProcess.hasCurrentTask()</literal> &mdash; is a task "
+"instance associated with the current conversation?"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:671
+#, no-c-format
+msgid ""
+"<literal>businessProcess.hasCurrentProcess()</literal> &mdash; is a process "
+"instance associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:676
+#, no-c-format
+msgid ""
+"<literal>createProcess(String name)</literal> &mdash; create an instance of "
+"the named process definition and associate it with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:681
+#, no-c-format
+msgid ""
+"<literal>startTask()</literal> &mdash; start the task associated with the "
+"current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:686
+#, no-c-format
+msgid ""
+"<literal>endTask(String transitionName)</literal> &mdash; end the task "
+"associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:691
+#, no-c-format
+msgid ""
+"<literal>resumeTask(Long id)</literal> &mdash; associate the task with the "
+"given id with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:696
+#, no-c-format
+msgid ""
+"<literal>resumeProcess(Long id)</literal> &mdash; associate the process with "
+"the given id with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:701
+#, no-c-format
+msgid ""
+"<literal>transition(String transitionName)</literal> &mdash; trigger the "
+"transition."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:709
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstance"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:711
+#, no-c-format
+msgid "Manager component for the jBPM <literal>TaskInstance</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:717
+#, no-c-format
+msgid "org.jboss.seam.core.processInstance"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:719
+#, no-c-format
+msgid "Manager component for the jBPM <literal>ProcessInstance</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:725
+#, no-c-format
+msgid "org.jboss.seam.core.jbpmContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:727
+#, no-c-format
+msgid "Manager component for an event-scoped <literal>JbpmContext</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:733
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstanceList"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:735
+#, no-c-format
+msgid "Manager component for the jBPM task list."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:741
+#, no-c-format
+msgid "org.jboss.seam.core.pooledTaskInstanceList"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:743
+#, no-c-format
+msgid "Manager component for the jBPM pooled task list."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:749
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstanceListForType"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:751
+#, no-c-format
+msgid "Manager component for the jBPM task lists."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:757
+#, no-c-format
+msgid "org.jboss.seam.core.pooledTask"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:759
+#, no-c-format
+msgid "Action handler for pooled task assignment."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:765
+#, no-c-format
+msgid ""
+"All of these components are installed whenever the component <literal>org."
+"jboss.seam.core.jbpm</literal> is installed."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:771
+#, no-c-format
+msgid "Security-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:772
+#, no-c-format
+msgid "These components relate to web-tier security."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:777
+#, no-c-format
+msgid "org.jboss.seam.core.userPrincipal"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:779
+#, no-c-format
+msgid "Manager component for the current user <literal>Principal</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:785
+#, no-c-format
+msgid "org.jboss.seam.core.isUserInRole"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:787
+#, no-c-format
+msgid ""
+"Allows JSF pages to choose to render a control, depending upon the roles "
+"available to the current principal. <literal>&lt;h:commandButton value=\"edit"
+"\" rendered=\"#{isUserInRole['admin']}\"/&gt;</literal>."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:796
+#, no-c-format
+msgid "JMS-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:797
+#, no-c-format
+msgid ""
+"These components are for use with managed <literal>TopicPublisher</literal>s "
+"and <literal>QueueSender</literal>s (see below)."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:802
+#, no-c-format
+msgid "org.jboss.seam.jms.queueSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:804
+#, no-c-format
+msgid "Manager component for a JMS <literal>QueueSession</literal> ."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:810
+#, no-c-format
+msgid "org.jboss.seam.jms.topicSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:812
+#, no-c-format
+msgid "Manager component for a JMS <literal>TopicSession</literal> ."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:821
+#, no-c-format
+msgid "Mail-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:822
+#, no-c-format
+msgid "These components are for use with Seam's Email support"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:827
+#, no-c-format
+msgid "org.jboss.seam.mail.mailSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:829
+#, no-c-format
+msgid "Manager component for a JavaMail <literal>Session</literal> ."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:834
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.host</literal> &mdash; the hostname "
+"of the SMTP server to use"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:839
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.port</literal> &mdash; the port of "
+"the SMTP server to use"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:844
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.username</literal> &mdash; the "
+"username to use to connect to the SMTP server."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:849
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.password</literal> &mdash; the "
+"password to use to connect to the SMTP server"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:854
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.debug</literal> &mdash; enable "
+"JavaMail debugging (very verbose)"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:859
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.sessionJndiName</literal> &mdash; "
+"name under which a javax.mail.Session is bound to JNDI"
+msgstr ""
+
+#. Tag: title
+#: Components.xml:870
+#, no-c-format
+msgid "Infrastructural components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:871
+#, no-c-format
+msgid ""
+"These components provide critical platform infrastructure. You can install a "
+"component by including its class name in the <literal>org.jboss.seam.core."
+"init.componentClasses</literal> configuration property."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:876
+#, no-c-format
+msgid "org.jboss.seam.core.init"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:878
+#, no-c-format
+msgid "Initialization settings for Seam. Always installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:883
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.jndiPattern</literal> &mdash; the JNDI "
+"pattern used for looking up session beans"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:888
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.debug</literal> &mdash; enable Seam debug "
+"mode"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:893
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.clientSideConversations</literal> &mdash; "
+"if set to <literal>true</literal>, Seam will save conversation context "
+"variables in the client instead of in the <literal>HttpSession</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:898
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.userTransactionName</literal> &mdash; the "
+"JNDI name to use when looking up the JTA <literal>UserTransaction</literal> "
+"object."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:906
+#, no-c-format
+msgid "org.jboss.seam.core.manager"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:908
+#, no-c-format
+msgid ""
+"Internal component for Seam page and conversation context management. Always "
+"installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:913
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationTimeout</literal> &mdash; "
+"the conversation context timeout in milliseconds."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:918
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.concurrentRequestTimeout</literal> "
+"&mdash; maximum wait time for a thread attempting to gain a lock on the long-"
+"running conversation context."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:923
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationIdParameter</literal> "
+"&mdash; the request parameter used to propagate the conversation id, default "
+"to <literal>conversationId</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:928
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationIsLongRunningParameter</"
+"literal> &mdash; the request parameter used to propagate information about "
+"whether the conversation is long-running, default to "
+"<literal>conversationIsLongRunning</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:936
+#, no-c-format
+msgid "org.jboss.seam.core.pages"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:938
+#, no-c-format
+msgid "Internal component for Seam workspace management. Always installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:943
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.pages.noConversationViewId</literal> &mdash; "
+"global setting for the view id to redirect to when a conversation entry is "
+"not found on the server side."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:951
+#, no-c-format
+msgid "org.jboss.seam.core.ejb"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:953
+#, no-c-format
+msgid ""
+"Bootstraps the JBoss Embeddable EJB3 container. Install as class "
+"<literal>org.jboss.seam.core.Ejb</literal>. This is useful when using Seam "
+"with EJB components outside the context of a Java EE 5 application server."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:956
+#, no-c-format
+msgid ""
+"The basic Embedded EJB configuration is defined in <literal>jboss-embedded-"
+"beans.xml</literal>. Additional microcontainer configuration (for example, "
+"extra datasources) may be specified by <literal>jboss-beans.xml</literal> or "
+"<literal>META-INF/jboss-beans.xml</literal> in the classpath."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:962
+#, no-c-format
+msgid "org.jboss.seam.core.microcontainer"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:964
+#, no-c-format
+msgid ""
+"Bootstraps the JBoss microcontainer. Install as class <literal>org.jboss."
+"seam.core.Microcontainer</literal>. This is useful when using Seam with "
+"Hibernate and no EJB components outside the context of a Java EE application "
+"server. The microcontainer can provide a partial EE environment with JNDI, "
+"JTA, a JCA datasource and Hibernate."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:967
+#, no-c-format
+msgid ""
+"The microcontainer configuration may be specified by <literal>jboss-beans."
+"xml</literal> or <literal>META-INF/jboss-beans.xml</literal> in the "
+"classpath."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:973
+#, no-c-format
+msgid "org.jboss.seam.core.jbpm"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:975
+#, no-c-format
+msgid ""
+"Bootstraps a <literal>JbpmConfiguration</literal>. Install as class "
+"<literal>org.jboss.seam.core.Jbpm</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:980
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.jbpm.processDefinitions</literal> &mdash; a "
+"list of resource names of jPDL files to be used for orchestration of "
+"business processes."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:985
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.jbpm.pageflowDefinitions</literal> &mdash; a "
+"list of resource names of jPDL files to be used for orchestration of "
+"conversation page flows."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:993
+#, no-c-format
+msgid "org.jboss.seam.core.conversationEntries"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:995
+#, no-c-format
+msgid ""
+"Internal session-scoped component recording the active long-running "
+"conversations between requests."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1001
+#, no-c-format
+msgid "org.jboss.seam.core.facesPage"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1003
+#, no-c-format
+msgid ""
+"Internal page-scoped component recording the conversation context associated "
+"with a page."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1009
+#, no-c-format
+msgid "org.jboss.seam.core.persistenceContexts"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1011
+#, no-c-format
+msgid ""
+"Internal component recording the persistence contexts which were used in the "
+"current conversation."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1017
+#, no-c-format
+msgid "org.jboss.seam.jms.queueConnection"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1019
+#, no-c-format
+msgid ""
+"Manages a JMS <literal>QueueConnection</literal>. Installed whenever managed "
+"managed <literal>QueueSender</literal> is installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1024
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.jms.queueConnection.queueConnectionFactoryJndiName</"
+"literal> &mdash; the JNDI name of a JMS <literal>QueueConnectionFactory</"
+"literal>. Default to <literal>UIL2ConnectionFactory</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1032
+#, no-c-format
+msgid "org.jboss.seam.jms.topicConnection"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1034
+#, no-c-format
+msgid ""
+"Manages a JMS <literal>TopicConnection</literal>. Installed whenever managed "
+"managed <literal>TopicPublisher</literal> is installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1039
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.jms.topicConnection.topicConnectionFactoryJndiName</"
+"literal> &mdash; the JNDI name of a JMS <literal>TopicConnectionFactory</"
+"literal>. Default to <literal>UIL2ConnectionFactory</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1047
+#, no-c-format
+msgid "org.jboss.seam.persistence.persistenceProvider"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1049
+#, no-c-format
+msgid "Abstraction layer for non-standardized features of JPA provider."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1055
+#, no-c-format
+msgid "org.jboss.seam.core.validation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1057
+#, no-c-format
+msgid "Internal component for Hibernate Validator support."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1063
+#, no-c-format
+msgid "org.jboss.seam.debug.introspector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1065 Components.xml:1073
+#, no-c-format
+msgid "Support for the Seam Debug Page."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1071
+#, no-c-format
+msgid "org.jboss.seam.debug.contexts"
+msgstr ""
+
+#. Tag: title
+#: Components.xml:1082
+#, no-c-format
+msgid "Special components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1083
+#, no-c-format
+msgid ""
+"Certain special Seam component classes are installable multiple times under "
+"names specified in the Seam configuration. For example, the following lines "
+"in <literal>components.xml</literal> install and configure two Seam "
+"components:"
+msgstr ""
+
+#. Tag: programlisting
+#: Components.xml:1086
+#, no-c-format
+msgid ""
+"&lt;component name=\"bookingDatabase\"\n"
+"          class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"    &lt;property name=\"persistenceUnitJndiName\"&gt;java:/comp/emf/"
+"bookingPersistence&lt;/property&gt;\n"
+"&lt;/component&gt;\n"
+"\n"
+"&lt;component name=\"userDatabase\"\n"
+"          class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"    &lt;property name=\"persistenceUnitJndiName\"&gt;java:/comp/emf/"
+"userPersistence&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1087
+#, no-c-format
+msgid ""
+"The Seam component names are <literal>bookingDatabase</literal> and "
+"<literal>userDatabase</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1092
+#, no-c-format
+msgid "&lt;entityManager&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1093
+#, no-c-format
+msgid "org.jboss.seam.core.ManagedPersistenceContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1095
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed <literal>EntityManager</"
+"literal> with an extended persistence context."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1100
+#, no-c-format
+msgid ""
+"<literal>&lt;entityManager&gt;.entityManagerFactory</literal> &mdash; a "
+"value binding expression that evaluates to an instance of "
+"<literal>EntityManagerFactory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1103
+#, no-c-format
+msgid ""
+"<literal>&lt;entityManager&gt;.persistenceUnitJndiName</literal> &mdash; the "
+"JNDI name of the entity manager factory, default to <literal>java:/&lt;"
+"managedPersistenceContext&gt;</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1111
+#, no-c-format
+msgid "&lt;entityManagerFactory&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1112
+#, no-c-format
+msgid "org.jboss.seam.core.EntityManagerFactory"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1114
+#, no-c-format
+msgid ""
+"Manages a JPA <literal>EntityManagerFactory</literal>. This is most useful "
+"when using JPA outside of an EJB 3.0 supporting environment."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1119
+#, no-c-format
+msgid ""
+"<literal>entityManagerFactory.persistenceUnitName</literal> &mdash; the name "
+"of the persistence unit."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1124 Components.xml:1162
+#, no-c-format
+msgid "See the API JavaDoc for further configuration properties."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1130
+#, no-c-format
+msgid "&lt;session&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1131
+#, no-c-format
+msgid "org.jboss.seam.core.ManagedSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1133
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed Hibernate "
+"<literal>Session</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1138
+#, no-c-format
+msgid ""
+"<literal>&lt;session&gt;.sessionFactory</literal> &mdash; a value binding "
+"expression that evaluates to an instance of <literal>SessionFactory</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1141
+#, no-c-format
+msgid ""
+"<literal>&lt;session&gt;.sessionFactoryJndiName</literal> &mdash; the JNDI "
+"name of the session factory, default to <literal>java:/&lt;managedSession&gt;"
+"</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1149
+#, no-c-format
+msgid "&lt;sessionFactory&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1150
+#, no-c-format
+msgid "org.jboss.seam.core.HibernateSessionFactory"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1152
+#, no-c-format
+msgid "Manages a Hibernate <literal>SessionFactory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1157
+#, no-c-format
+msgid ""
+"<literal>&lt;sessionFactory&gt;.cfgResourceName</literal> &mdash; the path "
+"to the configuration file. Default to <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1168
+#, no-c-format
+msgid "&lt;managedQueueSender&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1169
+#, no-c-format
+msgid "org.jboss.seam.jms.ManagedQueueSender"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1171
+#, no-c-format
+msgid ""
+"Manager component for an event scoped managed JMS <literal>QueueSender</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1176
+#, no-c-format
+msgid ""
+"<literal>&lt;managedQueueSender&gt;.queueJndiName</literal> &mdash; the JNDI "
+"name of the JMS queue."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1184
+#, no-c-format
+msgid "&lt;managedTopicPublisher&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1185
+#, no-c-format
+msgid "org.jboss.seam.jms.ManagedTopicPublisher"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1187
+#, no-c-format
+msgid ""
+"Manager component for an event scoped managed JMS <literal>TopicPublisher</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1192
+#, no-c-format
+msgid ""
+"<literal>&lt;managedTopicPublisher&gt;.topicJndiName</literal> &mdash; the "
+"JNDI name of the JMS topic."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1200
+#, no-c-format
+msgid "&lt;managedWorkingMemory&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1201
+#, no-c-format
+msgid "org.jboss.seam.drools.ManagedWorkingMemory"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1203
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed Drools "
+"<literal>WorkingMemory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1208
+#, no-c-format
+msgid ""
+"<literal>&lt;managedWorkingMemory&gt;.ruleBase</literal> &mdash; a value "
+"expression that evaluates to an instance of <literal>RuleBase</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1216
+#, no-c-format
+msgid "&lt;ruleBase&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1217
+#, no-c-format
+msgid "org.jboss.seam.drools.RuleBase"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1219
+#, no-c-format
+msgid ""
+"Manager component for an application scoped Drools <literal>RuleBase</"
+"literal>. <emphasis>Note that this is not really intended for production "
+"usage, since it does not support dynamic installation of new rules.</"
+"emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1224
+#, no-c-format
+msgid ""
+"<literal>&lt;ruleBase&gt;.ruleFiles</literal> &mdash; a list of files "
+"containing Drools rules."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1227
+#, no-c-format
+msgid ""
+"<literal>&lt;ruleBase&gt;.dslFile</literal> &mdash; a Drools DSL definition."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1235
+#, no-c-format
+msgid "&lt;entityHome&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1236
+#, no-c-format
+msgid "org.jboss.seam.framework.EntityHome"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1240
+#, no-c-format
+msgid "&lt;hibernateEntityHome&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1241
+#, no-c-format
+msgid "org.jboss.seam.framework.HibernateEntityHome"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1245
+#, no-c-format
+msgid "&lt;entityQuery&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1246
+#, no-c-format
+msgid "org.jboss.seam.framework.EntityQuery"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1250
+#, no-c-format
+msgid "&lt;hibernateEntityQuery&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1251
+#, no-c-format
+msgid "org.jboss.seam.framework.HibernateEntityQuery"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Concepts.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Concepts.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Concepts.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1922 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Concepts.xml:10
+#, no-c-format
+msgid "The contextual component model"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:11
+#, no-c-format
+msgid ""
+"The two core concepts in Seam are the notion of a <emphasis>context</"
+"emphasis> and the notion of a <emphasis>component</emphasis>. Components are "
+"stateful objects, usually EJBs, and an instance of a component is associated "
+"with a context, and given a name in that context. <emphasis>Bijection</"
+"emphasis> provides a mechanism for aliasing internal component names "
+"(instance variables) to contextual names, allowing component trees to be "
+"dynamically assembled, and reassembled by Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:14
+#, no-c-format
+msgid "Let's start by describing the contexts built in to Seam."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:17
+#, no-c-format
+msgid "Seam contexts"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:18
+#, no-c-format
+msgid ""
+"Seam contexts are created and destroyed by the framework. The application "
+"does not control context demarcation via explicit Java API calls. Context "
+"are usually implicit. In some cases, however, contexts are demarcated via "
+"annotations."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:21
+#, no-c-format
+msgid "The basic Seam contexts are:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:26
+#, no-c-format
+msgid "<para>Stateless context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:31
+#, no-c-format
+msgid "Event (or request) context"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:36 Concepts.xml:151
+#, no-c-format
+msgid "<para>Page context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:41 Concepts.xml:156
+#, no-c-format
+msgid "<para>Conversation context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:46 Concepts.xml:161
+#, no-c-format
+msgid "<para>Session context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:51 Concepts.xml:166
+#, no-c-format
+msgid "<para>Business process context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:56 Concepts.xml:171
+#, no-c-format
+msgid "<para>Application context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:61
+#, no-c-format
+msgid ""
+"You will recognize some of these contexts from servlet and related "
+"specifications. However, two of them might be new to you: "
+"<emphasis>conversation context</emphasis>, and <emphasis>business process "
+"context</emphasis>. One reason state management in web applications is so "
+"fragile and error-prone is that the three built-in contexts (request, "
+"session and application) are not especially meaningful from the point of "
+"view of the business logic. A user login session, for example, is a fairly "
+"arbitrary construct in terms of the actual application work flow. Therefore, "
+"most Seam components are scoped to the conversation or business process "
+"contexts, since they are the contexts which are most meaningful in terms of "
+"the application."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:64
+#, no-c-format
+msgid "Let's look at each context in turn."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:67
+#, no-c-format
+msgid "<title>Stateless context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:68
+#, no-c-format
+msgid ""
+"Components which are truly stateless (stateless session beans, primarily) "
+"always live in the stateless context (this is really a non-context). "
+"Stateless components are not very interesting, and are arguably not very "
+"object-oriented. Nevertheless, they are important and often useful."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:71
+#, no-c-format
+msgid "<title>Event context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:72
+#, no-c-format
+msgid ""
+"The event context is the \"narrowest\" stateful context, and is a "
+"generalization of the notion of the web request context to cover other kinds "
+"of events. Nevertheless, the event context associated with the lifecycle of "
+"a JSF request is the most important example of an event context, and the one "
+"you will work with most often. Components associated with the event context "
+"are destroyed at the end of the request, but their state is available and "
+"well-defined for at least the lifecycle of the request."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:75
+#, no-c-format
+msgid ""
+"When you invoke a Seam component via RMI, or Seam Remoting, the event "
+"context is created and destroyed just for the invocation."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:78
+#, no-c-format
+msgid "<title>Page context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:79
+#, no-c-format
+msgid ""
+"The page context allows you to associate state with a particular instance of "
+"a rendered page. You can initialize state in your event listener, or while "
+"actually rendering the page, and then have access to it from any event that "
+"originates from that page. This is especially useful for functionality like "
+"clickable lists, where the list is backed by changing data on the server "
+"side. The state is actually serialized to the client, so this construct is "
+"extremely robust with respect to multi-window operation and the back button."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:82
+#, no-c-format
+msgid "<title>Conversation context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:83
+#, no-c-format
+msgid ""
+"The conversation context is a truly central concept in Seam. A "
+"<emphasis>conversation</emphasis> is a unit of work from the point of view "
+"of the user. It might span several interactions with the user, several "
+"requests, and several database transactions. But to the user, a conversation "
+"solves a single problem. For example, \"book hotel\", \"approve contract\", "
+"\"create order\" are all conversations. You might like to think of a "
+"conversation implementing a single \"use case\" or \"user story\", but the "
+"relationship is not necessarily quite exact."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:86
+#, no-c-format
+msgid ""
+"A conversation holds state associated with \"what the user is doing now, in "
+"this window\". A single user may have multiple conversations in progress at "
+"any point in time, usually in multiple windows. The conversation context "
+"allows us to ensure that state from the different conversations does not "
+"collide and cause bugs."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:89
+#, no-c-format
+msgid ""
+"It might take you some time to get used to thinking of applications in terms "
+"of conversations. But once you get used to it, we think you'll love the "
+"notion, and never be able to not think in terms of conversations again!"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:92
+#, no-c-format
+msgid ""
+"Some conversations last for just a single request. Conversations that span "
+"multiple requests must be demarcated using annotations provided by Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:95
+#, no-c-format
+msgid ""
+"Some conversations are also <emphasis>tasks</emphasis>. A task is a "
+"conversation that is significant in terms of a long-running business "
+"process, and has the potential to trigger a business process state "
+"transition when it is successfully completed. Seam provides a special set of "
+"annotations for task demarcation."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:98
+#, no-c-format
+msgid ""
+"Conversations may be <emphasis>nested</emphasis>, with one conversation "
+"taking place \"inside\" a wider conversation. This is an advanced feature."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:101
+#, no-c-format
+msgid ""
+"Usually, conversation state is actually held by Seam in the servlet session "
+"between requests. Seam implements configurable <emphasis>conversation "
+"timeout</emphasis>, automatically destroying inactive conversations, and "
+"thus ensuring that the state held by a single user login session does not "
+"grow without bound if the user abandons conversations."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:104
+#, no-c-format
+msgid ""
+"Seam serializes processing of concurrent requests that take place in the "
+"same long-running conversation context, in the same process."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:107
+#, no-c-format
+msgid ""
+"Alternatively, Seam may be configured to keep conversational state in the "
+"client browser."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:110
+#, no-c-format
+msgid "<title>Session context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:111
+#, no-c-format
+msgid ""
+"A session context holds state associated with the user login session. While "
+"there are some cases where it is useful to share state between several "
+"conversations, we generally frown on the use of session context for holding "
+"components other than global information about the logged in user."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:114
+#, no-c-format
+msgid ""
+"In a JSR-168 portal environment, the session context represents the portlet "
+"session."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:117
+#, no-c-format
+msgid "<title>Business process context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:118
+#, no-c-format
+msgid ""
+"The business process context holds state associated with the long running "
+"business process. This state is managed and made persistent by the BPM "
+"engine (JBoss jBPM). The business process spans multiple interactions with "
+"multiple users, so this state is shared between multiple users, but in a "
+"well-defined manner. The current task determines the current business "
+"process instance, and the lifecycle of the business process is defined "
+"externally using a <emphasis>process definition language</emphasis>, so "
+"there are no special annotations for business process demarcation."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:121
+#, no-c-format
+msgid "<title>Application context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:122
+#, no-c-format
+msgid ""
+"The application context is the familiar servlet context from the servlet "
+"spec. Application context is mainly useful for holding static information "
+"such as configuration data, reference data or metamodels. For example, Seam "
+"stores its own configuration and metamodel in the application context."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:125
+#, no-c-format
+msgid "Context variables"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:126
+#, no-c-format
+msgid ""
+"A context defines a namespace, a set of <emphasis>context variables</"
+"emphasis>. These work much the same as session or request attributes in the "
+"servlet spec. You may bind any value you like to a context variable, but "
+"usually we bind Seam component instances to context variables."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:129
+#, no-c-format
+msgid ""
+"So, within a context, a component instance is identified by the context "
+"variable name (this is usually, but not always, the same as the component "
+"name). You may programatically access a named component instance in a "
+"particular scope via the <literal>Contexts</literal> class, which provides "
+"access to several thread-bound instances of the <literal>Context</literal> "
+"interface:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:132
+#, no-c-format
+msgid "User user = (User) Contexts.getSessionContext().get(\"user\");"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:133
+#, no-c-format
+msgid "You may also set or change the value associated with a name:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:136
+#, no-c-format
+msgid "Contexts.getSessionContext().set(\"user\", user);"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:137
+#, no-c-format
+msgid ""
+"Usually, however, we obtain components from a context via injection, and put "
+"component instances into a context via outjection."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:140
+#, no-c-format
+msgid "Context search priority"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:141
+#, no-c-format
+msgid ""
+"Sometimes, as above, component instances are obtained from a particular "
+"known scope. Other times, all stateful scopes are searched, in "
+"<emphasis>priority order</emphasis>. The order is as follows:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:146
+#, no-c-format
+msgid "<para>Event context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:176
+#, no-c-format
+msgid ""
+"You can perform a priority search by calling <literal>Contexts."
+"lookupInStatefulContexts()</literal>. Whenever you access a component by "
+"name from a JSF page, a priority search occurs."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:179
+#, no-c-format
+msgid "Concurrency model"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:180
+#, no-c-format
+msgid ""
+"Neither the servlet nor EJB specifications define any facilities for "
+"managing concurrent requests originating from the same client. The servlet "
+"container simply lets all threads run concurrently and leaves enforcing "
+"threadsafeness to application code. The EJB container allows stateless "
+"components to be accessed concurrently, and throws an exception if multiple "
+"threads access a stateful session bean."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:183
+#, no-c-format
+msgid ""
+"This behavior might have been okay in old-style web applications which were "
+"based around fine-grained, synchronous requests. But for modern applications "
+"which make heavy use of many fine-grained, asynchronous (AJAX) requests, "
+"concurrency is a fact of life, and must be supported by the programming "
+"model. Seam weaves a concurrency management layer into its context model."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:186
+#, no-c-format
+msgid ""
+"The Seam session and application contexts are multithreaded. Seam will allow "
+"concurrent requests in a context to be processed concurrently. The event and "
+"page contexts are by nature single threaded. The business process context is "
+"strictly speaking multi-threaded, but in practice concurrency is "
+"sufficiently rare that this fact may be disregarded most of the time. "
+"Finally, Seam enforces a <emphasis>single thread per conversation per "
+"process</emphasis> model for the conversation context by serializing "
+"concurrent requests in the same long-running conversation context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:189
+#, no-c-format
+msgid ""
+"Since the session context is multithreaded, and often contains volatile "
+"state, session scope components are always protected by Seam from concurrent "
+"access. Seam serializes requests to session scope session beans and "
+"JavaBeans by default (and detects and breaks any deadlocks that occur). This "
+"is not the default behaviour for application scoped components however, "
+"since application scoped components do not usually hold volatile state and "
+"because synchronization at the global level is <emphasis>extremely</"
+"emphasis> expensive. However, you can force a serialized threading model on "
+"any session bean or JavaBean component by adding the <literal>@Synchronized</"
+"literal> annotation."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:192
+#, no-c-format
+msgid ""
+"This concurrency model means that AJAX clients can safely use volatile "
+"session and conversational state, without the need for any special work on "
+"the part of the developer."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:195
+#, no-c-format
+msgid "Seam components"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:196
+#, no-c-format
+msgid ""
+"Seam components are POJOs (Plain Old Java Objects). In particular, they are "
+"JavaBeans or EJB 3.0 enterprise beans. While Seam does not require that "
+"components be EJBs and can even be used without an EJB 3.0 compliant "
+"container, Seam was designed with EJB 3.0 in mind and includes deep "
+"integration with EJB 3.0. Seam supports the following <emphasis>component "
+"types</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:201
+#, no-c-format
+msgid "EJB 3.0 stateless session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:206
+#, no-c-format
+msgid "EJB 3.0 stateful session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:211
+#, no-c-format
+msgid "EJB 3.0 entity beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:216
+#, no-c-format
+msgid "<para>JavaBeans</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:221
+#, no-c-format
+msgid "EJB 3.0 message-driven beans"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:226
+#, no-c-format
+msgid "Stateless session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:227
+#, no-c-format
+msgid ""
+"Stateless session bean components are not able to hold state across multiple "
+"invocations. Therefore, they usually work by operating upon the state of "
+"other components in the various Seam contexts. They may be used as JSF "
+"action listeners, but cannot provide properties to JSF components for "
+"display."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:230
+#, no-c-format
+msgid "Stateless session beans always live in the stateless context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:233
+#, no-c-format
+msgid ""
+"Stateless session beans are the least interesting kind of Seam component."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:236
+#, no-c-format
+msgid "Stateful session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:237
+#, no-c-format
+msgid ""
+"Stateful session bean components are able to hold state not only across "
+"multiple invocations of the bean, but also across multiple requests. "
+"Application state that does not belong in the database should usually be "
+"held by stateful session beans. This is a major difference between Seam and "
+"many other web application frameworks. Instead of sticking information about "
+"the current conversation directly in the <literal>HttpSession</literal>, you "
+"should keep it in instance variables of a stateful session bean that is "
+"bound to the conversation context. This allows Seam to manage the lifecycle "
+"of this state for you, and ensure that there are no collisions between state "
+"relating to different concurrent conversations."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:240
+#, no-c-format
+msgid ""
+"Stateful session beans are often used as JSF action listener, and as backing "
+"beans that provide properties to JSF components for display or form "
+"submission."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:243
+#, no-c-format
+msgid ""
+"By default, stateful session beans are bound to the conversation context. "
+"They may never be bound to the page or stateless contexts."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:246
+#, no-c-format
+msgid ""
+"Concurrent requests to session-scoped stateful session beans are always "
+"serialized by Seam."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:249
+#, no-c-format
+msgid "Entity beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:250
+#, no-c-format
+msgid ""
+"Entity beans may be bound to a context variable and function as a seam "
+"component. Because entities have a persistent identity in addition to their "
+"contextual identity, entity instances are usually bound explicitly in Java "
+"code, rather than being instantiated implicitly by Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:253
+#, no-c-format
+msgid ""
+"Entity bean components do not support bijection or context demarcation. Nor "
+"does invocation of an entity bean trigger validation."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:256
+#, no-c-format
+msgid ""
+"Entity beans are not usually used as JSF action listeners, but do often "
+"function as backing beans that provide properties to JSF components for "
+"display or form submission. In particular, it is common to use an entity as "
+"a backing bean, together with a stateless session bean action listener to "
+"implement create/update/delete type functionality."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:259
+#, no-c-format
+msgid ""
+"By default, entity beans are bound to the conversation context. They may "
+"never be bound to the stateless context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:262
+#, no-c-format
+msgid ""
+"Note that it in a clustered environment is somewhat less efficient to bind "
+"an entity bean directly to a conversation or session scoped Seam context "
+"variable than it would be to hold a reference to the entity bean in a "
+"stateful session bean. For this reason, not all Seam applications define "
+"entity beans to be Seam components."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:265
+#, no-c-format
+msgid "<title>JavaBeans</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:266
+#, no-c-format
+msgid ""
+"Javabeans may be used just like a stateless or stateful session bean. "
+"However, they do not provide the functionality of a session bean "
+"(declarative transaction demarcation, declarative security, efficient "
+"clustered state replication, EJB 3.0 persistence, timeout methods, etc)."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:269
+#, no-c-format
+msgid ""
+"In a later chapter, we show you how to use Seam and Hibernate without an EJB "
+"container. In this use case, components are JavaBeans instead of session "
+"beans. Note, however, that in many application servers it is somewhat less "
+"efficient to cluster conversation or session scoped Seam JavaBean components "
+"than it is to cluster stateful session bean components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:272
+#, no-c-format
+msgid "By default, JavaBeans are bound to the event context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:275
+#, no-c-format
+msgid ""
+"Concurrent requests to session-scoped JavaBeans are always serialized by "
+"Seam."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:278
+#, no-c-format
+msgid "Message-driven beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:279
+#, no-c-format
+msgid ""
+"Message-driven beans may function as a seam component. However, message-"
+"driven beans are called quite differently to other Seam components - instead "
+"of invoking them via the context variable, they listen for messages sent to "
+"a JMS queue or topic."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:282
+#, no-c-format
+msgid ""
+"Message-driven beans may not be bound to a Seam context. Nor do they have "
+"access to the session or conversation state of their \"caller\". However, "
+"they do support bijection and some other Seam functionality."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:285
+#, no-c-format
+msgid "Interception"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:286
+#, no-c-format
+msgid ""
+"In order to perform its magic (bijection, context demarcation, validation, "
+"etc), Seam must intercept component invocations. For JavaBeans, Seam is in "
+"full control of instantiation of the component, and no special configuration "
+"is needed. For entity beans, interception is not required since bijection "
+"and context demarcation are not defined. For session beans, we must register "
+"an EJB interceptor for the session bean component. We could use an "
+"annotation, as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:289
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:290
+#, no-c-format
+msgid ""
+"But a much better way is to define the interceptor in <literal>ejb-jar.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:293
+#, no-c-format
+msgid ""
+"&lt;interceptors&gt;\n"
+"   &lt;interceptor&gt;\n"
+"      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"   &lt;/interceptor&gt;\n"
+"&lt;/interceptors&gt;\n"
+"   \n"
+"&lt;assembly-descriptor&gt;\n"
+"   &lt;interceptor-binding&gt;\n"
+"      &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"   &lt;/interceptor-binding&gt;\n"
+"&lt;/assembly-descriptor&gt;"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:294
+#, no-c-format
+msgid "Component names"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:295
+#, no-c-format
+msgid ""
+"All seam components need a name. We can assign a name to a component using "
+"the <literal>@Name</literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:298
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:299
+#, no-c-format
+msgid ""
+"This name is the <emphasis>seam component name</emphasis> and is not related "
+"to any other name defined by the EJB specification. However, seam component "
+"names work just like JSF managed bean names and you can think of the two "
+"concepts as identical."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:302
+#, no-c-format
+msgid ""
+"<literal>@Name</literal> is not the only way to define a component name, but "
+"we always need to specify the name <emphasis>somewhere</emphasis>. If we "
+"don't, then none of the other Seam annotations will function."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:305
+#, no-c-format
+msgid ""
+"Just like in JSF, a seam component instance is usually bound to a context "
+"variable with the same name as the component name. So, for example, we would "
+"access the <literal>LoginAction</literal> using <literal>Contexts."
+"getStatelessContext().get(\"loginAction\")</literal>. In particular, "
+"whenever Seam itself instantiates a component, it binds the new instance to "
+"a variable with the component name. However, again like JSF, it is possible "
+"for the application to bind a component to some other context variable by "
+"programmatic API call. This is only useful if a particular component serves "
+"more than one role in the system. For example, the currently logged in "
+"<literal>User</literal> might be bound to the <literal>currentUser</literal> "
+"session context variable, while a <literal>User</literal> that is the "
+"subject of some administration functionality might be bound to the "
+"<literal>user</literal> conversation context variable."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:308
+#, no-c-format
+msgid ""
+"For very large applications, and for built-in seam components, qualified "
+"names are often used."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:311
+#, no-c-format
+msgid ""
+"@Name(\"com.jboss.myapp.loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:312
+#, no-c-format
+msgid ""
+"We may use the qualified component name both in Java code and in JSF's "
+"expression language:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:315
+#, no-c-format
+msgid ""
+"&lt;h:commandButton type=\"submit\" value=\"Login\"\n"
+"                 action=\"#{com.jboss.myapp.loginAction.login}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:316
+#, no-c-format
+msgid ""
+"Since this is noisy, Seam also provides a means of aliasing a qualified name "
+"to a simple name. Add a line like this to the <literal>components.xml</"
+"literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:319
+#, no-c-format
+msgid ""
+"&lt;factory name=\"loginAction\" scope=\"STATELESS\" value=\"#{com.jboss."
+"myapp.loginAction}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:320
+#, no-c-format
+msgid ""
+"All of the built-in Seam components have qualified names, but most of them "
+"are aliased to a simple name by the <literal>components.xml</literal> file "
+"included in the Seam jar."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:323
+#, no-c-format
+msgid "Defining the component scope"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:324
+#, no-c-format
+msgid ""
+"We can override the default scope (context) of a component using the "
+"<literal>@Scope</literal> annotation. This lets us define what context a "
+"component instance is bound to, when it is instantiated by Seam."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:327
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(SESSION)\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:328
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.ScopeType</literal> defines an enumeration of "
+"possible scopes."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:331
+#, no-c-format
+msgid "Components with multiple roles"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:332
+#, no-c-format
+msgid ""
+"Some Seam component classes can fulfill more than one role in the system. "
+"For example, we often have a <literal>User</literal> class which is usually "
+"used as a session-scoped component representing the current user but is used "
+"in user administration screens as a conversation-scoped component. The "
+"<literal>@Role</literal> annotation lets us define an additional named role "
+"for a component, with a different scope&mdash;it lets us bind the same "
+"component class to different context variables. (Any Seam component "
+"<emphasis>instance</emphasis> may be bound to multiple context variables, "
+"but this lets us do it at the class level, and take advantage of auto-"
+"instantiation.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:335
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(CONVERSATION)\n"
+"@Role(name=\"currentUser\", scope=SESSION)\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:336
+#, no-c-format
+msgid ""
+"The <literal>@Roles</literal> annotation lets us specify as many additional "
+"roles as we like."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:339
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(CONVERSATION)\n"
+"@Roles({@Role(name=\"currentUser\", scope=SESSION)\n"
+"        @Role(name=\"tempUser\", scope=EVENT)})\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:340
+#, no-c-format
+msgid "Built-in components"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:341
+#, no-c-format
+msgid ""
+"Like many good frameworks, Seam eats its own dogfood and is implemented "
+"mostly as a set of built-in Seam interceptors (see later) and Seam "
+"components. This makes it easy for applications to interact with built-in "
+"components at runtime or even customize the basic functionality of Seam by "
+"replacing the built-in components with custom implementations. The built-in "
+"components are defined in the Seam namespace <literal>org.jboss.seam.core</"
+"literal> and the Java package of the same name."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:344
+#, no-c-format
+msgid ""
+"The built-in components may be injected, just like any Seam components, but "
+"they also provide convenient static <literal>instance()</literal> methods:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:347
+#, no-c-format
+msgid "FacesMessages.instance().add(\"Welcome back, #{user.name}!\");"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:348
+#, no-c-format
+msgid ""
+"Seam was designed to integrate tightly in a Java EE 5 environment. However, "
+"we understand that there are many projects which are not running in a full "
+"EE environment. We also realize the critical importance of easy unit and "
+"integration testing using frameworks such as TestNG and JUnit. So, we've "
+"made it easy to run Seam in Java SE environments by allowing you to boostrap "
+"certain critical infrastructure normally only found in EE environments by "
+"installing built-in Seam components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:351
+#, no-c-format
+msgid ""
+"For example, you can run your EJB3 components in Tomcat or an integration "
+"test suite just by installing the built-in component <literal>org.jboss.seam."
+"core.ejb</literal>, which automatically bootstraps the JBoss Embeddable EJB3 "
+"container and deploys your EJB components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:354
+#, no-c-format
+msgid ""
+"Or, if you're not quite ready for the Brave New World of EJB 3.0, you can "
+"write a Seam application that uses only JavaBean components, together with "
+"Hibernate3 for persistence, by installing a built-in component that manages "
+"a Hibernate <literal>SessionFactory</literal>. When using Hibernate outside "
+"of a J2EE environment, you will also probably need a JTA transaction manager "
+"and JNDI server, which are available via the built-in component <literal>org."
+"jboss.seam.core.microcontainer</literal>. This lets you use the bulletproof "
+"JTA/JCA pooling datasource from JBoss application server in an SE "
+"environment like Tomcat!"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:357
+#, no-c-format
+msgid "Bijection"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:358
+#, no-c-format
+msgid ""
+"<emphasis>Dependency injection</emphasis> or <emphasis>inversion of control</"
+"emphasis> is by now a familiar concept to most Java developers. Dependency "
+"injection allows a component to obtain a reference to another component by "
+"having the container \"inject\" the other component to a setter method or "
+"instance variable. In all dependency injection implementations that we have "
+"seen, injection occurs when the component is constructed, and the reference "
+"does not subsequently change for the lifetime of the component instance. For "
+"stateless components, this is reasonable. From the point of view of a "
+"client, all instances of a particular stateless component are "
+"interchangeable. On the other hand, Seam emphasizes the use of stateful "
+"components. So traditional dependency injection is no longer a very useful "
+"construct. Seam introduces the notion of <emphasis>bijection</emphasis> as a "
+"generalization of injection. In contrast to injection, bijection is:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:363
+#, no-c-format
+msgid ""
+"<emphasis>contextual</emphasis> - bijection is used to assemble stateful "
+"components from various different contexts (a component from a \"wider\" "
+"context may even have a reference to a component from a \"narrower\" context)"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:368
+#, no-c-format
+msgid ""
+"<emphasis>bidirectional</emphasis> - values are injected from context "
+"variables into attributes of the component being invoked, and also "
+"<emphasis>outjected</emphasis> from the component attributes back out to the "
+"context, allowing the component being invoked to manipulate the values of "
+"contextual variables simply by setting its own instance variables"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:373
+#, no-c-format
+msgid ""
+"<emphasis>dynamic</emphasis> - since the value of contextual variables "
+"changes over time, and since Seam components are stateful, bijection takes "
+"place every time a component is invoked"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:378
+#, no-c-format
+msgid ""
+"In essence, bijection lets you alias a context variable to a component "
+"instance variable, by specifying that the value of the instance variable is "
+"injected, outjected, or both. Of course, we use annotations to enable "
+"bijection."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:381
+#, no-c-format
+msgid ""
+"The <literal>@In</literal> annotation specifies that a value should be "
+"injected, either into an instance variable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:384
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:385
+#, no-c-format
+msgid "or into a setter method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:388
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @In\n"
+"    public void setUser(User user) {\n"
+"        this.user=user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:389
+#, no-c-format
+msgid ""
+"By default, Seam will do a priority search of all contexts, using the name "
+"of the property or instance variable that is being injected. You may wish to "
+"specify the context variable name explicitly, using, for example, "
+"<literal>@In(\"currentUser\")</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:392
+#, no-c-format
+msgid ""
+"If you want Seam to create an instance of the component when there is no "
+"existing component instance bound to the named context variable, you should "
+"specify <literal>@In(create=true)</literal>. If the value is optional (it "
+"can be null), specify <literal>@In(required=false)</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:395
+#, no-c-format
+msgid ""
+"For some components, it can be repetitive to have to specify <literal>@In"
+"(create=true)</literal> everywhere they are used. In such cases, you can "
+"annotate the component <literal>@AutoCreate</literal>, and then it will "
+"always be created, whenever needed, even without the explicit use of "
+"<literal>create=true</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:398
+#, no-c-format
+msgid "You can even inject the value of an expression:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:401
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In(\"#{user.username}\") String username;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:402
+#, no-c-format
+msgid ""
+"(There is much more information about component lifecycle and injection in "
+"the next chapter.)"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:405
+#, no-c-format
+msgid ""
+"The <literal>@Out</literal> annotation specifies that an attribute should be "
+"outjected, either from an instance variable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:408
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @Out User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:409
+#, no-c-format
+msgid "or from a getter method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:412
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @Out\n"
+"    public User getUser() {\n"
+"        return user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:413
+#, no-c-format
+msgid "An attribute may be both injected and outjected:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:416
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In @Out User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:417
+#, no-c-format
+msgid "<para>or:</para>"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:420
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @In\n"
+"    public void setUser(User user) {\n"
+"        this.user=user;\n"
+"    }\n"
+"    \n"
+"    @Out\n"
+"    public User getUser() {\n"
+"        return user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:421
+#, no-c-format
+msgid "Lifecycle methods"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:422
+#, no-c-format
+msgid ""
+"Session bean and entity bean Seam components support all the usual EJB 3.0 "
+"lifecycle callback (<literal>@PostConstruct</literal>, <literal>@PreDestroy</"
+"literal>, etc). Seam extends all of these callbacks except "
+"<literal>@PreDestroy</literal> to JavaBean components. But Seam also defines "
+"its own component lifecycle callbacks."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:425
+#, no-c-format
+msgid ""
+"The <literal>@Create</literal> method is called every time Seam instantiates "
+"a component. Unlike the <literal>@PostConstruct</literal> method, this "
+"method is called after the component is fully constructed by the EJB "
+"container, and has access to all the usual Seam functionality (bijection, "
+"etc). Components may define only one <literal>@Create</literal> method."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:428
+#, no-c-format
+msgid ""
+"The <literal>@Destroy</literal> method is called when the context that the "
+"Seam component is bound to ends. Components may define only one "
+"<literal>@Destroy</literal> method. Stateful session bean components "
+"<emphasis>must</emphasis> define a method annotated <literal>@Destroy "
+"@Remove</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:431
+#, no-c-format
+msgid ""
+"Finally, a related annotation is the <literal>@Startup</literal> annotation, "
+"which may be applied to any application or session scoped component. The "
+"<literal>@Startup</literal> annotation tells Seam to instantiate the "
+"component immediately, when the context begins, instead of waiting until it "
+"is first referenced by a client. It is possible to control the order of "
+"instantiation of startup components by specifying <literal>@Startup(depends="
+"{....})</literal>."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:434
+#, no-c-format
+msgid "Conditional installation"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:435
+#, no-c-format
+msgid ""
+"The <literal>@Install</literal> annotation lets you control conditional "
+"installation of components that are required in some deployment scenarios "
+"and not in others. This is useful if:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:440
+#, no-c-format
+msgid "You want to mock out some infrastructural component in tests."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:445
+#, no-c-format
+msgid ""
+"You want change the implementation of a component in certain deployment "
+"scenarios."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:450
+#, no-c-format
+msgid ""
+"You want to install some components only if their dependencies are available "
+"(useful for framework authors)."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:455
+#, no-c-format
+msgid ""
+"<literal>@Install</literal> works by letting you specify "
+"<emphasis>precedence</emphasis> and <emphasis>dependencies</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:458
+#, no-c-format
+msgid ""
+"The precedence of a component is a number that Seam uses to decide which "
+"component to install when there are multiple classes with the same component "
+"name in the classpath. Seam will choose the component with the higher "
+"precendence. There are some predefined precedence values:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:463
+#, no-c-format
+msgid ""
+"<literal>BUILT_IN</literal> &mdash; the lowest precedece components are the "
+"components built in to Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:468
+#, no-c-format
+msgid ""
+"<literal>FRAMEWORK</literal> &mdash; components defined by third-party "
+"frameworks may override built-in components, but are overridden by "
+"application components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:473
+#, no-c-format
+msgid ""
+"<literal>APPLICATION</literal> &mdash; the default precedence. This is "
+"appropriate for most application components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:478
+#, no-c-format
+msgid ""
+"<literal>DEPLOYMENT</literal> &mdash; for application components which are "
+"deployment-specific."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:483
+#, no-c-format
+msgid "<literal>MOCK</literal> &mdash; for mock objects used in testing."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:488
+#, no-c-format
+msgid ""
+"Suppose we have a component named <literal>messageSender</literal> that "
+"talks to a JMS queue."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:491
+#, no-c-format
+msgid ""
+"@Name(\"messageSender\") \n"
+"public class MessageSender {\n"
+"    public void sendMessage() {\n"
+"        //do something with JMS\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:492
+#, no-c-format
+msgid ""
+"In our unit tests, we don't have a JMS queue available, so we would like to "
+"stub out this method. We'll create a <emphasis>mock</emphasis> component "
+"that exists in the classpath when unit tests are running, but is never "
+"deployed with the application:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:495
+#, no-c-format
+msgid ""
+"@Name(\"messageSender\") \n"
+"@Install(precedence=MOCK)\n"
+"public class MockMessageSender extends MessageSender {\n"
+"    public void sendMessage() {\n"
+"        //do nothing!\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:496
+#, no-c-format
+msgid ""
+"The <literal>precedence</literal> helps Seam decide which version to use "
+"when it finds both components in the classpath."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:499
+#, no-c-format
+msgid ""
+"This is nice if we are able to control exactly which classes are in the "
+"classpath. But if I'm writing a reusable framework with many dependecies, I "
+"don't want to have to break that framework across many jars. I want to be "
+"able to decide which components to install depending upon what other "
+"components are installed, and upon what classes are available in the "
+"classpath. The <literal>@Install</literal> annotation also controls this "
+"functionality. Seam uses this mechanism internally to enable conditional "
+"installation of many of the built-in components. However, you probably won't "
+"need to use it in your application."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:502
+#, no-c-format
+msgid "Logging"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:503
+#, no-c-format
+msgid "Who is not totally fed up with seeing noisy code like this?"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:506
+#, no-c-format
+msgid ""
+"private static final Log log = LogFactory.getLog(CreateOrderAction.class);\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    if ( log.isDebugEnabled() ) {\n"
+"        log.debug(\"Creating new order for user: \" + user.username() + \n"
+"            \" product: \" + product.name() \n"
+"            + \" quantity: \" + quantity);\n"
+"    }\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:507
+#, no-c-format
+msgid ""
+"It is difficult to imagine how the code for a simple log message could "
+"possibly be more verbose. There is more lines of code tied up in logging "
+"than in the actual business logic! I remain totally astonished that the Java "
+"community has not come up with anything better in 10 years."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:510
+#, no-c-format
+msgid ""
+"Seam provides a logging API built on top of Apache commons-logging that "
+"simplifies this code significantly:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:513
+#, no-c-format
+msgid ""
+"@Logger private Log log;\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    log.debug(\"Creating new order for user: #0 product: #1 quantity: #2\", "
+"user.username(), \n"
+"       product.name(), quantity);\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:514
+#, no-c-format
+msgid ""
+"It doesn't matter if you declare the <literal>log</literal> variable static "
+"or not&mdash;it will work either way."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:517
+#, no-c-format
+msgid ""
+"Note that we don't need the noisy <literal>if ( log.isDebugEnabled() )</"
+"literal> guard, since string concatenation happens <emphasis>inside</"
+"emphasis> the <literal>debug()</literal> method. Note also that we don't "
+"usually need to specify the log category explicitly, since Seam knows what "
+"component it is injecting the <literal>Log</literal> into."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:520
+#, no-c-format
+msgid ""
+"If <literal>User</literal> and <literal>Product</literal> are Seam "
+"components available in the current contexts, it gets even better:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:523
+#, no-c-format
+msgid ""
+"@Logger private Log log;\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    log.debug(\"Creating new order for user: #{user.username} product: #"
+"{product.name}\n"
+"       quantity: #0\", quantity);\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:524
+#, no-c-format
+msgid ""
+"The <literal>Mutable</literal> interface and <literal>@ReadOnly</literal>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:525
+#, no-c-format
+msgid ""
+"Many application servers feature an amazingly broken implementation of "
+"<literal>HttpSession</literal> clustering, where changes to the state of "
+"mutable objects bound to the session are only replicated when the "
+"application calls <literal>setAttribute()</literal> explicitly. This is a "
+"source of bugs that can not effectively be tested for at development time, "
+"since they will only manifest when failover occurs. Furthermore, the actual "
+"replication message contains the entire serialized object graph bound to the "
+"session attribute, which is inefficient."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:528
+#, no-c-format
+msgid ""
+"Of course, EJB stateful session beans must perform automatic dirty checking "
+"and replication of mutable state and a sophisticated EJB container can "
+"introduce optimizations such as attribute-level replication. Unfortunately, "
+"not all Seam users have the good fortune to be working in an environment "
+"that supports EJB 3.0. So, for session and conversation scoped JavaBean and "
+"entity bean components, Seam provides an extra layer of cluster-safe state "
+"management over the top of the web container session clustering."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:531
+#, no-c-format
+msgid ""
+"For session or conversation scoped JavaBean components, Seam automatically "
+"forces replication to occur by calling <literal>setAttribute()</literal> "
+"once in every request that the component was invoked by the application. Of "
+"course, this strategy is inefficient for read-mostly components. You can "
+"control this behavior by implementing the <literal>org.jboss.seam.core."
+"Mutable</literal> interface, or by extending <literal>org.jboss.seam.core."
+"AbstractMutable</literal>, and writing your own dirty-checking logic inside "
+"the component. For example,"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:534
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class Account extends AbstractMutable\n"
+"{\n"
+"    private BigDecimal balance;\n"
+"    \n"
+"    public void setBalance(BigDecimal balance)\n"
+"    {\n"
+"        setDirty(this.balance, balance);\n"
+"        this.balance = balance;\n"
+"    }\n"
+"    \n"
+"    public BigDecimal getBalance()\n"
+"    {\n"
+"        return balance;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:535
+#, no-c-format
+msgid ""
+"Or, you can use the <literal>@ReadOnly</literal> annotation to achieve a "
+"similar effect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:538
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class Account\n"
+"{\n"
+"    private BigDecimal balance;\n"
+"    \n"
+"    public void setBalance(BigDecimal balance)\n"
+"    {\n"
+"        this.balance = balance;\n"
+"    }\n"
+"    \n"
+"    @ReadOnly\n"
+"    public BigDecimal getBalance()\n"
+"    {\n"
+"        return balance;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:539
+#, no-c-format
+msgid ""
+"For session or conversation scoped entity bean components, Seam "
+"automatically forces replication to occur by calling <literal>setAttribute()"
+"</literal> once in every request, <emphasis>unless the (conversation-scoped) "
+"entity is currently associated with a Seam-managed persistence context, in "
+"which case no replication is needed</emphasis>. This strategy is not "
+"necessarily efficient, so session or conversation scope entity beans should "
+"be used with care. You can always write a stateful session bean or JavaBean "
+"component to \"manage\" the entity bean instance. For example,"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:542
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"account\")\n"
+"public class AccountManager extends AbstractMutable\n"
+"{\n"
+"    private Account account; // an entity bean\n"
+"    \n"
+"    @Unwrap\n"
+"    public void getAccount()\n"
+"    {\n"
+"        return account;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:543
+#, no-c-format
+msgid ""
+"Note that the <literal>EntityHome</literal> class in the Seam Application "
+"Framework provides a great example of this pattern."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:546
+#, no-c-format
+msgid "Factory and manager components"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:547
+#, no-c-format
+msgid ""
+"We often need to work with objects that are not Seam components. But we "
+"still want to be able to inject them into our components using <literal>@In</"
+"literal> and use them in value and method binding expressions, etc. "
+"Sometimes, we even need to tie them into the Seam context lifecycle "
+"(<literal>@Destroy</literal>, for example). So the Seam contexts can contain "
+"objects which are not Seam components, and Seam provides a couple of nice "
+"features that make it easier to work with non-component objects bound to "
+"contexts."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:550
+#, no-c-format
+msgid ""
+"The <emphasis>factory component pattern</emphasis> lets a Seam component act "
+"as the instantiator for a non-component object. A <emphasis>factory method</"
+"emphasis> will be called when a context variable is referenced but has no "
+"value bound to it. We define factory methods using the <literal>@Factory</"
+"literal> annotation. The factory method binds a value to the context "
+"variable, and determines the scope of the bound value. There are two styles "
+"of factory method. The first style returns a value, which is bound to the "
+"context by Seam:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:553
+#, no-c-format
+msgid ""
+"@Factory(scope=CONVERSATION)\n"
+"public List&lt;Customer&gt; getCustomerList() { \n"
+"    return ... ;\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:554
+#, no-c-format
+msgid ""
+"The second style is a method of type <literal>void</literal> which binds the "
+"value to the context variable itself:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:557
+#, no-c-format
+msgid ""
+"@DataModel List&lt;Customer&gt; customerList;\n"
+"\n"
+"@Factory(\"customerList\")\n"
+"public void initCustomerList() { \n"
+"    customerList = ...  ;\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:558
+#, no-c-format
+msgid ""
+"In both cases, the factory method is called when we reference the "
+"<literal>customerList</literal> context variable and its value is null, and "
+"then has no further part to play in the lifecycle of the value. An even more "
+"powerful pattern is the <emphasis>manager component pattern</emphasis>. In "
+"this case, we have a Seam component that is bound to a context variable, "
+"that manages the value of the context variable, while remaining invisible to "
+"clients."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:561
+#, no-c-format
+msgid ""
+"A manager component is any component with an <literal>@Unwrap</literal> "
+"method. This method returns the value that will be visable to clients, and "
+"is called <emphasis>every time</emphasis> a context variable is referenced."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:564
+#, no-c-format
+msgid ""
+"@Name(\"customerList\")\n"
+"@Scope(CONVERSATION)\n"
+"public class CustomerListManager\n"
+"{\n"
+"    ...\n"
+"    \n"
+"    @Unwrap\n"
+"    public List&lt;Customer&gt; getCustomerList() { \n"
+"        return ... ;\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:565
+#, no-c-format
+msgid ""
+"This pattern is especially useful if we have some heavyweight object that "
+"needs a cleanup operation when the context ends. In this case, the manager "
+"component may perform cleanup in the <literal>@Destroy</literal> method."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Configuration.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Configuration.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Configuration.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1435 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Configuration.xml:10
+#, no-c-format
+msgid "Configuring Seam and packaging Seam applications"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:11
+#, no-c-format
+msgid ""
+"Configuration is a very boring topic and an extremely tedious pastime. "
+"Unfortunately, several lines of XML are required to integrate Seam into your "
+"JSF implementation and servlet container. There's no need to be too put off "
+"by the following sections; you'll never need to type any of this stuff "
+"yourself, since you can just copy and paste from the example applications!"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:14
+#, no-c-format
+msgid "Basic Seam configuration"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:15
+#, no-c-format
+msgid ""
+"First, let's look at the basic configuration that is needed whenever we use "
+"Seam with JSF."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:18
+#, no-c-format
+msgid "Integrating Seam with JSF and your servlet container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:19
+#, no-c-format
+msgid ""
+"Seam requires the following entry in your <literal>web.xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:22
+#, no-c-format
+msgid ""
+"&lt;listener&gt;\n"
+"    &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/listener-"
+"class&gt;\n"
+"&lt;/listener&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:23
+#, no-c-format
+msgid ""
+"This listener is responsible for bootstrapping Seam, and for destroying "
+"session and application contexts."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:26
+#, no-c-format
+msgid ""
+"To integrate with the JSF request lifecycle, we also need a JSF "
+"<literal>PhaseListener</literal> registered in in the <literal>faces-config."
+"xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:29
+#, no-c-format
+msgid ""
+"&lt;lifecycle&gt;\n"
+"    &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-"
+"listener&gt;\n"
+"&lt;/lifecycle&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:30
+#, no-c-format
+msgid ""
+"The actual listener class here varies depending upon how you want to manage "
+"transaction demarcation (more on this below)."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:33
+#, no-c-format
+msgid ""
+"If you are using Sun's JSF 1.2 reference implementation, you should also add "
+"this to <literal>faces-config.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:36
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;el-resolver&gt;org.jboss.seam.jsf.SeamELResolver&lt;/el-"
+"resolver&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:37
+#, no-c-format
+msgid ""
+"(This line should not strictly speaking be necessary, but it works around a "
+"minor bug in the RI.)"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:40
+#, no-c-format
+msgid ""
+"Some JSF implementations have a broken implementation of server-side state "
+"saving that interferes with Seam's conversation propagation. If you have "
+"problems with conversation propagation during form submissions, try "
+"switching to client-side state saving. You'll need this in <literal>web.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:43
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;client&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:44
+#, no-c-format
+msgid "Seam servlet filters"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:45
+#, no-c-format
+msgid ""
+"Seam doesn't need any servlet filters for basic operation. However, there "
+"are several features which depend upon the use of filters. To make things "
+"easier for you guys, Seam lets you add and configure servlet filters just "
+"like you would configure other built-in Seam components. To take advantage "
+"of this feature, we must first install a master filter in <literal>web.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:48
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;/*&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:49
+#, no-c-format
+msgid "Adding the master filter enables the following built-in filters."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:52
+#, no-c-format
+msgid "Exception handling"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:53
+#, no-c-format
+msgid ""
+"This filter provides the exception mapping functionality in <literal>pages."
+"xml</literal> (almost all applications will need this). It also takes care "
+"of rolling back uncommitted transactions when uncaught exceptions occur. "
+"(According to the Java EE specification, the web container should do this "
+"automatically, but we've found that this behavior cannot be relied upon in "
+"all application servers. And it is certainly not required of plain servlet "
+"engines like Tomcat.)"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:56
+#, no-c-format
+msgid ""
+"By default, the exception handling filter will process all requests, however "
+"this behavior may be adjusted by adding a <literal>&lt;web:exception-"
+"filter&gt;</literal> entry to <literal>components.xml</literal>, as shown in "
+"this example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:59
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:web=\"http://jboss.com/products/seam/web\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                    http://jboss.com/products/seam/core-1.2.xsd\n"
+"                 http://jboss.com/products/seam/components \n"
+"                     http://jboss.com/products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/web \n"
+"                     http://jboss.com/products/seam/web-1.2.xsd\"&gt;\n"
+"\n"
+"    &lt;web:exception-filter url-pattern=\"*.seam\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:62 Configuration.xml:77 Configuration.xml:99
+#: Configuration.xml:124
+#, no-c-format
+msgid ""
+"<literal>url-pattern</literal> &mdash; Used to specify which requests are "
+"filtered, the default is all requests."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:67
+#, no-c-format
+msgid "Conversation propagation with redirects"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:68
+#, no-c-format
+msgid ""
+"This filter allows Seam to propagate the conversation context across browser "
+"redirects. It intercepts any browser redirects and adds a request parameter "
+"that specifies the Seam conversation identifier."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:71
+#, no-c-format
+msgid ""
+"The redirect filter will process all requests by default, but this behavior "
+"can also be adjusted in <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:74
+#, no-c-format
+msgid "&lt;web:redirect-filter url-pattern=\"*.seam\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:82
+#, no-c-format
+msgid "Multipart form submissions"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:83
+#, no-c-format
+msgid ""
+"This feature is necessary when using the Seam file upload JSF control. It "
+"detects multipart form requests and processes them according to the "
+"multipart/form-data specification (RFC-2388). To override the default "
+"settings, add the following entry to <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:86
+#, no-c-format
+msgid ""
+"&lt;web:multipart-filter create-temp-files=\"true\" \n"
+"        max-request-size=\"1000000\" \n"
+"        url-pattern=\"*.seam\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:89
+#, no-c-format
+msgid ""
+"<literal>create-temp-files</literal> &mdash; If set to <literal>true</"
+"literal>, uploaded files are written to a temporary file (instead of held in "
+"memory). This may be an important consideration if large file uploads are "
+"expected. The default setting is <literal>false</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:94
+#, no-c-format
+msgid ""
+"<literal>max-request-size</literal> &mdash; If the size of a file upload "
+"request (determined by reading the <literal>Content-Length</literal> header "
+"in the request) exceeds this value, the request will be aborted. The default "
+"setting is 0 (no size limit)."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:104
+#, no-c-format
+msgid "Character encoding"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:105
+#, no-c-format
+msgid "Sets the character encoding of submitted form data."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:108 Configuration.xml:136
+#, no-c-format
+msgid ""
+"This filter is not installed by default and requires an entry in "
+"<literal>components.xml</literal> to enable it:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:111
+#, no-c-format
+msgid ""
+"&lt;web:character-encoding-filter encoding=\"UTF-16\" \n"
+"        override-client=\"true\" \n"
+"        url-pattern=\"*.seam\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:114
+#, no-c-format
+msgid "<literal>encoding</literal> &mdash; The encoding to use."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:119
+#, no-c-format
+msgid ""
+"<literal>override-client</literal> &mdash; If this is set to <literal>true</"
+"literal>, the request encoding will be set to whatever is specified by "
+"<literal>encoding</literal> no matter whether the request already specifies "
+"an encoding or not. If set to <literal>false</literal>, the request encoding "
+"will only be set if the request doesn't already specify an encoding. The "
+"default setting is <literal>false</literal>."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:129
+#, no-c-format
+msgid "Context management for custom servlets"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:130
+#, no-c-format
+msgid ""
+"Requests sent direct to some servlet other than the JSF servlet are not "
+"processed through the JSF lifecycle, so Seam provides a servlet filter that "
+"can be applied to any other servlet that needs access to Seam components."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:133
+#, no-c-format
+msgid ""
+"This filter allows custom servlets to interact with the Seam contexts. It "
+"sets up the Seam contexts at the beginning of each request, and tears them "
+"down at the end of the request. You should make sure that this filter is "
+"<emphasis>never</emphasis> applied to the JSF <literal>FacesServlet</"
+"literal>. Seam uses the phase listener for context management in a JSF "
+"request."
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:139
+#, no-c-format
+msgid "&lt;web:context-filter url-pattern=\"/media/*\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:142
+#, no-c-format
+msgid ""
+"<literal>url-pattern</literal> &mdash; Used to specify which requests are "
+"filtered, the default is all requests. If the url-pattern is specified for "
+"the context filter, then the filter will be enabled (unless explicitly "
+"disabled)."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:147
+#, no-c-format
+msgid ""
+"The context filter expects to find the conversation id of any conversation "
+"context in a request parameter named <literal>conversationId</literal>. You "
+"are responsible for ensuring that it gets sent in the request."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:150
+#, no-c-format
+msgid ""
+"You are also responsible for ensuring propagation of any new conversation id "
+"back to the client. Seam exposes the conversation id as a property of the "
+"built in component <literal>conversation</literal>."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:153
+#, no-c-format
+msgid "Integrating Seam with your EJB container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:154
+#, no-c-format
+msgid ""
+"We need to apply the <literal>SeamInterceptor</literal> to our Seam "
+"components. The simplest way to do this is to add the following interceptor "
+"binding to the <literal>&lt;assembly-descriptor&gt;</literal> in "
+"<literal>ejb-jar.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:157
+#, no-c-format
+msgid ""
+"&lt;interceptor-binding&gt;\n"
+"    &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"    &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"&lt;/interceptor-binding&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:158
+#, no-c-format
+msgid ""
+"Seam needs to know where to go to find session beans in JNDI. One way to do "
+"this is specify the <literal>@JndiName</literal> annotation on every session "
+"bean Seam component. However, this is quite tedious. A better approach is to "
+"specify a pattern that Seam can use to calculate the JNDI name from the EJB "
+"name. Unfortunately, there is no standard mapping to global JNDI defined in "
+"the EJB3 specification, so this mapping is vendor-specific. We usually "
+"specify this option in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:161
+#, no-c-format
+msgid "For JBoss AS, the following pattern is correct:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:164
+#, no-c-format
+msgid "&lt;core:init jndi-name=\"myEarName/#{ejbName}/local\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:165
+#, no-c-format
+msgid ""
+"Where <literal>myEarName</literal> is the name of the EAR in which the bean "
+"is deployed."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:168
+#, no-c-format
+msgid ""
+"Outside the context of an EAR (when using the JBoss Embeddable EJB3 "
+"container), the following pattern is the one to use:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:171
+#, no-c-format
+msgid "&lt;core:init jndi-name=\"#{ejbName}/local\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:172
+#, no-c-format
+msgid ""
+"You'll have to experiment to find the right setting for other application "
+"servers. Note that some servers (such as GlassFish) require you to specify "
+"JNDI names for all EJB components explicitly (and tediously). In this case, "
+"you can pick your own pattern ;-)"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:175
+#, no-c-format
+msgid "Using facelets"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:176
+#, no-c-format
+msgid ""
+"If you want follow our advice and use facelets instead of JSP, add the "
+"following lines to <literal>faces-config.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:179
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;view-handler&gt;com.sun.facelets.FaceletViewHandler&lt;/view-"
+"handler&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:180
+#, no-c-format
+msgid "And the following lines to <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:183
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;javax.faces.DEFAULT_SUFFIX&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;.xhtml&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:184
+#, no-c-format
+msgid "Don't forget!"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:185
+#, no-c-format
+msgid ""
+"There is one final item you need to know about. You must place a "
+"<literal>seam.properties</literal>, <literal>META-INF/seam.properties</"
+"literal> or <literal>META-INF/components.xml</literal> file in any archive "
+"in which your Seam components are deployed (even an empty properties file "
+"will do). At startup, Seam will scan any archives with <literal>seam."
+"properties</literal> files for seam components."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:188
+#, no-c-format
+msgid ""
+"That's why all the Seam examples have an empty <literal>seam.properties</"
+"literal> file. You can't just delete this file and expect everything to "
+"still work!"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:191
+#, no-c-format
+msgid ""
+"You might think this is silly and what kind of idiot framework designers "
+"would make an empty file affect the behavior of their software?? Well, this "
+"is a workaround for a limitation of the JVM&mdash;if we didn't use this "
+"mechanism, our next best option would be to force you to list every "
+"component explicitly in <literal>components.xml</literal>, just like some "
+"other competing frameworks do! I think you'll like our way better."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:195
+#, no-c-format
+msgid "Configuring Seam in Java EE 5"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:204
+#, no-c-format
+msgid ""
+"If you're running in a Java EE 5 environment, this is all the configuration "
+"required to start using Seam!"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:207 Configuration.xml:270 Configuration.xml:318
+#: Configuration.xml:354 Configuration.xml:371
+#, no-c-format
+msgid "Packaging"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:208
+#, no-c-format
+msgid ""
+"Once you've packaged all this stuff together into an EAR, the archive "
+"structure will look something like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:211
+#, no-c-format
+msgid ""
+"my-application.ear/\n"
+"    jboss-seam.jar\n"
+"    el-api.jar\n"
+"    el-ri.jar\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"        application.xml\n"
+"    my-application.war/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"        WEB-INF/\n"
+"            web.xml\n"
+"            components.xml\n"
+"            faces-config.xml\n"
+"            lib/\n"
+"                jsf-facelets.jar\n"
+"                jboss-seam-ui.jar\n"
+"        login.jsp\n"
+"        register.jsp\n"
+"        ...\n"
+"    my-application.jar/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"            persistence.xml\n"
+"        seam.properties\n"
+"        org/\n"
+"            jboss/\n"
+"                myapplication/\n"
+"                    User.class\n"
+"                    Login.class\n"
+"                    LoginBean.class\n"
+"                    Register.class\n"
+"                    RegisterBean.class\n"
+"                    ..."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:212
+#, no-c-format
+msgid ""
+"You must include <literal>jboss-seam.jar</literal>, <literal>el-api.jar</"
+"literal> and <literal>el-ri.jar</literal> in the EAR classpath. Make sure "
+"you reference all of these jars from <literal>application.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:215
+#, no-c-format
+msgid ""
+"If you want to use jBPM or Drools, you must include the needed jars in the "
+"EAR classpath. Make sure you reference all of the jars from "
+"<literal>application.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:218
+#, no-c-format
+msgid ""
+"If you want to use facelets (our recommendation), you must include "
+"<literal>jsf-facelets.jar</literal> in the <literal>WEB-INF/lib</literal> "
+"directory of the WAR."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:221
+#, no-c-format
+msgid ""
+"If you want to use the Seam tag library (most Seam applications do), you "
+"must include <literal>jboss-seam-ui.jar</literal> in the <literal>WEB-INF/"
+"lib</literal> directory of the WAR. If you want to use the PDF or email tag "
+"libraries, you need to put <literal>jboss-seam-pdf.jar</literal> or "
+"<literal>jboss-seam-mail.jar</literal> in <literal>WEB-INF/lib</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:224
+#, no-c-format
+msgid ""
+"If you want to use the Seam debug page (only works for applications using "
+"facelets), you must include <literal>jboss-seam-debug.jar</literal> in the "
+"<literal>WEB-INF/lib</literal> directory of the WAR."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:227
+#, no-c-format
+msgid ""
+"Seam ships with several example applications that are deployable in any Java "
+"EE container that supports EJB 3.0."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:231
+#, no-c-format
+msgid "Configuring Seam in Java SE, with the JBoss Embeddable EJB3 container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:232
+#, no-c-format
+msgid ""
+"The JBoss Embeddable EJB3 container lets you run EJB3 components outside the "
+"context of the Java EE 5 application server. This is especially, but not "
+"only, useful for testing."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:235
+#, no-c-format
+msgid ""
+"The Seam booking example application includes a TestNG integration test "
+"suite that runs on the Embeddable EJB3 container."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:246
+#, no-c-format
+msgid "The booking example application may even be deployed to Tomcat."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:257
+#, no-c-format
+msgid "Installing the Embeddable EJB3 container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:258
+#, no-c-format
+msgid ""
+"Seam ships with a build of the Embeddable EJB3 container in the "
+"<literal>embedded-ejb</literal> directory. To use the Embeddable EJB3 "
+"container with Seam, add the <literal>embedded-ejb/conf</literal> directory, "
+"and all jars in the <literal>lib</literal> and <literal>embedded-ejb/lib</"
+"literal> directories to your classpath. Then, add the following line to "
+"<literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:261
+#, no-c-format
+msgid "&lt;core:ejb /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:262
+#, no-c-format
+msgid ""
+"This setting installs the built-in component named <literal>org.jboss.seam."
+"core.ejb</literal>. This component is responsible for bootstrapping the EJB "
+"container when Seam is started, and shutting it down when the web "
+"application is undeployed."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:265
+#, no-c-format
+msgid "Configuring a datasource with the Embeddable EJB3 container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:266
+#, no-c-format
+msgid ""
+"You should refer to the Embeddable EJB3 container documentation for more "
+"information about configuring the container. You'll probably at least need "
+"to set up your own datasource. Embeddable EJB3 is implemented using the "
+"JBoss Microcontainer, so it's very easy to add new services to the minimal "
+"set of services provided by default. For example, I can add a new datasource "
+"by putting this <literal>jboss-beans.xml</literal> file in my classpath:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:269
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"\n"
+"&lt;deployment xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"urn:jboss:bean-deployer bean-deployer_1_0."
+"xsd\"\n"
+"            xmlns=\"urn:jboss:bean-deployer\"&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasourceBootstrap\"\n"
+"        class=\"org.jboss.resource.adapter.jdbc.local.LocalTxDataSource"
+"\"&gt;\n"
+"      &lt;property name=\"driverClass\"&gt;org.hsqldb.jdbcDriver&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"connectionURL\"&gt;jdbc:hsqldb:.&lt;/property&gt;\n"
+"      &lt;property name=\"userName\"&gt;sa&lt;/property&gt;\n"
+"      &lt;property name=\"jndiName\"&gt;java:/bookingDatasource&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"minSize\"&gt;0&lt;/property&gt;\n"
+"      &lt;property name=\"maxSize\"&gt;10&lt;/property&gt;\n"
+"      &lt;property name=\"blockingTimeout\"&gt;1000&lt;/property&gt;\n"
+"      &lt;property name=\"idleTimeout\"&gt;100000&lt;/property&gt;\n"
+"      &lt;property name=\"transactionManager\"&gt;\n"
+"        &lt;inject bean=\"TransactionManager\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"      &lt;property name=\"cachedConnectionManager\"&gt;\n"
+"        &lt;inject bean=\"CachedConnectionManager\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"      &lt;property name=\"initialContextProperties\"&gt;\n"
+"        &lt;inject bean=\"InitialContextProperties\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasource\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getDatasource\"&gt;\n"
+"         &lt;factory bean=\"bookingDatasourceBootstrap\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"&lt;/deployment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:271
+#, no-c-format
+msgid ""
+"The archive structure of a WAR-based deployment on an servlet engine like "
+"Tomcat will look something like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:274
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            myfaces-api.jar\n"
+"            myfaces-impl.jar\n"
+"            jboss-ejb3.jar\n"
+"            jboss-jca.jar\n"
+"            jboss-j2ee.jar\n"
+"            ...\n"
+"            mc-conf.jar/\n"
+"                ejb3-interceptors-aop.xml\n"
+"                embedded-jboss-beans.xml\n"
+"                default.persistence.properties\n"
+"                jndi.properties\n"
+"                login-config.xml\n"
+"                security-beans.xml\n"
+"                log4j.xml\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                    MANIFEST.MF\n"
+"                    persistence.xml\n"
+"                    jboss-beans.xml\n"
+"                log4j.xml\n"
+"                seam.properties\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            LoginBean.class\n"
+"                            Register.class\n"
+"                            RegisterBean.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:275
+#, no-c-format
+msgid ""
+"The <literal>mc-conf.jar</literal> just contains the standard JBoss "
+"Microcontainer configuration files for Embeddable EJB3. You won't usually "
+"need to edit these files yourself."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:278
+#, no-c-format
+msgid ""
+"Most of the Seam example applications may be deployed to Tomcat by running "
+"<literal>ant deploy.tomcat</literal>."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:281
+#, no-c-format
+msgid "Configuring Seam in J2EE"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:282
+#, no-c-format
+msgid ""
+"Seam is useful even if you're not yet ready to take the plunge into EJB 3.0. "
+"In this case you would use Hibernate3 or JPA instead of EJB 3.0 persistence, "
+"and plain JavaBeans instead of session beans. You'll miss out on some of the "
+"nice features of session beans but it will be very easy to migrate to EJB "
+"3.0 when you're ready and, in the meantime, you'll be able to take advantage "
+"of Seam's unique declarative state management architecture."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:293
+#, no-c-format
+msgid ""
+"Seam JavaBean components do not provide declarative transaction demarcation "
+"like session beans do. You <emphasis>could</emphasis> manage your "
+"transactions manually using the JTA <literal>UserTransaction</literal> (you "
+"could even implement your own declarative transaction management in a Seam "
+"interceptor). But most applications will use Seam managed transactions when "
+"using Hibernate with JavaBeans. Follow the instructions in the persistence "
+"chapter to install <literal>TransactionalSeamPhaseListener</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:296
+#, no-c-format
+msgid ""
+"The Seam distribution includes a version of the booking example application "
+"that uses Hibernate3 and JavaBeans instead of EJB3, and another version that "
+"uses JPA and JavaBeans. These example applications are ready to deploy into "
+"any J2EE application server."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:299
+#, no-c-format
+msgid ""
+"If we want to deploy Hibernate in a non-J2EE environment like Tomcat or "
+"TestNG, we need to do a little bit more work."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:302
+#, no-c-format
+msgid "Boostrapping Hibernate in Seam"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:303
+#, no-c-format
+msgid ""
+"Seam will bootstrap a Hibernate <literal>SessionFactory</literal> from your "
+"<literal>hibernate.cfg.xml</literal> file if you install a built-in "
+"component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:306
+#, no-c-format
+msgid ""
+"&lt;core:hibernate-session-factory name=\"hibernateSessionFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:307
+#, no-c-format
+msgid ""
+"You will also need to configure a <emphasis>managed session</emphasis> if "
+"you want a Seam managed Hibernate <literal>Session</literal> to be available "
+"via injection."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:310
+#, no-c-format
+msgid "Boostrapping JPA in Seam"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:311
+#, no-c-format
+msgid ""
+"Seam will bootstrap a JPA <literal>EntityManagerFactory</literal> from your "
+"<literal>persistence.xml</literal> file if you install this built-in "
+"component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:314
+#, no-c-format
+msgid "&lt;core:entity-manager-factory name=\"entityManagerFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:315
+#, no-c-format
+msgid ""
+"You will also need to configure a <emphasis>managed persistencece context</"
+"emphasis> if you want a Seam managed JPA <literal>EntityManager</literal> to "
+"be available via injection."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:319
+#, no-c-format
+msgid "We can package our application as a WAR, in the following structure:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:322
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            hibernate3.jar\n"
+"            hibernate-annotations.jar\n"
+"            ...\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                   MANIFEST.MF\n"
+"                seam.properties\n"
+"                hibernate.cfg.xml\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            Register.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:324
+#, no-c-format
+msgid "Configuring Seam in Java SE, with the JBoss Microcontainer"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:325
+#, no-c-format
+msgid ""
+"The Seam support for Hibernate and JPA requires JTA and a JCA datasource. If "
+"you are running in a non-EE environment like Tomcat or TestNG you can run "
+"these services, and Hibernate itself, in the JBoss Microcontainer."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:328
+#, no-c-format
+msgid ""
+"You can even deploy the Hibernate and JPA versions of the booking example in "
+"Tomcat."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:339
+#, no-c-format
+msgid ""
+"Seam ships with an example Microcontainer configuration in "
+"<literal>microcontainer/conf/jboss-beans.xml</literal> that provides all the "
+"things you need to run Seam with Hibernate in any non-EE environment. Just "
+"add the <literal>microcontainer/conf</literal> directory, and all jars in "
+"the <literal>lib</literal> and <literal>microcontainer/lib</literal> "
+"directories to your classpath. Refer to the documentation for the JBoss "
+"Microcontainer for more information."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:342
+#, no-c-format
+msgid "Using Hibernate and the JBoss Microcontainer"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:343
+#, no-c-format
+msgid ""
+"The built-in Seam component named <literal>org.jboss.seam.core."
+"microcontainer</literal> bootstraps the microcontainer. As before, we "
+"probably want to use a Seam managed session."
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:346
+#, no-c-format
+msgid ""
+"&lt;core:microcontainer/&gt;\n"
+"\n"
+"&lt;core:managed-hibernate-session name=\"bookingDatabase\" auto-create="
+"\"true\"\n"
+"    session-factory-jndi-name=\"java:/bookingSessionFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:347
+#, no-c-format
+msgid ""
+"Where <literal>java:/bookingSessionFactory</literal> is the name of the "
+"Hibernate session factory specified in <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:350
+#, no-c-format
+msgid ""
+"You'll need to provide a <literal>jboss.beans.xml</literal> file that "
+"installs JNDI, JTA, your JCA datasource and Hibernate into the "
+"microcontainer:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:353
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"\n"
+"&lt;deployment xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"urn:jboss:bean-deployer bean-deployer_1_0."
+"xsd\"\n"
+"            xmlns=\"urn:jboss:bean-deployer\"&gt;\n"
+"\n"
+"   &lt;bean name=\"Naming\" class=\"org.jnp.server.SingletonNamingServer\"/"
+"&gt;\n"
+"\n"
+"   &lt;bean name=\"TransactionManagerFactory\"\n"
+"       class=\"org.jboss.seam.microcontainer.TransactionManagerFactory\"/"
+"&gt;\n"
+"   &lt;bean name=\"TransactionManager\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getTransactionManager\"&gt;\n"
+"         &lt;factory bean=\"TransactionManagerFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasourceFactory\" class=\"org.jboss.seam."
+"microcontainer.DataSourceFactory\"&gt;\n"
+"      &lt;property name=\"driverClass\"&gt;org.hsqldb.jdbcDriver&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"connectionUrl\"&gt;jdbc:hsqldb:.&lt;/property&gt;\n"
+"      &lt;property name=\"userName\"&gt;sa&lt;/property&gt;\n"
+"      &lt;property name=\"jndiName\"&gt;java:/hibernateDatasource&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"minSize\"&gt;0&lt;/property&gt;\n"
+"      &lt;property name=\"maxSize\"&gt;10&lt;/property&gt;\n"
+"      &lt;property name=\"blockingTimeout\"&gt;1000&lt;/property&gt;\n"
+"      &lt;property name=\"idleTimeout\"&gt;100000&lt;/property&gt;\n"
+"      &lt;property name=\"transactionManager\"&gt;&lt;inject bean="
+"\"TransactionManager\"/&gt;&lt;/property&gt;\n"
+"   &lt;/bean&gt;\n"
+"   &lt;bean name=\"bookingDatasource\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getDataSource\"&gt;\n"
+"         &lt;factory bean=\"bookingDatasourceFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingSessionFactoryFactory\"\n"
+"       class=\"org.jboss.seam.microcontainer.HibernateFactory\"/&gt;\n"
+"   &lt;bean name=\"bookingSessionFactory\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getSessionFactory\"&gt;\n"
+"         &lt;factory bean=\"bookingSessionFactoryFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"      &lt;depends&gt;bookingDatasource&lt;/depends&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"&lt;/deployment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:355
+#, no-c-format
+msgid "The WAR could have the following structure:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:358
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            hibernate3.jar\n"
+"            ...\n"
+"            jboss-microcontainer.jar\n"
+"            jboss-jca.jar\n"
+"            ...\n"
+"            myfaces-api.jar\n"
+"            myfaces-impl.jar\n"
+"            mc-conf.jar/\n"
+"                jndi.properties\n"
+"                log4j.xml\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                    MANIFEST.MF\n"
+"                    jboss-beans.xml\n"
+"                seam.properties\n"
+"                hibernate.cfg.xml\n"
+"                log4j.xml\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            Register.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:359
+#, no-c-format
+msgid "Configuring jBPM in Seam"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:360
+#, no-c-format
+msgid ""
+"Seam's jBPM integration is not installed by default, so you'll need to "
+"enable jBPM by installing a built-in component. You'll also need to "
+"explicitly list your process and pageflow definitions. In "
+"<literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:363
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:pageflow-definitions&gt;\n"
+"        &lt;value&gt;createDocument.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;editDocument.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;approveDocument.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:pageflow-definitions&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;documentLifecycle.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:364
+#, no-c-format
+msgid ""
+"No further special configuration is needed if you only have pageflows. If "
+"you do have business process definitions, you need to provide a jBPM "
+"configuration, and a Hibernate configuration for jBPM. The Seam DVD Store "
+"demo includes example <literal>jbpm.cfg.xml</literal> and <literal>hibernate."
+"cfg.xml</literal> files that will work with Seam:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:367
+#, no-c-format
+msgid ""
+"&lt;jbpm-configuration&gt;\n"
+"\n"
+"  &lt;jbpm-context&gt;\n"
+"    &lt;service name=\"persistence\"&gt;\n"
+"       &lt;factory&gt;\n"
+"          &lt;bean class=\"org.jbpm.persistence.db."
+"DbPersistenceServiceFactory\"&gt;\n"
+"             &lt;field name=\"isTransactionEnabled\"&gt;&lt;false/&gt;&lt;/"
+"field&gt;\n"
+"          &lt;/bean&gt;\n"
+"       &lt;/factory&gt;\n"
+"    &lt;/service&gt;\n"
+"    &lt;service name=\"message\" factory=\"org.jbpm.msg.db."
+"DbMessageServiceFactory\" /&gt;\n"
+"    &lt;service name=\"scheduler\" factory=\"org.jbpm.scheduler.db."
+"DbSchedulerServiceFactory\" /&gt;\n"
+"    &lt;service name=\"logging\" factory=\"org.jbpm.logging.db."
+"DbLoggingServiceFactory\" /&gt;\n"
+"    &lt;service name=\"authentication\" \n"
+"        factory=\"org.jbpm.security.authentication."
+"DefaultAuthenticationServiceFactory\" /&gt;\n"
+"  &lt;/jbpm-context&gt;\n"
+"\n"
+"&lt;/jbpm-configuration&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:368
+#, no-c-format
+msgid ""
+"The most important thing to notice here is that jBPM transaction control is "
+"disabled. Seam or EJB3 should control the JTA transactions."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:372
+#, no-c-format
+msgid ""
+"There is not yet any well-defined packaging format for jBPM configuration "
+"and process/pageflow definition files. In the Seam examples we've decided to "
+"simply package all these files into the root of the EAR. In future, we will "
+"probably design some other standard packaging format. So the EAR looks "
+"something like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:375
+#, no-c-format
+msgid ""
+"my-application.ear/\n"
+"    jboss-seam.jar\n"
+"    el-api.jar\n"
+"    el-ri.jar\n"
+"    jbpm-3.1.jar\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"        application.xml\n"
+"    my-application.war/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"        WEB-INF/\n"
+"            web.xml\n"
+"            components.xml\n"
+"            faces-config.xml\n"
+"            lib/\n"
+"                jsf-facelets.jar\n"
+"                jboss-seam-ui.jar\n"
+"        login.jsp\n"
+"        register.jsp\n"
+"        ...\n"
+"    my-application.jar/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"            persistence.xml\n"
+"        seam.properties\n"
+"        org/\n"
+"            jboss/\n"
+"                myapplication/\n"
+"                    User.class\n"
+"                    Login.class\n"
+"                    LoginBean.class\n"
+"                    Register.class\n"
+"                    RegisterBean.class\n"
+"                    ...\n"
+"    jbpm.cfg.xml\n"
+"    hibernate.cfg.xml\n"
+"    createDocument.jpdl.xml\n"
+"    editDocument.jpdl.xml\n"
+"    approveDocument.jpdl.xml\n"
+"    documentLifecycle.jpdl.xml"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:376
+#, no-c-format
+msgid ""
+"Remember to add <literal>jbpm-3.1.jar</literal> to the manifest of your EJB-"
+"JAR and WAR."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:379
+#, no-c-format
+msgid "Configuring Seam in a Portal"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:380
+#, no-c-format
+msgid ""
+"To run a Seam application as a portlet, you'll need to provide certain "
+"portlet metadata (<literal>portlet.xml</literal>, etc) in addition to the "
+"usual Java EE metadata. See the <literal>examples/portal</literal> directory "
+"for an example of the booking demo preconfigured to run on JBoss Portal."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:383
+#, no-c-format
+msgid ""
+"In addition, you'll need to use a portlet-specific phase listener instead of "
+"<literal>SeamPhaseListener</literal> or "
+"<literal>TransactionalSeamPhaseListener</literal>. The "
+"<literal>SeamPortletPhaseListener</literal> and "
+"<literal>TransactionalSeamPortletPhaseListener</literal> are adapted to the "
+"portlet lifecycle. I would like to offer my sincerest apologies for the name "
+"of that last class. I really couldn't think of anything better. Sorry."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Controls.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Controls.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Controls.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,591 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Controls.xml:10
+#, no-c-format
+msgid "Seam JSF controls"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:11
+#, no-c-format
+msgid ""
+"Seam includes a number of JSF controls that are useful for working with "
+"Seam. These are intended to complement the built-in JSF controls, and "
+"controls from other third-party libraries. We recommend the Ajax4JSF and ADF "
+"faces (now Trinidad) tag libraries for use with Seam. We do not recommend "
+"the use of the Tomahawk tag library."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:14
+#, no-c-format
+msgid "The ui example demonstrates the use of a number of these tags."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:19
+#, no-c-format
+msgid "&lt;s:validate&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:21
+#, no-c-format
+msgid ""
+"Validate a JSF input field against the bound property using Hibernate "
+"Validator."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:27
+#, no-c-format
+msgid "&lt;s:validateAll&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:29
+#, no-c-format
+msgid ""
+"Validate all child JSF input fields against the bound propertys using "
+"Hibernate Validator."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:35
+#, no-c-format
+msgid "&lt;s:formattedText&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:37
+#, no-c-format
+msgid "Output <emphasis>Seam Text</emphasis>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:43
+#, no-c-format
+msgid "&lt;s:convertDateTime&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:45
+#, no-c-format
+msgid "Perform date or time conversions in the Seam timezone."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:51
+#, no-c-format
+msgid "&lt;s:convertEnum&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:53
+#, no-c-format
+msgid ""
+"Assigns an enum converter to the current component. This is primarily useful "
+"for radio button and dropdown controls."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:59
+#, no-c-format
+msgid "&lt;s:enumItem&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:61
+#, no-c-format
+msgid "Creates a <literal>SelectItem</literal> from an enum value."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:66
+#, no-c-format
+msgid ""
+"<literal>enumValue</literal> &mdash; the string representation of the enum "
+"value."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:71
+#, no-c-format
+msgid ""
+"<literal>label</literal> &mdash; the label to be used when rendering the "
+"<literal>SelectItem</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:79
+#, no-c-format
+msgid "&lt;s:selectItems&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:81
+#, no-c-format
+msgid ""
+"Creates a <literal>List&lt;SelectItem&gt;</literal> from a List, Set, "
+"DataModel or Array."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:86
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; an EL expression specifying the data that "
+"backs the <literal>List&lt;SelectItem&gt;</literal>"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:91
+#, no-c-format
+msgid ""
+"<literal>var</literal> &mdash; defines the name of the local variable that "
+"holds the current object during iteration"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:96
+#, no-c-format
+msgid ""
+"<literal>label</literal> &mdash; the label to be used when rendering the "
+"<literal>SelectItem</literal>. Can reference the <literal>var</literal> "
+"variable"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:101
+#, no-c-format
+msgid ""
+"<literal>disabled</literal> &mdash; if true the <literal>SelectItem</"
+"literal> will be rendered disabled. Can reference the <literal>var</literal> "
+"variable"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:106
+#, no-c-format
+msgid ""
+"<literal>noSelectionLabel</literal> &mdash; specifies the (optional) label "
+"to place at the top of list (if <literal>required=\"true\"</literal> is also "
+"specified then selecting this value will cause a validation error)"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:111
+#, no-c-format
+msgid ""
+"<literal>hideNoSelectionLabel</literal> &mdash; if true, the "
+"<literal>noSelectionLabel</literal> will be hidden when a value is selected"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:119
+#, no-c-format
+msgid "&lt;s:decorate&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:121
+#, no-c-format
+msgid "\"Decorate\" a JSF input field when validation fails."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:127
+#, no-c-format
+msgid "&lt;s:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:129
+#, no-c-format
+msgid "\"Decorate\" a JSF input field with the validation error message."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:135
+#, no-c-format
+msgid "&lt;s:span&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:137
+#, no-c-format
+msgid "Render a HTML <literal>&lt;span&gt;</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:143
+#, no-c-format
+msgid "&lt;s:div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:145
+#, no-c-format
+msgid "Render a HTML <literal>&lt;div&gt;</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:151
+#, no-c-format
+msgid "&lt;s:fragment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:153
+#, no-c-format
+msgid ""
+"A non-rendering component useful for enabling/disabling rendering of it's "
+"children"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:159
+#, no-c-format
+msgid "&lt;s:cache&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:161
+#, no-c-format
+msgid ""
+"Cache the rendered page fragment using JBoss Cache. Note that <literal>&lt;s:"
+"cache&gt;</literal> actually uses the instance of JBoss Cache managed by the "
+"built-in <literal>pojoCache</literal> component."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:166
+#, no-c-format
+msgid ""
+"<literal>key</literal> &mdash; the key to cache rendered content, often a "
+"value expression. For example, if we were caching a page fragment that "
+"displays a document, we might use <literal>key=\"Document-#{document.id}\"</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:171
+#, no-c-format
+msgid ""
+"<literal>enabled</literal> &mdash; a value expression that determines if the "
+"cache should be used."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:176
+#, no-c-format
+msgid ""
+"<literal>region</literal> &mdash; a JBoss Cache node to use (different nodes "
+"can have different expiry policies)."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:184
+#, no-c-format
+msgid "&lt;s:link&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:186
+#, no-c-format
+msgid ""
+"A link that supports invocation of an action with control over conversation "
+"propagation. <emphasis>Does not submit the form.</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:191 Controls.xml:236
+#, no-c-format
+msgid "<literal>value</literal> &mdash; the label."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:196 Controls.xml:241
+#, no-c-format
+msgid ""
+"<literal>action</literal> &mdash; a method binding that specified the action "
+"listener."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:201 Controls.xml:246
+#, no-c-format
+msgid "<literal>view</literal> &mdash; the JSF view id to link to."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:206 Controls.xml:251
+#, no-c-format
+msgid "<literal>fragment</literal> &mdash; the fragment identifier to link to."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:211 Controls.xml:256
+#, no-c-format
+msgid "<literal>disabled</literal> &mdash; is the link disabled?"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:216 Controls.xml:261 Controls.xml:301
+#, no-c-format
+msgid ""
+"<literal>propagation</literal> &mdash; determines the conversation "
+"propagation style: <literal>begin</literal>, <literal>join</literal>, "
+"<literal>nest</literal>, <literal>none</literal> or <literal>end</literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:221 Controls.xml:266 Controls.xml:306
+#, no-c-format
+msgid ""
+"<literal>pageflow</literal> &mdash; a pageflow definition to begin. (This is "
+"only useful when <literal>propagation=\"begin\"</literal> or "
+"<literal>propagation=\"join\"</literal>.)"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:229
+#, no-c-format
+msgid "&lt;s:button&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:231
+#, no-c-format
+msgid ""
+"A button that supports invocation of an action with control over "
+"conversation propagation. <emphasis>Does not submit the form.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:274
+#, no-c-format
+msgid "&lt;s:selectDate&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:276
+#, no-c-format
+msgid ""
+"Displays a dynamic date picker component that selects a date for the "
+"specified input field. The body of the <literal>selectDate</literal> element "
+"should contain HTML elements, such as text or an image, that prompt the user "
+"to click to display the date picker. The date picker can be styled using "
+"CSS. An example CSS file can be found in the Seam booking demo as "
+"<literal>date.css</literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:281
+#, no-c-format
+msgid ""
+"<literal>for</literal> &mdash; The id of the input field that the date "
+"picker will insert the selected date into."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:286
+#, no-c-format
+msgid ""
+"<literal>dateFormat</literal> &mdash; The date format string. This should "
+"match the date format of the input field."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:294
+#, no-c-format
+msgid "&lt;s:conversationPropagation&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:296
+#, no-c-format
+msgid ""
+"Customize the conversation propagation for a command link or button (or "
+"similar JSF control). <emphasis>Facelets only.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:314
+#, no-c-format
+msgid "&lt;s:conversationId&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:316
+#, no-c-format
+msgid ""
+"Add the conversation id to an output link (or similar JSF control). "
+"<emphasis>Facelets only.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:322
+#, no-c-format
+msgid "&lt;s:taskId&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:324
+#, no-c-format
+msgid ""
+"Add the task id to an output link (or similar JSF control), when the task is "
+"available via <literal>#{task}</literal>. <emphasis>Facelets only.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:330
+#, no-c-format
+msgid "&lt;s:fileUpload&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:332
+#, no-c-format
+msgid ""
+"Renders a file upload control. This control must be used within a form with "
+"an encoding type of <literal>multipart/form-data</literal>, i.e:"
+msgstr ""
+
+#. Tag: programlisting
+#: Controls.xml:335
+#, no-c-format
+msgid "&lt;h:form enctype=\"multipart/form-data\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:336
+#, no-c-format
+msgid ""
+"For multipart requests, the Seam Multipart servlet filter must also be "
+"configured in <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Controls.xml:339
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"      &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"      &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-"
+"class&gt;\n"
+"    &lt;/filter&gt;\n"
+"    \n"
+"    &lt;filter-mapping&gt;\n"
+"      &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"      &lt;url-pattern&gt;/*&lt;/url-pattern&gt;\n"
+"    &lt;/filter-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:340
+#, no-c-format
+msgid ""
+"The following configuration options for multipart requests may be configured "
+"in components.xml:"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:345
+#, no-c-format
+msgid ""
+"<literal>createTempFiles</literal> &mdash; if this option is set to true, "
+"uploaded files are streamed to a temporary file instead of in memory."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:350
+#, no-c-format
+msgid ""
+"<literal>maxRequestSize</literal> &mdash; the maximum size of a file upload "
+"request, in bytes."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:355
+#, no-c-format
+msgid "Here's an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Controls.xml:358
+#, no-c-format
+msgid ""
+"&lt;component class=\"org.jboss.seam.servlet.MultipartConfig\"&gt;\n"
+"        &lt;property name=\"createTempFiles\"&gt;true&lt;/property&gt;\n"
+"        &lt;property name=\"maxRequestSize\"&gt;1000000&lt;/property&gt;\n"
+"    &lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:359
+#, no-c-format
+msgid ""
+"And here's a list of the supported attributes for the <literal>fileUpload</"
+"literal> control:"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:364
+#, no-c-format
+msgid ""
+"<literal>data</literal> &mdash; this value binding receives the binary file "
+"data. The receiving field should be declared as a <literal>byte[]</literal> "
+"or <literal>InputStream</literal> (required)."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:369
+#, no-c-format
+msgid ""
+"<literal>contentType</literal> &mdash; this value binding receives the "
+"file's content type (optional)."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:374
+#, no-c-format
+msgid ""
+"<literal>fileName</literal> &mdash; this value binding receives the filename "
+"(optional)."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:379
+#, no-c-format
+msgid ""
+"<literal>accept</literal> &mdash; a comma-separated list of content types to "
+"accept, may not be supported by the browser. E.g. <literal>\"images/png,"
+"images/jpg\"</literal>, <literal>\"images/*\"</literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:384
+#, no-c-format
+msgid "<literal>style</literal> &mdash; The control's style"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:389
+#, no-c-format
+msgid "<literal>styleClass</literal> &mdash; The control's style class"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Conversations.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Conversations.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Conversations.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1248 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Conversations.xml:10
+#, no-c-format
+msgid "Conversations and workspace management"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:11
+#, no-c-format
+msgid "It's time to understand Seam's conversation model in more detail."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:14
+#, no-c-format
+msgid ""
+"Historically, the notion of a Seam \"conversation\" came about as a merger "
+"of three different ideas:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:19
+#, no-c-format
+msgid ""
+"The idea of a <emphasis>workspace</emphasis>, which I encountered in a "
+"project for the Victorian government in 2002. In this project I was forced "
+"to implement workspace management on top of Struts, an experience I pray "
+"never to repeat."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:24
+#, no-c-format
+msgid ""
+"The idea of an <emphasis>application transaction</emphasis> with optimistic "
+"semantics, and the realization that existing frameworks based around a "
+"stateless architecture could not provide effective management of extended "
+"persistence contexts. (The Hibernate team is truly fed up with copping the "
+"blame for <literal>LazyInitializationException</literal>s, which are not "
+"really Hibernate's fault, but rather the fault of the extremely limiting "
+"persistence context model supported by stateless architectures such as the "
+"Spring framework or the traditional <emphasis>stateless session facade</"
+"emphasis> (anti)pattern in J2EE.)"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:29
+#, no-c-format
+msgid "The idea of a workflow <emphasis>task</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:34
+#, no-c-format
+msgid ""
+"By unifying these ideas and providing deep support in the framework, we have "
+"a powerful construct that lets us build richer and more efficient "
+"applications with less code than before."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:38
+#, no-c-format
+msgid "Seam's conversation model"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:39
+#, no-c-format
+msgid ""
+"The examples we have seen so far make use of a very simple conversation "
+"model that follows these rules:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:44
+#, no-c-format
+msgid ""
+"There is always a conversation context active during the apply request "
+"values, process validations, update model values, invoke application and "
+"render response phases of the JSF request lifecycle."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:49
+#, no-c-format
+msgid ""
+"At the end of the restore view phase of the JSF request lifecycle, Seam "
+"attempts to restore any previous long-running conversation context. If none "
+"exists, Seam creates a new temporary conversation context."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:54
+#, no-c-format
+msgid ""
+"When an <literal>@Begin</literal> method is encountered, the temporary "
+"conversation context is promoted to a long running conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:59
+#, no-c-format
+msgid ""
+"When an <literal>@End</literal> method is encountered, any long-running "
+"conversation context is demoted to a temporary conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:64
+#, no-c-format
+msgid ""
+"At the end of the render response phase of the JSF request lifecycle, Seam "
+"stores the contents of a long running conversation context or destroys the "
+"contents of a temporary conversation context."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:69
+#, no-c-format
+msgid ""
+"Any faces request (a JSF postback) will propagate the conversation context. "
+"By default, non-faces requests (GET requests, for example) do not propagate "
+"the conversation context, but see below for more information on this."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:74
+#, no-c-format
+msgid ""
+"If the JSF request lifecycle is foreshortened by a redirect, Seam "
+"transparently stores and restores the current conversation context&mdash;"
+"unless the conversation was already ended via <literal>@End"
+"(beforeRedirect=true)</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:79
+#, no-c-format
+msgid ""
+"Seam transparently propagates the conversation context across JSF postbacks "
+"and redirects. If you don't do anything special, a <emphasis>non-faces "
+"request</emphasis> (a GET request for example) will not propagate the "
+"conversation context and will be processed in a new temporary conversation. "
+"This is usually - but not always - the desired behavior."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:82
+#, no-c-format
+msgid ""
+"If you want to propagate a Seam conversation across a non-faces request, you "
+"need to explicitly code the Seam <emphasis>conversation id</emphasis> as a "
+"request parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:85
+#, no-c-format
+msgid ""
+"&lt;a href=\"main.jsf?conversationId=#{conversation.id}\"&gt;Continue&lt;/"
+"a&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:86
+#, no-c-format
+msgid "Or, the more JSF-ish:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:89
+#, no-c-format
+msgid ""
+"&lt;h:outputLink value=\"main.jsf\"&gt;\n"
+"    &lt;f:param name=\"conversationId\" value=\"#{conversation.id}\"/&gt;\n"
+"    &lt;h:outputText value=\"Continue\"/&gt;\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:90 Conversations.xml:98
+#, no-c-format
+msgid "If you use the Seam tag library, this is equivalent:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:93
+#, no-c-format
+msgid ""
+"&lt;h:outputLink value=\"main.jsf\"&gt;\n"
+"    &lt;s:conversationId/&gt;\n"
+"    &lt;h:outputText value=\"Continue\"/&gt;\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:94
+#, no-c-format
+msgid ""
+"If you wish to disable propagation of the conversation context for a "
+"postback, a similar trick is used:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:97
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;f:param name=\"conversationPropagation\" value=\"none\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:101
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"none\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:102
+#, no-c-format
+msgid ""
+"Note that disabling conversation context propagation is absolutely not the "
+"same thing as ending the conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:105
+#, no-c-format
+msgid ""
+"The <literal>conversationPropagation</literal> request parameter, or the "
+"<literal>&lt;s:conversationPropagation&gt;</literal> tag may even be used to "
+"begin and end conversation, or begin a nested conversation."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:108
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"end\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:109
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Child\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"nested\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:110
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Hotel\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"begin\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:111
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Hotel\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"join\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:112
+#, no-c-format
+msgid ""
+"This conversation model makes it easy to build applications which behave "
+"correctly with respect to multi-window operation. For many applications, "
+"this is all that is needed. Some complex applications have either or both of "
+"the following additional requirements:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:117
+#, no-c-format
+msgid ""
+"A conversation spans many smaller units of user interaction, which execute "
+"serially or even concurrently. The smaller <emphasis>nested conversations</"
+"emphasis> have their own isolated set of conversation state, and also have "
+"access to the state of the outer conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:122
+#, no-c-format
+msgid ""
+"The user is able to switch between many conversations within the same "
+"browser window. This feature is called <emphasis>workspace management</"
+"emphasis>."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:130
+#, no-c-format
+msgid "Nested conversations"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:131
+#, no-c-format
+msgid ""
+"A nested conversation is created by invoking a method marked <literal>@Begin"
+"(nested=true)</literal> inside the scope of an existing conversation. A "
+"nested conversation has its own conversation context, and also has read-only "
+"access to the context of the outer conversation. (It can read the outer "
+"conversation's context variables, but not write to them.) When an "
+"<literal>@End</literal> is subsequently encountered, the nested conversation "
+"will be destroyed, and the outer conversation will resume, by \"popping\" "
+"the conversation stack. Conversations may be nested to any arbitrary depth."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:134
+#, no-c-format
+msgid ""
+"Certain user activity (workspace management, or the back button) can cause "
+"the outer conversation to be resumed before the inner conversation is ended. "
+"In this case it is possible to have multiple concurrent nested conversations "
+"belonging to the same outer conversation. If the outer conversation ends "
+"before a nested conversation ends, Seam destroys all nested conversation "
+"contexts along with the outer context."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:137
+#, no-c-format
+msgid ""
+"A conversation may be thought of as a <emphasis>continuable state</"
+"emphasis>. Nested conversations allow the application to capture a "
+"consistent continuable state at various points in a user interaction, thus "
+"insuring truly correct behavior in the face of backbuttoning and workspace "
+"management."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:140
+#, no-c-format
+msgid ""
+"TODO: an example to show how a nested conversation prevents bad stuff "
+"happening when you backbutton."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:143
+#, no-c-format
+msgid ""
+"Usually, if a component exists in a parent conversation of the current "
+"nested conversation, the nested conversation will use the same instance. "
+"Occasionally, it is useful to have a different instance in each nested "
+"conversation, so that the component instance that exists in the parent "
+"conversation is invisible to its child conversations. You can achieve this "
+"behavior by annotating the component <literal>@PerNestedConversation</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:149
+#, no-c-format
+msgid "Starting conversations with GET requests"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:150
+#, no-c-format
+msgid ""
+"JSF does not define any kind of action listener that is triggered when a "
+"page is accessed via a non-faces request (for example, a HTTP GET request). "
+"This can occur if the user bookmarks the page, or if we navigate to the page "
+"via an <literal>&lt;h:outputLink&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:153
+#, no-c-format
+msgid ""
+"Sometimes we want to begin a conversation immediately the page is accessed. "
+"Since there is no JSF action method, we can't solve the problem in the usual "
+"way, by annotating the action with <literal>@Begin</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:156
+#, no-c-format
+msgid ""
+"A further problem arises if the page needs some state to be fetched into a "
+"context variable. We've already seen two ways to solve this problem. If that "
+"state is held in a Seam component, we can fetch the state in a "
+"<literal>@Create</literal> method. If not, we can define a "
+"<literal>@Factory</literal> method for the context variable."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:159
+#, no-c-format
+msgid ""
+"If none of these options works for you, Seam lets you define a "
+"<emphasis>page action</emphasis> in the <literal>pages.xml</literal> file."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:162
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\" action=\"#{messageManager.list}\"/"
+"&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:163
+#, no-c-format
+msgid ""
+"This action method is called at the beginning of the render response phase, "
+"any time the page is about to be rendered. If a page action returns a non-"
+"null outcome, Seam will process any appropriate JSF and Seam navigation "
+"rules, possibly resulting in a completely different page being rendered."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:166
+#, no-c-format
+msgid ""
+"If <emphasis>all</emphasis> you want to do before rendering the page is "
+"begin a conversation, you could use a built-in action method that does just "
+"that:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:169
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\" action=\"#{conversation.begin}\"/"
+"&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:170
+#, no-c-format
+msgid ""
+"Note that you can also call this built-in action from a JSF control, and, "
+"similarly, you can use <literal>#{conversation.end}</literal> to end "
+"conversations."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:173
+#, no-c-format
+msgid ""
+"If you want more control, to join existing conversations or begin a nested "
+"conversion, to begin a pageflow or an atomic conversation, you should use "
+"the <literal>&lt;begin-conversation&gt;</literal> element."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:176
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\"&gt;\n"
+"       &lt;begin-conversation nested=\"true\" pageflow=\"AddItem\"/&gt;\n"
+"    &lt;page&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:177
+#, no-c-format
+msgid "There is also an <literal>&lt;end-conversation&gt;</literal> element."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:180
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/home.jsp\"&gt;\n"
+"       &lt;end-conversation/&gt;\n"
+"    &lt;page&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:181
+#, no-c-format
+msgid "To solve the first problem, we now have five options:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:186
+#, no-c-format
+msgid ""
+"Annotate the <literal>@Create</literal> method with <literal>@Begin</literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:191
+#, no-c-format
+msgid ""
+"Annotate the <literal>@Factory</literal> method with <literal>@Begin</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:196
+#, no-c-format
+msgid "Annotate the Seam page action method with <literal>@Begin</literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:201
+#, no-c-format
+msgid ""
+"Use <literal>&lt;begin-conversation&gt;</literal> in <literal>pages.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:206
+#, no-c-format
+msgid ""
+"Use <literal>#{conversation.begin}</literal> as the Seam page action method"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:214
+#, no-c-format
+msgid ""
+"Using <literal>&lt;s:link&gt;</literal> and <literal>&lt;s:button&gt;</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:215
+#, no-c-format
+msgid ""
+"JSF command links always perform a form submission via JavaScript, which "
+"breaks the web browser's \"open in new window\" or \"open in new tab\" "
+"feature. In plain JSF, you need to use an <literal>&lt;h:outputLink&gt;</"
+"literal> if you need this functionality. But there are two major limitations "
+"to <literal>&lt;h:outputLink&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:220
+#, no-c-format
+msgid ""
+"JSF provides no way to attach an action listener to an <literal>&lt;h:"
+"outputLink&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:225
+#, no-c-format
+msgid ""
+"JSF does not propagate the selected row of a <literal>DataModel</literal> "
+"since there is no actual form submission."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:230
+#, no-c-format
+msgid ""
+"Seam provides the notion of a <emphasis>page action</emphasis> to help solve "
+"the first problem, but this does nothing to help us with the second problem. "
+"We <emphasis>could</emphasis> work around this by using the RESTful approach "
+"of passing a request parameter and requerying for the selected object on the "
+"server side. In some cases&mdash;such as the Seam blog example "
+"application&mdash;this is indeed the best approach. The RESTful style "
+"supports bookmarking, since it does not require server-side state. In other "
+"cases, where we don't care about bookmarks, the use of <literal>@DataModel</"
+"literal> and <literal>@DataModelSelection</literal> is just so convenient "
+"and transparent!"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:233
+#, no-c-format
+msgid ""
+"To fill in this missing functionality, and to make conversation propagation "
+"even simpler to manage, Seam provides the <literal>&lt;s:link&gt;</literal> "
+"JSF tag."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:236
+#, no-c-format
+msgid "The link may specify just the JSF view id:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:239
+#, no-c-format
+msgid ""
+"&lt;s:link view=&#8220;/login.xhtml&#8221; value=&#8220;Login&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:240
+#, no-c-format
+msgid ""
+"Or, it may specify an action method (in which case the action outcome "
+"determines the page that results):"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:243
+#, no-c-format
+msgid ""
+"&lt;s:link action=&#8220;#{login.logout}&#8221; value=&#8220;Logout&#8221;/"
+"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:244
+#, no-c-format
+msgid ""
+"If you specify <emphasis>both</emphasis> a JSF view id and an action method, "
+"the 'view' will be used <emphasis>unless</emphasis> the action method "
+"returns a non-null outcome:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:247
+#, no-c-format
+msgid ""
+"&lt;s:link view=\"/loggedOut.xhtml\"  action=&#8220;#{login.logout}&#8221; "
+"value=&#8220;Logout&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:248
+#, no-c-format
+msgid ""
+"The link automatically propagates the selected row of a <literal>DataModel</"
+"literal> using inside <literal>&lt;h:dataTable&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:251
+#, no-c-format
+msgid ""
+"&lt;s:link view=&#8220;/hotel.xhtml&#8221; action=&#8220;#{hotelSearch."
+"selectHotel}&#8221; value=&#8220;#{hotel.name}&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:252
+#, no-c-format
+msgid "You can leave the scope of an existing conversation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:255
+#, no-c-format
+msgid ""
+"&lt;s:link view=&#8220;/main.xhtml&#8221; propagation=&#8220;none&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:256
+#, no-c-format
+msgid "You can begin, end, or nest conversations:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:259
+#, no-c-format
+msgid ""
+"&lt;s:link action=&#8220;#{issueEditor.viewComment}&#8221; "
+"propagation=&#8220;nest&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:260
+#, no-c-format
+msgid ""
+"If the link begins a conversation, you can even specify a pageflow to be "
+"used:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:263
+#, no-c-format
+msgid ""
+"&lt;s:link action=&#8220;#{documentEditor.getDocument}&#8221; "
+"propagation=&#8220;begin&#8221; \n"
+"        pageflow=&#8220;EditDocument&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:264
+#, no-c-format
+msgid ""
+"The <literal>taskInstance</literal> attribute if for use in jBPM task lists:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:267
+#, no-c-format
+msgid ""
+"&lt;s:link action=&#8220;#{documentApproval.approveOrReject}&#8221; "
+"taskInstance=&#8220;#{task}&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:268
+#, no-c-format
+msgid "(See the DVD Store demo application for examples of this.)"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:271
+#, no-c-format
+msgid ""
+"Finally, if you need the \"link\" to be rendered as a button, use "
+"<literal>&lt;s:button&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:274
+#, no-c-format
+msgid ""
+"&lt;s:button action=&#8220;#{login.logout}&#8221; value=&#8220;Logout&#8221;/"
+"&gt;"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:278
+#, no-c-format
+msgid "Success messages"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:279
+#, no-c-format
+msgid ""
+"It is quite common to display a message to the user indicating success or "
+"failure of an action. It is convenient to use a JSF <literal>FacesMessage</"
+"literal> for this. Unfortunately, a successful action often requires a "
+"browser redirect, and JSF does not propagate faces messages across "
+"redirects. This makes it quite difficult to display success messages in "
+"plain JSF."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:282
+#, no-c-format
+msgid ""
+"The built in conversation-scoped Seam component named "
+"<literal>facesMessages</literal> solves this problem. (You must have the "
+"Seam redirect filter installed.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:285
+#, no-c-format
+msgid ""
+"@Name(\"editDocumentAction\")\n"
+"@Stateless\n"
+"public class EditDocumentBean implements EditDocument {\n"
+"    @In EntityManager em;\n"
+"    @In Document document;\n"
+"    @In FacesMessages facesMessages;\n"
+"    \n"
+"    public String update() {\n"
+"        em.merge(document);\n"
+"        facesMessages.add(\"Document updated\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:286
+#, no-c-format
+msgid ""
+"Any message added to <literal>facesMessages</literal> is used in the very "
+"next render response phase for the current conversation. This even works "
+"when there is no long-running conversation since Seam preserves even "
+"temporary conversation contexts across redirects."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:289
+#, no-c-format
+msgid "You can even include JSF EL expressions in a faces message summary:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:292
+#, no-c-format
+msgid "facesMessages.add(\"Document #{document.title} was updated\");"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:293
+#, no-c-format
+msgid "You may display the messages in the usual way, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:296
+#, no-c-format
+msgid "&lt;h:messages globalOnly=\"true\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:300
+#, no-c-format
+msgid "Using an \"explicit\" conversation id"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:301
+#, no-c-format
+msgid ""
+"Ordinarily, Seam generates a meaningless unique id for each conversation in "
+"each session. You can customize the id value when you begin the conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:304
+#, no-c-format
+msgid ""
+"This feature can be used to customize the conversation id generation "
+"algorithm like so:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:307
+#, no-c-format
+msgid ""
+"@Begin(id=\"#{myConversationIdGenerator.nextId}\") \n"
+"public void editHotel() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:308
+#, no-c-format
+msgid "Or it can be used to assign a meaningful conversation id:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:311
+#, no-c-format
+msgid ""
+"@Begin(id=\"hotel#{hotel.id}\") \n"
+"public String editHotel() { ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:312
+#, no-c-format
+msgid ""
+"@Begin(id=\"hotel#{hotelsDataModel.rowData.id}\") \n"
+"public String selectHotel() { ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:313
+#, no-c-format
+msgid ""
+"@Begin(id=\"entry#{params['blogId']}\")\n"
+"public String viewBlogEntry() { ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:314
+#, no-c-format
+msgid ""
+"@BeginTask(id=\"task#{taskInstance.id}\") \n"
+"public String approveDocument() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:315
+#, no-c-format
+msgid ""
+"Clearly, these example result in the same conversation id every time a "
+"particular hotel, blog or task is selected. So what happens if a "
+"conversation with the same conversation id already exists when the new "
+"conversation begins? Well, Seam detects the existing conversation and "
+"redirects to that conversation without running the <literal>@Begin</literal> "
+"method again. This feature helps control the number of workspaces that are "
+"created when using workspace management."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:321
+#, no-c-format
+msgid "Workspace management"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:322
+#, no-c-format
+msgid ""
+"Workspace management is the ability to \"switch\" conversations in a single "
+"window. Seam makes workspace management completely transparent at the level "
+"of the Java code. To enable workspace management, all you need to do is:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:327
+#, no-c-format
+msgid ""
+"Provide <emphasis>description</emphasis> text for each view id (when using "
+"JSF or Seam navigation rules) or page node (when using jPDL pageflows). This "
+"description text is displayed to the user by the workspace switchers."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:332
+#, no-c-format
+msgid ""
+"Include one or more of the standard workspace switcher JSP or facelets "
+"fragments in your pages. The standard fragments support workspace management "
+"via a drop down menu, a list of conversations, or breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:335
+#, no-c-format
+msgid ""
+"Please refer to the Seam Issue Tracker demo to see all this functionality in "
+"action!"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:339
+#, no-c-format
+msgid "Workspace management and JSF navigation"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:340
+#, no-c-format
+msgid ""
+"When you use JSF or Seam navigation rules, Seam switches to a conversation "
+"by restoring the current <literal>view-id</literal> for that conversation. "
+"The descriptive text for the workspace is defined in a file called "
+"<literal>pages.xml</literal> that Seam expects to find in the <literal>WEB-"
+"INF</literal> directory, right next to <literal>faces-config.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:343
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/main.xhtml\"&gt;Search hotels: #{hotelBooking."
+"searchString}&lt;/page&gt;\n"
+"    &lt;page view-id=\"/hotel.xhtml\"&gt;View hotel: #{hotel.name}&lt;/"
+"page&gt;\n"
+"    &lt;page view-id=\"/book.xhtml\"&gt;Book hotel: #{hotel.name}&lt;/"
+"page&gt;\n"
+"    &lt;page view-id=\"/confirm.xhtml\"&gt;Confirm: #{booking.description}"
+"&lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:344
+#, no-c-format
+msgid ""
+"Note that if this file is missing, the Seam application will continue to "
+"work perfectly! The only missing functionality will be the ability to switch "
+"workspaces."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:350
+#, no-c-format
+msgid "Workspace management and jPDL pageflow"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:351
+#, no-c-format
+msgid ""
+"When you use a jPDL pageflow definition, Seam switches to a conversation by "
+"restoring the current jBPM process state. This is a more flexible model "
+"since it allows the same <literal>view-id</literal> to have different "
+"descriptions depending upon the current <literal>&lt;page&gt;</literal> "
+"node. The description text is defined by the <literal>&lt;page&gt;</literal> "
+"node:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:354
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"shopping\"&gt;\n"
+"\n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"browse\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;page name=\"browse\" view-id=\"/browse.xhtml\"&gt;\n"
+"      &lt;description&gt;DVD Search: #{search.searchPattern}&lt;/"
+"description&gt;\n"
+"      &lt;transition to=\"browse\"/&gt;\n"
+"      &lt;transition name=\"checkout\" to=\"checkout\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"checkout\" view-id=\"/checkout.xhtml\"&gt;\n"
+"      &lt;description&gt;Purchase: &#36;#{cart.total}&lt;/description&gt;\n"
+"      &lt;transition to=\"checkout\"/&gt;\n"
+"      &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"complete\" view-id=\"/complete.xhtml\"&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:358
+#, no-c-format
+msgid "The conversation switcher"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:359
+#, no-c-format
+msgid ""
+"Include the following fragment in your JSP or facelets page to get a drop-"
+"down menu that lets you switch to any current conversation, or to any other "
+"page of the application:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:362
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{switcher.conversationIdOrOutcome}\"&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Find Issues\" itemValue=\"findIssue\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Create Issue\" itemValue=\"editIssue\"/"
+"&gt;\n"
+"    &lt;f:selectItems value=\"#{switcher.selectItems}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{switcher.select}\" value=\"Switch\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:363
+#, no-c-format
+msgid ""
+"In this example, we have a menu that includes an item for each conversation, "
+"together with two additional items that let the user begin a new "
+"conversation."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:377
+#, no-c-format
+msgid "The conversation list"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:378
+#, no-c-format
+msgid ""
+"The conversation list is very similar to the conversation switcher, except "
+"that it is displayed as a table:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:381
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{conversationList}\" var=\"entry\"\n"
+"        rendered=\"#{not empty conversationList}\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Workspace&lt;/f:facet&gt;\n"
+"        &lt;h:commandLink action=\"#{entry.select}\" value=\"#{entry."
+"description}\"/&gt;\n"
+"        &lt;h:outputText value=\"[current]\" rendered=\"#{entry.current}\"/"
+"&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Activity&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{entry.startDatetime}\"&gt;\n"
+"            &lt;f:convertDateTime type=\"time\" pattern=\"hh:mm a\"/&gt;\n"
+"        &lt;/h:outputText&gt;\n"
+"        &lt;h:outputText value=\" - \"/&gt;\n"
+"        &lt;h:outputText value=\"#{entry.lastDatetime}\"&gt;\n"
+"            &lt;f:convertDateTime type=\"time\" pattern=\"hh:mm a\"/&gt;\n"
+"        &lt;/h:outputText&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"        &lt;h:commandButton action=\"#{entry.select}\" value=\"#{msg.Switch}"
+"\"/&gt;\n"
+"        &lt;h:commandButton action=\"#{entry.destroy}\" value=\"#{msg."
+"Destroy}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:382
+#, no-c-format
+msgid ""
+"We imagine that you will want to customize this for your own application."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:393
+#, no-c-format
+msgid ""
+"The conversation list is nice, but it takes up a lot of space on the page, "
+"so you probably don't want to put it on <emphasis>every</emphasis> page."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:396
+#, no-c-format
+msgid "Notice that the conversation list lets the user destroy workspaces."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:402
+#, no-c-format
+msgid "Breadcrumbs"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:403
+#, no-c-format
+msgid ""
+"Breadcrumbs are useful in applications which use a nested conversation "
+"model. The breadcrumbs are a list of links to conversations in the current "
+"conversation stack:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:406
+#, no-c-format
+msgid ""
+"&lt;t:dataList value=\"#{conversationStack}\" var=\"entry\"&gt;\n"
+"    &lt;h:outputText value=\" | \"/&gt; \n"
+"    &lt;h:commandLink value=\"#{entry.description}\" action=\"#{entry.select}"
+"\"/&gt;\n"
+"&lt;/t:dataList&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:407
+#, no-c-format
+msgid ""
+"Notice that here we are using the MyFaces <literal>&lt;t:dataList&gt;</"
+"literal> component, since JSF amazingly does not provide any standard "
+"component for looping."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:424
+#, no-c-format
+msgid "Conversational components and JSF component bindings"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:425
+#, no-c-format
+msgid ""
+"Conversational components have one minor limitation: they cannot be used to "
+"hold bindings to JSF components. (We generally prefer not to use this "
+"feature of JSF unless absolutely necessary, since it creates a hard "
+"dependency from application logic to the view.) On a postback request, "
+"component bindings are updated during the Restore View phase, before the "
+"Seam conversation context has been restored."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:428
+#, no-c-format
+msgid ""
+"To work around this use an event scoped component to store the component "
+"bindings and inject it into the conversation scoped component that requires "
+"it."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:431
+#, no-c-format
+msgid ""
+"@Name(\"grid\")\n"
+"@Scope(ScopeType.EVENT)\n"
+"public class Grid\n"
+"{\n"
+"    private HtmlPanelGrid htmlPanelGrid;\n"
+"\n"
+"    // getters and setters\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:432
+#, no-c-format
+msgid ""
+"@Name(\"gridEditor\")\n"
+"@Scope(ScopeType.CONVERSATION)\n"
+"public class GridEditor\n"
+"{\n"
+"    @In(required=false)\n"
+"    private Grid grid;\n"
+"    \n"
+"    ...\n"
+"}"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Drools.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Drools.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Drools.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,281 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Drools.xml:10
+#, no-c-format
+msgid "Seam and JBoss Rules"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:11
+#, no-c-format
+msgid ""
+"Seam makes it easy to call JBoss Rules (Drools) rulebases from Seam "
+"components or jBPM process definitions."
+msgstr ""
+
+#. Tag: title
+#: Drools.xml:15
+#, no-c-format
+msgid "Installing rules"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:16
+#, no-c-format
+msgid ""
+"The first step is to make an instance of <literal>org.drools.RuleBase</"
+"literal> available in a Seam context variable. In most rules-driven "
+"applications, rules need to be dynamically deployable, so you will need to "
+"implement some solution that allows you to deploy rules and make them "
+"available to Seam (a future release of Drools will provide a Rule Server "
+"that solves this problem). For testing purposes, Seam provides a built-in "
+"component that compiles a static set of rules from the classpath. You can "
+"install this component via <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:19
+#, no-c-format
+msgid ""
+"&lt;drools:rule-base name=\"policyPricingRules\"&gt;\n"
+"    &lt;drools:rule-files&gt;\n"
+"        &lt;value&gt;policyPricingRules&lt;/value&gt;\n"
+"    &lt;/drools:rule-files&gt;\n"
+"&lt;/drools:rule-base&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:20
+#, no-c-format
+msgid ""
+"This component compiles rules from a set of <literal>.drl</literal> files "
+"and caches an instance of <literal>org.drools.RuleBase</literal> in the Seam "
+"<literal>APPLICATION</literal> context. Note that it is quite likely that "
+"you will need to install multiple rule bases in a rule-driven application."
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:23
+#, no-c-format
+msgid ""
+"If you want to use a Drools DSL, you alse need to specify the DSL definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:26
+#, no-c-format
+msgid ""
+"&lt;drools:rule-base name=\"policyPricingRules\" dsl-file=\"policyPricing.dsl"
+"\"&gt;\n"
+"    &lt;drools:rule-files&gt;\n"
+"        &lt;value&gt;policyPricingRules&lt;/value&gt;\n"
+"    &lt;/drools:rule-files&gt;\n"
+"&lt;/drools:rule-base&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:27
+#, no-c-format
+msgid ""
+"Next, we need to make an instance of <literal>org.drools.WorkingMemory</"
+"literal> available to each conversation. (Each <literal>WorkingMemory</"
+"literal> accumulates facts relating to the current conversation.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:30
+#, no-c-format
+msgid ""
+"&lt;drools:managed-working-memory name=\"policyPricingWorkingMemory\" auto-"
+"create=\"true\" rule-base=\"#{policyPricingRules}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:31
+#, no-c-format
+msgid ""
+"Notice that we gave the <literal>policyPricingWorkingMemory</literal> a "
+"reference back to our rule base via the <literal>ruleBase</literal> "
+"configuration property."
+msgstr ""
+
+#. Tag: title
+#: Drools.xml:37
+#, no-c-format
+msgid "Using rules from a Seam component"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:38
+#, no-c-format
+msgid ""
+"We can now inject our <literal>WorkingMemory</literal> into any Seam "
+"component, assert facts, and fire rules:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:41
+#, no-c-format
+msgid ""
+"@In WorkingMemory policyPricingWorkingMemory;\n"
+"\n"
+"@In Policy policy;\n"
+"@In Customer customer;\n"
+"\n"
+"public void pricePolicy() throws FactException\n"
+"{\n"
+"    policyPricingWorkingMemory.assertObject(policy);\n"
+"    policyPricingWorkingMemory.assertObject(customer);\n"
+"    policyPricingWorkingMemory.fireAllRules();\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Drools.xml:45
+#, no-c-format
+msgid "Using rules from a jBPM process definition"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:46
+#, no-c-format
+msgid ""
+"You can even allow a rule base to act as a jBPM action handler, decision "
+"handler, or assignment handler&mdash;in either a pageflow or business "
+"process definition."
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:49
+#, no-c-format
+msgid ""
+"&lt;decision name=\"approval\"&gt;\n"
+"         \n"
+"    &lt;handler class=\"org.jboss.seam.drools.DroolsDecisionHandler\"&gt;\n"
+"        &lt;workingMemoryName&gt;orderApprovalRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"        &lt;assertObjects&gt;\n"
+"            &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"            &lt;element&gt;#{order}&lt;/element&gt;\n"
+"            &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"        &lt;/assertObjects&gt;\n"
+"    &lt;/handler&gt;\n"
+"    \n"
+"    &lt;transition name=\"approved\" to=\"ship\"&gt;\n"
+"        &lt;action class=\"org.jboss.seam.drools.DroolsActionHandler\"&gt;\n"
+"            &lt;workingMemoryName&gt;shippingRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"            &lt;assertObjects&gt;\n"
+"                &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"            &lt;/assertObjects&gt;\n"
+"        &lt;/action&gt;\n"
+"    &lt;/transition&gt;\n"
+"    \n"
+"    &lt;transition name=\"rejected\" to=\"cancelled\"/&gt;\n"
+"    \n"
+"&lt;/decision&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:50
+#, no-c-format
+msgid ""
+"The <literal>&lt;assertObjects&gt;</literal> element specifies EL "
+"expressions that return an object or collection of objects to be asserted as "
+"facts into the <literal>WorkingMemory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:53
+#, no-c-format
+msgid "There is also support for using Drools for jBPM task assignments:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:56
+#, no-c-format
+msgid ""
+"&lt;task-node name=\"review\"&gt;\n"
+"    &lt;task name=\"review\" description=\"Review Order\"&gt;\n"
+"        &lt;assignment handler=\"org.jboss.seam.drools."
+"DroolsAssignmentHandler\"&gt;\n"
+"            &lt;workingMemoryName&gt;orderApprovalRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"            &lt;assertObjects&gt;\n"
+"                &lt;element&gt;#{actor}&lt;/element&gt;\n"
+"                &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"            &lt;/assertObjects&gt;\n"
+"        &lt;/assignment&gt;\n"
+"    &lt;/task&gt;\n"
+"    &lt;transition name=\"rejected\" to=\"cancelled\"/&gt;\n"
+"    &lt;transition name=\"approved\" to=\"approved\"/&gt;\n"
+"&lt;/task-node&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:57
+#, no-c-format
+msgid ""
+"Certain objects are available to the rules as Drools globals, namely the "
+"jBPM <literal>Assignable</literal>, as <literal>assignable</literal> and a "
+"Seam <literal>Decision</literal> object, as <literal>decision</literal>. "
+"Rules which handle decisions should call <literal>decision.setOutcome"
+"(\"result\")</literal> to determine the result of the decision. Rules which "
+"perform assignments should set the actor id using the <literal>Assignable</"
+"literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:60
+#, no-c-format
+msgid ""
+"package org.jboss.seam.examples.shop\n"
+"\n"
+"import org.jboss.seam.drools.Decision\n"
+"\n"
+"global Decision decision\n"
+"\n"
+"rule \"Approve Order For Loyal Customer\"\n"
+"  when\n"
+"    Customer( loyaltyStatus == \"GOLD\" )\n"
+"    Order( totalAmount &lt;= 10000 )\n"
+"  then\n"
+"    decision.setOutcome(\"approved\");\n"
+"end"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:61
+#, no-c-format
+msgid ""
+"package org.jboss.seam.examples.shop\n"
+"\n"
+"import org.jbpm.taskmgmt.exe.Assignable\n"
+"\n"
+"global Assignable assignable\n"
+"\n"
+"rule \"Assign Review For Small Order\"\n"
+"  when\n"
+"    Order( totalAmount &lt;= 100 )\n"
+"  then\n"
+"    assignable.setPooledActors( new String[] {\"reviewers\"} );\n"
+"end"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Elenhancements.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Elenhancements.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Elenhancements.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,221 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Elenhancements.xml:10
+#, no-c-format
+msgid "Expression language enhancements"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:11
+#, no-c-format
+msgid ""
+"The standard Unified Expression Language (EL) assumes that any parameters to "
+"a method expression will be provided by Java code. This means that a method "
+"with parameters cannot be used as a JSF method binding. Seam provides an "
+"enhancement to the EL that allows parameters to be included in a method "
+"expression itself. This applies to <emphasis>any</emphasis> Seam method "
+"expression, including any JSF method binding, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:14
+#, no-c-format
+msgid ""
+"&lt;s:commandButton action=\"#{hotelBooking.bookHotel(hotel)}\" value=\"Book "
+"Hotel\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:16
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:17
+#, no-c-format
+msgid ""
+"To use this feature in Facelets, you will need to declare a special view "
+"handler, <literal>SeamFaceletViewHandler</literal> in <literal>faces-config."
+"xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:20
+#, no-c-format
+msgid ""
+"&lt;faces-config&gt;\n"
+"    &lt;application&gt;\n"
+"        &lt;view-handler&gt;org.jboss.seam.ui.facelet."
+"SeamFaceletViewHandler&lt;/view-handler&gt;\n"
+"    &lt;/application&gt;\n"
+"&lt;/faces-config&gt;"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:24
+#, no-c-format
+msgid "Usage"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:25
+#, no-c-format
+msgid "Parameters are surrounded by parentheses, and separated by commas:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:28
+#, no-c-format
+msgid ""
+"&lt;h:commandButton action=\"#{hotelBooking.bookHotel(hotel, user)}\" value="
+"\"Book Hotel\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:29
+#, no-c-format
+msgid ""
+"The parameters <literal>hotel</literal> and <literal>user</literal> will be "
+"evaluated as value expressions and passed to the <literal>bookHotel()</"
+"literal> method of the component. This gives you an alternative to the use "
+"of <literal>@In</literal>."
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:32
+#, no-c-format
+msgid "Any value expression may be used as a parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:35
+#, no-c-format
+msgid ""
+"&lt;h:commandButton action=\"#{hotelBooking.bookHotel(hotel.id, user."
+"username)}\" value=\"Book Hotel\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:36
+#, no-c-format
+msgid "You may even pass literal strings using single or double quotes:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:39
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=&#8221;#{printer.println( &#8216;Hello world!"
+"&#8217; )}&#8221; value=&#8221;Hello&#8221;/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:40
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=&#8217;#{printer.println( &#8220;Hello "
+"again&#8221; )}&#8217; value=&#8217;Hello&#8217;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:41
+#, no-c-format
+msgid ""
+"You might even want to use this notation for all your action methods, even "
+"when you don&#8217;t have parameters to pass. This improves readability by "
+"making it clear that the expression is a method expression and not a value "
+"expression:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:44
+#, no-c-format
+msgid "&lt;s:link value=\"Cancel\" action=\"#{hotelBooking.cancel()}\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:48
+#, no-c-format
+msgid "Limitations"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:49
+#, no-c-format
+msgid "Please be aware of the following limitations:"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:53
+#, no-c-format
+msgid "Incompatibility with JSP 2.1"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:54
+#, no-c-format
+msgid ""
+"This extension is not currently compatible with JSP 2.1. So if you want to "
+"use this extension with JSF 1.2, you will need to use Facelets. The "
+"extension works correctly with JSP 2.0."
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:60
+#, no-c-format
+msgid "Calling a <literal>MethodExpression</literal> from Java code"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:61
+#, no-c-format
+msgid ""
+"Normally, when a <literal>MethodExpression</literal> or "
+"<literal>MethodBinding</literal> is created, the parameter types are passed "
+"in by JSF. In the case of a method binding, JSF assumes that there are no "
+"parameters to pass. With this extension, we can&#8217;t know the parameter "
+"types until after the expression has been evaluated. This has two minor "
+"consequences:"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:66
+#, no-c-format
+msgid ""
+"When you invoke a <literal>MethodExpression</literal> in Java code, "
+"parameters you pass may be ignored. Parameters defined in the expression "
+"will take precedence."
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:71
+#, no-c-format
+msgid ""
+"Ordinarily, it is safe to call <literal>methodExpression.getMethodInfo()."
+"getParamTypes()</literal> at any time. For an expression with parameters, "
+"you must first invoke the <literal>MethodExpression</literal> before calling "
+"<literal>getParamTypes()</literal>."
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:76
+#, no-c-format
+msgid ""
+"Both of these cases are exceedingly rare and only apply when you want to "
+"invoke the <literal>MethodExpression</literal> by hand in Java code."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Events.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Events.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Events.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1430 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Events.xml:10
+#, no-c-format
+msgid "Events, interceptors and exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:11
+#, no-c-format
+msgid ""
+"Complementing the contextual component model, there are two further basic "
+"concepts that facilitate the extreme loose-coupling that is the distinctive "
+"feature of Seam applications. The first is a strong event model where events "
+"may be mapped to event listeners via JSF-like method binding expressions. "
+"The second is the pervasive use of annotations and interceptors to apply "
+"cross-cutting concerns to components which implement business logic."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:14
+#, no-c-format
+msgid "Seam events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:15
+#, no-c-format
+msgid ""
+"The Seam component model was developed for use with <emphasis>event-driven "
+"applications</emphasis>, specifically to enable the development of fine-"
+"grained, loosely-coupled components in a fine-grained eventing model. Events "
+"in Seam come in several types, most of which we have already seen:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:20
+#, no-c-format
+msgid "JSF events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:25
+#, no-c-format
+msgid "jBPM transition events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:30
+#, no-c-format
+msgid "Seam page actions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:35
+#, no-c-format
+msgid "Seam component-driven events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:40
+#, no-c-format
+msgid "Seam contextual events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:45
+#, no-c-format
+msgid ""
+"All of these various kinds of events are mapped to Seam components via JSF "
+"EL method binding expressions. For a JSF event, this is defined in the JSF "
+"template:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:48
+#, no-c-format
+msgid ""
+"&lt;h:commandButton value=\"Click me!\" action=\"#{helloWorld.sayHello}\"/"
+"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:49
+#, no-c-format
+msgid ""
+"For a jBPM transition event, it is specified in the jBPM process definition "
+"or pageflow definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:52
+#, no-c-format
+msgid ""
+"&lt;start-page name=\"hello\" view-id=\"/hello.jsp\"&gt;\n"
+"    &lt;transition to=\"hello\"&gt;\n"
+"        &lt;action expression=\"#{helloWorld.sayHello}\"/&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/start-page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:53
+#, no-c-format
+msgid ""
+"You can find out more information about JSF events and jBPM events "
+"elsewhere. Lets concentrate for now upon the two additional kinds of events "
+"defined by Seam."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:56
+#, no-c-format
+msgid "Page actions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:57
+#, no-c-format
+msgid ""
+"A Seam page action is an event that occurs just before we render a page. We "
+"declare page actions in <literal>WEB-INF/pages.xml</literal>. We can define "
+"a page action for either a particular JSF view id:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:60
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\" action=\"#{helloWorld.sayHello}\"/&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:61
+#, no-c-format
+msgid ""
+"Or we can use a wildcard to specify an action that applies to all view ids "
+"that match the pattern:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:64
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello/*\" action=\"#{helloWorld.sayHello}\"/&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:65
+#, no-c-format
+msgid ""
+"If multiple wildcarded page actions match the current view-id, Seam will "
+"call all the actions, in order of least-specific to most-specific."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:68
+#, no-c-format
+msgid ""
+"The page action method can return a JSF outcome. If the outcome is non-null, "
+"Seam will delegate to the defined JSFadn Seam navigation rules and a "
+"different view may end up being rendered."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:71
+#, no-c-format
+msgid ""
+"Furthermore, the view id mentioned in the <literal>&lt;page&gt;</literal> "
+"element need not correspond to a real JSP or Facelets page! So, we can "
+"reproduce the functionality of a traditional action-oriented framework like "
+"Struts or WebWork using page actions. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:74
+#, no-c-format
+msgid "TODO: translate struts action into page action"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:75
+#, no-c-format
+msgid ""
+"This is quite useful if you want to do complex things in response to non-"
+"faces requests (for example, HTTP GET requests)."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:78
+#, no-c-format
+msgid "Page parameters"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:79
+#, no-c-format
+msgid ""
+"A JSF faces request (a form submission) encapsulates both an \"action\" (a "
+"method binding) and \"parameters\" (input value bindings). A page action "
+"might also needs parameters!"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:82
+#, no-c-format
+msgid ""
+"Since GET requests are bookmarkable, page parameters are passed as human-"
+"readable request parameters. (Unlike JSF form inputs, which are anything "
+"but!)"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:85
+#, no-c-format
+msgid ""
+"Seam lets us provide a value binding that maps a named request parameter to "
+"an attribute of a model object."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:88
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\" action=\"#{helloWorld.sayHello}\"&gt;\n"
+"        &lt;param name=\"firstName\" value=\"#{person.firstName}\"/&gt;\n"
+"        &lt;param name=\"lastName\" value=\"#{person.lastName}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:89
+#, no-c-format
+msgid ""
+"The <literal>&lt;param&gt;</literal> declaration is bidirectional, just like "
+"a value binding for a JSF input:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:94
+#, no-c-format
+msgid ""
+"When a non-faces (GET) request for the view id occurs, Seam sets the value "
+"of the named request parameter onto the model object, after performing "
+"appropriate type conversions."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:99
+#, no-c-format
+msgid ""
+"Any <literal>&lt;s:link&gt;</literal> or <literal>&lt;s:button&gt;</literal> "
+"transparently includes the request parameter. The value of the parameter is "
+"determined by evaluating the value binding during the render phase (when the "
+"<literal>&lt;s:link&gt;</literal> is rendered)."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:104
+#, no-c-format
+msgid ""
+"Any navigation rule with a <literal>&lt;redirect/&gt;</literal> to the view "
+"id transparently includes the request parameter. The value of the parameter "
+"is determined by evaluating the value binding at the end of the invoke "
+"application phase."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:109
+#, no-c-format
+msgid ""
+"The value is transparently propagated with any JSF form submission for the "
+"page with the given view id. (This means that view parameters behave like "
+"<literal>PAGE</literal>-scoped context variables for faces requests."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:114
+#, no-c-format
+msgid ""
+"The essential idea behind all this is that <emphasis>however</emphasis> we "
+"get from any other page to <literal>/hello.jsp</literal> (or from <literal>/"
+"hello.jsp</literal> back to <literal>/hello.jsp</literal>), the value of the "
+"model attribute referred to in the value binding is \"remembered\", without "
+"the need for a conversation (or other server-side state)."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:117
+#, no-c-format
+msgid ""
+"This all sounds pretty complex, and you're probably wondering if such an "
+"exotic construct is really worth the effort. Actually, the idea is very "
+"natural once you \"get it\". It is definitely worth taking the time to "
+"understand this stuff. Page parameters are the most elegant way to propagate "
+"state across a non-faces request. They are especially cool for problems like "
+"search screens with bookmarkable results pages, where we would like to be "
+"able to write our application code to handle both POST and GET requests with "
+"the same code. Page parameters eliminate repetitive listing of request "
+"parameters in the view definition and make redirects much easier to code."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:120
+#, no-c-format
+msgid ""
+"Note that you don't need an actual page action method binding to use a page "
+"parameter. The following is perfectly valid:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:123
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\"&gt;\n"
+"        &lt;param name=\"firstName\" value=\"#{person.firstName}\"/&gt;\n"
+"        &lt;param name=\"lastName\" value=\"#{person.lastName}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:124
+#, no-c-format
+msgid "You can even specify a JSF converter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:127
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/calculator.jsp\" action=\"#{calculator.calculate}"
+"\"&gt;\n"
+"        &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"        &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"        &lt;param name=\"op\" converterId=\"com.my.calculator."
+"OperatorConverter\" value=\"#{calculator.op}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:128
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/calculator.jsp\" action=\"#{calculator.calculate}"
+"\"&gt;\n"
+"        &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"        &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"        &lt;param name=\"op\" converter=\"#{operatorConverter}\" value=\"#"
+"{calculator.op}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:129
+#, no-c-format
+msgid "Navigation"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:130
+#, no-c-format
+msgid ""
+"You can use standard JSF navigation rules defined in <literal>faces-config."
+"xml</literal> in a Seam application. However, JSF navigation rules have a "
+"number of annoying limitations:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:135
+#, no-c-format
+msgid ""
+"It is not possible to specify request parameters to be used when redirecting."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:140
+#, no-c-format
+msgid "It is not possible to begin or end conversations from a rule."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:145
+#, no-c-format
+msgid ""
+"Rules work by evaluating the return value of the action method; it is not "
+"possible to evaluate an arbitrary EL expression."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:150
+#, no-c-format
+msgid ""
+"A further problem is that \"orchestration\" logic gets scattered between "
+"<literal>pages.xml</literal> and <literal>faces-config.xml</literal>. It's "
+"better to unify this logic into <literal>pages.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:153
+#, no-c-format
+msgid "This JSF navigation rule:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:156
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"    &lt;from-view-id&gt;/editDocument.xhtml&lt;/from-view-id&gt;\n"
+"    \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-action&gt;#{documentEditor.update}&lt;/from-action&gt;\n"
+"        &lt;from-outcome&gt;success&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/viewDocument.xhtml&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"    \n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:157
+#, no-c-format
+msgid "Can be rewritten as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:160
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if-outcome=\"success\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:161
+#, no-c-format
+msgid ""
+"But it would be even nicer if we didn't have to pollute our "
+"<literal>DocumentEditor</literal> component with string-valued return values "
+"(the JSF outcomes). So Seam lets us write:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:164
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\" \n"
+"                   evaluate=\"#{documentEditor.errors.size}\"&gt;\n"
+"        &lt;rule if-outcome=\"0\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:165
+#, no-c-format
+msgid "Or even:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:168
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:169
+#, no-c-format
+msgid ""
+"The first form evaluates a value binding to determine the outcome value to "
+"be used by the subsequent rules. The second approach ignores the outcome and "
+"evaluates a value binding for each possible rule."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:172
+#, no-c-format
+msgid ""
+"Of course, when an update succeeds, we probably want to end the current "
+"conversation. We can do that like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:175
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:176
+#, no-c-format
+msgid ""
+"But ending the conversation loses any state associated with the "
+"conversation, including the document we are currently interested in! One "
+"solution would be to use an immediate render instead of a redirect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:179
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:180
+#, no-c-format
+msgid ""
+"But the correct solution is to pass the document id as a request parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:183
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"&gt;\n"
+"                &lt;param name=\"documentId\" value=\"#{documentEditor."
+"documentId}\"/&gt;\n"
+"            &lt;/redirect&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:184
+#, no-c-format
+msgid ""
+"Null outcomes are a special case in JSF. The null outcome is interpreted to "
+"mean \"redisplay the page\". The following navigation rule matches any non-"
+"null outcome, but <emphasis>not</emphasis> the null outcome:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:187
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule&gt;\n"
+"            &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:188
+#, no-c-format
+msgid ""
+"If you want to perform navigation when a null outcome occurs, use the "
+"following form instead:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:191
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:192
+#, no-c-format
+msgid ""
+"Fine-grained files for definition of navigation, page actions and parameters"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:193
+#, no-c-format
+msgid ""
+"If you have a lot of different page actions and page parameters, or even "
+"just a lot of navigation rules, you will almost certainly want to split the "
+"declarations up over multiple files. You can define actions and parameters "
+"for a page with the view id <literal>/calc/calculator.jsp</literal> in a "
+"resource named <literal>calc/calculator.page.xml</literal>. The root element "
+"in this case is the <literal>&lt;page&gt;</literal> element, and the view id "
+"is implied:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:196
+#, no-c-format
+msgid ""
+"&lt;page action=\"#{calculator.calculate}\"&gt;\n"
+"    &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"    &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"    &lt;param name=\"op\" converter=\"#{operatorConverter}\" value=\"#"
+"{calculator.op}\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:197
+#, no-c-format
+msgid "Component-driven events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:198
+#, no-c-format
+msgid ""
+"Seam components can interact by simply calling each others methods. Stateful "
+"components may even implement the observer/observable pattern. But to enable "
+"components to interact in a more loosely-coupled fashion than is possible "
+"when the components call each others methods directly, Seam provides "
+"<emphasis>component-driven events</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:201
+#, no-c-format
+msgid ""
+"We specify event listeners (observers) in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:204
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;event type=\"hello\"&gt;\n"
+"        &lt;action expression=\"#{helloListener.sayHelloBack}\"/&gt;\n"
+"        &lt;action expression=\"#{logger.logHello}\"/&gt;\n"
+"    &lt;/event&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:205
+#, no-c-format
+msgid "Where the <emphasis>event type</emphasis> is just an arbitrary string."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:208
+#, no-c-format
+msgid ""
+"When an event occurs, the actions registered for that event will be called "
+"in the order they appear in <literal>components.xml</literal>. How does a "
+"component raise an event? Seam provides a built-in component for this."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:211
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World!\");\n"
+"        Events.instance().raiseEvent(\"hello\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:212
+#, no-c-format
+msgid "Or you can use an annotation."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:215
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    @RaiseEvent(\"hello\")\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World!\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:216
+#, no-c-format
+msgid ""
+"Notice that this event producer has no dependency upon event consumers. The "
+"event listener may now be implemented with absolutely no dependency upon the "
+"producer:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:219
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    public void sayHelloBack() {\n"
+"        FacesMessages.instance().add(\"Hello to you too!\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:220
+#, no-c-format
+msgid ""
+"The method binding defined in <literal>components.xml</literal> above takes "
+"care of mapping the event to the consumer. If you don't like futzing about "
+"in the <literal>components.xml</literal> file, you can use an annotation "
+"instead:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:223
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    @Observer(\"hello\")\n"
+"    public void sayHelloBack() {\n"
+"        FacesMessages.instance().add(\"Hello to you too!\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:224
+#, no-c-format
+msgid ""
+"You might wonder why I've not mentioned anything about event objects in this "
+"discussion. In Seam, there is no need for an event object to propagate state "
+"between event producer and listener. State is held in the Seam contexts, and "
+"is shared between components. However, if you really want to pass an event "
+"object, you can:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:227
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    private String name;\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World, my name is #0.\", "
+"name);\n"
+"        Events.instance().raiseEvent(\"hello\", name);\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:228
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    @Observer(\"hello\")\n"
+"    public void sayHelloBack(String name) {\n"
+"        FacesMessages.instance().add(\"Hello #0!\", name);\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:229
+#, no-c-format
+msgid "Contextual events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:230
+#, no-c-format
+msgid ""
+"Seam defines a number of built-in events that the application can use to "
+"perform special kinds of framework integration. The events are:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:235
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preSetVariable.&lt;name&gt;</literal> &mdash; called "
+"when the context variable &lt;name&gt; is set"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:240
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postSetVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is set"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:245
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preRemoveVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is unset"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:250
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postRemoveVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is unset"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:255
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preDestroyContext.&lt;SCOPE&gt;</literal> &mdash; "
+"called before the &lt;SCOPE&gt; context is destroyed"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:260
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postDestroyContext.&lt;SCOPE&gt;</literal> &mdash; "
+"called after the &lt;SCOPE&gt; context is destroyed"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:265
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beginConversation </literal>&mdash; called whenever "
+"a long-running conversation begins"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:270
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endConversation </literal>&mdash; called whenever a "
+"long-running conversation ends"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:275
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beginPageflow.&lt;name&gt; </literal>&mdash; called "
+"when the pageflow &lt;name&gt; begins"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:280
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endPageflow.&lt;name&gt; </literal>&mdash; called "
+"when the pageflow &lt;name&gt; ends"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:285
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.createProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; is created"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:290
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; ends"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:295
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.initProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; is associated with the conversation"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:300
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.initTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is associated with the conversation"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:305
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.startTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is started"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:310
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is ended"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:315
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postCreate.&lt;name&gt; </literal>&mdash; called "
+"when the component &lt;name&gt; is created"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:320
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preDestroy.&lt;name&gt; </literal>&mdash; called "
+"when the component &lt;name&gt; is destroyed"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:325
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beforePhase </literal>&mdash; called before the "
+"start of a JSF phase"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:330
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.afterPhase </literal>&mdash; called after the end of "
+"a JSF phase"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:335
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postAuthenticate.&lt;name&gt; </literal>&mdash; "
+"called after a user is authenticated"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:340
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preAuthenticate.&lt;name&gt; </literal>&mdash; "
+"called before attempting to authenticate a user"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:345
+#, no-c-format
+msgid ""
+"Seam components may observe any of these events in just the same way they "
+"observe any other component-driven events."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:348
+#, no-c-format
+msgid "Seam interceptors"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:349
+#, no-c-format
+msgid ""
+"EJB 3.0 introduced a standard interceptor model for session bean components. "
+"To add an interceptor to a bean, you need to write a class with a method "
+"annotated <literal>@AroundInvoke</literal> and annotate the bean with an "
+"<literal>@Interceptors</literal> annotation that specifies the name of the "
+"interceptor class. For example, the following interceptor checks that the "
+"user is logged in before allowing invoking an action listener method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:352
+#, no-c-format
+msgid ""
+"public class LoggedInInterceptor {\n"
+"\n"
+"   @AroundInvoke\n"
+"   public Object checkLoggedIn(InvocationContext invocation) throws "
+"Exception {\n"
+"   \n"
+"      boolean isLoggedIn = Contexts.getSessionContext().get(\"loggedIn\")!"
+"=null;\n"
+"      if (isLoggedIn) {\n"
+"         //the user is already logged in\n"
+"         return invocation.proceed();\n"
+"      }\n"
+"      else {\n"
+"         //the user is not logged in, fwd to login page\n"
+"         return \"login\";\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:353
+#, no-c-format
+msgid ""
+"To apply this interceptor to a session bean which acts as an action "
+"listener, we must annotate the session bean <literal>@Interceptors"
+"(LoggedInInterceptor.class)</literal>. This is a somewhat ugly annotation. "
+"Seam builds upon the interceptor framework in EJB3 by allowing you to use "
+"<literal>@Interceptors</literal> as a meta-annotation. In our example, we "
+"would create an <literal>@LoggedIn</literal> annotation, as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:356
+#, no-c-format
+msgid ""
+"@Target(TYPE)\n"
+"@Retention(RUNTIME)\n"
+"@Interceptors(LoggedInInterceptor.class)\n"
+"public @interface LoggedIn {}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:357
+#, no-c-format
+msgid ""
+"We can now simply annotate our action listener bean with <literal>@LoggedIn</"
+"literal> to apply the interceptor."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:360
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"changePasswordAction\")\n"
+"@LoggedIn\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class ChangePasswordAction implements ChangePassword { \n"
+"    \n"
+"    ...\n"
+"    \n"
+"    public String changePassword() { ... }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:361
+#, no-c-format
+msgid ""
+"If interceptor ordering is important (it usually is), you can add "
+"<literal>@Interceptor</literal> annotations to your interceptor classes to "
+"specify a partial order of interceptors."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:364
+#, no-c-format
+msgid ""
+"@Interceptor(around={BijectionInterceptor.class,\n"
+"                     ValidationInterceptor.class,\n"
+"                     ConversationInterceptor.class},\n"
+"             within=RemoveInterceptor.class)\n"
+"public class LoggedInInterceptor\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:365
+#, no-c-format
+msgid ""
+"You can even have a \"client-side\" interceptor, that runs around any of the "
+"built-in functionality of EJB3:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:368
+#, no-c-format
+msgid ""
+"@Interceptor(type=CLIENT)\n"
+"public class LoggedInInterceptor\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:369
+#, no-c-format
+msgid ""
+"EJB interceptors are stateful, with a lifecycle that is the same as the "
+"component they intercept. For interceptors which do not need to maintain "
+"state, Seam lets you get a performance optimization by specifying "
+"<literal>@Interceptor(stateless=true)</literal>."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:372
+#, no-c-format
+msgid ""
+"Much of the functionality of Seam is implemented as a set of built-in Seam "
+"interceptors, including the interceptors named in the previous example. You "
+"don't have to explicitly specify these interceptors by annotating your "
+"components; they exist for all interceptable Seam components."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:375
+#, no-c-format
+msgid ""
+"You can even use Seam interceptors with JavaBean components, not just EJB3 "
+"beans!"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:378
+#, no-c-format
+msgid ""
+"EJB defines interception not only for business methods (using "
+"<literal>@AroundInvoke</literal>), but also for the lifecycle methods "
+"<literal>@PostConstruct</literal>, <literal>@PreDestroy</literal>, "
+"<literal>@PrePassivate</literal> and <literal>@PostActive</literal>. Seam "
+"supports all these lifecycle methods on both component and interceptor not "
+"only for EJB3 beans, but also for JavaBean components (except "
+"<literal>@PreDestroy</literal> which is not meaningful for JavaBean "
+"components)."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:381
+#, no-c-format
+msgid "Managing exceptions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:382
+#, no-c-format
+msgid ""
+"JSF is surprisingly limited when it comes to exception handling. As a "
+"partial workaround for this problem, Seam lets you define how a particular "
+"class of exception is to be treated by annotating the exception class, or "
+"declaring the exception class in an XML file. This facility is meant to be "
+"combined with the EJB 3.0-standard <literal>@ApplicationException</literal> "
+"annotation which specifies whether the exception should cause a transaction "
+"rollback."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:385
+#, no-c-format
+msgid "Exceptions and transactions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:386
+#, no-c-format
+msgid ""
+"EJB specifies well-defined rules that let us control whether an exception "
+"immediately marks the current transaction for rollback when it is thrown by "
+"a business method of the bean: <emphasis>system exceptions</emphasis> always "
+"cause a transaction rollback, <emphasis>application exceptions</emphasis> do "
+"not cause a rollback by default, but they do if "
+"<literal>@ApplicationException(rollback=true)</literal> is specified. (An "
+"application exception is any checked exception, or any unchecked exception "
+"annotated <literal>@ApplicationException</literal>. A system exception is "
+"any unchecked exception without an <literal>@ApplicationException</literal> "
+"annotation.)"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:389
+#, no-c-format
+msgid ""
+"Note that there is a difference between marking a transaction for rollback, "
+"and actually rolling it back. The exception rules say that the transaction "
+"should be marked rollback only, but it may still be active after the "
+"exception is thrown."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:392
+#, no-c-format
+msgid ""
+"Seam applies the EJB 3.0 exception rollback rules also to Seam JavaBean "
+"components."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:395
+#, no-c-format
+msgid ""
+"But these rules only apply in the Seam component layer. What about an "
+"exception that is uncaught and propagates out of the Seam component layer, "
+"and out of the JSF layer? Well, it is always wrong to leave a dangling "
+"transaction open, so Seam rolls back any active transaction when an "
+"exception occurs and is uncaught in the Seam component layer."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:398
+#, no-c-format
+msgid "Enabling Seam exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:399
+#, no-c-format
+msgid ""
+"To enable Seam's exception handling, we need to make sure we have the master "
+"servlet filter declared in <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:402
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.servlet.SeamFilter&lt;/filter-"
+"class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:403
+#, no-c-format
+msgid "Using annotations for exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:404
+#, no-c-format
+msgid ""
+"The following exception results in a HTTP 404 error whenever it propagates "
+"out of the Seam component layer. It does not roll back the current "
+"transaction immediately when thrown, but the transaction will be rolled back "
+"if it the exception is not caught by another Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:407
+#, no-c-format
+msgid ""
+"@HttpError(errorCode=404)\n"
+"public class ApplicationException extends Exception { ... }"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:408
+#, no-c-format
+msgid ""
+"This exception results in a browser redirect whenever it propagates out of "
+"the Seam component layer. It also ends the current conversation. It causes "
+"an immediate rollback of the current transaction."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:411
+#, no-c-format
+msgid ""
+"@Redirect(viewId=\"/failure.xhtml\", end=true)\n"
+"@ApplicationException(rollback=true)\n"
+"public class UnrecoverableApplicationException extends RuntimeException "
+"{ ... }"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:412
+#, no-c-format
+msgid ""
+"Note that <literal>@Redirect</literal> does not work for exceptions which "
+"occur during the render phase of the JSF lifecycle."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:415
+#, no-c-format
+msgid ""
+"This exception results in a redirect, along with a message to the user, when "
+"it propagates out of the Seam component layer. It also immediately rolls "
+"back the current transaction."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:418
+#, no-c-format
+msgid ""
+"@Redirect(viewId=\"/error.xhtml\", message=\"Unexpected error\")\n"
+"public class SystemException extends RuntimeException { ... }"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:419
+#, no-c-format
+msgid "Using XML for exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:420
+#, no-c-format
+msgid ""
+"Since we can't add annotations to all the exception classes we are "
+"interested in, Seam also lets us specify this functionality in "
+"<literal>pages.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:423
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   \n"
+"   &lt;exception class=\"javax.persistence.EntityNotFoundException\"&gt;\n"
+"      &lt;http-error error-code=\"404\"/&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"   &lt;exception class=\"javax.persistence.PersistenceException\"&gt;\n"
+"      &lt;end-conversation/&gt;\n"
+"      &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"          &lt;message&gt;Database access failed&lt;/message&gt;\n"
+"      &lt;/redirect&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"   &lt;exception&gt;\n"
+"      &lt;end-conversation/&gt;\n"
+"      &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"          &lt;message&gt;Unexpected failure&lt;/message&gt;\n"
+"      &lt;/redirect&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:424
+#, no-c-format
+msgid ""
+"The last <literal>&lt;exception&gt;</literal> declaration does not specify a "
+"class, and is a catch-all for any exception for which handling is not "
+"otherwise specified via annotations or in <literal>pages.xml</literal>."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Framework.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Framework.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Framework.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,828 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Framework.xml:10
+#, no-c-format
+msgid "The Seam Application Framework"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:11
+#, no-c-format
+msgid ""
+"Seam makes it really easy to create applications by writing plain Java "
+"classes with annotations, which don't need to extend any special interfaces "
+"or superclasses. But we can simplify some common programming tasks even "
+"further, by providing a set of pre-built components which can be re-used "
+"either by configuration in <literal>components.xml</literal> (for very "
+"simple cases) or extension."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:14
+#, no-c-format
+msgid ""
+"The <emphasis>Seam Application Framework</emphasis> can reduce the amount of "
+"code you need to write when doing basic database access in a web "
+"application, using either Hibernate or JPA."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:17
+#, no-c-format
+msgid ""
+"We should emphasize that the framework is extremely simple, just a handful "
+"of simple classes that are easy to understand and extend. The \"magic\" is "
+"in Seam itself&mdash;the same magic you use when creating any Seam "
+"application even without using this framework."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:21
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:22
+#, no-c-format
+msgid ""
+"The components provided by the Seam application framework may be used in one "
+"of two different approaches. The first way is to install and configure an "
+"instance of the component in <literal>components.xml</literal>, just like we "
+"have done with other kinds of built-in Seam components. For example, the "
+"following fragment from <literal>components.xml</literal> installs a "
+"component which can perform basic CRUD operations for a <literal>Contact</"
+"literal> entity:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:25
+#, no-c-format
+msgid ""
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" \n"
+"                       entity-manager=\"#{personDatabase}\"&gt;\n"
+"    &lt;framework:id&gt;#{param.personId}&lt;/framework:id&gt;\n"
+"&lt;/framework:entity-home&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:26
+#, no-c-format
+msgid ""
+"If that looks a bit too much like \"programming in XML\" for your taste, you "
+"can use extension instead:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:29
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; implements "
+"LocalPersonHome {\n"
+"    @RequestParameter String personId;\n"
+"    @In EntityManager personDatabase;\n"
+"    \n"
+"    public Object getId() { return personId; }\n"
+"    public EntityManager getEntityManager() { return personDatabase; }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:30
+#, no-c-format
+msgid ""
+"The second approach has one huge advantage: you can easily add extra "
+"functionality, and override the built-in functionality (the framework "
+"classes were carefully designed for extension and customization)."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:33
+#, no-c-format
+msgid ""
+"A second advantage is that your classes may be EJB stateful sessin beans, if "
+"you like. (They do not have to be, they can be plain JavaBean components if "
+"you prefer.)"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:36
+#, no-c-format
+msgid ""
+"At this time, the Seam Application Framework provides just four built-in "
+"components: <literal>EntityHome</literal> and <literal>HibernateEntityHome</"
+"literal> for CRUD, along with <literal>EntityQuery</literal> and "
+"<literal>HibernateEntityQuery</literal> for queries."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:39
+#, no-c-format
+msgid ""
+"The Home and Query components are written so that they can function with a "
+"scope of session, event or conversation. Which scope you use depends upon "
+"the state model you wish to use in your application."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:42
+#, no-c-format
+msgid ""
+"The Seam Application Framework only works with Seam-managed persistence "
+"contexts. By default, the components will look for a persistence context "
+"named <literal>entityManager</literal>."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:48
+#, no-c-format
+msgid "Home objects"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:49
+#, no-c-format
+msgid ""
+"A Home object provides persistence operations for a particular entity class. "
+"Suppose we have our trusty <literal>Person</literal> class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:52
+#, no-c-format
+msgid ""
+"@Entity\n"
+"public class Person {\n"
+"    @Id private Long id;\n"
+"    private String firstName;\n"
+"    private String lastName;\n"
+"    private Country nationality;\n"
+"    \n"
+"    //getters and setters...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:53
+#, no-c-format
+msgid ""
+"We can define a <literal>personHome</literal> component either via "
+"configuration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:56
+#, no-c-format
+msgid ""
+"&lt;framework:entity-home name=\"personHome\" entity-class=\"eg.Person\" /"
+"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:57
+#, no-c-format
+msgid "Or via extension:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:60
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:61
+#, no-c-format
+msgid ""
+"A Home object provides the following operations: <literal>persist()</"
+"literal>, <literal>remove()</literal>, <literal>update()</literal> and "
+"<literal>getInstance()</literal>. Before you can call the <literal>remove()</"
+"literal>, or <literal>update()</literal> operations, you must first set the "
+"identifier of the object you are interested in, using the <literal>setId()</"
+"literal> method."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:64
+#, no-c-format
+msgid "We can use a Home directly from a JSF page, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:67
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Create Person&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{personHome.instance."
+"firstName}\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{personHome.instance."
+"lastName}\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:68
+#, no-c-format
+msgid ""
+"Usually, it is much nicer to be able to refer to the <literal>Person</"
+"literal> merely as <literal>person</literal>, so let's make that possible by "
+"adding a line to <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:71
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:72
+#, no-c-format
+msgid ""
+"(If we are using configuration.) Or by adding a <literal>@Factory</literal> "
+"method to <literal>PersonHome</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:75
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:76
+#, no-c-format
+msgid ""
+"(If we are using extension.) This change simplifies our JSF page to the "
+"following:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:79
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Create Person&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{person.firstName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{person.lastName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:80
+#, no-c-format
+msgid ""
+"Well, that lets us create new <literal>Person</literal> entries. Yes, that "
+"is all the code that is required! Now, if we want to be able to display, "
+"update and delete pre-existing <literal>Person</literal> entries in the "
+"database, we need to be able to pass the entry identifier to the "
+"<literal>PersonHome</literal>. Page parameters are a great way to do that:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:83
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page viewid=\"/editPerson.jsp\"&gt;\n"
+"        &lt;param name=\"personId\" value=\"#{personHome.id}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:84
+#, no-c-format
+msgid "Now we can add the extra operations to our JSF page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:87
+#, no-c-format
+msgid ""
+"&lt;h1&gt;\n"
+"    &lt;h:outputText rendered=\"#{!personHome.managed}\" value=\"Create "
+"Person\"/&gt;\n"
+"    &lt;h:outputText rendered=\"#{personHome.managed}\" value=\"Edit Person"
+"\"/&gt;\n"
+"&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{person.firstName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{person.lastName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\" \n"
+"            rendered=\"#{!personHome.managed}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Update Person\" action=\"#{personHome."
+"update}\" \n"
+"            rendered=\"#{personHome.managed}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Delete Person\" action=\"#{personHome."
+"remove}\" \n"
+"            rendered=\"#{personHome.managed}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:88
+#, no-c-format
+msgid ""
+"When we link to the page with no request parameters, the page will be "
+"displayed as a \"Create Person\" page. When we provide a value for the "
+"<literal>personId</literal> request parameter, it will be an \"Edit Person\" "
+"page."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:91
+#, no-c-format
+msgid ""
+"Suppose we need to create <literal>Person</literal> entries with their "
+"nationality initialized. We can do that easily, via configuration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:94
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" \n"
+"                       new-instance=\"#{newPerson}\"/&gt;\n"
+"\n"
+"&lt;component name=\"newPerson\" \n"
+"           class=\"eg.Person\"&gt;\n"
+"    &lt;property name=\"nationality\"&gt;#{country}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:95
+#, no-c-format
+msgid "Or by extension:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:98
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:99
+#, no-c-format
+msgid ""
+"Of course, the <literal>Country</literal> could be an object managed by "
+"another Home object, for example, <literal>CountryHome</literal>."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:102
+#, no-c-format
+msgid ""
+"To add more sophisticated operations (association management, etc), we can "
+"just add methods to <literal>PersonHome</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:105
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"    public void migrate()\n"
+"    {\n"
+"        getInstance().setCountry(country);\n"
+"        update();\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:106
+#, no-c-format
+msgid ""
+"The Home object automatically displays faces messages when an operation is "
+"successful. To customize these messages we can, again, use configuration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:109
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\"\n"
+"                       entity-class=\"eg.Person\"\n"
+"                       new-instance=\"#{newPerson}\"&gt;\n"
+"    &lt;framework:created-message&gt;New person #{person.firstName} #{person."
+"lastName} \n"
+"        created&lt;/framework:created-message&gt;\n"
+"    &lt;framework:deleted-message&gt;Person #{person.firstName} #{person."
+"lastName}\n"
+"        deleted&lt;/framework:deleted-message&gt;\n"
+"    &lt;framework:updated-message&gt;Person #{person.firstName} #{person."
+"lastName} \n"
+"        updated&lt;/framework:updated-message&gt;\n"
+"&lt;/framework:entity-home&gt;\n"
+"\n"
+"&lt;component name=\"newPerson\" \n"
+"           class=\"eg.Person\"&gt;\n"
+"    &lt;property name=\"nationality\"&gt;#{country}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:110
+#, no-c-format
+msgid "Or extension:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:113
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"    protected String getCreatedMessage() { return \"New person #{person."
+"firstName} \n"
+"        #{person.lastName} created\"; }\n"
+"    protected String getUpdatedMessage() { return \"Person #{person."
+"firstName} \n"
+"        #{person.lastName} updated\"; }\n"
+"    protected String getDeletedMessage() { return \"Person #{person."
+"firstName} \n"
+"        #{person.lastName} deleted\"; }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:114
+#, no-c-format
+msgid ""
+"But the best way to specify the messages is to put them in a resource bundle "
+"known to Seam (the bundle named <literal>messages</literal>, by default)."
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:117
+#, no-c-format
+msgid ""
+"Person_created=New person #{person.firstName} #{person.lastName} created\n"
+"Person_deleted=Person #{person.firstName} #{person.lastName} deleted\n"
+"Person_updated=Person #{person.firstName} #{person.lastName} updated"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:118
+#, no-c-format
+msgid ""
+"This enables internationalization, and keeps your code and configuration "
+"clean of presentation concerns."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:121
+#, no-c-format
+msgid ""
+"The final step is to add validation functionality to the page, using "
+"<literal>&lt;s:validateAll&gt;</literal> and <literal>&lt;s:decorate&gt;</"
+"literal>, but I'll leave that for you to figure out."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:127
+#, no-c-format
+msgid "Query objects"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:128
+#, no-c-format
+msgid ""
+"If we need a list of all <literal>Person</literal> instance in the database, "
+"we can use a Query object. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:131
+#, no-c-format
+msgid ""
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:132
+#, no-c-format
+msgid "We can use it from a JSF page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:135
+#, no-c-format
+msgid ""
+"&lt;h1&gt;List of people&lt;/h1&gt;\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view-id=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:136
+#, no-c-format
+msgid "We probably need to support pagination:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:139
+#, no-c-format
+msgid ""
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\" \n"
+"                        order=\"lastName\" \n"
+"                        max-results=\"20\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:140
+#, no-c-format
+msgid "We'll use a page parameter to determine the page to display:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:143
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page viewid=\"/searchPerson.jsp\"&gt;\n"
+"        &lt;param name=\"firstResult\" value=\"#{people.firstResult}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:144
+#, no-c-format
+msgid "The JSF code for a pagination control is a bit verbose, but manageable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:147
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Search for people&lt;/h1&gt;\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view-id=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.previousExists}\" "
+"value=\"First Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"0\"/&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.previousExists}\" "
+"value=\"Previous Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.previousFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.nextExists}\" value="
+"\"Next Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.nextFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.nextExists}\" value="
+"\"Last Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.lastFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:148
+#, no-c-format
+msgid ""
+"Real search screens let the user enter a bunch of optional search criteria "
+"to narrow the list of results returned. The Query object lets you specify "
+"optional \"restrictions\" to support this important usecase:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:151
+#, no-c-format
+msgid ""
+"&lt;component name=\"examplePerson\" class=\"Person\"/&gt;\n"
+"        \n"
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\" \n"
+"                        order=\"lastName\" \n"
+"                        max-results=\"20\"&gt;\n"
+"    &lt;framework:restrictions&gt;\n"
+"        &lt;value&gt;lower(firstName) like lower( #{examplePerson.firstName} "
+"+ '&#37;' )&lt;/value&gt;\n"
+"        &lt;value&gt;lower(lastName) like lower( #{examplePerson.lastName} + "
+"'&#37;' )&lt;/value&gt;\n"
+"    &lt;/framework:restrictions&gt;\n"
+"&lt;/framework:entity-query&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:152
+#, no-c-format
+msgid "Notice the use of an \"example\" object."
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:155
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Search for people&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{examplePerson.firstName}"
+"\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{examplePerson.lastName}"
+"\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;&lt;h:commandButton value=\"Search\" action=\"/search.jsp\"/"
+"&gt;&lt;/div&gt;\n"
+"&lt;/h:form&gt;\n"
+"\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view-id=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:156
+#, no-c-format
+msgid ""
+"The examples in this section have all shown reuse by configuration. However, "
+"reuse by extension is equally possible for Query objects."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:162
+#, no-c-format
+msgid "Controller objects"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:163
+#, no-c-format
+msgid ""
+"A totally optional part of the Seam Application Framework is the class "
+"<literal>Controller</literal> and its subclasses <literal>EntityController</"
+"literal><literal>HibernateEntityController</literal> and "
+"<literal>BusinessProcessController</literal>. These classes provide nothing "
+"more than some convenience methods for access to commonly used built-in "
+"components and methods of built-in components. They help save a few "
+"keystrokes (characters can add up!) and provide a great launchpad for new "
+"users to explore the rich functionality built in to Seam."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:166
+#, no-c-format
+msgid ""
+"For example, here is what <literal>RegisterAction</literal> from the Seam "
+"registration example would look like:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:169
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"register\")\n"
+"public class RegisterAction extends EntityController implements Register\n"
+"{\n"
+"\n"
+"   @In private User user;\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = createQuery(\"select u.username from User u where u."
+"username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getResultList();\n"
+"      \n"
+"      if ( existing.size()==0 )\n"
+"      {\n"
+"         persist(user);\n"
+"         info(\"Registered new user #{user.username}\");\n"
+"         return \"/registered.jspx\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         addFacesMessage(\"User #{user.username} already exists\");\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:170
+#, no-c-format
+msgid "As you can see, its not an earthshattering improvement..."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Gettingstarted.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Gettingstarted.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Gettingstarted.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,588 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Gettingstarted.xml:10
+#, no-c-format
+msgid "Getting started with Seam, using seam-gen"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:11
+#, no-c-format
+msgid ""
+"The Seam distribution includes a command line utility that makes it really "
+"easy to set up an Eclipse project, generate some simple Seam skeleton code, "
+"and reverse engineer an application from a pre-existing database."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:14
+#, no-c-format
+msgid ""
+"This is the easy way to get your feet wet with Seam, and gives you some "
+"ammunition for next time you find yourself trapped in an elevator with one "
+"of those tedious Ruby guys ranting about how great and wonderful his new toy "
+"is for building totally trivial applications that put things in databases."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:17
+#, no-c-format
+msgid ""
+"In this release, seam-gen works best for people with JBoss AS. You can use "
+"the generated project with other J2EE or Java EE 5 application servers by "
+"making a few manual changes to the project configuration."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:20
+#, no-c-format
+msgid ""
+"You <emphasis>can</emphasis> use seam-gen without Eclipse, but in this "
+"tutorial, we want to show you how to use it in conjunction with Eclipse for "
+"debugging and integration testing. If you don't want to install Eclipse, you "
+"can still follow along with this tutorial&mdash;all steps can be peformed "
+"from the command line."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:23
+#, no-c-format
+msgid ""
+"Seam-gen is basically just a big ugly Ant script wrapped around Hibernate "
+"Tools, together with some templates. Which means it is easy to customize if "
+"you need to."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:27
+#, no-c-format
+msgid "Before you start"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:28
+#, no-c-format
+msgid ""
+"Make sure you have JDK 5 or JDK 6, JBoss AS 4.0.5 and Ant 1.6, along with "
+"recent versions of Eclipse, the JBoss IDE plugin for Eclipse and the TestNG "
+"plugin for Eclipse correctly installed before starting. Add your JBoss "
+"installation to the JBoss Server View in Eclipse. Start JBoss in debug mode. "
+"Finally, start a command prompt in the directory where you unzipped the Seam "
+"distribution."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:34
+#, no-c-format
+msgid "Setting up a new Eclipse project"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:35
+#, no-c-format
+msgid ""
+"The first thing we need to do is configure seam-gen for your environment: "
+"JBoss AS installation directory, Eclipse workspace, and database connection. "
+"It's easy, just type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:38
+#, no-c-format
+msgid ""
+"cd jboss-seam-1.1.x\n"
+"seam setup"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:39
+#, no-c-format
+msgid "And you will be prompted for the needed information:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:42
+#, no-c-format
+msgid ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam setup\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"setup:\n"
+"    [echo] Welcome to seam-gen :-)\n"
+"    [input] Enter your Java project workspace [C:/Projects]\n"
+"\n"
+"    [input] Enter your JBoss home directory [C:/Program Files/jboss-4.0.5."
+"GA]\n"
+"\n"
+"    [input] Enter the project name [myproject]\n"
+"helloworld\n"
+"    [input] Is this project deployed as an EAR (with EJB components) or a "
+"WAR \n"
+"        (with no EJB support) [ear] (ear,war,)\n"
+"\n"
+"    [input] Enter the Java package name for your session beans [com.mydomain."
+"helloworld]\n"
+"org.jboss.helloworld\n"
+"    [input] Enter the Java package name for your entity beans [org.jboss."
+"helloworld]\n"
+"\n"
+"    [input] Enter the Java package name for your test cases [org.jboss."
+"helloworld.test]\n"
+"\n"
+"    [input] What kind of database are you using? [hsql]\n"
+"    (hsql,mysql,oracle,postgres,mssql,db2,sybase,)\n"
+"mysql\n"
+"    [input] Enter the Hibernate dialect for your database [org.hibernate."
+"dialect.MySQLDialect]\n"
+"\n"
+"    [input] Enter the filesystem path to the JDBC driver jar [lib/hsqldb."
+"jar]\n"
+"../../mysql-connector.jar\n"
+"    [input] Enter JDBC driver class for your database [com.mysql.jdbc."
+"Driver]\n"
+"\n"
+"    [input] Enter the JDBC URL for your database [jdbc:mysql:///test]\n"
+"\n"
+"    [input] Enter database username [sa]\n"
+"gavin\n"
+"    [input] Enter database password []\n"
+"\n"
+"    [input] Are you working with tables that already exist in the database? "
+"[n] (y,n,)\n"
+"y\n"
+"    [input] Do you want to drop and recreate the database tables and data in "
+"import.sql \n"
+"    each time you deploy? [n] (y,n,)\n"
+"n\n"
+"[propertyfile] Creating new property file: C:&#92;Projects&#92;jboss-"
+"seam&#92;seam-gen&#92;build.properties\n"
+"     [echo] Installing JDBC driver jar to JBoss server\n"
+"     [echo] Type 'seam new-project' to create the new project\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 1 minute 17 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:43
+#, no-c-format
+msgid ""
+"The tool provides sensible defaults, which you can accept by just pressing "
+"enter at the prompt."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:46
+#, no-c-format
+msgid ""
+"The most important choice you need to make is between EAR deployment and WAR "
+"deployment of your project. EAR projects support EJB 3.0 and require Java EE "
+"5. WAR projects do not support EJB 3.0, but may be deployed to a J2EE "
+"environment. The packaging of a WAR is also simpler to understand. If you "
+"installed JBoss with the ejb3 profile, choose <literal>ear</literal>. "
+"Otherwise, choose <literal>war</literal>. We'll assume that you've chosen an "
+"EAR deployment for the rest of the tutorial, but you can follow exactly the "
+"same steps for a WAR deployment."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:49
+#, no-c-format
+msgid ""
+"If you are working with an existing data model, make sure you tell seam-gen "
+"that the tables already exist in the database."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:52
+#, no-c-format
+msgid ""
+"The settings are stored in <literal>seam-gen/build.properties</literal>, but "
+"you can also modify them simply by running <literal>seam setup</literal> a "
+"second time."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:55
+#, no-c-format
+msgid ""
+"Now we can create a new project in our Eclipse workspace directory, by "
+"typing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:58
+#, no-c-format
+msgid "seam new-project"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:59
+#, no-c-format
+msgid ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam new-project\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"copy-lib:\n"
+"     [echo] Copying project jars ...\n"
+"     [copy] Copying 32 files to C:&#92;Projects&#92;helloworld&#92;lib\n"
+"     [copy] Copying 9 files to C:&#92;Projects&#92;helloworld&#92;embedded-"
+"ejb\n"
+"\n"
+"file-copy-wtp:\n"
+"\n"
+"file-copy:\n"
+"     [echo] Copying project resources ...\n"
+"     [copy] Copying 12 files to C:&#92;Projects&#92;helloworld&#92;"
+"resources\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;helloworld&#92;resources\n"
+"     [copy] Copying 5 files to C:&#92;Projects&#92;helloworld&#92;view\n"
+"     [copy] Copying 5 files to C:&#92;Projects&#92;helloworld\n"
+"    [mkdir] Created dir: C:&#92;Projects&#92;helloworld&#92;src\n"
+"\n"
+"new-project:\n"
+"     [echo] A new Seam project was created in the C:/Projects directory\n"
+"     [echo] Add the project from inside Eclipse (or type 'seam explode') and "
+"go to http://localhost:\n"
+"8080/helloworld\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 7 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:60
+#, no-c-format
+msgid ""
+"This copies the Seam jars, dependent jars and the JDBC driver jar to a new "
+"Eclipse project, and generates all needed resources and configuration files, "
+"a facelets template file and stylesheet, along with Eclipse metadata and an "
+"Ant build script. The Eclipse project will be automatically deployed to an "
+"exploded directory structure in JBoss AS as soon as you add the project "
+"using <literal>New -&gt; Project... -&gt; Java Project -&gt; Next</literal>, "
+"typing the <literal>Project name</literal> (<literal>myproject</literal> in "
+"this case), selecting your Java SE 5 or Java SE 6 JRE and then clicking "
+"<literal>Finish</literal>. Do not select <literal>Create new project from "
+"existing source</literal>. Alternatively, you can deploy the project from "
+"outside Eclipse by typing <literal>seam explode</literal>."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:63
+#, no-c-format
+msgid ""
+"Go to <literal>http://localhost:8080/helloworld</literal> to see a welcome "
+"page. This is a facelets page, <literal>view/home.xhtml</literal>, using the "
+"template <literal>view/layout/template.xhtml</literal>. You can edit this "
+"page, or the template, in eclipse, and see the results "
+"<emphasis>immediately</emphasis>, by clicking refresh in your browser."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:66
+#, no-c-format
+msgid ""
+"Don't get scared by the XML configuration documents that were generated into "
+"the project directory. They are mostly standard Java EE stuff, the stuff you "
+"need to create once and then never look at again, and they are 90&#37; the "
+"same between all Seam projects. (They are so easy to write that even seam-"
+"gen can do it.)"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:69
+#, no-c-format
+msgid ""
+"The generated project includes three database and persistence "
+"configurations. The <literal>jboss-beans.xml</literal>, <literal>persistence-"
+"test.xml</literal> and <literal>import-test.sql</literal> files are used "
+"when running the TestNG unit tests against HSQLDB. The database schema and "
+"the test data in <literal>import-test.sql</literal> is always exported to "
+"the database before running tests. The <literal>myproject-dev-ds.xml</"
+"literal>, <literal>persistence-dev.xml</literal>and <literal>import-dev.sql</"
+"literal> files are for use when deploying the application to your "
+"development database. The schema might be exported automatically at "
+"deployment, depending upon whether you told seam-gen that you are working "
+"with an existing database. The <literal>myproject-prod-ds.xml</literal>, "
+"<literal>persistence-prod.xml</literal>and <literal>import-prod.sql</"
+"literal> files are for use when deploying the application to your production "
+"database. The schema is not exported automatically at deployment."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:75
+#, no-c-format
+msgid "Creating a new action"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:76
+#, no-c-format
+msgid ""
+"If you're used to traditional action-style web frameworks, you're probably "
+"wondering how you can create a simple webpage with a stateless action method "
+"in Java. If you type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:79
+#, no-c-format
+msgid "seam new-action"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:80
+#, no-c-format
+msgid ""
+"Seam will prompt for some information, and generate a new facelets page and "
+"Seam component for your project."
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:83
+#, no-c-format
+msgid ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam new-action ping\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"action-input:\n"
+"    [input] Enter the Seam component name\n"
+"ping\n"
+"    [input] Enter the local interface name [Ping]\n"
+"\n"
+"    [input] Enter the bean class name [PingBean]\n"
+"\n"
+"    [input] Enter the action method name [ping]\n"
+"\n"
+"    [input] Enter the page name [ping]\n"
+"\n"
+"\n"
+"setup-filters:\n"
+"\n"
+"new-action:\n"
+"     [echo] Creating a new stateless session bean component with an action "
+"method\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;view\n"
+"     [echo] Type 'seam restart' and go to \n"
+"     http://localhost:8080/helloworld/ping.seam\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 13 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:84
+#, no-c-format
+msgid ""
+"Because we've added a new Seam component, we need to restart the exploded "
+"directory deployment. You can do this by typing <literal>seam restart</"
+"literal>, or by running the <literal>restart</literal> target in the "
+"generated project <literal>build.xml</literal> file from inside Eclipse. "
+"Another way to force a restart is to edit the file <literal>resources/META-"
+"INF/application.xml</literal> in Eclipse. <emphasis>Note that you do not "
+"need to restart JBoss each time you change the application.</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:87
+#, no-c-format
+msgid ""
+"Now go to <literal>http://localhost:8080/helloworld/ping.seam</literal> and "
+"click the button. You can see the code behind this action by looking in the "
+"project <literal>src</literal> directory. Put a breakpoint in the "
+"<literal>ping()</literal> method, and click the button again."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:90
+#, no-c-format
+msgid ""
+"Finally, locate the <literal>PingTest.xml</literal> file in the test package "
+"and run the integration tests using the TestNG plugin for Eclipse. "
+"Alternatively, run the tests using <literal>seam test</literal> or the "
+"<literal>test</literal> target of the generated build."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:96
+#, no-c-format
+msgid "Creating a form with an action"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:97
+#, no-c-format
+msgid "The next step is to create a form. Type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:100
+#, no-c-format
+msgid "seam new-form"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:101
+#, no-c-format
+msgid ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam new-form\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"action-input:\n"
+"    [input] Enter the Seam component name\n"
+"hello\n"
+"    [input] Enter the local interface name [Hello]\n"
+"\n"
+"    [input] Enter the bean class name [HelloBean]\n"
+"\n"
+"    [input] Enter the action method name [hello]\n"
+"\n"
+"    [input] Enter the page name [hello]\n"
+"\n"
+"\n"
+"setup-filters:\n"
+"\n"
+"new-form:\n"
+"     [echo] Creating a new stateful session bean component with an action "
+"method\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;view\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [echo] Type 'seam restart' and go to http://localhost:8080/hello/hello."
+"seam\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 5 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:102
+#, no-c-format
+msgid ""
+"Restart the application again, and go to <literal>http://localhost:8080/"
+"helloworld/hello.seam</literal>. Then take a look at the generated code. Run "
+"the test. Try adding some new fields to the form and Seam component "
+"(remember to restart the deploment each time you change the Java code)."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:108
+#, no-c-format
+msgid "Generating an application from an existing database"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:109
+#, no-c-format
+msgid ""
+"Manually create some tables in your database. (If you need to switch to a "
+"different database, just run <literal>seam setup</literal> again.) Now type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:112
+#, no-c-format
+msgid "seam generate-entities"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:113
+#, no-c-format
+msgid ""
+"Restart the deployment, and go to <literal>http://localhost:8080/helloworld</"
+"literal>. You can browse the database, edit existing objects, and create new "
+"objects. If you look at the generated code, you'll probably be amazed how "
+"simple it is! Seam was designed so that data access code is easy to write by "
+"hand, even for people who don't want to cheat by using seam-gen."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:119
+#, no-c-format
+msgid "Deploying the application as an EAR"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:120
+#, no-c-format
+msgid ""
+"Finally, we want to be able to deploy the application using standard Java EE "
+"5 packaging. First, we need to remove the exploded directory by running "
+"<literal>seam unexplode</literal>. To deploy the EAR, we can type "
+"<literal>seam deploy</literal> at the command prompt, or run the "
+"<literal>deploy</literal> target of the generated project build script. You "
+"can undeploy using <literal>seam undeploy</literal> or the "
+"<literal>undeploy</literal> target."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:123
+#, no-c-format
+msgid ""
+"By default, the application will be deployed with the <emphasis>dev profile</"
+"emphasis>. The EAR will include the <literal>persistence-dev.xml</literal> "
+"and <literal>import-dev.sql</literal> files, and the <literal>myproject-dev-"
+"ds.xml</literal> file will be deployed. You can change the profile, and use "
+"the <emphasis>prod profile</emphasis>, by typing"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:126
+#, no-c-format
+msgid "seam -Dprofile=prod deploy"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:127
+#, no-c-format
+msgid ""
+"You can even define new deployment profiles for your application. Just add "
+"appropriately named files to your project&mdash;for example, "
+"<literal>persistence-staging.xml</literal>, <literal>import-staging.sql</"
+"literal> and <literal>myproject-staging-ds.xml</literal>&mdash;and select "
+"the name of the profile using <literal>-Dprofile=staging</literal>."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/I18n.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/I18n.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/I18n.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,533 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: I18n.xml:10
+#, no-c-format
+msgid "Internationalization and themes"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:11
+#, no-c-format
+msgid ""
+"Seam makes it easy to build internationalized applications by providing "
+"several built-in components for handling multi-language UI messages."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:15
+#, no-c-format
+msgid "Locales"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:16
+#, no-c-format
+msgid ""
+"Each user login session has an associated instance of <literal>java.util."
+"Locale</literal> (available to the application as a session-scoped component "
+"named <literal>locale</literal>). Under normal circumstances, you won't need "
+"to do any special configuration to set the locale. Seam just delegates to "
+"JSF to determine the active locale:"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:21
+#, no-c-format
+msgid ""
+"If there is a locale associated with the HTTP request (the browser locale), "
+"and that locale is in the list of supported locales from <literal>faces-"
+"config.xml</literal>, use that locale for the rest of the session."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:24
+#, no-c-format
+msgid ""
+"Otherwise, if a default locale was specified in the <literal>faces-config."
+"xml</literal>, use that locale for the rest of the session."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:27
+#, no-c-format
+msgid "Otherwise, use the default locale of the server."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:30
+#, no-c-format
+msgid ""
+"It is <emphasis>possible</emphasis> to set the locale manually via the Seam "
+"configuration properties <literal>org.jboss.seam.core.localeSelector."
+"language</literal>, <literal>org.jboss.seam.core.localeSelector.country</"
+"literal> and <literal>org.jboss.seam.core.localeSelector.variant</literal>, "
+"but we can't think of any good reason to ever do this."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:33
+#, no-c-format
+msgid ""
+"It is, however, useful to allow the user to set the locale manually via the "
+"application user interface. Seam provides built-in functionality for "
+"overriding the locale determined by the algorithm above. All you have to do "
+"is add the following fragment to a form in your JSP or Facelets page:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:36
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{localeSelector.language}\"&gt;\n"
+"    &lt;f:selectItem itemLabel=\"English\" itemValue=\"en\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Deutsch\" itemValue=\"de\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Francais\" itemValue=\"fr\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{localeSelector.select}\" value=\"#{messages"
+"['ChangeLanguage']}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:37
+#, no-c-format
+msgid ""
+"Or, if you want a list of all supported locales from <literal>faces-config."
+"xml</literal>, just use:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:40
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{localeSelector.localeString}\"&gt;\n"
+"    &lt;f:selectItems value=\"#{localeSelector.supportedLocales}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{localeSelector.select}\" value=\"#{messages"
+"['ChangeLanguage']}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:41
+#, no-c-format
+msgid ""
+"When this use selects an item from the drop-down, and clicks the button, the "
+"Seam and JSF locales will be overridden for the rest of the session."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:47
+#, no-c-format
+msgid "Labels"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:48
+#, no-c-format
+msgid ""
+"JSF supports internationalization of user interface labels and descriptive "
+"text via the use of <literal>&lt;f:loadBundle /&gt;</literal>. You can use "
+"this approach in Seam applications. Alternatively, you can take advantage of "
+"the Seam <literal>messages</literal> component to display templated labels "
+"with embedded EL expressions."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:52
+#, no-c-format
+msgid "Defining labels"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:53
+#, no-c-format
+msgid ""
+"Each login session has an associated instance of <literal>java.util."
+"ResourceBundle</literal> (available to the application as a session-scoped "
+"component named <literal>org.jboss.seam.core.resourceBundle</literal>). "
+"You'll need to make your internationalized labels available via this special "
+"resource bundle. By default, the resource bundle used by Seam is named "
+"<literal>messages</literal> and so you'll need to define your labels in "
+"files named <literal>messages.properties</literal>, <literal>messages_en."
+"properties</literal>, <literal>messages_en_AU.properties</literal>, etc. "
+"These files usually belong in the <literal>WEB-INF/classes</literal> "
+"directory."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:56
+#, no-c-format
+msgid "So, in <literal>messages_en.properties</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:59
+#, no-c-format
+msgid "Hello=Hello"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:60
+#, no-c-format
+msgid "And in <literal>messages_en_AU.properties</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:63
+#, no-c-format
+msgid "Hello=G'day"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:64
+#, no-c-format
+msgid ""
+"You can select a different name for the resource bundle by setting the Seam "
+"configuration property named <literal>org.jboss.seam.core.resourceBundle."
+"bundleNames</literal>. You can even specify a list of resource bundle names "
+"to be searched (depth first) for messages."
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:67
+#, no-c-format
+msgid ""
+"&lt;core:resource-bundle&gt;\n"
+"    &lt;core:bundle-names&gt;\n"
+"        &lt;value&gt;mycompany_messages&lt;/value&gt;\n"
+"        &lt;value&gt;standard_messages&lt;/value&gt;       \n"
+"    &lt;/core:bundle-names&gt;\n"
+"&lt;/core:resource-bundle&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:68
+#, no-c-format
+msgid ""
+"If you want to define a message just for a particular page, you can specify "
+"it in a resource bundle with the same name as the JSF view id, with the "
+"leading <literal>/</literal> and trailing file extension removed. So we "
+"could put our message in <literal>welcome/hello_en.properties</literal> if "
+"we only needed to display the message on <literal>/welcome/hello.jsp</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:71
+#, no-c-format
+msgid ""
+"You can even specify an explicit bundle name in <literal>pages.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:74
+#, no-c-format
+msgid "&lt;page view-id=\"/welcome/hello.jsp\" bundle=\"HelloMessages\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:75
+#, no-c-format
+msgid ""
+"Then we could use messages defined in <literal>HelloMessages.properties</"
+"literal> on <literal>/welcome/hello.jsp</literal>."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:81
+#, no-c-format
+msgid "Displaying labels"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:82
+#, no-c-format
+msgid ""
+"If you define your labels using the Seam resource bundle, you'll be able to "
+"use them without having to type <literal>&lt;f:loadBundle ... /&gt;</"
+"literal> on every page. Instead, you can simply type:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:85
+#, no-c-format
+msgid "&lt;h:outputText value=\"#{messages['Hello']}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:86
+#, no-c-format
+msgid "<para>or:</para>"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:89
+#, no-c-format
+msgid "&lt;h:outputText value=\"#{messages.Hello}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:90
+#, no-c-format
+msgid "Even better, the messages themselves may contain EL expressions:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:93
+#, no-c-format
+msgid "Hello=Hello, #{user.firstName} #{user.lastName}"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:94
+#, no-c-format
+msgid "Hello=G'day, #{user.firstName}"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:95
+#, no-c-format
+msgid "You can even use the messages in your code:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:98
+#, no-c-format
+msgid "@In private Map&lt;String, String&gt; messages;"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:99
+#, no-c-format
+msgid "@In(\"#{messages['Hello']}\") private String helloMessage;"
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:103
+#, no-c-format
+msgid "Faces messages"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:104
+#, no-c-format
+msgid ""
+"The <literal>facesMessages</literal> component is a super-convenient way to "
+"display success or failure messages to the user. The functionality we just "
+"described also works for faces messages:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:107
+#, no-c-format
+msgid ""
+"@Name(\"hello\")\n"
+"@Stateless\n"
+"public class HelloBean implements Hello {\n"
+"    @In FacesMessages facesMessages;\n"
+"    \n"
+"    public String sayIt() {\n"
+"        facesMessages.addFromResourceBundle(\"Hello\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:108
+#, no-c-format
+msgid ""
+"This will display <literal>Hello, Gavin King</literal> or <literal>G'day, "
+"Gavin</literal>, depending upon the user's locale."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:116
+#, no-c-format
+msgid "Timezones"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:117
+#, no-c-format
+msgid ""
+"There is also a session-scoped instance of <literal>java.util.Timezone</"
+"literal>, named <literal>org.jboss.seam.core.timezone</literal>, and a Seam "
+"component for changing the timezone named <literal>org.jboss.seam.core."
+"timezoneSelector</literal>. By default, the timezone is the default timezone "
+"of the server. Unfortunately, the JSF specification says that all dates and "
+"times should be assumed to be UTC, and displayed as UTC, unless a timezone "
+"is explicitly specified using <literal>&lt;f:convertDateTime&gt;</literal>. "
+"This is an extremely inconvenient default behavior."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:120
+#, no-c-format
+msgid ""
+"Seam overrides this behavior, and defaults all dates and times to the Seam "
+"timezone. In addition, Seam provides the <literal>&lt;s:convertDateTime&gt;</"
+"literal> tag which always performs conversions in the Seam timezone."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:126
+#, no-c-format
+msgid "Themes"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:127
+#, no-c-format
+msgid ""
+"Seam applications are also very easily skinnable. The theme API is very "
+"similar to the localization API, but of course these two concerns are "
+"orthogonal, and some applications support both localization and themes."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:130
+#, no-c-format
+msgid "First, configure the set of supported themes:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:133
+#, no-c-format
+msgid ""
+"&lt;theme:theme-selector cookie-enabled=\"true\"&gt;\n"
+"    &lt;theme:available-themes&gt;\n"
+"        &lt;value&gt;default&lt;/value&gt;\n"
+"        &lt;value&gt;accessible&lt;/value&gt;\n"
+"        &lt;value&gt;printable&lt;/value&gt;\n"
+"    &lt;/theme:available-themes&gt;\n"
+"&lt;/theme:theme-selector&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:134
+#, no-c-format
+msgid "Note that the first theme listed is the default theme."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:137
+#, no-c-format
+msgid ""
+"Themes are defined in a properties file with the same name as the theme. For "
+"example, the <literal>default</literal> theme is defined as a set of entries "
+"in <literal>default.properties</literal>. For example, <literal>default."
+"properties</literal> might define:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:140
+#, no-c-format
+msgid ""
+"css ../screen.css\n"
+"template template.xhtml"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:141
+#, no-c-format
+msgid ""
+"Usually the entries in a theme resource bundle will be paths to CSS styles "
+"or images and names of facelets templates (unlike localization resource "
+"bundles which are usually text)."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:144
+#, no-c-format
+msgid ""
+"Now we can use these entries in our JSP or facelets pages. For example, to "
+"theme the stylesheet in a facelets page:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:147
+#, no-c-format
+msgid ""
+"&lt;link href=\"#{theme.css}\" rel=\"stylesheet\" type=\"text/css\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:148
+#, no-c-format
+msgid ""
+"Most powerfully, facelets lets us theme the template used by a <literal>&lt;"
+"ui:composition&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:151
+#, no-c-format
+msgid ""
+"&lt;ui:composition xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"    xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"    xmlns:h=\"http://java.sun.com/jsf/html\"\n"
+"    xmlns:f=\"http://java.sun.com/jsf/core\"\n"
+"    template=\"#{theme.template}\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:152
+#, no-c-format
+msgid ""
+"Just like the locale selector, there is a built-in theme selector to allow "
+"the user to freely switch themes:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:155
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{themeSelector.theme}\"&gt;\n"
+"    &lt;f:selectItems value=\"#{themeSelector.themes}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{themeSelector.select}\" value=\"Select Theme"
+"\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:159
+#, no-c-format
+msgid "Persisting locale and theme preferences via cookies"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:160
+#, no-c-format
+msgid ""
+"The locale selector, theme selector and timezone selector all support "
+"persistence of locale and theme preference to a cookie. Simply set the "
+"<literal>cookie-enabled</literal> configuration property:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:163
+#, no-c-format
+msgid ""
+"&lt;theme:theme-selector cookie-enabled=\"true\"&gt;\n"
+"    &lt;theme:available-themes&gt;\n"
+"        &lt;value&gt;default&lt;/value&gt;\n"
+"        &lt;value&gt;accessible&lt;/value&gt;\n"
+"        &lt;value&gt;printable&lt;/value&gt;\n"
+"    &lt;/theme:available-themes&gt;\n"
+"&lt;/theme:theme-selector&gt;\n"
+"\n"
+"&lt;core:locale-selector cookie-enabled=\"true\"/&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Itext.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Itext.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Itext.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1452 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Itext.xml:10
+#, no-c-format
+msgid "iText PDF generation"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:11
+#, no-c-format
+msgid ""
+"Seam now includes an component set for generating documents using iText. The "
+"primary focus of Seam's iText document support is for the generation of PDF "
+"doucuments, but Seam also offers basic support for RTF document generation."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:15
+#, no-c-format
+msgid "Using PDF Support"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:16
+#, no-c-format
+msgid ""
+"iText support is provided by <literal>jboss-seam-pdf.jar</literal>. This JAR "
+"contains the iText JSF controls, which are used to construct views that can "
+"render to PDF, and the DocumentStore component, which serves the rendered "
+"documents to the user. To include PDF support in your application, included "
+"<literal>jboss-seam-pdf.jar</literal> in your <literal>WEB-INF/lib</literal> "
+"directory along with the iText JAR file. There is no further configuration "
+"needed to use Seam's iText support."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:19
+#, no-c-format
+msgid ""
+"The Seam iText module requires the use of Facelets as the view technology. "
+"Future versions of the library may also support the use of JSP. "
+"Additionally, it requires the use of the seam-ui package."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:22
+#, no-c-format
+msgid ""
+"The <literal>examples/itext</literal> project contains an example of the PDF "
+"support in action. It demonstrates proper deployment packaging, and it "
+"contains a number examples that demonstrate the key PDF generation features "
+"current supported."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:28
+#, no-c-format
+msgid "Creating a document"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:29
+#, no-c-format
+msgid ""
+"Documents are generated by facelets documents using tags in the "
+"<literal>http://jboss.com/products/seam/pdf</literal> namespace. Documents "
+"should always have the <literal>document</literal> tag at the root of the "
+"document. The <literal>document</literal> tag prepares Seam to generate a "
+"document into the DocumentStore and renders an HTML redirect to that stored "
+"content. The following is a a small PDF document consisting only a single "
+"line of text:"
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:32
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf"
+"\"&gt;                                                      \n"
+"   The document goes "
+"here.                                                                                             \n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:34
+#, no-c-format
+msgid "p:document"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:35
+#, no-c-format
+msgid ""
+"The <literal>p:document</literal> tag supports the following attributes:"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:40
+#, no-c-format
+msgid "type"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:42
+#, no-c-format
+msgid ""
+"The type of the document to be produced. Valid values are <literal>PDF</"
+"literal>, <literal>RTF</literal> and <literal>HTML</literal> modes. Seam "
+"defaults to PDF generation, and many of the features only work correctly "
+"when generating PDF documents."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:48
+#, no-c-format
+msgid "pageSize"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:50
+#, no-c-format
+msgid ""
+"The size of the page to be generate. The most commonly used values would be "
+"<literal>LETTER</literal> and <literal>A4</literal>. A full list of "
+"supported pages sizes can be found in <literal>com.lowagie.text.PageSize</"
+"literal> class. Alternatively, pageSize can provide the width and height of "
+"the page directly. The value \"612 792\", for example, is equizalent to the "
+"LETTER page size."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:56
+#, no-c-format
+msgid "orientation"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:58
+#, no-c-format
+msgid ""
+"The orientation of the page. Valid values are <literal>portrait</literal> "
+"and <literal>landscape</literal>. In landscape mode, the height and width "
+"page size values are reversed."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:64
+#, no-c-format
+msgid "margins"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:66
+#, no-c-format
+msgid "The left, right, top and bottom margin values."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:72
+#, no-c-format
+msgid "marginMirroring"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:74
+#, no-c-format
+msgid "Indicates that margin settings should be reversed an alternating pages."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:80
+#, no-c-format
+msgid ""
+"Document metadata is also set as attributes of the document tag. The "
+"following metadata fields are supported:"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:85
+#, no-c-format
+msgid "title"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:92
+#, no-c-format
+msgid "subject"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:99
+#, no-c-format
+msgid "keywords"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:106
+#, no-c-format
+msgid "author"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:113
+#, no-c-format
+msgid "creator"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:125
+#, no-c-format
+msgid "Basic Text Elements"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:126
+#, no-c-format
+msgid ""
+"Useful documents will need to contain more than just text; however, the "
+"standard UI components are geared towards HTML generation and are not useful "
+"for generating PDF content. Instead, Seam provides a special UI components "
+"for generating suitable PDF content. Tags like <literal>&lt;p:image&gt;</"
+"literal> and <literal>&lt;p:paragraph&gt;</literal> are the basic "
+"foundations of simple documents. Tags like <literal>&lt;p:font&gt;</literal> "
+"provide style information to all the content surrounging them."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:129
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"&gt; \n"
+"    &lt;p:image alignment=\"right\" wrap=\"true\" resource=\"/logo.jpg\" /"
+"&gt;\n"
+"    &lt;p:font size=\"24\"&gt;\n"
+"        &lt;p:paragraph spacingAfter=\"50\"&gt;My First Document&lt;/p:"
+"paragraph&gt;\n"
+"    &lt;/p:font&gt;\n"
+"\n"
+"    &lt;p:paragraph alignment=\"justify\"&gt;\n"
+"        This is a simple document.  It isn't very fancy.\n"
+"    &lt;/p:paragraph&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:131
+#, no-c-format
+msgid "p:paragraph"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:132
+#, no-c-format
+msgid ""
+"Most uses of text should be sectioned into paragraphs so that text fragments "
+"can be flowed, formatted and styled in logical groups."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:137
+#, no-c-format
+msgid "firstLineIndent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:144 Itext.xml:836
+#, no-c-format
+msgid "extraParagraphSpace"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:151 Itext.xml:808
+#, no-c-format
+msgid "leading"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:158 Itext.xml:815
+#, no-c-format
+msgid "multipliedLeading"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:165 Itext.xml:344 Itext.xml:716
+#, no-c-format
+msgid "spacingBefore"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:167 Itext.xml:346 Itext.xml:718
+#, no-c-format
+msgid "The blank space to be inserted before the element."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:173 Itext.xml:352 Itext.xml:724
+#, no-c-format
+msgid "spacingAfter"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:175 Itext.xml:354 Itext.xml:726
+#, no-c-format
+msgid "The blank space to be inserted after the element."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:181 Itext.xml:330 Itext.xml:599
+#, no-c-format
+msgid "indentationLeft"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:188 Itext.xml:337 Itext.xml:607
+#, no-c-format
+msgid "indentationRight"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:195 Itext.xml:753
+#, no-c-format
+msgid "keepTogether"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:205
+#, no-c-format
+msgid "p:text"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:206
+#, no-c-format
+msgid ""
+"The <literal>text</literal> tag allows text fragments to be produced from "
+"application data using normal JSF converter mechanisms. It is very similar "
+"to the <literal>outputText</literal> tag used when rendering HTML documents. "
+"Here is an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:209
+#, no-c-format
+msgid ""
+"&lt;p:paragraph&gt;\n"
+"    The item costs &lt;p:text value=\"#{product.price}\"&gt;\n"
+"        &lt;f:convertNumber type=\"currency\" currencySymbol=\"&#36;\"/&gt;\n"
+"    &lt;/p:text&gt;\n"
+"&lt;/p:paragraph&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:212
+#, no-c-format
+msgid "value"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:214
+#, no-c-format
+msgid ""
+"The value to be displayed. This will typically be a value binding expression."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:223
+#, no-c-format
+msgid "p:font"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:224
+#, no-c-format
+msgid "Font declarations have no direct"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:229
+#, no-c-format
+msgid "familyName"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:231
+#, no-c-format
+msgid ""
+"The font family. One of: <literal>COURIER</literal>, <literal>HELVETICA</"
+"literal>, <literal>TIMES-ROMAN</literal>, <literal>SYMBOL</literal> or "
+"<literal>ZAPFDINGBATS</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:237
+#, no-c-format
+msgid "size"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:239
+#, no-c-format
+msgid "The point size of the font."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:245 Itext.xml:534
+#, no-c-format
+msgid "style"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:247
+#, no-c-format
+msgid ""
+"The font styles. Any combination of : <literal>NORMAL</literal>, "
+"<literal>BOLD</literal>, <literal>ITALIC</literal>, <literal>OBLIQUE</"
+"literal>, <literal>UNDERLINE</literal>, <literal>LINE-THROUGH</literal>"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:256
+#, no-c-format
+msgid "p:newPage"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:257
+#, no-c-format
+msgid "<literal>p:newPage</literal> inserts a page break."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:263
+#, no-c-format
+msgid "p:image"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:264
+#, no-c-format
+msgid ""
+"<literal>p:image</literal> inserts an image into the document. Images can be "
+"be loaded from the classpath or from the web application context using the "
+"<literal>resource</literal> attribute."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:267
+#, no-c-format
+msgid "&lt;p:image resource=\"/jboss.jpg\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:268
+#, no-c-format
+msgid ""
+"Resources can also be dynamically generated by application code. The "
+"<literal>imageData</literal> attribute can specify a value binding "
+"expression whose value is a <literal>java.awt.Image</literal> object."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:271
+#, no-c-format
+msgid "&lt;p:image imageData=\"#{images.chart}\" /&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:274
+#, no-c-format
+msgid "resource"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:276
+#, no-c-format
+msgid ""
+"The location of the image resource to be included. Resources should be "
+"relative to the document root of the web application."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:282
+#, no-c-format
+msgid "imageData"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:284
+#, no-c-format
+msgid "A method expression binding to an application-generated image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:290 Itext.xml:913
+#, no-c-format
+msgid "rotation"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:292
+#, no-c-format
+msgid "The rotation of the image in degrees."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:298
+#, no-c-format
+msgid "height"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:300
+#, no-c-format
+msgid "The height of the image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:306
+#, no-c-format
+msgid "width"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:308
+#, no-c-format
+msgid "The width of the image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:314 Itext.xml:441 Itext.xml:591
+#, no-c-format
+msgid "alignment"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:316
+#, no-c-format
+msgid ""
+"The alignment of the image. (see <xref linkend=\"Document_Constants-"
+"Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:322
+#, no-c-format
+msgid "<literal>alt</literal>"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:324
+#, no-c-format
+msgid "Alternative text representation for the image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:360 Itext.xml:672
+#, no-c-format
+msgid "widthPercentage"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:367
+#, no-c-format
+msgid "initialRotation"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:374
+#, no-c-format
+msgid "<literal>dpi</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:381
+#, no-c-format
+msgid "scalePercent"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:383
+#, no-c-format
+msgid ""
+"The scaling factor (as a percentage) to use for the image. This can be "
+"expressed as a single percentage value or as two percentage values "
+"representing separate x and y scaling percentages."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:389
+#, no-c-format
+msgid "wrap"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:396
+#, no-c-format
+msgid "underlying"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:406
+#, no-c-format
+msgid "p:anchor"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:407
+#, no-c-format
+msgid ""
+"<literal>p:anchor</literal> defines clickable links from a document. It "
+"supports the following attributes:"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:412
+#, no-c-format
+msgid "name"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:414
+#, no-c-format
+msgid "The name of an in-document anchor destination."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:420
+#, no-c-format
+msgid "reference"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:422
+#, no-c-format
+msgid ""
+"The destination the link refers to. Links to other points in the document "
+"should begin with a \"#\". For example, \"#link1\" to refer to an anchor "
+"postion with a <literal>name</literal> of <literal>link1</literal>. Links "
+"may also be a full URL to point to a resource outside of the document."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:433
+#, no-c-format
+msgid "Headers and Footers"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:435
+#, no-c-format
+msgid "p:header and p:footer"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:436
+#, no-c-format
+msgid ""
+"The <literal>p:header</literal> and <literal>p:footer</literal> components "
+"provide the ability to place header and footer text on each page of a "
+"generated document, with the exception of the first page. Header and footer "
+"declarations should appear near the top of a document."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:443
+#, no-c-format
+msgid ""
+"The alignment of the header/footer box section. (see <xref linkend="
+"\"Document_Constants-Alignment_Values\"/> for alignment values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:449
+#, no-c-format
+msgid "backgroundColor"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:451
+#, no-c-format
+msgid ""
+"The background color of the header/footer box. (see <xref linkend="
+"\"Document_Constants-Color_Values\"/> for color values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:457
+#, no-c-format
+msgid "borderColor"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:459
+#, no-c-format
+msgid ""
+"The border color of the header/footer box. Individual border sides can be "
+"set using <literal>borderColorLeft</literal>, <literal>borderColorRight</"
+"literal>, <literal>borderColorTop</literal> and <literal>borderColorBottom</"
+"literal>.(see <xref linkend=\"Document_Constants-Color_Values\"/> for color "
+"values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:465
+#, no-c-format
+msgid "borderWidth"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:467
+#, no-c-format
+msgid ""
+"The width of the border. Inidvidual border sides can be specified using "
+"<literal>borderWidthLeft</literal>, <literal>borderWidthRight</literal>, "
+"<literal>borderWidthTop</literal> and <literal>borderWidthBottom</literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:476
+#, no-c-format
+msgid "p:pageNumber"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:477
+#, no-c-format
+msgid ""
+"The current page number can be placed inside of a header or footer using the "
+"<literal>p:pageNumber</literal> tag. The page number tag can only be used in "
+"the context of a header or footer and can only be used once."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:485
+#, no-c-format
+msgid "Chapters and Sections"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:486
+#, no-c-format
+msgid ""
+"If the generated document follows a book/article structure, the <literal>p:"
+"chapter</literal> and <literal>p:section</literal> tags can be used to "
+"provide the necessary structure. Sections can only be used inside of "
+"chapters, but they may be nested arbitrarily deep. Most PDF viewers provide "
+"easy navigation between chapters and sections in a document."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:489
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"\n"
+"            title=\"Hello\"&gt;\n"
+"\n"
+"   &lt;p:chapter number=\"1\"&gt;\n"
+"      &lt;p:title&gt;&lt;p:paragraph&gt;Hello&lt;/p:paragraph&gt;&lt;/p:"
+"title&gt;\n"
+"      &lt;p:paragraph&gt;Hello #{user.name}!&lt;/p:paragraph&gt;\n"
+"   &lt;/p:chapter&gt;\n"
+"\n"
+"   &lt;p:chapter number=\"2\"&gt;\n"
+"      &lt;p:title&gt;&lt;p:paragraph&gt;Goodbye&lt;/p:paragraph&gt;&lt;/p:"
+"title&gt;\n"
+"      &lt;p:paragraph&gt;Goodbye #{user.name}.&lt;/p:paragraph&gt;\n"
+"   &lt;/p:chapter&gt;\n"
+"\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:491
+#, no-c-format
+msgid "p:chapter and p:section"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:494
+#, no-c-format
+msgid "number"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:496
+#, no-c-format
+msgid "The chapter number. Every chapter should be assigned a chapter number."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:502
+#, no-c-format
+msgid "numberDepth"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:504
+#, no-c-format
+msgid ""
+"The depth of numbering for section. All sections are numbered relative to "
+"their surrounding chapter/sections. The fourth section of of the first "
+"section of chapter three would be section 3.1.4, if displayed at the default "
+"number depth of three. To omit the chapter number, a number depth of 2 "
+"should be used. In that case, the section number would be displayed as 1.4."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:513
+#, no-c-format
+msgid "p:title"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:514
+#, no-c-format
+msgid ""
+"Any chapter or section can contain a <literal>p:title</literal>. The title "
+"will be displayed next to the chapter/section number. The body of the title "
+"may contain raw text or may be a <literal>p:paragraph</literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:522
+#, no-c-format
+msgid "Lists"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:523
+#, no-c-format
+msgid ""
+"List structures can be displayed using the <literal>p:list</literal> and "
+"<literal>p:listItem</literal> tags. Lists may contain arbitrarily-nested "
+"sublists. List items may not be used outside of a list. he following "
+"document uses the <literal>ui:repeat</literal> tag to to display a list of "
+"values retrieved from a Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:526
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"\n"
+"            xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"            title=\"Hello\"&gt;\n"
+"   &lt;p:list style=\"numbered\"&gt;\n"
+"      &lt;ui:repeat value=\"#{documents}\" var=\"doc\"&gt;\n"
+"         &lt;p:listItem&gt;#{doc.name}&lt;/p:listItem&gt;\n"
+"      &lt;/ui:repeat&gt;\n"
+"   &lt;/p:list&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:528
+#, no-c-format
+msgid "p:list"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:529
+#, no-c-format
+msgid "<literal>p:list</literal> supports the following attributes:"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:536
+#, no-c-format
+msgid ""
+"The ordering/bulleting style of list. One of: <literal>NUMBERED</literal>, "
+"<literal>LETTERED</literal>, <literal>GREEK</literal>, <literal>ROMAN</"
+"literal>, <literal>ZAPFDINGBATS</literal>, <literal>ZAPFDINGBATS_NUMBER</"
+"literal>. If no style is given, the list items are bulleted."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:542 Itext.xml:615
+#, no-c-format
+msgid "listSymbol"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:544
+#, no-c-format
+msgid "For bulleted lists, specifies the bullet symbol."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:550 Itext.xml:822
+#, no-c-format
+msgid "indent"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:552
+#, no-c-format
+msgid "The indentation level of the list."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:558
+#, no-c-format
+msgid "lowerCase"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:560
+#, no-c-format
+msgid ""
+"For list styles using letters, indicates whether the letters should be lower "
+"case."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:566
+#, no-c-format
+msgid "charNumber"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:568
+#, no-c-format
+msgid "For ZAPFDINGBATS, indicates the character code of the bullet character."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:574
+#, no-c-format
+msgid "numberType"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:576
+#, no-c-format
+msgid "For ZAPFDINGBATS_NUMBER, indicates the numbering style."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:585
+#, no-c-format
+msgid "p:listItem"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:586
+#, no-c-format
+msgid "<literal>p:listItem</literal> supports the following attributes:"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:593
+#, no-c-format
+msgid ""
+"The alignment of the list item. (See <xref linkend=\"Document_Constants-"
+"Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:601
+#, no-c-format
+msgid "The left indentation amount."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:609
+#, no-c-format
+msgid "The right indentation amount."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:617
+#, no-c-format
+msgid "Overrides the default list symbol for this list item."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:628
+#, no-c-format
+msgid "Tables"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:629
+#, no-c-format
+msgid ""
+"Table structures can be created using the <literal>p:table</literal> and "
+"<literal>p:cell</literal> tags. Unlike many table structures, there is no "
+"explicit row declaration. If a table has 3 columns, then every 3 cells will "
+"automatically form a row. Header and footer rows can be declared, and the "
+"headers and footers will be repeated in the event a table structure spans "
+"multiple pages."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:632
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"   \n"
+"            xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"            title=\"Hello\"&gt;   \n"
+"   &lt;p:table columns=\"3\" headerRows=\"1\"&gt;\n"
+"      &lt;p:cell&gt;name&lt;/p:cell&gt;\n"
+"      &lt;p:cell&gt;owner&lt;/p:cell&gt;\n"
+"      &lt;p:cell&gt;size&lt;/p:cell&gt;\n"
+"      &lt;ui:repeat value=\"#{documents}\" var=\"doc\"&gt;\n"
+"         &lt;p:cell&gt;#{doc.name}&lt;/p:cell&gt;\n"
+"         &lt;p:cell&gt;#{doc.user.name}&lt;/p:cell&gt;\n"
+"         &lt;p:cell&gt;#{doc.size}&lt;/p:cell&gt;\n"
+"      &lt;/ui:repeat&gt;\n"
+"   &lt;/p:table&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:634
+#, no-c-format
+msgid "p:table"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:635
+#, no-c-format
+msgid "<literal>p:table</literal> supports the following attributes."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:640
+#, no-c-format
+msgid "columns"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:642
+#, no-c-format
+msgid "The number of columns (cells) that make up a table row."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:648
+#, no-c-format
+msgid "widths"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:650
+#, no-c-format
+msgid ""
+"The relative widths of each column. There should be one value for each "
+"column. For example: widths=\"2 1 1\" would indicate that there are 3 "
+"columns and the first column should be twice the size of the second and "
+"third column."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:656
+#, no-c-format
+msgid "headerRows"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:658
+#, no-c-format
+msgid ""
+"The initial number of rows which are considered to be headers or footer rows "
+"and should be repeated if the table spans multiple pages."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:664
+#, no-c-format
+msgid "footerRows"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:666
+#, no-c-format
+msgid ""
+"The number of rows that are considered to be footer rows. This value is "
+"subtracted from the <literal>headerRows</literal> value. If document has 2 "
+"rows which make up the header and one row that makes up the footer, "
+"<literal>headerRows</literal> should be set to 3 and <literal>footerRows</"
+"literal> should be set to 1"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:674
+#, no-c-format
+msgid "The percentage of the page width that the table spans."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:680 Itext.xml:777
+#, no-c-format
+msgid "horizontalAlignment"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:682
+#, no-c-format
+msgid ""
+"The horizontal alignment of the table. (See <xref linkend="
+"\"Document_Constants-Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:688
+#, no-c-format
+msgid "skipFirstHeader"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:695 Itext.xml:885
+#, no-c-format
+msgid "runDirection"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:702
+#, no-c-format
+msgid "lockedWidth"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:709
+#, no-c-format
+msgid "splitRows"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:732
+#, no-c-format
+msgid "extendLastRow"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:739
+#, no-c-format
+msgid "headersInEvent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:746
+#, no-c-format
+msgid "splitLate"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:763
+#, no-c-format
+msgid "p:cell"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:764
+#, no-c-format
+msgid "<literal>p:cell</literal> supports the following attributes."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:769
+#, no-c-format
+msgid "colspan"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:771
+#, no-c-format
+msgid ""
+"Cells can span more than one column by declaring a <literal>colspan</"
+"literal> greater than 1. Tables do not have the ability to span across "
+"multiple rows."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:779
+#, no-c-format
+msgid ""
+"The horizontal alignment of the cell. (see <xref linkend="
+"\"Document_Constants-Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:785 Itext.xml:829
+#, no-c-format
+msgid "verticalAlignment"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:787
+#, no-c-format
+msgid ""
+"The vertical alignment of the cell. (see <xref linkend=\"Document_Constants-"
+"Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:793
+#, no-c-format
+msgid "padding"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:795
+#, no-c-format
+msgid ""
+"Padding on a given side can also be specified using <literal>paddingLeft</"
+"literal>, <literal>paddingRight</literal>, <literal>paddingTop</literal> and "
+"<literal>paddingBottom</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:801
+#, no-c-format
+msgid "useBorderPadding"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:843
+#, no-c-format
+msgid "fixedHeight"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:850
+#, no-c-format
+msgid "noWrap"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:857
+#, no-c-format
+msgid "minimumHeight"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:864
+#, no-c-format
+msgid "followingIndent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:871
+#, no-c-format
+msgid "rightIndent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:878
+#, no-c-format
+msgid "spaceCharRatio"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:892
+#, no-c-format
+msgid "arabicOptions"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:899
+#, no-c-format
+msgid "useAscender"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:906
+#, no-c-format
+msgid "grayFill"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:925
+#, no-c-format
+msgid "Document Constants"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:926
+#, no-c-format
+msgid ""
+"This section documents some of the constants shared by attributes on "
+"multiple tags."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:930
+#, no-c-format
+msgid "Color Values"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:931
+#, no-c-format
+msgid ""
+"Seam documents do not yet support a full color specification. Currently, "
+"only named colors are supported. They are: <literal>white</literal>, "
+"<literal>gray</literal>, <literal>lightgray</literal>, <literal>darkgray</"
+"literal>, <literal>black</literal>, <literal>red</literal>, <literal>pink</"
+"literal>, <literal>yellow</literal>, <literal>green</literal>, "
+"<literal>magenta</literal>, <literal>cyan</literal> and <literal>blue</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:937
+#, no-c-format
+msgid "Alignment Values"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:938
+#, no-c-format
+msgid ""
+"Where alignment values are used, the Seam PDF supports the following "
+"horizontal alignment values: <literal>left</literal>, <literal>right</"
+"literal>, <literal>center</literal>, <literal>justify</literal> and "
+"<literal>justifyall</literal>. The vertical alignment values are "
+"<literal>top</literal>, <literal>middle</literal>, <literal>bottom</"
+"literal>, and <literal>baseline</literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:946
+#, no-c-format
+msgid "Configuring iText"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:947
+#, no-c-format
+msgid ""
+"Document generation works out of the box with no additional configuration "
+"needed. However, there are a few points of configuration that are needed for "
+"more serious applications."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:950
+#, no-c-format
+msgid ""
+"The default implementation serves PDF documents from a generic URL, "
+"<literal>/seam-doc.seam</literal>. Many browsers (and users) would prefer to "
+"see URLs that contain the actual PDF name like <literal>/myDocument.pdf</"
+"literal>. This capability requires some configuration. To serve PDF files, "
+"all *.pdf resources should be mapped to the Seam Servlet Filter and to the "
+"DocumentStoreServlet:"
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:953
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.servlet.SeamServletFilter&lt;/filter-"
+"class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;\n"
+"\n"
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.pdf.DocumentStoreServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"\n"
+"&lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:954
+#, no-c-format
+msgid ""
+"The <literal>useExtensions</literal> option on the document store component "
+"completes the functionality by instructing the document store to generate "
+"URLs with the correct filename extension for the document type being "
+"generated."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:957
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pdf=\"http://jboss.com/products/seam/pdf\"&gt;\n"
+"    &lt;pdf:documentStore useExtensions=\"true\" /&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:958
+#, no-c-format
+msgid ""
+"Generated documents are stored in conversation scope and will expire when "
+"the conversation ends. At that point, references to the document will be "
+"invalid. To You can specify a default view to be shown when a document does "
+"not exist using the <literal>errorPage</literal> property of the "
+"documentStore."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:961
+#, no-c-format
+msgid ""
+"&lt;pdf:documentStore useExtensions=\"true\" errorPage=\"/pdfMissing.seam\" /"
+"&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:965
+#, no-c-format
+msgid "iText links"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:966
+#, no-c-format
+msgid "For further information on iText, see:"
+msgstr ""
+
+#. Tag: ulink
+#: Itext.xml:973
+#, no-c-format
+msgid "iText Home Page"
+msgstr ""
+
+#. Tag: ulink
+#: Itext.xml:978
+#, no-c-format
+msgid "iText in Action"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Jbpm.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Jbpm.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Jbpm.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1189 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Jbpm.xml:10
+#, no-c-format
+msgid "Pageflows and business processes"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:11
+#, no-c-format
+msgid ""
+"JBoss jBPM is a business process management engine for any Java SE or EE "
+"environment. jBPM lets you represent a business process or user interaction "
+"as a graph of nodes representing wait states, decisions, tasks, web pages, "
+"etc. The graph is defined using a simple, very readable, XML dialect called "
+"jPDL, and may be edited and visualised graphically using an eclipse plugin. "
+"jPDL is an extensible language, and is suitable for a range of problems, "
+"from defining web application page flow, to traditional workflow management, "
+"all the way up to orchestration of services in a SOA environment."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:14
+#, no-c-format
+msgid "Seam applications use jBPM for two different problems:"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:20
+#, no-c-format
+msgid ""
+"Defining the pageflow involved in complex user interactions. A jPDL process "
+"definition defines the page flow for a single conversation. A Seam "
+"conversation is considered to be a relatively short-running interaction with "
+"a single user."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:25
+#, no-c-format
+msgid ""
+"Defining the overarching business process. The business process may span "
+"multiple conversations with multiple users. Its state is persistent in the "
+"jBPM database, so it is considered long-running. Coordination of the "
+"activities of multiple users is a much more complex problem than scripting "
+"an interaction with a single user, so jBPM offers sophisticated facilities "
+"for task management and dealing with multiple concurrent paths of execution."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:31
+#, no-c-format
+msgid ""
+"Don't get these two things confused ! They operate at very different levels "
+"or granularity. <emphasis>Pageflow</emphasis>, <emphasis>conversation</"
+"emphasis> and <emphasis>task</emphasis> all refer to a single interaction "
+"with a single user. A business process spans many tasks. Futhermore, the two "
+"applications of jBPM are totally orthogonal. You can use them together or "
+"independently or not at all."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:34
+#, no-c-format
+msgid ""
+"You don't have to know jDPL to use Seam. If you're perfectly happy defining "
+"pageflow using JSF or Seam navigation rules, and if your application is more "
+"data-driven that process-driven, you probably don't need jBPM. But we're "
+"finding that thinking of user interaction in terms of a well-defined "
+"graphical representation is helping us build more robust applications."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:37
+#, no-c-format
+msgid ""
+"Please refer to the jBPM documentation for a more thorough overview of the "
+"sophisticated features that jBPM provides for managing complex business "
+"processes."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:41
+#, no-c-format
+msgid "Pageflow in Seam"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:42
+#, no-c-format
+msgid "There are two ways to define pageflow in Seam:"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:47
+#, no-c-format
+msgid ""
+"Using JSF or Seam navigation rules - the <emphasis>stateless navigation "
+"model</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:52
+#, no-c-format
+msgid "Using jPDL - the <emphasis>stateful navigation model</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:57
+#, no-c-format
+msgid ""
+"Very simple applications will only need the stateless navigation model. Very "
+"complex applications will use both models in different places. Each model "
+"has its strengths and weaknesses!"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:60
+#, no-c-format
+msgid ""
+"In practice, both navigation models have their place, and you'll quickly "
+"learn to recognize when to prefer one model over the other."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:64
+#, no-c-format
+msgid "The two navigation models"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:65
+#, no-c-format
+msgid ""
+"The stateless model defines a mapping from a set of named, logical outcomes "
+"of an event directly to the resulting page of the view. The navigation rules "
+"are entirely oblivious to any state held by the application other than what "
+"page was the source of the event. This means that your action listener "
+"methods must sometimes make decisions about the page flow, since only they "
+"have access to the current state of the application."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:68
+#, no-c-format
+msgid "Here is an example page flow definition using JSF navigation rules:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:71
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"    &lt;from-view-id&gt;/numberGuess.jsp&lt;/from-view-id&gt;\n"
+"        \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;guess&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/numberGuess.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;win&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/win.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"        \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;lose&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/lose.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:72
+#, no-c-format
+msgid ""
+"Here is the same example page flow definition using Seam navigation rules:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:75
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/numberGuess.jsp\"&gt;\n"
+"        \n"
+"    &lt;navigation&gt;\n"
+"        &lt;rule if-outcome=\"guess\"&gt;\n"
+"            &lt;redirect view-id=\"/numberGuess.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"        &lt;rule if-outcome=\"win\"&gt;\n"
+"            &lt;redirect view-id=\"/win.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"        &lt;rule if-outcome=\"lose\"&gt;\n"
+"            &lt;redirect view-id=\"/lose.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:76
+#, no-c-format
+msgid ""
+"If you find navigation rules overly verbose, you can return view ids "
+"directly from your action listener methods:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:79
+#, no-c-format
+msgid ""
+"public String guess() {\n"
+"    if (guess==randomNumber) return \"/win.jsp\";\n"
+"    if (++guessCount==maxGuesses) return \"/lose.jsp\";\n"
+"    return null;\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:80
+#, no-c-format
+msgid ""
+"Note that this results in a redirect. You can even specify parameters to be "
+"used in the redirect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:83
+#, no-c-format
+msgid ""
+"public String search() {\n"
+"    return \"/searchResults.jsp?searchPattern=#{searchAction.searchPattern}"
+"\";\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:84
+#, no-c-format
+msgid ""
+"The stateful model defines a set of transitions between a set of named, "
+"logical application states. In this model, it is possible to express the "
+"flow of any user interaction entirely in the jPDL pageflow definition, and "
+"write action listener methods that are completely unaware of the flow of the "
+"interaction."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:87
+#, no-c-format
+msgid "Here is an example page flow definition using jPDL:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:90
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"numberGuess\"&gt;\n"
+"    \n"
+"   &lt;start-page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"      &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"      &lt;/transition&gt;\n"
+"   &lt;/start-page&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess."
+"correctGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateRemainingGuesses\" expression=\"#{numberGuess."
+"lastGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"lose\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"displayGuess\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"lose\" view-id=\"/lose.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:99
+#, no-c-format
+msgid "There are two things we notice immediately here:"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:104
+#, no-c-format
+msgid ""
+"The JSF/Seam navigation rules are <emphasis>much</emphasis> simpler. "
+"(However, this obscures the fact that the underlying Java code is more "
+"complex.)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:109
+#, no-c-format
+msgid ""
+"The jPDL makes the user interaction immediately understandable, without us "
+"needing to even look at the JSP or Java code."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:114
+#, no-c-format
+msgid ""
+"In addition, the stateful model is more <emphasis>constrained</emphasis>. "
+"For each logical state (each step in the page flow), there are a constrained "
+"set of possible transitions to other states. The stateless model is an "
+"<emphasis>ad hoc</emphasis> model which is suitable to relatively "
+"unconstrained, freeform navigation where the user decides where he/she wants "
+"to go next, not the application."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:117
+#, no-c-format
+msgid ""
+"The stateful/stateless navigation distinction is quite similar to the "
+"traditional view of modal/modeless interaction. Now, Seam applications are "
+"not usually modal in the simple sense of the word - indeed, avoiding "
+"application modal behavior is one of the main reasons for having "
+"conversations! However, Seam applications can be, and often are, modal at "
+"the level of a particular conversation. It is well-known that modal behavior "
+"is something to avoid as much as possible; it is very difficult to predict "
+"the order in which your users are going to want to do things! However, there "
+"is no doubt that the stateful model has its place."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:120
+#, no-c-format
+msgid ""
+"The biggest contrast between the two models is the back-button behavior."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:126
+#, no-c-format
+msgid "Seam and the back button"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:127
+#, no-c-format
+msgid ""
+"When JSF or Seam navigation rules are used, Seam lets the user freely "
+"navigate via the back, forward and refresh buttons. It is the responsibility "
+"of the application to ensure that conversational state remains internally "
+"consistent when this occurs. Experience with the combination of web "
+"application frameworks like Struts or WebWork - that do not support a "
+"conversational model - and stateless component models like EJB stateless "
+"session beans or the Spring framework has taught many developers that this "
+"is close to impossible to do! However, our experience is that in the context "
+"of Seam, where there is a well-defined conversational model, backed by "
+"stateful session beans, it is actually quite straightforward. Usually it is "
+"as simple as combining the use of <literal>no-conversation-view-id</literal> "
+"with null checks at the beginning of action listener methods. We consider "
+"support for freeform navigation to be almost always desirable."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:130
+#, no-c-format
+msgid ""
+"In this case, the <literal>no-conversation-view-id</literal> declaration "
+"goes in <literal>pages.xml</literal>. It tells Seam to redirect to a "
+"different page if a request originates from a page rendered during a "
+"conversation, and that conversation no longer exists:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:133
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/checkout.xhtml\" \n"
+"        no-conversation-view-id=\"/main.xhtml\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:134
+#, no-c-format
+msgid ""
+"On the other hand, in the stateful model, backbuttoning is interpreted as an "
+"undefined transition back to a previous state. Since the stateful model "
+"enforces a defined set of transitions from the current state, back buttoning "
+"is be default disallowed in the stateful model! Seam transparently detects "
+"the use of the back button, and blocks any attempt to perform an action from "
+"a previous, \"stale\" page, and simply redirects the user to the \"current\" "
+"page (and displays a faces message). Whether you consider this a feature or "
+"a limitation of the stateful model depends upon your point of view: as an "
+"application developer, it is a feature; as a user, it might be frustrating! "
+"You can enable backbutton navigation from a particular page node by setting "
+"<literal>back=\"enabled\"</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:137
+#, no-c-format
+msgid ""
+"&lt;page name=\"checkout\" \n"
+"        view-id=\"/checkout.xhtml\" \n"
+"        back=\"enabled\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"checkout\"/&gt;\n"
+"    &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:138
+#, no-c-format
+msgid ""
+"This allows backbuttoning <emphasis>from</emphasis> the <literal>checkout</"
+"literal> state to <emphasis>any previous state!</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:141
+#, no-c-format
+msgid ""
+"Of course, we still need to define what happens if a request originates from "
+"a page rendered during a pageflow, and the conversation with the pageflow no "
+"longer exists. In this case, the <literal>no-conversation-view-id</literal> "
+"declaration goes into the pageflow definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:144
+#, no-c-format
+msgid ""
+"&lt;page name=\"checkout\" \n"
+"        view-id=\"/checkout.xhtml\" \n"
+"        back=\"enabled\" \n"
+"        no-conversation-view-id=\"/main.xhtml\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"checkout\"/&gt;\n"
+"    &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:151
+#, no-c-format
+msgid "Using jPDL pageflows"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:153
+#, no-c-format
+msgid "Installing pageflows"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:154
+#, no-c-format
+msgid ""
+"We need to install the Seam jBPM-related components, and tell them where to "
+"find our pageflow definition. We can specify this Seam configuration in "
+"<literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:157
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:pageflow-definitions&gt;\n"
+"        &lt;value&gt;pageflow.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:pageflow-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:158
+#, no-c-format
+msgid ""
+"The first line installs jBPM, the second points to a jPDL-based pageflow "
+"definition."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:164
+#, no-c-format
+msgid "Starting pageflows"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:165
+#, no-c-format
+msgid ""
+"We \"start\" a jPDL-based pageflow by specifying the name of the process "
+"definition using a <literal>@Begin</literal>, <literal>@BeginTask</literal> "
+"or <literal>@StartTask</literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:168
+#, no-c-format
+msgid ""
+"@Begin(pageflow=\"numberguess\")\n"
+"public void begin() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:169
+#, no-c-format
+msgid "Alternatively we can start a pageflow using pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:172
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"        &lt;begin-conversation pageflow=\"numberguess\"/&gt;\n"
+"    &lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:173
+#, no-c-format
+msgid ""
+"If we are beginning the pageflow during the <literal>RENDER_RESPONSE</"
+"literal> phase&mdash;during a <literal>@Factory</literal> or "
+"<literal>@Create</literal> method, for example&mdash;we consider ourselves "
+"to be already at the page being rendered, and use a <literal>&lt;start-"
+"page&gt;</literal> node as the first node in the pageflow, as in the example "
+"above."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:176
+#, no-c-format
+msgid ""
+"But if the pageflow is begun as the result of an action listener invocation, "
+"the outcome of the action listener determines which is the first page to be "
+"rendered. In this case, we use a <literal>&lt;start-state&gt;</literal> as "
+"the first node in the pageflow, and declare a transition for each possible "
+"outcome:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:179
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"viewEditDocument\"&gt;\n"
+"\n"
+"    &lt;start-state name=\"start\"&gt;\n"
+"        &lt;transition name=\"documentFound\" to=\"displayDocument\"/&gt;\n"
+"        &lt;transition name=\"documentNotFound\" to=\"notFound\"/&gt;\n"
+"    &lt;/start-state&gt;\n"
+"    \n"
+"    &lt;page name=\"displayDocument\" view-id=\"/document.jsp\"&gt;\n"
+"        &lt;transition name=\"edit\" to=\"editDocument\"/&gt;\n"
+"        &lt;transition name=\"done\" to=\"main\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"    \n"
+"    ...\n"
+"    \n"
+"    &lt;page name=\"notFound\" view-id=\"/404.jsp\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"    &lt;/page&gt;\n"
+"    \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:183
+#, no-c-format
+msgid "Page nodes and transitions"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:184
+#, no-c-format
+msgid ""
+"Each <literal>&lt;page&gt;</literal> node represents a state where the "
+"system is waiting for user input:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:187
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"        &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:188
+#, no-c-format
+msgid ""
+"The <literal>view-id</literal> is the JSF view id. The <literal>&lt;redirect/"
+"&gt;</literal> element has the same effect as <literal>&lt;redirect/&gt;</"
+"literal> in a JSF navigation rule: namely, a post-then-redirect behavior, to "
+"overcome problems with the browser's refresh button. (Note that Seam "
+"propagates conversation contexts over these browser redirects. So there is "
+"no need for a Ruby on Rails style \"flash\" construct in Seam!)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:191
+#, no-c-format
+msgid ""
+"The transition name is the name of a JSF outcome triggered by clicking a "
+"command button or command link in <literal>numberGuess.jsp</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:194
+#, no-c-format
+msgid ""
+"&lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"guess\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:195
+#, no-c-format
+msgid ""
+"When the transition is triggered by clicking this button, jBPM will activate "
+"the transition action by calling the <literal>guess()</literal> method of "
+"the <literal>numberGuess</literal> component. Notice that the syntax used "
+"for specifying actions in the jPDL is just a familiar JSF EL expression, and "
+"that the transition action handler is just a method of a Seam component in "
+"the current Seam contexts. So we have exactly the same event model for jBPM "
+"events that we already have for JSF events! (The <emphasis>One Kind of "
+"Stuff</emphasis> principle.)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:198
+#, no-c-format
+msgid ""
+"In the case of a null outcome (for example, a command button with no "
+"<literal>action</literal> defined), Seam will signal the transition with no "
+"name if one exists, or else simply redisplay the page if all transitions "
+"have names. So we could slightly simplify our example pageflow and this "
+"button:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:201
+#, no-c-format
+msgid "&lt;h:commandButton type=\"submit\" value=\"Guess\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:202
+#, no-c-format
+msgid "Would fire the following un-named transition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:205
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"evaluateGuess\"&gt;\n"
+"        &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:206
+#, no-c-format
+msgid ""
+"It is even possible to have the button call an action method, in which case "
+"the action outcome will determine the transition to be taken:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:209
+#, no-c-format
+msgid ""
+"&lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"#{numberGuess."
+"guess}\"/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:210
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;transition name=\"correctGuess\" to=\"win\"/&gt;\n"
+"    &lt;transition name=\"incorrectGuess\" to=\"evaluateGuess\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:211
+#, no-c-format
+msgid ""
+"However, this is considered an inferior style, since it moves responsibility "
+"for controlling the flow out of the pageflow definition and back into the "
+"other components. It is much better to centralize this concern in the "
+"pageflow itself."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:217
+#, no-c-format
+msgid "Controlling the flow"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:218
+#, no-c-format
+msgid ""
+"Usually, we don't need the more powerful features of jPDL when defining "
+"pageflows. We do need the <literal>&lt;decision&gt;</literal> node, however:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:221
+#, no-c-format
+msgid ""
+"&lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess.correctGuess}"
+"\"&gt;\n"
+"    &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"    &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"&lt;/decision&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:222
+#, no-c-format
+msgid ""
+"A decision is made by evaluating a JSF EL expression in the Seam contexts."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:228
+#, no-c-format
+msgid "Ending the flow"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:229
+#, no-c-format
+msgid ""
+"We end the conversation using <literal>&lt;end-conversation&gt;</literal> or "
+"<literal>@End</literal>. (In fact, for readability, use of <emphasis>both</"
+"emphasis> is encouraged.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:232
+#, no-c-format
+msgid ""
+"&lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;end-conversation/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:233
+#, no-c-format
+msgid ""
+"Optionally, we can end a task, specify a jBPM <literal>transition</literal> "
+"name. In this case, Seam will signal the end of the current task in the "
+"overarching business process."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:236
+#, no-c-format
+msgid ""
+"&lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;end-task transition=\"success\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:242
+#, no-c-format
+msgid "Business process management in Seam"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:243
+#, no-c-format
+msgid ""
+"A business process is a well-defined set of tasks that must be performed by "
+"users or software systems according to well-defined rules about "
+"<emphasis>who</emphasis> can perform a task, and <emphasis>when</emphasis> "
+"it should be performed. Seam's jBPM integration makes it easy to display "
+"lists of tasks to users and let them manage their tasks. Seam also lets the "
+"application store state associated with the business process in the "
+"<literal>BUSINESS_PROCESS</literal> context, and have that state made "
+"persistent via jBPM variables."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:246
+#, no-c-format
+msgid ""
+"A simple business process definition looks much the same as a page flow "
+"definition (<emphasis>One Kind of Stuff</emphasis>), except that instead of "
+"<literal>&lt;page&gt;</literal> nodes, we have <literal>&lt;task-node&gt;</"
+"literal> nodes. In a long-running business process, the wait states are "
+"where the system is waiting for some user to log in and perform a task."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:249
+#, no-c-format
+msgid ""
+"&lt;process-definition name=\"todo\"&gt;\n"
+"   \n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"todo\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;task-node name=\"todo\"&gt;\n"
+"      &lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"         &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"      &lt;/task&gt;\n"
+"      &lt;transition to=\"done\"/&gt;\n"
+"   &lt;/task-node&gt;\n"
+"   \n"
+"   &lt;end-state name=\"done\"/&gt;\n"
+"   \n"
+"&lt;/process-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:260
+#, no-c-format
+msgid ""
+"It is perfectly possible that we might have both jPDL business process "
+"definitions and jPDL pageflow definitions in the same project. If so, the "
+"relationship between the two is that a single <literal>&lt;task&gt;</"
+"literal> in a business process corresponds to a whole pageflow <literal>&lt;"
+"pageflow-definition&gt;</literal>"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:265
+#, no-c-format
+msgid "Using jPDL business process definitions"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:267
+#, no-c-format
+msgid "Installing process definitions"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:268
+#, no-c-format
+msgid ""
+"We need to install jBPM, and tell it where to find the business process "
+"definitions:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:271
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;todo.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:275
+#, no-c-format
+msgid "Initializing actor ids"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:276
+#, no-c-format
+msgid ""
+"We always need to know what user is currently logged in. jBPM \"knows\" "
+"users by their <emphasis>actor id</emphasis> and <emphasis>group actor ids</"
+"emphasis>. We specify the current actor ids using the built in Seam "
+"component named <literal>actor</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:279
+#, no-c-format
+msgid ""
+"@In Actor actor;\n"
+"\n"
+"public String login() {\n"
+"    ...\n"
+"    actor.setId( user.getUserName() );\n"
+"    actor.getGroupActorIds().addAll( user.getGroupNames() );\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:283
+#, no-c-format
+msgid "Initiating a business process"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:284
+#, no-c-format
+msgid ""
+"To initiate a business process instance, we use the <literal>@CreateProcess</"
+"literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:287
+#, no-c-format
+msgid ""
+"@CreateProcess(definition=\"todo\")\n"
+"public void createTodo() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:288
+#, no-c-format
+msgid "Alternatively we can initiate a business process using pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:291
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;create-process definition=\"todo\" /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:295
+#, no-c-format
+msgid "Task assignment"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:296
+#, no-c-format
+msgid ""
+"When a process starts, task instances are created. These must be assigned to "
+"users or user groups. We can either hardcode our actor ids, or delegate to a "
+"Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:299
+#, no-c-format
+msgid ""
+"&lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"    &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"&lt;/task&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:300
+#, no-c-format
+msgid ""
+"In this case, we have simply assigned the task to the current user. We can "
+"also assign tasks to a pool:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:303
+#, no-c-format
+msgid ""
+"&lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"    &lt;assignment pooled-actors=\"employees\"/&gt;\n"
+"&lt;/task&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:307
+#, no-c-format
+msgid "Task lists"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:308
+#, no-c-format
+msgid ""
+"Several built-in Seam components make it easy to display task lists. The "
+"<literal>pooledTaskInstanceList</literal> is a list of pooled tasks that "
+"users may assign to themselves:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:311
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{pooledTaskInstanceList}\" var=\"task\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Description&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{task.description}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link action=\"#{pooledTask.assignToCurrentActor}\" value="
+"\"Assign\" taskInstance=\"#{task}\"/&gt;\n"
+"    &lt;/h:column&gt;            \n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:312
+#, no-c-format
+msgid ""
+"Note that instead of <literal>&lt;s:link&gt;</literal> we could have used a "
+"plain JSF <literal>&lt;h:commandLink&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:315
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"#{pooledTask.assignToCurrentActor}\"&gt; \n"
+"    &lt;f:param name=\"taskId\" value=\"#{task.id}\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:316
+#, no-c-format
+msgid ""
+"The <literal>pooledTask</literal> component is a built-in component that "
+"simply assigns the task to the current user."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:319
+#, no-c-format
+msgid ""
+"The <literal>taskInstanceListByType</literal> component includes tasks of a "
+"particular type that are assigned to the current user:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:322
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{taskInstanceListByType['todo']}\" var=\"task"
+"\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Description&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{task.description}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link action=\"#{todoList.start}\" value=\"Start Work\" "
+"taskInstance=\"#{task}\"/&gt;\n"
+"    &lt;/h:column&gt;            \n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:326
+#, no-c-format
+msgid "Performing a task"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:327
+#, no-c-format
+msgid ""
+"To begin work on a task, we use either <literal>@StartTask</literal> or "
+"<literal>@BeginTask</literal> on the listener method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:330
+#, no-c-format
+msgid ""
+"@StartTask\n"
+"public String start() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:331
+#, no-c-format
+msgid "Alternatively we can begin work on a task using pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:334
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;start-task /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:335
+#, no-c-format
+msgid ""
+"These annotations begin a special kind of conversation that has significance "
+"in terms of the overarching business process. Work done by this conversation "
+"has access to state held in the business process context."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:338
+#, no-c-format
+msgid ""
+"If we end the conversation using <literal>@EndTask</literal>, Seam will "
+"signal the completion of the task:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:341
+#, no-c-format
+msgid ""
+"@EndTask(transition=\"completed\")\n"
+"public String completed() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:342
+#, no-c-format
+msgid "Alternatively we can use pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:345
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;end-task transition=\"completed\" /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:346
+#, no-c-format
+msgid ""
+"(Alternatively, we could have used <literal>&lt;end-conversation&gt;</"
+"literal> as shown above.)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:349
+#, no-c-format
+msgid ""
+"At this point, jBPM takes over and continues executing the business process "
+"definition. (In more complex processes, several tasks might need to be "
+"completed before process execution can resume.)"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Jms.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Jms.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Jms.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,477 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Jms.xml:10
+#, no-c-format
+msgid "Asynchronicity and messaging"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:11
+#, no-c-format
+msgid ""
+"Seam makes it very easy to perform work asynchronously from a web request. "
+"When most people think of asynchronicity in Java EE, they think of using "
+"JMS. This is certainly one way to approach the problem in Seam, and is the "
+"right way when you have strict and well-defined quality of service "
+"requirements. Seam makes it easy to send and recieve JMS messages using Seam "
+"components."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:14
+#, no-c-format
+msgid ""
+"But for many usecases, JMS is overkill. Seam layers a simple asynchronous "
+"method and event facility over the EJB 3.0 timer service."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:17
+#, no-c-format
+msgid "Asynchronicity"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:18
+#, no-c-format
+msgid ""
+"Asynchronous events and method calls have the same quality of service "
+"expectations as the container's EJB timer service. If you're not familiar "
+"with the Timer service, don't worry, you don't need to interact with it "
+"directly if you want to use asynchronous methods in Seam."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:21
+#, no-c-format
+msgid ""
+"To use asynchronous methods and events, you need to add the following line "
+"to <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:24
+#, no-c-format
+msgid "&lt;core:dispatcher/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:25
+#, no-c-format
+msgid ""
+"Note that this functionality is not available in environments which do not "
+"support EJB 3.0."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:28
+#, no-c-format
+msgid "Asynchronous methods"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:29
+#, no-c-format
+msgid ""
+"In simplest form, an asynchronous call just lets a method call be processed "
+"asynchronously (in a different thread) from the caller. We usually use an "
+"asynchronous call when we want to return an immediate response to the "
+"client, and let some expensive work be processed in the background. This "
+"pattern works very well in applications which use AJAX, where the client can "
+"automatically poll the server for the result of the work."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:32
+#, no-c-format
+msgid ""
+"For EJB components, we annotate the local interface to specify that a method "
+"is processed asynchronously."
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:35
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public void processPayment(Payment payment);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:36
+#, no-c-format
+msgid ""
+"(For JavaBean components we can annotate the component implementation class "
+"if we like.)"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:39
+#, no-c-format
+msgid "The use of asynchronicity is transparent to the bean class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:42
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"paymentHandler\")\n"
+"public class PaymentHandlerBean implements PaymentHandler\n"
+"{\n"
+"    public void processPayment(Payment payment)\n"
+"    {\n"
+"        //do some work!\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:43
+#, no-c-format
+msgid "And also transparent to the client:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:46
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String pay()\n"
+"    {\n"
+"        paymentHandler.processPayment( new Payment(bill) );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:47
+#, no-c-format
+msgid ""
+"The asynchronous method is processed in a completely new event context and "
+"does not have access to the session or conversation context state of the "
+"caller. However, the business process context <emphasis>is</emphasis> "
+"propagated."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:50
+#, no-c-format
+msgid ""
+"Asynchronous method calls may be scheduled for later execution using the "
+"<literal>@Duration</literal>, <literal>@Expiration</literal> and "
+"<literal>@IntervalDuration</literal> annotations."
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:53
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public void processScheduledPayment(Payment payment, @Expiration Date "
+"date);\n"
+"\n"
+"    @Asynchronous\n"
+"    public void processRecurringPayment(Payment payment, @Expiration Date "
+"date, \n"
+"        @IntervalDuration Long interval)'\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:54
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String schedulePayment()\n"
+"    {\n"
+"        paymentHandler.processScheduledPayment( new Payment(bill), bill."
+"getDueDate() );\n"
+"        return \"success\";\n"
+"    }\n"
+"\n"
+"    public String scheduleRecurringPayment()\n"
+"    {\n"
+"        paymentHandler.processRecurringPayment( new Payment(bill), bill."
+"getDueDate(), ONE_MONTH );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:55
+#, no-c-format
+msgid ""
+"Both client and server may access the <literal>Timer</literal> object "
+"associated with the invocation."
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:58
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public Timer processScheduledPayment(Payment payment, @Expiration Date "
+"date);\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:59
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"paymentHandler\")\n"
+"public class PaymentHandlerBean implements PaymentHandler\n"
+"{\n"
+"    @In Timer timer;\n"
+"    \n"
+"    public Timer processScheduledPayment(Payment payment, @Expiration Date "
+"date)\n"
+"    {\n"
+"        //do some work!\n"
+"        \n"
+"        return timer; //note that return value is completely ignored\n"
+"    }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:60
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String schedulePayment()\n"
+"    {\n"
+"        Timer timer = paymentHandler.processScheduledPayment( new Payment"
+"(bill), bill.getDueDate() );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:61
+#, no-c-format
+msgid "Asynchronous methods cannot return any other value to the caller."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:64
+#, no-c-format
+msgid "Asynchronous events"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:65
+#, no-c-format
+msgid ""
+"Component-driven events may also be asynchronous. To raise an event for "
+"asynchronous processing, simply call the <literal>raiseAsynchronousEvent()</"
+"literal> methods of the <literal>Events</literal> class. To schedule a timed "
+"event, call one of the <literal>raiseTimedEvent()</literal> methods. "
+"Components may observe asynchronous events in the usual way, but remember "
+"that only the business process context is propagated to the asynchronous "
+"thread."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:68
+#, no-c-format
+msgid "Messaging in Seam"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:69
+#, no-c-format
+msgid ""
+"Seam makes it easy to send and receive JMS messages to and from Seam "
+"components."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:72
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:73
+#, no-c-format
+msgid ""
+"To configure Seam's infrastructure for sending JMS messages, you need to "
+"tell Seam about any topics and queues you want to send messages to, and also "
+"tell Seam where to find the <literal>QueueConnectionFactory</literal> and/or "
+"<literal>TopicConnectionFactory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:76
+#, no-c-format
+msgid ""
+"Seam defaults to using <literal>UIL2ConnectionFactory</literal> which is the "
+"usual connection factory for use with JBossMQ. If you are using some other "
+"JMS provider, you need to set one or both of <literal>queueConnection."
+"queueConnectionFactoryJndiName</literal> and <literal>topicConnection."
+"topicConnectionFactoryJndiName</literal> in <literal>seam.properties</"
+"literal>, <literal>web.xml</literal> or <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:79
+#, no-c-format
+msgid ""
+"You also need to list topics and queues in <literal>components.xml</literal> "
+"to install Seam managed <literal>TopicPublisher</literal>s and "
+"<literal>QueueSender</literal>s:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:82
+#, no-c-format
+msgid ""
+"&lt;jms:managed-topic-publisher name=\"stockTickerPublisher\" auto-create="
+"\"true\" \n"
+"    topic-jndi-name=\"topic/stockTickerTopic\"/&gt;\n"
+"\n"
+"&lt;jms:managed-queue-sender name=\"paymentQueueSender\" auto-create=\"true"
+"\" \n"
+"    queue-jndi-name=\"queue/paymentQueue\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:83
+#, no-c-format
+msgid "Sending messages"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:84
+#, no-c-format
+msgid ""
+"Now, you can inject a JMS <literal>TopicPublisher</literal> and "
+"<literal>TopicSession</literal> into any component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:87
+#, no-c-format
+msgid ""
+"@In \n"
+"private TopicPublisher stockTickerPublisher;   \n"
+"@In \n"
+"private TopicSession topicSession;\n"
+"\n"
+"public void publish(StockPrice price) {\n"
+"      try\n"
+"      {\n"
+"         topicPublisher.publish( topicSession.createObjectMessage(price) );\n"
+"      } \n"
+"      catch (Exception ex)\n"
+"      {\n"
+"         throw new RuntimeException(ex);\n"
+"      } \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:88
+#, no-c-format
+msgid "Or, for working with a queue:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:91
+#, no-c-format
+msgid ""
+"@In\n"
+"private QueueSender paymentQueueSender;   \n"
+"@In\n"
+"private QueueSession queueSession;\n"
+"\n"
+"public void publish(Payment payment) {\n"
+"      try\n"
+"      {\n"
+"         paymentQueueSender.send( queueSession.createObjectMessage"
+"(payment) );\n"
+"      } \n"
+"      catch (Exception ex)\n"
+"      {\n"
+"         throw new RuntimeException(ex);\n"
+"      } \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:92
+#, no-c-format
+msgid "Receiving messages using a message-driven bean"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:93
+#, no-c-format
+msgid ""
+"You can process messages using any EJB3 message driven bean. Message-driven "
+"beans may even be Seam components, in which case it is possible to inject "
+"other event and application scoped Seam components."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:96
+#, no-c-format
+msgid "Receiving messages in the client"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:97
+#, no-c-format
+msgid ""
+"Seam Remoting lets you subscribe to a JMS topic from client-side JavaScript. "
+"This is described in the next chapter."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Mail.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Mail.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Mail.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,985 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Mail.xml:10
+#, no-c-format
+msgid "Email"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:11
+#, no-c-format
+msgid ""
+"Seam now includes an optional components for templating and sending emails."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:14
+#, no-c-format
+msgid ""
+"Email support is provided by <literal>jboss-seam-mail.jar</literal>. This "
+"JAR contains the mail JSF controls, which are used to construct emails, and "
+"the <literal>mailSession</literal> manager component."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:17
+#, no-c-format
+msgid ""
+"The examples/mail project contains an example of the email support in "
+"action. It demonstrates proper packaging, and it contains a number of "
+"example that demonstrate the key features currently supported."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:21
+#, no-c-format
+msgid "Creating a message"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:22
+#, no-c-format
+msgid ""
+"You don't need to learn a whole new templating language to use Seam "
+"Mail&mdash;an email is just facelet!"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:25
+#, no-c-format
+msgid ""
+"&lt;m:message xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"    xmlns:m=\"http://jboss.com/products/seam/mail\"\n"
+"    xmlns:h=\"http://java.sun.com/jsf/html\"&gt;\n"
+"  \n"
+"    &lt;m:from name=\"Peter\" address=\"peter at example.com\" /&gt;\n"
+"    &lt;m:to name=\"#{person.firstname} #{person.lastname}\"&gt;#{person."
+"address}&lt;/m:to&gt;\n"
+"    &lt;m:subject&gt;Try out Seam!&lt;/m:subject&gt;\n"
+"    \n"
+"    &lt;m:body&gt;\n"
+"        &lt;p&gt;&lt;h:outputText value=\"Dear #{person.firstname}\" /&gt;,"
+"&lt;/p&gt;\n"
+"        &lt;p&gt;You can try out Seam by visiting \n"
+"        &lt;a href=\"http://labs.jboss.com/jbossseam\"&gt;http://labs.jboss."
+"com/jbossseam&lt;/a&gt;.&lt;/p&gt;\n"
+"        &lt;p&gt;Regards,&lt;/p&gt;\n"
+"        &lt;p&gt;Peter&lt;/p&gt;\n"
+"    &lt;/m:body&gt;\n"
+"    \n"
+"&lt;/m:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:26
+#, no-c-format
+msgid ""
+"The <literal>&lt;m:message&gt;</literal> tag wraps the whole message, and "
+"tells Seam to start rendering an email. Inside the <literal>&lt;m:message&gt;"
+"</literal> tag we use an <literal>&lt;m:from&gt;</literal> tag to set who "
+"the message is from, a <literal>&lt;m:to&gt;</literal> tag to specify a "
+"sender (notice how we use EL as we would in a normal facelet), and a "
+"<literal>&lt;m:subject&gt;</literal> tag."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:29
+#, no-c-format
+msgid ""
+"The <literal>&lt;m:body&gt;</literal> tag wraps the body of the email. You "
+"can use regular HTML tags inside the body as well as JSF components."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:32
+#, no-c-format
+msgid ""
+"So, now you have your email template, how do you go about sending it? Well, "
+"at the end of rendering the <literal>m:message</literal> the "
+"<literal>mailSession</literal> is called to send the email, so all you have "
+"to do is ask Seam to render the view:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:35
+#, no-c-format
+msgid ""
+"@In(create=true)\n"
+"private Renderer renderer;\n"
+"   \n"
+"public void send() {\n"
+"    try {\n"
+"       renderer.render(\"/simple.xhtml\");\n"
+"       facesMessages.add(\"Email sent successfully\");\n"
+"   } \n"
+"   catch (Exception e) {\n"
+"       facesMessages.add(\"Email sending failed: \" + e.getMessage());\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:36
+#, no-c-format
+msgid ""
+"If, for example, you entered an invalid email address, then an exception "
+"would be thrown, which is caught and then displayed to the user."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:40
+#, no-c-format
+msgid "Attachments"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:41
+#, no-c-format
+msgid ""
+"Seam makes it easy to attach files to an email. It supports most of the "
+"standard java types used when working with files."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:44
+#, no-c-format
+msgid "If you wanted to email the <literal>jboss-seam-mail.jar</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:47
+#, no-c-format
+msgid "&lt;m:attachment value=\"/WEB-INF/lib/jboss-seam-mail.jar\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:48
+#, no-c-format
+msgid ""
+"Seam will load the file from the classpath, and attach it to the email. By "
+"default it would be attached as <literal>jboss-seam-mail.jar</literal>; if "
+"you wanted it to have another name you would just add the <literal>fileName</"
+"literal> attribute:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:51
+#, no-c-format
+msgid ""
+"&lt;m:attachment value=\"/WEB-INF/lib/jboss-seam-mail.jar\" fileName=\"this-"
+"is-so-cool.jar\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:52
+#, no-c-format
+msgid ""
+"You could also attach a <literal>java.io.File</literal>, a <literal>java.net."
+"URL</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:55
+#, no-c-format
+msgid "&lt;m:attachment value=\"#{numbers}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:56
+#, no-c-format
+msgid ""
+"Or a <literal>byte[]</literal> or a <literal>java.io.InputStream</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:59
+#, no-c-format
+msgid ""
+"&lt;m:attachment value=\"#{person.photo}\" contentType=\"image/png\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:60
+#, no-c-format
+msgid ""
+"You'll notice that for a <literal>byte[]</literal> and a <literal>java.io."
+"InputStream</literal> you need to specify the MIME type of the attachment "
+"(as that information is not carried as part of the file)."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:63
+#, no-c-format
+msgid ""
+"And it gets even better, you can attach a Seam generated PDF, or any "
+"standard JSF view, just by wrapping a <literal>&lt;m:attachment&gt;</"
+"literal> around the normal tags you would use:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:66
+#, no-c-format
+msgid ""
+"&lt;m:attachment fileName=\"tiny.pdf\"&gt;\n"
+"    &lt;p:"
+"document&gt;                                                      \n"
+"        A very tiny "
+"PDF                                                                                                \n"
+"    &lt;/p:document&gt;\n"
+"&lt;/m:attachment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:67
+#, no-c-format
+msgid ""
+"If you had a set of files you wanted to attach (for example a set of "
+"pictures loaded from a database) you can just use a <literal>&lt;ui:"
+"repeat&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:70
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{people}\" var=\"person\"&gt;\n"
+"    &lt;m:attachment value=\"#{person.photo}\" contentType=\"image/jpeg\"\n"
+"    fileName=\"#{person.firstname}_#{person.lastname}.jpg\"/&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:74
+#, no-c-format
+msgid "HTML/Text alternative part"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:75
+#, no-c-format
+msgid ""
+"Whilst most mail readers nowadays support HTML, some don't, so you can add a "
+"plain text alternative to your email body:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:78
+#, no-c-format
+msgid ""
+"&lt;m:body&gt;\n"
+"    &lt;f:facet name=\"alternative\"&gt;Sorry, your email reader can't show "
+"our fancy email, \n"
+"please go to http://labs.jboss.com/jbossseam to explore Seam.&lt;/f:"
+"facet&gt;\n"
+"&lt;/m:body&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:82
+#, no-c-format
+msgid "Multiple recipients"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:83
+#, no-c-format
+msgid ""
+"Often you'll want to send an email to a group of recipients (for example "
+"your users). All of the recipient mail tags can be placed inside a "
+"<literal>&lt;ui:repeat&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:86
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{allUsers} var=\"user\"&gt;\n"
+"    &lt;m:to name=\"#{user.firstname} #{user.lastname}\" address=\"#{user."
+"emailAddress}\" /&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:90
+#, no-c-format
+msgid "Multiple messages"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:91
+#, no-c-format
+msgid ""
+"Sometimes, however, you need to send a slightly different message to each "
+"recipient (e.g. a password reset). The best way to do this is to place the "
+"whole message inside a <literal>&lt;ui:repeat&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:94
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{people}\" var=\"p\"&gt;\n"
+"    &lt;m:message&gt;\n"
+"        &lt;m:from name=\"#{person.firstname} #{person.lastname}\"&gt;#"
+"{person.address}&lt;/m:from&gt;\n"
+"        &lt;m:to name=\"#{p.firstname}\"&gt;#{p.address}&lt;/m:to&gt;\n"
+"            ...\n"
+"    &lt;/m:message&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:98
+#, no-c-format
+msgid "Templating"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:99
+#, no-c-format
+msgid ""
+"The mail templating example shows that facelets templating Just Works with "
+"the Seam mail tags."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:102
+#, no-c-format
+msgid "Our <literal>template.xhtml</literal> contains:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:105
+#, no-c-format
+msgid ""
+"&lt;m:message&gt;\n"
+"   &lt;m:from name=\"Seam\" address=\"do-not-reply at jboss.com\" /&gt;\n"
+"   &lt;m:to name=\"#{person.firstname} #{person.lastname}\"&gt;#{person."
+"address}&lt;/m:to&gt;\n"
+"   &lt;m:subject&gt;#{subject}&lt;/m:subject&gt;\n"
+"   &lt;m:body&gt;\n"
+"       &lt;html&gt;\n"
+"           &lt;body&gt;\n"
+"               &lt;ui:insert name=\"body\"&gt;This is the default body, "
+"specified by the template.\n"
+"               &lt;/ui:insert&gt;\n"
+"           &lt;/body&gt;\n"
+"       &lt;/html&gt;\n"
+"   &lt;/m:body&gt;\n"
+"&lt;/m:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:106
+#, no-c-format
+msgid "Our <literal>templating.xhtml</literal> contains:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:109
+#, no-c-format
+msgid ""
+"&lt;ui:param name=\"subject\" value=\"Templating with Seam Mail\"/&gt;\n"
+"&lt;ui:define name=\"body\"&gt;\n"
+"    &lt;p&gt;This example demonstrates that you can easily use &lt;i&gt;"
+"facelets templating&lt;/i&gt; in email!&lt;/p&gt;\n"
+"&lt;/ui:define&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:113
+#, no-c-format
+msgid "Other Headers"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:114
+#, no-c-format
+msgid ""
+"Sometimes you'll want to add other headers to your email. Seam provides "
+"support for some (see <xref linkend=\"Email-Tags\"/>). For example, we can "
+"set the importance of the email, and ask for a read receipt:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:117
+#, no-c-format
+msgid ""
+"&lt;m:message xmlns:m=\"http://jboss.com/products/seam/mail\"\n"
+"           importance=\"low\"\n"
+"           requestReadReceipt=\"true\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:118
+#, no-c-format
+msgid ""
+"Otherise you can add any header to the message using the <literal>&lt;m:"
+"header&gt;</literal> tag:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:121
+#, no-c-format
+msgid "&lt;m:header name=\"X-Sent-From\" value=\"JBoss Seam\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:127
+#, no-c-format
+msgid "Receiving emails"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:128
+#, no-c-format
+msgid ""
+"If you are using EJB then you can use a MDB (Message Driven Bean) to receive "
+"email. Seam comes with an improved version of <literal>mail-ra.rar</literal> "
+"as distributed in JBoss AS; until the improvements make there way into a "
+"released version of JBoss AS, replacing the default <literal>rar</literal> "
+"with the one distributed with Seam is recommended."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:131
+#, no-c-format
+msgid "You can configure it like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:134
+#, no-c-format
+msgid ""
+"@MessageDriven(activationConfig={\n"
+"         @ActivationConfigProperty(propertyName=\"mailServer\", "
+"propertyValue=\"localhost\"),\n"
+"         @ActivationConfigProperty(propertyName=\"mailFolder\", "
+"propertyValue=\"INBOX\"),\n"
+"         @ActivationConfigProperty(propertyName=\"storeProtocol\", "
+"propertyValue=\"pop3\"),\n"
+"         @ActivationConfigProperty(propertyName=\"userName\", propertyValue="
+"\"seam\"),\n"
+"         @ActivationConfigProperty(propertyName=\"password\", propertyValue="
+"\"seam\")\n"
+"})\n"
+"@ResourceAdapter(\"mail-ra.rar\")\n"
+"@Name(\"mailListener\")\n"
+"public class MailListenerMDB implements MailListener {\n"
+"\n"
+"   @In(create=true)\n"
+"   private OrderProcessor orderProcessor;\n"
+"\n"
+"   public void onMessage(Message message) {\n"
+"      // Process the message\n"
+"      orderProcessor.process(message.getSubject());\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:135
+#, no-c-format
+msgid ""
+"Each message received will cause <literal>onMessage(Message message)</"
+"literal> to be called. Most seam annotations will work inside a MDB but you "
+"musn't access the persistence context."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:138
+#, no-c-format
+msgid ""
+"You can find more information on the default <literal>mail-ra.rar</literal> "
+"at <ulink url=\"http://wiki.jboss.org/wiki/Wiki.jsp?page=InboundJavaMail"
+"\">http://wiki.jboss.org/wiki/Wiki.jsp?page=InboundJavaMail</ulink>. The "
+"version distributed with Seam also includes a <literal>debug</literal> "
+"property to enable JavaMail debugging, a <literal>flush</literal> property "
+"(by default true) to disable flushing a <literal>POP3</literal> mailbox "
+"after successfullying delivering a message to your MDB and a <literal>port</"
+"literal> property to override the default TCP port. Beware that the api for "
+"this may be altered as changes make there way into JBoss AS."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:141
+#, no-c-format
+msgid ""
+"If you aren't using JBoss AS you can still use <literal>mail-ra.rar</"
+"literal> (included with Seam in the mail directory), or you may find your "
+"application server includes a similar adapter."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:147
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:148
+#, no-c-format
+msgid ""
+"To include Email support in your application, include <literal>jboss-seam-"
+"mail.jar</literal> in your WEB-INF/lib directory. If you are using JBoss AS "
+"there is no further configuration needed to use Seam's email support. "
+"Otherwise you need to make sure you have the JavaMail API, an implementation "
+"of the JavaMail API present (the API and impl used in JBoss AS are "
+"distributed with seam as <literal>lib/mail.jar</literal>), and a copy of the "
+"Java Activation Framework (distributed with seam as <literal>lib/activation."
+"jar</literal>."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:151
+#, no-c-format
+msgid ""
+"The Seam Email module requires the use of Facelets as the view technology. "
+"Future versions of the library may also support the use of JSP. "
+"Additionally, it requires the use of the seam-ui package."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:154
+#, no-c-format
+msgid ""
+"The <literal>mailSession</literal> component uses JavaMail to talk to a "
+"'real' SMTP server."
+msgstr ""
+
+#. Tag: literal
+#: Mail.xml:158
+#, no-c-format
+msgid "mailSession"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:159
+#, no-c-format
+msgid ""
+"A JavaMail Session may be available via a JNDI lookup if you are working in "
+"an JEE environment or you can use a Seam configured Session."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:162
+#, no-c-format
+msgid ""
+"The mailSession component's properties are described in more detail in <xref "
+"linkend=\"Built_in_Seam_components-Mail_related_components\"/>."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:166
+#, no-c-format
+msgid "JNDI lookup in JBoss AS"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:167
+#, no-c-format
+msgid ""
+"The JBossAS <literal>deploy/mail-service.xml</literal> configures a JavaMail "
+"session binding into JNDI. The default service configuration will need "
+"altering for your network. <ulink url=\"http://wiki.jboss.org/wiki/Wiki.jsp?"
+"page=JavaMail\">http://wiki.jboss.org/wiki/Wiki.jsp?page=JavaMail</ulink> "
+"describes the service in more detail."
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:170
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"        xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"        xmlns:mail=\"http://jboss.com/products/seam/mail\"&gt;\n"
+"        \n"
+"    &lt;mail:mail-session session-jndi-name=\"java:/Mail\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:171
+#, no-c-format
+msgid ""
+"Here we tell Seam to get the mail session bound to <literal>java:/Mail</"
+"literal> from JNDI."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:177
+#, no-c-format
+msgid "Seam configured Session"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:178
+#, no-c-format
+msgid ""
+"A mail session can be configured via <literal>components.xml</literal>. Here "
+"we tell Seam to use <literal>smtp.example.com</literal> as the smtp server,"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:181
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"        xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"        xmlns:mail=\"http://jboss.com/products/seam/mail\"&gt;\n"
+"        \n"
+"    &lt;mail:mail-session host=\"smtp.example.com\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:189
+#, no-c-format
+msgid "Tags"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:190
+#, no-c-format
+msgid ""
+"Emails are generated using tags in the <literal>http://jboss.com/products/"
+"seam/mail</literal> namespace. Documents should always have the "
+"<literal>message</literal> tag at the root of the message. The message tag "
+"prepares Seam to generate an email."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:193
+#, no-c-format
+msgid ""
+"The standard templating tags of facelets can be used as normal. Inside the "
+"body you can use any JSF tag which doesn't require access to external "
+"resources (stylesheets, javascript)."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:198
+#, no-c-format
+msgid "&lt;m:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:200
+#, no-c-format
+msgid "Root tag of a mail message"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:205
+#, no-c-format
+msgid ""
+"<literal>importance</literal> &mdash; low, normal or high. By default "
+"normal, this sets the importance of the mail message."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:210
+#, no-c-format
+msgid ""
+"<literal>precedence</literal> &mdash; sets the precedence of the message (e."
+"g. bulk)."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:215
+#, no-c-format
+msgid ""
+"<literal>requestReadReceipt</literal> &mdash; by default false, if set, a "
+"read receipt will be request will be added, with the read receipt being sent "
+"to the <literal>From:</literal> address."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:220
+#, no-c-format
+msgid ""
+"<literal>urlBase</literal> &mdash; If set, the value is prepended to the "
+"<literal>requestContextPath</literal> allowing you to use components such as "
+"<literal>&lt;h:graphicImage&gt;</literal> in your emails."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:228
+#, no-c-format
+msgid "&lt;m:from&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:230
+#, no-c-format
+msgid ""
+"Set's the From: address for the email. You can only have one of these per "
+"email."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:235
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the name the email should come from."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:240 Mail.xml:255
+#, no-c-format
+msgid ""
+"<literal>address</literal> &mdash; the email address the email should come "
+"from."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:248
+#, no-c-format
+msgid "&lt;m:replyTo&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:250
+#, no-c-format
+msgid ""
+"Set's the Reply-to: address for the email. You can only have one of these "
+"per email."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:263
+#, no-c-format
+msgid "&lt;m:to&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:265
+#, no-c-format
+msgid ""
+"Add a recipient to the email. Use multiple &lt;m:to&gt; tags for multiple "
+"recipients. This tag can be safely placed inside a repeat tag such as &lt;ui:"
+"repeat&gt;."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:270 Mail.xml:290 Mail.xml:310
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the name of the recipient."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:275 Mail.xml:295 Mail.xml:315
+#, no-c-format
+msgid "<literal>address</literal> &mdash; the email address of the recipient."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:283
+#, no-c-format
+msgid "&lt;m:cc&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:285
+#, no-c-format
+msgid ""
+"Add a cc recipient to the email. Use multiple &lt;m:cc&gt; tags for multiple "
+"ccs. This tag can be safely placed inside a repeat tag such as &lt;ui:"
+"repeat&gt;."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:303
+#, no-c-format
+msgid "&lt;m:bcc&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:305
+#, no-c-format
+msgid ""
+"Add a bcc recipient to the email. Use multiple &lt;m:bcc&gt; tags for "
+"multiple bccs. This tag can be safely placed inside a repeat tag such as &lt;"
+"ui:repeat&gt;."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:323
+#, no-c-format
+msgid "&lt;m:header&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:325
+#, no-c-format
+msgid ""
+"Add a header to the email (e.g. <literal>X-Sent-From: JBoss Seam</literal>"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:330
+#, no-c-format
+msgid ""
+"<literal>name</literal> &mdash; The name of the header to add (e.g. "
+"<literal>X-Sent-From</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:335
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; The value of the header to add (e.g. "
+"<literal>JBoss Seam</literal>)."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:343
+#, no-c-format
+msgid "&lt;m:attachment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:345
+#, no-c-format
+msgid "Add an attachment to the email."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:350
+#, no-c-format
+msgid "<literal>value</literal> &mdash; The file to attach:"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:355
+#, no-c-format
+msgid ""
+"<literal>String</literal> &mdash; A <literal>String</literal> is interpreted "
+"as a path to file within the classpath"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:360
+#, no-c-format
+msgid ""
+"<literal>java.io.File</literal> &mdash; An EL expression can reference a "
+"<literal>File</literal> object"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:365
+#, no-c-format
+msgid ""
+"<literal>java.net.URL</literal> &mdash; An EL expression can reference a "
+"<literal>URL</literal> object"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:370
+#, no-c-format
+msgid ""
+"<literal>java.io.InputStream</literal> &mdash; An EL expression can "
+"reference an <literal>InputStream</literal>. In this case both a "
+"<literal>fileName</literal> and a <literal>contentType</literal> must be "
+"specified."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:375
+#, no-c-format
+msgid ""
+"<literal>byte[]</literal> &mdash; An EL expression can reference an "
+"<literal>byte[]</literal>. In this case both a <literal>fileName</literal> "
+"and a <literal>contentType</literal> must be specified."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:380
+#, no-c-format
+msgid "If the value attribute is ommitted:"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:385
+#, no-c-format
+msgid ""
+"If this tag contains a <literal>&lt;p:document&gt;</literal> tag, the "
+"document described will be generated and attached to the email. A "
+"<literal>fileName</literal> should be specfied."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:390
+#, no-c-format
+msgid ""
+"If this tag contains other JSF tags a HTML document will be generated from "
+"them and attached to the email. A <literal>fileName</literal> should be "
+"specfied."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:397
+#, no-c-format
+msgid ""
+"<literal>fileName</literal> &mdash; Specify the file name to use for the "
+"attached file."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:402
+#, no-c-format
+msgid ""
+"<literal>contentType</literal> &mdash; Specify the MIME type of the attached "
+"file"
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:410
+#, no-c-format
+msgid "&lt;m:subject&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:412
+#, no-c-format
+msgid "Set's the subject for the email."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:418
+#, no-c-format
+msgid "&lt;m:body&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:420
+#, no-c-format
+msgid ""
+"Set's the body for the email. Supports an <literal>alternative</literal> "
+"facet which, if an HTML email is generated can contain alternative text for "
+"a mail reader which doesn't support html."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:425
+#, no-c-format
+msgid ""
+"<literal>type</literal> &mdash; If set to <literal>plain</literal> then a "
+"plain text email will be generated otherwise an HTML email is generated."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Persistence.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Persistence.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Persistence.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,750 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Persistence.xml:10
+#, no-c-format
+msgid "Seam and Object/Relational Mapping"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:11
+#, no-c-format
+msgid ""
+"Seam provides extensive support for the two most popular persistence "
+"architectures for Java: Hibernate3, and the Java Persistence API introduced "
+"with EJB 3.0. Seam's unique state-management architecture allows the most "
+"sophisticated ORM integration of any web application framework."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:15
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:16
+#, no-c-format
+msgid ""
+"Seam grew out of the frustration of the Hibernate team with the "
+"statelessness typical of the previous generation of Java application "
+"architectures. The state management architecture of Seam was originally "
+"designed to solve problems relating to persistence&mdash;in particular "
+"problems associated with <emphasis>optimistic transaction processing</"
+"emphasis>. Scalable online applications always use optimistic transactions. "
+"An atomic (database/JTA) level transaction should not span a user "
+"interaction unless the application is designed to support only a very small "
+"number of concurrent clients. But almost all interesting work involves first "
+"displaying data to a user, and then, slightly later, updating the same data. "
+"So Hibernate was designed to support the idea of a persistence context which "
+"spanned an optimistic transaction."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:19
+#, no-c-format
+msgid ""
+"Unfortunately, the so-called \"stateless\" architectures that preceded Seam "
+"and EJB 3.0 had no construct for representing an optimistic transaction. So, "
+"instead, these architectures provided persistence contexts scoped to the "
+"atomic transaction. Of course, this resulted in many problems for users, and "
+"is the cause of the number one user complaint about Hibernate: the dreaded "
+"<literal>LazyInitializationException</literal>. What we need is a construct "
+"for representing an optimistic transaction in the application tier."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:22
+#, no-c-format
+msgid ""
+"EJB 3.0 recognizes this problem, and introduces the idea of a stateful "
+"component (a stateful session bean) with an <emphasis>extended persistence "
+"context</emphasis> scoped to the lifetime of the component. This is a "
+"partial solution to the problem (and is a useful construct in and of itself) "
+"however there are two problems:"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:27
+#, no-c-format
+msgid ""
+"The lifecycle of the stateful session bean must be managed manually via code "
+"in the web tier (it turns out that this is a subtle problem and much more "
+"difficult in practice than it sounds)."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:32
+#, no-c-format
+msgid ""
+"Propagation of the persistence context between stateful components in the "
+"same optimistic transaction is possible, but tricky."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:37
+#, no-c-format
+msgid ""
+"Seam solves the first problem by providing conversations, and stateful "
+"session bean components scoped to the conversation. (Most conversations "
+"actually represent optimistic transactions in the data layer.) This is "
+"sufficient for many simple applications (such as the Seam booking demo) "
+"where persistence context propagation is not needed. For more complex "
+"applications, with many loosly-interacting components in each conversation, "
+"propagation of the persistence context across components becomes an "
+"important issue. So Seam extends the persistence context management model of "
+"EJB 3.0, to provide conversation-scoped extended persistence contexts."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:43
+#, no-c-format
+msgid "Seam managed transactions"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:44
+#, no-c-format
+msgid ""
+"EJB session beans feature declarative transaction management. The EJB "
+"container is able to start a transaction transparently when the bean is "
+"invoked, and end it when the invocation ends. If we write a session bean "
+"method that acts as a JSF action listener, we can do all the work associated "
+"with that action in one transaction, and be sure that it is committed or "
+"rolled back when we finish processing the action. This is a great feature, "
+"and all that is needed by some Seam applications."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:47
+#, no-c-format
+msgid ""
+"However, there is a problem with this approach. A Seam application may not "
+"perform all data access for a request from a single method call to a session "
+"bean."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:52
+#, no-c-format
+msgid ""
+"The request might require processing by several loosly-coupled components, "
+"each of which is called independently from the web layer. It is common to "
+"see several or even many calls per request from the web layer to EJB "
+"components in Seam."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:57
+#, no-c-format
+msgid "Rendering of the view might require lazy fetching of associations."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:62
+#, no-c-format
+msgid ""
+"The more transactions per request, the more likely we are to encounter "
+"atomicity and isolation problems when our application is processing many "
+"concurrent requests. Certainly, all write operations should occur in the "
+"same transaction!"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:65
+#, no-c-format
+msgid ""
+"Hibernate users developed the <emphasis>\"open session in view\"</emphasis> "
+"pattern to work around this problem. In the Hibernate community, \"open "
+"session in view\" was historically even more important because frameworks "
+"like Spring use transaction-scoped persistence contexts. So rendering the "
+"view would cause <literal>LazyInitializationException</literal>s when "
+"unfetched associations were accessed."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:68
+#, no-c-format
+msgid ""
+"This pattern is usually implemented as a single transaction which spans the "
+"entire request. There are several problems with this implementation, the "
+"most serious being that we can never be sure that a transaction is "
+"successful until we commit it&mdash;but by the time the \"open session in "
+"view\" transaction is committed, the view is fully rendered, and the "
+"rendered response may already have been flushed to the client. How can we "
+"notify the user that their transaction was unsuccessful?"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:71
+#, no-c-format
+msgid ""
+"Seam solves both the transaction isolation problem and the association "
+"fetching problem, while working around the problems with \"open session in "
+"view\". The solution comes in two parts:"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:76
+#, no-c-format
+msgid ""
+"use an extended persistence context that is scoped to the conversation, "
+"instead of to the transaction"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:81
+#, no-c-format
+msgid ""
+"use two transactions per request; the first spans the beginning of the "
+"update model values phase until the end of the invoke application phase; the "
+"second spans the render response phase"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:86
+#, no-c-format
+msgid ""
+"In the next section, we'll tell you how to set up a conversation-scope "
+"persistence context. But first we need to tell you how to enable Seam "
+"transaction management. Note that you can use conversation-scoped "
+"persistence contexts without Seam transaction management, and there are good "
+"reasons to use Seam transaction management even when you're not using Seam-"
+"managed persistence contexts. However, the two facilities were designed to "
+"work together, and work best when used together."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:90
+#, no-c-format
+msgid "Enabling Seam-managed transactions"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:91
+#, no-c-format
+msgid ""
+"To make use of <emphasis>Seam managed transactions</emphasis>, you need to "
+"use <literal>TransactionalSeamPhaseListener</literal> in place of "
+"<literal>SeamPhaseListener</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:94
+#, no-c-format
+msgid ""
+"&lt;lifecycle&gt;\n"
+"     &lt;phase-listener&gt;\n"
+"        org.jboss.seam.jsf.TransactionalSeamPhaseListener\n"
+"    &lt;/phase-listener&gt;\n"
+"&lt;/lifecycle&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:95
+#, no-c-format
+msgid ""
+"Seam transaction management is useful even if you're using EJB 3.0 container-"
+"managed persistence contexts. But it is especially useful if you use Seam "
+"outside a Java EE 5 environment, or in any other case where you would use a "
+"Seam-managed persistence context."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:103
+#, no-c-format
+msgid "Seam-managed persistence contexts"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:104
+#, no-c-format
+msgid ""
+"If you're using Seam outside of a Java EE 5 environment, you can't rely upon "
+"the container to manage the persistence context lifecycle for you. Even if "
+"you are in an EE 5 environment, you might have a complex application with "
+"many loosly coupled components that collaborate together in the scope of a "
+"single conversation, and in this case you might find that propagation of the "
+"persistence context between component is tricky and error-prone."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:107
+#, no-c-format
+msgid ""
+"In either case, you'll need to use a <emphasis>managed persistence context</"
+"emphasis> (for JPA) or a <emphasis>managed session</emphasis> (for "
+"Hibernate) in your components. A Seam-managed persistence context is just a "
+"built-in Seam component that manages an instance of <literal>EntityManager</"
+"literal> or <literal>Session</literal> in the conversation context. You can "
+"inject it with <literal>@In</literal>."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:110
+#, no-c-format
+msgid ""
+"Seam-managed persistence contexts are extremely efficient in a clustered "
+"environment. Seam is able to perform an optimization that EJB 3.0 "
+"specification does not allow containers to use for container-managed "
+"extended persistence contexts. Seam supports transparent failover of "
+"extended persisence contexts, without the need to replicate any persistence "
+"context state between nodes. (We hope to fix this oversight in the next "
+"revision of the EJB spec.)"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:114
+#, no-c-format
+msgid "Using a Seam-managed persistence context with JPA"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:115
+#, no-c-format
+msgid ""
+"Configuring a managed persistence context is easy. In <literal>components."
+"xml</literal>, we can write:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:118
+#, no-c-format
+msgid ""
+"&lt;core:managed-persistence-context name=\"bookingDatabase\" \n"
+"                           auto-create=\"true\"\n"
+"            persistence-unit-jndi-name=\"java:/EntityManagerFactories/"
+"bookingData\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:119
+#, no-c-format
+msgid ""
+"This configuration creates a conversation-scoped Seam component named "
+"<literal>bookingDatabase</literal> that manages the lifecycle of "
+"<literal>EntityManager</literal> instances for the persistence unit "
+"(<literal>EntityManagerFactory</literal> instance) with JNDI name "
+"<literal>java:/EntityManagerFactories/bookingData</literal>."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:122
+#, no-c-format
+msgid ""
+"Of course, you need to make sure that you have bound the "
+"<literal>EntityManagerFactory</literal> into JNDI. In JBoss, you can do this "
+"by adding the following property setting to <literal>persistence.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:125
+#, no-c-format
+msgid ""
+"&lt;property name=\"jboss.entity.manager.factory.jndi.name\" \n"
+"          value=\"java:/EntityManagerFactories/bookingData\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:126
+#, no-c-format
+msgid "Now we can have our <literal>EntityManager</literal> injected using:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:129
+#, no-c-format
+msgid "@In EntityManager bookingDatabase;"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:133
+#, no-c-format
+msgid "Using a Seam-managed Hibernate session"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:134
+#, no-c-format
+msgid ""
+"Seam-managed Hibernate sessions are similar. In <literal>components.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:137
+#, no-c-format
+msgid ""
+"&lt;core:hibernate-session-factory name=\"hibernateSessionFactory\"/&gt;\n"
+"\n"
+"&lt;core:managed-hibernate-session name=\"bookingDatabase\" \n"
+"                         auto-create=\"true\"\n"
+"           session-factory-jndi-name=\"java:/bookingSessionFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:138
+#, no-c-format
+msgid ""
+"Where <literal>java:/bookingSessionFactory</literal> is the name of the "
+"session factory specified in <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:141
+#, no-c-format
+msgid ""
+"&lt;session-factory name=\"java:/bookingSessionFactory\"&gt;\n"
+"    &lt;property name=\"transaction.flush_before_completion\"&gt;true&lt;/"
+"property&gt;\n"
+"    &lt;property name=\"connection.release_mode\"&gt;after_statement&lt;/"
+"property&gt;\n"
+"    &lt;property name=\"transaction.manager_lookup_class\"&gt;\n"
+"        org.hibernate.transaction.JBossTransactionManagerLookup\n"
+"    &lt;/property&gt;\n"
+"    &lt;property name=\"transaction.factory_class\"&gt;\n"
+"        org.hibernate.transaction.JTATransactionFactory\n"
+"    &lt;/property&gt;\n"
+"    &lt;property name=\"connection.datasource\"&gt;java:/"
+"bookingDatasource&lt;/property&gt;\n"
+"    ...\n"
+"&lt;/session-factory&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:142
+#, no-c-format
+msgid ""
+"Note that Seam does not flush the session, so you should always enable "
+"<literal>hibernate.transaction.flush_before_completion</literal> to ensure "
+"that the session is automatically flushed before the JTA transaction commits."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:145
+#, no-c-format
+msgid ""
+"We can now have a managed Hibernate <literal>Session</literal> injected into "
+"our JavaBean components using the following code:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:148
+#, no-c-format
+msgid "@In Session bookingDatabase;"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:152
+#, no-c-format
+msgid "Seam-managed persistence contexts and atomic conversations"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:153
+#, no-c-format
+msgid ""
+"Persistence contexts scoped to the conversation allows you to program "
+"optimistic transactions that span multiple requests to the server without "
+"the need to use the <literal>merge()</literal> operation , without the need "
+"to re-load data at the beginning of each request, and without the need to "
+"wrestle with the <literal>LazyInitializationException</literal> or "
+"<literal>NonUniqueObjectException</literal>."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:156
+#, no-c-format
+msgid ""
+"As with any optimistic transaction management, transaction isolation and "
+"consistency can be achieved via use of optimistic locking. Fortunately, both "
+"Hibernate and EJB 3.0 make it very easy to use optimistic locking, by "
+"providing the <literal>@Version</literal> annotation."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:159
+#, no-c-format
+msgid ""
+"By default, the persistence context is flushed (synchronized with the "
+"database) at the end of each transaction. This is sometimes the desired "
+"behavior. But very often, we would prefer that all changes are held in "
+"memory and only written to the database when the conversation ends "
+"successfully. This allows for truly atomic conversations. As the result of a "
+"truly stupid and shortsighted decision by certain non-JBoss, non-Sun and non-"
+"Sybase members of the EJB 3.0 expert group, there is currently no simple, "
+"usable and portable way to implement atomic conversations using EJB 3.0 "
+"persistence. However, Hibernate provides this feature as a vendor extension "
+"to the <literal>FlushModeType</literal>s defined by the specification, and "
+"it is our expectation that other vendors will soon provide a similar "
+"extension."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:162
+#, no-c-format
+msgid ""
+"Seam lets you specify <literal>FlushModeType.MANUAL</literal> when beginning "
+"a conversation. Currently, this works only when Hibernate is the underlying "
+"persistence provider, but we plan to support other equivalent vendor "
+"extensions."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:165
+#, no-c-format
+msgid ""
+"@In EntityManager em; //a Seam-managed persistence context\n"
+"\n"
+"@Begin(flushMode=MANUAL)\n"
+"public void beginClaimWizard() {\n"
+"    claim = em.find(Claim.class, claimId);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:166
+#, no-c-format
+msgid ""
+"Now, the <literal>claim</literal> object remains managed by the persistence "
+"context for the rest ot the conversation. We can make changes to the claim:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:169
+#, no-c-format
+msgid ""
+"public void addPartyToClaim() {\n"
+"    Party party = ....;\n"
+"    claim.addParty(party);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:170
+#, no-c-format
+msgid ""
+"But these changes will not be flushed to the database until we explicitly "
+"force the flush to occur:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:173
+#, no-c-format
+msgid ""
+"@End\n"
+"public void commitClaim() {\n"
+"    em.flush();\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:179
+#, no-c-format
+msgid "Using the JPA \"delegate\""
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:180
+#, no-c-format
+msgid ""
+"The <literal>EntityManager</literal> interface lets you access a vendor-"
+"specific API via the <literal>getDelegate()</literal> method. Naturally, the "
+"most interesting vendor is Hibernate, and the most powerful delegate "
+"interface is <literal>org.hibernate.Session</literal>. You'd be nuts to use "
+"anything else. Trust me, I'm not biased at all."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:183
+#, no-c-format
+msgid ""
+"But regardless of whether you're using Hibernate (genius!) or something else "
+"(masochist, or just not very bright), you'll almost certainly want to use "
+"the delegate in your Seam components from time to time. One approach would "
+"be the following:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:186
+#, no-c-format
+msgid ""
+"@In EntityManager entityManager;\n"
+"\n"
+"@Create\n"
+"public void init() {\n"
+"    ( (Session) entityManager.getDelegate() ).enableFilter(\"currentVersions"
+"\");\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:187
+#, no-c-format
+msgid ""
+"But typecasts are unquestionably the ugliest syntax in the Java language, so "
+"most people avoid them whenever possible. Here's a different way to get at "
+"the delegate. First, add the following line to <literal>components.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:190
+#, no-c-format
+msgid ""
+"&lt;factory name=\"session\" \n"
+"         scope=\"STATELESS\" \n"
+"         auto-create=\"true\" \n"
+"         value=\"#{entityManager.delegate}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:191
+#, no-c-format
+msgid "Now we can inject the session directly:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:194
+#, no-c-format
+msgid ""
+"@In Session session;\n"
+"\n"
+"@Create\n"
+"public void init() {\n"
+"    session.enableFilter(\"currentVersions\");\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:198
+#, no-c-format
+msgid "Using EL in EJB-QL/HQL"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:199
+#, no-c-format
+msgid ""
+"Seam proxies the <literal>EntityManager</literal> or <literal>Session</"
+"literal> object whenever you use a Seam-managed persistence context or "
+"inject a container managed persistence context using "
+"<literal>@PersistenceContext</literal>. This lets you use EL expressions in "
+"your query strings, safely and efficiently. For example, this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:202
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=#{user.username}\")\n"
+"         .getSingleResult();"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:203
+#, no-c-format
+msgid "is equivalent to:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:206
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getSingleResult();"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:207
+#, no-c-format
+msgid "Of course, you should never, ever write it like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:210
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=\" + user.getUsername"
+"()) //BAD!\n"
+"         .getSingleResult();"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:211
+#, no-c-format
+msgid "(It is inefficient and vulnerable to SQL injection attacks.)"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:217
+#, no-c-format
+msgid "Using Hibernate filters"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:218
+#, no-c-format
+msgid ""
+"The coolest, and most unique, feature of Hibernate is <emphasis>filters</"
+"emphasis>. Filters let you provide a restricted view of the data in the "
+"database. You can find out more about filters in the Hibernate "
+"documentation. But we thought we'd mention an easy way to incorporate "
+"filters into a Seam application, one that works especially well with the "
+"Seam Application Framework."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:221
+#, no-c-format
+msgid ""
+"Seam-managed persistence contexts may have a list of filters defined, which "
+"will be enabled whenever an <literal>EntityManager</literal> or Hibernate "
+"<literal>Session</literal> is first created. (Of course, they may only be "
+"used when Hibernate is the underlying persistence provider.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:224
+#, no-c-format
+msgid ""
+"&lt;core:filter name=\"regionFilter\"&gt;\n"
+"    &lt;core:name&gt;region&lt;/core:name&gt;\n"
+"    &lt;core:parameters&gt;\n"
+"        &lt;key&gt;regionCode&lt;/key&gt;\n"
+"        &lt;value&gt;#{region.code}&lt;/value&gt;\n"
+"    &lt;/core:parameters&gt;\n"
+"&lt;/core:filter&gt;\n"
+"\n"
+"&lt;core:filter name=\"currentFilter\"&gt;\n"
+"    &lt;core:name&gt;current&lt;/core:name&gt;\n"
+"    &lt;core:parameters&gt;\n"
+"        &lt;key&gt;date&lt;/key&gt;\n"
+"        &lt;value&gt;#{currentDate}&lt;/value&gt;\n"
+"    &lt;/core:parameters&gt;\n"
+"&lt;/core:filter&gt;\n"
+"\n"
+"&lt;core:managed-persistence-context name=\"personDatabase\"\n"
+"    persistence-unit-jndi-name=\"java:/EntityManagerFactories/personDatabase"
+"\"&gt;\n"
+"    &lt;core:filters&gt;\n"
+"        &lt;value&gt;#{regionFilter}&lt;/value&gt;\n"
+"        &lt;value&gt;#{currentFilter}&lt;/value&gt;\n"
+"    &lt;/core:filters&gt;\n"
+"&lt;/core:managed-persistence-context&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Remoting.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Remoting.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Remoting.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1458 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Remoting.xml:10
+#, no-c-format
+msgid "Remoting"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:11
+#, no-c-format
+msgid ""
+"Seam provides a convenient method of remotely accessing components from a "
+"web page, using AJAX (Asynchronous Javascript and XML). The framework for "
+"this functionality is provided with almost no up-front development effort - "
+"your components only require simple annotating to become accessible via "
+"AJAX. This chapter describes the steps required to build an AJAX-enabled web "
+"page, then goes on to explain the features of the Seam Remoting framework in "
+"more detail."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:14 Remoting.xml:296
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:15
+#, no-c-format
+msgid ""
+"To use remoting, the Seam Resource servlet must first be configured in your "
+"<literal>web.xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:18
+#, no-c-format
+msgid ""
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"  &lt;/servlet&gt;\n"
+"\n"
+"  &lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"  &lt;/servlet-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:19
+#, no-c-format
+msgid ""
+"The next step is to import the necessary Javascript into your web page. "
+"There are a minimum of two scripts that must be imported. The first one "
+"contains all the client-side framework code that enables remoting "
+"functionality:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:22
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/resource/"
+"remote.js\"&gt;&lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:23
+#, no-c-format
+msgid ""
+"The second script contains the stubs and type definitions for the components "
+"you wish to call. It is generated dynamically based on the local interface "
+"of your components, and includes type definitions for all of the classes "
+"that can be used to call the remotable methods of the interface. The name of "
+"the script reflects the name of your component. For example, if you have a "
+"stateless session bean annotated with <literal>@Name(\"customerAction\")</"
+"literal>, then your script tag should look like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:26
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?customerAction\"&gt;\n"
+"      &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:27
+#, no-c-format
+msgid ""
+"If you wish to access more than one component from the same page, then "
+"include them all as parameters of your script tag:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:30
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" \n"
+"      src=\"seam/resource/remoting/interface.js?customerAction&amp;"
+"accountAction\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:31
+#, no-c-format
+msgid "The \"Seam\" object"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:32
+#, no-c-format
+msgid ""
+"Client-side interaction with your components is all performed via the "
+"<literal>Seam</literal> Javascript object. This object is defined in "
+"<literal>remote.js</literal>, and you'll be using it to make asynchronous "
+"calls against your component. It is split into two areas of functionality; "
+"<literal>Seam.Component</literal> contains methods for working with "
+"components and <literal>Seam.Remoting</literal> contains methods for "
+"executing remote requests. The easiest way to become familiar with this "
+"object is to start with a simple example."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:35
+#, no-c-format
+msgid "A Hello World example"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:36
+#, no-c-format
+msgid ""
+"Let's step through a simple example to see how the <literal>Seam</literal> "
+"object works. First of all, let's create a new Seam component called "
+"<literal>helloAction</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:39
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"  @Name(\"helloAction\")\n"
+"  public class HelloAction implements HelloLocal {\n"
+"    public String sayHello(String name) {\n"
+"      return \"Hello, \" + name;\n"
+"    }\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:40
+#, no-c-format
+msgid ""
+"You also need to create a local interface for our new component - take "
+"special note of the <literal>@WebRemote</literal> annotation, as it's "
+"required to make our method accessible via remoting:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:43
+#, no-c-format
+msgid ""
+"@Local\n"
+"  public interface HelloLocal {\n"
+"    @WebRemote\n"
+"    public String sayHello(String name);\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:44
+#, no-c-format
+msgid ""
+"That's all the server-side code we need to write. Now for our web page - "
+"create a new page and import the following scripts:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:47
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/resource/"
+"remote.js\"&gt;&lt;/script&gt;\n"
+"  &lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?helloAction\"&gt;&lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:48
+#, no-c-format
+msgid ""
+"To make this a fully interactive user experience, let's add a button to our "
+"page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:51
+#, no-c-format
+msgid ""
+"&lt;button onclick=\"javascript:sayHello()\"&gt;Say Hello&lt;/button&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:52
+#, no-c-format
+msgid ""
+"We'll also need to add some more script to make our button actually do "
+"something when it's clicked:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:55
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\"&gt;\n"
+"    //&lt;![CDATA[\n"
+"\n"
+"    function sayHello() {\n"
+"      var name = prompt(\"What is your name?\");\n"
+"      Seam.Component.getInstance(\"helloAction\").sayHello(name, "
+"sayHelloCallback);\n"
+"    }\n"
+"\n"
+"    function sayHelloCallback(result) {\n"
+"      alert(result);\n"
+"    }\n"
+"\n"
+"    // ]]&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:56
+#, no-c-format
+msgid ""
+"We're done! Deploy your application and browse to your page. Click the "
+"button, and enter a name when prompted. A message box will display the hello "
+"message confirming that the call was successful. If you want to save some "
+"time, you'll find the full source code for this Hello World example in "
+"Seam's <literal>/examples/remoting/helloworld</literal> directory."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:59
+#, no-c-format
+msgid ""
+"So what does the code of our script actually do? Let's break it down into "
+"smaller pieces. To start with, you can see from the Javascript code listing "
+"that we have implemented two methods - the first method is responsible for "
+"prompting the user for their name and then making a remote request. Take a "
+"look at the following line:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:62
+#, no-c-format
+msgid ""
+"Seam.Component.getInstance(\"helloAction\").sayHello(name, sayHelloCallback);"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:63
+#, no-c-format
+msgid ""
+"The first section of this line, <literal>Seam.Component.getInstance"
+"(\"helloAction\")</literal> returns a proxy, or \"stub\" for our "
+"<literal>helloAction</literal> component. We can invoke the methods of our "
+"component against this stub, which is exactly what happens with the "
+"remainder of the line: <literal>sayHello(name, sayHelloCallback);</literal>."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:66
+#, no-c-format
+msgid ""
+"What this line of code in its completeness does, is invoke the "
+"<literal>sayHello</literal> method of our component, passing in "
+"<literal>name</literal> as a parameter. The second parameter, "
+"<literal>sayHelloCallback</literal> isn't a parameter of our component's "
+"<literal>sayHello</literal> method, instead it tells the Seam Remoting "
+"framework that once it receives the response to our request, it should pass "
+"it to the <literal>sayHelloCallback</literal> Javascript method. This "
+"callback parameter is entirely optional, so feel free to leave it out if "
+"you're calling a method with a <literal>void</literal> return type or if you "
+"don't care about the result."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:69
+#, no-c-format
+msgid ""
+"The <literal>sayHelloCallback</literal> method, once receiving the response "
+"to our remote request then pops up an alert message displaying the result of "
+"our method call."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:72
+#, no-c-format
+msgid "Seam.Component"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:73
+#, no-c-format
+msgid ""
+"The <literal>Seam.Component</literal> Javascript object provides a number of "
+"client-side methods for working with your Seam components. The two main "
+"methods, <literal>newInstance()</literal> and <literal>getInstance()</"
+"literal> are documented in the following sections however their main "
+"difference is that <literal>newInstance()</literal> will always create a new "
+"instance of a component type, and <literal>getInstance()</literal> will "
+"return a singleton instance."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:76
+#, no-c-format
+msgid "Seam.Component.newInstance()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:77
+#, no-c-format
+msgid ""
+"Use this method to create a new instance of an entity or Javabean component. "
+"The object returned by this method will have the same getter/setter methods "
+"as its server-side counterpart, or alternatively if you wish you can access "
+"its fields directly. Take the following Seam entity component for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:80
+#, no-c-format
+msgid ""
+"@Name(\"customer\")\n"
+"  @Entity\n"
+"  public class Customer implements Serializable\n"
+"  {\n"
+"    private Integer customerId;\n"
+"    private String firstName;\n"
+"    private String lastName;\n"
+"    \n"
+"    @Column public Integer getCustomerId() { \n"
+"      return customerId; \n"
+"    }\n"
+"    \n"
+"    public void setCustomerId(Integer customerId} { \n"
+"      this.customerId = customerId; \n"
+"    }\n"
+"    \n"
+"    @Column public String getFirstName() { \n"
+"      return firstName; \n"
+"    }\n"
+"    \n"
+"    public void setFirstName(String firstName) {\n"
+"      this.firstName = firstName; \n"
+"    }\n"
+"    \n"
+"    @Column public String getLastName() {\n"
+"      return lastName;\n"
+"    }\n"
+"    \n"
+"    public void setLastName(String lastName) {\n"
+"      this.lastName = lastName;\n"
+"    }\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:81
+#, no-c-format
+msgid "To create a client-side Customer you would write the following code:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:84
+#, no-c-format
+msgid "var customer = Seam.Component.newInstance(\"customer\");"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:85
+#, no-c-format
+msgid "Then from here you can set the fields of the customer object:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:88
+#, no-c-format
+msgid ""
+"customer.setFirstName(\"John\");\n"
+"  // Or you can set the fields directly\n"
+"  customer.lastName = \"Smith\";"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:89
+#, no-c-format
+msgid "Seam.Component.getInstance()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:90
+#, no-c-format
+msgid ""
+"The <literal>getInstance()</literal> method is used to get a reference to a "
+"Seam session bean component stub, which can then be used to remotely execute "
+"methods against your component. This method returns a singleton for the "
+"specified component, so calling it twice in a row with the same component "
+"name will return the same instance of the component."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:93
+#, no-c-format
+msgid ""
+"To continue our example from before, if we have created a new "
+"<literal>customer</literal> and we now wish to save it, we would pass it to "
+"the <literal>saveCustomer()</literal> method of our <literal>customerAction</"
+"literal> component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:96
+#, no-c-format
+msgid "Seam.Component.getInstance(\"customerAction\").saveCustomer(customer);"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:97
+#, no-c-format
+msgid "Seam.Component.getComponentName()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:98
+#, no-c-format
+msgid ""
+"Passing an object into this method will return its component name if it is a "
+"component, or <literal>null</literal> if it is not."
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:101
+#, no-c-format
+msgid ""
+"if (Seam.Component.getComponentName(instance) == \"customer\")\n"
+"    alert(\"Customer\");\n"
+"  else if (Seam.Component.getComponentName(instance) == \"staff\")\n"
+"    alert(\"Staff member\");"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:102
+#, no-c-format
+msgid "Seam.Remoting"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:103
+#, no-c-format
+msgid ""
+"Most of the client side functionality for Seam Remoting is contained within "
+"the <literal>Seam.Remoting</literal> object. While you shouldn't need to "
+"directly call most of its methods, there are a couple of important ones "
+"worth mentioning."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:106
+#, no-c-format
+msgid "Seam.Remoting.createType()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:107
+#, no-c-format
+msgid ""
+"If your application contains or uses Javabean classes that aren't Seam "
+"components, you may need to create these types on the client side to pass as "
+"parameters into your component method. Use the <literal>createType()</"
+"literal> method to create an instance of your type. Pass in the fully "
+"qualified Java class name as a parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:110
+#, no-c-format
+msgid "var widget = Seam.Remoting.createType(\"com.acme.widgets.MyWidget\");"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:111
+#, no-c-format
+msgid "Seam.Remoting.getTypeName()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:112
+#, no-c-format
+msgid ""
+"This method is the equivalent of <literal>Seam.Component.getComponentName()</"
+"literal> but for non-component types. It will return the name of the type "
+"for an object instance, or <literal>null</literal> if the type is not known. "
+"The name is the fully qualified name of the type's Java class."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:115
+#, no-c-format
+msgid "Client Interfaces"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:116
+#, no-c-format
+msgid ""
+"In the configuration section above, the interface, or \"stub\" for our "
+"component is imported into our page via <literal>seam/resource/remoting/"
+"interface.js</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:119
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?customerAction\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:120
+#, no-c-format
+msgid ""
+"By including this script in our page, the interface definitions for our "
+"component, plus any other components or types that are required to execute "
+"the methods of our component are generated and made available for the "
+"remoting framework to use."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:123
+#, no-c-format
+msgid ""
+"There are two types of client stub that can be generated, \"executable\" "
+"stubs and \"type\" stubs. Executable stubs are behavioural, and are used to "
+"execute methods against your session bean components, while type stubs "
+"contain state and represent the types that can be passed in as parameters or "
+"returned as a result."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:126
+#, no-c-format
+msgid ""
+"The type of client stub that is generated depends on the type of your Seam "
+"component. If the component is a session bean, then an executable stub will "
+"be generated, otherwise if it's an entity or JavaBean, then a type stub will "
+"be generated. There is one exception to this rule; if your component is a "
+"JavaBean (ie it is not a session bean nor an entity bean) and any of its "
+"methods are annotated with @WebRemote, then an executable stub will be "
+"generated for it instead of a type stub. This allows you to use remoting to "
+"call methods of your JavaBean components in a non-EJB environment where you "
+"don't have access to session beans."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:130
+#, no-c-format
+msgid "The Context"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:131
+#, no-c-format
+msgid ""
+"The Seam Remoting Context contains additional information which is sent and "
+"received as part of a remoting request/response cycle. At this stage it only "
+"contains the conversation ID but may be expanded in the future."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:134
+#, no-c-format
+msgid "Setting and reading the Conversation ID"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:136
+#, no-c-format
+msgid ""
+"If you intend on using remote calls within the scope of a conversation then "
+"you need to be able to read or set the conversation ID in the Seam Remoting "
+"Context. To read the conversation ID after making a remote request call "
+"<literal>Seam.Remoting.getContext().getConversationId()</literal>. To set "
+"the conversation ID before making a request, call <literal>Seam.Remoting."
+"getContext().setConversationId()</literal>."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:139
+#, no-c-format
+msgid ""
+"If the conversation ID hasn't been explicitly set with <literal>Seam."
+"Remoting.getContext().setConversationId()</literal>, then it will be "
+"automatically assigned the first valid conversation ID that is returned by "
+"any remoting call. If you are working with multiple conversations within "
+"your page, then you may need to explicitly set the conversation ID before "
+"each call. If you are working with just a single conversation, then you "
+"don't need to do anything special."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:145
+#, no-c-format
+msgid "Batch Requests"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:146
+#, no-c-format
+msgid ""
+"Seam Remoting allows multiple component calls to be executed within a single "
+"request. It is recommended that this feature is used wherever it is "
+"appropriate to reduce network traffic."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:149
+#, no-c-format
+msgid ""
+"The method <literal>Seam.Remoting.startBatch()</literal> will start a new "
+"batch, and any component calls executed after starting a batch are queued, "
+"rather than being sent immediately. When all the desired component calls "
+"have been added to the batch, the <literal>Seam.Remoting.executeBatch()</"
+"literal> method will send a single request containing all of the queued "
+"calls to the server, where they will be executed in order. After the calls "
+"have been executed, a single response containining all return values will be "
+"returned to the client and the callback functions (if provided) triggered in "
+"the same order as execution."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:152
+#, no-c-format
+msgid ""
+"If you start a new batch via the <literal>startBatch()</literal> method but "
+"then decide you don't want to send it, the <literal>Seam.Remoting.cancelBatch"
+"()</literal> method will discard any calls that were queued and exit the "
+"batch mode."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:155
+#, no-c-format
+msgid ""
+"To see an example of a batch being used, take a look at <literal>/examples/"
+"remoting/chatroom</literal>."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:159
+#, no-c-format
+msgid "Working with Data types"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:160
+#, no-c-format
+msgid "Primitives / Basic Types"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:161
+#, no-c-format
+msgid ""
+"This section describes the support for basic data types. On the server side "
+"these values are generally compatible with either their primitive type or "
+"their corresponding wrapper class."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:164
+#, no-c-format
+msgid "String"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:165
+#, no-c-format
+msgid ""
+"Simply use Javascript String objects when setting String parameter values."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:168
+#, no-c-format
+msgid "Number"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:169
+#, no-c-format
+msgid ""
+"There is support for all number types supported by Java. On the client side, "
+"number values are always serialized as their String representation and then "
+"on the server side they are converted to the correct destination type. "
+"Conversion into either a primitive or wrapper type is supported for "
+"<literal>Byte</literal>, <literal>Double</literal>, <literal>Float</"
+"literal>, <literal>Integer</literal>, <literal>Long</literal> and "
+"<literal>Short</literal> types."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:172
+#, no-c-format
+msgid "Boolean"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:173
+#, no-c-format
+msgid ""
+"Booleans are represented client side by Javascript Boolean values, and "
+"server side by a Java boolean."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:176
+#, no-c-format
+msgid "JavaBeans"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:177
+#, no-c-format
+msgid ""
+"In general these will be either Seam entity or JavaBean components, or some "
+"other non-component class. Use the appropriate method (either <literal>Seam."
+"Component.newInstance()</literal> for Seam components or <literal>Seam."
+"Remoting.createType()</literal> for everything else) to create a new "
+"instance of the object."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:180
+#, no-c-format
+msgid ""
+"It is important to note that only objects that are created by either of "
+"these two methods should be used as parameter values, where the parameter is "
+"not one of the other valid types mentioned anywhere else in this section. In "
+"some situations you may have a component method where the exact parameter "
+"type cannot be determined, such as:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:183
+#, no-c-format
+msgid ""
+"@Name(\"myAction\")\n"
+"  public class MyAction implements MyActionLocal {\n"
+"    public void doSomethingWithObject(Object obj) {\n"
+"      // code\n"
+"    }\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:184
+#, no-c-format
+msgid ""
+"In this case you might want to pass in an instance of your "
+"<literal>myWidget</literal> component, however the interface for "
+"<literal>myAction</literal> won't include <literal>myWidget</literal> as it "
+"is not directly referenced by any of its methods. To get around this, "
+"<literal>MyWidget</literal> needs to be explicitly imported:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:187
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?myAction&amp;myWidget\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:188
+#, no-c-format
+msgid ""
+"This will then allow a <literal>myWidget</literal> object to be created with "
+"<literal>Seam.Component.newInstance(\"myWidget\")</literal>, which can then "
+"be passed to <literal>myAction.doSomethingWithObject()</literal>."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:191
+#, no-c-format
+msgid "Dates and Times"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:192
+#, no-c-format
+msgid ""
+"Date values are serialized into a String representation that is accurate to "
+"the millisecond. On the client side, use a Javascript Date object to work "
+"with date values. On the server side, use any <literal>java.util.Date</"
+"literal> (or descendent, such as <literal>java.sql.Date</literal> or "
+"<literal>java.sql.Timestamp</literal> class."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:195
+#, no-c-format
+msgid "Enums"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:196
+#, no-c-format
+msgid ""
+"On the client side, enums are treated the same as Strings. When setting the "
+"value for an enum parameter, simply use the String representation of the "
+"enum. Take the following component as an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:199
+#, no-c-format
+msgid ""
+"@Name(\"paintAction\")\n"
+"  public class paintAction implements paintLocal {\n"
+"    public enum Color {red, green, blue, yellow, orange, purple};\n"
+"\n"
+"    public void paint(Color color) {\n"
+"      // code\n"
+"    }    \n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:200
+#, no-c-format
+msgid ""
+"To call the <literal>paint()</literal> method with the color <literal>red</"
+"literal>, pass the parameter value as a String literal:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:203
+#, no-c-format
+msgid "Seam.Component.getInstance(\"paintAction\").paint(\"red\");"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:204
+#, no-c-format
+msgid ""
+"The inverse is also true - that is, if a component method returns an enum "
+"parameter (or contains an enum field anywhere in the returned object graph) "
+"then on the client-side it will be represented as a String."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:207
+#, no-c-format
+msgid "Collections"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:208
+#, no-c-format
+msgid "Bags"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:209
+#, no-c-format
+msgid ""
+"Bags cover all collection types including arrays, collections, lists, sets, "
+"(but excluding Maps - see the next section for those), and are implemented "
+"client-side as a Javascript array. When calling a component method that "
+"accepts one of these types as a parameter, your parameter should be a "
+"Javascript array. If a component method returns one of these types, then the "
+"return value will also be a Javascript array. The remoting framework is "
+"clever enough on the server side to convert the bag to an appropriate type "
+"for the component method call."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:212
+#, no-c-format
+msgid "Maps"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:213
+#, no-c-format
+msgid ""
+"As there is no native support for Maps within Javascript, a simple Map "
+"implementation is provided with the Seam Remoting framework. To create a Map "
+"which can be used as a parameter to a remote call, create a new "
+"<literal>Seam.Remoting.Map</literal> object:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:216
+#, no-c-format
+msgid "var map = new Seam.Remoting.Map();"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:217
+#, no-c-format
+msgid ""
+"This Javascript implementation provides basic methods for working with Maps: "
+"<literal>size()</literal>, <literal>isEmpty()</literal>, <literal>keySet()</"
+"literal>, <literal>values()</literal>, <literal>get(key)</literal>, "
+"<literal>put(key, value)</literal>, <literal>remove(key)</literal> and "
+"<literal>contains(key)</literal>. Each of these methods are equivalent to "
+"their Java counterpart. Where the method returns a collection, such as "
+"<literal>keySet()</literal> and <literal>values()</literal>, a Javascript "
+"Array object will be returned that contains the key or value objects "
+"(respectively)."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:220
+#, no-c-format
+msgid "Debugging"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:221
+#, no-c-format
+msgid ""
+"To aid in tracking down bugs, it is possible to enable a debug mode which "
+"will display the contents of all the packets send back and forth between the "
+"client and server in a popup window. To enable debug mode, either execute "
+"the <literal>setDebug()</literal> method in Javascript:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:224
+#, no-c-format
+msgid "Seam.Remoting.setDebug(true);"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:225
+#, no-c-format
+msgid "Or configure it via components.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:228
+#, no-c-format
+msgid "&lt;remoting:remoting debug=\"true\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:229
+#, no-c-format
+msgid ""
+"To turn off debugging, call <literal>setDebug(false)</literal>. If you want "
+"to write your own messages to the debug log, call <literal>Seam.Remoting.log"
+"(message)</literal>."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:233
+#, no-c-format
+msgid "The Loading Message"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:234
+#, no-c-format
+msgid ""
+"The default loading message that appears in the top right corner of the "
+"screen can be modified, its rendering customised or even turned off "
+"completely."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:237
+#, no-c-format
+msgid "Changing the message"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:238
+#, no-c-format
+msgid ""
+"To change the message from the default \"Please Wait...\" to something "
+"different, set the value of <literal>Seam.Remoting.loadingMessage</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:241
+#, no-c-format
+msgid "Seam.Remoting.loadingMessage = \"Loading...\";"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:243
+#, no-c-format
+msgid "Hiding the loading message"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:244
+#, no-c-format
+msgid ""
+"To completely suppress the display of the loading message, override the "
+"implementation of <literal>displayLoadingMessage()</literal> and "
+"<literal>hideLoadingMessage()</literal> with functions that instead do "
+"nothing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:247
+#, no-c-format
+msgid ""
+"// don't display the loading indicator\n"
+"  Seam.Remoting.displayLoadingMessage = function() {};\n"
+"  Seam.Remoting.hideLoadingMessage = function() {};"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:248
+#, no-c-format
+msgid "A Custom Loading Indicator"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:249
+#, no-c-format
+msgid ""
+"It is also possible to override the loading indicator to display an animated "
+"icon, or anything else that you want. To do this override the "
+"<literal>displayLoadingMessage()</literal> and <literal>hideLoadingMessage()"
+"</literal> messages with your own implementation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:252
+#, no-c-format
+msgid ""
+"Seam.Remoting.displayLoadingMessage = function() {\n"
+"    // Write code here to display the indicator\n"
+"  };\n"
+"  \n"
+"  Seam.Remoting.hideLoadingMessage = function() {\n"
+"    // Write code here to hide the indicator\n"
+"  };"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:253
+#, no-c-format
+msgid "Controlling what data is returned"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:254
+#, no-c-format
+msgid ""
+"When a remote method is executed, the result is serialized into an XML "
+"response that is returned to the client. This response is then unmarshaled "
+"by the client into a Javascript object. For complex types (i.e. Javabeans) "
+"that include references to other objects, all of these referenced objects "
+"are also serialized as part of the response. These objects may reference "
+"other objects, which may reference other objects, and so forth. If left "
+"unchecked, this object \"graph\" could potentially be enormous, depending on "
+"what relationships exist between your objects. And as a side issue (besides "
+"the potential verbosity of the response), you might also wish to prevent "
+"sensitive information from being exposed to the client."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:257
+#, no-c-format
+msgid ""
+"Seam Remoting provides a simple means to \"constrain\" the object graph, by "
+"specifying the <literal>exclude</literal> field of the remote method's "
+"<literal>@WebRemote</literal> annotation. This field accepts a String array "
+"containing one or more paths specified using dot notation. When invoking a "
+"remote method, the objects in the result's object graph that match these "
+"paths are excluded from the serialized result packet."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:260
+#, no-c-format
+msgid ""
+"For all our examples, we'll use the following <literal>Widget</literal> "
+"class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:263
+#, no-c-format
+msgid ""
+"@Name(\"widget\")\n"
+"public class Widget\n"
+"{\n"
+"  private String value;\n"
+"  private String secret;\n"
+"  private Widget child;\n"
+"  private Map&lt;String,Widget&gt; widgetMap;\n"
+"  private List&lt;Widget&gt; widgetList;\n"
+"  \n"
+"  // getters and setters for all fields\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:264
+#, no-c-format
+msgid "Constraining normal fields"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:265
+#, no-c-format
+msgid ""
+"If your remote method returns an instance of <literal>Widget</literal>, but "
+"you don't want to expose the <literal>secret</literal> field because it "
+"contains sensitive information, you would constrain it like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:268
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:269
+#, no-c-format
+msgid ""
+"The value \"secret\" refers to the <literal>secret</literal> field of the "
+"returned object. Now, suppose that we don't care about exposing this "
+"particular field to the client. Instead, notice that the <literal>Widget</"
+"literal> value that is returned has a field <literal>child</literal> that is "
+"also a <literal>Widget</literal>. What if we want to hide the "
+"<literal>child</literal>'s <literal>secret</literal> value instead? We can "
+"do this by using dot notation to specify this field's path within the "
+"result's object graph:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:272
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"child.secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:273
+#, no-c-format
+msgid "Constraining Maps and Collections"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:274
+#, no-c-format
+msgid ""
+"The other place that objects can exist within an object graph are within a "
+"<literal>Map</literal> or some kind of collection (<literal>List</literal>, "
+"<literal>Set</literal>, <literal>Array</literal>, etc). Collections are "
+"easy, and are treated like any other field. For example, if our "
+"<literal>Widget</literal> contained a list of other <literal>Widget</"
+"literal>s in its <literal>widgetList</literal> field, to constrain the "
+"<literal>secret</literal> field of the <literal>Widget</literal>s in this "
+"list the annotation would look like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:277
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetList.secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:278
+#, no-c-format
+msgid ""
+"To constrain a <literal>Map</literal>'s key or value, the notation is "
+"slightly different. Appending <literal>[key]</literal> after the "
+"<literal>Map</literal>'s field name will constrain the <literal>Map</"
+"literal>'s key object values, while <literal>[value]</literal> will "
+"constrain the value object values. The following example demonstrates how "
+"the values of the <literal>widgetMap</literal> field have their "
+"<literal>secret</literal> field constrained:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:281
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetMap[value].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:282
+#, no-c-format
+msgid "Constraining objects of a specific type"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:283
+#, no-c-format
+msgid ""
+"There is one last notation that can be used to constrain the fields of a "
+"type of object no matter where in the result's object graph it appears. This "
+"notation uses either the name of the component (if the object is a Seam "
+"component) or the fully qualified class name (only if the object is not a "
+"Seam component) and is expressed using square brackets:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:286
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"[widget].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:287
+#, no-c-format
+msgid "Combining Constraints"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:288
+#, no-c-format
+msgid ""
+"Constraints can also be combined, to filter objects from multiple paths "
+"within the object graph:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:291
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetList.secret\", \"widgetMap[value].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:292
+#, no-c-format
+msgid "JMS Messaging"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:293
+#, no-c-format
+msgid ""
+"Seam Remoting provides experimental support for JMS Messaging. This section "
+"describes the JMS support that is currently implemented, but please note "
+"that this may change in the future. It is currently not recommended that "
+"this feature is used within a production environment."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:297
+#, no-c-format
+msgid ""
+"Before you can subscribe to a JMS topic, you must first configure a list of "
+"the topics that can be subscribed to by Seam Remoting. List the topics under "
+"<literal>org.jboss.seam.remoting.messaging.subscriptionRegistry."
+"allowedTopics</literal> in <literal>seam.properties</literal>, <literal>web."
+"xml</literal> or <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:300 Remoting.xml:333
+#, no-c-format
+msgid "&lt;remoting:remoting poll-timeout=\"5\" poll-interval=\"1\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:301
+#, no-c-format
+msgid "Subscribing to a JMS Topic"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:302
+#, no-c-format
+msgid "The following example demonstrates how to subscribe to a JMS Topic:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:305
+#, no-c-format
+msgid ""
+"function subscriptionCallback(message)\n"
+"  {\n"
+"    if (message instanceof Seam.Remoting.TextMessage)\n"
+"      alert(\"Received message: \" + message.getText());\n"
+"  }        \n"
+"        \n"
+"  Seam.Remoting.subscribe(\"topicName\", subscriptionCallback);"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:306
+#, no-c-format
+msgid ""
+"The <literal>Seam.Remoting.subscribe()</literal> method accepts two "
+"parameters, the first being the name of the JMS Topic to subscribe to, the "
+"second being the callback function to invoke when a message is received."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:309
+#, no-c-format
+msgid ""
+"There are two types of messages supported, Text messages and Object "
+"messages. If you need to test for the type of message that is passed to your "
+"callback function you can use the <literal>instanceof</literal> operator to "
+"test whether the message is a <literal>Seam.Remoting.TextMessage</literal> "
+"or <literal>Seam.Remoting.ObjectMessage</literal>. A <literal>TextMessage</"
+"literal> contains the text value in its <literal>text</literal> field (or "
+"alternatively call <literal>getText()</literal> on it), while an "
+"<literal>ObjectMessage</literal> contains its object value in its "
+"<literal>object</literal> field (or call its <literal>getObject()</literal> "
+"method)."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:312
+#, no-c-format
+msgid "Unsubscribing from a Topic"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:313
+#, no-c-format
+msgid ""
+"To unsubscribe from a topic, call <literal>Seam.Remoting.unsubscribe()</"
+"literal> and pass in the topic name:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:316
+#, no-c-format
+msgid "Seam.Remoting.unsubscribe(\"topicName\");"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:317
+#, no-c-format
+msgid "Tuning the Polling Process"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:318
+#, no-c-format
+msgid ""
+"There are two parameters which you can modify to control how polling occurs. "
+"The first one is <literal>Seam.Remoting.pollInterval</literal>, which "
+"controls how long to wait between subsequent polls for new messages. This "
+"parameter is expressed in seconds, and its default setting is 10."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:321
+#, no-c-format
+msgid ""
+"The second parameter is <literal>Seam.Remoting.pollTimeout</literal>, and is "
+"also expressed as seconds. It controls how long a request to the server "
+"should wait for a new message before timing out and sending an empty "
+"response. Its default is 0 seconds, which means that when the server is "
+"polled, if there are no messages ready for delivery then an empty response "
+"will be immediately returned."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:324
+#, no-c-format
+msgid ""
+"Caution should be used when setting a high <literal>pollTimeout</literal> "
+"value; each request that has to wait for a message means that a server "
+"thread is tied up until a message is received, or until the request times "
+"out. If many such requests are being served simultaneously, it could mean a "
+"large number of threads become tied up because of this reason."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:327
+#, no-c-format
+msgid ""
+"It is recommended that you set these options via components.xml, however "
+"they can be overridden via Javascript if desired. The following example "
+"demonstrates how to configure the polling to occur much more aggressively. "
+"You should set these parameters to suitable values for your application:"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:330
+#, no-c-format
+msgid "Via components.xml:"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:334
+#, no-c-format
+msgid "Via JavaScript:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:337
+#, no-c-format
+msgid ""
+"// Only wait 1 second between receiving a poll response and sending the next "
+"poll request.\n"
+"  Seam.Remoting.pollInterval = 1;\n"
+"  \n"
+"  // Wait up to 5 seconds on the server for new messages\n"
+"  Seam.Remoting.pollTimeout = 5;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Security.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Security.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Security.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1676 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Security.xml:10
+#, no-c-format
+msgid "Security"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:11
+#, no-c-format
+msgid ""
+"The Seam Security API is an optional Seam feature that provides "
+"authentication and authorization features for securing both domain and page "
+"resources within your Seam project."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:14
+#, no-c-format
+msgid "Overview"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:15
+#, no-c-format
+msgid "Seam Security provides two different modes of operation:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:20
+#, no-c-format
+msgid ""
+"<emphasis>simplified mode</emphasis> - this mode supports authentication "
+"services and simple role-based security checks."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:25
+#, no-c-format
+msgid ""
+"<emphasis>advanced mode</emphasis> - this mode supports all the same "
+"features as the simplified mode, plus it offers rule-based security checks "
+"using JBoss Rules."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:30
+#, no-c-format
+msgid "Which mode is right for my application?"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:31
+#, no-c-format
+msgid ""
+"That all depends on the requirements of your application. If you have "
+"minimal security requirements, for example if you only wish to restrict "
+"certain pages and actions to users who are logged in, or who belong to a "
+"certain role, then the simplified mode will probably be sufficient. The "
+"advantages of this is a more simplified configuration, significantly less "
+"libraries to include, and a smaller memory footprint."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:34
+#, no-c-format
+msgid ""
+"If on the other hand, your application requires security checks based on "
+"contextual state or complex business rules, then you will require the "
+"features provided by the advanced mode."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:37
+#, no-c-format
+msgid "Requirements"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:38
+#, no-c-format
+msgid ""
+"If using the advanced mode features of Seam Security, the following jar "
+"files are required to be configured as modules in <literal>application.xml</"
+"literal>. If you are using Seam Security in simplified mode, these are "
+"<emphasis>not</emphasis> required:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:43
+#, no-c-format
+msgid "drools-compiler-3.0.5.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:48
+#, no-c-format
+msgid "drools-core-3.0.5.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:53
+#, no-c-format
+msgid "commons-jci-core-1.0-406301.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:58
+#, no-c-format
+msgid "commons-jci-janino-2.4.3.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:63
+#, no-c-format
+msgid "commons-lang-2.1.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:68
+#, no-c-format
+msgid "janino-2.4.3.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:73
+#, no-c-format
+msgid "stringtemplate-2.3b6.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:78
+#, no-c-format
+msgid "antlr-2.7.6.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:83
+#, no-c-format
+msgid "antlr-3.0ea8.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:88
+#, no-c-format
+msgid ""
+"For web-based security, <literal>jboss-seam-ui.jar</literal> must also be "
+"included in the application's war file. Also, to make use of the security EL "
+"functions, <literal>SeamFaceletViewHandler</literal> must be used. Configure "
+"it in <literal>faces-config.xml</literal> like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:91
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;view-handler&gt;org.jboss.seam.ui.facelet.SeamFaceletViewHandler&lt;/"
+"view-handler&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:92
+#, no-c-format
+msgid "Authentication"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:93
+#, no-c-format
+msgid ""
+"The authentication features provided by Seam Security are built upon JAAS "
+"(Java Authentication and Authorization Service), and as such provide a "
+"robust and highly configurable API for handling user authentication. "
+"However, for less complex authentication requirements Seam offers a much "
+"more simplified method of authentication that hides the complexity of JAAS."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:96
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:97
+#, no-c-format
+msgid ""
+"The simplified authentication method uses a built-in JAAS login module, "
+"<literal>SeamLoginModule</literal>, which delegates authentication to one of "
+"your own Seam components. This login module is already configured inside "
+"Seam as part of a default application policy and as such does not require "
+"any additional configuration files. It allows you to write an authentication "
+"method using the entity classes that are provided by your own application. "
+"Configuring this simplified form of authentication requires the "
+"<literal>identity</literal> component to be configured in "
+"<literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:100
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:security=\"http://jboss.com/products/seam/security\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core http://jboss.com/"
+"products/seam/core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components http://jboss.com/"
+"products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/drools http://jboss.com/"
+"products/seam/drools-1.2.xsd\"\n"
+"                 http://jboss.com/products/seam/security http://jboss.com/"
+"products/seam/security-1.2.xsd\"&gt;                \n"
+"        \n"
+"    &lt;security:identity authenticate-method=\"#{authenticator.authenticate}"
+"\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:101
+#, no-c-format
+msgid ""
+"If you wish to use the advanced security features such as rule-based "
+"permission checks, all you need to do is include the Drools (JBoss Rules) "
+"jars in your classpath, and add some additional configuration, described "
+"later."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:104
+#, no-c-format
+msgid ""
+"The EL expression <literal>#{authenticator.authenticate}</literal> is a "
+"method binding indicating that the <literal>authenticate</literal> method of "
+"the <literal>authenticator</literal> component will be used to authenticate "
+"the user."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:107
+#, no-c-format
+msgid "Writing an authentication method"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:108
+#, no-c-format
+msgid ""
+"The <literal>authenticate-method</literal> property specified for "
+"<literal>identity</literal> in <literal>components.xml</literal> specifies "
+"which method will be used by <literal>SeamLoginModule</literal> to "
+"authenticate users. This method takes no parameters, and is expected to "
+"return a boolean indicating whether authentication is successful or not. The "
+"user's username and password can be obtained from <literal>Identity.instance"
+"().getUsername()</literal> and <literal>Identity.instance().getPassword()</"
+"literal>, respectively. Any roles that the user is a member of should be "
+"assigned using <literal>Identity.instance().addRole()</literal>. Here's a "
+"complete example of an authentication method inside a JavaBean component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:111
+#, no-c-format
+msgid ""
+"@Name(\"authenticator\")\n"
+"public class Authenticator {\n"
+"   @In EntityManager entityManager;\n"
+"   \n"
+"   public boolean authenticate() {\n"
+"      try\n"
+"      {\n"
+"         User user = (User) entityManager.createQuery(\n"
+"            \"from User where username = :username and password = :password"
+"\")\n"
+"            .setParameter(\"username\", Identity.instance().getUsername())\n"
+"            .setParameter(\"password\", Identity.instance().getPassword())\n"
+"            .getSingleResult();\n"
+"\n"
+"         if (user.getRoles() != null)\n"
+"         {\n"
+"            for (UserRole mr : user.getRoles())\n"
+"               Identity.instance().addRole(mr.getName());\n"
+"         }\n"
+"\n"
+"         return true;\n"
+"      }\n"
+"      catch (NoResultException ex)\n"
+"      {\n"
+"         FacesMessages.instance().add(\"Invalid username/password\");\n"
+"         return false;\n"
+"      }\n"
+"      \n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:112
+#, no-c-format
+msgid ""
+"In the above example, both <literal>User</literal> and <literal>UserRole</"
+"literal> are application-specific entity beans. The <literal>roles</literal> "
+"parameter is populated with the roles that the user is a member of, which "
+"should be added to the <literal>Set</literal> as literal string values, e.g. "
+"\"admin\", \"user\". In this case, if the user record is not found and a "
+"<literal>NoResultException</literal> thrown, the authentication method "
+"returns <literal>false</literal> to indicate the authentication failed."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:115
+#, no-c-format
+msgid "Writing a login form"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:116
+#, no-c-format
+msgid ""
+"The <literal>Identity</literal> component provides both <literal>username</"
+"literal> and <literal>password</literal> properties, catering for the most "
+"common authentication scenario. These properties can be bound directly to "
+"the username and password fields on a login form. Once these properties are "
+"set, calling the <literal>identity.login()</literal> method will "
+"authenticate the user using the provided credentials. Here's an example of a "
+"simple login form:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:119
+#, no-c-format
+msgid ""
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"name\" value=\"Username\"/&gt;\n"
+"    &lt;h:inputText id=\"name\" value=\"#{identity.username}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"password\" value=\"Password\"/&gt;\n"
+"    &lt;h:inputSecret id=\"password\" value=\"#{identity.password}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;div&gt;\n"
+"    &lt;h:commandButton value=\"Login\" action=\"#{identity.login}\"/&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:120
+#, no-c-format
+msgid ""
+"Similarly, logging out the user is done by calling <literal>#{identity."
+"logout}</literal>. Calling this action will clear the security state of the "
+"currently authenticated user."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:123
+#, no-c-format
+msgid "Simplified Configuration - Summary"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:124
+#, no-c-format
+msgid ""
+"So to sum up, there are the three easy steps to configure authentication:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:129
+#, no-c-format
+msgid ""
+"Configure an authentication method in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:134
+#, no-c-format
+msgid "Write an authentication method."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:139
+#, no-c-format
+msgid "Write a login form so that the user can authenticate."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:144
+#, no-c-format
+msgid "Handling Security Exceptions"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:145
+#, no-c-format
+msgid ""
+"To prevent users from receiving the default error page in response to a "
+"security error, it's recommended that <literal>pages.xml</literal> is "
+"configured to redirect security errors to a more \"pretty\" page. The two "
+"main types of exceptions thrown by the security API are:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:150
+#, no-c-format
+msgid ""
+"<literal>NotLoggedInException</literal> - This exception is thrown if the "
+"user attempts to access a restricted action or page when they are not logged "
+"in."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:155
+#, no-c-format
+msgid ""
+"<literal>AuthorizationException</literal> - This exception is only thrown if "
+"the user is already logged in, and they have attempted to access a "
+"restricted action or page for which they do not have the necessary "
+"privileges."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:160
+#, no-c-format
+msgid ""
+"In the case of a <literal>NotLoggedInException</literal>, it is recommended "
+"that the user is redirected to either a login or registration page so that "
+"they can log in. For an <literal>AuthorizationException</literal>, it may be "
+"useful to redirect the user to an error page. Here's an example of a "
+"<literal>pages.xml</literal> file that redirects both of these security "
+"exceptions:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:163
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"\n"
+"    ...\n"
+"    \n"
+"    &lt;exception class=\"org.jboss.seam.security.NotLoggedInException"
+"\"&gt;\n"
+"        &lt;redirect view-id=\"/login.xhtml\"&gt;\n"
+"            &lt;message&gt;You must be logged in to perform this action&lt;/"
+"message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"    \n"
+"    &lt;exception class=\"org.jboss.seam.security.AuthorizationException"
+"\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"        &lt;redirect view-id=\"/security_error.xhtml\"&gt;\n"
+"            &lt;message&gt;\n"
+"                You do not have the necessary security privileges to perform "
+"this action.\n"
+"            &lt;/message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"  \n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:164
+#, no-c-format
+msgid ""
+"Most web applications require even more sophisticated handling of login "
+"redirection, so Seam includes some special functionality for handling this "
+"problem."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:167
+#, no-c-format
+msgid "Login Redirection"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:168
+#, no-c-format
+msgid ""
+"You can ask Seam to redirect the user to a login screen when an "
+"unauthenticated user tries to access a particular view (or wildcarded view "
+"id) as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:171
+#, no-c-format
+msgid ""
+"&lt;pages login-view-id=\"/login.xhtml\"&gt;\n"
+"\n"
+"    &lt;page view-id=\"/members/*\" login-required=\"true\"/&gt;\n"
+"    \n"
+"    ...\n"
+"    \n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:172
+#, no-c-format
+msgid ""
+"(This is less of a blunt instrument than the exception handler shown above, "
+"but should probably be used in conjunction with it.)"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:175
+#, no-c-format
+msgid ""
+"After the user logs in, we want to automatically send them back where they "
+"came from, so they can retry the action that required logging in. If you add "
+"the following event listeners to <literal>components.xml</literal>, attempts "
+"to access a restricted view while not logged in will be remembered, so that "
+"upon the user successfully logging in they will be redirected to the "
+"originally requested view, with any page parameters that existed in the "
+"original request."
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:178
+#, no-c-format
+msgid ""
+"&lt;event type=\"org.jboss.seam.notLoggedIn\"&gt;\n"
+"    &lt;action expression=\"#{redirect.captureCurrentView}\"/&gt;\n"
+"&lt;/event&gt;\n"
+"    \n"
+"&lt;event type=\"org.jboss.seam.postAuthenticate\"&gt;\n"
+"    &lt;action expression=\"#{redirect.returnToCapturedView}\"/&gt;\n"
+"&lt;/event&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:179
+#, no-c-format
+msgid ""
+"Note that login redirection is implemented as a conversation-scoped "
+"mechanism, so don't end the conversation in your <literal>authenticate()</"
+"literal> method."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:182
+#, no-c-format
+msgid "Advanced Authentication Features"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:183
+#, no-c-format
+msgid ""
+"This section explores some of the advanced features provided by the security "
+"API for addressing more complex security requirements."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:186
+#, no-c-format
+msgid "Using your container's JAAS configuration"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:187
+#, no-c-format
+msgid ""
+"If you would rather not use the simplified JAAS configuration provided by "
+"the Seam Security API, you may instead delegate to the default system JAAS "
+"configuration by providing a <literal>jaasConfigName</literal> property in "
+"<literal>components.xml</literal>. For example, if you are using JBoss AS "
+"and wish to use the <literal>other</literal> policy (which uses the "
+"<literal>UsersRolesLoginModule</literal> login module provided by JBoss AS), "
+"then the entry in <literal>components.xml</literal> would look like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:190
+#, no-c-format
+msgid ""
+"&lt;security:identity authenticate-method=\"#{authenticator.authenticate}"
+"\" \n"
+"                      jaas-config-name=\"other\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:191
+#, no-c-format
+msgid "Authorization"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:192
+#, no-c-format
+msgid ""
+"There are a number of authorization features provided by the Seam Security "
+"API for securing access to components, component methods, and pages. This "
+"section describes each of these. An important thing to note is that if you "
+"wish to use any of the advanced features (such as rule-based permissions) "
+"then your <literal>components.xml</literal> must be configured to support "
+"this - see the Configuration section above."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:195
+#, no-c-format
+msgid "Core concepts"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:196
+#, no-c-format
+msgid ""
+"Each of the authorization mechanisms provided by the Seam Security API are "
+"built upon the concept of a user being granted roles and/or permissions. A "
+"role is a <emphasis>group</emphasis>, or <emphasis>type</emphasis>, of user "
+"that may have been granted certain privileges for performing one or more "
+"specific actions within an application. A permission on the other hand is a "
+"privilege (sometimes once-off) for performing a single, specific action. It "
+"is entirely possible to build an application using nothing but permissions, "
+"however roles offer a higher level of convenience when granting privileges "
+"to groups of users."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:199
+#, no-c-format
+msgid ""
+"Roles are simple, consisting of only a name such as \"admin\", \"user\", "
+"\"customer\", etc. Permissions consist of both a name and an action, and are "
+"represented within this documentation in the form <literal>name:action</"
+"literal>, for example <literal>customer:delete</literal>, or "
+"<literal>customer:insert</literal>."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:202
+#, no-c-format
+msgid "Securing components"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:203
+#, no-c-format
+msgid ""
+"Let's start by examining the simplest form of authorization, component "
+"security, starting with the <literal>@Restrict</literal> annotation."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:206
+#, no-c-format
+msgid "The @Restrict annotation"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:207
+#, no-c-format
+msgid ""
+"Seam components may be secured either at the method or the class level, "
+"using the <literal>@Restrict</literal> annotation. If both a method and it's "
+"declaring class are annotated with <literal>@Restrict</literal>, the method "
+"restriction will take precedence (and the class restriction will not apply). "
+"If a method invocation fails a security check, then an exception will be "
+"thrown as per the contract for <literal>Identity.checkRestriction()</"
+"literal> (see Inline Restrictions). A <literal>@Restrict</literal> on just "
+"the component class itself is equivalent to adding <literal>@Restrict</"
+"literal> to each of its methods."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:210
+#, no-c-format
+msgid ""
+"An empty <literal>@Restrict</literal> implies a permission check of "
+"<literal>componentName:methodName</literal>. Take for example the following "
+"component method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:213
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class AccountAction {\n"
+"    @Restrict public void delete() {\n"
+"      ...\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:214
+#, no-c-format
+msgid ""
+"In this example, the implied permission required to call the <literal>delete"
+"()</literal> method is <literal>account:delete</literal>. The equivalent of "
+"this would be to write <literal>@Restrict(\"#{s:hasPermission"
+"('account','delete',null)}\")</literal>. Now let's look at another example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:217
+#, no-c-format
+msgid ""
+"@Restrict @Name(\"account\")\n"
+"public class AccountAction {\n"
+"    public void insert() {\n"
+"      ...\n"
+"    }\n"
+"    @Restrict(\"#{s:hasRole('admin')}\") \n"
+"    public void delete() {\n"
+"      ...\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:218
+#, no-c-format
+msgid ""
+"This time, the component class itself is annotated with <literal>@Restrict</"
+"literal>. This means that any methods without an overriding "
+"<literal>@Restrict</literal> annotation require an implicit permission "
+"check. In the case of this example, the <literal>insert()</literal> method "
+"requires a permission of <literal>account:insert</literal>, while the "
+"<literal>delete()</literal> method requires that the user is a member of the "
+"<literal>admin</literal> role."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:221
+#, no-c-format
+msgid ""
+"Before we go any further, let's address the <literal>#{s:hasRole()}</"
+"literal> expression seen in the above example. Both <literal>s:hasRole</"
+"literal> and <literal>s:hasPermission</literal> are EL functions, which "
+"delegate to the correspondingly named methods of the <literal>Identity</"
+"literal> class. These functions can be used within any EL expression "
+"throughout the entirety of the security API."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:224
+#, no-c-format
+msgid ""
+"Being an EL expression, the value of the <literal>@Restrict</literal> "
+"annotation may reference any objects that exist within a Seam context. This "
+"is extremely useful when performing permission checks for a specific object "
+"instance. Look at this example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:227
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class AccountAction {\n"
+"    @In Account selectedAccount;\n"
+"    @Restrict(\"#{s:hasPermission('account','modify',selectedAccount)}\")\n"
+"    public void modify() {\n"
+"        selectedAccount.modify();\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:228
+#, no-c-format
+msgid ""
+"The interesting thing to note from this example is the reference to "
+"<literal>selectedAccount</literal> seen within the <literal>hasPermission()</"
+"literal> function call. The value of this variable will be looked up from "
+"within the Seam context, and passed to the <literal>hasPermission()</"
+"literal> method in <literal>Identity</literal>, which in this case can then "
+"determine if the user has the required permission for modifying the "
+"specified <literal>Account</literal> object."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:231
+#, no-c-format
+msgid "Inline restrictions"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:232
+#, no-c-format
+msgid ""
+"Sometimes it might be desirable to perform a security check in code, without "
+"using the <literal>@Restrict</literal> annotation. In this situation, simply "
+"use <literal>Identity.checkRestriction()</literal> to evaluate a security "
+"expression, like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:235
+#, no-c-format
+msgid ""
+"public void deleteCustomer() {\n"
+"    Identity.instance().checkRestriction(\"#{s:hasPermission"
+"('customer','delete',\n"
+"        selectedCustomer)}\");\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:236
+#, no-c-format
+msgid ""
+"If the expression specified doesn't evaluate to <literal>true</literal>, "
+"either"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:241
+#, no-c-format
+msgid ""
+"if the user is not logged in, a <literal>NotLoggedInException</literal> "
+"exception is thrown or"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:246
+#, no-c-format
+msgid ""
+"if the user is logged in, an <literal>AuthorizationException</literal> "
+"exception is thrown."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:251
+#, no-c-format
+msgid ""
+"It is also possible to call the <literal>hasRole()</literal> and "
+"<literal>hasPermission()</literal> methods directly from Java code:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:254
+#, no-c-format
+msgid ""
+"if (!Identity.instance().hasRole(\"admin\"))\n"
+"     throw new AuthorizationException(\"Must be admin to perform this action"
+"\");\n"
+"\n"
+"if (!Identity.instance().hasPermission(\"customer\", \"create\", null))\n"
+"     throw new AuthorizationException(\"You may not create new customers\");"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:255
+#, no-c-format
+msgid "Security in the user interface"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:256
+#, no-c-format
+msgid ""
+"One indication of a well designed user interface is that the user is not "
+"presented with options for which they don't have the necessary privileges to "
+"use. Seam Security allows conditional rendering of either 1) sections of a "
+"page or 2) individual controls, based upon the privileges of the user, using "
+"the very same EL expressions that are used for component security."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:259
+#, no-c-format
+msgid ""
+"Let's take a look at some examples of interface security. First of all, "
+"let's pretend that we have a login form that should only be rendered if the "
+"user is not already logged in. Using the <literal>identity.isLoggedIn()</"
+"literal> property, we can write this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:262
+#, no-c-format
+msgid ""
+"&lt;h:form class=\"loginForm\" rendered=\"#{not identity.loggedIn}\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:263
+#, no-c-format
+msgid ""
+"If the user isn't logged in, then the login form will be rendered - very "
+"straight forward so far. Now let's pretend there is a menu on the page that "
+"contains some actions which should only be accessible to users in the "
+"<literal>manager</literal> role. Here's one way that these could be written:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:266
+#, no-c-format
+msgid ""
+"&lt;h:outputLink action=\"#{reports.listManagerReports}\" rendered=\"#{s:"
+"hasRole('manager')}\"&gt;\n"
+"    Manager Reports\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:267
+#, no-c-format
+msgid ""
+"This is also quite straight forward. If the user is not a member of the "
+"<literal>manager</literal> role, then the outputLink will not be rendered. "
+"The <literal>rendered</literal> attribute can generally be used on the "
+"control itself, or on a surrounding <literal>&lt;s:div&gt;</literal> or "
+"<literal>&lt;s:span&gt;</literal> control."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:270
+#, no-c-format
+msgid ""
+"Now for something more complex. Let's say you have a <literal>h:dataTable</"
+"literal> control on a page listing records for which you may or may not wish "
+"to render action links depending on the user's privileges. The <literal>s:"
+"hasPermission</literal> EL function allows us to pass in an object parameter "
+"which can be used to determine whether the user has the requested permission "
+"for that object or not. Here's how a dataTable with secured links might look:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:273
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{clients}\" var=\"cl\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Name&lt;/f:facet&gt;\n"
+"        #{cl.name}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;City&lt;/f:facet&gt;\n"
+"        #{cl.city}\n"
+"    &lt;/h:column&gt;   \n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"        &lt;s:link value=\"Modify Client\" action=\"#{clientAction.modify}"
+"\"\n"
+"                rendered=\"#{s:hasPermission('client','modify',cl)\"/&gt;\n"
+"        &lt;s:link value=\"Delete Client\" action=\"#{clientAction.delete}"
+"\"\n"
+"                rendered=\"#{s:hasPermission('client','delete',cl)\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:274
+#, no-c-format
+msgid "Securing pages"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:275
+#, no-c-format
+msgid ""
+"Page security requires that the application is using a <literal>pages.xml</"
+"literal> file, however is extremely simple to configure. Simply include a "
+"<literal>&lt;restrict/&gt;</literal> element within the <literal>page</"
+"literal> elements that you wish to secure. By default, if a value is not "
+"provided for the <literal>restrict</literal> element, an implied permission "
+"of <literal>{viewId}:render</literal> will be checked for whenever accessing "
+"that page. Otherwise the value will be evaluated as a standard security "
+"expression. Here's a couple of examples:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:278
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/settings.xhtml\"&gt;\n"
+"    &lt;restrict/&gt;\n"
+"&lt;/page&gt;\n"
+"        \n"
+"&lt;page view-id=\"/reports.xhtml\"&gt;    \n"
+"    &lt;restrict&gt;#{s:hasRole('admin')}&lt;/restrict&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:279
+#, no-c-format
+msgid ""
+"In the above example, the first page has an implied permission restriction "
+"of <literal>/settings.xhtml:render</literal>, while the second one checks "
+"that the user is a member of the <literal>admin</literal> role."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:282
+#, no-c-format
+msgid "Securing Entities"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:283
+#, no-c-format
+msgid ""
+"Seam security also makes it possible to apply security restrictions to read, "
+"insert, update and delete actions for entities."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:286
+#, no-c-format
+msgid ""
+"To secure all actions for an entity class, add a <literal>@Restrict</"
+"literal> annotation on the class itself:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:289
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"customer\")\n"
+"@Restrict\n"
+"public class Customer {\n"
+"  ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:290
+#, no-c-format
+msgid ""
+"If no expression is specified in the <literal>@Restrict</literal> "
+"annotation, the default security check that is performed is a permission "
+"check of <literal>entityName:action</literal>, where <literal>entityName</"
+"literal> is the name of the entity (or the class name if no @Name is "
+"specified), and the <literal>action</literal> is either <literal>read</"
+"literal>, <literal>insert</literal>, <literal>update</literal> or "
+"<literal>delete</literal>."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:293
+#, no-c-format
+msgid ""
+"It is also possible to only restrict certain actions, by placing a "
+"<literal>@Restrict</literal> annotation on the relevent entity lifecycle "
+"method (annotated as follows):"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:298
+#, no-c-format
+msgid ""
+"<literal>@PostLoad</literal> - Called after an entity instance is loaded "
+"from the database. Use this method to configure a <literal>read</literal> "
+"permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:303
+#, no-c-format
+msgid ""
+"<literal>@PrePersist</literal> - Called before a new instance of the entity "
+"is inserted. Use this method to configure an <literal>insert</literal> "
+"permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:308
+#, no-c-format
+msgid ""
+"<literal>@PreUpdate</literal> - Called before an entity is updated. Use this "
+"method to configure an <literal>update</literal> permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:313
+#, no-c-format
+msgid ""
+"<literal>@PreRemove</literal> - Called before an entity is deleted. Use this "
+"method to configure a <literal>delete</literal> permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:318
+#, no-c-format
+msgid ""
+"Here's an example of how an entity would be configured to perform a security "
+"check for any <literal>insert</literal> operations. Please note that the "
+"method is not required to do anything, the only important thing in regard to "
+"security is how it is annotated:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:321
+#, no-c-format
+msgid ""
+"@PrePersist @Restrict\n"
+"  public void prePersist() {}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:322
+#, no-c-format
+msgid ""
+"And here's an example of an entity permission rule that checks if the "
+"authenticated user is allowed to create a new blog entry (from the seamspace "
+"example):"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:325
+#, no-c-format
+msgid ""
+"rule InsertMemberBlog\n"
+"  no-loop\n"
+"  activation-group \"permissions\"\n"
+"when\n"
+"  c: PermissionCheck(name == \"memberBlog\", action == \"insert\", granted "
+"== false)\n"
+"  Principal(nm : name)\n"
+"  MemberBlog(mbr : member -&gt; (mbr.getUsername().equals(nm)))\n"
+"then\n"
+"  c.grant();\n"
+"  modify(c);\n"
+"end;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:326
+#, no-c-format
+msgid ""
+"Finally, we need to install a listener class that integrates Seam security "
+"with your JPA provider."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:329
+#, no-c-format
+msgid "Entity security with JPA"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:330
+#, no-c-format
+msgid ""
+"Security checks for EJB3 entity beans are performed with an "
+"<literal>EntityListener</literal>. You can install this listener by using "
+"the following <literal>META-INF/orm.xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:333
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;entity-mappings xmlns=\"http://java.sun.com/xml/ns/persistence/orm\"\n"
+"                 xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"                 xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence/"
+"orm \n"
+"                 http://java.sun.com/xml/ns/persistence/orm_1_0.xsd\"\n"
+"                 version=\"1.0\"&gt;\n"
+"                 \n"
+"    &lt;persistence-unit-metadata&gt;\n"
+"        &lt;persistence-unit-defaults&gt;\n"
+"            &lt;entity-listeners&gt;\n"
+"                &lt;entity-listener class=\"org.jboss.seam.security."
+"EntitySecurityListener\"/&gt;\n"
+"            &lt;/entity-listeners&gt;\n"
+"        &lt;/persistence-unit-defaults&gt;\n"
+"    &lt;/persistence-unit-metadata&gt;\n"
+"    \n"
+"&lt;/entity-mappings&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:334
+#, no-c-format
+msgid "Entity security with Hibernate"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:335
+#, no-c-format
+msgid ""
+"If you are using a Hibernate <literal>SessionFactory</literal> configured "
+"via Seam, you don't need to do anything special to use entity security."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:338
+#, no-c-format
+msgid "Writing Security Rules"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:339
+#, no-c-format
+msgid ""
+"Up to this point there has been a lot of mention of permissions, but no "
+"information about how permissions are actually defined or granted. This "
+"section completes the picture, by explaining how permission checks are "
+"processed, and how to implement permission checks for a Seam application."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:342
+#, no-c-format
+msgid "Permissions Overview"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:343
+#, no-c-format
+msgid ""
+"So how does the security API know whether a user has the <literal>customer:"
+"modify</literal> permission for a specific customer? Seam Security provides "
+"quite a novel method for determining user permissions, based on JBoss Rules. "
+"A couple of the advantages of using a rule engine are 1) a centralized "
+"location for the business logic that is behind each user permission, and 2) "
+"speed - JBoss Rules uses very efficient algorithms for evaluating large "
+"numbers of complex rules involving multiple conditions."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:346
+#, no-c-format
+msgid "Configuring a rules file"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:347
+#, no-c-format
+msgid ""
+"Seam Security expects to find a <literal>RuleBase</literal> component called "
+"<literal>securityRules</literal> which it uses to evaluate permission "
+"checks. This is configured in <literal>components.xml</literal> as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:350
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:security=\"http://jboss.com/products/seam/security\"\n"
+"            xmlns:drools=\"http://jboss.com/products/seam/drools\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                     http://jboss.com/products/seam/core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components  \n"
+"                     http://jboss.com/products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/drools \n"
+"                     http://jboss.com/products/seam/drools-1.2.xsd\"\n"
+"                 http://jboss.com/products/seam/security \n"
+"                     http://jboss.com/products/seam/security-1.2.xsd"
+"\"&gt;                 \n"
+"        \n"
+"   &lt;drools:rule-base name=\"securityRules\"&gt;\n"
+"       &lt;drools:rule-files&gt;\n"
+"           &lt;value&gt;/META-INF/security.drl&lt;/value&gt;\n"
+"       &lt;/drools:rule-files&gt;\n"
+"   &lt;/drools:rule-base&gt;    \n"
+"   \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:351
+#, no-c-format
+msgid ""
+"Once the <literal>RuleBase</literal> component is configured, it's time to "
+"write the security rules."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:354
+#, no-c-format
+msgid "Creating a security rules file"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:355
+#, no-c-format
+msgid ""
+"For this step you need to create a file called <literal>security.drl</"
+"literal> in the <literal>/META-INF</literal> directory of your application's "
+"jar file. In actual fact this file can be called anything you want, and "
+"exist in any location as long as it is configured appropriately in "
+"<literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:358
+#, no-c-format
+msgid ""
+"So what should the security rules file contain? At this stage it might be a "
+"good idea to at least skim through the JBoss Rules documentation, however to "
+"get started here's an extremely simple example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:361
+#, no-c-format
+msgid ""
+"package MyApplicationPermissions;\n"
+"\n"
+"import org.jboss.seam.security.PermissionCheck;\n"
+"import org.jboss.seam.security.Role;\n"
+"\n"
+"rule CanUserDeleteCustomers\n"
+"when\n"
+"  c: PermissionCheck(name == \"customer\", action == \"delete\")\n"
+"  Role(name == \"admin\")\n"
+"then\n"
+"  c.grant();\n"
+"end;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:362
+#, no-c-format
+msgid ""
+"Let's break this down. The first thing we see is the package declaration. A "
+"package in JBoss Rules is essentially a collection of rules. The package "
+"name can be anything you want - it doesn't relate to anything else outside "
+"the scope of the rule base."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:365
+#, no-c-format
+msgid ""
+"The next thing we can notice is a couple of import statements for the "
+"<literal>PermissionCheck</literal> and <literal>Role</literal> classes. "
+"These imports inform the rules engine that we'll be referencing these "
+"classes within our rules."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:368
+#, no-c-format
+msgid ""
+"Finally we have the code for the rule. Each rule within a package should be "
+"given a unique name (usually describing the purpose of the rule). In this "
+"case our rule is called <literal>CanUserDeleteCustomers</literal> and will "
+"be used to check whether a user is allowed to delete a customer record."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:371
+#, no-c-format
+msgid ""
+"Looking at the body of the rule definition we can notice two distinct "
+"sections. Rules have what is known as a left hand side (LHS) and a right "
+"hand side (RHS). The LHS consists of the conditional part of the rule, i.e. "
+"a list of conditions which must be satisfied for the rule to fire. The LHS "
+"is represented by the <literal>when</literal> section. The RHS is the "
+"consequence, or action section of the rule that will only be fired if all of "
+"the conditions in the LHS are met. The RHS is represented by the "
+"<literal>then</literal> section. The end of the rule is denoted by the "
+"<literal>end;</literal> line."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:374
+#, no-c-format
+msgid ""
+"If we look at the LHS of the rule, we see two conditions listed there. Let's "
+"examine the first condition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:377
+#, no-c-format
+msgid "c: PermissionCheck(name == \"customer\", action == \"delete\")"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:378
+#, no-c-format
+msgid ""
+"In plain english, this condition is stating that there must exist a "
+"<literal>PermissionCheck</literal> object with a <literal>name</literal> "
+"property equal to \"customer\", and an <literal>action</literal> property "
+"equal to \"delete\" within the working memory. What is the working memory? "
+"It is a session-scoped object that contains the contextual information that "
+"is required by the rules engine to make a decision about a permission check. "
+"Each time the <literal>hasPermission()</literal> method is called, a "
+"temporary <literal>PermissionCheck</literal> object, or <emphasis>Fact</"
+"emphasis>, is asserted into the working memory. This "
+"<literal>PermissionCheck</literal> corresponds exactly to the permission "
+"that is being checked, so for example if you call <literal>hasPermission"
+"(\"account\", \"create\", null)</literal> then a <literal>PermissionCheck</"
+"literal> object with a <literal>name</literal> equal to \"account\" and "
+"<literal>action</literal> equal to \"create\" will be asserted into the "
+"working memory for the duration of the permission check."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:381
+#, no-c-format
+msgid ""
+"So what else is in the working memory? Besides the short-lived temporary "
+"facts asserted during a permission check, there are some longer-lived "
+"objects in the working memory that stay there for the entire duration of a "
+"user being authenticated. These include any <literal>java.security."
+"Principal</literal> objects that are created as part of the authentication "
+"process, plus a <literal>org.jboss.seam.security.Role</literal> object for "
+"each of the roles that the user is a member of. It is also possible to "
+"assert additional long-lived facts into the working memory by calling "
+"<literal>Identity.instance().getSecurityContext().assertObject()</literal>, "
+"passing the object as a parameter."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:384
+#, no-c-format
+msgid ""
+"Getting back to our simple example, we can also notice that the first line "
+"of our LHS is prefixed with <literal>c:</literal>. This is a variable "
+"binding, and is used to refer back to the object that is matched by the "
+"condition. Moving onto the second line of our LHS, we see this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:387
+#, no-c-format
+msgid "Role(name == \"admin\")"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:388
+#, no-c-format
+msgid ""
+"This condition simply states that there must be a <literal>Role</literal> "
+"object with a <literal>name</literal> of \"admin\" within the working "
+"memory. As mentioned, user roles are asserted into the working memory as "
+"long-lived facts. So, putting both conditions together, this rule is "
+"essentially saying \"I will fire if you are checking for the "
+"<literal>customer:delete</literal> permission and the user is a member of "
+"the <literal>admin</literal> role\"."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:391
+#, no-c-format
+msgid ""
+"So what is the consequence of the rule firing? Let's take a look at the RHS "
+"of the rule:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:394
+#, no-c-format
+msgid "c.grant()"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:395
+#, no-c-format
+msgid ""
+"The RHS consists of Java code, and in this case is invoking the "
+"<literal>grant()</literal> method of the <literal>c</literal> object, which "
+"as already mentioned is a variable binding for the <literal>PermissionCheck</"
+"literal> object. Besides the <literal>name</literal> and <literal>action</"
+"literal> properties of the <literal>PermissionCheck</literal> object, there "
+"is also a <literal>granted</literal> property which is initially set to "
+"<literal>false</literal>. Calling <literal>grant()</literal> on a "
+"<literal>PermissionCheck</literal> sets the <literal>granted</literal> "
+"property to <literal>true</literal>, which means that the permission check "
+"was successful, allowing the user to carry out whatever action the "
+"permission check was intended for."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:398
+#, no-c-format
+msgid "SSL Security"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:399
+#, no-c-format
+msgid ""
+"Seam includes basic support for serving sensitive pages via the HTTPS "
+"protocol. This is easily configured by specifying a <literal>scheme</"
+"literal> for the page in <literal>pages.xml</literal>. The following example "
+"shows how the view <literal>/login.xhtml</literal> is configured to use "
+"HTTPS:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:402
+#, no-c-format
+msgid "&lt;page view-id=\"/login.xhtml\" scheme=\"https\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:403
+#, no-c-format
+msgid ""
+"This configuration is automatically extended to both <literal>s:link</"
+"literal> and <literal>s:button</literal> JSF controls, which (when "
+"specifying the <literal>view</literal>) will also render the link using the "
+"correct protocol. Based on the previous example, the following link will use "
+"the HTTPS protocol because <literal>/login.xhtml</literal> is configured to "
+"use it:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:406
+#, no-c-format
+msgid "&lt;s:link view=\"/login.xhtml\" value=\"Login\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:407
+#, no-c-format
+msgid ""
+"Browsing directly to a view when using the <emphasis>incorrect</emphasis> "
+"protocol will cause a redirect to the same view using the <emphasis>correct</"
+"emphasis> protocol. For example, browsing to a page that has <literal>scheme="
+"\"https\"</literal> using HTTP will cause a redirect to the same page using "
+"HTTPS."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:410
+#, no-c-format
+msgid ""
+"It is also possible to configure a default <literal>scheme</literal> for all "
+"pages. This is actually quite important, as you might only wish to use HTTPS "
+"for a few pages, and if no default scheme is specified then the default "
+"behavior is to continue using the current scheme. What this means is that "
+"once you enter a page with HTTPS, then HTTPS will continue to be used even "
+"if you navigate away to other non-HTTPS pages (a bad thing!). So it is "
+"strongly recommended to include a default <literal>scheme</literal>, by "
+"configuring it on the default (<literal>\"*\"</literal>) view:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:413
+#, no-c-format
+msgid "&lt;page view-id=\"*\" scheme=\"http\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:414
+#, no-c-format
+msgid ""
+"Of course, if <emphasis>none</emphasis> of the pages in your application use "
+"HTTPS then it is not required to specify a default scheme."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:417
+#, no-c-format
+msgid "Implementing a Captcha Test"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:418
+#, no-c-format
+msgid ""
+"Though strictly not part of the security API, it might be useful in certain "
+"circumstances (such as new user registrations, posting to a public blog or "
+"forum) to implement a Captcha (<emphasis>C</emphasis>ompletely <emphasis>A</"
+"emphasis>utomated <emphasis>P</emphasis>ublic <emphasis>T</emphasis>uring "
+"test to tell <emphasis>C</emphasis>omputers and <emphasis>H</emphasis>umans "
+"<emphasis>A</emphasis>part) to prevent automated bots from interacting with "
+"your application. Seam provides seamless integration with JCaptcha, an "
+"excellent library for generating Captcha challenges. If you wish to use the "
+"captcha feature in your application you need to include the jcaptcha-* jar "
+"file from the Seam lib directory in your project, and register it in "
+"<literal>application.xml</literal> as a java module."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:421
+#, no-c-format
+msgid "Configuring the Captcha Servlet"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:422
+#, no-c-format
+msgid ""
+"To get up and running, it is necessary to configure the Seam Resource "
+"Servlet, which will provide the Captcha challenge images to your pages. This "
+"requires the following entry in <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:425
+#, no-c-format
+msgid ""
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"    \n"
+"&lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:426
+#, no-c-format
+msgid "Adding a Captcha to a page"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:427
+#, no-c-format
+msgid ""
+"Adding a captcha challenge to a page is extremely easy. Seam provides a page-"
+"scoped component, <literal>captcha</literal>, which provides everything that "
+"is required, including built-in captcha validation. Here's an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:430
+#, no-c-format
+msgid ""
+"&lt;div&gt;\n"
+"    &lt;h:graphicImage value=\"/seam/resource/captcha?#{captcha.id}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"  \n"
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"verifyCaptcha\"&gt;Enter the above letters&lt;/h:"
+"outputLabel&gt;\n"
+"    &lt;h:inputText id=\"verifyCaptcha\" value=\"#{captcha.response}\" "
+"required=\"true\"/&gt;\n"
+"    &lt;div class=\"validationError\"&gt;&lt;h:message for=\"verifyCaptcha\"/"
+"&gt;&lt;/div&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:431
+#, no-c-format
+msgid ""
+"That's all there is to it. The <literal>graphicImage</literal> control "
+"displays the Captcha challenge, and the <literal>inputText</literal> "
+"receives the user's response. The response is automatically validated "
+"against the Captcha when the form is submitted."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Spring.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Spring.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Spring.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,416 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Spring.xml:10
+#, no-c-format
+msgid "Spring Framework integration"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:11
+#, no-c-format
+msgid ""
+"The Spring integration module allows easy migration of Spring-based projects "
+"to Seam and allows Spring applications to take advantage of key Seam "
+"features like conversations and Seam's more sophisticated persistence "
+"context management."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:14
+#, no-c-format
+msgid "Seam's support for Spring provides the ability to:"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:19
+#, no-c-format
+msgid "inject Seam component instances into Spring beans"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:24
+#, no-c-format
+msgid "inject Spring beans into Seam components"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:29
+#, no-c-format
+msgid "turn Spring beans into Seam components"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:34
+#, no-c-format
+msgid "allow Spring beans to live in any Seam context"
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:40
+#, no-c-format
+msgid "Injecting Seam components into Spring beans"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:41
+#, no-c-format
+msgid ""
+"Injecting Seam component instances into Spring beans is accomplished using "
+"the <literal>&lt;seam:instance/&gt;</literal> namespace handler. To enable "
+"the Seam namespace handler, the Seam namespace must be added to the Spring "
+"beans definition file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:44
+#, no-c-format
+msgid ""
+"&lt;beans xmlns=\"http://www.springframework.org/schema/beans\"\n"
+"    xmlns:seam=\"http://jboss.com/products/seam/spring\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://www.springframework.org/schema/beans \n"
+"                        http://www.springframework.org/schema/beans/spring-"
+"beans-2.0.xsd\n"
+"                        http://jboss.com/products/seam/spring \n"
+"                        http://jboss.com/products/seam/spring-1.2.xsd\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:45
+#, no-c-format
+msgid "Now any Seam component may be injected into any Spring bean:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:48
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\"&gt;\n"
+"        &lt;seam:instance name=\"someComponent\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:49
+#, no-c-format
+msgid "An EL expression may be used instead of a component name:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:52
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\"&gt;\n"
+"        &lt;seam:instance name=\"#{someExpression}\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:53
+#, no-c-format
+msgid ""
+"Seam component instances may even be made available for injection into "
+"Spring beans by a Spring bean id."
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:56
+#, no-c-format
+msgid ""
+"&lt;seam:instance name=\"someComponent\" id=\"someSeamComponentInstance\"/"
+"&gt;\n"
+"\n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\" ref=\"someSeamComponentInstance"
+"\"&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:57
+#, no-c-format
+msgid "Now for the caveat!"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:60
+#, no-c-format
+msgid ""
+"Seam was designed from the ground up to support a stateful component model "
+"with multiple contexts. Spring was not. Unlike Seam bijection, Spring "
+"injection does not occur at method invocation time. Instead, injection "
+"happens only when the Spring bean is instantiated. So the instance available "
+"when the bean is instantiated will be the same instance that the bean uses "
+"for the entire life of the bean. For example, if a Seam "
+"<literal>CONVERSATION</literal>-scoped component instance is directly "
+"injected into a singleton Spring bean, that singleton will hold a reference "
+"to the same instance long after the conversation is over! We call this "
+"problem <emphasis>scope impedance</emphasis>. Seam bijection ensures that "
+"scope impedance is maintained naturally as an invocation flows through the "
+"system. In Spring, we need to inject a proxy of the Seam component, and "
+"resolve the reference when the proxy is invoked."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:63
+#, no-c-format
+msgid ""
+"The <literal>&lt;seam:instance/&gt;</literal> tag lets us automatically "
+"proxy the Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:66
+#, no-c-format
+msgid ""
+"&lt;seam:instance id=\"seamManagedEM\" name=\"someManagedEMComponent\" proxy="
+"\"true\"/&gt;\n"
+"        \n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\"&gt;\n"
+"    &lt;property name=\"entityManager\" ref=\"seamManagedEM\"&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:67
+#, no-c-format
+msgid ""
+"This example shows one way to use a Seam-managed persistence context from a "
+"Spring bean. (A more robust way to use Seam-managed persistence contexts as "
+"a replacement for the Spring <literal>OpenEntityManagerInView</literal> "
+"filter will be provided in a future release)"
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:73
+#, no-c-format
+msgid "Injecting Spring beans into Seam components"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:74
+#, no-c-format
+msgid ""
+"It is even easier to inject Spring beans into Seam component instances. "
+"Actually, there are two possible approaches:"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:79
+#, no-c-format
+msgid "inject a Spring bean using an EL expression"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:84
+#, no-c-format
+msgid "make the Spring bean a Seam component"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:89
+#, no-c-format
+msgid ""
+"We'll discuss the second option in the next section. The easiest approach is "
+"to access the Spring beans via EL."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:92
+#, no-c-format
+msgid ""
+"The Spring <literal>DelegatingVariableResolver</literal> is an integration "
+"point Spring provides for integrating Spring with JSF. This "
+"<literal>VariableResolver</literal> makes all Spring beans available in EL "
+"by their bean id. You'll need to add the "
+"<literal>DelegatingVariableResolver</literal> to <literal>faces-config.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:95
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;variable-resolver&gt;\n"
+"        org.springframework.web.jsf.DelegatingVariableResolver\n"
+"    &lt;/variable-resolver&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:96
+#, no-c-format
+msgid "Then you can inject Spring beans using <literal>@In</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:99
+#, no-c-format
+msgid ""
+"@In(\"#{bookingService}\")\n"
+"private BookingService bookingService;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:100
+#, no-c-format
+msgid ""
+"The use of Spring beans in EL is not limited to injection. Spring beans may "
+"be used anywhere that EL expressions are used in Seam: process and pageflow "
+"definitions, working memory assertions, etc..."
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:106
+#, no-c-format
+msgid "Making a Spring bean into a Seam component"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:107
+#, no-c-format
+msgid ""
+"The <literal>&lt;seam:component/&gt;</literal> namespace handler can be used "
+"to make any Spring bean a Seam component. Just place the <literal>&lt;seam:"
+"component/&gt;</literal> tag within the declaration of the bean that you "
+"wish to be a Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:110
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;seam:component/&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:111
+#, no-c-format
+msgid ""
+"By default, <literal>&lt;seam:component/&gt;</literal> will create a "
+"<literal>STATELESS</literal> Seam component with class and name provided in "
+"the bean definition. Occasionally, such as when a <literal>FactoryBean</"
+"literal> is used, the class of the Spring bean may not be the class "
+"appearing in the bean definition. In such cases the <literal>beanClass</"
+"literal> should be explicitly specified. A Seam component name may be "
+"explicitly specified in cases where there is potential for a naming conflict."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:114
+#, no-c-format
+msgid ""
+"The <literal>scope</literal> attribute of <literal>&lt;seam:component/&gt;</"
+"literal> may be used if you wish the Spring bean to be managed in a "
+"particular Seam scope. The Spring bean must be scoped to <literal>prototype</"
+"literal> if the Seam scope specified is anything other than "
+"<literal>STATELESS</literal>. Pre-existing Spring beans usually have a "
+"fundamentally stateless character, so this attribute is not usually needed."
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:120
+#, no-c-format
+msgid "Seam-scoped Spring beans"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:121
+#, no-c-format
+msgid ""
+"The Seam integration package also lets you use Seam's contexts as Spring 2.0 "
+"style custom scopes. This lets you declare any Spring bean in any of Seam's "
+"contexts. However, note once again that Spring's component model was never "
+"architected to support statefulness, so please use this feature with great "
+"care. In particular, clustering of session or conversation scoped Spring "
+"beans is deeply problematic, and care must be taken when injecting a bean or "
+"component from a wider scope into a bean of a narrower scope."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:124
+#, no-c-format
+msgid ""
+"By specifying <literal>&lt;seam:configure-scopes/&gt;</literal> once in a "
+"Spring bean factory configuration, all of the Seam scopes will be available "
+"to Spring beans as custom scopes. To associate a Spring bean with a "
+"particular Seam scope, specify the Seam scope in the <literal>scope</"
+"literal> attribute of the bean definition."
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:127
+#, no-c-format
+msgid ""
+"&lt;!-- Only needs to be specified once per bean factory--&gt;\n"
+"&lt;seam:configure-scopes/&gt;\n"
+"\n"
+"...\n"
+"\n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope=\"seam."
+"CONVERSATION\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:128
+#, no-c-format
+msgid ""
+"The prefix of the scope name may be changed by specifying the "
+"<literal>prefix</literal> attribute in the <literal>configure-scopes</"
+"literal> definition. (The default prefix is <literal>seam.</literal>)"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:131
+#, no-c-format
+msgid ""
+"Seam-scoped Spring beans defined this way can be injected into other Spring "
+"beans without the use of <literal>&lt;seam:instance/&gt;</literal>. However, "
+"care must be taken to ensure scope impedance is maintained. The normal "
+"approach used in Spring is to specify <literal>&lt;aop:scoped-proxy/&gt;</"
+"literal> in the bean definition. However, Seam-scoped Spring beans are "
+"<emphasis>not</emphasis> compatible with <literal>&lt;aop:scoped-proxy/&gt;</"
+"literal>. So if you need to inject a Seam-scoped Spring bean into a "
+"singleton, <literal>&lt;seam:instance/&gt;</literal> must be used:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:134
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope=\"seam."
+"CONVERSATION\"/&gt;\n"
+"\n"
+"...\n"
+"\n"
+"&lt;bean id=\"someSingleton\"&gt;\n"
+"    &lt;property name=\"someSeamScopedSpringBean\"&gt;\n"
+"        &lt;seam:instance name=\"someSpringBean\" proxy=\"true\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Testing.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Testing.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Testing.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,342 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Testing.xml:10
+#, no-c-format
+msgid "Testing Seam applications"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:11
+#, no-c-format
+msgid ""
+"Most Seam applications will need at least two kinds of automated tests: "
+"<emphasis>unit tests</emphasis>, which test a particular Seam component in "
+"isolation, and scripted <emphasis>integration tests</emphasis> which "
+"exercise all Java layers of the application (that is, everything except the "
+"view pages)."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:14
+#, no-c-format
+msgid "Both kinds of tests are very easy to write."
+msgstr ""
+
+#. Tag: title
+#: Testing.xml:18
+#, no-c-format
+msgid "Unit testing Seam components"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:19
+#, no-c-format
+msgid ""
+"All Seam components are POJOs. This is a great place to start if you want "
+"easy unit testing. And since Seam emphasises the use of bijection for inter-"
+"component interactions and access to contextual objects, it's very easy to "
+"test a Seam component outside of its normal runtime environment."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:22
+#, no-c-format
+msgid "Consider the following Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:25
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Scope(EVENT)\n"
+"@Name(\"register\")\n"
+"public class RegisterAction implements Register\n"
+"{\n"
+"   private User user;\n"
+"   private EntityManager em;\n"
+"\n"
+"   @In\n"
+"   public void setUser(User user) {\n"
+"       this.user = user;\n"
+"   }\n"
+"   \n"
+"   @PersistenceContext\n"
+"   public void setBookingDatabase(EntityManager em) {\n"
+"       this.em = em;\n"
+"   }\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = em.createQuery(\"select username from User where "
+"username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getResultList();\n"
+"      if (existing.size()==0)\n"
+"      {\n"
+"         em.persist(user);\n"
+"         return \"success\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:26
+#, no-c-format
+msgid "We could write a TestNG test for this component as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:29
+#, no-c-format
+msgid ""
+"public class RegisterActionTest\n"
+"{\n"
+"\n"
+"    @Test\n"
+"    public testRegisterAction()\n"
+"    {\n"
+"        EntityManager em = getEntityManagerFactory().createEntityManager();\n"
+"        em.getTransaction().begin();\n"
+"        \n"
+"        User gavin = new User();\n"
+"        gavin.setName(\"Gavin King\");\n"
+"        gavin.setUserName(\"1ovthafew\");\n"
+"        gavin.setPassword(\"secret\");\n"
+"        \n"
+"        RegisterAction action = new RegisterAction();\n"
+"        action.setUser(gavin);\n"
+"        action.setBookingDatabase(em);\n"
+"        \n"
+"        assert \"success\".equals( action.register() );\n"
+"        \n"
+"        em.getTransaction().commit();\n"
+"        em.close();\n"
+"    }\n"
+"    \n"
+"    \n"
+"    private EntityManagerFactory emf;\n"
+"    \n"
+"    public EntityManagerFactory getEntityManagerFactory()\n"
+"    {\n"
+"        return emf;\n"
+"    }\n"
+"    \n"
+"    @Configuration(beforeTestClass=true)\n"
+"    public void init() \n"
+"    {\n"
+"        emf = Persistence.createEntityManagerFactory"
+"(\"myResourceLocalEntityManager\");\n"
+"    }\n"
+"    \n"
+"    @Configuration(afterTestClass=true)\n"
+"    public void destroy()\n"
+"    {\n"
+"        emf.close();\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:30
+#, no-c-format
+msgid ""
+"Seam components don't usually depend directly upon container infrastructure, "
+"so most unit testing as as easy as that!"
+msgstr ""
+
+#. Tag: title
+#: Testing.xml:36
+#, no-c-format
+msgid "Integration testing Seam applications"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:37
+#, no-c-format
+msgid ""
+"Integration testing is slightly more difficult. In this case, we can't "
+"eliminate the container infrastructure; indeed, that is part of what is "
+"being tested! At the same time, we don't want to be forced to deploy our "
+"application to an application server to run the automated tests. We need to "
+"be able to reproduce just enough of the container infrastructure inside our "
+"testing environment to be able to exercise the whole application, without "
+"hurting performance too much."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:40
+#, no-c-format
+msgid ""
+"A second problem is emulating user interactions. A third problem is where to "
+"put our assertions. Some test frameworks let us test the whole application "
+"by reproducing user interactions with the web browser. These frameworks have "
+"their place, but they are not appropriate for use at development time."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:43
+#, no-c-format
+msgid ""
+"The approach taken by Seam is to let you write tests that script your "
+"components while running inside a pruned down container environment (Seam, "
+"together with the JBoss Embeddable EJB container). The role of the test "
+"script is basically to reproduce the interaction between the view and the "
+"Seam components. In other words, you get to pretend you are the JSF "
+"implementation!"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:46
+#, no-c-format
+msgid "This approach tests everything except the view."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:49
+#, no-c-format
+msgid "Let's consider a JSP view for the component we unit tested above:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:52
+#, no-c-format
+msgid ""
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Register New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;table border=\"0\"&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Username&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputText value=\"#{user.username}\"/&gt;&lt;/"
+"td&gt;\n"
+"       &lt;/tr&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Real Name&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputText value=\"#{user.name}\"/&gt;&lt;/td&gt;\n"
+"       &lt;/tr&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Password&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputSecret value=\"#{user.password}\"/&gt;&lt;/"
+"td&gt;\n"
+"       &lt;/tr&gt;\n"
+"     &lt;/table&gt;\n"
+"     &lt;h:messages/&gt;\n"
+"     &lt;h:commandButton type=\"submit\" value=\"Register\" action=\"#"
+"{register.register}\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:53
+#, no-c-format
+msgid ""
+"We want to test the registration functionality of our application (the stuff "
+"that happens when the user clicks the Register button). We'll reproduce the "
+"JSF request lifecycle in an automated TestNG test:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:56
+#, no-c-format
+msgid ""
+"public class RegisterTest extends SeamTest\n"
+"{\n"
+"   \n"
+"   @Test\n"
+"   public void testRegister() throws Exception\n"
+"   {\n"
+"            \n"
+"      new FacesRequest() {\n"
+"\n"
+"         @Override\n"
+"         protected void processValidations() throws Exception\n"
+"         {\n"
+"            validateValue(\"#{user.username}\", \"1ovthafew\");\n"
+"            validateValue(\"#{user.name}\", \"Gavin King\");\n"
+"            validateValue(\"#{user.password}\", \"secret\");\n"
+"            assert !isValidationFailure();\n"
+"         }\n"
+"         \n"
+"         @Override\n"
+"         protected void updateModelValues() throws Exception\n"
+"         {\n"
+"            setValue(\"#{user.username}\", \"1ovthafew\");\n"
+"            setValue(\"#{user.name}\", \"Gavin King\");\n"
+"            setValue(\"#{user.password}\", \"secret\");\n"
+"         }\n"
+"\n"
+"         @Override\n"
+"         protected void invokeApplication()\n"
+"         {\n"
+"            assert invokeMethod(\"#{register.register}\").equals(\"success"
+"\");\n"
+"         }\n"
+"\n"
+"         @Override\n"
+"         protected void renderResponse()\n"
+"         {\n"
+"            assert getValue(\"#{user.username}\").equals(\"1ovthafew\");\n"
+"            assert getValue(\"#{user.name}\").equals(\"Gavin King\");\n"
+"            assert getValue(\"#{user.password}\").equals(\"secret\");\n"
+"         }\n"
+"         \n"
+"      }.run();\n"
+"      \n"
+"   }\n"
+"\n"
+"   ...\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:57
+#, no-c-format
+msgid ""
+"Notice that we've extended <literal>SeamTest</literal>, which provides a "
+"Seam environment for our components, and written our test script as an "
+"anonymous class that extends <literal>SeamTest.FacesRequest</literal>, which "
+"provides an emulated JSF request lifecycle. (There is also a "
+"<literal>SeamTest.NonFacesRequest</literal> for testing GET requests.) We've "
+"written our code in methods which are named for the various JSF phases, to "
+"emulate the calls that JSF would make to our components. Then we've thrown "
+"in various assertions."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:60
+#, no-c-format
+msgid ""
+"You'll find plenty of integration tests for the Seam example applications "
+"which demonstrate more complex cases. There are instructions for running "
+"these tests using Ant, or using the TestNG plugin for eclipse:"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Text.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Text.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Text.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,362 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Text.xml:10
+#, no-c-format
+msgid "Seam Text"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:11
+#, no-c-format
+msgid ""
+"Collaboration-oriented websites require a human-friendly markup language for "
+"easy entry of formatted text in forum posts, wiki pages, blogs, comments, "
+"etc. Seam provides the <literal>&lt;s:formattedText/&gt;</literal> control "
+"for display of formatted text that conforms to the <emphasis>Seam Text</"
+"emphasis> language. Seam Text is implemented using an ANTLR-based parser. "
+"You don't need to know anything about ANTLR to use it, however."
+msgstr ""
+
+#. Tag: title
+#: Text.xml:15
+#, no-c-format
+msgid "Basic fomatting"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:16
+#, no-c-format
+msgid "Here is a simple example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:19
+#, no-c-format
+msgid ""
+"It's easy to make *bold text*, /italic text/, |monospace|, \n"
+"~deleted text~, super^scripts^ or _underlines_."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:20
+#, no-c-format
+msgid ""
+"If we display this using <literal>&lt;s:formattedText/&gt;</literal>, we "
+"will get the following HTML produced:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:23
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"It's easy to make &lt;b&gt;bold text&lt;/b&gt;, &lt;i&gt;italic text&lt;/"
+"i&gt;, &lt;tt&gt;monospace&lt;/tt&gt;\n"
+"&lt;del&gt;deleted text&lt;/del&gt;, super&lt;sup&gt;scripts&lt;/sup&gt; or "
+"&lt;u&gt;underlines&lt;/u&gt;.\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:24
+#, no-c-format
+msgid ""
+"We can use a blank line to indicate a new paragraph, and <literal>+</"
+"literal> to indicate a heading:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:27
+#, no-c-format
+msgid ""
+"+This is a big heading\n"
+"You /must/ have some text following a heading!\n"
+" \n"
+"++This is a smaller heading\n"
+"This is the first paragraph. We can split it across multiple \n"
+"lines, but we must end it with a blank line.\n"
+"\n"
+"This is the second paragraph."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:28
+#, no-c-format
+msgid ""
+"(Note that a simple newline is ignored, you need an additional blank line to "
+"wrap text into a new paragraph.) This is the HTML that results:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:31
+#, no-c-format
+msgid ""
+"&lt;h1&gt;This is a big heading&lt;/h1&gt;\n"
+"&lt;p&gt;\n"
+"You &lt;i&gt;must&lt;/i&gt; have some text following a heading!\n"
+"&lt;/p&gt;\n"
+" \n"
+"&lt;h2&gt;This is a smaller heading&lt;/h2&gt;\n"
+"&lt;p&gt;\n"
+"This is the first paragraph. We can split it across multiple \n"
+"lines, but we must end it with a blank line.\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"This is the second paragraph.\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:32
+#, no-c-format
+msgid ""
+"Ordered lists are created using the <literal>#</literal> character. "
+"Unordered lists use the <literal>=</literal> character:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:35
+#, no-c-format
+msgid ""
+"An ordered list:\n"
+"        \n"
+"#first item\n"
+"#second item\n"
+"#and even the /third/ item\n"
+"\n"
+"An unordered list:\n"
+"\n"
+"=an item\n"
+"=another item"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:36
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"An ordered list:\n"
+"&lt;/p&gt;\n"
+" \n"
+"&lt;ol&gt;       \n"
+"&lt;li&gt;first item&lt;/li&gt;\n"
+"&lt;li&gt;second item&lt;/li&gt;\n"
+"&lt;li&gt;and even the &lt;i&gt;third&lt;/i&gt; item&lt;/li&gt;\n"
+"&lt;/ol&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"An unordered list:\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;ul&gt;\n"
+"&lt;li&gt;an item&lt;/li&gt;\n"
+"&lt;li&gt;another item&lt;/li&gt;\n"
+"&lt;/ul&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:37
+#, no-c-format
+msgid "Quoted sections should be surrounded in double quotes:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:40
+#, no-c-format
+msgid ""
+"The other guy said:\n"
+"        \n"
+"\"Nyeah nyeah-nee \n"
+"/nyeah/ nyeah!\"\n"
+"\n"
+"But what do you think he means by \"nyeah-nee\"?"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:41
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"The other guy said:\n"
+"&lt;/p&gt;\n"
+"        \n"
+"&lt;q&gt;Nyeah nyeah-nee\n"
+"&lt;i&gt;nyeah&lt;/i&gt; nyeah!&lt;/q&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"But what do you think he means by &lt;q&gt;nyeah-nee&lt;/q&gt;?\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: title
+#: Text.xml:45
+#, no-c-format
+msgid "Entering code and text with special characters"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:46
+#, no-c-format
+msgid ""
+"Special characters such as <literal>*</literal>, <literal>|</literal> and "
+"<literal>#</literal>, along with HTML characters such as <literal>&lt;</"
+"literal>, <literal>&gt;</literal> and <literal>&amp;</literal> may be "
+"escaped using <literal>&#92;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:49
+#, no-c-format
+msgid ""
+"You can write down equations like 2&#92;*3&#92;=6 and HTML tags\n"
+"like &#92;&lt;body&#92;&gt; using the escape character: &#92;&#92;."
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:50
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"You can write down equations like 2*3=6 and HTML tags\n"
+"like &lt;body&gt; using the escape character: &#92;.\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:51
+#, no-c-format
+msgid "And we can quote code blocks using backticks:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:54
+#, no-c-format
+msgid ""
+"My code doesn't work:\n"
+"\n"
+"`for (int i=0; i&lt;100; i--)\n"
+"{\n"
+"    doSomething();\n"
+"}`\n"
+"\n"
+"Any ideas?"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:55
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"My code doesn't work:\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;pre&gt;for (int i=0; i&lt;100; i--)\n"
+"{\n"
+"    doSomething();\n"
+"}&lt;/pre&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"Any ideas?\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: title
+#: Text.xml:59
+#, no-c-format
+msgid "Links"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:60
+#, no-c-format
+msgid "A link may be created using the following syntax:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:63
+#, no-c-format
+msgid "Go to the Seam website at [=&gt;http://jboss.com/products/seam]."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:64
+#, no-c-format
+msgid "Or, if you want to specify the text of the link:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:67
+#, no-c-format
+msgid "Go to [the Seam website=&gt;http://jboss.com/products/seam]."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:68
+#, no-c-format
+msgid ""
+"For advanced users, it is even possible to customize the Seam Text parser to "
+"understand wikiword links written using this syntax."
+msgstr ""
+
+#. Tag: title
+#: Text.xml:74
+#, no-c-format
+msgid "Entering HTML"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:75
+#, no-c-format
+msgid ""
+"Text may even include a certain limited subset of HTML (don't worry, the "
+"subset is chosen to be safe from cross-site scripting attacks). This is "
+"useful for creating links:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:78
+#, no-c-format
+msgid ""
+"You might want to link to &lt;a href=\"http://jboss.com/products/seam\"&gt;"
+"something\n"
+"cool&lt;/a&gt;, or even include an image: &lt;img src=\"/logo.jpg\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:79
+#, no-c-format
+msgid "And for creating tables:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:82
+#, no-c-format
+msgid ""
+"&lt;table&gt;\n"
+"    &lt;tr&gt;&lt;td&gt;First name:&lt;/td&gt;&lt;td&gt;Gavin&lt;/td&gt;&lt;/"
+"tr&gt;\n"
+"    &lt;tr&gt;&lt;td&gt;Last name:&lt;/td&gt;&lt;td&gt;King&lt;/td&gt;&lt;/"
+"tr&gt;\n"
+"&lt;/table&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:83
+#, no-c-format
+msgid "But you can do much more if you want!"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Tools.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Tools.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Tools.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,769 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Tools.xml:10
+#, no-c-format
+msgid "Seam tools"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:12
+#, no-c-format
+msgid "jBPM designer and viewer"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:13
+#, no-c-format
+msgid ""
+"The jBPM designer and viewer will let you design and view in a nice way your "
+"business processes and your pageflows. This convenient tool is part of JBoss "
+"Eclipse IDE and more details can be found in the jBPM's documentation "
+"(http://docs.jboss.com/jbpm/v3/gpd/)"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:17
+#, no-c-format
+msgid "<title>Business process designer</title>"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:18
+#, no-c-format
+msgid "This tool lets you design your own business process in a graphical way."
+msgstr ""
+
+#. Tag: screeninfo
+#: Tools.xml:21 Tools.xml:37
+#, no-c-format
+msgid "<screeninfo>Business process designer</screeninfo>"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:33
+#, no-c-format
+msgid "Pageflow viewer"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:34
+#, no-c-format
+msgid ""
+"This tool let you design to some extend your pageflows and let you build "
+"graphical views of them so you can easily share and compare ideas on how it "
+"should be designed."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:51
+#, no-c-format
+msgid "CRUD-application generator"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:52
+#, no-c-format
+msgid ""
+"This chapter, will give you a short overview of the support for Seam that is "
+"available in the Hibernate Tools. Hibernate Tools is a set of tools for "
+"working with Hibernate and related technologies, such as JBoss Seam and "
+"EJB3. The tools are available as a set of eclipse plugins and Ant tasks. You "
+"can download the Hibernate Tools from the JBoss Eclipse IDE or Hibernate "
+"Tools websites."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:55
+#, no-c-format
+msgid ""
+"The specific support for Seam that is currently available is generation of a "
+"fully functional Seam based CRUD-application. The CRUD-application can be "
+"generated based on your existing Hibernate mapping files or EJB3 annotated "
+"POJO's or even fully reverse engineered from your existing database schema."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:58
+#, no-c-format
+msgid ""
+"The following sections is focused on the features required to understand for "
+"usage with Seam. The content is derived from the the Hibernate Tools "
+"reference documentation. Thus if you need more detailed information please "
+"refer to the Hibernate Tools documentation."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:62
+#, no-c-format
+msgid "Creating a Hibernate configuration file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:63
+#, no-c-format
+msgid ""
+"To be able to reverse engineer and generate code a hibernate.properties or "
+"hibernate.cfg.xml file is needed. The Hibernate Tools provide a wizard for "
+"generating the hibernate.cfg.xml file if you do not already have such file."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:66
+#, no-c-format
+msgid ""
+"Start the wizard by clicking \"New Wizard\" (Ctrl+N), select the Hibernate/"
+"Hibernate Configuration file (cfg.xml) wizard and press \"Next\". After "
+"selecting the wanted location for the hibernate.cfg.xml file, you will see "
+"the following page:"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:77
+#, no-c-format
+msgid ""
+"Tip: The contents in the combo boxes for the JDBC driver class and JDBC URL "
+"change automatically, depending on the Dialect and actual driver you have "
+"chosen."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:80
+#, no-c-format
+msgid ""
+"Enter your configuration information in this dialog. Details about the "
+"configuration options can be found in Hibernate reference documentation."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:83
+#, no-c-format
+msgid ""
+"Press \"Finish\" to create the configuration file, after optionally creating "
+"a Console onfiguration, the hibernate.cfg.xml will be automatically opened "
+"in an editor. The last option \"Create Console Configuration\" is enabled by "
+"default and when enabled i will automatically use the hibernate.cfg.xml for "
+"the basis of a \"Console Configuration\""
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:89
+#, no-c-format
+msgid "<title>Creating a Hibernate Console configuration</title>"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:90
+#, no-c-format
+msgid ""
+"A Console Configuration describes to the Hibernate plugin which "
+"configuration files should be used to configure hibernate, including which "
+"classpath is needed to load the POJO's, JDBC drivers etc. It is required to "
+"make usage of query prototyping, reverse engineering and code generation. "
+"You can have multiple named console configurations. Normally you would just "
+"need one per project, but more (or less) is definitly possible."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:93
+#, no-c-format
+msgid ""
+"You create a console configuration by running the Console Configuration "
+"wizard, shown in the following screenshot. The same wizard will also be used "
+"if you are coming from the hibernate.cfg.xml wizard and had enabled \"Create "
+"Console Configuration\"."
+msgstr ""
+
+#. Tag: caption
+#: Tools.xml:103
+#, no-c-format
+msgid "<caption>Creating a Hibernate Console configuration</caption>"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:105
+#, no-c-format
+msgid ""
+"The following table describes the relevant settings. The wizard can "
+"automatically detect default values for most of these if you started the "
+"Wizard with the relevant java project selected"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:109
+#, no-c-format
+msgid "Hibernate Console Configuration Parameters"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:117
+#, no-c-format
+msgid "Parameter"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:122 Tools.xml:308 Tools.xml:458
+#, no-c-format
+msgid "Description"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:127
+#, no-c-format
+msgid "Auto detected value"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:136
+#, no-c-format
+msgid "Name"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:141
+#, no-c-format
+msgid "The unique name of the configuration"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:146
+#, no-c-format
+msgid "Name of the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:153
+#, no-c-format
+msgid "Property file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:158
+#, no-c-format
+msgid "Path to a hibernate.properties file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:163
+#, no-c-format
+msgid "First hibernate.properties file found in the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:170
+#, no-c-format
+msgid "Configuration file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:175
+#, no-c-format
+msgid "Path to a hibernate.cfg.xml file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:180
+#, no-c-format
+msgid "First hibernate.cfg.xml file found in the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:187
+#, no-c-format
+msgid "Enable Hibernate ejb3/annotations"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:192
+#, no-c-format
+msgid ""
+"Selecting this option enables usage of annotated classes. hbm.xml files are "
+"of course still possible to use too. This feature requires running the "
+"Eclipse IDE with a JDK 5 runtime, otherwise you will get classloading and/or "
+"version errors."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:197
+#, no-c-format
+msgid "Not enabled"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:204
+#, no-c-format
+msgid "Mapping files"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:209
+#, no-c-format
+msgid ""
+"List of additional mapping files that should be loaded. Note: A hibernate."
+"cfg.xml can also contain mappings. Thus if these a duplicated here, you will "
+"get \"Duplicate mapping\" errors when using the console configuration."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:214
+#, no-c-format
+msgid ""
+"If no hibernate.cfg.xml file is found, all hbm.xml files found in the "
+"selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:221
+#, no-c-format
+msgid "Classpath"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:226
+#, no-c-format
+msgid ""
+"The classpath for loading POJO and JDBC drivers. Do not add Hibernate core "
+"libraries or dependencies, they are already included. If you get "
+"ClassNotFound errors then check this list for possible missing or redundant "
+"directories/jars."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:231
+#, no-c-format
+msgid ""
+"The default build output directory and any JARs with a class implementing "
+"java.sql.Driver in the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:239
+#, no-c-format
+msgid ""
+"Clicking \"Finish\" creates the configuration and shows it in the "
+"\"Hibernate Configurations\" view"
+msgstr ""
+
+#. Tag: caption
+#: Tools.xml:249
+#, no-c-format
+msgid "Console overview"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:254
+#, no-c-format
+msgid "Reverse engineering and code generation"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:255
+#, no-c-format
+msgid ""
+"A very simple \"click-and-generate\" reverse engineering and code generation "
+"facility is available. It is this facility that allows you to generate the "
+"skeleton for a full Seam CRUD application."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:258
+#, no-c-format
+msgid ""
+"To start working with this process, start the \"Hibernate Code Generation\" "
+"which is available in the toolbar via the Hibernate icon or via the \"Run/"
+"Hibernate Code Generation\" menu item."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:262
+#, no-c-format
+msgid "Code Generation Launcher"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:263
+#, no-c-format
+msgid ""
+"When you click on \"Hibernate Code Generation\" the standard Eclipse "
+"launcher dialog will appear. In this dialog you can create, edit and delete "
+"named Hibernate code generation \"launchers\"."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:274
+#, no-c-format
+msgid ""
+"The dialog has the standard tabs \"Refresh\" and \"Common\" that can be used "
+"to configure which directories should be automatically refreshed and various "
+"general settings launchers, such as saving them in a project for sharing the "
+"launcher within a team."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:285
+#, no-c-format
+msgid ""
+"The first time you create a code generation launcher you should give it a "
+"meaningfull name, otherwise the default prefix \"New_Generation\" will be "
+"used."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:288
+#, no-c-format
+msgid ""
+"Note: The \"At least one exporter option must be selected\" is just a "
+"warning stating that for this launch to work you need to select an exporter "
+"on the Exporter tab. When an exporter has been selected the warning will "
+"disappear."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:291
+#, no-c-format
+msgid "On the \"Main\" tab you the following fields:"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:295
+#, no-c-format
+msgid "Code generation \"Main\" tab fields"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:303 Tools.xml:453
+#, no-c-format
+msgid "Field"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:317
+#, no-c-format
+msgid "Console Configuration"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:322
+#, no-c-format
+msgid ""
+"The name of the console configuration which should be used when code "
+"generating."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:329
+#, no-c-format
+msgid "Output directory"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:334
+#, no-c-format
+msgid ""
+"Path to a directory into where all output will be written by default. Be "
+"aware that existing files will be overwritten, so be sure to specify the "
+"correct directory."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:341
+#, no-c-format
+msgid "Reverse engineer from JDBC Connection"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:346
+#, no-c-format
+msgid ""
+"If enabled the tools will reverse engineer the database available via the "
+"connection information in the selected Hibernate Console Configuration and "
+"generate code based on the database schema. If not enabled the code "
+"generation will just be based on the mappings already specified in the "
+"Hibernate Console configuration."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:353
+#, no-c-format
+msgid "Package"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:358
+#, no-c-format
+msgid ""
+"The package name here is used as the default package name for any entities "
+"found when reverse engineering."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:365
+#, no-c-format
+msgid "reveng.xml"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:370
+#, no-c-format
+msgid ""
+"Path to a reveng.xml file. A reveng.xml file allows you to control certain "
+"aspects of the reverse engineering. e.g. how jdbc types are mapped to "
+"hibernate types and especially important which tables are included/excluded "
+"from the process. Clicking \"setup\" allows you to select an existing reveng."
+"xml file or create a new one.."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:377
+#, no-c-format
+msgid "reveng. strategy"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:382
+#, no-c-format
+msgid ""
+"If reveng.xml does not provide enough customization you can provide your own "
+"implementation of an ReverseEngineeringStrategy. The class need to be in the "
+"claspath of the Console Configuration, otherwise you will get class not "
+"found exceptions."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:389
+#, no-c-format
+msgid "Generate basic typed composite ids"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:394
+#, no-c-format
+msgid ""
+"This field should always be enabled when generating the Seam CRUD "
+"application. A table that has a multi-colum primary key a &lt;composite-"
+"id&gt; mapping will always be created. If this option is enabled and there "
+"are matching foreign-keys each key column is still considered a 'basic' "
+"scalar (string, long, etc.) instead of a reference to an entity. If you "
+"disable this option a &lt;key-many-to-one&gt; instead. Note: a &lt;many-to-"
+"one&gt; property is still created, but is simply marked as non-updatable and "
+"non-insertable."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:401
+#, no-c-format
+msgid "Use custom templates"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:406
+#, no-c-format
+msgid ""
+"If enabled, the Template directory will be searched first when looking up "
+"the velocity templates, allowing you to redefine how the individual "
+"templates process the hibernate mapping model."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:413
+#, no-c-format
+msgid "Template directory"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:418
+#, no-c-format
+msgid "A path to a directory with custom velocity templates."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:429
+#, no-c-format
+msgid "Exporters"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:430
+#, no-c-format
+msgid ""
+"The exporters tab is used to specify which type of code that should be "
+"generated. Each selection represents an \"Exporter\" that are responsible "
+"for generating the code, hence the name."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:441
+#, no-c-format
+msgid ""
+"The following table describes in short the various exporters. The most "
+"relevant for Seam is of course the \"JBoss Seam Skeleton app\"."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:445
+#, no-c-format
+msgid "Code generation \"Exporter\" tab fields"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:467
+#, no-c-format
+msgid "Generate domain code"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:472
+#, no-c-format
+msgid ""
+"Generates POJO's for all the persistent classes and components found in the "
+"given Hibernate configuration."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:479
+#, no-c-format
+msgid "JDK 1.5 constructs"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:484
+#, no-c-format
+msgid "When enabled the POJO's will use JDK 1.5 constructs."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:491
+#, no-c-format
+msgid "EJB3/JSR-220 annotations"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:496
+#, no-c-format
+msgid ""
+"When enabled the POJO's will be annotated according to the EJB3/JSR-220 "
+"persistency specification."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:503
+#, no-c-format
+msgid "Generate DAO code"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:508
+#, no-c-format
+msgid "Generates a set of DAO's for each entity found."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:515
+#, no-c-format
+msgid "Generate Mappings"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:520
+#, no-c-format
+msgid "Generate mapping (hbm.xml) files for each entity"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:527
+#, no-c-format
+msgid "Generate hibernate configuration file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:532
+#, no-c-format
+msgid ""
+"Generate a hibernate.cfg.xml file. Used to keep the hibernate.cfg.xml "
+"uptodate with any new found mapping files."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:539
+#, no-c-format
+msgid "Generate schema html-documentation"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:544
+#, no-c-format
+msgid ""
+"Generates set of html pages that documents the database schema and some of "
+"the mappings."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:551
+#, no-c-format
+msgid "Generate JBoss Seam skeleton app (beta)"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:556
+#, no-c-format
+msgid ""
+"Generates a complete JBoss Seam skeleton app. The generation will include "
+"annotated POJO's, Seam controller beans and a JSP for the presentation "
+"layer. See the generated readme.txt for how to use it."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:559
+#, no-c-format
+msgid ""
+"Note: this exporter generates a full application, including a build.xml thus "
+"you will get the best results if you use an output directory which is the "
+"root of your project."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:570
+#, no-c-format
+msgid "Generating and using the code"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:571
+#, no-c-format
+msgid ""
+"When you have finished filling out the settings, simply press \"Run\" to "
+"start the generation of code. This might take a little while if you are "
+"reverse engineering from a database."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:574
+#, no-c-format
+msgid ""
+"When the generation have finished you should now have a complete skeleton "
+"Seam application in the output directory. In the output directory there is a "
+"<literal>readme.txt</literal> file describing the steps needed to deploy and "
+"run the example."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:577
+#, no-c-format
+msgid ""
+"If you want to regenerate/update the skeleton code then simply run the code "
+"generation again by selecting the \"Hibernate Code Generation\" in the "
+"toolbar or \"Run\" menu. Enjoy."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Tutorial.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Tutorial.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Tutorial.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,4041 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Tutorial.xml:10
+#, no-c-format
+msgid "Seam Tutorial"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:12
+#, no-c-format
+msgid "Try the examples"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:13
+#, no-c-format
+msgid ""
+"In this tutorial, we'll assume that you have downloaded JBoss AS 4.0.5 and "
+"installed the EJB 3.0 profile (using the JBoss AS installer). You should "
+"also have a copy of Seam downloaded and extracted to a work directory."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:16
+#, no-c-format
+msgid "The directory structure of each example in Seam follows this pattern:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:21
+#, no-c-format
+msgid ""
+"Web pages, images and stylesheets may be found in <filename>examples/"
+"<replaceable>registration</replaceable>/view</filename>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:26
+#, no-c-format
+msgid ""
+"Resources such as deployment descriptors and data import scripts may be "
+"found in <filename>examples/<replaceable>registration</replaceable>/"
+"resources</filename>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:31
+#, no-c-format
+msgid ""
+"Java source code may be found in <filename>examples/"
+"<replaceable>registration</replaceable>/src</filename>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:36
+#, no-c-format
+msgid ""
+"The Ant build script is <filename>examples/<replaceable>registration</"
+"replaceable>/build.xml</filename>"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:42
+#, no-c-format
+msgid "Running the examples on JBoss AS"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:43
+#, no-c-format
+msgid ""
+"First, make sure you have Ant correctly installed, with <literal>&#36;"
+"ANT_HOME</literal> and <literal>&#36;JAVA_HOME</literal> set correctly. "
+"Next, make sure you set the location of your JBoss AS 4.0.5 installation in "
+"the <literal>build.properties</literal> file in the root folder of your Seam "
+"installation. If you haven't already done so, start JBoss AS now by typing "
+"<literal>bin/run.sh</literal> or <literal>bin/run.bat</literal> in the root "
+"directory of your JBoss installation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:46
+#, no-c-format
+msgid ""
+"By default the examples will deploy to the default configuration of the "
+"server. If the server has been started using an a configuration other than "
+"default then the example <literal>build.xml</literal> file should be "
+"modified to reflect this before building and deploying. Two lines should be "
+"changed in this file:"
+msgstr ""
+
+#. Tag: screen
+#: Tutorial.xml:49
+#, no-c-format
+msgid ""
+"&lt;property name=\"deploy.dir\"           value=\"${jboss.home}/server/"
+"default/deploy\"/&gt;"
+msgstr ""
+
+#. Tag: screen
+#: Tutorial.xml:50
+#, no-c-format
+msgid ""
+"&lt;property name=\"webroot.dir\"         \n"
+"        value=\"${deploy.dir}/jboss-web.deployer/ROOT.war\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:51
+#, no-c-format
+msgid ""
+"Now, build and deploy the example by typing <literal>ant deploy</literal> in "
+"the <filename>examples/<replaceable>registration</replaceable></filename> "
+"directory."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:54
+#, no-c-format
+msgid ""
+"Try it out by accessing <ulink url=\"http://localhost:8080/seam-registration/"
+"\"><literal>http://localhost:8080/seam-registration/</literal></ulink> with "
+"your web browser."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:60
+#, no-c-format
+msgid "Running the examples on Tomcat"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:61
+#, no-c-format
+msgid ""
+"First, make sure you have Ant correctly installed, with <literal>&#36;"
+"ANT_HOME</literal> and <literal>&#36;JAVA_HOME</literal> set correctly. "
+"Next, make sure you set the location of your Tomcat 5.5 installation in the "
+"<literal>build.properties</literal> file in the root folder of your Seam "
+"installation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:64
+#, no-c-format
+msgid ""
+"Now, build and deploy the example by typing <literal>ant deploy.tomcat</"
+"literal> in the <filename>examples/<replaceable>registration</replaceable></"
+"filename> directory."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:67
+#, no-c-format
+msgid "Finally, start Tomcat."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:70
+#, no-c-format
+msgid ""
+"Try it out by accessing <ulink url=\"http://localhost:8080/jboss-seam-"
+"registration/\"><literal>http://localhost:8080/jboss-seam-registration/</"
+"literal></ulink> with your web browser."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:73
+#, no-c-format
+msgid ""
+"When you deploy the example to Tomcat, any EJB3 components will run inside "
+"the JBoss Embeddable EJB3 container, a complete standalone EJB3 container "
+"environment."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:79
+#, no-c-format
+msgid "Running the example tests"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:80
+#, no-c-format
+msgid ""
+"Most of the examples come with a suite of TestNG integration tests. The "
+"easiest way to run the tests is to run <literal>ant testexample</literal> "
+"inside the <filename>examples/<replaceable>registration</replaceable></"
+"filename> directory. It is also possible to run the tests inside your IDE "
+"using the TestNG plugin."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:88
+#, no-c-format
+msgid "Your first Seam application: the registration example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:89
+#, no-c-format
+msgid ""
+"The registration example is a fairly trivial application that lets a new "
+"user store his username, real name and password in the database. The example "
+"isn't intended to show off all of the cool functionality of Seam. However, "
+"it demonstrates the use of an EJB3 session bean as a JSF action listener, "
+"and basic configuration of Seam."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:92
+#, no-c-format
+msgid ""
+"We'll go slowly, since we realize you might not yet be familiar with EJB 3.0."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:95
+#, no-c-format
+msgid ""
+"The start page displays a very basic form with three input fields. Try "
+"filling them in and then submitting the form. This will save a user object "
+"in the database."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:107 Tutorial.xml:424 Tutorial.xml:563 Tutorial.xml:723
+#, no-c-format
+msgid "Understanding the code"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:108
+#, no-c-format
+msgid ""
+"The example is implemented with two JSP pages, one entity bean and one "
+"stateless session bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:119
+#, no-c-format
+msgid "Let's take a look at the code, starting from the \"bottom\"."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:123
+#, no-c-format
+msgid "The entity bean: <literal>User.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:124
+#, no-c-format
+msgid ""
+"We need an EJB entity bean for user data. This class defines "
+"<emphasis>persistence</emphasis> and <emphasis>validation</emphasis> "
+"declaratively, via annotations. It also needs some extra annotations that "
+"define the class as a Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:140
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"user\")\n"
+"@Scope(SESSION)\n"
+"@Table(name=\"users\")\n"
+"public class User implements Serializable\n"
+"{\n"
+"   private static final long serialVersionUID = 1881413500711441951L;\n"
+"   \n"
+"   private String username;\n"
+"   private String password;\n"
+"   private String name;\n"
+"   \n"
+"   public User(String name, String password, String username)\n"
+"   {\n"
+"      this.name = name;\n"
+"      this.password = password;\n"
+"      this.username = username;\n"
+"   }\n"
+"   \n"
+"   public User() {}\n"
+"   \n"
+"   @NotNull @Length(min=5, max=15)\n"
+"   public String getPassword()\n"
+"   {\n"
+"      return password;\n"
+"   }\n"
+"\n"
+"   public void setPassword(String password)\n"
+"   {\n"
+"      this.password = password;\n"
+"   }\n"
+"   \n"
+"   @NotNull\n"
+"   public String getName()\n"
+"   {\n"
+"      return name;\n"
+"   }\n"
+"\n"
+"   public void setName(String name)\n"
+"   {\n"
+"      this.name = name;\n"
+"   }\n"
+"   \n"
+"   @Id @NotNull @Length(min=5, max=15)\n"
+"   public String getUsername()\n"
+"   {\n"
+"      return username;\n"
+"   }\n"
+"\n"
+"   public void setUsername(String username)\n"
+"   {\n"
+"      this.username = username;\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:143
+#, no-c-format
+msgid ""
+"The EJB3 standard <literal>@Entity</literal> annotation indicates that the "
+"<literal>User</literal> class is an entity bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:148
+#, no-c-format
+msgid ""
+"A Seam component needs a <emphasis>component name</emphasis> specified by "
+"the <link linkend=\"name-annotation\"><literal>@Name</literal></link> "
+"annotation. This name must be unique within the Seam application. When JSF "
+"asks Seam to resolve a context variable with a name that is the same as a "
+"Seam component name, and the context variable is currently undefined (null), "
+"Seam will instantiate that component, and bind the new instance to the "
+"context variable. In this case, Seam will instantiate a <literal>User</"
+"literal> the first time JSF encounters a variable named <literal>user</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:153
+#, no-c-format
+msgid ""
+"Whenever Seam instantiates a component, it binds the new instance to a "
+"context variable in the component's <emphasis>default context</emphasis>. "
+"The default context is specified using the <link linkend=\"scope-annotation"
+"\"><literal>@Scope</literal></link> annotation. The <literal>User</literal> "
+"bean is a session scoped component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:158
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Table</literal> annotation indicates that the "
+"<literal>User</literal> class is mapped to the <literal>users</literal> "
+"table."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:163
+#, no-c-format
+msgid ""
+"<literal>name</literal>, <literal>password</literal> and <literal>username</"
+"literal> are the persistent attributes of the entity bean. All of our "
+"persistent attributes define accessor methods. These are needed when this "
+"component is used by JSF in the render response and update model values "
+"phases."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:168
+#, no-c-format
+msgid ""
+"An empty constructor is both required by both the EJB specification and by "
+"Seam."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:173
+#, no-c-format
+msgid ""
+"The <literal>@NotNull</literal> and <literal>@Length</literal> annotations "
+"are part of the Hibernate Validator framework. Seam integrates Hibernate "
+"Validator and lets you use it for data validation (even if you are not using "
+"Hibernate for persistence)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:178
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Id</literal> annotation indicates the primary key "
+"attribute of the entity bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:185
+#, no-c-format
+msgid ""
+"The most important things to notice in this example are the <literal>@Name</"
+"literal> and <literal>@Scope</literal> annotations. These annotations "
+"establish that this class is a Seam component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:188
+#, no-c-format
+msgid ""
+"We'll see below that the properties of our <literal>User</literal> class are "
+"bound to directly to JSF components and are populated by JSF during the "
+"update model values phase. We don't need any tedious glue code to copy data "
+"back and forth between the JSP pages and the entity bean domain model."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:191
+#, no-c-format
+msgid ""
+"However, entity beans shouldn't do transaction management or database "
+"access. So we can't use this component as a JSF action listener. For that we "
+"need a session bean."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:198
+#, no-c-format
+msgid ""
+"The stateless session bean class: <literal>RegisterAction.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:199
+#, no-c-format
+msgid ""
+"Most Seam application use session beans as JSF action listeners (you can use "
+"JavaBeans instead if you like)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:202
+#, no-c-format
+msgid ""
+"We have exactly one JSF action in our application, and one session bean "
+"method attached to it. In this case, we'll use a stateless session bean, "
+"since all the state associated with our action is held by the <literal>User</"
+"literal> bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:205
+#, no-c-format
+msgid "This is the only really interesting code in the example!"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:222
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"register\")\n"
+"public class RegisterAction implements Register\n"
+"{\n"
+"\n"
+"   @In\n"
+"   private User user;\n"
+"   \n"
+"   @PersistenceContext\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @Logger\n"
+"   private Log log;\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = em.createQuery(\n"
+"         \"select username from User where username=#{user.username}\")\n"
+"         .getResultList();\n"
+"         \n"
+"      if (existing.size()==0)\n"
+"      {\n"
+"         em.persist(user);\n"
+"         log.info(\"Registered new user #{user.username}\");\n"
+"         return \"/registered.jsp\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         FacesMessages.instance().add(\"User #{user.username} already exists"
+"\");\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:225
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Stateless</literal> annotation marks this class "
+"as stateless session bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:230
+#, no-c-format
+msgid ""
+"The <link linkend=\"in-annotation\"><literal>@In</literal></link> annotation "
+"marks an attribute of the bean as injected by Seam. In this case, the "
+"attribute is injected from a context variable named <literal>user</literal> "
+"(the instance variable name)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:235
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@PersistenceContext</literal> annotation is used "
+"to inject the EJB3 entity manager."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:240
+#, no-c-format
+msgid ""
+"The Seam <literal>@Logger</literal> annotation is used to inject the "
+"component's <literal>Log</literal> instance."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:245
+#, no-c-format
+msgid ""
+"The action listener method uses the standard EJB3 <literal>EntityManager</"
+"literal> API to interact with the database, and returns the JSF outcome. "
+"Note that, since this is a sesson bean, a transaction is automatically begun "
+"when the <literal>register()</literal> method is called, and committed when "
+"it completes."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:250
+#, no-c-format
+msgid ""
+"Notice that Seam lets you use a JSF EL expression inside EJB-QL. Under the "
+"covers, this results in an ordinary JPA <literal>setParameter()</literal> "
+"call on the standard JPA <literal>Query</literal> object. Nice, huh?"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:255
+#, no-c-format
+msgid ""
+"The <literal>Log</literal> API lets us easily display templated log messages."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:260
+#, no-c-format
+msgid ""
+"JSF action listener methods return a string-valued outcome that determines "
+"what page will be displayed next. A null outcome (or a void action listener "
+"method) redisplays the previous page. In plain JSF, it is normal to always "
+"use a JSF <emphasis>navigation rule</emphasis> to determine the JSF view id "
+"from the outcome. For complex application this indirection is useful and a "
+"good practice. However, for very simple examples like this one, Seam lets "
+"you use the JSF view id as the outcome, eliminating the requirement for a "
+"navigation rule. <emphasis>Note that when you use a view id as an outcome, "
+"Seam always performs a browser redirect.</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:265
+#, no-c-format
+msgid ""
+"Seam provides a number of <emphasis>built-in components</emphasis> to help "
+"solve common problems. The <literal>FacesMessages</literal> component makes "
+"it easy to display templated error or success messages. Built-in Seam "
+"components may be obtained by injection, or by calling an <literal>instance()"
+"</literal> method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:272
+#, no-c-format
+msgid ""
+"Note that we did not explicitly specify a <literal>@Scope</literal> this "
+"time. Each Seam component type has a default scope if not explicitly "
+"specified. For stateless session beans, the default scope is the stateless "
+"context. Actually, <emphasis>all</emphasis> stateless session beans belong "
+"in the stateless context."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:275
+#, no-c-format
+msgid ""
+"Our session bean action listener performs the business and persistence logic "
+"for our mini-application. In more complex applications, we might need to "
+"layer the code and refactor persistence logic into a dedicated data access "
+"component. That's perfectly trivial to do. But notice that Seam does not "
+"force you into any particular strategy for application layering."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:278
+#, no-c-format
+msgid ""
+"Furthermore, notice that our session bean has simultaneous access to context "
+"associated with the web request (the form values in the <literal>User</"
+"literal> object, for example), and state held in transactional resources "
+"(the <literal>EntityManager</literal> object). This is a break from "
+"traditional J2EE architectures. Again, if you are more comfortable with the "
+"traditional J2EE layering, you can certainly implement that in a Seam "
+"application. But for many applications, it's simply not very useful."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:285
+#, no-c-format
+msgid "The session bean local interface: <literal>Register.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:286
+#, no-c-format
+msgid "Naturally, our session bean needs a local interface."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:291
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface Register\n"
+"{\n"
+"   public String register();\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:292
+#, no-c-format
+msgid "That's the end of the Java code. Now onto the deployment descriptors."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:298
+#, no-c-format
+msgid ""
+"The Seam component deployment descriptor: <literal>components.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:299
+#, no-c-format
+msgid ""
+"If you've used many Java frameworks before, you'll be used to having to "
+"declate all your component classes in some kind of XML file that gradually "
+"grows more and more unmanageable as your project matures. You'll be relieved "
+"to know that Seam does not require that application components be "
+"accompanied by XML. Most Seam applications require a very small amount of "
+"XML that does not grow very much as the project gets bigger."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:302
+#, no-c-format
+msgid ""
+"Nevertheless, it is often useful to be able to provide for <emphasis>some</"
+"emphasis> external configuration of <emphasis>some</emphasis> components "
+"(particularly the components built in to Seam). You have a couple of options "
+"here, but the most flexible option is to provide this configuration in a "
+"file called <literal>components.xml</literal>, located in the <literal>WEB-"
+"INF</literal> directory. We'll use the <literal>components.xml</literal> "
+"file to tell Seam how to find our EJB components in JNDI:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:305
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"&gt;\n"
+"     &lt;core:init jndi-pattern=\"@jndiPattern@\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:306
+#, no-c-format
+msgid ""
+"This code configures a property named <literal>jndiPattern</literal> of a "
+"built-in Seam component named <literal>org.jboss.seam.core.init</literal>."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:312
+#, no-c-format
+msgid "The web deployment description: <literal>web.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:313
+#, no-c-format
+msgid ""
+"The presentation layer for our mini-application will be deployed in a WAR. "
+"So we'll need a web deployment descriptor."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:316
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;web-app version=\"2.5\"\n"
+"    xmlns=\"http://java.sun.com/xml/ns/javaee\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n"
+"        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\"&gt;\n"
+"\n"
+"    &lt;!-- Seam --&gt;\n"
+"\n"
+"    &lt;listener&gt;\n"
+"        &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/"
+"listener-class&gt;\n"
+"    &lt;/listener&gt;\n"
+"\n"
+"    &lt;!-- MyFaces --&gt;\n"
+"\n"
+"    &lt;listener&gt;\n"
+"        &lt;listener-class&gt;\n"
+"            org.apache.myfaces.webapp.StartupServletContextListener\n"
+"        &lt;/listener-class&gt;\n"
+"    &lt;/listener&gt;\n"
+"\n"
+"    &lt;context-param&gt;\n"
+"        &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-"
+"name&gt;\n"
+"        &lt;param-value&gt;client&lt;/param-value&gt;\n"
+"    &lt;/context-param&gt;\n"
+"\n"
+"    &lt;servlet&gt;\n"
+"        &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;\n"
+"        &lt;servlet-class&gt;javax.faces.webapp.FacesServlet&lt;/servlet-"
+"class&gt;\n"
+"        &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;\n"
+"    &lt;/servlet&gt;\n"
+"\n"
+"    &lt;!-- Faces Servlet Mapping --&gt;\n"
+"    &lt;servlet-mapping&gt;\n"
+"        &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;\n"
+"        &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;\n"
+"    &lt;/servlet-mapping&gt;\n"
+"\n"
+"&lt;/web-app&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:317
+#, no-c-format
+msgid ""
+"This <literal>web.xml</literal> file configures Seam and MyFaces. The "
+"configuration you see here is pretty much identical in all Seam applications."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:323
+#, no-c-format
+msgid "The JSF configration: <literal>faces-config.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:324
+#, no-c-format
+msgid ""
+"All Seam applications use JSF views as the presentation layer. So we'll need "
+"<literal>faces-config.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:327
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;!DOCTYPE faces-config \n"
+"PUBLIC \"-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN\"\n"
+"                            \"http://java.sun.com/dtd/web-facesconfig_1_0.dtd"
+"\"&gt;\n"
+"&lt;faces-config&gt;\n"
+"\n"
+"    &lt;!-- A phase listener is needed by all Seam applications --&gt;\n"
+"    \n"
+"    &lt;lifecycle&gt;\n"
+"        &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-"
+"listener&gt;\n"
+"    &lt;/lifecycle&gt;\n"
+"\n"
+"&lt;/faces-config&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:328
+#, no-c-format
+msgid ""
+"The <literal>faces-config.xml</literal> file integrates Seam into JSF. Note "
+"that we don't need any JSF managed bean declarations! The managed beans are "
+"the Seam components. In Seam applications, the <literal>faces-config.xml</"
+"literal> is used much less often than in plain JSF."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:331
+#, no-c-format
+msgid ""
+"In fact, once you have all the basic descriptors set up, the <emphasis>only</"
+"emphasis> XML you need to write as you add new functionality to a Seam "
+"application is the navigation rules, and possibly jBPM process definitions. "
+"Seam takes the view that <emphasis>process flow</emphasis> and "
+"<emphasis>configuration data</emphasis> are the only things that truly "
+"belong in XML."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:334
+#, no-c-format
+msgid ""
+"In this simple example, we don't even need a navigation rule, since we "
+"decided to embed the view id in our action code."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:340
+#, no-c-format
+msgid "The EJB deployment descriptor: <literal>ejb-jar.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:341
+#, no-c-format
+msgid ""
+"The <literal>ejb-jar.xml</literal> file integrates Seam with EJB3, by "
+"attaching the <literal>SeamInterceptor</literal> to all session beans in the "
+"archive."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:344
+#, no-c-format
+msgid ""
+"&lt;ejb-jar xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \n"
+"         xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n"
+"         http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd\"\n"
+"         version=\"3.0\"&gt;\n"
+"         \n"
+"   &lt;interceptors&gt;\n"
+"     &lt;interceptor&gt;\n"
+"       &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"     &lt;/interceptor&gt;\n"
+"   &lt;/interceptors&gt;\n"
+"   \n"
+"   &lt;assembly-descriptor&gt;\n"
+"      &lt;interceptor-binding&gt;\n"
+"         &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"         &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"      &lt;/interceptor-binding&gt;\n"
+"   &lt;/assembly-descriptor&gt;\n"
+"   \n"
+"&lt;/ejb-jar&gt;"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:348
+#, no-c-format
+msgid ""
+"The EJB persistence deployment descriptor: <literal>persistence.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:349
+#, no-c-format
+msgid ""
+"The <literal>persistence.xml</literal> file tells the EJB persistence "
+"provider where to find the datasource, and contains some vendor-specific "
+"settings. In this case, enables automatic schema export at startup time."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:352
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;persistence xmlns=\"http://java.sun.com/xml/ns/persistence\" \n"
+"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence \n"
+"             http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd\" \n"
+"             version=\"1.0\"&gt;\n"
+"    &lt;persistence-unit name=\"userDatabase\"&gt;\n"
+"      &lt;provider&gt;org.hibernate.ejb.HibernatePersistence&lt;/"
+"provider&gt;\n"
+"      &lt;jta-data-source&gt;java:/DefaultDS&lt;/jta-data-source&gt;\n"
+"      &lt;properties&gt;\n"
+"         &lt;property name=\"hibernate.hbm2ddl.auto\" value=\"create-drop\"/"
+"&gt;\n"
+"      &lt;/properties&gt;\n"
+"    &lt;/persistence-unit&gt;\n"
+"&lt;/persistence&gt;"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:356
+#, no-c-format
+msgid ""
+"The view: <literal>register.jsp</literal> and <literal>registered.jsp</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:357
+#, no-c-format
+msgid ""
+"The view pages for a Seam application could be implemented using any "
+"technology that supports JSF. In this example we use JSP, since it is "
+"familiar to most developers and since we have minimal requirements here "
+"anyway. (But if you take our advice, you'll use Facelets for your own "
+"applications.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:360
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://jboss.com/products/seam/taglib\" prefix=\"s\" "
+"&#37;&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Register New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;table border=\"0\"&gt;\n"
+"       &lt;s:validateAll&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Username&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputText value=\"#{user.username}\"/&gt;&lt;/"
+"td&gt;\n"
+"         &lt;/tr&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Real Name&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputText value=\"#{user.name}\"/&gt;&lt;/td&gt;\n"
+"         &lt;/tr&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Password&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputSecret value=\"#{user.password}\"/&gt;&lt;/"
+"td&gt;\n"
+"         &lt;/tr&gt;\n"
+"       &lt;/s:validateAll&gt;\n"
+"     &lt;/table&gt;\n"
+"     &lt;h:messages/&gt;\n"
+"     &lt;h:commandButton type=\"submit\" value=\"Register\" action=\"#"
+"{register.register}\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:361
+#, no-c-format
+msgid ""
+"The only thing here that is specific to Seam is the <literal>&lt;s:"
+"validateAll&gt;</literal> tag. This JSF component tells JSF to validate all "
+"the contained input fields against the Hibernate Validator annotations "
+"specified on the entity bean."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:364
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Successfully Registered New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"    Welcome, &lt;h:outputText value=\"#{user.name}\"/&gt;, \n"
+"    you are successfully registered as &lt;h:outputText value=\"#{user."
+"username}\"/&gt;.\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:365
+#, no-c-format
+msgid ""
+"This is a boring old JSP pages using standard JSF components. There is "
+"nothing specific to Seam here."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:371
+#, no-c-format
+msgid "The EAR deployment descriptor: <literal>application.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:372
+#, no-c-format
+msgid ""
+"Finally, since our application is deployed as an EAR, we need a deployment "
+"descriptor there, too."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:375
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;application xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee \n"
+"             http://java.sun.com/xml/ns/javaee/application_5.xsd\"\n"
+"             version=\"5\"&gt;\n"
+"             \n"
+"    &lt;display-name&gt;Seam Registration&lt;/display-name&gt;\n"
+"\n"
+"    &lt;module&gt;\n"
+"        &lt;web&gt;\n"
+"            &lt;web-uri&gt;jboss-seam-registration.war&lt;/web-uri&gt;\n"
+"            &lt;context-root&gt;/seam-registration&lt;/context-root&gt;\n"
+"        &lt;/web&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;ejb&gt;jboss-seam-registration.jar&lt;/ejb&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;jboss-seam.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;el-api.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;el-ri.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    \n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:376
+#, no-c-format
+msgid ""
+"This deployment descriptor links modules in the enterprise archive and binds "
+"the web application to the context root <literal>/seam-registration</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:387 Tutorial.xml:535 Tutorial.xml:698 Tutorial.xml:813
+#, no-c-format
+msgid "How it works"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:388
+#, no-c-format
+msgid ""
+"When the form is submitted, JSF asks Seam to resolve the variable named "
+"<literal>user</literal>. Since there is no value already bound to that name "
+"(in any Seam context), Seam instantiates the <literal>user</literal> "
+"component, and returns the resulting <literal>User</literal> entity bean "
+"instance to JSF after storing it in the Seam session context."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:391
+#, no-c-format
+msgid ""
+"The form input values are now validated against the Hibernate Validator "
+"constraints specified on the <literal>User</literal> entity. If the "
+"constraints are violated, JSF redisplays the page. Otherwise, JSF binds the "
+"form input values to properties of the <literal>User</literal> entity bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:394
+#, no-c-format
+msgid ""
+"Next, JSF asks Seam to resolve the variable named <literal>register</"
+"literal>. Seam finds the <literal>RegisterAction</literal> stateless session "
+"bean in the stateless context and returns it. JSF invokes the "
+"<literal>register()</literal> action listener method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:397
+#, no-c-format
+msgid ""
+"Seam intercepts the method call and injects the <literal>User</literal> "
+"entity from the Seam session context, before continuing the invocation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:400
+#, no-c-format
+msgid ""
+"The <literal>register()</literal> method checks if a user with the entered "
+"username already exists. If so, an error message is queued with the "
+"<literal>FacesMessages</literal> component, and a null outcome is returned, "
+"causing a page redisplay. The <literal>FacesMessages</literal> component "
+"interpolates the JSF expression embedded in the message string and adds a "
+"JSF <literal>FacesMessage</literal> to the view."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:403
+#, no-c-format
+msgid ""
+"If no user with that username exists, the <literal>\"/registered.jsp\"</"
+"literal> outcome triggers a browser redirect to the <literal>registered.jsp</"
+"literal> page. When JSF comes to render the page, it asks Seam to resolve "
+"the variable named <literal>user</literal> and uses property values of the "
+"returned <literal>User</literal> entity from Seam's session scope."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:411
+#, no-c-format
+msgid "Clickable lists in Seam: the messages example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:412
+#, no-c-format
+msgid ""
+"Clickable lists of database search results are such an important part of any "
+"online application that Seam provides special functionality on top of JSF to "
+"make it easier to query data using EJB-QL or HQL and display it as a "
+"clickable list using a JSF <literal>&lt;h:dataTable&gt;</literal>. The "
+"messages example demonstrates this functionality."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:425
+#, no-c-format
+msgid ""
+"The message list example has one entity bean, <literal>Message</literal>, "
+"one session bean, <literal>MessageListBean</literal> and one JSP."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:429
+#, no-c-format
+msgid "The entity bean: <literal>Message.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:430
+#, no-c-format
+msgid ""
+"The <literal>Message</literal> entity defines the title, text, date and time "
+"of a message, and a flag indicating whether the message has been read:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:433
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"message\")\n"
+"@Scope(EVENT)\n"
+"public class Message implements Serializable\n"
+"{\n"
+"   private Long id;\n"
+"   private String title;\n"
+"   private String text;\n"
+"   private boolean read;\n"
+"   private Date datetime;\n"
+"   \n"
+"   @Id @GeneratedValue\n"
+"   public Long getId() {\n"
+"      return id;\n"
+"   }\n"
+"   public void setId(Long id) {\n"
+"      this.id = id;\n"
+"   }\n"
+"   \n"
+"   @NotNull @Length(max=100)\n"
+"   public String getTitle() {\n"
+"      return title;\n"
+"   }\n"
+"   public void setTitle(String title) {\n"
+"      this.title = title;\n"
+"   }\n"
+"   \n"
+"   @NotNull @Lob\n"
+"   public String getText() {\n"
+"      return text;\n"
+"   }\n"
+"   public void setText(String text) {\n"
+"      this.text = text;\n"
+"   }\n"
+"   \n"
+"   @NotNull\n"
+"   public boolean isRead() {\n"
+"      return read;\n"
+"   }\n"
+"   public void setRead(boolean read) {\n"
+"      this.read = read;\n"
+"   }\n"
+"   \n"
+"   @NotNull \n"
+"   @Basic @Temporal(TemporalType.TIMESTAMP)\n"
+"   public Date getDatetime() {\n"
+"      return datetime;\n"
+"   }\n"
+"   public void setDatetime(Date datetime) {\n"
+"      this.datetime = datetime;\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:438
+#, no-c-format
+msgid "The stateful session bean: <literal>MessageManagerBean.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:439
+#, no-c-format
+msgid ""
+"Just like in the previous example, we have a session bean, "
+"<literal>MessageManagerBean</literal>, which defines the action listener "
+"methods for the two buttons on our form. One of the buttons selects a "
+"message from the list, and displays that message. The other button deletes a "
+"message. So far, this is not so different to the previous example."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:442
+#, no-c-format
+msgid ""
+"But <literal>MessageManagerBean</literal> is also responsible for fetching "
+"the list of messages the first time we navigate to the message list page. "
+"There are various ways the user could navigate to the page, and not all of "
+"them are preceded by a JSF action&mdash;the user might have bookmarked the "
+"page, for example. So the job of fetching the message list takes place in a "
+"Seam <emphasis>factory method</emphasis>, instead of in an action listener "
+"method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:445
+#, no-c-format
+msgid ""
+"We want to cache the list of messages in memory between server requests, so "
+"we will make this a stateful session bean."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:459
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Scope(SESSION)\n"
+"@Name(\"messageManager\")\n"
+"public class MessageManagerBean implements Serializable, MessageManager\n"
+"{\n"
+"\n"
+"   @DataModel\n"
+"   private List&lt;Message&gt; messageList;\n"
+"   \n"
+"   @DataModelSelection\n"
+"   @Out(required=false)\n"
+"   private Message message;\n"
+"   \n"
+"   @PersistenceContext(type=EXTENDED)\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @Factory(\"messageList\")\n"
+"   public void findMessages()\n"
+"   {\n"
+"      messageList = em.createQuery(\"from Message msg order by msg.datetime "
+"desc\").getResultList();\n"
+"   }\n"
+"   \n"
+"   public void select()\n"
+"   {\n"
+"      message.setRead(true);\n"
+"   }\n"
+"   \n"
+"   public void delete()\n"
+"   {\n"
+"      messageList.remove(message);\n"
+"      em.remove(message);\n"
+"      message=null;\n"
+"   }\n"
+"   \n"
+"   @Remove @Destroy\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:462
+#, no-c-format
+msgid ""
+"The <literal>@DataModel</literal> annotation exposes an attibute of type "
+"<literal>java.util.List</literal> to the JSF page as an instance of "
+"<literal>javax.faces.model.DataModel</literal>. This allows us to use the "
+"list in a JSF <literal>&lt;h:dataTable&gt;</literal> with clickable links "
+"for each row. In this case, the <literal>DataModel</literal> is made "
+"available in a session context variable named <literal>messageList</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:467
+#, no-c-format
+msgid ""
+"The <literal>@DataModelSelection</literal> annotation tells Seam to inject "
+"the <literal>List</literal> element that corresponded to the clicked link."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:472
+#, no-c-format
+msgid ""
+"The <literal>@Out</literal> annotation then exposes the selected value "
+"directly to the page. So ever time a row of the clickable list is selected, "
+"the <literal>Message</literal> is injected to the attribute of the stateful "
+"bean, and the subsequently <emphasis>outjected</emphasis> to the event "
+"context variable named <literal>message</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:477
+#, no-c-format
+msgid ""
+"This stateful bean has an EJB3 <emphasis>extended persistence context</"
+"emphasis>. The messages retrieved in the query remain in the managed state "
+"as long as the bean exists, so any subsequent method calls to the stateful "
+"bean can update them without needing to make any explicit call to the "
+"<literal>EntityManager</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:482
+#, no-c-format
+msgid ""
+"The first time we navigate to the JSP page, there will be no value in the "
+"<literal>messageList</literal> context variable. The <literal>@Factory</"
+"literal> annotation tells Seam to create an instance of "
+"<literal>MessageManagerBean</literal> and invoke the <literal>findMessages()"
+"</literal> method to initialize the value. We call <literal>findMessages()</"
+"literal> a <emphasis>factory method</emphasis> for <literal>messages</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:487
+#, no-c-format
+msgid ""
+"The <literal>select()</literal> action listener method marks the selected "
+"<literal>Message</literal> as read, and updates it in the database."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:492
+#, no-c-format
+msgid ""
+"The <literal>delete()</literal> action listener method removes the selected "
+"<literal>Message</literal> from the database."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:497
+#, no-c-format
+msgid ""
+"All stateful session bean Seam components <emphasis>must</emphasis> have a "
+"method marked <literal>@Remove @Destroy</literal> to ensure that Seam will "
+"remove the stateful bean when the Seam context ends, and clean up any server-"
+"side state."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:504
+#, no-c-format
+msgid ""
+"Note that this is a session-scoped Seam component. It is associated with the "
+"user login session, and all requests from a login session share the same "
+"instance of the component. (In Seam applications, we usually use session-"
+"scoped components sparingly.)"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:510
+#, no-c-format
+msgid ""
+"The session bean local interface: <literal>MessageManager.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:511
+#, no-c-format
+msgid "All session beans have a business interface, of course."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:514
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface MessageManager\n"
+"{\n"
+"   public void findMessages();\n"
+"   public void select();\n"
+"   public void delete();\n"
+"   public void destroy();\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:515
+#, no-c-format
+msgid "From now on, we won't show local interfaces in our code examples."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:518
+#, no-c-format
+msgid ""
+"Let's skip over <literal>components.xml</literal>, <literal>persistence.xml</"
+"literal>, <literal>web.xml</literal>, <literal>ejb-jar.xml</literal>, "
+"<literal>faces-config.xml</literal> and <literal>application.xml</literal> "
+"since they are much the same as the previous example, and go straight to the "
+"JSP."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:524
+#, no-c-format
+msgid "The view: <literal>messages.jsp</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:525
+#, no-c-format
+msgid ""
+"The JSP page is a straightforward use of the JSF <literal>&lt;h:dataTable&gt;"
+"</literal> component. Again, nothing specific to Seam."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:528
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Messages&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;h2&gt;Message List&lt;/h2&gt;\n"
+"     &lt;h:outputText value=\"No messages to display\" rendered=\"#"
+"{messageList.rowCount==0}\"/&gt;\n"
+"     &lt;h:dataTable var=\"msg\" value=\"#{messageList}\" rendered=\"#"
+"{messageList.rowCount&gt;0}\"&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Read\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:selectBooleanCheckbox value=\"#{msg.read}\" disabled=\"true"
+"\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Title\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:commandLink value=\"#{msg.title}\" action=\"#"
+"{messageManager.select}\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Date/Time\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:outputText value=\"#{msg.datetime}\"&gt;\n"
+"              &lt;f:convertDateTime type=\"both\" dateStyle=\"medium\" "
+"timeStyle=\"short\"/&gt;\n"
+"           &lt;/h:outputText&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;h:commandButton value=\"Delete\" action=\"#{messageManager."
+"delete}\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"     &lt;/h:dataTable&gt;\n"
+"     &lt;h3&gt;&lt;h:outputText value=\"#{message.title}\"/&gt;&lt;/h3&gt;\n"
+"     &lt;div&gt;&lt;h:outputText value=\"#{message.text}\"/&gt;&lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:536
+#, no-c-format
+msgid ""
+"The first time we navigate to the <literal>messages.jsp</literal> page, "
+"whether by a JSF postback (faces request) or a direct browser GET request "
+"(non-faces request), the page will try to resolve the <literal>messageList</"
+"literal> context variable. Since this context variable is not initialized, "
+"Seam will call the factory method <literal>findMessages()</literal>, which "
+"performs a query against the database and results in a <literal>DataModel</"
+"literal> being outjected. This <literal>DataModel</literal> provides the row "
+"data needed for rendering the <literal>&lt;h:dataTable&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:539
+#, no-c-format
+msgid ""
+"When the user clicks the <literal>&lt;h:commandLink&gt;</literal>, JSF calls "
+"the <literal>select()</literal> action listener. Seam intercepts this call "
+"and injects the selected row data into the <literal>message</literal> "
+"attribute of the <literal>messageManager</literal> component. The action "
+"listener fires, marking the selected <literal>Message</literal> as read. At "
+"the end of the call, Seam outjects the selected <literal>Message</literal> "
+"to the context variable named <literal>message</literal>. Next, the EJB "
+"container commits the transaction, and the change to the <literal>Message</"
+"literal> is flushed to the database. Finally, the page is re-rendered, "
+"redisplaying the message list, and displaying the selected message below it."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:542
+#, no-c-format
+msgid ""
+"If the user clicks the <literal>&lt;h:commandButton&gt;</literal>, JSF calls "
+"the <literal>delete()</literal> action listener. Seam intercepts this call "
+"and injects the selected row data into the <literal>message</literal> "
+"attribute of the <literal>messageList</literal> component. The action "
+"listener fires, removing the selected <literal>Message</literal> from the "
+"list, and also calling <literal>remove()</literal> on the "
+"<literal>EntityManager</literal>. At the end of the call, Seam refreshes the "
+"<literal>messageList</literal> context variable and clears the context "
+"variable named <literal>message</literal>. The EJB container commits the "
+"transaction, and deletes the <literal>Message</literal> from the database. "
+"Finally, the page is re-rendered, redisplaying the message list."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:550
+#, no-c-format
+msgid "Seam and jBPM: the todo list example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:551
+#, no-c-format
+msgid ""
+"jBPM provides sophisticated functionality for workflow and task management. "
+"To get a small taste of how jBPM integrates with Seam, we'll show you a "
+"simple \"todo list\" application. Since managing lists of tasks is such core "
+"functionality for jBPM, there is hardly any Java code at all in this example."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:564
+#, no-c-format
+msgid ""
+"The center of this example is the jBPM process definition. There are also "
+"two JSPs and two trivial JavaBeans (There was no reason to use session "
+"beans, since they do not access the database, or have any other "
+"transactional behavior). Let's start with the process definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:575
+#, no-c-format
+msgid ""
+"&lt;process-definition name=\"todo\"&gt;\n"
+"   \n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"todo\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;task-node name=\"todo\"&gt;\n"
+"      &lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"         &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"      &lt;/task&gt;\n"
+"      &lt;transition to=\"done\"/&gt;\n"
+"   &lt;/task-node&gt;\n"
+"   \n"
+"   &lt;end-state name=\"done\"/&gt;\n"
+"   \n"
+"&lt;/process-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:578
+#, no-c-format
+msgid ""
+"The <literal>&lt;start-state&gt;</literal> node represents the logical start "
+"of the process. When the process starts, it immediately transitions to the "
+"<literal>todo</literal> node."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:583
+#, no-c-format
+msgid ""
+"The <literal>&lt;task-node&gt;</literal> node represents a <emphasis>wait "
+"state</emphasis>, where business process execution pauses, waiting for one "
+"or more tasks to be performed."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:588
+#, no-c-format
+msgid ""
+"The <literal>&lt;task&gt;</literal> element defines a task to be performed "
+"by a user. Since there is only one task defined on this node, when it is "
+"complete, execution resumes, and we transition to the end state. The task "
+"gets its description from a Seam component named <literal>todoList</literal> "
+"(one of the JavaBeans)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:593
+#, no-c-format
+msgid ""
+"Tasks need to be assigned to a user or group of users when they are created. "
+"In this case, the task is assigned to the current user, which we get from a "
+"built-in Seam component named <literal>actor</literal>. Any Seam component "
+"may be used to perform task assignment."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:598
+#, no-c-format
+msgid ""
+"The <literal>&lt;end-state&gt;</literal> node defines the logical end of the "
+"business process. When execution reaches this node, the process instance is "
+"destroyed."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:605
+#, no-c-format
+msgid ""
+"If we view this process definition using the process definition editor "
+"provided by JBossIDE, this is what it looks like:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:616
+#, no-c-format
+msgid ""
+"This document defines our <emphasis>business process</emphasis> as a graph "
+"of nodes. This is the most trivial possible business process: there is one "
+"<emphasis>task</emphasis> to be performed, and when that task is complete, "
+"the business process ends."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:619
+#, no-c-format
+msgid ""
+"The first JavaBean handles the login screen <literal>login.jsp</literal>. "
+"Its job is just to initialize the jBPM actor id using the <literal>actor</"
+"literal> component. (In a real application, it would also need to "
+"authenticate the user.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:622
+#, no-c-format
+msgid ""
+"@Name(\"login\")\n"
+"public class Login {\n"
+"   \n"
+"   @In\n"
+"   private Actor actor;\n"
+"   \n"
+"   private String user;\n"
+"\n"
+"   public String getUser() {\n"
+"      return user;\n"
+"   }\n"
+"\n"
+"   public void setUser(String user) {\n"
+"      this.user = user;\n"
+"   }\n"
+"   \n"
+"   public String login()\n"
+"   {\n"
+"      actor.setId(user);\n"
+"      return \"/todo.jsp\";\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:623
+#, no-c-format
+msgid ""
+"Here we see the use of <literal>@In</literal> to inject the built-in "
+"<literal>Actor</literal> component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:626
+#, no-c-format
+msgid "The JSP itself is trivial:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:629
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"&#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"&#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Login&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Login&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    &lt;h:form&gt;\n"
+"      &lt;div&gt;\n"
+"        &lt;h:inputText value=\"#{login.user}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Login\" action=\"#{login.login}\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"    &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:630
+#, no-c-format
+msgid ""
+"The second JavaBean is responsible for starting business process instances, "
+"and ending tasks."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:639
+#, no-c-format
+msgid ""
+"@Name(\"todoList\")\n"
+"public class TodoList {\n"
+"   \n"
+"   private String description;\n"
+"   \n"
+"   public String getDescription()\n"
+"   {\n"
+"      return description;\n"
+"   }\n"
+"\n"
+"   public void setDescription(String description) {\n"
+"      this.description = description;\n"
+"   }\n"
+"   \n"
+"   @CreateProcess(definition=\"todo\")\n"
+"   public void createTodo() {}\n"
+"   \n"
+"   @StartTask @EndTask\n"
+"   public void done() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:642
+#, no-c-format
+msgid ""
+"The description property accepts user input form the JSP page, and exposes "
+"it to the process definition, allowing the task description to be set."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:647
+#, no-c-format
+msgid ""
+"The Seam <literal>@CreateProcess</literal> annotation creates a new jBPM "
+"process instance for the named process definition."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:652
+#, no-c-format
+msgid ""
+"The Seam <literal>@StartTask</literal> annotation starts work on a task. The "
+"<literal>@EndTask</literal> ends the task, and allows the business process "
+"execution to resume."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:659
+#, no-c-format
+msgid ""
+"In a more realistic example, <literal>@StartTask</literal> and "
+"<literal>@EndTask</literal> would not appear on the same method, because "
+"there is usually work to be done using the application in order to complete "
+"the task."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:662
+#, no-c-format
+msgid "Finally, the meat of the application is in <literal>todo.jsp</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:665
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://jboss.com/products/seam/taglib\" prefix=\"s\" "
+"&#37;&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Todo List&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Todo List&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"   &lt;h:form id=\"list\"&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:outputText value=\"There are no todo items.\" rendered=\"#"
+"{empty \n"
+"             taskInstanceList}\"/&gt;\n"
+"         &lt;h:dataTable value=\"#{taskInstanceList}\" var=\"task\" rendered="
+"\"#{not empty taskInstanceList}\"&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Description\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.description}\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Created\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:outputText value=\"#{task.taskMgmtInstance."
+"processInstance.start}\"&gt;\n"
+"                    &lt;f:convertDateTime type=\"date\"/&gt;\n"
+"                &lt;/h:outputText&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Priority\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.priority}\" style=\"width: 30"
+"\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Due Date\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.dueDate}\" style=\"width: 100"
+"\"&gt;\n"
+"                    &lt;f:convertDateTime type=\"date\" dateStyle=\"short\"/"
+"&gt;\n"
+"                &lt;/h:inputText&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;s:button value=\"Done\" action=\"#{todoList.done}\" "
+"taskInstance=\"#{task}\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"         &lt;/h:dataTable&gt;\n"
+"      &lt;/div&gt;\n"
+"      &lt;div&gt;\n"
+"      &lt;h:messages/&gt;\n"
+"      &lt;/div&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:commandButton value=\"Update Items\" action=\"update\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"   &lt;h:form id=\"new\"&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:inputText value=\"#{todoList.description}\"/&gt;\n"
+"         &lt;h:commandButton value=\"Create New Item\" action=\"#{todoList."
+"createTodo}\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:666
+#, no-c-format
+msgid "Let's take this one piece at a time."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:669
+#, no-c-format
+msgid ""
+"The page renders a list of tasks, which it gets from a built-in Seam "
+"component named <literal>taskInstanceList</literal>. The list is defined "
+"inside a JSF form."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:672
+#, no-c-format
+msgid ""
+"&lt;h:form id=\"list\"&gt;\n"
+"   &lt;div&gt;\n"
+"      &lt;h:outputText value=\"There are no todo items.\" rendered=\"#{empty "
+"taskInstanceList}\"/&gt;\n"
+"      &lt;h:dataTable value=\"#{taskInstanceList}\" var=\"task\" rendered=\"#"
+"{not empty taskInstanceList}\"&gt;\n"
+"         ...\n"
+"      &lt;/h:dataTable&gt;\n"
+"   &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:673
+#, no-c-format
+msgid ""
+"Each element of the list is an instance of the jBPM class "
+"<literal>TaskInstance</literal>. The following code simply displays the "
+"interesting properties of each task in the list. For the description, "
+"priority and due date, we use input controls, to allow the user to update "
+"these values."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:676
+#, no-c-format
+msgid ""
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"       &lt;h:outputText value=\"Description\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.description}\"/&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Created\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:outputText value=\"#{task.taskMgmtInstance.processInstance.start}"
+"\"&gt;\n"
+"        &lt;f:convertDateTime type=\"date\"/&gt;\n"
+"    &lt;/h:outputText&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Priority\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.priority}\" style=\"width: 30\"/&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Due Date\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.dueDate}\" style=\"width: 100\"&gt;\n"
+"        &lt;f:convertDateTime type=\"date\" dateStyle=\"short\"/&gt;\n"
+"    &lt;/h:inputText&gt;\n"
+"&lt;/h:column&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:677
+#, no-c-format
+msgid ""
+"This button ends the task by calling the action method annotated "
+"<literal>@StartTask @EndTask</literal>. It passes the task id to Seam as a "
+"request parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:680
+#, no-c-format
+msgid ""
+"&lt;h:column&gt;\n"
+"    &lt;s:button value=\"Done\" action=\"#{todoList.done}\" taskInstance=\"#"
+"{task}\"/&gt;\n"
+"&lt;/h:column&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:681
+#, no-c-format
+msgid ""
+"(Note that this is using a Seam <literal>&lt;s:button&gt;</literal> JSF "
+"control from the <literal>seam-ui.jar</literal> package.)"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:684
+#, no-c-format
+msgid ""
+"This button is used to update the properties of the tasks. When the form is "
+"submitted, Seam and jBPM will make any changes to the tasks persistent. "
+"There is no need for any action listener method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:687
+#, no-c-format
+msgid "&lt;h:commandButton value=\"Update Items\" action=\"update\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:688
+#, no-c-format
+msgid ""
+"A second form on the page is used to create new items, by calling the action "
+"method annotated <literal>@CreateProcess</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:691
+#, no-c-format
+msgid ""
+"&lt;h:form id=\"new\"&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:inputText value=\"#{todoList.description}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Create New Item\" action=\"#{todoList."
+"createTodo}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:692
+#, no-c-format
+msgid ""
+"There are several other files needed for the example, but they are just "
+"standard jBPM and Seam configuration and not very interesting."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:699 Tutorial.xml:814 Tutorial.xml:1157 Tutorial.xml:1178
+#: Tutorial.xml:1191
+#, no-c-format
+msgid "TODO"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:707
+#, no-c-format
+msgid "Seam pageflow: the numberguess example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:708
+#, no-c-format
+msgid ""
+"For Seam applications with relatively freeform (ad hoc) navigation, JSF/Seam "
+"navigation rules are a perfectly good way to define the page flow. For "
+"applications with a more constrained style of navigation, especially for "
+"user interfaces which are more stateful, navigation rules make it difficult "
+"to really understand the flow of the system. To understand the flow, you "
+"need to piece it together from the view pages, the actions and the "
+"navigation rules."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:711
+#, no-c-format
+msgid ""
+"Seam allows you to use a jPDL process definition to define pageflow. The "
+"simple number guessing example shows how this is done."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:724
+#, no-c-format
+msgid ""
+"The example is implemented using one JavaBean, three JSP pages and a jPDL "
+"pageflow definition. Let's begin with the pageflow:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:734
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"numberGuess\"&gt;\n"
+"   \n"
+"   &lt;start-page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"          &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"      &lt;/transition&gt;\n"
+"   &lt;/start-page&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess."
+"correctGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateRemainingGuesses\" expression=\"#{numberGuess."
+"lastGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"lose\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"displayGuess\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"lose\" view-id=\"/lose.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:737
+#, no-c-format
+msgid ""
+"The <literal>&lt;page&gt;</literal> element defines a wait state where the "
+"system displays a particular JSF view and waits for user input. The "
+"<literal>view-id</literal> is the same JSF view id used in plain JSF "
+"navigation rules. The <literal>redirect</literal> attribute tells Seam to "
+"use post-then-redirect when navigating to the page. (This results in "
+"friendly browser URLs.)"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:742
+#, no-c-format
+msgid ""
+"The <literal>&lt;transition&gt;</literal> element names a JSF outcome. The "
+"transition is triggered when a JSF action results in that outcome. Execution "
+"will then proceed to the next node of the pageflow graph, after invocation "
+"of any jBPM transition actions."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:747
+#, no-c-format
+msgid ""
+"A transition <literal>&lt;action&gt;</literal> is just like a JSF action, "
+"except that it occurs when a jBPM transition occurs. The transition action "
+"can invoke any Seam component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:752
+#, no-c-format
+msgid ""
+"A <literal>&lt;decision&gt;</literal> node branches the pageflow, and "
+"determines the next node to execute by evaluating a JSF EL expression."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:759
+#, no-c-format
+msgid "Here is what the pageflow looks like in the JBossIDE pageflow editor:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:770
+#, no-c-format
+msgid ""
+"Now that we have seen the pageflow, it is very, very easy to understand the "
+"rest of the application!"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:773
+#, no-c-format
+msgid ""
+"Here is the main page of the application, <literal>numberGuess.jsp</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:776
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"&#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"&#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Guess a number...&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Guess a number...&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    &lt;h:form&gt;\n"
+"        &lt;h:outputText value=\"Higher!\" rendered=\"#{numberGuess."
+"randomNumber&gt;numberGuess.currentGuess}\" /&gt;\n"
+"        &lt;h:outputText value=\"Lower!\" rendered=\"#{numberGuess."
+"randomNumber&lt;numberGuess.currentGuess}\" /&gt;\n"
+"        &lt;br /&gt;\n"
+"        I'm thinking of a number between &lt;h:outputText value=\"#"
+"{numberGuess.smallest}\" /&gt; and \n"
+"        &lt;h:outputText value=\"#{numberGuess.biggest}\" /&gt;. You have \n"
+"        &lt;h:outputText value=\"#{numberGuess.remainingGuesses}\" /&gt; "
+"guesses.\n"
+"        &lt;br /&gt;\n"
+"        Your guess: \n"
+"        &lt;h:inputText value=\"#{numberGuess.currentGuess}\" id=\"guess\" "
+"required=\"true\"&gt;\n"
+"            &lt;f:validateLongRange\n"
+"                maximum=\"#{numberGuess.biggest}\" \n"
+"                minimum=\"#{numberGuess.smallest}\"/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"        &lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"guess"
+"\" /&gt;\n"
+"        &lt;br/&gt;\n"
+"        &lt;h:message for=\"guess\" style=\"color: red\"/&gt;\n"
+"    &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:777
+#, no-c-format
+msgid ""
+"Notice how the command button names the <literal>guess</literal> transition "
+"instead of calling an action directly."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:780
+#, no-c-format
+msgid "The <literal>win.jsp</literal> page is predictable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:783
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"&#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"&#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;You won!&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;You won!&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    Yes, the answer was &lt;h:outputText value=\"#{numberGuess.currentGuess}"
+"\" /&gt;.\n"
+"    It took you &lt;h:outputText value=\"#{numberGuess.guessCount}\" /&gt; "
+"guesses.\n"
+"    Would you like to &lt;a href=\"numberGuess.seam\"&gt;play again&lt;/"
+"a&gt;?\n"
+"  &lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:784
+#, no-c-format
+msgid ""
+"As is <literal>lose.jsp</literal> (which I can't be bothered copy/pasting). "
+"Finally, the JavaBean Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:792
+#, no-c-format
+msgid ""
+"@Name(\"numberGuess\")\n"
+"@Scope(ScopeType.CONVERSATION)\n"
+"public class NumberGuess {\n"
+"   \n"
+"   private int randomNumber;\n"
+"   private Integer currentGuess;\n"
+"   private int biggest;\n"
+"   private int smallest;\n"
+"   private int guessCount;\n"
+"   private int maxGuesses;\n"
+"   \n"
+"   @Create \n"
+"   @Begin(pageflow=\"numberGuess\")\n"
+"   public void begin()\n"
+"   {\n"
+"      randomNumber = new Random().nextInt(100);\n"
+"      guessCount = 0;\n"
+"      biggest = 100;\n"
+"      smallest = 1;\n"
+"   }\n"
+"   \n"
+"   public void setCurrentGuess(Integer guess)\n"
+"   {\n"
+"      this.currentGuess = guess;\n"
+"   }\n"
+"   \n"
+"   public Integer getCurrentGuess()\n"
+"   {\n"
+"      return currentGuess;\n"
+"   }\n"
+"   \n"
+"   public void guess()\n"
+"   {\n"
+"      if (currentGuess&gt;randomNumber)\n"
+"      {\n"
+"         biggest = currentGuess - 1;\n"
+"      }\n"
+"      if (currentGuess&lt;randomNumber)\n"
+"      {\n"
+"         smallest = currentGuess + 1;\n"
+"      }\n"
+"      guessCount ++;\n"
+"   }\n"
+"   \n"
+"   public boolean isCorrectGuess()\n"
+"   {\n"
+"      return currentGuess==randomNumber;\n"
+"   }\n"
+"   \n"
+"   public int getBiggest()\n"
+"   {\n"
+"      return biggest;\n"
+"   }\n"
+"   \n"
+"   public int getSmallest()\n"
+"   {\n"
+"      return smallest;\n"
+"   }\n"
+"   \n"
+"   public int getGuessCount()\n"
+"   {\n"
+"      return guessCount;\n"
+"   }\n"
+"   \n"
+"   public boolean isLastGuess()\n"
+"   {\n"
+"      return guessCount==maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getRemainingGuesses() {\n"
+"      return maxGuesses-guessCount;\n"
+"   }\n"
+"\n"
+"   public void setMaxGuesses(int maxGuesses) {\n"
+"      this.maxGuesses = maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getMaxGuesses() {\n"
+"      return maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getRandomNumber() {\n"
+"      return randomNumber;\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:795
+#, no-c-format
+msgid ""
+"The first time a JSP page asks for a <literal>numberGuess</literal> "
+"component, Seam will create a new one for it, and the <literal>@Create</"
+"literal> method will be invoked, allowing the component to initialize itself."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:800
+#, no-c-format
+msgid ""
+"The <literal>@Begin</literal> annotation starts a Seam "
+"<emphasis>conversation</emphasis> (much more about that later), and "
+"specifies the pageflow definition to use for the conversation's page flow."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:807
+#, no-c-format
+msgid ""
+"As you can see, this Seam component is pure business logic! It doesn't need "
+"to know anything at all about the user interaction flow. This makes the "
+"component potentially more reuseable."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:822
+#, no-c-format
+msgid "A complete Seam application: the Hotel Booking example"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:824
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:825
+#, no-c-format
+msgid ""
+"The booking application is a complete hotel room reservation system "
+"incorporating the following features:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:830
+#, no-c-format
+msgid "User registration"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:835
+#, no-c-format
+msgid "Login"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:840
+#, no-c-format
+msgid "Logout"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:845
+#, no-c-format
+msgid "Set password"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:850
+#, no-c-format
+msgid "Hotel search"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:855
+#, no-c-format
+msgid "Hotel selection"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:860
+#, no-c-format
+msgid "Room reservation"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:865
+#, no-c-format
+msgid "Reservation confirmation"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:870
+#, no-c-format
+msgid "Existing reservation list"
+msgstr ""
+
+#. Tag: screeninfo
+#: Tutorial.xml:875
+#, no-c-format
+msgid "Booking example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:883
+#, no-c-format
+msgid ""
+"The booking application uses JSF, EJB 3.0 and Seam, together with Facelets "
+"for the view. There is also a port of this application to JSF, Facelets, "
+"Seam, JavaBeans and Hibernate3."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:886
+#, no-c-format
+msgid ""
+"One of the things you'll notice if you play with this application for long "
+"enough is that it is extremely <emphasis>robust</emphasis>. You can play "
+"with back buttons and browser refresh and opening multiple windows and "
+"entering nonsensical data as much as you like and you will find it very "
+"difficult to make the application crash. You might think that we spent weeks "
+"testing and fixing bugs to achive this. Actually, this is not the case. Seam "
+"was designed to make it very straightforward to build robust web "
+"applications and a lot of robustness that you are probably used to having to "
+"code yourself comes naturally and automatically with Seam."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:889
+#, no-c-format
+msgid ""
+"As you browse the sourcecode of the example application, and learn how the "
+"application works, observe how the declarative state management and "
+"integrated validation has been used to achieve this robustness."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:895
+#, no-c-format
+msgid "Overview of the booking example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:896
+#, no-c-format
+msgid ""
+"The project structure is identical to the previous one, to install and "
+"deploy this application, please refer to <xref linkend=\"Seam_Tutorial-"
+"Try_the_examples\"/>. Once you've successfully started the application, you "
+"can access it by pointing your browser to <ulink url=\"http://localhost:8080/"
+"seam-booking/\"><literal>http://localhost:8080/seam-booking/</literal></"
+"ulink>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:899
+#, no-c-format
+msgid ""
+"Just ten classes (plus six session beans local interfaces and 1 annotation "
+"interface) where used to implement this application. Six session bean action "
+"listeners contain all the business logic for the listed features."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:904
+#, no-c-format
+msgid ""
+"<literal>BookingListAction</literal> retrieves existing bookings for the "
+"currently logged in user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:907
+#, no-c-format
+msgid ""
+"<literal>ChangePasswordAction</literal> updates the password of the "
+"currently logged in user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:910
+#, no-c-format
+msgid ""
+"<literal>HotelBookingAction</literal> implements the core functionality of "
+"the application: hotel room searching, selection, booking and booking "
+"confirmation. This functionality is implemented as a <emphasis>conversation</"
+"emphasis>, so this is the most interesting class in the application."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:913
+#, no-c-format
+msgid ""
+"<literal>LoginAction</literal> validates the login details and retrieves the "
+"logged in user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:916
+#, no-c-format
+msgid "<literal>LogoutAction</literal> ends the login session."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:919
+#, no-c-format
+msgid "<literal>RegisterAction</literal> registers a new system user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:922
+#, no-c-format
+msgid "Three entity beans implement the application's persistent domain model."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:927
+#, no-c-format
+msgid "<literal>Hotel</literal> is an entity bean that represent a hotel"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:930
+#, no-c-format
+msgid ""
+"<literal>Booking</literal> is an entity bean that represents an existing "
+"booking"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:933
+#, no-c-format
+msgid ""
+"<literal>User</literal> is an entity bean to represents a user who can make "
+"hotel bookings"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:936
+#, no-c-format
+msgid ""
+"Finally, the <literal>LoggedIn</literal> annotation and the "
+"<literal>LoggedInInterceptor</literal> are used to protect actions that "
+"require a logged in user."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:942
+#, no-c-format
+msgid "Understanding Seam conversations"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:943
+#, no-c-format
+msgid ""
+"We encourage you browse the sourcecode at your pleasure. In this tutorial "
+"we'll concentrate upon one particular piece of functionality: hotel search, "
+"selection, booking and confirmation. From the point of view of the user, "
+"everything from selecting a hotel to confirming a booking is one continuous "
+"unit of work, a <emphasis>conversation</emphasis>. Searching, however, is "
+"<emphasis>not</emphasis> part of the conversation. The user can select "
+"multiple hotels from the same search results page, in different browser tabs."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:946
+#, no-c-format
+msgid ""
+"Most web application architectures have no first class construct to "
+"represent a conversation. This causes enormous problems managing state "
+"associated with the conversation. Usually, Java web applications use a "
+"combination of two techniques: first, some state is thrown into the "
+"<literal>HttpSession</literal>; second, persistable state is flushed to the "
+"database after every request, and reconstructed from the database at the "
+"beginning of each new request."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:949
+#, no-c-format
+msgid ""
+"Since the database is the least scalable tier, this often results in an "
+"utterly unacceptable lack of scalability. Added latency is also a problem, "
+"due to the extra traffic to and from the database on every request. To "
+"reduce this redundant traffic, Java applications often introduce a data "
+"(second-level) cache that keeps commonly accessed data between requests. "
+"This cache is necessarily inefficient, because invalidation is based upon an "
+"LRU policy instead of being based upon when the user has finished working "
+"with the data. Furthermore, because the cache is shared between many "
+"concurrent transactions, we've introduced a whole raft of problem's "
+"associated with keeping the cached state consistent with the database."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:952
+#, no-c-format
+msgid ""
+"Now consider the state held in the <literal>HttpSession</literal>. By very "
+"careful programming, we might be able to control the size of the session "
+"data. This is a lot more difficult than it sounds, since web browsers permit "
+"ad hoc non-linear navigation. But suppose we suddenly discover a system "
+"requirement that says that a user is allowed to have <emphasis>mutiple "
+"concurrent conversations</emphasis>, halfway through the development of the "
+"system (this has happened to me). Developing mechanisms to isolate session "
+"state associated with different concurrent conversations, and incorporating "
+"failsafes to ensure that conversation state is destroyed when the user "
+"aborts one of the conversations by closing a browser window or tab is not "
+"for the faint hearted (I've implemented this stuff twice so far, once for a "
+"client application, once for Seam, but I'm famously psychotic)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:955
+#, no-c-format
+msgid "Now there is a better way."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:958
+#, no-c-format
+msgid ""
+"Seam introduces the <emphasis>conversation context</emphasis> as a first "
+"class construct. You can safely keep conversational state in this context, "
+"and be assured that it will have a well-defined lifecycle. Even better, you "
+"won't need to be continually pushing data back and forth between the "
+"application server and the database, since the conversation context is a "
+"natural cache of data that the user is currently working with."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:961
+#, no-c-format
+msgid ""
+"Usually, the components we keep in the conversation context are stateful "
+"session beans. (We can also keep entity beans and JavaBeans in the "
+"conversation context.) There is an ancient canard in the Java community that "
+"stateful session beans are a scalability killer. This may have been true in "
+"1998 when WebFoobar 1.0 was released. It is no longer true today. "
+"Application servers like JBoss 4.0 have extremely sophisticated mechanisms "
+"for stateful session bean state replication. (For example, the JBoss EJB3 "
+"container performs fine-grained replication, replicating only those bean "
+"attribute values which actually changed.) Note that all the traditional "
+"technical arguments for why stateful beans are inefficient apply equally to "
+"the <literal>HttpSession</literal>, so the practice of shifting state from "
+"business tier stateful session bean components to the web session to try and "
+"improve performance is unbelievably misguided. It is certainly possible to "
+"write unscalable applications using stateful session beans, by using "
+"stateful beans incorrectly, or by using them for the wrong thing. But that "
+"doesn't mean you should <emphasis>never</emphasis> use them. Anyway, Seam "
+"guides you toward a safe usage model. Welcome to 2005."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:964
+#, no-c-format
+msgid "OK, I'll stop ranting now, and get back to the tutorial."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:967
+#, no-c-format
+msgid ""
+"The booking example application shows how stateful components with different "
+"scopes can collaborate together to achieve complex behaviors. The main page "
+"of the booking application allows the user to search for hotels. The search "
+"results are kept in the Seam session scope. When the user navigates to one "
+"of these hotels, a conversation begins, and a conversation scoped component "
+"calls back to the session scoped component to retrieve the selected hotel."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:970
+#, no-c-format
+msgid ""
+"The booking example also demonstrates the use of Ajax4JSF to implement rich "
+"client behavior without the use of handwritten JavaScript."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:973
+#, no-c-format
+msgid ""
+"The search functionality is implemented using a session-scope stateful "
+"session bean, similar to the one we saw in the message list example above."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:983
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"hotelSearch\")\n"
+"@Scope(ScopeType.SESSION)\n"
+"@LoggedIn\n"
+"public class HotelSearchingAction implements HotelSearching\n"
+"{\n"
+"   \n"
+"   @PersistenceContext\n"
+"   private EntityManager em;\n"
+"   \n"
+"   private String searchString;\n"
+"   private int pageSize = 10;\n"
+"   private int page;\n"
+"   \n"
+"   @DataModel\n"
+"   private List&lt;Hotel&gt; hotels;\n"
+"   \n"
+"   public String find()\n"
+"   {\n"
+"      page = 0;\n"
+"      queryHotels();   \n"
+"      return \"main\";\n"
+"   }\n"
+"\n"
+"   public String nextPage()\n"
+"   {\n"
+"      page++;\n"
+"      queryHotels();\n"
+"      return \"main\";\n"
+"   }\n"
+"      \n"
+"   private void queryHotels()\n"
+"   {\n"
+"      String searchPattern = searchString==null ? \"&#37;\" : '&#37;' + \n"
+"          searchString.toLowerCase().replace('*', '&#37;') + '&#37;';\n"
+"      hotels = em.createQuery(\"select h from Hotel h where lower(h.name) "
+"like\n"
+"          :search or lower(h.city) like :search \n"
+"          or lower(h.zip) like :search or lower(h.address) like :search\")\n"
+"            .setParameter(\"search\", searchPattern)\n"
+"            .setMaxResults(pageSize)\n"
+"            .setFirstResult( page * pageSize )\n"
+"            .getResultList();\n"
+"   }\n"
+"   \n"
+"   public boolean isNextPageAvailable()\n"
+"   {\n"
+"      return hotels!=null &amp;&amp; hotels.size()==pageSize;\n"
+"   }\n"
+"   \n"
+"   public int getPageSize() {\n"
+"      return pageSize;\n"
+"   }\n"
+"\n"
+"   public void setPageSize(int pageSize) {\n"
+"      this.pageSize = pageSize;\n"
+"   }\n"
+"\n"
+"   public String getSearchString()\n"
+"   {\n"
+"      return searchString;\n"
+"   }\n"
+"\n"
+"   public void setSearchString(String searchString)\n"
+"   {\n"
+"      this.searchString = searchString;\n"
+"   }\n"
+"   \n"
+"   @Destroy @Remove\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:986
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Stateful</literal> annotation identifies this "
+"class as a stateful session bean. Stateful session beans are scoped to the "
+"conversation context by default."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:991
+#, no-c-format
+msgid ""
+"The <literal>@LoggedIn</literal> annotation applies a custom Seam "
+"interceptor to the component. This works because <literal>@LoggedIn</"
+"literal> is marked with an <literal>@Interceptor</literal> meta-annotation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:996
+#, no-c-format
+msgid ""
+"The <link linkend=\"datamodel-annotation\"><literal>@DataModel</literal></"
+"link> annotation exposes a <literal>List</literal> as a JSF "
+"<literal>ListDataModel</literal>. This makes it easy to implement clickable "
+"lists for search screens. In this case, the list of hotels is exposed to the "
+"page as a <literal>ListDataModel</literal> in the conversation variable "
+"named <literal>hotels</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1001
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Remove</literal> annotation specifies that a "
+"stateful session bean should be removed and its state destroyed after "
+"invocation of the annotated method. In Seam, all stateful session beans "
+"should define a method marked <literal>@Destroy @Remove</literal>. This is "
+"the EJB remove method that will be called when Seam destroys the session "
+"context. Actually, the <link linkend=\"destroy-annotation"
+"\"><literal>@Destroy</literal></link> annotation is of more general "
+"usefulness, since it can be used for any kind of cleanup that should happen "
+"when any Seam context ends. If you don't have an <literal>@Destroy @Remove</"
+"literal> method, state will leak and you will suffer performance problems."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1008
+#, no-c-format
+msgid ""
+"The main page of the application is a Facelets page. Let's look at the "
+"fragment which relates to searching for hotels:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1018
+#, no-c-format
+msgid ""
+"&lt;div class=\"section\"&gt;\n"
+"&lt;h:form&gt;\n"
+"  \n"
+"  &lt;span class=\"errors\"&gt;\n"
+"    &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"  &lt;/span&gt;\n"
+"    \n"
+"  &lt;h1&gt;Search Hotels&lt;/h1&gt;\n"
+"  &lt;fieldset&gt; \n"
+"     &lt;h:inputText value=\"#{hotelSearch.searchString}\" style=\"width: "
+"165px;\"&gt;\n"
+"        &lt;a:support event=\"onkeyup\" actionListener=\"#{hotelSearch.find}"
+"\" \n"
+"                   reRender=\"searchResults\" /&gt;\n"
+"     &lt;/h:inputText&gt;\n"
+"     &amp;#160;\n"
+"     &lt;a:commandButton value=\"Find Hotels\" action=\"#{hotelSearch.find}"
+"\" \n"
+"                      styleClass=\"button\" reRender=\"searchResults\"/&gt;\n"
+"     &amp;#160;\n"
+"     &lt;a:status&gt;\n"
+"        &lt;f:facet name=\"start\"&gt;\n"
+"           &lt;h:graphicImage value=\"/img/spinner.gif\"/&gt;\n"
+"        &lt;/f:facet&gt;\n"
+"     &lt;/a:status&gt;\n"
+"     &lt;br/&gt;\n"
+"     &lt;h:outputLabel for=\"pageSize\"&gt;Maximum results:&lt;/h:"
+"outputLabel&gt;&amp;#160;\n"
+"     &lt;h:selectOneMenu value=\"#{hotelSearch.pageSize}\" id=\"pageSize"
+"\"&gt;\n"
+"        &lt;f:selectItem itemLabel=\"5\" itemValue=\"5\"/&gt;\n"
+"        &lt;f:selectItem itemLabel=\"10\" itemValue=\"10\"/&gt;\n"
+"        &lt;f:selectItem itemLabel=\"20\" itemValue=\"20\"/&gt;\n"
+"     &lt;/h:selectOneMenu&gt;\n"
+"  &lt;/fieldset&gt;\n"
+"    \n"
+"&lt;/h:form&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;a:outputPanel id=\"searchResults\"&gt;\n"
+"  &lt;div class=\"section\"&gt;\n"
+"  &lt;h:outputText value=\"No Hotels Found\" \n"
+"                rendered=\"#{hotels != null and hotels.rowCount==0}\"/&gt;\n"
+"  &lt;h:dataTable value=\"#{hotels}\" var=\"hot\" rendered=\"#{hotels."
+"rowCount&gt;0}\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Name&lt;/f:facet&gt;\n"
+"      #{hot.name}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Address&lt;/f:facet&gt;\n"
+"      #{hot.address}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;City, State&lt;/f:facet&gt;\n"
+"      #{hot.city}, #{hot.state}, #{hot.country}\n"
+"    &lt;/h:column&gt; \n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Zip&lt;/f:facet&gt;\n"
+"      #{hot.zip}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"      &lt;s:link value=\"View Hotel\" action=\"#{hotelBooking.selectHotel"
+"(hot)}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"  &lt;/h:dataTable&gt;\n"
+"  &lt;s:link value=\"More results\" action=\"#{hotelSearch.nextPage}\" \n"
+"          rendered=\"#{hotelSearch.nextPageAvailable}\"/&gt;\n"
+"  &lt;/div&gt;\n"
+"&lt;/a:outputPanel&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1021
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:support&gt;</literal> tag allows a JSF action "
+"event listener to be called by asynchronous <literal>XMLHttpRequest</"
+"literal> when a JavaScript event like <literal>onkeyup</literal> occurs. "
+"Even better, the <literal>reRender</literal> attribute lets us render a "
+"fragment of the JSF page and perform a partial page update when the "
+"asynchronous response is received."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1026
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:status&gt;</literal> tag lets us display a "
+"cheesy annimated image while we wait for asynchronous requests to return."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1031
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:outputPanel&gt;</literal> tag defines a region "
+"of the page which can be re-rendered by an asynchronous request."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1036
+#, no-c-format
+msgid ""
+"The Seam <literal>&lt;s:link&gt;</literal> tag lets us attach a JSF action "
+"listener to an ordinary (non-JavaScript) HTML link. The advantage of this "
+"over the standard JSF <literal>&lt;h:commandLink&gt;</literal> is that it "
+"preserves the operation of \"open in new window\" and \"open in new tab\". "
+"Also notice that we use a method binding with a parameter: <literal>#"
+"{hotelBooking.selectHotel(hot)}</literal>. This is not possible in the "
+"standard Unified EL, but Seam provides an extension to the EL that lets you "
+"use parameters on any method binding expression."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1043
+#, no-c-format
+msgid ""
+"This page displays the search results dynamically as we type, and lets us "
+"choose a hotel and pass it to the <literal>selectHotel()</literal> method of "
+"the <literal>HotelBookingAction</literal>, which is where the "
+"<emphasis>really</emphasis> interesting stuff is going to happen."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1046
+#, no-c-format
+msgid ""
+"Now lets see how the booking example application uses a conversation-scoped "
+"stateful session bean to achieve a natural cache of persistent data related "
+"to the conversation. The following code example is pretty long. But if you "
+"think of it as a list of scripted actions that implement the various steps "
+"of the conversation, it's understandable. Read the class from top to bottom, "
+"as if it were a story."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1057
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"hotelBooking\")\n"
+"@LoggedIn\n"
+"public class HotelBookingAction implements HotelBooking\n"
+"{\n"
+"   \n"
+"   @PersistenceContext(type=EXTENDED)\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @In \n"
+"   private User user;\n"
+"   \n"
+"   @In(required=false) @Out\n"
+"   private Hotel hotel;\n"
+"   \n"
+"   @In(required=false) \n"
+"   @Out(required=false)\n"
+"   private Booking booking;\n"
+"     \n"
+"   @In\n"
+"   private FacesMessages facesMessages;\n"
+"      \n"
+"   @In\n"
+"   private Events events;\n"
+"   \n"
+"   @Logger \n"
+"   private Log log;\n"
+"   \n"
+"   @Begin\n"
+"   public String selectHotel(Hotel selectedHotel)\n"
+"   {\n"
+"      hotel = em.merge(selectedHotel);\n"
+"      return \"hotel\";\n"
+"   }\n"
+"   \n"
+"   public String bookHotel()\n"
+"   {      \n"
+"      booking = new Booking(hotel, user);\n"
+"      Calendar calendar = Calendar.getInstance();\n"
+"      booking.setCheckinDate( calendar.getTime() );\n"
+"      calendar.add(Calendar.DAY_OF_MONTH, 1);\n"
+"      booking.setCheckoutDate( calendar.getTime() );\n"
+"      \n"
+"      return \"book\";\n"
+"   }\n"
+"\n"
+"   public String setBookingDetails()\n"
+"   {\n"
+"      if (booking==null || hotel==null) return \"main\";\n"
+"      if ( !booking.getCheckinDate().before( booking.getCheckoutDate() ) )\n"
+"      {\n"
+"         facesMessages.add(\"Check out date must be later than check in date"
+"\");\n"
+"         return null;\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return \"confirm\";\n"
+"      }\n"
+"   }\n"
+"\n"
+"   @End\n"
+"   public String confirm()\n"
+"   {\n"
+"      if (booking==null || hotel==null) return \"main\";\n"
+"      em.persist(booking);\n"
+"      facesMessages.add\n"
+"          (\"Thank you, #{user.name}, your confimation number for #{hotel."
+"name} is #{booking.id}\");\n"
+"      log.info(\"New booking: #{booking.id} for #{user.username}\");\n"
+"      events.raiseEvent(\"bookingConfirmed\");\n"
+"      return \"confirmed\";\n"
+"   }\n"
+"   \n"
+"   @End\n"
+"   public String cancel()\n"
+"   {\n"
+"      return \"main\";\n"
+"   }\n"
+"   \n"
+"   @Destroy @Remove\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1060
+#, no-c-format
+msgid ""
+"This bean uses an EJB3 <emphasis>extended persistence context</emphasis>, so "
+"that any entity instances remain managed for the whole lifecycle of the "
+"stateful session bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1065
+#, no-c-format
+msgid ""
+"The <link linkend=\"out-annotation\"><literal>@Out</literal></link> "
+"annotation declares that an attribute value is <emphasis>outjected</"
+"emphasis> to a context variable after method invocations. In this case, the "
+"context variable named <literal>hotel</literal> will be set to the value of "
+"the <literal>hotel</literal> instance variable after every action listener "
+"invocation completes."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1070
+#, no-c-format
+msgid ""
+"The <link linkend=\"begin-annotation\"><literal>@Begin</literal></link> "
+"annotation specifies that the annotated method begins a <emphasis>long-"
+"running conversation</emphasis>, so the current conversation context will "
+"not be destroyed at the end of the request. Instead, it will be reassociated "
+"with every request from the current window, and destroyed either by timeout "
+"due to conversation inactivity or invocation of a matching <literal>@End</"
+"literal> method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1075
+#, no-c-format
+msgid ""
+"The <link linkend=\"end-annotation\"><literal>@End</literal></link> "
+"annotation specifies that the annotated method ends the current long-running "
+"conversation, so the current conversation context will be destroyed at the "
+"end of the request."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1080
+#, no-c-format
+msgid ""
+"This EJB remove method will be called when Seam destroys the conversation "
+"context. Don't ever forget to define this method!"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1087
+#, no-c-format
+msgid ""
+"<literal>HotelBookingAction</literal> contains all the action listener "
+"methods that implement selection, booking and booking confirmation, and "
+"holds state related to this work in its instance variables. We think you'll "
+"agree that this code is much cleaner and simpler than getting and setting "
+"<literal>HttpSession</literal> attributes."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1090
+#, no-c-format
+msgid ""
+"Even better, a user can have multiple isolated conversations per login "
+"session. Try it! Log in, run a search, and navigate to different hotel pages "
+"in multiple browser tabs. You'll be able to work on creating two different "
+"hotel reservations at the same time. If you leave any one conversation "
+"inactive for long enough, Seam will eventually time out that conversation "
+"and destroy its state. If, after ending a conversation, you backbutton to a "
+"page of that conversation and try to perform an action, Seam will detect "
+"that the conversation was already ended, and redirect you to the search page."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1096
+#, no-c-format
+msgid "The Seam UI control library"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1097
+#, no-c-format
+msgid ""
+"If you check inside the WAR file for the booking application, you'll find "
+"<literal>seam-ui.jar</literal> in the <literal>WEB-INF/lib</literal> "
+"directory. This package contains a number of JSF custom controls that "
+"integrate with Seam. The booking application uses the <literal>&lt;s:link&gt;"
+"</literal> control for navigation from the search screen to the hotel page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1100
+#, no-c-format
+msgid ""
+"&lt;s:link value=\"View Hotel\" action=\"#{hotelBooking.selectHotel}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1101
+#, no-c-format
+msgid ""
+"The use of <literal>&lt;s:link&gt;</literal> here allows us to attach an "
+"action listener to a HTML link without breaking the browser's \"open in new "
+"window\" feature. The standard JSF <literal>&lt;h:commandLink&gt;</literal> "
+"does not work with \"open in new window\". We'll see later that <literal>&lt;"
+"s:link&gt;</literal> also offers a number of other useful features, "
+"including conversation propagation rules."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1104
+#, no-c-format
+msgid ""
+"The booking application uses some other Seam and Ajax4JSF controls, "
+"especially on the <literal>/book.xhtml</literal> page. We won't get into the "
+"details of those controls here, but if you want to understand this code, "
+"please refer to the chapter covering Seam's functionality for JSF form "
+"validation."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1110
+#, no-c-format
+msgid "The Seam Debug Page"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1111
+#, no-c-format
+msgid ""
+"The WAR also includes <literal>seam-debug.jar</literal>. If this jar is "
+"deployed in <literal>WEB-INF/lib</literal>, along with the Facelets, and if "
+"you set the following Seam property in <literal>web.xml</literal> or "
+"<literal>seam.properties</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1114
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;org.jboss.seam.core.init.debug&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;true&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1115
+#, no-c-format
+msgid ""
+"Then the Seam debug page will be available. This page lets you browse and "
+"inspect the Seam components in any of the Seam contexts associated with your "
+"current login session. Just point your browser at <ulink url=\"http://"
+"localhost:8080/seam-booking/debug.seam\"><literal>http://localhost:8080/seam-"
+"booking/debug.seam</literal></ulink>."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1131
+#, no-c-format
+msgid "A complete application featuring Seam and jBPM: the DVD Store example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1132
+#, no-c-format
+msgid ""
+"The DVD Store demo application shows the practical usage of jBPM for both "
+"task management and pageflow."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1135
+#, no-c-format
+msgid ""
+"The user screens take advantage of a jPDL pageflow to implement searching "
+"and shopping cart functionality."
+msgstr ""
+
+#. Tag: screeninfo
+#: Tutorial.xml:1138 Tutorial.xml:1149 Tutorial.xml:1170
+#, no-c-format
+msgid "DVD Store example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1146
+#, no-c-format
+msgid ""
+"The administration screens take use jBPM to manage the approval and shipping "
+"cycle for orders. The business process may even be changed dynamically, by "
+"selecting a different process definition!"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1160
+#, no-c-format
+msgid "Look in the <literal>dvdstore</literal> directory."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1166
+#, no-c-format
+msgid ""
+"A complete application featuring Seam workspace management: the Issue "
+"Tracker example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1167
+#, no-c-format
+msgid ""
+"The Issue Tracker demo shows off Seam's workspace management functionality: "
+"the conversation switcher, conversation list and breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1181
+#, no-c-format
+msgid "Look in the <literal>issues</literal> directory."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1187
+#, no-c-format
+msgid "An example of Seam with Hibernate: the Hibernate Booking example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1188
+#, no-c-format
+msgid ""
+"The Hibernate Booking demo is a straight port of the Booking demo to an "
+"alternative architecture that uses Hibernate for persistence and JavaBeans "
+"instead of session beans."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1194
+#, no-c-format
+msgid "Look in the <literal>hibernate</literal> directory."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1200
+#, no-c-format
+msgid "A RESTful Seam application: the Blog example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1201
+#, no-c-format
+msgid ""
+"Seam makes it very easy to implement applications which keep state on the "
+"server-side. However, server-side state is not always appropriate, "
+"especially in for functionality that serves up <emphasis>content</emphasis>. "
+"For this kind of problem we often need to let the user bookmark pages and "
+"have a relatively stateless server, so that any page can be accessed at any "
+"time, via the bookmark. The Blog example shows how to a implement RESTful "
+"application using Seam. Every page of the application can be bookmarked, "
+"including the search results page."
+msgstr ""
+
+#. Tag: screeninfo
+#: Tutorial.xml:1204
+#, no-c-format
+msgid "Blog example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1212
+#, no-c-format
+msgid ""
+"The Blog example demonstrates the use of \"pull\"-style MVC, where instead "
+"of using action listener methods to retrieve data and prepare the data for "
+"the view, the view pulls data from components as it is being rendered."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1216
+#, no-c-format
+msgid "Using \"pull\"-style MVC"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1217
+#, no-c-format
+msgid ""
+"This snippet from the <literal>index.xhtml</literal> facelets page displays "
+"a list of recent blog entries:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1220
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{blog.recentBlogEntries}\" var=\"blogEntry\" rows="
+"\"3\"&gt;\n"
+"   &lt;h:column&gt;\n"
+"      &lt;div class=\"blogEntry\"&gt;\n"
+"         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"         &lt;div&gt;\n"
+"            &lt;h:outputText escape=\"false\" \n"
+"                  value=\"#{blogEntry.excerpt==null ? blogEntry.body : "
+"blogEntry.excerpt}\"/&gt;\n"
+"         &lt;/div&gt;\n"
+"         &lt;p&gt;\n"
+"            &lt;h:outputLink value=\"entry.seam\" rendered=\"#{blogEntry."
+"excerpt!=null}\"&gt;\n"
+"               &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/"
+"&gt;\n"
+"               Read more...\n"
+"            &lt;/h:outputLink&gt;\n"
+"         &lt;/p&gt;\n"
+"         &lt;p&gt;\n"
+"            [Posted on \n"
+"            &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"               &lt;f:convertDateTime timeZone=\"#{blog.timeZone}\" locale=\"#"
+"{blog.locale}\" \n"
+"                   type=\"both\"/&gt;\n"
+"            &lt;/h:outputText&gt;]\n"
+"            &amp;#160;\n"
+"            &lt;h:outputLink value=\"entry.seam\"&gt;[Link]\n"
+"               &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/"
+"&gt;\n"
+"            &lt;/h:outputLink&gt;\n"
+"         &lt;/p&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1221
+#, no-c-format
+msgid ""
+"If we navigate to this page from a bookmark, how does the data used by the "
+"<literal>&lt;h:dataTable&gt;</literal> actually get initialized? Well, what "
+"happens is that the <literal>Blog</literal> is retrieved lazily&mdash;"
+"\"pulled\"&mdash;when needed, by a Seam component named <literal>blog</"
+"literal>. This is the opposite flow of control to what is usual in "
+"traditional web action-based frameworks like Struts."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1229
+#, no-c-format
+msgid ""
+"@Name(\"blog\")\n"
+"@Scope(ScopeType.STATELESS)\n"
+"public class BlogService \n"
+"{\n"
+"   \n"
+"   @In\n"
+"   private EntityManager entityManager;\n"
+"  \n"
+"   @Unwrap\n"
+"   public Blog getBlog()\n"
+"   {\n"
+"      return (Blog) entityManager.createQuery(\"from Blog b left join fetch "
+"b.blogEntries\")\n"
+"            .setHint(\"org.hibernate.cacheable\", true)\n"
+"            .getSingleResult();\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1232
+#, no-c-format
+msgid ""
+"This component uses a <emphasis>seam-managed persistence context</emphasis>. "
+"Unlike the other examples we've seen, this persistence context is managed by "
+"Seam, instead of by the EJB3 container. The persistence context spans the "
+"entire web request, allowing us to avoid any exceptions that occur when "
+"accessing unfetched associations in the view."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1237
+#, no-c-format
+msgid ""
+"The <literal>@Unwrap</literal> annotation tells Seam to provide the return "
+"value of the method&mdash;the <literal>Blog</literal>&mdash;instead of the "
+"actual <literal>BlogService</literal> component to clients. This is the Seam "
+"<emphasis>manager component pattern</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1244
+#, no-c-format
+msgid ""
+"This is good so far, but what about bookmarking the result of form "
+"submissions, such as a search results page?"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1250
+#, no-c-format
+msgid "Bookmarkable search results page"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1251
+#, no-c-format
+msgid ""
+"The blog example has a tiny form in the top right of each page that allows "
+"the user to search for blog entries. This is defined in a file, "
+"<literal>menu.xhtml</literal>, included by the facelets template, "
+"<literal>template.xhtml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1254
+#, no-c-format
+msgid ""
+"&lt;div id=\"search\"&gt;\n"
+"   &lt;h:form&gt;\n"
+"      &lt;h:inputText value=\"#{searchAction.searchPattern}\"/&gt;\n"
+"      &lt;h:commandButton value=\"Search\" action=\"/search.xhtml\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1255
+#, no-c-format
+msgid ""
+"To implement a bookmarkable search results page, we need to perform a "
+"browser redirect after processing the search form submission. Because we "
+"used the JSF view id as the action outcome, Seam automatically redirects to "
+"the view id when the form is submitted. Alternatively, we could have defined "
+"a navigation rule like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1258
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"   &lt;navigation-case&gt;\n"
+"      &lt;from-outcome&gt;searchResults&lt;/from-outcome&gt;\n"
+"      &lt;to-view-id&gt;/search.xhtml&lt;/to-view-id&gt;\n"
+"      &lt;redirect/&gt;\n"
+"   &lt;/navigation-case&gt;\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1259
+#, no-c-format
+msgid "Then the form would have looked like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1262
+#, no-c-format
+msgid ""
+"&lt;div id=\"search\"&gt;\n"
+"   &lt;h:form&gt;\n"
+"      &lt;h:inputText value=\"#{searchAction.searchPattern}\"/&gt;\n"
+"      &lt;h:commandButton value=\"Search\" action=\"searchResults\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1263
+#, no-c-format
+msgid ""
+"But when we redirect, we need to include the values submitted with the form "
+"as request parameters, to get a bookmarkable URL like <literal>http://"
+"localhost:8080/seam-blog/search.seam?searchPattern=seam</literal>. JSF does "
+"not provide an easy way to do this, but Seam does. We use a Seam "
+"<emphasis>page parameter</emphasis>, defined in <literal>WEB-INF/pages.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1266
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   &lt;page view-id=\"/search.xhtml\"&gt;\n"
+"      &lt;param name=\"searchPattern\" value=\"#{searchService.searchPattern}"
+"\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1267
+#, no-c-format
+msgid ""
+"This tells Seam to include the value of <literal>#{searchService."
+"searchPattern}</literal> as a request parameter named "
+"<literal>searchPattern</literal> when redirecting to the page, and then re-"
+"apply the value of that parameter to the model before rendering the page."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1270
+#, no-c-format
+msgid "The redirect takes us to the <literal>search.xhtml</literal> page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1273
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{searchResults}\" var=\"blogEntry\"&gt;\n"
+"   &lt;h:column&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:outputLink value=\"entry.seam\"&gt;\n"
+"            &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"            #{blogEntry.title}\n"
+"         &lt;/h:outputLink&gt;\n"
+"         posted on \n"
+"         &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"            &lt;f:convertDateTime timeZone=\"#{blog.timeZone}\" locale=\"#"
+"{blog.locale}\" type=\"both\"/&gt;\n"
+"         &lt;/h:outputText&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1274
+#, no-c-format
+msgid ""
+"Which again uses \"pull\"-style MVC to retrieve the actual search results:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1277
+#, no-c-format
+msgid ""
+"@Name(\"searchService\")\n"
+"public class SearchService \n"
+"{\n"
+"   \n"
+"   @In\n"
+"   private EntityManager entityManager;\n"
+"   \n"
+"   private String searchPattern;\n"
+"   \n"
+"   @Factory(\"searchResults\")\n"
+"   public List&lt;BlogEntry&gt; getSearchResults()\n"
+"   {\n"
+"      if (searchPattern==null)\n"
+"      {\n"
+"         return null;\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return entityManager.createQuery(\"select be from BlogEntry be "
+"where lower(be.title)\n"
+"             like :searchPattern or lower(be.body) like :searchPattern \n"
+"             order by be.date desc\")\n"
+"               .setParameter( \"searchPattern\", getSqlSearchPattern() )\n"
+"               .setMaxResults(100)\n"
+"               .getResultList();\n"
+"      }\n"
+"   }\n"
+"\n"
+"   private String getSqlSearchPattern()\n"
+"   {\n"
+"      return searchPattern==null ? \"\" : '&#37;' + \n"
+"          searchPattern.toLowerCase().replace('*', '&#37;').replace('?', "
+"'_') + '&#37;';\n"
+"   }\n"
+"\n"
+"   public String getSearchPattern()\n"
+"   {\n"
+"      return searchPattern;\n"
+"   }\n"
+"\n"
+"   public void setSearchPattern(String searchPattern)\n"
+"   {\n"
+"      this.searchPattern = searchPattern;\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1282
+#, no-c-format
+msgid "Using \"push\"-style MVC in a RESTful application"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1283
+#, no-c-format
+msgid ""
+"Very occasionally, it makes more sense to use push-style MVC for processing "
+"RESTful pages, and so Seam provides the notion of a <emphasis>page action</"
+"emphasis>. The Blog example uses a page action for the blog entry page, "
+"<literal>entry.xhtml</literal>. Note that this is a little bit contrived, it "
+"would have been easier to use pull-style MVC here as well."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1286
+#, no-c-format
+msgid ""
+"The <literal>entryAction</literal> component works much like an action class "
+"in a traditional push-MVC action-oriented framework like Struts:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1289
+#, no-c-format
+msgid ""
+"@Name(\"entryAction\")\n"
+"@Scope(STATELESS)\n"
+"public class EntryAction\n"
+"{\n"
+"   @In(create=true) \n"
+"   private Blog blog;\n"
+"   \n"
+"   @Out\n"
+"   private BlogEntry blogEntry;\n"
+"   \n"
+"   public void loadBlogEntry(String id) throws EntryNotFoundException\n"
+"   {\n"
+"      blogEntry = blog.getBlogEntry(id);\n"
+"      if (blogEntry==null) throw new EntryNotFoundException(id);\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1290
+#, no-c-format
+msgid "Page actions are also declared in <literal>pages.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1293
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   ...\n"
+"\n"
+"   &lt;page view-id=\"/entry.xhtml\" action=\"#{entryAction.loadBlogEntry"
+"(blogEntry.id)}\"&gt;\n"
+"      &lt;param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"\n"
+"   &lt;page view-id=\"/post.xhtml\" action=\"#{loginAction.challenge}\"/"
+"&gt;\n"
+"\n"
+"   &lt;page view-id=\"*\" action=\"#{blog.hitCount.hit}\"/&gt;\n"
+"\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1294
+#, no-c-format
+msgid ""
+"Notice that the example is using page actions for some other "
+"functionality&mdash;the login challenge, and the pageview counter. Also "
+"notice the use of a parameter in the page action method binding. This is not "
+"a standard feature of JSF EL, but Seam lets you use it, not just for page "
+"actions, but also in JSF method bindings."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1297
+#, no-c-format
+msgid ""
+"When the <literal>entry.xhtml</literal> page is requested, Seam first binds "
+"the page parameter <literal>blogEntryId</literal> to the model, then runs "
+"the page action, which retrieves the needed data&mdash;the "
+"<literal>blogEntry</literal>&mdash;and places it in the Seam event context. "
+"Finally, the following is rendered:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1300
+#, no-c-format
+msgid ""
+"&lt;div class=\"blogEntry\"&gt;\n"
+"   &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"   &lt;div&gt;\n"
+"      &lt;h:outputText escape=\"false\" value=\"#{blogEntry.body}\"/&gt;\n"
+"   &lt;/div&gt;\n"
+"   &lt;p&gt;\n"
+"      [Posted on&amp;#160;\n"
+"      &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"         &lt;f:convertDateTime timezone=\"#{blog.timeZone}\" locale=\"#{blog."
+"locale}\" type=\"both\"/&gt;\n"
+"      &lt;/h:outputText&gt;]\n"
+"   &lt;/p&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1301
+#, no-c-format
+msgid ""
+"If the blog entry is not found in the database, the "
+"<literal>EntryNotFoundException</literal> exception is thrown. We want this "
+"exception to result in a 404 error, not a 505, so we annotate the exception "
+"class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1304
+#, no-c-format
+msgid ""
+"@ApplicationException(rollback=true)\n"
+"@HttpError(errorCode=HttpServletResponse.SC_NOT_FOUND)\n"
+"public class EntryNotFoundException extends Exception\n"
+"{\n"
+"   EntryNotFoundException(String id)\n"
+"   {\n"
+"      super(\"entry not found: \" + id);\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1305
+#, no-c-format
+msgid ""
+"An alternative implementation of the example does not use the parameter in "
+"the method binding:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1308
+#, no-c-format
+msgid ""
+"@Name(\"entryAction\")\n"
+"@Scope(STATELESS)\n"
+"public class EntryAction\n"
+"{\n"
+"   @In(create=true) \n"
+"   private Blog blog;\n"
+"   \n"
+"   @In @Out\n"
+"   private BlogEntry blogEntry;\n"
+"   \n"
+"   public void loadBlogEntry() throws EntryNotFoundException\n"
+"   {\n"
+"      blogEntry = blog.getBlogEntry( blogEntry.getId() );\n"
+"      if (blogEntry==null) throw new EntryNotFoundException(id);\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1309
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   ...\n"
+"\n"
+"   &lt;page view-id=\"/entry.xhtml\" action=\"#{entryAction.loadBlogEntry}"
+"\"&gt;\n"
+"      &lt;param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1310
+#, no-c-format
+msgid "It is a matter of taste which implementation you prefer."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1318
+#, no-c-format
+msgid "Running the Seam examples in JBoss using the JSF 1.2 RI"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1319
+#, no-c-format
+msgid ""
+"JBoss AS 4.0 ships with the Apache MyFaces implementation of JSF 1.1. After "
+"many months of waiting, there is <emphasis>still</emphasis> no "
+"implementation of JSF 1.2 from MyFaces. For this and other reasons, JBoss AS "
+"4.2 will embed the JSF 1.2 Reference Implementation by default. Soon after "
+"the release of 4.2, we will migrate the Seam examples to JSF 1.2."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1322
+#, no-c-format
+msgid ""
+"For those who can't wait, Seam is already compatible with JSF 1.2, and it's "
+"easy to get the Seam examples running with JSF 1.2 in JBoss 4.0.5. Let's "
+"start with the famous booking example:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1327
+#, no-c-format
+msgid ""
+"copy <literal>jsf-api.jar</literal>, <literal>jsf-impl.jar</literal>, "
+"<literal>el-api.jar</literal>, <literal>el-impl.jar</literal> to "
+"<literal>server/default/deploy/tomcat/jbossweb-tomcat55.sar/jsf-libs</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1332
+#, no-c-format
+msgid ""
+"delete <literal>myfaces-api.jar</literal> and <literal>myfaces-impl.jar</"
+"literal> from <literal>server/default/deploy/tomcat/jbossweb-tomcat55.sar/"
+"jsf-libs</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1337
+#, no-c-format
+msgid ""
+"edit <literal>server/default/deploy/tomcat/jbossweb-tomcat55.sar/conf/web."
+"xml</literal>, replacing <literal>myfaces-impl.jar</literal> with "
+"<literal>jsf-impl.jar</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1342
+#, no-c-format
+msgid ""
+"edit <literal>examples/booking/resources/WEB-INF/web.xml</literal>, deleting "
+"the MyFaces listener, uncommenting the RI listener"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1347
+#, no-c-format
+msgid ""
+"edit <literal>examples/booking/resources/WEB-INF/faces-config.xml</literal>, "
+"uncommenting the lines that install the <literal>SeamELResolver</literal> "
+"using the new JSF 1.2 XML schema declaration."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1352
+#, no-c-format
+msgid ""
+"edit <literal>examples/booking/resources/META-INF/application.xml</literal>, "
+"deleting the lines that declare <literal>el-api.jar</literal> and "
+"<literal>el-impl.jar</literal> as Java modules."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1357
+#, no-c-format
+msgid ""
+"Restart JBoss, and type <literal>ant</literal> in the <literal>examples/"
+"booking</literal> directory."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Validation.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Validation.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Validation.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,375 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Validation.xml:10
+#, no-c-format
+msgid "JSF form validation in Seam"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:11
+#, no-c-format
+msgid "In plain JSF, validation is defined in the view:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:14
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Country:\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;my:validateCountry/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Zip code:\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;my:validateZip/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:15
+#, no-c-format
+msgid ""
+"In practice, this approach usually violates DRY, since most \"validation\" "
+"actually enforces constraints that are part of the data model, and exist all "
+"the way down to the database schema definition. Seam provides support for "
+"model-based constraints defined using Hibernate Validator."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:18
+#, no-c-format
+msgid ""
+"Let's start by defining our constraints, on our <literal>Location</literal> "
+"class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:21
+#, no-c-format
+msgid ""
+"public class Location {\n"
+"    private String country;\n"
+"    private String zip;\n"
+"    \n"
+"    @NotNull\n"
+"    @Length(max=30)\n"
+"    public String getCountry() { return country; }\n"
+"    public void setCountry(String c) { country = c; }\n"
+"\n"
+"    @NotNull\n"
+"    @Length(max=6)\n"
+"    @Pattern(\"^&#92;d*&#36;\")\n"
+"    public String getZip() { return zip; }\n"
+"    public void setZip(String z) { zip = z; }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:22
+#, no-c-format
+msgid ""
+"Well, that's a decent first cut, but in practice it might be more elegant to "
+"use custom constraints instead of the ones built into Hibernate Validator:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:25
+#, no-c-format
+msgid ""
+"public class Location {\n"
+"    private String country;\n"
+"    private String zip;\n"
+"    \n"
+"    @NotNull\n"
+"    @Country\n"
+"    public String getCountry() { return country; }\n"
+"    public void setCountry(String c) { country = c; }\n"
+"\n"
+"    @NotNull\n"
+"    @ZipCode\n"
+"    public String getZip() { return zip; }\n"
+"    public void setZip(String z) { zip = z; }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:26
+#, no-c-format
+msgid ""
+"Whichever route we take, we no longer need to specify the type of validation "
+"to be used in the JSF page. Instead, we can use <literal>&lt;s:validate&gt;</"
+"literal> to validate against the constraint defined on the model object."
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:29
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Country:\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;s:validate/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Zip code:\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;s:validate/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:30
+#, no-c-format
+msgid ""
+"<emphasis>Note:</emphasis> specifying <literal>@NotNull</literal> on the "
+"model does <emphasis>not</emphasis> eliminate the requirement for "
+"<literal>required=\"true\"</literal> to appear on the control! This is due "
+"to a limitation of the JSF validation architecture."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:33
+#, no-c-format
+msgid ""
+"This version is not much less verbose than what we started with, so let's "
+"try <literal>&lt;s:validateAll&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:36
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;h:inputText value=\"#{location.country}\" required=\"true\"/"
+"&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/"
+"&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:37
+#, no-c-format
+msgid ""
+"This tag simply adds an <literal>&lt;s:validate&gt;</literal> to every input "
+"in the form. For a large form, it can save a lot of typing!"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:40
+#, no-c-format
+msgid ""
+"Now we need to do something about displaying feedback to the user when "
+"validation fails. Currently we are displaying all messages at the top of the "
+"form. What we would really like to do is display the message next to the "
+"field with the error (this is possible in plain JSF), highlight the field "
+"(this is not possible) and, for good measure, display some image next the "
+"the field (also not possible)."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:43
+#, no-c-format
+msgid "Let's try out <literal>&lt;s:decorate&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:46
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;s:decorate&gt;\n"
+"                &lt;f:facet name=\"beforeInvalidField\"&gt;&lt;h:"
+"graphicImage src=\"img/error.gif\"/&gt;&lt;/f:facet&gt;\n"
+"                &lt;f:facet name=\"afterInvalidField\"&gt;&lt;s:message/&gt;"
+"&lt;/f:facet&gt;\n"
+"                &lt;f:facet name=\"aroundInvalidField\"&gt;&lt;s:span "
+"styleClass=\"error\"/&gt;&lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{location.country}\" required=\"true"
+"\"/&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;s:decorate&gt;\n"
+"                &lt;f:facet name=\"beforeInvalidField\"&gt;&lt;h:"
+"graphicImage src=\"img/error.gif\"/&gt;&lt;/f:facet&gt;\n"
+"                &lt;f:facet name=\"afterInvalidField\"&gt;&lt;s:message/&gt;"
+"&lt;/f:facet&gt;\n"
+"                &lt;f:facet name=\"aroundInvalidField\"&gt;&lt;s:span "
+"styleClass=\"error\"/&gt;&lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/"
+"&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:47
+#, no-c-format
+msgid ""
+"Well, that looks much better to the user, but it is extremely verbose. "
+"Fortunately, the facets of <literal>&lt;s:decorate&gt;</literal> may be "
+"defined on any parent element:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:50
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;f:facet name=\"beforeInvalidField\"&gt;\n"
+"        &lt;h:graphicImage src=\"img/error.gif\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;f:facet name=\"afterInvalidField\"&gt;\n"
+"        &lt;s:message/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;f:facet name=\"aroundInvalidField\"&gt;\n"
+"        &lt;s:span styleClass=\"error\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;s:decorate&gt;\n"
+"                &lt;h:inputText value=\"#{location.country}\" required=\"true"
+"\"/&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;s:decorate&gt;\n"
+"                &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/"
+"&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:51
+#, no-c-format
+msgid ""
+"This approach <emphasis>defines</emphasis> constraints on the model, and "
+"<emphasis>presents</emphasis> constraint violations in the view&mdash;a "
+"significantly better design."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:54
+#, no-c-format
+msgid ""
+"Finally, we can use Ajax4JSF to display validation messages as the user is "
+"typing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:57
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;f:facet name=\"beforeInvalidField\"&gt;\n"
+"        &lt;h:graphicImage src=\"img/error.gif\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;f:facet name=\"afterInvalidField\"&gt;\n"
+"        &lt;s:message/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;f:facet name=\"aroundInvalidField\"&gt;\n"
+"        &lt;s:span styleClass=\"error\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;s:decorate id=\"country\"&gt;\n"
+"                &lt;h:inputText value=\"#{location.country}\" required=\"true"
+"\"&gt;\n"
+"                    &lt;a:support event=\"onblur\" reRender=\"country\"/"
+"&gt;\n"
+"                &lt;/h:inputText&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;s:decorate id=\"zip\"&gt;\n"
+"                &lt;h:inputText value=\"#{location.zip}\" required=\"true"
+"\"&gt;\n"
+"                    &lt;a:support event=\"onblur\" reRender=\"zip\"/&gt;\n"
+"                &lt;/h:inputText&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Xml.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Xml.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ml-IN/Xml.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,933 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Xml.xml:10
+#, no-c-format
+msgid "Configuring Seam components"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:11
+#, no-c-format
+msgid ""
+"The philosophy of minimizing XML-based configuration is extremely strong in "
+"Seam. Nevertheless, there are various reasons why we might want to configure "
+"a Seam component using XML: to isolate deployment-specific information from "
+"the Java code, to enable the creation of re-usable frameworks, to configure "
+"Seam's built-in functionality, etc. Seam provides two basic approaches to "
+"configuring components: configuration via property settings in a properties "
+"file or <literal>web.xml</literal>, and configuration via "
+"<literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:14
+#, no-c-format
+msgid "Configuring components via property settings"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:15
+#, no-c-format
+msgid ""
+"Seam components may be provided with configuration properties either via "
+"servlet context parameters, or via a properties file named <literal>seam."
+"properties</literal> in the root of the classpath."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:18
+#, no-c-format
+msgid ""
+"The configurable Seam component must expose JavaBeans-style property setter "
+"methods for the configurable attributes. If a seam component named "
+"<literal>com.jboss.myapp.settings</literal> has a setter method named "
+"<literal>setLocale()</literal>, we can provide a property named <literal>com."
+"jboss.myapp.settings.locale</literal> in the <literal>seam.properties</"
+"literal> file or as a servlet context parameter, and Seam will set the value "
+"of the <literal>locale</literal> attribute whenever it instantiates the "
+"component."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:21
+#, no-c-format
+msgid ""
+"The same mechanism is used to configure Seam itself. For example, to set the "
+"conversation timeout, we provide a value for <literal>org.jboss.seam.core."
+"manager.conversationTimeout</literal> in <literal>web.xml</literal> or "
+"<literal>seam.properties</literal>. (There is a built-in Seam component "
+"named <literal>org.jboss.seam.core.manager</literal> with a setter method "
+"named <literal>setConversationTimeout()</literal>.)"
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:24
+#, no-c-format
+msgid "Configuring components via components.xml"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:25
+#, no-c-format
+msgid ""
+"The <literal>components.xml</literal> file is a bit more powerful than "
+"property settings. It lets you:"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:30
+#, no-c-format
+msgid ""
+"Configure components that have been installed automatically&mdash;including "
+"both built-in components, and application components that have been "
+"annotated with the <literal>@Name</literal> annotation and picked up by "
+"Seam's deployment scanner."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:35
+#, no-c-format
+msgid ""
+"Install classes with no <literal>@Name</literal> annotation as Seam "
+"components&mdash;this is most useful for certain kinds of infrastructural "
+"components which can be installed multiple times different names (for "
+"example Seam-managed persistence contexts)."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:40
+#, no-c-format
+msgid ""
+"Install components that <emphasis>do</emphasis> have a <literal>@Name</"
+"literal> annotation but are not installed by default because of an "
+"<literal>@Install</literal> annotation that indicates the component should "
+"not be installed."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:45
+#, no-c-format
+msgid "Override the scope of a component."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:50
+#, no-c-format
+msgid ""
+"A <literal>components.xml</literal> file may appear in one of three "
+"different places:"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:55
+#, no-c-format
+msgid "The <literal>WEB-INF</literal> directory of a <literal>war</literal>."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:60
+#, no-c-format
+msgid "The <literal>META-INF</literal> directory of a <literal>jar</literal>."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:65
+#, no-c-format
+msgid ""
+"Any directory of a <literal>jar</literal> that contains classes with an "
+"<literal>@Name</literal> annotation."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:70
+#, no-c-format
+msgid ""
+"Usually, Seam components are installed when the deployment scanner discovers "
+"a class with a <literal>@Name</literal> annotation sitting in an archive "
+"with a <literal>seam.properties</literal> file or a <literal>META-INF/"
+"components.xml</literal> file. (Unless the component has an "
+"<literal>@Install</literal> annotation indicating it should not be installed "
+"by default.) The <literal>components.xml</literal> file lets us handle "
+"special cases where we need to override the annotations."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:73
+#, no-c-format
+msgid ""
+"For example, the following <literal>components.xml</literal> file installs "
+"the JBoss Embeddable EJB3 container:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:76
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"&gt;\n"
+"    &lt;core:ejb/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:77
+#, no-c-format
+msgid "This example does the same thing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:80
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component class=\"org.jboss.seam.core.Ejb\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:81
+#, no-c-format
+msgid ""
+"This one installs and configures two different Seam-managed persistence "
+"contexts:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:84
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"    &lt;core:managed-persistence-context name=\"customerDatabase\"\n"
+"                persistence-unit-jndi-name=\"java:/"
+"customerEntityManagerFactory\"/&gt;\n"
+"        \n"
+"    &lt;core:managed-persistence-context name=\"accountingDatabase\"\n"
+"                persistence-unit-jndi-name=\"java:/"
+"accountingEntityManagerFactory\"/&gt;            \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:85
+#, no-c-format
+msgid "As does this one:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:88
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component name=\"customerDatabase\" \n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"customerEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"    \n"
+"    &lt;component name=\"accountingDatabase\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"accountingEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:89
+#, no-c-format
+msgid ""
+"This example creates a session-scoped Seam-managed persistence context (this "
+"is not recommended in practice):"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:92
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"  &lt;core:managed-persistence-context name=\"productDatabase\" \n"
+"                                   scope=\"session\"\n"
+"              persistence-unit-jndi-name=\"java:/productEntityManagerFactory"
+"\"/&gt;        \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:93
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"            \n"
+"    &lt;component name=\"productDatabase\"\n"
+"              scope=\"session\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"productEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:94
+#, no-c-format
+msgid ""
+"It is common to use the <literal>auto-create</literal> option for "
+"infrastructural objects like persistence contexts, which saves you from "
+"having to explicitly specify <literal>create=true</literal> when you use the "
+"<literal>@In</literal> annotation."
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:97
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"  &lt;core:managed-persistence-context name=\"productDatabase\" \n"
+"                             auto-create=\"true\"\n"
+"              persistence-unit-jndi-name=\"java:/productEntityManagerFactory"
+"\"/&gt;        \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:98
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"            \n"
+"    &lt;component name=\"productDatabase\"\n"
+"        auto-create=\"true\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"productEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:99
+#, no-c-format
+msgid ""
+"The <literal>&lt;factory&gt;</literal> declaration lets you specify a value "
+"or method binding expression that will be evaluated to initialize the value "
+"of a context variable when it is first referenced."
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:102
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"contact\" method=\"#{contactManager.loadContact}\" "
+"scope=\"CONVERSATION\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:103
+#, no-c-format
+msgid ""
+"You can create an \"alias\" (a second name) for a Seam component like so:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:106
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"user\" value=\"#{actor}\" scope=\"STATELESS\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:107
+#, no-c-format
+msgid "You can even create an \"alias\" for a commonly used expression:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:110
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"contact\" value=\"#{contactManager.contact}\" scope="
+"\"STATELESS\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:111
+#, no-c-format
+msgid ""
+"It is especially common to see the use of <literal>auto-create=\"true\"</"
+"literal> with the <literal>&lt;factory&gt;</literal> declaration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:114
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"session\" value=\"#{entityManager.delegate}\" scope="
+"\"STATELESS\" \n"
+"        auto-create=\"true\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:115
+#, no-c-format
+msgid ""
+"Sometimes we want to reuse the same <literal>components.xml</literal> file "
+"with minor changes during both deployment and testing. Seam lets you place "
+"wildcards of the form <literal>@wildcard@</literal> in the "
+"<literal>components.xml</literal> file which can be replaced either by your "
+"Ant build script (at deployment time) or by providing a file named "
+"<literal>components.properties</literal> in the classpath (at development "
+"time). You'll see this approach used in the Seam examples."
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:118
+#, no-c-format
+msgid "Fine-grained configuration files"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:119
+#, no-c-format
+msgid ""
+"If you have a large number of components that need to be configured in XML, "
+"it makes much more sense to split up the information in <literal>components."
+"xml</literal> into many small files. Seam lets you put configuration for a "
+"class named, for example, <literal>com.helloworld.Hello</literal> in a "
+"resource named <literal>com/helloworld/Hello.component.xml</literal>. (You "
+"might be familiar with this pattern, since it is the same one we use in "
+"Hibernate.) The root element of the file may be either a <literal>&lt;"
+"components&gt;</literal> or <literal>&lt;component&gt;</literal> element."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:122
+#, no-c-format
+msgid "The first option lets you define multiple components in the file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:125
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component class=\"com.helloworld.Hello\" name=\"hello\"&gt;\n"
+"        &lt;property name=\"name\"&gt;#{user.name}&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"    &lt;factory name=\"message\" value=\"#{hello.message}\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:126
+#, no-c-format
+msgid ""
+"The second option only lets you define or configure one component, but is "
+"less noisy:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:129
+#, no-c-format
+msgid ""
+"&lt;component name=\"hello\"&gt;\n"
+"    &lt;property name=\"name\"&gt;#{user.name}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:130
+#, no-c-format
+msgid ""
+"In the second option, the class name is implied by the file in which the "
+"component definition appears."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:133
+#, no-c-format
+msgid ""
+"Alternatively, you may put configuration for all classes in the <literal>com."
+"helloworld</literal> package in <literal>com/helloworld/components.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:136
+#, no-c-format
+msgid "Configurable property types"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:137
+#, no-c-format
+msgid ""
+"Properties of string, primitive or primitive wrapper type may be configured "
+"just as you would expect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:140
+#, no-c-format
+msgid "org.jboss.seam.core.manager.conversationTimeout 60000"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:141
+#, no-c-format
+msgid "&lt;core:manager conversation-timeout=\"60000\"/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:142
+#, no-c-format
+msgid ""
+"&lt;component name=\"org.jboss.seam.core.manager\"&gt;\n"
+"    &lt;property name=\"conversationTimeout\"&gt;60000&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:143
+#, no-c-format
+msgid "Arrays, sets and lists of strings or primitives are also supported:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:146
+#, no-c-format
+msgid ""
+"org.jboss.seam.core.jbpm.processDefinitions order.jpdl.xml, return.jpdl.xml, "
+"inventory.jpdl.xml"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:147
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;order.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;return.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:148
+#, no-c-format
+msgid ""
+"&lt;component name=\"org.jboss.seam.core.jbpm\"&gt;\n"
+"    &lt;property name=\"processDefinitions\"&gt;\n"
+"        &lt;value&gt;order.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;return.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:149
+#, no-c-format
+msgid ""
+"Even maps with String-valued keys and string or primitive values are "
+"supported:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:152
+#, no-c-format
+msgid ""
+"&lt;component name=\"issueEditor\"&gt;\n"
+"    &lt;property name=\"issueStatuses\"&gt;\n"
+"        &lt;key&gt;open&lt;/key&gt; &lt;value&gt;open issue&lt;/value&gt;\n"
+"        &lt;key&gt;resolved&lt;/key&gt; &lt;value&gt;issue resolved by "
+"developer&lt;/value&gt;\n"
+"        &lt;key&gt;closed&lt;/key&gt; &lt;value&gt;resolution accepted by "
+"user&lt;/value&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:153
+#, no-c-format
+msgid ""
+"Finally, you may wire together components using a value-binding expression. "
+"Note that this is quite different to injection using <literal>@In</literal>, "
+"since it happens at component instantiation time instead of invocation time. "
+"It is therefore much more similar to the dependency injection facilities "
+"offered by traditional IoC containers like JSF or Spring."
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:156
+#, no-c-format
+msgid ""
+"&lt;drools:managed-working-memory name=\"policyPricingWorkingMemory\" rule-"
+"base=\"#{policyPricingRules}\"/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:157
+#, no-c-format
+msgid ""
+"&lt;component name=\"policyPricingWorkingMemory\"\n"
+"          class=\"org.jboss.seam.drools.ManagedWorkingMemory\"&gt;\n"
+"    &lt;property name=\"ruleBase\"&gt;#{policyPricingRules}&lt;/"
+"property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:158
+#, no-c-format
+msgid "Using XML Namespaces"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:159
+#, no-c-format
+msgid ""
+"Throughout the examples, there have been two competing ways of declaring "
+"components: with and without the use of XML namespaces. The following shows "
+"a typical <literal>components.xml</literal> file without namespaces. It uses "
+"the Seam Components DTD:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:162
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"&gt;\n"
+"&lt;!DOCTYPE components PUBLIC \"-//JBoss/Seam Component Configuration DTD "
+"1.2//EN\"\n"
+"                            \"http://jboss.com/products/seam/components-1.2."
+"dtd\"&gt;\n"
+"&lt;components&gt;\n"
+"\n"
+"    &lt;component class=\"org.jboss.seam.core.init\"&gt;\n"
+"        &lt;property name=\"debug\"&gt;true&lt;/property&gt;\n"
+"        &lt;property name=\"jndiPattern\"&gt;@jndiPattern@&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"    &lt;component name=\"org.jboss.sean.core.ejb\" installed=\"@embeddedEjb@"
+"\" /&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:163
+#, no-c-format
+msgid ""
+"As you can see, this is somewhat verbose. Even worse, the component and "
+"attribute names cannot be validated at development time."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:166
+#, no-c-format
+msgid "The namespaced version looks like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:169
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                http://jboss.com/products/seam/core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components \n"
+"                 http://jboss.com/products/seam/components-1.2.xsd\"&gt;\n"
+"\n"
+"    &lt;core:init debug=\"true\" jndi-pattern=\"@jndiPattern@\"/&gt;\n"
+"\n"
+"    &lt;core:ejb installed=\"@embeddedEjb@\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:170
+#, no-c-format
+msgid ""
+"Even though the schema declarations are verbose, the actual XML content is "
+"lean and easy to understand. The schemas provide detailed information about "
+"each component and the attributes available, allowing XML editors to offer "
+"intelligent autocomplete. The use of namespaced elements makes generating "
+"and maintaining correct <literal>components.xml</literal> files much simpler."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:173
+#, no-c-format
+msgid ""
+"Now, this works great for the built-in Seam components, but what about user "
+"components? There are two options. First, Seam supports mixing the two "
+"models, allowing the use of the generic <literal>&lt;component&gt;</literal> "
+"declarations for user components, along with namespaced declarations for "
+"built-in components. But even better, Seam allows you to quickly declare "
+"namespaces for your own components."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:176
+#, no-c-format
+msgid ""
+"Any Java package can be associated with an XML namespace by annotating the "
+"package with the <literal>@Namespace</literal> annotation. (Package-level "
+"annotations are declared in a file named <literal>package-info.java</"
+"literal> in the package directory.) Here is an example from the seampay demo:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:179
+#, no-c-format
+msgid ""
+"@Namespace(value=\"http://jboss.com/products/seam/examples/seampay\")\n"
+"package org.jboss.seam.example.seampay;\n"
+"\n"
+"import org.jboss.seam.annotations.Namespace;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:180
+#, no-c-format
+msgid ""
+"That is all you need to do to use the namespaced style in "
+"<literal>components.xml</literal>! Now we can write:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:183
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pay=\"http://jboss.com/products/seam/examples/seampay\"\n"
+"            ... &gt;\n"
+"\n"
+"    &lt;pay:payment-home new-instance=\"#{newPayment}\"\n"
+"                      created-message=\"Created a new payment to #"
+"{newPayment.payee}\" /&gt;\n"
+"\n"
+"    &lt;pay:payment name=\"newPayment\"\n"
+"                 payee=\"Somebody\"\n"
+"                 account=\"#{selectedAccount}\"\n"
+"                 payment-date=\"#{currentDatetime}\"\n"
+"                 created-date=\"#{currentDatetime}\" /&gt;\n"
+"     ...\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:184
+#, no-c-format
+msgid "<para>Or:</para>"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:187
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pay=\"http://jboss.com/products/seam/examples/seampay\"\n"
+"            ... &gt;\n"
+"\n"
+"    &lt;pay:payment-home&gt;\n"
+"        &lt;pay:new-instance&gt;\"#{newPayment}\"&lt;/pay:new-instance&gt;\n"
+"        &lt;pay:created-message&gt;Created a new payment to #{newPayment."
+"payee}&lt;/pay:created-message&gt;\n"
+"    &lt;/pay:payment-home&gt;\n"
+"    \n"
+"    &lt;pay:payment name=\"newPayment\"&gt;\n"
+"        &lt;pay:payee&gt;Somebody\"&lt;/pay:payee&gt;\n"
+"        &lt;pay:account&gt;#{selectedAccount}&lt;/pay:account&gt;\n"
+"        &lt;pay:payment-date&gt;#{currentDatetime}&lt;/pay:payment-date&gt;\n"
+"        &lt;pay:created-date&gt;#{currentDatetime}&lt;/pay:created-date&gt;\n"
+"     &lt;/pay:payment&gt;\n"
+"     ...\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:188
+#, no-c-format
+msgid ""
+"These examples illustrate the two usage models of a namespaced element. In "
+"the first declaration, the <literal>&lt;pay:payment-home&gt;</literal> "
+"references the <literal>paymentHome</literal> component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:191
+#, no-c-format
+msgid ""
+"package org.jboss.seam.example.seampay;\n"
+"...\n"
+"@Name(\"paymentHome\")\n"
+"public class PaymentController\n"
+"    extends EntityHome&lt;Payment&gt;\n"
+"{\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:192
+#, no-c-format
+msgid ""
+"The element name is the hyphenated form of the component name. The "
+"attributes of the element are the hyphenated form of the property names."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:195
+#, no-c-format
+msgid ""
+"In the second declaration, the <literal>&lt;pay:payment&gt;</literal> "
+"element refers to the <literal>Payment</literal> class in the <literal>org."
+"jboss.seam.example.seampay</literal> package. In this case <literal>Payment</"
+"literal> is an entity that is being declared as a Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:198
+#, no-c-format
+msgid ""
+"package org.jboss.seam.example.seampay;\n"
+"...\n"
+"@Entity\n"
+"public class Payment\n"
+"    implements Serializable\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:199
+#, no-c-format
+msgid ""
+"If we want validation and autocompletion to work for user-defined "
+"components, we will need a schema. Seam does not yet provide a mechanism to "
+"automatically generate a schema for a set of components, so it is necessary "
+"to generate one manually. The schema definitions for the standard Seam "
+"packages can be used for guidance."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:202
+#, no-c-format
+msgid "The following are the the namespaces used by Seam:"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:207
+#, no-c-format
+msgid ""
+"components &mdash; <literal>http://jboss.com/products/seam/components</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:212
+#, no-c-format
+msgid "core &mdash; <literal>http://jboss.com/products/seam/core</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:217
+#, no-c-format
+msgid "drools &mdash; <literal>http://jboss.com/products/seam/drools</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:222
+#, no-c-format
+msgid ""
+"framework &mdash; <literal>http://jboss.com/products/seam/framework</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:227
+#, no-c-format
+msgid "jms &mdash; <literal>http://jboss.com/products/seam/jms</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:232
+#, no-c-format
+msgid ""
+"remoting &mdash; <literal>http://jboss.com/products/seam/remoting</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:237
+#, no-c-format
+msgid "theme &mdash; <literal>http://jboss.com/products/seam/theme</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:242
+#, no-c-format
+msgid ""
+"security &mdash; <literal>http://jboss.com/products/seam/security</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:247
+#, no-c-format
+msgid "mail &mdash; <literal>http://jboss.com/products/seam/mail</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:252
+#, no-c-format
+msgid "web &mdash; <literal>http://jboss.com/products/seam/web</literal>"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Annotations.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Annotations.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Annotations.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2030 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Annotations.xml:10
+#, no-c-format
+msgid "Seam annotations"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:11
+#, no-c-format
+msgid ""
+"When you write a Seam application, you'll use a lot of annotations. Seam "
+"lets you use annotations to achieve a declarative style of programming. Most "
+"of the annotations you'll use are defined by the EJB 3.0 specification. The "
+"annotations for data validation are defined by the Hibernate Validator "
+"package. Finally, Seam defines its own set of annotations, which we'll "
+"describe in this chapter."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:14
+#, no-c-format
+msgid ""
+"All of these annotations are defined in the package <literal>org.jboss.seam."
+"annotations</literal>."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:18
+#, no-c-format
+msgid "Annotations for component definition"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:19
+#, no-c-format
+msgid ""
+"The first group of annotations lets you define a Seam component. These "
+"annotations appear on the component class."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:24
+#, no-c-format
+msgid "@Name"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:26
+#, no-c-format
+msgid "@Name(\"componentName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:27
+#, no-c-format
+msgid ""
+"Defines the Seam component name for a class. This annotation is required for "
+"all Seam components."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:33
+#, no-c-format
+msgid "@Scope"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:35
+#, no-c-format
+msgid "@Scope(ScopeType.CONVERSATION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:36
+#, no-c-format
+msgid ""
+"Defines the default context of the component. The possible values are "
+"defined by the <literal>ScopeType</literal> enumeration: <literal>EVENT, "
+"PAGE, CONVERSATION, SESSION, BUSINESS_PROCESS, APPLICATION, STATELESS</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:39
+#, no-c-format
+msgid ""
+"When no scope is explicitly specified, the default depends upon the "
+"component type. For stateless session beans, the default is "
+"<literal>STATELESS</literal>. For entity beans and stateful session beans, "
+"the default is <literal>CONVERSATION</literal>. For JavaBeans, the default "
+"is <literal>EVENT</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:45
+#, no-c-format
+msgid "@Role"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:47
+#, no-c-format
+msgid "@Role(name=\"roleName\", scope=ScopeType.SESSION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:48
+#, no-c-format
+msgid ""
+"Allows a Seam component to be bound to multiple contexts variables. The "
+"<literal>@Name</literal>/<literal>@Scope</literal> annotations define a "
+"\"default role\". Each <literal>@Role</literal> annotation defines an "
+"additional role."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:53
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the context variable name."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:58
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; the context variable scope. When no scope "
+"is explicitly specified, the default depends upon the component type, as "
+"above."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:66
+#, no-c-format
+msgid "@Roles"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:68
+#, no-c-format
+msgid ""
+"@Roles({\n"
+"        @Role(name=\"user\", scope=ScopeType.CONVERSATION),\n"
+"        @Role(name=\"currentUser\", scope=ScopeType.SESSION)\n"
+"    })"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:69
+#, no-c-format
+msgid "Allows specification of multiple additional roles."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:75
+#, no-c-format
+msgid "@Intercept"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:77
+#, no-c-format
+msgid "@Intercept(InterceptionType.ALWAYS)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:78
+#, no-c-format
+msgid ""
+"Determines when Seam interceptors are active. The possible values are "
+"defined by the <literal>InterceptionType</literal> enumeration: "
+"<literal>ALWAYS, AFTER_RESTORE_VIEW, AFTER_UPDATE_MODEL_VALUES, "
+"INVOKE_APPLICATION, NEVER</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:81
+#, no-c-format
+msgid ""
+"When no interception type is explicitly specified, the default depends upon "
+"the component type. For entity beans, the default is <literal>NEVER</"
+"literal>. For session beans, message driven beans and JavaBeans, the default "
+"is <literal>ALWAYS</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:87
+#, no-c-format
+msgid "@JndiName"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:89
+#, no-c-format
+msgid "@JndiName(\"my/jndi/name\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:90
+#, no-c-format
+msgid ""
+"Specifies the JNDI name that Seam will use to look up the EJB component. If "
+"no JNDI name is explicitly specified, Seam will use the JNDI pattern "
+"specified by <literal>org.jboss.seam.core.init.jndiPattern</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:96
+#, no-c-format
+msgid "@Conversational"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:98
+#, no-c-format
+msgid "@Conversational(ifNotBegunOutcome=\"error\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:99
+#, no-c-format
+msgid ""
+"Specifies that a conversation scope component is conversational, meaning "
+"that no method of the component can be called unless a long-running "
+"conversation started by this component is active (unless the method would "
+"begin a new long-running conversation)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:105
+#, no-c-format
+msgid "<literal>@Startup</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:107
+#, no-c-format
+msgid "@Startup(depends={\"org.jboss.core.jndi\", \"org.jboss.core.jta\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:108
+#, no-c-format
+msgid ""
+"Specifies that an application scope component is started immediately at "
+"initialization time. This is mainly used for certain built-in components "
+"that bootstrap critical infrastructure such as JNDI, datasources, etc."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:111
+#, no-c-format
+msgid "<programlisting>@Startup</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:112
+#, no-c-format
+msgid ""
+"Specifies that a session scope component is started immediately at session "
+"creation time."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:117
+#, no-c-format
+msgid ""
+"<literal>depends</literal> &mdash; specifies that the named components must "
+"be started first, if they are installed."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:125
+#, no-c-format
+msgid "@Install"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:127
+#, no-c-format
+msgid "@Install(false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:128
+#, no-c-format
+msgid ""
+"Specifies whether or not a component should be installed by default. The "
+"lack of an @Install annotation indicates a component should be installed."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:131
+#, no-c-format
+msgid "@Install(dependencies=\"org.jboss.seam.core.jbpm\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:132
+#, no-c-format
+msgid ""
+"Specifies that a component should only be stalled if the components listed "
+"as dependencies are also installed."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:135
+#, no-c-format
+msgid "@Install(genericDependencies=ManagedQueueSender.class)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:136
+#, no-c-format
+msgid ""
+"Specifies that a component should only be installed if a component that is "
+"implemented by a certain class is installed. This is useful when the "
+"dependency doesn't have a single well-known name."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:139
+#, no-c-format
+msgid "@Install(classDependencies=\"org.hibernate.Session\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:140
+#, no-c-format
+msgid ""
+"Specifies that a component should only be installed if the named class is in "
+"the classpath."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:143
+#, no-c-format
+msgid "@Install(precedence=BUILT_IN)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:144
+#, no-c-format
+msgid ""
+"Specifies the precedence of the component. If multiple components with the "
+"same name exist, the one with the higher precedence will be installed. The "
+"defined precendence values are:"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:149
+#, no-c-format
+msgid ""
+"<literal>BUILT_IN</literal> &mdash; Precedence of all built-in Seam "
+"components"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:154
+#, no-c-format
+msgid ""
+"<literal>FRAMEWORK</literal> &mdash; Precedence to use for components of "
+"frameworks which extend Seam"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:159
+#, no-c-format
+msgid ""
+"<literal>APPLICATION</literal> &mdash; Predence of application components "
+"(the default precedence)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:164
+#, no-c-format
+msgid ""
+"<literal>DEPLOYMENT</literal> &mdash; Precedence to use for components which "
+"override application components in a particular deployment"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:172
+#, no-c-format
+msgid "@Synchronized"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:174
+#, no-c-format
+msgid "@Synchronized(timeout=1000)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:175
+#, no-c-format
+msgid ""
+"Specifies that a component is accessed concurrently by multiple clients, and "
+"that Seam should serialize requests. If a request is not able to obtain its "
+"lock on the component in the given timeout period, an exception will be "
+"raised."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:181
+#, no-c-format
+msgid "<literal>@ReadOnly</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:183
+#, no-c-format
+msgid "<programlisting>@ReadOnly</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:184
+#, no-c-format
+msgid ""
+"Specifies that a JavaBean component or component method does not require "
+"state replication at the end of the invocation."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:193
+#, no-c-format
+msgid "Annotations for bijection"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:194
+#, no-c-format
+msgid ""
+"The next two annotations control bijection. These attributes occur on "
+"component instance variables or property accessor methods."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:199
+#, no-c-format
+msgid "<literal>@In</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:201
+#, no-c-format
+msgid "<programlisting>@In</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:202
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. If the context "
+"variable is null, an exception will be thrown."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:205
+#, no-c-format
+msgid "@In(required=false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:206
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. The context variable "
+"may be null."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:209
+#, no-c-format
+msgid "@In(create=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:210
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. If the context "
+"variable is null, an instance of the component is instantiated by Seam."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:213
+#, no-c-format
+msgid "@In(value=\"contextVariableName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:214 Annotations.xml:259
+#, no-c-format
+msgid ""
+"Specifies the name of the context variable explicitly, instead of using the "
+"annotated instance variable name."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:217
+#, no-c-format
+msgid "@In(value=\"#{customer.addresses['shipping']}\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:218
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected by evaluating a JSF "
+"EL expression at the beginning of each component invocation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:223
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"Default to the name of the component attribute. Alternatively, specifies a "
+"JSF EL expression, surrounded by <literal>#{...}</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:228
+#, no-c-format
+msgid ""
+"<literal>create</literal> &mdash; specifies that Seam should instantiate the "
+"component with the same name as the context variable if the context variable "
+"is undefined (null) in all contexts. Default to false."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:233
+#, no-c-format
+msgid ""
+"<literal>required</literal> &mdash; specifies Seam should throw an exception "
+"if the context variable is undefined in all contexts."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:241
+#, no-c-format
+msgid "<literal>@Out</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:243
+#, no-c-format
+msgid "<programlisting>@Out</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:244
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is a Seam component is to be "
+"outjected to its context variable at the end of the invocation. If the "
+"attribute is null, an exception is thrown."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:247
+#, no-c-format
+msgid "@Out(required=false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:248
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is a Seam component is to be "
+"outjected to its context variable at the end of the invocation. The "
+"attribute may be null."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:251
+#, no-c-format
+msgid "@Out(scope=ScopeType.SESSION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:252
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is <emphasis>not</emphasis> a Seam "
+"component type is to be outjected to a specific scope at the end of the "
+"invocation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:255
+#, no-c-format
+msgid ""
+"Alternatively, if no scope is explicitly specified, the scope of the "
+"component with the <literal>@Out</literal> attribute is used (or the "
+"<literal>EVENT</literal> scope if the component is stateless)."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:258
+#, no-c-format
+msgid "@Out(value=\"contextVariableName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:264
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"Default to the name of the component attribute."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:269
+#, no-c-format
+msgid ""
+"<literal>required</literal> &mdash; specifies Seam should throw an exception "
+"if the component attribute is null during outjection."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:277
+#, no-c-format
+msgid ""
+"Note that it is quite common for these annotations to occur together, for "
+"example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:280
+#, no-c-format
+msgid "@In(create=true) @Out private User currentUser;"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:281
+#, no-c-format
+msgid ""
+"The next annotation supports the <emphasis>manager component</emphasis> "
+"pattern, where a Seam component that manages the lifecycle of an instance of "
+"some other class that is to be injected. It appears on a component getter "
+"method."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:286
+#, no-c-format
+msgid "<literal>@Unwrap</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:288
+#, no-c-format
+msgid "<programlisting>@Unwrap</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:289
+#, no-c-format
+msgid ""
+"Specifies that the object returned by the annotated getter method is the "
+"thing that is injected instead of the component instance itself."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:295
+#, no-c-format
+msgid ""
+"The next annotation supports the <emphasis>factory component</emphasis> "
+"pattern, where a Seam component is responsible for initializing the value of "
+"a context variable. This is especially useful for initializing any state "
+"needed for rendering the response to a non-faces request. It appears on a "
+"component method."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:300
+#, no-c-format
+msgid "@Factory"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:302
+#, no-c-format
+msgid "@Factory(\"processInstance\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:303
+#, no-c-format
+msgid ""
+"Specifies that the method of the component is used to initialize the value "
+"of the named context variable, when the context variable has no value. This "
+"style is used with methods that return <literal>void</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:306
+#, no-c-format
+msgid "@Factory(\"processInstance\", scope=CONVERSATION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:307
+#, no-c-format
+msgid ""
+"Specifies that the method returns a value that Seam should use to initialize "
+"the value of the named context variable, when the context variable has no "
+"value. This style is used with methods that return a value. If no scope is "
+"explicitly specified, the scope of the component with the <literal>@Factory</"
+"literal> method is used (unless the component is stateless, in which case "
+"the <literal>EVENT</literal> context is used)."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:312
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"If the method is a getter method, default to the JavaBeans property name."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:317
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; specifies the scope that Seam should bind "
+"the returned value to. Only meaningful for factory methods which return a "
+"value."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:325
+#, no-c-format
+msgid "This annotation lets you inject a <literal>Log</literal>:"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:330
+#, no-c-format
+msgid "@Logger"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:332
+#, no-c-format
+msgid "@Logger(\"categoryName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:333
+#, no-c-format
+msgid ""
+"Specifies that a component field is to be injected with an instance of "
+"<literal>org.jboss.seam.log.Log</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:338
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the log category. "
+"Default to the name of the component class."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:346
+#, no-c-format
+msgid "The last annotation lets you inject a request parameter value:"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:351
+#, no-c-format
+msgid "@RequestParameter"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:353
+#, no-c-format
+msgid "@RequestParameter(\"parameterName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:354
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected with the value of a "
+"request parameter. Basic type conversions are performed automatically."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:359
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the request "
+"parameter. Default to the name of the component attribute."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:370
+#, no-c-format
+msgid "Annotations for component lifecycle methods"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:371
+#, no-c-format
+msgid ""
+"These annotations allow a component to react to its own lifecycle events. "
+"They occur on methods of the component. There may be only one of each per "
+"component class."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:376
+#, no-c-format
+msgid "<literal>@Create</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:378
+#, no-c-format
+msgid "<programlisting>@Create</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:379
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when an instance of the component "
+"is instantiated by Seam. Note that create methods are only supported for "
+"JavaBeans and stateful session beans."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:385
+#, no-c-format
+msgid "<literal>@Destroy</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:387
+#, no-c-format
+msgid "<programlisting>@Destroy</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:388
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when the context ends and its "
+"context variables are destroyed. Note that create methods are only supported "
+"for JavaBeans and stateful session beans."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:391
+#, no-c-format
+msgid ""
+"Note that all stateful session bean components <emphasis>must</emphasis> "
+"define a method annotated <literal>@Destroy @Remove</literal> in order to "
+"guarantee destruction of the stateful bean when a context ends."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:394
+#, no-c-format
+msgid ""
+"Destroy methods should be used only for cleanup. <emphasis>Seam catches, "
+"logs and swallows any exception that propagates out of a destroy method.</"
+"emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:400
+#, no-c-format
+msgid "@Observer"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:402
+#, no-c-format
+msgid "@Observer(\"somethingChanged\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:403
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when a component-driven event of "
+"the specified type occurs."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:406
+#, no-c-format
+msgid "@Observer(value=\"somethingChanged\",create=false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:407
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when an event of the specified "
+"type occurs but that an instance should not be created if one doesn't exist. "
+"If an instance does not exist and create is false, the event will not be "
+"observed. The default value for create is true."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:416
+#, no-c-format
+msgid "Annotations for context demarcation"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:417
+#, no-c-format
+msgid ""
+"These annotations provide declarative conversation demarcation. They appear "
+"on methods of Seam components, usually action listener methods."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:420
+#, no-c-format
+msgid ""
+"Every web request has a conversation context associated with it. Most of "
+"these conversations end at the end of the request. If you want a "
+"conversation that span multiple requests, you must \"promote\" the current "
+"conversation to a <emphasis>long-running conversation</emphasis> by calling "
+"a method marked with <literal>@Begin</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:425
+#, no-c-format
+msgid "<literal>@Begin</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:427
+#, no-c-format
+msgid "<programlisting>@Begin</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:428
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation begins when this method returns a "
+"non-null outcome without exception."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:431
+#, no-c-format
+msgid "@Begin(ifOutcome={\"success\", \"continue\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:432
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation begins when this action listener "
+"method returns with one of the given outcomes."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:435
+#, no-c-format
+msgid "@Begin(join=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:436
+#, no-c-format
+msgid ""
+"Specifies that if a long-running conversation is already in progress, the "
+"conversation context is simply propagated."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:439
+#, no-c-format
+msgid "@Begin(nested=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:440
+#, no-c-format
+msgid ""
+"Specifies that if a long-running conversation is already in progress, a new "
+"<emphasis>nested</emphasis> conversation context begins. The nested "
+"conversation will end when the next <literal>@End</literal> is encountered, "
+"and the outer conversation will resume. It is perfectly legal for multiple "
+"nested conversations to exist concurrently in the same outer conversation."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:443
+#, no-c-format
+msgid "@Begin(pageflow=\"process definition name\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:444
+#, no-c-format
+msgid ""
+"Specifies a jBPM process definition name that defines the pageflow for this "
+"conversation."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:447
+#, no-c-format
+msgid "@Begin(flushMode=FlushModeType.MANUAL)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:448
+#, no-c-format
+msgid ""
+"Specify the flush mode of any Seam-managed persistence contexts. "
+"<literal>flushMode=FlushModeType.MANUAL</literal> supports the use of "
+"<emphasis>atomic conversations</emphasis> where all write operations are "
+"queued in the conversation context until an explicit call to <literal>flush()"
+"</literal> (which usually occurs at the end of the conversation)."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:454
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in a new long-running conversation context."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:459
+#, no-c-format
+msgid ""
+"<literal>join</literal> &mdash; determines the behavior when a long-running "
+"conversation is already in progress. If <literal>true</literal>, the context "
+"is propagated. If <literal>false</literal>, an exception is thrown. Default "
+"to <literal>false</literal>. This setting is ignored when "
+"<literal>nested=true</literal> is specified"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:464
+#, no-c-format
+msgid ""
+"<literal>nested</literal> &mdash; specifies that a nested conversation "
+"should be started if a long-running conversation is already in progress."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:469 Annotations.xml:526 Annotations.xml:550
+#, no-c-format
+msgid ""
+"<literal>flushMode</literal> &mdash; set the flush mode of any Seam-managed "
+"Hibernate sessions or JPA persistence contexts that are created during this "
+"conversation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:474
+#, no-c-format
+msgid ""
+"<literal>pageflow</literal> &mdash; a process definition name of a jBPM "
+"process definition deployed via <literal>org.jboss.seam.core.jbpm."
+"pageflowDefinitions.</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:483
+#, no-c-format
+msgid "<literal>@End</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:485
+#, no-c-format
+msgid "<programlisting>@End</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:486
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation ends when this method returns a "
+"non-null outcome without exception."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:489
+#, no-c-format
+msgid ""
+"@End(ifOutcome={\"success\", \"error\"}, evenIfException={SomeException."
+"class, OtherException.class})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:490
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation ends when this action listener "
+"method returns with one of the given outcomes or throws one of the specified "
+"classes of exception."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:496
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in the end of the current long-running conversation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:501 Annotations.xml:585
+#, no-c-format
+msgid ""
+"<literal>beforeRedirect</literal> &mdash; by default, the conversation will "
+"not actually be destroyed until after any redirect has occurred. Setting "
+"<literal>beforeRedirect=true</literal> specifies that the conversation "
+"should be destroyed at the end of the current request, and that the redirect "
+"will be processed in a new temporary conversation context."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:510
+#, no-c-format
+msgid "<literal>@StartTask</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:512
+#, no-c-format
+msgid "<programlisting>@StartTask</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:513
+#, no-c-format
+msgid ""
+"\"Starts\" a jBPM task. Specifies that a long-running conversation begins "
+"when this method returns a non-null outcome without exception. This "
+"conversation is associated with the jBPM task specified in the named request "
+"parameter. Within the context of this conversation, a business process "
+"context is also defined, for the business process instance of the task "
+"instance."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:516
+#, no-c-format
+msgid ""
+"The jBPM <literal>TaskInstance</literal> will be available in a request "
+"context variable named <literal>taskInstance</literal>. The jPBM "
+"<literal>ProcessInstance</literal> will be available in a request context "
+"variable named <literal>processInstance</literal>. (Of course, these objects "
+"are available for injection via <literal>@In</literal>.)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:521 Annotations.xml:545
+#, no-c-format
+msgid ""
+"<literal>taskIdParameter</literal> &mdash; the name of a request parameter "
+"which holds the id of the task. Default to <literal>\"taskId\"</literal>, "
+"which is also the default used by the Seam <literal>taskList</literal> JSF "
+"component."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:534
+#, no-c-format
+msgid "<literal>@BeginTask</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:536
+#, no-c-format
+msgid "<programlisting>@BeginTask</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:537
+#, no-c-format
+msgid ""
+"Resumes work on an incomplete jBPM task. Specifies that a long-running "
+"conversation begins when this method returns a non-null outcome without "
+"exception. This conversation is associated with the jBPM task specified in "
+"the named request parameter. Within the context of this conversation, a "
+"business process context is also defined, for the business process instance "
+"of the task instance."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:540
+#, no-c-format
+msgid ""
+"The jBPM <literal>TaskInstance</literal> will be available in a request "
+"context variable named <literal>taskInstance</literal>. The jPBM "
+"<literal>ProcessInstance</literal> will be available in a request context "
+"variable named <literal>processInstance</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:558
+#, no-c-format
+msgid "<literal>@EndTask</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:560
+#, no-c-format
+msgid "<programlisting>@EndTask</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:561
+#, no-c-format
+msgid ""
+"\"Ends\" a jBPM task. Specifies that a long-running conversation ends when "
+"this method returns a non-null outcome, and that the current task is "
+"complete. Triggers a jBPM transition. The actual transition triggered will "
+"be the default transition unless the application has called "
+"<literal>Transition.setName()</literal> on the built-in component named "
+"<literal>transition</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:564
+#, no-c-format
+msgid "@EndTask(transition=\"transitionName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:565
+#, no-c-format
+msgid "Triggers the given jBPM transition."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:568
+#, no-c-format
+msgid "@EndTask(ifOutcome={\"success\", \"continue\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:569
+#, no-c-format
+msgid ""
+"Specifies that the task ends when this method returns one of the listed "
+"outcomes."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:575
+#, no-c-format
+msgid ""
+"<literal>transition</literal> &mdash; the name of the jBPM transition to be "
+"triggered when ending the task. Defaults to the default transition."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:580
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in the end of the task."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:594
+#, no-c-format
+msgid "@CreateProcess"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:596
+#, no-c-format
+msgid "@CreateProcess(definition=\"process definition name\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:597
+#, no-c-format
+msgid ""
+"Creates a new jBPM process instance when the method returns a non-null "
+"outcome without exception. The <literal>ProcessInstance</literal> object "
+"will be available in a context variable named <literal>processInstance</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:602
+#, no-c-format
+msgid ""
+"<literal>definition</literal> &mdash; the name of the jBPM process "
+"definition deployed via <literal>org.jboss.seam.core.jbpm."
+"processDefinitions</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:610
+#, no-c-format
+msgid "@ResumeProcess"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:612
+#, no-c-format
+msgid "@ResumeProcess(processIdParameter=\"processId\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:613
+#, no-c-format
+msgid ""
+"Re-enters the scope of an existing jBPM process instance when the method "
+"returns a non-null outcome without exception. The <literal>ProcessInstance</"
+"literal> object will be available in a context variable named "
+"<literal>processInstance</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:618
+#, no-c-format
+msgid ""
+"<literal>processIdParameter</literal> &mdash; the name a request parameter "
+"holding the process id. Default to <literal>\"processId\"</literal>."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:629
+#, no-c-format
+msgid "Annotations for transaction demarcation"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:630
+#, no-c-format
+msgid ""
+"Seam provides an annotation that lets you force a rollback of the JTA "
+"transaction for certain action listener outcomes."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:635
+#, no-c-format
+msgid "@Rollback"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:637
+#, no-c-format
+msgid "@Rollback(ifOutcome={\"failure\", \"not-found\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:638
+#, no-c-format
+msgid ""
+"If the outcome of the method matches any of the listed outcomes, or if no "
+"outcomes are listed, set the transaction to rollback only when the method "
+"completes."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:643
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; the JSF outcomes that cause a "
+"transaction rollback (no outcomes is interpreted to mean any outcome)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:651
+#, no-c-format
+msgid "<literal>@Transactional</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:653
+#, no-c-format
+msgid "<programlisting>@Transactional</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:654
+#, no-c-format
+msgid ""
+"Specifies that a JavaBean component should have a similar transactional "
+"behavior to the default behavior of a session bean component. ie. method "
+"invocations should take place in a transaction, and if no transaction exists "
+"when the method is called, a transaction will be started just for that "
+"method. This annotation may be applied at either class or method level."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:660
+#, no-c-format
+msgid ""
+"Seam applications usually use the standard EJB3 annotations for all other "
+"transaction demarcation needs."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:666
+#, no-c-format
+msgid "Annotations for exceptions"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:667
+#, no-c-format
+msgid ""
+"These annotations let you specify how Seam should handle an exception that "
+"propagates out of a Seam component."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:672
+#, no-c-format
+msgid "@Redirect"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:674
+#, no-c-format
+msgid "@Redirect(viewId=\"error.jsp\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:675
+#, no-c-format
+msgid ""
+"Specifies that the annotated exception causes a browser redirect to a "
+"specified view id."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:680
+#, no-c-format
+msgid ""
+"<literal>viewId</literal> &mdash; specifies the JSF view id to redirect to."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:685
+#, no-c-format
+msgid ""
+"<literal>message</literal> &mdash; a message to be displayed, default to the "
+"exception message."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:690 Annotations.xml:716
+#, no-c-format
+msgid ""
+"<literal>end</literal> &mdash; specifies that the long-running conversation "
+"should end, default to <literal>false</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:698
+#, no-c-format
+msgid "@HttpError"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:700
+#, no-c-format
+msgid "@HttpError(errorCode=404)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:701
+#, no-c-format
+msgid "Specifies that the annotated exception causes a HTTP error to be sent."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:706
+#, no-c-format
+msgid ""
+"<literal>errorCode</literal> &mdash; the HTTP error code, default to "
+"<literal>500</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:711
+#, no-c-format
+msgid ""
+"<literal>message</literal> &mdash; a message to be sent with the HTTP error, "
+"default to the exception message."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:727
+#, no-c-format
+msgid "Annotations for validation"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:728
+#, no-c-format
+msgid ""
+"This annotation triggers Hibernate Validator. It appears on a method of a "
+"Seam component, almost always an action listener method."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:731
+#, no-c-format
+msgid ""
+"Please refer to the documentation for the Hibernate Annotations package for "
+"information about the annotations defined by the Hibernate Validator "
+"framework."
+msgstr ""
+
+#. Tag: emphasis
+#: Annotations.xml:735
+#, no-c-format
+msgid ""
+"Note that use of <literal>@IfInvalid</literal> is now semi-deprecated and "
+"<literal>&lt;s:validateAll&gt;</literal> is now preferred."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:739
+#, no-c-format
+msgid "@IfInvalid"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:741
+#, no-c-format
+msgid "@IfInvalid(outcome=\"invalid\", refreshEntities=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:742
+#, no-c-format
+msgid ""
+"Specifies that Hibernate Validator should validate the component before the "
+"method is invoked. If the invocation fails, the specified outcome will be "
+"returned, and the validation failure messages returned by Hibernate "
+"Validator will be added to the <literal>FacesContext</literal>. Otherwise, "
+"the invocation will proceed."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:747
+#, no-c-format
+msgid ""
+"<literal>outcome</literal> &mdash; the JSF outcome when validation fails."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:752
+#, no-c-format
+msgid ""
+"<literal>refreshEntities</literal> &mdash; specifies that any invalid entity "
+"in the managed state should be refreshed from the database when validation "
+"fails. Default to <literal>false</literal>. (Useful with extended "
+"persistence contexts.)"
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:763
+#, no-c-format
+msgid "Annotations for Seam Remoting"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:764
+#, no-c-format
+msgid ""
+"Seam Remoting requires that the local interface of a session bean be "
+"annotated with the following annotation:"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:769
+#, no-c-format
+msgid "@WebRemote"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:771
+#, no-c-format
+msgid "@WebRemote(exclude=\"path.to.exclude\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:772
+#, no-c-format
+msgid ""
+"Indicates that the annotated method may be called from client-side "
+"JavaScript. The <literal>exclude</literal> property is optional and allows "
+"objects to be excluded from the result's object graph (see the Remoting "
+"chapter for more details)."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:781
+#, no-c-format
+msgid "Annotations for Seam interceptors"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:782
+#, no-c-format
+msgid "The following annotations appear on Seam interceptor classes."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:785
+#, no-c-format
+msgid ""
+"Please refer to the documentation for the EJB 3.0 specification for "
+"information about the annotations required for EJB interceptor definition."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:790
+#, no-c-format
+msgid "@Interceptor"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:792
+#, no-c-format
+msgid "@Interceptor(stateless=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:793
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is stateless and Seam may optimize "
+"replication."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:796
+#, no-c-format
+msgid "@Interceptor(type=CLIENT)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:797
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is a \"client-side\" interceptor that is "
+"called before the EJB container."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:800
+#, no-c-format
+msgid "@Interceptor(around={SomeInterceptor.class, OtherInterceptor.class})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:801
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is positioned higher in the stack than the "
+"given interceptors."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:804
+#, no-c-format
+msgid "@Interceptor(within={SomeInterceptor.class, OtherInterceptor.class})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:805
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is positioned deeper in the stack than the "
+"given interceptors."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:814
+#, no-c-format
+msgid "Annotations for asynchronicity"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:815
+#, no-c-format
+msgid ""
+"The following annotations are used to declare an asynchronous method, for "
+"example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:818
+#, no-c-format
+msgid ""
+"@Asynchronous public void scheduleAlert(Alert alert, @Expiration Date date) "
+"{ ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:819
+#, no-c-format
+msgid ""
+"@Asynchronous public Timer scheduleAlerts(Alert alert, @Expiration Date "
+"date, \n"
+"    @IntervalDuration long interval) { ... }"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:822
+#, no-c-format
+msgid "<literal>@Asynchronous</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:824
+#, no-c-format
+msgid "<programlisting>@Asynchronous</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:825
+#, no-c-format
+msgid "Specifies that the method call is processed asynchronously."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:831
+#, no-c-format
+msgid "<literal>@Duration</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:833
+#, no-c-format
+msgid "<programlisting>@Duration</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:834
+#, no-c-format
+msgid ""
+"Specifies that a parameter of the asynchronous call is the duration before "
+"the call is processed (or first processed for recurring calls)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:840
+#, no-c-format
+msgid "<literal>@Expiration</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:842
+#, no-c-format
+msgid "<programlisting>@Expiration</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:843
+#, no-c-format
+msgid ""
+"Specifies that a parameter of the asynchronous call is the datetime at which "
+"the call is processed (or first processed for recurring calls)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:849
+#, no-c-format
+msgid "<literal>@IntervalDuration</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:851
+#, no-c-format
+msgid "<programlisting>@IntervalDuration</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:852
+#, no-c-format
+msgid ""
+"Specifies that an asynchronous method call recurs, and that the annotationed "
+"parameter is duration between recurrences."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:861
+#, no-c-format
+msgid "Annotations for use with JSF <literal>dataTable</literal>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:862
+#, no-c-format
+msgid ""
+"The following annotations make it easy to implement clickable lists backed "
+"by a stateful session bean. They appear on attributes."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:867
+#, no-c-format
+msgid "@DataModel"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:869
+#, no-c-format
+msgid "@DataModel(\"variableName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:870
+#, no-c-format
+msgid ""
+"Exposes an attribute of type <literal>List</literal>, <literal>Map</"
+"literal>, <literal>Set</literal> or <literal>Object[]</literal> as a JSF "
+"<literal>DataModel</literal> into the scope of the owning component (or the "
+"<literal>EVENT</literal> scope if the owning component is "
+"<literal>STATELESS</literal>). In the case of <literal>Map</literal>, each "
+"row of the <literal>DataModel</literal> is a <literal>Map.Entry</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:875
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; name of the conversation context variable. "
+"Default to the attribute name."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:880
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; if <literal>scope=ScopeType.PAGE</literal> "
+"is explicitly specified, the <literal>DataModel</literal> will be kept in "
+"the <literal>PAGE</literal> context."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:888
+#, no-c-format
+msgid "<literal>@DataModelSelection</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:890
+#, no-c-format
+msgid "<programlisting>@DataModelSelection</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:891
+#, no-c-format
+msgid ""
+"Injects the selected value from the JSF <literal>DataModel</literal> (this "
+"is the element of the underlying collection, or the map value)."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:896 Annotations.xml:912
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; name of the conversation context variable. "
+"Not needed if there is exactly one <literal>@DataModel</literal> in the "
+"component."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:904
+#, no-c-format
+msgid "<literal>@DataModelSelectionIndex</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:906
+#, no-c-format
+msgid "<programlisting>@DataModelSelectionIndex</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:907
+#, no-c-format
+msgid ""
+"Exposes the selection index of the JSF <literal>DataModel</literal> as an "
+"attribute of the component (this is the row number of the underlying "
+"collection, or the map key)."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:923
+#, no-c-format
+msgid "Meta-annotations for databinding"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:924
+#, no-c-format
+msgid ""
+"These meta-annotations make it possible to implement similar functionality "
+"to <literal>@DataModel</literal> and <literal>@DataModelSelection</literal> "
+"for other datastructures apart from lists."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:929
+#, no-c-format
+msgid "@DataBinderClass"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:931
+#, no-c-format
+msgid "@DataBinderClass(DataModelBinder.class)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:932
+#, no-c-format
+msgid "Specifies that an annotation is a databinding annotation."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:938
+#, no-c-format
+msgid "@DataSelectorClass"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:940
+#, no-c-format
+msgid "@DataSelectorClass(DataModelSelector.class)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:941
+#, no-c-format
+msgid "Specifies that an annotation is a dataselection annotation."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:950
+#, no-c-format
+msgid "Annotations for packaging"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:951
+#, no-c-format
+msgid ""
+"This annotation provides a mechanism for declaring information about a set "
+"of components that are packaged together. It can be applied to any Java "
+"package."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:956
+#, no-c-format
+msgid "@Namespace"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:958
+#, no-c-format
+msgid "@Namespace(value=\"http://jboss.com/products/seam/example/seampay\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:959
+#, no-c-format
+msgid ""
+"Specifies that components in the current package are associated with the "
+"given namespace. The declared namespace can be used as an XML namespace in a "
+"<literal>components.xml</literal> file to simplify application configuration."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:962
+#, no-c-format
+msgid ""
+"@Namespace(value=\"http://jboss.com/products/seam/core\", prefix=\"org.jboss."
+"seam.core\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:963
+#, no-c-format
+msgid ""
+"Specifies a namespace to associate with a given package. Additionally, it "
+"specifies a component name prefix to be applied to component names specified "
+"in the XML file. For example, an XML element named <literal>microcontainer</"
+"literal> that is associated with this namespace would be understood to "
+"actually refere to a component named <literal>org.jboss.seam.core."
+"microcontainer</literal>."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Book_Info.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Book_Info.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Book_Info.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,38 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Book_Info.xml:10
+#, no-c-format
+msgid "Seam - Contextual Components"
+msgstr ""
+
+#. Tag: subtitle
+#: Book_Info.xml:11
+#, no-c-format
+msgid "A Framework for Java EE 5"
+msgstr ""
+
+#. Tag: para
+#: Book_Info.xml:15
+#, no-c-format
+msgid "This book is a Reference Guide for Seam"
+msgstr ""
+
+#. Tag: holder
+#: Book_Info.xml:36
+#, no-c-format
+msgid "&FORMAL-RHI;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Cache.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Cache.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Cache.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,318 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Cache.xml:10
+#, no-c-format
+msgid "Caching"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:11
+#, no-c-format
+msgid ""
+"In almost all enterprise applications, the database is the primary "
+"bottleneck, and the least scalable tier of the runtime environment. People "
+"from a PHP/Ruby environment will try to tell you that so-called \"shared "
+"nothing\" architectures scale well. While that may be literally true, I "
+"don't know of many interesting multi-user applications which can be "
+"implemented with no sharing of resources between different nodes of the "
+"cluster. What these silly people are really thinking of is a \"share nothing "
+"except for the database\" architecture. Of course, sharing the database is "
+"the primary problem with scaling a multi-user application&mdash;so the claim "
+"that this architecture is highly scalable is absurd, and tells you a lot "
+"about the kind of applications that these folks spend most of their time "
+"working on."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:14
+#, no-c-format
+msgid ""
+"Almost anything we can possibly do to share the database <emphasis>less "
+"often</emphasis> is worth doing."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:17
+#, no-c-format
+msgid ""
+"This calls for a cache. Well, not just one cache. A well designed Seam "
+"application will feature a rich, multi-layered caching strategy that impacts "
+"every layer of the application:"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:22
+#, no-c-format
+msgid ""
+"The database, of course, has its own cache. This is super-important, but "
+"can't scale like a cache in the application tier."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:27
+#, no-c-format
+msgid ""
+"Your ORM solution (Hibernate, or some other JPA implementation) has a second-"
+"level cache of data from the database. This is a very powerful capability, "
+"but is often misused. In a clustered environment, keeping the data in the "
+"cache transactionally consistent across the whole cluster, and with the "
+"database, is quite expensive. It makes most sense for data which is shared "
+"between many users, and is updated rarely. In traditional stateless "
+"architectures, people often try to use the second-level cache for "
+"conversational state. This is always bad, and is especially wrong in Seam."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:32
+#, no-c-format
+msgid ""
+"The Seam conversation context is a cache of conversational state. Components "
+"you put into the conversation context can hold and cache state relating to "
+"the current user interaction."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:37
+#, no-c-format
+msgid ""
+"In particular, the Seam-managed persistence context (or an extended EJB "
+"container-managed persistence context associated with a conversation-scoped "
+"stateful session bean) acts as a cache of data that has been read in the "
+"current conversation. This cache tends to have a pretty high hitrate! Seam "
+"optimizes the replication of Seam-managed persistence contexts in a "
+"clustered environment, and there is no requirement for transactional "
+"consistency with the database (optimistic locking is sufficient) so you "
+"don't need to worry too much about the performance implications of this "
+"cache, unless you read thousands of objects into a single persistence "
+"context."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:42
+#, no-c-format
+msgid ""
+"The application can cache non-transactional state in the Seam application "
+"context. State kept in the application context is of course not visible to "
+"other nodes in the cluster."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:47
+#, no-c-format
+msgid ""
+"The application can cache transactional state using the Seam "
+"<literal>pojoCache</literal> component, which integrates JBossCache into the "
+"Seam environment. This state will be visible to other nodes if you run JBoss "
+"cache in a clustered mode."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:52
+#, no-c-format
+msgid ""
+"Finally, Seam lets you cache rendered fragments of a JSF page. Unlike the "
+"ORM second-level cache, this cache is not automatically invalidated when "
+"data changes, so you need to write application code to perform explicit "
+"invalidation, or set appropriate expiration policies."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:57
+#, no-c-format
+msgid ""
+"For more information about the second-level cache, you'll need to refer to "
+"the documentation of your ORM solution, since this is an extremely complex "
+"topic. In this section we'll discuss the use of JBossCache directly, via the "
+"<literal>pojoCache</literal> component, or as the page fragment cache, via "
+"the <literal>&lt;s:cache&gt;</literal> control."
+msgstr ""
+
+#. Tag: title
+#: Cache.xml:61
+#, no-c-format
+msgid "Using JBossCache in Seam"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:62
+#, no-c-format
+msgid ""
+"The built-in <literal>pojoCache</literal> component manages an instance of "
+"<literal>org.jboss.cache.aop.PojoCache</literal>. You can safely put any "
+"immutable Java object in the cache, and it will be replicated across the "
+"cluster (assuming that replication is enabled). If you want to keep mutable "
+"objects in the cache, you'll need to run the JBossCache bytecode "
+"preprocessor to ensure that changes to the objects will be automatically "
+"detected and replicated."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:65
+#, no-c-format
+msgid ""
+"To use <literal>pojoCache</literal>, all you need to do is put the "
+"JBossCache jars in the classpath, and provide a resource named "
+"<literal>treecache.xml</literal> with an appropriate cache configuration. "
+"JBossCache has many scary and confusing configuration settings, so we won't "
+"discuss them here. Please refer to the JBossCache documentation for more "
+"information."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:68
+#, no-c-format
+msgid ""
+"For an EAR depoyment of Seam, we recommend that the JBossCache jars and "
+"configuration go directly into the EAR. Make sure you declare the jars in "
+"<literal>application.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:71
+#, no-c-format
+msgid "Now you can inject the cache into any Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:74
+#, no-c-format
+msgid ""
+"@Name(\"chatroom\")\n"
+"public class Chatroom {\n"
+"    @In PojoCache pojoCache;\n"
+"    \n"
+"    public void join(String username) {\n"
+"      try\n"
+"      {\n"
+"         Set&lt;String&gt; userList = (Set&lt;String&gt;) pojoCache.get"
+"(\"chatroom\", \"userList\");\n"
+"         if (userList==null) \n"
+"         {\n"
+"            userList = new HashSet&lt;String&gt;();\n"
+"            pojoCache.put(\"chatroom\", \"userList\", userList);\n"
+"         }\n"
+"         userList.put(username);\n"
+"      }\n"
+"      catch (CacheException ce)\n"
+"      {\n"
+"         throw new RuntimeException(ce);\n"
+"      }\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:75
+#, no-c-format
+msgid ""
+"If you want to have multiple JBossCache configurations in your application, "
+"use <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:78
+#, no-c-format
+msgid ""
+"&lt;core:pojo-cache name=\"myCache\" cfg-resource-name=\"myown/cache.xml\"/"
+"&gt;"
+msgstr ""
+
+#. Tag: title
+#: Cache.xml:82
+#, no-c-format
+msgid "Page fragment caching"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:83
+#, no-c-format
+msgid ""
+"The most interesting user of JBossCache is the <literal>&lt;s:cache&gt;</"
+"literal> tag, Seam's solution to the problem of page fragment caching in "
+"JSF. <literal>&lt;s:cache&gt;</literal> uses <literal>pojoCache</literal> "
+"internally, so you need to follow the steps listed above before you can use "
+"it. (Put the jars in the EAR, wade through the scary configuration options, "
+"etc.)"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:86
+#, no-c-format
+msgid ""
+"<literal>&lt;s:cache&gt;</literal> is used for caching some rendered content "
+"which changes rarely. For example, the welcome page of our blog displays the "
+"recent blog entries:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:89
+#, no-c-format
+msgid ""
+"&lt;s:cache key=\"recentEntries-#{blog.id}\" region=\"welcomePageFragments"
+"\"&gt;\n"
+"   &lt;h:dataTable value=\"#{blog.recentEntries}\" var=\"blogEntry\"&gt;\n"
+"      &lt;h:column&gt;\n"
+"         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"         &lt;div&gt;\n"
+"            &lt;s:formattedText value=\"#{blogEntry.body}\"/&gt;\n"
+"         &lt;/div&gt;\n"
+"      &lt;/h:column&gt;\n"
+"   &lt;/h:dataTable&gt;\n"
+"&lt;/s:cache&gt;"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:90
+#, no-c-format
+msgid ""
+"The <literal>key</literal> let's you have multiple cached versions of each "
+"page fragment. In this case, there is one cached version per blog. The "
+"<literal>region</literal> determines the JBossCache node that all version "
+"will be stored in. Different nodes may have different expiry policies. "
+"(That's the stuff you set up using the aforementioned scary configuration "
+"options.)"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:93
+#, no-c-format
+msgid ""
+"Of course, the big problem with <literal>&lt;s:cache&gt;</literal> is that "
+"it is too stupid to know when the underlying data changes (for example, when "
+"the blogger posts a new entry). So you need to evict the cached fragment "
+"manually:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:96
+#, no-c-format
+msgid ""
+"public void post() {\n"
+"    ...\n"
+"    entityManager.persist(blogEntry);\n"
+"    pojoCache.remove(\"welcomePageFragments\", \"recentEntries-\" + blog."
+"getId() );\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:97
+#, no-c-format
+msgid ""
+"Alternatively, if it is not critical that changes are immediately visible to "
+"the user, you could set a short expiry time on the JbossCache node."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Components.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Components.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Components.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2007 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Components.xml:10
+#, no-c-format
+msgid "Built-in Seam components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:11
+#, no-c-format
+msgid ""
+"This chapter describes Seam's built-in components, and their configuration "
+"properties."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:14
+#, no-c-format
+msgid ""
+"Note that you can replace any of the built in components with your own "
+"implementations simply by specifying the name of one of the built in "
+"components on your own class using <literal>@Name</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:17
+#, no-c-format
+msgid ""
+"Note also that even though all the built in components use a qualified name, "
+"most of them are aliased to unqualified names by default. These aliases "
+"specify <literal>auto-create=\"true\"</literal>, so you do not need to use "
+"<literal>create=true</literal> when injecting built-in components by their "
+"unqualified name."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:21
+#, no-c-format
+msgid "Context injection components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:22
+#, no-c-format
+msgid ""
+"The first set of built in components exist purely to support injection of "
+"various contextual objects. For example, the following component instance "
+"variable would have the Seam session context object injected:"
+msgstr ""
+
+#. Tag: programlisting
+#: Components.xml:25
+#, no-c-format
+msgid "@In private Context sessionContext;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:28
+#, no-c-format
+msgid "org.jboss.seam.core.eventContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:30
+#, no-c-format
+msgid "Manager component for the event context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:36
+#, no-c-format
+msgid "org.jboss.seam.core.pageContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:38
+#, no-c-format
+msgid "Manager component for the page context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:44
+#, no-c-format
+msgid "org.jboss.seam.core.conversationContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:46
+#, no-c-format
+msgid "Manager component for the conversation context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:52
+#, no-c-format
+msgid "org.jboss.seam.core.sessionContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:54
+#, no-c-format
+msgid "Manager component for the session context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:60
+#, no-c-format
+msgid "org.jboss.seam.core.applicationContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:62
+#, no-c-format
+msgid "Manager component for the appication context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:68
+#, no-c-format
+msgid "org.jboss.seam.core.businessProcessContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:70
+#, no-c-format
+msgid "Manager component for the business process context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:76
+#, no-c-format
+msgid "org.jboss.seam.core.facesContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:78
+#, no-c-format
+msgid ""
+"Manager component for the <literal>FacesContext</literal> context object "
+"(not a true Seam context)"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:84 Components.xml:267 Components.xml:441 Components.xml:572
+#, no-c-format
+msgid "All of these components are always installed."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:90
+#, no-c-format
+msgid "Utility components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:91
+#, no-c-format
+msgid "These components are merely useful."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:96
+#, no-c-format
+msgid "org.jboss.seam.core.facesMessages"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:98
+#, no-c-format
+msgid "Allows faces success messages to propagate across a browser redirect."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:103
+#, no-c-format
+msgid ""
+"<literal>add(FacesMessage facesMessage)</literal> &mdash; add a faces "
+"message, which will be displayed during the next render response phase that "
+"occurs in the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:108
+#, no-c-format
+msgid ""
+"<literal>add(String messageTemplate)</literal> &mdash; add a faces message, "
+"rendered from the given message template which may contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:113
+#, no-c-format
+msgid ""
+"<literal>add(Severity severity, String messageTemplate)</literal> &mdash; "
+"add a faces message, rendered from the given message template which may "
+"contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:118
+#, no-c-format
+msgid ""
+"<literal>addFromResourceBundle(String key)</literal> &mdash; add a faces "
+"message, rendered from a message template defined in the Seam resource "
+"bundle which may contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:123
+#, no-c-format
+msgid ""
+"<literal>addFromResourceBundle(Severity severity, String key)</literal> "
+"&mdash; add a faces message, rendered from a message template defined in the "
+"Seam resource bundle which may contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:128
+#, no-c-format
+msgid "<literal>clear()</literal> &mdash; clear all messages."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:136
+#, no-c-format
+msgid "org.jboss.seam.core.redirect"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:138
+#, no-c-format
+msgid ""
+"A convenient API for performing redirects with parameters (this is "
+"especially useful for bookmarkable search results screens)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:143
+#, no-c-format
+msgid ""
+"<literal>redirect.viewId</literal> &mdash; the JSF view id to redirect to."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:148
+#, no-c-format
+msgid ""
+"<literal>redirect.conversationPropagationEnabled</literal> &mdash; "
+"determines whether the conversation will propagate across the redirect."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:153
+#, no-c-format
+msgid ""
+"<literal>redirect.parameters</literal> &mdash; a map of request parameter "
+"name to value, to be passed in the redirect request."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:158
+#, no-c-format
+msgid "<literal>execute()</literal> &mdash; perform the redirect immediately."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:163
+#, no-c-format
+msgid ""
+"<literal>captureCurrentRequest()</literal> &mdash; stores the view id and "
+"request parameters of the current GET request (in the conversation context), "
+"for later use by calling <literal>execute()</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:171
+#, no-c-format
+msgid "org.jboss.seam.core.httpError"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:173
+#, no-c-format
+msgid "A convenient API for sending HTTP errors."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:179
+#, no-c-format
+msgid "org.jboss.seam.core.events"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:181
+#, no-c-format
+msgid ""
+"An API for raising events that can be observed via <literal>@Observer</"
+"literal> methods, or method bindings in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:186
+#, no-c-format
+msgid ""
+"<literal>raiseEvent(String type)</literal> &mdash; raise an event of a "
+"particular type and distribute to all observers."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:191
+#, no-c-format
+msgid ""
+"<literal>raiseAsynchronousEvent(String type)</literal> &mdash; raise an "
+"event to be processed asynchronously by the EJB3 timer service."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:196
+#, no-c-format
+msgid ""
+"<literal>raiseTimedEvent(String type, ....)</literal> &mdash; schedule an "
+"event to be processed asynchronously by the EJB3 timer service."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:201
+#, no-c-format
+msgid ""
+"<literal>addListener(String type, String methodBinding)</literal> &mdash; "
+"add an observer for a particular event type."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:209
+#, no-c-format
+msgid "org.jboss.seam.core.interpolator"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:211
+#, no-c-format
+msgid "An API for interpolating the values of JSF EL expressions in Strings."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:216
+#, no-c-format
+msgid ""
+"<literal>interpolate(String template)</literal> &mdash; scan the template "
+"for JSF EL expressions of the form <literal>#{...}</literal> and replace "
+"them with their evaluated values."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:224
+#, no-c-format
+msgid "org.jboss.seam.core.expressions"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:226
+#, no-c-format
+msgid "An API for creating value and method bindings."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:231
+#, no-c-format
+msgid ""
+"<literal>createValueBinding(String expression)</literal> &mdash; create a "
+"value binding object."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:236
+#, no-c-format
+msgid ""
+"<literal>createMethodBinding(String expression)</literal> &mdash; create a "
+"method binding object."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:244
+#, no-c-format
+msgid "org.jboss.seam.core.pojoCache"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:246
+#, no-c-format
+msgid ""
+"Manager component for a JBoss Cache <literal>PojoCache</literal> instance."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:251
+#, no-c-format
+msgid ""
+"<literal>pojoCache.cfgResourceName</literal> &mdash; the name of the "
+"configuration file. Default to <literal>treecache.xml</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:259
+#, no-c-format
+msgid "org.jboss.seam.core.uiComponent"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:261
+#, no-c-format
+msgid ""
+"Allows access to a JSF <literal>UIComponent</literal> by its id from the EL. "
+"For example, we can write <literal>@In(\"#{uiComponent['myForm:address']."
+"value}\")</literal>."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:273
+#, no-c-format
+msgid "Components for internationalization and themes"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:274
+#, no-c-format
+msgid ""
+"The next group of components make it easy to build internationalized user "
+"interfaces using Seam."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:279
+#, no-c-format
+msgid "org.jboss.seam.core.locale"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:281
+#, no-c-format
+msgid "The Seam locale. The locale is session scoped."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:287
+#, no-c-format
+msgid "org.jboss.seam.core.timezone"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:289
+#, no-c-format
+msgid "The Seam timezone. The timezone is session scoped."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:295
+#, no-c-format
+msgid "org.jboss.seam.core.resourceBundle"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:297
+#, no-c-format
+msgid ""
+"The Seam resource bundle. The resource bundle is session scoped. The Seam "
+"resource bundle performs a depth-first search for keys in a list of Java "
+"resource bundles."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:302
+#, no-c-format
+msgid ""
+"<literal>resourceBundle.bundleNames</literal> &mdash; the names of the Java "
+"resource bundles to search. Default to <literal>messages</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:310
+#, no-c-format
+msgid "org.jboss.seam.core.localeSelector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:312
+#, no-c-format
+msgid ""
+"Supports selection of the locale either at configuration time, or by the "
+"user at runtime."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:317 Components.xml:367
+#, no-c-format
+msgid "<literal>select()</literal> &mdash; select the specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:322
+#, no-c-format
+msgid ""
+"<literal>localeSelector.locale</literal> &mdash; the actual <literal>java."
+"util.Locale</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:327
+#, no-c-format
+msgid ""
+"<literal>localeSelector.localeString</literal> &mdash; the stringified "
+"representation of the locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:332
+#, no-c-format
+msgid ""
+"<literal>localeSelector.language</literal> &mdash; the language for the "
+"specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:337
+#, no-c-format
+msgid ""
+"<literal>localeSelector.country</literal> &mdash; the country for the "
+"specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:342
+#, no-c-format
+msgid ""
+"<literal>localeSelector.variant</literal> &mdash; the variant for the "
+"specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:347
+#, no-c-format
+msgid ""
+"<literal>localeSelector.supportedLocales</literal> &mdash; a list of "
+"<literal>SelectItem</literal>s representing the supported locales listed in "
+"<literal>jsf-config.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:352
+#, no-c-format
+msgid ""
+"<literal>localeSelector.cookieEnabled</literal> &mdash; specifies that the "
+"locale selection should be persisted via a cookie."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:360
+#, no-c-format
+msgid "org.jboss.seam.core.timezoneSelector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:362
+#, no-c-format
+msgid ""
+"Supports selection of the timezone either at configuration time, or by the "
+"user at runtime."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:372
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.timezone</literal> &mdash; the actual "
+"<literal>java.util.TimeZone</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:377
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.timeZoneId</literal> &mdash; the stringified "
+"representation of the timezone."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:382
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.cookieEnabled</literal> &mdash; specifies that the "
+"timezone selection should be persisted via a cookie."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:390
+#, no-c-format
+msgid "org.jboss.seam.core.messages"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:392
+#, no-c-format
+msgid ""
+"A map containing internationalized messages rendered from message templates "
+"defined in the Seam resource bundle."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:398
+#, no-c-format
+msgid "org.jboss.seam.theme.themeSelector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:400
+#, no-c-format
+msgid ""
+"Supports selection of the theme either at configuration time, or by the user "
+"at runtime."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:405
+#, no-c-format
+msgid "<literal>select()</literal> &mdash; select the specified theme."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:410
+#, no-c-format
+msgid ""
+"<literal>theme.availableThemes</literal> &mdash; the list of defined themes."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:415
+#, no-c-format
+msgid "<literal>themeSelector.theme</literal> &mdash; the selected theme."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:420
+#, no-c-format
+msgid ""
+"<literal>themeSelector.themes</literal> &mdash; a list of "
+"<literal>SelectItem</literal>s representing the defined themes."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:425
+#, no-c-format
+msgid ""
+"<literal>themeSelector.cookieEnabled</literal> &mdash; specifies that the "
+"theme selection should be persisted via a cookie."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:433
+#, no-c-format
+msgid "org.jboss.seam.theme.theme"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:435
+#, no-c-format
+msgid "A map containing theme entries."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:447
+#, no-c-format
+msgid "Components for controlling conversations"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:448
+#, no-c-format
+msgid ""
+"The next group of components allow control of conversations by the "
+"application or user interface."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:453
+#, no-c-format
+msgid "org.jboss.seam.core.conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:455
+#, no-c-format
+msgid ""
+"API for application control of attributes of the current Seam conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:460 Components.xml:475
+#, no-c-format
+msgid "<literal>getId()</literal> &mdash; returns the current conversation id"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:465
+#, no-c-format
+msgid ""
+"<literal>isNested()</literal> &mdash; is the current conversation a nested "
+"conversation?"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:470
+#, no-c-format
+msgid ""
+"<literal>isLongRunning()</literal> &mdash; is the current conversation a "
+"long-running conversation?"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:480
+#, no-c-format
+msgid ""
+"<literal>getParentId()</literal> &mdash; returns the conversation id of the "
+"parent conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:485
+#, no-c-format
+msgid ""
+"<literal>getRootId()</literal> &mdash; returns the conversation id of the "
+"root conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:490
+#, no-c-format
+msgid ""
+"<literal>setTimeout(int timeout)</literal> &mdash; sets the timeout for the "
+"current conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:495
+#, no-c-format
+msgid ""
+"<literal>setViewId(String outcome)</literal> &mdash; sets the view id to be "
+"used when switching back to the current conversation from the conversation "
+"switcher, conversation list, or breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:500
+#, no-c-format
+msgid ""
+"<literal>setDescription(String description)</literal> &mdash; sets the "
+"description of the current conversation to be displayed in the conversation "
+"switcher, conversation list, or breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:505
+#, no-c-format
+msgid ""
+"<literal>redirect()</literal> &mdash; redirect to the last well-defined view "
+"id for this conversation (useful after login challenges)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:510
+#, no-c-format
+msgid ""
+"<literal>leave()</literal> &mdash; exit the scope of this conversation, "
+"without actually ending the conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:515
+#, no-c-format
+msgid ""
+"<literal>begin()</literal> &mdash; begin a long-running conversation "
+"(equivalent to <literal>@Begin</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:520
+#, no-c-format
+msgid ""
+"<literal>beginPageflow(String pageflowName)</literal> &mdash; begin a long-"
+"running conversation with a pageflow (equivalent to <literal>@Begin(pageflow="
+"\"...\")</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:525
+#, no-c-format
+msgid ""
+"<literal>end()</literal> &mdash; end a long-running conversation (equivalent "
+"to <literal>@End</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:530
+#, no-c-format
+msgid ""
+"<literal>pop()</literal> &mdash; pop the conversation stack, returning to "
+"the parent conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:535
+#, no-c-format
+msgid ""
+"<literal>root()</literal> &mdash; return to the root conversation of the "
+"conversation stack."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:540
+#, no-c-format
+msgid ""
+"<literal>changeFlushMode(FlushModeType flushMode)</literal> &mdash; change "
+"the flush mode of the conversation."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:548
+#, no-c-format
+msgid "org.jboss.seam.core.conversationList"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:550
+#, no-c-format
+msgid "Manager component for the conversation list."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:556
+#, no-c-format
+msgid "org.jboss.seam.core.conversationStack"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:558
+#, no-c-format
+msgid "Manager component for the conversation stack (breadcrumbs)."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:564
+#, no-c-format
+msgid "org.jboss.seam.core.switcher"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:566
+#, no-c-format
+msgid "The conversation switcher."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:578
+#, no-c-format
+msgid "jBPM-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:579
+#, no-c-format
+msgid "These components are for use with jBPM."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:584
+#, no-c-format
+msgid "org.jboss.seam.core.pageflow"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:586
+#, no-c-format
+msgid "API control of Seam pageflows."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:591
+#, no-c-format
+msgid ""
+"<literal>isInProcess()</literal> &mdash; returns <literal>true</literal> if "
+"there is currently a pageflow in process"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:596
+#, no-c-format
+msgid ""
+"<literal>getProcessInstance()</literal> &mdash; returns jBPM "
+"<literal>ProcessInstance</literal> for the current pageflow"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:601
+#, no-c-format
+msgid ""
+"<literal>begin(String pageflowName)</literal> &mdash; begin a pageflow in "
+"the context of the current conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:606
+#, no-c-format
+msgid ""
+"<literal>reposition(String nodeName)</literal> &mdash; reposition the "
+"current pageflow to a particular node"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:614
+#, no-c-format
+msgid "org.jboss.seam.core.actor"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:616
+#, no-c-format
+msgid ""
+"API for application control of attributes of the jBPM actor associated with "
+"the current session."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:621
+#, no-c-format
+msgid ""
+"<literal>setId(String actorId)</literal> &mdash; sets the jBPM actor id of "
+"the current user."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:626
+#, no-c-format
+msgid ""
+"<literal>getGroupActorIds()</literal> &mdash; returns a <literal>Set</"
+"literal> to which jBPM actor ids for the current users groups may be added."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:634
+#, no-c-format
+msgid "org.jboss.seam.core.transition"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:636
+#, no-c-format
+msgid ""
+"API for application control of the jBPM transition for the current task."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:641
+#, no-c-format
+msgid ""
+"<literal>setName(String transitionName)</literal> &mdash; sets the jBPM "
+"transition name to be used when the current task is ended via "
+"<literal>@EndTask</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:649
+#, no-c-format
+msgid "org.jboss.seam.core.businessProcess"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:651
+#, no-c-format
+msgid ""
+"API for programmatic control of the association between the conversation and "
+"business process."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:656
+#, no-c-format
+msgid ""
+"<literal>businessProcess.taskId</literal> &mdash; the id of the task "
+"associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:661
+#, no-c-format
+msgid ""
+"<literal>businessProcess.processId</literal> &mdash; the id of the process "
+"associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:666
+#, no-c-format
+msgid ""
+"<literal>businessProcess.hasCurrentTask()</literal> &mdash; is a task "
+"instance associated with the current conversation?"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:671
+#, no-c-format
+msgid ""
+"<literal>businessProcess.hasCurrentProcess()</literal> &mdash; is a process "
+"instance associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:676
+#, no-c-format
+msgid ""
+"<literal>createProcess(String name)</literal> &mdash; create an instance of "
+"the named process definition and associate it with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:681
+#, no-c-format
+msgid ""
+"<literal>startTask()</literal> &mdash; start the task associated with the "
+"current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:686
+#, no-c-format
+msgid ""
+"<literal>endTask(String transitionName)</literal> &mdash; end the task "
+"associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:691
+#, no-c-format
+msgid ""
+"<literal>resumeTask(Long id)</literal> &mdash; associate the task with the "
+"given id with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:696
+#, no-c-format
+msgid ""
+"<literal>resumeProcess(Long id)</literal> &mdash; associate the process with "
+"the given id with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:701
+#, no-c-format
+msgid ""
+"<literal>transition(String transitionName)</literal> &mdash; trigger the "
+"transition."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:709
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstance"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:711
+#, no-c-format
+msgid "Manager component for the jBPM <literal>TaskInstance</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:717
+#, no-c-format
+msgid "org.jboss.seam.core.processInstance"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:719
+#, no-c-format
+msgid "Manager component for the jBPM <literal>ProcessInstance</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:725
+#, no-c-format
+msgid "org.jboss.seam.core.jbpmContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:727
+#, no-c-format
+msgid "Manager component for an event-scoped <literal>JbpmContext</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:733
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstanceList"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:735
+#, no-c-format
+msgid "Manager component for the jBPM task list."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:741
+#, no-c-format
+msgid "org.jboss.seam.core.pooledTaskInstanceList"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:743
+#, no-c-format
+msgid "Manager component for the jBPM pooled task list."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:749
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstanceListForType"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:751
+#, no-c-format
+msgid "Manager component for the jBPM task lists."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:757
+#, no-c-format
+msgid "org.jboss.seam.core.pooledTask"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:759
+#, no-c-format
+msgid "Action handler for pooled task assignment."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:765
+#, no-c-format
+msgid ""
+"All of these components are installed whenever the component <literal>org."
+"jboss.seam.core.jbpm</literal> is installed."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:771
+#, no-c-format
+msgid "Security-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:772
+#, no-c-format
+msgid "These components relate to web-tier security."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:777
+#, no-c-format
+msgid "org.jboss.seam.core.userPrincipal"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:779
+#, no-c-format
+msgid "Manager component for the current user <literal>Principal</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:785
+#, no-c-format
+msgid "org.jboss.seam.core.isUserInRole"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:787
+#, no-c-format
+msgid ""
+"Allows JSF pages to choose to render a control, depending upon the roles "
+"available to the current principal. <literal>&lt;h:commandButton value=\"edit"
+"\" rendered=\"#{isUserInRole['admin']}\"/&gt;</literal>."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:796
+#, no-c-format
+msgid "JMS-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:797
+#, no-c-format
+msgid ""
+"These components are for use with managed <literal>TopicPublisher</literal>s "
+"and <literal>QueueSender</literal>s (see below)."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:802
+#, no-c-format
+msgid "org.jboss.seam.jms.queueSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:804
+#, no-c-format
+msgid "Manager component for a JMS <literal>QueueSession</literal> ."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:810
+#, no-c-format
+msgid "org.jboss.seam.jms.topicSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:812
+#, no-c-format
+msgid "Manager component for a JMS <literal>TopicSession</literal> ."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:821
+#, no-c-format
+msgid "Mail-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:822
+#, no-c-format
+msgid "These components are for use with Seam's Email support"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:827
+#, no-c-format
+msgid "org.jboss.seam.mail.mailSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:829
+#, no-c-format
+msgid "Manager component for a JavaMail <literal>Session</literal> ."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:834
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.host</literal> &mdash; the hostname "
+"of the SMTP server to use"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:839
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.port</literal> &mdash; the port of "
+"the SMTP server to use"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:844
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.username</literal> &mdash; the "
+"username to use to connect to the SMTP server."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:849
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.password</literal> &mdash; the "
+"password to use to connect to the SMTP server"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:854
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.debug</literal> &mdash; enable "
+"JavaMail debugging (very verbose)"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:859
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.sessionJndiName</literal> &mdash; "
+"name under which a javax.mail.Session is bound to JNDI"
+msgstr ""
+
+#. Tag: title
+#: Components.xml:870
+#, no-c-format
+msgid "Infrastructural components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:871
+#, no-c-format
+msgid ""
+"These components provide critical platform infrastructure. You can install a "
+"component by including its class name in the <literal>org.jboss.seam.core."
+"init.componentClasses</literal> configuration property."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:876
+#, no-c-format
+msgid "org.jboss.seam.core.init"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:878
+#, no-c-format
+msgid "Initialization settings for Seam. Always installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:883
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.jndiPattern</literal> &mdash; the JNDI "
+"pattern used for looking up session beans"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:888
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.debug</literal> &mdash; enable Seam debug "
+"mode"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:893
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.clientSideConversations</literal> &mdash; "
+"if set to <literal>true</literal>, Seam will save conversation context "
+"variables in the client instead of in the <literal>HttpSession</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:898
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.userTransactionName</literal> &mdash; the "
+"JNDI name to use when looking up the JTA <literal>UserTransaction</literal> "
+"object."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:906
+#, no-c-format
+msgid "org.jboss.seam.core.manager"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:908
+#, no-c-format
+msgid ""
+"Internal component for Seam page and conversation context management. Always "
+"installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:913
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationTimeout</literal> &mdash; "
+"the conversation context timeout in milliseconds."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:918
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.concurrentRequestTimeout</literal> "
+"&mdash; maximum wait time for a thread attempting to gain a lock on the long-"
+"running conversation context."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:923
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationIdParameter</literal> "
+"&mdash; the request parameter used to propagate the conversation id, default "
+"to <literal>conversationId</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:928
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationIsLongRunningParameter</"
+"literal> &mdash; the request parameter used to propagate information about "
+"whether the conversation is long-running, default to "
+"<literal>conversationIsLongRunning</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:936
+#, no-c-format
+msgid "org.jboss.seam.core.pages"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:938
+#, no-c-format
+msgid "Internal component for Seam workspace management. Always installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:943
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.pages.noConversationViewId</literal> &mdash; "
+"global setting for the view id to redirect to when a conversation entry is "
+"not found on the server side."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:951
+#, no-c-format
+msgid "org.jboss.seam.core.ejb"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:953
+#, no-c-format
+msgid ""
+"Bootstraps the JBoss Embeddable EJB3 container. Install as class "
+"<literal>org.jboss.seam.core.Ejb</literal>. This is useful when using Seam "
+"with EJB components outside the context of a Java EE 5 application server."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:956
+#, no-c-format
+msgid ""
+"The basic Embedded EJB configuration is defined in <literal>jboss-embedded-"
+"beans.xml</literal>. Additional microcontainer configuration (for example, "
+"extra datasources) may be specified by <literal>jboss-beans.xml</literal> or "
+"<literal>META-INF/jboss-beans.xml</literal> in the classpath."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:962
+#, no-c-format
+msgid "org.jboss.seam.core.microcontainer"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:964
+#, no-c-format
+msgid ""
+"Bootstraps the JBoss microcontainer. Install as class <literal>org.jboss."
+"seam.core.Microcontainer</literal>. This is useful when using Seam with "
+"Hibernate and no EJB components outside the context of a Java EE application "
+"server. The microcontainer can provide a partial EE environment with JNDI, "
+"JTA, a JCA datasource and Hibernate."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:967
+#, no-c-format
+msgid ""
+"The microcontainer configuration may be specified by <literal>jboss-beans."
+"xml</literal> or <literal>META-INF/jboss-beans.xml</literal> in the "
+"classpath."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:973
+#, no-c-format
+msgid "org.jboss.seam.core.jbpm"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:975
+#, no-c-format
+msgid ""
+"Bootstraps a <literal>JbpmConfiguration</literal>. Install as class "
+"<literal>org.jboss.seam.core.Jbpm</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:980
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.jbpm.processDefinitions</literal> &mdash; a "
+"list of resource names of jPDL files to be used for orchestration of "
+"business processes."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:985
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.jbpm.pageflowDefinitions</literal> &mdash; a "
+"list of resource names of jPDL files to be used for orchestration of "
+"conversation page flows."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:993
+#, no-c-format
+msgid "org.jboss.seam.core.conversationEntries"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:995
+#, no-c-format
+msgid ""
+"Internal session-scoped component recording the active long-running "
+"conversations between requests."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1001
+#, no-c-format
+msgid "org.jboss.seam.core.facesPage"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1003
+#, no-c-format
+msgid ""
+"Internal page-scoped component recording the conversation context associated "
+"with a page."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1009
+#, no-c-format
+msgid "org.jboss.seam.core.persistenceContexts"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1011
+#, no-c-format
+msgid ""
+"Internal component recording the persistence contexts which were used in the "
+"current conversation."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1017
+#, no-c-format
+msgid "org.jboss.seam.jms.queueConnection"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1019
+#, no-c-format
+msgid ""
+"Manages a JMS <literal>QueueConnection</literal>. Installed whenever managed "
+"managed <literal>QueueSender</literal> is installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1024
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.jms.queueConnection.queueConnectionFactoryJndiName</"
+"literal> &mdash; the JNDI name of a JMS <literal>QueueConnectionFactory</"
+"literal>. Default to <literal>UIL2ConnectionFactory</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1032
+#, no-c-format
+msgid "org.jboss.seam.jms.topicConnection"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1034
+#, no-c-format
+msgid ""
+"Manages a JMS <literal>TopicConnection</literal>. Installed whenever managed "
+"managed <literal>TopicPublisher</literal> is installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1039
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.jms.topicConnection.topicConnectionFactoryJndiName</"
+"literal> &mdash; the JNDI name of a JMS <literal>TopicConnectionFactory</"
+"literal>. Default to <literal>UIL2ConnectionFactory</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1047
+#, no-c-format
+msgid "org.jboss.seam.persistence.persistenceProvider"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1049
+#, no-c-format
+msgid "Abstraction layer for non-standardized features of JPA provider."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1055
+#, no-c-format
+msgid "org.jboss.seam.core.validation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1057
+#, no-c-format
+msgid "Internal component for Hibernate Validator support."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1063
+#, no-c-format
+msgid "org.jboss.seam.debug.introspector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1065 Components.xml:1073
+#, no-c-format
+msgid "Support for the Seam Debug Page."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1071
+#, no-c-format
+msgid "org.jboss.seam.debug.contexts"
+msgstr ""
+
+#. Tag: title
+#: Components.xml:1082
+#, no-c-format
+msgid "Special components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1083
+#, no-c-format
+msgid ""
+"Certain special Seam component classes are installable multiple times under "
+"names specified in the Seam configuration. For example, the following lines "
+"in <literal>components.xml</literal> install and configure two Seam "
+"components:"
+msgstr ""
+
+#. Tag: programlisting
+#: Components.xml:1086
+#, no-c-format
+msgid ""
+"&lt;component name=\"bookingDatabase\"\n"
+"          class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"    &lt;property name=\"persistenceUnitJndiName\"&gt;java:/comp/emf/"
+"bookingPersistence&lt;/property&gt;\n"
+"&lt;/component&gt;\n"
+"\n"
+"&lt;component name=\"userDatabase\"\n"
+"          class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"    &lt;property name=\"persistenceUnitJndiName\"&gt;java:/comp/emf/"
+"userPersistence&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1087
+#, no-c-format
+msgid ""
+"The Seam component names are <literal>bookingDatabase</literal> and "
+"<literal>userDatabase</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1092
+#, no-c-format
+msgid "&lt;entityManager&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1093
+#, no-c-format
+msgid "org.jboss.seam.core.ManagedPersistenceContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1095
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed <literal>EntityManager</"
+"literal> with an extended persistence context."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1100
+#, no-c-format
+msgid ""
+"<literal>&lt;entityManager&gt;.entityManagerFactory</literal> &mdash; a "
+"value binding expression that evaluates to an instance of "
+"<literal>EntityManagerFactory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1103
+#, no-c-format
+msgid ""
+"<literal>&lt;entityManager&gt;.persistenceUnitJndiName</literal> &mdash; the "
+"JNDI name of the entity manager factory, default to <literal>java:/&lt;"
+"managedPersistenceContext&gt;</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1111
+#, no-c-format
+msgid "&lt;entityManagerFactory&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1112
+#, no-c-format
+msgid "org.jboss.seam.core.EntityManagerFactory"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1114
+#, no-c-format
+msgid ""
+"Manages a JPA <literal>EntityManagerFactory</literal>. This is most useful "
+"when using JPA outside of an EJB 3.0 supporting environment."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1119
+#, no-c-format
+msgid ""
+"<literal>entityManagerFactory.persistenceUnitName</literal> &mdash; the name "
+"of the persistence unit."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1124 Components.xml:1162
+#, no-c-format
+msgid "See the API JavaDoc for further configuration properties."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1130
+#, no-c-format
+msgid "&lt;session&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1131
+#, no-c-format
+msgid "org.jboss.seam.core.ManagedSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1133
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed Hibernate "
+"<literal>Session</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1138
+#, no-c-format
+msgid ""
+"<literal>&lt;session&gt;.sessionFactory</literal> &mdash; a value binding "
+"expression that evaluates to an instance of <literal>SessionFactory</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1141
+#, no-c-format
+msgid ""
+"<literal>&lt;session&gt;.sessionFactoryJndiName</literal> &mdash; the JNDI "
+"name of the session factory, default to <literal>java:/&lt;managedSession&gt;"
+"</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1149
+#, no-c-format
+msgid "&lt;sessionFactory&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1150
+#, no-c-format
+msgid "org.jboss.seam.core.HibernateSessionFactory"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1152
+#, no-c-format
+msgid "Manages a Hibernate <literal>SessionFactory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1157
+#, no-c-format
+msgid ""
+"<literal>&lt;sessionFactory&gt;.cfgResourceName</literal> &mdash; the path "
+"to the configuration file. Default to <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1168
+#, no-c-format
+msgid "&lt;managedQueueSender&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1169
+#, no-c-format
+msgid "org.jboss.seam.jms.ManagedQueueSender"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1171
+#, no-c-format
+msgid ""
+"Manager component for an event scoped managed JMS <literal>QueueSender</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1176
+#, no-c-format
+msgid ""
+"<literal>&lt;managedQueueSender&gt;.queueJndiName</literal> &mdash; the JNDI "
+"name of the JMS queue."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1184
+#, no-c-format
+msgid "&lt;managedTopicPublisher&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1185
+#, no-c-format
+msgid "org.jboss.seam.jms.ManagedTopicPublisher"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1187
+#, no-c-format
+msgid ""
+"Manager component for an event scoped managed JMS <literal>TopicPublisher</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1192
+#, no-c-format
+msgid ""
+"<literal>&lt;managedTopicPublisher&gt;.topicJndiName</literal> &mdash; the "
+"JNDI name of the JMS topic."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1200
+#, no-c-format
+msgid "&lt;managedWorkingMemory&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1201
+#, no-c-format
+msgid "org.jboss.seam.drools.ManagedWorkingMemory"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1203
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed Drools "
+"<literal>WorkingMemory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1208
+#, no-c-format
+msgid ""
+"<literal>&lt;managedWorkingMemory&gt;.ruleBase</literal> &mdash; a value "
+"expression that evaluates to an instance of <literal>RuleBase</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1216
+#, no-c-format
+msgid "&lt;ruleBase&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1217
+#, no-c-format
+msgid "org.jboss.seam.drools.RuleBase"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1219
+#, no-c-format
+msgid ""
+"Manager component for an application scoped Drools <literal>RuleBase</"
+"literal>. <emphasis>Note that this is not really intended for production "
+"usage, since it does not support dynamic installation of new rules.</"
+"emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1224
+#, no-c-format
+msgid ""
+"<literal>&lt;ruleBase&gt;.ruleFiles</literal> &mdash; a list of files "
+"containing Drools rules."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1227
+#, no-c-format
+msgid ""
+"<literal>&lt;ruleBase&gt;.dslFile</literal> &mdash; a Drools DSL definition."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1235
+#, no-c-format
+msgid "&lt;entityHome&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1236
+#, no-c-format
+msgid "org.jboss.seam.framework.EntityHome"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1240
+#, no-c-format
+msgid "&lt;hibernateEntityHome&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1241
+#, no-c-format
+msgid "org.jboss.seam.framework.HibernateEntityHome"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1245
+#, no-c-format
+msgid "&lt;entityQuery&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1246
+#, no-c-format
+msgid "org.jboss.seam.framework.EntityQuery"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1250
+#, no-c-format
+msgid "&lt;hibernateEntityQuery&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1251
+#, no-c-format
+msgid "org.jboss.seam.framework.HibernateEntityQuery"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Concepts.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Concepts.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Concepts.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1922 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Concepts.xml:10
+#, no-c-format
+msgid "The contextual component model"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:11
+#, no-c-format
+msgid ""
+"The two core concepts in Seam are the notion of a <emphasis>context</"
+"emphasis> and the notion of a <emphasis>component</emphasis>. Components are "
+"stateful objects, usually EJBs, and an instance of a component is associated "
+"with a context, and given a name in that context. <emphasis>Bijection</"
+"emphasis> provides a mechanism for aliasing internal component names "
+"(instance variables) to contextual names, allowing component trees to be "
+"dynamically assembled, and reassembled by Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:14
+#, no-c-format
+msgid "Let's start by describing the contexts built in to Seam."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:17
+#, no-c-format
+msgid "Seam contexts"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:18
+#, no-c-format
+msgid ""
+"Seam contexts are created and destroyed by the framework. The application "
+"does not control context demarcation via explicit Java API calls. Context "
+"are usually implicit. In some cases, however, contexts are demarcated via "
+"annotations."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:21
+#, no-c-format
+msgid "The basic Seam contexts are:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:26
+#, no-c-format
+msgid "<para>Stateless context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:31
+#, no-c-format
+msgid "Event (or request) context"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:36 Concepts.xml:151
+#, no-c-format
+msgid "<para>Page context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:41 Concepts.xml:156
+#, no-c-format
+msgid "<para>Conversation context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:46 Concepts.xml:161
+#, no-c-format
+msgid "<para>Session context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:51 Concepts.xml:166
+#, no-c-format
+msgid "<para>Business process context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:56 Concepts.xml:171
+#, no-c-format
+msgid "<para>Application context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:61
+#, no-c-format
+msgid ""
+"You will recognize some of these contexts from servlet and related "
+"specifications. However, two of them might be new to you: "
+"<emphasis>conversation context</emphasis>, and <emphasis>business process "
+"context</emphasis>. One reason state management in web applications is so "
+"fragile and error-prone is that the three built-in contexts (request, "
+"session and application) are not especially meaningful from the point of "
+"view of the business logic. A user login session, for example, is a fairly "
+"arbitrary construct in terms of the actual application work flow. Therefore, "
+"most Seam components are scoped to the conversation or business process "
+"contexts, since they are the contexts which are most meaningful in terms of "
+"the application."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:64
+#, no-c-format
+msgid "Let's look at each context in turn."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:67
+#, no-c-format
+msgid "<title>Stateless context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:68
+#, no-c-format
+msgid ""
+"Components which are truly stateless (stateless session beans, primarily) "
+"always live in the stateless context (this is really a non-context). "
+"Stateless components are not very interesting, and are arguably not very "
+"object-oriented. Nevertheless, they are important and often useful."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:71
+#, no-c-format
+msgid "<title>Event context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:72
+#, no-c-format
+msgid ""
+"The event context is the \"narrowest\" stateful context, and is a "
+"generalization of the notion of the web request context to cover other kinds "
+"of events. Nevertheless, the event context associated with the lifecycle of "
+"a JSF request is the most important example of an event context, and the one "
+"you will work with most often. Components associated with the event context "
+"are destroyed at the end of the request, but their state is available and "
+"well-defined for at least the lifecycle of the request."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:75
+#, no-c-format
+msgid ""
+"When you invoke a Seam component via RMI, or Seam Remoting, the event "
+"context is created and destroyed just for the invocation."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:78
+#, no-c-format
+msgid "<title>Page context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:79
+#, no-c-format
+msgid ""
+"The page context allows you to associate state with a particular instance of "
+"a rendered page. You can initialize state in your event listener, or while "
+"actually rendering the page, and then have access to it from any event that "
+"originates from that page. This is especially useful for functionality like "
+"clickable lists, where the list is backed by changing data on the server "
+"side. The state is actually serialized to the client, so this construct is "
+"extremely robust with respect to multi-window operation and the back button."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:82
+#, no-c-format
+msgid "<title>Conversation context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:83
+#, no-c-format
+msgid ""
+"The conversation context is a truly central concept in Seam. A "
+"<emphasis>conversation</emphasis> is a unit of work from the point of view "
+"of the user. It might span several interactions with the user, several "
+"requests, and several database transactions. But to the user, a conversation "
+"solves a single problem. For example, \"book hotel\", \"approve contract\", "
+"\"create order\" are all conversations. You might like to think of a "
+"conversation implementing a single \"use case\" or \"user story\", but the "
+"relationship is not necessarily quite exact."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:86
+#, no-c-format
+msgid ""
+"A conversation holds state associated with \"what the user is doing now, in "
+"this window\". A single user may have multiple conversations in progress at "
+"any point in time, usually in multiple windows. The conversation context "
+"allows us to ensure that state from the different conversations does not "
+"collide and cause bugs."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:89
+#, no-c-format
+msgid ""
+"It might take you some time to get used to thinking of applications in terms "
+"of conversations. But once you get used to it, we think you'll love the "
+"notion, and never be able to not think in terms of conversations again!"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:92
+#, no-c-format
+msgid ""
+"Some conversations last for just a single request. Conversations that span "
+"multiple requests must be demarcated using annotations provided by Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:95
+#, no-c-format
+msgid ""
+"Some conversations are also <emphasis>tasks</emphasis>. A task is a "
+"conversation that is significant in terms of a long-running business "
+"process, and has the potential to trigger a business process state "
+"transition when it is successfully completed. Seam provides a special set of "
+"annotations for task demarcation."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:98
+#, no-c-format
+msgid ""
+"Conversations may be <emphasis>nested</emphasis>, with one conversation "
+"taking place \"inside\" a wider conversation. This is an advanced feature."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:101
+#, no-c-format
+msgid ""
+"Usually, conversation state is actually held by Seam in the servlet session "
+"between requests. Seam implements configurable <emphasis>conversation "
+"timeout</emphasis>, automatically destroying inactive conversations, and "
+"thus ensuring that the state held by a single user login session does not "
+"grow without bound if the user abandons conversations."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:104
+#, no-c-format
+msgid ""
+"Seam serializes processing of concurrent requests that take place in the "
+"same long-running conversation context, in the same process."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:107
+#, no-c-format
+msgid ""
+"Alternatively, Seam may be configured to keep conversational state in the "
+"client browser."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:110
+#, no-c-format
+msgid "<title>Session context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:111
+#, no-c-format
+msgid ""
+"A session context holds state associated with the user login session. While "
+"there are some cases where it is useful to share state between several "
+"conversations, we generally frown on the use of session context for holding "
+"components other than global information about the logged in user."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:114
+#, no-c-format
+msgid ""
+"In a JSR-168 portal environment, the session context represents the portlet "
+"session."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:117
+#, no-c-format
+msgid "<title>Business process context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:118
+#, no-c-format
+msgid ""
+"The business process context holds state associated with the long running "
+"business process. This state is managed and made persistent by the BPM "
+"engine (JBoss jBPM). The business process spans multiple interactions with "
+"multiple users, so this state is shared between multiple users, but in a "
+"well-defined manner. The current task determines the current business "
+"process instance, and the lifecycle of the business process is defined "
+"externally using a <emphasis>process definition language</emphasis>, so "
+"there are no special annotations for business process demarcation."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:121
+#, no-c-format
+msgid "<title>Application context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:122
+#, no-c-format
+msgid ""
+"The application context is the familiar servlet context from the servlet "
+"spec. Application context is mainly useful for holding static information "
+"such as configuration data, reference data or metamodels. For example, Seam "
+"stores its own configuration and metamodel in the application context."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:125
+#, no-c-format
+msgid "Context variables"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:126
+#, no-c-format
+msgid ""
+"A context defines a namespace, a set of <emphasis>context variables</"
+"emphasis>. These work much the same as session or request attributes in the "
+"servlet spec. You may bind any value you like to a context variable, but "
+"usually we bind Seam component instances to context variables."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:129
+#, no-c-format
+msgid ""
+"So, within a context, a component instance is identified by the context "
+"variable name (this is usually, but not always, the same as the component "
+"name). You may programatically access a named component instance in a "
+"particular scope via the <literal>Contexts</literal> class, which provides "
+"access to several thread-bound instances of the <literal>Context</literal> "
+"interface:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:132
+#, no-c-format
+msgid "User user = (User) Contexts.getSessionContext().get(\"user\");"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:133
+#, no-c-format
+msgid "You may also set or change the value associated with a name:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:136
+#, no-c-format
+msgid "Contexts.getSessionContext().set(\"user\", user);"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:137
+#, no-c-format
+msgid ""
+"Usually, however, we obtain components from a context via injection, and put "
+"component instances into a context via outjection."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:140
+#, no-c-format
+msgid "Context search priority"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:141
+#, no-c-format
+msgid ""
+"Sometimes, as above, component instances are obtained from a particular "
+"known scope. Other times, all stateful scopes are searched, in "
+"<emphasis>priority order</emphasis>. The order is as follows:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:146
+#, no-c-format
+msgid "<para>Event context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:176
+#, no-c-format
+msgid ""
+"You can perform a priority search by calling <literal>Contexts."
+"lookupInStatefulContexts()</literal>. Whenever you access a component by "
+"name from a JSF page, a priority search occurs."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:179
+#, no-c-format
+msgid "Concurrency model"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:180
+#, no-c-format
+msgid ""
+"Neither the servlet nor EJB specifications define any facilities for "
+"managing concurrent requests originating from the same client. The servlet "
+"container simply lets all threads run concurrently and leaves enforcing "
+"threadsafeness to application code. The EJB container allows stateless "
+"components to be accessed concurrently, and throws an exception if multiple "
+"threads access a stateful session bean."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:183
+#, no-c-format
+msgid ""
+"This behavior might have been okay in old-style web applications which were "
+"based around fine-grained, synchronous requests. But for modern applications "
+"which make heavy use of many fine-grained, asynchronous (AJAX) requests, "
+"concurrency is a fact of life, and must be supported by the programming "
+"model. Seam weaves a concurrency management layer into its context model."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:186
+#, no-c-format
+msgid ""
+"The Seam session and application contexts are multithreaded. Seam will allow "
+"concurrent requests in a context to be processed concurrently. The event and "
+"page contexts are by nature single threaded. The business process context is "
+"strictly speaking multi-threaded, but in practice concurrency is "
+"sufficiently rare that this fact may be disregarded most of the time. "
+"Finally, Seam enforces a <emphasis>single thread per conversation per "
+"process</emphasis> model for the conversation context by serializing "
+"concurrent requests in the same long-running conversation context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:189
+#, no-c-format
+msgid ""
+"Since the session context is multithreaded, and often contains volatile "
+"state, session scope components are always protected by Seam from concurrent "
+"access. Seam serializes requests to session scope session beans and "
+"JavaBeans by default (and detects and breaks any deadlocks that occur). This "
+"is not the default behaviour for application scoped components however, "
+"since application scoped components do not usually hold volatile state and "
+"because synchronization at the global level is <emphasis>extremely</"
+"emphasis> expensive. However, you can force a serialized threading model on "
+"any session bean or JavaBean component by adding the <literal>@Synchronized</"
+"literal> annotation."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:192
+#, no-c-format
+msgid ""
+"This concurrency model means that AJAX clients can safely use volatile "
+"session and conversational state, without the need for any special work on "
+"the part of the developer."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:195
+#, no-c-format
+msgid "Seam components"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:196
+#, no-c-format
+msgid ""
+"Seam components are POJOs (Plain Old Java Objects). In particular, they are "
+"JavaBeans or EJB 3.0 enterprise beans. While Seam does not require that "
+"components be EJBs and can even be used without an EJB 3.0 compliant "
+"container, Seam was designed with EJB 3.0 in mind and includes deep "
+"integration with EJB 3.0. Seam supports the following <emphasis>component "
+"types</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:201
+#, no-c-format
+msgid "EJB 3.0 stateless session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:206
+#, no-c-format
+msgid "EJB 3.0 stateful session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:211
+#, no-c-format
+msgid "EJB 3.0 entity beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:216
+#, no-c-format
+msgid "<para>JavaBeans</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:221
+#, no-c-format
+msgid "EJB 3.0 message-driven beans"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:226
+#, no-c-format
+msgid "Stateless session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:227
+#, no-c-format
+msgid ""
+"Stateless session bean components are not able to hold state across multiple "
+"invocations. Therefore, they usually work by operating upon the state of "
+"other components in the various Seam contexts. They may be used as JSF "
+"action listeners, but cannot provide properties to JSF components for "
+"display."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:230
+#, no-c-format
+msgid "Stateless session beans always live in the stateless context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:233
+#, no-c-format
+msgid ""
+"Stateless session beans are the least interesting kind of Seam component."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:236
+#, no-c-format
+msgid "Stateful session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:237
+#, no-c-format
+msgid ""
+"Stateful session bean components are able to hold state not only across "
+"multiple invocations of the bean, but also across multiple requests. "
+"Application state that does not belong in the database should usually be "
+"held by stateful session beans. This is a major difference between Seam and "
+"many other web application frameworks. Instead of sticking information about "
+"the current conversation directly in the <literal>HttpSession</literal>, you "
+"should keep it in instance variables of a stateful session bean that is "
+"bound to the conversation context. This allows Seam to manage the lifecycle "
+"of this state for you, and ensure that there are no collisions between state "
+"relating to different concurrent conversations."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:240
+#, no-c-format
+msgid ""
+"Stateful session beans are often used as JSF action listener, and as backing "
+"beans that provide properties to JSF components for display or form "
+"submission."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:243
+#, no-c-format
+msgid ""
+"By default, stateful session beans are bound to the conversation context. "
+"They may never be bound to the page or stateless contexts."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:246
+#, no-c-format
+msgid ""
+"Concurrent requests to session-scoped stateful session beans are always "
+"serialized by Seam."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:249
+#, no-c-format
+msgid "Entity beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:250
+#, no-c-format
+msgid ""
+"Entity beans may be bound to a context variable and function as a seam "
+"component. Because entities have a persistent identity in addition to their "
+"contextual identity, entity instances are usually bound explicitly in Java "
+"code, rather than being instantiated implicitly by Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:253
+#, no-c-format
+msgid ""
+"Entity bean components do not support bijection or context demarcation. Nor "
+"does invocation of an entity bean trigger validation."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:256
+#, no-c-format
+msgid ""
+"Entity beans are not usually used as JSF action listeners, but do often "
+"function as backing beans that provide properties to JSF components for "
+"display or form submission. In particular, it is common to use an entity as "
+"a backing bean, together with a stateless session bean action listener to "
+"implement create/update/delete type functionality."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:259
+#, no-c-format
+msgid ""
+"By default, entity beans are bound to the conversation context. They may "
+"never be bound to the stateless context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:262
+#, no-c-format
+msgid ""
+"Note that it in a clustered environment is somewhat less efficient to bind "
+"an entity bean directly to a conversation or session scoped Seam context "
+"variable than it would be to hold a reference to the entity bean in a "
+"stateful session bean. For this reason, not all Seam applications define "
+"entity beans to be Seam components."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:265
+#, no-c-format
+msgid "<title>JavaBeans</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:266
+#, no-c-format
+msgid ""
+"Javabeans may be used just like a stateless or stateful session bean. "
+"However, they do not provide the functionality of a session bean "
+"(declarative transaction demarcation, declarative security, efficient "
+"clustered state replication, EJB 3.0 persistence, timeout methods, etc)."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:269
+#, no-c-format
+msgid ""
+"In a later chapter, we show you how to use Seam and Hibernate without an EJB "
+"container. In this use case, components are JavaBeans instead of session "
+"beans. Note, however, that in many application servers it is somewhat less "
+"efficient to cluster conversation or session scoped Seam JavaBean components "
+"than it is to cluster stateful session bean components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:272
+#, no-c-format
+msgid "By default, JavaBeans are bound to the event context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:275
+#, no-c-format
+msgid ""
+"Concurrent requests to session-scoped JavaBeans are always serialized by "
+"Seam."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:278
+#, no-c-format
+msgid "Message-driven beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:279
+#, no-c-format
+msgid ""
+"Message-driven beans may function as a seam component. However, message-"
+"driven beans are called quite differently to other Seam components - instead "
+"of invoking them via the context variable, they listen for messages sent to "
+"a JMS queue or topic."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:282
+#, no-c-format
+msgid ""
+"Message-driven beans may not be bound to a Seam context. Nor do they have "
+"access to the session or conversation state of their \"caller\". However, "
+"they do support bijection and some other Seam functionality."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:285
+#, no-c-format
+msgid "Interception"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:286
+#, no-c-format
+msgid ""
+"In order to perform its magic (bijection, context demarcation, validation, "
+"etc), Seam must intercept component invocations. For JavaBeans, Seam is in "
+"full control of instantiation of the component, and no special configuration "
+"is needed. For entity beans, interception is not required since bijection "
+"and context demarcation are not defined. For session beans, we must register "
+"an EJB interceptor for the session bean component. We could use an "
+"annotation, as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:289
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:290
+#, no-c-format
+msgid ""
+"But a much better way is to define the interceptor in <literal>ejb-jar.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:293
+#, no-c-format
+msgid ""
+"&lt;interceptors&gt;\n"
+"   &lt;interceptor&gt;\n"
+"      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"   &lt;/interceptor&gt;\n"
+"&lt;/interceptors&gt;\n"
+"   \n"
+"&lt;assembly-descriptor&gt;\n"
+"   &lt;interceptor-binding&gt;\n"
+"      &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"   &lt;/interceptor-binding&gt;\n"
+"&lt;/assembly-descriptor&gt;"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:294
+#, no-c-format
+msgid "Component names"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:295
+#, no-c-format
+msgid ""
+"All seam components need a name. We can assign a name to a component using "
+"the <literal>@Name</literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:298
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:299
+#, no-c-format
+msgid ""
+"This name is the <emphasis>seam component name</emphasis> and is not related "
+"to any other name defined by the EJB specification. However, seam component "
+"names work just like JSF managed bean names and you can think of the two "
+"concepts as identical."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:302
+#, no-c-format
+msgid ""
+"<literal>@Name</literal> is not the only way to define a component name, but "
+"we always need to specify the name <emphasis>somewhere</emphasis>. If we "
+"don't, then none of the other Seam annotations will function."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:305
+#, no-c-format
+msgid ""
+"Just like in JSF, a seam component instance is usually bound to a context "
+"variable with the same name as the component name. So, for example, we would "
+"access the <literal>LoginAction</literal> using <literal>Contexts."
+"getStatelessContext().get(\"loginAction\")</literal>. In particular, "
+"whenever Seam itself instantiates a component, it binds the new instance to "
+"a variable with the component name. However, again like JSF, it is possible "
+"for the application to bind a component to some other context variable by "
+"programmatic API call. This is only useful if a particular component serves "
+"more than one role in the system. For example, the currently logged in "
+"<literal>User</literal> might be bound to the <literal>currentUser</literal> "
+"session context variable, while a <literal>User</literal> that is the "
+"subject of some administration functionality might be bound to the "
+"<literal>user</literal> conversation context variable."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:308
+#, no-c-format
+msgid ""
+"For very large applications, and for built-in seam components, qualified "
+"names are often used."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:311
+#, no-c-format
+msgid ""
+"@Name(\"com.jboss.myapp.loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:312
+#, no-c-format
+msgid ""
+"We may use the qualified component name both in Java code and in JSF's "
+"expression language:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:315
+#, no-c-format
+msgid ""
+"&lt;h:commandButton type=\"submit\" value=\"Login\"\n"
+"                 action=\"#{com.jboss.myapp.loginAction.login}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:316
+#, no-c-format
+msgid ""
+"Since this is noisy, Seam also provides a means of aliasing a qualified name "
+"to a simple name. Add a line like this to the <literal>components.xml</"
+"literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:319
+#, no-c-format
+msgid ""
+"&lt;factory name=\"loginAction\" scope=\"STATELESS\" value=\"#{com.jboss."
+"myapp.loginAction}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:320
+#, no-c-format
+msgid ""
+"All of the built-in Seam components have qualified names, but most of them "
+"are aliased to a simple name by the <literal>components.xml</literal> file "
+"included in the Seam jar."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:323
+#, no-c-format
+msgid "Defining the component scope"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:324
+#, no-c-format
+msgid ""
+"We can override the default scope (context) of a component using the "
+"<literal>@Scope</literal> annotation. This lets us define what context a "
+"component instance is bound to, when it is instantiated by Seam."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:327
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(SESSION)\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:328
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.ScopeType</literal> defines an enumeration of "
+"possible scopes."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:331
+#, no-c-format
+msgid "Components with multiple roles"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:332
+#, no-c-format
+msgid ""
+"Some Seam component classes can fulfill more than one role in the system. "
+"For example, we often have a <literal>User</literal> class which is usually "
+"used as a session-scoped component representing the current user but is used "
+"in user administration screens as a conversation-scoped component. The "
+"<literal>@Role</literal> annotation lets us define an additional named role "
+"for a component, with a different scope&mdash;it lets us bind the same "
+"component class to different context variables. (Any Seam component "
+"<emphasis>instance</emphasis> may be bound to multiple context variables, "
+"but this lets us do it at the class level, and take advantage of auto-"
+"instantiation.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:335
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(CONVERSATION)\n"
+"@Role(name=\"currentUser\", scope=SESSION)\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:336
+#, no-c-format
+msgid ""
+"The <literal>@Roles</literal> annotation lets us specify as many additional "
+"roles as we like."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:339
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(CONVERSATION)\n"
+"@Roles({@Role(name=\"currentUser\", scope=SESSION)\n"
+"        @Role(name=\"tempUser\", scope=EVENT)})\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:340
+#, no-c-format
+msgid "Built-in components"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:341
+#, no-c-format
+msgid ""
+"Like many good frameworks, Seam eats its own dogfood and is implemented "
+"mostly as a set of built-in Seam interceptors (see later) and Seam "
+"components. This makes it easy for applications to interact with built-in "
+"components at runtime or even customize the basic functionality of Seam by "
+"replacing the built-in components with custom implementations. The built-in "
+"components are defined in the Seam namespace <literal>org.jboss.seam.core</"
+"literal> and the Java package of the same name."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:344
+#, no-c-format
+msgid ""
+"The built-in components may be injected, just like any Seam components, but "
+"they also provide convenient static <literal>instance()</literal> methods:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:347
+#, no-c-format
+msgid "FacesMessages.instance().add(\"Welcome back, #{user.name}!\");"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:348
+#, no-c-format
+msgid ""
+"Seam was designed to integrate tightly in a Java EE 5 environment. However, "
+"we understand that there are many projects which are not running in a full "
+"EE environment. We also realize the critical importance of easy unit and "
+"integration testing using frameworks such as TestNG and JUnit. So, we've "
+"made it easy to run Seam in Java SE environments by allowing you to boostrap "
+"certain critical infrastructure normally only found in EE environments by "
+"installing built-in Seam components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:351
+#, no-c-format
+msgid ""
+"For example, you can run your EJB3 components in Tomcat or an integration "
+"test suite just by installing the built-in component <literal>org.jboss.seam."
+"core.ejb</literal>, which automatically bootstraps the JBoss Embeddable EJB3 "
+"container and deploys your EJB components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:354
+#, no-c-format
+msgid ""
+"Or, if you're not quite ready for the Brave New World of EJB 3.0, you can "
+"write a Seam application that uses only JavaBean components, together with "
+"Hibernate3 for persistence, by installing a built-in component that manages "
+"a Hibernate <literal>SessionFactory</literal>. When using Hibernate outside "
+"of a J2EE environment, you will also probably need a JTA transaction manager "
+"and JNDI server, which are available via the built-in component <literal>org."
+"jboss.seam.core.microcontainer</literal>. This lets you use the bulletproof "
+"JTA/JCA pooling datasource from JBoss application server in an SE "
+"environment like Tomcat!"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:357
+#, no-c-format
+msgid "Bijection"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:358
+#, no-c-format
+msgid ""
+"<emphasis>Dependency injection</emphasis> or <emphasis>inversion of control</"
+"emphasis> is by now a familiar concept to most Java developers. Dependency "
+"injection allows a component to obtain a reference to another component by "
+"having the container \"inject\" the other component to a setter method or "
+"instance variable. In all dependency injection implementations that we have "
+"seen, injection occurs when the component is constructed, and the reference "
+"does not subsequently change for the lifetime of the component instance. For "
+"stateless components, this is reasonable. From the point of view of a "
+"client, all instances of a particular stateless component are "
+"interchangeable. On the other hand, Seam emphasizes the use of stateful "
+"components. So traditional dependency injection is no longer a very useful "
+"construct. Seam introduces the notion of <emphasis>bijection</emphasis> as a "
+"generalization of injection. In contrast to injection, bijection is:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:363
+#, no-c-format
+msgid ""
+"<emphasis>contextual</emphasis> - bijection is used to assemble stateful "
+"components from various different contexts (a component from a \"wider\" "
+"context may even have a reference to a component from a \"narrower\" context)"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:368
+#, no-c-format
+msgid ""
+"<emphasis>bidirectional</emphasis> - values are injected from context "
+"variables into attributes of the component being invoked, and also "
+"<emphasis>outjected</emphasis> from the component attributes back out to the "
+"context, allowing the component being invoked to manipulate the values of "
+"contextual variables simply by setting its own instance variables"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:373
+#, no-c-format
+msgid ""
+"<emphasis>dynamic</emphasis> - since the value of contextual variables "
+"changes over time, and since Seam components are stateful, bijection takes "
+"place every time a component is invoked"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:378
+#, no-c-format
+msgid ""
+"In essence, bijection lets you alias a context variable to a component "
+"instance variable, by specifying that the value of the instance variable is "
+"injected, outjected, or both. Of course, we use annotations to enable "
+"bijection."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:381
+#, no-c-format
+msgid ""
+"The <literal>@In</literal> annotation specifies that a value should be "
+"injected, either into an instance variable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:384
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:385
+#, no-c-format
+msgid "or into a setter method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:388
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @In\n"
+"    public void setUser(User user) {\n"
+"        this.user=user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:389
+#, no-c-format
+msgid ""
+"By default, Seam will do a priority search of all contexts, using the name "
+"of the property or instance variable that is being injected. You may wish to "
+"specify the context variable name explicitly, using, for example, "
+"<literal>@In(\"currentUser\")</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:392
+#, no-c-format
+msgid ""
+"If you want Seam to create an instance of the component when there is no "
+"existing component instance bound to the named context variable, you should "
+"specify <literal>@In(create=true)</literal>. If the value is optional (it "
+"can be null), specify <literal>@In(required=false)</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:395
+#, no-c-format
+msgid ""
+"For some components, it can be repetitive to have to specify <literal>@In"
+"(create=true)</literal> everywhere they are used. In such cases, you can "
+"annotate the component <literal>@AutoCreate</literal>, and then it will "
+"always be created, whenever needed, even without the explicit use of "
+"<literal>create=true</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:398
+#, no-c-format
+msgid "You can even inject the value of an expression:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:401
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In(\"#{user.username}\") String username;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:402
+#, no-c-format
+msgid ""
+"(There is much more information about component lifecycle and injection in "
+"the next chapter.)"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:405
+#, no-c-format
+msgid ""
+"The <literal>@Out</literal> annotation specifies that an attribute should be "
+"outjected, either from an instance variable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:408
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @Out User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:409
+#, no-c-format
+msgid "or from a getter method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:412
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @Out\n"
+"    public User getUser() {\n"
+"        return user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:413
+#, no-c-format
+msgid "An attribute may be both injected and outjected:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:416
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In @Out User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:417
+#, no-c-format
+msgid "<para>or:</para>"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:420
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @In\n"
+"    public void setUser(User user) {\n"
+"        this.user=user;\n"
+"    }\n"
+"    \n"
+"    @Out\n"
+"    public User getUser() {\n"
+"        return user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:421
+#, no-c-format
+msgid "Lifecycle methods"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:422
+#, no-c-format
+msgid ""
+"Session bean and entity bean Seam components support all the usual EJB 3.0 "
+"lifecycle callback (<literal>@PostConstruct</literal>, <literal>@PreDestroy</"
+"literal>, etc). Seam extends all of these callbacks except "
+"<literal>@PreDestroy</literal> to JavaBean components. But Seam also defines "
+"its own component lifecycle callbacks."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:425
+#, no-c-format
+msgid ""
+"The <literal>@Create</literal> method is called every time Seam instantiates "
+"a component. Unlike the <literal>@PostConstruct</literal> method, this "
+"method is called after the component is fully constructed by the EJB "
+"container, and has access to all the usual Seam functionality (bijection, "
+"etc). Components may define only one <literal>@Create</literal> method."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:428
+#, no-c-format
+msgid ""
+"The <literal>@Destroy</literal> method is called when the context that the "
+"Seam component is bound to ends. Components may define only one "
+"<literal>@Destroy</literal> method. Stateful session bean components "
+"<emphasis>must</emphasis> define a method annotated <literal>@Destroy "
+"@Remove</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:431
+#, no-c-format
+msgid ""
+"Finally, a related annotation is the <literal>@Startup</literal> annotation, "
+"which may be applied to any application or session scoped component. The "
+"<literal>@Startup</literal> annotation tells Seam to instantiate the "
+"component immediately, when the context begins, instead of waiting until it "
+"is first referenced by a client. It is possible to control the order of "
+"instantiation of startup components by specifying <literal>@Startup(depends="
+"{....})</literal>."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:434
+#, no-c-format
+msgid "Conditional installation"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:435
+#, no-c-format
+msgid ""
+"The <literal>@Install</literal> annotation lets you control conditional "
+"installation of components that are required in some deployment scenarios "
+"and not in others. This is useful if:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:440
+#, no-c-format
+msgid "You want to mock out some infrastructural component in tests."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:445
+#, no-c-format
+msgid ""
+"You want change the implementation of a component in certain deployment "
+"scenarios."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:450
+#, no-c-format
+msgid ""
+"You want to install some components only if their dependencies are available "
+"(useful for framework authors)."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:455
+#, no-c-format
+msgid ""
+"<literal>@Install</literal> works by letting you specify "
+"<emphasis>precedence</emphasis> and <emphasis>dependencies</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:458
+#, no-c-format
+msgid ""
+"The precedence of a component is a number that Seam uses to decide which "
+"component to install when there are multiple classes with the same component "
+"name in the classpath. Seam will choose the component with the higher "
+"precendence. There are some predefined precedence values:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:463
+#, no-c-format
+msgid ""
+"<literal>BUILT_IN</literal> &mdash; the lowest precedece components are the "
+"components built in to Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:468
+#, no-c-format
+msgid ""
+"<literal>FRAMEWORK</literal> &mdash; components defined by third-party "
+"frameworks may override built-in components, but are overridden by "
+"application components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:473
+#, no-c-format
+msgid ""
+"<literal>APPLICATION</literal> &mdash; the default precedence. This is "
+"appropriate for most application components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:478
+#, no-c-format
+msgid ""
+"<literal>DEPLOYMENT</literal> &mdash; for application components which are "
+"deployment-specific."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:483
+#, no-c-format
+msgid "<literal>MOCK</literal> &mdash; for mock objects used in testing."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:488
+#, no-c-format
+msgid ""
+"Suppose we have a component named <literal>messageSender</literal> that "
+"talks to a JMS queue."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:491
+#, no-c-format
+msgid ""
+"@Name(\"messageSender\") \n"
+"public class MessageSender {\n"
+"    public void sendMessage() {\n"
+"        //do something with JMS\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:492
+#, no-c-format
+msgid ""
+"In our unit tests, we don't have a JMS queue available, so we would like to "
+"stub out this method. We'll create a <emphasis>mock</emphasis> component "
+"that exists in the classpath when unit tests are running, but is never "
+"deployed with the application:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:495
+#, no-c-format
+msgid ""
+"@Name(\"messageSender\") \n"
+"@Install(precedence=MOCK)\n"
+"public class MockMessageSender extends MessageSender {\n"
+"    public void sendMessage() {\n"
+"        //do nothing!\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:496
+#, no-c-format
+msgid ""
+"The <literal>precedence</literal> helps Seam decide which version to use "
+"when it finds both components in the classpath."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:499
+#, no-c-format
+msgid ""
+"This is nice if we are able to control exactly which classes are in the "
+"classpath. But if I'm writing a reusable framework with many dependecies, I "
+"don't want to have to break that framework across many jars. I want to be "
+"able to decide which components to install depending upon what other "
+"components are installed, and upon what classes are available in the "
+"classpath. The <literal>@Install</literal> annotation also controls this "
+"functionality. Seam uses this mechanism internally to enable conditional "
+"installation of many of the built-in components. However, you probably won't "
+"need to use it in your application."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:502
+#, no-c-format
+msgid "Logging"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:503
+#, no-c-format
+msgid "Who is not totally fed up with seeing noisy code like this?"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:506
+#, no-c-format
+msgid ""
+"private static final Log log = LogFactory.getLog(CreateOrderAction.class);\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    if ( log.isDebugEnabled() ) {\n"
+"        log.debug(\"Creating new order for user: \" + user.username() + \n"
+"            \" product: \" + product.name() \n"
+"            + \" quantity: \" + quantity);\n"
+"    }\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:507
+#, no-c-format
+msgid ""
+"It is difficult to imagine how the code for a simple log message could "
+"possibly be more verbose. There is more lines of code tied up in logging "
+"than in the actual business logic! I remain totally astonished that the Java "
+"community has not come up with anything better in 10 years."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:510
+#, no-c-format
+msgid ""
+"Seam provides a logging API built on top of Apache commons-logging that "
+"simplifies this code significantly:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:513
+#, no-c-format
+msgid ""
+"@Logger private Log log;\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    log.debug(\"Creating new order for user: #0 product: #1 quantity: #2\", "
+"user.username(), \n"
+"       product.name(), quantity);\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:514
+#, no-c-format
+msgid ""
+"It doesn't matter if you declare the <literal>log</literal> variable static "
+"or not&mdash;it will work either way."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:517
+#, no-c-format
+msgid ""
+"Note that we don't need the noisy <literal>if ( log.isDebugEnabled() )</"
+"literal> guard, since string concatenation happens <emphasis>inside</"
+"emphasis> the <literal>debug()</literal> method. Note also that we don't "
+"usually need to specify the log category explicitly, since Seam knows what "
+"component it is injecting the <literal>Log</literal> into."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:520
+#, no-c-format
+msgid ""
+"If <literal>User</literal> and <literal>Product</literal> are Seam "
+"components available in the current contexts, it gets even better:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:523
+#, no-c-format
+msgid ""
+"@Logger private Log log;\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    log.debug(\"Creating new order for user: #{user.username} product: #"
+"{product.name}\n"
+"       quantity: #0\", quantity);\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:524
+#, no-c-format
+msgid ""
+"The <literal>Mutable</literal> interface and <literal>@ReadOnly</literal>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:525
+#, no-c-format
+msgid ""
+"Many application servers feature an amazingly broken implementation of "
+"<literal>HttpSession</literal> clustering, where changes to the state of "
+"mutable objects bound to the session are only replicated when the "
+"application calls <literal>setAttribute()</literal> explicitly. This is a "
+"source of bugs that can not effectively be tested for at development time, "
+"since they will only manifest when failover occurs. Furthermore, the actual "
+"replication message contains the entire serialized object graph bound to the "
+"session attribute, which is inefficient."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:528
+#, no-c-format
+msgid ""
+"Of course, EJB stateful session beans must perform automatic dirty checking "
+"and replication of mutable state and a sophisticated EJB container can "
+"introduce optimizations such as attribute-level replication. Unfortunately, "
+"not all Seam users have the good fortune to be working in an environment "
+"that supports EJB 3.0. So, for session and conversation scoped JavaBean and "
+"entity bean components, Seam provides an extra layer of cluster-safe state "
+"management over the top of the web container session clustering."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:531
+#, no-c-format
+msgid ""
+"For session or conversation scoped JavaBean components, Seam automatically "
+"forces replication to occur by calling <literal>setAttribute()</literal> "
+"once in every request that the component was invoked by the application. Of "
+"course, this strategy is inefficient for read-mostly components. You can "
+"control this behavior by implementing the <literal>org.jboss.seam.core."
+"Mutable</literal> interface, or by extending <literal>org.jboss.seam.core."
+"AbstractMutable</literal>, and writing your own dirty-checking logic inside "
+"the component. For example,"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:534
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class Account extends AbstractMutable\n"
+"{\n"
+"    private BigDecimal balance;\n"
+"    \n"
+"    public void setBalance(BigDecimal balance)\n"
+"    {\n"
+"        setDirty(this.balance, balance);\n"
+"        this.balance = balance;\n"
+"    }\n"
+"    \n"
+"    public BigDecimal getBalance()\n"
+"    {\n"
+"        return balance;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:535
+#, no-c-format
+msgid ""
+"Or, you can use the <literal>@ReadOnly</literal> annotation to achieve a "
+"similar effect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:538
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class Account\n"
+"{\n"
+"    private BigDecimal balance;\n"
+"    \n"
+"    public void setBalance(BigDecimal balance)\n"
+"    {\n"
+"        this.balance = balance;\n"
+"    }\n"
+"    \n"
+"    @ReadOnly\n"
+"    public BigDecimal getBalance()\n"
+"    {\n"
+"        return balance;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:539
+#, no-c-format
+msgid ""
+"For session or conversation scoped entity bean components, Seam "
+"automatically forces replication to occur by calling <literal>setAttribute()"
+"</literal> once in every request, <emphasis>unless the (conversation-scoped) "
+"entity is currently associated with a Seam-managed persistence context, in "
+"which case no replication is needed</emphasis>. This strategy is not "
+"necessarily efficient, so session or conversation scope entity beans should "
+"be used with care. You can always write a stateful session bean or JavaBean "
+"component to \"manage\" the entity bean instance. For example,"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:542
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"account\")\n"
+"public class AccountManager extends AbstractMutable\n"
+"{\n"
+"    private Account account; // an entity bean\n"
+"    \n"
+"    @Unwrap\n"
+"    public void getAccount()\n"
+"    {\n"
+"        return account;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:543
+#, no-c-format
+msgid ""
+"Note that the <literal>EntityHome</literal> class in the Seam Application "
+"Framework provides a great example of this pattern."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:546
+#, no-c-format
+msgid "Factory and manager components"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:547
+#, no-c-format
+msgid ""
+"We often need to work with objects that are not Seam components. But we "
+"still want to be able to inject them into our components using <literal>@In</"
+"literal> and use them in value and method binding expressions, etc. "
+"Sometimes, we even need to tie them into the Seam context lifecycle "
+"(<literal>@Destroy</literal>, for example). So the Seam contexts can contain "
+"objects which are not Seam components, and Seam provides a couple of nice "
+"features that make it easier to work with non-component objects bound to "
+"contexts."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:550
+#, no-c-format
+msgid ""
+"The <emphasis>factory component pattern</emphasis> lets a Seam component act "
+"as the instantiator for a non-component object. A <emphasis>factory method</"
+"emphasis> will be called when a context variable is referenced but has no "
+"value bound to it. We define factory methods using the <literal>@Factory</"
+"literal> annotation. The factory method binds a value to the context "
+"variable, and determines the scope of the bound value. There are two styles "
+"of factory method. The first style returns a value, which is bound to the "
+"context by Seam:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:553
+#, no-c-format
+msgid ""
+"@Factory(scope=CONVERSATION)\n"
+"public List&lt;Customer&gt; getCustomerList() { \n"
+"    return ... ;\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:554
+#, no-c-format
+msgid ""
+"The second style is a method of type <literal>void</literal> which binds the "
+"value to the context variable itself:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:557
+#, no-c-format
+msgid ""
+"@DataModel List&lt;Customer&gt; customerList;\n"
+"\n"
+"@Factory(\"customerList\")\n"
+"public void initCustomerList() { \n"
+"    customerList = ...  ;\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:558
+#, no-c-format
+msgid ""
+"In both cases, the factory method is called when we reference the "
+"<literal>customerList</literal> context variable and its value is null, and "
+"then has no further part to play in the lifecycle of the value. An even more "
+"powerful pattern is the <emphasis>manager component pattern</emphasis>. In "
+"this case, we have a Seam component that is bound to a context variable, "
+"that manages the value of the context variable, while remaining invisible to "
+"clients."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:561
+#, no-c-format
+msgid ""
+"A manager component is any component with an <literal>@Unwrap</literal> "
+"method. This method returns the value that will be visable to clients, and "
+"is called <emphasis>every time</emphasis> a context variable is referenced."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:564
+#, no-c-format
+msgid ""
+"@Name(\"customerList\")\n"
+"@Scope(CONVERSATION)\n"
+"public class CustomerListManager\n"
+"{\n"
+"    ...\n"
+"    \n"
+"    @Unwrap\n"
+"    public List&lt;Customer&gt; getCustomerList() { \n"
+"        return ... ;\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:565
+#, no-c-format
+msgid ""
+"This pattern is especially useful if we have some heavyweight object that "
+"needs a cleanup operation when the context ends. In this case, the manager "
+"component may perform cleanup in the <literal>@Destroy</literal> method."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Configuration.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Configuration.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Configuration.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1435 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Configuration.xml:10
+#, no-c-format
+msgid "Configuring Seam and packaging Seam applications"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:11
+#, no-c-format
+msgid ""
+"Configuration is a very boring topic and an extremely tedious pastime. "
+"Unfortunately, several lines of XML are required to integrate Seam into your "
+"JSF implementation and servlet container. There's no need to be too put off "
+"by the following sections; you'll never need to type any of this stuff "
+"yourself, since you can just copy and paste from the example applications!"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:14
+#, no-c-format
+msgid "Basic Seam configuration"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:15
+#, no-c-format
+msgid ""
+"First, let's look at the basic configuration that is needed whenever we use "
+"Seam with JSF."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:18
+#, no-c-format
+msgid "Integrating Seam with JSF and your servlet container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:19
+#, no-c-format
+msgid ""
+"Seam requires the following entry in your <literal>web.xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:22
+#, no-c-format
+msgid ""
+"&lt;listener&gt;\n"
+"    &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/listener-"
+"class&gt;\n"
+"&lt;/listener&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:23
+#, no-c-format
+msgid ""
+"This listener is responsible for bootstrapping Seam, and for destroying "
+"session and application contexts."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:26
+#, no-c-format
+msgid ""
+"To integrate with the JSF request lifecycle, we also need a JSF "
+"<literal>PhaseListener</literal> registered in in the <literal>faces-config."
+"xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:29
+#, no-c-format
+msgid ""
+"&lt;lifecycle&gt;\n"
+"    &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-"
+"listener&gt;\n"
+"&lt;/lifecycle&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:30
+#, no-c-format
+msgid ""
+"The actual listener class here varies depending upon how you want to manage "
+"transaction demarcation (more on this below)."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:33
+#, no-c-format
+msgid ""
+"If you are using Sun's JSF 1.2 reference implementation, you should also add "
+"this to <literal>faces-config.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:36
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;el-resolver&gt;org.jboss.seam.jsf.SeamELResolver&lt;/el-"
+"resolver&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:37
+#, no-c-format
+msgid ""
+"(This line should not strictly speaking be necessary, but it works around a "
+"minor bug in the RI.)"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:40
+#, no-c-format
+msgid ""
+"Some JSF implementations have a broken implementation of server-side state "
+"saving that interferes with Seam's conversation propagation. If you have "
+"problems with conversation propagation during form submissions, try "
+"switching to client-side state saving. You'll need this in <literal>web.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:43
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;client&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:44
+#, no-c-format
+msgid "Seam servlet filters"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:45
+#, no-c-format
+msgid ""
+"Seam doesn't need any servlet filters for basic operation. However, there "
+"are several features which depend upon the use of filters. To make things "
+"easier for you guys, Seam lets you add and configure servlet filters just "
+"like you would configure other built-in Seam components. To take advantage "
+"of this feature, we must first install a master filter in <literal>web.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:48
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;/*&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:49
+#, no-c-format
+msgid "Adding the master filter enables the following built-in filters."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:52
+#, no-c-format
+msgid "Exception handling"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:53
+#, no-c-format
+msgid ""
+"This filter provides the exception mapping functionality in <literal>pages."
+"xml</literal> (almost all applications will need this). It also takes care "
+"of rolling back uncommitted transactions when uncaught exceptions occur. "
+"(According to the Java EE specification, the web container should do this "
+"automatically, but we've found that this behavior cannot be relied upon in "
+"all application servers. And it is certainly not required of plain servlet "
+"engines like Tomcat.)"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:56
+#, no-c-format
+msgid ""
+"By default, the exception handling filter will process all requests, however "
+"this behavior may be adjusted by adding a <literal>&lt;web:exception-"
+"filter&gt;</literal> entry to <literal>components.xml</literal>, as shown in "
+"this example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:59
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:web=\"http://jboss.com/products/seam/web\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                    http://jboss.com/products/seam/core-1.2.xsd\n"
+"                 http://jboss.com/products/seam/components \n"
+"                     http://jboss.com/products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/web \n"
+"                     http://jboss.com/products/seam/web-1.2.xsd\"&gt;\n"
+"\n"
+"    &lt;web:exception-filter url-pattern=\"*.seam\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:62 Configuration.xml:77 Configuration.xml:99
+#: Configuration.xml:124
+#, no-c-format
+msgid ""
+"<literal>url-pattern</literal> &mdash; Used to specify which requests are "
+"filtered, the default is all requests."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:67
+#, no-c-format
+msgid "Conversation propagation with redirects"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:68
+#, no-c-format
+msgid ""
+"This filter allows Seam to propagate the conversation context across browser "
+"redirects. It intercepts any browser redirects and adds a request parameter "
+"that specifies the Seam conversation identifier."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:71
+#, no-c-format
+msgid ""
+"The redirect filter will process all requests by default, but this behavior "
+"can also be adjusted in <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:74
+#, no-c-format
+msgid "&lt;web:redirect-filter url-pattern=\"*.seam\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:82
+#, no-c-format
+msgid "Multipart form submissions"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:83
+#, no-c-format
+msgid ""
+"This feature is necessary when using the Seam file upload JSF control. It "
+"detects multipart form requests and processes them according to the "
+"multipart/form-data specification (RFC-2388). To override the default "
+"settings, add the following entry to <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:86
+#, no-c-format
+msgid ""
+"&lt;web:multipart-filter create-temp-files=\"true\" \n"
+"        max-request-size=\"1000000\" \n"
+"        url-pattern=\"*.seam\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:89
+#, no-c-format
+msgid ""
+"<literal>create-temp-files</literal> &mdash; If set to <literal>true</"
+"literal>, uploaded files are written to a temporary file (instead of held in "
+"memory). This may be an important consideration if large file uploads are "
+"expected. The default setting is <literal>false</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:94
+#, no-c-format
+msgid ""
+"<literal>max-request-size</literal> &mdash; If the size of a file upload "
+"request (determined by reading the <literal>Content-Length</literal> header "
+"in the request) exceeds this value, the request will be aborted. The default "
+"setting is 0 (no size limit)."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:104
+#, no-c-format
+msgid "Character encoding"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:105
+#, no-c-format
+msgid "Sets the character encoding of submitted form data."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:108 Configuration.xml:136
+#, no-c-format
+msgid ""
+"This filter is not installed by default and requires an entry in "
+"<literal>components.xml</literal> to enable it:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:111
+#, no-c-format
+msgid ""
+"&lt;web:character-encoding-filter encoding=\"UTF-16\" \n"
+"        override-client=\"true\" \n"
+"        url-pattern=\"*.seam\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:114
+#, no-c-format
+msgid "<literal>encoding</literal> &mdash; The encoding to use."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:119
+#, no-c-format
+msgid ""
+"<literal>override-client</literal> &mdash; If this is set to <literal>true</"
+"literal>, the request encoding will be set to whatever is specified by "
+"<literal>encoding</literal> no matter whether the request already specifies "
+"an encoding or not. If set to <literal>false</literal>, the request encoding "
+"will only be set if the request doesn't already specify an encoding. The "
+"default setting is <literal>false</literal>."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:129
+#, no-c-format
+msgid "Context management for custom servlets"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:130
+#, no-c-format
+msgid ""
+"Requests sent direct to some servlet other than the JSF servlet are not "
+"processed through the JSF lifecycle, so Seam provides a servlet filter that "
+"can be applied to any other servlet that needs access to Seam components."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:133
+#, no-c-format
+msgid ""
+"This filter allows custom servlets to interact with the Seam contexts. It "
+"sets up the Seam contexts at the beginning of each request, and tears them "
+"down at the end of the request. You should make sure that this filter is "
+"<emphasis>never</emphasis> applied to the JSF <literal>FacesServlet</"
+"literal>. Seam uses the phase listener for context management in a JSF "
+"request."
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:139
+#, no-c-format
+msgid "&lt;web:context-filter url-pattern=\"/media/*\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:142
+#, no-c-format
+msgid ""
+"<literal>url-pattern</literal> &mdash; Used to specify which requests are "
+"filtered, the default is all requests. If the url-pattern is specified for "
+"the context filter, then the filter will be enabled (unless explicitly "
+"disabled)."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:147
+#, no-c-format
+msgid ""
+"The context filter expects to find the conversation id of any conversation "
+"context in a request parameter named <literal>conversationId</literal>. You "
+"are responsible for ensuring that it gets sent in the request."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:150
+#, no-c-format
+msgid ""
+"You are also responsible for ensuring propagation of any new conversation id "
+"back to the client. Seam exposes the conversation id as a property of the "
+"built in component <literal>conversation</literal>."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:153
+#, no-c-format
+msgid "Integrating Seam with your EJB container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:154
+#, no-c-format
+msgid ""
+"We need to apply the <literal>SeamInterceptor</literal> to our Seam "
+"components. The simplest way to do this is to add the following interceptor "
+"binding to the <literal>&lt;assembly-descriptor&gt;</literal> in "
+"<literal>ejb-jar.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:157
+#, no-c-format
+msgid ""
+"&lt;interceptor-binding&gt;\n"
+"    &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"    &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"&lt;/interceptor-binding&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:158
+#, no-c-format
+msgid ""
+"Seam needs to know where to go to find session beans in JNDI. One way to do "
+"this is specify the <literal>@JndiName</literal> annotation on every session "
+"bean Seam component. However, this is quite tedious. A better approach is to "
+"specify a pattern that Seam can use to calculate the JNDI name from the EJB "
+"name. Unfortunately, there is no standard mapping to global JNDI defined in "
+"the EJB3 specification, so this mapping is vendor-specific. We usually "
+"specify this option in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:161
+#, no-c-format
+msgid "For JBoss AS, the following pattern is correct:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:164
+#, no-c-format
+msgid "&lt;core:init jndi-name=\"myEarName/#{ejbName}/local\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:165
+#, no-c-format
+msgid ""
+"Where <literal>myEarName</literal> is the name of the EAR in which the bean "
+"is deployed."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:168
+#, no-c-format
+msgid ""
+"Outside the context of an EAR (when using the JBoss Embeddable EJB3 "
+"container), the following pattern is the one to use:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:171
+#, no-c-format
+msgid "&lt;core:init jndi-name=\"#{ejbName}/local\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:172
+#, no-c-format
+msgid ""
+"You'll have to experiment to find the right setting for other application "
+"servers. Note that some servers (such as GlassFish) require you to specify "
+"JNDI names for all EJB components explicitly (and tediously). In this case, "
+"you can pick your own pattern ;-)"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:175
+#, no-c-format
+msgid "Using facelets"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:176
+#, no-c-format
+msgid ""
+"If you want follow our advice and use facelets instead of JSP, add the "
+"following lines to <literal>faces-config.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:179
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;view-handler&gt;com.sun.facelets.FaceletViewHandler&lt;/view-"
+"handler&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:180
+#, no-c-format
+msgid "And the following lines to <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:183
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;javax.faces.DEFAULT_SUFFIX&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;.xhtml&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:184
+#, no-c-format
+msgid "Don't forget!"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:185
+#, no-c-format
+msgid ""
+"There is one final item you need to know about. You must place a "
+"<literal>seam.properties</literal>, <literal>META-INF/seam.properties</"
+"literal> or <literal>META-INF/components.xml</literal> file in any archive "
+"in which your Seam components are deployed (even an empty properties file "
+"will do). At startup, Seam will scan any archives with <literal>seam."
+"properties</literal> files for seam components."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:188
+#, no-c-format
+msgid ""
+"That's why all the Seam examples have an empty <literal>seam.properties</"
+"literal> file. You can't just delete this file and expect everything to "
+"still work!"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:191
+#, no-c-format
+msgid ""
+"You might think this is silly and what kind of idiot framework designers "
+"would make an empty file affect the behavior of their software?? Well, this "
+"is a workaround for a limitation of the JVM&mdash;if we didn't use this "
+"mechanism, our next best option would be to force you to list every "
+"component explicitly in <literal>components.xml</literal>, just like some "
+"other competing frameworks do! I think you'll like our way better."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:195
+#, no-c-format
+msgid "Configuring Seam in Java EE 5"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:204
+#, no-c-format
+msgid ""
+"If you're running in a Java EE 5 environment, this is all the configuration "
+"required to start using Seam!"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:207 Configuration.xml:270 Configuration.xml:318
+#: Configuration.xml:354 Configuration.xml:371
+#, no-c-format
+msgid "Packaging"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:208
+#, no-c-format
+msgid ""
+"Once you've packaged all this stuff together into an EAR, the archive "
+"structure will look something like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:211
+#, no-c-format
+msgid ""
+"my-application.ear/\n"
+"    jboss-seam.jar\n"
+"    el-api.jar\n"
+"    el-ri.jar\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"        application.xml\n"
+"    my-application.war/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"        WEB-INF/\n"
+"            web.xml\n"
+"            components.xml\n"
+"            faces-config.xml\n"
+"            lib/\n"
+"                jsf-facelets.jar\n"
+"                jboss-seam-ui.jar\n"
+"        login.jsp\n"
+"        register.jsp\n"
+"        ...\n"
+"    my-application.jar/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"            persistence.xml\n"
+"        seam.properties\n"
+"        org/\n"
+"            jboss/\n"
+"                myapplication/\n"
+"                    User.class\n"
+"                    Login.class\n"
+"                    LoginBean.class\n"
+"                    Register.class\n"
+"                    RegisterBean.class\n"
+"                    ..."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:212
+#, no-c-format
+msgid ""
+"You must include <literal>jboss-seam.jar</literal>, <literal>el-api.jar</"
+"literal> and <literal>el-ri.jar</literal> in the EAR classpath. Make sure "
+"you reference all of these jars from <literal>application.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:215
+#, no-c-format
+msgid ""
+"If you want to use jBPM or Drools, you must include the needed jars in the "
+"EAR classpath. Make sure you reference all of the jars from "
+"<literal>application.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:218
+#, no-c-format
+msgid ""
+"If you want to use facelets (our recommendation), you must include "
+"<literal>jsf-facelets.jar</literal> in the <literal>WEB-INF/lib</literal> "
+"directory of the WAR."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:221
+#, no-c-format
+msgid ""
+"If you want to use the Seam tag library (most Seam applications do), you "
+"must include <literal>jboss-seam-ui.jar</literal> in the <literal>WEB-INF/"
+"lib</literal> directory of the WAR. If you want to use the PDF or email tag "
+"libraries, you need to put <literal>jboss-seam-pdf.jar</literal> or "
+"<literal>jboss-seam-mail.jar</literal> in <literal>WEB-INF/lib</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:224
+#, no-c-format
+msgid ""
+"If you want to use the Seam debug page (only works for applications using "
+"facelets), you must include <literal>jboss-seam-debug.jar</literal> in the "
+"<literal>WEB-INF/lib</literal> directory of the WAR."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:227
+#, no-c-format
+msgid ""
+"Seam ships with several example applications that are deployable in any Java "
+"EE container that supports EJB 3.0."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:231
+#, no-c-format
+msgid "Configuring Seam in Java SE, with the JBoss Embeddable EJB3 container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:232
+#, no-c-format
+msgid ""
+"The JBoss Embeddable EJB3 container lets you run EJB3 components outside the "
+"context of the Java EE 5 application server. This is especially, but not "
+"only, useful for testing."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:235
+#, no-c-format
+msgid ""
+"The Seam booking example application includes a TestNG integration test "
+"suite that runs on the Embeddable EJB3 container."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:246
+#, no-c-format
+msgid "The booking example application may even be deployed to Tomcat."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:257
+#, no-c-format
+msgid "Installing the Embeddable EJB3 container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:258
+#, no-c-format
+msgid ""
+"Seam ships with a build of the Embeddable EJB3 container in the "
+"<literal>embedded-ejb</literal> directory. To use the Embeddable EJB3 "
+"container with Seam, add the <literal>embedded-ejb/conf</literal> directory, "
+"and all jars in the <literal>lib</literal> and <literal>embedded-ejb/lib</"
+"literal> directories to your classpath. Then, add the following line to "
+"<literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:261
+#, no-c-format
+msgid "&lt;core:ejb /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:262
+#, no-c-format
+msgid ""
+"This setting installs the built-in component named <literal>org.jboss.seam."
+"core.ejb</literal>. This component is responsible for bootstrapping the EJB "
+"container when Seam is started, and shutting it down when the web "
+"application is undeployed."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:265
+#, no-c-format
+msgid "Configuring a datasource with the Embeddable EJB3 container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:266
+#, no-c-format
+msgid ""
+"You should refer to the Embeddable EJB3 container documentation for more "
+"information about configuring the container. You'll probably at least need "
+"to set up your own datasource. Embeddable EJB3 is implemented using the "
+"JBoss Microcontainer, so it's very easy to add new services to the minimal "
+"set of services provided by default. For example, I can add a new datasource "
+"by putting this <literal>jboss-beans.xml</literal> file in my classpath:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:269
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"\n"
+"&lt;deployment xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"urn:jboss:bean-deployer bean-deployer_1_0."
+"xsd\"\n"
+"            xmlns=\"urn:jboss:bean-deployer\"&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasourceBootstrap\"\n"
+"        class=\"org.jboss.resource.adapter.jdbc.local.LocalTxDataSource"
+"\"&gt;\n"
+"      &lt;property name=\"driverClass\"&gt;org.hsqldb.jdbcDriver&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"connectionURL\"&gt;jdbc:hsqldb:.&lt;/property&gt;\n"
+"      &lt;property name=\"userName\"&gt;sa&lt;/property&gt;\n"
+"      &lt;property name=\"jndiName\"&gt;java:/bookingDatasource&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"minSize\"&gt;0&lt;/property&gt;\n"
+"      &lt;property name=\"maxSize\"&gt;10&lt;/property&gt;\n"
+"      &lt;property name=\"blockingTimeout\"&gt;1000&lt;/property&gt;\n"
+"      &lt;property name=\"idleTimeout\"&gt;100000&lt;/property&gt;\n"
+"      &lt;property name=\"transactionManager\"&gt;\n"
+"        &lt;inject bean=\"TransactionManager\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"      &lt;property name=\"cachedConnectionManager\"&gt;\n"
+"        &lt;inject bean=\"CachedConnectionManager\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"      &lt;property name=\"initialContextProperties\"&gt;\n"
+"        &lt;inject bean=\"InitialContextProperties\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasource\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getDatasource\"&gt;\n"
+"         &lt;factory bean=\"bookingDatasourceBootstrap\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"&lt;/deployment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:271
+#, no-c-format
+msgid ""
+"The archive structure of a WAR-based deployment on an servlet engine like "
+"Tomcat will look something like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:274
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            myfaces-api.jar\n"
+"            myfaces-impl.jar\n"
+"            jboss-ejb3.jar\n"
+"            jboss-jca.jar\n"
+"            jboss-j2ee.jar\n"
+"            ...\n"
+"            mc-conf.jar/\n"
+"                ejb3-interceptors-aop.xml\n"
+"                embedded-jboss-beans.xml\n"
+"                default.persistence.properties\n"
+"                jndi.properties\n"
+"                login-config.xml\n"
+"                security-beans.xml\n"
+"                log4j.xml\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                    MANIFEST.MF\n"
+"                    persistence.xml\n"
+"                    jboss-beans.xml\n"
+"                log4j.xml\n"
+"                seam.properties\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            LoginBean.class\n"
+"                            Register.class\n"
+"                            RegisterBean.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:275
+#, no-c-format
+msgid ""
+"The <literal>mc-conf.jar</literal> just contains the standard JBoss "
+"Microcontainer configuration files for Embeddable EJB3. You won't usually "
+"need to edit these files yourself."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:278
+#, no-c-format
+msgid ""
+"Most of the Seam example applications may be deployed to Tomcat by running "
+"<literal>ant deploy.tomcat</literal>."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:281
+#, no-c-format
+msgid "Configuring Seam in J2EE"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:282
+#, no-c-format
+msgid ""
+"Seam is useful even if you're not yet ready to take the plunge into EJB 3.0. "
+"In this case you would use Hibernate3 or JPA instead of EJB 3.0 persistence, "
+"and plain JavaBeans instead of session beans. You'll miss out on some of the "
+"nice features of session beans but it will be very easy to migrate to EJB "
+"3.0 when you're ready and, in the meantime, you'll be able to take advantage "
+"of Seam's unique declarative state management architecture."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:293
+#, no-c-format
+msgid ""
+"Seam JavaBean components do not provide declarative transaction demarcation "
+"like session beans do. You <emphasis>could</emphasis> manage your "
+"transactions manually using the JTA <literal>UserTransaction</literal> (you "
+"could even implement your own declarative transaction management in a Seam "
+"interceptor). But most applications will use Seam managed transactions when "
+"using Hibernate with JavaBeans. Follow the instructions in the persistence "
+"chapter to install <literal>TransactionalSeamPhaseListener</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:296
+#, no-c-format
+msgid ""
+"The Seam distribution includes a version of the booking example application "
+"that uses Hibernate3 and JavaBeans instead of EJB3, and another version that "
+"uses JPA and JavaBeans. These example applications are ready to deploy into "
+"any J2EE application server."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:299
+#, no-c-format
+msgid ""
+"If we want to deploy Hibernate in a non-J2EE environment like Tomcat or "
+"TestNG, we need to do a little bit more work."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:302
+#, no-c-format
+msgid "Boostrapping Hibernate in Seam"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:303
+#, no-c-format
+msgid ""
+"Seam will bootstrap a Hibernate <literal>SessionFactory</literal> from your "
+"<literal>hibernate.cfg.xml</literal> file if you install a built-in "
+"component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:306
+#, no-c-format
+msgid ""
+"&lt;core:hibernate-session-factory name=\"hibernateSessionFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:307
+#, no-c-format
+msgid ""
+"You will also need to configure a <emphasis>managed session</emphasis> if "
+"you want a Seam managed Hibernate <literal>Session</literal> to be available "
+"via injection."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:310
+#, no-c-format
+msgid "Boostrapping JPA in Seam"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:311
+#, no-c-format
+msgid ""
+"Seam will bootstrap a JPA <literal>EntityManagerFactory</literal> from your "
+"<literal>persistence.xml</literal> file if you install this built-in "
+"component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:314
+#, no-c-format
+msgid "&lt;core:entity-manager-factory name=\"entityManagerFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:315
+#, no-c-format
+msgid ""
+"You will also need to configure a <emphasis>managed persistencece context</"
+"emphasis> if you want a Seam managed JPA <literal>EntityManager</literal> to "
+"be available via injection."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:319
+#, no-c-format
+msgid "We can package our application as a WAR, in the following structure:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:322
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            hibernate3.jar\n"
+"            hibernate-annotations.jar\n"
+"            ...\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                   MANIFEST.MF\n"
+"                seam.properties\n"
+"                hibernate.cfg.xml\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            Register.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:324
+#, no-c-format
+msgid "Configuring Seam in Java SE, with the JBoss Microcontainer"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:325
+#, no-c-format
+msgid ""
+"The Seam support for Hibernate and JPA requires JTA and a JCA datasource. If "
+"you are running in a non-EE environment like Tomcat or TestNG you can run "
+"these services, and Hibernate itself, in the JBoss Microcontainer."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:328
+#, no-c-format
+msgid ""
+"You can even deploy the Hibernate and JPA versions of the booking example in "
+"Tomcat."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:339
+#, no-c-format
+msgid ""
+"Seam ships with an example Microcontainer configuration in "
+"<literal>microcontainer/conf/jboss-beans.xml</literal> that provides all the "
+"things you need to run Seam with Hibernate in any non-EE environment. Just "
+"add the <literal>microcontainer/conf</literal> directory, and all jars in "
+"the <literal>lib</literal> and <literal>microcontainer/lib</literal> "
+"directories to your classpath. Refer to the documentation for the JBoss "
+"Microcontainer for more information."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:342
+#, no-c-format
+msgid "Using Hibernate and the JBoss Microcontainer"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:343
+#, no-c-format
+msgid ""
+"The built-in Seam component named <literal>org.jboss.seam.core."
+"microcontainer</literal> bootstraps the microcontainer. As before, we "
+"probably want to use a Seam managed session."
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:346
+#, no-c-format
+msgid ""
+"&lt;core:microcontainer/&gt;\n"
+"\n"
+"&lt;core:managed-hibernate-session name=\"bookingDatabase\" auto-create="
+"\"true\"\n"
+"    session-factory-jndi-name=\"java:/bookingSessionFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:347
+#, no-c-format
+msgid ""
+"Where <literal>java:/bookingSessionFactory</literal> is the name of the "
+"Hibernate session factory specified in <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:350
+#, no-c-format
+msgid ""
+"You'll need to provide a <literal>jboss.beans.xml</literal> file that "
+"installs JNDI, JTA, your JCA datasource and Hibernate into the "
+"microcontainer:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:353
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"\n"
+"&lt;deployment xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"urn:jboss:bean-deployer bean-deployer_1_0."
+"xsd\"\n"
+"            xmlns=\"urn:jboss:bean-deployer\"&gt;\n"
+"\n"
+"   &lt;bean name=\"Naming\" class=\"org.jnp.server.SingletonNamingServer\"/"
+"&gt;\n"
+"\n"
+"   &lt;bean name=\"TransactionManagerFactory\"\n"
+"       class=\"org.jboss.seam.microcontainer.TransactionManagerFactory\"/"
+"&gt;\n"
+"   &lt;bean name=\"TransactionManager\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getTransactionManager\"&gt;\n"
+"         &lt;factory bean=\"TransactionManagerFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasourceFactory\" class=\"org.jboss.seam."
+"microcontainer.DataSourceFactory\"&gt;\n"
+"      &lt;property name=\"driverClass\"&gt;org.hsqldb.jdbcDriver&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"connectionUrl\"&gt;jdbc:hsqldb:.&lt;/property&gt;\n"
+"      &lt;property name=\"userName\"&gt;sa&lt;/property&gt;\n"
+"      &lt;property name=\"jndiName\"&gt;java:/hibernateDatasource&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"minSize\"&gt;0&lt;/property&gt;\n"
+"      &lt;property name=\"maxSize\"&gt;10&lt;/property&gt;\n"
+"      &lt;property name=\"blockingTimeout\"&gt;1000&lt;/property&gt;\n"
+"      &lt;property name=\"idleTimeout\"&gt;100000&lt;/property&gt;\n"
+"      &lt;property name=\"transactionManager\"&gt;&lt;inject bean="
+"\"TransactionManager\"/&gt;&lt;/property&gt;\n"
+"   &lt;/bean&gt;\n"
+"   &lt;bean name=\"bookingDatasource\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getDataSource\"&gt;\n"
+"         &lt;factory bean=\"bookingDatasourceFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingSessionFactoryFactory\"\n"
+"       class=\"org.jboss.seam.microcontainer.HibernateFactory\"/&gt;\n"
+"   &lt;bean name=\"bookingSessionFactory\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getSessionFactory\"&gt;\n"
+"         &lt;factory bean=\"bookingSessionFactoryFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"      &lt;depends&gt;bookingDatasource&lt;/depends&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"&lt;/deployment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:355
+#, no-c-format
+msgid "The WAR could have the following structure:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:358
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            hibernate3.jar\n"
+"            ...\n"
+"            jboss-microcontainer.jar\n"
+"            jboss-jca.jar\n"
+"            ...\n"
+"            myfaces-api.jar\n"
+"            myfaces-impl.jar\n"
+"            mc-conf.jar/\n"
+"                jndi.properties\n"
+"                log4j.xml\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                    MANIFEST.MF\n"
+"                    jboss-beans.xml\n"
+"                seam.properties\n"
+"                hibernate.cfg.xml\n"
+"                log4j.xml\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            Register.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:359
+#, no-c-format
+msgid "Configuring jBPM in Seam"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:360
+#, no-c-format
+msgid ""
+"Seam's jBPM integration is not installed by default, so you'll need to "
+"enable jBPM by installing a built-in component. You'll also need to "
+"explicitly list your process and pageflow definitions. In "
+"<literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:363
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:pageflow-definitions&gt;\n"
+"        &lt;value&gt;createDocument.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;editDocument.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;approveDocument.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:pageflow-definitions&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;documentLifecycle.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:364
+#, no-c-format
+msgid ""
+"No further special configuration is needed if you only have pageflows. If "
+"you do have business process definitions, you need to provide a jBPM "
+"configuration, and a Hibernate configuration for jBPM. The Seam DVD Store "
+"demo includes example <literal>jbpm.cfg.xml</literal> and <literal>hibernate."
+"cfg.xml</literal> files that will work with Seam:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:367
+#, no-c-format
+msgid ""
+"&lt;jbpm-configuration&gt;\n"
+"\n"
+"  &lt;jbpm-context&gt;\n"
+"    &lt;service name=\"persistence\"&gt;\n"
+"       &lt;factory&gt;\n"
+"          &lt;bean class=\"org.jbpm.persistence.db."
+"DbPersistenceServiceFactory\"&gt;\n"
+"             &lt;field name=\"isTransactionEnabled\"&gt;&lt;false/&gt;&lt;/"
+"field&gt;\n"
+"          &lt;/bean&gt;\n"
+"       &lt;/factory&gt;\n"
+"    &lt;/service&gt;\n"
+"    &lt;service name=\"message\" factory=\"org.jbpm.msg.db."
+"DbMessageServiceFactory\" /&gt;\n"
+"    &lt;service name=\"scheduler\" factory=\"org.jbpm.scheduler.db."
+"DbSchedulerServiceFactory\" /&gt;\n"
+"    &lt;service name=\"logging\" factory=\"org.jbpm.logging.db."
+"DbLoggingServiceFactory\" /&gt;\n"
+"    &lt;service name=\"authentication\" \n"
+"        factory=\"org.jbpm.security.authentication."
+"DefaultAuthenticationServiceFactory\" /&gt;\n"
+"  &lt;/jbpm-context&gt;\n"
+"\n"
+"&lt;/jbpm-configuration&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:368
+#, no-c-format
+msgid ""
+"The most important thing to notice here is that jBPM transaction control is "
+"disabled. Seam or EJB3 should control the JTA transactions."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:372
+#, no-c-format
+msgid ""
+"There is not yet any well-defined packaging format for jBPM configuration "
+"and process/pageflow definition files. In the Seam examples we've decided to "
+"simply package all these files into the root of the EAR. In future, we will "
+"probably design some other standard packaging format. So the EAR looks "
+"something like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:375
+#, no-c-format
+msgid ""
+"my-application.ear/\n"
+"    jboss-seam.jar\n"
+"    el-api.jar\n"
+"    el-ri.jar\n"
+"    jbpm-3.1.jar\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"        application.xml\n"
+"    my-application.war/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"        WEB-INF/\n"
+"            web.xml\n"
+"            components.xml\n"
+"            faces-config.xml\n"
+"            lib/\n"
+"                jsf-facelets.jar\n"
+"                jboss-seam-ui.jar\n"
+"        login.jsp\n"
+"        register.jsp\n"
+"        ...\n"
+"    my-application.jar/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"            persistence.xml\n"
+"        seam.properties\n"
+"        org/\n"
+"            jboss/\n"
+"                myapplication/\n"
+"                    User.class\n"
+"                    Login.class\n"
+"                    LoginBean.class\n"
+"                    Register.class\n"
+"                    RegisterBean.class\n"
+"                    ...\n"
+"    jbpm.cfg.xml\n"
+"    hibernate.cfg.xml\n"
+"    createDocument.jpdl.xml\n"
+"    editDocument.jpdl.xml\n"
+"    approveDocument.jpdl.xml\n"
+"    documentLifecycle.jpdl.xml"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:376
+#, no-c-format
+msgid ""
+"Remember to add <literal>jbpm-3.1.jar</literal> to the manifest of your EJB-"
+"JAR and WAR."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:379
+#, no-c-format
+msgid "Configuring Seam in a Portal"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:380
+#, no-c-format
+msgid ""
+"To run a Seam application as a portlet, you'll need to provide certain "
+"portlet metadata (<literal>portlet.xml</literal>, etc) in addition to the "
+"usual Java EE metadata. See the <literal>examples/portal</literal> directory "
+"for an example of the booking demo preconfigured to run on JBoss Portal."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:383
+#, no-c-format
+msgid ""
+"In addition, you'll need to use a portlet-specific phase listener instead of "
+"<literal>SeamPhaseListener</literal> or "
+"<literal>TransactionalSeamPhaseListener</literal>. The "
+"<literal>SeamPortletPhaseListener</literal> and "
+"<literal>TransactionalSeamPortletPhaseListener</literal> are adapted to the "
+"portlet lifecycle. I would like to offer my sincerest apologies for the name "
+"of that last class. I really couldn't think of anything better. Sorry."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Controls.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Controls.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Controls.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,591 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Controls.xml:10
+#, no-c-format
+msgid "Seam JSF controls"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:11
+#, no-c-format
+msgid ""
+"Seam includes a number of JSF controls that are useful for working with "
+"Seam. These are intended to complement the built-in JSF controls, and "
+"controls from other third-party libraries. We recommend the Ajax4JSF and ADF "
+"faces (now Trinidad) tag libraries for use with Seam. We do not recommend "
+"the use of the Tomahawk tag library."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:14
+#, no-c-format
+msgid "The ui example demonstrates the use of a number of these tags."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:19
+#, no-c-format
+msgid "&lt;s:validate&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:21
+#, no-c-format
+msgid ""
+"Validate a JSF input field against the bound property using Hibernate "
+"Validator."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:27
+#, no-c-format
+msgid "&lt;s:validateAll&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:29
+#, no-c-format
+msgid ""
+"Validate all child JSF input fields against the bound propertys using "
+"Hibernate Validator."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:35
+#, no-c-format
+msgid "&lt;s:formattedText&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:37
+#, no-c-format
+msgid "Output <emphasis>Seam Text</emphasis>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:43
+#, no-c-format
+msgid "&lt;s:convertDateTime&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:45
+#, no-c-format
+msgid "Perform date or time conversions in the Seam timezone."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:51
+#, no-c-format
+msgid "&lt;s:convertEnum&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:53
+#, no-c-format
+msgid ""
+"Assigns an enum converter to the current component. This is primarily useful "
+"for radio button and dropdown controls."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:59
+#, no-c-format
+msgid "&lt;s:enumItem&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:61
+#, no-c-format
+msgid "Creates a <literal>SelectItem</literal> from an enum value."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:66
+#, no-c-format
+msgid ""
+"<literal>enumValue</literal> &mdash; the string representation of the enum "
+"value."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:71
+#, no-c-format
+msgid ""
+"<literal>label</literal> &mdash; the label to be used when rendering the "
+"<literal>SelectItem</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:79
+#, no-c-format
+msgid "&lt;s:selectItems&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:81
+#, no-c-format
+msgid ""
+"Creates a <literal>List&lt;SelectItem&gt;</literal> from a List, Set, "
+"DataModel or Array."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:86
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; an EL expression specifying the data that "
+"backs the <literal>List&lt;SelectItem&gt;</literal>"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:91
+#, no-c-format
+msgid ""
+"<literal>var</literal> &mdash; defines the name of the local variable that "
+"holds the current object during iteration"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:96
+#, no-c-format
+msgid ""
+"<literal>label</literal> &mdash; the label to be used when rendering the "
+"<literal>SelectItem</literal>. Can reference the <literal>var</literal> "
+"variable"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:101
+#, no-c-format
+msgid ""
+"<literal>disabled</literal> &mdash; if true the <literal>SelectItem</"
+"literal> will be rendered disabled. Can reference the <literal>var</literal> "
+"variable"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:106
+#, no-c-format
+msgid ""
+"<literal>noSelectionLabel</literal> &mdash; specifies the (optional) label "
+"to place at the top of list (if <literal>required=\"true\"</literal> is also "
+"specified then selecting this value will cause a validation error)"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:111
+#, no-c-format
+msgid ""
+"<literal>hideNoSelectionLabel</literal> &mdash; if true, the "
+"<literal>noSelectionLabel</literal> will be hidden when a value is selected"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:119
+#, no-c-format
+msgid "&lt;s:decorate&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:121
+#, no-c-format
+msgid "\"Decorate\" a JSF input field when validation fails."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:127
+#, no-c-format
+msgid "&lt;s:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:129
+#, no-c-format
+msgid "\"Decorate\" a JSF input field with the validation error message."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:135
+#, no-c-format
+msgid "&lt;s:span&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:137
+#, no-c-format
+msgid "Render a HTML <literal>&lt;span&gt;</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:143
+#, no-c-format
+msgid "&lt;s:div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:145
+#, no-c-format
+msgid "Render a HTML <literal>&lt;div&gt;</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:151
+#, no-c-format
+msgid "&lt;s:fragment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:153
+#, no-c-format
+msgid ""
+"A non-rendering component useful for enabling/disabling rendering of it's "
+"children"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:159
+#, no-c-format
+msgid "&lt;s:cache&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:161
+#, no-c-format
+msgid ""
+"Cache the rendered page fragment using JBoss Cache. Note that <literal>&lt;s:"
+"cache&gt;</literal> actually uses the instance of JBoss Cache managed by the "
+"built-in <literal>pojoCache</literal> component."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:166
+#, no-c-format
+msgid ""
+"<literal>key</literal> &mdash; the key to cache rendered content, often a "
+"value expression. For example, if we were caching a page fragment that "
+"displays a document, we might use <literal>key=\"Document-#{document.id}\"</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:171
+#, no-c-format
+msgid ""
+"<literal>enabled</literal> &mdash; a value expression that determines if the "
+"cache should be used."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:176
+#, no-c-format
+msgid ""
+"<literal>region</literal> &mdash; a JBoss Cache node to use (different nodes "
+"can have different expiry policies)."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:184
+#, no-c-format
+msgid "&lt;s:link&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:186
+#, no-c-format
+msgid ""
+"A link that supports invocation of an action with control over conversation "
+"propagation. <emphasis>Does not submit the form.</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:191 Controls.xml:236
+#, no-c-format
+msgid "<literal>value</literal> &mdash; the label."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:196 Controls.xml:241
+#, no-c-format
+msgid ""
+"<literal>action</literal> &mdash; a method binding that specified the action "
+"listener."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:201 Controls.xml:246
+#, no-c-format
+msgid "<literal>view</literal> &mdash; the JSF view id to link to."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:206 Controls.xml:251
+#, no-c-format
+msgid "<literal>fragment</literal> &mdash; the fragment identifier to link to."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:211 Controls.xml:256
+#, no-c-format
+msgid "<literal>disabled</literal> &mdash; is the link disabled?"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:216 Controls.xml:261 Controls.xml:301
+#, no-c-format
+msgid ""
+"<literal>propagation</literal> &mdash; determines the conversation "
+"propagation style: <literal>begin</literal>, <literal>join</literal>, "
+"<literal>nest</literal>, <literal>none</literal> or <literal>end</literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:221 Controls.xml:266 Controls.xml:306
+#, no-c-format
+msgid ""
+"<literal>pageflow</literal> &mdash; a pageflow definition to begin. (This is "
+"only useful when <literal>propagation=\"begin\"</literal> or "
+"<literal>propagation=\"join\"</literal>.)"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:229
+#, no-c-format
+msgid "&lt;s:button&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:231
+#, no-c-format
+msgid ""
+"A button that supports invocation of an action with control over "
+"conversation propagation. <emphasis>Does not submit the form.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:274
+#, no-c-format
+msgid "&lt;s:selectDate&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:276
+#, no-c-format
+msgid ""
+"Displays a dynamic date picker component that selects a date for the "
+"specified input field. The body of the <literal>selectDate</literal> element "
+"should contain HTML elements, such as text or an image, that prompt the user "
+"to click to display the date picker. The date picker can be styled using "
+"CSS. An example CSS file can be found in the Seam booking demo as "
+"<literal>date.css</literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:281
+#, no-c-format
+msgid ""
+"<literal>for</literal> &mdash; The id of the input field that the date "
+"picker will insert the selected date into."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:286
+#, no-c-format
+msgid ""
+"<literal>dateFormat</literal> &mdash; The date format string. This should "
+"match the date format of the input field."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:294
+#, no-c-format
+msgid "&lt;s:conversationPropagation&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:296
+#, no-c-format
+msgid ""
+"Customize the conversation propagation for a command link or button (or "
+"similar JSF control). <emphasis>Facelets only.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:314
+#, no-c-format
+msgid "&lt;s:conversationId&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:316
+#, no-c-format
+msgid ""
+"Add the conversation id to an output link (or similar JSF control). "
+"<emphasis>Facelets only.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:322
+#, no-c-format
+msgid "&lt;s:taskId&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:324
+#, no-c-format
+msgid ""
+"Add the task id to an output link (or similar JSF control), when the task is "
+"available via <literal>#{task}</literal>. <emphasis>Facelets only.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:330
+#, no-c-format
+msgid "&lt;s:fileUpload&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:332
+#, no-c-format
+msgid ""
+"Renders a file upload control. This control must be used within a form with "
+"an encoding type of <literal>multipart/form-data</literal>, i.e:"
+msgstr ""
+
+#. Tag: programlisting
+#: Controls.xml:335
+#, no-c-format
+msgid "&lt;h:form enctype=\"multipart/form-data\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:336
+#, no-c-format
+msgid ""
+"For multipart requests, the Seam Multipart servlet filter must also be "
+"configured in <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Controls.xml:339
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"      &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"      &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-"
+"class&gt;\n"
+"    &lt;/filter&gt;\n"
+"    \n"
+"    &lt;filter-mapping&gt;\n"
+"      &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"      &lt;url-pattern&gt;/*&lt;/url-pattern&gt;\n"
+"    &lt;/filter-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:340
+#, no-c-format
+msgid ""
+"The following configuration options for multipart requests may be configured "
+"in components.xml:"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:345
+#, no-c-format
+msgid ""
+"<literal>createTempFiles</literal> &mdash; if this option is set to true, "
+"uploaded files are streamed to a temporary file instead of in memory."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:350
+#, no-c-format
+msgid ""
+"<literal>maxRequestSize</literal> &mdash; the maximum size of a file upload "
+"request, in bytes."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:355
+#, no-c-format
+msgid "Here's an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Controls.xml:358
+#, no-c-format
+msgid ""
+"&lt;component class=\"org.jboss.seam.servlet.MultipartConfig\"&gt;\n"
+"        &lt;property name=\"createTempFiles\"&gt;true&lt;/property&gt;\n"
+"        &lt;property name=\"maxRequestSize\"&gt;1000000&lt;/property&gt;\n"
+"    &lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:359
+#, no-c-format
+msgid ""
+"And here's a list of the supported attributes for the <literal>fileUpload</"
+"literal> control:"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:364
+#, no-c-format
+msgid ""
+"<literal>data</literal> &mdash; this value binding receives the binary file "
+"data. The receiving field should be declared as a <literal>byte[]</literal> "
+"or <literal>InputStream</literal> (required)."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:369
+#, no-c-format
+msgid ""
+"<literal>contentType</literal> &mdash; this value binding receives the "
+"file's content type (optional)."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:374
+#, no-c-format
+msgid ""
+"<literal>fileName</literal> &mdash; this value binding receives the filename "
+"(optional)."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:379
+#, no-c-format
+msgid ""
+"<literal>accept</literal> &mdash; a comma-separated list of content types to "
+"accept, may not be supported by the browser. E.g. <literal>\"images/png,"
+"images/jpg\"</literal>, <literal>\"images/*\"</literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:384
+#, no-c-format
+msgid "<literal>style</literal> &mdash; The control's style"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:389
+#, no-c-format
+msgid "<literal>styleClass</literal> &mdash; The control's style class"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Conversations.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Conversations.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Conversations.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1248 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Conversations.xml:10
+#, no-c-format
+msgid "Conversations and workspace management"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:11
+#, no-c-format
+msgid "It's time to understand Seam's conversation model in more detail."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:14
+#, no-c-format
+msgid ""
+"Historically, the notion of a Seam \"conversation\" came about as a merger "
+"of three different ideas:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:19
+#, no-c-format
+msgid ""
+"The idea of a <emphasis>workspace</emphasis>, which I encountered in a "
+"project for the Victorian government in 2002. In this project I was forced "
+"to implement workspace management on top of Struts, an experience I pray "
+"never to repeat."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:24
+#, no-c-format
+msgid ""
+"The idea of an <emphasis>application transaction</emphasis> with optimistic "
+"semantics, and the realization that existing frameworks based around a "
+"stateless architecture could not provide effective management of extended "
+"persistence contexts. (The Hibernate team is truly fed up with copping the "
+"blame for <literal>LazyInitializationException</literal>s, which are not "
+"really Hibernate's fault, but rather the fault of the extremely limiting "
+"persistence context model supported by stateless architectures such as the "
+"Spring framework or the traditional <emphasis>stateless session facade</"
+"emphasis> (anti)pattern in J2EE.)"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:29
+#, no-c-format
+msgid "The idea of a workflow <emphasis>task</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:34
+#, no-c-format
+msgid ""
+"By unifying these ideas and providing deep support in the framework, we have "
+"a powerful construct that lets us build richer and more efficient "
+"applications with less code than before."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:38
+#, no-c-format
+msgid "Seam's conversation model"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:39
+#, no-c-format
+msgid ""
+"The examples we have seen so far make use of a very simple conversation "
+"model that follows these rules:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:44
+#, no-c-format
+msgid ""
+"There is always a conversation context active during the apply request "
+"values, process validations, update model values, invoke application and "
+"render response phases of the JSF request lifecycle."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:49
+#, no-c-format
+msgid ""
+"At the end of the restore view phase of the JSF request lifecycle, Seam "
+"attempts to restore any previous long-running conversation context. If none "
+"exists, Seam creates a new temporary conversation context."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:54
+#, no-c-format
+msgid ""
+"When an <literal>@Begin</literal> method is encountered, the temporary "
+"conversation context is promoted to a long running conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:59
+#, no-c-format
+msgid ""
+"When an <literal>@End</literal> method is encountered, any long-running "
+"conversation context is demoted to a temporary conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:64
+#, no-c-format
+msgid ""
+"At the end of the render response phase of the JSF request lifecycle, Seam "
+"stores the contents of a long running conversation context or destroys the "
+"contents of a temporary conversation context."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:69
+#, no-c-format
+msgid ""
+"Any faces request (a JSF postback) will propagate the conversation context. "
+"By default, non-faces requests (GET requests, for example) do not propagate "
+"the conversation context, but see below for more information on this."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:74
+#, no-c-format
+msgid ""
+"If the JSF request lifecycle is foreshortened by a redirect, Seam "
+"transparently stores and restores the current conversation context&mdash;"
+"unless the conversation was already ended via <literal>@End"
+"(beforeRedirect=true)</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:79
+#, no-c-format
+msgid ""
+"Seam transparently propagates the conversation context across JSF postbacks "
+"and redirects. If you don't do anything special, a <emphasis>non-faces "
+"request</emphasis> (a GET request for example) will not propagate the "
+"conversation context and will be processed in a new temporary conversation. "
+"This is usually - but not always - the desired behavior."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:82
+#, no-c-format
+msgid ""
+"If you want to propagate a Seam conversation across a non-faces request, you "
+"need to explicitly code the Seam <emphasis>conversation id</emphasis> as a "
+"request parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:85
+#, no-c-format
+msgid ""
+"&lt;a href=\"main.jsf?conversationId=#{conversation.id}\"&gt;Continue&lt;/"
+"a&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:86
+#, no-c-format
+msgid "Or, the more JSF-ish:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:89
+#, no-c-format
+msgid ""
+"&lt;h:outputLink value=\"main.jsf\"&gt;\n"
+"    &lt;f:param name=\"conversationId\" value=\"#{conversation.id}\"/&gt;\n"
+"    &lt;h:outputText value=\"Continue\"/&gt;\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:90 Conversations.xml:98
+#, no-c-format
+msgid "If you use the Seam tag library, this is equivalent:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:93
+#, no-c-format
+msgid ""
+"&lt;h:outputLink value=\"main.jsf\"&gt;\n"
+"    &lt;s:conversationId/&gt;\n"
+"    &lt;h:outputText value=\"Continue\"/&gt;\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:94
+#, no-c-format
+msgid ""
+"If you wish to disable propagation of the conversation context for a "
+"postback, a similar trick is used:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:97
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;f:param name=\"conversationPropagation\" value=\"none\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:101
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"none\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:102
+#, no-c-format
+msgid ""
+"Note that disabling conversation context propagation is absolutely not the "
+"same thing as ending the conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:105
+#, no-c-format
+msgid ""
+"The <literal>conversationPropagation</literal> request parameter, or the "
+"<literal>&lt;s:conversationPropagation&gt;</literal> tag may even be used to "
+"begin and end conversation, or begin a nested conversation."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:108
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"end\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:109
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Child\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"nested\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:110
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Hotel\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"begin\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:111
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Hotel\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"join\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:112
+#, no-c-format
+msgid ""
+"This conversation model makes it easy to build applications which behave "
+"correctly with respect to multi-window operation. For many applications, "
+"this is all that is needed. Some complex applications have either or both of "
+"the following additional requirements:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:117
+#, no-c-format
+msgid ""
+"A conversation spans many smaller units of user interaction, which execute "
+"serially or even concurrently. The smaller <emphasis>nested conversations</"
+"emphasis> have their own isolated set of conversation state, and also have "
+"access to the state of the outer conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:122
+#, no-c-format
+msgid ""
+"The user is able to switch between many conversations within the same "
+"browser window. This feature is called <emphasis>workspace management</"
+"emphasis>."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:130
+#, no-c-format
+msgid "Nested conversations"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:131
+#, no-c-format
+msgid ""
+"A nested conversation is created by invoking a method marked <literal>@Begin"
+"(nested=true)</literal> inside the scope of an existing conversation. A "
+"nested conversation has its own conversation context, and also has read-only "
+"access to the context of the outer conversation. (It can read the outer "
+"conversation's context variables, but not write to them.) When an "
+"<literal>@End</literal> is subsequently encountered, the nested conversation "
+"will be destroyed, and the outer conversation will resume, by \"popping\" "
+"the conversation stack. Conversations may be nested to any arbitrary depth."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:134
+#, no-c-format
+msgid ""
+"Certain user activity (workspace management, or the back button) can cause "
+"the outer conversation to be resumed before the inner conversation is ended. "
+"In this case it is possible to have multiple concurrent nested conversations "
+"belonging to the same outer conversation. If the outer conversation ends "
+"before a nested conversation ends, Seam destroys all nested conversation "
+"contexts along with the outer context."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:137
+#, no-c-format
+msgid ""
+"A conversation may be thought of as a <emphasis>continuable state</"
+"emphasis>. Nested conversations allow the application to capture a "
+"consistent continuable state at various points in a user interaction, thus "
+"insuring truly correct behavior in the face of backbuttoning and workspace "
+"management."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:140
+#, no-c-format
+msgid ""
+"TODO: an example to show how a nested conversation prevents bad stuff "
+"happening when you backbutton."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:143
+#, no-c-format
+msgid ""
+"Usually, if a component exists in a parent conversation of the current "
+"nested conversation, the nested conversation will use the same instance. "
+"Occasionally, it is useful to have a different instance in each nested "
+"conversation, so that the component instance that exists in the parent "
+"conversation is invisible to its child conversations. You can achieve this "
+"behavior by annotating the component <literal>@PerNestedConversation</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:149
+#, no-c-format
+msgid "Starting conversations with GET requests"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:150
+#, no-c-format
+msgid ""
+"JSF does not define any kind of action listener that is triggered when a "
+"page is accessed via a non-faces request (for example, a HTTP GET request). "
+"This can occur if the user bookmarks the page, or if we navigate to the page "
+"via an <literal>&lt;h:outputLink&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:153
+#, no-c-format
+msgid ""
+"Sometimes we want to begin a conversation immediately the page is accessed. "
+"Since there is no JSF action method, we can't solve the problem in the usual "
+"way, by annotating the action with <literal>@Begin</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:156
+#, no-c-format
+msgid ""
+"A further problem arises if the page needs some state to be fetched into a "
+"context variable. We've already seen two ways to solve this problem. If that "
+"state is held in a Seam component, we can fetch the state in a "
+"<literal>@Create</literal> method. If not, we can define a "
+"<literal>@Factory</literal> method for the context variable."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:159
+#, no-c-format
+msgid ""
+"If none of these options works for you, Seam lets you define a "
+"<emphasis>page action</emphasis> in the <literal>pages.xml</literal> file."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:162
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\" action=\"#{messageManager.list}\"/"
+"&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:163
+#, no-c-format
+msgid ""
+"This action method is called at the beginning of the render response phase, "
+"any time the page is about to be rendered. If a page action returns a non-"
+"null outcome, Seam will process any appropriate JSF and Seam navigation "
+"rules, possibly resulting in a completely different page being rendered."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:166
+#, no-c-format
+msgid ""
+"If <emphasis>all</emphasis> you want to do before rendering the page is "
+"begin a conversation, you could use a built-in action method that does just "
+"that:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:169
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\" action=\"#{conversation.begin}\"/"
+"&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:170
+#, no-c-format
+msgid ""
+"Note that you can also call this built-in action from a JSF control, and, "
+"similarly, you can use <literal>#{conversation.end}</literal> to end "
+"conversations."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:173
+#, no-c-format
+msgid ""
+"If you want more control, to join existing conversations or begin a nested "
+"conversion, to begin a pageflow or an atomic conversation, you should use "
+"the <literal>&lt;begin-conversation&gt;</literal> element."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:176
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\"&gt;\n"
+"       &lt;begin-conversation nested=\"true\" pageflow=\"AddItem\"/&gt;\n"
+"    &lt;page&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:177
+#, no-c-format
+msgid "There is also an <literal>&lt;end-conversation&gt;</literal> element."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:180
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/home.jsp\"&gt;\n"
+"       &lt;end-conversation/&gt;\n"
+"    &lt;page&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:181
+#, no-c-format
+msgid "To solve the first problem, we now have five options:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:186
+#, no-c-format
+msgid ""
+"Annotate the <literal>@Create</literal> method with <literal>@Begin</literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:191
+#, no-c-format
+msgid ""
+"Annotate the <literal>@Factory</literal> method with <literal>@Begin</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:196
+#, no-c-format
+msgid "Annotate the Seam page action method with <literal>@Begin</literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:201
+#, no-c-format
+msgid ""
+"Use <literal>&lt;begin-conversation&gt;</literal> in <literal>pages.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:206
+#, no-c-format
+msgid ""
+"Use <literal>#{conversation.begin}</literal> as the Seam page action method"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:214
+#, no-c-format
+msgid ""
+"Using <literal>&lt;s:link&gt;</literal> and <literal>&lt;s:button&gt;</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:215
+#, no-c-format
+msgid ""
+"JSF command links always perform a form submission via JavaScript, which "
+"breaks the web browser's \"open in new window\" or \"open in new tab\" "
+"feature. In plain JSF, you need to use an <literal>&lt;h:outputLink&gt;</"
+"literal> if you need this functionality. But there are two major limitations "
+"to <literal>&lt;h:outputLink&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:220
+#, no-c-format
+msgid ""
+"JSF provides no way to attach an action listener to an <literal>&lt;h:"
+"outputLink&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:225
+#, no-c-format
+msgid ""
+"JSF does not propagate the selected row of a <literal>DataModel</literal> "
+"since there is no actual form submission."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:230
+#, no-c-format
+msgid ""
+"Seam provides the notion of a <emphasis>page action</emphasis> to help solve "
+"the first problem, but this does nothing to help us with the second problem. "
+"We <emphasis>could</emphasis> work around this by using the RESTful approach "
+"of passing a request parameter and requerying for the selected object on the "
+"server side. In some cases&mdash;such as the Seam blog example "
+"application&mdash;this is indeed the best approach. The RESTful style "
+"supports bookmarking, since it does not require server-side state. In other "
+"cases, where we don't care about bookmarks, the use of <literal>@DataModel</"
+"literal> and <literal>@DataModelSelection</literal> is just so convenient "
+"and transparent!"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:233
+#, no-c-format
+msgid ""
+"To fill in this missing functionality, and to make conversation propagation "
+"even simpler to manage, Seam provides the <literal>&lt;s:link&gt;</literal> "
+"JSF tag."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:236
+#, no-c-format
+msgid "The link may specify just the JSF view id:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:239
+#, no-c-format
+msgid ""
+"&lt;s:link view=&#8220;/login.xhtml&#8221; value=&#8220;Login&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:240
+#, no-c-format
+msgid ""
+"Or, it may specify an action method (in which case the action outcome "
+"determines the page that results):"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:243
+#, no-c-format
+msgid ""
+"&lt;s:link action=&#8220;#{login.logout}&#8221; value=&#8220;Logout&#8221;/"
+"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:244
+#, no-c-format
+msgid ""
+"If you specify <emphasis>both</emphasis> a JSF view id and an action method, "
+"the 'view' will be used <emphasis>unless</emphasis> the action method "
+"returns a non-null outcome:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:247
+#, no-c-format
+msgid ""
+"&lt;s:link view=\"/loggedOut.xhtml\"  action=&#8220;#{login.logout}&#8221; "
+"value=&#8220;Logout&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:248
+#, no-c-format
+msgid ""
+"The link automatically propagates the selected row of a <literal>DataModel</"
+"literal> using inside <literal>&lt;h:dataTable&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:251
+#, no-c-format
+msgid ""
+"&lt;s:link view=&#8220;/hotel.xhtml&#8221; action=&#8220;#{hotelSearch."
+"selectHotel}&#8221; value=&#8220;#{hotel.name}&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:252
+#, no-c-format
+msgid "You can leave the scope of an existing conversation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:255
+#, no-c-format
+msgid ""
+"&lt;s:link view=&#8220;/main.xhtml&#8221; propagation=&#8220;none&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:256
+#, no-c-format
+msgid "You can begin, end, or nest conversations:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:259
+#, no-c-format
+msgid ""
+"&lt;s:link action=&#8220;#{issueEditor.viewComment}&#8221; "
+"propagation=&#8220;nest&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:260
+#, no-c-format
+msgid ""
+"If the link begins a conversation, you can even specify a pageflow to be "
+"used:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:263
+#, no-c-format
+msgid ""
+"&lt;s:link action=&#8220;#{documentEditor.getDocument}&#8221; "
+"propagation=&#8220;begin&#8221; \n"
+"        pageflow=&#8220;EditDocument&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:264
+#, no-c-format
+msgid ""
+"The <literal>taskInstance</literal> attribute if for use in jBPM task lists:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:267
+#, no-c-format
+msgid ""
+"&lt;s:link action=&#8220;#{documentApproval.approveOrReject}&#8221; "
+"taskInstance=&#8220;#{task}&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:268
+#, no-c-format
+msgid "(See the DVD Store demo application for examples of this.)"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:271
+#, no-c-format
+msgid ""
+"Finally, if you need the \"link\" to be rendered as a button, use "
+"<literal>&lt;s:button&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:274
+#, no-c-format
+msgid ""
+"&lt;s:button action=&#8220;#{login.logout}&#8221; value=&#8220;Logout&#8221;/"
+"&gt;"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:278
+#, no-c-format
+msgid "Success messages"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:279
+#, no-c-format
+msgid ""
+"It is quite common to display a message to the user indicating success or "
+"failure of an action. It is convenient to use a JSF <literal>FacesMessage</"
+"literal> for this. Unfortunately, a successful action often requires a "
+"browser redirect, and JSF does not propagate faces messages across "
+"redirects. This makes it quite difficult to display success messages in "
+"plain JSF."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:282
+#, no-c-format
+msgid ""
+"The built in conversation-scoped Seam component named "
+"<literal>facesMessages</literal> solves this problem. (You must have the "
+"Seam redirect filter installed.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:285
+#, no-c-format
+msgid ""
+"@Name(\"editDocumentAction\")\n"
+"@Stateless\n"
+"public class EditDocumentBean implements EditDocument {\n"
+"    @In EntityManager em;\n"
+"    @In Document document;\n"
+"    @In FacesMessages facesMessages;\n"
+"    \n"
+"    public String update() {\n"
+"        em.merge(document);\n"
+"        facesMessages.add(\"Document updated\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:286
+#, no-c-format
+msgid ""
+"Any message added to <literal>facesMessages</literal> is used in the very "
+"next render response phase for the current conversation. This even works "
+"when there is no long-running conversation since Seam preserves even "
+"temporary conversation contexts across redirects."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:289
+#, no-c-format
+msgid "You can even include JSF EL expressions in a faces message summary:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:292
+#, no-c-format
+msgid "facesMessages.add(\"Document #{document.title} was updated\");"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:293
+#, no-c-format
+msgid "You may display the messages in the usual way, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:296
+#, no-c-format
+msgid "&lt;h:messages globalOnly=\"true\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:300
+#, no-c-format
+msgid "Using an \"explicit\" conversation id"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:301
+#, no-c-format
+msgid ""
+"Ordinarily, Seam generates a meaningless unique id for each conversation in "
+"each session. You can customize the id value when you begin the conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:304
+#, no-c-format
+msgid ""
+"This feature can be used to customize the conversation id generation "
+"algorithm like so:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:307
+#, no-c-format
+msgid ""
+"@Begin(id=\"#{myConversationIdGenerator.nextId}\") \n"
+"public void editHotel() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:308
+#, no-c-format
+msgid "Or it can be used to assign a meaningful conversation id:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:311
+#, no-c-format
+msgid ""
+"@Begin(id=\"hotel#{hotel.id}\") \n"
+"public String editHotel() { ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:312
+#, no-c-format
+msgid ""
+"@Begin(id=\"hotel#{hotelsDataModel.rowData.id}\") \n"
+"public String selectHotel() { ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:313
+#, no-c-format
+msgid ""
+"@Begin(id=\"entry#{params['blogId']}\")\n"
+"public String viewBlogEntry() { ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:314
+#, no-c-format
+msgid ""
+"@BeginTask(id=\"task#{taskInstance.id}\") \n"
+"public String approveDocument() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:315
+#, no-c-format
+msgid ""
+"Clearly, these example result in the same conversation id every time a "
+"particular hotel, blog or task is selected. So what happens if a "
+"conversation with the same conversation id already exists when the new "
+"conversation begins? Well, Seam detects the existing conversation and "
+"redirects to that conversation without running the <literal>@Begin</literal> "
+"method again. This feature helps control the number of workspaces that are "
+"created when using workspace management."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:321
+#, no-c-format
+msgid "Workspace management"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:322
+#, no-c-format
+msgid ""
+"Workspace management is the ability to \"switch\" conversations in a single "
+"window. Seam makes workspace management completely transparent at the level "
+"of the Java code. To enable workspace management, all you need to do is:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:327
+#, no-c-format
+msgid ""
+"Provide <emphasis>description</emphasis> text for each view id (when using "
+"JSF or Seam navigation rules) or page node (when using jPDL pageflows). This "
+"description text is displayed to the user by the workspace switchers."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:332
+#, no-c-format
+msgid ""
+"Include one or more of the standard workspace switcher JSP or facelets "
+"fragments in your pages. The standard fragments support workspace management "
+"via a drop down menu, a list of conversations, or breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:335
+#, no-c-format
+msgid ""
+"Please refer to the Seam Issue Tracker demo to see all this functionality in "
+"action!"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:339
+#, no-c-format
+msgid "Workspace management and JSF navigation"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:340
+#, no-c-format
+msgid ""
+"When you use JSF or Seam navigation rules, Seam switches to a conversation "
+"by restoring the current <literal>view-id</literal> for that conversation. "
+"The descriptive text for the workspace is defined in a file called "
+"<literal>pages.xml</literal> that Seam expects to find in the <literal>WEB-"
+"INF</literal> directory, right next to <literal>faces-config.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:343
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/main.xhtml\"&gt;Search hotels: #{hotelBooking."
+"searchString}&lt;/page&gt;\n"
+"    &lt;page view-id=\"/hotel.xhtml\"&gt;View hotel: #{hotel.name}&lt;/"
+"page&gt;\n"
+"    &lt;page view-id=\"/book.xhtml\"&gt;Book hotel: #{hotel.name}&lt;/"
+"page&gt;\n"
+"    &lt;page view-id=\"/confirm.xhtml\"&gt;Confirm: #{booking.description}"
+"&lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:344
+#, no-c-format
+msgid ""
+"Note that if this file is missing, the Seam application will continue to "
+"work perfectly! The only missing functionality will be the ability to switch "
+"workspaces."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:350
+#, no-c-format
+msgid "Workspace management and jPDL pageflow"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:351
+#, no-c-format
+msgid ""
+"When you use a jPDL pageflow definition, Seam switches to a conversation by "
+"restoring the current jBPM process state. This is a more flexible model "
+"since it allows the same <literal>view-id</literal> to have different "
+"descriptions depending upon the current <literal>&lt;page&gt;</literal> "
+"node. The description text is defined by the <literal>&lt;page&gt;</literal> "
+"node:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:354
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"shopping\"&gt;\n"
+"\n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"browse\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;page name=\"browse\" view-id=\"/browse.xhtml\"&gt;\n"
+"      &lt;description&gt;DVD Search: #{search.searchPattern}&lt;/"
+"description&gt;\n"
+"      &lt;transition to=\"browse\"/&gt;\n"
+"      &lt;transition name=\"checkout\" to=\"checkout\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"checkout\" view-id=\"/checkout.xhtml\"&gt;\n"
+"      &lt;description&gt;Purchase: &#36;#{cart.total}&lt;/description&gt;\n"
+"      &lt;transition to=\"checkout\"/&gt;\n"
+"      &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"complete\" view-id=\"/complete.xhtml\"&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:358
+#, no-c-format
+msgid "The conversation switcher"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:359
+#, no-c-format
+msgid ""
+"Include the following fragment in your JSP or facelets page to get a drop-"
+"down menu that lets you switch to any current conversation, or to any other "
+"page of the application:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:362
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{switcher.conversationIdOrOutcome}\"&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Find Issues\" itemValue=\"findIssue\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Create Issue\" itemValue=\"editIssue\"/"
+"&gt;\n"
+"    &lt;f:selectItems value=\"#{switcher.selectItems}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{switcher.select}\" value=\"Switch\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:363
+#, no-c-format
+msgid ""
+"In this example, we have a menu that includes an item for each conversation, "
+"together with two additional items that let the user begin a new "
+"conversation."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:377
+#, no-c-format
+msgid "The conversation list"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:378
+#, no-c-format
+msgid ""
+"The conversation list is very similar to the conversation switcher, except "
+"that it is displayed as a table:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:381
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{conversationList}\" var=\"entry\"\n"
+"        rendered=\"#{not empty conversationList}\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Workspace&lt;/f:facet&gt;\n"
+"        &lt;h:commandLink action=\"#{entry.select}\" value=\"#{entry."
+"description}\"/&gt;\n"
+"        &lt;h:outputText value=\"[current]\" rendered=\"#{entry.current}\"/"
+"&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Activity&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{entry.startDatetime}\"&gt;\n"
+"            &lt;f:convertDateTime type=\"time\" pattern=\"hh:mm a\"/&gt;\n"
+"        &lt;/h:outputText&gt;\n"
+"        &lt;h:outputText value=\" - \"/&gt;\n"
+"        &lt;h:outputText value=\"#{entry.lastDatetime}\"&gt;\n"
+"            &lt;f:convertDateTime type=\"time\" pattern=\"hh:mm a\"/&gt;\n"
+"        &lt;/h:outputText&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"        &lt;h:commandButton action=\"#{entry.select}\" value=\"#{msg.Switch}"
+"\"/&gt;\n"
+"        &lt;h:commandButton action=\"#{entry.destroy}\" value=\"#{msg."
+"Destroy}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:382
+#, no-c-format
+msgid ""
+"We imagine that you will want to customize this for your own application."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:393
+#, no-c-format
+msgid ""
+"The conversation list is nice, but it takes up a lot of space on the page, "
+"so you probably don't want to put it on <emphasis>every</emphasis> page."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:396
+#, no-c-format
+msgid "Notice that the conversation list lets the user destroy workspaces."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:402
+#, no-c-format
+msgid "Breadcrumbs"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:403
+#, no-c-format
+msgid ""
+"Breadcrumbs are useful in applications which use a nested conversation "
+"model. The breadcrumbs are a list of links to conversations in the current "
+"conversation stack:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:406
+#, no-c-format
+msgid ""
+"&lt;t:dataList value=\"#{conversationStack}\" var=\"entry\"&gt;\n"
+"    &lt;h:outputText value=\" | \"/&gt; \n"
+"    &lt;h:commandLink value=\"#{entry.description}\" action=\"#{entry.select}"
+"\"/&gt;\n"
+"&lt;/t:dataList&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:407
+#, no-c-format
+msgid ""
+"Notice that here we are using the MyFaces <literal>&lt;t:dataList&gt;</"
+"literal> component, since JSF amazingly does not provide any standard "
+"component for looping."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:424
+#, no-c-format
+msgid "Conversational components and JSF component bindings"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:425
+#, no-c-format
+msgid ""
+"Conversational components have one minor limitation: they cannot be used to "
+"hold bindings to JSF components. (We generally prefer not to use this "
+"feature of JSF unless absolutely necessary, since it creates a hard "
+"dependency from application logic to the view.) On a postback request, "
+"component bindings are updated during the Restore View phase, before the "
+"Seam conversation context has been restored."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:428
+#, no-c-format
+msgid ""
+"To work around this use an event scoped component to store the component "
+"bindings and inject it into the conversation scoped component that requires "
+"it."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:431
+#, no-c-format
+msgid ""
+"@Name(\"grid\")\n"
+"@Scope(ScopeType.EVENT)\n"
+"public class Grid\n"
+"{\n"
+"    private HtmlPanelGrid htmlPanelGrid;\n"
+"\n"
+"    // getters and setters\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:432
+#, no-c-format
+msgid ""
+"@Name(\"gridEditor\")\n"
+"@Scope(ScopeType.CONVERSATION)\n"
+"public class GridEditor\n"
+"{\n"
+"    @In(required=false)\n"
+"    private Grid grid;\n"
+"    \n"
+"    ...\n"
+"}"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Drools.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Drools.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Drools.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,281 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Drools.xml:10
+#, no-c-format
+msgid "Seam and JBoss Rules"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:11
+#, no-c-format
+msgid ""
+"Seam makes it easy to call JBoss Rules (Drools) rulebases from Seam "
+"components or jBPM process definitions."
+msgstr ""
+
+#. Tag: title
+#: Drools.xml:15
+#, no-c-format
+msgid "Installing rules"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:16
+#, no-c-format
+msgid ""
+"The first step is to make an instance of <literal>org.drools.RuleBase</"
+"literal> available in a Seam context variable. In most rules-driven "
+"applications, rules need to be dynamically deployable, so you will need to "
+"implement some solution that allows you to deploy rules and make them "
+"available to Seam (a future release of Drools will provide a Rule Server "
+"that solves this problem). For testing purposes, Seam provides a built-in "
+"component that compiles a static set of rules from the classpath. You can "
+"install this component via <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:19
+#, no-c-format
+msgid ""
+"&lt;drools:rule-base name=\"policyPricingRules\"&gt;\n"
+"    &lt;drools:rule-files&gt;\n"
+"        &lt;value&gt;policyPricingRules&lt;/value&gt;\n"
+"    &lt;/drools:rule-files&gt;\n"
+"&lt;/drools:rule-base&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:20
+#, no-c-format
+msgid ""
+"This component compiles rules from a set of <literal>.drl</literal> files "
+"and caches an instance of <literal>org.drools.RuleBase</literal> in the Seam "
+"<literal>APPLICATION</literal> context. Note that it is quite likely that "
+"you will need to install multiple rule bases in a rule-driven application."
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:23
+#, no-c-format
+msgid ""
+"If you want to use a Drools DSL, you alse need to specify the DSL definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:26
+#, no-c-format
+msgid ""
+"&lt;drools:rule-base name=\"policyPricingRules\" dsl-file=\"policyPricing.dsl"
+"\"&gt;\n"
+"    &lt;drools:rule-files&gt;\n"
+"        &lt;value&gt;policyPricingRules&lt;/value&gt;\n"
+"    &lt;/drools:rule-files&gt;\n"
+"&lt;/drools:rule-base&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:27
+#, no-c-format
+msgid ""
+"Next, we need to make an instance of <literal>org.drools.WorkingMemory</"
+"literal> available to each conversation. (Each <literal>WorkingMemory</"
+"literal> accumulates facts relating to the current conversation.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:30
+#, no-c-format
+msgid ""
+"&lt;drools:managed-working-memory name=\"policyPricingWorkingMemory\" auto-"
+"create=\"true\" rule-base=\"#{policyPricingRules}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:31
+#, no-c-format
+msgid ""
+"Notice that we gave the <literal>policyPricingWorkingMemory</literal> a "
+"reference back to our rule base via the <literal>ruleBase</literal> "
+"configuration property."
+msgstr ""
+
+#. Tag: title
+#: Drools.xml:37
+#, no-c-format
+msgid "Using rules from a Seam component"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:38
+#, no-c-format
+msgid ""
+"We can now inject our <literal>WorkingMemory</literal> into any Seam "
+"component, assert facts, and fire rules:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:41
+#, no-c-format
+msgid ""
+"@In WorkingMemory policyPricingWorkingMemory;\n"
+"\n"
+"@In Policy policy;\n"
+"@In Customer customer;\n"
+"\n"
+"public void pricePolicy() throws FactException\n"
+"{\n"
+"    policyPricingWorkingMemory.assertObject(policy);\n"
+"    policyPricingWorkingMemory.assertObject(customer);\n"
+"    policyPricingWorkingMemory.fireAllRules();\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Drools.xml:45
+#, no-c-format
+msgid "Using rules from a jBPM process definition"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:46
+#, no-c-format
+msgid ""
+"You can even allow a rule base to act as a jBPM action handler, decision "
+"handler, or assignment handler&mdash;in either a pageflow or business "
+"process definition."
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:49
+#, no-c-format
+msgid ""
+"&lt;decision name=\"approval\"&gt;\n"
+"         \n"
+"    &lt;handler class=\"org.jboss.seam.drools.DroolsDecisionHandler\"&gt;\n"
+"        &lt;workingMemoryName&gt;orderApprovalRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"        &lt;assertObjects&gt;\n"
+"            &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"            &lt;element&gt;#{order}&lt;/element&gt;\n"
+"            &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"        &lt;/assertObjects&gt;\n"
+"    &lt;/handler&gt;\n"
+"    \n"
+"    &lt;transition name=\"approved\" to=\"ship\"&gt;\n"
+"        &lt;action class=\"org.jboss.seam.drools.DroolsActionHandler\"&gt;\n"
+"            &lt;workingMemoryName&gt;shippingRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"            &lt;assertObjects&gt;\n"
+"                &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"            &lt;/assertObjects&gt;\n"
+"        &lt;/action&gt;\n"
+"    &lt;/transition&gt;\n"
+"    \n"
+"    &lt;transition name=\"rejected\" to=\"cancelled\"/&gt;\n"
+"    \n"
+"&lt;/decision&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:50
+#, no-c-format
+msgid ""
+"The <literal>&lt;assertObjects&gt;</literal> element specifies EL "
+"expressions that return an object or collection of objects to be asserted as "
+"facts into the <literal>WorkingMemory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:53
+#, no-c-format
+msgid "There is also support for using Drools for jBPM task assignments:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:56
+#, no-c-format
+msgid ""
+"&lt;task-node name=\"review\"&gt;\n"
+"    &lt;task name=\"review\" description=\"Review Order\"&gt;\n"
+"        &lt;assignment handler=\"org.jboss.seam.drools."
+"DroolsAssignmentHandler\"&gt;\n"
+"            &lt;workingMemoryName&gt;orderApprovalRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"            &lt;assertObjects&gt;\n"
+"                &lt;element&gt;#{actor}&lt;/element&gt;\n"
+"                &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"            &lt;/assertObjects&gt;\n"
+"        &lt;/assignment&gt;\n"
+"    &lt;/task&gt;\n"
+"    &lt;transition name=\"rejected\" to=\"cancelled\"/&gt;\n"
+"    &lt;transition name=\"approved\" to=\"approved\"/&gt;\n"
+"&lt;/task-node&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:57
+#, no-c-format
+msgid ""
+"Certain objects are available to the rules as Drools globals, namely the "
+"jBPM <literal>Assignable</literal>, as <literal>assignable</literal> and a "
+"Seam <literal>Decision</literal> object, as <literal>decision</literal>. "
+"Rules which handle decisions should call <literal>decision.setOutcome"
+"(\"result\")</literal> to determine the result of the decision. Rules which "
+"perform assignments should set the actor id using the <literal>Assignable</"
+"literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:60
+#, no-c-format
+msgid ""
+"package org.jboss.seam.examples.shop\n"
+"\n"
+"import org.jboss.seam.drools.Decision\n"
+"\n"
+"global Decision decision\n"
+"\n"
+"rule \"Approve Order For Loyal Customer\"\n"
+"  when\n"
+"    Customer( loyaltyStatus == \"GOLD\" )\n"
+"    Order( totalAmount &lt;= 10000 )\n"
+"  then\n"
+"    decision.setOutcome(\"approved\");\n"
+"end"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:61
+#, no-c-format
+msgid ""
+"package org.jboss.seam.examples.shop\n"
+"\n"
+"import org.jbpm.taskmgmt.exe.Assignable\n"
+"\n"
+"global Assignable assignable\n"
+"\n"
+"rule \"Assign Review For Small Order\"\n"
+"  when\n"
+"    Order( totalAmount &lt;= 100 )\n"
+"  then\n"
+"    assignable.setPooledActors( new String[] {\"reviewers\"} );\n"
+"end"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Elenhancements.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Elenhancements.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Elenhancements.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,221 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Elenhancements.xml:10
+#, no-c-format
+msgid "Expression language enhancements"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:11
+#, no-c-format
+msgid ""
+"The standard Unified Expression Language (EL) assumes that any parameters to "
+"a method expression will be provided by Java code. This means that a method "
+"with parameters cannot be used as a JSF method binding. Seam provides an "
+"enhancement to the EL that allows parameters to be included in a method "
+"expression itself. This applies to <emphasis>any</emphasis> Seam method "
+"expression, including any JSF method binding, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:14
+#, no-c-format
+msgid ""
+"&lt;s:commandButton action=\"#{hotelBooking.bookHotel(hotel)}\" value=\"Book "
+"Hotel\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:16
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:17
+#, no-c-format
+msgid ""
+"To use this feature in Facelets, you will need to declare a special view "
+"handler, <literal>SeamFaceletViewHandler</literal> in <literal>faces-config."
+"xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:20
+#, no-c-format
+msgid ""
+"&lt;faces-config&gt;\n"
+"    &lt;application&gt;\n"
+"        &lt;view-handler&gt;org.jboss.seam.ui.facelet."
+"SeamFaceletViewHandler&lt;/view-handler&gt;\n"
+"    &lt;/application&gt;\n"
+"&lt;/faces-config&gt;"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:24
+#, no-c-format
+msgid "Usage"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:25
+#, no-c-format
+msgid "Parameters are surrounded by parentheses, and separated by commas:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:28
+#, no-c-format
+msgid ""
+"&lt;h:commandButton action=\"#{hotelBooking.bookHotel(hotel, user)}\" value="
+"\"Book Hotel\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:29
+#, no-c-format
+msgid ""
+"The parameters <literal>hotel</literal> and <literal>user</literal> will be "
+"evaluated as value expressions and passed to the <literal>bookHotel()</"
+"literal> method of the component. This gives you an alternative to the use "
+"of <literal>@In</literal>."
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:32
+#, no-c-format
+msgid "Any value expression may be used as a parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:35
+#, no-c-format
+msgid ""
+"&lt;h:commandButton action=\"#{hotelBooking.bookHotel(hotel.id, user."
+"username)}\" value=\"Book Hotel\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:36
+#, no-c-format
+msgid "You may even pass literal strings using single or double quotes:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:39
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=&#8221;#{printer.println( &#8216;Hello world!"
+"&#8217; )}&#8221; value=&#8221;Hello&#8221;/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:40
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=&#8217;#{printer.println( &#8220;Hello "
+"again&#8221; )}&#8217; value=&#8217;Hello&#8217;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:41
+#, no-c-format
+msgid ""
+"You might even want to use this notation for all your action methods, even "
+"when you don&#8217;t have parameters to pass. This improves readability by "
+"making it clear that the expression is a method expression and not a value "
+"expression:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:44
+#, no-c-format
+msgid "&lt;s:link value=\"Cancel\" action=\"#{hotelBooking.cancel()}\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:48
+#, no-c-format
+msgid "Limitations"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:49
+#, no-c-format
+msgid "Please be aware of the following limitations:"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:53
+#, no-c-format
+msgid "Incompatibility with JSP 2.1"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:54
+#, no-c-format
+msgid ""
+"This extension is not currently compatible with JSP 2.1. So if you want to "
+"use this extension with JSF 1.2, you will need to use Facelets. The "
+"extension works correctly with JSP 2.0."
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:60
+#, no-c-format
+msgid "Calling a <literal>MethodExpression</literal> from Java code"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:61
+#, no-c-format
+msgid ""
+"Normally, when a <literal>MethodExpression</literal> or "
+"<literal>MethodBinding</literal> is created, the parameter types are passed "
+"in by JSF. In the case of a method binding, JSF assumes that there are no "
+"parameters to pass. With this extension, we can&#8217;t know the parameter "
+"types until after the expression has been evaluated. This has two minor "
+"consequences:"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:66
+#, no-c-format
+msgid ""
+"When you invoke a <literal>MethodExpression</literal> in Java code, "
+"parameters you pass may be ignored. Parameters defined in the expression "
+"will take precedence."
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:71
+#, no-c-format
+msgid ""
+"Ordinarily, it is safe to call <literal>methodExpression.getMethodInfo()."
+"getParamTypes()</literal> at any time. For an expression with parameters, "
+"you must first invoke the <literal>MethodExpression</literal> before calling "
+"<literal>getParamTypes()</literal>."
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:76
+#, no-c-format
+msgid ""
+"Both of these cases are exceedingly rare and only apply when you want to "
+"invoke the <literal>MethodExpression</literal> by hand in Java code."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Events.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Events.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Events.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1430 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Events.xml:10
+#, no-c-format
+msgid "Events, interceptors and exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:11
+#, no-c-format
+msgid ""
+"Complementing the contextual component model, there are two further basic "
+"concepts that facilitate the extreme loose-coupling that is the distinctive "
+"feature of Seam applications. The first is a strong event model where events "
+"may be mapped to event listeners via JSF-like method binding expressions. "
+"The second is the pervasive use of annotations and interceptors to apply "
+"cross-cutting concerns to components which implement business logic."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:14
+#, no-c-format
+msgid "Seam events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:15
+#, no-c-format
+msgid ""
+"The Seam component model was developed for use with <emphasis>event-driven "
+"applications</emphasis>, specifically to enable the development of fine-"
+"grained, loosely-coupled components in a fine-grained eventing model. Events "
+"in Seam come in several types, most of which we have already seen:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:20
+#, no-c-format
+msgid "JSF events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:25
+#, no-c-format
+msgid "jBPM transition events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:30
+#, no-c-format
+msgid "Seam page actions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:35
+#, no-c-format
+msgid "Seam component-driven events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:40
+#, no-c-format
+msgid "Seam contextual events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:45
+#, no-c-format
+msgid ""
+"All of these various kinds of events are mapped to Seam components via JSF "
+"EL method binding expressions. For a JSF event, this is defined in the JSF "
+"template:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:48
+#, no-c-format
+msgid ""
+"&lt;h:commandButton value=\"Click me!\" action=\"#{helloWorld.sayHello}\"/"
+"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:49
+#, no-c-format
+msgid ""
+"For a jBPM transition event, it is specified in the jBPM process definition "
+"or pageflow definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:52
+#, no-c-format
+msgid ""
+"&lt;start-page name=\"hello\" view-id=\"/hello.jsp\"&gt;\n"
+"    &lt;transition to=\"hello\"&gt;\n"
+"        &lt;action expression=\"#{helloWorld.sayHello}\"/&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/start-page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:53
+#, no-c-format
+msgid ""
+"You can find out more information about JSF events and jBPM events "
+"elsewhere. Lets concentrate for now upon the two additional kinds of events "
+"defined by Seam."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:56
+#, no-c-format
+msgid "Page actions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:57
+#, no-c-format
+msgid ""
+"A Seam page action is an event that occurs just before we render a page. We "
+"declare page actions in <literal>WEB-INF/pages.xml</literal>. We can define "
+"a page action for either a particular JSF view id:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:60
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\" action=\"#{helloWorld.sayHello}\"/&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:61
+#, no-c-format
+msgid ""
+"Or we can use a wildcard to specify an action that applies to all view ids "
+"that match the pattern:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:64
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello/*\" action=\"#{helloWorld.sayHello}\"/&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:65
+#, no-c-format
+msgid ""
+"If multiple wildcarded page actions match the current view-id, Seam will "
+"call all the actions, in order of least-specific to most-specific."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:68
+#, no-c-format
+msgid ""
+"The page action method can return a JSF outcome. If the outcome is non-null, "
+"Seam will delegate to the defined JSFadn Seam navigation rules and a "
+"different view may end up being rendered."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:71
+#, no-c-format
+msgid ""
+"Furthermore, the view id mentioned in the <literal>&lt;page&gt;</literal> "
+"element need not correspond to a real JSP or Facelets page! So, we can "
+"reproduce the functionality of a traditional action-oriented framework like "
+"Struts or WebWork using page actions. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:74
+#, no-c-format
+msgid "TODO: translate struts action into page action"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:75
+#, no-c-format
+msgid ""
+"This is quite useful if you want to do complex things in response to non-"
+"faces requests (for example, HTTP GET requests)."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:78
+#, no-c-format
+msgid "Page parameters"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:79
+#, no-c-format
+msgid ""
+"A JSF faces request (a form submission) encapsulates both an \"action\" (a "
+"method binding) and \"parameters\" (input value bindings). A page action "
+"might also needs parameters!"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:82
+#, no-c-format
+msgid ""
+"Since GET requests are bookmarkable, page parameters are passed as human-"
+"readable request parameters. (Unlike JSF form inputs, which are anything "
+"but!)"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:85
+#, no-c-format
+msgid ""
+"Seam lets us provide a value binding that maps a named request parameter to "
+"an attribute of a model object."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:88
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\" action=\"#{helloWorld.sayHello}\"&gt;\n"
+"        &lt;param name=\"firstName\" value=\"#{person.firstName}\"/&gt;\n"
+"        &lt;param name=\"lastName\" value=\"#{person.lastName}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:89
+#, no-c-format
+msgid ""
+"The <literal>&lt;param&gt;</literal> declaration is bidirectional, just like "
+"a value binding for a JSF input:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:94
+#, no-c-format
+msgid ""
+"When a non-faces (GET) request for the view id occurs, Seam sets the value "
+"of the named request parameter onto the model object, after performing "
+"appropriate type conversions."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:99
+#, no-c-format
+msgid ""
+"Any <literal>&lt;s:link&gt;</literal> or <literal>&lt;s:button&gt;</literal> "
+"transparently includes the request parameter. The value of the parameter is "
+"determined by evaluating the value binding during the render phase (when the "
+"<literal>&lt;s:link&gt;</literal> is rendered)."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:104
+#, no-c-format
+msgid ""
+"Any navigation rule with a <literal>&lt;redirect/&gt;</literal> to the view "
+"id transparently includes the request parameter. The value of the parameter "
+"is determined by evaluating the value binding at the end of the invoke "
+"application phase."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:109
+#, no-c-format
+msgid ""
+"The value is transparently propagated with any JSF form submission for the "
+"page with the given view id. (This means that view parameters behave like "
+"<literal>PAGE</literal>-scoped context variables for faces requests."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:114
+#, no-c-format
+msgid ""
+"The essential idea behind all this is that <emphasis>however</emphasis> we "
+"get from any other page to <literal>/hello.jsp</literal> (or from <literal>/"
+"hello.jsp</literal> back to <literal>/hello.jsp</literal>), the value of the "
+"model attribute referred to in the value binding is \"remembered\", without "
+"the need for a conversation (or other server-side state)."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:117
+#, no-c-format
+msgid ""
+"This all sounds pretty complex, and you're probably wondering if such an "
+"exotic construct is really worth the effort. Actually, the idea is very "
+"natural once you \"get it\". It is definitely worth taking the time to "
+"understand this stuff. Page parameters are the most elegant way to propagate "
+"state across a non-faces request. They are especially cool for problems like "
+"search screens with bookmarkable results pages, where we would like to be "
+"able to write our application code to handle both POST and GET requests with "
+"the same code. Page parameters eliminate repetitive listing of request "
+"parameters in the view definition and make redirects much easier to code."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:120
+#, no-c-format
+msgid ""
+"Note that you don't need an actual page action method binding to use a page "
+"parameter. The following is perfectly valid:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:123
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\"&gt;\n"
+"        &lt;param name=\"firstName\" value=\"#{person.firstName}\"/&gt;\n"
+"        &lt;param name=\"lastName\" value=\"#{person.lastName}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:124
+#, no-c-format
+msgid "You can even specify a JSF converter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:127
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/calculator.jsp\" action=\"#{calculator.calculate}"
+"\"&gt;\n"
+"        &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"        &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"        &lt;param name=\"op\" converterId=\"com.my.calculator."
+"OperatorConverter\" value=\"#{calculator.op}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:128
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/calculator.jsp\" action=\"#{calculator.calculate}"
+"\"&gt;\n"
+"        &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"        &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"        &lt;param name=\"op\" converter=\"#{operatorConverter}\" value=\"#"
+"{calculator.op}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:129
+#, no-c-format
+msgid "Navigation"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:130
+#, no-c-format
+msgid ""
+"You can use standard JSF navigation rules defined in <literal>faces-config."
+"xml</literal> in a Seam application. However, JSF navigation rules have a "
+"number of annoying limitations:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:135
+#, no-c-format
+msgid ""
+"It is not possible to specify request parameters to be used when redirecting."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:140
+#, no-c-format
+msgid "It is not possible to begin or end conversations from a rule."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:145
+#, no-c-format
+msgid ""
+"Rules work by evaluating the return value of the action method; it is not "
+"possible to evaluate an arbitrary EL expression."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:150
+#, no-c-format
+msgid ""
+"A further problem is that \"orchestration\" logic gets scattered between "
+"<literal>pages.xml</literal> and <literal>faces-config.xml</literal>. It's "
+"better to unify this logic into <literal>pages.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:153
+#, no-c-format
+msgid "This JSF navigation rule:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:156
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"    &lt;from-view-id&gt;/editDocument.xhtml&lt;/from-view-id&gt;\n"
+"    \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-action&gt;#{documentEditor.update}&lt;/from-action&gt;\n"
+"        &lt;from-outcome&gt;success&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/viewDocument.xhtml&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"    \n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:157
+#, no-c-format
+msgid "Can be rewritten as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:160
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if-outcome=\"success\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:161
+#, no-c-format
+msgid ""
+"But it would be even nicer if we didn't have to pollute our "
+"<literal>DocumentEditor</literal> component with string-valued return values "
+"(the JSF outcomes). So Seam lets us write:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:164
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\" \n"
+"                   evaluate=\"#{documentEditor.errors.size}\"&gt;\n"
+"        &lt;rule if-outcome=\"0\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:165
+#, no-c-format
+msgid "Or even:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:168
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:169
+#, no-c-format
+msgid ""
+"The first form evaluates a value binding to determine the outcome value to "
+"be used by the subsequent rules. The second approach ignores the outcome and "
+"evaluates a value binding for each possible rule."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:172
+#, no-c-format
+msgid ""
+"Of course, when an update succeeds, we probably want to end the current "
+"conversation. We can do that like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:175
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:176
+#, no-c-format
+msgid ""
+"But ending the conversation loses any state associated with the "
+"conversation, including the document we are currently interested in! One "
+"solution would be to use an immediate render instead of a redirect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:179
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:180
+#, no-c-format
+msgid ""
+"But the correct solution is to pass the document id as a request parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:183
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"&gt;\n"
+"                &lt;param name=\"documentId\" value=\"#{documentEditor."
+"documentId}\"/&gt;\n"
+"            &lt;/redirect&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:184
+#, no-c-format
+msgid ""
+"Null outcomes are a special case in JSF. The null outcome is interpreted to "
+"mean \"redisplay the page\". The following navigation rule matches any non-"
+"null outcome, but <emphasis>not</emphasis> the null outcome:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:187
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule&gt;\n"
+"            &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:188
+#, no-c-format
+msgid ""
+"If you want to perform navigation when a null outcome occurs, use the "
+"following form instead:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:191
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:192
+#, no-c-format
+msgid ""
+"Fine-grained files for definition of navigation, page actions and parameters"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:193
+#, no-c-format
+msgid ""
+"If you have a lot of different page actions and page parameters, or even "
+"just a lot of navigation rules, you will almost certainly want to split the "
+"declarations up over multiple files. You can define actions and parameters "
+"for a page with the view id <literal>/calc/calculator.jsp</literal> in a "
+"resource named <literal>calc/calculator.page.xml</literal>. The root element "
+"in this case is the <literal>&lt;page&gt;</literal> element, and the view id "
+"is implied:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:196
+#, no-c-format
+msgid ""
+"&lt;page action=\"#{calculator.calculate}\"&gt;\n"
+"    &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"    &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"    &lt;param name=\"op\" converter=\"#{operatorConverter}\" value=\"#"
+"{calculator.op}\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:197
+#, no-c-format
+msgid "Component-driven events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:198
+#, no-c-format
+msgid ""
+"Seam components can interact by simply calling each others methods. Stateful "
+"components may even implement the observer/observable pattern. But to enable "
+"components to interact in a more loosely-coupled fashion than is possible "
+"when the components call each others methods directly, Seam provides "
+"<emphasis>component-driven events</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:201
+#, no-c-format
+msgid ""
+"We specify event listeners (observers) in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:204
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;event type=\"hello\"&gt;\n"
+"        &lt;action expression=\"#{helloListener.sayHelloBack}\"/&gt;\n"
+"        &lt;action expression=\"#{logger.logHello}\"/&gt;\n"
+"    &lt;/event&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:205
+#, no-c-format
+msgid "Where the <emphasis>event type</emphasis> is just an arbitrary string."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:208
+#, no-c-format
+msgid ""
+"When an event occurs, the actions registered for that event will be called "
+"in the order they appear in <literal>components.xml</literal>. How does a "
+"component raise an event? Seam provides a built-in component for this."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:211
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World!\");\n"
+"        Events.instance().raiseEvent(\"hello\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:212
+#, no-c-format
+msgid "Or you can use an annotation."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:215
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    @RaiseEvent(\"hello\")\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World!\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:216
+#, no-c-format
+msgid ""
+"Notice that this event producer has no dependency upon event consumers. The "
+"event listener may now be implemented with absolutely no dependency upon the "
+"producer:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:219
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    public void sayHelloBack() {\n"
+"        FacesMessages.instance().add(\"Hello to you too!\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:220
+#, no-c-format
+msgid ""
+"The method binding defined in <literal>components.xml</literal> above takes "
+"care of mapping the event to the consumer. If you don't like futzing about "
+"in the <literal>components.xml</literal> file, you can use an annotation "
+"instead:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:223
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    @Observer(\"hello\")\n"
+"    public void sayHelloBack() {\n"
+"        FacesMessages.instance().add(\"Hello to you too!\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:224
+#, no-c-format
+msgid ""
+"You might wonder why I've not mentioned anything about event objects in this "
+"discussion. In Seam, there is no need for an event object to propagate state "
+"between event producer and listener. State is held in the Seam contexts, and "
+"is shared between components. However, if you really want to pass an event "
+"object, you can:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:227
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    private String name;\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World, my name is #0.\", "
+"name);\n"
+"        Events.instance().raiseEvent(\"hello\", name);\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:228
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    @Observer(\"hello\")\n"
+"    public void sayHelloBack(String name) {\n"
+"        FacesMessages.instance().add(\"Hello #0!\", name);\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:229
+#, no-c-format
+msgid "Contextual events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:230
+#, no-c-format
+msgid ""
+"Seam defines a number of built-in events that the application can use to "
+"perform special kinds of framework integration. The events are:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:235
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preSetVariable.&lt;name&gt;</literal> &mdash; called "
+"when the context variable &lt;name&gt; is set"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:240
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postSetVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is set"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:245
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preRemoveVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is unset"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:250
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postRemoveVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is unset"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:255
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preDestroyContext.&lt;SCOPE&gt;</literal> &mdash; "
+"called before the &lt;SCOPE&gt; context is destroyed"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:260
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postDestroyContext.&lt;SCOPE&gt;</literal> &mdash; "
+"called after the &lt;SCOPE&gt; context is destroyed"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:265
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beginConversation </literal>&mdash; called whenever "
+"a long-running conversation begins"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:270
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endConversation </literal>&mdash; called whenever a "
+"long-running conversation ends"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:275
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beginPageflow.&lt;name&gt; </literal>&mdash; called "
+"when the pageflow &lt;name&gt; begins"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:280
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endPageflow.&lt;name&gt; </literal>&mdash; called "
+"when the pageflow &lt;name&gt; ends"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:285
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.createProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; is created"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:290
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; ends"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:295
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.initProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; is associated with the conversation"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:300
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.initTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is associated with the conversation"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:305
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.startTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is started"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:310
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is ended"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:315
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postCreate.&lt;name&gt; </literal>&mdash; called "
+"when the component &lt;name&gt; is created"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:320
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preDestroy.&lt;name&gt; </literal>&mdash; called "
+"when the component &lt;name&gt; is destroyed"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:325
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beforePhase </literal>&mdash; called before the "
+"start of a JSF phase"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:330
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.afterPhase </literal>&mdash; called after the end of "
+"a JSF phase"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:335
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postAuthenticate.&lt;name&gt; </literal>&mdash; "
+"called after a user is authenticated"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:340
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preAuthenticate.&lt;name&gt; </literal>&mdash; "
+"called before attempting to authenticate a user"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:345
+#, no-c-format
+msgid ""
+"Seam components may observe any of these events in just the same way they "
+"observe any other component-driven events."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:348
+#, no-c-format
+msgid "Seam interceptors"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:349
+#, no-c-format
+msgid ""
+"EJB 3.0 introduced a standard interceptor model for session bean components. "
+"To add an interceptor to a bean, you need to write a class with a method "
+"annotated <literal>@AroundInvoke</literal> and annotate the bean with an "
+"<literal>@Interceptors</literal> annotation that specifies the name of the "
+"interceptor class. For example, the following interceptor checks that the "
+"user is logged in before allowing invoking an action listener method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:352
+#, no-c-format
+msgid ""
+"public class LoggedInInterceptor {\n"
+"\n"
+"   @AroundInvoke\n"
+"   public Object checkLoggedIn(InvocationContext invocation) throws "
+"Exception {\n"
+"   \n"
+"      boolean isLoggedIn = Contexts.getSessionContext().get(\"loggedIn\")!"
+"=null;\n"
+"      if (isLoggedIn) {\n"
+"         //the user is already logged in\n"
+"         return invocation.proceed();\n"
+"      }\n"
+"      else {\n"
+"         //the user is not logged in, fwd to login page\n"
+"         return \"login\";\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:353
+#, no-c-format
+msgid ""
+"To apply this interceptor to a session bean which acts as an action "
+"listener, we must annotate the session bean <literal>@Interceptors"
+"(LoggedInInterceptor.class)</literal>. This is a somewhat ugly annotation. "
+"Seam builds upon the interceptor framework in EJB3 by allowing you to use "
+"<literal>@Interceptors</literal> as a meta-annotation. In our example, we "
+"would create an <literal>@LoggedIn</literal> annotation, as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:356
+#, no-c-format
+msgid ""
+"@Target(TYPE)\n"
+"@Retention(RUNTIME)\n"
+"@Interceptors(LoggedInInterceptor.class)\n"
+"public @interface LoggedIn {}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:357
+#, no-c-format
+msgid ""
+"We can now simply annotate our action listener bean with <literal>@LoggedIn</"
+"literal> to apply the interceptor."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:360
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"changePasswordAction\")\n"
+"@LoggedIn\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class ChangePasswordAction implements ChangePassword { \n"
+"    \n"
+"    ...\n"
+"    \n"
+"    public String changePassword() { ... }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:361
+#, no-c-format
+msgid ""
+"If interceptor ordering is important (it usually is), you can add "
+"<literal>@Interceptor</literal> annotations to your interceptor classes to "
+"specify a partial order of interceptors."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:364
+#, no-c-format
+msgid ""
+"@Interceptor(around={BijectionInterceptor.class,\n"
+"                     ValidationInterceptor.class,\n"
+"                     ConversationInterceptor.class},\n"
+"             within=RemoveInterceptor.class)\n"
+"public class LoggedInInterceptor\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:365
+#, no-c-format
+msgid ""
+"You can even have a \"client-side\" interceptor, that runs around any of the "
+"built-in functionality of EJB3:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:368
+#, no-c-format
+msgid ""
+"@Interceptor(type=CLIENT)\n"
+"public class LoggedInInterceptor\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:369
+#, no-c-format
+msgid ""
+"EJB interceptors are stateful, with a lifecycle that is the same as the "
+"component they intercept. For interceptors which do not need to maintain "
+"state, Seam lets you get a performance optimization by specifying "
+"<literal>@Interceptor(stateless=true)</literal>."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:372
+#, no-c-format
+msgid ""
+"Much of the functionality of Seam is implemented as a set of built-in Seam "
+"interceptors, including the interceptors named in the previous example. You "
+"don't have to explicitly specify these interceptors by annotating your "
+"components; they exist for all interceptable Seam components."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:375
+#, no-c-format
+msgid ""
+"You can even use Seam interceptors with JavaBean components, not just EJB3 "
+"beans!"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:378
+#, no-c-format
+msgid ""
+"EJB defines interception not only for business methods (using "
+"<literal>@AroundInvoke</literal>), but also for the lifecycle methods "
+"<literal>@PostConstruct</literal>, <literal>@PreDestroy</literal>, "
+"<literal>@PrePassivate</literal> and <literal>@PostActive</literal>. Seam "
+"supports all these lifecycle methods on both component and interceptor not "
+"only for EJB3 beans, but also for JavaBean components (except "
+"<literal>@PreDestroy</literal> which is not meaningful for JavaBean "
+"components)."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:381
+#, no-c-format
+msgid "Managing exceptions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:382
+#, no-c-format
+msgid ""
+"JSF is surprisingly limited when it comes to exception handling. As a "
+"partial workaround for this problem, Seam lets you define how a particular "
+"class of exception is to be treated by annotating the exception class, or "
+"declaring the exception class in an XML file. This facility is meant to be "
+"combined with the EJB 3.0-standard <literal>@ApplicationException</literal> "
+"annotation which specifies whether the exception should cause a transaction "
+"rollback."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:385
+#, no-c-format
+msgid "Exceptions and transactions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:386
+#, no-c-format
+msgid ""
+"EJB specifies well-defined rules that let us control whether an exception "
+"immediately marks the current transaction for rollback when it is thrown by "
+"a business method of the bean: <emphasis>system exceptions</emphasis> always "
+"cause a transaction rollback, <emphasis>application exceptions</emphasis> do "
+"not cause a rollback by default, but they do if "
+"<literal>@ApplicationException(rollback=true)</literal> is specified. (An "
+"application exception is any checked exception, or any unchecked exception "
+"annotated <literal>@ApplicationException</literal>. A system exception is "
+"any unchecked exception without an <literal>@ApplicationException</literal> "
+"annotation.)"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:389
+#, no-c-format
+msgid ""
+"Note that there is a difference between marking a transaction for rollback, "
+"and actually rolling it back. The exception rules say that the transaction "
+"should be marked rollback only, but it may still be active after the "
+"exception is thrown."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:392
+#, no-c-format
+msgid ""
+"Seam applies the EJB 3.0 exception rollback rules also to Seam JavaBean "
+"components."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:395
+#, no-c-format
+msgid ""
+"But these rules only apply in the Seam component layer. What about an "
+"exception that is uncaught and propagates out of the Seam component layer, "
+"and out of the JSF layer? Well, it is always wrong to leave a dangling "
+"transaction open, so Seam rolls back any active transaction when an "
+"exception occurs and is uncaught in the Seam component layer."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:398
+#, no-c-format
+msgid "Enabling Seam exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:399
+#, no-c-format
+msgid ""
+"To enable Seam's exception handling, we need to make sure we have the master "
+"servlet filter declared in <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:402
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.servlet.SeamFilter&lt;/filter-"
+"class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:403
+#, no-c-format
+msgid "Using annotations for exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:404
+#, no-c-format
+msgid ""
+"The following exception results in a HTTP 404 error whenever it propagates "
+"out of the Seam component layer. It does not roll back the current "
+"transaction immediately when thrown, but the transaction will be rolled back "
+"if it the exception is not caught by another Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:407
+#, no-c-format
+msgid ""
+"@HttpError(errorCode=404)\n"
+"public class ApplicationException extends Exception { ... }"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:408
+#, no-c-format
+msgid ""
+"This exception results in a browser redirect whenever it propagates out of "
+"the Seam component layer. It also ends the current conversation. It causes "
+"an immediate rollback of the current transaction."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:411
+#, no-c-format
+msgid ""
+"@Redirect(viewId=\"/failure.xhtml\", end=true)\n"
+"@ApplicationException(rollback=true)\n"
+"public class UnrecoverableApplicationException extends RuntimeException "
+"{ ... }"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:412
+#, no-c-format
+msgid ""
+"Note that <literal>@Redirect</literal> does not work for exceptions which "
+"occur during the render phase of the JSF lifecycle."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:415
+#, no-c-format
+msgid ""
+"This exception results in a redirect, along with a message to the user, when "
+"it propagates out of the Seam component layer. It also immediately rolls "
+"back the current transaction."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:418
+#, no-c-format
+msgid ""
+"@Redirect(viewId=\"/error.xhtml\", message=\"Unexpected error\")\n"
+"public class SystemException extends RuntimeException { ... }"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:419
+#, no-c-format
+msgid "Using XML for exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:420
+#, no-c-format
+msgid ""
+"Since we can't add annotations to all the exception classes we are "
+"interested in, Seam also lets us specify this functionality in "
+"<literal>pages.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:423
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   \n"
+"   &lt;exception class=\"javax.persistence.EntityNotFoundException\"&gt;\n"
+"      &lt;http-error error-code=\"404\"/&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"   &lt;exception class=\"javax.persistence.PersistenceException\"&gt;\n"
+"      &lt;end-conversation/&gt;\n"
+"      &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"          &lt;message&gt;Database access failed&lt;/message&gt;\n"
+"      &lt;/redirect&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"   &lt;exception&gt;\n"
+"      &lt;end-conversation/&gt;\n"
+"      &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"          &lt;message&gt;Unexpected failure&lt;/message&gt;\n"
+"      &lt;/redirect&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:424
+#, no-c-format
+msgid ""
+"The last <literal>&lt;exception&gt;</literal> declaration does not specify a "
+"class, and is a catch-all for any exception for which handling is not "
+"otherwise specified via annotations or in <literal>pages.xml</literal>."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Framework.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Framework.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Framework.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,828 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Framework.xml:10
+#, no-c-format
+msgid "The Seam Application Framework"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:11
+#, no-c-format
+msgid ""
+"Seam makes it really easy to create applications by writing plain Java "
+"classes with annotations, which don't need to extend any special interfaces "
+"or superclasses. But we can simplify some common programming tasks even "
+"further, by providing a set of pre-built components which can be re-used "
+"either by configuration in <literal>components.xml</literal> (for very "
+"simple cases) or extension."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:14
+#, no-c-format
+msgid ""
+"The <emphasis>Seam Application Framework</emphasis> can reduce the amount of "
+"code you need to write when doing basic database access in a web "
+"application, using either Hibernate or JPA."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:17
+#, no-c-format
+msgid ""
+"We should emphasize that the framework is extremely simple, just a handful "
+"of simple classes that are easy to understand and extend. The \"magic\" is "
+"in Seam itself&mdash;the same magic you use when creating any Seam "
+"application even without using this framework."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:21
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:22
+#, no-c-format
+msgid ""
+"The components provided by the Seam application framework may be used in one "
+"of two different approaches. The first way is to install and configure an "
+"instance of the component in <literal>components.xml</literal>, just like we "
+"have done with other kinds of built-in Seam components. For example, the "
+"following fragment from <literal>components.xml</literal> installs a "
+"component which can perform basic CRUD operations for a <literal>Contact</"
+"literal> entity:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:25
+#, no-c-format
+msgid ""
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" \n"
+"                       entity-manager=\"#{personDatabase}\"&gt;\n"
+"    &lt;framework:id&gt;#{param.personId}&lt;/framework:id&gt;\n"
+"&lt;/framework:entity-home&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:26
+#, no-c-format
+msgid ""
+"If that looks a bit too much like \"programming in XML\" for your taste, you "
+"can use extension instead:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:29
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; implements "
+"LocalPersonHome {\n"
+"    @RequestParameter String personId;\n"
+"    @In EntityManager personDatabase;\n"
+"    \n"
+"    public Object getId() { return personId; }\n"
+"    public EntityManager getEntityManager() { return personDatabase; }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:30
+#, no-c-format
+msgid ""
+"The second approach has one huge advantage: you can easily add extra "
+"functionality, and override the built-in functionality (the framework "
+"classes were carefully designed for extension and customization)."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:33
+#, no-c-format
+msgid ""
+"A second advantage is that your classes may be EJB stateful sessin beans, if "
+"you like. (They do not have to be, they can be plain JavaBean components if "
+"you prefer.)"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:36
+#, no-c-format
+msgid ""
+"At this time, the Seam Application Framework provides just four built-in "
+"components: <literal>EntityHome</literal> and <literal>HibernateEntityHome</"
+"literal> for CRUD, along with <literal>EntityQuery</literal> and "
+"<literal>HibernateEntityQuery</literal> for queries."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:39
+#, no-c-format
+msgid ""
+"The Home and Query components are written so that they can function with a "
+"scope of session, event or conversation. Which scope you use depends upon "
+"the state model you wish to use in your application."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:42
+#, no-c-format
+msgid ""
+"The Seam Application Framework only works with Seam-managed persistence "
+"contexts. By default, the components will look for a persistence context "
+"named <literal>entityManager</literal>."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:48
+#, no-c-format
+msgid "Home objects"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:49
+#, no-c-format
+msgid ""
+"A Home object provides persistence operations for a particular entity class. "
+"Suppose we have our trusty <literal>Person</literal> class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:52
+#, no-c-format
+msgid ""
+"@Entity\n"
+"public class Person {\n"
+"    @Id private Long id;\n"
+"    private String firstName;\n"
+"    private String lastName;\n"
+"    private Country nationality;\n"
+"    \n"
+"    //getters and setters...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:53
+#, no-c-format
+msgid ""
+"We can define a <literal>personHome</literal> component either via "
+"configuration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:56
+#, no-c-format
+msgid ""
+"&lt;framework:entity-home name=\"personHome\" entity-class=\"eg.Person\" /"
+"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:57
+#, no-c-format
+msgid "Or via extension:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:60
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:61
+#, no-c-format
+msgid ""
+"A Home object provides the following operations: <literal>persist()</"
+"literal>, <literal>remove()</literal>, <literal>update()</literal> and "
+"<literal>getInstance()</literal>. Before you can call the <literal>remove()</"
+"literal>, or <literal>update()</literal> operations, you must first set the "
+"identifier of the object you are interested in, using the <literal>setId()</"
+"literal> method."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:64
+#, no-c-format
+msgid "We can use a Home directly from a JSF page, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:67
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Create Person&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{personHome.instance."
+"firstName}\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{personHome.instance."
+"lastName}\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:68
+#, no-c-format
+msgid ""
+"Usually, it is much nicer to be able to refer to the <literal>Person</"
+"literal> merely as <literal>person</literal>, so let's make that possible by "
+"adding a line to <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:71
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:72
+#, no-c-format
+msgid ""
+"(If we are using configuration.) Or by adding a <literal>@Factory</literal> "
+"method to <literal>PersonHome</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:75
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:76
+#, no-c-format
+msgid ""
+"(If we are using extension.) This change simplifies our JSF page to the "
+"following:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:79
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Create Person&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{person.firstName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{person.lastName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:80
+#, no-c-format
+msgid ""
+"Well, that lets us create new <literal>Person</literal> entries. Yes, that "
+"is all the code that is required! Now, if we want to be able to display, "
+"update and delete pre-existing <literal>Person</literal> entries in the "
+"database, we need to be able to pass the entry identifier to the "
+"<literal>PersonHome</literal>. Page parameters are a great way to do that:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:83
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page viewid=\"/editPerson.jsp\"&gt;\n"
+"        &lt;param name=\"personId\" value=\"#{personHome.id}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:84
+#, no-c-format
+msgid "Now we can add the extra operations to our JSF page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:87
+#, no-c-format
+msgid ""
+"&lt;h1&gt;\n"
+"    &lt;h:outputText rendered=\"#{!personHome.managed}\" value=\"Create "
+"Person\"/&gt;\n"
+"    &lt;h:outputText rendered=\"#{personHome.managed}\" value=\"Edit Person"
+"\"/&gt;\n"
+"&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{person.firstName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{person.lastName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\" \n"
+"            rendered=\"#{!personHome.managed}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Update Person\" action=\"#{personHome."
+"update}\" \n"
+"            rendered=\"#{personHome.managed}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Delete Person\" action=\"#{personHome."
+"remove}\" \n"
+"            rendered=\"#{personHome.managed}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:88
+#, no-c-format
+msgid ""
+"When we link to the page with no request parameters, the page will be "
+"displayed as a \"Create Person\" page. When we provide a value for the "
+"<literal>personId</literal> request parameter, it will be an \"Edit Person\" "
+"page."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:91
+#, no-c-format
+msgid ""
+"Suppose we need to create <literal>Person</literal> entries with their "
+"nationality initialized. We can do that easily, via configuration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:94
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" \n"
+"                       new-instance=\"#{newPerson}\"/&gt;\n"
+"\n"
+"&lt;component name=\"newPerson\" \n"
+"           class=\"eg.Person\"&gt;\n"
+"    &lt;property name=\"nationality\"&gt;#{country}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:95
+#, no-c-format
+msgid "Or by extension:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:98
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:99
+#, no-c-format
+msgid ""
+"Of course, the <literal>Country</literal> could be an object managed by "
+"another Home object, for example, <literal>CountryHome</literal>."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:102
+#, no-c-format
+msgid ""
+"To add more sophisticated operations (association management, etc), we can "
+"just add methods to <literal>PersonHome</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:105
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"    public void migrate()\n"
+"    {\n"
+"        getInstance().setCountry(country);\n"
+"        update();\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:106
+#, no-c-format
+msgid ""
+"The Home object automatically displays faces messages when an operation is "
+"successful. To customize these messages we can, again, use configuration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:109
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\"\n"
+"                       entity-class=\"eg.Person\"\n"
+"                       new-instance=\"#{newPerson}\"&gt;\n"
+"    &lt;framework:created-message&gt;New person #{person.firstName} #{person."
+"lastName} \n"
+"        created&lt;/framework:created-message&gt;\n"
+"    &lt;framework:deleted-message&gt;Person #{person.firstName} #{person."
+"lastName}\n"
+"        deleted&lt;/framework:deleted-message&gt;\n"
+"    &lt;framework:updated-message&gt;Person #{person.firstName} #{person."
+"lastName} \n"
+"        updated&lt;/framework:updated-message&gt;\n"
+"&lt;/framework:entity-home&gt;\n"
+"\n"
+"&lt;component name=\"newPerson\" \n"
+"           class=\"eg.Person\"&gt;\n"
+"    &lt;property name=\"nationality\"&gt;#{country}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:110
+#, no-c-format
+msgid "Or extension:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:113
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"    protected String getCreatedMessage() { return \"New person #{person."
+"firstName} \n"
+"        #{person.lastName} created\"; }\n"
+"    protected String getUpdatedMessage() { return \"Person #{person."
+"firstName} \n"
+"        #{person.lastName} updated\"; }\n"
+"    protected String getDeletedMessage() { return \"Person #{person."
+"firstName} \n"
+"        #{person.lastName} deleted\"; }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:114
+#, no-c-format
+msgid ""
+"But the best way to specify the messages is to put them in a resource bundle "
+"known to Seam (the bundle named <literal>messages</literal>, by default)."
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:117
+#, no-c-format
+msgid ""
+"Person_created=New person #{person.firstName} #{person.lastName} created\n"
+"Person_deleted=Person #{person.firstName} #{person.lastName} deleted\n"
+"Person_updated=Person #{person.firstName} #{person.lastName} updated"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:118
+#, no-c-format
+msgid ""
+"This enables internationalization, and keeps your code and configuration "
+"clean of presentation concerns."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:121
+#, no-c-format
+msgid ""
+"The final step is to add validation functionality to the page, using "
+"<literal>&lt;s:validateAll&gt;</literal> and <literal>&lt;s:decorate&gt;</"
+"literal>, but I'll leave that for you to figure out."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:127
+#, no-c-format
+msgid "Query objects"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:128
+#, no-c-format
+msgid ""
+"If we need a list of all <literal>Person</literal> instance in the database, "
+"we can use a Query object. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:131
+#, no-c-format
+msgid ""
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:132
+#, no-c-format
+msgid "We can use it from a JSF page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:135
+#, no-c-format
+msgid ""
+"&lt;h1&gt;List of people&lt;/h1&gt;\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view-id=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:136
+#, no-c-format
+msgid "We probably need to support pagination:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:139
+#, no-c-format
+msgid ""
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\" \n"
+"                        order=\"lastName\" \n"
+"                        max-results=\"20\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:140
+#, no-c-format
+msgid "We'll use a page parameter to determine the page to display:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:143
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page viewid=\"/searchPerson.jsp\"&gt;\n"
+"        &lt;param name=\"firstResult\" value=\"#{people.firstResult}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:144
+#, no-c-format
+msgid "The JSF code for a pagination control is a bit verbose, but manageable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:147
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Search for people&lt;/h1&gt;\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view-id=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.previousExists}\" "
+"value=\"First Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"0\"/&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.previousExists}\" "
+"value=\"Previous Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.previousFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.nextExists}\" value="
+"\"Next Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.nextFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.nextExists}\" value="
+"\"Last Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.lastFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:148
+#, no-c-format
+msgid ""
+"Real search screens let the user enter a bunch of optional search criteria "
+"to narrow the list of results returned. The Query object lets you specify "
+"optional \"restrictions\" to support this important usecase:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:151
+#, no-c-format
+msgid ""
+"&lt;component name=\"examplePerson\" class=\"Person\"/&gt;\n"
+"        \n"
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\" \n"
+"                        order=\"lastName\" \n"
+"                        max-results=\"20\"&gt;\n"
+"    &lt;framework:restrictions&gt;\n"
+"        &lt;value&gt;lower(firstName) like lower( #{examplePerson.firstName} "
+"+ '&#37;' )&lt;/value&gt;\n"
+"        &lt;value&gt;lower(lastName) like lower( #{examplePerson.lastName} + "
+"'&#37;' )&lt;/value&gt;\n"
+"    &lt;/framework:restrictions&gt;\n"
+"&lt;/framework:entity-query&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:152
+#, no-c-format
+msgid "Notice the use of an \"example\" object."
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:155
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Search for people&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{examplePerson.firstName}"
+"\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{examplePerson.lastName}"
+"\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;&lt;h:commandButton value=\"Search\" action=\"/search.jsp\"/"
+"&gt;&lt;/div&gt;\n"
+"&lt;/h:form&gt;\n"
+"\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view-id=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:156
+#, no-c-format
+msgid ""
+"The examples in this section have all shown reuse by configuration. However, "
+"reuse by extension is equally possible for Query objects."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:162
+#, no-c-format
+msgid "Controller objects"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:163
+#, no-c-format
+msgid ""
+"A totally optional part of the Seam Application Framework is the class "
+"<literal>Controller</literal> and its subclasses <literal>EntityController</"
+"literal><literal>HibernateEntityController</literal> and "
+"<literal>BusinessProcessController</literal>. These classes provide nothing "
+"more than some convenience methods for access to commonly used built-in "
+"components and methods of built-in components. They help save a few "
+"keystrokes (characters can add up!) and provide a great launchpad for new "
+"users to explore the rich functionality built in to Seam."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:166
+#, no-c-format
+msgid ""
+"For example, here is what <literal>RegisterAction</literal> from the Seam "
+"registration example would look like:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:169
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"register\")\n"
+"public class RegisterAction extends EntityController implements Register\n"
+"{\n"
+"\n"
+"   @In private User user;\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = createQuery(\"select u.username from User u where u."
+"username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getResultList();\n"
+"      \n"
+"      if ( existing.size()==0 )\n"
+"      {\n"
+"         persist(user);\n"
+"         info(\"Registered new user #{user.username}\");\n"
+"         return \"/registered.jspx\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         addFacesMessage(\"User #{user.username} already exists\");\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:170
+#, no-c-format
+msgid "As you can see, its not an earthshattering improvement..."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Gettingstarted.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Gettingstarted.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Gettingstarted.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,588 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Gettingstarted.xml:10
+#, no-c-format
+msgid "Getting started with Seam, using seam-gen"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:11
+#, no-c-format
+msgid ""
+"The Seam distribution includes a command line utility that makes it really "
+"easy to set up an Eclipse project, generate some simple Seam skeleton code, "
+"and reverse engineer an application from a pre-existing database."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:14
+#, no-c-format
+msgid ""
+"This is the easy way to get your feet wet with Seam, and gives you some "
+"ammunition for next time you find yourself trapped in an elevator with one "
+"of those tedious Ruby guys ranting about how great and wonderful his new toy "
+"is for building totally trivial applications that put things in databases."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:17
+#, no-c-format
+msgid ""
+"In this release, seam-gen works best for people with JBoss AS. You can use "
+"the generated project with other J2EE or Java EE 5 application servers by "
+"making a few manual changes to the project configuration."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:20
+#, no-c-format
+msgid ""
+"You <emphasis>can</emphasis> use seam-gen without Eclipse, but in this "
+"tutorial, we want to show you how to use it in conjunction with Eclipse for "
+"debugging and integration testing. If you don't want to install Eclipse, you "
+"can still follow along with this tutorial&mdash;all steps can be peformed "
+"from the command line."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:23
+#, no-c-format
+msgid ""
+"Seam-gen is basically just a big ugly Ant script wrapped around Hibernate "
+"Tools, together with some templates. Which means it is easy to customize if "
+"you need to."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:27
+#, no-c-format
+msgid "Before you start"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:28
+#, no-c-format
+msgid ""
+"Make sure you have JDK 5 or JDK 6, JBoss AS 4.0.5 and Ant 1.6, along with "
+"recent versions of Eclipse, the JBoss IDE plugin for Eclipse and the TestNG "
+"plugin for Eclipse correctly installed before starting. Add your JBoss "
+"installation to the JBoss Server View in Eclipse. Start JBoss in debug mode. "
+"Finally, start a command prompt in the directory where you unzipped the Seam "
+"distribution."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:34
+#, no-c-format
+msgid "Setting up a new Eclipse project"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:35
+#, no-c-format
+msgid ""
+"The first thing we need to do is configure seam-gen for your environment: "
+"JBoss AS installation directory, Eclipse workspace, and database connection. "
+"It's easy, just type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:38
+#, no-c-format
+msgid ""
+"cd jboss-seam-1.1.x\n"
+"seam setup"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:39
+#, no-c-format
+msgid "And you will be prompted for the needed information:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:42
+#, no-c-format
+msgid ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam setup\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"setup:\n"
+"    [echo] Welcome to seam-gen :-)\n"
+"    [input] Enter your Java project workspace [C:/Projects]\n"
+"\n"
+"    [input] Enter your JBoss home directory [C:/Program Files/jboss-4.0.5."
+"GA]\n"
+"\n"
+"    [input] Enter the project name [myproject]\n"
+"helloworld\n"
+"    [input] Is this project deployed as an EAR (with EJB components) or a "
+"WAR \n"
+"        (with no EJB support) [ear] (ear,war,)\n"
+"\n"
+"    [input] Enter the Java package name for your session beans [com.mydomain."
+"helloworld]\n"
+"org.jboss.helloworld\n"
+"    [input] Enter the Java package name for your entity beans [org.jboss."
+"helloworld]\n"
+"\n"
+"    [input] Enter the Java package name for your test cases [org.jboss."
+"helloworld.test]\n"
+"\n"
+"    [input] What kind of database are you using? [hsql]\n"
+"    (hsql,mysql,oracle,postgres,mssql,db2,sybase,)\n"
+"mysql\n"
+"    [input] Enter the Hibernate dialect for your database [org.hibernate."
+"dialect.MySQLDialect]\n"
+"\n"
+"    [input] Enter the filesystem path to the JDBC driver jar [lib/hsqldb."
+"jar]\n"
+"../../mysql-connector.jar\n"
+"    [input] Enter JDBC driver class for your database [com.mysql.jdbc."
+"Driver]\n"
+"\n"
+"    [input] Enter the JDBC URL for your database [jdbc:mysql:///test]\n"
+"\n"
+"    [input] Enter database username [sa]\n"
+"gavin\n"
+"    [input] Enter database password []\n"
+"\n"
+"    [input] Are you working with tables that already exist in the database? "
+"[n] (y,n,)\n"
+"y\n"
+"    [input] Do you want to drop and recreate the database tables and data in "
+"import.sql \n"
+"    each time you deploy? [n] (y,n,)\n"
+"n\n"
+"[propertyfile] Creating new property file: C:&#92;Projects&#92;jboss-"
+"seam&#92;seam-gen&#92;build.properties\n"
+"     [echo] Installing JDBC driver jar to JBoss server\n"
+"     [echo] Type 'seam new-project' to create the new project\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 1 minute 17 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:43
+#, no-c-format
+msgid ""
+"The tool provides sensible defaults, which you can accept by just pressing "
+"enter at the prompt."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:46
+#, no-c-format
+msgid ""
+"The most important choice you need to make is between EAR deployment and WAR "
+"deployment of your project. EAR projects support EJB 3.0 and require Java EE "
+"5. WAR projects do not support EJB 3.0, but may be deployed to a J2EE "
+"environment. The packaging of a WAR is also simpler to understand. If you "
+"installed JBoss with the ejb3 profile, choose <literal>ear</literal>. "
+"Otherwise, choose <literal>war</literal>. We'll assume that you've chosen an "
+"EAR deployment for the rest of the tutorial, but you can follow exactly the "
+"same steps for a WAR deployment."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:49
+#, no-c-format
+msgid ""
+"If you are working with an existing data model, make sure you tell seam-gen "
+"that the tables already exist in the database."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:52
+#, no-c-format
+msgid ""
+"The settings are stored in <literal>seam-gen/build.properties</literal>, but "
+"you can also modify them simply by running <literal>seam setup</literal> a "
+"second time."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:55
+#, no-c-format
+msgid ""
+"Now we can create a new project in our Eclipse workspace directory, by "
+"typing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:58
+#, no-c-format
+msgid "seam new-project"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:59
+#, no-c-format
+msgid ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam new-project\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"copy-lib:\n"
+"     [echo] Copying project jars ...\n"
+"     [copy] Copying 32 files to C:&#92;Projects&#92;helloworld&#92;lib\n"
+"     [copy] Copying 9 files to C:&#92;Projects&#92;helloworld&#92;embedded-"
+"ejb\n"
+"\n"
+"file-copy-wtp:\n"
+"\n"
+"file-copy:\n"
+"     [echo] Copying project resources ...\n"
+"     [copy] Copying 12 files to C:&#92;Projects&#92;helloworld&#92;"
+"resources\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;helloworld&#92;resources\n"
+"     [copy] Copying 5 files to C:&#92;Projects&#92;helloworld&#92;view\n"
+"     [copy] Copying 5 files to C:&#92;Projects&#92;helloworld\n"
+"    [mkdir] Created dir: C:&#92;Projects&#92;helloworld&#92;src\n"
+"\n"
+"new-project:\n"
+"     [echo] A new Seam project was created in the C:/Projects directory\n"
+"     [echo] Add the project from inside Eclipse (or type 'seam explode') and "
+"go to http://localhost:\n"
+"8080/helloworld\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 7 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:60
+#, no-c-format
+msgid ""
+"This copies the Seam jars, dependent jars and the JDBC driver jar to a new "
+"Eclipse project, and generates all needed resources and configuration files, "
+"a facelets template file and stylesheet, along with Eclipse metadata and an "
+"Ant build script. The Eclipse project will be automatically deployed to an "
+"exploded directory structure in JBoss AS as soon as you add the project "
+"using <literal>New -&gt; Project... -&gt; Java Project -&gt; Next</literal>, "
+"typing the <literal>Project name</literal> (<literal>myproject</literal> in "
+"this case), selecting your Java SE 5 or Java SE 6 JRE and then clicking "
+"<literal>Finish</literal>. Do not select <literal>Create new project from "
+"existing source</literal>. Alternatively, you can deploy the project from "
+"outside Eclipse by typing <literal>seam explode</literal>."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:63
+#, no-c-format
+msgid ""
+"Go to <literal>http://localhost:8080/helloworld</literal> to see a welcome "
+"page. This is a facelets page, <literal>view/home.xhtml</literal>, using the "
+"template <literal>view/layout/template.xhtml</literal>. You can edit this "
+"page, or the template, in eclipse, and see the results "
+"<emphasis>immediately</emphasis>, by clicking refresh in your browser."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:66
+#, no-c-format
+msgid ""
+"Don't get scared by the XML configuration documents that were generated into "
+"the project directory. They are mostly standard Java EE stuff, the stuff you "
+"need to create once and then never look at again, and they are 90&#37; the "
+"same between all Seam projects. (They are so easy to write that even seam-"
+"gen can do it.)"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:69
+#, no-c-format
+msgid ""
+"The generated project includes three database and persistence "
+"configurations. The <literal>jboss-beans.xml</literal>, <literal>persistence-"
+"test.xml</literal> and <literal>import-test.sql</literal> files are used "
+"when running the TestNG unit tests against HSQLDB. The database schema and "
+"the test data in <literal>import-test.sql</literal> is always exported to "
+"the database before running tests. The <literal>myproject-dev-ds.xml</"
+"literal>, <literal>persistence-dev.xml</literal>and <literal>import-dev.sql</"
+"literal> files are for use when deploying the application to your "
+"development database. The schema might be exported automatically at "
+"deployment, depending upon whether you told seam-gen that you are working "
+"with an existing database. The <literal>myproject-prod-ds.xml</literal>, "
+"<literal>persistence-prod.xml</literal>and <literal>import-prod.sql</"
+"literal> files are for use when deploying the application to your production "
+"database. The schema is not exported automatically at deployment."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:75
+#, no-c-format
+msgid "Creating a new action"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:76
+#, no-c-format
+msgid ""
+"If you're used to traditional action-style web frameworks, you're probably "
+"wondering how you can create a simple webpage with a stateless action method "
+"in Java. If you type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:79
+#, no-c-format
+msgid "seam new-action"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:80
+#, no-c-format
+msgid ""
+"Seam will prompt for some information, and generate a new facelets page and "
+"Seam component for your project."
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:83
+#, no-c-format
+msgid ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam new-action ping\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"action-input:\n"
+"    [input] Enter the Seam component name\n"
+"ping\n"
+"    [input] Enter the local interface name [Ping]\n"
+"\n"
+"    [input] Enter the bean class name [PingBean]\n"
+"\n"
+"    [input] Enter the action method name [ping]\n"
+"\n"
+"    [input] Enter the page name [ping]\n"
+"\n"
+"\n"
+"setup-filters:\n"
+"\n"
+"new-action:\n"
+"     [echo] Creating a new stateless session bean component with an action "
+"method\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;view\n"
+"     [echo] Type 'seam restart' and go to \n"
+"     http://localhost:8080/helloworld/ping.seam\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 13 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:84
+#, no-c-format
+msgid ""
+"Because we've added a new Seam component, we need to restart the exploded "
+"directory deployment. You can do this by typing <literal>seam restart</"
+"literal>, or by running the <literal>restart</literal> target in the "
+"generated project <literal>build.xml</literal> file from inside Eclipse. "
+"Another way to force a restart is to edit the file <literal>resources/META-"
+"INF/application.xml</literal> in Eclipse. <emphasis>Note that you do not "
+"need to restart JBoss each time you change the application.</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:87
+#, no-c-format
+msgid ""
+"Now go to <literal>http://localhost:8080/helloworld/ping.seam</literal> and "
+"click the button. You can see the code behind this action by looking in the "
+"project <literal>src</literal> directory. Put a breakpoint in the "
+"<literal>ping()</literal> method, and click the button again."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:90
+#, no-c-format
+msgid ""
+"Finally, locate the <literal>PingTest.xml</literal> file in the test package "
+"and run the integration tests using the TestNG plugin for Eclipse. "
+"Alternatively, run the tests using <literal>seam test</literal> or the "
+"<literal>test</literal> target of the generated build."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:96
+#, no-c-format
+msgid "Creating a form with an action"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:97
+#, no-c-format
+msgid "The next step is to create a form. Type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:100
+#, no-c-format
+msgid "seam new-form"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:101
+#, no-c-format
+msgid ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam new-form\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"action-input:\n"
+"    [input] Enter the Seam component name\n"
+"hello\n"
+"    [input] Enter the local interface name [Hello]\n"
+"\n"
+"    [input] Enter the bean class name [HelloBean]\n"
+"\n"
+"    [input] Enter the action method name [hello]\n"
+"\n"
+"    [input] Enter the page name [hello]\n"
+"\n"
+"\n"
+"setup-filters:\n"
+"\n"
+"new-form:\n"
+"     [echo] Creating a new stateful session bean component with an action "
+"method\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;view\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [echo] Type 'seam restart' and go to http://localhost:8080/hello/hello."
+"seam\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 5 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:102
+#, no-c-format
+msgid ""
+"Restart the application again, and go to <literal>http://localhost:8080/"
+"helloworld/hello.seam</literal>. Then take a look at the generated code. Run "
+"the test. Try adding some new fields to the form and Seam component "
+"(remember to restart the deploment each time you change the Java code)."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:108
+#, no-c-format
+msgid "Generating an application from an existing database"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:109
+#, no-c-format
+msgid ""
+"Manually create some tables in your database. (If you need to switch to a "
+"different database, just run <literal>seam setup</literal> again.) Now type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:112
+#, no-c-format
+msgid "seam generate-entities"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:113
+#, no-c-format
+msgid ""
+"Restart the deployment, and go to <literal>http://localhost:8080/helloworld</"
+"literal>. You can browse the database, edit existing objects, and create new "
+"objects. If you look at the generated code, you'll probably be amazed how "
+"simple it is! Seam was designed so that data access code is easy to write by "
+"hand, even for people who don't want to cheat by using seam-gen."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:119
+#, no-c-format
+msgid "Deploying the application as an EAR"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:120
+#, no-c-format
+msgid ""
+"Finally, we want to be able to deploy the application using standard Java EE "
+"5 packaging. First, we need to remove the exploded directory by running "
+"<literal>seam unexplode</literal>. To deploy the EAR, we can type "
+"<literal>seam deploy</literal> at the command prompt, or run the "
+"<literal>deploy</literal> target of the generated project build script. You "
+"can undeploy using <literal>seam undeploy</literal> or the "
+"<literal>undeploy</literal> target."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:123
+#, no-c-format
+msgid ""
+"By default, the application will be deployed with the <emphasis>dev profile</"
+"emphasis>. The EAR will include the <literal>persistence-dev.xml</literal> "
+"and <literal>import-dev.sql</literal> files, and the <literal>myproject-dev-"
+"ds.xml</literal> file will be deployed. You can change the profile, and use "
+"the <emphasis>prod profile</emphasis>, by typing"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:126
+#, no-c-format
+msgid "seam -Dprofile=prod deploy"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:127
+#, no-c-format
+msgid ""
+"You can even define new deployment profiles for your application. Just add "
+"appropriately named files to your project&mdash;for example, "
+"<literal>persistence-staging.xml</literal>, <literal>import-staging.sql</"
+"literal> and <literal>myproject-staging-ds.xml</literal>&mdash;and select "
+"the name of the profile using <literal>-Dprofile=staging</literal>."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/I18n.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/I18n.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/I18n.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,533 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: I18n.xml:10
+#, no-c-format
+msgid "Internationalization and themes"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:11
+#, no-c-format
+msgid ""
+"Seam makes it easy to build internationalized applications by providing "
+"several built-in components for handling multi-language UI messages."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:15
+#, no-c-format
+msgid "Locales"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:16
+#, no-c-format
+msgid ""
+"Each user login session has an associated instance of <literal>java.util."
+"Locale</literal> (available to the application as a session-scoped component "
+"named <literal>locale</literal>). Under normal circumstances, you won't need "
+"to do any special configuration to set the locale. Seam just delegates to "
+"JSF to determine the active locale:"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:21
+#, no-c-format
+msgid ""
+"If there is a locale associated with the HTTP request (the browser locale), "
+"and that locale is in the list of supported locales from <literal>faces-"
+"config.xml</literal>, use that locale for the rest of the session."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:24
+#, no-c-format
+msgid ""
+"Otherwise, if a default locale was specified in the <literal>faces-config."
+"xml</literal>, use that locale for the rest of the session."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:27
+#, no-c-format
+msgid "Otherwise, use the default locale of the server."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:30
+#, no-c-format
+msgid ""
+"It is <emphasis>possible</emphasis> to set the locale manually via the Seam "
+"configuration properties <literal>org.jboss.seam.core.localeSelector."
+"language</literal>, <literal>org.jboss.seam.core.localeSelector.country</"
+"literal> and <literal>org.jboss.seam.core.localeSelector.variant</literal>, "
+"but we can't think of any good reason to ever do this."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:33
+#, no-c-format
+msgid ""
+"It is, however, useful to allow the user to set the locale manually via the "
+"application user interface. Seam provides built-in functionality for "
+"overriding the locale determined by the algorithm above. All you have to do "
+"is add the following fragment to a form in your JSP or Facelets page:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:36
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{localeSelector.language}\"&gt;\n"
+"    &lt;f:selectItem itemLabel=\"English\" itemValue=\"en\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Deutsch\" itemValue=\"de\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Francais\" itemValue=\"fr\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{localeSelector.select}\" value=\"#{messages"
+"['ChangeLanguage']}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:37
+#, no-c-format
+msgid ""
+"Or, if you want a list of all supported locales from <literal>faces-config."
+"xml</literal>, just use:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:40
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{localeSelector.localeString}\"&gt;\n"
+"    &lt;f:selectItems value=\"#{localeSelector.supportedLocales}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{localeSelector.select}\" value=\"#{messages"
+"['ChangeLanguage']}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:41
+#, no-c-format
+msgid ""
+"When this use selects an item from the drop-down, and clicks the button, the "
+"Seam and JSF locales will be overridden for the rest of the session."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:47
+#, no-c-format
+msgid "Labels"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:48
+#, no-c-format
+msgid ""
+"JSF supports internationalization of user interface labels and descriptive "
+"text via the use of <literal>&lt;f:loadBundle /&gt;</literal>. You can use "
+"this approach in Seam applications. Alternatively, you can take advantage of "
+"the Seam <literal>messages</literal> component to display templated labels "
+"with embedded EL expressions."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:52
+#, no-c-format
+msgid "Defining labels"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:53
+#, no-c-format
+msgid ""
+"Each login session has an associated instance of <literal>java.util."
+"ResourceBundle</literal> (available to the application as a session-scoped "
+"component named <literal>org.jboss.seam.core.resourceBundle</literal>). "
+"You'll need to make your internationalized labels available via this special "
+"resource bundle. By default, the resource bundle used by Seam is named "
+"<literal>messages</literal> and so you'll need to define your labels in "
+"files named <literal>messages.properties</literal>, <literal>messages_en."
+"properties</literal>, <literal>messages_en_AU.properties</literal>, etc. "
+"These files usually belong in the <literal>WEB-INF/classes</literal> "
+"directory."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:56
+#, no-c-format
+msgid "So, in <literal>messages_en.properties</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:59
+#, no-c-format
+msgid "Hello=Hello"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:60
+#, no-c-format
+msgid "And in <literal>messages_en_AU.properties</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:63
+#, no-c-format
+msgid "Hello=G'day"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:64
+#, no-c-format
+msgid ""
+"You can select a different name for the resource bundle by setting the Seam "
+"configuration property named <literal>org.jboss.seam.core.resourceBundle."
+"bundleNames</literal>. You can even specify a list of resource bundle names "
+"to be searched (depth first) for messages."
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:67
+#, no-c-format
+msgid ""
+"&lt;core:resource-bundle&gt;\n"
+"    &lt;core:bundle-names&gt;\n"
+"        &lt;value&gt;mycompany_messages&lt;/value&gt;\n"
+"        &lt;value&gt;standard_messages&lt;/value&gt;       \n"
+"    &lt;/core:bundle-names&gt;\n"
+"&lt;/core:resource-bundle&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:68
+#, no-c-format
+msgid ""
+"If you want to define a message just for a particular page, you can specify "
+"it in a resource bundle with the same name as the JSF view id, with the "
+"leading <literal>/</literal> and trailing file extension removed. So we "
+"could put our message in <literal>welcome/hello_en.properties</literal> if "
+"we only needed to display the message on <literal>/welcome/hello.jsp</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:71
+#, no-c-format
+msgid ""
+"You can even specify an explicit bundle name in <literal>pages.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:74
+#, no-c-format
+msgid "&lt;page view-id=\"/welcome/hello.jsp\" bundle=\"HelloMessages\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:75
+#, no-c-format
+msgid ""
+"Then we could use messages defined in <literal>HelloMessages.properties</"
+"literal> on <literal>/welcome/hello.jsp</literal>."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:81
+#, no-c-format
+msgid "Displaying labels"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:82
+#, no-c-format
+msgid ""
+"If you define your labels using the Seam resource bundle, you'll be able to "
+"use them without having to type <literal>&lt;f:loadBundle ... /&gt;</"
+"literal> on every page. Instead, you can simply type:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:85
+#, no-c-format
+msgid "&lt;h:outputText value=\"#{messages['Hello']}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:86
+#, no-c-format
+msgid "<para>or:</para>"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:89
+#, no-c-format
+msgid "&lt;h:outputText value=\"#{messages.Hello}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:90
+#, no-c-format
+msgid "Even better, the messages themselves may contain EL expressions:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:93
+#, no-c-format
+msgid "Hello=Hello, #{user.firstName} #{user.lastName}"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:94
+#, no-c-format
+msgid "Hello=G'day, #{user.firstName}"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:95
+#, no-c-format
+msgid "You can even use the messages in your code:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:98
+#, no-c-format
+msgid "@In private Map&lt;String, String&gt; messages;"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:99
+#, no-c-format
+msgid "@In(\"#{messages['Hello']}\") private String helloMessage;"
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:103
+#, no-c-format
+msgid "Faces messages"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:104
+#, no-c-format
+msgid ""
+"The <literal>facesMessages</literal> component is a super-convenient way to "
+"display success or failure messages to the user. The functionality we just "
+"described also works for faces messages:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:107
+#, no-c-format
+msgid ""
+"@Name(\"hello\")\n"
+"@Stateless\n"
+"public class HelloBean implements Hello {\n"
+"    @In FacesMessages facesMessages;\n"
+"    \n"
+"    public String sayIt() {\n"
+"        facesMessages.addFromResourceBundle(\"Hello\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:108
+#, no-c-format
+msgid ""
+"This will display <literal>Hello, Gavin King</literal> or <literal>G'day, "
+"Gavin</literal>, depending upon the user's locale."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:116
+#, no-c-format
+msgid "Timezones"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:117
+#, no-c-format
+msgid ""
+"There is also a session-scoped instance of <literal>java.util.Timezone</"
+"literal>, named <literal>org.jboss.seam.core.timezone</literal>, and a Seam "
+"component for changing the timezone named <literal>org.jboss.seam.core."
+"timezoneSelector</literal>. By default, the timezone is the default timezone "
+"of the server. Unfortunately, the JSF specification says that all dates and "
+"times should be assumed to be UTC, and displayed as UTC, unless a timezone "
+"is explicitly specified using <literal>&lt;f:convertDateTime&gt;</literal>. "
+"This is an extremely inconvenient default behavior."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:120
+#, no-c-format
+msgid ""
+"Seam overrides this behavior, and defaults all dates and times to the Seam "
+"timezone. In addition, Seam provides the <literal>&lt;s:convertDateTime&gt;</"
+"literal> tag which always performs conversions in the Seam timezone."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:126
+#, no-c-format
+msgid "Themes"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:127
+#, no-c-format
+msgid ""
+"Seam applications are also very easily skinnable. The theme API is very "
+"similar to the localization API, but of course these two concerns are "
+"orthogonal, and some applications support both localization and themes."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:130
+#, no-c-format
+msgid "First, configure the set of supported themes:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:133
+#, no-c-format
+msgid ""
+"&lt;theme:theme-selector cookie-enabled=\"true\"&gt;\n"
+"    &lt;theme:available-themes&gt;\n"
+"        &lt;value&gt;default&lt;/value&gt;\n"
+"        &lt;value&gt;accessible&lt;/value&gt;\n"
+"        &lt;value&gt;printable&lt;/value&gt;\n"
+"    &lt;/theme:available-themes&gt;\n"
+"&lt;/theme:theme-selector&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:134
+#, no-c-format
+msgid "Note that the first theme listed is the default theme."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:137
+#, no-c-format
+msgid ""
+"Themes are defined in a properties file with the same name as the theme. For "
+"example, the <literal>default</literal> theme is defined as a set of entries "
+"in <literal>default.properties</literal>. For example, <literal>default."
+"properties</literal> might define:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:140
+#, no-c-format
+msgid ""
+"css ../screen.css\n"
+"template template.xhtml"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:141
+#, no-c-format
+msgid ""
+"Usually the entries in a theme resource bundle will be paths to CSS styles "
+"or images and names of facelets templates (unlike localization resource "
+"bundles which are usually text)."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:144
+#, no-c-format
+msgid ""
+"Now we can use these entries in our JSP or facelets pages. For example, to "
+"theme the stylesheet in a facelets page:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:147
+#, no-c-format
+msgid ""
+"&lt;link href=\"#{theme.css}\" rel=\"stylesheet\" type=\"text/css\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:148
+#, no-c-format
+msgid ""
+"Most powerfully, facelets lets us theme the template used by a <literal>&lt;"
+"ui:composition&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:151
+#, no-c-format
+msgid ""
+"&lt;ui:composition xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"    xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"    xmlns:h=\"http://java.sun.com/jsf/html\"\n"
+"    xmlns:f=\"http://java.sun.com/jsf/core\"\n"
+"    template=\"#{theme.template}\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:152
+#, no-c-format
+msgid ""
+"Just like the locale selector, there is a built-in theme selector to allow "
+"the user to freely switch themes:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:155
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{themeSelector.theme}\"&gt;\n"
+"    &lt;f:selectItems value=\"#{themeSelector.themes}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{themeSelector.select}\" value=\"Select Theme"
+"\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:159
+#, no-c-format
+msgid "Persisting locale and theme preferences via cookies"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:160
+#, no-c-format
+msgid ""
+"The locale selector, theme selector and timezone selector all support "
+"persistence of locale and theme preference to a cookie. Simply set the "
+"<literal>cookie-enabled</literal> configuration property:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:163
+#, no-c-format
+msgid ""
+"&lt;theme:theme-selector cookie-enabled=\"true\"&gt;\n"
+"    &lt;theme:available-themes&gt;\n"
+"        &lt;value&gt;default&lt;/value&gt;\n"
+"        &lt;value&gt;accessible&lt;/value&gt;\n"
+"        &lt;value&gt;printable&lt;/value&gt;\n"
+"    &lt;/theme:available-themes&gt;\n"
+"&lt;/theme:theme-selector&gt;\n"
+"\n"
+"&lt;core:locale-selector cookie-enabled=\"true\"/&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Itext.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Itext.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Itext.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1452 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Itext.xml:10
+#, no-c-format
+msgid "iText PDF generation"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:11
+#, no-c-format
+msgid ""
+"Seam now includes an component set for generating documents using iText. The "
+"primary focus of Seam's iText document support is for the generation of PDF "
+"doucuments, but Seam also offers basic support for RTF document generation."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:15
+#, no-c-format
+msgid "Using PDF Support"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:16
+#, no-c-format
+msgid ""
+"iText support is provided by <literal>jboss-seam-pdf.jar</literal>. This JAR "
+"contains the iText JSF controls, which are used to construct views that can "
+"render to PDF, and the DocumentStore component, which serves the rendered "
+"documents to the user. To include PDF support in your application, included "
+"<literal>jboss-seam-pdf.jar</literal> in your <literal>WEB-INF/lib</literal> "
+"directory along with the iText JAR file. There is no further configuration "
+"needed to use Seam's iText support."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:19
+#, no-c-format
+msgid ""
+"The Seam iText module requires the use of Facelets as the view technology. "
+"Future versions of the library may also support the use of JSP. "
+"Additionally, it requires the use of the seam-ui package."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:22
+#, no-c-format
+msgid ""
+"The <literal>examples/itext</literal> project contains an example of the PDF "
+"support in action. It demonstrates proper deployment packaging, and it "
+"contains a number examples that demonstrate the key PDF generation features "
+"current supported."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:28
+#, no-c-format
+msgid "Creating a document"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:29
+#, no-c-format
+msgid ""
+"Documents are generated by facelets documents using tags in the "
+"<literal>http://jboss.com/products/seam/pdf</literal> namespace. Documents "
+"should always have the <literal>document</literal> tag at the root of the "
+"document. The <literal>document</literal> tag prepares Seam to generate a "
+"document into the DocumentStore and renders an HTML redirect to that stored "
+"content. The following is a a small PDF document consisting only a single "
+"line of text:"
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:32
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf"
+"\"&gt;                                                      \n"
+"   The document goes "
+"here.                                                                                             \n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:34
+#, no-c-format
+msgid "p:document"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:35
+#, no-c-format
+msgid ""
+"The <literal>p:document</literal> tag supports the following attributes:"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:40
+#, no-c-format
+msgid "type"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:42
+#, no-c-format
+msgid ""
+"The type of the document to be produced. Valid values are <literal>PDF</"
+"literal>, <literal>RTF</literal> and <literal>HTML</literal> modes. Seam "
+"defaults to PDF generation, and many of the features only work correctly "
+"when generating PDF documents."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:48
+#, no-c-format
+msgid "pageSize"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:50
+#, no-c-format
+msgid ""
+"The size of the page to be generate. The most commonly used values would be "
+"<literal>LETTER</literal> and <literal>A4</literal>. A full list of "
+"supported pages sizes can be found in <literal>com.lowagie.text.PageSize</"
+"literal> class. Alternatively, pageSize can provide the width and height of "
+"the page directly. The value \"612 792\", for example, is equizalent to the "
+"LETTER page size."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:56
+#, no-c-format
+msgid "orientation"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:58
+#, no-c-format
+msgid ""
+"The orientation of the page. Valid values are <literal>portrait</literal> "
+"and <literal>landscape</literal>. In landscape mode, the height and width "
+"page size values are reversed."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:64
+#, no-c-format
+msgid "margins"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:66
+#, no-c-format
+msgid "The left, right, top and bottom margin values."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:72
+#, no-c-format
+msgid "marginMirroring"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:74
+#, no-c-format
+msgid "Indicates that margin settings should be reversed an alternating pages."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:80
+#, no-c-format
+msgid ""
+"Document metadata is also set as attributes of the document tag. The "
+"following metadata fields are supported:"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:85
+#, no-c-format
+msgid "title"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:92
+#, no-c-format
+msgid "subject"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:99
+#, no-c-format
+msgid "keywords"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:106
+#, no-c-format
+msgid "author"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:113
+#, no-c-format
+msgid "creator"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:125
+#, no-c-format
+msgid "Basic Text Elements"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:126
+#, no-c-format
+msgid ""
+"Useful documents will need to contain more than just text; however, the "
+"standard UI components are geared towards HTML generation and are not useful "
+"for generating PDF content. Instead, Seam provides a special UI components "
+"for generating suitable PDF content. Tags like <literal>&lt;p:image&gt;</"
+"literal> and <literal>&lt;p:paragraph&gt;</literal> are the basic "
+"foundations of simple documents. Tags like <literal>&lt;p:font&gt;</literal> "
+"provide style information to all the content surrounging them."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:129
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"&gt; \n"
+"    &lt;p:image alignment=\"right\" wrap=\"true\" resource=\"/logo.jpg\" /"
+"&gt;\n"
+"    &lt;p:font size=\"24\"&gt;\n"
+"        &lt;p:paragraph spacingAfter=\"50\"&gt;My First Document&lt;/p:"
+"paragraph&gt;\n"
+"    &lt;/p:font&gt;\n"
+"\n"
+"    &lt;p:paragraph alignment=\"justify\"&gt;\n"
+"        This is a simple document.  It isn't very fancy.\n"
+"    &lt;/p:paragraph&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:131
+#, no-c-format
+msgid "p:paragraph"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:132
+#, no-c-format
+msgid ""
+"Most uses of text should be sectioned into paragraphs so that text fragments "
+"can be flowed, formatted and styled in logical groups."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:137
+#, no-c-format
+msgid "firstLineIndent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:144 Itext.xml:836
+#, no-c-format
+msgid "extraParagraphSpace"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:151 Itext.xml:808
+#, no-c-format
+msgid "leading"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:158 Itext.xml:815
+#, no-c-format
+msgid "multipliedLeading"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:165 Itext.xml:344 Itext.xml:716
+#, no-c-format
+msgid "spacingBefore"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:167 Itext.xml:346 Itext.xml:718
+#, no-c-format
+msgid "The blank space to be inserted before the element."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:173 Itext.xml:352 Itext.xml:724
+#, no-c-format
+msgid "spacingAfter"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:175 Itext.xml:354 Itext.xml:726
+#, no-c-format
+msgid "The blank space to be inserted after the element."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:181 Itext.xml:330 Itext.xml:599
+#, no-c-format
+msgid "indentationLeft"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:188 Itext.xml:337 Itext.xml:607
+#, no-c-format
+msgid "indentationRight"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:195 Itext.xml:753
+#, no-c-format
+msgid "keepTogether"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:205
+#, no-c-format
+msgid "p:text"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:206
+#, no-c-format
+msgid ""
+"The <literal>text</literal> tag allows text fragments to be produced from "
+"application data using normal JSF converter mechanisms. It is very similar "
+"to the <literal>outputText</literal> tag used when rendering HTML documents. "
+"Here is an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:209
+#, no-c-format
+msgid ""
+"&lt;p:paragraph&gt;\n"
+"    The item costs &lt;p:text value=\"#{product.price}\"&gt;\n"
+"        &lt;f:convertNumber type=\"currency\" currencySymbol=\"&#36;\"/&gt;\n"
+"    &lt;/p:text&gt;\n"
+"&lt;/p:paragraph&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:212
+#, no-c-format
+msgid "value"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:214
+#, no-c-format
+msgid ""
+"The value to be displayed. This will typically be a value binding expression."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:223
+#, no-c-format
+msgid "p:font"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:224
+#, no-c-format
+msgid "Font declarations have no direct"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:229
+#, no-c-format
+msgid "familyName"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:231
+#, no-c-format
+msgid ""
+"The font family. One of: <literal>COURIER</literal>, <literal>HELVETICA</"
+"literal>, <literal>TIMES-ROMAN</literal>, <literal>SYMBOL</literal> or "
+"<literal>ZAPFDINGBATS</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:237
+#, no-c-format
+msgid "size"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:239
+#, no-c-format
+msgid "The point size of the font."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:245 Itext.xml:534
+#, no-c-format
+msgid "style"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:247
+#, no-c-format
+msgid ""
+"The font styles. Any combination of : <literal>NORMAL</literal>, "
+"<literal>BOLD</literal>, <literal>ITALIC</literal>, <literal>OBLIQUE</"
+"literal>, <literal>UNDERLINE</literal>, <literal>LINE-THROUGH</literal>"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:256
+#, no-c-format
+msgid "p:newPage"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:257
+#, no-c-format
+msgid "<literal>p:newPage</literal> inserts a page break."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:263
+#, no-c-format
+msgid "p:image"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:264
+#, no-c-format
+msgid ""
+"<literal>p:image</literal> inserts an image into the document. Images can be "
+"be loaded from the classpath or from the web application context using the "
+"<literal>resource</literal> attribute."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:267
+#, no-c-format
+msgid "&lt;p:image resource=\"/jboss.jpg\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:268
+#, no-c-format
+msgid ""
+"Resources can also be dynamically generated by application code. The "
+"<literal>imageData</literal> attribute can specify a value binding "
+"expression whose value is a <literal>java.awt.Image</literal> object."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:271
+#, no-c-format
+msgid "&lt;p:image imageData=\"#{images.chart}\" /&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:274
+#, no-c-format
+msgid "resource"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:276
+#, no-c-format
+msgid ""
+"The location of the image resource to be included. Resources should be "
+"relative to the document root of the web application."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:282
+#, no-c-format
+msgid "imageData"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:284
+#, no-c-format
+msgid "A method expression binding to an application-generated image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:290 Itext.xml:913
+#, no-c-format
+msgid "rotation"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:292
+#, no-c-format
+msgid "The rotation of the image in degrees."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:298
+#, no-c-format
+msgid "height"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:300
+#, no-c-format
+msgid "The height of the image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:306
+#, no-c-format
+msgid "width"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:308
+#, no-c-format
+msgid "The width of the image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:314 Itext.xml:441 Itext.xml:591
+#, no-c-format
+msgid "alignment"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:316
+#, no-c-format
+msgid ""
+"The alignment of the image. (see <xref linkend=\"Document_Constants-"
+"Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:322
+#, no-c-format
+msgid "<literal>alt</literal>"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:324
+#, no-c-format
+msgid "Alternative text representation for the image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:360 Itext.xml:672
+#, no-c-format
+msgid "widthPercentage"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:367
+#, no-c-format
+msgid "initialRotation"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:374
+#, no-c-format
+msgid "<literal>dpi</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:381
+#, no-c-format
+msgid "scalePercent"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:383
+#, no-c-format
+msgid ""
+"The scaling factor (as a percentage) to use for the image. This can be "
+"expressed as a single percentage value or as two percentage values "
+"representing separate x and y scaling percentages."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:389
+#, no-c-format
+msgid "wrap"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:396
+#, no-c-format
+msgid "underlying"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:406
+#, no-c-format
+msgid "p:anchor"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:407
+#, no-c-format
+msgid ""
+"<literal>p:anchor</literal> defines clickable links from a document. It "
+"supports the following attributes:"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:412
+#, no-c-format
+msgid "name"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:414
+#, no-c-format
+msgid "The name of an in-document anchor destination."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:420
+#, no-c-format
+msgid "reference"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:422
+#, no-c-format
+msgid ""
+"The destination the link refers to. Links to other points in the document "
+"should begin with a \"#\". For example, \"#link1\" to refer to an anchor "
+"postion with a <literal>name</literal> of <literal>link1</literal>. Links "
+"may also be a full URL to point to a resource outside of the document."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:433
+#, no-c-format
+msgid "Headers and Footers"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:435
+#, no-c-format
+msgid "p:header and p:footer"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:436
+#, no-c-format
+msgid ""
+"The <literal>p:header</literal> and <literal>p:footer</literal> components "
+"provide the ability to place header and footer text on each page of a "
+"generated document, with the exception of the first page. Header and footer "
+"declarations should appear near the top of a document."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:443
+#, no-c-format
+msgid ""
+"The alignment of the header/footer box section. (see <xref linkend="
+"\"Document_Constants-Alignment_Values\"/> for alignment values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:449
+#, no-c-format
+msgid "backgroundColor"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:451
+#, no-c-format
+msgid ""
+"The background color of the header/footer box. (see <xref linkend="
+"\"Document_Constants-Color_Values\"/> for color values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:457
+#, no-c-format
+msgid "borderColor"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:459
+#, no-c-format
+msgid ""
+"The border color of the header/footer box. Individual border sides can be "
+"set using <literal>borderColorLeft</literal>, <literal>borderColorRight</"
+"literal>, <literal>borderColorTop</literal> and <literal>borderColorBottom</"
+"literal>.(see <xref linkend=\"Document_Constants-Color_Values\"/> for color "
+"values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:465
+#, no-c-format
+msgid "borderWidth"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:467
+#, no-c-format
+msgid ""
+"The width of the border. Inidvidual border sides can be specified using "
+"<literal>borderWidthLeft</literal>, <literal>borderWidthRight</literal>, "
+"<literal>borderWidthTop</literal> and <literal>borderWidthBottom</literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:476
+#, no-c-format
+msgid "p:pageNumber"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:477
+#, no-c-format
+msgid ""
+"The current page number can be placed inside of a header or footer using the "
+"<literal>p:pageNumber</literal> tag. The page number tag can only be used in "
+"the context of a header or footer and can only be used once."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:485
+#, no-c-format
+msgid "Chapters and Sections"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:486
+#, no-c-format
+msgid ""
+"If the generated document follows a book/article structure, the <literal>p:"
+"chapter</literal> and <literal>p:section</literal> tags can be used to "
+"provide the necessary structure. Sections can only be used inside of "
+"chapters, but they may be nested arbitrarily deep. Most PDF viewers provide "
+"easy navigation between chapters and sections in a document."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:489
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"\n"
+"            title=\"Hello\"&gt;\n"
+"\n"
+"   &lt;p:chapter number=\"1\"&gt;\n"
+"      &lt;p:title&gt;&lt;p:paragraph&gt;Hello&lt;/p:paragraph&gt;&lt;/p:"
+"title&gt;\n"
+"      &lt;p:paragraph&gt;Hello #{user.name}!&lt;/p:paragraph&gt;\n"
+"   &lt;/p:chapter&gt;\n"
+"\n"
+"   &lt;p:chapter number=\"2\"&gt;\n"
+"      &lt;p:title&gt;&lt;p:paragraph&gt;Goodbye&lt;/p:paragraph&gt;&lt;/p:"
+"title&gt;\n"
+"      &lt;p:paragraph&gt;Goodbye #{user.name}.&lt;/p:paragraph&gt;\n"
+"   &lt;/p:chapter&gt;\n"
+"\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:491
+#, no-c-format
+msgid "p:chapter and p:section"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:494
+#, no-c-format
+msgid "number"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:496
+#, no-c-format
+msgid "The chapter number. Every chapter should be assigned a chapter number."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:502
+#, no-c-format
+msgid "numberDepth"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:504
+#, no-c-format
+msgid ""
+"The depth of numbering for section. All sections are numbered relative to "
+"their surrounding chapter/sections. The fourth section of of the first "
+"section of chapter three would be section 3.1.4, if displayed at the default "
+"number depth of three. To omit the chapter number, a number depth of 2 "
+"should be used. In that case, the section number would be displayed as 1.4."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:513
+#, no-c-format
+msgid "p:title"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:514
+#, no-c-format
+msgid ""
+"Any chapter or section can contain a <literal>p:title</literal>. The title "
+"will be displayed next to the chapter/section number. The body of the title "
+"may contain raw text or may be a <literal>p:paragraph</literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:522
+#, no-c-format
+msgid "Lists"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:523
+#, no-c-format
+msgid ""
+"List structures can be displayed using the <literal>p:list</literal> and "
+"<literal>p:listItem</literal> tags. Lists may contain arbitrarily-nested "
+"sublists. List items may not be used outside of a list. he following "
+"document uses the <literal>ui:repeat</literal> tag to to display a list of "
+"values retrieved from a Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:526
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"\n"
+"            xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"            title=\"Hello\"&gt;\n"
+"   &lt;p:list style=\"numbered\"&gt;\n"
+"      &lt;ui:repeat value=\"#{documents}\" var=\"doc\"&gt;\n"
+"         &lt;p:listItem&gt;#{doc.name}&lt;/p:listItem&gt;\n"
+"      &lt;/ui:repeat&gt;\n"
+"   &lt;/p:list&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:528
+#, no-c-format
+msgid "p:list"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:529
+#, no-c-format
+msgid "<literal>p:list</literal> supports the following attributes:"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:536
+#, no-c-format
+msgid ""
+"The ordering/bulleting style of list. One of: <literal>NUMBERED</literal>, "
+"<literal>LETTERED</literal>, <literal>GREEK</literal>, <literal>ROMAN</"
+"literal>, <literal>ZAPFDINGBATS</literal>, <literal>ZAPFDINGBATS_NUMBER</"
+"literal>. If no style is given, the list items are bulleted."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:542 Itext.xml:615
+#, no-c-format
+msgid "listSymbol"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:544
+#, no-c-format
+msgid "For bulleted lists, specifies the bullet symbol."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:550 Itext.xml:822
+#, no-c-format
+msgid "indent"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:552
+#, no-c-format
+msgid "The indentation level of the list."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:558
+#, no-c-format
+msgid "lowerCase"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:560
+#, no-c-format
+msgid ""
+"For list styles using letters, indicates whether the letters should be lower "
+"case."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:566
+#, no-c-format
+msgid "charNumber"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:568
+#, no-c-format
+msgid "For ZAPFDINGBATS, indicates the character code of the bullet character."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:574
+#, no-c-format
+msgid "numberType"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:576
+#, no-c-format
+msgid "For ZAPFDINGBATS_NUMBER, indicates the numbering style."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:585
+#, no-c-format
+msgid "p:listItem"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:586
+#, no-c-format
+msgid "<literal>p:listItem</literal> supports the following attributes:"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:593
+#, no-c-format
+msgid ""
+"The alignment of the list item. (See <xref linkend=\"Document_Constants-"
+"Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:601
+#, no-c-format
+msgid "The left indentation amount."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:609
+#, no-c-format
+msgid "The right indentation amount."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:617
+#, no-c-format
+msgid "Overrides the default list symbol for this list item."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:628
+#, no-c-format
+msgid "Tables"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:629
+#, no-c-format
+msgid ""
+"Table structures can be created using the <literal>p:table</literal> and "
+"<literal>p:cell</literal> tags. Unlike many table structures, there is no "
+"explicit row declaration. If a table has 3 columns, then every 3 cells will "
+"automatically form a row. Header and footer rows can be declared, and the "
+"headers and footers will be repeated in the event a table structure spans "
+"multiple pages."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:632
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"   \n"
+"            xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"            title=\"Hello\"&gt;   \n"
+"   &lt;p:table columns=\"3\" headerRows=\"1\"&gt;\n"
+"      &lt;p:cell&gt;name&lt;/p:cell&gt;\n"
+"      &lt;p:cell&gt;owner&lt;/p:cell&gt;\n"
+"      &lt;p:cell&gt;size&lt;/p:cell&gt;\n"
+"      &lt;ui:repeat value=\"#{documents}\" var=\"doc\"&gt;\n"
+"         &lt;p:cell&gt;#{doc.name}&lt;/p:cell&gt;\n"
+"         &lt;p:cell&gt;#{doc.user.name}&lt;/p:cell&gt;\n"
+"         &lt;p:cell&gt;#{doc.size}&lt;/p:cell&gt;\n"
+"      &lt;/ui:repeat&gt;\n"
+"   &lt;/p:table&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:634
+#, no-c-format
+msgid "p:table"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:635
+#, no-c-format
+msgid "<literal>p:table</literal> supports the following attributes."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:640
+#, no-c-format
+msgid "columns"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:642
+#, no-c-format
+msgid "The number of columns (cells) that make up a table row."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:648
+#, no-c-format
+msgid "widths"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:650
+#, no-c-format
+msgid ""
+"The relative widths of each column. There should be one value for each "
+"column. For example: widths=\"2 1 1\" would indicate that there are 3 "
+"columns and the first column should be twice the size of the second and "
+"third column."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:656
+#, no-c-format
+msgid "headerRows"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:658
+#, no-c-format
+msgid ""
+"The initial number of rows which are considered to be headers or footer rows "
+"and should be repeated if the table spans multiple pages."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:664
+#, no-c-format
+msgid "footerRows"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:666
+#, no-c-format
+msgid ""
+"The number of rows that are considered to be footer rows. This value is "
+"subtracted from the <literal>headerRows</literal> value. If document has 2 "
+"rows which make up the header and one row that makes up the footer, "
+"<literal>headerRows</literal> should be set to 3 and <literal>footerRows</"
+"literal> should be set to 1"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:674
+#, no-c-format
+msgid "The percentage of the page width that the table spans."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:680 Itext.xml:777
+#, no-c-format
+msgid "horizontalAlignment"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:682
+#, no-c-format
+msgid ""
+"The horizontal alignment of the table. (See <xref linkend="
+"\"Document_Constants-Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:688
+#, no-c-format
+msgid "skipFirstHeader"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:695 Itext.xml:885
+#, no-c-format
+msgid "runDirection"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:702
+#, no-c-format
+msgid "lockedWidth"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:709
+#, no-c-format
+msgid "splitRows"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:732
+#, no-c-format
+msgid "extendLastRow"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:739
+#, no-c-format
+msgid "headersInEvent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:746
+#, no-c-format
+msgid "splitLate"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:763
+#, no-c-format
+msgid "p:cell"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:764
+#, no-c-format
+msgid "<literal>p:cell</literal> supports the following attributes."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:769
+#, no-c-format
+msgid "colspan"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:771
+#, no-c-format
+msgid ""
+"Cells can span more than one column by declaring a <literal>colspan</"
+"literal> greater than 1. Tables do not have the ability to span across "
+"multiple rows."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:779
+#, no-c-format
+msgid ""
+"The horizontal alignment of the cell. (see <xref linkend="
+"\"Document_Constants-Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:785 Itext.xml:829
+#, no-c-format
+msgid "verticalAlignment"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:787
+#, no-c-format
+msgid ""
+"The vertical alignment of the cell. (see <xref linkend=\"Document_Constants-"
+"Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:793
+#, no-c-format
+msgid "padding"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:795
+#, no-c-format
+msgid ""
+"Padding on a given side can also be specified using <literal>paddingLeft</"
+"literal>, <literal>paddingRight</literal>, <literal>paddingTop</literal> and "
+"<literal>paddingBottom</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:801
+#, no-c-format
+msgid "useBorderPadding"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:843
+#, no-c-format
+msgid "fixedHeight"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:850
+#, no-c-format
+msgid "noWrap"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:857
+#, no-c-format
+msgid "minimumHeight"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:864
+#, no-c-format
+msgid "followingIndent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:871
+#, no-c-format
+msgid "rightIndent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:878
+#, no-c-format
+msgid "spaceCharRatio"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:892
+#, no-c-format
+msgid "arabicOptions"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:899
+#, no-c-format
+msgid "useAscender"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:906
+#, no-c-format
+msgid "grayFill"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:925
+#, no-c-format
+msgid "Document Constants"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:926
+#, no-c-format
+msgid ""
+"This section documents some of the constants shared by attributes on "
+"multiple tags."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:930
+#, no-c-format
+msgid "Color Values"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:931
+#, no-c-format
+msgid ""
+"Seam documents do not yet support a full color specification. Currently, "
+"only named colors are supported. They are: <literal>white</literal>, "
+"<literal>gray</literal>, <literal>lightgray</literal>, <literal>darkgray</"
+"literal>, <literal>black</literal>, <literal>red</literal>, <literal>pink</"
+"literal>, <literal>yellow</literal>, <literal>green</literal>, "
+"<literal>magenta</literal>, <literal>cyan</literal> and <literal>blue</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:937
+#, no-c-format
+msgid "Alignment Values"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:938
+#, no-c-format
+msgid ""
+"Where alignment values are used, the Seam PDF supports the following "
+"horizontal alignment values: <literal>left</literal>, <literal>right</"
+"literal>, <literal>center</literal>, <literal>justify</literal> and "
+"<literal>justifyall</literal>. The vertical alignment values are "
+"<literal>top</literal>, <literal>middle</literal>, <literal>bottom</"
+"literal>, and <literal>baseline</literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:946
+#, no-c-format
+msgid "Configuring iText"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:947
+#, no-c-format
+msgid ""
+"Document generation works out of the box with no additional configuration "
+"needed. However, there are a few points of configuration that are needed for "
+"more serious applications."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:950
+#, no-c-format
+msgid ""
+"The default implementation serves PDF documents from a generic URL, "
+"<literal>/seam-doc.seam</literal>. Many browsers (and users) would prefer to "
+"see URLs that contain the actual PDF name like <literal>/myDocument.pdf</"
+"literal>. This capability requires some configuration. To serve PDF files, "
+"all *.pdf resources should be mapped to the Seam Servlet Filter and to the "
+"DocumentStoreServlet:"
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:953
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.servlet.SeamServletFilter&lt;/filter-"
+"class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;\n"
+"\n"
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.pdf.DocumentStoreServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"\n"
+"&lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:954
+#, no-c-format
+msgid ""
+"The <literal>useExtensions</literal> option on the document store component "
+"completes the functionality by instructing the document store to generate "
+"URLs with the correct filename extension for the document type being "
+"generated."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:957
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pdf=\"http://jboss.com/products/seam/pdf\"&gt;\n"
+"    &lt;pdf:documentStore useExtensions=\"true\" /&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:958
+#, no-c-format
+msgid ""
+"Generated documents are stored in conversation scope and will expire when "
+"the conversation ends. At that point, references to the document will be "
+"invalid. To You can specify a default view to be shown when a document does "
+"not exist using the <literal>errorPage</literal> property of the "
+"documentStore."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:961
+#, no-c-format
+msgid ""
+"&lt;pdf:documentStore useExtensions=\"true\" errorPage=\"/pdfMissing.seam\" /"
+"&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:965
+#, no-c-format
+msgid "iText links"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:966
+#, no-c-format
+msgid "For further information on iText, see:"
+msgstr ""
+
+#. Tag: ulink
+#: Itext.xml:973
+#, no-c-format
+msgid "iText Home Page"
+msgstr ""
+
+#. Tag: ulink
+#: Itext.xml:978
+#, no-c-format
+msgid "iText in Action"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Jbpm.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Jbpm.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Jbpm.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1189 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Jbpm.xml:10
+#, no-c-format
+msgid "Pageflows and business processes"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:11
+#, no-c-format
+msgid ""
+"JBoss jBPM is a business process management engine for any Java SE or EE "
+"environment. jBPM lets you represent a business process or user interaction "
+"as a graph of nodes representing wait states, decisions, tasks, web pages, "
+"etc. The graph is defined using a simple, very readable, XML dialect called "
+"jPDL, and may be edited and visualised graphically using an eclipse plugin. "
+"jPDL is an extensible language, and is suitable for a range of problems, "
+"from defining web application page flow, to traditional workflow management, "
+"all the way up to orchestration of services in a SOA environment."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:14
+#, no-c-format
+msgid "Seam applications use jBPM for two different problems:"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:20
+#, no-c-format
+msgid ""
+"Defining the pageflow involved in complex user interactions. A jPDL process "
+"definition defines the page flow for a single conversation. A Seam "
+"conversation is considered to be a relatively short-running interaction with "
+"a single user."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:25
+#, no-c-format
+msgid ""
+"Defining the overarching business process. The business process may span "
+"multiple conversations with multiple users. Its state is persistent in the "
+"jBPM database, so it is considered long-running. Coordination of the "
+"activities of multiple users is a much more complex problem than scripting "
+"an interaction with a single user, so jBPM offers sophisticated facilities "
+"for task management and dealing with multiple concurrent paths of execution."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:31
+#, no-c-format
+msgid ""
+"Don't get these two things confused ! They operate at very different levels "
+"or granularity. <emphasis>Pageflow</emphasis>, <emphasis>conversation</"
+"emphasis> and <emphasis>task</emphasis> all refer to a single interaction "
+"with a single user. A business process spans many tasks. Futhermore, the two "
+"applications of jBPM are totally orthogonal. You can use them together or "
+"independently or not at all."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:34
+#, no-c-format
+msgid ""
+"You don't have to know jDPL to use Seam. If you're perfectly happy defining "
+"pageflow using JSF or Seam navigation rules, and if your application is more "
+"data-driven that process-driven, you probably don't need jBPM. But we're "
+"finding that thinking of user interaction in terms of a well-defined "
+"graphical representation is helping us build more robust applications."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:37
+#, no-c-format
+msgid ""
+"Please refer to the jBPM documentation for a more thorough overview of the "
+"sophisticated features that jBPM provides for managing complex business "
+"processes."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:41
+#, no-c-format
+msgid "Pageflow in Seam"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:42
+#, no-c-format
+msgid "There are two ways to define pageflow in Seam:"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:47
+#, no-c-format
+msgid ""
+"Using JSF or Seam navigation rules - the <emphasis>stateless navigation "
+"model</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:52
+#, no-c-format
+msgid "Using jPDL - the <emphasis>stateful navigation model</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:57
+#, no-c-format
+msgid ""
+"Very simple applications will only need the stateless navigation model. Very "
+"complex applications will use both models in different places. Each model "
+"has its strengths and weaknesses!"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:60
+#, no-c-format
+msgid ""
+"In practice, both navigation models have their place, and you'll quickly "
+"learn to recognize when to prefer one model over the other."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:64
+#, no-c-format
+msgid "The two navigation models"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:65
+#, no-c-format
+msgid ""
+"The stateless model defines a mapping from a set of named, logical outcomes "
+"of an event directly to the resulting page of the view. The navigation rules "
+"are entirely oblivious to any state held by the application other than what "
+"page was the source of the event. This means that your action listener "
+"methods must sometimes make decisions about the page flow, since only they "
+"have access to the current state of the application."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:68
+#, no-c-format
+msgid "Here is an example page flow definition using JSF navigation rules:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:71
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"    &lt;from-view-id&gt;/numberGuess.jsp&lt;/from-view-id&gt;\n"
+"        \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;guess&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/numberGuess.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;win&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/win.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"        \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;lose&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/lose.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:72
+#, no-c-format
+msgid ""
+"Here is the same example page flow definition using Seam navigation rules:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:75
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/numberGuess.jsp\"&gt;\n"
+"        \n"
+"    &lt;navigation&gt;\n"
+"        &lt;rule if-outcome=\"guess\"&gt;\n"
+"            &lt;redirect view-id=\"/numberGuess.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"        &lt;rule if-outcome=\"win\"&gt;\n"
+"            &lt;redirect view-id=\"/win.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"        &lt;rule if-outcome=\"lose\"&gt;\n"
+"            &lt;redirect view-id=\"/lose.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:76
+#, no-c-format
+msgid ""
+"If you find navigation rules overly verbose, you can return view ids "
+"directly from your action listener methods:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:79
+#, no-c-format
+msgid ""
+"public String guess() {\n"
+"    if (guess==randomNumber) return \"/win.jsp\";\n"
+"    if (++guessCount==maxGuesses) return \"/lose.jsp\";\n"
+"    return null;\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:80
+#, no-c-format
+msgid ""
+"Note that this results in a redirect. You can even specify parameters to be "
+"used in the redirect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:83
+#, no-c-format
+msgid ""
+"public String search() {\n"
+"    return \"/searchResults.jsp?searchPattern=#{searchAction.searchPattern}"
+"\";\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:84
+#, no-c-format
+msgid ""
+"The stateful model defines a set of transitions between a set of named, "
+"logical application states. In this model, it is possible to express the "
+"flow of any user interaction entirely in the jPDL pageflow definition, and "
+"write action listener methods that are completely unaware of the flow of the "
+"interaction."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:87
+#, no-c-format
+msgid "Here is an example page flow definition using jPDL:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:90
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"numberGuess\"&gt;\n"
+"    \n"
+"   &lt;start-page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"      &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"      &lt;/transition&gt;\n"
+"   &lt;/start-page&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess."
+"correctGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateRemainingGuesses\" expression=\"#{numberGuess."
+"lastGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"lose\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"displayGuess\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"lose\" view-id=\"/lose.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:99
+#, no-c-format
+msgid "There are two things we notice immediately here:"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:104
+#, no-c-format
+msgid ""
+"The JSF/Seam navigation rules are <emphasis>much</emphasis> simpler. "
+"(However, this obscures the fact that the underlying Java code is more "
+"complex.)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:109
+#, no-c-format
+msgid ""
+"The jPDL makes the user interaction immediately understandable, without us "
+"needing to even look at the JSP or Java code."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:114
+#, no-c-format
+msgid ""
+"In addition, the stateful model is more <emphasis>constrained</emphasis>. "
+"For each logical state (each step in the page flow), there are a constrained "
+"set of possible transitions to other states. The stateless model is an "
+"<emphasis>ad hoc</emphasis> model which is suitable to relatively "
+"unconstrained, freeform navigation where the user decides where he/she wants "
+"to go next, not the application."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:117
+#, no-c-format
+msgid ""
+"The stateful/stateless navigation distinction is quite similar to the "
+"traditional view of modal/modeless interaction. Now, Seam applications are "
+"not usually modal in the simple sense of the word - indeed, avoiding "
+"application modal behavior is one of the main reasons for having "
+"conversations! However, Seam applications can be, and often are, modal at "
+"the level of a particular conversation. It is well-known that modal behavior "
+"is something to avoid as much as possible; it is very difficult to predict "
+"the order in which your users are going to want to do things! However, there "
+"is no doubt that the stateful model has its place."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:120
+#, no-c-format
+msgid ""
+"The biggest contrast between the two models is the back-button behavior."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:126
+#, no-c-format
+msgid "Seam and the back button"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:127
+#, no-c-format
+msgid ""
+"When JSF or Seam navigation rules are used, Seam lets the user freely "
+"navigate via the back, forward and refresh buttons. It is the responsibility "
+"of the application to ensure that conversational state remains internally "
+"consistent when this occurs. Experience with the combination of web "
+"application frameworks like Struts or WebWork - that do not support a "
+"conversational model - and stateless component models like EJB stateless "
+"session beans or the Spring framework has taught many developers that this "
+"is close to impossible to do! However, our experience is that in the context "
+"of Seam, where there is a well-defined conversational model, backed by "
+"stateful session beans, it is actually quite straightforward. Usually it is "
+"as simple as combining the use of <literal>no-conversation-view-id</literal> "
+"with null checks at the beginning of action listener methods. We consider "
+"support for freeform navigation to be almost always desirable."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:130
+#, no-c-format
+msgid ""
+"In this case, the <literal>no-conversation-view-id</literal> declaration "
+"goes in <literal>pages.xml</literal>. It tells Seam to redirect to a "
+"different page if a request originates from a page rendered during a "
+"conversation, and that conversation no longer exists:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:133
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/checkout.xhtml\" \n"
+"        no-conversation-view-id=\"/main.xhtml\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:134
+#, no-c-format
+msgid ""
+"On the other hand, in the stateful model, backbuttoning is interpreted as an "
+"undefined transition back to a previous state. Since the stateful model "
+"enforces a defined set of transitions from the current state, back buttoning "
+"is be default disallowed in the stateful model! Seam transparently detects "
+"the use of the back button, and blocks any attempt to perform an action from "
+"a previous, \"stale\" page, and simply redirects the user to the \"current\" "
+"page (and displays a faces message). Whether you consider this a feature or "
+"a limitation of the stateful model depends upon your point of view: as an "
+"application developer, it is a feature; as a user, it might be frustrating! "
+"You can enable backbutton navigation from a particular page node by setting "
+"<literal>back=\"enabled\"</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:137
+#, no-c-format
+msgid ""
+"&lt;page name=\"checkout\" \n"
+"        view-id=\"/checkout.xhtml\" \n"
+"        back=\"enabled\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"checkout\"/&gt;\n"
+"    &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:138
+#, no-c-format
+msgid ""
+"This allows backbuttoning <emphasis>from</emphasis> the <literal>checkout</"
+"literal> state to <emphasis>any previous state!</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:141
+#, no-c-format
+msgid ""
+"Of course, we still need to define what happens if a request originates from "
+"a page rendered during a pageflow, and the conversation with the pageflow no "
+"longer exists. In this case, the <literal>no-conversation-view-id</literal> "
+"declaration goes into the pageflow definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:144
+#, no-c-format
+msgid ""
+"&lt;page name=\"checkout\" \n"
+"        view-id=\"/checkout.xhtml\" \n"
+"        back=\"enabled\" \n"
+"        no-conversation-view-id=\"/main.xhtml\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"checkout\"/&gt;\n"
+"    &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:151
+#, no-c-format
+msgid "Using jPDL pageflows"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:153
+#, no-c-format
+msgid "Installing pageflows"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:154
+#, no-c-format
+msgid ""
+"We need to install the Seam jBPM-related components, and tell them where to "
+"find our pageflow definition. We can specify this Seam configuration in "
+"<literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:157
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:pageflow-definitions&gt;\n"
+"        &lt;value&gt;pageflow.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:pageflow-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:158
+#, no-c-format
+msgid ""
+"The first line installs jBPM, the second points to a jPDL-based pageflow "
+"definition."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:164
+#, no-c-format
+msgid "Starting pageflows"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:165
+#, no-c-format
+msgid ""
+"We \"start\" a jPDL-based pageflow by specifying the name of the process "
+"definition using a <literal>@Begin</literal>, <literal>@BeginTask</literal> "
+"or <literal>@StartTask</literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:168
+#, no-c-format
+msgid ""
+"@Begin(pageflow=\"numberguess\")\n"
+"public void begin() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:169
+#, no-c-format
+msgid "Alternatively we can start a pageflow using pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:172
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"        &lt;begin-conversation pageflow=\"numberguess\"/&gt;\n"
+"    &lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:173
+#, no-c-format
+msgid ""
+"If we are beginning the pageflow during the <literal>RENDER_RESPONSE</"
+"literal> phase&mdash;during a <literal>@Factory</literal> or "
+"<literal>@Create</literal> method, for example&mdash;we consider ourselves "
+"to be already at the page being rendered, and use a <literal>&lt;start-"
+"page&gt;</literal> node as the first node in the pageflow, as in the example "
+"above."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:176
+#, no-c-format
+msgid ""
+"But if the pageflow is begun as the result of an action listener invocation, "
+"the outcome of the action listener determines which is the first page to be "
+"rendered. In this case, we use a <literal>&lt;start-state&gt;</literal> as "
+"the first node in the pageflow, and declare a transition for each possible "
+"outcome:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:179
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"viewEditDocument\"&gt;\n"
+"\n"
+"    &lt;start-state name=\"start\"&gt;\n"
+"        &lt;transition name=\"documentFound\" to=\"displayDocument\"/&gt;\n"
+"        &lt;transition name=\"documentNotFound\" to=\"notFound\"/&gt;\n"
+"    &lt;/start-state&gt;\n"
+"    \n"
+"    &lt;page name=\"displayDocument\" view-id=\"/document.jsp\"&gt;\n"
+"        &lt;transition name=\"edit\" to=\"editDocument\"/&gt;\n"
+"        &lt;transition name=\"done\" to=\"main\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"    \n"
+"    ...\n"
+"    \n"
+"    &lt;page name=\"notFound\" view-id=\"/404.jsp\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"    &lt;/page&gt;\n"
+"    \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:183
+#, no-c-format
+msgid "Page nodes and transitions"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:184
+#, no-c-format
+msgid ""
+"Each <literal>&lt;page&gt;</literal> node represents a state where the "
+"system is waiting for user input:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:187
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"        &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:188
+#, no-c-format
+msgid ""
+"The <literal>view-id</literal> is the JSF view id. The <literal>&lt;redirect/"
+"&gt;</literal> element has the same effect as <literal>&lt;redirect/&gt;</"
+"literal> in a JSF navigation rule: namely, a post-then-redirect behavior, to "
+"overcome problems with the browser's refresh button. (Note that Seam "
+"propagates conversation contexts over these browser redirects. So there is "
+"no need for a Ruby on Rails style \"flash\" construct in Seam!)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:191
+#, no-c-format
+msgid ""
+"The transition name is the name of a JSF outcome triggered by clicking a "
+"command button or command link in <literal>numberGuess.jsp</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:194
+#, no-c-format
+msgid ""
+"&lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"guess\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:195
+#, no-c-format
+msgid ""
+"When the transition is triggered by clicking this button, jBPM will activate "
+"the transition action by calling the <literal>guess()</literal> method of "
+"the <literal>numberGuess</literal> component. Notice that the syntax used "
+"for specifying actions in the jPDL is just a familiar JSF EL expression, and "
+"that the transition action handler is just a method of a Seam component in "
+"the current Seam contexts. So we have exactly the same event model for jBPM "
+"events that we already have for JSF events! (The <emphasis>One Kind of "
+"Stuff</emphasis> principle.)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:198
+#, no-c-format
+msgid ""
+"In the case of a null outcome (for example, a command button with no "
+"<literal>action</literal> defined), Seam will signal the transition with no "
+"name if one exists, or else simply redisplay the page if all transitions "
+"have names. So we could slightly simplify our example pageflow and this "
+"button:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:201
+#, no-c-format
+msgid "&lt;h:commandButton type=\"submit\" value=\"Guess\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:202
+#, no-c-format
+msgid "Would fire the following un-named transition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:205
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"evaluateGuess\"&gt;\n"
+"        &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:206
+#, no-c-format
+msgid ""
+"It is even possible to have the button call an action method, in which case "
+"the action outcome will determine the transition to be taken:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:209
+#, no-c-format
+msgid ""
+"&lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"#{numberGuess."
+"guess}\"/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:210
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;transition name=\"correctGuess\" to=\"win\"/&gt;\n"
+"    &lt;transition name=\"incorrectGuess\" to=\"evaluateGuess\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:211
+#, no-c-format
+msgid ""
+"However, this is considered an inferior style, since it moves responsibility "
+"for controlling the flow out of the pageflow definition and back into the "
+"other components. It is much better to centralize this concern in the "
+"pageflow itself."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:217
+#, no-c-format
+msgid "Controlling the flow"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:218
+#, no-c-format
+msgid ""
+"Usually, we don't need the more powerful features of jPDL when defining "
+"pageflows. We do need the <literal>&lt;decision&gt;</literal> node, however:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:221
+#, no-c-format
+msgid ""
+"&lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess.correctGuess}"
+"\"&gt;\n"
+"    &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"    &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"&lt;/decision&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:222
+#, no-c-format
+msgid ""
+"A decision is made by evaluating a JSF EL expression in the Seam contexts."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:228
+#, no-c-format
+msgid "Ending the flow"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:229
+#, no-c-format
+msgid ""
+"We end the conversation using <literal>&lt;end-conversation&gt;</literal> or "
+"<literal>@End</literal>. (In fact, for readability, use of <emphasis>both</"
+"emphasis> is encouraged.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:232
+#, no-c-format
+msgid ""
+"&lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;end-conversation/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:233
+#, no-c-format
+msgid ""
+"Optionally, we can end a task, specify a jBPM <literal>transition</literal> "
+"name. In this case, Seam will signal the end of the current task in the "
+"overarching business process."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:236
+#, no-c-format
+msgid ""
+"&lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;end-task transition=\"success\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:242
+#, no-c-format
+msgid "Business process management in Seam"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:243
+#, no-c-format
+msgid ""
+"A business process is a well-defined set of tasks that must be performed by "
+"users or software systems according to well-defined rules about "
+"<emphasis>who</emphasis> can perform a task, and <emphasis>when</emphasis> "
+"it should be performed. Seam's jBPM integration makes it easy to display "
+"lists of tasks to users and let them manage their tasks. Seam also lets the "
+"application store state associated with the business process in the "
+"<literal>BUSINESS_PROCESS</literal> context, and have that state made "
+"persistent via jBPM variables."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:246
+#, no-c-format
+msgid ""
+"A simple business process definition looks much the same as a page flow "
+"definition (<emphasis>One Kind of Stuff</emphasis>), except that instead of "
+"<literal>&lt;page&gt;</literal> nodes, we have <literal>&lt;task-node&gt;</"
+"literal> nodes. In a long-running business process, the wait states are "
+"where the system is waiting for some user to log in and perform a task."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:249
+#, no-c-format
+msgid ""
+"&lt;process-definition name=\"todo\"&gt;\n"
+"   \n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"todo\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;task-node name=\"todo\"&gt;\n"
+"      &lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"         &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"      &lt;/task&gt;\n"
+"      &lt;transition to=\"done\"/&gt;\n"
+"   &lt;/task-node&gt;\n"
+"   \n"
+"   &lt;end-state name=\"done\"/&gt;\n"
+"   \n"
+"&lt;/process-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:260
+#, no-c-format
+msgid ""
+"It is perfectly possible that we might have both jPDL business process "
+"definitions and jPDL pageflow definitions in the same project. If so, the "
+"relationship between the two is that a single <literal>&lt;task&gt;</"
+"literal> in a business process corresponds to a whole pageflow <literal>&lt;"
+"pageflow-definition&gt;</literal>"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:265
+#, no-c-format
+msgid "Using jPDL business process definitions"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:267
+#, no-c-format
+msgid "Installing process definitions"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:268
+#, no-c-format
+msgid ""
+"We need to install jBPM, and tell it where to find the business process "
+"definitions:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:271
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;todo.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:275
+#, no-c-format
+msgid "Initializing actor ids"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:276
+#, no-c-format
+msgid ""
+"We always need to know what user is currently logged in. jBPM \"knows\" "
+"users by their <emphasis>actor id</emphasis> and <emphasis>group actor ids</"
+"emphasis>. We specify the current actor ids using the built in Seam "
+"component named <literal>actor</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:279
+#, no-c-format
+msgid ""
+"@In Actor actor;\n"
+"\n"
+"public String login() {\n"
+"    ...\n"
+"    actor.setId( user.getUserName() );\n"
+"    actor.getGroupActorIds().addAll( user.getGroupNames() );\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:283
+#, no-c-format
+msgid "Initiating a business process"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:284
+#, no-c-format
+msgid ""
+"To initiate a business process instance, we use the <literal>@CreateProcess</"
+"literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:287
+#, no-c-format
+msgid ""
+"@CreateProcess(definition=\"todo\")\n"
+"public void createTodo() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:288
+#, no-c-format
+msgid "Alternatively we can initiate a business process using pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:291
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;create-process definition=\"todo\" /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:295
+#, no-c-format
+msgid "Task assignment"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:296
+#, no-c-format
+msgid ""
+"When a process starts, task instances are created. These must be assigned to "
+"users or user groups. We can either hardcode our actor ids, or delegate to a "
+"Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:299
+#, no-c-format
+msgid ""
+"&lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"    &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"&lt;/task&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:300
+#, no-c-format
+msgid ""
+"In this case, we have simply assigned the task to the current user. We can "
+"also assign tasks to a pool:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:303
+#, no-c-format
+msgid ""
+"&lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"    &lt;assignment pooled-actors=\"employees\"/&gt;\n"
+"&lt;/task&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:307
+#, no-c-format
+msgid "Task lists"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:308
+#, no-c-format
+msgid ""
+"Several built-in Seam components make it easy to display task lists. The "
+"<literal>pooledTaskInstanceList</literal> is a list of pooled tasks that "
+"users may assign to themselves:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:311
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{pooledTaskInstanceList}\" var=\"task\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Description&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{task.description}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link action=\"#{pooledTask.assignToCurrentActor}\" value="
+"\"Assign\" taskInstance=\"#{task}\"/&gt;\n"
+"    &lt;/h:column&gt;            \n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:312
+#, no-c-format
+msgid ""
+"Note that instead of <literal>&lt;s:link&gt;</literal> we could have used a "
+"plain JSF <literal>&lt;h:commandLink&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:315
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"#{pooledTask.assignToCurrentActor}\"&gt; \n"
+"    &lt;f:param name=\"taskId\" value=\"#{task.id}\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:316
+#, no-c-format
+msgid ""
+"The <literal>pooledTask</literal> component is a built-in component that "
+"simply assigns the task to the current user."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:319
+#, no-c-format
+msgid ""
+"The <literal>taskInstanceListByType</literal> component includes tasks of a "
+"particular type that are assigned to the current user:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:322
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{taskInstanceListByType['todo']}\" var=\"task"
+"\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Description&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{task.description}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link action=\"#{todoList.start}\" value=\"Start Work\" "
+"taskInstance=\"#{task}\"/&gt;\n"
+"    &lt;/h:column&gt;            \n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:326
+#, no-c-format
+msgid "Performing a task"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:327
+#, no-c-format
+msgid ""
+"To begin work on a task, we use either <literal>@StartTask</literal> or "
+"<literal>@BeginTask</literal> on the listener method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:330
+#, no-c-format
+msgid ""
+"@StartTask\n"
+"public String start() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:331
+#, no-c-format
+msgid "Alternatively we can begin work on a task using pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:334
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;start-task /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:335
+#, no-c-format
+msgid ""
+"These annotations begin a special kind of conversation that has significance "
+"in terms of the overarching business process. Work done by this conversation "
+"has access to state held in the business process context."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:338
+#, no-c-format
+msgid ""
+"If we end the conversation using <literal>@EndTask</literal>, Seam will "
+"signal the completion of the task:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:341
+#, no-c-format
+msgid ""
+"@EndTask(transition=\"completed\")\n"
+"public String completed() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:342
+#, no-c-format
+msgid "Alternatively we can use pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:345
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;end-task transition=\"completed\" /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:346
+#, no-c-format
+msgid ""
+"(Alternatively, we could have used <literal>&lt;end-conversation&gt;</"
+"literal> as shown above.)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:349
+#, no-c-format
+msgid ""
+"At this point, jBPM takes over and continues executing the business process "
+"definition. (In more complex processes, several tasks might need to be "
+"completed before process execution can resume.)"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Jms.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Jms.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Jms.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,477 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Jms.xml:10
+#, no-c-format
+msgid "Asynchronicity and messaging"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:11
+#, no-c-format
+msgid ""
+"Seam makes it very easy to perform work asynchronously from a web request. "
+"When most people think of asynchronicity in Java EE, they think of using "
+"JMS. This is certainly one way to approach the problem in Seam, and is the "
+"right way when you have strict and well-defined quality of service "
+"requirements. Seam makes it easy to send and recieve JMS messages using Seam "
+"components."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:14
+#, no-c-format
+msgid ""
+"But for many usecases, JMS is overkill. Seam layers a simple asynchronous "
+"method and event facility over the EJB 3.0 timer service."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:17
+#, no-c-format
+msgid "Asynchronicity"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:18
+#, no-c-format
+msgid ""
+"Asynchronous events and method calls have the same quality of service "
+"expectations as the container's EJB timer service. If you're not familiar "
+"with the Timer service, don't worry, you don't need to interact with it "
+"directly if you want to use asynchronous methods in Seam."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:21
+#, no-c-format
+msgid ""
+"To use asynchronous methods and events, you need to add the following line "
+"to <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:24
+#, no-c-format
+msgid "&lt;core:dispatcher/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:25
+#, no-c-format
+msgid ""
+"Note that this functionality is not available in environments which do not "
+"support EJB 3.0."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:28
+#, no-c-format
+msgid "Asynchronous methods"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:29
+#, no-c-format
+msgid ""
+"In simplest form, an asynchronous call just lets a method call be processed "
+"asynchronously (in a different thread) from the caller. We usually use an "
+"asynchronous call when we want to return an immediate response to the "
+"client, and let some expensive work be processed in the background. This "
+"pattern works very well in applications which use AJAX, where the client can "
+"automatically poll the server for the result of the work."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:32
+#, no-c-format
+msgid ""
+"For EJB components, we annotate the local interface to specify that a method "
+"is processed asynchronously."
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:35
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public void processPayment(Payment payment);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:36
+#, no-c-format
+msgid ""
+"(For JavaBean components we can annotate the component implementation class "
+"if we like.)"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:39
+#, no-c-format
+msgid "The use of asynchronicity is transparent to the bean class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:42
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"paymentHandler\")\n"
+"public class PaymentHandlerBean implements PaymentHandler\n"
+"{\n"
+"    public void processPayment(Payment payment)\n"
+"    {\n"
+"        //do some work!\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:43
+#, no-c-format
+msgid "And also transparent to the client:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:46
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String pay()\n"
+"    {\n"
+"        paymentHandler.processPayment( new Payment(bill) );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:47
+#, no-c-format
+msgid ""
+"The asynchronous method is processed in a completely new event context and "
+"does not have access to the session or conversation context state of the "
+"caller. However, the business process context <emphasis>is</emphasis> "
+"propagated."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:50
+#, no-c-format
+msgid ""
+"Asynchronous method calls may be scheduled for later execution using the "
+"<literal>@Duration</literal>, <literal>@Expiration</literal> and "
+"<literal>@IntervalDuration</literal> annotations."
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:53
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public void processScheduledPayment(Payment payment, @Expiration Date "
+"date);\n"
+"\n"
+"    @Asynchronous\n"
+"    public void processRecurringPayment(Payment payment, @Expiration Date "
+"date, \n"
+"        @IntervalDuration Long interval)'\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:54
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String schedulePayment()\n"
+"    {\n"
+"        paymentHandler.processScheduledPayment( new Payment(bill), bill."
+"getDueDate() );\n"
+"        return \"success\";\n"
+"    }\n"
+"\n"
+"    public String scheduleRecurringPayment()\n"
+"    {\n"
+"        paymentHandler.processRecurringPayment( new Payment(bill), bill."
+"getDueDate(), ONE_MONTH );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:55
+#, no-c-format
+msgid ""
+"Both client and server may access the <literal>Timer</literal> object "
+"associated with the invocation."
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:58
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public Timer processScheduledPayment(Payment payment, @Expiration Date "
+"date);\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:59
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"paymentHandler\")\n"
+"public class PaymentHandlerBean implements PaymentHandler\n"
+"{\n"
+"    @In Timer timer;\n"
+"    \n"
+"    public Timer processScheduledPayment(Payment payment, @Expiration Date "
+"date)\n"
+"    {\n"
+"        //do some work!\n"
+"        \n"
+"        return timer; //note that return value is completely ignored\n"
+"    }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:60
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String schedulePayment()\n"
+"    {\n"
+"        Timer timer = paymentHandler.processScheduledPayment( new Payment"
+"(bill), bill.getDueDate() );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:61
+#, no-c-format
+msgid "Asynchronous methods cannot return any other value to the caller."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:64
+#, no-c-format
+msgid "Asynchronous events"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:65
+#, no-c-format
+msgid ""
+"Component-driven events may also be asynchronous. To raise an event for "
+"asynchronous processing, simply call the <literal>raiseAsynchronousEvent()</"
+"literal> methods of the <literal>Events</literal> class. To schedule a timed "
+"event, call one of the <literal>raiseTimedEvent()</literal> methods. "
+"Components may observe asynchronous events in the usual way, but remember "
+"that only the business process context is propagated to the asynchronous "
+"thread."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:68
+#, no-c-format
+msgid "Messaging in Seam"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:69
+#, no-c-format
+msgid ""
+"Seam makes it easy to send and receive JMS messages to and from Seam "
+"components."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:72
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:73
+#, no-c-format
+msgid ""
+"To configure Seam's infrastructure for sending JMS messages, you need to "
+"tell Seam about any topics and queues you want to send messages to, and also "
+"tell Seam where to find the <literal>QueueConnectionFactory</literal> and/or "
+"<literal>TopicConnectionFactory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:76
+#, no-c-format
+msgid ""
+"Seam defaults to using <literal>UIL2ConnectionFactory</literal> which is the "
+"usual connection factory for use with JBossMQ. If you are using some other "
+"JMS provider, you need to set one or both of <literal>queueConnection."
+"queueConnectionFactoryJndiName</literal> and <literal>topicConnection."
+"topicConnectionFactoryJndiName</literal> in <literal>seam.properties</"
+"literal>, <literal>web.xml</literal> or <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:79
+#, no-c-format
+msgid ""
+"You also need to list topics and queues in <literal>components.xml</literal> "
+"to install Seam managed <literal>TopicPublisher</literal>s and "
+"<literal>QueueSender</literal>s:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:82
+#, no-c-format
+msgid ""
+"&lt;jms:managed-topic-publisher name=\"stockTickerPublisher\" auto-create="
+"\"true\" \n"
+"    topic-jndi-name=\"topic/stockTickerTopic\"/&gt;\n"
+"\n"
+"&lt;jms:managed-queue-sender name=\"paymentQueueSender\" auto-create=\"true"
+"\" \n"
+"    queue-jndi-name=\"queue/paymentQueue\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:83
+#, no-c-format
+msgid "Sending messages"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:84
+#, no-c-format
+msgid ""
+"Now, you can inject a JMS <literal>TopicPublisher</literal> and "
+"<literal>TopicSession</literal> into any component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:87
+#, no-c-format
+msgid ""
+"@In \n"
+"private TopicPublisher stockTickerPublisher;   \n"
+"@In \n"
+"private TopicSession topicSession;\n"
+"\n"
+"public void publish(StockPrice price) {\n"
+"      try\n"
+"      {\n"
+"         topicPublisher.publish( topicSession.createObjectMessage(price) );\n"
+"      } \n"
+"      catch (Exception ex)\n"
+"      {\n"
+"         throw new RuntimeException(ex);\n"
+"      } \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:88
+#, no-c-format
+msgid "Or, for working with a queue:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:91
+#, no-c-format
+msgid ""
+"@In\n"
+"private QueueSender paymentQueueSender;   \n"
+"@In\n"
+"private QueueSession queueSession;\n"
+"\n"
+"public void publish(Payment payment) {\n"
+"      try\n"
+"      {\n"
+"         paymentQueueSender.send( queueSession.createObjectMessage"
+"(payment) );\n"
+"      } \n"
+"      catch (Exception ex)\n"
+"      {\n"
+"         throw new RuntimeException(ex);\n"
+"      } \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:92
+#, no-c-format
+msgid "Receiving messages using a message-driven bean"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:93
+#, no-c-format
+msgid ""
+"You can process messages using any EJB3 message driven bean. Message-driven "
+"beans may even be Seam components, in which case it is possible to inject "
+"other event and application scoped Seam components."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:96
+#, no-c-format
+msgid "Receiving messages in the client"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:97
+#, no-c-format
+msgid ""
+"Seam Remoting lets you subscribe to a JMS topic from client-side JavaScript. "
+"This is described in the next chapter."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Mail.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Mail.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Mail.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,985 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Mail.xml:10
+#, no-c-format
+msgid "Email"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:11
+#, no-c-format
+msgid ""
+"Seam now includes an optional components for templating and sending emails."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:14
+#, no-c-format
+msgid ""
+"Email support is provided by <literal>jboss-seam-mail.jar</literal>. This "
+"JAR contains the mail JSF controls, which are used to construct emails, and "
+"the <literal>mailSession</literal> manager component."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:17
+#, no-c-format
+msgid ""
+"The examples/mail project contains an example of the email support in "
+"action. It demonstrates proper packaging, and it contains a number of "
+"example that demonstrate the key features currently supported."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:21
+#, no-c-format
+msgid "Creating a message"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:22
+#, no-c-format
+msgid ""
+"You don't need to learn a whole new templating language to use Seam "
+"Mail&mdash;an email is just facelet!"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:25
+#, no-c-format
+msgid ""
+"&lt;m:message xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"    xmlns:m=\"http://jboss.com/products/seam/mail\"\n"
+"    xmlns:h=\"http://java.sun.com/jsf/html\"&gt;\n"
+"  \n"
+"    &lt;m:from name=\"Peter\" address=\"peter at example.com\" /&gt;\n"
+"    &lt;m:to name=\"#{person.firstname} #{person.lastname}\"&gt;#{person."
+"address}&lt;/m:to&gt;\n"
+"    &lt;m:subject&gt;Try out Seam!&lt;/m:subject&gt;\n"
+"    \n"
+"    &lt;m:body&gt;\n"
+"        &lt;p&gt;&lt;h:outputText value=\"Dear #{person.firstname}\" /&gt;,"
+"&lt;/p&gt;\n"
+"        &lt;p&gt;You can try out Seam by visiting \n"
+"        &lt;a href=\"http://labs.jboss.com/jbossseam\"&gt;http://labs.jboss."
+"com/jbossseam&lt;/a&gt;.&lt;/p&gt;\n"
+"        &lt;p&gt;Regards,&lt;/p&gt;\n"
+"        &lt;p&gt;Peter&lt;/p&gt;\n"
+"    &lt;/m:body&gt;\n"
+"    \n"
+"&lt;/m:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:26
+#, no-c-format
+msgid ""
+"The <literal>&lt;m:message&gt;</literal> tag wraps the whole message, and "
+"tells Seam to start rendering an email. Inside the <literal>&lt;m:message&gt;"
+"</literal> tag we use an <literal>&lt;m:from&gt;</literal> tag to set who "
+"the message is from, a <literal>&lt;m:to&gt;</literal> tag to specify a "
+"sender (notice how we use EL as we would in a normal facelet), and a "
+"<literal>&lt;m:subject&gt;</literal> tag."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:29
+#, no-c-format
+msgid ""
+"The <literal>&lt;m:body&gt;</literal> tag wraps the body of the email. You "
+"can use regular HTML tags inside the body as well as JSF components."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:32
+#, no-c-format
+msgid ""
+"So, now you have your email template, how do you go about sending it? Well, "
+"at the end of rendering the <literal>m:message</literal> the "
+"<literal>mailSession</literal> is called to send the email, so all you have "
+"to do is ask Seam to render the view:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:35
+#, no-c-format
+msgid ""
+"@In(create=true)\n"
+"private Renderer renderer;\n"
+"   \n"
+"public void send() {\n"
+"    try {\n"
+"       renderer.render(\"/simple.xhtml\");\n"
+"       facesMessages.add(\"Email sent successfully\");\n"
+"   } \n"
+"   catch (Exception e) {\n"
+"       facesMessages.add(\"Email sending failed: \" + e.getMessage());\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:36
+#, no-c-format
+msgid ""
+"If, for example, you entered an invalid email address, then an exception "
+"would be thrown, which is caught and then displayed to the user."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:40
+#, no-c-format
+msgid "Attachments"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:41
+#, no-c-format
+msgid ""
+"Seam makes it easy to attach files to an email. It supports most of the "
+"standard java types used when working with files."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:44
+#, no-c-format
+msgid "If you wanted to email the <literal>jboss-seam-mail.jar</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:47
+#, no-c-format
+msgid "&lt;m:attachment value=\"/WEB-INF/lib/jboss-seam-mail.jar\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:48
+#, no-c-format
+msgid ""
+"Seam will load the file from the classpath, and attach it to the email. By "
+"default it would be attached as <literal>jboss-seam-mail.jar</literal>; if "
+"you wanted it to have another name you would just add the <literal>fileName</"
+"literal> attribute:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:51
+#, no-c-format
+msgid ""
+"&lt;m:attachment value=\"/WEB-INF/lib/jboss-seam-mail.jar\" fileName=\"this-"
+"is-so-cool.jar\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:52
+#, no-c-format
+msgid ""
+"You could also attach a <literal>java.io.File</literal>, a <literal>java.net."
+"URL</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:55
+#, no-c-format
+msgid "&lt;m:attachment value=\"#{numbers}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:56
+#, no-c-format
+msgid ""
+"Or a <literal>byte[]</literal> or a <literal>java.io.InputStream</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:59
+#, no-c-format
+msgid ""
+"&lt;m:attachment value=\"#{person.photo}\" contentType=\"image/png\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:60
+#, no-c-format
+msgid ""
+"You'll notice that for a <literal>byte[]</literal> and a <literal>java.io."
+"InputStream</literal> you need to specify the MIME type of the attachment "
+"(as that information is not carried as part of the file)."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:63
+#, no-c-format
+msgid ""
+"And it gets even better, you can attach a Seam generated PDF, or any "
+"standard JSF view, just by wrapping a <literal>&lt;m:attachment&gt;</"
+"literal> around the normal tags you would use:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:66
+#, no-c-format
+msgid ""
+"&lt;m:attachment fileName=\"tiny.pdf\"&gt;\n"
+"    &lt;p:"
+"document&gt;                                                      \n"
+"        A very tiny "
+"PDF                                                                                                \n"
+"    &lt;/p:document&gt;\n"
+"&lt;/m:attachment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:67
+#, no-c-format
+msgid ""
+"If you had a set of files you wanted to attach (for example a set of "
+"pictures loaded from a database) you can just use a <literal>&lt;ui:"
+"repeat&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:70
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{people}\" var=\"person\"&gt;\n"
+"    &lt;m:attachment value=\"#{person.photo}\" contentType=\"image/jpeg\"\n"
+"    fileName=\"#{person.firstname}_#{person.lastname}.jpg\"/&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:74
+#, no-c-format
+msgid "HTML/Text alternative part"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:75
+#, no-c-format
+msgid ""
+"Whilst most mail readers nowadays support HTML, some don't, so you can add a "
+"plain text alternative to your email body:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:78
+#, no-c-format
+msgid ""
+"&lt;m:body&gt;\n"
+"    &lt;f:facet name=\"alternative\"&gt;Sorry, your email reader can't show "
+"our fancy email, \n"
+"please go to http://labs.jboss.com/jbossseam to explore Seam.&lt;/f:"
+"facet&gt;\n"
+"&lt;/m:body&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:82
+#, no-c-format
+msgid "Multiple recipients"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:83
+#, no-c-format
+msgid ""
+"Often you'll want to send an email to a group of recipients (for example "
+"your users). All of the recipient mail tags can be placed inside a "
+"<literal>&lt;ui:repeat&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:86
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{allUsers} var=\"user\"&gt;\n"
+"    &lt;m:to name=\"#{user.firstname} #{user.lastname}\" address=\"#{user."
+"emailAddress}\" /&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:90
+#, no-c-format
+msgid "Multiple messages"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:91
+#, no-c-format
+msgid ""
+"Sometimes, however, you need to send a slightly different message to each "
+"recipient (e.g. a password reset). The best way to do this is to place the "
+"whole message inside a <literal>&lt;ui:repeat&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:94
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{people}\" var=\"p\"&gt;\n"
+"    &lt;m:message&gt;\n"
+"        &lt;m:from name=\"#{person.firstname} #{person.lastname}\"&gt;#"
+"{person.address}&lt;/m:from&gt;\n"
+"        &lt;m:to name=\"#{p.firstname}\"&gt;#{p.address}&lt;/m:to&gt;\n"
+"            ...\n"
+"    &lt;/m:message&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:98
+#, no-c-format
+msgid "Templating"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:99
+#, no-c-format
+msgid ""
+"The mail templating example shows that facelets templating Just Works with "
+"the Seam mail tags."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:102
+#, no-c-format
+msgid "Our <literal>template.xhtml</literal> contains:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:105
+#, no-c-format
+msgid ""
+"&lt;m:message&gt;\n"
+"   &lt;m:from name=\"Seam\" address=\"do-not-reply at jboss.com\" /&gt;\n"
+"   &lt;m:to name=\"#{person.firstname} #{person.lastname}\"&gt;#{person."
+"address}&lt;/m:to&gt;\n"
+"   &lt;m:subject&gt;#{subject}&lt;/m:subject&gt;\n"
+"   &lt;m:body&gt;\n"
+"       &lt;html&gt;\n"
+"           &lt;body&gt;\n"
+"               &lt;ui:insert name=\"body\"&gt;This is the default body, "
+"specified by the template.\n"
+"               &lt;/ui:insert&gt;\n"
+"           &lt;/body&gt;\n"
+"       &lt;/html&gt;\n"
+"   &lt;/m:body&gt;\n"
+"&lt;/m:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:106
+#, no-c-format
+msgid "Our <literal>templating.xhtml</literal> contains:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:109
+#, no-c-format
+msgid ""
+"&lt;ui:param name=\"subject\" value=\"Templating with Seam Mail\"/&gt;\n"
+"&lt;ui:define name=\"body\"&gt;\n"
+"    &lt;p&gt;This example demonstrates that you can easily use &lt;i&gt;"
+"facelets templating&lt;/i&gt; in email!&lt;/p&gt;\n"
+"&lt;/ui:define&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:113
+#, no-c-format
+msgid "Other Headers"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:114
+#, no-c-format
+msgid ""
+"Sometimes you'll want to add other headers to your email. Seam provides "
+"support for some (see <xref linkend=\"Email-Tags\"/>). For example, we can "
+"set the importance of the email, and ask for a read receipt:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:117
+#, no-c-format
+msgid ""
+"&lt;m:message xmlns:m=\"http://jboss.com/products/seam/mail\"\n"
+"           importance=\"low\"\n"
+"           requestReadReceipt=\"true\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:118
+#, no-c-format
+msgid ""
+"Otherise you can add any header to the message using the <literal>&lt;m:"
+"header&gt;</literal> tag:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:121
+#, no-c-format
+msgid "&lt;m:header name=\"X-Sent-From\" value=\"JBoss Seam\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:127
+#, no-c-format
+msgid "Receiving emails"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:128
+#, no-c-format
+msgid ""
+"If you are using EJB then you can use a MDB (Message Driven Bean) to receive "
+"email. Seam comes with an improved version of <literal>mail-ra.rar</literal> "
+"as distributed in JBoss AS; until the improvements make there way into a "
+"released version of JBoss AS, replacing the default <literal>rar</literal> "
+"with the one distributed with Seam is recommended."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:131
+#, no-c-format
+msgid "You can configure it like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:134
+#, no-c-format
+msgid ""
+"@MessageDriven(activationConfig={\n"
+"         @ActivationConfigProperty(propertyName=\"mailServer\", "
+"propertyValue=\"localhost\"),\n"
+"         @ActivationConfigProperty(propertyName=\"mailFolder\", "
+"propertyValue=\"INBOX\"),\n"
+"         @ActivationConfigProperty(propertyName=\"storeProtocol\", "
+"propertyValue=\"pop3\"),\n"
+"         @ActivationConfigProperty(propertyName=\"userName\", propertyValue="
+"\"seam\"),\n"
+"         @ActivationConfigProperty(propertyName=\"password\", propertyValue="
+"\"seam\")\n"
+"})\n"
+"@ResourceAdapter(\"mail-ra.rar\")\n"
+"@Name(\"mailListener\")\n"
+"public class MailListenerMDB implements MailListener {\n"
+"\n"
+"   @In(create=true)\n"
+"   private OrderProcessor orderProcessor;\n"
+"\n"
+"   public void onMessage(Message message) {\n"
+"      // Process the message\n"
+"      orderProcessor.process(message.getSubject());\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:135
+#, no-c-format
+msgid ""
+"Each message received will cause <literal>onMessage(Message message)</"
+"literal> to be called. Most seam annotations will work inside a MDB but you "
+"musn't access the persistence context."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:138
+#, no-c-format
+msgid ""
+"You can find more information on the default <literal>mail-ra.rar</literal> "
+"at <ulink url=\"http://wiki.jboss.org/wiki/Wiki.jsp?page=InboundJavaMail"
+"\">http://wiki.jboss.org/wiki/Wiki.jsp?page=InboundJavaMail</ulink>. The "
+"version distributed with Seam also includes a <literal>debug</literal> "
+"property to enable JavaMail debugging, a <literal>flush</literal> property "
+"(by default true) to disable flushing a <literal>POP3</literal> mailbox "
+"after successfullying delivering a message to your MDB and a <literal>port</"
+"literal> property to override the default TCP port. Beware that the api for "
+"this may be altered as changes make there way into JBoss AS."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:141
+#, no-c-format
+msgid ""
+"If you aren't using JBoss AS you can still use <literal>mail-ra.rar</"
+"literal> (included with Seam in the mail directory), or you may find your "
+"application server includes a similar adapter."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:147
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:148
+#, no-c-format
+msgid ""
+"To include Email support in your application, include <literal>jboss-seam-"
+"mail.jar</literal> in your WEB-INF/lib directory. If you are using JBoss AS "
+"there is no further configuration needed to use Seam's email support. "
+"Otherwise you need to make sure you have the JavaMail API, an implementation "
+"of the JavaMail API present (the API and impl used in JBoss AS are "
+"distributed with seam as <literal>lib/mail.jar</literal>), and a copy of the "
+"Java Activation Framework (distributed with seam as <literal>lib/activation."
+"jar</literal>."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:151
+#, no-c-format
+msgid ""
+"The Seam Email module requires the use of Facelets as the view technology. "
+"Future versions of the library may also support the use of JSP. "
+"Additionally, it requires the use of the seam-ui package."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:154
+#, no-c-format
+msgid ""
+"The <literal>mailSession</literal> component uses JavaMail to talk to a "
+"'real' SMTP server."
+msgstr ""
+
+#. Tag: literal
+#: Mail.xml:158
+#, no-c-format
+msgid "mailSession"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:159
+#, no-c-format
+msgid ""
+"A JavaMail Session may be available via a JNDI lookup if you are working in "
+"an JEE environment or you can use a Seam configured Session."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:162
+#, no-c-format
+msgid ""
+"The mailSession component's properties are described in more detail in <xref "
+"linkend=\"Built_in_Seam_components-Mail_related_components\"/>."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:166
+#, no-c-format
+msgid "JNDI lookup in JBoss AS"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:167
+#, no-c-format
+msgid ""
+"The JBossAS <literal>deploy/mail-service.xml</literal> configures a JavaMail "
+"session binding into JNDI. The default service configuration will need "
+"altering for your network. <ulink url=\"http://wiki.jboss.org/wiki/Wiki.jsp?"
+"page=JavaMail\">http://wiki.jboss.org/wiki/Wiki.jsp?page=JavaMail</ulink> "
+"describes the service in more detail."
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:170
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"        xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"        xmlns:mail=\"http://jboss.com/products/seam/mail\"&gt;\n"
+"        \n"
+"    &lt;mail:mail-session session-jndi-name=\"java:/Mail\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:171
+#, no-c-format
+msgid ""
+"Here we tell Seam to get the mail session bound to <literal>java:/Mail</"
+"literal> from JNDI."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:177
+#, no-c-format
+msgid "Seam configured Session"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:178
+#, no-c-format
+msgid ""
+"A mail session can be configured via <literal>components.xml</literal>. Here "
+"we tell Seam to use <literal>smtp.example.com</literal> as the smtp server,"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:181
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"        xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"        xmlns:mail=\"http://jboss.com/products/seam/mail\"&gt;\n"
+"        \n"
+"    &lt;mail:mail-session host=\"smtp.example.com\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:189
+#, no-c-format
+msgid "Tags"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:190
+#, no-c-format
+msgid ""
+"Emails are generated using tags in the <literal>http://jboss.com/products/"
+"seam/mail</literal> namespace. Documents should always have the "
+"<literal>message</literal> tag at the root of the message. The message tag "
+"prepares Seam to generate an email."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:193
+#, no-c-format
+msgid ""
+"The standard templating tags of facelets can be used as normal. Inside the "
+"body you can use any JSF tag which doesn't require access to external "
+"resources (stylesheets, javascript)."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:198
+#, no-c-format
+msgid "&lt;m:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:200
+#, no-c-format
+msgid "Root tag of a mail message"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:205
+#, no-c-format
+msgid ""
+"<literal>importance</literal> &mdash; low, normal or high. By default "
+"normal, this sets the importance of the mail message."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:210
+#, no-c-format
+msgid ""
+"<literal>precedence</literal> &mdash; sets the precedence of the message (e."
+"g. bulk)."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:215
+#, no-c-format
+msgid ""
+"<literal>requestReadReceipt</literal> &mdash; by default false, if set, a "
+"read receipt will be request will be added, with the read receipt being sent "
+"to the <literal>From:</literal> address."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:220
+#, no-c-format
+msgid ""
+"<literal>urlBase</literal> &mdash; If set, the value is prepended to the "
+"<literal>requestContextPath</literal> allowing you to use components such as "
+"<literal>&lt;h:graphicImage&gt;</literal> in your emails."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:228
+#, no-c-format
+msgid "&lt;m:from&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:230
+#, no-c-format
+msgid ""
+"Set's the From: address for the email. You can only have one of these per "
+"email."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:235
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the name the email should come from."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:240 Mail.xml:255
+#, no-c-format
+msgid ""
+"<literal>address</literal> &mdash; the email address the email should come "
+"from."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:248
+#, no-c-format
+msgid "&lt;m:replyTo&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:250
+#, no-c-format
+msgid ""
+"Set's the Reply-to: address for the email. You can only have one of these "
+"per email."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:263
+#, no-c-format
+msgid "&lt;m:to&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:265
+#, no-c-format
+msgid ""
+"Add a recipient to the email. Use multiple &lt;m:to&gt; tags for multiple "
+"recipients. This tag can be safely placed inside a repeat tag such as &lt;ui:"
+"repeat&gt;."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:270 Mail.xml:290 Mail.xml:310
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the name of the recipient."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:275 Mail.xml:295 Mail.xml:315
+#, no-c-format
+msgid "<literal>address</literal> &mdash; the email address of the recipient."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:283
+#, no-c-format
+msgid "&lt;m:cc&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:285
+#, no-c-format
+msgid ""
+"Add a cc recipient to the email. Use multiple &lt;m:cc&gt; tags for multiple "
+"ccs. This tag can be safely placed inside a repeat tag such as &lt;ui:"
+"repeat&gt;."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:303
+#, no-c-format
+msgid "&lt;m:bcc&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:305
+#, no-c-format
+msgid ""
+"Add a bcc recipient to the email. Use multiple &lt;m:bcc&gt; tags for "
+"multiple bccs. This tag can be safely placed inside a repeat tag such as &lt;"
+"ui:repeat&gt;."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:323
+#, no-c-format
+msgid "&lt;m:header&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:325
+#, no-c-format
+msgid ""
+"Add a header to the email (e.g. <literal>X-Sent-From: JBoss Seam</literal>"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:330
+#, no-c-format
+msgid ""
+"<literal>name</literal> &mdash; The name of the header to add (e.g. "
+"<literal>X-Sent-From</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:335
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; The value of the header to add (e.g. "
+"<literal>JBoss Seam</literal>)."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:343
+#, no-c-format
+msgid "&lt;m:attachment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:345
+#, no-c-format
+msgid "Add an attachment to the email."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:350
+#, no-c-format
+msgid "<literal>value</literal> &mdash; The file to attach:"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:355
+#, no-c-format
+msgid ""
+"<literal>String</literal> &mdash; A <literal>String</literal> is interpreted "
+"as a path to file within the classpath"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:360
+#, no-c-format
+msgid ""
+"<literal>java.io.File</literal> &mdash; An EL expression can reference a "
+"<literal>File</literal> object"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:365
+#, no-c-format
+msgid ""
+"<literal>java.net.URL</literal> &mdash; An EL expression can reference a "
+"<literal>URL</literal> object"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:370
+#, no-c-format
+msgid ""
+"<literal>java.io.InputStream</literal> &mdash; An EL expression can "
+"reference an <literal>InputStream</literal>. In this case both a "
+"<literal>fileName</literal> and a <literal>contentType</literal> must be "
+"specified."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:375
+#, no-c-format
+msgid ""
+"<literal>byte[]</literal> &mdash; An EL expression can reference an "
+"<literal>byte[]</literal>. In this case both a <literal>fileName</literal> "
+"and a <literal>contentType</literal> must be specified."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:380
+#, no-c-format
+msgid "If the value attribute is ommitted:"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:385
+#, no-c-format
+msgid ""
+"If this tag contains a <literal>&lt;p:document&gt;</literal> tag, the "
+"document described will be generated and attached to the email. A "
+"<literal>fileName</literal> should be specfied."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:390
+#, no-c-format
+msgid ""
+"If this tag contains other JSF tags a HTML document will be generated from "
+"them and attached to the email. A <literal>fileName</literal> should be "
+"specfied."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:397
+#, no-c-format
+msgid ""
+"<literal>fileName</literal> &mdash; Specify the file name to use for the "
+"attached file."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:402
+#, no-c-format
+msgid ""
+"<literal>contentType</literal> &mdash; Specify the MIME type of the attached "
+"file"
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:410
+#, no-c-format
+msgid "&lt;m:subject&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:412
+#, no-c-format
+msgid "Set's the subject for the email."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:418
+#, no-c-format
+msgid "&lt;m:body&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:420
+#, no-c-format
+msgid ""
+"Set's the body for the email. Supports an <literal>alternative</literal> "
+"facet which, if an HTML email is generated can contain alternative text for "
+"a mail reader which doesn't support html."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:425
+#, no-c-format
+msgid ""
+"<literal>type</literal> &mdash; If set to <literal>plain</literal> then a "
+"plain text email will be generated otherwise an HTML email is generated."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Persistence.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Persistence.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Persistence.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,750 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Persistence.xml:10
+#, no-c-format
+msgid "Seam and Object/Relational Mapping"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:11
+#, no-c-format
+msgid ""
+"Seam provides extensive support for the two most popular persistence "
+"architectures for Java: Hibernate3, and the Java Persistence API introduced "
+"with EJB 3.0. Seam's unique state-management architecture allows the most "
+"sophisticated ORM integration of any web application framework."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:15
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:16
+#, no-c-format
+msgid ""
+"Seam grew out of the frustration of the Hibernate team with the "
+"statelessness typical of the previous generation of Java application "
+"architectures. The state management architecture of Seam was originally "
+"designed to solve problems relating to persistence&mdash;in particular "
+"problems associated with <emphasis>optimistic transaction processing</"
+"emphasis>. Scalable online applications always use optimistic transactions. "
+"An atomic (database/JTA) level transaction should not span a user "
+"interaction unless the application is designed to support only a very small "
+"number of concurrent clients. But almost all interesting work involves first "
+"displaying data to a user, and then, slightly later, updating the same data. "
+"So Hibernate was designed to support the idea of a persistence context which "
+"spanned an optimistic transaction."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:19
+#, no-c-format
+msgid ""
+"Unfortunately, the so-called \"stateless\" architectures that preceded Seam "
+"and EJB 3.0 had no construct for representing an optimistic transaction. So, "
+"instead, these architectures provided persistence contexts scoped to the "
+"atomic transaction. Of course, this resulted in many problems for users, and "
+"is the cause of the number one user complaint about Hibernate: the dreaded "
+"<literal>LazyInitializationException</literal>. What we need is a construct "
+"for representing an optimistic transaction in the application tier."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:22
+#, no-c-format
+msgid ""
+"EJB 3.0 recognizes this problem, and introduces the idea of a stateful "
+"component (a stateful session bean) with an <emphasis>extended persistence "
+"context</emphasis> scoped to the lifetime of the component. This is a "
+"partial solution to the problem (and is a useful construct in and of itself) "
+"however there are two problems:"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:27
+#, no-c-format
+msgid ""
+"The lifecycle of the stateful session bean must be managed manually via code "
+"in the web tier (it turns out that this is a subtle problem and much more "
+"difficult in practice than it sounds)."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:32
+#, no-c-format
+msgid ""
+"Propagation of the persistence context between stateful components in the "
+"same optimistic transaction is possible, but tricky."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:37
+#, no-c-format
+msgid ""
+"Seam solves the first problem by providing conversations, and stateful "
+"session bean components scoped to the conversation. (Most conversations "
+"actually represent optimistic transactions in the data layer.) This is "
+"sufficient for many simple applications (such as the Seam booking demo) "
+"where persistence context propagation is not needed. For more complex "
+"applications, with many loosly-interacting components in each conversation, "
+"propagation of the persistence context across components becomes an "
+"important issue. So Seam extends the persistence context management model of "
+"EJB 3.0, to provide conversation-scoped extended persistence contexts."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:43
+#, no-c-format
+msgid "Seam managed transactions"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:44
+#, no-c-format
+msgid ""
+"EJB session beans feature declarative transaction management. The EJB "
+"container is able to start a transaction transparently when the bean is "
+"invoked, and end it when the invocation ends. If we write a session bean "
+"method that acts as a JSF action listener, we can do all the work associated "
+"with that action in one transaction, and be sure that it is committed or "
+"rolled back when we finish processing the action. This is a great feature, "
+"and all that is needed by some Seam applications."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:47
+#, no-c-format
+msgid ""
+"However, there is a problem with this approach. A Seam application may not "
+"perform all data access for a request from a single method call to a session "
+"bean."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:52
+#, no-c-format
+msgid ""
+"The request might require processing by several loosly-coupled components, "
+"each of which is called independently from the web layer. It is common to "
+"see several or even many calls per request from the web layer to EJB "
+"components in Seam."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:57
+#, no-c-format
+msgid "Rendering of the view might require lazy fetching of associations."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:62
+#, no-c-format
+msgid ""
+"The more transactions per request, the more likely we are to encounter "
+"atomicity and isolation problems when our application is processing many "
+"concurrent requests. Certainly, all write operations should occur in the "
+"same transaction!"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:65
+#, no-c-format
+msgid ""
+"Hibernate users developed the <emphasis>\"open session in view\"</emphasis> "
+"pattern to work around this problem. In the Hibernate community, \"open "
+"session in view\" was historically even more important because frameworks "
+"like Spring use transaction-scoped persistence contexts. So rendering the "
+"view would cause <literal>LazyInitializationException</literal>s when "
+"unfetched associations were accessed."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:68
+#, no-c-format
+msgid ""
+"This pattern is usually implemented as a single transaction which spans the "
+"entire request. There are several problems with this implementation, the "
+"most serious being that we can never be sure that a transaction is "
+"successful until we commit it&mdash;but by the time the \"open session in "
+"view\" transaction is committed, the view is fully rendered, and the "
+"rendered response may already have been flushed to the client. How can we "
+"notify the user that their transaction was unsuccessful?"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:71
+#, no-c-format
+msgid ""
+"Seam solves both the transaction isolation problem and the association "
+"fetching problem, while working around the problems with \"open session in "
+"view\". The solution comes in two parts:"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:76
+#, no-c-format
+msgid ""
+"use an extended persistence context that is scoped to the conversation, "
+"instead of to the transaction"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:81
+#, no-c-format
+msgid ""
+"use two transactions per request; the first spans the beginning of the "
+"update model values phase until the end of the invoke application phase; the "
+"second spans the render response phase"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:86
+#, no-c-format
+msgid ""
+"In the next section, we'll tell you how to set up a conversation-scope "
+"persistence context. But first we need to tell you how to enable Seam "
+"transaction management. Note that you can use conversation-scoped "
+"persistence contexts without Seam transaction management, and there are good "
+"reasons to use Seam transaction management even when you're not using Seam-"
+"managed persistence contexts. However, the two facilities were designed to "
+"work together, and work best when used together."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:90
+#, no-c-format
+msgid "Enabling Seam-managed transactions"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:91
+#, no-c-format
+msgid ""
+"To make use of <emphasis>Seam managed transactions</emphasis>, you need to "
+"use <literal>TransactionalSeamPhaseListener</literal> in place of "
+"<literal>SeamPhaseListener</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:94
+#, no-c-format
+msgid ""
+"&lt;lifecycle&gt;\n"
+"     &lt;phase-listener&gt;\n"
+"        org.jboss.seam.jsf.TransactionalSeamPhaseListener\n"
+"    &lt;/phase-listener&gt;\n"
+"&lt;/lifecycle&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:95
+#, no-c-format
+msgid ""
+"Seam transaction management is useful even if you're using EJB 3.0 container-"
+"managed persistence contexts. But it is especially useful if you use Seam "
+"outside a Java EE 5 environment, or in any other case where you would use a "
+"Seam-managed persistence context."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:103
+#, no-c-format
+msgid "Seam-managed persistence contexts"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:104
+#, no-c-format
+msgid ""
+"If you're using Seam outside of a Java EE 5 environment, you can't rely upon "
+"the container to manage the persistence context lifecycle for you. Even if "
+"you are in an EE 5 environment, you might have a complex application with "
+"many loosly coupled components that collaborate together in the scope of a "
+"single conversation, and in this case you might find that propagation of the "
+"persistence context between component is tricky and error-prone."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:107
+#, no-c-format
+msgid ""
+"In either case, you'll need to use a <emphasis>managed persistence context</"
+"emphasis> (for JPA) or a <emphasis>managed session</emphasis> (for "
+"Hibernate) in your components. A Seam-managed persistence context is just a "
+"built-in Seam component that manages an instance of <literal>EntityManager</"
+"literal> or <literal>Session</literal> in the conversation context. You can "
+"inject it with <literal>@In</literal>."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:110
+#, no-c-format
+msgid ""
+"Seam-managed persistence contexts are extremely efficient in a clustered "
+"environment. Seam is able to perform an optimization that EJB 3.0 "
+"specification does not allow containers to use for container-managed "
+"extended persistence contexts. Seam supports transparent failover of "
+"extended persisence contexts, without the need to replicate any persistence "
+"context state between nodes. (We hope to fix this oversight in the next "
+"revision of the EJB spec.)"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:114
+#, no-c-format
+msgid "Using a Seam-managed persistence context with JPA"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:115
+#, no-c-format
+msgid ""
+"Configuring a managed persistence context is easy. In <literal>components."
+"xml</literal>, we can write:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:118
+#, no-c-format
+msgid ""
+"&lt;core:managed-persistence-context name=\"bookingDatabase\" \n"
+"                           auto-create=\"true\"\n"
+"            persistence-unit-jndi-name=\"java:/EntityManagerFactories/"
+"bookingData\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:119
+#, no-c-format
+msgid ""
+"This configuration creates a conversation-scoped Seam component named "
+"<literal>bookingDatabase</literal> that manages the lifecycle of "
+"<literal>EntityManager</literal> instances for the persistence unit "
+"(<literal>EntityManagerFactory</literal> instance) with JNDI name "
+"<literal>java:/EntityManagerFactories/bookingData</literal>."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:122
+#, no-c-format
+msgid ""
+"Of course, you need to make sure that you have bound the "
+"<literal>EntityManagerFactory</literal> into JNDI. In JBoss, you can do this "
+"by adding the following property setting to <literal>persistence.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:125
+#, no-c-format
+msgid ""
+"&lt;property name=\"jboss.entity.manager.factory.jndi.name\" \n"
+"          value=\"java:/EntityManagerFactories/bookingData\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:126
+#, no-c-format
+msgid "Now we can have our <literal>EntityManager</literal> injected using:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:129
+#, no-c-format
+msgid "@In EntityManager bookingDatabase;"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:133
+#, no-c-format
+msgid "Using a Seam-managed Hibernate session"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:134
+#, no-c-format
+msgid ""
+"Seam-managed Hibernate sessions are similar. In <literal>components.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:137
+#, no-c-format
+msgid ""
+"&lt;core:hibernate-session-factory name=\"hibernateSessionFactory\"/&gt;\n"
+"\n"
+"&lt;core:managed-hibernate-session name=\"bookingDatabase\" \n"
+"                         auto-create=\"true\"\n"
+"           session-factory-jndi-name=\"java:/bookingSessionFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:138
+#, no-c-format
+msgid ""
+"Where <literal>java:/bookingSessionFactory</literal> is the name of the "
+"session factory specified in <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:141
+#, no-c-format
+msgid ""
+"&lt;session-factory name=\"java:/bookingSessionFactory\"&gt;\n"
+"    &lt;property name=\"transaction.flush_before_completion\"&gt;true&lt;/"
+"property&gt;\n"
+"    &lt;property name=\"connection.release_mode\"&gt;after_statement&lt;/"
+"property&gt;\n"
+"    &lt;property name=\"transaction.manager_lookup_class\"&gt;\n"
+"        org.hibernate.transaction.JBossTransactionManagerLookup\n"
+"    &lt;/property&gt;\n"
+"    &lt;property name=\"transaction.factory_class\"&gt;\n"
+"        org.hibernate.transaction.JTATransactionFactory\n"
+"    &lt;/property&gt;\n"
+"    &lt;property name=\"connection.datasource\"&gt;java:/"
+"bookingDatasource&lt;/property&gt;\n"
+"    ...\n"
+"&lt;/session-factory&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:142
+#, no-c-format
+msgid ""
+"Note that Seam does not flush the session, so you should always enable "
+"<literal>hibernate.transaction.flush_before_completion</literal> to ensure "
+"that the session is automatically flushed before the JTA transaction commits."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:145
+#, no-c-format
+msgid ""
+"We can now have a managed Hibernate <literal>Session</literal> injected into "
+"our JavaBean components using the following code:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:148
+#, no-c-format
+msgid "@In Session bookingDatabase;"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:152
+#, no-c-format
+msgid "Seam-managed persistence contexts and atomic conversations"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:153
+#, no-c-format
+msgid ""
+"Persistence contexts scoped to the conversation allows you to program "
+"optimistic transactions that span multiple requests to the server without "
+"the need to use the <literal>merge()</literal> operation , without the need "
+"to re-load data at the beginning of each request, and without the need to "
+"wrestle with the <literal>LazyInitializationException</literal> or "
+"<literal>NonUniqueObjectException</literal>."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:156
+#, no-c-format
+msgid ""
+"As with any optimistic transaction management, transaction isolation and "
+"consistency can be achieved via use of optimistic locking. Fortunately, both "
+"Hibernate and EJB 3.0 make it very easy to use optimistic locking, by "
+"providing the <literal>@Version</literal> annotation."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:159
+#, no-c-format
+msgid ""
+"By default, the persistence context is flushed (synchronized with the "
+"database) at the end of each transaction. This is sometimes the desired "
+"behavior. But very often, we would prefer that all changes are held in "
+"memory and only written to the database when the conversation ends "
+"successfully. This allows for truly atomic conversations. As the result of a "
+"truly stupid and shortsighted decision by certain non-JBoss, non-Sun and non-"
+"Sybase members of the EJB 3.0 expert group, there is currently no simple, "
+"usable and portable way to implement atomic conversations using EJB 3.0 "
+"persistence. However, Hibernate provides this feature as a vendor extension "
+"to the <literal>FlushModeType</literal>s defined by the specification, and "
+"it is our expectation that other vendors will soon provide a similar "
+"extension."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:162
+#, no-c-format
+msgid ""
+"Seam lets you specify <literal>FlushModeType.MANUAL</literal> when beginning "
+"a conversation. Currently, this works only when Hibernate is the underlying "
+"persistence provider, but we plan to support other equivalent vendor "
+"extensions."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:165
+#, no-c-format
+msgid ""
+"@In EntityManager em; //a Seam-managed persistence context\n"
+"\n"
+"@Begin(flushMode=MANUAL)\n"
+"public void beginClaimWizard() {\n"
+"    claim = em.find(Claim.class, claimId);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:166
+#, no-c-format
+msgid ""
+"Now, the <literal>claim</literal> object remains managed by the persistence "
+"context for the rest ot the conversation. We can make changes to the claim:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:169
+#, no-c-format
+msgid ""
+"public void addPartyToClaim() {\n"
+"    Party party = ....;\n"
+"    claim.addParty(party);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:170
+#, no-c-format
+msgid ""
+"But these changes will not be flushed to the database until we explicitly "
+"force the flush to occur:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:173
+#, no-c-format
+msgid ""
+"@End\n"
+"public void commitClaim() {\n"
+"    em.flush();\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:179
+#, no-c-format
+msgid "Using the JPA \"delegate\""
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:180
+#, no-c-format
+msgid ""
+"The <literal>EntityManager</literal> interface lets you access a vendor-"
+"specific API via the <literal>getDelegate()</literal> method. Naturally, the "
+"most interesting vendor is Hibernate, and the most powerful delegate "
+"interface is <literal>org.hibernate.Session</literal>. You'd be nuts to use "
+"anything else. Trust me, I'm not biased at all."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:183
+#, no-c-format
+msgid ""
+"But regardless of whether you're using Hibernate (genius!) or something else "
+"(masochist, or just not very bright), you'll almost certainly want to use "
+"the delegate in your Seam components from time to time. One approach would "
+"be the following:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:186
+#, no-c-format
+msgid ""
+"@In EntityManager entityManager;\n"
+"\n"
+"@Create\n"
+"public void init() {\n"
+"    ( (Session) entityManager.getDelegate() ).enableFilter(\"currentVersions"
+"\");\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:187
+#, no-c-format
+msgid ""
+"But typecasts are unquestionably the ugliest syntax in the Java language, so "
+"most people avoid them whenever possible. Here's a different way to get at "
+"the delegate. First, add the following line to <literal>components.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:190
+#, no-c-format
+msgid ""
+"&lt;factory name=\"session\" \n"
+"         scope=\"STATELESS\" \n"
+"         auto-create=\"true\" \n"
+"         value=\"#{entityManager.delegate}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:191
+#, no-c-format
+msgid "Now we can inject the session directly:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:194
+#, no-c-format
+msgid ""
+"@In Session session;\n"
+"\n"
+"@Create\n"
+"public void init() {\n"
+"    session.enableFilter(\"currentVersions\");\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:198
+#, no-c-format
+msgid "Using EL in EJB-QL/HQL"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:199
+#, no-c-format
+msgid ""
+"Seam proxies the <literal>EntityManager</literal> or <literal>Session</"
+"literal> object whenever you use a Seam-managed persistence context or "
+"inject a container managed persistence context using "
+"<literal>@PersistenceContext</literal>. This lets you use EL expressions in "
+"your query strings, safely and efficiently. For example, this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:202
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=#{user.username}\")\n"
+"         .getSingleResult();"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:203
+#, no-c-format
+msgid "is equivalent to:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:206
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getSingleResult();"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:207
+#, no-c-format
+msgid "Of course, you should never, ever write it like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:210
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=\" + user.getUsername"
+"()) //BAD!\n"
+"         .getSingleResult();"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:211
+#, no-c-format
+msgid "(It is inefficient and vulnerable to SQL injection attacks.)"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:217
+#, no-c-format
+msgid "Using Hibernate filters"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:218
+#, no-c-format
+msgid ""
+"The coolest, and most unique, feature of Hibernate is <emphasis>filters</"
+"emphasis>. Filters let you provide a restricted view of the data in the "
+"database. You can find out more about filters in the Hibernate "
+"documentation. But we thought we'd mention an easy way to incorporate "
+"filters into a Seam application, one that works especially well with the "
+"Seam Application Framework."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:221
+#, no-c-format
+msgid ""
+"Seam-managed persistence contexts may have a list of filters defined, which "
+"will be enabled whenever an <literal>EntityManager</literal> or Hibernate "
+"<literal>Session</literal> is first created. (Of course, they may only be "
+"used when Hibernate is the underlying persistence provider.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:224
+#, no-c-format
+msgid ""
+"&lt;core:filter name=\"regionFilter\"&gt;\n"
+"    &lt;core:name&gt;region&lt;/core:name&gt;\n"
+"    &lt;core:parameters&gt;\n"
+"        &lt;key&gt;regionCode&lt;/key&gt;\n"
+"        &lt;value&gt;#{region.code}&lt;/value&gt;\n"
+"    &lt;/core:parameters&gt;\n"
+"&lt;/core:filter&gt;\n"
+"\n"
+"&lt;core:filter name=\"currentFilter\"&gt;\n"
+"    &lt;core:name&gt;current&lt;/core:name&gt;\n"
+"    &lt;core:parameters&gt;\n"
+"        &lt;key&gt;date&lt;/key&gt;\n"
+"        &lt;value&gt;#{currentDate}&lt;/value&gt;\n"
+"    &lt;/core:parameters&gt;\n"
+"&lt;/core:filter&gt;\n"
+"\n"
+"&lt;core:managed-persistence-context name=\"personDatabase\"\n"
+"    persistence-unit-jndi-name=\"java:/EntityManagerFactories/personDatabase"
+"\"&gt;\n"
+"    &lt;core:filters&gt;\n"
+"        &lt;value&gt;#{regionFilter}&lt;/value&gt;\n"
+"        &lt;value&gt;#{currentFilter}&lt;/value&gt;\n"
+"    &lt;/core:filters&gt;\n"
+"&lt;/core:managed-persistence-context&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Remoting.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Remoting.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Remoting.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1458 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Remoting.xml:10
+#, no-c-format
+msgid "Remoting"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:11
+#, no-c-format
+msgid ""
+"Seam provides a convenient method of remotely accessing components from a "
+"web page, using AJAX (Asynchronous Javascript and XML). The framework for "
+"this functionality is provided with almost no up-front development effort - "
+"your components only require simple annotating to become accessible via "
+"AJAX. This chapter describes the steps required to build an AJAX-enabled web "
+"page, then goes on to explain the features of the Seam Remoting framework in "
+"more detail."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:14 Remoting.xml:296
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:15
+#, no-c-format
+msgid ""
+"To use remoting, the Seam Resource servlet must first be configured in your "
+"<literal>web.xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:18
+#, no-c-format
+msgid ""
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"  &lt;/servlet&gt;\n"
+"\n"
+"  &lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"  &lt;/servlet-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:19
+#, no-c-format
+msgid ""
+"The next step is to import the necessary Javascript into your web page. "
+"There are a minimum of two scripts that must be imported. The first one "
+"contains all the client-side framework code that enables remoting "
+"functionality:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:22
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/resource/"
+"remote.js\"&gt;&lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:23
+#, no-c-format
+msgid ""
+"The second script contains the stubs and type definitions for the components "
+"you wish to call. It is generated dynamically based on the local interface "
+"of your components, and includes type definitions for all of the classes "
+"that can be used to call the remotable methods of the interface. The name of "
+"the script reflects the name of your component. For example, if you have a "
+"stateless session bean annotated with <literal>@Name(\"customerAction\")</"
+"literal>, then your script tag should look like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:26
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?customerAction\"&gt;\n"
+"      &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:27
+#, no-c-format
+msgid ""
+"If you wish to access more than one component from the same page, then "
+"include them all as parameters of your script tag:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:30
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" \n"
+"      src=\"seam/resource/remoting/interface.js?customerAction&amp;"
+"accountAction\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:31
+#, no-c-format
+msgid "The \"Seam\" object"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:32
+#, no-c-format
+msgid ""
+"Client-side interaction with your components is all performed via the "
+"<literal>Seam</literal> Javascript object. This object is defined in "
+"<literal>remote.js</literal>, and you'll be using it to make asynchronous "
+"calls against your component. It is split into two areas of functionality; "
+"<literal>Seam.Component</literal> contains methods for working with "
+"components and <literal>Seam.Remoting</literal> contains methods for "
+"executing remote requests. The easiest way to become familiar with this "
+"object is to start with a simple example."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:35
+#, no-c-format
+msgid "A Hello World example"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:36
+#, no-c-format
+msgid ""
+"Let's step through a simple example to see how the <literal>Seam</literal> "
+"object works. First of all, let's create a new Seam component called "
+"<literal>helloAction</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:39
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"  @Name(\"helloAction\")\n"
+"  public class HelloAction implements HelloLocal {\n"
+"    public String sayHello(String name) {\n"
+"      return \"Hello, \" + name;\n"
+"    }\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:40
+#, no-c-format
+msgid ""
+"You also need to create a local interface for our new component - take "
+"special note of the <literal>@WebRemote</literal> annotation, as it's "
+"required to make our method accessible via remoting:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:43
+#, no-c-format
+msgid ""
+"@Local\n"
+"  public interface HelloLocal {\n"
+"    @WebRemote\n"
+"    public String sayHello(String name);\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:44
+#, no-c-format
+msgid ""
+"That's all the server-side code we need to write. Now for our web page - "
+"create a new page and import the following scripts:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:47
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/resource/"
+"remote.js\"&gt;&lt;/script&gt;\n"
+"  &lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?helloAction\"&gt;&lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:48
+#, no-c-format
+msgid ""
+"To make this a fully interactive user experience, let's add a button to our "
+"page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:51
+#, no-c-format
+msgid ""
+"&lt;button onclick=\"javascript:sayHello()\"&gt;Say Hello&lt;/button&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:52
+#, no-c-format
+msgid ""
+"We'll also need to add some more script to make our button actually do "
+"something when it's clicked:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:55
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\"&gt;\n"
+"    //&lt;![CDATA[\n"
+"\n"
+"    function sayHello() {\n"
+"      var name = prompt(\"What is your name?\");\n"
+"      Seam.Component.getInstance(\"helloAction\").sayHello(name, "
+"sayHelloCallback);\n"
+"    }\n"
+"\n"
+"    function sayHelloCallback(result) {\n"
+"      alert(result);\n"
+"    }\n"
+"\n"
+"    // ]]&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:56
+#, no-c-format
+msgid ""
+"We're done! Deploy your application and browse to your page. Click the "
+"button, and enter a name when prompted. A message box will display the hello "
+"message confirming that the call was successful. If you want to save some "
+"time, you'll find the full source code for this Hello World example in "
+"Seam's <literal>/examples/remoting/helloworld</literal> directory."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:59
+#, no-c-format
+msgid ""
+"So what does the code of our script actually do? Let's break it down into "
+"smaller pieces. To start with, you can see from the Javascript code listing "
+"that we have implemented two methods - the first method is responsible for "
+"prompting the user for their name and then making a remote request. Take a "
+"look at the following line:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:62
+#, no-c-format
+msgid ""
+"Seam.Component.getInstance(\"helloAction\").sayHello(name, sayHelloCallback);"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:63
+#, no-c-format
+msgid ""
+"The first section of this line, <literal>Seam.Component.getInstance"
+"(\"helloAction\")</literal> returns a proxy, or \"stub\" for our "
+"<literal>helloAction</literal> component. We can invoke the methods of our "
+"component against this stub, which is exactly what happens with the "
+"remainder of the line: <literal>sayHello(name, sayHelloCallback);</literal>."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:66
+#, no-c-format
+msgid ""
+"What this line of code in its completeness does, is invoke the "
+"<literal>sayHello</literal> method of our component, passing in "
+"<literal>name</literal> as a parameter. The second parameter, "
+"<literal>sayHelloCallback</literal> isn't a parameter of our component's "
+"<literal>sayHello</literal> method, instead it tells the Seam Remoting "
+"framework that once it receives the response to our request, it should pass "
+"it to the <literal>sayHelloCallback</literal> Javascript method. This "
+"callback parameter is entirely optional, so feel free to leave it out if "
+"you're calling a method with a <literal>void</literal> return type or if you "
+"don't care about the result."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:69
+#, no-c-format
+msgid ""
+"The <literal>sayHelloCallback</literal> method, once receiving the response "
+"to our remote request then pops up an alert message displaying the result of "
+"our method call."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:72
+#, no-c-format
+msgid "Seam.Component"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:73
+#, no-c-format
+msgid ""
+"The <literal>Seam.Component</literal> Javascript object provides a number of "
+"client-side methods for working with your Seam components. The two main "
+"methods, <literal>newInstance()</literal> and <literal>getInstance()</"
+"literal> are documented in the following sections however their main "
+"difference is that <literal>newInstance()</literal> will always create a new "
+"instance of a component type, and <literal>getInstance()</literal> will "
+"return a singleton instance."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:76
+#, no-c-format
+msgid "Seam.Component.newInstance()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:77
+#, no-c-format
+msgid ""
+"Use this method to create a new instance of an entity or Javabean component. "
+"The object returned by this method will have the same getter/setter methods "
+"as its server-side counterpart, or alternatively if you wish you can access "
+"its fields directly. Take the following Seam entity component for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:80
+#, no-c-format
+msgid ""
+"@Name(\"customer\")\n"
+"  @Entity\n"
+"  public class Customer implements Serializable\n"
+"  {\n"
+"    private Integer customerId;\n"
+"    private String firstName;\n"
+"    private String lastName;\n"
+"    \n"
+"    @Column public Integer getCustomerId() { \n"
+"      return customerId; \n"
+"    }\n"
+"    \n"
+"    public void setCustomerId(Integer customerId} { \n"
+"      this.customerId = customerId; \n"
+"    }\n"
+"    \n"
+"    @Column public String getFirstName() { \n"
+"      return firstName; \n"
+"    }\n"
+"    \n"
+"    public void setFirstName(String firstName) {\n"
+"      this.firstName = firstName; \n"
+"    }\n"
+"    \n"
+"    @Column public String getLastName() {\n"
+"      return lastName;\n"
+"    }\n"
+"    \n"
+"    public void setLastName(String lastName) {\n"
+"      this.lastName = lastName;\n"
+"    }\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:81
+#, no-c-format
+msgid "To create a client-side Customer you would write the following code:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:84
+#, no-c-format
+msgid "var customer = Seam.Component.newInstance(\"customer\");"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:85
+#, no-c-format
+msgid "Then from here you can set the fields of the customer object:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:88
+#, no-c-format
+msgid ""
+"customer.setFirstName(\"John\");\n"
+"  // Or you can set the fields directly\n"
+"  customer.lastName = \"Smith\";"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:89
+#, no-c-format
+msgid "Seam.Component.getInstance()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:90
+#, no-c-format
+msgid ""
+"The <literal>getInstance()</literal> method is used to get a reference to a "
+"Seam session bean component stub, which can then be used to remotely execute "
+"methods against your component. This method returns a singleton for the "
+"specified component, so calling it twice in a row with the same component "
+"name will return the same instance of the component."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:93
+#, no-c-format
+msgid ""
+"To continue our example from before, if we have created a new "
+"<literal>customer</literal> and we now wish to save it, we would pass it to "
+"the <literal>saveCustomer()</literal> method of our <literal>customerAction</"
+"literal> component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:96
+#, no-c-format
+msgid "Seam.Component.getInstance(\"customerAction\").saveCustomer(customer);"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:97
+#, no-c-format
+msgid "Seam.Component.getComponentName()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:98
+#, no-c-format
+msgid ""
+"Passing an object into this method will return its component name if it is a "
+"component, or <literal>null</literal> if it is not."
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:101
+#, no-c-format
+msgid ""
+"if (Seam.Component.getComponentName(instance) == \"customer\")\n"
+"    alert(\"Customer\");\n"
+"  else if (Seam.Component.getComponentName(instance) == \"staff\")\n"
+"    alert(\"Staff member\");"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:102
+#, no-c-format
+msgid "Seam.Remoting"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:103
+#, no-c-format
+msgid ""
+"Most of the client side functionality for Seam Remoting is contained within "
+"the <literal>Seam.Remoting</literal> object. While you shouldn't need to "
+"directly call most of its methods, there are a couple of important ones "
+"worth mentioning."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:106
+#, no-c-format
+msgid "Seam.Remoting.createType()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:107
+#, no-c-format
+msgid ""
+"If your application contains or uses Javabean classes that aren't Seam "
+"components, you may need to create these types on the client side to pass as "
+"parameters into your component method. Use the <literal>createType()</"
+"literal> method to create an instance of your type. Pass in the fully "
+"qualified Java class name as a parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:110
+#, no-c-format
+msgid "var widget = Seam.Remoting.createType(\"com.acme.widgets.MyWidget\");"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:111
+#, no-c-format
+msgid "Seam.Remoting.getTypeName()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:112
+#, no-c-format
+msgid ""
+"This method is the equivalent of <literal>Seam.Component.getComponentName()</"
+"literal> but for non-component types. It will return the name of the type "
+"for an object instance, or <literal>null</literal> if the type is not known. "
+"The name is the fully qualified name of the type's Java class."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:115
+#, no-c-format
+msgid "Client Interfaces"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:116
+#, no-c-format
+msgid ""
+"In the configuration section above, the interface, or \"stub\" for our "
+"component is imported into our page via <literal>seam/resource/remoting/"
+"interface.js</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:119
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?customerAction\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:120
+#, no-c-format
+msgid ""
+"By including this script in our page, the interface definitions for our "
+"component, plus any other components or types that are required to execute "
+"the methods of our component are generated and made available for the "
+"remoting framework to use."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:123
+#, no-c-format
+msgid ""
+"There are two types of client stub that can be generated, \"executable\" "
+"stubs and \"type\" stubs. Executable stubs are behavioural, and are used to "
+"execute methods against your session bean components, while type stubs "
+"contain state and represent the types that can be passed in as parameters or "
+"returned as a result."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:126
+#, no-c-format
+msgid ""
+"The type of client stub that is generated depends on the type of your Seam "
+"component. If the component is a session bean, then an executable stub will "
+"be generated, otherwise if it's an entity or JavaBean, then a type stub will "
+"be generated. There is one exception to this rule; if your component is a "
+"JavaBean (ie it is not a session bean nor an entity bean) and any of its "
+"methods are annotated with @WebRemote, then an executable stub will be "
+"generated for it instead of a type stub. This allows you to use remoting to "
+"call methods of your JavaBean components in a non-EJB environment where you "
+"don't have access to session beans."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:130
+#, no-c-format
+msgid "The Context"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:131
+#, no-c-format
+msgid ""
+"The Seam Remoting Context contains additional information which is sent and "
+"received as part of a remoting request/response cycle. At this stage it only "
+"contains the conversation ID but may be expanded in the future."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:134
+#, no-c-format
+msgid "Setting and reading the Conversation ID"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:136
+#, no-c-format
+msgid ""
+"If you intend on using remote calls within the scope of a conversation then "
+"you need to be able to read or set the conversation ID in the Seam Remoting "
+"Context. To read the conversation ID after making a remote request call "
+"<literal>Seam.Remoting.getContext().getConversationId()</literal>. To set "
+"the conversation ID before making a request, call <literal>Seam.Remoting."
+"getContext().setConversationId()</literal>."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:139
+#, no-c-format
+msgid ""
+"If the conversation ID hasn't been explicitly set with <literal>Seam."
+"Remoting.getContext().setConversationId()</literal>, then it will be "
+"automatically assigned the first valid conversation ID that is returned by "
+"any remoting call. If you are working with multiple conversations within "
+"your page, then you may need to explicitly set the conversation ID before "
+"each call. If you are working with just a single conversation, then you "
+"don't need to do anything special."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:145
+#, no-c-format
+msgid "Batch Requests"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:146
+#, no-c-format
+msgid ""
+"Seam Remoting allows multiple component calls to be executed within a single "
+"request. It is recommended that this feature is used wherever it is "
+"appropriate to reduce network traffic."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:149
+#, no-c-format
+msgid ""
+"The method <literal>Seam.Remoting.startBatch()</literal> will start a new "
+"batch, and any component calls executed after starting a batch are queued, "
+"rather than being sent immediately. When all the desired component calls "
+"have been added to the batch, the <literal>Seam.Remoting.executeBatch()</"
+"literal> method will send a single request containing all of the queued "
+"calls to the server, where they will be executed in order. After the calls "
+"have been executed, a single response containining all return values will be "
+"returned to the client and the callback functions (if provided) triggered in "
+"the same order as execution."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:152
+#, no-c-format
+msgid ""
+"If you start a new batch via the <literal>startBatch()</literal> method but "
+"then decide you don't want to send it, the <literal>Seam.Remoting.cancelBatch"
+"()</literal> method will discard any calls that were queued and exit the "
+"batch mode."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:155
+#, no-c-format
+msgid ""
+"To see an example of a batch being used, take a look at <literal>/examples/"
+"remoting/chatroom</literal>."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:159
+#, no-c-format
+msgid "Working with Data types"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:160
+#, no-c-format
+msgid "Primitives / Basic Types"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:161
+#, no-c-format
+msgid ""
+"This section describes the support for basic data types. On the server side "
+"these values are generally compatible with either their primitive type or "
+"their corresponding wrapper class."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:164
+#, no-c-format
+msgid "String"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:165
+#, no-c-format
+msgid ""
+"Simply use Javascript String objects when setting String parameter values."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:168
+#, no-c-format
+msgid "Number"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:169
+#, no-c-format
+msgid ""
+"There is support for all number types supported by Java. On the client side, "
+"number values are always serialized as their String representation and then "
+"on the server side they are converted to the correct destination type. "
+"Conversion into either a primitive or wrapper type is supported for "
+"<literal>Byte</literal>, <literal>Double</literal>, <literal>Float</"
+"literal>, <literal>Integer</literal>, <literal>Long</literal> and "
+"<literal>Short</literal> types."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:172
+#, no-c-format
+msgid "Boolean"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:173
+#, no-c-format
+msgid ""
+"Booleans are represented client side by Javascript Boolean values, and "
+"server side by a Java boolean."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:176
+#, no-c-format
+msgid "JavaBeans"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:177
+#, no-c-format
+msgid ""
+"In general these will be either Seam entity or JavaBean components, or some "
+"other non-component class. Use the appropriate method (either <literal>Seam."
+"Component.newInstance()</literal> for Seam components or <literal>Seam."
+"Remoting.createType()</literal> for everything else) to create a new "
+"instance of the object."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:180
+#, no-c-format
+msgid ""
+"It is important to note that only objects that are created by either of "
+"these two methods should be used as parameter values, where the parameter is "
+"not one of the other valid types mentioned anywhere else in this section. In "
+"some situations you may have a component method where the exact parameter "
+"type cannot be determined, such as:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:183
+#, no-c-format
+msgid ""
+"@Name(\"myAction\")\n"
+"  public class MyAction implements MyActionLocal {\n"
+"    public void doSomethingWithObject(Object obj) {\n"
+"      // code\n"
+"    }\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:184
+#, no-c-format
+msgid ""
+"In this case you might want to pass in an instance of your "
+"<literal>myWidget</literal> component, however the interface for "
+"<literal>myAction</literal> won't include <literal>myWidget</literal> as it "
+"is not directly referenced by any of its methods. To get around this, "
+"<literal>MyWidget</literal> needs to be explicitly imported:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:187
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?myAction&amp;myWidget\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:188
+#, no-c-format
+msgid ""
+"This will then allow a <literal>myWidget</literal> object to be created with "
+"<literal>Seam.Component.newInstance(\"myWidget\")</literal>, which can then "
+"be passed to <literal>myAction.doSomethingWithObject()</literal>."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:191
+#, no-c-format
+msgid "Dates and Times"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:192
+#, no-c-format
+msgid ""
+"Date values are serialized into a String representation that is accurate to "
+"the millisecond. On the client side, use a Javascript Date object to work "
+"with date values. On the server side, use any <literal>java.util.Date</"
+"literal> (or descendent, such as <literal>java.sql.Date</literal> or "
+"<literal>java.sql.Timestamp</literal> class."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:195
+#, no-c-format
+msgid "Enums"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:196
+#, no-c-format
+msgid ""
+"On the client side, enums are treated the same as Strings. When setting the "
+"value for an enum parameter, simply use the String representation of the "
+"enum. Take the following component as an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:199
+#, no-c-format
+msgid ""
+"@Name(\"paintAction\")\n"
+"  public class paintAction implements paintLocal {\n"
+"    public enum Color {red, green, blue, yellow, orange, purple};\n"
+"\n"
+"    public void paint(Color color) {\n"
+"      // code\n"
+"    }    \n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:200
+#, no-c-format
+msgid ""
+"To call the <literal>paint()</literal> method with the color <literal>red</"
+"literal>, pass the parameter value as a String literal:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:203
+#, no-c-format
+msgid "Seam.Component.getInstance(\"paintAction\").paint(\"red\");"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:204
+#, no-c-format
+msgid ""
+"The inverse is also true - that is, if a component method returns an enum "
+"parameter (or contains an enum field anywhere in the returned object graph) "
+"then on the client-side it will be represented as a String."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:207
+#, no-c-format
+msgid "Collections"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:208
+#, no-c-format
+msgid "Bags"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:209
+#, no-c-format
+msgid ""
+"Bags cover all collection types including arrays, collections, lists, sets, "
+"(but excluding Maps - see the next section for those), and are implemented "
+"client-side as a Javascript array. When calling a component method that "
+"accepts one of these types as a parameter, your parameter should be a "
+"Javascript array. If a component method returns one of these types, then the "
+"return value will also be a Javascript array. The remoting framework is "
+"clever enough on the server side to convert the bag to an appropriate type "
+"for the component method call."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:212
+#, no-c-format
+msgid "Maps"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:213
+#, no-c-format
+msgid ""
+"As there is no native support for Maps within Javascript, a simple Map "
+"implementation is provided with the Seam Remoting framework. To create a Map "
+"which can be used as a parameter to a remote call, create a new "
+"<literal>Seam.Remoting.Map</literal> object:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:216
+#, no-c-format
+msgid "var map = new Seam.Remoting.Map();"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:217
+#, no-c-format
+msgid ""
+"This Javascript implementation provides basic methods for working with Maps: "
+"<literal>size()</literal>, <literal>isEmpty()</literal>, <literal>keySet()</"
+"literal>, <literal>values()</literal>, <literal>get(key)</literal>, "
+"<literal>put(key, value)</literal>, <literal>remove(key)</literal> and "
+"<literal>contains(key)</literal>. Each of these methods are equivalent to "
+"their Java counterpart. Where the method returns a collection, such as "
+"<literal>keySet()</literal> and <literal>values()</literal>, a Javascript "
+"Array object will be returned that contains the key or value objects "
+"(respectively)."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:220
+#, no-c-format
+msgid "Debugging"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:221
+#, no-c-format
+msgid ""
+"To aid in tracking down bugs, it is possible to enable a debug mode which "
+"will display the contents of all the packets send back and forth between the "
+"client and server in a popup window. To enable debug mode, either execute "
+"the <literal>setDebug()</literal> method in Javascript:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:224
+#, no-c-format
+msgid "Seam.Remoting.setDebug(true);"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:225
+#, no-c-format
+msgid "Or configure it via components.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:228
+#, no-c-format
+msgid "&lt;remoting:remoting debug=\"true\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:229
+#, no-c-format
+msgid ""
+"To turn off debugging, call <literal>setDebug(false)</literal>. If you want "
+"to write your own messages to the debug log, call <literal>Seam.Remoting.log"
+"(message)</literal>."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:233
+#, no-c-format
+msgid "The Loading Message"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:234
+#, no-c-format
+msgid ""
+"The default loading message that appears in the top right corner of the "
+"screen can be modified, its rendering customised or even turned off "
+"completely."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:237
+#, no-c-format
+msgid "Changing the message"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:238
+#, no-c-format
+msgid ""
+"To change the message from the default \"Please Wait...\" to something "
+"different, set the value of <literal>Seam.Remoting.loadingMessage</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:241
+#, no-c-format
+msgid "Seam.Remoting.loadingMessage = \"Loading...\";"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:243
+#, no-c-format
+msgid "Hiding the loading message"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:244
+#, no-c-format
+msgid ""
+"To completely suppress the display of the loading message, override the "
+"implementation of <literal>displayLoadingMessage()</literal> and "
+"<literal>hideLoadingMessage()</literal> with functions that instead do "
+"nothing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:247
+#, no-c-format
+msgid ""
+"// don't display the loading indicator\n"
+"  Seam.Remoting.displayLoadingMessage = function() {};\n"
+"  Seam.Remoting.hideLoadingMessage = function() {};"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:248
+#, no-c-format
+msgid "A Custom Loading Indicator"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:249
+#, no-c-format
+msgid ""
+"It is also possible to override the loading indicator to display an animated "
+"icon, or anything else that you want. To do this override the "
+"<literal>displayLoadingMessage()</literal> and <literal>hideLoadingMessage()"
+"</literal> messages with your own implementation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:252
+#, no-c-format
+msgid ""
+"Seam.Remoting.displayLoadingMessage = function() {\n"
+"    // Write code here to display the indicator\n"
+"  };\n"
+"  \n"
+"  Seam.Remoting.hideLoadingMessage = function() {\n"
+"    // Write code here to hide the indicator\n"
+"  };"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:253
+#, no-c-format
+msgid "Controlling what data is returned"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:254
+#, no-c-format
+msgid ""
+"When a remote method is executed, the result is serialized into an XML "
+"response that is returned to the client. This response is then unmarshaled "
+"by the client into a Javascript object. For complex types (i.e. Javabeans) "
+"that include references to other objects, all of these referenced objects "
+"are also serialized as part of the response. These objects may reference "
+"other objects, which may reference other objects, and so forth. If left "
+"unchecked, this object \"graph\" could potentially be enormous, depending on "
+"what relationships exist between your objects. And as a side issue (besides "
+"the potential verbosity of the response), you might also wish to prevent "
+"sensitive information from being exposed to the client."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:257
+#, no-c-format
+msgid ""
+"Seam Remoting provides a simple means to \"constrain\" the object graph, by "
+"specifying the <literal>exclude</literal> field of the remote method's "
+"<literal>@WebRemote</literal> annotation. This field accepts a String array "
+"containing one or more paths specified using dot notation. When invoking a "
+"remote method, the objects in the result's object graph that match these "
+"paths are excluded from the serialized result packet."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:260
+#, no-c-format
+msgid ""
+"For all our examples, we'll use the following <literal>Widget</literal> "
+"class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:263
+#, no-c-format
+msgid ""
+"@Name(\"widget\")\n"
+"public class Widget\n"
+"{\n"
+"  private String value;\n"
+"  private String secret;\n"
+"  private Widget child;\n"
+"  private Map&lt;String,Widget&gt; widgetMap;\n"
+"  private List&lt;Widget&gt; widgetList;\n"
+"  \n"
+"  // getters and setters for all fields\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:264
+#, no-c-format
+msgid "Constraining normal fields"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:265
+#, no-c-format
+msgid ""
+"If your remote method returns an instance of <literal>Widget</literal>, but "
+"you don't want to expose the <literal>secret</literal> field because it "
+"contains sensitive information, you would constrain it like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:268
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:269
+#, no-c-format
+msgid ""
+"The value \"secret\" refers to the <literal>secret</literal> field of the "
+"returned object. Now, suppose that we don't care about exposing this "
+"particular field to the client. Instead, notice that the <literal>Widget</"
+"literal> value that is returned has a field <literal>child</literal> that is "
+"also a <literal>Widget</literal>. What if we want to hide the "
+"<literal>child</literal>'s <literal>secret</literal> value instead? We can "
+"do this by using dot notation to specify this field's path within the "
+"result's object graph:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:272
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"child.secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:273
+#, no-c-format
+msgid "Constraining Maps and Collections"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:274
+#, no-c-format
+msgid ""
+"The other place that objects can exist within an object graph are within a "
+"<literal>Map</literal> or some kind of collection (<literal>List</literal>, "
+"<literal>Set</literal>, <literal>Array</literal>, etc). Collections are "
+"easy, and are treated like any other field. For example, if our "
+"<literal>Widget</literal> contained a list of other <literal>Widget</"
+"literal>s in its <literal>widgetList</literal> field, to constrain the "
+"<literal>secret</literal> field of the <literal>Widget</literal>s in this "
+"list the annotation would look like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:277
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetList.secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:278
+#, no-c-format
+msgid ""
+"To constrain a <literal>Map</literal>'s key or value, the notation is "
+"slightly different. Appending <literal>[key]</literal> after the "
+"<literal>Map</literal>'s field name will constrain the <literal>Map</"
+"literal>'s key object values, while <literal>[value]</literal> will "
+"constrain the value object values. The following example demonstrates how "
+"the values of the <literal>widgetMap</literal> field have their "
+"<literal>secret</literal> field constrained:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:281
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetMap[value].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:282
+#, no-c-format
+msgid "Constraining objects of a specific type"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:283
+#, no-c-format
+msgid ""
+"There is one last notation that can be used to constrain the fields of a "
+"type of object no matter where in the result's object graph it appears. This "
+"notation uses either the name of the component (if the object is a Seam "
+"component) or the fully qualified class name (only if the object is not a "
+"Seam component) and is expressed using square brackets:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:286
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"[widget].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:287
+#, no-c-format
+msgid "Combining Constraints"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:288
+#, no-c-format
+msgid ""
+"Constraints can also be combined, to filter objects from multiple paths "
+"within the object graph:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:291
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetList.secret\", \"widgetMap[value].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:292
+#, no-c-format
+msgid "JMS Messaging"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:293
+#, no-c-format
+msgid ""
+"Seam Remoting provides experimental support for JMS Messaging. This section "
+"describes the JMS support that is currently implemented, but please note "
+"that this may change in the future. It is currently not recommended that "
+"this feature is used within a production environment."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:297
+#, no-c-format
+msgid ""
+"Before you can subscribe to a JMS topic, you must first configure a list of "
+"the topics that can be subscribed to by Seam Remoting. List the topics under "
+"<literal>org.jboss.seam.remoting.messaging.subscriptionRegistry."
+"allowedTopics</literal> in <literal>seam.properties</literal>, <literal>web."
+"xml</literal> or <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:300 Remoting.xml:333
+#, no-c-format
+msgid "&lt;remoting:remoting poll-timeout=\"5\" poll-interval=\"1\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:301
+#, no-c-format
+msgid "Subscribing to a JMS Topic"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:302
+#, no-c-format
+msgid "The following example demonstrates how to subscribe to a JMS Topic:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:305
+#, no-c-format
+msgid ""
+"function subscriptionCallback(message)\n"
+"  {\n"
+"    if (message instanceof Seam.Remoting.TextMessage)\n"
+"      alert(\"Received message: \" + message.getText());\n"
+"  }        \n"
+"        \n"
+"  Seam.Remoting.subscribe(\"topicName\", subscriptionCallback);"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:306
+#, no-c-format
+msgid ""
+"The <literal>Seam.Remoting.subscribe()</literal> method accepts two "
+"parameters, the first being the name of the JMS Topic to subscribe to, the "
+"second being the callback function to invoke when a message is received."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:309
+#, no-c-format
+msgid ""
+"There are two types of messages supported, Text messages and Object "
+"messages. If you need to test for the type of message that is passed to your "
+"callback function you can use the <literal>instanceof</literal> operator to "
+"test whether the message is a <literal>Seam.Remoting.TextMessage</literal> "
+"or <literal>Seam.Remoting.ObjectMessage</literal>. A <literal>TextMessage</"
+"literal> contains the text value in its <literal>text</literal> field (or "
+"alternatively call <literal>getText()</literal> on it), while an "
+"<literal>ObjectMessage</literal> contains its object value in its "
+"<literal>object</literal> field (or call its <literal>getObject()</literal> "
+"method)."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:312
+#, no-c-format
+msgid "Unsubscribing from a Topic"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:313
+#, no-c-format
+msgid ""
+"To unsubscribe from a topic, call <literal>Seam.Remoting.unsubscribe()</"
+"literal> and pass in the topic name:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:316
+#, no-c-format
+msgid "Seam.Remoting.unsubscribe(\"topicName\");"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:317
+#, no-c-format
+msgid "Tuning the Polling Process"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:318
+#, no-c-format
+msgid ""
+"There are two parameters which you can modify to control how polling occurs. "
+"The first one is <literal>Seam.Remoting.pollInterval</literal>, which "
+"controls how long to wait between subsequent polls for new messages. This "
+"parameter is expressed in seconds, and its default setting is 10."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:321
+#, no-c-format
+msgid ""
+"The second parameter is <literal>Seam.Remoting.pollTimeout</literal>, and is "
+"also expressed as seconds. It controls how long a request to the server "
+"should wait for a new message before timing out and sending an empty "
+"response. Its default is 0 seconds, which means that when the server is "
+"polled, if there are no messages ready for delivery then an empty response "
+"will be immediately returned."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:324
+#, no-c-format
+msgid ""
+"Caution should be used when setting a high <literal>pollTimeout</literal> "
+"value; each request that has to wait for a message means that a server "
+"thread is tied up until a message is received, or until the request times "
+"out. If many such requests are being served simultaneously, it could mean a "
+"large number of threads become tied up because of this reason."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:327
+#, no-c-format
+msgid ""
+"It is recommended that you set these options via components.xml, however "
+"they can be overridden via Javascript if desired. The following example "
+"demonstrates how to configure the polling to occur much more aggressively. "
+"You should set these parameters to suitable values for your application:"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:330
+#, no-c-format
+msgid "Via components.xml:"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:334
+#, no-c-format
+msgid "Via JavaScript:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:337
+#, no-c-format
+msgid ""
+"// Only wait 1 second between receiving a poll response and sending the next "
+"poll request.\n"
+"  Seam.Remoting.pollInterval = 1;\n"
+"  \n"
+"  // Wait up to 5 seconds on the server for new messages\n"
+"  Seam.Remoting.pollTimeout = 5;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Security.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Security.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Security.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1676 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Security.xml:10
+#, no-c-format
+msgid "Security"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:11
+#, no-c-format
+msgid ""
+"The Seam Security API is an optional Seam feature that provides "
+"authentication and authorization features for securing both domain and page "
+"resources within your Seam project."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:14
+#, no-c-format
+msgid "Overview"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:15
+#, no-c-format
+msgid "Seam Security provides two different modes of operation:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:20
+#, no-c-format
+msgid ""
+"<emphasis>simplified mode</emphasis> - this mode supports authentication "
+"services and simple role-based security checks."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:25
+#, no-c-format
+msgid ""
+"<emphasis>advanced mode</emphasis> - this mode supports all the same "
+"features as the simplified mode, plus it offers rule-based security checks "
+"using JBoss Rules."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:30
+#, no-c-format
+msgid "Which mode is right for my application?"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:31
+#, no-c-format
+msgid ""
+"That all depends on the requirements of your application. If you have "
+"minimal security requirements, for example if you only wish to restrict "
+"certain pages and actions to users who are logged in, or who belong to a "
+"certain role, then the simplified mode will probably be sufficient. The "
+"advantages of this is a more simplified configuration, significantly less "
+"libraries to include, and a smaller memory footprint."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:34
+#, no-c-format
+msgid ""
+"If on the other hand, your application requires security checks based on "
+"contextual state or complex business rules, then you will require the "
+"features provided by the advanced mode."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:37
+#, no-c-format
+msgid "Requirements"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:38
+#, no-c-format
+msgid ""
+"If using the advanced mode features of Seam Security, the following jar "
+"files are required to be configured as modules in <literal>application.xml</"
+"literal>. If you are using Seam Security in simplified mode, these are "
+"<emphasis>not</emphasis> required:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:43
+#, no-c-format
+msgid "drools-compiler-3.0.5.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:48
+#, no-c-format
+msgid "drools-core-3.0.5.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:53
+#, no-c-format
+msgid "commons-jci-core-1.0-406301.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:58
+#, no-c-format
+msgid "commons-jci-janino-2.4.3.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:63
+#, no-c-format
+msgid "commons-lang-2.1.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:68
+#, no-c-format
+msgid "janino-2.4.3.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:73
+#, no-c-format
+msgid "stringtemplate-2.3b6.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:78
+#, no-c-format
+msgid "antlr-2.7.6.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:83
+#, no-c-format
+msgid "antlr-3.0ea8.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:88
+#, no-c-format
+msgid ""
+"For web-based security, <literal>jboss-seam-ui.jar</literal> must also be "
+"included in the application's war file. Also, to make use of the security EL "
+"functions, <literal>SeamFaceletViewHandler</literal> must be used. Configure "
+"it in <literal>faces-config.xml</literal> like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:91
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;view-handler&gt;org.jboss.seam.ui.facelet.SeamFaceletViewHandler&lt;/"
+"view-handler&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:92
+#, no-c-format
+msgid "Authentication"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:93
+#, no-c-format
+msgid ""
+"The authentication features provided by Seam Security are built upon JAAS "
+"(Java Authentication and Authorization Service), and as such provide a "
+"robust and highly configurable API for handling user authentication. "
+"However, for less complex authentication requirements Seam offers a much "
+"more simplified method of authentication that hides the complexity of JAAS."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:96
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:97
+#, no-c-format
+msgid ""
+"The simplified authentication method uses a built-in JAAS login module, "
+"<literal>SeamLoginModule</literal>, which delegates authentication to one of "
+"your own Seam components. This login module is already configured inside "
+"Seam as part of a default application policy and as such does not require "
+"any additional configuration files. It allows you to write an authentication "
+"method using the entity classes that are provided by your own application. "
+"Configuring this simplified form of authentication requires the "
+"<literal>identity</literal> component to be configured in "
+"<literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:100
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:security=\"http://jboss.com/products/seam/security\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core http://jboss.com/"
+"products/seam/core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components http://jboss.com/"
+"products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/drools http://jboss.com/"
+"products/seam/drools-1.2.xsd\"\n"
+"                 http://jboss.com/products/seam/security http://jboss.com/"
+"products/seam/security-1.2.xsd\"&gt;                \n"
+"        \n"
+"    &lt;security:identity authenticate-method=\"#{authenticator.authenticate}"
+"\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:101
+#, no-c-format
+msgid ""
+"If you wish to use the advanced security features such as rule-based "
+"permission checks, all you need to do is include the Drools (JBoss Rules) "
+"jars in your classpath, and add some additional configuration, described "
+"later."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:104
+#, no-c-format
+msgid ""
+"The EL expression <literal>#{authenticator.authenticate}</literal> is a "
+"method binding indicating that the <literal>authenticate</literal> method of "
+"the <literal>authenticator</literal> component will be used to authenticate "
+"the user."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:107
+#, no-c-format
+msgid "Writing an authentication method"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:108
+#, no-c-format
+msgid ""
+"The <literal>authenticate-method</literal> property specified for "
+"<literal>identity</literal> in <literal>components.xml</literal> specifies "
+"which method will be used by <literal>SeamLoginModule</literal> to "
+"authenticate users. This method takes no parameters, and is expected to "
+"return a boolean indicating whether authentication is successful or not. The "
+"user's username and password can be obtained from <literal>Identity.instance"
+"().getUsername()</literal> and <literal>Identity.instance().getPassword()</"
+"literal>, respectively. Any roles that the user is a member of should be "
+"assigned using <literal>Identity.instance().addRole()</literal>. Here's a "
+"complete example of an authentication method inside a JavaBean component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:111
+#, no-c-format
+msgid ""
+"@Name(\"authenticator\")\n"
+"public class Authenticator {\n"
+"   @In EntityManager entityManager;\n"
+"   \n"
+"   public boolean authenticate() {\n"
+"      try\n"
+"      {\n"
+"         User user = (User) entityManager.createQuery(\n"
+"            \"from User where username = :username and password = :password"
+"\")\n"
+"            .setParameter(\"username\", Identity.instance().getUsername())\n"
+"            .setParameter(\"password\", Identity.instance().getPassword())\n"
+"            .getSingleResult();\n"
+"\n"
+"         if (user.getRoles() != null)\n"
+"         {\n"
+"            for (UserRole mr : user.getRoles())\n"
+"               Identity.instance().addRole(mr.getName());\n"
+"         }\n"
+"\n"
+"         return true;\n"
+"      }\n"
+"      catch (NoResultException ex)\n"
+"      {\n"
+"         FacesMessages.instance().add(\"Invalid username/password\");\n"
+"         return false;\n"
+"      }\n"
+"      \n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:112
+#, no-c-format
+msgid ""
+"In the above example, both <literal>User</literal> and <literal>UserRole</"
+"literal> are application-specific entity beans. The <literal>roles</literal> "
+"parameter is populated with the roles that the user is a member of, which "
+"should be added to the <literal>Set</literal> as literal string values, e.g. "
+"\"admin\", \"user\". In this case, if the user record is not found and a "
+"<literal>NoResultException</literal> thrown, the authentication method "
+"returns <literal>false</literal> to indicate the authentication failed."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:115
+#, no-c-format
+msgid "Writing a login form"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:116
+#, no-c-format
+msgid ""
+"The <literal>Identity</literal> component provides both <literal>username</"
+"literal> and <literal>password</literal> properties, catering for the most "
+"common authentication scenario. These properties can be bound directly to "
+"the username and password fields on a login form. Once these properties are "
+"set, calling the <literal>identity.login()</literal> method will "
+"authenticate the user using the provided credentials. Here's an example of a "
+"simple login form:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:119
+#, no-c-format
+msgid ""
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"name\" value=\"Username\"/&gt;\n"
+"    &lt;h:inputText id=\"name\" value=\"#{identity.username}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"password\" value=\"Password\"/&gt;\n"
+"    &lt;h:inputSecret id=\"password\" value=\"#{identity.password}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;div&gt;\n"
+"    &lt;h:commandButton value=\"Login\" action=\"#{identity.login}\"/&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:120
+#, no-c-format
+msgid ""
+"Similarly, logging out the user is done by calling <literal>#{identity."
+"logout}</literal>. Calling this action will clear the security state of the "
+"currently authenticated user."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:123
+#, no-c-format
+msgid "Simplified Configuration - Summary"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:124
+#, no-c-format
+msgid ""
+"So to sum up, there are the three easy steps to configure authentication:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:129
+#, no-c-format
+msgid ""
+"Configure an authentication method in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:134
+#, no-c-format
+msgid "Write an authentication method."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:139
+#, no-c-format
+msgid "Write a login form so that the user can authenticate."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:144
+#, no-c-format
+msgid "Handling Security Exceptions"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:145
+#, no-c-format
+msgid ""
+"To prevent users from receiving the default error page in response to a "
+"security error, it's recommended that <literal>pages.xml</literal> is "
+"configured to redirect security errors to a more \"pretty\" page. The two "
+"main types of exceptions thrown by the security API are:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:150
+#, no-c-format
+msgid ""
+"<literal>NotLoggedInException</literal> - This exception is thrown if the "
+"user attempts to access a restricted action or page when they are not logged "
+"in."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:155
+#, no-c-format
+msgid ""
+"<literal>AuthorizationException</literal> - This exception is only thrown if "
+"the user is already logged in, and they have attempted to access a "
+"restricted action or page for which they do not have the necessary "
+"privileges."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:160
+#, no-c-format
+msgid ""
+"In the case of a <literal>NotLoggedInException</literal>, it is recommended "
+"that the user is redirected to either a login or registration page so that "
+"they can log in. For an <literal>AuthorizationException</literal>, it may be "
+"useful to redirect the user to an error page. Here's an example of a "
+"<literal>pages.xml</literal> file that redirects both of these security "
+"exceptions:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:163
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"\n"
+"    ...\n"
+"    \n"
+"    &lt;exception class=\"org.jboss.seam.security.NotLoggedInException"
+"\"&gt;\n"
+"        &lt;redirect view-id=\"/login.xhtml\"&gt;\n"
+"            &lt;message&gt;You must be logged in to perform this action&lt;/"
+"message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"    \n"
+"    &lt;exception class=\"org.jboss.seam.security.AuthorizationException"
+"\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"        &lt;redirect view-id=\"/security_error.xhtml\"&gt;\n"
+"            &lt;message&gt;\n"
+"                You do not have the necessary security privileges to perform "
+"this action.\n"
+"            &lt;/message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"  \n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:164
+#, no-c-format
+msgid ""
+"Most web applications require even more sophisticated handling of login "
+"redirection, so Seam includes some special functionality for handling this "
+"problem."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:167
+#, no-c-format
+msgid "Login Redirection"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:168
+#, no-c-format
+msgid ""
+"You can ask Seam to redirect the user to a login screen when an "
+"unauthenticated user tries to access a particular view (or wildcarded view "
+"id) as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:171
+#, no-c-format
+msgid ""
+"&lt;pages login-view-id=\"/login.xhtml\"&gt;\n"
+"\n"
+"    &lt;page view-id=\"/members/*\" login-required=\"true\"/&gt;\n"
+"    \n"
+"    ...\n"
+"    \n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:172
+#, no-c-format
+msgid ""
+"(This is less of a blunt instrument than the exception handler shown above, "
+"but should probably be used in conjunction with it.)"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:175
+#, no-c-format
+msgid ""
+"After the user logs in, we want to automatically send them back where they "
+"came from, so they can retry the action that required logging in. If you add "
+"the following event listeners to <literal>components.xml</literal>, attempts "
+"to access a restricted view while not logged in will be remembered, so that "
+"upon the user successfully logging in they will be redirected to the "
+"originally requested view, with any page parameters that existed in the "
+"original request."
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:178
+#, no-c-format
+msgid ""
+"&lt;event type=\"org.jboss.seam.notLoggedIn\"&gt;\n"
+"    &lt;action expression=\"#{redirect.captureCurrentView}\"/&gt;\n"
+"&lt;/event&gt;\n"
+"    \n"
+"&lt;event type=\"org.jboss.seam.postAuthenticate\"&gt;\n"
+"    &lt;action expression=\"#{redirect.returnToCapturedView}\"/&gt;\n"
+"&lt;/event&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:179
+#, no-c-format
+msgid ""
+"Note that login redirection is implemented as a conversation-scoped "
+"mechanism, so don't end the conversation in your <literal>authenticate()</"
+"literal> method."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:182
+#, no-c-format
+msgid "Advanced Authentication Features"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:183
+#, no-c-format
+msgid ""
+"This section explores some of the advanced features provided by the security "
+"API for addressing more complex security requirements."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:186
+#, no-c-format
+msgid "Using your container's JAAS configuration"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:187
+#, no-c-format
+msgid ""
+"If you would rather not use the simplified JAAS configuration provided by "
+"the Seam Security API, you may instead delegate to the default system JAAS "
+"configuration by providing a <literal>jaasConfigName</literal> property in "
+"<literal>components.xml</literal>. For example, if you are using JBoss AS "
+"and wish to use the <literal>other</literal> policy (which uses the "
+"<literal>UsersRolesLoginModule</literal> login module provided by JBoss AS), "
+"then the entry in <literal>components.xml</literal> would look like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:190
+#, no-c-format
+msgid ""
+"&lt;security:identity authenticate-method=\"#{authenticator.authenticate}"
+"\" \n"
+"                      jaas-config-name=\"other\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:191
+#, no-c-format
+msgid "Authorization"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:192
+#, no-c-format
+msgid ""
+"There are a number of authorization features provided by the Seam Security "
+"API for securing access to components, component methods, and pages. This "
+"section describes each of these. An important thing to note is that if you "
+"wish to use any of the advanced features (such as rule-based permissions) "
+"then your <literal>components.xml</literal> must be configured to support "
+"this - see the Configuration section above."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:195
+#, no-c-format
+msgid "Core concepts"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:196
+#, no-c-format
+msgid ""
+"Each of the authorization mechanisms provided by the Seam Security API are "
+"built upon the concept of a user being granted roles and/or permissions. A "
+"role is a <emphasis>group</emphasis>, or <emphasis>type</emphasis>, of user "
+"that may have been granted certain privileges for performing one or more "
+"specific actions within an application. A permission on the other hand is a "
+"privilege (sometimes once-off) for performing a single, specific action. It "
+"is entirely possible to build an application using nothing but permissions, "
+"however roles offer a higher level of convenience when granting privileges "
+"to groups of users."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:199
+#, no-c-format
+msgid ""
+"Roles are simple, consisting of only a name such as \"admin\", \"user\", "
+"\"customer\", etc. Permissions consist of both a name and an action, and are "
+"represented within this documentation in the form <literal>name:action</"
+"literal>, for example <literal>customer:delete</literal>, or "
+"<literal>customer:insert</literal>."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:202
+#, no-c-format
+msgid "Securing components"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:203
+#, no-c-format
+msgid ""
+"Let's start by examining the simplest form of authorization, component "
+"security, starting with the <literal>@Restrict</literal> annotation."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:206
+#, no-c-format
+msgid "The @Restrict annotation"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:207
+#, no-c-format
+msgid ""
+"Seam components may be secured either at the method or the class level, "
+"using the <literal>@Restrict</literal> annotation. If both a method and it's "
+"declaring class are annotated with <literal>@Restrict</literal>, the method "
+"restriction will take precedence (and the class restriction will not apply). "
+"If a method invocation fails a security check, then an exception will be "
+"thrown as per the contract for <literal>Identity.checkRestriction()</"
+"literal> (see Inline Restrictions). A <literal>@Restrict</literal> on just "
+"the component class itself is equivalent to adding <literal>@Restrict</"
+"literal> to each of its methods."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:210
+#, no-c-format
+msgid ""
+"An empty <literal>@Restrict</literal> implies a permission check of "
+"<literal>componentName:methodName</literal>. Take for example the following "
+"component method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:213
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class AccountAction {\n"
+"    @Restrict public void delete() {\n"
+"      ...\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:214
+#, no-c-format
+msgid ""
+"In this example, the implied permission required to call the <literal>delete"
+"()</literal> method is <literal>account:delete</literal>. The equivalent of "
+"this would be to write <literal>@Restrict(\"#{s:hasPermission"
+"('account','delete',null)}\")</literal>. Now let's look at another example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:217
+#, no-c-format
+msgid ""
+"@Restrict @Name(\"account\")\n"
+"public class AccountAction {\n"
+"    public void insert() {\n"
+"      ...\n"
+"    }\n"
+"    @Restrict(\"#{s:hasRole('admin')}\") \n"
+"    public void delete() {\n"
+"      ...\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:218
+#, no-c-format
+msgid ""
+"This time, the component class itself is annotated with <literal>@Restrict</"
+"literal>. This means that any methods without an overriding "
+"<literal>@Restrict</literal> annotation require an implicit permission "
+"check. In the case of this example, the <literal>insert()</literal> method "
+"requires a permission of <literal>account:insert</literal>, while the "
+"<literal>delete()</literal> method requires that the user is a member of the "
+"<literal>admin</literal> role."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:221
+#, no-c-format
+msgid ""
+"Before we go any further, let's address the <literal>#{s:hasRole()}</"
+"literal> expression seen in the above example. Both <literal>s:hasRole</"
+"literal> and <literal>s:hasPermission</literal> are EL functions, which "
+"delegate to the correspondingly named methods of the <literal>Identity</"
+"literal> class. These functions can be used within any EL expression "
+"throughout the entirety of the security API."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:224
+#, no-c-format
+msgid ""
+"Being an EL expression, the value of the <literal>@Restrict</literal> "
+"annotation may reference any objects that exist within a Seam context. This "
+"is extremely useful when performing permission checks for a specific object "
+"instance. Look at this example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:227
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class AccountAction {\n"
+"    @In Account selectedAccount;\n"
+"    @Restrict(\"#{s:hasPermission('account','modify',selectedAccount)}\")\n"
+"    public void modify() {\n"
+"        selectedAccount.modify();\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:228
+#, no-c-format
+msgid ""
+"The interesting thing to note from this example is the reference to "
+"<literal>selectedAccount</literal> seen within the <literal>hasPermission()</"
+"literal> function call. The value of this variable will be looked up from "
+"within the Seam context, and passed to the <literal>hasPermission()</"
+"literal> method in <literal>Identity</literal>, which in this case can then "
+"determine if the user has the required permission for modifying the "
+"specified <literal>Account</literal> object."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:231
+#, no-c-format
+msgid "Inline restrictions"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:232
+#, no-c-format
+msgid ""
+"Sometimes it might be desirable to perform a security check in code, without "
+"using the <literal>@Restrict</literal> annotation. In this situation, simply "
+"use <literal>Identity.checkRestriction()</literal> to evaluate a security "
+"expression, like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:235
+#, no-c-format
+msgid ""
+"public void deleteCustomer() {\n"
+"    Identity.instance().checkRestriction(\"#{s:hasPermission"
+"('customer','delete',\n"
+"        selectedCustomer)}\");\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:236
+#, no-c-format
+msgid ""
+"If the expression specified doesn't evaluate to <literal>true</literal>, "
+"either"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:241
+#, no-c-format
+msgid ""
+"if the user is not logged in, a <literal>NotLoggedInException</literal> "
+"exception is thrown or"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:246
+#, no-c-format
+msgid ""
+"if the user is logged in, an <literal>AuthorizationException</literal> "
+"exception is thrown."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:251
+#, no-c-format
+msgid ""
+"It is also possible to call the <literal>hasRole()</literal> and "
+"<literal>hasPermission()</literal> methods directly from Java code:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:254
+#, no-c-format
+msgid ""
+"if (!Identity.instance().hasRole(\"admin\"))\n"
+"     throw new AuthorizationException(\"Must be admin to perform this action"
+"\");\n"
+"\n"
+"if (!Identity.instance().hasPermission(\"customer\", \"create\", null))\n"
+"     throw new AuthorizationException(\"You may not create new customers\");"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:255
+#, no-c-format
+msgid "Security in the user interface"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:256
+#, no-c-format
+msgid ""
+"One indication of a well designed user interface is that the user is not "
+"presented with options for which they don't have the necessary privileges to "
+"use. Seam Security allows conditional rendering of either 1) sections of a "
+"page or 2) individual controls, based upon the privileges of the user, using "
+"the very same EL expressions that are used for component security."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:259
+#, no-c-format
+msgid ""
+"Let's take a look at some examples of interface security. First of all, "
+"let's pretend that we have a login form that should only be rendered if the "
+"user is not already logged in. Using the <literal>identity.isLoggedIn()</"
+"literal> property, we can write this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:262
+#, no-c-format
+msgid ""
+"&lt;h:form class=\"loginForm\" rendered=\"#{not identity.loggedIn}\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:263
+#, no-c-format
+msgid ""
+"If the user isn't logged in, then the login form will be rendered - very "
+"straight forward so far. Now let's pretend there is a menu on the page that "
+"contains some actions which should only be accessible to users in the "
+"<literal>manager</literal> role. Here's one way that these could be written:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:266
+#, no-c-format
+msgid ""
+"&lt;h:outputLink action=\"#{reports.listManagerReports}\" rendered=\"#{s:"
+"hasRole('manager')}\"&gt;\n"
+"    Manager Reports\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:267
+#, no-c-format
+msgid ""
+"This is also quite straight forward. If the user is not a member of the "
+"<literal>manager</literal> role, then the outputLink will not be rendered. "
+"The <literal>rendered</literal> attribute can generally be used on the "
+"control itself, or on a surrounding <literal>&lt;s:div&gt;</literal> or "
+"<literal>&lt;s:span&gt;</literal> control."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:270
+#, no-c-format
+msgid ""
+"Now for something more complex. Let's say you have a <literal>h:dataTable</"
+"literal> control on a page listing records for which you may or may not wish "
+"to render action links depending on the user's privileges. The <literal>s:"
+"hasPermission</literal> EL function allows us to pass in an object parameter "
+"which can be used to determine whether the user has the requested permission "
+"for that object or not. Here's how a dataTable with secured links might look:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:273
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{clients}\" var=\"cl\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Name&lt;/f:facet&gt;\n"
+"        #{cl.name}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;City&lt;/f:facet&gt;\n"
+"        #{cl.city}\n"
+"    &lt;/h:column&gt;   \n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"        &lt;s:link value=\"Modify Client\" action=\"#{clientAction.modify}"
+"\"\n"
+"                rendered=\"#{s:hasPermission('client','modify',cl)\"/&gt;\n"
+"        &lt;s:link value=\"Delete Client\" action=\"#{clientAction.delete}"
+"\"\n"
+"                rendered=\"#{s:hasPermission('client','delete',cl)\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:274
+#, no-c-format
+msgid "Securing pages"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:275
+#, no-c-format
+msgid ""
+"Page security requires that the application is using a <literal>pages.xml</"
+"literal> file, however is extremely simple to configure. Simply include a "
+"<literal>&lt;restrict/&gt;</literal> element within the <literal>page</"
+"literal> elements that you wish to secure. By default, if a value is not "
+"provided for the <literal>restrict</literal> element, an implied permission "
+"of <literal>{viewId}:render</literal> will be checked for whenever accessing "
+"that page. Otherwise the value will be evaluated as a standard security "
+"expression. Here's a couple of examples:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:278
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/settings.xhtml\"&gt;\n"
+"    &lt;restrict/&gt;\n"
+"&lt;/page&gt;\n"
+"        \n"
+"&lt;page view-id=\"/reports.xhtml\"&gt;    \n"
+"    &lt;restrict&gt;#{s:hasRole('admin')}&lt;/restrict&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:279
+#, no-c-format
+msgid ""
+"In the above example, the first page has an implied permission restriction "
+"of <literal>/settings.xhtml:render</literal>, while the second one checks "
+"that the user is a member of the <literal>admin</literal> role."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:282
+#, no-c-format
+msgid "Securing Entities"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:283
+#, no-c-format
+msgid ""
+"Seam security also makes it possible to apply security restrictions to read, "
+"insert, update and delete actions for entities."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:286
+#, no-c-format
+msgid ""
+"To secure all actions for an entity class, add a <literal>@Restrict</"
+"literal> annotation on the class itself:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:289
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"customer\")\n"
+"@Restrict\n"
+"public class Customer {\n"
+"  ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:290
+#, no-c-format
+msgid ""
+"If no expression is specified in the <literal>@Restrict</literal> "
+"annotation, the default security check that is performed is a permission "
+"check of <literal>entityName:action</literal>, where <literal>entityName</"
+"literal> is the name of the entity (or the class name if no @Name is "
+"specified), and the <literal>action</literal> is either <literal>read</"
+"literal>, <literal>insert</literal>, <literal>update</literal> or "
+"<literal>delete</literal>."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:293
+#, no-c-format
+msgid ""
+"It is also possible to only restrict certain actions, by placing a "
+"<literal>@Restrict</literal> annotation on the relevent entity lifecycle "
+"method (annotated as follows):"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:298
+#, no-c-format
+msgid ""
+"<literal>@PostLoad</literal> - Called after an entity instance is loaded "
+"from the database. Use this method to configure a <literal>read</literal> "
+"permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:303
+#, no-c-format
+msgid ""
+"<literal>@PrePersist</literal> - Called before a new instance of the entity "
+"is inserted. Use this method to configure an <literal>insert</literal> "
+"permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:308
+#, no-c-format
+msgid ""
+"<literal>@PreUpdate</literal> - Called before an entity is updated. Use this "
+"method to configure an <literal>update</literal> permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:313
+#, no-c-format
+msgid ""
+"<literal>@PreRemove</literal> - Called before an entity is deleted. Use this "
+"method to configure a <literal>delete</literal> permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:318
+#, no-c-format
+msgid ""
+"Here's an example of how an entity would be configured to perform a security "
+"check for any <literal>insert</literal> operations. Please note that the "
+"method is not required to do anything, the only important thing in regard to "
+"security is how it is annotated:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:321
+#, no-c-format
+msgid ""
+"@PrePersist @Restrict\n"
+"  public void prePersist() {}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:322
+#, no-c-format
+msgid ""
+"And here's an example of an entity permission rule that checks if the "
+"authenticated user is allowed to create a new blog entry (from the seamspace "
+"example):"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:325
+#, no-c-format
+msgid ""
+"rule InsertMemberBlog\n"
+"  no-loop\n"
+"  activation-group \"permissions\"\n"
+"when\n"
+"  c: PermissionCheck(name == \"memberBlog\", action == \"insert\", granted "
+"== false)\n"
+"  Principal(nm : name)\n"
+"  MemberBlog(mbr : member -&gt; (mbr.getUsername().equals(nm)))\n"
+"then\n"
+"  c.grant();\n"
+"  modify(c);\n"
+"end;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:326
+#, no-c-format
+msgid ""
+"Finally, we need to install a listener class that integrates Seam security "
+"with your JPA provider."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:329
+#, no-c-format
+msgid "Entity security with JPA"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:330
+#, no-c-format
+msgid ""
+"Security checks for EJB3 entity beans are performed with an "
+"<literal>EntityListener</literal>. You can install this listener by using "
+"the following <literal>META-INF/orm.xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:333
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;entity-mappings xmlns=\"http://java.sun.com/xml/ns/persistence/orm\"\n"
+"                 xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"                 xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence/"
+"orm \n"
+"                 http://java.sun.com/xml/ns/persistence/orm_1_0.xsd\"\n"
+"                 version=\"1.0\"&gt;\n"
+"                 \n"
+"    &lt;persistence-unit-metadata&gt;\n"
+"        &lt;persistence-unit-defaults&gt;\n"
+"            &lt;entity-listeners&gt;\n"
+"                &lt;entity-listener class=\"org.jboss.seam.security."
+"EntitySecurityListener\"/&gt;\n"
+"            &lt;/entity-listeners&gt;\n"
+"        &lt;/persistence-unit-defaults&gt;\n"
+"    &lt;/persistence-unit-metadata&gt;\n"
+"    \n"
+"&lt;/entity-mappings&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:334
+#, no-c-format
+msgid "Entity security with Hibernate"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:335
+#, no-c-format
+msgid ""
+"If you are using a Hibernate <literal>SessionFactory</literal> configured "
+"via Seam, you don't need to do anything special to use entity security."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:338
+#, no-c-format
+msgid "Writing Security Rules"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:339
+#, no-c-format
+msgid ""
+"Up to this point there has been a lot of mention of permissions, but no "
+"information about how permissions are actually defined or granted. This "
+"section completes the picture, by explaining how permission checks are "
+"processed, and how to implement permission checks for a Seam application."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:342
+#, no-c-format
+msgid "Permissions Overview"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:343
+#, no-c-format
+msgid ""
+"So how does the security API know whether a user has the <literal>customer:"
+"modify</literal> permission for a specific customer? Seam Security provides "
+"quite a novel method for determining user permissions, based on JBoss Rules. "
+"A couple of the advantages of using a rule engine are 1) a centralized "
+"location for the business logic that is behind each user permission, and 2) "
+"speed - JBoss Rules uses very efficient algorithms for evaluating large "
+"numbers of complex rules involving multiple conditions."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:346
+#, no-c-format
+msgid "Configuring a rules file"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:347
+#, no-c-format
+msgid ""
+"Seam Security expects to find a <literal>RuleBase</literal> component called "
+"<literal>securityRules</literal> which it uses to evaluate permission "
+"checks. This is configured in <literal>components.xml</literal> as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:350
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:security=\"http://jboss.com/products/seam/security\"\n"
+"            xmlns:drools=\"http://jboss.com/products/seam/drools\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                     http://jboss.com/products/seam/core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components  \n"
+"                     http://jboss.com/products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/drools \n"
+"                     http://jboss.com/products/seam/drools-1.2.xsd\"\n"
+"                 http://jboss.com/products/seam/security \n"
+"                     http://jboss.com/products/seam/security-1.2.xsd"
+"\"&gt;                 \n"
+"        \n"
+"   &lt;drools:rule-base name=\"securityRules\"&gt;\n"
+"       &lt;drools:rule-files&gt;\n"
+"           &lt;value&gt;/META-INF/security.drl&lt;/value&gt;\n"
+"       &lt;/drools:rule-files&gt;\n"
+"   &lt;/drools:rule-base&gt;    \n"
+"   \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:351
+#, no-c-format
+msgid ""
+"Once the <literal>RuleBase</literal> component is configured, it's time to "
+"write the security rules."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:354
+#, no-c-format
+msgid "Creating a security rules file"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:355
+#, no-c-format
+msgid ""
+"For this step you need to create a file called <literal>security.drl</"
+"literal> in the <literal>/META-INF</literal> directory of your application's "
+"jar file. In actual fact this file can be called anything you want, and "
+"exist in any location as long as it is configured appropriately in "
+"<literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:358
+#, no-c-format
+msgid ""
+"So what should the security rules file contain? At this stage it might be a "
+"good idea to at least skim through the JBoss Rules documentation, however to "
+"get started here's an extremely simple example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:361
+#, no-c-format
+msgid ""
+"package MyApplicationPermissions;\n"
+"\n"
+"import org.jboss.seam.security.PermissionCheck;\n"
+"import org.jboss.seam.security.Role;\n"
+"\n"
+"rule CanUserDeleteCustomers\n"
+"when\n"
+"  c: PermissionCheck(name == \"customer\", action == \"delete\")\n"
+"  Role(name == \"admin\")\n"
+"then\n"
+"  c.grant();\n"
+"end;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:362
+#, no-c-format
+msgid ""
+"Let's break this down. The first thing we see is the package declaration. A "
+"package in JBoss Rules is essentially a collection of rules. The package "
+"name can be anything you want - it doesn't relate to anything else outside "
+"the scope of the rule base."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:365
+#, no-c-format
+msgid ""
+"The next thing we can notice is a couple of import statements for the "
+"<literal>PermissionCheck</literal> and <literal>Role</literal> classes. "
+"These imports inform the rules engine that we'll be referencing these "
+"classes within our rules."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:368
+#, no-c-format
+msgid ""
+"Finally we have the code for the rule. Each rule within a package should be "
+"given a unique name (usually describing the purpose of the rule). In this "
+"case our rule is called <literal>CanUserDeleteCustomers</literal> and will "
+"be used to check whether a user is allowed to delete a customer record."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:371
+#, no-c-format
+msgid ""
+"Looking at the body of the rule definition we can notice two distinct "
+"sections. Rules have what is known as a left hand side (LHS) and a right "
+"hand side (RHS). The LHS consists of the conditional part of the rule, i.e. "
+"a list of conditions which must be satisfied for the rule to fire. The LHS "
+"is represented by the <literal>when</literal> section. The RHS is the "
+"consequence, or action section of the rule that will only be fired if all of "
+"the conditions in the LHS are met. The RHS is represented by the "
+"<literal>then</literal> section. The end of the rule is denoted by the "
+"<literal>end;</literal> line."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:374
+#, no-c-format
+msgid ""
+"If we look at the LHS of the rule, we see two conditions listed there. Let's "
+"examine the first condition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:377
+#, no-c-format
+msgid "c: PermissionCheck(name == \"customer\", action == \"delete\")"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:378
+#, no-c-format
+msgid ""
+"In plain english, this condition is stating that there must exist a "
+"<literal>PermissionCheck</literal> object with a <literal>name</literal> "
+"property equal to \"customer\", and an <literal>action</literal> property "
+"equal to \"delete\" within the working memory. What is the working memory? "
+"It is a session-scoped object that contains the contextual information that "
+"is required by the rules engine to make a decision about a permission check. "
+"Each time the <literal>hasPermission()</literal> method is called, a "
+"temporary <literal>PermissionCheck</literal> object, or <emphasis>Fact</"
+"emphasis>, is asserted into the working memory. This "
+"<literal>PermissionCheck</literal> corresponds exactly to the permission "
+"that is being checked, so for example if you call <literal>hasPermission"
+"(\"account\", \"create\", null)</literal> then a <literal>PermissionCheck</"
+"literal> object with a <literal>name</literal> equal to \"account\" and "
+"<literal>action</literal> equal to \"create\" will be asserted into the "
+"working memory for the duration of the permission check."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:381
+#, no-c-format
+msgid ""
+"So what else is in the working memory? Besides the short-lived temporary "
+"facts asserted during a permission check, there are some longer-lived "
+"objects in the working memory that stay there for the entire duration of a "
+"user being authenticated. These include any <literal>java.security."
+"Principal</literal> objects that are created as part of the authentication "
+"process, plus a <literal>org.jboss.seam.security.Role</literal> object for "
+"each of the roles that the user is a member of. It is also possible to "
+"assert additional long-lived facts into the working memory by calling "
+"<literal>Identity.instance().getSecurityContext().assertObject()</literal>, "
+"passing the object as a parameter."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:384
+#, no-c-format
+msgid ""
+"Getting back to our simple example, we can also notice that the first line "
+"of our LHS is prefixed with <literal>c:</literal>. This is a variable "
+"binding, and is used to refer back to the object that is matched by the "
+"condition. Moving onto the second line of our LHS, we see this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:387
+#, no-c-format
+msgid "Role(name == \"admin\")"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:388
+#, no-c-format
+msgid ""
+"This condition simply states that there must be a <literal>Role</literal> "
+"object with a <literal>name</literal> of \"admin\" within the working "
+"memory. As mentioned, user roles are asserted into the working memory as "
+"long-lived facts. So, putting both conditions together, this rule is "
+"essentially saying \"I will fire if you are checking for the "
+"<literal>customer:delete</literal> permission and the user is a member of "
+"the <literal>admin</literal> role\"."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:391
+#, no-c-format
+msgid ""
+"So what is the consequence of the rule firing? Let's take a look at the RHS "
+"of the rule:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:394
+#, no-c-format
+msgid "c.grant()"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:395
+#, no-c-format
+msgid ""
+"The RHS consists of Java code, and in this case is invoking the "
+"<literal>grant()</literal> method of the <literal>c</literal> object, which "
+"as already mentioned is a variable binding for the <literal>PermissionCheck</"
+"literal> object. Besides the <literal>name</literal> and <literal>action</"
+"literal> properties of the <literal>PermissionCheck</literal> object, there "
+"is also a <literal>granted</literal> property which is initially set to "
+"<literal>false</literal>. Calling <literal>grant()</literal> on a "
+"<literal>PermissionCheck</literal> sets the <literal>granted</literal> "
+"property to <literal>true</literal>, which means that the permission check "
+"was successful, allowing the user to carry out whatever action the "
+"permission check was intended for."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:398
+#, no-c-format
+msgid "SSL Security"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:399
+#, no-c-format
+msgid ""
+"Seam includes basic support for serving sensitive pages via the HTTPS "
+"protocol. This is easily configured by specifying a <literal>scheme</"
+"literal> for the page in <literal>pages.xml</literal>. The following example "
+"shows how the view <literal>/login.xhtml</literal> is configured to use "
+"HTTPS:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:402
+#, no-c-format
+msgid "&lt;page view-id=\"/login.xhtml\" scheme=\"https\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:403
+#, no-c-format
+msgid ""
+"This configuration is automatically extended to both <literal>s:link</"
+"literal> and <literal>s:button</literal> JSF controls, which (when "
+"specifying the <literal>view</literal>) will also render the link using the "
+"correct protocol. Based on the previous example, the following link will use "
+"the HTTPS protocol because <literal>/login.xhtml</literal> is configured to "
+"use it:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:406
+#, no-c-format
+msgid "&lt;s:link view=\"/login.xhtml\" value=\"Login\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:407
+#, no-c-format
+msgid ""
+"Browsing directly to a view when using the <emphasis>incorrect</emphasis> "
+"protocol will cause a redirect to the same view using the <emphasis>correct</"
+"emphasis> protocol. For example, browsing to a page that has <literal>scheme="
+"\"https\"</literal> using HTTP will cause a redirect to the same page using "
+"HTTPS."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:410
+#, no-c-format
+msgid ""
+"It is also possible to configure a default <literal>scheme</literal> for all "
+"pages. This is actually quite important, as you might only wish to use HTTPS "
+"for a few pages, and if no default scheme is specified then the default "
+"behavior is to continue using the current scheme. What this means is that "
+"once you enter a page with HTTPS, then HTTPS will continue to be used even "
+"if you navigate away to other non-HTTPS pages (a bad thing!). So it is "
+"strongly recommended to include a default <literal>scheme</literal>, by "
+"configuring it on the default (<literal>\"*\"</literal>) view:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:413
+#, no-c-format
+msgid "&lt;page view-id=\"*\" scheme=\"http\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:414
+#, no-c-format
+msgid ""
+"Of course, if <emphasis>none</emphasis> of the pages in your application use "
+"HTTPS then it is not required to specify a default scheme."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:417
+#, no-c-format
+msgid "Implementing a Captcha Test"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:418
+#, no-c-format
+msgid ""
+"Though strictly not part of the security API, it might be useful in certain "
+"circumstances (such as new user registrations, posting to a public blog or "
+"forum) to implement a Captcha (<emphasis>C</emphasis>ompletely <emphasis>A</"
+"emphasis>utomated <emphasis>P</emphasis>ublic <emphasis>T</emphasis>uring "
+"test to tell <emphasis>C</emphasis>omputers and <emphasis>H</emphasis>umans "
+"<emphasis>A</emphasis>part) to prevent automated bots from interacting with "
+"your application. Seam provides seamless integration with JCaptcha, an "
+"excellent library for generating Captcha challenges. If you wish to use the "
+"captcha feature in your application you need to include the jcaptcha-* jar "
+"file from the Seam lib directory in your project, and register it in "
+"<literal>application.xml</literal> as a java module."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:421
+#, no-c-format
+msgid "Configuring the Captcha Servlet"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:422
+#, no-c-format
+msgid ""
+"To get up and running, it is necessary to configure the Seam Resource "
+"Servlet, which will provide the Captcha challenge images to your pages. This "
+"requires the following entry in <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:425
+#, no-c-format
+msgid ""
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"    \n"
+"&lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:426
+#, no-c-format
+msgid "Adding a Captcha to a page"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:427
+#, no-c-format
+msgid ""
+"Adding a captcha challenge to a page is extremely easy. Seam provides a page-"
+"scoped component, <literal>captcha</literal>, which provides everything that "
+"is required, including built-in captcha validation. Here's an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:430
+#, no-c-format
+msgid ""
+"&lt;div&gt;\n"
+"    &lt;h:graphicImage value=\"/seam/resource/captcha?#{captcha.id}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"  \n"
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"verifyCaptcha\"&gt;Enter the above letters&lt;/h:"
+"outputLabel&gt;\n"
+"    &lt;h:inputText id=\"verifyCaptcha\" value=\"#{captcha.response}\" "
+"required=\"true\"/&gt;\n"
+"    &lt;div class=\"validationError\"&gt;&lt;h:message for=\"verifyCaptcha\"/"
+"&gt;&lt;/div&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:431
+#, no-c-format
+msgid ""
+"That's all there is to it. The <literal>graphicImage</literal> control "
+"displays the Captcha challenge, and the <literal>inputText</literal> "
+"receives the user's response. The response is automatically validated "
+"against the Captcha when the form is submitted."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Spring.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Spring.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Spring.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,416 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Spring.xml:10
+#, no-c-format
+msgid "Spring Framework integration"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:11
+#, no-c-format
+msgid ""
+"The Spring integration module allows easy migration of Spring-based projects "
+"to Seam and allows Spring applications to take advantage of key Seam "
+"features like conversations and Seam's more sophisticated persistence "
+"context management."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:14
+#, no-c-format
+msgid "Seam's support for Spring provides the ability to:"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:19
+#, no-c-format
+msgid "inject Seam component instances into Spring beans"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:24
+#, no-c-format
+msgid "inject Spring beans into Seam components"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:29
+#, no-c-format
+msgid "turn Spring beans into Seam components"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:34
+#, no-c-format
+msgid "allow Spring beans to live in any Seam context"
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:40
+#, no-c-format
+msgid "Injecting Seam components into Spring beans"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:41
+#, no-c-format
+msgid ""
+"Injecting Seam component instances into Spring beans is accomplished using "
+"the <literal>&lt;seam:instance/&gt;</literal> namespace handler. To enable "
+"the Seam namespace handler, the Seam namespace must be added to the Spring "
+"beans definition file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:44
+#, no-c-format
+msgid ""
+"&lt;beans xmlns=\"http://www.springframework.org/schema/beans\"\n"
+"    xmlns:seam=\"http://jboss.com/products/seam/spring\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://www.springframework.org/schema/beans \n"
+"                        http://www.springframework.org/schema/beans/spring-"
+"beans-2.0.xsd\n"
+"                        http://jboss.com/products/seam/spring \n"
+"                        http://jboss.com/products/seam/spring-1.2.xsd\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:45
+#, no-c-format
+msgid "Now any Seam component may be injected into any Spring bean:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:48
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\"&gt;\n"
+"        &lt;seam:instance name=\"someComponent\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:49
+#, no-c-format
+msgid "An EL expression may be used instead of a component name:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:52
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\"&gt;\n"
+"        &lt;seam:instance name=\"#{someExpression}\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:53
+#, no-c-format
+msgid ""
+"Seam component instances may even be made available for injection into "
+"Spring beans by a Spring bean id."
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:56
+#, no-c-format
+msgid ""
+"&lt;seam:instance name=\"someComponent\" id=\"someSeamComponentInstance\"/"
+"&gt;\n"
+"\n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\" ref=\"someSeamComponentInstance"
+"\"&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:57
+#, no-c-format
+msgid "Now for the caveat!"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:60
+#, no-c-format
+msgid ""
+"Seam was designed from the ground up to support a stateful component model "
+"with multiple contexts. Spring was not. Unlike Seam bijection, Spring "
+"injection does not occur at method invocation time. Instead, injection "
+"happens only when the Spring bean is instantiated. So the instance available "
+"when the bean is instantiated will be the same instance that the bean uses "
+"for the entire life of the bean. For example, if a Seam "
+"<literal>CONVERSATION</literal>-scoped component instance is directly "
+"injected into a singleton Spring bean, that singleton will hold a reference "
+"to the same instance long after the conversation is over! We call this "
+"problem <emphasis>scope impedance</emphasis>. Seam bijection ensures that "
+"scope impedance is maintained naturally as an invocation flows through the "
+"system. In Spring, we need to inject a proxy of the Seam component, and "
+"resolve the reference when the proxy is invoked."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:63
+#, no-c-format
+msgid ""
+"The <literal>&lt;seam:instance/&gt;</literal> tag lets us automatically "
+"proxy the Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:66
+#, no-c-format
+msgid ""
+"&lt;seam:instance id=\"seamManagedEM\" name=\"someManagedEMComponent\" proxy="
+"\"true\"/&gt;\n"
+"        \n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\"&gt;\n"
+"    &lt;property name=\"entityManager\" ref=\"seamManagedEM\"&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:67
+#, no-c-format
+msgid ""
+"This example shows one way to use a Seam-managed persistence context from a "
+"Spring bean. (A more robust way to use Seam-managed persistence contexts as "
+"a replacement for the Spring <literal>OpenEntityManagerInView</literal> "
+"filter will be provided in a future release)"
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:73
+#, no-c-format
+msgid "Injecting Spring beans into Seam components"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:74
+#, no-c-format
+msgid ""
+"It is even easier to inject Spring beans into Seam component instances. "
+"Actually, there are two possible approaches:"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:79
+#, no-c-format
+msgid "inject a Spring bean using an EL expression"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:84
+#, no-c-format
+msgid "make the Spring bean a Seam component"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:89
+#, no-c-format
+msgid ""
+"We'll discuss the second option in the next section. The easiest approach is "
+"to access the Spring beans via EL."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:92
+#, no-c-format
+msgid ""
+"The Spring <literal>DelegatingVariableResolver</literal> is an integration "
+"point Spring provides for integrating Spring with JSF. This "
+"<literal>VariableResolver</literal> makes all Spring beans available in EL "
+"by their bean id. You'll need to add the "
+"<literal>DelegatingVariableResolver</literal> to <literal>faces-config.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:95
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;variable-resolver&gt;\n"
+"        org.springframework.web.jsf.DelegatingVariableResolver\n"
+"    &lt;/variable-resolver&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:96
+#, no-c-format
+msgid "Then you can inject Spring beans using <literal>@In</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:99
+#, no-c-format
+msgid ""
+"@In(\"#{bookingService}\")\n"
+"private BookingService bookingService;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:100
+#, no-c-format
+msgid ""
+"The use of Spring beans in EL is not limited to injection. Spring beans may "
+"be used anywhere that EL expressions are used in Seam: process and pageflow "
+"definitions, working memory assertions, etc..."
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:106
+#, no-c-format
+msgid "Making a Spring bean into a Seam component"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:107
+#, no-c-format
+msgid ""
+"The <literal>&lt;seam:component/&gt;</literal> namespace handler can be used "
+"to make any Spring bean a Seam component. Just place the <literal>&lt;seam:"
+"component/&gt;</literal> tag within the declaration of the bean that you "
+"wish to be a Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:110
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;seam:component/&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:111
+#, no-c-format
+msgid ""
+"By default, <literal>&lt;seam:component/&gt;</literal> will create a "
+"<literal>STATELESS</literal> Seam component with class and name provided in "
+"the bean definition. Occasionally, such as when a <literal>FactoryBean</"
+"literal> is used, the class of the Spring bean may not be the class "
+"appearing in the bean definition. In such cases the <literal>beanClass</"
+"literal> should be explicitly specified. A Seam component name may be "
+"explicitly specified in cases where there is potential for a naming conflict."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:114
+#, no-c-format
+msgid ""
+"The <literal>scope</literal> attribute of <literal>&lt;seam:component/&gt;</"
+"literal> may be used if you wish the Spring bean to be managed in a "
+"particular Seam scope. The Spring bean must be scoped to <literal>prototype</"
+"literal> if the Seam scope specified is anything other than "
+"<literal>STATELESS</literal>. Pre-existing Spring beans usually have a "
+"fundamentally stateless character, so this attribute is not usually needed."
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:120
+#, no-c-format
+msgid "Seam-scoped Spring beans"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:121
+#, no-c-format
+msgid ""
+"The Seam integration package also lets you use Seam's contexts as Spring 2.0 "
+"style custom scopes. This lets you declare any Spring bean in any of Seam's "
+"contexts. However, note once again that Spring's component model was never "
+"architected to support statefulness, so please use this feature with great "
+"care. In particular, clustering of session or conversation scoped Spring "
+"beans is deeply problematic, and care must be taken when injecting a bean or "
+"component from a wider scope into a bean of a narrower scope."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:124
+#, no-c-format
+msgid ""
+"By specifying <literal>&lt;seam:configure-scopes/&gt;</literal> once in a "
+"Spring bean factory configuration, all of the Seam scopes will be available "
+"to Spring beans as custom scopes. To associate a Spring bean with a "
+"particular Seam scope, specify the Seam scope in the <literal>scope</"
+"literal> attribute of the bean definition."
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:127
+#, no-c-format
+msgid ""
+"&lt;!-- Only needs to be specified once per bean factory--&gt;\n"
+"&lt;seam:configure-scopes/&gt;\n"
+"\n"
+"...\n"
+"\n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope=\"seam."
+"CONVERSATION\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:128
+#, no-c-format
+msgid ""
+"The prefix of the scope name may be changed by specifying the "
+"<literal>prefix</literal> attribute in the <literal>configure-scopes</"
+"literal> definition. (The default prefix is <literal>seam.</literal>)"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:131
+#, no-c-format
+msgid ""
+"Seam-scoped Spring beans defined this way can be injected into other Spring "
+"beans without the use of <literal>&lt;seam:instance/&gt;</literal>. However, "
+"care must be taken to ensure scope impedance is maintained. The normal "
+"approach used in Spring is to specify <literal>&lt;aop:scoped-proxy/&gt;</"
+"literal> in the bean definition. However, Seam-scoped Spring beans are "
+"<emphasis>not</emphasis> compatible with <literal>&lt;aop:scoped-proxy/&gt;</"
+"literal>. So if you need to inject a Seam-scoped Spring bean into a "
+"singleton, <literal>&lt;seam:instance/&gt;</literal> must be used:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:134
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope=\"seam."
+"CONVERSATION\"/&gt;\n"
+"\n"
+"...\n"
+"\n"
+"&lt;bean id=\"someSingleton\"&gt;\n"
+"    &lt;property name=\"someSeamScopedSpringBean\"&gt;\n"
+"        &lt;seam:instance name=\"someSpringBean\" proxy=\"true\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Testing.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Testing.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Testing.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,342 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Testing.xml:10
+#, no-c-format
+msgid "Testing Seam applications"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:11
+#, no-c-format
+msgid ""
+"Most Seam applications will need at least two kinds of automated tests: "
+"<emphasis>unit tests</emphasis>, which test a particular Seam component in "
+"isolation, and scripted <emphasis>integration tests</emphasis> which "
+"exercise all Java layers of the application (that is, everything except the "
+"view pages)."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:14
+#, no-c-format
+msgid "Both kinds of tests are very easy to write."
+msgstr ""
+
+#. Tag: title
+#: Testing.xml:18
+#, no-c-format
+msgid "Unit testing Seam components"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:19
+#, no-c-format
+msgid ""
+"All Seam components are POJOs. This is a great place to start if you want "
+"easy unit testing. And since Seam emphasises the use of bijection for inter-"
+"component interactions and access to contextual objects, it's very easy to "
+"test a Seam component outside of its normal runtime environment."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:22
+#, no-c-format
+msgid "Consider the following Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:25
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Scope(EVENT)\n"
+"@Name(\"register\")\n"
+"public class RegisterAction implements Register\n"
+"{\n"
+"   private User user;\n"
+"   private EntityManager em;\n"
+"\n"
+"   @In\n"
+"   public void setUser(User user) {\n"
+"       this.user = user;\n"
+"   }\n"
+"   \n"
+"   @PersistenceContext\n"
+"   public void setBookingDatabase(EntityManager em) {\n"
+"       this.em = em;\n"
+"   }\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = em.createQuery(\"select username from User where "
+"username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getResultList();\n"
+"      if (existing.size()==0)\n"
+"      {\n"
+"         em.persist(user);\n"
+"         return \"success\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:26
+#, no-c-format
+msgid "We could write a TestNG test for this component as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:29
+#, no-c-format
+msgid ""
+"public class RegisterActionTest\n"
+"{\n"
+"\n"
+"    @Test\n"
+"    public testRegisterAction()\n"
+"    {\n"
+"        EntityManager em = getEntityManagerFactory().createEntityManager();\n"
+"        em.getTransaction().begin();\n"
+"        \n"
+"        User gavin = new User();\n"
+"        gavin.setName(\"Gavin King\");\n"
+"        gavin.setUserName(\"1ovthafew\");\n"
+"        gavin.setPassword(\"secret\");\n"
+"        \n"
+"        RegisterAction action = new RegisterAction();\n"
+"        action.setUser(gavin);\n"
+"        action.setBookingDatabase(em);\n"
+"        \n"
+"        assert \"success\".equals( action.register() );\n"
+"        \n"
+"        em.getTransaction().commit();\n"
+"        em.close();\n"
+"    }\n"
+"    \n"
+"    \n"
+"    private EntityManagerFactory emf;\n"
+"    \n"
+"    public EntityManagerFactory getEntityManagerFactory()\n"
+"    {\n"
+"        return emf;\n"
+"    }\n"
+"    \n"
+"    @Configuration(beforeTestClass=true)\n"
+"    public void init() \n"
+"    {\n"
+"        emf = Persistence.createEntityManagerFactory"
+"(\"myResourceLocalEntityManager\");\n"
+"    }\n"
+"    \n"
+"    @Configuration(afterTestClass=true)\n"
+"    public void destroy()\n"
+"    {\n"
+"        emf.close();\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:30
+#, no-c-format
+msgid ""
+"Seam components don't usually depend directly upon container infrastructure, "
+"so most unit testing as as easy as that!"
+msgstr ""
+
+#. Tag: title
+#: Testing.xml:36
+#, no-c-format
+msgid "Integration testing Seam applications"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:37
+#, no-c-format
+msgid ""
+"Integration testing is slightly more difficult. In this case, we can't "
+"eliminate the container infrastructure; indeed, that is part of what is "
+"being tested! At the same time, we don't want to be forced to deploy our "
+"application to an application server to run the automated tests. We need to "
+"be able to reproduce just enough of the container infrastructure inside our "
+"testing environment to be able to exercise the whole application, without "
+"hurting performance too much."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:40
+#, no-c-format
+msgid ""
+"A second problem is emulating user interactions. A third problem is where to "
+"put our assertions. Some test frameworks let us test the whole application "
+"by reproducing user interactions with the web browser. These frameworks have "
+"their place, but they are not appropriate for use at development time."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:43
+#, no-c-format
+msgid ""
+"The approach taken by Seam is to let you write tests that script your "
+"components while running inside a pruned down container environment (Seam, "
+"together with the JBoss Embeddable EJB container). The role of the test "
+"script is basically to reproduce the interaction between the view and the "
+"Seam components. In other words, you get to pretend you are the JSF "
+"implementation!"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:46
+#, no-c-format
+msgid "This approach tests everything except the view."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:49
+#, no-c-format
+msgid "Let's consider a JSP view for the component we unit tested above:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:52
+#, no-c-format
+msgid ""
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Register New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;table border=\"0\"&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Username&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputText value=\"#{user.username}\"/&gt;&lt;/"
+"td&gt;\n"
+"       &lt;/tr&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Real Name&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputText value=\"#{user.name}\"/&gt;&lt;/td&gt;\n"
+"       &lt;/tr&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Password&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputSecret value=\"#{user.password}\"/&gt;&lt;/"
+"td&gt;\n"
+"       &lt;/tr&gt;\n"
+"     &lt;/table&gt;\n"
+"     &lt;h:messages/&gt;\n"
+"     &lt;h:commandButton type=\"submit\" value=\"Register\" action=\"#"
+"{register.register}\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:53
+#, no-c-format
+msgid ""
+"We want to test the registration functionality of our application (the stuff "
+"that happens when the user clicks the Register button). We'll reproduce the "
+"JSF request lifecycle in an automated TestNG test:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:56
+#, no-c-format
+msgid ""
+"public class RegisterTest extends SeamTest\n"
+"{\n"
+"   \n"
+"   @Test\n"
+"   public void testRegister() throws Exception\n"
+"   {\n"
+"            \n"
+"      new FacesRequest() {\n"
+"\n"
+"         @Override\n"
+"         protected void processValidations() throws Exception\n"
+"         {\n"
+"            validateValue(\"#{user.username}\", \"1ovthafew\");\n"
+"            validateValue(\"#{user.name}\", \"Gavin King\");\n"
+"            validateValue(\"#{user.password}\", \"secret\");\n"
+"            assert !isValidationFailure();\n"
+"         }\n"
+"         \n"
+"         @Override\n"
+"         protected void updateModelValues() throws Exception\n"
+"         {\n"
+"            setValue(\"#{user.username}\", \"1ovthafew\");\n"
+"            setValue(\"#{user.name}\", \"Gavin King\");\n"
+"            setValue(\"#{user.password}\", \"secret\");\n"
+"         }\n"
+"\n"
+"         @Override\n"
+"         protected void invokeApplication()\n"
+"         {\n"
+"            assert invokeMethod(\"#{register.register}\").equals(\"success"
+"\");\n"
+"         }\n"
+"\n"
+"         @Override\n"
+"         protected void renderResponse()\n"
+"         {\n"
+"            assert getValue(\"#{user.username}\").equals(\"1ovthafew\");\n"
+"            assert getValue(\"#{user.name}\").equals(\"Gavin King\");\n"
+"            assert getValue(\"#{user.password}\").equals(\"secret\");\n"
+"         }\n"
+"         \n"
+"      }.run();\n"
+"      \n"
+"   }\n"
+"\n"
+"   ...\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:57
+#, no-c-format
+msgid ""
+"Notice that we've extended <literal>SeamTest</literal>, which provides a "
+"Seam environment for our components, and written our test script as an "
+"anonymous class that extends <literal>SeamTest.FacesRequest</literal>, which "
+"provides an emulated JSF request lifecycle. (There is also a "
+"<literal>SeamTest.NonFacesRequest</literal> for testing GET requests.) We've "
+"written our code in methods which are named for the various JSF phases, to "
+"emulate the calls that JSF would make to our components. Then we've thrown "
+"in various assertions."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:60
+#, no-c-format
+msgid ""
+"You'll find plenty of integration tests for the Seam example applications "
+"which demonstrate more complex cases. There are instructions for running "
+"these tests using Ant, or using the TestNG plugin for eclipse:"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Text.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Text.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Text.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,362 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Text.xml:10
+#, no-c-format
+msgid "Seam Text"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:11
+#, no-c-format
+msgid ""
+"Collaboration-oriented websites require a human-friendly markup language for "
+"easy entry of formatted text in forum posts, wiki pages, blogs, comments, "
+"etc. Seam provides the <literal>&lt;s:formattedText/&gt;</literal> control "
+"for display of formatted text that conforms to the <emphasis>Seam Text</"
+"emphasis> language. Seam Text is implemented using an ANTLR-based parser. "
+"You don't need to know anything about ANTLR to use it, however."
+msgstr ""
+
+#. Tag: title
+#: Text.xml:15
+#, no-c-format
+msgid "Basic fomatting"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:16
+#, no-c-format
+msgid "Here is a simple example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:19
+#, no-c-format
+msgid ""
+"It's easy to make *bold text*, /italic text/, |monospace|, \n"
+"~deleted text~, super^scripts^ or _underlines_."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:20
+#, no-c-format
+msgid ""
+"If we display this using <literal>&lt;s:formattedText/&gt;</literal>, we "
+"will get the following HTML produced:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:23
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"It's easy to make &lt;b&gt;bold text&lt;/b&gt;, &lt;i&gt;italic text&lt;/"
+"i&gt;, &lt;tt&gt;monospace&lt;/tt&gt;\n"
+"&lt;del&gt;deleted text&lt;/del&gt;, super&lt;sup&gt;scripts&lt;/sup&gt; or "
+"&lt;u&gt;underlines&lt;/u&gt;.\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:24
+#, no-c-format
+msgid ""
+"We can use a blank line to indicate a new paragraph, and <literal>+</"
+"literal> to indicate a heading:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:27
+#, no-c-format
+msgid ""
+"+This is a big heading\n"
+"You /must/ have some text following a heading!\n"
+" \n"
+"++This is a smaller heading\n"
+"This is the first paragraph. We can split it across multiple \n"
+"lines, but we must end it with a blank line.\n"
+"\n"
+"This is the second paragraph."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:28
+#, no-c-format
+msgid ""
+"(Note that a simple newline is ignored, you need an additional blank line to "
+"wrap text into a new paragraph.) This is the HTML that results:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:31
+#, no-c-format
+msgid ""
+"&lt;h1&gt;This is a big heading&lt;/h1&gt;\n"
+"&lt;p&gt;\n"
+"You &lt;i&gt;must&lt;/i&gt; have some text following a heading!\n"
+"&lt;/p&gt;\n"
+" \n"
+"&lt;h2&gt;This is a smaller heading&lt;/h2&gt;\n"
+"&lt;p&gt;\n"
+"This is the first paragraph. We can split it across multiple \n"
+"lines, but we must end it with a blank line.\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"This is the second paragraph.\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:32
+#, no-c-format
+msgid ""
+"Ordered lists are created using the <literal>#</literal> character. "
+"Unordered lists use the <literal>=</literal> character:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:35
+#, no-c-format
+msgid ""
+"An ordered list:\n"
+"        \n"
+"#first item\n"
+"#second item\n"
+"#and even the /third/ item\n"
+"\n"
+"An unordered list:\n"
+"\n"
+"=an item\n"
+"=another item"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:36
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"An ordered list:\n"
+"&lt;/p&gt;\n"
+" \n"
+"&lt;ol&gt;       \n"
+"&lt;li&gt;first item&lt;/li&gt;\n"
+"&lt;li&gt;second item&lt;/li&gt;\n"
+"&lt;li&gt;and even the &lt;i&gt;third&lt;/i&gt; item&lt;/li&gt;\n"
+"&lt;/ol&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"An unordered list:\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;ul&gt;\n"
+"&lt;li&gt;an item&lt;/li&gt;\n"
+"&lt;li&gt;another item&lt;/li&gt;\n"
+"&lt;/ul&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:37
+#, no-c-format
+msgid "Quoted sections should be surrounded in double quotes:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:40
+#, no-c-format
+msgid ""
+"The other guy said:\n"
+"        \n"
+"\"Nyeah nyeah-nee \n"
+"/nyeah/ nyeah!\"\n"
+"\n"
+"But what do you think he means by \"nyeah-nee\"?"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:41
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"The other guy said:\n"
+"&lt;/p&gt;\n"
+"        \n"
+"&lt;q&gt;Nyeah nyeah-nee\n"
+"&lt;i&gt;nyeah&lt;/i&gt; nyeah!&lt;/q&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"But what do you think he means by &lt;q&gt;nyeah-nee&lt;/q&gt;?\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: title
+#: Text.xml:45
+#, no-c-format
+msgid "Entering code and text with special characters"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:46
+#, no-c-format
+msgid ""
+"Special characters such as <literal>*</literal>, <literal>|</literal> and "
+"<literal>#</literal>, along with HTML characters such as <literal>&lt;</"
+"literal>, <literal>&gt;</literal> and <literal>&amp;</literal> may be "
+"escaped using <literal>&#92;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:49
+#, no-c-format
+msgid ""
+"You can write down equations like 2&#92;*3&#92;=6 and HTML tags\n"
+"like &#92;&lt;body&#92;&gt; using the escape character: &#92;&#92;."
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:50
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"You can write down equations like 2*3=6 and HTML tags\n"
+"like &lt;body&gt; using the escape character: &#92;.\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:51
+#, no-c-format
+msgid "And we can quote code blocks using backticks:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:54
+#, no-c-format
+msgid ""
+"My code doesn't work:\n"
+"\n"
+"`for (int i=0; i&lt;100; i--)\n"
+"{\n"
+"    doSomething();\n"
+"}`\n"
+"\n"
+"Any ideas?"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:55
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"My code doesn't work:\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;pre&gt;for (int i=0; i&lt;100; i--)\n"
+"{\n"
+"    doSomething();\n"
+"}&lt;/pre&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"Any ideas?\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: title
+#: Text.xml:59
+#, no-c-format
+msgid "Links"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:60
+#, no-c-format
+msgid "A link may be created using the following syntax:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:63
+#, no-c-format
+msgid "Go to the Seam website at [=&gt;http://jboss.com/products/seam]."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:64
+#, no-c-format
+msgid "Or, if you want to specify the text of the link:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:67
+#, no-c-format
+msgid "Go to [the Seam website=&gt;http://jboss.com/products/seam]."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:68
+#, no-c-format
+msgid ""
+"For advanced users, it is even possible to customize the Seam Text parser to "
+"understand wikiword links written using this syntax."
+msgstr ""
+
+#. Tag: title
+#: Text.xml:74
+#, no-c-format
+msgid "Entering HTML"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:75
+#, no-c-format
+msgid ""
+"Text may even include a certain limited subset of HTML (don't worry, the "
+"subset is chosen to be safe from cross-site scripting attacks). This is "
+"useful for creating links:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:78
+#, no-c-format
+msgid ""
+"You might want to link to &lt;a href=\"http://jboss.com/products/seam\"&gt;"
+"something\n"
+"cool&lt;/a&gt;, or even include an image: &lt;img src=\"/logo.jpg\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:79
+#, no-c-format
+msgid "And for creating tables:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:82
+#, no-c-format
+msgid ""
+"&lt;table&gt;\n"
+"    &lt;tr&gt;&lt;td&gt;First name:&lt;/td&gt;&lt;td&gt;Gavin&lt;/td&gt;&lt;/"
+"tr&gt;\n"
+"    &lt;tr&gt;&lt;td&gt;Last name:&lt;/td&gt;&lt;td&gt;King&lt;/td&gt;&lt;/"
+"tr&gt;\n"
+"&lt;/table&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:83
+#, no-c-format
+msgid "But you can do much more if you want!"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Tools.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Tools.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Tools.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,769 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Tools.xml:10
+#, no-c-format
+msgid "Seam tools"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:12
+#, no-c-format
+msgid "jBPM designer and viewer"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:13
+#, no-c-format
+msgid ""
+"The jBPM designer and viewer will let you design and view in a nice way your "
+"business processes and your pageflows. This convenient tool is part of JBoss "
+"Eclipse IDE and more details can be found in the jBPM's documentation "
+"(http://docs.jboss.com/jbpm/v3/gpd/)"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:17
+#, no-c-format
+msgid "<title>Business process designer</title>"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:18
+#, no-c-format
+msgid "This tool lets you design your own business process in a graphical way."
+msgstr ""
+
+#. Tag: screeninfo
+#: Tools.xml:21 Tools.xml:37
+#, no-c-format
+msgid "<screeninfo>Business process designer</screeninfo>"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:33
+#, no-c-format
+msgid "Pageflow viewer"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:34
+#, no-c-format
+msgid ""
+"This tool let you design to some extend your pageflows and let you build "
+"graphical views of them so you can easily share and compare ideas on how it "
+"should be designed."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:51
+#, no-c-format
+msgid "CRUD-application generator"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:52
+#, no-c-format
+msgid ""
+"This chapter, will give you a short overview of the support for Seam that is "
+"available in the Hibernate Tools. Hibernate Tools is a set of tools for "
+"working with Hibernate and related technologies, such as JBoss Seam and "
+"EJB3. The tools are available as a set of eclipse plugins and Ant tasks. You "
+"can download the Hibernate Tools from the JBoss Eclipse IDE or Hibernate "
+"Tools websites."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:55
+#, no-c-format
+msgid ""
+"The specific support for Seam that is currently available is generation of a "
+"fully functional Seam based CRUD-application. The CRUD-application can be "
+"generated based on your existing Hibernate mapping files or EJB3 annotated "
+"POJO's or even fully reverse engineered from your existing database schema."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:58
+#, no-c-format
+msgid ""
+"The following sections is focused on the features required to understand for "
+"usage with Seam. The content is derived from the the Hibernate Tools "
+"reference documentation. Thus if you need more detailed information please "
+"refer to the Hibernate Tools documentation."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:62
+#, no-c-format
+msgid "Creating a Hibernate configuration file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:63
+#, no-c-format
+msgid ""
+"To be able to reverse engineer and generate code a hibernate.properties or "
+"hibernate.cfg.xml file is needed. The Hibernate Tools provide a wizard for "
+"generating the hibernate.cfg.xml file if you do not already have such file."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:66
+#, no-c-format
+msgid ""
+"Start the wizard by clicking \"New Wizard\" (Ctrl+N), select the Hibernate/"
+"Hibernate Configuration file (cfg.xml) wizard and press \"Next\". After "
+"selecting the wanted location for the hibernate.cfg.xml file, you will see "
+"the following page:"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:77
+#, no-c-format
+msgid ""
+"Tip: The contents in the combo boxes for the JDBC driver class and JDBC URL "
+"change automatically, depending on the Dialect and actual driver you have "
+"chosen."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:80
+#, no-c-format
+msgid ""
+"Enter your configuration information in this dialog. Details about the "
+"configuration options can be found in Hibernate reference documentation."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:83
+#, no-c-format
+msgid ""
+"Press \"Finish\" to create the configuration file, after optionally creating "
+"a Console onfiguration, the hibernate.cfg.xml will be automatically opened "
+"in an editor. The last option \"Create Console Configuration\" is enabled by "
+"default and when enabled i will automatically use the hibernate.cfg.xml for "
+"the basis of a \"Console Configuration\""
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:89
+#, no-c-format
+msgid "<title>Creating a Hibernate Console configuration</title>"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:90
+#, no-c-format
+msgid ""
+"A Console Configuration describes to the Hibernate plugin which "
+"configuration files should be used to configure hibernate, including which "
+"classpath is needed to load the POJO's, JDBC drivers etc. It is required to "
+"make usage of query prototyping, reverse engineering and code generation. "
+"You can have multiple named console configurations. Normally you would just "
+"need one per project, but more (or less) is definitly possible."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:93
+#, no-c-format
+msgid ""
+"You create a console configuration by running the Console Configuration "
+"wizard, shown in the following screenshot. The same wizard will also be used "
+"if you are coming from the hibernate.cfg.xml wizard and had enabled \"Create "
+"Console Configuration\"."
+msgstr ""
+
+#. Tag: caption
+#: Tools.xml:103
+#, no-c-format
+msgid "<caption>Creating a Hibernate Console configuration</caption>"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:105
+#, no-c-format
+msgid ""
+"The following table describes the relevant settings. The wizard can "
+"automatically detect default values for most of these if you started the "
+"Wizard with the relevant java project selected"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:109
+#, no-c-format
+msgid "Hibernate Console Configuration Parameters"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:117
+#, no-c-format
+msgid "Parameter"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:122 Tools.xml:308 Tools.xml:458
+#, no-c-format
+msgid "Description"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:127
+#, no-c-format
+msgid "Auto detected value"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:136
+#, no-c-format
+msgid "Name"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:141
+#, no-c-format
+msgid "The unique name of the configuration"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:146
+#, no-c-format
+msgid "Name of the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:153
+#, no-c-format
+msgid "Property file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:158
+#, no-c-format
+msgid "Path to a hibernate.properties file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:163
+#, no-c-format
+msgid "First hibernate.properties file found in the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:170
+#, no-c-format
+msgid "Configuration file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:175
+#, no-c-format
+msgid "Path to a hibernate.cfg.xml file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:180
+#, no-c-format
+msgid "First hibernate.cfg.xml file found in the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:187
+#, no-c-format
+msgid "Enable Hibernate ejb3/annotations"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:192
+#, no-c-format
+msgid ""
+"Selecting this option enables usage of annotated classes. hbm.xml files are "
+"of course still possible to use too. This feature requires running the "
+"Eclipse IDE with a JDK 5 runtime, otherwise you will get classloading and/or "
+"version errors."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:197
+#, no-c-format
+msgid "Not enabled"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:204
+#, no-c-format
+msgid "Mapping files"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:209
+#, no-c-format
+msgid ""
+"List of additional mapping files that should be loaded. Note: A hibernate."
+"cfg.xml can also contain mappings. Thus if these a duplicated here, you will "
+"get \"Duplicate mapping\" errors when using the console configuration."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:214
+#, no-c-format
+msgid ""
+"If no hibernate.cfg.xml file is found, all hbm.xml files found in the "
+"selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:221
+#, no-c-format
+msgid "Classpath"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:226
+#, no-c-format
+msgid ""
+"The classpath for loading POJO and JDBC drivers. Do not add Hibernate core "
+"libraries or dependencies, they are already included. If you get "
+"ClassNotFound errors then check this list for possible missing or redundant "
+"directories/jars."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:231
+#, no-c-format
+msgid ""
+"The default build output directory and any JARs with a class implementing "
+"java.sql.Driver in the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:239
+#, no-c-format
+msgid ""
+"Clicking \"Finish\" creates the configuration and shows it in the "
+"\"Hibernate Configurations\" view"
+msgstr ""
+
+#. Tag: caption
+#: Tools.xml:249
+#, no-c-format
+msgid "Console overview"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:254
+#, no-c-format
+msgid "Reverse engineering and code generation"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:255
+#, no-c-format
+msgid ""
+"A very simple \"click-and-generate\" reverse engineering and code generation "
+"facility is available. It is this facility that allows you to generate the "
+"skeleton for a full Seam CRUD application."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:258
+#, no-c-format
+msgid ""
+"To start working with this process, start the \"Hibernate Code Generation\" "
+"which is available in the toolbar via the Hibernate icon or via the \"Run/"
+"Hibernate Code Generation\" menu item."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:262
+#, no-c-format
+msgid "Code Generation Launcher"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:263
+#, no-c-format
+msgid ""
+"When you click on \"Hibernate Code Generation\" the standard Eclipse "
+"launcher dialog will appear. In this dialog you can create, edit and delete "
+"named Hibernate code generation \"launchers\"."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:274
+#, no-c-format
+msgid ""
+"The dialog has the standard tabs \"Refresh\" and \"Common\" that can be used "
+"to configure which directories should be automatically refreshed and various "
+"general settings launchers, such as saving them in a project for sharing the "
+"launcher within a team."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:285
+#, no-c-format
+msgid ""
+"The first time you create a code generation launcher you should give it a "
+"meaningfull name, otherwise the default prefix \"New_Generation\" will be "
+"used."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:288
+#, no-c-format
+msgid ""
+"Note: The \"At least one exporter option must be selected\" is just a "
+"warning stating that for this launch to work you need to select an exporter "
+"on the Exporter tab. When an exporter has been selected the warning will "
+"disappear."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:291
+#, no-c-format
+msgid "On the \"Main\" tab you the following fields:"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:295
+#, no-c-format
+msgid "Code generation \"Main\" tab fields"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:303 Tools.xml:453
+#, no-c-format
+msgid "Field"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:317
+#, no-c-format
+msgid "Console Configuration"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:322
+#, no-c-format
+msgid ""
+"The name of the console configuration which should be used when code "
+"generating."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:329
+#, no-c-format
+msgid "Output directory"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:334
+#, no-c-format
+msgid ""
+"Path to a directory into where all output will be written by default. Be "
+"aware that existing files will be overwritten, so be sure to specify the "
+"correct directory."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:341
+#, no-c-format
+msgid "Reverse engineer from JDBC Connection"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:346
+#, no-c-format
+msgid ""
+"If enabled the tools will reverse engineer the database available via the "
+"connection information in the selected Hibernate Console Configuration and "
+"generate code based on the database schema. If not enabled the code "
+"generation will just be based on the mappings already specified in the "
+"Hibernate Console configuration."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:353
+#, no-c-format
+msgid "Package"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:358
+#, no-c-format
+msgid ""
+"The package name here is used as the default package name for any entities "
+"found when reverse engineering."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:365
+#, no-c-format
+msgid "reveng.xml"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:370
+#, no-c-format
+msgid ""
+"Path to a reveng.xml file. A reveng.xml file allows you to control certain "
+"aspects of the reverse engineering. e.g. how jdbc types are mapped to "
+"hibernate types and especially important which tables are included/excluded "
+"from the process. Clicking \"setup\" allows you to select an existing reveng."
+"xml file or create a new one.."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:377
+#, no-c-format
+msgid "reveng. strategy"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:382
+#, no-c-format
+msgid ""
+"If reveng.xml does not provide enough customization you can provide your own "
+"implementation of an ReverseEngineeringStrategy. The class need to be in the "
+"claspath of the Console Configuration, otherwise you will get class not "
+"found exceptions."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:389
+#, no-c-format
+msgid "Generate basic typed composite ids"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:394
+#, no-c-format
+msgid ""
+"This field should always be enabled when generating the Seam CRUD "
+"application. A table that has a multi-colum primary key a &lt;composite-"
+"id&gt; mapping will always be created. If this option is enabled and there "
+"are matching foreign-keys each key column is still considered a 'basic' "
+"scalar (string, long, etc.) instead of a reference to an entity. If you "
+"disable this option a &lt;key-many-to-one&gt; instead. Note: a &lt;many-to-"
+"one&gt; property is still created, but is simply marked as non-updatable and "
+"non-insertable."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:401
+#, no-c-format
+msgid "Use custom templates"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:406
+#, no-c-format
+msgid ""
+"If enabled, the Template directory will be searched first when looking up "
+"the velocity templates, allowing you to redefine how the individual "
+"templates process the hibernate mapping model."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:413
+#, no-c-format
+msgid "Template directory"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:418
+#, no-c-format
+msgid "A path to a directory with custom velocity templates."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:429
+#, no-c-format
+msgid "Exporters"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:430
+#, no-c-format
+msgid ""
+"The exporters tab is used to specify which type of code that should be "
+"generated. Each selection represents an \"Exporter\" that are responsible "
+"for generating the code, hence the name."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:441
+#, no-c-format
+msgid ""
+"The following table describes in short the various exporters. The most "
+"relevant for Seam is of course the \"JBoss Seam Skeleton app\"."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:445
+#, no-c-format
+msgid "Code generation \"Exporter\" tab fields"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:467
+#, no-c-format
+msgid "Generate domain code"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:472
+#, no-c-format
+msgid ""
+"Generates POJO's for all the persistent classes and components found in the "
+"given Hibernate configuration."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:479
+#, no-c-format
+msgid "JDK 1.5 constructs"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:484
+#, no-c-format
+msgid "When enabled the POJO's will use JDK 1.5 constructs."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:491
+#, no-c-format
+msgid "EJB3/JSR-220 annotations"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:496
+#, no-c-format
+msgid ""
+"When enabled the POJO's will be annotated according to the EJB3/JSR-220 "
+"persistency specification."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:503
+#, no-c-format
+msgid "Generate DAO code"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:508
+#, no-c-format
+msgid "Generates a set of DAO's for each entity found."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:515
+#, no-c-format
+msgid "Generate Mappings"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:520
+#, no-c-format
+msgid "Generate mapping (hbm.xml) files for each entity"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:527
+#, no-c-format
+msgid "Generate hibernate configuration file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:532
+#, no-c-format
+msgid ""
+"Generate a hibernate.cfg.xml file. Used to keep the hibernate.cfg.xml "
+"uptodate with any new found mapping files."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:539
+#, no-c-format
+msgid "Generate schema html-documentation"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:544
+#, no-c-format
+msgid ""
+"Generates set of html pages that documents the database schema and some of "
+"the mappings."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:551
+#, no-c-format
+msgid "Generate JBoss Seam skeleton app (beta)"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:556
+#, no-c-format
+msgid ""
+"Generates a complete JBoss Seam skeleton app. The generation will include "
+"annotated POJO's, Seam controller beans and a JSP for the presentation "
+"layer. See the generated readme.txt for how to use it."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:559
+#, no-c-format
+msgid ""
+"Note: this exporter generates a full application, including a build.xml thus "
+"you will get the best results if you use an output directory which is the "
+"root of your project."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:570
+#, no-c-format
+msgid "Generating and using the code"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:571
+#, no-c-format
+msgid ""
+"When you have finished filling out the settings, simply press \"Run\" to "
+"start the generation of code. This might take a little while if you are "
+"reverse engineering from a database."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:574
+#, no-c-format
+msgid ""
+"When the generation have finished you should now have a complete skeleton "
+"Seam application in the output directory. In the output directory there is a "
+"<literal>readme.txt</literal> file describing the steps needed to deploy and "
+"run the example."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:577
+#, no-c-format
+msgid ""
+"If you want to regenerate/update the skeleton code then simply run the code "
+"generation again by selecting the \"Hibernate Code Generation\" in the "
+"toolbar or \"Run\" menu. Enjoy."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Tutorial.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Tutorial.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Tutorial.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,4041 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Tutorial.xml:10
+#, no-c-format
+msgid "Seam Tutorial"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:12
+#, no-c-format
+msgid "Try the examples"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:13
+#, no-c-format
+msgid ""
+"In this tutorial, we'll assume that you have downloaded JBoss AS 4.0.5 and "
+"installed the EJB 3.0 profile (using the JBoss AS installer). You should "
+"also have a copy of Seam downloaded and extracted to a work directory."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:16
+#, no-c-format
+msgid "The directory structure of each example in Seam follows this pattern:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:21
+#, no-c-format
+msgid ""
+"Web pages, images and stylesheets may be found in <filename>examples/"
+"<replaceable>registration</replaceable>/view</filename>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:26
+#, no-c-format
+msgid ""
+"Resources such as deployment descriptors and data import scripts may be "
+"found in <filename>examples/<replaceable>registration</replaceable>/"
+"resources</filename>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:31
+#, no-c-format
+msgid ""
+"Java source code may be found in <filename>examples/"
+"<replaceable>registration</replaceable>/src</filename>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:36
+#, no-c-format
+msgid ""
+"The Ant build script is <filename>examples/<replaceable>registration</"
+"replaceable>/build.xml</filename>"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:42
+#, no-c-format
+msgid "Running the examples on JBoss AS"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:43
+#, no-c-format
+msgid ""
+"First, make sure you have Ant correctly installed, with <literal>&#36;"
+"ANT_HOME</literal> and <literal>&#36;JAVA_HOME</literal> set correctly. "
+"Next, make sure you set the location of your JBoss AS 4.0.5 installation in "
+"the <literal>build.properties</literal> file in the root folder of your Seam "
+"installation. If you haven't already done so, start JBoss AS now by typing "
+"<literal>bin/run.sh</literal> or <literal>bin/run.bat</literal> in the root "
+"directory of your JBoss installation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:46
+#, no-c-format
+msgid ""
+"By default the examples will deploy to the default configuration of the "
+"server. If the server has been started using an a configuration other than "
+"default then the example <literal>build.xml</literal> file should be "
+"modified to reflect this before building and deploying. Two lines should be "
+"changed in this file:"
+msgstr ""
+
+#. Tag: screen
+#: Tutorial.xml:49
+#, no-c-format
+msgid ""
+"&lt;property name=\"deploy.dir\"           value=\"${jboss.home}/server/"
+"default/deploy\"/&gt;"
+msgstr ""
+
+#. Tag: screen
+#: Tutorial.xml:50
+#, no-c-format
+msgid ""
+"&lt;property name=\"webroot.dir\"         \n"
+"        value=\"${deploy.dir}/jboss-web.deployer/ROOT.war\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:51
+#, no-c-format
+msgid ""
+"Now, build and deploy the example by typing <literal>ant deploy</literal> in "
+"the <filename>examples/<replaceable>registration</replaceable></filename> "
+"directory."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:54
+#, no-c-format
+msgid ""
+"Try it out by accessing <ulink url=\"http://localhost:8080/seam-registration/"
+"\"><literal>http://localhost:8080/seam-registration/</literal></ulink> with "
+"your web browser."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:60
+#, no-c-format
+msgid "Running the examples on Tomcat"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:61
+#, no-c-format
+msgid ""
+"First, make sure you have Ant correctly installed, with <literal>&#36;"
+"ANT_HOME</literal> and <literal>&#36;JAVA_HOME</literal> set correctly. "
+"Next, make sure you set the location of your Tomcat 5.5 installation in the "
+"<literal>build.properties</literal> file in the root folder of your Seam "
+"installation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:64
+#, no-c-format
+msgid ""
+"Now, build and deploy the example by typing <literal>ant deploy.tomcat</"
+"literal> in the <filename>examples/<replaceable>registration</replaceable></"
+"filename> directory."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:67
+#, no-c-format
+msgid "Finally, start Tomcat."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:70
+#, no-c-format
+msgid ""
+"Try it out by accessing <ulink url=\"http://localhost:8080/jboss-seam-"
+"registration/\"><literal>http://localhost:8080/jboss-seam-registration/</"
+"literal></ulink> with your web browser."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:73
+#, no-c-format
+msgid ""
+"When you deploy the example to Tomcat, any EJB3 components will run inside "
+"the JBoss Embeddable EJB3 container, a complete standalone EJB3 container "
+"environment."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:79
+#, no-c-format
+msgid "Running the example tests"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:80
+#, no-c-format
+msgid ""
+"Most of the examples come with a suite of TestNG integration tests. The "
+"easiest way to run the tests is to run <literal>ant testexample</literal> "
+"inside the <filename>examples/<replaceable>registration</replaceable></"
+"filename> directory. It is also possible to run the tests inside your IDE "
+"using the TestNG plugin."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:88
+#, no-c-format
+msgid "Your first Seam application: the registration example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:89
+#, no-c-format
+msgid ""
+"The registration example is a fairly trivial application that lets a new "
+"user store his username, real name and password in the database. The example "
+"isn't intended to show off all of the cool functionality of Seam. However, "
+"it demonstrates the use of an EJB3 session bean as a JSF action listener, "
+"and basic configuration of Seam."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:92
+#, no-c-format
+msgid ""
+"We'll go slowly, since we realize you might not yet be familiar with EJB 3.0."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:95
+#, no-c-format
+msgid ""
+"The start page displays a very basic form with three input fields. Try "
+"filling them in and then submitting the form. This will save a user object "
+"in the database."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:107 Tutorial.xml:424 Tutorial.xml:563 Tutorial.xml:723
+#, no-c-format
+msgid "Understanding the code"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:108
+#, no-c-format
+msgid ""
+"The example is implemented with two JSP pages, one entity bean and one "
+"stateless session bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:119
+#, no-c-format
+msgid "Let's take a look at the code, starting from the \"bottom\"."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:123
+#, no-c-format
+msgid "The entity bean: <literal>User.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:124
+#, no-c-format
+msgid ""
+"We need an EJB entity bean for user data. This class defines "
+"<emphasis>persistence</emphasis> and <emphasis>validation</emphasis> "
+"declaratively, via annotations. It also needs some extra annotations that "
+"define the class as a Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:140
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"user\")\n"
+"@Scope(SESSION)\n"
+"@Table(name=\"users\")\n"
+"public class User implements Serializable\n"
+"{\n"
+"   private static final long serialVersionUID = 1881413500711441951L;\n"
+"   \n"
+"   private String username;\n"
+"   private String password;\n"
+"   private String name;\n"
+"   \n"
+"   public User(String name, String password, String username)\n"
+"   {\n"
+"      this.name = name;\n"
+"      this.password = password;\n"
+"      this.username = username;\n"
+"   }\n"
+"   \n"
+"   public User() {}\n"
+"   \n"
+"   @NotNull @Length(min=5, max=15)\n"
+"   public String getPassword()\n"
+"   {\n"
+"      return password;\n"
+"   }\n"
+"\n"
+"   public void setPassword(String password)\n"
+"   {\n"
+"      this.password = password;\n"
+"   }\n"
+"   \n"
+"   @NotNull\n"
+"   public String getName()\n"
+"   {\n"
+"      return name;\n"
+"   }\n"
+"\n"
+"   public void setName(String name)\n"
+"   {\n"
+"      this.name = name;\n"
+"   }\n"
+"   \n"
+"   @Id @NotNull @Length(min=5, max=15)\n"
+"   public String getUsername()\n"
+"   {\n"
+"      return username;\n"
+"   }\n"
+"\n"
+"   public void setUsername(String username)\n"
+"   {\n"
+"      this.username = username;\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:143
+#, no-c-format
+msgid ""
+"The EJB3 standard <literal>@Entity</literal> annotation indicates that the "
+"<literal>User</literal> class is an entity bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:148
+#, no-c-format
+msgid ""
+"A Seam component needs a <emphasis>component name</emphasis> specified by "
+"the <link linkend=\"name-annotation\"><literal>@Name</literal></link> "
+"annotation. This name must be unique within the Seam application. When JSF "
+"asks Seam to resolve a context variable with a name that is the same as a "
+"Seam component name, and the context variable is currently undefined (null), "
+"Seam will instantiate that component, and bind the new instance to the "
+"context variable. In this case, Seam will instantiate a <literal>User</"
+"literal> the first time JSF encounters a variable named <literal>user</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:153
+#, no-c-format
+msgid ""
+"Whenever Seam instantiates a component, it binds the new instance to a "
+"context variable in the component's <emphasis>default context</emphasis>. "
+"The default context is specified using the <link linkend=\"scope-annotation"
+"\"><literal>@Scope</literal></link> annotation. The <literal>User</literal> "
+"bean is a session scoped component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:158
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Table</literal> annotation indicates that the "
+"<literal>User</literal> class is mapped to the <literal>users</literal> "
+"table."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:163
+#, no-c-format
+msgid ""
+"<literal>name</literal>, <literal>password</literal> and <literal>username</"
+"literal> are the persistent attributes of the entity bean. All of our "
+"persistent attributes define accessor methods. These are needed when this "
+"component is used by JSF in the render response and update model values "
+"phases."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:168
+#, no-c-format
+msgid ""
+"An empty constructor is both required by both the EJB specification and by "
+"Seam."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:173
+#, no-c-format
+msgid ""
+"The <literal>@NotNull</literal> and <literal>@Length</literal> annotations "
+"are part of the Hibernate Validator framework. Seam integrates Hibernate "
+"Validator and lets you use it for data validation (even if you are not using "
+"Hibernate for persistence)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:178
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Id</literal> annotation indicates the primary key "
+"attribute of the entity bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:185
+#, no-c-format
+msgid ""
+"The most important things to notice in this example are the <literal>@Name</"
+"literal> and <literal>@Scope</literal> annotations. These annotations "
+"establish that this class is a Seam component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:188
+#, no-c-format
+msgid ""
+"We'll see below that the properties of our <literal>User</literal> class are "
+"bound to directly to JSF components and are populated by JSF during the "
+"update model values phase. We don't need any tedious glue code to copy data "
+"back and forth between the JSP pages and the entity bean domain model."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:191
+#, no-c-format
+msgid ""
+"However, entity beans shouldn't do transaction management or database "
+"access. So we can't use this component as a JSF action listener. For that we "
+"need a session bean."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:198
+#, no-c-format
+msgid ""
+"The stateless session bean class: <literal>RegisterAction.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:199
+#, no-c-format
+msgid ""
+"Most Seam application use session beans as JSF action listeners (you can use "
+"JavaBeans instead if you like)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:202
+#, no-c-format
+msgid ""
+"We have exactly one JSF action in our application, and one session bean "
+"method attached to it. In this case, we'll use a stateless session bean, "
+"since all the state associated with our action is held by the <literal>User</"
+"literal> bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:205
+#, no-c-format
+msgid "This is the only really interesting code in the example!"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:222
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"register\")\n"
+"public class RegisterAction implements Register\n"
+"{\n"
+"\n"
+"   @In\n"
+"   private User user;\n"
+"   \n"
+"   @PersistenceContext\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @Logger\n"
+"   private Log log;\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = em.createQuery(\n"
+"         \"select username from User where username=#{user.username}\")\n"
+"         .getResultList();\n"
+"         \n"
+"      if (existing.size()==0)\n"
+"      {\n"
+"         em.persist(user);\n"
+"         log.info(\"Registered new user #{user.username}\");\n"
+"         return \"/registered.jsp\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         FacesMessages.instance().add(\"User #{user.username} already exists"
+"\");\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:225
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Stateless</literal> annotation marks this class "
+"as stateless session bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:230
+#, no-c-format
+msgid ""
+"The <link linkend=\"in-annotation\"><literal>@In</literal></link> annotation "
+"marks an attribute of the bean as injected by Seam. In this case, the "
+"attribute is injected from a context variable named <literal>user</literal> "
+"(the instance variable name)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:235
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@PersistenceContext</literal> annotation is used "
+"to inject the EJB3 entity manager."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:240
+#, no-c-format
+msgid ""
+"The Seam <literal>@Logger</literal> annotation is used to inject the "
+"component's <literal>Log</literal> instance."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:245
+#, no-c-format
+msgid ""
+"The action listener method uses the standard EJB3 <literal>EntityManager</"
+"literal> API to interact with the database, and returns the JSF outcome. "
+"Note that, since this is a sesson bean, a transaction is automatically begun "
+"when the <literal>register()</literal> method is called, and committed when "
+"it completes."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:250
+#, no-c-format
+msgid ""
+"Notice that Seam lets you use a JSF EL expression inside EJB-QL. Under the "
+"covers, this results in an ordinary JPA <literal>setParameter()</literal> "
+"call on the standard JPA <literal>Query</literal> object. Nice, huh?"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:255
+#, no-c-format
+msgid ""
+"The <literal>Log</literal> API lets us easily display templated log messages."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:260
+#, no-c-format
+msgid ""
+"JSF action listener methods return a string-valued outcome that determines "
+"what page will be displayed next. A null outcome (or a void action listener "
+"method) redisplays the previous page. In plain JSF, it is normal to always "
+"use a JSF <emphasis>navigation rule</emphasis> to determine the JSF view id "
+"from the outcome. For complex application this indirection is useful and a "
+"good practice. However, for very simple examples like this one, Seam lets "
+"you use the JSF view id as the outcome, eliminating the requirement for a "
+"navigation rule. <emphasis>Note that when you use a view id as an outcome, "
+"Seam always performs a browser redirect.</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:265
+#, no-c-format
+msgid ""
+"Seam provides a number of <emphasis>built-in components</emphasis> to help "
+"solve common problems. The <literal>FacesMessages</literal> component makes "
+"it easy to display templated error or success messages. Built-in Seam "
+"components may be obtained by injection, or by calling an <literal>instance()"
+"</literal> method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:272
+#, no-c-format
+msgid ""
+"Note that we did not explicitly specify a <literal>@Scope</literal> this "
+"time. Each Seam component type has a default scope if not explicitly "
+"specified. For stateless session beans, the default scope is the stateless "
+"context. Actually, <emphasis>all</emphasis> stateless session beans belong "
+"in the stateless context."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:275
+#, no-c-format
+msgid ""
+"Our session bean action listener performs the business and persistence logic "
+"for our mini-application. In more complex applications, we might need to "
+"layer the code and refactor persistence logic into a dedicated data access "
+"component. That's perfectly trivial to do. But notice that Seam does not "
+"force you into any particular strategy for application layering."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:278
+#, no-c-format
+msgid ""
+"Furthermore, notice that our session bean has simultaneous access to context "
+"associated with the web request (the form values in the <literal>User</"
+"literal> object, for example), and state held in transactional resources "
+"(the <literal>EntityManager</literal> object). This is a break from "
+"traditional J2EE architectures. Again, if you are more comfortable with the "
+"traditional J2EE layering, you can certainly implement that in a Seam "
+"application. But for many applications, it's simply not very useful."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:285
+#, no-c-format
+msgid "The session bean local interface: <literal>Register.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:286
+#, no-c-format
+msgid "Naturally, our session bean needs a local interface."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:291
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface Register\n"
+"{\n"
+"   public String register();\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:292
+#, no-c-format
+msgid "That's the end of the Java code. Now onto the deployment descriptors."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:298
+#, no-c-format
+msgid ""
+"The Seam component deployment descriptor: <literal>components.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:299
+#, no-c-format
+msgid ""
+"If you've used many Java frameworks before, you'll be used to having to "
+"declate all your component classes in some kind of XML file that gradually "
+"grows more and more unmanageable as your project matures. You'll be relieved "
+"to know that Seam does not require that application components be "
+"accompanied by XML. Most Seam applications require a very small amount of "
+"XML that does not grow very much as the project gets bigger."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:302
+#, no-c-format
+msgid ""
+"Nevertheless, it is often useful to be able to provide for <emphasis>some</"
+"emphasis> external configuration of <emphasis>some</emphasis> components "
+"(particularly the components built in to Seam). You have a couple of options "
+"here, but the most flexible option is to provide this configuration in a "
+"file called <literal>components.xml</literal>, located in the <literal>WEB-"
+"INF</literal> directory. We'll use the <literal>components.xml</literal> "
+"file to tell Seam how to find our EJB components in JNDI:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:305
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"&gt;\n"
+"     &lt;core:init jndi-pattern=\"@jndiPattern@\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:306
+#, no-c-format
+msgid ""
+"This code configures a property named <literal>jndiPattern</literal> of a "
+"built-in Seam component named <literal>org.jboss.seam.core.init</literal>."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:312
+#, no-c-format
+msgid "The web deployment description: <literal>web.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:313
+#, no-c-format
+msgid ""
+"The presentation layer for our mini-application will be deployed in a WAR. "
+"So we'll need a web deployment descriptor."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:316
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;web-app version=\"2.5\"\n"
+"    xmlns=\"http://java.sun.com/xml/ns/javaee\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n"
+"        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\"&gt;\n"
+"\n"
+"    &lt;!-- Seam --&gt;\n"
+"\n"
+"    &lt;listener&gt;\n"
+"        &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/"
+"listener-class&gt;\n"
+"    &lt;/listener&gt;\n"
+"\n"
+"    &lt;!-- MyFaces --&gt;\n"
+"\n"
+"    &lt;listener&gt;\n"
+"        &lt;listener-class&gt;\n"
+"            org.apache.myfaces.webapp.StartupServletContextListener\n"
+"        &lt;/listener-class&gt;\n"
+"    &lt;/listener&gt;\n"
+"\n"
+"    &lt;context-param&gt;\n"
+"        &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-"
+"name&gt;\n"
+"        &lt;param-value&gt;client&lt;/param-value&gt;\n"
+"    &lt;/context-param&gt;\n"
+"\n"
+"    &lt;servlet&gt;\n"
+"        &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;\n"
+"        &lt;servlet-class&gt;javax.faces.webapp.FacesServlet&lt;/servlet-"
+"class&gt;\n"
+"        &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;\n"
+"    &lt;/servlet&gt;\n"
+"\n"
+"    &lt;!-- Faces Servlet Mapping --&gt;\n"
+"    &lt;servlet-mapping&gt;\n"
+"        &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;\n"
+"        &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;\n"
+"    &lt;/servlet-mapping&gt;\n"
+"\n"
+"&lt;/web-app&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:317
+#, no-c-format
+msgid ""
+"This <literal>web.xml</literal> file configures Seam and MyFaces. The "
+"configuration you see here is pretty much identical in all Seam applications."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:323
+#, no-c-format
+msgid "The JSF configration: <literal>faces-config.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:324
+#, no-c-format
+msgid ""
+"All Seam applications use JSF views as the presentation layer. So we'll need "
+"<literal>faces-config.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:327
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;!DOCTYPE faces-config \n"
+"PUBLIC \"-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN\"\n"
+"                            \"http://java.sun.com/dtd/web-facesconfig_1_0.dtd"
+"\"&gt;\n"
+"&lt;faces-config&gt;\n"
+"\n"
+"    &lt;!-- A phase listener is needed by all Seam applications --&gt;\n"
+"    \n"
+"    &lt;lifecycle&gt;\n"
+"        &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-"
+"listener&gt;\n"
+"    &lt;/lifecycle&gt;\n"
+"\n"
+"&lt;/faces-config&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:328
+#, no-c-format
+msgid ""
+"The <literal>faces-config.xml</literal> file integrates Seam into JSF. Note "
+"that we don't need any JSF managed bean declarations! The managed beans are "
+"the Seam components. In Seam applications, the <literal>faces-config.xml</"
+"literal> is used much less often than in plain JSF."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:331
+#, no-c-format
+msgid ""
+"In fact, once you have all the basic descriptors set up, the <emphasis>only</"
+"emphasis> XML you need to write as you add new functionality to a Seam "
+"application is the navigation rules, and possibly jBPM process definitions. "
+"Seam takes the view that <emphasis>process flow</emphasis> and "
+"<emphasis>configuration data</emphasis> are the only things that truly "
+"belong in XML."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:334
+#, no-c-format
+msgid ""
+"In this simple example, we don't even need a navigation rule, since we "
+"decided to embed the view id in our action code."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:340
+#, no-c-format
+msgid "The EJB deployment descriptor: <literal>ejb-jar.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:341
+#, no-c-format
+msgid ""
+"The <literal>ejb-jar.xml</literal> file integrates Seam with EJB3, by "
+"attaching the <literal>SeamInterceptor</literal> to all session beans in the "
+"archive."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:344
+#, no-c-format
+msgid ""
+"&lt;ejb-jar xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \n"
+"         xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n"
+"         http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd\"\n"
+"         version=\"3.0\"&gt;\n"
+"         \n"
+"   &lt;interceptors&gt;\n"
+"     &lt;interceptor&gt;\n"
+"       &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"     &lt;/interceptor&gt;\n"
+"   &lt;/interceptors&gt;\n"
+"   \n"
+"   &lt;assembly-descriptor&gt;\n"
+"      &lt;interceptor-binding&gt;\n"
+"         &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"         &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"      &lt;/interceptor-binding&gt;\n"
+"   &lt;/assembly-descriptor&gt;\n"
+"   \n"
+"&lt;/ejb-jar&gt;"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:348
+#, no-c-format
+msgid ""
+"The EJB persistence deployment descriptor: <literal>persistence.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:349
+#, no-c-format
+msgid ""
+"The <literal>persistence.xml</literal> file tells the EJB persistence "
+"provider where to find the datasource, and contains some vendor-specific "
+"settings. In this case, enables automatic schema export at startup time."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:352
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;persistence xmlns=\"http://java.sun.com/xml/ns/persistence\" \n"
+"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence \n"
+"             http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd\" \n"
+"             version=\"1.0\"&gt;\n"
+"    &lt;persistence-unit name=\"userDatabase\"&gt;\n"
+"      &lt;provider&gt;org.hibernate.ejb.HibernatePersistence&lt;/"
+"provider&gt;\n"
+"      &lt;jta-data-source&gt;java:/DefaultDS&lt;/jta-data-source&gt;\n"
+"      &lt;properties&gt;\n"
+"         &lt;property name=\"hibernate.hbm2ddl.auto\" value=\"create-drop\"/"
+"&gt;\n"
+"      &lt;/properties&gt;\n"
+"    &lt;/persistence-unit&gt;\n"
+"&lt;/persistence&gt;"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:356
+#, no-c-format
+msgid ""
+"The view: <literal>register.jsp</literal> and <literal>registered.jsp</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:357
+#, no-c-format
+msgid ""
+"The view pages for a Seam application could be implemented using any "
+"technology that supports JSF. In this example we use JSP, since it is "
+"familiar to most developers and since we have minimal requirements here "
+"anyway. (But if you take our advice, you'll use Facelets for your own "
+"applications.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:360
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://jboss.com/products/seam/taglib\" prefix=\"s\" "
+"&#37;&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Register New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;table border=\"0\"&gt;\n"
+"       &lt;s:validateAll&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Username&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputText value=\"#{user.username}\"/&gt;&lt;/"
+"td&gt;\n"
+"         &lt;/tr&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Real Name&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputText value=\"#{user.name}\"/&gt;&lt;/td&gt;\n"
+"         &lt;/tr&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Password&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputSecret value=\"#{user.password}\"/&gt;&lt;/"
+"td&gt;\n"
+"         &lt;/tr&gt;\n"
+"       &lt;/s:validateAll&gt;\n"
+"     &lt;/table&gt;\n"
+"     &lt;h:messages/&gt;\n"
+"     &lt;h:commandButton type=\"submit\" value=\"Register\" action=\"#"
+"{register.register}\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:361
+#, no-c-format
+msgid ""
+"The only thing here that is specific to Seam is the <literal>&lt;s:"
+"validateAll&gt;</literal> tag. This JSF component tells JSF to validate all "
+"the contained input fields against the Hibernate Validator annotations "
+"specified on the entity bean."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:364
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Successfully Registered New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"    Welcome, &lt;h:outputText value=\"#{user.name}\"/&gt;, \n"
+"    you are successfully registered as &lt;h:outputText value=\"#{user."
+"username}\"/&gt;.\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:365
+#, no-c-format
+msgid ""
+"This is a boring old JSP pages using standard JSF components. There is "
+"nothing specific to Seam here."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:371
+#, no-c-format
+msgid "The EAR deployment descriptor: <literal>application.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:372
+#, no-c-format
+msgid ""
+"Finally, since our application is deployed as an EAR, we need a deployment "
+"descriptor there, too."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:375
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;application xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee \n"
+"             http://java.sun.com/xml/ns/javaee/application_5.xsd\"\n"
+"             version=\"5\"&gt;\n"
+"             \n"
+"    &lt;display-name&gt;Seam Registration&lt;/display-name&gt;\n"
+"\n"
+"    &lt;module&gt;\n"
+"        &lt;web&gt;\n"
+"            &lt;web-uri&gt;jboss-seam-registration.war&lt;/web-uri&gt;\n"
+"            &lt;context-root&gt;/seam-registration&lt;/context-root&gt;\n"
+"        &lt;/web&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;ejb&gt;jboss-seam-registration.jar&lt;/ejb&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;jboss-seam.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;el-api.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;el-ri.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    \n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:376
+#, no-c-format
+msgid ""
+"This deployment descriptor links modules in the enterprise archive and binds "
+"the web application to the context root <literal>/seam-registration</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:387 Tutorial.xml:535 Tutorial.xml:698 Tutorial.xml:813
+#, no-c-format
+msgid "How it works"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:388
+#, no-c-format
+msgid ""
+"When the form is submitted, JSF asks Seam to resolve the variable named "
+"<literal>user</literal>. Since there is no value already bound to that name "
+"(in any Seam context), Seam instantiates the <literal>user</literal> "
+"component, and returns the resulting <literal>User</literal> entity bean "
+"instance to JSF after storing it in the Seam session context."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:391
+#, no-c-format
+msgid ""
+"The form input values are now validated against the Hibernate Validator "
+"constraints specified on the <literal>User</literal> entity. If the "
+"constraints are violated, JSF redisplays the page. Otherwise, JSF binds the "
+"form input values to properties of the <literal>User</literal> entity bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:394
+#, no-c-format
+msgid ""
+"Next, JSF asks Seam to resolve the variable named <literal>register</"
+"literal>. Seam finds the <literal>RegisterAction</literal> stateless session "
+"bean in the stateless context and returns it. JSF invokes the "
+"<literal>register()</literal> action listener method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:397
+#, no-c-format
+msgid ""
+"Seam intercepts the method call and injects the <literal>User</literal> "
+"entity from the Seam session context, before continuing the invocation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:400
+#, no-c-format
+msgid ""
+"The <literal>register()</literal> method checks if a user with the entered "
+"username already exists. If so, an error message is queued with the "
+"<literal>FacesMessages</literal> component, and a null outcome is returned, "
+"causing a page redisplay. The <literal>FacesMessages</literal> component "
+"interpolates the JSF expression embedded in the message string and adds a "
+"JSF <literal>FacesMessage</literal> to the view."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:403
+#, no-c-format
+msgid ""
+"If no user with that username exists, the <literal>\"/registered.jsp\"</"
+"literal> outcome triggers a browser redirect to the <literal>registered.jsp</"
+"literal> page. When JSF comes to render the page, it asks Seam to resolve "
+"the variable named <literal>user</literal> and uses property values of the "
+"returned <literal>User</literal> entity from Seam's session scope."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:411
+#, no-c-format
+msgid "Clickable lists in Seam: the messages example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:412
+#, no-c-format
+msgid ""
+"Clickable lists of database search results are such an important part of any "
+"online application that Seam provides special functionality on top of JSF to "
+"make it easier to query data using EJB-QL or HQL and display it as a "
+"clickable list using a JSF <literal>&lt;h:dataTable&gt;</literal>. The "
+"messages example demonstrates this functionality."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:425
+#, no-c-format
+msgid ""
+"The message list example has one entity bean, <literal>Message</literal>, "
+"one session bean, <literal>MessageListBean</literal> and one JSP."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:429
+#, no-c-format
+msgid "The entity bean: <literal>Message.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:430
+#, no-c-format
+msgid ""
+"The <literal>Message</literal> entity defines the title, text, date and time "
+"of a message, and a flag indicating whether the message has been read:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:433
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"message\")\n"
+"@Scope(EVENT)\n"
+"public class Message implements Serializable\n"
+"{\n"
+"   private Long id;\n"
+"   private String title;\n"
+"   private String text;\n"
+"   private boolean read;\n"
+"   private Date datetime;\n"
+"   \n"
+"   @Id @GeneratedValue\n"
+"   public Long getId() {\n"
+"      return id;\n"
+"   }\n"
+"   public void setId(Long id) {\n"
+"      this.id = id;\n"
+"   }\n"
+"   \n"
+"   @NotNull @Length(max=100)\n"
+"   public String getTitle() {\n"
+"      return title;\n"
+"   }\n"
+"   public void setTitle(String title) {\n"
+"      this.title = title;\n"
+"   }\n"
+"   \n"
+"   @NotNull @Lob\n"
+"   public String getText() {\n"
+"      return text;\n"
+"   }\n"
+"   public void setText(String text) {\n"
+"      this.text = text;\n"
+"   }\n"
+"   \n"
+"   @NotNull\n"
+"   public boolean isRead() {\n"
+"      return read;\n"
+"   }\n"
+"   public void setRead(boolean read) {\n"
+"      this.read = read;\n"
+"   }\n"
+"   \n"
+"   @NotNull \n"
+"   @Basic @Temporal(TemporalType.TIMESTAMP)\n"
+"   public Date getDatetime() {\n"
+"      return datetime;\n"
+"   }\n"
+"   public void setDatetime(Date datetime) {\n"
+"      this.datetime = datetime;\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:438
+#, no-c-format
+msgid "The stateful session bean: <literal>MessageManagerBean.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:439
+#, no-c-format
+msgid ""
+"Just like in the previous example, we have a session bean, "
+"<literal>MessageManagerBean</literal>, which defines the action listener "
+"methods for the two buttons on our form. One of the buttons selects a "
+"message from the list, and displays that message. The other button deletes a "
+"message. So far, this is not so different to the previous example."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:442
+#, no-c-format
+msgid ""
+"But <literal>MessageManagerBean</literal> is also responsible for fetching "
+"the list of messages the first time we navigate to the message list page. "
+"There are various ways the user could navigate to the page, and not all of "
+"them are preceded by a JSF action&mdash;the user might have bookmarked the "
+"page, for example. So the job of fetching the message list takes place in a "
+"Seam <emphasis>factory method</emphasis>, instead of in an action listener "
+"method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:445
+#, no-c-format
+msgid ""
+"We want to cache the list of messages in memory between server requests, so "
+"we will make this a stateful session bean."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:459
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Scope(SESSION)\n"
+"@Name(\"messageManager\")\n"
+"public class MessageManagerBean implements Serializable, MessageManager\n"
+"{\n"
+"\n"
+"   @DataModel\n"
+"   private List&lt;Message&gt; messageList;\n"
+"   \n"
+"   @DataModelSelection\n"
+"   @Out(required=false)\n"
+"   private Message message;\n"
+"   \n"
+"   @PersistenceContext(type=EXTENDED)\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @Factory(\"messageList\")\n"
+"   public void findMessages()\n"
+"   {\n"
+"      messageList = em.createQuery(\"from Message msg order by msg.datetime "
+"desc\").getResultList();\n"
+"   }\n"
+"   \n"
+"   public void select()\n"
+"   {\n"
+"      message.setRead(true);\n"
+"   }\n"
+"   \n"
+"   public void delete()\n"
+"   {\n"
+"      messageList.remove(message);\n"
+"      em.remove(message);\n"
+"      message=null;\n"
+"   }\n"
+"   \n"
+"   @Remove @Destroy\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:462
+#, no-c-format
+msgid ""
+"The <literal>@DataModel</literal> annotation exposes an attibute of type "
+"<literal>java.util.List</literal> to the JSF page as an instance of "
+"<literal>javax.faces.model.DataModel</literal>. This allows us to use the "
+"list in a JSF <literal>&lt;h:dataTable&gt;</literal> with clickable links "
+"for each row. In this case, the <literal>DataModel</literal> is made "
+"available in a session context variable named <literal>messageList</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:467
+#, no-c-format
+msgid ""
+"The <literal>@DataModelSelection</literal> annotation tells Seam to inject "
+"the <literal>List</literal> element that corresponded to the clicked link."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:472
+#, no-c-format
+msgid ""
+"The <literal>@Out</literal> annotation then exposes the selected value "
+"directly to the page. So ever time a row of the clickable list is selected, "
+"the <literal>Message</literal> is injected to the attribute of the stateful "
+"bean, and the subsequently <emphasis>outjected</emphasis> to the event "
+"context variable named <literal>message</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:477
+#, no-c-format
+msgid ""
+"This stateful bean has an EJB3 <emphasis>extended persistence context</"
+"emphasis>. The messages retrieved in the query remain in the managed state "
+"as long as the bean exists, so any subsequent method calls to the stateful "
+"bean can update them without needing to make any explicit call to the "
+"<literal>EntityManager</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:482
+#, no-c-format
+msgid ""
+"The first time we navigate to the JSP page, there will be no value in the "
+"<literal>messageList</literal> context variable. The <literal>@Factory</"
+"literal> annotation tells Seam to create an instance of "
+"<literal>MessageManagerBean</literal> and invoke the <literal>findMessages()"
+"</literal> method to initialize the value. We call <literal>findMessages()</"
+"literal> a <emphasis>factory method</emphasis> for <literal>messages</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:487
+#, no-c-format
+msgid ""
+"The <literal>select()</literal> action listener method marks the selected "
+"<literal>Message</literal> as read, and updates it in the database."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:492
+#, no-c-format
+msgid ""
+"The <literal>delete()</literal> action listener method removes the selected "
+"<literal>Message</literal> from the database."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:497
+#, no-c-format
+msgid ""
+"All stateful session bean Seam components <emphasis>must</emphasis> have a "
+"method marked <literal>@Remove @Destroy</literal> to ensure that Seam will "
+"remove the stateful bean when the Seam context ends, and clean up any server-"
+"side state."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:504
+#, no-c-format
+msgid ""
+"Note that this is a session-scoped Seam component. It is associated with the "
+"user login session, and all requests from a login session share the same "
+"instance of the component. (In Seam applications, we usually use session-"
+"scoped components sparingly.)"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:510
+#, no-c-format
+msgid ""
+"The session bean local interface: <literal>MessageManager.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:511
+#, no-c-format
+msgid "All session beans have a business interface, of course."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:514
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface MessageManager\n"
+"{\n"
+"   public void findMessages();\n"
+"   public void select();\n"
+"   public void delete();\n"
+"   public void destroy();\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:515
+#, no-c-format
+msgid "From now on, we won't show local interfaces in our code examples."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:518
+#, no-c-format
+msgid ""
+"Let's skip over <literal>components.xml</literal>, <literal>persistence.xml</"
+"literal>, <literal>web.xml</literal>, <literal>ejb-jar.xml</literal>, "
+"<literal>faces-config.xml</literal> and <literal>application.xml</literal> "
+"since they are much the same as the previous example, and go straight to the "
+"JSP."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:524
+#, no-c-format
+msgid "The view: <literal>messages.jsp</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:525
+#, no-c-format
+msgid ""
+"The JSP page is a straightforward use of the JSF <literal>&lt;h:dataTable&gt;"
+"</literal> component. Again, nothing specific to Seam."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:528
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Messages&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;h2&gt;Message List&lt;/h2&gt;\n"
+"     &lt;h:outputText value=\"No messages to display\" rendered=\"#"
+"{messageList.rowCount==0}\"/&gt;\n"
+"     &lt;h:dataTable var=\"msg\" value=\"#{messageList}\" rendered=\"#"
+"{messageList.rowCount&gt;0}\"&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Read\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:selectBooleanCheckbox value=\"#{msg.read}\" disabled=\"true"
+"\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Title\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:commandLink value=\"#{msg.title}\" action=\"#"
+"{messageManager.select}\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Date/Time\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:outputText value=\"#{msg.datetime}\"&gt;\n"
+"              &lt;f:convertDateTime type=\"both\" dateStyle=\"medium\" "
+"timeStyle=\"short\"/&gt;\n"
+"           &lt;/h:outputText&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;h:commandButton value=\"Delete\" action=\"#{messageManager."
+"delete}\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"     &lt;/h:dataTable&gt;\n"
+"     &lt;h3&gt;&lt;h:outputText value=\"#{message.title}\"/&gt;&lt;/h3&gt;\n"
+"     &lt;div&gt;&lt;h:outputText value=\"#{message.text}\"/&gt;&lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:536
+#, no-c-format
+msgid ""
+"The first time we navigate to the <literal>messages.jsp</literal> page, "
+"whether by a JSF postback (faces request) or a direct browser GET request "
+"(non-faces request), the page will try to resolve the <literal>messageList</"
+"literal> context variable. Since this context variable is not initialized, "
+"Seam will call the factory method <literal>findMessages()</literal>, which "
+"performs a query against the database and results in a <literal>DataModel</"
+"literal> being outjected. This <literal>DataModel</literal> provides the row "
+"data needed for rendering the <literal>&lt;h:dataTable&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:539
+#, no-c-format
+msgid ""
+"When the user clicks the <literal>&lt;h:commandLink&gt;</literal>, JSF calls "
+"the <literal>select()</literal> action listener. Seam intercepts this call "
+"and injects the selected row data into the <literal>message</literal> "
+"attribute of the <literal>messageManager</literal> component. The action "
+"listener fires, marking the selected <literal>Message</literal> as read. At "
+"the end of the call, Seam outjects the selected <literal>Message</literal> "
+"to the context variable named <literal>message</literal>. Next, the EJB "
+"container commits the transaction, and the change to the <literal>Message</"
+"literal> is flushed to the database. Finally, the page is re-rendered, "
+"redisplaying the message list, and displaying the selected message below it."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:542
+#, no-c-format
+msgid ""
+"If the user clicks the <literal>&lt;h:commandButton&gt;</literal>, JSF calls "
+"the <literal>delete()</literal> action listener. Seam intercepts this call "
+"and injects the selected row data into the <literal>message</literal> "
+"attribute of the <literal>messageList</literal> component. The action "
+"listener fires, removing the selected <literal>Message</literal> from the "
+"list, and also calling <literal>remove()</literal> on the "
+"<literal>EntityManager</literal>. At the end of the call, Seam refreshes the "
+"<literal>messageList</literal> context variable and clears the context "
+"variable named <literal>message</literal>. The EJB container commits the "
+"transaction, and deletes the <literal>Message</literal> from the database. "
+"Finally, the page is re-rendered, redisplaying the message list."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:550
+#, no-c-format
+msgid "Seam and jBPM: the todo list example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:551
+#, no-c-format
+msgid ""
+"jBPM provides sophisticated functionality for workflow and task management. "
+"To get a small taste of how jBPM integrates with Seam, we'll show you a "
+"simple \"todo list\" application. Since managing lists of tasks is such core "
+"functionality for jBPM, there is hardly any Java code at all in this example."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:564
+#, no-c-format
+msgid ""
+"The center of this example is the jBPM process definition. There are also "
+"two JSPs and two trivial JavaBeans (There was no reason to use session "
+"beans, since they do not access the database, or have any other "
+"transactional behavior). Let's start with the process definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:575
+#, no-c-format
+msgid ""
+"&lt;process-definition name=\"todo\"&gt;\n"
+"   \n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"todo\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;task-node name=\"todo\"&gt;\n"
+"      &lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"         &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"      &lt;/task&gt;\n"
+"      &lt;transition to=\"done\"/&gt;\n"
+"   &lt;/task-node&gt;\n"
+"   \n"
+"   &lt;end-state name=\"done\"/&gt;\n"
+"   \n"
+"&lt;/process-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:578
+#, no-c-format
+msgid ""
+"The <literal>&lt;start-state&gt;</literal> node represents the logical start "
+"of the process. When the process starts, it immediately transitions to the "
+"<literal>todo</literal> node."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:583
+#, no-c-format
+msgid ""
+"The <literal>&lt;task-node&gt;</literal> node represents a <emphasis>wait "
+"state</emphasis>, where business process execution pauses, waiting for one "
+"or more tasks to be performed."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:588
+#, no-c-format
+msgid ""
+"The <literal>&lt;task&gt;</literal> element defines a task to be performed "
+"by a user. Since there is only one task defined on this node, when it is "
+"complete, execution resumes, and we transition to the end state. The task "
+"gets its description from a Seam component named <literal>todoList</literal> "
+"(one of the JavaBeans)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:593
+#, no-c-format
+msgid ""
+"Tasks need to be assigned to a user or group of users when they are created. "
+"In this case, the task is assigned to the current user, which we get from a "
+"built-in Seam component named <literal>actor</literal>. Any Seam component "
+"may be used to perform task assignment."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:598
+#, no-c-format
+msgid ""
+"The <literal>&lt;end-state&gt;</literal> node defines the logical end of the "
+"business process. When execution reaches this node, the process instance is "
+"destroyed."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:605
+#, no-c-format
+msgid ""
+"If we view this process definition using the process definition editor "
+"provided by JBossIDE, this is what it looks like:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:616
+#, no-c-format
+msgid ""
+"This document defines our <emphasis>business process</emphasis> as a graph "
+"of nodes. This is the most trivial possible business process: there is one "
+"<emphasis>task</emphasis> to be performed, and when that task is complete, "
+"the business process ends."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:619
+#, no-c-format
+msgid ""
+"The first JavaBean handles the login screen <literal>login.jsp</literal>. "
+"Its job is just to initialize the jBPM actor id using the <literal>actor</"
+"literal> component. (In a real application, it would also need to "
+"authenticate the user.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:622
+#, no-c-format
+msgid ""
+"@Name(\"login\")\n"
+"public class Login {\n"
+"   \n"
+"   @In\n"
+"   private Actor actor;\n"
+"   \n"
+"   private String user;\n"
+"\n"
+"   public String getUser() {\n"
+"      return user;\n"
+"   }\n"
+"\n"
+"   public void setUser(String user) {\n"
+"      this.user = user;\n"
+"   }\n"
+"   \n"
+"   public String login()\n"
+"   {\n"
+"      actor.setId(user);\n"
+"      return \"/todo.jsp\";\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:623
+#, no-c-format
+msgid ""
+"Here we see the use of <literal>@In</literal> to inject the built-in "
+"<literal>Actor</literal> component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:626
+#, no-c-format
+msgid "The JSP itself is trivial:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:629
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"&#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"&#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Login&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Login&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    &lt;h:form&gt;\n"
+"      &lt;div&gt;\n"
+"        &lt;h:inputText value=\"#{login.user}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Login\" action=\"#{login.login}\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"    &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:630
+#, no-c-format
+msgid ""
+"The second JavaBean is responsible for starting business process instances, "
+"and ending tasks."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:639
+#, no-c-format
+msgid ""
+"@Name(\"todoList\")\n"
+"public class TodoList {\n"
+"   \n"
+"   private String description;\n"
+"   \n"
+"   public String getDescription()\n"
+"   {\n"
+"      return description;\n"
+"   }\n"
+"\n"
+"   public void setDescription(String description) {\n"
+"      this.description = description;\n"
+"   }\n"
+"   \n"
+"   @CreateProcess(definition=\"todo\")\n"
+"   public void createTodo() {}\n"
+"   \n"
+"   @StartTask @EndTask\n"
+"   public void done() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:642
+#, no-c-format
+msgid ""
+"The description property accepts user input form the JSP page, and exposes "
+"it to the process definition, allowing the task description to be set."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:647
+#, no-c-format
+msgid ""
+"The Seam <literal>@CreateProcess</literal> annotation creates a new jBPM "
+"process instance for the named process definition."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:652
+#, no-c-format
+msgid ""
+"The Seam <literal>@StartTask</literal> annotation starts work on a task. The "
+"<literal>@EndTask</literal> ends the task, and allows the business process "
+"execution to resume."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:659
+#, no-c-format
+msgid ""
+"In a more realistic example, <literal>@StartTask</literal> and "
+"<literal>@EndTask</literal> would not appear on the same method, because "
+"there is usually work to be done using the application in order to complete "
+"the task."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:662
+#, no-c-format
+msgid "Finally, the meat of the application is in <literal>todo.jsp</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:665
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://jboss.com/products/seam/taglib\" prefix=\"s\" "
+"&#37;&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Todo List&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Todo List&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"   &lt;h:form id=\"list\"&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:outputText value=\"There are no todo items.\" rendered=\"#"
+"{empty \n"
+"             taskInstanceList}\"/&gt;\n"
+"         &lt;h:dataTable value=\"#{taskInstanceList}\" var=\"task\" rendered="
+"\"#{not empty taskInstanceList}\"&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Description\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.description}\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Created\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:outputText value=\"#{task.taskMgmtInstance."
+"processInstance.start}\"&gt;\n"
+"                    &lt;f:convertDateTime type=\"date\"/&gt;\n"
+"                &lt;/h:outputText&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Priority\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.priority}\" style=\"width: 30"
+"\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Due Date\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.dueDate}\" style=\"width: 100"
+"\"&gt;\n"
+"                    &lt;f:convertDateTime type=\"date\" dateStyle=\"short\"/"
+"&gt;\n"
+"                &lt;/h:inputText&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;s:button value=\"Done\" action=\"#{todoList.done}\" "
+"taskInstance=\"#{task}\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"         &lt;/h:dataTable&gt;\n"
+"      &lt;/div&gt;\n"
+"      &lt;div&gt;\n"
+"      &lt;h:messages/&gt;\n"
+"      &lt;/div&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:commandButton value=\"Update Items\" action=\"update\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"   &lt;h:form id=\"new\"&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:inputText value=\"#{todoList.description}\"/&gt;\n"
+"         &lt;h:commandButton value=\"Create New Item\" action=\"#{todoList."
+"createTodo}\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:666
+#, no-c-format
+msgid "Let's take this one piece at a time."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:669
+#, no-c-format
+msgid ""
+"The page renders a list of tasks, which it gets from a built-in Seam "
+"component named <literal>taskInstanceList</literal>. The list is defined "
+"inside a JSF form."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:672
+#, no-c-format
+msgid ""
+"&lt;h:form id=\"list\"&gt;\n"
+"   &lt;div&gt;\n"
+"      &lt;h:outputText value=\"There are no todo items.\" rendered=\"#{empty "
+"taskInstanceList}\"/&gt;\n"
+"      &lt;h:dataTable value=\"#{taskInstanceList}\" var=\"task\" rendered=\"#"
+"{not empty taskInstanceList}\"&gt;\n"
+"         ...\n"
+"      &lt;/h:dataTable&gt;\n"
+"   &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:673
+#, no-c-format
+msgid ""
+"Each element of the list is an instance of the jBPM class "
+"<literal>TaskInstance</literal>. The following code simply displays the "
+"interesting properties of each task in the list. For the description, "
+"priority and due date, we use input controls, to allow the user to update "
+"these values."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:676
+#, no-c-format
+msgid ""
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"       &lt;h:outputText value=\"Description\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.description}\"/&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Created\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:outputText value=\"#{task.taskMgmtInstance.processInstance.start}"
+"\"&gt;\n"
+"        &lt;f:convertDateTime type=\"date\"/&gt;\n"
+"    &lt;/h:outputText&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Priority\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.priority}\" style=\"width: 30\"/&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Due Date\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.dueDate}\" style=\"width: 100\"&gt;\n"
+"        &lt;f:convertDateTime type=\"date\" dateStyle=\"short\"/&gt;\n"
+"    &lt;/h:inputText&gt;\n"
+"&lt;/h:column&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:677
+#, no-c-format
+msgid ""
+"This button ends the task by calling the action method annotated "
+"<literal>@StartTask @EndTask</literal>. It passes the task id to Seam as a "
+"request parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:680
+#, no-c-format
+msgid ""
+"&lt;h:column&gt;\n"
+"    &lt;s:button value=\"Done\" action=\"#{todoList.done}\" taskInstance=\"#"
+"{task}\"/&gt;\n"
+"&lt;/h:column&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:681
+#, no-c-format
+msgid ""
+"(Note that this is using a Seam <literal>&lt;s:button&gt;</literal> JSF "
+"control from the <literal>seam-ui.jar</literal> package.)"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:684
+#, no-c-format
+msgid ""
+"This button is used to update the properties of the tasks. When the form is "
+"submitted, Seam and jBPM will make any changes to the tasks persistent. "
+"There is no need for any action listener method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:687
+#, no-c-format
+msgid "&lt;h:commandButton value=\"Update Items\" action=\"update\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:688
+#, no-c-format
+msgid ""
+"A second form on the page is used to create new items, by calling the action "
+"method annotated <literal>@CreateProcess</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:691
+#, no-c-format
+msgid ""
+"&lt;h:form id=\"new\"&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:inputText value=\"#{todoList.description}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Create New Item\" action=\"#{todoList."
+"createTodo}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:692
+#, no-c-format
+msgid ""
+"There are several other files needed for the example, but they are just "
+"standard jBPM and Seam configuration and not very interesting."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:699 Tutorial.xml:814 Tutorial.xml:1157 Tutorial.xml:1178
+#: Tutorial.xml:1191
+#, no-c-format
+msgid "TODO"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:707
+#, no-c-format
+msgid "Seam pageflow: the numberguess example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:708
+#, no-c-format
+msgid ""
+"For Seam applications with relatively freeform (ad hoc) navigation, JSF/Seam "
+"navigation rules are a perfectly good way to define the page flow. For "
+"applications with a more constrained style of navigation, especially for "
+"user interfaces which are more stateful, navigation rules make it difficult "
+"to really understand the flow of the system. To understand the flow, you "
+"need to piece it together from the view pages, the actions and the "
+"navigation rules."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:711
+#, no-c-format
+msgid ""
+"Seam allows you to use a jPDL process definition to define pageflow. The "
+"simple number guessing example shows how this is done."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:724
+#, no-c-format
+msgid ""
+"The example is implemented using one JavaBean, three JSP pages and a jPDL "
+"pageflow definition. Let's begin with the pageflow:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:734
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"numberGuess\"&gt;\n"
+"   \n"
+"   &lt;start-page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"          &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"      &lt;/transition&gt;\n"
+"   &lt;/start-page&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess."
+"correctGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateRemainingGuesses\" expression=\"#{numberGuess."
+"lastGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"lose\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"displayGuess\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"lose\" view-id=\"/lose.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:737
+#, no-c-format
+msgid ""
+"The <literal>&lt;page&gt;</literal> element defines a wait state where the "
+"system displays a particular JSF view and waits for user input. The "
+"<literal>view-id</literal> is the same JSF view id used in plain JSF "
+"navigation rules. The <literal>redirect</literal> attribute tells Seam to "
+"use post-then-redirect when navigating to the page. (This results in "
+"friendly browser URLs.)"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:742
+#, no-c-format
+msgid ""
+"The <literal>&lt;transition&gt;</literal> element names a JSF outcome. The "
+"transition is triggered when a JSF action results in that outcome. Execution "
+"will then proceed to the next node of the pageflow graph, after invocation "
+"of any jBPM transition actions."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:747
+#, no-c-format
+msgid ""
+"A transition <literal>&lt;action&gt;</literal> is just like a JSF action, "
+"except that it occurs when a jBPM transition occurs. The transition action "
+"can invoke any Seam component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:752
+#, no-c-format
+msgid ""
+"A <literal>&lt;decision&gt;</literal> node branches the pageflow, and "
+"determines the next node to execute by evaluating a JSF EL expression."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:759
+#, no-c-format
+msgid "Here is what the pageflow looks like in the JBossIDE pageflow editor:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:770
+#, no-c-format
+msgid ""
+"Now that we have seen the pageflow, it is very, very easy to understand the "
+"rest of the application!"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:773
+#, no-c-format
+msgid ""
+"Here is the main page of the application, <literal>numberGuess.jsp</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:776
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"&#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"&#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Guess a number...&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Guess a number...&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    &lt;h:form&gt;\n"
+"        &lt;h:outputText value=\"Higher!\" rendered=\"#{numberGuess."
+"randomNumber&gt;numberGuess.currentGuess}\" /&gt;\n"
+"        &lt;h:outputText value=\"Lower!\" rendered=\"#{numberGuess."
+"randomNumber&lt;numberGuess.currentGuess}\" /&gt;\n"
+"        &lt;br /&gt;\n"
+"        I'm thinking of a number between &lt;h:outputText value=\"#"
+"{numberGuess.smallest}\" /&gt; and \n"
+"        &lt;h:outputText value=\"#{numberGuess.biggest}\" /&gt;. You have \n"
+"        &lt;h:outputText value=\"#{numberGuess.remainingGuesses}\" /&gt; "
+"guesses.\n"
+"        &lt;br /&gt;\n"
+"        Your guess: \n"
+"        &lt;h:inputText value=\"#{numberGuess.currentGuess}\" id=\"guess\" "
+"required=\"true\"&gt;\n"
+"            &lt;f:validateLongRange\n"
+"                maximum=\"#{numberGuess.biggest}\" \n"
+"                minimum=\"#{numberGuess.smallest}\"/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"        &lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"guess"
+"\" /&gt;\n"
+"        &lt;br/&gt;\n"
+"        &lt;h:message for=\"guess\" style=\"color: red\"/&gt;\n"
+"    &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:777
+#, no-c-format
+msgid ""
+"Notice how the command button names the <literal>guess</literal> transition "
+"instead of calling an action directly."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:780
+#, no-c-format
+msgid "The <literal>win.jsp</literal> page is predictable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:783
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"&#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"&#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;You won!&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;You won!&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    Yes, the answer was &lt;h:outputText value=\"#{numberGuess.currentGuess}"
+"\" /&gt;.\n"
+"    It took you &lt;h:outputText value=\"#{numberGuess.guessCount}\" /&gt; "
+"guesses.\n"
+"    Would you like to &lt;a href=\"numberGuess.seam\"&gt;play again&lt;/"
+"a&gt;?\n"
+"  &lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:784
+#, no-c-format
+msgid ""
+"As is <literal>lose.jsp</literal> (which I can't be bothered copy/pasting). "
+"Finally, the JavaBean Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:792
+#, no-c-format
+msgid ""
+"@Name(\"numberGuess\")\n"
+"@Scope(ScopeType.CONVERSATION)\n"
+"public class NumberGuess {\n"
+"   \n"
+"   private int randomNumber;\n"
+"   private Integer currentGuess;\n"
+"   private int biggest;\n"
+"   private int smallest;\n"
+"   private int guessCount;\n"
+"   private int maxGuesses;\n"
+"   \n"
+"   @Create \n"
+"   @Begin(pageflow=\"numberGuess\")\n"
+"   public void begin()\n"
+"   {\n"
+"      randomNumber = new Random().nextInt(100);\n"
+"      guessCount = 0;\n"
+"      biggest = 100;\n"
+"      smallest = 1;\n"
+"   }\n"
+"   \n"
+"   public void setCurrentGuess(Integer guess)\n"
+"   {\n"
+"      this.currentGuess = guess;\n"
+"   }\n"
+"   \n"
+"   public Integer getCurrentGuess()\n"
+"   {\n"
+"      return currentGuess;\n"
+"   }\n"
+"   \n"
+"   public void guess()\n"
+"   {\n"
+"      if (currentGuess&gt;randomNumber)\n"
+"      {\n"
+"         biggest = currentGuess - 1;\n"
+"      }\n"
+"      if (currentGuess&lt;randomNumber)\n"
+"      {\n"
+"         smallest = currentGuess + 1;\n"
+"      }\n"
+"      guessCount ++;\n"
+"   }\n"
+"   \n"
+"   public boolean isCorrectGuess()\n"
+"   {\n"
+"      return currentGuess==randomNumber;\n"
+"   }\n"
+"   \n"
+"   public int getBiggest()\n"
+"   {\n"
+"      return biggest;\n"
+"   }\n"
+"   \n"
+"   public int getSmallest()\n"
+"   {\n"
+"      return smallest;\n"
+"   }\n"
+"   \n"
+"   public int getGuessCount()\n"
+"   {\n"
+"      return guessCount;\n"
+"   }\n"
+"   \n"
+"   public boolean isLastGuess()\n"
+"   {\n"
+"      return guessCount==maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getRemainingGuesses() {\n"
+"      return maxGuesses-guessCount;\n"
+"   }\n"
+"\n"
+"   public void setMaxGuesses(int maxGuesses) {\n"
+"      this.maxGuesses = maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getMaxGuesses() {\n"
+"      return maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getRandomNumber() {\n"
+"      return randomNumber;\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:795
+#, no-c-format
+msgid ""
+"The first time a JSP page asks for a <literal>numberGuess</literal> "
+"component, Seam will create a new one for it, and the <literal>@Create</"
+"literal> method will be invoked, allowing the component to initialize itself."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:800
+#, no-c-format
+msgid ""
+"The <literal>@Begin</literal> annotation starts a Seam "
+"<emphasis>conversation</emphasis> (much more about that later), and "
+"specifies the pageflow definition to use for the conversation's page flow."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:807
+#, no-c-format
+msgid ""
+"As you can see, this Seam component is pure business logic! It doesn't need "
+"to know anything at all about the user interaction flow. This makes the "
+"component potentially more reuseable."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:822
+#, no-c-format
+msgid "A complete Seam application: the Hotel Booking example"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:824
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:825
+#, no-c-format
+msgid ""
+"The booking application is a complete hotel room reservation system "
+"incorporating the following features:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:830
+#, no-c-format
+msgid "User registration"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:835
+#, no-c-format
+msgid "Login"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:840
+#, no-c-format
+msgid "Logout"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:845
+#, no-c-format
+msgid "Set password"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:850
+#, no-c-format
+msgid "Hotel search"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:855
+#, no-c-format
+msgid "Hotel selection"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:860
+#, no-c-format
+msgid "Room reservation"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:865
+#, no-c-format
+msgid "Reservation confirmation"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:870
+#, no-c-format
+msgid "Existing reservation list"
+msgstr ""
+
+#. Tag: screeninfo
+#: Tutorial.xml:875
+#, no-c-format
+msgid "Booking example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:883
+#, no-c-format
+msgid ""
+"The booking application uses JSF, EJB 3.0 and Seam, together with Facelets "
+"for the view. There is also a port of this application to JSF, Facelets, "
+"Seam, JavaBeans and Hibernate3."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:886
+#, no-c-format
+msgid ""
+"One of the things you'll notice if you play with this application for long "
+"enough is that it is extremely <emphasis>robust</emphasis>. You can play "
+"with back buttons and browser refresh and opening multiple windows and "
+"entering nonsensical data as much as you like and you will find it very "
+"difficult to make the application crash. You might think that we spent weeks "
+"testing and fixing bugs to achive this. Actually, this is not the case. Seam "
+"was designed to make it very straightforward to build robust web "
+"applications and a lot of robustness that you are probably used to having to "
+"code yourself comes naturally and automatically with Seam."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:889
+#, no-c-format
+msgid ""
+"As you browse the sourcecode of the example application, and learn how the "
+"application works, observe how the declarative state management and "
+"integrated validation has been used to achieve this robustness."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:895
+#, no-c-format
+msgid "Overview of the booking example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:896
+#, no-c-format
+msgid ""
+"The project structure is identical to the previous one, to install and "
+"deploy this application, please refer to <xref linkend=\"Seam_Tutorial-"
+"Try_the_examples\"/>. Once you've successfully started the application, you "
+"can access it by pointing your browser to <ulink url=\"http://localhost:8080/"
+"seam-booking/\"><literal>http://localhost:8080/seam-booking/</literal></"
+"ulink>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:899
+#, no-c-format
+msgid ""
+"Just ten classes (plus six session beans local interfaces and 1 annotation "
+"interface) where used to implement this application. Six session bean action "
+"listeners contain all the business logic for the listed features."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:904
+#, no-c-format
+msgid ""
+"<literal>BookingListAction</literal> retrieves existing bookings for the "
+"currently logged in user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:907
+#, no-c-format
+msgid ""
+"<literal>ChangePasswordAction</literal> updates the password of the "
+"currently logged in user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:910
+#, no-c-format
+msgid ""
+"<literal>HotelBookingAction</literal> implements the core functionality of "
+"the application: hotel room searching, selection, booking and booking "
+"confirmation. This functionality is implemented as a <emphasis>conversation</"
+"emphasis>, so this is the most interesting class in the application."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:913
+#, no-c-format
+msgid ""
+"<literal>LoginAction</literal> validates the login details and retrieves the "
+"logged in user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:916
+#, no-c-format
+msgid "<literal>LogoutAction</literal> ends the login session."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:919
+#, no-c-format
+msgid "<literal>RegisterAction</literal> registers a new system user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:922
+#, no-c-format
+msgid "Three entity beans implement the application's persistent domain model."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:927
+#, no-c-format
+msgid "<literal>Hotel</literal> is an entity bean that represent a hotel"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:930
+#, no-c-format
+msgid ""
+"<literal>Booking</literal> is an entity bean that represents an existing "
+"booking"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:933
+#, no-c-format
+msgid ""
+"<literal>User</literal> is an entity bean to represents a user who can make "
+"hotel bookings"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:936
+#, no-c-format
+msgid ""
+"Finally, the <literal>LoggedIn</literal> annotation and the "
+"<literal>LoggedInInterceptor</literal> are used to protect actions that "
+"require a logged in user."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:942
+#, no-c-format
+msgid "Understanding Seam conversations"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:943
+#, no-c-format
+msgid ""
+"We encourage you browse the sourcecode at your pleasure. In this tutorial "
+"we'll concentrate upon one particular piece of functionality: hotel search, "
+"selection, booking and confirmation. From the point of view of the user, "
+"everything from selecting a hotel to confirming a booking is one continuous "
+"unit of work, a <emphasis>conversation</emphasis>. Searching, however, is "
+"<emphasis>not</emphasis> part of the conversation. The user can select "
+"multiple hotels from the same search results page, in different browser tabs."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:946
+#, no-c-format
+msgid ""
+"Most web application architectures have no first class construct to "
+"represent a conversation. This causes enormous problems managing state "
+"associated with the conversation. Usually, Java web applications use a "
+"combination of two techniques: first, some state is thrown into the "
+"<literal>HttpSession</literal>; second, persistable state is flushed to the "
+"database after every request, and reconstructed from the database at the "
+"beginning of each new request."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:949
+#, no-c-format
+msgid ""
+"Since the database is the least scalable tier, this often results in an "
+"utterly unacceptable lack of scalability. Added latency is also a problem, "
+"due to the extra traffic to and from the database on every request. To "
+"reduce this redundant traffic, Java applications often introduce a data "
+"(second-level) cache that keeps commonly accessed data between requests. "
+"This cache is necessarily inefficient, because invalidation is based upon an "
+"LRU policy instead of being based upon when the user has finished working "
+"with the data. Furthermore, because the cache is shared between many "
+"concurrent transactions, we've introduced a whole raft of problem's "
+"associated with keeping the cached state consistent with the database."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:952
+#, no-c-format
+msgid ""
+"Now consider the state held in the <literal>HttpSession</literal>. By very "
+"careful programming, we might be able to control the size of the session "
+"data. This is a lot more difficult than it sounds, since web browsers permit "
+"ad hoc non-linear navigation. But suppose we suddenly discover a system "
+"requirement that says that a user is allowed to have <emphasis>mutiple "
+"concurrent conversations</emphasis>, halfway through the development of the "
+"system (this has happened to me). Developing mechanisms to isolate session "
+"state associated with different concurrent conversations, and incorporating "
+"failsafes to ensure that conversation state is destroyed when the user "
+"aborts one of the conversations by closing a browser window or tab is not "
+"for the faint hearted (I've implemented this stuff twice so far, once for a "
+"client application, once for Seam, but I'm famously psychotic)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:955
+#, no-c-format
+msgid "Now there is a better way."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:958
+#, no-c-format
+msgid ""
+"Seam introduces the <emphasis>conversation context</emphasis> as a first "
+"class construct. You can safely keep conversational state in this context, "
+"and be assured that it will have a well-defined lifecycle. Even better, you "
+"won't need to be continually pushing data back and forth between the "
+"application server and the database, since the conversation context is a "
+"natural cache of data that the user is currently working with."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:961
+#, no-c-format
+msgid ""
+"Usually, the components we keep in the conversation context are stateful "
+"session beans. (We can also keep entity beans and JavaBeans in the "
+"conversation context.) There is an ancient canard in the Java community that "
+"stateful session beans are a scalability killer. This may have been true in "
+"1998 when WebFoobar 1.0 was released. It is no longer true today. "
+"Application servers like JBoss 4.0 have extremely sophisticated mechanisms "
+"for stateful session bean state replication. (For example, the JBoss EJB3 "
+"container performs fine-grained replication, replicating only those bean "
+"attribute values which actually changed.) Note that all the traditional "
+"technical arguments for why stateful beans are inefficient apply equally to "
+"the <literal>HttpSession</literal>, so the practice of shifting state from "
+"business tier stateful session bean components to the web session to try and "
+"improve performance is unbelievably misguided. It is certainly possible to "
+"write unscalable applications using stateful session beans, by using "
+"stateful beans incorrectly, or by using them for the wrong thing. But that "
+"doesn't mean you should <emphasis>never</emphasis> use them. Anyway, Seam "
+"guides you toward a safe usage model. Welcome to 2005."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:964
+#, no-c-format
+msgid "OK, I'll stop ranting now, and get back to the tutorial."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:967
+#, no-c-format
+msgid ""
+"The booking example application shows how stateful components with different "
+"scopes can collaborate together to achieve complex behaviors. The main page "
+"of the booking application allows the user to search for hotels. The search "
+"results are kept in the Seam session scope. When the user navigates to one "
+"of these hotels, a conversation begins, and a conversation scoped component "
+"calls back to the session scoped component to retrieve the selected hotel."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:970
+#, no-c-format
+msgid ""
+"The booking example also demonstrates the use of Ajax4JSF to implement rich "
+"client behavior without the use of handwritten JavaScript."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:973
+#, no-c-format
+msgid ""
+"The search functionality is implemented using a session-scope stateful "
+"session bean, similar to the one we saw in the message list example above."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:983
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"hotelSearch\")\n"
+"@Scope(ScopeType.SESSION)\n"
+"@LoggedIn\n"
+"public class HotelSearchingAction implements HotelSearching\n"
+"{\n"
+"   \n"
+"   @PersistenceContext\n"
+"   private EntityManager em;\n"
+"   \n"
+"   private String searchString;\n"
+"   private int pageSize = 10;\n"
+"   private int page;\n"
+"   \n"
+"   @DataModel\n"
+"   private List&lt;Hotel&gt; hotels;\n"
+"   \n"
+"   public String find()\n"
+"   {\n"
+"      page = 0;\n"
+"      queryHotels();   \n"
+"      return \"main\";\n"
+"   }\n"
+"\n"
+"   public String nextPage()\n"
+"   {\n"
+"      page++;\n"
+"      queryHotels();\n"
+"      return \"main\";\n"
+"   }\n"
+"      \n"
+"   private void queryHotels()\n"
+"   {\n"
+"      String searchPattern = searchString==null ? \"&#37;\" : '&#37;' + \n"
+"          searchString.toLowerCase().replace('*', '&#37;') + '&#37;';\n"
+"      hotels = em.createQuery(\"select h from Hotel h where lower(h.name) "
+"like\n"
+"          :search or lower(h.city) like :search \n"
+"          or lower(h.zip) like :search or lower(h.address) like :search\")\n"
+"            .setParameter(\"search\", searchPattern)\n"
+"            .setMaxResults(pageSize)\n"
+"            .setFirstResult( page * pageSize )\n"
+"            .getResultList();\n"
+"   }\n"
+"   \n"
+"   public boolean isNextPageAvailable()\n"
+"   {\n"
+"      return hotels!=null &amp;&amp; hotels.size()==pageSize;\n"
+"   }\n"
+"   \n"
+"   public int getPageSize() {\n"
+"      return pageSize;\n"
+"   }\n"
+"\n"
+"   public void setPageSize(int pageSize) {\n"
+"      this.pageSize = pageSize;\n"
+"   }\n"
+"\n"
+"   public String getSearchString()\n"
+"   {\n"
+"      return searchString;\n"
+"   }\n"
+"\n"
+"   public void setSearchString(String searchString)\n"
+"   {\n"
+"      this.searchString = searchString;\n"
+"   }\n"
+"   \n"
+"   @Destroy @Remove\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:986
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Stateful</literal> annotation identifies this "
+"class as a stateful session bean. Stateful session beans are scoped to the "
+"conversation context by default."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:991
+#, no-c-format
+msgid ""
+"The <literal>@LoggedIn</literal> annotation applies a custom Seam "
+"interceptor to the component. This works because <literal>@LoggedIn</"
+"literal> is marked with an <literal>@Interceptor</literal> meta-annotation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:996
+#, no-c-format
+msgid ""
+"The <link linkend=\"datamodel-annotation\"><literal>@DataModel</literal></"
+"link> annotation exposes a <literal>List</literal> as a JSF "
+"<literal>ListDataModel</literal>. This makes it easy to implement clickable "
+"lists for search screens. In this case, the list of hotels is exposed to the "
+"page as a <literal>ListDataModel</literal> in the conversation variable "
+"named <literal>hotels</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1001
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Remove</literal> annotation specifies that a "
+"stateful session bean should be removed and its state destroyed after "
+"invocation of the annotated method. In Seam, all stateful session beans "
+"should define a method marked <literal>@Destroy @Remove</literal>. This is "
+"the EJB remove method that will be called when Seam destroys the session "
+"context. Actually, the <link linkend=\"destroy-annotation"
+"\"><literal>@Destroy</literal></link> annotation is of more general "
+"usefulness, since it can be used for any kind of cleanup that should happen "
+"when any Seam context ends. If you don't have an <literal>@Destroy @Remove</"
+"literal> method, state will leak and you will suffer performance problems."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1008
+#, no-c-format
+msgid ""
+"The main page of the application is a Facelets page. Let's look at the "
+"fragment which relates to searching for hotels:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1018
+#, no-c-format
+msgid ""
+"&lt;div class=\"section\"&gt;\n"
+"&lt;h:form&gt;\n"
+"  \n"
+"  &lt;span class=\"errors\"&gt;\n"
+"    &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"  &lt;/span&gt;\n"
+"    \n"
+"  &lt;h1&gt;Search Hotels&lt;/h1&gt;\n"
+"  &lt;fieldset&gt; \n"
+"     &lt;h:inputText value=\"#{hotelSearch.searchString}\" style=\"width: "
+"165px;\"&gt;\n"
+"        &lt;a:support event=\"onkeyup\" actionListener=\"#{hotelSearch.find}"
+"\" \n"
+"                   reRender=\"searchResults\" /&gt;\n"
+"     &lt;/h:inputText&gt;\n"
+"     &amp;#160;\n"
+"     &lt;a:commandButton value=\"Find Hotels\" action=\"#{hotelSearch.find}"
+"\" \n"
+"                      styleClass=\"button\" reRender=\"searchResults\"/&gt;\n"
+"     &amp;#160;\n"
+"     &lt;a:status&gt;\n"
+"        &lt;f:facet name=\"start\"&gt;\n"
+"           &lt;h:graphicImage value=\"/img/spinner.gif\"/&gt;\n"
+"        &lt;/f:facet&gt;\n"
+"     &lt;/a:status&gt;\n"
+"     &lt;br/&gt;\n"
+"     &lt;h:outputLabel for=\"pageSize\"&gt;Maximum results:&lt;/h:"
+"outputLabel&gt;&amp;#160;\n"
+"     &lt;h:selectOneMenu value=\"#{hotelSearch.pageSize}\" id=\"pageSize"
+"\"&gt;\n"
+"        &lt;f:selectItem itemLabel=\"5\" itemValue=\"5\"/&gt;\n"
+"        &lt;f:selectItem itemLabel=\"10\" itemValue=\"10\"/&gt;\n"
+"        &lt;f:selectItem itemLabel=\"20\" itemValue=\"20\"/&gt;\n"
+"     &lt;/h:selectOneMenu&gt;\n"
+"  &lt;/fieldset&gt;\n"
+"    \n"
+"&lt;/h:form&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;a:outputPanel id=\"searchResults\"&gt;\n"
+"  &lt;div class=\"section\"&gt;\n"
+"  &lt;h:outputText value=\"No Hotels Found\" \n"
+"                rendered=\"#{hotels != null and hotels.rowCount==0}\"/&gt;\n"
+"  &lt;h:dataTable value=\"#{hotels}\" var=\"hot\" rendered=\"#{hotels."
+"rowCount&gt;0}\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Name&lt;/f:facet&gt;\n"
+"      #{hot.name}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Address&lt;/f:facet&gt;\n"
+"      #{hot.address}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;City, State&lt;/f:facet&gt;\n"
+"      #{hot.city}, #{hot.state}, #{hot.country}\n"
+"    &lt;/h:column&gt; \n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Zip&lt;/f:facet&gt;\n"
+"      #{hot.zip}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"      &lt;s:link value=\"View Hotel\" action=\"#{hotelBooking.selectHotel"
+"(hot)}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"  &lt;/h:dataTable&gt;\n"
+"  &lt;s:link value=\"More results\" action=\"#{hotelSearch.nextPage}\" \n"
+"          rendered=\"#{hotelSearch.nextPageAvailable}\"/&gt;\n"
+"  &lt;/div&gt;\n"
+"&lt;/a:outputPanel&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1021
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:support&gt;</literal> tag allows a JSF action "
+"event listener to be called by asynchronous <literal>XMLHttpRequest</"
+"literal> when a JavaScript event like <literal>onkeyup</literal> occurs. "
+"Even better, the <literal>reRender</literal> attribute lets us render a "
+"fragment of the JSF page and perform a partial page update when the "
+"asynchronous response is received."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1026
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:status&gt;</literal> tag lets us display a "
+"cheesy annimated image while we wait for asynchronous requests to return."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1031
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:outputPanel&gt;</literal> tag defines a region "
+"of the page which can be re-rendered by an asynchronous request."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1036
+#, no-c-format
+msgid ""
+"The Seam <literal>&lt;s:link&gt;</literal> tag lets us attach a JSF action "
+"listener to an ordinary (non-JavaScript) HTML link. The advantage of this "
+"over the standard JSF <literal>&lt;h:commandLink&gt;</literal> is that it "
+"preserves the operation of \"open in new window\" and \"open in new tab\". "
+"Also notice that we use a method binding with a parameter: <literal>#"
+"{hotelBooking.selectHotel(hot)}</literal>. This is not possible in the "
+"standard Unified EL, but Seam provides an extension to the EL that lets you "
+"use parameters on any method binding expression."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1043
+#, no-c-format
+msgid ""
+"This page displays the search results dynamically as we type, and lets us "
+"choose a hotel and pass it to the <literal>selectHotel()</literal> method of "
+"the <literal>HotelBookingAction</literal>, which is where the "
+"<emphasis>really</emphasis> interesting stuff is going to happen."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1046
+#, no-c-format
+msgid ""
+"Now lets see how the booking example application uses a conversation-scoped "
+"stateful session bean to achieve a natural cache of persistent data related "
+"to the conversation. The following code example is pretty long. But if you "
+"think of it as a list of scripted actions that implement the various steps "
+"of the conversation, it's understandable. Read the class from top to bottom, "
+"as if it were a story."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1057
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"hotelBooking\")\n"
+"@LoggedIn\n"
+"public class HotelBookingAction implements HotelBooking\n"
+"{\n"
+"   \n"
+"   @PersistenceContext(type=EXTENDED)\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @In \n"
+"   private User user;\n"
+"   \n"
+"   @In(required=false) @Out\n"
+"   private Hotel hotel;\n"
+"   \n"
+"   @In(required=false) \n"
+"   @Out(required=false)\n"
+"   private Booking booking;\n"
+"     \n"
+"   @In\n"
+"   private FacesMessages facesMessages;\n"
+"      \n"
+"   @In\n"
+"   private Events events;\n"
+"   \n"
+"   @Logger \n"
+"   private Log log;\n"
+"   \n"
+"   @Begin\n"
+"   public String selectHotel(Hotel selectedHotel)\n"
+"   {\n"
+"      hotel = em.merge(selectedHotel);\n"
+"      return \"hotel\";\n"
+"   }\n"
+"   \n"
+"   public String bookHotel()\n"
+"   {      \n"
+"      booking = new Booking(hotel, user);\n"
+"      Calendar calendar = Calendar.getInstance();\n"
+"      booking.setCheckinDate( calendar.getTime() );\n"
+"      calendar.add(Calendar.DAY_OF_MONTH, 1);\n"
+"      booking.setCheckoutDate( calendar.getTime() );\n"
+"      \n"
+"      return \"book\";\n"
+"   }\n"
+"\n"
+"   public String setBookingDetails()\n"
+"   {\n"
+"      if (booking==null || hotel==null) return \"main\";\n"
+"      if ( !booking.getCheckinDate().before( booking.getCheckoutDate() ) )\n"
+"      {\n"
+"         facesMessages.add(\"Check out date must be later than check in date"
+"\");\n"
+"         return null;\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return \"confirm\";\n"
+"      }\n"
+"   }\n"
+"\n"
+"   @End\n"
+"   public String confirm()\n"
+"   {\n"
+"      if (booking==null || hotel==null) return \"main\";\n"
+"      em.persist(booking);\n"
+"      facesMessages.add\n"
+"          (\"Thank you, #{user.name}, your confimation number for #{hotel."
+"name} is #{booking.id}\");\n"
+"      log.info(\"New booking: #{booking.id} for #{user.username}\");\n"
+"      events.raiseEvent(\"bookingConfirmed\");\n"
+"      return \"confirmed\";\n"
+"   }\n"
+"   \n"
+"   @End\n"
+"   public String cancel()\n"
+"   {\n"
+"      return \"main\";\n"
+"   }\n"
+"   \n"
+"   @Destroy @Remove\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1060
+#, no-c-format
+msgid ""
+"This bean uses an EJB3 <emphasis>extended persistence context</emphasis>, so "
+"that any entity instances remain managed for the whole lifecycle of the "
+"stateful session bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1065
+#, no-c-format
+msgid ""
+"The <link linkend=\"out-annotation\"><literal>@Out</literal></link> "
+"annotation declares that an attribute value is <emphasis>outjected</"
+"emphasis> to a context variable after method invocations. In this case, the "
+"context variable named <literal>hotel</literal> will be set to the value of "
+"the <literal>hotel</literal> instance variable after every action listener "
+"invocation completes."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1070
+#, no-c-format
+msgid ""
+"The <link linkend=\"begin-annotation\"><literal>@Begin</literal></link> "
+"annotation specifies that the annotated method begins a <emphasis>long-"
+"running conversation</emphasis>, so the current conversation context will "
+"not be destroyed at the end of the request. Instead, it will be reassociated "
+"with every request from the current window, and destroyed either by timeout "
+"due to conversation inactivity or invocation of a matching <literal>@End</"
+"literal> method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1075
+#, no-c-format
+msgid ""
+"The <link linkend=\"end-annotation\"><literal>@End</literal></link> "
+"annotation specifies that the annotated method ends the current long-running "
+"conversation, so the current conversation context will be destroyed at the "
+"end of the request."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1080
+#, no-c-format
+msgid ""
+"This EJB remove method will be called when Seam destroys the conversation "
+"context. Don't ever forget to define this method!"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1087
+#, no-c-format
+msgid ""
+"<literal>HotelBookingAction</literal> contains all the action listener "
+"methods that implement selection, booking and booking confirmation, and "
+"holds state related to this work in its instance variables. We think you'll "
+"agree that this code is much cleaner and simpler than getting and setting "
+"<literal>HttpSession</literal> attributes."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1090
+#, no-c-format
+msgid ""
+"Even better, a user can have multiple isolated conversations per login "
+"session. Try it! Log in, run a search, and navigate to different hotel pages "
+"in multiple browser tabs. You'll be able to work on creating two different "
+"hotel reservations at the same time. If you leave any one conversation "
+"inactive for long enough, Seam will eventually time out that conversation "
+"and destroy its state. If, after ending a conversation, you backbutton to a "
+"page of that conversation and try to perform an action, Seam will detect "
+"that the conversation was already ended, and redirect you to the search page."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1096
+#, no-c-format
+msgid "The Seam UI control library"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1097
+#, no-c-format
+msgid ""
+"If you check inside the WAR file for the booking application, you'll find "
+"<literal>seam-ui.jar</literal> in the <literal>WEB-INF/lib</literal> "
+"directory. This package contains a number of JSF custom controls that "
+"integrate with Seam. The booking application uses the <literal>&lt;s:link&gt;"
+"</literal> control for navigation from the search screen to the hotel page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1100
+#, no-c-format
+msgid ""
+"&lt;s:link value=\"View Hotel\" action=\"#{hotelBooking.selectHotel}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1101
+#, no-c-format
+msgid ""
+"The use of <literal>&lt;s:link&gt;</literal> here allows us to attach an "
+"action listener to a HTML link without breaking the browser's \"open in new "
+"window\" feature. The standard JSF <literal>&lt;h:commandLink&gt;</literal> "
+"does not work with \"open in new window\". We'll see later that <literal>&lt;"
+"s:link&gt;</literal> also offers a number of other useful features, "
+"including conversation propagation rules."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1104
+#, no-c-format
+msgid ""
+"The booking application uses some other Seam and Ajax4JSF controls, "
+"especially on the <literal>/book.xhtml</literal> page. We won't get into the "
+"details of those controls here, but if you want to understand this code, "
+"please refer to the chapter covering Seam's functionality for JSF form "
+"validation."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1110
+#, no-c-format
+msgid "The Seam Debug Page"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1111
+#, no-c-format
+msgid ""
+"The WAR also includes <literal>seam-debug.jar</literal>. If this jar is "
+"deployed in <literal>WEB-INF/lib</literal>, along with the Facelets, and if "
+"you set the following Seam property in <literal>web.xml</literal> or "
+"<literal>seam.properties</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1114
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;org.jboss.seam.core.init.debug&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;true&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1115
+#, no-c-format
+msgid ""
+"Then the Seam debug page will be available. This page lets you browse and "
+"inspect the Seam components in any of the Seam contexts associated with your "
+"current login session. Just point your browser at <ulink url=\"http://"
+"localhost:8080/seam-booking/debug.seam\"><literal>http://localhost:8080/seam-"
+"booking/debug.seam</literal></ulink>."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1131
+#, no-c-format
+msgid "A complete application featuring Seam and jBPM: the DVD Store example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1132
+#, no-c-format
+msgid ""
+"The DVD Store demo application shows the practical usage of jBPM for both "
+"task management and pageflow."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1135
+#, no-c-format
+msgid ""
+"The user screens take advantage of a jPDL pageflow to implement searching "
+"and shopping cart functionality."
+msgstr ""
+
+#. Tag: screeninfo
+#: Tutorial.xml:1138 Tutorial.xml:1149 Tutorial.xml:1170
+#, no-c-format
+msgid "DVD Store example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1146
+#, no-c-format
+msgid ""
+"The administration screens take use jBPM to manage the approval and shipping "
+"cycle for orders. The business process may even be changed dynamically, by "
+"selecting a different process definition!"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1160
+#, no-c-format
+msgid "Look in the <literal>dvdstore</literal> directory."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1166
+#, no-c-format
+msgid ""
+"A complete application featuring Seam workspace management: the Issue "
+"Tracker example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1167
+#, no-c-format
+msgid ""
+"The Issue Tracker demo shows off Seam's workspace management functionality: "
+"the conversation switcher, conversation list and breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1181
+#, no-c-format
+msgid "Look in the <literal>issues</literal> directory."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1187
+#, no-c-format
+msgid "An example of Seam with Hibernate: the Hibernate Booking example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1188
+#, no-c-format
+msgid ""
+"The Hibernate Booking demo is a straight port of the Booking demo to an "
+"alternative architecture that uses Hibernate for persistence and JavaBeans "
+"instead of session beans."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1194
+#, no-c-format
+msgid "Look in the <literal>hibernate</literal> directory."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1200
+#, no-c-format
+msgid "A RESTful Seam application: the Blog example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1201
+#, no-c-format
+msgid ""
+"Seam makes it very easy to implement applications which keep state on the "
+"server-side. However, server-side state is not always appropriate, "
+"especially in for functionality that serves up <emphasis>content</emphasis>. "
+"For this kind of problem we often need to let the user bookmark pages and "
+"have a relatively stateless server, so that any page can be accessed at any "
+"time, via the bookmark. The Blog example shows how to a implement RESTful "
+"application using Seam. Every page of the application can be bookmarked, "
+"including the search results page."
+msgstr ""
+
+#. Tag: screeninfo
+#: Tutorial.xml:1204
+#, no-c-format
+msgid "Blog example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1212
+#, no-c-format
+msgid ""
+"The Blog example demonstrates the use of \"pull\"-style MVC, where instead "
+"of using action listener methods to retrieve data and prepare the data for "
+"the view, the view pulls data from components as it is being rendered."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1216
+#, no-c-format
+msgid "Using \"pull\"-style MVC"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1217
+#, no-c-format
+msgid ""
+"This snippet from the <literal>index.xhtml</literal> facelets page displays "
+"a list of recent blog entries:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1220
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{blog.recentBlogEntries}\" var=\"blogEntry\" rows="
+"\"3\"&gt;\n"
+"   &lt;h:column&gt;\n"
+"      &lt;div class=\"blogEntry\"&gt;\n"
+"         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"         &lt;div&gt;\n"
+"            &lt;h:outputText escape=\"false\" \n"
+"                  value=\"#{blogEntry.excerpt==null ? blogEntry.body : "
+"blogEntry.excerpt}\"/&gt;\n"
+"         &lt;/div&gt;\n"
+"         &lt;p&gt;\n"
+"            &lt;h:outputLink value=\"entry.seam\" rendered=\"#{blogEntry."
+"excerpt!=null}\"&gt;\n"
+"               &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/"
+"&gt;\n"
+"               Read more...\n"
+"            &lt;/h:outputLink&gt;\n"
+"         &lt;/p&gt;\n"
+"         &lt;p&gt;\n"
+"            [Posted on \n"
+"            &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"               &lt;f:convertDateTime timeZone=\"#{blog.timeZone}\" locale=\"#"
+"{blog.locale}\" \n"
+"                   type=\"both\"/&gt;\n"
+"            &lt;/h:outputText&gt;]\n"
+"            &amp;#160;\n"
+"            &lt;h:outputLink value=\"entry.seam\"&gt;[Link]\n"
+"               &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/"
+"&gt;\n"
+"            &lt;/h:outputLink&gt;\n"
+"         &lt;/p&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1221
+#, no-c-format
+msgid ""
+"If we navigate to this page from a bookmark, how does the data used by the "
+"<literal>&lt;h:dataTable&gt;</literal> actually get initialized? Well, what "
+"happens is that the <literal>Blog</literal> is retrieved lazily&mdash;"
+"\"pulled\"&mdash;when needed, by a Seam component named <literal>blog</"
+"literal>. This is the opposite flow of control to what is usual in "
+"traditional web action-based frameworks like Struts."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1229
+#, no-c-format
+msgid ""
+"@Name(\"blog\")\n"
+"@Scope(ScopeType.STATELESS)\n"
+"public class BlogService \n"
+"{\n"
+"   \n"
+"   @In\n"
+"   private EntityManager entityManager;\n"
+"  \n"
+"   @Unwrap\n"
+"   public Blog getBlog()\n"
+"   {\n"
+"      return (Blog) entityManager.createQuery(\"from Blog b left join fetch "
+"b.blogEntries\")\n"
+"            .setHint(\"org.hibernate.cacheable\", true)\n"
+"            .getSingleResult();\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1232
+#, no-c-format
+msgid ""
+"This component uses a <emphasis>seam-managed persistence context</emphasis>. "
+"Unlike the other examples we've seen, this persistence context is managed by "
+"Seam, instead of by the EJB3 container. The persistence context spans the "
+"entire web request, allowing us to avoid any exceptions that occur when "
+"accessing unfetched associations in the view."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1237
+#, no-c-format
+msgid ""
+"The <literal>@Unwrap</literal> annotation tells Seam to provide the return "
+"value of the method&mdash;the <literal>Blog</literal>&mdash;instead of the "
+"actual <literal>BlogService</literal> component to clients. This is the Seam "
+"<emphasis>manager component pattern</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1244
+#, no-c-format
+msgid ""
+"This is good so far, but what about bookmarking the result of form "
+"submissions, such as a search results page?"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1250
+#, no-c-format
+msgid "Bookmarkable search results page"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1251
+#, no-c-format
+msgid ""
+"The blog example has a tiny form in the top right of each page that allows "
+"the user to search for blog entries. This is defined in a file, "
+"<literal>menu.xhtml</literal>, included by the facelets template, "
+"<literal>template.xhtml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1254
+#, no-c-format
+msgid ""
+"&lt;div id=\"search\"&gt;\n"
+"   &lt;h:form&gt;\n"
+"      &lt;h:inputText value=\"#{searchAction.searchPattern}\"/&gt;\n"
+"      &lt;h:commandButton value=\"Search\" action=\"/search.xhtml\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1255
+#, no-c-format
+msgid ""
+"To implement a bookmarkable search results page, we need to perform a "
+"browser redirect after processing the search form submission. Because we "
+"used the JSF view id as the action outcome, Seam automatically redirects to "
+"the view id when the form is submitted. Alternatively, we could have defined "
+"a navigation rule like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1258
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"   &lt;navigation-case&gt;\n"
+"      &lt;from-outcome&gt;searchResults&lt;/from-outcome&gt;\n"
+"      &lt;to-view-id&gt;/search.xhtml&lt;/to-view-id&gt;\n"
+"      &lt;redirect/&gt;\n"
+"   &lt;/navigation-case&gt;\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1259
+#, no-c-format
+msgid "Then the form would have looked like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1262
+#, no-c-format
+msgid ""
+"&lt;div id=\"search\"&gt;\n"
+"   &lt;h:form&gt;\n"
+"      &lt;h:inputText value=\"#{searchAction.searchPattern}\"/&gt;\n"
+"      &lt;h:commandButton value=\"Search\" action=\"searchResults\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1263
+#, no-c-format
+msgid ""
+"But when we redirect, we need to include the values submitted with the form "
+"as request parameters, to get a bookmarkable URL like <literal>http://"
+"localhost:8080/seam-blog/search.seam?searchPattern=seam</literal>. JSF does "
+"not provide an easy way to do this, but Seam does. We use a Seam "
+"<emphasis>page parameter</emphasis>, defined in <literal>WEB-INF/pages.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1266
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   &lt;page view-id=\"/search.xhtml\"&gt;\n"
+"      &lt;param name=\"searchPattern\" value=\"#{searchService.searchPattern}"
+"\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1267
+#, no-c-format
+msgid ""
+"This tells Seam to include the value of <literal>#{searchService."
+"searchPattern}</literal> as a request parameter named "
+"<literal>searchPattern</literal> when redirecting to the page, and then re-"
+"apply the value of that parameter to the model before rendering the page."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1270
+#, no-c-format
+msgid "The redirect takes us to the <literal>search.xhtml</literal> page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1273
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{searchResults}\" var=\"blogEntry\"&gt;\n"
+"   &lt;h:column&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:outputLink value=\"entry.seam\"&gt;\n"
+"            &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"            #{blogEntry.title}\n"
+"         &lt;/h:outputLink&gt;\n"
+"         posted on \n"
+"         &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"            &lt;f:convertDateTime timeZone=\"#{blog.timeZone}\" locale=\"#"
+"{blog.locale}\" type=\"both\"/&gt;\n"
+"         &lt;/h:outputText&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1274
+#, no-c-format
+msgid ""
+"Which again uses \"pull\"-style MVC to retrieve the actual search results:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1277
+#, no-c-format
+msgid ""
+"@Name(\"searchService\")\n"
+"public class SearchService \n"
+"{\n"
+"   \n"
+"   @In\n"
+"   private EntityManager entityManager;\n"
+"   \n"
+"   private String searchPattern;\n"
+"   \n"
+"   @Factory(\"searchResults\")\n"
+"   public List&lt;BlogEntry&gt; getSearchResults()\n"
+"   {\n"
+"      if (searchPattern==null)\n"
+"      {\n"
+"         return null;\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return entityManager.createQuery(\"select be from BlogEntry be "
+"where lower(be.title)\n"
+"             like :searchPattern or lower(be.body) like :searchPattern \n"
+"             order by be.date desc\")\n"
+"               .setParameter( \"searchPattern\", getSqlSearchPattern() )\n"
+"               .setMaxResults(100)\n"
+"               .getResultList();\n"
+"      }\n"
+"   }\n"
+"\n"
+"   private String getSqlSearchPattern()\n"
+"   {\n"
+"      return searchPattern==null ? \"\" : '&#37;' + \n"
+"          searchPattern.toLowerCase().replace('*', '&#37;').replace('?', "
+"'_') + '&#37;';\n"
+"   }\n"
+"\n"
+"   public String getSearchPattern()\n"
+"   {\n"
+"      return searchPattern;\n"
+"   }\n"
+"\n"
+"   public void setSearchPattern(String searchPattern)\n"
+"   {\n"
+"      this.searchPattern = searchPattern;\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1282
+#, no-c-format
+msgid "Using \"push\"-style MVC in a RESTful application"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1283
+#, no-c-format
+msgid ""
+"Very occasionally, it makes more sense to use push-style MVC for processing "
+"RESTful pages, and so Seam provides the notion of a <emphasis>page action</"
+"emphasis>. The Blog example uses a page action for the blog entry page, "
+"<literal>entry.xhtml</literal>. Note that this is a little bit contrived, it "
+"would have been easier to use pull-style MVC here as well."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1286
+#, no-c-format
+msgid ""
+"The <literal>entryAction</literal> component works much like an action class "
+"in a traditional push-MVC action-oriented framework like Struts:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1289
+#, no-c-format
+msgid ""
+"@Name(\"entryAction\")\n"
+"@Scope(STATELESS)\n"
+"public class EntryAction\n"
+"{\n"
+"   @In(create=true) \n"
+"   private Blog blog;\n"
+"   \n"
+"   @Out\n"
+"   private BlogEntry blogEntry;\n"
+"   \n"
+"   public void loadBlogEntry(String id) throws EntryNotFoundException\n"
+"   {\n"
+"      blogEntry = blog.getBlogEntry(id);\n"
+"      if (blogEntry==null) throw new EntryNotFoundException(id);\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1290
+#, no-c-format
+msgid "Page actions are also declared in <literal>pages.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1293
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   ...\n"
+"\n"
+"   &lt;page view-id=\"/entry.xhtml\" action=\"#{entryAction.loadBlogEntry"
+"(blogEntry.id)}\"&gt;\n"
+"      &lt;param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"\n"
+"   &lt;page view-id=\"/post.xhtml\" action=\"#{loginAction.challenge}\"/"
+"&gt;\n"
+"\n"
+"   &lt;page view-id=\"*\" action=\"#{blog.hitCount.hit}\"/&gt;\n"
+"\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1294
+#, no-c-format
+msgid ""
+"Notice that the example is using page actions for some other "
+"functionality&mdash;the login challenge, and the pageview counter. Also "
+"notice the use of a parameter in the page action method binding. This is not "
+"a standard feature of JSF EL, but Seam lets you use it, not just for page "
+"actions, but also in JSF method bindings."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1297
+#, no-c-format
+msgid ""
+"When the <literal>entry.xhtml</literal> page is requested, Seam first binds "
+"the page parameter <literal>blogEntryId</literal> to the model, then runs "
+"the page action, which retrieves the needed data&mdash;the "
+"<literal>blogEntry</literal>&mdash;and places it in the Seam event context. "
+"Finally, the following is rendered:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1300
+#, no-c-format
+msgid ""
+"&lt;div class=\"blogEntry\"&gt;\n"
+"   &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"   &lt;div&gt;\n"
+"      &lt;h:outputText escape=\"false\" value=\"#{blogEntry.body}\"/&gt;\n"
+"   &lt;/div&gt;\n"
+"   &lt;p&gt;\n"
+"      [Posted on&amp;#160;\n"
+"      &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"         &lt;f:convertDateTime timezone=\"#{blog.timeZone}\" locale=\"#{blog."
+"locale}\" type=\"both\"/&gt;\n"
+"      &lt;/h:outputText&gt;]\n"
+"   &lt;/p&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1301
+#, no-c-format
+msgid ""
+"If the blog entry is not found in the database, the "
+"<literal>EntryNotFoundException</literal> exception is thrown. We want this "
+"exception to result in a 404 error, not a 505, so we annotate the exception "
+"class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1304
+#, no-c-format
+msgid ""
+"@ApplicationException(rollback=true)\n"
+"@HttpError(errorCode=HttpServletResponse.SC_NOT_FOUND)\n"
+"public class EntryNotFoundException extends Exception\n"
+"{\n"
+"   EntryNotFoundException(String id)\n"
+"   {\n"
+"      super(\"entry not found: \" + id);\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1305
+#, no-c-format
+msgid ""
+"An alternative implementation of the example does not use the parameter in "
+"the method binding:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1308
+#, no-c-format
+msgid ""
+"@Name(\"entryAction\")\n"
+"@Scope(STATELESS)\n"
+"public class EntryAction\n"
+"{\n"
+"   @In(create=true) \n"
+"   private Blog blog;\n"
+"   \n"
+"   @In @Out\n"
+"   private BlogEntry blogEntry;\n"
+"   \n"
+"   public void loadBlogEntry() throws EntryNotFoundException\n"
+"   {\n"
+"      blogEntry = blog.getBlogEntry( blogEntry.getId() );\n"
+"      if (blogEntry==null) throw new EntryNotFoundException(id);\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1309
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   ...\n"
+"\n"
+"   &lt;page view-id=\"/entry.xhtml\" action=\"#{entryAction.loadBlogEntry}"
+"\"&gt;\n"
+"      &lt;param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1310
+#, no-c-format
+msgid "It is a matter of taste which implementation you prefer."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1318
+#, no-c-format
+msgid "Running the Seam examples in JBoss using the JSF 1.2 RI"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1319
+#, no-c-format
+msgid ""
+"JBoss AS 4.0 ships with the Apache MyFaces implementation of JSF 1.1. After "
+"many months of waiting, there is <emphasis>still</emphasis> no "
+"implementation of JSF 1.2 from MyFaces. For this and other reasons, JBoss AS "
+"4.2 will embed the JSF 1.2 Reference Implementation by default. Soon after "
+"the release of 4.2, we will migrate the Seam examples to JSF 1.2."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1322
+#, no-c-format
+msgid ""
+"For those who can't wait, Seam is already compatible with JSF 1.2, and it's "
+"easy to get the Seam examples running with JSF 1.2 in JBoss 4.0.5. Let's "
+"start with the famous booking example:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1327
+#, no-c-format
+msgid ""
+"copy <literal>jsf-api.jar</literal>, <literal>jsf-impl.jar</literal>, "
+"<literal>el-api.jar</literal>, <literal>el-impl.jar</literal> to "
+"<literal>server/default/deploy/tomcat/jbossweb-tomcat55.sar/jsf-libs</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1332
+#, no-c-format
+msgid ""
+"delete <literal>myfaces-api.jar</literal> and <literal>myfaces-impl.jar</"
+"literal> from <literal>server/default/deploy/tomcat/jbossweb-tomcat55.sar/"
+"jsf-libs</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1337
+#, no-c-format
+msgid ""
+"edit <literal>server/default/deploy/tomcat/jbossweb-tomcat55.sar/conf/web."
+"xml</literal>, replacing <literal>myfaces-impl.jar</literal> with "
+"<literal>jsf-impl.jar</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1342
+#, no-c-format
+msgid ""
+"edit <literal>examples/booking/resources/WEB-INF/web.xml</literal>, deleting "
+"the MyFaces listener, uncommenting the RI listener"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1347
+#, no-c-format
+msgid ""
+"edit <literal>examples/booking/resources/WEB-INF/faces-config.xml</literal>, "
+"uncommenting the lines that install the <literal>SeamELResolver</literal> "
+"using the new JSF 1.2 XML schema declaration."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1352
+#, no-c-format
+msgid ""
+"edit <literal>examples/booking/resources/META-INF/application.xml</literal>, "
+"deleting the lines that declare <literal>el-api.jar</literal> and "
+"<literal>el-impl.jar</literal> as Java modules."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1357
+#, no-c-format
+msgid ""
+"Restart JBoss, and type <literal>ant</literal> in the <literal>examples/"
+"booking</literal> directory."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Validation.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Validation.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Validation.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,375 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Validation.xml:10
+#, no-c-format
+msgid "JSF form validation in Seam"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:11
+#, no-c-format
+msgid "In plain JSF, validation is defined in the view:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:14
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Country:\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;my:validateCountry/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Zip code:\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;my:validateZip/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:15
+#, no-c-format
+msgid ""
+"In practice, this approach usually violates DRY, since most \"validation\" "
+"actually enforces constraints that are part of the data model, and exist all "
+"the way down to the database schema definition. Seam provides support for "
+"model-based constraints defined using Hibernate Validator."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:18
+#, no-c-format
+msgid ""
+"Let's start by defining our constraints, on our <literal>Location</literal> "
+"class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:21
+#, no-c-format
+msgid ""
+"public class Location {\n"
+"    private String country;\n"
+"    private String zip;\n"
+"    \n"
+"    @NotNull\n"
+"    @Length(max=30)\n"
+"    public String getCountry() { return country; }\n"
+"    public void setCountry(String c) { country = c; }\n"
+"\n"
+"    @NotNull\n"
+"    @Length(max=6)\n"
+"    @Pattern(\"^&#92;d*&#36;\")\n"
+"    public String getZip() { return zip; }\n"
+"    public void setZip(String z) { zip = z; }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:22
+#, no-c-format
+msgid ""
+"Well, that's a decent first cut, but in practice it might be more elegant to "
+"use custom constraints instead of the ones built into Hibernate Validator:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:25
+#, no-c-format
+msgid ""
+"public class Location {\n"
+"    private String country;\n"
+"    private String zip;\n"
+"    \n"
+"    @NotNull\n"
+"    @Country\n"
+"    public String getCountry() { return country; }\n"
+"    public void setCountry(String c) { country = c; }\n"
+"\n"
+"    @NotNull\n"
+"    @ZipCode\n"
+"    public String getZip() { return zip; }\n"
+"    public void setZip(String z) { zip = z; }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:26
+#, no-c-format
+msgid ""
+"Whichever route we take, we no longer need to specify the type of validation "
+"to be used in the JSF page. Instead, we can use <literal>&lt;s:validate&gt;</"
+"literal> to validate against the constraint defined on the model object."
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:29
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Country:\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;s:validate/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Zip code:\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;s:validate/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:30
+#, no-c-format
+msgid ""
+"<emphasis>Note:</emphasis> specifying <literal>@NotNull</literal> on the "
+"model does <emphasis>not</emphasis> eliminate the requirement for "
+"<literal>required=\"true\"</literal> to appear on the control! This is due "
+"to a limitation of the JSF validation architecture."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:33
+#, no-c-format
+msgid ""
+"This version is not much less verbose than what we started with, so let's "
+"try <literal>&lt;s:validateAll&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:36
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;h:inputText value=\"#{location.country}\" required=\"true\"/"
+"&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/"
+"&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:37
+#, no-c-format
+msgid ""
+"This tag simply adds an <literal>&lt;s:validate&gt;</literal> to every input "
+"in the form. For a large form, it can save a lot of typing!"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:40
+#, no-c-format
+msgid ""
+"Now we need to do something about displaying feedback to the user when "
+"validation fails. Currently we are displaying all messages at the top of the "
+"form. What we would really like to do is display the message next to the "
+"field with the error (this is possible in plain JSF), highlight the field "
+"(this is not possible) and, for good measure, display some image next the "
+"the field (also not possible)."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:43
+#, no-c-format
+msgid "Let's try out <literal>&lt;s:decorate&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:46
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;s:decorate&gt;\n"
+"                &lt;f:facet name=\"beforeInvalidField\"&gt;&lt;h:"
+"graphicImage src=\"img/error.gif\"/&gt;&lt;/f:facet&gt;\n"
+"                &lt;f:facet name=\"afterInvalidField\"&gt;&lt;s:message/&gt;"
+"&lt;/f:facet&gt;\n"
+"                &lt;f:facet name=\"aroundInvalidField\"&gt;&lt;s:span "
+"styleClass=\"error\"/&gt;&lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{location.country}\" required=\"true"
+"\"/&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;s:decorate&gt;\n"
+"                &lt;f:facet name=\"beforeInvalidField\"&gt;&lt;h:"
+"graphicImage src=\"img/error.gif\"/&gt;&lt;/f:facet&gt;\n"
+"                &lt;f:facet name=\"afterInvalidField\"&gt;&lt;s:message/&gt;"
+"&lt;/f:facet&gt;\n"
+"                &lt;f:facet name=\"aroundInvalidField\"&gt;&lt;s:span "
+"styleClass=\"error\"/&gt;&lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/"
+"&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:47
+#, no-c-format
+msgid ""
+"Well, that looks much better to the user, but it is extremely verbose. "
+"Fortunately, the facets of <literal>&lt;s:decorate&gt;</literal> may be "
+"defined on any parent element:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:50
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;f:facet name=\"beforeInvalidField\"&gt;\n"
+"        &lt;h:graphicImage src=\"img/error.gif\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;f:facet name=\"afterInvalidField\"&gt;\n"
+"        &lt;s:message/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;f:facet name=\"aroundInvalidField\"&gt;\n"
+"        &lt;s:span styleClass=\"error\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;s:decorate&gt;\n"
+"                &lt;h:inputText value=\"#{location.country}\" required=\"true"
+"\"/&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;s:decorate&gt;\n"
+"                &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/"
+"&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:51
+#, no-c-format
+msgid ""
+"This approach <emphasis>defines</emphasis> constraints on the model, and "
+"<emphasis>presents</emphasis> constraint violations in the view&mdash;a "
+"significantly better design."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:54
+#, no-c-format
+msgid ""
+"Finally, we can use Ajax4JSF to display validation messages as the user is "
+"typing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:57
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;f:facet name=\"beforeInvalidField\"&gt;\n"
+"        &lt;h:graphicImage src=\"img/error.gif\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;f:facet name=\"afterInvalidField\"&gt;\n"
+"        &lt;s:message/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;f:facet name=\"aroundInvalidField\"&gt;\n"
+"        &lt;s:span styleClass=\"error\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;s:decorate id=\"country\"&gt;\n"
+"                &lt;h:inputText value=\"#{location.country}\" required=\"true"
+"\"&gt;\n"
+"                    &lt;a:support event=\"onblur\" reRender=\"country\"/"
+"&gt;\n"
+"                &lt;/h:inputText&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;s:decorate id=\"zip\"&gt;\n"
+"                &lt;h:inputText value=\"#{location.zip}\" required=\"true"
+"\"&gt;\n"
+"                    &lt;a:support event=\"onblur\" reRender=\"zip\"/&gt;\n"
+"                &lt;/h:inputText&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Xml.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Xml.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/mr-IN/Xml.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,933 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Xml.xml:10
+#, no-c-format
+msgid "Configuring Seam components"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:11
+#, no-c-format
+msgid ""
+"The philosophy of minimizing XML-based configuration is extremely strong in "
+"Seam. Nevertheless, there are various reasons why we might want to configure "
+"a Seam component using XML: to isolate deployment-specific information from "
+"the Java code, to enable the creation of re-usable frameworks, to configure "
+"Seam's built-in functionality, etc. Seam provides two basic approaches to "
+"configuring components: configuration via property settings in a properties "
+"file or <literal>web.xml</literal>, and configuration via "
+"<literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:14
+#, no-c-format
+msgid "Configuring components via property settings"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:15
+#, no-c-format
+msgid ""
+"Seam components may be provided with configuration properties either via "
+"servlet context parameters, or via a properties file named <literal>seam."
+"properties</literal> in the root of the classpath."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:18
+#, no-c-format
+msgid ""
+"The configurable Seam component must expose JavaBeans-style property setter "
+"methods for the configurable attributes. If a seam component named "
+"<literal>com.jboss.myapp.settings</literal> has a setter method named "
+"<literal>setLocale()</literal>, we can provide a property named <literal>com."
+"jboss.myapp.settings.locale</literal> in the <literal>seam.properties</"
+"literal> file or as a servlet context parameter, and Seam will set the value "
+"of the <literal>locale</literal> attribute whenever it instantiates the "
+"component."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:21
+#, no-c-format
+msgid ""
+"The same mechanism is used to configure Seam itself. For example, to set the "
+"conversation timeout, we provide a value for <literal>org.jboss.seam.core."
+"manager.conversationTimeout</literal> in <literal>web.xml</literal> or "
+"<literal>seam.properties</literal>. (There is a built-in Seam component "
+"named <literal>org.jboss.seam.core.manager</literal> with a setter method "
+"named <literal>setConversationTimeout()</literal>.)"
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:24
+#, no-c-format
+msgid "Configuring components via components.xml"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:25
+#, no-c-format
+msgid ""
+"The <literal>components.xml</literal> file is a bit more powerful than "
+"property settings. It lets you:"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:30
+#, no-c-format
+msgid ""
+"Configure components that have been installed automatically&mdash;including "
+"both built-in components, and application components that have been "
+"annotated with the <literal>@Name</literal> annotation and picked up by "
+"Seam's deployment scanner."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:35
+#, no-c-format
+msgid ""
+"Install classes with no <literal>@Name</literal> annotation as Seam "
+"components&mdash;this is most useful for certain kinds of infrastructural "
+"components which can be installed multiple times different names (for "
+"example Seam-managed persistence contexts)."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:40
+#, no-c-format
+msgid ""
+"Install components that <emphasis>do</emphasis> have a <literal>@Name</"
+"literal> annotation but are not installed by default because of an "
+"<literal>@Install</literal> annotation that indicates the component should "
+"not be installed."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:45
+#, no-c-format
+msgid "Override the scope of a component."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:50
+#, no-c-format
+msgid ""
+"A <literal>components.xml</literal> file may appear in one of three "
+"different places:"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:55
+#, no-c-format
+msgid "The <literal>WEB-INF</literal> directory of a <literal>war</literal>."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:60
+#, no-c-format
+msgid "The <literal>META-INF</literal> directory of a <literal>jar</literal>."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:65
+#, no-c-format
+msgid ""
+"Any directory of a <literal>jar</literal> that contains classes with an "
+"<literal>@Name</literal> annotation."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:70
+#, no-c-format
+msgid ""
+"Usually, Seam components are installed when the deployment scanner discovers "
+"a class with a <literal>@Name</literal> annotation sitting in an archive "
+"with a <literal>seam.properties</literal> file or a <literal>META-INF/"
+"components.xml</literal> file. (Unless the component has an "
+"<literal>@Install</literal> annotation indicating it should not be installed "
+"by default.) The <literal>components.xml</literal> file lets us handle "
+"special cases where we need to override the annotations."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:73
+#, no-c-format
+msgid ""
+"For example, the following <literal>components.xml</literal> file installs "
+"the JBoss Embeddable EJB3 container:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:76
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"&gt;\n"
+"    &lt;core:ejb/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:77
+#, no-c-format
+msgid "This example does the same thing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:80
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component class=\"org.jboss.seam.core.Ejb\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:81
+#, no-c-format
+msgid ""
+"This one installs and configures two different Seam-managed persistence "
+"contexts:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:84
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"    &lt;core:managed-persistence-context name=\"customerDatabase\"\n"
+"                persistence-unit-jndi-name=\"java:/"
+"customerEntityManagerFactory\"/&gt;\n"
+"        \n"
+"    &lt;core:managed-persistence-context name=\"accountingDatabase\"\n"
+"                persistence-unit-jndi-name=\"java:/"
+"accountingEntityManagerFactory\"/&gt;            \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:85
+#, no-c-format
+msgid "As does this one:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:88
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component name=\"customerDatabase\" \n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"customerEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"    \n"
+"    &lt;component name=\"accountingDatabase\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"accountingEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:89
+#, no-c-format
+msgid ""
+"This example creates a session-scoped Seam-managed persistence context (this "
+"is not recommended in practice):"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:92
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"  &lt;core:managed-persistence-context name=\"productDatabase\" \n"
+"                                   scope=\"session\"\n"
+"              persistence-unit-jndi-name=\"java:/productEntityManagerFactory"
+"\"/&gt;        \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:93
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"            \n"
+"    &lt;component name=\"productDatabase\"\n"
+"              scope=\"session\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"productEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:94
+#, no-c-format
+msgid ""
+"It is common to use the <literal>auto-create</literal> option for "
+"infrastructural objects like persistence contexts, which saves you from "
+"having to explicitly specify <literal>create=true</literal> when you use the "
+"<literal>@In</literal> annotation."
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:97
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"  &lt;core:managed-persistence-context name=\"productDatabase\" \n"
+"                             auto-create=\"true\"\n"
+"              persistence-unit-jndi-name=\"java:/productEntityManagerFactory"
+"\"/&gt;        \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:98
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"            \n"
+"    &lt;component name=\"productDatabase\"\n"
+"        auto-create=\"true\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"productEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:99
+#, no-c-format
+msgid ""
+"The <literal>&lt;factory&gt;</literal> declaration lets you specify a value "
+"or method binding expression that will be evaluated to initialize the value "
+"of a context variable when it is first referenced."
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:102
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"contact\" method=\"#{contactManager.loadContact}\" "
+"scope=\"CONVERSATION\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:103
+#, no-c-format
+msgid ""
+"You can create an \"alias\" (a second name) for a Seam component like so:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:106
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"user\" value=\"#{actor}\" scope=\"STATELESS\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:107
+#, no-c-format
+msgid "You can even create an \"alias\" for a commonly used expression:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:110
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"contact\" value=\"#{contactManager.contact}\" scope="
+"\"STATELESS\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:111
+#, no-c-format
+msgid ""
+"It is especially common to see the use of <literal>auto-create=\"true\"</"
+"literal> with the <literal>&lt;factory&gt;</literal> declaration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:114
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"session\" value=\"#{entityManager.delegate}\" scope="
+"\"STATELESS\" \n"
+"        auto-create=\"true\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:115
+#, no-c-format
+msgid ""
+"Sometimes we want to reuse the same <literal>components.xml</literal> file "
+"with minor changes during both deployment and testing. Seam lets you place "
+"wildcards of the form <literal>@wildcard@</literal> in the "
+"<literal>components.xml</literal> file which can be replaced either by your "
+"Ant build script (at deployment time) or by providing a file named "
+"<literal>components.properties</literal> in the classpath (at development "
+"time). You'll see this approach used in the Seam examples."
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:118
+#, no-c-format
+msgid "Fine-grained configuration files"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:119
+#, no-c-format
+msgid ""
+"If you have a large number of components that need to be configured in XML, "
+"it makes much more sense to split up the information in <literal>components."
+"xml</literal> into many small files. Seam lets you put configuration for a "
+"class named, for example, <literal>com.helloworld.Hello</literal> in a "
+"resource named <literal>com/helloworld/Hello.component.xml</literal>. (You "
+"might be familiar with this pattern, since it is the same one we use in "
+"Hibernate.) The root element of the file may be either a <literal>&lt;"
+"components&gt;</literal> or <literal>&lt;component&gt;</literal> element."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:122
+#, no-c-format
+msgid "The first option lets you define multiple components in the file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:125
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component class=\"com.helloworld.Hello\" name=\"hello\"&gt;\n"
+"        &lt;property name=\"name\"&gt;#{user.name}&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"    &lt;factory name=\"message\" value=\"#{hello.message}\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:126
+#, no-c-format
+msgid ""
+"The second option only lets you define or configure one component, but is "
+"less noisy:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:129
+#, no-c-format
+msgid ""
+"&lt;component name=\"hello\"&gt;\n"
+"    &lt;property name=\"name\"&gt;#{user.name}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:130
+#, no-c-format
+msgid ""
+"In the second option, the class name is implied by the file in which the "
+"component definition appears."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:133
+#, no-c-format
+msgid ""
+"Alternatively, you may put configuration for all classes in the <literal>com."
+"helloworld</literal> package in <literal>com/helloworld/components.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:136
+#, no-c-format
+msgid "Configurable property types"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:137
+#, no-c-format
+msgid ""
+"Properties of string, primitive or primitive wrapper type may be configured "
+"just as you would expect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:140
+#, no-c-format
+msgid "org.jboss.seam.core.manager.conversationTimeout 60000"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:141
+#, no-c-format
+msgid "&lt;core:manager conversation-timeout=\"60000\"/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:142
+#, no-c-format
+msgid ""
+"&lt;component name=\"org.jboss.seam.core.manager\"&gt;\n"
+"    &lt;property name=\"conversationTimeout\"&gt;60000&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:143
+#, no-c-format
+msgid "Arrays, sets and lists of strings or primitives are also supported:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:146
+#, no-c-format
+msgid ""
+"org.jboss.seam.core.jbpm.processDefinitions order.jpdl.xml, return.jpdl.xml, "
+"inventory.jpdl.xml"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:147
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;order.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;return.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:148
+#, no-c-format
+msgid ""
+"&lt;component name=\"org.jboss.seam.core.jbpm\"&gt;\n"
+"    &lt;property name=\"processDefinitions\"&gt;\n"
+"        &lt;value&gt;order.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;return.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:149
+#, no-c-format
+msgid ""
+"Even maps with String-valued keys and string or primitive values are "
+"supported:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:152
+#, no-c-format
+msgid ""
+"&lt;component name=\"issueEditor\"&gt;\n"
+"    &lt;property name=\"issueStatuses\"&gt;\n"
+"        &lt;key&gt;open&lt;/key&gt; &lt;value&gt;open issue&lt;/value&gt;\n"
+"        &lt;key&gt;resolved&lt;/key&gt; &lt;value&gt;issue resolved by "
+"developer&lt;/value&gt;\n"
+"        &lt;key&gt;closed&lt;/key&gt; &lt;value&gt;resolution accepted by "
+"user&lt;/value&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:153
+#, no-c-format
+msgid ""
+"Finally, you may wire together components using a value-binding expression. "
+"Note that this is quite different to injection using <literal>@In</literal>, "
+"since it happens at component instantiation time instead of invocation time. "
+"It is therefore much more similar to the dependency injection facilities "
+"offered by traditional IoC containers like JSF or Spring."
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:156
+#, no-c-format
+msgid ""
+"&lt;drools:managed-working-memory name=\"policyPricingWorkingMemory\" rule-"
+"base=\"#{policyPricingRules}\"/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:157
+#, no-c-format
+msgid ""
+"&lt;component name=\"policyPricingWorkingMemory\"\n"
+"          class=\"org.jboss.seam.drools.ManagedWorkingMemory\"&gt;\n"
+"    &lt;property name=\"ruleBase\"&gt;#{policyPricingRules}&lt;/"
+"property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:158
+#, no-c-format
+msgid "Using XML Namespaces"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:159
+#, no-c-format
+msgid ""
+"Throughout the examples, there have been two competing ways of declaring "
+"components: with and without the use of XML namespaces. The following shows "
+"a typical <literal>components.xml</literal> file without namespaces. It uses "
+"the Seam Components DTD:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:162
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"&gt;\n"
+"&lt;!DOCTYPE components PUBLIC \"-//JBoss/Seam Component Configuration DTD "
+"1.2//EN\"\n"
+"                            \"http://jboss.com/products/seam/components-1.2."
+"dtd\"&gt;\n"
+"&lt;components&gt;\n"
+"\n"
+"    &lt;component class=\"org.jboss.seam.core.init\"&gt;\n"
+"        &lt;property name=\"debug\"&gt;true&lt;/property&gt;\n"
+"        &lt;property name=\"jndiPattern\"&gt;@jndiPattern@&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"    &lt;component name=\"org.jboss.sean.core.ejb\" installed=\"@embeddedEjb@"
+"\" /&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:163
+#, no-c-format
+msgid ""
+"As you can see, this is somewhat verbose. Even worse, the component and "
+"attribute names cannot be validated at development time."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:166
+#, no-c-format
+msgid "The namespaced version looks like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:169
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                http://jboss.com/products/seam/core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components \n"
+"                 http://jboss.com/products/seam/components-1.2.xsd\"&gt;\n"
+"\n"
+"    &lt;core:init debug=\"true\" jndi-pattern=\"@jndiPattern@\"/&gt;\n"
+"\n"
+"    &lt;core:ejb installed=\"@embeddedEjb@\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:170
+#, no-c-format
+msgid ""
+"Even though the schema declarations are verbose, the actual XML content is "
+"lean and easy to understand. The schemas provide detailed information about "
+"each component and the attributes available, allowing XML editors to offer "
+"intelligent autocomplete. The use of namespaced elements makes generating "
+"and maintaining correct <literal>components.xml</literal> files much simpler."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:173
+#, no-c-format
+msgid ""
+"Now, this works great for the built-in Seam components, but what about user "
+"components? There are two options. First, Seam supports mixing the two "
+"models, allowing the use of the generic <literal>&lt;component&gt;</literal> "
+"declarations for user components, along with namespaced declarations for "
+"built-in components. But even better, Seam allows you to quickly declare "
+"namespaces for your own components."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:176
+#, no-c-format
+msgid ""
+"Any Java package can be associated with an XML namespace by annotating the "
+"package with the <literal>@Namespace</literal> annotation. (Package-level "
+"annotations are declared in a file named <literal>package-info.java</"
+"literal> in the package directory.) Here is an example from the seampay demo:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:179
+#, no-c-format
+msgid ""
+"@Namespace(value=\"http://jboss.com/products/seam/examples/seampay\")\n"
+"package org.jboss.seam.example.seampay;\n"
+"\n"
+"import org.jboss.seam.annotations.Namespace;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:180
+#, no-c-format
+msgid ""
+"That is all you need to do to use the namespaced style in "
+"<literal>components.xml</literal>! Now we can write:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:183
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pay=\"http://jboss.com/products/seam/examples/seampay\"\n"
+"            ... &gt;\n"
+"\n"
+"    &lt;pay:payment-home new-instance=\"#{newPayment}\"\n"
+"                      created-message=\"Created a new payment to #"
+"{newPayment.payee}\" /&gt;\n"
+"\n"
+"    &lt;pay:payment name=\"newPayment\"\n"
+"                 payee=\"Somebody\"\n"
+"                 account=\"#{selectedAccount}\"\n"
+"                 payment-date=\"#{currentDatetime}\"\n"
+"                 created-date=\"#{currentDatetime}\" /&gt;\n"
+"     ...\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:184
+#, no-c-format
+msgid "<para>Or:</para>"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:187
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pay=\"http://jboss.com/products/seam/examples/seampay\"\n"
+"            ... &gt;\n"
+"\n"
+"    &lt;pay:payment-home&gt;\n"
+"        &lt;pay:new-instance&gt;\"#{newPayment}\"&lt;/pay:new-instance&gt;\n"
+"        &lt;pay:created-message&gt;Created a new payment to #{newPayment."
+"payee}&lt;/pay:created-message&gt;\n"
+"    &lt;/pay:payment-home&gt;\n"
+"    \n"
+"    &lt;pay:payment name=\"newPayment\"&gt;\n"
+"        &lt;pay:payee&gt;Somebody\"&lt;/pay:payee&gt;\n"
+"        &lt;pay:account&gt;#{selectedAccount}&lt;/pay:account&gt;\n"
+"        &lt;pay:payment-date&gt;#{currentDatetime}&lt;/pay:payment-date&gt;\n"
+"        &lt;pay:created-date&gt;#{currentDatetime}&lt;/pay:created-date&gt;\n"
+"     &lt;/pay:payment&gt;\n"
+"     ...\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:188
+#, no-c-format
+msgid ""
+"These examples illustrate the two usage models of a namespaced element. In "
+"the first declaration, the <literal>&lt;pay:payment-home&gt;</literal> "
+"references the <literal>paymentHome</literal> component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:191
+#, no-c-format
+msgid ""
+"package org.jboss.seam.example.seampay;\n"
+"...\n"
+"@Name(\"paymentHome\")\n"
+"public class PaymentController\n"
+"    extends EntityHome&lt;Payment&gt;\n"
+"{\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:192
+#, no-c-format
+msgid ""
+"The element name is the hyphenated form of the component name. The "
+"attributes of the element are the hyphenated form of the property names."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:195
+#, no-c-format
+msgid ""
+"In the second declaration, the <literal>&lt;pay:payment&gt;</literal> "
+"element refers to the <literal>Payment</literal> class in the <literal>org."
+"jboss.seam.example.seampay</literal> package. In this case <literal>Payment</"
+"literal> is an entity that is being declared as a Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:198
+#, no-c-format
+msgid ""
+"package org.jboss.seam.example.seampay;\n"
+"...\n"
+"@Entity\n"
+"public class Payment\n"
+"    implements Serializable\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:199
+#, no-c-format
+msgid ""
+"If we want validation and autocompletion to work for user-defined "
+"components, we will need a schema. Seam does not yet provide a mechanism to "
+"automatically generate a schema for a set of components, so it is necessary "
+"to generate one manually. The schema definitions for the standard Seam "
+"packages can be used for guidance."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:202
+#, no-c-format
+msgid "The following are the the namespaces used by Seam:"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:207
+#, no-c-format
+msgid ""
+"components &mdash; <literal>http://jboss.com/products/seam/components</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:212
+#, no-c-format
+msgid "core &mdash; <literal>http://jboss.com/products/seam/core</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:217
+#, no-c-format
+msgid "drools &mdash; <literal>http://jboss.com/products/seam/drools</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:222
+#, no-c-format
+msgid ""
+"framework &mdash; <literal>http://jboss.com/products/seam/framework</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:227
+#, no-c-format
+msgid "jms &mdash; <literal>http://jboss.com/products/seam/jms</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:232
+#, no-c-format
+msgid ""
+"remoting &mdash; <literal>http://jboss.com/products/seam/remoting</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:237
+#, no-c-format
+msgid "theme &mdash; <literal>http://jboss.com/products/seam/theme</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:242
+#, no-c-format
+msgid ""
+"security &mdash; <literal>http://jboss.com/products/seam/security</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:247
+#, no-c-format
+msgid "mail &mdash; <literal>http://jboss.com/products/seam/mail</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:252
+#, no-c-format
+msgid "web &mdash; <literal>http://jboss.com/products/seam/web</literal>"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Annotations.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Annotations.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Annotations.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2030 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Annotations.xml:10
+#, no-c-format
+msgid "Seam annotations"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:11
+#, no-c-format
+msgid ""
+"When you write a Seam application, you'll use a lot of annotations. Seam "
+"lets you use annotations to achieve a declarative style of programming. Most "
+"of the annotations you'll use are defined by the EJB 3.0 specification. The "
+"annotations for data validation are defined by the Hibernate Validator "
+"package. Finally, Seam defines its own set of annotations, which we'll "
+"describe in this chapter."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:14
+#, no-c-format
+msgid ""
+"All of these annotations are defined in the package <literal>org.jboss.seam."
+"annotations</literal>."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:18
+#, no-c-format
+msgid "Annotations for component definition"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:19
+#, no-c-format
+msgid ""
+"The first group of annotations lets you define a Seam component. These "
+"annotations appear on the component class."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:24
+#, no-c-format
+msgid "@Name"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:26
+#, no-c-format
+msgid "@Name(\"componentName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:27
+#, no-c-format
+msgid ""
+"Defines the Seam component name for a class. This annotation is required for "
+"all Seam components."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:33
+#, no-c-format
+msgid "@Scope"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:35
+#, no-c-format
+msgid "@Scope(ScopeType.CONVERSATION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:36
+#, no-c-format
+msgid ""
+"Defines the default context of the component. The possible values are "
+"defined by the <literal>ScopeType</literal> enumeration: <literal>EVENT, "
+"PAGE, CONVERSATION, SESSION, BUSINESS_PROCESS, APPLICATION, STATELESS</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:39
+#, no-c-format
+msgid ""
+"When no scope is explicitly specified, the default depends upon the "
+"component type. For stateless session beans, the default is "
+"<literal>STATELESS</literal>. For entity beans and stateful session beans, "
+"the default is <literal>CONVERSATION</literal>. For JavaBeans, the default "
+"is <literal>EVENT</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:45
+#, no-c-format
+msgid "@Role"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:47
+#, no-c-format
+msgid "@Role(name=\"roleName\", scope=ScopeType.SESSION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:48
+#, no-c-format
+msgid ""
+"Allows a Seam component to be bound to multiple contexts variables. The "
+"<literal>@Name</literal>/<literal>@Scope</literal> annotations define a "
+"\"default role\". Each <literal>@Role</literal> annotation defines an "
+"additional role."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:53
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the context variable name."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:58
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; the context variable scope. When no scope "
+"is explicitly specified, the default depends upon the component type, as "
+"above."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:66
+#, no-c-format
+msgid "@Roles"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:68
+#, no-c-format
+msgid ""
+"@Roles({\n"
+"        @Role(name=\"user\", scope=ScopeType.CONVERSATION),\n"
+"        @Role(name=\"currentUser\", scope=ScopeType.SESSION)\n"
+"    })"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:69
+#, no-c-format
+msgid "Allows specification of multiple additional roles."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:75
+#, no-c-format
+msgid "@Intercept"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:77
+#, no-c-format
+msgid "@Intercept(InterceptionType.ALWAYS)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:78
+#, no-c-format
+msgid ""
+"Determines when Seam interceptors are active. The possible values are "
+"defined by the <literal>InterceptionType</literal> enumeration: "
+"<literal>ALWAYS, AFTER_RESTORE_VIEW, AFTER_UPDATE_MODEL_VALUES, "
+"INVOKE_APPLICATION, NEVER</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:81
+#, no-c-format
+msgid ""
+"When no interception type is explicitly specified, the default depends upon "
+"the component type. For entity beans, the default is <literal>NEVER</"
+"literal>. For session beans, message driven beans and JavaBeans, the default "
+"is <literal>ALWAYS</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:87
+#, no-c-format
+msgid "@JndiName"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:89
+#, no-c-format
+msgid "@JndiName(\"my/jndi/name\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:90
+#, no-c-format
+msgid ""
+"Specifies the JNDI name that Seam will use to look up the EJB component. If "
+"no JNDI name is explicitly specified, Seam will use the JNDI pattern "
+"specified by <literal>org.jboss.seam.core.init.jndiPattern</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:96
+#, no-c-format
+msgid "@Conversational"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:98
+#, no-c-format
+msgid "@Conversational(ifNotBegunOutcome=\"error\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:99
+#, no-c-format
+msgid ""
+"Specifies that a conversation scope component is conversational, meaning "
+"that no method of the component can be called unless a long-running "
+"conversation started by this component is active (unless the method would "
+"begin a new long-running conversation)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:105
+#, no-c-format
+msgid "<literal>@Startup</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:107
+#, no-c-format
+msgid "@Startup(depends={\"org.jboss.core.jndi\", \"org.jboss.core.jta\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:108
+#, no-c-format
+msgid ""
+"Specifies that an application scope component is started immediately at "
+"initialization time. This is mainly used for certain built-in components "
+"that bootstrap critical infrastructure such as JNDI, datasources, etc."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:111
+#, no-c-format
+msgid "<programlisting>@Startup</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:112
+#, no-c-format
+msgid ""
+"Specifies that a session scope component is started immediately at session "
+"creation time."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:117
+#, no-c-format
+msgid ""
+"<literal>depends</literal> &mdash; specifies that the named components must "
+"be started first, if they are installed."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:125
+#, no-c-format
+msgid "@Install"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:127
+#, no-c-format
+msgid "@Install(false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:128
+#, no-c-format
+msgid ""
+"Specifies whether or not a component should be installed by default. The "
+"lack of an @Install annotation indicates a component should be installed."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:131
+#, no-c-format
+msgid "@Install(dependencies=\"org.jboss.seam.core.jbpm\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:132
+#, no-c-format
+msgid ""
+"Specifies that a component should only be stalled if the components listed "
+"as dependencies are also installed."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:135
+#, no-c-format
+msgid "@Install(genericDependencies=ManagedQueueSender.class)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:136
+#, no-c-format
+msgid ""
+"Specifies that a component should only be installed if a component that is "
+"implemented by a certain class is installed. This is useful when the "
+"dependency doesn't have a single well-known name."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:139
+#, no-c-format
+msgid "@Install(classDependencies=\"org.hibernate.Session\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:140
+#, no-c-format
+msgid ""
+"Specifies that a component should only be installed if the named class is in "
+"the classpath."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:143
+#, no-c-format
+msgid "@Install(precedence=BUILT_IN)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:144
+#, no-c-format
+msgid ""
+"Specifies the precedence of the component. If multiple components with the "
+"same name exist, the one with the higher precedence will be installed. The "
+"defined precendence values are:"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:149
+#, no-c-format
+msgid ""
+"<literal>BUILT_IN</literal> &mdash; Precedence of all built-in Seam "
+"components"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:154
+#, no-c-format
+msgid ""
+"<literal>FRAMEWORK</literal> &mdash; Precedence to use for components of "
+"frameworks which extend Seam"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:159
+#, no-c-format
+msgid ""
+"<literal>APPLICATION</literal> &mdash; Predence of application components "
+"(the default precedence)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:164
+#, no-c-format
+msgid ""
+"<literal>DEPLOYMENT</literal> &mdash; Precedence to use for components which "
+"override application components in a particular deployment"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:172
+#, no-c-format
+msgid "@Synchronized"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:174
+#, no-c-format
+msgid "@Synchronized(timeout=1000)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:175
+#, no-c-format
+msgid ""
+"Specifies that a component is accessed concurrently by multiple clients, and "
+"that Seam should serialize requests. If a request is not able to obtain its "
+"lock on the component in the given timeout period, an exception will be "
+"raised."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:181
+#, no-c-format
+msgid "<literal>@ReadOnly</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:183
+#, no-c-format
+msgid "<programlisting>@ReadOnly</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:184
+#, no-c-format
+msgid ""
+"Specifies that a JavaBean component or component method does not require "
+"state replication at the end of the invocation."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:193
+#, no-c-format
+msgid "Annotations for bijection"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:194
+#, no-c-format
+msgid ""
+"The next two annotations control bijection. These attributes occur on "
+"component instance variables or property accessor methods."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:199
+#, no-c-format
+msgid "<literal>@In</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:201
+#, no-c-format
+msgid "<programlisting>@In</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:202
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. If the context "
+"variable is null, an exception will be thrown."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:205
+#, no-c-format
+msgid "@In(required=false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:206
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. The context variable "
+"may be null."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:209
+#, no-c-format
+msgid "@In(create=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:210
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. If the context "
+"variable is null, an instance of the component is instantiated by Seam."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:213
+#, no-c-format
+msgid "@In(value=\"contextVariableName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:214 Annotations.xml:259
+#, no-c-format
+msgid ""
+"Specifies the name of the context variable explicitly, instead of using the "
+"annotated instance variable name."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:217
+#, no-c-format
+msgid "@In(value=\"#{customer.addresses['shipping']}\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:218
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected by evaluating a JSF "
+"EL expression at the beginning of each component invocation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:223
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"Default to the name of the component attribute. Alternatively, specifies a "
+"JSF EL expression, surrounded by <literal>#{...}</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:228
+#, no-c-format
+msgid ""
+"<literal>create</literal> &mdash; specifies that Seam should instantiate the "
+"component with the same name as the context variable if the context variable "
+"is undefined (null) in all contexts. Default to false."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:233
+#, no-c-format
+msgid ""
+"<literal>required</literal> &mdash; specifies Seam should throw an exception "
+"if the context variable is undefined in all contexts."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:241
+#, no-c-format
+msgid "<literal>@Out</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:243
+#, no-c-format
+msgid "<programlisting>@Out</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:244
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is a Seam component is to be "
+"outjected to its context variable at the end of the invocation. If the "
+"attribute is null, an exception is thrown."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:247
+#, no-c-format
+msgid "@Out(required=false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:248
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is a Seam component is to be "
+"outjected to its context variable at the end of the invocation. The "
+"attribute may be null."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:251
+#, no-c-format
+msgid "@Out(scope=ScopeType.SESSION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:252
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is <emphasis>not</emphasis> a Seam "
+"component type is to be outjected to a specific scope at the end of the "
+"invocation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:255
+#, no-c-format
+msgid ""
+"Alternatively, if no scope is explicitly specified, the scope of the "
+"component with the <literal>@Out</literal> attribute is used (or the "
+"<literal>EVENT</literal> scope if the component is stateless)."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:258
+#, no-c-format
+msgid "@Out(value=\"contextVariableName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:264
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"Default to the name of the component attribute."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:269
+#, no-c-format
+msgid ""
+"<literal>required</literal> &mdash; specifies Seam should throw an exception "
+"if the component attribute is null during outjection."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:277
+#, no-c-format
+msgid ""
+"Note that it is quite common for these annotations to occur together, for "
+"example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:280
+#, no-c-format
+msgid "@In(create=true) @Out private User currentUser;"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:281
+#, no-c-format
+msgid ""
+"The next annotation supports the <emphasis>manager component</emphasis> "
+"pattern, where a Seam component that manages the lifecycle of an instance of "
+"some other class that is to be injected. It appears on a component getter "
+"method."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:286
+#, no-c-format
+msgid "<literal>@Unwrap</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:288
+#, no-c-format
+msgid "<programlisting>@Unwrap</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:289
+#, no-c-format
+msgid ""
+"Specifies that the object returned by the annotated getter method is the "
+"thing that is injected instead of the component instance itself."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:295
+#, no-c-format
+msgid ""
+"The next annotation supports the <emphasis>factory component</emphasis> "
+"pattern, where a Seam component is responsible for initializing the value of "
+"a context variable. This is especially useful for initializing any state "
+"needed for rendering the response to a non-faces request. It appears on a "
+"component method."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:300
+#, no-c-format
+msgid "@Factory"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:302
+#, no-c-format
+msgid "@Factory(\"processInstance\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:303
+#, no-c-format
+msgid ""
+"Specifies that the method of the component is used to initialize the value "
+"of the named context variable, when the context variable has no value. This "
+"style is used with methods that return <literal>void</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:306
+#, no-c-format
+msgid "@Factory(\"processInstance\", scope=CONVERSATION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:307
+#, no-c-format
+msgid ""
+"Specifies that the method returns a value that Seam should use to initialize "
+"the value of the named context variable, when the context variable has no "
+"value. This style is used with methods that return a value. If no scope is "
+"explicitly specified, the scope of the component with the <literal>@Factory</"
+"literal> method is used (unless the component is stateless, in which case "
+"the <literal>EVENT</literal> context is used)."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:312
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"If the method is a getter method, default to the JavaBeans property name."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:317
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; specifies the scope that Seam should bind "
+"the returned value to. Only meaningful for factory methods which return a "
+"value."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:325
+#, no-c-format
+msgid "This annotation lets you inject a <literal>Log</literal>:"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:330
+#, no-c-format
+msgid "@Logger"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:332
+#, no-c-format
+msgid "@Logger(\"categoryName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:333
+#, no-c-format
+msgid ""
+"Specifies that a component field is to be injected with an instance of "
+"<literal>org.jboss.seam.log.Log</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:338
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the log category. "
+"Default to the name of the component class."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:346
+#, no-c-format
+msgid "The last annotation lets you inject a request parameter value:"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:351
+#, no-c-format
+msgid "@RequestParameter"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:353
+#, no-c-format
+msgid "@RequestParameter(\"parameterName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:354
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected with the value of a "
+"request parameter. Basic type conversions are performed automatically."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:359
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the request "
+"parameter. Default to the name of the component attribute."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:370
+#, no-c-format
+msgid "Annotations for component lifecycle methods"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:371
+#, no-c-format
+msgid ""
+"These annotations allow a component to react to its own lifecycle events. "
+"They occur on methods of the component. There may be only one of each per "
+"component class."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:376
+#, no-c-format
+msgid "<literal>@Create</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:378
+#, no-c-format
+msgid "<programlisting>@Create</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:379
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when an instance of the component "
+"is instantiated by Seam. Note that create methods are only supported for "
+"JavaBeans and stateful session beans."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:385
+#, no-c-format
+msgid "<literal>@Destroy</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:387
+#, no-c-format
+msgid "<programlisting>@Destroy</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:388
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when the context ends and its "
+"context variables are destroyed. Note that create methods are only supported "
+"for JavaBeans and stateful session beans."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:391
+#, no-c-format
+msgid ""
+"Note that all stateful session bean components <emphasis>must</emphasis> "
+"define a method annotated <literal>@Destroy @Remove</literal> in order to "
+"guarantee destruction of the stateful bean when a context ends."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:394
+#, no-c-format
+msgid ""
+"Destroy methods should be used only for cleanup. <emphasis>Seam catches, "
+"logs and swallows any exception that propagates out of a destroy method.</"
+"emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:400
+#, no-c-format
+msgid "@Observer"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:402
+#, no-c-format
+msgid "@Observer(\"somethingChanged\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:403
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when a component-driven event of "
+"the specified type occurs."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:406
+#, no-c-format
+msgid "@Observer(value=\"somethingChanged\",create=false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:407
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when an event of the specified "
+"type occurs but that an instance should not be created if one doesn't exist. "
+"If an instance does not exist and create is false, the event will not be "
+"observed. The default value for create is true."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:416
+#, no-c-format
+msgid "Annotations for context demarcation"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:417
+#, no-c-format
+msgid ""
+"These annotations provide declarative conversation demarcation. They appear "
+"on methods of Seam components, usually action listener methods."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:420
+#, no-c-format
+msgid ""
+"Every web request has a conversation context associated with it. Most of "
+"these conversations end at the end of the request. If you want a "
+"conversation that span multiple requests, you must \"promote\" the current "
+"conversation to a <emphasis>long-running conversation</emphasis> by calling "
+"a method marked with <literal>@Begin</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:425
+#, no-c-format
+msgid "<literal>@Begin</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:427
+#, no-c-format
+msgid "<programlisting>@Begin</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:428
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation begins when this method returns a "
+"non-null outcome without exception."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:431
+#, no-c-format
+msgid "@Begin(ifOutcome={\"success\", \"continue\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:432
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation begins when this action listener "
+"method returns with one of the given outcomes."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:435
+#, no-c-format
+msgid "@Begin(join=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:436
+#, no-c-format
+msgid ""
+"Specifies that if a long-running conversation is already in progress, the "
+"conversation context is simply propagated."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:439
+#, no-c-format
+msgid "@Begin(nested=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:440
+#, no-c-format
+msgid ""
+"Specifies that if a long-running conversation is already in progress, a new "
+"<emphasis>nested</emphasis> conversation context begins. The nested "
+"conversation will end when the next <literal>@End</literal> is encountered, "
+"and the outer conversation will resume. It is perfectly legal for multiple "
+"nested conversations to exist concurrently in the same outer conversation."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:443
+#, no-c-format
+msgid "@Begin(pageflow=\"process definition name\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:444
+#, no-c-format
+msgid ""
+"Specifies a jBPM process definition name that defines the pageflow for this "
+"conversation."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:447
+#, no-c-format
+msgid "@Begin(flushMode=FlushModeType.MANUAL)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:448
+#, no-c-format
+msgid ""
+"Specify the flush mode of any Seam-managed persistence contexts. "
+"<literal>flushMode=FlushModeType.MANUAL</literal> supports the use of "
+"<emphasis>atomic conversations</emphasis> where all write operations are "
+"queued in the conversation context until an explicit call to <literal>flush()"
+"</literal> (which usually occurs at the end of the conversation)."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:454
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in a new long-running conversation context."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:459
+#, no-c-format
+msgid ""
+"<literal>join</literal> &mdash; determines the behavior when a long-running "
+"conversation is already in progress. If <literal>true</literal>, the context "
+"is propagated. If <literal>false</literal>, an exception is thrown. Default "
+"to <literal>false</literal>. This setting is ignored when "
+"<literal>nested=true</literal> is specified"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:464
+#, no-c-format
+msgid ""
+"<literal>nested</literal> &mdash; specifies that a nested conversation "
+"should be started if a long-running conversation is already in progress."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:469 Annotations.xml:526 Annotations.xml:550
+#, no-c-format
+msgid ""
+"<literal>flushMode</literal> &mdash; set the flush mode of any Seam-managed "
+"Hibernate sessions or JPA persistence contexts that are created during this "
+"conversation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:474
+#, no-c-format
+msgid ""
+"<literal>pageflow</literal> &mdash; a process definition name of a jBPM "
+"process definition deployed via <literal>org.jboss.seam.core.jbpm."
+"pageflowDefinitions.</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:483
+#, no-c-format
+msgid "<literal>@End</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:485
+#, no-c-format
+msgid "<programlisting>@End</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:486
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation ends when this method returns a "
+"non-null outcome without exception."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:489
+#, no-c-format
+msgid ""
+"@End(ifOutcome={\"success\", \"error\"}, evenIfException={SomeException."
+"class, OtherException.class})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:490
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation ends when this action listener "
+"method returns with one of the given outcomes or throws one of the specified "
+"classes of exception."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:496
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in the end of the current long-running conversation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:501 Annotations.xml:585
+#, no-c-format
+msgid ""
+"<literal>beforeRedirect</literal> &mdash; by default, the conversation will "
+"not actually be destroyed until after any redirect has occurred. Setting "
+"<literal>beforeRedirect=true</literal> specifies that the conversation "
+"should be destroyed at the end of the current request, and that the redirect "
+"will be processed in a new temporary conversation context."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:510
+#, no-c-format
+msgid "<literal>@StartTask</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:512
+#, no-c-format
+msgid "<programlisting>@StartTask</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:513
+#, no-c-format
+msgid ""
+"\"Starts\" a jBPM task. Specifies that a long-running conversation begins "
+"when this method returns a non-null outcome without exception. This "
+"conversation is associated with the jBPM task specified in the named request "
+"parameter. Within the context of this conversation, a business process "
+"context is also defined, for the business process instance of the task "
+"instance."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:516
+#, no-c-format
+msgid ""
+"The jBPM <literal>TaskInstance</literal> will be available in a request "
+"context variable named <literal>taskInstance</literal>. The jPBM "
+"<literal>ProcessInstance</literal> will be available in a request context "
+"variable named <literal>processInstance</literal>. (Of course, these objects "
+"are available for injection via <literal>@In</literal>.)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:521 Annotations.xml:545
+#, no-c-format
+msgid ""
+"<literal>taskIdParameter</literal> &mdash; the name of a request parameter "
+"which holds the id of the task. Default to <literal>\"taskId\"</literal>, "
+"which is also the default used by the Seam <literal>taskList</literal> JSF "
+"component."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:534
+#, no-c-format
+msgid "<literal>@BeginTask</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:536
+#, no-c-format
+msgid "<programlisting>@BeginTask</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:537
+#, no-c-format
+msgid ""
+"Resumes work on an incomplete jBPM task. Specifies that a long-running "
+"conversation begins when this method returns a non-null outcome without "
+"exception. This conversation is associated with the jBPM task specified in "
+"the named request parameter. Within the context of this conversation, a "
+"business process context is also defined, for the business process instance "
+"of the task instance."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:540
+#, no-c-format
+msgid ""
+"The jBPM <literal>TaskInstance</literal> will be available in a request "
+"context variable named <literal>taskInstance</literal>. The jPBM "
+"<literal>ProcessInstance</literal> will be available in a request context "
+"variable named <literal>processInstance</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:558
+#, no-c-format
+msgid "<literal>@EndTask</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:560
+#, no-c-format
+msgid "<programlisting>@EndTask</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:561
+#, no-c-format
+msgid ""
+"\"Ends\" a jBPM task. Specifies that a long-running conversation ends when "
+"this method returns a non-null outcome, and that the current task is "
+"complete. Triggers a jBPM transition. The actual transition triggered will "
+"be the default transition unless the application has called "
+"<literal>Transition.setName()</literal> on the built-in component named "
+"<literal>transition</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:564
+#, no-c-format
+msgid "@EndTask(transition=\"transitionName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:565
+#, no-c-format
+msgid "Triggers the given jBPM transition."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:568
+#, no-c-format
+msgid "@EndTask(ifOutcome={\"success\", \"continue\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:569
+#, no-c-format
+msgid ""
+"Specifies that the task ends when this method returns one of the listed "
+"outcomes."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:575
+#, no-c-format
+msgid ""
+"<literal>transition</literal> &mdash; the name of the jBPM transition to be "
+"triggered when ending the task. Defaults to the default transition."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:580
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in the end of the task."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:594
+#, no-c-format
+msgid "@CreateProcess"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:596
+#, no-c-format
+msgid "@CreateProcess(definition=\"process definition name\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:597
+#, no-c-format
+msgid ""
+"Creates a new jBPM process instance when the method returns a non-null "
+"outcome without exception. The <literal>ProcessInstance</literal> object "
+"will be available in a context variable named <literal>processInstance</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:602
+#, no-c-format
+msgid ""
+"<literal>definition</literal> &mdash; the name of the jBPM process "
+"definition deployed via <literal>org.jboss.seam.core.jbpm."
+"processDefinitions</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:610
+#, no-c-format
+msgid "@ResumeProcess"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:612
+#, no-c-format
+msgid "@ResumeProcess(processIdParameter=\"processId\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:613
+#, no-c-format
+msgid ""
+"Re-enters the scope of an existing jBPM process instance when the method "
+"returns a non-null outcome without exception. The <literal>ProcessInstance</"
+"literal> object will be available in a context variable named "
+"<literal>processInstance</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:618
+#, no-c-format
+msgid ""
+"<literal>processIdParameter</literal> &mdash; the name a request parameter "
+"holding the process id. Default to <literal>\"processId\"</literal>."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:629
+#, no-c-format
+msgid "Annotations for transaction demarcation"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:630
+#, no-c-format
+msgid ""
+"Seam provides an annotation that lets you force a rollback of the JTA "
+"transaction for certain action listener outcomes."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:635
+#, no-c-format
+msgid "@Rollback"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:637
+#, no-c-format
+msgid "@Rollback(ifOutcome={\"failure\", \"not-found\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:638
+#, no-c-format
+msgid ""
+"If the outcome of the method matches any of the listed outcomes, or if no "
+"outcomes are listed, set the transaction to rollback only when the method "
+"completes."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:643
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; the JSF outcomes that cause a "
+"transaction rollback (no outcomes is interpreted to mean any outcome)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:651
+#, no-c-format
+msgid "<literal>@Transactional</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:653
+#, no-c-format
+msgid "<programlisting>@Transactional</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:654
+#, no-c-format
+msgid ""
+"Specifies that a JavaBean component should have a similar transactional "
+"behavior to the default behavior of a session bean component. ie. method "
+"invocations should take place in a transaction, and if no transaction exists "
+"when the method is called, a transaction will be started just for that "
+"method. This annotation may be applied at either class or method level."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:660
+#, no-c-format
+msgid ""
+"Seam applications usually use the standard EJB3 annotations for all other "
+"transaction demarcation needs."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:666
+#, no-c-format
+msgid "Annotations for exceptions"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:667
+#, no-c-format
+msgid ""
+"These annotations let you specify how Seam should handle an exception that "
+"propagates out of a Seam component."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:672
+#, no-c-format
+msgid "@Redirect"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:674
+#, no-c-format
+msgid "@Redirect(viewId=\"error.jsp\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:675
+#, no-c-format
+msgid ""
+"Specifies that the annotated exception causes a browser redirect to a "
+"specified view id."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:680
+#, no-c-format
+msgid ""
+"<literal>viewId</literal> &mdash; specifies the JSF view id to redirect to."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:685
+#, no-c-format
+msgid ""
+"<literal>message</literal> &mdash; a message to be displayed, default to the "
+"exception message."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:690 Annotations.xml:716
+#, no-c-format
+msgid ""
+"<literal>end</literal> &mdash; specifies that the long-running conversation "
+"should end, default to <literal>false</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:698
+#, no-c-format
+msgid "@HttpError"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:700
+#, no-c-format
+msgid "@HttpError(errorCode=404)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:701
+#, no-c-format
+msgid "Specifies that the annotated exception causes a HTTP error to be sent."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:706
+#, no-c-format
+msgid ""
+"<literal>errorCode</literal> &mdash; the HTTP error code, default to "
+"<literal>500</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:711
+#, no-c-format
+msgid ""
+"<literal>message</literal> &mdash; a message to be sent with the HTTP error, "
+"default to the exception message."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:727
+#, no-c-format
+msgid "Annotations for validation"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:728
+#, no-c-format
+msgid ""
+"This annotation triggers Hibernate Validator. It appears on a method of a "
+"Seam component, almost always an action listener method."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:731
+#, no-c-format
+msgid ""
+"Please refer to the documentation for the Hibernate Annotations package for "
+"information about the annotations defined by the Hibernate Validator "
+"framework."
+msgstr ""
+
+#. Tag: emphasis
+#: Annotations.xml:735
+#, no-c-format
+msgid ""
+"Note that use of <literal>@IfInvalid</literal> is now semi-deprecated and "
+"<literal>&lt;s:validateAll&gt;</literal> is now preferred."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:739
+#, no-c-format
+msgid "@IfInvalid"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:741
+#, no-c-format
+msgid "@IfInvalid(outcome=\"invalid\", refreshEntities=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:742
+#, no-c-format
+msgid ""
+"Specifies that Hibernate Validator should validate the component before the "
+"method is invoked. If the invocation fails, the specified outcome will be "
+"returned, and the validation failure messages returned by Hibernate "
+"Validator will be added to the <literal>FacesContext</literal>. Otherwise, "
+"the invocation will proceed."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:747
+#, no-c-format
+msgid ""
+"<literal>outcome</literal> &mdash; the JSF outcome when validation fails."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:752
+#, no-c-format
+msgid ""
+"<literal>refreshEntities</literal> &mdash; specifies that any invalid entity "
+"in the managed state should be refreshed from the database when validation "
+"fails. Default to <literal>false</literal>. (Useful with extended "
+"persistence contexts.)"
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:763
+#, no-c-format
+msgid "Annotations for Seam Remoting"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:764
+#, no-c-format
+msgid ""
+"Seam Remoting requires that the local interface of a session bean be "
+"annotated with the following annotation:"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:769
+#, no-c-format
+msgid "@WebRemote"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:771
+#, no-c-format
+msgid "@WebRemote(exclude=\"path.to.exclude\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:772
+#, no-c-format
+msgid ""
+"Indicates that the annotated method may be called from client-side "
+"JavaScript. The <literal>exclude</literal> property is optional and allows "
+"objects to be excluded from the result's object graph (see the Remoting "
+"chapter for more details)."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:781
+#, no-c-format
+msgid "Annotations for Seam interceptors"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:782
+#, no-c-format
+msgid "The following annotations appear on Seam interceptor classes."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:785
+#, no-c-format
+msgid ""
+"Please refer to the documentation for the EJB 3.0 specification for "
+"information about the annotations required for EJB interceptor definition."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:790
+#, no-c-format
+msgid "@Interceptor"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:792
+#, no-c-format
+msgid "@Interceptor(stateless=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:793
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is stateless and Seam may optimize "
+"replication."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:796
+#, no-c-format
+msgid "@Interceptor(type=CLIENT)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:797
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is a \"client-side\" interceptor that is "
+"called before the EJB container."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:800
+#, no-c-format
+msgid "@Interceptor(around={SomeInterceptor.class, OtherInterceptor.class})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:801
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is positioned higher in the stack than the "
+"given interceptors."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:804
+#, no-c-format
+msgid "@Interceptor(within={SomeInterceptor.class, OtherInterceptor.class})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:805
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is positioned deeper in the stack than the "
+"given interceptors."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:814
+#, no-c-format
+msgid "Annotations for asynchronicity"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:815
+#, no-c-format
+msgid ""
+"The following annotations are used to declare an asynchronous method, for "
+"example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:818
+#, no-c-format
+msgid ""
+"@Asynchronous public void scheduleAlert(Alert alert, @Expiration Date date) "
+"{ ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:819
+#, no-c-format
+msgid ""
+"@Asynchronous public Timer scheduleAlerts(Alert alert, @Expiration Date "
+"date, \n"
+"    @IntervalDuration long interval) { ... }"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:822
+#, no-c-format
+msgid "<literal>@Asynchronous</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:824
+#, no-c-format
+msgid "<programlisting>@Asynchronous</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:825
+#, no-c-format
+msgid "Specifies that the method call is processed asynchronously."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:831
+#, no-c-format
+msgid "<literal>@Duration</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:833
+#, no-c-format
+msgid "<programlisting>@Duration</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:834
+#, no-c-format
+msgid ""
+"Specifies that a parameter of the asynchronous call is the duration before "
+"the call is processed (or first processed for recurring calls)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:840
+#, no-c-format
+msgid "<literal>@Expiration</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:842
+#, no-c-format
+msgid "<programlisting>@Expiration</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:843
+#, no-c-format
+msgid ""
+"Specifies that a parameter of the asynchronous call is the datetime at which "
+"the call is processed (or first processed for recurring calls)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:849
+#, no-c-format
+msgid "<literal>@IntervalDuration</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:851
+#, no-c-format
+msgid "<programlisting>@IntervalDuration</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:852
+#, no-c-format
+msgid ""
+"Specifies that an asynchronous method call recurs, and that the annotationed "
+"parameter is duration between recurrences."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:861
+#, no-c-format
+msgid "Annotations for use with JSF <literal>dataTable</literal>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:862
+#, no-c-format
+msgid ""
+"The following annotations make it easy to implement clickable lists backed "
+"by a stateful session bean. They appear on attributes."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:867
+#, no-c-format
+msgid "@DataModel"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:869
+#, no-c-format
+msgid "@DataModel(\"variableName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:870
+#, no-c-format
+msgid ""
+"Exposes an attribute of type <literal>List</literal>, <literal>Map</"
+"literal>, <literal>Set</literal> or <literal>Object[]</literal> as a JSF "
+"<literal>DataModel</literal> into the scope of the owning component (or the "
+"<literal>EVENT</literal> scope if the owning component is "
+"<literal>STATELESS</literal>). In the case of <literal>Map</literal>, each "
+"row of the <literal>DataModel</literal> is a <literal>Map.Entry</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:875
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; name of the conversation context variable. "
+"Default to the attribute name."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:880
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; if <literal>scope=ScopeType.PAGE</literal> "
+"is explicitly specified, the <literal>DataModel</literal> will be kept in "
+"the <literal>PAGE</literal> context."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:888
+#, no-c-format
+msgid "<literal>@DataModelSelection</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:890
+#, no-c-format
+msgid "<programlisting>@DataModelSelection</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:891
+#, no-c-format
+msgid ""
+"Injects the selected value from the JSF <literal>DataModel</literal> (this "
+"is the element of the underlying collection, or the map value)."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:896 Annotations.xml:912
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; name of the conversation context variable. "
+"Not needed if there is exactly one <literal>@DataModel</literal> in the "
+"component."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:904
+#, no-c-format
+msgid "<literal>@DataModelSelectionIndex</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:906
+#, no-c-format
+msgid "<programlisting>@DataModelSelectionIndex</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:907
+#, no-c-format
+msgid ""
+"Exposes the selection index of the JSF <literal>DataModel</literal> as an "
+"attribute of the component (this is the row number of the underlying "
+"collection, or the map key)."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:923
+#, no-c-format
+msgid "Meta-annotations for databinding"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:924
+#, no-c-format
+msgid ""
+"These meta-annotations make it possible to implement similar functionality "
+"to <literal>@DataModel</literal> and <literal>@DataModelSelection</literal> "
+"for other datastructures apart from lists."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:929
+#, no-c-format
+msgid "@DataBinderClass"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:931
+#, no-c-format
+msgid "@DataBinderClass(DataModelBinder.class)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:932
+#, no-c-format
+msgid "Specifies that an annotation is a databinding annotation."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:938
+#, no-c-format
+msgid "@DataSelectorClass"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:940
+#, no-c-format
+msgid "@DataSelectorClass(DataModelSelector.class)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:941
+#, no-c-format
+msgid "Specifies that an annotation is a dataselection annotation."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:950
+#, no-c-format
+msgid "Annotations for packaging"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:951
+#, no-c-format
+msgid ""
+"This annotation provides a mechanism for declaring information about a set "
+"of components that are packaged together. It can be applied to any Java "
+"package."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:956
+#, no-c-format
+msgid "@Namespace"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:958
+#, no-c-format
+msgid "@Namespace(value=\"http://jboss.com/products/seam/example/seampay\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:959
+#, no-c-format
+msgid ""
+"Specifies that components in the current package are associated with the "
+"given namespace. The declared namespace can be used as an XML namespace in a "
+"<literal>components.xml</literal> file to simplify application configuration."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:962
+#, no-c-format
+msgid ""
+"@Namespace(value=\"http://jboss.com/products/seam/core\", prefix=\"org.jboss."
+"seam.core\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:963
+#, no-c-format
+msgid ""
+"Specifies a namespace to associate with a given package. Additionally, it "
+"specifies a component name prefix to be applied to component names specified "
+"in the XML file. For example, an XML element named <literal>microcontainer</"
+"literal> that is associated with this namespace would be understood to "
+"actually refere to a component named <literal>org.jboss.seam.core."
+"microcontainer</literal>."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Book_Info.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Book_Info.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Book_Info.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,38 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Book_Info.xml:10
+#, no-c-format
+msgid "Seam - Contextual Components"
+msgstr ""
+
+#. Tag: subtitle
+#: Book_Info.xml:11
+#, no-c-format
+msgid "A Framework for Java EE 5"
+msgstr ""
+
+#. Tag: para
+#: Book_Info.xml:15
+#, no-c-format
+msgid "This book is a Reference Guide for Seam"
+msgstr ""
+
+#. Tag: holder
+#: Book_Info.xml:36
+#, no-c-format
+msgid "&FORMAL-RHI;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Cache.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Cache.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Cache.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,318 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Cache.xml:10
+#, no-c-format
+msgid "Caching"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:11
+#, no-c-format
+msgid ""
+"In almost all enterprise applications, the database is the primary "
+"bottleneck, and the least scalable tier of the runtime environment. People "
+"from a PHP/Ruby environment will try to tell you that so-called \"shared "
+"nothing\" architectures scale well. While that may be literally true, I "
+"don't know of many interesting multi-user applications which can be "
+"implemented with no sharing of resources between different nodes of the "
+"cluster. What these silly people are really thinking of is a \"share nothing "
+"except for the database\" architecture. Of course, sharing the database is "
+"the primary problem with scaling a multi-user application&mdash;so the claim "
+"that this architecture is highly scalable is absurd, and tells you a lot "
+"about the kind of applications that these folks spend most of their time "
+"working on."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:14
+#, no-c-format
+msgid ""
+"Almost anything we can possibly do to share the database <emphasis>less "
+"often</emphasis> is worth doing."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:17
+#, no-c-format
+msgid ""
+"This calls for a cache. Well, not just one cache. A well designed Seam "
+"application will feature a rich, multi-layered caching strategy that impacts "
+"every layer of the application:"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:22
+#, no-c-format
+msgid ""
+"The database, of course, has its own cache. This is super-important, but "
+"can't scale like a cache in the application tier."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:27
+#, no-c-format
+msgid ""
+"Your ORM solution (Hibernate, or some other JPA implementation) has a second-"
+"level cache of data from the database. This is a very powerful capability, "
+"but is often misused. In a clustered environment, keeping the data in the "
+"cache transactionally consistent across the whole cluster, and with the "
+"database, is quite expensive. It makes most sense for data which is shared "
+"between many users, and is updated rarely. In traditional stateless "
+"architectures, people often try to use the second-level cache for "
+"conversational state. This is always bad, and is especially wrong in Seam."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:32
+#, no-c-format
+msgid ""
+"The Seam conversation context is a cache of conversational state. Components "
+"you put into the conversation context can hold and cache state relating to "
+"the current user interaction."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:37
+#, no-c-format
+msgid ""
+"In particular, the Seam-managed persistence context (or an extended EJB "
+"container-managed persistence context associated with a conversation-scoped "
+"stateful session bean) acts as a cache of data that has been read in the "
+"current conversation. This cache tends to have a pretty high hitrate! Seam "
+"optimizes the replication of Seam-managed persistence contexts in a "
+"clustered environment, and there is no requirement for transactional "
+"consistency with the database (optimistic locking is sufficient) so you "
+"don't need to worry too much about the performance implications of this "
+"cache, unless you read thousands of objects into a single persistence "
+"context."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:42
+#, no-c-format
+msgid ""
+"The application can cache non-transactional state in the Seam application "
+"context. State kept in the application context is of course not visible to "
+"other nodes in the cluster."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:47
+#, no-c-format
+msgid ""
+"The application can cache transactional state using the Seam "
+"<literal>pojoCache</literal> component, which integrates JBossCache into the "
+"Seam environment. This state will be visible to other nodes if you run JBoss "
+"cache in a clustered mode."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:52
+#, no-c-format
+msgid ""
+"Finally, Seam lets you cache rendered fragments of a JSF page. Unlike the "
+"ORM second-level cache, this cache is not automatically invalidated when "
+"data changes, so you need to write application code to perform explicit "
+"invalidation, or set appropriate expiration policies."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:57
+#, no-c-format
+msgid ""
+"For more information about the second-level cache, you'll need to refer to "
+"the documentation of your ORM solution, since this is an extremely complex "
+"topic. In this section we'll discuss the use of JBossCache directly, via the "
+"<literal>pojoCache</literal> component, or as the page fragment cache, via "
+"the <literal>&lt;s:cache&gt;</literal> control."
+msgstr ""
+
+#. Tag: title
+#: Cache.xml:61
+#, no-c-format
+msgid "Using JBossCache in Seam"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:62
+#, no-c-format
+msgid ""
+"The built-in <literal>pojoCache</literal> component manages an instance of "
+"<literal>org.jboss.cache.aop.PojoCache</literal>. You can safely put any "
+"immutable Java object in the cache, and it will be replicated across the "
+"cluster (assuming that replication is enabled). If you want to keep mutable "
+"objects in the cache, you'll need to run the JBossCache bytecode "
+"preprocessor to ensure that changes to the objects will be automatically "
+"detected and replicated."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:65
+#, no-c-format
+msgid ""
+"To use <literal>pojoCache</literal>, all you need to do is put the "
+"JBossCache jars in the classpath, and provide a resource named "
+"<literal>treecache.xml</literal> with an appropriate cache configuration. "
+"JBossCache has many scary and confusing configuration settings, so we won't "
+"discuss them here. Please refer to the JBossCache documentation for more "
+"information."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:68
+#, no-c-format
+msgid ""
+"For an EAR depoyment of Seam, we recommend that the JBossCache jars and "
+"configuration go directly into the EAR. Make sure you declare the jars in "
+"<literal>application.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:71
+#, no-c-format
+msgid "Now you can inject the cache into any Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:74
+#, no-c-format
+msgid ""
+"@Name(\"chatroom\")\n"
+"public class Chatroom {\n"
+"    @In PojoCache pojoCache;\n"
+"    \n"
+"    public void join(String username) {\n"
+"      try\n"
+"      {\n"
+"         Set&lt;String&gt; userList = (Set&lt;String&gt;) pojoCache.get"
+"(\"chatroom\", \"userList\");\n"
+"         if (userList==null) \n"
+"         {\n"
+"            userList = new HashSet&lt;String&gt;();\n"
+"            pojoCache.put(\"chatroom\", \"userList\", userList);\n"
+"         }\n"
+"         userList.put(username);\n"
+"      }\n"
+"      catch (CacheException ce)\n"
+"      {\n"
+"         throw new RuntimeException(ce);\n"
+"      }\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:75
+#, no-c-format
+msgid ""
+"If you want to have multiple JBossCache configurations in your application, "
+"use <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:78
+#, no-c-format
+msgid ""
+"&lt;core:pojo-cache name=\"myCache\" cfg-resource-name=\"myown/cache.xml\"/"
+"&gt;"
+msgstr ""
+
+#. Tag: title
+#: Cache.xml:82
+#, no-c-format
+msgid "Page fragment caching"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:83
+#, no-c-format
+msgid ""
+"The most interesting user of JBossCache is the <literal>&lt;s:cache&gt;</"
+"literal> tag, Seam's solution to the problem of page fragment caching in "
+"JSF. <literal>&lt;s:cache&gt;</literal> uses <literal>pojoCache</literal> "
+"internally, so you need to follow the steps listed above before you can use "
+"it. (Put the jars in the EAR, wade through the scary configuration options, "
+"etc.)"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:86
+#, no-c-format
+msgid ""
+"<literal>&lt;s:cache&gt;</literal> is used for caching some rendered content "
+"which changes rarely. For example, the welcome page of our blog displays the "
+"recent blog entries:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:89
+#, no-c-format
+msgid ""
+"&lt;s:cache key=\"recentEntries-#{blog.id}\" region=\"welcomePageFragments"
+"\"&gt;\n"
+"   &lt;h:dataTable value=\"#{blog.recentEntries}\" var=\"blogEntry\"&gt;\n"
+"      &lt;h:column&gt;\n"
+"         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"         &lt;div&gt;\n"
+"            &lt;s:formattedText value=\"#{blogEntry.body}\"/&gt;\n"
+"         &lt;/div&gt;\n"
+"      &lt;/h:column&gt;\n"
+"   &lt;/h:dataTable&gt;\n"
+"&lt;/s:cache&gt;"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:90
+#, no-c-format
+msgid ""
+"The <literal>key</literal> let's you have multiple cached versions of each "
+"page fragment. In this case, there is one cached version per blog. The "
+"<literal>region</literal> determines the JBossCache node that all version "
+"will be stored in. Different nodes may have different expiry policies. "
+"(That's the stuff you set up using the aforementioned scary configuration "
+"options.)"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:93
+#, no-c-format
+msgid ""
+"Of course, the big problem with <literal>&lt;s:cache&gt;</literal> is that "
+"it is too stupid to know when the underlying data changes (for example, when "
+"the blogger posts a new entry). So you need to evict the cached fragment "
+"manually:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:96
+#, no-c-format
+msgid ""
+"public void post() {\n"
+"    ...\n"
+"    entityManager.persist(blogEntry);\n"
+"    pojoCache.remove(\"welcomePageFragments\", \"recentEntries-\" + blog."
+"getId() );\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:97
+#, no-c-format
+msgid ""
+"Alternatively, if it is not critical that changes are immediately visible to "
+"the user, you could set a short expiry time on the JbossCache node."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Components.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Components.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Components.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2007 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Components.xml:10
+#, no-c-format
+msgid "Built-in Seam components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:11
+#, no-c-format
+msgid ""
+"This chapter describes Seam's built-in components, and their configuration "
+"properties."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:14
+#, no-c-format
+msgid ""
+"Note that you can replace any of the built in components with your own "
+"implementations simply by specifying the name of one of the built in "
+"components on your own class using <literal>@Name</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:17
+#, no-c-format
+msgid ""
+"Note also that even though all the built in components use a qualified name, "
+"most of them are aliased to unqualified names by default. These aliases "
+"specify <literal>auto-create=\"true\"</literal>, so you do not need to use "
+"<literal>create=true</literal> when injecting built-in components by their "
+"unqualified name."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:21
+#, no-c-format
+msgid "Context injection components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:22
+#, no-c-format
+msgid ""
+"The first set of built in components exist purely to support injection of "
+"various contextual objects. For example, the following component instance "
+"variable would have the Seam session context object injected:"
+msgstr ""
+
+#. Tag: programlisting
+#: Components.xml:25
+#, no-c-format
+msgid "@In private Context sessionContext;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:28
+#, no-c-format
+msgid "org.jboss.seam.core.eventContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:30
+#, no-c-format
+msgid "Manager component for the event context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:36
+#, no-c-format
+msgid "org.jboss.seam.core.pageContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:38
+#, no-c-format
+msgid "Manager component for the page context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:44
+#, no-c-format
+msgid "org.jboss.seam.core.conversationContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:46
+#, no-c-format
+msgid "Manager component for the conversation context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:52
+#, no-c-format
+msgid "org.jboss.seam.core.sessionContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:54
+#, no-c-format
+msgid "Manager component for the session context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:60
+#, no-c-format
+msgid "org.jboss.seam.core.applicationContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:62
+#, no-c-format
+msgid "Manager component for the appication context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:68
+#, no-c-format
+msgid "org.jboss.seam.core.businessProcessContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:70
+#, no-c-format
+msgid "Manager component for the business process context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:76
+#, no-c-format
+msgid "org.jboss.seam.core.facesContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:78
+#, no-c-format
+msgid ""
+"Manager component for the <literal>FacesContext</literal> context object "
+"(not a true Seam context)"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:84 Components.xml:267 Components.xml:441 Components.xml:572
+#, no-c-format
+msgid "All of these components are always installed."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:90
+#, no-c-format
+msgid "Utility components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:91
+#, no-c-format
+msgid "These components are merely useful."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:96
+#, no-c-format
+msgid "org.jboss.seam.core.facesMessages"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:98
+#, no-c-format
+msgid "Allows faces success messages to propagate across a browser redirect."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:103
+#, no-c-format
+msgid ""
+"<literal>add(FacesMessage facesMessage)</literal> &mdash; add a faces "
+"message, which will be displayed during the next render response phase that "
+"occurs in the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:108
+#, no-c-format
+msgid ""
+"<literal>add(String messageTemplate)</literal> &mdash; add a faces message, "
+"rendered from the given message template which may contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:113
+#, no-c-format
+msgid ""
+"<literal>add(Severity severity, String messageTemplate)</literal> &mdash; "
+"add a faces message, rendered from the given message template which may "
+"contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:118
+#, no-c-format
+msgid ""
+"<literal>addFromResourceBundle(String key)</literal> &mdash; add a faces "
+"message, rendered from a message template defined in the Seam resource "
+"bundle which may contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:123
+#, no-c-format
+msgid ""
+"<literal>addFromResourceBundle(Severity severity, String key)</literal> "
+"&mdash; add a faces message, rendered from a message template defined in the "
+"Seam resource bundle which may contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:128
+#, no-c-format
+msgid "<literal>clear()</literal> &mdash; clear all messages."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:136
+#, no-c-format
+msgid "org.jboss.seam.core.redirect"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:138
+#, no-c-format
+msgid ""
+"A convenient API for performing redirects with parameters (this is "
+"especially useful for bookmarkable search results screens)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:143
+#, no-c-format
+msgid ""
+"<literal>redirect.viewId</literal> &mdash; the JSF view id to redirect to."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:148
+#, no-c-format
+msgid ""
+"<literal>redirect.conversationPropagationEnabled</literal> &mdash; "
+"determines whether the conversation will propagate across the redirect."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:153
+#, no-c-format
+msgid ""
+"<literal>redirect.parameters</literal> &mdash; a map of request parameter "
+"name to value, to be passed in the redirect request."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:158
+#, no-c-format
+msgid "<literal>execute()</literal> &mdash; perform the redirect immediately."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:163
+#, no-c-format
+msgid ""
+"<literal>captureCurrentRequest()</literal> &mdash; stores the view id and "
+"request parameters of the current GET request (in the conversation context), "
+"for later use by calling <literal>execute()</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:171
+#, no-c-format
+msgid "org.jboss.seam.core.httpError"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:173
+#, no-c-format
+msgid "A convenient API for sending HTTP errors."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:179
+#, no-c-format
+msgid "org.jboss.seam.core.events"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:181
+#, no-c-format
+msgid ""
+"An API for raising events that can be observed via <literal>@Observer</"
+"literal> methods, or method bindings in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:186
+#, no-c-format
+msgid ""
+"<literal>raiseEvent(String type)</literal> &mdash; raise an event of a "
+"particular type and distribute to all observers."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:191
+#, no-c-format
+msgid ""
+"<literal>raiseAsynchronousEvent(String type)</literal> &mdash; raise an "
+"event to be processed asynchronously by the EJB3 timer service."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:196
+#, no-c-format
+msgid ""
+"<literal>raiseTimedEvent(String type, ....)</literal> &mdash; schedule an "
+"event to be processed asynchronously by the EJB3 timer service."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:201
+#, no-c-format
+msgid ""
+"<literal>addListener(String type, String methodBinding)</literal> &mdash; "
+"add an observer for a particular event type."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:209
+#, no-c-format
+msgid "org.jboss.seam.core.interpolator"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:211
+#, no-c-format
+msgid "An API for interpolating the values of JSF EL expressions in Strings."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:216
+#, no-c-format
+msgid ""
+"<literal>interpolate(String template)</literal> &mdash; scan the template "
+"for JSF EL expressions of the form <literal>#{...}</literal> and replace "
+"them with their evaluated values."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:224
+#, no-c-format
+msgid "org.jboss.seam.core.expressions"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:226
+#, no-c-format
+msgid "An API for creating value and method bindings."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:231
+#, no-c-format
+msgid ""
+"<literal>createValueBinding(String expression)</literal> &mdash; create a "
+"value binding object."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:236
+#, no-c-format
+msgid ""
+"<literal>createMethodBinding(String expression)</literal> &mdash; create a "
+"method binding object."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:244
+#, no-c-format
+msgid "org.jboss.seam.core.pojoCache"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:246
+#, no-c-format
+msgid ""
+"Manager component for a JBoss Cache <literal>PojoCache</literal> instance."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:251
+#, no-c-format
+msgid ""
+"<literal>pojoCache.cfgResourceName</literal> &mdash; the name of the "
+"configuration file. Default to <literal>treecache.xml</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:259
+#, no-c-format
+msgid "org.jboss.seam.core.uiComponent"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:261
+#, no-c-format
+msgid ""
+"Allows access to a JSF <literal>UIComponent</literal> by its id from the EL. "
+"For example, we can write <literal>@In(\"#{uiComponent['myForm:address']."
+"value}\")</literal>."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:273
+#, no-c-format
+msgid "Components for internationalization and themes"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:274
+#, no-c-format
+msgid ""
+"The next group of components make it easy to build internationalized user "
+"interfaces using Seam."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:279
+#, no-c-format
+msgid "org.jboss.seam.core.locale"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:281
+#, no-c-format
+msgid "The Seam locale. The locale is session scoped."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:287
+#, no-c-format
+msgid "org.jboss.seam.core.timezone"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:289
+#, no-c-format
+msgid "The Seam timezone. The timezone is session scoped."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:295
+#, no-c-format
+msgid "org.jboss.seam.core.resourceBundle"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:297
+#, no-c-format
+msgid ""
+"The Seam resource bundle. The resource bundle is session scoped. The Seam "
+"resource bundle performs a depth-first search for keys in a list of Java "
+"resource bundles."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:302
+#, no-c-format
+msgid ""
+"<literal>resourceBundle.bundleNames</literal> &mdash; the names of the Java "
+"resource bundles to search. Default to <literal>messages</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:310
+#, no-c-format
+msgid "org.jboss.seam.core.localeSelector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:312
+#, no-c-format
+msgid ""
+"Supports selection of the locale either at configuration time, or by the "
+"user at runtime."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:317 Components.xml:367
+#, no-c-format
+msgid "<literal>select()</literal> &mdash; select the specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:322
+#, no-c-format
+msgid ""
+"<literal>localeSelector.locale</literal> &mdash; the actual <literal>java."
+"util.Locale</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:327
+#, no-c-format
+msgid ""
+"<literal>localeSelector.localeString</literal> &mdash; the stringified "
+"representation of the locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:332
+#, no-c-format
+msgid ""
+"<literal>localeSelector.language</literal> &mdash; the language for the "
+"specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:337
+#, no-c-format
+msgid ""
+"<literal>localeSelector.country</literal> &mdash; the country for the "
+"specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:342
+#, no-c-format
+msgid ""
+"<literal>localeSelector.variant</literal> &mdash; the variant for the "
+"specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:347
+#, no-c-format
+msgid ""
+"<literal>localeSelector.supportedLocales</literal> &mdash; a list of "
+"<literal>SelectItem</literal>s representing the supported locales listed in "
+"<literal>jsf-config.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:352
+#, no-c-format
+msgid ""
+"<literal>localeSelector.cookieEnabled</literal> &mdash; specifies that the "
+"locale selection should be persisted via a cookie."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:360
+#, no-c-format
+msgid "org.jboss.seam.core.timezoneSelector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:362
+#, no-c-format
+msgid ""
+"Supports selection of the timezone either at configuration time, or by the "
+"user at runtime."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:372
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.timezone</literal> &mdash; the actual "
+"<literal>java.util.TimeZone</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:377
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.timeZoneId</literal> &mdash; the stringified "
+"representation of the timezone."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:382
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.cookieEnabled</literal> &mdash; specifies that the "
+"timezone selection should be persisted via a cookie."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:390
+#, no-c-format
+msgid "org.jboss.seam.core.messages"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:392
+#, no-c-format
+msgid ""
+"A map containing internationalized messages rendered from message templates "
+"defined in the Seam resource bundle."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:398
+#, no-c-format
+msgid "org.jboss.seam.theme.themeSelector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:400
+#, no-c-format
+msgid ""
+"Supports selection of the theme either at configuration time, or by the user "
+"at runtime."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:405
+#, no-c-format
+msgid "<literal>select()</literal> &mdash; select the specified theme."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:410
+#, no-c-format
+msgid ""
+"<literal>theme.availableThemes</literal> &mdash; the list of defined themes."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:415
+#, no-c-format
+msgid "<literal>themeSelector.theme</literal> &mdash; the selected theme."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:420
+#, no-c-format
+msgid ""
+"<literal>themeSelector.themes</literal> &mdash; a list of "
+"<literal>SelectItem</literal>s representing the defined themes."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:425
+#, no-c-format
+msgid ""
+"<literal>themeSelector.cookieEnabled</literal> &mdash; specifies that the "
+"theme selection should be persisted via a cookie."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:433
+#, no-c-format
+msgid "org.jboss.seam.theme.theme"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:435
+#, no-c-format
+msgid "A map containing theme entries."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:447
+#, no-c-format
+msgid "Components for controlling conversations"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:448
+#, no-c-format
+msgid ""
+"The next group of components allow control of conversations by the "
+"application or user interface."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:453
+#, no-c-format
+msgid "org.jboss.seam.core.conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:455
+#, no-c-format
+msgid ""
+"API for application control of attributes of the current Seam conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:460 Components.xml:475
+#, no-c-format
+msgid "<literal>getId()</literal> &mdash; returns the current conversation id"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:465
+#, no-c-format
+msgid ""
+"<literal>isNested()</literal> &mdash; is the current conversation a nested "
+"conversation?"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:470
+#, no-c-format
+msgid ""
+"<literal>isLongRunning()</literal> &mdash; is the current conversation a "
+"long-running conversation?"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:480
+#, no-c-format
+msgid ""
+"<literal>getParentId()</literal> &mdash; returns the conversation id of the "
+"parent conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:485
+#, no-c-format
+msgid ""
+"<literal>getRootId()</literal> &mdash; returns the conversation id of the "
+"root conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:490
+#, no-c-format
+msgid ""
+"<literal>setTimeout(int timeout)</literal> &mdash; sets the timeout for the "
+"current conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:495
+#, no-c-format
+msgid ""
+"<literal>setViewId(String outcome)</literal> &mdash; sets the view id to be "
+"used when switching back to the current conversation from the conversation "
+"switcher, conversation list, or breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:500
+#, no-c-format
+msgid ""
+"<literal>setDescription(String description)</literal> &mdash; sets the "
+"description of the current conversation to be displayed in the conversation "
+"switcher, conversation list, or breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:505
+#, no-c-format
+msgid ""
+"<literal>redirect()</literal> &mdash; redirect to the last well-defined view "
+"id for this conversation (useful after login challenges)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:510
+#, no-c-format
+msgid ""
+"<literal>leave()</literal> &mdash; exit the scope of this conversation, "
+"without actually ending the conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:515
+#, no-c-format
+msgid ""
+"<literal>begin()</literal> &mdash; begin a long-running conversation "
+"(equivalent to <literal>@Begin</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:520
+#, no-c-format
+msgid ""
+"<literal>beginPageflow(String pageflowName)</literal> &mdash; begin a long-"
+"running conversation with a pageflow (equivalent to <literal>@Begin(pageflow="
+"\"...\")</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:525
+#, no-c-format
+msgid ""
+"<literal>end()</literal> &mdash; end a long-running conversation (equivalent "
+"to <literal>@End</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:530
+#, no-c-format
+msgid ""
+"<literal>pop()</literal> &mdash; pop the conversation stack, returning to "
+"the parent conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:535
+#, no-c-format
+msgid ""
+"<literal>root()</literal> &mdash; return to the root conversation of the "
+"conversation stack."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:540
+#, no-c-format
+msgid ""
+"<literal>changeFlushMode(FlushModeType flushMode)</literal> &mdash; change "
+"the flush mode of the conversation."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:548
+#, no-c-format
+msgid "org.jboss.seam.core.conversationList"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:550
+#, no-c-format
+msgid "Manager component for the conversation list."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:556
+#, no-c-format
+msgid "org.jboss.seam.core.conversationStack"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:558
+#, no-c-format
+msgid "Manager component for the conversation stack (breadcrumbs)."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:564
+#, no-c-format
+msgid "org.jboss.seam.core.switcher"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:566
+#, no-c-format
+msgid "The conversation switcher."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:578
+#, no-c-format
+msgid "jBPM-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:579
+#, no-c-format
+msgid "These components are for use with jBPM."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:584
+#, no-c-format
+msgid "org.jboss.seam.core.pageflow"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:586
+#, no-c-format
+msgid "API control of Seam pageflows."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:591
+#, no-c-format
+msgid ""
+"<literal>isInProcess()</literal> &mdash; returns <literal>true</literal> if "
+"there is currently a pageflow in process"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:596
+#, no-c-format
+msgid ""
+"<literal>getProcessInstance()</literal> &mdash; returns jBPM "
+"<literal>ProcessInstance</literal> for the current pageflow"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:601
+#, no-c-format
+msgid ""
+"<literal>begin(String pageflowName)</literal> &mdash; begin a pageflow in "
+"the context of the current conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:606
+#, no-c-format
+msgid ""
+"<literal>reposition(String nodeName)</literal> &mdash; reposition the "
+"current pageflow to a particular node"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:614
+#, no-c-format
+msgid "org.jboss.seam.core.actor"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:616
+#, no-c-format
+msgid ""
+"API for application control of attributes of the jBPM actor associated with "
+"the current session."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:621
+#, no-c-format
+msgid ""
+"<literal>setId(String actorId)</literal> &mdash; sets the jBPM actor id of "
+"the current user."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:626
+#, no-c-format
+msgid ""
+"<literal>getGroupActorIds()</literal> &mdash; returns a <literal>Set</"
+"literal> to which jBPM actor ids for the current users groups may be added."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:634
+#, no-c-format
+msgid "org.jboss.seam.core.transition"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:636
+#, no-c-format
+msgid ""
+"API for application control of the jBPM transition for the current task."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:641
+#, no-c-format
+msgid ""
+"<literal>setName(String transitionName)</literal> &mdash; sets the jBPM "
+"transition name to be used when the current task is ended via "
+"<literal>@EndTask</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:649
+#, no-c-format
+msgid "org.jboss.seam.core.businessProcess"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:651
+#, no-c-format
+msgid ""
+"API for programmatic control of the association between the conversation and "
+"business process."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:656
+#, no-c-format
+msgid ""
+"<literal>businessProcess.taskId</literal> &mdash; the id of the task "
+"associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:661
+#, no-c-format
+msgid ""
+"<literal>businessProcess.processId</literal> &mdash; the id of the process "
+"associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:666
+#, no-c-format
+msgid ""
+"<literal>businessProcess.hasCurrentTask()</literal> &mdash; is a task "
+"instance associated with the current conversation?"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:671
+#, no-c-format
+msgid ""
+"<literal>businessProcess.hasCurrentProcess()</literal> &mdash; is a process "
+"instance associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:676
+#, no-c-format
+msgid ""
+"<literal>createProcess(String name)</literal> &mdash; create an instance of "
+"the named process definition and associate it with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:681
+#, no-c-format
+msgid ""
+"<literal>startTask()</literal> &mdash; start the task associated with the "
+"current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:686
+#, no-c-format
+msgid ""
+"<literal>endTask(String transitionName)</literal> &mdash; end the task "
+"associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:691
+#, no-c-format
+msgid ""
+"<literal>resumeTask(Long id)</literal> &mdash; associate the task with the "
+"given id with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:696
+#, no-c-format
+msgid ""
+"<literal>resumeProcess(Long id)</literal> &mdash; associate the process with "
+"the given id with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:701
+#, no-c-format
+msgid ""
+"<literal>transition(String transitionName)</literal> &mdash; trigger the "
+"transition."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:709
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstance"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:711
+#, no-c-format
+msgid "Manager component for the jBPM <literal>TaskInstance</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:717
+#, no-c-format
+msgid "org.jboss.seam.core.processInstance"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:719
+#, no-c-format
+msgid "Manager component for the jBPM <literal>ProcessInstance</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:725
+#, no-c-format
+msgid "org.jboss.seam.core.jbpmContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:727
+#, no-c-format
+msgid "Manager component for an event-scoped <literal>JbpmContext</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:733
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstanceList"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:735
+#, no-c-format
+msgid "Manager component for the jBPM task list."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:741
+#, no-c-format
+msgid "org.jboss.seam.core.pooledTaskInstanceList"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:743
+#, no-c-format
+msgid "Manager component for the jBPM pooled task list."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:749
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstanceListForType"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:751
+#, no-c-format
+msgid "Manager component for the jBPM task lists."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:757
+#, no-c-format
+msgid "org.jboss.seam.core.pooledTask"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:759
+#, no-c-format
+msgid "Action handler for pooled task assignment."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:765
+#, no-c-format
+msgid ""
+"All of these components are installed whenever the component <literal>org."
+"jboss.seam.core.jbpm</literal> is installed."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:771
+#, no-c-format
+msgid "Security-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:772
+#, no-c-format
+msgid "These components relate to web-tier security."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:777
+#, no-c-format
+msgid "org.jboss.seam.core.userPrincipal"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:779
+#, no-c-format
+msgid "Manager component for the current user <literal>Principal</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:785
+#, no-c-format
+msgid "org.jboss.seam.core.isUserInRole"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:787
+#, no-c-format
+msgid ""
+"Allows JSF pages to choose to render a control, depending upon the roles "
+"available to the current principal. <literal>&lt;h:commandButton value=\"edit"
+"\" rendered=\"#{isUserInRole['admin']}\"/&gt;</literal>."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:796
+#, no-c-format
+msgid "JMS-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:797
+#, no-c-format
+msgid ""
+"These components are for use with managed <literal>TopicPublisher</literal>s "
+"and <literal>QueueSender</literal>s (see below)."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:802
+#, no-c-format
+msgid "org.jboss.seam.jms.queueSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:804
+#, no-c-format
+msgid "Manager component for a JMS <literal>QueueSession</literal> ."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:810
+#, no-c-format
+msgid "org.jboss.seam.jms.topicSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:812
+#, no-c-format
+msgid "Manager component for a JMS <literal>TopicSession</literal> ."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:821
+#, no-c-format
+msgid "Mail-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:822
+#, no-c-format
+msgid "These components are for use with Seam's Email support"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:827
+#, no-c-format
+msgid "org.jboss.seam.mail.mailSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:829
+#, no-c-format
+msgid "Manager component for a JavaMail <literal>Session</literal> ."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:834
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.host</literal> &mdash; the hostname "
+"of the SMTP server to use"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:839
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.port</literal> &mdash; the port of "
+"the SMTP server to use"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:844
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.username</literal> &mdash; the "
+"username to use to connect to the SMTP server."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:849
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.password</literal> &mdash; the "
+"password to use to connect to the SMTP server"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:854
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.debug</literal> &mdash; enable "
+"JavaMail debugging (very verbose)"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:859
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.sessionJndiName</literal> &mdash; "
+"name under which a javax.mail.Session is bound to JNDI"
+msgstr ""
+
+#. Tag: title
+#: Components.xml:870
+#, no-c-format
+msgid "Infrastructural components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:871
+#, no-c-format
+msgid ""
+"These components provide critical platform infrastructure. You can install a "
+"component by including its class name in the <literal>org.jboss.seam.core."
+"init.componentClasses</literal> configuration property."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:876
+#, no-c-format
+msgid "org.jboss.seam.core.init"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:878
+#, no-c-format
+msgid "Initialization settings for Seam. Always installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:883
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.jndiPattern</literal> &mdash; the JNDI "
+"pattern used for looking up session beans"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:888
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.debug</literal> &mdash; enable Seam debug "
+"mode"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:893
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.clientSideConversations</literal> &mdash; "
+"if set to <literal>true</literal>, Seam will save conversation context "
+"variables in the client instead of in the <literal>HttpSession</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:898
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.userTransactionName</literal> &mdash; the "
+"JNDI name to use when looking up the JTA <literal>UserTransaction</literal> "
+"object."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:906
+#, no-c-format
+msgid "org.jboss.seam.core.manager"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:908
+#, no-c-format
+msgid ""
+"Internal component for Seam page and conversation context management. Always "
+"installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:913
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationTimeout</literal> &mdash; "
+"the conversation context timeout in milliseconds."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:918
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.concurrentRequestTimeout</literal> "
+"&mdash; maximum wait time for a thread attempting to gain a lock on the long-"
+"running conversation context."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:923
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationIdParameter</literal> "
+"&mdash; the request parameter used to propagate the conversation id, default "
+"to <literal>conversationId</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:928
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationIsLongRunningParameter</"
+"literal> &mdash; the request parameter used to propagate information about "
+"whether the conversation is long-running, default to "
+"<literal>conversationIsLongRunning</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:936
+#, no-c-format
+msgid "org.jboss.seam.core.pages"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:938
+#, no-c-format
+msgid "Internal component for Seam workspace management. Always installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:943
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.pages.noConversationViewId</literal> &mdash; "
+"global setting for the view id to redirect to when a conversation entry is "
+"not found on the server side."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:951
+#, no-c-format
+msgid "org.jboss.seam.core.ejb"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:953
+#, no-c-format
+msgid ""
+"Bootstraps the JBoss Embeddable EJB3 container. Install as class "
+"<literal>org.jboss.seam.core.Ejb</literal>. This is useful when using Seam "
+"with EJB components outside the context of a Java EE 5 application server."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:956
+#, no-c-format
+msgid ""
+"The basic Embedded EJB configuration is defined in <literal>jboss-embedded-"
+"beans.xml</literal>. Additional microcontainer configuration (for example, "
+"extra datasources) may be specified by <literal>jboss-beans.xml</literal> or "
+"<literal>META-INF/jboss-beans.xml</literal> in the classpath."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:962
+#, no-c-format
+msgid "org.jboss.seam.core.microcontainer"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:964
+#, no-c-format
+msgid ""
+"Bootstraps the JBoss microcontainer. Install as class <literal>org.jboss."
+"seam.core.Microcontainer</literal>. This is useful when using Seam with "
+"Hibernate and no EJB components outside the context of a Java EE application "
+"server. The microcontainer can provide a partial EE environment with JNDI, "
+"JTA, a JCA datasource and Hibernate."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:967
+#, no-c-format
+msgid ""
+"The microcontainer configuration may be specified by <literal>jboss-beans."
+"xml</literal> or <literal>META-INF/jboss-beans.xml</literal> in the "
+"classpath."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:973
+#, no-c-format
+msgid "org.jboss.seam.core.jbpm"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:975
+#, no-c-format
+msgid ""
+"Bootstraps a <literal>JbpmConfiguration</literal>. Install as class "
+"<literal>org.jboss.seam.core.Jbpm</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:980
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.jbpm.processDefinitions</literal> &mdash; a "
+"list of resource names of jPDL files to be used for orchestration of "
+"business processes."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:985
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.jbpm.pageflowDefinitions</literal> &mdash; a "
+"list of resource names of jPDL files to be used for orchestration of "
+"conversation page flows."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:993
+#, no-c-format
+msgid "org.jboss.seam.core.conversationEntries"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:995
+#, no-c-format
+msgid ""
+"Internal session-scoped component recording the active long-running "
+"conversations between requests."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1001
+#, no-c-format
+msgid "org.jboss.seam.core.facesPage"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1003
+#, no-c-format
+msgid ""
+"Internal page-scoped component recording the conversation context associated "
+"with a page."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1009
+#, no-c-format
+msgid "org.jboss.seam.core.persistenceContexts"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1011
+#, no-c-format
+msgid ""
+"Internal component recording the persistence contexts which were used in the "
+"current conversation."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1017
+#, no-c-format
+msgid "org.jboss.seam.jms.queueConnection"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1019
+#, no-c-format
+msgid ""
+"Manages a JMS <literal>QueueConnection</literal>. Installed whenever managed "
+"managed <literal>QueueSender</literal> is installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1024
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.jms.queueConnection.queueConnectionFactoryJndiName</"
+"literal> &mdash; the JNDI name of a JMS <literal>QueueConnectionFactory</"
+"literal>. Default to <literal>UIL2ConnectionFactory</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1032
+#, no-c-format
+msgid "org.jboss.seam.jms.topicConnection"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1034
+#, no-c-format
+msgid ""
+"Manages a JMS <literal>TopicConnection</literal>. Installed whenever managed "
+"managed <literal>TopicPublisher</literal> is installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1039
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.jms.topicConnection.topicConnectionFactoryJndiName</"
+"literal> &mdash; the JNDI name of a JMS <literal>TopicConnectionFactory</"
+"literal>. Default to <literal>UIL2ConnectionFactory</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1047
+#, no-c-format
+msgid "org.jboss.seam.persistence.persistenceProvider"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1049
+#, no-c-format
+msgid "Abstraction layer for non-standardized features of JPA provider."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1055
+#, no-c-format
+msgid "org.jboss.seam.core.validation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1057
+#, no-c-format
+msgid "Internal component for Hibernate Validator support."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1063
+#, no-c-format
+msgid "org.jboss.seam.debug.introspector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1065 Components.xml:1073
+#, no-c-format
+msgid "Support for the Seam Debug Page."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1071
+#, no-c-format
+msgid "org.jboss.seam.debug.contexts"
+msgstr ""
+
+#. Tag: title
+#: Components.xml:1082
+#, no-c-format
+msgid "Special components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1083
+#, no-c-format
+msgid ""
+"Certain special Seam component classes are installable multiple times under "
+"names specified in the Seam configuration. For example, the following lines "
+"in <literal>components.xml</literal> install and configure two Seam "
+"components:"
+msgstr ""
+
+#. Tag: programlisting
+#: Components.xml:1086
+#, no-c-format
+msgid ""
+"&lt;component name=\"bookingDatabase\"\n"
+"          class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"    &lt;property name=\"persistenceUnitJndiName\"&gt;java:/comp/emf/"
+"bookingPersistence&lt;/property&gt;\n"
+"&lt;/component&gt;\n"
+"\n"
+"&lt;component name=\"userDatabase\"\n"
+"          class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"    &lt;property name=\"persistenceUnitJndiName\"&gt;java:/comp/emf/"
+"userPersistence&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1087
+#, no-c-format
+msgid ""
+"The Seam component names are <literal>bookingDatabase</literal> and "
+"<literal>userDatabase</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1092
+#, no-c-format
+msgid "&lt;entityManager&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1093
+#, no-c-format
+msgid "org.jboss.seam.core.ManagedPersistenceContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1095
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed <literal>EntityManager</"
+"literal> with an extended persistence context."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1100
+#, no-c-format
+msgid ""
+"<literal>&lt;entityManager&gt;.entityManagerFactory</literal> &mdash; a "
+"value binding expression that evaluates to an instance of "
+"<literal>EntityManagerFactory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1103
+#, no-c-format
+msgid ""
+"<literal>&lt;entityManager&gt;.persistenceUnitJndiName</literal> &mdash; the "
+"JNDI name of the entity manager factory, default to <literal>java:/&lt;"
+"managedPersistenceContext&gt;</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1111
+#, no-c-format
+msgid "&lt;entityManagerFactory&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1112
+#, no-c-format
+msgid "org.jboss.seam.core.EntityManagerFactory"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1114
+#, no-c-format
+msgid ""
+"Manages a JPA <literal>EntityManagerFactory</literal>. This is most useful "
+"when using JPA outside of an EJB 3.0 supporting environment."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1119
+#, no-c-format
+msgid ""
+"<literal>entityManagerFactory.persistenceUnitName</literal> &mdash; the name "
+"of the persistence unit."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1124 Components.xml:1162
+#, no-c-format
+msgid "See the API JavaDoc for further configuration properties."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1130
+#, no-c-format
+msgid "&lt;session&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1131
+#, no-c-format
+msgid "org.jboss.seam.core.ManagedSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1133
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed Hibernate "
+"<literal>Session</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1138
+#, no-c-format
+msgid ""
+"<literal>&lt;session&gt;.sessionFactory</literal> &mdash; a value binding "
+"expression that evaluates to an instance of <literal>SessionFactory</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1141
+#, no-c-format
+msgid ""
+"<literal>&lt;session&gt;.sessionFactoryJndiName</literal> &mdash; the JNDI "
+"name of the session factory, default to <literal>java:/&lt;managedSession&gt;"
+"</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1149
+#, no-c-format
+msgid "&lt;sessionFactory&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1150
+#, no-c-format
+msgid "org.jboss.seam.core.HibernateSessionFactory"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1152
+#, no-c-format
+msgid "Manages a Hibernate <literal>SessionFactory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1157
+#, no-c-format
+msgid ""
+"<literal>&lt;sessionFactory&gt;.cfgResourceName</literal> &mdash; the path "
+"to the configuration file. Default to <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1168
+#, no-c-format
+msgid "&lt;managedQueueSender&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1169
+#, no-c-format
+msgid "org.jboss.seam.jms.ManagedQueueSender"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1171
+#, no-c-format
+msgid ""
+"Manager component for an event scoped managed JMS <literal>QueueSender</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1176
+#, no-c-format
+msgid ""
+"<literal>&lt;managedQueueSender&gt;.queueJndiName</literal> &mdash; the JNDI "
+"name of the JMS queue."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1184
+#, no-c-format
+msgid "&lt;managedTopicPublisher&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1185
+#, no-c-format
+msgid "org.jboss.seam.jms.ManagedTopicPublisher"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1187
+#, no-c-format
+msgid ""
+"Manager component for an event scoped managed JMS <literal>TopicPublisher</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1192
+#, no-c-format
+msgid ""
+"<literal>&lt;managedTopicPublisher&gt;.topicJndiName</literal> &mdash; the "
+"JNDI name of the JMS topic."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1200
+#, no-c-format
+msgid "&lt;managedWorkingMemory&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1201
+#, no-c-format
+msgid "org.jboss.seam.drools.ManagedWorkingMemory"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1203
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed Drools "
+"<literal>WorkingMemory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1208
+#, no-c-format
+msgid ""
+"<literal>&lt;managedWorkingMemory&gt;.ruleBase</literal> &mdash; a value "
+"expression that evaluates to an instance of <literal>RuleBase</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1216
+#, no-c-format
+msgid "&lt;ruleBase&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1217
+#, no-c-format
+msgid "org.jboss.seam.drools.RuleBase"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1219
+#, no-c-format
+msgid ""
+"Manager component for an application scoped Drools <literal>RuleBase</"
+"literal>. <emphasis>Note that this is not really intended for production "
+"usage, since it does not support dynamic installation of new rules.</"
+"emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1224
+#, no-c-format
+msgid ""
+"<literal>&lt;ruleBase&gt;.ruleFiles</literal> &mdash; a list of files "
+"containing Drools rules."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1227
+#, no-c-format
+msgid ""
+"<literal>&lt;ruleBase&gt;.dslFile</literal> &mdash; a Drools DSL definition."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1235
+#, no-c-format
+msgid "&lt;entityHome&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1236
+#, no-c-format
+msgid "org.jboss.seam.framework.EntityHome"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1240
+#, no-c-format
+msgid "&lt;hibernateEntityHome&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1241
+#, no-c-format
+msgid "org.jboss.seam.framework.HibernateEntityHome"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1245
+#, no-c-format
+msgid "&lt;entityQuery&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1246
+#, no-c-format
+msgid "org.jboss.seam.framework.EntityQuery"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1250
+#, no-c-format
+msgid "&lt;hibernateEntityQuery&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1251
+#, no-c-format
+msgid "org.jboss.seam.framework.HibernateEntityQuery"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Concepts.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Concepts.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Concepts.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1922 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Concepts.xml:10
+#, no-c-format
+msgid "The contextual component model"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:11
+#, no-c-format
+msgid ""
+"The two core concepts in Seam are the notion of a <emphasis>context</"
+"emphasis> and the notion of a <emphasis>component</emphasis>. Components are "
+"stateful objects, usually EJBs, and an instance of a component is associated "
+"with a context, and given a name in that context. <emphasis>Bijection</"
+"emphasis> provides a mechanism for aliasing internal component names "
+"(instance variables) to contextual names, allowing component trees to be "
+"dynamically assembled, and reassembled by Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:14
+#, no-c-format
+msgid "Let's start by describing the contexts built in to Seam."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:17
+#, no-c-format
+msgid "Seam contexts"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:18
+#, no-c-format
+msgid ""
+"Seam contexts are created and destroyed by the framework. The application "
+"does not control context demarcation via explicit Java API calls. Context "
+"are usually implicit. In some cases, however, contexts are demarcated via "
+"annotations."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:21
+#, no-c-format
+msgid "The basic Seam contexts are:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:26
+#, no-c-format
+msgid "<para>Stateless context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:31
+#, no-c-format
+msgid "Event (or request) context"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:36 Concepts.xml:151
+#, no-c-format
+msgid "<para>Page context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:41 Concepts.xml:156
+#, no-c-format
+msgid "<para>Conversation context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:46 Concepts.xml:161
+#, no-c-format
+msgid "<para>Session context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:51 Concepts.xml:166
+#, no-c-format
+msgid "<para>Business process context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:56 Concepts.xml:171
+#, no-c-format
+msgid "<para>Application context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:61
+#, no-c-format
+msgid ""
+"You will recognize some of these contexts from servlet and related "
+"specifications. However, two of them might be new to you: "
+"<emphasis>conversation context</emphasis>, and <emphasis>business process "
+"context</emphasis>. One reason state management in web applications is so "
+"fragile and error-prone is that the three built-in contexts (request, "
+"session and application) are not especially meaningful from the point of "
+"view of the business logic. A user login session, for example, is a fairly "
+"arbitrary construct in terms of the actual application work flow. Therefore, "
+"most Seam components are scoped to the conversation or business process "
+"contexts, since they are the contexts which are most meaningful in terms of "
+"the application."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:64
+#, no-c-format
+msgid "Let's look at each context in turn."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:67
+#, no-c-format
+msgid "<title>Stateless context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:68
+#, no-c-format
+msgid ""
+"Components which are truly stateless (stateless session beans, primarily) "
+"always live in the stateless context (this is really a non-context). "
+"Stateless components are not very interesting, and are arguably not very "
+"object-oriented. Nevertheless, they are important and often useful."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:71
+#, no-c-format
+msgid "<title>Event context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:72
+#, no-c-format
+msgid ""
+"The event context is the \"narrowest\" stateful context, and is a "
+"generalization of the notion of the web request context to cover other kinds "
+"of events. Nevertheless, the event context associated with the lifecycle of "
+"a JSF request is the most important example of an event context, and the one "
+"you will work with most often. Components associated with the event context "
+"are destroyed at the end of the request, but their state is available and "
+"well-defined for at least the lifecycle of the request."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:75
+#, no-c-format
+msgid ""
+"When you invoke a Seam component via RMI, or Seam Remoting, the event "
+"context is created and destroyed just for the invocation."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:78
+#, no-c-format
+msgid "<title>Page context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:79
+#, no-c-format
+msgid ""
+"The page context allows you to associate state with a particular instance of "
+"a rendered page. You can initialize state in your event listener, or while "
+"actually rendering the page, and then have access to it from any event that "
+"originates from that page. This is especially useful for functionality like "
+"clickable lists, where the list is backed by changing data on the server "
+"side. The state is actually serialized to the client, so this construct is "
+"extremely robust with respect to multi-window operation and the back button."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:82
+#, no-c-format
+msgid "<title>Conversation context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:83
+#, no-c-format
+msgid ""
+"The conversation context is a truly central concept in Seam. A "
+"<emphasis>conversation</emphasis> is a unit of work from the point of view "
+"of the user. It might span several interactions with the user, several "
+"requests, and several database transactions. But to the user, a conversation "
+"solves a single problem. For example, \"book hotel\", \"approve contract\", "
+"\"create order\" are all conversations. You might like to think of a "
+"conversation implementing a single \"use case\" or \"user story\", but the "
+"relationship is not necessarily quite exact."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:86
+#, no-c-format
+msgid ""
+"A conversation holds state associated with \"what the user is doing now, in "
+"this window\". A single user may have multiple conversations in progress at "
+"any point in time, usually in multiple windows. The conversation context "
+"allows us to ensure that state from the different conversations does not "
+"collide and cause bugs."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:89
+#, no-c-format
+msgid ""
+"It might take you some time to get used to thinking of applications in terms "
+"of conversations. But once you get used to it, we think you'll love the "
+"notion, and never be able to not think in terms of conversations again!"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:92
+#, no-c-format
+msgid ""
+"Some conversations last for just a single request. Conversations that span "
+"multiple requests must be demarcated using annotations provided by Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:95
+#, no-c-format
+msgid ""
+"Some conversations are also <emphasis>tasks</emphasis>. A task is a "
+"conversation that is significant in terms of a long-running business "
+"process, and has the potential to trigger a business process state "
+"transition when it is successfully completed. Seam provides a special set of "
+"annotations for task demarcation."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:98
+#, no-c-format
+msgid ""
+"Conversations may be <emphasis>nested</emphasis>, with one conversation "
+"taking place \"inside\" a wider conversation. This is an advanced feature."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:101
+#, no-c-format
+msgid ""
+"Usually, conversation state is actually held by Seam in the servlet session "
+"between requests. Seam implements configurable <emphasis>conversation "
+"timeout</emphasis>, automatically destroying inactive conversations, and "
+"thus ensuring that the state held by a single user login session does not "
+"grow without bound if the user abandons conversations."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:104
+#, no-c-format
+msgid ""
+"Seam serializes processing of concurrent requests that take place in the "
+"same long-running conversation context, in the same process."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:107
+#, no-c-format
+msgid ""
+"Alternatively, Seam may be configured to keep conversational state in the "
+"client browser."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:110
+#, no-c-format
+msgid "<title>Session context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:111
+#, no-c-format
+msgid ""
+"A session context holds state associated with the user login session. While "
+"there are some cases where it is useful to share state between several "
+"conversations, we generally frown on the use of session context for holding "
+"components other than global information about the logged in user."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:114
+#, no-c-format
+msgid ""
+"In a JSR-168 portal environment, the session context represents the portlet "
+"session."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:117
+#, no-c-format
+msgid "<title>Business process context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:118
+#, no-c-format
+msgid ""
+"The business process context holds state associated with the long running "
+"business process. This state is managed and made persistent by the BPM "
+"engine (JBoss jBPM). The business process spans multiple interactions with "
+"multiple users, so this state is shared between multiple users, but in a "
+"well-defined manner. The current task determines the current business "
+"process instance, and the lifecycle of the business process is defined "
+"externally using a <emphasis>process definition language</emphasis>, so "
+"there are no special annotations for business process demarcation."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:121
+#, no-c-format
+msgid "<title>Application context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:122
+#, no-c-format
+msgid ""
+"The application context is the familiar servlet context from the servlet "
+"spec. Application context is mainly useful for holding static information "
+"such as configuration data, reference data or metamodels. For example, Seam "
+"stores its own configuration and metamodel in the application context."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:125
+#, no-c-format
+msgid "Context variables"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:126
+#, no-c-format
+msgid ""
+"A context defines a namespace, a set of <emphasis>context variables</"
+"emphasis>. These work much the same as session or request attributes in the "
+"servlet spec. You may bind any value you like to a context variable, but "
+"usually we bind Seam component instances to context variables."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:129
+#, no-c-format
+msgid ""
+"So, within a context, a component instance is identified by the context "
+"variable name (this is usually, but not always, the same as the component "
+"name). You may programatically access a named component instance in a "
+"particular scope via the <literal>Contexts</literal> class, which provides "
+"access to several thread-bound instances of the <literal>Context</literal> "
+"interface:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:132
+#, no-c-format
+msgid "User user = (User) Contexts.getSessionContext().get(\"user\");"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:133
+#, no-c-format
+msgid "You may also set or change the value associated with a name:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:136
+#, no-c-format
+msgid "Contexts.getSessionContext().set(\"user\", user);"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:137
+#, no-c-format
+msgid ""
+"Usually, however, we obtain components from a context via injection, and put "
+"component instances into a context via outjection."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:140
+#, no-c-format
+msgid "Context search priority"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:141
+#, no-c-format
+msgid ""
+"Sometimes, as above, component instances are obtained from a particular "
+"known scope. Other times, all stateful scopes are searched, in "
+"<emphasis>priority order</emphasis>. The order is as follows:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:146
+#, no-c-format
+msgid "<para>Event context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:176
+#, no-c-format
+msgid ""
+"You can perform a priority search by calling <literal>Contexts."
+"lookupInStatefulContexts()</literal>. Whenever you access a component by "
+"name from a JSF page, a priority search occurs."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:179
+#, no-c-format
+msgid "Concurrency model"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:180
+#, no-c-format
+msgid ""
+"Neither the servlet nor EJB specifications define any facilities for "
+"managing concurrent requests originating from the same client. The servlet "
+"container simply lets all threads run concurrently and leaves enforcing "
+"threadsafeness to application code. The EJB container allows stateless "
+"components to be accessed concurrently, and throws an exception if multiple "
+"threads access a stateful session bean."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:183
+#, no-c-format
+msgid ""
+"This behavior might have been okay in old-style web applications which were "
+"based around fine-grained, synchronous requests. But for modern applications "
+"which make heavy use of many fine-grained, asynchronous (AJAX) requests, "
+"concurrency is a fact of life, and must be supported by the programming "
+"model. Seam weaves a concurrency management layer into its context model."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:186
+#, no-c-format
+msgid ""
+"The Seam session and application contexts are multithreaded. Seam will allow "
+"concurrent requests in a context to be processed concurrently. The event and "
+"page contexts are by nature single threaded. The business process context is "
+"strictly speaking multi-threaded, but in practice concurrency is "
+"sufficiently rare that this fact may be disregarded most of the time. "
+"Finally, Seam enforces a <emphasis>single thread per conversation per "
+"process</emphasis> model for the conversation context by serializing "
+"concurrent requests in the same long-running conversation context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:189
+#, no-c-format
+msgid ""
+"Since the session context is multithreaded, and often contains volatile "
+"state, session scope components are always protected by Seam from concurrent "
+"access. Seam serializes requests to session scope session beans and "
+"JavaBeans by default (and detects and breaks any deadlocks that occur). This "
+"is not the default behaviour for application scoped components however, "
+"since application scoped components do not usually hold volatile state and "
+"because synchronization at the global level is <emphasis>extremely</"
+"emphasis> expensive. However, you can force a serialized threading model on "
+"any session bean or JavaBean component by adding the <literal>@Synchronized</"
+"literal> annotation."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:192
+#, no-c-format
+msgid ""
+"This concurrency model means that AJAX clients can safely use volatile "
+"session and conversational state, without the need for any special work on "
+"the part of the developer."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:195
+#, no-c-format
+msgid "Seam components"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:196
+#, no-c-format
+msgid ""
+"Seam components are POJOs (Plain Old Java Objects). In particular, they are "
+"JavaBeans or EJB 3.0 enterprise beans. While Seam does not require that "
+"components be EJBs and can even be used without an EJB 3.0 compliant "
+"container, Seam was designed with EJB 3.0 in mind and includes deep "
+"integration with EJB 3.0. Seam supports the following <emphasis>component "
+"types</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:201
+#, no-c-format
+msgid "EJB 3.0 stateless session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:206
+#, no-c-format
+msgid "EJB 3.0 stateful session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:211
+#, no-c-format
+msgid "EJB 3.0 entity beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:216
+#, no-c-format
+msgid "<para>JavaBeans</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:221
+#, no-c-format
+msgid "EJB 3.0 message-driven beans"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:226
+#, no-c-format
+msgid "Stateless session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:227
+#, no-c-format
+msgid ""
+"Stateless session bean components are not able to hold state across multiple "
+"invocations. Therefore, they usually work by operating upon the state of "
+"other components in the various Seam contexts. They may be used as JSF "
+"action listeners, but cannot provide properties to JSF components for "
+"display."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:230
+#, no-c-format
+msgid "Stateless session beans always live in the stateless context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:233
+#, no-c-format
+msgid ""
+"Stateless session beans are the least interesting kind of Seam component."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:236
+#, no-c-format
+msgid "Stateful session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:237
+#, no-c-format
+msgid ""
+"Stateful session bean components are able to hold state not only across "
+"multiple invocations of the bean, but also across multiple requests. "
+"Application state that does not belong in the database should usually be "
+"held by stateful session beans. This is a major difference between Seam and "
+"many other web application frameworks. Instead of sticking information about "
+"the current conversation directly in the <literal>HttpSession</literal>, you "
+"should keep it in instance variables of a stateful session bean that is "
+"bound to the conversation context. This allows Seam to manage the lifecycle "
+"of this state for you, and ensure that there are no collisions between state "
+"relating to different concurrent conversations."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:240
+#, no-c-format
+msgid ""
+"Stateful session beans are often used as JSF action listener, and as backing "
+"beans that provide properties to JSF components for display or form "
+"submission."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:243
+#, no-c-format
+msgid ""
+"By default, stateful session beans are bound to the conversation context. "
+"They may never be bound to the page or stateless contexts."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:246
+#, no-c-format
+msgid ""
+"Concurrent requests to session-scoped stateful session beans are always "
+"serialized by Seam."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:249
+#, no-c-format
+msgid "Entity beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:250
+#, no-c-format
+msgid ""
+"Entity beans may be bound to a context variable and function as a seam "
+"component. Because entities have a persistent identity in addition to their "
+"contextual identity, entity instances are usually bound explicitly in Java "
+"code, rather than being instantiated implicitly by Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:253
+#, no-c-format
+msgid ""
+"Entity bean components do not support bijection or context demarcation. Nor "
+"does invocation of an entity bean trigger validation."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:256
+#, no-c-format
+msgid ""
+"Entity beans are not usually used as JSF action listeners, but do often "
+"function as backing beans that provide properties to JSF components for "
+"display or form submission. In particular, it is common to use an entity as "
+"a backing bean, together with a stateless session bean action listener to "
+"implement create/update/delete type functionality."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:259
+#, no-c-format
+msgid ""
+"By default, entity beans are bound to the conversation context. They may "
+"never be bound to the stateless context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:262
+#, no-c-format
+msgid ""
+"Note that it in a clustered environment is somewhat less efficient to bind "
+"an entity bean directly to a conversation or session scoped Seam context "
+"variable than it would be to hold a reference to the entity bean in a "
+"stateful session bean. For this reason, not all Seam applications define "
+"entity beans to be Seam components."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:265
+#, no-c-format
+msgid "<title>JavaBeans</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:266
+#, no-c-format
+msgid ""
+"Javabeans may be used just like a stateless or stateful session bean. "
+"However, they do not provide the functionality of a session bean "
+"(declarative transaction demarcation, declarative security, efficient "
+"clustered state replication, EJB 3.0 persistence, timeout methods, etc)."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:269
+#, no-c-format
+msgid ""
+"In a later chapter, we show you how to use Seam and Hibernate without an EJB "
+"container. In this use case, components are JavaBeans instead of session "
+"beans. Note, however, that in many application servers it is somewhat less "
+"efficient to cluster conversation or session scoped Seam JavaBean components "
+"than it is to cluster stateful session bean components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:272
+#, no-c-format
+msgid "By default, JavaBeans are bound to the event context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:275
+#, no-c-format
+msgid ""
+"Concurrent requests to session-scoped JavaBeans are always serialized by "
+"Seam."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:278
+#, no-c-format
+msgid "Message-driven beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:279
+#, no-c-format
+msgid ""
+"Message-driven beans may function as a seam component. However, message-"
+"driven beans are called quite differently to other Seam components - instead "
+"of invoking them via the context variable, they listen for messages sent to "
+"a JMS queue or topic."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:282
+#, no-c-format
+msgid ""
+"Message-driven beans may not be bound to a Seam context. Nor do they have "
+"access to the session or conversation state of their \"caller\". However, "
+"they do support bijection and some other Seam functionality."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:285
+#, no-c-format
+msgid "Interception"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:286
+#, no-c-format
+msgid ""
+"In order to perform its magic (bijection, context demarcation, validation, "
+"etc), Seam must intercept component invocations. For JavaBeans, Seam is in "
+"full control of instantiation of the component, and no special configuration "
+"is needed. For entity beans, interception is not required since bijection "
+"and context demarcation are not defined. For session beans, we must register "
+"an EJB interceptor for the session bean component. We could use an "
+"annotation, as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:289
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:290
+#, no-c-format
+msgid ""
+"But a much better way is to define the interceptor in <literal>ejb-jar.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:293
+#, no-c-format
+msgid ""
+"&lt;interceptors&gt;\n"
+"   &lt;interceptor&gt;\n"
+"      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"   &lt;/interceptor&gt;\n"
+"&lt;/interceptors&gt;\n"
+"   \n"
+"&lt;assembly-descriptor&gt;\n"
+"   &lt;interceptor-binding&gt;\n"
+"      &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"   &lt;/interceptor-binding&gt;\n"
+"&lt;/assembly-descriptor&gt;"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:294
+#, no-c-format
+msgid "Component names"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:295
+#, no-c-format
+msgid ""
+"All seam components need a name. We can assign a name to a component using "
+"the <literal>@Name</literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:298
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:299
+#, no-c-format
+msgid ""
+"This name is the <emphasis>seam component name</emphasis> and is not related "
+"to any other name defined by the EJB specification. However, seam component "
+"names work just like JSF managed bean names and you can think of the two "
+"concepts as identical."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:302
+#, no-c-format
+msgid ""
+"<literal>@Name</literal> is not the only way to define a component name, but "
+"we always need to specify the name <emphasis>somewhere</emphasis>. If we "
+"don't, then none of the other Seam annotations will function."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:305
+#, no-c-format
+msgid ""
+"Just like in JSF, a seam component instance is usually bound to a context "
+"variable with the same name as the component name. So, for example, we would "
+"access the <literal>LoginAction</literal> using <literal>Contexts."
+"getStatelessContext().get(\"loginAction\")</literal>. In particular, "
+"whenever Seam itself instantiates a component, it binds the new instance to "
+"a variable with the component name. However, again like JSF, it is possible "
+"for the application to bind a component to some other context variable by "
+"programmatic API call. This is only useful if a particular component serves "
+"more than one role in the system. For example, the currently logged in "
+"<literal>User</literal> might be bound to the <literal>currentUser</literal> "
+"session context variable, while a <literal>User</literal> that is the "
+"subject of some administration functionality might be bound to the "
+"<literal>user</literal> conversation context variable."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:308
+#, no-c-format
+msgid ""
+"For very large applications, and for built-in seam components, qualified "
+"names are often used."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:311
+#, no-c-format
+msgid ""
+"@Name(\"com.jboss.myapp.loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:312
+#, no-c-format
+msgid ""
+"We may use the qualified component name both in Java code and in JSF's "
+"expression language:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:315
+#, no-c-format
+msgid ""
+"&lt;h:commandButton type=\"submit\" value=\"Login\"\n"
+"                 action=\"#{com.jboss.myapp.loginAction.login}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:316
+#, no-c-format
+msgid ""
+"Since this is noisy, Seam also provides a means of aliasing a qualified name "
+"to a simple name. Add a line like this to the <literal>components.xml</"
+"literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:319
+#, no-c-format
+msgid ""
+"&lt;factory name=\"loginAction\" scope=\"STATELESS\" value=\"#{com.jboss."
+"myapp.loginAction}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:320
+#, no-c-format
+msgid ""
+"All of the built-in Seam components have qualified names, but most of them "
+"are aliased to a simple name by the <literal>components.xml</literal> file "
+"included in the Seam jar."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:323
+#, no-c-format
+msgid "Defining the component scope"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:324
+#, no-c-format
+msgid ""
+"We can override the default scope (context) of a component using the "
+"<literal>@Scope</literal> annotation. This lets us define what context a "
+"component instance is bound to, when it is instantiated by Seam."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:327
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(SESSION)\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:328
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.ScopeType</literal> defines an enumeration of "
+"possible scopes."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:331
+#, no-c-format
+msgid "Components with multiple roles"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:332
+#, no-c-format
+msgid ""
+"Some Seam component classes can fulfill more than one role in the system. "
+"For example, we often have a <literal>User</literal> class which is usually "
+"used as a session-scoped component representing the current user but is used "
+"in user administration screens as a conversation-scoped component. The "
+"<literal>@Role</literal> annotation lets us define an additional named role "
+"for a component, with a different scope&mdash;it lets us bind the same "
+"component class to different context variables. (Any Seam component "
+"<emphasis>instance</emphasis> may be bound to multiple context variables, "
+"but this lets us do it at the class level, and take advantage of auto-"
+"instantiation.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:335
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(CONVERSATION)\n"
+"@Role(name=\"currentUser\", scope=SESSION)\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:336
+#, no-c-format
+msgid ""
+"The <literal>@Roles</literal> annotation lets us specify as many additional "
+"roles as we like."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:339
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(CONVERSATION)\n"
+"@Roles({@Role(name=\"currentUser\", scope=SESSION)\n"
+"        @Role(name=\"tempUser\", scope=EVENT)})\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:340
+#, no-c-format
+msgid "Built-in components"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:341
+#, no-c-format
+msgid ""
+"Like many good frameworks, Seam eats its own dogfood and is implemented "
+"mostly as a set of built-in Seam interceptors (see later) and Seam "
+"components. This makes it easy for applications to interact with built-in "
+"components at runtime or even customize the basic functionality of Seam by "
+"replacing the built-in components with custom implementations. The built-in "
+"components are defined in the Seam namespace <literal>org.jboss.seam.core</"
+"literal> and the Java package of the same name."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:344
+#, no-c-format
+msgid ""
+"The built-in components may be injected, just like any Seam components, but "
+"they also provide convenient static <literal>instance()</literal> methods:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:347
+#, no-c-format
+msgid "FacesMessages.instance().add(\"Welcome back, #{user.name}!\");"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:348
+#, no-c-format
+msgid ""
+"Seam was designed to integrate tightly in a Java EE 5 environment. However, "
+"we understand that there are many projects which are not running in a full "
+"EE environment. We also realize the critical importance of easy unit and "
+"integration testing using frameworks such as TestNG and JUnit. So, we've "
+"made it easy to run Seam in Java SE environments by allowing you to boostrap "
+"certain critical infrastructure normally only found in EE environments by "
+"installing built-in Seam components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:351
+#, no-c-format
+msgid ""
+"For example, you can run your EJB3 components in Tomcat or an integration "
+"test suite just by installing the built-in component <literal>org.jboss.seam."
+"core.ejb</literal>, which automatically bootstraps the JBoss Embeddable EJB3 "
+"container and deploys your EJB components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:354
+#, no-c-format
+msgid ""
+"Or, if you're not quite ready for the Brave New World of EJB 3.0, you can "
+"write a Seam application that uses only JavaBean components, together with "
+"Hibernate3 for persistence, by installing a built-in component that manages "
+"a Hibernate <literal>SessionFactory</literal>. When using Hibernate outside "
+"of a J2EE environment, you will also probably need a JTA transaction manager "
+"and JNDI server, which are available via the built-in component <literal>org."
+"jboss.seam.core.microcontainer</literal>. This lets you use the bulletproof "
+"JTA/JCA pooling datasource from JBoss application server in an SE "
+"environment like Tomcat!"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:357
+#, no-c-format
+msgid "Bijection"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:358
+#, no-c-format
+msgid ""
+"<emphasis>Dependency injection</emphasis> or <emphasis>inversion of control</"
+"emphasis> is by now a familiar concept to most Java developers. Dependency "
+"injection allows a component to obtain a reference to another component by "
+"having the container \"inject\" the other component to a setter method or "
+"instance variable. In all dependency injection implementations that we have "
+"seen, injection occurs when the component is constructed, and the reference "
+"does not subsequently change for the lifetime of the component instance. For "
+"stateless components, this is reasonable. From the point of view of a "
+"client, all instances of a particular stateless component are "
+"interchangeable. On the other hand, Seam emphasizes the use of stateful "
+"components. So traditional dependency injection is no longer a very useful "
+"construct. Seam introduces the notion of <emphasis>bijection</emphasis> as a "
+"generalization of injection. In contrast to injection, bijection is:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:363
+#, no-c-format
+msgid ""
+"<emphasis>contextual</emphasis> - bijection is used to assemble stateful "
+"components from various different contexts (a component from a \"wider\" "
+"context may even have a reference to a component from a \"narrower\" context)"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:368
+#, no-c-format
+msgid ""
+"<emphasis>bidirectional</emphasis> - values are injected from context "
+"variables into attributes of the component being invoked, and also "
+"<emphasis>outjected</emphasis> from the component attributes back out to the "
+"context, allowing the component being invoked to manipulate the values of "
+"contextual variables simply by setting its own instance variables"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:373
+#, no-c-format
+msgid ""
+"<emphasis>dynamic</emphasis> - since the value of contextual variables "
+"changes over time, and since Seam components are stateful, bijection takes "
+"place every time a component is invoked"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:378
+#, no-c-format
+msgid ""
+"In essence, bijection lets you alias a context variable to a component "
+"instance variable, by specifying that the value of the instance variable is "
+"injected, outjected, or both. Of course, we use annotations to enable "
+"bijection."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:381
+#, no-c-format
+msgid ""
+"The <literal>@In</literal> annotation specifies that a value should be "
+"injected, either into an instance variable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:384
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:385
+#, no-c-format
+msgid "or into a setter method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:388
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @In\n"
+"    public void setUser(User user) {\n"
+"        this.user=user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:389
+#, no-c-format
+msgid ""
+"By default, Seam will do a priority search of all contexts, using the name "
+"of the property or instance variable that is being injected. You may wish to "
+"specify the context variable name explicitly, using, for example, "
+"<literal>@In(\"currentUser\")</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:392
+#, no-c-format
+msgid ""
+"If you want Seam to create an instance of the component when there is no "
+"existing component instance bound to the named context variable, you should "
+"specify <literal>@In(create=true)</literal>. If the value is optional (it "
+"can be null), specify <literal>@In(required=false)</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:395
+#, no-c-format
+msgid ""
+"For some components, it can be repetitive to have to specify <literal>@In"
+"(create=true)</literal> everywhere they are used. In such cases, you can "
+"annotate the component <literal>@AutoCreate</literal>, and then it will "
+"always be created, whenever needed, even without the explicit use of "
+"<literal>create=true</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:398
+#, no-c-format
+msgid "You can even inject the value of an expression:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:401
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In(\"#{user.username}\") String username;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:402
+#, no-c-format
+msgid ""
+"(There is much more information about component lifecycle and injection in "
+"the next chapter.)"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:405
+#, no-c-format
+msgid ""
+"The <literal>@Out</literal> annotation specifies that an attribute should be "
+"outjected, either from an instance variable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:408
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @Out User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:409
+#, no-c-format
+msgid "or from a getter method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:412
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @Out\n"
+"    public User getUser() {\n"
+"        return user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:413
+#, no-c-format
+msgid "An attribute may be both injected and outjected:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:416
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In @Out User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:417
+#, no-c-format
+msgid "<para>or:</para>"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:420
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @In\n"
+"    public void setUser(User user) {\n"
+"        this.user=user;\n"
+"    }\n"
+"    \n"
+"    @Out\n"
+"    public User getUser() {\n"
+"        return user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:421
+#, no-c-format
+msgid "Lifecycle methods"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:422
+#, no-c-format
+msgid ""
+"Session bean and entity bean Seam components support all the usual EJB 3.0 "
+"lifecycle callback (<literal>@PostConstruct</literal>, <literal>@PreDestroy</"
+"literal>, etc). Seam extends all of these callbacks except "
+"<literal>@PreDestroy</literal> to JavaBean components. But Seam also defines "
+"its own component lifecycle callbacks."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:425
+#, no-c-format
+msgid ""
+"The <literal>@Create</literal> method is called every time Seam instantiates "
+"a component. Unlike the <literal>@PostConstruct</literal> method, this "
+"method is called after the component is fully constructed by the EJB "
+"container, and has access to all the usual Seam functionality (bijection, "
+"etc). Components may define only one <literal>@Create</literal> method."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:428
+#, no-c-format
+msgid ""
+"The <literal>@Destroy</literal> method is called when the context that the "
+"Seam component is bound to ends. Components may define only one "
+"<literal>@Destroy</literal> method. Stateful session bean components "
+"<emphasis>must</emphasis> define a method annotated <literal>@Destroy "
+"@Remove</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:431
+#, no-c-format
+msgid ""
+"Finally, a related annotation is the <literal>@Startup</literal> annotation, "
+"which may be applied to any application or session scoped component. The "
+"<literal>@Startup</literal> annotation tells Seam to instantiate the "
+"component immediately, when the context begins, instead of waiting until it "
+"is first referenced by a client. It is possible to control the order of "
+"instantiation of startup components by specifying <literal>@Startup(depends="
+"{....})</literal>."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:434
+#, no-c-format
+msgid "Conditional installation"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:435
+#, no-c-format
+msgid ""
+"The <literal>@Install</literal> annotation lets you control conditional "
+"installation of components that are required in some deployment scenarios "
+"and not in others. This is useful if:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:440
+#, no-c-format
+msgid "You want to mock out some infrastructural component in tests."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:445
+#, no-c-format
+msgid ""
+"You want change the implementation of a component in certain deployment "
+"scenarios."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:450
+#, no-c-format
+msgid ""
+"You want to install some components only if their dependencies are available "
+"(useful for framework authors)."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:455
+#, no-c-format
+msgid ""
+"<literal>@Install</literal> works by letting you specify "
+"<emphasis>precedence</emphasis> and <emphasis>dependencies</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:458
+#, no-c-format
+msgid ""
+"The precedence of a component is a number that Seam uses to decide which "
+"component to install when there are multiple classes with the same component "
+"name in the classpath. Seam will choose the component with the higher "
+"precendence. There are some predefined precedence values:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:463
+#, no-c-format
+msgid ""
+"<literal>BUILT_IN</literal> &mdash; the lowest precedece components are the "
+"components built in to Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:468
+#, no-c-format
+msgid ""
+"<literal>FRAMEWORK</literal> &mdash; components defined by third-party "
+"frameworks may override built-in components, but are overridden by "
+"application components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:473
+#, no-c-format
+msgid ""
+"<literal>APPLICATION</literal> &mdash; the default precedence. This is "
+"appropriate for most application components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:478
+#, no-c-format
+msgid ""
+"<literal>DEPLOYMENT</literal> &mdash; for application components which are "
+"deployment-specific."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:483
+#, no-c-format
+msgid "<literal>MOCK</literal> &mdash; for mock objects used in testing."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:488
+#, no-c-format
+msgid ""
+"Suppose we have a component named <literal>messageSender</literal> that "
+"talks to a JMS queue."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:491
+#, no-c-format
+msgid ""
+"@Name(\"messageSender\") \n"
+"public class MessageSender {\n"
+"    public void sendMessage() {\n"
+"        //do something with JMS\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:492
+#, no-c-format
+msgid ""
+"In our unit tests, we don't have a JMS queue available, so we would like to "
+"stub out this method. We'll create a <emphasis>mock</emphasis> component "
+"that exists in the classpath when unit tests are running, but is never "
+"deployed with the application:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:495
+#, no-c-format
+msgid ""
+"@Name(\"messageSender\") \n"
+"@Install(precedence=MOCK)\n"
+"public class MockMessageSender extends MessageSender {\n"
+"    public void sendMessage() {\n"
+"        //do nothing!\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:496
+#, no-c-format
+msgid ""
+"The <literal>precedence</literal> helps Seam decide which version to use "
+"when it finds both components in the classpath."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:499
+#, no-c-format
+msgid ""
+"This is nice if we are able to control exactly which classes are in the "
+"classpath. But if I'm writing a reusable framework with many dependecies, I "
+"don't want to have to break that framework across many jars. I want to be "
+"able to decide which components to install depending upon what other "
+"components are installed, and upon what classes are available in the "
+"classpath. The <literal>@Install</literal> annotation also controls this "
+"functionality. Seam uses this mechanism internally to enable conditional "
+"installation of many of the built-in components. However, you probably won't "
+"need to use it in your application."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:502
+#, no-c-format
+msgid "Logging"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:503
+#, no-c-format
+msgid "Who is not totally fed up with seeing noisy code like this?"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:506
+#, no-c-format
+msgid ""
+"private static final Log log = LogFactory.getLog(CreateOrderAction.class);\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    if ( log.isDebugEnabled() ) {\n"
+"        log.debug(\"Creating new order for user: \" + user.username() + \n"
+"            \" product: \" + product.name() \n"
+"            + \" quantity: \" + quantity);\n"
+"    }\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:507
+#, no-c-format
+msgid ""
+"It is difficult to imagine how the code for a simple log message could "
+"possibly be more verbose. There is more lines of code tied up in logging "
+"than in the actual business logic! I remain totally astonished that the Java "
+"community has not come up with anything better in 10 years."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:510
+#, no-c-format
+msgid ""
+"Seam provides a logging API built on top of Apache commons-logging that "
+"simplifies this code significantly:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:513
+#, no-c-format
+msgid ""
+"@Logger private Log log;\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    log.debug(\"Creating new order for user: #0 product: #1 quantity: #2\", "
+"user.username(), \n"
+"       product.name(), quantity);\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:514
+#, no-c-format
+msgid ""
+"It doesn't matter if you declare the <literal>log</literal> variable static "
+"or not&mdash;it will work either way."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:517
+#, no-c-format
+msgid ""
+"Note that we don't need the noisy <literal>if ( log.isDebugEnabled() )</"
+"literal> guard, since string concatenation happens <emphasis>inside</"
+"emphasis> the <literal>debug()</literal> method. Note also that we don't "
+"usually need to specify the log category explicitly, since Seam knows what "
+"component it is injecting the <literal>Log</literal> into."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:520
+#, no-c-format
+msgid ""
+"If <literal>User</literal> and <literal>Product</literal> are Seam "
+"components available in the current contexts, it gets even better:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:523
+#, no-c-format
+msgid ""
+"@Logger private Log log;\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    log.debug(\"Creating new order for user: #{user.username} product: #"
+"{product.name}\n"
+"       quantity: #0\", quantity);\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:524
+#, no-c-format
+msgid ""
+"The <literal>Mutable</literal> interface and <literal>@ReadOnly</literal>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:525
+#, no-c-format
+msgid ""
+"Many application servers feature an amazingly broken implementation of "
+"<literal>HttpSession</literal> clustering, where changes to the state of "
+"mutable objects bound to the session are only replicated when the "
+"application calls <literal>setAttribute()</literal> explicitly. This is a "
+"source of bugs that can not effectively be tested for at development time, "
+"since they will only manifest when failover occurs. Furthermore, the actual "
+"replication message contains the entire serialized object graph bound to the "
+"session attribute, which is inefficient."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:528
+#, no-c-format
+msgid ""
+"Of course, EJB stateful session beans must perform automatic dirty checking "
+"and replication of mutable state and a sophisticated EJB container can "
+"introduce optimizations such as attribute-level replication. Unfortunately, "
+"not all Seam users have the good fortune to be working in an environment "
+"that supports EJB 3.0. So, for session and conversation scoped JavaBean and "
+"entity bean components, Seam provides an extra layer of cluster-safe state "
+"management over the top of the web container session clustering."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:531
+#, no-c-format
+msgid ""
+"For session or conversation scoped JavaBean components, Seam automatically "
+"forces replication to occur by calling <literal>setAttribute()</literal> "
+"once in every request that the component was invoked by the application. Of "
+"course, this strategy is inefficient for read-mostly components. You can "
+"control this behavior by implementing the <literal>org.jboss.seam.core."
+"Mutable</literal> interface, or by extending <literal>org.jboss.seam.core."
+"AbstractMutable</literal>, and writing your own dirty-checking logic inside "
+"the component. For example,"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:534
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class Account extends AbstractMutable\n"
+"{\n"
+"    private BigDecimal balance;\n"
+"    \n"
+"    public void setBalance(BigDecimal balance)\n"
+"    {\n"
+"        setDirty(this.balance, balance);\n"
+"        this.balance = balance;\n"
+"    }\n"
+"    \n"
+"    public BigDecimal getBalance()\n"
+"    {\n"
+"        return balance;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:535
+#, no-c-format
+msgid ""
+"Or, you can use the <literal>@ReadOnly</literal> annotation to achieve a "
+"similar effect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:538
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class Account\n"
+"{\n"
+"    private BigDecimal balance;\n"
+"    \n"
+"    public void setBalance(BigDecimal balance)\n"
+"    {\n"
+"        this.balance = balance;\n"
+"    }\n"
+"    \n"
+"    @ReadOnly\n"
+"    public BigDecimal getBalance()\n"
+"    {\n"
+"        return balance;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:539
+#, no-c-format
+msgid ""
+"For session or conversation scoped entity bean components, Seam "
+"automatically forces replication to occur by calling <literal>setAttribute()"
+"</literal> once in every request, <emphasis>unless the (conversation-scoped) "
+"entity is currently associated with a Seam-managed persistence context, in "
+"which case no replication is needed</emphasis>. This strategy is not "
+"necessarily efficient, so session or conversation scope entity beans should "
+"be used with care. You can always write a stateful session bean or JavaBean "
+"component to \"manage\" the entity bean instance. For example,"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:542
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"account\")\n"
+"public class AccountManager extends AbstractMutable\n"
+"{\n"
+"    private Account account; // an entity bean\n"
+"    \n"
+"    @Unwrap\n"
+"    public void getAccount()\n"
+"    {\n"
+"        return account;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:543
+#, no-c-format
+msgid ""
+"Note that the <literal>EntityHome</literal> class in the Seam Application "
+"Framework provides a great example of this pattern."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:546
+#, no-c-format
+msgid "Factory and manager components"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:547
+#, no-c-format
+msgid ""
+"We often need to work with objects that are not Seam components. But we "
+"still want to be able to inject them into our components using <literal>@In</"
+"literal> and use them in value and method binding expressions, etc. "
+"Sometimes, we even need to tie them into the Seam context lifecycle "
+"(<literal>@Destroy</literal>, for example). So the Seam contexts can contain "
+"objects which are not Seam components, and Seam provides a couple of nice "
+"features that make it easier to work with non-component objects bound to "
+"contexts."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:550
+#, no-c-format
+msgid ""
+"The <emphasis>factory component pattern</emphasis> lets a Seam component act "
+"as the instantiator for a non-component object. A <emphasis>factory method</"
+"emphasis> will be called when a context variable is referenced but has no "
+"value bound to it. We define factory methods using the <literal>@Factory</"
+"literal> annotation. The factory method binds a value to the context "
+"variable, and determines the scope of the bound value. There are two styles "
+"of factory method. The first style returns a value, which is bound to the "
+"context by Seam:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:553
+#, no-c-format
+msgid ""
+"@Factory(scope=CONVERSATION)\n"
+"public List&lt;Customer&gt; getCustomerList() { \n"
+"    return ... ;\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:554
+#, no-c-format
+msgid ""
+"The second style is a method of type <literal>void</literal> which binds the "
+"value to the context variable itself:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:557
+#, no-c-format
+msgid ""
+"@DataModel List&lt;Customer&gt; customerList;\n"
+"\n"
+"@Factory(\"customerList\")\n"
+"public void initCustomerList() { \n"
+"    customerList = ...  ;\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:558
+#, no-c-format
+msgid ""
+"In both cases, the factory method is called when we reference the "
+"<literal>customerList</literal> context variable and its value is null, and "
+"then has no further part to play in the lifecycle of the value. An even more "
+"powerful pattern is the <emphasis>manager component pattern</emphasis>. In "
+"this case, we have a Seam component that is bound to a context variable, "
+"that manages the value of the context variable, while remaining invisible to "
+"clients."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:561
+#, no-c-format
+msgid ""
+"A manager component is any component with an <literal>@Unwrap</literal> "
+"method. This method returns the value that will be visable to clients, and "
+"is called <emphasis>every time</emphasis> a context variable is referenced."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:564
+#, no-c-format
+msgid ""
+"@Name(\"customerList\")\n"
+"@Scope(CONVERSATION)\n"
+"public class CustomerListManager\n"
+"{\n"
+"    ...\n"
+"    \n"
+"    @Unwrap\n"
+"    public List&lt;Customer&gt; getCustomerList() { \n"
+"        return ... ;\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:565
+#, no-c-format
+msgid ""
+"This pattern is especially useful if we have some heavyweight object that "
+"needs a cleanup operation when the context ends. In this case, the manager "
+"component may perform cleanup in the <literal>@Destroy</literal> method."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Configuration.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Configuration.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Configuration.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1435 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Configuration.xml:10
+#, no-c-format
+msgid "Configuring Seam and packaging Seam applications"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:11
+#, no-c-format
+msgid ""
+"Configuration is a very boring topic and an extremely tedious pastime. "
+"Unfortunately, several lines of XML are required to integrate Seam into your "
+"JSF implementation and servlet container. There's no need to be too put off "
+"by the following sections; you'll never need to type any of this stuff "
+"yourself, since you can just copy and paste from the example applications!"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:14
+#, no-c-format
+msgid "Basic Seam configuration"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:15
+#, no-c-format
+msgid ""
+"First, let's look at the basic configuration that is needed whenever we use "
+"Seam with JSF."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:18
+#, no-c-format
+msgid "Integrating Seam with JSF and your servlet container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:19
+#, no-c-format
+msgid ""
+"Seam requires the following entry in your <literal>web.xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:22
+#, no-c-format
+msgid ""
+"&lt;listener&gt;\n"
+"    &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/listener-"
+"class&gt;\n"
+"&lt;/listener&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:23
+#, no-c-format
+msgid ""
+"This listener is responsible for bootstrapping Seam, and for destroying "
+"session and application contexts."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:26
+#, no-c-format
+msgid ""
+"To integrate with the JSF request lifecycle, we also need a JSF "
+"<literal>PhaseListener</literal> registered in in the <literal>faces-config."
+"xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:29
+#, no-c-format
+msgid ""
+"&lt;lifecycle&gt;\n"
+"    &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-"
+"listener&gt;\n"
+"&lt;/lifecycle&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:30
+#, no-c-format
+msgid ""
+"The actual listener class here varies depending upon how you want to manage "
+"transaction demarcation (more on this below)."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:33
+#, no-c-format
+msgid ""
+"If you are using Sun's JSF 1.2 reference implementation, you should also add "
+"this to <literal>faces-config.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:36
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;el-resolver&gt;org.jboss.seam.jsf.SeamELResolver&lt;/el-"
+"resolver&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:37
+#, no-c-format
+msgid ""
+"(This line should not strictly speaking be necessary, but it works around a "
+"minor bug in the RI.)"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:40
+#, no-c-format
+msgid ""
+"Some JSF implementations have a broken implementation of server-side state "
+"saving that interferes with Seam's conversation propagation. If you have "
+"problems with conversation propagation during form submissions, try "
+"switching to client-side state saving. You'll need this in <literal>web.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:43
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;client&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:44
+#, no-c-format
+msgid "Seam servlet filters"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:45
+#, no-c-format
+msgid ""
+"Seam doesn't need any servlet filters for basic operation. However, there "
+"are several features which depend upon the use of filters. To make things "
+"easier for you guys, Seam lets you add and configure servlet filters just "
+"like you would configure other built-in Seam components. To take advantage "
+"of this feature, we must first install a master filter in <literal>web.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:48
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;/*&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:49
+#, no-c-format
+msgid "Adding the master filter enables the following built-in filters."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:52
+#, no-c-format
+msgid "Exception handling"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:53
+#, no-c-format
+msgid ""
+"This filter provides the exception mapping functionality in <literal>pages."
+"xml</literal> (almost all applications will need this). It also takes care "
+"of rolling back uncommitted transactions when uncaught exceptions occur. "
+"(According to the Java EE specification, the web container should do this "
+"automatically, but we've found that this behavior cannot be relied upon in "
+"all application servers. And it is certainly not required of plain servlet "
+"engines like Tomcat.)"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:56
+#, no-c-format
+msgid ""
+"By default, the exception handling filter will process all requests, however "
+"this behavior may be adjusted by adding a <literal>&lt;web:exception-"
+"filter&gt;</literal> entry to <literal>components.xml</literal>, as shown in "
+"this example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:59
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:web=\"http://jboss.com/products/seam/web\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                    http://jboss.com/products/seam/core-1.2.xsd\n"
+"                 http://jboss.com/products/seam/components \n"
+"                     http://jboss.com/products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/web \n"
+"                     http://jboss.com/products/seam/web-1.2.xsd\"&gt;\n"
+"\n"
+"    &lt;web:exception-filter url-pattern=\"*.seam\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:62 Configuration.xml:77 Configuration.xml:99
+#: Configuration.xml:124
+#, no-c-format
+msgid ""
+"<literal>url-pattern</literal> &mdash; Used to specify which requests are "
+"filtered, the default is all requests."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:67
+#, no-c-format
+msgid "Conversation propagation with redirects"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:68
+#, no-c-format
+msgid ""
+"This filter allows Seam to propagate the conversation context across browser "
+"redirects. It intercepts any browser redirects and adds a request parameter "
+"that specifies the Seam conversation identifier."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:71
+#, no-c-format
+msgid ""
+"The redirect filter will process all requests by default, but this behavior "
+"can also be adjusted in <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:74
+#, no-c-format
+msgid "&lt;web:redirect-filter url-pattern=\"*.seam\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:82
+#, no-c-format
+msgid "Multipart form submissions"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:83
+#, no-c-format
+msgid ""
+"This feature is necessary when using the Seam file upload JSF control. It "
+"detects multipart form requests and processes them according to the "
+"multipart/form-data specification (RFC-2388). To override the default "
+"settings, add the following entry to <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:86
+#, no-c-format
+msgid ""
+"&lt;web:multipart-filter create-temp-files=\"true\" \n"
+"        max-request-size=\"1000000\" \n"
+"        url-pattern=\"*.seam\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:89
+#, no-c-format
+msgid ""
+"<literal>create-temp-files</literal> &mdash; If set to <literal>true</"
+"literal>, uploaded files are written to a temporary file (instead of held in "
+"memory). This may be an important consideration if large file uploads are "
+"expected. The default setting is <literal>false</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:94
+#, no-c-format
+msgid ""
+"<literal>max-request-size</literal> &mdash; If the size of a file upload "
+"request (determined by reading the <literal>Content-Length</literal> header "
+"in the request) exceeds this value, the request will be aborted. The default "
+"setting is 0 (no size limit)."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:104
+#, no-c-format
+msgid "Character encoding"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:105
+#, no-c-format
+msgid "Sets the character encoding of submitted form data."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:108 Configuration.xml:136
+#, no-c-format
+msgid ""
+"This filter is not installed by default and requires an entry in "
+"<literal>components.xml</literal> to enable it:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:111
+#, no-c-format
+msgid ""
+"&lt;web:character-encoding-filter encoding=\"UTF-16\" \n"
+"        override-client=\"true\" \n"
+"        url-pattern=\"*.seam\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:114
+#, no-c-format
+msgid "<literal>encoding</literal> &mdash; The encoding to use."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:119
+#, no-c-format
+msgid ""
+"<literal>override-client</literal> &mdash; If this is set to <literal>true</"
+"literal>, the request encoding will be set to whatever is specified by "
+"<literal>encoding</literal> no matter whether the request already specifies "
+"an encoding or not. If set to <literal>false</literal>, the request encoding "
+"will only be set if the request doesn't already specify an encoding. The "
+"default setting is <literal>false</literal>."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:129
+#, no-c-format
+msgid "Context management for custom servlets"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:130
+#, no-c-format
+msgid ""
+"Requests sent direct to some servlet other than the JSF servlet are not "
+"processed through the JSF lifecycle, so Seam provides a servlet filter that "
+"can be applied to any other servlet that needs access to Seam components."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:133
+#, no-c-format
+msgid ""
+"This filter allows custom servlets to interact with the Seam contexts. It "
+"sets up the Seam contexts at the beginning of each request, and tears them "
+"down at the end of the request. You should make sure that this filter is "
+"<emphasis>never</emphasis> applied to the JSF <literal>FacesServlet</"
+"literal>. Seam uses the phase listener for context management in a JSF "
+"request."
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:139
+#, no-c-format
+msgid "&lt;web:context-filter url-pattern=\"/media/*\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:142
+#, no-c-format
+msgid ""
+"<literal>url-pattern</literal> &mdash; Used to specify which requests are "
+"filtered, the default is all requests. If the url-pattern is specified for "
+"the context filter, then the filter will be enabled (unless explicitly "
+"disabled)."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:147
+#, no-c-format
+msgid ""
+"The context filter expects to find the conversation id of any conversation "
+"context in a request parameter named <literal>conversationId</literal>. You "
+"are responsible for ensuring that it gets sent in the request."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:150
+#, no-c-format
+msgid ""
+"You are also responsible for ensuring propagation of any new conversation id "
+"back to the client. Seam exposes the conversation id as a property of the "
+"built in component <literal>conversation</literal>."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:153
+#, no-c-format
+msgid "Integrating Seam with your EJB container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:154
+#, no-c-format
+msgid ""
+"We need to apply the <literal>SeamInterceptor</literal> to our Seam "
+"components. The simplest way to do this is to add the following interceptor "
+"binding to the <literal>&lt;assembly-descriptor&gt;</literal> in "
+"<literal>ejb-jar.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:157
+#, no-c-format
+msgid ""
+"&lt;interceptor-binding&gt;\n"
+"    &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"    &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"&lt;/interceptor-binding&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:158
+#, no-c-format
+msgid ""
+"Seam needs to know where to go to find session beans in JNDI. One way to do "
+"this is specify the <literal>@JndiName</literal> annotation on every session "
+"bean Seam component. However, this is quite tedious. A better approach is to "
+"specify a pattern that Seam can use to calculate the JNDI name from the EJB "
+"name. Unfortunately, there is no standard mapping to global JNDI defined in "
+"the EJB3 specification, so this mapping is vendor-specific. We usually "
+"specify this option in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:161
+#, no-c-format
+msgid "For JBoss AS, the following pattern is correct:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:164
+#, no-c-format
+msgid "&lt;core:init jndi-name=\"myEarName/#{ejbName}/local\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:165
+#, no-c-format
+msgid ""
+"Where <literal>myEarName</literal> is the name of the EAR in which the bean "
+"is deployed."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:168
+#, no-c-format
+msgid ""
+"Outside the context of an EAR (when using the JBoss Embeddable EJB3 "
+"container), the following pattern is the one to use:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:171
+#, no-c-format
+msgid "&lt;core:init jndi-name=\"#{ejbName}/local\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:172
+#, no-c-format
+msgid ""
+"You'll have to experiment to find the right setting for other application "
+"servers. Note that some servers (such as GlassFish) require you to specify "
+"JNDI names for all EJB components explicitly (and tediously). In this case, "
+"you can pick your own pattern ;-)"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:175
+#, no-c-format
+msgid "Using facelets"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:176
+#, no-c-format
+msgid ""
+"If you want follow our advice and use facelets instead of JSP, add the "
+"following lines to <literal>faces-config.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:179
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;view-handler&gt;com.sun.facelets.FaceletViewHandler&lt;/view-"
+"handler&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:180
+#, no-c-format
+msgid "And the following lines to <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:183
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;javax.faces.DEFAULT_SUFFIX&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;.xhtml&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:184
+#, no-c-format
+msgid "Don't forget!"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:185
+#, no-c-format
+msgid ""
+"There is one final item you need to know about. You must place a "
+"<literal>seam.properties</literal>, <literal>META-INF/seam.properties</"
+"literal> or <literal>META-INF/components.xml</literal> file in any archive "
+"in which your Seam components are deployed (even an empty properties file "
+"will do). At startup, Seam will scan any archives with <literal>seam."
+"properties</literal> files for seam components."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:188
+#, no-c-format
+msgid ""
+"That's why all the Seam examples have an empty <literal>seam.properties</"
+"literal> file. You can't just delete this file and expect everything to "
+"still work!"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:191
+#, no-c-format
+msgid ""
+"You might think this is silly and what kind of idiot framework designers "
+"would make an empty file affect the behavior of their software?? Well, this "
+"is a workaround for a limitation of the JVM&mdash;if we didn't use this "
+"mechanism, our next best option would be to force you to list every "
+"component explicitly in <literal>components.xml</literal>, just like some "
+"other competing frameworks do! I think you'll like our way better."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:195
+#, no-c-format
+msgid "Configuring Seam in Java EE 5"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:204
+#, no-c-format
+msgid ""
+"If you're running in a Java EE 5 environment, this is all the configuration "
+"required to start using Seam!"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:207 Configuration.xml:270 Configuration.xml:318
+#: Configuration.xml:354 Configuration.xml:371
+#, no-c-format
+msgid "Packaging"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:208
+#, no-c-format
+msgid ""
+"Once you've packaged all this stuff together into an EAR, the archive "
+"structure will look something like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:211
+#, no-c-format
+msgid ""
+"my-application.ear/\n"
+"    jboss-seam.jar\n"
+"    el-api.jar\n"
+"    el-ri.jar\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"        application.xml\n"
+"    my-application.war/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"        WEB-INF/\n"
+"            web.xml\n"
+"            components.xml\n"
+"            faces-config.xml\n"
+"            lib/\n"
+"                jsf-facelets.jar\n"
+"                jboss-seam-ui.jar\n"
+"        login.jsp\n"
+"        register.jsp\n"
+"        ...\n"
+"    my-application.jar/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"            persistence.xml\n"
+"        seam.properties\n"
+"        org/\n"
+"            jboss/\n"
+"                myapplication/\n"
+"                    User.class\n"
+"                    Login.class\n"
+"                    LoginBean.class\n"
+"                    Register.class\n"
+"                    RegisterBean.class\n"
+"                    ..."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:212
+#, no-c-format
+msgid ""
+"You must include <literal>jboss-seam.jar</literal>, <literal>el-api.jar</"
+"literal> and <literal>el-ri.jar</literal> in the EAR classpath. Make sure "
+"you reference all of these jars from <literal>application.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:215
+#, no-c-format
+msgid ""
+"If you want to use jBPM or Drools, you must include the needed jars in the "
+"EAR classpath. Make sure you reference all of the jars from "
+"<literal>application.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:218
+#, no-c-format
+msgid ""
+"If you want to use facelets (our recommendation), you must include "
+"<literal>jsf-facelets.jar</literal> in the <literal>WEB-INF/lib</literal> "
+"directory of the WAR."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:221
+#, no-c-format
+msgid ""
+"If you want to use the Seam tag library (most Seam applications do), you "
+"must include <literal>jboss-seam-ui.jar</literal> in the <literal>WEB-INF/"
+"lib</literal> directory of the WAR. If you want to use the PDF or email tag "
+"libraries, you need to put <literal>jboss-seam-pdf.jar</literal> or "
+"<literal>jboss-seam-mail.jar</literal> in <literal>WEB-INF/lib</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:224
+#, no-c-format
+msgid ""
+"If you want to use the Seam debug page (only works for applications using "
+"facelets), you must include <literal>jboss-seam-debug.jar</literal> in the "
+"<literal>WEB-INF/lib</literal> directory of the WAR."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:227
+#, no-c-format
+msgid ""
+"Seam ships with several example applications that are deployable in any Java "
+"EE container that supports EJB 3.0."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:231
+#, no-c-format
+msgid "Configuring Seam in Java SE, with the JBoss Embeddable EJB3 container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:232
+#, no-c-format
+msgid ""
+"The JBoss Embeddable EJB3 container lets you run EJB3 components outside the "
+"context of the Java EE 5 application server. This is especially, but not "
+"only, useful for testing."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:235
+#, no-c-format
+msgid ""
+"The Seam booking example application includes a TestNG integration test "
+"suite that runs on the Embeddable EJB3 container."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:246
+#, no-c-format
+msgid "The booking example application may even be deployed to Tomcat."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:257
+#, no-c-format
+msgid "Installing the Embeddable EJB3 container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:258
+#, no-c-format
+msgid ""
+"Seam ships with a build of the Embeddable EJB3 container in the "
+"<literal>embedded-ejb</literal> directory. To use the Embeddable EJB3 "
+"container with Seam, add the <literal>embedded-ejb/conf</literal> directory, "
+"and all jars in the <literal>lib</literal> and <literal>embedded-ejb/lib</"
+"literal> directories to your classpath. Then, add the following line to "
+"<literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:261
+#, no-c-format
+msgid "&lt;core:ejb /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:262
+#, no-c-format
+msgid ""
+"This setting installs the built-in component named <literal>org.jboss.seam."
+"core.ejb</literal>. This component is responsible for bootstrapping the EJB "
+"container when Seam is started, and shutting it down when the web "
+"application is undeployed."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:265
+#, no-c-format
+msgid "Configuring a datasource with the Embeddable EJB3 container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:266
+#, no-c-format
+msgid ""
+"You should refer to the Embeddable EJB3 container documentation for more "
+"information about configuring the container. You'll probably at least need "
+"to set up your own datasource. Embeddable EJB3 is implemented using the "
+"JBoss Microcontainer, so it's very easy to add new services to the minimal "
+"set of services provided by default. For example, I can add a new datasource "
+"by putting this <literal>jboss-beans.xml</literal> file in my classpath:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:269
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"\n"
+"&lt;deployment xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"urn:jboss:bean-deployer bean-deployer_1_0."
+"xsd\"\n"
+"            xmlns=\"urn:jboss:bean-deployer\"&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasourceBootstrap\"\n"
+"        class=\"org.jboss.resource.adapter.jdbc.local.LocalTxDataSource"
+"\"&gt;\n"
+"      &lt;property name=\"driverClass\"&gt;org.hsqldb.jdbcDriver&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"connectionURL\"&gt;jdbc:hsqldb:.&lt;/property&gt;\n"
+"      &lt;property name=\"userName\"&gt;sa&lt;/property&gt;\n"
+"      &lt;property name=\"jndiName\"&gt;java:/bookingDatasource&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"minSize\"&gt;0&lt;/property&gt;\n"
+"      &lt;property name=\"maxSize\"&gt;10&lt;/property&gt;\n"
+"      &lt;property name=\"blockingTimeout\"&gt;1000&lt;/property&gt;\n"
+"      &lt;property name=\"idleTimeout\"&gt;100000&lt;/property&gt;\n"
+"      &lt;property name=\"transactionManager\"&gt;\n"
+"        &lt;inject bean=\"TransactionManager\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"      &lt;property name=\"cachedConnectionManager\"&gt;\n"
+"        &lt;inject bean=\"CachedConnectionManager\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"      &lt;property name=\"initialContextProperties\"&gt;\n"
+"        &lt;inject bean=\"InitialContextProperties\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasource\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getDatasource\"&gt;\n"
+"         &lt;factory bean=\"bookingDatasourceBootstrap\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"&lt;/deployment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:271
+#, no-c-format
+msgid ""
+"The archive structure of a WAR-based deployment on an servlet engine like "
+"Tomcat will look something like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:274
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            myfaces-api.jar\n"
+"            myfaces-impl.jar\n"
+"            jboss-ejb3.jar\n"
+"            jboss-jca.jar\n"
+"            jboss-j2ee.jar\n"
+"            ...\n"
+"            mc-conf.jar/\n"
+"                ejb3-interceptors-aop.xml\n"
+"                embedded-jboss-beans.xml\n"
+"                default.persistence.properties\n"
+"                jndi.properties\n"
+"                login-config.xml\n"
+"                security-beans.xml\n"
+"                log4j.xml\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                    MANIFEST.MF\n"
+"                    persistence.xml\n"
+"                    jboss-beans.xml\n"
+"                log4j.xml\n"
+"                seam.properties\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            LoginBean.class\n"
+"                            Register.class\n"
+"                            RegisterBean.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:275
+#, no-c-format
+msgid ""
+"The <literal>mc-conf.jar</literal> just contains the standard JBoss "
+"Microcontainer configuration files for Embeddable EJB3. You won't usually "
+"need to edit these files yourself."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:278
+#, no-c-format
+msgid ""
+"Most of the Seam example applications may be deployed to Tomcat by running "
+"<literal>ant deploy.tomcat</literal>."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:281
+#, no-c-format
+msgid "Configuring Seam in J2EE"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:282
+#, no-c-format
+msgid ""
+"Seam is useful even if you're not yet ready to take the plunge into EJB 3.0. "
+"In this case you would use Hibernate3 or JPA instead of EJB 3.0 persistence, "
+"and plain JavaBeans instead of session beans. You'll miss out on some of the "
+"nice features of session beans but it will be very easy to migrate to EJB "
+"3.0 when you're ready and, in the meantime, you'll be able to take advantage "
+"of Seam's unique declarative state management architecture."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:293
+#, no-c-format
+msgid ""
+"Seam JavaBean components do not provide declarative transaction demarcation "
+"like session beans do. You <emphasis>could</emphasis> manage your "
+"transactions manually using the JTA <literal>UserTransaction</literal> (you "
+"could even implement your own declarative transaction management in a Seam "
+"interceptor). But most applications will use Seam managed transactions when "
+"using Hibernate with JavaBeans. Follow the instructions in the persistence "
+"chapter to install <literal>TransactionalSeamPhaseListener</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:296
+#, no-c-format
+msgid ""
+"The Seam distribution includes a version of the booking example application "
+"that uses Hibernate3 and JavaBeans instead of EJB3, and another version that "
+"uses JPA and JavaBeans. These example applications are ready to deploy into "
+"any J2EE application server."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:299
+#, no-c-format
+msgid ""
+"If we want to deploy Hibernate in a non-J2EE environment like Tomcat or "
+"TestNG, we need to do a little bit more work."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:302
+#, no-c-format
+msgid "Boostrapping Hibernate in Seam"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:303
+#, no-c-format
+msgid ""
+"Seam will bootstrap a Hibernate <literal>SessionFactory</literal> from your "
+"<literal>hibernate.cfg.xml</literal> file if you install a built-in "
+"component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:306
+#, no-c-format
+msgid ""
+"&lt;core:hibernate-session-factory name=\"hibernateSessionFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:307
+#, no-c-format
+msgid ""
+"You will also need to configure a <emphasis>managed session</emphasis> if "
+"you want a Seam managed Hibernate <literal>Session</literal> to be available "
+"via injection."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:310
+#, no-c-format
+msgid "Boostrapping JPA in Seam"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:311
+#, no-c-format
+msgid ""
+"Seam will bootstrap a JPA <literal>EntityManagerFactory</literal> from your "
+"<literal>persistence.xml</literal> file if you install this built-in "
+"component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:314
+#, no-c-format
+msgid "&lt;core:entity-manager-factory name=\"entityManagerFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:315
+#, no-c-format
+msgid ""
+"You will also need to configure a <emphasis>managed persistencece context</"
+"emphasis> if you want a Seam managed JPA <literal>EntityManager</literal> to "
+"be available via injection."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:319
+#, no-c-format
+msgid "We can package our application as a WAR, in the following structure:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:322
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            hibernate3.jar\n"
+"            hibernate-annotations.jar\n"
+"            ...\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                   MANIFEST.MF\n"
+"                seam.properties\n"
+"                hibernate.cfg.xml\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            Register.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:324
+#, no-c-format
+msgid "Configuring Seam in Java SE, with the JBoss Microcontainer"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:325
+#, no-c-format
+msgid ""
+"The Seam support for Hibernate and JPA requires JTA and a JCA datasource. If "
+"you are running in a non-EE environment like Tomcat or TestNG you can run "
+"these services, and Hibernate itself, in the JBoss Microcontainer."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:328
+#, no-c-format
+msgid ""
+"You can even deploy the Hibernate and JPA versions of the booking example in "
+"Tomcat."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:339
+#, no-c-format
+msgid ""
+"Seam ships with an example Microcontainer configuration in "
+"<literal>microcontainer/conf/jboss-beans.xml</literal> that provides all the "
+"things you need to run Seam with Hibernate in any non-EE environment. Just "
+"add the <literal>microcontainer/conf</literal> directory, and all jars in "
+"the <literal>lib</literal> and <literal>microcontainer/lib</literal> "
+"directories to your classpath. Refer to the documentation for the JBoss "
+"Microcontainer for more information."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:342
+#, no-c-format
+msgid "Using Hibernate and the JBoss Microcontainer"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:343
+#, no-c-format
+msgid ""
+"The built-in Seam component named <literal>org.jboss.seam.core."
+"microcontainer</literal> bootstraps the microcontainer. As before, we "
+"probably want to use a Seam managed session."
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:346
+#, no-c-format
+msgid ""
+"&lt;core:microcontainer/&gt;\n"
+"\n"
+"&lt;core:managed-hibernate-session name=\"bookingDatabase\" auto-create="
+"\"true\"\n"
+"    session-factory-jndi-name=\"java:/bookingSessionFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:347
+#, no-c-format
+msgid ""
+"Where <literal>java:/bookingSessionFactory</literal> is the name of the "
+"Hibernate session factory specified in <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:350
+#, no-c-format
+msgid ""
+"You'll need to provide a <literal>jboss.beans.xml</literal> file that "
+"installs JNDI, JTA, your JCA datasource and Hibernate into the "
+"microcontainer:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:353
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"\n"
+"&lt;deployment xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"urn:jboss:bean-deployer bean-deployer_1_0."
+"xsd\"\n"
+"            xmlns=\"urn:jboss:bean-deployer\"&gt;\n"
+"\n"
+"   &lt;bean name=\"Naming\" class=\"org.jnp.server.SingletonNamingServer\"/"
+"&gt;\n"
+"\n"
+"   &lt;bean name=\"TransactionManagerFactory\"\n"
+"       class=\"org.jboss.seam.microcontainer.TransactionManagerFactory\"/"
+"&gt;\n"
+"   &lt;bean name=\"TransactionManager\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getTransactionManager\"&gt;\n"
+"         &lt;factory bean=\"TransactionManagerFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasourceFactory\" class=\"org.jboss.seam."
+"microcontainer.DataSourceFactory\"&gt;\n"
+"      &lt;property name=\"driverClass\"&gt;org.hsqldb.jdbcDriver&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"connectionUrl\"&gt;jdbc:hsqldb:.&lt;/property&gt;\n"
+"      &lt;property name=\"userName\"&gt;sa&lt;/property&gt;\n"
+"      &lt;property name=\"jndiName\"&gt;java:/hibernateDatasource&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"minSize\"&gt;0&lt;/property&gt;\n"
+"      &lt;property name=\"maxSize\"&gt;10&lt;/property&gt;\n"
+"      &lt;property name=\"blockingTimeout\"&gt;1000&lt;/property&gt;\n"
+"      &lt;property name=\"idleTimeout\"&gt;100000&lt;/property&gt;\n"
+"      &lt;property name=\"transactionManager\"&gt;&lt;inject bean="
+"\"TransactionManager\"/&gt;&lt;/property&gt;\n"
+"   &lt;/bean&gt;\n"
+"   &lt;bean name=\"bookingDatasource\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getDataSource\"&gt;\n"
+"         &lt;factory bean=\"bookingDatasourceFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingSessionFactoryFactory\"\n"
+"       class=\"org.jboss.seam.microcontainer.HibernateFactory\"/&gt;\n"
+"   &lt;bean name=\"bookingSessionFactory\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getSessionFactory\"&gt;\n"
+"         &lt;factory bean=\"bookingSessionFactoryFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"      &lt;depends&gt;bookingDatasource&lt;/depends&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"&lt;/deployment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:355
+#, no-c-format
+msgid "The WAR could have the following structure:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:358
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            hibernate3.jar\n"
+"            ...\n"
+"            jboss-microcontainer.jar\n"
+"            jboss-jca.jar\n"
+"            ...\n"
+"            myfaces-api.jar\n"
+"            myfaces-impl.jar\n"
+"            mc-conf.jar/\n"
+"                jndi.properties\n"
+"                log4j.xml\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                    MANIFEST.MF\n"
+"                    jboss-beans.xml\n"
+"                seam.properties\n"
+"                hibernate.cfg.xml\n"
+"                log4j.xml\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            Register.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:359
+#, no-c-format
+msgid "Configuring jBPM in Seam"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:360
+#, no-c-format
+msgid ""
+"Seam's jBPM integration is not installed by default, so you'll need to "
+"enable jBPM by installing a built-in component. You'll also need to "
+"explicitly list your process and pageflow definitions. In "
+"<literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:363
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:pageflow-definitions&gt;\n"
+"        &lt;value&gt;createDocument.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;editDocument.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;approveDocument.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:pageflow-definitions&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;documentLifecycle.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:364
+#, no-c-format
+msgid ""
+"No further special configuration is needed if you only have pageflows. If "
+"you do have business process definitions, you need to provide a jBPM "
+"configuration, and a Hibernate configuration for jBPM. The Seam DVD Store "
+"demo includes example <literal>jbpm.cfg.xml</literal> and <literal>hibernate."
+"cfg.xml</literal> files that will work with Seam:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:367
+#, no-c-format
+msgid ""
+"&lt;jbpm-configuration&gt;\n"
+"\n"
+"  &lt;jbpm-context&gt;\n"
+"    &lt;service name=\"persistence\"&gt;\n"
+"       &lt;factory&gt;\n"
+"          &lt;bean class=\"org.jbpm.persistence.db."
+"DbPersistenceServiceFactory\"&gt;\n"
+"             &lt;field name=\"isTransactionEnabled\"&gt;&lt;false/&gt;&lt;/"
+"field&gt;\n"
+"          &lt;/bean&gt;\n"
+"       &lt;/factory&gt;\n"
+"    &lt;/service&gt;\n"
+"    &lt;service name=\"message\" factory=\"org.jbpm.msg.db."
+"DbMessageServiceFactory\" /&gt;\n"
+"    &lt;service name=\"scheduler\" factory=\"org.jbpm.scheduler.db."
+"DbSchedulerServiceFactory\" /&gt;\n"
+"    &lt;service name=\"logging\" factory=\"org.jbpm.logging.db."
+"DbLoggingServiceFactory\" /&gt;\n"
+"    &lt;service name=\"authentication\" \n"
+"        factory=\"org.jbpm.security.authentication."
+"DefaultAuthenticationServiceFactory\" /&gt;\n"
+"  &lt;/jbpm-context&gt;\n"
+"\n"
+"&lt;/jbpm-configuration&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:368
+#, no-c-format
+msgid ""
+"The most important thing to notice here is that jBPM transaction control is "
+"disabled. Seam or EJB3 should control the JTA transactions."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:372
+#, no-c-format
+msgid ""
+"There is not yet any well-defined packaging format for jBPM configuration "
+"and process/pageflow definition files. In the Seam examples we've decided to "
+"simply package all these files into the root of the EAR. In future, we will "
+"probably design some other standard packaging format. So the EAR looks "
+"something like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:375
+#, no-c-format
+msgid ""
+"my-application.ear/\n"
+"    jboss-seam.jar\n"
+"    el-api.jar\n"
+"    el-ri.jar\n"
+"    jbpm-3.1.jar\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"        application.xml\n"
+"    my-application.war/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"        WEB-INF/\n"
+"            web.xml\n"
+"            components.xml\n"
+"            faces-config.xml\n"
+"            lib/\n"
+"                jsf-facelets.jar\n"
+"                jboss-seam-ui.jar\n"
+"        login.jsp\n"
+"        register.jsp\n"
+"        ...\n"
+"    my-application.jar/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"            persistence.xml\n"
+"        seam.properties\n"
+"        org/\n"
+"            jboss/\n"
+"                myapplication/\n"
+"                    User.class\n"
+"                    Login.class\n"
+"                    LoginBean.class\n"
+"                    Register.class\n"
+"                    RegisterBean.class\n"
+"                    ...\n"
+"    jbpm.cfg.xml\n"
+"    hibernate.cfg.xml\n"
+"    createDocument.jpdl.xml\n"
+"    editDocument.jpdl.xml\n"
+"    approveDocument.jpdl.xml\n"
+"    documentLifecycle.jpdl.xml"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:376
+#, no-c-format
+msgid ""
+"Remember to add <literal>jbpm-3.1.jar</literal> to the manifest of your EJB-"
+"JAR and WAR."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:379
+#, no-c-format
+msgid "Configuring Seam in a Portal"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:380
+#, no-c-format
+msgid ""
+"To run a Seam application as a portlet, you'll need to provide certain "
+"portlet metadata (<literal>portlet.xml</literal>, etc) in addition to the "
+"usual Java EE metadata. See the <literal>examples/portal</literal> directory "
+"for an example of the booking demo preconfigured to run on JBoss Portal."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:383
+#, no-c-format
+msgid ""
+"In addition, you'll need to use a portlet-specific phase listener instead of "
+"<literal>SeamPhaseListener</literal> or "
+"<literal>TransactionalSeamPhaseListener</literal>. The "
+"<literal>SeamPortletPhaseListener</literal> and "
+"<literal>TransactionalSeamPortletPhaseListener</literal> are adapted to the "
+"portlet lifecycle. I would like to offer my sincerest apologies for the name "
+"of that last class. I really couldn't think of anything better. Sorry."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Controls.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Controls.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Controls.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,591 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Controls.xml:10
+#, no-c-format
+msgid "Seam JSF controls"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:11
+#, no-c-format
+msgid ""
+"Seam includes a number of JSF controls that are useful for working with "
+"Seam. These are intended to complement the built-in JSF controls, and "
+"controls from other third-party libraries. We recommend the Ajax4JSF and ADF "
+"faces (now Trinidad) tag libraries for use with Seam. We do not recommend "
+"the use of the Tomahawk tag library."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:14
+#, no-c-format
+msgid "The ui example demonstrates the use of a number of these tags."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:19
+#, no-c-format
+msgid "&lt;s:validate&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:21
+#, no-c-format
+msgid ""
+"Validate a JSF input field against the bound property using Hibernate "
+"Validator."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:27
+#, no-c-format
+msgid "&lt;s:validateAll&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:29
+#, no-c-format
+msgid ""
+"Validate all child JSF input fields against the bound propertys using "
+"Hibernate Validator."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:35
+#, no-c-format
+msgid "&lt;s:formattedText&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:37
+#, no-c-format
+msgid "Output <emphasis>Seam Text</emphasis>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:43
+#, no-c-format
+msgid "&lt;s:convertDateTime&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:45
+#, no-c-format
+msgid "Perform date or time conversions in the Seam timezone."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:51
+#, no-c-format
+msgid "&lt;s:convertEnum&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:53
+#, no-c-format
+msgid ""
+"Assigns an enum converter to the current component. This is primarily useful "
+"for radio button and dropdown controls."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:59
+#, no-c-format
+msgid "&lt;s:enumItem&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:61
+#, no-c-format
+msgid "Creates a <literal>SelectItem</literal> from an enum value."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:66
+#, no-c-format
+msgid ""
+"<literal>enumValue</literal> &mdash; the string representation of the enum "
+"value."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:71
+#, no-c-format
+msgid ""
+"<literal>label</literal> &mdash; the label to be used when rendering the "
+"<literal>SelectItem</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:79
+#, no-c-format
+msgid "&lt;s:selectItems&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:81
+#, no-c-format
+msgid ""
+"Creates a <literal>List&lt;SelectItem&gt;</literal> from a List, Set, "
+"DataModel or Array."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:86
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; an EL expression specifying the data that "
+"backs the <literal>List&lt;SelectItem&gt;</literal>"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:91
+#, no-c-format
+msgid ""
+"<literal>var</literal> &mdash; defines the name of the local variable that "
+"holds the current object during iteration"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:96
+#, no-c-format
+msgid ""
+"<literal>label</literal> &mdash; the label to be used when rendering the "
+"<literal>SelectItem</literal>. Can reference the <literal>var</literal> "
+"variable"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:101
+#, no-c-format
+msgid ""
+"<literal>disabled</literal> &mdash; if true the <literal>SelectItem</"
+"literal> will be rendered disabled. Can reference the <literal>var</literal> "
+"variable"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:106
+#, no-c-format
+msgid ""
+"<literal>noSelectionLabel</literal> &mdash; specifies the (optional) label "
+"to place at the top of list (if <literal>required=\"true\"</literal> is also "
+"specified then selecting this value will cause a validation error)"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:111
+#, no-c-format
+msgid ""
+"<literal>hideNoSelectionLabel</literal> &mdash; if true, the "
+"<literal>noSelectionLabel</literal> will be hidden when a value is selected"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:119
+#, no-c-format
+msgid "&lt;s:decorate&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:121
+#, no-c-format
+msgid "\"Decorate\" a JSF input field when validation fails."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:127
+#, no-c-format
+msgid "&lt;s:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:129
+#, no-c-format
+msgid "\"Decorate\" a JSF input field with the validation error message."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:135
+#, no-c-format
+msgid "&lt;s:span&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:137
+#, no-c-format
+msgid "Render a HTML <literal>&lt;span&gt;</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:143
+#, no-c-format
+msgid "&lt;s:div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:145
+#, no-c-format
+msgid "Render a HTML <literal>&lt;div&gt;</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:151
+#, no-c-format
+msgid "&lt;s:fragment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:153
+#, no-c-format
+msgid ""
+"A non-rendering component useful for enabling/disabling rendering of it's "
+"children"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:159
+#, no-c-format
+msgid "&lt;s:cache&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:161
+#, no-c-format
+msgid ""
+"Cache the rendered page fragment using JBoss Cache. Note that <literal>&lt;s:"
+"cache&gt;</literal> actually uses the instance of JBoss Cache managed by the "
+"built-in <literal>pojoCache</literal> component."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:166
+#, no-c-format
+msgid ""
+"<literal>key</literal> &mdash; the key to cache rendered content, often a "
+"value expression. For example, if we were caching a page fragment that "
+"displays a document, we might use <literal>key=\"Document-#{document.id}\"</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:171
+#, no-c-format
+msgid ""
+"<literal>enabled</literal> &mdash; a value expression that determines if the "
+"cache should be used."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:176
+#, no-c-format
+msgid ""
+"<literal>region</literal> &mdash; a JBoss Cache node to use (different nodes "
+"can have different expiry policies)."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:184
+#, no-c-format
+msgid "&lt;s:link&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:186
+#, no-c-format
+msgid ""
+"A link that supports invocation of an action with control over conversation "
+"propagation. <emphasis>Does not submit the form.</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:191 Controls.xml:236
+#, no-c-format
+msgid "<literal>value</literal> &mdash; the label."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:196 Controls.xml:241
+#, no-c-format
+msgid ""
+"<literal>action</literal> &mdash; a method binding that specified the action "
+"listener."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:201 Controls.xml:246
+#, no-c-format
+msgid "<literal>view</literal> &mdash; the JSF view id to link to."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:206 Controls.xml:251
+#, no-c-format
+msgid "<literal>fragment</literal> &mdash; the fragment identifier to link to."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:211 Controls.xml:256
+#, no-c-format
+msgid "<literal>disabled</literal> &mdash; is the link disabled?"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:216 Controls.xml:261 Controls.xml:301
+#, no-c-format
+msgid ""
+"<literal>propagation</literal> &mdash; determines the conversation "
+"propagation style: <literal>begin</literal>, <literal>join</literal>, "
+"<literal>nest</literal>, <literal>none</literal> or <literal>end</literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:221 Controls.xml:266 Controls.xml:306
+#, no-c-format
+msgid ""
+"<literal>pageflow</literal> &mdash; a pageflow definition to begin. (This is "
+"only useful when <literal>propagation=\"begin\"</literal> or "
+"<literal>propagation=\"join\"</literal>.)"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:229
+#, no-c-format
+msgid "&lt;s:button&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:231
+#, no-c-format
+msgid ""
+"A button that supports invocation of an action with control over "
+"conversation propagation. <emphasis>Does not submit the form.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:274
+#, no-c-format
+msgid "&lt;s:selectDate&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:276
+#, no-c-format
+msgid ""
+"Displays a dynamic date picker component that selects a date for the "
+"specified input field. The body of the <literal>selectDate</literal> element "
+"should contain HTML elements, such as text or an image, that prompt the user "
+"to click to display the date picker. The date picker can be styled using "
+"CSS. An example CSS file can be found in the Seam booking demo as "
+"<literal>date.css</literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:281
+#, no-c-format
+msgid ""
+"<literal>for</literal> &mdash; The id of the input field that the date "
+"picker will insert the selected date into."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:286
+#, no-c-format
+msgid ""
+"<literal>dateFormat</literal> &mdash; The date format string. This should "
+"match the date format of the input field."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:294
+#, no-c-format
+msgid "&lt;s:conversationPropagation&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:296
+#, no-c-format
+msgid ""
+"Customize the conversation propagation for a command link or button (or "
+"similar JSF control). <emphasis>Facelets only.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:314
+#, no-c-format
+msgid "&lt;s:conversationId&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:316
+#, no-c-format
+msgid ""
+"Add the conversation id to an output link (or similar JSF control). "
+"<emphasis>Facelets only.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:322
+#, no-c-format
+msgid "&lt;s:taskId&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:324
+#, no-c-format
+msgid ""
+"Add the task id to an output link (or similar JSF control), when the task is "
+"available via <literal>#{task}</literal>. <emphasis>Facelets only.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:330
+#, no-c-format
+msgid "&lt;s:fileUpload&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:332
+#, no-c-format
+msgid ""
+"Renders a file upload control. This control must be used within a form with "
+"an encoding type of <literal>multipart/form-data</literal>, i.e:"
+msgstr ""
+
+#. Tag: programlisting
+#: Controls.xml:335
+#, no-c-format
+msgid "&lt;h:form enctype=\"multipart/form-data\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:336
+#, no-c-format
+msgid ""
+"For multipart requests, the Seam Multipart servlet filter must also be "
+"configured in <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Controls.xml:339
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"      &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"      &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-"
+"class&gt;\n"
+"    &lt;/filter&gt;\n"
+"    \n"
+"    &lt;filter-mapping&gt;\n"
+"      &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"      &lt;url-pattern&gt;/*&lt;/url-pattern&gt;\n"
+"    &lt;/filter-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:340
+#, no-c-format
+msgid ""
+"The following configuration options for multipart requests may be configured "
+"in components.xml:"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:345
+#, no-c-format
+msgid ""
+"<literal>createTempFiles</literal> &mdash; if this option is set to true, "
+"uploaded files are streamed to a temporary file instead of in memory."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:350
+#, no-c-format
+msgid ""
+"<literal>maxRequestSize</literal> &mdash; the maximum size of a file upload "
+"request, in bytes."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:355
+#, no-c-format
+msgid "Here's an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Controls.xml:358
+#, no-c-format
+msgid ""
+"&lt;component class=\"org.jboss.seam.servlet.MultipartConfig\"&gt;\n"
+"        &lt;property name=\"createTempFiles\"&gt;true&lt;/property&gt;\n"
+"        &lt;property name=\"maxRequestSize\"&gt;1000000&lt;/property&gt;\n"
+"    &lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:359
+#, no-c-format
+msgid ""
+"And here's a list of the supported attributes for the <literal>fileUpload</"
+"literal> control:"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:364
+#, no-c-format
+msgid ""
+"<literal>data</literal> &mdash; this value binding receives the binary file "
+"data. The receiving field should be declared as a <literal>byte[]</literal> "
+"or <literal>InputStream</literal> (required)."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:369
+#, no-c-format
+msgid ""
+"<literal>contentType</literal> &mdash; this value binding receives the "
+"file's content type (optional)."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:374
+#, no-c-format
+msgid ""
+"<literal>fileName</literal> &mdash; this value binding receives the filename "
+"(optional)."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:379
+#, no-c-format
+msgid ""
+"<literal>accept</literal> &mdash; a comma-separated list of content types to "
+"accept, may not be supported by the browser. E.g. <literal>\"images/png,"
+"images/jpg\"</literal>, <literal>\"images/*\"</literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:384
+#, no-c-format
+msgid "<literal>style</literal> &mdash; The control's style"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:389
+#, no-c-format
+msgid "<literal>styleClass</literal> &mdash; The control's style class"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Conversations.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Conversations.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Conversations.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1248 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Conversations.xml:10
+#, no-c-format
+msgid "Conversations and workspace management"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:11
+#, no-c-format
+msgid "It's time to understand Seam's conversation model in more detail."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:14
+#, no-c-format
+msgid ""
+"Historically, the notion of a Seam \"conversation\" came about as a merger "
+"of three different ideas:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:19
+#, no-c-format
+msgid ""
+"The idea of a <emphasis>workspace</emphasis>, which I encountered in a "
+"project for the Victorian government in 2002. In this project I was forced "
+"to implement workspace management on top of Struts, an experience I pray "
+"never to repeat."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:24
+#, no-c-format
+msgid ""
+"The idea of an <emphasis>application transaction</emphasis> with optimistic "
+"semantics, and the realization that existing frameworks based around a "
+"stateless architecture could not provide effective management of extended "
+"persistence contexts. (The Hibernate team is truly fed up with copping the "
+"blame for <literal>LazyInitializationException</literal>s, which are not "
+"really Hibernate's fault, but rather the fault of the extremely limiting "
+"persistence context model supported by stateless architectures such as the "
+"Spring framework or the traditional <emphasis>stateless session facade</"
+"emphasis> (anti)pattern in J2EE.)"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:29
+#, no-c-format
+msgid "The idea of a workflow <emphasis>task</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:34
+#, no-c-format
+msgid ""
+"By unifying these ideas and providing deep support in the framework, we have "
+"a powerful construct that lets us build richer and more efficient "
+"applications with less code than before."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:38
+#, no-c-format
+msgid "Seam's conversation model"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:39
+#, no-c-format
+msgid ""
+"The examples we have seen so far make use of a very simple conversation "
+"model that follows these rules:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:44
+#, no-c-format
+msgid ""
+"There is always a conversation context active during the apply request "
+"values, process validations, update model values, invoke application and "
+"render response phases of the JSF request lifecycle."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:49
+#, no-c-format
+msgid ""
+"At the end of the restore view phase of the JSF request lifecycle, Seam "
+"attempts to restore any previous long-running conversation context. If none "
+"exists, Seam creates a new temporary conversation context."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:54
+#, no-c-format
+msgid ""
+"When an <literal>@Begin</literal> method is encountered, the temporary "
+"conversation context is promoted to a long running conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:59
+#, no-c-format
+msgid ""
+"When an <literal>@End</literal> method is encountered, any long-running "
+"conversation context is demoted to a temporary conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:64
+#, no-c-format
+msgid ""
+"At the end of the render response phase of the JSF request lifecycle, Seam "
+"stores the contents of a long running conversation context or destroys the "
+"contents of a temporary conversation context."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:69
+#, no-c-format
+msgid ""
+"Any faces request (a JSF postback) will propagate the conversation context. "
+"By default, non-faces requests (GET requests, for example) do not propagate "
+"the conversation context, but see below for more information on this."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:74
+#, no-c-format
+msgid ""
+"If the JSF request lifecycle is foreshortened by a redirect, Seam "
+"transparently stores and restores the current conversation context&mdash;"
+"unless the conversation was already ended via <literal>@End"
+"(beforeRedirect=true)</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:79
+#, no-c-format
+msgid ""
+"Seam transparently propagates the conversation context across JSF postbacks "
+"and redirects. If you don't do anything special, a <emphasis>non-faces "
+"request</emphasis> (a GET request for example) will not propagate the "
+"conversation context and will be processed in a new temporary conversation. "
+"This is usually - but not always - the desired behavior."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:82
+#, no-c-format
+msgid ""
+"If you want to propagate a Seam conversation across a non-faces request, you "
+"need to explicitly code the Seam <emphasis>conversation id</emphasis> as a "
+"request parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:85
+#, no-c-format
+msgid ""
+"&lt;a href=\"main.jsf?conversationId=#{conversation.id}\"&gt;Continue&lt;/"
+"a&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:86
+#, no-c-format
+msgid "Or, the more JSF-ish:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:89
+#, no-c-format
+msgid ""
+"&lt;h:outputLink value=\"main.jsf\"&gt;\n"
+"    &lt;f:param name=\"conversationId\" value=\"#{conversation.id}\"/&gt;\n"
+"    &lt;h:outputText value=\"Continue\"/&gt;\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:90 Conversations.xml:98
+#, no-c-format
+msgid "If you use the Seam tag library, this is equivalent:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:93
+#, no-c-format
+msgid ""
+"&lt;h:outputLink value=\"main.jsf\"&gt;\n"
+"    &lt;s:conversationId/&gt;\n"
+"    &lt;h:outputText value=\"Continue\"/&gt;\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:94
+#, no-c-format
+msgid ""
+"If you wish to disable propagation of the conversation context for a "
+"postback, a similar trick is used:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:97
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;f:param name=\"conversationPropagation\" value=\"none\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:101
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"none\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:102
+#, no-c-format
+msgid ""
+"Note that disabling conversation context propagation is absolutely not the "
+"same thing as ending the conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:105
+#, no-c-format
+msgid ""
+"The <literal>conversationPropagation</literal> request parameter, or the "
+"<literal>&lt;s:conversationPropagation&gt;</literal> tag may even be used to "
+"begin and end conversation, or begin a nested conversation."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:108
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"end\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:109
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Child\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"nested\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:110
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Hotel\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"begin\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:111
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Hotel\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"join\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:112
+#, no-c-format
+msgid ""
+"This conversation model makes it easy to build applications which behave "
+"correctly with respect to multi-window operation. For many applications, "
+"this is all that is needed. Some complex applications have either or both of "
+"the following additional requirements:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:117
+#, no-c-format
+msgid ""
+"A conversation spans many smaller units of user interaction, which execute "
+"serially or even concurrently. The smaller <emphasis>nested conversations</"
+"emphasis> have their own isolated set of conversation state, and also have "
+"access to the state of the outer conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:122
+#, no-c-format
+msgid ""
+"The user is able to switch between many conversations within the same "
+"browser window. This feature is called <emphasis>workspace management</"
+"emphasis>."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:130
+#, no-c-format
+msgid "Nested conversations"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:131
+#, no-c-format
+msgid ""
+"A nested conversation is created by invoking a method marked <literal>@Begin"
+"(nested=true)</literal> inside the scope of an existing conversation. A "
+"nested conversation has its own conversation context, and also has read-only "
+"access to the context of the outer conversation. (It can read the outer "
+"conversation's context variables, but not write to them.) When an "
+"<literal>@End</literal> is subsequently encountered, the nested conversation "
+"will be destroyed, and the outer conversation will resume, by \"popping\" "
+"the conversation stack. Conversations may be nested to any arbitrary depth."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:134
+#, no-c-format
+msgid ""
+"Certain user activity (workspace management, or the back button) can cause "
+"the outer conversation to be resumed before the inner conversation is ended. "
+"In this case it is possible to have multiple concurrent nested conversations "
+"belonging to the same outer conversation. If the outer conversation ends "
+"before a nested conversation ends, Seam destroys all nested conversation "
+"contexts along with the outer context."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:137
+#, no-c-format
+msgid ""
+"A conversation may be thought of as a <emphasis>continuable state</"
+"emphasis>. Nested conversations allow the application to capture a "
+"consistent continuable state at various points in a user interaction, thus "
+"insuring truly correct behavior in the face of backbuttoning and workspace "
+"management."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:140
+#, no-c-format
+msgid ""
+"TODO: an example to show how a nested conversation prevents bad stuff "
+"happening when you backbutton."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:143
+#, no-c-format
+msgid ""
+"Usually, if a component exists in a parent conversation of the current "
+"nested conversation, the nested conversation will use the same instance. "
+"Occasionally, it is useful to have a different instance in each nested "
+"conversation, so that the component instance that exists in the parent "
+"conversation is invisible to its child conversations. You can achieve this "
+"behavior by annotating the component <literal>@PerNestedConversation</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:149
+#, no-c-format
+msgid "Starting conversations with GET requests"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:150
+#, no-c-format
+msgid ""
+"JSF does not define any kind of action listener that is triggered when a "
+"page is accessed via a non-faces request (for example, a HTTP GET request). "
+"This can occur if the user bookmarks the page, or if we navigate to the page "
+"via an <literal>&lt;h:outputLink&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:153
+#, no-c-format
+msgid ""
+"Sometimes we want to begin a conversation immediately the page is accessed. "
+"Since there is no JSF action method, we can't solve the problem in the usual "
+"way, by annotating the action with <literal>@Begin</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:156
+#, no-c-format
+msgid ""
+"A further problem arises if the page needs some state to be fetched into a "
+"context variable. We've already seen two ways to solve this problem. If that "
+"state is held in a Seam component, we can fetch the state in a "
+"<literal>@Create</literal> method. If not, we can define a "
+"<literal>@Factory</literal> method for the context variable."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:159
+#, no-c-format
+msgid ""
+"If none of these options works for you, Seam lets you define a "
+"<emphasis>page action</emphasis> in the <literal>pages.xml</literal> file."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:162
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\" action=\"#{messageManager.list}\"/"
+"&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:163
+#, no-c-format
+msgid ""
+"This action method is called at the beginning of the render response phase, "
+"any time the page is about to be rendered. If a page action returns a non-"
+"null outcome, Seam will process any appropriate JSF and Seam navigation "
+"rules, possibly resulting in a completely different page being rendered."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:166
+#, no-c-format
+msgid ""
+"If <emphasis>all</emphasis> you want to do before rendering the page is "
+"begin a conversation, you could use a built-in action method that does just "
+"that:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:169
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\" action=\"#{conversation.begin}\"/"
+"&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:170
+#, no-c-format
+msgid ""
+"Note that you can also call this built-in action from a JSF control, and, "
+"similarly, you can use <literal>#{conversation.end}</literal> to end "
+"conversations."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:173
+#, no-c-format
+msgid ""
+"If you want more control, to join existing conversations or begin a nested "
+"conversion, to begin a pageflow or an atomic conversation, you should use "
+"the <literal>&lt;begin-conversation&gt;</literal> element."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:176
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\"&gt;\n"
+"       &lt;begin-conversation nested=\"true\" pageflow=\"AddItem\"/&gt;\n"
+"    &lt;page&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:177
+#, no-c-format
+msgid "There is also an <literal>&lt;end-conversation&gt;</literal> element."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:180
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/home.jsp\"&gt;\n"
+"       &lt;end-conversation/&gt;\n"
+"    &lt;page&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:181
+#, no-c-format
+msgid "To solve the first problem, we now have five options:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:186
+#, no-c-format
+msgid ""
+"Annotate the <literal>@Create</literal> method with <literal>@Begin</literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:191
+#, no-c-format
+msgid ""
+"Annotate the <literal>@Factory</literal> method with <literal>@Begin</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:196
+#, no-c-format
+msgid "Annotate the Seam page action method with <literal>@Begin</literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:201
+#, no-c-format
+msgid ""
+"Use <literal>&lt;begin-conversation&gt;</literal> in <literal>pages.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:206
+#, no-c-format
+msgid ""
+"Use <literal>#{conversation.begin}</literal> as the Seam page action method"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:214
+#, no-c-format
+msgid ""
+"Using <literal>&lt;s:link&gt;</literal> and <literal>&lt;s:button&gt;</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:215
+#, no-c-format
+msgid ""
+"JSF command links always perform a form submission via JavaScript, which "
+"breaks the web browser's \"open in new window\" or \"open in new tab\" "
+"feature. In plain JSF, you need to use an <literal>&lt;h:outputLink&gt;</"
+"literal> if you need this functionality. But there are two major limitations "
+"to <literal>&lt;h:outputLink&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:220
+#, no-c-format
+msgid ""
+"JSF provides no way to attach an action listener to an <literal>&lt;h:"
+"outputLink&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:225
+#, no-c-format
+msgid ""
+"JSF does not propagate the selected row of a <literal>DataModel</literal> "
+"since there is no actual form submission."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:230
+#, no-c-format
+msgid ""
+"Seam provides the notion of a <emphasis>page action</emphasis> to help solve "
+"the first problem, but this does nothing to help us with the second problem. "
+"We <emphasis>could</emphasis> work around this by using the RESTful approach "
+"of passing a request parameter and requerying for the selected object on the "
+"server side. In some cases&mdash;such as the Seam blog example "
+"application&mdash;this is indeed the best approach. The RESTful style "
+"supports bookmarking, since it does not require server-side state. In other "
+"cases, where we don't care about bookmarks, the use of <literal>@DataModel</"
+"literal> and <literal>@DataModelSelection</literal> is just so convenient "
+"and transparent!"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:233
+#, no-c-format
+msgid ""
+"To fill in this missing functionality, and to make conversation propagation "
+"even simpler to manage, Seam provides the <literal>&lt;s:link&gt;</literal> "
+"JSF tag."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:236
+#, no-c-format
+msgid "The link may specify just the JSF view id:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:239
+#, no-c-format
+msgid ""
+"&lt;s:link view=&#8220;/login.xhtml&#8221; value=&#8220;Login&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:240
+#, no-c-format
+msgid ""
+"Or, it may specify an action method (in which case the action outcome "
+"determines the page that results):"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:243
+#, no-c-format
+msgid ""
+"&lt;s:link action=&#8220;#{login.logout}&#8221; value=&#8220;Logout&#8221;/"
+"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:244
+#, no-c-format
+msgid ""
+"If you specify <emphasis>both</emphasis> a JSF view id and an action method, "
+"the 'view' will be used <emphasis>unless</emphasis> the action method "
+"returns a non-null outcome:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:247
+#, no-c-format
+msgid ""
+"&lt;s:link view=\"/loggedOut.xhtml\"  action=&#8220;#{login.logout}&#8221; "
+"value=&#8220;Logout&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:248
+#, no-c-format
+msgid ""
+"The link automatically propagates the selected row of a <literal>DataModel</"
+"literal> using inside <literal>&lt;h:dataTable&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:251
+#, no-c-format
+msgid ""
+"&lt;s:link view=&#8220;/hotel.xhtml&#8221; action=&#8220;#{hotelSearch."
+"selectHotel}&#8221; value=&#8220;#{hotel.name}&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:252
+#, no-c-format
+msgid "You can leave the scope of an existing conversation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:255
+#, no-c-format
+msgid ""
+"&lt;s:link view=&#8220;/main.xhtml&#8221; propagation=&#8220;none&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:256
+#, no-c-format
+msgid "You can begin, end, or nest conversations:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:259
+#, no-c-format
+msgid ""
+"&lt;s:link action=&#8220;#{issueEditor.viewComment}&#8221; "
+"propagation=&#8220;nest&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:260
+#, no-c-format
+msgid ""
+"If the link begins a conversation, you can even specify a pageflow to be "
+"used:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:263
+#, no-c-format
+msgid ""
+"&lt;s:link action=&#8220;#{documentEditor.getDocument}&#8221; "
+"propagation=&#8220;begin&#8221; \n"
+"        pageflow=&#8220;EditDocument&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:264
+#, no-c-format
+msgid ""
+"The <literal>taskInstance</literal> attribute if for use in jBPM task lists:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:267
+#, no-c-format
+msgid ""
+"&lt;s:link action=&#8220;#{documentApproval.approveOrReject}&#8221; "
+"taskInstance=&#8220;#{task}&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:268
+#, no-c-format
+msgid "(See the DVD Store demo application for examples of this.)"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:271
+#, no-c-format
+msgid ""
+"Finally, if you need the \"link\" to be rendered as a button, use "
+"<literal>&lt;s:button&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:274
+#, no-c-format
+msgid ""
+"&lt;s:button action=&#8220;#{login.logout}&#8221; value=&#8220;Logout&#8221;/"
+"&gt;"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:278
+#, no-c-format
+msgid "Success messages"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:279
+#, no-c-format
+msgid ""
+"It is quite common to display a message to the user indicating success or "
+"failure of an action. It is convenient to use a JSF <literal>FacesMessage</"
+"literal> for this. Unfortunately, a successful action often requires a "
+"browser redirect, and JSF does not propagate faces messages across "
+"redirects. This makes it quite difficult to display success messages in "
+"plain JSF."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:282
+#, no-c-format
+msgid ""
+"The built in conversation-scoped Seam component named "
+"<literal>facesMessages</literal> solves this problem. (You must have the "
+"Seam redirect filter installed.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:285
+#, no-c-format
+msgid ""
+"@Name(\"editDocumentAction\")\n"
+"@Stateless\n"
+"public class EditDocumentBean implements EditDocument {\n"
+"    @In EntityManager em;\n"
+"    @In Document document;\n"
+"    @In FacesMessages facesMessages;\n"
+"    \n"
+"    public String update() {\n"
+"        em.merge(document);\n"
+"        facesMessages.add(\"Document updated\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:286
+#, no-c-format
+msgid ""
+"Any message added to <literal>facesMessages</literal> is used in the very "
+"next render response phase for the current conversation. This even works "
+"when there is no long-running conversation since Seam preserves even "
+"temporary conversation contexts across redirects."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:289
+#, no-c-format
+msgid "You can even include JSF EL expressions in a faces message summary:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:292
+#, no-c-format
+msgid "facesMessages.add(\"Document #{document.title} was updated\");"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:293
+#, no-c-format
+msgid "You may display the messages in the usual way, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:296
+#, no-c-format
+msgid "&lt;h:messages globalOnly=\"true\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:300
+#, no-c-format
+msgid "Using an \"explicit\" conversation id"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:301
+#, no-c-format
+msgid ""
+"Ordinarily, Seam generates a meaningless unique id for each conversation in "
+"each session. You can customize the id value when you begin the conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:304
+#, no-c-format
+msgid ""
+"This feature can be used to customize the conversation id generation "
+"algorithm like so:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:307
+#, no-c-format
+msgid ""
+"@Begin(id=\"#{myConversationIdGenerator.nextId}\") \n"
+"public void editHotel() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:308
+#, no-c-format
+msgid "Or it can be used to assign a meaningful conversation id:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:311
+#, no-c-format
+msgid ""
+"@Begin(id=\"hotel#{hotel.id}\") \n"
+"public String editHotel() { ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:312
+#, no-c-format
+msgid ""
+"@Begin(id=\"hotel#{hotelsDataModel.rowData.id}\") \n"
+"public String selectHotel() { ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:313
+#, no-c-format
+msgid ""
+"@Begin(id=\"entry#{params['blogId']}\")\n"
+"public String viewBlogEntry() { ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:314
+#, no-c-format
+msgid ""
+"@BeginTask(id=\"task#{taskInstance.id}\") \n"
+"public String approveDocument() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:315
+#, no-c-format
+msgid ""
+"Clearly, these example result in the same conversation id every time a "
+"particular hotel, blog or task is selected. So what happens if a "
+"conversation with the same conversation id already exists when the new "
+"conversation begins? Well, Seam detects the existing conversation and "
+"redirects to that conversation without running the <literal>@Begin</literal> "
+"method again. This feature helps control the number of workspaces that are "
+"created when using workspace management."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:321
+#, no-c-format
+msgid "Workspace management"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:322
+#, no-c-format
+msgid ""
+"Workspace management is the ability to \"switch\" conversations in a single "
+"window. Seam makes workspace management completely transparent at the level "
+"of the Java code. To enable workspace management, all you need to do is:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:327
+#, no-c-format
+msgid ""
+"Provide <emphasis>description</emphasis> text for each view id (when using "
+"JSF or Seam navigation rules) or page node (when using jPDL pageflows). This "
+"description text is displayed to the user by the workspace switchers."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:332
+#, no-c-format
+msgid ""
+"Include one or more of the standard workspace switcher JSP or facelets "
+"fragments in your pages. The standard fragments support workspace management "
+"via a drop down menu, a list of conversations, or breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:335
+#, no-c-format
+msgid ""
+"Please refer to the Seam Issue Tracker demo to see all this functionality in "
+"action!"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:339
+#, no-c-format
+msgid "Workspace management and JSF navigation"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:340
+#, no-c-format
+msgid ""
+"When you use JSF or Seam navigation rules, Seam switches to a conversation "
+"by restoring the current <literal>view-id</literal> for that conversation. "
+"The descriptive text for the workspace is defined in a file called "
+"<literal>pages.xml</literal> that Seam expects to find in the <literal>WEB-"
+"INF</literal> directory, right next to <literal>faces-config.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:343
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/main.xhtml\"&gt;Search hotels: #{hotelBooking."
+"searchString}&lt;/page&gt;\n"
+"    &lt;page view-id=\"/hotel.xhtml\"&gt;View hotel: #{hotel.name}&lt;/"
+"page&gt;\n"
+"    &lt;page view-id=\"/book.xhtml\"&gt;Book hotel: #{hotel.name}&lt;/"
+"page&gt;\n"
+"    &lt;page view-id=\"/confirm.xhtml\"&gt;Confirm: #{booking.description}"
+"&lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:344
+#, no-c-format
+msgid ""
+"Note that if this file is missing, the Seam application will continue to "
+"work perfectly! The only missing functionality will be the ability to switch "
+"workspaces."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:350
+#, no-c-format
+msgid "Workspace management and jPDL pageflow"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:351
+#, no-c-format
+msgid ""
+"When you use a jPDL pageflow definition, Seam switches to a conversation by "
+"restoring the current jBPM process state. This is a more flexible model "
+"since it allows the same <literal>view-id</literal> to have different "
+"descriptions depending upon the current <literal>&lt;page&gt;</literal> "
+"node. The description text is defined by the <literal>&lt;page&gt;</literal> "
+"node:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:354
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"shopping\"&gt;\n"
+"\n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"browse\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;page name=\"browse\" view-id=\"/browse.xhtml\"&gt;\n"
+"      &lt;description&gt;DVD Search: #{search.searchPattern}&lt;/"
+"description&gt;\n"
+"      &lt;transition to=\"browse\"/&gt;\n"
+"      &lt;transition name=\"checkout\" to=\"checkout\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"checkout\" view-id=\"/checkout.xhtml\"&gt;\n"
+"      &lt;description&gt;Purchase: &#36;#{cart.total}&lt;/description&gt;\n"
+"      &lt;transition to=\"checkout\"/&gt;\n"
+"      &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"complete\" view-id=\"/complete.xhtml\"&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:358
+#, no-c-format
+msgid "The conversation switcher"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:359
+#, no-c-format
+msgid ""
+"Include the following fragment in your JSP or facelets page to get a drop-"
+"down menu that lets you switch to any current conversation, or to any other "
+"page of the application:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:362
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{switcher.conversationIdOrOutcome}\"&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Find Issues\" itemValue=\"findIssue\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Create Issue\" itemValue=\"editIssue\"/"
+"&gt;\n"
+"    &lt;f:selectItems value=\"#{switcher.selectItems}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{switcher.select}\" value=\"Switch\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:363
+#, no-c-format
+msgid ""
+"In this example, we have a menu that includes an item for each conversation, "
+"together with two additional items that let the user begin a new "
+"conversation."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:377
+#, no-c-format
+msgid "The conversation list"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:378
+#, no-c-format
+msgid ""
+"The conversation list is very similar to the conversation switcher, except "
+"that it is displayed as a table:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:381
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{conversationList}\" var=\"entry\"\n"
+"        rendered=\"#{not empty conversationList}\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Workspace&lt;/f:facet&gt;\n"
+"        &lt;h:commandLink action=\"#{entry.select}\" value=\"#{entry."
+"description}\"/&gt;\n"
+"        &lt;h:outputText value=\"[current]\" rendered=\"#{entry.current}\"/"
+"&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Activity&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{entry.startDatetime}\"&gt;\n"
+"            &lt;f:convertDateTime type=\"time\" pattern=\"hh:mm a\"/&gt;\n"
+"        &lt;/h:outputText&gt;\n"
+"        &lt;h:outputText value=\" - \"/&gt;\n"
+"        &lt;h:outputText value=\"#{entry.lastDatetime}\"&gt;\n"
+"            &lt;f:convertDateTime type=\"time\" pattern=\"hh:mm a\"/&gt;\n"
+"        &lt;/h:outputText&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"        &lt;h:commandButton action=\"#{entry.select}\" value=\"#{msg.Switch}"
+"\"/&gt;\n"
+"        &lt;h:commandButton action=\"#{entry.destroy}\" value=\"#{msg."
+"Destroy}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:382
+#, no-c-format
+msgid ""
+"We imagine that you will want to customize this for your own application."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:393
+#, no-c-format
+msgid ""
+"The conversation list is nice, but it takes up a lot of space on the page, "
+"so you probably don't want to put it on <emphasis>every</emphasis> page."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:396
+#, no-c-format
+msgid "Notice that the conversation list lets the user destroy workspaces."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:402
+#, no-c-format
+msgid "Breadcrumbs"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:403
+#, no-c-format
+msgid ""
+"Breadcrumbs are useful in applications which use a nested conversation "
+"model. The breadcrumbs are a list of links to conversations in the current "
+"conversation stack:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:406
+#, no-c-format
+msgid ""
+"&lt;t:dataList value=\"#{conversationStack}\" var=\"entry\"&gt;\n"
+"    &lt;h:outputText value=\" | \"/&gt; \n"
+"    &lt;h:commandLink value=\"#{entry.description}\" action=\"#{entry.select}"
+"\"/&gt;\n"
+"&lt;/t:dataList&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:407
+#, no-c-format
+msgid ""
+"Notice that here we are using the MyFaces <literal>&lt;t:dataList&gt;</"
+"literal> component, since JSF amazingly does not provide any standard "
+"component for looping."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:424
+#, no-c-format
+msgid "Conversational components and JSF component bindings"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:425
+#, no-c-format
+msgid ""
+"Conversational components have one minor limitation: they cannot be used to "
+"hold bindings to JSF components. (We generally prefer not to use this "
+"feature of JSF unless absolutely necessary, since it creates a hard "
+"dependency from application logic to the view.) On a postback request, "
+"component bindings are updated during the Restore View phase, before the "
+"Seam conversation context has been restored."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:428
+#, no-c-format
+msgid ""
+"To work around this use an event scoped component to store the component "
+"bindings and inject it into the conversation scoped component that requires "
+"it."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:431
+#, no-c-format
+msgid ""
+"@Name(\"grid\")\n"
+"@Scope(ScopeType.EVENT)\n"
+"public class Grid\n"
+"{\n"
+"    private HtmlPanelGrid htmlPanelGrid;\n"
+"\n"
+"    // getters and setters\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:432
+#, no-c-format
+msgid ""
+"@Name(\"gridEditor\")\n"
+"@Scope(ScopeType.CONVERSATION)\n"
+"public class GridEditor\n"
+"{\n"
+"    @In(required=false)\n"
+"    private Grid grid;\n"
+"    \n"
+"    ...\n"
+"}"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Drools.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Drools.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Drools.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,281 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Drools.xml:10
+#, no-c-format
+msgid "Seam and JBoss Rules"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:11
+#, no-c-format
+msgid ""
+"Seam makes it easy to call JBoss Rules (Drools) rulebases from Seam "
+"components or jBPM process definitions."
+msgstr ""
+
+#. Tag: title
+#: Drools.xml:15
+#, no-c-format
+msgid "Installing rules"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:16
+#, no-c-format
+msgid ""
+"The first step is to make an instance of <literal>org.drools.RuleBase</"
+"literal> available in a Seam context variable. In most rules-driven "
+"applications, rules need to be dynamically deployable, so you will need to "
+"implement some solution that allows you to deploy rules and make them "
+"available to Seam (a future release of Drools will provide a Rule Server "
+"that solves this problem). For testing purposes, Seam provides a built-in "
+"component that compiles a static set of rules from the classpath. You can "
+"install this component via <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:19
+#, no-c-format
+msgid ""
+"&lt;drools:rule-base name=\"policyPricingRules\"&gt;\n"
+"    &lt;drools:rule-files&gt;\n"
+"        &lt;value&gt;policyPricingRules&lt;/value&gt;\n"
+"    &lt;/drools:rule-files&gt;\n"
+"&lt;/drools:rule-base&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:20
+#, no-c-format
+msgid ""
+"This component compiles rules from a set of <literal>.drl</literal> files "
+"and caches an instance of <literal>org.drools.RuleBase</literal> in the Seam "
+"<literal>APPLICATION</literal> context. Note that it is quite likely that "
+"you will need to install multiple rule bases in a rule-driven application."
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:23
+#, no-c-format
+msgid ""
+"If you want to use a Drools DSL, you alse need to specify the DSL definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:26
+#, no-c-format
+msgid ""
+"&lt;drools:rule-base name=\"policyPricingRules\" dsl-file=\"policyPricing.dsl"
+"\"&gt;\n"
+"    &lt;drools:rule-files&gt;\n"
+"        &lt;value&gt;policyPricingRules&lt;/value&gt;\n"
+"    &lt;/drools:rule-files&gt;\n"
+"&lt;/drools:rule-base&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:27
+#, no-c-format
+msgid ""
+"Next, we need to make an instance of <literal>org.drools.WorkingMemory</"
+"literal> available to each conversation. (Each <literal>WorkingMemory</"
+"literal> accumulates facts relating to the current conversation.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:30
+#, no-c-format
+msgid ""
+"&lt;drools:managed-working-memory name=\"policyPricingWorkingMemory\" auto-"
+"create=\"true\" rule-base=\"#{policyPricingRules}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:31
+#, no-c-format
+msgid ""
+"Notice that we gave the <literal>policyPricingWorkingMemory</literal> a "
+"reference back to our rule base via the <literal>ruleBase</literal> "
+"configuration property."
+msgstr ""
+
+#. Tag: title
+#: Drools.xml:37
+#, no-c-format
+msgid "Using rules from a Seam component"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:38
+#, no-c-format
+msgid ""
+"We can now inject our <literal>WorkingMemory</literal> into any Seam "
+"component, assert facts, and fire rules:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:41
+#, no-c-format
+msgid ""
+"@In WorkingMemory policyPricingWorkingMemory;\n"
+"\n"
+"@In Policy policy;\n"
+"@In Customer customer;\n"
+"\n"
+"public void pricePolicy() throws FactException\n"
+"{\n"
+"    policyPricingWorkingMemory.assertObject(policy);\n"
+"    policyPricingWorkingMemory.assertObject(customer);\n"
+"    policyPricingWorkingMemory.fireAllRules();\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Drools.xml:45
+#, no-c-format
+msgid "Using rules from a jBPM process definition"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:46
+#, no-c-format
+msgid ""
+"You can even allow a rule base to act as a jBPM action handler, decision "
+"handler, or assignment handler&mdash;in either a pageflow or business "
+"process definition."
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:49
+#, no-c-format
+msgid ""
+"&lt;decision name=\"approval\"&gt;\n"
+"         \n"
+"    &lt;handler class=\"org.jboss.seam.drools.DroolsDecisionHandler\"&gt;\n"
+"        &lt;workingMemoryName&gt;orderApprovalRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"        &lt;assertObjects&gt;\n"
+"            &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"            &lt;element&gt;#{order}&lt;/element&gt;\n"
+"            &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"        &lt;/assertObjects&gt;\n"
+"    &lt;/handler&gt;\n"
+"    \n"
+"    &lt;transition name=\"approved\" to=\"ship\"&gt;\n"
+"        &lt;action class=\"org.jboss.seam.drools.DroolsActionHandler\"&gt;\n"
+"            &lt;workingMemoryName&gt;shippingRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"            &lt;assertObjects&gt;\n"
+"                &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"            &lt;/assertObjects&gt;\n"
+"        &lt;/action&gt;\n"
+"    &lt;/transition&gt;\n"
+"    \n"
+"    &lt;transition name=\"rejected\" to=\"cancelled\"/&gt;\n"
+"    \n"
+"&lt;/decision&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:50
+#, no-c-format
+msgid ""
+"The <literal>&lt;assertObjects&gt;</literal> element specifies EL "
+"expressions that return an object or collection of objects to be asserted as "
+"facts into the <literal>WorkingMemory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:53
+#, no-c-format
+msgid "There is also support for using Drools for jBPM task assignments:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:56
+#, no-c-format
+msgid ""
+"&lt;task-node name=\"review\"&gt;\n"
+"    &lt;task name=\"review\" description=\"Review Order\"&gt;\n"
+"        &lt;assignment handler=\"org.jboss.seam.drools."
+"DroolsAssignmentHandler\"&gt;\n"
+"            &lt;workingMemoryName&gt;orderApprovalRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"            &lt;assertObjects&gt;\n"
+"                &lt;element&gt;#{actor}&lt;/element&gt;\n"
+"                &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"            &lt;/assertObjects&gt;\n"
+"        &lt;/assignment&gt;\n"
+"    &lt;/task&gt;\n"
+"    &lt;transition name=\"rejected\" to=\"cancelled\"/&gt;\n"
+"    &lt;transition name=\"approved\" to=\"approved\"/&gt;\n"
+"&lt;/task-node&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:57
+#, no-c-format
+msgid ""
+"Certain objects are available to the rules as Drools globals, namely the "
+"jBPM <literal>Assignable</literal>, as <literal>assignable</literal> and a "
+"Seam <literal>Decision</literal> object, as <literal>decision</literal>. "
+"Rules which handle decisions should call <literal>decision.setOutcome"
+"(\"result\")</literal> to determine the result of the decision. Rules which "
+"perform assignments should set the actor id using the <literal>Assignable</"
+"literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:60
+#, no-c-format
+msgid ""
+"package org.jboss.seam.examples.shop\n"
+"\n"
+"import org.jboss.seam.drools.Decision\n"
+"\n"
+"global Decision decision\n"
+"\n"
+"rule \"Approve Order For Loyal Customer\"\n"
+"  when\n"
+"    Customer( loyaltyStatus == \"GOLD\" )\n"
+"    Order( totalAmount &lt;= 10000 )\n"
+"  then\n"
+"    decision.setOutcome(\"approved\");\n"
+"end"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:61
+#, no-c-format
+msgid ""
+"package org.jboss.seam.examples.shop\n"
+"\n"
+"import org.jbpm.taskmgmt.exe.Assignable\n"
+"\n"
+"global Assignable assignable\n"
+"\n"
+"rule \"Assign Review For Small Order\"\n"
+"  when\n"
+"    Order( totalAmount &lt;= 100 )\n"
+"  then\n"
+"    assignable.setPooledActors( new String[] {\"reviewers\"} );\n"
+"end"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Elenhancements.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Elenhancements.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Elenhancements.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,221 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Elenhancements.xml:10
+#, no-c-format
+msgid "Expression language enhancements"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:11
+#, no-c-format
+msgid ""
+"The standard Unified Expression Language (EL) assumes that any parameters to "
+"a method expression will be provided by Java code. This means that a method "
+"with parameters cannot be used as a JSF method binding. Seam provides an "
+"enhancement to the EL that allows parameters to be included in a method "
+"expression itself. This applies to <emphasis>any</emphasis> Seam method "
+"expression, including any JSF method binding, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:14
+#, no-c-format
+msgid ""
+"&lt;s:commandButton action=\"#{hotelBooking.bookHotel(hotel)}\" value=\"Book "
+"Hotel\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:16
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:17
+#, no-c-format
+msgid ""
+"To use this feature in Facelets, you will need to declare a special view "
+"handler, <literal>SeamFaceletViewHandler</literal> in <literal>faces-config."
+"xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:20
+#, no-c-format
+msgid ""
+"&lt;faces-config&gt;\n"
+"    &lt;application&gt;\n"
+"        &lt;view-handler&gt;org.jboss.seam.ui.facelet."
+"SeamFaceletViewHandler&lt;/view-handler&gt;\n"
+"    &lt;/application&gt;\n"
+"&lt;/faces-config&gt;"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:24
+#, no-c-format
+msgid "Usage"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:25
+#, no-c-format
+msgid "Parameters are surrounded by parentheses, and separated by commas:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:28
+#, no-c-format
+msgid ""
+"&lt;h:commandButton action=\"#{hotelBooking.bookHotel(hotel, user)}\" value="
+"\"Book Hotel\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:29
+#, no-c-format
+msgid ""
+"The parameters <literal>hotel</literal> and <literal>user</literal> will be "
+"evaluated as value expressions and passed to the <literal>bookHotel()</"
+"literal> method of the component. This gives you an alternative to the use "
+"of <literal>@In</literal>."
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:32
+#, no-c-format
+msgid "Any value expression may be used as a parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:35
+#, no-c-format
+msgid ""
+"&lt;h:commandButton action=\"#{hotelBooking.bookHotel(hotel.id, user."
+"username)}\" value=\"Book Hotel\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:36
+#, no-c-format
+msgid "You may even pass literal strings using single or double quotes:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:39
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=&#8221;#{printer.println( &#8216;Hello world!"
+"&#8217; )}&#8221; value=&#8221;Hello&#8221;/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:40
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=&#8217;#{printer.println( &#8220;Hello "
+"again&#8221; )}&#8217; value=&#8217;Hello&#8217;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:41
+#, no-c-format
+msgid ""
+"You might even want to use this notation for all your action methods, even "
+"when you don&#8217;t have parameters to pass. This improves readability by "
+"making it clear that the expression is a method expression and not a value "
+"expression:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:44
+#, no-c-format
+msgid "&lt;s:link value=\"Cancel\" action=\"#{hotelBooking.cancel()}\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:48
+#, no-c-format
+msgid "Limitations"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:49
+#, no-c-format
+msgid "Please be aware of the following limitations:"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:53
+#, no-c-format
+msgid "Incompatibility with JSP 2.1"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:54
+#, no-c-format
+msgid ""
+"This extension is not currently compatible with JSP 2.1. So if you want to "
+"use this extension with JSF 1.2, you will need to use Facelets. The "
+"extension works correctly with JSP 2.0."
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:60
+#, no-c-format
+msgid "Calling a <literal>MethodExpression</literal> from Java code"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:61
+#, no-c-format
+msgid ""
+"Normally, when a <literal>MethodExpression</literal> or "
+"<literal>MethodBinding</literal> is created, the parameter types are passed "
+"in by JSF. In the case of a method binding, JSF assumes that there are no "
+"parameters to pass. With this extension, we can&#8217;t know the parameter "
+"types until after the expression has been evaluated. This has two minor "
+"consequences:"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:66
+#, no-c-format
+msgid ""
+"When you invoke a <literal>MethodExpression</literal> in Java code, "
+"parameters you pass may be ignored. Parameters defined in the expression "
+"will take precedence."
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:71
+#, no-c-format
+msgid ""
+"Ordinarily, it is safe to call <literal>methodExpression.getMethodInfo()."
+"getParamTypes()</literal> at any time. For an expression with parameters, "
+"you must first invoke the <literal>MethodExpression</literal> before calling "
+"<literal>getParamTypes()</literal>."
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:76
+#, no-c-format
+msgid ""
+"Both of these cases are exceedingly rare and only apply when you want to "
+"invoke the <literal>MethodExpression</literal> by hand in Java code."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Events.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Events.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Events.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1430 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Events.xml:10
+#, no-c-format
+msgid "Events, interceptors and exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:11
+#, no-c-format
+msgid ""
+"Complementing the contextual component model, there are two further basic "
+"concepts that facilitate the extreme loose-coupling that is the distinctive "
+"feature of Seam applications. The first is a strong event model where events "
+"may be mapped to event listeners via JSF-like method binding expressions. "
+"The second is the pervasive use of annotations and interceptors to apply "
+"cross-cutting concerns to components which implement business logic."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:14
+#, no-c-format
+msgid "Seam events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:15
+#, no-c-format
+msgid ""
+"The Seam component model was developed for use with <emphasis>event-driven "
+"applications</emphasis>, specifically to enable the development of fine-"
+"grained, loosely-coupled components in a fine-grained eventing model. Events "
+"in Seam come in several types, most of which we have already seen:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:20
+#, no-c-format
+msgid "JSF events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:25
+#, no-c-format
+msgid "jBPM transition events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:30
+#, no-c-format
+msgid "Seam page actions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:35
+#, no-c-format
+msgid "Seam component-driven events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:40
+#, no-c-format
+msgid "Seam contextual events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:45
+#, no-c-format
+msgid ""
+"All of these various kinds of events are mapped to Seam components via JSF "
+"EL method binding expressions. For a JSF event, this is defined in the JSF "
+"template:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:48
+#, no-c-format
+msgid ""
+"&lt;h:commandButton value=\"Click me!\" action=\"#{helloWorld.sayHello}\"/"
+"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:49
+#, no-c-format
+msgid ""
+"For a jBPM transition event, it is specified in the jBPM process definition "
+"or pageflow definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:52
+#, no-c-format
+msgid ""
+"&lt;start-page name=\"hello\" view-id=\"/hello.jsp\"&gt;\n"
+"    &lt;transition to=\"hello\"&gt;\n"
+"        &lt;action expression=\"#{helloWorld.sayHello}\"/&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/start-page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:53
+#, no-c-format
+msgid ""
+"You can find out more information about JSF events and jBPM events "
+"elsewhere. Lets concentrate for now upon the two additional kinds of events "
+"defined by Seam."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:56
+#, no-c-format
+msgid "Page actions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:57
+#, no-c-format
+msgid ""
+"A Seam page action is an event that occurs just before we render a page. We "
+"declare page actions in <literal>WEB-INF/pages.xml</literal>. We can define "
+"a page action for either a particular JSF view id:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:60
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\" action=\"#{helloWorld.sayHello}\"/&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:61
+#, no-c-format
+msgid ""
+"Or we can use a wildcard to specify an action that applies to all view ids "
+"that match the pattern:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:64
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello/*\" action=\"#{helloWorld.sayHello}\"/&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:65
+#, no-c-format
+msgid ""
+"If multiple wildcarded page actions match the current view-id, Seam will "
+"call all the actions, in order of least-specific to most-specific."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:68
+#, no-c-format
+msgid ""
+"The page action method can return a JSF outcome. If the outcome is non-null, "
+"Seam will delegate to the defined JSFadn Seam navigation rules and a "
+"different view may end up being rendered."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:71
+#, no-c-format
+msgid ""
+"Furthermore, the view id mentioned in the <literal>&lt;page&gt;</literal> "
+"element need not correspond to a real JSP or Facelets page! So, we can "
+"reproduce the functionality of a traditional action-oriented framework like "
+"Struts or WebWork using page actions. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:74
+#, no-c-format
+msgid "TODO: translate struts action into page action"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:75
+#, no-c-format
+msgid ""
+"This is quite useful if you want to do complex things in response to non-"
+"faces requests (for example, HTTP GET requests)."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:78
+#, no-c-format
+msgid "Page parameters"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:79
+#, no-c-format
+msgid ""
+"A JSF faces request (a form submission) encapsulates both an \"action\" (a "
+"method binding) and \"parameters\" (input value bindings). A page action "
+"might also needs parameters!"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:82
+#, no-c-format
+msgid ""
+"Since GET requests are bookmarkable, page parameters are passed as human-"
+"readable request parameters. (Unlike JSF form inputs, which are anything "
+"but!)"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:85
+#, no-c-format
+msgid ""
+"Seam lets us provide a value binding that maps a named request parameter to "
+"an attribute of a model object."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:88
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\" action=\"#{helloWorld.sayHello}\"&gt;\n"
+"        &lt;param name=\"firstName\" value=\"#{person.firstName}\"/&gt;\n"
+"        &lt;param name=\"lastName\" value=\"#{person.lastName}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:89
+#, no-c-format
+msgid ""
+"The <literal>&lt;param&gt;</literal> declaration is bidirectional, just like "
+"a value binding for a JSF input:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:94
+#, no-c-format
+msgid ""
+"When a non-faces (GET) request for the view id occurs, Seam sets the value "
+"of the named request parameter onto the model object, after performing "
+"appropriate type conversions."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:99
+#, no-c-format
+msgid ""
+"Any <literal>&lt;s:link&gt;</literal> or <literal>&lt;s:button&gt;</literal> "
+"transparently includes the request parameter. The value of the parameter is "
+"determined by evaluating the value binding during the render phase (when the "
+"<literal>&lt;s:link&gt;</literal> is rendered)."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:104
+#, no-c-format
+msgid ""
+"Any navigation rule with a <literal>&lt;redirect/&gt;</literal> to the view "
+"id transparently includes the request parameter. The value of the parameter "
+"is determined by evaluating the value binding at the end of the invoke "
+"application phase."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:109
+#, no-c-format
+msgid ""
+"The value is transparently propagated with any JSF form submission for the "
+"page with the given view id. (This means that view parameters behave like "
+"<literal>PAGE</literal>-scoped context variables for faces requests."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:114
+#, no-c-format
+msgid ""
+"The essential idea behind all this is that <emphasis>however</emphasis> we "
+"get from any other page to <literal>/hello.jsp</literal> (or from <literal>/"
+"hello.jsp</literal> back to <literal>/hello.jsp</literal>), the value of the "
+"model attribute referred to in the value binding is \"remembered\", without "
+"the need for a conversation (or other server-side state)."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:117
+#, no-c-format
+msgid ""
+"This all sounds pretty complex, and you're probably wondering if such an "
+"exotic construct is really worth the effort. Actually, the idea is very "
+"natural once you \"get it\". It is definitely worth taking the time to "
+"understand this stuff. Page parameters are the most elegant way to propagate "
+"state across a non-faces request. They are especially cool for problems like "
+"search screens with bookmarkable results pages, where we would like to be "
+"able to write our application code to handle both POST and GET requests with "
+"the same code. Page parameters eliminate repetitive listing of request "
+"parameters in the view definition and make redirects much easier to code."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:120
+#, no-c-format
+msgid ""
+"Note that you don't need an actual page action method binding to use a page "
+"parameter. The following is perfectly valid:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:123
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\"&gt;\n"
+"        &lt;param name=\"firstName\" value=\"#{person.firstName}\"/&gt;\n"
+"        &lt;param name=\"lastName\" value=\"#{person.lastName}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:124
+#, no-c-format
+msgid "You can even specify a JSF converter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:127
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/calculator.jsp\" action=\"#{calculator.calculate}"
+"\"&gt;\n"
+"        &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"        &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"        &lt;param name=\"op\" converterId=\"com.my.calculator."
+"OperatorConverter\" value=\"#{calculator.op}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:128
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/calculator.jsp\" action=\"#{calculator.calculate}"
+"\"&gt;\n"
+"        &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"        &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"        &lt;param name=\"op\" converter=\"#{operatorConverter}\" value=\"#"
+"{calculator.op}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:129
+#, no-c-format
+msgid "Navigation"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:130
+#, no-c-format
+msgid ""
+"You can use standard JSF navigation rules defined in <literal>faces-config."
+"xml</literal> in a Seam application. However, JSF navigation rules have a "
+"number of annoying limitations:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:135
+#, no-c-format
+msgid ""
+"It is not possible to specify request parameters to be used when redirecting."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:140
+#, no-c-format
+msgid "It is not possible to begin or end conversations from a rule."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:145
+#, no-c-format
+msgid ""
+"Rules work by evaluating the return value of the action method; it is not "
+"possible to evaluate an arbitrary EL expression."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:150
+#, no-c-format
+msgid ""
+"A further problem is that \"orchestration\" logic gets scattered between "
+"<literal>pages.xml</literal> and <literal>faces-config.xml</literal>. It's "
+"better to unify this logic into <literal>pages.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:153
+#, no-c-format
+msgid "This JSF navigation rule:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:156
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"    &lt;from-view-id&gt;/editDocument.xhtml&lt;/from-view-id&gt;\n"
+"    \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-action&gt;#{documentEditor.update}&lt;/from-action&gt;\n"
+"        &lt;from-outcome&gt;success&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/viewDocument.xhtml&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"    \n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:157
+#, no-c-format
+msgid "Can be rewritten as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:160
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if-outcome=\"success\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:161
+#, no-c-format
+msgid ""
+"But it would be even nicer if we didn't have to pollute our "
+"<literal>DocumentEditor</literal> component with string-valued return values "
+"(the JSF outcomes). So Seam lets us write:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:164
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\" \n"
+"                   evaluate=\"#{documentEditor.errors.size}\"&gt;\n"
+"        &lt;rule if-outcome=\"0\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:165
+#, no-c-format
+msgid "Or even:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:168
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:169
+#, no-c-format
+msgid ""
+"The first form evaluates a value binding to determine the outcome value to "
+"be used by the subsequent rules. The second approach ignores the outcome and "
+"evaluates a value binding for each possible rule."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:172
+#, no-c-format
+msgid ""
+"Of course, when an update succeeds, we probably want to end the current "
+"conversation. We can do that like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:175
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:176
+#, no-c-format
+msgid ""
+"But ending the conversation loses any state associated with the "
+"conversation, including the document we are currently interested in! One "
+"solution would be to use an immediate render instead of a redirect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:179
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:180
+#, no-c-format
+msgid ""
+"But the correct solution is to pass the document id as a request parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:183
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"&gt;\n"
+"                &lt;param name=\"documentId\" value=\"#{documentEditor."
+"documentId}\"/&gt;\n"
+"            &lt;/redirect&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:184
+#, no-c-format
+msgid ""
+"Null outcomes are a special case in JSF. The null outcome is interpreted to "
+"mean \"redisplay the page\". The following navigation rule matches any non-"
+"null outcome, but <emphasis>not</emphasis> the null outcome:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:187
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule&gt;\n"
+"            &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:188
+#, no-c-format
+msgid ""
+"If you want to perform navigation when a null outcome occurs, use the "
+"following form instead:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:191
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:192
+#, no-c-format
+msgid ""
+"Fine-grained files for definition of navigation, page actions and parameters"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:193
+#, no-c-format
+msgid ""
+"If you have a lot of different page actions and page parameters, or even "
+"just a lot of navigation rules, you will almost certainly want to split the "
+"declarations up over multiple files. You can define actions and parameters "
+"for a page with the view id <literal>/calc/calculator.jsp</literal> in a "
+"resource named <literal>calc/calculator.page.xml</literal>. The root element "
+"in this case is the <literal>&lt;page&gt;</literal> element, and the view id "
+"is implied:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:196
+#, no-c-format
+msgid ""
+"&lt;page action=\"#{calculator.calculate}\"&gt;\n"
+"    &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"    &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"    &lt;param name=\"op\" converter=\"#{operatorConverter}\" value=\"#"
+"{calculator.op}\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:197
+#, no-c-format
+msgid "Component-driven events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:198
+#, no-c-format
+msgid ""
+"Seam components can interact by simply calling each others methods. Stateful "
+"components may even implement the observer/observable pattern. But to enable "
+"components to interact in a more loosely-coupled fashion than is possible "
+"when the components call each others methods directly, Seam provides "
+"<emphasis>component-driven events</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:201
+#, no-c-format
+msgid ""
+"We specify event listeners (observers) in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:204
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;event type=\"hello\"&gt;\n"
+"        &lt;action expression=\"#{helloListener.sayHelloBack}\"/&gt;\n"
+"        &lt;action expression=\"#{logger.logHello}\"/&gt;\n"
+"    &lt;/event&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:205
+#, no-c-format
+msgid "Where the <emphasis>event type</emphasis> is just an arbitrary string."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:208
+#, no-c-format
+msgid ""
+"When an event occurs, the actions registered for that event will be called "
+"in the order they appear in <literal>components.xml</literal>. How does a "
+"component raise an event? Seam provides a built-in component for this."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:211
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World!\");\n"
+"        Events.instance().raiseEvent(\"hello\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:212
+#, no-c-format
+msgid "Or you can use an annotation."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:215
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    @RaiseEvent(\"hello\")\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World!\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:216
+#, no-c-format
+msgid ""
+"Notice that this event producer has no dependency upon event consumers. The "
+"event listener may now be implemented with absolutely no dependency upon the "
+"producer:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:219
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    public void sayHelloBack() {\n"
+"        FacesMessages.instance().add(\"Hello to you too!\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:220
+#, no-c-format
+msgid ""
+"The method binding defined in <literal>components.xml</literal> above takes "
+"care of mapping the event to the consumer. If you don't like futzing about "
+"in the <literal>components.xml</literal> file, you can use an annotation "
+"instead:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:223
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    @Observer(\"hello\")\n"
+"    public void sayHelloBack() {\n"
+"        FacesMessages.instance().add(\"Hello to you too!\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:224
+#, no-c-format
+msgid ""
+"You might wonder why I've not mentioned anything about event objects in this "
+"discussion. In Seam, there is no need for an event object to propagate state "
+"between event producer and listener. State is held in the Seam contexts, and "
+"is shared between components. However, if you really want to pass an event "
+"object, you can:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:227
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    private String name;\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World, my name is #0.\", "
+"name);\n"
+"        Events.instance().raiseEvent(\"hello\", name);\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:228
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    @Observer(\"hello\")\n"
+"    public void sayHelloBack(String name) {\n"
+"        FacesMessages.instance().add(\"Hello #0!\", name);\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:229
+#, no-c-format
+msgid "Contextual events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:230
+#, no-c-format
+msgid ""
+"Seam defines a number of built-in events that the application can use to "
+"perform special kinds of framework integration. The events are:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:235
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preSetVariable.&lt;name&gt;</literal> &mdash; called "
+"when the context variable &lt;name&gt; is set"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:240
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postSetVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is set"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:245
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preRemoveVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is unset"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:250
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postRemoveVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is unset"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:255
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preDestroyContext.&lt;SCOPE&gt;</literal> &mdash; "
+"called before the &lt;SCOPE&gt; context is destroyed"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:260
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postDestroyContext.&lt;SCOPE&gt;</literal> &mdash; "
+"called after the &lt;SCOPE&gt; context is destroyed"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:265
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beginConversation </literal>&mdash; called whenever "
+"a long-running conversation begins"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:270
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endConversation </literal>&mdash; called whenever a "
+"long-running conversation ends"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:275
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beginPageflow.&lt;name&gt; </literal>&mdash; called "
+"when the pageflow &lt;name&gt; begins"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:280
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endPageflow.&lt;name&gt; </literal>&mdash; called "
+"when the pageflow &lt;name&gt; ends"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:285
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.createProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; is created"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:290
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; ends"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:295
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.initProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; is associated with the conversation"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:300
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.initTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is associated with the conversation"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:305
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.startTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is started"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:310
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is ended"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:315
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postCreate.&lt;name&gt; </literal>&mdash; called "
+"when the component &lt;name&gt; is created"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:320
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preDestroy.&lt;name&gt; </literal>&mdash; called "
+"when the component &lt;name&gt; is destroyed"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:325
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beforePhase </literal>&mdash; called before the "
+"start of a JSF phase"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:330
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.afterPhase </literal>&mdash; called after the end of "
+"a JSF phase"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:335
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postAuthenticate.&lt;name&gt; </literal>&mdash; "
+"called after a user is authenticated"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:340
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preAuthenticate.&lt;name&gt; </literal>&mdash; "
+"called before attempting to authenticate a user"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:345
+#, no-c-format
+msgid ""
+"Seam components may observe any of these events in just the same way they "
+"observe any other component-driven events."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:348
+#, no-c-format
+msgid "Seam interceptors"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:349
+#, no-c-format
+msgid ""
+"EJB 3.0 introduced a standard interceptor model for session bean components. "
+"To add an interceptor to a bean, you need to write a class with a method "
+"annotated <literal>@AroundInvoke</literal> and annotate the bean with an "
+"<literal>@Interceptors</literal> annotation that specifies the name of the "
+"interceptor class. For example, the following interceptor checks that the "
+"user is logged in before allowing invoking an action listener method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:352
+#, no-c-format
+msgid ""
+"public class LoggedInInterceptor {\n"
+"\n"
+"   @AroundInvoke\n"
+"   public Object checkLoggedIn(InvocationContext invocation) throws "
+"Exception {\n"
+"   \n"
+"      boolean isLoggedIn = Contexts.getSessionContext().get(\"loggedIn\")!"
+"=null;\n"
+"      if (isLoggedIn) {\n"
+"         //the user is already logged in\n"
+"         return invocation.proceed();\n"
+"      }\n"
+"      else {\n"
+"         //the user is not logged in, fwd to login page\n"
+"         return \"login\";\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:353
+#, no-c-format
+msgid ""
+"To apply this interceptor to a session bean which acts as an action "
+"listener, we must annotate the session bean <literal>@Interceptors"
+"(LoggedInInterceptor.class)</literal>. This is a somewhat ugly annotation. "
+"Seam builds upon the interceptor framework in EJB3 by allowing you to use "
+"<literal>@Interceptors</literal> as a meta-annotation. In our example, we "
+"would create an <literal>@LoggedIn</literal> annotation, as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:356
+#, no-c-format
+msgid ""
+"@Target(TYPE)\n"
+"@Retention(RUNTIME)\n"
+"@Interceptors(LoggedInInterceptor.class)\n"
+"public @interface LoggedIn {}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:357
+#, no-c-format
+msgid ""
+"We can now simply annotate our action listener bean with <literal>@LoggedIn</"
+"literal> to apply the interceptor."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:360
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"changePasswordAction\")\n"
+"@LoggedIn\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class ChangePasswordAction implements ChangePassword { \n"
+"    \n"
+"    ...\n"
+"    \n"
+"    public String changePassword() { ... }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:361
+#, no-c-format
+msgid ""
+"If interceptor ordering is important (it usually is), you can add "
+"<literal>@Interceptor</literal> annotations to your interceptor classes to "
+"specify a partial order of interceptors."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:364
+#, no-c-format
+msgid ""
+"@Interceptor(around={BijectionInterceptor.class,\n"
+"                     ValidationInterceptor.class,\n"
+"                     ConversationInterceptor.class},\n"
+"             within=RemoveInterceptor.class)\n"
+"public class LoggedInInterceptor\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:365
+#, no-c-format
+msgid ""
+"You can even have a \"client-side\" interceptor, that runs around any of the "
+"built-in functionality of EJB3:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:368
+#, no-c-format
+msgid ""
+"@Interceptor(type=CLIENT)\n"
+"public class LoggedInInterceptor\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:369
+#, no-c-format
+msgid ""
+"EJB interceptors are stateful, with a lifecycle that is the same as the "
+"component they intercept. For interceptors which do not need to maintain "
+"state, Seam lets you get a performance optimization by specifying "
+"<literal>@Interceptor(stateless=true)</literal>."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:372
+#, no-c-format
+msgid ""
+"Much of the functionality of Seam is implemented as a set of built-in Seam "
+"interceptors, including the interceptors named in the previous example. You "
+"don't have to explicitly specify these interceptors by annotating your "
+"components; they exist for all interceptable Seam components."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:375
+#, no-c-format
+msgid ""
+"You can even use Seam interceptors with JavaBean components, not just EJB3 "
+"beans!"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:378
+#, no-c-format
+msgid ""
+"EJB defines interception not only for business methods (using "
+"<literal>@AroundInvoke</literal>), but also for the lifecycle methods "
+"<literal>@PostConstruct</literal>, <literal>@PreDestroy</literal>, "
+"<literal>@PrePassivate</literal> and <literal>@PostActive</literal>. Seam "
+"supports all these lifecycle methods on both component and interceptor not "
+"only for EJB3 beans, but also for JavaBean components (except "
+"<literal>@PreDestroy</literal> which is not meaningful for JavaBean "
+"components)."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:381
+#, no-c-format
+msgid "Managing exceptions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:382
+#, no-c-format
+msgid ""
+"JSF is surprisingly limited when it comes to exception handling. As a "
+"partial workaround for this problem, Seam lets you define how a particular "
+"class of exception is to be treated by annotating the exception class, or "
+"declaring the exception class in an XML file. This facility is meant to be "
+"combined with the EJB 3.0-standard <literal>@ApplicationException</literal> "
+"annotation which specifies whether the exception should cause a transaction "
+"rollback."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:385
+#, no-c-format
+msgid "Exceptions and transactions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:386
+#, no-c-format
+msgid ""
+"EJB specifies well-defined rules that let us control whether an exception "
+"immediately marks the current transaction for rollback when it is thrown by "
+"a business method of the bean: <emphasis>system exceptions</emphasis> always "
+"cause a transaction rollback, <emphasis>application exceptions</emphasis> do "
+"not cause a rollback by default, but they do if "
+"<literal>@ApplicationException(rollback=true)</literal> is specified. (An "
+"application exception is any checked exception, or any unchecked exception "
+"annotated <literal>@ApplicationException</literal>. A system exception is "
+"any unchecked exception without an <literal>@ApplicationException</literal> "
+"annotation.)"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:389
+#, no-c-format
+msgid ""
+"Note that there is a difference between marking a transaction for rollback, "
+"and actually rolling it back. The exception rules say that the transaction "
+"should be marked rollback only, but it may still be active after the "
+"exception is thrown."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:392
+#, no-c-format
+msgid ""
+"Seam applies the EJB 3.0 exception rollback rules also to Seam JavaBean "
+"components."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:395
+#, no-c-format
+msgid ""
+"But these rules only apply in the Seam component layer. What about an "
+"exception that is uncaught and propagates out of the Seam component layer, "
+"and out of the JSF layer? Well, it is always wrong to leave a dangling "
+"transaction open, so Seam rolls back any active transaction when an "
+"exception occurs and is uncaught in the Seam component layer."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:398
+#, no-c-format
+msgid "Enabling Seam exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:399
+#, no-c-format
+msgid ""
+"To enable Seam's exception handling, we need to make sure we have the master "
+"servlet filter declared in <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:402
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.servlet.SeamFilter&lt;/filter-"
+"class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:403
+#, no-c-format
+msgid "Using annotations for exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:404
+#, no-c-format
+msgid ""
+"The following exception results in a HTTP 404 error whenever it propagates "
+"out of the Seam component layer. It does not roll back the current "
+"transaction immediately when thrown, but the transaction will be rolled back "
+"if it the exception is not caught by another Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:407
+#, no-c-format
+msgid ""
+"@HttpError(errorCode=404)\n"
+"public class ApplicationException extends Exception { ... }"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:408
+#, no-c-format
+msgid ""
+"This exception results in a browser redirect whenever it propagates out of "
+"the Seam component layer. It also ends the current conversation. It causes "
+"an immediate rollback of the current transaction."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:411
+#, no-c-format
+msgid ""
+"@Redirect(viewId=\"/failure.xhtml\", end=true)\n"
+"@ApplicationException(rollback=true)\n"
+"public class UnrecoverableApplicationException extends RuntimeException "
+"{ ... }"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:412
+#, no-c-format
+msgid ""
+"Note that <literal>@Redirect</literal> does not work for exceptions which "
+"occur during the render phase of the JSF lifecycle."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:415
+#, no-c-format
+msgid ""
+"This exception results in a redirect, along with a message to the user, when "
+"it propagates out of the Seam component layer. It also immediately rolls "
+"back the current transaction."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:418
+#, no-c-format
+msgid ""
+"@Redirect(viewId=\"/error.xhtml\", message=\"Unexpected error\")\n"
+"public class SystemException extends RuntimeException { ... }"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:419
+#, no-c-format
+msgid "Using XML for exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:420
+#, no-c-format
+msgid ""
+"Since we can't add annotations to all the exception classes we are "
+"interested in, Seam also lets us specify this functionality in "
+"<literal>pages.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:423
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   \n"
+"   &lt;exception class=\"javax.persistence.EntityNotFoundException\"&gt;\n"
+"      &lt;http-error error-code=\"404\"/&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"   &lt;exception class=\"javax.persistence.PersistenceException\"&gt;\n"
+"      &lt;end-conversation/&gt;\n"
+"      &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"          &lt;message&gt;Database access failed&lt;/message&gt;\n"
+"      &lt;/redirect&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"   &lt;exception&gt;\n"
+"      &lt;end-conversation/&gt;\n"
+"      &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"          &lt;message&gt;Unexpected failure&lt;/message&gt;\n"
+"      &lt;/redirect&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:424
+#, no-c-format
+msgid ""
+"The last <literal>&lt;exception&gt;</literal> declaration does not specify a "
+"class, and is a catch-all for any exception for which handling is not "
+"otherwise specified via annotations or in <literal>pages.xml</literal>."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Framework.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Framework.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Framework.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,828 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Framework.xml:10
+#, no-c-format
+msgid "The Seam Application Framework"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:11
+#, no-c-format
+msgid ""
+"Seam makes it really easy to create applications by writing plain Java "
+"classes with annotations, which don't need to extend any special interfaces "
+"or superclasses. But we can simplify some common programming tasks even "
+"further, by providing a set of pre-built components which can be re-used "
+"either by configuration in <literal>components.xml</literal> (for very "
+"simple cases) or extension."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:14
+#, no-c-format
+msgid ""
+"The <emphasis>Seam Application Framework</emphasis> can reduce the amount of "
+"code you need to write when doing basic database access in a web "
+"application, using either Hibernate or JPA."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:17
+#, no-c-format
+msgid ""
+"We should emphasize that the framework is extremely simple, just a handful "
+"of simple classes that are easy to understand and extend. The \"magic\" is "
+"in Seam itself&mdash;the same magic you use when creating any Seam "
+"application even without using this framework."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:21
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:22
+#, no-c-format
+msgid ""
+"The components provided by the Seam application framework may be used in one "
+"of two different approaches. The first way is to install and configure an "
+"instance of the component in <literal>components.xml</literal>, just like we "
+"have done with other kinds of built-in Seam components. For example, the "
+"following fragment from <literal>components.xml</literal> installs a "
+"component which can perform basic CRUD operations for a <literal>Contact</"
+"literal> entity:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:25
+#, no-c-format
+msgid ""
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" \n"
+"                       entity-manager=\"#{personDatabase}\"&gt;\n"
+"    &lt;framework:id&gt;#{param.personId}&lt;/framework:id&gt;\n"
+"&lt;/framework:entity-home&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:26
+#, no-c-format
+msgid ""
+"If that looks a bit too much like \"programming in XML\" for your taste, you "
+"can use extension instead:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:29
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; implements "
+"LocalPersonHome {\n"
+"    @RequestParameter String personId;\n"
+"    @In EntityManager personDatabase;\n"
+"    \n"
+"    public Object getId() { return personId; }\n"
+"    public EntityManager getEntityManager() { return personDatabase; }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:30
+#, no-c-format
+msgid ""
+"The second approach has one huge advantage: you can easily add extra "
+"functionality, and override the built-in functionality (the framework "
+"classes were carefully designed for extension and customization)."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:33
+#, no-c-format
+msgid ""
+"A second advantage is that your classes may be EJB stateful sessin beans, if "
+"you like. (They do not have to be, they can be plain JavaBean components if "
+"you prefer.)"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:36
+#, no-c-format
+msgid ""
+"At this time, the Seam Application Framework provides just four built-in "
+"components: <literal>EntityHome</literal> and <literal>HibernateEntityHome</"
+"literal> for CRUD, along with <literal>EntityQuery</literal> and "
+"<literal>HibernateEntityQuery</literal> for queries."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:39
+#, no-c-format
+msgid ""
+"The Home and Query components are written so that they can function with a "
+"scope of session, event or conversation. Which scope you use depends upon "
+"the state model you wish to use in your application."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:42
+#, no-c-format
+msgid ""
+"The Seam Application Framework only works with Seam-managed persistence "
+"contexts. By default, the components will look for a persistence context "
+"named <literal>entityManager</literal>."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:48
+#, no-c-format
+msgid "Home objects"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:49
+#, no-c-format
+msgid ""
+"A Home object provides persistence operations for a particular entity class. "
+"Suppose we have our trusty <literal>Person</literal> class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:52
+#, no-c-format
+msgid ""
+"@Entity\n"
+"public class Person {\n"
+"    @Id private Long id;\n"
+"    private String firstName;\n"
+"    private String lastName;\n"
+"    private Country nationality;\n"
+"    \n"
+"    //getters and setters...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:53
+#, no-c-format
+msgid ""
+"We can define a <literal>personHome</literal> component either via "
+"configuration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:56
+#, no-c-format
+msgid ""
+"&lt;framework:entity-home name=\"personHome\" entity-class=\"eg.Person\" /"
+"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:57
+#, no-c-format
+msgid "Or via extension:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:60
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:61
+#, no-c-format
+msgid ""
+"A Home object provides the following operations: <literal>persist()</"
+"literal>, <literal>remove()</literal>, <literal>update()</literal> and "
+"<literal>getInstance()</literal>. Before you can call the <literal>remove()</"
+"literal>, or <literal>update()</literal> operations, you must first set the "
+"identifier of the object you are interested in, using the <literal>setId()</"
+"literal> method."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:64
+#, no-c-format
+msgid "We can use a Home directly from a JSF page, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:67
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Create Person&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{personHome.instance."
+"firstName}\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{personHome.instance."
+"lastName}\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:68
+#, no-c-format
+msgid ""
+"Usually, it is much nicer to be able to refer to the <literal>Person</"
+"literal> merely as <literal>person</literal>, so let's make that possible by "
+"adding a line to <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:71
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:72
+#, no-c-format
+msgid ""
+"(If we are using configuration.) Or by adding a <literal>@Factory</literal> "
+"method to <literal>PersonHome</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:75
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:76
+#, no-c-format
+msgid ""
+"(If we are using extension.) This change simplifies our JSF page to the "
+"following:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:79
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Create Person&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{person.firstName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{person.lastName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:80
+#, no-c-format
+msgid ""
+"Well, that lets us create new <literal>Person</literal> entries. Yes, that "
+"is all the code that is required! Now, if we want to be able to display, "
+"update and delete pre-existing <literal>Person</literal> entries in the "
+"database, we need to be able to pass the entry identifier to the "
+"<literal>PersonHome</literal>. Page parameters are a great way to do that:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:83
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page viewid=\"/editPerson.jsp\"&gt;\n"
+"        &lt;param name=\"personId\" value=\"#{personHome.id}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:84
+#, no-c-format
+msgid "Now we can add the extra operations to our JSF page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:87
+#, no-c-format
+msgid ""
+"&lt;h1&gt;\n"
+"    &lt;h:outputText rendered=\"#{!personHome.managed}\" value=\"Create "
+"Person\"/&gt;\n"
+"    &lt;h:outputText rendered=\"#{personHome.managed}\" value=\"Edit Person"
+"\"/&gt;\n"
+"&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{person.firstName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{person.lastName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\" \n"
+"            rendered=\"#{!personHome.managed}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Update Person\" action=\"#{personHome."
+"update}\" \n"
+"            rendered=\"#{personHome.managed}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Delete Person\" action=\"#{personHome."
+"remove}\" \n"
+"            rendered=\"#{personHome.managed}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:88
+#, no-c-format
+msgid ""
+"When we link to the page with no request parameters, the page will be "
+"displayed as a \"Create Person\" page. When we provide a value for the "
+"<literal>personId</literal> request parameter, it will be an \"Edit Person\" "
+"page."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:91
+#, no-c-format
+msgid ""
+"Suppose we need to create <literal>Person</literal> entries with their "
+"nationality initialized. We can do that easily, via configuration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:94
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" \n"
+"                       new-instance=\"#{newPerson}\"/&gt;\n"
+"\n"
+"&lt;component name=\"newPerson\" \n"
+"           class=\"eg.Person\"&gt;\n"
+"    &lt;property name=\"nationality\"&gt;#{country}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:95
+#, no-c-format
+msgid "Or by extension:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:98
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:99
+#, no-c-format
+msgid ""
+"Of course, the <literal>Country</literal> could be an object managed by "
+"another Home object, for example, <literal>CountryHome</literal>."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:102
+#, no-c-format
+msgid ""
+"To add more sophisticated operations (association management, etc), we can "
+"just add methods to <literal>PersonHome</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:105
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"    public void migrate()\n"
+"    {\n"
+"        getInstance().setCountry(country);\n"
+"        update();\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:106
+#, no-c-format
+msgid ""
+"The Home object automatically displays faces messages when an operation is "
+"successful. To customize these messages we can, again, use configuration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:109
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\"\n"
+"                       entity-class=\"eg.Person\"\n"
+"                       new-instance=\"#{newPerson}\"&gt;\n"
+"    &lt;framework:created-message&gt;New person #{person.firstName} #{person."
+"lastName} \n"
+"        created&lt;/framework:created-message&gt;\n"
+"    &lt;framework:deleted-message&gt;Person #{person.firstName} #{person."
+"lastName}\n"
+"        deleted&lt;/framework:deleted-message&gt;\n"
+"    &lt;framework:updated-message&gt;Person #{person.firstName} #{person."
+"lastName} \n"
+"        updated&lt;/framework:updated-message&gt;\n"
+"&lt;/framework:entity-home&gt;\n"
+"\n"
+"&lt;component name=\"newPerson\" \n"
+"           class=\"eg.Person\"&gt;\n"
+"    &lt;property name=\"nationality\"&gt;#{country}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:110
+#, no-c-format
+msgid "Or extension:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:113
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"    protected String getCreatedMessage() { return \"New person #{person."
+"firstName} \n"
+"        #{person.lastName} created\"; }\n"
+"    protected String getUpdatedMessage() { return \"Person #{person."
+"firstName} \n"
+"        #{person.lastName} updated\"; }\n"
+"    protected String getDeletedMessage() { return \"Person #{person."
+"firstName} \n"
+"        #{person.lastName} deleted\"; }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:114
+#, no-c-format
+msgid ""
+"But the best way to specify the messages is to put them in a resource bundle "
+"known to Seam (the bundle named <literal>messages</literal>, by default)."
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:117
+#, no-c-format
+msgid ""
+"Person_created=New person #{person.firstName} #{person.lastName} created\n"
+"Person_deleted=Person #{person.firstName} #{person.lastName} deleted\n"
+"Person_updated=Person #{person.firstName} #{person.lastName} updated"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:118
+#, no-c-format
+msgid ""
+"This enables internationalization, and keeps your code and configuration "
+"clean of presentation concerns."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:121
+#, no-c-format
+msgid ""
+"The final step is to add validation functionality to the page, using "
+"<literal>&lt;s:validateAll&gt;</literal> and <literal>&lt;s:decorate&gt;</"
+"literal>, but I'll leave that for you to figure out."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:127
+#, no-c-format
+msgid "Query objects"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:128
+#, no-c-format
+msgid ""
+"If we need a list of all <literal>Person</literal> instance in the database, "
+"we can use a Query object. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:131
+#, no-c-format
+msgid ""
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:132
+#, no-c-format
+msgid "We can use it from a JSF page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:135
+#, no-c-format
+msgid ""
+"&lt;h1&gt;List of people&lt;/h1&gt;\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view-id=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:136
+#, no-c-format
+msgid "We probably need to support pagination:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:139
+#, no-c-format
+msgid ""
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\" \n"
+"                        order=\"lastName\" \n"
+"                        max-results=\"20\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:140
+#, no-c-format
+msgid "We'll use a page parameter to determine the page to display:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:143
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page viewid=\"/searchPerson.jsp\"&gt;\n"
+"        &lt;param name=\"firstResult\" value=\"#{people.firstResult}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:144
+#, no-c-format
+msgid "The JSF code for a pagination control is a bit verbose, but manageable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:147
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Search for people&lt;/h1&gt;\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view-id=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.previousExists}\" "
+"value=\"First Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"0\"/&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.previousExists}\" "
+"value=\"Previous Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.previousFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.nextExists}\" value="
+"\"Next Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.nextFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.nextExists}\" value="
+"\"Last Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.lastFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:148
+#, no-c-format
+msgid ""
+"Real search screens let the user enter a bunch of optional search criteria "
+"to narrow the list of results returned. The Query object lets you specify "
+"optional \"restrictions\" to support this important usecase:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:151
+#, no-c-format
+msgid ""
+"&lt;component name=\"examplePerson\" class=\"Person\"/&gt;\n"
+"        \n"
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\" \n"
+"                        order=\"lastName\" \n"
+"                        max-results=\"20\"&gt;\n"
+"    &lt;framework:restrictions&gt;\n"
+"        &lt;value&gt;lower(firstName) like lower( #{examplePerson.firstName} "
+"+ '&#37;' )&lt;/value&gt;\n"
+"        &lt;value&gt;lower(lastName) like lower( #{examplePerson.lastName} + "
+"'&#37;' )&lt;/value&gt;\n"
+"    &lt;/framework:restrictions&gt;\n"
+"&lt;/framework:entity-query&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:152
+#, no-c-format
+msgid "Notice the use of an \"example\" object."
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:155
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Search for people&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{examplePerson.firstName}"
+"\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{examplePerson.lastName}"
+"\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;&lt;h:commandButton value=\"Search\" action=\"/search.jsp\"/"
+"&gt;&lt;/div&gt;\n"
+"&lt;/h:form&gt;\n"
+"\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view-id=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:156
+#, no-c-format
+msgid ""
+"The examples in this section have all shown reuse by configuration. However, "
+"reuse by extension is equally possible for Query objects."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:162
+#, no-c-format
+msgid "Controller objects"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:163
+#, no-c-format
+msgid ""
+"A totally optional part of the Seam Application Framework is the class "
+"<literal>Controller</literal> and its subclasses <literal>EntityController</"
+"literal><literal>HibernateEntityController</literal> and "
+"<literal>BusinessProcessController</literal>. These classes provide nothing "
+"more than some convenience methods for access to commonly used built-in "
+"components and methods of built-in components. They help save a few "
+"keystrokes (characters can add up!) and provide a great launchpad for new "
+"users to explore the rich functionality built in to Seam."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:166
+#, no-c-format
+msgid ""
+"For example, here is what <literal>RegisterAction</literal> from the Seam "
+"registration example would look like:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:169
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"register\")\n"
+"public class RegisterAction extends EntityController implements Register\n"
+"{\n"
+"\n"
+"   @In private User user;\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = createQuery(\"select u.username from User u where u."
+"username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getResultList();\n"
+"      \n"
+"      if ( existing.size()==0 )\n"
+"      {\n"
+"         persist(user);\n"
+"         info(\"Registered new user #{user.username}\");\n"
+"         return \"/registered.jspx\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         addFacesMessage(\"User #{user.username} already exists\");\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:170
+#, no-c-format
+msgid "As you can see, its not an earthshattering improvement..."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Gettingstarted.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Gettingstarted.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Gettingstarted.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,588 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Gettingstarted.xml:10
+#, no-c-format
+msgid "Getting started with Seam, using seam-gen"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:11
+#, no-c-format
+msgid ""
+"The Seam distribution includes a command line utility that makes it really "
+"easy to set up an Eclipse project, generate some simple Seam skeleton code, "
+"and reverse engineer an application from a pre-existing database."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:14
+#, no-c-format
+msgid ""
+"This is the easy way to get your feet wet with Seam, and gives you some "
+"ammunition for next time you find yourself trapped in an elevator with one "
+"of those tedious Ruby guys ranting about how great and wonderful his new toy "
+"is for building totally trivial applications that put things in databases."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:17
+#, no-c-format
+msgid ""
+"In this release, seam-gen works best for people with JBoss AS. You can use "
+"the generated project with other J2EE or Java EE 5 application servers by "
+"making a few manual changes to the project configuration."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:20
+#, no-c-format
+msgid ""
+"You <emphasis>can</emphasis> use seam-gen without Eclipse, but in this "
+"tutorial, we want to show you how to use it in conjunction with Eclipse for "
+"debugging and integration testing. If you don't want to install Eclipse, you "
+"can still follow along with this tutorial&mdash;all steps can be peformed "
+"from the command line."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:23
+#, no-c-format
+msgid ""
+"Seam-gen is basically just a big ugly Ant script wrapped around Hibernate "
+"Tools, together with some templates. Which means it is easy to customize if "
+"you need to."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:27
+#, no-c-format
+msgid "Before you start"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:28
+#, no-c-format
+msgid ""
+"Make sure you have JDK 5 or JDK 6, JBoss AS 4.0.5 and Ant 1.6, along with "
+"recent versions of Eclipse, the JBoss IDE plugin for Eclipse and the TestNG "
+"plugin for Eclipse correctly installed before starting. Add your JBoss "
+"installation to the JBoss Server View in Eclipse. Start JBoss in debug mode. "
+"Finally, start a command prompt in the directory where you unzipped the Seam "
+"distribution."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:34
+#, no-c-format
+msgid "Setting up a new Eclipse project"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:35
+#, no-c-format
+msgid ""
+"The first thing we need to do is configure seam-gen for your environment: "
+"JBoss AS installation directory, Eclipse workspace, and database connection. "
+"It's easy, just type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:38
+#, no-c-format
+msgid ""
+"cd jboss-seam-1.1.x\n"
+"seam setup"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:39
+#, no-c-format
+msgid "And you will be prompted for the needed information:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:42
+#, no-c-format
+msgid ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam setup\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"setup:\n"
+"    [echo] Welcome to seam-gen :-)\n"
+"    [input] Enter your Java project workspace [C:/Projects]\n"
+"\n"
+"    [input] Enter your JBoss home directory [C:/Program Files/jboss-4.0.5."
+"GA]\n"
+"\n"
+"    [input] Enter the project name [myproject]\n"
+"helloworld\n"
+"    [input] Is this project deployed as an EAR (with EJB components) or a "
+"WAR \n"
+"        (with no EJB support) [ear] (ear,war,)\n"
+"\n"
+"    [input] Enter the Java package name for your session beans [com.mydomain."
+"helloworld]\n"
+"org.jboss.helloworld\n"
+"    [input] Enter the Java package name for your entity beans [org.jboss."
+"helloworld]\n"
+"\n"
+"    [input] Enter the Java package name for your test cases [org.jboss."
+"helloworld.test]\n"
+"\n"
+"    [input] What kind of database are you using? [hsql]\n"
+"    (hsql,mysql,oracle,postgres,mssql,db2,sybase,)\n"
+"mysql\n"
+"    [input] Enter the Hibernate dialect for your database [org.hibernate."
+"dialect.MySQLDialect]\n"
+"\n"
+"    [input] Enter the filesystem path to the JDBC driver jar [lib/hsqldb."
+"jar]\n"
+"../../mysql-connector.jar\n"
+"    [input] Enter JDBC driver class for your database [com.mysql.jdbc."
+"Driver]\n"
+"\n"
+"    [input] Enter the JDBC URL for your database [jdbc:mysql:///test]\n"
+"\n"
+"    [input] Enter database username [sa]\n"
+"gavin\n"
+"    [input] Enter database password []\n"
+"\n"
+"    [input] Are you working with tables that already exist in the database? "
+"[n] (y,n,)\n"
+"y\n"
+"    [input] Do you want to drop and recreate the database tables and data in "
+"import.sql \n"
+"    each time you deploy? [n] (y,n,)\n"
+"n\n"
+"[propertyfile] Creating new property file: C:&#92;Projects&#92;jboss-"
+"seam&#92;seam-gen&#92;build.properties\n"
+"     [echo] Installing JDBC driver jar to JBoss server\n"
+"     [echo] Type 'seam new-project' to create the new project\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 1 minute 17 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:43
+#, no-c-format
+msgid ""
+"The tool provides sensible defaults, which you can accept by just pressing "
+"enter at the prompt."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:46
+#, no-c-format
+msgid ""
+"The most important choice you need to make is between EAR deployment and WAR "
+"deployment of your project. EAR projects support EJB 3.0 and require Java EE "
+"5. WAR projects do not support EJB 3.0, but may be deployed to a J2EE "
+"environment. The packaging of a WAR is also simpler to understand. If you "
+"installed JBoss with the ejb3 profile, choose <literal>ear</literal>. "
+"Otherwise, choose <literal>war</literal>. We'll assume that you've chosen an "
+"EAR deployment for the rest of the tutorial, but you can follow exactly the "
+"same steps for a WAR deployment."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:49
+#, no-c-format
+msgid ""
+"If you are working with an existing data model, make sure you tell seam-gen "
+"that the tables already exist in the database."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:52
+#, no-c-format
+msgid ""
+"The settings are stored in <literal>seam-gen/build.properties</literal>, but "
+"you can also modify them simply by running <literal>seam setup</literal> a "
+"second time."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:55
+#, no-c-format
+msgid ""
+"Now we can create a new project in our Eclipse workspace directory, by "
+"typing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:58
+#, no-c-format
+msgid "seam new-project"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:59
+#, no-c-format
+msgid ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam new-project\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"copy-lib:\n"
+"     [echo] Copying project jars ...\n"
+"     [copy] Copying 32 files to C:&#92;Projects&#92;helloworld&#92;lib\n"
+"     [copy] Copying 9 files to C:&#92;Projects&#92;helloworld&#92;embedded-"
+"ejb\n"
+"\n"
+"file-copy-wtp:\n"
+"\n"
+"file-copy:\n"
+"     [echo] Copying project resources ...\n"
+"     [copy] Copying 12 files to C:&#92;Projects&#92;helloworld&#92;"
+"resources\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;helloworld&#92;resources\n"
+"     [copy] Copying 5 files to C:&#92;Projects&#92;helloworld&#92;view\n"
+"     [copy] Copying 5 files to C:&#92;Projects&#92;helloworld\n"
+"    [mkdir] Created dir: C:&#92;Projects&#92;helloworld&#92;src\n"
+"\n"
+"new-project:\n"
+"     [echo] A new Seam project was created in the C:/Projects directory\n"
+"     [echo] Add the project from inside Eclipse (or type 'seam explode') and "
+"go to http://localhost:\n"
+"8080/helloworld\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 7 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:60
+#, no-c-format
+msgid ""
+"This copies the Seam jars, dependent jars and the JDBC driver jar to a new "
+"Eclipse project, and generates all needed resources and configuration files, "
+"a facelets template file and stylesheet, along with Eclipse metadata and an "
+"Ant build script. The Eclipse project will be automatically deployed to an "
+"exploded directory structure in JBoss AS as soon as you add the project "
+"using <literal>New -&gt; Project... -&gt; Java Project -&gt; Next</literal>, "
+"typing the <literal>Project name</literal> (<literal>myproject</literal> in "
+"this case), selecting your Java SE 5 or Java SE 6 JRE and then clicking "
+"<literal>Finish</literal>. Do not select <literal>Create new project from "
+"existing source</literal>. Alternatively, you can deploy the project from "
+"outside Eclipse by typing <literal>seam explode</literal>."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:63
+#, no-c-format
+msgid ""
+"Go to <literal>http://localhost:8080/helloworld</literal> to see a welcome "
+"page. This is a facelets page, <literal>view/home.xhtml</literal>, using the "
+"template <literal>view/layout/template.xhtml</literal>. You can edit this "
+"page, or the template, in eclipse, and see the results "
+"<emphasis>immediately</emphasis>, by clicking refresh in your browser."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:66
+#, no-c-format
+msgid ""
+"Don't get scared by the XML configuration documents that were generated into "
+"the project directory. They are mostly standard Java EE stuff, the stuff you "
+"need to create once and then never look at again, and they are 90&#37; the "
+"same between all Seam projects. (They are so easy to write that even seam-"
+"gen can do it.)"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:69
+#, no-c-format
+msgid ""
+"The generated project includes three database and persistence "
+"configurations. The <literal>jboss-beans.xml</literal>, <literal>persistence-"
+"test.xml</literal> and <literal>import-test.sql</literal> files are used "
+"when running the TestNG unit tests against HSQLDB. The database schema and "
+"the test data in <literal>import-test.sql</literal> is always exported to "
+"the database before running tests. The <literal>myproject-dev-ds.xml</"
+"literal>, <literal>persistence-dev.xml</literal>and <literal>import-dev.sql</"
+"literal> files are for use when deploying the application to your "
+"development database. The schema might be exported automatically at "
+"deployment, depending upon whether you told seam-gen that you are working "
+"with an existing database. The <literal>myproject-prod-ds.xml</literal>, "
+"<literal>persistence-prod.xml</literal>and <literal>import-prod.sql</"
+"literal> files are for use when deploying the application to your production "
+"database. The schema is not exported automatically at deployment."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:75
+#, no-c-format
+msgid "Creating a new action"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:76
+#, no-c-format
+msgid ""
+"If you're used to traditional action-style web frameworks, you're probably "
+"wondering how you can create a simple webpage with a stateless action method "
+"in Java. If you type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:79
+#, no-c-format
+msgid "seam new-action"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:80
+#, no-c-format
+msgid ""
+"Seam will prompt for some information, and generate a new facelets page and "
+"Seam component for your project."
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:83
+#, no-c-format
+msgid ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam new-action ping\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"action-input:\n"
+"    [input] Enter the Seam component name\n"
+"ping\n"
+"    [input] Enter the local interface name [Ping]\n"
+"\n"
+"    [input] Enter the bean class name [PingBean]\n"
+"\n"
+"    [input] Enter the action method name [ping]\n"
+"\n"
+"    [input] Enter the page name [ping]\n"
+"\n"
+"\n"
+"setup-filters:\n"
+"\n"
+"new-action:\n"
+"     [echo] Creating a new stateless session bean component with an action "
+"method\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;view\n"
+"     [echo] Type 'seam restart' and go to \n"
+"     http://localhost:8080/helloworld/ping.seam\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 13 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:84
+#, no-c-format
+msgid ""
+"Because we've added a new Seam component, we need to restart the exploded "
+"directory deployment. You can do this by typing <literal>seam restart</"
+"literal>, or by running the <literal>restart</literal> target in the "
+"generated project <literal>build.xml</literal> file from inside Eclipse. "
+"Another way to force a restart is to edit the file <literal>resources/META-"
+"INF/application.xml</literal> in Eclipse. <emphasis>Note that you do not "
+"need to restart JBoss each time you change the application.</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:87
+#, no-c-format
+msgid ""
+"Now go to <literal>http://localhost:8080/helloworld/ping.seam</literal> and "
+"click the button. You can see the code behind this action by looking in the "
+"project <literal>src</literal> directory. Put a breakpoint in the "
+"<literal>ping()</literal> method, and click the button again."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:90
+#, no-c-format
+msgid ""
+"Finally, locate the <literal>PingTest.xml</literal> file in the test package "
+"and run the integration tests using the TestNG plugin for Eclipse. "
+"Alternatively, run the tests using <literal>seam test</literal> or the "
+"<literal>test</literal> target of the generated build."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:96
+#, no-c-format
+msgid "Creating a form with an action"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:97
+#, no-c-format
+msgid "The next step is to create a form. Type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:100
+#, no-c-format
+msgid "seam new-form"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:101
+#, no-c-format
+msgid ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam new-form\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"action-input:\n"
+"    [input] Enter the Seam component name\n"
+"hello\n"
+"    [input] Enter the local interface name [Hello]\n"
+"\n"
+"    [input] Enter the bean class name [HelloBean]\n"
+"\n"
+"    [input] Enter the action method name [hello]\n"
+"\n"
+"    [input] Enter the page name [hello]\n"
+"\n"
+"\n"
+"setup-filters:\n"
+"\n"
+"new-form:\n"
+"     [echo] Creating a new stateful session bean component with an action "
+"method\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;view\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [echo] Type 'seam restart' and go to http://localhost:8080/hello/hello."
+"seam\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 5 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:102
+#, no-c-format
+msgid ""
+"Restart the application again, and go to <literal>http://localhost:8080/"
+"helloworld/hello.seam</literal>. Then take a look at the generated code. Run "
+"the test. Try adding some new fields to the form and Seam component "
+"(remember to restart the deploment each time you change the Java code)."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:108
+#, no-c-format
+msgid "Generating an application from an existing database"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:109
+#, no-c-format
+msgid ""
+"Manually create some tables in your database. (If you need to switch to a "
+"different database, just run <literal>seam setup</literal> again.) Now type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:112
+#, no-c-format
+msgid "seam generate-entities"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:113
+#, no-c-format
+msgid ""
+"Restart the deployment, and go to <literal>http://localhost:8080/helloworld</"
+"literal>. You can browse the database, edit existing objects, and create new "
+"objects. If you look at the generated code, you'll probably be amazed how "
+"simple it is! Seam was designed so that data access code is easy to write by "
+"hand, even for people who don't want to cheat by using seam-gen."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:119
+#, no-c-format
+msgid "Deploying the application as an EAR"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:120
+#, no-c-format
+msgid ""
+"Finally, we want to be able to deploy the application using standard Java EE "
+"5 packaging. First, we need to remove the exploded directory by running "
+"<literal>seam unexplode</literal>. To deploy the EAR, we can type "
+"<literal>seam deploy</literal> at the command prompt, or run the "
+"<literal>deploy</literal> target of the generated project build script. You "
+"can undeploy using <literal>seam undeploy</literal> or the "
+"<literal>undeploy</literal> target."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:123
+#, no-c-format
+msgid ""
+"By default, the application will be deployed with the <emphasis>dev profile</"
+"emphasis>. The EAR will include the <literal>persistence-dev.xml</literal> "
+"and <literal>import-dev.sql</literal> files, and the <literal>myproject-dev-"
+"ds.xml</literal> file will be deployed. You can change the profile, and use "
+"the <emphasis>prod profile</emphasis>, by typing"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:126
+#, no-c-format
+msgid "seam -Dprofile=prod deploy"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:127
+#, no-c-format
+msgid ""
+"You can even define new deployment profiles for your application. Just add "
+"appropriately named files to your project&mdash;for example, "
+"<literal>persistence-staging.xml</literal>, <literal>import-staging.sql</"
+"literal> and <literal>myproject-staging-ds.xml</literal>&mdash;and select "
+"the name of the profile using <literal>-Dprofile=staging</literal>."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/I18n.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/I18n.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/I18n.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,533 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: I18n.xml:10
+#, no-c-format
+msgid "Internationalization and themes"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:11
+#, no-c-format
+msgid ""
+"Seam makes it easy to build internationalized applications by providing "
+"several built-in components for handling multi-language UI messages."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:15
+#, no-c-format
+msgid "Locales"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:16
+#, no-c-format
+msgid ""
+"Each user login session has an associated instance of <literal>java.util."
+"Locale</literal> (available to the application as a session-scoped component "
+"named <literal>locale</literal>). Under normal circumstances, you won't need "
+"to do any special configuration to set the locale. Seam just delegates to "
+"JSF to determine the active locale:"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:21
+#, no-c-format
+msgid ""
+"If there is a locale associated with the HTTP request (the browser locale), "
+"and that locale is in the list of supported locales from <literal>faces-"
+"config.xml</literal>, use that locale for the rest of the session."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:24
+#, no-c-format
+msgid ""
+"Otherwise, if a default locale was specified in the <literal>faces-config."
+"xml</literal>, use that locale for the rest of the session."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:27
+#, no-c-format
+msgid "Otherwise, use the default locale of the server."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:30
+#, no-c-format
+msgid ""
+"It is <emphasis>possible</emphasis> to set the locale manually via the Seam "
+"configuration properties <literal>org.jboss.seam.core.localeSelector."
+"language</literal>, <literal>org.jboss.seam.core.localeSelector.country</"
+"literal> and <literal>org.jboss.seam.core.localeSelector.variant</literal>, "
+"but we can't think of any good reason to ever do this."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:33
+#, no-c-format
+msgid ""
+"It is, however, useful to allow the user to set the locale manually via the "
+"application user interface. Seam provides built-in functionality for "
+"overriding the locale determined by the algorithm above. All you have to do "
+"is add the following fragment to a form in your JSP or Facelets page:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:36
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{localeSelector.language}\"&gt;\n"
+"    &lt;f:selectItem itemLabel=\"English\" itemValue=\"en\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Deutsch\" itemValue=\"de\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Francais\" itemValue=\"fr\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{localeSelector.select}\" value=\"#{messages"
+"['ChangeLanguage']}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:37
+#, no-c-format
+msgid ""
+"Or, if you want a list of all supported locales from <literal>faces-config."
+"xml</literal>, just use:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:40
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{localeSelector.localeString}\"&gt;\n"
+"    &lt;f:selectItems value=\"#{localeSelector.supportedLocales}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{localeSelector.select}\" value=\"#{messages"
+"['ChangeLanguage']}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:41
+#, no-c-format
+msgid ""
+"When this use selects an item from the drop-down, and clicks the button, the "
+"Seam and JSF locales will be overridden for the rest of the session."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:47
+#, no-c-format
+msgid "Labels"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:48
+#, no-c-format
+msgid ""
+"JSF supports internationalization of user interface labels and descriptive "
+"text via the use of <literal>&lt;f:loadBundle /&gt;</literal>. You can use "
+"this approach in Seam applications. Alternatively, you can take advantage of "
+"the Seam <literal>messages</literal> component to display templated labels "
+"with embedded EL expressions."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:52
+#, no-c-format
+msgid "Defining labels"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:53
+#, no-c-format
+msgid ""
+"Each login session has an associated instance of <literal>java.util."
+"ResourceBundle</literal> (available to the application as a session-scoped "
+"component named <literal>org.jboss.seam.core.resourceBundle</literal>). "
+"You'll need to make your internationalized labels available via this special "
+"resource bundle. By default, the resource bundle used by Seam is named "
+"<literal>messages</literal> and so you'll need to define your labels in "
+"files named <literal>messages.properties</literal>, <literal>messages_en."
+"properties</literal>, <literal>messages_en_AU.properties</literal>, etc. "
+"These files usually belong in the <literal>WEB-INF/classes</literal> "
+"directory."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:56
+#, no-c-format
+msgid "So, in <literal>messages_en.properties</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:59
+#, no-c-format
+msgid "Hello=Hello"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:60
+#, no-c-format
+msgid "And in <literal>messages_en_AU.properties</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:63
+#, no-c-format
+msgid "Hello=G'day"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:64
+#, no-c-format
+msgid ""
+"You can select a different name for the resource bundle by setting the Seam "
+"configuration property named <literal>org.jboss.seam.core.resourceBundle."
+"bundleNames</literal>. You can even specify a list of resource bundle names "
+"to be searched (depth first) for messages."
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:67
+#, no-c-format
+msgid ""
+"&lt;core:resource-bundle&gt;\n"
+"    &lt;core:bundle-names&gt;\n"
+"        &lt;value&gt;mycompany_messages&lt;/value&gt;\n"
+"        &lt;value&gt;standard_messages&lt;/value&gt;       \n"
+"    &lt;/core:bundle-names&gt;\n"
+"&lt;/core:resource-bundle&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:68
+#, no-c-format
+msgid ""
+"If you want to define a message just for a particular page, you can specify "
+"it in a resource bundle with the same name as the JSF view id, with the "
+"leading <literal>/</literal> and trailing file extension removed. So we "
+"could put our message in <literal>welcome/hello_en.properties</literal> if "
+"we only needed to display the message on <literal>/welcome/hello.jsp</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:71
+#, no-c-format
+msgid ""
+"You can even specify an explicit bundle name in <literal>pages.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:74
+#, no-c-format
+msgid "&lt;page view-id=\"/welcome/hello.jsp\" bundle=\"HelloMessages\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:75
+#, no-c-format
+msgid ""
+"Then we could use messages defined in <literal>HelloMessages.properties</"
+"literal> on <literal>/welcome/hello.jsp</literal>."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:81
+#, no-c-format
+msgid "Displaying labels"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:82
+#, no-c-format
+msgid ""
+"If you define your labels using the Seam resource bundle, you'll be able to "
+"use them without having to type <literal>&lt;f:loadBundle ... /&gt;</"
+"literal> on every page. Instead, you can simply type:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:85
+#, no-c-format
+msgid "&lt;h:outputText value=\"#{messages['Hello']}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:86
+#, no-c-format
+msgid "<para>or:</para>"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:89
+#, no-c-format
+msgid "&lt;h:outputText value=\"#{messages.Hello}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:90
+#, no-c-format
+msgid "Even better, the messages themselves may contain EL expressions:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:93
+#, no-c-format
+msgid "Hello=Hello, #{user.firstName} #{user.lastName}"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:94
+#, no-c-format
+msgid "Hello=G'day, #{user.firstName}"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:95
+#, no-c-format
+msgid "You can even use the messages in your code:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:98
+#, no-c-format
+msgid "@In private Map&lt;String, String&gt; messages;"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:99
+#, no-c-format
+msgid "@In(\"#{messages['Hello']}\") private String helloMessage;"
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:103
+#, no-c-format
+msgid "Faces messages"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:104
+#, no-c-format
+msgid ""
+"The <literal>facesMessages</literal> component is a super-convenient way to "
+"display success or failure messages to the user. The functionality we just "
+"described also works for faces messages:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:107
+#, no-c-format
+msgid ""
+"@Name(\"hello\")\n"
+"@Stateless\n"
+"public class HelloBean implements Hello {\n"
+"    @In FacesMessages facesMessages;\n"
+"    \n"
+"    public String sayIt() {\n"
+"        facesMessages.addFromResourceBundle(\"Hello\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:108
+#, no-c-format
+msgid ""
+"This will display <literal>Hello, Gavin King</literal> or <literal>G'day, "
+"Gavin</literal>, depending upon the user's locale."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:116
+#, no-c-format
+msgid "Timezones"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:117
+#, no-c-format
+msgid ""
+"There is also a session-scoped instance of <literal>java.util.Timezone</"
+"literal>, named <literal>org.jboss.seam.core.timezone</literal>, and a Seam "
+"component for changing the timezone named <literal>org.jboss.seam.core."
+"timezoneSelector</literal>. By default, the timezone is the default timezone "
+"of the server. Unfortunately, the JSF specification says that all dates and "
+"times should be assumed to be UTC, and displayed as UTC, unless a timezone "
+"is explicitly specified using <literal>&lt;f:convertDateTime&gt;</literal>. "
+"This is an extremely inconvenient default behavior."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:120
+#, no-c-format
+msgid ""
+"Seam overrides this behavior, and defaults all dates and times to the Seam "
+"timezone. In addition, Seam provides the <literal>&lt;s:convertDateTime&gt;</"
+"literal> tag which always performs conversions in the Seam timezone."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:126
+#, no-c-format
+msgid "Themes"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:127
+#, no-c-format
+msgid ""
+"Seam applications are also very easily skinnable. The theme API is very "
+"similar to the localization API, but of course these two concerns are "
+"orthogonal, and some applications support both localization and themes."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:130
+#, no-c-format
+msgid "First, configure the set of supported themes:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:133
+#, no-c-format
+msgid ""
+"&lt;theme:theme-selector cookie-enabled=\"true\"&gt;\n"
+"    &lt;theme:available-themes&gt;\n"
+"        &lt;value&gt;default&lt;/value&gt;\n"
+"        &lt;value&gt;accessible&lt;/value&gt;\n"
+"        &lt;value&gt;printable&lt;/value&gt;\n"
+"    &lt;/theme:available-themes&gt;\n"
+"&lt;/theme:theme-selector&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:134
+#, no-c-format
+msgid "Note that the first theme listed is the default theme."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:137
+#, no-c-format
+msgid ""
+"Themes are defined in a properties file with the same name as the theme. For "
+"example, the <literal>default</literal> theme is defined as a set of entries "
+"in <literal>default.properties</literal>. For example, <literal>default."
+"properties</literal> might define:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:140
+#, no-c-format
+msgid ""
+"css ../screen.css\n"
+"template template.xhtml"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:141
+#, no-c-format
+msgid ""
+"Usually the entries in a theme resource bundle will be paths to CSS styles "
+"or images and names of facelets templates (unlike localization resource "
+"bundles which are usually text)."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:144
+#, no-c-format
+msgid ""
+"Now we can use these entries in our JSP or facelets pages. For example, to "
+"theme the stylesheet in a facelets page:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:147
+#, no-c-format
+msgid ""
+"&lt;link href=\"#{theme.css}\" rel=\"stylesheet\" type=\"text/css\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:148
+#, no-c-format
+msgid ""
+"Most powerfully, facelets lets us theme the template used by a <literal>&lt;"
+"ui:composition&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:151
+#, no-c-format
+msgid ""
+"&lt;ui:composition xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"    xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"    xmlns:h=\"http://java.sun.com/jsf/html\"\n"
+"    xmlns:f=\"http://java.sun.com/jsf/core\"\n"
+"    template=\"#{theme.template}\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:152
+#, no-c-format
+msgid ""
+"Just like the locale selector, there is a built-in theme selector to allow "
+"the user to freely switch themes:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:155
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{themeSelector.theme}\"&gt;\n"
+"    &lt;f:selectItems value=\"#{themeSelector.themes}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{themeSelector.select}\" value=\"Select Theme"
+"\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:159
+#, no-c-format
+msgid "Persisting locale and theme preferences via cookies"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:160
+#, no-c-format
+msgid ""
+"The locale selector, theme selector and timezone selector all support "
+"persistence of locale and theme preference to a cookie. Simply set the "
+"<literal>cookie-enabled</literal> configuration property:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:163
+#, no-c-format
+msgid ""
+"&lt;theme:theme-selector cookie-enabled=\"true\"&gt;\n"
+"    &lt;theme:available-themes&gt;\n"
+"        &lt;value&gt;default&lt;/value&gt;\n"
+"        &lt;value&gt;accessible&lt;/value&gt;\n"
+"        &lt;value&gt;printable&lt;/value&gt;\n"
+"    &lt;/theme:available-themes&gt;\n"
+"&lt;/theme:theme-selector&gt;\n"
+"\n"
+"&lt;core:locale-selector cookie-enabled=\"true\"/&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Itext.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Itext.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Itext.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1452 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Itext.xml:10
+#, no-c-format
+msgid "iText PDF generation"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:11
+#, no-c-format
+msgid ""
+"Seam now includes an component set for generating documents using iText. The "
+"primary focus of Seam's iText document support is for the generation of PDF "
+"doucuments, but Seam also offers basic support for RTF document generation."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:15
+#, no-c-format
+msgid "Using PDF Support"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:16
+#, no-c-format
+msgid ""
+"iText support is provided by <literal>jboss-seam-pdf.jar</literal>. This JAR "
+"contains the iText JSF controls, which are used to construct views that can "
+"render to PDF, and the DocumentStore component, which serves the rendered "
+"documents to the user. To include PDF support in your application, included "
+"<literal>jboss-seam-pdf.jar</literal> in your <literal>WEB-INF/lib</literal> "
+"directory along with the iText JAR file. There is no further configuration "
+"needed to use Seam's iText support."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:19
+#, no-c-format
+msgid ""
+"The Seam iText module requires the use of Facelets as the view technology. "
+"Future versions of the library may also support the use of JSP. "
+"Additionally, it requires the use of the seam-ui package."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:22
+#, no-c-format
+msgid ""
+"The <literal>examples/itext</literal> project contains an example of the PDF "
+"support in action. It demonstrates proper deployment packaging, and it "
+"contains a number examples that demonstrate the key PDF generation features "
+"current supported."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:28
+#, no-c-format
+msgid "Creating a document"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:29
+#, no-c-format
+msgid ""
+"Documents are generated by facelets documents using tags in the "
+"<literal>http://jboss.com/products/seam/pdf</literal> namespace. Documents "
+"should always have the <literal>document</literal> tag at the root of the "
+"document. The <literal>document</literal> tag prepares Seam to generate a "
+"document into the DocumentStore and renders an HTML redirect to that stored "
+"content. The following is a a small PDF document consisting only a single "
+"line of text:"
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:32
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf"
+"\"&gt;                                                      \n"
+"   The document goes "
+"here.                                                                                             \n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:34
+#, no-c-format
+msgid "p:document"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:35
+#, no-c-format
+msgid ""
+"The <literal>p:document</literal> tag supports the following attributes:"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:40
+#, no-c-format
+msgid "type"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:42
+#, no-c-format
+msgid ""
+"The type of the document to be produced. Valid values are <literal>PDF</"
+"literal>, <literal>RTF</literal> and <literal>HTML</literal> modes. Seam "
+"defaults to PDF generation, and many of the features only work correctly "
+"when generating PDF documents."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:48
+#, no-c-format
+msgid "pageSize"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:50
+#, no-c-format
+msgid ""
+"The size of the page to be generate. The most commonly used values would be "
+"<literal>LETTER</literal> and <literal>A4</literal>. A full list of "
+"supported pages sizes can be found in <literal>com.lowagie.text.PageSize</"
+"literal> class. Alternatively, pageSize can provide the width and height of "
+"the page directly. The value \"612 792\", for example, is equizalent to the "
+"LETTER page size."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:56
+#, no-c-format
+msgid "orientation"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:58
+#, no-c-format
+msgid ""
+"The orientation of the page. Valid values are <literal>portrait</literal> "
+"and <literal>landscape</literal>. In landscape mode, the height and width "
+"page size values are reversed."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:64
+#, no-c-format
+msgid "margins"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:66
+#, no-c-format
+msgid "The left, right, top and bottom margin values."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:72
+#, no-c-format
+msgid "marginMirroring"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:74
+#, no-c-format
+msgid "Indicates that margin settings should be reversed an alternating pages."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:80
+#, no-c-format
+msgid ""
+"Document metadata is also set as attributes of the document tag. The "
+"following metadata fields are supported:"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:85
+#, no-c-format
+msgid "title"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:92
+#, no-c-format
+msgid "subject"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:99
+#, no-c-format
+msgid "keywords"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:106
+#, no-c-format
+msgid "author"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:113
+#, no-c-format
+msgid "creator"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:125
+#, no-c-format
+msgid "Basic Text Elements"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:126
+#, no-c-format
+msgid ""
+"Useful documents will need to contain more than just text; however, the "
+"standard UI components are geared towards HTML generation and are not useful "
+"for generating PDF content. Instead, Seam provides a special UI components "
+"for generating suitable PDF content. Tags like <literal>&lt;p:image&gt;</"
+"literal> and <literal>&lt;p:paragraph&gt;</literal> are the basic "
+"foundations of simple documents. Tags like <literal>&lt;p:font&gt;</literal> "
+"provide style information to all the content surrounging them."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:129
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"&gt; \n"
+"    &lt;p:image alignment=\"right\" wrap=\"true\" resource=\"/logo.jpg\" /"
+"&gt;\n"
+"    &lt;p:font size=\"24\"&gt;\n"
+"        &lt;p:paragraph spacingAfter=\"50\"&gt;My First Document&lt;/p:"
+"paragraph&gt;\n"
+"    &lt;/p:font&gt;\n"
+"\n"
+"    &lt;p:paragraph alignment=\"justify\"&gt;\n"
+"        This is a simple document.  It isn't very fancy.\n"
+"    &lt;/p:paragraph&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:131
+#, no-c-format
+msgid "p:paragraph"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:132
+#, no-c-format
+msgid ""
+"Most uses of text should be sectioned into paragraphs so that text fragments "
+"can be flowed, formatted and styled in logical groups."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:137
+#, no-c-format
+msgid "firstLineIndent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:144 Itext.xml:836
+#, no-c-format
+msgid "extraParagraphSpace"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:151 Itext.xml:808
+#, no-c-format
+msgid "leading"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:158 Itext.xml:815
+#, no-c-format
+msgid "multipliedLeading"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:165 Itext.xml:344 Itext.xml:716
+#, no-c-format
+msgid "spacingBefore"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:167 Itext.xml:346 Itext.xml:718
+#, no-c-format
+msgid "The blank space to be inserted before the element."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:173 Itext.xml:352 Itext.xml:724
+#, no-c-format
+msgid "spacingAfter"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:175 Itext.xml:354 Itext.xml:726
+#, no-c-format
+msgid "The blank space to be inserted after the element."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:181 Itext.xml:330 Itext.xml:599
+#, no-c-format
+msgid "indentationLeft"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:188 Itext.xml:337 Itext.xml:607
+#, no-c-format
+msgid "indentationRight"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:195 Itext.xml:753
+#, no-c-format
+msgid "keepTogether"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:205
+#, no-c-format
+msgid "p:text"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:206
+#, no-c-format
+msgid ""
+"The <literal>text</literal> tag allows text fragments to be produced from "
+"application data using normal JSF converter mechanisms. It is very similar "
+"to the <literal>outputText</literal> tag used when rendering HTML documents. "
+"Here is an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:209
+#, no-c-format
+msgid ""
+"&lt;p:paragraph&gt;\n"
+"    The item costs &lt;p:text value=\"#{product.price}\"&gt;\n"
+"        &lt;f:convertNumber type=\"currency\" currencySymbol=\"&#36;\"/&gt;\n"
+"    &lt;/p:text&gt;\n"
+"&lt;/p:paragraph&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:212
+#, no-c-format
+msgid "value"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:214
+#, no-c-format
+msgid ""
+"The value to be displayed. This will typically be a value binding expression."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:223
+#, no-c-format
+msgid "p:font"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:224
+#, no-c-format
+msgid "Font declarations have no direct"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:229
+#, no-c-format
+msgid "familyName"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:231
+#, no-c-format
+msgid ""
+"The font family. One of: <literal>COURIER</literal>, <literal>HELVETICA</"
+"literal>, <literal>TIMES-ROMAN</literal>, <literal>SYMBOL</literal> or "
+"<literal>ZAPFDINGBATS</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:237
+#, no-c-format
+msgid "size"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:239
+#, no-c-format
+msgid "The point size of the font."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:245 Itext.xml:534
+#, no-c-format
+msgid "style"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:247
+#, no-c-format
+msgid ""
+"The font styles. Any combination of : <literal>NORMAL</literal>, "
+"<literal>BOLD</literal>, <literal>ITALIC</literal>, <literal>OBLIQUE</"
+"literal>, <literal>UNDERLINE</literal>, <literal>LINE-THROUGH</literal>"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:256
+#, no-c-format
+msgid "p:newPage"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:257
+#, no-c-format
+msgid "<literal>p:newPage</literal> inserts a page break."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:263
+#, no-c-format
+msgid "p:image"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:264
+#, no-c-format
+msgid ""
+"<literal>p:image</literal> inserts an image into the document. Images can be "
+"be loaded from the classpath or from the web application context using the "
+"<literal>resource</literal> attribute."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:267
+#, no-c-format
+msgid "&lt;p:image resource=\"/jboss.jpg\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:268
+#, no-c-format
+msgid ""
+"Resources can also be dynamically generated by application code. The "
+"<literal>imageData</literal> attribute can specify a value binding "
+"expression whose value is a <literal>java.awt.Image</literal> object."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:271
+#, no-c-format
+msgid "&lt;p:image imageData=\"#{images.chart}\" /&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:274
+#, no-c-format
+msgid "resource"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:276
+#, no-c-format
+msgid ""
+"The location of the image resource to be included. Resources should be "
+"relative to the document root of the web application."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:282
+#, no-c-format
+msgid "imageData"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:284
+#, no-c-format
+msgid "A method expression binding to an application-generated image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:290 Itext.xml:913
+#, no-c-format
+msgid "rotation"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:292
+#, no-c-format
+msgid "The rotation of the image in degrees."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:298
+#, no-c-format
+msgid "height"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:300
+#, no-c-format
+msgid "The height of the image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:306
+#, no-c-format
+msgid "width"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:308
+#, no-c-format
+msgid "The width of the image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:314 Itext.xml:441 Itext.xml:591
+#, no-c-format
+msgid "alignment"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:316
+#, no-c-format
+msgid ""
+"The alignment of the image. (see <xref linkend=\"Document_Constants-"
+"Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:322
+#, no-c-format
+msgid "<literal>alt</literal>"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:324
+#, no-c-format
+msgid "Alternative text representation for the image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:360 Itext.xml:672
+#, no-c-format
+msgid "widthPercentage"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:367
+#, no-c-format
+msgid "initialRotation"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:374
+#, no-c-format
+msgid "<literal>dpi</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:381
+#, no-c-format
+msgid "scalePercent"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:383
+#, no-c-format
+msgid ""
+"The scaling factor (as a percentage) to use for the image. This can be "
+"expressed as a single percentage value or as two percentage values "
+"representing separate x and y scaling percentages."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:389
+#, no-c-format
+msgid "wrap"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:396
+#, no-c-format
+msgid "underlying"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:406
+#, no-c-format
+msgid "p:anchor"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:407
+#, no-c-format
+msgid ""
+"<literal>p:anchor</literal> defines clickable links from a document. It "
+"supports the following attributes:"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:412
+#, no-c-format
+msgid "name"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:414
+#, no-c-format
+msgid "The name of an in-document anchor destination."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:420
+#, no-c-format
+msgid "reference"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:422
+#, no-c-format
+msgid ""
+"The destination the link refers to. Links to other points in the document "
+"should begin with a \"#\". For example, \"#link1\" to refer to an anchor "
+"postion with a <literal>name</literal> of <literal>link1</literal>. Links "
+"may also be a full URL to point to a resource outside of the document."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:433
+#, no-c-format
+msgid "Headers and Footers"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:435
+#, no-c-format
+msgid "p:header and p:footer"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:436
+#, no-c-format
+msgid ""
+"The <literal>p:header</literal> and <literal>p:footer</literal> components "
+"provide the ability to place header and footer text on each page of a "
+"generated document, with the exception of the first page. Header and footer "
+"declarations should appear near the top of a document."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:443
+#, no-c-format
+msgid ""
+"The alignment of the header/footer box section. (see <xref linkend="
+"\"Document_Constants-Alignment_Values\"/> for alignment values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:449
+#, no-c-format
+msgid "backgroundColor"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:451
+#, no-c-format
+msgid ""
+"The background color of the header/footer box. (see <xref linkend="
+"\"Document_Constants-Color_Values\"/> for color values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:457
+#, no-c-format
+msgid "borderColor"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:459
+#, no-c-format
+msgid ""
+"The border color of the header/footer box. Individual border sides can be "
+"set using <literal>borderColorLeft</literal>, <literal>borderColorRight</"
+"literal>, <literal>borderColorTop</literal> and <literal>borderColorBottom</"
+"literal>.(see <xref linkend=\"Document_Constants-Color_Values\"/> for color "
+"values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:465
+#, no-c-format
+msgid "borderWidth"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:467
+#, no-c-format
+msgid ""
+"The width of the border. Inidvidual border sides can be specified using "
+"<literal>borderWidthLeft</literal>, <literal>borderWidthRight</literal>, "
+"<literal>borderWidthTop</literal> and <literal>borderWidthBottom</literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:476
+#, no-c-format
+msgid "p:pageNumber"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:477
+#, no-c-format
+msgid ""
+"The current page number can be placed inside of a header or footer using the "
+"<literal>p:pageNumber</literal> tag. The page number tag can only be used in "
+"the context of a header or footer and can only be used once."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:485
+#, no-c-format
+msgid "Chapters and Sections"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:486
+#, no-c-format
+msgid ""
+"If the generated document follows a book/article structure, the <literal>p:"
+"chapter</literal> and <literal>p:section</literal> tags can be used to "
+"provide the necessary structure. Sections can only be used inside of "
+"chapters, but they may be nested arbitrarily deep. Most PDF viewers provide "
+"easy navigation between chapters and sections in a document."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:489
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"\n"
+"            title=\"Hello\"&gt;\n"
+"\n"
+"   &lt;p:chapter number=\"1\"&gt;\n"
+"      &lt;p:title&gt;&lt;p:paragraph&gt;Hello&lt;/p:paragraph&gt;&lt;/p:"
+"title&gt;\n"
+"      &lt;p:paragraph&gt;Hello #{user.name}!&lt;/p:paragraph&gt;\n"
+"   &lt;/p:chapter&gt;\n"
+"\n"
+"   &lt;p:chapter number=\"2\"&gt;\n"
+"      &lt;p:title&gt;&lt;p:paragraph&gt;Goodbye&lt;/p:paragraph&gt;&lt;/p:"
+"title&gt;\n"
+"      &lt;p:paragraph&gt;Goodbye #{user.name}.&lt;/p:paragraph&gt;\n"
+"   &lt;/p:chapter&gt;\n"
+"\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:491
+#, no-c-format
+msgid "p:chapter and p:section"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:494
+#, no-c-format
+msgid "number"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:496
+#, no-c-format
+msgid "The chapter number. Every chapter should be assigned a chapter number."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:502
+#, no-c-format
+msgid "numberDepth"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:504
+#, no-c-format
+msgid ""
+"The depth of numbering for section. All sections are numbered relative to "
+"their surrounding chapter/sections. The fourth section of of the first "
+"section of chapter three would be section 3.1.4, if displayed at the default "
+"number depth of three. To omit the chapter number, a number depth of 2 "
+"should be used. In that case, the section number would be displayed as 1.4."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:513
+#, no-c-format
+msgid "p:title"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:514
+#, no-c-format
+msgid ""
+"Any chapter or section can contain a <literal>p:title</literal>. The title "
+"will be displayed next to the chapter/section number. The body of the title "
+"may contain raw text or may be a <literal>p:paragraph</literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:522
+#, no-c-format
+msgid "Lists"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:523
+#, no-c-format
+msgid ""
+"List structures can be displayed using the <literal>p:list</literal> and "
+"<literal>p:listItem</literal> tags. Lists may contain arbitrarily-nested "
+"sublists. List items may not be used outside of a list. he following "
+"document uses the <literal>ui:repeat</literal> tag to to display a list of "
+"values retrieved from a Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:526
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"\n"
+"            xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"            title=\"Hello\"&gt;\n"
+"   &lt;p:list style=\"numbered\"&gt;\n"
+"      &lt;ui:repeat value=\"#{documents}\" var=\"doc\"&gt;\n"
+"         &lt;p:listItem&gt;#{doc.name}&lt;/p:listItem&gt;\n"
+"      &lt;/ui:repeat&gt;\n"
+"   &lt;/p:list&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:528
+#, no-c-format
+msgid "p:list"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:529
+#, no-c-format
+msgid "<literal>p:list</literal> supports the following attributes:"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:536
+#, no-c-format
+msgid ""
+"The ordering/bulleting style of list. One of: <literal>NUMBERED</literal>, "
+"<literal>LETTERED</literal>, <literal>GREEK</literal>, <literal>ROMAN</"
+"literal>, <literal>ZAPFDINGBATS</literal>, <literal>ZAPFDINGBATS_NUMBER</"
+"literal>. If no style is given, the list items are bulleted."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:542 Itext.xml:615
+#, no-c-format
+msgid "listSymbol"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:544
+#, no-c-format
+msgid "For bulleted lists, specifies the bullet symbol."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:550 Itext.xml:822
+#, no-c-format
+msgid "indent"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:552
+#, no-c-format
+msgid "The indentation level of the list."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:558
+#, no-c-format
+msgid "lowerCase"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:560
+#, no-c-format
+msgid ""
+"For list styles using letters, indicates whether the letters should be lower "
+"case."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:566
+#, no-c-format
+msgid "charNumber"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:568
+#, no-c-format
+msgid "For ZAPFDINGBATS, indicates the character code of the bullet character."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:574
+#, no-c-format
+msgid "numberType"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:576
+#, no-c-format
+msgid "For ZAPFDINGBATS_NUMBER, indicates the numbering style."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:585
+#, no-c-format
+msgid "p:listItem"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:586
+#, no-c-format
+msgid "<literal>p:listItem</literal> supports the following attributes:"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:593
+#, no-c-format
+msgid ""
+"The alignment of the list item. (See <xref linkend=\"Document_Constants-"
+"Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:601
+#, no-c-format
+msgid "The left indentation amount."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:609
+#, no-c-format
+msgid "The right indentation amount."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:617
+#, no-c-format
+msgid "Overrides the default list symbol for this list item."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:628
+#, no-c-format
+msgid "Tables"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:629
+#, no-c-format
+msgid ""
+"Table structures can be created using the <literal>p:table</literal> and "
+"<literal>p:cell</literal> tags. Unlike many table structures, there is no "
+"explicit row declaration. If a table has 3 columns, then every 3 cells will "
+"automatically form a row. Header and footer rows can be declared, and the "
+"headers and footers will be repeated in the event a table structure spans "
+"multiple pages."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:632
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"   \n"
+"            xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"            title=\"Hello\"&gt;   \n"
+"   &lt;p:table columns=\"3\" headerRows=\"1\"&gt;\n"
+"      &lt;p:cell&gt;name&lt;/p:cell&gt;\n"
+"      &lt;p:cell&gt;owner&lt;/p:cell&gt;\n"
+"      &lt;p:cell&gt;size&lt;/p:cell&gt;\n"
+"      &lt;ui:repeat value=\"#{documents}\" var=\"doc\"&gt;\n"
+"         &lt;p:cell&gt;#{doc.name}&lt;/p:cell&gt;\n"
+"         &lt;p:cell&gt;#{doc.user.name}&lt;/p:cell&gt;\n"
+"         &lt;p:cell&gt;#{doc.size}&lt;/p:cell&gt;\n"
+"      &lt;/ui:repeat&gt;\n"
+"   &lt;/p:table&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:634
+#, no-c-format
+msgid "p:table"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:635
+#, no-c-format
+msgid "<literal>p:table</literal> supports the following attributes."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:640
+#, no-c-format
+msgid "columns"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:642
+#, no-c-format
+msgid "The number of columns (cells) that make up a table row."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:648
+#, no-c-format
+msgid "widths"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:650
+#, no-c-format
+msgid ""
+"The relative widths of each column. There should be one value for each "
+"column. For example: widths=\"2 1 1\" would indicate that there are 3 "
+"columns and the first column should be twice the size of the second and "
+"third column."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:656
+#, no-c-format
+msgid "headerRows"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:658
+#, no-c-format
+msgid ""
+"The initial number of rows which are considered to be headers or footer rows "
+"and should be repeated if the table spans multiple pages."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:664
+#, no-c-format
+msgid "footerRows"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:666
+#, no-c-format
+msgid ""
+"The number of rows that are considered to be footer rows. This value is "
+"subtracted from the <literal>headerRows</literal> value. If document has 2 "
+"rows which make up the header and one row that makes up the footer, "
+"<literal>headerRows</literal> should be set to 3 and <literal>footerRows</"
+"literal> should be set to 1"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:674
+#, no-c-format
+msgid "The percentage of the page width that the table spans."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:680 Itext.xml:777
+#, no-c-format
+msgid "horizontalAlignment"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:682
+#, no-c-format
+msgid ""
+"The horizontal alignment of the table. (See <xref linkend="
+"\"Document_Constants-Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:688
+#, no-c-format
+msgid "skipFirstHeader"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:695 Itext.xml:885
+#, no-c-format
+msgid "runDirection"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:702
+#, no-c-format
+msgid "lockedWidth"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:709
+#, no-c-format
+msgid "splitRows"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:732
+#, no-c-format
+msgid "extendLastRow"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:739
+#, no-c-format
+msgid "headersInEvent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:746
+#, no-c-format
+msgid "splitLate"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:763
+#, no-c-format
+msgid "p:cell"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:764
+#, no-c-format
+msgid "<literal>p:cell</literal> supports the following attributes."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:769
+#, no-c-format
+msgid "colspan"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:771
+#, no-c-format
+msgid ""
+"Cells can span more than one column by declaring a <literal>colspan</"
+"literal> greater than 1. Tables do not have the ability to span across "
+"multiple rows."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:779
+#, no-c-format
+msgid ""
+"The horizontal alignment of the cell. (see <xref linkend="
+"\"Document_Constants-Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:785 Itext.xml:829
+#, no-c-format
+msgid "verticalAlignment"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:787
+#, no-c-format
+msgid ""
+"The vertical alignment of the cell. (see <xref linkend=\"Document_Constants-"
+"Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:793
+#, no-c-format
+msgid "padding"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:795
+#, no-c-format
+msgid ""
+"Padding on a given side can also be specified using <literal>paddingLeft</"
+"literal>, <literal>paddingRight</literal>, <literal>paddingTop</literal> and "
+"<literal>paddingBottom</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:801
+#, no-c-format
+msgid "useBorderPadding"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:843
+#, no-c-format
+msgid "fixedHeight"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:850
+#, no-c-format
+msgid "noWrap"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:857
+#, no-c-format
+msgid "minimumHeight"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:864
+#, no-c-format
+msgid "followingIndent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:871
+#, no-c-format
+msgid "rightIndent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:878
+#, no-c-format
+msgid "spaceCharRatio"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:892
+#, no-c-format
+msgid "arabicOptions"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:899
+#, no-c-format
+msgid "useAscender"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:906
+#, no-c-format
+msgid "grayFill"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:925
+#, no-c-format
+msgid "Document Constants"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:926
+#, no-c-format
+msgid ""
+"This section documents some of the constants shared by attributes on "
+"multiple tags."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:930
+#, no-c-format
+msgid "Color Values"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:931
+#, no-c-format
+msgid ""
+"Seam documents do not yet support a full color specification. Currently, "
+"only named colors are supported. They are: <literal>white</literal>, "
+"<literal>gray</literal>, <literal>lightgray</literal>, <literal>darkgray</"
+"literal>, <literal>black</literal>, <literal>red</literal>, <literal>pink</"
+"literal>, <literal>yellow</literal>, <literal>green</literal>, "
+"<literal>magenta</literal>, <literal>cyan</literal> and <literal>blue</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:937
+#, no-c-format
+msgid "Alignment Values"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:938
+#, no-c-format
+msgid ""
+"Where alignment values are used, the Seam PDF supports the following "
+"horizontal alignment values: <literal>left</literal>, <literal>right</"
+"literal>, <literal>center</literal>, <literal>justify</literal> and "
+"<literal>justifyall</literal>. The vertical alignment values are "
+"<literal>top</literal>, <literal>middle</literal>, <literal>bottom</"
+"literal>, and <literal>baseline</literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:946
+#, no-c-format
+msgid "Configuring iText"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:947
+#, no-c-format
+msgid ""
+"Document generation works out of the box with no additional configuration "
+"needed. However, there are a few points of configuration that are needed for "
+"more serious applications."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:950
+#, no-c-format
+msgid ""
+"The default implementation serves PDF documents from a generic URL, "
+"<literal>/seam-doc.seam</literal>. Many browsers (and users) would prefer to "
+"see URLs that contain the actual PDF name like <literal>/myDocument.pdf</"
+"literal>. This capability requires some configuration. To serve PDF files, "
+"all *.pdf resources should be mapped to the Seam Servlet Filter and to the "
+"DocumentStoreServlet:"
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:953
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.servlet.SeamServletFilter&lt;/filter-"
+"class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;\n"
+"\n"
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.pdf.DocumentStoreServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"\n"
+"&lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:954
+#, no-c-format
+msgid ""
+"The <literal>useExtensions</literal> option on the document store component "
+"completes the functionality by instructing the document store to generate "
+"URLs with the correct filename extension for the document type being "
+"generated."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:957
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pdf=\"http://jboss.com/products/seam/pdf\"&gt;\n"
+"    &lt;pdf:documentStore useExtensions=\"true\" /&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:958
+#, no-c-format
+msgid ""
+"Generated documents are stored in conversation scope and will expire when "
+"the conversation ends. At that point, references to the document will be "
+"invalid. To You can specify a default view to be shown when a document does "
+"not exist using the <literal>errorPage</literal> property of the "
+"documentStore."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:961
+#, no-c-format
+msgid ""
+"&lt;pdf:documentStore useExtensions=\"true\" errorPage=\"/pdfMissing.seam\" /"
+"&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:965
+#, no-c-format
+msgid "iText links"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:966
+#, no-c-format
+msgid "For further information on iText, see:"
+msgstr ""
+
+#. Tag: ulink
+#: Itext.xml:973
+#, no-c-format
+msgid "iText Home Page"
+msgstr ""
+
+#. Tag: ulink
+#: Itext.xml:978
+#, no-c-format
+msgid "iText in Action"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Jbpm.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Jbpm.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Jbpm.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1189 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Jbpm.xml:10
+#, no-c-format
+msgid "Pageflows and business processes"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:11
+#, no-c-format
+msgid ""
+"JBoss jBPM is a business process management engine for any Java SE or EE "
+"environment. jBPM lets you represent a business process or user interaction "
+"as a graph of nodes representing wait states, decisions, tasks, web pages, "
+"etc. The graph is defined using a simple, very readable, XML dialect called "
+"jPDL, and may be edited and visualised graphically using an eclipse plugin. "
+"jPDL is an extensible language, and is suitable for a range of problems, "
+"from defining web application page flow, to traditional workflow management, "
+"all the way up to orchestration of services in a SOA environment."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:14
+#, no-c-format
+msgid "Seam applications use jBPM for two different problems:"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:20
+#, no-c-format
+msgid ""
+"Defining the pageflow involved in complex user interactions. A jPDL process "
+"definition defines the page flow for a single conversation. A Seam "
+"conversation is considered to be a relatively short-running interaction with "
+"a single user."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:25
+#, no-c-format
+msgid ""
+"Defining the overarching business process. The business process may span "
+"multiple conversations with multiple users. Its state is persistent in the "
+"jBPM database, so it is considered long-running. Coordination of the "
+"activities of multiple users is a much more complex problem than scripting "
+"an interaction with a single user, so jBPM offers sophisticated facilities "
+"for task management and dealing with multiple concurrent paths of execution."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:31
+#, no-c-format
+msgid ""
+"Don't get these two things confused ! They operate at very different levels "
+"or granularity. <emphasis>Pageflow</emphasis>, <emphasis>conversation</"
+"emphasis> and <emphasis>task</emphasis> all refer to a single interaction "
+"with a single user. A business process spans many tasks. Futhermore, the two "
+"applications of jBPM are totally orthogonal. You can use them together or "
+"independently or not at all."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:34
+#, no-c-format
+msgid ""
+"You don't have to know jDPL to use Seam. If you're perfectly happy defining "
+"pageflow using JSF or Seam navigation rules, and if your application is more "
+"data-driven that process-driven, you probably don't need jBPM. But we're "
+"finding that thinking of user interaction in terms of a well-defined "
+"graphical representation is helping us build more robust applications."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:37
+#, no-c-format
+msgid ""
+"Please refer to the jBPM documentation for a more thorough overview of the "
+"sophisticated features that jBPM provides for managing complex business "
+"processes."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:41
+#, no-c-format
+msgid "Pageflow in Seam"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:42
+#, no-c-format
+msgid "There are two ways to define pageflow in Seam:"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:47
+#, no-c-format
+msgid ""
+"Using JSF or Seam navigation rules - the <emphasis>stateless navigation "
+"model</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:52
+#, no-c-format
+msgid "Using jPDL - the <emphasis>stateful navigation model</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:57
+#, no-c-format
+msgid ""
+"Very simple applications will only need the stateless navigation model. Very "
+"complex applications will use both models in different places. Each model "
+"has its strengths and weaknesses!"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:60
+#, no-c-format
+msgid ""
+"In practice, both navigation models have their place, and you'll quickly "
+"learn to recognize when to prefer one model over the other."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:64
+#, no-c-format
+msgid "The two navigation models"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:65
+#, no-c-format
+msgid ""
+"The stateless model defines a mapping from a set of named, logical outcomes "
+"of an event directly to the resulting page of the view. The navigation rules "
+"are entirely oblivious to any state held by the application other than what "
+"page was the source of the event. This means that your action listener "
+"methods must sometimes make decisions about the page flow, since only they "
+"have access to the current state of the application."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:68
+#, no-c-format
+msgid "Here is an example page flow definition using JSF navigation rules:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:71
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"    &lt;from-view-id&gt;/numberGuess.jsp&lt;/from-view-id&gt;\n"
+"        \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;guess&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/numberGuess.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;win&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/win.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"        \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;lose&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/lose.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:72
+#, no-c-format
+msgid ""
+"Here is the same example page flow definition using Seam navigation rules:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:75
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/numberGuess.jsp\"&gt;\n"
+"        \n"
+"    &lt;navigation&gt;\n"
+"        &lt;rule if-outcome=\"guess\"&gt;\n"
+"            &lt;redirect view-id=\"/numberGuess.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"        &lt;rule if-outcome=\"win\"&gt;\n"
+"            &lt;redirect view-id=\"/win.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"        &lt;rule if-outcome=\"lose\"&gt;\n"
+"            &lt;redirect view-id=\"/lose.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:76
+#, no-c-format
+msgid ""
+"If you find navigation rules overly verbose, you can return view ids "
+"directly from your action listener methods:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:79
+#, no-c-format
+msgid ""
+"public String guess() {\n"
+"    if (guess==randomNumber) return \"/win.jsp\";\n"
+"    if (++guessCount==maxGuesses) return \"/lose.jsp\";\n"
+"    return null;\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:80
+#, no-c-format
+msgid ""
+"Note that this results in a redirect. You can even specify parameters to be "
+"used in the redirect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:83
+#, no-c-format
+msgid ""
+"public String search() {\n"
+"    return \"/searchResults.jsp?searchPattern=#{searchAction.searchPattern}"
+"\";\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:84
+#, no-c-format
+msgid ""
+"The stateful model defines a set of transitions between a set of named, "
+"logical application states. In this model, it is possible to express the "
+"flow of any user interaction entirely in the jPDL pageflow definition, and "
+"write action listener methods that are completely unaware of the flow of the "
+"interaction."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:87
+#, no-c-format
+msgid "Here is an example page flow definition using jPDL:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:90
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"numberGuess\"&gt;\n"
+"    \n"
+"   &lt;start-page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"      &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"      &lt;/transition&gt;\n"
+"   &lt;/start-page&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess."
+"correctGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateRemainingGuesses\" expression=\"#{numberGuess."
+"lastGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"lose\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"displayGuess\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"lose\" view-id=\"/lose.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:99
+#, no-c-format
+msgid "There are two things we notice immediately here:"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:104
+#, no-c-format
+msgid ""
+"The JSF/Seam navigation rules are <emphasis>much</emphasis> simpler. "
+"(However, this obscures the fact that the underlying Java code is more "
+"complex.)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:109
+#, no-c-format
+msgid ""
+"The jPDL makes the user interaction immediately understandable, without us "
+"needing to even look at the JSP or Java code."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:114
+#, no-c-format
+msgid ""
+"In addition, the stateful model is more <emphasis>constrained</emphasis>. "
+"For each logical state (each step in the page flow), there are a constrained "
+"set of possible transitions to other states. The stateless model is an "
+"<emphasis>ad hoc</emphasis> model which is suitable to relatively "
+"unconstrained, freeform navigation where the user decides where he/she wants "
+"to go next, not the application."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:117
+#, no-c-format
+msgid ""
+"The stateful/stateless navigation distinction is quite similar to the "
+"traditional view of modal/modeless interaction. Now, Seam applications are "
+"not usually modal in the simple sense of the word - indeed, avoiding "
+"application modal behavior is one of the main reasons for having "
+"conversations! However, Seam applications can be, and often are, modal at "
+"the level of a particular conversation. It is well-known that modal behavior "
+"is something to avoid as much as possible; it is very difficult to predict "
+"the order in which your users are going to want to do things! However, there "
+"is no doubt that the stateful model has its place."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:120
+#, no-c-format
+msgid ""
+"The biggest contrast between the two models is the back-button behavior."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:126
+#, no-c-format
+msgid "Seam and the back button"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:127
+#, no-c-format
+msgid ""
+"When JSF or Seam navigation rules are used, Seam lets the user freely "
+"navigate via the back, forward and refresh buttons. It is the responsibility "
+"of the application to ensure that conversational state remains internally "
+"consistent when this occurs. Experience with the combination of web "
+"application frameworks like Struts or WebWork - that do not support a "
+"conversational model - and stateless component models like EJB stateless "
+"session beans or the Spring framework has taught many developers that this "
+"is close to impossible to do! However, our experience is that in the context "
+"of Seam, where there is a well-defined conversational model, backed by "
+"stateful session beans, it is actually quite straightforward. Usually it is "
+"as simple as combining the use of <literal>no-conversation-view-id</literal> "
+"with null checks at the beginning of action listener methods. We consider "
+"support for freeform navigation to be almost always desirable."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:130
+#, no-c-format
+msgid ""
+"In this case, the <literal>no-conversation-view-id</literal> declaration "
+"goes in <literal>pages.xml</literal>. It tells Seam to redirect to a "
+"different page if a request originates from a page rendered during a "
+"conversation, and that conversation no longer exists:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:133
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/checkout.xhtml\" \n"
+"        no-conversation-view-id=\"/main.xhtml\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:134
+#, no-c-format
+msgid ""
+"On the other hand, in the stateful model, backbuttoning is interpreted as an "
+"undefined transition back to a previous state. Since the stateful model "
+"enforces a defined set of transitions from the current state, back buttoning "
+"is be default disallowed in the stateful model! Seam transparently detects "
+"the use of the back button, and blocks any attempt to perform an action from "
+"a previous, \"stale\" page, and simply redirects the user to the \"current\" "
+"page (and displays a faces message). Whether you consider this a feature or "
+"a limitation of the stateful model depends upon your point of view: as an "
+"application developer, it is a feature; as a user, it might be frustrating! "
+"You can enable backbutton navigation from a particular page node by setting "
+"<literal>back=\"enabled\"</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:137
+#, no-c-format
+msgid ""
+"&lt;page name=\"checkout\" \n"
+"        view-id=\"/checkout.xhtml\" \n"
+"        back=\"enabled\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"checkout\"/&gt;\n"
+"    &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:138
+#, no-c-format
+msgid ""
+"This allows backbuttoning <emphasis>from</emphasis> the <literal>checkout</"
+"literal> state to <emphasis>any previous state!</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:141
+#, no-c-format
+msgid ""
+"Of course, we still need to define what happens if a request originates from "
+"a page rendered during a pageflow, and the conversation with the pageflow no "
+"longer exists. In this case, the <literal>no-conversation-view-id</literal> "
+"declaration goes into the pageflow definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:144
+#, no-c-format
+msgid ""
+"&lt;page name=\"checkout\" \n"
+"        view-id=\"/checkout.xhtml\" \n"
+"        back=\"enabled\" \n"
+"        no-conversation-view-id=\"/main.xhtml\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"checkout\"/&gt;\n"
+"    &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:151
+#, no-c-format
+msgid "Using jPDL pageflows"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:153
+#, no-c-format
+msgid "Installing pageflows"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:154
+#, no-c-format
+msgid ""
+"We need to install the Seam jBPM-related components, and tell them where to "
+"find our pageflow definition. We can specify this Seam configuration in "
+"<literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:157
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:pageflow-definitions&gt;\n"
+"        &lt;value&gt;pageflow.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:pageflow-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:158
+#, no-c-format
+msgid ""
+"The first line installs jBPM, the second points to a jPDL-based pageflow "
+"definition."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:164
+#, no-c-format
+msgid "Starting pageflows"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:165
+#, no-c-format
+msgid ""
+"We \"start\" a jPDL-based pageflow by specifying the name of the process "
+"definition using a <literal>@Begin</literal>, <literal>@BeginTask</literal> "
+"or <literal>@StartTask</literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:168
+#, no-c-format
+msgid ""
+"@Begin(pageflow=\"numberguess\")\n"
+"public void begin() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:169
+#, no-c-format
+msgid "Alternatively we can start a pageflow using pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:172
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"        &lt;begin-conversation pageflow=\"numberguess\"/&gt;\n"
+"    &lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:173
+#, no-c-format
+msgid ""
+"If we are beginning the pageflow during the <literal>RENDER_RESPONSE</"
+"literal> phase&mdash;during a <literal>@Factory</literal> or "
+"<literal>@Create</literal> method, for example&mdash;we consider ourselves "
+"to be already at the page being rendered, and use a <literal>&lt;start-"
+"page&gt;</literal> node as the first node in the pageflow, as in the example "
+"above."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:176
+#, no-c-format
+msgid ""
+"But if the pageflow is begun as the result of an action listener invocation, "
+"the outcome of the action listener determines which is the first page to be "
+"rendered. In this case, we use a <literal>&lt;start-state&gt;</literal> as "
+"the first node in the pageflow, and declare a transition for each possible "
+"outcome:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:179
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"viewEditDocument\"&gt;\n"
+"\n"
+"    &lt;start-state name=\"start\"&gt;\n"
+"        &lt;transition name=\"documentFound\" to=\"displayDocument\"/&gt;\n"
+"        &lt;transition name=\"documentNotFound\" to=\"notFound\"/&gt;\n"
+"    &lt;/start-state&gt;\n"
+"    \n"
+"    &lt;page name=\"displayDocument\" view-id=\"/document.jsp\"&gt;\n"
+"        &lt;transition name=\"edit\" to=\"editDocument\"/&gt;\n"
+"        &lt;transition name=\"done\" to=\"main\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"    \n"
+"    ...\n"
+"    \n"
+"    &lt;page name=\"notFound\" view-id=\"/404.jsp\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"    &lt;/page&gt;\n"
+"    \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:183
+#, no-c-format
+msgid "Page nodes and transitions"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:184
+#, no-c-format
+msgid ""
+"Each <literal>&lt;page&gt;</literal> node represents a state where the "
+"system is waiting for user input:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:187
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"        &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:188
+#, no-c-format
+msgid ""
+"The <literal>view-id</literal> is the JSF view id. The <literal>&lt;redirect/"
+"&gt;</literal> element has the same effect as <literal>&lt;redirect/&gt;</"
+"literal> in a JSF navigation rule: namely, a post-then-redirect behavior, to "
+"overcome problems with the browser's refresh button. (Note that Seam "
+"propagates conversation contexts over these browser redirects. So there is "
+"no need for a Ruby on Rails style \"flash\" construct in Seam!)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:191
+#, no-c-format
+msgid ""
+"The transition name is the name of a JSF outcome triggered by clicking a "
+"command button or command link in <literal>numberGuess.jsp</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:194
+#, no-c-format
+msgid ""
+"&lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"guess\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:195
+#, no-c-format
+msgid ""
+"When the transition is triggered by clicking this button, jBPM will activate "
+"the transition action by calling the <literal>guess()</literal> method of "
+"the <literal>numberGuess</literal> component. Notice that the syntax used "
+"for specifying actions in the jPDL is just a familiar JSF EL expression, and "
+"that the transition action handler is just a method of a Seam component in "
+"the current Seam contexts. So we have exactly the same event model for jBPM "
+"events that we already have for JSF events! (The <emphasis>One Kind of "
+"Stuff</emphasis> principle.)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:198
+#, no-c-format
+msgid ""
+"In the case of a null outcome (for example, a command button with no "
+"<literal>action</literal> defined), Seam will signal the transition with no "
+"name if one exists, or else simply redisplay the page if all transitions "
+"have names. So we could slightly simplify our example pageflow and this "
+"button:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:201
+#, no-c-format
+msgid "&lt;h:commandButton type=\"submit\" value=\"Guess\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:202
+#, no-c-format
+msgid "Would fire the following un-named transition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:205
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"evaluateGuess\"&gt;\n"
+"        &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:206
+#, no-c-format
+msgid ""
+"It is even possible to have the button call an action method, in which case "
+"the action outcome will determine the transition to be taken:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:209
+#, no-c-format
+msgid ""
+"&lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"#{numberGuess."
+"guess}\"/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:210
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;transition name=\"correctGuess\" to=\"win\"/&gt;\n"
+"    &lt;transition name=\"incorrectGuess\" to=\"evaluateGuess\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:211
+#, no-c-format
+msgid ""
+"However, this is considered an inferior style, since it moves responsibility "
+"for controlling the flow out of the pageflow definition and back into the "
+"other components. It is much better to centralize this concern in the "
+"pageflow itself."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:217
+#, no-c-format
+msgid "Controlling the flow"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:218
+#, no-c-format
+msgid ""
+"Usually, we don't need the more powerful features of jPDL when defining "
+"pageflows. We do need the <literal>&lt;decision&gt;</literal> node, however:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:221
+#, no-c-format
+msgid ""
+"&lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess.correctGuess}"
+"\"&gt;\n"
+"    &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"    &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"&lt;/decision&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:222
+#, no-c-format
+msgid ""
+"A decision is made by evaluating a JSF EL expression in the Seam contexts."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:228
+#, no-c-format
+msgid "Ending the flow"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:229
+#, no-c-format
+msgid ""
+"We end the conversation using <literal>&lt;end-conversation&gt;</literal> or "
+"<literal>@End</literal>. (In fact, for readability, use of <emphasis>both</"
+"emphasis> is encouraged.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:232
+#, no-c-format
+msgid ""
+"&lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;end-conversation/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:233
+#, no-c-format
+msgid ""
+"Optionally, we can end a task, specify a jBPM <literal>transition</literal> "
+"name. In this case, Seam will signal the end of the current task in the "
+"overarching business process."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:236
+#, no-c-format
+msgid ""
+"&lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;end-task transition=\"success\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:242
+#, no-c-format
+msgid "Business process management in Seam"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:243
+#, no-c-format
+msgid ""
+"A business process is a well-defined set of tasks that must be performed by "
+"users or software systems according to well-defined rules about "
+"<emphasis>who</emphasis> can perform a task, and <emphasis>when</emphasis> "
+"it should be performed. Seam's jBPM integration makes it easy to display "
+"lists of tasks to users and let them manage their tasks. Seam also lets the "
+"application store state associated with the business process in the "
+"<literal>BUSINESS_PROCESS</literal> context, and have that state made "
+"persistent via jBPM variables."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:246
+#, no-c-format
+msgid ""
+"A simple business process definition looks much the same as a page flow "
+"definition (<emphasis>One Kind of Stuff</emphasis>), except that instead of "
+"<literal>&lt;page&gt;</literal> nodes, we have <literal>&lt;task-node&gt;</"
+"literal> nodes. In a long-running business process, the wait states are "
+"where the system is waiting for some user to log in and perform a task."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:249
+#, no-c-format
+msgid ""
+"&lt;process-definition name=\"todo\"&gt;\n"
+"   \n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"todo\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;task-node name=\"todo\"&gt;\n"
+"      &lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"         &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"      &lt;/task&gt;\n"
+"      &lt;transition to=\"done\"/&gt;\n"
+"   &lt;/task-node&gt;\n"
+"   \n"
+"   &lt;end-state name=\"done\"/&gt;\n"
+"   \n"
+"&lt;/process-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:260
+#, no-c-format
+msgid ""
+"It is perfectly possible that we might have both jPDL business process "
+"definitions and jPDL pageflow definitions in the same project. If so, the "
+"relationship between the two is that a single <literal>&lt;task&gt;</"
+"literal> in a business process corresponds to a whole pageflow <literal>&lt;"
+"pageflow-definition&gt;</literal>"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:265
+#, no-c-format
+msgid "Using jPDL business process definitions"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:267
+#, no-c-format
+msgid "Installing process definitions"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:268
+#, no-c-format
+msgid ""
+"We need to install jBPM, and tell it where to find the business process "
+"definitions:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:271
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;todo.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:275
+#, no-c-format
+msgid "Initializing actor ids"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:276
+#, no-c-format
+msgid ""
+"We always need to know what user is currently logged in. jBPM \"knows\" "
+"users by their <emphasis>actor id</emphasis> and <emphasis>group actor ids</"
+"emphasis>. We specify the current actor ids using the built in Seam "
+"component named <literal>actor</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:279
+#, no-c-format
+msgid ""
+"@In Actor actor;\n"
+"\n"
+"public String login() {\n"
+"    ...\n"
+"    actor.setId( user.getUserName() );\n"
+"    actor.getGroupActorIds().addAll( user.getGroupNames() );\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:283
+#, no-c-format
+msgid "Initiating a business process"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:284
+#, no-c-format
+msgid ""
+"To initiate a business process instance, we use the <literal>@CreateProcess</"
+"literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:287
+#, no-c-format
+msgid ""
+"@CreateProcess(definition=\"todo\")\n"
+"public void createTodo() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:288
+#, no-c-format
+msgid "Alternatively we can initiate a business process using pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:291
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;create-process definition=\"todo\" /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:295
+#, no-c-format
+msgid "Task assignment"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:296
+#, no-c-format
+msgid ""
+"When a process starts, task instances are created. These must be assigned to "
+"users or user groups. We can either hardcode our actor ids, or delegate to a "
+"Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:299
+#, no-c-format
+msgid ""
+"&lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"    &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"&lt;/task&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:300
+#, no-c-format
+msgid ""
+"In this case, we have simply assigned the task to the current user. We can "
+"also assign tasks to a pool:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:303
+#, no-c-format
+msgid ""
+"&lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"    &lt;assignment pooled-actors=\"employees\"/&gt;\n"
+"&lt;/task&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:307
+#, no-c-format
+msgid "Task lists"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:308
+#, no-c-format
+msgid ""
+"Several built-in Seam components make it easy to display task lists. The "
+"<literal>pooledTaskInstanceList</literal> is a list of pooled tasks that "
+"users may assign to themselves:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:311
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{pooledTaskInstanceList}\" var=\"task\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Description&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{task.description}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link action=\"#{pooledTask.assignToCurrentActor}\" value="
+"\"Assign\" taskInstance=\"#{task}\"/&gt;\n"
+"    &lt;/h:column&gt;            \n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:312
+#, no-c-format
+msgid ""
+"Note that instead of <literal>&lt;s:link&gt;</literal> we could have used a "
+"plain JSF <literal>&lt;h:commandLink&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:315
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"#{pooledTask.assignToCurrentActor}\"&gt; \n"
+"    &lt;f:param name=\"taskId\" value=\"#{task.id}\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:316
+#, no-c-format
+msgid ""
+"The <literal>pooledTask</literal> component is a built-in component that "
+"simply assigns the task to the current user."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:319
+#, no-c-format
+msgid ""
+"The <literal>taskInstanceListByType</literal> component includes tasks of a "
+"particular type that are assigned to the current user:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:322
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{taskInstanceListByType['todo']}\" var=\"task"
+"\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Description&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{task.description}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link action=\"#{todoList.start}\" value=\"Start Work\" "
+"taskInstance=\"#{task}\"/&gt;\n"
+"    &lt;/h:column&gt;            \n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:326
+#, no-c-format
+msgid "Performing a task"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:327
+#, no-c-format
+msgid ""
+"To begin work on a task, we use either <literal>@StartTask</literal> or "
+"<literal>@BeginTask</literal> on the listener method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:330
+#, no-c-format
+msgid ""
+"@StartTask\n"
+"public String start() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:331
+#, no-c-format
+msgid "Alternatively we can begin work on a task using pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:334
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;start-task /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:335
+#, no-c-format
+msgid ""
+"These annotations begin a special kind of conversation that has significance "
+"in terms of the overarching business process. Work done by this conversation "
+"has access to state held in the business process context."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:338
+#, no-c-format
+msgid ""
+"If we end the conversation using <literal>@EndTask</literal>, Seam will "
+"signal the completion of the task:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:341
+#, no-c-format
+msgid ""
+"@EndTask(transition=\"completed\")\n"
+"public String completed() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:342
+#, no-c-format
+msgid "Alternatively we can use pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:345
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;end-task transition=\"completed\" /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:346
+#, no-c-format
+msgid ""
+"(Alternatively, we could have used <literal>&lt;end-conversation&gt;</"
+"literal> as shown above.)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:349
+#, no-c-format
+msgid ""
+"At this point, jBPM takes over and continues executing the business process "
+"definition. (In more complex processes, several tasks might need to be "
+"completed before process execution can resume.)"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Jms.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Jms.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Jms.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,477 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Jms.xml:10
+#, no-c-format
+msgid "Asynchronicity and messaging"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:11
+#, no-c-format
+msgid ""
+"Seam makes it very easy to perform work asynchronously from a web request. "
+"When most people think of asynchronicity in Java EE, they think of using "
+"JMS. This is certainly one way to approach the problem in Seam, and is the "
+"right way when you have strict and well-defined quality of service "
+"requirements. Seam makes it easy to send and recieve JMS messages using Seam "
+"components."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:14
+#, no-c-format
+msgid ""
+"But for many usecases, JMS is overkill. Seam layers a simple asynchronous "
+"method and event facility over the EJB 3.0 timer service."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:17
+#, no-c-format
+msgid "Asynchronicity"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:18
+#, no-c-format
+msgid ""
+"Asynchronous events and method calls have the same quality of service "
+"expectations as the container's EJB timer service. If you're not familiar "
+"with the Timer service, don't worry, you don't need to interact with it "
+"directly if you want to use asynchronous methods in Seam."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:21
+#, no-c-format
+msgid ""
+"To use asynchronous methods and events, you need to add the following line "
+"to <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:24
+#, no-c-format
+msgid "&lt;core:dispatcher/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:25
+#, no-c-format
+msgid ""
+"Note that this functionality is not available in environments which do not "
+"support EJB 3.0."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:28
+#, no-c-format
+msgid "Asynchronous methods"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:29
+#, no-c-format
+msgid ""
+"In simplest form, an asynchronous call just lets a method call be processed "
+"asynchronously (in a different thread) from the caller. We usually use an "
+"asynchronous call when we want to return an immediate response to the "
+"client, and let some expensive work be processed in the background. This "
+"pattern works very well in applications which use AJAX, where the client can "
+"automatically poll the server for the result of the work."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:32
+#, no-c-format
+msgid ""
+"For EJB components, we annotate the local interface to specify that a method "
+"is processed asynchronously."
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:35
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public void processPayment(Payment payment);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:36
+#, no-c-format
+msgid ""
+"(For JavaBean components we can annotate the component implementation class "
+"if we like.)"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:39
+#, no-c-format
+msgid "The use of asynchronicity is transparent to the bean class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:42
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"paymentHandler\")\n"
+"public class PaymentHandlerBean implements PaymentHandler\n"
+"{\n"
+"    public void processPayment(Payment payment)\n"
+"    {\n"
+"        //do some work!\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:43
+#, no-c-format
+msgid "And also transparent to the client:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:46
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String pay()\n"
+"    {\n"
+"        paymentHandler.processPayment( new Payment(bill) );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:47
+#, no-c-format
+msgid ""
+"The asynchronous method is processed in a completely new event context and "
+"does not have access to the session or conversation context state of the "
+"caller. However, the business process context <emphasis>is</emphasis> "
+"propagated."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:50
+#, no-c-format
+msgid ""
+"Asynchronous method calls may be scheduled for later execution using the "
+"<literal>@Duration</literal>, <literal>@Expiration</literal> and "
+"<literal>@IntervalDuration</literal> annotations."
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:53
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public void processScheduledPayment(Payment payment, @Expiration Date "
+"date);\n"
+"\n"
+"    @Asynchronous\n"
+"    public void processRecurringPayment(Payment payment, @Expiration Date "
+"date, \n"
+"        @IntervalDuration Long interval)'\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:54
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String schedulePayment()\n"
+"    {\n"
+"        paymentHandler.processScheduledPayment( new Payment(bill), bill."
+"getDueDate() );\n"
+"        return \"success\";\n"
+"    }\n"
+"\n"
+"    public String scheduleRecurringPayment()\n"
+"    {\n"
+"        paymentHandler.processRecurringPayment( new Payment(bill), bill."
+"getDueDate(), ONE_MONTH );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:55
+#, no-c-format
+msgid ""
+"Both client and server may access the <literal>Timer</literal> object "
+"associated with the invocation."
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:58
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public Timer processScheduledPayment(Payment payment, @Expiration Date "
+"date);\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:59
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"paymentHandler\")\n"
+"public class PaymentHandlerBean implements PaymentHandler\n"
+"{\n"
+"    @In Timer timer;\n"
+"    \n"
+"    public Timer processScheduledPayment(Payment payment, @Expiration Date "
+"date)\n"
+"    {\n"
+"        //do some work!\n"
+"        \n"
+"        return timer; //note that return value is completely ignored\n"
+"    }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:60
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String schedulePayment()\n"
+"    {\n"
+"        Timer timer = paymentHandler.processScheduledPayment( new Payment"
+"(bill), bill.getDueDate() );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:61
+#, no-c-format
+msgid "Asynchronous methods cannot return any other value to the caller."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:64
+#, no-c-format
+msgid "Asynchronous events"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:65
+#, no-c-format
+msgid ""
+"Component-driven events may also be asynchronous. To raise an event for "
+"asynchronous processing, simply call the <literal>raiseAsynchronousEvent()</"
+"literal> methods of the <literal>Events</literal> class. To schedule a timed "
+"event, call one of the <literal>raiseTimedEvent()</literal> methods. "
+"Components may observe asynchronous events in the usual way, but remember "
+"that only the business process context is propagated to the asynchronous "
+"thread."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:68
+#, no-c-format
+msgid "Messaging in Seam"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:69
+#, no-c-format
+msgid ""
+"Seam makes it easy to send and receive JMS messages to and from Seam "
+"components."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:72
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:73
+#, no-c-format
+msgid ""
+"To configure Seam's infrastructure for sending JMS messages, you need to "
+"tell Seam about any topics and queues you want to send messages to, and also "
+"tell Seam where to find the <literal>QueueConnectionFactory</literal> and/or "
+"<literal>TopicConnectionFactory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:76
+#, no-c-format
+msgid ""
+"Seam defaults to using <literal>UIL2ConnectionFactory</literal> which is the "
+"usual connection factory for use with JBossMQ. If you are using some other "
+"JMS provider, you need to set one or both of <literal>queueConnection."
+"queueConnectionFactoryJndiName</literal> and <literal>topicConnection."
+"topicConnectionFactoryJndiName</literal> in <literal>seam.properties</"
+"literal>, <literal>web.xml</literal> or <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:79
+#, no-c-format
+msgid ""
+"You also need to list topics and queues in <literal>components.xml</literal> "
+"to install Seam managed <literal>TopicPublisher</literal>s and "
+"<literal>QueueSender</literal>s:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:82
+#, no-c-format
+msgid ""
+"&lt;jms:managed-topic-publisher name=\"stockTickerPublisher\" auto-create="
+"\"true\" \n"
+"    topic-jndi-name=\"topic/stockTickerTopic\"/&gt;\n"
+"\n"
+"&lt;jms:managed-queue-sender name=\"paymentQueueSender\" auto-create=\"true"
+"\" \n"
+"    queue-jndi-name=\"queue/paymentQueue\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:83
+#, no-c-format
+msgid "Sending messages"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:84
+#, no-c-format
+msgid ""
+"Now, you can inject a JMS <literal>TopicPublisher</literal> and "
+"<literal>TopicSession</literal> into any component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:87
+#, no-c-format
+msgid ""
+"@In \n"
+"private TopicPublisher stockTickerPublisher;   \n"
+"@In \n"
+"private TopicSession topicSession;\n"
+"\n"
+"public void publish(StockPrice price) {\n"
+"      try\n"
+"      {\n"
+"         topicPublisher.publish( topicSession.createObjectMessage(price) );\n"
+"      } \n"
+"      catch (Exception ex)\n"
+"      {\n"
+"         throw new RuntimeException(ex);\n"
+"      } \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:88
+#, no-c-format
+msgid "Or, for working with a queue:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:91
+#, no-c-format
+msgid ""
+"@In\n"
+"private QueueSender paymentQueueSender;   \n"
+"@In\n"
+"private QueueSession queueSession;\n"
+"\n"
+"public void publish(Payment payment) {\n"
+"      try\n"
+"      {\n"
+"         paymentQueueSender.send( queueSession.createObjectMessage"
+"(payment) );\n"
+"      } \n"
+"      catch (Exception ex)\n"
+"      {\n"
+"         throw new RuntimeException(ex);\n"
+"      } \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:92
+#, no-c-format
+msgid "Receiving messages using a message-driven bean"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:93
+#, no-c-format
+msgid ""
+"You can process messages using any EJB3 message driven bean. Message-driven "
+"beans may even be Seam components, in which case it is possible to inject "
+"other event and application scoped Seam components."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:96
+#, no-c-format
+msgid "Receiving messages in the client"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:97
+#, no-c-format
+msgid ""
+"Seam Remoting lets you subscribe to a JMS topic from client-side JavaScript. "
+"This is described in the next chapter."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Mail.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Mail.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Mail.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,985 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Mail.xml:10
+#, no-c-format
+msgid "Email"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:11
+#, no-c-format
+msgid ""
+"Seam now includes an optional components for templating and sending emails."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:14
+#, no-c-format
+msgid ""
+"Email support is provided by <literal>jboss-seam-mail.jar</literal>. This "
+"JAR contains the mail JSF controls, which are used to construct emails, and "
+"the <literal>mailSession</literal> manager component."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:17
+#, no-c-format
+msgid ""
+"The examples/mail project contains an example of the email support in "
+"action. It demonstrates proper packaging, and it contains a number of "
+"example that demonstrate the key features currently supported."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:21
+#, no-c-format
+msgid "Creating a message"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:22
+#, no-c-format
+msgid ""
+"You don't need to learn a whole new templating language to use Seam "
+"Mail&mdash;an email is just facelet!"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:25
+#, no-c-format
+msgid ""
+"&lt;m:message xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"    xmlns:m=\"http://jboss.com/products/seam/mail\"\n"
+"    xmlns:h=\"http://java.sun.com/jsf/html\"&gt;\n"
+"  \n"
+"    &lt;m:from name=\"Peter\" address=\"peter at example.com\" /&gt;\n"
+"    &lt;m:to name=\"#{person.firstname} #{person.lastname}\"&gt;#{person."
+"address}&lt;/m:to&gt;\n"
+"    &lt;m:subject&gt;Try out Seam!&lt;/m:subject&gt;\n"
+"    \n"
+"    &lt;m:body&gt;\n"
+"        &lt;p&gt;&lt;h:outputText value=\"Dear #{person.firstname}\" /&gt;,"
+"&lt;/p&gt;\n"
+"        &lt;p&gt;You can try out Seam by visiting \n"
+"        &lt;a href=\"http://labs.jboss.com/jbossseam\"&gt;http://labs.jboss."
+"com/jbossseam&lt;/a&gt;.&lt;/p&gt;\n"
+"        &lt;p&gt;Regards,&lt;/p&gt;\n"
+"        &lt;p&gt;Peter&lt;/p&gt;\n"
+"    &lt;/m:body&gt;\n"
+"    \n"
+"&lt;/m:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:26
+#, no-c-format
+msgid ""
+"The <literal>&lt;m:message&gt;</literal> tag wraps the whole message, and "
+"tells Seam to start rendering an email. Inside the <literal>&lt;m:message&gt;"
+"</literal> tag we use an <literal>&lt;m:from&gt;</literal> tag to set who "
+"the message is from, a <literal>&lt;m:to&gt;</literal> tag to specify a "
+"sender (notice how we use EL as we would in a normal facelet), and a "
+"<literal>&lt;m:subject&gt;</literal> tag."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:29
+#, no-c-format
+msgid ""
+"The <literal>&lt;m:body&gt;</literal> tag wraps the body of the email. You "
+"can use regular HTML tags inside the body as well as JSF components."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:32
+#, no-c-format
+msgid ""
+"So, now you have your email template, how do you go about sending it? Well, "
+"at the end of rendering the <literal>m:message</literal> the "
+"<literal>mailSession</literal> is called to send the email, so all you have "
+"to do is ask Seam to render the view:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:35
+#, no-c-format
+msgid ""
+"@In(create=true)\n"
+"private Renderer renderer;\n"
+"   \n"
+"public void send() {\n"
+"    try {\n"
+"       renderer.render(\"/simple.xhtml\");\n"
+"       facesMessages.add(\"Email sent successfully\");\n"
+"   } \n"
+"   catch (Exception e) {\n"
+"       facesMessages.add(\"Email sending failed: \" + e.getMessage());\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:36
+#, no-c-format
+msgid ""
+"If, for example, you entered an invalid email address, then an exception "
+"would be thrown, which is caught and then displayed to the user."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:40
+#, no-c-format
+msgid "Attachments"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:41
+#, no-c-format
+msgid ""
+"Seam makes it easy to attach files to an email. It supports most of the "
+"standard java types used when working with files."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:44
+#, no-c-format
+msgid "If you wanted to email the <literal>jboss-seam-mail.jar</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:47
+#, no-c-format
+msgid "&lt;m:attachment value=\"/WEB-INF/lib/jboss-seam-mail.jar\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:48
+#, no-c-format
+msgid ""
+"Seam will load the file from the classpath, and attach it to the email. By "
+"default it would be attached as <literal>jboss-seam-mail.jar</literal>; if "
+"you wanted it to have another name you would just add the <literal>fileName</"
+"literal> attribute:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:51
+#, no-c-format
+msgid ""
+"&lt;m:attachment value=\"/WEB-INF/lib/jboss-seam-mail.jar\" fileName=\"this-"
+"is-so-cool.jar\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:52
+#, no-c-format
+msgid ""
+"You could also attach a <literal>java.io.File</literal>, a <literal>java.net."
+"URL</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:55
+#, no-c-format
+msgid "&lt;m:attachment value=\"#{numbers}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:56
+#, no-c-format
+msgid ""
+"Or a <literal>byte[]</literal> or a <literal>java.io.InputStream</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:59
+#, no-c-format
+msgid ""
+"&lt;m:attachment value=\"#{person.photo}\" contentType=\"image/png\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:60
+#, no-c-format
+msgid ""
+"You'll notice that for a <literal>byte[]</literal> and a <literal>java.io."
+"InputStream</literal> you need to specify the MIME type of the attachment "
+"(as that information is not carried as part of the file)."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:63
+#, no-c-format
+msgid ""
+"And it gets even better, you can attach a Seam generated PDF, or any "
+"standard JSF view, just by wrapping a <literal>&lt;m:attachment&gt;</"
+"literal> around the normal tags you would use:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:66
+#, no-c-format
+msgid ""
+"&lt;m:attachment fileName=\"tiny.pdf\"&gt;\n"
+"    &lt;p:"
+"document&gt;                                                      \n"
+"        A very tiny "
+"PDF                                                                                                \n"
+"    &lt;/p:document&gt;\n"
+"&lt;/m:attachment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:67
+#, no-c-format
+msgid ""
+"If you had a set of files you wanted to attach (for example a set of "
+"pictures loaded from a database) you can just use a <literal>&lt;ui:"
+"repeat&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:70
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{people}\" var=\"person\"&gt;\n"
+"    &lt;m:attachment value=\"#{person.photo}\" contentType=\"image/jpeg\"\n"
+"    fileName=\"#{person.firstname}_#{person.lastname}.jpg\"/&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:74
+#, no-c-format
+msgid "HTML/Text alternative part"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:75
+#, no-c-format
+msgid ""
+"Whilst most mail readers nowadays support HTML, some don't, so you can add a "
+"plain text alternative to your email body:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:78
+#, no-c-format
+msgid ""
+"&lt;m:body&gt;\n"
+"    &lt;f:facet name=\"alternative\"&gt;Sorry, your email reader can't show "
+"our fancy email, \n"
+"please go to http://labs.jboss.com/jbossseam to explore Seam.&lt;/f:"
+"facet&gt;\n"
+"&lt;/m:body&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:82
+#, no-c-format
+msgid "Multiple recipients"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:83
+#, no-c-format
+msgid ""
+"Often you'll want to send an email to a group of recipients (for example "
+"your users). All of the recipient mail tags can be placed inside a "
+"<literal>&lt;ui:repeat&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:86
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{allUsers} var=\"user\"&gt;\n"
+"    &lt;m:to name=\"#{user.firstname} #{user.lastname}\" address=\"#{user."
+"emailAddress}\" /&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:90
+#, no-c-format
+msgid "Multiple messages"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:91
+#, no-c-format
+msgid ""
+"Sometimes, however, you need to send a slightly different message to each "
+"recipient (e.g. a password reset). The best way to do this is to place the "
+"whole message inside a <literal>&lt;ui:repeat&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:94
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{people}\" var=\"p\"&gt;\n"
+"    &lt;m:message&gt;\n"
+"        &lt;m:from name=\"#{person.firstname} #{person.lastname}\"&gt;#"
+"{person.address}&lt;/m:from&gt;\n"
+"        &lt;m:to name=\"#{p.firstname}\"&gt;#{p.address}&lt;/m:to&gt;\n"
+"            ...\n"
+"    &lt;/m:message&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:98
+#, no-c-format
+msgid "Templating"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:99
+#, no-c-format
+msgid ""
+"The mail templating example shows that facelets templating Just Works with "
+"the Seam mail tags."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:102
+#, no-c-format
+msgid "Our <literal>template.xhtml</literal> contains:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:105
+#, no-c-format
+msgid ""
+"&lt;m:message&gt;\n"
+"   &lt;m:from name=\"Seam\" address=\"do-not-reply at jboss.com\" /&gt;\n"
+"   &lt;m:to name=\"#{person.firstname} #{person.lastname}\"&gt;#{person."
+"address}&lt;/m:to&gt;\n"
+"   &lt;m:subject&gt;#{subject}&lt;/m:subject&gt;\n"
+"   &lt;m:body&gt;\n"
+"       &lt;html&gt;\n"
+"           &lt;body&gt;\n"
+"               &lt;ui:insert name=\"body\"&gt;This is the default body, "
+"specified by the template.\n"
+"               &lt;/ui:insert&gt;\n"
+"           &lt;/body&gt;\n"
+"       &lt;/html&gt;\n"
+"   &lt;/m:body&gt;\n"
+"&lt;/m:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:106
+#, no-c-format
+msgid "Our <literal>templating.xhtml</literal> contains:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:109
+#, no-c-format
+msgid ""
+"&lt;ui:param name=\"subject\" value=\"Templating with Seam Mail\"/&gt;\n"
+"&lt;ui:define name=\"body\"&gt;\n"
+"    &lt;p&gt;This example demonstrates that you can easily use &lt;i&gt;"
+"facelets templating&lt;/i&gt; in email!&lt;/p&gt;\n"
+"&lt;/ui:define&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:113
+#, no-c-format
+msgid "Other Headers"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:114
+#, no-c-format
+msgid ""
+"Sometimes you'll want to add other headers to your email. Seam provides "
+"support for some (see <xref linkend=\"Email-Tags\"/>). For example, we can "
+"set the importance of the email, and ask for a read receipt:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:117
+#, no-c-format
+msgid ""
+"&lt;m:message xmlns:m=\"http://jboss.com/products/seam/mail\"\n"
+"           importance=\"low\"\n"
+"           requestReadReceipt=\"true\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:118
+#, no-c-format
+msgid ""
+"Otherise you can add any header to the message using the <literal>&lt;m:"
+"header&gt;</literal> tag:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:121
+#, no-c-format
+msgid "&lt;m:header name=\"X-Sent-From\" value=\"JBoss Seam\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:127
+#, no-c-format
+msgid "Receiving emails"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:128
+#, no-c-format
+msgid ""
+"If you are using EJB then you can use a MDB (Message Driven Bean) to receive "
+"email. Seam comes with an improved version of <literal>mail-ra.rar</literal> "
+"as distributed in JBoss AS; until the improvements make there way into a "
+"released version of JBoss AS, replacing the default <literal>rar</literal> "
+"with the one distributed with Seam is recommended."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:131
+#, no-c-format
+msgid "You can configure it like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:134
+#, no-c-format
+msgid ""
+"@MessageDriven(activationConfig={\n"
+"         @ActivationConfigProperty(propertyName=\"mailServer\", "
+"propertyValue=\"localhost\"),\n"
+"         @ActivationConfigProperty(propertyName=\"mailFolder\", "
+"propertyValue=\"INBOX\"),\n"
+"         @ActivationConfigProperty(propertyName=\"storeProtocol\", "
+"propertyValue=\"pop3\"),\n"
+"         @ActivationConfigProperty(propertyName=\"userName\", propertyValue="
+"\"seam\"),\n"
+"         @ActivationConfigProperty(propertyName=\"password\", propertyValue="
+"\"seam\")\n"
+"})\n"
+"@ResourceAdapter(\"mail-ra.rar\")\n"
+"@Name(\"mailListener\")\n"
+"public class MailListenerMDB implements MailListener {\n"
+"\n"
+"   @In(create=true)\n"
+"   private OrderProcessor orderProcessor;\n"
+"\n"
+"   public void onMessage(Message message) {\n"
+"      // Process the message\n"
+"      orderProcessor.process(message.getSubject());\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:135
+#, no-c-format
+msgid ""
+"Each message received will cause <literal>onMessage(Message message)</"
+"literal> to be called. Most seam annotations will work inside a MDB but you "
+"musn't access the persistence context."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:138
+#, no-c-format
+msgid ""
+"You can find more information on the default <literal>mail-ra.rar</literal> "
+"at <ulink url=\"http://wiki.jboss.org/wiki/Wiki.jsp?page=InboundJavaMail"
+"\">http://wiki.jboss.org/wiki/Wiki.jsp?page=InboundJavaMail</ulink>. The "
+"version distributed with Seam also includes a <literal>debug</literal> "
+"property to enable JavaMail debugging, a <literal>flush</literal> property "
+"(by default true) to disable flushing a <literal>POP3</literal> mailbox "
+"after successfullying delivering a message to your MDB and a <literal>port</"
+"literal> property to override the default TCP port. Beware that the api for "
+"this may be altered as changes make there way into JBoss AS."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:141
+#, no-c-format
+msgid ""
+"If you aren't using JBoss AS you can still use <literal>mail-ra.rar</"
+"literal> (included with Seam in the mail directory), or you may find your "
+"application server includes a similar adapter."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:147
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:148
+#, no-c-format
+msgid ""
+"To include Email support in your application, include <literal>jboss-seam-"
+"mail.jar</literal> in your WEB-INF/lib directory. If you are using JBoss AS "
+"there is no further configuration needed to use Seam's email support. "
+"Otherwise you need to make sure you have the JavaMail API, an implementation "
+"of the JavaMail API present (the API and impl used in JBoss AS are "
+"distributed with seam as <literal>lib/mail.jar</literal>), and a copy of the "
+"Java Activation Framework (distributed with seam as <literal>lib/activation."
+"jar</literal>."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:151
+#, no-c-format
+msgid ""
+"The Seam Email module requires the use of Facelets as the view technology. "
+"Future versions of the library may also support the use of JSP. "
+"Additionally, it requires the use of the seam-ui package."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:154
+#, no-c-format
+msgid ""
+"The <literal>mailSession</literal> component uses JavaMail to talk to a "
+"'real' SMTP server."
+msgstr ""
+
+#. Tag: literal
+#: Mail.xml:158
+#, no-c-format
+msgid "mailSession"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:159
+#, no-c-format
+msgid ""
+"A JavaMail Session may be available via a JNDI lookup if you are working in "
+"an JEE environment or you can use a Seam configured Session."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:162
+#, no-c-format
+msgid ""
+"The mailSession component's properties are described in more detail in <xref "
+"linkend=\"Built_in_Seam_components-Mail_related_components\"/>."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:166
+#, no-c-format
+msgid "JNDI lookup in JBoss AS"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:167
+#, no-c-format
+msgid ""
+"The JBossAS <literal>deploy/mail-service.xml</literal> configures a JavaMail "
+"session binding into JNDI. The default service configuration will need "
+"altering for your network. <ulink url=\"http://wiki.jboss.org/wiki/Wiki.jsp?"
+"page=JavaMail\">http://wiki.jboss.org/wiki/Wiki.jsp?page=JavaMail</ulink> "
+"describes the service in more detail."
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:170
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"        xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"        xmlns:mail=\"http://jboss.com/products/seam/mail\"&gt;\n"
+"        \n"
+"    &lt;mail:mail-session session-jndi-name=\"java:/Mail\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:171
+#, no-c-format
+msgid ""
+"Here we tell Seam to get the mail session bound to <literal>java:/Mail</"
+"literal> from JNDI."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:177
+#, no-c-format
+msgid "Seam configured Session"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:178
+#, no-c-format
+msgid ""
+"A mail session can be configured via <literal>components.xml</literal>. Here "
+"we tell Seam to use <literal>smtp.example.com</literal> as the smtp server,"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:181
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"        xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"        xmlns:mail=\"http://jboss.com/products/seam/mail\"&gt;\n"
+"        \n"
+"    &lt;mail:mail-session host=\"smtp.example.com\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:189
+#, no-c-format
+msgid "Tags"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:190
+#, no-c-format
+msgid ""
+"Emails are generated using tags in the <literal>http://jboss.com/products/"
+"seam/mail</literal> namespace. Documents should always have the "
+"<literal>message</literal> tag at the root of the message. The message tag "
+"prepares Seam to generate an email."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:193
+#, no-c-format
+msgid ""
+"The standard templating tags of facelets can be used as normal. Inside the "
+"body you can use any JSF tag which doesn't require access to external "
+"resources (stylesheets, javascript)."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:198
+#, no-c-format
+msgid "&lt;m:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:200
+#, no-c-format
+msgid "Root tag of a mail message"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:205
+#, no-c-format
+msgid ""
+"<literal>importance</literal> &mdash; low, normal or high. By default "
+"normal, this sets the importance of the mail message."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:210
+#, no-c-format
+msgid ""
+"<literal>precedence</literal> &mdash; sets the precedence of the message (e."
+"g. bulk)."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:215
+#, no-c-format
+msgid ""
+"<literal>requestReadReceipt</literal> &mdash; by default false, if set, a "
+"read receipt will be request will be added, with the read receipt being sent "
+"to the <literal>From:</literal> address."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:220
+#, no-c-format
+msgid ""
+"<literal>urlBase</literal> &mdash; If set, the value is prepended to the "
+"<literal>requestContextPath</literal> allowing you to use components such as "
+"<literal>&lt;h:graphicImage&gt;</literal> in your emails."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:228
+#, no-c-format
+msgid "&lt;m:from&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:230
+#, no-c-format
+msgid ""
+"Set's the From: address for the email. You can only have one of these per "
+"email."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:235
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the name the email should come from."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:240 Mail.xml:255
+#, no-c-format
+msgid ""
+"<literal>address</literal> &mdash; the email address the email should come "
+"from."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:248
+#, no-c-format
+msgid "&lt;m:replyTo&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:250
+#, no-c-format
+msgid ""
+"Set's the Reply-to: address for the email. You can only have one of these "
+"per email."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:263
+#, no-c-format
+msgid "&lt;m:to&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:265
+#, no-c-format
+msgid ""
+"Add a recipient to the email. Use multiple &lt;m:to&gt; tags for multiple "
+"recipients. This tag can be safely placed inside a repeat tag such as &lt;ui:"
+"repeat&gt;."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:270 Mail.xml:290 Mail.xml:310
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the name of the recipient."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:275 Mail.xml:295 Mail.xml:315
+#, no-c-format
+msgid "<literal>address</literal> &mdash; the email address of the recipient."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:283
+#, no-c-format
+msgid "&lt;m:cc&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:285
+#, no-c-format
+msgid ""
+"Add a cc recipient to the email. Use multiple &lt;m:cc&gt; tags for multiple "
+"ccs. This tag can be safely placed inside a repeat tag such as &lt;ui:"
+"repeat&gt;."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:303
+#, no-c-format
+msgid "&lt;m:bcc&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:305
+#, no-c-format
+msgid ""
+"Add a bcc recipient to the email. Use multiple &lt;m:bcc&gt; tags for "
+"multiple bccs. This tag can be safely placed inside a repeat tag such as &lt;"
+"ui:repeat&gt;."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:323
+#, no-c-format
+msgid "&lt;m:header&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:325
+#, no-c-format
+msgid ""
+"Add a header to the email (e.g. <literal>X-Sent-From: JBoss Seam</literal>"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:330
+#, no-c-format
+msgid ""
+"<literal>name</literal> &mdash; The name of the header to add (e.g. "
+"<literal>X-Sent-From</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:335
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; The value of the header to add (e.g. "
+"<literal>JBoss Seam</literal>)."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:343
+#, no-c-format
+msgid "&lt;m:attachment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:345
+#, no-c-format
+msgid "Add an attachment to the email."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:350
+#, no-c-format
+msgid "<literal>value</literal> &mdash; The file to attach:"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:355
+#, no-c-format
+msgid ""
+"<literal>String</literal> &mdash; A <literal>String</literal> is interpreted "
+"as a path to file within the classpath"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:360
+#, no-c-format
+msgid ""
+"<literal>java.io.File</literal> &mdash; An EL expression can reference a "
+"<literal>File</literal> object"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:365
+#, no-c-format
+msgid ""
+"<literal>java.net.URL</literal> &mdash; An EL expression can reference a "
+"<literal>URL</literal> object"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:370
+#, no-c-format
+msgid ""
+"<literal>java.io.InputStream</literal> &mdash; An EL expression can "
+"reference an <literal>InputStream</literal>. In this case both a "
+"<literal>fileName</literal> and a <literal>contentType</literal> must be "
+"specified."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:375
+#, no-c-format
+msgid ""
+"<literal>byte[]</literal> &mdash; An EL expression can reference an "
+"<literal>byte[]</literal>. In this case both a <literal>fileName</literal> "
+"and a <literal>contentType</literal> must be specified."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:380
+#, no-c-format
+msgid "If the value attribute is ommitted:"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:385
+#, no-c-format
+msgid ""
+"If this tag contains a <literal>&lt;p:document&gt;</literal> tag, the "
+"document described will be generated and attached to the email. A "
+"<literal>fileName</literal> should be specfied."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:390
+#, no-c-format
+msgid ""
+"If this tag contains other JSF tags a HTML document will be generated from "
+"them and attached to the email. A <literal>fileName</literal> should be "
+"specfied."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:397
+#, no-c-format
+msgid ""
+"<literal>fileName</literal> &mdash; Specify the file name to use for the "
+"attached file."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:402
+#, no-c-format
+msgid ""
+"<literal>contentType</literal> &mdash; Specify the MIME type of the attached "
+"file"
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:410
+#, no-c-format
+msgid "&lt;m:subject&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:412
+#, no-c-format
+msgid "Set's the subject for the email."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:418
+#, no-c-format
+msgid "&lt;m:body&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:420
+#, no-c-format
+msgid ""
+"Set's the body for the email. Supports an <literal>alternative</literal> "
+"facet which, if an HTML email is generated can contain alternative text for "
+"a mail reader which doesn't support html."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:425
+#, no-c-format
+msgid ""
+"<literal>type</literal> &mdash; If set to <literal>plain</literal> then a "
+"plain text email will be generated otherwise an HTML email is generated."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Persistence.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Persistence.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Persistence.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,750 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Persistence.xml:10
+#, no-c-format
+msgid "Seam and Object/Relational Mapping"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:11
+#, no-c-format
+msgid ""
+"Seam provides extensive support for the two most popular persistence "
+"architectures for Java: Hibernate3, and the Java Persistence API introduced "
+"with EJB 3.0. Seam's unique state-management architecture allows the most "
+"sophisticated ORM integration of any web application framework."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:15
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:16
+#, no-c-format
+msgid ""
+"Seam grew out of the frustration of the Hibernate team with the "
+"statelessness typical of the previous generation of Java application "
+"architectures. The state management architecture of Seam was originally "
+"designed to solve problems relating to persistence&mdash;in particular "
+"problems associated with <emphasis>optimistic transaction processing</"
+"emphasis>. Scalable online applications always use optimistic transactions. "
+"An atomic (database/JTA) level transaction should not span a user "
+"interaction unless the application is designed to support only a very small "
+"number of concurrent clients. But almost all interesting work involves first "
+"displaying data to a user, and then, slightly later, updating the same data. "
+"So Hibernate was designed to support the idea of a persistence context which "
+"spanned an optimistic transaction."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:19
+#, no-c-format
+msgid ""
+"Unfortunately, the so-called \"stateless\" architectures that preceded Seam "
+"and EJB 3.0 had no construct for representing an optimistic transaction. So, "
+"instead, these architectures provided persistence contexts scoped to the "
+"atomic transaction. Of course, this resulted in many problems for users, and "
+"is the cause of the number one user complaint about Hibernate: the dreaded "
+"<literal>LazyInitializationException</literal>. What we need is a construct "
+"for representing an optimistic transaction in the application tier."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:22
+#, no-c-format
+msgid ""
+"EJB 3.0 recognizes this problem, and introduces the idea of a stateful "
+"component (a stateful session bean) with an <emphasis>extended persistence "
+"context</emphasis> scoped to the lifetime of the component. This is a "
+"partial solution to the problem (and is a useful construct in and of itself) "
+"however there are two problems:"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:27
+#, no-c-format
+msgid ""
+"The lifecycle of the stateful session bean must be managed manually via code "
+"in the web tier (it turns out that this is a subtle problem and much more "
+"difficult in practice than it sounds)."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:32
+#, no-c-format
+msgid ""
+"Propagation of the persistence context between stateful components in the "
+"same optimistic transaction is possible, but tricky."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:37
+#, no-c-format
+msgid ""
+"Seam solves the first problem by providing conversations, and stateful "
+"session bean components scoped to the conversation. (Most conversations "
+"actually represent optimistic transactions in the data layer.) This is "
+"sufficient for many simple applications (such as the Seam booking demo) "
+"where persistence context propagation is not needed. For more complex "
+"applications, with many loosly-interacting components in each conversation, "
+"propagation of the persistence context across components becomes an "
+"important issue. So Seam extends the persistence context management model of "
+"EJB 3.0, to provide conversation-scoped extended persistence contexts."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:43
+#, no-c-format
+msgid "Seam managed transactions"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:44
+#, no-c-format
+msgid ""
+"EJB session beans feature declarative transaction management. The EJB "
+"container is able to start a transaction transparently when the bean is "
+"invoked, and end it when the invocation ends. If we write a session bean "
+"method that acts as a JSF action listener, we can do all the work associated "
+"with that action in one transaction, and be sure that it is committed or "
+"rolled back when we finish processing the action. This is a great feature, "
+"and all that is needed by some Seam applications."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:47
+#, no-c-format
+msgid ""
+"However, there is a problem with this approach. A Seam application may not "
+"perform all data access for a request from a single method call to a session "
+"bean."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:52
+#, no-c-format
+msgid ""
+"The request might require processing by several loosly-coupled components, "
+"each of which is called independently from the web layer. It is common to "
+"see several or even many calls per request from the web layer to EJB "
+"components in Seam."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:57
+#, no-c-format
+msgid "Rendering of the view might require lazy fetching of associations."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:62
+#, no-c-format
+msgid ""
+"The more transactions per request, the more likely we are to encounter "
+"atomicity and isolation problems when our application is processing many "
+"concurrent requests. Certainly, all write operations should occur in the "
+"same transaction!"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:65
+#, no-c-format
+msgid ""
+"Hibernate users developed the <emphasis>\"open session in view\"</emphasis> "
+"pattern to work around this problem. In the Hibernate community, \"open "
+"session in view\" was historically even more important because frameworks "
+"like Spring use transaction-scoped persistence contexts. So rendering the "
+"view would cause <literal>LazyInitializationException</literal>s when "
+"unfetched associations were accessed."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:68
+#, no-c-format
+msgid ""
+"This pattern is usually implemented as a single transaction which spans the "
+"entire request. There are several problems with this implementation, the "
+"most serious being that we can never be sure that a transaction is "
+"successful until we commit it&mdash;but by the time the \"open session in "
+"view\" transaction is committed, the view is fully rendered, and the "
+"rendered response may already have been flushed to the client. How can we "
+"notify the user that their transaction was unsuccessful?"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:71
+#, no-c-format
+msgid ""
+"Seam solves both the transaction isolation problem and the association "
+"fetching problem, while working around the problems with \"open session in "
+"view\". The solution comes in two parts:"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:76
+#, no-c-format
+msgid ""
+"use an extended persistence context that is scoped to the conversation, "
+"instead of to the transaction"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:81
+#, no-c-format
+msgid ""
+"use two transactions per request; the first spans the beginning of the "
+"update model values phase until the end of the invoke application phase; the "
+"second spans the render response phase"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:86
+#, no-c-format
+msgid ""
+"In the next section, we'll tell you how to set up a conversation-scope "
+"persistence context. But first we need to tell you how to enable Seam "
+"transaction management. Note that you can use conversation-scoped "
+"persistence contexts without Seam transaction management, and there are good "
+"reasons to use Seam transaction management even when you're not using Seam-"
+"managed persistence contexts. However, the two facilities were designed to "
+"work together, and work best when used together."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:90
+#, no-c-format
+msgid "Enabling Seam-managed transactions"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:91
+#, no-c-format
+msgid ""
+"To make use of <emphasis>Seam managed transactions</emphasis>, you need to "
+"use <literal>TransactionalSeamPhaseListener</literal> in place of "
+"<literal>SeamPhaseListener</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:94
+#, no-c-format
+msgid ""
+"&lt;lifecycle&gt;\n"
+"     &lt;phase-listener&gt;\n"
+"        org.jboss.seam.jsf.TransactionalSeamPhaseListener\n"
+"    &lt;/phase-listener&gt;\n"
+"&lt;/lifecycle&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:95
+#, no-c-format
+msgid ""
+"Seam transaction management is useful even if you're using EJB 3.0 container-"
+"managed persistence contexts. But it is especially useful if you use Seam "
+"outside a Java EE 5 environment, or in any other case where you would use a "
+"Seam-managed persistence context."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:103
+#, no-c-format
+msgid "Seam-managed persistence contexts"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:104
+#, no-c-format
+msgid ""
+"If you're using Seam outside of a Java EE 5 environment, you can't rely upon "
+"the container to manage the persistence context lifecycle for you. Even if "
+"you are in an EE 5 environment, you might have a complex application with "
+"many loosly coupled components that collaborate together in the scope of a "
+"single conversation, and in this case you might find that propagation of the "
+"persistence context between component is tricky and error-prone."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:107
+#, no-c-format
+msgid ""
+"In either case, you'll need to use a <emphasis>managed persistence context</"
+"emphasis> (for JPA) or a <emphasis>managed session</emphasis> (for "
+"Hibernate) in your components. A Seam-managed persistence context is just a "
+"built-in Seam component that manages an instance of <literal>EntityManager</"
+"literal> or <literal>Session</literal> in the conversation context. You can "
+"inject it with <literal>@In</literal>."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:110
+#, no-c-format
+msgid ""
+"Seam-managed persistence contexts are extremely efficient in a clustered "
+"environment. Seam is able to perform an optimization that EJB 3.0 "
+"specification does not allow containers to use for container-managed "
+"extended persistence contexts. Seam supports transparent failover of "
+"extended persisence contexts, without the need to replicate any persistence "
+"context state between nodes. (We hope to fix this oversight in the next "
+"revision of the EJB spec.)"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:114
+#, no-c-format
+msgid "Using a Seam-managed persistence context with JPA"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:115
+#, no-c-format
+msgid ""
+"Configuring a managed persistence context is easy. In <literal>components."
+"xml</literal>, we can write:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:118
+#, no-c-format
+msgid ""
+"&lt;core:managed-persistence-context name=\"bookingDatabase\" \n"
+"                           auto-create=\"true\"\n"
+"            persistence-unit-jndi-name=\"java:/EntityManagerFactories/"
+"bookingData\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:119
+#, no-c-format
+msgid ""
+"This configuration creates a conversation-scoped Seam component named "
+"<literal>bookingDatabase</literal> that manages the lifecycle of "
+"<literal>EntityManager</literal> instances for the persistence unit "
+"(<literal>EntityManagerFactory</literal> instance) with JNDI name "
+"<literal>java:/EntityManagerFactories/bookingData</literal>."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:122
+#, no-c-format
+msgid ""
+"Of course, you need to make sure that you have bound the "
+"<literal>EntityManagerFactory</literal> into JNDI. In JBoss, you can do this "
+"by adding the following property setting to <literal>persistence.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:125
+#, no-c-format
+msgid ""
+"&lt;property name=\"jboss.entity.manager.factory.jndi.name\" \n"
+"          value=\"java:/EntityManagerFactories/bookingData\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:126
+#, no-c-format
+msgid "Now we can have our <literal>EntityManager</literal> injected using:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:129
+#, no-c-format
+msgid "@In EntityManager bookingDatabase;"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:133
+#, no-c-format
+msgid "Using a Seam-managed Hibernate session"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:134
+#, no-c-format
+msgid ""
+"Seam-managed Hibernate sessions are similar. In <literal>components.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:137
+#, no-c-format
+msgid ""
+"&lt;core:hibernate-session-factory name=\"hibernateSessionFactory\"/&gt;\n"
+"\n"
+"&lt;core:managed-hibernate-session name=\"bookingDatabase\" \n"
+"                         auto-create=\"true\"\n"
+"           session-factory-jndi-name=\"java:/bookingSessionFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:138
+#, no-c-format
+msgid ""
+"Where <literal>java:/bookingSessionFactory</literal> is the name of the "
+"session factory specified in <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:141
+#, no-c-format
+msgid ""
+"&lt;session-factory name=\"java:/bookingSessionFactory\"&gt;\n"
+"    &lt;property name=\"transaction.flush_before_completion\"&gt;true&lt;/"
+"property&gt;\n"
+"    &lt;property name=\"connection.release_mode\"&gt;after_statement&lt;/"
+"property&gt;\n"
+"    &lt;property name=\"transaction.manager_lookup_class\"&gt;\n"
+"        org.hibernate.transaction.JBossTransactionManagerLookup\n"
+"    &lt;/property&gt;\n"
+"    &lt;property name=\"transaction.factory_class\"&gt;\n"
+"        org.hibernate.transaction.JTATransactionFactory\n"
+"    &lt;/property&gt;\n"
+"    &lt;property name=\"connection.datasource\"&gt;java:/"
+"bookingDatasource&lt;/property&gt;\n"
+"    ...\n"
+"&lt;/session-factory&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:142
+#, no-c-format
+msgid ""
+"Note that Seam does not flush the session, so you should always enable "
+"<literal>hibernate.transaction.flush_before_completion</literal> to ensure "
+"that the session is automatically flushed before the JTA transaction commits."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:145
+#, no-c-format
+msgid ""
+"We can now have a managed Hibernate <literal>Session</literal> injected into "
+"our JavaBean components using the following code:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:148
+#, no-c-format
+msgid "@In Session bookingDatabase;"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:152
+#, no-c-format
+msgid "Seam-managed persistence contexts and atomic conversations"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:153
+#, no-c-format
+msgid ""
+"Persistence contexts scoped to the conversation allows you to program "
+"optimistic transactions that span multiple requests to the server without "
+"the need to use the <literal>merge()</literal> operation , without the need "
+"to re-load data at the beginning of each request, and without the need to "
+"wrestle with the <literal>LazyInitializationException</literal> or "
+"<literal>NonUniqueObjectException</literal>."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:156
+#, no-c-format
+msgid ""
+"As with any optimistic transaction management, transaction isolation and "
+"consistency can be achieved via use of optimistic locking. Fortunately, both "
+"Hibernate and EJB 3.0 make it very easy to use optimistic locking, by "
+"providing the <literal>@Version</literal> annotation."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:159
+#, no-c-format
+msgid ""
+"By default, the persistence context is flushed (synchronized with the "
+"database) at the end of each transaction. This is sometimes the desired "
+"behavior. But very often, we would prefer that all changes are held in "
+"memory and only written to the database when the conversation ends "
+"successfully. This allows for truly atomic conversations. As the result of a "
+"truly stupid and shortsighted decision by certain non-JBoss, non-Sun and non-"
+"Sybase members of the EJB 3.0 expert group, there is currently no simple, "
+"usable and portable way to implement atomic conversations using EJB 3.0 "
+"persistence. However, Hibernate provides this feature as a vendor extension "
+"to the <literal>FlushModeType</literal>s defined by the specification, and "
+"it is our expectation that other vendors will soon provide a similar "
+"extension."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:162
+#, no-c-format
+msgid ""
+"Seam lets you specify <literal>FlushModeType.MANUAL</literal> when beginning "
+"a conversation. Currently, this works only when Hibernate is the underlying "
+"persistence provider, but we plan to support other equivalent vendor "
+"extensions."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:165
+#, no-c-format
+msgid ""
+"@In EntityManager em; //a Seam-managed persistence context\n"
+"\n"
+"@Begin(flushMode=MANUAL)\n"
+"public void beginClaimWizard() {\n"
+"    claim = em.find(Claim.class, claimId);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:166
+#, no-c-format
+msgid ""
+"Now, the <literal>claim</literal> object remains managed by the persistence "
+"context for the rest ot the conversation. We can make changes to the claim:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:169
+#, no-c-format
+msgid ""
+"public void addPartyToClaim() {\n"
+"    Party party = ....;\n"
+"    claim.addParty(party);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:170
+#, no-c-format
+msgid ""
+"But these changes will not be flushed to the database until we explicitly "
+"force the flush to occur:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:173
+#, no-c-format
+msgid ""
+"@End\n"
+"public void commitClaim() {\n"
+"    em.flush();\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:179
+#, no-c-format
+msgid "Using the JPA \"delegate\""
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:180
+#, no-c-format
+msgid ""
+"The <literal>EntityManager</literal> interface lets you access a vendor-"
+"specific API via the <literal>getDelegate()</literal> method. Naturally, the "
+"most interesting vendor is Hibernate, and the most powerful delegate "
+"interface is <literal>org.hibernate.Session</literal>. You'd be nuts to use "
+"anything else. Trust me, I'm not biased at all."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:183
+#, no-c-format
+msgid ""
+"But regardless of whether you're using Hibernate (genius!) or something else "
+"(masochist, or just not very bright), you'll almost certainly want to use "
+"the delegate in your Seam components from time to time. One approach would "
+"be the following:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:186
+#, no-c-format
+msgid ""
+"@In EntityManager entityManager;\n"
+"\n"
+"@Create\n"
+"public void init() {\n"
+"    ( (Session) entityManager.getDelegate() ).enableFilter(\"currentVersions"
+"\");\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:187
+#, no-c-format
+msgid ""
+"But typecasts are unquestionably the ugliest syntax in the Java language, so "
+"most people avoid them whenever possible. Here's a different way to get at "
+"the delegate. First, add the following line to <literal>components.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:190
+#, no-c-format
+msgid ""
+"&lt;factory name=\"session\" \n"
+"         scope=\"STATELESS\" \n"
+"         auto-create=\"true\" \n"
+"         value=\"#{entityManager.delegate}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:191
+#, no-c-format
+msgid "Now we can inject the session directly:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:194
+#, no-c-format
+msgid ""
+"@In Session session;\n"
+"\n"
+"@Create\n"
+"public void init() {\n"
+"    session.enableFilter(\"currentVersions\");\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:198
+#, no-c-format
+msgid "Using EL in EJB-QL/HQL"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:199
+#, no-c-format
+msgid ""
+"Seam proxies the <literal>EntityManager</literal> or <literal>Session</"
+"literal> object whenever you use a Seam-managed persistence context or "
+"inject a container managed persistence context using "
+"<literal>@PersistenceContext</literal>. This lets you use EL expressions in "
+"your query strings, safely and efficiently. For example, this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:202
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=#{user.username}\")\n"
+"         .getSingleResult();"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:203
+#, no-c-format
+msgid "is equivalent to:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:206
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getSingleResult();"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:207
+#, no-c-format
+msgid "Of course, you should never, ever write it like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:210
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=\" + user.getUsername"
+"()) //BAD!\n"
+"         .getSingleResult();"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:211
+#, no-c-format
+msgid "(It is inefficient and vulnerable to SQL injection attacks.)"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:217
+#, no-c-format
+msgid "Using Hibernate filters"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:218
+#, no-c-format
+msgid ""
+"The coolest, and most unique, feature of Hibernate is <emphasis>filters</"
+"emphasis>. Filters let you provide a restricted view of the data in the "
+"database. You can find out more about filters in the Hibernate "
+"documentation. But we thought we'd mention an easy way to incorporate "
+"filters into a Seam application, one that works especially well with the "
+"Seam Application Framework."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:221
+#, no-c-format
+msgid ""
+"Seam-managed persistence contexts may have a list of filters defined, which "
+"will be enabled whenever an <literal>EntityManager</literal> or Hibernate "
+"<literal>Session</literal> is first created. (Of course, they may only be "
+"used when Hibernate is the underlying persistence provider.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:224
+#, no-c-format
+msgid ""
+"&lt;core:filter name=\"regionFilter\"&gt;\n"
+"    &lt;core:name&gt;region&lt;/core:name&gt;\n"
+"    &lt;core:parameters&gt;\n"
+"        &lt;key&gt;regionCode&lt;/key&gt;\n"
+"        &lt;value&gt;#{region.code}&lt;/value&gt;\n"
+"    &lt;/core:parameters&gt;\n"
+"&lt;/core:filter&gt;\n"
+"\n"
+"&lt;core:filter name=\"currentFilter\"&gt;\n"
+"    &lt;core:name&gt;current&lt;/core:name&gt;\n"
+"    &lt;core:parameters&gt;\n"
+"        &lt;key&gt;date&lt;/key&gt;\n"
+"        &lt;value&gt;#{currentDate}&lt;/value&gt;\n"
+"    &lt;/core:parameters&gt;\n"
+"&lt;/core:filter&gt;\n"
+"\n"
+"&lt;core:managed-persistence-context name=\"personDatabase\"\n"
+"    persistence-unit-jndi-name=\"java:/EntityManagerFactories/personDatabase"
+"\"&gt;\n"
+"    &lt;core:filters&gt;\n"
+"        &lt;value&gt;#{regionFilter}&lt;/value&gt;\n"
+"        &lt;value&gt;#{currentFilter}&lt;/value&gt;\n"
+"    &lt;/core:filters&gt;\n"
+"&lt;/core:managed-persistence-context&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Remoting.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Remoting.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Remoting.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1458 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Remoting.xml:10
+#, no-c-format
+msgid "Remoting"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:11
+#, no-c-format
+msgid ""
+"Seam provides a convenient method of remotely accessing components from a "
+"web page, using AJAX (Asynchronous Javascript and XML). The framework for "
+"this functionality is provided with almost no up-front development effort - "
+"your components only require simple annotating to become accessible via "
+"AJAX. This chapter describes the steps required to build an AJAX-enabled web "
+"page, then goes on to explain the features of the Seam Remoting framework in "
+"more detail."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:14 Remoting.xml:296
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:15
+#, no-c-format
+msgid ""
+"To use remoting, the Seam Resource servlet must first be configured in your "
+"<literal>web.xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:18
+#, no-c-format
+msgid ""
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"  &lt;/servlet&gt;\n"
+"\n"
+"  &lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"  &lt;/servlet-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:19
+#, no-c-format
+msgid ""
+"The next step is to import the necessary Javascript into your web page. "
+"There are a minimum of two scripts that must be imported. The first one "
+"contains all the client-side framework code that enables remoting "
+"functionality:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:22
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/resource/"
+"remote.js\"&gt;&lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:23
+#, no-c-format
+msgid ""
+"The second script contains the stubs and type definitions for the components "
+"you wish to call. It is generated dynamically based on the local interface "
+"of your components, and includes type definitions for all of the classes "
+"that can be used to call the remotable methods of the interface. The name of "
+"the script reflects the name of your component. For example, if you have a "
+"stateless session bean annotated with <literal>@Name(\"customerAction\")</"
+"literal>, then your script tag should look like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:26
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?customerAction\"&gt;\n"
+"      &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:27
+#, no-c-format
+msgid ""
+"If you wish to access more than one component from the same page, then "
+"include them all as parameters of your script tag:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:30
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" \n"
+"      src=\"seam/resource/remoting/interface.js?customerAction&amp;"
+"accountAction\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:31
+#, no-c-format
+msgid "The \"Seam\" object"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:32
+#, no-c-format
+msgid ""
+"Client-side interaction with your components is all performed via the "
+"<literal>Seam</literal> Javascript object. This object is defined in "
+"<literal>remote.js</literal>, and you'll be using it to make asynchronous "
+"calls against your component. It is split into two areas of functionality; "
+"<literal>Seam.Component</literal> contains methods for working with "
+"components and <literal>Seam.Remoting</literal> contains methods for "
+"executing remote requests. The easiest way to become familiar with this "
+"object is to start with a simple example."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:35
+#, no-c-format
+msgid "A Hello World example"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:36
+#, no-c-format
+msgid ""
+"Let's step through a simple example to see how the <literal>Seam</literal> "
+"object works. First of all, let's create a new Seam component called "
+"<literal>helloAction</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:39
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"  @Name(\"helloAction\")\n"
+"  public class HelloAction implements HelloLocal {\n"
+"    public String sayHello(String name) {\n"
+"      return \"Hello, \" + name;\n"
+"    }\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:40
+#, no-c-format
+msgid ""
+"You also need to create a local interface for our new component - take "
+"special note of the <literal>@WebRemote</literal> annotation, as it's "
+"required to make our method accessible via remoting:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:43
+#, no-c-format
+msgid ""
+"@Local\n"
+"  public interface HelloLocal {\n"
+"    @WebRemote\n"
+"    public String sayHello(String name);\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:44
+#, no-c-format
+msgid ""
+"That's all the server-side code we need to write. Now for our web page - "
+"create a new page and import the following scripts:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:47
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/resource/"
+"remote.js\"&gt;&lt;/script&gt;\n"
+"  &lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?helloAction\"&gt;&lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:48
+#, no-c-format
+msgid ""
+"To make this a fully interactive user experience, let's add a button to our "
+"page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:51
+#, no-c-format
+msgid ""
+"&lt;button onclick=\"javascript:sayHello()\"&gt;Say Hello&lt;/button&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:52
+#, no-c-format
+msgid ""
+"We'll also need to add some more script to make our button actually do "
+"something when it's clicked:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:55
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\"&gt;\n"
+"    //&lt;![CDATA[\n"
+"\n"
+"    function sayHello() {\n"
+"      var name = prompt(\"What is your name?\");\n"
+"      Seam.Component.getInstance(\"helloAction\").sayHello(name, "
+"sayHelloCallback);\n"
+"    }\n"
+"\n"
+"    function sayHelloCallback(result) {\n"
+"      alert(result);\n"
+"    }\n"
+"\n"
+"    // ]]&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:56
+#, no-c-format
+msgid ""
+"We're done! Deploy your application and browse to your page. Click the "
+"button, and enter a name when prompted. A message box will display the hello "
+"message confirming that the call was successful. If you want to save some "
+"time, you'll find the full source code for this Hello World example in "
+"Seam's <literal>/examples/remoting/helloworld</literal> directory."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:59
+#, no-c-format
+msgid ""
+"So what does the code of our script actually do? Let's break it down into "
+"smaller pieces. To start with, you can see from the Javascript code listing "
+"that we have implemented two methods - the first method is responsible for "
+"prompting the user for their name and then making a remote request. Take a "
+"look at the following line:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:62
+#, no-c-format
+msgid ""
+"Seam.Component.getInstance(\"helloAction\").sayHello(name, sayHelloCallback);"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:63
+#, no-c-format
+msgid ""
+"The first section of this line, <literal>Seam.Component.getInstance"
+"(\"helloAction\")</literal> returns a proxy, or \"stub\" for our "
+"<literal>helloAction</literal> component. We can invoke the methods of our "
+"component against this stub, which is exactly what happens with the "
+"remainder of the line: <literal>sayHello(name, sayHelloCallback);</literal>."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:66
+#, no-c-format
+msgid ""
+"What this line of code in its completeness does, is invoke the "
+"<literal>sayHello</literal> method of our component, passing in "
+"<literal>name</literal> as a parameter. The second parameter, "
+"<literal>sayHelloCallback</literal> isn't a parameter of our component's "
+"<literal>sayHello</literal> method, instead it tells the Seam Remoting "
+"framework that once it receives the response to our request, it should pass "
+"it to the <literal>sayHelloCallback</literal> Javascript method. This "
+"callback parameter is entirely optional, so feel free to leave it out if "
+"you're calling a method with a <literal>void</literal> return type or if you "
+"don't care about the result."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:69
+#, no-c-format
+msgid ""
+"The <literal>sayHelloCallback</literal> method, once receiving the response "
+"to our remote request then pops up an alert message displaying the result of "
+"our method call."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:72
+#, no-c-format
+msgid "Seam.Component"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:73
+#, no-c-format
+msgid ""
+"The <literal>Seam.Component</literal> Javascript object provides a number of "
+"client-side methods for working with your Seam components. The two main "
+"methods, <literal>newInstance()</literal> and <literal>getInstance()</"
+"literal> are documented in the following sections however their main "
+"difference is that <literal>newInstance()</literal> will always create a new "
+"instance of a component type, and <literal>getInstance()</literal> will "
+"return a singleton instance."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:76
+#, no-c-format
+msgid "Seam.Component.newInstance()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:77
+#, no-c-format
+msgid ""
+"Use this method to create a new instance of an entity or Javabean component. "
+"The object returned by this method will have the same getter/setter methods "
+"as its server-side counterpart, or alternatively if you wish you can access "
+"its fields directly. Take the following Seam entity component for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:80
+#, no-c-format
+msgid ""
+"@Name(\"customer\")\n"
+"  @Entity\n"
+"  public class Customer implements Serializable\n"
+"  {\n"
+"    private Integer customerId;\n"
+"    private String firstName;\n"
+"    private String lastName;\n"
+"    \n"
+"    @Column public Integer getCustomerId() { \n"
+"      return customerId; \n"
+"    }\n"
+"    \n"
+"    public void setCustomerId(Integer customerId} { \n"
+"      this.customerId = customerId; \n"
+"    }\n"
+"    \n"
+"    @Column public String getFirstName() { \n"
+"      return firstName; \n"
+"    }\n"
+"    \n"
+"    public void setFirstName(String firstName) {\n"
+"      this.firstName = firstName; \n"
+"    }\n"
+"    \n"
+"    @Column public String getLastName() {\n"
+"      return lastName;\n"
+"    }\n"
+"    \n"
+"    public void setLastName(String lastName) {\n"
+"      this.lastName = lastName;\n"
+"    }\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:81
+#, no-c-format
+msgid "To create a client-side Customer you would write the following code:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:84
+#, no-c-format
+msgid "var customer = Seam.Component.newInstance(\"customer\");"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:85
+#, no-c-format
+msgid "Then from here you can set the fields of the customer object:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:88
+#, no-c-format
+msgid ""
+"customer.setFirstName(\"John\");\n"
+"  // Or you can set the fields directly\n"
+"  customer.lastName = \"Smith\";"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:89
+#, no-c-format
+msgid "Seam.Component.getInstance()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:90
+#, no-c-format
+msgid ""
+"The <literal>getInstance()</literal> method is used to get a reference to a "
+"Seam session bean component stub, which can then be used to remotely execute "
+"methods against your component. This method returns a singleton for the "
+"specified component, so calling it twice in a row with the same component "
+"name will return the same instance of the component."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:93
+#, no-c-format
+msgid ""
+"To continue our example from before, if we have created a new "
+"<literal>customer</literal> and we now wish to save it, we would pass it to "
+"the <literal>saveCustomer()</literal> method of our <literal>customerAction</"
+"literal> component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:96
+#, no-c-format
+msgid "Seam.Component.getInstance(\"customerAction\").saveCustomer(customer);"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:97
+#, no-c-format
+msgid "Seam.Component.getComponentName()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:98
+#, no-c-format
+msgid ""
+"Passing an object into this method will return its component name if it is a "
+"component, or <literal>null</literal> if it is not."
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:101
+#, no-c-format
+msgid ""
+"if (Seam.Component.getComponentName(instance) == \"customer\")\n"
+"    alert(\"Customer\");\n"
+"  else if (Seam.Component.getComponentName(instance) == \"staff\")\n"
+"    alert(\"Staff member\");"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:102
+#, no-c-format
+msgid "Seam.Remoting"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:103
+#, no-c-format
+msgid ""
+"Most of the client side functionality for Seam Remoting is contained within "
+"the <literal>Seam.Remoting</literal> object. While you shouldn't need to "
+"directly call most of its methods, there are a couple of important ones "
+"worth mentioning."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:106
+#, no-c-format
+msgid "Seam.Remoting.createType()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:107
+#, no-c-format
+msgid ""
+"If your application contains or uses Javabean classes that aren't Seam "
+"components, you may need to create these types on the client side to pass as "
+"parameters into your component method. Use the <literal>createType()</"
+"literal> method to create an instance of your type. Pass in the fully "
+"qualified Java class name as a parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:110
+#, no-c-format
+msgid "var widget = Seam.Remoting.createType(\"com.acme.widgets.MyWidget\");"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:111
+#, no-c-format
+msgid "Seam.Remoting.getTypeName()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:112
+#, no-c-format
+msgid ""
+"This method is the equivalent of <literal>Seam.Component.getComponentName()</"
+"literal> but for non-component types. It will return the name of the type "
+"for an object instance, or <literal>null</literal> if the type is not known. "
+"The name is the fully qualified name of the type's Java class."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:115
+#, no-c-format
+msgid "Client Interfaces"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:116
+#, no-c-format
+msgid ""
+"In the configuration section above, the interface, or \"stub\" for our "
+"component is imported into our page via <literal>seam/resource/remoting/"
+"interface.js</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:119
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?customerAction\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:120
+#, no-c-format
+msgid ""
+"By including this script in our page, the interface definitions for our "
+"component, plus any other components or types that are required to execute "
+"the methods of our component are generated and made available for the "
+"remoting framework to use."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:123
+#, no-c-format
+msgid ""
+"There are two types of client stub that can be generated, \"executable\" "
+"stubs and \"type\" stubs. Executable stubs are behavioural, and are used to "
+"execute methods against your session bean components, while type stubs "
+"contain state and represent the types that can be passed in as parameters or "
+"returned as a result."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:126
+#, no-c-format
+msgid ""
+"The type of client stub that is generated depends on the type of your Seam "
+"component. If the component is a session bean, then an executable stub will "
+"be generated, otherwise if it's an entity or JavaBean, then a type stub will "
+"be generated. There is one exception to this rule; if your component is a "
+"JavaBean (ie it is not a session bean nor an entity bean) and any of its "
+"methods are annotated with @WebRemote, then an executable stub will be "
+"generated for it instead of a type stub. This allows you to use remoting to "
+"call methods of your JavaBean components in a non-EJB environment where you "
+"don't have access to session beans."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:130
+#, no-c-format
+msgid "The Context"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:131
+#, no-c-format
+msgid ""
+"The Seam Remoting Context contains additional information which is sent and "
+"received as part of a remoting request/response cycle. At this stage it only "
+"contains the conversation ID but may be expanded in the future."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:134
+#, no-c-format
+msgid "Setting and reading the Conversation ID"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:136
+#, no-c-format
+msgid ""
+"If you intend on using remote calls within the scope of a conversation then "
+"you need to be able to read or set the conversation ID in the Seam Remoting "
+"Context. To read the conversation ID after making a remote request call "
+"<literal>Seam.Remoting.getContext().getConversationId()</literal>. To set "
+"the conversation ID before making a request, call <literal>Seam.Remoting."
+"getContext().setConversationId()</literal>."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:139
+#, no-c-format
+msgid ""
+"If the conversation ID hasn't been explicitly set with <literal>Seam."
+"Remoting.getContext().setConversationId()</literal>, then it will be "
+"automatically assigned the first valid conversation ID that is returned by "
+"any remoting call. If you are working with multiple conversations within "
+"your page, then you may need to explicitly set the conversation ID before "
+"each call. If you are working with just a single conversation, then you "
+"don't need to do anything special."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:145
+#, no-c-format
+msgid "Batch Requests"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:146
+#, no-c-format
+msgid ""
+"Seam Remoting allows multiple component calls to be executed within a single "
+"request. It is recommended that this feature is used wherever it is "
+"appropriate to reduce network traffic."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:149
+#, no-c-format
+msgid ""
+"The method <literal>Seam.Remoting.startBatch()</literal> will start a new "
+"batch, and any component calls executed after starting a batch are queued, "
+"rather than being sent immediately. When all the desired component calls "
+"have been added to the batch, the <literal>Seam.Remoting.executeBatch()</"
+"literal> method will send a single request containing all of the queued "
+"calls to the server, where they will be executed in order. After the calls "
+"have been executed, a single response containining all return values will be "
+"returned to the client and the callback functions (if provided) triggered in "
+"the same order as execution."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:152
+#, no-c-format
+msgid ""
+"If you start a new batch via the <literal>startBatch()</literal> method but "
+"then decide you don't want to send it, the <literal>Seam.Remoting.cancelBatch"
+"()</literal> method will discard any calls that were queued and exit the "
+"batch mode."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:155
+#, no-c-format
+msgid ""
+"To see an example of a batch being used, take a look at <literal>/examples/"
+"remoting/chatroom</literal>."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:159
+#, no-c-format
+msgid "Working with Data types"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:160
+#, no-c-format
+msgid "Primitives / Basic Types"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:161
+#, no-c-format
+msgid ""
+"This section describes the support for basic data types. On the server side "
+"these values are generally compatible with either their primitive type or "
+"their corresponding wrapper class."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:164
+#, no-c-format
+msgid "String"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:165
+#, no-c-format
+msgid ""
+"Simply use Javascript String objects when setting String parameter values."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:168
+#, no-c-format
+msgid "Number"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:169
+#, no-c-format
+msgid ""
+"There is support for all number types supported by Java. On the client side, "
+"number values are always serialized as their String representation and then "
+"on the server side they are converted to the correct destination type. "
+"Conversion into either a primitive or wrapper type is supported for "
+"<literal>Byte</literal>, <literal>Double</literal>, <literal>Float</"
+"literal>, <literal>Integer</literal>, <literal>Long</literal> and "
+"<literal>Short</literal> types."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:172
+#, no-c-format
+msgid "Boolean"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:173
+#, no-c-format
+msgid ""
+"Booleans are represented client side by Javascript Boolean values, and "
+"server side by a Java boolean."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:176
+#, no-c-format
+msgid "JavaBeans"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:177
+#, no-c-format
+msgid ""
+"In general these will be either Seam entity or JavaBean components, or some "
+"other non-component class. Use the appropriate method (either <literal>Seam."
+"Component.newInstance()</literal> for Seam components or <literal>Seam."
+"Remoting.createType()</literal> for everything else) to create a new "
+"instance of the object."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:180
+#, no-c-format
+msgid ""
+"It is important to note that only objects that are created by either of "
+"these two methods should be used as parameter values, where the parameter is "
+"not one of the other valid types mentioned anywhere else in this section. In "
+"some situations you may have a component method where the exact parameter "
+"type cannot be determined, such as:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:183
+#, no-c-format
+msgid ""
+"@Name(\"myAction\")\n"
+"  public class MyAction implements MyActionLocal {\n"
+"    public void doSomethingWithObject(Object obj) {\n"
+"      // code\n"
+"    }\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:184
+#, no-c-format
+msgid ""
+"In this case you might want to pass in an instance of your "
+"<literal>myWidget</literal> component, however the interface for "
+"<literal>myAction</literal> won't include <literal>myWidget</literal> as it "
+"is not directly referenced by any of its methods. To get around this, "
+"<literal>MyWidget</literal> needs to be explicitly imported:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:187
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?myAction&amp;myWidget\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:188
+#, no-c-format
+msgid ""
+"This will then allow a <literal>myWidget</literal> object to be created with "
+"<literal>Seam.Component.newInstance(\"myWidget\")</literal>, which can then "
+"be passed to <literal>myAction.doSomethingWithObject()</literal>."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:191
+#, no-c-format
+msgid "Dates and Times"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:192
+#, no-c-format
+msgid ""
+"Date values are serialized into a String representation that is accurate to "
+"the millisecond. On the client side, use a Javascript Date object to work "
+"with date values. On the server side, use any <literal>java.util.Date</"
+"literal> (or descendent, such as <literal>java.sql.Date</literal> or "
+"<literal>java.sql.Timestamp</literal> class."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:195
+#, no-c-format
+msgid "Enums"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:196
+#, no-c-format
+msgid ""
+"On the client side, enums are treated the same as Strings. When setting the "
+"value for an enum parameter, simply use the String representation of the "
+"enum. Take the following component as an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:199
+#, no-c-format
+msgid ""
+"@Name(\"paintAction\")\n"
+"  public class paintAction implements paintLocal {\n"
+"    public enum Color {red, green, blue, yellow, orange, purple};\n"
+"\n"
+"    public void paint(Color color) {\n"
+"      // code\n"
+"    }    \n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:200
+#, no-c-format
+msgid ""
+"To call the <literal>paint()</literal> method with the color <literal>red</"
+"literal>, pass the parameter value as a String literal:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:203
+#, no-c-format
+msgid "Seam.Component.getInstance(\"paintAction\").paint(\"red\");"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:204
+#, no-c-format
+msgid ""
+"The inverse is also true - that is, if a component method returns an enum "
+"parameter (or contains an enum field anywhere in the returned object graph) "
+"then on the client-side it will be represented as a String."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:207
+#, no-c-format
+msgid "Collections"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:208
+#, no-c-format
+msgid "Bags"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:209
+#, no-c-format
+msgid ""
+"Bags cover all collection types including arrays, collections, lists, sets, "
+"(but excluding Maps - see the next section for those), and are implemented "
+"client-side as a Javascript array. When calling a component method that "
+"accepts one of these types as a parameter, your parameter should be a "
+"Javascript array. If a component method returns one of these types, then the "
+"return value will also be a Javascript array. The remoting framework is "
+"clever enough on the server side to convert the bag to an appropriate type "
+"for the component method call."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:212
+#, no-c-format
+msgid "Maps"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:213
+#, no-c-format
+msgid ""
+"As there is no native support for Maps within Javascript, a simple Map "
+"implementation is provided with the Seam Remoting framework. To create a Map "
+"which can be used as a parameter to a remote call, create a new "
+"<literal>Seam.Remoting.Map</literal> object:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:216
+#, no-c-format
+msgid "var map = new Seam.Remoting.Map();"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:217
+#, no-c-format
+msgid ""
+"This Javascript implementation provides basic methods for working with Maps: "
+"<literal>size()</literal>, <literal>isEmpty()</literal>, <literal>keySet()</"
+"literal>, <literal>values()</literal>, <literal>get(key)</literal>, "
+"<literal>put(key, value)</literal>, <literal>remove(key)</literal> and "
+"<literal>contains(key)</literal>. Each of these methods are equivalent to "
+"their Java counterpart. Where the method returns a collection, such as "
+"<literal>keySet()</literal> and <literal>values()</literal>, a Javascript "
+"Array object will be returned that contains the key or value objects "
+"(respectively)."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:220
+#, no-c-format
+msgid "Debugging"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:221
+#, no-c-format
+msgid ""
+"To aid in tracking down bugs, it is possible to enable a debug mode which "
+"will display the contents of all the packets send back and forth between the "
+"client and server in a popup window. To enable debug mode, either execute "
+"the <literal>setDebug()</literal> method in Javascript:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:224
+#, no-c-format
+msgid "Seam.Remoting.setDebug(true);"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:225
+#, no-c-format
+msgid "Or configure it via components.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:228
+#, no-c-format
+msgid "&lt;remoting:remoting debug=\"true\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:229
+#, no-c-format
+msgid ""
+"To turn off debugging, call <literal>setDebug(false)</literal>. If you want "
+"to write your own messages to the debug log, call <literal>Seam.Remoting.log"
+"(message)</literal>."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:233
+#, no-c-format
+msgid "The Loading Message"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:234
+#, no-c-format
+msgid ""
+"The default loading message that appears in the top right corner of the "
+"screen can be modified, its rendering customised or even turned off "
+"completely."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:237
+#, no-c-format
+msgid "Changing the message"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:238
+#, no-c-format
+msgid ""
+"To change the message from the default \"Please Wait...\" to something "
+"different, set the value of <literal>Seam.Remoting.loadingMessage</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:241
+#, no-c-format
+msgid "Seam.Remoting.loadingMessage = \"Loading...\";"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:243
+#, no-c-format
+msgid "Hiding the loading message"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:244
+#, no-c-format
+msgid ""
+"To completely suppress the display of the loading message, override the "
+"implementation of <literal>displayLoadingMessage()</literal> and "
+"<literal>hideLoadingMessage()</literal> with functions that instead do "
+"nothing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:247
+#, no-c-format
+msgid ""
+"// don't display the loading indicator\n"
+"  Seam.Remoting.displayLoadingMessage = function() {};\n"
+"  Seam.Remoting.hideLoadingMessage = function() {};"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:248
+#, no-c-format
+msgid "A Custom Loading Indicator"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:249
+#, no-c-format
+msgid ""
+"It is also possible to override the loading indicator to display an animated "
+"icon, or anything else that you want. To do this override the "
+"<literal>displayLoadingMessage()</literal> and <literal>hideLoadingMessage()"
+"</literal> messages with your own implementation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:252
+#, no-c-format
+msgid ""
+"Seam.Remoting.displayLoadingMessage = function() {\n"
+"    // Write code here to display the indicator\n"
+"  };\n"
+"  \n"
+"  Seam.Remoting.hideLoadingMessage = function() {\n"
+"    // Write code here to hide the indicator\n"
+"  };"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:253
+#, no-c-format
+msgid "Controlling what data is returned"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:254
+#, no-c-format
+msgid ""
+"When a remote method is executed, the result is serialized into an XML "
+"response that is returned to the client. This response is then unmarshaled "
+"by the client into a Javascript object. For complex types (i.e. Javabeans) "
+"that include references to other objects, all of these referenced objects "
+"are also serialized as part of the response. These objects may reference "
+"other objects, which may reference other objects, and so forth. If left "
+"unchecked, this object \"graph\" could potentially be enormous, depending on "
+"what relationships exist between your objects. And as a side issue (besides "
+"the potential verbosity of the response), you might also wish to prevent "
+"sensitive information from being exposed to the client."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:257
+#, no-c-format
+msgid ""
+"Seam Remoting provides a simple means to \"constrain\" the object graph, by "
+"specifying the <literal>exclude</literal> field of the remote method's "
+"<literal>@WebRemote</literal> annotation. This field accepts a String array "
+"containing one or more paths specified using dot notation. When invoking a "
+"remote method, the objects in the result's object graph that match these "
+"paths are excluded from the serialized result packet."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:260
+#, no-c-format
+msgid ""
+"For all our examples, we'll use the following <literal>Widget</literal> "
+"class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:263
+#, no-c-format
+msgid ""
+"@Name(\"widget\")\n"
+"public class Widget\n"
+"{\n"
+"  private String value;\n"
+"  private String secret;\n"
+"  private Widget child;\n"
+"  private Map&lt;String,Widget&gt; widgetMap;\n"
+"  private List&lt;Widget&gt; widgetList;\n"
+"  \n"
+"  // getters and setters for all fields\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:264
+#, no-c-format
+msgid "Constraining normal fields"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:265
+#, no-c-format
+msgid ""
+"If your remote method returns an instance of <literal>Widget</literal>, but "
+"you don't want to expose the <literal>secret</literal> field because it "
+"contains sensitive information, you would constrain it like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:268
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:269
+#, no-c-format
+msgid ""
+"The value \"secret\" refers to the <literal>secret</literal> field of the "
+"returned object. Now, suppose that we don't care about exposing this "
+"particular field to the client. Instead, notice that the <literal>Widget</"
+"literal> value that is returned has a field <literal>child</literal> that is "
+"also a <literal>Widget</literal>. What if we want to hide the "
+"<literal>child</literal>'s <literal>secret</literal> value instead? We can "
+"do this by using dot notation to specify this field's path within the "
+"result's object graph:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:272
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"child.secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:273
+#, no-c-format
+msgid "Constraining Maps and Collections"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:274
+#, no-c-format
+msgid ""
+"The other place that objects can exist within an object graph are within a "
+"<literal>Map</literal> or some kind of collection (<literal>List</literal>, "
+"<literal>Set</literal>, <literal>Array</literal>, etc). Collections are "
+"easy, and are treated like any other field. For example, if our "
+"<literal>Widget</literal> contained a list of other <literal>Widget</"
+"literal>s in its <literal>widgetList</literal> field, to constrain the "
+"<literal>secret</literal> field of the <literal>Widget</literal>s in this "
+"list the annotation would look like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:277
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetList.secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:278
+#, no-c-format
+msgid ""
+"To constrain a <literal>Map</literal>'s key or value, the notation is "
+"slightly different. Appending <literal>[key]</literal> after the "
+"<literal>Map</literal>'s field name will constrain the <literal>Map</"
+"literal>'s key object values, while <literal>[value]</literal> will "
+"constrain the value object values. The following example demonstrates how "
+"the values of the <literal>widgetMap</literal> field have their "
+"<literal>secret</literal> field constrained:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:281
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetMap[value].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:282
+#, no-c-format
+msgid "Constraining objects of a specific type"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:283
+#, no-c-format
+msgid ""
+"There is one last notation that can be used to constrain the fields of a "
+"type of object no matter where in the result's object graph it appears. This "
+"notation uses either the name of the component (if the object is a Seam "
+"component) or the fully qualified class name (only if the object is not a "
+"Seam component) and is expressed using square brackets:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:286
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"[widget].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:287
+#, no-c-format
+msgid "Combining Constraints"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:288
+#, no-c-format
+msgid ""
+"Constraints can also be combined, to filter objects from multiple paths "
+"within the object graph:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:291
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetList.secret\", \"widgetMap[value].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:292
+#, no-c-format
+msgid "JMS Messaging"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:293
+#, no-c-format
+msgid ""
+"Seam Remoting provides experimental support for JMS Messaging. This section "
+"describes the JMS support that is currently implemented, but please note "
+"that this may change in the future. It is currently not recommended that "
+"this feature is used within a production environment."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:297
+#, no-c-format
+msgid ""
+"Before you can subscribe to a JMS topic, you must first configure a list of "
+"the topics that can be subscribed to by Seam Remoting. List the topics under "
+"<literal>org.jboss.seam.remoting.messaging.subscriptionRegistry."
+"allowedTopics</literal> in <literal>seam.properties</literal>, <literal>web."
+"xml</literal> or <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:300 Remoting.xml:333
+#, no-c-format
+msgid "&lt;remoting:remoting poll-timeout=\"5\" poll-interval=\"1\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:301
+#, no-c-format
+msgid "Subscribing to a JMS Topic"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:302
+#, no-c-format
+msgid "The following example demonstrates how to subscribe to a JMS Topic:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:305
+#, no-c-format
+msgid ""
+"function subscriptionCallback(message)\n"
+"  {\n"
+"    if (message instanceof Seam.Remoting.TextMessage)\n"
+"      alert(\"Received message: \" + message.getText());\n"
+"  }        \n"
+"        \n"
+"  Seam.Remoting.subscribe(\"topicName\", subscriptionCallback);"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:306
+#, no-c-format
+msgid ""
+"The <literal>Seam.Remoting.subscribe()</literal> method accepts two "
+"parameters, the first being the name of the JMS Topic to subscribe to, the "
+"second being the callback function to invoke when a message is received."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:309
+#, no-c-format
+msgid ""
+"There are two types of messages supported, Text messages and Object "
+"messages. If you need to test for the type of message that is passed to your "
+"callback function you can use the <literal>instanceof</literal> operator to "
+"test whether the message is a <literal>Seam.Remoting.TextMessage</literal> "
+"or <literal>Seam.Remoting.ObjectMessage</literal>. A <literal>TextMessage</"
+"literal> contains the text value in its <literal>text</literal> field (or "
+"alternatively call <literal>getText()</literal> on it), while an "
+"<literal>ObjectMessage</literal> contains its object value in its "
+"<literal>object</literal> field (or call its <literal>getObject()</literal> "
+"method)."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:312
+#, no-c-format
+msgid "Unsubscribing from a Topic"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:313
+#, no-c-format
+msgid ""
+"To unsubscribe from a topic, call <literal>Seam.Remoting.unsubscribe()</"
+"literal> and pass in the topic name:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:316
+#, no-c-format
+msgid "Seam.Remoting.unsubscribe(\"topicName\");"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:317
+#, no-c-format
+msgid "Tuning the Polling Process"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:318
+#, no-c-format
+msgid ""
+"There are two parameters which you can modify to control how polling occurs. "
+"The first one is <literal>Seam.Remoting.pollInterval</literal>, which "
+"controls how long to wait between subsequent polls for new messages. This "
+"parameter is expressed in seconds, and its default setting is 10."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:321
+#, no-c-format
+msgid ""
+"The second parameter is <literal>Seam.Remoting.pollTimeout</literal>, and is "
+"also expressed as seconds. It controls how long a request to the server "
+"should wait for a new message before timing out and sending an empty "
+"response. Its default is 0 seconds, which means that when the server is "
+"polled, if there are no messages ready for delivery then an empty response "
+"will be immediately returned."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:324
+#, no-c-format
+msgid ""
+"Caution should be used when setting a high <literal>pollTimeout</literal> "
+"value; each request that has to wait for a message means that a server "
+"thread is tied up until a message is received, or until the request times "
+"out. If many such requests are being served simultaneously, it could mean a "
+"large number of threads become tied up because of this reason."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:327
+#, no-c-format
+msgid ""
+"It is recommended that you set these options via components.xml, however "
+"they can be overridden via Javascript if desired. The following example "
+"demonstrates how to configure the polling to occur much more aggressively. "
+"You should set these parameters to suitable values for your application:"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:330
+#, no-c-format
+msgid "Via components.xml:"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:334
+#, no-c-format
+msgid "Via JavaScript:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:337
+#, no-c-format
+msgid ""
+"// Only wait 1 second between receiving a poll response and sending the next "
+"poll request.\n"
+"  Seam.Remoting.pollInterval = 1;\n"
+"  \n"
+"  // Wait up to 5 seconds on the server for new messages\n"
+"  Seam.Remoting.pollTimeout = 5;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Security.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Security.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Security.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1676 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Security.xml:10
+#, no-c-format
+msgid "Security"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:11
+#, no-c-format
+msgid ""
+"The Seam Security API is an optional Seam feature that provides "
+"authentication and authorization features for securing both domain and page "
+"resources within your Seam project."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:14
+#, no-c-format
+msgid "Overview"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:15
+#, no-c-format
+msgid "Seam Security provides two different modes of operation:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:20
+#, no-c-format
+msgid ""
+"<emphasis>simplified mode</emphasis> - this mode supports authentication "
+"services and simple role-based security checks."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:25
+#, no-c-format
+msgid ""
+"<emphasis>advanced mode</emphasis> - this mode supports all the same "
+"features as the simplified mode, plus it offers rule-based security checks "
+"using JBoss Rules."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:30
+#, no-c-format
+msgid "Which mode is right for my application?"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:31
+#, no-c-format
+msgid ""
+"That all depends on the requirements of your application. If you have "
+"minimal security requirements, for example if you only wish to restrict "
+"certain pages and actions to users who are logged in, or who belong to a "
+"certain role, then the simplified mode will probably be sufficient. The "
+"advantages of this is a more simplified configuration, significantly less "
+"libraries to include, and a smaller memory footprint."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:34
+#, no-c-format
+msgid ""
+"If on the other hand, your application requires security checks based on "
+"contextual state or complex business rules, then you will require the "
+"features provided by the advanced mode."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:37
+#, no-c-format
+msgid "Requirements"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:38
+#, no-c-format
+msgid ""
+"If using the advanced mode features of Seam Security, the following jar "
+"files are required to be configured as modules in <literal>application.xml</"
+"literal>. If you are using Seam Security in simplified mode, these are "
+"<emphasis>not</emphasis> required:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:43
+#, no-c-format
+msgid "drools-compiler-3.0.5.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:48
+#, no-c-format
+msgid "drools-core-3.0.5.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:53
+#, no-c-format
+msgid "commons-jci-core-1.0-406301.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:58
+#, no-c-format
+msgid "commons-jci-janino-2.4.3.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:63
+#, no-c-format
+msgid "commons-lang-2.1.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:68
+#, no-c-format
+msgid "janino-2.4.3.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:73
+#, no-c-format
+msgid "stringtemplate-2.3b6.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:78
+#, no-c-format
+msgid "antlr-2.7.6.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:83
+#, no-c-format
+msgid "antlr-3.0ea8.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:88
+#, no-c-format
+msgid ""
+"For web-based security, <literal>jboss-seam-ui.jar</literal> must also be "
+"included in the application's war file. Also, to make use of the security EL "
+"functions, <literal>SeamFaceletViewHandler</literal> must be used. Configure "
+"it in <literal>faces-config.xml</literal> like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:91
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;view-handler&gt;org.jboss.seam.ui.facelet.SeamFaceletViewHandler&lt;/"
+"view-handler&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:92
+#, no-c-format
+msgid "Authentication"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:93
+#, no-c-format
+msgid ""
+"The authentication features provided by Seam Security are built upon JAAS "
+"(Java Authentication and Authorization Service), and as such provide a "
+"robust and highly configurable API for handling user authentication. "
+"However, for less complex authentication requirements Seam offers a much "
+"more simplified method of authentication that hides the complexity of JAAS."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:96
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:97
+#, no-c-format
+msgid ""
+"The simplified authentication method uses a built-in JAAS login module, "
+"<literal>SeamLoginModule</literal>, which delegates authentication to one of "
+"your own Seam components. This login module is already configured inside "
+"Seam as part of a default application policy and as such does not require "
+"any additional configuration files. It allows you to write an authentication "
+"method using the entity classes that are provided by your own application. "
+"Configuring this simplified form of authentication requires the "
+"<literal>identity</literal> component to be configured in "
+"<literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:100
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:security=\"http://jboss.com/products/seam/security\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core http://jboss.com/"
+"products/seam/core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components http://jboss.com/"
+"products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/drools http://jboss.com/"
+"products/seam/drools-1.2.xsd\"\n"
+"                 http://jboss.com/products/seam/security http://jboss.com/"
+"products/seam/security-1.2.xsd\"&gt;                \n"
+"        \n"
+"    &lt;security:identity authenticate-method=\"#{authenticator.authenticate}"
+"\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:101
+#, no-c-format
+msgid ""
+"If you wish to use the advanced security features such as rule-based "
+"permission checks, all you need to do is include the Drools (JBoss Rules) "
+"jars in your classpath, and add some additional configuration, described "
+"later."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:104
+#, no-c-format
+msgid ""
+"The EL expression <literal>#{authenticator.authenticate}</literal> is a "
+"method binding indicating that the <literal>authenticate</literal> method of "
+"the <literal>authenticator</literal> component will be used to authenticate "
+"the user."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:107
+#, no-c-format
+msgid "Writing an authentication method"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:108
+#, no-c-format
+msgid ""
+"The <literal>authenticate-method</literal> property specified for "
+"<literal>identity</literal> in <literal>components.xml</literal> specifies "
+"which method will be used by <literal>SeamLoginModule</literal> to "
+"authenticate users. This method takes no parameters, and is expected to "
+"return a boolean indicating whether authentication is successful or not. The "
+"user's username and password can be obtained from <literal>Identity.instance"
+"().getUsername()</literal> and <literal>Identity.instance().getPassword()</"
+"literal>, respectively. Any roles that the user is a member of should be "
+"assigned using <literal>Identity.instance().addRole()</literal>. Here's a "
+"complete example of an authentication method inside a JavaBean component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:111
+#, no-c-format
+msgid ""
+"@Name(\"authenticator\")\n"
+"public class Authenticator {\n"
+"   @In EntityManager entityManager;\n"
+"   \n"
+"   public boolean authenticate() {\n"
+"      try\n"
+"      {\n"
+"         User user = (User) entityManager.createQuery(\n"
+"            \"from User where username = :username and password = :password"
+"\")\n"
+"            .setParameter(\"username\", Identity.instance().getUsername())\n"
+"            .setParameter(\"password\", Identity.instance().getPassword())\n"
+"            .getSingleResult();\n"
+"\n"
+"         if (user.getRoles() != null)\n"
+"         {\n"
+"            for (UserRole mr : user.getRoles())\n"
+"               Identity.instance().addRole(mr.getName());\n"
+"         }\n"
+"\n"
+"         return true;\n"
+"      }\n"
+"      catch (NoResultException ex)\n"
+"      {\n"
+"         FacesMessages.instance().add(\"Invalid username/password\");\n"
+"         return false;\n"
+"      }\n"
+"      \n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:112
+#, no-c-format
+msgid ""
+"In the above example, both <literal>User</literal> and <literal>UserRole</"
+"literal> are application-specific entity beans. The <literal>roles</literal> "
+"parameter is populated with the roles that the user is a member of, which "
+"should be added to the <literal>Set</literal> as literal string values, e.g. "
+"\"admin\", \"user\". In this case, if the user record is not found and a "
+"<literal>NoResultException</literal> thrown, the authentication method "
+"returns <literal>false</literal> to indicate the authentication failed."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:115
+#, no-c-format
+msgid "Writing a login form"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:116
+#, no-c-format
+msgid ""
+"The <literal>Identity</literal> component provides both <literal>username</"
+"literal> and <literal>password</literal> properties, catering for the most "
+"common authentication scenario. These properties can be bound directly to "
+"the username and password fields on a login form. Once these properties are "
+"set, calling the <literal>identity.login()</literal> method will "
+"authenticate the user using the provided credentials. Here's an example of a "
+"simple login form:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:119
+#, no-c-format
+msgid ""
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"name\" value=\"Username\"/&gt;\n"
+"    &lt;h:inputText id=\"name\" value=\"#{identity.username}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"password\" value=\"Password\"/&gt;\n"
+"    &lt;h:inputSecret id=\"password\" value=\"#{identity.password}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;div&gt;\n"
+"    &lt;h:commandButton value=\"Login\" action=\"#{identity.login}\"/&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:120
+#, no-c-format
+msgid ""
+"Similarly, logging out the user is done by calling <literal>#{identity."
+"logout}</literal>. Calling this action will clear the security state of the "
+"currently authenticated user."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:123
+#, no-c-format
+msgid "Simplified Configuration - Summary"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:124
+#, no-c-format
+msgid ""
+"So to sum up, there are the three easy steps to configure authentication:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:129
+#, no-c-format
+msgid ""
+"Configure an authentication method in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:134
+#, no-c-format
+msgid "Write an authentication method."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:139
+#, no-c-format
+msgid "Write a login form so that the user can authenticate."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:144
+#, no-c-format
+msgid "Handling Security Exceptions"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:145
+#, no-c-format
+msgid ""
+"To prevent users from receiving the default error page in response to a "
+"security error, it's recommended that <literal>pages.xml</literal> is "
+"configured to redirect security errors to a more \"pretty\" page. The two "
+"main types of exceptions thrown by the security API are:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:150
+#, no-c-format
+msgid ""
+"<literal>NotLoggedInException</literal> - This exception is thrown if the "
+"user attempts to access a restricted action or page when they are not logged "
+"in."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:155
+#, no-c-format
+msgid ""
+"<literal>AuthorizationException</literal> - This exception is only thrown if "
+"the user is already logged in, and they have attempted to access a "
+"restricted action or page for which they do not have the necessary "
+"privileges."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:160
+#, no-c-format
+msgid ""
+"In the case of a <literal>NotLoggedInException</literal>, it is recommended "
+"that the user is redirected to either a login or registration page so that "
+"they can log in. For an <literal>AuthorizationException</literal>, it may be "
+"useful to redirect the user to an error page. Here's an example of a "
+"<literal>pages.xml</literal> file that redirects both of these security "
+"exceptions:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:163
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"\n"
+"    ...\n"
+"    \n"
+"    &lt;exception class=\"org.jboss.seam.security.NotLoggedInException"
+"\"&gt;\n"
+"        &lt;redirect view-id=\"/login.xhtml\"&gt;\n"
+"            &lt;message&gt;You must be logged in to perform this action&lt;/"
+"message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"    \n"
+"    &lt;exception class=\"org.jboss.seam.security.AuthorizationException"
+"\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"        &lt;redirect view-id=\"/security_error.xhtml\"&gt;\n"
+"            &lt;message&gt;\n"
+"                You do not have the necessary security privileges to perform "
+"this action.\n"
+"            &lt;/message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"  \n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:164
+#, no-c-format
+msgid ""
+"Most web applications require even more sophisticated handling of login "
+"redirection, so Seam includes some special functionality for handling this "
+"problem."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:167
+#, no-c-format
+msgid "Login Redirection"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:168
+#, no-c-format
+msgid ""
+"You can ask Seam to redirect the user to a login screen when an "
+"unauthenticated user tries to access a particular view (or wildcarded view "
+"id) as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:171
+#, no-c-format
+msgid ""
+"&lt;pages login-view-id=\"/login.xhtml\"&gt;\n"
+"\n"
+"    &lt;page view-id=\"/members/*\" login-required=\"true\"/&gt;\n"
+"    \n"
+"    ...\n"
+"    \n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:172
+#, no-c-format
+msgid ""
+"(This is less of a blunt instrument than the exception handler shown above, "
+"but should probably be used in conjunction with it.)"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:175
+#, no-c-format
+msgid ""
+"After the user logs in, we want to automatically send them back where they "
+"came from, so they can retry the action that required logging in. If you add "
+"the following event listeners to <literal>components.xml</literal>, attempts "
+"to access a restricted view while not logged in will be remembered, so that "
+"upon the user successfully logging in they will be redirected to the "
+"originally requested view, with any page parameters that existed in the "
+"original request."
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:178
+#, no-c-format
+msgid ""
+"&lt;event type=\"org.jboss.seam.notLoggedIn\"&gt;\n"
+"    &lt;action expression=\"#{redirect.captureCurrentView}\"/&gt;\n"
+"&lt;/event&gt;\n"
+"    \n"
+"&lt;event type=\"org.jboss.seam.postAuthenticate\"&gt;\n"
+"    &lt;action expression=\"#{redirect.returnToCapturedView}\"/&gt;\n"
+"&lt;/event&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:179
+#, no-c-format
+msgid ""
+"Note that login redirection is implemented as a conversation-scoped "
+"mechanism, so don't end the conversation in your <literal>authenticate()</"
+"literal> method."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:182
+#, no-c-format
+msgid "Advanced Authentication Features"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:183
+#, no-c-format
+msgid ""
+"This section explores some of the advanced features provided by the security "
+"API for addressing more complex security requirements."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:186
+#, no-c-format
+msgid "Using your container's JAAS configuration"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:187
+#, no-c-format
+msgid ""
+"If you would rather not use the simplified JAAS configuration provided by "
+"the Seam Security API, you may instead delegate to the default system JAAS "
+"configuration by providing a <literal>jaasConfigName</literal> property in "
+"<literal>components.xml</literal>. For example, if you are using JBoss AS "
+"and wish to use the <literal>other</literal> policy (which uses the "
+"<literal>UsersRolesLoginModule</literal> login module provided by JBoss AS), "
+"then the entry in <literal>components.xml</literal> would look like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:190
+#, no-c-format
+msgid ""
+"&lt;security:identity authenticate-method=\"#{authenticator.authenticate}"
+"\" \n"
+"                      jaas-config-name=\"other\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:191
+#, no-c-format
+msgid "Authorization"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:192
+#, no-c-format
+msgid ""
+"There are a number of authorization features provided by the Seam Security "
+"API for securing access to components, component methods, and pages. This "
+"section describes each of these. An important thing to note is that if you "
+"wish to use any of the advanced features (such as rule-based permissions) "
+"then your <literal>components.xml</literal> must be configured to support "
+"this - see the Configuration section above."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:195
+#, no-c-format
+msgid "Core concepts"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:196
+#, no-c-format
+msgid ""
+"Each of the authorization mechanisms provided by the Seam Security API are "
+"built upon the concept of a user being granted roles and/or permissions. A "
+"role is a <emphasis>group</emphasis>, or <emphasis>type</emphasis>, of user "
+"that may have been granted certain privileges for performing one or more "
+"specific actions within an application. A permission on the other hand is a "
+"privilege (sometimes once-off) for performing a single, specific action. It "
+"is entirely possible to build an application using nothing but permissions, "
+"however roles offer a higher level of convenience when granting privileges "
+"to groups of users."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:199
+#, no-c-format
+msgid ""
+"Roles are simple, consisting of only a name such as \"admin\", \"user\", "
+"\"customer\", etc. Permissions consist of both a name and an action, and are "
+"represented within this documentation in the form <literal>name:action</"
+"literal>, for example <literal>customer:delete</literal>, or "
+"<literal>customer:insert</literal>."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:202
+#, no-c-format
+msgid "Securing components"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:203
+#, no-c-format
+msgid ""
+"Let's start by examining the simplest form of authorization, component "
+"security, starting with the <literal>@Restrict</literal> annotation."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:206
+#, no-c-format
+msgid "The @Restrict annotation"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:207
+#, no-c-format
+msgid ""
+"Seam components may be secured either at the method or the class level, "
+"using the <literal>@Restrict</literal> annotation. If both a method and it's "
+"declaring class are annotated with <literal>@Restrict</literal>, the method "
+"restriction will take precedence (and the class restriction will not apply). "
+"If a method invocation fails a security check, then an exception will be "
+"thrown as per the contract for <literal>Identity.checkRestriction()</"
+"literal> (see Inline Restrictions). A <literal>@Restrict</literal> on just "
+"the component class itself is equivalent to adding <literal>@Restrict</"
+"literal> to each of its methods."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:210
+#, no-c-format
+msgid ""
+"An empty <literal>@Restrict</literal> implies a permission check of "
+"<literal>componentName:methodName</literal>. Take for example the following "
+"component method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:213
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class AccountAction {\n"
+"    @Restrict public void delete() {\n"
+"      ...\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:214
+#, no-c-format
+msgid ""
+"In this example, the implied permission required to call the <literal>delete"
+"()</literal> method is <literal>account:delete</literal>. The equivalent of "
+"this would be to write <literal>@Restrict(\"#{s:hasPermission"
+"('account','delete',null)}\")</literal>. Now let's look at another example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:217
+#, no-c-format
+msgid ""
+"@Restrict @Name(\"account\")\n"
+"public class AccountAction {\n"
+"    public void insert() {\n"
+"      ...\n"
+"    }\n"
+"    @Restrict(\"#{s:hasRole('admin')}\") \n"
+"    public void delete() {\n"
+"      ...\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:218
+#, no-c-format
+msgid ""
+"This time, the component class itself is annotated with <literal>@Restrict</"
+"literal>. This means that any methods without an overriding "
+"<literal>@Restrict</literal> annotation require an implicit permission "
+"check. In the case of this example, the <literal>insert()</literal> method "
+"requires a permission of <literal>account:insert</literal>, while the "
+"<literal>delete()</literal> method requires that the user is a member of the "
+"<literal>admin</literal> role."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:221
+#, no-c-format
+msgid ""
+"Before we go any further, let's address the <literal>#{s:hasRole()}</"
+"literal> expression seen in the above example. Both <literal>s:hasRole</"
+"literal> and <literal>s:hasPermission</literal> are EL functions, which "
+"delegate to the correspondingly named methods of the <literal>Identity</"
+"literal> class. These functions can be used within any EL expression "
+"throughout the entirety of the security API."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:224
+#, no-c-format
+msgid ""
+"Being an EL expression, the value of the <literal>@Restrict</literal> "
+"annotation may reference any objects that exist within a Seam context. This "
+"is extremely useful when performing permission checks for a specific object "
+"instance. Look at this example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:227
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class AccountAction {\n"
+"    @In Account selectedAccount;\n"
+"    @Restrict(\"#{s:hasPermission('account','modify',selectedAccount)}\")\n"
+"    public void modify() {\n"
+"        selectedAccount.modify();\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:228
+#, no-c-format
+msgid ""
+"The interesting thing to note from this example is the reference to "
+"<literal>selectedAccount</literal> seen within the <literal>hasPermission()</"
+"literal> function call. The value of this variable will be looked up from "
+"within the Seam context, and passed to the <literal>hasPermission()</"
+"literal> method in <literal>Identity</literal>, which in this case can then "
+"determine if the user has the required permission for modifying the "
+"specified <literal>Account</literal> object."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:231
+#, no-c-format
+msgid "Inline restrictions"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:232
+#, no-c-format
+msgid ""
+"Sometimes it might be desirable to perform a security check in code, without "
+"using the <literal>@Restrict</literal> annotation. In this situation, simply "
+"use <literal>Identity.checkRestriction()</literal> to evaluate a security "
+"expression, like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:235
+#, no-c-format
+msgid ""
+"public void deleteCustomer() {\n"
+"    Identity.instance().checkRestriction(\"#{s:hasPermission"
+"('customer','delete',\n"
+"        selectedCustomer)}\");\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:236
+#, no-c-format
+msgid ""
+"If the expression specified doesn't evaluate to <literal>true</literal>, "
+"either"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:241
+#, no-c-format
+msgid ""
+"if the user is not logged in, a <literal>NotLoggedInException</literal> "
+"exception is thrown or"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:246
+#, no-c-format
+msgid ""
+"if the user is logged in, an <literal>AuthorizationException</literal> "
+"exception is thrown."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:251
+#, no-c-format
+msgid ""
+"It is also possible to call the <literal>hasRole()</literal> and "
+"<literal>hasPermission()</literal> methods directly from Java code:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:254
+#, no-c-format
+msgid ""
+"if (!Identity.instance().hasRole(\"admin\"))\n"
+"     throw new AuthorizationException(\"Must be admin to perform this action"
+"\");\n"
+"\n"
+"if (!Identity.instance().hasPermission(\"customer\", \"create\", null))\n"
+"     throw new AuthorizationException(\"You may not create new customers\");"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:255
+#, no-c-format
+msgid "Security in the user interface"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:256
+#, no-c-format
+msgid ""
+"One indication of a well designed user interface is that the user is not "
+"presented with options for which they don't have the necessary privileges to "
+"use. Seam Security allows conditional rendering of either 1) sections of a "
+"page or 2) individual controls, based upon the privileges of the user, using "
+"the very same EL expressions that are used for component security."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:259
+#, no-c-format
+msgid ""
+"Let's take a look at some examples of interface security. First of all, "
+"let's pretend that we have a login form that should only be rendered if the "
+"user is not already logged in. Using the <literal>identity.isLoggedIn()</"
+"literal> property, we can write this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:262
+#, no-c-format
+msgid ""
+"&lt;h:form class=\"loginForm\" rendered=\"#{not identity.loggedIn}\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:263
+#, no-c-format
+msgid ""
+"If the user isn't logged in, then the login form will be rendered - very "
+"straight forward so far. Now let's pretend there is a menu on the page that "
+"contains some actions which should only be accessible to users in the "
+"<literal>manager</literal> role. Here's one way that these could be written:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:266
+#, no-c-format
+msgid ""
+"&lt;h:outputLink action=\"#{reports.listManagerReports}\" rendered=\"#{s:"
+"hasRole('manager')}\"&gt;\n"
+"    Manager Reports\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:267
+#, no-c-format
+msgid ""
+"This is also quite straight forward. If the user is not a member of the "
+"<literal>manager</literal> role, then the outputLink will not be rendered. "
+"The <literal>rendered</literal> attribute can generally be used on the "
+"control itself, or on a surrounding <literal>&lt;s:div&gt;</literal> or "
+"<literal>&lt;s:span&gt;</literal> control."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:270
+#, no-c-format
+msgid ""
+"Now for something more complex. Let's say you have a <literal>h:dataTable</"
+"literal> control on a page listing records for which you may or may not wish "
+"to render action links depending on the user's privileges. The <literal>s:"
+"hasPermission</literal> EL function allows us to pass in an object parameter "
+"which can be used to determine whether the user has the requested permission "
+"for that object or not. Here's how a dataTable with secured links might look:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:273
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{clients}\" var=\"cl\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Name&lt;/f:facet&gt;\n"
+"        #{cl.name}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;City&lt;/f:facet&gt;\n"
+"        #{cl.city}\n"
+"    &lt;/h:column&gt;   \n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"        &lt;s:link value=\"Modify Client\" action=\"#{clientAction.modify}"
+"\"\n"
+"                rendered=\"#{s:hasPermission('client','modify',cl)\"/&gt;\n"
+"        &lt;s:link value=\"Delete Client\" action=\"#{clientAction.delete}"
+"\"\n"
+"                rendered=\"#{s:hasPermission('client','delete',cl)\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:274
+#, no-c-format
+msgid "Securing pages"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:275
+#, no-c-format
+msgid ""
+"Page security requires that the application is using a <literal>pages.xml</"
+"literal> file, however is extremely simple to configure. Simply include a "
+"<literal>&lt;restrict/&gt;</literal> element within the <literal>page</"
+"literal> elements that you wish to secure. By default, if a value is not "
+"provided for the <literal>restrict</literal> element, an implied permission "
+"of <literal>{viewId}:render</literal> will be checked for whenever accessing "
+"that page. Otherwise the value will be evaluated as a standard security "
+"expression. Here's a couple of examples:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:278
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/settings.xhtml\"&gt;\n"
+"    &lt;restrict/&gt;\n"
+"&lt;/page&gt;\n"
+"        \n"
+"&lt;page view-id=\"/reports.xhtml\"&gt;    \n"
+"    &lt;restrict&gt;#{s:hasRole('admin')}&lt;/restrict&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:279
+#, no-c-format
+msgid ""
+"In the above example, the first page has an implied permission restriction "
+"of <literal>/settings.xhtml:render</literal>, while the second one checks "
+"that the user is a member of the <literal>admin</literal> role."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:282
+#, no-c-format
+msgid "Securing Entities"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:283
+#, no-c-format
+msgid ""
+"Seam security also makes it possible to apply security restrictions to read, "
+"insert, update and delete actions for entities."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:286
+#, no-c-format
+msgid ""
+"To secure all actions for an entity class, add a <literal>@Restrict</"
+"literal> annotation on the class itself:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:289
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"customer\")\n"
+"@Restrict\n"
+"public class Customer {\n"
+"  ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:290
+#, no-c-format
+msgid ""
+"If no expression is specified in the <literal>@Restrict</literal> "
+"annotation, the default security check that is performed is a permission "
+"check of <literal>entityName:action</literal>, where <literal>entityName</"
+"literal> is the name of the entity (or the class name if no @Name is "
+"specified), and the <literal>action</literal> is either <literal>read</"
+"literal>, <literal>insert</literal>, <literal>update</literal> or "
+"<literal>delete</literal>."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:293
+#, no-c-format
+msgid ""
+"It is also possible to only restrict certain actions, by placing a "
+"<literal>@Restrict</literal> annotation on the relevent entity lifecycle "
+"method (annotated as follows):"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:298
+#, no-c-format
+msgid ""
+"<literal>@PostLoad</literal> - Called after an entity instance is loaded "
+"from the database. Use this method to configure a <literal>read</literal> "
+"permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:303
+#, no-c-format
+msgid ""
+"<literal>@PrePersist</literal> - Called before a new instance of the entity "
+"is inserted. Use this method to configure an <literal>insert</literal> "
+"permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:308
+#, no-c-format
+msgid ""
+"<literal>@PreUpdate</literal> - Called before an entity is updated. Use this "
+"method to configure an <literal>update</literal> permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:313
+#, no-c-format
+msgid ""
+"<literal>@PreRemove</literal> - Called before an entity is deleted. Use this "
+"method to configure a <literal>delete</literal> permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:318
+#, no-c-format
+msgid ""
+"Here's an example of how an entity would be configured to perform a security "
+"check for any <literal>insert</literal> operations. Please note that the "
+"method is not required to do anything, the only important thing in regard to "
+"security is how it is annotated:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:321
+#, no-c-format
+msgid ""
+"@PrePersist @Restrict\n"
+"  public void prePersist() {}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:322
+#, no-c-format
+msgid ""
+"And here's an example of an entity permission rule that checks if the "
+"authenticated user is allowed to create a new blog entry (from the seamspace "
+"example):"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:325
+#, no-c-format
+msgid ""
+"rule InsertMemberBlog\n"
+"  no-loop\n"
+"  activation-group \"permissions\"\n"
+"when\n"
+"  c: PermissionCheck(name == \"memberBlog\", action == \"insert\", granted "
+"== false)\n"
+"  Principal(nm : name)\n"
+"  MemberBlog(mbr : member -&gt; (mbr.getUsername().equals(nm)))\n"
+"then\n"
+"  c.grant();\n"
+"  modify(c);\n"
+"end;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:326
+#, no-c-format
+msgid ""
+"Finally, we need to install a listener class that integrates Seam security "
+"with your JPA provider."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:329
+#, no-c-format
+msgid "Entity security with JPA"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:330
+#, no-c-format
+msgid ""
+"Security checks for EJB3 entity beans are performed with an "
+"<literal>EntityListener</literal>. You can install this listener by using "
+"the following <literal>META-INF/orm.xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:333
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;entity-mappings xmlns=\"http://java.sun.com/xml/ns/persistence/orm\"\n"
+"                 xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"                 xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence/"
+"orm \n"
+"                 http://java.sun.com/xml/ns/persistence/orm_1_0.xsd\"\n"
+"                 version=\"1.0\"&gt;\n"
+"                 \n"
+"    &lt;persistence-unit-metadata&gt;\n"
+"        &lt;persistence-unit-defaults&gt;\n"
+"            &lt;entity-listeners&gt;\n"
+"                &lt;entity-listener class=\"org.jboss.seam.security."
+"EntitySecurityListener\"/&gt;\n"
+"            &lt;/entity-listeners&gt;\n"
+"        &lt;/persistence-unit-defaults&gt;\n"
+"    &lt;/persistence-unit-metadata&gt;\n"
+"    \n"
+"&lt;/entity-mappings&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:334
+#, no-c-format
+msgid "Entity security with Hibernate"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:335
+#, no-c-format
+msgid ""
+"If you are using a Hibernate <literal>SessionFactory</literal> configured "
+"via Seam, you don't need to do anything special to use entity security."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:338
+#, no-c-format
+msgid "Writing Security Rules"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:339
+#, no-c-format
+msgid ""
+"Up to this point there has been a lot of mention of permissions, but no "
+"information about how permissions are actually defined or granted. This "
+"section completes the picture, by explaining how permission checks are "
+"processed, and how to implement permission checks for a Seam application."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:342
+#, no-c-format
+msgid "Permissions Overview"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:343
+#, no-c-format
+msgid ""
+"So how does the security API know whether a user has the <literal>customer:"
+"modify</literal> permission for a specific customer? Seam Security provides "
+"quite a novel method for determining user permissions, based on JBoss Rules. "
+"A couple of the advantages of using a rule engine are 1) a centralized "
+"location for the business logic that is behind each user permission, and 2) "
+"speed - JBoss Rules uses very efficient algorithms for evaluating large "
+"numbers of complex rules involving multiple conditions."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:346
+#, no-c-format
+msgid "Configuring a rules file"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:347
+#, no-c-format
+msgid ""
+"Seam Security expects to find a <literal>RuleBase</literal> component called "
+"<literal>securityRules</literal> which it uses to evaluate permission "
+"checks. This is configured in <literal>components.xml</literal> as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:350
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:security=\"http://jboss.com/products/seam/security\"\n"
+"            xmlns:drools=\"http://jboss.com/products/seam/drools\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                     http://jboss.com/products/seam/core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components  \n"
+"                     http://jboss.com/products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/drools \n"
+"                     http://jboss.com/products/seam/drools-1.2.xsd\"\n"
+"                 http://jboss.com/products/seam/security \n"
+"                     http://jboss.com/products/seam/security-1.2.xsd"
+"\"&gt;                 \n"
+"        \n"
+"   &lt;drools:rule-base name=\"securityRules\"&gt;\n"
+"       &lt;drools:rule-files&gt;\n"
+"           &lt;value&gt;/META-INF/security.drl&lt;/value&gt;\n"
+"       &lt;/drools:rule-files&gt;\n"
+"   &lt;/drools:rule-base&gt;    \n"
+"   \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:351
+#, no-c-format
+msgid ""
+"Once the <literal>RuleBase</literal> component is configured, it's time to "
+"write the security rules."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:354
+#, no-c-format
+msgid "Creating a security rules file"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:355
+#, no-c-format
+msgid ""
+"For this step you need to create a file called <literal>security.drl</"
+"literal> in the <literal>/META-INF</literal> directory of your application's "
+"jar file. In actual fact this file can be called anything you want, and "
+"exist in any location as long as it is configured appropriately in "
+"<literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:358
+#, no-c-format
+msgid ""
+"So what should the security rules file contain? At this stage it might be a "
+"good idea to at least skim through the JBoss Rules documentation, however to "
+"get started here's an extremely simple example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:361
+#, no-c-format
+msgid ""
+"package MyApplicationPermissions;\n"
+"\n"
+"import org.jboss.seam.security.PermissionCheck;\n"
+"import org.jboss.seam.security.Role;\n"
+"\n"
+"rule CanUserDeleteCustomers\n"
+"when\n"
+"  c: PermissionCheck(name == \"customer\", action == \"delete\")\n"
+"  Role(name == \"admin\")\n"
+"then\n"
+"  c.grant();\n"
+"end;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:362
+#, no-c-format
+msgid ""
+"Let's break this down. The first thing we see is the package declaration. A "
+"package in JBoss Rules is essentially a collection of rules. The package "
+"name can be anything you want - it doesn't relate to anything else outside "
+"the scope of the rule base."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:365
+#, no-c-format
+msgid ""
+"The next thing we can notice is a couple of import statements for the "
+"<literal>PermissionCheck</literal> and <literal>Role</literal> classes. "
+"These imports inform the rules engine that we'll be referencing these "
+"classes within our rules."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:368
+#, no-c-format
+msgid ""
+"Finally we have the code for the rule. Each rule within a package should be "
+"given a unique name (usually describing the purpose of the rule). In this "
+"case our rule is called <literal>CanUserDeleteCustomers</literal> and will "
+"be used to check whether a user is allowed to delete a customer record."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:371
+#, no-c-format
+msgid ""
+"Looking at the body of the rule definition we can notice two distinct "
+"sections. Rules have what is known as a left hand side (LHS) and a right "
+"hand side (RHS). The LHS consists of the conditional part of the rule, i.e. "
+"a list of conditions which must be satisfied for the rule to fire. The LHS "
+"is represented by the <literal>when</literal> section. The RHS is the "
+"consequence, or action section of the rule that will only be fired if all of "
+"the conditions in the LHS are met. The RHS is represented by the "
+"<literal>then</literal> section. The end of the rule is denoted by the "
+"<literal>end;</literal> line."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:374
+#, no-c-format
+msgid ""
+"If we look at the LHS of the rule, we see two conditions listed there. Let's "
+"examine the first condition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:377
+#, no-c-format
+msgid "c: PermissionCheck(name == \"customer\", action == \"delete\")"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:378
+#, no-c-format
+msgid ""
+"In plain english, this condition is stating that there must exist a "
+"<literal>PermissionCheck</literal> object with a <literal>name</literal> "
+"property equal to \"customer\", and an <literal>action</literal> property "
+"equal to \"delete\" within the working memory. What is the working memory? "
+"It is a session-scoped object that contains the contextual information that "
+"is required by the rules engine to make a decision about a permission check. "
+"Each time the <literal>hasPermission()</literal> method is called, a "
+"temporary <literal>PermissionCheck</literal> object, or <emphasis>Fact</"
+"emphasis>, is asserted into the working memory. This "
+"<literal>PermissionCheck</literal> corresponds exactly to the permission "
+"that is being checked, so for example if you call <literal>hasPermission"
+"(\"account\", \"create\", null)</literal> then a <literal>PermissionCheck</"
+"literal> object with a <literal>name</literal> equal to \"account\" and "
+"<literal>action</literal> equal to \"create\" will be asserted into the "
+"working memory for the duration of the permission check."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:381
+#, no-c-format
+msgid ""
+"So what else is in the working memory? Besides the short-lived temporary "
+"facts asserted during a permission check, there are some longer-lived "
+"objects in the working memory that stay there for the entire duration of a "
+"user being authenticated. These include any <literal>java.security."
+"Principal</literal> objects that are created as part of the authentication "
+"process, plus a <literal>org.jboss.seam.security.Role</literal> object for "
+"each of the roles that the user is a member of. It is also possible to "
+"assert additional long-lived facts into the working memory by calling "
+"<literal>Identity.instance().getSecurityContext().assertObject()</literal>, "
+"passing the object as a parameter."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:384
+#, no-c-format
+msgid ""
+"Getting back to our simple example, we can also notice that the first line "
+"of our LHS is prefixed with <literal>c:</literal>. This is a variable "
+"binding, and is used to refer back to the object that is matched by the "
+"condition. Moving onto the second line of our LHS, we see this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:387
+#, no-c-format
+msgid "Role(name == \"admin\")"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:388
+#, no-c-format
+msgid ""
+"This condition simply states that there must be a <literal>Role</literal> "
+"object with a <literal>name</literal> of \"admin\" within the working "
+"memory. As mentioned, user roles are asserted into the working memory as "
+"long-lived facts. So, putting both conditions together, this rule is "
+"essentially saying \"I will fire if you are checking for the "
+"<literal>customer:delete</literal> permission and the user is a member of "
+"the <literal>admin</literal> role\"."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:391
+#, no-c-format
+msgid ""
+"So what is the consequence of the rule firing? Let's take a look at the RHS "
+"of the rule:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:394
+#, no-c-format
+msgid "c.grant()"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:395
+#, no-c-format
+msgid ""
+"The RHS consists of Java code, and in this case is invoking the "
+"<literal>grant()</literal> method of the <literal>c</literal> object, which "
+"as already mentioned is a variable binding for the <literal>PermissionCheck</"
+"literal> object. Besides the <literal>name</literal> and <literal>action</"
+"literal> properties of the <literal>PermissionCheck</literal> object, there "
+"is also a <literal>granted</literal> property which is initially set to "
+"<literal>false</literal>. Calling <literal>grant()</literal> on a "
+"<literal>PermissionCheck</literal> sets the <literal>granted</literal> "
+"property to <literal>true</literal>, which means that the permission check "
+"was successful, allowing the user to carry out whatever action the "
+"permission check was intended for."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:398
+#, no-c-format
+msgid "SSL Security"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:399
+#, no-c-format
+msgid ""
+"Seam includes basic support for serving sensitive pages via the HTTPS "
+"protocol. This is easily configured by specifying a <literal>scheme</"
+"literal> for the page in <literal>pages.xml</literal>. The following example "
+"shows how the view <literal>/login.xhtml</literal> is configured to use "
+"HTTPS:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:402
+#, no-c-format
+msgid "&lt;page view-id=\"/login.xhtml\" scheme=\"https\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:403
+#, no-c-format
+msgid ""
+"This configuration is automatically extended to both <literal>s:link</"
+"literal> and <literal>s:button</literal> JSF controls, which (when "
+"specifying the <literal>view</literal>) will also render the link using the "
+"correct protocol. Based on the previous example, the following link will use "
+"the HTTPS protocol because <literal>/login.xhtml</literal> is configured to "
+"use it:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:406
+#, no-c-format
+msgid "&lt;s:link view=\"/login.xhtml\" value=\"Login\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:407
+#, no-c-format
+msgid ""
+"Browsing directly to a view when using the <emphasis>incorrect</emphasis> "
+"protocol will cause a redirect to the same view using the <emphasis>correct</"
+"emphasis> protocol. For example, browsing to a page that has <literal>scheme="
+"\"https\"</literal> using HTTP will cause a redirect to the same page using "
+"HTTPS."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:410
+#, no-c-format
+msgid ""
+"It is also possible to configure a default <literal>scheme</literal> for all "
+"pages. This is actually quite important, as you might only wish to use HTTPS "
+"for a few pages, and if no default scheme is specified then the default "
+"behavior is to continue using the current scheme. What this means is that "
+"once you enter a page with HTTPS, then HTTPS will continue to be used even "
+"if you navigate away to other non-HTTPS pages (a bad thing!). So it is "
+"strongly recommended to include a default <literal>scheme</literal>, by "
+"configuring it on the default (<literal>\"*\"</literal>) view:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:413
+#, no-c-format
+msgid "&lt;page view-id=\"*\" scheme=\"http\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:414
+#, no-c-format
+msgid ""
+"Of course, if <emphasis>none</emphasis> of the pages in your application use "
+"HTTPS then it is not required to specify a default scheme."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:417
+#, no-c-format
+msgid "Implementing a Captcha Test"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:418
+#, no-c-format
+msgid ""
+"Though strictly not part of the security API, it might be useful in certain "
+"circumstances (such as new user registrations, posting to a public blog or "
+"forum) to implement a Captcha (<emphasis>C</emphasis>ompletely <emphasis>A</"
+"emphasis>utomated <emphasis>P</emphasis>ublic <emphasis>T</emphasis>uring "
+"test to tell <emphasis>C</emphasis>omputers and <emphasis>H</emphasis>umans "
+"<emphasis>A</emphasis>part) to prevent automated bots from interacting with "
+"your application. Seam provides seamless integration with JCaptcha, an "
+"excellent library for generating Captcha challenges. If you wish to use the "
+"captcha feature in your application you need to include the jcaptcha-* jar "
+"file from the Seam lib directory in your project, and register it in "
+"<literal>application.xml</literal> as a java module."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:421
+#, no-c-format
+msgid "Configuring the Captcha Servlet"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:422
+#, no-c-format
+msgid ""
+"To get up and running, it is necessary to configure the Seam Resource "
+"Servlet, which will provide the Captcha challenge images to your pages. This "
+"requires the following entry in <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:425
+#, no-c-format
+msgid ""
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"    \n"
+"&lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:426
+#, no-c-format
+msgid "Adding a Captcha to a page"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:427
+#, no-c-format
+msgid ""
+"Adding a captcha challenge to a page is extremely easy. Seam provides a page-"
+"scoped component, <literal>captcha</literal>, which provides everything that "
+"is required, including built-in captcha validation. Here's an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:430
+#, no-c-format
+msgid ""
+"&lt;div&gt;\n"
+"    &lt;h:graphicImage value=\"/seam/resource/captcha?#{captcha.id}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"  \n"
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"verifyCaptcha\"&gt;Enter the above letters&lt;/h:"
+"outputLabel&gt;\n"
+"    &lt;h:inputText id=\"verifyCaptcha\" value=\"#{captcha.response}\" "
+"required=\"true\"/&gt;\n"
+"    &lt;div class=\"validationError\"&gt;&lt;h:message for=\"verifyCaptcha\"/"
+"&gt;&lt;/div&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:431
+#, no-c-format
+msgid ""
+"That's all there is to it. The <literal>graphicImage</literal> control "
+"displays the Captcha challenge, and the <literal>inputText</literal> "
+"receives the user's response. The response is automatically validated "
+"against the Captcha when the form is submitted."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Spring.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Spring.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Spring.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,416 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Spring.xml:10
+#, no-c-format
+msgid "Spring Framework integration"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:11
+#, no-c-format
+msgid ""
+"The Spring integration module allows easy migration of Spring-based projects "
+"to Seam and allows Spring applications to take advantage of key Seam "
+"features like conversations and Seam's more sophisticated persistence "
+"context management."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:14
+#, no-c-format
+msgid "Seam's support for Spring provides the ability to:"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:19
+#, no-c-format
+msgid "inject Seam component instances into Spring beans"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:24
+#, no-c-format
+msgid "inject Spring beans into Seam components"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:29
+#, no-c-format
+msgid "turn Spring beans into Seam components"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:34
+#, no-c-format
+msgid "allow Spring beans to live in any Seam context"
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:40
+#, no-c-format
+msgid "Injecting Seam components into Spring beans"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:41
+#, no-c-format
+msgid ""
+"Injecting Seam component instances into Spring beans is accomplished using "
+"the <literal>&lt;seam:instance/&gt;</literal> namespace handler. To enable "
+"the Seam namespace handler, the Seam namespace must be added to the Spring "
+"beans definition file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:44
+#, no-c-format
+msgid ""
+"&lt;beans xmlns=\"http://www.springframework.org/schema/beans\"\n"
+"    xmlns:seam=\"http://jboss.com/products/seam/spring\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://www.springframework.org/schema/beans \n"
+"                        http://www.springframework.org/schema/beans/spring-"
+"beans-2.0.xsd\n"
+"                        http://jboss.com/products/seam/spring \n"
+"                        http://jboss.com/products/seam/spring-1.2.xsd\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:45
+#, no-c-format
+msgid "Now any Seam component may be injected into any Spring bean:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:48
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\"&gt;\n"
+"        &lt;seam:instance name=\"someComponent\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:49
+#, no-c-format
+msgid "An EL expression may be used instead of a component name:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:52
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\"&gt;\n"
+"        &lt;seam:instance name=\"#{someExpression}\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:53
+#, no-c-format
+msgid ""
+"Seam component instances may even be made available for injection into "
+"Spring beans by a Spring bean id."
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:56
+#, no-c-format
+msgid ""
+"&lt;seam:instance name=\"someComponent\" id=\"someSeamComponentInstance\"/"
+"&gt;\n"
+"\n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\" ref=\"someSeamComponentInstance"
+"\"&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:57
+#, no-c-format
+msgid "Now for the caveat!"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:60
+#, no-c-format
+msgid ""
+"Seam was designed from the ground up to support a stateful component model "
+"with multiple contexts. Spring was not. Unlike Seam bijection, Spring "
+"injection does not occur at method invocation time. Instead, injection "
+"happens only when the Spring bean is instantiated. So the instance available "
+"when the bean is instantiated will be the same instance that the bean uses "
+"for the entire life of the bean. For example, if a Seam "
+"<literal>CONVERSATION</literal>-scoped component instance is directly "
+"injected into a singleton Spring bean, that singleton will hold a reference "
+"to the same instance long after the conversation is over! We call this "
+"problem <emphasis>scope impedance</emphasis>. Seam bijection ensures that "
+"scope impedance is maintained naturally as an invocation flows through the "
+"system. In Spring, we need to inject a proxy of the Seam component, and "
+"resolve the reference when the proxy is invoked."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:63
+#, no-c-format
+msgid ""
+"The <literal>&lt;seam:instance/&gt;</literal> tag lets us automatically "
+"proxy the Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:66
+#, no-c-format
+msgid ""
+"&lt;seam:instance id=\"seamManagedEM\" name=\"someManagedEMComponent\" proxy="
+"\"true\"/&gt;\n"
+"        \n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\"&gt;\n"
+"    &lt;property name=\"entityManager\" ref=\"seamManagedEM\"&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:67
+#, no-c-format
+msgid ""
+"This example shows one way to use a Seam-managed persistence context from a "
+"Spring bean. (A more robust way to use Seam-managed persistence contexts as "
+"a replacement for the Spring <literal>OpenEntityManagerInView</literal> "
+"filter will be provided in a future release)"
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:73
+#, no-c-format
+msgid "Injecting Spring beans into Seam components"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:74
+#, no-c-format
+msgid ""
+"It is even easier to inject Spring beans into Seam component instances. "
+"Actually, there are two possible approaches:"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:79
+#, no-c-format
+msgid "inject a Spring bean using an EL expression"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:84
+#, no-c-format
+msgid "make the Spring bean a Seam component"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:89
+#, no-c-format
+msgid ""
+"We'll discuss the second option in the next section. The easiest approach is "
+"to access the Spring beans via EL."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:92
+#, no-c-format
+msgid ""
+"The Spring <literal>DelegatingVariableResolver</literal> is an integration "
+"point Spring provides for integrating Spring with JSF. This "
+"<literal>VariableResolver</literal> makes all Spring beans available in EL "
+"by their bean id. You'll need to add the "
+"<literal>DelegatingVariableResolver</literal> to <literal>faces-config.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:95
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;variable-resolver&gt;\n"
+"        org.springframework.web.jsf.DelegatingVariableResolver\n"
+"    &lt;/variable-resolver&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:96
+#, no-c-format
+msgid "Then you can inject Spring beans using <literal>@In</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:99
+#, no-c-format
+msgid ""
+"@In(\"#{bookingService}\")\n"
+"private BookingService bookingService;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:100
+#, no-c-format
+msgid ""
+"The use of Spring beans in EL is not limited to injection. Spring beans may "
+"be used anywhere that EL expressions are used in Seam: process and pageflow "
+"definitions, working memory assertions, etc..."
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:106
+#, no-c-format
+msgid "Making a Spring bean into a Seam component"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:107
+#, no-c-format
+msgid ""
+"The <literal>&lt;seam:component/&gt;</literal> namespace handler can be used "
+"to make any Spring bean a Seam component. Just place the <literal>&lt;seam:"
+"component/&gt;</literal> tag within the declaration of the bean that you "
+"wish to be a Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:110
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;seam:component/&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:111
+#, no-c-format
+msgid ""
+"By default, <literal>&lt;seam:component/&gt;</literal> will create a "
+"<literal>STATELESS</literal> Seam component with class and name provided in "
+"the bean definition. Occasionally, such as when a <literal>FactoryBean</"
+"literal> is used, the class of the Spring bean may not be the class "
+"appearing in the bean definition. In such cases the <literal>beanClass</"
+"literal> should be explicitly specified. A Seam component name may be "
+"explicitly specified in cases where there is potential for a naming conflict."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:114
+#, no-c-format
+msgid ""
+"The <literal>scope</literal> attribute of <literal>&lt;seam:component/&gt;</"
+"literal> may be used if you wish the Spring bean to be managed in a "
+"particular Seam scope. The Spring bean must be scoped to <literal>prototype</"
+"literal> if the Seam scope specified is anything other than "
+"<literal>STATELESS</literal>. Pre-existing Spring beans usually have a "
+"fundamentally stateless character, so this attribute is not usually needed."
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:120
+#, no-c-format
+msgid "Seam-scoped Spring beans"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:121
+#, no-c-format
+msgid ""
+"The Seam integration package also lets you use Seam's contexts as Spring 2.0 "
+"style custom scopes. This lets you declare any Spring bean in any of Seam's "
+"contexts. However, note once again that Spring's component model was never "
+"architected to support statefulness, so please use this feature with great "
+"care. In particular, clustering of session or conversation scoped Spring "
+"beans is deeply problematic, and care must be taken when injecting a bean or "
+"component from a wider scope into a bean of a narrower scope."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:124
+#, no-c-format
+msgid ""
+"By specifying <literal>&lt;seam:configure-scopes/&gt;</literal> once in a "
+"Spring bean factory configuration, all of the Seam scopes will be available "
+"to Spring beans as custom scopes. To associate a Spring bean with a "
+"particular Seam scope, specify the Seam scope in the <literal>scope</"
+"literal> attribute of the bean definition."
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:127
+#, no-c-format
+msgid ""
+"&lt;!-- Only needs to be specified once per bean factory--&gt;\n"
+"&lt;seam:configure-scopes/&gt;\n"
+"\n"
+"...\n"
+"\n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope=\"seam."
+"CONVERSATION\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:128
+#, no-c-format
+msgid ""
+"The prefix of the scope name may be changed by specifying the "
+"<literal>prefix</literal> attribute in the <literal>configure-scopes</"
+"literal> definition. (The default prefix is <literal>seam.</literal>)"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:131
+#, no-c-format
+msgid ""
+"Seam-scoped Spring beans defined this way can be injected into other Spring "
+"beans without the use of <literal>&lt;seam:instance/&gt;</literal>. However, "
+"care must be taken to ensure scope impedance is maintained. The normal "
+"approach used in Spring is to specify <literal>&lt;aop:scoped-proxy/&gt;</"
+"literal> in the bean definition. However, Seam-scoped Spring beans are "
+"<emphasis>not</emphasis> compatible with <literal>&lt;aop:scoped-proxy/&gt;</"
+"literal>. So if you need to inject a Seam-scoped Spring bean into a "
+"singleton, <literal>&lt;seam:instance/&gt;</literal> must be used:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:134
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope=\"seam."
+"CONVERSATION\"/&gt;\n"
+"\n"
+"...\n"
+"\n"
+"&lt;bean id=\"someSingleton\"&gt;\n"
+"    &lt;property name=\"someSeamScopedSpringBean\"&gt;\n"
+"        &lt;seam:instance name=\"someSpringBean\" proxy=\"true\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Testing.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Testing.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Testing.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,342 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Testing.xml:10
+#, no-c-format
+msgid "Testing Seam applications"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:11
+#, no-c-format
+msgid ""
+"Most Seam applications will need at least two kinds of automated tests: "
+"<emphasis>unit tests</emphasis>, which test a particular Seam component in "
+"isolation, and scripted <emphasis>integration tests</emphasis> which "
+"exercise all Java layers of the application (that is, everything except the "
+"view pages)."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:14
+#, no-c-format
+msgid "Both kinds of tests are very easy to write."
+msgstr ""
+
+#. Tag: title
+#: Testing.xml:18
+#, no-c-format
+msgid "Unit testing Seam components"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:19
+#, no-c-format
+msgid ""
+"All Seam components are POJOs. This is a great place to start if you want "
+"easy unit testing. And since Seam emphasises the use of bijection for inter-"
+"component interactions and access to contextual objects, it's very easy to "
+"test a Seam component outside of its normal runtime environment."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:22
+#, no-c-format
+msgid "Consider the following Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:25
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Scope(EVENT)\n"
+"@Name(\"register\")\n"
+"public class RegisterAction implements Register\n"
+"{\n"
+"   private User user;\n"
+"   private EntityManager em;\n"
+"\n"
+"   @In\n"
+"   public void setUser(User user) {\n"
+"       this.user = user;\n"
+"   }\n"
+"   \n"
+"   @PersistenceContext\n"
+"   public void setBookingDatabase(EntityManager em) {\n"
+"       this.em = em;\n"
+"   }\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = em.createQuery(\"select username from User where "
+"username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getResultList();\n"
+"      if (existing.size()==0)\n"
+"      {\n"
+"         em.persist(user);\n"
+"         return \"success\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:26
+#, no-c-format
+msgid "We could write a TestNG test for this component as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:29
+#, no-c-format
+msgid ""
+"public class RegisterActionTest\n"
+"{\n"
+"\n"
+"    @Test\n"
+"    public testRegisterAction()\n"
+"    {\n"
+"        EntityManager em = getEntityManagerFactory().createEntityManager();\n"
+"        em.getTransaction().begin();\n"
+"        \n"
+"        User gavin = new User();\n"
+"        gavin.setName(\"Gavin King\");\n"
+"        gavin.setUserName(\"1ovthafew\");\n"
+"        gavin.setPassword(\"secret\");\n"
+"        \n"
+"        RegisterAction action = new RegisterAction();\n"
+"        action.setUser(gavin);\n"
+"        action.setBookingDatabase(em);\n"
+"        \n"
+"        assert \"success\".equals( action.register() );\n"
+"        \n"
+"        em.getTransaction().commit();\n"
+"        em.close();\n"
+"    }\n"
+"    \n"
+"    \n"
+"    private EntityManagerFactory emf;\n"
+"    \n"
+"    public EntityManagerFactory getEntityManagerFactory()\n"
+"    {\n"
+"        return emf;\n"
+"    }\n"
+"    \n"
+"    @Configuration(beforeTestClass=true)\n"
+"    public void init() \n"
+"    {\n"
+"        emf = Persistence.createEntityManagerFactory"
+"(\"myResourceLocalEntityManager\");\n"
+"    }\n"
+"    \n"
+"    @Configuration(afterTestClass=true)\n"
+"    public void destroy()\n"
+"    {\n"
+"        emf.close();\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:30
+#, no-c-format
+msgid ""
+"Seam components don't usually depend directly upon container infrastructure, "
+"so most unit testing as as easy as that!"
+msgstr ""
+
+#. Tag: title
+#: Testing.xml:36
+#, no-c-format
+msgid "Integration testing Seam applications"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:37
+#, no-c-format
+msgid ""
+"Integration testing is slightly more difficult. In this case, we can't "
+"eliminate the container infrastructure; indeed, that is part of what is "
+"being tested! At the same time, we don't want to be forced to deploy our "
+"application to an application server to run the automated tests. We need to "
+"be able to reproduce just enough of the container infrastructure inside our "
+"testing environment to be able to exercise the whole application, without "
+"hurting performance too much."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:40
+#, no-c-format
+msgid ""
+"A second problem is emulating user interactions. A third problem is where to "
+"put our assertions. Some test frameworks let us test the whole application "
+"by reproducing user interactions with the web browser. These frameworks have "
+"their place, but they are not appropriate for use at development time."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:43
+#, no-c-format
+msgid ""
+"The approach taken by Seam is to let you write tests that script your "
+"components while running inside a pruned down container environment (Seam, "
+"together with the JBoss Embeddable EJB container). The role of the test "
+"script is basically to reproduce the interaction between the view and the "
+"Seam components. In other words, you get to pretend you are the JSF "
+"implementation!"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:46
+#, no-c-format
+msgid "This approach tests everything except the view."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:49
+#, no-c-format
+msgid "Let's consider a JSP view for the component we unit tested above:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:52
+#, no-c-format
+msgid ""
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Register New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;table border=\"0\"&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Username&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputText value=\"#{user.username}\"/&gt;&lt;/"
+"td&gt;\n"
+"       &lt;/tr&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Real Name&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputText value=\"#{user.name}\"/&gt;&lt;/td&gt;\n"
+"       &lt;/tr&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Password&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputSecret value=\"#{user.password}\"/&gt;&lt;/"
+"td&gt;\n"
+"       &lt;/tr&gt;\n"
+"     &lt;/table&gt;\n"
+"     &lt;h:messages/&gt;\n"
+"     &lt;h:commandButton type=\"submit\" value=\"Register\" action=\"#"
+"{register.register}\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:53
+#, no-c-format
+msgid ""
+"We want to test the registration functionality of our application (the stuff "
+"that happens when the user clicks the Register button). We'll reproduce the "
+"JSF request lifecycle in an automated TestNG test:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:56
+#, no-c-format
+msgid ""
+"public class RegisterTest extends SeamTest\n"
+"{\n"
+"   \n"
+"   @Test\n"
+"   public void testRegister() throws Exception\n"
+"   {\n"
+"            \n"
+"      new FacesRequest() {\n"
+"\n"
+"         @Override\n"
+"         protected void processValidations() throws Exception\n"
+"         {\n"
+"            validateValue(\"#{user.username}\", \"1ovthafew\");\n"
+"            validateValue(\"#{user.name}\", \"Gavin King\");\n"
+"            validateValue(\"#{user.password}\", \"secret\");\n"
+"            assert !isValidationFailure();\n"
+"         }\n"
+"         \n"
+"         @Override\n"
+"         protected void updateModelValues() throws Exception\n"
+"         {\n"
+"            setValue(\"#{user.username}\", \"1ovthafew\");\n"
+"            setValue(\"#{user.name}\", \"Gavin King\");\n"
+"            setValue(\"#{user.password}\", \"secret\");\n"
+"         }\n"
+"\n"
+"         @Override\n"
+"         protected void invokeApplication()\n"
+"         {\n"
+"            assert invokeMethod(\"#{register.register}\").equals(\"success"
+"\");\n"
+"         }\n"
+"\n"
+"         @Override\n"
+"         protected void renderResponse()\n"
+"         {\n"
+"            assert getValue(\"#{user.username}\").equals(\"1ovthafew\");\n"
+"            assert getValue(\"#{user.name}\").equals(\"Gavin King\");\n"
+"            assert getValue(\"#{user.password}\").equals(\"secret\");\n"
+"         }\n"
+"         \n"
+"      }.run();\n"
+"      \n"
+"   }\n"
+"\n"
+"   ...\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:57
+#, no-c-format
+msgid ""
+"Notice that we've extended <literal>SeamTest</literal>, which provides a "
+"Seam environment for our components, and written our test script as an "
+"anonymous class that extends <literal>SeamTest.FacesRequest</literal>, which "
+"provides an emulated JSF request lifecycle. (There is also a "
+"<literal>SeamTest.NonFacesRequest</literal> for testing GET requests.) We've "
+"written our code in methods which are named for the various JSF phases, to "
+"emulate the calls that JSF would make to our components. Then we've thrown "
+"in various assertions."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:60
+#, no-c-format
+msgid ""
+"You'll find plenty of integration tests for the Seam example applications "
+"which demonstrate more complex cases. There are instructions for running "
+"these tests using Ant, or using the TestNG plugin for eclipse:"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Text.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Text.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Text.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,362 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Text.xml:10
+#, no-c-format
+msgid "Seam Text"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:11
+#, no-c-format
+msgid ""
+"Collaboration-oriented websites require a human-friendly markup language for "
+"easy entry of formatted text in forum posts, wiki pages, blogs, comments, "
+"etc. Seam provides the <literal>&lt;s:formattedText/&gt;</literal> control "
+"for display of formatted text that conforms to the <emphasis>Seam Text</"
+"emphasis> language. Seam Text is implemented using an ANTLR-based parser. "
+"You don't need to know anything about ANTLR to use it, however."
+msgstr ""
+
+#. Tag: title
+#: Text.xml:15
+#, no-c-format
+msgid "Basic fomatting"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:16
+#, no-c-format
+msgid "Here is a simple example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:19
+#, no-c-format
+msgid ""
+"It's easy to make *bold text*, /italic text/, |monospace|, \n"
+"~deleted text~, super^scripts^ or _underlines_."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:20
+#, no-c-format
+msgid ""
+"If we display this using <literal>&lt;s:formattedText/&gt;</literal>, we "
+"will get the following HTML produced:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:23
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"It's easy to make &lt;b&gt;bold text&lt;/b&gt;, &lt;i&gt;italic text&lt;/"
+"i&gt;, &lt;tt&gt;monospace&lt;/tt&gt;\n"
+"&lt;del&gt;deleted text&lt;/del&gt;, super&lt;sup&gt;scripts&lt;/sup&gt; or "
+"&lt;u&gt;underlines&lt;/u&gt;.\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:24
+#, no-c-format
+msgid ""
+"We can use a blank line to indicate a new paragraph, and <literal>+</"
+"literal> to indicate a heading:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:27
+#, no-c-format
+msgid ""
+"+This is a big heading\n"
+"You /must/ have some text following a heading!\n"
+" \n"
+"++This is a smaller heading\n"
+"This is the first paragraph. We can split it across multiple \n"
+"lines, but we must end it with a blank line.\n"
+"\n"
+"This is the second paragraph."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:28
+#, no-c-format
+msgid ""
+"(Note that a simple newline is ignored, you need an additional blank line to "
+"wrap text into a new paragraph.) This is the HTML that results:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:31
+#, no-c-format
+msgid ""
+"&lt;h1&gt;This is a big heading&lt;/h1&gt;\n"
+"&lt;p&gt;\n"
+"You &lt;i&gt;must&lt;/i&gt; have some text following a heading!\n"
+"&lt;/p&gt;\n"
+" \n"
+"&lt;h2&gt;This is a smaller heading&lt;/h2&gt;\n"
+"&lt;p&gt;\n"
+"This is the first paragraph. We can split it across multiple \n"
+"lines, but we must end it with a blank line.\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"This is the second paragraph.\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:32
+#, no-c-format
+msgid ""
+"Ordered lists are created using the <literal>#</literal> character. "
+"Unordered lists use the <literal>=</literal> character:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:35
+#, no-c-format
+msgid ""
+"An ordered list:\n"
+"        \n"
+"#first item\n"
+"#second item\n"
+"#and even the /third/ item\n"
+"\n"
+"An unordered list:\n"
+"\n"
+"=an item\n"
+"=another item"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:36
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"An ordered list:\n"
+"&lt;/p&gt;\n"
+" \n"
+"&lt;ol&gt;       \n"
+"&lt;li&gt;first item&lt;/li&gt;\n"
+"&lt;li&gt;second item&lt;/li&gt;\n"
+"&lt;li&gt;and even the &lt;i&gt;third&lt;/i&gt; item&lt;/li&gt;\n"
+"&lt;/ol&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"An unordered list:\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;ul&gt;\n"
+"&lt;li&gt;an item&lt;/li&gt;\n"
+"&lt;li&gt;another item&lt;/li&gt;\n"
+"&lt;/ul&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:37
+#, no-c-format
+msgid "Quoted sections should be surrounded in double quotes:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:40
+#, no-c-format
+msgid ""
+"The other guy said:\n"
+"        \n"
+"\"Nyeah nyeah-nee \n"
+"/nyeah/ nyeah!\"\n"
+"\n"
+"But what do you think he means by \"nyeah-nee\"?"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:41
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"The other guy said:\n"
+"&lt;/p&gt;\n"
+"        \n"
+"&lt;q&gt;Nyeah nyeah-nee\n"
+"&lt;i&gt;nyeah&lt;/i&gt; nyeah!&lt;/q&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"But what do you think he means by &lt;q&gt;nyeah-nee&lt;/q&gt;?\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: title
+#: Text.xml:45
+#, no-c-format
+msgid "Entering code and text with special characters"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:46
+#, no-c-format
+msgid ""
+"Special characters such as <literal>*</literal>, <literal>|</literal> and "
+"<literal>#</literal>, along with HTML characters such as <literal>&lt;</"
+"literal>, <literal>&gt;</literal> and <literal>&amp;</literal> may be "
+"escaped using <literal>&#92;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:49
+#, no-c-format
+msgid ""
+"You can write down equations like 2&#92;*3&#92;=6 and HTML tags\n"
+"like &#92;&lt;body&#92;&gt; using the escape character: &#92;&#92;."
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:50
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"You can write down equations like 2*3=6 and HTML tags\n"
+"like &lt;body&gt; using the escape character: &#92;.\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:51
+#, no-c-format
+msgid "And we can quote code blocks using backticks:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:54
+#, no-c-format
+msgid ""
+"My code doesn't work:\n"
+"\n"
+"`for (int i=0; i&lt;100; i--)\n"
+"{\n"
+"    doSomething();\n"
+"}`\n"
+"\n"
+"Any ideas?"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:55
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"My code doesn't work:\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;pre&gt;for (int i=0; i&lt;100; i--)\n"
+"{\n"
+"    doSomething();\n"
+"}&lt;/pre&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"Any ideas?\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: title
+#: Text.xml:59
+#, no-c-format
+msgid "Links"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:60
+#, no-c-format
+msgid "A link may be created using the following syntax:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:63
+#, no-c-format
+msgid "Go to the Seam website at [=&gt;http://jboss.com/products/seam]."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:64
+#, no-c-format
+msgid "Or, if you want to specify the text of the link:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:67
+#, no-c-format
+msgid "Go to [the Seam website=&gt;http://jboss.com/products/seam]."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:68
+#, no-c-format
+msgid ""
+"For advanced users, it is even possible to customize the Seam Text parser to "
+"understand wikiword links written using this syntax."
+msgstr ""
+
+#. Tag: title
+#: Text.xml:74
+#, no-c-format
+msgid "Entering HTML"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:75
+#, no-c-format
+msgid ""
+"Text may even include a certain limited subset of HTML (don't worry, the "
+"subset is chosen to be safe from cross-site scripting attacks). This is "
+"useful for creating links:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:78
+#, no-c-format
+msgid ""
+"You might want to link to &lt;a href=\"http://jboss.com/products/seam\"&gt;"
+"something\n"
+"cool&lt;/a&gt;, or even include an image: &lt;img src=\"/logo.jpg\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:79
+#, no-c-format
+msgid "And for creating tables:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:82
+#, no-c-format
+msgid ""
+"&lt;table&gt;\n"
+"    &lt;tr&gt;&lt;td&gt;First name:&lt;/td&gt;&lt;td&gt;Gavin&lt;/td&gt;&lt;/"
+"tr&gt;\n"
+"    &lt;tr&gt;&lt;td&gt;Last name:&lt;/td&gt;&lt;td&gt;King&lt;/td&gt;&lt;/"
+"tr&gt;\n"
+"&lt;/table&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:83
+#, no-c-format
+msgid "But you can do much more if you want!"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Tools.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Tools.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Tools.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,769 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Tools.xml:10
+#, no-c-format
+msgid "Seam tools"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:12
+#, no-c-format
+msgid "jBPM designer and viewer"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:13
+#, no-c-format
+msgid ""
+"The jBPM designer and viewer will let you design and view in a nice way your "
+"business processes and your pageflows. This convenient tool is part of JBoss "
+"Eclipse IDE and more details can be found in the jBPM's documentation "
+"(http://docs.jboss.com/jbpm/v3/gpd/)"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:17
+#, no-c-format
+msgid "<title>Business process designer</title>"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:18
+#, no-c-format
+msgid "This tool lets you design your own business process in a graphical way."
+msgstr ""
+
+#. Tag: screeninfo
+#: Tools.xml:21 Tools.xml:37
+#, no-c-format
+msgid "<screeninfo>Business process designer</screeninfo>"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:33
+#, no-c-format
+msgid "Pageflow viewer"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:34
+#, no-c-format
+msgid ""
+"This tool let you design to some extend your pageflows and let you build "
+"graphical views of them so you can easily share and compare ideas on how it "
+"should be designed."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:51
+#, no-c-format
+msgid "CRUD-application generator"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:52
+#, no-c-format
+msgid ""
+"This chapter, will give you a short overview of the support for Seam that is "
+"available in the Hibernate Tools. Hibernate Tools is a set of tools for "
+"working with Hibernate and related technologies, such as JBoss Seam and "
+"EJB3. The tools are available as a set of eclipse plugins and Ant tasks. You "
+"can download the Hibernate Tools from the JBoss Eclipse IDE or Hibernate "
+"Tools websites."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:55
+#, no-c-format
+msgid ""
+"The specific support for Seam that is currently available is generation of a "
+"fully functional Seam based CRUD-application. The CRUD-application can be "
+"generated based on your existing Hibernate mapping files or EJB3 annotated "
+"POJO's or even fully reverse engineered from your existing database schema."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:58
+#, no-c-format
+msgid ""
+"The following sections is focused on the features required to understand for "
+"usage with Seam. The content is derived from the the Hibernate Tools "
+"reference documentation. Thus if you need more detailed information please "
+"refer to the Hibernate Tools documentation."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:62
+#, no-c-format
+msgid "Creating a Hibernate configuration file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:63
+#, no-c-format
+msgid ""
+"To be able to reverse engineer and generate code a hibernate.properties or "
+"hibernate.cfg.xml file is needed. The Hibernate Tools provide a wizard for "
+"generating the hibernate.cfg.xml file if you do not already have such file."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:66
+#, no-c-format
+msgid ""
+"Start the wizard by clicking \"New Wizard\" (Ctrl+N), select the Hibernate/"
+"Hibernate Configuration file (cfg.xml) wizard and press \"Next\". After "
+"selecting the wanted location for the hibernate.cfg.xml file, you will see "
+"the following page:"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:77
+#, no-c-format
+msgid ""
+"Tip: The contents in the combo boxes for the JDBC driver class and JDBC URL "
+"change automatically, depending on the Dialect and actual driver you have "
+"chosen."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:80
+#, no-c-format
+msgid ""
+"Enter your configuration information in this dialog. Details about the "
+"configuration options can be found in Hibernate reference documentation."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:83
+#, no-c-format
+msgid ""
+"Press \"Finish\" to create the configuration file, after optionally creating "
+"a Console onfiguration, the hibernate.cfg.xml will be automatically opened "
+"in an editor. The last option \"Create Console Configuration\" is enabled by "
+"default and when enabled i will automatically use the hibernate.cfg.xml for "
+"the basis of a \"Console Configuration\""
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:89
+#, no-c-format
+msgid "<title>Creating a Hibernate Console configuration</title>"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:90
+#, no-c-format
+msgid ""
+"A Console Configuration describes to the Hibernate plugin which "
+"configuration files should be used to configure hibernate, including which "
+"classpath is needed to load the POJO's, JDBC drivers etc. It is required to "
+"make usage of query prototyping, reverse engineering and code generation. "
+"You can have multiple named console configurations. Normally you would just "
+"need one per project, but more (or less) is definitly possible."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:93
+#, no-c-format
+msgid ""
+"You create a console configuration by running the Console Configuration "
+"wizard, shown in the following screenshot. The same wizard will also be used "
+"if you are coming from the hibernate.cfg.xml wizard and had enabled \"Create "
+"Console Configuration\"."
+msgstr ""
+
+#. Tag: caption
+#: Tools.xml:103
+#, no-c-format
+msgid "<caption>Creating a Hibernate Console configuration</caption>"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:105
+#, no-c-format
+msgid ""
+"The following table describes the relevant settings. The wizard can "
+"automatically detect default values for most of these if you started the "
+"Wizard with the relevant java project selected"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:109
+#, no-c-format
+msgid "Hibernate Console Configuration Parameters"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:117
+#, no-c-format
+msgid "Parameter"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:122 Tools.xml:308 Tools.xml:458
+#, no-c-format
+msgid "Description"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:127
+#, no-c-format
+msgid "Auto detected value"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:136
+#, no-c-format
+msgid "Name"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:141
+#, no-c-format
+msgid "The unique name of the configuration"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:146
+#, no-c-format
+msgid "Name of the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:153
+#, no-c-format
+msgid "Property file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:158
+#, no-c-format
+msgid "Path to a hibernate.properties file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:163
+#, no-c-format
+msgid "First hibernate.properties file found in the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:170
+#, no-c-format
+msgid "Configuration file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:175
+#, no-c-format
+msgid "Path to a hibernate.cfg.xml file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:180
+#, no-c-format
+msgid "First hibernate.cfg.xml file found in the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:187
+#, no-c-format
+msgid "Enable Hibernate ejb3/annotations"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:192
+#, no-c-format
+msgid ""
+"Selecting this option enables usage of annotated classes. hbm.xml files are "
+"of course still possible to use too. This feature requires running the "
+"Eclipse IDE with a JDK 5 runtime, otherwise you will get classloading and/or "
+"version errors."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:197
+#, no-c-format
+msgid "Not enabled"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:204
+#, no-c-format
+msgid "Mapping files"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:209
+#, no-c-format
+msgid ""
+"List of additional mapping files that should be loaded. Note: A hibernate."
+"cfg.xml can also contain mappings. Thus if these a duplicated here, you will "
+"get \"Duplicate mapping\" errors when using the console configuration."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:214
+#, no-c-format
+msgid ""
+"If no hibernate.cfg.xml file is found, all hbm.xml files found in the "
+"selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:221
+#, no-c-format
+msgid "Classpath"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:226
+#, no-c-format
+msgid ""
+"The classpath for loading POJO and JDBC drivers. Do not add Hibernate core "
+"libraries or dependencies, they are already included. If you get "
+"ClassNotFound errors then check this list for possible missing or redundant "
+"directories/jars."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:231
+#, no-c-format
+msgid ""
+"The default build output directory and any JARs with a class implementing "
+"java.sql.Driver in the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:239
+#, no-c-format
+msgid ""
+"Clicking \"Finish\" creates the configuration and shows it in the "
+"\"Hibernate Configurations\" view"
+msgstr ""
+
+#. Tag: caption
+#: Tools.xml:249
+#, no-c-format
+msgid "Console overview"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:254
+#, no-c-format
+msgid "Reverse engineering and code generation"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:255
+#, no-c-format
+msgid ""
+"A very simple \"click-and-generate\" reverse engineering and code generation "
+"facility is available. It is this facility that allows you to generate the "
+"skeleton for a full Seam CRUD application."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:258
+#, no-c-format
+msgid ""
+"To start working with this process, start the \"Hibernate Code Generation\" "
+"which is available in the toolbar via the Hibernate icon or via the \"Run/"
+"Hibernate Code Generation\" menu item."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:262
+#, no-c-format
+msgid "Code Generation Launcher"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:263
+#, no-c-format
+msgid ""
+"When you click on \"Hibernate Code Generation\" the standard Eclipse "
+"launcher dialog will appear. In this dialog you can create, edit and delete "
+"named Hibernate code generation \"launchers\"."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:274
+#, no-c-format
+msgid ""
+"The dialog has the standard tabs \"Refresh\" and \"Common\" that can be used "
+"to configure which directories should be automatically refreshed and various "
+"general settings launchers, such as saving them in a project for sharing the "
+"launcher within a team."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:285
+#, no-c-format
+msgid ""
+"The first time you create a code generation launcher you should give it a "
+"meaningfull name, otherwise the default prefix \"New_Generation\" will be "
+"used."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:288
+#, no-c-format
+msgid ""
+"Note: The \"At least one exporter option must be selected\" is just a "
+"warning stating that for this launch to work you need to select an exporter "
+"on the Exporter tab. When an exporter has been selected the warning will "
+"disappear."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:291
+#, no-c-format
+msgid "On the \"Main\" tab you the following fields:"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:295
+#, no-c-format
+msgid "Code generation \"Main\" tab fields"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:303 Tools.xml:453
+#, no-c-format
+msgid "Field"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:317
+#, no-c-format
+msgid "Console Configuration"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:322
+#, no-c-format
+msgid ""
+"The name of the console configuration which should be used when code "
+"generating."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:329
+#, no-c-format
+msgid "Output directory"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:334
+#, no-c-format
+msgid ""
+"Path to a directory into where all output will be written by default. Be "
+"aware that existing files will be overwritten, so be sure to specify the "
+"correct directory."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:341
+#, no-c-format
+msgid "Reverse engineer from JDBC Connection"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:346
+#, no-c-format
+msgid ""
+"If enabled the tools will reverse engineer the database available via the "
+"connection information in the selected Hibernate Console Configuration and "
+"generate code based on the database schema. If not enabled the code "
+"generation will just be based on the mappings already specified in the "
+"Hibernate Console configuration."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:353
+#, no-c-format
+msgid "Package"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:358
+#, no-c-format
+msgid ""
+"The package name here is used as the default package name for any entities "
+"found when reverse engineering."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:365
+#, no-c-format
+msgid "reveng.xml"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:370
+#, no-c-format
+msgid ""
+"Path to a reveng.xml file. A reveng.xml file allows you to control certain "
+"aspects of the reverse engineering. e.g. how jdbc types are mapped to "
+"hibernate types and especially important which tables are included/excluded "
+"from the process. Clicking \"setup\" allows you to select an existing reveng."
+"xml file or create a new one.."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:377
+#, no-c-format
+msgid "reveng. strategy"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:382
+#, no-c-format
+msgid ""
+"If reveng.xml does not provide enough customization you can provide your own "
+"implementation of an ReverseEngineeringStrategy. The class need to be in the "
+"claspath of the Console Configuration, otherwise you will get class not "
+"found exceptions."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:389
+#, no-c-format
+msgid "Generate basic typed composite ids"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:394
+#, no-c-format
+msgid ""
+"This field should always be enabled when generating the Seam CRUD "
+"application. A table that has a multi-colum primary key a &lt;composite-"
+"id&gt; mapping will always be created. If this option is enabled and there "
+"are matching foreign-keys each key column is still considered a 'basic' "
+"scalar (string, long, etc.) instead of a reference to an entity. If you "
+"disable this option a &lt;key-many-to-one&gt; instead. Note: a &lt;many-to-"
+"one&gt; property is still created, but is simply marked as non-updatable and "
+"non-insertable."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:401
+#, no-c-format
+msgid "Use custom templates"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:406
+#, no-c-format
+msgid ""
+"If enabled, the Template directory will be searched first when looking up "
+"the velocity templates, allowing you to redefine how the individual "
+"templates process the hibernate mapping model."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:413
+#, no-c-format
+msgid "Template directory"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:418
+#, no-c-format
+msgid "A path to a directory with custom velocity templates."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:429
+#, no-c-format
+msgid "Exporters"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:430
+#, no-c-format
+msgid ""
+"The exporters tab is used to specify which type of code that should be "
+"generated. Each selection represents an \"Exporter\" that are responsible "
+"for generating the code, hence the name."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:441
+#, no-c-format
+msgid ""
+"The following table describes in short the various exporters. The most "
+"relevant for Seam is of course the \"JBoss Seam Skeleton app\"."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:445
+#, no-c-format
+msgid "Code generation \"Exporter\" tab fields"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:467
+#, no-c-format
+msgid "Generate domain code"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:472
+#, no-c-format
+msgid ""
+"Generates POJO's for all the persistent classes and components found in the "
+"given Hibernate configuration."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:479
+#, no-c-format
+msgid "JDK 1.5 constructs"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:484
+#, no-c-format
+msgid "When enabled the POJO's will use JDK 1.5 constructs."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:491
+#, no-c-format
+msgid "EJB3/JSR-220 annotations"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:496
+#, no-c-format
+msgid ""
+"When enabled the POJO's will be annotated according to the EJB3/JSR-220 "
+"persistency specification."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:503
+#, no-c-format
+msgid "Generate DAO code"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:508
+#, no-c-format
+msgid "Generates a set of DAO's for each entity found."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:515
+#, no-c-format
+msgid "Generate Mappings"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:520
+#, no-c-format
+msgid "Generate mapping (hbm.xml) files for each entity"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:527
+#, no-c-format
+msgid "Generate hibernate configuration file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:532
+#, no-c-format
+msgid ""
+"Generate a hibernate.cfg.xml file. Used to keep the hibernate.cfg.xml "
+"uptodate with any new found mapping files."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:539
+#, no-c-format
+msgid "Generate schema html-documentation"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:544
+#, no-c-format
+msgid ""
+"Generates set of html pages that documents the database schema and some of "
+"the mappings."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:551
+#, no-c-format
+msgid "Generate JBoss Seam skeleton app (beta)"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:556
+#, no-c-format
+msgid ""
+"Generates a complete JBoss Seam skeleton app. The generation will include "
+"annotated POJO's, Seam controller beans and a JSP for the presentation "
+"layer. See the generated readme.txt for how to use it."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:559
+#, no-c-format
+msgid ""
+"Note: this exporter generates a full application, including a build.xml thus "
+"you will get the best results if you use an output directory which is the "
+"root of your project."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:570
+#, no-c-format
+msgid "Generating and using the code"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:571
+#, no-c-format
+msgid ""
+"When you have finished filling out the settings, simply press \"Run\" to "
+"start the generation of code. This might take a little while if you are "
+"reverse engineering from a database."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:574
+#, no-c-format
+msgid ""
+"When the generation have finished you should now have a complete skeleton "
+"Seam application in the output directory. In the output directory there is a "
+"<literal>readme.txt</literal> file describing the steps needed to deploy and "
+"run the example."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:577
+#, no-c-format
+msgid ""
+"If you want to regenerate/update the skeleton code then simply run the code "
+"generation again by selecting the \"Hibernate Code Generation\" in the "
+"toolbar or \"Run\" menu. Enjoy."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Tutorial.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Tutorial.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Tutorial.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,4041 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Tutorial.xml:10
+#, no-c-format
+msgid "Seam Tutorial"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:12
+#, no-c-format
+msgid "Try the examples"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:13
+#, no-c-format
+msgid ""
+"In this tutorial, we'll assume that you have downloaded JBoss AS 4.0.5 and "
+"installed the EJB 3.0 profile (using the JBoss AS installer). You should "
+"also have a copy of Seam downloaded and extracted to a work directory."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:16
+#, no-c-format
+msgid "The directory structure of each example in Seam follows this pattern:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:21
+#, no-c-format
+msgid ""
+"Web pages, images and stylesheets may be found in <filename>examples/"
+"<replaceable>registration</replaceable>/view</filename>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:26
+#, no-c-format
+msgid ""
+"Resources such as deployment descriptors and data import scripts may be "
+"found in <filename>examples/<replaceable>registration</replaceable>/"
+"resources</filename>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:31
+#, no-c-format
+msgid ""
+"Java source code may be found in <filename>examples/"
+"<replaceable>registration</replaceable>/src</filename>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:36
+#, no-c-format
+msgid ""
+"The Ant build script is <filename>examples/<replaceable>registration</"
+"replaceable>/build.xml</filename>"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:42
+#, no-c-format
+msgid "Running the examples on JBoss AS"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:43
+#, no-c-format
+msgid ""
+"First, make sure you have Ant correctly installed, with <literal>&#36;"
+"ANT_HOME</literal> and <literal>&#36;JAVA_HOME</literal> set correctly. "
+"Next, make sure you set the location of your JBoss AS 4.0.5 installation in "
+"the <literal>build.properties</literal> file in the root folder of your Seam "
+"installation. If you haven't already done so, start JBoss AS now by typing "
+"<literal>bin/run.sh</literal> or <literal>bin/run.bat</literal> in the root "
+"directory of your JBoss installation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:46
+#, no-c-format
+msgid ""
+"By default the examples will deploy to the default configuration of the "
+"server. If the server has been started using an a configuration other than "
+"default then the example <literal>build.xml</literal> file should be "
+"modified to reflect this before building and deploying. Two lines should be "
+"changed in this file:"
+msgstr ""
+
+#. Tag: screen
+#: Tutorial.xml:49
+#, no-c-format
+msgid ""
+"&lt;property name=\"deploy.dir\"           value=\"${jboss.home}/server/"
+"default/deploy\"/&gt;"
+msgstr ""
+
+#. Tag: screen
+#: Tutorial.xml:50
+#, no-c-format
+msgid ""
+"&lt;property name=\"webroot.dir\"         \n"
+"        value=\"${deploy.dir}/jboss-web.deployer/ROOT.war\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:51
+#, no-c-format
+msgid ""
+"Now, build and deploy the example by typing <literal>ant deploy</literal> in "
+"the <filename>examples/<replaceable>registration</replaceable></filename> "
+"directory."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:54
+#, no-c-format
+msgid ""
+"Try it out by accessing <ulink url=\"http://localhost:8080/seam-registration/"
+"\"><literal>http://localhost:8080/seam-registration/</literal></ulink> with "
+"your web browser."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:60
+#, no-c-format
+msgid "Running the examples on Tomcat"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:61
+#, no-c-format
+msgid ""
+"First, make sure you have Ant correctly installed, with <literal>&#36;"
+"ANT_HOME</literal> and <literal>&#36;JAVA_HOME</literal> set correctly. "
+"Next, make sure you set the location of your Tomcat 5.5 installation in the "
+"<literal>build.properties</literal> file in the root folder of your Seam "
+"installation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:64
+#, no-c-format
+msgid ""
+"Now, build and deploy the example by typing <literal>ant deploy.tomcat</"
+"literal> in the <filename>examples/<replaceable>registration</replaceable></"
+"filename> directory."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:67
+#, no-c-format
+msgid "Finally, start Tomcat."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:70
+#, no-c-format
+msgid ""
+"Try it out by accessing <ulink url=\"http://localhost:8080/jboss-seam-"
+"registration/\"><literal>http://localhost:8080/jboss-seam-registration/</"
+"literal></ulink> with your web browser."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:73
+#, no-c-format
+msgid ""
+"When you deploy the example to Tomcat, any EJB3 components will run inside "
+"the JBoss Embeddable EJB3 container, a complete standalone EJB3 container "
+"environment."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:79
+#, no-c-format
+msgid "Running the example tests"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:80
+#, no-c-format
+msgid ""
+"Most of the examples come with a suite of TestNG integration tests. The "
+"easiest way to run the tests is to run <literal>ant testexample</literal> "
+"inside the <filename>examples/<replaceable>registration</replaceable></"
+"filename> directory. It is also possible to run the tests inside your IDE "
+"using the TestNG plugin."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:88
+#, no-c-format
+msgid "Your first Seam application: the registration example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:89
+#, no-c-format
+msgid ""
+"The registration example is a fairly trivial application that lets a new "
+"user store his username, real name and password in the database. The example "
+"isn't intended to show off all of the cool functionality of Seam. However, "
+"it demonstrates the use of an EJB3 session bean as a JSF action listener, "
+"and basic configuration of Seam."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:92
+#, no-c-format
+msgid ""
+"We'll go slowly, since we realize you might not yet be familiar with EJB 3.0."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:95
+#, no-c-format
+msgid ""
+"The start page displays a very basic form with three input fields. Try "
+"filling them in and then submitting the form. This will save a user object "
+"in the database."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:107 Tutorial.xml:424 Tutorial.xml:563 Tutorial.xml:723
+#, no-c-format
+msgid "Understanding the code"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:108
+#, no-c-format
+msgid ""
+"The example is implemented with two JSP pages, one entity bean and one "
+"stateless session bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:119
+#, no-c-format
+msgid "Let's take a look at the code, starting from the \"bottom\"."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:123
+#, no-c-format
+msgid "The entity bean: <literal>User.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:124
+#, no-c-format
+msgid ""
+"We need an EJB entity bean for user data. This class defines "
+"<emphasis>persistence</emphasis> and <emphasis>validation</emphasis> "
+"declaratively, via annotations. It also needs some extra annotations that "
+"define the class as a Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:140
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"user\")\n"
+"@Scope(SESSION)\n"
+"@Table(name=\"users\")\n"
+"public class User implements Serializable\n"
+"{\n"
+"   private static final long serialVersionUID = 1881413500711441951L;\n"
+"   \n"
+"   private String username;\n"
+"   private String password;\n"
+"   private String name;\n"
+"   \n"
+"   public User(String name, String password, String username)\n"
+"   {\n"
+"      this.name = name;\n"
+"      this.password = password;\n"
+"      this.username = username;\n"
+"   }\n"
+"   \n"
+"   public User() {}\n"
+"   \n"
+"   @NotNull @Length(min=5, max=15)\n"
+"   public String getPassword()\n"
+"   {\n"
+"      return password;\n"
+"   }\n"
+"\n"
+"   public void setPassword(String password)\n"
+"   {\n"
+"      this.password = password;\n"
+"   }\n"
+"   \n"
+"   @NotNull\n"
+"   public String getName()\n"
+"   {\n"
+"      return name;\n"
+"   }\n"
+"\n"
+"   public void setName(String name)\n"
+"   {\n"
+"      this.name = name;\n"
+"   }\n"
+"   \n"
+"   @Id @NotNull @Length(min=5, max=15)\n"
+"   public String getUsername()\n"
+"   {\n"
+"      return username;\n"
+"   }\n"
+"\n"
+"   public void setUsername(String username)\n"
+"   {\n"
+"      this.username = username;\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:143
+#, no-c-format
+msgid ""
+"The EJB3 standard <literal>@Entity</literal> annotation indicates that the "
+"<literal>User</literal> class is an entity bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:148
+#, no-c-format
+msgid ""
+"A Seam component needs a <emphasis>component name</emphasis> specified by "
+"the <link linkend=\"name-annotation\"><literal>@Name</literal></link> "
+"annotation. This name must be unique within the Seam application. When JSF "
+"asks Seam to resolve a context variable with a name that is the same as a "
+"Seam component name, and the context variable is currently undefined (null), "
+"Seam will instantiate that component, and bind the new instance to the "
+"context variable. In this case, Seam will instantiate a <literal>User</"
+"literal> the first time JSF encounters a variable named <literal>user</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:153
+#, no-c-format
+msgid ""
+"Whenever Seam instantiates a component, it binds the new instance to a "
+"context variable in the component's <emphasis>default context</emphasis>. "
+"The default context is specified using the <link linkend=\"scope-annotation"
+"\"><literal>@Scope</literal></link> annotation. The <literal>User</literal> "
+"bean is a session scoped component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:158
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Table</literal> annotation indicates that the "
+"<literal>User</literal> class is mapped to the <literal>users</literal> "
+"table."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:163
+#, no-c-format
+msgid ""
+"<literal>name</literal>, <literal>password</literal> and <literal>username</"
+"literal> are the persistent attributes of the entity bean. All of our "
+"persistent attributes define accessor methods. These are needed when this "
+"component is used by JSF in the render response and update model values "
+"phases."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:168
+#, no-c-format
+msgid ""
+"An empty constructor is both required by both the EJB specification and by "
+"Seam."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:173
+#, no-c-format
+msgid ""
+"The <literal>@NotNull</literal> and <literal>@Length</literal> annotations "
+"are part of the Hibernate Validator framework. Seam integrates Hibernate "
+"Validator and lets you use it for data validation (even if you are not using "
+"Hibernate for persistence)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:178
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Id</literal> annotation indicates the primary key "
+"attribute of the entity bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:185
+#, no-c-format
+msgid ""
+"The most important things to notice in this example are the <literal>@Name</"
+"literal> and <literal>@Scope</literal> annotations. These annotations "
+"establish that this class is a Seam component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:188
+#, no-c-format
+msgid ""
+"We'll see below that the properties of our <literal>User</literal> class are "
+"bound to directly to JSF components and are populated by JSF during the "
+"update model values phase. We don't need any tedious glue code to copy data "
+"back and forth between the JSP pages and the entity bean domain model."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:191
+#, no-c-format
+msgid ""
+"However, entity beans shouldn't do transaction management or database "
+"access. So we can't use this component as a JSF action listener. For that we "
+"need a session bean."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:198
+#, no-c-format
+msgid ""
+"The stateless session bean class: <literal>RegisterAction.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:199
+#, no-c-format
+msgid ""
+"Most Seam application use session beans as JSF action listeners (you can use "
+"JavaBeans instead if you like)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:202
+#, no-c-format
+msgid ""
+"We have exactly one JSF action in our application, and one session bean "
+"method attached to it. In this case, we'll use a stateless session bean, "
+"since all the state associated with our action is held by the <literal>User</"
+"literal> bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:205
+#, no-c-format
+msgid "This is the only really interesting code in the example!"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:222
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"register\")\n"
+"public class RegisterAction implements Register\n"
+"{\n"
+"\n"
+"   @In\n"
+"   private User user;\n"
+"   \n"
+"   @PersistenceContext\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @Logger\n"
+"   private Log log;\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = em.createQuery(\n"
+"         \"select username from User where username=#{user.username}\")\n"
+"         .getResultList();\n"
+"         \n"
+"      if (existing.size()==0)\n"
+"      {\n"
+"         em.persist(user);\n"
+"         log.info(\"Registered new user #{user.username}\");\n"
+"         return \"/registered.jsp\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         FacesMessages.instance().add(\"User #{user.username} already exists"
+"\");\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:225
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Stateless</literal> annotation marks this class "
+"as stateless session bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:230
+#, no-c-format
+msgid ""
+"The <link linkend=\"in-annotation\"><literal>@In</literal></link> annotation "
+"marks an attribute of the bean as injected by Seam. In this case, the "
+"attribute is injected from a context variable named <literal>user</literal> "
+"(the instance variable name)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:235
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@PersistenceContext</literal> annotation is used "
+"to inject the EJB3 entity manager."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:240
+#, no-c-format
+msgid ""
+"The Seam <literal>@Logger</literal> annotation is used to inject the "
+"component's <literal>Log</literal> instance."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:245
+#, no-c-format
+msgid ""
+"The action listener method uses the standard EJB3 <literal>EntityManager</"
+"literal> API to interact with the database, and returns the JSF outcome. "
+"Note that, since this is a sesson bean, a transaction is automatically begun "
+"when the <literal>register()</literal> method is called, and committed when "
+"it completes."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:250
+#, no-c-format
+msgid ""
+"Notice that Seam lets you use a JSF EL expression inside EJB-QL. Under the "
+"covers, this results in an ordinary JPA <literal>setParameter()</literal> "
+"call on the standard JPA <literal>Query</literal> object. Nice, huh?"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:255
+#, no-c-format
+msgid ""
+"The <literal>Log</literal> API lets us easily display templated log messages."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:260
+#, no-c-format
+msgid ""
+"JSF action listener methods return a string-valued outcome that determines "
+"what page will be displayed next. A null outcome (or a void action listener "
+"method) redisplays the previous page. In plain JSF, it is normal to always "
+"use a JSF <emphasis>navigation rule</emphasis> to determine the JSF view id "
+"from the outcome. For complex application this indirection is useful and a "
+"good practice. However, for very simple examples like this one, Seam lets "
+"you use the JSF view id as the outcome, eliminating the requirement for a "
+"navigation rule. <emphasis>Note that when you use a view id as an outcome, "
+"Seam always performs a browser redirect.</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:265
+#, no-c-format
+msgid ""
+"Seam provides a number of <emphasis>built-in components</emphasis> to help "
+"solve common problems. The <literal>FacesMessages</literal> component makes "
+"it easy to display templated error or success messages. Built-in Seam "
+"components may be obtained by injection, or by calling an <literal>instance()"
+"</literal> method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:272
+#, no-c-format
+msgid ""
+"Note that we did not explicitly specify a <literal>@Scope</literal> this "
+"time. Each Seam component type has a default scope if not explicitly "
+"specified. For stateless session beans, the default scope is the stateless "
+"context. Actually, <emphasis>all</emphasis> stateless session beans belong "
+"in the stateless context."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:275
+#, no-c-format
+msgid ""
+"Our session bean action listener performs the business and persistence logic "
+"for our mini-application. In more complex applications, we might need to "
+"layer the code and refactor persistence logic into a dedicated data access "
+"component. That's perfectly trivial to do. But notice that Seam does not "
+"force you into any particular strategy for application layering."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:278
+#, no-c-format
+msgid ""
+"Furthermore, notice that our session bean has simultaneous access to context "
+"associated with the web request (the form values in the <literal>User</"
+"literal> object, for example), and state held in transactional resources "
+"(the <literal>EntityManager</literal> object). This is a break from "
+"traditional J2EE architectures. Again, if you are more comfortable with the "
+"traditional J2EE layering, you can certainly implement that in a Seam "
+"application. But for many applications, it's simply not very useful."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:285
+#, no-c-format
+msgid "The session bean local interface: <literal>Register.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:286
+#, no-c-format
+msgid "Naturally, our session bean needs a local interface."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:291
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface Register\n"
+"{\n"
+"   public String register();\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:292
+#, no-c-format
+msgid "That's the end of the Java code. Now onto the deployment descriptors."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:298
+#, no-c-format
+msgid ""
+"The Seam component deployment descriptor: <literal>components.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:299
+#, no-c-format
+msgid ""
+"If you've used many Java frameworks before, you'll be used to having to "
+"declate all your component classes in some kind of XML file that gradually "
+"grows more and more unmanageable as your project matures. You'll be relieved "
+"to know that Seam does not require that application components be "
+"accompanied by XML. Most Seam applications require a very small amount of "
+"XML that does not grow very much as the project gets bigger."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:302
+#, no-c-format
+msgid ""
+"Nevertheless, it is often useful to be able to provide for <emphasis>some</"
+"emphasis> external configuration of <emphasis>some</emphasis> components "
+"(particularly the components built in to Seam). You have a couple of options "
+"here, but the most flexible option is to provide this configuration in a "
+"file called <literal>components.xml</literal>, located in the <literal>WEB-"
+"INF</literal> directory. We'll use the <literal>components.xml</literal> "
+"file to tell Seam how to find our EJB components in JNDI:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:305
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"&gt;\n"
+"     &lt;core:init jndi-pattern=\"@jndiPattern@\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:306
+#, no-c-format
+msgid ""
+"This code configures a property named <literal>jndiPattern</literal> of a "
+"built-in Seam component named <literal>org.jboss.seam.core.init</literal>."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:312
+#, no-c-format
+msgid "The web deployment description: <literal>web.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:313
+#, no-c-format
+msgid ""
+"The presentation layer for our mini-application will be deployed in a WAR. "
+"So we'll need a web deployment descriptor."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:316
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;web-app version=\"2.5\"\n"
+"    xmlns=\"http://java.sun.com/xml/ns/javaee\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n"
+"        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\"&gt;\n"
+"\n"
+"    &lt;!-- Seam --&gt;\n"
+"\n"
+"    &lt;listener&gt;\n"
+"        &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/"
+"listener-class&gt;\n"
+"    &lt;/listener&gt;\n"
+"\n"
+"    &lt;!-- MyFaces --&gt;\n"
+"\n"
+"    &lt;listener&gt;\n"
+"        &lt;listener-class&gt;\n"
+"            org.apache.myfaces.webapp.StartupServletContextListener\n"
+"        &lt;/listener-class&gt;\n"
+"    &lt;/listener&gt;\n"
+"\n"
+"    &lt;context-param&gt;\n"
+"        &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-"
+"name&gt;\n"
+"        &lt;param-value&gt;client&lt;/param-value&gt;\n"
+"    &lt;/context-param&gt;\n"
+"\n"
+"    &lt;servlet&gt;\n"
+"        &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;\n"
+"        &lt;servlet-class&gt;javax.faces.webapp.FacesServlet&lt;/servlet-"
+"class&gt;\n"
+"        &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;\n"
+"    &lt;/servlet&gt;\n"
+"\n"
+"    &lt;!-- Faces Servlet Mapping --&gt;\n"
+"    &lt;servlet-mapping&gt;\n"
+"        &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;\n"
+"        &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;\n"
+"    &lt;/servlet-mapping&gt;\n"
+"\n"
+"&lt;/web-app&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:317
+#, no-c-format
+msgid ""
+"This <literal>web.xml</literal> file configures Seam and MyFaces. The "
+"configuration you see here is pretty much identical in all Seam applications."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:323
+#, no-c-format
+msgid "The JSF configration: <literal>faces-config.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:324
+#, no-c-format
+msgid ""
+"All Seam applications use JSF views as the presentation layer. So we'll need "
+"<literal>faces-config.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:327
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;!DOCTYPE faces-config \n"
+"PUBLIC \"-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN\"\n"
+"                            \"http://java.sun.com/dtd/web-facesconfig_1_0.dtd"
+"\"&gt;\n"
+"&lt;faces-config&gt;\n"
+"\n"
+"    &lt;!-- A phase listener is needed by all Seam applications --&gt;\n"
+"    \n"
+"    &lt;lifecycle&gt;\n"
+"        &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-"
+"listener&gt;\n"
+"    &lt;/lifecycle&gt;\n"
+"\n"
+"&lt;/faces-config&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:328
+#, no-c-format
+msgid ""
+"The <literal>faces-config.xml</literal> file integrates Seam into JSF. Note "
+"that we don't need any JSF managed bean declarations! The managed beans are "
+"the Seam components. In Seam applications, the <literal>faces-config.xml</"
+"literal> is used much less often than in plain JSF."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:331
+#, no-c-format
+msgid ""
+"In fact, once you have all the basic descriptors set up, the <emphasis>only</"
+"emphasis> XML you need to write as you add new functionality to a Seam "
+"application is the navigation rules, and possibly jBPM process definitions. "
+"Seam takes the view that <emphasis>process flow</emphasis> and "
+"<emphasis>configuration data</emphasis> are the only things that truly "
+"belong in XML."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:334
+#, no-c-format
+msgid ""
+"In this simple example, we don't even need a navigation rule, since we "
+"decided to embed the view id in our action code."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:340
+#, no-c-format
+msgid "The EJB deployment descriptor: <literal>ejb-jar.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:341
+#, no-c-format
+msgid ""
+"The <literal>ejb-jar.xml</literal> file integrates Seam with EJB3, by "
+"attaching the <literal>SeamInterceptor</literal> to all session beans in the "
+"archive."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:344
+#, no-c-format
+msgid ""
+"&lt;ejb-jar xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \n"
+"         xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n"
+"         http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd\"\n"
+"         version=\"3.0\"&gt;\n"
+"         \n"
+"   &lt;interceptors&gt;\n"
+"     &lt;interceptor&gt;\n"
+"       &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"     &lt;/interceptor&gt;\n"
+"   &lt;/interceptors&gt;\n"
+"   \n"
+"   &lt;assembly-descriptor&gt;\n"
+"      &lt;interceptor-binding&gt;\n"
+"         &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"         &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"      &lt;/interceptor-binding&gt;\n"
+"   &lt;/assembly-descriptor&gt;\n"
+"   \n"
+"&lt;/ejb-jar&gt;"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:348
+#, no-c-format
+msgid ""
+"The EJB persistence deployment descriptor: <literal>persistence.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:349
+#, no-c-format
+msgid ""
+"The <literal>persistence.xml</literal> file tells the EJB persistence "
+"provider where to find the datasource, and contains some vendor-specific "
+"settings. In this case, enables automatic schema export at startup time."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:352
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;persistence xmlns=\"http://java.sun.com/xml/ns/persistence\" \n"
+"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence \n"
+"             http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd\" \n"
+"             version=\"1.0\"&gt;\n"
+"    &lt;persistence-unit name=\"userDatabase\"&gt;\n"
+"      &lt;provider&gt;org.hibernate.ejb.HibernatePersistence&lt;/"
+"provider&gt;\n"
+"      &lt;jta-data-source&gt;java:/DefaultDS&lt;/jta-data-source&gt;\n"
+"      &lt;properties&gt;\n"
+"         &lt;property name=\"hibernate.hbm2ddl.auto\" value=\"create-drop\"/"
+"&gt;\n"
+"      &lt;/properties&gt;\n"
+"    &lt;/persistence-unit&gt;\n"
+"&lt;/persistence&gt;"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:356
+#, no-c-format
+msgid ""
+"The view: <literal>register.jsp</literal> and <literal>registered.jsp</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:357
+#, no-c-format
+msgid ""
+"The view pages for a Seam application could be implemented using any "
+"technology that supports JSF. In this example we use JSP, since it is "
+"familiar to most developers and since we have minimal requirements here "
+"anyway. (But if you take our advice, you'll use Facelets for your own "
+"applications.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:360
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://jboss.com/products/seam/taglib\" prefix=\"s\" "
+"&#37;&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Register New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;table border=\"0\"&gt;\n"
+"       &lt;s:validateAll&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Username&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputText value=\"#{user.username}\"/&gt;&lt;/"
+"td&gt;\n"
+"         &lt;/tr&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Real Name&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputText value=\"#{user.name}\"/&gt;&lt;/td&gt;\n"
+"         &lt;/tr&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Password&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputSecret value=\"#{user.password}\"/&gt;&lt;/"
+"td&gt;\n"
+"         &lt;/tr&gt;\n"
+"       &lt;/s:validateAll&gt;\n"
+"     &lt;/table&gt;\n"
+"     &lt;h:messages/&gt;\n"
+"     &lt;h:commandButton type=\"submit\" value=\"Register\" action=\"#"
+"{register.register}\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:361
+#, no-c-format
+msgid ""
+"The only thing here that is specific to Seam is the <literal>&lt;s:"
+"validateAll&gt;</literal> tag. This JSF component tells JSF to validate all "
+"the contained input fields against the Hibernate Validator annotations "
+"specified on the entity bean."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:364
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Successfully Registered New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"    Welcome, &lt;h:outputText value=\"#{user.name}\"/&gt;, \n"
+"    you are successfully registered as &lt;h:outputText value=\"#{user."
+"username}\"/&gt;.\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:365
+#, no-c-format
+msgid ""
+"This is a boring old JSP pages using standard JSF components. There is "
+"nothing specific to Seam here."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:371
+#, no-c-format
+msgid "The EAR deployment descriptor: <literal>application.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:372
+#, no-c-format
+msgid ""
+"Finally, since our application is deployed as an EAR, we need a deployment "
+"descriptor there, too."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:375
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;application xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee \n"
+"             http://java.sun.com/xml/ns/javaee/application_5.xsd\"\n"
+"             version=\"5\"&gt;\n"
+"             \n"
+"    &lt;display-name&gt;Seam Registration&lt;/display-name&gt;\n"
+"\n"
+"    &lt;module&gt;\n"
+"        &lt;web&gt;\n"
+"            &lt;web-uri&gt;jboss-seam-registration.war&lt;/web-uri&gt;\n"
+"            &lt;context-root&gt;/seam-registration&lt;/context-root&gt;\n"
+"        &lt;/web&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;ejb&gt;jboss-seam-registration.jar&lt;/ejb&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;jboss-seam.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;el-api.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;el-ri.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    \n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:376
+#, no-c-format
+msgid ""
+"This deployment descriptor links modules in the enterprise archive and binds "
+"the web application to the context root <literal>/seam-registration</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:387 Tutorial.xml:535 Tutorial.xml:698 Tutorial.xml:813
+#, no-c-format
+msgid "How it works"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:388
+#, no-c-format
+msgid ""
+"When the form is submitted, JSF asks Seam to resolve the variable named "
+"<literal>user</literal>. Since there is no value already bound to that name "
+"(in any Seam context), Seam instantiates the <literal>user</literal> "
+"component, and returns the resulting <literal>User</literal> entity bean "
+"instance to JSF after storing it in the Seam session context."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:391
+#, no-c-format
+msgid ""
+"The form input values are now validated against the Hibernate Validator "
+"constraints specified on the <literal>User</literal> entity. If the "
+"constraints are violated, JSF redisplays the page. Otherwise, JSF binds the "
+"form input values to properties of the <literal>User</literal> entity bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:394
+#, no-c-format
+msgid ""
+"Next, JSF asks Seam to resolve the variable named <literal>register</"
+"literal>. Seam finds the <literal>RegisterAction</literal> stateless session "
+"bean in the stateless context and returns it. JSF invokes the "
+"<literal>register()</literal> action listener method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:397
+#, no-c-format
+msgid ""
+"Seam intercepts the method call and injects the <literal>User</literal> "
+"entity from the Seam session context, before continuing the invocation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:400
+#, no-c-format
+msgid ""
+"The <literal>register()</literal> method checks if a user with the entered "
+"username already exists. If so, an error message is queued with the "
+"<literal>FacesMessages</literal> component, and a null outcome is returned, "
+"causing a page redisplay. The <literal>FacesMessages</literal> component "
+"interpolates the JSF expression embedded in the message string and adds a "
+"JSF <literal>FacesMessage</literal> to the view."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:403
+#, no-c-format
+msgid ""
+"If no user with that username exists, the <literal>\"/registered.jsp\"</"
+"literal> outcome triggers a browser redirect to the <literal>registered.jsp</"
+"literal> page. When JSF comes to render the page, it asks Seam to resolve "
+"the variable named <literal>user</literal> and uses property values of the "
+"returned <literal>User</literal> entity from Seam's session scope."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:411
+#, no-c-format
+msgid "Clickable lists in Seam: the messages example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:412
+#, no-c-format
+msgid ""
+"Clickable lists of database search results are such an important part of any "
+"online application that Seam provides special functionality on top of JSF to "
+"make it easier to query data using EJB-QL or HQL and display it as a "
+"clickable list using a JSF <literal>&lt;h:dataTable&gt;</literal>. The "
+"messages example demonstrates this functionality."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:425
+#, no-c-format
+msgid ""
+"The message list example has one entity bean, <literal>Message</literal>, "
+"one session bean, <literal>MessageListBean</literal> and one JSP."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:429
+#, no-c-format
+msgid "The entity bean: <literal>Message.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:430
+#, no-c-format
+msgid ""
+"The <literal>Message</literal> entity defines the title, text, date and time "
+"of a message, and a flag indicating whether the message has been read:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:433
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"message\")\n"
+"@Scope(EVENT)\n"
+"public class Message implements Serializable\n"
+"{\n"
+"   private Long id;\n"
+"   private String title;\n"
+"   private String text;\n"
+"   private boolean read;\n"
+"   private Date datetime;\n"
+"   \n"
+"   @Id @GeneratedValue\n"
+"   public Long getId() {\n"
+"      return id;\n"
+"   }\n"
+"   public void setId(Long id) {\n"
+"      this.id = id;\n"
+"   }\n"
+"   \n"
+"   @NotNull @Length(max=100)\n"
+"   public String getTitle() {\n"
+"      return title;\n"
+"   }\n"
+"   public void setTitle(String title) {\n"
+"      this.title = title;\n"
+"   }\n"
+"   \n"
+"   @NotNull @Lob\n"
+"   public String getText() {\n"
+"      return text;\n"
+"   }\n"
+"   public void setText(String text) {\n"
+"      this.text = text;\n"
+"   }\n"
+"   \n"
+"   @NotNull\n"
+"   public boolean isRead() {\n"
+"      return read;\n"
+"   }\n"
+"   public void setRead(boolean read) {\n"
+"      this.read = read;\n"
+"   }\n"
+"   \n"
+"   @NotNull \n"
+"   @Basic @Temporal(TemporalType.TIMESTAMP)\n"
+"   public Date getDatetime() {\n"
+"      return datetime;\n"
+"   }\n"
+"   public void setDatetime(Date datetime) {\n"
+"      this.datetime = datetime;\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:438
+#, no-c-format
+msgid "The stateful session bean: <literal>MessageManagerBean.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:439
+#, no-c-format
+msgid ""
+"Just like in the previous example, we have a session bean, "
+"<literal>MessageManagerBean</literal>, which defines the action listener "
+"methods for the two buttons on our form. One of the buttons selects a "
+"message from the list, and displays that message. The other button deletes a "
+"message. So far, this is not so different to the previous example."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:442
+#, no-c-format
+msgid ""
+"But <literal>MessageManagerBean</literal> is also responsible for fetching "
+"the list of messages the first time we navigate to the message list page. "
+"There are various ways the user could navigate to the page, and not all of "
+"them are preceded by a JSF action&mdash;the user might have bookmarked the "
+"page, for example. So the job of fetching the message list takes place in a "
+"Seam <emphasis>factory method</emphasis>, instead of in an action listener "
+"method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:445
+#, no-c-format
+msgid ""
+"We want to cache the list of messages in memory between server requests, so "
+"we will make this a stateful session bean."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:459
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Scope(SESSION)\n"
+"@Name(\"messageManager\")\n"
+"public class MessageManagerBean implements Serializable, MessageManager\n"
+"{\n"
+"\n"
+"   @DataModel\n"
+"   private List&lt;Message&gt; messageList;\n"
+"   \n"
+"   @DataModelSelection\n"
+"   @Out(required=false)\n"
+"   private Message message;\n"
+"   \n"
+"   @PersistenceContext(type=EXTENDED)\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @Factory(\"messageList\")\n"
+"   public void findMessages()\n"
+"   {\n"
+"      messageList = em.createQuery(\"from Message msg order by msg.datetime "
+"desc\").getResultList();\n"
+"   }\n"
+"   \n"
+"   public void select()\n"
+"   {\n"
+"      message.setRead(true);\n"
+"   }\n"
+"   \n"
+"   public void delete()\n"
+"   {\n"
+"      messageList.remove(message);\n"
+"      em.remove(message);\n"
+"      message=null;\n"
+"   }\n"
+"   \n"
+"   @Remove @Destroy\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:462
+#, no-c-format
+msgid ""
+"The <literal>@DataModel</literal> annotation exposes an attibute of type "
+"<literal>java.util.List</literal> to the JSF page as an instance of "
+"<literal>javax.faces.model.DataModel</literal>. This allows us to use the "
+"list in a JSF <literal>&lt;h:dataTable&gt;</literal> with clickable links "
+"for each row. In this case, the <literal>DataModel</literal> is made "
+"available in a session context variable named <literal>messageList</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:467
+#, no-c-format
+msgid ""
+"The <literal>@DataModelSelection</literal> annotation tells Seam to inject "
+"the <literal>List</literal> element that corresponded to the clicked link."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:472
+#, no-c-format
+msgid ""
+"The <literal>@Out</literal> annotation then exposes the selected value "
+"directly to the page. So ever time a row of the clickable list is selected, "
+"the <literal>Message</literal> is injected to the attribute of the stateful "
+"bean, and the subsequently <emphasis>outjected</emphasis> to the event "
+"context variable named <literal>message</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:477
+#, no-c-format
+msgid ""
+"This stateful bean has an EJB3 <emphasis>extended persistence context</"
+"emphasis>. The messages retrieved in the query remain in the managed state "
+"as long as the bean exists, so any subsequent method calls to the stateful "
+"bean can update them without needing to make any explicit call to the "
+"<literal>EntityManager</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:482
+#, no-c-format
+msgid ""
+"The first time we navigate to the JSP page, there will be no value in the "
+"<literal>messageList</literal> context variable. The <literal>@Factory</"
+"literal> annotation tells Seam to create an instance of "
+"<literal>MessageManagerBean</literal> and invoke the <literal>findMessages()"
+"</literal> method to initialize the value. We call <literal>findMessages()</"
+"literal> a <emphasis>factory method</emphasis> for <literal>messages</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:487
+#, no-c-format
+msgid ""
+"The <literal>select()</literal> action listener method marks the selected "
+"<literal>Message</literal> as read, and updates it in the database."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:492
+#, no-c-format
+msgid ""
+"The <literal>delete()</literal> action listener method removes the selected "
+"<literal>Message</literal> from the database."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:497
+#, no-c-format
+msgid ""
+"All stateful session bean Seam components <emphasis>must</emphasis> have a "
+"method marked <literal>@Remove @Destroy</literal> to ensure that Seam will "
+"remove the stateful bean when the Seam context ends, and clean up any server-"
+"side state."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:504
+#, no-c-format
+msgid ""
+"Note that this is a session-scoped Seam component. It is associated with the "
+"user login session, and all requests from a login session share the same "
+"instance of the component. (In Seam applications, we usually use session-"
+"scoped components sparingly.)"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:510
+#, no-c-format
+msgid ""
+"The session bean local interface: <literal>MessageManager.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:511
+#, no-c-format
+msgid "All session beans have a business interface, of course."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:514
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface MessageManager\n"
+"{\n"
+"   public void findMessages();\n"
+"   public void select();\n"
+"   public void delete();\n"
+"   public void destroy();\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:515
+#, no-c-format
+msgid "From now on, we won't show local interfaces in our code examples."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:518
+#, no-c-format
+msgid ""
+"Let's skip over <literal>components.xml</literal>, <literal>persistence.xml</"
+"literal>, <literal>web.xml</literal>, <literal>ejb-jar.xml</literal>, "
+"<literal>faces-config.xml</literal> and <literal>application.xml</literal> "
+"since they are much the same as the previous example, and go straight to the "
+"JSP."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:524
+#, no-c-format
+msgid "The view: <literal>messages.jsp</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:525
+#, no-c-format
+msgid ""
+"The JSP page is a straightforward use of the JSF <literal>&lt;h:dataTable&gt;"
+"</literal> component. Again, nothing specific to Seam."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:528
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Messages&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;h2&gt;Message List&lt;/h2&gt;\n"
+"     &lt;h:outputText value=\"No messages to display\" rendered=\"#"
+"{messageList.rowCount==0}\"/&gt;\n"
+"     &lt;h:dataTable var=\"msg\" value=\"#{messageList}\" rendered=\"#"
+"{messageList.rowCount&gt;0}\"&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Read\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:selectBooleanCheckbox value=\"#{msg.read}\" disabled=\"true"
+"\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Title\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:commandLink value=\"#{msg.title}\" action=\"#"
+"{messageManager.select}\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Date/Time\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:outputText value=\"#{msg.datetime}\"&gt;\n"
+"              &lt;f:convertDateTime type=\"both\" dateStyle=\"medium\" "
+"timeStyle=\"short\"/&gt;\n"
+"           &lt;/h:outputText&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;h:commandButton value=\"Delete\" action=\"#{messageManager."
+"delete}\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"     &lt;/h:dataTable&gt;\n"
+"     &lt;h3&gt;&lt;h:outputText value=\"#{message.title}\"/&gt;&lt;/h3&gt;\n"
+"     &lt;div&gt;&lt;h:outputText value=\"#{message.text}\"/&gt;&lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:536
+#, no-c-format
+msgid ""
+"The first time we navigate to the <literal>messages.jsp</literal> page, "
+"whether by a JSF postback (faces request) or a direct browser GET request "
+"(non-faces request), the page will try to resolve the <literal>messageList</"
+"literal> context variable. Since this context variable is not initialized, "
+"Seam will call the factory method <literal>findMessages()</literal>, which "
+"performs a query against the database and results in a <literal>DataModel</"
+"literal> being outjected. This <literal>DataModel</literal> provides the row "
+"data needed for rendering the <literal>&lt;h:dataTable&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:539
+#, no-c-format
+msgid ""
+"When the user clicks the <literal>&lt;h:commandLink&gt;</literal>, JSF calls "
+"the <literal>select()</literal> action listener. Seam intercepts this call "
+"and injects the selected row data into the <literal>message</literal> "
+"attribute of the <literal>messageManager</literal> component. The action "
+"listener fires, marking the selected <literal>Message</literal> as read. At "
+"the end of the call, Seam outjects the selected <literal>Message</literal> "
+"to the context variable named <literal>message</literal>. Next, the EJB "
+"container commits the transaction, and the change to the <literal>Message</"
+"literal> is flushed to the database. Finally, the page is re-rendered, "
+"redisplaying the message list, and displaying the selected message below it."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:542
+#, no-c-format
+msgid ""
+"If the user clicks the <literal>&lt;h:commandButton&gt;</literal>, JSF calls "
+"the <literal>delete()</literal> action listener. Seam intercepts this call "
+"and injects the selected row data into the <literal>message</literal> "
+"attribute of the <literal>messageList</literal> component. The action "
+"listener fires, removing the selected <literal>Message</literal> from the "
+"list, and also calling <literal>remove()</literal> on the "
+"<literal>EntityManager</literal>. At the end of the call, Seam refreshes the "
+"<literal>messageList</literal> context variable and clears the context "
+"variable named <literal>message</literal>. The EJB container commits the "
+"transaction, and deletes the <literal>Message</literal> from the database. "
+"Finally, the page is re-rendered, redisplaying the message list."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:550
+#, no-c-format
+msgid "Seam and jBPM: the todo list example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:551
+#, no-c-format
+msgid ""
+"jBPM provides sophisticated functionality for workflow and task management. "
+"To get a small taste of how jBPM integrates with Seam, we'll show you a "
+"simple \"todo list\" application. Since managing lists of tasks is such core "
+"functionality for jBPM, there is hardly any Java code at all in this example."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:564
+#, no-c-format
+msgid ""
+"The center of this example is the jBPM process definition. There are also "
+"two JSPs and two trivial JavaBeans (There was no reason to use session "
+"beans, since they do not access the database, or have any other "
+"transactional behavior). Let's start with the process definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:575
+#, no-c-format
+msgid ""
+"&lt;process-definition name=\"todo\"&gt;\n"
+"   \n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"todo\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;task-node name=\"todo\"&gt;\n"
+"      &lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"         &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"      &lt;/task&gt;\n"
+"      &lt;transition to=\"done\"/&gt;\n"
+"   &lt;/task-node&gt;\n"
+"   \n"
+"   &lt;end-state name=\"done\"/&gt;\n"
+"   \n"
+"&lt;/process-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:578
+#, no-c-format
+msgid ""
+"The <literal>&lt;start-state&gt;</literal> node represents the logical start "
+"of the process. When the process starts, it immediately transitions to the "
+"<literal>todo</literal> node."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:583
+#, no-c-format
+msgid ""
+"The <literal>&lt;task-node&gt;</literal> node represents a <emphasis>wait "
+"state</emphasis>, where business process execution pauses, waiting for one "
+"or more tasks to be performed."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:588
+#, no-c-format
+msgid ""
+"The <literal>&lt;task&gt;</literal> element defines a task to be performed "
+"by a user. Since there is only one task defined on this node, when it is "
+"complete, execution resumes, and we transition to the end state. The task "
+"gets its description from a Seam component named <literal>todoList</literal> "
+"(one of the JavaBeans)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:593
+#, no-c-format
+msgid ""
+"Tasks need to be assigned to a user or group of users when they are created. "
+"In this case, the task is assigned to the current user, which we get from a "
+"built-in Seam component named <literal>actor</literal>. Any Seam component "
+"may be used to perform task assignment."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:598
+#, no-c-format
+msgid ""
+"The <literal>&lt;end-state&gt;</literal> node defines the logical end of the "
+"business process. When execution reaches this node, the process instance is "
+"destroyed."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:605
+#, no-c-format
+msgid ""
+"If we view this process definition using the process definition editor "
+"provided by JBossIDE, this is what it looks like:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:616
+#, no-c-format
+msgid ""
+"This document defines our <emphasis>business process</emphasis> as a graph "
+"of nodes. This is the most trivial possible business process: there is one "
+"<emphasis>task</emphasis> to be performed, and when that task is complete, "
+"the business process ends."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:619
+#, no-c-format
+msgid ""
+"The first JavaBean handles the login screen <literal>login.jsp</literal>. "
+"Its job is just to initialize the jBPM actor id using the <literal>actor</"
+"literal> component. (In a real application, it would also need to "
+"authenticate the user.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:622
+#, no-c-format
+msgid ""
+"@Name(\"login\")\n"
+"public class Login {\n"
+"   \n"
+"   @In\n"
+"   private Actor actor;\n"
+"   \n"
+"   private String user;\n"
+"\n"
+"   public String getUser() {\n"
+"      return user;\n"
+"   }\n"
+"\n"
+"   public void setUser(String user) {\n"
+"      this.user = user;\n"
+"   }\n"
+"   \n"
+"   public String login()\n"
+"   {\n"
+"      actor.setId(user);\n"
+"      return \"/todo.jsp\";\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:623
+#, no-c-format
+msgid ""
+"Here we see the use of <literal>@In</literal> to inject the built-in "
+"<literal>Actor</literal> component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:626
+#, no-c-format
+msgid "The JSP itself is trivial:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:629
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"&#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"&#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Login&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Login&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    &lt;h:form&gt;\n"
+"      &lt;div&gt;\n"
+"        &lt;h:inputText value=\"#{login.user}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Login\" action=\"#{login.login}\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"    &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:630
+#, no-c-format
+msgid ""
+"The second JavaBean is responsible for starting business process instances, "
+"and ending tasks."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:639
+#, no-c-format
+msgid ""
+"@Name(\"todoList\")\n"
+"public class TodoList {\n"
+"   \n"
+"   private String description;\n"
+"   \n"
+"   public String getDescription()\n"
+"   {\n"
+"      return description;\n"
+"   }\n"
+"\n"
+"   public void setDescription(String description) {\n"
+"      this.description = description;\n"
+"   }\n"
+"   \n"
+"   @CreateProcess(definition=\"todo\")\n"
+"   public void createTodo() {}\n"
+"   \n"
+"   @StartTask @EndTask\n"
+"   public void done() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:642
+#, no-c-format
+msgid ""
+"The description property accepts user input form the JSP page, and exposes "
+"it to the process definition, allowing the task description to be set."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:647
+#, no-c-format
+msgid ""
+"The Seam <literal>@CreateProcess</literal> annotation creates a new jBPM "
+"process instance for the named process definition."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:652
+#, no-c-format
+msgid ""
+"The Seam <literal>@StartTask</literal> annotation starts work on a task. The "
+"<literal>@EndTask</literal> ends the task, and allows the business process "
+"execution to resume."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:659
+#, no-c-format
+msgid ""
+"In a more realistic example, <literal>@StartTask</literal> and "
+"<literal>@EndTask</literal> would not appear on the same method, because "
+"there is usually work to be done using the application in order to complete "
+"the task."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:662
+#, no-c-format
+msgid "Finally, the meat of the application is in <literal>todo.jsp</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:665
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://jboss.com/products/seam/taglib\" prefix=\"s\" "
+"&#37;&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Todo List&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Todo List&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"   &lt;h:form id=\"list\"&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:outputText value=\"There are no todo items.\" rendered=\"#"
+"{empty \n"
+"             taskInstanceList}\"/&gt;\n"
+"         &lt;h:dataTable value=\"#{taskInstanceList}\" var=\"task\" rendered="
+"\"#{not empty taskInstanceList}\"&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Description\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.description}\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Created\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:outputText value=\"#{task.taskMgmtInstance."
+"processInstance.start}\"&gt;\n"
+"                    &lt;f:convertDateTime type=\"date\"/&gt;\n"
+"                &lt;/h:outputText&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Priority\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.priority}\" style=\"width: 30"
+"\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Due Date\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.dueDate}\" style=\"width: 100"
+"\"&gt;\n"
+"                    &lt;f:convertDateTime type=\"date\" dateStyle=\"short\"/"
+"&gt;\n"
+"                &lt;/h:inputText&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;s:button value=\"Done\" action=\"#{todoList.done}\" "
+"taskInstance=\"#{task}\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"         &lt;/h:dataTable&gt;\n"
+"      &lt;/div&gt;\n"
+"      &lt;div&gt;\n"
+"      &lt;h:messages/&gt;\n"
+"      &lt;/div&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:commandButton value=\"Update Items\" action=\"update\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"   &lt;h:form id=\"new\"&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:inputText value=\"#{todoList.description}\"/&gt;\n"
+"         &lt;h:commandButton value=\"Create New Item\" action=\"#{todoList."
+"createTodo}\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:666
+#, no-c-format
+msgid "Let's take this one piece at a time."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:669
+#, no-c-format
+msgid ""
+"The page renders a list of tasks, which it gets from a built-in Seam "
+"component named <literal>taskInstanceList</literal>. The list is defined "
+"inside a JSF form."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:672
+#, no-c-format
+msgid ""
+"&lt;h:form id=\"list\"&gt;\n"
+"   &lt;div&gt;\n"
+"      &lt;h:outputText value=\"There are no todo items.\" rendered=\"#{empty "
+"taskInstanceList}\"/&gt;\n"
+"      &lt;h:dataTable value=\"#{taskInstanceList}\" var=\"task\" rendered=\"#"
+"{not empty taskInstanceList}\"&gt;\n"
+"         ...\n"
+"      &lt;/h:dataTable&gt;\n"
+"   &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:673
+#, no-c-format
+msgid ""
+"Each element of the list is an instance of the jBPM class "
+"<literal>TaskInstance</literal>. The following code simply displays the "
+"interesting properties of each task in the list. For the description, "
+"priority and due date, we use input controls, to allow the user to update "
+"these values."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:676
+#, no-c-format
+msgid ""
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"       &lt;h:outputText value=\"Description\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.description}\"/&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Created\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:outputText value=\"#{task.taskMgmtInstance.processInstance.start}"
+"\"&gt;\n"
+"        &lt;f:convertDateTime type=\"date\"/&gt;\n"
+"    &lt;/h:outputText&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Priority\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.priority}\" style=\"width: 30\"/&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Due Date\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.dueDate}\" style=\"width: 100\"&gt;\n"
+"        &lt;f:convertDateTime type=\"date\" dateStyle=\"short\"/&gt;\n"
+"    &lt;/h:inputText&gt;\n"
+"&lt;/h:column&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:677
+#, no-c-format
+msgid ""
+"This button ends the task by calling the action method annotated "
+"<literal>@StartTask @EndTask</literal>. It passes the task id to Seam as a "
+"request parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:680
+#, no-c-format
+msgid ""
+"&lt;h:column&gt;\n"
+"    &lt;s:button value=\"Done\" action=\"#{todoList.done}\" taskInstance=\"#"
+"{task}\"/&gt;\n"
+"&lt;/h:column&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:681
+#, no-c-format
+msgid ""
+"(Note that this is using a Seam <literal>&lt;s:button&gt;</literal> JSF "
+"control from the <literal>seam-ui.jar</literal> package.)"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:684
+#, no-c-format
+msgid ""
+"This button is used to update the properties of the tasks. When the form is "
+"submitted, Seam and jBPM will make any changes to the tasks persistent. "
+"There is no need for any action listener method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:687
+#, no-c-format
+msgid "&lt;h:commandButton value=\"Update Items\" action=\"update\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:688
+#, no-c-format
+msgid ""
+"A second form on the page is used to create new items, by calling the action "
+"method annotated <literal>@CreateProcess</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:691
+#, no-c-format
+msgid ""
+"&lt;h:form id=\"new\"&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:inputText value=\"#{todoList.description}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Create New Item\" action=\"#{todoList."
+"createTodo}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:692
+#, no-c-format
+msgid ""
+"There are several other files needed for the example, but they are just "
+"standard jBPM and Seam configuration and not very interesting."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:699 Tutorial.xml:814 Tutorial.xml:1157 Tutorial.xml:1178
+#: Tutorial.xml:1191
+#, no-c-format
+msgid "TODO"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:707
+#, no-c-format
+msgid "Seam pageflow: the numberguess example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:708
+#, no-c-format
+msgid ""
+"For Seam applications with relatively freeform (ad hoc) navigation, JSF/Seam "
+"navigation rules are a perfectly good way to define the page flow. For "
+"applications with a more constrained style of navigation, especially for "
+"user interfaces which are more stateful, navigation rules make it difficult "
+"to really understand the flow of the system. To understand the flow, you "
+"need to piece it together from the view pages, the actions and the "
+"navigation rules."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:711
+#, no-c-format
+msgid ""
+"Seam allows you to use a jPDL process definition to define pageflow. The "
+"simple number guessing example shows how this is done."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:724
+#, no-c-format
+msgid ""
+"The example is implemented using one JavaBean, three JSP pages and a jPDL "
+"pageflow definition. Let's begin with the pageflow:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:734
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"numberGuess\"&gt;\n"
+"   \n"
+"   &lt;start-page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"          &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"      &lt;/transition&gt;\n"
+"   &lt;/start-page&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess."
+"correctGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateRemainingGuesses\" expression=\"#{numberGuess."
+"lastGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"lose\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"displayGuess\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"lose\" view-id=\"/lose.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:737
+#, no-c-format
+msgid ""
+"The <literal>&lt;page&gt;</literal> element defines a wait state where the "
+"system displays a particular JSF view and waits for user input. The "
+"<literal>view-id</literal> is the same JSF view id used in plain JSF "
+"navigation rules. The <literal>redirect</literal> attribute tells Seam to "
+"use post-then-redirect when navigating to the page. (This results in "
+"friendly browser URLs.)"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:742
+#, no-c-format
+msgid ""
+"The <literal>&lt;transition&gt;</literal> element names a JSF outcome. The "
+"transition is triggered when a JSF action results in that outcome. Execution "
+"will then proceed to the next node of the pageflow graph, after invocation "
+"of any jBPM transition actions."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:747
+#, no-c-format
+msgid ""
+"A transition <literal>&lt;action&gt;</literal> is just like a JSF action, "
+"except that it occurs when a jBPM transition occurs. The transition action "
+"can invoke any Seam component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:752
+#, no-c-format
+msgid ""
+"A <literal>&lt;decision&gt;</literal> node branches the pageflow, and "
+"determines the next node to execute by evaluating a JSF EL expression."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:759
+#, no-c-format
+msgid "Here is what the pageflow looks like in the JBossIDE pageflow editor:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:770
+#, no-c-format
+msgid ""
+"Now that we have seen the pageflow, it is very, very easy to understand the "
+"rest of the application!"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:773
+#, no-c-format
+msgid ""
+"Here is the main page of the application, <literal>numberGuess.jsp</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:776
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"&#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"&#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Guess a number...&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Guess a number...&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    &lt;h:form&gt;\n"
+"        &lt;h:outputText value=\"Higher!\" rendered=\"#{numberGuess."
+"randomNumber&gt;numberGuess.currentGuess}\" /&gt;\n"
+"        &lt;h:outputText value=\"Lower!\" rendered=\"#{numberGuess."
+"randomNumber&lt;numberGuess.currentGuess}\" /&gt;\n"
+"        &lt;br /&gt;\n"
+"        I'm thinking of a number between &lt;h:outputText value=\"#"
+"{numberGuess.smallest}\" /&gt; and \n"
+"        &lt;h:outputText value=\"#{numberGuess.biggest}\" /&gt;. You have \n"
+"        &lt;h:outputText value=\"#{numberGuess.remainingGuesses}\" /&gt; "
+"guesses.\n"
+"        &lt;br /&gt;\n"
+"        Your guess: \n"
+"        &lt;h:inputText value=\"#{numberGuess.currentGuess}\" id=\"guess\" "
+"required=\"true\"&gt;\n"
+"            &lt;f:validateLongRange\n"
+"                maximum=\"#{numberGuess.biggest}\" \n"
+"                minimum=\"#{numberGuess.smallest}\"/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"        &lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"guess"
+"\" /&gt;\n"
+"        &lt;br/&gt;\n"
+"        &lt;h:message for=\"guess\" style=\"color: red\"/&gt;\n"
+"    &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:777
+#, no-c-format
+msgid ""
+"Notice how the command button names the <literal>guess</literal> transition "
+"instead of calling an action directly."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:780
+#, no-c-format
+msgid "The <literal>win.jsp</literal> page is predictable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:783
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"&#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"&#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;You won!&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;You won!&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    Yes, the answer was &lt;h:outputText value=\"#{numberGuess.currentGuess}"
+"\" /&gt;.\n"
+"    It took you &lt;h:outputText value=\"#{numberGuess.guessCount}\" /&gt; "
+"guesses.\n"
+"    Would you like to &lt;a href=\"numberGuess.seam\"&gt;play again&lt;/"
+"a&gt;?\n"
+"  &lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:784
+#, no-c-format
+msgid ""
+"As is <literal>lose.jsp</literal> (which I can't be bothered copy/pasting). "
+"Finally, the JavaBean Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:792
+#, no-c-format
+msgid ""
+"@Name(\"numberGuess\")\n"
+"@Scope(ScopeType.CONVERSATION)\n"
+"public class NumberGuess {\n"
+"   \n"
+"   private int randomNumber;\n"
+"   private Integer currentGuess;\n"
+"   private int biggest;\n"
+"   private int smallest;\n"
+"   private int guessCount;\n"
+"   private int maxGuesses;\n"
+"   \n"
+"   @Create \n"
+"   @Begin(pageflow=\"numberGuess\")\n"
+"   public void begin()\n"
+"   {\n"
+"      randomNumber = new Random().nextInt(100);\n"
+"      guessCount = 0;\n"
+"      biggest = 100;\n"
+"      smallest = 1;\n"
+"   }\n"
+"   \n"
+"   public void setCurrentGuess(Integer guess)\n"
+"   {\n"
+"      this.currentGuess = guess;\n"
+"   }\n"
+"   \n"
+"   public Integer getCurrentGuess()\n"
+"   {\n"
+"      return currentGuess;\n"
+"   }\n"
+"   \n"
+"   public void guess()\n"
+"   {\n"
+"      if (currentGuess&gt;randomNumber)\n"
+"      {\n"
+"         biggest = currentGuess - 1;\n"
+"      }\n"
+"      if (currentGuess&lt;randomNumber)\n"
+"      {\n"
+"         smallest = currentGuess + 1;\n"
+"      }\n"
+"      guessCount ++;\n"
+"   }\n"
+"   \n"
+"   public boolean isCorrectGuess()\n"
+"   {\n"
+"      return currentGuess==randomNumber;\n"
+"   }\n"
+"   \n"
+"   public int getBiggest()\n"
+"   {\n"
+"      return biggest;\n"
+"   }\n"
+"   \n"
+"   public int getSmallest()\n"
+"   {\n"
+"      return smallest;\n"
+"   }\n"
+"   \n"
+"   public int getGuessCount()\n"
+"   {\n"
+"      return guessCount;\n"
+"   }\n"
+"   \n"
+"   public boolean isLastGuess()\n"
+"   {\n"
+"      return guessCount==maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getRemainingGuesses() {\n"
+"      return maxGuesses-guessCount;\n"
+"   }\n"
+"\n"
+"   public void setMaxGuesses(int maxGuesses) {\n"
+"      this.maxGuesses = maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getMaxGuesses() {\n"
+"      return maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getRandomNumber() {\n"
+"      return randomNumber;\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:795
+#, no-c-format
+msgid ""
+"The first time a JSP page asks for a <literal>numberGuess</literal> "
+"component, Seam will create a new one for it, and the <literal>@Create</"
+"literal> method will be invoked, allowing the component to initialize itself."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:800
+#, no-c-format
+msgid ""
+"The <literal>@Begin</literal> annotation starts a Seam "
+"<emphasis>conversation</emphasis> (much more about that later), and "
+"specifies the pageflow definition to use for the conversation's page flow."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:807
+#, no-c-format
+msgid ""
+"As you can see, this Seam component is pure business logic! It doesn't need "
+"to know anything at all about the user interaction flow. This makes the "
+"component potentially more reuseable."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:822
+#, no-c-format
+msgid "A complete Seam application: the Hotel Booking example"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:824
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:825
+#, no-c-format
+msgid ""
+"The booking application is a complete hotel room reservation system "
+"incorporating the following features:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:830
+#, no-c-format
+msgid "User registration"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:835
+#, no-c-format
+msgid "Login"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:840
+#, no-c-format
+msgid "Logout"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:845
+#, no-c-format
+msgid "Set password"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:850
+#, no-c-format
+msgid "Hotel search"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:855
+#, no-c-format
+msgid "Hotel selection"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:860
+#, no-c-format
+msgid "Room reservation"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:865
+#, no-c-format
+msgid "Reservation confirmation"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:870
+#, no-c-format
+msgid "Existing reservation list"
+msgstr ""
+
+#. Tag: screeninfo
+#: Tutorial.xml:875
+#, no-c-format
+msgid "Booking example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:883
+#, no-c-format
+msgid ""
+"The booking application uses JSF, EJB 3.0 and Seam, together with Facelets "
+"for the view. There is also a port of this application to JSF, Facelets, "
+"Seam, JavaBeans and Hibernate3."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:886
+#, no-c-format
+msgid ""
+"One of the things you'll notice if you play with this application for long "
+"enough is that it is extremely <emphasis>robust</emphasis>. You can play "
+"with back buttons and browser refresh and opening multiple windows and "
+"entering nonsensical data as much as you like and you will find it very "
+"difficult to make the application crash. You might think that we spent weeks "
+"testing and fixing bugs to achive this. Actually, this is not the case. Seam "
+"was designed to make it very straightforward to build robust web "
+"applications and a lot of robustness that you are probably used to having to "
+"code yourself comes naturally and automatically with Seam."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:889
+#, no-c-format
+msgid ""
+"As you browse the sourcecode of the example application, and learn how the "
+"application works, observe how the declarative state management and "
+"integrated validation has been used to achieve this robustness."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:895
+#, no-c-format
+msgid "Overview of the booking example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:896
+#, no-c-format
+msgid ""
+"The project structure is identical to the previous one, to install and "
+"deploy this application, please refer to <xref linkend=\"Seam_Tutorial-"
+"Try_the_examples\"/>. Once you've successfully started the application, you "
+"can access it by pointing your browser to <ulink url=\"http://localhost:8080/"
+"seam-booking/\"><literal>http://localhost:8080/seam-booking/</literal></"
+"ulink>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:899
+#, no-c-format
+msgid ""
+"Just ten classes (plus six session beans local interfaces and 1 annotation "
+"interface) where used to implement this application. Six session bean action "
+"listeners contain all the business logic for the listed features."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:904
+#, no-c-format
+msgid ""
+"<literal>BookingListAction</literal> retrieves existing bookings for the "
+"currently logged in user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:907
+#, no-c-format
+msgid ""
+"<literal>ChangePasswordAction</literal> updates the password of the "
+"currently logged in user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:910
+#, no-c-format
+msgid ""
+"<literal>HotelBookingAction</literal> implements the core functionality of "
+"the application: hotel room searching, selection, booking and booking "
+"confirmation. This functionality is implemented as a <emphasis>conversation</"
+"emphasis>, so this is the most interesting class in the application."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:913
+#, no-c-format
+msgid ""
+"<literal>LoginAction</literal> validates the login details and retrieves the "
+"logged in user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:916
+#, no-c-format
+msgid "<literal>LogoutAction</literal> ends the login session."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:919
+#, no-c-format
+msgid "<literal>RegisterAction</literal> registers a new system user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:922
+#, no-c-format
+msgid "Three entity beans implement the application's persistent domain model."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:927
+#, no-c-format
+msgid "<literal>Hotel</literal> is an entity bean that represent a hotel"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:930
+#, no-c-format
+msgid ""
+"<literal>Booking</literal> is an entity bean that represents an existing "
+"booking"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:933
+#, no-c-format
+msgid ""
+"<literal>User</literal> is an entity bean to represents a user who can make "
+"hotel bookings"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:936
+#, no-c-format
+msgid ""
+"Finally, the <literal>LoggedIn</literal> annotation and the "
+"<literal>LoggedInInterceptor</literal> are used to protect actions that "
+"require a logged in user."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:942
+#, no-c-format
+msgid "Understanding Seam conversations"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:943
+#, no-c-format
+msgid ""
+"We encourage you browse the sourcecode at your pleasure. In this tutorial "
+"we'll concentrate upon one particular piece of functionality: hotel search, "
+"selection, booking and confirmation. From the point of view of the user, "
+"everything from selecting a hotel to confirming a booking is one continuous "
+"unit of work, a <emphasis>conversation</emphasis>. Searching, however, is "
+"<emphasis>not</emphasis> part of the conversation. The user can select "
+"multiple hotels from the same search results page, in different browser tabs."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:946
+#, no-c-format
+msgid ""
+"Most web application architectures have no first class construct to "
+"represent a conversation. This causes enormous problems managing state "
+"associated with the conversation. Usually, Java web applications use a "
+"combination of two techniques: first, some state is thrown into the "
+"<literal>HttpSession</literal>; second, persistable state is flushed to the "
+"database after every request, and reconstructed from the database at the "
+"beginning of each new request."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:949
+#, no-c-format
+msgid ""
+"Since the database is the least scalable tier, this often results in an "
+"utterly unacceptable lack of scalability. Added latency is also a problem, "
+"due to the extra traffic to and from the database on every request. To "
+"reduce this redundant traffic, Java applications often introduce a data "
+"(second-level) cache that keeps commonly accessed data between requests. "
+"This cache is necessarily inefficient, because invalidation is based upon an "
+"LRU policy instead of being based upon when the user has finished working "
+"with the data. Furthermore, because the cache is shared between many "
+"concurrent transactions, we've introduced a whole raft of problem's "
+"associated with keeping the cached state consistent with the database."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:952
+#, no-c-format
+msgid ""
+"Now consider the state held in the <literal>HttpSession</literal>. By very "
+"careful programming, we might be able to control the size of the session "
+"data. This is a lot more difficult than it sounds, since web browsers permit "
+"ad hoc non-linear navigation. But suppose we suddenly discover a system "
+"requirement that says that a user is allowed to have <emphasis>mutiple "
+"concurrent conversations</emphasis>, halfway through the development of the "
+"system (this has happened to me). Developing mechanisms to isolate session "
+"state associated with different concurrent conversations, and incorporating "
+"failsafes to ensure that conversation state is destroyed when the user "
+"aborts one of the conversations by closing a browser window or tab is not "
+"for the faint hearted (I've implemented this stuff twice so far, once for a "
+"client application, once for Seam, but I'm famously psychotic)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:955
+#, no-c-format
+msgid "Now there is a better way."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:958
+#, no-c-format
+msgid ""
+"Seam introduces the <emphasis>conversation context</emphasis> as a first "
+"class construct. You can safely keep conversational state in this context, "
+"and be assured that it will have a well-defined lifecycle. Even better, you "
+"won't need to be continually pushing data back and forth between the "
+"application server and the database, since the conversation context is a "
+"natural cache of data that the user is currently working with."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:961
+#, no-c-format
+msgid ""
+"Usually, the components we keep in the conversation context are stateful "
+"session beans. (We can also keep entity beans and JavaBeans in the "
+"conversation context.) There is an ancient canard in the Java community that "
+"stateful session beans are a scalability killer. This may have been true in "
+"1998 when WebFoobar 1.0 was released. It is no longer true today. "
+"Application servers like JBoss 4.0 have extremely sophisticated mechanisms "
+"for stateful session bean state replication. (For example, the JBoss EJB3 "
+"container performs fine-grained replication, replicating only those bean "
+"attribute values which actually changed.) Note that all the traditional "
+"technical arguments for why stateful beans are inefficient apply equally to "
+"the <literal>HttpSession</literal>, so the practice of shifting state from "
+"business tier stateful session bean components to the web session to try and "
+"improve performance is unbelievably misguided. It is certainly possible to "
+"write unscalable applications using stateful session beans, by using "
+"stateful beans incorrectly, or by using them for the wrong thing. But that "
+"doesn't mean you should <emphasis>never</emphasis> use them. Anyway, Seam "
+"guides you toward a safe usage model. Welcome to 2005."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:964
+#, no-c-format
+msgid "OK, I'll stop ranting now, and get back to the tutorial."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:967
+#, no-c-format
+msgid ""
+"The booking example application shows how stateful components with different "
+"scopes can collaborate together to achieve complex behaviors. The main page "
+"of the booking application allows the user to search for hotels. The search "
+"results are kept in the Seam session scope. When the user navigates to one "
+"of these hotels, a conversation begins, and a conversation scoped component "
+"calls back to the session scoped component to retrieve the selected hotel."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:970
+#, no-c-format
+msgid ""
+"The booking example also demonstrates the use of Ajax4JSF to implement rich "
+"client behavior without the use of handwritten JavaScript."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:973
+#, no-c-format
+msgid ""
+"The search functionality is implemented using a session-scope stateful "
+"session bean, similar to the one we saw in the message list example above."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:983
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"hotelSearch\")\n"
+"@Scope(ScopeType.SESSION)\n"
+"@LoggedIn\n"
+"public class HotelSearchingAction implements HotelSearching\n"
+"{\n"
+"   \n"
+"   @PersistenceContext\n"
+"   private EntityManager em;\n"
+"   \n"
+"   private String searchString;\n"
+"   private int pageSize = 10;\n"
+"   private int page;\n"
+"   \n"
+"   @DataModel\n"
+"   private List&lt;Hotel&gt; hotels;\n"
+"   \n"
+"   public String find()\n"
+"   {\n"
+"      page = 0;\n"
+"      queryHotels();   \n"
+"      return \"main\";\n"
+"   }\n"
+"\n"
+"   public String nextPage()\n"
+"   {\n"
+"      page++;\n"
+"      queryHotels();\n"
+"      return \"main\";\n"
+"   }\n"
+"      \n"
+"   private void queryHotels()\n"
+"   {\n"
+"      String searchPattern = searchString==null ? \"&#37;\" : '&#37;' + \n"
+"          searchString.toLowerCase().replace('*', '&#37;') + '&#37;';\n"
+"      hotels = em.createQuery(\"select h from Hotel h where lower(h.name) "
+"like\n"
+"          :search or lower(h.city) like :search \n"
+"          or lower(h.zip) like :search or lower(h.address) like :search\")\n"
+"            .setParameter(\"search\", searchPattern)\n"
+"            .setMaxResults(pageSize)\n"
+"            .setFirstResult( page * pageSize )\n"
+"            .getResultList();\n"
+"   }\n"
+"   \n"
+"   public boolean isNextPageAvailable()\n"
+"   {\n"
+"      return hotels!=null &amp;&amp; hotels.size()==pageSize;\n"
+"   }\n"
+"   \n"
+"   public int getPageSize() {\n"
+"      return pageSize;\n"
+"   }\n"
+"\n"
+"   public void setPageSize(int pageSize) {\n"
+"      this.pageSize = pageSize;\n"
+"   }\n"
+"\n"
+"   public String getSearchString()\n"
+"   {\n"
+"      return searchString;\n"
+"   }\n"
+"\n"
+"   public void setSearchString(String searchString)\n"
+"   {\n"
+"      this.searchString = searchString;\n"
+"   }\n"
+"   \n"
+"   @Destroy @Remove\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:986
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Stateful</literal> annotation identifies this "
+"class as a stateful session bean. Stateful session beans are scoped to the "
+"conversation context by default."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:991
+#, no-c-format
+msgid ""
+"The <literal>@LoggedIn</literal> annotation applies a custom Seam "
+"interceptor to the component. This works because <literal>@LoggedIn</"
+"literal> is marked with an <literal>@Interceptor</literal> meta-annotation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:996
+#, no-c-format
+msgid ""
+"The <link linkend=\"datamodel-annotation\"><literal>@DataModel</literal></"
+"link> annotation exposes a <literal>List</literal> as a JSF "
+"<literal>ListDataModel</literal>. This makes it easy to implement clickable "
+"lists for search screens. In this case, the list of hotels is exposed to the "
+"page as a <literal>ListDataModel</literal> in the conversation variable "
+"named <literal>hotels</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1001
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Remove</literal> annotation specifies that a "
+"stateful session bean should be removed and its state destroyed after "
+"invocation of the annotated method. In Seam, all stateful session beans "
+"should define a method marked <literal>@Destroy @Remove</literal>. This is "
+"the EJB remove method that will be called when Seam destroys the session "
+"context. Actually, the <link linkend=\"destroy-annotation"
+"\"><literal>@Destroy</literal></link> annotation is of more general "
+"usefulness, since it can be used for any kind of cleanup that should happen "
+"when any Seam context ends. If you don't have an <literal>@Destroy @Remove</"
+"literal> method, state will leak and you will suffer performance problems."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1008
+#, no-c-format
+msgid ""
+"The main page of the application is a Facelets page. Let's look at the "
+"fragment which relates to searching for hotels:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1018
+#, no-c-format
+msgid ""
+"&lt;div class=\"section\"&gt;\n"
+"&lt;h:form&gt;\n"
+"  \n"
+"  &lt;span class=\"errors\"&gt;\n"
+"    &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"  &lt;/span&gt;\n"
+"    \n"
+"  &lt;h1&gt;Search Hotels&lt;/h1&gt;\n"
+"  &lt;fieldset&gt; \n"
+"     &lt;h:inputText value=\"#{hotelSearch.searchString}\" style=\"width: "
+"165px;\"&gt;\n"
+"        &lt;a:support event=\"onkeyup\" actionListener=\"#{hotelSearch.find}"
+"\" \n"
+"                   reRender=\"searchResults\" /&gt;\n"
+"     &lt;/h:inputText&gt;\n"
+"     &amp;#160;\n"
+"     &lt;a:commandButton value=\"Find Hotels\" action=\"#{hotelSearch.find}"
+"\" \n"
+"                      styleClass=\"button\" reRender=\"searchResults\"/&gt;\n"
+"     &amp;#160;\n"
+"     &lt;a:status&gt;\n"
+"        &lt;f:facet name=\"start\"&gt;\n"
+"           &lt;h:graphicImage value=\"/img/spinner.gif\"/&gt;\n"
+"        &lt;/f:facet&gt;\n"
+"     &lt;/a:status&gt;\n"
+"     &lt;br/&gt;\n"
+"     &lt;h:outputLabel for=\"pageSize\"&gt;Maximum results:&lt;/h:"
+"outputLabel&gt;&amp;#160;\n"
+"     &lt;h:selectOneMenu value=\"#{hotelSearch.pageSize}\" id=\"pageSize"
+"\"&gt;\n"
+"        &lt;f:selectItem itemLabel=\"5\" itemValue=\"5\"/&gt;\n"
+"        &lt;f:selectItem itemLabel=\"10\" itemValue=\"10\"/&gt;\n"
+"        &lt;f:selectItem itemLabel=\"20\" itemValue=\"20\"/&gt;\n"
+"     &lt;/h:selectOneMenu&gt;\n"
+"  &lt;/fieldset&gt;\n"
+"    \n"
+"&lt;/h:form&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;a:outputPanel id=\"searchResults\"&gt;\n"
+"  &lt;div class=\"section\"&gt;\n"
+"  &lt;h:outputText value=\"No Hotels Found\" \n"
+"                rendered=\"#{hotels != null and hotels.rowCount==0}\"/&gt;\n"
+"  &lt;h:dataTable value=\"#{hotels}\" var=\"hot\" rendered=\"#{hotels."
+"rowCount&gt;0}\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Name&lt;/f:facet&gt;\n"
+"      #{hot.name}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Address&lt;/f:facet&gt;\n"
+"      #{hot.address}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;City, State&lt;/f:facet&gt;\n"
+"      #{hot.city}, #{hot.state}, #{hot.country}\n"
+"    &lt;/h:column&gt; \n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Zip&lt;/f:facet&gt;\n"
+"      #{hot.zip}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"      &lt;s:link value=\"View Hotel\" action=\"#{hotelBooking.selectHotel"
+"(hot)}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"  &lt;/h:dataTable&gt;\n"
+"  &lt;s:link value=\"More results\" action=\"#{hotelSearch.nextPage}\" \n"
+"          rendered=\"#{hotelSearch.nextPageAvailable}\"/&gt;\n"
+"  &lt;/div&gt;\n"
+"&lt;/a:outputPanel&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1021
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:support&gt;</literal> tag allows a JSF action "
+"event listener to be called by asynchronous <literal>XMLHttpRequest</"
+"literal> when a JavaScript event like <literal>onkeyup</literal> occurs. "
+"Even better, the <literal>reRender</literal> attribute lets us render a "
+"fragment of the JSF page and perform a partial page update when the "
+"asynchronous response is received."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1026
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:status&gt;</literal> tag lets us display a "
+"cheesy annimated image while we wait for asynchronous requests to return."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1031
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:outputPanel&gt;</literal> tag defines a region "
+"of the page which can be re-rendered by an asynchronous request."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1036
+#, no-c-format
+msgid ""
+"The Seam <literal>&lt;s:link&gt;</literal> tag lets us attach a JSF action "
+"listener to an ordinary (non-JavaScript) HTML link. The advantage of this "
+"over the standard JSF <literal>&lt;h:commandLink&gt;</literal> is that it "
+"preserves the operation of \"open in new window\" and \"open in new tab\". "
+"Also notice that we use a method binding with a parameter: <literal>#"
+"{hotelBooking.selectHotel(hot)}</literal>. This is not possible in the "
+"standard Unified EL, but Seam provides an extension to the EL that lets you "
+"use parameters on any method binding expression."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1043
+#, no-c-format
+msgid ""
+"This page displays the search results dynamically as we type, and lets us "
+"choose a hotel and pass it to the <literal>selectHotel()</literal> method of "
+"the <literal>HotelBookingAction</literal>, which is where the "
+"<emphasis>really</emphasis> interesting stuff is going to happen."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1046
+#, no-c-format
+msgid ""
+"Now lets see how the booking example application uses a conversation-scoped "
+"stateful session bean to achieve a natural cache of persistent data related "
+"to the conversation. The following code example is pretty long. But if you "
+"think of it as a list of scripted actions that implement the various steps "
+"of the conversation, it's understandable. Read the class from top to bottom, "
+"as if it were a story."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1057
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"hotelBooking\")\n"
+"@LoggedIn\n"
+"public class HotelBookingAction implements HotelBooking\n"
+"{\n"
+"   \n"
+"   @PersistenceContext(type=EXTENDED)\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @In \n"
+"   private User user;\n"
+"   \n"
+"   @In(required=false) @Out\n"
+"   private Hotel hotel;\n"
+"   \n"
+"   @In(required=false) \n"
+"   @Out(required=false)\n"
+"   private Booking booking;\n"
+"     \n"
+"   @In\n"
+"   private FacesMessages facesMessages;\n"
+"      \n"
+"   @In\n"
+"   private Events events;\n"
+"   \n"
+"   @Logger \n"
+"   private Log log;\n"
+"   \n"
+"   @Begin\n"
+"   public String selectHotel(Hotel selectedHotel)\n"
+"   {\n"
+"      hotel = em.merge(selectedHotel);\n"
+"      return \"hotel\";\n"
+"   }\n"
+"   \n"
+"   public String bookHotel()\n"
+"   {      \n"
+"      booking = new Booking(hotel, user);\n"
+"      Calendar calendar = Calendar.getInstance();\n"
+"      booking.setCheckinDate( calendar.getTime() );\n"
+"      calendar.add(Calendar.DAY_OF_MONTH, 1);\n"
+"      booking.setCheckoutDate( calendar.getTime() );\n"
+"      \n"
+"      return \"book\";\n"
+"   }\n"
+"\n"
+"   public String setBookingDetails()\n"
+"   {\n"
+"      if (booking==null || hotel==null) return \"main\";\n"
+"      if ( !booking.getCheckinDate().before( booking.getCheckoutDate() ) )\n"
+"      {\n"
+"         facesMessages.add(\"Check out date must be later than check in date"
+"\");\n"
+"         return null;\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return \"confirm\";\n"
+"      }\n"
+"   }\n"
+"\n"
+"   @End\n"
+"   public String confirm()\n"
+"   {\n"
+"      if (booking==null || hotel==null) return \"main\";\n"
+"      em.persist(booking);\n"
+"      facesMessages.add\n"
+"          (\"Thank you, #{user.name}, your confimation number for #{hotel."
+"name} is #{booking.id}\");\n"
+"      log.info(\"New booking: #{booking.id} for #{user.username}\");\n"
+"      events.raiseEvent(\"bookingConfirmed\");\n"
+"      return \"confirmed\";\n"
+"   }\n"
+"   \n"
+"   @End\n"
+"   public String cancel()\n"
+"   {\n"
+"      return \"main\";\n"
+"   }\n"
+"   \n"
+"   @Destroy @Remove\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1060
+#, no-c-format
+msgid ""
+"This bean uses an EJB3 <emphasis>extended persistence context</emphasis>, so "
+"that any entity instances remain managed for the whole lifecycle of the "
+"stateful session bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1065
+#, no-c-format
+msgid ""
+"The <link linkend=\"out-annotation\"><literal>@Out</literal></link> "
+"annotation declares that an attribute value is <emphasis>outjected</"
+"emphasis> to a context variable after method invocations. In this case, the "
+"context variable named <literal>hotel</literal> will be set to the value of "
+"the <literal>hotel</literal> instance variable after every action listener "
+"invocation completes."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1070
+#, no-c-format
+msgid ""
+"The <link linkend=\"begin-annotation\"><literal>@Begin</literal></link> "
+"annotation specifies that the annotated method begins a <emphasis>long-"
+"running conversation</emphasis>, so the current conversation context will "
+"not be destroyed at the end of the request. Instead, it will be reassociated "
+"with every request from the current window, and destroyed either by timeout "
+"due to conversation inactivity or invocation of a matching <literal>@End</"
+"literal> method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1075
+#, no-c-format
+msgid ""
+"The <link linkend=\"end-annotation\"><literal>@End</literal></link> "
+"annotation specifies that the annotated method ends the current long-running "
+"conversation, so the current conversation context will be destroyed at the "
+"end of the request."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1080
+#, no-c-format
+msgid ""
+"This EJB remove method will be called when Seam destroys the conversation "
+"context. Don't ever forget to define this method!"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1087
+#, no-c-format
+msgid ""
+"<literal>HotelBookingAction</literal> contains all the action listener "
+"methods that implement selection, booking and booking confirmation, and "
+"holds state related to this work in its instance variables. We think you'll "
+"agree that this code is much cleaner and simpler than getting and setting "
+"<literal>HttpSession</literal> attributes."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1090
+#, no-c-format
+msgid ""
+"Even better, a user can have multiple isolated conversations per login "
+"session. Try it! Log in, run a search, and navigate to different hotel pages "
+"in multiple browser tabs. You'll be able to work on creating two different "
+"hotel reservations at the same time. If you leave any one conversation "
+"inactive for long enough, Seam will eventually time out that conversation "
+"and destroy its state. If, after ending a conversation, you backbutton to a "
+"page of that conversation and try to perform an action, Seam will detect "
+"that the conversation was already ended, and redirect you to the search page."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1096
+#, no-c-format
+msgid "The Seam UI control library"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1097
+#, no-c-format
+msgid ""
+"If you check inside the WAR file for the booking application, you'll find "
+"<literal>seam-ui.jar</literal> in the <literal>WEB-INF/lib</literal> "
+"directory. This package contains a number of JSF custom controls that "
+"integrate with Seam. The booking application uses the <literal>&lt;s:link&gt;"
+"</literal> control for navigation from the search screen to the hotel page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1100
+#, no-c-format
+msgid ""
+"&lt;s:link value=\"View Hotel\" action=\"#{hotelBooking.selectHotel}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1101
+#, no-c-format
+msgid ""
+"The use of <literal>&lt;s:link&gt;</literal> here allows us to attach an "
+"action listener to a HTML link without breaking the browser's \"open in new "
+"window\" feature. The standard JSF <literal>&lt;h:commandLink&gt;</literal> "
+"does not work with \"open in new window\". We'll see later that <literal>&lt;"
+"s:link&gt;</literal> also offers a number of other useful features, "
+"including conversation propagation rules."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1104
+#, no-c-format
+msgid ""
+"The booking application uses some other Seam and Ajax4JSF controls, "
+"especially on the <literal>/book.xhtml</literal> page. We won't get into the "
+"details of those controls here, but if you want to understand this code, "
+"please refer to the chapter covering Seam's functionality for JSF form "
+"validation."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1110
+#, no-c-format
+msgid "The Seam Debug Page"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1111
+#, no-c-format
+msgid ""
+"The WAR also includes <literal>seam-debug.jar</literal>. If this jar is "
+"deployed in <literal>WEB-INF/lib</literal>, along with the Facelets, and if "
+"you set the following Seam property in <literal>web.xml</literal> or "
+"<literal>seam.properties</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1114
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;org.jboss.seam.core.init.debug&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;true&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1115
+#, no-c-format
+msgid ""
+"Then the Seam debug page will be available. This page lets you browse and "
+"inspect the Seam components in any of the Seam contexts associated with your "
+"current login session. Just point your browser at <ulink url=\"http://"
+"localhost:8080/seam-booking/debug.seam\"><literal>http://localhost:8080/seam-"
+"booking/debug.seam</literal></ulink>."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1131
+#, no-c-format
+msgid "A complete application featuring Seam and jBPM: the DVD Store example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1132
+#, no-c-format
+msgid ""
+"The DVD Store demo application shows the practical usage of jBPM for both "
+"task management and pageflow."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1135
+#, no-c-format
+msgid ""
+"The user screens take advantage of a jPDL pageflow to implement searching "
+"and shopping cart functionality."
+msgstr ""
+
+#. Tag: screeninfo
+#: Tutorial.xml:1138 Tutorial.xml:1149 Tutorial.xml:1170
+#, no-c-format
+msgid "DVD Store example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1146
+#, no-c-format
+msgid ""
+"The administration screens take use jBPM to manage the approval and shipping "
+"cycle for orders. The business process may even be changed dynamically, by "
+"selecting a different process definition!"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1160
+#, no-c-format
+msgid "Look in the <literal>dvdstore</literal> directory."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1166
+#, no-c-format
+msgid ""
+"A complete application featuring Seam workspace management: the Issue "
+"Tracker example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1167
+#, no-c-format
+msgid ""
+"The Issue Tracker demo shows off Seam's workspace management functionality: "
+"the conversation switcher, conversation list and breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1181
+#, no-c-format
+msgid "Look in the <literal>issues</literal> directory."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1187
+#, no-c-format
+msgid "An example of Seam with Hibernate: the Hibernate Booking example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1188
+#, no-c-format
+msgid ""
+"The Hibernate Booking demo is a straight port of the Booking demo to an "
+"alternative architecture that uses Hibernate for persistence and JavaBeans "
+"instead of session beans."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1194
+#, no-c-format
+msgid "Look in the <literal>hibernate</literal> directory."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1200
+#, no-c-format
+msgid "A RESTful Seam application: the Blog example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1201
+#, no-c-format
+msgid ""
+"Seam makes it very easy to implement applications which keep state on the "
+"server-side. However, server-side state is not always appropriate, "
+"especially in for functionality that serves up <emphasis>content</emphasis>. "
+"For this kind of problem we often need to let the user bookmark pages and "
+"have a relatively stateless server, so that any page can be accessed at any "
+"time, via the bookmark. The Blog example shows how to a implement RESTful "
+"application using Seam. Every page of the application can be bookmarked, "
+"including the search results page."
+msgstr ""
+
+#. Tag: screeninfo
+#: Tutorial.xml:1204
+#, no-c-format
+msgid "Blog example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1212
+#, no-c-format
+msgid ""
+"The Blog example demonstrates the use of \"pull\"-style MVC, where instead "
+"of using action listener methods to retrieve data and prepare the data for "
+"the view, the view pulls data from components as it is being rendered."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1216
+#, no-c-format
+msgid "Using \"pull\"-style MVC"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1217
+#, no-c-format
+msgid ""
+"This snippet from the <literal>index.xhtml</literal> facelets page displays "
+"a list of recent blog entries:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1220
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{blog.recentBlogEntries}\" var=\"blogEntry\" rows="
+"\"3\"&gt;\n"
+"   &lt;h:column&gt;\n"
+"      &lt;div class=\"blogEntry\"&gt;\n"
+"         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"         &lt;div&gt;\n"
+"            &lt;h:outputText escape=\"false\" \n"
+"                  value=\"#{blogEntry.excerpt==null ? blogEntry.body : "
+"blogEntry.excerpt}\"/&gt;\n"
+"         &lt;/div&gt;\n"
+"         &lt;p&gt;\n"
+"            &lt;h:outputLink value=\"entry.seam\" rendered=\"#{blogEntry."
+"excerpt!=null}\"&gt;\n"
+"               &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/"
+"&gt;\n"
+"               Read more...\n"
+"            &lt;/h:outputLink&gt;\n"
+"         &lt;/p&gt;\n"
+"         &lt;p&gt;\n"
+"            [Posted on \n"
+"            &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"               &lt;f:convertDateTime timeZone=\"#{blog.timeZone}\" locale=\"#"
+"{blog.locale}\" \n"
+"                   type=\"both\"/&gt;\n"
+"            &lt;/h:outputText&gt;]\n"
+"            &amp;#160;\n"
+"            &lt;h:outputLink value=\"entry.seam\"&gt;[Link]\n"
+"               &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/"
+"&gt;\n"
+"            &lt;/h:outputLink&gt;\n"
+"         &lt;/p&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1221
+#, no-c-format
+msgid ""
+"If we navigate to this page from a bookmark, how does the data used by the "
+"<literal>&lt;h:dataTable&gt;</literal> actually get initialized? Well, what "
+"happens is that the <literal>Blog</literal> is retrieved lazily&mdash;"
+"\"pulled\"&mdash;when needed, by a Seam component named <literal>blog</"
+"literal>. This is the opposite flow of control to what is usual in "
+"traditional web action-based frameworks like Struts."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1229
+#, no-c-format
+msgid ""
+"@Name(\"blog\")\n"
+"@Scope(ScopeType.STATELESS)\n"
+"public class BlogService \n"
+"{\n"
+"   \n"
+"   @In\n"
+"   private EntityManager entityManager;\n"
+"  \n"
+"   @Unwrap\n"
+"   public Blog getBlog()\n"
+"   {\n"
+"      return (Blog) entityManager.createQuery(\"from Blog b left join fetch "
+"b.blogEntries\")\n"
+"            .setHint(\"org.hibernate.cacheable\", true)\n"
+"            .getSingleResult();\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1232
+#, no-c-format
+msgid ""
+"This component uses a <emphasis>seam-managed persistence context</emphasis>. "
+"Unlike the other examples we've seen, this persistence context is managed by "
+"Seam, instead of by the EJB3 container. The persistence context spans the "
+"entire web request, allowing us to avoid any exceptions that occur when "
+"accessing unfetched associations in the view."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1237
+#, no-c-format
+msgid ""
+"The <literal>@Unwrap</literal> annotation tells Seam to provide the return "
+"value of the method&mdash;the <literal>Blog</literal>&mdash;instead of the "
+"actual <literal>BlogService</literal> component to clients. This is the Seam "
+"<emphasis>manager component pattern</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1244
+#, no-c-format
+msgid ""
+"This is good so far, but what about bookmarking the result of form "
+"submissions, such as a search results page?"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1250
+#, no-c-format
+msgid "Bookmarkable search results page"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1251
+#, no-c-format
+msgid ""
+"The blog example has a tiny form in the top right of each page that allows "
+"the user to search for blog entries. This is defined in a file, "
+"<literal>menu.xhtml</literal>, included by the facelets template, "
+"<literal>template.xhtml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1254
+#, no-c-format
+msgid ""
+"&lt;div id=\"search\"&gt;\n"
+"   &lt;h:form&gt;\n"
+"      &lt;h:inputText value=\"#{searchAction.searchPattern}\"/&gt;\n"
+"      &lt;h:commandButton value=\"Search\" action=\"/search.xhtml\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1255
+#, no-c-format
+msgid ""
+"To implement a bookmarkable search results page, we need to perform a "
+"browser redirect after processing the search form submission. Because we "
+"used the JSF view id as the action outcome, Seam automatically redirects to "
+"the view id when the form is submitted. Alternatively, we could have defined "
+"a navigation rule like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1258
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"   &lt;navigation-case&gt;\n"
+"      &lt;from-outcome&gt;searchResults&lt;/from-outcome&gt;\n"
+"      &lt;to-view-id&gt;/search.xhtml&lt;/to-view-id&gt;\n"
+"      &lt;redirect/&gt;\n"
+"   &lt;/navigation-case&gt;\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1259
+#, no-c-format
+msgid "Then the form would have looked like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1262
+#, no-c-format
+msgid ""
+"&lt;div id=\"search\"&gt;\n"
+"   &lt;h:form&gt;\n"
+"      &lt;h:inputText value=\"#{searchAction.searchPattern}\"/&gt;\n"
+"      &lt;h:commandButton value=\"Search\" action=\"searchResults\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1263
+#, no-c-format
+msgid ""
+"But when we redirect, we need to include the values submitted with the form "
+"as request parameters, to get a bookmarkable URL like <literal>http://"
+"localhost:8080/seam-blog/search.seam?searchPattern=seam</literal>. JSF does "
+"not provide an easy way to do this, but Seam does. We use a Seam "
+"<emphasis>page parameter</emphasis>, defined in <literal>WEB-INF/pages.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1266
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   &lt;page view-id=\"/search.xhtml\"&gt;\n"
+"      &lt;param name=\"searchPattern\" value=\"#{searchService.searchPattern}"
+"\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1267
+#, no-c-format
+msgid ""
+"This tells Seam to include the value of <literal>#{searchService."
+"searchPattern}</literal> as a request parameter named "
+"<literal>searchPattern</literal> when redirecting to the page, and then re-"
+"apply the value of that parameter to the model before rendering the page."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1270
+#, no-c-format
+msgid "The redirect takes us to the <literal>search.xhtml</literal> page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1273
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{searchResults}\" var=\"blogEntry\"&gt;\n"
+"   &lt;h:column&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:outputLink value=\"entry.seam\"&gt;\n"
+"            &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"            #{blogEntry.title}\n"
+"         &lt;/h:outputLink&gt;\n"
+"         posted on \n"
+"         &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"            &lt;f:convertDateTime timeZone=\"#{blog.timeZone}\" locale=\"#"
+"{blog.locale}\" type=\"both\"/&gt;\n"
+"         &lt;/h:outputText&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1274
+#, no-c-format
+msgid ""
+"Which again uses \"pull\"-style MVC to retrieve the actual search results:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1277
+#, no-c-format
+msgid ""
+"@Name(\"searchService\")\n"
+"public class SearchService \n"
+"{\n"
+"   \n"
+"   @In\n"
+"   private EntityManager entityManager;\n"
+"   \n"
+"   private String searchPattern;\n"
+"   \n"
+"   @Factory(\"searchResults\")\n"
+"   public List&lt;BlogEntry&gt; getSearchResults()\n"
+"   {\n"
+"      if (searchPattern==null)\n"
+"      {\n"
+"         return null;\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return entityManager.createQuery(\"select be from BlogEntry be "
+"where lower(be.title)\n"
+"             like :searchPattern or lower(be.body) like :searchPattern \n"
+"             order by be.date desc\")\n"
+"               .setParameter( \"searchPattern\", getSqlSearchPattern() )\n"
+"               .setMaxResults(100)\n"
+"               .getResultList();\n"
+"      }\n"
+"   }\n"
+"\n"
+"   private String getSqlSearchPattern()\n"
+"   {\n"
+"      return searchPattern==null ? \"\" : '&#37;' + \n"
+"          searchPattern.toLowerCase().replace('*', '&#37;').replace('?', "
+"'_') + '&#37;';\n"
+"   }\n"
+"\n"
+"   public String getSearchPattern()\n"
+"   {\n"
+"      return searchPattern;\n"
+"   }\n"
+"\n"
+"   public void setSearchPattern(String searchPattern)\n"
+"   {\n"
+"      this.searchPattern = searchPattern;\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1282
+#, no-c-format
+msgid "Using \"push\"-style MVC in a RESTful application"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1283
+#, no-c-format
+msgid ""
+"Very occasionally, it makes more sense to use push-style MVC for processing "
+"RESTful pages, and so Seam provides the notion of a <emphasis>page action</"
+"emphasis>. The Blog example uses a page action for the blog entry page, "
+"<literal>entry.xhtml</literal>. Note that this is a little bit contrived, it "
+"would have been easier to use pull-style MVC here as well."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1286
+#, no-c-format
+msgid ""
+"The <literal>entryAction</literal> component works much like an action class "
+"in a traditional push-MVC action-oriented framework like Struts:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1289
+#, no-c-format
+msgid ""
+"@Name(\"entryAction\")\n"
+"@Scope(STATELESS)\n"
+"public class EntryAction\n"
+"{\n"
+"   @In(create=true) \n"
+"   private Blog blog;\n"
+"   \n"
+"   @Out\n"
+"   private BlogEntry blogEntry;\n"
+"   \n"
+"   public void loadBlogEntry(String id) throws EntryNotFoundException\n"
+"   {\n"
+"      blogEntry = blog.getBlogEntry(id);\n"
+"      if (blogEntry==null) throw new EntryNotFoundException(id);\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1290
+#, no-c-format
+msgid "Page actions are also declared in <literal>pages.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1293
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   ...\n"
+"\n"
+"   &lt;page view-id=\"/entry.xhtml\" action=\"#{entryAction.loadBlogEntry"
+"(blogEntry.id)}\"&gt;\n"
+"      &lt;param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"\n"
+"   &lt;page view-id=\"/post.xhtml\" action=\"#{loginAction.challenge}\"/"
+"&gt;\n"
+"\n"
+"   &lt;page view-id=\"*\" action=\"#{blog.hitCount.hit}\"/&gt;\n"
+"\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1294
+#, no-c-format
+msgid ""
+"Notice that the example is using page actions for some other "
+"functionality&mdash;the login challenge, and the pageview counter. Also "
+"notice the use of a parameter in the page action method binding. This is not "
+"a standard feature of JSF EL, but Seam lets you use it, not just for page "
+"actions, but also in JSF method bindings."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1297
+#, no-c-format
+msgid ""
+"When the <literal>entry.xhtml</literal> page is requested, Seam first binds "
+"the page parameter <literal>blogEntryId</literal> to the model, then runs "
+"the page action, which retrieves the needed data&mdash;the "
+"<literal>blogEntry</literal>&mdash;and places it in the Seam event context. "
+"Finally, the following is rendered:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1300
+#, no-c-format
+msgid ""
+"&lt;div class=\"blogEntry\"&gt;\n"
+"   &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"   &lt;div&gt;\n"
+"      &lt;h:outputText escape=\"false\" value=\"#{blogEntry.body}\"/&gt;\n"
+"   &lt;/div&gt;\n"
+"   &lt;p&gt;\n"
+"      [Posted on&amp;#160;\n"
+"      &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"         &lt;f:convertDateTime timezone=\"#{blog.timeZone}\" locale=\"#{blog."
+"locale}\" type=\"both\"/&gt;\n"
+"      &lt;/h:outputText&gt;]\n"
+"   &lt;/p&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1301
+#, no-c-format
+msgid ""
+"If the blog entry is not found in the database, the "
+"<literal>EntryNotFoundException</literal> exception is thrown. We want this "
+"exception to result in a 404 error, not a 505, so we annotate the exception "
+"class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1304
+#, no-c-format
+msgid ""
+"@ApplicationException(rollback=true)\n"
+"@HttpError(errorCode=HttpServletResponse.SC_NOT_FOUND)\n"
+"public class EntryNotFoundException extends Exception\n"
+"{\n"
+"   EntryNotFoundException(String id)\n"
+"   {\n"
+"      super(\"entry not found: \" + id);\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1305
+#, no-c-format
+msgid ""
+"An alternative implementation of the example does not use the parameter in "
+"the method binding:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1308
+#, no-c-format
+msgid ""
+"@Name(\"entryAction\")\n"
+"@Scope(STATELESS)\n"
+"public class EntryAction\n"
+"{\n"
+"   @In(create=true) \n"
+"   private Blog blog;\n"
+"   \n"
+"   @In @Out\n"
+"   private BlogEntry blogEntry;\n"
+"   \n"
+"   public void loadBlogEntry() throws EntryNotFoundException\n"
+"   {\n"
+"      blogEntry = blog.getBlogEntry( blogEntry.getId() );\n"
+"      if (blogEntry==null) throw new EntryNotFoundException(id);\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1309
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   ...\n"
+"\n"
+"   &lt;page view-id=\"/entry.xhtml\" action=\"#{entryAction.loadBlogEntry}"
+"\"&gt;\n"
+"      &lt;param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1310
+#, no-c-format
+msgid "It is a matter of taste which implementation you prefer."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1318
+#, no-c-format
+msgid "Running the Seam examples in JBoss using the JSF 1.2 RI"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1319
+#, no-c-format
+msgid ""
+"JBoss AS 4.0 ships with the Apache MyFaces implementation of JSF 1.1. After "
+"many months of waiting, there is <emphasis>still</emphasis> no "
+"implementation of JSF 1.2 from MyFaces. For this and other reasons, JBoss AS "
+"4.2 will embed the JSF 1.2 Reference Implementation by default. Soon after "
+"the release of 4.2, we will migrate the Seam examples to JSF 1.2."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1322
+#, no-c-format
+msgid ""
+"For those who can't wait, Seam is already compatible with JSF 1.2, and it's "
+"easy to get the Seam examples running with JSF 1.2 in JBoss 4.0.5. Let's "
+"start with the famous booking example:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1327
+#, no-c-format
+msgid ""
+"copy <literal>jsf-api.jar</literal>, <literal>jsf-impl.jar</literal>, "
+"<literal>el-api.jar</literal>, <literal>el-impl.jar</literal> to "
+"<literal>server/default/deploy/tomcat/jbossweb-tomcat55.sar/jsf-libs</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1332
+#, no-c-format
+msgid ""
+"delete <literal>myfaces-api.jar</literal> and <literal>myfaces-impl.jar</"
+"literal> from <literal>server/default/deploy/tomcat/jbossweb-tomcat55.sar/"
+"jsf-libs</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1337
+#, no-c-format
+msgid ""
+"edit <literal>server/default/deploy/tomcat/jbossweb-tomcat55.sar/conf/web."
+"xml</literal>, replacing <literal>myfaces-impl.jar</literal> with "
+"<literal>jsf-impl.jar</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1342
+#, no-c-format
+msgid ""
+"edit <literal>examples/booking/resources/WEB-INF/web.xml</literal>, deleting "
+"the MyFaces listener, uncommenting the RI listener"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1347
+#, no-c-format
+msgid ""
+"edit <literal>examples/booking/resources/WEB-INF/faces-config.xml</literal>, "
+"uncommenting the lines that install the <literal>SeamELResolver</literal> "
+"using the new JSF 1.2 XML schema declaration."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1352
+#, no-c-format
+msgid ""
+"edit <literal>examples/booking/resources/META-INF/application.xml</literal>, "
+"deleting the lines that declare <literal>el-api.jar</literal> and "
+"<literal>el-impl.jar</literal> as Java modules."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1357
+#, no-c-format
+msgid ""
+"Restart JBoss, and type <literal>ant</literal> in the <literal>examples/"
+"booking</literal> directory."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Validation.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Validation.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Validation.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,375 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Validation.xml:10
+#, no-c-format
+msgid "JSF form validation in Seam"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:11
+#, no-c-format
+msgid "In plain JSF, validation is defined in the view:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:14
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Country:\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;my:validateCountry/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Zip code:\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;my:validateZip/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:15
+#, no-c-format
+msgid ""
+"In practice, this approach usually violates DRY, since most \"validation\" "
+"actually enforces constraints that are part of the data model, and exist all "
+"the way down to the database schema definition. Seam provides support for "
+"model-based constraints defined using Hibernate Validator."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:18
+#, no-c-format
+msgid ""
+"Let's start by defining our constraints, on our <literal>Location</literal> "
+"class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:21
+#, no-c-format
+msgid ""
+"public class Location {\n"
+"    private String country;\n"
+"    private String zip;\n"
+"    \n"
+"    @NotNull\n"
+"    @Length(max=30)\n"
+"    public String getCountry() { return country; }\n"
+"    public void setCountry(String c) { country = c; }\n"
+"\n"
+"    @NotNull\n"
+"    @Length(max=6)\n"
+"    @Pattern(\"^&#92;d*&#36;\")\n"
+"    public String getZip() { return zip; }\n"
+"    public void setZip(String z) { zip = z; }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:22
+#, no-c-format
+msgid ""
+"Well, that's a decent first cut, but in practice it might be more elegant to "
+"use custom constraints instead of the ones built into Hibernate Validator:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:25
+#, no-c-format
+msgid ""
+"public class Location {\n"
+"    private String country;\n"
+"    private String zip;\n"
+"    \n"
+"    @NotNull\n"
+"    @Country\n"
+"    public String getCountry() { return country; }\n"
+"    public void setCountry(String c) { country = c; }\n"
+"\n"
+"    @NotNull\n"
+"    @ZipCode\n"
+"    public String getZip() { return zip; }\n"
+"    public void setZip(String z) { zip = z; }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:26
+#, no-c-format
+msgid ""
+"Whichever route we take, we no longer need to specify the type of validation "
+"to be used in the JSF page. Instead, we can use <literal>&lt;s:validate&gt;</"
+"literal> to validate against the constraint defined on the model object."
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:29
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Country:\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;s:validate/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Zip code:\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;s:validate/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:30
+#, no-c-format
+msgid ""
+"<emphasis>Note:</emphasis> specifying <literal>@NotNull</literal> on the "
+"model does <emphasis>not</emphasis> eliminate the requirement for "
+"<literal>required=\"true\"</literal> to appear on the control! This is due "
+"to a limitation of the JSF validation architecture."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:33
+#, no-c-format
+msgid ""
+"This version is not much less verbose than what we started with, so let's "
+"try <literal>&lt;s:validateAll&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:36
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;h:inputText value=\"#{location.country}\" required=\"true\"/"
+"&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/"
+"&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:37
+#, no-c-format
+msgid ""
+"This tag simply adds an <literal>&lt;s:validate&gt;</literal> to every input "
+"in the form. For a large form, it can save a lot of typing!"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:40
+#, no-c-format
+msgid ""
+"Now we need to do something about displaying feedback to the user when "
+"validation fails. Currently we are displaying all messages at the top of the "
+"form. What we would really like to do is display the message next to the "
+"field with the error (this is possible in plain JSF), highlight the field "
+"(this is not possible) and, for good measure, display some image next the "
+"the field (also not possible)."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:43
+#, no-c-format
+msgid "Let's try out <literal>&lt;s:decorate&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:46
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;s:decorate&gt;\n"
+"                &lt;f:facet name=\"beforeInvalidField\"&gt;&lt;h:"
+"graphicImage src=\"img/error.gif\"/&gt;&lt;/f:facet&gt;\n"
+"                &lt;f:facet name=\"afterInvalidField\"&gt;&lt;s:message/&gt;"
+"&lt;/f:facet&gt;\n"
+"                &lt;f:facet name=\"aroundInvalidField\"&gt;&lt;s:span "
+"styleClass=\"error\"/&gt;&lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{location.country}\" required=\"true"
+"\"/&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;s:decorate&gt;\n"
+"                &lt;f:facet name=\"beforeInvalidField\"&gt;&lt;h:"
+"graphicImage src=\"img/error.gif\"/&gt;&lt;/f:facet&gt;\n"
+"                &lt;f:facet name=\"afterInvalidField\"&gt;&lt;s:message/&gt;"
+"&lt;/f:facet&gt;\n"
+"                &lt;f:facet name=\"aroundInvalidField\"&gt;&lt;s:span "
+"styleClass=\"error\"/&gt;&lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/"
+"&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:47
+#, no-c-format
+msgid ""
+"Well, that looks much better to the user, but it is extremely verbose. "
+"Fortunately, the facets of <literal>&lt;s:decorate&gt;</literal> may be "
+"defined on any parent element:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:50
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;f:facet name=\"beforeInvalidField\"&gt;\n"
+"        &lt;h:graphicImage src=\"img/error.gif\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;f:facet name=\"afterInvalidField\"&gt;\n"
+"        &lt;s:message/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;f:facet name=\"aroundInvalidField\"&gt;\n"
+"        &lt;s:span styleClass=\"error\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;s:decorate&gt;\n"
+"                &lt;h:inputText value=\"#{location.country}\" required=\"true"
+"\"/&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;s:decorate&gt;\n"
+"                &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/"
+"&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:51
+#, no-c-format
+msgid ""
+"This approach <emphasis>defines</emphasis> constraints on the model, and "
+"<emphasis>presents</emphasis> constraint violations in the view&mdash;a "
+"significantly better design."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:54
+#, no-c-format
+msgid ""
+"Finally, we can use Ajax4JSF to display validation messages as the user is "
+"typing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:57
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;f:facet name=\"beforeInvalidField\"&gt;\n"
+"        &lt;h:graphicImage src=\"img/error.gif\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;f:facet name=\"afterInvalidField\"&gt;\n"
+"        &lt;s:message/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;f:facet name=\"aroundInvalidField\"&gt;\n"
+"        &lt;s:span styleClass=\"error\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;s:decorate id=\"country\"&gt;\n"
+"                &lt;h:inputText value=\"#{location.country}\" required=\"true"
+"\"&gt;\n"
+"                    &lt;a:support event=\"onblur\" reRender=\"country\"/"
+"&gt;\n"
+"                &lt;/h:inputText&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;s:decorate id=\"zip\"&gt;\n"
+"                &lt;h:inputText value=\"#{location.zip}\" required=\"true"
+"\"&gt;\n"
+"                    &lt;a:support event=\"onblur\" reRender=\"zip\"/&gt;\n"
+"                &lt;/h:inputText&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Xml.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Xml.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/or-IN/Xml.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,933 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Xml.xml:10
+#, no-c-format
+msgid "Configuring Seam components"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:11
+#, no-c-format
+msgid ""
+"The philosophy of minimizing XML-based configuration is extremely strong in "
+"Seam. Nevertheless, there are various reasons why we might want to configure "
+"a Seam component using XML: to isolate deployment-specific information from "
+"the Java code, to enable the creation of re-usable frameworks, to configure "
+"Seam's built-in functionality, etc. Seam provides two basic approaches to "
+"configuring components: configuration via property settings in a properties "
+"file or <literal>web.xml</literal>, and configuration via "
+"<literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:14
+#, no-c-format
+msgid "Configuring components via property settings"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:15
+#, no-c-format
+msgid ""
+"Seam components may be provided with configuration properties either via "
+"servlet context parameters, or via a properties file named <literal>seam."
+"properties</literal> in the root of the classpath."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:18
+#, no-c-format
+msgid ""
+"The configurable Seam component must expose JavaBeans-style property setter "
+"methods for the configurable attributes. If a seam component named "
+"<literal>com.jboss.myapp.settings</literal> has a setter method named "
+"<literal>setLocale()</literal>, we can provide a property named <literal>com."
+"jboss.myapp.settings.locale</literal> in the <literal>seam.properties</"
+"literal> file or as a servlet context parameter, and Seam will set the value "
+"of the <literal>locale</literal> attribute whenever it instantiates the "
+"component."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:21
+#, no-c-format
+msgid ""
+"The same mechanism is used to configure Seam itself. For example, to set the "
+"conversation timeout, we provide a value for <literal>org.jboss.seam.core."
+"manager.conversationTimeout</literal> in <literal>web.xml</literal> or "
+"<literal>seam.properties</literal>. (There is a built-in Seam component "
+"named <literal>org.jboss.seam.core.manager</literal> with a setter method "
+"named <literal>setConversationTimeout()</literal>.)"
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:24
+#, no-c-format
+msgid "Configuring components via components.xml"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:25
+#, no-c-format
+msgid ""
+"The <literal>components.xml</literal> file is a bit more powerful than "
+"property settings. It lets you:"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:30
+#, no-c-format
+msgid ""
+"Configure components that have been installed automatically&mdash;including "
+"both built-in components, and application components that have been "
+"annotated with the <literal>@Name</literal> annotation and picked up by "
+"Seam's deployment scanner."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:35
+#, no-c-format
+msgid ""
+"Install classes with no <literal>@Name</literal> annotation as Seam "
+"components&mdash;this is most useful for certain kinds of infrastructural "
+"components which can be installed multiple times different names (for "
+"example Seam-managed persistence contexts)."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:40
+#, no-c-format
+msgid ""
+"Install components that <emphasis>do</emphasis> have a <literal>@Name</"
+"literal> annotation but are not installed by default because of an "
+"<literal>@Install</literal> annotation that indicates the component should "
+"not be installed."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:45
+#, no-c-format
+msgid "Override the scope of a component."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:50
+#, no-c-format
+msgid ""
+"A <literal>components.xml</literal> file may appear in one of three "
+"different places:"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:55
+#, no-c-format
+msgid "The <literal>WEB-INF</literal> directory of a <literal>war</literal>."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:60
+#, no-c-format
+msgid "The <literal>META-INF</literal> directory of a <literal>jar</literal>."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:65
+#, no-c-format
+msgid ""
+"Any directory of a <literal>jar</literal> that contains classes with an "
+"<literal>@Name</literal> annotation."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:70
+#, no-c-format
+msgid ""
+"Usually, Seam components are installed when the deployment scanner discovers "
+"a class with a <literal>@Name</literal> annotation sitting in an archive "
+"with a <literal>seam.properties</literal> file or a <literal>META-INF/"
+"components.xml</literal> file. (Unless the component has an "
+"<literal>@Install</literal> annotation indicating it should not be installed "
+"by default.) The <literal>components.xml</literal> file lets us handle "
+"special cases where we need to override the annotations."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:73
+#, no-c-format
+msgid ""
+"For example, the following <literal>components.xml</literal> file installs "
+"the JBoss Embeddable EJB3 container:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:76
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"&gt;\n"
+"    &lt;core:ejb/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:77
+#, no-c-format
+msgid "This example does the same thing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:80
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component class=\"org.jboss.seam.core.Ejb\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:81
+#, no-c-format
+msgid ""
+"This one installs and configures two different Seam-managed persistence "
+"contexts:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:84
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"    &lt;core:managed-persistence-context name=\"customerDatabase\"\n"
+"                persistence-unit-jndi-name=\"java:/"
+"customerEntityManagerFactory\"/&gt;\n"
+"        \n"
+"    &lt;core:managed-persistence-context name=\"accountingDatabase\"\n"
+"                persistence-unit-jndi-name=\"java:/"
+"accountingEntityManagerFactory\"/&gt;            \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:85
+#, no-c-format
+msgid "As does this one:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:88
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component name=\"customerDatabase\" \n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"customerEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"    \n"
+"    &lt;component name=\"accountingDatabase\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"accountingEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:89
+#, no-c-format
+msgid ""
+"This example creates a session-scoped Seam-managed persistence context (this "
+"is not recommended in practice):"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:92
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"  &lt;core:managed-persistence-context name=\"productDatabase\" \n"
+"                                   scope=\"session\"\n"
+"              persistence-unit-jndi-name=\"java:/productEntityManagerFactory"
+"\"/&gt;        \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:93
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"            \n"
+"    &lt;component name=\"productDatabase\"\n"
+"              scope=\"session\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"productEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:94
+#, no-c-format
+msgid ""
+"It is common to use the <literal>auto-create</literal> option for "
+"infrastructural objects like persistence contexts, which saves you from "
+"having to explicitly specify <literal>create=true</literal> when you use the "
+"<literal>@In</literal> annotation."
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:97
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"  &lt;core:managed-persistence-context name=\"productDatabase\" \n"
+"                             auto-create=\"true\"\n"
+"              persistence-unit-jndi-name=\"java:/productEntityManagerFactory"
+"\"/&gt;        \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:98
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"            \n"
+"    &lt;component name=\"productDatabase\"\n"
+"        auto-create=\"true\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"productEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:99
+#, no-c-format
+msgid ""
+"The <literal>&lt;factory&gt;</literal> declaration lets you specify a value "
+"or method binding expression that will be evaluated to initialize the value "
+"of a context variable when it is first referenced."
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:102
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"contact\" method=\"#{contactManager.loadContact}\" "
+"scope=\"CONVERSATION\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:103
+#, no-c-format
+msgid ""
+"You can create an \"alias\" (a second name) for a Seam component like so:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:106
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"user\" value=\"#{actor}\" scope=\"STATELESS\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:107
+#, no-c-format
+msgid "You can even create an \"alias\" for a commonly used expression:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:110
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"contact\" value=\"#{contactManager.contact}\" scope="
+"\"STATELESS\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:111
+#, no-c-format
+msgid ""
+"It is especially common to see the use of <literal>auto-create=\"true\"</"
+"literal> with the <literal>&lt;factory&gt;</literal> declaration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:114
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"session\" value=\"#{entityManager.delegate}\" scope="
+"\"STATELESS\" \n"
+"        auto-create=\"true\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:115
+#, no-c-format
+msgid ""
+"Sometimes we want to reuse the same <literal>components.xml</literal> file "
+"with minor changes during both deployment and testing. Seam lets you place "
+"wildcards of the form <literal>@wildcard@</literal> in the "
+"<literal>components.xml</literal> file which can be replaced either by your "
+"Ant build script (at deployment time) or by providing a file named "
+"<literal>components.properties</literal> in the classpath (at development "
+"time). You'll see this approach used in the Seam examples."
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:118
+#, no-c-format
+msgid "Fine-grained configuration files"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:119
+#, no-c-format
+msgid ""
+"If you have a large number of components that need to be configured in XML, "
+"it makes much more sense to split up the information in <literal>components."
+"xml</literal> into many small files. Seam lets you put configuration for a "
+"class named, for example, <literal>com.helloworld.Hello</literal> in a "
+"resource named <literal>com/helloworld/Hello.component.xml</literal>. (You "
+"might be familiar with this pattern, since it is the same one we use in "
+"Hibernate.) The root element of the file may be either a <literal>&lt;"
+"components&gt;</literal> or <literal>&lt;component&gt;</literal> element."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:122
+#, no-c-format
+msgid "The first option lets you define multiple components in the file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:125
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component class=\"com.helloworld.Hello\" name=\"hello\"&gt;\n"
+"        &lt;property name=\"name\"&gt;#{user.name}&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"    &lt;factory name=\"message\" value=\"#{hello.message}\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:126
+#, no-c-format
+msgid ""
+"The second option only lets you define or configure one component, but is "
+"less noisy:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:129
+#, no-c-format
+msgid ""
+"&lt;component name=\"hello\"&gt;\n"
+"    &lt;property name=\"name\"&gt;#{user.name}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:130
+#, no-c-format
+msgid ""
+"In the second option, the class name is implied by the file in which the "
+"component definition appears."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:133
+#, no-c-format
+msgid ""
+"Alternatively, you may put configuration for all classes in the <literal>com."
+"helloworld</literal> package in <literal>com/helloworld/components.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:136
+#, no-c-format
+msgid "Configurable property types"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:137
+#, no-c-format
+msgid ""
+"Properties of string, primitive or primitive wrapper type may be configured "
+"just as you would expect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:140
+#, no-c-format
+msgid "org.jboss.seam.core.manager.conversationTimeout 60000"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:141
+#, no-c-format
+msgid "&lt;core:manager conversation-timeout=\"60000\"/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:142
+#, no-c-format
+msgid ""
+"&lt;component name=\"org.jboss.seam.core.manager\"&gt;\n"
+"    &lt;property name=\"conversationTimeout\"&gt;60000&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:143
+#, no-c-format
+msgid "Arrays, sets and lists of strings or primitives are also supported:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:146
+#, no-c-format
+msgid ""
+"org.jboss.seam.core.jbpm.processDefinitions order.jpdl.xml, return.jpdl.xml, "
+"inventory.jpdl.xml"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:147
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;order.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;return.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:148
+#, no-c-format
+msgid ""
+"&lt;component name=\"org.jboss.seam.core.jbpm\"&gt;\n"
+"    &lt;property name=\"processDefinitions\"&gt;\n"
+"        &lt;value&gt;order.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;return.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:149
+#, no-c-format
+msgid ""
+"Even maps with String-valued keys and string or primitive values are "
+"supported:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:152
+#, no-c-format
+msgid ""
+"&lt;component name=\"issueEditor\"&gt;\n"
+"    &lt;property name=\"issueStatuses\"&gt;\n"
+"        &lt;key&gt;open&lt;/key&gt; &lt;value&gt;open issue&lt;/value&gt;\n"
+"        &lt;key&gt;resolved&lt;/key&gt; &lt;value&gt;issue resolved by "
+"developer&lt;/value&gt;\n"
+"        &lt;key&gt;closed&lt;/key&gt; &lt;value&gt;resolution accepted by "
+"user&lt;/value&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:153
+#, no-c-format
+msgid ""
+"Finally, you may wire together components using a value-binding expression. "
+"Note that this is quite different to injection using <literal>@In</literal>, "
+"since it happens at component instantiation time instead of invocation time. "
+"It is therefore much more similar to the dependency injection facilities "
+"offered by traditional IoC containers like JSF or Spring."
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:156
+#, no-c-format
+msgid ""
+"&lt;drools:managed-working-memory name=\"policyPricingWorkingMemory\" rule-"
+"base=\"#{policyPricingRules}\"/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:157
+#, no-c-format
+msgid ""
+"&lt;component name=\"policyPricingWorkingMemory\"\n"
+"          class=\"org.jboss.seam.drools.ManagedWorkingMemory\"&gt;\n"
+"    &lt;property name=\"ruleBase\"&gt;#{policyPricingRules}&lt;/"
+"property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:158
+#, no-c-format
+msgid "Using XML Namespaces"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:159
+#, no-c-format
+msgid ""
+"Throughout the examples, there have been two competing ways of declaring "
+"components: with and without the use of XML namespaces. The following shows "
+"a typical <literal>components.xml</literal> file without namespaces. It uses "
+"the Seam Components DTD:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:162
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"&gt;\n"
+"&lt;!DOCTYPE components PUBLIC \"-//JBoss/Seam Component Configuration DTD "
+"1.2//EN\"\n"
+"                            \"http://jboss.com/products/seam/components-1.2."
+"dtd\"&gt;\n"
+"&lt;components&gt;\n"
+"\n"
+"    &lt;component class=\"org.jboss.seam.core.init\"&gt;\n"
+"        &lt;property name=\"debug\"&gt;true&lt;/property&gt;\n"
+"        &lt;property name=\"jndiPattern\"&gt;@jndiPattern@&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"    &lt;component name=\"org.jboss.sean.core.ejb\" installed=\"@embeddedEjb@"
+"\" /&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:163
+#, no-c-format
+msgid ""
+"As you can see, this is somewhat verbose. Even worse, the component and "
+"attribute names cannot be validated at development time."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:166
+#, no-c-format
+msgid "The namespaced version looks like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:169
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                http://jboss.com/products/seam/core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components \n"
+"                 http://jboss.com/products/seam/components-1.2.xsd\"&gt;\n"
+"\n"
+"    &lt;core:init debug=\"true\" jndi-pattern=\"@jndiPattern@\"/&gt;\n"
+"\n"
+"    &lt;core:ejb installed=\"@embeddedEjb@\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:170
+#, no-c-format
+msgid ""
+"Even though the schema declarations are verbose, the actual XML content is "
+"lean and easy to understand. The schemas provide detailed information about "
+"each component and the attributes available, allowing XML editors to offer "
+"intelligent autocomplete. The use of namespaced elements makes generating "
+"and maintaining correct <literal>components.xml</literal> files much simpler."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:173
+#, no-c-format
+msgid ""
+"Now, this works great for the built-in Seam components, but what about user "
+"components? There are two options. First, Seam supports mixing the two "
+"models, allowing the use of the generic <literal>&lt;component&gt;</literal> "
+"declarations for user components, along with namespaced declarations for "
+"built-in components. But even better, Seam allows you to quickly declare "
+"namespaces for your own components."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:176
+#, no-c-format
+msgid ""
+"Any Java package can be associated with an XML namespace by annotating the "
+"package with the <literal>@Namespace</literal> annotation. (Package-level "
+"annotations are declared in a file named <literal>package-info.java</"
+"literal> in the package directory.) Here is an example from the seampay demo:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:179
+#, no-c-format
+msgid ""
+"@Namespace(value=\"http://jboss.com/products/seam/examples/seampay\")\n"
+"package org.jboss.seam.example.seampay;\n"
+"\n"
+"import org.jboss.seam.annotations.Namespace;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:180
+#, no-c-format
+msgid ""
+"That is all you need to do to use the namespaced style in "
+"<literal>components.xml</literal>! Now we can write:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:183
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pay=\"http://jboss.com/products/seam/examples/seampay\"\n"
+"            ... &gt;\n"
+"\n"
+"    &lt;pay:payment-home new-instance=\"#{newPayment}\"\n"
+"                      created-message=\"Created a new payment to #"
+"{newPayment.payee}\" /&gt;\n"
+"\n"
+"    &lt;pay:payment name=\"newPayment\"\n"
+"                 payee=\"Somebody\"\n"
+"                 account=\"#{selectedAccount}\"\n"
+"                 payment-date=\"#{currentDatetime}\"\n"
+"                 created-date=\"#{currentDatetime}\" /&gt;\n"
+"     ...\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:184
+#, no-c-format
+msgid "<para>Or:</para>"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:187
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pay=\"http://jboss.com/products/seam/examples/seampay\"\n"
+"            ... &gt;\n"
+"\n"
+"    &lt;pay:payment-home&gt;\n"
+"        &lt;pay:new-instance&gt;\"#{newPayment}\"&lt;/pay:new-instance&gt;\n"
+"        &lt;pay:created-message&gt;Created a new payment to #{newPayment."
+"payee}&lt;/pay:created-message&gt;\n"
+"    &lt;/pay:payment-home&gt;\n"
+"    \n"
+"    &lt;pay:payment name=\"newPayment\"&gt;\n"
+"        &lt;pay:payee&gt;Somebody\"&lt;/pay:payee&gt;\n"
+"        &lt;pay:account&gt;#{selectedAccount}&lt;/pay:account&gt;\n"
+"        &lt;pay:payment-date&gt;#{currentDatetime}&lt;/pay:payment-date&gt;\n"
+"        &lt;pay:created-date&gt;#{currentDatetime}&lt;/pay:created-date&gt;\n"
+"     &lt;/pay:payment&gt;\n"
+"     ...\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:188
+#, no-c-format
+msgid ""
+"These examples illustrate the two usage models of a namespaced element. In "
+"the first declaration, the <literal>&lt;pay:payment-home&gt;</literal> "
+"references the <literal>paymentHome</literal> component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:191
+#, no-c-format
+msgid ""
+"package org.jboss.seam.example.seampay;\n"
+"...\n"
+"@Name(\"paymentHome\")\n"
+"public class PaymentController\n"
+"    extends EntityHome&lt;Payment&gt;\n"
+"{\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:192
+#, no-c-format
+msgid ""
+"The element name is the hyphenated form of the component name. The "
+"attributes of the element are the hyphenated form of the property names."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:195
+#, no-c-format
+msgid ""
+"In the second declaration, the <literal>&lt;pay:payment&gt;</literal> "
+"element refers to the <literal>Payment</literal> class in the <literal>org."
+"jboss.seam.example.seampay</literal> package. In this case <literal>Payment</"
+"literal> is an entity that is being declared as a Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:198
+#, no-c-format
+msgid ""
+"package org.jboss.seam.example.seampay;\n"
+"...\n"
+"@Entity\n"
+"public class Payment\n"
+"    implements Serializable\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:199
+#, no-c-format
+msgid ""
+"If we want validation and autocompletion to work for user-defined "
+"components, we will need a schema. Seam does not yet provide a mechanism to "
+"automatically generate a schema for a set of components, so it is necessary "
+"to generate one manually. The schema definitions for the standard Seam "
+"packages can be used for guidance."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:202
+#, no-c-format
+msgid "The following are the the namespaces used by Seam:"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:207
+#, no-c-format
+msgid ""
+"components &mdash; <literal>http://jboss.com/products/seam/components</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:212
+#, no-c-format
+msgid "core &mdash; <literal>http://jboss.com/products/seam/core</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:217
+#, no-c-format
+msgid "drools &mdash; <literal>http://jboss.com/products/seam/drools</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:222
+#, no-c-format
+msgid ""
+"framework &mdash; <literal>http://jboss.com/products/seam/framework</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:227
+#, no-c-format
+msgid "jms &mdash; <literal>http://jboss.com/products/seam/jms</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:232
+#, no-c-format
+msgid ""
+"remoting &mdash; <literal>http://jboss.com/products/seam/remoting</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:237
+#, no-c-format
+msgid "theme &mdash; <literal>http://jboss.com/products/seam/theme</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:242
+#, no-c-format
+msgid ""
+"security &mdash; <literal>http://jboss.com/products/seam/security</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:247
+#, no-c-format
+msgid "mail &mdash; <literal>http://jboss.com/products/seam/mail</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:252
+#, no-c-format
+msgid "web &mdash; <literal>http://jboss.com/products/seam/web</literal>"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Annotations.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Annotations.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Annotations.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2030 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Annotations.xml:10
+#, no-c-format
+msgid "Seam annotations"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:11
+#, no-c-format
+msgid ""
+"When you write a Seam application, you'll use a lot of annotations. Seam "
+"lets you use annotations to achieve a declarative style of programming. Most "
+"of the annotations you'll use are defined by the EJB 3.0 specification. The "
+"annotations for data validation are defined by the Hibernate Validator "
+"package. Finally, Seam defines its own set of annotations, which we'll "
+"describe in this chapter."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:14
+#, no-c-format
+msgid ""
+"All of these annotations are defined in the package <literal>org.jboss.seam."
+"annotations</literal>."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:18
+#, no-c-format
+msgid "Annotations for component definition"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:19
+#, no-c-format
+msgid ""
+"The first group of annotations lets you define a Seam component. These "
+"annotations appear on the component class."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:24
+#, no-c-format
+msgid "@Name"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:26
+#, no-c-format
+msgid "@Name(\"componentName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:27
+#, no-c-format
+msgid ""
+"Defines the Seam component name for a class. This annotation is required for "
+"all Seam components."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:33
+#, no-c-format
+msgid "@Scope"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:35
+#, no-c-format
+msgid "@Scope(ScopeType.CONVERSATION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:36
+#, no-c-format
+msgid ""
+"Defines the default context of the component. The possible values are "
+"defined by the <literal>ScopeType</literal> enumeration: <literal>EVENT, "
+"PAGE, CONVERSATION, SESSION, BUSINESS_PROCESS, APPLICATION, STATELESS</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:39
+#, no-c-format
+msgid ""
+"When no scope is explicitly specified, the default depends upon the "
+"component type. For stateless session beans, the default is "
+"<literal>STATELESS</literal>. For entity beans and stateful session beans, "
+"the default is <literal>CONVERSATION</literal>. For JavaBeans, the default "
+"is <literal>EVENT</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:45
+#, no-c-format
+msgid "@Role"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:47
+#, no-c-format
+msgid "@Role(name=\"roleName\", scope=ScopeType.SESSION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:48
+#, no-c-format
+msgid ""
+"Allows a Seam component to be bound to multiple contexts variables. The "
+"<literal>@Name</literal>/<literal>@Scope</literal> annotations define a "
+"\"default role\". Each <literal>@Role</literal> annotation defines an "
+"additional role."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:53
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the context variable name."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:58
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; the context variable scope. When no scope "
+"is explicitly specified, the default depends upon the component type, as "
+"above."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:66
+#, no-c-format
+msgid "@Roles"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:68
+#, no-c-format
+msgid ""
+"@Roles({\n"
+"        @Role(name=\"user\", scope=ScopeType.CONVERSATION),\n"
+"        @Role(name=\"currentUser\", scope=ScopeType.SESSION)\n"
+"    })"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:69
+#, no-c-format
+msgid "Allows specification of multiple additional roles."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:75
+#, no-c-format
+msgid "@Intercept"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:77
+#, no-c-format
+msgid "@Intercept(InterceptionType.ALWAYS)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:78
+#, no-c-format
+msgid ""
+"Determines when Seam interceptors are active. The possible values are "
+"defined by the <literal>InterceptionType</literal> enumeration: "
+"<literal>ALWAYS, AFTER_RESTORE_VIEW, AFTER_UPDATE_MODEL_VALUES, "
+"INVOKE_APPLICATION, NEVER</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:81
+#, no-c-format
+msgid ""
+"When no interception type is explicitly specified, the default depends upon "
+"the component type. For entity beans, the default is <literal>NEVER</"
+"literal>. For session beans, message driven beans and JavaBeans, the default "
+"is <literal>ALWAYS</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:87
+#, no-c-format
+msgid "@JndiName"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:89
+#, no-c-format
+msgid "@JndiName(\"my/jndi/name\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:90
+#, no-c-format
+msgid ""
+"Specifies the JNDI name that Seam will use to look up the EJB component. If "
+"no JNDI name is explicitly specified, Seam will use the JNDI pattern "
+"specified by <literal>org.jboss.seam.core.init.jndiPattern</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:96
+#, no-c-format
+msgid "@Conversational"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:98
+#, no-c-format
+msgid "@Conversational(ifNotBegunOutcome=\"error\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:99
+#, no-c-format
+msgid ""
+"Specifies that a conversation scope component is conversational, meaning "
+"that no method of the component can be called unless a long-running "
+"conversation started by this component is active (unless the method would "
+"begin a new long-running conversation)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:105
+#, no-c-format
+msgid "<literal>@Startup</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:107
+#, no-c-format
+msgid "@Startup(depends={\"org.jboss.core.jndi\", \"org.jboss.core.jta\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:108
+#, no-c-format
+msgid ""
+"Specifies that an application scope component is started immediately at "
+"initialization time. This is mainly used for certain built-in components "
+"that bootstrap critical infrastructure such as JNDI, datasources, etc."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:111
+#, no-c-format
+msgid "<programlisting>@Startup</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:112
+#, no-c-format
+msgid ""
+"Specifies that a session scope component is started immediately at session "
+"creation time."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:117
+#, no-c-format
+msgid ""
+"<literal>depends</literal> &mdash; specifies that the named components must "
+"be started first, if they are installed."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:125
+#, no-c-format
+msgid "@Install"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:127
+#, no-c-format
+msgid "@Install(false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:128
+#, no-c-format
+msgid ""
+"Specifies whether or not a component should be installed by default. The "
+"lack of an @Install annotation indicates a component should be installed."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:131
+#, no-c-format
+msgid "@Install(dependencies=\"org.jboss.seam.core.jbpm\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:132
+#, no-c-format
+msgid ""
+"Specifies that a component should only be stalled if the components listed "
+"as dependencies are also installed."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:135
+#, no-c-format
+msgid "@Install(genericDependencies=ManagedQueueSender.class)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:136
+#, no-c-format
+msgid ""
+"Specifies that a component should only be installed if a component that is "
+"implemented by a certain class is installed. This is useful when the "
+"dependency doesn't have a single well-known name."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:139
+#, no-c-format
+msgid "@Install(classDependencies=\"org.hibernate.Session\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:140
+#, no-c-format
+msgid ""
+"Specifies that a component should only be installed if the named class is in "
+"the classpath."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:143
+#, no-c-format
+msgid "@Install(precedence=BUILT_IN)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:144
+#, no-c-format
+msgid ""
+"Specifies the precedence of the component. If multiple components with the "
+"same name exist, the one with the higher precedence will be installed. The "
+"defined precendence values are:"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:149
+#, no-c-format
+msgid ""
+"<literal>BUILT_IN</literal> &mdash; Precedence of all built-in Seam "
+"components"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:154
+#, no-c-format
+msgid ""
+"<literal>FRAMEWORK</literal> &mdash; Precedence to use for components of "
+"frameworks which extend Seam"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:159
+#, no-c-format
+msgid ""
+"<literal>APPLICATION</literal> &mdash; Predence of application components "
+"(the default precedence)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:164
+#, no-c-format
+msgid ""
+"<literal>DEPLOYMENT</literal> &mdash; Precedence to use for components which "
+"override application components in a particular deployment"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:172
+#, no-c-format
+msgid "@Synchronized"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:174
+#, no-c-format
+msgid "@Synchronized(timeout=1000)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:175
+#, no-c-format
+msgid ""
+"Specifies that a component is accessed concurrently by multiple clients, and "
+"that Seam should serialize requests. If a request is not able to obtain its "
+"lock on the component in the given timeout period, an exception will be "
+"raised."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:181
+#, no-c-format
+msgid "<literal>@ReadOnly</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:183
+#, no-c-format
+msgid "<programlisting>@ReadOnly</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:184
+#, no-c-format
+msgid ""
+"Specifies that a JavaBean component or component method does not require "
+"state replication at the end of the invocation."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:193
+#, no-c-format
+msgid "Annotations for bijection"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:194
+#, no-c-format
+msgid ""
+"The next two annotations control bijection. These attributes occur on "
+"component instance variables or property accessor methods."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:199
+#, no-c-format
+msgid "<literal>@In</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:201
+#, no-c-format
+msgid "<programlisting>@In</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:202
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. If the context "
+"variable is null, an exception will be thrown."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:205
+#, no-c-format
+msgid "@In(required=false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:206
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. The context variable "
+"may be null."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:209
+#, no-c-format
+msgid "@In(create=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:210
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. If the context "
+"variable is null, an instance of the component is instantiated by Seam."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:213
+#, no-c-format
+msgid "@In(value=\"contextVariableName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:214 Annotations.xml:259
+#, no-c-format
+msgid ""
+"Specifies the name of the context variable explicitly, instead of using the "
+"annotated instance variable name."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:217
+#, no-c-format
+msgid "@In(value=\"#{customer.addresses['shipping']}\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:218
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected by evaluating a JSF "
+"EL expression at the beginning of each component invocation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:223
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"Default to the name of the component attribute. Alternatively, specifies a "
+"JSF EL expression, surrounded by <literal>#{...}</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:228
+#, no-c-format
+msgid ""
+"<literal>create</literal> &mdash; specifies that Seam should instantiate the "
+"component with the same name as the context variable if the context variable "
+"is undefined (null) in all contexts. Default to false."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:233
+#, no-c-format
+msgid ""
+"<literal>required</literal> &mdash; specifies Seam should throw an exception "
+"if the context variable is undefined in all contexts."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:241
+#, no-c-format
+msgid "<literal>@Out</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:243
+#, no-c-format
+msgid "<programlisting>@Out</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:244
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is a Seam component is to be "
+"outjected to its context variable at the end of the invocation. If the "
+"attribute is null, an exception is thrown."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:247
+#, no-c-format
+msgid "@Out(required=false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:248
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is a Seam component is to be "
+"outjected to its context variable at the end of the invocation. The "
+"attribute may be null."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:251
+#, no-c-format
+msgid "@Out(scope=ScopeType.SESSION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:252
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is <emphasis>not</emphasis> a Seam "
+"component type is to be outjected to a specific scope at the end of the "
+"invocation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:255
+#, no-c-format
+msgid ""
+"Alternatively, if no scope is explicitly specified, the scope of the "
+"component with the <literal>@Out</literal> attribute is used (or the "
+"<literal>EVENT</literal> scope if the component is stateless)."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:258
+#, no-c-format
+msgid "@Out(value=\"contextVariableName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:264
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"Default to the name of the component attribute."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:269
+#, no-c-format
+msgid ""
+"<literal>required</literal> &mdash; specifies Seam should throw an exception "
+"if the component attribute is null during outjection."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:277
+#, no-c-format
+msgid ""
+"Note that it is quite common for these annotations to occur together, for "
+"example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:280
+#, no-c-format
+msgid "@In(create=true) @Out private User currentUser;"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:281
+#, no-c-format
+msgid ""
+"The next annotation supports the <emphasis>manager component</emphasis> "
+"pattern, where a Seam component that manages the lifecycle of an instance of "
+"some other class that is to be injected. It appears on a component getter "
+"method."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:286
+#, no-c-format
+msgid "<literal>@Unwrap</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:288
+#, no-c-format
+msgid "<programlisting>@Unwrap</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:289
+#, no-c-format
+msgid ""
+"Specifies that the object returned by the annotated getter method is the "
+"thing that is injected instead of the component instance itself."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:295
+#, no-c-format
+msgid ""
+"The next annotation supports the <emphasis>factory component</emphasis> "
+"pattern, where a Seam component is responsible for initializing the value of "
+"a context variable. This is especially useful for initializing any state "
+"needed for rendering the response to a non-faces request. It appears on a "
+"component method."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:300
+#, no-c-format
+msgid "@Factory"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:302
+#, no-c-format
+msgid "@Factory(\"processInstance\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:303
+#, no-c-format
+msgid ""
+"Specifies that the method of the component is used to initialize the value "
+"of the named context variable, when the context variable has no value. This "
+"style is used with methods that return <literal>void</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:306
+#, no-c-format
+msgid "@Factory(\"processInstance\", scope=CONVERSATION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:307
+#, no-c-format
+msgid ""
+"Specifies that the method returns a value that Seam should use to initialize "
+"the value of the named context variable, when the context variable has no "
+"value. This style is used with methods that return a value. If no scope is "
+"explicitly specified, the scope of the component with the <literal>@Factory</"
+"literal> method is used (unless the component is stateless, in which case "
+"the <literal>EVENT</literal> context is used)."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:312
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"If the method is a getter method, default to the JavaBeans property name."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:317
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; specifies the scope that Seam should bind "
+"the returned value to. Only meaningful for factory methods which return a "
+"value."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:325
+#, no-c-format
+msgid "This annotation lets you inject a <literal>Log</literal>:"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:330
+#, no-c-format
+msgid "@Logger"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:332
+#, no-c-format
+msgid "@Logger(\"categoryName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:333
+#, no-c-format
+msgid ""
+"Specifies that a component field is to be injected with an instance of "
+"<literal>org.jboss.seam.log.Log</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:338
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the log category. "
+"Default to the name of the component class."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:346
+#, no-c-format
+msgid "The last annotation lets you inject a request parameter value:"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:351
+#, no-c-format
+msgid "@RequestParameter"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:353
+#, no-c-format
+msgid "@RequestParameter(\"parameterName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:354
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected with the value of a "
+"request parameter. Basic type conversions are performed automatically."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:359
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the request "
+"parameter. Default to the name of the component attribute."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:370
+#, no-c-format
+msgid "Annotations for component lifecycle methods"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:371
+#, no-c-format
+msgid ""
+"These annotations allow a component to react to its own lifecycle events. "
+"They occur on methods of the component. There may be only one of each per "
+"component class."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:376
+#, no-c-format
+msgid "<literal>@Create</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:378
+#, no-c-format
+msgid "<programlisting>@Create</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:379
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when an instance of the component "
+"is instantiated by Seam. Note that create methods are only supported for "
+"JavaBeans and stateful session beans."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:385
+#, no-c-format
+msgid "<literal>@Destroy</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:387
+#, no-c-format
+msgid "<programlisting>@Destroy</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:388
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when the context ends and its "
+"context variables are destroyed. Note that create methods are only supported "
+"for JavaBeans and stateful session beans."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:391
+#, no-c-format
+msgid ""
+"Note that all stateful session bean components <emphasis>must</emphasis> "
+"define a method annotated <literal>@Destroy @Remove</literal> in order to "
+"guarantee destruction of the stateful bean when a context ends."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:394
+#, no-c-format
+msgid ""
+"Destroy methods should be used only for cleanup. <emphasis>Seam catches, "
+"logs and swallows any exception that propagates out of a destroy method.</"
+"emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:400
+#, no-c-format
+msgid "@Observer"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:402
+#, no-c-format
+msgid "@Observer(\"somethingChanged\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:403
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when a component-driven event of "
+"the specified type occurs."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:406
+#, no-c-format
+msgid "@Observer(value=\"somethingChanged\",create=false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:407
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when an event of the specified "
+"type occurs but that an instance should not be created if one doesn't exist. "
+"If an instance does not exist and create is false, the event will not be "
+"observed. The default value for create is true."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:416
+#, no-c-format
+msgid "Annotations for context demarcation"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:417
+#, no-c-format
+msgid ""
+"These annotations provide declarative conversation demarcation. They appear "
+"on methods of Seam components, usually action listener methods."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:420
+#, no-c-format
+msgid ""
+"Every web request has a conversation context associated with it. Most of "
+"these conversations end at the end of the request. If you want a "
+"conversation that span multiple requests, you must \"promote\" the current "
+"conversation to a <emphasis>long-running conversation</emphasis> by calling "
+"a method marked with <literal>@Begin</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:425
+#, no-c-format
+msgid "<literal>@Begin</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:427
+#, no-c-format
+msgid "<programlisting>@Begin</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:428
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation begins when this method returns a "
+"non-null outcome without exception."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:431
+#, no-c-format
+msgid "@Begin(ifOutcome={\"success\", \"continue\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:432
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation begins when this action listener "
+"method returns with one of the given outcomes."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:435
+#, no-c-format
+msgid "@Begin(join=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:436
+#, no-c-format
+msgid ""
+"Specifies that if a long-running conversation is already in progress, the "
+"conversation context is simply propagated."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:439
+#, no-c-format
+msgid "@Begin(nested=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:440
+#, no-c-format
+msgid ""
+"Specifies that if a long-running conversation is already in progress, a new "
+"<emphasis>nested</emphasis> conversation context begins. The nested "
+"conversation will end when the next <literal>@End</literal> is encountered, "
+"and the outer conversation will resume. It is perfectly legal for multiple "
+"nested conversations to exist concurrently in the same outer conversation."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:443
+#, no-c-format
+msgid "@Begin(pageflow=\"process definition name\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:444
+#, no-c-format
+msgid ""
+"Specifies a jBPM process definition name that defines the pageflow for this "
+"conversation."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:447
+#, no-c-format
+msgid "@Begin(flushMode=FlushModeType.MANUAL)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:448
+#, no-c-format
+msgid ""
+"Specify the flush mode of any Seam-managed persistence contexts. "
+"<literal>flushMode=FlushModeType.MANUAL</literal> supports the use of "
+"<emphasis>atomic conversations</emphasis> where all write operations are "
+"queued in the conversation context until an explicit call to <literal>flush()"
+"</literal> (which usually occurs at the end of the conversation)."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:454
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in a new long-running conversation context."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:459
+#, no-c-format
+msgid ""
+"<literal>join</literal> &mdash; determines the behavior when a long-running "
+"conversation is already in progress. If <literal>true</literal>, the context "
+"is propagated. If <literal>false</literal>, an exception is thrown. Default "
+"to <literal>false</literal>. This setting is ignored when "
+"<literal>nested=true</literal> is specified"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:464
+#, no-c-format
+msgid ""
+"<literal>nested</literal> &mdash; specifies that a nested conversation "
+"should be started if a long-running conversation is already in progress."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:469 Annotations.xml:526 Annotations.xml:550
+#, no-c-format
+msgid ""
+"<literal>flushMode</literal> &mdash; set the flush mode of any Seam-managed "
+"Hibernate sessions or JPA persistence contexts that are created during this "
+"conversation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:474
+#, no-c-format
+msgid ""
+"<literal>pageflow</literal> &mdash; a process definition name of a jBPM "
+"process definition deployed via <literal>org.jboss.seam.core.jbpm."
+"pageflowDefinitions.</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:483
+#, no-c-format
+msgid "<literal>@End</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:485
+#, no-c-format
+msgid "<programlisting>@End</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:486
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation ends when this method returns a "
+"non-null outcome without exception."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:489
+#, no-c-format
+msgid ""
+"@End(ifOutcome={\"success\", \"error\"}, evenIfException={SomeException."
+"class, OtherException.class})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:490
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation ends when this action listener "
+"method returns with one of the given outcomes or throws one of the specified "
+"classes of exception."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:496
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in the end of the current long-running conversation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:501 Annotations.xml:585
+#, no-c-format
+msgid ""
+"<literal>beforeRedirect</literal> &mdash; by default, the conversation will "
+"not actually be destroyed until after any redirect has occurred. Setting "
+"<literal>beforeRedirect=true</literal> specifies that the conversation "
+"should be destroyed at the end of the current request, and that the redirect "
+"will be processed in a new temporary conversation context."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:510
+#, no-c-format
+msgid "<literal>@StartTask</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:512
+#, no-c-format
+msgid "<programlisting>@StartTask</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:513
+#, no-c-format
+msgid ""
+"\"Starts\" a jBPM task. Specifies that a long-running conversation begins "
+"when this method returns a non-null outcome without exception. This "
+"conversation is associated with the jBPM task specified in the named request "
+"parameter. Within the context of this conversation, a business process "
+"context is also defined, for the business process instance of the task "
+"instance."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:516
+#, no-c-format
+msgid ""
+"The jBPM <literal>TaskInstance</literal> will be available in a request "
+"context variable named <literal>taskInstance</literal>. The jPBM "
+"<literal>ProcessInstance</literal> will be available in a request context "
+"variable named <literal>processInstance</literal>. (Of course, these objects "
+"are available for injection via <literal>@In</literal>.)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:521 Annotations.xml:545
+#, no-c-format
+msgid ""
+"<literal>taskIdParameter</literal> &mdash; the name of a request parameter "
+"which holds the id of the task. Default to <literal>\"taskId\"</literal>, "
+"which is also the default used by the Seam <literal>taskList</literal> JSF "
+"component."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:534
+#, no-c-format
+msgid "<literal>@BeginTask</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:536
+#, no-c-format
+msgid "<programlisting>@BeginTask</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:537
+#, no-c-format
+msgid ""
+"Resumes work on an incomplete jBPM task. Specifies that a long-running "
+"conversation begins when this method returns a non-null outcome without "
+"exception. This conversation is associated with the jBPM task specified in "
+"the named request parameter. Within the context of this conversation, a "
+"business process context is also defined, for the business process instance "
+"of the task instance."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:540
+#, no-c-format
+msgid ""
+"The jBPM <literal>TaskInstance</literal> will be available in a request "
+"context variable named <literal>taskInstance</literal>. The jPBM "
+"<literal>ProcessInstance</literal> will be available in a request context "
+"variable named <literal>processInstance</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:558
+#, no-c-format
+msgid "<literal>@EndTask</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:560
+#, no-c-format
+msgid "<programlisting>@EndTask</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:561
+#, no-c-format
+msgid ""
+"\"Ends\" a jBPM task. Specifies that a long-running conversation ends when "
+"this method returns a non-null outcome, and that the current task is "
+"complete. Triggers a jBPM transition. The actual transition triggered will "
+"be the default transition unless the application has called "
+"<literal>Transition.setName()</literal> on the built-in component named "
+"<literal>transition</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:564
+#, no-c-format
+msgid "@EndTask(transition=\"transitionName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:565
+#, no-c-format
+msgid "Triggers the given jBPM transition."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:568
+#, no-c-format
+msgid "@EndTask(ifOutcome={\"success\", \"continue\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:569
+#, no-c-format
+msgid ""
+"Specifies that the task ends when this method returns one of the listed "
+"outcomes."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:575
+#, no-c-format
+msgid ""
+"<literal>transition</literal> &mdash; the name of the jBPM transition to be "
+"triggered when ending the task. Defaults to the default transition."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:580
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in the end of the task."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:594
+#, no-c-format
+msgid "@CreateProcess"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:596
+#, no-c-format
+msgid "@CreateProcess(definition=\"process definition name\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:597
+#, no-c-format
+msgid ""
+"Creates a new jBPM process instance when the method returns a non-null "
+"outcome without exception. The <literal>ProcessInstance</literal> object "
+"will be available in a context variable named <literal>processInstance</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:602
+#, no-c-format
+msgid ""
+"<literal>definition</literal> &mdash; the name of the jBPM process "
+"definition deployed via <literal>org.jboss.seam.core.jbpm."
+"processDefinitions</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:610
+#, no-c-format
+msgid "@ResumeProcess"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:612
+#, no-c-format
+msgid "@ResumeProcess(processIdParameter=\"processId\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:613
+#, no-c-format
+msgid ""
+"Re-enters the scope of an existing jBPM process instance when the method "
+"returns a non-null outcome without exception. The <literal>ProcessInstance</"
+"literal> object will be available in a context variable named "
+"<literal>processInstance</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:618
+#, no-c-format
+msgid ""
+"<literal>processIdParameter</literal> &mdash; the name a request parameter "
+"holding the process id. Default to <literal>\"processId\"</literal>."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:629
+#, no-c-format
+msgid "Annotations for transaction demarcation"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:630
+#, no-c-format
+msgid ""
+"Seam provides an annotation that lets you force a rollback of the JTA "
+"transaction for certain action listener outcomes."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:635
+#, no-c-format
+msgid "@Rollback"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:637
+#, no-c-format
+msgid "@Rollback(ifOutcome={\"failure\", \"not-found\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:638
+#, no-c-format
+msgid ""
+"If the outcome of the method matches any of the listed outcomes, or if no "
+"outcomes are listed, set the transaction to rollback only when the method "
+"completes."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:643
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; the JSF outcomes that cause a "
+"transaction rollback (no outcomes is interpreted to mean any outcome)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:651
+#, no-c-format
+msgid "<literal>@Transactional</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:653
+#, no-c-format
+msgid "<programlisting>@Transactional</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:654
+#, no-c-format
+msgid ""
+"Specifies that a JavaBean component should have a similar transactional "
+"behavior to the default behavior of a session bean component. ie. method "
+"invocations should take place in a transaction, and if no transaction exists "
+"when the method is called, a transaction will be started just for that "
+"method. This annotation may be applied at either class or method level."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:660
+#, no-c-format
+msgid ""
+"Seam applications usually use the standard EJB3 annotations for all other "
+"transaction demarcation needs."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:666
+#, no-c-format
+msgid "Annotations for exceptions"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:667
+#, no-c-format
+msgid ""
+"These annotations let you specify how Seam should handle an exception that "
+"propagates out of a Seam component."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:672
+#, no-c-format
+msgid "@Redirect"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:674
+#, no-c-format
+msgid "@Redirect(viewId=\"error.jsp\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:675
+#, no-c-format
+msgid ""
+"Specifies that the annotated exception causes a browser redirect to a "
+"specified view id."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:680
+#, no-c-format
+msgid ""
+"<literal>viewId</literal> &mdash; specifies the JSF view id to redirect to."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:685
+#, no-c-format
+msgid ""
+"<literal>message</literal> &mdash; a message to be displayed, default to the "
+"exception message."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:690 Annotations.xml:716
+#, no-c-format
+msgid ""
+"<literal>end</literal> &mdash; specifies that the long-running conversation "
+"should end, default to <literal>false</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:698
+#, no-c-format
+msgid "@HttpError"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:700
+#, no-c-format
+msgid "@HttpError(errorCode=404)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:701
+#, no-c-format
+msgid "Specifies that the annotated exception causes a HTTP error to be sent."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:706
+#, no-c-format
+msgid ""
+"<literal>errorCode</literal> &mdash; the HTTP error code, default to "
+"<literal>500</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:711
+#, no-c-format
+msgid ""
+"<literal>message</literal> &mdash; a message to be sent with the HTTP error, "
+"default to the exception message."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:727
+#, no-c-format
+msgid "Annotations for validation"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:728
+#, no-c-format
+msgid ""
+"This annotation triggers Hibernate Validator. It appears on a method of a "
+"Seam component, almost always an action listener method."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:731
+#, no-c-format
+msgid ""
+"Please refer to the documentation for the Hibernate Annotations package for "
+"information about the annotations defined by the Hibernate Validator "
+"framework."
+msgstr ""
+
+#. Tag: emphasis
+#: Annotations.xml:735
+#, no-c-format
+msgid ""
+"Note that use of <literal>@IfInvalid</literal> is now semi-deprecated and "
+"<literal>&lt;s:validateAll&gt;</literal> is now preferred."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:739
+#, no-c-format
+msgid "@IfInvalid"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:741
+#, no-c-format
+msgid "@IfInvalid(outcome=\"invalid\", refreshEntities=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:742
+#, no-c-format
+msgid ""
+"Specifies that Hibernate Validator should validate the component before the "
+"method is invoked. If the invocation fails, the specified outcome will be "
+"returned, and the validation failure messages returned by Hibernate "
+"Validator will be added to the <literal>FacesContext</literal>. Otherwise, "
+"the invocation will proceed."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:747
+#, no-c-format
+msgid ""
+"<literal>outcome</literal> &mdash; the JSF outcome when validation fails."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:752
+#, no-c-format
+msgid ""
+"<literal>refreshEntities</literal> &mdash; specifies that any invalid entity "
+"in the managed state should be refreshed from the database when validation "
+"fails. Default to <literal>false</literal>. (Useful with extended "
+"persistence contexts.)"
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:763
+#, no-c-format
+msgid "Annotations for Seam Remoting"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:764
+#, no-c-format
+msgid ""
+"Seam Remoting requires that the local interface of a session bean be "
+"annotated with the following annotation:"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:769
+#, no-c-format
+msgid "@WebRemote"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:771
+#, no-c-format
+msgid "@WebRemote(exclude=\"path.to.exclude\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:772
+#, no-c-format
+msgid ""
+"Indicates that the annotated method may be called from client-side "
+"JavaScript. The <literal>exclude</literal> property is optional and allows "
+"objects to be excluded from the result's object graph (see the Remoting "
+"chapter for more details)."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:781
+#, no-c-format
+msgid "Annotations for Seam interceptors"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:782
+#, no-c-format
+msgid "The following annotations appear on Seam interceptor classes."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:785
+#, no-c-format
+msgid ""
+"Please refer to the documentation for the EJB 3.0 specification for "
+"information about the annotations required for EJB interceptor definition."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:790
+#, no-c-format
+msgid "@Interceptor"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:792
+#, no-c-format
+msgid "@Interceptor(stateless=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:793
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is stateless and Seam may optimize "
+"replication."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:796
+#, no-c-format
+msgid "@Interceptor(type=CLIENT)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:797
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is a \"client-side\" interceptor that is "
+"called before the EJB container."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:800
+#, no-c-format
+msgid "@Interceptor(around={SomeInterceptor.class, OtherInterceptor.class})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:801
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is positioned higher in the stack than the "
+"given interceptors."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:804
+#, no-c-format
+msgid "@Interceptor(within={SomeInterceptor.class, OtherInterceptor.class})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:805
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is positioned deeper in the stack than the "
+"given interceptors."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:814
+#, no-c-format
+msgid "Annotations for asynchronicity"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:815
+#, no-c-format
+msgid ""
+"The following annotations are used to declare an asynchronous method, for "
+"example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:818
+#, no-c-format
+msgid ""
+"@Asynchronous public void scheduleAlert(Alert alert, @Expiration Date date) "
+"{ ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:819
+#, no-c-format
+msgid ""
+"@Asynchronous public Timer scheduleAlerts(Alert alert, @Expiration Date "
+"date, \n"
+"    @IntervalDuration long interval) { ... }"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:822
+#, no-c-format
+msgid "<literal>@Asynchronous</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:824
+#, no-c-format
+msgid "<programlisting>@Asynchronous</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:825
+#, no-c-format
+msgid "Specifies that the method call is processed asynchronously."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:831
+#, no-c-format
+msgid "<literal>@Duration</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:833
+#, no-c-format
+msgid "<programlisting>@Duration</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:834
+#, no-c-format
+msgid ""
+"Specifies that a parameter of the asynchronous call is the duration before "
+"the call is processed (or first processed for recurring calls)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:840
+#, no-c-format
+msgid "<literal>@Expiration</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:842
+#, no-c-format
+msgid "<programlisting>@Expiration</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:843
+#, no-c-format
+msgid ""
+"Specifies that a parameter of the asynchronous call is the datetime at which "
+"the call is processed (or first processed for recurring calls)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:849
+#, no-c-format
+msgid "<literal>@IntervalDuration</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:851
+#, no-c-format
+msgid "<programlisting>@IntervalDuration</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:852
+#, no-c-format
+msgid ""
+"Specifies that an asynchronous method call recurs, and that the annotationed "
+"parameter is duration between recurrences."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:861
+#, no-c-format
+msgid "Annotations for use with JSF <literal>dataTable</literal>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:862
+#, no-c-format
+msgid ""
+"The following annotations make it easy to implement clickable lists backed "
+"by a stateful session bean. They appear on attributes."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:867
+#, no-c-format
+msgid "@DataModel"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:869
+#, no-c-format
+msgid "@DataModel(\"variableName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:870
+#, no-c-format
+msgid ""
+"Exposes an attribute of type <literal>List</literal>, <literal>Map</"
+"literal>, <literal>Set</literal> or <literal>Object[]</literal> as a JSF "
+"<literal>DataModel</literal> into the scope of the owning component (or the "
+"<literal>EVENT</literal> scope if the owning component is "
+"<literal>STATELESS</literal>). In the case of <literal>Map</literal>, each "
+"row of the <literal>DataModel</literal> is a <literal>Map.Entry</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:875
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; name of the conversation context variable. "
+"Default to the attribute name."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:880
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; if <literal>scope=ScopeType.PAGE</literal> "
+"is explicitly specified, the <literal>DataModel</literal> will be kept in "
+"the <literal>PAGE</literal> context."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:888
+#, no-c-format
+msgid "<literal>@DataModelSelection</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:890
+#, no-c-format
+msgid "<programlisting>@DataModelSelection</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:891
+#, no-c-format
+msgid ""
+"Injects the selected value from the JSF <literal>DataModel</literal> (this "
+"is the element of the underlying collection, or the map value)."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:896 Annotations.xml:912
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; name of the conversation context variable. "
+"Not needed if there is exactly one <literal>@DataModel</literal> in the "
+"component."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:904
+#, no-c-format
+msgid "<literal>@DataModelSelectionIndex</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:906
+#, no-c-format
+msgid "<programlisting>@DataModelSelectionIndex</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:907
+#, no-c-format
+msgid ""
+"Exposes the selection index of the JSF <literal>DataModel</literal> as an "
+"attribute of the component (this is the row number of the underlying "
+"collection, or the map key)."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:923
+#, no-c-format
+msgid "Meta-annotations for databinding"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:924
+#, no-c-format
+msgid ""
+"These meta-annotations make it possible to implement similar functionality "
+"to <literal>@DataModel</literal> and <literal>@DataModelSelection</literal> "
+"for other datastructures apart from lists."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:929
+#, no-c-format
+msgid "@DataBinderClass"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:931
+#, no-c-format
+msgid "@DataBinderClass(DataModelBinder.class)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:932
+#, no-c-format
+msgid "Specifies that an annotation is a databinding annotation."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:938
+#, no-c-format
+msgid "@DataSelectorClass"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:940
+#, no-c-format
+msgid "@DataSelectorClass(DataModelSelector.class)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:941
+#, no-c-format
+msgid "Specifies that an annotation is a dataselection annotation."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:950
+#, no-c-format
+msgid "Annotations for packaging"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:951
+#, no-c-format
+msgid ""
+"This annotation provides a mechanism for declaring information about a set "
+"of components that are packaged together. It can be applied to any Java "
+"package."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:956
+#, no-c-format
+msgid "@Namespace"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:958
+#, no-c-format
+msgid "@Namespace(value=\"http://jboss.com/products/seam/example/seampay\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:959
+#, no-c-format
+msgid ""
+"Specifies that components in the current package are associated with the "
+"given namespace. The declared namespace can be used as an XML namespace in a "
+"<literal>components.xml</literal> file to simplify application configuration."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:962
+#, no-c-format
+msgid ""
+"@Namespace(value=\"http://jboss.com/products/seam/core\", prefix=\"org.jboss."
+"seam.core\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:963
+#, no-c-format
+msgid ""
+"Specifies a namespace to associate with a given package. Additionally, it "
+"specifies a component name prefix to be applied to component names specified "
+"in the XML file. For example, an XML element named <literal>microcontainer</"
+"literal> that is associated with this namespace would be understood to "
+"actually refere to a component named <literal>org.jboss.seam.core."
+"microcontainer</literal>."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Book_Info.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Book_Info.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Book_Info.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,38 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Book_Info.xml:10
+#, no-c-format
+msgid "Seam - Contextual Components"
+msgstr ""
+
+#. Tag: subtitle
+#: Book_Info.xml:11
+#, no-c-format
+msgid "A Framework for Java EE 5"
+msgstr ""
+
+#. Tag: para
+#: Book_Info.xml:15
+#, no-c-format
+msgid "This book is a Reference Guide for Seam"
+msgstr ""
+
+#. Tag: holder
+#: Book_Info.xml:36
+#, no-c-format
+msgid "&FORMAL-RHI;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Cache.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Cache.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Cache.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,318 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Cache.xml:10
+#, no-c-format
+msgid "Caching"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:11
+#, no-c-format
+msgid ""
+"In almost all enterprise applications, the database is the primary "
+"bottleneck, and the least scalable tier of the runtime environment. People "
+"from a PHP/Ruby environment will try to tell you that so-called \"shared "
+"nothing\" architectures scale well. While that may be literally true, I "
+"don't know of many interesting multi-user applications which can be "
+"implemented with no sharing of resources between different nodes of the "
+"cluster. What these silly people are really thinking of is a \"share nothing "
+"except for the database\" architecture. Of course, sharing the database is "
+"the primary problem with scaling a multi-user application&mdash;so the claim "
+"that this architecture is highly scalable is absurd, and tells you a lot "
+"about the kind of applications that these folks spend most of their time "
+"working on."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:14
+#, no-c-format
+msgid ""
+"Almost anything we can possibly do to share the database <emphasis>less "
+"often</emphasis> is worth doing."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:17
+#, no-c-format
+msgid ""
+"This calls for a cache. Well, not just one cache. A well designed Seam "
+"application will feature a rich, multi-layered caching strategy that impacts "
+"every layer of the application:"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:22
+#, no-c-format
+msgid ""
+"The database, of course, has its own cache. This is super-important, but "
+"can't scale like a cache in the application tier."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:27
+#, no-c-format
+msgid ""
+"Your ORM solution (Hibernate, or some other JPA implementation) has a second-"
+"level cache of data from the database. This is a very powerful capability, "
+"but is often misused. In a clustered environment, keeping the data in the "
+"cache transactionally consistent across the whole cluster, and with the "
+"database, is quite expensive. It makes most sense for data which is shared "
+"between many users, and is updated rarely. In traditional stateless "
+"architectures, people often try to use the second-level cache for "
+"conversational state. This is always bad, and is especially wrong in Seam."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:32
+#, no-c-format
+msgid ""
+"The Seam conversation context is a cache of conversational state. Components "
+"you put into the conversation context can hold and cache state relating to "
+"the current user interaction."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:37
+#, no-c-format
+msgid ""
+"In particular, the Seam-managed persistence context (or an extended EJB "
+"container-managed persistence context associated with a conversation-scoped "
+"stateful session bean) acts as a cache of data that has been read in the "
+"current conversation. This cache tends to have a pretty high hitrate! Seam "
+"optimizes the replication of Seam-managed persistence contexts in a "
+"clustered environment, and there is no requirement for transactional "
+"consistency with the database (optimistic locking is sufficient) so you "
+"don't need to worry too much about the performance implications of this "
+"cache, unless you read thousands of objects into a single persistence "
+"context."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:42
+#, no-c-format
+msgid ""
+"The application can cache non-transactional state in the Seam application "
+"context. State kept in the application context is of course not visible to "
+"other nodes in the cluster."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:47
+#, no-c-format
+msgid ""
+"The application can cache transactional state using the Seam "
+"<literal>pojoCache</literal> component, which integrates JBossCache into the "
+"Seam environment. This state will be visible to other nodes if you run JBoss "
+"cache in a clustered mode."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:52
+#, no-c-format
+msgid ""
+"Finally, Seam lets you cache rendered fragments of a JSF page. Unlike the "
+"ORM second-level cache, this cache is not automatically invalidated when "
+"data changes, so you need to write application code to perform explicit "
+"invalidation, or set appropriate expiration policies."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:57
+#, no-c-format
+msgid ""
+"For more information about the second-level cache, you'll need to refer to "
+"the documentation of your ORM solution, since this is an extremely complex "
+"topic. In this section we'll discuss the use of JBossCache directly, via the "
+"<literal>pojoCache</literal> component, or as the page fragment cache, via "
+"the <literal>&lt;s:cache&gt;</literal> control."
+msgstr ""
+
+#. Tag: title
+#: Cache.xml:61
+#, no-c-format
+msgid "Using JBossCache in Seam"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:62
+#, no-c-format
+msgid ""
+"The built-in <literal>pojoCache</literal> component manages an instance of "
+"<literal>org.jboss.cache.aop.PojoCache</literal>. You can safely put any "
+"immutable Java object in the cache, and it will be replicated across the "
+"cluster (assuming that replication is enabled). If you want to keep mutable "
+"objects in the cache, you'll need to run the JBossCache bytecode "
+"preprocessor to ensure that changes to the objects will be automatically "
+"detected and replicated."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:65
+#, no-c-format
+msgid ""
+"To use <literal>pojoCache</literal>, all you need to do is put the "
+"JBossCache jars in the classpath, and provide a resource named "
+"<literal>treecache.xml</literal> with an appropriate cache configuration. "
+"JBossCache has many scary and confusing configuration settings, so we won't "
+"discuss them here. Please refer to the JBossCache documentation for more "
+"information."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:68
+#, no-c-format
+msgid ""
+"For an EAR depoyment of Seam, we recommend that the JBossCache jars and "
+"configuration go directly into the EAR. Make sure you declare the jars in "
+"<literal>application.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:71
+#, no-c-format
+msgid "Now you can inject the cache into any Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:74
+#, no-c-format
+msgid ""
+"@Name(\"chatroom\")\n"
+"public class Chatroom {\n"
+"    @In PojoCache pojoCache;\n"
+"    \n"
+"    public void join(String username) {\n"
+"      try\n"
+"      {\n"
+"         Set&lt;String&gt; userList = (Set&lt;String&gt;) pojoCache.get"
+"(\"chatroom\", \"userList\");\n"
+"         if (userList==null) \n"
+"         {\n"
+"            userList = new HashSet&lt;String&gt;();\n"
+"            pojoCache.put(\"chatroom\", \"userList\", userList);\n"
+"         }\n"
+"         userList.put(username);\n"
+"      }\n"
+"      catch (CacheException ce)\n"
+"      {\n"
+"         throw new RuntimeException(ce);\n"
+"      }\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:75
+#, no-c-format
+msgid ""
+"If you want to have multiple JBossCache configurations in your application, "
+"use <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:78
+#, no-c-format
+msgid ""
+"&lt;core:pojo-cache name=\"myCache\" cfg-resource-name=\"myown/cache.xml\"/"
+"&gt;"
+msgstr ""
+
+#. Tag: title
+#: Cache.xml:82
+#, no-c-format
+msgid "Page fragment caching"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:83
+#, no-c-format
+msgid ""
+"The most interesting user of JBossCache is the <literal>&lt;s:cache&gt;</"
+"literal> tag, Seam's solution to the problem of page fragment caching in "
+"JSF. <literal>&lt;s:cache&gt;</literal> uses <literal>pojoCache</literal> "
+"internally, so you need to follow the steps listed above before you can use "
+"it. (Put the jars in the EAR, wade through the scary configuration options, "
+"etc.)"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:86
+#, no-c-format
+msgid ""
+"<literal>&lt;s:cache&gt;</literal> is used for caching some rendered content "
+"which changes rarely. For example, the welcome page of our blog displays the "
+"recent blog entries:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:89
+#, no-c-format
+msgid ""
+"&lt;s:cache key=\"recentEntries-#{blog.id}\" region=\"welcomePageFragments"
+"\"&gt;\n"
+"   &lt;h:dataTable value=\"#{blog.recentEntries}\" var=\"blogEntry\"&gt;\n"
+"      &lt;h:column&gt;\n"
+"         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"         &lt;div&gt;\n"
+"            &lt;s:formattedText value=\"#{blogEntry.body}\"/&gt;\n"
+"         &lt;/div&gt;\n"
+"      &lt;/h:column&gt;\n"
+"   &lt;/h:dataTable&gt;\n"
+"&lt;/s:cache&gt;"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:90
+#, no-c-format
+msgid ""
+"The <literal>key</literal> let's you have multiple cached versions of each "
+"page fragment. In this case, there is one cached version per blog. The "
+"<literal>region</literal> determines the JBossCache node that all version "
+"will be stored in. Different nodes may have different expiry policies. "
+"(That's the stuff you set up using the aforementioned scary configuration "
+"options.)"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:93
+#, no-c-format
+msgid ""
+"Of course, the big problem with <literal>&lt;s:cache&gt;</literal> is that "
+"it is too stupid to know when the underlying data changes (for example, when "
+"the blogger posts a new entry). So you need to evict the cached fragment "
+"manually:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:96
+#, no-c-format
+msgid ""
+"public void post() {\n"
+"    ...\n"
+"    entityManager.persist(blogEntry);\n"
+"    pojoCache.remove(\"welcomePageFragments\", \"recentEntries-\" + blog."
+"getId() );\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:97
+#, no-c-format
+msgid ""
+"Alternatively, if it is not critical that changes are immediately visible to "
+"the user, you could set a short expiry time on the JbossCache node."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Components.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Components.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Components.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2007 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Components.xml:10
+#, no-c-format
+msgid "Built-in Seam components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:11
+#, no-c-format
+msgid ""
+"This chapter describes Seam's built-in components, and their configuration "
+"properties."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:14
+#, no-c-format
+msgid ""
+"Note that you can replace any of the built in components with your own "
+"implementations simply by specifying the name of one of the built in "
+"components on your own class using <literal>@Name</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:17
+#, no-c-format
+msgid ""
+"Note also that even though all the built in components use a qualified name, "
+"most of them are aliased to unqualified names by default. These aliases "
+"specify <literal>auto-create=\"true\"</literal>, so you do not need to use "
+"<literal>create=true</literal> when injecting built-in components by their "
+"unqualified name."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:21
+#, no-c-format
+msgid "Context injection components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:22
+#, no-c-format
+msgid ""
+"The first set of built in components exist purely to support injection of "
+"various contextual objects. For example, the following component instance "
+"variable would have the Seam session context object injected:"
+msgstr ""
+
+#. Tag: programlisting
+#: Components.xml:25
+#, no-c-format
+msgid "@In private Context sessionContext;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:28
+#, no-c-format
+msgid "org.jboss.seam.core.eventContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:30
+#, no-c-format
+msgid "Manager component for the event context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:36
+#, no-c-format
+msgid "org.jboss.seam.core.pageContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:38
+#, no-c-format
+msgid "Manager component for the page context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:44
+#, no-c-format
+msgid "org.jboss.seam.core.conversationContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:46
+#, no-c-format
+msgid "Manager component for the conversation context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:52
+#, no-c-format
+msgid "org.jboss.seam.core.sessionContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:54
+#, no-c-format
+msgid "Manager component for the session context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:60
+#, no-c-format
+msgid "org.jboss.seam.core.applicationContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:62
+#, no-c-format
+msgid "Manager component for the appication context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:68
+#, no-c-format
+msgid "org.jboss.seam.core.businessProcessContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:70
+#, no-c-format
+msgid "Manager component for the business process context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:76
+#, no-c-format
+msgid "org.jboss.seam.core.facesContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:78
+#, no-c-format
+msgid ""
+"Manager component for the <literal>FacesContext</literal> context object "
+"(not a true Seam context)"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:84 Components.xml:267 Components.xml:441 Components.xml:572
+#, no-c-format
+msgid "All of these components are always installed."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:90
+#, no-c-format
+msgid "Utility components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:91
+#, no-c-format
+msgid "These components are merely useful."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:96
+#, no-c-format
+msgid "org.jboss.seam.core.facesMessages"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:98
+#, no-c-format
+msgid "Allows faces success messages to propagate across a browser redirect."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:103
+#, no-c-format
+msgid ""
+"<literal>add(FacesMessage facesMessage)</literal> &mdash; add a faces "
+"message, which will be displayed during the next render response phase that "
+"occurs in the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:108
+#, no-c-format
+msgid ""
+"<literal>add(String messageTemplate)</literal> &mdash; add a faces message, "
+"rendered from the given message template which may contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:113
+#, no-c-format
+msgid ""
+"<literal>add(Severity severity, String messageTemplate)</literal> &mdash; "
+"add a faces message, rendered from the given message template which may "
+"contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:118
+#, no-c-format
+msgid ""
+"<literal>addFromResourceBundle(String key)</literal> &mdash; add a faces "
+"message, rendered from a message template defined in the Seam resource "
+"bundle which may contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:123
+#, no-c-format
+msgid ""
+"<literal>addFromResourceBundle(Severity severity, String key)</literal> "
+"&mdash; add a faces message, rendered from a message template defined in the "
+"Seam resource bundle which may contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:128
+#, no-c-format
+msgid "<literal>clear()</literal> &mdash; clear all messages."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:136
+#, no-c-format
+msgid "org.jboss.seam.core.redirect"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:138
+#, no-c-format
+msgid ""
+"A convenient API for performing redirects with parameters (this is "
+"especially useful for bookmarkable search results screens)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:143
+#, no-c-format
+msgid ""
+"<literal>redirect.viewId</literal> &mdash; the JSF view id to redirect to."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:148
+#, no-c-format
+msgid ""
+"<literal>redirect.conversationPropagationEnabled</literal> &mdash; "
+"determines whether the conversation will propagate across the redirect."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:153
+#, no-c-format
+msgid ""
+"<literal>redirect.parameters</literal> &mdash; a map of request parameter "
+"name to value, to be passed in the redirect request."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:158
+#, no-c-format
+msgid "<literal>execute()</literal> &mdash; perform the redirect immediately."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:163
+#, no-c-format
+msgid ""
+"<literal>captureCurrentRequest()</literal> &mdash; stores the view id and "
+"request parameters of the current GET request (in the conversation context), "
+"for later use by calling <literal>execute()</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:171
+#, no-c-format
+msgid "org.jboss.seam.core.httpError"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:173
+#, no-c-format
+msgid "A convenient API for sending HTTP errors."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:179
+#, no-c-format
+msgid "org.jboss.seam.core.events"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:181
+#, no-c-format
+msgid ""
+"An API for raising events that can be observed via <literal>@Observer</"
+"literal> methods, or method bindings in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:186
+#, no-c-format
+msgid ""
+"<literal>raiseEvent(String type)</literal> &mdash; raise an event of a "
+"particular type and distribute to all observers."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:191
+#, no-c-format
+msgid ""
+"<literal>raiseAsynchronousEvent(String type)</literal> &mdash; raise an "
+"event to be processed asynchronously by the EJB3 timer service."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:196
+#, no-c-format
+msgid ""
+"<literal>raiseTimedEvent(String type, ....)</literal> &mdash; schedule an "
+"event to be processed asynchronously by the EJB3 timer service."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:201
+#, no-c-format
+msgid ""
+"<literal>addListener(String type, String methodBinding)</literal> &mdash; "
+"add an observer for a particular event type."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:209
+#, no-c-format
+msgid "org.jboss.seam.core.interpolator"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:211
+#, no-c-format
+msgid "An API for interpolating the values of JSF EL expressions in Strings."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:216
+#, no-c-format
+msgid ""
+"<literal>interpolate(String template)</literal> &mdash; scan the template "
+"for JSF EL expressions of the form <literal>#{...}</literal> and replace "
+"them with their evaluated values."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:224
+#, no-c-format
+msgid "org.jboss.seam.core.expressions"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:226
+#, no-c-format
+msgid "An API for creating value and method bindings."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:231
+#, no-c-format
+msgid ""
+"<literal>createValueBinding(String expression)</literal> &mdash; create a "
+"value binding object."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:236
+#, no-c-format
+msgid ""
+"<literal>createMethodBinding(String expression)</literal> &mdash; create a "
+"method binding object."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:244
+#, no-c-format
+msgid "org.jboss.seam.core.pojoCache"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:246
+#, no-c-format
+msgid ""
+"Manager component for a JBoss Cache <literal>PojoCache</literal> instance."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:251
+#, no-c-format
+msgid ""
+"<literal>pojoCache.cfgResourceName</literal> &mdash; the name of the "
+"configuration file. Default to <literal>treecache.xml</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:259
+#, no-c-format
+msgid "org.jboss.seam.core.uiComponent"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:261
+#, no-c-format
+msgid ""
+"Allows access to a JSF <literal>UIComponent</literal> by its id from the EL. "
+"For example, we can write <literal>@In(\"#{uiComponent['myForm:address']."
+"value}\")</literal>."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:273
+#, no-c-format
+msgid "Components for internationalization and themes"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:274
+#, no-c-format
+msgid ""
+"The next group of components make it easy to build internationalized user "
+"interfaces using Seam."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:279
+#, no-c-format
+msgid "org.jboss.seam.core.locale"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:281
+#, no-c-format
+msgid "The Seam locale. The locale is session scoped."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:287
+#, no-c-format
+msgid "org.jboss.seam.core.timezone"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:289
+#, no-c-format
+msgid "The Seam timezone. The timezone is session scoped."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:295
+#, no-c-format
+msgid "org.jboss.seam.core.resourceBundle"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:297
+#, no-c-format
+msgid ""
+"The Seam resource bundle. The resource bundle is session scoped. The Seam "
+"resource bundle performs a depth-first search for keys in a list of Java "
+"resource bundles."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:302
+#, no-c-format
+msgid ""
+"<literal>resourceBundle.bundleNames</literal> &mdash; the names of the Java "
+"resource bundles to search. Default to <literal>messages</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:310
+#, no-c-format
+msgid "org.jboss.seam.core.localeSelector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:312
+#, no-c-format
+msgid ""
+"Supports selection of the locale either at configuration time, or by the "
+"user at runtime."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:317 Components.xml:367
+#, no-c-format
+msgid "<literal>select()</literal> &mdash; select the specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:322
+#, no-c-format
+msgid ""
+"<literal>localeSelector.locale</literal> &mdash; the actual <literal>java."
+"util.Locale</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:327
+#, no-c-format
+msgid ""
+"<literal>localeSelector.localeString</literal> &mdash; the stringified "
+"representation of the locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:332
+#, no-c-format
+msgid ""
+"<literal>localeSelector.language</literal> &mdash; the language for the "
+"specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:337
+#, no-c-format
+msgid ""
+"<literal>localeSelector.country</literal> &mdash; the country for the "
+"specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:342
+#, no-c-format
+msgid ""
+"<literal>localeSelector.variant</literal> &mdash; the variant for the "
+"specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:347
+#, no-c-format
+msgid ""
+"<literal>localeSelector.supportedLocales</literal> &mdash; a list of "
+"<literal>SelectItem</literal>s representing the supported locales listed in "
+"<literal>jsf-config.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:352
+#, no-c-format
+msgid ""
+"<literal>localeSelector.cookieEnabled</literal> &mdash; specifies that the "
+"locale selection should be persisted via a cookie."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:360
+#, no-c-format
+msgid "org.jboss.seam.core.timezoneSelector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:362
+#, no-c-format
+msgid ""
+"Supports selection of the timezone either at configuration time, or by the "
+"user at runtime."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:372
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.timezone</literal> &mdash; the actual "
+"<literal>java.util.TimeZone</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:377
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.timeZoneId</literal> &mdash; the stringified "
+"representation of the timezone."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:382
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.cookieEnabled</literal> &mdash; specifies that the "
+"timezone selection should be persisted via a cookie."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:390
+#, no-c-format
+msgid "org.jboss.seam.core.messages"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:392
+#, no-c-format
+msgid ""
+"A map containing internationalized messages rendered from message templates "
+"defined in the Seam resource bundle."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:398
+#, no-c-format
+msgid "org.jboss.seam.theme.themeSelector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:400
+#, no-c-format
+msgid ""
+"Supports selection of the theme either at configuration time, or by the user "
+"at runtime."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:405
+#, no-c-format
+msgid "<literal>select()</literal> &mdash; select the specified theme."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:410
+#, no-c-format
+msgid ""
+"<literal>theme.availableThemes</literal> &mdash; the list of defined themes."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:415
+#, no-c-format
+msgid "<literal>themeSelector.theme</literal> &mdash; the selected theme."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:420
+#, no-c-format
+msgid ""
+"<literal>themeSelector.themes</literal> &mdash; a list of "
+"<literal>SelectItem</literal>s representing the defined themes."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:425
+#, no-c-format
+msgid ""
+"<literal>themeSelector.cookieEnabled</literal> &mdash; specifies that the "
+"theme selection should be persisted via a cookie."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:433
+#, no-c-format
+msgid "org.jboss.seam.theme.theme"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:435
+#, no-c-format
+msgid "A map containing theme entries."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:447
+#, no-c-format
+msgid "Components for controlling conversations"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:448
+#, no-c-format
+msgid ""
+"The next group of components allow control of conversations by the "
+"application or user interface."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:453
+#, no-c-format
+msgid "org.jboss.seam.core.conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:455
+#, no-c-format
+msgid ""
+"API for application control of attributes of the current Seam conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:460 Components.xml:475
+#, no-c-format
+msgid "<literal>getId()</literal> &mdash; returns the current conversation id"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:465
+#, no-c-format
+msgid ""
+"<literal>isNested()</literal> &mdash; is the current conversation a nested "
+"conversation?"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:470
+#, no-c-format
+msgid ""
+"<literal>isLongRunning()</literal> &mdash; is the current conversation a "
+"long-running conversation?"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:480
+#, no-c-format
+msgid ""
+"<literal>getParentId()</literal> &mdash; returns the conversation id of the "
+"parent conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:485
+#, no-c-format
+msgid ""
+"<literal>getRootId()</literal> &mdash; returns the conversation id of the "
+"root conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:490
+#, no-c-format
+msgid ""
+"<literal>setTimeout(int timeout)</literal> &mdash; sets the timeout for the "
+"current conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:495
+#, no-c-format
+msgid ""
+"<literal>setViewId(String outcome)</literal> &mdash; sets the view id to be "
+"used when switching back to the current conversation from the conversation "
+"switcher, conversation list, or breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:500
+#, no-c-format
+msgid ""
+"<literal>setDescription(String description)</literal> &mdash; sets the "
+"description of the current conversation to be displayed in the conversation "
+"switcher, conversation list, or breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:505
+#, no-c-format
+msgid ""
+"<literal>redirect()</literal> &mdash; redirect to the last well-defined view "
+"id for this conversation (useful after login challenges)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:510
+#, no-c-format
+msgid ""
+"<literal>leave()</literal> &mdash; exit the scope of this conversation, "
+"without actually ending the conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:515
+#, no-c-format
+msgid ""
+"<literal>begin()</literal> &mdash; begin a long-running conversation "
+"(equivalent to <literal>@Begin</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:520
+#, no-c-format
+msgid ""
+"<literal>beginPageflow(String pageflowName)</literal> &mdash; begin a long-"
+"running conversation with a pageflow (equivalent to <literal>@Begin(pageflow="
+"\"...\")</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:525
+#, no-c-format
+msgid ""
+"<literal>end()</literal> &mdash; end a long-running conversation (equivalent "
+"to <literal>@End</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:530
+#, no-c-format
+msgid ""
+"<literal>pop()</literal> &mdash; pop the conversation stack, returning to "
+"the parent conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:535
+#, no-c-format
+msgid ""
+"<literal>root()</literal> &mdash; return to the root conversation of the "
+"conversation stack."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:540
+#, no-c-format
+msgid ""
+"<literal>changeFlushMode(FlushModeType flushMode)</literal> &mdash; change "
+"the flush mode of the conversation."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:548
+#, no-c-format
+msgid "org.jboss.seam.core.conversationList"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:550
+#, no-c-format
+msgid "Manager component for the conversation list."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:556
+#, no-c-format
+msgid "org.jboss.seam.core.conversationStack"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:558
+#, no-c-format
+msgid "Manager component for the conversation stack (breadcrumbs)."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:564
+#, no-c-format
+msgid "org.jboss.seam.core.switcher"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:566
+#, no-c-format
+msgid "The conversation switcher."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:578
+#, no-c-format
+msgid "jBPM-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:579
+#, no-c-format
+msgid "These components are for use with jBPM."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:584
+#, no-c-format
+msgid "org.jboss.seam.core.pageflow"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:586
+#, no-c-format
+msgid "API control of Seam pageflows."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:591
+#, no-c-format
+msgid ""
+"<literal>isInProcess()</literal> &mdash; returns <literal>true</literal> if "
+"there is currently a pageflow in process"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:596
+#, no-c-format
+msgid ""
+"<literal>getProcessInstance()</literal> &mdash; returns jBPM "
+"<literal>ProcessInstance</literal> for the current pageflow"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:601
+#, no-c-format
+msgid ""
+"<literal>begin(String pageflowName)</literal> &mdash; begin a pageflow in "
+"the context of the current conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:606
+#, no-c-format
+msgid ""
+"<literal>reposition(String nodeName)</literal> &mdash; reposition the "
+"current pageflow to a particular node"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:614
+#, no-c-format
+msgid "org.jboss.seam.core.actor"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:616
+#, no-c-format
+msgid ""
+"API for application control of attributes of the jBPM actor associated with "
+"the current session."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:621
+#, no-c-format
+msgid ""
+"<literal>setId(String actorId)</literal> &mdash; sets the jBPM actor id of "
+"the current user."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:626
+#, no-c-format
+msgid ""
+"<literal>getGroupActorIds()</literal> &mdash; returns a <literal>Set</"
+"literal> to which jBPM actor ids for the current users groups may be added."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:634
+#, no-c-format
+msgid "org.jboss.seam.core.transition"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:636
+#, no-c-format
+msgid ""
+"API for application control of the jBPM transition for the current task."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:641
+#, no-c-format
+msgid ""
+"<literal>setName(String transitionName)</literal> &mdash; sets the jBPM "
+"transition name to be used when the current task is ended via "
+"<literal>@EndTask</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:649
+#, no-c-format
+msgid "org.jboss.seam.core.businessProcess"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:651
+#, no-c-format
+msgid ""
+"API for programmatic control of the association between the conversation and "
+"business process."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:656
+#, no-c-format
+msgid ""
+"<literal>businessProcess.taskId</literal> &mdash; the id of the task "
+"associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:661
+#, no-c-format
+msgid ""
+"<literal>businessProcess.processId</literal> &mdash; the id of the process "
+"associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:666
+#, no-c-format
+msgid ""
+"<literal>businessProcess.hasCurrentTask()</literal> &mdash; is a task "
+"instance associated with the current conversation?"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:671
+#, no-c-format
+msgid ""
+"<literal>businessProcess.hasCurrentProcess()</literal> &mdash; is a process "
+"instance associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:676
+#, no-c-format
+msgid ""
+"<literal>createProcess(String name)</literal> &mdash; create an instance of "
+"the named process definition and associate it with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:681
+#, no-c-format
+msgid ""
+"<literal>startTask()</literal> &mdash; start the task associated with the "
+"current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:686
+#, no-c-format
+msgid ""
+"<literal>endTask(String transitionName)</literal> &mdash; end the task "
+"associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:691
+#, no-c-format
+msgid ""
+"<literal>resumeTask(Long id)</literal> &mdash; associate the task with the "
+"given id with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:696
+#, no-c-format
+msgid ""
+"<literal>resumeProcess(Long id)</literal> &mdash; associate the process with "
+"the given id with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:701
+#, no-c-format
+msgid ""
+"<literal>transition(String transitionName)</literal> &mdash; trigger the "
+"transition."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:709
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstance"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:711
+#, no-c-format
+msgid "Manager component for the jBPM <literal>TaskInstance</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:717
+#, no-c-format
+msgid "org.jboss.seam.core.processInstance"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:719
+#, no-c-format
+msgid "Manager component for the jBPM <literal>ProcessInstance</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:725
+#, no-c-format
+msgid "org.jboss.seam.core.jbpmContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:727
+#, no-c-format
+msgid "Manager component for an event-scoped <literal>JbpmContext</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:733
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstanceList"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:735
+#, no-c-format
+msgid "Manager component for the jBPM task list."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:741
+#, no-c-format
+msgid "org.jboss.seam.core.pooledTaskInstanceList"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:743
+#, no-c-format
+msgid "Manager component for the jBPM pooled task list."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:749
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstanceListForType"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:751
+#, no-c-format
+msgid "Manager component for the jBPM task lists."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:757
+#, no-c-format
+msgid "org.jboss.seam.core.pooledTask"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:759
+#, no-c-format
+msgid "Action handler for pooled task assignment."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:765
+#, no-c-format
+msgid ""
+"All of these components are installed whenever the component <literal>org."
+"jboss.seam.core.jbpm</literal> is installed."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:771
+#, no-c-format
+msgid "Security-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:772
+#, no-c-format
+msgid "These components relate to web-tier security."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:777
+#, no-c-format
+msgid "org.jboss.seam.core.userPrincipal"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:779
+#, no-c-format
+msgid "Manager component for the current user <literal>Principal</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:785
+#, no-c-format
+msgid "org.jboss.seam.core.isUserInRole"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:787
+#, no-c-format
+msgid ""
+"Allows JSF pages to choose to render a control, depending upon the roles "
+"available to the current principal. <literal>&lt;h:commandButton value=\"edit"
+"\" rendered=\"#{isUserInRole['admin']}\"/&gt;</literal>."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:796
+#, no-c-format
+msgid "JMS-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:797
+#, no-c-format
+msgid ""
+"These components are for use with managed <literal>TopicPublisher</literal>s "
+"and <literal>QueueSender</literal>s (see below)."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:802
+#, no-c-format
+msgid "org.jboss.seam.jms.queueSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:804
+#, no-c-format
+msgid "Manager component for a JMS <literal>QueueSession</literal> ."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:810
+#, no-c-format
+msgid "org.jboss.seam.jms.topicSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:812
+#, no-c-format
+msgid "Manager component for a JMS <literal>TopicSession</literal> ."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:821
+#, no-c-format
+msgid "Mail-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:822
+#, no-c-format
+msgid "These components are for use with Seam's Email support"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:827
+#, no-c-format
+msgid "org.jboss.seam.mail.mailSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:829
+#, no-c-format
+msgid "Manager component for a JavaMail <literal>Session</literal> ."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:834
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.host</literal> &mdash; the hostname "
+"of the SMTP server to use"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:839
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.port</literal> &mdash; the port of "
+"the SMTP server to use"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:844
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.username</literal> &mdash; the "
+"username to use to connect to the SMTP server."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:849
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.password</literal> &mdash; the "
+"password to use to connect to the SMTP server"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:854
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.debug</literal> &mdash; enable "
+"JavaMail debugging (very verbose)"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:859
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.sessionJndiName</literal> &mdash; "
+"name under which a javax.mail.Session is bound to JNDI"
+msgstr ""
+
+#. Tag: title
+#: Components.xml:870
+#, no-c-format
+msgid "Infrastructural components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:871
+#, no-c-format
+msgid ""
+"These components provide critical platform infrastructure. You can install a "
+"component by including its class name in the <literal>org.jboss.seam.core."
+"init.componentClasses</literal> configuration property."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:876
+#, no-c-format
+msgid "org.jboss.seam.core.init"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:878
+#, no-c-format
+msgid "Initialization settings for Seam. Always installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:883
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.jndiPattern</literal> &mdash; the JNDI "
+"pattern used for looking up session beans"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:888
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.debug</literal> &mdash; enable Seam debug "
+"mode"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:893
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.clientSideConversations</literal> &mdash; "
+"if set to <literal>true</literal>, Seam will save conversation context "
+"variables in the client instead of in the <literal>HttpSession</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:898
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.userTransactionName</literal> &mdash; the "
+"JNDI name to use when looking up the JTA <literal>UserTransaction</literal> "
+"object."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:906
+#, no-c-format
+msgid "org.jboss.seam.core.manager"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:908
+#, no-c-format
+msgid ""
+"Internal component for Seam page and conversation context management. Always "
+"installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:913
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationTimeout</literal> &mdash; "
+"the conversation context timeout in milliseconds."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:918
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.concurrentRequestTimeout</literal> "
+"&mdash; maximum wait time for a thread attempting to gain a lock on the long-"
+"running conversation context."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:923
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationIdParameter</literal> "
+"&mdash; the request parameter used to propagate the conversation id, default "
+"to <literal>conversationId</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:928
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationIsLongRunningParameter</"
+"literal> &mdash; the request parameter used to propagate information about "
+"whether the conversation is long-running, default to "
+"<literal>conversationIsLongRunning</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:936
+#, no-c-format
+msgid "org.jboss.seam.core.pages"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:938
+#, no-c-format
+msgid "Internal component for Seam workspace management. Always installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:943
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.pages.noConversationViewId</literal> &mdash; "
+"global setting for the view id to redirect to when a conversation entry is "
+"not found on the server side."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:951
+#, no-c-format
+msgid "org.jboss.seam.core.ejb"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:953
+#, no-c-format
+msgid ""
+"Bootstraps the JBoss Embeddable EJB3 container. Install as class "
+"<literal>org.jboss.seam.core.Ejb</literal>. This is useful when using Seam "
+"with EJB components outside the context of a Java EE 5 application server."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:956
+#, no-c-format
+msgid ""
+"The basic Embedded EJB configuration is defined in <literal>jboss-embedded-"
+"beans.xml</literal>. Additional microcontainer configuration (for example, "
+"extra datasources) may be specified by <literal>jboss-beans.xml</literal> or "
+"<literal>META-INF/jboss-beans.xml</literal> in the classpath."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:962
+#, no-c-format
+msgid "org.jboss.seam.core.microcontainer"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:964
+#, no-c-format
+msgid ""
+"Bootstraps the JBoss microcontainer. Install as class <literal>org.jboss."
+"seam.core.Microcontainer</literal>. This is useful when using Seam with "
+"Hibernate and no EJB components outside the context of a Java EE application "
+"server. The microcontainer can provide a partial EE environment with JNDI, "
+"JTA, a JCA datasource and Hibernate."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:967
+#, no-c-format
+msgid ""
+"The microcontainer configuration may be specified by <literal>jboss-beans."
+"xml</literal> or <literal>META-INF/jboss-beans.xml</literal> in the "
+"classpath."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:973
+#, no-c-format
+msgid "org.jboss.seam.core.jbpm"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:975
+#, no-c-format
+msgid ""
+"Bootstraps a <literal>JbpmConfiguration</literal>. Install as class "
+"<literal>org.jboss.seam.core.Jbpm</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:980
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.jbpm.processDefinitions</literal> &mdash; a "
+"list of resource names of jPDL files to be used for orchestration of "
+"business processes."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:985
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.jbpm.pageflowDefinitions</literal> &mdash; a "
+"list of resource names of jPDL files to be used for orchestration of "
+"conversation page flows."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:993
+#, no-c-format
+msgid "org.jboss.seam.core.conversationEntries"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:995
+#, no-c-format
+msgid ""
+"Internal session-scoped component recording the active long-running "
+"conversations between requests."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1001
+#, no-c-format
+msgid "org.jboss.seam.core.facesPage"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1003
+#, no-c-format
+msgid ""
+"Internal page-scoped component recording the conversation context associated "
+"with a page."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1009
+#, no-c-format
+msgid "org.jboss.seam.core.persistenceContexts"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1011
+#, no-c-format
+msgid ""
+"Internal component recording the persistence contexts which were used in the "
+"current conversation."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1017
+#, no-c-format
+msgid "org.jboss.seam.jms.queueConnection"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1019
+#, no-c-format
+msgid ""
+"Manages a JMS <literal>QueueConnection</literal>. Installed whenever managed "
+"managed <literal>QueueSender</literal> is installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1024
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.jms.queueConnection.queueConnectionFactoryJndiName</"
+"literal> &mdash; the JNDI name of a JMS <literal>QueueConnectionFactory</"
+"literal>. Default to <literal>UIL2ConnectionFactory</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1032
+#, no-c-format
+msgid "org.jboss.seam.jms.topicConnection"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1034
+#, no-c-format
+msgid ""
+"Manages a JMS <literal>TopicConnection</literal>. Installed whenever managed "
+"managed <literal>TopicPublisher</literal> is installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1039
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.jms.topicConnection.topicConnectionFactoryJndiName</"
+"literal> &mdash; the JNDI name of a JMS <literal>TopicConnectionFactory</"
+"literal>. Default to <literal>UIL2ConnectionFactory</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1047
+#, no-c-format
+msgid "org.jboss.seam.persistence.persistenceProvider"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1049
+#, no-c-format
+msgid "Abstraction layer for non-standardized features of JPA provider."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1055
+#, no-c-format
+msgid "org.jboss.seam.core.validation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1057
+#, no-c-format
+msgid "Internal component for Hibernate Validator support."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1063
+#, no-c-format
+msgid "org.jboss.seam.debug.introspector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1065 Components.xml:1073
+#, no-c-format
+msgid "Support for the Seam Debug Page."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1071
+#, no-c-format
+msgid "org.jboss.seam.debug.contexts"
+msgstr ""
+
+#. Tag: title
+#: Components.xml:1082
+#, no-c-format
+msgid "Special components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1083
+#, no-c-format
+msgid ""
+"Certain special Seam component classes are installable multiple times under "
+"names specified in the Seam configuration. For example, the following lines "
+"in <literal>components.xml</literal> install and configure two Seam "
+"components:"
+msgstr ""
+
+#. Tag: programlisting
+#: Components.xml:1086
+#, no-c-format
+msgid ""
+"&lt;component name=\"bookingDatabase\"\n"
+"          class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"    &lt;property name=\"persistenceUnitJndiName\"&gt;java:/comp/emf/"
+"bookingPersistence&lt;/property&gt;\n"
+"&lt;/component&gt;\n"
+"\n"
+"&lt;component name=\"userDatabase\"\n"
+"          class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"    &lt;property name=\"persistenceUnitJndiName\"&gt;java:/comp/emf/"
+"userPersistence&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1087
+#, no-c-format
+msgid ""
+"The Seam component names are <literal>bookingDatabase</literal> and "
+"<literal>userDatabase</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1092
+#, no-c-format
+msgid "&lt;entityManager&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1093
+#, no-c-format
+msgid "org.jboss.seam.core.ManagedPersistenceContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1095
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed <literal>EntityManager</"
+"literal> with an extended persistence context."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1100
+#, no-c-format
+msgid ""
+"<literal>&lt;entityManager&gt;.entityManagerFactory</literal> &mdash; a "
+"value binding expression that evaluates to an instance of "
+"<literal>EntityManagerFactory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1103
+#, no-c-format
+msgid ""
+"<literal>&lt;entityManager&gt;.persistenceUnitJndiName</literal> &mdash; the "
+"JNDI name of the entity manager factory, default to <literal>java:/&lt;"
+"managedPersistenceContext&gt;</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1111
+#, no-c-format
+msgid "&lt;entityManagerFactory&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1112
+#, no-c-format
+msgid "org.jboss.seam.core.EntityManagerFactory"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1114
+#, no-c-format
+msgid ""
+"Manages a JPA <literal>EntityManagerFactory</literal>. This is most useful "
+"when using JPA outside of an EJB 3.0 supporting environment."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1119
+#, no-c-format
+msgid ""
+"<literal>entityManagerFactory.persistenceUnitName</literal> &mdash; the name "
+"of the persistence unit."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1124 Components.xml:1162
+#, no-c-format
+msgid "See the API JavaDoc for further configuration properties."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1130
+#, no-c-format
+msgid "&lt;session&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1131
+#, no-c-format
+msgid "org.jboss.seam.core.ManagedSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1133
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed Hibernate "
+"<literal>Session</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1138
+#, no-c-format
+msgid ""
+"<literal>&lt;session&gt;.sessionFactory</literal> &mdash; a value binding "
+"expression that evaluates to an instance of <literal>SessionFactory</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1141
+#, no-c-format
+msgid ""
+"<literal>&lt;session&gt;.sessionFactoryJndiName</literal> &mdash; the JNDI "
+"name of the session factory, default to <literal>java:/&lt;managedSession&gt;"
+"</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1149
+#, no-c-format
+msgid "&lt;sessionFactory&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1150
+#, no-c-format
+msgid "org.jboss.seam.core.HibernateSessionFactory"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1152
+#, no-c-format
+msgid "Manages a Hibernate <literal>SessionFactory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1157
+#, no-c-format
+msgid ""
+"<literal>&lt;sessionFactory&gt;.cfgResourceName</literal> &mdash; the path "
+"to the configuration file. Default to <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1168
+#, no-c-format
+msgid "&lt;managedQueueSender&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1169
+#, no-c-format
+msgid "org.jboss.seam.jms.ManagedQueueSender"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1171
+#, no-c-format
+msgid ""
+"Manager component for an event scoped managed JMS <literal>QueueSender</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1176
+#, no-c-format
+msgid ""
+"<literal>&lt;managedQueueSender&gt;.queueJndiName</literal> &mdash; the JNDI "
+"name of the JMS queue."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1184
+#, no-c-format
+msgid "&lt;managedTopicPublisher&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1185
+#, no-c-format
+msgid "org.jboss.seam.jms.ManagedTopicPublisher"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1187
+#, no-c-format
+msgid ""
+"Manager component for an event scoped managed JMS <literal>TopicPublisher</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1192
+#, no-c-format
+msgid ""
+"<literal>&lt;managedTopicPublisher&gt;.topicJndiName</literal> &mdash; the "
+"JNDI name of the JMS topic."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1200
+#, no-c-format
+msgid "&lt;managedWorkingMemory&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1201
+#, no-c-format
+msgid "org.jboss.seam.drools.ManagedWorkingMemory"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1203
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed Drools "
+"<literal>WorkingMemory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1208
+#, no-c-format
+msgid ""
+"<literal>&lt;managedWorkingMemory&gt;.ruleBase</literal> &mdash; a value "
+"expression that evaluates to an instance of <literal>RuleBase</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1216
+#, no-c-format
+msgid "&lt;ruleBase&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1217
+#, no-c-format
+msgid "org.jboss.seam.drools.RuleBase"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1219
+#, no-c-format
+msgid ""
+"Manager component for an application scoped Drools <literal>RuleBase</"
+"literal>. <emphasis>Note that this is not really intended for production "
+"usage, since it does not support dynamic installation of new rules.</"
+"emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1224
+#, no-c-format
+msgid ""
+"<literal>&lt;ruleBase&gt;.ruleFiles</literal> &mdash; a list of files "
+"containing Drools rules."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1227
+#, no-c-format
+msgid ""
+"<literal>&lt;ruleBase&gt;.dslFile</literal> &mdash; a Drools DSL definition."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1235
+#, no-c-format
+msgid "&lt;entityHome&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1236
+#, no-c-format
+msgid "org.jboss.seam.framework.EntityHome"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1240
+#, no-c-format
+msgid "&lt;hibernateEntityHome&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1241
+#, no-c-format
+msgid "org.jboss.seam.framework.HibernateEntityHome"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1245
+#, no-c-format
+msgid "&lt;entityQuery&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1246
+#, no-c-format
+msgid "org.jboss.seam.framework.EntityQuery"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1250
+#, no-c-format
+msgid "&lt;hibernateEntityQuery&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1251
+#, no-c-format
+msgid "org.jboss.seam.framework.HibernateEntityQuery"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Concepts.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Concepts.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Concepts.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1922 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Concepts.xml:10
+#, no-c-format
+msgid "The contextual component model"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:11
+#, no-c-format
+msgid ""
+"The two core concepts in Seam are the notion of a <emphasis>context</"
+"emphasis> and the notion of a <emphasis>component</emphasis>. Components are "
+"stateful objects, usually EJBs, and an instance of a component is associated "
+"with a context, and given a name in that context. <emphasis>Bijection</"
+"emphasis> provides a mechanism for aliasing internal component names "
+"(instance variables) to contextual names, allowing component trees to be "
+"dynamically assembled, and reassembled by Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:14
+#, no-c-format
+msgid "Let's start by describing the contexts built in to Seam."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:17
+#, no-c-format
+msgid "Seam contexts"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:18
+#, no-c-format
+msgid ""
+"Seam contexts are created and destroyed by the framework. The application "
+"does not control context demarcation via explicit Java API calls. Context "
+"are usually implicit. In some cases, however, contexts are demarcated via "
+"annotations."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:21
+#, no-c-format
+msgid "The basic Seam contexts are:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:26
+#, no-c-format
+msgid "<para>Stateless context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:31
+#, no-c-format
+msgid "Event (or request) context"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:36 Concepts.xml:151
+#, no-c-format
+msgid "<para>Page context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:41 Concepts.xml:156
+#, no-c-format
+msgid "<para>Conversation context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:46 Concepts.xml:161
+#, no-c-format
+msgid "<para>Session context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:51 Concepts.xml:166
+#, no-c-format
+msgid "<para>Business process context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:56 Concepts.xml:171
+#, no-c-format
+msgid "<para>Application context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:61
+#, no-c-format
+msgid ""
+"You will recognize some of these contexts from servlet and related "
+"specifications. However, two of them might be new to you: "
+"<emphasis>conversation context</emphasis>, and <emphasis>business process "
+"context</emphasis>. One reason state management in web applications is so "
+"fragile and error-prone is that the three built-in contexts (request, "
+"session and application) are not especially meaningful from the point of "
+"view of the business logic. A user login session, for example, is a fairly "
+"arbitrary construct in terms of the actual application work flow. Therefore, "
+"most Seam components are scoped to the conversation or business process "
+"contexts, since they are the contexts which are most meaningful in terms of "
+"the application."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:64
+#, no-c-format
+msgid "Let's look at each context in turn."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:67
+#, no-c-format
+msgid "<title>Stateless context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:68
+#, no-c-format
+msgid ""
+"Components which are truly stateless (stateless session beans, primarily) "
+"always live in the stateless context (this is really a non-context). "
+"Stateless components are not very interesting, and are arguably not very "
+"object-oriented. Nevertheless, they are important and often useful."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:71
+#, no-c-format
+msgid "<title>Event context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:72
+#, no-c-format
+msgid ""
+"The event context is the \"narrowest\" stateful context, and is a "
+"generalization of the notion of the web request context to cover other kinds "
+"of events. Nevertheless, the event context associated with the lifecycle of "
+"a JSF request is the most important example of an event context, and the one "
+"you will work with most often. Components associated with the event context "
+"are destroyed at the end of the request, but their state is available and "
+"well-defined for at least the lifecycle of the request."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:75
+#, no-c-format
+msgid ""
+"When you invoke a Seam component via RMI, or Seam Remoting, the event "
+"context is created and destroyed just for the invocation."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:78
+#, no-c-format
+msgid "<title>Page context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:79
+#, no-c-format
+msgid ""
+"The page context allows you to associate state with a particular instance of "
+"a rendered page. You can initialize state in your event listener, or while "
+"actually rendering the page, and then have access to it from any event that "
+"originates from that page. This is especially useful for functionality like "
+"clickable lists, where the list is backed by changing data on the server "
+"side. The state is actually serialized to the client, so this construct is "
+"extremely robust with respect to multi-window operation and the back button."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:82
+#, no-c-format
+msgid "<title>Conversation context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:83
+#, no-c-format
+msgid ""
+"The conversation context is a truly central concept in Seam. A "
+"<emphasis>conversation</emphasis> is a unit of work from the point of view "
+"of the user. It might span several interactions with the user, several "
+"requests, and several database transactions. But to the user, a conversation "
+"solves a single problem. For example, \"book hotel\", \"approve contract\", "
+"\"create order\" are all conversations. You might like to think of a "
+"conversation implementing a single \"use case\" or \"user story\", but the "
+"relationship is not necessarily quite exact."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:86
+#, no-c-format
+msgid ""
+"A conversation holds state associated with \"what the user is doing now, in "
+"this window\". A single user may have multiple conversations in progress at "
+"any point in time, usually in multiple windows. The conversation context "
+"allows us to ensure that state from the different conversations does not "
+"collide and cause bugs."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:89
+#, no-c-format
+msgid ""
+"It might take you some time to get used to thinking of applications in terms "
+"of conversations. But once you get used to it, we think you'll love the "
+"notion, and never be able to not think in terms of conversations again!"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:92
+#, no-c-format
+msgid ""
+"Some conversations last for just a single request. Conversations that span "
+"multiple requests must be demarcated using annotations provided by Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:95
+#, no-c-format
+msgid ""
+"Some conversations are also <emphasis>tasks</emphasis>. A task is a "
+"conversation that is significant in terms of a long-running business "
+"process, and has the potential to trigger a business process state "
+"transition when it is successfully completed. Seam provides a special set of "
+"annotations for task demarcation."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:98
+#, no-c-format
+msgid ""
+"Conversations may be <emphasis>nested</emphasis>, with one conversation "
+"taking place \"inside\" a wider conversation. This is an advanced feature."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:101
+#, no-c-format
+msgid ""
+"Usually, conversation state is actually held by Seam in the servlet session "
+"between requests. Seam implements configurable <emphasis>conversation "
+"timeout</emphasis>, automatically destroying inactive conversations, and "
+"thus ensuring that the state held by a single user login session does not "
+"grow without bound if the user abandons conversations."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:104
+#, no-c-format
+msgid ""
+"Seam serializes processing of concurrent requests that take place in the "
+"same long-running conversation context, in the same process."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:107
+#, no-c-format
+msgid ""
+"Alternatively, Seam may be configured to keep conversational state in the "
+"client browser."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:110
+#, no-c-format
+msgid "<title>Session context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:111
+#, no-c-format
+msgid ""
+"A session context holds state associated with the user login session. While "
+"there are some cases where it is useful to share state between several "
+"conversations, we generally frown on the use of session context for holding "
+"components other than global information about the logged in user."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:114
+#, no-c-format
+msgid ""
+"In a JSR-168 portal environment, the session context represents the portlet "
+"session."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:117
+#, no-c-format
+msgid "<title>Business process context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:118
+#, no-c-format
+msgid ""
+"The business process context holds state associated with the long running "
+"business process. This state is managed and made persistent by the BPM "
+"engine (JBoss jBPM). The business process spans multiple interactions with "
+"multiple users, so this state is shared between multiple users, but in a "
+"well-defined manner. The current task determines the current business "
+"process instance, and the lifecycle of the business process is defined "
+"externally using a <emphasis>process definition language</emphasis>, so "
+"there are no special annotations for business process demarcation."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:121
+#, no-c-format
+msgid "<title>Application context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:122
+#, no-c-format
+msgid ""
+"The application context is the familiar servlet context from the servlet "
+"spec. Application context is mainly useful for holding static information "
+"such as configuration data, reference data or metamodels. For example, Seam "
+"stores its own configuration and metamodel in the application context."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:125
+#, no-c-format
+msgid "Context variables"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:126
+#, no-c-format
+msgid ""
+"A context defines a namespace, a set of <emphasis>context variables</"
+"emphasis>. These work much the same as session or request attributes in the "
+"servlet spec. You may bind any value you like to a context variable, but "
+"usually we bind Seam component instances to context variables."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:129
+#, no-c-format
+msgid ""
+"So, within a context, a component instance is identified by the context "
+"variable name (this is usually, but not always, the same as the component "
+"name). You may programatically access a named component instance in a "
+"particular scope via the <literal>Contexts</literal> class, which provides "
+"access to several thread-bound instances of the <literal>Context</literal> "
+"interface:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:132
+#, no-c-format
+msgid "User user = (User) Contexts.getSessionContext().get(\"user\");"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:133
+#, no-c-format
+msgid "You may also set or change the value associated with a name:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:136
+#, no-c-format
+msgid "Contexts.getSessionContext().set(\"user\", user);"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:137
+#, no-c-format
+msgid ""
+"Usually, however, we obtain components from a context via injection, and put "
+"component instances into a context via outjection."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:140
+#, no-c-format
+msgid "Context search priority"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:141
+#, no-c-format
+msgid ""
+"Sometimes, as above, component instances are obtained from a particular "
+"known scope. Other times, all stateful scopes are searched, in "
+"<emphasis>priority order</emphasis>. The order is as follows:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:146
+#, no-c-format
+msgid "<para>Event context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:176
+#, no-c-format
+msgid ""
+"You can perform a priority search by calling <literal>Contexts."
+"lookupInStatefulContexts()</literal>. Whenever you access a component by "
+"name from a JSF page, a priority search occurs."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:179
+#, no-c-format
+msgid "Concurrency model"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:180
+#, no-c-format
+msgid ""
+"Neither the servlet nor EJB specifications define any facilities for "
+"managing concurrent requests originating from the same client. The servlet "
+"container simply lets all threads run concurrently and leaves enforcing "
+"threadsafeness to application code. The EJB container allows stateless "
+"components to be accessed concurrently, and throws an exception if multiple "
+"threads access a stateful session bean."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:183
+#, no-c-format
+msgid ""
+"This behavior might have been okay in old-style web applications which were "
+"based around fine-grained, synchronous requests. But for modern applications "
+"which make heavy use of many fine-grained, asynchronous (AJAX) requests, "
+"concurrency is a fact of life, and must be supported by the programming "
+"model. Seam weaves a concurrency management layer into its context model."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:186
+#, no-c-format
+msgid ""
+"The Seam session and application contexts are multithreaded. Seam will allow "
+"concurrent requests in a context to be processed concurrently. The event and "
+"page contexts are by nature single threaded. The business process context is "
+"strictly speaking multi-threaded, but in practice concurrency is "
+"sufficiently rare that this fact may be disregarded most of the time. "
+"Finally, Seam enforces a <emphasis>single thread per conversation per "
+"process</emphasis> model for the conversation context by serializing "
+"concurrent requests in the same long-running conversation context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:189
+#, no-c-format
+msgid ""
+"Since the session context is multithreaded, and often contains volatile "
+"state, session scope components are always protected by Seam from concurrent "
+"access. Seam serializes requests to session scope session beans and "
+"JavaBeans by default (and detects and breaks any deadlocks that occur). This "
+"is not the default behaviour for application scoped components however, "
+"since application scoped components do not usually hold volatile state and "
+"because synchronization at the global level is <emphasis>extremely</"
+"emphasis> expensive. However, you can force a serialized threading model on "
+"any session bean or JavaBean component by adding the <literal>@Synchronized</"
+"literal> annotation."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:192
+#, no-c-format
+msgid ""
+"This concurrency model means that AJAX clients can safely use volatile "
+"session and conversational state, without the need for any special work on "
+"the part of the developer."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:195
+#, no-c-format
+msgid "Seam components"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:196
+#, no-c-format
+msgid ""
+"Seam components are POJOs (Plain Old Java Objects). In particular, they are "
+"JavaBeans or EJB 3.0 enterprise beans. While Seam does not require that "
+"components be EJBs and can even be used without an EJB 3.0 compliant "
+"container, Seam was designed with EJB 3.0 in mind and includes deep "
+"integration with EJB 3.0. Seam supports the following <emphasis>component "
+"types</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:201
+#, no-c-format
+msgid "EJB 3.0 stateless session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:206
+#, no-c-format
+msgid "EJB 3.0 stateful session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:211
+#, no-c-format
+msgid "EJB 3.0 entity beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:216
+#, no-c-format
+msgid "<para>JavaBeans</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:221
+#, no-c-format
+msgid "EJB 3.0 message-driven beans"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:226
+#, no-c-format
+msgid "Stateless session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:227
+#, no-c-format
+msgid ""
+"Stateless session bean components are not able to hold state across multiple "
+"invocations. Therefore, they usually work by operating upon the state of "
+"other components in the various Seam contexts. They may be used as JSF "
+"action listeners, but cannot provide properties to JSF components for "
+"display."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:230
+#, no-c-format
+msgid "Stateless session beans always live in the stateless context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:233
+#, no-c-format
+msgid ""
+"Stateless session beans are the least interesting kind of Seam component."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:236
+#, no-c-format
+msgid "Stateful session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:237
+#, no-c-format
+msgid ""
+"Stateful session bean components are able to hold state not only across "
+"multiple invocations of the bean, but also across multiple requests. "
+"Application state that does not belong in the database should usually be "
+"held by stateful session beans. This is a major difference between Seam and "
+"many other web application frameworks. Instead of sticking information about "
+"the current conversation directly in the <literal>HttpSession</literal>, you "
+"should keep it in instance variables of a stateful session bean that is "
+"bound to the conversation context. This allows Seam to manage the lifecycle "
+"of this state for you, and ensure that there are no collisions between state "
+"relating to different concurrent conversations."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:240
+#, no-c-format
+msgid ""
+"Stateful session beans are often used as JSF action listener, and as backing "
+"beans that provide properties to JSF components for display or form "
+"submission."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:243
+#, no-c-format
+msgid ""
+"By default, stateful session beans are bound to the conversation context. "
+"They may never be bound to the page or stateless contexts."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:246
+#, no-c-format
+msgid ""
+"Concurrent requests to session-scoped stateful session beans are always "
+"serialized by Seam."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:249
+#, no-c-format
+msgid "Entity beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:250
+#, no-c-format
+msgid ""
+"Entity beans may be bound to a context variable and function as a seam "
+"component. Because entities have a persistent identity in addition to their "
+"contextual identity, entity instances are usually bound explicitly in Java "
+"code, rather than being instantiated implicitly by Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:253
+#, no-c-format
+msgid ""
+"Entity bean components do not support bijection or context demarcation. Nor "
+"does invocation of an entity bean trigger validation."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:256
+#, no-c-format
+msgid ""
+"Entity beans are not usually used as JSF action listeners, but do often "
+"function as backing beans that provide properties to JSF components for "
+"display or form submission. In particular, it is common to use an entity as "
+"a backing bean, together with a stateless session bean action listener to "
+"implement create/update/delete type functionality."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:259
+#, no-c-format
+msgid ""
+"By default, entity beans are bound to the conversation context. They may "
+"never be bound to the stateless context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:262
+#, no-c-format
+msgid ""
+"Note that it in a clustered environment is somewhat less efficient to bind "
+"an entity bean directly to a conversation or session scoped Seam context "
+"variable than it would be to hold a reference to the entity bean in a "
+"stateful session bean. For this reason, not all Seam applications define "
+"entity beans to be Seam components."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:265
+#, no-c-format
+msgid "<title>JavaBeans</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:266
+#, no-c-format
+msgid ""
+"Javabeans may be used just like a stateless or stateful session bean. "
+"However, they do not provide the functionality of a session bean "
+"(declarative transaction demarcation, declarative security, efficient "
+"clustered state replication, EJB 3.0 persistence, timeout methods, etc)."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:269
+#, no-c-format
+msgid ""
+"In a later chapter, we show you how to use Seam and Hibernate without an EJB "
+"container. In this use case, components are JavaBeans instead of session "
+"beans. Note, however, that in many application servers it is somewhat less "
+"efficient to cluster conversation or session scoped Seam JavaBean components "
+"than it is to cluster stateful session bean components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:272
+#, no-c-format
+msgid "By default, JavaBeans are bound to the event context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:275
+#, no-c-format
+msgid ""
+"Concurrent requests to session-scoped JavaBeans are always serialized by "
+"Seam."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:278
+#, no-c-format
+msgid "Message-driven beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:279
+#, no-c-format
+msgid ""
+"Message-driven beans may function as a seam component. However, message-"
+"driven beans are called quite differently to other Seam components - instead "
+"of invoking them via the context variable, they listen for messages sent to "
+"a JMS queue or topic."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:282
+#, no-c-format
+msgid ""
+"Message-driven beans may not be bound to a Seam context. Nor do they have "
+"access to the session or conversation state of their \"caller\". However, "
+"they do support bijection and some other Seam functionality."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:285
+#, no-c-format
+msgid "Interception"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:286
+#, no-c-format
+msgid ""
+"In order to perform its magic (bijection, context demarcation, validation, "
+"etc), Seam must intercept component invocations. For JavaBeans, Seam is in "
+"full control of instantiation of the component, and no special configuration "
+"is needed. For entity beans, interception is not required since bijection "
+"and context demarcation are not defined. For session beans, we must register "
+"an EJB interceptor for the session bean component. We could use an "
+"annotation, as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:289
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:290
+#, no-c-format
+msgid ""
+"But a much better way is to define the interceptor in <literal>ejb-jar.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:293
+#, no-c-format
+msgid ""
+"&lt;interceptors&gt;\n"
+"   &lt;interceptor&gt;\n"
+"      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"   &lt;/interceptor&gt;\n"
+"&lt;/interceptors&gt;\n"
+"   \n"
+"&lt;assembly-descriptor&gt;\n"
+"   &lt;interceptor-binding&gt;\n"
+"      &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"   &lt;/interceptor-binding&gt;\n"
+"&lt;/assembly-descriptor&gt;"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:294
+#, no-c-format
+msgid "Component names"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:295
+#, no-c-format
+msgid ""
+"All seam components need a name. We can assign a name to a component using "
+"the <literal>@Name</literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:298
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:299
+#, no-c-format
+msgid ""
+"This name is the <emphasis>seam component name</emphasis> and is not related "
+"to any other name defined by the EJB specification. However, seam component "
+"names work just like JSF managed bean names and you can think of the two "
+"concepts as identical."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:302
+#, no-c-format
+msgid ""
+"<literal>@Name</literal> is not the only way to define a component name, but "
+"we always need to specify the name <emphasis>somewhere</emphasis>. If we "
+"don't, then none of the other Seam annotations will function."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:305
+#, no-c-format
+msgid ""
+"Just like in JSF, a seam component instance is usually bound to a context "
+"variable with the same name as the component name. So, for example, we would "
+"access the <literal>LoginAction</literal> using <literal>Contexts."
+"getStatelessContext().get(\"loginAction\")</literal>. In particular, "
+"whenever Seam itself instantiates a component, it binds the new instance to "
+"a variable with the component name. However, again like JSF, it is possible "
+"for the application to bind a component to some other context variable by "
+"programmatic API call. This is only useful if a particular component serves "
+"more than one role in the system. For example, the currently logged in "
+"<literal>User</literal> might be bound to the <literal>currentUser</literal> "
+"session context variable, while a <literal>User</literal> that is the "
+"subject of some administration functionality might be bound to the "
+"<literal>user</literal> conversation context variable."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:308
+#, no-c-format
+msgid ""
+"For very large applications, and for built-in seam components, qualified "
+"names are often used."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:311
+#, no-c-format
+msgid ""
+"@Name(\"com.jboss.myapp.loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:312
+#, no-c-format
+msgid ""
+"We may use the qualified component name both in Java code and in JSF's "
+"expression language:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:315
+#, no-c-format
+msgid ""
+"&lt;h:commandButton type=\"submit\" value=\"Login\"\n"
+"                 action=\"#{com.jboss.myapp.loginAction.login}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:316
+#, no-c-format
+msgid ""
+"Since this is noisy, Seam also provides a means of aliasing a qualified name "
+"to a simple name. Add a line like this to the <literal>components.xml</"
+"literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:319
+#, no-c-format
+msgid ""
+"&lt;factory name=\"loginAction\" scope=\"STATELESS\" value=\"#{com.jboss."
+"myapp.loginAction}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:320
+#, no-c-format
+msgid ""
+"All of the built-in Seam components have qualified names, but most of them "
+"are aliased to a simple name by the <literal>components.xml</literal> file "
+"included in the Seam jar."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:323
+#, no-c-format
+msgid "Defining the component scope"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:324
+#, no-c-format
+msgid ""
+"We can override the default scope (context) of a component using the "
+"<literal>@Scope</literal> annotation. This lets us define what context a "
+"component instance is bound to, when it is instantiated by Seam."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:327
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(SESSION)\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:328
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.ScopeType</literal> defines an enumeration of "
+"possible scopes."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:331
+#, no-c-format
+msgid "Components with multiple roles"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:332
+#, no-c-format
+msgid ""
+"Some Seam component classes can fulfill more than one role in the system. "
+"For example, we often have a <literal>User</literal> class which is usually "
+"used as a session-scoped component representing the current user but is used "
+"in user administration screens as a conversation-scoped component. The "
+"<literal>@Role</literal> annotation lets us define an additional named role "
+"for a component, with a different scope&mdash;it lets us bind the same "
+"component class to different context variables. (Any Seam component "
+"<emphasis>instance</emphasis> may be bound to multiple context variables, "
+"but this lets us do it at the class level, and take advantage of auto-"
+"instantiation.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:335
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(CONVERSATION)\n"
+"@Role(name=\"currentUser\", scope=SESSION)\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:336
+#, no-c-format
+msgid ""
+"The <literal>@Roles</literal> annotation lets us specify as many additional "
+"roles as we like."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:339
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(CONVERSATION)\n"
+"@Roles({@Role(name=\"currentUser\", scope=SESSION)\n"
+"        @Role(name=\"tempUser\", scope=EVENT)})\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:340
+#, no-c-format
+msgid "Built-in components"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:341
+#, no-c-format
+msgid ""
+"Like many good frameworks, Seam eats its own dogfood and is implemented "
+"mostly as a set of built-in Seam interceptors (see later) and Seam "
+"components. This makes it easy for applications to interact with built-in "
+"components at runtime or even customize the basic functionality of Seam by "
+"replacing the built-in components with custom implementations. The built-in "
+"components are defined in the Seam namespace <literal>org.jboss.seam.core</"
+"literal> and the Java package of the same name."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:344
+#, no-c-format
+msgid ""
+"The built-in components may be injected, just like any Seam components, but "
+"they also provide convenient static <literal>instance()</literal> methods:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:347
+#, no-c-format
+msgid "FacesMessages.instance().add(\"Welcome back, #{user.name}!\");"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:348
+#, no-c-format
+msgid ""
+"Seam was designed to integrate tightly in a Java EE 5 environment. However, "
+"we understand that there are many projects which are not running in a full "
+"EE environment. We also realize the critical importance of easy unit and "
+"integration testing using frameworks such as TestNG and JUnit. So, we've "
+"made it easy to run Seam in Java SE environments by allowing you to boostrap "
+"certain critical infrastructure normally only found in EE environments by "
+"installing built-in Seam components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:351
+#, no-c-format
+msgid ""
+"For example, you can run your EJB3 components in Tomcat or an integration "
+"test suite just by installing the built-in component <literal>org.jboss.seam."
+"core.ejb</literal>, which automatically bootstraps the JBoss Embeddable EJB3 "
+"container and deploys your EJB components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:354
+#, no-c-format
+msgid ""
+"Or, if you're not quite ready for the Brave New World of EJB 3.0, you can "
+"write a Seam application that uses only JavaBean components, together with "
+"Hibernate3 for persistence, by installing a built-in component that manages "
+"a Hibernate <literal>SessionFactory</literal>. When using Hibernate outside "
+"of a J2EE environment, you will also probably need a JTA transaction manager "
+"and JNDI server, which are available via the built-in component <literal>org."
+"jboss.seam.core.microcontainer</literal>. This lets you use the bulletproof "
+"JTA/JCA pooling datasource from JBoss application server in an SE "
+"environment like Tomcat!"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:357
+#, no-c-format
+msgid "Bijection"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:358
+#, no-c-format
+msgid ""
+"<emphasis>Dependency injection</emphasis> or <emphasis>inversion of control</"
+"emphasis> is by now a familiar concept to most Java developers. Dependency "
+"injection allows a component to obtain a reference to another component by "
+"having the container \"inject\" the other component to a setter method or "
+"instance variable. In all dependency injection implementations that we have "
+"seen, injection occurs when the component is constructed, and the reference "
+"does not subsequently change for the lifetime of the component instance. For "
+"stateless components, this is reasonable. From the point of view of a "
+"client, all instances of a particular stateless component are "
+"interchangeable. On the other hand, Seam emphasizes the use of stateful "
+"components. So traditional dependency injection is no longer a very useful "
+"construct. Seam introduces the notion of <emphasis>bijection</emphasis> as a "
+"generalization of injection. In contrast to injection, bijection is:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:363
+#, no-c-format
+msgid ""
+"<emphasis>contextual</emphasis> - bijection is used to assemble stateful "
+"components from various different contexts (a component from a \"wider\" "
+"context may even have a reference to a component from a \"narrower\" context)"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:368
+#, no-c-format
+msgid ""
+"<emphasis>bidirectional</emphasis> - values are injected from context "
+"variables into attributes of the component being invoked, and also "
+"<emphasis>outjected</emphasis> from the component attributes back out to the "
+"context, allowing the component being invoked to manipulate the values of "
+"contextual variables simply by setting its own instance variables"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:373
+#, no-c-format
+msgid ""
+"<emphasis>dynamic</emphasis> - since the value of contextual variables "
+"changes over time, and since Seam components are stateful, bijection takes "
+"place every time a component is invoked"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:378
+#, no-c-format
+msgid ""
+"In essence, bijection lets you alias a context variable to a component "
+"instance variable, by specifying that the value of the instance variable is "
+"injected, outjected, or both. Of course, we use annotations to enable "
+"bijection."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:381
+#, no-c-format
+msgid ""
+"The <literal>@In</literal> annotation specifies that a value should be "
+"injected, either into an instance variable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:384
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:385
+#, no-c-format
+msgid "or into a setter method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:388
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @In\n"
+"    public void setUser(User user) {\n"
+"        this.user=user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:389
+#, no-c-format
+msgid ""
+"By default, Seam will do a priority search of all contexts, using the name "
+"of the property or instance variable that is being injected. You may wish to "
+"specify the context variable name explicitly, using, for example, "
+"<literal>@In(\"currentUser\")</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:392
+#, no-c-format
+msgid ""
+"If you want Seam to create an instance of the component when there is no "
+"existing component instance bound to the named context variable, you should "
+"specify <literal>@In(create=true)</literal>. If the value is optional (it "
+"can be null), specify <literal>@In(required=false)</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:395
+#, no-c-format
+msgid ""
+"For some components, it can be repetitive to have to specify <literal>@In"
+"(create=true)</literal> everywhere they are used. In such cases, you can "
+"annotate the component <literal>@AutoCreate</literal>, and then it will "
+"always be created, whenever needed, even without the explicit use of "
+"<literal>create=true</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:398
+#, no-c-format
+msgid "You can even inject the value of an expression:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:401
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In(\"#{user.username}\") String username;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:402
+#, no-c-format
+msgid ""
+"(There is much more information about component lifecycle and injection in "
+"the next chapter.)"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:405
+#, no-c-format
+msgid ""
+"The <literal>@Out</literal> annotation specifies that an attribute should be "
+"outjected, either from an instance variable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:408
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @Out User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:409
+#, no-c-format
+msgid "or from a getter method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:412
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @Out\n"
+"    public User getUser() {\n"
+"        return user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:413
+#, no-c-format
+msgid "An attribute may be both injected and outjected:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:416
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In @Out User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:417
+#, no-c-format
+msgid "<para>or:</para>"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:420
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @In\n"
+"    public void setUser(User user) {\n"
+"        this.user=user;\n"
+"    }\n"
+"    \n"
+"    @Out\n"
+"    public User getUser() {\n"
+"        return user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:421
+#, no-c-format
+msgid "Lifecycle methods"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:422
+#, no-c-format
+msgid ""
+"Session bean and entity bean Seam components support all the usual EJB 3.0 "
+"lifecycle callback (<literal>@PostConstruct</literal>, <literal>@PreDestroy</"
+"literal>, etc). Seam extends all of these callbacks except "
+"<literal>@PreDestroy</literal> to JavaBean components. But Seam also defines "
+"its own component lifecycle callbacks."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:425
+#, no-c-format
+msgid ""
+"The <literal>@Create</literal> method is called every time Seam instantiates "
+"a component. Unlike the <literal>@PostConstruct</literal> method, this "
+"method is called after the component is fully constructed by the EJB "
+"container, and has access to all the usual Seam functionality (bijection, "
+"etc). Components may define only one <literal>@Create</literal> method."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:428
+#, no-c-format
+msgid ""
+"The <literal>@Destroy</literal> method is called when the context that the "
+"Seam component is bound to ends. Components may define only one "
+"<literal>@Destroy</literal> method. Stateful session bean components "
+"<emphasis>must</emphasis> define a method annotated <literal>@Destroy "
+"@Remove</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:431
+#, no-c-format
+msgid ""
+"Finally, a related annotation is the <literal>@Startup</literal> annotation, "
+"which may be applied to any application or session scoped component. The "
+"<literal>@Startup</literal> annotation tells Seam to instantiate the "
+"component immediately, when the context begins, instead of waiting until it "
+"is first referenced by a client. It is possible to control the order of "
+"instantiation of startup components by specifying <literal>@Startup(depends="
+"{....})</literal>."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:434
+#, no-c-format
+msgid "Conditional installation"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:435
+#, no-c-format
+msgid ""
+"The <literal>@Install</literal> annotation lets you control conditional "
+"installation of components that are required in some deployment scenarios "
+"and not in others. This is useful if:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:440
+#, no-c-format
+msgid "You want to mock out some infrastructural component in tests."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:445
+#, no-c-format
+msgid ""
+"You want change the implementation of a component in certain deployment "
+"scenarios."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:450
+#, no-c-format
+msgid ""
+"You want to install some components only if their dependencies are available "
+"(useful for framework authors)."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:455
+#, no-c-format
+msgid ""
+"<literal>@Install</literal> works by letting you specify "
+"<emphasis>precedence</emphasis> and <emphasis>dependencies</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:458
+#, no-c-format
+msgid ""
+"The precedence of a component is a number that Seam uses to decide which "
+"component to install when there are multiple classes with the same component "
+"name in the classpath. Seam will choose the component with the higher "
+"precendence. There are some predefined precedence values:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:463
+#, no-c-format
+msgid ""
+"<literal>BUILT_IN</literal> &mdash; the lowest precedece components are the "
+"components built in to Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:468
+#, no-c-format
+msgid ""
+"<literal>FRAMEWORK</literal> &mdash; components defined by third-party "
+"frameworks may override built-in components, but are overridden by "
+"application components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:473
+#, no-c-format
+msgid ""
+"<literal>APPLICATION</literal> &mdash; the default precedence. This is "
+"appropriate for most application components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:478
+#, no-c-format
+msgid ""
+"<literal>DEPLOYMENT</literal> &mdash; for application components which are "
+"deployment-specific."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:483
+#, no-c-format
+msgid "<literal>MOCK</literal> &mdash; for mock objects used in testing."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:488
+#, no-c-format
+msgid ""
+"Suppose we have a component named <literal>messageSender</literal> that "
+"talks to a JMS queue."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:491
+#, no-c-format
+msgid ""
+"@Name(\"messageSender\") \n"
+"public class MessageSender {\n"
+"    public void sendMessage() {\n"
+"        //do something with JMS\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:492
+#, no-c-format
+msgid ""
+"In our unit tests, we don't have a JMS queue available, so we would like to "
+"stub out this method. We'll create a <emphasis>mock</emphasis> component "
+"that exists in the classpath when unit tests are running, but is never "
+"deployed with the application:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:495
+#, no-c-format
+msgid ""
+"@Name(\"messageSender\") \n"
+"@Install(precedence=MOCK)\n"
+"public class MockMessageSender extends MessageSender {\n"
+"    public void sendMessage() {\n"
+"        //do nothing!\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:496
+#, no-c-format
+msgid ""
+"The <literal>precedence</literal> helps Seam decide which version to use "
+"when it finds both components in the classpath."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:499
+#, no-c-format
+msgid ""
+"This is nice if we are able to control exactly which classes are in the "
+"classpath. But if I'm writing a reusable framework with many dependecies, I "
+"don't want to have to break that framework across many jars. I want to be "
+"able to decide which components to install depending upon what other "
+"components are installed, and upon what classes are available in the "
+"classpath. The <literal>@Install</literal> annotation also controls this "
+"functionality. Seam uses this mechanism internally to enable conditional "
+"installation of many of the built-in components. However, you probably won't "
+"need to use it in your application."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:502
+#, no-c-format
+msgid "Logging"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:503
+#, no-c-format
+msgid "Who is not totally fed up with seeing noisy code like this?"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:506
+#, no-c-format
+msgid ""
+"private static final Log log = LogFactory.getLog(CreateOrderAction.class);\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    if ( log.isDebugEnabled() ) {\n"
+"        log.debug(\"Creating new order for user: \" + user.username() + \n"
+"            \" product: \" + product.name() \n"
+"            + \" quantity: \" + quantity);\n"
+"    }\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:507
+#, no-c-format
+msgid ""
+"It is difficult to imagine how the code for a simple log message could "
+"possibly be more verbose. There is more lines of code tied up in logging "
+"than in the actual business logic! I remain totally astonished that the Java "
+"community has not come up with anything better in 10 years."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:510
+#, no-c-format
+msgid ""
+"Seam provides a logging API built on top of Apache commons-logging that "
+"simplifies this code significantly:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:513
+#, no-c-format
+msgid ""
+"@Logger private Log log;\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    log.debug(\"Creating new order for user: #0 product: #1 quantity: #2\", "
+"user.username(), \n"
+"       product.name(), quantity);\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:514
+#, no-c-format
+msgid ""
+"It doesn't matter if you declare the <literal>log</literal> variable static "
+"or not&mdash;it will work either way."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:517
+#, no-c-format
+msgid ""
+"Note that we don't need the noisy <literal>if ( log.isDebugEnabled() )</"
+"literal> guard, since string concatenation happens <emphasis>inside</"
+"emphasis> the <literal>debug()</literal> method. Note also that we don't "
+"usually need to specify the log category explicitly, since Seam knows what "
+"component it is injecting the <literal>Log</literal> into."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:520
+#, no-c-format
+msgid ""
+"If <literal>User</literal> and <literal>Product</literal> are Seam "
+"components available in the current contexts, it gets even better:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:523
+#, no-c-format
+msgid ""
+"@Logger private Log log;\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    log.debug(\"Creating new order for user: #{user.username} product: #"
+"{product.name}\n"
+"       quantity: #0\", quantity);\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:524
+#, no-c-format
+msgid ""
+"The <literal>Mutable</literal> interface and <literal>@ReadOnly</literal>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:525
+#, no-c-format
+msgid ""
+"Many application servers feature an amazingly broken implementation of "
+"<literal>HttpSession</literal> clustering, where changes to the state of "
+"mutable objects bound to the session are only replicated when the "
+"application calls <literal>setAttribute()</literal> explicitly. This is a "
+"source of bugs that can not effectively be tested for at development time, "
+"since they will only manifest when failover occurs. Furthermore, the actual "
+"replication message contains the entire serialized object graph bound to the "
+"session attribute, which is inefficient."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:528
+#, no-c-format
+msgid ""
+"Of course, EJB stateful session beans must perform automatic dirty checking "
+"and replication of mutable state and a sophisticated EJB container can "
+"introduce optimizations such as attribute-level replication. Unfortunately, "
+"not all Seam users have the good fortune to be working in an environment "
+"that supports EJB 3.0. So, for session and conversation scoped JavaBean and "
+"entity bean components, Seam provides an extra layer of cluster-safe state "
+"management over the top of the web container session clustering."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:531
+#, no-c-format
+msgid ""
+"For session or conversation scoped JavaBean components, Seam automatically "
+"forces replication to occur by calling <literal>setAttribute()</literal> "
+"once in every request that the component was invoked by the application. Of "
+"course, this strategy is inefficient for read-mostly components. You can "
+"control this behavior by implementing the <literal>org.jboss.seam.core."
+"Mutable</literal> interface, or by extending <literal>org.jboss.seam.core."
+"AbstractMutable</literal>, and writing your own dirty-checking logic inside "
+"the component. For example,"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:534
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class Account extends AbstractMutable\n"
+"{\n"
+"    private BigDecimal balance;\n"
+"    \n"
+"    public void setBalance(BigDecimal balance)\n"
+"    {\n"
+"        setDirty(this.balance, balance);\n"
+"        this.balance = balance;\n"
+"    }\n"
+"    \n"
+"    public BigDecimal getBalance()\n"
+"    {\n"
+"        return balance;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:535
+#, no-c-format
+msgid ""
+"Or, you can use the <literal>@ReadOnly</literal> annotation to achieve a "
+"similar effect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:538
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class Account\n"
+"{\n"
+"    private BigDecimal balance;\n"
+"    \n"
+"    public void setBalance(BigDecimal balance)\n"
+"    {\n"
+"        this.balance = balance;\n"
+"    }\n"
+"    \n"
+"    @ReadOnly\n"
+"    public BigDecimal getBalance()\n"
+"    {\n"
+"        return balance;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:539
+#, no-c-format
+msgid ""
+"For session or conversation scoped entity bean components, Seam "
+"automatically forces replication to occur by calling <literal>setAttribute()"
+"</literal> once in every request, <emphasis>unless the (conversation-scoped) "
+"entity is currently associated with a Seam-managed persistence context, in "
+"which case no replication is needed</emphasis>. This strategy is not "
+"necessarily efficient, so session or conversation scope entity beans should "
+"be used with care. You can always write a stateful session bean or JavaBean "
+"component to \"manage\" the entity bean instance. For example,"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:542
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"account\")\n"
+"public class AccountManager extends AbstractMutable\n"
+"{\n"
+"    private Account account; // an entity bean\n"
+"    \n"
+"    @Unwrap\n"
+"    public void getAccount()\n"
+"    {\n"
+"        return account;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:543
+#, no-c-format
+msgid ""
+"Note that the <literal>EntityHome</literal> class in the Seam Application "
+"Framework provides a great example of this pattern."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:546
+#, no-c-format
+msgid "Factory and manager components"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:547
+#, no-c-format
+msgid ""
+"We often need to work with objects that are not Seam components. But we "
+"still want to be able to inject them into our components using <literal>@In</"
+"literal> and use them in value and method binding expressions, etc. "
+"Sometimes, we even need to tie them into the Seam context lifecycle "
+"(<literal>@Destroy</literal>, for example). So the Seam contexts can contain "
+"objects which are not Seam components, and Seam provides a couple of nice "
+"features that make it easier to work with non-component objects bound to "
+"contexts."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:550
+#, no-c-format
+msgid ""
+"The <emphasis>factory component pattern</emphasis> lets a Seam component act "
+"as the instantiator for a non-component object. A <emphasis>factory method</"
+"emphasis> will be called when a context variable is referenced but has no "
+"value bound to it. We define factory methods using the <literal>@Factory</"
+"literal> annotation. The factory method binds a value to the context "
+"variable, and determines the scope of the bound value. There are two styles "
+"of factory method. The first style returns a value, which is bound to the "
+"context by Seam:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:553
+#, no-c-format
+msgid ""
+"@Factory(scope=CONVERSATION)\n"
+"public List&lt;Customer&gt; getCustomerList() { \n"
+"    return ... ;\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:554
+#, no-c-format
+msgid ""
+"The second style is a method of type <literal>void</literal> which binds the "
+"value to the context variable itself:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:557
+#, no-c-format
+msgid ""
+"@DataModel List&lt;Customer&gt; customerList;\n"
+"\n"
+"@Factory(\"customerList\")\n"
+"public void initCustomerList() { \n"
+"    customerList = ...  ;\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:558
+#, no-c-format
+msgid ""
+"In both cases, the factory method is called when we reference the "
+"<literal>customerList</literal> context variable and its value is null, and "
+"then has no further part to play in the lifecycle of the value. An even more "
+"powerful pattern is the <emphasis>manager component pattern</emphasis>. In "
+"this case, we have a Seam component that is bound to a context variable, "
+"that manages the value of the context variable, while remaining invisible to "
+"clients."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:561
+#, no-c-format
+msgid ""
+"A manager component is any component with an <literal>@Unwrap</literal> "
+"method. This method returns the value that will be visable to clients, and "
+"is called <emphasis>every time</emphasis> a context variable is referenced."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:564
+#, no-c-format
+msgid ""
+"@Name(\"customerList\")\n"
+"@Scope(CONVERSATION)\n"
+"public class CustomerListManager\n"
+"{\n"
+"    ...\n"
+"    \n"
+"    @Unwrap\n"
+"    public List&lt;Customer&gt; getCustomerList() { \n"
+"        return ... ;\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:565
+#, no-c-format
+msgid ""
+"This pattern is especially useful if we have some heavyweight object that "
+"needs a cleanup operation when the context ends. In this case, the manager "
+"component may perform cleanup in the <literal>@Destroy</literal> method."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Configuration.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Configuration.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Configuration.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1435 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Configuration.xml:10
+#, no-c-format
+msgid "Configuring Seam and packaging Seam applications"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:11
+#, no-c-format
+msgid ""
+"Configuration is a very boring topic and an extremely tedious pastime. "
+"Unfortunately, several lines of XML are required to integrate Seam into your "
+"JSF implementation and servlet container. There's no need to be too put off "
+"by the following sections; you'll never need to type any of this stuff "
+"yourself, since you can just copy and paste from the example applications!"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:14
+#, no-c-format
+msgid "Basic Seam configuration"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:15
+#, no-c-format
+msgid ""
+"First, let's look at the basic configuration that is needed whenever we use "
+"Seam with JSF."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:18
+#, no-c-format
+msgid "Integrating Seam with JSF and your servlet container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:19
+#, no-c-format
+msgid ""
+"Seam requires the following entry in your <literal>web.xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:22
+#, no-c-format
+msgid ""
+"&lt;listener&gt;\n"
+"    &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/listener-"
+"class&gt;\n"
+"&lt;/listener&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:23
+#, no-c-format
+msgid ""
+"This listener is responsible for bootstrapping Seam, and for destroying "
+"session and application contexts."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:26
+#, no-c-format
+msgid ""
+"To integrate with the JSF request lifecycle, we also need a JSF "
+"<literal>PhaseListener</literal> registered in in the <literal>faces-config."
+"xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:29
+#, no-c-format
+msgid ""
+"&lt;lifecycle&gt;\n"
+"    &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-"
+"listener&gt;\n"
+"&lt;/lifecycle&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:30
+#, no-c-format
+msgid ""
+"The actual listener class here varies depending upon how you want to manage "
+"transaction demarcation (more on this below)."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:33
+#, no-c-format
+msgid ""
+"If you are using Sun's JSF 1.2 reference implementation, you should also add "
+"this to <literal>faces-config.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:36
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;el-resolver&gt;org.jboss.seam.jsf.SeamELResolver&lt;/el-"
+"resolver&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:37
+#, no-c-format
+msgid ""
+"(This line should not strictly speaking be necessary, but it works around a "
+"minor bug in the RI.)"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:40
+#, no-c-format
+msgid ""
+"Some JSF implementations have a broken implementation of server-side state "
+"saving that interferes with Seam's conversation propagation. If you have "
+"problems with conversation propagation during form submissions, try "
+"switching to client-side state saving. You'll need this in <literal>web.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:43
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;client&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:44
+#, no-c-format
+msgid "Seam servlet filters"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:45
+#, no-c-format
+msgid ""
+"Seam doesn't need any servlet filters for basic operation. However, there "
+"are several features which depend upon the use of filters. To make things "
+"easier for you guys, Seam lets you add and configure servlet filters just "
+"like you would configure other built-in Seam components. To take advantage "
+"of this feature, we must first install a master filter in <literal>web.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:48
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;/*&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:49
+#, no-c-format
+msgid "Adding the master filter enables the following built-in filters."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:52
+#, no-c-format
+msgid "Exception handling"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:53
+#, no-c-format
+msgid ""
+"This filter provides the exception mapping functionality in <literal>pages."
+"xml</literal> (almost all applications will need this). It also takes care "
+"of rolling back uncommitted transactions when uncaught exceptions occur. "
+"(According to the Java EE specification, the web container should do this "
+"automatically, but we've found that this behavior cannot be relied upon in "
+"all application servers. And it is certainly not required of plain servlet "
+"engines like Tomcat.)"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:56
+#, no-c-format
+msgid ""
+"By default, the exception handling filter will process all requests, however "
+"this behavior may be adjusted by adding a <literal>&lt;web:exception-"
+"filter&gt;</literal> entry to <literal>components.xml</literal>, as shown in "
+"this example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:59
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:web=\"http://jboss.com/products/seam/web\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                    http://jboss.com/products/seam/core-1.2.xsd\n"
+"                 http://jboss.com/products/seam/components \n"
+"                     http://jboss.com/products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/web \n"
+"                     http://jboss.com/products/seam/web-1.2.xsd\"&gt;\n"
+"\n"
+"    &lt;web:exception-filter url-pattern=\"*.seam\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:62 Configuration.xml:77 Configuration.xml:99
+#: Configuration.xml:124
+#, no-c-format
+msgid ""
+"<literal>url-pattern</literal> &mdash; Used to specify which requests are "
+"filtered, the default is all requests."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:67
+#, no-c-format
+msgid "Conversation propagation with redirects"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:68
+#, no-c-format
+msgid ""
+"This filter allows Seam to propagate the conversation context across browser "
+"redirects. It intercepts any browser redirects and adds a request parameter "
+"that specifies the Seam conversation identifier."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:71
+#, no-c-format
+msgid ""
+"The redirect filter will process all requests by default, but this behavior "
+"can also be adjusted in <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:74
+#, no-c-format
+msgid "&lt;web:redirect-filter url-pattern=\"*.seam\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:82
+#, no-c-format
+msgid "Multipart form submissions"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:83
+#, no-c-format
+msgid ""
+"This feature is necessary when using the Seam file upload JSF control. It "
+"detects multipart form requests and processes them according to the "
+"multipart/form-data specification (RFC-2388). To override the default "
+"settings, add the following entry to <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:86
+#, no-c-format
+msgid ""
+"&lt;web:multipart-filter create-temp-files=\"true\" \n"
+"        max-request-size=\"1000000\" \n"
+"        url-pattern=\"*.seam\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:89
+#, no-c-format
+msgid ""
+"<literal>create-temp-files</literal> &mdash; If set to <literal>true</"
+"literal>, uploaded files are written to a temporary file (instead of held in "
+"memory). This may be an important consideration if large file uploads are "
+"expected. The default setting is <literal>false</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:94
+#, no-c-format
+msgid ""
+"<literal>max-request-size</literal> &mdash; If the size of a file upload "
+"request (determined by reading the <literal>Content-Length</literal> header "
+"in the request) exceeds this value, the request will be aborted. The default "
+"setting is 0 (no size limit)."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:104
+#, no-c-format
+msgid "Character encoding"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:105
+#, no-c-format
+msgid "Sets the character encoding of submitted form data."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:108 Configuration.xml:136
+#, no-c-format
+msgid ""
+"This filter is not installed by default and requires an entry in "
+"<literal>components.xml</literal> to enable it:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:111
+#, no-c-format
+msgid ""
+"&lt;web:character-encoding-filter encoding=\"UTF-16\" \n"
+"        override-client=\"true\" \n"
+"        url-pattern=\"*.seam\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:114
+#, no-c-format
+msgid "<literal>encoding</literal> &mdash; The encoding to use."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:119
+#, no-c-format
+msgid ""
+"<literal>override-client</literal> &mdash; If this is set to <literal>true</"
+"literal>, the request encoding will be set to whatever is specified by "
+"<literal>encoding</literal> no matter whether the request already specifies "
+"an encoding or not. If set to <literal>false</literal>, the request encoding "
+"will only be set if the request doesn't already specify an encoding. The "
+"default setting is <literal>false</literal>."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:129
+#, no-c-format
+msgid "Context management for custom servlets"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:130
+#, no-c-format
+msgid ""
+"Requests sent direct to some servlet other than the JSF servlet are not "
+"processed through the JSF lifecycle, so Seam provides a servlet filter that "
+"can be applied to any other servlet that needs access to Seam components."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:133
+#, no-c-format
+msgid ""
+"This filter allows custom servlets to interact with the Seam contexts. It "
+"sets up the Seam contexts at the beginning of each request, and tears them "
+"down at the end of the request. You should make sure that this filter is "
+"<emphasis>never</emphasis> applied to the JSF <literal>FacesServlet</"
+"literal>. Seam uses the phase listener for context management in a JSF "
+"request."
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:139
+#, no-c-format
+msgid "&lt;web:context-filter url-pattern=\"/media/*\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:142
+#, no-c-format
+msgid ""
+"<literal>url-pattern</literal> &mdash; Used to specify which requests are "
+"filtered, the default is all requests. If the url-pattern is specified for "
+"the context filter, then the filter will be enabled (unless explicitly "
+"disabled)."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:147
+#, no-c-format
+msgid ""
+"The context filter expects to find the conversation id of any conversation "
+"context in a request parameter named <literal>conversationId</literal>. You "
+"are responsible for ensuring that it gets sent in the request."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:150
+#, no-c-format
+msgid ""
+"You are also responsible for ensuring propagation of any new conversation id "
+"back to the client. Seam exposes the conversation id as a property of the "
+"built in component <literal>conversation</literal>."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:153
+#, no-c-format
+msgid "Integrating Seam with your EJB container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:154
+#, no-c-format
+msgid ""
+"We need to apply the <literal>SeamInterceptor</literal> to our Seam "
+"components. The simplest way to do this is to add the following interceptor "
+"binding to the <literal>&lt;assembly-descriptor&gt;</literal> in "
+"<literal>ejb-jar.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:157
+#, no-c-format
+msgid ""
+"&lt;interceptor-binding&gt;\n"
+"    &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"    &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"&lt;/interceptor-binding&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:158
+#, no-c-format
+msgid ""
+"Seam needs to know where to go to find session beans in JNDI. One way to do "
+"this is specify the <literal>@JndiName</literal> annotation on every session "
+"bean Seam component. However, this is quite tedious. A better approach is to "
+"specify a pattern that Seam can use to calculate the JNDI name from the EJB "
+"name. Unfortunately, there is no standard mapping to global JNDI defined in "
+"the EJB3 specification, so this mapping is vendor-specific. We usually "
+"specify this option in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:161
+#, no-c-format
+msgid "For JBoss AS, the following pattern is correct:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:164
+#, no-c-format
+msgid "&lt;core:init jndi-name=\"myEarName/#{ejbName}/local\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:165
+#, no-c-format
+msgid ""
+"Where <literal>myEarName</literal> is the name of the EAR in which the bean "
+"is deployed."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:168
+#, no-c-format
+msgid ""
+"Outside the context of an EAR (when using the JBoss Embeddable EJB3 "
+"container), the following pattern is the one to use:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:171
+#, no-c-format
+msgid "&lt;core:init jndi-name=\"#{ejbName}/local\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:172
+#, no-c-format
+msgid ""
+"You'll have to experiment to find the right setting for other application "
+"servers. Note that some servers (such as GlassFish) require you to specify "
+"JNDI names for all EJB components explicitly (and tediously). In this case, "
+"you can pick your own pattern ;-)"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:175
+#, no-c-format
+msgid "Using facelets"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:176
+#, no-c-format
+msgid ""
+"If you want follow our advice and use facelets instead of JSP, add the "
+"following lines to <literal>faces-config.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:179
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;view-handler&gt;com.sun.facelets.FaceletViewHandler&lt;/view-"
+"handler&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:180
+#, no-c-format
+msgid "And the following lines to <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:183
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;javax.faces.DEFAULT_SUFFIX&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;.xhtml&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:184
+#, no-c-format
+msgid "Don't forget!"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:185
+#, no-c-format
+msgid ""
+"There is one final item you need to know about. You must place a "
+"<literal>seam.properties</literal>, <literal>META-INF/seam.properties</"
+"literal> or <literal>META-INF/components.xml</literal> file in any archive "
+"in which your Seam components are deployed (even an empty properties file "
+"will do). At startup, Seam will scan any archives with <literal>seam."
+"properties</literal> files for seam components."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:188
+#, no-c-format
+msgid ""
+"That's why all the Seam examples have an empty <literal>seam.properties</"
+"literal> file. You can't just delete this file and expect everything to "
+"still work!"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:191
+#, no-c-format
+msgid ""
+"You might think this is silly and what kind of idiot framework designers "
+"would make an empty file affect the behavior of their software?? Well, this "
+"is a workaround for a limitation of the JVM&mdash;if we didn't use this "
+"mechanism, our next best option would be to force you to list every "
+"component explicitly in <literal>components.xml</literal>, just like some "
+"other competing frameworks do! I think you'll like our way better."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:195
+#, no-c-format
+msgid "Configuring Seam in Java EE 5"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:204
+#, no-c-format
+msgid ""
+"If you're running in a Java EE 5 environment, this is all the configuration "
+"required to start using Seam!"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:207 Configuration.xml:270 Configuration.xml:318
+#: Configuration.xml:354 Configuration.xml:371
+#, no-c-format
+msgid "Packaging"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:208
+#, no-c-format
+msgid ""
+"Once you've packaged all this stuff together into an EAR, the archive "
+"structure will look something like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:211
+#, no-c-format
+msgid ""
+"my-application.ear/\n"
+"    jboss-seam.jar\n"
+"    el-api.jar\n"
+"    el-ri.jar\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"        application.xml\n"
+"    my-application.war/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"        WEB-INF/\n"
+"            web.xml\n"
+"            components.xml\n"
+"            faces-config.xml\n"
+"            lib/\n"
+"                jsf-facelets.jar\n"
+"                jboss-seam-ui.jar\n"
+"        login.jsp\n"
+"        register.jsp\n"
+"        ...\n"
+"    my-application.jar/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"            persistence.xml\n"
+"        seam.properties\n"
+"        org/\n"
+"            jboss/\n"
+"                myapplication/\n"
+"                    User.class\n"
+"                    Login.class\n"
+"                    LoginBean.class\n"
+"                    Register.class\n"
+"                    RegisterBean.class\n"
+"                    ..."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:212
+#, no-c-format
+msgid ""
+"You must include <literal>jboss-seam.jar</literal>, <literal>el-api.jar</"
+"literal> and <literal>el-ri.jar</literal> in the EAR classpath. Make sure "
+"you reference all of these jars from <literal>application.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:215
+#, no-c-format
+msgid ""
+"If you want to use jBPM or Drools, you must include the needed jars in the "
+"EAR classpath. Make sure you reference all of the jars from "
+"<literal>application.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:218
+#, no-c-format
+msgid ""
+"If you want to use facelets (our recommendation), you must include "
+"<literal>jsf-facelets.jar</literal> in the <literal>WEB-INF/lib</literal> "
+"directory of the WAR."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:221
+#, no-c-format
+msgid ""
+"If you want to use the Seam tag library (most Seam applications do), you "
+"must include <literal>jboss-seam-ui.jar</literal> in the <literal>WEB-INF/"
+"lib</literal> directory of the WAR. If you want to use the PDF or email tag "
+"libraries, you need to put <literal>jboss-seam-pdf.jar</literal> or "
+"<literal>jboss-seam-mail.jar</literal> in <literal>WEB-INF/lib</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:224
+#, no-c-format
+msgid ""
+"If you want to use the Seam debug page (only works for applications using "
+"facelets), you must include <literal>jboss-seam-debug.jar</literal> in the "
+"<literal>WEB-INF/lib</literal> directory of the WAR."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:227
+#, no-c-format
+msgid ""
+"Seam ships with several example applications that are deployable in any Java "
+"EE container that supports EJB 3.0."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:231
+#, no-c-format
+msgid "Configuring Seam in Java SE, with the JBoss Embeddable EJB3 container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:232
+#, no-c-format
+msgid ""
+"The JBoss Embeddable EJB3 container lets you run EJB3 components outside the "
+"context of the Java EE 5 application server. This is especially, but not "
+"only, useful for testing."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:235
+#, no-c-format
+msgid ""
+"The Seam booking example application includes a TestNG integration test "
+"suite that runs on the Embeddable EJB3 container."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:246
+#, no-c-format
+msgid "The booking example application may even be deployed to Tomcat."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:257
+#, no-c-format
+msgid "Installing the Embeddable EJB3 container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:258
+#, no-c-format
+msgid ""
+"Seam ships with a build of the Embeddable EJB3 container in the "
+"<literal>embedded-ejb</literal> directory. To use the Embeddable EJB3 "
+"container with Seam, add the <literal>embedded-ejb/conf</literal> directory, "
+"and all jars in the <literal>lib</literal> and <literal>embedded-ejb/lib</"
+"literal> directories to your classpath. Then, add the following line to "
+"<literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:261
+#, no-c-format
+msgid "&lt;core:ejb /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:262
+#, no-c-format
+msgid ""
+"This setting installs the built-in component named <literal>org.jboss.seam."
+"core.ejb</literal>. This component is responsible for bootstrapping the EJB "
+"container when Seam is started, and shutting it down when the web "
+"application is undeployed."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:265
+#, no-c-format
+msgid "Configuring a datasource with the Embeddable EJB3 container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:266
+#, no-c-format
+msgid ""
+"You should refer to the Embeddable EJB3 container documentation for more "
+"information about configuring the container. You'll probably at least need "
+"to set up your own datasource. Embeddable EJB3 is implemented using the "
+"JBoss Microcontainer, so it's very easy to add new services to the minimal "
+"set of services provided by default. For example, I can add a new datasource "
+"by putting this <literal>jboss-beans.xml</literal> file in my classpath:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:269
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"\n"
+"&lt;deployment xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"urn:jboss:bean-deployer bean-deployer_1_0."
+"xsd\"\n"
+"            xmlns=\"urn:jboss:bean-deployer\"&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasourceBootstrap\"\n"
+"        class=\"org.jboss.resource.adapter.jdbc.local.LocalTxDataSource"
+"\"&gt;\n"
+"      &lt;property name=\"driverClass\"&gt;org.hsqldb.jdbcDriver&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"connectionURL\"&gt;jdbc:hsqldb:.&lt;/property&gt;\n"
+"      &lt;property name=\"userName\"&gt;sa&lt;/property&gt;\n"
+"      &lt;property name=\"jndiName\"&gt;java:/bookingDatasource&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"minSize\"&gt;0&lt;/property&gt;\n"
+"      &lt;property name=\"maxSize\"&gt;10&lt;/property&gt;\n"
+"      &lt;property name=\"blockingTimeout\"&gt;1000&lt;/property&gt;\n"
+"      &lt;property name=\"idleTimeout\"&gt;100000&lt;/property&gt;\n"
+"      &lt;property name=\"transactionManager\"&gt;\n"
+"        &lt;inject bean=\"TransactionManager\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"      &lt;property name=\"cachedConnectionManager\"&gt;\n"
+"        &lt;inject bean=\"CachedConnectionManager\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"      &lt;property name=\"initialContextProperties\"&gt;\n"
+"        &lt;inject bean=\"InitialContextProperties\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasource\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getDatasource\"&gt;\n"
+"         &lt;factory bean=\"bookingDatasourceBootstrap\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"&lt;/deployment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:271
+#, no-c-format
+msgid ""
+"The archive structure of a WAR-based deployment on an servlet engine like "
+"Tomcat will look something like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:274
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            myfaces-api.jar\n"
+"            myfaces-impl.jar\n"
+"            jboss-ejb3.jar\n"
+"            jboss-jca.jar\n"
+"            jboss-j2ee.jar\n"
+"            ...\n"
+"            mc-conf.jar/\n"
+"                ejb3-interceptors-aop.xml\n"
+"                embedded-jboss-beans.xml\n"
+"                default.persistence.properties\n"
+"                jndi.properties\n"
+"                login-config.xml\n"
+"                security-beans.xml\n"
+"                log4j.xml\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                    MANIFEST.MF\n"
+"                    persistence.xml\n"
+"                    jboss-beans.xml\n"
+"                log4j.xml\n"
+"                seam.properties\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            LoginBean.class\n"
+"                            Register.class\n"
+"                            RegisterBean.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:275
+#, no-c-format
+msgid ""
+"The <literal>mc-conf.jar</literal> just contains the standard JBoss "
+"Microcontainer configuration files for Embeddable EJB3. You won't usually "
+"need to edit these files yourself."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:278
+#, no-c-format
+msgid ""
+"Most of the Seam example applications may be deployed to Tomcat by running "
+"<literal>ant deploy.tomcat</literal>."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:281
+#, no-c-format
+msgid "Configuring Seam in J2EE"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:282
+#, no-c-format
+msgid ""
+"Seam is useful even if you're not yet ready to take the plunge into EJB 3.0. "
+"In this case you would use Hibernate3 or JPA instead of EJB 3.0 persistence, "
+"and plain JavaBeans instead of session beans. You'll miss out on some of the "
+"nice features of session beans but it will be very easy to migrate to EJB "
+"3.0 when you're ready and, in the meantime, you'll be able to take advantage "
+"of Seam's unique declarative state management architecture."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:293
+#, no-c-format
+msgid ""
+"Seam JavaBean components do not provide declarative transaction demarcation "
+"like session beans do. You <emphasis>could</emphasis> manage your "
+"transactions manually using the JTA <literal>UserTransaction</literal> (you "
+"could even implement your own declarative transaction management in a Seam "
+"interceptor). But most applications will use Seam managed transactions when "
+"using Hibernate with JavaBeans. Follow the instructions in the persistence "
+"chapter to install <literal>TransactionalSeamPhaseListener</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:296
+#, no-c-format
+msgid ""
+"The Seam distribution includes a version of the booking example application "
+"that uses Hibernate3 and JavaBeans instead of EJB3, and another version that "
+"uses JPA and JavaBeans. These example applications are ready to deploy into "
+"any J2EE application server."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:299
+#, no-c-format
+msgid ""
+"If we want to deploy Hibernate in a non-J2EE environment like Tomcat or "
+"TestNG, we need to do a little bit more work."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:302
+#, no-c-format
+msgid "Boostrapping Hibernate in Seam"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:303
+#, no-c-format
+msgid ""
+"Seam will bootstrap a Hibernate <literal>SessionFactory</literal> from your "
+"<literal>hibernate.cfg.xml</literal> file if you install a built-in "
+"component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:306
+#, no-c-format
+msgid ""
+"&lt;core:hibernate-session-factory name=\"hibernateSessionFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:307
+#, no-c-format
+msgid ""
+"You will also need to configure a <emphasis>managed session</emphasis> if "
+"you want a Seam managed Hibernate <literal>Session</literal> to be available "
+"via injection."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:310
+#, no-c-format
+msgid "Boostrapping JPA in Seam"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:311
+#, no-c-format
+msgid ""
+"Seam will bootstrap a JPA <literal>EntityManagerFactory</literal> from your "
+"<literal>persistence.xml</literal> file if you install this built-in "
+"component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:314
+#, no-c-format
+msgid "&lt;core:entity-manager-factory name=\"entityManagerFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:315
+#, no-c-format
+msgid ""
+"You will also need to configure a <emphasis>managed persistencece context</"
+"emphasis> if you want a Seam managed JPA <literal>EntityManager</literal> to "
+"be available via injection."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:319
+#, no-c-format
+msgid "We can package our application as a WAR, in the following structure:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:322
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            hibernate3.jar\n"
+"            hibernate-annotations.jar\n"
+"            ...\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                   MANIFEST.MF\n"
+"                seam.properties\n"
+"                hibernate.cfg.xml\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            Register.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:324
+#, no-c-format
+msgid "Configuring Seam in Java SE, with the JBoss Microcontainer"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:325
+#, no-c-format
+msgid ""
+"The Seam support for Hibernate and JPA requires JTA and a JCA datasource. If "
+"you are running in a non-EE environment like Tomcat or TestNG you can run "
+"these services, and Hibernate itself, in the JBoss Microcontainer."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:328
+#, no-c-format
+msgid ""
+"You can even deploy the Hibernate and JPA versions of the booking example in "
+"Tomcat."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:339
+#, no-c-format
+msgid ""
+"Seam ships with an example Microcontainer configuration in "
+"<literal>microcontainer/conf/jboss-beans.xml</literal> that provides all the "
+"things you need to run Seam with Hibernate in any non-EE environment. Just "
+"add the <literal>microcontainer/conf</literal> directory, and all jars in "
+"the <literal>lib</literal> and <literal>microcontainer/lib</literal> "
+"directories to your classpath. Refer to the documentation for the JBoss "
+"Microcontainer for more information."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:342
+#, no-c-format
+msgid "Using Hibernate and the JBoss Microcontainer"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:343
+#, no-c-format
+msgid ""
+"The built-in Seam component named <literal>org.jboss.seam.core."
+"microcontainer</literal> bootstraps the microcontainer. As before, we "
+"probably want to use a Seam managed session."
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:346
+#, no-c-format
+msgid ""
+"&lt;core:microcontainer/&gt;\n"
+"\n"
+"&lt;core:managed-hibernate-session name=\"bookingDatabase\" auto-create="
+"\"true\"\n"
+"    session-factory-jndi-name=\"java:/bookingSessionFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:347
+#, no-c-format
+msgid ""
+"Where <literal>java:/bookingSessionFactory</literal> is the name of the "
+"Hibernate session factory specified in <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:350
+#, no-c-format
+msgid ""
+"You'll need to provide a <literal>jboss.beans.xml</literal> file that "
+"installs JNDI, JTA, your JCA datasource and Hibernate into the "
+"microcontainer:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:353
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"\n"
+"&lt;deployment xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"urn:jboss:bean-deployer bean-deployer_1_0."
+"xsd\"\n"
+"            xmlns=\"urn:jboss:bean-deployer\"&gt;\n"
+"\n"
+"   &lt;bean name=\"Naming\" class=\"org.jnp.server.SingletonNamingServer\"/"
+"&gt;\n"
+"\n"
+"   &lt;bean name=\"TransactionManagerFactory\"\n"
+"       class=\"org.jboss.seam.microcontainer.TransactionManagerFactory\"/"
+"&gt;\n"
+"   &lt;bean name=\"TransactionManager\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getTransactionManager\"&gt;\n"
+"         &lt;factory bean=\"TransactionManagerFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasourceFactory\" class=\"org.jboss.seam."
+"microcontainer.DataSourceFactory\"&gt;\n"
+"      &lt;property name=\"driverClass\"&gt;org.hsqldb.jdbcDriver&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"connectionUrl\"&gt;jdbc:hsqldb:.&lt;/property&gt;\n"
+"      &lt;property name=\"userName\"&gt;sa&lt;/property&gt;\n"
+"      &lt;property name=\"jndiName\"&gt;java:/hibernateDatasource&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"minSize\"&gt;0&lt;/property&gt;\n"
+"      &lt;property name=\"maxSize\"&gt;10&lt;/property&gt;\n"
+"      &lt;property name=\"blockingTimeout\"&gt;1000&lt;/property&gt;\n"
+"      &lt;property name=\"idleTimeout\"&gt;100000&lt;/property&gt;\n"
+"      &lt;property name=\"transactionManager\"&gt;&lt;inject bean="
+"\"TransactionManager\"/&gt;&lt;/property&gt;\n"
+"   &lt;/bean&gt;\n"
+"   &lt;bean name=\"bookingDatasource\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getDataSource\"&gt;\n"
+"         &lt;factory bean=\"bookingDatasourceFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingSessionFactoryFactory\"\n"
+"       class=\"org.jboss.seam.microcontainer.HibernateFactory\"/&gt;\n"
+"   &lt;bean name=\"bookingSessionFactory\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getSessionFactory\"&gt;\n"
+"         &lt;factory bean=\"bookingSessionFactoryFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"      &lt;depends&gt;bookingDatasource&lt;/depends&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"&lt;/deployment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:355
+#, no-c-format
+msgid "The WAR could have the following structure:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:358
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            hibernate3.jar\n"
+"            ...\n"
+"            jboss-microcontainer.jar\n"
+"            jboss-jca.jar\n"
+"            ...\n"
+"            myfaces-api.jar\n"
+"            myfaces-impl.jar\n"
+"            mc-conf.jar/\n"
+"                jndi.properties\n"
+"                log4j.xml\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                    MANIFEST.MF\n"
+"                    jboss-beans.xml\n"
+"                seam.properties\n"
+"                hibernate.cfg.xml\n"
+"                log4j.xml\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            Register.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:359
+#, no-c-format
+msgid "Configuring jBPM in Seam"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:360
+#, no-c-format
+msgid ""
+"Seam's jBPM integration is not installed by default, so you'll need to "
+"enable jBPM by installing a built-in component. You'll also need to "
+"explicitly list your process and pageflow definitions. In "
+"<literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:363
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:pageflow-definitions&gt;\n"
+"        &lt;value&gt;createDocument.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;editDocument.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;approveDocument.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:pageflow-definitions&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;documentLifecycle.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:364
+#, no-c-format
+msgid ""
+"No further special configuration is needed if you only have pageflows. If "
+"you do have business process definitions, you need to provide a jBPM "
+"configuration, and a Hibernate configuration for jBPM. The Seam DVD Store "
+"demo includes example <literal>jbpm.cfg.xml</literal> and <literal>hibernate."
+"cfg.xml</literal> files that will work with Seam:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:367
+#, no-c-format
+msgid ""
+"&lt;jbpm-configuration&gt;\n"
+"\n"
+"  &lt;jbpm-context&gt;\n"
+"    &lt;service name=\"persistence\"&gt;\n"
+"       &lt;factory&gt;\n"
+"          &lt;bean class=\"org.jbpm.persistence.db."
+"DbPersistenceServiceFactory\"&gt;\n"
+"             &lt;field name=\"isTransactionEnabled\"&gt;&lt;false/&gt;&lt;/"
+"field&gt;\n"
+"          &lt;/bean&gt;\n"
+"       &lt;/factory&gt;\n"
+"    &lt;/service&gt;\n"
+"    &lt;service name=\"message\" factory=\"org.jbpm.msg.db."
+"DbMessageServiceFactory\" /&gt;\n"
+"    &lt;service name=\"scheduler\" factory=\"org.jbpm.scheduler.db."
+"DbSchedulerServiceFactory\" /&gt;\n"
+"    &lt;service name=\"logging\" factory=\"org.jbpm.logging.db."
+"DbLoggingServiceFactory\" /&gt;\n"
+"    &lt;service name=\"authentication\" \n"
+"        factory=\"org.jbpm.security.authentication."
+"DefaultAuthenticationServiceFactory\" /&gt;\n"
+"  &lt;/jbpm-context&gt;\n"
+"\n"
+"&lt;/jbpm-configuration&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:368
+#, no-c-format
+msgid ""
+"The most important thing to notice here is that jBPM transaction control is "
+"disabled. Seam or EJB3 should control the JTA transactions."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:372
+#, no-c-format
+msgid ""
+"There is not yet any well-defined packaging format for jBPM configuration "
+"and process/pageflow definition files. In the Seam examples we've decided to "
+"simply package all these files into the root of the EAR. In future, we will "
+"probably design some other standard packaging format. So the EAR looks "
+"something like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:375
+#, no-c-format
+msgid ""
+"my-application.ear/\n"
+"    jboss-seam.jar\n"
+"    el-api.jar\n"
+"    el-ri.jar\n"
+"    jbpm-3.1.jar\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"        application.xml\n"
+"    my-application.war/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"        WEB-INF/\n"
+"            web.xml\n"
+"            components.xml\n"
+"            faces-config.xml\n"
+"            lib/\n"
+"                jsf-facelets.jar\n"
+"                jboss-seam-ui.jar\n"
+"        login.jsp\n"
+"        register.jsp\n"
+"        ...\n"
+"    my-application.jar/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"            persistence.xml\n"
+"        seam.properties\n"
+"        org/\n"
+"            jboss/\n"
+"                myapplication/\n"
+"                    User.class\n"
+"                    Login.class\n"
+"                    LoginBean.class\n"
+"                    Register.class\n"
+"                    RegisterBean.class\n"
+"                    ...\n"
+"    jbpm.cfg.xml\n"
+"    hibernate.cfg.xml\n"
+"    createDocument.jpdl.xml\n"
+"    editDocument.jpdl.xml\n"
+"    approveDocument.jpdl.xml\n"
+"    documentLifecycle.jpdl.xml"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:376
+#, no-c-format
+msgid ""
+"Remember to add <literal>jbpm-3.1.jar</literal> to the manifest of your EJB-"
+"JAR and WAR."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:379
+#, no-c-format
+msgid "Configuring Seam in a Portal"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:380
+#, no-c-format
+msgid ""
+"To run a Seam application as a portlet, you'll need to provide certain "
+"portlet metadata (<literal>portlet.xml</literal>, etc) in addition to the "
+"usual Java EE metadata. See the <literal>examples/portal</literal> directory "
+"for an example of the booking demo preconfigured to run on JBoss Portal."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:383
+#, no-c-format
+msgid ""
+"In addition, you'll need to use a portlet-specific phase listener instead of "
+"<literal>SeamPhaseListener</literal> or "
+"<literal>TransactionalSeamPhaseListener</literal>. The "
+"<literal>SeamPortletPhaseListener</literal> and "
+"<literal>TransactionalSeamPortletPhaseListener</literal> are adapted to the "
+"portlet lifecycle. I would like to offer my sincerest apologies for the name "
+"of that last class. I really couldn't think of anything better. Sorry."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Controls.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Controls.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Controls.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,591 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Controls.xml:10
+#, no-c-format
+msgid "Seam JSF controls"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:11
+#, no-c-format
+msgid ""
+"Seam includes a number of JSF controls that are useful for working with "
+"Seam. These are intended to complement the built-in JSF controls, and "
+"controls from other third-party libraries. We recommend the Ajax4JSF and ADF "
+"faces (now Trinidad) tag libraries for use with Seam. We do not recommend "
+"the use of the Tomahawk tag library."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:14
+#, no-c-format
+msgid "The ui example demonstrates the use of a number of these tags."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:19
+#, no-c-format
+msgid "&lt;s:validate&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:21
+#, no-c-format
+msgid ""
+"Validate a JSF input field against the bound property using Hibernate "
+"Validator."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:27
+#, no-c-format
+msgid "&lt;s:validateAll&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:29
+#, no-c-format
+msgid ""
+"Validate all child JSF input fields against the bound propertys using "
+"Hibernate Validator."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:35
+#, no-c-format
+msgid "&lt;s:formattedText&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:37
+#, no-c-format
+msgid "Output <emphasis>Seam Text</emphasis>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:43
+#, no-c-format
+msgid "&lt;s:convertDateTime&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:45
+#, no-c-format
+msgid "Perform date or time conversions in the Seam timezone."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:51
+#, no-c-format
+msgid "&lt;s:convertEnum&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:53
+#, no-c-format
+msgid ""
+"Assigns an enum converter to the current component. This is primarily useful "
+"for radio button and dropdown controls."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:59
+#, no-c-format
+msgid "&lt;s:enumItem&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:61
+#, no-c-format
+msgid "Creates a <literal>SelectItem</literal> from an enum value."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:66
+#, no-c-format
+msgid ""
+"<literal>enumValue</literal> &mdash; the string representation of the enum "
+"value."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:71
+#, no-c-format
+msgid ""
+"<literal>label</literal> &mdash; the label to be used when rendering the "
+"<literal>SelectItem</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:79
+#, no-c-format
+msgid "&lt;s:selectItems&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:81
+#, no-c-format
+msgid ""
+"Creates a <literal>List&lt;SelectItem&gt;</literal> from a List, Set, "
+"DataModel or Array."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:86
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; an EL expression specifying the data that "
+"backs the <literal>List&lt;SelectItem&gt;</literal>"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:91
+#, no-c-format
+msgid ""
+"<literal>var</literal> &mdash; defines the name of the local variable that "
+"holds the current object during iteration"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:96
+#, no-c-format
+msgid ""
+"<literal>label</literal> &mdash; the label to be used when rendering the "
+"<literal>SelectItem</literal>. Can reference the <literal>var</literal> "
+"variable"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:101
+#, no-c-format
+msgid ""
+"<literal>disabled</literal> &mdash; if true the <literal>SelectItem</"
+"literal> will be rendered disabled. Can reference the <literal>var</literal> "
+"variable"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:106
+#, no-c-format
+msgid ""
+"<literal>noSelectionLabel</literal> &mdash; specifies the (optional) label "
+"to place at the top of list (if <literal>required=\"true\"</literal> is also "
+"specified then selecting this value will cause a validation error)"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:111
+#, no-c-format
+msgid ""
+"<literal>hideNoSelectionLabel</literal> &mdash; if true, the "
+"<literal>noSelectionLabel</literal> will be hidden when a value is selected"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:119
+#, no-c-format
+msgid "&lt;s:decorate&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:121
+#, no-c-format
+msgid "\"Decorate\" a JSF input field when validation fails."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:127
+#, no-c-format
+msgid "&lt;s:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:129
+#, no-c-format
+msgid "\"Decorate\" a JSF input field with the validation error message."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:135
+#, no-c-format
+msgid "&lt;s:span&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:137
+#, no-c-format
+msgid "Render a HTML <literal>&lt;span&gt;</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:143
+#, no-c-format
+msgid "&lt;s:div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:145
+#, no-c-format
+msgid "Render a HTML <literal>&lt;div&gt;</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:151
+#, no-c-format
+msgid "&lt;s:fragment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:153
+#, no-c-format
+msgid ""
+"A non-rendering component useful for enabling/disabling rendering of it's "
+"children"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:159
+#, no-c-format
+msgid "&lt;s:cache&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:161
+#, no-c-format
+msgid ""
+"Cache the rendered page fragment using JBoss Cache. Note that <literal>&lt;s:"
+"cache&gt;</literal> actually uses the instance of JBoss Cache managed by the "
+"built-in <literal>pojoCache</literal> component."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:166
+#, no-c-format
+msgid ""
+"<literal>key</literal> &mdash; the key to cache rendered content, often a "
+"value expression. For example, if we were caching a page fragment that "
+"displays a document, we might use <literal>key=\"Document-#{document.id}\"</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:171
+#, no-c-format
+msgid ""
+"<literal>enabled</literal> &mdash; a value expression that determines if the "
+"cache should be used."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:176
+#, no-c-format
+msgid ""
+"<literal>region</literal> &mdash; a JBoss Cache node to use (different nodes "
+"can have different expiry policies)."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:184
+#, no-c-format
+msgid "&lt;s:link&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:186
+#, no-c-format
+msgid ""
+"A link that supports invocation of an action with control over conversation "
+"propagation. <emphasis>Does not submit the form.</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:191 Controls.xml:236
+#, no-c-format
+msgid "<literal>value</literal> &mdash; the label."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:196 Controls.xml:241
+#, no-c-format
+msgid ""
+"<literal>action</literal> &mdash; a method binding that specified the action "
+"listener."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:201 Controls.xml:246
+#, no-c-format
+msgid "<literal>view</literal> &mdash; the JSF view id to link to."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:206 Controls.xml:251
+#, no-c-format
+msgid "<literal>fragment</literal> &mdash; the fragment identifier to link to."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:211 Controls.xml:256
+#, no-c-format
+msgid "<literal>disabled</literal> &mdash; is the link disabled?"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:216 Controls.xml:261 Controls.xml:301
+#, no-c-format
+msgid ""
+"<literal>propagation</literal> &mdash; determines the conversation "
+"propagation style: <literal>begin</literal>, <literal>join</literal>, "
+"<literal>nest</literal>, <literal>none</literal> or <literal>end</literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:221 Controls.xml:266 Controls.xml:306
+#, no-c-format
+msgid ""
+"<literal>pageflow</literal> &mdash; a pageflow definition to begin. (This is "
+"only useful when <literal>propagation=\"begin\"</literal> or "
+"<literal>propagation=\"join\"</literal>.)"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:229
+#, no-c-format
+msgid "&lt;s:button&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:231
+#, no-c-format
+msgid ""
+"A button that supports invocation of an action with control over "
+"conversation propagation. <emphasis>Does not submit the form.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:274
+#, no-c-format
+msgid "&lt;s:selectDate&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:276
+#, no-c-format
+msgid ""
+"Displays a dynamic date picker component that selects a date for the "
+"specified input field. The body of the <literal>selectDate</literal> element "
+"should contain HTML elements, such as text or an image, that prompt the user "
+"to click to display the date picker. The date picker can be styled using "
+"CSS. An example CSS file can be found in the Seam booking demo as "
+"<literal>date.css</literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:281
+#, no-c-format
+msgid ""
+"<literal>for</literal> &mdash; The id of the input field that the date "
+"picker will insert the selected date into."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:286
+#, no-c-format
+msgid ""
+"<literal>dateFormat</literal> &mdash; The date format string. This should "
+"match the date format of the input field."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:294
+#, no-c-format
+msgid "&lt;s:conversationPropagation&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:296
+#, no-c-format
+msgid ""
+"Customize the conversation propagation for a command link or button (or "
+"similar JSF control). <emphasis>Facelets only.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:314
+#, no-c-format
+msgid "&lt;s:conversationId&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:316
+#, no-c-format
+msgid ""
+"Add the conversation id to an output link (or similar JSF control). "
+"<emphasis>Facelets only.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:322
+#, no-c-format
+msgid "&lt;s:taskId&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:324
+#, no-c-format
+msgid ""
+"Add the task id to an output link (or similar JSF control), when the task is "
+"available via <literal>#{task}</literal>. <emphasis>Facelets only.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:330
+#, no-c-format
+msgid "&lt;s:fileUpload&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:332
+#, no-c-format
+msgid ""
+"Renders a file upload control. This control must be used within a form with "
+"an encoding type of <literal>multipart/form-data</literal>, i.e:"
+msgstr ""
+
+#. Tag: programlisting
+#: Controls.xml:335
+#, no-c-format
+msgid "&lt;h:form enctype=\"multipart/form-data\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:336
+#, no-c-format
+msgid ""
+"For multipart requests, the Seam Multipart servlet filter must also be "
+"configured in <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Controls.xml:339
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"      &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"      &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-"
+"class&gt;\n"
+"    &lt;/filter&gt;\n"
+"    \n"
+"    &lt;filter-mapping&gt;\n"
+"      &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"      &lt;url-pattern&gt;/*&lt;/url-pattern&gt;\n"
+"    &lt;/filter-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:340
+#, no-c-format
+msgid ""
+"The following configuration options for multipart requests may be configured "
+"in components.xml:"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:345
+#, no-c-format
+msgid ""
+"<literal>createTempFiles</literal> &mdash; if this option is set to true, "
+"uploaded files are streamed to a temporary file instead of in memory."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:350
+#, no-c-format
+msgid ""
+"<literal>maxRequestSize</literal> &mdash; the maximum size of a file upload "
+"request, in bytes."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:355
+#, no-c-format
+msgid "Here's an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Controls.xml:358
+#, no-c-format
+msgid ""
+"&lt;component class=\"org.jboss.seam.servlet.MultipartConfig\"&gt;\n"
+"        &lt;property name=\"createTempFiles\"&gt;true&lt;/property&gt;\n"
+"        &lt;property name=\"maxRequestSize\"&gt;1000000&lt;/property&gt;\n"
+"    &lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:359
+#, no-c-format
+msgid ""
+"And here's a list of the supported attributes for the <literal>fileUpload</"
+"literal> control:"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:364
+#, no-c-format
+msgid ""
+"<literal>data</literal> &mdash; this value binding receives the binary file "
+"data. The receiving field should be declared as a <literal>byte[]</literal> "
+"or <literal>InputStream</literal> (required)."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:369
+#, no-c-format
+msgid ""
+"<literal>contentType</literal> &mdash; this value binding receives the "
+"file's content type (optional)."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:374
+#, no-c-format
+msgid ""
+"<literal>fileName</literal> &mdash; this value binding receives the filename "
+"(optional)."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:379
+#, no-c-format
+msgid ""
+"<literal>accept</literal> &mdash; a comma-separated list of content types to "
+"accept, may not be supported by the browser. E.g. <literal>\"images/png,"
+"images/jpg\"</literal>, <literal>\"images/*\"</literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:384
+#, no-c-format
+msgid "<literal>style</literal> &mdash; The control's style"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:389
+#, no-c-format
+msgid "<literal>styleClass</literal> &mdash; The control's style class"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Conversations.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Conversations.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Conversations.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1248 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Conversations.xml:10
+#, no-c-format
+msgid "Conversations and workspace management"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:11
+#, no-c-format
+msgid "It's time to understand Seam's conversation model in more detail."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:14
+#, no-c-format
+msgid ""
+"Historically, the notion of a Seam \"conversation\" came about as a merger "
+"of three different ideas:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:19
+#, no-c-format
+msgid ""
+"The idea of a <emphasis>workspace</emphasis>, which I encountered in a "
+"project for the Victorian government in 2002. In this project I was forced "
+"to implement workspace management on top of Struts, an experience I pray "
+"never to repeat."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:24
+#, no-c-format
+msgid ""
+"The idea of an <emphasis>application transaction</emphasis> with optimistic "
+"semantics, and the realization that existing frameworks based around a "
+"stateless architecture could not provide effective management of extended "
+"persistence contexts. (The Hibernate team is truly fed up with copping the "
+"blame for <literal>LazyInitializationException</literal>s, which are not "
+"really Hibernate's fault, but rather the fault of the extremely limiting "
+"persistence context model supported by stateless architectures such as the "
+"Spring framework or the traditional <emphasis>stateless session facade</"
+"emphasis> (anti)pattern in J2EE.)"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:29
+#, no-c-format
+msgid "The idea of a workflow <emphasis>task</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:34
+#, no-c-format
+msgid ""
+"By unifying these ideas and providing deep support in the framework, we have "
+"a powerful construct that lets us build richer and more efficient "
+"applications with less code than before."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:38
+#, no-c-format
+msgid "Seam's conversation model"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:39
+#, no-c-format
+msgid ""
+"The examples we have seen so far make use of a very simple conversation "
+"model that follows these rules:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:44
+#, no-c-format
+msgid ""
+"There is always a conversation context active during the apply request "
+"values, process validations, update model values, invoke application and "
+"render response phases of the JSF request lifecycle."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:49
+#, no-c-format
+msgid ""
+"At the end of the restore view phase of the JSF request lifecycle, Seam "
+"attempts to restore any previous long-running conversation context. If none "
+"exists, Seam creates a new temporary conversation context."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:54
+#, no-c-format
+msgid ""
+"When an <literal>@Begin</literal> method is encountered, the temporary "
+"conversation context is promoted to a long running conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:59
+#, no-c-format
+msgid ""
+"When an <literal>@End</literal> method is encountered, any long-running "
+"conversation context is demoted to a temporary conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:64
+#, no-c-format
+msgid ""
+"At the end of the render response phase of the JSF request lifecycle, Seam "
+"stores the contents of a long running conversation context or destroys the "
+"contents of a temporary conversation context."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:69
+#, no-c-format
+msgid ""
+"Any faces request (a JSF postback) will propagate the conversation context. "
+"By default, non-faces requests (GET requests, for example) do not propagate "
+"the conversation context, but see below for more information on this."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:74
+#, no-c-format
+msgid ""
+"If the JSF request lifecycle is foreshortened by a redirect, Seam "
+"transparently stores and restores the current conversation context&mdash;"
+"unless the conversation was already ended via <literal>@End"
+"(beforeRedirect=true)</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:79
+#, no-c-format
+msgid ""
+"Seam transparently propagates the conversation context across JSF postbacks "
+"and redirects. If you don't do anything special, a <emphasis>non-faces "
+"request</emphasis> (a GET request for example) will not propagate the "
+"conversation context and will be processed in a new temporary conversation. "
+"This is usually - but not always - the desired behavior."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:82
+#, no-c-format
+msgid ""
+"If you want to propagate a Seam conversation across a non-faces request, you "
+"need to explicitly code the Seam <emphasis>conversation id</emphasis> as a "
+"request parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:85
+#, no-c-format
+msgid ""
+"&lt;a href=\"main.jsf?conversationId=#{conversation.id}\"&gt;Continue&lt;/"
+"a&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:86
+#, no-c-format
+msgid "Or, the more JSF-ish:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:89
+#, no-c-format
+msgid ""
+"&lt;h:outputLink value=\"main.jsf\"&gt;\n"
+"    &lt;f:param name=\"conversationId\" value=\"#{conversation.id}\"/&gt;\n"
+"    &lt;h:outputText value=\"Continue\"/&gt;\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:90 Conversations.xml:98
+#, no-c-format
+msgid "If you use the Seam tag library, this is equivalent:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:93
+#, no-c-format
+msgid ""
+"&lt;h:outputLink value=\"main.jsf\"&gt;\n"
+"    &lt;s:conversationId/&gt;\n"
+"    &lt;h:outputText value=\"Continue\"/&gt;\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:94
+#, no-c-format
+msgid ""
+"If you wish to disable propagation of the conversation context for a "
+"postback, a similar trick is used:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:97
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;f:param name=\"conversationPropagation\" value=\"none\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:101
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"none\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:102
+#, no-c-format
+msgid ""
+"Note that disabling conversation context propagation is absolutely not the "
+"same thing as ending the conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:105
+#, no-c-format
+msgid ""
+"The <literal>conversationPropagation</literal> request parameter, or the "
+"<literal>&lt;s:conversationPropagation&gt;</literal> tag may even be used to "
+"begin and end conversation, or begin a nested conversation."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:108
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"end\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:109
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Child\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"nested\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:110
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Hotel\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"begin\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:111
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Hotel\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"join\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:112
+#, no-c-format
+msgid ""
+"This conversation model makes it easy to build applications which behave "
+"correctly with respect to multi-window operation. For many applications, "
+"this is all that is needed. Some complex applications have either or both of "
+"the following additional requirements:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:117
+#, no-c-format
+msgid ""
+"A conversation spans many smaller units of user interaction, which execute "
+"serially or even concurrently. The smaller <emphasis>nested conversations</"
+"emphasis> have their own isolated set of conversation state, and also have "
+"access to the state of the outer conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:122
+#, no-c-format
+msgid ""
+"The user is able to switch between many conversations within the same "
+"browser window. This feature is called <emphasis>workspace management</"
+"emphasis>."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:130
+#, no-c-format
+msgid "Nested conversations"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:131
+#, no-c-format
+msgid ""
+"A nested conversation is created by invoking a method marked <literal>@Begin"
+"(nested=true)</literal> inside the scope of an existing conversation. A "
+"nested conversation has its own conversation context, and also has read-only "
+"access to the context of the outer conversation. (It can read the outer "
+"conversation's context variables, but not write to them.) When an "
+"<literal>@End</literal> is subsequently encountered, the nested conversation "
+"will be destroyed, and the outer conversation will resume, by \"popping\" "
+"the conversation stack. Conversations may be nested to any arbitrary depth."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:134
+#, no-c-format
+msgid ""
+"Certain user activity (workspace management, or the back button) can cause "
+"the outer conversation to be resumed before the inner conversation is ended. "
+"In this case it is possible to have multiple concurrent nested conversations "
+"belonging to the same outer conversation. If the outer conversation ends "
+"before a nested conversation ends, Seam destroys all nested conversation "
+"contexts along with the outer context."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:137
+#, no-c-format
+msgid ""
+"A conversation may be thought of as a <emphasis>continuable state</"
+"emphasis>. Nested conversations allow the application to capture a "
+"consistent continuable state at various points in a user interaction, thus "
+"insuring truly correct behavior in the face of backbuttoning and workspace "
+"management."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:140
+#, no-c-format
+msgid ""
+"TODO: an example to show how a nested conversation prevents bad stuff "
+"happening when you backbutton."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:143
+#, no-c-format
+msgid ""
+"Usually, if a component exists in a parent conversation of the current "
+"nested conversation, the nested conversation will use the same instance. "
+"Occasionally, it is useful to have a different instance in each nested "
+"conversation, so that the component instance that exists in the parent "
+"conversation is invisible to its child conversations. You can achieve this "
+"behavior by annotating the component <literal>@PerNestedConversation</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:149
+#, no-c-format
+msgid "Starting conversations with GET requests"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:150
+#, no-c-format
+msgid ""
+"JSF does not define any kind of action listener that is triggered when a "
+"page is accessed via a non-faces request (for example, a HTTP GET request). "
+"This can occur if the user bookmarks the page, or if we navigate to the page "
+"via an <literal>&lt;h:outputLink&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:153
+#, no-c-format
+msgid ""
+"Sometimes we want to begin a conversation immediately the page is accessed. "
+"Since there is no JSF action method, we can't solve the problem in the usual "
+"way, by annotating the action with <literal>@Begin</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:156
+#, no-c-format
+msgid ""
+"A further problem arises if the page needs some state to be fetched into a "
+"context variable. We've already seen two ways to solve this problem. If that "
+"state is held in a Seam component, we can fetch the state in a "
+"<literal>@Create</literal> method. If not, we can define a "
+"<literal>@Factory</literal> method for the context variable."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:159
+#, no-c-format
+msgid ""
+"If none of these options works for you, Seam lets you define a "
+"<emphasis>page action</emphasis> in the <literal>pages.xml</literal> file."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:162
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\" action=\"#{messageManager.list}\"/"
+"&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:163
+#, no-c-format
+msgid ""
+"This action method is called at the beginning of the render response phase, "
+"any time the page is about to be rendered. If a page action returns a non-"
+"null outcome, Seam will process any appropriate JSF and Seam navigation "
+"rules, possibly resulting in a completely different page being rendered."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:166
+#, no-c-format
+msgid ""
+"If <emphasis>all</emphasis> you want to do before rendering the page is "
+"begin a conversation, you could use a built-in action method that does just "
+"that:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:169
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\" action=\"#{conversation.begin}\"/"
+"&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:170
+#, no-c-format
+msgid ""
+"Note that you can also call this built-in action from a JSF control, and, "
+"similarly, you can use <literal>#{conversation.end}</literal> to end "
+"conversations."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:173
+#, no-c-format
+msgid ""
+"If you want more control, to join existing conversations or begin a nested "
+"conversion, to begin a pageflow or an atomic conversation, you should use "
+"the <literal>&lt;begin-conversation&gt;</literal> element."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:176
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\"&gt;\n"
+"       &lt;begin-conversation nested=\"true\" pageflow=\"AddItem\"/&gt;\n"
+"    &lt;page&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:177
+#, no-c-format
+msgid "There is also an <literal>&lt;end-conversation&gt;</literal> element."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:180
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/home.jsp\"&gt;\n"
+"       &lt;end-conversation/&gt;\n"
+"    &lt;page&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:181
+#, no-c-format
+msgid "To solve the first problem, we now have five options:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:186
+#, no-c-format
+msgid ""
+"Annotate the <literal>@Create</literal> method with <literal>@Begin</literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:191
+#, no-c-format
+msgid ""
+"Annotate the <literal>@Factory</literal> method with <literal>@Begin</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:196
+#, no-c-format
+msgid "Annotate the Seam page action method with <literal>@Begin</literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:201
+#, no-c-format
+msgid ""
+"Use <literal>&lt;begin-conversation&gt;</literal> in <literal>pages.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:206
+#, no-c-format
+msgid ""
+"Use <literal>#{conversation.begin}</literal> as the Seam page action method"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:214
+#, no-c-format
+msgid ""
+"Using <literal>&lt;s:link&gt;</literal> and <literal>&lt;s:button&gt;</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:215
+#, no-c-format
+msgid ""
+"JSF command links always perform a form submission via JavaScript, which "
+"breaks the web browser's \"open in new window\" or \"open in new tab\" "
+"feature. In plain JSF, you need to use an <literal>&lt;h:outputLink&gt;</"
+"literal> if you need this functionality. But there are two major limitations "
+"to <literal>&lt;h:outputLink&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:220
+#, no-c-format
+msgid ""
+"JSF provides no way to attach an action listener to an <literal>&lt;h:"
+"outputLink&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:225
+#, no-c-format
+msgid ""
+"JSF does not propagate the selected row of a <literal>DataModel</literal> "
+"since there is no actual form submission."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:230
+#, no-c-format
+msgid ""
+"Seam provides the notion of a <emphasis>page action</emphasis> to help solve "
+"the first problem, but this does nothing to help us with the second problem. "
+"We <emphasis>could</emphasis> work around this by using the RESTful approach "
+"of passing a request parameter and requerying for the selected object on the "
+"server side. In some cases&mdash;such as the Seam blog example "
+"application&mdash;this is indeed the best approach. The RESTful style "
+"supports bookmarking, since it does not require server-side state. In other "
+"cases, where we don't care about bookmarks, the use of <literal>@DataModel</"
+"literal> and <literal>@DataModelSelection</literal> is just so convenient "
+"and transparent!"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:233
+#, no-c-format
+msgid ""
+"To fill in this missing functionality, and to make conversation propagation "
+"even simpler to manage, Seam provides the <literal>&lt;s:link&gt;</literal> "
+"JSF tag."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:236
+#, no-c-format
+msgid "The link may specify just the JSF view id:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:239
+#, no-c-format
+msgid ""
+"&lt;s:link view=&#8220;/login.xhtml&#8221; value=&#8220;Login&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:240
+#, no-c-format
+msgid ""
+"Or, it may specify an action method (in which case the action outcome "
+"determines the page that results):"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:243
+#, no-c-format
+msgid ""
+"&lt;s:link action=&#8220;#{login.logout}&#8221; value=&#8220;Logout&#8221;/"
+"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:244
+#, no-c-format
+msgid ""
+"If you specify <emphasis>both</emphasis> a JSF view id and an action method, "
+"the 'view' will be used <emphasis>unless</emphasis> the action method "
+"returns a non-null outcome:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:247
+#, no-c-format
+msgid ""
+"&lt;s:link view=\"/loggedOut.xhtml\"  action=&#8220;#{login.logout}&#8221; "
+"value=&#8220;Logout&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:248
+#, no-c-format
+msgid ""
+"The link automatically propagates the selected row of a <literal>DataModel</"
+"literal> using inside <literal>&lt;h:dataTable&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:251
+#, no-c-format
+msgid ""
+"&lt;s:link view=&#8220;/hotel.xhtml&#8221; action=&#8220;#{hotelSearch."
+"selectHotel}&#8221; value=&#8220;#{hotel.name}&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:252
+#, no-c-format
+msgid "You can leave the scope of an existing conversation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:255
+#, no-c-format
+msgid ""
+"&lt;s:link view=&#8220;/main.xhtml&#8221; propagation=&#8220;none&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:256
+#, no-c-format
+msgid "You can begin, end, or nest conversations:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:259
+#, no-c-format
+msgid ""
+"&lt;s:link action=&#8220;#{issueEditor.viewComment}&#8221; "
+"propagation=&#8220;nest&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:260
+#, no-c-format
+msgid ""
+"If the link begins a conversation, you can even specify a pageflow to be "
+"used:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:263
+#, no-c-format
+msgid ""
+"&lt;s:link action=&#8220;#{documentEditor.getDocument}&#8221; "
+"propagation=&#8220;begin&#8221; \n"
+"        pageflow=&#8220;EditDocument&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:264
+#, no-c-format
+msgid ""
+"The <literal>taskInstance</literal> attribute if for use in jBPM task lists:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:267
+#, no-c-format
+msgid ""
+"&lt;s:link action=&#8220;#{documentApproval.approveOrReject}&#8221; "
+"taskInstance=&#8220;#{task}&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:268
+#, no-c-format
+msgid "(See the DVD Store demo application for examples of this.)"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:271
+#, no-c-format
+msgid ""
+"Finally, if you need the \"link\" to be rendered as a button, use "
+"<literal>&lt;s:button&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:274
+#, no-c-format
+msgid ""
+"&lt;s:button action=&#8220;#{login.logout}&#8221; value=&#8220;Logout&#8221;/"
+"&gt;"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:278
+#, no-c-format
+msgid "Success messages"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:279
+#, no-c-format
+msgid ""
+"It is quite common to display a message to the user indicating success or "
+"failure of an action. It is convenient to use a JSF <literal>FacesMessage</"
+"literal> for this. Unfortunately, a successful action often requires a "
+"browser redirect, and JSF does not propagate faces messages across "
+"redirects. This makes it quite difficult to display success messages in "
+"plain JSF."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:282
+#, no-c-format
+msgid ""
+"The built in conversation-scoped Seam component named "
+"<literal>facesMessages</literal> solves this problem. (You must have the "
+"Seam redirect filter installed.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:285
+#, no-c-format
+msgid ""
+"@Name(\"editDocumentAction\")\n"
+"@Stateless\n"
+"public class EditDocumentBean implements EditDocument {\n"
+"    @In EntityManager em;\n"
+"    @In Document document;\n"
+"    @In FacesMessages facesMessages;\n"
+"    \n"
+"    public String update() {\n"
+"        em.merge(document);\n"
+"        facesMessages.add(\"Document updated\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:286
+#, no-c-format
+msgid ""
+"Any message added to <literal>facesMessages</literal> is used in the very "
+"next render response phase for the current conversation. This even works "
+"when there is no long-running conversation since Seam preserves even "
+"temporary conversation contexts across redirects."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:289
+#, no-c-format
+msgid "You can even include JSF EL expressions in a faces message summary:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:292
+#, no-c-format
+msgid "facesMessages.add(\"Document #{document.title} was updated\");"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:293
+#, no-c-format
+msgid "You may display the messages in the usual way, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:296
+#, no-c-format
+msgid "&lt;h:messages globalOnly=\"true\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:300
+#, no-c-format
+msgid "Using an \"explicit\" conversation id"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:301
+#, no-c-format
+msgid ""
+"Ordinarily, Seam generates a meaningless unique id for each conversation in "
+"each session. You can customize the id value when you begin the conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:304
+#, no-c-format
+msgid ""
+"This feature can be used to customize the conversation id generation "
+"algorithm like so:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:307
+#, no-c-format
+msgid ""
+"@Begin(id=\"#{myConversationIdGenerator.nextId}\") \n"
+"public void editHotel() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:308
+#, no-c-format
+msgid "Or it can be used to assign a meaningful conversation id:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:311
+#, no-c-format
+msgid ""
+"@Begin(id=\"hotel#{hotel.id}\") \n"
+"public String editHotel() { ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:312
+#, no-c-format
+msgid ""
+"@Begin(id=\"hotel#{hotelsDataModel.rowData.id}\") \n"
+"public String selectHotel() { ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:313
+#, no-c-format
+msgid ""
+"@Begin(id=\"entry#{params['blogId']}\")\n"
+"public String viewBlogEntry() { ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:314
+#, no-c-format
+msgid ""
+"@BeginTask(id=\"task#{taskInstance.id}\") \n"
+"public String approveDocument() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:315
+#, no-c-format
+msgid ""
+"Clearly, these example result in the same conversation id every time a "
+"particular hotel, blog or task is selected. So what happens if a "
+"conversation with the same conversation id already exists when the new "
+"conversation begins? Well, Seam detects the existing conversation and "
+"redirects to that conversation without running the <literal>@Begin</literal> "
+"method again. This feature helps control the number of workspaces that are "
+"created when using workspace management."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:321
+#, no-c-format
+msgid "Workspace management"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:322
+#, no-c-format
+msgid ""
+"Workspace management is the ability to \"switch\" conversations in a single "
+"window. Seam makes workspace management completely transparent at the level "
+"of the Java code. To enable workspace management, all you need to do is:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:327
+#, no-c-format
+msgid ""
+"Provide <emphasis>description</emphasis> text for each view id (when using "
+"JSF or Seam navigation rules) or page node (when using jPDL pageflows). This "
+"description text is displayed to the user by the workspace switchers."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:332
+#, no-c-format
+msgid ""
+"Include one or more of the standard workspace switcher JSP or facelets "
+"fragments in your pages. The standard fragments support workspace management "
+"via a drop down menu, a list of conversations, or breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:335
+#, no-c-format
+msgid ""
+"Please refer to the Seam Issue Tracker demo to see all this functionality in "
+"action!"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:339
+#, no-c-format
+msgid "Workspace management and JSF navigation"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:340
+#, no-c-format
+msgid ""
+"When you use JSF or Seam navigation rules, Seam switches to a conversation "
+"by restoring the current <literal>view-id</literal> for that conversation. "
+"The descriptive text for the workspace is defined in a file called "
+"<literal>pages.xml</literal> that Seam expects to find in the <literal>WEB-"
+"INF</literal> directory, right next to <literal>faces-config.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:343
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/main.xhtml\"&gt;Search hotels: #{hotelBooking."
+"searchString}&lt;/page&gt;\n"
+"    &lt;page view-id=\"/hotel.xhtml\"&gt;View hotel: #{hotel.name}&lt;/"
+"page&gt;\n"
+"    &lt;page view-id=\"/book.xhtml\"&gt;Book hotel: #{hotel.name}&lt;/"
+"page&gt;\n"
+"    &lt;page view-id=\"/confirm.xhtml\"&gt;Confirm: #{booking.description}"
+"&lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:344
+#, no-c-format
+msgid ""
+"Note that if this file is missing, the Seam application will continue to "
+"work perfectly! The only missing functionality will be the ability to switch "
+"workspaces."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:350
+#, no-c-format
+msgid "Workspace management and jPDL pageflow"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:351
+#, no-c-format
+msgid ""
+"When you use a jPDL pageflow definition, Seam switches to a conversation by "
+"restoring the current jBPM process state. This is a more flexible model "
+"since it allows the same <literal>view-id</literal> to have different "
+"descriptions depending upon the current <literal>&lt;page&gt;</literal> "
+"node. The description text is defined by the <literal>&lt;page&gt;</literal> "
+"node:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:354
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"shopping\"&gt;\n"
+"\n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"browse\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;page name=\"browse\" view-id=\"/browse.xhtml\"&gt;\n"
+"      &lt;description&gt;DVD Search: #{search.searchPattern}&lt;/"
+"description&gt;\n"
+"      &lt;transition to=\"browse\"/&gt;\n"
+"      &lt;transition name=\"checkout\" to=\"checkout\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"checkout\" view-id=\"/checkout.xhtml\"&gt;\n"
+"      &lt;description&gt;Purchase: &#36;#{cart.total}&lt;/description&gt;\n"
+"      &lt;transition to=\"checkout\"/&gt;\n"
+"      &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"complete\" view-id=\"/complete.xhtml\"&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:358
+#, no-c-format
+msgid "The conversation switcher"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:359
+#, no-c-format
+msgid ""
+"Include the following fragment in your JSP or facelets page to get a drop-"
+"down menu that lets you switch to any current conversation, or to any other "
+"page of the application:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:362
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{switcher.conversationIdOrOutcome}\"&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Find Issues\" itemValue=\"findIssue\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Create Issue\" itemValue=\"editIssue\"/"
+"&gt;\n"
+"    &lt;f:selectItems value=\"#{switcher.selectItems}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{switcher.select}\" value=\"Switch\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:363
+#, no-c-format
+msgid ""
+"In this example, we have a menu that includes an item for each conversation, "
+"together with two additional items that let the user begin a new "
+"conversation."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:377
+#, no-c-format
+msgid "The conversation list"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:378
+#, no-c-format
+msgid ""
+"The conversation list is very similar to the conversation switcher, except "
+"that it is displayed as a table:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:381
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{conversationList}\" var=\"entry\"\n"
+"        rendered=\"#{not empty conversationList}\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Workspace&lt;/f:facet&gt;\n"
+"        &lt;h:commandLink action=\"#{entry.select}\" value=\"#{entry."
+"description}\"/&gt;\n"
+"        &lt;h:outputText value=\"[current]\" rendered=\"#{entry.current}\"/"
+"&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Activity&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{entry.startDatetime}\"&gt;\n"
+"            &lt;f:convertDateTime type=\"time\" pattern=\"hh:mm a\"/&gt;\n"
+"        &lt;/h:outputText&gt;\n"
+"        &lt;h:outputText value=\" - \"/&gt;\n"
+"        &lt;h:outputText value=\"#{entry.lastDatetime}\"&gt;\n"
+"            &lt;f:convertDateTime type=\"time\" pattern=\"hh:mm a\"/&gt;\n"
+"        &lt;/h:outputText&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"        &lt;h:commandButton action=\"#{entry.select}\" value=\"#{msg.Switch}"
+"\"/&gt;\n"
+"        &lt;h:commandButton action=\"#{entry.destroy}\" value=\"#{msg."
+"Destroy}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:382
+#, no-c-format
+msgid ""
+"We imagine that you will want to customize this for your own application."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:393
+#, no-c-format
+msgid ""
+"The conversation list is nice, but it takes up a lot of space on the page, "
+"so you probably don't want to put it on <emphasis>every</emphasis> page."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:396
+#, no-c-format
+msgid "Notice that the conversation list lets the user destroy workspaces."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:402
+#, no-c-format
+msgid "Breadcrumbs"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:403
+#, no-c-format
+msgid ""
+"Breadcrumbs are useful in applications which use a nested conversation "
+"model. The breadcrumbs are a list of links to conversations in the current "
+"conversation stack:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:406
+#, no-c-format
+msgid ""
+"&lt;t:dataList value=\"#{conversationStack}\" var=\"entry\"&gt;\n"
+"    &lt;h:outputText value=\" | \"/&gt; \n"
+"    &lt;h:commandLink value=\"#{entry.description}\" action=\"#{entry.select}"
+"\"/&gt;\n"
+"&lt;/t:dataList&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:407
+#, no-c-format
+msgid ""
+"Notice that here we are using the MyFaces <literal>&lt;t:dataList&gt;</"
+"literal> component, since JSF amazingly does not provide any standard "
+"component for looping."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:424
+#, no-c-format
+msgid "Conversational components and JSF component bindings"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:425
+#, no-c-format
+msgid ""
+"Conversational components have one minor limitation: they cannot be used to "
+"hold bindings to JSF components. (We generally prefer not to use this "
+"feature of JSF unless absolutely necessary, since it creates a hard "
+"dependency from application logic to the view.) On a postback request, "
+"component bindings are updated during the Restore View phase, before the "
+"Seam conversation context has been restored."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:428
+#, no-c-format
+msgid ""
+"To work around this use an event scoped component to store the component "
+"bindings and inject it into the conversation scoped component that requires "
+"it."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:431
+#, no-c-format
+msgid ""
+"@Name(\"grid\")\n"
+"@Scope(ScopeType.EVENT)\n"
+"public class Grid\n"
+"{\n"
+"    private HtmlPanelGrid htmlPanelGrid;\n"
+"\n"
+"    // getters and setters\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:432
+#, no-c-format
+msgid ""
+"@Name(\"gridEditor\")\n"
+"@Scope(ScopeType.CONVERSATION)\n"
+"public class GridEditor\n"
+"{\n"
+"    @In(required=false)\n"
+"    private Grid grid;\n"
+"    \n"
+"    ...\n"
+"}"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Drools.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Drools.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Drools.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,281 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Drools.xml:10
+#, no-c-format
+msgid "Seam and JBoss Rules"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:11
+#, no-c-format
+msgid ""
+"Seam makes it easy to call JBoss Rules (Drools) rulebases from Seam "
+"components or jBPM process definitions."
+msgstr ""
+
+#. Tag: title
+#: Drools.xml:15
+#, no-c-format
+msgid "Installing rules"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:16
+#, no-c-format
+msgid ""
+"The first step is to make an instance of <literal>org.drools.RuleBase</"
+"literal> available in a Seam context variable. In most rules-driven "
+"applications, rules need to be dynamically deployable, so you will need to "
+"implement some solution that allows you to deploy rules and make them "
+"available to Seam (a future release of Drools will provide a Rule Server "
+"that solves this problem). For testing purposes, Seam provides a built-in "
+"component that compiles a static set of rules from the classpath. You can "
+"install this component via <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:19
+#, no-c-format
+msgid ""
+"&lt;drools:rule-base name=\"policyPricingRules\"&gt;\n"
+"    &lt;drools:rule-files&gt;\n"
+"        &lt;value&gt;policyPricingRules&lt;/value&gt;\n"
+"    &lt;/drools:rule-files&gt;\n"
+"&lt;/drools:rule-base&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:20
+#, no-c-format
+msgid ""
+"This component compiles rules from a set of <literal>.drl</literal> files "
+"and caches an instance of <literal>org.drools.RuleBase</literal> in the Seam "
+"<literal>APPLICATION</literal> context. Note that it is quite likely that "
+"you will need to install multiple rule bases in a rule-driven application."
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:23
+#, no-c-format
+msgid ""
+"If you want to use a Drools DSL, you alse need to specify the DSL definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:26
+#, no-c-format
+msgid ""
+"&lt;drools:rule-base name=\"policyPricingRules\" dsl-file=\"policyPricing.dsl"
+"\"&gt;\n"
+"    &lt;drools:rule-files&gt;\n"
+"        &lt;value&gt;policyPricingRules&lt;/value&gt;\n"
+"    &lt;/drools:rule-files&gt;\n"
+"&lt;/drools:rule-base&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:27
+#, no-c-format
+msgid ""
+"Next, we need to make an instance of <literal>org.drools.WorkingMemory</"
+"literal> available to each conversation. (Each <literal>WorkingMemory</"
+"literal> accumulates facts relating to the current conversation.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:30
+#, no-c-format
+msgid ""
+"&lt;drools:managed-working-memory name=\"policyPricingWorkingMemory\" auto-"
+"create=\"true\" rule-base=\"#{policyPricingRules}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:31
+#, no-c-format
+msgid ""
+"Notice that we gave the <literal>policyPricingWorkingMemory</literal> a "
+"reference back to our rule base via the <literal>ruleBase</literal> "
+"configuration property."
+msgstr ""
+
+#. Tag: title
+#: Drools.xml:37
+#, no-c-format
+msgid "Using rules from a Seam component"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:38
+#, no-c-format
+msgid ""
+"We can now inject our <literal>WorkingMemory</literal> into any Seam "
+"component, assert facts, and fire rules:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:41
+#, no-c-format
+msgid ""
+"@In WorkingMemory policyPricingWorkingMemory;\n"
+"\n"
+"@In Policy policy;\n"
+"@In Customer customer;\n"
+"\n"
+"public void pricePolicy() throws FactException\n"
+"{\n"
+"    policyPricingWorkingMemory.assertObject(policy);\n"
+"    policyPricingWorkingMemory.assertObject(customer);\n"
+"    policyPricingWorkingMemory.fireAllRules();\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Drools.xml:45
+#, no-c-format
+msgid "Using rules from a jBPM process definition"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:46
+#, no-c-format
+msgid ""
+"You can even allow a rule base to act as a jBPM action handler, decision "
+"handler, or assignment handler&mdash;in either a pageflow or business "
+"process definition."
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:49
+#, no-c-format
+msgid ""
+"&lt;decision name=\"approval\"&gt;\n"
+"         \n"
+"    &lt;handler class=\"org.jboss.seam.drools.DroolsDecisionHandler\"&gt;\n"
+"        &lt;workingMemoryName&gt;orderApprovalRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"        &lt;assertObjects&gt;\n"
+"            &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"            &lt;element&gt;#{order}&lt;/element&gt;\n"
+"            &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"        &lt;/assertObjects&gt;\n"
+"    &lt;/handler&gt;\n"
+"    \n"
+"    &lt;transition name=\"approved\" to=\"ship\"&gt;\n"
+"        &lt;action class=\"org.jboss.seam.drools.DroolsActionHandler\"&gt;\n"
+"            &lt;workingMemoryName&gt;shippingRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"            &lt;assertObjects&gt;\n"
+"                &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"            &lt;/assertObjects&gt;\n"
+"        &lt;/action&gt;\n"
+"    &lt;/transition&gt;\n"
+"    \n"
+"    &lt;transition name=\"rejected\" to=\"cancelled\"/&gt;\n"
+"    \n"
+"&lt;/decision&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:50
+#, no-c-format
+msgid ""
+"The <literal>&lt;assertObjects&gt;</literal> element specifies EL "
+"expressions that return an object or collection of objects to be asserted as "
+"facts into the <literal>WorkingMemory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:53
+#, no-c-format
+msgid "There is also support for using Drools for jBPM task assignments:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:56
+#, no-c-format
+msgid ""
+"&lt;task-node name=\"review\"&gt;\n"
+"    &lt;task name=\"review\" description=\"Review Order\"&gt;\n"
+"        &lt;assignment handler=\"org.jboss.seam.drools."
+"DroolsAssignmentHandler\"&gt;\n"
+"            &lt;workingMemoryName&gt;orderApprovalRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"            &lt;assertObjects&gt;\n"
+"                &lt;element&gt;#{actor}&lt;/element&gt;\n"
+"                &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"            &lt;/assertObjects&gt;\n"
+"        &lt;/assignment&gt;\n"
+"    &lt;/task&gt;\n"
+"    &lt;transition name=\"rejected\" to=\"cancelled\"/&gt;\n"
+"    &lt;transition name=\"approved\" to=\"approved\"/&gt;\n"
+"&lt;/task-node&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:57
+#, no-c-format
+msgid ""
+"Certain objects are available to the rules as Drools globals, namely the "
+"jBPM <literal>Assignable</literal>, as <literal>assignable</literal> and a "
+"Seam <literal>Decision</literal> object, as <literal>decision</literal>. "
+"Rules which handle decisions should call <literal>decision.setOutcome"
+"(\"result\")</literal> to determine the result of the decision. Rules which "
+"perform assignments should set the actor id using the <literal>Assignable</"
+"literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:60
+#, no-c-format
+msgid ""
+"package org.jboss.seam.examples.shop\n"
+"\n"
+"import org.jboss.seam.drools.Decision\n"
+"\n"
+"global Decision decision\n"
+"\n"
+"rule \"Approve Order For Loyal Customer\"\n"
+"  when\n"
+"    Customer( loyaltyStatus == \"GOLD\" )\n"
+"    Order( totalAmount &lt;= 10000 )\n"
+"  then\n"
+"    decision.setOutcome(\"approved\");\n"
+"end"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:61
+#, no-c-format
+msgid ""
+"package org.jboss.seam.examples.shop\n"
+"\n"
+"import org.jbpm.taskmgmt.exe.Assignable\n"
+"\n"
+"global Assignable assignable\n"
+"\n"
+"rule \"Assign Review For Small Order\"\n"
+"  when\n"
+"    Order( totalAmount &lt;= 100 )\n"
+"  then\n"
+"    assignable.setPooledActors( new String[] {\"reviewers\"} );\n"
+"end"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Elenhancements.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Elenhancements.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Elenhancements.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,221 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Elenhancements.xml:10
+#, no-c-format
+msgid "Expression language enhancements"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:11
+#, no-c-format
+msgid ""
+"The standard Unified Expression Language (EL) assumes that any parameters to "
+"a method expression will be provided by Java code. This means that a method "
+"with parameters cannot be used as a JSF method binding. Seam provides an "
+"enhancement to the EL that allows parameters to be included in a method "
+"expression itself. This applies to <emphasis>any</emphasis> Seam method "
+"expression, including any JSF method binding, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:14
+#, no-c-format
+msgid ""
+"&lt;s:commandButton action=\"#{hotelBooking.bookHotel(hotel)}\" value=\"Book "
+"Hotel\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:16
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:17
+#, no-c-format
+msgid ""
+"To use this feature in Facelets, you will need to declare a special view "
+"handler, <literal>SeamFaceletViewHandler</literal> in <literal>faces-config."
+"xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:20
+#, no-c-format
+msgid ""
+"&lt;faces-config&gt;\n"
+"    &lt;application&gt;\n"
+"        &lt;view-handler&gt;org.jboss.seam.ui.facelet."
+"SeamFaceletViewHandler&lt;/view-handler&gt;\n"
+"    &lt;/application&gt;\n"
+"&lt;/faces-config&gt;"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:24
+#, no-c-format
+msgid "Usage"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:25
+#, no-c-format
+msgid "Parameters are surrounded by parentheses, and separated by commas:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:28
+#, no-c-format
+msgid ""
+"&lt;h:commandButton action=\"#{hotelBooking.bookHotel(hotel, user)}\" value="
+"\"Book Hotel\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:29
+#, no-c-format
+msgid ""
+"The parameters <literal>hotel</literal> and <literal>user</literal> will be "
+"evaluated as value expressions and passed to the <literal>bookHotel()</"
+"literal> method of the component. This gives you an alternative to the use "
+"of <literal>@In</literal>."
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:32
+#, no-c-format
+msgid "Any value expression may be used as a parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:35
+#, no-c-format
+msgid ""
+"&lt;h:commandButton action=\"#{hotelBooking.bookHotel(hotel.id, user."
+"username)}\" value=\"Book Hotel\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:36
+#, no-c-format
+msgid "You may even pass literal strings using single or double quotes:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:39
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=&#8221;#{printer.println( &#8216;Hello world!"
+"&#8217; )}&#8221; value=&#8221;Hello&#8221;/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:40
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=&#8217;#{printer.println( &#8220;Hello "
+"again&#8221; )}&#8217; value=&#8217;Hello&#8217;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:41
+#, no-c-format
+msgid ""
+"You might even want to use this notation for all your action methods, even "
+"when you don&#8217;t have parameters to pass. This improves readability by "
+"making it clear that the expression is a method expression and not a value "
+"expression:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:44
+#, no-c-format
+msgid "&lt;s:link value=\"Cancel\" action=\"#{hotelBooking.cancel()}\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:48
+#, no-c-format
+msgid "Limitations"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:49
+#, no-c-format
+msgid "Please be aware of the following limitations:"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:53
+#, no-c-format
+msgid "Incompatibility with JSP 2.1"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:54
+#, no-c-format
+msgid ""
+"This extension is not currently compatible with JSP 2.1. So if you want to "
+"use this extension with JSF 1.2, you will need to use Facelets. The "
+"extension works correctly with JSP 2.0."
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:60
+#, no-c-format
+msgid "Calling a <literal>MethodExpression</literal> from Java code"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:61
+#, no-c-format
+msgid ""
+"Normally, when a <literal>MethodExpression</literal> or "
+"<literal>MethodBinding</literal> is created, the parameter types are passed "
+"in by JSF. In the case of a method binding, JSF assumes that there are no "
+"parameters to pass. With this extension, we can&#8217;t know the parameter "
+"types until after the expression has been evaluated. This has two minor "
+"consequences:"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:66
+#, no-c-format
+msgid ""
+"When you invoke a <literal>MethodExpression</literal> in Java code, "
+"parameters you pass may be ignored. Parameters defined in the expression "
+"will take precedence."
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:71
+#, no-c-format
+msgid ""
+"Ordinarily, it is safe to call <literal>methodExpression.getMethodInfo()."
+"getParamTypes()</literal> at any time. For an expression with parameters, "
+"you must first invoke the <literal>MethodExpression</literal> before calling "
+"<literal>getParamTypes()</literal>."
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:76
+#, no-c-format
+msgid ""
+"Both of these cases are exceedingly rare and only apply when you want to "
+"invoke the <literal>MethodExpression</literal> by hand in Java code."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Events.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Events.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Events.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1430 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Events.xml:10
+#, no-c-format
+msgid "Events, interceptors and exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:11
+#, no-c-format
+msgid ""
+"Complementing the contextual component model, there are two further basic "
+"concepts that facilitate the extreme loose-coupling that is the distinctive "
+"feature of Seam applications. The first is a strong event model where events "
+"may be mapped to event listeners via JSF-like method binding expressions. "
+"The second is the pervasive use of annotations and interceptors to apply "
+"cross-cutting concerns to components which implement business logic."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:14
+#, no-c-format
+msgid "Seam events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:15
+#, no-c-format
+msgid ""
+"The Seam component model was developed for use with <emphasis>event-driven "
+"applications</emphasis>, specifically to enable the development of fine-"
+"grained, loosely-coupled components in a fine-grained eventing model. Events "
+"in Seam come in several types, most of which we have already seen:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:20
+#, no-c-format
+msgid "JSF events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:25
+#, no-c-format
+msgid "jBPM transition events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:30
+#, no-c-format
+msgid "Seam page actions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:35
+#, no-c-format
+msgid "Seam component-driven events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:40
+#, no-c-format
+msgid "Seam contextual events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:45
+#, no-c-format
+msgid ""
+"All of these various kinds of events are mapped to Seam components via JSF "
+"EL method binding expressions. For a JSF event, this is defined in the JSF "
+"template:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:48
+#, no-c-format
+msgid ""
+"&lt;h:commandButton value=\"Click me!\" action=\"#{helloWorld.sayHello}\"/"
+"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:49
+#, no-c-format
+msgid ""
+"For a jBPM transition event, it is specified in the jBPM process definition "
+"or pageflow definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:52
+#, no-c-format
+msgid ""
+"&lt;start-page name=\"hello\" view-id=\"/hello.jsp\"&gt;\n"
+"    &lt;transition to=\"hello\"&gt;\n"
+"        &lt;action expression=\"#{helloWorld.sayHello}\"/&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/start-page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:53
+#, no-c-format
+msgid ""
+"You can find out more information about JSF events and jBPM events "
+"elsewhere. Lets concentrate for now upon the two additional kinds of events "
+"defined by Seam."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:56
+#, no-c-format
+msgid "Page actions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:57
+#, no-c-format
+msgid ""
+"A Seam page action is an event that occurs just before we render a page. We "
+"declare page actions in <literal>WEB-INF/pages.xml</literal>. We can define "
+"a page action for either a particular JSF view id:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:60
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\" action=\"#{helloWorld.sayHello}\"/&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:61
+#, no-c-format
+msgid ""
+"Or we can use a wildcard to specify an action that applies to all view ids "
+"that match the pattern:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:64
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello/*\" action=\"#{helloWorld.sayHello}\"/&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:65
+#, no-c-format
+msgid ""
+"If multiple wildcarded page actions match the current view-id, Seam will "
+"call all the actions, in order of least-specific to most-specific."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:68
+#, no-c-format
+msgid ""
+"The page action method can return a JSF outcome. If the outcome is non-null, "
+"Seam will delegate to the defined JSFadn Seam navigation rules and a "
+"different view may end up being rendered."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:71
+#, no-c-format
+msgid ""
+"Furthermore, the view id mentioned in the <literal>&lt;page&gt;</literal> "
+"element need not correspond to a real JSP or Facelets page! So, we can "
+"reproduce the functionality of a traditional action-oriented framework like "
+"Struts or WebWork using page actions. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:74
+#, no-c-format
+msgid "TODO: translate struts action into page action"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:75
+#, no-c-format
+msgid ""
+"This is quite useful if you want to do complex things in response to non-"
+"faces requests (for example, HTTP GET requests)."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:78
+#, no-c-format
+msgid "Page parameters"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:79
+#, no-c-format
+msgid ""
+"A JSF faces request (a form submission) encapsulates both an \"action\" (a "
+"method binding) and \"parameters\" (input value bindings). A page action "
+"might also needs parameters!"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:82
+#, no-c-format
+msgid ""
+"Since GET requests are bookmarkable, page parameters are passed as human-"
+"readable request parameters. (Unlike JSF form inputs, which are anything "
+"but!)"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:85
+#, no-c-format
+msgid ""
+"Seam lets us provide a value binding that maps a named request parameter to "
+"an attribute of a model object."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:88
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\" action=\"#{helloWorld.sayHello}\"&gt;\n"
+"        &lt;param name=\"firstName\" value=\"#{person.firstName}\"/&gt;\n"
+"        &lt;param name=\"lastName\" value=\"#{person.lastName}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:89
+#, no-c-format
+msgid ""
+"The <literal>&lt;param&gt;</literal> declaration is bidirectional, just like "
+"a value binding for a JSF input:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:94
+#, no-c-format
+msgid ""
+"When a non-faces (GET) request for the view id occurs, Seam sets the value "
+"of the named request parameter onto the model object, after performing "
+"appropriate type conversions."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:99
+#, no-c-format
+msgid ""
+"Any <literal>&lt;s:link&gt;</literal> or <literal>&lt;s:button&gt;</literal> "
+"transparently includes the request parameter. The value of the parameter is "
+"determined by evaluating the value binding during the render phase (when the "
+"<literal>&lt;s:link&gt;</literal> is rendered)."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:104
+#, no-c-format
+msgid ""
+"Any navigation rule with a <literal>&lt;redirect/&gt;</literal> to the view "
+"id transparently includes the request parameter. The value of the parameter "
+"is determined by evaluating the value binding at the end of the invoke "
+"application phase."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:109
+#, no-c-format
+msgid ""
+"The value is transparently propagated with any JSF form submission for the "
+"page with the given view id. (This means that view parameters behave like "
+"<literal>PAGE</literal>-scoped context variables for faces requests."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:114
+#, no-c-format
+msgid ""
+"The essential idea behind all this is that <emphasis>however</emphasis> we "
+"get from any other page to <literal>/hello.jsp</literal> (or from <literal>/"
+"hello.jsp</literal> back to <literal>/hello.jsp</literal>), the value of the "
+"model attribute referred to in the value binding is \"remembered\", without "
+"the need for a conversation (or other server-side state)."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:117
+#, no-c-format
+msgid ""
+"This all sounds pretty complex, and you're probably wondering if such an "
+"exotic construct is really worth the effort. Actually, the idea is very "
+"natural once you \"get it\". It is definitely worth taking the time to "
+"understand this stuff. Page parameters are the most elegant way to propagate "
+"state across a non-faces request. They are especially cool for problems like "
+"search screens with bookmarkable results pages, where we would like to be "
+"able to write our application code to handle both POST and GET requests with "
+"the same code. Page parameters eliminate repetitive listing of request "
+"parameters in the view definition and make redirects much easier to code."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:120
+#, no-c-format
+msgid ""
+"Note that you don't need an actual page action method binding to use a page "
+"parameter. The following is perfectly valid:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:123
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\"&gt;\n"
+"        &lt;param name=\"firstName\" value=\"#{person.firstName}\"/&gt;\n"
+"        &lt;param name=\"lastName\" value=\"#{person.lastName}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:124
+#, no-c-format
+msgid "You can even specify a JSF converter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:127
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/calculator.jsp\" action=\"#{calculator.calculate}"
+"\"&gt;\n"
+"        &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"        &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"        &lt;param name=\"op\" converterId=\"com.my.calculator."
+"OperatorConverter\" value=\"#{calculator.op}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:128
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/calculator.jsp\" action=\"#{calculator.calculate}"
+"\"&gt;\n"
+"        &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"        &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"        &lt;param name=\"op\" converter=\"#{operatorConverter}\" value=\"#"
+"{calculator.op}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:129
+#, no-c-format
+msgid "Navigation"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:130
+#, no-c-format
+msgid ""
+"You can use standard JSF navigation rules defined in <literal>faces-config."
+"xml</literal> in a Seam application. However, JSF navigation rules have a "
+"number of annoying limitations:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:135
+#, no-c-format
+msgid ""
+"It is not possible to specify request parameters to be used when redirecting."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:140
+#, no-c-format
+msgid "It is not possible to begin or end conversations from a rule."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:145
+#, no-c-format
+msgid ""
+"Rules work by evaluating the return value of the action method; it is not "
+"possible to evaluate an arbitrary EL expression."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:150
+#, no-c-format
+msgid ""
+"A further problem is that \"orchestration\" logic gets scattered between "
+"<literal>pages.xml</literal> and <literal>faces-config.xml</literal>. It's "
+"better to unify this logic into <literal>pages.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:153
+#, no-c-format
+msgid "This JSF navigation rule:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:156
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"    &lt;from-view-id&gt;/editDocument.xhtml&lt;/from-view-id&gt;\n"
+"    \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-action&gt;#{documentEditor.update}&lt;/from-action&gt;\n"
+"        &lt;from-outcome&gt;success&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/viewDocument.xhtml&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"    \n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:157
+#, no-c-format
+msgid "Can be rewritten as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:160
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if-outcome=\"success\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:161
+#, no-c-format
+msgid ""
+"But it would be even nicer if we didn't have to pollute our "
+"<literal>DocumentEditor</literal> component with string-valued return values "
+"(the JSF outcomes). So Seam lets us write:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:164
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\" \n"
+"                   evaluate=\"#{documentEditor.errors.size}\"&gt;\n"
+"        &lt;rule if-outcome=\"0\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:165
+#, no-c-format
+msgid "Or even:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:168
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:169
+#, no-c-format
+msgid ""
+"The first form evaluates a value binding to determine the outcome value to "
+"be used by the subsequent rules. The second approach ignores the outcome and "
+"evaluates a value binding for each possible rule."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:172
+#, no-c-format
+msgid ""
+"Of course, when an update succeeds, we probably want to end the current "
+"conversation. We can do that like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:175
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:176
+#, no-c-format
+msgid ""
+"But ending the conversation loses any state associated with the "
+"conversation, including the document we are currently interested in! One "
+"solution would be to use an immediate render instead of a redirect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:179
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:180
+#, no-c-format
+msgid ""
+"But the correct solution is to pass the document id as a request parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:183
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"&gt;\n"
+"                &lt;param name=\"documentId\" value=\"#{documentEditor."
+"documentId}\"/&gt;\n"
+"            &lt;/redirect&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:184
+#, no-c-format
+msgid ""
+"Null outcomes are a special case in JSF. The null outcome is interpreted to "
+"mean \"redisplay the page\". The following navigation rule matches any non-"
+"null outcome, but <emphasis>not</emphasis> the null outcome:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:187
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule&gt;\n"
+"            &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:188
+#, no-c-format
+msgid ""
+"If you want to perform navigation when a null outcome occurs, use the "
+"following form instead:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:191
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:192
+#, no-c-format
+msgid ""
+"Fine-grained files for definition of navigation, page actions and parameters"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:193
+#, no-c-format
+msgid ""
+"If you have a lot of different page actions and page parameters, or even "
+"just a lot of navigation rules, you will almost certainly want to split the "
+"declarations up over multiple files. You can define actions and parameters "
+"for a page with the view id <literal>/calc/calculator.jsp</literal> in a "
+"resource named <literal>calc/calculator.page.xml</literal>. The root element "
+"in this case is the <literal>&lt;page&gt;</literal> element, and the view id "
+"is implied:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:196
+#, no-c-format
+msgid ""
+"&lt;page action=\"#{calculator.calculate}\"&gt;\n"
+"    &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"    &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"    &lt;param name=\"op\" converter=\"#{operatorConverter}\" value=\"#"
+"{calculator.op}\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:197
+#, no-c-format
+msgid "Component-driven events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:198
+#, no-c-format
+msgid ""
+"Seam components can interact by simply calling each others methods. Stateful "
+"components may even implement the observer/observable pattern. But to enable "
+"components to interact in a more loosely-coupled fashion than is possible "
+"when the components call each others methods directly, Seam provides "
+"<emphasis>component-driven events</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:201
+#, no-c-format
+msgid ""
+"We specify event listeners (observers) in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:204
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;event type=\"hello\"&gt;\n"
+"        &lt;action expression=\"#{helloListener.sayHelloBack}\"/&gt;\n"
+"        &lt;action expression=\"#{logger.logHello}\"/&gt;\n"
+"    &lt;/event&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:205
+#, no-c-format
+msgid "Where the <emphasis>event type</emphasis> is just an arbitrary string."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:208
+#, no-c-format
+msgid ""
+"When an event occurs, the actions registered for that event will be called "
+"in the order they appear in <literal>components.xml</literal>. How does a "
+"component raise an event? Seam provides a built-in component for this."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:211
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World!\");\n"
+"        Events.instance().raiseEvent(\"hello\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:212
+#, no-c-format
+msgid "Or you can use an annotation."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:215
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    @RaiseEvent(\"hello\")\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World!\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:216
+#, no-c-format
+msgid ""
+"Notice that this event producer has no dependency upon event consumers. The "
+"event listener may now be implemented with absolutely no dependency upon the "
+"producer:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:219
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    public void sayHelloBack() {\n"
+"        FacesMessages.instance().add(\"Hello to you too!\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:220
+#, no-c-format
+msgid ""
+"The method binding defined in <literal>components.xml</literal> above takes "
+"care of mapping the event to the consumer. If you don't like futzing about "
+"in the <literal>components.xml</literal> file, you can use an annotation "
+"instead:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:223
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    @Observer(\"hello\")\n"
+"    public void sayHelloBack() {\n"
+"        FacesMessages.instance().add(\"Hello to you too!\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:224
+#, no-c-format
+msgid ""
+"You might wonder why I've not mentioned anything about event objects in this "
+"discussion. In Seam, there is no need for an event object to propagate state "
+"between event producer and listener. State is held in the Seam contexts, and "
+"is shared between components. However, if you really want to pass an event "
+"object, you can:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:227
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    private String name;\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World, my name is #0.\", "
+"name);\n"
+"        Events.instance().raiseEvent(\"hello\", name);\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:228
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    @Observer(\"hello\")\n"
+"    public void sayHelloBack(String name) {\n"
+"        FacesMessages.instance().add(\"Hello #0!\", name);\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:229
+#, no-c-format
+msgid "Contextual events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:230
+#, no-c-format
+msgid ""
+"Seam defines a number of built-in events that the application can use to "
+"perform special kinds of framework integration. The events are:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:235
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preSetVariable.&lt;name&gt;</literal> &mdash; called "
+"when the context variable &lt;name&gt; is set"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:240
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postSetVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is set"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:245
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preRemoveVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is unset"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:250
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postRemoveVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is unset"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:255
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preDestroyContext.&lt;SCOPE&gt;</literal> &mdash; "
+"called before the &lt;SCOPE&gt; context is destroyed"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:260
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postDestroyContext.&lt;SCOPE&gt;</literal> &mdash; "
+"called after the &lt;SCOPE&gt; context is destroyed"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:265
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beginConversation </literal>&mdash; called whenever "
+"a long-running conversation begins"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:270
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endConversation </literal>&mdash; called whenever a "
+"long-running conversation ends"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:275
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beginPageflow.&lt;name&gt; </literal>&mdash; called "
+"when the pageflow &lt;name&gt; begins"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:280
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endPageflow.&lt;name&gt; </literal>&mdash; called "
+"when the pageflow &lt;name&gt; ends"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:285
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.createProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; is created"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:290
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; ends"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:295
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.initProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; is associated with the conversation"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:300
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.initTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is associated with the conversation"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:305
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.startTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is started"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:310
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is ended"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:315
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postCreate.&lt;name&gt; </literal>&mdash; called "
+"when the component &lt;name&gt; is created"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:320
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preDestroy.&lt;name&gt; </literal>&mdash; called "
+"when the component &lt;name&gt; is destroyed"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:325
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beforePhase </literal>&mdash; called before the "
+"start of a JSF phase"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:330
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.afterPhase </literal>&mdash; called after the end of "
+"a JSF phase"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:335
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postAuthenticate.&lt;name&gt; </literal>&mdash; "
+"called after a user is authenticated"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:340
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preAuthenticate.&lt;name&gt; </literal>&mdash; "
+"called before attempting to authenticate a user"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:345
+#, no-c-format
+msgid ""
+"Seam components may observe any of these events in just the same way they "
+"observe any other component-driven events."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:348
+#, no-c-format
+msgid "Seam interceptors"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:349
+#, no-c-format
+msgid ""
+"EJB 3.0 introduced a standard interceptor model for session bean components. "
+"To add an interceptor to a bean, you need to write a class with a method "
+"annotated <literal>@AroundInvoke</literal> and annotate the bean with an "
+"<literal>@Interceptors</literal> annotation that specifies the name of the "
+"interceptor class. For example, the following interceptor checks that the "
+"user is logged in before allowing invoking an action listener method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:352
+#, no-c-format
+msgid ""
+"public class LoggedInInterceptor {\n"
+"\n"
+"   @AroundInvoke\n"
+"   public Object checkLoggedIn(InvocationContext invocation) throws "
+"Exception {\n"
+"   \n"
+"      boolean isLoggedIn = Contexts.getSessionContext().get(\"loggedIn\")!"
+"=null;\n"
+"      if (isLoggedIn) {\n"
+"         //the user is already logged in\n"
+"         return invocation.proceed();\n"
+"      }\n"
+"      else {\n"
+"         //the user is not logged in, fwd to login page\n"
+"         return \"login\";\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:353
+#, no-c-format
+msgid ""
+"To apply this interceptor to a session bean which acts as an action "
+"listener, we must annotate the session bean <literal>@Interceptors"
+"(LoggedInInterceptor.class)</literal>. This is a somewhat ugly annotation. "
+"Seam builds upon the interceptor framework in EJB3 by allowing you to use "
+"<literal>@Interceptors</literal> as a meta-annotation. In our example, we "
+"would create an <literal>@LoggedIn</literal> annotation, as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:356
+#, no-c-format
+msgid ""
+"@Target(TYPE)\n"
+"@Retention(RUNTIME)\n"
+"@Interceptors(LoggedInInterceptor.class)\n"
+"public @interface LoggedIn {}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:357
+#, no-c-format
+msgid ""
+"We can now simply annotate our action listener bean with <literal>@LoggedIn</"
+"literal> to apply the interceptor."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:360
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"changePasswordAction\")\n"
+"@LoggedIn\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class ChangePasswordAction implements ChangePassword { \n"
+"    \n"
+"    ...\n"
+"    \n"
+"    public String changePassword() { ... }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:361
+#, no-c-format
+msgid ""
+"If interceptor ordering is important (it usually is), you can add "
+"<literal>@Interceptor</literal> annotations to your interceptor classes to "
+"specify a partial order of interceptors."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:364
+#, no-c-format
+msgid ""
+"@Interceptor(around={BijectionInterceptor.class,\n"
+"                     ValidationInterceptor.class,\n"
+"                     ConversationInterceptor.class},\n"
+"             within=RemoveInterceptor.class)\n"
+"public class LoggedInInterceptor\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:365
+#, no-c-format
+msgid ""
+"You can even have a \"client-side\" interceptor, that runs around any of the "
+"built-in functionality of EJB3:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:368
+#, no-c-format
+msgid ""
+"@Interceptor(type=CLIENT)\n"
+"public class LoggedInInterceptor\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:369
+#, no-c-format
+msgid ""
+"EJB interceptors are stateful, with a lifecycle that is the same as the "
+"component they intercept. For interceptors which do not need to maintain "
+"state, Seam lets you get a performance optimization by specifying "
+"<literal>@Interceptor(stateless=true)</literal>."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:372
+#, no-c-format
+msgid ""
+"Much of the functionality of Seam is implemented as a set of built-in Seam "
+"interceptors, including the interceptors named in the previous example. You "
+"don't have to explicitly specify these interceptors by annotating your "
+"components; they exist for all interceptable Seam components."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:375
+#, no-c-format
+msgid ""
+"You can even use Seam interceptors with JavaBean components, not just EJB3 "
+"beans!"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:378
+#, no-c-format
+msgid ""
+"EJB defines interception not only for business methods (using "
+"<literal>@AroundInvoke</literal>), but also for the lifecycle methods "
+"<literal>@PostConstruct</literal>, <literal>@PreDestroy</literal>, "
+"<literal>@PrePassivate</literal> and <literal>@PostActive</literal>. Seam "
+"supports all these lifecycle methods on both component and interceptor not "
+"only for EJB3 beans, but also for JavaBean components (except "
+"<literal>@PreDestroy</literal> which is not meaningful for JavaBean "
+"components)."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:381
+#, no-c-format
+msgid "Managing exceptions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:382
+#, no-c-format
+msgid ""
+"JSF is surprisingly limited when it comes to exception handling. As a "
+"partial workaround for this problem, Seam lets you define how a particular "
+"class of exception is to be treated by annotating the exception class, or "
+"declaring the exception class in an XML file. This facility is meant to be "
+"combined with the EJB 3.0-standard <literal>@ApplicationException</literal> "
+"annotation which specifies whether the exception should cause a transaction "
+"rollback."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:385
+#, no-c-format
+msgid "Exceptions and transactions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:386
+#, no-c-format
+msgid ""
+"EJB specifies well-defined rules that let us control whether an exception "
+"immediately marks the current transaction for rollback when it is thrown by "
+"a business method of the bean: <emphasis>system exceptions</emphasis> always "
+"cause a transaction rollback, <emphasis>application exceptions</emphasis> do "
+"not cause a rollback by default, but they do if "
+"<literal>@ApplicationException(rollback=true)</literal> is specified. (An "
+"application exception is any checked exception, or any unchecked exception "
+"annotated <literal>@ApplicationException</literal>. A system exception is "
+"any unchecked exception without an <literal>@ApplicationException</literal> "
+"annotation.)"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:389
+#, no-c-format
+msgid ""
+"Note that there is a difference between marking a transaction for rollback, "
+"and actually rolling it back. The exception rules say that the transaction "
+"should be marked rollback only, but it may still be active after the "
+"exception is thrown."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:392
+#, no-c-format
+msgid ""
+"Seam applies the EJB 3.0 exception rollback rules also to Seam JavaBean "
+"components."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:395
+#, no-c-format
+msgid ""
+"But these rules only apply in the Seam component layer. What about an "
+"exception that is uncaught and propagates out of the Seam component layer, "
+"and out of the JSF layer? Well, it is always wrong to leave a dangling "
+"transaction open, so Seam rolls back any active transaction when an "
+"exception occurs and is uncaught in the Seam component layer."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:398
+#, no-c-format
+msgid "Enabling Seam exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:399
+#, no-c-format
+msgid ""
+"To enable Seam's exception handling, we need to make sure we have the master "
+"servlet filter declared in <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:402
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.servlet.SeamFilter&lt;/filter-"
+"class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:403
+#, no-c-format
+msgid "Using annotations for exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:404
+#, no-c-format
+msgid ""
+"The following exception results in a HTTP 404 error whenever it propagates "
+"out of the Seam component layer. It does not roll back the current "
+"transaction immediately when thrown, but the transaction will be rolled back "
+"if it the exception is not caught by another Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:407
+#, no-c-format
+msgid ""
+"@HttpError(errorCode=404)\n"
+"public class ApplicationException extends Exception { ... }"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:408
+#, no-c-format
+msgid ""
+"This exception results in a browser redirect whenever it propagates out of "
+"the Seam component layer. It also ends the current conversation. It causes "
+"an immediate rollback of the current transaction."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:411
+#, no-c-format
+msgid ""
+"@Redirect(viewId=\"/failure.xhtml\", end=true)\n"
+"@ApplicationException(rollback=true)\n"
+"public class UnrecoverableApplicationException extends RuntimeException "
+"{ ... }"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:412
+#, no-c-format
+msgid ""
+"Note that <literal>@Redirect</literal> does not work for exceptions which "
+"occur during the render phase of the JSF lifecycle."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:415
+#, no-c-format
+msgid ""
+"This exception results in a redirect, along with a message to the user, when "
+"it propagates out of the Seam component layer. It also immediately rolls "
+"back the current transaction."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:418
+#, no-c-format
+msgid ""
+"@Redirect(viewId=\"/error.xhtml\", message=\"Unexpected error\")\n"
+"public class SystemException extends RuntimeException { ... }"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:419
+#, no-c-format
+msgid "Using XML for exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:420
+#, no-c-format
+msgid ""
+"Since we can't add annotations to all the exception classes we are "
+"interested in, Seam also lets us specify this functionality in "
+"<literal>pages.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:423
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   \n"
+"   &lt;exception class=\"javax.persistence.EntityNotFoundException\"&gt;\n"
+"      &lt;http-error error-code=\"404\"/&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"   &lt;exception class=\"javax.persistence.PersistenceException\"&gt;\n"
+"      &lt;end-conversation/&gt;\n"
+"      &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"          &lt;message&gt;Database access failed&lt;/message&gt;\n"
+"      &lt;/redirect&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"   &lt;exception&gt;\n"
+"      &lt;end-conversation/&gt;\n"
+"      &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"          &lt;message&gt;Unexpected failure&lt;/message&gt;\n"
+"      &lt;/redirect&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:424
+#, no-c-format
+msgid ""
+"The last <literal>&lt;exception&gt;</literal> declaration does not specify a "
+"class, and is a catch-all for any exception for which handling is not "
+"otherwise specified via annotations or in <literal>pages.xml</literal>."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Framework.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Framework.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Framework.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,828 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Framework.xml:10
+#, no-c-format
+msgid "The Seam Application Framework"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:11
+#, no-c-format
+msgid ""
+"Seam makes it really easy to create applications by writing plain Java "
+"classes with annotations, which don't need to extend any special interfaces "
+"or superclasses. But we can simplify some common programming tasks even "
+"further, by providing a set of pre-built components which can be re-used "
+"either by configuration in <literal>components.xml</literal> (for very "
+"simple cases) or extension."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:14
+#, no-c-format
+msgid ""
+"The <emphasis>Seam Application Framework</emphasis> can reduce the amount of "
+"code you need to write when doing basic database access in a web "
+"application, using either Hibernate or JPA."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:17
+#, no-c-format
+msgid ""
+"We should emphasize that the framework is extremely simple, just a handful "
+"of simple classes that are easy to understand and extend. The \"magic\" is "
+"in Seam itself&mdash;the same magic you use when creating any Seam "
+"application even without using this framework."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:21
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:22
+#, no-c-format
+msgid ""
+"The components provided by the Seam application framework may be used in one "
+"of two different approaches. The first way is to install and configure an "
+"instance of the component in <literal>components.xml</literal>, just like we "
+"have done with other kinds of built-in Seam components. For example, the "
+"following fragment from <literal>components.xml</literal> installs a "
+"component which can perform basic CRUD operations for a <literal>Contact</"
+"literal> entity:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:25
+#, no-c-format
+msgid ""
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" \n"
+"                       entity-manager=\"#{personDatabase}\"&gt;\n"
+"    &lt;framework:id&gt;#{param.personId}&lt;/framework:id&gt;\n"
+"&lt;/framework:entity-home&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:26
+#, no-c-format
+msgid ""
+"If that looks a bit too much like \"programming in XML\" for your taste, you "
+"can use extension instead:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:29
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; implements "
+"LocalPersonHome {\n"
+"    @RequestParameter String personId;\n"
+"    @In EntityManager personDatabase;\n"
+"    \n"
+"    public Object getId() { return personId; }\n"
+"    public EntityManager getEntityManager() { return personDatabase; }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:30
+#, no-c-format
+msgid ""
+"The second approach has one huge advantage: you can easily add extra "
+"functionality, and override the built-in functionality (the framework "
+"classes were carefully designed for extension and customization)."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:33
+#, no-c-format
+msgid ""
+"A second advantage is that your classes may be EJB stateful sessin beans, if "
+"you like. (They do not have to be, they can be plain JavaBean components if "
+"you prefer.)"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:36
+#, no-c-format
+msgid ""
+"At this time, the Seam Application Framework provides just four built-in "
+"components: <literal>EntityHome</literal> and <literal>HibernateEntityHome</"
+"literal> for CRUD, along with <literal>EntityQuery</literal> and "
+"<literal>HibernateEntityQuery</literal> for queries."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:39
+#, no-c-format
+msgid ""
+"The Home and Query components are written so that they can function with a "
+"scope of session, event or conversation. Which scope you use depends upon "
+"the state model you wish to use in your application."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:42
+#, no-c-format
+msgid ""
+"The Seam Application Framework only works with Seam-managed persistence "
+"contexts. By default, the components will look for a persistence context "
+"named <literal>entityManager</literal>."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:48
+#, no-c-format
+msgid "Home objects"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:49
+#, no-c-format
+msgid ""
+"A Home object provides persistence operations for a particular entity class. "
+"Suppose we have our trusty <literal>Person</literal> class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:52
+#, no-c-format
+msgid ""
+"@Entity\n"
+"public class Person {\n"
+"    @Id private Long id;\n"
+"    private String firstName;\n"
+"    private String lastName;\n"
+"    private Country nationality;\n"
+"    \n"
+"    //getters and setters...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:53
+#, no-c-format
+msgid ""
+"We can define a <literal>personHome</literal> component either via "
+"configuration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:56
+#, no-c-format
+msgid ""
+"&lt;framework:entity-home name=\"personHome\" entity-class=\"eg.Person\" /"
+"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:57
+#, no-c-format
+msgid "Or via extension:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:60
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:61
+#, no-c-format
+msgid ""
+"A Home object provides the following operations: <literal>persist()</"
+"literal>, <literal>remove()</literal>, <literal>update()</literal> and "
+"<literal>getInstance()</literal>. Before you can call the <literal>remove()</"
+"literal>, or <literal>update()</literal> operations, you must first set the "
+"identifier of the object you are interested in, using the <literal>setId()</"
+"literal> method."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:64
+#, no-c-format
+msgid "We can use a Home directly from a JSF page, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:67
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Create Person&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{personHome.instance."
+"firstName}\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{personHome.instance."
+"lastName}\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:68
+#, no-c-format
+msgid ""
+"Usually, it is much nicer to be able to refer to the <literal>Person</"
+"literal> merely as <literal>person</literal>, so let's make that possible by "
+"adding a line to <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:71
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:72
+#, no-c-format
+msgid ""
+"(If we are using configuration.) Or by adding a <literal>@Factory</literal> "
+"method to <literal>PersonHome</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:75
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:76
+#, no-c-format
+msgid ""
+"(If we are using extension.) This change simplifies our JSF page to the "
+"following:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:79
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Create Person&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{person.firstName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{person.lastName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:80
+#, no-c-format
+msgid ""
+"Well, that lets us create new <literal>Person</literal> entries. Yes, that "
+"is all the code that is required! Now, if we want to be able to display, "
+"update and delete pre-existing <literal>Person</literal> entries in the "
+"database, we need to be able to pass the entry identifier to the "
+"<literal>PersonHome</literal>. Page parameters are a great way to do that:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:83
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page viewid=\"/editPerson.jsp\"&gt;\n"
+"        &lt;param name=\"personId\" value=\"#{personHome.id}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:84
+#, no-c-format
+msgid "Now we can add the extra operations to our JSF page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:87
+#, no-c-format
+msgid ""
+"&lt;h1&gt;\n"
+"    &lt;h:outputText rendered=\"#{!personHome.managed}\" value=\"Create "
+"Person\"/&gt;\n"
+"    &lt;h:outputText rendered=\"#{personHome.managed}\" value=\"Edit Person"
+"\"/&gt;\n"
+"&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{person.firstName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{person.lastName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\" \n"
+"            rendered=\"#{!personHome.managed}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Update Person\" action=\"#{personHome."
+"update}\" \n"
+"            rendered=\"#{personHome.managed}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Delete Person\" action=\"#{personHome."
+"remove}\" \n"
+"            rendered=\"#{personHome.managed}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:88
+#, no-c-format
+msgid ""
+"When we link to the page with no request parameters, the page will be "
+"displayed as a \"Create Person\" page. When we provide a value for the "
+"<literal>personId</literal> request parameter, it will be an \"Edit Person\" "
+"page."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:91
+#, no-c-format
+msgid ""
+"Suppose we need to create <literal>Person</literal> entries with their "
+"nationality initialized. We can do that easily, via configuration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:94
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" \n"
+"                       new-instance=\"#{newPerson}\"/&gt;\n"
+"\n"
+"&lt;component name=\"newPerson\" \n"
+"           class=\"eg.Person\"&gt;\n"
+"    &lt;property name=\"nationality\"&gt;#{country}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:95
+#, no-c-format
+msgid "Or by extension:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:98
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:99
+#, no-c-format
+msgid ""
+"Of course, the <literal>Country</literal> could be an object managed by "
+"another Home object, for example, <literal>CountryHome</literal>."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:102
+#, no-c-format
+msgid ""
+"To add more sophisticated operations (association management, etc), we can "
+"just add methods to <literal>PersonHome</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:105
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"    public void migrate()\n"
+"    {\n"
+"        getInstance().setCountry(country);\n"
+"        update();\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:106
+#, no-c-format
+msgid ""
+"The Home object automatically displays faces messages when an operation is "
+"successful. To customize these messages we can, again, use configuration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:109
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\"\n"
+"                       entity-class=\"eg.Person\"\n"
+"                       new-instance=\"#{newPerson}\"&gt;\n"
+"    &lt;framework:created-message&gt;New person #{person.firstName} #{person."
+"lastName} \n"
+"        created&lt;/framework:created-message&gt;\n"
+"    &lt;framework:deleted-message&gt;Person #{person.firstName} #{person."
+"lastName}\n"
+"        deleted&lt;/framework:deleted-message&gt;\n"
+"    &lt;framework:updated-message&gt;Person #{person.firstName} #{person."
+"lastName} \n"
+"        updated&lt;/framework:updated-message&gt;\n"
+"&lt;/framework:entity-home&gt;\n"
+"\n"
+"&lt;component name=\"newPerson\" \n"
+"           class=\"eg.Person\"&gt;\n"
+"    &lt;property name=\"nationality\"&gt;#{country}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:110
+#, no-c-format
+msgid "Or extension:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:113
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"    protected String getCreatedMessage() { return \"New person #{person."
+"firstName} \n"
+"        #{person.lastName} created\"; }\n"
+"    protected String getUpdatedMessage() { return \"Person #{person."
+"firstName} \n"
+"        #{person.lastName} updated\"; }\n"
+"    protected String getDeletedMessage() { return \"Person #{person."
+"firstName} \n"
+"        #{person.lastName} deleted\"; }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:114
+#, no-c-format
+msgid ""
+"But the best way to specify the messages is to put them in a resource bundle "
+"known to Seam (the bundle named <literal>messages</literal>, by default)."
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:117
+#, no-c-format
+msgid ""
+"Person_created=New person #{person.firstName} #{person.lastName} created\n"
+"Person_deleted=Person #{person.firstName} #{person.lastName} deleted\n"
+"Person_updated=Person #{person.firstName} #{person.lastName} updated"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:118
+#, no-c-format
+msgid ""
+"This enables internationalization, and keeps your code and configuration "
+"clean of presentation concerns."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:121
+#, no-c-format
+msgid ""
+"The final step is to add validation functionality to the page, using "
+"<literal>&lt;s:validateAll&gt;</literal> and <literal>&lt;s:decorate&gt;</"
+"literal>, but I'll leave that for you to figure out."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:127
+#, no-c-format
+msgid "Query objects"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:128
+#, no-c-format
+msgid ""
+"If we need a list of all <literal>Person</literal> instance in the database, "
+"we can use a Query object. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:131
+#, no-c-format
+msgid ""
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:132
+#, no-c-format
+msgid "We can use it from a JSF page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:135
+#, no-c-format
+msgid ""
+"&lt;h1&gt;List of people&lt;/h1&gt;\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view-id=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:136
+#, no-c-format
+msgid "We probably need to support pagination:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:139
+#, no-c-format
+msgid ""
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\" \n"
+"                        order=\"lastName\" \n"
+"                        max-results=\"20\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:140
+#, no-c-format
+msgid "We'll use a page parameter to determine the page to display:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:143
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page viewid=\"/searchPerson.jsp\"&gt;\n"
+"        &lt;param name=\"firstResult\" value=\"#{people.firstResult}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:144
+#, no-c-format
+msgid "The JSF code for a pagination control is a bit verbose, but manageable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:147
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Search for people&lt;/h1&gt;\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view-id=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.previousExists}\" "
+"value=\"First Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"0\"/&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.previousExists}\" "
+"value=\"Previous Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.previousFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.nextExists}\" value="
+"\"Next Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.nextFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.nextExists}\" value="
+"\"Last Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.lastFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:148
+#, no-c-format
+msgid ""
+"Real search screens let the user enter a bunch of optional search criteria "
+"to narrow the list of results returned. The Query object lets you specify "
+"optional \"restrictions\" to support this important usecase:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:151
+#, no-c-format
+msgid ""
+"&lt;component name=\"examplePerson\" class=\"Person\"/&gt;\n"
+"        \n"
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\" \n"
+"                        order=\"lastName\" \n"
+"                        max-results=\"20\"&gt;\n"
+"    &lt;framework:restrictions&gt;\n"
+"        &lt;value&gt;lower(firstName) like lower( #{examplePerson.firstName} "
+"+ '&#37;' )&lt;/value&gt;\n"
+"        &lt;value&gt;lower(lastName) like lower( #{examplePerson.lastName} + "
+"'&#37;' )&lt;/value&gt;\n"
+"    &lt;/framework:restrictions&gt;\n"
+"&lt;/framework:entity-query&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:152
+#, no-c-format
+msgid "Notice the use of an \"example\" object."
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:155
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Search for people&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{examplePerson.firstName}"
+"\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{examplePerson.lastName}"
+"\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;&lt;h:commandButton value=\"Search\" action=\"/search.jsp\"/"
+"&gt;&lt;/div&gt;\n"
+"&lt;/h:form&gt;\n"
+"\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view-id=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:156
+#, no-c-format
+msgid ""
+"The examples in this section have all shown reuse by configuration. However, "
+"reuse by extension is equally possible for Query objects."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:162
+#, no-c-format
+msgid "Controller objects"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:163
+#, no-c-format
+msgid ""
+"A totally optional part of the Seam Application Framework is the class "
+"<literal>Controller</literal> and its subclasses <literal>EntityController</"
+"literal><literal>HibernateEntityController</literal> and "
+"<literal>BusinessProcessController</literal>. These classes provide nothing "
+"more than some convenience methods for access to commonly used built-in "
+"components and methods of built-in components. They help save a few "
+"keystrokes (characters can add up!) and provide a great launchpad for new "
+"users to explore the rich functionality built in to Seam."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:166
+#, no-c-format
+msgid ""
+"For example, here is what <literal>RegisterAction</literal> from the Seam "
+"registration example would look like:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:169
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"register\")\n"
+"public class RegisterAction extends EntityController implements Register\n"
+"{\n"
+"\n"
+"   @In private User user;\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = createQuery(\"select u.username from User u where u."
+"username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getResultList();\n"
+"      \n"
+"      if ( existing.size()==0 )\n"
+"      {\n"
+"         persist(user);\n"
+"         info(\"Registered new user #{user.username}\");\n"
+"         return \"/registered.jspx\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         addFacesMessage(\"User #{user.username} already exists\");\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:170
+#, no-c-format
+msgid "As you can see, its not an earthshattering improvement..."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Gettingstarted.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Gettingstarted.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Gettingstarted.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,588 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Gettingstarted.xml:10
+#, no-c-format
+msgid "Getting started with Seam, using seam-gen"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:11
+#, no-c-format
+msgid ""
+"The Seam distribution includes a command line utility that makes it really "
+"easy to set up an Eclipse project, generate some simple Seam skeleton code, "
+"and reverse engineer an application from a pre-existing database."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:14
+#, no-c-format
+msgid ""
+"This is the easy way to get your feet wet with Seam, and gives you some "
+"ammunition for next time you find yourself trapped in an elevator with one "
+"of those tedious Ruby guys ranting about how great and wonderful his new toy "
+"is for building totally trivial applications that put things in databases."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:17
+#, no-c-format
+msgid ""
+"In this release, seam-gen works best for people with JBoss AS. You can use "
+"the generated project with other J2EE or Java EE 5 application servers by "
+"making a few manual changes to the project configuration."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:20
+#, no-c-format
+msgid ""
+"You <emphasis>can</emphasis> use seam-gen without Eclipse, but in this "
+"tutorial, we want to show you how to use it in conjunction with Eclipse for "
+"debugging and integration testing. If you don't want to install Eclipse, you "
+"can still follow along with this tutorial&mdash;all steps can be peformed "
+"from the command line."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:23
+#, no-c-format
+msgid ""
+"Seam-gen is basically just a big ugly Ant script wrapped around Hibernate "
+"Tools, together with some templates. Which means it is easy to customize if "
+"you need to."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:27
+#, no-c-format
+msgid "Before you start"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:28
+#, no-c-format
+msgid ""
+"Make sure you have JDK 5 or JDK 6, JBoss AS 4.0.5 and Ant 1.6, along with "
+"recent versions of Eclipse, the JBoss IDE plugin for Eclipse and the TestNG "
+"plugin for Eclipse correctly installed before starting. Add your JBoss "
+"installation to the JBoss Server View in Eclipse. Start JBoss in debug mode. "
+"Finally, start a command prompt in the directory where you unzipped the Seam "
+"distribution."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:34
+#, no-c-format
+msgid "Setting up a new Eclipse project"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:35
+#, no-c-format
+msgid ""
+"The first thing we need to do is configure seam-gen for your environment: "
+"JBoss AS installation directory, Eclipse workspace, and database connection. "
+"It's easy, just type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:38
+#, no-c-format
+msgid ""
+"cd jboss-seam-1.1.x\n"
+"seam setup"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:39
+#, no-c-format
+msgid "And you will be prompted for the needed information:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:42
+#, no-c-format
+msgid ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam setup\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"setup:\n"
+"    [echo] Welcome to seam-gen :-)\n"
+"    [input] Enter your Java project workspace [C:/Projects]\n"
+"\n"
+"    [input] Enter your JBoss home directory [C:/Program Files/jboss-4.0.5."
+"GA]\n"
+"\n"
+"    [input] Enter the project name [myproject]\n"
+"helloworld\n"
+"    [input] Is this project deployed as an EAR (with EJB components) or a "
+"WAR \n"
+"        (with no EJB support) [ear] (ear,war,)\n"
+"\n"
+"    [input] Enter the Java package name for your session beans [com.mydomain."
+"helloworld]\n"
+"org.jboss.helloworld\n"
+"    [input] Enter the Java package name for your entity beans [org.jboss."
+"helloworld]\n"
+"\n"
+"    [input] Enter the Java package name for your test cases [org.jboss."
+"helloworld.test]\n"
+"\n"
+"    [input] What kind of database are you using? [hsql]\n"
+"    (hsql,mysql,oracle,postgres,mssql,db2,sybase,)\n"
+"mysql\n"
+"    [input] Enter the Hibernate dialect for your database [org.hibernate."
+"dialect.MySQLDialect]\n"
+"\n"
+"    [input] Enter the filesystem path to the JDBC driver jar [lib/hsqldb."
+"jar]\n"
+"../../mysql-connector.jar\n"
+"    [input] Enter JDBC driver class for your database [com.mysql.jdbc."
+"Driver]\n"
+"\n"
+"    [input] Enter the JDBC URL for your database [jdbc:mysql:///test]\n"
+"\n"
+"    [input] Enter database username [sa]\n"
+"gavin\n"
+"    [input] Enter database password []\n"
+"\n"
+"    [input] Are you working with tables that already exist in the database? "
+"[n] (y,n,)\n"
+"y\n"
+"    [input] Do you want to drop and recreate the database tables and data in "
+"import.sql \n"
+"    each time you deploy? [n] (y,n,)\n"
+"n\n"
+"[propertyfile] Creating new property file: C:&#92;Projects&#92;jboss-"
+"seam&#92;seam-gen&#92;build.properties\n"
+"     [echo] Installing JDBC driver jar to JBoss server\n"
+"     [echo] Type 'seam new-project' to create the new project\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 1 minute 17 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:43
+#, no-c-format
+msgid ""
+"The tool provides sensible defaults, which you can accept by just pressing "
+"enter at the prompt."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:46
+#, no-c-format
+msgid ""
+"The most important choice you need to make is between EAR deployment and WAR "
+"deployment of your project. EAR projects support EJB 3.0 and require Java EE "
+"5. WAR projects do not support EJB 3.0, but may be deployed to a J2EE "
+"environment. The packaging of a WAR is also simpler to understand. If you "
+"installed JBoss with the ejb3 profile, choose <literal>ear</literal>. "
+"Otherwise, choose <literal>war</literal>. We'll assume that you've chosen an "
+"EAR deployment for the rest of the tutorial, but you can follow exactly the "
+"same steps for a WAR deployment."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:49
+#, no-c-format
+msgid ""
+"If you are working with an existing data model, make sure you tell seam-gen "
+"that the tables already exist in the database."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:52
+#, no-c-format
+msgid ""
+"The settings are stored in <literal>seam-gen/build.properties</literal>, but "
+"you can also modify them simply by running <literal>seam setup</literal> a "
+"second time."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:55
+#, no-c-format
+msgid ""
+"Now we can create a new project in our Eclipse workspace directory, by "
+"typing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:58
+#, no-c-format
+msgid "seam new-project"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:59
+#, no-c-format
+msgid ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam new-project\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"copy-lib:\n"
+"     [echo] Copying project jars ...\n"
+"     [copy] Copying 32 files to C:&#92;Projects&#92;helloworld&#92;lib\n"
+"     [copy] Copying 9 files to C:&#92;Projects&#92;helloworld&#92;embedded-"
+"ejb\n"
+"\n"
+"file-copy-wtp:\n"
+"\n"
+"file-copy:\n"
+"     [echo] Copying project resources ...\n"
+"     [copy] Copying 12 files to C:&#92;Projects&#92;helloworld&#92;"
+"resources\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;helloworld&#92;resources\n"
+"     [copy] Copying 5 files to C:&#92;Projects&#92;helloworld&#92;view\n"
+"     [copy] Copying 5 files to C:&#92;Projects&#92;helloworld\n"
+"    [mkdir] Created dir: C:&#92;Projects&#92;helloworld&#92;src\n"
+"\n"
+"new-project:\n"
+"     [echo] A new Seam project was created in the C:/Projects directory\n"
+"     [echo] Add the project from inside Eclipse (or type 'seam explode') and "
+"go to http://localhost:\n"
+"8080/helloworld\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 7 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:60
+#, no-c-format
+msgid ""
+"This copies the Seam jars, dependent jars and the JDBC driver jar to a new "
+"Eclipse project, and generates all needed resources and configuration files, "
+"a facelets template file and stylesheet, along with Eclipse metadata and an "
+"Ant build script. The Eclipse project will be automatically deployed to an "
+"exploded directory structure in JBoss AS as soon as you add the project "
+"using <literal>New -&gt; Project... -&gt; Java Project -&gt; Next</literal>, "
+"typing the <literal>Project name</literal> (<literal>myproject</literal> in "
+"this case), selecting your Java SE 5 or Java SE 6 JRE and then clicking "
+"<literal>Finish</literal>. Do not select <literal>Create new project from "
+"existing source</literal>. Alternatively, you can deploy the project from "
+"outside Eclipse by typing <literal>seam explode</literal>."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:63
+#, no-c-format
+msgid ""
+"Go to <literal>http://localhost:8080/helloworld</literal> to see a welcome "
+"page. This is a facelets page, <literal>view/home.xhtml</literal>, using the "
+"template <literal>view/layout/template.xhtml</literal>. You can edit this "
+"page, or the template, in eclipse, and see the results "
+"<emphasis>immediately</emphasis>, by clicking refresh in your browser."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:66
+#, no-c-format
+msgid ""
+"Don't get scared by the XML configuration documents that were generated into "
+"the project directory. They are mostly standard Java EE stuff, the stuff you "
+"need to create once and then never look at again, and they are 90&#37; the "
+"same between all Seam projects. (They are so easy to write that even seam-"
+"gen can do it.)"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:69
+#, no-c-format
+msgid ""
+"The generated project includes three database and persistence "
+"configurations. The <literal>jboss-beans.xml</literal>, <literal>persistence-"
+"test.xml</literal> and <literal>import-test.sql</literal> files are used "
+"when running the TestNG unit tests against HSQLDB. The database schema and "
+"the test data in <literal>import-test.sql</literal> is always exported to "
+"the database before running tests. The <literal>myproject-dev-ds.xml</"
+"literal>, <literal>persistence-dev.xml</literal>and <literal>import-dev.sql</"
+"literal> files are for use when deploying the application to your "
+"development database. The schema might be exported automatically at "
+"deployment, depending upon whether you told seam-gen that you are working "
+"with an existing database. The <literal>myproject-prod-ds.xml</literal>, "
+"<literal>persistence-prod.xml</literal>and <literal>import-prod.sql</"
+"literal> files are for use when deploying the application to your production "
+"database. The schema is not exported automatically at deployment."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:75
+#, no-c-format
+msgid "Creating a new action"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:76
+#, no-c-format
+msgid ""
+"If you're used to traditional action-style web frameworks, you're probably "
+"wondering how you can create a simple webpage with a stateless action method "
+"in Java. If you type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:79
+#, no-c-format
+msgid "seam new-action"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:80
+#, no-c-format
+msgid ""
+"Seam will prompt for some information, and generate a new facelets page and "
+"Seam component for your project."
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:83
+#, no-c-format
+msgid ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam new-action ping\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"action-input:\n"
+"    [input] Enter the Seam component name\n"
+"ping\n"
+"    [input] Enter the local interface name [Ping]\n"
+"\n"
+"    [input] Enter the bean class name [PingBean]\n"
+"\n"
+"    [input] Enter the action method name [ping]\n"
+"\n"
+"    [input] Enter the page name [ping]\n"
+"\n"
+"\n"
+"setup-filters:\n"
+"\n"
+"new-action:\n"
+"     [echo] Creating a new stateless session bean component with an action "
+"method\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;view\n"
+"     [echo] Type 'seam restart' and go to \n"
+"     http://localhost:8080/helloworld/ping.seam\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 13 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:84
+#, no-c-format
+msgid ""
+"Because we've added a new Seam component, we need to restart the exploded "
+"directory deployment. You can do this by typing <literal>seam restart</"
+"literal>, or by running the <literal>restart</literal> target in the "
+"generated project <literal>build.xml</literal> file from inside Eclipse. "
+"Another way to force a restart is to edit the file <literal>resources/META-"
+"INF/application.xml</literal> in Eclipse. <emphasis>Note that you do not "
+"need to restart JBoss each time you change the application.</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:87
+#, no-c-format
+msgid ""
+"Now go to <literal>http://localhost:8080/helloworld/ping.seam</literal> and "
+"click the button. You can see the code behind this action by looking in the "
+"project <literal>src</literal> directory. Put a breakpoint in the "
+"<literal>ping()</literal> method, and click the button again."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:90
+#, no-c-format
+msgid ""
+"Finally, locate the <literal>PingTest.xml</literal> file in the test package "
+"and run the integration tests using the TestNG plugin for Eclipse. "
+"Alternatively, run the tests using <literal>seam test</literal> or the "
+"<literal>test</literal> target of the generated build."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:96
+#, no-c-format
+msgid "Creating a form with an action"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:97
+#, no-c-format
+msgid "The next step is to create a form. Type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:100
+#, no-c-format
+msgid "seam new-form"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:101
+#, no-c-format
+msgid ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam new-form\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"action-input:\n"
+"    [input] Enter the Seam component name\n"
+"hello\n"
+"    [input] Enter the local interface name [Hello]\n"
+"\n"
+"    [input] Enter the bean class name [HelloBean]\n"
+"\n"
+"    [input] Enter the action method name [hello]\n"
+"\n"
+"    [input] Enter the page name [hello]\n"
+"\n"
+"\n"
+"setup-filters:\n"
+"\n"
+"new-form:\n"
+"     [echo] Creating a new stateful session bean component with an action "
+"method\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;view\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [echo] Type 'seam restart' and go to http://localhost:8080/hello/hello."
+"seam\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 5 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:102
+#, no-c-format
+msgid ""
+"Restart the application again, and go to <literal>http://localhost:8080/"
+"helloworld/hello.seam</literal>. Then take a look at the generated code. Run "
+"the test. Try adding some new fields to the form and Seam component "
+"(remember to restart the deploment each time you change the Java code)."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:108
+#, no-c-format
+msgid "Generating an application from an existing database"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:109
+#, no-c-format
+msgid ""
+"Manually create some tables in your database. (If you need to switch to a "
+"different database, just run <literal>seam setup</literal> again.) Now type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:112
+#, no-c-format
+msgid "seam generate-entities"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:113
+#, no-c-format
+msgid ""
+"Restart the deployment, and go to <literal>http://localhost:8080/helloworld</"
+"literal>. You can browse the database, edit existing objects, and create new "
+"objects. If you look at the generated code, you'll probably be amazed how "
+"simple it is! Seam was designed so that data access code is easy to write by "
+"hand, even for people who don't want to cheat by using seam-gen."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:119
+#, no-c-format
+msgid "Deploying the application as an EAR"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:120
+#, no-c-format
+msgid ""
+"Finally, we want to be able to deploy the application using standard Java EE "
+"5 packaging. First, we need to remove the exploded directory by running "
+"<literal>seam unexplode</literal>. To deploy the EAR, we can type "
+"<literal>seam deploy</literal> at the command prompt, or run the "
+"<literal>deploy</literal> target of the generated project build script. You "
+"can undeploy using <literal>seam undeploy</literal> or the "
+"<literal>undeploy</literal> target."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:123
+#, no-c-format
+msgid ""
+"By default, the application will be deployed with the <emphasis>dev profile</"
+"emphasis>. The EAR will include the <literal>persistence-dev.xml</literal> "
+"and <literal>import-dev.sql</literal> files, and the <literal>myproject-dev-"
+"ds.xml</literal> file will be deployed. You can change the profile, and use "
+"the <emphasis>prod profile</emphasis>, by typing"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:126
+#, no-c-format
+msgid "seam -Dprofile=prod deploy"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:127
+#, no-c-format
+msgid ""
+"You can even define new deployment profiles for your application. Just add "
+"appropriately named files to your project&mdash;for example, "
+"<literal>persistence-staging.xml</literal>, <literal>import-staging.sql</"
+"literal> and <literal>myproject-staging-ds.xml</literal>&mdash;and select "
+"the name of the profile using <literal>-Dprofile=staging</literal>."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/I18n.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/I18n.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/I18n.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,533 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: I18n.xml:10
+#, no-c-format
+msgid "Internationalization and themes"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:11
+#, no-c-format
+msgid ""
+"Seam makes it easy to build internationalized applications by providing "
+"several built-in components for handling multi-language UI messages."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:15
+#, no-c-format
+msgid "Locales"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:16
+#, no-c-format
+msgid ""
+"Each user login session has an associated instance of <literal>java.util."
+"Locale</literal> (available to the application as a session-scoped component "
+"named <literal>locale</literal>). Under normal circumstances, you won't need "
+"to do any special configuration to set the locale. Seam just delegates to "
+"JSF to determine the active locale:"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:21
+#, no-c-format
+msgid ""
+"If there is a locale associated with the HTTP request (the browser locale), "
+"and that locale is in the list of supported locales from <literal>faces-"
+"config.xml</literal>, use that locale for the rest of the session."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:24
+#, no-c-format
+msgid ""
+"Otherwise, if a default locale was specified in the <literal>faces-config."
+"xml</literal>, use that locale for the rest of the session."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:27
+#, no-c-format
+msgid "Otherwise, use the default locale of the server."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:30
+#, no-c-format
+msgid ""
+"It is <emphasis>possible</emphasis> to set the locale manually via the Seam "
+"configuration properties <literal>org.jboss.seam.core.localeSelector."
+"language</literal>, <literal>org.jboss.seam.core.localeSelector.country</"
+"literal> and <literal>org.jboss.seam.core.localeSelector.variant</literal>, "
+"but we can't think of any good reason to ever do this."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:33
+#, no-c-format
+msgid ""
+"It is, however, useful to allow the user to set the locale manually via the "
+"application user interface. Seam provides built-in functionality for "
+"overriding the locale determined by the algorithm above. All you have to do "
+"is add the following fragment to a form in your JSP or Facelets page:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:36
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{localeSelector.language}\"&gt;\n"
+"    &lt;f:selectItem itemLabel=\"English\" itemValue=\"en\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Deutsch\" itemValue=\"de\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Francais\" itemValue=\"fr\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{localeSelector.select}\" value=\"#{messages"
+"['ChangeLanguage']}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:37
+#, no-c-format
+msgid ""
+"Or, if you want a list of all supported locales from <literal>faces-config."
+"xml</literal>, just use:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:40
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{localeSelector.localeString}\"&gt;\n"
+"    &lt;f:selectItems value=\"#{localeSelector.supportedLocales}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{localeSelector.select}\" value=\"#{messages"
+"['ChangeLanguage']}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:41
+#, no-c-format
+msgid ""
+"When this use selects an item from the drop-down, and clicks the button, the "
+"Seam and JSF locales will be overridden for the rest of the session."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:47
+#, no-c-format
+msgid "Labels"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:48
+#, no-c-format
+msgid ""
+"JSF supports internationalization of user interface labels and descriptive "
+"text via the use of <literal>&lt;f:loadBundle /&gt;</literal>. You can use "
+"this approach in Seam applications. Alternatively, you can take advantage of "
+"the Seam <literal>messages</literal> component to display templated labels "
+"with embedded EL expressions."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:52
+#, no-c-format
+msgid "Defining labels"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:53
+#, no-c-format
+msgid ""
+"Each login session has an associated instance of <literal>java.util."
+"ResourceBundle</literal> (available to the application as a session-scoped "
+"component named <literal>org.jboss.seam.core.resourceBundle</literal>). "
+"You'll need to make your internationalized labels available via this special "
+"resource bundle. By default, the resource bundle used by Seam is named "
+"<literal>messages</literal> and so you'll need to define your labels in "
+"files named <literal>messages.properties</literal>, <literal>messages_en."
+"properties</literal>, <literal>messages_en_AU.properties</literal>, etc. "
+"These files usually belong in the <literal>WEB-INF/classes</literal> "
+"directory."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:56
+#, no-c-format
+msgid "So, in <literal>messages_en.properties</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:59
+#, no-c-format
+msgid "Hello=Hello"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:60
+#, no-c-format
+msgid "And in <literal>messages_en_AU.properties</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:63
+#, no-c-format
+msgid "Hello=G'day"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:64
+#, no-c-format
+msgid ""
+"You can select a different name for the resource bundle by setting the Seam "
+"configuration property named <literal>org.jboss.seam.core.resourceBundle."
+"bundleNames</literal>. You can even specify a list of resource bundle names "
+"to be searched (depth first) for messages."
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:67
+#, no-c-format
+msgid ""
+"&lt;core:resource-bundle&gt;\n"
+"    &lt;core:bundle-names&gt;\n"
+"        &lt;value&gt;mycompany_messages&lt;/value&gt;\n"
+"        &lt;value&gt;standard_messages&lt;/value&gt;       \n"
+"    &lt;/core:bundle-names&gt;\n"
+"&lt;/core:resource-bundle&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:68
+#, no-c-format
+msgid ""
+"If you want to define a message just for a particular page, you can specify "
+"it in a resource bundle with the same name as the JSF view id, with the "
+"leading <literal>/</literal> and trailing file extension removed. So we "
+"could put our message in <literal>welcome/hello_en.properties</literal> if "
+"we only needed to display the message on <literal>/welcome/hello.jsp</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:71
+#, no-c-format
+msgid ""
+"You can even specify an explicit bundle name in <literal>pages.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:74
+#, no-c-format
+msgid "&lt;page view-id=\"/welcome/hello.jsp\" bundle=\"HelloMessages\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:75
+#, no-c-format
+msgid ""
+"Then we could use messages defined in <literal>HelloMessages.properties</"
+"literal> on <literal>/welcome/hello.jsp</literal>."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:81
+#, no-c-format
+msgid "Displaying labels"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:82
+#, no-c-format
+msgid ""
+"If you define your labels using the Seam resource bundle, you'll be able to "
+"use them without having to type <literal>&lt;f:loadBundle ... /&gt;</"
+"literal> on every page. Instead, you can simply type:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:85
+#, no-c-format
+msgid "&lt;h:outputText value=\"#{messages['Hello']}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:86
+#, no-c-format
+msgid "<para>or:</para>"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:89
+#, no-c-format
+msgid "&lt;h:outputText value=\"#{messages.Hello}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:90
+#, no-c-format
+msgid "Even better, the messages themselves may contain EL expressions:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:93
+#, no-c-format
+msgid "Hello=Hello, #{user.firstName} #{user.lastName}"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:94
+#, no-c-format
+msgid "Hello=G'day, #{user.firstName}"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:95
+#, no-c-format
+msgid "You can even use the messages in your code:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:98
+#, no-c-format
+msgid "@In private Map&lt;String, String&gt; messages;"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:99
+#, no-c-format
+msgid "@In(\"#{messages['Hello']}\") private String helloMessage;"
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:103
+#, no-c-format
+msgid "Faces messages"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:104
+#, no-c-format
+msgid ""
+"The <literal>facesMessages</literal> component is a super-convenient way to "
+"display success or failure messages to the user. The functionality we just "
+"described also works for faces messages:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:107
+#, no-c-format
+msgid ""
+"@Name(\"hello\")\n"
+"@Stateless\n"
+"public class HelloBean implements Hello {\n"
+"    @In FacesMessages facesMessages;\n"
+"    \n"
+"    public String sayIt() {\n"
+"        facesMessages.addFromResourceBundle(\"Hello\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:108
+#, no-c-format
+msgid ""
+"This will display <literal>Hello, Gavin King</literal> or <literal>G'day, "
+"Gavin</literal>, depending upon the user's locale."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:116
+#, no-c-format
+msgid "Timezones"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:117
+#, no-c-format
+msgid ""
+"There is also a session-scoped instance of <literal>java.util.Timezone</"
+"literal>, named <literal>org.jboss.seam.core.timezone</literal>, and a Seam "
+"component for changing the timezone named <literal>org.jboss.seam.core."
+"timezoneSelector</literal>. By default, the timezone is the default timezone "
+"of the server. Unfortunately, the JSF specification says that all dates and "
+"times should be assumed to be UTC, and displayed as UTC, unless a timezone "
+"is explicitly specified using <literal>&lt;f:convertDateTime&gt;</literal>. "
+"This is an extremely inconvenient default behavior."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:120
+#, no-c-format
+msgid ""
+"Seam overrides this behavior, and defaults all dates and times to the Seam "
+"timezone. In addition, Seam provides the <literal>&lt;s:convertDateTime&gt;</"
+"literal> tag which always performs conversions in the Seam timezone."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:126
+#, no-c-format
+msgid "Themes"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:127
+#, no-c-format
+msgid ""
+"Seam applications are also very easily skinnable. The theme API is very "
+"similar to the localization API, but of course these two concerns are "
+"orthogonal, and some applications support both localization and themes."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:130
+#, no-c-format
+msgid "First, configure the set of supported themes:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:133
+#, no-c-format
+msgid ""
+"&lt;theme:theme-selector cookie-enabled=\"true\"&gt;\n"
+"    &lt;theme:available-themes&gt;\n"
+"        &lt;value&gt;default&lt;/value&gt;\n"
+"        &lt;value&gt;accessible&lt;/value&gt;\n"
+"        &lt;value&gt;printable&lt;/value&gt;\n"
+"    &lt;/theme:available-themes&gt;\n"
+"&lt;/theme:theme-selector&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:134
+#, no-c-format
+msgid "Note that the first theme listed is the default theme."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:137
+#, no-c-format
+msgid ""
+"Themes are defined in a properties file with the same name as the theme. For "
+"example, the <literal>default</literal> theme is defined as a set of entries "
+"in <literal>default.properties</literal>. For example, <literal>default."
+"properties</literal> might define:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:140
+#, no-c-format
+msgid ""
+"css ../screen.css\n"
+"template template.xhtml"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:141
+#, no-c-format
+msgid ""
+"Usually the entries in a theme resource bundle will be paths to CSS styles "
+"or images and names of facelets templates (unlike localization resource "
+"bundles which are usually text)."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:144
+#, no-c-format
+msgid ""
+"Now we can use these entries in our JSP or facelets pages. For example, to "
+"theme the stylesheet in a facelets page:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:147
+#, no-c-format
+msgid ""
+"&lt;link href=\"#{theme.css}\" rel=\"stylesheet\" type=\"text/css\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:148
+#, no-c-format
+msgid ""
+"Most powerfully, facelets lets us theme the template used by a <literal>&lt;"
+"ui:composition&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:151
+#, no-c-format
+msgid ""
+"&lt;ui:composition xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"    xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"    xmlns:h=\"http://java.sun.com/jsf/html\"\n"
+"    xmlns:f=\"http://java.sun.com/jsf/core\"\n"
+"    template=\"#{theme.template}\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:152
+#, no-c-format
+msgid ""
+"Just like the locale selector, there is a built-in theme selector to allow "
+"the user to freely switch themes:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:155
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{themeSelector.theme}\"&gt;\n"
+"    &lt;f:selectItems value=\"#{themeSelector.themes}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{themeSelector.select}\" value=\"Select Theme"
+"\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:159
+#, no-c-format
+msgid "Persisting locale and theme preferences via cookies"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:160
+#, no-c-format
+msgid ""
+"The locale selector, theme selector and timezone selector all support "
+"persistence of locale and theme preference to a cookie. Simply set the "
+"<literal>cookie-enabled</literal> configuration property:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:163
+#, no-c-format
+msgid ""
+"&lt;theme:theme-selector cookie-enabled=\"true\"&gt;\n"
+"    &lt;theme:available-themes&gt;\n"
+"        &lt;value&gt;default&lt;/value&gt;\n"
+"        &lt;value&gt;accessible&lt;/value&gt;\n"
+"        &lt;value&gt;printable&lt;/value&gt;\n"
+"    &lt;/theme:available-themes&gt;\n"
+"&lt;/theme:theme-selector&gt;\n"
+"\n"
+"&lt;core:locale-selector cookie-enabled=\"true\"/&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Itext.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Itext.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Itext.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1452 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Itext.xml:10
+#, no-c-format
+msgid "iText PDF generation"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:11
+#, no-c-format
+msgid ""
+"Seam now includes an component set for generating documents using iText. The "
+"primary focus of Seam's iText document support is for the generation of PDF "
+"doucuments, but Seam also offers basic support for RTF document generation."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:15
+#, no-c-format
+msgid "Using PDF Support"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:16
+#, no-c-format
+msgid ""
+"iText support is provided by <literal>jboss-seam-pdf.jar</literal>. This JAR "
+"contains the iText JSF controls, which are used to construct views that can "
+"render to PDF, and the DocumentStore component, which serves the rendered "
+"documents to the user. To include PDF support in your application, included "
+"<literal>jboss-seam-pdf.jar</literal> in your <literal>WEB-INF/lib</literal> "
+"directory along with the iText JAR file. There is no further configuration "
+"needed to use Seam's iText support."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:19
+#, no-c-format
+msgid ""
+"The Seam iText module requires the use of Facelets as the view technology. "
+"Future versions of the library may also support the use of JSP. "
+"Additionally, it requires the use of the seam-ui package."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:22
+#, no-c-format
+msgid ""
+"The <literal>examples/itext</literal> project contains an example of the PDF "
+"support in action. It demonstrates proper deployment packaging, and it "
+"contains a number examples that demonstrate the key PDF generation features "
+"current supported."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:28
+#, no-c-format
+msgid "Creating a document"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:29
+#, no-c-format
+msgid ""
+"Documents are generated by facelets documents using tags in the "
+"<literal>http://jboss.com/products/seam/pdf</literal> namespace. Documents "
+"should always have the <literal>document</literal> tag at the root of the "
+"document. The <literal>document</literal> tag prepares Seam to generate a "
+"document into the DocumentStore and renders an HTML redirect to that stored "
+"content. The following is a a small PDF document consisting only a single "
+"line of text:"
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:32
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf"
+"\"&gt;                                                      \n"
+"   The document goes "
+"here.                                                                                             \n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:34
+#, no-c-format
+msgid "p:document"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:35
+#, no-c-format
+msgid ""
+"The <literal>p:document</literal> tag supports the following attributes:"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:40
+#, no-c-format
+msgid "type"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:42
+#, no-c-format
+msgid ""
+"The type of the document to be produced. Valid values are <literal>PDF</"
+"literal>, <literal>RTF</literal> and <literal>HTML</literal> modes. Seam "
+"defaults to PDF generation, and many of the features only work correctly "
+"when generating PDF documents."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:48
+#, no-c-format
+msgid "pageSize"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:50
+#, no-c-format
+msgid ""
+"The size of the page to be generate. The most commonly used values would be "
+"<literal>LETTER</literal> and <literal>A4</literal>. A full list of "
+"supported pages sizes can be found in <literal>com.lowagie.text.PageSize</"
+"literal> class. Alternatively, pageSize can provide the width and height of "
+"the page directly. The value \"612 792\", for example, is equizalent to the "
+"LETTER page size."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:56
+#, no-c-format
+msgid "orientation"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:58
+#, no-c-format
+msgid ""
+"The orientation of the page. Valid values are <literal>portrait</literal> "
+"and <literal>landscape</literal>. In landscape mode, the height and width "
+"page size values are reversed."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:64
+#, no-c-format
+msgid "margins"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:66
+#, no-c-format
+msgid "The left, right, top and bottom margin values."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:72
+#, no-c-format
+msgid "marginMirroring"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:74
+#, no-c-format
+msgid "Indicates that margin settings should be reversed an alternating pages."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:80
+#, no-c-format
+msgid ""
+"Document metadata is also set as attributes of the document tag. The "
+"following metadata fields are supported:"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:85
+#, no-c-format
+msgid "title"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:92
+#, no-c-format
+msgid "subject"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:99
+#, no-c-format
+msgid "keywords"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:106
+#, no-c-format
+msgid "author"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:113
+#, no-c-format
+msgid "creator"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:125
+#, no-c-format
+msgid "Basic Text Elements"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:126
+#, no-c-format
+msgid ""
+"Useful documents will need to contain more than just text; however, the "
+"standard UI components are geared towards HTML generation and are not useful "
+"for generating PDF content. Instead, Seam provides a special UI components "
+"for generating suitable PDF content. Tags like <literal>&lt;p:image&gt;</"
+"literal> and <literal>&lt;p:paragraph&gt;</literal> are the basic "
+"foundations of simple documents. Tags like <literal>&lt;p:font&gt;</literal> "
+"provide style information to all the content surrounging them."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:129
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"&gt; \n"
+"    &lt;p:image alignment=\"right\" wrap=\"true\" resource=\"/logo.jpg\" /"
+"&gt;\n"
+"    &lt;p:font size=\"24\"&gt;\n"
+"        &lt;p:paragraph spacingAfter=\"50\"&gt;My First Document&lt;/p:"
+"paragraph&gt;\n"
+"    &lt;/p:font&gt;\n"
+"\n"
+"    &lt;p:paragraph alignment=\"justify\"&gt;\n"
+"        This is a simple document.  It isn't very fancy.\n"
+"    &lt;/p:paragraph&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:131
+#, no-c-format
+msgid "p:paragraph"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:132
+#, no-c-format
+msgid ""
+"Most uses of text should be sectioned into paragraphs so that text fragments "
+"can be flowed, formatted and styled in logical groups."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:137
+#, no-c-format
+msgid "firstLineIndent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:144 Itext.xml:836
+#, no-c-format
+msgid "extraParagraphSpace"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:151 Itext.xml:808
+#, no-c-format
+msgid "leading"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:158 Itext.xml:815
+#, no-c-format
+msgid "multipliedLeading"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:165 Itext.xml:344 Itext.xml:716
+#, no-c-format
+msgid "spacingBefore"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:167 Itext.xml:346 Itext.xml:718
+#, no-c-format
+msgid "The blank space to be inserted before the element."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:173 Itext.xml:352 Itext.xml:724
+#, no-c-format
+msgid "spacingAfter"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:175 Itext.xml:354 Itext.xml:726
+#, no-c-format
+msgid "The blank space to be inserted after the element."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:181 Itext.xml:330 Itext.xml:599
+#, no-c-format
+msgid "indentationLeft"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:188 Itext.xml:337 Itext.xml:607
+#, no-c-format
+msgid "indentationRight"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:195 Itext.xml:753
+#, no-c-format
+msgid "keepTogether"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:205
+#, no-c-format
+msgid "p:text"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:206
+#, no-c-format
+msgid ""
+"The <literal>text</literal> tag allows text fragments to be produced from "
+"application data using normal JSF converter mechanisms. It is very similar "
+"to the <literal>outputText</literal> tag used when rendering HTML documents. "
+"Here is an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:209
+#, no-c-format
+msgid ""
+"&lt;p:paragraph&gt;\n"
+"    The item costs &lt;p:text value=\"#{product.price}\"&gt;\n"
+"        &lt;f:convertNumber type=\"currency\" currencySymbol=\"&#36;\"/&gt;\n"
+"    &lt;/p:text&gt;\n"
+"&lt;/p:paragraph&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:212
+#, no-c-format
+msgid "value"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:214
+#, no-c-format
+msgid ""
+"The value to be displayed. This will typically be a value binding expression."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:223
+#, no-c-format
+msgid "p:font"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:224
+#, no-c-format
+msgid "Font declarations have no direct"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:229
+#, no-c-format
+msgid "familyName"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:231
+#, no-c-format
+msgid ""
+"The font family. One of: <literal>COURIER</literal>, <literal>HELVETICA</"
+"literal>, <literal>TIMES-ROMAN</literal>, <literal>SYMBOL</literal> or "
+"<literal>ZAPFDINGBATS</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:237
+#, no-c-format
+msgid "size"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:239
+#, no-c-format
+msgid "The point size of the font."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:245 Itext.xml:534
+#, no-c-format
+msgid "style"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:247
+#, no-c-format
+msgid ""
+"The font styles. Any combination of : <literal>NORMAL</literal>, "
+"<literal>BOLD</literal>, <literal>ITALIC</literal>, <literal>OBLIQUE</"
+"literal>, <literal>UNDERLINE</literal>, <literal>LINE-THROUGH</literal>"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:256
+#, no-c-format
+msgid "p:newPage"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:257
+#, no-c-format
+msgid "<literal>p:newPage</literal> inserts a page break."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:263
+#, no-c-format
+msgid "p:image"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:264
+#, no-c-format
+msgid ""
+"<literal>p:image</literal> inserts an image into the document. Images can be "
+"be loaded from the classpath or from the web application context using the "
+"<literal>resource</literal> attribute."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:267
+#, no-c-format
+msgid "&lt;p:image resource=\"/jboss.jpg\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:268
+#, no-c-format
+msgid ""
+"Resources can also be dynamically generated by application code. The "
+"<literal>imageData</literal> attribute can specify a value binding "
+"expression whose value is a <literal>java.awt.Image</literal> object."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:271
+#, no-c-format
+msgid "&lt;p:image imageData=\"#{images.chart}\" /&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:274
+#, no-c-format
+msgid "resource"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:276
+#, no-c-format
+msgid ""
+"The location of the image resource to be included. Resources should be "
+"relative to the document root of the web application."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:282
+#, no-c-format
+msgid "imageData"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:284
+#, no-c-format
+msgid "A method expression binding to an application-generated image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:290 Itext.xml:913
+#, no-c-format
+msgid "rotation"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:292
+#, no-c-format
+msgid "The rotation of the image in degrees."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:298
+#, no-c-format
+msgid "height"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:300
+#, no-c-format
+msgid "The height of the image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:306
+#, no-c-format
+msgid "width"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:308
+#, no-c-format
+msgid "The width of the image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:314 Itext.xml:441 Itext.xml:591
+#, no-c-format
+msgid "alignment"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:316
+#, no-c-format
+msgid ""
+"The alignment of the image. (see <xref linkend=\"Document_Constants-"
+"Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:322
+#, no-c-format
+msgid "<literal>alt</literal>"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:324
+#, no-c-format
+msgid "Alternative text representation for the image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:360 Itext.xml:672
+#, no-c-format
+msgid "widthPercentage"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:367
+#, no-c-format
+msgid "initialRotation"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:374
+#, no-c-format
+msgid "<literal>dpi</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:381
+#, no-c-format
+msgid "scalePercent"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:383
+#, no-c-format
+msgid ""
+"The scaling factor (as a percentage) to use for the image. This can be "
+"expressed as a single percentage value or as two percentage values "
+"representing separate x and y scaling percentages."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:389
+#, no-c-format
+msgid "wrap"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:396
+#, no-c-format
+msgid "underlying"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:406
+#, no-c-format
+msgid "p:anchor"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:407
+#, no-c-format
+msgid ""
+"<literal>p:anchor</literal> defines clickable links from a document. It "
+"supports the following attributes:"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:412
+#, no-c-format
+msgid "name"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:414
+#, no-c-format
+msgid "The name of an in-document anchor destination."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:420
+#, no-c-format
+msgid "reference"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:422
+#, no-c-format
+msgid ""
+"The destination the link refers to. Links to other points in the document "
+"should begin with a \"#\". For example, \"#link1\" to refer to an anchor "
+"postion with a <literal>name</literal> of <literal>link1</literal>. Links "
+"may also be a full URL to point to a resource outside of the document."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:433
+#, no-c-format
+msgid "Headers and Footers"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:435
+#, no-c-format
+msgid "p:header and p:footer"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:436
+#, no-c-format
+msgid ""
+"The <literal>p:header</literal> and <literal>p:footer</literal> components "
+"provide the ability to place header and footer text on each page of a "
+"generated document, with the exception of the first page. Header and footer "
+"declarations should appear near the top of a document."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:443
+#, no-c-format
+msgid ""
+"The alignment of the header/footer box section. (see <xref linkend="
+"\"Document_Constants-Alignment_Values\"/> for alignment values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:449
+#, no-c-format
+msgid "backgroundColor"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:451
+#, no-c-format
+msgid ""
+"The background color of the header/footer box. (see <xref linkend="
+"\"Document_Constants-Color_Values\"/> for color values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:457
+#, no-c-format
+msgid "borderColor"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:459
+#, no-c-format
+msgid ""
+"The border color of the header/footer box. Individual border sides can be "
+"set using <literal>borderColorLeft</literal>, <literal>borderColorRight</"
+"literal>, <literal>borderColorTop</literal> and <literal>borderColorBottom</"
+"literal>.(see <xref linkend=\"Document_Constants-Color_Values\"/> for color "
+"values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:465
+#, no-c-format
+msgid "borderWidth"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:467
+#, no-c-format
+msgid ""
+"The width of the border. Inidvidual border sides can be specified using "
+"<literal>borderWidthLeft</literal>, <literal>borderWidthRight</literal>, "
+"<literal>borderWidthTop</literal> and <literal>borderWidthBottom</literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:476
+#, no-c-format
+msgid "p:pageNumber"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:477
+#, no-c-format
+msgid ""
+"The current page number can be placed inside of a header or footer using the "
+"<literal>p:pageNumber</literal> tag. The page number tag can only be used in "
+"the context of a header or footer and can only be used once."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:485
+#, no-c-format
+msgid "Chapters and Sections"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:486
+#, no-c-format
+msgid ""
+"If the generated document follows a book/article structure, the <literal>p:"
+"chapter</literal> and <literal>p:section</literal> tags can be used to "
+"provide the necessary structure. Sections can only be used inside of "
+"chapters, but they may be nested arbitrarily deep. Most PDF viewers provide "
+"easy navigation between chapters and sections in a document."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:489
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"\n"
+"            title=\"Hello\"&gt;\n"
+"\n"
+"   &lt;p:chapter number=\"1\"&gt;\n"
+"      &lt;p:title&gt;&lt;p:paragraph&gt;Hello&lt;/p:paragraph&gt;&lt;/p:"
+"title&gt;\n"
+"      &lt;p:paragraph&gt;Hello #{user.name}!&lt;/p:paragraph&gt;\n"
+"   &lt;/p:chapter&gt;\n"
+"\n"
+"   &lt;p:chapter number=\"2\"&gt;\n"
+"      &lt;p:title&gt;&lt;p:paragraph&gt;Goodbye&lt;/p:paragraph&gt;&lt;/p:"
+"title&gt;\n"
+"      &lt;p:paragraph&gt;Goodbye #{user.name}.&lt;/p:paragraph&gt;\n"
+"   &lt;/p:chapter&gt;\n"
+"\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:491
+#, no-c-format
+msgid "p:chapter and p:section"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:494
+#, no-c-format
+msgid "number"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:496
+#, no-c-format
+msgid "The chapter number. Every chapter should be assigned a chapter number."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:502
+#, no-c-format
+msgid "numberDepth"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:504
+#, no-c-format
+msgid ""
+"The depth of numbering for section. All sections are numbered relative to "
+"their surrounding chapter/sections. The fourth section of of the first "
+"section of chapter three would be section 3.1.4, if displayed at the default "
+"number depth of three. To omit the chapter number, a number depth of 2 "
+"should be used. In that case, the section number would be displayed as 1.4."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:513
+#, no-c-format
+msgid "p:title"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:514
+#, no-c-format
+msgid ""
+"Any chapter or section can contain a <literal>p:title</literal>. The title "
+"will be displayed next to the chapter/section number. The body of the title "
+"may contain raw text or may be a <literal>p:paragraph</literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:522
+#, no-c-format
+msgid "Lists"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:523
+#, no-c-format
+msgid ""
+"List structures can be displayed using the <literal>p:list</literal> and "
+"<literal>p:listItem</literal> tags. Lists may contain arbitrarily-nested "
+"sublists. List items may not be used outside of a list. he following "
+"document uses the <literal>ui:repeat</literal> tag to to display a list of "
+"values retrieved from a Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:526
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"\n"
+"            xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"            title=\"Hello\"&gt;\n"
+"   &lt;p:list style=\"numbered\"&gt;\n"
+"      &lt;ui:repeat value=\"#{documents}\" var=\"doc\"&gt;\n"
+"         &lt;p:listItem&gt;#{doc.name}&lt;/p:listItem&gt;\n"
+"      &lt;/ui:repeat&gt;\n"
+"   &lt;/p:list&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:528
+#, no-c-format
+msgid "p:list"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:529
+#, no-c-format
+msgid "<literal>p:list</literal> supports the following attributes:"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:536
+#, no-c-format
+msgid ""
+"The ordering/bulleting style of list. One of: <literal>NUMBERED</literal>, "
+"<literal>LETTERED</literal>, <literal>GREEK</literal>, <literal>ROMAN</"
+"literal>, <literal>ZAPFDINGBATS</literal>, <literal>ZAPFDINGBATS_NUMBER</"
+"literal>. If no style is given, the list items are bulleted."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:542 Itext.xml:615
+#, no-c-format
+msgid "listSymbol"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:544
+#, no-c-format
+msgid "For bulleted lists, specifies the bullet symbol."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:550 Itext.xml:822
+#, no-c-format
+msgid "indent"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:552
+#, no-c-format
+msgid "The indentation level of the list."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:558
+#, no-c-format
+msgid "lowerCase"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:560
+#, no-c-format
+msgid ""
+"For list styles using letters, indicates whether the letters should be lower "
+"case."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:566
+#, no-c-format
+msgid "charNumber"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:568
+#, no-c-format
+msgid "For ZAPFDINGBATS, indicates the character code of the bullet character."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:574
+#, no-c-format
+msgid "numberType"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:576
+#, no-c-format
+msgid "For ZAPFDINGBATS_NUMBER, indicates the numbering style."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:585
+#, no-c-format
+msgid "p:listItem"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:586
+#, no-c-format
+msgid "<literal>p:listItem</literal> supports the following attributes:"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:593
+#, no-c-format
+msgid ""
+"The alignment of the list item. (See <xref linkend=\"Document_Constants-"
+"Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:601
+#, no-c-format
+msgid "The left indentation amount."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:609
+#, no-c-format
+msgid "The right indentation amount."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:617
+#, no-c-format
+msgid "Overrides the default list symbol for this list item."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:628
+#, no-c-format
+msgid "Tables"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:629
+#, no-c-format
+msgid ""
+"Table structures can be created using the <literal>p:table</literal> and "
+"<literal>p:cell</literal> tags. Unlike many table structures, there is no "
+"explicit row declaration. If a table has 3 columns, then every 3 cells will "
+"automatically form a row. Header and footer rows can be declared, and the "
+"headers and footers will be repeated in the event a table structure spans "
+"multiple pages."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:632
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"   \n"
+"            xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"            title=\"Hello\"&gt;   \n"
+"   &lt;p:table columns=\"3\" headerRows=\"1\"&gt;\n"
+"      &lt;p:cell&gt;name&lt;/p:cell&gt;\n"
+"      &lt;p:cell&gt;owner&lt;/p:cell&gt;\n"
+"      &lt;p:cell&gt;size&lt;/p:cell&gt;\n"
+"      &lt;ui:repeat value=\"#{documents}\" var=\"doc\"&gt;\n"
+"         &lt;p:cell&gt;#{doc.name}&lt;/p:cell&gt;\n"
+"         &lt;p:cell&gt;#{doc.user.name}&lt;/p:cell&gt;\n"
+"         &lt;p:cell&gt;#{doc.size}&lt;/p:cell&gt;\n"
+"      &lt;/ui:repeat&gt;\n"
+"   &lt;/p:table&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:634
+#, no-c-format
+msgid "p:table"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:635
+#, no-c-format
+msgid "<literal>p:table</literal> supports the following attributes."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:640
+#, no-c-format
+msgid "columns"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:642
+#, no-c-format
+msgid "The number of columns (cells) that make up a table row."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:648
+#, no-c-format
+msgid "widths"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:650
+#, no-c-format
+msgid ""
+"The relative widths of each column. There should be one value for each "
+"column. For example: widths=\"2 1 1\" would indicate that there are 3 "
+"columns and the first column should be twice the size of the second and "
+"third column."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:656
+#, no-c-format
+msgid "headerRows"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:658
+#, no-c-format
+msgid ""
+"The initial number of rows which are considered to be headers or footer rows "
+"and should be repeated if the table spans multiple pages."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:664
+#, no-c-format
+msgid "footerRows"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:666
+#, no-c-format
+msgid ""
+"The number of rows that are considered to be footer rows. This value is "
+"subtracted from the <literal>headerRows</literal> value. If document has 2 "
+"rows which make up the header and one row that makes up the footer, "
+"<literal>headerRows</literal> should be set to 3 and <literal>footerRows</"
+"literal> should be set to 1"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:674
+#, no-c-format
+msgid "The percentage of the page width that the table spans."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:680 Itext.xml:777
+#, no-c-format
+msgid "horizontalAlignment"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:682
+#, no-c-format
+msgid ""
+"The horizontal alignment of the table. (See <xref linkend="
+"\"Document_Constants-Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:688
+#, no-c-format
+msgid "skipFirstHeader"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:695 Itext.xml:885
+#, no-c-format
+msgid "runDirection"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:702
+#, no-c-format
+msgid "lockedWidth"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:709
+#, no-c-format
+msgid "splitRows"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:732
+#, no-c-format
+msgid "extendLastRow"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:739
+#, no-c-format
+msgid "headersInEvent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:746
+#, no-c-format
+msgid "splitLate"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:763
+#, no-c-format
+msgid "p:cell"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:764
+#, no-c-format
+msgid "<literal>p:cell</literal> supports the following attributes."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:769
+#, no-c-format
+msgid "colspan"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:771
+#, no-c-format
+msgid ""
+"Cells can span more than one column by declaring a <literal>colspan</"
+"literal> greater than 1. Tables do not have the ability to span across "
+"multiple rows."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:779
+#, no-c-format
+msgid ""
+"The horizontal alignment of the cell. (see <xref linkend="
+"\"Document_Constants-Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:785 Itext.xml:829
+#, no-c-format
+msgid "verticalAlignment"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:787
+#, no-c-format
+msgid ""
+"The vertical alignment of the cell. (see <xref linkend=\"Document_Constants-"
+"Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:793
+#, no-c-format
+msgid "padding"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:795
+#, no-c-format
+msgid ""
+"Padding on a given side can also be specified using <literal>paddingLeft</"
+"literal>, <literal>paddingRight</literal>, <literal>paddingTop</literal> and "
+"<literal>paddingBottom</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:801
+#, no-c-format
+msgid "useBorderPadding"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:843
+#, no-c-format
+msgid "fixedHeight"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:850
+#, no-c-format
+msgid "noWrap"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:857
+#, no-c-format
+msgid "minimumHeight"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:864
+#, no-c-format
+msgid "followingIndent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:871
+#, no-c-format
+msgid "rightIndent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:878
+#, no-c-format
+msgid "spaceCharRatio"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:892
+#, no-c-format
+msgid "arabicOptions"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:899
+#, no-c-format
+msgid "useAscender"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:906
+#, no-c-format
+msgid "grayFill"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:925
+#, no-c-format
+msgid "Document Constants"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:926
+#, no-c-format
+msgid ""
+"This section documents some of the constants shared by attributes on "
+"multiple tags."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:930
+#, no-c-format
+msgid "Color Values"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:931
+#, no-c-format
+msgid ""
+"Seam documents do not yet support a full color specification. Currently, "
+"only named colors are supported. They are: <literal>white</literal>, "
+"<literal>gray</literal>, <literal>lightgray</literal>, <literal>darkgray</"
+"literal>, <literal>black</literal>, <literal>red</literal>, <literal>pink</"
+"literal>, <literal>yellow</literal>, <literal>green</literal>, "
+"<literal>magenta</literal>, <literal>cyan</literal> and <literal>blue</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:937
+#, no-c-format
+msgid "Alignment Values"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:938
+#, no-c-format
+msgid ""
+"Where alignment values are used, the Seam PDF supports the following "
+"horizontal alignment values: <literal>left</literal>, <literal>right</"
+"literal>, <literal>center</literal>, <literal>justify</literal> and "
+"<literal>justifyall</literal>. The vertical alignment values are "
+"<literal>top</literal>, <literal>middle</literal>, <literal>bottom</"
+"literal>, and <literal>baseline</literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:946
+#, no-c-format
+msgid "Configuring iText"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:947
+#, no-c-format
+msgid ""
+"Document generation works out of the box with no additional configuration "
+"needed. However, there are a few points of configuration that are needed for "
+"more serious applications."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:950
+#, no-c-format
+msgid ""
+"The default implementation serves PDF documents from a generic URL, "
+"<literal>/seam-doc.seam</literal>. Many browsers (and users) would prefer to "
+"see URLs that contain the actual PDF name like <literal>/myDocument.pdf</"
+"literal>. This capability requires some configuration. To serve PDF files, "
+"all *.pdf resources should be mapped to the Seam Servlet Filter and to the "
+"DocumentStoreServlet:"
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:953
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.servlet.SeamServletFilter&lt;/filter-"
+"class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;\n"
+"\n"
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.pdf.DocumentStoreServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"\n"
+"&lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:954
+#, no-c-format
+msgid ""
+"The <literal>useExtensions</literal> option on the document store component "
+"completes the functionality by instructing the document store to generate "
+"URLs with the correct filename extension for the document type being "
+"generated."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:957
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pdf=\"http://jboss.com/products/seam/pdf\"&gt;\n"
+"    &lt;pdf:documentStore useExtensions=\"true\" /&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:958
+#, no-c-format
+msgid ""
+"Generated documents are stored in conversation scope and will expire when "
+"the conversation ends. At that point, references to the document will be "
+"invalid. To You can specify a default view to be shown when a document does "
+"not exist using the <literal>errorPage</literal> property of the "
+"documentStore."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:961
+#, no-c-format
+msgid ""
+"&lt;pdf:documentStore useExtensions=\"true\" errorPage=\"/pdfMissing.seam\" /"
+"&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:965
+#, no-c-format
+msgid "iText links"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:966
+#, no-c-format
+msgid "For further information on iText, see:"
+msgstr ""
+
+#. Tag: ulink
+#: Itext.xml:973
+#, no-c-format
+msgid "iText Home Page"
+msgstr ""
+
+#. Tag: ulink
+#: Itext.xml:978
+#, no-c-format
+msgid "iText in Action"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Jbpm.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Jbpm.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Jbpm.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1189 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Jbpm.xml:10
+#, no-c-format
+msgid "Pageflows and business processes"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:11
+#, no-c-format
+msgid ""
+"JBoss jBPM is a business process management engine for any Java SE or EE "
+"environment. jBPM lets you represent a business process or user interaction "
+"as a graph of nodes representing wait states, decisions, tasks, web pages, "
+"etc. The graph is defined using a simple, very readable, XML dialect called "
+"jPDL, and may be edited and visualised graphically using an eclipse plugin. "
+"jPDL is an extensible language, and is suitable for a range of problems, "
+"from defining web application page flow, to traditional workflow management, "
+"all the way up to orchestration of services in a SOA environment."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:14
+#, no-c-format
+msgid "Seam applications use jBPM for two different problems:"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:20
+#, no-c-format
+msgid ""
+"Defining the pageflow involved in complex user interactions. A jPDL process "
+"definition defines the page flow for a single conversation. A Seam "
+"conversation is considered to be a relatively short-running interaction with "
+"a single user."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:25
+#, no-c-format
+msgid ""
+"Defining the overarching business process. The business process may span "
+"multiple conversations with multiple users. Its state is persistent in the "
+"jBPM database, so it is considered long-running. Coordination of the "
+"activities of multiple users is a much more complex problem than scripting "
+"an interaction with a single user, so jBPM offers sophisticated facilities "
+"for task management and dealing with multiple concurrent paths of execution."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:31
+#, no-c-format
+msgid ""
+"Don't get these two things confused ! They operate at very different levels "
+"or granularity. <emphasis>Pageflow</emphasis>, <emphasis>conversation</"
+"emphasis> and <emphasis>task</emphasis> all refer to a single interaction "
+"with a single user. A business process spans many tasks. Futhermore, the two "
+"applications of jBPM are totally orthogonal. You can use them together or "
+"independently or not at all."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:34
+#, no-c-format
+msgid ""
+"You don't have to know jDPL to use Seam. If you're perfectly happy defining "
+"pageflow using JSF or Seam navigation rules, and if your application is more "
+"data-driven that process-driven, you probably don't need jBPM. But we're "
+"finding that thinking of user interaction in terms of a well-defined "
+"graphical representation is helping us build more robust applications."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:37
+#, no-c-format
+msgid ""
+"Please refer to the jBPM documentation for a more thorough overview of the "
+"sophisticated features that jBPM provides for managing complex business "
+"processes."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:41
+#, no-c-format
+msgid "Pageflow in Seam"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:42
+#, no-c-format
+msgid "There are two ways to define pageflow in Seam:"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:47
+#, no-c-format
+msgid ""
+"Using JSF or Seam navigation rules - the <emphasis>stateless navigation "
+"model</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:52
+#, no-c-format
+msgid "Using jPDL - the <emphasis>stateful navigation model</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:57
+#, no-c-format
+msgid ""
+"Very simple applications will only need the stateless navigation model. Very "
+"complex applications will use both models in different places. Each model "
+"has its strengths and weaknesses!"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:60
+#, no-c-format
+msgid ""
+"In practice, both navigation models have their place, and you'll quickly "
+"learn to recognize when to prefer one model over the other."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:64
+#, no-c-format
+msgid "The two navigation models"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:65
+#, no-c-format
+msgid ""
+"The stateless model defines a mapping from a set of named, logical outcomes "
+"of an event directly to the resulting page of the view. The navigation rules "
+"are entirely oblivious to any state held by the application other than what "
+"page was the source of the event. This means that your action listener "
+"methods must sometimes make decisions about the page flow, since only they "
+"have access to the current state of the application."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:68
+#, no-c-format
+msgid "Here is an example page flow definition using JSF navigation rules:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:71
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"    &lt;from-view-id&gt;/numberGuess.jsp&lt;/from-view-id&gt;\n"
+"        \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;guess&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/numberGuess.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;win&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/win.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"        \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;lose&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/lose.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:72
+#, no-c-format
+msgid ""
+"Here is the same example page flow definition using Seam navigation rules:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:75
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/numberGuess.jsp\"&gt;\n"
+"        \n"
+"    &lt;navigation&gt;\n"
+"        &lt;rule if-outcome=\"guess\"&gt;\n"
+"            &lt;redirect view-id=\"/numberGuess.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"        &lt;rule if-outcome=\"win\"&gt;\n"
+"            &lt;redirect view-id=\"/win.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"        &lt;rule if-outcome=\"lose\"&gt;\n"
+"            &lt;redirect view-id=\"/lose.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:76
+#, no-c-format
+msgid ""
+"If you find navigation rules overly verbose, you can return view ids "
+"directly from your action listener methods:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:79
+#, no-c-format
+msgid ""
+"public String guess() {\n"
+"    if (guess==randomNumber) return \"/win.jsp\";\n"
+"    if (++guessCount==maxGuesses) return \"/lose.jsp\";\n"
+"    return null;\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:80
+#, no-c-format
+msgid ""
+"Note that this results in a redirect. You can even specify parameters to be "
+"used in the redirect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:83
+#, no-c-format
+msgid ""
+"public String search() {\n"
+"    return \"/searchResults.jsp?searchPattern=#{searchAction.searchPattern}"
+"\";\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:84
+#, no-c-format
+msgid ""
+"The stateful model defines a set of transitions between a set of named, "
+"logical application states. In this model, it is possible to express the "
+"flow of any user interaction entirely in the jPDL pageflow definition, and "
+"write action listener methods that are completely unaware of the flow of the "
+"interaction."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:87
+#, no-c-format
+msgid "Here is an example page flow definition using jPDL:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:90
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"numberGuess\"&gt;\n"
+"    \n"
+"   &lt;start-page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"      &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"      &lt;/transition&gt;\n"
+"   &lt;/start-page&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess."
+"correctGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateRemainingGuesses\" expression=\"#{numberGuess."
+"lastGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"lose\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"displayGuess\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"lose\" view-id=\"/lose.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:99
+#, no-c-format
+msgid "There are two things we notice immediately here:"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:104
+#, no-c-format
+msgid ""
+"The JSF/Seam navigation rules are <emphasis>much</emphasis> simpler. "
+"(However, this obscures the fact that the underlying Java code is more "
+"complex.)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:109
+#, no-c-format
+msgid ""
+"The jPDL makes the user interaction immediately understandable, without us "
+"needing to even look at the JSP or Java code."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:114
+#, no-c-format
+msgid ""
+"In addition, the stateful model is more <emphasis>constrained</emphasis>. "
+"For each logical state (each step in the page flow), there are a constrained "
+"set of possible transitions to other states. The stateless model is an "
+"<emphasis>ad hoc</emphasis> model which is suitable to relatively "
+"unconstrained, freeform navigation where the user decides where he/she wants "
+"to go next, not the application."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:117
+#, no-c-format
+msgid ""
+"The stateful/stateless navigation distinction is quite similar to the "
+"traditional view of modal/modeless interaction. Now, Seam applications are "
+"not usually modal in the simple sense of the word - indeed, avoiding "
+"application modal behavior is one of the main reasons for having "
+"conversations! However, Seam applications can be, and often are, modal at "
+"the level of a particular conversation. It is well-known that modal behavior "
+"is something to avoid as much as possible; it is very difficult to predict "
+"the order in which your users are going to want to do things! However, there "
+"is no doubt that the stateful model has its place."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:120
+#, no-c-format
+msgid ""
+"The biggest contrast between the two models is the back-button behavior."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:126
+#, no-c-format
+msgid "Seam and the back button"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:127
+#, no-c-format
+msgid ""
+"When JSF or Seam navigation rules are used, Seam lets the user freely "
+"navigate via the back, forward and refresh buttons. It is the responsibility "
+"of the application to ensure that conversational state remains internally "
+"consistent when this occurs. Experience with the combination of web "
+"application frameworks like Struts or WebWork - that do not support a "
+"conversational model - and stateless component models like EJB stateless "
+"session beans or the Spring framework has taught many developers that this "
+"is close to impossible to do! However, our experience is that in the context "
+"of Seam, where there is a well-defined conversational model, backed by "
+"stateful session beans, it is actually quite straightforward. Usually it is "
+"as simple as combining the use of <literal>no-conversation-view-id</literal> "
+"with null checks at the beginning of action listener methods. We consider "
+"support for freeform navigation to be almost always desirable."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:130
+#, no-c-format
+msgid ""
+"In this case, the <literal>no-conversation-view-id</literal> declaration "
+"goes in <literal>pages.xml</literal>. It tells Seam to redirect to a "
+"different page if a request originates from a page rendered during a "
+"conversation, and that conversation no longer exists:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:133
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/checkout.xhtml\" \n"
+"        no-conversation-view-id=\"/main.xhtml\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:134
+#, no-c-format
+msgid ""
+"On the other hand, in the stateful model, backbuttoning is interpreted as an "
+"undefined transition back to a previous state. Since the stateful model "
+"enforces a defined set of transitions from the current state, back buttoning "
+"is be default disallowed in the stateful model! Seam transparently detects "
+"the use of the back button, and blocks any attempt to perform an action from "
+"a previous, \"stale\" page, and simply redirects the user to the \"current\" "
+"page (and displays a faces message). Whether you consider this a feature or "
+"a limitation of the stateful model depends upon your point of view: as an "
+"application developer, it is a feature; as a user, it might be frustrating! "
+"You can enable backbutton navigation from a particular page node by setting "
+"<literal>back=\"enabled\"</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:137
+#, no-c-format
+msgid ""
+"&lt;page name=\"checkout\" \n"
+"        view-id=\"/checkout.xhtml\" \n"
+"        back=\"enabled\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"checkout\"/&gt;\n"
+"    &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:138
+#, no-c-format
+msgid ""
+"This allows backbuttoning <emphasis>from</emphasis> the <literal>checkout</"
+"literal> state to <emphasis>any previous state!</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:141
+#, no-c-format
+msgid ""
+"Of course, we still need to define what happens if a request originates from "
+"a page rendered during a pageflow, and the conversation with the pageflow no "
+"longer exists. In this case, the <literal>no-conversation-view-id</literal> "
+"declaration goes into the pageflow definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:144
+#, no-c-format
+msgid ""
+"&lt;page name=\"checkout\" \n"
+"        view-id=\"/checkout.xhtml\" \n"
+"        back=\"enabled\" \n"
+"        no-conversation-view-id=\"/main.xhtml\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"checkout\"/&gt;\n"
+"    &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:151
+#, no-c-format
+msgid "Using jPDL pageflows"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:153
+#, no-c-format
+msgid "Installing pageflows"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:154
+#, no-c-format
+msgid ""
+"We need to install the Seam jBPM-related components, and tell them where to "
+"find our pageflow definition. We can specify this Seam configuration in "
+"<literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:157
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:pageflow-definitions&gt;\n"
+"        &lt;value&gt;pageflow.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:pageflow-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:158
+#, no-c-format
+msgid ""
+"The first line installs jBPM, the second points to a jPDL-based pageflow "
+"definition."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:164
+#, no-c-format
+msgid "Starting pageflows"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:165
+#, no-c-format
+msgid ""
+"We \"start\" a jPDL-based pageflow by specifying the name of the process "
+"definition using a <literal>@Begin</literal>, <literal>@BeginTask</literal> "
+"or <literal>@StartTask</literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:168
+#, no-c-format
+msgid ""
+"@Begin(pageflow=\"numberguess\")\n"
+"public void begin() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:169
+#, no-c-format
+msgid "Alternatively we can start a pageflow using pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:172
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"        &lt;begin-conversation pageflow=\"numberguess\"/&gt;\n"
+"    &lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:173
+#, no-c-format
+msgid ""
+"If we are beginning the pageflow during the <literal>RENDER_RESPONSE</"
+"literal> phase&mdash;during a <literal>@Factory</literal> or "
+"<literal>@Create</literal> method, for example&mdash;we consider ourselves "
+"to be already at the page being rendered, and use a <literal>&lt;start-"
+"page&gt;</literal> node as the first node in the pageflow, as in the example "
+"above."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:176
+#, no-c-format
+msgid ""
+"But if the pageflow is begun as the result of an action listener invocation, "
+"the outcome of the action listener determines which is the first page to be "
+"rendered. In this case, we use a <literal>&lt;start-state&gt;</literal> as "
+"the first node in the pageflow, and declare a transition for each possible "
+"outcome:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:179
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"viewEditDocument\"&gt;\n"
+"\n"
+"    &lt;start-state name=\"start\"&gt;\n"
+"        &lt;transition name=\"documentFound\" to=\"displayDocument\"/&gt;\n"
+"        &lt;transition name=\"documentNotFound\" to=\"notFound\"/&gt;\n"
+"    &lt;/start-state&gt;\n"
+"    \n"
+"    &lt;page name=\"displayDocument\" view-id=\"/document.jsp\"&gt;\n"
+"        &lt;transition name=\"edit\" to=\"editDocument\"/&gt;\n"
+"        &lt;transition name=\"done\" to=\"main\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"    \n"
+"    ...\n"
+"    \n"
+"    &lt;page name=\"notFound\" view-id=\"/404.jsp\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"    &lt;/page&gt;\n"
+"    \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:183
+#, no-c-format
+msgid "Page nodes and transitions"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:184
+#, no-c-format
+msgid ""
+"Each <literal>&lt;page&gt;</literal> node represents a state where the "
+"system is waiting for user input:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:187
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"        &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:188
+#, no-c-format
+msgid ""
+"The <literal>view-id</literal> is the JSF view id. The <literal>&lt;redirect/"
+"&gt;</literal> element has the same effect as <literal>&lt;redirect/&gt;</"
+"literal> in a JSF navigation rule: namely, a post-then-redirect behavior, to "
+"overcome problems with the browser's refresh button. (Note that Seam "
+"propagates conversation contexts over these browser redirects. So there is "
+"no need for a Ruby on Rails style \"flash\" construct in Seam!)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:191
+#, no-c-format
+msgid ""
+"The transition name is the name of a JSF outcome triggered by clicking a "
+"command button or command link in <literal>numberGuess.jsp</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:194
+#, no-c-format
+msgid ""
+"&lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"guess\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:195
+#, no-c-format
+msgid ""
+"When the transition is triggered by clicking this button, jBPM will activate "
+"the transition action by calling the <literal>guess()</literal> method of "
+"the <literal>numberGuess</literal> component. Notice that the syntax used "
+"for specifying actions in the jPDL is just a familiar JSF EL expression, and "
+"that the transition action handler is just a method of a Seam component in "
+"the current Seam contexts. So we have exactly the same event model for jBPM "
+"events that we already have for JSF events! (The <emphasis>One Kind of "
+"Stuff</emphasis> principle.)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:198
+#, no-c-format
+msgid ""
+"In the case of a null outcome (for example, a command button with no "
+"<literal>action</literal> defined), Seam will signal the transition with no "
+"name if one exists, or else simply redisplay the page if all transitions "
+"have names. So we could slightly simplify our example pageflow and this "
+"button:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:201
+#, no-c-format
+msgid "&lt;h:commandButton type=\"submit\" value=\"Guess\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:202
+#, no-c-format
+msgid "Would fire the following un-named transition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:205
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"evaluateGuess\"&gt;\n"
+"        &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:206
+#, no-c-format
+msgid ""
+"It is even possible to have the button call an action method, in which case "
+"the action outcome will determine the transition to be taken:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:209
+#, no-c-format
+msgid ""
+"&lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"#{numberGuess."
+"guess}\"/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:210
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;transition name=\"correctGuess\" to=\"win\"/&gt;\n"
+"    &lt;transition name=\"incorrectGuess\" to=\"evaluateGuess\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:211
+#, no-c-format
+msgid ""
+"However, this is considered an inferior style, since it moves responsibility "
+"for controlling the flow out of the pageflow definition and back into the "
+"other components. It is much better to centralize this concern in the "
+"pageflow itself."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:217
+#, no-c-format
+msgid "Controlling the flow"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:218
+#, no-c-format
+msgid ""
+"Usually, we don't need the more powerful features of jPDL when defining "
+"pageflows. We do need the <literal>&lt;decision&gt;</literal> node, however:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:221
+#, no-c-format
+msgid ""
+"&lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess.correctGuess}"
+"\"&gt;\n"
+"    &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"    &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"&lt;/decision&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:222
+#, no-c-format
+msgid ""
+"A decision is made by evaluating a JSF EL expression in the Seam contexts."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:228
+#, no-c-format
+msgid "Ending the flow"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:229
+#, no-c-format
+msgid ""
+"We end the conversation using <literal>&lt;end-conversation&gt;</literal> or "
+"<literal>@End</literal>. (In fact, for readability, use of <emphasis>both</"
+"emphasis> is encouraged.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:232
+#, no-c-format
+msgid ""
+"&lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;end-conversation/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:233
+#, no-c-format
+msgid ""
+"Optionally, we can end a task, specify a jBPM <literal>transition</literal> "
+"name. In this case, Seam will signal the end of the current task in the "
+"overarching business process."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:236
+#, no-c-format
+msgid ""
+"&lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;end-task transition=\"success\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:242
+#, no-c-format
+msgid "Business process management in Seam"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:243
+#, no-c-format
+msgid ""
+"A business process is a well-defined set of tasks that must be performed by "
+"users or software systems according to well-defined rules about "
+"<emphasis>who</emphasis> can perform a task, and <emphasis>when</emphasis> "
+"it should be performed. Seam's jBPM integration makes it easy to display "
+"lists of tasks to users and let them manage their tasks. Seam also lets the "
+"application store state associated with the business process in the "
+"<literal>BUSINESS_PROCESS</literal> context, and have that state made "
+"persistent via jBPM variables."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:246
+#, no-c-format
+msgid ""
+"A simple business process definition looks much the same as a page flow "
+"definition (<emphasis>One Kind of Stuff</emphasis>), except that instead of "
+"<literal>&lt;page&gt;</literal> nodes, we have <literal>&lt;task-node&gt;</"
+"literal> nodes. In a long-running business process, the wait states are "
+"where the system is waiting for some user to log in and perform a task."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:249
+#, no-c-format
+msgid ""
+"&lt;process-definition name=\"todo\"&gt;\n"
+"   \n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"todo\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;task-node name=\"todo\"&gt;\n"
+"      &lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"         &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"      &lt;/task&gt;\n"
+"      &lt;transition to=\"done\"/&gt;\n"
+"   &lt;/task-node&gt;\n"
+"   \n"
+"   &lt;end-state name=\"done\"/&gt;\n"
+"   \n"
+"&lt;/process-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:260
+#, no-c-format
+msgid ""
+"It is perfectly possible that we might have both jPDL business process "
+"definitions and jPDL pageflow definitions in the same project. If so, the "
+"relationship between the two is that a single <literal>&lt;task&gt;</"
+"literal> in a business process corresponds to a whole pageflow <literal>&lt;"
+"pageflow-definition&gt;</literal>"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:265
+#, no-c-format
+msgid "Using jPDL business process definitions"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:267
+#, no-c-format
+msgid "Installing process definitions"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:268
+#, no-c-format
+msgid ""
+"We need to install jBPM, and tell it where to find the business process "
+"definitions:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:271
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;todo.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:275
+#, no-c-format
+msgid "Initializing actor ids"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:276
+#, no-c-format
+msgid ""
+"We always need to know what user is currently logged in. jBPM \"knows\" "
+"users by their <emphasis>actor id</emphasis> and <emphasis>group actor ids</"
+"emphasis>. We specify the current actor ids using the built in Seam "
+"component named <literal>actor</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:279
+#, no-c-format
+msgid ""
+"@In Actor actor;\n"
+"\n"
+"public String login() {\n"
+"    ...\n"
+"    actor.setId( user.getUserName() );\n"
+"    actor.getGroupActorIds().addAll( user.getGroupNames() );\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:283
+#, no-c-format
+msgid "Initiating a business process"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:284
+#, no-c-format
+msgid ""
+"To initiate a business process instance, we use the <literal>@CreateProcess</"
+"literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:287
+#, no-c-format
+msgid ""
+"@CreateProcess(definition=\"todo\")\n"
+"public void createTodo() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:288
+#, no-c-format
+msgid "Alternatively we can initiate a business process using pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:291
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;create-process definition=\"todo\" /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:295
+#, no-c-format
+msgid "Task assignment"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:296
+#, no-c-format
+msgid ""
+"When a process starts, task instances are created. These must be assigned to "
+"users or user groups. We can either hardcode our actor ids, or delegate to a "
+"Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:299
+#, no-c-format
+msgid ""
+"&lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"    &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"&lt;/task&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:300
+#, no-c-format
+msgid ""
+"In this case, we have simply assigned the task to the current user. We can "
+"also assign tasks to a pool:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:303
+#, no-c-format
+msgid ""
+"&lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"    &lt;assignment pooled-actors=\"employees\"/&gt;\n"
+"&lt;/task&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:307
+#, no-c-format
+msgid "Task lists"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:308
+#, no-c-format
+msgid ""
+"Several built-in Seam components make it easy to display task lists. The "
+"<literal>pooledTaskInstanceList</literal> is a list of pooled tasks that "
+"users may assign to themselves:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:311
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{pooledTaskInstanceList}\" var=\"task\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Description&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{task.description}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link action=\"#{pooledTask.assignToCurrentActor}\" value="
+"\"Assign\" taskInstance=\"#{task}\"/&gt;\n"
+"    &lt;/h:column&gt;            \n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:312
+#, no-c-format
+msgid ""
+"Note that instead of <literal>&lt;s:link&gt;</literal> we could have used a "
+"plain JSF <literal>&lt;h:commandLink&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:315
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"#{pooledTask.assignToCurrentActor}\"&gt; \n"
+"    &lt;f:param name=\"taskId\" value=\"#{task.id}\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:316
+#, no-c-format
+msgid ""
+"The <literal>pooledTask</literal> component is a built-in component that "
+"simply assigns the task to the current user."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:319
+#, no-c-format
+msgid ""
+"The <literal>taskInstanceListByType</literal> component includes tasks of a "
+"particular type that are assigned to the current user:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:322
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{taskInstanceListByType['todo']}\" var=\"task"
+"\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Description&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{task.description}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link action=\"#{todoList.start}\" value=\"Start Work\" "
+"taskInstance=\"#{task}\"/&gt;\n"
+"    &lt;/h:column&gt;            \n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:326
+#, no-c-format
+msgid "Performing a task"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:327
+#, no-c-format
+msgid ""
+"To begin work on a task, we use either <literal>@StartTask</literal> or "
+"<literal>@BeginTask</literal> on the listener method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:330
+#, no-c-format
+msgid ""
+"@StartTask\n"
+"public String start() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:331
+#, no-c-format
+msgid "Alternatively we can begin work on a task using pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:334
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;start-task /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:335
+#, no-c-format
+msgid ""
+"These annotations begin a special kind of conversation that has significance "
+"in terms of the overarching business process. Work done by this conversation "
+"has access to state held in the business process context."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:338
+#, no-c-format
+msgid ""
+"If we end the conversation using <literal>@EndTask</literal>, Seam will "
+"signal the completion of the task:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:341
+#, no-c-format
+msgid ""
+"@EndTask(transition=\"completed\")\n"
+"public String completed() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:342
+#, no-c-format
+msgid "Alternatively we can use pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:345
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;end-task transition=\"completed\" /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:346
+#, no-c-format
+msgid ""
+"(Alternatively, we could have used <literal>&lt;end-conversation&gt;</"
+"literal> as shown above.)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:349
+#, no-c-format
+msgid ""
+"At this point, jBPM takes over and continues executing the business process "
+"definition. (In more complex processes, several tasks might need to be "
+"completed before process execution can resume.)"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Jms.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Jms.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Jms.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,477 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Jms.xml:10
+#, no-c-format
+msgid "Asynchronicity and messaging"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:11
+#, no-c-format
+msgid ""
+"Seam makes it very easy to perform work asynchronously from a web request. "
+"When most people think of asynchronicity in Java EE, they think of using "
+"JMS. This is certainly one way to approach the problem in Seam, and is the "
+"right way when you have strict and well-defined quality of service "
+"requirements. Seam makes it easy to send and recieve JMS messages using Seam "
+"components."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:14
+#, no-c-format
+msgid ""
+"But for many usecases, JMS is overkill. Seam layers a simple asynchronous "
+"method and event facility over the EJB 3.0 timer service."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:17
+#, no-c-format
+msgid "Asynchronicity"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:18
+#, no-c-format
+msgid ""
+"Asynchronous events and method calls have the same quality of service "
+"expectations as the container's EJB timer service. If you're not familiar "
+"with the Timer service, don't worry, you don't need to interact with it "
+"directly if you want to use asynchronous methods in Seam."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:21
+#, no-c-format
+msgid ""
+"To use asynchronous methods and events, you need to add the following line "
+"to <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:24
+#, no-c-format
+msgid "&lt;core:dispatcher/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:25
+#, no-c-format
+msgid ""
+"Note that this functionality is not available in environments which do not "
+"support EJB 3.0."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:28
+#, no-c-format
+msgid "Asynchronous methods"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:29
+#, no-c-format
+msgid ""
+"In simplest form, an asynchronous call just lets a method call be processed "
+"asynchronously (in a different thread) from the caller. We usually use an "
+"asynchronous call when we want to return an immediate response to the "
+"client, and let some expensive work be processed in the background. This "
+"pattern works very well in applications which use AJAX, where the client can "
+"automatically poll the server for the result of the work."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:32
+#, no-c-format
+msgid ""
+"For EJB components, we annotate the local interface to specify that a method "
+"is processed asynchronously."
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:35
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public void processPayment(Payment payment);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:36
+#, no-c-format
+msgid ""
+"(For JavaBean components we can annotate the component implementation class "
+"if we like.)"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:39
+#, no-c-format
+msgid "The use of asynchronicity is transparent to the bean class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:42
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"paymentHandler\")\n"
+"public class PaymentHandlerBean implements PaymentHandler\n"
+"{\n"
+"    public void processPayment(Payment payment)\n"
+"    {\n"
+"        //do some work!\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:43
+#, no-c-format
+msgid "And also transparent to the client:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:46
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String pay()\n"
+"    {\n"
+"        paymentHandler.processPayment( new Payment(bill) );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:47
+#, no-c-format
+msgid ""
+"The asynchronous method is processed in a completely new event context and "
+"does not have access to the session or conversation context state of the "
+"caller. However, the business process context <emphasis>is</emphasis> "
+"propagated."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:50
+#, no-c-format
+msgid ""
+"Asynchronous method calls may be scheduled for later execution using the "
+"<literal>@Duration</literal>, <literal>@Expiration</literal> and "
+"<literal>@IntervalDuration</literal> annotations."
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:53
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public void processScheduledPayment(Payment payment, @Expiration Date "
+"date);\n"
+"\n"
+"    @Asynchronous\n"
+"    public void processRecurringPayment(Payment payment, @Expiration Date "
+"date, \n"
+"        @IntervalDuration Long interval)'\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:54
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String schedulePayment()\n"
+"    {\n"
+"        paymentHandler.processScheduledPayment( new Payment(bill), bill."
+"getDueDate() );\n"
+"        return \"success\";\n"
+"    }\n"
+"\n"
+"    public String scheduleRecurringPayment()\n"
+"    {\n"
+"        paymentHandler.processRecurringPayment( new Payment(bill), bill."
+"getDueDate(), ONE_MONTH );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:55
+#, no-c-format
+msgid ""
+"Both client and server may access the <literal>Timer</literal> object "
+"associated with the invocation."
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:58
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public Timer processScheduledPayment(Payment payment, @Expiration Date "
+"date);\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:59
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"paymentHandler\")\n"
+"public class PaymentHandlerBean implements PaymentHandler\n"
+"{\n"
+"    @In Timer timer;\n"
+"    \n"
+"    public Timer processScheduledPayment(Payment payment, @Expiration Date "
+"date)\n"
+"    {\n"
+"        //do some work!\n"
+"        \n"
+"        return timer; //note that return value is completely ignored\n"
+"    }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:60
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String schedulePayment()\n"
+"    {\n"
+"        Timer timer = paymentHandler.processScheduledPayment( new Payment"
+"(bill), bill.getDueDate() );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:61
+#, no-c-format
+msgid "Asynchronous methods cannot return any other value to the caller."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:64
+#, no-c-format
+msgid "Asynchronous events"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:65
+#, no-c-format
+msgid ""
+"Component-driven events may also be asynchronous. To raise an event for "
+"asynchronous processing, simply call the <literal>raiseAsynchronousEvent()</"
+"literal> methods of the <literal>Events</literal> class. To schedule a timed "
+"event, call one of the <literal>raiseTimedEvent()</literal> methods. "
+"Components may observe asynchronous events in the usual way, but remember "
+"that only the business process context is propagated to the asynchronous "
+"thread."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:68
+#, no-c-format
+msgid "Messaging in Seam"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:69
+#, no-c-format
+msgid ""
+"Seam makes it easy to send and receive JMS messages to and from Seam "
+"components."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:72
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:73
+#, no-c-format
+msgid ""
+"To configure Seam's infrastructure for sending JMS messages, you need to "
+"tell Seam about any topics and queues you want to send messages to, and also "
+"tell Seam where to find the <literal>QueueConnectionFactory</literal> and/or "
+"<literal>TopicConnectionFactory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:76
+#, no-c-format
+msgid ""
+"Seam defaults to using <literal>UIL2ConnectionFactory</literal> which is the "
+"usual connection factory for use with JBossMQ. If you are using some other "
+"JMS provider, you need to set one or both of <literal>queueConnection."
+"queueConnectionFactoryJndiName</literal> and <literal>topicConnection."
+"topicConnectionFactoryJndiName</literal> in <literal>seam.properties</"
+"literal>, <literal>web.xml</literal> or <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:79
+#, no-c-format
+msgid ""
+"You also need to list topics and queues in <literal>components.xml</literal> "
+"to install Seam managed <literal>TopicPublisher</literal>s and "
+"<literal>QueueSender</literal>s:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:82
+#, no-c-format
+msgid ""
+"&lt;jms:managed-topic-publisher name=\"stockTickerPublisher\" auto-create="
+"\"true\" \n"
+"    topic-jndi-name=\"topic/stockTickerTopic\"/&gt;\n"
+"\n"
+"&lt;jms:managed-queue-sender name=\"paymentQueueSender\" auto-create=\"true"
+"\" \n"
+"    queue-jndi-name=\"queue/paymentQueue\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:83
+#, no-c-format
+msgid "Sending messages"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:84
+#, no-c-format
+msgid ""
+"Now, you can inject a JMS <literal>TopicPublisher</literal> and "
+"<literal>TopicSession</literal> into any component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:87
+#, no-c-format
+msgid ""
+"@In \n"
+"private TopicPublisher stockTickerPublisher;   \n"
+"@In \n"
+"private TopicSession topicSession;\n"
+"\n"
+"public void publish(StockPrice price) {\n"
+"      try\n"
+"      {\n"
+"         topicPublisher.publish( topicSession.createObjectMessage(price) );\n"
+"      } \n"
+"      catch (Exception ex)\n"
+"      {\n"
+"         throw new RuntimeException(ex);\n"
+"      } \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:88
+#, no-c-format
+msgid "Or, for working with a queue:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:91
+#, no-c-format
+msgid ""
+"@In\n"
+"private QueueSender paymentQueueSender;   \n"
+"@In\n"
+"private QueueSession queueSession;\n"
+"\n"
+"public void publish(Payment payment) {\n"
+"      try\n"
+"      {\n"
+"         paymentQueueSender.send( queueSession.createObjectMessage"
+"(payment) );\n"
+"      } \n"
+"      catch (Exception ex)\n"
+"      {\n"
+"         throw new RuntimeException(ex);\n"
+"      } \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:92
+#, no-c-format
+msgid "Receiving messages using a message-driven bean"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:93
+#, no-c-format
+msgid ""
+"You can process messages using any EJB3 message driven bean. Message-driven "
+"beans may even be Seam components, in which case it is possible to inject "
+"other event and application scoped Seam components."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:96
+#, no-c-format
+msgid "Receiving messages in the client"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:97
+#, no-c-format
+msgid ""
+"Seam Remoting lets you subscribe to a JMS topic from client-side JavaScript. "
+"This is described in the next chapter."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Mail.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Mail.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Mail.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,985 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Mail.xml:10
+#, no-c-format
+msgid "Email"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:11
+#, no-c-format
+msgid ""
+"Seam now includes an optional components for templating and sending emails."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:14
+#, no-c-format
+msgid ""
+"Email support is provided by <literal>jboss-seam-mail.jar</literal>. This "
+"JAR contains the mail JSF controls, which are used to construct emails, and "
+"the <literal>mailSession</literal> manager component."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:17
+#, no-c-format
+msgid ""
+"The examples/mail project contains an example of the email support in "
+"action. It demonstrates proper packaging, and it contains a number of "
+"example that demonstrate the key features currently supported."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:21
+#, no-c-format
+msgid "Creating a message"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:22
+#, no-c-format
+msgid ""
+"You don't need to learn a whole new templating language to use Seam "
+"Mail&mdash;an email is just facelet!"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:25
+#, no-c-format
+msgid ""
+"&lt;m:message xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"    xmlns:m=\"http://jboss.com/products/seam/mail\"\n"
+"    xmlns:h=\"http://java.sun.com/jsf/html\"&gt;\n"
+"  \n"
+"    &lt;m:from name=\"Peter\" address=\"peter at example.com\" /&gt;\n"
+"    &lt;m:to name=\"#{person.firstname} #{person.lastname}\"&gt;#{person."
+"address}&lt;/m:to&gt;\n"
+"    &lt;m:subject&gt;Try out Seam!&lt;/m:subject&gt;\n"
+"    \n"
+"    &lt;m:body&gt;\n"
+"        &lt;p&gt;&lt;h:outputText value=\"Dear #{person.firstname}\" /&gt;,"
+"&lt;/p&gt;\n"
+"        &lt;p&gt;You can try out Seam by visiting \n"
+"        &lt;a href=\"http://labs.jboss.com/jbossseam\"&gt;http://labs.jboss."
+"com/jbossseam&lt;/a&gt;.&lt;/p&gt;\n"
+"        &lt;p&gt;Regards,&lt;/p&gt;\n"
+"        &lt;p&gt;Peter&lt;/p&gt;\n"
+"    &lt;/m:body&gt;\n"
+"    \n"
+"&lt;/m:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:26
+#, no-c-format
+msgid ""
+"The <literal>&lt;m:message&gt;</literal> tag wraps the whole message, and "
+"tells Seam to start rendering an email. Inside the <literal>&lt;m:message&gt;"
+"</literal> tag we use an <literal>&lt;m:from&gt;</literal> tag to set who "
+"the message is from, a <literal>&lt;m:to&gt;</literal> tag to specify a "
+"sender (notice how we use EL as we would in a normal facelet), and a "
+"<literal>&lt;m:subject&gt;</literal> tag."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:29
+#, no-c-format
+msgid ""
+"The <literal>&lt;m:body&gt;</literal> tag wraps the body of the email. You "
+"can use regular HTML tags inside the body as well as JSF components."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:32
+#, no-c-format
+msgid ""
+"So, now you have your email template, how do you go about sending it? Well, "
+"at the end of rendering the <literal>m:message</literal> the "
+"<literal>mailSession</literal> is called to send the email, so all you have "
+"to do is ask Seam to render the view:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:35
+#, no-c-format
+msgid ""
+"@In(create=true)\n"
+"private Renderer renderer;\n"
+"   \n"
+"public void send() {\n"
+"    try {\n"
+"       renderer.render(\"/simple.xhtml\");\n"
+"       facesMessages.add(\"Email sent successfully\");\n"
+"   } \n"
+"   catch (Exception e) {\n"
+"       facesMessages.add(\"Email sending failed: \" + e.getMessage());\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:36
+#, no-c-format
+msgid ""
+"If, for example, you entered an invalid email address, then an exception "
+"would be thrown, which is caught and then displayed to the user."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:40
+#, no-c-format
+msgid "Attachments"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:41
+#, no-c-format
+msgid ""
+"Seam makes it easy to attach files to an email. It supports most of the "
+"standard java types used when working with files."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:44
+#, no-c-format
+msgid "If you wanted to email the <literal>jboss-seam-mail.jar</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:47
+#, no-c-format
+msgid "&lt;m:attachment value=\"/WEB-INF/lib/jboss-seam-mail.jar\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:48
+#, no-c-format
+msgid ""
+"Seam will load the file from the classpath, and attach it to the email. By "
+"default it would be attached as <literal>jboss-seam-mail.jar</literal>; if "
+"you wanted it to have another name you would just add the <literal>fileName</"
+"literal> attribute:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:51
+#, no-c-format
+msgid ""
+"&lt;m:attachment value=\"/WEB-INF/lib/jboss-seam-mail.jar\" fileName=\"this-"
+"is-so-cool.jar\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:52
+#, no-c-format
+msgid ""
+"You could also attach a <literal>java.io.File</literal>, a <literal>java.net."
+"URL</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:55
+#, no-c-format
+msgid "&lt;m:attachment value=\"#{numbers}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:56
+#, no-c-format
+msgid ""
+"Or a <literal>byte[]</literal> or a <literal>java.io.InputStream</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:59
+#, no-c-format
+msgid ""
+"&lt;m:attachment value=\"#{person.photo}\" contentType=\"image/png\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:60
+#, no-c-format
+msgid ""
+"You'll notice that for a <literal>byte[]</literal> and a <literal>java.io."
+"InputStream</literal> you need to specify the MIME type of the attachment "
+"(as that information is not carried as part of the file)."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:63
+#, no-c-format
+msgid ""
+"And it gets even better, you can attach a Seam generated PDF, or any "
+"standard JSF view, just by wrapping a <literal>&lt;m:attachment&gt;</"
+"literal> around the normal tags you would use:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:66
+#, no-c-format
+msgid ""
+"&lt;m:attachment fileName=\"tiny.pdf\"&gt;\n"
+"    &lt;p:"
+"document&gt;                                                      \n"
+"        A very tiny "
+"PDF                                                                                                \n"
+"    &lt;/p:document&gt;\n"
+"&lt;/m:attachment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:67
+#, no-c-format
+msgid ""
+"If you had a set of files you wanted to attach (for example a set of "
+"pictures loaded from a database) you can just use a <literal>&lt;ui:"
+"repeat&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:70
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{people}\" var=\"person\"&gt;\n"
+"    &lt;m:attachment value=\"#{person.photo}\" contentType=\"image/jpeg\"\n"
+"    fileName=\"#{person.firstname}_#{person.lastname}.jpg\"/&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:74
+#, no-c-format
+msgid "HTML/Text alternative part"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:75
+#, no-c-format
+msgid ""
+"Whilst most mail readers nowadays support HTML, some don't, so you can add a "
+"plain text alternative to your email body:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:78
+#, no-c-format
+msgid ""
+"&lt;m:body&gt;\n"
+"    &lt;f:facet name=\"alternative\"&gt;Sorry, your email reader can't show "
+"our fancy email, \n"
+"please go to http://labs.jboss.com/jbossseam to explore Seam.&lt;/f:"
+"facet&gt;\n"
+"&lt;/m:body&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:82
+#, no-c-format
+msgid "Multiple recipients"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:83
+#, no-c-format
+msgid ""
+"Often you'll want to send an email to a group of recipients (for example "
+"your users). All of the recipient mail tags can be placed inside a "
+"<literal>&lt;ui:repeat&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:86
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{allUsers} var=\"user\"&gt;\n"
+"    &lt;m:to name=\"#{user.firstname} #{user.lastname}\" address=\"#{user."
+"emailAddress}\" /&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:90
+#, no-c-format
+msgid "Multiple messages"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:91
+#, no-c-format
+msgid ""
+"Sometimes, however, you need to send a slightly different message to each "
+"recipient (e.g. a password reset). The best way to do this is to place the "
+"whole message inside a <literal>&lt;ui:repeat&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:94
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{people}\" var=\"p\"&gt;\n"
+"    &lt;m:message&gt;\n"
+"        &lt;m:from name=\"#{person.firstname} #{person.lastname}\"&gt;#"
+"{person.address}&lt;/m:from&gt;\n"
+"        &lt;m:to name=\"#{p.firstname}\"&gt;#{p.address}&lt;/m:to&gt;\n"
+"            ...\n"
+"    &lt;/m:message&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:98
+#, no-c-format
+msgid "Templating"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:99
+#, no-c-format
+msgid ""
+"The mail templating example shows that facelets templating Just Works with "
+"the Seam mail tags."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:102
+#, no-c-format
+msgid "Our <literal>template.xhtml</literal> contains:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:105
+#, no-c-format
+msgid ""
+"&lt;m:message&gt;\n"
+"   &lt;m:from name=\"Seam\" address=\"do-not-reply at jboss.com\" /&gt;\n"
+"   &lt;m:to name=\"#{person.firstname} #{person.lastname}\"&gt;#{person."
+"address}&lt;/m:to&gt;\n"
+"   &lt;m:subject&gt;#{subject}&lt;/m:subject&gt;\n"
+"   &lt;m:body&gt;\n"
+"       &lt;html&gt;\n"
+"           &lt;body&gt;\n"
+"               &lt;ui:insert name=\"body\"&gt;This is the default body, "
+"specified by the template.\n"
+"               &lt;/ui:insert&gt;\n"
+"           &lt;/body&gt;\n"
+"       &lt;/html&gt;\n"
+"   &lt;/m:body&gt;\n"
+"&lt;/m:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:106
+#, no-c-format
+msgid "Our <literal>templating.xhtml</literal> contains:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:109
+#, no-c-format
+msgid ""
+"&lt;ui:param name=\"subject\" value=\"Templating with Seam Mail\"/&gt;\n"
+"&lt;ui:define name=\"body\"&gt;\n"
+"    &lt;p&gt;This example demonstrates that you can easily use &lt;i&gt;"
+"facelets templating&lt;/i&gt; in email!&lt;/p&gt;\n"
+"&lt;/ui:define&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:113
+#, no-c-format
+msgid "Other Headers"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:114
+#, no-c-format
+msgid ""
+"Sometimes you'll want to add other headers to your email. Seam provides "
+"support for some (see <xref linkend=\"Email-Tags\"/>). For example, we can "
+"set the importance of the email, and ask for a read receipt:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:117
+#, no-c-format
+msgid ""
+"&lt;m:message xmlns:m=\"http://jboss.com/products/seam/mail\"\n"
+"           importance=\"low\"\n"
+"           requestReadReceipt=\"true\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:118
+#, no-c-format
+msgid ""
+"Otherise you can add any header to the message using the <literal>&lt;m:"
+"header&gt;</literal> tag:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:121
+#, no-c-format
+msgid "&lt;m:header name=\"X-Sent-From\" value=\"JBoss Seam\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:127
+#, no-c-format
+msgid "Receiving emails"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:128
+#, no-c-format
+msgid ""
+"If you are using EJB then you can use a MDB (Message Driven Bean) to receive "
+"email. Seam comes with an improved version of <literal>mail-ra.rar</literal> "
+"as distributed in JBoss AS; until the improvements make there way into a "
+"released version of JBoss AS, replacing the default <literal>rar</literal> "
+"with the one distributed with Seam is recommended."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:131
+#, no-c-format
+msgid "You can configure it like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:134
+#, no-c-format
+msgid ""
+"@MessageDriven(activationConfig={\n"
+"         @ActivationConfigProperty(propertyName=\"mailServer\", "
+"propertyValue=\"localhost\"),\n"
+"         @ActivationConfigProperty(propertyName=\"mailFolder\", "
+"propertyValue=\"INBOX\"),\n"
+"         @ActivationConfigProperty(propertyName=\"storeProtocol\", "
+"propertyValue=\"pop3\"),\n"
+"         @ActivationConfigProperty(propertyName=\"userName\", propertyValue="
+"\"seam\"),\n"
+"         @ActivationConfigProperty(propertyName=\"password\", propertyValue="
+"\"seam\")\n"
+"})\n"
+"@ResourceAdapter(\"mail-ra.rar\")\n"
+"@Name(\"mailListener\")\n"
+"public class MailListenerMDB implements MailListener {\n"
+"\n"
+"   @In(create=true)\n"
+"   private OrderProcessor orderProcessor;\n"
+"\n"
+"   public void onMessage(Message message) {\n"
+"      // Process the message\n"
+"      orderProcessor.process(message.getSubject());\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:135
+#, no-c-format
+msgid ""
+"Each message received will cause <literal>onMessage(Message message)</"
+"literal> to be called. Most seam annotations will work inside a MDB but you "
+"musn't access the persistence context."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:138
+#, no-c-format
+msgid ""
+"You can find more information on the default <literal>mail-ra.rar</literal> "
+"at <ulink url=\"http://wiki.jboss.org/wiki/Wiki.jsp?page=InboundJavaMail"
+"\">http://wiki.jboss.org/wiki/Wiki.jsp?page=InboundJavaMail</ulink>. The "
+"version distributed with Seam also includes a <literal>debug</literal> "
+"property to enable JavaMail debugging, a <literal>flush</literal> property "
+"(by default true) to disable flushing a <literal>POP3</literal> mailbox "
+"after successfullying delivering a message to your MDB and a <literal>port</"
+"literal> property to override the default TCP port. Beware that the api for "
+"this may be altered as changes make there way into JBoss AS."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:141
+#, no-c-format
+msgid ""
+"If you aren't using JBoss AS you can still use <literal>mail-ra.rar</"
+"literal> (included with Seam in the mail directory), or you may find your "
+"application server includes a similar adapter."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:147
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:148
+#, no-c-format
+msgid ""
+"To include Email support in your application, include <literal>jboss-seam-"
+"mail.jar</literal> in your WEB-INF/lib directory. If you are using JBoss AS "
+"there is no further configuration needed to use Seam's email support. "
+"Otherwise you need to make sure you have the JavaMail API, an implementation "
+"of the JavaMail API present (the API and impl used in JBoss AS are "
+"distributed with seam as <literal>lib/mail.jar</literal>), and a copy of the "
+"Java Activation Framework (distributed with seam as <literal>lib/activation."
+"jar</literal>."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:151
+#, no-c-format
+msgid ""
+"The Seam Email module requires the use of Facelets as the view technology. "
+"Future versions of the library may also support the use of JSP. "
+"Additionally, it requires the use of the seam-ui package."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:154
+#, no-c-format
+msgid ""
+"The <literal>mailSession</literal> component uses JavaMail to talk to a "
+"'real' SMTP server."
+msgstr ""
+
+#. Tag: literal
+#: Mail.xml:158
+#, no-c-format
+msgid "mailSession"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:159
+#, no-c-format
+msgid ""
+"A JavaMail Session may be available via a JNDI lookup if you are working in "
+"an JEE environment or you can use a Seam configured Session."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:162
+#, no-c-format
+msgid ""
+"The mailSession component's properties are described in more detail in <xref "
+"linkend=\"Built_in_Seam_components-Mail_related_components\"/>."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:166
+#, no-c-format
+msgid "JNDI lookup in JBoss AS"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:167
+#, no-c-format
+msgid ""
+"The JBossAS <literal>deploy/mail-service.xml</literal> configures a JavaMail "
+"session binding into JNDI. The default service configuration will need "
+"altering for your network. <ulink url=\"http://wiki.jboss.org/wiki/Wiki.jsp?"
+"page=JavaMail\">http://wiki.jboss.org/wiki/Wiki.jsp?page=JavaMail</ulink> "
+"describes the service in more detail."
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:170
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"        xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"        xmlns:mail=\"http://jboss.com/products/seam/mail\"&gt;\n"
+"        \n"
+"    &lt;mail:mail-session session-jndi-name=\"java:/Mail\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:171
+#, no-c-format
+msgid ""
+"Here we tell Seam to get the mail session bound to <literal>java:/Mail</"
+"literal> from JNDI."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:177
+#, no-c-format
+msgid "Seam configured Session"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:178
+#, no-c-format
+msgid ""
+"A mail session can be configured via <literal>components.xml</literal>. Here "
+"we tell Seam to use <literal>smtp.example.com</literal> as the smtp server,"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:181
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"        xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"        xmlns:mail=\"http://jboss.com/products/seam/mail\"&gt;\n"
+"        \n"
+"    &lt;mail:mail-session host=\"smtp.example.com\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:189
+#, no-c-format
+msgid "Tags"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:190
+#, no-c-format
+msgid ""
+"Emails are generated using tags in the <literal>http://jboss.com/products/"
+"seam/mail</literal> namespace. Documents should always have the "
+"<literal>message</literal> tag at the root of the message. The message tag "
+"prepares Seam to generate an email."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:193
+#, no-c-format
+msgid ""
+"The standard templating tags of facelets can be used as normal. Inside the "
+"body you can use any JSF tag which doesn't require access to external "
+"resources (stylesheets, javascript)."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:198
+#, no-c-format
+msgid "&lt;m:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:200
+#, no-c-format
+msgid "Root tag of a mail message"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:205
+#, no-c-format
+msgid ""
+"<literal>importance</literal> &mdash; low, normal or high. By default "
+"normal, this sets the importance of the mail message."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:210
+#, no-c-format
+msgid ""
+"<literal>precedence</literal> &mdash; sets the precedence of the message (e."
+"g. bulk)."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:215
+#, no-c-format
+msgid ""
+"<literal>requestReadReceipt</literal> &mdash; by default false, if set, a "
+"read receipt will be request will be added, with the read receipt being sent "
+"to the <literal>From:</literal> address."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:220
+#, no-c-format
+msgid ""
+"<literal>urlBase</literal> &mdash; If set, the value is prepended to the "
+"<literal>requestContextPath</literal> allowing you to use components such as "
+"<literal>&lt;h:graphicImage&gt;</literal> in your emails."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:228
+#, no-c-format
+msgid "&lt;m:from&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:230
+#, no-c-format
+msgid ""
+"Set's the From: address for the email. You can only have one of these per "
+"email."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:235
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the name the email should come from."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:240 Mail.xml:255
+#, no-c-format
+msgid ""
+"<literal>address</literal> &mdash; the email address the email should come "
+"from."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:248
+#, no-c-format
+msgid "&lt;m:replyTo&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:250
+#, no-c-format
+msgid ""
+"Set's the Reply-to: address for the email. You can only have one of these "
+"per email."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:263
+#, no-c-format
+msgid "&lt;m:to&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:265
+#, no-c-format
+msgid ""
+"Add a recipient to the email. Use multiple &lt;m:to&gt; tags for multiple "
+"recipients. This tag can be safely placed inside a repeat tag such as &lt;ui:"
+"repeat&gt;."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:270 Mail.xml:290 Mail.xml:310
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the name of the recipient."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:275 Mail.xml:295 Mail.xml:315
+#, no-c-format
+msgid "<literal>address</literal> &mdash; the email address of the recipient."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:283
+#, no-c-format
+msgid "&lt;m:cc&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:285
+#, no-c-format
+msgid ""
+"Add a cc recipient to the email. Use multiple &lt;m:cc&gt; tags for multiple "
+"ccs. This tag can be safely placed inside a repeat tag such as &lt;ui:"
+"repeat&gt;."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:303
+#, no-c-format
+msgid "&lt;m:bcc&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:305
+#, no-c-format
+msgid ""
+"Add a bcc recipient to the email. Use multiple &lt;m:bcc&gt; tags for "
+"multiple bccs. This tag can be safely placed inside a repeat tag such as &lt;"
+"ui:repeat&gt;."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:323
+#, no-c-format
+msgid "&lt;m:header&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:325
+#, no-c-format
+msgid ""
+"Add a header to the email (e.g. <literal>X-Sent-From: JBoss Seam</literal>"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:330
+#, no-c-format
+msgid ""
+"<literal>name</literal> &mdash; The name of the header to add (e.g. "
+"<literal>X-Sent-From</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:335
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; The value of the header to add (e.g. "
+"<literal>JBoss Seam</literal>)."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:343
+#, no-c-format
+msgid "&lt;m:attachment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:345
+#, no-c-format
+msgid "Add an attachment to the email."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:350
+#, no-c-format
+msgid "<literal>value</literal> &mdash; The file to attach:"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:355
+#, no-c-format
+msgid ""
+"<literal>String</literal> &mdash; A <literal>String</literal> is interpreted "
+"as a path to file within the classpath"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:360
+#, no-c-format
+msgid ""
+"<literal>java.io.File</literal> &mdash; An EL expression can reference a "
+"<literal>File</literal> object"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:365
+#, no-c-format
+msgid ""
+"<literal>java.net.URL</literal> &mdash; An EL expression can reference a "
+"<literal>URL</literal> object"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:370
+#, no-c-format
+msgid ""
+"<literal>java.io.InputStream</literal> &mdash; An EL expression can "
+"reference an <literal>InputStream</literal>. In this case both a "
+"<literal>fileName</literal> and a <literal>contentType</literal> must be "
+"specified."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:375
+#, no-c-format
+msgid ""
+"<literal>byte[]</literal> &mdash; An EL expression can reference an "
+"<literal>byte[]</literal>. In this case both a <literal>fileName</literal> "
+"and a <literal>contentType</literal> must be specified."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:380
+#, no-c-format
+msgid "If the value attribute is ommitted:"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:385
+#, no-c-format
+msgid ""
+"If this tag contains a <literal>&lt;p:document&gt;</literal> tag, the "
+"document described will be generated and attached to the email. A "
+"<literal>fileName</literal> should be specfied."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:390
+#, no-c-format
+msgid ""
+"If this tag contains other JSF tags a HTML document will be generated from "
+"them and attached to the email. A <literal>fileName</literal> should be "
+"specfied."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:397
+#, no-c-format
+msgid ""
+"<literal>fileName</literal> &mdash; Specify the file name to use for the "
+"attached file."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:402
+#, no-c-format
+msgid ""
+"<literal>contentType</literal> &mdash; Specify the MIME type of the attached "
+"file"
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:410
+#, no-c-format
+msgid "&lt;m:subject&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:412
+#, no-c-format
+msgid "Set's the subject for the email."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:418
+#, no-c-format
+msgid "&lt;m:body&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:420
+#, no-c-format
+msgid ""
+"Set's the body for the email. Supports an <literal>alternative</literal> "
+"facet which, if an HTML email is generated can contain alternative text for "
+"a mail reader which doesn't support html."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:425
+#, no-c-format
+msgid ""
+"<literal>type</literal> &mdash; If set to <literal>plain</literal> then a "
+"plain text email will be generated otherwise an HTML email is generated."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Persistence.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Persistence.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Persistence.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,750 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Persistence.xml:10
+#, no-c-format
+msgid "Seam and Object/Relational Mapping"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:11
+#, no-c-format
+msgid ""
+"Seam provides extensive support for the two most popular persistence "
+"architectures for Java: Hibernate3, and the Java Persistence API introduced "
+"with EJB 3.0. Seam's unique state-management architecture allows the most "
+"sophisticated ORM integration of any web application framework."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:15
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:16
+#, no-c-format
+msgid ""
+"Seam grew out of the frustration of the Hibernate team with the "
+"statelessness typical of the previous generation of Java application "
+"architectures. The state management architecture of Seam was originally "
+"designed to solve problems relating to persistence&mdash;in particular "
+"problems associated with <emphasis>optimistic transaction processing</"
+"emphasis>. Scalable online applications always use optimistic transactions. "
+"An atomic (database/JTA) level transaction should not span a user "
+"interaction unless the application is designed to support only a very small "
+"number of concurrent clients. But almost all interesting work involves first "
+"displaying data to a user, and then, slightly later, updating the same data. "
+"So Hibernate was designed to support the idea of a persistence context which "
+"spanned an optimistic transaction."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:19
+#, no-c-format
+msgid ""
+"Unfortunately, the so-called \"stateless\" architectures that preceded Seam "
+"and EJB 3.0 had no construct for representing an optimistic transaction. So, "
+"instead, these architectures provided persistence contexts scoped to the "
+"atomic transaction. Of course, this resulted in many problems for users, and "
+"is the cause of the number one user complaint about Hibernate: the dreaded "
+"<literal>LazyInitializationException</literal>. What we need is a construct "
+"for representing an optimistic transaction in the application tier."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:22
+#, no-c-format
+msgid ""
+"EJB 3.0 recognizes this problem, and introduces the idea of a stateful "
+"component (a stateful session bean) with an <emphasis>extended persistence "
+"context</emphasis> scoped to the lifetime of the component. This is a "
+"partial solution to the problem (and is a useful construct in and of itself) "
+"however there are two problems:"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:27
+#, no-c-format
+msgid ""
+"The lifecycle of the stateful session bean must be managed manually via code "
+"in the web tier (it turns out that this is a subtle problem and much more "
+"difficult in practice than it sounds)."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:32
+#, no-c-format
+msgid ""
+"Propagation of the persistence context between stateful components in the "
+"same optimistic transaction is possible, but tricky."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:37
+#, no-c-format
+msgid ""
+"Seam solves the first problem by providing conversations, and stateful "
+"session bean components scoped to the conversation. (Most conversations "
+"actually represent optimistic transactions in the data layer.) This is "
+"sufficient for many simple applications (such as the Seam booking demo) "
+"where persistence context propagation is not needed. For more complex "
+"applications, with many loosly-interacting components in each conversation, "
+"propagation of the persistence context across components becomes an "
+"important issue. So Seam extends the persistence context management model of "
+"EJB 3.0, to provide conversation-scoped extended persistence contexts."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:43
+#, no-c-format
+msgid "Seam managed transactions"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:44
+#, no-c-format
+msgid ""
+"EJB session beans feature declarative transaction management. The EJB "
+"container is able to start a transaction transparently when the bean is "
+"invoked, and end it when the invocation ends. If we write a session bean "
+"method that acts as a JSF action listener, we can do all the work associated "
+"with that action in one transaction, and be sure that it is committed or "
+"rolled back when we finish processing the action. This is a great feature, "
+"and all that is needed by some Seam applications."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:47
+#, no-c-format
+msgid ""
+"However, there is a problem with this approach. A Seam application may not "
+"perform all data access for a request from a single method call to a session "
+"bean."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:52
+#, no-c-format
+msgid ""
+"The request might require processing by several loosly-coupled components, "
+"each of which is called independently from the web layer. It is common to "
+"see several or even many calls per request from the web layer to EJB "
+"components in Seam."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:57
+#, no-c-format
+msgid "Rendering of the view might require lazy fetching of associations."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:62
+#, no-c-format
+msgid ""
+"The more transactions per request, the more likely we are to encounter "
+"atomicity and isolation problems when our application is processing many "
+"concurrent requests. Certainly, all write operations should occur in the "
+"same transaction!"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:65
+#, no-c-format
+msgid ""
+"Hibernate users developed the <emphasis>\"open session in view\"</emphasis> "
+"pattern to work around this problem. In the Hibernate community, \"open "
+"session in view\" was historically even more important because frameworks "
+"like Spring use transaction-scoped persistence contexts. So rendering the "
+"view would cause <literal>LazyInitializationException</literal>s when "
+"unfetched associations were accessed."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:68
+#, no-c-format
+msgid ""
+"This pattern is usually implemented as a single transaction which spans the "
+"entire request. There are several problems with this implementation, the "
+"most serious being that we can never be sure that a transaction is "
+"successful until we commit it&mdash;but by the time the \"open session in "
+"view\" transaction is committed, the view is fully rendered, and the "
+"rendered response may already have been flushed to the client. How can we "
+"notify the user that their transaction was unsuccessful?"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:71
+#, no-c-format
+msgid ""
+"Seam solves both the transaction isolation problem and the association "
+"fetching problem, while working around the problems with \"open session in "
+"view\". The solution comes in two parts:"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:76
+#, no-c-format
+msgid ""
+"use an extended persistence context that is scoped to the conversation, "
+"instead of to the transaction"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:81
+#, no-c-format
+msgid ""
+"use two transactions per request; the first spans the beginning of the "
+"update model values phase until the end of the invoke application phase; the "
+"second spans the render response phase"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:86
+#, no-c-format
+msgid ""
+"In the next section, we'll tell you how to set up a conversation-scope "
+"persistence context. But first we need to tell you how to enable Seam "
+"transaction management. Note that you can use conversation-scoped "
+"persistence contexts without Seam transaction management, and there are good "
+"reasons to use Seam transaction management even when you're not using Seam-"
+"managed persistence contexts. However, the two facilities were designed to "
+"work together, and work best when used together."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:90
+#, no-c-format
+msgid "Enabling Seam-managed transactions"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:91
+#, no-c-format
+msgid ""
+"To make use of <emphasis>Seam managed transactions</emphasis>, you need to "
+"use <literal>TransactionalSeamPhaseListener</literal> in place of "
+"<literal>SeamPhaseListener</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:94
+#, no-c-format
+msgid ""
+"&lt;lifecycle&gt;\n"
+"     &lt;phase-listener&gt;\n"
+"        org.jboss.seam.jsf.TransactionalSeamPhaseListener\n"
+"    &lt;/phase-listener&gt;\n"
+"&lt;/lifecycle&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:95
+#, no-c-format
+msgid ""
+"Seam transaction management is useful even if you're using EJB 3.0 container-"
+"managed persistence contexts. But it is especially useful if you use Seam "
+"outside a Java EE 5 environment, or in any other case where you would use a "
+"Seam-managed persistence context."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:103
+#, no-c-format
+msgid "Seam-managed persistence contexts"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:104
+#, no-c-format
+msgid ""
+"If you're using Seam outside of a Java EE 5 environment, you can't rely upon "
+"the container to manage the persistence context lifecycle for you. Even if "
+"you are in an EE 5 environment, you might have a complex application with "
+"many loosly coupled components that collaborate together in the scope of a "
+"single conversation, and in this case you might find that propagation of the "
+"persistence context between component is tricky and error-prone."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:107
+#, no-c-format
+msgid ""
+"In either case, you'll need to use a <emphasis>managed persistence context</"
+"emphasis> (for JPA) or a <emphasis>managed session</emphasis> (for "
+"Hibernate) in your components. A Seam-managed persistence context is just a "
+"built-in Seam component that manages an instance of <literal>EntityManager</"
+"literal> or <literal>Session</literal> in the conversation context. You can "
+"inject it with <literal>@In</literal>."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:110
+#, no-c-format
+msgid ""
+"Seam-managed persistence contexts are extremely efficient in a clustered "
+"environment. Seam is able to perform an optimization that EJB 3.0 "
+"specification does not allow containers to use for container-managed "
+"extended persistence contexts. Seam supports transparent failover of "
+"extended persisence contexts, without the need to replicate any persistence "
+"context state between nodes. (We hope to fix this oversight in the next "
+"revision of the EJB spec.)"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:114
+#, no-c-format
+msgid "Using a Seam-managed persistence context with JPA"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:115
+#, no-c-format
+msgid ""
+"Configuring a managed persistence context is easy. In <literal>components."
+"xml</literal>, we can write:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:118
+#, no-c-format
+msgid ""
+"&lt;core:managed-persistence-context name=\"bookingDatabase\" \n"
+"                           auto-create=\"true\"\n"
+"            persistence-unit-jndi-name=\"java:/EntityManagerFactories/"
+"bookingData\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:119
+#, no-c-format
+msgid ""
+"This configuration creates a conversation-scoped Seam component named "
+"<literal>bookingDatabase</literal> that manages the lifecycle of "
+"<literal>EntityManager</literal> instances for the persistence unit "
+"(<literal>EntityManagerFactory</literal> instance) with JNDI name "
+"<literal>java:/EntityManagerFactories/bookingData</literal>."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:122
+#, no-c-format
+msgid ""
+"Of course, you need to make sure that you have bound the "
+"<literal>EntityManagerFactory</literal> into JNDI. In JBoss, you can do this "
+"by adding the following property setting to <literal>persistence.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:125
+#, no-c-format
+msgid ""
+"&lt;property name=\"jboss.entity.manager.factory.jndi.name\" \n"
+"          value=\"java:/EntityManagerFactories/bookingData\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:126
+#, no-c-format
+msgid "Now we can have our <literal>EntityManager</literal> injected using:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:129
+#, no-c-format
+msgid "@In EntityManager bookingDatabase;"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:133
+#, no-c-format
+msgid "Using a Seam-managed Hibernate session"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:134
+#, no-c-format
+msgid ""
+"Seam-managed Hibernate sessions are similar. In <literal>components.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:137
+#, no-c-format
+msgid ""
+"&lt;core:hibernate-session-factory name=\"hibernateSessionFactory\"/&gt;\n"
+"\n"
+"&lt;core:managed-hibernate-session name=\"bookingDatabase\" \n"
+"                         auto-create=\"true\"\n"
+"           session-factory-jndi-name=\"java:/bookingSessionFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:138
+#, no-c-format
+msgid ""
+"Where <literal>java:/bookingSessionFactory</literal> is the name of the "
+"session factory specified in <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:141
+#, no-c-format
+msgid ""
+"&lt;session-factory name=\"java:/bookingSessionFactory\"&gt;\n"
+"    &lt;property name=\"transaction.flush_before_completion\"&gt;true&lt;/"
+"property&gt;\n"
+"    &lt;property name=\"connection.release_mode\"&gt;after_statement&lt;/"
+"property&gt;\n"
+"    &lt;property name=\"transaction.manager_lookup_class\"&gt;\n"
+"        org.hibernate.transaction.JBossTransactionManagerLookup\n"
+"    &lt;/property&gt;\n"
+"    &lt;property name=\"transaction.factory_class\"&gt;\n"
+"        org.hibernate.transaction.JTATransactionFactory\n"
+"    &lt;/property&gt;\n"
+"    &lt;property name=\"connection.datasource\"&gt;java:/"
+"bookingDatasource&lt;/property&gt;\n"
+"    ...\n"
+"&lt;/session-factory&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:142
+#, no-c-format
+msgid ""
+"Note that Seam does not flush the session, so you should always enable "
+"<literal>hibernate.transaction.flush_before_completion</literal> to ensure "
+"that the session is automatically flushed before the JTA transaction commits."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:145
+#, no-c-format
+msgid ""
+"We can now have a managed Hibernate <literal>Session</literal> injected into "
+"our JavaBean components using the following code:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:148
+#, no-c-format
+msgid "@In Session bookingDatabase;"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:152
+#, no-c-format
+msgid "Seam-managed persistence contexts and atomic conversations"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:153
+#, no-c-format
+msgid ""
+"Persistence contexts scoped to the conversation allows you to program "
+"optimistic transactions that span multiple requests to the server without "
+"the need to use the <literal>merge()</literal> operation , without the need "
+"to re-load data at the beginning of each request, and without the need to "
+"wrestle with the <literal>LazyInitializationException</literal> or "
+"<literal>NonUniqueObjectException</literal>."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:156
+#, no-c-format
+msgid ""
+"As with any optimistic transaction management, transaction isolation and "
+"consistency can be achieved via use of optimistic locking. Fortunately, both "
+"Hibernate and EJB 3.0 make it very easy to use optimistic locking, by "
+"providing the <literal>@Version</literal> annotation."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:159
+#, no-c-format
+msgid ""
+"By default, the persistence context is flushed (synchronized with the "
+"database) at the end of each transaction. This is sometimes the desired "
+"behavior. But very often, we would prefer that all changes are held in "
+"memory and only written to the database when the conversation ends "
+"successfully. This allows for truly atomic conversations. As the result of a "
+"truly stupid and shortsighted decision by certain non-JBoss, non-Sun and non-"
+"Sybase members of the EJB 3.0 expert group, there is currently no simple, "
+"usable and portable way to implement atomic conversations using EJB 3.0 "
+"persistence. However, Hibernate provides this feature as a vendor extension "
+"to the <literal>FlushModeType</literal>s defined by the specification, and "
+"it is our expectation that other vendors will soon provide a similar "
+"extension."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:162
+#, no-c-format
+msgid ""
+"Seam lets you specify <literal>FlushModeType.MANUAL</literal> when beginning "
+"a conversation. Currently, this works only when Hibernate is the underlying "
+"persistence provider, but we plan to support other equivalent vendor "
+"extensions."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:165
+#, no-c-format
+msgid ""
+"@In EntityManager em; //a Seam-managed persistence context\n"
+"\n"
+"@Begin(flushMode=MANUAL)\n"
+"public void beginClaimWizard() {\n"
+"    claim = em.find(Claim.class, claimId);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:166
+#, no-c-format
+msgid ""
+"Now, the <literal>claim</literal> object remains managed by the persistence "
+"context for the rest ot the conversation. We can make changes to the claim:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:169
+#, no-c-format
+msgid ""
+"public void addPartyToClaim() {\n"
+"    Party party = ....;\n"
+"    claim.addParty(party);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:170
+#, no-c-format
+msgid ""
+"But these changes will not be flushed to the database until we explicitly "
+"force the flush to occur:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:173
+#, no-c-format
+msgid ""
+"@End\n"
+"public void commitClaim() {\n"
+"    em.flush();\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:179
+#, no-c-format
+msgid "Using the JPA \"delegate\""
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:180
+#, no-c-format
+msgid ""
+"The <literal>EntityManager</literal> interface lets you access a vendor-"
+"specific API via the <literal>getDelegate()</literal> method. Naturally, the "
+"most interesting vendor is Hibernate, and the most powerful delegate "
+"interface is <literal>org.hibernate.Session</literal>. You'd be nuts to use "
+"anything else. Trust me, I'm not biased at all."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:183
+#, no-c-format
+msgid ""
+"But regardless of whether you're using Hibernate (genius!) or something else "
+"(masochist, or just not very bright), you'll almost certainly want to use "
+"the delegate in your Seam components from time to time. One approach would "
+"be the following:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:186
+#, no-c-format
+msgid ""
+"@In EntityManager entityManager;\n"
+"\n"
+"@Create\n"
+"public void init() {\n"
+"    ( (Session) entityManager.getDelegate() ).enableFilter(\"currentVersions"
+"\");\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:187
+#, no-c-format
+msgid ""
+"But typecasts are unquestionably the ugliest syntax in the Java language, so "
+"most people avoid them whenever possible. Here's a different way to get at "
+"the delegate. First, add the following line to <literal>components.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:190
+#, no-c-format
+msgid ""
+"&lt;factory name=\"session\" \n"
+"         scope=\"STATELESS\" \n"
+"         auto-create=\"true\" \n"
+"         value=\"#{entityManager.delegate}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:191
+#, no-c-format
+msgid "Now we can inject the session directly:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:194
+#, no-c-format
+msgid ""
+"@In Session session;\n"
+"\n"
+"@Create\n"
+"public void init() {\n"
+"    session.enableFilter(\"currentVersions\");\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:198
+#, no-c-format
+msgid "Using EL in EJB-QL/HQL"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:199
+#, no-c-format
+msgid ""
+"Seam proxies the <literal>EntityManager</literal> or <literal>Session</"
+"literal> object whenever you use a Seam-managed persistence context or "
+"inject a container managed persistence context using "
+"<literal>@PersistenceContext</literal>. This lets you use EL expressions in "
+"your query strings, safely and efficiently. For example, this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:202
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=#{user.username}\")\n"
+"         .getSingleResult();"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:203
+#, no-c-format
+msgid "is equivalent to:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:206
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getSingleResult();"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:207
+#, no-c-format
+msgid "Of course, you should never, ever write it like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:210
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=\" + user.getUsername"
+"()) //BAD!\n"
+"         .getSingleResult();"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:211
+#, no-c-format
+msgid "(It is inefficient and vulnerable to SQL injection attacks.)"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:217
+#, no-c-format
+msgid "Using Hibernate filters"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:218
+#, no-c-format
+msgid ""
+"The coolest, and most unique, feature of Hibernate is <emphasis>filters</"
+"emphasis>. Filters let you provide a restricted view of the data in the "
+"database. You can find out more about filters in the Hibernate "
+"documentation. But we thought we'd mention an easy way to incorporate "
+"filters into a Seam application, one that works especially well with the "
+"Seam Application Framework."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:221
+#, no-c-format
+msgid ""
+"Seam-managed persistence contexts may have a list of filters defined, which "
+"will be enabled whenever an <literal>EntityManager</literal> or Hibernate "
+"<literal>Session</literal> is first created. (Of course, they may only be "
+"used when Hibernate is the underlying persistence provider.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:224
+#, no-c-format
+msgid ""
+"&lt;core:filter name=\"regionFilter\"&gt;\n"
+"    &lt;core:name&gt;region&lt;/core:name&gt;\n"
+"    &lt;core:parameters&gt;\n"
+"        &lt;key&gt;regionCode&lt;/key&gt;\n"
+"        &lt;value&gt;#{region.code}&lt;/value&gt;\n"
+"    &lt;/core:parameters&gt;\n"
+"&lt;/core:filter&gt;\n"
+"\n"
+"&lt;core:filter name=\"currentFilter\"&gt;\n"
+"    &lt;core:name&gt;current&lt;/core:name&gt;\n"
+"    &lt;core:parameters&gt;\n"
+"        &lt;key&gt;date&lt;/key&gt;\n"
+"        &lt;value&gt;#{currentDate}&lt;/value&gt;\n"
+"    &lt;/core:parameters&gt;\n"
+"&lt;/core:filter&gt;\n"
+"\n"
+"&lt;core:managed-persistence-context name=\"personDatabase\"\n"
+"    persistence-unit-jndi-name=\"java:/EntityManagerFactories/personDatabase"
+"\"&gt;\n"
+"    &lt;core:filters&gt;\n"
+"        &lt;value&gt;#{regionFilter}&lt;/value&gt;\n"
+"        &lt;value&gt;#{currentFilter}&lt;/value&gt;\n"
+"    &lt;/core:filters&gt;\n"
+"&lt;/core:managed-persistence-context&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Remoting.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Remoting.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Remoting.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1458 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Remoting.xml:10
+#, no-c-format
+msgid "Remoting"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:11
+#, no-c-format
+msgid ""
+"Seam provides a convenient method of remotely accessing components from a "
+"web page, using AJAX (Asynchronous Javascript and XML). The framework for "
+"this functionality is provided with almost no up-front development effort - "
+"your components only require simple annotating to become accessible via "
+"AJAX. This chapter describes the steps required to build an AJAX-enabled web "
+"page, then goes on to explain the features of the Seam Remoting framework in "
+"more detail."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:14 Remoting.xml:296
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:15
+#, no-c-format
+msgid ""
+"To use remoting, the Seam Resource servlet must first be configured in your "
+"<literal>web.xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:18
+#, no-c-format
+msgid ""
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"  &lt;/servlet&gt;\n"
+"\n"
+"  &lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"  &lt;/servlet-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:19
+#, no-c-format
+msgid ""
+"The next step is to import the necessary Javascript into your web page. "
+"There are a minimum of two scripts that must be imported. The first one "
+"contains all the client-side framework code that enables remoting "
+"functionality:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:22
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/resource/"
+"remote.js\"&gt;&lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:23
+#, no-c-format
+msgid ""
+"The second script contains the stubs and type definitions for the components "
+"you wish to call. It is generated dynamically based on the local interface "
+"of your components, and includes type definitions for all of the classes "
+"that can be used to call the remotable methods of the interface. The name of "
+"the script reflects the name of your component. For example, if you have a "
+"stateless session bean annotated with <literal>@Name(\"customerAction\")</"
+"literal>, then your script tag should look like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:26
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?customerAction\"&gt;\n"
+"      &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:27
+#, no-c-format
+msgid ""
+"If you wish to access more than one component from the same page, then "
+"include them all as parameters of your script tag:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:30
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" \n"
+"      src=\"seam/resource/remoting/interface.js?customerAction&amp;"
+"accountAction\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:31
+#, no-c-format
+msgid "The \"Seam\" object"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:32
+#, no-c-format
+msgid ""
+"Client-side interaction with your components is all performed via the "
+"<literal>Seam</literal> Javascript object. This object is defined in "
+"<literal>remote.js</literal>, and you'll be using it to make asynchronous "
+"calls against your component. It is split into two areas of functionality; "
+"<literal>Seam.Component</literal> contains methods for working with "
+"components and <literal>Seam.Remoting</literal> contains methods for "
+"executing remote requests. The easiest way to become familiar with this "
+"object is to start with a simple example."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:35
+#, no-c-format
+msgid "A Hello World example"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:36
+#, no-c-format
+msgid ""
+"Let's step through a simple example to see how the <literal>Seam</literal> "
+"object works. First of all, let's create a new Seam component called "
+"<literal>helloAction</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:39
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"  @Name(\"helloAction\")\n"
+"  public class HelloAction implements HelloLocal {\n"
+"    public String sayHello(String name) {\n"
+"      return \"Hello, \" + name;\n"
+"    }\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:40
+#, no-c-format
+msgid ""
+"You also need to create a local interface for our new component - take "
+"special note of the <literal>@WebRemote</literal> annotation, as it's "
+"required to make our method accessible via remoting:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:43
+#, no-c-format
+msgid ""
+"@Local\n"
+"  public interface HelloLocal {\n"
+"    @WebRemote\n"
+"    public String sayHello(String name);\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:44
+#, no-c-format
+msgid ""
+"That's all the server-side code we need to write. Now for our web page - "
+"create a new page and import the following scripts:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:47
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/resource/"
+"remote.js\"&gt;&lt;/script&gt;\n"
+"  &lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?helloAction\"&gt;&lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:48
+#, no-c-format
+msgid ""
+"To make this a fully interactive user experience, let's add a button to our "
+"page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:51
+#, no-c-format
+msgid ""
+"&lt;button onclick=\"javascript:sayHello()\"&gt;Say Hello&lt;/button&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:52
+#, no-c-format
+msgid ""
+"We'll also need to add some more script to make our button actually do "
+"something when it's clicked:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:55
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\"&gt;\n"
+"    //&lt;![CDATA[\n"
+"\n"
+"    function sayHello() {\n"
+"      var name = prompt(\"What is your name?\");\n"
+"      Seam.Component.getInstance(\"helloAction\").sayHello(name, "
+"sayHelloCallback);\n"
+"    }\n"
+"\n"
+"    function sayHelloCallback(result) {\n"
+"      alert(result);\n"
+"    }\n"
+"\n"
+"    // ]]&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:56
+#, no-c-format
+msgid ""
+"We're done! Deploy your application and browse to your page. Click the "
+"button, and enter a name when prompted. A message box will display the hello "
+"message confirming that the call was successful. If you want to save some "
+"time, you'll find the full source code for this Hello World example in "
+"Seam's <literal>/examples/remoting/helloworld</literal> directory."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:59
+#, no-c-format
+msgid ""
+"So what does the code of our script actually do? Let's break it down into "
+"smaller pieces. To start with, you can see from the Javascript code listing "
+"that we have implemented two methods - the first method is responsible for "
+"prompting the user for their name and then making a remote request. Take a "
+"look at the following line:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:62
+#, no-c-format
+msgid ""
+"Seam.Component.getInstance(\"helloAction\").sayHello(name, sayHelloCallback);"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:63
+#, no-c-format
+msgid ""
+"The first section of this line, <literal>Seam.Component.getInstance"
+"(\"helloAction\")</literal> returns a proxy, or \"stub\" for our "
+"<literal>helloAction</literal> component. We can invoke the methods of our "
+"component against this stub, which is exactly what happens with the "
+"remainder of the line: <literal>sayHello(name, sayHelloCallback);</literal>."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:66
+#, no-c-format
+msgid ""
+"What this line of code in its completeness does, is invoke the "
+"<literal>sayHello</literal> method of our component, passing in "
+"<literal>name</literal> as a parameter. The second parameter, "
+"<literal>sayHelloCallback</literal> isn't a parameter of our component's "
+"<literal>sayHello</literal> method, instead it tells the Seam Remoting "
+"framework that once it receives the response to our request, it should pass "
+"it to the <literal>sayHelloCallback</literal> Javascript method. This "
+"callback parameter is entirely optional, so feel free to leave it out if "
+"you're calling a method with a <literal>void</literal> return type or if you "
+"don't care about the result."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:69
+#, no-c-format
+msgid ""
+"The <literal>sayHelloCallback</literal> method, once receiving the response "
+"to our remote request then pops up an alert message displaying the result of "
+"our method call."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:72
+#, no-c-format
+msgid "Seam.Component"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:73
+#, no-c-format
+msgid ""
+"The <literal>Seam.Component</literal> Javascript object provides a number of "
+"client-side methods for working with your Seam components. The two main "
+"methods, <literal>newInstance()</literal> and <literal>getInstance()</"
+"literal> are documented in the following sections however their main "
+"difference is that <literal>newInstance()</literal> will always create a new "
+"instance of a component type, and <literal>getInstance()</literal> will "
+"return a singleton instance."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:76
+#, no-c-format
+msgid "Seam.Component.newInstance()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:77
+#, no-c-format
+msgid ""
+"Use this method to create a new instance of an entity or Javabean component. "
+"The object returned by this method will have the same getter/setter methods "
+"as its server-side counterpart, or alternatively if you wish you can access "
+"its fields directly. Take the following Seam entity component for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:80
+#, no-c-format
+msgid ""
+"@Name(\"customer\")\n"
+"  @Entity\n"
+"  public class Customer implements Serializable\n"
+"  {\n"
+"    private Integer customerId;\n"
+"    private String firstName;\n"
+"    private String lastName;\n"
+"    \n"
+"    @Column public Integer getCustomerId() { \n"
+"      return customerId; \n"
+"    }\n"
+"    \n"
+"    public void setCustomerId(Integer customerId} { \n"
+"      this.customerId = customerId; \n"
+"    }\n"
+"    \n"
+"    @Column public String getFirstName() { \n"
+"      return firstName; \n"
+"    }\n"
+"    \n"
+"    public void setFirstName(String firstName) {\n"
+"      this.firstName = firstName; \n"
+"    }\n"
+"    \n"
+"    @Column public String getLastName() {\n"
+"      return lastName;\n"
+"    }\n"
+"    \n"
+"    public void setLastName(String lastName) {\n"
+"      this.lastName = lastName;\n"
+"    }\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:81
+#, no-c-format
+msgid "To create a client-side Customer you would write the following code:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:84
+#, no-c-format
+msgid "var customer = Seam.Component.newInstance(\"customer\");"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:85
+#, no-c-format
+msgid "Then from here you can set the fields of the customer object:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:88
+#, no-c-format
+msgid ""
+"customer.setFirstName(\"John\");\n"
+"  // Or you can set the fields directly\n"
+"  customer.lastName = \"Smith\";"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:89
+#, no-c-format
+msgid "Seam.Component.getInstance()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:90
+#, no-c-format
+msgid ""
+"The <literal>getInstance()</literal> method is used to get a reference to a "
+"Seam session bean component stub, which can then be used to remotely execute "
+"methods against your component. This method returns a singleton for the "
+"specified component, so calling it twice in a row with the same component "
+"name will return the same instance of the component."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:93
+#, no-c-format
+msgid ""
+"To continue our example from before, if we have created a new "
+"<literal>customer</literal> and we now wish to save it, we would pass it to "
+"the <literal>saveCustomer()</literal> method of our <literal>customerAction</"
+"literal> component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:96
+#, no-c-format
+msgid "Seam.Component.getInstance(\"customerAction\").saveCustomer(customer);"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:97
+#, no-c-format
+msgid "Seam.Component.getComponentName()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:98
+#, no-c-format
+msgid ""
+"Passing an object into this method will return its component name if it is a "
+"component, or <literal>null</literal> if it is not."
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:101
+#, no-c-format
+msgid ""
+"if (Seam.Component.getComponentName(instance) == \"customer\")\n"
+"    alert(\"Customer\");\n"
+"  else if (Seam.Component.getComponentName(instance) == \"staff\")\n"
+"    alert(\"Staff member\");"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:102
+#, no-c-format
+msgid "Seam.Remoting"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:103
+#, no-c-format
+msgid ""
+"Most of the client side functionality for Seam Remoting is contained within "
+"the <literal>Seam.Remoting</literal> object. While you shouldn't need to "
+"directly call most of its methods, there are a couple of important ones "
+"worth mentioning."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:106
+#, no-c-format
+msgid "Seam.Remoting.createType()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:107
+#, no-c-format
+msgid ""
+"If your application contains or uses Javabean classes that aren't Seam "
+"components, you may need to create these types on the client side to pass as "
+"parameters into your component method. Use the <literal>createType()</"
+"literal> method to create an instance of your type. Pass in the fully "
+"qualified Java class name as a parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:110
+#, no-c-format
+msgid "var widget = Seam.Remoting.createType(\"com.acme.widgets.MyWidget\");"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:111
+#, no-c-format
+msgid "Seam.Remoting.getTypeName()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:112
+#, no-c-format
+msgid ""
+"This method is the equivalent of <literal>Seam.Component.getComponentName()</"
+"literal> but for non-component types. It will return the name of the type "
+"for an object instance, or <literal>null</literal> if the type is not known. "
+"The name is the fully qualified name of the type's Java class."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:115
+#, no-c-format
+msgid "Client Interfaces"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:116
+#, no-c-format
+msgid ""
+"In the configuration section above, the interface, or \"stub\" for our "
+"component is imported into our page via <literal>seam/resource/remoting/"
+"interface.js</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:119
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?customerAction\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:120
+#, no-c-format
+msgid ""
+"By including this script in our page, the interface definitions for our "
+"component, plus any other components or types that are required to execute "
+"the methods of our component are generated and made available for the "
+"remoting framework to use."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:123
+#, no-c-format
+msgid ""
+"There are two types of client stub that can be generated, \"executable\" "
+"stubs and \"type\" stubs. Executable stubs are behavioural, and are used to "
+"execute methods against your session bean components, while type stubs "
+"contain state and represent the types that can be passed in as parameters or "
+"returned as a result."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:126
+#, no-c-format
+msgid ""
+"The type of client stub that is generated depends on the type of your Seam "
+"component. If the component is a session bean, then an executable stub will "
+"be generated, otherwise if it's an entity or JavaBean, then a type stub will "
+"be generated. There is one exception to this rule; if your component is a "
+"JavaBean (ie it is not a session bean nor an entity bean) and any of its "
+"methods are annotated with @WebRemote, then an executable stub will be "
+"generated for it instead of a type stub. This allows you to use remoting to "
+"call methods of your JavaBean components in a non-EJB environment where you "
+"don't have access to session beans."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:130
+#, no-c-format
+msgid "The Context"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:131
+#, no-c-format
+msgid ""
+"The Seam Remoting Context contains additional information which is sent and "
+"received as part of a remoting request/response cycle. At this stage it only "
+"contains the conversation ID but may be expanded in the future."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:134
+#, no-c-format
+msgid "Setting and reading the Conversation ID"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:136
+#, no-c-format
+msgid ""
+"If you intend on using remote calls within the scope of a conversation then "
+"you need to be able to read or set the conversation ID in the Seam Remoting "
+"Context. To read the conversation ID after making a remote request call "
+"<literal>Seam.Remoting.getContext().getConversationId()</literal>. To set "
+"the conversation ID before making a request, call <literal>Seam.Remoting."
+"getContext().setConversationId()</literal>."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:139
+#, no-c-format
+msgid ""
+"If the conversation ID hasn't been explicitly set with <literal>Seam."
+"Remoting.getContext().setConversationId()</literal>, then it will be "
+"automatically assigned the first valid conversation ID that is returned by "
+"any remoting call. If you are working with multiple conversations within "
+"your page, then you may need to explicitly set the conversation ID before "
+"each call. If you are working with just a single conversation, then you "
+"don't need to do anything special."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:145
+#, no-c-format
+msgid "Batch Requests"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:146
+#, no-c-format
+msgid ""
+"Seam Remoting allows multiple component calls to be executed within a single "
+"request. It is recommended that this feature is used wherever it is "
+"appropriate to reduce network traffic."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:149
+#, no-c-format
+msgid ""
+"The method <literal>Seam.Remoting.startBatch()</literal> will start a new "
+"batch, and any component calls executed after starting a batch are queued, "
+"rather than being sent immediately. When all the desired component calls "
+"have been added to the batch, the <literal>Seam.Remoting.executeBatch()</"
+"literal> method will send a single request containing all of the queued "
+"calls to the server, where they will be executed in order. After the calls "
+"have been executed, a single response containining all return values will be "
+"returned to the client and the callback functions (if provided) triggered in "
+"the same order as execution."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:152
+#, no-c-format
+msgid ""
+"If you start a new batch via the <literal>startBatch()</literal> method but "
+"then decide you don't want to send it, the <literal>Seam.Remoting.cancelBatch"
+"()</literal> method will discard any calls that were queued and exit the "
+"batch mode."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:155
+#, no-c-format
+msgid ""
+"To see an example of a batch being used, take a look at <literal>/examples/"
+"remoting/chatroom</literal>."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:159
+#, no-c-format
+msgid "Working with Data types"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:160
+#, no-c-format
+msgid "Primitives / Basic Types"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:161
+#, no-c-format
+msgid ""
+"This section describes the support for basic data types. On the server side "
+"these values are generally compatible with either their primitive type or "
+"their corresponding wrapper class."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:164
+#, no-c-format
+msgid "String"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:165
+#, no-c-format
+msgid ""
+"Simply use Javascript String objects when setting String parameter values."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:168
+#, no-c-format
+msgid "Number"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:169
+#, no-c-format
+msgid ""
+"There is support for all number types supported by Java. On the client side, "
+"number values are always serialized as their String representation and then "
+"on the server side they are converted to the correct destination type. "
+"Conversion into either a primitive or wrapper type is supported for "
+"<literal>Byte</literal>, <literal>Double</literal>, <literal>Float</"
+"literal>, <literal>Integer</literal>, <literal>Long</literal> and "
+"<literal>Short</literal> types."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:172
+#, no-c-format
+msgid "Boolean"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:173
+#, no-c-format
+msgid ""
+"Booleans are represented client side by Javascript Boolean values, and "
+"server side by a Java boolean."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:176
+#, no-c-format
+msgid "JavaBeans"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:177
+#, no-c-format
+msgid ""
+"In general these will be either Seam entity or JavaBean components, or some "
+"other non-component class. Use the appropriate method (either <literal>Seam."
+"Component.newInstance()</literal> for Seam components or <literal>Seam."
+"Remoting.createType()</literal> for everything else) to create a new "
+"instance of the object."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:180
+#, no-c-format
+msgid ""
+"It is important to note that only objects that are created by either of "
+"these two methods should be used as parameter values, where the parameter is "
+"not one of the other valid types mentioned anywhere else in this section. In "
+"some situations you may have a component method where the exact parameter "
+"type cannot be determined, such as:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:183
+#, no-c-format
+msgid ""
+"@Name(\"myAction\")\n"
+"  public class MyAction implements MyActionLocal {\n"
+"    public void doSomethingWithObject(Object obj) {\n"
+"      // code\n"
+"    }\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:184
+#, no-c-format
+msgid ""
+"In this case you might want to pass in an instance of your "
+"<literal>myWidget</literal> component, however the interface for "
+"<literal>myAction</literal> won't include <literal>myWidget</literal> as it "
+"is not directly referenced by any of its methods. To get around this, "
+"<literal>MyWidget</literal> needs to be explicitly imported:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:187
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?myAction&amp;myWidget\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:188
+#, no-c-format
+msgid ""
+"This will then allow a <literal>myWidget</literal> object to be created with "
+"<literal>Seam.Component.newInstance(\"myWidget\")</literal>, which can then "
+"be passed to <literal>myAction.doSomethingWithObject()</literal>."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:191
+#, no-c-format
+msgid "Dates and Times"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:192
+#, no-c-format
+msgid ""
+"Date values are serialized into a String representation that is accurate to "
+"the millisecond. On the client side, use a Javascript Date object to work "
+"with date values. On the server side, use any <literal>java.util.Date</"
+"literal> (or descendent, such as <literal>java.sql.Date</literal> or "
+"<literal>java.sql.Timestamp</literal> class."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:195
+#, no-c-format
+msgid "Enums"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:196
+#, no-c-format
+msgid ""
+"On the client side, enums are treated the same as Strings. When setting the "
+"value for an enum parameter, simply use the String representation of the "
+"enum. Take the following component as an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:199
+#, no-c-format
+msgid ""
+"@Name(\"paintAction\")\n"
+"  public class paintAction implements paintLocal {\n"
+"    public enum Color {red, green, blue, yellow, orange, purple};\n"
+"\n"
+"    public void paint(Color color) {\n"
+"      // code\n"
+"    }    \n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:200
+#, no-c-format
+msgid ""
+"To call the <literal>paint()</literal> method with the color <literal>red</"
+"literal>, pass the parameter value as a String literal:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:203
+#, no-c-format
+msgid "Seam.Component.getInstance(\"paintAction\").paint(\"red\");"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:204
+#, no-c-format
+msgid ""
+"The inverse is also true - that is, if a component method returns an enum "
+"parameter (or contains an enum field anywhere in the returned object graph) "
+"then on the client-side it will be represented as a String."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:207
+#, no-c-format
+msgid "Collections"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:208
+#, no-c-format
+msgid "Bags"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:209
+#, no-c-format
+msgid ""
+"Bags cover all collection types including arrays, collections, lists, sets, "
+"(but excluding Maps - see the next section for those), and are implemented "
+"client-side as a Javascript array. When calling a component method that "
+"accepts one of these types as a parameter, your parameter should be a "
+"Javascript array. If a component method returns one of these types, then the "
+"return value will also be a Javascript array. The remoting framework is "
+"clever enough on the server side to convert the bag to an appropriate type "
+"for the component method call."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:212
+#, no-c-format
+msgid "Maps"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:213
+#, no-c-format
+msgid ""
+"As there is no native support for Maps within Javascript, a simple Map "
+"implementation is provided with the Seam Remoting framework. To create a Map "
+"which can be used as a parameter to a remote call, create a new "
+"<literal>Seam.Remoting.Map</literal> object:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:216
+#, no-c-format
+msgid "var map = new Seam.Remoting.Map();"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:217
+#, no-c-format
+msgid ""
+"This Javascript implementation provides basic methods for working with Maps: "
+"<literal>size()</literal>, <literal>isEmpty()</literal>, <literal>keySet()</"
+"literal>, <literal>values()</literal>, <literal>get(key)</literal>, "
+"<literal>put(key, value)</literal>, <literal>remove(key)</literal> and "
+"<literal>contains(key)</literal>. Each of these methods are equivalent to "
+"their Java counterpart. Where the method returns a collection, such as "
+"<literal>keySet()</literal> and <literal>values()</literal>, a Javascript "
+"Array object will be returned that contains the key or value objects "
+"(respectively)."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:220
+#, no-c-format
+msgid "Debugging"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:221
+#, no-c-format
+msgid ""
+"To aid in tracking down bugs, it is possible to enable a debug mode which "
+"will display the contents of all the packets send back and forth between the "
+"client and server in a popup window. To enable debug mode, either execute "
+"the <literal>setDebug()</literal> method in Javascript:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:224
+#, no-c-format
+msgid "Seam.Remoting.setDebug(true);"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:225
+#, no-c-format
+msgid "Or configure it via components.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:228
+#, no-c-format
+msgid "&lt;remoting:remoting debug=\"true\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:229
+#, no-c-format
+msgid ""
+"To turn off debugging, call <literal>setDebug(false)</literal>. If you want "
+"to write your own messages to the debug log, call <literal>Seam.Remoting.log"
+"(message)</literal>."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:233
+#, no-c-format
+msgid "The Loading Message"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:234
+#, no-c-format
+msgid ""
+"The default loading message that appears in the top right corner of the "
+"screen can be modified, its rendering customised or even turned off "
+"completely."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:237
+#, no-c-format
+msgid "Changing the message"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:238
+#, no-c-format
+msgid ""
+"To change the message from the default \"Please Wait...\" to something "
+"different, set the value of <literal>Seam.Remoting.loadingMessage</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:241
+#, no-c-format
+msgid "Seam.Remoting.loadingMessage = \"Loading...\";"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:243
+#, no-c-format
+msgid "Hiding the loading message"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:244
+#, no-c-format
+msgid ""
+"To completely suppress the display of the loading message, override the "
+"implementation of <literal>displayLoadingMessage()</literal> and "
+"<literal>hideLoadingMessage()</literal> with functions that instead do "
+"nothing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:247
+#, no-c-format
+msgid ""
+"// don't display the loading indicator\n"
+"  Seam.Remoting.displayLoadingMessage = function() {};\n"
+"  Seam.Remoting.hideLoadingMessage = function() {};"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:248
+#, no-c-format
+msgid "A Custom Loading Indicator"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:249
+#, no-c-format
+msgid ""
+"It is also possible to override the loading indicator to display an animated "
+"icon, or anything else that you want. To do this override the "
+"<literal>displayLoadingMessage()</literal> and <literal>hideLoadingMessage()"
+"</literal> messages with your own implementation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:252
+#, no-c-format
+msgid ""
+"Seam.Remoting.displayLoadingMessage = function() {\n"
+"    // Write code here to display the indicator\n"
+"  };\n"
+"  \n"
+"  Seam.Remoting.hideLoadingMessage = function() {\n"
+"    // Write code here to hide the indicator\n"
+"  };"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:253
+#, no-c-format
+msgid "Controlling what data is returned"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:254
+#, no-c-format
+msgid ""
+"When a remote method is executed, the result is serialized into an XML "
+"response that is returned to the client. This response is then unmarshaled "
+"by the client into a Javascript object. For complex types (i.e. Javabeans) "
+"that include references to other objects, all of these referenced objects "
+"are also serialized as part of the response. These objects may reference "
+"other objects, which may reference other objects, and so forth. If left "
+"unchecked, this object \"graph\" could potentially be enormous, depending on "
+"what relationships exist between your objects. And as a side issue (besides "
+"the potential verbosity of the response), you might also wish to prevent "
+"sensitive information from being exposed to the client."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:257
+#, no-c-format
+msgid ""
+"Seam Remoting provides a simple means to \"constrain\" the object graph, by "
+"specifying the <literal>exclude</literal> field of the remote method's "
+"<literal>@WebRemote</literal> annotation. This field accepts a String array "
+"containing one or more paths specified using dot notation. When invoking a "
+"remote method, the objects in the result's object graph that match these "
+"paths are excluded from the serialized result packet."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:260
+#, no-c-format
+msgid ""
+"For all our examples, we'll use the following <literal>Widget</literal> "
+"class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:263
+#, no-c-format
+msgid ""
+"@Name(\"widget\")\n"
+"public class Widget\n"
+"{\n"
+"  private String value;\n"
+"  private String secret;\n"
+"  private Widget child;\n"
+"  private Map&lt;String,Widget&gt; widgetMap;\n"
+"  private List&lt;Widget&gt; widgetList;\n"
+"  \n"
+"  // getters and setters for all fields\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:264
+#, no-c-format
+msgid "Constraining normal fields"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:265
+#, no-c-format
+msgid ""
+"If your remote method returns an instance of <literal>Widget</literal>, but "
+"you don't want to expose the <literal>secret</literal> field because it "
+"contains sensitive information, you would constrain it like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:268
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:269
+#, no-c-format
+msgid ""
+"The value \"secret\" refers to the <literal>secret</literal> field of the "
+"returned object. Now, suppose that we don't care about exposing this "
+"particular field to the client. Instead, notice that the <literal>Widget</"
+"literal> value that is returned has a field <literal>child</literal> that is "
+"also a <literal>Widget</literal>. What if we want to hide the "
+"<literal>child</literal>'s <literal>secret</literal> value instead? We can "
+"do this by using dot notation to specify this field's path within the "
+"result's object graph:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:272
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"child.secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:273
+#, no-c-format
+msgid "Constraining Maps and Collections"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:274
+#, no-c-format
+msgid ""
+"The other place that objects can exist within an object graph are within a "
+"<literal>Map</literal> or some kind of collection (<literal>List</literal>, "
+"<literal>Set</literal>, <literal>Array</literal>, etc). Collections are "
+"easy, and are treated like any other field. For example, if our "
+"<literal>Widget</literal> contained a list of other <literal>Widget</"
+"literal>s in its <literal>widgetList</literal> field, to constrain the "
+"<literal>secret</literal> field of the <literal>Widget</literal>s in this "
+"list the annotation would look like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:277
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetList.secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:278
+#, no-c-format
+msgid ""
+"To constrain a <literal>Map</literal>'s key or value, the notation is "
+"slightly different. Appending <literal>[key]</literal> after the "
+"<literal>Map</literal>'s field name will constrain the <literal>Map</"
+"literal>'s key object values, while <literal>[value]</literal> will "
+"constrain the value object values. The following example demonstrates how "
+"the values of the <literal>widgetMap</literal> field have their "
+"<literal>secret</literal> field constrained:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:281
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetMap[value].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:282
+#, no-c-format
+msgid "Constraining objects of a specific type"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:283
+#, no-c-format
+msgid ""
+"There is one last notation that can be used to constrain the fields of a "
+"type of object no matter where in the result's object graph it appears. This "
+"notation uses either the name of the component (if the object is a Seam "
+"component) or the fully qualified class name (only if the object is not a "
+"Seam component) and is expressed using square brackets:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:286
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"[widget].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:287
+#, no-c-format
+msgid "Combining Constraints"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:288
+#, no-c-format
+msgid ""
+"Constraints can also be combined, to filter objects from multiple paths "
+"within the object graph:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:291
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetList.secret\", \"widgetMap[value].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:292
+#, no-c-format
+msgid "JMS Messaging"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:293
+#, no-c-format
+msgid ""
+"Seam Remoting provides experimental support for JMS Messaging. This section "
+"describes the JMS support that is currently implemented, but please note "
+"that this may change in the future. It is currently not recommended that "
+"this feature is used within a production environment."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:297
+#, no-c-format
+msgid ""
+"Before you can subscribe to a JMS topic, you must first configure a list of "
+"the topics that can be subscribed to by Seam Remoting. List the topics under "
+"<literal>org.jboss.seam.remoting.messaging.subscriptionRegistry."
+"allowedTopics</literal> in <literal>seam.properties</literal>, <literal>web."
+"xml</literal> or <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:300 Remoting.xml:333
+#, no-c-format
+msgid "&lt;remoting:remoting poll-timeout=\"5\" poll-interval=\"1\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:301
+#, no-c-format
+msgid "Subscribing to a JMS Topic"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:302
+#, no-c-format
+msgid "The following example demonstrates how to subscribe to a JMS Topic:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:305
+#, no-c-format
+msgid ""
+"function subscriptionCallback(message)\n"
+"  {\n"
+"    if (message instanceof Seam.Remoting.TextMessage)\n"
+"      alert(\"Received message: \" + message.getText());\n"
+"  }        \n"
+"        \n"
+"  Seam.Remoting.subscribe(\"topicName\", subscriptionCallback);"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:306
+#, no-c-format
+msgid ""
+"The <literal>Seam.Remoting.subscribe()</literal> method accepts two "
+"parameters, the first being the name of the JMS Topic to subscribe to, the "
+"second being the callback function to invoke when a message is received."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:309
+#, no-c-format
+msgid ""
+"There are two types of messages supported, Text messages and Object "
+"messages. If you need to test for the type of message that is passed to your "
+"callback function you can use the <literal>instanceof</literal> operator to "
+"test whether the message is a <literal>Seam.Remoting.TextMessage</literal> "
+"or <literal>Seam.Remoting.ObjectMessage</literal>. A <literal>TextMessage</"
+"literal> contains the text value in its <literal>text</literal> field (or "
+"alternatively call <literal>getText()</literal> on it), while an "
+"<literal>ObjectMessage</literal> contains its object value in its "
+"<literal>object</literal> field (or call its <literal>getObject()</literal> "
+"method)."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:312
+#, no-c-format
+msgid "Unsubscribing from a Topic"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:313
+#, no-c-format
+msgid ""
+"To unsubscribe from a topic, call <literal>Seam.Remoting.unsubscribe()</"
+"literal> and pass in the topic name:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:316
+#, no-c-format
+msgid "Seam.Remoting.unsubscribe(\"topicName\");"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:317
+#, no-c-format
+msgid "Tuning the Polling Process"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:318
+#, no-c-format
+msgid ""
+"There are two parameters which you can modify to control how polling occurs. "
+"The first one is <literal>Seam.Remoting.pollInterval</literal>, which "
+"controls how long to wait between subsequent polls for new messages. This "
+"parameter is expressed in seconds, and its default setting is 10."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:321
+#, no-c-format
+msgid ""
+"The second parameter is <literal>Seam.Remoting.pollTimeout</literal>, and is "
+"also expressed as seconds. It controls how long a request to the server "
+"should wait for a new message before timing out and sending an empty "
+"response. Its default is 0 seconds, which means that when the server is "
+"polled, if there are no messages ready for delivery then an empty response "
+"will be immediately returned."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:324
+#, no-c-format
+msgid ""
+"Caution should be used when setting a high <literal>pollTimeout</literal> "
+"value; each request that has to wait for a message means that a server "
+"thread is tied up until a message is received, or until the request times "
+"out. If many such requests are being served simultaneously, it could mean a "
+"large number of threads become tied up because of this reason."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:327
+#, no-c-format
+msgid ""
+"It is recommended that you set these options via components.xml, however "
+"they can be overridden via Javascript if desired. The following example "
+"demonstrates how to configure the polling to occur much more aggressively. "
+"You should set these parameters to suitable values for your application:"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:330
+#, no-c-format
+msgid "Via components.xml:"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:334
+#, no-c-format
+msgid "Via JavaScript:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:337
+#, no-c-format
+msgid ""
+"// Only wait 1 second between receiving a poll response and sending the next "
+"poll request.\n"
+"  Seam.Remoting.pollInterval = 1;\n"
+"  \n"
+"  // Wait up to 5 seconds on the server for new messages\n"
+"  Seam.Remoting.pollTimeout = 5;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Security.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Security.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Security.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1676 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Security.xml:10
+#, no-c-format
+msgid "Security"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:11
+#, no-c-format
+msgid ""
+"The Seam Security API is an optional Seam feature that provides "
+"authentication and authorization features for securing both domain and page "
+"resources within your Seam project."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:14
+#, no-c-format
+msgid "Overview"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:15
+#, no-c-format
+msgid "Seam Security provides two different modes of operation:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:20
+#, no-c-format
+msgid ""
+"<emphasis>simplified mode</emphasis> - this mode supports authentication "
+"services and simple role-based security checks."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:25
+#, no-c-format
+msgid ""
+"<emphasis>advanced mode</emphasis> - this mode supports all the same "
+"features as the simplified mode, plus it offers rule-based security checks "
+"using JBoss Rules."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:30
+#, no-c-format
+msgid "Which mode is right for my application?"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:31
+#, no-c-format
+msgid ""
+"That all depends on the requirements of your application. If you have "
+"minimal security requirements, for example if you only wish to restrict "
+"certain pages and actions to users who are logged in, or who belong to a "
+"certain role, then the simplified mode will probably be sufficient. The "
+"advantages of this is a more simplified configuration, significantly less "
+"libraries to include, and a smaller memory footprint."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:34
+#, no-c-format
+msgid ""
+"If on the other hand, your application requires security checks based on "
+"contextual state or complex business rules, then you will require the "
+"features provided by the advanced mode."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:37
+#, no-c-format
+msgid "Requirements"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:38
+#, no-c-format
+msgid ""
+"If using the advanced mode features of Seam Security, the following jar "
+"files are required to be configured as modules in <literal>application.xml</"
+"literal>. If you are using Seam Security in simplified mode, these are "
+"<emphasis>not</emphasis> required:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:43
+#, no-c-format
+msgid "drools-compiler-3.0.5.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:48
+#, no-c-format
+msgid "drools-core-3.0.5.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:53
+#, no-c-format
+msgid "commons-jci-core-1.0-406301.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:58
+#, no-c-format
+msgid "commons-jci-janino-2.4.3.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:63
+#, no-c-format
+msgid "commons-lang-2.1.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:68
+#, no-c-format
+msgid "janino-2.4.3.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:73
+#, no-c-format
+msgid "stringtemplate-2.3b6.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:78
+#, no-c-format
+msgid "antlr-2.7.6.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:83
+#, no-c-format
+msgid "antlr-3.0ea8.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:88
+#, no-c-format
+msgid ""
+"For web-based security, <literal>jboss-seam-ui.jar</literal> must also be "
+"included in the application's war file. Also, to make use of the security EL "
+"functions, <literal>SeamFaceletViewHandler</literal> must be used. Configure "
+"it in <literal>faces-config.xml</literal> like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:91
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;view-handler&gt;org.jboss.seam.ui.facelet.SeamFaceletViewHandler&lt;/"
+"view-handler&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:92
+#, no-c-format
+msgid "Authentication"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:93
+#, no-c-format
+msgid ""
+"The authentication features provided by Seam Security are built upon JAAS "
+"(Java Authentication and Authorization Service), and as such provide a "
+"robust and highly configurable API for handling user authentication. "
+"However, for less complex authentication requirements Seam offers a much "
+"more simplified method of authentication that hides the complexity of JAAS."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:96
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:97
+#, no-c-format
+msgid ""
+"The simplified authentication method uses a built-in JAAS login module, "
+"<literal>SeamLoginModule</literal>, which delegates authentication to one of "
+"your own Seam components. This login module is already configured inside "
+"Seam as part of a default application policy and as such does not require "
+"any additional configuration files. It allows you to write an authentication "
+"method using the entity classes that are provided by your own application. "
+"Configuring this simplified form of authentication requires the "
+"<literal>identity</literal> component to be configured in "
+"<literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:100
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:security=\"http://jboss.com/products/seam/security\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core http://jboss.com/"
+"products/seam/core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components http://jboss.com/"
+"products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/drools http://jboss.com/"
+"products/seam/drools-1.2.xsd\"\n"
+"                 http://jboss.com/products/seam/security http://jboss.com/"
+"products/seam/security-1.2.xsd\"&gt;                \n"
+"        \n"
+"    &lt;security:identity authenticate-method=\"#{authenticator.authenticate}"
+"\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:101
+#, no-c-format
+msgid ""
+"If you wish to use the advanced security features such as rule-based "
+"permission checks, all you need to do is include the Drools (JBoss Rules) "
+"jars in your classpath, and add some additional configuration, described "
+"later."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:104
+#, no-c-format
+msgid ""
+"The EL expression <literal>#{authenticator.authenticate}</literal> is a "
+"method binding indicating that the <literal>authenticate</literal> method of "
+"the <literal>authenticator</literal> component will be used to authenticate "
+"the user."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:107
+#, no-c-format
+msgid "Writing an authentication method"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:108
+#, no-c-format
+msgid ""
+"The <literal>authenticate-method</literal> property specified for "
+"<literal>identity</literal> in <literal>components.xml</literal> specifies "
+"which method will be used by <literal>SeamLoginModule</literal> to "
+"authenticate users. This method takes no parameters, and is expected to "
+"return a boolean indicating whether authentication is successful or not. The "
+"user's username and password can be obtained from <literal>Identity.instance"
+"().getUsername()</literal> and <literal>Identity.instance().getPassword()</"
+"literal>, respectively. Any roles that the user is a member of should be "
+"assigned using <literal>Identity.instance().addRole()</literal>. Here's a "
+"complete example of an authentication method inside a JavaBean component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:111
+#, no-c-format
+msgid ""
+"@Name(\"authenticator\")\n"
+"public class Authenticator {\n"
+"   @In EntityManager entityManager;\n"
+"   \n"
+"   public boolean authenticate() {\n"
+"      try\n"
+"      {\n"
+"         User user = (User) entityManager.createQuery(\n"
+"            \"from User where username = :username and password = :password"
+"\")\n"
+"            .setParameter(\"username\", Identity.instance().getUsername())\n"
+"            .setParameter(\"password\", Identity.instance().getPassword())\n"
+"            .getSingleResult();\n"
+"\n"
+"         if (user.getRoles() != null)\n"
+"         {\n"
+"            for (UserRole mr : user.getRoles())\n"
+"               Identity.instance().addRole(mr.getName());\n"
+"         }\n"
+"\n"
+"         return true;\n"
+"      }\n"
+"      catch (NoResultException ex)\n"
+"      {\n"
+"         FacesMessages.instance().add(\"Invalid username/password\");\n"
+"         return false;\n"
+"      }\n"
+"      \n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:112
+#, no-c-format
+msgid ""
+"In the above example, both <literal>User</literal> and <literal>UserRole</"
+"literal> are application-specific entity beans. The <literal>roles</literal> "
+"parameter is populated with the roles that the user is a member of, which "
+"should be added to the <literal>Set</literal> as literal string values, e.g. "
+"\"admin\", \"user\". In this case, if the user record is not found and a "
+"<literal>NoResultException</literal> thrown, the authentication method "
+"returns <literal>false</literal> to indicate the authentication failed."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:115
+#, no-c-format
+msgid "Writing a login form"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:116
+#, no-c-format
+msgid ""
+"The <literal>Identity</literal> component provides both <literal>username</"
+"literal> and <literal>password</literal> properties, catering for the most "
+"common authentication scenario. These properties can be bound directly to "
+"the username and password fields on a login form. Once these properties are "
+"set, calling the <literal>identity.login()</literal> method will "
+"authenticate the user using the provided credentials. Here's an example of a "
+"simple login form:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:119
+#, no-c-format
+msgid ""
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"name\" value=\"Username\"/&gt;\n"
+"    &lt;h:inputText id=\"name\" value=\"#{identity.username}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"password\" value=\"Password\"/&gt;\n"
+"    &lt;h:inputSecret id=\"password\" value=\"#{identity.password}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;div&gt;\n"
+"    &lt;h:commandButton value=\"Login\" action=\"#{identity.login}\"/&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:120
+#, no-c-format
+msgid ""
+"Similarly, logging out the user is done by calling <literal>#{identity."
+"logout}</literal>. Calling this action will clear the security state of the "
+"currently authenticated user."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:123
+#, no-c-format
+msgid "Simplified Configuration - Summary"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:124
+#, no-c-format
+msgid ""
+"So to sum up, there are the three easy steps to configure authentication:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:129
+#, no-c-format
+msgid ""
+"Configure an authentication method in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:134
+#, no-c-format
+msgid "Write an authentication method."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:139
+#, no-c-format
+msgid "Write a login form so that the user can authenticate."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:144
+#, no-c-format
+msgid "Handling Security Exceptions"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:145
+#, no-c-format
+msgid ""
+"To prevent users from receiving the default error page in response to a "
+"security error, it's recommended that <literal>pages.xml</literal> is "
+"configured to redirect security errors to a more \"pretty\" page. The two "
+"main types of exceptions thrown by the security API are:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:150
+#, no-c-format
+msgid ""
+"<literal>NotLoggedInException</literal> - This exception is thrown if the "
+"user attempts to access a restricted action or page when they are not logged "
+"in."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:155
+#, no-c-format
+msgid ""
+"<literal>AuthorizationException</literal> - This exception is only thrown if "
+"the user is already logged in, and they have attempted to access a "
+"restricted action or page for which they do not have the necessary "
+"privileges."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:160
+#, no-c-format
+msgid ""
+"In the case of a <literal>NotLoggedInException</literal>, it is recommended "
+"that the user is redirected to either a login or registration page so that "
+"they can log in. For an <literal>AuthorizationException</literal>, it may be "
+"useful to redirect the user to an error page. Here's an example of a "
+"<literal>pages.xml</literal> file that redirects both of these security "
+"exceptions:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:163
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"\n"
+"    ...\n"
+"    \n"
+"    &lt;exception class=\"org.jboss.seam.security.NotLoggedInException"
+"\"&gt;\n"
+"        &lt;redirect view-id=\"/login.xhtml\"&gt;\n"
+"            &lt;message&gt;You must be logged in to perform this action&lt;/"
+"message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"    \n"
+"    &lt;exception class=\"org.jboss.seam.security.AuthorizationException"
+"\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"        &lt;redirect view-id=\"/security_error.xhtml\"&gt;\n"
+"            &lt;message&gt;\n"
+"                You do not have the necessary security privileges to perform "
+"this action.\n"
+"            &lt;/message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"  \n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:164
+#, no-c-format
+msgid ""
+"Most web applications require even more sophisticated handling of login "
+"redirection, so Seam includes some special functionality for handling this "
+"problem."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:167
+#, no-c-format
+msgid "Login Redirection"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:168
+#, no-c-format
+msgid ""
+"You can ask Seam to redirect the user to a login screen when an "
+"unauthenticated user tries to access a particular view (or wildcarded view "
+"id) as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:171
+#, no-c-format
+msgid ""
+"&lt;pages login-view-id=\"/login.xhtml\"&gt;\n"
+"\n"
+"    &lt;page view-id=\"/members/*\" login-required=\"true\"/&gt;\n"
+"    \n"
+"    ...\n"
+"    \n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:172
+#, no-c-format
+msgid ""
+"(This is less of a blunt instrument than the exception handler shown above, "
+"but should probably be used in conjunction with it.)"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:175
+#, no-c-format
+msgid ""
+"After the user logs in, we want to automatically send them back where they "
+"came from, so they can retry the action that required logging in. If you add "
+"the following event listeners to <literal>components.xml</literal>, attempts "
+"to access a restricted view while not logged in will be remembered, so that "
+"upon the user successfully logging in they will be redirected to the "
+"originally requested view, with any page parameters that existed in the "
+"original request."
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:178
+#, no-c-format
+msgid ""
+"&lt;event type=\"org.jboss.seam.notLoggedIn\"&gt;\n"
+"    &lt;action expression=\"#{redirect.captureCurrentView}\"/&gt;\n"
+"&lt;/event&gt;\n"
+"    \n"
+"&lt;event type=\"org.jboss.seam.postAuthenticate\"&gt;\n"
+"    &lt;action expression=\"#{redirect.returnToCapturedView}\"/&gt;\n"
+"&lt;/event&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:179
+#, no-c-format
+msgid ""
+"Note that login redirection is implemented as a conversation-scoped "
+"mechanism, so don't end the conversation in your <literal>authenticate()</"
+"literal> method."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:182
+#, no-c-format
+msgid "Advanced Authentication Features"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:183
+#, no-c-format
+msgid ""
+"This section explores some of the advanced features provided by the security "
+"API for addressing more complex security requirements."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:186
+#, no-c-format
+msgid "Using your container's JAAS configuration"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:187
+#, no-c-format
+msgid ""
+"If you would rather not use the simplified JAAS configuration provided by "
+"the Seam Security API, you may instead delegate to the default system JAAS "
+"configuration by providing a <literal>jaasConfigName</literal> property in "
+"<literal>components.xml</literal>. For example, if you are using JBoss AS "
+"and wish to use the <literal>other</literal> policy (which uses the "
+"<literal>UsersRolesLoginModule</literal> login module provided by JBoss AS), "
+"then the entry in <literal>components.xml</literal> would look like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:190
+#, no-c-format
+msgid ""
+"&lt;security:identity authenticate-method=\"#{authenticator.authenticate}"
+"\" \n"
+"                      jaas-config-name=\"other\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:191
+#, no-c-format
+msgid "Authorization"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:192
+#, no-c-format
+msgid ""
+"There are a number of authorization features provided by the Seam Security "
+"API for securing access to components, component methods, and pages. This "
+"section describes each of these. An important thing to note is that if you "
+"wish to use any of the advanced features (such as rule-based permissions) "
+"then your <literal>components.xml</literal> must be configured to support "
+"this - see the Configuration section above."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:195
+#, no-c-format
+msgid "Core concepts"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:196
+#, no-c-format
+msgid ""
+"Each of the authorization mechanisms provided by the Seam Security API are "
+"built upon the concept of a user being granted roles and/or permissions. A "
+"role is a <emphasis>group</emphasis>, or <emphasis>type</emphasis>, of user "
+"that may have been granted certain privileges for performing one or more "
+"specific actions within an application. A permission on the other hand is a "
+"privilege (sometimes once-off) for performing a single, specific action. It "
+"is entirely possible to build an application using nothing but permissions, "
+"however roles offer a higher level of convenience when granting privileges "
+"to groups of users."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:199
+#, no-c-format
+msgid ""
+"Roles are simple, consisting of only a name such as \"admin\", \"user\", "
+"\"customer\", etc. Permissions consist of both a name and an action, and are "
+"represented within this documentation in the form <literal>name:action</"
+"literal>, for example <literal>customer:delete</literal>, or "
+"<literal>customer:insert</literal>."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:202
+#, no-c-format
+msgid "Securing components"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:203
+#, no-c-format
+msgid ""
+"Let's start by examining the simplest form of authorization, component "
+"security, starting with the <literal>@Restrict</literal> annotation."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:206
+#, no-c-format
+msgid "The @Restrict annotation"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:207
+#, no-c-format
+msgid ""
+"Seam components may be secured either at the method or the class level, "
+"using the <literal>@Restrict</literal> annotation. If both a method and it's "
+"declaring class are annotated with <literal>@Restrict</literal>, the method "
+"restriction will take precedence (and the class restriction will not apply). "
+"If a method invocation fails a security check, then an exception will be "
+"thrown as per the contract for <literal>Identity.checkRestriction()</"
+"literal> (see Inline Restrictions). A <literal>@Restrict</literal> on just "
+"the component class itself is equivalent to adding <literal>@Restrict</"
+"literal> to each of its methods."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:210
+#, no-c-format
+msgid ""
+"An empty <literal>@Restrict</literal> implies a permission check of "
+"<literal>componentName:methodName</literal>. Take for example the following "
+"component method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:213
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class AccountAction {\n"
+"    @Restrict public void delete() {\n"
+"      ...\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:214
+#, no-c-format
+msgid ""
+"In this example, the implied permission required to call the <literal>delete"
+"()</literal> method is <literal>account:delete</literal>. The equivalent of "
+"this would be to write <literal>@Restrict(\"#{s:hasPermission"
+"('account','delete',null)}\")</literal>. Now let's look at another example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:217
+#, no-c-format
+msgid ""
+"@Restrict @Name(\"account\")\n"
+"public class AccountAction {\n"
+"    public void insert() {\n"
+"      ...\n"
+"    }\n"
+"    @Restrict(\"#{s:hasRole('admin')}\") \n"
+"    public void delete() {\n"
+"      ...\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:218
+#, no-c-format
+msgid ""
+"This time, the component class itself is annotated with <literal>@Restrict</"
+"literal>. This means that any methods without an overriding "
+"<literal>@Restrict</literal> annotation require an implicit permission "
+"check. In the case of this example, the <literal>insert()</literal> method "
+"requires a permission of <literal>account:insert</literal>, while the "
+"<literal>delete()</literal> method requires that the user is a member of the "
+"<literal>admin</literal> role."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:221
+#, no-c-format
+msgid ""
+"Before we go any further, let's address the <literal>#{s:hasRole()}</"
+"literal> expression seen in the above example. Both <literal>s:hasRole</"
+"literal> and <literal>s:hasPermission</literal> are EL functions, which "
+"delegate to the correspondingly named methods of the <literal>Identity</"
+"literal> class. These functions can be used within any EL expression "
+"throughout the entirety of the security API."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:224
+#, no-c-format
+msgid ""
+"Being an EL expression, the value of the <literal>@Restrict</literal> "
+"annotation may reference any objects that exist within a Seam context. This "
+"is extremely useful when performing permission checks for a specific object "
+"instance. Look at this example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:227
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class AccountAction {\n"
+"    @In Account selectedAccount;\n"
+"    @Restrict(\"#{s:hasPermission('account','modify',selectedAccount)}\")\n"
+"    public void modify() {\n"
+"        selectedAccount.modify();\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:228
+#, no-c-format
+msgid ""
+"The interesting thing to note from this example is the reference to "
+"<literal>selectedAccount</literal> seen within the <literal>hasPermission()</"
+"literal> function call. The value of this variable will be looked up from "
+"within the Seam context, and passed to the <literal>hasPermission()</"
+"literal> method in <literal>Identity</literal>, which in this case can then "
+"determine if the user has the required permission for modifying the "
+"specified <literal>Account</literal> object."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:231
+#, no-c-format
+msgid "Inline restrictions"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:232
+#, no-c-format
+msgid ""
+"Sometimes it might be desirable to perform a security check in code, without "
+"using the <literal>@Restrict</literal> annotation. In this situation, simply "
+"use <literal>Identity.checkRestriction()</literal> to evaluate a security "
+"expression, like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:235
+#, no-c-format
+msgid ""
+"public void deleteCustomer() {\n"
+"    Identity.instance().checkRestriction(\"#{s:hasPermission"
+"('customer','delete',\n"
+"        selectedCustomer)}\");\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:236
+#, no-c-format
+msgid ""
+"If the expression specified doesn't evaluate to <literal>true</literal>, "
+"either"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:241
+#, no-c-format
+msgid ""
+"if the user is not logged in, a <literal>NotLoggedInException</literal> "
+"exception is thrown or"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:246
+#, no-c-format
+msgid ""
+"if the user is logged in, an <literal>AuthorizationException</literal> "
+"exception is thrown."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:251
+#, no-c-format
+msgid ""
+"It is also possible to call the <literal>hasRole()</literal> and "
+"<literal>hasPermission()</literal> methods directly from Java code:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:254
+#, no-c-format
+msgid ""
+"if (!Identity.instance().hasRole(\"admin\"))\n"
+"     throw new AuthorizationException(\"Must be admin to perform this action"
+"\");\n"
+"\n"
+"if (!Identity.instance().hasPermission(\"customer\", \"create\", null))\n"
+"     throw new AuthorizationException(\"You may not create new customers\");"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:255
+#, no-c-format
+msgid "Security in the user interface"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:256
+#, no-c-format
+msgid ""
+"One indication of a well designed user interface is that the user is not "
+"presented with options for which they don't have the necessary privileges to "
+"use. Seam Security allows conditional rendering of either 1) sections of a "
+"page or 2) individual controls, based upon the privileges of the user, using "
+"the very same EL expressions that are used for component security."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:259
+#, no-c-format
+msgid ""
+"Let's take a look at some examples of interface security. First of all, "
+"let's pretend that we have a login form that should only be rendered if the "
+"user is not already logged in. Using the <literal>identity.isLoggedIn()</"
+"literal> property, we can write this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:262
+#, no-c-format
+msgid ""
+"&lt;h:form class=\"loginForm\" rendered=\"#{not identity.loggedIn}\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:263
+#, no-c-format
+msgid ""
+"If the user isn't logged in, then the login form will be rendered - very "
+"straight forward so far. Now let's pretend there is a menu on the page that "
+"contains some actions which should only be accessible to users in the "
+"<literal>manager</literal> role. Here's one way that these could be written:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:266
+#, no-c-format
+msgid ""
+"&lt;h:outputLink action=\"#{reports.listManagerReports}\" rendered=\"#{s:"
+"hasRole('manager')}\"&gt;\n"
+"    Manager Reports\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:267
+#, no-c-format
+msgid ""
+"This is also quite straight forward. If the user is not a member of the "
+"<literal>manager</literal> role, then the outputLink will not be rendered. "
+"The <literal>rendered</literal> attribute can generally be used on the "
+"control itself, or on a surrounding <literal>&lt;s:div&gt;</literal> or "
+"<literal>&lt;s:span&gt;</literal> control."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:270
+#, no-c-format
+msgid ""
+"Now for something more complex. Let's say you have a <literal>h:dataTable</"
+"literal> control on a page listing records for which you may or may not wish "
+"to render action links depending on the user's privileges. The <literal>s:"
+"hasPermission</literal> EL function allows us to pass in an object parameter "
+"which can be used to determine whether the user has the requested permission "
+"for that object or not. Here's how a dataTable with secured links might look:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:273
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{clients}\" var=\"cl\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Name&lt;/f:facet&gt;\n"
+"        #{cl.name}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;City&lt;/f:facet&gt;\n"
+"        #{cl.city}\n"
+"    &lt;/h:column&gt;   \n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"        &lt;s:link value=\"Modify Client\" action=\"#{clientAction.modify}"
+"\"\n"
+"                rendered=\"#{s:hasPermission('client','modify',cl)\"/&gt;\n"
+"        &lt;s:link value=\"Delete Client\" action=\"#{clientAction.delete}"
+"\"\n"
+"                rendered=\"#{s:hasPermission('client','delete',cl)\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:274
+#, no-c-format
+msgid "Securing pages"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:275
+#, no-c-format
+msgid ""
+"Page security requires that the application is using a <literal>pages.xml</"
+"literal> file, however is extremely simple to configure. Simply include a "
+"<literal>&lt;restrict/&gt;</literal> element within the <literal>page</"
+"literal> elements that you wish to secure. By default, if a value is not "
+"provided for the <literal>restrict</literal> element, an implied permission "
+"of <literal>{viewId}:render</literal> will be checked for whenever accessing "
+"that page. Otherwise the value will be evaluated as a standard security "
+"expression. Here's a couple of examples:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:278
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/settings.xhtml\"&gt;\n"
+"    &lt;restrict/&gt;\n"
+"&lt;/page&gt;\n"
+"        \n"
+"&lt;page view-id=\"/reports.xhtml\"&gt;    \n"
+"    &lt;restrict&gt;#{s:hasRole('admin')}&lt;/restrict&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:279
+#, no-c-format
+msgid ""
+"In the above example, the first page has an implied permission restriction "
+"of <literal>/settings.xhtml:render</literal>, while the second one checks "
+"that the user is a member of the <literal>admin</literal> role."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:282
+#, no-c-format
+msgid "Securing Entities"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:283
+#, no-c-format
+msgid ""
+"Seam security also makes it possible to apply security restrictions to read, "
+"insert, update and delete actions for entities."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:286
+#, no-c-format
+msgid ""
+"To secure all actions for an entity class, add a <literal>@Restrict</"
+"literal> annotation on the class itself:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:289
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"customer\")\n"
+"@Restrict\n"
+"public class Customer {\n"
+"  ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:290
+#, no-c-format
+msgid ""
+"If no expression is specified in the <literal>@Restrict</literal> "
+"annotation, the default security check that is performed is a permission "
+"check of <literal>entityName:action</literal>, where <literal>entityName</"
+"literal> is the name of the entity (or the class name if no @Name is "
+"specified), and the <literal>action</literal> is either <literal>read</"
+"literal>, <literal>insert</literal>, <literal>update</literal> or "
+"<literal>delete</literal>."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:293
+#, no-c-format
+msgid ""
+"It is also possible to only restrict certain actions, by placing a "
+"<literal>@Restrict</literal> annotation on the relevent entity lifecycle "
+"method (annotated as follows):"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:298
+#, no-c-format
+msgid ""
+"<literal>@PostLoad</literal> - Called after an entity instance is loaded "
+"from the database. Use this method to configure a <literal>read</literal> "
+"permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:303
+#, no-c-format
+msgid ""
+"<literal>@PrePersist</literal> - Called before a new instance of the entity "
+"is inserted. Use this method to configure an <literal>insert</literal> "
+"permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:308
+#, no-c-format
+msgid ""
+"<literal>@PreUpdate</literal> - Called before an entity is updated. Use this "
+"method to configure an <literal>update</literal> permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:313
+#, no-c-format
+msgid ""
+"<literal>@PreRemove</literal> - Called before an entity is deleted. Use this "
+"method to configure a <literal>delete</literal> permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:318
+#, no-c-format
+msgid ""
+"Here's an example of how an entity would be configured to perform a security "
+"check for any <literal>insert</literal> operations. Please note that the "
+"method is not required to do anything, the only important thing in regard to "
+"security is how it is annotated:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:321
+#, no-c-format
+msgid ""
+"@PrePersist @Restrict\n"
+"  public void prePersist() {}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:322
+#, no-c-format
+msgid ""
+"And here's an example of an entity permission rule that checks if the "
+"authenticated user is allowed to create a new blog entry (from the seamspace "
+"example):"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:325
+#, no-c-format
+msgid ""
+"rule InsertMemberBlog\n"
+"  no-loop\n"
+"  activation-group \"permissions\"\n"
+"when\n"
+"  c: PermissionCheck(name == \"memberBlog\", action == \"insert\", granted "
+"== false)\n"
+"  Principal(nm : name)\n"
+"  MemberBlog(mbr : member -&gt; (mbr.getUsername().equals(nm)))\n"
+"then\n"
+"  c.grant();\n"
+"  modify(c);\n"
+"end;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:326
+#, no-c-format
+msgid ""
+"Finally, we need to install a listener class that integrates Seam security "
+"with your JPA provider."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:329
+#, no-c-format
+msgid "Entity security with JPA"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:330
+#, no-c-format
+msgid ""
+"Security checks for EJB3 entity beans are performed with an "
+"<literal>EntityListener</literal>. You can install this listener by using "
+"the following <literal>META-INF/orm.xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:333
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;entity-mappings xmlns=\"http://java.sun.com/xml/ns/persistence/orm\"\n"
+"                 xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"                 xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence/"
+"orm \n"
+"                 http://java.sun.com/xml/ns/persistence/orm_1_0.xsd\"\n"
+"                 version=\"1.0\"&gt;\n"
+"                 \n"
+"    &lt;persistence-unit-metadata&gt;\n"
+"        &lt;persistence-unit-defaults&gt;\n"
+"            &lt;entity-listeners&gt;\n"
+"                &lt;entity-listener class=\"org.jboss.seam.security."
+"EntitySecurityListener\"/&gt;\n"
+"            &lt;/entity-listeners&gt;\n"
+"        &lt;/persistence-unit-defaults&gt;\n"
+"    &lt;/persistence-unit-metadata&gt;\n"
+"    \n"
+"&lt;/entity-mappings&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:334
+#, no-c-format
+msgid "Entity security with Hibernate"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:335
+#, no-c-format
+msgid ""
+"If you are using a Hibernate <literal>SessionFactory</literal> configured "
+"via Seam, you don't need to do anything special to use entity security."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:338
+#, no-c-format
+msgid "Writing Security Rules"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:339
+#, no-c-format
+msgid ""
+"Up to this point there has been a lot of mention of permissions, but no "
+"information about how permissions are actually defined or granted. This "
+"section completes the picture, by explaining how permission checks are "
+"processed, and how to implement permission checks for a Seam application."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:342
+#, no-c-format
+msgid "Permissions Overview"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:343
+#, no-c-format
+msgid ""
+"So how does the security API know whether a user has the <literal>customer:"
+"modify</literal> permission for a specific customer? Seam Security provides "
+"quite a novel method for determining user permissions, based on JBoss Rules. "
+"A couple of the advantages of using a rule engine are 1) a centralized "
+"location for the business logic that is behind each user permission, and 2) "
+"speed - JBoss Rules uses very efficient algorithms for evaluating large "
+"numbers of complex rules involving multiple conditions."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:346
+#, no-c-format
+msgid "Configuring a rules file"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:347
+#, no-c-format
+msgid ""
+"Seam Security expects to find a <literal>RuleBase</literal> component called "
+"<literal>securityRules</literal> which it uses to evaluate permission "
+"checks. This is configured in <literal>components.xml</literal> as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:350
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:security=\"http://jboss.com/products/seam/security\"\n"
+"            xmlns:drools=\"http://jboss.com/products/seam/drools\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                     http://jboss.com/products/seam/core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components  \n"
+"                     http://jboss.com/products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/drools \n"
+"                     http://jboss.com/products/seam/drools-1.2.xsd\"\n"
+"                 http://jboss.com/products/seam/security \n"
+"                     http://jboss.com/products/seam/security-1.2.xsd"
+"\"&gt;                 \n"
+"        \n"
+"   &lt;drools:rule-base name=\"securityRules\"&gt;\n"
+"       &lt;drools:rule-files&gt;\n"
+"           &lt;value&gt;/META-INF/security.drl&lt;/value&gt;\n"
+"       &lt;/drools:rule-files&gt;\n"
+"   &lt;/drools:rule-base&gt;    \n"
+"   \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:351
+#, no-c-format
+msgid ""
+"Once the <literal>RuleBase</literal> component is configured, it's time to "
+"write the security rules."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:354
+#, no-c-format
+msgid "Creating a security rules file"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:355
+#, no-c-format
+msgid ""
+"For this step you need to create a file called <literal>security.drl</"
+"literal> in the <literal>/META-INF</literal> directory of your application's "
+"jar file. In actual fact this file can be called anything you want, and "
+"exist in any location as long as it is configured appropriately in "
+"<literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:358
+#, no-c-format
+msgid ""
+"So what should the security rules file contain? At this stage it might be a "
+"good idea to at least skim through the JBoss Rules documentation, however to "
+"get started here's an extremely simple example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:361
+#, no-c-format
+msgid ""
+"package MyApplicationPermissions;\n"
+"\n"
+"import org.jboss.seam.security.PermissionCheck;\n"
+"import org.jboss.seam.security.Role;\n"
+"\n"
+"rule CanUserDeleteCustomers\n"
+"when\n"
+"  c: PermissionCheck(name == \"customer\", action == \"delete\")\n"
+"  Role(name == \"admin\")\n"
+"then\n"
+"  c.grant();\n"
+"end;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:362
+#, no-c-format
+msgid ""
+"Let's break this down. The first thing we see is the package declaration. A "
+"package in JBoss Rules is essentially a collection of rules. The package "
+"name can be anything you want - it doesn't relate to anything else outside "
+"the scope of the rule base."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:365
+#, no-c-format
+msgid ""
+"The next thing we can notice is a couple of import statements for the "
+"<literal>PermissionCheck</literal> and <literal>Role</literal> classes. "
+"These imports inform the rules engine that we'll be referencing these "
+"classes within our rules."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:368
+#, no-c-format
+msgid ""
+"Finally we have the code for the rule. Each rule within a package should be "
+"given a unique name (usually describing the purpose of the rule). In this "
+"case our rule is called <literal>CanUserDeleteCustomers</literal> and will "
+"be used to check whether a user is allowed to delete a customer record."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:371
+#, no-c-format
+msgid ""
+"Looking at the body of the rule definition we can notice two distinct "
+"sections. Rules have what is known as a left hand side (LHS) and a right "
+"hand side (RHS). The LHS consists of the conditional part of the rule, i.e. "
+"a list of conditions which must be satisfied for the rule to fire. The LHS "
+"is represented by the <literal>when</literal> section. The RHS is the "
+"consequence, or action section of the rule that will only be fired if all of "
+"the conditions in the LHS are met. The RHS is represented by the "
+"<literal>then</literal> section. The end of the rule is denoted by the "
+"<literal>end;</literal> line."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:374
+#, no-c-format
+msgid ""
+"If we look at the LHS of the rule, we see two conditions listed there. Let's "
+"examine the first condition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:377
+#, no-c-format
+msgid "c: PermissionCheck(name == \"customer\", action == \"delete\")"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:378
+#, no-c-format
+msgid ""
+"In plain english, this condition is stating that there must exist a "
+"<literal>PermissionCheck</literal> object with a <literal>name</literal> "
+"property equal to \"customer\", and an <literal>action</literal> property "
+"equal to \"delete\" within the working memory. What is the working memory? "
+"It is a session-scoped object that contains the contextual information that "
+"is required by the rules engine to make a decision about a permission check. "
+"Each time the <literal>hasPermission()</literal> method is called, a "
+"temporary <literal>PermissionCheck</literal> object, or <emphasis>Fact</"
+"emphasis>, is asserted into the working memory. This "
+"<literal>PermissionCheck</literal> corresponds exactly to the permission "
+"that is being checked, so for example if you call <literal>hasPermission"
+"(\"account\", \"create\", null)</literal> then a <literal>PermissionCheck</"
+"literal> object with a <literal>name</literal> equal to \"account\" and "
+"<literal>action</literal> equal to \"create\" will be asserted into the "
+"working memory for the duration of the permission check."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:381
+#, no-c-format
+msgid ""
+"So what else is in the working memory? Besides the short-lived temporary "
+"facts asserted during a permission check, there are some longer-lived "
+"objects in the working memory that stay there for the entire duration of a "
+"user being authenticated. These include any <literal>java.security."
+"Principal</literal> objects that are created as part of the authentication "
+"process, plus a <literal>org.jboss.seam.security.Role</literal> object for "
+"each of the roles that the user is a member of. It is also possible to "
+"assert additional long-lived facts into the working memory by calling "
+"<literal>Identity.instance().getSecurityContext().assertObject()</literal>, "
+"passing the object as a parameter."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:384
+#, no-c-format
+msgid ""
+"Getting back to our simple example, we can also notice that the first line "
+"of our LHS is prefixed with <literal>c:</literal>. This is a variable "
+"binding, and is used to refer back to the object that is matched by the "
+"condition. Moving onto the second line of our LHS, we see this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:387
+#, no-c-format
+msgid "Role(name == \"admin\")"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:388
+#, no-c-format
+msgid ""
+"This condition simply states that there must be a <literal>Role</literal> "
+"object with a <literal>name</literal> of \"admin\" within the working "
+"memory. As mentioned, user roles are asserted into the working memory as "
+"long-lived facts. So, putting both conditions together, this rule is "
+"essentially saying \"I will fire if you are checking for the "
+"<literal>customer:delete</literal> permission and the user is a member of "
+"the <literal>admin</literal> role\"."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:391
+#, no-c-format
+msgid ""
+"So what is the consequence of the rule firing? Let's take a look at the RHS "
+"of the rule:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:394
+#, no-c-format
+msgid "c.grant()"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:395
+#, no-c-format
+msgid ""
+"The RHS consists of Java code, and in this case is invoking the "
+"<literal>grant()</literal> method of the <literal>c</literal> object, which "
+"as already mentioned is a variable binding for the <literal>PermissionCheck</"
+"literal> object. Besides the <literal>name</literal> and <literal>action</"
+"literal> properties of the <literal>PermissionCheck</literal> object, there "
+"is also a <literal>granted</literal> property which is initially set to "
+"<literal>false</literal>. Calling <literal>grant()</literal> on a "
+"<literal>PermissionCheck</literal> sets the <literal>granted</literal> "
+"property to <literal>true</literal>, which means that the permission check "
+"was successful, allowing the user to carry out whatever action the "
+"permission check was intended for."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:398
+#, no-c-format
+msgid "SSL Security"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:399
+#, no-c-format
+msgid ""
+"Seam includes basic support for serving sensitive pages via the HTTPS "
+"protocol. This is easily configured by specifying a <literal>scheme</"
+"literal> for the page in <literal>pages.xml</literal>. The following example "
+"shows how the view <literal>/login.xhtml</literal> is configured to use "
+"HTTPS:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:402
+#, no-c-format
+msgid "&lt;page view-id=\"/login.xhtml\" scheme=\"https\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:403
+#, no-c-format
+msgid ""
+"This configuration is automatically extended to both <literal>s:link</"
+"literal> and <literal>s:button</literal> JSF controls, which (when "
+"specifying the <literal>view</literal>) will also render the link using the "
+"correct protocol. Based on the previous example, the following link will use "
+"the HTTPS protocol because <literal>/login.xhtml</literal> is configured to "
+"use it:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:406
+#, no-c-format
+msgid "&lt;s:link view=\"/login.xhtml\" value=\"Login\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:407
+#, no-c-format
+msgid ""
+"Browsing directly to a view when using the <emphasis>incorrect</emphasis> "
+"protocol will cause a redirect to the same view using the <emphasis>correct</"
+"emphasis> protocol. For example, browsing to a page that has <literal>scheme="
+"\"https\"</literal> using HTTP will cause a redirect to the same page using "
+"HTTPS."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:410
+#, no-c-format
+msgid ""
+"It is also possible to configure a default <literal>scheme</literal> for all "
+"pages. This is actually quite important, as you might only wish to use HTTPS "
+"for a few pages, and if no default scheme is specified then the default "
+"behavior is to continue using the current scheme. What this means is that "
+"once you enter a page with HTTPS, then HTTPS will continue to be used even "
+"if you navigate away to other non-HTTPS pages (a bad thing!). So it is "
+"strongly recommended to include a default <literal>scheme</literal>, by "
+"configuring it on the default (<literal>\"*\"</literal>) view:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:413
+#, no-c-format
+msgid "&lt;page view-id=\"*\" scheme=\"http\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:414
+#, no-c-format
+msgid ""
+"Of course, if <emphasis>none</emphasis> of the pages in your application use "
+"HTTPS then it is not required to specify a default scheme."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:417
+#, no-c-format
+msgid "Implementing a Captcha Test"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:418
+#, no-c-format
+msgid ""
+"Though strictly not part of the security API, it might be useful in certain "
+"circumstances (such as new user registrations, posting to a public blog or "
+"forum) to implement a Captcha (<emphasis>C</emphasis>ompletely <emphasis>A</"
+"emphasis>utomated <emphasis>P</emphasis>ublic <emphasis>T</emphasis>uring "
+"test to tell <emphasis>C</emphasis>omputers and <emphasis>H</emphasis>umans "
+"<emphasis>A</emphasis>part) to prevent automated bots from interacting with "
+"your application. Seam provides seamless integration with JCaptcha, an "
+"excellent library for generating Captcha challenges. If you wish to use the "
+"captcha feature in your application you need to include the jcaptcha-* jar "
+"file from the Seam lib directory in your project, and register it in "
+"<literal>application.xml</literal> as a java module."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:421
+#, no-c-format
+msgid "Configuring the Captcha Servlet"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:422
+#, no-c-format
+msgid ""
+"To get up and running, it is necessary to configure the Seam Resource "
+"Servlet, which will provide the Captcha challenge images to your pages. This "
+"requires the following entry in <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:425
+#, no-c-format
+msgid ""
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"    \n"
+"&lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:426
+#, no-c-format
+msgid "Adding a Captcha to a page"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:427
+#, no-c-format
+msgid ""
+"Adding a captcha challenge to a page is extremely easy. Seam provides a page-"
+"scoped component, <literal>captcha</literal>, which provides everything that "
+"is required, including built-in captcha validation. Here's an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:430
+#, no-c-format
+msgid ""
+"&lt;div&gt;\n"
+"    &lt;h:graphicImage value=\"/seam/resource/captcha?#{captcha.id}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"  \n"
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"verifyCaptcha\"&gt;Enter the above letters&lt;/h:"
+"outputLabel&gt;\n"
+"    &lt;h:inputText id=\"verifyCaptcha\" value=\"#{captcha.response}\" "
+"required=\"true\"/&gt;\n"
+"    &lt;div class=\"validationError\"&gt;&lt;h:message for=\"verifyCaptcha\"/"
+"&gt;&lt;/div&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:431
+#, no-c-format
+msgid ""
+"That's all there is to it. The <literal>graphicImage</literal> control "
+"displays the Captcha challenge, and the <literal>inputText</literal> "
+"receives the user's response. The response is automatically validated "
+"against the Captcha when the form is submitted."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Spring.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Spring.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Spring.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,416 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Spring.xml:10
+#, no-c-format
+msgid "Spring Framework integration"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:11
+#, no-c-format
+msgid ""
+"The Spring integration module allows easy migration of Spring-based projects "
+"to Seam and allows Spring applications to take advantage of key Seam "
+"features like conversations and Seam's more sophisticated persistence "
+"context management."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:14
+#, no-c-format
+msgid "Seam's support for Spring provides the ability to:"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:19
+#, no-c-format
+msgid "inject Seam component instances into Spring beans"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:24
+#, no-c-format
+msgid "inject Spring beans into Seam components"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:29
+#, no-c-format
+msgid "turn Spring beans into Seam components"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:34
+#, no-c-format
+msgid "allow Spring beans to live in any Seam context"
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:40
+#, no-c-format
+msgid "Injecting Seam components into Spring beans"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:41
+#, no-c-format
+msgid ""
+"Injecting Seam component instances into Spring beans is accomplished using "
+"the <literal>&lt;seam:instance/&gt;</literal> namespace handler. To enable "
+"the Seam namespace handler, the Seam namespace must be added to the Spring "
+"beans definition file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:44
+#, no-c-format
+msgid ""
+"&lt;beans xmlns=\"http://www.springframework.org/schema/beans\"\n"
+"    xmlns:seam=\"http://jboss.com/products/seam/spring\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://www.springframework.org/schema/beans \n"
+"                        http://www.springframework.org/schema/beans/spring-"
+"beans-2.0.xsd\n"
+"                        http://jboss.com/products/seam/spring \n"
+"                        http://jboss.com/products/seam/spring-1.2.xsd\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:45
+#, no-c-format
+msgid "Now any Seam component may be injected into any Spring bean:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:48
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\"&gt;\n"
+"        &lt;seam:instance name=\"someComponent\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:49
+#, no-c-format
+msgid "An EL expression may be used instead of a component name:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:52
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\"&gt;\n"
+"        &lt;seam:instance name=\"#{someExpression}\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:53
+#, no-c-format
+msgid ""
+"Seam component instances may even be made available for injection into "
+"Spring beans by a Spring bean id."
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:56
+#, no-c-format
+msgid ""
+"&lt;seam:instance name=\"someComponent\" id=\"someSeamComponentInstance\"/"
+"&gt;\n"
+"\n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\" ref=\"someSeamComponentInstance"
+"\"&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:57
+#, no-c-format
+msgid "Now for the caveat!"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:60
+#, no-c-format
+msgid ""
+"Seam was designed from the ground up to support a stateful component model "
+"with multiple contexts. Spring was not. Unlike Seam bijection, Spring "
+"injection does not occur at method invocation time. Instead, injection "
+"happens only when the Spring bean is instantiated. So the instance available "
+"when the bean is instantiated will be the same instance that the bean uses "
+"for the entire life of the bean. For example, if a Seam "
+"<literal>CONVERSATION</literal>-scoped component instance is directly "
+"injected into a singleton Spring bean, that singleton will hold a reference "
+"to the same instance long after the conversation is over! We call this "
+"problem <emphasis>scope impedance</emphasis>. Seam bijection ensures that "
+"scope impedance is maintained naturally as an invocation flows through the "
+"system. In Spring, we need to inject a proxy of the Seam component, and "
+"resolve the reference when the proxy is invoked."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:63
+#, no-c-format
+msgid ""
+"The <literal>&lt;seam:instance/&gt;</literal> tag lets us automatically "
+"proxy the Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:66
+#, no-c-format
+msgid ""
+"&lt;seam:instance id=\"seamManagedEM\" name=\"someManagedEMComponent\" proxy="
+"\"true\"/&gt;\n"
+"        \n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\"&gt;\n"
+"    &lt;property name=\"entityManager\" ref=\"seamManagedEM\"&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:67
+#, no-c-format
+msgid ""
+"This example shows one way to use a Seam-managed persistence context from a "
+"Spring bean. (A more robust way to use Seam-managed persistence contexts as "
+"a replacement for the Spring <literal>OpenEntityManagerInView</literal> "
+"filter will be provided in a future release)"
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:73
+#, no-c-format
+msgid "Injecting Spring beans into Seam components"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:74
+#, no-c-format
+msgid ""
+"It is even easier to inject Spring beans into Seam component instances. "
+"Actually, there are two possible approaches:"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:79
+#, no-c-format
+msgid "inject a Spring bean using an EL expression"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:84
+#, no-c-format
+msgid "make the Spring bean a Seam component"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:89
+#, no-c-format
+msgid ""
+"We'll discuss the second option in the next section. The easiest approach is "
+"to access the Spring beans via EL."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:92
+#, no-c-format
+msgid ""
+"The Spring <literal>DelegatingVariableResolver</literal> is an integration "
+"point Spring provides for integrating Spring with JSF. This "
+"<literal>VariableResolver</literal> makes all Spring beans available in EL "
+"by their bean id. You'll need to add the "
+"<literal>DelegatingVariableResolver</literal> to <literal>faces-config.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:95
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;variable-resolver&gt;\n"
+"        org.springframework.web.jsf.DelegatingVariableResolver\n"
+"    &lt;/variable-resolver&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:96
+#, no-c-format
+msgid "Then you can inject Spring beans using <literal>@In</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:99
+#, no-c-format
+msgid ""
+"@In(\"#{bookingService}\")\n"
+"private BookingService bookingService;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:100
+#, no-c-format
+msgid ""
+"The use of Spring beans in EL is not limited to injection. Spring beans may "
+"be used anywhere that EL expressions are used in Seam: process and pageflow "
+"definitions, working memory assertions, etc..."
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:106
+#, no-c-format
+msgid "Making a Spring bean into a Seam component"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:107
+#, no-c-format
+msgid ""
+"The <literal>&lt;seam:component/&gt;</literal> namespace handler can be used "
+"to make any Spring bean a Seam component. Just place the <literal>&lt;seam:"
+"component/&gt;</literal> tag within the declaration of the bean that you "
+"wish to be a Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:110
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;seam:component/&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:111
+#, no-c-format
+msgid ""
+"By default, <literal>&lt;seam:component/&gt;</literal> will create a "
+"<literal>STATELESS</literal> Seam component with class and name provided in "
+"the bean definition. Occasionally, such as when a <literal>FactoryBean</"
+"literal> is used, the class of the Spring bean may not be the class "
+"appearing in the bean definition. In such cases the <literal>beanClass</"
+"literal> should be explicitly specified. A Seam component name may be "
+"explicitly specified in cases where there is potential for a naming conflict."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:114
+#, no-c-format
+msgid ""
+"The <literal>scope</literal> attribute of <literal>&lt;seam:component/&gt;</"
+"literal> may be used if you wish the Spring bean to be managed in a "
+"particular Seam scope. The Spring bean must be scoped to <literal>prototype</"
+"literal> if the Seam scope specified is anything other than "
+"<literal>STATELESS</literal>. Pre-existing Spring beans usually have a "
+"fundamentally stateless character, so this attribute is not usually needed."
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:120
+#, no-c-format
+msgid "Seam-scoped Spring beans"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:121
+#, no-c-format
+msgid ""
+"The Seam integration package also lets you use Seam's contexts as Spring 2.0 "
+"style custom scopes. This lets you declare any Spring bean in any of Seam's "
+"contexts. However, note once again that Spring's component model was never "
+"architected to support statefulness, so please use this feature with great "
+"care. In particular, clustering of session or conversation scoped Spring "
+"beans is deeply problematic, and care must be taken when injecting a bean or "
+"component from a wider scope into a bean of a narrower scope."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:124
+#, no-c-format
+msgid ""
+"By specifying <literal>&lt;seam:configure-scopes/&gt;</literal> once in a "
+"Spring bean factory configuration, all of the Seam scopes will be available "
+"to Spring beans as custom scopes. To associate a Spring bean with a "
+"particular Seam scope, specify the Seam scope in the <literal>scope</"
+"literal> attribute of the bean definition."
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:127
+#, no-c-format
+msgid ""
+"&lt;!-- Only needs to be specified once per bean factory--&gt;\n"
+"&lt;seam:configure-scopes/&gt;\n"
+"\n"
+"...\n"
+"\n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope=\"seam."
+"CONVERSATION\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:128
+#, no-c-format
+msgid ""
+"The prefix of the scope name may be changed by specifying the "
+"<literal>prefix</literal> attribute in the <literal>configure-scopes</"
+"literal> definition. (The default prefix is <literal>seam.</literal>)"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:131
+#, no-c-format
+msgid ""
+"Seam-scoped Spring beans defined this way can be injected into other Spring "
+"beans without the use of <literal>&lt;seam:instance/&gt;</literal>. However, "
+"care must be taken to ensure scope impedance is maintained. The normal "
+"approach used in Spring is to specify <literal>&lt;aop:scoped-proxy/&gt;</"
+"literal> in the bean definition. However, Seam-scoped Spring beans are "
+"<emphasis>not</emphasis> compatible with <literal>&lt;aop:scoped-proxy/&gt;</"
+"literal>. So if you need to inject a Seam-scoped Spring bean into a "
+"singleton, <literal>&lt;seam:instance/&gt;</literal> must be used:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:134
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope=\"seam."
+"CONVERSATION\"/&gt;\n"
+"\n"
+"...\n"
+"\n"
+"&lt;bean id=\"someSingleton\"&gt;\n"
+"    &lt;property name=\"someSeamScopedSpringBean\"&gt;\n"
+"        &lt;seam:instance name=\"someSpringBean\" proxy=\"true\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Testing.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Testing.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Testing.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,342 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Testing.xml:10
+#, no-c-format
+msgid "Testing Seam applications"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:11
+#, no-c-format
+msgid ""
+"Most Seam applications will need at least two kinds of automated tests: "
+"<emphasis>unit tests</emphasis>, which test a particular Seam component in "
+"isolation, and scripted <emphasis>integration tests</emphasis> which "
+"exercise all Java layers of the application (that is, everything except the "
+"view pages)."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:14
+#, no-c-format
+msgid "Both kinds of tests are very easy to write."
+msgstr ""
+
+#. Tag: title
+#: Testing.xml:18
+#, no-c-format
+msgid "Unit testing Seam components"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:19
+#, no-c-format
+msgid ""
+"All Seam components are POJOs. This is a great place to start if you want "
+"easy unit testing. And since Seam emphasises the use of bijection for inter-"
+"component interactions and access to contextual objects, it's very easy to "
+"test a Seam component outside of its normal runtime environment."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:22
+#, no-c-format
+msgid "Consider the following Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:25
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Scope(EVENT)\n"
+"@Name(\"register\")\n"
+"public class RegisterAction implements Register\n"
+"{\n"
+"   private User user;\n"
+"   private EntityManager em;\n"
+"\n"
+"   @In\n"
+"   public void setUser(User user) {\n"
+"       this.user = user;\n"
+"   }\n"
+"   \n"
+"   @PersistenceContext\n"
+"   public void setBookingDatabase(EntityManager em) {\n"
+"       this.em = em;\n"
+"   }\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = em.createQuery(\"select username from User where "
+"username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getResultList();\n"
+"      if (existing.size()==0)\n"
+"      {\n"
+"         em.persist(user);\n"
+"         return \"success\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:26
+#, no-c-format
+msgid "We could write a TestNG test for this component as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:29
+#, no-c-format
+msgid ""
+"public class RegisterActionTest\n"
+"{\n"
+"\n"
+"    @Test\n"
+"    public testRegisterAction()\n"
+"    {\n"
+"        EntityManager em = getEntityManagerFactory().createEntityManager();\n"
+"        em.getTransaction().begin();\n"
+"        \n"
+"        User gavin = new User();\n"
+"        gavin.setName(\"Gavin King\");\n"
+"        gavin.setUserName(\"1ovthafew\");\n"
+"        gavin.setPassword(\"secret\");\n"
+"        \n"
+"        RegisterAction action = new RegisterAction();\n"
+"        action.setUser(gavin);\n"
+"        action.setBookingDatabase(em);\n"
+"        \n"
+"        assert \"success\".equals( action.register() );\n"
+"        \n"
+"        em.getTransaction().commit();\n"
+"        em.close();\n"
+"    }\n"
+"    \n"
+"    \n"
+"    private EntityManagerFactory emf;\n"
+"    \n"
+"    public EntityManagerFactory getEntityManagerFactory()\n"
+"    {\n"
+"        return emf;\n"
+"    }\n"
+"    \n"
+"    @Configuration(beforeTestClass=true)\n"
+"    public void init() \n"
+"    {\n"
+"        emf = Persistence.createEntityManagerFactory"
+"(\"myResourceLocalEntityManager\");\n"
+"    }\n"
+"    \n"
+"    @Configuration(afterTestClass=true)\n"
+"    public void destroy()\n"
+"    {\n"
+"        emf.close();\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:30
+#, no-c-format
+msgid ""
+"Seam components don't usually depend directly upon container infrastructure, "
+"so most unit testing as as easy as that!"
+msgstr ""
+
+#. Tag: title
+#: Testing.xml:36
+#, no-c-format
+msgid "Integration testing Seam applications"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:37
+#, no-c-format
+msgid ""
+"Integration testing is slightly more difficult. In this case, we can't "
+"eliminate the container infrastructure; indeed, that is part of what is "
+"being tested! At the same time, we don't want to be forced to deploy our "
+"application to an application server to run the automated tests. We need to "
+"be able to reproduce just enough of the container infrastructure inside our "
+"testing environment to be able to exercise the whole application, without "
+"hurting performance too much."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:40
+#, no-c-format
+msgid ""
+"A second problem is emulating user interactions. A third problem is where to "
+"put our assertions. Some test frameworks let us test the whole application "
+"by reproducing user interactions with the web browser. These frameworks have "
+"their place, but they are not appropriate for use at development time."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:43
+#, no-c-format
+msgid ""
+"The approach taken by Seam is to let you write tests that script your "
+"components while running inside a pruned down container environment (Seam, "
+"together with the JBoss Embeddable EJB container). The role of the test "
+"script is basically to reproduce the interaction between the view and the "
+"Seam components. In other words, you get to pretend you are the JSF "
+"implementation!"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:46
+#, no-c-format
+msgid "This approach tests everything except the view."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:49
+#, no-c-format
+msgid "Let's consider a JSP view for the component we unit tested above:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:52
+#, no-c-format
+msgid ""
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Register New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;table border=\"0\"&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Username&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputText value=\"#{user.username}\"/&gt;&lt;/"
+"td&gt;\n"
+"       &lt;/tr&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Real Name&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputText value=\"#{user.name}\"/&gt;&lt;/td&gt;\n"
+"       &lt;/tr&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Password&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputSecret value=\"#{user.password}\"/&gt;&lt;/"
+"td&gt;\n"
+"       &lt;/tr&gt;\n"
+"     &lt;/table&gt;\n"
+"     &lt;h:messages/&gt;\n"
+"     &lt;h:commandButton type=\"submit\" value=\"Register\" action=\"#"
+"{register.register}\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:53
+#, no-c-format
+msgid ""
+"We want to test the registration functionality of our application (the stuff "
+"that happens when the user clicks the Register button). We'll reproduce the "
+"JSF request lifecycle in an automated TestNG test:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:56
+#, no-c-format
+msgid ""
+"public class RegisterTest extends SeamTest\n"
+"{\n"
+"   \n"
+"   @Test\n"
+"   public void testRegister() throws Exception\n"
+"   {\n"
+"            \n"
+"      new FacesRequest() {\n"
+"\n"
+"         @Override\n"
+"         protected void processValidations() throws Exception\n"
+"         {\n"
+"            validateValue(\"#{user.username}\", \"1ovthafew\");\n"
+"            validateValue(\"#{user.name}\", \"Gavin King\");\n"
+"            validateValue(\"#{user.password}\", \"secret\");\n"
+"            assert !isValidationFailure();\n"
+"         }\n"
+"         \n"
+"         @Override\n"
+"         protected void updateModelValues() throws Exception\n"
+"         {\n"
+"            setValue(\"#{user.username}\", \"1ovthafew\");\n"
+"            setValue(\"#{user.name}\", \"Gavin King\");\n"
+"            setValue(\"#{user.password}\", \"secret\");\n"
+"         }\n"
+"\n"
+"         @Override\n"
+"         protected void invokeApplication()\n"
+"         {\n"
+"            assert invokeMethod(\"#{register.register}\").equals(\"success"
+"\");\n"
+"         }\n"
+"\n"
+"         @Override\n"
+"         protected void renderResponse()\n"
+"         {\n"
+"            assert getValue(\"#{user.username}\").equals(\"1ovthafew\");\n"
+"            assert getValue(\"#{user.name}\").equals(\"Gavin King\");\n"
+"            assert getValue(\"#{user.password}\").equals(\"secret\");\n"
+"         }\n"
+"         \n"
+"      }.run();\n"
+"      \n"
+"   }\n"
+"\n"
+"   ...\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:57
+#, no-c-format
+msgid ""
+"Notice that we've extended <literal>SeamTest</literal>, which provides a "
+"Seam environment for our components, and written our test script as an "
+"anonymous class that extends <literal>SeamTest.FacesRequest</literal>, which "
+"provides an emulated JSF request lifecycle. (There is also a "
+"<literal>SeamTest.NonFacesRequest</literal> for testing GET requests.) We've "
+"written our code in methods which are named for the various JSF phases, to "
+"emulate the calls that JSF would make to our components. Then we've thrown "
+"in various assertions."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:60
+#, no-c-format
+msgid ""
+"You'll find plenty of integration tests for the Seam example applications "
+"which demonstrate more complex cases. There are instructions for running "
+"these tests using Ant, or using the TestNG plugin for eclipse:"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Text.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Text.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Text.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,362 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Text.xml:10
+#, no-c-format
+msgid "Seam Text"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:11
+#, no-c-format
+msgid ""
+"Collaboration-oriented websites require a human-friendly markup language for "
+"easy entry of formatted text in forum posts, wiki pages, blogs, comments, "
+"etc. Seam provides the <literal>&lt;s:formattedText/&gt;</literal> control "
+"for display of formatted text that conforms to the <emphasis>Seam Text</"
+"emphasis> language. Seam Text is implemented using an ANTLR-based parser. "
+"You don't need to know anything about ANTLR to use it, however."
+msgstr ""
+
+#. Tag: title
+#: Text.xml:15
+#, no-c-format
+msgid "Basic fomatting"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:16
+#, no-c-format
+msgid "Here is a simple example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:19
+#, no-c-format
+msgid ""
+"It's easy to make *bold text*, /italic text/, |monospace|, \n"
+"~deleted text~, super^scripts^ or _underlines_."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:20
+#, no-c-format
+msgid ""
+"If we display this using <literal>&lt;s:formattedText/&gt;</literal>, we "
+"will get the following HTML produced:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:23
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"It's easy to make &lt;b&gt;bold text&lt;/b&gt;, &lt;i&gt;italic text&lt;/"
+"i&gt;, &lt;tt&gt;monospace&lt;/tt&gt;\n"
+"&lt;del&gt;deleted text&lt;/del&gt;, super&lt;sup&gt;scripts&lt;/sup&gt; or "
+"&lt;u&gt;underlines&lt;/u&gt;.\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:24
+#, no-c-format
+msgid ""
+"We can use a blank line to indicate a new paragraph, and <literal>+</"
+"literal> to indicate a heading:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:27
+#, no-c-format
+msgid ""
+"+This is a big heading\n"
+"You /must/ have some text following a heading!\n"
+" \n"
+"++This is a smaller heading\n"
+"This is the first paragraph. We can split it across multiple \n"
+"lines, but we must end it with a blank line.\n"
+"\n"
+"This is the second paragraph."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:28
+#, no-c-format
+msgid ""
+"(Note that a simple newline is ignored, you need an additional blank line to "
+"wrap text into a new paragraph.) This is the HTML that results:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:31
+#, no-c-format
+msgid ""
+"&lt;h1&gt;This is a big heading&lt;/h1&gt;\n"
+"&lt;p&gt;\n"
+"You &lt;i&gt;must&lt;/i&gt; have some text following a heading!\n"
+"&lt;/p&gt;\n"
+" \n"
+"&lt;h2&gt;This is a smaller heading&lt;/h2&gt;\n"
+"&lt;p&gt;\n"
+"This is the first paragraph. We can split it across multiple \n"
+"lines, but we must end it with a blank line.\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"This is the second paragraph.\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:32
+#, no-c-format
+msgid ""
+"Ordered lists are created using the <literal>#</literal> character. "
+"Unordered lists use the <literal>=</literal> character:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:35
+#, no-c-format
+msgid ""
+"An ordered list:\n"
+"        \n"
+"#first item\n"
+"#second item\n"
+"#and even the /third/ item\n"
+"\n"
+"An unordered list:\n"
+"\n"
+"=an item\n"
+"=another item"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:36
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"An ordered list:\n"
+"&lt;/p&gt;\n"
+" \n"
+"&lt;ol&gt;       \n"
+"&lt;li&gt;first item&lt;/li&gt;\n"
+"&lt;li&gt;second item&lt;/li&gt;\n"
+"&lt;li&gt;and even the &lt;i&gt;third&lt;/i&gt; item&lt;/li&gt;\n"
+"&lt;/ol&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"An unordered list:\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;ul&gt;\n"
+"&lt;li&gt;an item&lt;/li&gt;\n"
+"&lt;li&gt;another item&lt;/li&gt;\n"
+"&lt;/ul&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:37
+#, no-c-format
+msgid "Quoted sections should be surrounded in double quotes:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:40
+#, no-c-format
+msgid ""
+"The other guy said:\n"
+"        \n"
+"\"Nyeah nyeah-nee \n"
+"/nyeah/ nyeah!\"\n"
+"\n"
+"But what do you think he means by \"nyeah-nee\"?"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:41
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"The other guy said:\n"
+"&lt;/p&gt;\n"
+"        \n"
+"&lt;q&gt;Nyeah nyeah-nee\n"
+"&lt;i&gt;nyeah&lt;/i&gt; nyeah!&lt;/q&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"But what do you think he means by &lt;q&gt;nyeah-nee&lt;/q&gt;?\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: title
+#: Text.xml:45
+#, no-c-format
+msgid "Entering code and text with special characters"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:46
+#, no-c-format
+msgid ""
+"Special characters such as <literal>*</literal>, <literal>|</literal> and "
+"<literal>#</literal>, along with HTML characters such as <literal>&lt;</"
+"literal>, <literal>&gt;</literal> and <literal>&amp;</literal> may be "
+"escaped using <literal>&#92;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:49
+#, no-c-format
+msgid ""
+"You can write down equations like 2&#92;*3&#92;=6 and HTML tags\n"
+"like &#92;&lt;body&#92;&gt; using the escape character: &#92;&#92;."
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:50
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"You can write down equations like 2*3=6 and HTML tags\n"
+"like &lt;body&gt; using the escape character: &#92;.\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:51
+#, no-c-format
+msgid "And we can quote code blocks using backticks:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:54
+#, no-c-format
+msgid ""
+"My code doesn't work:\n"
+"\n"
+"`for (int i=0; i&lt;100; i--)\n"
+"{\n"
+"    doSomething();\n"
+"}`\n"
+"\n"
+"Any ideas?"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:55
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"My code doesn't work:\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;pre&gt;for (int i=0; i&lt;100; i--)\n"
+"{\n"
+"    doSomething();\n"
+"}&lt;/pre&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"Any ideas?\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: title
+#: Text.xml:59
+#, no-c-format
+msgid "Links"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:60
+#, no-c-format
+msgid "A link may be created using the following syntax:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:63
+#, no-c-format
+msgid "Go to the Seam website at [=&gt;http://jboss.com/products/seam]."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:64
+#, no-c-format
+msgid "Or, if you want to specify the text of the link:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:67
+#, no-c-format
+msgid "Go to [the Seam website=&gt;http://jboss.com/products/seam]."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:68
+#, no-c-format
+msgid ""
+"For advanced users, it is even possible to customize the Seam Text parser to "
+"understand wikiword links written using this syntax."
+msgstr ""
+
+#. Tag: title
+#: Text.xml:74
+#, no-c-format
+msgid "Entering HTML"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:75
+#, no-c-format
+msgid ""
+"Text may even include a certain limited subset of HTML (don't worry, the "
+"subset is chosen to be safe from cross-site scripting attacks). This is "
+"useful for creating links:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:78
+#, no-c-format
+msgid ""
+"You might want to link to &lt;a href=\"http://jboss.com/products/seam\"&gt;"
+"something\n"
+"cool&lt;/a&gt;, or even include an image: &lt;img src=\"/logo.jpg\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:79
+#, no-c-format
+msgid "And for creating tables:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:82
+#, no-c-format
+msgid ""
+"&lt;table&gt;\n"
+"    &lt;tr&gt;&lt;td&gt;First name:&lt;/td&gt;&lt;td&gt;Gavin&lt;/td&gt;&lt;/"
+"tr&gt;\n"
+"    &lt;tr&gt;&lt;td&gt;Last name:&lt;/td&gt;&lt;td&gt;King&lt;/td&gt;&lt;/"
+"tr&gt;\n"
+"&lt;/table&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:83
+#, no-c-format
+msgid "But you can do much more if you want!"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Tools.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Tools.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Tools.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,769 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Tools.xml:10
+#, no-c-format
+msgid "Seam tools"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:12
+#, no-c-format
+msgid "jBPM designer and viewer"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:13
+#, no-c-format
+msgid ""
+"The jBPM designer and viewer will let you design and view in a nice way your "
+"business processes and your pageflows. This convenient tool is part of JBoss "
+"Eclipse IDE and more details can be found in the jBPM's documentation "
+"(http://docs.jboss.com/jbpm/v3/gpd/)"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:17
+#, no-c-format
+msgid "<title>Business process designer</title>"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:18
+#, no-c-format
+msgid "This tool lets you design your own business process in a graphical way."
+msgstr ""
+
+#. Tag: screeninfo
+#: Tools.xml:21 Tools.xml:37
+#, no-c-format
+msgid "<screeninfo>Business process designer</screeninfo>"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:33
+#, no-c-format
+msgid "Pageflow viewer"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:34
+#, no-c-format
+msgid ""
+"This tool let you design to some extend your pageflows and let you build "
+"graphical views of them so you can easily share and compare ideas on how it "
+"should be designed."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:51
+#, no-c-format
+msgid "CRUD-application generator"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:52
+#, no-c-format
+msgid ""
+"This chapter, will give you a short overview of the support for Seam that is "
+"available in the Hibernate Tools. Hibernate Tools is a set of tools for "
+"working with Hibernate and related technologies, such as JBoss Seam and "
+"EJB3. The tools are available as a set of eclipse plugins and Ant tasks. You "
+"can download the Hibernate Tools from the JBoss Eclipse IDE or Hibernate "
+"Tools websites."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:55
+#, no-c-format
+msgid ""
+"The specific support for Seam that is currently available is generation of a "
+"fully functional Seam based CRUD-application. The CRUD-application can be "
+"generated based on your existing Hibernate mapping files or EJB3 annotated "
+"POJO's or even fully reverse engineered from your existing database schema."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:58
+#, no-c-format
+msgid ""
+"The following sections is focused on the features required to understand for "
+"usage with Seam. The content is derived from the the Hibernate Tools "
+"reference documentation. Thus if you need more detailed information please "
+"refer to the Hibernate Tools documentation."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:62
+#, no-c-format
+msgid "Creating a Hibernate configuration file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:63
+#, no-c-format
+msgid ""
+"To be able to reverse engineer and generate code a hibernate.properties or "
+"hibernate.cfg.xml file is needed. The Hibernate Tools provide a wizard for "
+"generating the hibernate.cfg.xml file if you do not already have such file."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:66
+#, no-c-format
+msgid ""
+"Start the wizard by clicking \"New Wizard\" (Ctrl+N), select the Hibernate/"
+"Hibernate Configuration file (cfg.xml) wizard and press \"Next\". After "
+"selecting the wanted location for the hibernate.cfg.xml file, you will see "
+"the following page:"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:77
+#, no-c-format
+msgid ""
+"Tip: The contents in the combo boxes for the JDBC driver class and JDBC URL "
+"change automatically, depending on the Dialect and actual driver you have "
+"chosen."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:80
+#, no-c-format
+msgid ""
+"Enter your configuration information in this dialog. Details about the "
+"configuration options can be found in Hibernate reference documentation."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:83
+#, no-c-format
+msgid ""
+"Press \"Finish\" to create the configuration file, after optionally creating "
+"a Console onfiguration, the hibernate.cfg.xml will be automatically opened "
+"in an editor. The last option \"Create Console Configuration\" is enabled by "
+"default and when enabled i will automatically use the hibernate.cfg.xml for "
+"the basis of a \"Console Configuration\""
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:89
+#, no-c-format
+msgid "<title>Creating a Hibernate Console configuration</title>"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:90
+#, no-c-format
+msgid ""
+"A Console Configuration describes to the Hibernate plugin which "
+"configuration files should be used to configure hibernate, including which "
+"classpath is needed to load the POJO's, JDBC drivers etc. It is required to "
+"make usage of query prototyping, reverse engineering and code generation. "
+"You can have multiple named console configurations. Normally you would just "
+"need one per project, but more (or less) is definitly possible."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:93
+#, no-c-format
+msgid ""
+"You create a console configuration by running the Console Configuration "
+"wizard, shown in the following screenshot. The same wizard will also be used "
+"if you are coming from the hibernate.cfg.xml wizard and had enabled \"Create "
+"Console Configuration\"."
+msgstr ""
+
+#. Tag: caption
+#: Tools.xml:103
+#, no-c-format
+msgid "<caption>Creating a Hibernate Console configuration</caption>"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:105
+#, no-c-format
+msgid ""
+"The following table describes the relevant settings. The wizard can "
+"automatically detect default values for most of these if you started the "
+"Wizard with the relevant java project selected"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:109
+#, no-c-format
+msgid "Hibernate Console Configuration Parameters"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:117
+#, no-c-format
+msgid "Parameter"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:122 Tools.xml:308 Tools.xml:458
+#, no-c-format
+msgid "Description"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:127
+#, no-c-format
+msgid "Auto detected value"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:136
+#, no-c-format
+msgid "Name"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:141
+#, no-c-format
+msgid "The unique name of the configuration"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:146
+#, no-c-format
+msgid "Name of the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:153
+#, no-c-format
+msgid "Property file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:158
+#, no-c-format
+msgid "Path to a hibernate.properties file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:163
+#, no-c-format
+msgid "First hibernate.properties file found in the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:170
+#, no-c-format
+msgid "Configuration file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:175
+#, no-c-format
+msgid "Path to a hibernate.cfg.xml file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:180
+#, no-c-format
+msgid "First hibernate.cfg.xml file found in the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:187
+#, no-c-format
+msgid "Enable Hibernate ejb3/annotations"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:192
+#, no-c-format
+msgid ""
+"Selecting this option enables usage of annotated classes. hbm.xml files are "
+"of course still possible to use too. This feature requires running the "
+"Eclipse IDE with a JDK 5 runtime, otherwise you will get classloading and/or "
+"version errors."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:197
+#, no-c-format
+msgid "Not enabled"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:204
+#, no-c-format
+msgid "Mapping files"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:209
+#, no-c-format
+msgid ""
+"List of additional mapping files that should be loaded. Note: A hibernate."
+"cfg.xml can also contain mappings. Thus if these a duplicated here, you will "
+"get \"Duplicate mapping\" errors when using the console configuration."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:214
+#, no-c-format
+msgid ""
+"If no hibernate.cfg.xml file is found, all hbm.xml files found in the "
+"selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:221
+#, no-c-format
+msgid "Classpath"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:226
+#, no-c-format
+msgid ""
+"The classpath for loading POJO and JDBC drivers. Do not add Hibernate core "
+"libraries or dependencies, they are already included. If you get "
+"ClassNotFound errors then check this list for possible missing or redundant "
+"directories/jars."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:231
+#, no-c-format
+msgid ""
+"The default build output directory and any JARs with a class implementing "
+"java.sql.Driver in the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:239
+#, no-c-format
+msgid ""
+"Clicking \"Finish\" creates the configuration and shows it in the "
+"\"Hibernate Configurations\" view"
+msgstr ""
+
+#. Tag: caption
+#: Tools.xml:249
+#, no-c-format
+msgid "Console overview"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:254
+#, no-c-format
+msgid "Reverse engineering and code generation"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:255
+#, no-c-format
+msgid ""
+"A very simple \"click-and-generate\" reverse engineering and code generation "
+"facility is available. It is this facility that allows you to generate the "
+"skeleton for a full Seam CRUD application."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:258
+#, no-c-format
+msgid ""
+"To start working with this process, start the \"Hibernate Code Generation\" "
+"which is available in the toolbar via the Hibernate icon or via the \"Run/"
+"Hibernate Code Generation\" menu item."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:262
+#, no-c-format
+msgid "Code Generation Launcher"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:263
+#, no-c-format
+msgid ""
+"When you click on \"Hibernate Code Generation\" the standard Eclipse "
+"launcher dialog will appear. In this dialog you can create, edit and delete "
+"named Hibernate code generation \"launchers\"."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:274
+#, no-c-format
+msgid ""
+"The dialog has the standard tabs \"Refresh\" and \"Common\" that can be used "
+"to configure which directories should be automatically refreshed and various "
+"general settings launchers, such as saving them in a project for sharing the "
+"launcher within a team."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:285
+#, no-c-format
+msgid ""
+"The first time you create a code generation launcher you should give it a "
+"meaningfull name, otherwise the default prefix \"New_Generation\" will be "
+"used."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:288
+#, no-c-format
+msgid ""
+"Note: The \"At least one exporter option must be selected\" is just a "
+"warning stating that for this launch to work you need to select an exporter "
+"on the Exporter tab. When an exporter has been selected the warning will "
+"disappear."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:291
+#, no-c-format
+msgid "On the \"Main\" tab you the following fields:"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:295
+#, no-c-format
+msgid "Code generation \"Main\" tab fields"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:303 Tools.xml:453
+#, no-c-format
+msgid "Field"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:317
+#, no-c-format
+msgid "Console Configuration"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:322
+#, no-c-format
+msgid ""
+"The name of the console configuration which should be used when code "
+"generating."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:329
+#, no-c-format
+msgid "Output directory"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:334
+#, no-c-format
+msgid ""
+"Path to a directory into where all output will be written by default. Be "
+"aware that existing files will be overwritten, so be sure to specify the "
+"correct directory."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:341
+#, no-c-format
+msgid "Reverse engineer from JDBC Connection"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:346
+#, no-c-format
+msgid ""
+"If enabled the tools will reverse engineer the database available via the "
+"connection information in the selected Hibernate Console Configuration and "
+"generate code based on the database schema. If not enabled the code "
+"generation will just be based on the mappings already specified in the "
+"Hibernate Console configuration."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:353
+#, no-c-format
+msgid "Package"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:358
+#, no-c-format
+msgid ""
+"The package name here is used as the default package name for any entities "
+"found when reverse engineering."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:365
+#, no-c-format
+msgid "reveng.xml"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:370
+#, no-c-format
+msgid ""
+"Path to a reveng.xml file. A reveng.xml file allows you to control certain "
+"aspects of the reverse engineering. e.g. how jdbc types are mapped to "
+"hibernate types and especially important which tables are included/excluded "
+"from the process. Clicking \"setup\" allows you to select an existing reveng."
+"xml file or create a new one.."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:377
+#, no-c-format
+msgid "reveng. strategy"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:382
+#, no-c-format
+msgid ""
+"If reveng.xml does not provide enough customization you can provide your own "
+"implementation of an ReverseEngineeringStrategy. The class need to be in the "
+"claspath of the Console Configuration, otherwise you will get class not "
+"found exceptions."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:389
+#, no-c-format
+msgid "Generate basic typed composite ids"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:394
+#, no-c-format
+msgid ""
+"This field should always be enabled when generating the Seam CRUD "
+"application. A table that has a multi-colum primary key a &lt;composite-"
+"id&gt; mapping will always be created. If this option is enabled and there "
+"are matching foreign-keys each key column is still considered a 'basic' "
+"scalar (string, long, etc.) instead of a reference to an entity. If you "
+"disable this option a &lt;key-many-to-one&gt; instead. Note: a &lt;many-to-"
+"one&gt; property is still created, but is simply marked as non-updatable and "
+"non-insertable."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:401
+#, no-c-format
+msgid "Use custom templates"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:406
+#, no-c-format
+msgid ""
+"If enabled, the Template directory will be searched first when looking up "
+"the velocity templates, allowing you to redefine how the individual "
+"templates process the hibernate mapping model."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:413
+#, no-c-format
+msgid "Template directory"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:418
+#, no-c-format
+msgid "A path to a directory with custom velocity templates."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:429
+#, no-c-format
+msgid "Exporters"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:430
+#, no-c-format
+msgid ""
+"The exporters tab is used to specify which type of code that should be "
+"generated. Each selection represents an \"Exporter\" that are responsible "
+"for generating the code, hence the name."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:441
+#, no-c-format
+msgid ""
+"The following table describes in short the various exporters. The most "
+"relevant for Seam is of course the \"JBoss Seam Skeleton app\"."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:445
+#, no-c-format
+msgid "Code generation \"Exporter\" tab fields"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:467
+#, no-c-format
+msgid "Generate domain code"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:472
+#, no-c-format
+msgid ""
+"Generates POJO's for all the persistent classes and components found in the "
+"given Hibernate configuration."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:479
+#, no-c-format
+msgid "JDK 1.5 constructs"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:484
+#, no-c-format
+msgid "When enabled the POJO's will use JDK 1.5 constructs."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:491
+#, no-c-format
+msgid "EJB3/JSR-220 annotations"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:496
+#, no-c-format
+msgid ""
+"When enabled the POJO's will be annotated according to the EJB3/JSR-220 "
+"persistency specification."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:503
+#, no-c-format
+msgid "Generate DAO code"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:508
+#, no-c-format
+msgid "Generates a set of DAO's for each entity found."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:515
+#, no-c-format
+msgid "Generate Mappings"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:520
+#, no-c-format
+msgid "Generate mapping (hbm.xml) files for each entity"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:527
+#, no-c-format
+msgid "Generate hibernate configuration file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:532
+#, no-c-format
+msgid ""
+"Generate a hibernate.cfg.xml file. Used to keep the hibernate.cfg.xml "
+"uptodate with any new found mapping files."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:539
+#, no-c-format
+msgid "Generate schema html-documentation"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:544
+#, no-c-format
+msgid ""
+"Generates set of html pages that documents the database schema and some of "
+"the mappings."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:551
+#, no-c-format
+msgid "Generate JBoss Seam skeleton app (beta)"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:556
+#, no-c-format
+msgid ""
+"Generates a complete JBoss Seam skeleton app. The generation will include "
+"annotated POJO's, Seam controller beans and a JSP for the presentation "
+"layer. See the generated readme.txt for how to use it."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:559
+#, no-c-format
+msgid ""
+"Note: this exporter generates a full application, including a build.xml thus "
+"you will get the best results if you use an output directory which is the "
+"root of your project."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:570
+#, no-c-format
+msgid "Generating and using the code"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:571
+#, no-c-format
+msgid ""
+"When you have finished filling out the settings, simply press \"Run\" to "
+"start the generation of code. This might take a little while if you are "
+"reverse engineering from a database."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:574
+#, no-c-format
+msgid ""
+"When the generation have finished you should now have a complete skeleton "
+"Seam application in the output directory. In the output directory there is a "
+"<literal>readme.txt</literal> file describing the steps needed to deploy and "
+"run the example."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:577
+#, no-c-format
+msgid ""
+"If you want to regenerate/update the skeleton code then simply run the code "
+"generation again by selecting the \"Hibernate Code Generation\" in the "
+"toolbar or \"Run\" menu. Enjoy."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Tutorial.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Tutorial.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Tutorial.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,4041 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Tutorial.xml:10
+#, no-c-format
+msgid "Seam Tutorial"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:12
+#, no-c-format
+msgid "Try the examples"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:13
+#, no-c-format
+msgid ""
+"In this tutorial, we'll assume that you have downloaded JBoss AS 4.0.5 and "
+"installed the EJB 3.0 profile (using the JBoss AS installer). You should "
+"also have a copy of Seam downloaded and extracted to a work directory."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:16
+#, no-c-format
+msgid "The directory structure of each example in Seam follows this pattern:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:21
+#, no-c-format
+msgid ""
+"Web pages, images and stylesheets may be found in <filename>examples/"
+"<replaceable>registration</replaceable>/view</filename>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:26
+#, no-c-format
+msgid ""
+"Resources such as deployment descriptors and data import scripts may be "
+"found in <filename>examples/<replaceable>registration</replaceable>/"
+"resources</filename>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:31
+#, no-c-format
+msgid ""
+"Java source code may be found in <filename>examples/"
+"<replaceable>registration</replaceable>/src</filename>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:36
+#, no-c-format
+msgid ""
+"The Ant build script is <filename>examples/<replaceable>registration</"
+"replaceable>/build.xml</filename>"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:42
+#, no-c-format
+msgid "Running the examples on JBoss AS"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:43
+#, no-c-format
+msgid ""
+"First, make sure you have Ant correctly installed, with <literal>&#36;"
+"ANT_HOME</literal> and <literal>&#36;JAVA_HOME</literal> set correctly. "
+"Next, make sure you set the location of your JBoss AS 4.0.5 installation in "
+"the <literal>build.properties</literal> file in the root folder of your Seam "
+"installation. If you haven't already done so, start JBoss AS now by typing "
+"<literal>bin/run.sh</literal> or <literal>bin/run.bat</literal> in the root "
+"directory of your JBoss installation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:46
+#, no-c-format
+msgid ""
+"By default the examples will deploy to the default configuration of the "
+"server. If the server has been started using an a configuration other than "
+"default then the example <literal>build.xml</literal> file should be "
+"modified to reflect this before building and deploying. Two lines should be "
+"changed in this file:"
+msgstr ""
+
+#. Tag: screen
+#: Tutorial.xml:49
+#, no-c-format
+msgid ""
+"&lt;property name=\"deploy.dir\"           value=\"${jboss.home}/server/"
+"default/deploy\"/&gt;"
+msgstr ""
+
+#. Tag: screen
+#: Tutorial.xml:50
+#, no-c-format
+msgid ""
+"&lt;property name=\"webroot.dir\"         \n"
+"        value=\"${deploy.dir}/jboss-web.deployer/ROOT.war\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:51
+#, no-c-format
+msgid ""
+"Now, build and deploy the example by typing <literal>ant deploy</literal> in "
+"the <filename>examples/<replaceable>registration</replaceable></filename> "
+"directory."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:54
+#, no-c-format
+msgid ""
+"Try it out by accessing <ulink url=\"http://localhost:8080/seam-registration/"
+"\"><literal>http://localhost:8080/seam-registration/</literal></ulink> with "
+"your web browser."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:60
+#, no-c-format
+msgid "Running the examples on Tomcat"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:61
+#, no-c-format
+msgid ""
+"First, make sure you have Ant correctly installed, with <literal>&#36;"
+"ANT_HOME</literal> and <literal>&#36;JAVA_HOME</literal> set correctly. "
+"Next, make sure you set the location of your Tomcat 5.5 installation in the "
+"<literal>build.properties</literal> file in the root folder of your Seam "
+"installation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:64
+#, no-c-format
+msgid ""
+"Now, build and deploy the example by typing <literal>ant deploy.tomcat</"
+"literal> in the <filename>examples/<replaceable>registration</replaceable></"
+"filename> directory."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:67
+#, no-c-format
+msgid "Finally, start Tomcat."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:70
+#, no-c-format
+msgid ""
+"Try it out by accessing <ulink url=\"http://localhost:8080/jboss-seam-"
+"registration/\"><literal>http://localhost:8080/jboss-seam-registration/</"
+"literal></ulink> with your web browser."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:73
+#, no-c-format
+msgid ""
+"When you deploy the example to Tomcat, any EJB3 components will run inside "
+"the JBoss Embeddable EJB3 container, a complete standalone EJB3 container "
+"environment."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:79
+#, no-c-format
+msgid "Running the example tests"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:80
+#, no-c-format
+msgid ""
+"Most of the examples come with a suite of TestNG integration tests. The "
+"easiest way to run the tests is to run <literal>ant testexample</literal> "
+"inside the <filename>examples/<replaceable>registration</replaceable></"
+"filename> directory. It is also possible to run the tests inside your IDE "
+"using the TestNG plugin."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:88
+#, no-c-format
+msgid "Your first Seam application: the registration example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:89
+#, no-c-format
+msgid ""
+"The registration example is a fairly trivial application that lets a new "
+"user store his username, real name and password in the database. The example "
+"isn't intended to show off all of the cool functionality of Seam. However, "
+"it demonstrates the use of an EJB3 session bean as a JSF action listener, "
+"and basic configuration of Seam."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:92
+#, no-c-format
+msgid ""
+"We'll go slowly, since we realize you might not yet be familiar with EJB 3.0."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:95
+#, no-c-format
+msgid ""
+"The start page displays a very basic form with three input fields. Try "
+"filling them in and then submitting the form. This will save a user object "
+"in the database."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:107 Tutorial.xml:424 Tutorial.xml:563 Tutorial.xml:723
+#, no-c-format
+msgid "Understanding the code"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:108
+#, no-c-format
+msgid ""
+"The example is implemented with two JSP pages, one entity bean and one "
+"stateless session bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:119
+#, no-c-format
+msgid "Let's take a look at the code, starting from the \"bottom\"."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:123
+#, no-c-format
+msgid "The entity bean: <literal>User.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:124
+#, no-c-format
+msgid ""
+"We need an EJB entity bean for user data. This class defines "
+"<emphasis>persistence</emphasis> and <emphasis>validation</emphasis> "
+"declaratively, via annotations. It also needs some extra annotations that "
+"define the class as a Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:140
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"user\")\n"
+"@Scope(SESSION)\n"
+"@Table(name=\"users\")\n"
+"public class User implements Serializable\n"
+"{\n"
+"   private static final long serialVersionUID = 1881413500711441951L;\n"
+"   \n"
+"   private String username;\n"
+"   private String password;\n"
+"   private String name;\n"
+"   \n"
+"   public User(String name, String password, String username)\n"
+"   {\n"
+"      this.name = name;\n"
+"      this.password = password;\n"
+"      this.username = username;\n"
+"   }\n"
+"   \n"
+"   public User() {}\n"
+"   \n"
+"   @NotNull @Length(min=5, max=15)\n"
+"   public String getPassword()\n"
+"   {\n"
+"      return password;\n"
+"   }\n"
+"\n"
+"   public void setPassword(String password)\n"
+"   {\n"
+"      this.password = password;\n"
+"   }\n"
+"   \n"
+"   @NotNull\n"
+"   public String getName()\n"
+"   {\n"
+"      return name;\n"
+"   }\n"
+"\n"
+"   public void setName(String name)\n"
+"   {\n"
+"      this.name = name;\n"
+"   }\n"
+"   \n"
+"   @Id @NotNull @Length(min=5, max=15)\n"
+"   public String getUsername()\n"
+"   {\n"
+"      return username;\n"
+"   }\n"
+"\n"
+"   public void setUsername(String username)\n"
+"   {\n"
+"      this.username = username;\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:143
+#, no-c-format
+msgid ""
+"The EJB3 standard <literal>@Entity</literal> annotation indicates that the "
+"<literal>User</literal> class is an entity bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:148
+#, no-c-format
+msgid ""
+"A Seam component needs a <emphasis>component name</emphasis> specified by "
+"the <link linkend=\"name-annotation\"><literal>@Name</literal></link> "
+"annotation. This name must be unique within the Seam application. When JSF "
+"asks Seam to resolve a context variable with a name that is the same as a "
+"Seam component name, and the context variable is currently undefined (null), "
+"Seam will instantiate that component, and bind the new instance to the "
+"context variable. In this case, Seam will instantiate a <literal>User</"
+"literal> the first time JSF encounters a variable named <literal>user</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:153
+#, no-c-format
+msgid ""
+"Whenever Seam instantiates a component, it binds the new instance to a "
+"context variable in the component's <emphasis>default context</emphasis>. "
+"The default context is specified using the <link linkend=\"scope-annotation"
+"\"><literal>@Scope</literal></link> annotation. The <literal>User</literal> "
+"bean is a session scoped component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:158
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Table</literal> annotation indicates that the "
+"<literal>User</literal> class is mapped to the <literal>users</literal> "
+"table."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:163
+#, no-c-format
+msgid ""
+"<literal>name</literal>, <literal>password</literal> and <literal>username</"
+"literal> are the persistent attributes of the entity bean. All of our "
+"persistent attributes define accessor methods. These are needed when this "
+"component is used by JSF in the render response and update model values "
+"phases."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:168
+#, no-c-format
+msgid ""
+"An empty constructor is both required by both the EJB specification and by "
+"Seam."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:173
+#, no-c-format
+msgid ""
+"The <literal>@NotNull</literal> and <literal>@Length</literal> annotations "
+"are part of the Hibernate Validator framework. Seam integrates Hibernate "
+"Validator and lets you use it for data validation (even if you are not using "
+"Hibernate for persistence)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:178
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Id</literal> annotation indicates the primary key "
+"attribute of the entity bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:185
+#, no-c-format
+msgid ""
+"The most important things to notice in this example are the <literal>@Name</"
+"literal> and <literal>@Scope</literal> annotations. These annotations "
+"establish that this class is a Seam component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:188
+#, no-c-format
+msgid ""
+"We'll see below that the properties of our <literal>User</literal> class are "
+"bound to directly to JSF components and are populated by JSF during the "
+"update model values phase. We don't need any tedious glue code to copy data "
+"back and forth between the JSP pages and the entity bean domain model."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:191
+#, no-c-format
+msgid ""
+"However, entity beans shouldn't do transaction management or database "
+"access. So we can't use this component as a JSF action listener. For that we "
+"need a session bean."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:198
+#, no-c-format
+msgid ""
+"The stateless session bean class: <literal>RegisterAction.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:199
+#, no-c-format
+msgid ""
+"Most Seam application use session beans as JSF action listeners (you can use "
+"JavaBeans instead if you like)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:202
+#, no-c-format
+msgid ""
+"We have exactly one JSF action in our application, and one session bean "
+"method attached to it. In this case, we'll use a stateless session bean, "
+"since all the state associated with our action is held by the <literal>User</"
+"literal> bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:205
+#, no-c-format
+msgid "This is the only really interesting code in the example!"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:222
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"register\")\n"
+"public class RegisterAction implements Register\n"
+"{\n"
+"\n"
+"   @In\n"
+"   private User user;\n"
+"   \n"
+"   @PersistenceContext\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @Logger\n"
+"   private Log log;\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = em.createQuery(\n"
+"         \"select username from User where username=#{user.username}\")\n"
+"         .getResultList();\n"
+"         \n"
+"      if (existing.size()==0)\n"
+"      {\n"
+"         em.persist(user);\n"
+"         log.info(\"Registered new user #{user.username}\");\n"
+"         return \"/registered.jsp\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         FacesMessages.instance().add(\"User #{user.username} already exists"
+"\");\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:225
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Stateless</literal> annotation marks this class "
+"as stateless session bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:230
+#, no-c-format
+msgid ""
+"The <link linkend=\"in-annotation\"><literal>@In</literal></link> annotation "
+"marks an attribute of the bean as injected by Seam. In this case, the "
+"attribute is injected from a context variable named <literal>user</literal> "
+"(the instance variable name)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:235
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@PersistenceContext</literal> annotation is used "
+"to inject the EJB3 entity manager."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:240
+#, no-c-format
+msgid ""
+"The Seam <literal>@Logger</literal> annotation is used to inject the "
+"component's <literal>Log</literal> instance."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:245
+#, no-c-format
+msgid ""
+"The action listener method uses the standard EJB3 <literal>EntityManager</"
+"literal> API to interact with the database, and returns the JSF outcome. "
+"Note that, since this is a sesson bean, a transaction is automatically begun "
+"when the <literal>register()</literal> method is called, and committed when "
+"it completes."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:250
+#, no-c-format
+msgid ""
+"Notice that Seam lets you use a JSF EL expression inside EJB-QL. Under the "
+"covers, this results in an ordinary JPA <literal>setParameter()</literal> "
+"call on the standard JPA <literal>Query</literal> object. Nice, huh?"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:255
+#, no-c-format
+msgid ""
+"The <literal>Log</literal> API lets us easily display templated log messages."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:260
+#, no-c-format
+msgid ""
+"JSF action listener methods return a string-valued outcome that determines "
+"what page will be displayed next. A null outcome (or a void action listener "
+"method) redisplays the previous page. In plain JSF, it is normal to always "
+"use a JSF <emphasis>navigation rule</emphasis> to determine the JSF view id "
+"from the outcome. For complex application this indirection is useful and a "
+"good practice. However, for very simple examples like this one, Seam lets "
+"you use the JSF view id as the outcome, eliminating the requirement for a "
+"navigation rule. <emphasis>Note that when you use a view id as an outcome, "
+"Seam always performs a browser redirect.</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:265
+#, no-c-format
+msgid ""
+"Seam provides a number of <emphasis>built-in components</emphasis> to help "
+"solve common problems. The <literal>FacesMessages</literal> component makes "
+"it easy to display templated error or success messages. Built-in Seam "
+"components may be obtained by injection, or by calling an <literal>instance()"
+"</literal> method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:272
+#, no-c-format
+msgid ""
+"Note that we did not explicitly specify a <literal>@Scope</literal> this "
+"time. Each Seam component type has a default scope if not explicitly "
+"specified. For stateless session beans, the default scope is the stateless "
+"context. Actually, <emphasis>all</emphasis> stateless session beans belong "
+"in the stateless context."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:275
+#, no-c-format
+msgid ""
+"Our session bean action listener performs the business and persistence logic "
+"for our mini-application. In more complex applications, we might need to "
+"layer the code and refactor persistence logic into a dedicated data access "
+"component. That's perfectly trivial to do. But notice that Seam does not "
+"force you into any particular strategy for application layering."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:278
+#, no-c-format
+msgid ""
+"Furthermore, notice that our session bean has simultaneous access to context "
+"associated with the web request (the form values in the <literal>User</"
+"literal> object, for example), and state held in transactional resources "
+"(the <literal>EntityManager</literal> object). This is a break from "
+"traditional J2EE architectures. Again, if you are more comfortable with the "
+"traditional J2EE layering, you can certainly implement that in a Seam "
+"application. But for many applications, it's simply not very useful."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:285
+#, no-c-format
+msgid "The session bean local interface: <literal>Register.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:286
+#, no-c-format
+msgid "Naturally, our session bean needs a local interface."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:291
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface Register\n"
+"{\n"
+"   public String register();\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:292
+#, no-c-format
+msgid "That's the end of the Java code. Now onto the deployment descriptors."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:298
+#, no-c-format
+msgid ""
+"The Seam component deployment descriptor: <literal>components.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:299
+#, no-c-format
+msgid ""
+"If you've used many Java frameworks before, you'll be used to having to "
+"declate all your component classes in some kind of XML file that gradually "
+"grows more and more unmanageable as your project matures. You'll be relieved "
+"to know that Seam does not require that application components be "
+"accompanied by XML. Most Seam applications require a very small amount of "
+"XML that does not grow very much as the project gets bigger."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:302
+#, no-c-format
+msgid ""
+"Nevertheless, it is often useful to be able to provide for <emphasis>some</"
+"emphasis> external configuration of <emphasis>some</emphasis> components "
+"(particularly the components built in to Seam). You have a couple of options "
+"here, but the most flexible option is to provide this configuration in a "
+"file called <literal>components.xml</literal>, located in the <literal>WEB-"
+"INF</literal> directory. We'll use the <literal>components.xml</literal> "
+"file to tell Seam how to find our EJB components in JNDI:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:305
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"&gt;\n"
+"     &lt;core:init jndi-pattern=\"@jndiPattern@\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:306
+#, no-c-format
+msgid ""
+"This code configures a property named <literal>jndiPattern</literal> of a "
+"built-in Seam component named <literal>org.jboss.seam.core.init</literal>."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:312
+#, no-c-format
+msgid "The web deployment description: <literal>web.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:313
+#, no-c-format
+msgid ""
+"The presentation layer for our mini-application will be deployed in a WAR. "
+"So we'll need a web deployment descriptor."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:316
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;web-app version=\"2.5\"\n"
+"    xmlns=\"http://java.sun.com/xml/ns/javaee\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n"
+"        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\"&gt;\n"
+"\n"
+"    &lt;!-- Seam --&gt;\n"
+"\n"
+"    &lt;listener&gt;\n"
+"        &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/"
+"listener-class&gt;\n"
+"    &lt;/listener&gt;\n"
+"\n"
+"    &lt;!-- MyFaces --&gt;\n"
+"\n"
+"    &lt;listener&gt;\n"
+"        &lt;listener-class&gt;\n"
+"            org.apache.myfaces.webapp.StartupServletContextListener\n"
+"        &lt;/listener-class&gt;\n"
+"    &lt;/listener&gt;\n"
+"\n"
+"    &lt;context-param&gt;\n"
+"        &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-"
+"name&gt;\n"
+"        &lt;param-value&gt;client&lt;/param-value&gt;\n"
+"    &lt;/context-param&gt;\n"
+"\n"
+"    &lt;servlet&gt;\n"
+"        &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;\n"
+"        &lt;servlet-class&gt;javax.faces.webapp.FacesServlet&lt;/servlet-"
+"class&gt;\n"
+"        &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;\n"
+"    &lt;/servlet&gt;\n"
+"\n"
+"    &lt;!-- Faces Servlet Mapping --&gt;\n"
+"    &lt;servlet-mapping&gt;\n"
+"        &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;\n"
+"        &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;\n"
+"    &lt;/servlet-mapping&gt;\n"
+"\n"
+"&lt;/web-app&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:317
+#, no-c-format
+msgid ""
+"This <literal>web.xml</literal> file configures Seam and MyFaces. The "
+"configuration you see here is pretty much identical in all Seam applications."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:323
+#, no-c-format
+msgid "The JSF configration: <literal>faces-config.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:324
+#, no-c-format
+msgid ""
+"All Seam applications use JSF views as the presentation layer. So we'll need "
+"<literal>faces-config.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:327
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;!DOCTYPE faces-config \n"
+"PUBLIC \"-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN\"\n"
+"                            \"http://java.sun.com/dtd/web-facesconfig_1_0.dtd"
+"\"&gt;\n"
+"&lt;faces-config&gt;\n"
+"\n"
+"    &lt;!-- A phase listener is needed by all Seam applications --&gt;\n"
+"    \n"
+"    &lt;lifecycle&gt;\n"
+"        &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-"
+"listener&gt;\n"
+"    &lt;/lifecycle&gt;\n"
+"\n"
+"&lt;/faces-config&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:328
+#, no-c-format
+msgid ""
+"The <literal>faces-config.xml</literal> file integrates Seam into JSF. Note "
+"that we don't need any JSF managed bean declarations! The managed beans are "
+"the Seam components. In Seam applications, the <literal>faces-config.xml</"
+"literal> is used much less often than in plain JSF."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:331
+#, no-c-format
+msgid ""
+"In fact, once you have all the basic descriptors set up, the <emphasis>only</"
+"emphasis> XML you need to write as you add new functionality to a Seam "
+"application is the navigation rules, and possibly jBPM process definitions. "
+"Seam takes the view that <emphasis>process flow</emphasis> and "
+"<emphasis>configuration data</emphasis> are the only things that truly "
+"belong in XML."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:334
+#, no-c-format
+msgid ""
+"In this simple example, we don't even need a navigation rule, since we "
+"decided to embed the view id in our action code."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:340
+#, no-c-format
+msgid "The EJB deployment descriptor: <literal>ejb-jar.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:341
+#, no-c-format
+msgid ""
+"The <literal>ejb-jar.xml</literal> file integrates Seam with EJB3, by "
+"attaching the <literal>SeamInterceptor</literal> to all session beans in the "
+"archive."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:344
+#, no-c-format
+msgid ""
+"&lt;ejb-jar xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \n"
+"         xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n"
+"         http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd\"\n"
+"         version=\"3.0\"&gt;\n"
+"         \n"
+"   &lt;interceptors&gt;\n"
+"     &lt;interceptor&gt;\n"
+"       &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"     &lt;/interceptor&gt;\n"
+"   &lt;/interceptors&gt;\n"
+"   \n"
+"   &lt;assembly-descriptor&gt;\n"
+"      &lt;interceptor-binding&gt;\n"
+"         &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"         &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"      &lt;/interceptor-binding&gt;\n"
+"   &lt;/assembly-descriptor&gt;\n"
+"   \n"
+"&lt;/ejb-jar&gt;"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:348
+#, no-c-format
+msgid ""
+"The EJB persistence deployment descriptor: <literal>persistence.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:349
+#, no-c-format
+msgid ""
+"The <literal>persistence.xml</literal> file tells the EJB persistence "
+"provider where to find the datasource, and contains some vendor-specific "
+"settings. In this case, enables automatic schema export at startup time."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:352
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;persistence xmlns=\"http://java.sun.com/xml/ns/persistence\" \n"
+"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence \n"
+"             http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd\" \n"
+"             version=\"1.0\"&gt;\n"
+"    &lt;persistence-unit name=\"userDatabase\"&gt;\n"
+"      &lt;provider&gt;org.hibernate.ejb.HibernatePersistence&lt;/"
+"provider&gt;\n"
+"      &lt;jta-data-source&gt;java:/DefaultDS&lt;/jta-data-source&gt;\n"
+"      &lt;properties&gt;\n"
+"         &lt;property name=\"hibernate.hbm2ddl.auto\" value=\"create-drop\"/"
+"&gt;\n"
+"      &lt;/properties&gt;\n"
+"    &lt;/persistence-unit&gt;\n"
+"&lt;/persistence&gt;"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:356
+#, no-c-format
+msgid ""
+"The view: <literal>register.jsp</literal> and <literal>registered.jsp</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:357
+#, no-c-format
+msgid ""
+"The view pages for a Seam application could be implemented using any "
+"technology that supports JSF. In this example we use JSP, since it is "
+"familiar to most developers and since we have minimal requirements here "
+"anyway. (But if you take our advice, you'll use Facelets for your own "
+"applications.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:360
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://jboss.com/products/seam/taglib\" prefix=\"s\" "
+"&#37;&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Register New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;table border=\"0\"&gt;\n"
+"       &lt;s:validateAll&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Username&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputText value=\"#{user.username}\"/&gt;&lt;/"
+"td&gt;\n"
+"         &lt;/tr&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Real Name&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputText value=\"#{user.name}\"/&gt;&lt;/td&gt;\n"
+"         &lt;/tr&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Password&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputSecret value=\"#{user.password}\"/&gt;&lt;/"
+"td&gt;\n"
+"         &lt;/tr&gt;\n"
+"       &lt;/s:validateAll&gt;\n"
+"     &lt;/table&gt;\n"
+"     &lt;h:messages/&gt;\n"
+"     &lt;h:commandButton type=\"submit\" value=\"Register\" action=\"#"
+"{register.register}\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:361
+#, no-c-format
+msgid ""
+"The only thing here that is specific to Seam is the <literal>&lt;s:"
+"validateAll&gt;</literal> tag. This JSF component tells JSF to validate all "
+"the contained input fields against the Hibernate Validator annotations "
+"specified on the entity bean."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:364
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Successfully Registered New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"    Welcome, &lt;h:outputText value=\"#{user.name}\"/&gt;, \n"
+"    you are successfully registered as &lt;h:outputText value=\"#{user."
+"username}\"/&gt;.\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:365
+#, no-c-format
+msgid ""
+"This is a boring old JSP pages using standard JSF components. There is "
+"nothing specific to Seam here."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:371
+#, no-c-format
+msgid "The EAR deployment descriptor: <literal>application.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:372
+#, no-c-format
+msgid ""
+"Finally, since our application is deployed as an EAR, we need a deployment "
+"descriptor there, too."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:375
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;application xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee \n"
+"             http://java.sun.com/xml/ns/javaee/application_5.xsd\"\n"
+"             version=\"5\"&gt;\n"
+"             \n"
+"    &lt;display-name&gt;Seam Registration&lt;/display-name&gt;\n"
+"\n"
+"    &lt;module&gt;\n"
+"        &lt;web&gt;\n"
+"            &lt;web-uri&gt;jboss-seam-registration.war&lt;/web-uri&gt;\n"
+"            &lt;context-root&gt;/seam-registration&lt;/context-root&gt;\n"
+"        &lt;/web&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;ejb&gt;jboss-seam-registration.jar&lt;/ejb&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;jboss-seam.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;el-api.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;el-ri.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    \n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:376
+#, no-c-format
+msgid ""
+"This deployment descriptor links modules in the enterprise archive and binds "
+"the web application to the context root <literal>/seam-registration</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:387 Tutorial.xml:535 Tutorial.xml:698 Tutorial.xml:813
+#, no-c-format
+msgid "How it works"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:388
+#, no-c-format
+msgid ""
+"When the form is submitted, JSF asks Seam to resolve the variable named "
+"<literal>user</literal>. Since there is no value already bound to that name "
+"(in any Seam context), Seam instantiates the <literal>user</literal> "
+"component, and returns the resulting <literal>User</literal> entity bean "
+"instance to JSF after storing it in the Seam session context."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:391
+#, no-c-format
+msgid ""
+"The form input values are now validated against the Hibernate Validator "
+"constraints specified on the <literal>User</literal> entity. If the "
+"constraints are violated, JSF redisplays the page. Otherwise, JSF binds the "
+"form input values to properties of the <literal>User</literal> entity bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:394
+#, no-c-format
+msgid ""
+"Next, JSF asks Seam to resolve the variable named <literal>register</"
+"literal>. Seam finds the <literal>RegisterAction</literal> stateless session "
+"bean in the stateless context and returns it. JSF invokes the "
+"<literal>register()</literal> action listener method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:397
+#, no-c-format
+msgid ""
+"Seam intercepts the method call and injects the <literal>User</literal> "
+"entity from the Seam session context, before continuing the invocation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:400
+#, no-c-format
+msgid ""
+"The <literal>register()</literal> method checks if a user with the entered "
+"username already exists. If so, an error message is queued with the "
+"<literal>FacesMessages</literal> component, and a null outcome is returned, "
+"causing a page redisplay. The <literal>FacesMessages</literal> component "
+"interpolates the JSF expression embedded in the message string and adds a "
+"JSF <literal>FacesMessage</literal> to the view."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:403
+#, no-c-format
+msgid ""
+"If no user with that username exists, the <literal>\"/registered.jsp\"</"
+"literal> outcome triggers a browser redirect to the <literal>registered.jsp</"
+"literal> page. When JSF comes to render the page, it asks Seam to resolve "
+"the variable named <literal>user</literal> and uses property values of the "
+"returned <literal>User</literal> entity from Seam's session scope."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:411
+#, no-c-format
+msgid "Clickable lists in Seam: the messages example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:412
+#, no-c-format
+msgid ""
+"Clickable lists of database search results are such an important part of any "
+"online application that Seam provides special functionality on top of JSF to "
+"make it easier to query data using EJB-QL or HQL and display it as a "
+"clickable list using a JSF <literal>&lt;h:dataTable&gt;</literal>. The "
+"messages example demonstrates this functionality."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:425
+#, no-c-format
+msgid ""
+"The message list example has one entity bean, <literal>Message</literal>, "
+"one session bean, <literal>MessageListBean</literal> and one JSP."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:429
+#, no-c-format
+msgid "The entity bean: <literal>Message.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:430
+#, no-c-format
+msgid ""
+"The <literal>Message</literal> entity defines the title, text, date and time "
+"of a message, and a flag indicating whether the message has been read:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:433
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"message\")\n"
+"@Scope(EVENT)\n"
+"public class Message implements Serializable\n"
+"{\n"
+"   private Long id;\n"
+"   private String title;\n"
+"   private String text;\n"
+"   private boolean read;\n"
+"   private Date datetime;\n"
+"   \n"
+"   @Id @GeneratedValue\n"
+"   public Long getId() {\n"
+"      return id;\n"
+"   }\n"
+"   public void setId(Long id) {\n"
+"      this.id = id;\n"
+"   }\n"
+"   \n"
+"   @NotNull @Length(max=100)\n"
+"   public String getTitle() {\n"
+"      return title;\n"
+"   }\n"
+"   public void setTitle(String title) {\n"
+"      this.title = title;\n"
+"   }\n"
+"   \n"
+"   @NotNull @Lob\n"
+"   public String getText() {\n"
+"      return text;\n"
+"   }\n"
+"   public void setText(String text) {\n"
+"      this.text = text;\n"
+"   }\n"
+"   \n"
+"   @NotNull\n"
+"   public boolean isRead() {\n"
+"      return read;\n"
+"   }\n"
+"   public void setRead(boolean read) {\n"
+"      this.read = read;\n"
+"   }\n"
+"   \n"
+"   @NotNull \n"
+"   @Basic @Temporal(TemporalType.TIMESTAMP)\n"
+"   public Date getDatetime() {\n"
+"      return datetime;\n"
+"   }\n"
+"   public void setDatetime(Date datetime) {\n"
+"      this.datetime = datetime;\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:438
+#, no-c-format
+msgid "The stateful session bean: <literal>MessageManagerBean.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:439
+#, no-c-format
+msgid ""
+"Just like in the previous example, we have a session bean, "
+"<literal>MessageManagerBean</literal>, which defines the action listener "
+"methods for the two buttons on our form. One of the buttons selects a "
+"message from the list, and displays that message. The other button deletes a "
+"message. So far, this is not so different to the previous example."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:442
+#, no-c-format
+msgid ""
+"But <literal>MessageManagerBean</literal> is also responsible for fetching "
+"the list of messages the first time we navigate to the message list page. "
+"There are various ways the user could navigate to the page, and not all of "
+"them are preceded by a JSF action&mdash;the user might have bookmarked the "
+"page, for example. So the job of fetching the message list takes place in a "
+"Seam <emphasis>factory method</emphasis>, instead of in an action listener "
+"method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:445
+#, no-c-format
+msgid ""
+"We want to cache the list of messages in memory between server requests, so "
+"we will make this a stateful session bean."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:459
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Scope(SESSION)\n"
+"@Name(\"messageManager\")\n"
+"public class MessageManagerBean implements Serializable, MessageManager\n"
+"{\n"
+"\n"
+"   @DataModel\n"
+"   private List&lt;Message&gt; messageList;\n"
+"   \n"
+"   @DataModelSelection\n"
+"   @Out(required=false)\n"
+"   private Message message;\n"
+"   \n"
+"   @PersistenceContext(type=EXTENDED)\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @Factory(\"messageList\")\n"
+"   public void findMessages()\n"
+"   {\n"
+"      messageList = em.createQuery(\"from Message msg order by msg.datetime "
+"desc\").getResultList();\n"
+"   }\n"
+"   \n"
+"   public void select()\n"
+"   {\n"
+"      message.setRead(true);\n"
+"   }\n"
+"   \n"
+"   public void delete()\n"
+"   {\n"
+"      messageList.remove(message);\n"
+"      em.remove(message);\n"
+"      message=null;\n"
+"   }\n"
+"   \n"
+"   @Remove @Destroy\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:462
+#, no-c-format
+msgid ""
+"The <literal>@DataModel</literal> annotation exposes an attibute of type "
+"<literal>java.util.List</literal> to the JSF page as an instance of "
+"<literal>javax.faces.model.DataModel</literal>. This allows us to use the "
+"list in a JSF <literal>&lt;h:dataTable&gt;</literal> with clickable links "
+"for each row. In this case, the <literal>DataModel</literal> is made "
+"available in a session context variable named <literal>messageList</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:467
+#, no-c-format
+msgid ""
+"The <literal>@DataModelSelection</literal> annotation tells Seam to inject "
+"the <literal>List</literal> element that corresponded to the clicked link."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:472
+#, no-c-format
+msgid ""
+"The <literal>@Out</literal> annotation then exposes the selected value "
+"directly to the page. So ever time a row of the clickable list is selected, "
+"the <literal>Message</literal> is injected to the attribute of the stateful "
+"bean, and the subsequently <emphasis>outjected</emphasis> to the event "
+"context variable named <literal>message</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:477
+#, no-c-format
+msgid ""
+"This stateful bean has an EJB3 <emphasis>extended persistence context</"
+"emphasis>. The messages retrieved in the query remain in the managed state "
+"as long as the bean exists, so any subsequent method calls to the stateful "
+"bean can update them without needing to make any explicit call to the "
+"<literal>EntityManager</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:482
+#, no-c-format
+msgid ""
+"The first time we navigate to the JSP page, there will be no value in the "
+"<literal>messageList</literal> context variable. The <literal>@Factory</"
+"literal> annotation tells Seam to create an instance of "
+"<literal>MessageManagerBean</literal> and invoke the <literal>findMessages()"
+"</literal> method to initialize the value. We call <literal>findMessages()</"
+"literal> a <emphasis>factory method</emphasis> for <literal>messages</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:487
+#, no-c-format
+msgid ""
+"The <literal>select()</literal> action listener method marks the selected "
+"<literal>Message</literal> as read, and updates it in the database."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:492
+#, no-c-format
+msgid ""
+"The <literal>delete()</literal> action listener method removes the selected "
+"<literal>Message</literal> from the database."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:497
+#, no-c-format
+msgid ""
+"All stateful session bean Seam components <emphasis>must</emphasis> have a "
+"method marked <literal>@Remove @Destroy</literal> to ensure that Seam will "
+"remove the stateful bean when the Seam context ends, and clean up any server-"
+"side state."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:504
+#, no-c-format
+msgid ""
+"Note that this is a session-scoped Seam component. It is associated with the "
+"user login session, and all requests from a login session share the same "
+"instance of the component. (In Seam applications, we usually use session-"
+"scoped components sparingly.)"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:510
+#, no-c-format
+msgid ""
+"The session bean local interface: <literal>MessageManager.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:511
+#, no-c-format
+msgid "All session beans have a business interface, of course."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:514
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface MessageManager\n"
+"{\n"
+"   public void findMessages();\n"
+"   public void select();\n"
+"   public void delete();\n"
+"   public void destroy();\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:515
+#, no-c-format
+msgid "From now on, we won't show local interfaces in our code examples."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:518
+#, no-c-format
+msgid ""
+"Let's skip over <literal>components.xml</literal>, <literal>persistence.xml</"
+"literal>, <literal>web.xml</literal>, <literal>ejb-jar.xml</literal>, "
+"<literal>faces-config.xml</literal> and <literal>application.xml</literal> "
+"since they are much the same as the previous example, and go straight to the "
+"JSP."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:524
+#, no-c-format
+msgid "The view: <literal>messages.jsp</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:525
+#, no-c-format
+msgid ""
+"The JSP page is a straightforward use of the JSF <literal>&lt;h:dataTable&gt;"
+"</literal> component. Again, nothing specific to Seam."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:528
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Messages&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;h2&gt;Message List&lt;/h2&gt;\n"
+"     &lt;h:outputText value=\"No messages to display\" rendered=\"#"
+"{messageList.rowCount==0}\"/&gt;\n"
+"     &lt;h:dataTable var=\"msg\" value=\"#{messageList}\" rendered=\"#"
+"{messageList.rowCount&gt;0}\"&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Read\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:selectBooleanCheckbox value=\"#{msg.read}\" disabled=\"true"
+"\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Title\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:commandLink value=\"#{msg.title}\" action=\"#"
+"{messageManager.select}\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Date/Time\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:outputText value=\"#{msg.datetime}\"&gt;\n"
+"              &lt;f:convertDateTime type=\"both\" dateStyle=\"medium\" "
+"timeStyle=\"short\"/&gt;\n"
+"           &lt;/h:outputText&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;h:commandButton value=\"Delete\" action=\"#{messageManager."
+"delete}\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"     &lt;/h:dataTable&gt;\n"
+"     &lt;h3&gt;&lt;h:outputText value=\"#{message.title}\"/&gt;&lt;/h3&gt;\n"
+"     &lt;div&gt;&lt;h:outputText value=\"#{message.text}\"/&gt;&lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:536
+#, no-c-format
+msgid ""
+"The first time we navigate to the <literal>messages.jsp</literal> page, "
+"whether by a JSF postback (faces request) or a direct browser GET request "
+"(non-faces request), the page will try to resolve the <literal>messageList</"
+"literal> context variable. Since this context variable is not initialized, "
+"Seam will call the factory method <literal>findMessages()</literal>, which "
+"performs a query against the database and results in a <literal>DataModel</"
+"literal> being outjected. This <literal>DataModel</literal> provides the row "
+"data needed for rendering the <literal>&lt;h:dataTable&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:539
+#, no-c-format
+msgid ""
+"When the user clicks the <literal>&lt;h:commandLink&gt;</literal>, JSF calls "
+"the <literal>select()</literal> action listener. Seam intercepts this call "
+"and injects the selected row data into the <literal>message</literal> "
+"attribute of the <literal>messageManager</literal> component. The action "
+"listener fires, marking the selected <literal>Message</literal> as read. At "
+"the end of the call, Seam outjects the selected <literal>Message</literal> "
+"to the context variable named <literal>message</literal>. Next, the EJB "
+"container commits the transaction, and the change to the <literal>Message</"
+"literal> is flushed to the database. Finally, the page is re-rendered, "
+"redisplaying the message list, and displaying the selected message below it."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:542
+#, no-c-format
+msgid ""
+"If the user clicks the <literal>&lt;h:commandButton&gt;</literal>, JSF calls "
+"the <literal>delete()</literal> action listener. Seam intercepts this call "
+"and injects the selected row data into the <literal>message</literal> "
+"attribute of the <literal>messageList</literal> component. The action "
+"listener fires, removing the selected <literal>Message</literal> from the "
+"list, and also calling <literal>remove()</literal> on the "
+"<literal>EntityManager</literal>. At the end of the call, Seam refreshes the "
+"<literal>messageList</literal> context variable and clears the context "
+"variable named <literal>message</literal>. The EJB container commits the "
+"transaction, and deletes the <literal>Message</literal> from the database. "
+"Finally, the page is re-rendered, redisplaying the message list."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:550
+#, no-c-format
+msgid "Seam and jBPM: the todo list example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:551
+#, no-c-format
+msgid ""
+"jBPM provides sophisticated functionality for workflow and task management. "
+"To get a small taste of how jBPM integrates with Seam, we'll show you a "
+"simple \"todo list\" application. Since managing lists of tasks is such core "
+"functionality for jBPM, there is hardly any Java code at all in this example."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:564
+#, no-c-format
+msgid ""
+"The center of this example is the jBPM process definition. There are also "
+"two JSPs and two trivial JavaBeans (There was no reason to use session "
+"beans, since they do not access the database, or have any other "
+"transactional behavior). Let's start with the process definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:575
+#, no-c-format
+msgid ""
+"&lt;process-definition name=\"todo\"&gt;\n"
+"   \n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"todo\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;task-node name=\"todo\"&gt;\n"
+"      &lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"         &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"      &lt;/task&gt;\n"
+"      &lt;transition to=\"done\"/&gt;\n"
+"   &lt;/task-node&gt;\n"
+"   \n"
+"   &lt;end-state name=\"done\"/&gt;\n"
+"   \n"
+"&lt;/process-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:578
+#, no-c-format
+msgid ""
+"The <literal>&lt;start-state&gt;</literal> node represents the logical start "
+"of the process. When the process starts, it immediately transitions to the "
+"<literal>todo</literal> node."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:583
+#, no-c-format
+msgid ""
+"The <literal>&lt;task-node&gt;</literal> node represents a <emphasis>wait "
+"state</emphasis>, where business process execution pauses, waiting for one "
+"or more tasks to be performed."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:588
+#, no-c-format
+msgid ""
+"The <literal>&lt;task&gt;</literal> element defines a task to be performed "
+"by a user. Since there is only one task defined on this node, when it is "
+"complete, execution resumes, and we transition to the end state. The task "
+"gets its description from a Seam component named <literal>todoList</literal> "
+"(one of the JavaBeans)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:593
+#, no-c-format
+msgid ""
+"Tasks need to be assigned to a user or group of users when they are created. "
+"In this case, the task is assigned to the current user, which we get from a "
+"built-in Seam component named <literal>actor</literal>. Any Seam component "
+"may be used to perform task assignment."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:598
+#, no-c-format
+msgid ""
+"The <literal>&lt;end-state&gt;</literal> node defines the logical end of the "
+"business process. When execution reaches this node, the process instance is "
+"destroyed."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:605
+#, no-c-format
+msgid ""
+"If we view this process definition using the process definition editor "
+"provided by JBossIDE, this is what it looks like:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:616
+#, no-c-format
+msgid ""
+"This document defines our <emphasis>business process</emphasis> as a graph "
+"of nodes. This is the most trivial possible business process: there is one "
+"<emphasis>task</emphasis> to be performed, and when that task is complete, "
+"the business process ends."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:619
+#, no-c-format
+msgid ""
+"The first JavaBean handles the login screen <literal>login.jsp</literal>. "
+"Its job is just to initialize the jBPM actor id using the <literal>actor</"
+"literal> component. (In a real application, it would also need to "
+"authenticate the user.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:622
+#, no-c-format
+msgid ""
+"@Name(\"login\")\n"
+"public class Login {\n"
+"   \n"
+"   @In\n"
+"   private Actor actor;\n"
+"   \n"
+"   private String user;\n"
+"\n"
+"   public String getUser() {\n"
+"      return user;\n"
+"   }\n"
+"\n"
+"   public void setUser(String user) {\n"
+"      this.user = user;\n"
+"   }\n"
+"   \n"
+"   public String login()\n"
+"   {\n"
+"      actor.setId(user);\n"
+"      return \"/todo.jsp\";\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:623
+#, no-c-format
+msgid ""
+"Here we see the use of <literal>@In</literal> to inject the built-in "
+"<literal>Actor</literal> component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:626
+#, no-c-format
+msgid "The JSP itself is trivial:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:629
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"&#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"&#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Login&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Login&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    &lt;h:form&gt;\n"
+"      &lt;div&gt;\n"
+"        &lt;h:inputText value=\"#{login.user}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Login\" action=\"#{login.login}\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"    &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:630
+#, no-c-format
+msgid ""
+"The second JavaBean is responsible for starting business process instances, "
+"and ending tasks."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:639
+#, no-c-format
+msgid ""
+"@Name(\"todoList\")\n"
+"public class TodoList {\n"
+"   \n"
+"   private String description;\n"
+"   \n"
+"   public String getDescription()\n"
+"   {\n"
+"      return description;\n"
+"   }\n"
+"\n"
+"   public void setDescription(String description) {\n"
+"      this.description = description;\n"
+"   }\n"
+"   \n"
+"   @CreateProcess(definition=\"todo\")\n"
+"   public void createTodo() {}\n"
+"   \n"
+"   @StartTask @EndTask\n"
+"   public void done() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:642
+#, no-c-format
+msgid ""
+"The description property accepts user input form the JSP page, and exposes "
+"it to the process definition, allowing the task description to be set."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:647
+#, no-c-format
+msgid ""
+"The Seam <literal>@CreateProcess</literal> annotation creates a new jBPM "
+"process instance for the named process definition."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:652
+#, no-c-format
+msgid ""
+"The Seam <literal>@StartTask</literal> annotation starts work on a task. The "
+"<literal>@EndTask</literal> ends the task, and allows the business process "
+"execution to resume."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:659
+#, no-c-format
+msgid ""
+"In a more realistic example, <literal>@StartTask</literal> and "
+"<literal>@EndTask</literal> would not appear on the same method, because "
+"there is usually work to be done using the application in order to complete "
+"the task."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:662
+#, no-c-format
+msgid "Finally, the meat of the application is in <literal>todo.jsp</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:665
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://jboss.com/products/seam/taglib\" prefix=\"s\" "
+"&#37;&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Todo List&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Todo List&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"   &lt;h:form id=\"list\"&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:outputText value=\"There are no todo items.\" rendered=\"#"
+"{empty \n"
+"             taskInstanceList}\"/&gt;\n"
+"         &lt;h:dataTable value=\"#{taskInstanceList}\" var=\"task\" rendered="
+"\"#{not empty taskInstanceList}\"&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Description\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.description}\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Created\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:outputText value=\"#{task.taskMgmtInstance."
+"processInstance.start}\"&gt;\n"
+"                    &lt;f:convertDateTime type=\"date\"/&gt;\n"
+"                &lt;/h:outputText&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Priority\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.priority}\" style=\"width: 30"
+"\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Due Date\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.dueDate}\" style=\"width: 100"
+"\"&gt;\n"
+"                    &lt;f:convertDateTime type=\"date\" dateStyle=\"short\"/"
+"&gt;\n"
+"                &lt;/h:inputText&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;s:button value=\"Done\" action=\"#{todoList.done}\" "
+"taskInstance=\"#{task}\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"         &lt;/h:dataTable&gt;\n"
+"      &lt;/div&gt;\n"
+"      &lt;div&gt;\n"
+"      &lt;h:messages/&gt;\n"
+"      &lt;/div&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:commandButton value=\"Update Items\" action=\"update\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"   &lt;h:form id=\"new\"&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:inputText value=\"#{todoList.description}\"/&gt;\n"
+"         &lt;h:commandButton value=\"Create New Item\" action=\"#{todoList."
+"createTodo}\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:666
+#, no-c-format
+msgid "Let's take this one piece at a time."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:669
+#, no-c-format
+msgid ""
+"The page renders a list of tasks, which it gets from a built-in Seam "
+"component named <literal>taskInstanceList</literal>. The list is defined "
+"inside a JSF form."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:672
+#, no-c-format
+msgid ""
+"&lt;h:form id=\"list\"&gt;\n"
+"   &lt;div&gt;\n"
+"      &lt;h:outputText value=\"There are no todo items.\" rendered=\"#{empty "
+"taskInstanceList}\"/&gt;\n"
+"      &lt;h:dataTable value=\"#{taskInstanceList}\" var=\"task\" rendered=\"#"
+"{not empty taskInstanceList}\"&gt;\n"
+"         ...\n"
+"      &lt;/h:dataTable&gt;\n"
+"   &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:673
+#, no-c-format
+msgid ""
+"Each element of the list is an instance of the jBPM class "
+"<literal>TaskInstance</literal>. The following code simply displays the "
+"interesting properties of each task in the list. For the description, "
+"priority and due date, we use input controls, to allow the user to update "
+"these values."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:676
+#, no-c-format
+msgid ""
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"       &lt;h:outputText value=\"Description\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.description}\"/&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Created\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:outputText value=\"#{task.taskMgmtInstance.processInstance.start}"
+"\"&gt;\n"
+"        &lt;f:convertDateTime type=\"date\"/&gt;\n"
+"    &lt;/h:outputText&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Priority\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.priority}\" style=\"width: 30\"/&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Due Date\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.dueDate}\" style=\"width: 100\"&gt;\n"
+"        &lt;f:convertDateTime type=\"date\" dateStyle=\"short\"/&gt;\n"
+"    &lt;/h:inputText&gt;\n"
+"&lt;/h:column&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:677
+#, no-c-format
+msgid ""
+"This button ends the task by calling the action method annotated "
+"<literal>@StartTask @EndTask</literal>. It passes the task id to Seam as a "
+"request parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:680
+#, no-c-format
+msgid ""
+"&lt;h:column&gt;\n"
+"    &lt;s:button value=\"Done\" action=\"#{todoList.done}\" taskInstance=\"#"
+"{task}\"/&gt;\n"
+"&lt;/h:column&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:681
+#, no-c-format
+msgid ""
+"(Note that this is using a Seam <literal>&lt;s:button&gt;</literal> JSF "
+"control from the <literal>seam-ui.jar</literal> package.)"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:684
+#, no-c-format
+msgid ""
+"This button is used to update the properties of the tasks. When the form is "
+"submitted, Seam and jBPM will make any changes to the tasks persistent. "
+"There is no need for any action listener method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:687
+#, no-c-format
+msgid "&lt;h:commandButton value=\"Update Items\" action=\"update\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:688
+#, no-c-format
+msgid ""
+"A second form on the page is used to create new items, by calling the action "
+"method annotated <literal>@CreateProcess</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:691
+#, no-c-format
+msgid ""
+"&lt;h:form id=\"new\"&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:inputText value=\"#{todoList.description}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Create New Item\" action=\"#{todoList."
+"createTodo}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:692
+#, no-c-format
+msgid ""
+"There are several other files needed for the example, but they are just "
+"standard jBPM and Seam configuration and not very interesting."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:699 Tutorial.xml:814 Tutorial.xml:1157 Tutorial.xml:1178
+#: Tutorial.xml:1191
+#, no-c-format
+msgid "TODO"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:707
+#, no-c-format
+msgid "Seam pageflow: the numberguess example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:708
+#, no-c-format
+msgid ""
+"For Seam applications with relatively freeform (ad hoc) navigation, JSF/Seam "
+"navigation rules are a perfectly good way to define the page flow. For "
+"applications with a more constrained style of navigation, especially for "
+"user interfaces which are more stateful, navigation rules make it difficult "
+"to really understand the flow of the system. To understand the flow, you "
+"need to piece it together from the view pages, the actions and the "
+"navigation rules."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:711
+#, no-c-format
+msgid ""
+"Seam allows you to use a jPDL process definition to define pageflow. The "
+"simple number guessing example shows how this is done."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:724
+#, no-c-format
+msgid ""
+"The example is implemented using one JavaBean, three JSP pages and a jPDL "
+"pageflow definition. Let's begin with the pageflow:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:734
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"numberGuess\"&gt;\n"
+"   \n"
+"   &lt;start-page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"          &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"      &lt;/transition&gt;\n"
+"   &lt;/start-page&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess."
+"correctGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateRemainingGuesses\" expression=\"#{numberGuess."
+"lastGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"lose\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"displayGuess\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"lose\" view-id=\"/lose.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:737
+#, no-c-format
+msgid ""
+"The <literal>&lt;page&gt;</literal> element defines a wait state where the "
+"system displays a particular JSF view and waits for user input. The "
+"<literal>view-id</literal> is the same JSF view id used in plain JSF "
+"navigation rules. The <literal>redirect</literal> attribute tells Seam to "
+"use post-then-redirect when navigating to the page. (This results in "
+"friendly browser URLs.)"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:742
+#, no-c-format
+msgid ""
+"The <literal>&lt;transition&gt;</literal> element names a JSF outcome. The "
+"transition is triggered when a JSF action results in that outcome. Execution "
+"will then proceed to the next node of the pageflow graph, after invocation "
+"of any jBPM transition actions."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:747
+#, no-c-format
+msgid ""
+"A transition <literal>&lt;action&gt;</literal> is just like a JSF action, "
+"except that it occurs when a jBPM transition occurs. The transition action "
+"can invoke any Seam component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:752
+#, no-c-format
+msgid ""
+"A <literal>&lt;decision&gt;</literal> node branches the pageflow, and "
+"determines the next node to execute by evaluating a JSF EL expression."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:759
+#, no-c-format
+msgid "Here is what the pageflow looks like in the JBossIDE pageflow editor:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:770
+#, no-c-format
+msgid ""
+"Now that we have seen the pageflow, it is very, very easy to understand the "
+"rest of the application!"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:773
+#, no-c-format
+msgid ""
+"Here is the main page of the application, <literal>numberGuess.jsp</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:776
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"&#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"&#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Guess a number...&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Guess a number...&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    &lt;h:form&gt;\n"
+"        &lt;h:outputText value=\"Higher!\" rendered=\"#{numberGuess."
+"randomNumber&gt;numberGuess.currentGuess}\" /&gt;\n"
+"        &lt;h:outputText value=\"Lower!\" rendered=\"#{numberGuess."
+"randomNumber&lt;numberGuess.currentGuess}\" /&gt;\n"
+"        &lt;br /&gt;\n"
+"        I'm thinking of a number between &lt;h:outputText value=\"#"
+"{numberGuess.smallest}\" /&gt; and \n"
+"        &lt;h:outputText value=\"#{numberGuess.biggest}\" /&gt;. You have \n"
+"        &lt;h:outputText value=\"#{numberGuess.remainingGuesses}\" /&gt; "
+"guesses.\n"
+"        &lt;br /&gt;\n"
+"        Your guess: \n"
+"        &lt;h:inputText value=\"#{numberGuess.currentGuess}\" id=\"guess\" "
+"required=\"true\"&gt;\n"
+"            &lt;f:validateLongRange\n"
+"                maximum=\"#{numberGuess.biggest}\" \n"
+"                minimum=\"#{numberGuess.smallest}\"/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"        &lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"guess"
+"\" /&gt;\n"
+"        &lt;br/&gt;\n"
+"        &lt;h:message for=\"guess\" style=\"color: red\"/&gt;\n"
+"    &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:777
+#, no-c-format
+msgid ""
+"Notice how the command button names the <literal>guess</literal> transition "
+"instead of calling an action directly."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:780
+#, no-c-format
+msgid "The <literal>win.jsp</literal> page is predictable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:783
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"&#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"&#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;You won!&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;You won!&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    Yes, the answer was &lt;h:outputText value=\"#{numberGuess.currentGuess}"
+"\" /&gt;.\n"
+"    It took you &lt;h:outputText value=\"#{numberGuess.guessCount}\" /&gt; "
+"guesses.\n"
+"    Would you like to &lt;a href=\"numberGuess.seam\"&gt;play again&lt;/"
+"a&gt;?\n"
+"  &lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:784
+#, no-c-format
+msgid ""
+"As is <literal>lose.jsp</literal> (which I can't be bothered copy/pasting). "
+"Finally, the JavaBean Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:792
+#, no-c-format
+msgid ""
+"@Name(\"numberGuess\")\n"
+"@Scope(ScopeType.CONVERSATION)\n"
+"public class NumberGuess {\n"
+"   \n"
+"   private int randomNumber;\n"
+"   private Integer currentGuess;\n"
+"   private int biggest;\n"
+"   private int smallest;\n"
+"   private int guessCount;\n"
+"   private int maxGuesses;\n"
+"   \n"
+"   @Create \n"
+"   @Begin(pageflow=\"numberGuess\")\n"
+"   public void begin()\n"
+"   {\n"
+"      randomNumber = new Random().nextInt(100);\n"
+"      guessCount = 0;\n"
+"      biggest = 100;\n"
+"      smallest = 1;\n"
+"   }\n"
+"   \n"
+"   public void setCurrentGuess(Integer guess)\n"
+"   {\n"
+"      this.currentGuess = guess;\n"
+"   }\n"
+"   \n"
+"   public Integer getCurrentGuess()\n"
+"   {\n"
+"      return currentGuess;\n"
+"   }\n"
+"   \n"
+"   public void guess()\n"
+"   {\n"
+"      if (currentGuess&gt;randomNumber)\n"
+"      {\n"
+"         biggest = currentGuess - 1;\n"
+"      }\n"
+"      if (currentGuess&lt;randomNumber)\n"
+"      {\n"
+"         smallest = currentGuess + 1;\n"
+"      }\n"
+"      guessCount ++;\n"
+"   }\n"
+"   \n"
+"   public boolean isCorrectGuess()\n"
+"   {\n"
+"      return currentGuess==randomNumber;\n"
+"   }\n"
+"   \n"
+"   public int getBiggest()\n"
+"   {\n"
+"      return biggest;\n"
+"   }\n"
+"   \n"
+"   public int getSmallest()\n"
+"   {\n"
+"      return smallest;\n"
+"   }\n"
+"   \n"
+"   public int getGuessCount()\n"
+"   {\n"
+"      return guessCount;\n"
+"   }\n"
+"   \n"
+"   public boolean isLastGuess()\n"
+"   {\n"
+"      return guessCount==maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getRemainingGuesses() {\n"
+"      return maxGuesses-guessCount;\n"
+"   }\n"
+"\n"
+"   public void setMaxGuesses(int maxGuesses) {\n"
+"      this.maxGuesses = maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getMaxGuesses() {\n"
+"      return maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getRandomNumber() {\n"
+"      return randomNumber;\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:795
+#, no-c-format
+msgid ""
+"The first time a JSP page asks for a <literal>numberGuess</literal> "
+"component, Seam will create a new one for it, and the <literal>@Create</"
+"literal> method will be invoked, allowing the component to initialize itself."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:800
+#, no-c-format
+msgid ""
+"The <literal>@Begin</literal> annotation starts a Seam "
+"<emphasis>conversation</emphasis> (much more about that later), and "
+"specifies the pageflow definition to use for the conversation's page flow."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:807
+#, no-c-format
+msgid ""
+"As you can see, this Seam component is pure business logic! It doesn't need "
+"to know anything at all about the user interaction flow. This makes the "
+"component potentially more reuseable."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:822
+#, no-c-format
+msgid "A complete Seam application: the Hotel Booking example"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:824
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:825
+#, no-c-format
+msgid ""
+"The booking application is a complete hotel room reservation system "
+"incorporating the following features:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:830
+#, no-c-format
+msgid "User registration"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:835
+#, no-c-format
+msgid "Login"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:840
+#, no-c-format
+msgid "Logout"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:845
+#, no-c-format
+msgid "Set password"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:850
+#, no-c-format
+msgid "Hotel search"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:855
+#, no-c-format
+msgid "Hotel selection"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:860
+#, no-c-format
+msgid "Room reservation"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:865
+#, no-c-format
+msgid "Reservation confirmation"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:870
+#, no-c-format
+msgid "Existing reservation list"
+msgstr ""
+
+#. Tag: screeninfo
+#: Tutorial.xml:875
+#, no-c-format
+msgid "Booking example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:883
+#, no-c-format
+msgid ""
+"The booking application uses JSF, EJB 3.0 and Seam, together with Facelets "
+"for the view. There is also a port of this application to JSF, Facelets, "
+"Seam, JavaBeans and Hibernate3."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:886
+#, no-c-format
+msgid ""
+"One of the things you'll notice if you play with this application for long "
+"enough is that it is extremely <emphasis>robust</emphasis>. You can play "
+"with back buttons and browser refresh and opening multiple windows and "
+"entering nonsensical data as much as you like and you will find it very "
+"difficult to make the application crash. You might think that we spent weeks "
+"testing and fixing bugs to achive this. Actually, this is not the case. Seam "
+"was designed to make it very straightforward to build robust web "
+"applications and a lot of robustness that you are probably used to having to "
+"code yourself comes naturally and automatically with Seam."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:889
+#, no-c-format
+msgid ""
+"As you browse the sourcecode of the example application, and learn how the "
+"application works, observe how the declarative state management and "
+"integrated validation has been used to achieve this robustness."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:895
+#, no-c-format
+msgid "Overview of the booking example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:896
+#, no-c-format
+msgid ""
+"The project structure is identical to the previous one, to install and "
+"deploy this application, please refer to <xref linkend=\"Seam_Tutorial-"
+"Try_the_examples\"/>. Once you've successfully started the application, you "
+"can access it by pointing your browser to <ulink url=\"http://localhost:8080/"
+"seam-booking/\"><literal>http://localhost:8080/seam-booking/</literal></"
+"ulink>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:899
+#, no-c-format
+msgid ""
+"Just ten classes (plus six session beans local interfaces and 1 annotation "
+"interface) where used to implement this application. Six session bean action "
+"listeners contain all the business logic for the listed features."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:904
+#, no-c-format
+msgid ""
+"<literal>BookingListAction</literal> retrieves existing bookings for the "
+"currently logged in user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:907
+#, no-c-format
+msgid ""
+"<literal>ChangePasswordAction</literal> updates the password of the "
+"currently logged in user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:910
+#, no-c-format
+msgid ""
+"<literal>HotelBookingAction</literal> implements the core functionality of "
+"the application: hotel room searching, selection, booking and booking "
+"confirmation. This functionality is implemented as a <emphasis>conversation</"
+"emphasis>, so this is the most interesting class in the application."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:913
+#, no-c-format
+msgid ""
+"<literal>LoginAction</literal> validates the login details and retrieves the "
+"logged in user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:916
+#, no-c-format
+msgid "<literal>LogoutAction</literal> ends the login session."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:919
+#, no-c-format
+msgid "<literal>RegisterAction</literal> registers a new system user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:922
+#, no-c-format
+msgid "Three entity beans implement the application's persistent domain model."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:927
+#, no-c-format
+msgid "<literal>Hotel</literal> is an entity bean that represent a hotel"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:930
+#, no-c-format
+msgid ""
+"<literal>Booking</literal> is an entity bean that represents an existing "
+"booking"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:933
+#, no-c-format
+msgid ""
+"<literal>User</literal> is an entity bean to represents a user who can make "
+"hotel bookings"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:936
+#, no-c-format
+msgid ""
+"Finally, the <literal>LoggedIn</literal> annotation and the "
+"<literal>LoggedInInterceptor</literal> are used to protect actions that "
+"require a logged in user."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:942
+#, no-c-format
+msgid "Understanding Seam conversations"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:943
+#, no-c-format
+msgid ""
+"We encourage you browse the sourcecode at your pleasure. In this tutorial "
+"we'll concentrate upon one particular piece of functionality: hotel search, "
+"selection, booking and confirmation. From the point of view of the user, "
+"everything from selecting a hotel to confirming a booking is one continuous "
+"unit of work, a <emphasis>conversation</emphasis>. Searching, however, is "
+"<emphasis>not</emphasis> part of the conversation. The user can select "
+"multiple hotels from the same search results page, in different browser tabs."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:946
+#, no-c-format
+msgid ""
+"Most web application architectures have no first class construct to "
+"represent a conversation. This causes enormous problems managing state "
+"associated with the conversation. Usually, Java web applications use a "
+"combination of two techniques: first, some state is thrown into the "
+"<literal>HttpSession</literal>; second, persistable state is flushed to the "
+"database after every request, and reconstructed from the database at the "
+"beginning of each new request."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:949
+#, no-c-format
+msgid ""
+"Since the database is the least scalable tier, this often results in an "
+"utterly unacceptable lack of scalability. Added latency is also a problem, "
+"due to the extra traffic to and from the database on every request. To "
+"reduce this redundant traffic, Java applications often introduce a data "
+"(second-level) cache that keeps commonly accessed data between requests. "
+"This cache is necessarily inefficient, because invalidation is based upon an "
+"LRU policy instead of being based upon when the user has finished working "
+"with the data. Furthermore, because the cache is shared between many "
+"concurrent transactions, we've introduced a whole raft of problem's "
+"associated with keeping the cached state consistent with the database."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:952
+#, no-c-format
+msgid ""
+"Now consider the state held in the <literal>HttpSession</literal>. By very "
+"careful programming, we might be able to control the size of the session "
+"data. This is a lot more difficult than it sounds, since web browsers permit "
+"ad hoc non-linear navigation. But suppose we suddenly discover a system "
+"requirement that says that a user is allowed to have <emphasis>mutiple "
+"concurrent conversations</emphasis>, halfway through the development of the "
+"system (this has happened to me). Developing mechanisms to isolate session "
+"state associated with different concurrent conversations, and incorporating "
+"failsafes to ensure that conversation state is destroyed when the user "
+"aborts one of the conversations by closing a browser window or tab is not "
+"for the faint hearted (I've implemented this stuff twice so far, once for a "
+"client application, once for Seam, but I'm famously psychotic)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:955
+#, no-c-format
+msgid "Now there is a better way."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:958
+#, no-c-format
+msgid ""
+"Seam introduces the <emphasis>conversation context</emphasis> as a first "
+"class construct. You can safely keep conversational state in this context, "
+"and be assured that it will have a well-defined lifecycle. Even better, you "
+"won't need to be continually pushing data back and forth between the "
+"application server and the database, since the conversation context is a "
+"natural cache of data that the user is currently working with."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:961
+#, no-c-format
+msgid ""
+"Usually, the components we keep in the conversation context are stateful "
+"session beans. (We can also keep entity beans and JavaBeans in the "
+"conversation context.) There is an ancient canard in the Java community that "
+"stateful session beans are a scalability killer. This may have been true in "
+"1998 when WebFoobar 1.0 was released. It is no longer true today. "
+"Application servers like JBoss 4.0 have extremely sophisticated mechanisms "
+"for stateful session bean state replication. (For example, the JBoss EJB3 "
+"container performs fine-grained replication, replicating only those bean "
+"attribute values which actually changed.) Note that all the traditional "
+"technical arguments for why stateful beans are inefficient apply equally to "
+"the <literal>HttpSession</literal>, so the practice of shifting state from "
+"business tier stateful session bean components to the web session to try and "
+"improve performance is unbelievably misguided. It is certainly possible to "
+"write unscalable applications using stateful session beans, by using "
+"stateful beans incorrectly, or by using them for the wrong thing. But that "
+"doesn't mean you should <emphasis>never</emphasis> use them. Anyway, Seam "
+"guides you toward a safe usage model. Welcome to 2005."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:964
+#, no-c-format
+msgid "OK, I'll stop ranting now, and get back to the tutorial."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:967
+#, no-c-format
+msgid ""
+"The booking example application shows how stateful components with different "
+"scopes can collaborate together to achieve complex behaviors. The main page "
+"of the booking application allows the user to search for hotels. The search "
+"results are kept in the Seam session scope. When the user navigates to one "
+"of these hotels, a conversation begins, and a conversation scoped component "
+"calls back to the session scoped component to retrieve the selected hotel."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:970
+#, no-c-format
+msgid ""
+"The booking example also demonstrates the use of Ajax4JSF to implement rich "
+"client behavior without the use of handwritten JavaScript."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:973
+#, no-c-format
+msgid ""
+"The search functionality is implemented using a session-scope stateful "
+"session bean, similar to the one we saw in the message list example above."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:983
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"hotelSearch\")\n"
+"@Scope(ScopeType.SESSION)\n"
+"@LoggedIn\n"
+"public class HotelSearchingAction implements HotelSearching\n"
+"{\n"
+"   \n"
+"   @PersistenceContext\n"
+"   private EntityManager em;\n"
+"   \n"
+"   private String searchString;\n"
+"   private int pageSize = 10;\n"
+"   private int page;\n"
+"   \n"
+"   @DataModel\n"
+"   private List&lt;Hotel&gt; hotels;\n"
+"   \n"
+"   public String find()\n"
+"   {\n"
+"      page = 0;\n"
+"      queryHotels();   \n"
+"      return \"main\";\n"
+"   }\n"
+"\n"
+"   public String nextPage()\n"
+"   {\n"
+"      page++;\n"
+"      queryHotels();\n"
+"      return \"main\";\n"
+"   }\n"
+"      \n"
+"   private void queryHotels()\n"
+"   {\n"
+"      String searchPattern = searchString==null ? \"&#37;\" : '&#37;' + \n"
+"          searchString.toLowerCase().replace('*', '&#37;') + '&#37;';\n"
+"      hotels = em.createQuery(\"select h from Hotel h where lower(h.name) "
+"like\n"
+"          :search or lower(h.city) like :search \n"
+"          or lower(h.zip) like :search or lower(h.address) like :search\")\n"
+"            .setParameter(\"search\", searchPattern)\n"
+"            .setMaxResults(pageSize)\n"
+"            .setFirstResult( page * pageSize )\n"
+"            .getResultList();\n"
+"   }\n"
+"   \n"
+"   public boolean isNextPageAvailable()\n"
+"   {\n"
+"      return hotels!=null &amp;&amp; hotels.size()==pageSize;\n"
+"   }\n"
+"   \n"
+"   public int getPageSize() {\n"
+"      return pageSize;\n"
+"   }\n"
+"\n"
+"   public void setPageSize(int pageSize) {\n"
+"      this.pageSize = pageSize;\n"
+"   }\n"
+"\n"
+"   public String getSearchString()\n"
+"   {\n"
+"      return searchString;\n"
+"   }\n"
+"\n"
+"   public void setSearchString(String searchString)\n"
+"   {\n"
+"      this.searchString = searchString;\n"
+"   }\n"
+"   \n"
+"   @Destroy @Remove\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:986
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Stateful</literal> annotation identifies this "
+"class as a stateful session bean. Stateful session beans are scoped to the "
+"conversation context by default."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:991
+#, no-c-format
+msgid ""
+"The <literal>@LoggedIn</literal> annotation applies a custom Seam "
+"interceptor to the component. This works because <literal>@LoggedIn</"
+"literal> is marked with an <literal>@Interceptor</literal> meta-annotation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:996
+#, no-c-format
+msgid ""
+"The <link linkend=\"datamodel-annotation\"><literal>@DataModel</literal></"
+"link> annotation exposes a <literal>List</literal> as a JSF "
+"<literal>ListDataModel</literal>. This makes it easy to implement clickable "
+"lists for search screens. In this case, the list of hotels is exposed to the "
+"page as a <literal>ListDataModel</literal> in the conversation variable "
+"named <literal>hotels</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1001
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Remove</literal> annotation specifies that a "
+"stateful session bean should be removed and its state destroyed after "
+"invocation of the annotated method. In Seam, all stateful session beans "
+"should define a method marked <literal>@Destroy @Remove</literal>. This is "
+"the EJB remove method that will be called when Seam destroys the session "
+"context. Actually, the <link linkend=\"destroy-annotation"
+"\"><literal>@Destroy</literal></link> annotation is of more general "
+"usefulness, since it can be used for any kind of cleanup that should happen "
+"when any Seam context ends. If you don't have an <literal>@Destroy @Remove</"
+"literal> method, state will leak and you will suffer performance problems."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1008
+#, no-c-format
+msgid ""
+"The main page of the application is a Facelets page. Let's look at the "
+"fragment which relates to searching for hotels:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1018
+#, no-c-format
+msgid ""
+"&lt;div class=\"section\"&gt;\n"
+"&lt;h:form&gt;\n"
+"  \n"
+"  &lt;span class=\"errors\"&gt;\n"
+"    &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"  &lt;/span&gt;\n"
+"    \n"
+"  &lt;h1&gt;Search Hotels&lt;/h1&gt;\n"
+"  &lt;fieldset&gt; \n"
+"     &lt;h:inputText value=\"#{hotelSearch.searchString}\" style=\"width: "
+"165px;\"&gt;\n"
+"        &lt;a:support event=\"onkeyup\" actionListener=\"#{hotelSearch.find}"
+"\" \n"
+"                   reRender=\"searchResults\" /&gt;\n"
+"     &lt;/h:inputText&gt;\n"
+"     &amp;#160;\n"
+"     &lt;a:commandButton value=\"Find Hotels\" action=\"#{hotelSearch.find}"
+"\" \n"
+"                      styleClass=\"button\" reRender=\"searchResults\"/&gt;\n"
+"     &amp;#160;\n"
+"     &lt;a:status&gt;\n"
+"        &lt;f:facet name=\"start\"&gt;\n"
+"           &lt;h:graphicImage value=\"/img/spinner.gif\"/&gt;\n"
+"        &lt;/f:facet&gt;\n"
+"     &lt;/a:status&gt;\n"
+"     &lt;br/&gt;\n"
+"     &lt;h:outputLabel for=\"pageSize\"&gt;Maximum results:&lt;/h:"
+"outputLabel&gt;&amp;#160;\n"
+"     &lt;h:selectOneMenu value=\"#{hotelSearch.pageSize}\" id=\"pageSize"
+"\"&gt;\n"
+"        &lt;f:selectItem itemLabel=\"5\" itemValue=\"5\"/&gt;\n"
+"        &lt;f:selectItem itemLabel=\"10\" itemValue=\"10\"/&gt;\n"
+"        &lt;f:selectItem itemLabel=\"20\" itemValue=\"20\"/&gt;\n"
+"     &lt;/h:selectOneMenu&gt;\n"
+"  &lt;/fieldset&gt;\n"
+"    \n"
+"&lt;/h:form&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;a:outputPanel id=\"searchResults\"&gt;\n"
+"  &lt;div class=\"section\"&gt;\n"
+"  &lt;h:outputText value=\"No Hotels Found\" \n"
+"                rendered=\"#{hotels != null and hotels.rowCount==0}\"/&gt;\n"
+"  &lt;h:dataTable value=\"#{hotels}\" var=\"hot\" rendered=\"#{hotels."
+"rowCount&gt;0}\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Name&lt;/f:facet&gt;\n"
+"      #{hot.name}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Address&lt;/f:facet&gt;\n"
+"      #{hot.address}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;City, State&lt;/f:facet&gt;\n"
+"      #{hot.city}, #{hot.state}, #{hot.country}\n"
+"    &lt;/h:column&gt; \n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Zip&lt;/f:facet&gt;\n"
+"      #{hot.zip}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"      &lt;s:link value=\"View Hotel\" action=\"#{hotelBooking.selectHotel"
+"(hot)}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"  &lt;/h:dataTable&gt;\n"
+"  &lt;s:link value=\"More results\" action=\"#{hotelSearch.nextPage}\" \n"
+"          rendered=\"#{hotelSearch.nextPageAvailable}\"/&gt;\n"
+"  &lt;/div&gt;\n"
+"&lt;/a:outputPanel&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1021
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:support&gt;</literal> tag allows a JSF action "
+"event listener to be called by asynchronous <literal>XMLHttpRequest</"
+"literal> when a JavaScript event like <literal>onkeyup</literal> occurs. "
+"Even better, the <literal>reRender</literal> attribute lets us render a "
+"fragment of the JSF page and perform a partial page update when the "
+"asynchronous response is received."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1026
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:status&gt;</literal> tag lets us display a "
+"cheesy annimated image while we wait for asynchronous requests to return."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1031
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:outputPanel&gt;</literal> tag defines a region "
+"of the page which can be re-rendered by an asynchronous request."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1036
+#, no-c-format
+msgid ""
+"The Seam <literal>&lt;s:link&gt;</literal> tag lets us attach a JSF action "
+"listener to an ordinary (non-JavaScript) HTML link. The advantage of this "
+"over the standard JSF <literal>&lt;h:commandLink&gt;</literal> is that it "
+"preserves the operation of \"open in new window\" and \"open in new tab\". "
+"Also notice that we use a method binding with a parameter: <literal>#"
+"{hotelBooking.selectHotel(hot)}</literal>. This is not possible in the "
+"standard Unified EL, but Seam provides an extension to the EL that lets you "
+"use parameters on any method binding expression."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1043
+#, no-c-format
+msgid ""
+"This page displays the search results dynamically as we type, and lets us "
+"choose a hotel and pass it to the <literal>selectHotel()</literal> method of "
+"the <literal>HotelBookingAction</literal>, which is where the "
+"<emphasis>really</emphasis> interesting stuff is going to happen."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1046
+#, no-c-format
+msgid ""
+"Now lets see how the booking example application uses a conversation-scoped "
+"stateful session bean to achieve a natural cache of persistent data related "
+"to the conversation. The following code example is pretty long. But if you "
+"think of it as a list of scripted actions that implement the various steps "
+"of the conversation, it's understandable. Read the class from top to bottom, "
+"as if it were a story."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1057
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"hotelBooking\")\n"
+"@LoggedIn\n"
+"public class HotelBookingAction implements HotelBooking\n"
+"{\n"
+"   \n"
+"   @PersistenceContext(type=EXTENDED)\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @In \n"
+"   private User user;\n"
+"   \n"
+"   @In(required=false) @Out\n"
+"   private Hotel hotel;\n"
+"   \n"
+"   @In(required=false) \n"
+"   @Out(required=false)\n"
+"   private Booking booking;\n"
+"     \n"
+"   @In\n"
+"   private FacesMessages facesMessages;\n"
+"      \n"
+"   @In\n"
+"   private Events events;\n"
+"   \n"
+"   @Logger \n"
+"   private Log log;\n"
+"   \n"
+"   @Begin\n"
+"   public String selectHotel(Hotel selectedHotel)\n"
+"   {\n"
+"      hotel = em.merge(selectedHotel);\n"
+"      return \"hotel\";\n"
+"   }\n"
+"   \n"
+"   public String bookHotel()\n"
+"   {      \n"
+"      booking = new Booking(hotel, user);\n"
+"      Calendar calendar = Calendar.getInstance();\n"
+"      booking.setCheckinDate( calendar.getTime() );\n"
+"      calendar.add(Calendar.DAY_OF_MONTH, 1);\n"
+"      booking.setCheckoutDate( calendar.getTime() );\n"
+"      \n"
+"      return \"book\";\n"
+"   }\n"
+"\n"
+"   public String setBookingDetails()\n"
+"   {\n"
+"      if (booking==null || hotel==null) return \"main\";\n"
+"      if ( !booking.getCheckinDate().before( booking.getCheckoutDate() ) )\n"
+"      {\n"
+"         facesMessages.add(\"Check out date must be later than check in date"
+"\");\n"
+"         return null;\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return \"confirm\";\n"
+"      }\n"
+"   }\n"
+"\n"
+"   @End\n"
+"   public String confirm()\n"
+"   {\n"
+"      if (booking==null || hotel==null) return \"main\";\n"
+"      em.persist(booking);\n"
+"      facesMessages.add\n"
+"          (\"Thank you, #{user.name}, your confimation number for #{hotel."
+"name} is #{booking.id}\");\n"
+"      log.info(\"New booking: #{booking.id} for #{user.username}\");\n"
+"      events.raiseEvent(\"bookingConfirmed\");\n"
+"      return \"confirmed\";\n"
+"   }\n"
+"   \n"
+"   @End\n"
+"   public String cancel()\n"
+"   {\n"
+"      return \"main\";\n"
+"   }\n"
+"   \n"
+"   @Destroy @Remove\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1060
+#, no-c-format
+msgid ""
+"This bean uses an EJB3 <emphasis>extended persistence context</emphasis>, so "
+"that any entity instances remain managed for the whole lifecycle of the "
+"stateful session bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1065
+#, no-c-format
+msgid ""
+"The <link linkend=\"out-annotation\"><literal>@Out</literal></link> "
+"annotation declares that an attribute value is <emphasis>outjected</"
+"emphasis> to a context variable after method invocations. In this case, the "
+"context variable named <literal>hotel</literal> will be set to the value of "
+"the <literal>hotel</literal> instance variable after every action listener "
+"invocation completes."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1070
+#, no-c-format
+msgid ""
+"The <link linkend=\"begin-annotation\"><literal>@Begin</literal></link> "
+"annotation specifies that the annotated method begins a <emphasis>long-"
+"running conversation</emphasis>, so the current conversation context will "
+"not be destroyed at the end of the request. Instead, it will be reassociated "
+"with every request from the current window, and destroyed either by timeout "
+"due to conversation inactivity or invocation of a matching <literal>@End</"
+"literal> method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1075
+#, no-c-format
+msgid ""
+"The <link linkend=\"end-annotation\"><literal>@End</literal></link> "
+"annotation specifies that the annotated method ends the current long-running "
+"conversation, so the current conversation context will be destroyed at the "
+"end of the request."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1080
+#, no-c-format
+msgid ""
+"This EJB remove method will be called when Seam destroys the conversation "
+"context. Don't ever forget to define this method!"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1087
+#, no-c-format
+msgid ""
+"<literal>HotelBookingAction</literal> contains all the action listener "
+"methods that implement selection, booking and booking confirmation, and "
+"holds state related to this work in its instance variables. We think you'll "
+"agree that this code is much cleaner and simpler than getting and setting "
+"<literal>HttpSession</literal> attributes."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1090
+#, no-c-format
+msgid ""
+"Even better, a user can have multiple isolated conversations per login "
+"session. Try it! Log in, run a search, and navigate to different hotel pages "
+"in multiple browser tabs. You'll be able to work on creating two different "
+"hotel reservations at the same time. If you leave any one conversation "
+"inactive for long enough, Seam will eventually time out that conversation "
+"and destroy its state. If, after ending a conversation, you backbutton to a "
+"page of that conversation and try to perform an action, Seam will detect "
+"that the conversation was already ended, and redirect you to the search page."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1096
+#, no-c-format
+msgid "The Seam UI control library"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1097
+#, no-c-format
+msgid ""
+"If you check inside the WAR file for the booking application, you'll find "
+"<literal>seam-ui.jar</literal> in the <literal>WEB-INF/lib</literal> "
+"directory. This package contains a number of JSF custom controls that "
+"integrate with Seam. The booking application uses the <literal>&lt;s:link&gt;"
+"</literal> control for navigation from the search screen to the hotel page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1100
+#, no-c-format
+msgid ""
+"&lt;s:link value=\"View Hotel\" action=\"#{hotelBooking.selectHotel}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1101
+#, no-c-format
+msgid ""
+"The use of <literal>&lt;s:link&gt;</literal> here allows us to attach an "
+"action listener to a HTML link without breaking the browser's \"open in new "
+"window\" feature. The standard JSF <literal>&lt;h:commandLink&gt;</literal> "
+"does not work with \"open in new window\". We'll see later that <literal>&lt;"
+"s:link&gt;</literal> also offers a number of other useful features, "
+"including conversation propagation rules."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1104
+#, no-c-format
+msgid ""
+"The booking application uses some other Seam and Ajax4JSF controls, "
+"especially on the <literal>/book.xhtml</literal> page. We won't get into the "
+"details of those controls here, but if you want to understand this code, "
+"please refer to the chapter covering Seam's functionality for JSF form "
+"validation."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1110
+#, no-c-format
+msgid "The Seam Debug Page"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1111
+#, no-c-format
+msgid ""
+"The WAR also includes <literal>seam-debug.jar</literal>. If this jar is "
+"deployed in <literal>WEB-INF/lib</literal>, along with the Facelets, and if "
+"you set the following Seam property in <literal>web.xml</literal> or "
+"<literal>seam.properties</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1114
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;org.jboss.seam.core.init.debug&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;true&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1115
+#, no-c-format
+msgid ""
+"Then the Seam debug page will be available. This page lets you browse and "
+"inspect the Seam components in any of the Seam contexts associated with your "
+"current login session. Just point your browser at <ulink url=\"http://"
+"localhost:8080/seam-booking/debug.seam\"><literal>http://localhost:8080/seam-"
+"booking/debug.seam</literal></ulink>."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1131
+#, no-c-format
+msgid "A complete application featuring Seam and jBPM: the DVD Store example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1132
+#, no-c-format
+msgid ""
+"The DVD Store demo application shows the practical usage of jBPM for both "
+"task management and pageflow."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1135
+#, no-c-format
+msgid ""
+"The user screens take advantage of a jPDL pageflow to implement searching "
+"and shopping cart functionality."
+msgstr ""
+
+#. Tag: screeninfo
+#: Tutorial.xml:1138 Tutorial.xml:1149 Tutorial.xml:1170
+#, no-c-format
+msgid "DVD Store example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1146
+#, no-c-format
+msgid ""
+"The administration screens take use jBPM to manage the approval and shipping "
+"cycle for orders. The business process may even be changed dynamically, by "
+"selecting a different process definition!"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1160
+#, no-c-format
+msgid "Look in the <literal>dvdstore</literal> directory."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1166
+#, no-c-format
+msgid ""
+"A complete application featuring Seam workspace management: the Issue "
+"Tracker example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1167
+#, no-c-format
+msgid ""
+"The Issue Tracker demo shows off Seam's workspace management functionality: "
+"the conversation switcher, conversation list and breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1181
+#, no-c-format
+msgid "Look in the <literal>issues</literal> directory."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1187
+#, no-c-format
+msgid "An example of Seam with Hibernate: the Hibernate Booking example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1188
+#, no-c-format
+msgid ""
+"The Hibernate Booking demo is a straight port of the Booking demo to an "
+"alternative architecture that uses Hibernate for persistence and JavaBeans "
+"instead of session beans."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1194
+#, no-c-format
+msgid "Look in the <literal>hibernate</literal> directory."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1200
+#, no-c-format
+msgid "A RESTful Seam application: the Blog example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1201
+#, no-c-format
+msgid ""
+"Seam makes it very easy to implement applications which keep state on the "
+"server-side. However, server-side state is not always appropriate, "
+"especially in for functionality that serves up <emphasis>content</emphasis>. "
+"For this kind of problem we often need to let the user bookmark pages and "
+"have a relatively stateless server, so that any page can be accessed at any "
+"time, via the bookmark. The Blog example shows how to a implement RESTful "
+"application using Seam. Every page of the application can be bookmarked, "
+"including the search results page."
+msgstr ""
+
+#. Tag: screeninfo
+#: Tutorial.xml:1204
+#, no-c-format
+msgid "Blog example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1212
+#, no-c-format
+msgid ""
+"The Blog example demonstrates the use of \"pull\"-style MVC, where instead "
+"of using action listener methods to retrieve data and prepare the data for "
+"the view, the view pulls data from components as it is being rendered."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1216
+#, no-c-format
+msgid "Using \"pull\"-style MVC"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1217
+#, no-c-format
+msgid ""
+"This snippet from the <literal>index.xhtml</literal> facelets page displays "
+"a list of recent blog entries:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1220
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{blog.recentBlogEntries}\" var=\"blogEntry\" rows="
+"\"3\"&gt;\n"
+"   &lt;h:column&gt;\n"
+"      &lt;div class=\"blogEntry\"&gt;\n"
+"         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"         &lt;div&gt;\n"
+"            &lt;h:outputText escape=\"false\" \n"
+"                  value=\"#{blogEntry.excerpt==null ? blogEntry.body : "
+"blogEntry.excerpt}\"/&gt;\n"
+"         &lt;/div&gt;\n"
+"         &lt;p&gt;\n"
+"            &lt;h:outputLink value=\"entry.seam\" rendered=\"#{blogEntry."
+"excerpt!=null}\"&gt;\n"
+"               &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/"
+"&gt;\n"
+"               Read more...\n"
+"            &lt;/h:outputLink&gt;\n"
+"         &lt;/p&gt;\n"
+"         &lt;p&gt;\n"
+"            [Posted on \n"
+"            &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"               &lt;f:convertDateTime timeZone=\"#{blog.timeZone}\" locale=\"#"
+"{blog.locale}\" \n"
+"                   type=\"both\"/&gt;\n"
+"            &lt;/h:outputText&gt;]\n"
+"            &amp;#160;\n"
+"            &lt;h:outputLink value=\"entry.seam\"&gt;[Link]\n"
+"               &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/"
+"&gt;\n"
+"            &lt;/h:outputLink&gt;\n"
+"         &lt;/p&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1221
+#, no-c-format
+msgid ""
+"If we navigate to this page from a bookmark, how does the data used by the "
+"<literal>&lt;h:dataTable&gt;</literal> actually get initialized? Well, what "
+"happens is that the <literal>Blog</literal> is retrieved lazily&mdash;"
+"\"pulled\"&mdash;when needed, by a Seam component named <literal>blog</"
+"literal>. This is the opposite flow of control to what is usual in "
+"traditional web action-based frameworks like Struts."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1229
+#, no-c-format
+msgid ""
+"@Name(\"blog\")\n"
+"@Scope(ScopeType.STATELESS)\n"
+"public class BlogService \n"
+"{\n"
+"   \n"
+"   @In\n"
+"   private EntityManager entityManager;\n"
+"  \n"
+"   @Unwrap\n"
+"   public Blog getBlog()\n"
+"   {\n"
+"      return (Blog) entityManager.createQuery(\"from Blog b left join fetch "
+"b.blogEntries\")\n"
+"            .setHint(\"org.hibernate.cacheable\", true)\n"
+"            .getSingleResult();\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1232
+#, no-c-format
+msgid ""
+"This component uses a <emphasis>seam-managed persistence context</emphasis>. "
+"Unlike the other examples we've seen, this persistence context is managed by "
+"Seam, instead of by the EJB3 container. The persistence context spans the "
+"entire web request, allowing us to avoid any exceptions that occur when "
+"accessing unfetched associations in the view."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1237
+#, no-c-format
+msgid ""
+"The <literal>@Unwrap</literal> annotation tells Seam to provide the return "
+"value of the method&mdash;the <literal>Blog</literal>&mdash;instead of the "
+"actual <literal>BlogService</literal> component to clients. This is the Seam "
+"<emphasis>manager component pattern</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1244
+#, no-c-format
+msgid ""
+"This is good so far, but what about bookmarking the result of form "
+"submissions, such as a search results page?"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1250
+#, no-c-format
+msgid "Bookmarkable search results page"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1251
+#, no-c-format
+msgid ""
+"The blog example has a tiny form in the top right of each page that allows "
+"the user to search for blog entries. This is defined in a file, "
+"<literal>menu.xhtml</literal>, included by the facelets template, "
+"<literal>template.xhtml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1254
+#, no-c-format
+msgid ""
+"&lt;div id=\"search\"&gt;\n"
+"   &lt;h:form&gt;\n"
+"      &lt;h:inputText value=\"#{searchAction.searchPattern}\"/&gt;\n"
+"      &lt;h:commandButton value=\"Search\" action=\"/search.xhtml\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1255
+#, no-c-format
+msgid ""
+"To implement a bookmarkable search results page, we need to perform a "
+"browser redirect after processing the search form submission. Because we "
+"used the JSF view id as the action outcome, Seam automatically redirects to "
+"the view id when the form is submitted. Alternatively, we could have defined "
+"a navigation rule like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1258
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"   &lt;navigation-case&gt;\n"
+"      &lt;from-outcome&gt;searchResults&lt;/from-outcome&gt;\n"
+"      &lt;to-view-id&gt;/search.xhtml&lt;/to-view-id&gt;\n"
+"      &lt;redirect/&gt;\n"
+"   &lt;/navigation-case&gt;\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1259
+#, no-c-format
+msgid "Then the form would have looked like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1262
+#, no-c-format
+msgid ""
+"&lt;div id=\"search\"&gt;\n"
+"   &lt;h:form&gt;\n"
+"      &lt;h:inputText value=\"#{searchAction.searchPattern}\"/&gt;\n"
+"      &lt;h:commandButton value=\"Search\" action=\"searchResults\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1263
+#, no-c-format
+msgid ""
+"But when we redirect, we need to include the values submitted with the form "
+"as request parameters, to get a bookmarkable URL like <literal>http://"
+"localhost:8080/seam-blog/search.seam?searchPattern=seam</literal>. JSF does "
+"not provide an easy way to do this, but Seam does. We use a Seam "
+"<emphasis>page parameter</emphasis>, defined in <literal>WEB-INF/pages.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1266
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   &lt;page view-id=\"/search.xhtml\"&gt;\n"
+"      &lt;param name=\"searchPattern\" value=\"#{searchService.searchPattern}"
+"\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1267
+#, no-c-format
+msgid ""
+"This tells Seam to include the value of <literal>#{searchService."
+"searchPattern}</literal> as a request parameter named "
+"<literal>searchPattern</literal> when redirecting to the page, and then re-"
+"apply the value of that parameter to the model before rendering the page."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1270
+#, no-c-format
+msgid "The redirect takes us to the <literal>search.xhtml</literal> page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1273
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{searchResults}\" var=\"blogEntry\"&gt;\n"
+"   &lt;h:column&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:outputLink value=\"entry.seam\"&gt;\n"
+"            &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"            #{blogEntry.title}\n"
+"         &lt;/h:outputLink&gt;\n"
+"         posted on \n"
+"         &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"            &lt;f:convertDateTime timeZone=\"#{blog.timeZone}\" locale=\"#"
+"{blog.locale}\" type=\"both\"/&gt;\n"
+"         &lt;/h:outputText&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1274
+#, no-c-format
+msgid ""
+"Which again uses \"pull\"-style MVC to retrieve the actual search results:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1277
+#, no-c-format
+msgid ""
+"@Name(\"searchService\")\n"
+"public class SearchService \n"
+"{\n"
+"   \n"
+"   @In\n"
+"   private EntityManager entityManager;\n"
+"   \n"
+"   private String searchPattern;\n"
+"   \n"
+"   @Factory(\"searchResults\")\n"
+"   public List&lt;BlogEntry&gt; getSearchResults()\n"
+"   {\n"
+"      if (searchPattern==null)\n"
+"      {\n"
+"         return null;\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return entityManager.createQuery(\"select be from BlogEntry be "
+"where lower(be.title)\n"
+"             like :searchPattern or lower(be.body) like :searchPattern \n"
+"             order by be.date desc\")\n"
+"               .setParameter( \"searchPattern\", getSqlSearchPattern() )\n"
+"               .setMaxResults(100)\n"
+"               .getResultList();\n"
+"      }\n"
+"   }\n"
+"\n"
+"   private String getSqlSearchPattern()\n"
+"   {\n"
+"      return searchPattern==null ? \"\" : '&#37;' + \n"
+"          searchPattern.toLowerCase().replace('*', '&#37;').replace('?', "
+"'_') + '&#37;';\n"
+"   }\n"
+"\n"
+"   public String getSearchPattern()\n"
+"   {\n"
+"      return searchPattern;\n"
+"   }\n"
+"\n"
+"   public void setSearchPattern(String searchPattern)\n"
+"   {\n"
+"      this.searchPattern = searchPattern;\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1282
+#, no-c-format
+msgid "Using \"push\"-style MVC in a RESTful application"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1283
+#, no-c-format
+msgid ""
+"Very occasionally, it makes more sense to use push-style MVC for processing "
+"RESTful pages, and so Seam provides the notion of a <emphasis>page action</"
+"emphasis>. The Blog example uses a page action for the blog entry page, "
+"<literal>entry.xhtml</literal>. Note that this is a little bit contrived, it "
+"would have been easier to use pull-style MVC here as well."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1286
+#, no-c-format
+msgid ""
+"The <literal>entryAction</literal> component works much like an action class "
+"in a traditional push-MVC action-oriented framework like Struts:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1289
+#, no-c-format
+msgid ""
+"@Name(\"entryAction\")\n"
+"@Scope(STATELESS)\n"
+"public class EntryAction\n"
+"{\n"
+"   @In(create=true) \n"
+"   private Blog blog;\n"
+"   \n"
+"   @Out\n"
+"   private BlogEntry blogEntry;\n"
+"   \n"
+"   public void loadBlogEntry(String id) throws EntryNotFoundException\n"
+"   {\n"
+"      blogEntry = blog.getBlogEntry(id);\n"
+"      if (blogEntry==null) throw new EntryNotFoundException(id);\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1290
+#, no-c-format
+msgid "Page actions are also declared in <literal>pages.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1293
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   ...\n"
+"\n"
+"   &lt;page view-id=\"/entry.xhtml\" action=\"#{entryAction.loadBlogEntry"
+"(blogEntry.id)}\"&gt;\n"
+"      &lt;param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"\n"
+"   &lt;page view-id=\"/post.xhtml\" action=\"#{loginAction.challenge}\"/"
+"&gt;\n"
+"\n"
+"   &lt;page view-id=\"*\" action=\"#{blog.hitCount.hit}\"/&gt;\n"
+"\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1294
+#, no-c-format
+msgid ""
+"Notice that the example is using page actions for some other "
+"functionality&mdash;the login challenge, and the pageview counter. Also "
+"notice the use of a parameter in the page action method binding. This is not "
+"a standard feature of JSF EL, but Seam lets you use it, not just for page "
+"actions, but also in JSF method bindings."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1297
+#, no-c-format
+msgid ""
+"When the <literal>entry.xhtml</literal> page is requested, Seam first binds "
+"the page parameter <literal>blogEntryId</literal> to the model, then runs "
+"the page action, which retrieves the needed data&mdash;the "
+"<literal>blogEntry</literal>&mdash;and places it in the Seam event context. "
+"Finally, the following is rendered:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1300
+#, no-c-format
+msgid ""
+"&lt;div class=\"blogEntry\"&gt;\n"
+"   &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"   &lt;div&gt;\n"
+"      &lt;h:outputText escape=\"false\" value=\"#{blogEntry.body}\"/&gt;\n"
+"   &lt;/div&gt;\n"
+"   &lt;p&gt;\n"
+"      [Posted on&amp;#160;\n"
+"      &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"         &lt;f:convertDateTime timezone=\"#{blog.timeZone}\" locale=\"#{blog."
+"locale}\" type=\"both\"/&gt;\n"
+"      &lt;/h:outputText&gt;]\n"
+"   &lt;/p&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1301
+#, no-c-format
+msgid ""
+"If the blog entry is not found in the database, the "
+"<literal>EntryNotFoundException</literal> exception is thrown. We want this "
+"exception to result in a 404 error, not a 505, so we annotate the exception "
+"class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1304
+#, no-c-format
+msgid ""
+"@ApplicationException(rollback=true)\n"
+"@HttpError(errorCode=HttpServletResponse.SC_NOT_FOUND)\n"
+"public class EntryNotFoundException extends Exception\n"
+"{\n"
+"   EntryNotFoundException(String id)\n"
+"   {\n"
+"      super(\"entry not found: \" + id);\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1305
+#, no-c-format
+msgid ""
+"An alternative implementation of the example does not use the parameter in "
+"the method binding:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1308
+#, no-c-format
+msgid ""
+"@Name(\"entryAction\")\n"
+"@Scope(STATELESS)\n"
+"public class EntryAction\n"
+"{\n"
+"   @In(create=true) \n"
+"   private Blog blog;\n"
+"   \n"
+"   @In @Out\n"
+"   private BlogEntry blogEntry;\n"
+"   \n"
+"   public void loadBlogEntry() throws EntryNotFoundException\n"
+"   {\n"
+"      blogEntry = blog.getBlogEntry( blogEntry.getId() );\n"
+"      if (blogEntry==null) throw new EntryNotFoundException(id);\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1309
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   ...\n"
+"\n"
+"   &lt;page view-id=\"/entry.xhtml\" action=\"#{entryAction.loadBlogEntry}"
+"\"&gt;\n"
+"      &lt;param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1310
+#, no-c-format
+msgid "It is a matter of taste which implementation you prefer."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1318
+#, no-c-format
+msgid "Running the Seam examples in JBoss using the JSF 1.2 RI"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1319
+#, no-c-format
+msgid ""
+"JBoss AS 4.0 ships with the Apache MyFaces implementation of JSF 1.1. After "
+"many months of waiting, there is <emphasis>still</emphasis> no "
+"implementation of JSF 1.2 from MyFaces. For this and other reasons, JBoss AS "
+"4.2 will embed the JSF 1.2 Reference Implementation by default. Soon after "
+"the release of 4.2, we will migrate the Seam examples to JSF 1.2."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1322
+#, no-c-format
+msgid ""
+"For those who can't wait, Seam is already compatible with JSF 1.2, and it's "
+"easy to get the Seam examples running with JSF 1.2 in JBoss 4.0.5. Let's "
+"start with the famous booking example:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1327
+#, no-c-format
+msgid ""
+"copy <literal>jsf-api.jar</literal>, <literal>jsf-impl.jar</literal>, "
+"<literal>el-api.jar</literal>, <literal>el-impl.jar</literal> to "
+"<literal>server/default/deploy/tomcat/jbossweb-tomcat55.sar/jsf-libs</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1332
+#, no-c-format
+msgid ""
+"delete <literal>myfaces-api.jar</literal> and <literal>myfaces-impl.jar</"
+"literal> from <literal>server/default/deploy/tomcat/jbossweb-tomcat55.sar/"
+"jsf-libs</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1337
+#, no-c-format
+msgid ""
+"edit <literal>server/default/deploy/tomcat/jbossweb-tomcat55.sar/conf/web."
+"xml</literal>, replacing <literal>myfaces-impl.jar</literal> with "
+"<literal>jsf-impl.jar</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1342
+#, no-c-format
+msgid ""
+"edit <literal>examples/booking/resources/WEB-INF/web.xml</literal>, deleting "
+"the MyFaces listener, uncommenting the RI listener"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1347
+#, no-c-format
+msgid ""
+"edit <literal>examples/booking/resources/WEB-INF/faces-config.xml</literal>, "
+"uncommenting the lines that install the <literal>SeamELResolver</literal> "
+"using the new JSF 1.2 XML schema declaration."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1352
+#, no-c-format
+msgid ""
+"edit <literal>examples/booking/resources/META-INF/application.xml</literal>, "
+"deleting the lines that declare <literal>el-api.jar</literal> and "
+"<literal>el-impl.jar</literal> as Java modules."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1357
+#, no-c-format
+msgid ""
+"Restart JBoss, and type <literal>ant</literal> in the <literal>examples/"
+"booking</literal> directory."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Validation.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Validation.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Validation.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,375 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Validation.xml:10
+#, no-c-format
+msgid "JSF form validation in Seam"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:11
+#, no-c-format
+msgid "In plain JSF, validation is defined in the view:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:14
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Country:\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;my:validateCountry/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Zip code:\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;my:validateZip/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:15
+#, no-c-format
+msgid ""
+"In practice, this approach usually violates DRY, since most \"validation\" "
+"actually enforces constraints that are part of the data model, and exist all "
+"the way down to the database schema definition. Seam provides support for "
+"model-based constraints defined using Hibernate Validator."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:18
+#, no-c-format
+msgid ""
+"Let's start by defining our constraints, on our <literal>Location</literal> "
+"class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:21
+#, no-c-format
+msgid ""
+"public class Location {\n"
+"    private String country;\n"
+"    private String zip;\n"
+"    \n"
+"    @NotNull\n"
+"    @Length(max=30)\n"
+"    public String getCountry() { return country; }\n"
+"    public void setCountry(String c) { country = c; }\n"
+"\n"
+"    @NotNull\n"
+"    @Length(max=6)\n"
+"    @Pattern(\"^&#92;d*&#36;\")\n"
+"    public String getZip() { return zip; }\n"
+"    public void setZip(String z) { zip = z; }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:22
+#, no-c-format
+msgid ""
+"Well, that's a decent first cut, but in practice it might be more elegant to "
+"use custom constraints instead of the ones built into Hibernate Validator:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:25
+#, no-c-format
+msgid ""
+"public class Location {\n"
+"    private String country;\n"
+"    private String zip;\n"
+"    \n"
+"    @NotNull\n"
+"    @Country\n"
+"    public String getCountry() { return country; }\n"
+"    public void setCountry(String c) { country = c; }\n"
+"\n"
+"    @NotNull\n"
+"    @ZipCode\n"
+"    public String getZip() { return zip; }\n"
+"    public void setZip(String z) { zip = z; }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:26
+#, no-c-format
+msgid ""
+"Whichever route we take, we no longer need to specify the type of validation "
+"to be used in the JSF page. Instead, we can use <literal>&lt;s:validate&gt;</"
+"literal> to validate against the constraint defined on the model object."
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:29
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Country:\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;s:validate/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Zip code:\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;s:validate/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:30
+#, no-c-format
+msgid ""
+"<emphasis>Note:</emphasis> specifying <literal>@NotNull</literal> on the "
+"model does <emphasis>not</emphasis> eliminate the requirement for "
+"<literal>required=\"true\"</literal> to appear on the control! This is due "
+"to a limitation of the JSF validation architecture."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:33
+#, no-c-format
+msgid ""
+"This version is not much less verbose than what we started with, so let's "
+"try <literal>&lt;s:validateAll&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:36
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;h:inputText value=\"#{location.country}\" required=\"true\"/"
+"&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/"
+"&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:37
+#, no-c-format
+msgid ""
+"This tag simply adds an <literal>&lt;s:validate&gt;</literal> to every input "
+"in the form. For a large form, it can save a lot of typing!"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:40
+#, no-c-format
+msgid ""
+"Now we need to do something about displaying feedback to the user when "
+"validation fails. Currently we are displaying all messages at the top of the "
+"form. What we would really like to do is display the message next to the "
+"field with the error (this is possible in plain JSF), highlight the field "
+"(this is not possible) and, for good measure, display some image next the "
+"the field (also not possible)."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:43
+#, no-c-format
+msgid "Let's try out <literal>&lt;s:decorate&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:46
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;s:decorate&gt;\n"
+"                &lt;f:facet name=\"beforeInvalidField\"&gt;&lt;h:"
+"graphicImage src=\"img/error.gif\"/&gt;&lt;/f:facet&gt;\n"
+"                &lt;f:facet name=\"afterInvalidField\"&gt;&lt;s:message/&gt;"
+"&lt;/f:facet&gt;\n"
+"                &lt;f:facet name=\"aroundInvalidField\"&gt;&lt;s:span "
+"styleClass=\"error\"/&gt;&lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{location.country}\" required=\"true"
+"\"/&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;s:decorate&gt;\n"
+"                &lt;f:facet name=\"beforeInvalidField\"&gt;&lt;h:"
+"graphicImage src=\"img/error.gif\"/&gt;&lt;/f:facet&gt;\n"
+"                &lt;f:facet name=\"afterInvalidField\"&gt;&lt;s:message/&gt;"
+"&lt;/f:facet&gt;\n"
+"                &lt;f:facet name=\"aroundInvalidField\"&gt;&lt;s:span "
+"styleClass=\"error\"/&gt;&lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/"
+"&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:47
+#, no-c-format
+msgid ""
+"Well, that looks much better to the user, but it is extremely verbose. "
+"Fortunately, the facets of <literal>&lt;s:decorate&gt;</literal> may be "
+"defined on any parent element:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:50
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;f:facet name=\"beforeInvalidField\"&gt;\n"
+"        &lt;h:graphicImage src=\"img/error.gif\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;f:facet name=\"afterInvalidField\"&gt;\n"
+"        &lt;s:message/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;f:facet name=\"aroundInvalidField\"&gt;\n"
+"        &lt;s:span styleClass=\"error\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;s:decorate&gt;\n"
+"                &lt;h:inputText value=\"#{location.country}\" required=\"true"
+"\"/&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;s:decorate&gt;\n"
+"                &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/"
+"&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:51
+#, no-c-format
+msgid ""
+"This approach <emphasis>defines</emphasis> constraints on the model, and "
+"<emphasis>presents</emphasis> constraint violations in the view&mdash;a "
+"significantly better design."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:54
+#, no-c-format
+msgid ""
+"Finally, we can use Ajax4JSF to display validation messages as the user is "
+"typing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:57
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;f:facet name=\"beforeInvalidField\"&gt;\n"
+"        &lt;h:graphicImage src=\"img/error.gif\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;f:facet name=\"afterInvalidField\"&gt;\n"
+"        &lt;s:message/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;f:facet name=\"aroundInvalidField\"&gt;\n"
+"        &lt;s:span styleClass=\"error\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;s:decorate id=\"country\"&gt;\n"
+"                &lt;h:inputText value=\"#{location.country}\" required=\"true"
+"\"&gt;\n"
+"                    &lt;a:support event=\"onblur\" reRender=\"country\"/"
+"&gt;\n"
+"                &lt;/h:inputText&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;s:decorate id=\"zip\"&gt;\n"
+"                &lt;h:inputText value=\"#{location.zip}\" required=\"true"
+"\"&gt;\n"
+"                    &lt;a:support event=\"onblur\" reRender=\"zip\"/&gt;\n"
+"                &lt;/h:inputText&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Xml.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Xml.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pa-IN/Xml.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,933 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Xml.xml:10
+#, no-c-format
+msgid "Configuring Seam components"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:11
+#, no-c-format
+msgid ""
+"The philosophy of minimizing XML-based configuration is extremely strong in "
+"Seam. Nevertheless, there are various reasons why we might want to configure "
+"a Seam component using XML: to isolate deployment-specific information from "
+"the Java code, to enable the creation of re-usable frameworks, to configure "
+"Seam's built-in functionality, etc. Seam provides two basic approaches to "
+"configuring components: configuration via property settings in a properties "
+"file or <literal>web.xml</literal>, and configuration via "
+"<literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:14
+#, no-c-format
+msgid "Configuring components via property settings"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:15
+#, no-c-format
+msgid ""
+"Seam components may be provided with configuration properties either via "
+"servlet context parameters, or via a properties file named <literal>seam."
+"properties</literal> in the root of the classpath."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:18
+#, no-c-format
+msgid ""
+"The configurable Seam component must expose JavaBeans-style property setter "
+"methods for the configurable attributes. If a seam component named "
+"<literal>com.jboss.myapp.settings</literal> has a setter method named "
+"<literal>setLocale()</literal>, we can provide a property named <literal>com."
+"jboss.myapp.settings.locale</literal> in the <literal>seam.properties</"
+"literal> file or as a servlet context parameter, and Seam will set the value "
+"of the <literal>locale</literal> attribute whenever it instantiates the "
+"component."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:21
+#, no-c-format
+msgid ""
+"The same mechanism is used to configure Seam itself. For example, to set the "
+"conversation timeout, we provide a value for <literal>org.jboss.seam.core."
+"manager.conversationTimeout</literal> in <literal>web.xml</literal> or "
+"<literal>seam.properties</literal>. (There is a built-in Seam component "
+"named <literal>org.jboss.seam.core.manager</literal> with a setter method "
+"named <literal>setConversationTimeout()</literal>.)"
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:24
+#, no-c-format
+msgid "Configuring components via components.xml"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:25
+#, no-c-format
+msgid ""
+"The <literal>components.xml</literal> file is a bit more powerful than "
+"property settings. It lets you:"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:30
+#, no-c-format
+msgid ""
+"Configure components that have been installed automatically&mdash;including "
+"both built-in components, and application components that have been "
+"annotated with the <literal>@Name</literal> annotation and picked up by "
+"Seam's deployment scanner."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:35
+#, no-c-format
+msgid ""
+"Install classes with no <literal>@Name</literal> annotation as Seam "
+"components&mdash;this is most useful for certain kinds of infrastructural "
+"components which can be installed multiple times different names (for "
+"example Seam-managed persistence contexts)."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:40
+#, no-c-format
+msgid ""
+"Install components that <emphasis>do</emphasis> have a <literal>@Name</"
+"literal> annotation but are not installed by default because of an "
+"<literal>@Install</literal> annotation that indicates the component should "
+"not be installed."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:45
+#, no-c-format
+msgid "Override the scope of a component."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:50
+#, no-c-format
+msgid ""
+"A <literal>components.xml</literal> file may appear in one of three "
+"different places:"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:55
+#, no-c-format
+msgid "The <literal>WEB-INF</literal> directory of a <literal>war</literal>."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:60
+#, no-c-format
+msgid "The <literal>META-INF</literal> directory of a <literal>jar</literal>."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:65
+#, no-c-format
+msgid ""
+"Any directory of a <literal>jar</literal> that contains classes with an "
+"<literal>@Name</literal> annotation."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:70
+#, no-c-format
+msgid ""
+"Usually, Seam components are installed when the deployment scanner discovers "
+"a class with a <literal>@Name</literal> annotation sitting in an archive "
+"with a <literal>seam.properties</literal> file or a <literal>META-INF/"
+"components.xml</literal> file. (Unless the component has an "
+"<literal>@Install</literal> annotation indicating it should not be installed "
+"by default.) The <literal>components.xml</literal> file lets us handle "
+"special cases where we need to override the annotations."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:73
+#, no-c-format
+msgid ""
+"For example, the following <literal>components.xml</literal> file installs "
+"the JBoss Embeddable EJB3 container:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:76
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"&gt;\n"
+"    &lt;core:ejb/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:77
+#, no-c-format
+msgid "This example does the same thing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:80
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component class=\"org.jboss.seam.core.Ejb\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:81
+#, no-c-format
+msgid ""
+"This one installs and configures two different Seam-managed persistence "
+"contexts:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:84
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"    &lt;core:managed-persistence-context name=\"customerDatabase\"\n"
+"                persistence-unit-jndi-name=\"java:/"
+"customerEntityManagerFactory\"/&gt;\n"
+"        \n"
+"    &lt;core:managed-persistence-context name=\"accountingDatabase\"\n"
+"                persistence-unit-jndi-name=\"java:/"
+"accountingEntityManagerFactory\"/&gt;            \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:85
+#, no-c-format
+msgid "As does this one:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:88
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component name=\"customerDatabase\" \n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"customerEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"    \n"
+"    &lt;component name=\"accountingDatabase\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"accountingEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:89
+#, no-c-format
+msgid ""
+"This example creates a session-scoped Seam-managed persistence context (this "
+"is not recommended in practice):"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:92
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"  &lt;core:managed-persistence-context name=\"productDatabase\" \n"
+"                                   scope=\"session\"\n"
+"              persistence-unit-jndi-name=\"java:/productEntityManagerFactory"
+"\"/&gt;        \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:93
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"            \n"
+"    &lt;component name=\"productDatabase\"\n"
+"              scope=\"session\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"productEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:94
+#, no-c-format
+msgid ""
+"It is common to use the <literal>auto-create</literal> option for "
+"infrastructural objects like persistence contexts, which saves you from "
+"having to explicitly specify <literal>create=true</literal> when you use the "
+"<literal>@In</literal> annotation."
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:97
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"  &lt;core:managed-persistence-context name=\"productDatabase\" \n"
+"                             auto-create=\"true\"\n"
+"              persistence-unit-jndi-name=\"java:/productEntityManagerFactory"
+"\"/&gt;        \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:98
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"            \n"
+"    &lt;component name=\"productDatabase\"\n"
+"        auto-create=\"true\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"productEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:99
+#, no-c-format
+msgid ""
+"The <literal>&lt;factory&gt;</literal> declaration lets you specify a value "
+"or method binding expression that will be evaluated to initialize the value "
+"of a context variable when it is first referenced."
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:102
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"contact\" method=\"#{contactManager.loadContact}\" "
+"scope=\"CONVERSATION\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:103
+#, no-c-format
+msgid ""
+"You can create an \"alias\" (a second name) for a Seam component like so:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:106
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"user\" value=\"#{actor}\" scope=\"STATELESS\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:107
+#, no-c-format
+msgid "You can even create an \"alias\" for a commonly used expression:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:110
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"contact\" value=\"#{contactManager.contact}\" scope="
+"\"STATELESS\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:111
+#, no-c-format
+msgid ""
+"It is especially common to see the use of <literal>auto-create=\"true\"</"
+"literal> with the <literal>&lt;factory&gt;</literal> declaration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:114
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"session\" value=\"#{entityManager.delegate}\" scope="
+"\"STATELESS\" \n"
+"        auto-create=\"true\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:115
+#, no-c-format
+msgid ""
+"Sometimes we want to reuse the same <literal>components.xml</literal> file "
+"with minor changes during both deployment and testing. Seam lets you place "
+"wildcards of the form <literal>@wildcard@</literal> in the "
+"<literal>components.xml</literal> file which can be replaced either by your "
+"Ant build script (at deployment time) or by providing a file named "
+"<literal>components.properties</literal> in the classpath (at development "
+"time). You'll see this approach used in the Seam examples."
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:118
+#, no-c-format
+msgid "Fine-grained configuration files"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:119
+#, no-c-format
+msgid ""
+"If you have a large number of components that need to be configured in XML, "
+"it makes much more sense to split up the information in <literal>components."
+"xml</literal> into many small files. Seam lets you put configuration for a "
+"class named, for example, <literal>com.helloworld.Hello</literal> in a "
+"resource named <literal>com/helloworld/Hello.component.xml</literal>. (You "
+"might be familiar with this pattern, since it is the same one we use in "
+"Hibernate.) The root element of the file may be either a <literal>&lt;"
+"components&gt;</literal> or <literal>&lt;component&gt;</literal> element."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:122
+#, no-c-format
+msgid "The first option lets you define multiple components in the file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:125
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component class=\"com.helloworld.Hello\" name=\"hello\"&gt;\n"
+"        &lt;property name=\"name\"&gt;#{user.name}&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"    &lt;factory name=\"message\" value=\"#{hello.message}\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:126
+#, no-c-format
+msgid ""
+"The second option only lets you define or configure one component, but is "
+"less noisy:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:129
+#, no-c-format
+msgid ""
+"&lt;component name=\"hello\"&gt;\n"
+"    &lt;property name=\"name\"&gt;#{user.name}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:130
+#, no-c-format
+msgid ""
+"In the second option, the class name is implied by the file in which the "
+"component definition appears."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:133
+#, no-c-format
+msgid ""
+"Alternatively, you may put configuration for all classes in the <literal>com."
+"helloworld</literal> package in <literal>com/helloworld/components.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:136
+#, no-c-format
+msgid "Configurable property types"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:137
+#, no-c-format
+msgid ""
+"Properties of string, primitive or primitive wrapper type may be configured "
+"just as you would expect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:140
+#, no-c-format
+msgid "org.jboss.seam.core.manager.conversationTimeout 60000"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:141
+#, no-c-format
+msgid "&lt;core:manager conversation-timeout=\"60000\"/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:142
+#, no-c-format
+msgid ""
+"&lt;component name=\"org.jboss.seam.core.manager\"&gt;\n"
+"    &lt;property name=\"conversationTimeout\"&gt;60000&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:143
+#, no-c-format
+msgid "Arrays, sets and lists of strings or primitives are also supported:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:146
+#, no-c-format
+msgid ""
+"org.jboss.seam.core.jbpm.processDefinitions order.jpdl.xml, return.jpdl.xml, "
+"inventory.jpdl.xml"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:147
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;order.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;return.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:148
+#, no-c-format
+msgid ""
+"&lt;component name=\"org.jboss.seam.core.jbpm\"&gt;\n"
+"    &lt;property name=\"processDefinitions\"&gt;\n"
+"        &lt;value&gt;order.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;return.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:149
+#, no-c-format
+msgid ""
+"Even maps with String-valued keys and string or primitive values are "
+"supported:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:152
+#, no-c-format
+msgid ""
+"&lt;component name=\"issueEditor\"&gt;\n"
+"    &lt;property name=\"issueStatuses\"&gt;\n"
+"        &lt;key&gt;open&lt;/key&gt; &lt;value&gt;open issue&lt;/value&gt;\n"
+"        &lt;key&gt;resolved&lt;/key&gt; &lt;value&gt;issue resolved by "
+"developer&lt;/value&gt;\n"
+"        &lt;key&gt;closed&lt;/key&gt; &lt;value&gt;resolution accepted by "
+"user&lt;/value&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:153
+#, no-c-format
+msgid ""
+"Finally, you may wire together components using a value-binding expression. "
+"Note that this is quite different to injection using <literal>@In</literal>, "
+"since it happens at component instantiation time instead of invocation time. "
+"It is therefore much more similar to the dependency injection facilities "
+"offered by traditional IoC containers like JSF or Spring."
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:156
+#, no-c-format
+msgid ""
+"&lt;drools:managed-working-memory name=\"policyPricingWorkingMemory\" rule-"
+"base=\"#{policyPricingRules}\"/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:157
+#, no-c-format
+msgid ""
+"&lt;component name=\"policyPricingWorkingMemory\"\n"
+"          class=\"org.jboss.seam.drools.ManagedWorkingMemory\"&gt;\n"
+"    &lt;property name=\"ruleBase\"&gt;#{policyPricingRules}&lt;/"
+"property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:158
+#, no-c-format
+msgid "Using XML Namespaces"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:159
+#, no-c-format
+msgid ""
+"Throughout the examples, there have been two competing ways of declaring "
+"components: with and without the use of XML namespaces. The following shows "
+"a typical <literal>components.xml</literal> file without namespaces. It uses "
+"the Seam Components DTD:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:162
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"&gt;\n"
+"&lt;!DOCTYPE components PUBLIC \"-//JBoss/Seam Component Configuration DTD "
+"1.2//EN\"\n"
+"                            \"http://jboss.com/products/seam/components-1.2."
+"dtd\"&gt;\n"
+"&lt;components&gt;\n"
+"\n"
+"    &lt;component class=\"org.jboss.seam.core.init\"&gt;\n"
+"        &lt;property name=\"debug\"&gt;true&lt;/property&gt;\n"
+"        &lt;property name=\"jndiPattern\"&gt;@jndiPattern@&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"    &lt;component name=\"org.jboss.sean.core.ejb\" installed=\"@embeddedEjb@"
+"\" /&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:163
+#, no-c-format
+msgid ""
+"As you can see, this is somewhat verbose. Even worse, the component and "
+"attribute names cannot be validated at development time."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:166
+#, no-c-format
+msgid "The namespaced version looks like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:169
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                http://jboss.com/products/seam/core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components \n"
+"                 http://jboss.com/products/seam/components-1.2.xsd\"&gt;\n"
+"\n"
+"    &lt;core:init debug=\"true\" jndi-pattern=\"@jndiPattern@\"/&gt;\n"
+"\n"
+"    &lt;core:ejb installed=\"@embeddedEjb@\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:170
+#, no-c-format
+msgid ""
+"Even though the schema declarations are verbose, the actual XML content is "
+"lean and easy to understand. The schemas provide detailed information about "
+"each component and the attributes available, allowing XML editors to offer "
+"intelligent autocomplete. The use of namespaced elements makes generating "
+"and maintaining correct <literal>components.xml</literal> files much simpler."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:173
+#, no-c-format
+msgid ""
+"Now, this works great for the built-in Seam components, but what about user "
+"components? There are two options. First, Seam supports mixing the two "
+"models, allowing the use of the generic <literal>&lt;component&gt;</literal> "
+"declarations for user components, along with namespaced declarations for "
+"built-in components. But even better, Seam allows you to quickly declare "
+"namespaces for your own components."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:176
+#, no-c-format
+msgid ""
+"Any Java package can be associated with an XML namespace by annotating the "
+"package with the <literal>@Namespace</literal> annotation. (Package-level "
+"annotations are declared in a file named <literal>package-info.java</"
+"literal> in the package directory.) Here is an example from the seampay demo:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:179
+#, no-c-format
+msgid ""
+"@Namespace(value=\"http://jboss.com/products/seam/examples/seampay\")\n"
+"package org.jboss.seam.example.seampay;\n"
+"\n"
+"import org.jboss.seam.annotations.Namespace;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:180
+#, no-c-format
+msgid ""
+"That is all you need to do to use the namespaced style in "
+"<literal>components.xml</literal>! Now we can write:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:183
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pay=\"http://jboss.com/products/seam/examples/seampay\"\n"
+"            ... &gt;\n"
+"\n"
+"    &lt;pay:payment-home new-instance=\"#{newPayment}\"\n"
+"                      created-message=\"Created a new payment to #"
+"{newPayment.payee}\" /&gt;\n"
+"\n"
+"    &lt;pay:payment name=\"newPayment\"\n"
+"                 payee=\"Somebody\"\n"
+"                 account=\"#{selectedAccount}\"\n"
+"                 payment-date=\"#{currentDatetime}\"\n"
+"                 created-date=\"#{currentDatetime}\" /&gt;\n"
+"     ...\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:184
+#, no-c-format
+msgid "<para>Or:</para>"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:187
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pay=\"http://jboss.com/products/seam/examples/seampay\"\n"
+"            ... &gt;\n"
+"\n"
+"    &lt;pay:payment-home&gt;\n"
+"        &lt;pay:new-instance&gt;\"#{newPayment}\"&lt;/pay:new-instance&gt;\n"
+"        &lt;pay:created-message&gt;Created a new payment to #{newPayment."
+"payee}&lt;/pay:created-message&gt;\n"
+"    &lt;/pay:payment-home&gt;\n"
+"    \n"
+"    &lt;pay:payment name=\"newPayment\"&gt;\n"
+"        &lt;pay:payee&gt;Somebody\"&lt;/pay:payee&gt;\n"
+"        &lt;pay:account&gt;#{selectedAccount}&lt;/pay:account&gt;\n"
+"        &lt;pay:payment-date&gt;#{currentDatetime}&lt;/pay:payment-date&gt;\n"
+"        &lt;pay:created-date&gt;#{currentDatetime}&lt;/pay:created-date&gt;\n"
+"     &lt;/pay:payment&gt;\n"
+"     ...\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:188
+#, no-c-format
+msgid ""
+"These examples illustrate the two usage models of a namespaced element. In "
+"the first declaration, the <literal>&lt;pay:payment-home&gt;</literal> "
+"references the <literal>paymentHome</literal> component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:191
+#, no-c-format
+msgid ""
+"package org.jboss.seam.example.seampay;\n"
+"...\n"
+"@Name(\"paymentHome\")\n"
+"public class PaymentController\n"
+"    extends EntityHome&lt;Payment&gt;\n"
+"{\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:192
+#, no-c-format
+msgid ""
+"The element name is the hyphenated form of the component name. The "
+"attributes of the element are the hyphenated form of the property names."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:195
+#, no-c-format
+msgid ""
+"In the second declaration, the <literal>&lt;pay:payment&gt;</literal> "
+"element refers to the <literal>Payment</literal> class in the <literal>org."
+"jboss.seam.example.seampay</literal> package. In this case <literal>Payment</"
+"literal> is an entity that is being declared as a Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:198
+#, no-c-format
+msgid ""
+"package org.jboss.seam.example.seampay;\n"
+"...\n"
+"@Entity\n"
+"public class Payment\n"
+"    implements Serializable\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:199
+#, no-c-format
+msgid ""
+"If we want validation and autocompletion to work for user-defined "
+"components, we will need a schema. Seam does not yet provide a mechanism to "
+"automatically generate a schema for a set of components, so it is necessary "
+"to generate one manually. The schema definitions for the standard Seam "
+"packages can be used for guidance."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:202
+#, no-c-format
+msgid "The following are the the namespaces used by Seam:"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:207
+#, no-c-format
+msgid ""
+"components &mdash; <literal>http://jboss.com/products/seam/components</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:212
+#, no-c-format
+msgid "core &mdash; <literal>http://jboss.com/products/seam/core</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:217
+#, no-c-format
+msgid "drools &mdash; <literal>http://jboss.com/products/seam/drools</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:222
+#, no-c-format
+msgid ""
+"framework &mdash; <literal>http://jboss.com/products/seam/framework</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:227
+#, no-c-format
+msgid "jms &mdash; <literal>http://jboss.com/products/seam/jms</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:232
+#, no-c-format
+msgid ""
+"remoting &mdash; <literal>http://jboss.com/products/seam/remoting</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:237
+#, no-c-format
+msgid "theme &mdash; <literal>http://jboss.com/products/seam/theme</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:242
+#, no-c-format
+msgid ""
+"security &mdash; <literal>http://jboss.com/products/seam/security</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:247
+#, no-c-format
+msgid "mail &mdash; <literal>http://jboss.com/products/seam/mail</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:252
+#, no-c-format
+msgid "web &mdash; <literal>http://jboss.com/products/seam/web</literal>"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Annotations.pot
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Annotations.pot	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Annotations.pot	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2039 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-07-14 00:47+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Annotations.xml:6
+#, no-c-format
+msgid "Seam annotations"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:7
+#, no-c-format
+msgid ""
+"When you write a Seam application, you&#39;ll use a lot of annotations. Seam "
+"lets you use annotations to achieve a declarative style of programming. Most "
+"of the annotations you&#39;ll use are defined by the EJB 3.0 specification. "
+"The annotations for data validation are defined by the Hibernate Validator "
+"package. Finally, Seam defines its own set of annotations, which we&#39;ll "
+"describe in this chapter."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:10
+#, no-c-format
+msgid ""
+"All of these annotations are defined in the package <literal>org.jboss.seam."
+"annotations</literal>."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:14
+#, no-c-format
+msgid "Annotations for component definition"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:15
+#, no-c-format
+msgid ""
+"The first group of annotations lets you define a Seam component. These "
+"annotations appear on the component class."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:20
+#, no-c-format
+msgid "@Name"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:22
+#, no-c-format
+msgid "@Name(\"componentName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:23
+#, no-c-format
+msgid ""
+"Defines the Seam component name for a class. This annotation is required for "
+"all Seam components."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:29
+#, no-c-format
+msgid "@Scope"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:31
+#, no-c-format
+msgid "@Scope(ScopeType.CONVERSATION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:32
+#, no-c-format
+msgid ""
+"Defines the default context of the component. The possible values are "
+"defined by the <literal>ScopeType</literal> enumeration: <literal>EVENT, "
+"PAGE, CONVERSATION, SESSION, BUSINESS_PROCESS, APPLICATION, STATELESS</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:35
+#, no-c-format
+msgid ""
+"When no scope is explicitly specified, the default depends upon the "
+"component type. For stateless session beans, the default is "
+"<literal>STATELESS</literal>. For entity beans and stateful session beans, "
+"the default is <literal>CONVERSATION</literal>. For JavaBeans, the default "
+"is <literal>EVENT</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:41
+#, no-c-format
+msgid "@Role"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:43
+#, no-c-format
+msgid "@Role(name=\"roleName\", scope=ScopeType.SESSION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:44
+#, no-c-format
+msgid ""
+"Allows a Seam component to be bound to multiple contexts variables. The "
+"<literal>@Name</literal>/<literal>@Scope</literal> annotations define a "
+"\"default role\". Each <literal>@Role</literal> annotation defines an "
+"additional role."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:49
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the context variable name."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:54
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; the context variable scope. When no scope "
+"is explicitly specified, the default depends upon the component type, as "
+"above."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:62
+#, no-c-format
+msgid "@Roles"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:64
+#, no-c-format
+msgid ""
+"@Roles({\n"
+"        @Role(name=\"user\", scope=ScopeType.CONVERSATION),\n"
+"        @Role(name=\"currentUser\", scope=ScopeType.SESSION)\n"
+"    })"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:65
+#, no-c-format
+msgid "Allows specification of multiple additional roles."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:71
+#, no-c-format
+msgid "@Intercept"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:73
+#, no-c-format
+msgid "@Intercept(InterceptionType.ALWAYS)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:74
+#, no-c-format
+msgid ""
+"Determines when Seam interceptors are active. The possible values are "
+"defined by the <literal>InterceptionType</literal> enumeration: "
+"<literal>ALWAYS, AFTER_RESTORE_VIEW, AFTER_UPDATE_MODEL_VALUES, "
+"INVOKE_APPLICATION, NEVER</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:77
+#, no-c-format
+msgid ""
+"When no interception type is explicitly specified, the default depends upon "
+"the component type. For entity beans, the default is <literal>NEVER</"
+"literal>. For session beans, message driven beans and JavaBeans, the default "
+"is <literal>ALWAYS</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:83
+#, no-c-format
+msgid "@JndiName"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:85
+#, no-c-format
+msgid "@JndiName(\"my/jndi/name\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:86
+#, no-c-format
+msgid ""
+"Specifies the JNDI name that Seam will use to look up the EJB component. If "
+"no JNDI name is explicitly specified, Seam will use the JNDI pattern "
+"specified by <literal>org.jboss.seam.core.init.jndiPattern</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:92
+#, no-c-format
+msgid "@Conversational"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:94
+#, no-c-format
+msgid "@Conversational(ifNotBegunOutcome=\"error\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:95
+#, no-c-format
+msgid ""
+"Specifies that a conversation scope component is conversational, meaning "
+"that no method of the component can be called unless a long-running "
+"conversation started by this component is active (unless the method would "
+"begin a new long-running conversation)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:101
+#, no-c-format
+msgid "<literal>@Startup</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:103
+#, no-c-format
+msgid "@Startup(depends={\"org.jboss.core.jndi\", \"org.jboss.core.jta\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:104
+#, no-c-format
+msgid ""
+"Specifies that an application scope component is started immediately at "
+"initialization time. This is mainly used for certain built-in components "
+"that bootstrap critical infrastructure such as JNDI, datasources, etc."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:107
+#, no-c-format
+msgid "<programlisting>@Startup</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:108
+#, no-c-format
+msgid ""
+"Specifies that a session scope component is started immediately at session "
+"creation time."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:113
+#, no-c-format
+msgid ""
+"<literal>depends</literal> &mdash; specifies that the named components must "
+"be started first, if they are installed."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:121
+#, no-c-format
+msgid "@Install"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:123
+#, no-c-format
+msgid "@Install(false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:124
+#, no-c-format
+msgid ""
+"Specifies whether or not a component should be installed by default. The "
+"lack of an @Install annotation indicates a component should be installed."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:127
+#, no-c-format
+msgid "@Install(dependencies=\"org.jboss.seam.core.jbpm\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:128
+#, no-c-format
+msgid ""
+"Specifies that a component should only be stalled if the components listed "
+"as dependencies are also installed."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:131
+#, no-c-format
+msgid "@Install(genericDependencies=ManagedQueueSender.class)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:132
+#, no-c-format
+msgid ""
+"Specifies that a component should only be installed if a component that is "
+"implemented by a certain class is installed. This is useful when the "
+"dependency doesn&#39;t have a single well-known name."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:135
+#, no-c-format
+msgid "@Install(classDependencies=\"org.hibernate.Session\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:136
+#, no-c-format
+msgid ""
+"Specifies that a component should only be installed if the named class is in "
+"the classpath."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:139
+#, no-c-format
+msgid "@Install(precedence=BUILT_IN)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:140
+#, no-c-format
+msgid ""
+"Specifies the precedence of the component. If multiple components with the "
+"same name exist, the one with the higher precedence will be installed. The "
+"defined precendence values are (in ascending order):"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:145
+#, no-c-format
+msgid ""
+"<literal>BUILT_IN</literal> &mdash; Precedence of all built-in Seam "
+"components"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:150
+#, no-c-format
+msgid ""
+"<literal>FRAMEWORK</literal> &mdash; Precedence to use for components of "
+"frameworks which extend Seam"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:155
+#, no-c-format
+msgid ""
+"<literal>APPLICATION</literal> &mdash; Predence of application components "
+"(the default precedence)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:160
+#, no-c-format
+msgid ""
+"<literal>DEPLOYMENT</literal> &mdash; Precedence to use for components which "
+"override application components in a particular deployment"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:165
+#, no-c-format
+msgid ""
+"<literal>MOCK</literal> &mdash; Precedence for mock objects used in testing"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:173
+#, no-c-format
+msgid "@Synchronized"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:175
+#, no-c-format
+msgid "@Synchronized(timeout=1000)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:176
+#, no-c-format
+msgid ""
+"Specifies that a component is accessed concurrently by multiple clients, and "
+"that Seam should serialize requests. If a request is not able to obtain its "
+"lock on the component in the given timeout period, an exception will be "
+"raised."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:182
+#, no-c-format
+msgid "<literal>@ReadOnly</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:184
+#, no-c-format
+msgid "<programlisting>@ReadOnly</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:185
+#, no-c-format
+msgid ""
+"Specifies that a JavaBean component or component method does not require "
+"state replication at the end of the invocation."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:194
+#, no-c-format
+msgid "Annotations for bijection"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:195
+#, no-c-format
+msgid ""
+"The next two annotations control bijection. These attributes occur on "
+"component instance variables or property accessor methods."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:200
+#, no-c-format
+msgid "<literal>@In</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:202
+#, no-c-format
+msgid "<programlisting>@In</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:203
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. If the context "
+"variable is null, an exception will be thrown."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:206
+#, no-c-format
+msgid "@In(required=false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:207
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. The context variable "
+"may be null."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:210
+#, no-c-format
+msgid "@In(create=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:211
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. If the context "
+"variable is null, an instance of the component is instantiated by Seam."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:214
+#, no-c-format
+msgid "@In(value=\"contextVariableName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:215 Annotations.xml:260
+#, no-c-format
+msgid ""
+"Specifies the name of the context variable explicitly, instead of using the "
+"annotated instance variable name."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:218
+#, no-c-format
+msgid "@In(value=\"#{customer.addresses[&#39;shipping&#39;]}\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:219
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected by evaluating a JSF "
+"EL expression at the beginning of each component invocation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:224
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"Default to the name of the component attribute. Alternatively, specifies a "
+"JSF EL expression, surrounded by <literal>#{...}</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:229
+#, no-c-format
+msgid ""
+"<literal>create</literal> &mdash; specifies that Seam should instantiate the "
+"component with the same name as the context variable if the context variable "
+"is undefined (null) in all contexts. Default to false."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:234
+#, no-c-format
+msgid ""
+"<literal>required</literal> &mdash; specifies Seam should throw an exception "
+"if the context variable is undefined in all contexts."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:242
+#, no-c-format
+msgid "<literal>@Out</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:244
+#, no-c-format
+msgid "<programlisting>@Out</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:245
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is a Seam component is to be "
+"outjected to its context variable at the end of the invocation. If the "
+"attribute is null, an exception is thrown."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:248
+#, no-c-format
+msgid "@Out(required=false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:249
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is a Seam component is to be "
+"outjected to its context variable at the end of the invocation. The "
+"attribute may be null."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:252
+#, no-c-format
+msgid "@Out(scope=ScopeType.SESSION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:253
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is <emphasis>not</emphasis> a Seam "
+"component type is to be outjected to a specific scope at the end of the "
+"invocation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:256
+#, no-c-format
+msgid ""
+"Alternatively, if no scope is explicitly specified, the scope of the "
+"component with the <literal>@Out</literal> attribute is used (or the "
+"<literal>EVENT</literal> scope if the component is stateless)."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:259
+#, no-c-format
+msgid "@Out(value=\"contextVariableName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:265
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"Default to the name of the component attribute."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:270
+#, no-c-format
+msgid ""
+"<literal>required</literal> &mdash; specifies Seam should throw an exception "
+"if the component attribute is null during outjection."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:278
+#, no-c-format
+msgid ""
+"Note that it is quite common for these annotations to occur together, for "
+"example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:281
+#, no-c-format
+msgid "@In(create=true) @Out private User currentUser;"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:282
+#, no-c-format
+msgid ""
+"The next annotation supports the <emphasis>manager component</emphasis> "
+"pattern, where a Seam component that manages the lifecycle of an instance of "
+"some other class that is to be injected. It appears on a component getter "
+"method."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:287
+#, no-c-format
+msgid "<literal>@Unwrap</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:289
+#, no-c-format
+msgid "<programlisting>@Unwrap</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:290
+#, no-c-format
+msgid ""
+"Specifies that the object returned by the annotated getter method is the "
+"thing that is injected instead of the component instance itself."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:296
+#, no-c-format
+msgid ""
+"The next annotation supports the <emphasis>factory component</emphasis> "
+"pattern, where a Seam component is responsible for initializing the value of "
+"a context variable. This is especially useful for initializing any state "
+"needed for rendering the response to a non-faces request. It appears on a "
+"component method."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:301
+#, no-c-format
+msgid "@Factory"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:303
+#, no-c-format
+msgid "@Factory(\"processInstance\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:304
+#, no-c-format
+msgid ""
+"Specifies that the method of the component is used to initialize the value "
+"of the named context variable, when the context variable has no value. This "
+"style is used with methods that return <literal>void</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:307
+#, no-c-format
+msgid "@Factory(\"processInstance\", scope=CONVERSATION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:308
+#, no-c-format
+msgid ""
+"Specifies that the method returns a value that Seam should use to initialize "
+"the value of the named context variable, when the context variable has no "
+"value. This style is used with methods that return a value. If no scope is "
+"explicitly specified, the scope of the component with the <literal>@Factory</"
+"literal> method is used (unless the component is stateless, in which case "
+"the <literal>EVENT</literal> context is used)."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:313
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"If the method is a getter method, default to the JavaBeans property name."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:318
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; specifies the scope that Seam should bind "
+"the returned value to. Only meaningful for factory methods which return a "
+"value."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:326
+#, no-c-format
+msgid "This annotation lets you inject a <literal>Log</literal>:"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:331
+#, no-c-format
+msgid "@Logger"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:333
+#, no-c-format
+msgid "@Logger(\"categoryName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:334
+#, no-c-format
+msgid ""
+"Specifies that a component field is to be injected with an instance of "
+"<literal>org.jboss.seam.log.Log</literal>. For entity beans, the field must "
+"be declared as static."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:339
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the log category. "
+"Default to the name of the component class."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:347
+#, no-c-format
+msgid "The last annotation lets you inject a request parameter value:"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:352
+#, no-c-format
+msgid "@RequestParameter"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:354
+#, no-c-format
+msgid "@RequestParameter(\"parameterName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:355
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected with the value of a "
+"request parameter. Basic type conversions are performed automatically."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:360
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the request "
+"parameter. Default to the name of the component attribute."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:371
+#, no-c-format
+msgid "Annotations for component lifecycle methods"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:372
+#, no-c-format
+msgid ""
+"These annotations allow a component to react to its own lifecycle events. "
+"They occur on methods of the component. There may be only one of each per "
+"component class."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:377
+#, no-c-format
+msgid "<literal>@Create</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:379
+#, no-c-format
+msgid "<programlisting>@Create</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:380
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when an instance of the component "
+"is instantiated by Seam. Note that create methods are only supported for "
+"JavaBeans and stateful session beans."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:386
+#, no-c-format
+msgid "<literal>@Destroy</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:388
+#, no-c-format
+msgid "<programlisting>@Destroy</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:389
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when the context ends and its "
+"context variables are destroyed. Note that create methods are only supported "
+"for JavaBeans and stateful session beans."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:392
+#, no-c-format
+msgid ""
+"Note that all stateful session bean components <emphasis>must</emphasis> "
+"define a method annotated <literal>@Destroy @Remove</literal> in order to "
+"guarantee destruction of the stateful bean when a context ends."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:395
+#, no-c-format
+msgid ""
+"Destroy methods should be used only for cleanup. <emphasis>Seam catches, "
+"logs and swallows any exception that propagates out of a destroy method.</"
+"emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:401
+#, no-c-format
+msgid "@Observer"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:403
+#, no-c-format
+msgid "@Observer(\"somethingChanged\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:404
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when a component-driven event of "
+"the specified type occurs."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:407
+#, no-c-format
+msgid "@Observer(value=\"somethingChanged\",create=false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:408
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when an event of the specified "
+"type occurs but that an instance should not be created if one doesn&#39;t "
+"exist. If an instance does not exist and create is false, the event will not "
+"be observed. The default value for create is true."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:417
+#, no-c-format
+msgid "Annotations for context demarcation"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:418
+#, no-c-format
+msgid ""
+"These annotations provide declarative conversation demarcation. They appear "
+"on methods of Seam components, usually action listener methods."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:421
+#, no-c-format
+msgid ""
+"Every web request has a conversation context associated with it. Most of "
+"these conversations end at the end of the request. If you want a "
+"conversation that span multiple requests, you must \"promote\" the current "
+"conversation to a <emphasis>long-running conversation</emphasis> by calling "
+"a method marked with <literal>@Begin</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:426
+#, no-c-format
+msgid "<literal>@Begin</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:430
+#, no-c-format
+msgid "<programlisting>@Begin</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:431
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation begins when this method returns a "
+"non-null outcome without exception."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:436
+#, no-c-format
+msgid "@Begin(ifOutcome={\"success\", \"continue\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:437
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation begins when this action listener "
+"method returns with one of the given outcomes."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:442
+#, no-c-format
+msgid "@Begin(join=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:443
+#, no-c-format
+msgid ""
+"Specifies that if a long-running conversation is already in progress, the "
+"conversation context is simply propagated."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:448
+#, no-c-format
+msgid "@Begin(nested=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:449
+#, no-c-format
+msgid ""
+"Specifies that if a long-running conversation is already in progress, a new "
+"<emphasis>nested</emphasis> conversation context begins. The nested "
+"conversation will end when the next <literal>@End</literal> is encountered, "
+"and the outer conversation will resume. It is perfectly legal for multiple "
+"nested conversations to exist concurrently in the same outer conversation."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:454
+#, no-c-format
+msgid "@Begin(pageflow=\"process definition name\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:455
+#, no-c-format
+msgid ""
+"Specifies a jBPM process definition name that defines the pageflow for this "
+"conversation."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:460
+#, no-c-format
+msgid "@Begin(flushMode=FlushModeType.MANUAL)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:461
+#, no-c-format
+msgid ""
+"Specify the flush mode of any Seam-managed persistence contexts. "
+"<literal>flushMode=FlushModeType.MANUAL</literal> supports the use of "
+"<emphasis>atomic conversations</emphasis> where all write operations are "
+"queued in the conversation context until an explicit call to <literal>flush()"
+"</literal> (which usually occurs at the end of the conversation)."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:468
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in a new long-running conversation context."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:473
+#, no-c-format
+msgid ""
+"<literal>join</literal> &mdash; determines the behavior when a long-running "
+"conversation is already in progress. If <literal>true</literal>, the context "
+"is propagated. If <literal>false</literal>, an exception is thrown. Default "
+"to <literal>false</literal>. This setting is ignored when "
+"<literal>nested=true</literal> is specified"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:478
+#, no-c-format
+msgid ""
+"<literal>nested</literal> &mdash; specifies that a nested conversation "
+"should be started if a long-running conversation is already in progress."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:483 Annotations.xml:550 Annotations.xml:574
+#, no-c-format
+msgid ""
+"<literal>flushMode</literal> &mdash; set the flush mode of any Seam-managed "
+"Hibernate sessions or JPA persistence contexts that are created during this "
+"conversation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:488
+#, no-c-format
+msgid ""
+"<literal>pageflow</literal> &mdash; a process definition name of a jBPM "
+"process definition deployed via <literal>org.jboss.seam.core.jbpm."
+"pageflowDefinitions.</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:498
+#, no-c-format
+msgid "<literal>@End</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:504
+#, no-c-format
+msgid "<programlisting>@End</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:505
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation ends when this method returns a "
+"non-null outcome without exception."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:510
+#, no-c-format
+msgid ""
+"@End(ifOutcome={\"success\", \"error\"}, evenIfException={SomeException."
+"class, OtherException.class})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:511
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation ends when this action listener "
+"method returns with one of the given outcomes or throws one of the specified "
+"classes of exception."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:518
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in the end of the current long-running conversation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:523 Annotations.xml:617
+#, no-c-format
+msgid ""
+"<literal>beforeRedirect</literal> &mdash; by default, the conversation will "
+"not actually be destroyed until after any redirect has occurred. Setting "
+"<literal>beforeRedirect=true</literal> specifies that the conversation "
+"should be destroyed at the end of the current request, and that the redirect "
+"will be processed in a new temporary conversation context."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:534
+#, no-c-format
+msgid "<literal>@StartTask</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:536
+#, no-c-format
+msgid "<programlisting>@StartTask</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:537
+#, no-c-format
+msgid ""
+"\"Starts\" a jBPM task. Specifies that a long-running conversation begins "
+"when this method returns a non-null outcome without exception. This "
+"conversation is associated with the jBPM task specified in the named request "
+"parameter. Within the context of this conversation, a business process "
+"context is also defined, for the business process instance of the task "
+"instance."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:540
+#, no-c-format
+msgid ""
+"The jBPM <literal>TaskInstance</literal> will be available in a request "
+"context variable named <literal>taskInstance</literal>. The jPBM "
+"<literal>ProcessInstance</literal> will be available in a request context "
+"variable named <literal>processInstance</literal>. (Of course, these objects "
+"are available for injection via <literal>@In</literal>.)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:545 Annotations.xml:569
+#, no-c-format
+msgid ""
+"<literal>taskIdParameter</literal> &mdash; the name of a request parameter "
+"which holds the id of the task. Default to <literal>\"taskId\"</literal>, "
+"which is also the default used by the Seam <literal>taskList</literal> JSF "
+"component."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:558
+#, no-c-format
+msgid "<literal>@BeginTask</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:560
+#, no-c-format
+msgid "<programlisting>@BeginTask</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:561
+#, no-c-format
+msgid ""
+"Resumes work on an incomplete jBPM task. Specifies that a long-running "
+"conversation begins when this method returns a non-null outcome without "
+"exception. This conversation is associated with the jBPM task specified in "
+"the named request parameter. Within the context of this conversation, a "
+"business process context is also defined, for the business process instance "
+"of the task instance."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:564
+#, no-c-format
+msgid ""
+"The jBPM <literal>TaskInstance</literal> will be available in a request "
+"context variable named <literal>taskInstance</literal>. The jPBM "
+"<literal>ProcessInstance</literal> will be available in a request context "
+"variable named <literal>processInstance</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:582
+#, no-c-format
+msgid "<literal>@EndTask</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:587
+#, no-c-format
+msgid "<programlisting>@EndTask</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:588
+#, no-c-format
+msgid ""
+"\"Ends\" a jBPM task. Specifies that a long-running conversation ends when "
+"this method returns a non-null outcome, and that the current task is "
+"complete. Triggers a jBPM transition. The actual transition triggered will "
+"be the default transition unless the application has called "
+"<literal>Transition.setName()</literal> on the built-in component named "
+"<literal>transition</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:593
+#, no-c-format
+msgid "@EndTask(transition=\"transitionName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:594
+#, no-c-format
+msgid "Triggers the given jBPM transition."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:599
+#, no-c-format
+msgid "@EndTask(ifOutcome={\"success\", \"continue\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:600
+#, no-c-format
+msgid ""
+"Specifies that the task ends when this method returns one of the listed "
+"outcomes."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:607
+#, no-c-format
+msgid ""
+"<literal>transition</literal> &mdash; the name of the jBPM transition to be "
+"triggered when ending the task. Defaults to the default transition."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:612
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in the end of the task."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:628
+#, no-c-format
+msgid "@CreateProcess"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:630
+#, no-c-format
+msgid "@CreateProcess(definition=\"process definition name\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:631
+#, no-c-format
+msgid ""
+"Creates a new jBPM process instance when the method returns a non-null "
+"outcome without exception. The <literal>ProcessInstance</literal> object "
+"will be available in a context variable named <literal>processInstance</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:636
+#, no-c-format
+msgid ""
+"<literal>definition</literal> &mdash; the name of the jBPM process "
+"definition deployed via <literal>org.jboss.seam.core.jbpm."
+"processDefinitions</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:644
+#, no-c-format
+msgid "@ResumeProcess"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:646
+#, no-c-format
+msgid "@ResumeProcess(processIdParameter=\"processId\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:647
+#, no-c-format
+msgid ""
+"Re-enters the scope of an existing jBPM process instance when the method "
+"returns a non-null outcome without exception. The <literal>ProcessInstance</"
+"literal> object will be available in a context variable named "
+"<literal>processInstance</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:652
+#, no-c-format
+msgid ""
+"<literal>processIdParameter</literal> &mdash; the name a request parameter "
+"holding the process id. Default to <literal>\"processId\"</literal>."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:663
+#, no-c-format
+msgid "Annotations for transaction demarcation"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:664
+#, no-c-format
+msgid ""
+"Seam provides an annotation that lets you force a rollback of the JTA "
+"transaction for certain action listener outcomes."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:669
+#, no-c-format
+msgid "@Rollback"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:671
+#, no-c-format
+msgid "@Rollback(ifOutcome={\"failure\", \"not-found\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:672
+#, no-c-format
+msgid ""
+"If the outcome of the method matches any of the listed outcomes, or if no "
+"outcomes are listed, set the transaction to rollback only when the method "
+"completes."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:677
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; the JSF outcomes that cause a "
+"transaction rollback (no outcomes is interpreted to mean any outcome)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:685
+#, no-c-format
+msgid "<literal>@Transactional</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:687
+#, no-c-format
+msgid "<programlisting>@Transactional</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:688
+#, no-c-format
+msgid ""
+"Specifies that a JavaBean component should have a similar transactional "
+"behavior to the default behavior of a session bean component. ie. method "
+"invocations should take place in a transaction, and if no transaction exists "
+"when the method is called, a transaction will be started just for that "
+"method. This annotation may be applied at either class or method level."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:694
+#, no-c-format
+msgid ""
+"Seam applications usually use the standard EJB3 annotations for all other "
+"transaction demarcation needs."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:700
+#, no-c-format
+msgid "Annotations for exceptions"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:701
+#, no-c-format
+msgid ""
+"These annotations let you specify how Seam should handle an exception that "
+"propagates out of a Seam component."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:706
+#, no-c-format
+msgid "@Redirect"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:708
+#, no-c-format
+msgid "@Redirect(viewId=\"error.jsp\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:709
+#, no-c-format
+msgid ""
+"Specifies that the annotated exception causes a browser redirect to a "
+"specified view id."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:714
+#, no-c-format
+msgid ""
+"<literal>viewId</literal> &mdash; specifies the JSF view id to redirect to."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:719
+#, no-c-format
+msgid ""
+"<literal>message</literal> &mdash; a message to be displayed, default to the "
+"exception message."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:724 Annotations.xml:750
+#, no-c-format
+msgid ""
+"<literal>end</literal> &mdash; specifies that the long-running conversation "
+"should end, default to <literal>false</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:732
+#, no-c-format
+msgid "@HttpError"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:734
+#, no-c-format
+msgid "@HttpError(errorCode=404)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:735
+#, no-c-format
+msgid "Specifies that the annotated exception causes a HTTP error to be sent."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:740
+#, no-c-format
+msgid ""
+"<literal>errorCode</literal> &mdash; the HTTP error code, default to "
+"<literal>500</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:745
+#, no-c-format
+msgid ""
+"<literal>message</literal> &mdash; a message to be sent with the HTTP error, "
+"default to the exception message."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:761
+#, no-c-format
+msgid "Annotations for validation"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:762
+#, no-c-format
+msgid ""
+"This annotation triggers Hibernate Validator. It appears on a method of a "
+"Seam component, almost always an action listener method."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:765
+#, no-c-format
+msgid ""
+"Please refer to the documentation for the Hibernate Annotations package for "
+"information about the annotations defined by the Hibernate Validator "
+"framework."
+msgstr ""
+
+#. Tag: emphasis
+#: Annotations.xml:769
+#, no-c-format
+msgid ""
+"Note that use of <literal>@IfInvalid</literal> is now semi-deprecated and "
+"<literal>&lt;s:validateAll&gt;</literal> is now preferred."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:773
+#, no-c-format
+msgid "@IfInvalid"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:775
+#, no-c-format
+msgid "@IfInvalid(outcome=\"invalid\", refreshEntities=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:776
+#, no-c-format
+msgid ""
+"Specifies that Hibernate Validator should validate the component before the "
+"method is invoked. If the invocation fails, the specified outcome will be "
+"returned, and the validation failure messages returned by Hibernate "
+"Validator will be added to the <literal>FacesContext</literal>. Otherwise, "
+"the invocation will proceed."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:781
+#, no-c-format
+msgid ""
+"<literal>outcome</literal> &mdash; the JSF outcome when validation fails."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:786
+#, no-c-format
+msgid ""
+"<literal>refreshEntities</literal> &mdash; specifies that any invalid entity "
+"in the managed state should be refreshed from the database when validation "
+"fails. Default to <literal>false</literal>. (Useful with extended "
+"persistence contexts.)"
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:797
+#, no-c-format
+msgid "Annotations for Seam Remoting"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:798
+#, no-c-format
+msgid ""
+"Seam Remoting requires that the local interface of a session bean be "
+"annotated with the following annotation:"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:803
+#, no-c-format
+msgid "@WebRemote"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:805
+#, no-c-format
+msgid "@WebRemote(exclude=\"path.to.exclude\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:806
+#, no-c-format
+msgid ""
+"Indicates that the annotated method may be called from client-side "
+"JavaScript. The <literal>exclude</literal> property is optional and allows "
+"objects to be excluded from the result&#39;s object graph (see the Remoting "
+"chapter for more details)."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:815
+#, no-c-format
+msgid "Annotations for Seam interceptors"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:816
+#, no-c-format
+msgid "The following annotations appear on Seam interceptor classes."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:819
+#, no-c-format
+msgid ""
+"Please refer to the documentation for the EJB 3.0 specification for "
+"information about the annotations required for EJB interceptor definition."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:824
+#, no-c-format
+msgid "@Interceptor"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:829
+#, no-c-format
+msgid "@Interceptor(stateless=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:830
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is stateless and Seam may optimize "
+"replication."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:835
+#, no-c-format
+msgid "@Interceptor(type=CLIENT)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:836
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is a \"client-side\" interceptor that is "
+"called before the EJB container."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:841
+#, no-c-format
+msgid "@Interceptor(around={SomeInterceptor.class, OtherInterceptor.class})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:842
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is positioned higher in the stack than the "
+"given interceptors."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:847
+#, no-c-format
+msgid "@Interceptor(within={SomeInterceptor.class, OtherInterceptor.class})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:848
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is positioned deeper in the stack than the "
+"given interceptors."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:860
+#, no-c-format
+msgid "Annotations for asynchronicity"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:861
+#, no-c-format
+msgid ""
+"The following annotations are used to declare an asynchronous method, for "
+"example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:864
+#, no-c-format
+msgid ""
+"@Asynchronous public void scheduleAlert(Alert alert, @Expiration Date date) "
+"{ ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:865
+#, no-c-format
+msgid ""
+"@Asynchronous public Timer scheduleAlerts(Alert alert, @Expiration Date "
+"date, \n"
+"@IntervalDuration long interval) { ... }"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:868
+#, no-c-format
+msgid "<literal>@Asynchronous</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:870
+#, no-c-format
+msgid "<programlisting>@Asynchronous</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:871
+#, no-c-format
+msgid "Specifies that the method call is processed asynchronously."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:877
+#, no-c-format
+msgid "<literal>@Duration</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:879
+#, no-c-format
+msgid "<programlisting>@Duration</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:880
+#, no-c-format
+msgid ""
+"Specifies that a parameter of the asynchronous call is the duration before "
+"the call is processed (or first processed for recurring calls)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:886
+#, no-c-format
+msgid "<literal>@Expiration</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:888
+#, no-c-format
+msgid "<programlisting>@Expiration</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:889
+#, no-c-format
+msgid ""
+"Specifies that a parameter of the asynchronous call is the datetime at which "
+"the call is processed (or first processed for recurring calls)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:895
+#, no-c-format
+msgid "<literal>@IntervalDuration</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:897
+#, no-c-format
+msgid "<programlisting>@IntervalDuration</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:898
+#, no-c-format
+msgid ""
+"Specifies that an asynchronous method call recurs, and that the annotationed "
+"parameter is duration between recurrences."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:907
+#, no-c-format
+msgid "Annotations for use with JSF <literal>dataTable</literal>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:908
+#, no-c-format
+msgid ""
+"The following annotations make it easy to implement clickable lists backed "
+"by a stateful session bean. They appear on attributes."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:913
+#, no-c-format
+msgid "@DataModel"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:915
+#, no-c-format
+msgid "@DataModel(\"variableName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:916
+#, no-c-format
+msgid ""
+"Exposes an attribute of type <literal>List</literal>, <literal>Map</"
+"literal>, <literal>Set</literal> or <literal>Object[]</literal> as a JSF "
+"<literal>DataModel</literal> into the scope of the owning component (or the "
+"<literal>EVENT</literal> scope if the owning component is "
+"<literal>STATELESS</literal>). In the case of <literal>Map</literal>, each "
+"row of the <literal>DataModel</literal> is a <literal>Map.Entry</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:921
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; name of the conversation context variable. "
+"Default to the attribute name."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:926
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; if <literal>scope=ScopeType.PAGE</literal> "
+"is explicitly specified, the <literal>DataModel</literal> will be kept in "
+"the <literal>PAGE</literal> context."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:934
+#, no-c-format
+msgid "<literal>@DataModelSelection</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:936
+#, no-c-format
+msgid "<programlisting>@DataModelSelection</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:937
+#, no-c-format
+msgid ""
+"Injects the selected value from the JSF <literal>DataModel</literal> (this "
+"is the element of the underlying collection, or the map value)."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:942 Annotations.xml:958
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; name of the conversation context variable. "
+"Not needed if there is exactly one <literal>@DataModel</literal> in the "
+"component."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:950
+#, no-c-format
+msgid "<literal>@DataModelSelectionIndex</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:952
+#, no-c-format
+msgid "<programlisting>@DataModelSelectionIndex</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:953
+#, no-c-format
+msgid ""
+"Exposes the selection index of the JSF <literal>DataModel</literal> as an "
+"attribute of the component (this is the row number of the underlying "
+"collection, or the map key)."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:969
+#, no-c-format
+msgid "Meta-annotations for databinding"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:970
+#, no-c-format
+msgid ""
+"These meta-annotations make it possible to implement similar functionality "
+"to <literal>@DataModel</literal> and <literal>@DataModelSelection</literal> "
+"for other datastructures apart from lists."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:975
+#, no-c-format
+msgid "@DataBinderClass"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:977
+#, no-c-format
+msgid "@DataBinderClass(DataModelBinder.class)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:978
+#, no-c-format
+msgid "Specifies that an annotation is a databinding annotation."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:984
+#, no-c-format
+msgid "@DataSelectorClass"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:986
+#, no-c-format
+msgid "@DataSelectorClass(DataModelSelector.class)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:987
+#, no-c-format
+msgid "Specifies that an annotation is a dataselection annotation."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:996
+#, no-c-format
+msgid "Annotations for packaging"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:997
+#, no-c-format
+msgid ""
+"This annotation provides a mechanism for declaring information about a set "
+"of components that are packaged together. It can be applied to any Java "
+"package."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:1002
+#, no-c-format
+msgid "@Namespace"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:1004
+#, no-c-format
+msgid "@Namespace(value=\"http://jboss.com/products/seam/example/seampay\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:1005
+#, no-c-format
+msgid ""
+"Specifies that components in the current package are associated with the "
+"given namespace. The declared namespace can be used as an XML namespace in a "
+"<literal>components.xml</literal> file to simplify application configuration."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:1008
+#, no-c-format
+msgid ""
+"@Namespace(value=\"http://jboss.com/products/seam/core\", prefix=\"org.jboss."
+"seam.core\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:1009
+#, no-c-format
+msgid ""
+"Specifies a namespace to associate with a given package. Additionally, it "
+"specifies a component name prefix to be applied to component names specified "
+"in the XML file. For example, an XML element named <literal>microcontainer</"
+"literal> that is associated with this namespace would be understood to "
+"actually refere to a component named <literal>org.jboss.seam.core."
+"microcontainer</literal>."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Author_Group.pot
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Author_Group.pot	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Author_Group.pot	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,33 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-07-14 00:47+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: firstname
+#: Author_Group.xml:16
+#, no-c-format
+msgid ""
+"Written By: Gavin King, Christian Bauer, Norman Richards, Shane Bryzak, Pete "
+"Muir, Emmanuel Bernard, Max Andersen, Michael Youngstrom, Thomas Heute, "
+"Michael Yuan"
+msgstr ""
+
+#. Tag: firstname
+#: Author_Group.xml:19
+#, no-c-format
+msgid ""
+"Japanese Translation: Fusayuki Minamoto, Takayoshi Kimura, Takayoshi Osawa, "
+"Reiko Ohtsuka, Syunpei Shiraishi, Toshiya Kobayashi, Shigeaki Wakizaka, Ken "
+"Yamada, Noriko Mizumoto"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Book_Info.pot
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Book_Info.pot	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Book_Info.pot	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,42 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-07-14 00:47+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Book_Info.xml:5
+#, no-c-format
+msgid "Seam Reference Guide CP06"
+msgstr ""
+
+#. Tag: subtitle
+#: Book_Info.xml:6
+#, no-c-format
+msgid ""
+"for Use with JBoss Enterprise Application Platform 4.3 Cumulative Patch 6"
+msgstr ""
+
+#. Tag: para
+#: Book_Info.xml:13
+#, no-c-format
+msgid ""
+"This book is a Reference Guide to Seam 1.2 for JBoss Enterprise Application "
+"Platform 4.3."
+msgstr ""
+
+#. Tag: holder
+#: Book_Info.xml:24
+#, no-c-format
+msgid "&HOLDER;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Cache.pot
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Cache.pot	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Cache.pot	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,307 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-07-14 00:47+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Cache.xml:5
+#, no-c-format
+msgid "Caching"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:7
+#, no-c-format
+msgid ""
+"In almost all enterprise applications, the database is the primary "
+"bottleneck, and the least scalable tier of the runtime environment. So "
+"anything we can possibly do to share the database <emphasis>less often</"
+"emphasis> is worth doing."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:13
+#, no-c-format
+msgid ""
+"This calls for a cache. Well, not just one cache. A well designed Seam "
+"application will feature a rich, multi-layered caching strategy that impacts "
+"every layer of the application:"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:21
+#, no-c-format
+msgid ""
+"The database has its own cache. This is particularly important, but cannot "
+"scale like a cache in the application tier."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:28
+#, no-c-format
+msgid ""
+"Your ORM solution (Hibernate, or some other JPA implementation) has a second-"
+"level cache of data from the database. This is a very powerful capability, "
+"but is often misused. In a clustered environment, keeping the data in the "
+"cache transactionally consistent across the whole cluster, and with the "
+"database, is quite expensive. It makes most sense for data which is shared "
+"between many users, and is updated rarely."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:42
+#, no-c-format
+msgid ""
+"The Seam conversation context is a cache of conversational state. Components "
+"you put into the conversation context can hold and cache state relating to "
+"the current user interaction."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:49
+#, no-c-format
+msgid ""
+"In particular, the Seam-managed persistence context (or an extended EJB "
+"container-managed persistence context associated with a conversation-scoped "
+"stateful session bean) acts as a cache of data that has been read in the "
+"current conversation. This cache tends to have a pretty high hitrate. Seam "
+"optimizes the replication of Seam-managed persistence contexts in a "
+"clustered environment, and there is no requirement for transactional "
+"consistency with the database (optimistic locking is sufficient) so you do "
+"not need to worry too much about the performance implications of this cache, "
+"unless you read thousands of objects into a single persistence context."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:64
+#, no-c-format
+msgid ""
+"The application can cache non-transactional state in the Seam application "
+"context. State kept in the application context is of course not visible to "
+"other nodes in the cluster."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:71
+#, no-c-format
+msgid ""
+"The application can cache transactional state using the Seam "
+"<literal>pojoCache</literal> component, which integrates JBossCache into the "
+"Seam environment. This state will be visible to other nodes if you run JBoss "
+"cache in a clustered mode."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:79
+#, no-c-format
+msgid ""
+"Finally, Seam lets you cache rendered fragments of a JSF page. Unlike the "
+"ORM second-level cache, this cache is not automatically invalidated when "
+"data changes, so you need to write application code to perform explicit "
+"invalidation, or set appropriate expiration policies."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:88
+#, no-c-format
+msgid ""
+"For more information about the second-level cache, you will need to refer to "
+"the documentation of your ORM solution, since this is an extremely complex "
+"topic. In this section we will discuss the use of JBossCache directly, via "
+"the <literal>pojoCache</literal> component, or as the page fragment cache, "
+"via the <literal>&lt;s:cache&gt;</literal> control."
+msgstr ""
+
+#. Tag: title
+#: Cache.xml:97
+#, no-c-format
+msgid "Using JBossCache in Seam"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:99
+#, no-c-format
+msgid ""
+"The built-in <literal>pojoCache</literal> component manages an instance of "
+"<literal>org.jboss.cache.aop.PojoCache</literal>. You can safely put any "
+"immutable Java object in the cache, and it will be replicated across the "
+"cluster (assuming that replication is enabled). If you want to keep mutable "
+"objects in the cache, you will need to run the JBoss Cache bytecode "
+"preprocessor to ensure that changes to the objects will be automatically "
+"detected and replicated."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:109
+#, no-c-format
+msgid ""
+"To use <literal>pojoCache</literal>, all you need to do is put the "
+"JBossCache jars in the classpath, and provide a resource named "
+"<literal>treecache.xml</literal> with an appropriate cache configuration. "
+"JBoss Cache has many scary and confusing configuration settings, so we won't "
+"discuss them here. Please refer to the JBoss Cache documentation for more "
+"information."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:118
+#, no-c-format
+msgid ""
+"You can find a sample <literal>treecache.xml</literal> in <literal>examples/"
+"blog/resources/treecache.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:124
+#, no-c-format
+msgid ""
+"For an EAR deployment of Seam, we recommend that the JBoss Cache jars and "
+"configuration go directly into the EAR. Make sure you place both "
+"<literal>jboss-cache.jar</literal> and <literal>jgroups.jar</literal> in "
+"your EAR's lib folder."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:131
+#, no-c-format
+msgid "Now you can inject the cache into any Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:135
+#, no-c-format
+msgid ""
+"<![CDATA[@Name(\"chatroom\")\n"
+"public class Chatroom {\n"
+"    @In PojoCache pojoCache;\n"
+"    \n"
+"    public void join(String username) {\n"
+"      try\n"
+"      {\n"
+"         Set<String> userList = (Set<String>) pojoCache.get(\"chatroom\", "
+"\"userList\");\n"
+"         if (userList==null) \n"
+"         {\n"
+"            userList = new HashSet<String>();\n"
+"            pojoCache.put(\"chatroom\", \"userList\", userList);\n"
+"         }\n"
+"         userList.put(username);\n"
+"      }\n"
+"      catch (CacheException ce)\n"
+"      {\n"
+"         throw new RuntimeException(ce);\n"
+"      }\n"
+"    }\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:137
+#, no-c-format
+msgid ""
+"If you want to have multiple JBoss Cache configurations in your application, "
+"use <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:142
+#, no-c-format
+msgid ""
+"<![CDATA[<core:pojo-cache name=\"myCache\" cfg-resource-name=\"myown/cache."
+"xml\"/>]]>"
+msgstr ""
+
+#. Tag: title
+#: Cache.xml:147
+#, no-c-format
+msgid "Page fragment caching"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:149
+#, no-c-format
+msgid ""
+"The most interesting use of JBoss Cache is the <literal>&lt;s:cache&gt;</"
+"literal> tag, Seam's solution to the problem of page fragment caching in "
+"JSF. <literal>&lt;s:cache&gt;</literal> uses <literal>pojoCache</literal> "
+"internally, so you need to follow the steps listed above before you can use "
+"it."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:157
+#, no-c-format
+msgid ""
+"<literal>&lt;s:cache&gt;</literal> is used for caching some rendered content "
+"which changes rarely. For example, the welcome page of our blog displays the "
+"recent blog entries:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:163
+#, no-c-format
+msgid ""
+"<![CDATA[<s:cache key=\"recentEntries-#{blog.id}\" region="
+"\"welcomePageFragments\">\n"
+"   <h:dataTable value=\"#{blog.recentEntries}\" var=\"blogEntry\">\n"
+"      <h:column>\n"
+"         <h3>#{blogEntry.title}</h3>\n"
+"         <div>\n"
+"            <s:formattedText value=\"#{blogEntry.body}\"/>\n"
+"         </div>\n"
+"      </h:column>\n"
+"   </h:dataTable>\n"
+"</s:cache>]]>"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:165
+#, no-c-format
+msgid ""
+"The <literal>key</literal> will let you have multiple cached versions of "
+"each page fragment. In this case, there is one cached version per blog. The "
+"<literal>region</literal> determines the JBossCache node that all version "
+"will be stored in. Different nodes may have different expiry policies (setup "
+"during the previous steps)."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:173
+#, no-c-format
+msgid ""
+"The issue with the <literal>&lt;s:cache&gt;</literal> tag is that it is "
+"unable to recognize when the underlying data changes (for example, when the "
+"blogger posts a new entry). So you need to evict the cached fragment "
+"manually:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:179
+#, no-c-format
+msgid ""
+"<![CDATA[public void post() {\n"
+"    ...\n"
+"    entityManager.persist(blogEntry);\n"
+"    pojoCache.remove(\"welcomePageFragments\", \"recentEntries-\" + blog."
+"getId() );\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:181
+#, no-c-format
+msgid ""
+"Alternatively, if it is not critical that changes are immediately visible to "
+"the user, you could set a short expiry time on the JbossCache node."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Components.pot
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Components.pot	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Components.pot	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2038 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-07-14 00:47+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Components.xml:5
+#, no-c-format
+msgid "Built-in Seam components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:6
+#, no-c-format
+msgid ""
+"This chapter describes Seam's built in components, and their configuration "
+"properties. The built in components will be created even if they are not "
+"listed in your <literal>components.xml</literal> file, but if you need to "
+"override default properties or specify more than one component of a certain "
+"type, <literal>components.xml</literal> is used."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:14
+#, no-c-format
+msgid ""
+"You can replace any of the built in components with your own implementations "
+"simply by specifying the name of one of the built in components on your own "
+"class using <literal>@Name</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:21
+#, no-c-format
+msgid ""
+"Even though all the built in components use a qualified name, most of them "
+"are aliased to unqualified names by default. These aliases specify "
+"<literal>auto-create=\"true\"</literal>, so you do not need to use "
+"<literal>create=true</literal> when injecting built-in components by their "
+"unqualified name."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:30
+#, no-c-format
+msgid "Context injection components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:31
+#, no-c-format
+msgid ""
+"The first set of built in components exist purely to support injection of "
+"various contextual objects. For example, the following component instance "
+"variable would have the Seam session context object injected:"
+msgstr ""
+
+#. Tag: programlisting
+#: Components.xml:38
+#, no-c-format
+msgid "<![CDATA[@In private Context sessionContext;]]>"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:42
+#, no-c-format
+msgid "org.jboss.seam.core.contexts"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:44
+#, no-c-format
+msgid ""
+"Component that provides access to Seam Context objects, for example "
+"<literal>org.jboss.seam.core.contexts.sessionContext['user']</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:51
+#, no-c-format
+msgid "org.jboss.seam.faces.facesContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:53
+#, no-c-format
+msgid ""
+"Manager component for the <literal>FacesContext</literal> context object "
+"(not a true Seam context)"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:61 Components.xml:275 Components.xml:485 Components.xml:637
+#, no-c-format
+msgid "All of these components are always installed."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:68
+#, no-c-format
+msgid "Utility components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:69
+#, no-c-format
+msgid "These components are merely useful."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:75
+#, no-c-format
+msgid "org.jboss.seam.faces.facesMessages"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:77
+#, no-c-format
+msgid "Allows faces success messages to propagate across a browser redirect."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:82
+#, no-c-format
+msgid ""
+"<literal>add(FacesMessage facesMessage)</literal> &#8212; add a faces "
+"message, which will be displayed during the next render response phase that "
+"occurs in the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:89
+#, no-c-format
+msgid ""
+"<literal>add(String messageTemplate)</literal> &#8212; add a faces message, "
+"rendered from the given message template which may contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:96
+#, no-c-format
+msgid ""
+"<literal>add(Severity severity, String messageTemplate)</literal> &#8212; "
+"add a faces message, rendered from the given message template which may "
+"contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:103
+#, no-c-format
+msgid ""
+"<literal>addFromResourceBundle(String key)</literal> &#8212; add a faces "
+"message, rendered from a message template defined in the Seam resource "
+"bundle which may contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:110
+#, no-c-format
+msgid ""
+"<literal>addFromResourceBundle(Severity severity, String key)</literal> "
+"&#8212; add a faces message, rendered from a message template defined in the "
+"Seam resource bundle which may contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:117
+#, no-c-format
+msgid "<literal>clear()</literal> &#8212; clear all messages."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:125
+#, no-c-format
+msgid "org.jboss.seam.faces.redirect"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:127
+#, no-c-format
+msgid ""
+"A convenient API for performing redirects with parameters (this is "
+"especially useful for bookmarkable search results screens)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:133
+#, no-c-format
+msgid ""
+"<literal>redirect.viewId</literal> &#8212; the JSF view id to redirect to."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:139
+#, no-c-format
+msgid ""
+"<literal>redirect.conversationPropagationEnabled</literal> &#8212; "
+"determines whether the conversation will propagate across the redirect."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:146
+#, no-c-format
+msgid ""
+"<literal>redirect.parameters</literal> &#8212; a map of request parameter "
+"name to value, to be passed in the redirect request."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:153
+#, no-c-format
+msgid "<literal>execute()</literal> &#8212; perform the redirect immediately."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:159
+#, no-c-format
+msgid ""
+"<literal>captureCurrentRequest()</literal> &#8212; stores the view id and "
+"request parameters of the current GET request (in the conversation context), "
+"for later use by calling <literal>execute()</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:170
+#, no-c-format
+msgid "org.jboss.seam.faces.httpError"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:172
+#, no-c-format
+msgid "A convenient API for sending HTTP errors."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:178
+#, no-c-format
+msgid "org.jboss.seam.core.events"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:180
+#, no-c-format
+msgid ""
+"An API for raising events that can be observed via <literal>@Observer</"
+"literal> methods, or method bindings in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:187
+#, no-c-format
+msgid ""
+"<literal>raiseEvent(String type)</literal> &#8212; raise an event of a "
+"particular type and distribute to all observers."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:194
+#, no-c-format
+msgid ""
+"<literal>raiseAsynchronousEvent(String type)</literal> &#8212; raise an "
+"event to be processed asynchronously by the EJB3 timer service."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:201
+#, no-c-format
+msgid ""
+"<literal>raiseTimedEvent(String type, ....)</literal> &#8212; schedule an "
+"event to be processed asynchronously by the EJB3 timer service."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:208
+#, no-c-format
+msgid ""
+"<literal>addListener(String type, String methodBinding)</literal> &#8212; "
+"add an observer for a particular event type."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:217
+#, no-c-format
+msgid "org.jboss.seam.core.interpolator"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:219
+#, no-c-format
+msgid "An API for interpolating the values of JSF EL expressions in Strings."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:225
+#, no-c-format
+msgid ""
+"<literal>interpolate(String template)</literal> &#8212; scan the template "
+"for JSF EL expressions of the form <literal>#{...}</literal> and replace "
+"them with their evaluated values."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:235
+#, no-c-format
+msgid "org.jboss.seam.core.expressions"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:237
+#, no-c-format
+msgid "An API for creating value and method bindings."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:242
+#, no-c-format
+msgid ""
+"<literal>createValueBinding(String expression)</literal> &#8212; create a "
+"value binding object."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:248
+#, no-c-format
+msgid ""
+"<literal>createMethodBinding(String expression)</literal> &#8212; create a "
+"method binding object."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:257 Components.xml:1314
+#, no-c-format
+msgid "org.jboss.seam.core.pojoCache"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:259
+#, no-c-format
+msgid ""
+"Manager component for a JBoss Cache <literal>PojoCache</literal> instance."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:265
+#, no-c-format
+msgid ""
+"<literal>pojoCache.cfgResourceName</literal> &#8212; the name of the "
+"configuration file. Default to <literal>treecache.xml</literal>."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:281
+#, no-c-format
+msgid "Components for internationalization and themes"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:282
+#, no-c-format
+msgid ""
+"The next group of components make it easy to build internationalized user "
+"interfaces using Seam."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:289
+#, no-c-format
+msgid "org.jboss.seam.core.locale"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:291
+#, no-c-format
+msgid "The Seam locale."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:297
+#, no-c-format
+msgid "org.jboss.seam.international.timezone"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:299
+#, no-c-format
+msgid "The Seam timezone. The timezone is session scoped."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:305
+#, no-c-format
+msgid "org.jboss.seam.core.resourceBundle"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:307
+#, no-c-format
+msgid ""
+"The Seam resource bundle. The resource bundle is stateless. The Seam "
+"resource bundle performs a depth-first search for keys in a list of Java "
+"resource bundles."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:315
+#, no-c-format
+msgid "org.jboss.seam.core.resourceLoader"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:317
+#, no-c-format
+msgid ""
+"The resource loader provides access to application resources and resource "
+"bundles."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:322
+#, no-c-format
+msgid ""
+"<literal>resourceLoader.bundleNames</literal> &#8212; the names of the Java "
+"resource bundles to search when the Seam resource bundle is used. Default to "
+"<literal>messages</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:332
+#, no-c-format
+msgid "org.jboss.seam.international.localeSelector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:334
+#, no-c-format
+msgid ""
+"Supports selection of the locale either at configuration time, or by the "
+"user at runtime."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:340 Components.xml:399
+#, no-c-format
+msgid "<literal>select()</literal> &#8212; select the specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:345
+#, no-c-format
+msgid ""
+"<literal>localeSelector.locale</literal> &#8212; the actual <literal>java."
+"util.Locale</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:351
+#, no-c-format
+msgid ""
+"<literal>localeSelector.localeString</literal> &#8212; the string "
+"representation of the locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:357
+#, no-c-format
+msgid ""
+"<literal>localeSelector.language</literal> &#8212; the language for the "
+"specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:363
+#, no-c-format
+msgid ""
+"<literal>localeSelector.country</literal> &#8212; the country for the "
+"specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:369
+#, no-c-format
+msgid ""
+"<literal>localeSelector.variant</literal> &#8212; the variant for the "
+"specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:375
+#, no-c-format
+msgid ""
+"<literal>localeSelector.supportedLocales</literal> &#8212; a list of "
+"<literal>SelectItem</literal>s representing the supported locales listed in "
+"<literal>jsf-config.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:382
+#, no-c-format
+msgid ""
+"<literal>localeSelector.cookieEnabled</literal> &#8212; specifies that the "
+"locale selection should be persisted via a cookie."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:391
+#, no-c-format
+msgid "org.jboss.seam.international.timezoneSelector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:393
+#, no-c-format
+msgid ""
+"Supports selection of the timezone either at configuration time, or by the "
+"user at runtime."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:404
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.timezone</literal> &#8212; the actual "
+"<literal>java.util.TimeZone</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:410
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.timeZoneId</literal> &#8212; the string "
+"representation of the timezone."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:416
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.cookieEnabled</literal> &#8212; specifies that the "
+"timezone selection should be persisted via a cookie."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:425
+#, no-c-format
+msgid "org.jboss.seam.international.messages"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:427
+#, no-c-format
+msgid ""
+"A map containing internationalized messages rendered from message templates "
+"defined in the Seam resource bundle."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:434
+#, no-c-format
+msgid "org.jboss.seam.theme.themeSelector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:436
+#, no-c-format
+msgid ""
+"Supports selection of the theme either at configuration time, or by the user "
+"at runtime."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:442
+#, no-c-format
+msgid "<literal>select()</literal> &#8212; select the specified theme."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:447
+#, no-c-format
+msgid ""
+"<literal>theme.availableThemes</literal> &#8212; the list of defined themes."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:453
+#, no-c-format
+msgid "<literal>themeSelector.theme</literal> &#8212; the selected theme."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:459
+#, no-c-format
+msgid ""
+"<literal>themeSelector.themes</literal> &#8212; a list of "
+"<literal>SelectItem</literal>s representing the defined themes."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:466
+#, no-c-format
+msgid ""
+"<literal>themeSelector.cookieEnabled</literal> &#8212; specifies that the "
+"theme selection should be persisted via a cookie."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:475
+#, no-c-format
+msgid "org.jboss.seam.theme.theme"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:477
+#, no-c-format
+msgid "A map containing theme entries."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:491
+#, no-c-format
+msgid "Components for controlling conversations"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:492
+#, no-c-format
+msgid ""
+"The next group of components allow control of conversations by the "
+"application or user interface."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:499
+#, no-c-format
+msgid "org.jboss.seam.core.conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:501
+#, no-c-format
+msgid ""
+"API for application control of attributes of the current Seam conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:506 Components.xml:523
+#, no-c-format
+msgid "<literal>getId()</literal> &#8212; returns the current conversation ID"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:511
+#, no-c-format
+msgid ""
+"<literal>isNested()</literal> &#8212; is the current conversation a nested "
+"conversation?"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:517
+#, no-c-format
+msgid ""
+"<literal>isLongRunning()</literal> &#8212; is the current conversation a "
+"long-running conversation?"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:528
+#, no-c-format
+msgid ""
+"<literal>getParentId()</literal> &#8212; returns the conversation ID of the "
+"parent conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:534
+#, no-c-format
+msgid ""
+"<literal>getRootId()</literal> &#8212; returns the conversation ID of the "
+"root conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:540
+#, no-c-format
+msgid ""
+"<literal>setTimeout(int timeout)</literal> &#8212; sets the timeout for the "
+"current conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:546
+#, no-c-format
+msgid ""
+"<literal>setViewId(String outcome)</literal> &#8212; sets the view id to be "
+"used when switching back to the current conversation from the conversation "
+"switcher, conversation list, or breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:553
+#, no-c-format
+msgid ""
+"<literal>setDescription(String description)</literal> &#8212; sets the "
+"description of the current conversation to be displayed in the conversation "
+"switcher, conversation list, or breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:560
+#, no-c-format
+msgid ""
+"<literal>redirect()</literal> &#8212; redirect to the last well-defined view "
+"id for this conversation (useful after login challenges)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:566
+#, no-c-format
+msgid ""
+"<literal>leave()</literal> &#8212; exit the scope of this conversation, "
+"without actually ending the conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:572
+#, no-c-format
+msgid ""
+"<literal>begin()</literal> &#8212; begin a long-running conversation "
+"(equivalent to <literal>@Begin</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:578
+#, no-c-format
+msgid ""
+"<literal>beginPageflow(String pageflowName)</literal> &#8212; begin a long-"
+"running conversation with a pageflow (equivalent to <literal>@Begin(pageflow="
+"\"...\")</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:585
+#, no-c-format
+msgid ""
+"<literal>end()</literal> &#8212; end a long-running conversation (equivalent "
+"to <literal>@End</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:591
+#, no-c-format
+msgid ""
+"<literal>pop()</literal> &#8212; pop the conversation stack, returning to "
+"the parent conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:597
+#, no-c-format
+msgid ""
+"<literal>root()</literal> &#8212; return to the root conversation of the "
+"conversation stack."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:603
+#, no-c-format
+msgid ""
+"<literal>changeFlushMode(FlushModeType flushMode)</literal> &#8212; change "
+"the flush mode of the conversation."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:612
+#, no-c-format
+msgid "org.jboss.seam.core.conversationList"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:614
+#, no-c-format
+msgid "Manager component for the conversation list."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:620
+#, no-c-format
+msgid "org.jboss.seam.core.conversationStack"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:622
+#, no-c-format
+msgid "Manager component for the conversation stack (breadcrumbs)."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:628
+#, no-c-format
+msgid "org.jboss.seam.faces.switcher"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:630
+#, no-c-format
+msgid "The conversation switcher."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:644
+#, no-c-format
+msgid "jBPM-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:645
+#, no-c-format
+msgid "These components are for use with jBPM."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:651
+#, no-c-format
+msgid "org.jboss.seam.pageflow.pageflow"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:653
+#, no-c-format
+msgid "API control of Seam pageflows."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:658
+#, no-c-format
+msgid ""
+"<literal>isInProcess()</literal> &#8212; returns <literal>true</literal> if "
+"there is currently a pageflow in process"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:664
+#, no-c-format
+msgid ""
+"<literal>getProcessInstance()</literal> &#8212; returns jBPM "
+"<literal>ProcessInstance</literal> for the current pageflow"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:670
+#, no-c-format
+msgid ""
+"<literal>begin(String pageflowName)</literal> &#8212; begin a pageflow in "
+"the context of the current conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:676
+#, no-c-format
+msgid ""
+"<literal>reposition(String nodeName)</literal> &#8212; reposition the "
+"current pageflow to a particular node"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:685
+#, no-c-format
+msgid "org.jboss.seam.bpm.actor"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:687
+#, no-c-format
+msgid ""
+"API for application control of attributes of the jBPM actor associated with "
+"the current session."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:693
+#, no-c-format
+msgid ""
+"<literal>setId(String actorId)</literal> &#8212; sets the jBPM actor id of "
+"the current user."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:699
+#, no-c-format
+msgid ""
+"<literal>getGroupActorIds()</literal> &#8212; returns a <literal>Set</"
+"literal> to which jBPM actor ids for the current users groups may be added."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:709
+#, no-c-format
+msgid "org.jboss.seam.bpm.transition"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:711
+#, no-c-format
+msgid ""
+"API for application control of the jBPM transition for the current task."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:717
+#, no-c-format
+msgid ""
+"<literal>setName(String transitionName)</literal> &#8212; sets the jBPM "
+"transition name to be used when the current task is ended via "
+"<literal>@EndTask</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:727
+#, no-c-format
+msgid "org.jboss.seam.bpm.businessProcess"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:729
+#, no-c-format
+msgid ""
+"API for programmatic control of the association between the conversation and "
+"business process."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:735
+#, no-c-format
+msgid ""
+"<literal>businessProcess.taskId</literal> &#8212; the id of the task "
+"associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:741
+#, no-c-format
+msgid ""
+"<literal>businessProcess.processId</literal> &#8212; the id of the process "
+"associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:747
+#, no-c-format
+msgid ""
+"<literal>businessProcess.hasCurrentTask()</literal> &#8212; is a task "
+"instance associated with the current conversation?"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:753
+#, no-c-format
+msgid ""
+"<literal>businessProcess.hasCurrentProcess()</literal> &#8212; is a process "
+"instance associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:759
+#, no-c-format
+msgid ""
+"<literal>createProcess(String name)</literal> &#8212; create an instance of "
+"the named process definition and associate it with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:766
+#, no-c-format
+msgid ""
+"<literal>startTask()</literal> &#8212; start the task associated with the "
+"current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:772
+#, no-c-format
+msgid ""
+"<literal>endTask(String transitionName)</literal> &#8212; end the task "
+"associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:778
+#, no-c-format
+msgid ""
+"<literal>resumeTask(Long id)</literal> &#8212; associate the task with the "
+"given id with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:784
+#, no-c-format
+msgid ""
+"<literal>resumeProcess(Long id)</literal> &#8212; associate the process with "
+"the given id with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:790
+#, no-c-format
+msgid ""
+"<literal>transition(String transitionName)</literal> &#8212; trigger the "
+"transition."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:799
+#, no-c-format
+msgid "org.jboss.seam.bpm.taskInstance"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:801
+#, no-c-format
+msgid "Manager component for the jBPM <literal>TaskInstance</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:807
+#, no-c-format
+msgid "org.jboss.seam.bpm.processInstance"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:809
+#, no-c-format
+msgid "Manager component for the jBPM <literal>ProcessInstance</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:815
+#, no-c-format
+msgid "org.jboss.seam.bpm.jbpmContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:817
+#, no-c-format
+msgid "Manager component for an event-scoped <literal>JbpmContext</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:823
+#, no-c-format
+msgid "org.jboss.seam.bpm.taskInstanceList"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:825
+#, no-c-format
+msgid "Manager component for the jBPM task list."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:831
+#, no-c-format
+msgid "org.jboss.seam.bpm.pooledTaskInstanceList"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:833
+#, no-c-format
+msgid "Manager component for the jBPM pooled task list."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:839
+#, no-c-format
+msgid "org.jboss.seam.bpm.taskInstanceListForType"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:841
+#, no-c-format
+msgid "Manager component for the jBPM task lists."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:847
+#, no-c-format
+msgid "org.jboss.seam.bpm.pooledTask"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:849
+#, no-c-format
+msgid "Action handler for pooled task assignment."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:855
+#, no-c-format
+msgid "org.jboss.seam.bpm.processInstanceFinder"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:857
+#, no-c-format
+msgid "Manager for the process instance task list."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:863
+#, no-c-format
+msgid "org.jboss.seam.bpm.processInstanceList"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:865
+#, no-c-format
+msgid "The process instance task list."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:872
+#, no-c-format
+msgid ""
+"All of these components are installed whenever the component <literal>org."
+"jboss.seam.bpm.jbpm</literal> is installed."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:880
+#, no-c-format
+msgid "Security-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:881
+#, no-c-format
+msgid "These components relate to web-tier security."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:887
+#, no-c-format
+msgid "org.jboss.seam.web.userPrincipal"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:889
+#, no-c-format
+msgid "Manager component for the current user <literal>Principal</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:895
+#, no-c-format
+msgid "org.jboss.seam.web.isUserInRole"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:897
+#, no-c-format
+msgid ""
+"Allows JSF pages to choose to render a control, depending upon the roles "
+"available to the current principal. <literal>&lt;h:commandButton value=\"edit"
+"\" rendered=\"#{isUserInRole['admin']}\"/&gt;</literal>."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:908
+#, no-c-format
+msgid "JMS-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:909
+#, no-c-format
+msgid ""
+"These components are for use with managed <literal>TopicPublisher</literal>s "
+"and <literal>QueueSender</literal>s (see below)."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:916
+#, no-c-format
+msgid "org.jboss.seam.jms.queueSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:918
+#, no-c-format
+msgid "Manager component for a JMS <literal>QueueSession</literal> ."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:924
+#, no-c-format
+msgid "org.jboss.seam.jms.topicSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:926
+#, no-c-format
+msgid "Manager component for a JMS <literal>TopicSession</literal> ."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:935
+#, no-c-format
+msgid "Mail-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:936
+#, no-c-format
+msgid "These components are for use with Seam's Email support"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:942
+#, no-c-format
+msgid "org.jboss.seam.mail.mailSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:944
+#, no-c-format
+msgid ""
+"Manager component for a JavaMail <literal>Session</literal>. The session can "
+"be either looked up in the JNDI context (by setting the "
+"<literal>sessionJndiName</literal> property) or it can created from the "
+"configuration options in which case the <literal>host</literal> is mandatory."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:953
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.host</literal> &#8212; the hostname "
+"of the SMTP server to use"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:958
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.port</literal> &#8212; the port of "
+"the SMTP server to use"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:963
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.username</literal> &#8212; the "
+"username to use to connect to the SMTP server."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:968
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.password</literal> &#8212; the "
+"password to use to connect to the SMTP server"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:973
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.debug</literal> &#8212; enable "
+"JavaMail debugging (very verbose)"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:978
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.ssl</literal> &#8212; enable SSL "
+"connection to SMTP (will default to port 465)"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:981
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.tls</literal> &#8212; by default "
+"true, enable TLS support in the mail session"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:986
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.sessionJndiName</literal> &#8212; "
+"name under which a javax.mail.Session is bound to JNDI. If supplied, all "
+"other properties will be ignored."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:998
+#, no-c-format
+msgid "Infrastructural components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:999
+#, no-c-format
+msgid ""
+"These components provide critical platform infrastructure. You can install a "
+"component which isn't installed by default by setting <literal>install=\"true"
+"\"</literal> on the component in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1007
+#, no-c-format
+msgid "org.jboss.seam.core.init"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1009
+#, no-c-format
+msgid "Initialization settings for Seam. Always installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1014
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.jndiPattern</literal> &#8212; the JNDI "
+"pattern used for looking up session beans"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1020
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.debug</literal> &#8212; enable Seam debug "
+"mode. This should be set to false when in production. You may see errors if "
+"the system is placed under any load and debug is enabled."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1027
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.clientSideConversations</literal> &#8212; "
+"if set to <literal>true</literal>, Seam will save conversation context "
+"variables in the client instead of in the <literal>HttpSession</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1034
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.userTransactionName</literal> &#8212; the "
+"JNDI name to use when looking up the JTA <literal>UserTransaction</literal> "
+"object."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1043
+#, no-c-format
+msgid "org.jboss.seam.core.manager"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1045
+#, no-c-format
+msgid ""
+"Internal component for Seam page and conversation context management. Always "
+"installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1051
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationTimeout</literal> &#8212; "
+"the conversation context timeout in milliseconds."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1057
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.concurrentRequestTimeout</literal> "
+"&#8212; maximum wait time for a thread attempting to gain a lock on the long-"
+"running conversation context."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1064
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationIdParameter</literal> "
+"&#8212; the request parameter used to propagate the conversation id, default "
+"to <literal>conversationId</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1071
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationIsLongRunningParameter</"
+"literal> &#8212; the request parameter used to propagate information about "
+"whether the conversation is long-running, default to "
+"<literal>conversationIsLongRunning</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1081
+#, no-c-format
+msgid "org.jboss.seam.navigation.pages"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1083
+#, no-c-format
+msgid "Internal component for Seam workspace management. Always installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1088
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.navigation.pages.noConversationViewId</literal> "
+"&#8212; global setting for the view id to redirect to when a conversation "
+"entry is not found on the server side."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1095
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.navigation.pages.loginViewId</literal> &#8212; "
+"global setting for the view id to redirect to when an unauthenticated user "
+"tries to access a protected view."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1102
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.navigation.pages.httpPort</literal> &#8212; global "
+"setting for the port to use when the http scheme is requested."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1109
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.navigation.pages.httpsPort</literal> &#8212; global "
+"setting for the port to use when the https scheme is requested."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1116
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.navigation.pages.resources</literal> &#8212; a list "
+"of resources to search for <literal>pages.xml</literal> style resources. "
+"Defaults to <literal>WEB-INF/pages.xml</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1126
+#, no-c-format
+msgid "org.jboss.seam.bpm.jbpm"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1128
+#, no-c-format
+msgid ""
+"Bootstraps a <literal>JbpmConfiguration</literal>. Install as class "
+"<literal>org.jboss.seam.bpm.Jbpm</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1134
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.bpm.jbpm.processDefinitions</literal> &#8212; a list "
+"of resource names of jPDL files to be used for orchestration of business "
+"processes."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1141
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.bpm.jbpm.pageflowDefinitions</literal> &#8212; a "
+"list of resource names of jPDL files to be used for orchestration of "
+"conversation page flows."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1151
+#, no-c-format
+msgid "org.jboss.seam.core.conversationEntries"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1153
+#, no-c-format
+msgid ""
+"Internal session-scoped component recording the active long-running "
+"conversations between requests."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1160
+#, no-c-format
+msgid "org.jboss.seam.faces.facesPage"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1162
+#, no-c-format
+msgid ""
+"Internal page-scoped component recording the conversation context associated "
+"with a page."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1169
+#, no-c-format
+msgid "org.jboss.seam.persistence.persistenceContexts"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1171
+#, no-c-format
+msgid ""
+"Internal component recording the persistence contexts which were used in the "
+"current conversation."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1178
+#, no-c-format
+msgid "org.jboss.seam.jms.queueConnection"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1180
+#, no-c-format
+msgid ""
+"Manages a JMS <literal>QueueConnection</literal>. Installed whenever managed "
+"managed <literal>QueueSender</literal> is installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1186
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.jms.queueConnection.queueConnectionFactoryJndiName</"
+"literal> &#8212; the JNDI name of a JMS <literal>QueueConnectionFactory</"
+"literal>. Default to <literal>UIL2ConnectionFactory</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1196
+#, no-c-format
+msgid "org.jboss.seam.jms.topicConnection"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1198
+#, no-c-format
+msgid ""
+"Manages a JMS <literal>TopicConnection</literal>. Installed whenever managed "
+"managed <literal>TopicPublisher</literal> is installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1204
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.jms.topicConnection.topicConnectionFactoryJndiName</"
+"literal> &#8212; the JNDI name of a JMS <literal>TopicConnectionFactory</"
+"literal>. Default to <literal>UIL2ConnectionFactory</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1214
+#, no-c-format
+msgid "org.jboss.seam.persistence.persistenceProvider"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1216
+#, no-c-format
+msgid "Abstraction layer for non-standardized features of JPA provider."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1222
+#, no-c-format
+msgid "org.jboss.seam.core.validators"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1224
+#, no-c-format
+msgid ""
+"Caches instances of Hibernate Validator <literal>ClassValidator</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1230
+#, no-c-format
+msgid "org.jboss.seam.faces.validation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1232
+#, no-c-format
+msgid ""
+"Allows the application to determine whether validation failed or was "
+"successful."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1239
+#, no-c-format
+msgid "org.jboss.seam.debug.introspector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1241 Components.xml:1249
+#, no-c-format
+msgid "Support for the Seam Debug Page."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1247
+#, no-c-format
+msgid "org.jboss.seam.debug.contexts"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1255
+#, no-c-format
+msgid "org.jboss.seam.exception.exceptions"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1257
+#, no-c-format
+msgid "Internal component for exception handling."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1263
+#, no-c-format
+msgid "org.jboss.seam.transaction.transaction"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1265
+#, no-c-format
+msgid ""
+"API for controlling transactions and abstracting the underlying transaction "
+"management implementation behind a JTA-compatible interface."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1273
+#, no-c-format
+msgid "org.jboss.seam.faces.safeActions"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1275
+#, no-c-format
+msgid ""
+"Decides if an action expression in an incoming URL is safe. This is done by "
+"checking that the action expression exists in the view."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:1285
+#, no-c-format
+msgid "Miscellaneous components"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1292
+#, no-c-format
+msgid "org.jboss.seam.async.dispatcher"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1294
+#, no-c-format
+msgid "Dispatcher stateless session bean for asynchronous methods."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1303
+#, no-c-format
+msgid "org.jboss.seam.core.image"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1305
+#, no-c-format
+msgid "Image manipulation and interrogation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1316
+#, no-c-format
+msgid "Manager component for a PojoCache instance."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1325
+#, no-c-format
+msgid "org.jboss.seam.core.uiComponent"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1327
+#, no-c-format
+msgid "Manages a map of UIComponents keyed by component id."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:1339
+#, no-c-format
+msgid "Special components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1340
+#, no-c-format
+msgid ""
+"Certain special Seam component classes are installable multiple times under "
+"names specified in the Seam configuration. For example, the following lines "
+"in <literal>components.xml</literal> install and configure two Seam "
+"components:"
+msgstr ""
+
+#. Tag: programlisting
+#: Components.xml:1346
+#, no-c-format
+msgid ""
+"<![CDATA[<component name=\"bookingDatabase\"\n"
+"          class=\"org.jboss.seam.persistence.ManagedPersistenceContext\">\n"
+"    <property name=\"persistenceUnitJndiName\">java:/comp/emf/"
+"bookingPersistence</property>\n"
+"</component>\n"
+"\n"
+"<component name=\"userDatabase\"\n"
+"          class=\"org.jboss.seam.persistence.ManagedPersistenceContext\">\n"
+"    <property name=\"persistenceUnitJndiName\">java:/comp/emf/"
+"userPersistence</property>\n"
+"</component>]]>"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1348
+#, no-c-format
+msgid ""
+"The Seam component names are <literal>bookingDatabase</literal> and "
+"<literal>userDatabase</literal>."
+msgstr ""
+
+#. Tag: emphasis
+#: Components.xml:1355
+#, no-c-format
+msgid "&lt;entityManager&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1356
+#, no-c-format
+msgid "org.jboss.seam.persistence.ManagedPersistenceContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1358
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed <literal>EntityManager</"
+"literal> with an extended persistence context."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1364
+#, no-c-format
+msgid ""
+"<emphasis>&lt;entityManager&gt;</emphasis>.entityManagerFactory &#8212; a "
+"value binding expression that evaluates to an instance of "
+"<literal>EntityManagerFactory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1369
+#, no-c-format
+msgid ""
+"<emphasis>&lt;entityManager&gt;</emphasis>.persistenceUnitJndiName &#8212; "
+"the JNDI name of the entity manager factory, default to java:/<emphasis>&lt;"
+"managedPersistenceContext&gt;</emphasis>."
+msgstr ""
+
+#. Tag: emphasis
+#: Components.xml:1379
+#, no-c-format
+msgid "&lt;entityManagerFactory&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1380
+#, no-c-format
+msgid "org.jboss.seam.persistence.EntityManagerFactory"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1382
+#, no-c-format
+msgid ""
+"Manages a JPA <literal>EntityManagerFactory</literal>. This is most useful "
+"when using JPA outside of an EJB 3.0 supporting environment."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1388
+#, no-c-format
+msgid ""
+"<literal>entityManagerFactory.persistenceUnitName</literal> &#8212; the name "
+"of the persistence unit."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1394 Components.xml:1437
+#, no-c-format
+msgid "See the API JavaDoc for further configuration properties."
+msgstr ""
+
+#. Tag: emphasis
+#: Components.xml:1400
+#, no-c-format
+msgid "&lt;session&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1401
+#, no-c-format
+msgid "org.jboss.seam.persistence.ManagedSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1403
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed Hibernate "
+"<literal>Session</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1408
+#, no-c-format
+msgid ""
+"<emphasis>&lt;session&gt;</emphasis>.sessionFactory &#8212; a value binding "
+"expression that evaluates to an instance of <literal>SessionFactory</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1413
+#, no-c-format
+msgid ""
+"<emphasis>&lt;session&gt;</emphasis>.sessionFactoryJndiName &#8212; the JNDI "
+"name of the session factory, default to java:/<emphasis>&lt;"
+"managedSession&gt;</emphasis>."
+msgstr ""
+
+#. Tag: emphasis
+#: Components.xml:1423
+#, no-c-format
+msgid "&lt;sessionFactory&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1424
+#, no-c-format
+msgid "org.jboss.seam.persistence.HibernateSessionFactory"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1426
+#, no-c-format
+msgid "Manages a Hibernate <literal>SessionFactory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1431
+#, no-c-format
+msgid ""
+"<literal>&lt;sessionFactory&gt;.cfgResourceName</literal> &#8212; the path "
+"to the configuration file. Default to <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+
+#. Tag: emphasis
+#: Components.xml:1443
+#, no-c-format
+msgid "&lt;managedQueueSender&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1444
+#, no-c-format
+msgid "org.jboss.seam.jms.ManagedQueueSender"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1446
+#, no-c-format
+msgid ""
+"Manager component for an event scoped managed JMS <literal>QueueSender</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1451
+#, no-c-format
+msgid ""
+"<emphasis>&lt;managedQueueSender&gt;</emphasis>.queueJndiName &#8212; the "
+"JNDI name of the JMS queue."
+msgstr ""
+
+#. Tag: emphasis
+#: Components.xml:1460
+#, no-c-format
+msgid "&lt;managedTopicPublisher&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1461
+#, no-c-format
+msgid "org.jboss.seam.jms.ManagedTopicPublisher"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1463
+#, no-c-format
+msgid ""
+"Manager component for an event scoped managed JMS <literal>TopicPublisher</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1468
+#, no-c-format
+msgid ""
+"<emphasis>&lt;managedTopicPublisher&gt;</emphasis>.topicJndiName &#8212; the "
+"JNDI name of the JMS topic."
+msgstr ""
+
+#. Tag: emphasis
+#: Components.xml:1477
+#, no-c-format
+msgid "&lt;managedWorkingMemory&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1478
+#, no-c-format
+msgid "org.jboss.seam.drools.ManagedWorkingMemory"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1480
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed Drools "
+"<literal>WorkingMemory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1485
+#, no-c-format
+msgid ""
+"<emphasis>&lt;managedWorkingMemory&gt;</emphasis>.ruleBase &#8212; a value "
+"expression that evaluates to an instance of <literal>RuleBase</literal>."
+msgstr ""
+
+#. Tag: emphasis
+#: Components.xml:1494
+#, no-c-format
+msgid "&lt;ruleBase&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1495
+#, no-c-format
+msgid "org.jboss.seam.drools.RuleBase"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1497
+#, no-c-format
+msgid ""
+"Manager component for an application scoped Drools <literal>RuleBase</"
+"literal>. <emphasis>Note that this is not really intended for production "
+"usage, since it does not support dynamic installation of new rules.</"
+"emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1504
+#, no-c-format
+msgid ""
+"<emphasis>&lt;ruleBase&gt;</emphasis>.ruleFiles &#8212; a list of files "
+"containing Drools rules."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1508
+#, no-c-format
+msgid ""
+"<emphasis>&lt;ruleBase&gt;</emphasis>.dslFile &#8212; a Drools DSL "
+"definition."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Concepts.pot
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Concepts.pot	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Concepts.pot	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1917 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-07-14 00:47+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Concepts.xml:6
+#, no-c-format
+msgid "The contextual component model"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:7
+#, no-c-format
+msgid ""
+"The two core concepts in Seam are the notion of a <emphasis>context</"
+"emphasis> and the notion of a <emphasis>component</emphasis>. Components are "
+"stateful objects, usually EJBs, and an instance of a component is associated "
+"with a context, and given a name in that context. <emphasis>Bijection</"
+"emphasis> provides a mechanism for aliasing internal component names "
+"(instance variables) to contextual names, allowing component trees to be "
+"dynamically assembled, and reassembled by Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:10
+#, no-c-format
+msgid "Let us start by describing the contexts built in to Seam."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:13
+#, no-c-format
+msgid "Seam contexts"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:14
+#, no-c-format
+msgid ""
+"Seam contexts are created and destroyed by the framework. The application "
+"does not control context demarcation via explicit Java API calls. Context "
+"are usually implicit. In some cases, however, contexts are demarcated via "
+"annotations."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:17
+#, no-c-format
+msgid "The basic Seam contexts are:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:22
+#, no-c-format
+msgid "<para>Stateless context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:27
+#, no-c-format
+msgid "Event (or request) context"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:32 Concepts.xml:147
+#, no-c-format
+msgid "<para>Page context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:37 Concepts.xml:152
+#, no-c-format
+msgid "<para>Conversation context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:42 Concepts.xml:157
+#, no-c-format
+msgid "<para>Session context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:47 Concepts.xml:162
+#, no-c-format
+msgid "<para>Business process context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:52 Concepts.xml:167
+#, no-c-format
+msgid "<para>Application context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:57
+#, no-c-format
+msgid ""
+"You will recognize some of these contexts from servlet and related "
+"specifications. However, two of them might be new to you: "
+"<emphasis>conversation context</emphasis>, and <emphasis>business process "
+"context</emphasis>. One reason state management in web applications is so "
+"fragile and error-prone is that the three built-in contexts (request, "
+"session and application) are not especially meaningful from the point of "
+"view of the business logic. A user login session, for example, is a fairly "
+"arbitrary construct in terms of the actual application work flow. Therefore, "
+"most Seam components are scoped to the conversation or business process "
+"contexts, since they are the contexts which are most meaningful in terms of "
+"the application."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:60
+#, no-c-format
+msgid "Let us look at each context in turn."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:63
+#, no-c-format
+msgid "<title>Stateless context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:64
+#, no-c-format
+msgid ""
+"Components which are truly stateless (stateless session beans, primarily) "
+"always live in the stateless context (this is really a non-context). "
+"Stateless components are not very interesting, and are arguably not very "
+"object-oriented. Nevertheless, they are important and often useful."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:67
+#, no-c-format
+msgid "<title>Event context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:68
+#, no-c-format
+msgid ""
+"The event context is the \"narrowest\" stateful context, and is a "
+"generalization of the notion of the web request context to cover other kinds "
+"of events. Nevertheless, the event context associated with the lifecycle of "
+"a JSF request is the most important example of an event context, and the one "
+"you will work with most often. Components associated with the event context "
+"are destroyed at the end of the request, but their state is available and "
+"well-defined for at least the lifecycle of the request."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:71
+#, no-c-format
+msgid ""
+"When you invoke a Seam component via RMI, or Seam Remoting, the event "
+"context is created and destroyed just for the invocation."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:74
+#, no-c-format
+msgid "<title>Page context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:75
+#, no-c-format
+msgid ""
+"The page context allows you to associate state with a particular instance of "
+"a rendered page. You can initialize state in your event listener, or while "
+"actually rendering the page, and then have access to it from any event that "
+"originates from that page. This is especially useful for functionality like "
+"clickable lists, where the list is backed by changing data on the server "
+"side. The state is actually serialized to the client, so this construct is "
+"extremely robust with respect to multi-window operation and the back button."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:78
+#, no-c-format
+msgid "<title>Conversation context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:79
+#, no-c-format
+msgid ""
+"The conversation context is a truly central concept in Seam. A "
+"<emphasis>conversation</emphasis> is a unit of work from the point of view "
+"of the user. It might span several interactions with the user, several "
+"requests, and several database transactions. But to the user, a conversation "
+"solves a single problem. For example, <emphasis>book hotel</emphasis>, "
+"<emphasis>approve contract</emphasis>, <emphasis>create order</emphasis> are "
+"all conversations. You might like to think of a conversation implementing a "
+"single <emphasis>use case</emphasis> or <emphasis>user story</emphasis>, but "
+"the relationship is not necessarily quite exact."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:82
+#, no-c-format
+msgid ""
+"A conversation holds state associated with <emphasis>what the user is doing "
+"now, in this window</emphasis>. A single user may have multiple "
+"conversations in progress at any point in time, usually in multiple windows. "
+"The conversation context allows us to ensure that state from the different "
+"conversations does not collide and cause bugs."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:88
+#, no-c-format
+msgid ""
+"Some conversations last for just a single request. Conversations that span "
+"multiple requests must be demarcated using annotations provided by Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:91
+#, no-c-format
+msgid ""
+"Some conversations are also <emphasis>tasks</emphasis>. A task is a "
+"conversation that is significant in terms of a long-running business "
+"process, and has the potential to trigger a business process state "
+"transition when it is successfully completed. Seam provides a special set of "
+"annotations for task demarcation."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:94
+#, no-c-format
+msgid ""
+"Conversations may be <emphasis>nested</emphasis>, with one conversation "
+"taking place \"inside\" a wider conversation. This is an advanced feature."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:97
+#, no-c-format
+msgid ""
+"Usually, conversation state is actually held by Seam in the servlet session "
+"between requests. Seam implements configurable <emphasis>conversation "
+"timeout</emphasis>, automatically destroying inactive conversations, and "
+"thus ensuring that the state held by a single user login session does not "
+"grow without bound if the user abandons conversations."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:100
+#, no-c-format
+msgid ""
+"Seam serializes processing of concurrent requests that take place in the "
+"same long-running conversation context, in the same process."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:103
+#, no-c-format
+msgid ""
+"Alternatively, Seam may be configured to keep conversational state in the "
+"client browser."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:106
+#, no-c-format
+msgid "<title>Session context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:107
+#, no-c-format
+msgid ""
+"A session context holds state associated with the user login session. While "
+"there are some cases where it is useful to share state between several "
+"conversations, we generally frown on the use of session context for holding "
+"components other than global information about the logged in user."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:110
+#, no-c-format
+msgid ""
+"In a JSR-168 portal environment, the session context represents the portlet "
+"session."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:113
+#, no-c-format
+msgid "<title>Business process context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:114
+#, no-c-format
+msgid ""
+"The business process context holds state associated with the long running "
+"business process. This state is managed and made persistent by the BPM "
+"engine (JBoss jBPM). The business process spans multiple interactions with "
+"multiple users, so this state is shared between multiple users, but in a "
+"well-defined manner. The current task determines the current business "
+"process instance, and the lifecycle of the business process is defined "
+"externally using a <emphasis>process definition language</emphasis>, so "
+"there are no special annotations for business process demarcation."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:117
+#, no-c-format
+msgid "<title>Application context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:118
+#, no-c-format
+msgid ""
+"The application context is the familiar servlet context from the servlet "
+"spec. Application context is mainly useful for holding static information "
+"such as configuration data, reference data or metamodels. For example, Seam "
+"stores its own configuration and metamodel in the application context."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:121
+#, no-c-format
+msgid "Context variables"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:122
+#, no-c-format
+msgid ""
+"A context defines a namespace, a set of <emphasis>context variables</"
+"emphasis>. These work much the same as session or request attributes in the "
+"servlet spec. You may bind any value you like to a context variable, but "
+"usually we bind Seam component instances to context variables."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:125
+#, no-c-format
+msgid ""
+"So, within a context, a component instance is identified by the context "
+"variable name (this is usually, but not always, the same as the component "
+"name). You may programatically access a named component instance in a "
+"particular scope via the <literal>Contexts</literal> class, which provides "
+"access to several thread-bound instances of the <literal>Context</literal> "
+"interface:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:128
+#, no-c-format
+msgid "User user = (User) Contexts.getSessionContext().get(\"user\");"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:129
+#, no-c-format
+msgid "You may also set or change the value associated with a name:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:132
+#, no-c-format
+msgid "Contexts.getSessionContext().set(\"user\", user);"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:133
+#, no-c-format
+msgid ""
+"Usually, however, we obtain components from a context via injection, and put "
+"component instances into a context via outjection."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:136
+#, no-c-format
+msgid "Context search priority"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:137
+#, no-c-format
+msgid ""
+"Sometimes, as above, component instances are obtained from a particular "
+"known scope. Other times, all stateful scopes are searched, in "
+"<emphasis>priority order</emphasis>. The order is as follows:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:142
+#, no-c-format
+msgid "<para>Event context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:172
+#, no-c-format
+msgid ""
+"You can perform a priority search by calling <literal>Contexts."
+"lookupInStatefulContexts()</literal>. Whenever you access a component by "
+"name from a JSF page, a priority search occurs."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:175
+#, no-c-format
+msgid "Concurrency model"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:176
+#, no-c-format
+msgid ""
+"Neither the servlet nor EJB specifications define any facilities for "
+"managing concurrent requests originating from the same client. The servlet "
+"container simply lets all threads run concurrently and leaves enforcing "
+"threadsafeness to application code. The EJB container allows stateless "
+"components to be accessed concurrently, and throws an exception if multiple "
+"threads access a stateful session bean."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:179
+#, no-c-format
+msgid ""
+"This behavior might have been okay in old-style web applications which were "
+"based around fine-grained, synchronous requests. But for modern applications "
+"which make heavy use of many fine-grained, asynchronous (AJAX) requests, "
+"concurrency is a fact of life, and must be supported by the programming "
+"model. Seam weaves a concurrency management layer into its context model."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:182
+#, no-c-format
+msgid ""
+"The Seam session and application contexts are multithreaded. Seam will allow "
+"concurrent requests in a context to be processed concurrently. The event and "
+"page contexts are by nature single threaded. The business process context is "
+"strictly speaking multi-threaded, but in practice concurrency is "
+"sufficiently rare that this fact may be disregarded most of the time. "
+"Finally, Seam enforces a <emphasis>single thread per conversation per "
+"process</emphasis> model for the conversation context by serializing "
+"concurrent requests in the same long-running conversation context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:185
+#, no-c-format
+msgid ""
+"Since the session context is multithreaded, and often contains volatile "
+"state, session scope components are always protected by Seam from concurrent "
+"access. Seam serializes requests to session scope session beans and "
+"JavaBeans by default (and detects and breaks any deadlocks that occur). This "
+"is not the default behaviour for application scoped components however, "
+"since application scoped components do not usually hold volatile state and "
+"because synchronization at the global level is <emphasis>extremely</"
+"emphasis> expensive. However, you can force a serialized threading model on "
+"any session bean or JavaBean component by adding the <literal>@Synchronized</"
+"literal> annotation."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:188
+#, no-c-format
+msgid ""
+"This concurrency model means that AJAX clients can safely use volatile "
+"session and conversational state, without the need for any special work on "
+"the part of the developer."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:191
+#, no-c-format
+msgid "Seam components"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:192
+#, no-c-format
+msgid ""
+"Seam components are POJOs (Plain Old Java Objects). In particular, they are "
+"JavaBeans or EJB 3.0 enterprise beans. While Seam does not require that "
+"components be EJBs and can even be used without an EJB 3.0 compliant "
+"container, Seam was designed with EJB 3.0 in mind and includes deep "
+"integration with EJB 3.0. Seam supports the following <emphasis>component "
+"types</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:197
+#, no-c-format
+msgid "EJB 3.0 stateless session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:202
+#, no-c-format
+msgid "EJB 3.0 stateful session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:207
+#, no-c-format
+msgid "EJB 3.0 entity beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:212
+#, no-c-format
+msgid "<para>JavaBeans</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:217
+#, no-c-format
+msgid "EJB 3.0 message-driven beans"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:222
+#, no-c-format
+msgid "Stateless session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:223
+#, no-c-format
+msgid ""
+"Stateless session bean components are not able to hold state across multiple "
+"invocations. Therefore, they usually work by operating upon the state of "
+"other components in the various Seam contexts. They may be used as JSF "
+"action listeners, but cannot provide properties to JSF components for "
+"display."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:226
+#, no-c-format
+msgid "Stateless session beans always live in the stateless context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:229
+#, no-c-format
+msgid ""
+"Stateless session beans are the least interesting kind of Seam component."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:232
+#, no-c-format
+msgid "Stateful session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:233
+#, no-c-format
+msgid ""
+"Stateful session bean components are able to hold state not only across "
+"multiple invocations of the bean, but also across multiple requests. "
+"Application state that does not belong in the database should usually be "
+"held by stateful session beans. This is a major difference between Seam and "
+"many other web application frameworks. Instead of sticking information about "
+"the current conversation directly in the <literal>HttpSession</literal>, you "
+"should keep it in instance variables of a stateful session bean that is "
+"bound to the conversation context. This allows Seam to manage the lifecycle "
+"of this state for you, and ensure that there are no collisions between state "
+"relating to different concurrent conversations."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:236
+#, no-c-format
+msgid ""
+"Stateful session beans are often used as JSF action listener, and as backing "
+"beans that provide properties to JSF components for display or form "
+"submission."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:239
+#, no-c-format
+msgid ""
+"By default, stateful session beans are bound to the conversation context. "
+"They may never be bound to the page or stateless contexts."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:242
+#, no-c-format
+msgid ""
+"Concurrent requests to session-scoped stateful session beans are always "
+"serialized by Seam."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:245
+#, no-c-format
+msgid "Entity beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:246
+#, no-c-format
+msgid ""
+"Entity beans may be bound to a context variable and function as a seam "
+"component. Because entities have a persistent identity in addition to their "
+"contextual identity, entity instances are usually bound explicitly in Java "
+"code, rather than being instantiated implicitly by Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:249
+#, no-c-format
+msgid ""
+"Entity bean components do not support bijection or context demarcation. Nor "
+"does invocation of an entity bean trigger validation."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:252
+#, no-c-format
+msgid ""
+"Entity beans are not usually used as JSF action listeners, but do often "
+"function as backing beans that provide properties to JSF components for "
+"display or form submission. In particular, it is common to use an entity as "
+"a backing bean, together with a stateless session bean action listener to "
+"implement create/update/delete type functionality."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:255
+#, no-c-format
+msgid ""
+"By default, entity beans are bound to the conversation context. They may "
+"never be bound to the stateless context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:258
+#, no-c-format
+msgid ""
+"Note that it in a clustered environment is somewhat less efficient to bind "
+"an entity bean directly to a conversation or session scoped Seam context "
+"variable than it would be to hold a reference to the entity bean in a "
+"stateful session bean. For this reason, not all Seam applications define "
+"entity beans to be Seam components."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:261
+#, no-c-format
+msgid "<title>JavaBeans</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:262
+#, no-c-format
+msgid ""
+"Javabeans may be used just like a stateless or stateful session bean. "
+"However, they do not provide the functionality of a session bean "
+"(declarative transaction demarcation, declarative security, efficient "
+"clustered state replication, EJB 3.0 persistence, timeout methods, etc)."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:265
+#, no-c-format
+msgid ""
+"In a later chapter, we show you how to use Seam and Hibernate without an EJB "
+"container. In this use case, components are JavaBeans instead of session "
+"beans. Note, however, that in many application servers it is somewhat less "
+"efficient to cluster conversation or session scoped Seam JavaBean components "
+"than it is to cluster stateful session bean components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:268
+#, no-c-format
+msgid "By default, JavaBeans are bound to the event context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:271
+#, no-c-format
+msgid ""
+"Concurrent requests to session-scoped JavaBeans are always serialized by "
+"Seam."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:274
+#, no-c-format
+msgid "Message-driven beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:275
+#, no-c-format
+msgid ""
+"Message-driven beans may function as a seam component. However, message-"
+"driven beans are called quite differently to other Seam components - instead "
+"of invoking them via the context variable, they listen for messages sent to "
+"a JMS queue or topic."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:278
+#, no-c-format
+msgid ""
+"Message-driven beans may not be bound to a Seam context. Nor do they have "
+"access to the session or conversation state of their \"caller\". However, "
+"they do support bijection and some other Seam functionality."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:281
+#, no-c-format
+msgid "Interception"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:282
+#, no-c-format
+msgid ""
+"In order to perform its magic (bijection, context demarcation, validation, "
+"etc), Seam must intercept component invocations. For JavaBeans, Seam is in "
+"full control of instantiation of the component, and no special configuration "
+"is needed. For entity beans, interception is not required since bijection "
+"and context demarcation are not defined. For session beans, we must register "
+"an EJB interceptor for the session bean component. We could use an "
+"annotation, as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:285
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:286
+#, no-c-format
+msgid ""
+"But a much better way is to define the interceptor in <literal>ejb-jar.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:289
+#, no-c-format
+msgid ""
+"&lt;interceptors&gt;\n"
+"   &lt;interceptor&gt;\n"
+"      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"   &lt;/interceptor&gt;\n"
+"&lt;/interceptors&gt;\n"
+"   \n"
+"&lt;assembly-descriptor&gt;\n"
+"   &lt;interceptor-binding&gt;\n"
+"      &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"   &lt;/interceptor-binding&gt;\n"
+"&lt;/assembly-descriptor&gt;"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:290
+#, no-c-format
+msgid "Component names"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:291
+#, no-c-format
+msgid ""
+"All seam components need a name. We can assign a name to a component using "
+"the <literal>@Name</literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:294
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:295
+#, no-c-format
+msgid ""
+"This name is the <emphasis>seam component name</emphasis> and is not related "
+"to any other name defined by the EJB specification. However, seam component "
+"names work just like JSF managed bean names and you can think of the two "
+"concepts as identical."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:298
+#, no-c-format
+msgid ""
+"<literal>@Name</literal> is not the only way to define a component name, but "
+"we always need to specify the name <emphasis>somewhere</emphasis>. If we do "
+"not, then none of the other Seam annotations will function."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:301
+#, no-c-format
+msgid ""
+"Just like in JSF, a seam component instance is usually bound to a context "
+"variable with the same name as the component name. So, for example, we would "
+"access the <literal>LoginAction</literal> using <literal>Contexts."
+"getStatelessContext().get(\"loginAction\")</literal>. In particular, "
+"whenever Seam itself instantiates a component, it binds the new instance to "
+"a variable with the component name. However, again like JSF, it is possible "
+"for the application to bind a component to some other context variable by "
+"programmatic API call. This is only useful if a particular component serves "
+"more than one role in the system. For example, the currently logged in "
+"<literal>User</literal> might be bound to the <literal>currentUser</literal> "
+"session context variable, while a <literal>User</literal> that is the "
+"subject of some administration functionality might be bound to the "
+"<literal>user</literal> conversation context variable."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:304
+#, no-c-format
+msgid ""
+"For very large applications, and for built-in seam components, qualified "
+"names are often used."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:307
+#, no-c-format
+msgid ""
+"@Name(\"com.jboss.myapp.loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:308
+#, no-c-format
+msgid ""
+"We may use the qualified component name both in Java code and in JSF&#39;s "
+"expression language:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:311
+#, no-c-format
+msgid ""
+"&lt;h:commandButton type=\"submit\" value=\"Login\"\n"
+"                 action=\"#{com.jboss.myapp.loginAction.login}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:312
+#, no-c-format
+msgid ""
+"Since this is noisy, Seam also provides a means of aliasing a qualified name "
+"to a simple name. Add a line like this to the <literal>components.xml</"
+"literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:315
+#, no-c-format
+msgid ""
+"&lt;factory name=\"loginAction\" scope=\"STATELESS\" value=\"#{com.jboss."
+"myapp.loginAction}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:316
+#, no-c-format
+msgid ""
+"All of the built-in Seam components have qualified names, but most of them "
+"are aliased to a simple name by the <literal>components.xml</literal> file "
+"included in the Seam jar."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:319
+#, no-c-format
+msgid "Defining the component scope"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:320
+#, no-c-format
+msgid ""
+"We can override the default scope (context) of a component using the "
+"<literal>@Scope</literal> annotation. This lets us define what context a "
+"component instance is bound to, when it is instantiated by Seam."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:323
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(SESSION)\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:324
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.ScopeType</literal> defines an enumeration of "
+"possible scopes."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:327
+#, no-c-format
+msgid "Components with multiple roles"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:328
+#, no-c-format
+msgid ""
+"Some Seam component classes can fulfill more than one role in the system. "
+"For example, we often have a <literal>User</literal> class which is usually "
+"used as a session-scoped component representing the current user but is used "
+"in user administration screens as a conversation-scoped component. The "
+"<literal>@Role</literal> annotation lets us define an additional named role "
+"for a component, with a different scope; it lets us bind the same component "
+"class to different context variables. (Any Seam component "
+"<emphasis>instance</emphasis> may be bound to multiple context variables, "
+"but this lets us do it at the class level, and take advantage of auto-"
+"instantiation.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:331
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(CONVERSATION)\n"
+"@Role(name=\"currentUser\", scope=SESSION)\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:332
+#, no-c-format
+msgid ""
+"The <literal>@Roles</literal> annotation lets us specify as many additional "
+"roles as we like."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:335
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(CONVERSATION)\n"
+"@Roles({@Role(name=\"currentUser\", scope=SESSION)\n"
+"        @Role(name=\"tempUser\", scope=EVENT)})\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:336
+#, no-c-format
+msgid "Built-in components"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:337
+#, no-c-format
+msgid ""
+"Like many good frameworks, Seam eats its own dogfood and is implemented "
+"mostly as a set of built-in Seam interceptors (see later) and Seam "
+"components. This makes it easy for applications to interact with built-in "
+"components at runtime or even customize the basic functionality of Seam by "
+"replacing the built-in components with custom implementations. The built-in "
+"components are defined in the Seam namespace <literal>org.jboss.seam.core</"
+"literal> and the Java package of the same name."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:340
+#, no-c-format
+msgid ""
+"The built-in components may be injected, just like any Seam components, but "
+"they also provide convenient static <literal>instance()</literal> methods:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:343
+#, no-c-format
+msgid "FacesMessages.instance().add(\"Welcome back, #{user.name}!\");"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:344
+#, no-c-format
+msgid ""
+"Seam was designed to integrate tightly in a Java EE 5 environment. However, "
+"we understand that there are many projects which are not running in a full "
+"EE environment. We also realize the critical importance of easy unit and "
+"integration testing using frameworks such as TestNG and JUnit. So, we have "
+"made it easy to run Seam in Java SE environments by allowing you to boostrap "
+"certain critical infrastructure normally only found in EE environments by "
+"installing built-in Seam components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:347
+#, no-c-format
+msgid ""
+"For example, you can run your EJB3 components in Tomcat or an integration "
+"test suite just by installing the built-in component <literal>org.jboss.seam."
+"core.ejb</literal>, which automatically bootstraps the JBoss Embeddable EJB3 "
+"container and deploys your EJB components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:350
+#, no-c-format
+msgid ""
+"Or, if you are not quite ready for the Brave New World of EJB 3.0, you can "
+"write a Seam application that uses only JavaBean components, together with "
+"Hibernate3 for persistence, by installing a built-in component that manages "
+"a Hibernate <literal>SessionFactory</literal>. When using Hibernate outside "
+"of a J2EE environment, you will also probably need a JTA transaction manager "
+"and JNDI server, which are available via the built-in component <literal>org."
+"jboss.seam.core.microcontainer</literal>. This lets you use the bulletproof "
+"JTA/JCA pooling datasource from JBoss application server in an SE "
+"environment like Tomcat."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:353
+#, no-c-format
+msgid "Bijection"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:354
+#, no-c-format
+msgid ""
+"<emphasis>Dependency injection</emphasis> or <emphasis>inversion of control</"
+"emphasis> is by now a familiar concept to most Java developers. Dependency "
+"injection allows a component to obtain a reference to another component by "
+"having the container <emphasis>inject</emphasis> the other component to a "
+"setter method or instance variable. In all dependency injection "
+"implementations that we have seen, injection occurs when the component is "
+"constructed, and the reference does not subsequently change for the lifetime "
+"of the component instance. For stateless components, this is reasonable. "
+"From the point of view of a client, all instances of a particular stateless "
+"component are interchangeable. On the other hand, Seam emphasizes the use of "
+"stateful components. So traditional dependency injection is no longer a very "
+"useful construct. Seam introduces the notion of <emphasis>bijection</"
+"emphasis> as a generalization of injection. In contrast to injection, "
+"bijection is:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:359
+#, no-c-format
+msgid ""
+"<emphasis>contextual</emphasis> - bijection is used to assemble stateful "
+"components from various different contexts (a component from a "
+"<emphasis>wider</emphasis> context may even have a reference to a component "
+"from a <emphasis>narrower</emphasis> context)"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:364
+#, no-c-format
+msgid ""
+"<emphasis>bidirectional</emphasis> - values are injected from context "
+"variables into attributes of the component being invoked, and also "
+"<emphasis>outjected</emphasis> from the component attributes back out to the "
+"context, allowing the component being invoked to manipulate the values of "
+"contextual variables simply by setting its own instance variables"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:369
+#, no-c-format
+msgid ""
+"<emphasis>dynamic</emphasis> - since the value of contextual variables "
+"changes over time, and since Seam components are stateful, bijection takes "
+"place every time a component is invoked"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:374
+#, no-c-format
+msgid ""
+"In essence, bijection lets you alias a context variable to a component "
+"instance variable, by specifying that the value of the instance variable is "
+"injected, outjected, or both. Of course, we use annotations to enable "
+"bijection."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:377
+#, no-c-format
+msgid ""
+"The <literal>@In</literal> annotation specifies that a value should be "
+"injected, either into an instance variable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:380
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:381
+#, no-c-format
+msgid "or into a setter method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:384
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @In\n"
+"    public void setUser(User user) {\n"
+"        this.user=user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:385
+#, no-c-format
+msgid ""
+"By default, Seam will do a priority search of all contexts, using the name "
+"of the property or instance variable that is being injected. You may wish to "
+"specify the context variable name explicitly, using, for example, "
+"<literal>@In(\"currentUser\")</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:388
+#, no-c-format
+msgid ""
+"If you want Seam to create an instance of the component when there is no "
+"existing component instance bound to the named context variable, you should "
+"specify <literal>@In(create=true)</literal>. If the value is optional (it "
+"can be null), specify <literal>@In(required=false)</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:391
+#, no-c-format
+msgid ""
+"For some components, it can be repetitive to have to specify <literal>@In"
+"(create=true)</literal> everywhere they are used. In such cases, you can "
+"annotate the component <literal>@AutoCreate</literal>, and then it will "
+"always be created, whenever needed, even without the explicit use of "
+"<literal>create=true</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:394
+#, no-c-format
+msgid "You can even inject the value of an expression:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:397
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In(\"#{user.username}\") String username;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:398
+#, no-c-format
+msgid ""
+"(There is much more information about component lifecycle and injection in "
+"the next chapter.)"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:401
+#, no-c-format
+msgid ""
+"The <literal>@Out</literal> annotation specifies that an attribute should be "
+"outjected, either from an instance variable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:404
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @Out User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:405
+#, no-c-format
+msgid "or from a getter method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:408
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @Out\n"
+"    public User getUser() {\n"
+"        return user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:409
+#, no-c-format
+msgid "An attribute may be both injected and outjected:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:412
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In @Out User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:413
+#, no-c-format
+msgid "<para>or:</para>"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:416
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @In\n"
+"    public void setUser(User user) {\n"
+"        this.user=user;\n"
+"    }\n"
+"    \n"
+"    @Out\n"
+"    public User getUser() {\n"
+"        return user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:417
+#, no-c-format
+msgid "Lifecycle methods"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:418
+#, no-c-format
+msgid ""
+"Session bean and entity bean Seam components support all the usual EJB 3.0 "
+"lifecycle callback (<literal>@PostConstruct</literal>, <literal>@PreDestroy</"
+"literal>, etc). Seam extends all of these callbacks except "
+"<literal>@PreDestroy</literal> to JavaBean components. But Seam also defines "
+"its own component lifecycle callbacks."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:421
+#, no-c-format
+msgid ""
+"The <literal>@Create</literal> method is called every time Seam instantiates "
+"a component. Unlike the <literal>@PostConstruct</literal> method, this "
+"method is called after the component is fully constructed by the EJB "
+"container, and has access to all the usual Seam functionality (bijection, "
+"etc). Components may define only one <literal>@Create</literal> method."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:424
+#, no-c-format
+msgid ""
+"The <literal>@Destroy</literal> method is called when the context that the "
+"Seam component is bound to ends. Components may define only one "
+"<literal>@Destroy</literal> method. Stateful session bean components "
+"<emphasis>must</emphasis> define a method annotated <literal>@Destroy "
+"@Remove</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:427
+#, no-c-format
+msgid ""
+"Finally, a related annotation is the <literal>@Startup</literal> annotation, "
+"which may be applied to any application or session scoped component. The "
+"<literal>@Startup</literal> annotation tells Seam to instantiate the "
+"component immediately, when the context begins, instead of waiting until it "
+"is first referenced by a client. It is possible to control the order of "
+"instantiation of startup components by specifying <literal>@Startup(depends="
+"{....})</literal>."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:430
+#, no-c-format
+msgid "Conditional installation"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:431
+#, no-c-format
+msgid ""
+"The <literal>@Install</literal> annotation lets you control conditional "
+"installation of components that are required in some deployment scenarios "
+"and not in others. This is useful if:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:436
+#, no-c-format
+msgid "You want to mock out some infrastructural component in tests."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:441
+#, no-c-format
+msgid ""
+"You want change the implementation of a component in certain deployment "
+"scenarios."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:446
+#, no-c-format
+msgid ""
+"You want to install some components only if their dependencies are available "
+"(useful for framework authors)."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:451
+#, no-c-format
+msgid ""
+"<literal>@Install</literal> works by letting you specify "
+"<emphasis>precedence</emphasis> and <emphasis>dependencies</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:454
+#, no-c-format
+msgid ""
+"The precedence of a component is a number that Seam uses to decide which "
+"component to install when there are multiple classes with the same component "
+"name in the classpath. Seam will choose the component with the higher "
+"precendence. There are some predefined precedence values (in ascending "
+"order):"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:459
+#, no-c-format
+msgid ""
+"<literal>BUILT_IN</literal> &mdash; the lowest precedece components are the "
+"components built in to Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:464
+#, no-c-format
+msgid ""
+"<literal>FRAMEWORK</literal> &mdash; components defined by third-party "
+"frameworks may override built-in components, but are overridden by "
+"application components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:469
+#, no-c-format
+msgid ""
+"<literal>APPLICATION</literal> &mdash; the default precedence. This is "
+"appropriate for most application components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:474
+#, no-c-format
+msgid ""
+"<literal>DEPLOYMENT</literal> &mdash; for application components which are "
+"deployment-specific."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:479
+#, no-c-format
+msgid "<literal>MOCK</literal> &mdash; for mock objects used in testing."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:484
+#, no-c-format
+msgid ""
+"Suppose we have a component named <literal>messageSender</literal> that "
+"talks to a JMS queue."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:487
+#, no-c-format
+msgid ""
+"@Name(\"messageSender\") \n"
+"public class MessageSender {\n"
+"    public void sendMessage() {\n"
+"        //do something with JMS\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:488
+#, no-c-format
+msgid ""
+"In our unit tests, we don not have a JMS queue available, so we would like "
+"to stub out this method. We will create a <emphasis>mock</emphasis> "
+"component that exists in the classpath when unit tests are running, but is "
+"never deployed with the application:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:491
+#, no-c-format
+msgid ""
+"@Name(\"messageSender\") \n"
+"@Install(precedence=MOCK)\n"
+"public class MockMessageSender extends MessageSender {\n"
+"    public void sendMessage() {\n"
+"        //do nothing!\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:492
+#, no-c-format
+msgid ""
+"The <literal>precedence</literal> helps Seam decide which version to use "
+"when it finds both components in the classpath."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:495
+#, no-c-format
+msgid ""
+"If we are able to control exactly which classes are in the classpath then "
+"this will work well, however if you are writing reusable framwork with many "
+"dependecies you will not wish to break that framework across numerious jars. "
+"You will wish to decide which components to install depending upon what "
+"other components are installed, and upon what classes are available in the "
+"classpath. The <literal>@Install</literal> annotation also controls this "
+"functionality. Seam uses this mechanism internally to enable conditional "
+"installation of many of the built-in components. However, you probably will "
+"not need to use it in your application."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:498
+#, no-c-format
+msgid "Logging"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:499
+#, no-c-format
+msgid "Below is the code for a simple log message in Java:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:502
+#, no-c-format
+msgid ""
+"private static final Log log = LogFactory.getLog(CreateOrderAction.class);\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    if ( log.isDebugEnabled() ) {\n"
+"        log.debug(\"Creating new order for user: \" + user.username() + \n"
+"            \" product: \" + product.name() \n"
+"            + \" quantity: \" + quantity);\n"
+"    }\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:506
+#, no-c-format
+msgid "Seam provides a logging API that simplifies this code significantly:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:509
+#, no-c-format
+msgid ""
+"@Logger private Log log;\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    log.debug(\"Creating new order for user: #0 product: #1 quantity: #2\", "
+"user.username(), \n"
+"      product.name(), quantity);\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:510
+#, no-c-format
+msgid ""
+"It does not matter if you declare the <literal>log</literal> variable static "
+"or not; it will work either way, except for entity bean components which "
+"require the <literal>log</literal> variable to be static."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:514
+#, no-c-format
+msgid ""
+"We do not need the <literal>if ( log.isDebugEnabled() )</literal> guard, "
+"since string concatenation happens <emphasis>inside</emphasis> the "
+"<literal>debug()</literal> method. Also the log category does not need to be "
+"specified explicitly, since Seam knows what component it is injecting the "
+"<literal>Log</literal> into."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:518
+#, no-c-format
+msgid ""
+"If <literal>User</literal> and <literal>Product</literal> are Seam "
+"components available in the current contexts, it gets even better:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:521
+#, no-c-format
+msgid ""
+"@Logger private Log log;\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    log.debug(\"Creating new order for user: #{user.username} product: #"
+"{product.name} \n"
+"      quantity: #0\", quantity);\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:522
+#, no-c-format
+msgid ""
+"Seam logging automagically chooses whether to send output to log4j or JDK "
+"logging. If log4j is in the classpath, Seam with use it. If it is not, Seam "
+"will use JDK logging."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:525
+#, no-c-format
+msgid ""
+"The <literal>Mutable</literal> interface and <literal>@ReadOnly</literal>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:526
+#, no-c-format
+msgid ""
+"Many application servers feature an amazingly broken implementation of "
+"<literal>HttpSession</literal> clustering, where changes to the state of "
+"mutable objects bound to the session are only replicated when the "
+"application calls <literal>setAttribute()</literal> explicitly. This is a "
+"source of bugs that can not effectively be tested for at development time, "
+"since they will only manifest when failover occurs. Furthermore, the actual "
+"replication message contains the entire serialized object graph bound to the "
+"session attribute, which is inefficient."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:529
+#, no-c-format
+msgid ""
+"Of course, EJB stateful session beans must perform automatic dirty checking "
+"and replication of mutable state and a sophisticated EJB container can "
+"introduce optimizations such as attribute-level replication. Unfortunately, "
+"not all Seam users have the good fortune to be working in an environment "
+"that supports EJB 3.0. So, for session and conversation scoped JavaBean and "
+"entity bean components, Seam provides an extra layer of cluster-safe state "
+"management over the top of the web container session clustering."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:532
+#, no-c-format
+msgid ""
+"For session or conversation scoped JavaBean components, Seam automatically "
+"forces replication to occur by calling <literal>setAttribute()</literal> "
+"once in every request that the component was invoked by the application. Of "
+"course, this strategy is inefficient for read-mostly components. You can "
+"control this behavior by implementing the <literal>org.jboss.seam.core."
+"Mutable</literal> interface, or by extending <literal>org.jboss.seam.core."
+"AbstractMutable</literal>, and writing your own dirty-checking logic inside "
+"the component. For example,"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:535
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class Account extends AbstractMutable\n"
+"{\n"
+"    private BigDecimal balance;\n"
+"    \n"
+"    public void setBalance(BigDecimal balance)\n"
+"    {\n"
+"        setDirty(this.balance, balance);\n"
+"        this.balance = balance;\n"
+"    }\n"
+"    \n"
+"    public BigDecimal getBalance()\n"
+"    {\n"
+"        return balance;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:536
+#, no-c-format
+msgid ""
+"Or, you can use the <literal>@ReadOnly</literal> annotation to achieve a "
+"similar effect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:539
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class Account\n"
+"{\n"
+"    private BigDecimal balance;\n"
+"    \n"
+"    public void setBalance(BigDecimal balance)\n"
+"    {\n"
+"        this.balance = balance;\n"
+"    }\n"
+"    \n"
+"    @ReadOnly\n"
+"    public BigDecimal getBalance()\n"
+"    {\n"
+"        return balance;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:540
+#, no-c-format
+msgid ""
+"For session or conversation scoped entity bean components, Seam "
+"automatically forces replication to occur by calling <literal>setAttribute()"
+"</literal> once in every request, <emphasis>unless the (conversation-scoped) "
+"entity is currently associated with a Seam-managed persistence context, in "
+"which case no replication is needed</emphasis>. This strategy is not "
+"necessarily efficient, so session or conversation scope entity beans should "
+"be used with care. You can always write a stateful session bean or JavaBean "
+"component to <emphasis>manage</emphasis> the entity bean instance. For "
+"example,"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:543
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"account\")\n"
+"public class AccountManager extends AbstractMutable\n"
+"{\n"
+"    private Account account; // an entity bean\n"
+"    \n"
+"    @Unwrap\n"
+"    public void getAccount()\n"
+"    {\n"
+"        return account;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:545
+#, no-c-format
+msgid ""
+"Note that the <literal>EntityHome</literal> class in the Seam Application "
+"Framework provides a great example of this pattern."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:549
+#, no-c-format
+msgid "Factory and manager components"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:550
+#, no-c-format
+msgid ""
+"We often need to work with objects that are not Seam components. But we "
+"still want to be able to inject them into our components using <literal>@In</"
+"literal> and use them in value and method binding expressions, etc. "
+"Sometimes, we even need to tie them into the Seam context lifecycle "
+"(<literal>@Destroy</literal>, for example). So the Seam contexts can contain "
+"objects which are not Seam components, and Seam provides a couple of nice "
+"features that make it easier to work with non-component objects bound to "
+"contexts."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:553
+#, no-c-format
+msgid ""
+"The <emphasis>factory component pattern</emphasis> lets a Seam component act "
+"as the instantiator for a non-component object. A <emphasis>factory method</"
+"emphasis> will be called when a context variable is referenced but has no "
+"value bound to it. We define factory methods using the <literal>@Factory</"
+"literal> annotation. The factory method binds a value to the context "
+"variable, and determines the scope of the bound value. There are two styles "
+"of factory method. The first style returns a value, which is bound to the "
+"context by Seam:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:556
+#, no-c-format
+msgid ""
+"@Factory(scope=CONVERSATION)\n"
+"public List&lt;Customer&gt; getCustomerList() { \n"
+"    return ... ;\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:557
+#, no-c-format
+msgid ""
+"The second style is a method of type <literal>void</literal> which binds the "
+"value to the context variable itself:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:560
+#, no-c-format
+msgid ""
+"@DataModel List&lt;Customer&gt; customerList;\n"
+"\n"
+"@Factory(\"customerList\")\n"
+"public void initCustomerList() { \n"
+"    customerList = ...  ;\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:561
+#, no-c-format
+msgid ""
+"In both cases, the factory method is called when we reference the "
+"<literal>customerList</literal> context variable and its value is null, and "
+"then has no further part to play in the lifecycle of the value. An even more "
+"powerful pattern is the <emphasis>manager component pattern</emphasis>. In "
+"this case, we have a Seam component that is bound to a context variable, "
+"that manages the value of the context variable, while remaining invisible to "
+"clients."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:564
+#, no-c-format
+msgid ""
+"A manager component is any component with an <literal>@Unwrap</literal> "
+"method. This method returns the value that will be visable to clients, and "
+"is called <emphasis>every time</emphasis> a context variable is referenced."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:567
+#, no-c-format
+msgid ""
+"@Name(\"customerList\")\n"
+"@Scope(CONVERSATION)\n"
+"public class CustomerListManager\n"
+"{\n"
+"    ...\n"
+"    \n"
+"    @Unwrap\n"
+"    public List&lt;Customer&gt; getCustomerList() { \n"
+"        return ... ;\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:568
+#, no-c-format
+msgid ""
+"This pattern is especially useful if we have some heavyweight object that "
+"needs a cleanup operation when the context ends. In this case, the manager "
+"component may perform cleanup in the <literal>@Destroy</literal> method."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Configuration.pot
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Configuration.pot	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Configuration.pot	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1566 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-07-14 00:47+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Configuration.xml:6
+#, no-c-format
+msgid "Configuring Seam and packaging Seam applications"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:7
+#, no-c-format
+msgid ""
+"Configuration is a very boring topic and an extremely tedious pastime. "
+"Unfortunately, several lines of XML are required to integrate Seam into your "
+"JSF implementation and servlet container. There is no need to be too put off "
+"by the following sections; you will never need to type any of this stuff "
+"yourself, since you can just copy and paste from the example applications."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:10
+#, no-c-format
+msgid "Basic Seam configuration"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:11
+#, no-c-format
+msgid ""
+"First, let us look at the basic configuration that is needed whenever we use "
+"Seam with JSF."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:14
+#, no-c-format
+msgid "Integrating Seam with JSF and your servlet container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:15
+#, no-c-format
+msgid ""
+"Seam requires the following entry in your <literal>web.xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:18
+#, no-c-format
+msgid ""
+"&lt;listener&gt;\n"
+"    &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/listener-"
+"class&gt;\n"
+"&lt;/listener&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:19
+#, no-c-format
+msgid ""
+"This listener is responsible for bootstrapping Seam, and for destroying "
+"session and application contexts."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:22
+#, no-c-format
+msgid ""
+"To integrate with the JSF request lifecycle, we also need a JSF "
+"<literal>PhaseListener</literal> registered in in the <literal>faces-config."
+"xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:25
+#, no-c-format
+msgid ""
+"&lt;lifecycle&gt;\n"
+"    &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-"
+"listener&gt;\n"
+"&lt;/lifecycle&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:26
+#, no-c-format
+msgid ""
+"The actual listener class here varies depending upon how you want to manage "
+"transaction demarcation (more on this below)."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:29
+#, no-c-format
+msgid ""
+"If you are using Sun&#39;s JSF 1.2 reference implementation, you should also "
+"add this to <literal>faces-config.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:32
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;el-resolver&gt;org.jboss.seam.jsf.SeamELResolver&lt;/el-"
+"resolver&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:33
+#, no-c-format
+msgid ""
+"(This line should not strictly speaking be necessary, but it works around a "
+"minor bug in the RI.)"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:36
+#, no-c-format
+msgid ""
+"Some JSF implementations have a broken implementation of server-side state "
+"saving that interferes with Seam&#39;s conversation propagation. If you have "
+"problems with conversation propagation during form submissions, try "
+"switching to client-side state saving. You will need this in <literal>web."
+"xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:39
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;client&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:40
+#, no-c-format
+msgid "Seam Resource Servlet"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:41
+#, no-c-format
+msgid ""
+"The Seam Resource Servlet provides resources used by Seam Remoting, captchas "
+"(see the security chapter) and some JSF UI controls. Configuring the Seam "
+"Resource Servlet requires the following entry in <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:44
+#, no-c-format
+msgid ""
+"&lt;servlet&gt;\n"
+"  &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"  &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"    \n"
+"&lt;servlet-mapping&gt;\n"
+"  &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"  &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:45
+#, no-c-format
+msgid "Seam servlet filters"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:46
+#, no-c-format
+msgid ""
+"Seam does not need any servlet filters for basic operation. However, there "
+"are several features which depend upon the use of filters. To make things "
+"easier for you guys, Seam lets you add and configure servlet filters just "
+"like you would configure other built-in Seam components. To take advantage "
+"of this feature, we must first install a master filter in <literal>web.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:49
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;/*&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:50
+#, no-c-format
+msgid "Adding the master filter enables the following built-in filters."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:53
+#, no-c-format
+msgid "Exception handling"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:54
+#, no-c-format
+msgid ""
+"This filter provides the exception mapping functionality in <literal>pages."
+"xml</literal> (almost all applications will need this). It also takes care "
+"of rolling back uncommitted transactions when uncaught exceptions occur. "
+"(According to the Java EE specification, the web container should do this "
+"automatically, but we have found that this behavior cannot be relied upon in "
+"all application servers. And it is certainly not required of plain servlet "
+"engines like Tomcat.)"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:57
+#, no-c-format
+msgid ""
+"By default, the exception handling filter will process all requests, however "
+"this behavior may be adjusted by adding a <literal>&lt;web:exception-"
+"filter&gt;</literal> entry to <literal>components.xml</literal>, as shown in "
+"this example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:60
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:web=\"http://jboss.com/products/seam/web\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                                                      http://jboss.com/"
+"products/seam/core-1.2.xsd\n"
+"                 http://jboss.com/products/seam/components \n"
+"                                                      http://jboss.com/"
+"products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/web \n"
+"                                                      http://jboss.com/"
+"products/seam/web-1.2.xsd\"&gt;\n"
+"\n"
+"    &lt;web:exception-filter url-pattern=\"*.seam\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:63 Configuration.xml:78 Configuration.xml:100
+#: Configuration.xml:125
+#, no-c-format
+msgid ""
+"<literal>url-pattern</literal> &mdash; Used to specify which requests are "
+"filtered, the default is all requests."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:68
+#, no-c-format
+msgid "Conversation propagation with redirects"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:69
+#, no-c-format
+msgid ""
+"This filter allows Seam to propagate the conversation context across browser "
+"redirects. It intercepts any browser redirects and adds a request parameter "
+"that specifies the Seam conversation identifier."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:72
+#, no-c-format
+msgid ""
+"The redirect filter will process all requests by default, but this behavior "
+"can also be adjusted in <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:75
+#, no-c-format
+msgid "&lt;web:redirect-filter url-pattern=\"*.seam\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:83
+#, no-c-format
+msgid "Multipart form submissions"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:84
+#, no-c-format
+msgid ""
+"This feature is necessary when using the Seam file upload JSF control. It "
+"detects multipart form requests and processes them according to the "
+"multipart/form-data specification (RFC-2388). To override the default "
+"settings, add the following entry to <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:87
+#, no-c-format
+msgid ""
+"&lt;web:multipart-filter create-temp-files=\"true\" \n"
+"        max-request-size=\"1000000\" \n"
+"        url-pattern=\"*.seam\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:90
+#, no-c-format
+msgid ""
+"<literal>create-temp-files</literal> &mdash; If set to <literal>true</"
+"literal>, uploaded files are written to a temporary file (instead of held in "
+"memory). This may be an important consideration if large file uploads are "
+"expected. The default setting is <literal>false</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:95
+#, no-c-format
+msgid ""
+"<literal>max-request-size</literal> &mdash; If the size of a file upload "
+"request (determined by reading the <literal>Content-Length</literal> header "
+"in the request) exceeds this value, the request will be aborted. The default "
+"setting is 0 (no size limit)."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:105
+#, no-c-format
+msgid "Character encoding"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:106
+#, no-c-format
+msgid "Sets the character encoding of submitted form data."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:109 Configuration.xml:137
+#, no-c-format
+msgid ""
+"This filter is not installed by default and requires an entry in "
+"<literal>components.xml</literal> to enable it:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:112
+#, no-c-format
+msgid ""
+"&lt;web:character-encoding-filter encoding=\"UTF-16\" \n"
+"        override-client=\"true\" \n"
+"        url-pattern=\"*.seam\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:115
+#, no-c-format
+msgid "<literal>encoding</literal> &mdash; The encoding to use."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:120
+#, no-c-format
+msgid ""
+"<literal>override-client</literal> &mdash; If this is set to <literal>true</"
+"literal>, the request encoding will be set to whatever is specified by "
+"<literal>encoding</literal> no matter whether the request already specifies "
+"an encoding or not. If set to <literal>false</literal>, the request encoding "
+"will only be set if the request does not already specify an encoding. The "
+"default setting is <literal>false</literal>."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:130
+#, no-c-format
+msgid "Context management for custom servlets"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:131
+#, no-c-format
+msgid ""
+"Requests sent direct to some servlet other than the JSF servlet are not "
+"processed through the JSF lifecycle, so Seam provides a servlet filter that "
+"can be applied to any other servlet that needs access to Seam components."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:134
+#, no-c-format
+msgid ""
+"This filter allows custom servlets to interact with the Seam contexts. It "
+"sets up the Seam contexts at the beginning of each request, and tears them "
+"down at the end of the request. You should make sure that this filter is "
+"<emphasis>never</emphasis> applied to the JSF <literal>FacesServlet</"
+"literal>. Seam uses the phase listener for context management in a JSF "
+"request."
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:140
+#, no-c-format
+msgid "&lt;web:context-filter url-pattern=\"/media/*\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:143
+#, no-c-format
+msgid ""
+"<literal>url-pattern</literal> &mdash; Used to specify which requests are "
+"filtered, the default is all requests. If the url-pattern is specified for "
+"the context filter, then the filter will be enabled (unless explicitly "
+"disabled)."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:148
+#, no-c-format
+msgid ""
+"The context filter expects to find the conversation id of any conversation "
+"context in a request parameter named <literal>conversationId</literal>. You "
+"are responsible for ensuring that it gets sent in the request."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:151
+#, no-c-format
+msgid ""
+"You are also responsible for ensuring propagation of any new conversation id "
+"back to the client. Seam exposes the conversation id as a property of the "
+"built in component <literal>conversation</literal>."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:154
+#, no-c-format
+msgid "Integrating Seam with your EJB container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:155
+#, no-c-format
+msgid ""
+"We need to apply the <literal>SeamInterceptor</literal> to our Seam "
+"components. The simplest way to do this is to add the following interceptor "
+"binding to the <literal>&lt;assembly-descriptor&gt;</literal> in "
+"<literal>ejb-jar.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:158
+#, no-c-format
+msgid ""
+"&lt;interceptor-binding&gt;\n"
+"    &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"    &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"&lt;/interceptor-binding&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:159
+#, no-c-format
+msgid ""
+"Seam needs to know where to go to find session beans in JNDI. One way to do "
+"this is specify the <literal>@JndiName</literal> annotation on every session "
+"bean Seam component. However, this is quite tedious. A better approach is to "
+"specify a pattern that Seam can use to calculate the JNDI name from the EJB "
+"name. Unfortunately, there is no standard mapping to global JNDI defined in "
+"the EJB3 specification, so this mapping is vendor-specific. We usually "
+"specify this option in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:162
+#, no-c-format
+msgid "For JBoss AS, the following pattern is correct:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:165
+#, no-c-format
+msgid "&lt;core:init jndi-name=\"myEarName/#{ejbName}/local\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:166
+#, no-c-format
+msgid ""
+"Where <literal>myEarName</literal> is the name of the EAR in which the bean "
+"is deployed."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:169
+#, no-c-format
+msgid ""
+"Outside the context of an EAR (when using the JBoss Embeddable EJB3 "
+"container), the following pattern is the one to use:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:172
+#, no-c-format
+msgid "&lt;core:init jndi-name=\"#{ejbName}/local\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:173
+#, no-c-format
+msgid ""
+"You will have to experiment to find the right setting for other application "
+"servers."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:176
+#, no-c-format
+msgid ""
+"Some servers (such as GlassFish) require you to specify JNDI names for all "
+"EJB components explicitly. In this case, you can pick your own pattern."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:180
+#, no-c-format
+msgid "Using facelets"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:181
+#, no-c-format
+msgid ""
+"If you want follow our advice and use facelets instead of JSP, add the "
+"following lines to <literal>faces-config.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:184
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;view-handler&gt;com.sun.facelets.FaceletViewHandler&lt;/view-"
+"handler&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:185
+#, no-c-format
+msgid "And the following lines to <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:188
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;javax.faces.DEFAULT_SUFFIX&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;.xhtml&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:189
+#, no-c-format
+msgid "Don&#39;t forget!"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:190
+#, no-c-format
+msgid ""
+"There is one final item you need to know about. You must place a "
+"<literal>seam.properties</literal>, <literal>META-INF/seam.properties</"
+"literal> or <literal>META-INF/components.xml</literal> file in any archive "
+"in which your Seam components are deployed (even an empty properties file "
+"will do). At startup, Seam will scan any archives with <literal>seam."
+"properties</literal> files for seam components."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:193
+#, no-c-format
+msgid ""
+"In a web archive (WAR) file, you must place a <literal>seam.properties</"
+"literal> file in the <literal>WEB-INF/classes</literal> directory if you "
+"have any Seam components included here."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:199
+#, no-c-format
+msgid ""
+"This is a workaround for a limitation of the JVM; if we did not use this "
+"mechanism, our next best option would be to force you to list every "
+"component explicitly in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:202
+#, no-c-format
+msgid "Configuring Seam in Java EE 5"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:211
+#, no-c-format
+msgid ""
+"If you are running in a Java EE 5 environment, this is all the configuration "
+"required to start using Seam!"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:214 Configuration.xml:280 Configuration.xml:325
+#: Configuration.xml:364 Configuration.xml:381
+#, no-c-format
+msgid "Packaging"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:215
+#, no-c-format
+msgid ""
+"Once you have packaged all this stuff together into an EAR, the archive "
+"structure will look something like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:218
+#, no-c-format
+msgid ""
+"my-application.ear/\n"
+"    jboss-seam.jar\n"
+"    el-api.jar\n"
+"    el-ri.jar\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"        application.xml\n"
+"    my-application.war/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"        WEB-INF/\n"
+"            web.xml\n"
+"            components.xml\n"
+"            faces-config.xml\n"
+"            lib/\n"
+"                jsf-facelets.jar\n"
+"                jboss-seam-ui.jar\n"
+"        login.jsp\n"
+"        register.jsp\n"
+"        ...\n"
+"    my-application.jar/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"            persistence.xml\n"
+"        seam.properties\n"
+"        org/\n"
+"            jboss/\n"
+"                myapplication/\n"
+"                    User.class\n"
+"                    Login.class\n"
+"                    LoginBean.class\n"
+"                    Register.class\n"
+"                    RegisterBean.class\n"
+"                    ..."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:219
+#, no-c-format
+msgid ""
+"You must include <literal>jboss-seam.jar</literal>, <literal>el-api.jar</"
+"literal> and <literal>el-ri.jar</literal> in the EAR classpath. Make sure "
+"you reference all of these jars from <literal>application.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:222
+#, no-c-format
+msgid ""
+"If you want to use jBPM or Drools, you must include the needed jars in the "
+"EAR classpath. Make sure you reference all of the jars from "
+"<literal>application.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:225
+#, no-c-format
+msgid ""
+"If you want to use facelets (our recommendation), you must include "
+"<literal>jsf-facelets.jar</literal> in the <literal>WEB-INF/lib</literal> "
+"directory of the WAR."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:228
+#, no-c-format
+msgid ""
+"If you want to use the Seam tag library (most Seam applications do), you "
+"must include <literal>jboss-seam-ui.jar</literal> in the <literal>WEB-INF/"
+"lib</literal> directory of the WAR. If you want to use the PDF or email tag "
+"libraries, you need to put <literal>jboss-seam-pdf.jar</literal> or "
+"<literal>jboss-seam-mail.jar</literal> in <literal>WEB-INF/lib</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:231
+#, no-c-format
+msgid ""
+"If you want to use the Seam debug page (only works for applications using "
+"facelets), you must include <literal>jboss-seam-debug.jar</literal> in the "
+"<literal>WEB-INF/lib</literal> directory of the WAR."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:234
+#, no-c-format
+msgid ""
+"Seam ships with several example applications that are deployable in any Java "
+"EE container that supports EJB 3.0."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:237
+#, no-c-format
+msgid ""
+"I really wish that was all there was to say on the topic of configuration "
+"but unfortunately we are only about a third of the way there. Feel free to "
+"skip over the rest of this section and come back to it later."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:241
+#, no-c-format
+msgid "Configuring Seam in Java SE, with the JBoss Embeddable EJB3 container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:242
+#, no-c-format
+msgid ""
+"The JBoss Embeddable EJB3 container lets you run EJB3 components outside the "
+"context of the Java EE 5 application server. This is especially, but not "
+"only, useful for testing."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:245
+#, no-c-format
+msgid ""
+"The Seam booking example application includes a TestNG integration test "
+"suite that runs on the Embeddable EJB3 container."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:256
+#, no-c-format
+msgid "The booking example application may even be deployed to Tomcat."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:267
+#, no-c-format
+msgid "Installing the Embeddable EJB3 container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:268
+#, no-c-format
+msgid ""
+"Seam ships with a build of the Embeddable EJB3 container in the "
+"<literal>embedded-ejb</literal> directory. To use the Embeddable EJB3 "
+"container with Seam, add the <literal>embedded-ejb/conf</literal> directory, "
+"and all jars in the <literal>lib</literal> and <literal>embedded-ejb/lib</"
+"literal> directories to your classpath. Then, add the following line to "
+"<literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:271
+#, no-c-format
+msgid "&lt;core:ejb /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:272
+#, no-c-format
+msgid ""
+"This setting installs the built-in component named <literal>org.jboss.seam."
+"core.ejb</literal>. This component is responsible for bootstrapping the EJB "
+"container when Seam is started, and shutting it down when the web "
+"application is undeployed."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:275
+#, no-c-format
+msgid "Configuring a datasource with the Embeddable EJB3 container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:276
+#, no-c-format
+msgid ""
+"You should refer to the Embeddable EJB3 container documentation for more "
+"information about configuring the container. You&#39;ll probably at least "
+"need to set up your own datasource. Embeddable EJB3 is implemented using the "
+"JBoss Microcontainer, so it&#39;s very easy to add new services to the "
+"minimal set of services provided by default. For example, I can add a new "
+"datasource by putting this <literal>jboss-beans.xml</literal> file in my "
+"classpath:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:279
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"\n"
+"&lt;deployment xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"urn:jboss:bean-deployer bean-deployer_1_0."
+"xsd\"\n"
+"            xmlns=\"urn:jboss:bean-deployer\"&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasourceBootstrap\"\n"
+"        class=\"org.jboss.resource.adapter.jdbc.local.LocalTxDataSource"
+"\"&gt;\n"
+"      &lt;property name=\"driverClass\"&gt;org.hsqldb.jdbcDriver&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"connectionURL\"&gt;jdbc:hsqldb:.&lt;/property&gt;\n"
+"      &lt;property name=\"userName\"&gt;sa&lt;/property&gt;\n"
+"      &lt;property name=\"jndiName\"&gt;java:/bookingDatasource&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"minSize\"&gt;0&lt;/property&gt;\n"
+"      &lt;property name=\"maxSize\"&gt;10&lt;/property&gt;\n"
+"      &lt;property name=\"blockingTimeout\"&gt;1000&lt;/property&gt;\n"
+"      &lt;property name=\"idleTimeout\"&gt;100000&lt;/property&gt;\n"
+"      &lt;property name=\"transactionManager\"&gt;\n"
+"        &lt;inject bean=\"TransactionManager\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"      &lt;property name=\"cachedConnectionManager\"&gt;\n"
+"        &lt;inject bean=\"CachedConnectionManager\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"      &lt;property name=\"initialContextProperties\"&gt;\n"
+"        &lt;inject bean=\"InitialContextProperties\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasource\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getDatasource\"&gt;\n"
+"         &lt;factory bean=\"bookingDatasourceBootstrap\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"&lt;/deployment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:281
+#, no-c-format
+msgid ""
+"The archive structure of a WAR-based deployment on an servlet engine like "
+"Tomcat will look something like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:284
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            myfaces-api.jar\n"
+"            myfaces-impl.jar\n"
+"            jboss-ejb3.jar\n"
+"            jboss-jca.jar\n"
+"            jboss-j2ee.jar\n"
+"            ...\n"
+"            mc-conf.jar/\n"
+"                ejb3-interceptors-aop.xml\n"
+"                embedded-jboss-beans.xml\n"
+"                default.persistence.properties\n"
+"                jndi.properties\n"
+"                login-config.xml\n"
+"                security-beans.xml\n"
+"                log4j.xml\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                    MANIFEST.MF\n"
+"                    persistence.xml\n"
+"                    jboss-beans.xml\n"
+"                log4j.xml\n"
+"                seam.properties\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            LoginBean.class\n"
+"                            Register.class\n"
+"                            RegisterBean.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:285
+#, no-c-format
+msgid ""
+"The <literal>mc-conf.jar</literal> just contains the standard JBoss "
+"Microcontainer configuration files for Embeddable EJB3. You will not usually "
+"need to edit these files yourself."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:288
+#, no-c-format
+msgid ""
+"Most of the Seam example applications may be deployed to Tomcat by running "
+"<literal>ant deploy.tomcat</literal>."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:291
+#, no-c-format
+msgid "Configuring Seam in J2EE"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:292
+#, no-c-format
+msgid ""
+"Seam is useful even if you are not yet ready to take the plunge into EJB "
+"3.0. In this case you would use Hibernate3 or JPA instead of EJB 3.0 "
+"persistence, and plain JavaBeans instead of session beans. You will miss out "
+"on some of the nice features of session beans but it will be very easy to "
+"migrate to EJB 3.0 when you are ready and, in the meantime, you will be able "
+"to take advantage of Seam&#39;s unique declarative state management "
+"architecture."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:303
+#, no-c-format
+msgid ""
+"Seam JavaBean components do not provide declarative transaction demarcation "
+"like session beans do. You <emphasis>could</emphasis> manage your "
+"transactions manually using the JTA <literal>UserTransaction</literal> (you "
+"could even implement your own declarative transaction management in a Seam "
+"interceptor). But most applications will use Seam managed transactions when "
+"using Hibernate with JavaBeans. Follow the instructions in the persistence "
+"chapter to install <literal>TransactionalSeamPhaseListener</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:306
+#, no-c-format
+msgid ""
+"The Seam distribution includes a version of the booking example application "
+"that uses Hibernate3 and JavaBeans instead of EJB3, and another version that "
+"uses JPA and JavaBeans. These example applications are ready to deploy into "
+"any J2EE application server."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:309
+#, no-c-format
+msgid "Boostrapping Hibernate in Seam"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:310
+#, no-c-format
+msgid ""
+"Seam will bootstrap a Hibernate <literal>SessionFactory</literal> from your "
+"<literal>hibernate.cfg.xml</literal> file if you install a built-in "
+"component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:313
+#, no-c-format
+msgid ""
+"&lt;core:hibernate-session-factory name=\"hibernateSessionFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:314
+#, no-c-format
+msgid ""
+"You will also need to configure a <emphasis>managed session</emphasis> if "
+"you want a Seam managed Hibernate <literal>Session</literal> to be available "
+"via injection."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:317
+#, no-c-format
+msgid "Boostrapping JPA in Seam"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:318
+#, no-c-format
+msgid ""
+"Seam will bootstrap a JPA <literal>EntityManagerFactory</literal> from your "
+"<literal>persistence.xml</literal> file if you install this built-in "
+"component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:321
+#, no-c-format
+msgid "&lt;core:entity-manager-factory name=\"entityManagerFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:322
+#, no-c-format
+msgid ""
+"You will also need to configure a <emphasis>managed persistencece context</"
+"emphasis> if you want a Seam managed JPA <literal>EntityManager</literal> to "
+"be available via injection."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:326
+#, no-c-format
+msgid "We can package our application as a WAR, in the following structure:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:329
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            hibernate3.jar\n"
+"            hibernate-annotations.jar\n"
+"            ...\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                   MANIFEST.MF\n"
+"                seam.properties\n"
+"                hibernate.cfg.xml\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            Register.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:330
+#, no-c-format
+msgid ""
+"If we want to deploy Hibernate in a non-J2EE environment like Tomcat or "
+"TestNG, we need to do a little bit more work."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:334
+#, no-c-format
+msgid "Configuring Seam in Java SE, with the JBoss Microcontainer"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:335
+#, no-c-format
+msgid ""
+"The Seam support for Hibernate and JPA requires JTA and a JCA datasource. If "
+"you are running in a non-EE environment like Tomcat or TestNG you can run "
+"these services, and Hibernate itself, in the JBoss Microcontainer."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:338
+#, no-c-format
+msgid ""
+"You can even deploy the Hibernate and JPA versions of the booking example in "
+"Tomcat."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:349
+#, no-c-format
+msgid ""
+"Seam ships with an example Microcontainer configuration in "
+"<literal>microcontainer/conf/jboss-beans.xml</literal> that provides all the "
+"things you need to run Seam with Hibernate in any non-EE environment. Just "
+"add the <literal>microcontainer/conf</literal> directory, and all jars in "
+"the <literal>lib</literal> and <literal>microcontainer/lib</literal> "
+"directories to your classpath. Refer to the documentation for the JBoss "
+"Microcontainer for more information."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:352
+#, no-c-format
+msgid "Using Hibernate and the JBoss Microcontainer"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:353
+#, no-c-format
+msgid ""
+"The built-in Seam component named <literal>org.jboss.seam.core."
+"microcontainer</literal> bootstraps the microcontainer. As before, we "
+"probably want to use a Seam managed session."
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:356
+#, no-c-format
+msgid ""
+"&lt;core:microcontainer/&gt;\n"
+"\n"
+"&lt;core:managed-hibernate-session name=\"bookingDatabase\" auto-create="
+"\"true\"\n"
+"    session-factory-jndi-name=\"java:/bookingSessionFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:357
+#, no-c-format
+msgid ""
+"Where <literal>java:/bookingSessionFactory</literal> is the name of the "
+"Hibernate session factory specified in <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:360
+#, no-c-format
+msgid ""
+"You will need to provide a <literal>jboss-beans.xml</literal> file that "
+"installs JNDI, JTA, your JCA datasource and Hibernate into the "
+"microcontainer:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:363
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"\n"
+"&lt;deployment xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"urn:jboss:bean-deployer bean-deployer_1_0."
+"xsd\"\n"
+"            xmlns=\"urn:jboss:bean-deployer\"&gt;\n"
+"\n"
+"   &lt;bean name=\"Naming\" class=\"org.jnp.server.SingletonNamingServer\"/"
+"&gt;\n"
+"\n"
+"   &lt;bean name=\"TransactionManagerFactory\" \n"
+"      class=\"org.jboss.seam.microcontainer.TransactionManagerFactory\"/"
+"&gt;\n"
+"   &lt;bean name=\"TransactionManager\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getTransactionManager\"&gt;\n"
+"         &lt;factory bean=\"TransactionManagerFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasourceFactory\" class=\"org.jboss.seam."
+"microcontainer.DataSourceFactory\"&gt;\n"
+"      &lt;property name=\"driverClass\"&gt;org.hsqldb.jdbcDriver&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"connectionUrl\"&gt;jdbc:hsqldb:.&lt;/property&gt;\n"
+"      &lt;property name=\"userName\"&gt;sa&lt;/property&gt;\n"
+"      &lt;property name=\"jndiName\"&gt;java:/hibernateDatasource&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"minSize\"&gt;0&lt;/property&gt;\n"
+"      &lt;property name=\"maxSize\"&gt;10&lt;/property&gt;\n"
+"      &lt;property name=\"blockingTimeout\"&gt;1000&lt;/property&gt;\n"
+"      &lt;property name=\"idleTimeout\"&gt;100000&lt;/property&gt;\n"
+"      &lt;property name=\"transactionManager\"&gt;&lt;inject bean="
+"\"TransactionManager\"/&gt;&lt;/property&gt;\n"
+"   &lt;/bean&gt;\n"
+"   &lt;bean name=\"bookingDatasource\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getDataSource\"&gt;\n"
+"         &lt;factory bean=\"bookingDatasourceFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingSessionFactoryFactory\" \n"
+"      class=\"org.jboss.seam.microcontainer.HibernateFactory\"/&gt;\n"
+"   &lt;bean name=\"bookingSessionFactory\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getSessionFactory\"&gt;\n"
+"         &lt;factory bean=\"bookingSessionFactoryFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"      &lt;depends&gt;bookingDatasource&lt;/depends&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"&lt;/deployment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:365
+#, no-c-format
+msgid "The WAR could have the following structure:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:368
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            hibernate3.jar\n"
+"            ...\n"
+"            jboss-microcontainer.jar\n"
+"            jboss-jca.jar\n"
+"            ...\n"
+"            myfaces-api.jar\n"
+"            myfaces-impl.jar\n"
+"            mc-conf.jar/\n"
+"                jndi.properties\n"
+"                log4j.xml\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                    MANIFEST.MF\n"
+"                    jboss-beans.xml\n"
+"                seam.properties\n"
+"                hibernate.cfg.xml\n"
+"                log4j.xml\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            Register.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:369
+#, no-c-format
+msgid "Configuring jBPM in Seam"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:370
+#, no-c-format
+msgid ""
+"Seam&#39;s jBPM integration is not installed by default, so you will need to "
+"enable jBPM by installing a built-in component. You will also need to "
+"explicitly list your process and pageflow definitions. In "
+"<literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:373
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:pageflow-definitions&gt;\n"
+"        &lt;value&gt;createDocument.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;editDocument.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;approveDocument.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:pageflow-definitions&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;documentLifecycle.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:374
+#, no-c-format
+msgid ""
+"No further special configuration is needed if you only have pageflows. If "
+"you do have business process definitions, you need to provide a jBPM "
+"configuration, and a Hibernate configuration for jBPM. The Seam DVD Store "
+"demo includes example <literal>jbpm.cfg.xml</literal> and <literal>hibernate."
+"cfg.xml</literal> files that will work with Seam:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:377
+#, no-c-format
+msgid ""
+"&lt;jbpm-configuration&gt;\n"
+"\n"
+"  &lt;jbpm-context&gt;\n"
+"    &lt;service name=\"persistence\"&gt;\n"
+"       &lt;factory&gt;\n"
+"          &lt;bean class=\"org.jbpm.persistence.db."
+"DbPersistenceServiceFactory\"&gt;\n"
+"             &lt;field name=\"isTransactionEnabled\"&gt;&lt;false/&gt;&lt;/"
+"field&gt;\n"
+"          &lt;/bean&gt;\n"
+"       &lt;/factory&gt;\n"
+"    &lt;/service&gt;\n"
+"    &lt;service name=\"message\" factory=\"org.jbpm.msg.db."
+"DbMessageServiceFactory\" /&gt;\n"
+"    &lt;service name=\"scheduler\" factory=\"org.jbpm.scheduler.db."
+"DbSchedulerServiceFactory\" /&gt;\n"
+"    &lt;service name=\"logging\" factory=\"org.jbpm.logging.db."
+"DbLoggingServiceFactory\" /&gt;\n"
+"    &lt;service name=\"authentication\" \n"
+"       factory=\"org.jbpm.security.authentication."
+"DefaultAuthenticationServiceFactory\" /&gt;\n"
+"  &lt;/jbpm-context&gt;\n"
+"\n"
+"&lt;/jbpm-configuration&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:378
+#, no-c-format
+msgid ""
+"The most important thing to notice here is that jBPM transaction control is "
+"disabled. Seam or EJB3 should control the JTA transactions."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:382
+#, no-c-format
+msgid ""
+"There is not yet any well-defined packaging format for jBPM configuration "
+"and process/pageflow definition files. In the Seam examples we have decided "
+"to simply package all these files into the root of the EAR. In future, we "
+"will probably design some other standard packaging format. So the EAR looks "
+"something like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:385
+#, no-c-format
+msgid ""
+"my-application.ear/\n"
+"    jboss-seam.jar\n"
+"    el-api.jar\n"
+"    el-ri.jar\n"
+"    jbpm-3.1.jar\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"        application.xml\n"
+"    my-application.war/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"        WEB-INF/\n"
+"            web.xml\n"
+"            components.xml\n"
+"            faces-config.xml\n"
+"            lib/\n"
+"                jsf-facelets.jar\n"
+"                jboss-seam-ui.jar\n"
+"        login.jsp\n"
+"        register.jsp\n"
+"        ...\n"
+"    my-application.jar/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"            persistence.xml\n"
+"        seam.properties\n"
+"        org/\n"
+"            jboss/\n"
+"                myapplication/\n"
+"                    User.class\n"
+"                    Login.class\n"
+"                    LoginBean.class\n"
+"                    Register.class\n"
+"                    RegisterBean.class\n"
+"                    ...\n"
+"    jbpm.cfg.xml\n"
+"    hibernate.cfg.xml\n"
+"    createDocument.jpdl.xml\n"
+"    editDocument.jpdl.xml\n"
+"    approveDocument.jpdl.xml\n"
+"    documentLifecycle.jpdl.xml"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:386
+#, no-c-format
+msgid ""
+"Remember to add <literal>jbpm-3.1.jar</literal> to the manifest of your EJB-"
+"JAR and WAR."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:389
+#, no-c-format
+msgid "Configuring Seam in a Portal"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:390
+#, no-c-format
+msgid ""
+"To run a Seam application as a portlet, you will need to provide certain "
+"portlet metadata (<literal>portlet.xml</literal>, etc) in addition to the "
+"usual Java EE metadata. See the <literal>examples/portal</literal> directory "
+"for an example of the booking demo preconfigured to run on JBoss Portal."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:393
+#, no-c-format
+msgid ""
+"In addition, you will need to use a portlet-specific phase listener instead "
+"of <literal>SeamPhaseListener</literal> or "
+"<literal>TransactionalSeamPhaseListener</literal>. The "
+"<literal>SeamPortletPhaseListener</literal> and "
+"<literal>TransactionalSeamPortletPhaseListener</literal> are adapted to the "
+"portlet lifecycle. I would like to offer my sincerest apologies for the name "
+"of that last class. I really could not think of anything better. Sorry."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:396
+#, no-c-format
+msgid "Configuring SFSB and Session Timeouts in JBoss AS"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:397
+#, no-c-format
+msgid ""
+"It is very important that the timeout for Stateful Session Beans is set "
+"higher than the timeout for HTTP Sessions, otherwise SFSB&#39;s may time out "
+"before the user&#39;s HTTP session has ended. JBoss Application Server has a "
+"default session bean timeout of 30 minutes, which is configured in "
+"<literal>server/default/conf/standardjboss.xml</literal> (replace "
+"<emphasis>default</emphasis> with your own configuration)."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:400
+#, no-c-format
+msgid ""
+"The default SFSB timeout can be adjusted by modifying the value of "
+"<literal>max-bean-life</literal> in the "
+"<literal>LRUStatefulContextCachePolicy</literal> cache configuration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:403
+#, no-c-format
+msgid ""
+"&lt;container-cache-conf&gt;\n"
+"        &lt;cache-policy&gt;org.jboss.ejb.plugins."
+"LRUStatefulContextCachePolicy&lt;/cache-policy&gt;\n"
+"        &lt;cache-policy-conf&gt;\n"
+"          &lt;min-capacity&gt;50&lt;/min-capacity&gt;\n"
+"          &lt;max-capacity&gt;1000000&lt;/max-capacity&gt;\n"
+"          &lt;remover-period&gt;1800&lt;/remover-period&gt;\n"
+"\n"
+"          &lt;!-- SFSB timeout in seconds; 1800 seconds == 30 minutes --"
+"&gt;\n"
+"          &lt;max-bean-life&gt;1800&lt;/max-bean-life&gt;  \n"
+"          \n"
+"          &lt;overager-period&gt;300&lt;/overager-period&gt;\n"
+"          &lt;max-bean-age&gt;600&lt;/max-bean-age&gt;\n"
+"          &lt;resizer-period&gt;400&lt;/resizer-period&gt;\n"
+"          &lt;max-cache-miss-period&gt;60&lt;/max-cache-miss-period&gt;\n"
+"          &lt;min-cache-miss-period&gt;1&lt;/min-cache-miss-period&gt;\n"
+"          &lt;cache-load-factor&gt;0.75&lt;/cache-load-factor&gt;\n"
+"        &lt;/cache-policy-conf&gt;\n"
+"      &lt;/container-cache-conf&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:404
+#, no-c-format
+msgid ""
+"The default HTTP session timeout can be modified in <literal>server/default/"
+"deploy/jbossweb-tomcat55.sar/conf/web.xml</literal> for JBoss 4.0.x, or in "
+"<literal>server/default/deploy/jboss-web.deployer/conf/web.xml</literal> for "
+"JBoss 4.2.x. The following entry in this file controls the default session "
+"timeout for all web applications:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:407
+#, no-c-format
+msgid ""
+"&lt;session-config&gt;\n"
+"      &lt;!-- HTTP Session timeout, in minutes --&gt;\n"
+"      &lt;session-timeout&gt;30&lt;/session-timeout&gt;\n"
+"   &lt;/session-config&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:408
+#, no-c-format
+msgid ""
+"To override this value for your own application, simply include this entry "
+"in your application&#39;s own <literal>web.xml</literal>."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Controls.pot
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Controls.pot	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Controls.pot	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1188 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-07-14 00:47+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Controls.xml:6
+#, no-c-format
+msgid "Seam JSF controls"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:7
+#, no-c-format
+msgid ""
+"Seam includes a number of JSF controls that are useful for working with "
+"Seam. These are intended to complement the built-in JSF controls, and "
+"controls from other third-party libraries. We recommend the Ajax4JSF and ADF "
+"faces (now Trinidad) tag libraries for use with Seam. We do not recommend "
+"the use of the Tomahawk tag library."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:10
+#, no-c-format
+msgid ""
+"To use these controls, define the \"<literal>s</literal>\" namespace in your "
+"page as follows (facelets only):"
+msgstr ""
+
+#. Tag: programlisting
+#: Controls.xml:13
+#, no-c-format
+msgid ""
+"&lt;html xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"      xmlns:s=\"http://jboss.com/products/seam/taglib\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:14
+#, no-c-format
+msgid "The ui example demonstrates the use of a number of these tags."
+msgstr ""
+
+#. Tag: title
+#: Controls.xml:18
+#, no-c-format
+msgid "Seam JSF Control Reference"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:26
+#, no-c-format
+msgid "&lt;s:validate&gt;"
+msgstr ""
+
+#. Tag: emphasis
+#: Controls.xml:31 Controls.xml:56 Controls.xml:81 Controls.xml:121
+#: Controls.xml:146 Controls.xml:171 Controls.xml:203 Controls.xml:239
+#: Controls.xml:295 Controls.xml:396 Controls.xml:423 Controls.xml:477
+#: Controls.xml:504 Controls.xml:531 Controls.xml:558 Controls.xml:585
+#: Controls.xml:626 Controls.xml:687 Controls.xml:748 Controls.xml:901
+#: Controls.xml:937 Controls.xml:964 Controls.xml:991
+#, no-c-format
+msgid "Description"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:33
+#, no-c-format
+msgid ""
+"A non-visual control, validates a JSF input field against the bound property "
+"using Hibernate Validator."
+msgstr ""
+
+#. Tag: emphasis
+#: Controls.xml:37 Controls.xml:62 Controls.xml:87 Controls.xml:127
+#: Controls.xml:152 Controls.xml:180 Controls.xml:209 Controls.xml:245
+#: Controls.xml:304 Controls.xml:402 Controls.xml:448 Controls.xml:483
+#: Controls.xml:510 Controls.xml:537 Controls.xml:564 Controls.xml:591
+#: Controls.xml:632 Controls.xml:693 Controls.xml:754 Controls.xml:907
+#: Controls.xml:943 Controls.xml:970 Controls.xml:1024
+#, no-c-format
+msgid "Attributes"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:39 Controls.xml:64 Controls.xml:129 Controls.xml:154
+#: Controls.xml:182 Controls.xml:404 Controls.xml:450 Controls.xml:485
+#: Controls.xml:512 Controls.xml:539 Controls.xml:566 Controls.xml:945
+#: Controls.xml:972
+#, no-c-format
+msgid "None."
+msgstr ""
+
+#. Tag: emphasis
+#: Controls.xml:43 Controls.xml:68 Controls.xml:97 Controls.xml:133
+#: Controls.xml:158 Controls.xml:190 Controls.xml:224 Controls.xml:280
+#: Controls.xml:381 Controls.xml:408 Controls.xml:454 Controls.xml:489
+#: Controls.xml:516 Controls.xml:543 Controls.xml:570 Controls.xml:611
+#: Controls.xml:672 Controls.xml:733 Controls.xml:779 Controls.xml:922
+#: Controls.xml:949 Controls.xml:976 Controls.xml:1059
+#, no-c-format
+msgid "Usage"
+msgstr ""
+
+#. Tag: programlisting
+#: Controls.xml:45
+#, no-c-format
+msgid ""
+"&lt;h:inputText id=\"userName\" required=\"true\" value=\"#{customer."
+"userName}\"&gt;\n"
+"  &lt;s:validate /&gt;\n"
+"&lt;/h:inputText&gt;\n"
+"&lt;h:message for=\"userName\" styleClass=\"error\" /&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:51
+#, no-c-format
+msgid "&lt;s:validateAll&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:58
+#, no-c-format
+msgid ""
+"A non-visual control, validates all child JSF input fields against their "
+"bound properties using Hibernate Validator."
+msgstr ""
+
+#. Tag: programlisting
+#: Controls.xml:70
+#, no-c-format
+msgid ""
+"&lt;s:validateAll&gt;\n"
+"  &lt;div class=\"entry\"&gt;\n"
+"    &lt;h:outputLabel for=\"username\"&gt;Username:&lt;/h:outputLabel&gt;\n"
+"    &lt;h:inputText id=\"username\" value=\"#{user.username}\" required="
+"\"true\"/&gt;\n"
+"    &lt;h:message for=\"username\" styleClass=\"error\" /&gt;\n"
+"  &lt;/div&gt;\n"
+"  &lt;div class=\"entry\"&gt;\n"
+"    &lt;h:outputLabel for=\"password\"&gt;Password:&lt;/h:outputLabel&gt;\n"
+"    &lt;h:inputSecret id=\"password\" value=\"#{user.password}\" required="
+"\"true\"/&gt;\n"
+"    &lt;h:message for=\"password\" styleClass=\"error\" /&gt;\n"
+"  &lt;/div&gt;\n"
+"  &lt;div class=\"entry\"&gt;\n"
+"    &lt;h:outputLabel for=\"verify\"&gt;Verify Password:&lt;/h:"
+"outputLabel&gt;\n"
+"    &lt;h:inputSecret id=\"verify\" value=\"#{register.verify}\" required="
+"\"true\"/&gt;\n"
+"    &lt;h:message for=\"verify\" styleClass=\"error\" /&gt;\n"
+"  &lt;/div&gt;\n"
+"&lt;/s:validateAll&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:76
+#, no-c-format
+msgid "&lt;s:formattedText&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:83
+#, no-c-format
+msgid ""
+"Outputs <emphasis>Seam Text</emphasis>, a rich text markup useful for blogs, "
+"wikis and other applications that might use rich text. See the Seam Text "
+"chapter for full usage."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:91
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; an EL expression specifying the rich text "
+"markup to render."
+msgstr ""
+
+#. Tag: programlisting
+#: Controls.xml:99
+#, no-c-format
+msgid "&lt;s:formattedText value=\"#{blog.text}\"/&gt;"
+msgstr ""
+
+#. Tag: emphasis
+#: Controls.xml:101 Controls.xml:785
+#, no-c-format
+msgid "Example"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:116
+#, no-c-format
+msgid "&lt;s:convertDateTime&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:123
+#, no-c-format
+msgid "Perform date or time conversions in the Seam timezone."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:141
+#, no-c-format
+msgid "&lt;s:convertEnum&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:148
+#, no-c-format
+msgid ""
+"Assigns an enum converter to the current component. This is primarily useful "
+"for radio button and dropdown controls."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:166
+#, no-c-format
+msgid "&lt;s:convertEntity&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:173
+#, no-c-format
+msgid ""
+"Assigns an entity converter to the current component. This is primarily "
+"useful for radio button and dropdown controls."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:176
+#, no-c-format
+msgid ""
+"The converter works with any entity which has an <literal>@Id</literal> "
+"annotation - either simple or composite. If your <emphasis>Managed "
+"Persistence Context</emphasis> is not called <literal>entityManager</"
+"literal>, then you need to set it in components.xml:"
+msgstr ""
+
+#. Tag: emphasis
+#: Controls.xml:186 Controls.xml:1002
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: programlisting
+#: Controls.xml:188
+#, no-c-format
+msgid ""
+"&lt;component name=\"org.jboss.seam.ui.entityConverter\"&gt;\n"
+"      &lt;property name=\"entityManager\"&gt;#{em}&lt;/property&gt;\n"
+"  &lt;/component&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Controls.xml:192
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{person.continent}\" required=\"true\"&gt;\n"
+"    &lt;s:selectItems value=\"#{continents.resultList}\" var=\"continent\" "
+"label=\"#{continent.name}\" noSelectionLabel=\"Please Select...\"/&gt;\n"
+"    &lt;s:convertEntity /&gt;\n"
+"&lt;/h:selectOneMenu&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:198
+#, no-c-format
+msgid "&lt;s:enumItem&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:205
+#, no-c-format
+msgid "Creates a <literal>SelectItem</literal> from an enum value."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:213
+#, no-c-format
+msgid ""
+"<literal>enumValue</literal> &mdash; the string representation of the enum "
+"value."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:218
+#, no-c-format
+msgid ""
+"<literal>label</literal> &mdash; the label to be used when rendering the "
+"<literal>SelectItem</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:234
+#, no-c-format
+msgid "&lt;s:selectItems&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:241
+#, no-c-format
+msgid ""
+"Creates a <literal>List&lt;SelectItem&gt;</literal> from a List, Set, "
+"DataModel or Array."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:249
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; an EL expression specifying the data that "
+"backs the <literal>List&lt;SelectItem&gt;</literal>"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:254
+#, no-c-format
+msgid ""
+"<literal>var</literal> &mdash; defines the name of the local variable that "
+"holds the current object during iteration"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:259
+#, no-c-format
+msgid ""
+"<literal>label</literal> &mdash; the label to be used when rendering the "
+"<literal>SelectItem</literal>. Can reference the <literal>var</literal> "
+"variable"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:264
+#, no-c-format
+msgid ""
+"<literal>disabled</literal> &mdash; if true the <literal>SelectItem</"
+"literal> will be rendered disabled. Can reference the <literal>var</literal> "
+"variable"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:269
+#, no-c-format
+msgid ""
+"<literal>noSelectionLabel</literal> &mdash; specifies the (optional) label "
+"to place at the top of list (if <literal>required=\"true\"</literal> is also "
+"specified then selecting this value will cause a validation error)"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:274
+#, no-c-format
+msgid ""
+"<literal>hideNoSelectionLabel</literal> &mdash; if true, the "
+"<literal>noSelectionLabel</literal> will be hidden when a value is selected"
+msgstr ""
+
+#. Tag: programlisting
+#: Controls.xml:283
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{person.age}\"  converter=\"#{converters."
+"ageConverter}\"&gt;\n"
+"    &lt;s:selectItems value=\"#{ages}\" var=\"age\" label=\"#{age}\" /&gt;\n"
+"&lt;/h:selectOneMenu&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:290
+#, no-c-format
+msgid "&lt;s:graphicImage&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:297
+#, no-c-format
+msgid ""
+"An extended <literal>&lt;h:graphicImage&gt;</literal> that allows the image "
+"to be created in a Seam Component; further transforms can be applied to the "
+"image. <emphasis>Facelets only.</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:300
+#, no-c-format
+msgid ""
+"All attributes for <literal>&lt;h:graphicImage&gt;</literal> are supported, "
+"as well as:"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:308
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; image to display. Can be a path "
+"<literal>String</literal> (loaded from the classpath), a <literal>byte[]</"
+"literal>, a <literal>java.io.File</literal>, a <literal>java.io.InputStream</"
+"literal> or a <literal>java.net.URL</literal>. Currently supported image "
+"formats are <literal>image/png</literal>, <literal>image/jpeg</literal> and "
+"<literal>image/gif</literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:313
+#, no-c-format
+msgid ""
+"<literal>fileName</literal> &mdash; if not specified the served image will "
+"have a generated file name. If you want to name your file, you should "
+"specify it here. This name should be unique"
+msgstr ""
+
+#. Tag: emphasis
+#: Controls.xml:319
+#, no-c-format
+msgid "Transformations"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:321
+#, no-c-format
+msgid ""
+"To apply a transform to the image, you would nest a tag specifying the "
+"transform to apply. Seam currently supports these transforms:"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:326
+#, no-c-format
+msgid "&lt;s:transformImageSize&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:330
+#, no-c-format
+msgid "<literal>width</literal> &mdash; new width of the image"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:335
+#, no-c-format
+msgid "<literal>height</literal> &mdash; new height of the image"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:340
+#, no-c-format
+msgid ""
+"<literal>maintainRatio</literal> &mdash; if <literal>true</literal>, and "
+"<emphasis>one</emphasis> of <literal>width</literal>/<literal>height</"
+"literal> are specified, the image will be resized with the dimension not "
+"specified being calculated to maintain the aspect ratio."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:345
+#, no-c-format
+msgid "<literal>factor</literal> &mdash; scale the image by the given factor"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:353
+#, no-c-format
+msgid "&lt;s:transformImageBlur&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:357
+#, no-c-format
+msgid ""
+"<literal>radius</literal> &mdash; perform a convolution blur with the given "
+"radius"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:365
+#, no-c-format
+msgid "&lt;s:transformImageType&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:369
+#, no-c-format
+msgid ""
+"<literal>contentType</literal> &mdash; alter the type of the image to either "
+"<literal>image/jpeg</literal> or <literal>image/png</literal>"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:377
+#, no-c-format
+msgid ""
+"It is easy to create your own transform - create a <literal>UIComponent</"
+"literal> which <literal>implements</literal><literal>org.jboss.seam.ui."
+"graphicImage.ImageTransform</literal>. Inside the <literal>applyTransform()</"
+"literal>method use <literal>image.getBufferedImage()</literal> to get the "
+"original image and <literal>image.setBufferedImage()</literal> to set your "
+"transformed image. Transforms are applied in the order specified in the view."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:391
+#, no-c-format
+msgid "&lt;s:decorate&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:398
+#, no-c-format
+msgid ""
+"\"Decorate\" a JSF input field when validation fails or when "
+"<literal>required=\"true\"</literal> is set."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:418
+#, no-c-format
+msgid "&lt;s:layoutForm&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:425
+#, no-c-format
+msgid ""
+"A layout component for producing a \"standard\" form layout. Each child "
+"component will be treated as a row, and if the child is a <literal>&lt;s:"
+"decorate&gt;</literal>, additional formatting will be applied:"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:428
+#, no-c-format
+msgid ""
+"Label &mdash; if a <literal>label</literal> facet is on the <literal>&lt;s:"
+"decorate&gt;</literal> then it&#39;s contents will be used as the label for "
+"this field. The labels are rendered right-aligned in a column"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:431
+#, no-c-format
+msgid ""
+"Some further decoration facets are supported - <literal>beforeLabel</"
+"literal>, <literal>afterLabel</literal>, <literal>aroundLabel</literal>, "
+"<literal>beforeInvalidLabel</literal>, <literal>afterInvalidLabel</literal> "
+"and <literal>aroundInvalidLabel</literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:436
+#, no-c-format
+msgid ""
+"Other text &mdash; if a <literal>belowLabel</literal> facet or/and a "
+"<literal>belowField</literal> facet are present on <literal>&lt;s:"
+"decorate&gt;</literal> then it&#39;s contents will be placed below the label "
+"or the field"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:441
+#, no-c-format
+msgid ""
+"Required &mdash; if <literal>required=\"true\"</literal> is set on the "
+"field, then the <literal>aroundRequiredField</literal>, "
+"<literal>beforeRequiredField</literal>, <literal>afterRequiredField</"
+"literal>, <literal>aroundRequiredLabel</literal>, "
+"<literal>beforeRequiredLabel</literal> and <literal>afterRequiredLabel</"
+"literal> will be applied."
+msgstr ""
+
+#. Tag: programlisting
+#: Controls.xml:457
+#, no-c-format
+msgid ""
+"&lt;s:layoutForm&gt;\n"
+"   &lt;f:facet name=\"aroundInvalidField\"&gt;\n"
+"       &lt;s:span styleClass=\"error\"/&gt;\n"
+"   &lt;/f:facet&gt;\n"
+"   &lt;f:facet name=\"afterInvalidField\"&gt;\n"
+"       &lt;s:message /&gt;\n"
+"   &lt;/f:facet&gt;\n"
+"   &lt;f:facet name=\"beforeRequiredLabel\"&gt;\n"
+"           &lt;s:span&gt;&lowast;&lt;/s:span&gt;\n"
+"   &lt;/f:facet&gt;\n"
+"   &lt;f:facet name=\"aroundLabel\"&gt;\n"
+"           &lt;s:span style=\"text-align:right;\" /&gt;\n"
+"   &lt;/f:facet&gt;\n"
+"   &lt;f:facet name=\"aroundInvalidLabel\"&gt;\n"
+"           &lt;s:span style=\"text-align:right;\" styleClass=\"error\" /"
+"&gt;\n"
+"   &lt;/f:facet&gt;\n"
+"   &lt;s:decorate&gt;\n"
+"        &lt;f:facet name=\"label\"&gt;\n"
+"                    &lt;h:outputText value=\"Name\" /&gt;\n"
+"        &lt;/f:facet&gt;\n"
+"        &lt;h:inputText value=\"#{person.name}\" required=\"true\"/&gt;\n"
+"        &lt;f:facet name=\"belowField\"&gt;\n"
+"            &lt;h:outputText styleClass=\"help\" \n"
+"               value=\"Enter your name as it appears \n"
+"                  on your passport\" /&gt;\n"
+"        &lt;/f:facet&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"&lt;/s:layoutForm&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:472
+#, no-c-format
+msgid "&lt;s:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:479
+#, no-c-format
+msgid "\"Decorate\" a JSF input field with the validation error message."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:499
+#, no-c-format
+msgid "&lt;s:span&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:506
+#, no-c-format
+msgid "Render a HTML <literal>&lt;span&gt;</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:526
+#, no-c-format
+msgid "&lt;s:div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:533
+#, no-c-format
+msgid "Render a HTML <literal>&lt;div&gt;</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:553
+#, no-c-format
+msgid "&lt;s:fragment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:560
+#, no-c-format
+msgid ""
+"A non-rendering component useful for enabling/disabling rendering of it's "
+"children."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:580
+#, no-c-format
+msgid "&lt;s:cache&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:587
+#, no-c-format
+msgid ""
+"Cache the rendered page fragment using JBoss Cache. Note that <literal>&lt;s:"
+"cache&gt;</literal> actually uses the instance of JBoss Cache managed by the "
+"built-in <literal>pojoCache</literal> component."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:595
+#, no-c-format
+msgid ""
+"<literal>key</literal> &mdash; the key to cache rendered content, often a "
+"value expression. For example, if we were caching a page fragment that "
+"displays a document, we might use <literal>key=\"Document-#{document.id}\"</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:600
+#, no-c-format
+msgid ""
+"<literal>enabled</literal> &mdash; a value expression that determines if the "
+"cache should be used."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:605
+#, no-c-format
+msgid ""
+"<literal>region</literal> &mdash; a JBoss Cache node to use (different nodes "
+"can have different expiry policies)."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:621
+#, no-c-format
+msgid "&lt;s:link&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:628
+#, no-c-format
+msgid ""
+"A link that supports invocation of an action with control over conversation "
+"propagation. <emphasis>Does not submit the form.</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:636 Controls.xml:697
+#, no-c-format
+msgid "<literal>value</literal> &mdash; the label."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:641 Controls.xml:702
+#, no-c-format
+msgid ""
+"<literal>action</literal> &mdash; a method binding that specified the action "
+"listener."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:646 Controls.xml:707
+#, no-c-format
+msgid "<literal>view</literal> &mdash; the JSF view id to link to."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:651 Controls.xml:712
+#, no-c-format
+msgid "<literal>fragment</literal> &mdash; the fragment identifier to link to."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:656 Controls.xml:717
+#, no-c-format
+msgid "<literal>disabled</literal> &mdash; is the link disabled?"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:661 Controls.xml:722 Controls.xml:911
+#, no-c-format
+msgid ""
+"<literal>propagation</literal> &mdash; determines the conversation "
+"propagation style: <literal>begin</literal>, <literal>join</literal>, "
+"<literal>nest</literal>, <literal>none</literal> or <literal>end</literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:666 Controls.xml:727 Controls.xml:916
+#, no-c-format
+msgid ""
+"<literal>pageflow</literal> &mdash; a pageflow definition to begin. (This is "
+"only useful when <literal>propagation=\"begin\"</literal> or "
+"<literal>propagation=\"join\"</literal>.)"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:682
+#, no-c-format
+msgid "&lt;s:button&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:689
+#, no-c-format
+msgid ""
+"A button that supports invocation of an action with control over "
+"conversation propagation. <emphasis>Does not submit the form.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:743
+#, no-c-format
+msgid "&lt;s:selectDate&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:750
+#, no-c-format
+msgid ""
+"Displays a dynamic date picker component that selects a date for the "
+"specified input field. The body of the <literal>selectDate</literal> element "
+"should contain HTML elements, such as text or an image, that prompt the user "
+"to click to display the date picker. The date picker <emphasis>must</"
+"emphasis> be styled using CSS. An example CSS file can be found in the Seam "
+"booking demo as <literal>date.css</literal>, or can be generated using seam-"
+"gen. The CSS styles used to control the appearance of the date picker are "
+"also described below."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:758
+#, no-c-format
+msgid ""
+"<literal>for</literal> &mdash; The id of the input field that the date "
+"picker will insert the selected date into."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:763
+#, no-c-format
+msgid ""
+"<literal>dateFormat</literal> &mdash; The date format string. This should "
+"match the date format of the input field."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:768
+#, no-c-format
+msgid ""
+"<literal>startYear</literal> &mdash; The popup year selector range will "
+"start at this year."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:773
+#, no-c-format
+msgid ""
+"<literal>endYear</literal> &mdash; The popup year selector range will end at "
+"this year."
+msgstr ""
+
+#. Tag: programlisting
+#: Controls.xml:782
+#, no-c-format
+msgid ""
+"&lt;div class=\"row\"&gt;\n"
+"    &lt;h:outputLabel for=\"dob\"&gt;Date of birth&lt;em&gt;*&lt;/em&gt;&lt;/"
+"h:outputLabel&gt;\n"
+"    &lt;h:inputText id=\"dob\" value=\"#{user.dob}\" required=\"true\"&gt;\n"
+"      &lt;s:convertDateTime pattern=\"MM/dd/yyyy\"/&gt;\n"
+"    &lt;/h:inputText&gt;\n"
+"    &lt;s:selectDate for=\"dob\" startYear=\"1910\" endYear=\"2007\"&gt;&lt;"
+"img src=\"img/datepicker.png\"/&gt;&lt;/s:selectDate&gt;\n"
+"    &lt;div class=\"validationError\"&gt;&lt;h:message for=\"dob\"/&gt;&lt;/"
+"div&gt;\n"
+"  &lt;/div&gt;"
+msgstr ""
+
+#. Tag: emphasis
+#: Controls.xml:796
+#, no-c-format
+msgid "CSS Styling"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:798
+#, no-c-format
+msgid ""
+"The following list describes the CSS class names that are used to control "
+"the style of the selectDate control."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:803
+#, no-c-format
+msgid ""
+"<literal>seam-date</literal> &mdash; This class is applied to the outer "
+"<literal>div</literal> containing the popup calendar. (1) It is also applied "
+"to the <literal>table</literal> that controls the inner layout of the "
+"calendar. (2)"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:808
+#, no-c-format
+msgid ""
+"<literal>seam-date-header</literal> &mdash; This class is applied to the "
+"calendar header table row (<literal>tr</literal>) and header table cells "
+"(<literal>td</literal>). (3)"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:813
+#, no-c-format
+msgid ""
+"<literal>seam-date-header-prevMonth</literal> &mdash; This class is applied "
+"to the \"previous month\" table cell, (<literal>td</literal>), which when "
+"clicked causes the calendar to display the month prior to the one currently "
+"displayed. (4)"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:818
+#, no-c-format
+msgid ""
+"<literal>seam-date-header-nextMonth</literal> &mdash; This class is applied "
+"to the \"next month\" table cell, (<literal>td</literal>), which when "
+"clicked causes the calendar to display the month following the one currently "
+"displayed. (5)"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:823
+#, no-c-format
+msgid ""
+"<literal>seam-date-headerDays</literal> &mdash; This class is applied to the "
+"calendar days header row (<literal>tr</literal>), which contains the names "
+"of the week days. (6)"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:828
+#, no-c-format
+msgid ""
+"<literal>seam-date-footer</literal> &mdash; This class is applied to the "
+"calendar footer row (<literal>tr</literal>), which displays the current "
+"date. (7)"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:833
+#, no-c-format
+msgid ""
+"<literal>seam-date-inMonth</literal> &mdash; This class is applied to the "
+"table cell (<literal>td</literal>) elements that contain a date within the "
+"month currently displayed. (8)"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:838
+#, no-c-format
+msgid ""
+"<literal>seam-date-outMonth</literal> &mdash; This class is applied to the "
+"table cell (<literal>td</literal>) elements that contain a date outside of "
+"the month currently displayed. (9)"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:843
+#, no-c-format
+msgid ""
+"<literal>seam-date-selected</literal> &mdash; This class is applied to the "
+"table cell (<literal>td</literal>) element that contains the currently "
+"selected date. (10)"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:848
+#, no-c-format
+msgid ""
+"<literal>seam-date-dayOff-inMonth</literal> &mdash; This class is applied to "
+"the table cell (<literal>td</literal>) elements that contain a \"day off\" "
+"date (i.e. weekend days, Saturday and Sunday) within the currently selected "
+"month. (11)"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:853
+#, no-c-format
+msgid ""
+"<literal>seam-date-dayOff-outMonth</literal> &mdash; This class is applied "
+"to the table cell (<literal>td</literal>) elements that contain a \"day off"
+"\" date (i.e. weekend days, Saturday and Sunday) outside of the currently "
+"selected month. (12)"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:858
+#, no-c-format
+msgid ""
+"<literal>seam-date-hover</literal> &mdash; This class is applied to the "
+"table cell (<literal>td</literal>) element over which the cursor is "
+"hovering. (13)"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:863
+#, no-c-format
+msgid ""
+"<literal>seam-date-monthNames</literal> &mdash; This class is applied to the "
+"<literal>div</literal> control that contains the popup month selector. (14)"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:868
+#, no-c-format
+msgid ""
+"<literal>seam-date-monthNameLink</literal> &mdash; This class is applied to "
+"the anchor (<literal>a</literal>) controls that contain the popup month "
+"names. (15)"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:873
+#, no-c-format
+msgid ""
+"<literal>seam-date-years </literal> &mdash; This class is applied to the "
+"<literal>div</literal> control that contains the popup year selector. (16)"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:878
+#, no-c-format
+msgid ""
+"<literal>seam-date-yearLink</literal> &mdash; This class is applied to the "
+"anchor (<literal>a</literal>) controls that contain the popup years. (15)"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:896
+#, no-c-format
+msgid "&lt;s:conversationPropagation&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:903
+#, no-c-format
+msgid ""
+"Customize the conversation propagation for a command link or button (or "
+"similar JSF control). <emphasis>Facelets only.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:932
+#, no-c-format
+msgid "&lt;s:conversationId&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:939
+#, no-c-format
+msgid ""
+"Add the conversation id to an output link (or similar JSF control). "
+"<emphasis>Facelets only.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:959
+#, no-c-format
+msgid "&lt;s:taskId&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:966
+#, no-c-format
+msgid ""
+"Add the task id to an output link (or similar JSF control), when the task is "
+"available via <literal>#{task}</literal>. <emphasis>Facelets only.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:986
+#, no-c-format
+msgid "&lt;s:fileUpload&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:993
+#, no-c-format
+msgid ""
+"Renders a file upload control. This control must be used within a form with "
+"an encoding type of <literal>multipart/form-data</literal>, i.e:"
+msgstr ""
+
+#. Tag: programlisting
+#: Controls.xml:996
+#, no-c-format
+msgid "&lt;h:form enctype=\"multipart/form-data\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:997
+#, no-c-format
+msgid ""
+"For multipart requests, the Seam Multipart servlet filter must also be "
+"configured in <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Controls.xml:1000
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-class&gt;\n"
+"  &lt;/filter&gt;\n"
+"\n"
+"  &lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;/*&lt;/url-pattern&gt;\n"
+"  &lt;/filter-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:1004
+#, no-c-format
+msgid ""
+"The following configuration options for multipart requests may be configured "
+"in components.xml:"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:1009
+#, no-c-format
+msgid ""
+"<literal>createTempFiles</literal> &mdash; if this option is set to true, "
+"uploaded files are streamed to a temporary file instead of in memory."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:1014
+#, no-c-format
+msgid ""
+"<literal>maxRequestSize</literal> &mdash; the maximum size of a file upload "
+"request, in bytes."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:1019
+#, no-c-format
+msgid "Here&#39;s an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Controls.xml:1022
+#, no-c-format
+msgid ""
+"&lt;component class=\"org.jboss.seam.web.MultipartFilter\"&gt;\n"
+"      &lt;property name=\"createTempFiles\"&gt;true&lt;/property&gt;\n"
+"      &lt;property name=\"maxRequestSize\"&gt;1000000&lt;/property&gt;\n"
+"  &lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:1028
+#, no-c-format
+msgid ""
+"<literal>data</literal> &mdash; this value binding receives the binary file "
+"data. The receiving field should be declared as a <literal>byte[]</literal> "
+"or <literal>InputStream</literal> (required)."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:1033
+#, no-c-format
+msgid ""
+"<literal>contentType</literal> &mdash; this value binding receives the "
+"file&#39;s content type (optional)."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:1038
+#, no-c-format
+msgid ""
+"<literal>fileName</literal> &mdash; this value binding receives the filename "
+"(optional)."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:1043
+#, no-c-format
+msgid ""
+"<literal>accept</literal> &mdash; a comma-separated list of content types to "
+"accept, may not be supported by the browser. E.g. <literal>\"images/png,"
+"images/jpg\"</literal>, <literal>\"images/*\"</literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:1048
+#, no-c-format
+msgid "<literal>style</literal> &mdash; The control&#39;s style"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:1053
+#, no-c-format
+msgid "<literal>styleClass</literal> &mdash; The control&#39;s style class"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Conversations.pot
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Conversations.pot	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Conversations.pot	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1185 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-07-14 00:47+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Conversations.xml:6
+#, no-c-format
+msgid "Conversations and workspace management"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:7
+#, no-c-format
+msgid "It is time to understand Seam&#39;s conversation model in more detail."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:34
+#, no-c-format
+msgid "Seam&#39;s conversation model"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:35
+#, no-c-format
+msgid ""
+"The examples we have seen so far make use of a very simple conversation "
+"model that follows these rules:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:40
+#, no-c-format
+msgid ""
+"There is always a conversation context active during the apply request "
+"values, process validations, update model values, invoke application and "
+"render response phases of the JSF request lifecycle."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:45
+#, no-c-format
+msgid ""
+"At the end of the restore view phase of the JSF request lifecycle, Seam "
+"attempts to restore any previous long-running conversation context. If none "
+"exists, Seam creates a new temporary conversation context."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:50
+#, no-c-format
+msgid ""
+"When an <literal>@Begin</literal> method is encountered, the temporary "
+"conversation context is promoted to a long running conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:55
+#, no-c-format
+msgid ""
+"When an <literal>@End</literal> method is encountered, any long-running "
+"conversation context is demoted to a temporary conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:60
+#, no-c-format
+msgid ""
+"At the end of the render response phase of the JSF request lifecycle, Seam "
+"stores the contents of a long running conversation context or destroys the "
+"contents of a temporary conversation context."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:65
+#, no-c-format
+msgid ""
+"Any faces request (a JSF postback) will propagate the conversation context. "
+"By default, non-faces requests (GET requests, for example) do not propagate "
+"the conversation context, but see below for more information on this."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:70
+#, no-c-format
+msgid ""
+"If the JSF request lifecycle is foreshortened by a redirect, Seam "
+"transparently stores and restores the current conversation context&mdash;"
+"unless the conversation was already ended via <literal>@End"
+"(beforeRedirect=true)</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:75
+#, no-c-format
+msgid ""
+"Seam transparently propagates the conversation context across JSF postbacks "
+"and redirects. If you do not do anything special, a <emphasis>non-faces "
+"request</emphasis> (a GET request for example) will not propagate the "
+"conversation context and will be processed in a new temporary conversation. "
+"This is usually - but not always - the desired behavior."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:78
+#, no-c-format
+msgid ""
+"If you want to propagate a Seam conversation across a non-faces request, you "
+"need to explicitly code the Seam <emphasis>conversation id</emphasis> as a "
+"request parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:81
+#, no-c-format
+msgid ""
+"&lt;a href=\"main.jsf?conversationId=#{conversation.id}\"&gt;Continue&lt;/"
+"a&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:82
+#, no-c-format
+msgid "Or, the more JSF-ish:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:85
+#, no-c-format
+msgid ""
+"&lt;h:outputLink value=\"main.jsf\"&gt;\n"
+"    &lt;f:param name=\"conversationId\" value=\"#{conversation.id}\"/&gt;\n"
+"    &lt;h:outputText value=\"Continue\"/&gt;\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:86 Conversations.xml:94
+#, no-c-format
+msgid "If you use the Seam tag library, this is equivalent:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:89
+#, no-c-format
+msgid ""
+"&lt;h:outputLink value=\"main.jsf\"&gt;\n"
+"    &lt;s:conversationId/&gt;\n"
+"    &lt;h:outputText value=\"Continue\"/&gt;\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:90
+#, no-c-format
+msgid ""
+"If you wish to disable propagation of the conversation context for a "
+"postback, a similar trick is used:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:93
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;f:param name=\"conversationPropagation\" value=\"none\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:97
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"none\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:98
+#, no-c-format
+msgid ""
+"Note that disabling conversation context propagation is absolutely not the "
+"same thing as ending the conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:101
+#, no-c-format
+msgid ""
+"The <literal>conversationPropagation</literal> request parameter, or the "
+"<literal>&lt;s:conversationPropagation&gt;</literal> tag may even be used to "
+"begin and end conversation, or begin a nested conversation."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:104
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"end\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:105
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Child\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"nested\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:106
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Hotel\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"begin\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:107
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Hotel\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"join\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:108
+#, no-c-format
+msgid ""
+"This conversation model makes it easy to build applications which behave "
+"correctly with respect to multi-window operation. For many applications, "
+"this is all that is needed. Some complex applications have either or both of "
+"the following additional requirements:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:113
+#, no-c-format
+msgid ""
+"A conversation spans many smaller units of user interaction, which execute "
+"serially or even concurrently. The smaller <emphasis>nested conversations</"
+"emphasis> have their own isolated set of conversation state, and also have "
+"access to the state of the outer conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:118
+#, no-c-format
+msgid ""
+"The user is able to switch between many conversations within the same "
+"browser window. This feature is called <emphasis>workspace management</"
+"emphasis>."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:126
+#, no-c-format
+msgid "Nested conversations"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:127
+#, no-c-format
+msgid ""
+"A nested conversation is created by invoking a method marked <literal>@Begin"
+"(nested=true)</literal> inside the scope of an existing conversation. A "
+"nested conversation has its own conversation context, and also has read-only "
+"access to the context of the outer conversation. (It can read the outer "
+"conversation&#39;s context variables, but not write to them.) When an "
+"<literal>@End</literal> is subsequently encountered, the nested conversation "
+"will be destroyed, and the outer conversation will resume, by "
+"<emphasis>popping</emphasis> the conversation stack. Conversations may be "
+"nested to any arbitrary depth."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:130
+#, no-c-format
+msgid ""
+"Certain user activity (workspace management, or the back button) can cause "
+"the outer conversation to be resumed before the inner conversation is ended. "
+"In this case it is possible to have multiple concurrent nested conversations "
+"belonging to the same outer conversation. If the outer conversation ends "
+"before a nested conversation ends, Seam destroys all nested conversation "
+"contexts along with the outer context."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:133
+#, no-c-format
+msgid ""
+"A conversation may be thought of as a <emphasis>continuable state</"
+"emphasis>. Nested conversations allow the application to capture a "
+"consistent continuable state at various points in a user interaction, thus "
+"insuring truly correct behavior in the face of backbuttoning and workspace "
+"management."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:136
+#, no-c-format
+msgid ""
+"TODO: an example to show how a nested conversation prevents bad stuff "
+"happening when you backbutton."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:139
+#, no-c-format
+msgid ""
+"Usually, if a component exists in a parent conversation of the current "
+"nested conversation, the nested conversation will use the same instance. "
+"Occasionally, it is useful to have a different instance in each nested "
+"conversation, so that the component instance that exists in the parent "
+"conversation is invisible to its child conversations. You can achieve this "
+"behavior by annotating the component <literal>@PerNestedConversation</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:145
+#, no-c-format
+msgid "Starting conversations with GET requests"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:146
+#, no-c-format
+msgid ""
+"JSF does not define any kind of action listener that is triggered when a "
+"page is accessed via a non-faces request (for example, a HTTP GET request). "
+"This can occur if the user bookmarks the page, or if we navigate to the page "
+"via an <literal>&lt;h:outputLink&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:149
+#, no-c-format
+msgid ""
+"Sometimes we want to begin a conversation immediately the page is accessed. "
+"Since there is no JSF action method, we can&#39;t solve the problem in the "
+"usual way, by annotating the action with <literal>@Begin</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:152
+#, no-c-format
+msgid ""
+"A further problem arises if the page needs some state to be fetched into a "
+"context variable. We have already seen two ways to solve this problem. If "
+"that state is held in a Seam component, we can fetch the state in a "
+"<literal>@Create</literal> method. If not, we can define a "
+"<literal>@Factory</literal> method for the context variable."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:155
+#, no-c-format
+msgid ""
+"If none of these options works for you, Seam lets you define a "
+"<emphasis>page action</emphasis> in the <literal>pages.xml</literal> file."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:158
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\" action=\"#{messageManager.list}\"/"
+"&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:159
+#, no-c-format
+msgid ""
+"This action method is called at the beginning of the render response phase, "
+"any time the page is about to be rendered. If a page action returns a non-"
+"null outcome, Seam will process any appropriate JSF and Seam navigation "
+"rules, possibly resulting in a completely different page being rendered."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:162
+#, no-c-format
+msgid ""
+"If <emphasis>all</emphasis> you want to do before rendering the page is "
+"begin a conversation, you could use a built-in action method that does just "
+"that:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:165
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\" action=\"#{conversation.begin}\"/"
+"&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:166
+#, no-c-format
+msgid ""
+"Note that you can also call this built-in action from a JSF control, and, "
+"similarly, you can use <literal>#{conversation.end}</literal> to end "
+"conversations."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:169
+#, no-c-format
+msgid ""
+"If you want more control, to join existing conversations or begin a nested "
+"conversion, to begin a pageflow or an atomic conversation, you should use "
+"the <literal>&lt;begin-conversation&gt;</literal> element."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:172
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\"&gt;\n"
+"       &lt;begin-conversation nested=\"true\" pageflow=\"AddItem\"/&gt;\n"
+"    &lt;page&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:173
+#, no-c-format
+msgid "There is also an <literal>&lt;end-conversation&gt;</literal> element."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:176
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/home.jsp\"&gt;\n"
+"       &lt;end-conversation/&gt;\n"
+"    &lt;page&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:177
+#, no-c-format
+msgid "To solve the first problem, we now have five options:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:182
+#, no-c-format
+msgid ""
+"Annotate the <literal>@Create</literal> method with <literal>@Begin</literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:187
+#, no-c-format
+msgid ""
+"Annotate the <literal>@Factory</literal> method with <literal>@Begin</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:192
+#, no-c-format
+msgid "Annotate the Seam page action method with <literal>@Begin</literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:197
+#, no-c-format
+msgid ""
+"Use <literal>&lt;begin-conversation&gt;</literal> in <literal>pages.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:202
+#, no-c-format
+msgid ""
+"Use <literal>#{conversation.begin}</literal> as the Seam page action method"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:210
+#, no-c-format
+msgid ""
+"Using <literal>&lt;s:link&gt;</literal> and <literal>&lt;s:button&gt;</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:211
+#, no-c-format
+msgid ""
+"JSF command links always perform a form submission via JavaScript, which "
+"breaks the web browser&#39;s \"open in new window\" or \"open in new tab\" "
+"feature. In plain JSF, you need to use an <literal>&lt;h:outputLink&gt;</"
+"literal> if you need this functionality. But there are two major limitations "
+"to <literal>&lt;h:outputLink&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:216
+#, no-c-format
+msgid ""
+"JSF provides no way to attach an action listener to an <literal>&lt;h:"
+"outputLink&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:221
+#, no-c-format
+msgid ""
+"JSF does not propagate the selected row of a <literal>DataModel</literal> "
+"since there is no actual form submission."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:226
+#, no-c-format
+msgid ""
+"Seam provides the notion of a <emphasis>page action</emphasis> to help solve "
+"the first problem, but this does nothing to help us with the second problem. "
+"We <emphasis>could</emphasis> work around this by using the RESTful approach "
+"of passing a request parameter and requerying for the selected object on the "
+"server side. In some cases&mdash;such as the Seam blog example "
+"application&mdash;this is indeed the best approach. The RESTful style "
+"supports bookmarking, since it does not require server-side state. In other "
+"cases, where we don&#39;t care about bookmarks, the use of "
+"<literal>@DataModel</literal> and <literal>@DataModelSelection</literal> is "
+"just so convenient and transparent!"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:229
+#, no-c-format
+msgid ""
+"To fill in this missing functionality, and to make conversation propagation "
+"even simpler to manage, Seam provides the <literal>&lt;s:link&gt;</literal> "
+"JSF tag."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:232
+#, no-c-format
+msgid "The link may specify just the JSF view id:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:235
+#, no-c-format
+msgid "&lt;s:link view=“/login.xhtml” value=“Login”/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:236
+#, no-c-format
+msgid ""
+"Or, it may specify an action method (in which case the action outcome "
+"determines the page that results):"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:239
+#, no-c-format
+msgid "&lt;s:link action=“#{login.logout}” value=“Logout”/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:240
+#, no-c-format
+msgid ""
+"If you specify <emphasis>both</emphasis> a JSF view id and an action method, "
+"the &#39;view&#39; will be used <emphasis>unless</emphasis> the action "
+"method returns a non-null outcome:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:243
+#, no-c-format
+msgid ""
+"&lt;s:link view=\"/loggedOut.xhtml\"  action=“#{login.logout}” "
+"value=“Logout”/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:244
+#, no-c-format
+msgid ""
+"The link automatically propagates the selected row of a <literal>DataModel</"
+"literal> using inside <literal>&lt;h:dataTable&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:247
+#, no-c-format
+msgid ""
+"&lt;s:link view=“/hotel.xhtml” action=“#{hotelSearch.selectHotel}” value=“#"
+"{hotel.name}”/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:248
+#, no-c-format
+msgid "You can leave the scope of an existing conversation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:251
+#, no-c-format
+msgid "&lt;s:link view=“/main.xhtml” propagation=“none”/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:252
+#, no-c-format
+msgid "You can begin, end, or nest conversations:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:255
+#, no-c-format
+msgid "&lt;s:link action=“#{issueEditor.viewComment}” propagation=“nest”/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:256
+#, no-c-format
+msgid ""
+"If the link begins a conversation, you can even specify a pageflow to be "
+"used:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:259
+#, no-c-format
+msgid ""
+"&lt;s:link action=“#{documentEditor.getDocument}” propagation=“begin” \n"
+"        pageflow=“EditDocument”/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:260
+#, no-c-format
+msgid ""
+"The <literal>taskInstance</literal> attribute if for use in jBPM task lists:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:263
+#, no-c-format
+msgid ""
+"&lt;s:link action=“#{documentApproval.approveOrReject}” taskInstance=“#"
+"{task}”/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:264
+#, no-c-format
+msgid "(See the DVD Store demo application for examples of this.)"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:267
+#, no-c-format
+msgid ""
+"Finally, if you need the <emphasis>link</emphasis> to be rendered as a "
+"button, use <literal>&lt;s:button&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:270
+#, no-c-format
+msgid "&lt;s:button action=“#{login.logout}” value=“Logout”/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:274
+#, no-c-format
+msgid "Success messages"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:275
+#, no-c-format
+msgid ""
+"It is quite common to display a message to the user indicating success or "
+"failure of an action. It is convenient to use a JSF <literal>FacesMessage</"
+"literal> for this. Unfortunately, a successful action often requires a "
+"browser redirect, and JSF does not propagate faces messages across "
+"redirects. This makes it quite difficult to display success messages in "
+"plain JSF."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:278
+#, no-c-format
+msgid ""
+"The built in conversation-scoped Seam component named "
+"<literal>facesMessages</literal> solves this problem. (You must have the "
+"Seam redirect filter installed.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:281
+#, no-c-format
+msgid ""
+"@Name(\"editDocumentAction\")\n"
+"@Stateless\n"
+"public class EditDocumentBean implements EditDocument {\n"
+"    @In EntityManager em;\n"
+"    @In Document document;\n"
+"    @In FacesMessages facesMessages;\n"
+"    \n"
+"    public String update() {\n"
+"        em.merge(document);\n"
+"        facesMessages.add(\"Document updated\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:282
+#, no-c-format
+msgid ""
+"Any message added to <literal>facesMessages</literal> is used in the very "
+"next render response phase for the current conversation. This even works "
+"when there is no long-running conversation since Seam preserves even "
+"temporary conversation contexts across redirects."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:285
+#, no-c-format
+msgid "You can even include JSF EL expressions in a faces message summary:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:288
+#, no-c-format
+msgid "facesMessages.add(\"Document #{document.title} was updated\");"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:289
+#, no-c-format
+msgid "You may display the messages in the usual way, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:292
+#, no-c-format
+msgid "&lt;h:messages globalOnly=\"true\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:296
+#, no-c-format
+msgid "Using an <emphasis>explicit</emphasis> conversation ID"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:297
+#, no-c-format
+msgid ""
+"Ordinarily, Seam generates a meaningless unique ID for each conversation in "
+"each session. You can customize the id value when you begin the conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:300
+#, no-c-format
+msgid ""
+"This feature can be used to customize the conversation id generation "
+"algorithm like so:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:303
+#, no-c-format
+msgid ""
+"@Begin(id=\"#{myConversationIdGenerator.nextId}\") \n"
+"public void editHotel() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:304
+#, no-c-format
+msgid "Or it can be used to assign a meaningful conversation id:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:307
+#, no-c-format
+msgid ""
+"@Begin(id=\"hotel#{hotel.id}\") \n"
+"public String editHotel() { ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:308
+#, no-c-format
+msgid ""
+"@Begin(id=\"hotel#{hotelsDataModel.rowData.id}\") \n"
+"public String selectHotel() { ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:309
+#, no-c-format
+msgid ""
+"@Begin(id=\"entry#{params[&#39;blogId&#39;]}\")\n"
+"public String viewBlogEntry() { ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:310
+#, no-c-format
+msgid ""
+"@BeginTask(id=\"task#{taskInstance.id}\") \n"
+"public String approveDocument() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:311
+#, no-c-format
+msgid ""
+"Clearly, these example result in the same conversation id every time a "
+"particular hotel, blog or task is selected. So what happens if a "
+"conversation with the same conversation id already exists when the new "
+"conversation begins? Well, Seam detects the existing conversation and "
+"redirects to that conversation without running the <literal>@Begin</literal> "
+"method again. This feature helps control the number of workspaces that are "
+"created when using workspace management."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:317
+#, no-c-format
+msgid "Workspace management"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:318
+#, no-c-format
+msgid ""
+"Workspace management is the ability to <emphasis>switch</emphasis> "
+"conversations in a single window. Seam makes workspace management completely "
+"transparent at the level of the Java code. To enable workspace management, "
+"all you need to do is:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:323
+#, no-c-format
+msgid ""
+"Provide <emphasis>description</emphasis> text for each view ID (when using "
+"JSF or Seam navigation rules) or page node (when using jPDL pageflows). This "
+"description text is displayed to the user by the workspace switchers."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:328
+#, no-c-format
+msgid ""
+"Include one or more of the standard workspace switcher JSP or facelets "
+"fragments in your pages. The standard fragments support workspace management "
+"via a drop down menu, a list of conversations, or breadcrumbs."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:333
+#, no-c-format
+msgid "Workspace management and JSF navigation"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:334
+#, no-c-format
+msgid ""
+"When you use JSF or Seam navigation rules, Seam switches to a conversation "
+"by restoring the current <literal>view-id</literal> for that conversation. "
+"The descriptive text for the workspace is defined in a file called "
+"<literal>pages.xml</literal> that Seam expects to find in the <literal>WEB-"
+"INF</literal> directory, right next to <literal>faces-config.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:337
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/main.xhtml\"&gt;Search hotels: #{hotelBooking."
+"searchString}&lt;/page&gt;\n"
+"    &lt;page view-id=\"/hotel.xhtml\"&gt;View hotel: #{hotel.name}&lt;/"
+"page&gt;\n"
+"    &lt;page view-id=\"/book.xhtml\"&gt;Book hotel: #{hotel.name}&lt;/"
+"page&gt;\n"
+"    &lt;page view-id=\"/confirm.xhtml\"&gt;Confirm: #{booking.description}"
+"&lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:339
+#, no-c-format
+msgid ""
+"Note that if this file is missing, the Seam application will continue to "
+"work perfectly, the only missing functionality will be the ability to switch "
+"workspaces."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:346
+#, no-c-format
+msgid "Workspace management and jPDL pageflow"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:347
+#, no-c-format
+msgid ""
+"When you use a jPDL pageflow definition, Seam switches to a conversation by "
+"restoring the current jBPM process state. This is a more flexible model "
+"since it allows the same <literal>view-id</literal> to have different "
+"descriptions depending upon the current <literal>&lt;page&gt;</literal> "
+"node. The description text is defined by the <literal>&lt;page&gt;</literal> "
+"node:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:350
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"shopping\"&gt;\n"
+"\n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"browse\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;page name=\"browse\" view-id=\"/browse.xhtml\"&gt;\n"
+"      &lt;description&gt;DVD Search: #{search.searchPattern}&lt;/"
+"description&gt;\n"
+"      &lt;transition to=\"browse\"/&gt;\n"
+"      &lt;transition name=\"checkout\" to=\"checkout\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"checkout\" view-id=\"/checkout.xhtml\"&gt;\n"
+"      &lt;description&gt;Purchase: $#{cart.total}&lt;/description&gt;\n"
+"      &lt;transition to=\"checkout\"/&gt;\n"
+"      &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"complete\" view-id=\"/complete.xhtml\"&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:354
+#, no-c-format
+msgid "The conversation switcher"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:355
+#, no-c-format
+msgid ""
+"Include the following fragment in your JSP or facelets page to get a drop-"
+"down menu that lets you switch to any current conversation, or to any other "
+"page of the application:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:358
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{switcher.conversationIdOrOutcome}\"&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Find Issues\" itemValue=\"findIssue\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Create Issue\" itemValue=\"editIssue\"/"
+"&gt;\n"
+"    &lt;f:selectItems value=\"#{switcher.selectItems}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{switcher.select}\" value=\"Switch\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:359
+#, no-c-format
+msgid ""
+"In this example, we have a menu that includes an item for each conversation, "
+"together with two additional items that let the user begin a new "
+"conversation."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:373
+#, no-c-format
+msgid "The conversation list"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:374
+#, no-c-format
+msgid ""
+"The conversation list is very similar to the conversation switcher, except "
+"that it is displayed as a table:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:377
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{conversationList}\" var=\"entry\"\n"
+"        rendered=\"#{not empty conversationList}\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Workspace&lt;/f:facet&gt;\n"
+"        &lt;h:commandLink action=\"#{entry.select}\" value=\"#{entry."
+"description}\"/&gt;\n"
+"        &lt;h:outputText value=\"[current]\" rendered=\"#{entry.current}\"/"
+"&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Activity&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{entry.startDatetime}\"&gt;\n"
+"            &lt;f:convertDateTime type=\"time\" pattern=\"hh:mm a\"/&gt;\n"
+"        &lt;/h:outputText&gt;\n"
+"        &lt;h:outputText value=\" - \"/&gt;\n"
+"        &lt;h:outputText value=\"#{entry.lastDatetime}\"&gt;\n"
+"            &lt;f:convertDateTime type=\"time\" pattern=\"hh:mm a\"/&gt;\n"
+"        &lt;/h:outputText&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"        &lt;h:commandButton action=\"#{entry.select}\" value=\"#{msg.Switch}"
+"\"/&gt;\n"
+"        &lt;h:commandButton action=\"#{entry.destroy}\" value=\"#{msg."
+"Destroy}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:378
+#, no-c-format
+msgid ""
+"We imagine that you will want to customize this for your own application."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:389
+#, no-c-format
+msgid ""
+"The conversation list is nice, but it takes up a lot of space on the page, "
+"so you probably do not want to put it on <emphasis>every</emphasis> page."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:392
+#, no-c-format
+msgid "Notice that the conversation list lets the user destroy workspaces."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:398
+#, no-c-format
+msgid "Breadcrumbs"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:399
+#, no-c-format
+msgid ""
+"Breadcrumbs are useful in applications which use a nested conversation "
+"model. The breadcrumbs are a list of links to conversations in the current "
+"conversation stack:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:402
+#, no-c-format
+msgid ""
+"&lt;t:dataList value=\"#{conversationStack}\" var=\"entry\"&gt;\n"
+"    &lt;h:outputText value=\" | \"/&gt; \n"
+"    &lt;h:commandLink value=\"#{entry.description}\" action=\"#{entry.select}"
+"\"/&gt;\n"
+"&lt;/t:dataList&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:415
+#, no-c-format
+msgid ""
+"Please refer to the Seam Issue Tracker demo to see all this functionality in "
+"action!"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:423
+#, no-c-format
+msgid "Conversational components and JSF component bindings"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:424
+#, no-c-format
+msgid ""
+"Conversational components have one minor limitation: they cannot be used to "
+"hold bindings to JSF components. (We generally prefer not to use this "
+"feature of JSF unless absolutely necessary, since it creates a hard "
+"dependency from application logic to the view.) On a postback request, "
+"component bindings are updated during the Restore View phase, before the "
+"Seam conversation context has been restored."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:427
+#, no-c-format
+msgid ""
+"To work around this use an event scoped component to store the component "
+"bindings and inject it into the conversation scoped component that requires "
+"it."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:430
+#, no-c-format
+msgid ""
+"@Name(\"grid\")\n"
+"@Scope(ScopeType.EVENT)\n"
+"public class Grid\n"
+"{\n"
+"    private HtmlPanelGrid htmlPanelGrid;\n"
+"\n"
+"    // getters and setters\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:431
+#, no-c-format
+msgid ""
+"@Name(\"gridEditor\")\n"
+"@Scope(ScopeType.CONVERSATION)\n"
+"public class GridEditor\n"
+"{\n"
+"    @In(required=false)\n"
+"    private Grid grid;\n"
+"    \n"
+"    ...\n"
+"}"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Drools.pot
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Drools.pot	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Drools.pot	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,341 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-07-14 00:47+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Drools.xml:5
+#, no-c-format
+msgid "Seam and JBoss Rules"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:7
+#, no-c-format
+msgid ""
+"Seam makes it easy to call JBoss Rules (Drools) rulebases from Seam "
+"components or jBPM process definitions."
+msgstr ""
+
+#. Tag: title
+#: Drools.xml:13
+#, no-c-format
+msgid "Installing rules"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:15
+#, no-c-format
+msgid ""
+"The first step is to make an instance of <literal>org.drools.RuleBase</"
+"literal> available in a Seam context variable. For testing purposes, Seam "
+"provides a built-in component that compiles a static set of rules from the "
+"classpath. You can install this component via <literal>components.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:22
+#, no-c-format
+msgid ""
+"<![CDATA[<drools:rule-base name=\"policyPricingRules\">\n"
+"    <drools:rule-files>\n"
+"        <value>policyPricingRules.drl</value>\n"
+"    </drools:rule-files>\n"
+"</drools:rule-base>]]>"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:24
+#, no-c-format
+msgid ""
+"This component compiles rules from a set of <literal>.drl</literal> files "
+"and caches an instance of <literal>org.drools.RuleBase</literal> in the Seam "
+"<literal>APPLICATION</literal> context. Note that it is quite likely that "
+"you will need to install multiple rule bases in a rule-driven application."
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:32
+#, no-c-format
+msgid ""
+"If you want to use a Drools DSL, you also need to specify the DSL definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:37
+#, no-c-format
+msgid ""
+"<![CDATA[<drools:rule-base name=\"policyPricingRules\" dsl-file="
+"\"policyPricing.dsl\">\n"
+"    <drools:rule-files>\n"
+"        <value>policyPricingRules.drl</value>\n"
+"    </drools:rule-files>\n"
+"</drools:rule-base>]]>"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:39
+#, no-c-format
+msgid ""
+"In most rules-driven applications, rules need to be dynamically deployable, "
+"so a production application will want to use a Drools RuleAgent to manage "
+"the RuleBase. The RuleAgent can connect to a Drools rule server (BRMS) or "
+"hot deploy rules packages from a local file repository. The RulesAgent-"
+"managed RuleBase is also configurable in <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:47
+#, no-c-format
+msgid ""
+"<![CDATA[<drools:rule-agent name=\"insuranceRules\" \n"
+"                    configurationFile=\"/WEB-INF/deployedrules.properties\" /"
+">]]>"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:49
+#, no-c-format
+msgid ""
+"The properties file contains properties specific to the RulesAgent. Here is "
+"an example configuration file from the Drools example distribution."
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:52
+#, no-c-format
+msgid ""
+"newInstance=true\n"
+"url=http://localhost:8080/drools-jbrms/org.drools.brms.JBRMS/package/org."
+"acme.insurance/fmeyer\n"
+"localCacheDir=/Users/fernandomeyer/projects/jbossrules/drools-examples/"
+"drools-examples-brms/cache\n"
+"poll=30\n"
+"name=insuranceconfig"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:55
+#, no-c-format
+msgid ""
+"It is also possible to configure the options on the component directly, "
+"bypassing the configuration file."
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:57
+#, no-c-format
+msgid ""
+"<![CDATA[<drools:rule-agent name=\"insuranceRules\"\n"
+"   url=\"http://localhost:8080/drools-jbrms/org.drools.brms.JBRMS/package/"
+"org.acme.insurance/fmeyer\"\n"
+"   local-cache-dir=\"/Users/fernandomeyer/projects/jbossrules/drools-"
+"examples/drools-examples-brms/cache\"\n"
+"   poll=\"30\"\n"
+"   configuration-name=\"insuranceconfig\" />]]>"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:59
+#, no-c-format
+msgid ""
+"Next, we need to make an instance of <literal>org.drools.WorkingMemory</"
+"literal> available to each conversation. (Each <literal>WorkingMemory</"
+"literal> accumulates facts relating to the current conversation.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:65
+#, no-c-format
+msgid ""
+"<![CDATA[<drools:managed-working-memory name=\"policyPricingWorkingMemory\" "
+"auto-create=\"true\" rule-base=\"#{policyPricingRules}\"/>]]>"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:67
+#, no-c-format
+msgid ""
+"Notice that we gave the <literal>policyPricingWorkingMemory</literal> a "
+"reference back to our rule base via the <literal>ruleBase</literal> "
+"configuration property."
+msgstr ""
+
+#. Tag: title
+#: Drools.xml:76
+#, no-c-format
+msgid "Using rules from a Seam component"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:78
+#, no-c-format
+msgid ""
+"We can now inject our <literal>WorkingMemory</literal> into any Seam "
+"component, assert facts, and fire rules:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:83
+#, no-c-format
+msgid ""
+"<![CDATA[@In WorkingMemory policyPricingWorkingMemory;\n"
+"\n"
+"@In Policy policy;\n"
+"@In Customer customer;\n"
+"\n"
+"public void pricePolicy() throws FactException\n"
+"{\n"
+"    policyPricingWorkingMemory.assertObject(policy);\n"
+"    policyPricingWorkingMemory.assertObject(customer);\n"
+"    policyPricingWorkingMemory.fireAllRules();\n"
+"}]]>"
+msgstr ""
+
+#. Tag: title
+#: Drools.xml:88
+#, no-c-format
+msgid "Using rules from a jBPM process definition"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:90
+#, no-c-format
+msgid ""
+"You can even allow a rule base to act as a jBPM action handler, decision "
+"handler, or assignment handler&#8212;in either a pageflow or business "
+"process definition."
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:96
+#, no-c-format
+msgid ""
+"<![CDATA[<decision name=\"approval\">\n"
+"         \n"
+"    <handler class=\"org.jboss.seam.drools.DroolsDecisionHandler\">\n"
+"        <workingMemoryName>orderApprovalRulesWorkingMemory</"
+"workingMemoryName>\n"
+"        <assertObjects>\n"
+"            <element>#{customer}</element>\n"
+"            <element>#{order}</element>\n"
+"            <element>#{order.lineItems}</element>\n"
+"        </assertObjects>\n"
+"    </handler>\n"
+"    \n"
+"    <transition name=\"approved\" to=\"ship\">\n"
+"        <action class=\"org.jboss.seam.drools.DroolsActionHandler\">\n"
+"            <workingMemoryName>shippingRulesWorkingMemory</"
+"workingMemoryName>\n"
+"            <assertObjects>\n"
+"                <element>#{customer}</element>\n"
+"                <element>#{order}</element>\n"
+"                <element>#{order.lineItems}</element>\n"
+"            </assertObjects>\n"
+"        </action>\n"
+"    </transition>\n"
+"    \n"
+"    <transition name=\"rejected\" to=\"cancelled\"/>\n"
+"    \n"
+"</decision>]]>"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:98
+#, no-c-format
+msgid ""
+"The <literal>&lt;assertObjects&gt;</literal> element specifies EL "
+"expressions that return an object or collection of objects to be asserted as "
+"facts into the <literal>WorkingMemory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:104
+#, no-c-format
+msgid "There is also support for using Drools for jBPM task assignments:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:108
+#, no-c-format
+msgid ""
+"<![CDATA[<task-node name=\"review\">\n"
+"    <task name=\"review\" description=\"Review Order\">\n"
+"        <assignment handler=\"org.jboss.seam.drools.DroolsAssignmentHandler"
+"\">\n"
+"            <workingMemoryName>orderApprovalRulesWorkingMemory</"
+"workingMemoryName>\n"
+"            <assertObjects>\n"
+"                <element>#{actor}</element>\n"
+"                <element>#{customer}</element>\n"
+"                <element>#{order}</element>\n"
+"                <element>#{order.lineItems}</element>\n"
+"            </assertObjects>\n"
+"        </assignment>\n"
+"    </task>\n"
+"    <transition name=\"rejected\" to=\"cancelled\"/>\n"
+"    <transition name=\"approved\" to=\"approved\"/>\n"
+"</task-node>]]>"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:110
+#, no-c-format
+msgid ""
+"Certain objects are available to the rules as Drools globals, namely the "
+"jBPM <literal>Assignable</literal>, as <literal>assignable</literal> and a "
+"Seam <literal>Decision</literal> object, as <literal>decision</literal>. "
+"Rules which handle decisions should call <literal>decision.setOutcome"
+"(\"result\")</literal> to determine the result of the decision. Rules which "
+"perform assignments should set the actor id using the <literal>Assignable</"
+"literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:119
+#, no-c-format
+msgid ""
+"<![CDATA[package org.jboss.seam.examples.shop\n"
+"\n"
+"import org.jboss.seam.drools.Decision\n"
+"\n"
+"global Decision decision\n"
+"\n"
+"rule \"Approve Order For Loyal Customer\"\n"
+"  when\n"
+"    Customer( loyaltyStatus == \"GOLD\" )\n"
+"    Order( totalAmount <= 10000 )\n"
+"  then\n"
+"    decision.setOutcome(\"approved\");\n"
+"end]]>"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:121
+#, no-c-format
+msgid ""
+"<![CDATA[package org.jboss.seam.examples.shop\n"
+"\n"
+"import org.jbpm.taskmgmt.exe.Assignable\n"
+"\n"
+"global Assignable assignable\n"
+"\n"
+"rule \"Assign Review For Small Order\"\n"
+"  when\n"
+"    Order( totalAmount <= 100 )\n"
+"  then\n"
+"    assignable.setPooledActors( new String[] {\"reviewers\"} );\n"
+"end]]>"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Elenhancements.pot
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Elenhancements.pot	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Elenhancements.pot	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,222 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-07-14 00:47+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Elenhancements.xml:6
+#, no-c-format
+msgid "Expression language enhancements"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:7
+#, no-c-format
+msgid ""
+"The standard Unified Expression Language (EL) assumes that any parameters to "
+"a method expression will be provided by Java code. This means that a method "
+"with parameters cannot be used as a JSF method binding. Seam provides an "
+"enhancement to the EL that allows parameters to be included in a method "
+"expression itself. This applies to <emphasis>any</emphasis> Seam method "
+"expression, including any JSF method binding, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:10
+#, no-c-format
+msgid ""
+"&lt;s:commandButton action=\"#{hotelBooking.bookHotel(hotel)}\" value=\"Book "
+"Hotel\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:12
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:13
+#, no-c-format
+msgid ""
+"To use this feature in Facelets, you will need to declare a special view "
+"handler, <literal>SeamFaceletViewHandler</literal> in <literal>faces-config."
+"xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:16
+#, no-c-format
+msgid ""
+"&lt;faces-config&gt;\n"
+"    &lt;application&gt;\n"
+"        &lt;view-handler&gt;org.jboss.seam.ui.facelet."
+"SeamFaceletViewHandler&lt;/view-handler&gt;\n"
+"    &lt;/application&gt;\n"
+"&lt;/faces-config&gt;"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:20
+#, no-c-format
+msgid "Usage"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:21
+#, no-c-format
+msgid "Parameters are surrounded by parentheses, and separated by commas:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:24
+#, no-c-format
+msgid ""
+"&lt;h:commandButton action=\"#{hotelBooking.bookHotel(hotel, user)}\" value="
+"\"Book Hotel\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:25
+#, no-c-format
+msgid ""
+"The parameters <literal>hotel</literal> and <literal>user</literal> will be "
+"evaluated as value expressions and passed to the <literal>bookHotel()</"
+"literal> method of the component. This gives you an alternative to the use "
+"of <literal>@In</literal>."
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:28
+#, no-c-format
+msgid "Any value expression may be used as a parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:31
+#, no-c-format
+msgid ""
+"&lt;h:commandButton action=\"#{hotelBooking.bookHotel(hotel.id, user."
+"username)}\" value=\"Book Hotel\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:32
+#, no-c-format
+msgid "You may even pass literal strings using single or double quotes:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:35
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=”#{printer.println( ‘Hello world!’ )}” "
+"value=”Hello”/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:36
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=’#{printer.println( “Hello again” )}’ value=’Hello’/"
+"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:37
+#, no-c-format
+msgid ""
+"You might even want to use this notation for all your action methods, even "
+"when you do not have parameters to pass. This improves readability by making "
+"it clear that the expression is a method expression and not a value "
+"expression:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:40
+#, no-c-format
+msgid "&lt;s:link value=\"Cancel\" action=\"#{hotelBooking.cancel()}\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:44
+#, no-c-format
+msgid "Limitations"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:45
+#, no-c-format
+msgid "Please be aware of the following limitations:"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:49
+#, no-c-format
+msgid "Incompatibility with JSP 2.1"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:50
+#, no-c-format
+msgid ""
+"This extension is not currently compatible with JSP 2.1. So if you want to "
+"use this extension with JSF 1.2, you will need to use Facelets. The "
+"extension works correctly with JSP 2.0."
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:56
+#, no-c-format
+msgid "Calling a <literal>MethodExpression</literal> from Java code"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:57
+#, no-c-format
+msgid ""
+"Normally, when a <literal>MethodExpression</literal> or "
+"<literal>MethodBinding</literal> is created, the parameter types are passed "
+"in by JSF. In the case of a method binding, JSF assumes that there are no "
+"parameters to pass. With this extension, we can’t know the parameter types "
+"until after the expression has been evaluated. This has two minor "
+"consequences:"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:62
+#, no-c-format
+msgid ""
+"When you invoke a <literal>MethodExpression</literal> in Java code, "
+"parameters you pass may be ignored. Parameters defined in the expression "
+"will take precedence."
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:67
+#, no-c-format
+msgid ""
+"Ordinarily, it is safe to call <literal>methodExpression.getMethodInfo()."
+"getParamTypes()</literal> at any time. For an expression with parameters, "
+"you must first invoke the <literal>MethodExpression</literal> before calling "
+"<literal>getParamTypes()</literal>."
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:72
+#, no-c-format
+msgid ""
+"Both of these cases are exceedingly rare and only apply when you want to "
+"invoke the <literal>MethodExpression</literal> by hand in Java code."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Events.pot
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Events.pot	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Events.pot	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1500 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-07-14 00:47+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Events.xml:6
+#, no-c-format
+msgid "Events, interceptors and exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:7
+#, no-c-format
+msgid ""
+"Complementing the contextual component model, there are two further basic "
+"concepts that facilitate the extreme loose-coupling that is the distinctive "
+"feature of Seam applications. The first is a strong event model where events "
+"may be mapped to event listeners via JSF-like method binding expressions. "
+"The second is the pervasive use of annotations and interceptors to apply "
+"cross-cutting concerns to components which implement business logic."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:10
+#, no-c-format
+msgid "Seam events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:11
+#, no-c-format
+msgid ""
+"The Seam component model was developed for use with <emphasis>event-driven "
+"applications</emphasis>, specifically to enable the development of fine-"
+"grained, loosely-coupled components in a fine-grained eventing model. Events "
+"in Seam come in several types, most of which we have already seen:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:16
+#, no-c-format
+msgid "JSF events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:21
+#, no-c-format
+msgid "jBPM transition events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:26
+#, no-c-format
+msgid "Seam page actions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:31
+#, no-c-format
+msgid "Seam component-driven events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:36
+#, no-c-format
+msgid "Seam contextual events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:41
+#, no-c-format
+msgid ""
+"All of these various kinds of events are mapped to Seam components via JSF "
+"EL method binding expressions. For a JSF event, this is defined in the JSF "
+"template:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:44
+#, no-c-format
+msgid ""
+"&lt;h:commandButton value=\"Click me!\" action=\"#{helloWorld.sayHello}\"/"
+"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:45
+#, no-c-format
+msgid ""
+"For a jBPM transition event, it is specified in the jBPM process definition "
+"or pageflow definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:48
+#, no-c-format
+msgid ""
+"&lt;start-page name=\"hello\" view-id=\"/hello.jsp\"&gt;\n"
+"    &lt;transition to=\"hello\"&gt;\n"
+"        &lt;action expression=\"#{helloWorld.sayHello}\"/&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/start-page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:49
+#, no-c-format
+msgid ""
+"You can find out more information about JSF events and jBPM events "
+"elsewhere. Lets concentrate for now upon the two additional kinds of events "
+"defined by Seam."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:52
+#, no-c-format
+msgid "Page actions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:53
+#, no-c-format
+msgid ""
+"A Seam page action is an event that occurs just before we render a page. We "
+"declare page actions in <literal>WEB-INF/pages.xml</literal>. We can define "
+"a page action for either a particular JSF view id:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:56
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\" action=\"#{helloWorld.sayHello}\"/&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:57
+#, no-c-format
+msgid ""
+"Or we can use a wildcard to specify an action that applies to all view ids "
+"that match the pattern:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:60
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello/*\" action=\"#{helloWorld.sayHello}\"/&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:61
+#, no-c-format
+msgid ""
+"If multiple wildcarded page actions match the current view-id, Seam will "
+"call all the actions, in order of least-specific to most-specific."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:64
+#, no-c-format
+msgid ""
+"The page action method can return a JSF outcome. If the outcome is non-null, "
+"Seam will use the defined navigation rules to navigate to a view."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:67
+#, no-c-format
+msgid ""
+"Furthermore, the view id mentioned in the <literal>&lt;page&gt;</literal> "
+"element need not correspond to a real JSP or Facelets page. So, we can "
+"reproduce the functionality of a traditional action-oriented framework like "
+"Struts or WebWork using page actions. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:70
+#, no-c-format
+msgid "TODO: translate struts action into page action"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:71
+#, no-c-format
+msgid ""
+"This is quite useful if you want to do complex things in response to non-"
+"faces requests (for example, HTTP GET requests)."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:74
+#, no-c-format
+msgid "Page parameters"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:75
+#, no-c-format
+msgid ""
+"A JSF faces request (a form submission) encapsulates both an "
+"<emphasis>action</emphasis> (a method binding) and <emphasis>parameters</"
+"emphasis> (input value bindings). A page action might also require "
+"parameters."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:78
+#, no-c-format
+msgid ""
+"Since GET requests are bookmarkable, page parameters are passed as human-"
+"readable request parameters. (Unlike JSF form inputs, which are anything "
+"but!)"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:81
+#, no-c-format
+msgid ""
+"Seam lets us provide a value binding that maps a named request parameter to "
+"an attribute of a model object."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:84
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\" action=\"#{helloWorld.sayHello}\"&gt;\n"
+"        &lt;param name=\"firstName\" value=\"#{person.firstName}\"/&gt;\n"
+"        &lt;param name=\"lastName\" value=\"#{person.lastName}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:85
+#, no-c-format
+msgid ""
+"The <literal>&lt;param&gt;</literal> declaration is bidirectional, just like "
+"a value binding for a JSF input:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:90
+#, no-c-format
+msgid ""
+"When a non-faces (GET) request for the view id occurs, Seam sets the value "
+"of the named request parameter onto the model object, after performing "
+"appropriate type conversions."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:95
+#, no-c-format
+msgid ""
+"Any <literal>&lt;s:link&gt;</literal> or <literal>&lt;s:button&gt;</literal> "
+"transparently includes the request parameter. The value of the parameter is "
+"determined by evaluating the value binding during the render phase (when the "
+"<literal>&lt;s:link&gt;</literal> is rendered)."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:100
+#, no-c-format
+msgid ""
+"Any navigation rule with a <literal>&lt;redirect/&gt;</literal> to the view "
+"id transparently includes the request parameter. The value of the parameter "
+"is determined by evaluating the value binding at the end of the invoke "
+"application phase."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:105
+#, no-c-format
+msgid ""
+"The value is transparently propagated with any JSF form submission for the "
+"page with the given view-id. (This means that view parameters behave like "
+"<literal>PAGE</literal>-scoped context variables for faces requests."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:110
+#, no-c-format
+msgid ""
+"The essential idea behind all this is that <emphasis>however</emphasis> we "
+"get from any other page to <literal>/hello.jsp</literal> (or from <literal>/"
+"hello.jsp</literal> back to <literal>/hello.jsp</literal>), the value of the "
+"model attribute referred to in the value binding is <emphasis>remembered</"
+"emphasis>, without the need for a conversation (or other server-side state)."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:113
+#, no-c-format
+msgid ""
+"This all sounds pretty complex, however the initial effort is worth it in "
+"the end. Page parameters are the most elegant way to propagate state across "
+"a non-faces request. They are especially cool for problems like search "
+"screens with bookmarkable results pages, where we would like to be able to "
+"write our application code to handle both POST and GET requests with the "
+"same code. Page parameters eliminate repetitive listing of request "
+"parameters in the view definition and make redirects much easier to code."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:116
+#, no-c-format
+msgid ""
+"You don not need an actual page action method binding to use a page "
+"parameter. The following is perfectly valid:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:119
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\"&gt;\n"
+"        &lt;param name=\"firstName\" value=\"#{person.firstName}\"/&gt;\n"
+"        &lt;param name=\"lastName\" value=\"#{person.lastName}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:120
+#, no-c-format
+msgid "You can even specify a JSF converter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:123
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/calculator.jsp\" action=\"#{calculator.calculate}"
+"\"&gt;\n"
+"        &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"        &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"        &lt;param name=\"op\" converterId=\"com.my.calculator."
+"OperatorConverter\" value=\"#{calculator.op}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:124
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/calculator.jsp\" action=\"#{calculator.calculate}"
+"\"&gt;\n"
+"        &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"        &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"        &lt;param name=\"op\" converter=\"#{operatorConverter}\" value=\"#"
+"{calculator.op}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:125
+#, no-c-format
+msgid "Navigation"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:126
+#, no-c-format
+msgid ""
+"You can use standard JSF navigation rules defined in <literal>faces-config."
+"xml</literal> in a Seam application. However, JSF navigation rules have a "
+"number of annoying limitations:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:131
+#, no-c-format
+msgid ""
+"It is not possible to specify request parameters to be used when redirecting."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:136
+#, no-c-format
+msgid "It is not possible to begin or end conversations from a rule."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:141
+#, no-c-format
+msgid ""
+"Rules work by evaluating the return value of the action method; it is not "
+"possible to evaluate an arbitrary EL expression."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:146
+#, no-c-format
+msgid ""
+"A further problem is that <emphasis>orchestration</emphasis> logic gets "
+"scattered between <literal>pages.xml</literal> and <literal>faces-config."
+"xml</literal>. It is better to unify this logic into <literal>pages.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:149
+#, no-c-format
+msgid "This JSF navigation rule:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:152
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"    &lt;from-view-id&gt;/editDocument.xhtml&lt;/from-view-id&gt;\n"
+"    \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-action&gt;#{documentEditor.update}&lt;/from-action&gt;\n"
+"        &lt;from-outcome&gt;success&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/viewDocument.xhtml&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"    \n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:153
+#, no-c-format
+msgid "Can be rewritten as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:156
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if-outcome=\"success\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:157
+#, no-c-format
+msgid ""
+"But it would be even nicer if we did not have to pollute our "
+"<literal>DocumentEditor</literal> component with string-valued return values "
+"(the JSF outcomes). So Seam lets us write:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:160
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\" \n"
+"                   evaluate=\"#{documentEditor.errors.size}\"&gt;\n"
+"        &lt;rule if-outcome=\"0\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:161
+#, no-c-format
+msgid "Or even:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:164
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:165
+#, no-c-format
+msgid ""
+"The first form evaluates a value binding to determine the outcome value to "
+"be used by the subsequent rules. The second approach ignores the outcome and "
+"evaluates a value binding for each possible rule."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:168
+#, no-c-format
+msgid ""
+"When an update succeeds, we probably want to end the current conversation. "
+"We can do that like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:171
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:172
+#, no-c-format
+msgid ""
+"But ending the conversation loses any state associated with the "
+"conversation, including the document we are currently interested in! One "
+"solution would be to use an immediate render instead of a redirect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:175
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:176
+#, no-c-format
+msgid ""
+"But the correct solution is to pass the document ID as a request parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:179
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"&gt;\n"
+"                &lt;param name=\"documentId\" value=\"#{documentEditor."
+"documentId}\"/&gt;\n"
+"            &lt;/redirect&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:180
+#, no-c-format
+msgid ""
+"Null outcomes are a special case in JSF. The null outcome is interpreted to "
+"mean <emphasis>redisplay the page</emphasis>. The following navigation rule "
+"matches any non-null outcome, but <emphasis>not</emphasis> the null outcome:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:183
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule&gt;\n"
+"            &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:184
+#, no-c-format
+msgid ""
+"If you want to perform navigation when a null outcome occurs, use the "
+"following form instead:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:187
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:188
+#, no-c-format
+msgid ""
+"Fine-grained files for definition of navigation, page actions and parameters"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:189
+#, no-c-format
+msgid ""
+"If you have a lot of different page actions and page parameters, or even "
+"just a lot of navigation rules, you will almost certainly want to split the "
+"declarations up over multiple files. You can define actions and parameters "
+"for a page with the view id <literal>/calc/calculator.jsp</literal> in a "
+"resource named <literal>calc/calculator.page.xml</literal>. The root element "
+"in this case is the <literal>&lt;page&gt;</literal> element, and the view id "
+"is implied:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:192
+#, no-c-format
+msgid ""
+"&lt;page action=\"#{calculator.calculate}\"&gt;\n"
+"    &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"    &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"    &lt;param name=\"op\" converter=\"#{operatorConverter}\" value=\"#"
+"{calculator.op}\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:193
+#, no-c-format
+msgid "Component-driven events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:194
+#, no-c-format
+msgid ""
+"Seam components can interact by simply calling each others methods. Stateful "
+"components may even implement the observer/observable pattern. But to enable "
+"components to interact in a more loosely-coupled fashion than is possible "
+"when the components call each others methods directly, Seam provides "
+"<emphasis>component-driven events</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:197
+#, no-c-format
+msgid ""
+"We specify event listeners (observers) in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:200
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;event type=\"hello\"&gt;\n"
+"        &lt;action expression=\"#{helloListener.sayHelloBack}\"/&gt;\n"
+"        &lt;action expression=\"#{logger.logHello}\"/&gt;\n"
+"    &lt;/event&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:201
+#, no-c-format
+msgid "Where the <emphasis>event type</emphasis> is just an arbitrary string."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:204
+#, no-c-format
+msgid ""
+"When an event occurs, the actions registered for that event will be called "
+"in the order they appear in <literal>components.xml</literal>. How does a "
+"component raise an event? Seam provides a built-in component for this."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:207
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World!\");\n"
+"        Events.instance().raiseEvent(\"hello\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:208
+#, no-c-format
+msgid "Or you can use an annotation."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:211
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    @RaiseEvent(\"hello\")\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World!\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:212
+#, no-c-format
+msgid ""
+"Notice that this event producer has no dependency upon event consumers. The "
+"event listener may now be implemented with absolutely no dependency upon the "
+"producer:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:215
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    public void sayHelloBack() {\n"
+"        FacesMessages.instance().add(\"Hello to you too!\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:216
+#, no-c-format
+msgid ""
+"The method binding defined in <literal>components.xml</literal> above takes "
+"care of mapping the event to the consumer. If you do not like futzing about "
+"in the <literal>components.xml</literal> file, you can use an annotation "
+"instead:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:219
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    @Observer(\"hello\")\n"
+"    public void sayHelloBack() {\n"
+"        FacesMessages.instance().add(\"Hello to you too!\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:220
+#, no-c-format
+msgid ""
+"In terms of event objects, Seam does not require an event object to "
+"propagate state between event producer and listener. State is held in the "
+"Seam contexts, and is shared between components. However, if you really want "
+"to pass an event object, you can:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:223
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    private String name;\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World, my name is #0.\", "
+"name);\n"
+"        Events.instance().raiseEvent(\"hello\", name);\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:224
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    @Observer(\"hello\")\n"
+"    public void sayHelloBack(String name) {\n"
+"        FacesMessages.instance().add(\"Hello #0!\", name);\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:225
+#, no-c-format
+msgid "Contextual events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:226
+#, no-c-format
+msgid ""
+"Seam defines a number of built-in events that the application can use to "
+"perform special kinds of framework integration. The events are:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:231
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.validationFailed</literal> &mdash; called when JSF "
+"validation fails"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:236
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.noConversation</literal> &mdash; called when there "
+"is no long running conversation and a long running conversation is required"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:241
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preSetVariable.&lt;name&gt;</literal> &mdash; called "
+"when the context variable &lt;name&gt; is set"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:246
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postSetVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is set"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:251
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preRemoveVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is unset"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:256
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postRemoveVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is unset"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:261
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preDestroyContext.&lt;SCOPE&gt;</literal> &mdash; "
+"called before the &lt;SCOPE&gt; context is destroyed"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:266
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postDestroyContext.&lt;SCOPE&gt;</literal> &mdash; "
+"called after the &lt;SCOPE&gt; context is destroyed"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:271
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beginConversation </literal>&mdash; called whenever "
+"a long-running conversation begins"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:276
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endConversation </literal>&mdash; called whenever a "
+"long-running conversation ends"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:281
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beginPageflow.&lt;name&gt; </literal>&mdash; called "
+"when the pageflow &lt;name&gt; begins"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:286
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endPageflow.&lt;name&gt; </literal>&mdash; called "
+"when the pageflow &lt;name&gt; ends"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:291
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.createProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; is created"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:296
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; ends"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:301
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.initProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; is associated with the conversation"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:306
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.initTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is associated with the conversation"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:311
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.startTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is started"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:316
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is ended"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:321
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postCreate.&lt;name&gt; </literal>&mdash; called "
+"when the component &lt;name&gt; is created"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:326
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preDestroy.&lt;name&gt; </literal>&mdash; called "
+"when the component &lt;name&gt; is destroyed"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:331
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beforePhase </literal>&mdash; called before the "
+"start of a JSF phase"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:336
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.afterPhase </literal>&mdash; called after the end of "
+"a JSF phase"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:341
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postAuthenticate.&lt;name&gt; </literal>&mdash; "
+"called after a user is authenticated"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:346
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preAuthenticate.&lt;name&gt; </literal>&mdash; "
+"called before attempting to authenticate a user"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:351
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.notLoggedIn</literal> &mdash; called there is no "
+"authenticated user and authentication is required"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:356
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.rememberMe</literal> &mdash; occurs when Seam "
+"security detects the username in a cookie"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:361
+#, no-c-format
+msgid ""
+"Seam components may observe any of these events in just the same way they "
+"observe any other component-driven events."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:364
+#, no-c-format
+msgid "Seam interceptors"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:365
+#, no-c-format
+msgid ""
+"EJB 3.0 introduced a standard interceptor model for session bean components. "
+"To add an interceptor to a bean, you need to write a class with a method "
+"annotated <literal>@AroundInvoke</literal> and annotate the bean with an "
+"<literal>@Interceptors</literal> annotation that specifies the name of the "
+"interceptor class. For example, the following interceptor checks that the "
+"user is logged in before allowing invoking an action listener method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:368
+#, no-c-format
+msgid ""
+"public class LoggedInInterceptor {\n"
+"\n"
+"   @AroundInvoke\n"
+"   public Object checkLoggedIn(InvocationContext invocation) throws "
+"Exception {\n"
+"   \n"
+"      boolean isLoggedIn = Contexts.getSessionContext().get(\"loggedIn\")!"
+"=null;\n"
+"      if (isLoggedIn) {\n"
+"         //the user is already logged in\n"
+"         return invocation.proceed();\n"
+"      }\n"
+"      else {\n"
+"         //the user is not logged in, fwd to login page\n"
+"         return \"login\";\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:369
+#, no-c-format
+msgid ""
+"To apply this interceptor to a session bean which acts as an action "
+"listener, we must annotate the session bean <literal>@Interceptors"
+"(LoggedInInterceptor.class)</literal>. This is a somewhat ugly annotation. "
+"Seam builds upon the interceptor framework in EJB3 by allowing you to use "
+"<literal>@Interceptors</literal> as a meta-annotation. In our example, we "
+"would create an <literal>@LoggedIn</literal> annotation, as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:372
+#, no-c-format
+msgid ""
+"@Target(TYPE)\n"
+"@Retention(RUNTIME)\n"
+"@Interceptors(LoggedInInterceptor.class)\n"
+"public @interface LoggedIn {}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:373
+#, no-c-format
+msgid ""
+"We can now simply annotate our action listener bean with <literal>@LoggedIn</"
+"literal> to apply the interceptor."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:376
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"changePasswordAction\")\n"
+"@LoggedIn\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class ChangePasswordAction implements ChangePassword { \n"
+"    \n"
+"    ...\n"
+"    \n"
+"    public String changePassword() { ... }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:377
+#, no-c-format
+msgid ""
+"If interceptor ordering is important (it usually is), you can add "
+"<literal>@Interceptor</literal> annotations to your interceptor classes to "
+"specify a partial order of interceptors."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:380
+#, no-c-format
+msgid ""
+"@Interceptor(around={BijectionInterceptor.class,\n"
+"                     ValidationInterceptor.class,\n"
+"                     ConversationInterceptor.class},\n"
+"             within=RemoveInterceptor.class)\n"
+"public class LoggedInInterceptor\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:381
+#, no-c-format
+msgid ""
+"You can even have a <emphasis>client-side</emphasis> interceptor, that runs "
+"around any of the built-in functionality of EJB3:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:384
+#, no-c-format
+msgid ""
+"@Interceptor(type=CLIENT)\n"
+"public class LoggedInInterceptor\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:385
+#, no-c-format
+msgid ""
+"EJB interceptors are stateful, with a lifecycle that is the same as the "
+"component they intercept. For interceptors which do not need to maintain "
+"state, Seam lets you get a performance optimization by specifying "
+"<literal>@Interceptor(stateless=true)</literal>."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:388
+#, no-c-format
+msgid ""
+"Much of the functionality of Seam is implemented as a set of built-in Seam "
+"interceptors, including the interceptors named in the previous example. You "
+"do not have to explicitly specify these interceptors by annotating your "
+"components; they exist for all interceptable Seam components."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:391
+#, no-c-format
+msgid ""
+"You can even use Seam interceptors with JavaBean components, not just EJB3 "
+"beans."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:394
+#, no-c-format
+msgid ""
+"EJB defines interception not only for business methods (using "
+"<literal>@AroundInvoke</literal>), but also for the lifecycle methods "
+"<literal>@PostConstruct</literal>, <literal>@PreDestroy</literal>, "
+"<literal>@PrePassivate</literal> and <literal>@PostActive</literal>. Seam "
+"supports all these lifecycle methods on both component and interceptor not "
+"only for EJB3 beans, but also for JavaBean components (except "
+"<literal>@PreDestroy</literal> which is not meaningful for JavaBean "
+"components)."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:397
+#, no-c-format
+msgid "Managing exceptions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:398
+#, no-c-format
+msgid ""
+"JSF is surprisingly limited when it comes to exception handling. As a "
+"partial workaround for this problem, Seam lets you define how a particular "
+"class of exception is to be treated by annotating the exception class, or "
+"declaring the exception class in an XML file. This facility is meant to be "
+"combined with the EJB 3.0-standard <literal>@ApplicationException</literal> "
+"annotation which specifies whether the exception should cause a transaction "
+"rollback."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:401
+#, no-c-format
+msgid "Exceptions and transactions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:402
+#, no-c-format
+msgid ""
+"EJB specifies well-defined rules that let us control whether an exception "
+"immediately marks the current transaction for rollback when it is thrown by "
+"a business method of the bean: <emphasis>system exceptions</emphasis> always "
+"cause a transaction rollback, <emphasis>application exceptions</emphasis> do "
+"not cause a rollback by default, but they do if "
+"<literal>@ApplicationException(rollback=true)</literal> is specified. (An "
+"application exception is any checked exception, or any unchecked exception "
+"annotated <literal>@ApplicationException</literal>. A system exception is "
+"any unchecked exception without an <literal>@ApplicationException</literal> "
+"annotation.)"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:406
+#, no-c-format
+msgid ""
+"There is a difference between marking a transaction for rollback, and "
+"actually rolling it back. The exception rules say that the transaction "
+"should be marked rollback only, but it may still be active after the "
+"exception is thrown."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:410
+#, no-c-format
+msgid ""
+"Seam applies the EJB 3.0 exception rollback rules also to Seam JavaBean "
+"components."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:413
+#, no-c-format
+msgid ""
+"But these rules only apply in the Seam component layer. What about an "
+"exception that is uncaught and propagates out of the Seam component layer, "
+"and out of the JSF layer? Well, it is always wrong to leave a dangling "
+"transaction open, so Seam rolls back any active transaction when an "
+"exception occurs and is uncaught in the Seam component layer."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:416
+#, no-c-format
+msgid "Enabling Seam exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:417
+#, no-c-format
+msgid ""
+"To enable Seam&#39;s exception handling, we need to make sure we have the "
+"master servlet filter declared in <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:420
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.servlet.SeamFilter&lt;/filter-"
+"class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:421
+#, no-c-format
+msgid ""
+"You may also need to disable Facelets development mode in <literal>web.xml</"
+"literal> and Seam debug mode in <literal>components.xml</literal> if you "
+"want your exception handlers to fire."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:424
+#, no-c-format
+msgid "Using annotations for exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:425
+#, no-c-format
+msgid ""
+"The following exception results in a HTTP 404 error whenever it propagates "
+"out of the Seam component layer. It does not roll back the current "
+"transaction immediately when thrown, but the transaction will be rolled back "
+"if it the exception is not caught by another Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:428
+#, no-c-format
+msgid ""
+"@HttpError(errorCode=404)\n"
+"public class ApplicationException extends Exception { ... }"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:429
+#, no-c-format
+msgid ""
+"This exception results in a browser redirect whenever it propagates out of "
+"the Seam component layer. It also ends the current conversation. It causes "
+"an immediate rollback of the current transaction."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:432
+#, no-c-format
+msgid ""
+"@Redirect(viewId=\"/failure.xhtml\", end=true)\n"
+"@ApplicationException(rollback=true)\n"
+"public class UnrecoverableApplicationException extends RuntimeException "
+"{ ... }"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:434
+#, no-c-format
+msgid ""
+"<literal>@Redirect</literal> does not work for exceptions which occur during "
+"the render phase of the JSF lifecycle."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:438
+#, no-c-format
+msgid ""
+"This exception results in a redirect, along with a message to the user, when "
+"it propagates out of the Seam component layer. It also immediately rolls "
+"back the current transaction."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:441
+#, no-c-format
+msgid ""
+"@Redirect(viewId=\"/error.xhtml\", message=\"Unexpected error\")\n"
+"public class SystemException extends RuntimeException { ... }"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:442
+#, no-c-format
+msgid "Using XML for exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:443
+#, no-c-format
+msgid ""
+"Since we cannot add annotations to all the exception classes we are "
+"interested in, Seam also lets us specify this functionality in "
+"<literal>pages.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:446
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   \n"
+"   &lt;exception class=\"javax.persistence.EntityNotFoundException\"&gt;\n"
+"      &lt;http-error error-code=\"404\"/&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"   &lt;exception class=\"javax.persistence.PersistenceException\"&gt;\n"
+"      &lt;end-conversation/&gt;\n"
+"      &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"          &lt;message&gt;Database access failed&lt;/message&gt;\n"
+"      &lt;/redirect&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"   &lt;exception&gt;\n"
+"      &lt;end-conversation/&gt;\n"
+"      &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"          &lt;message&gt;Unexpected failure&lt;/message&gt;\n"
+"      &lt;/redirect&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:447
+#, no-c-format
+msgid ""
+"The last <literal>&lt;exception&gt;</literal> declaration does not specify a "
+"class, and is a catch-all for any exception for which handling is not "
+"otherwise specified via annotations or in <literal>pages.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:450
+#, no-c-format
+msgid ""
+"You can also access the handled exception instance through EL, Seam places "
+"it in the conversation context, for example, to access the message of the "
+"exception:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:453
+#, no-c-format
+msgid ""
+"...\n"
+"throw new AuthorizationException(\"You are not allowed to do this!\");\n"
+"\n"
+"&lt;pages&gt;\n"
+"\n"
+"    &lt;exception class=\"org.jboss.seam.security.AuthorizationException"
+"\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"        &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"            &lt;message severity=\"WARN\"&gt;#{handledException.message}&lt;/"
+"message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"\n"
+"&lt;/pages&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Feedback.pot
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Feedback.pot	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Feedback.pot	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,35 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-07-14 00:47+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Feedback.xml:6
+#, no-c-format
+msgid "Feedback"
+msgstr ""
+
+#. Tag: para
+#: Feedback.xml:7
+#, no-c-format
+msgid ""
+"If you spot a typo in this guide, or if you have thought of a way to make "
+"this manual better, we would love to hear from you! Submit a report in "
+"<ulink url=\"http://jira.jboss.com/jira/browse/JBPAPP\">JIRA</ulink> against "
+"the Product: JBoss Enterprise Application Platform, Version: "
+"<replaceable>&lt;version&gt;</replaceable>, Component: <emphasis>Doc</"
+"emphasis>. If you have a suggestion for improving the documentation, try to "
+"be as specific as possible. If you have found an error, include the section "
+"number and some of the surrounding text so we can find it easily."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Framework.pot
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Framework.pot	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Framework.pot	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,819 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-07-14 00:47+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Framework.xml:6
+#, no-c-format
+msgid "The Seam Application Framework"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:7
+#, no-c-format
+msgid ""
+"Seam makes it really easy to create applications by writing plain Java "
+"classes with annotations, which do not need to extend any special interfaces "
+"or superclasses. But we can simplify some common programming tasks even "
+"further, by providing a set of pre-built components which can be re-used "
+"either by configuration in <literal>components.xml</literal> (for very "
+"simple cases) or extension."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:10
+#, no-c-format
+msgid ""
+"The <emphasis>Seam Application Framework</emphasis> can reduce the amount of "
+"code you need to write when doing basic database access in a web "
+"application, using either Hibernate or JPA."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:13
+#, no-c-format
+msgid ""
+"We should emphasize that the framework is extremely simple, just a handful "
+"of simple classes that are easy to understand and extend that Seam then uses "
+"when creating your application."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:17
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:18
+#, no-c-format
+msgid ""
+"The components provided by the Seam application framework may be used in one "
+"of two different approaches. The first way is to install and configure an "
+"instance of the component in <literal>components.xml</literal>, just like we "
+"have done with other kinds of built-in Seam components. For example, the "
+"following fragment from <literal>components.xml</literal> installs a "
+"component which can perform basic CRUD operations for a <literal>Contact</"
+"literal> entity:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:21
+#, no-c-format
+msgid ""
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" \n"
+"                       entity-manager=\"#{personDatabase}\"&gt;\n"
+"    &lt;framework:id&gt;#{param.personId}&lt;/framework:id&gt;\n"
+"&lt;/framework:entity-home&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:22
+#, no-c-format
+msgid ""
+"If you would rather a different method to the above, you can use extension "
+"instead:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:25
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; implements "
+"LocalPersonHome {\n"
+"    @RequestParameter String personId;\n"
+"    @In EntityManager personDatabase;\n"
+"    \n"
+"    public Object getId() { return personId; }\n"
+"    public EntityManager getEntityManager() { return personDatabase; }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:26
+#, no-c-format
+msgid ""
+"The second approach has one huge advantage: you can easily add extra "
+"functionality, and override the built-in functionality (the framework "
+"classes were carefully designed for extension and customization)."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:29
+#, no-c-format
+msgid ""
+"A second advantage is that your classes may be EJB stateful sessin beans, if "
+"you like. (They do not have to be, they can be plain JavaBean components if "
+"you prefer.)"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:32
+#, no-c-format
+msgid ""
+"At this time, the Seam Application Framework provides just four built-in "
+"components: <literal>EntityHome</literal> and <literal>HibernateEntityHome</"
+"literal> for CRUD, along with <literal>EntityQuery</literal> and "
+"<literal>HibernateEntityQuery</literal> for queries."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:35
+#, no-c-format
+msgid ""
+"The Home and Query components are written so that they can function with a "
+"scope of session, event or conversation. Which scope you use depends upon "
+"the state model you wish to use in your application."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:38
+#, no-c-format
+msgid ""
+"The Seam Application Framework only works with Seam-managed persistence "
+"contexts. By default, the components will look for a persistence context "
+"named <literal>entityManager</literal>."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:44
+#, no-c-format
+msgid "Home objects"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:45
+#, no-c-format
+msgid ""
+"A Home object provides persistence operations for a particular entity class. "
+"Suppose we have our trusty <literal>Person</literal> class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:48
+#, no-c-format
+msgid ""
+"@Entity\n"
+"public class Person {\n"
+"    @Id private Long id;\n"
+"    private String firstName;\n"
+"    private String lastName;\n"
+"    private Country nationality;\n"
+"    \n"
+"    //getters and setters...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:49
+#, no-c-format
+msgid ""
+"We can define a <literal>personHome</literal> component either via "
+"configuration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:52
+#, no-c-format
+msgid ""
+"&lt;framework:entity-home name=\"personHome\" entity-class=\"eg.Person\" /"
+"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:53
+#, no-c-format
+msgid "Or via extension:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:56
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:57
+#, no-c-format
+msgid ""
+"A Home object provides the following operations: <literal>persist()</"
+"literal>, <literal>remove()</literal>, <literal>update()</literal> and "
+"<literal>getInstance()</literal>. Before you can call the <literal>remove()</"
+"literal>, or <literal>update()</literal> operations, you must first set the "
+"identifier of the object you are interested in, using the <literal>setId()</"
+"literal> method."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:60
+#, no-c-format
+msgid "We can use a Home directly from a JSF page, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:63
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Create Person&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{personHome.instance."
+"firstName}\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{personHome.instance."
+"lastName}\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:64
+#, no-c-format
+msgid ""
+"Usually, it is much nicer to be able to refer to the <literal>Person</"
+"literal> merely as <literal>person</literal>, so let us make that possible "
+"by adding a line to <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:67
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:68
+#, no-c-format
+msgid ""
+"(If we are using configuration.) Or by adding a <literal>@Factory</literal> "
+"method to <literal>PersonHome</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:71
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:72
+#, no-c-format
+msgid ""
+"(If we are using extension.) This change simplifies our JSF page to the "
+"following:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:75
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Create Person&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{person.firstName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{person.lastName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:76
+#, no-c-format
+msgid ""
+"Well, that lets us create new <literal>Person</literal> entries. Now, if we "
+"want to be able to display, update and delete pre-existing <literal>Person</"
+"literal> entries in the database, we need to be able to pass the entry "
+"identifier to the <literal>PersonHome</literal>. Page parameters are a great "
+"way to do that:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:79
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/editPerson.jsp\"&gt;\n"
+"        &lt;param name=\"personId\" value=\"#{personHome.id}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:80
+#, no-c-format
+msgid "Now we can add the extra operations to our JSF page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:83
+#, no-c-format
+msgid ""
+"&lt;h1&gt;\n"
+"    &lt;h:outputText rendered=\"#{!personHome.managed}\" value=\"Create "
+"Person\"/&gt;\n"
+"    &lt;h:outputText rendered=\"#{personHome.managed}\" value=\"Edit Person"
+"\"/&gt;\n"
+"&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{person.firstName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{person.lastName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\" \n"
+"                             rendered=\"#{!personHome.managed}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Update Person\" action=\"#{personHome."
+"update}\" \n"
+"                             rendered=\"#{personHome.managed}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Delete Person\" action=\"#{personHome."
+"remove}\" \n"
+"                             rendered=\"#{personHome.managed}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:84
+#, no-c-format
+msgid ""
+"When we link to the page with no request parameters, the page will be "
+"displayed as a <emphasis>Create Person</emphasis> page. When we provide a "
+"value for the <literal>personId</literal> request parameter, it will be an "
+"<emphasis>Edit Person</emphasis> page."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:87
+#, no-c-format
+msgid ""
+"Suppose we need to create <literal>Person</literal> entries with their "
+"nationality initialized. We can do that easily, via configuration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:90
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" \n"
+"                       new-instance=\"#{newPerson}\"/&gt;\n"
+"\n"
+"&lt;component name=\"newPerson\" \n"
+"           class=\"eg.Person\"&gt;\n"
+"    &lt;property name=\"nationality\"&gt;#{country}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:91
+#, no-c-format
+msgid "Or by extension:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:94
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:95
+#, no-c-format
+msgid ""
+"Of course, the <literal>Country</literal> could be an object managed by "
+"another Home object, for example, <literal>CountryHome</literal>."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:98
+#, no-c-format
+msgid ""
+"To add more sophisticated operations (association management, etc), we can "
+"just add methods to <literal>PersonHome</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:101
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"    public void migrate()\n"
+"    {\n"
+"        getInstance().setCountry(country);\n"
+"        update();\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:102
+#, no-c-format
+msgid ""
+"The Home object automatically displays faces messages when an operation is "
+"successful. To customize these messages we can, again, use configuration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:105
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\"\n"
+"                       entity-class=\"eg.Person\"\n"
+"                       new-instance=\"#{newPerson}\"&gt;\n"
+"    &lt;framework:created-message&gt;New person #{person.firstName} #{person."
+"lastName} created&lt;/framework:created-message&gt;\n"
+"    &lt;framework:deleted-message&gt;Person #{person.firstName} #{person."
+"lastName} deleted&lt;/framework:deleted-message&gt;\n"
+"    &lt;framework:updated-message&gt;Person #{person.firstName} #{person."
+"lastName} updated&lt;/framework:updated-message&gt;\n"
+"&lt;/framework:entity-home&gt;\n"
+"\n"
+"&lt;component name=\"newPerson\" \n"
+"           class=\"eg.Person\"&gt;\n"
+"    &lt;property name=\"nationality\"&gt;#{country}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:106
+#, no-c-format
+msgid "Or extension:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:109
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"    protected String getCreatedMessage() { return \"New person #{person."
+"firstName} \n"
+"      #{person.lastName} created\"; }\n"
+"    protected String getUpdatedMessage() { return \"Person #{person."
+"firstName} \n"
+"      #{person.lastName} updated\"; }\n"
+"    protected String getDeletedMessage() { return \"Person #{person."
+"firstName} \n"
+"      #{person.lastName} deleted\"; }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:110
+#, no-c-format
+msgid ""
+"But the best way to specify the messages is to put them in a resource bundle "
+"known to Seam (the bundle named <literal>messages</literal>, by default)."
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:113
+#, no-c-format
+msgid ""
+"Person_created=New person #{person.firstName} #{person.lastName} created\n"
+"Person_deleted=Person #{person.firstName} #{person.lastName} deleted\n"
+"Person_updated=Person #{person.firstName} #{person.lastName} updated"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:114
+#, no-c-format
+msgid ""
+"This enables internationalization, and keeps your code and configuration "
+"clean of presentation concerns."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:117
+#, no-c-format
+msgid ""
+"The final step is to add validation functionality to the page, using "
+"<literal>&lt;s:validateAll&gt;</literal> and <literal>&lt;s:decorate&gt;</"
+"literal>, but I&#39;ll leave that for you to figure out."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:123
+#, no-c-format
+msgid "Query objects"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:124
+#, no-c-format
+msgid ""
+"If we need a list of all <literal>Person</literal> instance in the database, "
+"we can use a Query object. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:127
+#, no-c-format
+msgid ""
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:128
+#, no-c-format
+msgid "We can use it from a JSF page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:131
+#, no-c-format
+msgid ""
+"&lt;h1&gt;List of people&lt;/h1&gt;\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:132
+#, no-c-format
+msgid "We probably need to support pagination:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:135
+#, no-c-format
+msgid ""
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\" \n"
+"                        order=\"lastName\" \n"
+"                        max-results=\"20\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:136
+#, no-c-format
+msgid "We&#39;ll use a page parameter to determine the page to display:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:139
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/searchPerson.jsp\"&gt;\n"
+"        &lt;param name=\"firstResult\" value=\"#{people.firstResult}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:140
+#, no-c-format
+msgid "The JSF code for a pagination control is a bit verbose, but manageable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:143
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Search for people&lt;/h1&gt;\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.previousExists}\" "
+"value=\"First Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"0\"/&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.previousExists}\" "
+"value=\"Previous Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.previousFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.nextExists}\" value="
+"\"Next Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.nextFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.nextExists}\" value="
+"\"Last Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.lastFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:144
+#, no-c-format
+msgid ""
+"Real search screens let the user enter a bunch of optional search criteria "
+"to narrow the list of results returned. The Query object lets you specify "
+"optional \"restrictions\" to support this important usecase:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:147
+#, no-c-format
+msgid ""
+"&lt;component name=\"examplePerson\" class=\"Person\"/&gt;\n"
+"        \n"
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\" \n"
+"                        order=\"lastName\" \n"
+"                        max-results=\"20\"&gt;\n"
+"    &lt;framework:restrictions&gt;\n"
+"        &lt;value&gt;lower(firstName) like lower( #{examplePerson.firstName} "
+"+ &#39;%&#39; )&lt;/value&gt;\n"
+"        &lt;value&gt;lower(lastName) like lower( #{examplePerson.lastName} + "
+"&#39;%&#39; )&lt;/value&gt;\n"
+"    &lt;/framework:restrictions&gt;\n"
+"&lt;/framework:entity-query&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:148
+#, no-c-format
+msgid "Notice the use of an <code>example</code> object."
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:151
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Search for people&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{examplePerson.firstName}"
+"\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{examplePerson.lastName}"
+"\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;&lt;h:commandButton value=\"Search\" action=\"/search.jsp\"/"
+"&gt;&lt;/div&gt;\n"
+"&lt;/h:form&gt;\n"
+"\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:152
+#, no-c-format
+msgid ""
+"The examples in this section have all shown reuse by configuration. However, "
+"reuse by extension is equally possible for Query objects."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:158
+#, no-c-format
+msgid "Controller objects"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:159
+#, no-c-format
+msgid ""
+"A totally optional part of the Seam Application Framework is the class "
+"<literal>Controller</literal> and its subclasses <literal>EntityController</"
+"literal><literal>HibernateEntityController</literal> and "
+"<literal>BusinessProcessController</literal>. These classes provide nothing "
+"more than some convenience methods for access to commonly used built-in "
+"components and methods of built-in components. They help save a few "
+"keystrokes (characters can add up!) and provide a great launchpad for new "
+"users to explore the rich functionality built in to Seam."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:162
+#, no-c-format
+msgid ""
+"For example, here is what <literal>RegisterAction</literal> from the Seam "
+"registration example would look like:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:165
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"register\")\n"
+"public class RegisterAction extends EntityController implements Register\n"
+"{\n"
+"\n"
+"   @In private User user;\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = createQuery(\"select u.username from User u where u."
+"username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getResultList();\n"
+"      \n"
+"      if ( existing.size()==0 )\n"
+"      {\n"
+"         persist(user);\n"
+"         info(\"Registered new user #{user.username}\");\n"
+"         return \"/registered.jspx\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         addFacesMessage(\"User #{user.username} already exists\");\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Gettingstarted.pot
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Gettingstarted.pot	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Gettingstarted.pot	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,753 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-07-14 00:47+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Gettingstarted.xml:6
+#, no-c-format
+msgid "Getting started with Seam, using seam-gen"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:7
+#, no-c-format
+msgid ""
+"The Seam distribution includes a command line utility that makes it really "
+"easy to set up an Eclipse project, generate some simple Seam skeleton code, "
+"and reverse engineer an application from a pre-existing database."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:10
+#, no-c-format
+msgid ""
+"This is the easy way to get your feet wet with Seam, and gives you some "
+"ammunition for next time you find yourself trapped in an elevator with one "
+"of those tedious Ruby guys ranting about how great and wonderful his new toy "
+"is for building totally trivial applications that put things in databases."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:13
+#, no-c-format
+msgid ""
+"In this release, seam-gen works best for people with JBoss AS. You can use "
+"the generated project with other J2EE or Java EE 5 application servers by "
+"making a few manual changes to the project configuration."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:16
+#, no-c-format
+msgid ""
+"You <emphasis>can</emphasis> use seam-gen without Eclipse, but in this "
+"tutorial, we want to show you how to use it in conjunction with Eclipse for "
+"debugging and integration testing. If you do not want to install Eclipse, "
+"you can still follow along with this tutorial; all steps can be peformed "
+"from the command line."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:19
+#, no-c-format
+msgid ""
+"Seam-gen is basically just a big ugly Ant script wrapped around Hibernate "
+"Tools, together with some templates. Which means it is easy to customize if "
+"you need to."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:23
+#, no-c-format
+msgid "Before you start"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:24
+#, no-c-format
+msgid ""
+"Make sure you have JDK 5 or JDK 6, JBoss AS 4.0.5 and Ant 1.6, along with "
+"recent versions of Eclipse, the JBoss IDE plugin for Eclipse and the TestNG "
+"plugin for Eclipse correctly installed before starting. Add your JBoss "
+"installation to the JBoss Server View in Eclipse. Start JBoss in debug mode. "
+"Finally, start a command prompt in the directory where you unzipped the Seam "
+"distribution."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:27
+#, no-c-format
+msgid ""
+"JBoss has sophisticated support for hot re-deployment of WARs and EARs. "
+"Unfortunately, due to bugs in the JVM, repeated redeployment of an EAR, "
+"which is common during development and eventually causing the JVM to run out "
+"of perm gen space. For this reason, we recommend running JBoss in a JVM with "
+"a large perm gen space at development time. If you are running JBoss from "
+"JBoss IDE, you can configure this in the server launch configuration, under "
+"<emphasis>VM arguments</emphasis>. We suggest the following values:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:30
+#, no-c-format
+msgid "-Xms512m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:31
+#, no-c-format
+msgid ""
+"If you do not have so much memory available, the following is our minimum "
+"recommendation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:34
+#, no-c-format
+msgid "-Xms256m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=256"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:35
+#, no-c-format
+msgid ""
+"If you are running JBoss from the commandline, you can configure the JVM "
+"options in <literal>bin/run.conf</literal>."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:44
+#, no-c-format
+msgid "Setting up a new Eclipse project"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:45
+#, no-c-format
+msgid ""
+"The first thing we need to do is configure seam-gen for your environment: "
+"JBoss Enterprise Application Server installation directory, Eclipse "
+"workspace, and database connection. It&#39;s easy, just type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:48
+#, no-c-format
+msgid ""
+"cd jboss-seam-1.1.x\n"
+"seam setup"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:49
+#, no-c-format
+msgid "And you will be prompted for the needed information:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:52
+#, no-c-format
+msgid ""
+"C:\\Projects\\jboss-seam&gt;seam setup\n"
+"Buildfile: C:\\Projects\\jboss-seam\\seam-gen\\build.xml\n"
+"\n"
+"setup:\n"
+"    [echo] Welcome to seam-gen :-)\n"
+"    [input] Enter your Java project workspace [C:/Projects]\n"
+"\n"
+"    [input] Enter your JBoss home directory [C:/Program Files/jboss-4.0.5."
+"GA]\n"
+"\n"
+"    [input] Enter the project name [myproject]\n"
+"helloworld\n"
+"    [input] Is this project deployed as an EAR (with EJB components) or a "
+"WAR \n"
+"       (with no EJB support) [ear] (ear,war,)\n"
+"\n"
+"    [input] Enter the Java package name for your session beans [com.mydomain."
+"helloworld]\n"
+"org.jboss.helloworld\n"
+"    [input] Enter the Java package name for your entity beans [org.jboss."
+"helloworld]\n"
+"\n"
+"    [input] Enter the Java package name for your test cases [org.jboss."
+"helloworld.test]\n"
+"\n"
+"    [input] What kind of database are you using? [hsql] \n"
+"    (hsql,mysql,oracle,postgres,mssql,db2,sybase,)\n"
+"mysql\n"
+"    [input] Enter the Hibernate dialect for your database [org.hibernate."
+"dialect.MySQLDialect]\n"
+"\n"
+"    [input] Enter the filesystem path to the JDBC driver jar [lib/hsqldb."
+"jar]\n"
+"../../mysql-connector.jar\n"
+"    [input] Enter JDBC driver class for your database [com.mysql.jdbc."
+"Driver]\n"
+"\n"
+"    [input] Enter the JDBC URL for your database [jdbc:mysql:///test]\n"
+"\n"
+"    [input] Enter database username [sa]\n"
+"gavin\n"
+"    [input] Enter database password []\n"
+"\n"
+"    [input] Are you working with tables that already exist in the database? "
+"[n] (y,n,)\n"
+"y\n"
+"    [input] Do you want to drop and recreate the database tables and data in "
+"import.sql \n"
+"    each time you deploy? [n] (y,n,)\n"
+"n\n"
+"[propertyfile] Creating new property file: C:\\Projects\\jboss-seam\\seam-gen"
+"\\build.properties\n"
+"     [echo] Installing JDBC driver jar to JBoss server\n"
+"     [echo] Type &#39;seam new-project&#39; to create the new project\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 1 minute 17 seconds\n"
+"C:\\Projects\\jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:53
+#, no-c-format
+msgid ""
+"The tool provides sensible defaults, which you can accept by just pressing "
+"enter at the prompt."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:56
+#, no-c-format
+msgid ""
+"The most important choice you need to make is between EAR deployment and WAR "
+"deployment of your project. EAR projects support EJB 3.0 and require Java EE "
+"5. WAR projects do not support EJB 3.0, but may be deployed to a J2EE "
+"environment. The packaging of a WAR is also simpler to understand. If you "
+"installed JBoss with the ejb3 profile, choose <literal>ear</literal>. "
+"Otherwise, choose <literal>war</literal>. We will assume that you have "
+"chosen an EAR deployment for the rest of the tutorial, but you can follow "
+"exactly the same steps for a WAR deployment."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:59
+#, no-c-format
+msgid ""
+"If you are working with an existing data model, make sure you tell seam-gen "
+"that the tables already exist in the database."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:62
+#, no-c-format
+msgid ""
+"The settings are stored in <literal>seam-gen/build.properties</literal>, but "
+"you can also modify them simply by running <literal>seam setup</literal> a "
+"second time."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:65
+#, no-c-format
+msgid ""
+"Now we can create a new project in our Eclipse workspace directory, by "
+"typing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:68
+#, no-c-format
+msgid "seam new-project"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:69
+#, no-c-format
+msgid ""
+"C:\\Projects\\jboss-seam&gt;seam new-project\n"
+"Buildfile: C:\\Projects\\jboss-seam\\seam-gen\\build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"copy-lib:\n"
+"     [echo] Copying project jars ...\n"
+"     [copy] Copying 32 files to C:\\Projects\\helloworld\\lib\n"
+"     [copy] Copying 9 files to C:\\Projects\\helloworld\\embedded-ejb\n"
+"\n"
+"file-copy-wtp:\n"
+"\n"
+"file-copy:\n"
+"     [echo] Copying project resources ...\n"
+"     [copy] Copying 12 files to C:\\Projects\\helloworld\\resources\n"
+"     [copy] Copying 1 file to C:\\Projects\\helloworld\\resources\n"
+"     [copy] Copying 5 files to C:\\Projects\\helloworld\\view\n"
+"     [copy] Copying 5 files to C:\\Projects\\helloworld\n"
+"    [mkdir] Created dir: C:\\Projects\\helloworld\\src\n"
+"\n"
+"new-project:\n"
+"     [echo] A new Seam project named &#39;helloworld&#39; was created in "
+"the /Users/gavin/Documents/workspace directory\n"
+"     [echo] Type &#39;seam explode&#39; and go to http://localhost:8080/"
+"helloworld\n"
+"     [echo] Eclipse Users: Add the project into Eclipse using File &gt; New "
+"&gt; Project and select General &gt; Project (not Java Project)\n"
+"     [echo] NetBeans Users: Open the project in NetBeans\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 7 seconds\n"
+"C:\\Projects\\jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:70
+#, no-c-format
+msgid ""
+"This copies the Seam jars, dependent jars and the JDBC driver jar to a new "
+"Eclipse project, and generates all needed resources and configuration files, "
+"a facelets template file and stylesheet, along with Eclipse metadata and an "
+"Ant build script. The Eclipse project will be automatically deployed to an "
+"exploded directory structure in JBoss AS as soon as you add the project "
+"using <literal>New -&gt; Project... -&gt; General -&gt; Project -&gt; Next</"
+"literal>, typing the <literal>Project name</literal> (<literal>helloworld</"
+"literal> in this case), and then clicking <literal>Finish</literal>. Do not "
+"select <literal>Java Project</literal> from the New Project wizard."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:73
+#, no-c-format
+msgid ""
+"If your default JDK in Eclipse is not a Java SE 5 or Java SE 6 JDK, you will "
+"need to select a Java SE 5 compliant JDK using <literal>Project -&gt; "
+"Properties -&gt; Java Compiler</literal>."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:76
+#, no-c-format
+msgid ""
+"Alternatively, you can deploy the project from outside Eclipse by typing "
+"<literal>seam explode</literal>."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:79
+#, no-c-format
+msgid ""
+"Go to <literal>http://localhost:8080/helloworld</literal> to see a welcome "
+"page. This is a facelets page, <literal>view/home.xhtml</literal>, using the "
+"template <literal>view/layout/template.xhtml</literal>. You can edit this "
+"page, or the template, in eclipse, and see the results "
+"<emphasis>immediately</emphasis>, by clicking refresh in your browser."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:82
+#, no-c-format
+msgid ""
+"Do not get scared by the XML configuration documents that were generated "
+"into the project directory. They are mostly standard Java EE stuff, the "
+"stuff you need to create once and then never look at again, and they are 90% "
+"the same between all Seam projects. (They are so easy to write that even "
+"seam-gen can do it.)"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:85
+#, no-c-format
+msgid ""
+"The generated project includes three database and persistence "
+"configurations. The <literal>jboss-beans.xml</literal>, <literal>persistence-"
+"test.xml</literal> and <literal>import-test.sql</literal> files are used "
+"when running the TestNG unit tests against HSQLDB. The database schema and "
+"the test data in <literal>import-test.sql</literal> is always exported to "
+"the database before running tests. The <literal>myproject-dev-ds.xml</"
+"literal>, <literal>persistence-dev.xml</literal>and <literal>import-dev.sql</"
+"literal> files are for use when deploying the application to your "
+"development database. The schema might be exported automatically at "
+"deployment, depending upon whether you told seam-gen that you are working "
+"with an existing database. The <literal>myproject-prod-ds.xml</literal>, "
+"<literal>persistence-prod.xml</literal>and <literal>import-prod.sql</"
+"literal> files are for use when deploying the application to your production "
+"database. The schema is not exported automatically at deployment."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:91
+#, no-c-format
+msgid "Creating a new action"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:92
+#, no-c-format
+msgid ""
+"If you are used to traditional action-style web frameworks, you are probably "
+"wondering how you can create a simple webpage with a stateless action method "
+"in Java. If you type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:95
+#, no-c-format
+msgid "seam new-action"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:96
+#, no-c-format
+msgid ""
+"Seam will prompt for some information, and generate a new facelets page and "
+"Seam component for your project."
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:99
+#, no-c-format
+msgid ""
+"C:\\Projects\\jboss-seam&gt;seam new-action ping\n"
+"Buildfile: C:\\Projects\\jboss-seam\\seam-gen\\build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"action-input:\n"
+"    [input] Enter the Seam component name\n"
+"ping\n"
+"    [input] Enter the local interface name [Ping]\n"
+"\n"
+"    [input] Enter the bean class name [PingBean]\n"
+"\n"
+"    [input] Enter the action method name [ping]\n"
+"\n"
+"    [input] Enter the page name [ping]\n"
+"\n"
+"\n"
+"setup-filters:\n"
+"\n"
+"new-action:\n"
+"     [echo] Creating a new stateless session bean component with an action "
+"method\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\\test\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\\test\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\view\n"
+"     [echo] Type &#39;seam restart&#39; and go to \n"
+"     http://localhost:8080/helloworld/ping.seam\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 13 seconds\n"
+"C:\\Projects\\jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:100
+#, no-c-format
+msgid ""
+"Because we have added a new Seam component, we need to restart the exploded "
+"directory deployment. You can do this by typing <literal>seam restart</"
+"literal>, or by running the <literal>restart</literal> target in the "
+"generated project <literal>build.xml</literal> file from inside Eclipse. "
+"Another way to force a restart is to edit the file <literal>resources/META-"
+"INF/application.xml</literal> in Eclipse. <emphasis>Note that you do not "
+"need to restart JBoss each time you change the application.</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:103
+#, no-c-format
+msgid ""
+"Now go to <literal>http://localhost:8080/helloworld/ping.seam</literal> and "
+"click the button. You can see the code behind this action by looking in the "
+"project <literal>src</literal> directory. Put a breakpoint in the "
+"<literal>ping()</literal> method, and click the button again."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:106
+#, no-c-format
+msgid ""
+"Finally, locate the <literal>PingTest.xml</literal> file in the test package "
+"and run the integration tests using the TestNG plugin for Eclipse. "
+"Alternatively, run the tests using <literal>seam test</literal> or the "
+"<literal>test</literal> target of the generated build."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:112
+#, no-c-format
+msgid "Creating a form with an action"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:113
+#, no-c-format
+msgid "The next step is to create a form. Type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:116
+#, no-c-format
+msgid "seam new-form"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:117
+#, no-c-format
+msgid ""
+"C:\\Projects\\jboss-seam&gt;seam new-form\n"
+"Buildfile: C:\\Projects\\jboss-seam\\seam-gen\\build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"action-input:\n"
+"    [input] Enter the Seam component name\n"
+"hello\n"
+"    [input] Enter the local interface name [Hello]\n"
+"\n"
+"    [input] Enter the bean class name [HelloBean]\n"
+"\n"
+"    [input] Enter the action method name [hello]\n"
+"\n"
+"    [input] Enter the page name [hello]\n"
+"\n"
+"\n"
+"setup-filters:\n"
+"\n"
+"new-form:\n"
+"     [echo] Creating a new stateful session bean component with an action "
+"method\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\\test\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\view\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\\test\n"
+"     [echo] Type &#39;seam restart&#39; and go to http://localhost:8080/"
+"hello/hello.seam\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 5 seconds\n"
+"C:\\Projects\\jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:118
+#, no-c-format
+msgid ""
+"Restart the application again, and go to <literal>http://localhost:8080/"
+"helloworld/hello.seam</literal>. Then take a look at the generated code. Run "
+"the test. Try adding some new fields to the form and Seam component "
+"(remember to restart the deploment each time you change the Java code)."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:124
+#, no-c-format
+msgid "Generating an application from an existing database"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:125
+#, no-c-format
+msgid ""
+"Manually create some tables in your database. (If you need to switch to a "
+"different database, just run <literal>seam setup</literal> again.) Now type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:128
+#, no-c-format
+msgid "seam generate-entities"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:129
+#, no-c-format
+msgid ""
+"Restart the deployment, and go to <literal>http://localhost:8080/helloworld</"
+"literal>. You can browse the database, edit existing objects, and create new "
+"objects. If you look at the generated code, you will probably be amazed how "
+"simple it is. Seam was designed so that data access code is easy to write by "
+"hand, even for people who do not want to cheat by using seam-gen."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:135
+#, no-c-format
+msgid "Deploying the application as an EAR"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:136
+#, no-c-format
+msgid ""
+"Finally, we want to be able to deploy the application using standard Java EE "
+"5 packaging. First, we need to remove the exploded directory by running "
+"<literal>seam unexplode</literal>. To deploy the EAR, we can type "
+"<literal>seam deploy</literal> at the command prompt, or run the "
+"<literal>deploy</literal> target of the generated project build script. You "
+"can undeploy using <literal>seam undeploy</literal> or the "
+"<literal>undeploy</literal> target."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:139
+#, no-c-format
+msgid ""
+"By default, the application will be deployed with the <emphasis>dev profile</"
+"emphasis>. The EAR will include the <literal>persistence-dev.xml</literal> "
+"and <literal>import-dev.sql</literal> files, and the <literal>myproject-dev-"
+"ds.xml</literal> file will be deployed. You can change the profile, and use "
+"the <emphasis>prod profile</emphasis>, by typing"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:142
+#, no-c-format
+msgid "seam -Dprofile=prod deploy"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:143
+#, no-c-format
+msgid ""
+"You can even define new deployment profiles for your application. Just add "
+"appropriately named files to your project&mdash;for example, "
+"<literal>persistence-staging.xml</literal>, <literal>import-staging.sql</"
+"literal> and <literal>myproject-staging-ds.xml</literal>&mdash;and select "
+"the name of the profile using <literal>-Dprofile=staging</literal>."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:149
+#, no-c-format
+msgid "Seam and incremental hot deployment"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:150
+#, no-c-format
+msgid ""
+"When you deploy your Seam application as an exploded directory, you will get "
+"some support for incremental hot deployment at development time. You need to "
+"enable debug mode in both Seam and Facelets, by adding this line to "
+"<literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:153
+#, no-c-format
+msgid "&lt;core:init debug=\"true\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:154
+#, no-c-format
+msgid ""
+"Now, the following files may be redeployed without requiring a full restart "
+"of the web application:"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:159
+#, no-c-format
+msgid "any facelets page"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:164
+#, no-c-format
+msgid "any <literal>pages.xml</literal> file"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:169
+#, no-c-format
+msgid ""
+"But if we want to change any Java code, we still need to do a full restart "
+"of the application. (In JBoss this may be accomplished by touching the "
+"toplevel deployment descriptor: <literal>application.xml</literal> for an "
+"EAR deployment, or <literal>web.xml</literal> for a WAR deployment.)"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:172
+#, no-c-format
+msgid ""
+"But if you really want a fast edit/compile/test cycle, Seam supports "
+"incremental redeployment of JavaBean components. To make use of this "
+"functionality, you must deploy the JavaBean components into the <literal>WEB-"
+"INF/dev</literal> directory, so that they will be loaded by a special Seam "
+"classloader, instead of by the WAR or EAR classloader."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:175
+#, no-c-format
+msgid "You need to be aware of the following limitations:"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:180
+#, no-c-format
+msgid ""
+"the components must be JavaBean components, they cannot be EJB3 beans (we "
+"are working on fixing this limitation)"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:185
+#, no-c-format
+msgid "entities can never be hot-deloyed"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:190
+#, no-c-format
+msgid ""
+"components deployed via <literal>components.xml</literal> may not be hot-"
+"deployed"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:195
+#, no-c-format
+msgid ""
+"the hot-deployable components will not be visible to any classes deployed "
+"outside of <literal>WEB-INF/dev</literal>"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:200
+#, no-c-format
+msgid "Seam debug mode must be enabled"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:205
+#, no-c-format
+msgid ""
+"If you create a WAR project using seam-gen, incremental hot deployment is "
+"available out of the box for classes in the <literal>src/action</literal> "
+"source directory. However, seam-gen does not support incremental hot "
+"deployment for EAR projects."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/I18n.pot
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/I18n.pot	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/I18n.pot	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,534 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-07-14 00:47+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: I18n.xml:6
+#, no-c-format
+msgid "Internationalization and themes"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:7
+#, no-c-format
+msgid ""
+"Seam makes it easy to build internationalized applications by providing "
+"several built-in components for handling multi-language UI messages."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:11
+#, no-c-format
+msgid "Locales"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:12
+#, no-c-format
+msgid ""
+"Each user login session has an associated instance of <literal>java.util."
+"Locale</literal> (available to the application as a session-scoped component "
+"named <literal>locale</literal>). Under normal circumstances, you will not "
+"need to do any special configuration to set the locale. Seam just delegates "
+"to JSF to determine the active locale:"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:17
+#, no-c-format
+msgid ""
+"If there is a locale associated with the HTTP request (the browser locale), "
+"and that locale is in the list of supported locales from <literal>faces-"
+"config.xml</literal>, use that locale for the rest of the session."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:20
+#, no-c-format
+msgid ""
+"Otherwise, if a default locale was specified in the <literal>faces-config."
+"xml</literal>, use that locale for the rest of the session."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:23
+#, no-c-format
+msgid "Otherwise, use the default locale of the server."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:26
+#, no-c-format
+msgid ""
+"It is <emphasis>possible</emphasis> to set the locale manually via the Seam "
+"configuration properties <literal>org.jboss.seam.core.localeSelector."
+"language</literal>, <literal>org.jboss.seam.core.localeSelector.country</"
+"literal> and <literal>org.jboss.seam.core.localeSelector.variant</literal>, "
+"but we cannot think of any good reason to ever do this."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:29
+#, no-c-format
+msgid ""
+"It is, however, useful to allow the user to set the locale manually via the "
+"application user interface. Seam provides built-in functionality for "
+"overriding the locale determined by the algorithm above. All you have to do "
+"is add the following fragment to a form in your JSP or Facelets page:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:32
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{localeSelector.language}\"&gt;\n"
+"    &lt;f:selectItem itemLabel=\"English\" itemValue=\"en\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Deutsch\" itemValue=\"de\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Francais\" itemValue=\"fr\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{localeSelector.select}\" value=\"#{messages"
+"[&#39;ChangeLanguage&#39;]}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:33
+#, no-c-format
+msgid ""
+"Or, if you want a list of all supported locales from <literal>faces-config."
+"xml</literal>, just use:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:36
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{localeSelector.localeString}\"&gt;\n"
+"    &lt;f:selectItems value=\"#{localeSelector.supportedLocales}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{localeSelector.select}\" value=\"#{messages"
+"[&#39;ChangeLanguage&#39;]}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:37
+#, no-c-format
+msgid ""
+"When this use selects an item from the drop-down, and clicks the button, the "
+"Seam and JSF locales will be overridden for the rest of the session."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:43
+#, no-c-format
+msgid "Labels"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:44
+#, no-c-format
+msgid ""
+"JSF supports internationalization of user interface labels and descriptive "
+"text via the use of <literal>&lt;f:loadBundle /&gt;</literal>. You can use "
+"this approach in Seam applications. Alternatively, you can take advantage of "
+"the Seam <literal>messages</literal> component to display templated labels "
+"with embedded EL expressions."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:48
+#, no-c-format
+msgid "Defining labels"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:49
+#, no-c-format
+msgid ""
+"Each login session has an associated instance of <literal>java.util."
+"ResourceBundle</literal> (available to the application as a session-scoped "
+"component named <literal>org.jboss.seam.core.resourceBundle</literal>). "
+"You&#39;ll need to make your internationalized labels available via this "
+"special resource bundle. By default, the resource bundle used by Seam is "
+"named <literal>messages</literal> and so you&#39;ll need to define your "
+"labels in files named <literal>messages.properties</literal>, "
+"<literal>messages_en.properties</literal>, <literal>messages_en_AU."
+"properties</literal>, etc. These files usually belong in the <literal>WEB-"
+"INF/classes</literal> directory."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:52
+#, no-c-format
+msgid "So, in <literal>messages_en.properties</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:55
+#, no-c-format
+msgid "Hello=Hello"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:56
+#, no-c-format
+msgid "And in <literal>messages_en_AU.properties</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:59
+#, no-c-format
+msgid "Hello=G&#39;day"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:60
+#, no-c-format
+msgid ""
+"You can select a different name for the resource bundle by setting the Seam "
+"configuration property named <literal>org.jboss.seam.core.resourceBundle."
+"bundleNames</literal>. You can even specify a list of resource bundle names "
+"to be searched (depth first) for messages."
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:63
+#, no-c-format
+msgid ""
+"&lt;core:resource-bundle&gt;\n"
+"    &lt;core:bundle-names&gt;\n"
+"        &lt;value&gt;mycompany_messages&lt;/value&gt;\n"
+"        &lt;value&gt;standard_messages&lt;/value&gt;       \n"
+"    &lt;/core:bundle-names&gt;\n"
+"&lt;/core:resource-bundle&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:64
+#, no-c-format
+msgid ""
+"If you want to define a message just for a particular page, you can specify "
+"it in a resource bundle with the same name as the JSF view id, with the "
+"leading <literal>/</literal> and trailing file extension removed. So we "
+"could put our message in <literal>welcome/hello_en.properties</literal> if "
+"we only needed to display the message on <literal>/welcome/hello.jsp</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:67
+#, no-c-format
+msgid ""
+"You can even specify an explicit bundle name in <literal>pages.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:70
+#, no-c-format
+msgid "&lt;page view-id=\"/welcome/hello.jsp\" bundle=\"HelloMessages\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:71
+#, no-c-format
+msgid ""
+"Then we could use messages defined in <literal>HelloMessages.properties</"
+"literal> on <literal>/welcome/hello.jsp</literal>."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:77
+#, no-c-format
+msgid "Displaying labels"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:78
+#, no-c-format
+msgid ""
+"If you define your labels using the Seam resource bundle, you will be able "
+"to use them without having to type <literal>&lt;f:loadBundle ... /&gt;</"
+"literal> on every page. Instead, you can simply type:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:81
+#, no-c-format
+msgid "&lt;h:outputText value=\"#{messages[&#39;Hello&#39;]}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:82
+#, no-c-format
+msgid "<para>or:</para>"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:85
+#, no-c-format
+msgid "&lt;h:outputText value=\"#{messages.Hello}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:86
+#, no-c-format
+msgid "Even better, the messages themselves may contain EL expressions:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:89
+#, no-c-format
+msgid "Hello=Hello, #{user.firstName} #{user.lastName}"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:90
+#, no-c-format
+msgid "Hello=G&#39;day, #{user.firstName}"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:91
+#, no-c-format
+msgid "You can even use the messages in your code:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:94
+#, no-c-format
+msgid "@In private Map&lt;String, String&gt; messages;"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:95
+#, no-c-format
+msgid "@In(\"#{messages[&#39;Hello&#39;]}\") private String helloMessage;"
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:99
+#, no-c-format
+msgid "Faces messages"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:100
+#, no-c-format
+msgid ""
+"The <literal>facesMessages</literal> component is a super-convenient way to "
+"display success or failure messages to the user. The functionality we just "
+"described also works for faces messages:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:103
+#, no-c-format
+msgid ""
+"@Name(\"hello\")\n"
+"@Stateless\n"
+"public class HelloBean implements Hello {\n"
+"    @In FacesMessages facesMessages;\n"
+"    \n"
+"    public String sayIt() {\n"
+"        facesMessages.addFromResourceBundle(\"Hello\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:104
+#, no-c-format
+msgid ""
+"This will display <literal>Hello, Gavin King</literal> or <literal>G&#39;"
+"day, Gavin</literal>, depending upon the user&#39;s locale."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:112
+#, no-c-format
+msgid "Timezones"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:113
+#, no-c-format
+msgid ""
+"There is also a session-scoped instance of <literal>java.util.Timezone</"
+"literal>, named <literal>org.jboss.seam.core.timezone</literal>, and a Seam "
+"component for changing the timezone named <literal>org.jboss.seam.core."
+"timezoneSelector</literal>. By default, the timezone is the default timezone "
+"of the server. Unfortunately, the JSF specification says that all dates and "
+"times should be assumed to be UTC, and displayed as UTC, unless a timezone "
+"is explicitly specified using <literal>&lt;f:convertDateTime&gt;</literal>. "
+"This is an extremely inconvenient default behavior."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:116
+#, no-c-format
+msgid ""
+"Seam overrides this behavior, and defaults all dates and times to the Seam "
+"timezone. In addition, Seam provides the <literal>&lt;s:convertDateTime&gt;</"
+"literal> tag which always performs conversions in the Seam timezone."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:122
+#, no-c-format
+msgid "Themes"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:123
+#, no-c-format
+msgid ""
+"Seam applications are also very easily skinnable. The theme API is very "
+"similar to the localization API, but of course these two concerns are "
+"orthogonal, and some applications support both localization and themes."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:126
+#, no-c-format
+msgid "First, configure the set of supported themes:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:129
+#, no-c-format
+msgid ""
+"&lt;theme:theme-selector cookie-enabled=\"true\"&gt;\n"
+"    &lt;theme:available-themes&gt;\n"
+"        &lt;value&gt;default&lt;/value&gt;\n"
+"        &lt;value&gt;accessible&lt;/value&gt;\n"
+"        &lt;value&gt;printable&lt;/value&gt;\n"
+"    &lt;/theme:available-themes&gt;\n"
+"&lt;/theme:theme-selector&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:131
+#, no-c-format
+msgid "The first theme listed is the default theme."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:135
+#, no-c-format
+msgid ""
+"Themes are defined in a properties file with the same name as the theme. For "
+"example, the <literal>default</literal> theme is defined as a set of entries "
+"in <literal>default.properties</literal>. For example, <literal>default."
+"properties</literal> might define:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:138
+#, no-c-format
+msgid ""
+"css ../screen.css\n"
+"template template.xhtml"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:139
+#, no-c-format
+msgid ""
+"Usually the entries in a theme resource bundle will be paths to CSS styles "
+"or images and names of facelets templates (unlike localization resource "
+"bundles which are usually text)."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:142
+#, no-c-format
+msgid ""
+"Now we can use these entries in our JSP or facelets pages. For example, to "
+"theme the stylesheet in a facelets page:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:145
+#, no-c-format
+msgid ""
+"&lt;link href=\"#{theme.css}\" rel=\"stylesheet\" type=\"text/css\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:146
+#, no-c-format
+msgid ""
+"Most powerfully, facelets lets us theme the template used by a <literal>&lt;"
+"ui:composition&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:149
+#, no-c-format
+msgid ""
+"&lt;ui:composition xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"    xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"    xmlns:h=\"http://java.sun.com/jsf/html\"\n"
+"    xmlns:f=\"http://java.sun.com/jsf/core\"\n"
+"    template=\"#{theme.template}\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:150
+#, no-c-format
+msgid ""
+"Just like the locale selector, there is a built-in theme selector to allow "
+"the user to freely switch themes:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:153
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{themeSelector.theme}\"&gt;\n"
+"    &lt;f:selectItems value=\"#{themeSelector.themes}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{themeSelector.select}\" value=\"Select Theme"
+"\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:157
+#, no-c-format
+msgid "Persisting locale and theme preferences via cookies"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:158
+#, no-c-format
+msgid ""
+"The locale selector, theme selector and timezone selector all support "
+"persistence of locale and theme preference to a cookie. Simply set the "
+"<literal>cookie-enabled</literal> configuration property:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:161
+#, no-c-format
+msgid ""
+"&lt;theme:theme-selector cookie-enabled=\"true\"&gt;\n"
+"    &lt;theme:available-themes&gt;\n"
+"        &lt;value&gt;default&lt;/value&gt;\n"
+"        &lt;value&gt;accessible&lt;/value&gt;\n"
+"        &lt;value&gt;printable&lt;/value&gt;\n"
+"    &lt;/theme:available-themes&gt;\n"
+"&lt;/theme:theme-selector&gt;\n"
+"\n"
+"&lt;core:locale-selector cookie-enabled=\"true\"/&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Itext.pot
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Itext.pot	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Itext.pot	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1473 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-07-14 00:47+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Itext.xml:6
+#, no-c-format
+msgid "iText PDF generation"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:7
+#, no-c-format
+msgid ""
+"Seam now includes an component set for generating documents using iText. The "
+"primary focus of Seam&#39;s iText document support is for the generation of "
+"PDF doucuments, but Seam also offers basic support for RTF document "
+"generation."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:11
+#, no-c-format
+msgid "Using PDF Support"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:12
+#, no-c-format
+msgid ""
+"iText support is provided by <literal>jboss-seam-pdf.jar</literal>. This JAR "
+"contains the iText JSF controls, which are used to construct views that can "
+"render to PDF, and the DocumentStore component, which serves the rendered "
+"documents to the user. To include PDF support in your application, included "
+"<literal>jboss-seam-pdf.jar</literal> in your <literal>WEB-INF/lib</literal> "
+"directory along with the iText JAR file. There is no further configuration "
+"needed to use Seam&#39;s iText support."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:15
+#, no-c-format
+msgid ""
+"The Seam iText module requires the use of Facelets as the view technology. "
+"Future versions of the library may also support the use of JSP. "
+"Additionally, it requires the use of the seam-ui package."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:18
+#, no-c-format
+msgid ""
+"The <literal>examples/itext</literal> project contains an example of the PDF "
+"support in action. It demonstrates proper deployment packaging, and it "
+"contains a number examples that demonstrate the key PDF generation features "
+"current supported."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:24
+#, no-c-format
+msgid "Creating a document"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:25
+#, no-c-format
+msgid ""
+"Documents are generated by facelets documents using tags in the "
+"<literal>http://jboss.com/products/seam/pdf</literal> namespace. Documents "
+"should always have the <literal>document</literal> tag at the root of the "
+"document. The <literal>document</literal> tag prepares Seam to generate a "
+"document into the DocumentStore and renders an HTML redirect to that stored "
+"content. The following is a a small PDF document consisting only a single "
+"line of text:"
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:28
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf"
+"\"&gt;                                                      \n"
+"   The document goes "
+"here.                                                                                             \n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:30
+#, no-c-format
+msgid "p:document"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:31
+#, no-c-format
+msgid ""
+"The <literal>p:document</literal> tag supports the following attributes:"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:36
+#, no-c-format
+msgid "type"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:38
+#, no-c-format
+msgid ""
+"The type of the document to be produced. Valid values are <literal>PDF</"
+"literal>, <literal>RTF</literal> and <literal>HTML</literal> modes. Seam "
+"defaults to PDF generation, and many of the features only work correctly "
+"when generating PDF documents."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:44
+#, no-c-format
+msgid "pageSize"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:46
+#, no-c-format
+msgid ""
+"The size of the page to be generate. The most commonly used values would be "
+"<literal>LETTER</literal> and <literal>A4</literal>. A full list of "
+"supported pages sizes can be found in <literal>com.lowagie.text.PageSize</"
+"literal> class. Alternatively, pageSize can provide the width and height of "
+"the page directly. The value <emphasis>612 792</emphasis>, for example, is "
+"equizalent to the LETTER page size."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:52
+#, no-c-format
+msgid "orientation"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:54
+#, no-c-format
+msgid ""
+"The orientation of the page. Valid values are <literal>portrait</literal> "
+"and <literal>landscape</literal>. In landscape mode, the height and width "
+"page size values are reversed."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:60
+#, no-c-format
+msgid "margins"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:62
+#, no-c-format
+msgid "The left, right, top and bottom margin values."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:68
+#, no-c-format
+msgid "marginMirroring"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:70
+#, no-c-format
+msgid "Indicates that margin settings should be reversed an alternating pages."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:76
+#, no-c-format
+msgid ""
+"Document metadata is also set as attributes of the document tag. The "
+"following metadata fields are supported:"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:81
+#, no-c-format
+msgid "title"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:83 Itext.xml:90 Itext.xml:97 Itext.xml:104 Itext.xml:111
+#: Itext.xml:135 Itext.xml:142 Itext.xml:149 Itext.xml:156 Itext.xml:179
+#: Itext.xml:186 Itext.xml:193 Itext.xml:328 Itext.xml:335 Itext.xml:358
+#: Itext.xml:365 Itext.xml:372 Itext.xml:387 Itext.xml:394 Itext.xml:686
+#: Itext.xml:693 Itext.xml:700 Itext.xml:707 Itext.xml:730 Itext.xml:737
+#: Itext.xml:744 Itext.xml:751 Itext.xml:799 Itext.xml:806 Itext.xml:813
+#: Itext.xml:820 Itext.xml:827 Itext.xml:834 Itext.xml:841 Itext.xml:848
+#: Itext.xml:855 Itext.xml:862 Itext.xml:869 Itext.xml:876 Itext.xml:883
+#: Itext.xml:890 Itext.xml:897 Itext.xml:904 Itext.xml:911
+#, no-c-format
+msgid "&#x200B;"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:88
+#, no-c-format
+msgid "subject"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:95
+#, no-c-format
+msgid "keywords"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:102
+#, no-c-format
+msgid "author"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:109
+#, no-c-format
+msgid "creator"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:121
+#, no-c-format
+msgid "Basic Text Elements"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:122
+#, no-c-format
+msgid ""
+"Useful documents will need to contain more than just text; however, the "
+"standard UI components are geared towards HTML generation and are not useful "
+"for generating PDF content. Instead, Seam provides a special UI components "
+"for generating suitable PDF content. Tags like <literal>&lt;p:image&gt;</"
+"literal> and <literal>&lt;p:paragraph&gt;</literal> are the basic "
+"foundations of simple documents. Tags like <literal>&lt;p:font&gt;</literal> "
+"provide style information to all the content surrounging them."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:125
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"&gt; \n"
+"    &lt;p:image alignment=\"right\" wrap=\"true\" resource=\"/logo.jpg\" /"
+"&gt;\n"
+"    &lt;p:font size=\"24\"&gt;\n"
+"        &lt;p:paragraph spacingAfter=\"50\"&gt;My First Document&lt;/p:"
+"paragraph&gt;\n"
+"    &lt;/p:font&gt;\n"
+"\n"
+"    &lt;p:paragraph alignment=\"justify\"&gt;\n"
+"        This is a simple document.  It isn&#39;t very fancy.\n"
+"    &lt;/p:paragraph&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:127
+#, no-c-format
+msgid "p:paragraph"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:128
+#, no-c-format
+msgid ""
+"Most uses of text should be sectioned into paragraphs so that text fragments "
+"can be flowed, formatted and styled in logical groups."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:133
+#, no-c-format
+msgid "firstLineIndent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:140 Itext.xml:832
+#, no-c-format
+msgid "extraParagraphSpace"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:147 Itext.xml:804
+#, no-c-format
+msgid "leading"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:154 Itext.xml:811
+#, no-c-format
+msgid "multipliedLeading"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:161 Itext.xml:340 Itext.xml:712
+#, no-c-format
+msgid "spacingBefore"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:163 Itext.xml:342 Itext.xml:714
+#, no-c-format
+msgid "The blank space to be inserted before the element."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:169 Itext.xml:348 Itext.xml:720
+#, no-c-format
+msgid "spacingAfter"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:171 Itext.xml:350 Itext.xml:722
+#, no-c-format
+msgid "The blank space to be inserted after the element."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:177 Itext.xml:326 Itext.xml:595
+#, no-c-format
+msgid "indentationLeft"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:184 Itext.xml:333 Itext.xml:603
+#, no-c-format
+msgid "indentationRight"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:191 Itext.xml:749
+#, no-c-format
+msgid "keepTogether"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:201
+#, no-c-format
+msgid "p:text"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:202
+#, no-c-format
+msgid ""
+"The <literal>text</literal> tag allows text fragments to be produced from "
+"application data using normal JSF converter mechanisms. It is very similar "
+"to the <literal>outputText</literal> tag used when rendering HTML documents. "
+"Here is an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:205
+#, no-c-format
+msgid ""
+"&lt;p:paragraph&gt;\n"
+"    The item costs &lt;p:text value=\"#{product.price}\"&gt;\n"
+"        &lt;f:convertNumber type=\"currency\" currencySymbol=\"$\"/&gt;\n"
+"    &lt;/p:text&gt;\n"
+"&lt;/p:paragraph&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:208
+#, no-c-format
+msgid "value"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:210
+#, no-c-format
+msgid ""
+"The value to be displayed. This will typically be a value binding expression."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:219
+#, no-c-format
+msgid "p:font"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:220
+#, no-c-format
+msgid "Font declarations have no direct"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:225
+#, no-c-format
+msgid "familyName"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:227
+#, no-c-format
+msgid ""
+"The font family. One of: <literal>COURIER</literal>, <literal>HELVETICA</"
+"literal>, <literal>TIMES-ROMAN</literal>, <literal>SYMBOL</literal> or "
+"<literal>ZAPFDINGBATS</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:233
+#, no-c-format
+msgid "size"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:235
+#, no-c-format
+msgid "The point size of the font."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:241 Itext.xml:530
+#, no-c-format
+msgid "style"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:243
+#, no-c-format
+msgid ""
+"The font styles. Any combination of : <literal>NORMAL</literal>, "
+"<literal>BOLD</literal>, <literal>ITALIC</literal>, <literal>OBLIQUE</"
+"literal>, <literal>UNDERLINE</literal>, <literal>LINE-THROUGH</literal>"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:252
+#, no-c-format
+msgid "p:newPage"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:253
+#, no-c-format
+msgid "<literal>p:newPage</literal> inserts a page break."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:259
+#, no-c-format
+msgid "p:image"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:260
+#, no-c-format
+msgid ""
+"<literal>p:image</literal> inserts an image into the document. Images can be "
+"be loaded from the classpath or from the web application context using the "
+"<literal>resource</literal> attribute."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:263
+#, no-c-format
+msgid "&lt;p:image resource=\"/jboss.jpg\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:264
+#, no-c-format
+msgid ""
+"Resources can also be dynamically generated by application code. The "
+"<literal>imageData</literal> attribute can specify a value binding "
+"expression whose value is a <literal>java.awt.Image</literal> object."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:267
+#, no-c-format
+msgid "&lt;p:image imageData=\"#{images.chart}\" /&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:270
+#, no-c-format
+msgid "resource"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:272
+#, no-c-format
+msgid ""
+"The location of the image resource to be included. Resources should be "
+"relative to the document root of the web application."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:278
+#, no-c-format
+msgid "imageData"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:280
+#, no-c-format
+msgid "A method expression binding to an application-generated image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:286 Itext.xml:909
+#, no-c-format
+msgid "rotation"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:288
+#, no-c-format
+msgid "The rotation of the image in degrees."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:294
+#, no-c-format
+msgid "height"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:296
+#, no-c-format
+msgid "The height of the image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:302
+#, no-c-format
+msgid "width"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:304
+#, no-c-format
+msgid "The width of the image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:310 Itext.xml:437 Itext.xml:587
+#, no-c-format
+msgid "alignment"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:312
+#, no-c-format
+msgid ""
+"The alignment of the image. (see <xref linkend=\"Seam_Reference_Guide-"
+"Document_Constants-Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:318
+#, no-c-format
+msgid "<literal>alt</literal>"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:320
+#, no-c-format
+msgid "Alternative text representation for the image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:356 Itext.xml:668
+#, no-c-format
+msgid "widthPercentage"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:363
+#, no-c-format
+msgid "initialRotation"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:370
+#, no-c-format
+msgid "<literal>dpi</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:377
+#, no-c-format
+msgid "scalePercent"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:379
+#, no-c-format
+msgid ""
+"The scaling factor (as a percentage) to use for the image. This can be "
+"expressed as a single percentage value or as two percentage values "
+"representing separate x and y scaling percentages."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:385
+#, no-c-format
+msgid "wrap"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:392
+#, no-c-format
+msgid "underlying"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:402
+#, no-c-format
+msgid "p:anchor"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:403
+#, no-c-format
+msgid ""
+"<literal>p:anchor</literal> defines clickable links from a document. It "
+"supports the following attributes:"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:408
+#, no-c-format
+msgid "name"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:410
+#, no-c-format
+msgid "The name of an in-document anchor destination."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:416
+#, no-c-format
+msgid "reference"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:418
+#, no-c-format
+msgid ""
+"The destination the link refers to. Links to other points in the document "
+"should begin with a <code>#</code>. For example, <code>#link1</code> to "
+"refer to an anchor postion with a <literal>name</literal> of <literal>link1</"
+"literal>. Links may also be a full URL to point to a resource outside of the "
+"document."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:429
+#, no-c-format
+msgid "Headers and Footers"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:431
+#, no-c-format
+msgid "p:header and p:footer"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:432
+#, no-c-format
+msgid ""
+"The <literal>p:header</literal> and <literal>p:footer</literal> components "
+"provide the ability to place header and footer text on each page of a "
+"generated document, with the exception of the first page. Header and footer "
+"declarations should appear near the top of a document."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:439
+#, no-c-format
+msgid ""
+"The alignment of the header/footer box section. (see <xref linkend="
+"\"Seam_Reference_Guide-Document_Constants-Alignment_Values\"/> for alignment "
+"values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:445
+#, no-c-format
+msgid "backgroundColor"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:447
+#, no-c-format
+msgid ""
+"The background color of the header/footer box. (see <xref linkend="
+"\"Seam_Reference_Guide-Document_Constants-Color_Values\"/> for color values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:453
+#, no-c-format
+msgid "borderColor"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:455
+#, no-c-format
+msgid ""
+"The border color of the header/footer box. Individual border sides can be "
+"set using <literal>borderColorLeft</literal>, <literal>borderColorRight</"
+"literal>, <literal>borderColorTop</literal> and <literal>borderColorBottom</"
+"literal>.(see <xref linkend=\"Seam_Reference_Guide-Document_Constants-"
+"Color_Values\"/> for color values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:461
+#, no-c-format
+msgid "borderWidth"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:463
+#, no-c-format
+msgid ""
+"The width of the border. Inidvidual border sides can be specified using "
+"<literal>borderWidthLeft</literal>, <literal>borderWidthRight</literal>, "
+"<literal>borderWidthTop</literal> and <literal>borderWidthBottom</literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:472
+#, no-c-format
+msgid "p:pageNumber"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:473
+#, no-c-format
+msgid ""
+"The current page number can be placed inside of a header or footer using the "
+"<literal>p:pageNumber</literal> tag. The page number tag can only be used in "
+"the context of a header or footer and can only be used once."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:481
+#, no-c-format
+msgid "Chapters and Sections"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:482
+#, no-c-format
+msgid ""
+"If the generated document follows a book/article structure, the <literal>p:"
+"chapter</literal> and <literal>p:section</literal> tags can be used to "
+"provide the necessary structure. Sections can only be used inside of "
+"chapters, but they may be nested arbitrarily deep. Most PDF viewers provide "
+"easy navigation between chapters and sections in a document."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:485
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"\n"
+"            title=\"Hello\"&gt;\n"
+"\n"
+"   &lt;p:chapter number=\"1\"&gt;\n"
+"      &lt;p:title&gt;&lt;p:paragraph&gt;Hello&lt;/p:paragraph&gt;&lt;/p:"
+"title&gt;\n"
+"      &lt;p:paragraph&gt;Hello #{user.name}!&lt;/p:paragraph&gt;\n"
+"   &lt;/p:chapter&gt;\n"
+"\n"
+"   &lt;p:chapter number=\"2\"&gt;\n"
+"      &lt;p:title&gt;&lt;p:paragraph&gt;Goodbye&lt;/p:paragraph&gt;&lt;/p:"
+"title&gt;\n"
+"      &lt;p:paragraph&gt;Goodbye #{user.name}.&lt;/p:paragraph&gt;\n"
+"   &lt;/p:chapter&gt;\n"
+"\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:487
+#, no-c-format
+msgid "p:chapter and p:section"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:490
+#, no-c-format
+msgid "number"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:492
+#, no-c-format
+msgid "The chapter number. Every chapter should be assigned a chapter number."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:498
+#, no-c-format
+msgid "numberDepth"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:500
+#, no-c-format
+msgid ""
+"The depth of numbering for section. All sections are numbered relative to "
+"their surrounding chapter/sections. The fourth section of of the first "
+"section of chapter three would be section 3.1.4, if displayed at the default "
+"number depth of three. To omit the chapter number, a number depth of 2 "
+"should be used. In that case, the section number would be displayed as 1.4."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:509
+#, no-c-format
+msgid "p:title"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:510
+#, no-c-format
+msgid ""
+"Any chapter or section can contain a <literal>p:title</literal>. The title "
+"will be displayed next to the chapter/section number. The body of the title "
+"may contain raw text or may be a <literal>p:paragraph</literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:518
+#, no-c-format
+msgid "Lists"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:519
+#, no-c-format
+msgid ""
+"List structures can be displayed using the <literal>p:list</literal> and "
+"<literal>p:listItem</literal> tags. Lists may contain arbitrarily-nested "
+"sublists. List items may not be used outside of a list. he following "
+"document uses the <literal>ui:repeat</literal> tag to to display a list of "
+"values retrieved from a Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:522
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"\n"
+"            xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"            title=\"Hello\"&gt;\n"
+"   &lt;p:list style=\"numbered\"&gt;\n"
+"      &lt;ui:repeat value=\"#{documents}\" var=\"doc\"&gt;\n"
+"         &lt;p:listItem&gt;#{doc.name}&lt;/p:listItem&gt;\n"
+"      &lt;/ui:repeat&gt;\n"
+"   &lt;/p:list&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:524
+#, no-c-format
+msgid "p:list"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:525
+#, no-c-format
+msgid "<literal>p:list</literal> supports the following attributes:"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:532
+#, no-c-format
+msgid ""
+"The ordering/bulleting style of list. One of: <literal>NUMBERED</literal>, "
+"<literal>LETTERED</literal>, <literal>GREEK</literal>, <literal>ROMAN</"
+"literal>, <literal>ZAPFDINGBATS</literal>, <literal>ZAPFDINGBATS_NUMBER</"
+"literal>. If no style is given, the list items are bulleted."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:538 Itext.xml:611
+#, no-c-format
+msgid "listSymbol"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:540
+#, no-c-format
+msgid "For bulleted lists, specifies the bullet symbol."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:546 Itext.xml:818
+#, no-c-format
+msgid "indent"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:548
+#, no-c-format
+msgid "The indentation level of the list."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:554
+#, no-c-format
+msgid "lowerCase"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:556
+#, no-c-format
+msgid ""
+"For list styles using letters, indicates whether the letters should be lower "
+"case."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:562
+#, no-c-format
+msgid "charNumber"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:564
+#, no-c-format
+msgid "For ZAPFDINGBATS, indicates the character code of the bullet character."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:570
+#, no-c-format
+msgid "numberType"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:572
+#, no-c-format
+msgid "For ZAPFDINGBATS_NUMBER, indicates the numbering style."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:581
+#, no-c-format
+msgid "p:listItem"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:582
+#, no-c-format
+msgid "<literal>p:listItem</literal> supports the following attributes:"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:589
+#, no-c-format
+msgid ""
+"The alignment of the list item. (See <xref linkend=\"Seam_Reference_Guide-"
+"Document_Constants-Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:597
+#, no-c-format
+msgid "The left indentation amount."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:605
+#, no-c-format
+msgid "The right indentation amount."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:613
+#, no-c-format
+msgid "Overrides the default list symbol for this list item."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:624
+#, no-c-format
+msgid "Tables"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:625
+#, no-c-format
+msgid ""
+"Table structures can be created using the <literal>p:table</literal> and "
+"<literal>p:cell</literal> tags. Unlike many table structures, there is no "
+"explicit row declaration. If a table has 3 columns, then every 3 cells will "
+"automatically form a row. Header and footer rows can be declared, and the "
+"headers and footers will be repeated in the event a table structure spans "
+"multiple pages."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:628
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"   \n"
+"            xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"            title=\"Hello\"&gt;   \n"
+"   &lt;p:table columns=\"3\" headerRows=\"1\"&gt;\n"
+"      &lt;p:cell&gt;name&lt;/p:cell&gt;\n"
+"      &lt;p:cell&gt;owner&lt;/p:cell&gt;\n"
+"      &lt;p:cell&gt;size&lt;/p:cell&gt;\n"
+"      &lt;ui:repeat value=\"#{documents}\" var=\"doc\"&gt;\n"
+"         &lt;p:cell&gt;#{doc.name}&lt;/p:cell&gt;\n"
+"         &lt;p:cell&gt;#{doc.user.name}&lt;/p:cell&gt;\n"
+"         &lt;p:cell&gt;#{doc.size}&lt;/p:cell&gt;\n"
+"      &lt;/ui:repeat&gt;\n"
+"   &lt;/p:table&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:630
+#, no-c-format
+msgid "p:table"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:631
+#, no-c-format
+msgid "<literal>p:table</literal> supports the following attributes."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:636
+#, no-c-format
+msgid "columns"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:638
+#, no-c-format
+msgid "The number of columns (cells) that make up a table row."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:644
+#, no-c-format
+msgid "widths"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:646
+#, no-c-format
+msgid ""
+"The relative widths of each column. There should be one value for each "
+"column. For example: widths=\"2 1 1\" would indicate that there are 3 "
+"columns and the first column should be twice the size of the second and "
+"third column."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:652
+#, no-c-format
+msgid "headerRows"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:654
+#, no-c-format
+msgid ""
+"The initial number of rows which are considered to be headers or footer rows "
+"and should be repeated if the table spans multiple pages."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:660
+#, no-c-format
+msgid "footerRows"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:662
+#, no-c-format
+msgid ""
+"The number of rows that are considered to be footer rows. This value is "
+"subtracted from the <literal>headerRows</literal> value. If document has 2 "
+"rows which make up the header and one row that makes up the footer, "
+"<literal>headerRows</literal> should be set to 3 and <literal>footerRows</"
+"literal> should be set to 1"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:670
+#, no-c-format
+msgid "The percentage of the page width that the table spans."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:676 Itext.xml:773
+#, no-c-format
+msgid "horizontalAlignment"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:678
+#, no-c-format
+msgid ""
+"The horizontal alignment of the table. (See <xref linkend="
+"\"Seam_Reference_Guide-Document_Constants-Alignment_Values\"/> for possible "
+"values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:684
+#, no-c-format
+msgid "skipFirstHeader"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:691 Itext.xml:881
+#, no-c-format
+msgid "runDirection"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:698
+#, no-c-format
+msgid "lockedWidth"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:705
+#, no-c-format
+msgid "splitRows"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:728
+#, no-c-format
+msgid "extendLastRow"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:735
+#, no-c-format
+msgid "headersInEvent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:742
+#, no-c-format
+msgid "splitLate"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:759
+#, no-c-format
+msgid "p:cell"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:760
+#, no-c-format
+msgid "<literal>p:cell</literal> supports the following attributes."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:765
+#, no-c-format
+msgid "colspan"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:767
+#, no-c-format
+msgid ""
+"Cells can span more than one column by declaring a <literal>colspan</"
+"literal> greater than 1. Tables do not have the ability to span across "
+"multiple rows."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:775
+#, no-c-format
+msgid ""
+"The horizontal alignment of the cell. (see <xref linkend="
+"\"Seam_Reference_Guide-Document_Constants-Alignment_Values\"/> for possible "
+"values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:781 Itext.xml:825
+#, no-c-format
+msgid "verticalAlignment"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:783
+#, no-c-format
+msgid ""
+"The vertical alignment of the cell. (see <xref linkend="
+"\"Seam_Reference_Guide-Document_Constants-Alignment_Values\"/> for possible "
+"values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:789
+#, no-c-format
+msgid "padding"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:791
+#, no-c-format
+msgid ""
+"Padding on a given side can also be specified using <literal>paddingLeft</"
+"literal>, <literal>paddingRight</literal>, <literal>paddingTop</literal> and "
+"<literal>paddingBottom</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:797
+#, no-c-format
+msgid "useBorderPadding"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:839
+#, no-c-format
+msgid "fixedHeight"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:846
+#, no-c-format
+msgid "noWrap"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:853
+#, no-c-format
+msgid "minimumHeight"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:860
+#, no-c-format
+msgid "followingIndent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:867
+#, no-c-format
+msgid "rightIndent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:874
+#, no-c-format
+msgid "spaceCharRatio"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:888
+#, no-c-format
+msgid "arabicOptions"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:895
+#, no-c-format
+msgid "useAscender"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:902
+#, no-c-format
+msgid "grayFill"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:921
+#, no-c-format
+msgid "Document Constants"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:922
+#, no-c-format
+msgid ""
+"This section documents some of the constants shared by attributes on "
+"multiple tags."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:926
+#, no-c-format
+msgid "Color Values"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:927
+#, no-c-format
+msgid ""
+"Seam documents do not yet support a full color specification. Currently, "
+"only named colors are supported. They are: <literal>white</literal>, "
+"<literal>gray</literal>, <literal>lightgray</literal>, <literal>darkgray</"
+"literal>, <literal>black</literal>, <literal>red</literal>, <literal>pink</"
+"literal>, <literal>yellow</literal>, <literal>green</literal>, "
+"<literal>magenta</literal>, <literal>cyan</literal> and <literal>blue</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:933
+#, no-c-format
+msgid "Alignment Values"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:934
+#, no-c-format
+msgid ""
+"Where alignment values are used, the Seam PDF supports the following "
+"horizontal alignment values: <literal>left</literal>, <literal>right</"
+"literal>, <literal>center</literal>, <literal>justify</literal> and "
+"<literal>justifyall</literal>. The vertical alignment values are "
+"<literal>top</literal>, <literal>middle</literal>, <literal>bottom</"
+"literal>, and <literal>baseline</literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:942
+#, no-c-format
+msgid "Configuring iText"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:943
+#, no-c-format
+msgid ""
+"Document generation works out of the box with no additional configuration "
+"needed. However, there are a few points of configuration that are needed for "
+"more serious applications."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:946
+#, no-c-format
+msgid ""
+"The default implementation serves PDF documents from a generic URL, "
+"<literal>/seam-doc.seam</literal>. Many browsers (and users) would prefer to "
+"see URLs that contain the actual PDF name like <literal>/myDocument.pdf</"
+"literal>. This capability requires some configuration. To serve PDF files, "
+"all *.pdf resources should be mapped to the Seam Servlet Filter and to the "
+"DocumentStoreServlet:"
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:949
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.servlet.SeamServletFilter&lt;/filter-"
+"class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;\n"
+"\n"
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.pdf.DocumentStoreServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"\n"
+"&lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:950
+#, no-c-format
+msgid ""
+"The <literal>useExtensions</literal> option on the document store component "
+"completes the functionality by instructing the document store to generate "
+"URLs with the correct filename extension for the document type being "
+"generated."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:953
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pdf=\"http://jboss.com/products/seam/pdf\"&gt;\n"
+"    &lt;pdf:documentStore useExtensions=\"true\" /&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:954
+#, no-c-format
+msgid ""
+"Generated documents are stored in conversation scope and will expire when "
+"the conversation ends. At that point, references to the document will be "
+"invalid. To You can specify a default view to be shown when a document does "
+"not exist using the <literal>errorPage</literal> property of the "
+"documentStore."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:957
+#, no-c-format
+msgid ""
+"&lt;pdf:documentStore useExtensions=\"true\" errorPage=\"/pdfMissing.seam\" /"
+"&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:961
+#, no-c-format
+msgid "iText links"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:962
+#, no-c-format
+msgid "For further information on iText, see:"
+msgstr ""
+
+#. Tag: ulink
+#: Itext.xml:969
+#, no-c-format
+msgid "iText Home Page"
+msgstr ""
+
+#. Tag: ulink
+#: Itext.xml:974
+#, no-c-format
+msgid "iText in Action"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Jbpm.pot
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Jbpm.pot	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Jbpm.pot	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1192 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-07-14 00:47+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Jbpm.xml:6
+#, no-c-format
+msgid "Pageflows and business processes"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:7
+#, no-c-format
+msgid ""
+"JBoss jBPM is a business process management engine for any Java SE or EE "
+"environment. jBPM lets you represent a business process or user interaction "
+"as a graph of nodes representing wait states, decisions, tasks, web pages, "
+"etc. The graph is defined using a simple, very readable, XML dialect called "
+"jPDL, and may be edited and visualised graphically using an eclipse plugin. "
+"jPDL is an extensible language, and is suitable for a range of problems, "
+"from defining web application page flow, to traditional workflow management, "
+"all the way up to orchestration of services in a SOA environment."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:10
+#, no-c-format
+msgid "Seam applications use jBPM for two different problems:"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:15
+#, no-c-format
+msgid ""
+"Defining the pageflow involved in complex user interactions. A jPDL process "
+"definition defines the page flow for a single conversation. A Seam "
+"conversation is considered to be a relatively short-running interaction with "
+"a single user."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:20
+#, no-c-format
+msgid ""
+"Defining the overarching business process. The business process may span "
+"multiple conversations with multiple users. Its state is persistent in the "
+"jBPM database, so it is considered long-running. Coordination of the "
+"activities of multiple users is a much more complex problem than scripting "
+"an interaction with a single user, so jBPM offers sophisticated facilities "
+"for task management and dealing with multiple concurrent paths of execution."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:25
+#, no-c-format
+msgid ""
+"<emphasis>Pageflow</emphasis>, <emphasis>conversation</emphasis> and "
+"<emphasis>task</emphasis> all refer to a single interaction with a single "
+"user and operate at different levels or granularity. A business process "
+"spans many tasks. Futhermore, the two applications of jBPM are totally "
+"orthogonal. You can use them together or independently or not at all."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:28
+#, no-c-format
+msgid ""
+"You do not have to know jDPL to use Seam. If you are perfectly happy "
+"defining pageflow using JSF or Seam navigation rules, and if your "
+"application is more data-driven that process-driven, you probably do not "
+"need jBPM. But we are finding that thinking of user interaction in terms of "
+"a well-defined graphical representation is helping us build more robust "
+"applications."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:32
+#, no-c-format
+msgid "Pageflow in Seam"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:33
+#, no-c-format
+msgid "There are two ways to define pageflow in Seam:"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:38
+#, no-c-format
+msgid ""
+"Using JSF or Seam navigation rules - the <emphasis>stateless navigation "
+"model</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:43
+#, no-c-format
+msgid "Using jPDL - the <emphasis>stateful navigation model</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:48
+#, no-c-format
+msgid ""
+"Very simple applications will only need the stateless navigation model. Very "
+"complex applications will use both models in different places. Each model "
+"has its strengths and weaknesses!"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:52
+#, no-c-format
+msgid "The two navigation models"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:53
+#, no-c-format
+msgid ""
+"The stateless model defines a mapping from a set of named, logical outcomes "
+"of an event directly to the resulting page of the view. The navigation rules "
+"are entirely oblivious to any state held by the application other than what "
+"page was the source of the event. This means that your action listener "
+"methods must sometimes make decisions about the page flow, since only they "
+"have access to the current state of the application."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:56
+#, no-c-format
+msgid "Here is an example page flow definition using JSF navigation rules:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:59
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"    &lt;from-view-id&gt;/numberGuess.jsp&lt;/from-view-id&gt;\n"
+"        \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;guess&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/numberGuess.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;win&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/win.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"        \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;lose&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/lose.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:60
+#, no-c-format
+msgid ""
+"Here is the same example page flow definition using Seam navigation rules:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:63
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/numberGuess.jsp\"&gt;\n"
+"        \n"
+"    &lt;navigation&gt;\n"
+"        &lt;rule if-outcome=\"guess\"&gt;\n"
+"            &lt;redirect view-id=\"/numberGuess.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"        &lt;rule if-outcome=\"win\"&gt;\n"
+"            &lt;redirect view-id=\"/win.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"        &lt;rule if-outcome=\"lose\"&gt;\n"
+"            &lt;redirect view-id=\"/lose.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:64
+#, no-c-format
+msgid ""
+"If you find navigation rules overly verbose, you can return view ids "
+"directly from your action listener methods:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:67
+#, no-c-format
+msgid ""
+"public String guess() {\n"
+"    if (guess==randomNumber) return \"/win.jsp\";\n"
+"    if (++guessCount==maxGuesses) return \"/lose.jsp\";\n"
+"    return null;\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:68
+#, no-c-format
+msgid ""
+"This results in a redirect. You can even specify parameters to be used in "
+"the redirect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:71
+#, no-c-format
+msgid ""
+"public String search() {\n"
+"    return \"/searchResults.jsp?searchPattern=#{searchAction.searchPattern}"
+"\";\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:72
+#, no-c-format
+msgid ""
+"The stateful model defines a set of transitions between a set of named, "
+"logical application states. In this model, it is possible to express the "
+"flow of any user interaction entirely in the jPDL pageflow definition, and "
+"write action listener methods that are completely unaware of the flow of the "
+"interaction."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:75
+#, no-c-format
+msgid "Here is an example page flow definition using jPDL:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:78
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"numberGuess\"&gt;\n"
+"    \n"
+"   &lt;start-page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"              &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"      &lt;/transition&gt;\n"
+"   &lt;/start-page&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess."
+"correctGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateRemainingGuesses\" expression=\"#{numberGuess."
+"lastGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"lose\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"displayGuess\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"lose\" view-id=\"/lose.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:87
+#, no-c-format
+msgid "There are two things we notice immediately here:"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:92
+#, no-c-format
+msgid ""
+"The JSF/Seam navigation rules are <emphasis>much</emphasis> simpler. "
+"(However, this obscures the fact that the underlying Java code is more "
+"complex.)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:97
+#, no-c-format
+msgid ""
+"The jPDL makes the user interaction immediately understandable, without us "
+"needing to even look at the JSP or Java code."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:102
+#, no-c-format
+msgid ""
+"In addition, the stateful model is more <emphasis>constrained</emphasis>. "
+"For each logical state (each step in the page flow), there are a constrained "
+"set of possible transitions to other states. The stateless model is an "
+"<emphasis>ad hoc</emphasis> model which is suitable to relatively "
+"unconstrained, freeform navigation where the user decides where he/she wants "
+"to go next, not the application."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:105
+#, no-c-format
+msgid ""
+"The stateful/stateless navigation distinction is quite similar to the "
+"traditional view of modal/modeless interaction. Now, Seam applications are "
+"not usually modal in the simple sense of the word - indeed, avoiding "
+"application modal behavior is one of the main reasons for having "
+"conversations! However, Seam applications can be, and often are, modal at "
+"the level of a particular conversation. It is well-known that modal behavior "
+"is something to avoid as much as possible; it is very difficult to predict "
+"the order in which your users are going to want to do things! However, there "
+"is no doubt that the stateful model has its place."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:108
+#, no-c-format
+msgid ""
+"The biggest contrast between the two models is the back-button behavior."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:114
+#, no-c-format
+msgid "Seam and the back button"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:115
+#, no-c-format
+msgid ""
+"When JSF or Seam navigation rules are used, Seam lets the user freely "
+"navigate via the back, forward and refresh buttons. It is the responsibility "
+"of the application to ensure that conversational state remains internally "
+"consistent when this occurs. Experience with the combination of web "
+"application frameworks like Struts or WebWork - that do not support a "
+"conversational model - and stateless component models like EJB stateless "
+"session beans or the Spring framework has taught many developers that this "
+"is close to impossible to do! However, our experience is that in the context "
+"of Seam, where there is a well-defined conversational model, backed by "
+"stateful session beans, it is actually quite straightforward. Usually it is "
+"as simple as combining the use of <literal>no-conversation-view-id</literal> "
+"with null checks at the beginning of action listener methods. We consider "
+"support for freeform navigation to be almost always desirable."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:118
+#, no-c-format
+msgid ""
+"In this case, the <literal>no-conversation-view-id</literal> declaration "
+"goes in <literal>pages.xml</literal>. It tells Seam to redirect to a "
+"different page if a request originates from a page rendered during a "
+"conversation, and that conversation no longer exists:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:121
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/checkout.xhtml\" \n"
+"        no-conversation-view-id=\"/main.xhtml\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:122
+#, no-c-format
+msgid ""
+"On the other hand, in the stateful model, backbuttoning is interpreted as an "
+"undefined transition back to a previous state. Since the stateful model "
+"enforces a defined set of transitions from the current state, back buttoning "
+"is be default disallowed in the stateful model. Seam transparently detects "
+"the use of the back button, and blocks any attempt to perform an action from "
+"a previous, <emphasis>stale</emphasis> page, and simply redirects the user "
+"to the <emphasis>current</emphasis> page (and displays a faces message). "
+"Whether you consider this a feature or a limitation of the stateful model "
+"depends upon your point of view: as an application developer, it is a "
+"feature; as a user, it might be frustrating! You can enable backbutton "
+"navigation from a particular page node by setting <literal>back=\"enabled\"</"
+"literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:125
+#, no-c-format
+msgid ""
+"&lt;page name=\"checkout\" \n"
+"        view-id=\"/checkout.xhtml\" \n"
+"        back=\"enabled\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"checkout\"/&gt;\n"
+"    &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:126
+#, no-c-format
+msgid ""
+"This allows backbuttoning <emphasis>from</emphasis> the <literal>checkout</"
+"literal> state to <emphasis>any previous state!</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:129
+#, no-c-format
+msgid ""
+"Of course, we still need to define what happens if a request originates from "
+"a page rendered during a pageflow, and the conversation with the pageflow no "
+"longer exists. In this case, the <literal>no-conversation-view-id</literal> "
+"declaration goes into the pageflow definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:132
+#, no-c-format
+msgid ""
+"&lt;page name=\"checkout\" \n"
+"        view-id=\"/checkout.xhtml\" \n"
+"        back=\"enabled\" \n"
+"        no-conversation-view-id=\"/main.xhtml\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"checkout\"/&gt;\n"
+"    &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:134
+#, no-c-format
+msgid ""
+"In practice, both navigation models have their place, and you will quickly "
+"learn to recognize when to prefer one model over the other."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:142
+#, no-c-format
+msgid "Using jPDL pageflows"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:144
+#, no-c-format
+msgid "Installing pageflows"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:145
+#, no-c-format
+msgid ""
+"We need to install the Seam jBPM-related components, and tell them where to "
+"find our pageflow definition. We can specify this Seam configuration in "
+"<literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:148
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:pageflow-definitions&gt;\n"
+"        &lt;value&gt;pageflow.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:pageflow-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:149
+#, no-c-format
+msgid ""
+"The first line installs jBPM, the second points to a jPDL-based pageflow "
+"definition."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:155
+#, no-c-format
+msgid "Starting pageflows"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:156
+#, no-c-format
+msgid ""
+"We <emphasis>start</emphasis> a jPDL-based pageflow by specifying the name "
+"of the process definition using a <literal>@Begin</literal>, "
+"<literal>@BeginTask</literal> or <literal>@StartTask</literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:159
+#, no-c-format
+msgid ""
+"@Begin(pageflow=\"numberguess\")\n"
+"public void begin() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:160
+#, no-c-format
+msgid "Alternatively we can start a pageflow using pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:163
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"        &lt;begin-conversation pageflow=\"numberguess\"/&gt;\n"
+"    &lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:164
+#, no-c-format
+msgid ""
+"If we are beginning the pageflow during the <literal>RENDER_RESPONSE</"
+"literal> phase&mdash;during a <literal>@Factory</literal> or "
+"<literal>@Create</literal> method, for example&mdash;we consider ourselves "
+"to be already at the page being rendered, and use a <literal>&lt;start-"
+"page&gt;</literal> node as the first node in the pageflow, as in the example "
+"above."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:167
+#, no-c-format
+msgid ""
+"But if the pageflow is begun as the result of an action listener invocation, "
+"the outcome of the action listener determines which is the first page to be "
+"rendered. In this case, we use a <literal>&lt;start-state&gt;</literal> as "
+"the first node in the pageflow, and declare a transition for each possible "
+"outcome:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:170
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"viewEditDocument\"&gt;\n"
+"\n"
+"    &lt;start-state name=\"start\"&gt;\n"
+"        &lt;transition name=\"documentFound\" to=\"displayDocument\"/&gt;\n"
+"        &lt;transition name=\"documentNotFound\" to=\"notFound\"/&gt;\n"
+"    &lt;/start-state&gt;\n"
+"    \n"
+"    &lt;page name=\"displayDocument\" view-id=\"/document.jsp\"&gt;\n"
+"        &lt;transition name=\"edit\" to=\"editDocument\"/&gt;\n"
+"        &lt;transition name=\"done\" to=\"main\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"    \n"
+"    ...\n"
+"    \n"
+"    &lt;page name=\"notFound\" view-id=\"/404.jsp\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"    &lt;/page&gt;\n"
+"    \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:174
+#, no-c-format
+msgid "Page nodes and transitions"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:175
+#, no-c-format
+msgid ""
+"Each <literal>&lt;page&gt;</literal> node represents a state where the "
+"system is waiting for user input:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:178
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"        &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:179
+#, no-c-format
+msgid ""
+"The <literal>view-id</literal> is the JSF view id. The <literal>&lt;redirect/"
+"&gt;</literal> element has the same effect as <literal>&lt;redirect/&gt;</"
+"literal> in a JSF navigation rule: namely, a post-then-redirect behavior, to "
+"overcome problems with the browser&#39;s refresh button (note that Seam "
+"propagates conversation contexts over these browser redirects)."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:182
+#, no-c-format
+msgid ""
+"The transition name is the name of a JSF outcome triggered by clicking a "
+"command button or command link in <literal>numberGuess.jsp</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:185
+#, no-c-format
+msgid ""
+"&lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"guess\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:186
+#, no-c-format
+msgid ""
+"When the transition is triggered by clicking this button, jBPM will activate "
+"the transition action by calling the <literal>guess()</literal> method of "
+"the <literal>numberGuess</literal> component. Notice that the syntax used "
+"for specifying actions in the jPDL is just a familiar JSF EL expression, and "
+"that the transition action handler is just a method of a Seam component in "
+"the current Seam contexts. So we have exactly the same event model for jBPM "
+"events that we already have for JSF events. (The <emphasis>One Kind of "
+"Stuff</emphasis> principle.)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:189
+#, no-c-format
+msgid ""
+"In the case of a null outcome (for example, a command button with no "
+"<literal>action</literal> defined), Seam will signal the transition with no "
+"name if one exists, or else simply redisplay the page if all transitions "
+"have names. So we could slightly simplify our example pageflow and this "
+"button:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:192
+#, no-c-format
+msgid "&lt;h:commandButton type=\"submit\" value=\"Guess\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:193
+#, no-c-format
+msgid "Would fire the following un-named transition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:196
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"evaluateGuess\"&gt;\n"
+"        &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:197
+#, no-c-format
+msgid ""
+"It is even possible to have the button call an action method, in which case "
+"the action outcome will determine the transition to be taken:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:200
+#, no-c-format
+msgid ""
+"&lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"#{numberGuess."
+"guess}\"/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:201
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;transition name=\"correctGuess\" to=\"win\"/&gt;\n"
+"    &lt;transition name=\"incorrectGuess\" to=\"evaluateGuess\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:202
+#, no-c-format
+msgid ""
+"However, this is considered an inferior style, since it moves responsibility "
+"for controlling the flow out of the pageflow definition and back into the "
+"other components. It is much better to centralize this concern in the "
+"pageflow itself."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:208
+#, no-c-format
+msgid "Controlling the flow"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:209
+#, no-c-format
+msgid ""
+"Usually, we do not need the more powerful features of jPDL when defining "
+"pageflows. We do need the <literal>&lt;decision&gt;</literal> node, however:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:212
+#, no-c-format
+msgid ""
+"&lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess.correctGuess}"
+"\"&gt;\n"
+"    &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"    &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"&lt;/decision&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:213
+#, no-c-format
+msgid ""
+"A decision is made by evaluating a JSF EL expression in the Seam contexts."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:219
+#, no-c-format
+msgid "Ending the flow"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:220
+#, no-c-format
+msgid ""
+"We end the conversation using <literal>&lt;end-conversation&gt;</literal> or "
+"<literal>@End</literal>. (In fact, for readability, use of <emphasis>both</"
+"emphasis> is encouraged.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:223
+#, no-c-format
+msgid ""
+"&lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;end-conversation/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:224
+#, no-c-format
+msgid ""
+"Optionally, we can end a task, specify a jBPM <literal>transition</literal> "
+"name. In this case, Seam will signal the end of the current task in the "
+"overarching business process."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:227
+#, no-c-format
+msgid ""
+"&lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;end-task transition=\"success\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:233
+#, no-c-format
+msgid "Business process management in Seam"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:234
+#, no-c-format
+msgid ""
+"A business process is a well-defined set of tasks that must be performed by "
+"users or software systems according to well-defined rules about "
+"<emphasis>who</emphasis> can perform a task, and <emphasis>when</emphasis> "
+"it should be performed. Seam&#39;s jBPM integration makes it easy to display "
+"lists of tasks to users and let them manage their tasks. Seam also lets the "
+"application store state associated with the business process in the "
+"<literal>BUSINESS_PROCESS</literal> context, and have that state made "
+"persistent via jBPM variables."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:237
+#, no-c-format
+msgid ""
+"A simple business process definition looks much the same as a page flow "
+"definition (<emphasis>One Kind of Stuff</emphasis>), except that instead of "
+"<literal>&lt;page&gt;</literal> nodes, we have <literal>&lt;task-node&gt;</"
+"literal> nodes. In a long-running business process, the wait states are "
+"where the system is waiting for some user to log in and perform a task."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:240
+#, no-c-format
+msgid ""
+"&lt;process-definition name=\"todo\"&gt;\n"
+"   \n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"todo\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;task-node name=\"todo\"&gt;\n"
+"      &lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"         &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"      &lt;/task&gt;\n"
+"      &lt;transition to=\"done\"/&gt;\n"
+"   &lt;/task-node&gt;\n"
+"   \n"
+"   &lt;end-state name=\"done\"/&gt;\n"
+"   \n"
+"&lt;/process-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:251
+#, no-c-format
+msgid ""
+"It is perfectly possible that we might have both jPDL business process "
+"definitions and jPDL pageflow definitions in the same project. If so, the "
+"relationship between the two is that a single <literal>&lt;task&gt;</"
+"literal> in a business process corresponds to a whole pageflow <literal>&lt;"
+"pageflow-definition&gt;</literal>"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:256
+#, no-c-format
+msgid "Using jPDL business process definitions"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:258
+#, no-c-format
+msgid "Installing process definitions"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:259
+#, no-c-format
+msgid ""
+"We need to install jBPM, and tell it where to find the business process "
+"definitions:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:262
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;todo.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:266
+#, no-c-format
+msgid "Initializing actor ids"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:267
+#, no-c-format
+msgid ""
+"We always need to know what user is currently logged in. jBPM "
+"<emphasis>knows</emphasis> users by their <emphasis>actor id</emphasis> and "
+"<emphasis>group actor ids</emphasis>. We specify the current actor ids using "
+"the built in Seam component named <literal>actor</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:270
+#, no-c-format
+msgid ""
+"@In Actor actor;\n"
+"\n"
+"public String login() {\n"
+"    ...\n"
+"    actor.setId( user.getUserName() );\n"
+"    actor.getGroupActorIds().addAll( user.getGroupNames() );\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:274
+#, no-c-format
+msgid "Initiating a business process"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:275
+#, no-c-format
+msgid ""
+"To initiate a business process instance, we use the <literal>@CreateProcess</"
+"literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:278
+#, no-c-format
+msgid ""
+"@CreateProcess(definition=\"todo\")\n"
+"public void createTodo() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:279
+#, no-c-format
+msgid "Alternatively we can initiate a business process using pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:282
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;create-process definition=\"todo\" /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:286
+#, no-c-format
+msgid "Task assignment"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:287
+#, no-c-format
+msgid ""
+"When a process starts, task instances are created. These must be assigned to "
+"users or user groups. We can either hardcode our actor ids, or delegate to a "
+"Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:290
+#, no-c-format
+msgid ""
+"&lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"    &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"&lt;/task&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:291
+#, no-c-format
+msgid ""
+"In this case, we have simply assigned the task to the current user. We can "
+"also assign tasks to a pool:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:294
+#, no-c-format
+msgid ""
+"&lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"    &lt;assignment pooled-actors=\"employees\"/&gt;\n"
+"&lt;/task&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:298
+#, no-c-format
+msgid "Task lists"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:299
+#, no-c-format
+msgid ""
+"Several built-in Seam components make it easy to display task lists. The "
+"<literal>pooledTaskInstanceList</literal> is a list of pooled tasks that "
+"users may assign to themselves:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:302
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{pooledTaskInstanceList}\" var=\"task\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Description&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{task.description}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link action=\"#{pooledTask.assignToCurrentActor}\" value="
+"\"Assign\" taskInstance=\"#{task}\"/&gt;\n"
+"    &lt;/h:column&gt;                    \n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:303
+#, no-c-format
+msgid ""
+"Note that instead of <literal>&lt;s:link&gt;</literal> we could have used a "
+"plain JSF <literal>&lt;h:commandLink&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:306
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"#{pooledTask.assignToCurrentActor}\"&gt; \n"
+"    &lt;f:param name=\"taskId\" value=\"#{task.id}\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:307
+#, no-c-format
+msgid ""
+"The <literal>pooledTask</literal> component is a built-in component that "
+"simply assigns the task to the current user."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:310
+#, no-c-format
+msgid ""
+"The <literal>taskInstanceListForType</literal> component includes tasks of a "
+"particular type that are assigned to the current user:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:313
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{taskInstanceListForType[&#39;todo&#39;]}\" var="
+"\"task\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Description&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{task.description}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link action=\"#{todoList.start}\" value=\"Start Work\" "
+"taskInstance=\"#{task}\"/&gt;\n"
+"    &lt;/h:column&gt;                    \n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:317
+#, no-c-format
+msgid "Performing a task"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:318
+#, no-c-format
+msgid ""
+"To begin work on a task, we use either <literal>@StartTask</literal> or "
+"<literal>@BeginTask</literal> on the listener method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:321
+#, no-c-format
+msgid ""
+"@StartTask\n"
+"public String start() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:322
+#, no-c-format
+msgid ""
+"Alternatively we can begin work on a task using <filename>pages.xml</"
+"filename>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:325
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;start-task /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:326
+#, no-c-format
+msgid ""
+"These annotations begin a special kind of conversation that has significance "
+"in terms of the overarching business process. Work done by this conversation "
+"has access to state held in the business process context."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:329
+#, no-c-format
+msgid ""
+"If we end the conversation using <literal>@EndTask</literal>, Seam will "
+"signal the completion of the task:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:332
+#, no-c-format
+msgid ""
+"@EndTask(transition=\"completed\")\n"
+"public String completed() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:333
+#, no-c-format
+msgid "Alternatively we can use pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:336
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;end-task transition=\"completed\" /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:337
+#, no-c-format
+msgid ""
+"(Alternatively, we could have used <literal>&lt;end-conversation&gt;</"
+"literal> as shown above.)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:340
+#, no-c-format
+msgid ""
+"At this point, jBPM takes over and continues executing the business process "
+"definition. (In more complex processes, several tasks might need to be "
+"completed before process execution can resume.)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:344
+#, no-c-format
+msgid ""
+"Please refer to the jBPM documentation for a more thorough overview of the "
+"sophisticated features that jBPM provides for managing complex business "
+"processes."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Jms.pot
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Jms.pot	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Jms.pot	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,547 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-07-14 00:47+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Jms.xml:6
+#, no-c-format
+msgid "Asynchronicity and messaging"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:7
+#, no-c-format
+msgid ""
+"Seam makes it very easy to perform work asynchronously from a web request. "
+"When most people think of asynchronicity in Java EE, they think of using "
+"JMS. This is certainly one way to approach the problem in Seam, and is the "
+"right way when you have strict and well-defined quality of service "
+"requirements. Seam makes it easy to send and recieve JMS messages using Seam "
+"components."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:10
+#, no-c-format
+msgid ""
+"But for many usecases, JMS is overkill. Seam layers a simple asynchronous "
+"method and event facility over the EJB 3.0 timer service."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:13
+#, no-c-format
+msgid "Asynchronicity"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:14
+#, no-c-format
+msgid ""
+"Asynchronous events and method calls have the same quality of service "
+"expectations as the container&#39;s EJB timer service. If you are not "
+"familiar with the Timer service, do not worry, you do not need to interact "
+"with it directly if you want to use asynchronous methods in Seam."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:17
+#, no-c-format
+msgid ""
+"To use asynchronous methods and events, you need to add the following line "
+"to <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:20
+#, no-c-format
+msgid "&lt;core:dispatcher/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:21
+#, no-c-format
+msgid ""
+"Note that this functionality is not available in environments which do not "
+"support EJB 3.0."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:24
+#, no-c-format
+msgid "Asynchronous methods"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:25
+#, no-c-format
+msgid ""
+"In simplest form, an asynchronous call just lets a method call be processed "
+"asynchronously (in a different thread) from the caller. We usually use an "
+"asynchronous call when we want to return an immediate response to the "
+"client, and let some expensive work be processed in the background. This "
+"pattern works very well in applications which use AJAX, where the client can "
+"automatically poll the server for the result of the work."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:28
+#, no-c-format
+msgid ""
+"For EJB components, we annotate the local interface to specify that a method "
+"is processed asynchronously."
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:31
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public void processPayment(Payment payment);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:32
+#, no-c-format
+msgid ""
+"(For JavaBean components we can annotate the component implementation class "
+"if we like.)"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:35
+#, no-c-format
+msgid "The use of asynchronicity is transparent to the bean class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:38
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"paymentHandler\")\n"
+"public class PaymentHandlerBean implements PaymentHandler\n"
+"{\n"
+"    public void processPayment(Payment payment)\n"
+"    {\n"
+"        //do some work!\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:39
+#, no-c-format
+msgid "And also transparent to the client:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:42
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String pay()\n"
+"    {\n"
+"        paymentHandler.processPayment( new Payment(bill) );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:43
+#, no-c-format
+msgid ""
+"The asynchronous method is processed in a completely new event context and "
+"does not have access to the session or conversation context state of the "
+"caller. However, the business process context <emphasis>is</emphasis> "
+"propagated."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:46
+#, no-c-format
+msgid ""
+"Asynchronous method calls may be scheduled for later execution using the "
+"<literal>@Duration</literal>, <literal>@Expiration</literal> and "
+"<literal>@IntervalDuration</literal> annotations."
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:49
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public void processScheduledPayment(Payment payment, @Expiration Date "
+"date);\n"
+"\n"
+"    @Asynchronous\n"
+"    public void processRecurringPayment(Payment payment, @Expiration Date "
+"date, \n"
+"      @IntervalDuration Long interval)&#39;\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:50
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String schedulePayment()\n"
+"    {\n"
+"        paymentHandler.processScheduledPayment( new Payment(bill), bill."
+"getDueDate() );\n"
+"        return \"success\";\n"
+"    }\n"
+"\n"
+"    public String scheduleRecurringPayment()\n"
+"    {\n"
+"        paymentHandler.processRecurringPayment( new Payment(bill), bill."
+"getDueDate(), ONE_MONTH );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:51
+#, no-c-format
+msgid ""
+"Both client and server may access the <literal>Timer</literal> object "
+"associated with the invocation."
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:54
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public Timer processScheduledPayment(Payment payment, @Expiration Date "
+"date);\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:55
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"paymentHandler\")\n"
+"public class PaymentHandlerBean implements PaymentHandler\n"
+"{\n"
+"    @In Timer timer;\n"
+"    \n"
+"    public Timer processScheduledPayment(Payment payment, @Expiration Date "
+"date)\n"
+"    {\n"
+"        //do some work!\n"
+"        \n"
+"        return timer; //note that return value is completely ignored\n"
+"    }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:56
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String schedulePayment()\n"
+"    {\n"
+"        Timer timer = paymentHandler.processScheduledPayment( new Payment"
+"(bill), bill.getDueDate() );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:57
+#, no-c-format
+msgid "Asynchronous methods cannot return any other value to the caller."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:60
+#, no-c-format
+msgid "Asynchronous events"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:61
+#, no-c-format
+msgid ""
+"Component-driven events may also be asynchronous. To raise an event for "
+"asynchronous processing, simply call the <literal>raiseAsynchronousEvent()</"
+"literal> methods of the <literal>Events</literal> class. To schedule a timed "
+"event, call one of the <literal>raiseTimedEvent()</literal> methods. "
+"Components may observe asynchronous events in the usual way, but remember "
+"that only the business process context is propagated to the asynchronous "
+"thread."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:64
+#, no-c-format
+msgid "Messaging in Seam"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:65
+#, no-c-format
+msgid ""
+"Seam makes it easy to send and receive JMS messages to and from Seam "
+"components."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:68
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:69
+#, no-c-format
+msgid ""
+"To configure Seam&#39;s infrastructure for sending JMS messages, you need to "
+"tell Seam about any topics and queues you want to send messages to, and also "
+"tell Seam where to find the <literal>QueueConnectionFactory</literal> and/or "
+"<literal>TopicConnectionFactory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:72
+#, no-c-format
+msgid ""
+"Seam defaults to using <literal>UIL2ConnectionFactory</literal> which is the "
+"usual connection factory for use with JBossMQ. If you are using some other "
+"JMS provider, you need to set one or both of <literal>queueConnection."
+"queueConnectionFactoryJndiName</literal> and <literal>topicConnection."
+"topicConnectionFactoryJndiName</literal> in <literal>seam.properties</"
+"literal>, <literal>web.xml</literal> or <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:75
+#, no-c-format
+msgid ""
+"You also need to list topics and queues in <literal>components.xml</literal> "
+"to install Seam managed <literal>TopicPublisher</literal>s and "
+"<literal>QueueSender</literal>s:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:78
+#, no-c-format
+msgid ""
+"&lt;jms:managed-topic-publisher name=\"stockTickerPublisher\" \n"
+"                   auto-create=\"true  topic-jndi-name=\"topic/"
+"stockTickerTopic\"/&gt;\n"
+"\n"
+"&lt;jms:managed-queue-sender name=\"paymentQueueSender\" auto-create=\"true"
+"\" \n"
+"    queue-jndi-name=\"queue/paymentQueue\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:81
+#, no-c-format
+msgid "Using JBoss Messaging"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:82
+#, no-c-format
+msgid ""
+"For using JBoss Messaging which comes with JBoss Enterprise Application "
+"Platform 4.3, you should first set the value of the properties "
+"'<literal>queueConnection.queueConnectionFactoryJndiName</literal>' and "
+"'<literal>topicConnection.topicConnectionFactoryJndiName</literal>' to "
+"'<literal>ConnectionFactory</literal>' which is the default connection "
+"factory for JBoss Messaging. Then set the value of the "
+"'<literal>connectionProvider</literal>' property to '<literal>org.jboss.seam."
+"remoting.messaging.JBossMessagingConnectionProvider</literal>' on the class "
+"component '<literal>org.jboss.seam.remoting.messaging.SubscriptionRegistry</"
+"literal>', which creates topic connections for jboss messaging. "
+"<programlisting>\n"
+"&lt;component name=\"org.jboss.seam.jms.topicConnection\"&gt;\n"
+"        &lt;property name=\"topicConnectionFactoryJndiName\"&gt;\n"
+"        ConnectionFactory\n"
+"        &lt;/property&gt;\n"
+"&lt;/component&gt;\n"
+"&lt;component class=\"org.jboss.seam.remoting.messaging.SubscriptionRegistry"
+"\" installed=\"true\"&gt;\n"
+"        &lt;property name=\"allowedTopics\"&gt;\n"
+"        chatroomTopic\n"
+"        &lt;/property&gt;\n"
+"        &lt;property name=\"connectionProvider\"&gt;\n"
+"        org.jboss.seam.remoting.messaging.JBossMessagingConnectionProvider\n"
+"        &lt;/property&gt;\n"
+"&lt;/component&gt;\n"
+"</programlisting> You also need to update the topics to use JBoss Messaging "
+"as shown in the code fragment below."
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:86
+#, no-c-format
+msgid ""
+"&lt;server&gt;\n"
+"        &lt;mbean code=\"org.jboss.jms.server.destination.TopicService\"\n"
+"               name=\"jboss.messaging.destination:service=Topic,"
+"name=chatroomTopic\"\n"
+"                                            xmbean-dd=\"xmdesc/Topic-xmbean."
+"xml\"&gt;\n"
+"                &lt;depends optional-attribute-name=\"ServerPeer\"&gt;\n"
+"                jboss.messaging:service=ServerPeer\n"
+"                &lt;/depends&gt;\n"
+"                &lt;depends&gt;\n"
+"                jboss.messaging:service=PostOffice\n"
+"                &lt;/depends&gt;\n"
+"                &lt;attribute name=\"SecurityConfig\"&gt;\n"
+"                        &lt;security&gt;\n"
+"                          &lt;role name=\"guest\" read=\"true\" write=\"true"
+"\"/&gt;\n"
+"                          &lt;role name=\"publisher\" read=\"true\" write="
+"\"true\" create=\"false\"/&gt;\n"
+"                          &lt;role name=\"durpublisher\" read=\"true\" write="
+"\"true\" create=\"true\"/&gt;\n"
+"                        &lt;/security&gt;\n"
+"                &lt;/attribute&gt;\n"
+"        &lt;/mbean&gt;\n"
+"&lt;/server&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:90
+#, no-c-format
+msgid "Sending messages"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:91
+#, no-c-format
+msgid ""
+"Now, you can inject a JMS <literal>TopicPublisher</literal> and "
+"<literal>TopicSession</literal> into any component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:94
+#, no-c-format
+msgid ""
+"@In \n"
+"private TopicPublisher stockTickerPublisher;   \n"
+"@In \n"
+"private TopicSession topicSession;\n"
+"\n"
+"public void publish(StockPrice price) {\n"
+"      try\n"
+"      {\n"
+"         topicPublisher.publish( topicSession.createObjectMessage(price) );\n"
+"      } \n"
+"      catch (Exception ex)\n"
+"      {\n"
+"         throw new RuntimeException(ex);\n"
+"      } \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:95
+#, no-c-format
+msgid "Or, for working with a queue:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:98
+#, no-c-format
+msgid ""
+"@In\n"
+"private QueueSender paymentQueueSender;   \n"
+"@In\n"
+"private QueueSession queueSession;\n"
+"\n"
+"public void publish(Payment payment) {\n"
+"      try\n"
+"      {\n"
+"         paymentQueueSender.send( queueSession.createObjectMessage"
+"(payment) );\n"
+"      } \n"
+"      catch (Exception ex)\n"
+"      {\n"
+"         throw new RuntimeException(ex);\n"
+"      } \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:99
+#, no-c-format
+msgid "Receiving messages using a message-driven bean"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:100
+#, no-c-format
+msgid ""
+"You can process messages using any EJB3 message driven bean. Message-driven "
+"beans may even be Seam components, in which case it is possible to inject "
+"other event and application scoped Seam components."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:103
+#, no-c-format
+msgid "Receiving messages in the client"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:104
+#, no-c-format
+msgid ""
+"Seam Remoting lets you subscribe to a JMS topic from client-side JavaScript. "
+"This is described in the next chapter."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Mail.pot
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Mail.pot	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Mail.pot	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1024 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-07-14 00:47+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Mail.xml:6
+#, no-c-format
+msgid "Email"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:7
+#, no-c-format
+msgid ""
+"Seam now includes an optional components for templating and sending emails."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:10
+#, no-c-format
+msgid ""
+"Email support is provided by <literal>jboss-seam-mail.jar</literal>. This "
+"JAR contains the mail JSF controls, which are used to construct emails, and "
+"the <literal>mailSession</literal> manager component."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:13
+#, no-c-format
+msgid ""
+"The examples/mail project contains an example of the email support in "
+"action. It demonstrates proper packaging, and it contains a number of "
+"example that demonstrate the key features currently supported."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:17
+#, no-c-format
+msgid "Creating a message"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:18
+#, no-c-format
+msgid ""
+"You do not need to learn a whole new templating language to use Seam "
+"Mail&mdash;an email is just facelet!"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:21
+#, no-c-format
+msgid ""
+"&lt;m:message xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"    xmlns:m=\"http://jboss.com/products/seam/mail\"\n"
+"    xmlns:h=\"http://java.sun.com/jsf/html\"&gt;\n"
+"  \n"
+"    &lt;m:from name=\"Peter\" address=\"peter at example.com\" /&gt;\n"
+"    &lt;m:to name=\"#{person.firstname} #{person.lastname}\"&gt;#{person."
+"address}&lt;/m:to&gt;\n"
+"    &lt;m:subject&gt;Try out Seam!&lt;/m:subject&gt;\n"
+"    \n"
+"    &lt;m:body&gt;\n"
+"        &lt;p&gt;&lt;h:outputText value=\"Dear #{person.firstname}\" /&gt;,"
+"&lt;/p&gt;\n"
+"        &lt;p&gt;You can try out Seam by visiting \n"
+"        &lt;a href=\"http://labs.jboss.com/jbossseam\"&gt;http://labs.jboss."
+"com/jbossseam&lt;/a&gt;.&lt;/p&gt;\n"
+"        &lt;p&gt;Regards,&lt;/p&gt;\n"
+"        &lt;p&gt;Peter&lt;/p&gt;\n"
+"    &lt;/m:body&gt;\n"
+"    \n"
+"&lt;/m:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:22
+#, no-c-format
+msgid ""
+"The <literal>&lt;m:message&gt;</literal> tag wraps the whole message, and "
+"tells Seam to start rendering an email. Inside the <literal>&lt;m:message&gt;"
+"</literal> tag we use an <literal>&lt;m:from&gt;</literal> tag to set who "
+"the message is from, a <literal>&lt;m:to&gt;</literal> tag to specify a "
+"sender (notice how we use EL as we would in a normal facelet), and a "
+"<literal>&lt;m:subject&gt;</literal> tag."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:25
+#, no-c-format
+msgid ""
+"The <literal>&lt;m:body&gt;</literal> tag wraps the body of the email. You "
+"can use regular HTML tags inside the body as well as JSF components."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:28
+#, no-c-format
+msgid ""
+"So, now you have your email template, how do you go about sending it? Well, "
+"at the end of rendering the <literal>m:message</literal> the "
+"<literal>mailSession</literal> is called to send the email, so all you have "
+"to do is ask Seam to render the view:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:31
+#, no-c-format
+msgid ""
+"@In(create=true)\n"
+"private Renderer renderer;\n"
+"   \n"
+"public void send() {\n"
+"    try {\n"
+"       renderer.render(\"/simple.xhtml\");\n"
+"       facesMessages.add(\"Email sent successfully\");\n"
+"   } \n"
+"   catch (Exception e) {\n"
+"       facesMessages.add(\"Email sending failed: \" + e.getMessage());\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:32
+#, no-c-format
+msgid ""
+"If, for example, you entered an invalid email address, then an exception "
+"would be thrown, which is caught and then displayed to the user."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:36
+#, no-c-format
+msgid "Attachments"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:37
+#, no-c-format
+msgid ""
+"Seam makes it easy to attach files to an email. It supports most of the "
+"standard java types used when working with files."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:40
+#, no-c-format
+msgid "If you wanted to email the <literal>jboss-seam-mail.jar</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:43
+#, no-c-format
+msgid "&lt;m:attachment value=\"/WEB-INF/lib/jboss-seam-mail.jar\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:44
+#, no-c-format
+msgid ""
+"Seam will load the file from the classpath, and attach it to the email. By "
+"default it would be attached as <literal>jboss-seam-mail.jar</literal>; if "
+"you wanted it to have another name you would just add the <literal>fileName</"
+"literal> attribute:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:47
+#, no-c-format
+msgid ""
+"&lt;m:attachment value=\"/WEB-INF/lib/jboss-seam-mail.jar\" fileName=\"this-"
+"is-so-cool.jar\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:48
+#, no-c-format
+msgid ""
+"You could also attach a <literal>java.io.File</literal>, a <literal>java.net."
+"URL</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:51
+#, no-c-format
+msgid "&lt;m:attachment value=\"#{numbers}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:52
+#, no-c-format
+msgid ""
+"Or a <literal>byte[]</literal> or a <literal>java.io.InputStream</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:55
+#, no-c-format
+msgid ""
+"&lt;m:attachment value=\"#{person.photo}\" contentType=\"image/png\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:56
+#, no-c-format
+msgid ""
+"You will notice that for a <literal>byte[]</literal> and a <literal>java.io."
+"InputStream</literal> you need to specify the MIME type of the attachment "
+"(as that information is not carried as part of the file)."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:59
+#, no-c-format
+msgid ""
+"And it gets even better, you can attach a Seam generated PDF, or any "
+"standard JSF view, just by wrapping a <literal>&lt;m:attachment&gt;</"
+"literal> around the normal tags you would use:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:62
+#, no-c-format
+msgid ""
+"&lt;m:attachment fileName=\"tiny.pdf\"&gt;\n"
+"    &lt;p:"
+"document&gt;                                                      \n"
+"        A very tiny "
+"PDF                                                                                                \n"
+"    &lt;/p:document&gt;\n"
+"&lt;/m:attachment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:63
+#, no-c-format
+msgid ""
+"If you had a set of files you wanted to attach (for example a set of "
+"pictures loaded from a database) you can just use a <literal>&lt;ui:"
+"repeat&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:66
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{people}\" var=\"person\"&gt;\n"
+"    &lt;m:attachment value=\"#{person.photo}\" contentType=\"image/jpeg\"\n"
+"    fileName=\"#{person.firstname}_#{person.lastname}.jpg\"/&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:70
+#, no-c-format
+msgid "HTML/Text alternative part"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:71
+#, no-c-format
+msgid ""
+"Whilst most mail readers nowadays support HTML, some do not, so you can add "
+"a plain text alternative to your email body:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:74
+#, no-c-format
+msgid ""
+"&lt;m:body&gt;\n"
+"    &lt;f:facet name=\"alternative\"&gt;Sorry, your email reader can&#39;t "
+"show our fancy email, \n"
+"please go to http://labs.jboss.com/jbossseam to explore Seam.&lt;/f:"
+"facet&gt;\n"
+"&lt;/m:body&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:78
+#, no-c-format
+msgid "Multiple recipients"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:79
+#, no-c-format
+msgid ""
+"Often you will want to send an email to a group of recipients (for example "
+"your users). All of the recipient mail tags can be placed inside a "
+"<literal>&lt;ui:repeat&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:82
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{allUsers} var=\"user\"&gt;\n"
+"    &lt;m:to name=\"#{user.firstname} #{user.lastname}\" address=\"#{user."
+"emailAddress}\" /&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:86
+#, no-c-format
+msgid "Multiple messages"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:87
+#, no-c-format
+msgid ""
+"Sometimes, however, you need to send a slightly different message to each "
+"recipient (e.g. a password reset). The best way to do this is to place the "
+"whole message inside a <literal>&lt;ui:repeat&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:90
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{people}\" var=\"p\"&gt;\n"
+"    &lt;m:message&gt;\n"
+"        &lt;m:from name=\"#{person.firstname} #{person.lastname}\"&gt;#"
+"{person.address}&lt;/m:from&gt;\n"
+"        &lt;m:to name=\"#{p.firstname}\"&gt;#{p.address}&lt;/m:to&gt;\n"
+"            ...\n"
+"    &lt;/m:message&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:94
+#, no-c-format
+msgid "Templating"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:95
+#, no-c-format
+msgid ""
+"The mail templating example shows that facelets templating Just Works with "
+"the Seam mail tags."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:98
+#, no-c-format
+msgid "Our <literal>template.xhtml</literal> contains:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:101
+#, no-c-format
+msgid ""
+"&lt;m:message&gt;\n"
+"   &lt;m:from name=\"Seam\" address=\"do-not-reply at jboss.com\" /&gt;\n"
+"   &lt;m:to name=\"#{person.firstname} #{person.lastname}\"&gt;#{person."
+"address}&lt;/m:to&gt;\n"
+"   &lt;m:subject&gt;#{subject}&lt;/m:subject&gt;\n"
+"   &lt;m:body&gt;\n"
+"       &lt;html&gt;\n"
+"           &lt;body&gt;\n"
+"               &lt;ui:insert name=\"body\"&gt;This is the default body, "
+"specified by the template.\n"
+"                                   &lt;/ui:insert&gt;\n"
+"           &lt;/body&gt;\n"
+"       &lt;/html&gt;\n"
+"   &lt;/m:body&gt;\n"
+"&lt;/m:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:102
+#, no-c-format
+msgid "Our <literal>templating.xhtml</literal> contains:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:105
+#, no-c-format
+msgid ""
+"&lt;ui:param name=\"subject\" value=\"Templating with Seam Mail\"/&gt;\n"
+"&lt;ui:define name=\"body\"&gt;\n"
+"    &lt;p&gt;This example demonstrates that you can easily use &lt;i&gt;"
+"facelets templating&lt;/i&gt; in email!&lt;/p&gt;\n"
+"&lt;/ui:define&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:109
+#, no-c-format
+msgid "Internationalisation"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:110
+#, no-c-format
+msgid ""
+"Seam supports sending internationalised messages. By default, the encoding "
+"provided by JSF is used, but this can be overridden on the template:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:113
+#, no-c-format
+msgid ""
+"&lt;m:message charset=\"UTF-8\"&gt;\n"
+"   ...\n"
+"&lt;/m:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:114
+#, no-c-format
+msgid ""
+"The body, subject and recipient (and from) name will be encoded. You will "
+"need to make sure facelets uses the correct charset for parsing your pages "
+"by setting encoding of the template:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:117
+#, no-c-format
+msgid "&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:121
+#, no-c-format
+msgid "Other Headers"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:122
+#, no-c-format
+msgid ""
+"Sometimes you will want to add other headers to your email. Seam provides "
+"support for some (see <xref linkend=\"Seam_Reference_Guide-Email-Tags\"/>). "
+"For example, we can set the importance of the email, and ask for a read "
+"receipt:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:125
+#, no-c-format
+msgid ""
+"&lt;m:message xmlns:m=\"http://jboss.com/products/seam/mail\"\n"
+"           importance=\"low\"\n"
+"           requestReadReceipt=\"true\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:126
+#, no-c-format
+msgid ""
+"Otherise you can add any header to the message using the <literal>&lt;m:"
+"header&gt;</literal> tag:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:129
+#, no-c-format
+msgid "&lt;m:header name=\"X-Sent-From\" value=\"JBoss Seam\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:135
+#, no-c-format
+msgid "Receiving emails"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:136
+#, no-c-format
+msgid ""
+"If you are using EJB then you can use a MDB (Message Driven Bean) to receive "
+"email. Seam comes with an improved version of <literal>mail-ra.rar</literal> "
+"as distributed in JBoss AS; until the improvements make there way into a "
+"released version of JBoss AS, replacing the default <literal>rar</literal> "
+"with the one distributed with Seam is recommended."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:139
+#, no-c-format
+msgid "You can configure it like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:142
+#, no-c-format
+msgid ""
+"@MessageDriven(activationConfig={\n"
+"         @ActivationConfigProperty(propertyName=\"mailServer\", "
+"propertyValue=\"localhost\"),\n"
+"         @ActivationConfigProperty(propertyName=\"mailFolder\", "
+"propertyValue=\"INBOX\"),\n"
+"         @ActivationConfigProperty(propertyName=\"storeProtocol\", "
+"propertyValue=\"pop3\"),\n"
+"         @ActivationConfigProperty(propertyName=\"userName\", propertyValue="
+"\"seam\"),\n"
+"         @ActivationConfigProperty(propertyName=\"password\", propertyValue="
+"\"seam\")\n"
+"})\n"
+"@ResourceAdapter(\"mail-ra.rar\")\n"
+"@Name(\"mailListener\")\n"
+"public class MailListenerMDB implements MailListener {\n"
+"\n"
+"   @In(create=true)\n"
+"   private OrderProcessor orderProcessor;\n"
+"\n"
+"   public void onMessage(Message message) {\n"
+"      // Process the message\n"
+"      orderProcessor.process(message.getSubject());\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:143
+#, no-c-format
+msgid ""
+"Each message received will cause <literal>onMessage(Message message)</"
+"literal> to be called. Most seam annotations will work inside a MDB but you "
+"must not access the persistence context."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:146
+#, no-c-format
+msgid ""
+"You can find more information on the default <literal>mail-ra.rar</literal> "
+"at <ulink url=\"http://wiki.jboss.org/wiki/Wiki.jsp?page=InboundJavaMail"
+"\">http://wiki.jboss.org/wiki/Wiki.jsp?page=InboundJavaMail</ulink>. The "
+"version distributed with Seam also includes a <literal>debug</literal> "
+"property to enable JavaMail debugging, a <literal>flush</literal> property "
+"(by default true) to disable flushing a <literal>POP3</literal> mailbox "
+"after successfullying delivering a message to your MDB and a <literal>port</"
+"literal> property to override the default TCP port."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:149
+#, no-c-format
+msgid ""
+"The api for this may be altered as changes make there way into the JBoss "
+"Enterprise Application Platform."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:159
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:160
+#, no-c-format
+msgid ""
+"To include Email support in your application, include <literal>jboss-seam-"
+"mail.jar</literal> in your WEB-INF/lib directory. If you are using JBoss AS "
+"there is no further configuration needed to use Seam&#39;s email support. "
+"Otherwise you need to make sure you have the JavaMail API, an implementation "
+"of the JavaMail API present (the API and impl used in JBoss AS are "
+"distributed with seam as <literal>lib/mail.jar</literal>), and a copy of the "
+"Java Activation Framework (distributed with seam as <literal>lib/activation."
+"jar</literal>."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:163
+#, no-c-format
+msgid ""
+"The Seam Email module requires the use of Facelets as the view technology. "
+"Future versions of the library may also support the use of JSP. "
+"Additionally, it requires the use of the seam-ui package."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:166
+#, no-c-format
+msgid ""
+"The <literal>mailSession</literal> component uses JavaMail to talk to a &#39;"
+"real&#39; SMTP server."
+msgstr ""
+
+#. Tag: literal
+#: Mail.xml:170
+#, no-c-format
+msgid "mailSession"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:171
+#, no-c-format
+msgid ""
+"A JavaMail Session may be available via a JNDI lookup if you are working in "
+"an JEE environment or you can use a Seam configured Session."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:174
+#, no-c-format
+msgid ""
+"The mailSession component&#39;s properties are described in more detail in "
+"the Mail related components section."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:178
+#, no-c-format
+msgid "JNDI lookup in JBoss AS"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:179
+#, no-c-format
+msgid ""
+"The JBossAS <literal>deploy/mail-service.xml</literal> configures a JavaMail "
+"session binding into JNDI. The default service configuration will need "
+"altering for your network. <ulink url=\"http://wiki.jboss.org/wiki/Wiki.jsp?"
+"page=JavaMail\">http://wiki.jboss.org/wiki/Wiki.jsp?page=JavaMail</ulink> "
+"describes the service in more detail."
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:182
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"        xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"        xmlns:mail=\"http://jboss.com/products/seam/mail\"&gt;\n"
+"        \n"
+"    &lt;mail:mail-session session-jndi-name=\"java:/Mail\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:183
+#, no-c-format
+msgid ""
+"Here we tell Seam to get the mail session bound to <literal>java:/Mail</"
+"literal> from JNDI."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:189
+#, no-c-format
+msgid "Seam configured Session"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:190
+#, no-c-format
+msgid ""
+"A mail session can be configured via <literal>components.xml</literal>. Here "
+"we tell Seam to use <literal>smtp.example.com</literal> as the smtp server,"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:193
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"        xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"        xmlns:mail=\"http://jboss.com/products/seam/mail\"&gt;\n"
+"        \n"
+"    &lt;mail:mail-session host=\"smtp.example.com\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:201
+#, no-c-format
+msgid "Tags"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:202
+#, no-c-format
+msgid ""
+"Emails are generated using tags in the <literal>http://jboss.com/products/"
+"seam/mail</literal> namespace. Documents should always have the "
+"<literal>message</literal> tag at the root of the message. The message tag "
+"prepares Seam to generate an email."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:205
+#, no-c-format
+msgid ""
+"The standard templating tags of facelets can be used as normal. Inside the "
+"body you can use any JSF tag which does not require access to external "
+"resources (stylesheets, javascript)."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:210
+#, no-c-format
+msgid "&lt;m:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:212
+#, no-c-format
+msgid "Root tag of a mail message"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:217
+#, no-c-format
+msgid ""
+"<literal>importance</literal> &mdash; low, normal or high. By default "
+"normal, this sets the importance of the mail message."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:222
+#, no-c-format
+msgid ""
+"<literal>precedence</literal> &mdash; sets the precedence of the message "
+"(for example, bulk)."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:227
+#, no-c-format
+msgid ""
+"<literal>requestReadReceipt</literal> &mdash; by default false, if set, a "
+"read receipt will be request will be added, with the read receipt being sent "
+"to the <literal>From:</literal> address."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:232
+#, no-c-format
+msgid ""
+"<literal>urlBase</literal> &mdash; If set, the value is prepended to the "
+"<literal>requestContextPath</literal> allowing you to use components such as "
+"<literal>&lt;h:graphicImage&gt;</literal> in your emails."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:240
+#, no-c-format
+msgid "&lt;m:from&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:242
+#, no-c-format
+msgid ""
+"Set&#39;s the From: address for the email. You can only have one of these "
+"per email."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:247
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the name the email should come from."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:252 Mail.xml:267
+#, no-c-format
+msgid ""
+"<literal>address</literal> &mdash; the email address the email should come "
+"from."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:260
+#, no-c-format
+msgid "&lt;m:replyTo&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:262
+#, no-c-format
+msgid ""
+"Set&#39;s the Reply-to: address for the email. You can only have one of "
+"these per email."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:275
+#, no-c-format
+msgid "&lt;m:to&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:277
+#, no-c-format
+msgid ""
+"Add a recipient to the email. Use multiple &lt;m:to&gt; tags for multiple "
+"recipients. This tag can be safely placed inside a repeat tag such as &lt;ui:"
+"repeat&gt;."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:282 Mail.xml:302 Mail.xml:322
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the name of the recipient."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:287 Mail.xml:307 Mail.xml:327
+#, no-c-format
+msgid "<literal>address</literal> &mdash; the email address of the recipient."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:295
+#, no-c-format
+msgid "&lt;m:cc&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:297
+#, no-c-format
+msgid ""
+"Add a cc recipient to the email. Use multiple &lt;m:cc&gt; tags for multiple "
+"ccs. This tag can be safely placed inside a repeat tag such as &lt;ui:"
+"repeat&gt;."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:315
+#, no-c-format
+msgid "&lt;m:bcc&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:317
+#, no-c-format
+msgid ""
+"Add a bcc recipient to the email. Use multiple &lt;m:bcc&gt; tags for "
+"multiple bccs. This tag can be safely placed inside a repeat tag such as &lt;"
+"ui:repeat&gt;."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:335
+#, no-c-format
+msgid "&lt;m:header&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:337
+#, no-c-format
+msgid ""
+"Add a header to the email (for example, <literal>X-Sent-From: JBoss Seam</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:342
+#, no-c-format
+msgid ""
+"<literal>name</literal> &mdash; The name of the header to add (e.g. "
+"<literal>X-Sent-From</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:347
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; The value of the header to add (e.g. "
+"<literal>JBoss Seam</literal>)."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:355
+#, no-c-format
+msgid "&lt;m:attachment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:357
+#, no-c-format
+msgid "Add an attachment to the email."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:362
+#, no-c-format
+msgid "<literal>value</literal> &mdash; The file to attach:"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:367
+#, no-c-format
+msgid ""
+"<literal>String</literal> &mdash; A <literal>String</literal> is interpreted "
+"as a path to file within the classpath"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:372
+#, no-c-format
+msgid ""
+"<literal>java.io.File</literal> &mdash; An EL expression can reference a "
+"<literal>File</literal> object"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:377
+#, no-c-format
+msgid ""
+"<literal>java.net.URL</literal> &mdash; An EL expression can reference a "
+"<literal>URL</literal> object"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:382
+#, no-c-format
+msgid ""
+"<literal>java.io.InputStream</literal> &mdash; An EL expression can "
+"reference an <literal>InputStream</literal>. In this case both a "
+"<literal>fileName</literal> and a <literal>contentType</literal> must be "
+"specified."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:387
+#, no-c-format
+msgid ""
+"<literal>byte[]</literal> &mdash; An EL expression can reference an "
+"<literal>byte[]</literal>. In this case both a <literal>fileName</literal> "
+"and a <literal>contentType</literal> must be specified."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:392
+#, no-c-format
+msgid "If the value attribute is ommitted:"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:397
+#, no-c-format
+msgid ""
+"If this tag contains a <literal>&lt;p:document&gt;</literal> tag, the "
+"document described will be generated and attached to the email. A "
+"<literal>fileName</literal> should be specfied."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:402
+#, no-c-format
+msgid ""
+"If this tag contains other JSF tags a HTML document will be generated from "
+"them and attached to the email. A <literal>fileName</literal> should be "
+"specfied."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:409
+#, no-c-format
+msgid ""
+"<literal>fileName</literal> &mdash; Specify the file name to use for the "
+"attached file."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:414
+#, no-c-format
+msgid ""
+"<literal>contentType</literal> &mdash; Specify the MIME type of the attached "
+"file"
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:422
+#, no-c-format
+msgid "&lt;m:subject&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:424
+#, no-c-format
+msgid "Set&#39;s the subject for the email."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:430
+#, no-c-format
+msgid "&lt;m:body&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:432
+#, no-c-format
+msgid ""
+"Set&#39;s the body for the email. Supports an <literal>alternative</literal> "
+"facet which, if an HTML email is generated can contain alternative text for "
+"a mail reader which doesn&#39;t support html."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:437
+#, no-c-format
+msgid ""
+"<literal>type</literal> &mdash; If set to <literal>plain</literal> then a "
+"plain text email will be generated otherwise an HTML email is generated."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Persistence.pot
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Persistence.pot	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Persistence.pot	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,752 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-07-14 00:47+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Persistence.xml:6
+#, no-c-format
+msgid "Seam and Object/Relational Mapping"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:7
+#, no-c-format
+msgid ""
+"Seam provides extensive support for the two most popular persistence "
+"architectures for Java: Hibernate3, and the Java Persistence API introduced "
+"with EJB 3.0. Seam&#39;s unique state-management architecture allows the "
+"most sophisticated ORM integration of any web application framework."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:11
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:12
+#, no-c-format
+msgid ""
+"Seam grew out of the frustration of the Hibernate team with the "
+"statelessness typical of the previous generation of Java application "
+"architectures. The state management architecture of Seam was originally "
+"designed to solve problems relating to persistence&mdash;in particular "
+"problems associated with <emphasis>optimistic transaction processing</"
+"emphasis>. Scalable online applications always use optimistic transactions. "
+"An atomic (database/JTA) level transaction should not span a user "
+"interaction unless the application is designed to support only a very small "
+"number of concurrent clients. But almost all interesting work involves first "
+"displaying data to a user, and then, slightly later, updating the same data. "
+"So Hibernate was designed to support the idea of a persistence context which "
+"spanned an optimistic transaction."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:15
+#, no-c-format
+msgid ""
+"Unfortunately, the so-called <emphasis>stateless</emphasis> architectures "
+"that preceded Seam and EJB 3.0 had no construct for representing an "
+"optimistic transaction. So, instead, these architectures provided "
+"persistence contexts scoped to the atomic transaction. This resulted in many "
+"problems for users, and is the cause of the number one user complaint about "
+"Hibernate: the dreaded <literal>LazyInitializationException</literal>. What "
+"we need is a construct for representing an optimistic transaction in the "
+"application tier."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:18
+#, no-c-format
+msgid ""
+"EJB 3.0 recognizes this problem, and introduces the idea of a stateful "
+"component (a stateful session bean) with an <emphasis>extended persistence "
+"context</emphasis> scoped to the lifetime of the component. This is a "
+"partial solution to the problem (and is a useful construct in and of itself) "
+"however there are two problems:"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:23
+#, no-c-format
+msgid ""
+"The lifecycle of the stateful session bean must be managed manually via code "
+"in the web tier (it turns out that this is a subtle problem and much more "
+"difficult in practice than it sounds)."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:28
+#, no-c-format
+msgid ""
+"Propagation of the persistence context between stateful components in the "
+"same optimistic transaction is possible, but tricky."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:33
+#, no-c-format
+msgid ""
+"Seam solves the first problem by providing conversations, and stateful "
+"session bean components scoped to the conversation. (Most conversations "
+"actually represent optimistic transactions in the data layer.) This is "
+"sufficient for many simple applications (such as the Seam booking demo) "
+"where persistence context propagation is not needed. For more complex "
+"applications, with many loosly-interacting components in each conversation, "
+"propagation of the persistence context across components becomes an "
+"important issue. So Seam extends the persistence context management model of "
+"EJB 3.0, to provide conversation-scoped extended persistence contexts."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:39
+#, no-c-format
+msgid "Seam managed transactions"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:40
+#, no-c-format
+msgid ""
+"EJB session beans feature declarative transaction management. The EJB "
+"container is able to start a transaction transparently when the bean is "
+"invoked, and end it when the invocation ends. If we write a session bean "
+"method that acts as a JSF action listener, we can do all the work associated "
+"with that action in one transaction, and be sure that it is committed or "
+"rolled back when we finish processing the action. This is a great feature, "
+"and all that is needed by some Seam applications."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:43
+#, no-c-format
+msgid ""
+"However, there is a problem with this approach. A Seam application may not "
+"perform all data access for a request from a single method call to a session "
+"bean."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:48
+#, no-c-format
+msgid ""
+"The request might require processing by several loosly-coupled components, "
+"each of which is called independently from the web layer. It is common to "
+"see several or even many calls per request from the web layer to EJB "
+"components in Seam."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:53
+#, no-c-format
+msgid "Rendering of the view might require lazy fetching of associations."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:58
+#, no-c-format
+msgid ""
+"The more transactions per request, the more likely we are to encounter "
+"atomicity and isolation problems when our application is processing many "
+"concurrent requests. Certainly, all write operations should occur in the "
+"same transaction."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:61
+#, no-c-format
+msgid ""
+"Hibernate users developed the <emphasis>open session in view</emphasis> "
+"pattern to work around this problem. In the Hibernate community, "
+"<emphasis>open session in view</emphasis> was historically even more "
+"important because frameworks like Spring use transaction-scoped persistence "
+"contexts. So rendering the view would cause "
+"<literal>LazyInitializationException</literal>s when unfetched associations "
+"were accessed."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:64
+#, no-c-format
+msgid ""
+"This pattern is usually implemented as a single transaction which spans the "
+"entire request. There are several problems with this implementation, the "
+"most serious being that we can never be sure that a transaction is "
+"successful until we commit it&mdash;but by the time the <emphasis>open "
+"session in view</emphasis> transaction is committed, the view is fully "
+"rendered, and the rendered response may already have been flushed to the "
+"client. How can we notify the user that their transaction was unsuccessful?"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:67
+#, no-c-format
+msgid ""
+"Seam solves both the transaction isolation problem and the association "
+"fetching problem, while working around the problems with <emphasis>open "
+"session in view</emphasis>. The solution comes in two parts:"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:72
+#, no-c-format
+msgid ""
+"use an extended persistence context that is scoped to the conversation, "
+"instead of to the transaction"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:77
+#, no-c-format
+msgid ""
+"use two transactions per request; the first spans the beginning of the "
+"update model values phase until the end of the invoke application phase; the "
+"second spans the render response phase"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:82
+#, no-c-format
+msgid ""
+"In the next section, we will tell you how to set up a conversation-scope "
+"persistence context. But first we need to tell you how to enable Seam "
+"transaction management. Note that you can use conversation-scoped "
+"persistence contexts without Seam transaction management, and there are good "
+"reasons to use Seam transaction management even when you are not using Seam-"
+"managed persistence contexts. However, the two facilities were designed to "
+"work together, and work best when used together."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:86
+#, no-c-format
+msgid "Enabling Seam-managed transactions"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:87
+#, no-c-format
+msgid ""
+"To make use of <emphasis>Seam managed transactions</emphasis>, you need to "
+"use <literal>TransactionalSeamPhaseListener</literal> in place of "
+"<literal>SeamPhaseListener</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:90
+#, no-c-format
+msgid ""
+"&lt;lifecycle&gt;\n"
+"     &lt;phase-listener&gt;\n"
+"        org.jboss.seam.jsf.TransactionalSeamPhaseListener\n"
+"    &lt;/phase-listener&gt;\n"
+"&lt;/lifecycle&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:91
+#, no-c-format
+msgid ""
+"Seam transaction management is useful even if you are using EJB 3.0 "
+"container-managed persistence contexts. But it is especially useful if you "
+"use Seam outside a Java EE 5 environment, or in any other case where you "
+"would use a Seam-managed persistence context."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:99
+#, no-c-format
+msgid "Seam-managed persistence contexts"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:100
+#, no-c-format
+msgid ""
+"If you are using Seam outside of a Java EE 5 environment, you cannot rely "
+"upon the container to manage the persistence context lifecycle for you. Even "
+"if you are in an EE 5 environment, you might have a complex application with "
+"many loosly coupled components that collaborate together in the scope of a "
+"single conversation, and in this case you might find that propagation of the "
+"persistence context between component is tricky and error-prone."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:103
+#, no-c-format
+msgid ""
+"In either case, you will need to use a <emphasis>managed persistence "
+"context</emphasis> (for JPA) or a <emphasis>managed session</emphasis> (for "
+"Hibernate) in your components. A Seam-managed persistence context is just a "
+"built-in Seam component that manages an instance of <literal>EntityManager</"
+"literal> or <literal>Session</literal> in the conversation context. You can "
+"inject it with <literal>@In</literal>."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:106
+#, no-c-format
+msgid ""
+"Seam-managed persistence contexts are extremely efficient in a clustered "
+"environment. Seam is able to perform an optimization that EJB 3.0 "
+"specification does not allow containers to use for container-managed "
+"extended persistence contexts. Seam supports transparent failover of "
+"extended persisence contexts, without the need to replicate any persistence "
+"context state between nodes. (We hope to fix this oversight in the next "
+"revision of the EJB spec.)"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:110
+#, no-c-format
+msgid "Using a Seam-managed persistence context with JPA"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:111
+#, no-c-format
+msgid ""
+"Configuring a managed persistence context is easy. In <literal>components."
+"xml</literal>, we can write:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:114
+#, no-c-format
+msgid ""
+"&lt;core:managed-persistence-context name=\"bookingDatabase\" \n"
+"                           auto-create=\"true\"\n"
+"            persistence-unit-jndi-name=\"java:/EntityManagerFactories/"
+"bookingData\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:115
+#, no-c-format
+msgid ""
+"This configuration creates a conversation-scoped Seam component named "
+"<literal>bookingDatabase</literal> that manages the lifecycle of "
+"<literal>EntityManager</literal> instances for the persistence unit "
+"(<literal>EntityManagerFactory</literal> instance) with JNDI name "
+"<literal>java:/EntityManagerFactories/bookingData</literal>."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:118
+#, no-c-format
+msgid ""
+"Of course, you need to make sure that you have bound the "
+"<literal>EntityManagerFactory</literal> into JNDI. In JBoss, you can do this "
+"by adding the following property setting to <literal>persistence.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:121
+#, no-c-format
+msgid ""
+"&lt;property name=\"jboss.entity.manager.factory.jndi.name\" \n"
+"          value=\"java:/EntityManagerFactories/bookingData\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:122
+#, no-c-format
+msgid "Now we can have our <literal>EntityManager</literal> injected using:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:125
+#, no-c-format
+msgid "@In EntityManager bookingDatabase;"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:129
+#, no-c-format
+msgid "Using a Seam-managed Hibernate session"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:130
+#, no-c-format
+msgid ""
+"Seam-managed Hibernate sessions are similar. In <literal>components.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:133
+#, no-c-format
+msgid ""
+"&lt;core:hibernate-session-factory name=\"hibernateSessionFactory\"/&gt;\n"
+"\n"
+"&lt;core:managed-hibernate-session name=\"bookingDatabase\" \n"
+"                         auto-create=\"true\"\n"
+"           session-factory-jndi-name=\"java:/bookingSessionFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:134
+#, no-c-format
+msgid ""
+"Where <literal>java:/bookingSessionFactory</literal> is the name of the "
+"session factory specified in <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:137
+#, no-c-format
+msgid ""
+"&lt;session-factory name=\"java:/bookingSessionFactory\"&gt;\n"
+"    &lt;property name=\"transaction.flush_before_completion\"&gt;true&lt;/"
+"property&gt;\n"
+"    &lt;property name=\"connection.release_mode\"&gt;after_statement&lt;/"
+"property&gt;\n"
+"    &lt;property name=\"transaction.manager_lookup_class\"&gt;\n"
+"       org.hibernate.transaction.JBossTransactionManagerLookup\n"
+"    &lt;/property&gt;\n"
+"    &lt;property name=\"transaction.factory_class\"&gt;\n"
+"       org.hibernate.transaction.JTATransactionFactory\n"
+"    &lt;/property&gt;\n"
+"    &lt;property name=\"connection.datasource\"&gt;java:/"
+"bookingDatasource&lt;/property&gt;\n"
+"    ...\n"
+"&lt;/session-factory&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:139
+#, no-c-format
+msgid ""
+"Seam does not flush the session, so you should always enable "
+"<literal>hibernate.transaction.flush_before_completion</literal> to ensure "
+"that the session is automatically flushed before the JTA transaction commits."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:143
+#, no-c-format
+msgid ""
+"We can now have a managed Hibernate <literal>Session</literal> injected into "
+"our JavaBean components using the following code:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:146
+#, no-c-format
+msgid "@In Session bookingDatabase;"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:150
+#, no-c-format
+msgid "Seam-managed persistence contexts and atomic conversations"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:151
+#, no-c-format
+msgid ""
+"Persistence contexts scoped to the conversation allows you to program "
+"optimistic transactions that span multiple requests to the server without "
+"the need to use the <literal>merge()</literal> operation , without the need "
+"to re-load data at the beginning of each request, and without the need to "
+"wrestle with the <literal>LazyInitializationException</literal> or "
+"<literal>NonUniqueObjectException</literal>."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:154
+#, no-c-format
+msgid ""
+"As with any optimistic transaction management, transaction isolation and "
+"consistency can be achieved via use of optimistic locking. Fortunately, both "
+"Hibernate and EJB 3.0 make it very easy to use optimistic locking, by "
+"providing the <literal>@Version</literal> annotation."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:157
+#, no-c-format
+msgid ""
+"By default, the persistence context is flushed (synchronized with the "
+"database) at the end of each transaction. This is sometimes the desired "
+"behavior. But very often, we would prefer that all changes are held in "
+"memory and only written to the database when the conversation ends "
+"successfully. This allows for truly atomic conversations. As the result of a "
+"truly stupid and shortsighted decision by certain non-JBoss, non-Sun and non-"
+"Sybase members of the EJB 3.0 expert group, there is currently no simple, "
+"usable and portable way to implement atomic conversations using EJB 3.0 "
+"persistence. However, Hibernate provides this feature as a vendor extension "
+"to the <literal>FlushModeType</literal>s defined by the specification, and "
+"it is our expectation that other vendors will soon provide a similar "
+"extension."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:160
+#, no-c-format
+msgid ""
+"Seam lets you specify <literal>FlushModeType.MANUAL</literal> when beginning "
+"a conversation. Currently, this works only when Hibernate is the underlying "
+"persistence provider, but we plan to support other equivalent vendor "
+"extensions."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:163
+#, no-c-format
+msgid ""
+"@In EntityManager em; //a Seam-managed persistence context\n"
+"\n"
+"@Begin(flushMode=MANUAL)\n"
+"public void beginClaimWizard() {\n"
+"    claim = em.find(Claim.class, claimId);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:164
+#, no-c-format
+msgid ""
+"Now, the <literal>claim</literal> object remains managed by the persistence "
+"context for the rest ot the conversation. We can make changes to the claim:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:167
+#, no-c-format
+msgid ""
+"public void addPartyToClaim() {\n"
+"    Party party = ....;\n"
+"    claim.addParty(party);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:168
+#, no-c-format
+msgid ""
+"But these changes will not be flushed to the database until we explicitly "
+"force the flush to occur:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:171
+#, no-c-format
+msgid ""
+"@End\n"
+"public void commitClaim() {\n"
+"    em.flush();\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:177
+#, no-c-format
+msgid "Using the JPA \"delegate\""
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:178
+#, no-c-format
+msgid ""
+"The <literal>EntityManager</literal> interface lets you access a vendor-"
+"specific API via the <literal>getDelegate()</literal> method. Naturally, the "
+"most interesting vendor is Hibernate, and the most powerful delegate "
+"interface is <literal>org.hibernate.Session</literal>. You&#39;d be nuts to "
+"use anything else. Trust me, I&#39;m not biased at all."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:181
+#, no-c-format
+msgid ""
+"But regardless of whether you are using Hibernate or something else, you "
+"will almost certainly want to use the delegate in your Seam components from "
+"time to time. One approach would be the following:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:184
+#, no-c-format
+msgid ""
+"@In EntityManager entityManager;\n"
+"\n"
+"@Create\n"
+"public void init() {\n"
+"    ( (Session) entityManager.getDelegate() ).enableFilter(\"currentVersions"
+"\");\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:185
+#, no-c-format
+msgid ""
+"But typecasts are unquestionably the ugliest syntax in the Java language, so "
+"most people avoid them whenever possible. Here is a different way to get at "
+"the delegate. First, add the following line to <literal>components.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:188
+#, no-c-format
+msgid ""
+"&lt;factory name=\"session\" \n"
+"         scope=\"STATELESS\" \n"
+"         auto-create=\"true\" \n"
+"         value=\"#{entityManager.delegate}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:189
+#, no-c-format
+msgid "Now we can inject the session directly:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:192
+#, no-c-format
+msgid ""
+"@In Session session;\n"
+"\n"
+"@Create\n"
+"public void init() {\n"
+"    session.enableFilter(\"currentVersions\");\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:196
+#, no-c-format
+msgid "Using EL in EJB-QL/HQL"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:197
+#, no-c-format
+msgid ""
+"Seam proxies the <literal>EntityManager</literal> or <literal>Session</"
+"literal> object whenever you use a Seam-managed persistence context or "
+"inject a container managed persistence context using "
+"<literal>@PersistenceContext</literal>. This lets you use EL expressions in "
+"your query strings, safely and efficiently. For example, this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:200
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=#{user.username}\")\n"
+"         .getSingleResult();"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:201
+#, no-c-format
+msgid "is equivalent to:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:204
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getSingleResult();"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:205
+#, no-c-format
+msgid "Of course, you should never, ever write it like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:208
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=\" + user.getUsername"
+"()) //BAD!\n"
+"         .getSingleResult();"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:209
+#, no-c-format
+msgid "(It is inefficient and vulnerable to SQL injection attacks.)"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:215
+#, no-c-format
+msgid "Using Hibernate filters"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:216
+#, no-c-format
+msgid ""
+"The most unique feature of Hibernate is <emphasis>filters</emphasis>. "
+"Filters let you provide a restricted view of the data in the database. You "
+"can find out more about filters in the Hibernate documentation. But we "
+"thought we would mention an easy way to incorporate filters into a Seam "
+"application, one that works especially well with the Seam Application "
+"Framework."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:219
+#, no-c-format
+msgid ""
+"Seam-managed persistence contexts may have a list of filters defined, which "
+"will be enabled whenever an <literal>EntityManager</literal> or Hibernate "
+"<literal>Session</literal> is first created. (Of course, they may only be "
+"used when Hibernate is the underlying persistence provider.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:222
+#, no-c-format
+msgid ""
+"&lt;core:filter name=\"regionFilter\"&gt;\n"
+"    &lt;core:name&gt;region&lt;/core:name&gt;\n"
+"    &lt;core:parameters&gt;\n"
+"        &lt;key&gt;regionCode&lt;/key&gt;\n"
+"        &lt;value&gt;#{region.code}&lt;/value&gt;\n"
+"    &lt;/core:parameters&gt;\n"
+"&lt;/core:filter&gt;\n"
+"\n"
+"&lt;core:filter name=\"currentFilter\"&gt;\n"
+"    &lt;core:name&gt;current&lt;/core:name&gt;\n"
+"    &lt;core:parameters&gt;\n"
+"        &lt;key&gt;date&lt;/key&gt;\n"
+"        &lt;value&gt;#{currentDate}&lt;/value&gt;\n"
+"    &lt;/core:parameters&gt;\n"
+"&lt;/core:filter&gt;\n"
+"\n"
+"&lt;core:managed-persistence-context name=\"personDatabase\"\n"
+"    persistence-unit-jndi-name=\"java:/EntityManagerFactories/personDatabase"
+"\"&gt;\n"
+"    &lt;core:filters&gt;\n"
+"        &lt;value&gt;#{regionFilter}&lt;/value&gt;\n"
+"        &lt;value&gt;#{currentFilter}&lt;/value&gt;\n"
+"    &lt;/core:filters&gt;\n"
+"&lt;/core:managed-persistence-context&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Remoting.pot
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Remoting.pot	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Remoting.pot	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1459 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-07-14 00:47+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Remoting.xml:6
+#, no-c-format
+msgid "Remoting"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:7
+#, no-c-format
+msgid ""
+"Seam provides a convenient method of remotely accessing components from a "
+"web page, using AJAX (Asynchronous Javascript and XML). The framework for "
+"this functionality is provided with almost no up-front development effort - "
+"your components only require simple annotating to become accessible via "
+"AJAX. This chapter describes the steps required to build an AJAX-enabled web "
+"page, then goes on to explain the features of the Seam Remoting framework in "
+"more detail."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:10 Remoting.xml:285
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:11
+#, no-c-format
+msgid ""
+"To use remoting, the Seam Resource servlet must first be configured in your "
+"<literal>web.xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:14
+#, no-c-format
+msgid ""
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"  &lt;/servlet&gt;\n"
+"\n"
+"  &lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"  &lt;/servlet-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:15
+#, no-c-format
+msgid ""
+"The next step is to import the necessary Javascript into your web page. "
+"There are a minimum of two scripts that must be imported. The first one "
+"contains all the client-side framework code that enables remoting "
+"functionality:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:18
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/resource/"
+"remote.js\"&gt;&lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:19
+#, no-c-format
+msgid ""
+"The second script contains the stubs and type definitions for the components "
+"you wish to call. It is generated dynamically based on the local interface "
+"of your components, and includes type definitions for all of the classes "
+"that can be used to call the remotable methods of the interface. The name of "
+"the script reflects the name of your component. For example, if you have a "
+"stateless session bean annotated with <literal>@Name(\"customerAction\")</"
+"literal>, then your script tag should look like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:22
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?customerAction\"&gt;\n"
+"    &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:23
+#, no-c-format
+msgid ""
+"If you wish to access more than one component from the same page, then "
+"include them all as parameters of your script tag:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:26
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" \n"
+"     src=\"seam/resource/remoting/interface.js?customerAction&amp;"
+"accountAction\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:27
+#, no-c-format
+msgid "The \"Seam\" object"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:28
+#, no-c-format
+msgid ""
+"Client-side interaction with your components is all performed via the "
+"<literal>Seam</literal> Javascript object. This object is defined in "
+"<literal>remote.js</literal>, and you will be using it to make asynchronous "
+"calls against your component. It is split into two areas of functionality; "
+"<literal>Seam.Component</literal> contains methods for working with "
+"components and <literal>Seam.Remoting</literal> contains methods for "
+"executing remote requests. The easiest way to become familiar with this "
+"object is to start with a simple example."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:31
+#, no-c-format
+msgid "A Hello World example"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:32
+#, no-c-format
+msgid ""
+"Let us step through a simple example to see how the <literal>Seam</literal> "
+"object works. First of all, let us create a new Seam component called "
+"<literal>helloAction</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:35
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"  @Name(\"helloAction\")\n"
+"  public class HelloAction implements HelloLocal {\n"
+"    public String sayHello(String name) {\n"
+"      return \"Hello, \" + name;\n"
+"    }\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:36
+#, no-c-format
+msgid ""
+"You also need to create a local interface for our new component - take "
+"special note of the <literal>@WebRemote</literal> annotation, as it is "
+"required to make our method accessible via remoting:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:39
+#, no-c-format
+msgid ""
+"@Local\n"
+"  public interface HelloLocal {\n"
+"    @WebRemote\n"
+"    public String sayHello(String name);\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:40
+#, no-c-format
+msgid ""
+"That is all the server-side code we need to write. Now for our web page - "
+"create a new page and import the following scripts:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:43
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/resource/"
+"remote.js\"&gt;&lt;/script&gt;\n"
+"  &lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?helloAction\"&gt;&lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:44
+#, no-c-format
+msgid ""
+"To make this a fully interactive user experience, let us add a button to our "
+"page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:47
+#, no-c-format
+msgid ""
+"&lt;button onclick=\"javascript:sayHello()\"&gt;Say Hello&lt;/button&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:48
+#, no-c-format
+msgid ""
+"We will also need to add some more script to make our button actually do "
+"something when it is clicked:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:51
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\"&gt;\n"
+"    //&lt;![CDATA[\n"
+"\n"
+"    function sayHello() {\n"
+"      var name = prompt(\"What is your name?\");\n"
+"      Seam.Component.getInstance(\"helloAction\").sayHello(name, "
+"sayHelloCallback);\n"
+"    }\n"
+"\n"
+"    function sayHelloCallback(result) {\n"
+"      alert(result);\n"
+"    }\n"
+"\n"
+"    // ]]&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:52
+#, no-c-format
+msgid ""
+"Now deploy your application and browse to your page. Click the button, and "
+"enter a name when prompted. A message box will display the hello message "
+"confirming that the call was successful. If you want to save some time, you "
+"will find the full source code for this Hello World example in Seam&#39;s "
+"<literal>/examples/remoting/helloworld</literal> directory."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:55
+#, no-c-format
+msgid ""
+"So what does the code of our script actually do? Let us break it down into "
+"smaller pieces. To start with, you can see from the Javascript code listing "
+"that we have implemented two methods - the first method is responsible for "
+"prompting the user for their name and then making a remote request. Take a "
+"look at the following line:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:58
+#, no-c-format
+msgid ""
+"Seam.Component.getInstance(\"helloAction\").sayHello(name, sayHelloCallback);"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:59
+#, no-c-format
+msgid ""
+"The first section of this line, <literal>Seam.Component.getInstance"
+"(\"helloAction\")</literal> returns a proxy, or \"stub\" for our "
+"<literal>helloAction</literal> component. We can invoke the methods of our "
+"component against this stub, which is exactly what happens with the "
+"remainder of the line: <literal>sayHello(name, sayHelloCallback);</literal>."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:62
+#, no-c-format
+msgid ""
+"What this line of code in its completeness does, is invoke the "
+"<literal>sayHello</literal> method of our component, passing in "
+"<literal>name</literal> as a parameter. The second parameter, "
+"<literal>sayHelloCallback</literal> is not a parameter of our component&#39;"
+"s <literal>sayHello</literal> method, instead it tells the Seam Remoting "
+"framework that once it receives the response to our request, it should pass "
+"it to the <literal>sayHelloCallback</literal> Javascript method. This "
+"callback parameter is entirely optional, so feel free to leave it out if you "
+"are calling a method with a <literal>void</literal> return type or if you do "
+"not care about the result."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:65
+#, no-c-format
+msgid ""
+"The <literal>sayHelloCallback</literal> method, once receiving the response "
+"to our remote request then pops up an alert message displaying the result of "
+"our method call."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:68
+#, no-c-format
+msgid "Seam.Component"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:69
+#, no-c-format
+msgid ""
+"The <literal>Seam.Component</literal> Javascript object provides a number of "
+"client-side methods for working with your Seam components. The two main "
+"methods, <literal>newInstance()</literal> and <literal>getInstance()</"
+"literal> are documented in the following sections however their main "
+"difference is that <literal>newInstance()</literal> will always create a new "
+"instance of a component type, and <literal>getInstance()</literal> will "
+"return a singleton instance."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:72
+#, no-c-format
+msgid "Seam.Component.newInstance()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:73
+#, no-c-format
+msgid ""
+"Use this method to create a new instance of an entity or Javabean component. "
+"The object returned by this method will have the same getter/setter methods "
+"as its server-side counterpart, or alternatively if you wish you can access "
+"its fields directly. Take the following Seam entity component for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:76
+#, no-c-format
+msgid ""
+"@Name(\"customer\")\n"
+"  @Entity\n"
+"  public class Customer implements Serializable\n"
+"  {\n"
+"    private Integer customerId;\n"
+"    private String firstName;\n"
+"    private String lastName;\n"
+"    \n"
+"    @Column public Integer getCustomerId() { \n"
+"      return customerId; \n"
+"    }\n"
+"    \n"
+"    public void setCustomerId(Integer customerId} { \n"
+"      this.customerId = customerId; \n"
+"    }\n"
+"    \n"
+"    @Column public String getFirstName() { \n"
+"      return firstName; \n"
+"    }\n"
+"    \n"
+"    public void setFirstName(String firstName) {\n"
+"      this.firstName = firstName; \n"
+"    }\n"
+"    \n"
+"    @Column public String getLastName() {\n"
+"      return lastName;\n"
+"    }\n"
+"    \n"
+"    public void setLastName(String lastName) {\n"
+"      this.lastName = lastName;\n"
+"    }\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:77
+#, no-c-format
+msgid "To create a client-side Customer you would write the following code:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:80
+#, no-c-format
+msgid "var customer = Seam.Component.newInstance(\"customer\");"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:81
+#, no-c-format
+msgid "Then from here you can set the fields of the customer object:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:84
+#, no-c-format
+msgid ""
+"customer.setFirstName(\"John\");\n"
+"  // Or you can set the fields directly\n"
+"  customer.lastName = \"Smith\";"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:85
+#, no-c-format
+msgid "Seam.Component.getInstance()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:86
+#, no-c-format
+msgid ""
+"The <literal>getInstance()</literal> method is used to get a reference to a "
+"Seam session bean component stub, which can then be used to remotely execute "
+"methods against your component. This method returns a singleton for the "
+"specified component, so calling it twice in a row with the same component "
+"name will return the same instance of the component."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:89
+#, no-c-format
+msgid ""
+"To continue our example from before, if we have created a new "
+"<literal>customer</literal> and we now wish to save it, we would pass it to "
+"the <literal>saveCustomer()</literal> method of our <literal>customerAction</"
+"literal> component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:92
+#, no-c-format
+msgid "Seam.Component.getInstance(\"customerAction\").saveCustomer(customer);"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:93
+#, no-c-format
+msgid "Seam.Component.getComponentName()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:94
+#, no-c-format
+msgid ""
+"Passing an object into this method will return its component name if it is a "
+"component, or <literal>null</literal> if it is not."
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:97
+#, no-c-format
+msgid ""
+"if (Seam.Component.getComponentName(instance) == \"customer\")\n"
+"    alert(\"Customer\");\n"
+"  else if (Seam.Component.getComponentName(instance) == \"staff\")\n"
+"    alert(\"Staff member\");"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:98
+#, no-c-format
+msgid "Seam.Remoting"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:99
+#, no-c-format
+msgid ""
+"Most of the client side functionality for Seam Remoting is contained within "
+"the <literal>Seam.Remoting</literal> object. While you should not need to "
+"directly call most of its methods, there are a couple of important ones "
+"worth mentioning."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:102
+#, no-c-format
+msgid "Seam.Remoting.createType()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:103
+#, no-c-format
+msgid ""
+"If your application contains or uses Javabean classes that are not Seam "
+"components, you may need to create these types on the client side to pass as "
+"parameters into your component method. Use the <literal>createType()</"
+"literal> method to create an instance of your type. Pass in the fully "
+"qualified Java class name as a parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:106
+#, no-c-format
+msgid "var widget = Seam.Remoting.createType(\"com.acme.widgets.MyWidget\");"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:107
+#, no-c-format
+msgid "Seam.Remoting.getTypeName()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:108
+#, no-c-format
+msgid ""
+"This method is the equivalent of <literal>Seam.Component.getComponentName()</"
+"literal> but for non-component types. It will return the name of the type "
+"for an object instance, or <literal>null</literal> if the type is not known. "
+"The name is the fully qualified name of the type&#39;s Java class."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:111
+#, no-c-format
+msgid "Client Interfaces"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:112
+#, no-c-format
+msgid ""
+"In the configuration section above, the interface, or \"stub\" for our "
+"component is imported into our page via <literal>seam/resource/remoting/"
+"interface.js</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:115
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?customerAction\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:116
+#, no-c-format
+msgid ""
+"By including this script in our page, the interface definitions for our "
+"component, plus any other components or types that are required to execute "
+"the methods of our component are generated and made available for the "
+"remoting framework to use."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:119
+#, no-c-format
+msgid ""
+"There are two types of client stub that can be generated, \"executable\" "
+"stubs and \"type\" stubs. Executable stubs are behavioural, and are used to "
+"execute methods against your session bean components, while type stubs "
+"contain state and represent the types that can be passed in as parameters or "
+"returned as a result."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:122
+#, no-c-format
+msgid ""
+"The type of client stub that is generated depends on the type of your Seam "
+"component. If the component is a session bean, then an executable stub will "
+"be generated, otherwise if it is an entity or JavaBean, then a type stub "
+"will be generated. There is one exception to this rule; if your component is "
+"a JavaBean (ie it is not a session bean nor an entity bean) and any of its "
+"methods are annotated with @WebRemote, then an executable stub will be "
+"generated for it instead of a type stub. This allows you to use remoting to "
+"call methods of your JavaBean components in a non-EJB environment where you "
+"do not have access to session beans."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:125
+#, no-c-format
+msgid "The Context"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:126
+#, no-c-format
+msgid ""
+"The Seam Remoting Context contains additional information which is sent and "
+"received as part of a remoting request/response cycle. At this stage it only "
+"contains the conversation ID but may be expanded in the future."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:129
+#, no-c-format
+msgid "Setting and reading the Conversation ID"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:130
+#, no-c-format
+msgid ""
+"If you intend on using remote calls within the scope of a conversation then "
+"you need to be able to read or set the conversation ID in the Seam Remoting "
+"Context. To read the conversation ID after making a remote request call "
+"<literal>Seam.Remoting.getContext().getConversationId()</literal>. To set "
+"the conversation ID before making a request, call <literal>Seam.Remoting."
+"getContext().setConversationId()</literal>."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:133
+#, no-c-format
+msgid ""
+"If the conversation ID has not been explicitly set with <literal>Seam."
+"Remoting.getContext().setConversationId()</literal>, then it will be "
+"automatically assigned the first valid conversation ID that is returned by "
+"any remoting call. If you are working with multiple conversations within "
+"your page, then you may need to explicitly set the conversation ID before "
+"each call. If you are working with just a single conversation, then you do "
+"not need to do anything special."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:137
+#, no-c-format
+msgid "Batch Requests"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:138
+#, no-c-format
+msgid ""
+"Seam Remoting allows multiple component calls to be executed within a single "
+"request. It is recommended that this feature is used wherever it is "
+"appropriate to reduce network traffic."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:141
+#, no-c-format
+msgid ""
+"The method <literal>Seam.Remoting.startBatch()</literal> will start a new "
+"batch, and any component calls executed after starting a batch are queued, "
+"rather than being sent immediately. When all the desired component calls "
+"have been added to the batch, the <literal>Seam.Remoting.executeBatch()</"
+"literal> method will send a single request containing all of the queued "
+"calls to the server, where they will be executed in order. After the calls "
+"have been executed, a single response containining all return values will be "
+"returned to the client and the callback functions (if provided) triggered in "
+"the same order as execution."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:144
+#, no-c-format
+msgid ""
+"If you start a new batch via the <literal>startBatch()</literal> method but "
+"then decide you do not want to send it, the <literal>Seam.Remoting."
+"cancelBatch()</literal> method will discard any calls that were queued and "
+"exit the batch mode."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:147
+#, no-c-format
+msgid ""
+"To see an example of a batch being used, take a look at <literal>/examples/"
+"remoting/chatroom</literal>."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:150
+#, no-c-format
+msgid "Working with Data types"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:151
+#, no-c-format
+msgid "Primitives / Basic Types"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:152
+#, no-c-format
+msgid ""
+"This section describes the support for basic data types. On the server side "
+"these values are generally compatible with either their primitive type or "
+"their corresponding wrapper class."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:155
+#, no-c-format
+msgid "String"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:156
+#, no-c-format
+msgid ""
+"Simply use Javascript String objects when setting String parameter values."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:159
+#, no-c-format
+msgid "Number"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:160
+#, no-c-format
+msgid ""
+"There is support for all number types supported by Java. On the client side, "
+"number values are always serialized as their String representation and then "
+"on the server side they are converted to the correct destination type. "
+"Conversion into either a primitive or wrapper type is supported for "
+"<literal>Byte</literal>, <literal>Double</literal>, <literal>Float</"
+"literal>, <literal>Integer</literal>, <literal>Long</literal> and "
+"<literal>Short</literal> types."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:163
+#, no-c-format
+msgid "Boolean"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:164
+#, no-c-format
+msgid ""
+"Booleans are represented client side by Javascript Boolean values, and "
+"server side by a Java boolean."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:167
+#, no-c-format
+msgid "JavaBeans"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:168
+#, no-c-format
+msgid ""
+"In general these will be either Seam entity or JavaBean components, or some "
+"other non-component class. Use the appropriate method (either <literal>Seam."
+"Component.newInstance()</literal> for Seam components or <literal>Seam."
+"Remoting.createType()</literal> for everything else) to create a new "
+"instance of the object."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:171
+#, no-c-format
+msgid ""
+"It is important to note that only objects that are created by either of "
+"these two methods should be used as parameter values, where the parameter is "
+"not one of the other valid types mentioned anywhere else in this section. In "
+"some situations you may have a component method where the exact parameter "
+"type cannot be determined, such as:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:174
+#, no-c-format
+msgid ""
+"@Name(\"myAction\")\n"
+"  public class MyAction implements MyActionLocal {\n"
+"    public void doSomethingWithObject(Object obj) {\n"
+"      // code\n"
+"    }\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:175
+#, no-c-format
+msgid ""
+"In this case you might want to pass in an instance of your "
+"<literal>myWidget</literal> component, however the interface for "
+"<literal>myAction</literal> will not include <literal>myWidget</literal> as "
+"it is not directly referenced by any of its methods. To get around this, "
+"<literal>MyWidget</literal> needs to be explicitly imported:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:178
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?myAction&amp;myWidget\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:179
+#, no-c-format
+msgid ""
+"This will then allow a <literal>myWidget</literal> object to be created with "
+"<literal>Seam.Component.newInstance(\"myWidget\")</literal>, which can then "
+"be passed to <literal>myAction.doSomethingWithObject()</literal>."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:182
+#, no-c-format
+msgid "Dates and Times"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:183
+#, no-c-format
+msgid ""
+"Date values are serialized into a String representation that is accurate to "
+"the millisecond. On the client side, use a Javascript Date object to work "
+"with date values. On the server side, use any <literal>java.util.Date</"
+"literal> (or descendent, such as <literal>java.sql.Date</literal> or "
+"<literal>java.sql.Timestamp</literal> class."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:186
+#, no-c-format
+msgid "Enums"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:187
+#, no-c-format
+msgid ""
+"On the client side, enums are treated the same as Strings. When setting the "
+"value for an enum parameter, simply use the String representation of the "
+"enum. Take the following component as an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:190
+#, no-c-format
+msgid ""
+"@Name(\"paintAction\")\n"
+"  public class paintAction implements paintLocal {\n"
+"    public enum Color {red, green, blue, yellow, orange, purple};\n"
+"\n"
+"    public void paint(Color color) {\n"
+"      // code\n"
+"    }    \n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:191
+#, no-c-format
+msgid ""
+"To call the <literal>paint()</literal> method with the color <literal>red</"
+"literal>, pass the parameter value as a String literal:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:194
+#, no-c-format
+msgid "Seam.Component.getInstance(\"paintAction\").paint(\"red\");"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:195
+#, no-c-format
+msgid ""
+"The inverse is also true - that is, if a component method returns an enum "
+"parameter (or contains an enum field anywhere in the returned object graph) "
+"then on the client-side it will be represented as a String."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:198
+#, no-c-format
+msgid "Collections"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:199
+#, no-c-format
+msgid "Bags"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:200
+#, no-c-format
+msgid ""
+"Bags cover all collection types including arrays, collections, lists, sets, "
+"(but excluding Maps - see the next section for those), and are implemented "
+"client-side as a Javascript array. When calling a component method that "
+"accepts one of these types as a parameter, your parameter should be a "
+"Javascript array. If a component method returns one of these types, then the "
+"return value will also be a Javascript array. The remoting framework is "
+"clever enough on the server side to convert the bag to an appropriate type "
+"for the component method call."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:203
+#, no-c-format
+msgid "Maps"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:204
+#, no-c-format
+msgid ""
+"As there is no native support for Maps within Javascript, a simple Map "
+"implementation is provided with the Seam Remoting framework. To create a Map "
+"which can be used as a parameter to a remote call, create a new "
+"<literal>Seam.Remoting.Map</literal> object:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:207
+#, no-c-format
+msgid "var map = new Seam.Remoting.Map();"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:208
+#, no-c-format
+msgid ""
+"This Javascript implementation provides basic methods for working with Maps: "
+"<literal>size()</literal>, <literal>isEmpty()</literal>, <literal>keySet()</"
+"literal>, <literal>values()</literal>, <literal>get(key)</literal>, "
+"<literal>put(key, value)</literal>, <literal>remove(key)</literal> and "
+"<literal>contains(key)</literal>. Each of these methods are equivalent to "
+"their Java counterpart. Where the method returns a collection, such as "
+"<literal>keySet()</literal> and <literal>values()</literal>, a Javascript "
+"Array object will be returned that contains the key or value objects "
+"(respectively)."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:211
+#, no-c-format
+msgid "Debugging"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:212
+#, no-c-format
+msgid ""
+"To aid in tracking down bugs, it is possible to enable a debug mode which "
+"will display the contents of all the packets send back and forth between the "
+"client and server in a popup window. To enable debug mode, either execute "
+"the <literal>setDebug()</literal> method in Javascript:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:215
+#, no-c-format
+msgid "Seam.Remoting.setDebug(true);"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:216
+#, no-c-format
+msgid "Or configure it via components.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:219
+#, no-c-format
+msgid "&lt;remoting:remoting debug=\"true\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:220
+#, no-c-format
+msgid ""
+"To turn off debugging, call <literal>setDebug(false)</literal>. If you want "
+"to write your own messages to the debug log, call <literal>Seam.Remoting.log"
+"(message)</literal>."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:223
+#, no-c-format
+msgid "The Loading Message"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:224
+#, no-c-format
+msgid ""
+"The default loading message that appears in the top right corner of the "
+"screen can be modified, its rendering customised or even turned off "
+"completely."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:227
+#, no-c-format
+msgid "Changing the message"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:228
+#, no-c-format
+msgid ""
+"To change the message from the default \"Please Wait...\" to something "
+"different, set the value of <literal>Seam.Remoting.loadingMessage</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:231
+#, no-c-format
+msgid "Seam.Remoting.loadingMessage = \"Loading...\";"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:232
+#, no-c-format
+msgid "Hiding the loading message"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:233
+#, no-c-format
+msgid ""
+"To completely suppress the display of the loading message, override the "
+"implementation of <literal>displayLoadingMessage()</literal> and "
+"<literal>hideLoadingMessage()</literal> with functions that instead do "
+"nothing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:236
+#, no-c-format
+msgid ""
+"// do not display the loading indicator\n"
+"  Seam.Remoting.displayLoadingMessage = function() {};\n"
+"  Seam.Remoting.hideLoadingMessage = function() {};"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:237
+#, no-c-format
+msgid "A Custom Loading Indicator"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:238
+#, no-c-format
+msgid ""
+"It is also possible to override the loading indicator to display an animated "
+"icon, or anything else that you want. To do this override the "
+"<literal>displayLoadingMessage()</literal> and <literal>hideLoadingMessage()"
+"</literal> messages with your own implementation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:241
+#, no-c-format
+msgid ""
+"Seam.Remoting.displayLoadingMessage = function() {\n"
+"    // Write code here to display the indicator\n"
+"  };\n"
+"  \n"
+"  Seam.Remoting.hideLoadingMessage = function() {\n"
+"    // Write code here to hide the indicator\n"
+"  };"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:242
+#, no-c-format
+msgid "Controlling what data is returned"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:243
+#, no-c-format
+msgid ""
+"When a remote method is executed, the result is serialized into an XML "
+"response that is returned to the client. This response is then unmarshaled "
+"by the client into a Javascript object. For complex types (i.e. Javabeans) "
+"that include references to other objects, all of these referenced objects "
+"are also serialized as part of the response. These objects may reference "
+"other objects, which may reference other objects, and so forth. If left "
+"unchecked, this object \"graph\" could potentially be enormous, depending on "
+"what relationships exist between your objects. And as a side issue (besides "
+"the potential verbosity of the response), you might also wish to prevent "
+"sensitive information from being exposed to the client."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:246
+#, no-c-format
+msgid ""
+"Seam Remoting provides a simple means to \"constrain\" the object graph, by "
+"specifying the <literal>exclude</literal> field of the remote method&#39;s "
+"<literal>@WebRemote</literal> annotation. This field accepts a String array "
+"containing one or more paths specified using dot notation. When invoking a "
+"remote method, the objects in the result&#39;s object graph that match these "
+"paths are excluded from the serialized result packet."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:249
+#, no-c-format
+msgid ""
+"For all our examples, we will use the following <literal>Widget</literal> "
+"class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:252
+#, no-c-format
+msgid ""
+"@Name(\"widget\")\n"
+"public class Widget\n"
+"{\n"
+"  private String value;\n"
+"  private String secret;\n"
+"  private Widget child;\n"
+"  private Map&lt;String,Widget&gt; widgetMap;\n"
+"  private List&lt;Widget&gt; widgetList;\n"
+"  \n"
+"  // getters and setters for all fields\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:253
+#, no-c-format
+msgid "Constraining normal fields"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:254
+#, no-c-format
+msgid ""
+"If your remote method returns an instance of <literal>Widget</literal>, but "
+"you do not want to expose the <literal>secret</literal> field because it "
+"contains sensitive information, you would constrain it like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:257
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:258
+#, no-c-format
+msgid ""
+"The value \"secret\" refers to the <literal>secret</literal> field of the "
+"returned object. Now, suppose that we do not care about exposing this "
+"particular field to the client. Instead, notice that the <literal>Widget</"
+"literal> value that is returned has a field <literal>child</literal> that is "
+"also a <literal>Widget</literal>. What if we want to hide the "
+"<literal>child</literal>&#39;s <literal>secret</literal> value instead? We "
+"can do this by using dot notation to specify this field&#39;s path within "
+"the result&#39;s object graph:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:261
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"child.secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:262
+#, no-c-format
+msgid "Constraining Maps and Collections"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:263
+#, no-c-format
+msgid ""
+"The other place that objects can exist within an object graph are within a "
+"<literal>Map</literal> or some kind of collection (<literal>List</literal>, "
+"<literal>Set</literal>, <literal>Array</literal>, etc). Collections are "
+"easy, and are treated like any other field. For example, if our "
+"<literal>Widget</literal> contained a list of other <literal>Widget</"
+"literal>s in its <literal>widgetList</literal> field, to constrain the "
+"<literal>secret</literal> field of the <literal>Widget</literal>s in this "
+"list the annotation would look like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:266
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetList.secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:267
+#, no-c-format
+msgid ""
+"To constrain a <literal>Map</literal>&#39;s key or value, the notation is "
+"slightly different. Appending <literal>[key]</literal> after the "
+"<literal>Map</literal>&#39;s field name will constrain the <literal>Map</"
+"literal>&#39;s key object values, while <literal>[value]</literal> will "
+"constrain the value object values. The following example demonstrates how "
+"the values of the <literal>widgetMap</literal> field have their "
+"<literal>secret</literal> field constrained:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:270
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetMap[value].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:271
+#, no-c-format
+msgid "Constraining objects of a specific type"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:272
+#, no-c-format
+msgid ""
+"There is one last notation that can be used to constrain the fields of a "
+"type of object no matter where in the result&#39;s object graph it appears. "
+"This notation uses either the name of the component (if the object is a Seam "
+"component) or the fully qualified class name (only if the object is not a "
+"Seam component) and is expressed using square brackets:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:275
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"[widget].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:276
+#, no-c-format
+msgid "Combining Constraints"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:277
+#, no-c-format
+msgid ""
+"Constraints can also be combined, to filter objects from multiple paths "
+"within the object graph:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:280
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetList.secret\", \"widgetMap[value].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:281
+#, no-c-format
+msgid "JMS Messaging"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:282
+#, no-c-format
+msgid ""
+"Seam Remoting provides experimental support for JMS Messaging. This section "
+"describes the JMS support that is currently implemented, but please note "
+"that this may change in the future. It is currently not recommended that "
+"this feature is used within a production environment."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:286
+#, no-c-format
+msgid ""
+"Before you can subscribe to a JMS topic, you must first configure a list of "
+"the topics that can be subscribed to by Seam Remoting. List the topics under "
+"<literal>org.jboss.seam.remoting.messaging.subscriptionRegistry."
+"allowedTopics</literal> in <literal>seam.properties</literal>, <literal>web."
+"xml</literal> or <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:289 Remoting.xml:322
+#, no-c-format
+msgid "&lt;remoting:remoting poll-timeout=\"5\" poll-interval=\"1\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:290
+#, no-c-format
+msgid "Subscribing to a JMS Topic"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:291
+#, no-c-format
+msgid "The following example demonstrates how to subscribe to a JMS Topic:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:294
+#, no-c-format
+msgid ""
+"function subscriptionCallback(message)\n"
+"  {\n"
+"    if (message instanceof Seam.Remoting.TextMessage)\n"
+"      alert(\"Received message: \" + message.getText());\n"
+"  }        \n"
+"        \n"
+"  Seam.Remoting.subscribe(\"topicName\", subscriptionCallback);"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:295
+#, no-c-format
+msgid ""
+"The <literal>Seam.Remoting.subscribe()</literal> method accepts two "
+"parameters, the first being the name of the JMS Topic to subscribe to, the "
+"second being the callback function to invoke when a message is received."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:298
+#, no-c-format
+msgid ""
+"There are two types of messages supported, Text messages and Object "
+"messages. If you need to test for the type of message that is passed to your "
+"callback function you can use the <literal>instanceof</literal> operator to "
+"test whether the message is a <literal>Seam.Remoting.TextMessage</literal> "
+"or <literal>Seam.Remoting.ObjectMessage</literal>. A <literal>TextMessage</"
+"literal> contains the text value in its <literal>text</literal> field (or "
+"alternatively call <literal>getText()</literal> on it), while an "
+"<literal>ObjectMessage</literal> contains its object value in its "
+"<literal>object</literal> field (or call its <literal>getObject()</literal> "
+"method)."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:301
+#, no-c-format
+msgid "Unsubscribing from a Topic"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:302
+#, no-c-format
+msgid ""
+"To unsubscribe from a topic, call <literal>Seam.Remoting.unsubscribe()</"
+"literal> and pass in the topic name:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:305
+#, no-c-format
+msgid "Seam.Remoting.unsubscribe(\"topicName\");"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:306
+#, no-c-format
+msgid "Tuning the Polling Process"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:307
+#, no-c-format
+msgid ""
+"There are two parameters which you can modify to control how polling occurs. "
+"The first one is <literal>Seam.Remoting.pollInterval</literal>, which "
+"controls how long to wait between subsequent polls for new messages. This "
+"parameter is expressed in seconds, and its default setting is 10."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:310
+#, no-c-format
+msgid ""
+"The second parameter is <literal>Seam.Remoting.pollTimeout</literal>, and is "
+"also expressed as seconds. It controls how long a request to the server "
+"should wait for a new message before timing out and sending an empty "
+"response. Its default is 0 seconds, which means that when the server is "
+"polled, if there are no messages ready for delivery then an empty response "
+"will be immediately returned."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:313
+#, no-c-format
+msgid ""
+"Caution should be used when setting a high <literal>pollTimeout</literal> "
+"value; each request that has to wait for a message means that a server "
+"thread is tied up until a message is received, or until the request times "
+"out. If many such requests are being served simultaneously, it could mean a "
+"large number of threads become tied up because of this reason."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:316
+#, no-c-format
+msgid ""
+"It is recommended that you set these options via components.xml, however "
+"they can be overridden via Javascript if desired. The following example "
+"demonstrates how to configure the polling to occur much more aggressively. "
+"You should set these parameters to suitable values for your application:"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:319
+#, no-c-format
+msgid "Via components.xml:"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:323
+#, no-c-format
+msgid "Via JavaScript:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:326
+#, no-c-format
+msgid ""
+"// Only wait 1 second between receiving a poll response and sending the next "
+"poll request.\n"
+"  Seam.Remoting.pollInterval = 1;\n"
+"  \n"
+"  // Wait up to 5 seconds on the server for new messages\n"
+"  Seam.Remoting.pollTimeout = 5;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Revision_History.pot
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Revision_History.pot	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Revision_History.pot	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,27 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-07-14 00:47+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Revision_History.xml:6
+#, no-c-format
+msgid "Revision History"
+msgstr ""
+
+#. Tag: author
+#: Revision_History.xml:12
+#, no-c-format
+msgid "<firstname></firstname> <surname></surname> <email></email>"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Seam_Reference_Guide_CP06.pot
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Seam_Reference_Guide_CP06.pot	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Seam_Reference_Guide_CP06.pot	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,332 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-07-14 00:47+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Seam_Reference_Guide_CP06.xml:9
+#, no-c-format
+msgid "Introduction to JBoss Seam"
+msgstr ""
+
+#. Tag: para
+#: Seam_Reference_Guide_CP06.xml:10
+#, no-c-format
+msgid ""
+"Seam is an application framework for Java EE 5. It is inspired by the "
+"following principles:"
+msgstr ""
+
+#. Tag: emphasis
+#: Seam_Reference_Guide_CP06.xml:15
+#, no-c-format
+msgid "Integrate JSF with EJB 3.0"
+msgstr ""
+
+#. Tag: para
+#: Seam_Reference_Guide_CP06.xml:17
+#, no-c-format
+msgid ""
+"JSF and EJB 3.0 are two of the best new features of Java EE 5. EJB3 is a "
+"brand new component model for server side business and persistence logic. "
+"Meanwhile, JSF is a great component model for the presentation tier. "
+"Unfortunately, neither component model is able to solve all problems in "
+"computing by itself. Indeed, JSF and EJB3 work best when used together. But "
+"the Java EE 5 specification provides no standard way to integrate the two "
+"component models. Fortunately, the creators of both models anticipated this "
+"situation and provided standard extension points to allow extension and "
+"integration of other solutions."
+msgstr ""
+
+#. Tag: para
+#: Seam_Reference_Guide_CP06.xml:20
+#, no-c-format
+msgid ""
+"Seam unifies the component models of JSF and EJB3, allowing the developer to "
+"concentrate on the business problem."
+msgstr ""
+
+#. Tag: emphasis
+#: Seam_Reference_Guide_CP06.xml:26
+#, no-c-format
+msgid "Integrated AJAX"
+msgstr ""
+
+#. Tag: para
+#: Seam_Reference_Guide_CP06.xml:28
+#, no-c-format
+msgid ""
+"Seam supports two open source JSF-based AJAX solutions: ICEfaces and "
+"Ajax4JSF. These solutions let you add AJAX capability to your user interface "
+"without the need to write any JavaScript code."
+msgstr ""
+
+#. Tag: para
+#: Seam_Reference_Guide_CP06.xml:31
+#, no-c-format
+msgid ""
+"Seam also provides a built-in JavaScript remoting layer for EJB3 components. "
+"AJAX clients can easily call server-side components and subscribe to JMS "
+"topics, without the need for an intermediate action layer."
+msgstr ""
+
+#. Tag: para
+#: Seam_Reference_Guide_CP06.xml:34
+#, no-c-format
+msgid ""
+"Neither of these approaches would work well, were it not for Seam's built-in "
+"concurrency and state management, which ensures that many concurrent fine-"
+"grained, asynchronous AJAX requests are handled safely and efficiently on "
+"the server side."
+msgstr ""
+
+#. Tag: emphasis
+#: Seam_Reference_Guide_CP06.xml:40
+#, no-c-format
+msgid "Integrate Business Process as a First Class Construct"
+msgstr ""
+
+#. Tag: para
+#: Seam_Reference_Guide_CP06.xml:42
+#, no-c-format
+msgid ""
+"Optionally, Seam integrates transparent business process management via "
+"jBPM. This allows for complex workflows to easily be implemented using jBPM "
+"and Seam."
+msgstr ""
+
+#. Tag: para
+#: Seam_Reference_Guide_CP06.xml:45
+#, no-c-format
+msgid ""
+"Seam even allows definition of presentation tier conversation flow by the "
+"same means."
+msgstr ""
+
+#. Tag: para
+#: Seam_Reference_Guide_CP06.xml:48
+#, no-c-format
+msgid ""
+"JSF provides an incredibly rich event model for the presentation tier. Seam "
+"enhances this model by exposing jBPM's business process related events via "
+"exactly the same event handling mechanism, providing a uniform event model "
+"for Seam's uniform component model."
+msgstr ""
+
+#. Tag: emphasis
+#: Seam_Reference_Guide_CP06.xml:54
+#, no-c-format
+msgid "The uniform component model"
+msgstr ""
+
+#. Tag: para
+#: Seam_Reference_Guide_CP06.xml:56
+#, no-c-format
+msgid ""
+"Seam provides a uniform component model. A Seam component may be stateful, "
+"with the state associated to any one of a number of contexts, ranging from "
+"the long-running business process to a single web request."
+msgstr ""
+
+#. Tag: para
+#: Seam_Reference_Guide_CP06.xml:59
+#, no-c-format
+msgid ""
+"There is no distinction between presentation tier components and business "
+"logic components in Seam. It is possible to write Seam applications where "
+"<emphasis>everything</emphasis> is an EJB. EJB 3.0 completely changes the "
+"nature of EJB from the point of view of the developer. An EJB is a fine-"
+"grained object, no more complex than an annotated JavaBean. Seam even "
+"encourages you to use session beans as JSF action listeners."
+msgstr ""
+
+#. Tag: para
+#: Seam_Reference_Guide_CP06.xml:62
+#, no-c-format
+msgid ""
+"Unlike plain Java EE or J2EE components, Seam components may "
+"<emphasis>simultaneously</emphasis> access state associated with the web "
+"request and state held in transactional resources (without the need to "
+"propagate web request state manually via method parameters). You might "
+"object that the application layering imposed upon you by the old J2EE "
+"platform was a Good Thing. Well, nothing stops you creating an equivalent "
+"layered architecture using Seam - the difference is that <emphasis>you</"
+"emphasis> get to architect your own application and decide what the layers "
+"are and how they work together."
+msgstr ""
+
+#. Tag: emphasis
+#: Seam_Reference_Guide_CP06.xml:68
+#, no-c-format
+msgid "Declarative State Management"
+msgstr ""
+
+#. Tag: para
+#: Seam_Reference_Guide_CP06.xml:70
+#, no-c-format
+msgid ""
+"We are all used to the concept of declarative transaction management and "
+"J2EE declarative security from EJB 2.x. EJB 3.0 even introduces declarative "
+"persistence context management. These are three examples of a broader "
+"problem of managing state that is associated with a particular "
+"<emphasis>context</emphasis>, while ensuring that all needed cleanup occurs "
+"when the context ends. Seam takes the concept of declarative state "
+"management much further and applies it to <emphasis>application state</"
+"emphasis>. Traditionally, J2EE applications almost always implement state "
+"management manually, by getting and setting servlet session and request "
+"attributes. This approach to state management is the source of many bugs and "
+"memory leaks when applications fail to clean up session attributes, or when "
+"session data associated with different workflows collides in a multi-window "
+"application. Seam has the potential to almost entirely eliminate this class "
+"of bugs."
+msgstr ""
+
+#. Tag: para
+#: Seam_Reference_Guide_CP06.xml:73
+#, no-c-format
+msgid ""
+"Declarative application state management is made possible by the richness of "
+"the <emphasis>context model</emphasis> defined by Seam. Seam extends the "
+"context model defined by the servlet spec&mdash;request, session, "
+"application&mdash;with two new contexts&mdash;conversation and business "
+"process&mdash;that are more meaningful from the point of view of the "
+"business logic."
+msgstr ""
+
+#. Tag: emphasis
+#: Seam_Reference_Guide_CP06.xml:79
+#, no-c-format
+msgid "Bijection"
+msgstr ""
+
+#. Tag: para
+#: Seam_Reference_Guide_CP06.xml:81
+#, no-c-format
+msgid ""
+"The notion of <emphasis>Inversion of Control</emphasis> or "
+"<emphasis>dependency injection</emphasis> exists in both JSF and EJB3, as "
+"well as in numerous simpler containers. Most of these containers emphasize "
+"injection of components that implement <emphasis>stateless services</"
+"emphasis>. Even when injection of stateful components is supported (such as "
+"in JSF), it is virtually useless for handling application state because the "
+"scope of the stateful component cannot be defined with sufficient "
+"flexibility."
+msgstr ""
+
+#. Tag: para
+#: Seam_Reference_Guide_CP06.xml:84
+#, no-c-format
+msgid ""
+"<emphasis>Bijection</emphasis> differs from IoC in that it is "
+"<emphasis>dynamic</emphasis>, <emphasis>contextual</emphasis>, and "
+"<emphasis>bidirectional</emphasis>. You can think of it as a mechanism for "
+"aliasing contextual variables (names in the various contexts bound to the "
+"current thread) to attributes of the component. Bijection allows auto-"
+"assembly of stateful components by the container. It even allows a component "
+"to safely and easily manipulate the value of a context variable, just by "
+"assigning to an attribute of the component."
+msgstr ""
+
+#. Tag: emphasis
+#: Seam_Reference_Guide_CP06.xml:90
+#, no-c-format
+msgid "Workspace Management"
+msgstr ""
+
+#. Tag: para
+#: Seam_Reference_Guide_CP06.xml:92
+#, no-c-format
+msgid ""
+"Optionally, Seam applications may take advantage of <emphasis>workspace "
+"management</emphasis>, allowing users to freely switch between different "
+"conversations (workspaces) in a single browser window. Seam provides not "
+"only correct multi-window operation, but also multi-window-like operation in "
+"a single window!"
+msgstr ""
+
+#. Tag: emphasis
+#: Seam_Reference_Guide_CP06.xml:98
+#, no-c-format
+msgid "Annotated POJOs Everywhere"
+msgstr ""
+
+#. Tag: para
+#: Seam_Reference_Guide_CP06.xml:100
+#, no-c-format
+msgid ""
+"EJB 3.0 embraces annotations and <emphasis>configuration by exception</"
+"emphasis> as the easiest way to provide information to the container in a "
+"declarative form. Unfortunately, JSF is still heavily dependent on verbose "
+"XML configuration files. Seam extends the annotations provided by EJB 3.0 "
+"with a set of annotations for declarative state management and declarative "
+"context demarcation. This lets you eliminate the noisy JSF managed bean "
+"declarations and reduce the required XML to just that information which "
+"truly belongs in XML (the JSF navigation rules)."
+msgstr ""
+
+#. Tag: emphasis
+#: Seam_Reference_Guide_CP06.xml:106
+#, no-c-format
+msgid "Testability as a Core Feature"
+msgstr ""
+
+#. Tag: para
+#: Seam_Reference_Guide_CP06.xml:108
+#, no-c-format
+msgid ""
+"Seam components, being POJOs, are by nature unit testable. But for complex "
+"applications, unit testing alone is insufficient. Integration testing has "
+"traditionally been a messy and difficult task for Java web applications. "
+"Therefore, Seam provides for testability of Seam applications as a core "
+"feature of the framework. You can easily write JUnit or TestNG tests that "
+"reproduce a whole interaction with a user, exercising all components of the "
+"system apart from the view (the JSP or Facelets page). You can run these "
+"tests directly inside your IDE, where Seam will automatically deploy EJB "
+"components into the JBoss Embeddable EJB3 container."
+msgstr ""
+
+#. Tag: emphasis
+#: Seam_Reference_Guide_CP06.xml:114
+#, no-c-format
+msgid "Get started now!"
+msgstr ""
+
+#. Tag: para
+#: Seam_Reference_Guide_CP06.xml:116
+#, no-c-format
+msgid ""
+"Seam works in any application server that supports EJB 3.0. You can even use "
+"Seam in a servlet container like Tomcat, or in any J2EE application server, "
+"by leveraging the new JBoss Embeddable EJB3 container."
+msgstr ""
+
+#. Tag: para
+#: Seam_Reference_Guide_CP06.xml:119
+#, no-c-format
+msgid ""
+"However, we realize that not everyone is ready to make the switch to EJB "
+"3.0. So, in the interim, you can use Seam as a framework for applications "
+"that use JSF for presentation, Hibernate (or plain JDBC) for persistence and "
+"JavaBeans for application logic. Then, when you&#39;re ready to make the "
+"switch to EJB 3.0, migration will be straightforward."
+msgstr ""
+
+#. Tag: para
+#: Seam_Reference_Guide_CP06.xml:130
+#, no-c-format
+msgid ""
+"It turns out that the combination of Seam, JSF and EJB3 is <emphasis>the</"
+"emphasis> simplest way to write a complex web application in Java. You "
+"won&#39;t believe how little code is required!"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Security.pot
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Security.pot	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Security.pot	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1810 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-07-14 00:47+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Security.xml:6
+#, no-c-format
+msgid "Security"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:7
+#, no-c-format
+msgid ""
+"The Seam Security API is an optional Seam feature that provides "
+"authentication and authorization features for securing both domain and page "
+"resources within your Seam project."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:10
+#, no-c-format
+msgid "Overview"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:11
+#, no-c-format
+msgid "Seam Security provides two different modes of operation:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:16
+#, no-c-format
+msgid ""
+"<emphasis>simplified mode</emphasis> - this mode supports authentication "
+"services and simple role-based security checks."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:21
+#, no-c-format
+msgid ""
+"<emphasis>advanced mode</emphasis> - this mode supports all the same "
+"features as the simplified mode, plus it offers rule-based security checks "
+"using JBoss Rules."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:26
+#, no-c-format
+msgid "Which mode is right for my application?"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:27
+#, no-c-format
+msgid ""
+"That all depends on the requirements of your application. If you have "
+"minimal security requirements, for example if you only wish to restrict "
+"certain pages and actions to users who are logged in, or who belong to a "
+"certain role, then the simplified mode will probably be sufficient. The "
+"advantages of this is a more simplified configuration, significantly less "
+"libraries to include, and a smaller memory footprint."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:30
+#, no-c-format
+msgid ""
+"If on the other hand, your application requires security checks based on "
+"contextual state or complex business rules, then you will require the "
+"features provided by the advanced mode."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:33
+#, no-c-format
+msgid "Requirements"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:34
+#, no-c-format
+msgid ""
+"If using the advanced mode features of Seam Security, the following jar "
+"files are required to be configured as modules in <literal>application.xml</"
+"literal>. If you are using Seam Security in simplified mode, these are "
+"<emphasis>not</emphasis> required:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:39
+#, no-c-format
+msgid "drools-compiler-3.0.5.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:44
+#, no-c-format
+msgid "drools-core-3.0.5.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:49
+#, no-c-format
+msgid "commons-jci-core-1.0-406301.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:54
+#, no-c-format
+msgid "commons-jci-janino-2.4.3.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:59
+#, no-c-format
+msgid "commons-lang-2.1.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:64
+#, no-c-format
+msgid "janino-2.4.3.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:69
+#, no-c-format
+msgid "stringtemplate-2.3b6.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:74
+#, no-c-format
+msgid "antlr-2.7.6.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:79
+#, no-c-format
+msgid "antlr-3.0ea8.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:84
+#, no-c-format
+msgid ""
+"For web-based security, <literal>jboss-seam-ui.jar</literal> must also be "
+"included in the application&#39;s war file. Also, to make use of the "
+"security EL functions, <literal>SeamFaceletViewHandler</literal> must be "
+"used. Configure it in <literal>faces-config.xml</literal> like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:87
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;view-handler&gt;org.jboss.seam.ui.facelet.SeamFaceletViewHandler&lt;/"
+"view-handler&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:88
+#, no-c-format
+msgid "Authentication"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:89
+#, no-c-format
+msgid ""
+"The authentication features provided by Seam Security are built upon JAAS "
+"(Java Authentication and Authorization Service), and as such provide a "
+"robust and highly configurable API for handling user authentication. "
+"However, for less complex authentication requirements Seam offers a much "
+"more simplified method of authentication that hides the complexity of JAAS."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:92
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:93
+#, no-c-format
+msgid ""
+"The simplified authentication method uses a built-in JAAS login module, "
+"<literal>SeamLoginModule</literal>, which delegates authentication to one of "
+"your own Seam components. This login module is already configured inside "
+"Seam as part of a default application policy and as such does not require "
+"any additional configuration files. It allows you to write an authentication "
+"method using the entity classes that are provided by your own application. "
+"Configuring this simplified form of authentication requires the "
+"<literal>identity</literal> component to be configured in "
+"<literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:96
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:security=\"http://jboss.com/products/seam/security\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core http://jboss.com/"
+"products/seam/core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components http://jboss.com/"
+"products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/drools http://jboss.com/"
+"products/seam/drools-1.2.xsd\"\n"
+"                 http://jboss.com/products/seam/security http://jboss.com/"
+"products/seam/security-1.2.xsd\"&gt;                \n"
+"        \n"
+"    &lt;security:identity authenticate-method=\"#{authenticator.authenticate}"
+"\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:97
+#, no-c-format
+msgid ""
+"If you wish to use the advanced security features such as rule-based "
+"permission checks, all you need to do is include the Drools (JBoss Rules) "
+"jars in your classpath, and add some additional configuration, described "
+"later."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:100
+#, no-c-format
+msgid ""
+"The EL expression <literal>#{authenticator.authenticate}</literal> is a "
+"method binding indicating that the <literal>authenticate</literal> method of "
+"the <literal>authenticator</literal> component will be used to authenticate "
+"the user."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:103
+#, no-c-format
+msgid "Writing an authentication method"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:104
+#, no-c-format
+msgid ""
+"The <literal>authenticate-method</literal> property specified for "
+"<literal>identity</literal> in <literal>components.xml</literal> specifies "
+"which method will be used by <literal>SeamLoginModule</literal> to "
+"authenticate users. This method takes no parameters, and is expected to "
+"return a boolean indicating whether authentication is successful or not. The "
+"user&#39;s username and password can be obtained from <literal>Identity."
+"instance().getUsername()</literal> and <literal>Identity.instance()."
+"getPassword()</literal>, respectively. Any roles that the user is a member "
+"of should be assigned using <literal>Identity.instance().addRole()</"
+"literal>. Here is a complete example of an authentication method inside a "
+"JavaBean component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:107
+#, no-c-format
+msgid ""
+"@Name(\"authenticator\")\n"
+"public class Authenticator {\n"
+"   @In EntityManager entityManager;\n"
+"   \n"
+"   public boolean authenticate() {\n"
+"      try\n"
+"      {\n"
+"         User user = (User) entityManager.createQuery(\n"
+"            \"from User where username = :username and password = :password"
+"\")\n"
+"            .setParameter(\"username\", Identity.instance().getUsername())\n"
+"            .setParameter(\"password\", Identity.instance().getPassword())\n"
+"            .getSingleResult();\n"
+"\n"
+"         if (user.getRoles() != null)\n"
+"         {\n"
+"            for (UserRole mr : user.getRoles())\n"
+"               Identity.instance().addRole(mr.getName());\n"
+"         }\n"
+"\n"
+"         return true;\n"
+"      }\n"
+"      catch (NoResultException ex)\n"
+"      {\n"
+"         FacesMessages.instance().add(\"Invalid username/password\");\n"
+"         return false;\n"
+"      }\n"
+"      \n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:108
+#, no-c-format
+msgid ""
+"In the above example, both <literal>User</literal> and <literal>UserRole</"
+"literal> are application-specific entity beans. The <literal>roles</literal> "
+"parameter is populated with the roles that the user is a member of, which "
+"should be added to the <literal>Set</literal> as literal string values, for "
+"example, <literal>admin</literal>, <literal>user</literal>. In this case, if "
+"the user record is not found and a <literal>NoResultException</literal> "
+"thrown, the authentication method returns <literal>false</literal> to "
+"indicate the authentication failed."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:111
+#, no-c-format
+msgid "Writing a login form"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:112
+#, no-c-format
+msgid ""
+"The <literal>Identity</literal> component provides both <literal>username</"
+"literal> and <literal>password</literal> properties, catering for the most "
+"common authentication scenario. These properties can be bound directly to "
+"the username and password fields on a login form. Once these properties are "
+"set, calling the <literal>identity.login()</literal> method will "
+"authenticate the user using the provided credentials. Here is an example of "
+"a simple login form:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:115
+#, no-c-format
+msgid ""
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"name\" value=\"Username\"/&gt;\n"
+"    &lt;h:inputText id=\"name\" value=\"#{identity.username}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"password\" value=\"Password\"/&gt;\n"
+"    &lt;h:inputSecret id=\"password\" value=\"#{identity.password}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;div&gt;\n"
+"    &lt;h:commandButton value=\"Login\" action=\"#{identity.login}\"/&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:116
+#, no-c-format
+msgid ""
+"Similarly, logging out the user is done by calling <literal>#{identity."
+"logout}</literal>. Calling this action will clear the security state of the "
+"currently authenticated user."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:119
+#, no-c-format
+msgid "Simplified Configuration - Summary"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:120
+#, no-c-format
+msgid ""
+"So to sum up, there are the three easy steps to configure authentication:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:125
+#, no-c-format
+msgid ""
+"Configure an authentication method in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:130
+#, no-c-format
+msgid "Write an authentication method."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:135
+#, no-c-format
+msgid "Write a login form so that the user can authenticate."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:140
+#, no-c-format
+msgid "Handling Security Exceptions"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:141
+#, no-c-format
+msgid ""
+"To prevent users from receiving the default error page in response to a "
+"security error, it is recommended that <literal>pages.xml</literal> is "
+"configured to redirect security errors to a more meaningful page. The two "
+"main types of exceptions thrown by the security API are:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:146
+#, no-c-format
+msgid ""
+"<literal>NotLoggedInException</literal> - This exception is thrown if the "
+"user attempts to access a restricted action or page when they are not logged "
+"in."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:151
+#, no-c-format
+msgid ""
+"<literal>AuthorizationException</literal> - This exception is only thrown if "
+"the user is already logged in, and they have attempted to access a "
+"restricted action or page for which they do not have the necessary "
+"privileges."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:156
+#, no-c-format
+msgid ""
+"In the case of a <literal>NotLoggedInException</literal>, it is recommended "
+"that the user is redirected to either a login or registration page so that "
+"they can log in. For an <literal>AuthorizationException</literal>, it may be "
+"useful to redirect the user to an error page. Here is an example of a "
+"<literal>pages.xml</literal> file that redirects both of these security "
+"exceptions:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:159
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"\n"
+"    ...\n"
+"    \n"
+"    &lt;exception class=\"org.jboss.seam.security.NotLoggedInException"
+"\"&gt;\n"
+"        &lt;redirect view-id=\"/login.xhtml\"&gt;\n"
+"            &lt;message&gt;You must be logged in to perform this action&lt;/"
+"message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"    \n"
+"    &lt;exception class=\"org.jboss.seam.security.AuthorizationException"
+"\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"        &lt;redirect view-id=\"/security_error.xhtml\"&gt;\n"
+"            &lt;message&gt;\n"
+"                              You do not have the necessary security "
+"privileges to perform this action.\n"
+"            &lt;/message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"  \n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:160
+#, no-c-format
+msgid ""
+"Most web applications require even more sophisticated handling of login "
+"redirection, so Seam includes some special functionality for handling this "
+"problem."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:163
+#, no-c-format
+msgid "Login Redirection"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:164
+#, no-c-format
+msgid ""
+"You can ask Seam to redirect the user to a login screen when an "
+"unauthenticated user tries to access a particular view (or wildcarded view "
+"id) as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:167
+#, no-c-format
+msgid ""
+"&lt;pages login-view-id=\"/login.xhtml\"&gt;\n"
+"\n"
+"    &lt;page view-id=\"/members/*\" login-required=\"true\"/&gt;\n"
+"    \n"
+"    ...\n"
+"    \n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:168
+#, no-c-format
+msgid ""
+"(This is less of a blunt instrument than the exception handler shown above, "
+"but should probably be used in conjunction with it.)"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:171
+#, no-c-format
+msgid ""
+"After the user logs in, we want to automatically send them back where they "
+"came from, so they can retry the action that required logging in. If you add "
+"the following event listeners to <literal>components.xml</literal>, attempts "
+"to access a restricted view while not logged in will be remembered, so that "
+"upon the user successfully logging in they will be redirected to the "
+"originally requested view, with any page parameters that existed in the "
+"original request."
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:174
+#, no-c-format
+msgid ""
+"&lt;event type=\"org.jboss.seam.notLoggedIn\"&gt;\n"
+"    &lt;action expression=\"#{redirect.captureCurrentView}\"/&gt;\n"
+"&lt;/event&gt;\n"
+"    \n"
+"&lt;event type=\"org.jboss.seam.postAuthenticate\"&gt;\n"
+"    &lt;action expression=\"#{redirect.returnToCapturedView}\"/&gt;\n"
+"&lt;/event&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:176
+#, no-c-format
+msgid ""
+"Login redirection is implemented as a conversation-scoped mechanism, so do "
+"not end the conversation in your <literal>authenticate()</literal> method."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:180
+#, no-c-format
+msgid "Advanced Authentication Features"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:181
+#, no-c-format
+msgid ""
+"This section explores some of the advanced features provided by the security "
+"API for addressing more complex security requirements."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:184
+#, no-c-format
+msgid "Using your container&#39;s JAAS configuration"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:185
+#, no-c-format
+msgid ""
+"If you would rather not use the simplified JAAS configuration provided by "
+"the Seam Security API, you may instead delegate to the default system JAAS "
+"configuration by providing a <literal>jaasConfigName</literal> property in "
+"<literal>components.xml</literal>. For example, if you are using JBoss AS "
+"and wish to use the <literal>other</literal> policy (which uses the "
+"<literal>UsersRolesLoginModule</literal> login module provided by JBoss AS), "
+"then the entry in <literal>components.xml</literal> would look like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:188
+#, no-c-format
+msgid ""
+"&lt;security:identity authenticate-method=\"#{authenticator.authenticate}"
+"\" \n"
+"                      jaas-config-name=\"other\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:189
+#, no-c-format
+msgid "Error Messages"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:190
+#, no-c-format
+msgid ""
+"The security API produces a number of default faces messages for various "
+"security-related events. The following table lists the message keys that can "
+"be used to override these messages by specifying them in a <literal>message."
+"properties</literal> resource file."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:194
+#, no-c-format
+msgid "Security Message Keys"
+msgstr ""
+
+#. Tag: literal
+#: Security.xml:202
+#, no-c-format
+msgid "org.jboss.seam.loginSuccessful"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:206
+#, no-c-format
+msgid ""
+"This message is produced when a user successfully logs in via the security "
+"API."
+msgstr ""
+
+#. Tag: literal
+#: Security.xml:214
+#, no-c-format
+msgid "org.jboss.seam.loginFailed"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:218
+#, no-c-format
+msgid ""
+"This message is produced when the login process fails, either because the "
+"user provided an incorrect username or password, or because authentication "
+"failed in some other way."
+msgstr ""
+
+#. Tag: literal
+#: Security.xml:226
+#, no-c-format
+msgid "org.jboss.seam.NotLoggedIn"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:230
+#, no-c-format
+msgid ""
+"This message is produced when a user attempts to perform an action or access "
+"a page that requires a security check, and the user is not currently "
+"authenticated."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:238
+#, no-c-format
+msgid "Authorization"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:239
+#, no-c-format
+msgid ""
+"There are a number of authorization features provided by the Seam Security "
+"API for securing access to components, component methods, and pages. This "
+"section describes each of these. An important thing to note is that if you "
+"wish to use any of the advanced features (such as rule-based permissions) "
+"then your <filename>components.xml</filename> must be configured to support "
+"this - see the Configuration section above."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:242
+#, no-c-format
+msgid "Core concepts"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:243
+#, no-c-format
+msgid ""
+"Each of the authorization mechanisms provided by the Seam Security API are "
+"built upon the concept of a user being granted roles and/or permissions. A "
+"role is a <emphasis>group</emphasis>, or <emphasis>type</emphasis>, of user "
+"that may have been granted certain privileges for performing one or more "
+"specific actions within an application. A permission on the other hand is a "
+"privilege (sometimes once-off) for performing a single, specific action. It "
+"is entirely possible to build an application using nothing but permissions, "
+"however roles offer a higher level of convenience when granting privileges "
+"to groups of users."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:246
+#, no-c-format
+msgid ""
+"Roles are simple, consisting of only a name such as <literal>admin</"
+"literal>, <literal>user</literal>, <literal>customer</literal>, etc. "
+"Permissions consist of both a name and an action, and are represented within "
+"this documentation in the form <literal>name:action</literal>, for example "
+"<literal>customer:delete</literal>, or <literal>customer:insert</literal>."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:249
+#, no-c-format
+msgid "Securing components"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:250
+#, no-c-format
+msgid ""
+"Let us start by examining the simplest form of authorization, component "
+"security, starting with the <literal>@Restrict</literal> annotation."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:253
+#, no-c-format
+msgid "The @Restrict annotation"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:254
+#, no-c-format
+msgid ""
+"Seam components may be secured either at the method or the class level, "
+"using the <literal>@Restrict</literal> annotation. If both a method and "
+"it&#39;s declaring class are annotated with <literal>@Restrict</literal>, "
+"the method restriction will take precedence (and the class restriction will "
+"not apply). If a method invocation fails a security check, then an exception "
+"will be thrown as per the contract for <literal>Identity.checkRestriction()</"
+"literal> (see Inline Restrictions). A <literal>@Restrict</literal> on just "
+"the component class itself is equivalent to adding <literal>@Restrict</"
+"literal> to each of its methods."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:257
+#, no-c-format
+msgid ""
+"An empty <literal>@Restrict</literal> implies a permission check of "
+"<literal>componentName:methodName</literal>. Take for example the following "
+"component method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:260
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class AccountAction {\n"
+"    @Restrict public void delete() {\n"
+"      ...\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:261
+#, no-c-format
+msgid ""
+"In this example, the implied permission required to call the <literal>delete"
+"()</literal> method is <literal>account:delete</literal>. The equivalent of "
+"this would be to write <literal>@Restrict(\"#{s:hasPermission(&#39;"
+"account&#39;,&#39;delete&#39;,null)}\")</literal>. Now let&#39;s look at "
+"another example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:264
+#, no-c-format
+msgid ""
+"@Restrict @Name(\"account\")\n"
+"public class AccountAction {\n"
+"    public void insert() {\n"
+"      ...\n"
+"    }\n"
+"    @Restrict(\"#{s:hasRole(&#39;admin&#39;)}\") \n"
+"    public void delete() {\n"
+"      ...\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:265
+#, no-c-format
+msgid ""
+"This time, the component class itself is annotated with <literal>@Restrict</"
+"literal>. This means that any methods without an overriding "
+"<literal>@Restrict</literal> annotation require an implicit permission "
+"check. In the case of this example, the <literal>insert()</literal> method "
+"requires a permission of <literal>account:insert</literal>, while the "
+"<literal>delete()</literal> method requires that the user is a member of the "
+"<literal>admin</literal> role."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:268
+#, no-c-format
+msgid ""
+"Before we go any further, let us address the <literal>#{s:hasRole()}</"
+"literal> expression seen in the above example. Both <literal>s:hasRole</"
+"literal> and <literal>s:hasPermission</literal> are EL functions, which "
+"delegate to the correspondingly named methods of the <literal>Identity</"
+"literal> class. These functions can be used within any EL expression "
+"throughout the entirety of the security API."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:271
+#, no-c-format
+msgid ""
+"Being an EL expression, the value of the <literal>@Restrict</literal> "
+"annotation may reference any objects that exist within a Seam context. This "
+"is extremely useful when performing permission checks for a specific object "
+"instance. Look at this example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:274
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class AccountAction {\n"
+"    @In Account selectedAccount;\n"
+"    @Restrict(\"#{s:hasPermission(&#39;account&#39;,&#39;modify&#39;,"
+"selectedAccount)}\")\n"
+"    public void modify() {\n"
+"        selectedAccount.modify();\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:275
+#, no-c-format
+msgid ""
+"The interesting thing to note from this example is the reference to "
+"<literal>selectedAccount</literal> seen within the <literal>hasPermission()</"
+"literal> function call. The value of this variable will be looked up from "
+"within the Seam context, and passed to the <literal>hasPermission()</"
+"literal> method in <literal>Identity</literal>, which in this case can then "
+"determine if the user has the required permission for modifying the "
+"specified <literal>Account</literal> object."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:278
+#, no-c-format
+msgid "Inline restrictions"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:279
+#, no-c-format
+msgid ""
+"Sometimes it might be desirable to perform a security check in code, without "
+"using the <literal>@Restrict</literal> annotation. In this situation, simply "
+"use <literal>Identity.checkRestriction()</literal> to evaluate a security "
+"expression, like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:282
+#, no-c-format
+msgid ""
+"public void deleteCustomer() {\n"
+"    Identity.instance().checkRestriction(\"#{s:hasPermission(&#39;"
+"customer&#39;,&#39;delete&#39;,\n"
+"      selectedCustomer)}\");\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:283
+#, no-c-format
+msgid ""
+"If the expression specified doesn&#39;t evaluate to <literal>true</literal>, "
+"either"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:288
+#, no-c-format
+msgid ""
+"if the user is not logged in, a <literal>NotLoggedInException</literal> "
+"exception is thrown or"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:293
+#, no-c-format
+msgid ""
+"if the user is logged in, an <literal>AuthorizationException</literal> "
+"exception is thrown."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:298
+#, no-c-format
+msgid ""
+"It is also possible to call the <literal>hasRole()</literal> and "
+"<literal>hasPermission()</literal> methods directly from Java code:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:301
+#, no-c-format
+msgid ""
+"if (!Identity.instance().hasRole(\"admin\"))\n"
+"     throw new AuthorizationException(\"Must be admin to perform this action"
+"\");\n"
+"\n"
+"if (!Identity.instance().hasPermission(\"customer\", \"create\", null))\n"
+"     throw new AuthorizationException(\"You may not create new customers\");"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:302
+#, no-c-format
+msgid "Security in the user interface"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:303
+#, no-c-format
+msgid ""
+"One indication of a well designed user interface is that the user is not "
+"presented with options for which they do not have the necessary privileges "
+"to use. Seam Security allows conditional rendering of either 1) sections of "
+"a page or 2) individual controls, based upon the privileges of the user, "
+"using the very same EL expressions that are used for component security."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:306
+#, no-c-format
+msgid ""
+"Let us take a look at some examples of interface security. First of all, let "
+"us pretend that we have a login form that should only be rendered if the "
+"user is not already logged in. Using the <literal>identity.isLoggedIn()</"
+"literal> property, we can write this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:309
+#, no-c-format
+msgid ""
+"&lt;h:form class=\"loginForm\" rendered=\"#{not identity.loggedIn}\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:310
+#, no-c-format
+msgid ""
+"If the user is not logged in, then the login form will be rendered - very "
+"straight forward so far. Now let us pretend there is a menu on the page that "
+"contains some actions which should only be accessible to users in the "
+"<literal>manager</literal> role. Here is one way that these could be written:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:313
+#, no-c-format
+msgid ""
+"&lt;h:outputLink action=\"#{reports.listManagerReports}\" rendered=\"#{s:"
+"hasRole(&#39;manager&#39;)}\"&gt;\n"
+"    Manager Reports\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:314
+#, no-c-format
+msgid ""
+"This is also quite straight forward. If the user is not a member of the "
+"<literal>manager</literal> role, then the outputLink will not be rendered. "
+"The <literal>rendered</literal> attribute can generally be used on the "
+"control itself, or on a surrounding <literal>&lt;s:div&gt;</literal> or "
+"<literal>&lt;s:span&gt;</literal> control."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:317
+#, no-c-format
+msgid ""
+"Now for something more complex. Let us say you have a <literal>h:dataTable</"
+"literal> control on a page listing records for which you may or may not wish "
+"to render action links depending on the user&#39;s privileges. The "
+"<literal>s:hasPermission</literal> EL function allows us to pass in an "
+"object parameter which can be used to determine whether the user has the "
+"requested permission for that object or not. Here is how a dataTable with "
+"secured links might look:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:320
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{clients}\" var=\"cl\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Name&lt;/f:facet&gt;\n"
+"        #{cl.name}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;City&lt;/f:facet&gt;\n"
+"        #{cl.city}\n"
+"    &lt;/h:column&gt;   \n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"        &lt;s:link value=\"Modify Client\" action=\"#{clientAction.modify}"
+"\"\n"
+"                rendered=\"#{s:hasPermission(&#39;client&#39;,&#39;"
+"modify&#39;,cl)\"/&gt;\n"
+"        &lt;s:link value=\"Delete Client\" action=\"#{clientAction.delete}"
+"\"\n"
+"                rendered=\"#{s:hasPermission(&#39;client&#39;,&#39;"
+"delete&#39;,cl)\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:321
+#, no-c-format
+msgid "Securing pages"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:322
+#, no-c-format
+msgid ""
+"Page security requires that the application is using a <literal>pages.xml</"
+"literal> file, however is extremely simple to configure. Simply include a "
+"<literal>&lt;restrict/&gt;</literal> element within the <literal>page</"
+"literal> elements that you wish to secure. By default, if a value is not "
+"provided for the <literal>restrict</literal> element, an implied permission "
+"of <literal>{viewId}:render</literal> will be checked for whenever accessing "
+"that page. Otherwise the value will be evaluated as a standard security "
+"expression. Here is a couple of examples:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:325
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/settings.xhtml\"&gt;\n"
+"    &lt;restrict/&gt;\n"
+"&lt;/page&gt;\n"
+"        \n"
+"&lt;page view-id=\"/reports.xhtml\"&gt;    \n"
+"    &lt;restrict&gt;#{s:hasRole(&#39;admin&#39;)}&lt;/restrict&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:326
+#, no-c-format
+msgid ""
+"In the above example, the first page has an implied permission restriction "
+"of <literal>/settings.xhtml:render</literal>, while the second one checks "
+"that the user is a member of the <literal>admin</literal> role."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:329
+#, no-c-format
+msgid "Securing Entities"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:330
+#, no-c-format
+msgid ""
+"Seam security also makes it possible to apply security restrictions to read, "
+"insert, update and delete actions for entities."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:333
+#, no-c-format
+msgid ""
+"To secure all actions for an entity class, add a <literal>@Restrict</"
+"literal> annotation on the class itself:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:336
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"customer\")\n"
+"@Restrict\n"
+"public class Customer {\n"
+"  ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:337
+#, no-c-format
+msgid ""
+"If no expression is specified in the <literal>@Restrict</literal> "
+"annotation, the default security check that is performed is a permission "
+"check of <literal>entityName:action</literal>, where <literal>entityName</"
+"literal> is the Seam component name of the entity (or the fully-qualified "
+"class name if no @Name is specified), and the <literal>action</literal> is "
+"either <literal>read</literal>, <literal>insert</literal>, <literal>update</"
+"literal> or <literal>delete</literal>."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:340
+#, no-c-format
+msgid ""
+"It is also possible to only restrict certain actions, by placing a "
+"<literal>@Restrict</literal> annotation on the relevent entity lifecycle "
+"method (annotated as follows):"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:345
+#, no-c-format
+msgid ""
+"<literal>@PostLoad</literal> - Called after an entity instance is loaded "
+"from the database. Use this method to configure a <literal>read</literal> "
+"permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:350
+#, no-c-format
+msgid ""
+"<literal>@PrePersist</literal> - Called before a new instance of the entity "
+"is inserted. Use this method to configure an <literal>insert</literal> "
+"permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:355
+#, no-c-format
+msgid ""
+"<literal>@PreUpdate</literal> - Called before an entity is updated. Use this "
+"method to configure an <literal>update</literal> permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:360
+#, no-c-format
+msgid ""
+"<literal>@PreRemove</literal> - Called before an entity is deleted. Use this "
+"method to configure a <literal>delete</literal> permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:365
+#, no-c-format
+msgid ""
+"Here is an example of how an entity would be configured to perform a "
+"security check for any <literal>insert</literal> operations. Please note "
+"that the method is not required to do anything, the only important thing in "
+"regard to security is how it is annotated:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:368
+#, no-c-format
+msgid ""
+"@PrePersist @Restrict\n"
+"  public void prePersist() {}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:369
+#, no-c-format
+msgid ""
+"And here is an example of an entity permission rule that checks if the "
+"authenticated user is allowed to insert a new <literal>MemberBlog</literal> "
+"record (from the seamspace example). The entity for which the security check "
+"is being made is automatically asserted into the working memory (in this "
+"case <literal>MemberBlog</literal>):"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:372
+#, no-c-format
+msgid ""
+"rule InsertMemberBlog\n"
+"  no-loop\n"
+"  activation-group \"permissions\"  \n"
+"when\n"
+"  check: PermissionCheck(name == \"memberBlog\", action == \"insert\", "
+"granted == false)\n"
+"  Principal(principalName : name)\n"
+"  MemberBlog(member : member -&gt; (member.getUsername().equals"
+"(principalName)))\n"
+"then\n"
+"  check.grant();\n"
+"end;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:373
+#, no-c-format
+msgid ""
+"This rule will grant the permission <literal>memberBlog:insert</literal> if "
+"the currently authenticated user (indicated by the <literal>Principal</"
+"literal> fact) has the same name as the member for which the blog entry is "
+"being created. The \"<literal>name : name</literal>\" structure that can be "
+"seen in the <literal>Principal</literal> fact (and other places) is a "
+"variable binding - it binds the <literal>name</literal> property of the "
+"<literal>Principal</literal> to a variable called <literal>name</literal>. "
+"Variable bindings allow the value to be referred to in other places, such as "
+"the following line which compares the member&#39;s username to the "
+"<literal>Principal</literal> name. For more details, please refer to the "
+"JBoss Rules documentation."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:376
+#, no-c-format
+msgid ""
+"Finally, we need to install a listener class that integrates Seam security "
+"with your JPA provider."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:379
+#, no-c-format
+msgid "Entity security with JPA"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:380
+#, no-c-format
+msgid ""
+"Security checks for EJB3 entity beans are performed with an "
+"<literal>EntityListener</literal>. You can install this listener by using "
+"the following <literal>META-INF/orm.xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:383
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;entity-mappings xmlns=\"http://java.sun.com/xml/ns/persistence/orm\"\n"
+"                 xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"                 xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence/"
+"orm \n"
+"                                            http://java.sun.com/xml/ns/"
+"persistence/orm_1_0.xsd\"\n"
+"                 version=\"1.0\"&gt;\n"
+"                 \n"
+"    &lt;persistence-unit-metadata&gt;\n"
+"        &lt;persistence-unit-defaults&gt;\n"
+"            &lt;entity-listeners&gt;\n"
+"                &lt;entity-listener class=\"org.jboss.seam.security."
+"EntitySecurityListener\"/&gt;\n"
+"            &lt;/entity-listeners&gt;\n"
+"        &lt;/persistence-unit-defaults&gt;\n"
+"    &lt;/persistence-unit-metadata&gt;\n"
+"    \n"
+"&lt;/entity-mappings&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:384
+#, no-c-format
+msgid "Entity security with Hibernate"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:385
+#, no-c-format
+msgid ""
+"If you are using a Hibernate <literal>SessionFactory</literal> configured "
+"via Seam, you do not need to do anything special to use entity security."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:388
+#, no-c-format
+msgid "Writing Security Rules"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:389
+#, no-c-format
+msgid ""
+"Up to this point there has been a lot of mention of permissions, but no "
+"information about how permissions are actually defined or granted. This "
+"section completes the picture, by explaining how permission checks are "
+"processed, and how to implement permission checks for a Seam application."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:392
+#, no-c-format
+msgid "Permissions Overview"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:393
+#, no-c-format
+msgid ""
+"So how does the security API know whether a user has the <literal>customer:"
+"modify</literal> permission for a specific customer? Seam Security provides "
+"quite a novel method for determining user permissions, based on JBoss Rules. "
+"A couple of the advantages of using a rule engine are 1) a centralized "
+"location for the business logic that is behind each user permission, and 2) "
+"speed - JBoss Rules uses very efficient algorithms for evaluating large "
+"numbers of complex rules involving multiple conditions."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:396
+#, no-c-format
+msgid "Configuring a rules file"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:397
+#, no-c-format
+msgid ""
+"Seam Security expects to find a <literal>RuleBase</literal> component called "
+"<literal>securityRules</literal> which it uses to evaluate permission "
+"checks. This is configured in <literal>components.xml</literal> as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:400
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:security=\"http://jboss.com/products/seam/security\"\n"
+"            xmlns:drools=\"http://jboss.com/products/seam/drools\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                                              http://jboss.com/products/seam/"
+"core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components \n"
+"                                              http://jboss.com/products/seam/"
+"components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/drools \n"
+"                                              http://jboss.com/products/seam/"
+"drools-1.2.xsd\"\n"
+"                 http://jboss.com/products/seam/security \n"
+"                                              http://jboss.com/products/seam/"
+"security-1.2.xsd\"&gt;                 \n"
+"        \n"
+"   &lt;drools:rule-base name=\"securityRules\"&gt;\n"
+"       &lt;drools:rule-files&gt;\n"
+"           &lt;value&gt;/META-INF/security.drl&lt;/value&gt;\n"
+"       &lt;/drools:rule-files&gt;\n"
+"   &lt;/drools:rule-base&gt;    \n"
+"   \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:401
+#, no-c-format
+msgid ""
+"Once the <literal>RuleBase</literal> component is configured, it is time to "
+"write the security rules."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:404
+#, no-c-format
+msgid "Creating a security rules file"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:405
+#, no-c-format
+msgid ""
+"For this step you need to create a file called <literal>security.drl</"
+"literal> in the <literal>/META-INF</literal> directory of your "
+"application&#39;s jar file. In actual fact this file can be called anything "
+"you want, and exist in any location as long as it is configured "
+"appropriately in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:408
+#, no-c-format
+msgid ""
+"So what should the security rules file contain? At this stage it might be a "
+"good idea to at least skim through the JBoss Rules documentation, however to "
+"get started here is an extremely simple example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:411
+#, no-c-format
+msgid ""
+"package MyApplicationPermissions;\n"
+"\n"
+"import org.jboss.seam.security.PermissionCheck;\n"
+"import org.jboss.seam.security.Role;\n"
+"\n"
+"rule CanUserDeleteCustomers\n"
+"when\n"
+"  c: PermissionCheck(name == \"customer\", action == \"delete\")\n"
+"  Role(name == \"admin\")\n"
+"then\n"
+"  c.grant();\n"
+"end;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:412
+#, no-c-format
+msgid ""
+"Let us break this down. The first thing we see is the package declaration. A "
+"package in JBoss Rules is essentially a collection of rules. The package "
+"name can be anything you want - it does not relate to anything else outside "
+"the scope of the rule base."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:415
+#, no-c-format
+msgid ""
+"The next thing we can notice is a couple of import statements for the "
+"<literal>PermissionCheck</literal> and <literal>Role</literal> classes. "
+"These imports inform the rules engine that we will be referencing these "
+"classes within our rules."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:418
+#, no-c-format
+msgid ""
+"Finally we have the code for the rule. Each rule within a package should be "
+"given a unique name (usually describing the purpose of the rule). In this "
+"case our rule is called <literal>CanUserDeleteCustomers</literal> and will "
+"be used to check whether a user is allowed to delete a customer record."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:421
+#, no-c-format
+msgid ""
+"Looking at the body of the rule definition we can notice two distinct "
+"sections. Rules have what is known as a left hand side (LHS) and a right "
+"hand side (RHS). The LHS consists of the conditional part of the rule, i.e. "
+"a list of conditions which must be satisfied for the rule to fire. The LHS "
+"is represented by the <literal>when</literal> section. The RHS is the "
+"consequence, or action section of the rule that will only be fired if all of "
+"the conditions in the LHS are met. The RHS is represented by the "
+"<literal>then</literal> section. The end of the rule is denoted by the "
+"<literal>end;</literal> line."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:424
+#, no-c-format
+msgid ""
+"If we look at the LHS of the rule, we see two conditions listed there. Let "
+"us examine the first condition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:427
+#, no-c-format
+msgid "c: PermissionCheck(name == \"customer\", action == \"delete\")"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:428
+#, no-c-format
+msgid ""
+"In plain english, this condition is stating that there must exist a "
+"<literal>PermissionCheck</literal> object with a <literal>name</literal> "
+"property equal to \"customer\", and an <literal>action</literal> property "
+"equal to \"delete\" within the working memory. What is the working memory? "
+"It is a session-scoped object that contains the contextual information that "
+"is required by the rules engine to make a decision about a permission check. "
+"Each time the <literal>hasPermission()</literal> method is called, a "
+"temporary <literal>PermissionCheck</literal> object, or <emphasis>Fact</"
+"emphasis>, is asserted into the working memory. This "
+"<literal>PermissionCheck</literal> corresponds exactly to the permission "
+"that is being checked, so for example if you call <literal>hasPermission"
+"(\"account\", \"create\", null)</literal> then a <literal>PermissionCheck</"
+"literal> object with a <literal>name</literal> equal to \"account\" and "
+"<literal>action</literal> equal to \"create\" will be asserted into the "
+"working memory for the duration of the permission check."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:431
+#, no-c-format
+msgid ""
+"So what else is in the working memory? Besides the short-lived temporary "
+"facts asserted during a permission check, there are some longer-lived "
+"objects in the working memory that stay there for the entire duration of a "
+"user being authenticated. These include any <literal>java.security."
+"Principal</literal> objects that are created as part of the authentication "
+"process, plus a <literal>org.jboss.seam.security.Role</literal> object for "
+"each of the roles that the user is a member of. It is also possible to "
+"assert additional long-lived facts into the working memory by calling "
+"<literal>RuleBasedIdentity.instance().getSecurityContext().assertObject()</"
+"literal>, passing the object as a parameter."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:434
+#, no-c-format
+msgid ""
+"Getting back to our simple example, we can also notice that the first line "
+"of our LHS is prefixed with <literal>c:</literal>. This is a variable "
+"binding, and is used to refer back to the object that is matched by the "
+"condition. Moving onto the second line of our LHS, we see this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:437
+#, no-c-format
+msgid "Role(name == \"admin\")"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:438
+#, no-c-format
+msgid ""
+"This condition simply states that there must be a <literal>Role</literal> "
+"object with a <literal>name</literal> of \"admin\" within the working "
+"memory. As mentioned, user roles are asserted into the working memory as "
+"long-lived facts. So, putting both conditions together, this rule is "
+"essentially saying \"I will fire if you are checking for the "
+"<literal>customer:delete</literal> permission and the user is a member of "
+"the <literal>admin</literal> role\"."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:441
+#, no-c-format
+msgid ""
+"So what is the consequence of the rule firing? Let us take a look at the RHS "
+"of the rule:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:444
+#, no-c-format
+msgid "c.grant()"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:445
+#, no-c-format
+msgid ""
+"The RHS consists of Java code, and in this case is invoking the "
+"<literal>grant()</literal> method of the <literal>c</literal> object, which "
+"as already mentioned is a variable binding for the <literal>PermissionCheck</"
+"literal> object. Besides the <literal>name</literal> and <literal>action</"
+"literal> properties of the <literal>PermissionCheck</literal> object, there "
+"is also a <literal>granted</literal> property which is initially set to "
+"<literal>false</literal>. Calling <literal>grant()</literal> on a "
+"<literal>PermissionCheck</literal> sets the <literal>granted</literal> "
+"property to <literal>true</literal>, which means that the permission check "
+"was successful, allowing the user to carry out whatever action the "
+"permission check was intended for."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:448
+#, no-c-format
+msgid "Wildcard permission checks"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:449
+#, no-c-format
+msgid ""
+"It is possible to implement a wildcard permission check (which allows all "
+"actions for a given permission name), by omitting the <literal>action</"
+"literal> constraint for the <literal>PermissionCheck</literal> in your rule, "
+"like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:452
+#, no-c-format
+msgid ""
+"rule CanDoAnythingToCustomersIfYouAreAnAdmin\n"
+"when\n"
+"  c: PermissionCheck(name == \"customer\")\n"
+"  Role(name == \"admin\")\n"
+"then\n"
+"  c.grant();\n"
+"end;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:453
+#, no-c-format
+msgid ""
+"This rule allows users with the <literal>admin</literal> role to perform "
+"<emphasis>any</emphasis> action for any <literal>customer</literal> "
+"permission check."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:456
+#, no-c-format
+msgid "SSL Security"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:457
+#, no-c-format
+msgid ""
+"Seam includes basic support for serving sensitive pages via the HTTPS "
+"protocol. This is easily configured by specifying a <literal>scheme</"
+"literal> for the page in <literal>pages.xml</literal>. The following example "
+"shows how the view <literal>/login.xhtml</literal> is configured to use "
+"HTTPS:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:460
+#, no-c-format
+msgid "&lt;page view-id=\"/login.xhtml\" scheme=\"https\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:461
+#, no-c-format
+msgid ""
+"This configuration is automatically extended to both <literal>s:link</"
+"literal> and <literal>s:button</literal> JSF controls, which (when "
+"specifying the <literal>view</literal>) will also render the link using the "
+"correct protocol. Based on the previous example, the following link will use "
+"the HTTPS protocol because <literal>/login.xhtml</literal> is configured to "
+"use it:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:464
+#, no-c-format
+msgid "&lt;s:link view=\"/login.xhtml\" value=\"Login\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:465
+#, no-c-format
+msgid ""
+"Browsing directly to a view when using the <emphasis>incorrect</emphasis> "
+"protocol will cause a redirect to the same view using the <emphasis>correct</"
+"emphasis> protocol. For example, browsing to a page that has <literal>scheme="
+"\"https\"</literal> using HTTP will cause a redirect to the same page using "
+"HTTPS."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:468
+#, no-c-format
+msgid ""
+"It is also possible to configure a default <literal>scheme</literal> for all "
+"pages. This is actually quite important, as you might only wish to use HTTPS "
+"for a few pages, and if no default scheme is specified then the default "
+"behavior is to continue using the current scheme. What this means is that "
+"once you enter a page with HTTPS, then HTTPS will continue to be used even "
+"if you navigate away to other non-HTTPS pages (a bad thing!). So it is "
+"strongly recommended to include a default <literal>scheme</literal>, by "
+"configuring it on the default (<literal>\"*\"</literal>) view:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:471
+#, no-c-format
+msgid "&lt;page view-id=\"*\" scheme=\"http\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:472
+#, no-c-format
+msgid ""
+"Of course, if <emphasis>none</emphasis> of the pages in your application use "
+"HTTPS then it is not required to specify a default scheme."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:475
+#, no-c-format
+msgid "Implementing a Captcha Test"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:476
+#, no-c-format
+msgid ""
+"Though strictly not part of the security API, it might be useful in certain "
+"circumstances (such as new user registrations, posting to a public blog or "
+"forum) to implement a Captcha (<emphasis>C</emphasis>ompletely <emphasis>A</"
+"emphasis>utomated <emphasis>P</emphasis>ublic <emphasis>T</emphasis>uring "
+"test to tell <emphasis>C</emphasis>omputers and <emphasis>H</emphasis>umans "
+"<emphasis>A</emphasis>part) to prevent automated bots from interacting with "
+"your application. Seam provides seamless integration with JCaptcha, an "
+"excellent library for generating Captcha challenges. If you wish to use the "
+"captcha feature in your application you need to include the jcaptcha-* jar "
+"file from the Seam lib directory in your project, and register it in "
+"<literal>application.xml</literal> as a java module."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:479
+#, no-c-format
+msgid "Configuring the Captcha Servlet"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:480
+#, no-c-format
+msgid ""
+"To get up and running, it is necessary to configure the Seam Resource "
+"Servlet, which will provide the Captcha challenge images to your pages. This "
+"requires the following entry in <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:483
+#, no-c-format
+msgid ""
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"    \n"
+"&lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:484
+#, no-c-format
+msgid "Adding a Captcha to a page"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:485
+#, no-c-format
+msgid ""
+"Adding a captcha challenge to a page is extremely easy. Seam provides a page-"
+"scoped component, <literal>captcha</literal>, which provides everything that "
+"is required, including built-in captcha validation. Here is an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:488
+#, no-c-format
+msgid ""
+"&lt;div&gt;\n"
+"    &lt;h:graphicImage value=\"/seam/resource/captcha?#{captcha.id}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"  \n"
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"verifyCaptcha\"&gt;Enter the above letters&lt;/h:"
+"outputLabel&gt;\n"
+"    &lt;h:inputText id=\"verifyCaptcha\" value=\"#{captcha.response}\" "
+"required=\"true\"/&gt;\n"
+"    &lt;div class=\"validationError\"&gt;&lt;h:message for=\"verifyCaptcha\"/"
+"&gt;&lt;/div&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:489
+#, no-c-format
+msgid ""
+"That is all there is to it. The <literal>graphicImage</literal> control "
+"displays the Captcha challenge, and the <literal>inputText</literal> "
+"receives the user&#39;s response. The response is automatically validated "
+"against the Captcha when the form is submitted."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Spring.pot
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Spring.pot	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Spring.pot	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,488 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-07-14 00:47+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Spring.xml:6
+#, no-c-format
+msgid "Spring Framework integration"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:7
+#, no-c-format
+msgid ""
+"The Spring integration module allows easy migration of Spring-based projects "
+"to Seam and allows Spring applications to take advantage of key Seam "
+"features like conversations and Seam&#39;s more sophisticated persistence "
+"context management."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:10
+#, no-c-format
+msgid "Seam&#39;s support for Spring provides the ability to:"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:15
+#, no-c-format
+msgid "inject Seam component instances into Spring beans"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:20
+#, no-c-format
+msgid "inject Spring beans into Seam components"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:25
+#, no-c-format
+msgid "turn Spring beans into Seam components"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:30
+#, no-c-format
+msgid "allow Spring beans to live in any Seam context"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:35
+#, no-c-format
+msgid "start a spring WebApplicationContext with a Seam component"
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:41
+#, no-c-format
+msgid "Injecting Seam components into Spring beans"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:42
+#, no-c-format
+msgid ""
+"Injecting Seam component instances into Spring beans is accomplished using "
+"the <literal>&lt;seam:instance/&gt;</literal> namespace handler. To enable "
+"the Seam namespace handler, the Seam namespace must be added to the Spring "
+"beans definition file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:45
+#, no-c-format
+msgid ""
+"&lt;beans xmlns=\"http://www.springframework.org/schema/beans\"\n"
+"    xmlns:seam=\"http://jboss.com/products/seam/spring-seam\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://www.springframework.org/schema/beans \n"
+"                        http://www.springframework.org/schema/beans/spring-"
+"beans-2.0.xsd\n"
+"                        http://jboss.com/products/seam/spring-seam \n"
+"                        http://jboss.com/products/seam/spring-seam-1.2.xsd"
+"\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:46
+#, no-c-format
+msgid "Now any Seam component may be injected into any Spring bean:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:49
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\"&gt;\n"
+"        &lt;seam:instance name=\"someComponent\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:50
+#, no-c-format
+msgid "An EL expression may be used instead of a component name:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:53
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\"&gt;\n"
+"        &lt;seam:instance name=\"#{someExpression}\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:54
+#, no-c-format
+msgid ""
+"Seam component instances may even be made available for injection into "
+"Spring beans by a Spring bean id."
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:57
+#, no-c-format
+msgid ""
+"&lt;seam:instance name=\"someComponent\" id=\"someSeamComponentInstance\"/"
+"&gt;\n"
+"\n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\" ref=\"someSeamComponentInstance"
+"\"&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:58
+#, no-c-format
+msgid "Now for the caveat!"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:61
+#, no-c-format
+msgid ""
+"Seam was designed from the ground up to support a stateful component model "
+"with multiple contexts. Spring was not. Unlike Seam bijection, Spring "
+"injection does not occur at method invocation time. Instead, injection "
+"happens only when the Spring bean is instantiated. So the instance available "
+"when the bean is instantiated will be the same instance that the bean uses "
+"for the entire life of the bean. For example, if a Seam "
+"<literal>CONVERSATION</literal>-scoped component instance is directly "
+"injected into a singleton Spring bean, that singleton will hold a reference "
+"to the same instance long after the conversation is over! We call this "
+"problem <emphasis>scope impedance</emphasis>. Seam bijection ensures that "
+"scope impedance is maintained naturally as an invocation flows through the "
+"system. In Spring, we need to inject a proxy of the Seam component, and "
+"resolve the reference when the proxy is invoked."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:64
+#, no-c-format
+msgid ""
+"The <literal>&lt;seam:instance/&gt;</literal> tag lets us automatically "
+"proxy the Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:67
+#, no-c-format
+msgid ""
+"&lt;seam:instance id=\"seamManagedEM\" name=\"someManagedEMComponent\" proxy="
+"\"true\"/&gt;\n"
+"        \n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\"&gt;\n"
+"    &lt;property name=\"entityManager\" ref=\"seamManagedEM\"&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:68
+#, no-c-format
+msgid ""
+"This example shows one way to use a Seam-managed persistence context from a "
+"Spring bean. (A more robust way to use Seam-managed persistence contexts as "
+"a replacement for the Spring <literal>OpenEntityManagerInView</literal> "
+"filter will be provided in a future release)"
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:74
+#, no-c-format
+msgid "Injecting Spring beans into Seam components"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:75
+#, no-c-format
+msgid ""
+"It is even easier to inject Spring beans into Seam component instances. "
+"Actually, there are two possible approaches:"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:80
+#, no-c-format
+msgid "inject a Spring bean using an EL expression"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:85
+#, no-c-format
+msgid "make the Spring bean a Seam component"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:90
+#, no-c-format
+msgid ""
+"We will discuss the second option in the next section. The easiest approach "
+"is to access the Spring beans via EL."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:93
+#, no-c-format
+msgid ""
+"The Spring <literal>DelegatingVariableResolver</literal> is an integration "
+"point Spring provides for integrating Spring with JSF. This "
+"<literal>VariableResolver</literal> makes all Spring beans available in EL "
+"by their bean id. You will need to add the "
+"<literal>DelegatingVariableResolver</literal> to <literal>faces-config.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:96
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;variable-resolver&gt;\n"
+"        org.springframework.web.jsf.DelegatingVariableResolver\n"
+"    &lt;/variable-resolver&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:97
+#, no-c-format
+msgid "Then you can inject Spring beans using <literal>@In</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:100
+#, no-c-format
+msgid ""
+"@In(\"#{bookingService}\")\n"
+"private BookingService bookingService;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:101
+#, no-c-format
+msgid ""
+"The use of Spring beans in EL is not limited to injection. Spring beans may "
+"be used anywhere that EL expressions are used in Seam: process and pageflow "
+"definitions, working memory assertions, etc..."
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:107
+#, no-c-format
+msgid "Making a Spring bean into a Seam component"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:108
+#, no-c-format
+msgid ""
+"The <literal>&lt;seam:component/&gt;</literal> namespace handler can be used "
+"to make any Spring bean a Seam component. Just place the <literal>&lt;seam:"
+"component/&gt;</literal> tag within the declaration of the bean that you "
+"wish to be a Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:111
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;seam:component/&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:112
+#, no-c-format
+msgid ""
+"By default, <literal>&lt;seam:component/&gt;</literal> will create a "
+"<literal>STATELESS</literal> Seam component with class and name provided in "
+"the bean definition. Occasionally, such as when a <literal>FactoryBean</"
+"literal> is used, the class of the Spring bean may not be the class "
+"appearing in the bean definition. In such cases the <literal>class</literal> "
+"should be explicitly specified. A Seam component name may be explicitly "
+"specified in cases where there is potential for a naming conflict."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:115
+#, no-c-format
+msgid ""
+"The <literal>scope</literal> attribute of <literal>&lt;seam:component/&gt;</"
+"literal> may be used if you wish the Spring bean to be managed in a "
+"particular Seam scope. The Spring bean must be scoped to <literal>prototype</"
+"literal> if the Seam scope specified is anything other than "
+"<literal>STATELESS</literal>. Pre-existing Spring beans usually have a "
+"fundamentally stateless character, so this attribute is not usually needed."
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:121
+#, no-c-format
+msgid "Seam-scoped Spring beans"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:122
+#, no-c-format
+msgid ""
+"The Seam integration package also lets you use Seam&#39;s contexts as Spring "
+"2.0 style custom scopes. This lets you declare any Spring bean in any of "
+"Seam&#39;s contexts. However, note once again that Spring&#39;s component "
+"model was never architected to support statefulness, so please use this "
+"feature with great care. In particular, clustering of session or "
+"conversation scoped Spring beans is deeply problematic, and care must be "
+"taken when injecting a bean or component from a wider scope into a bean of a "
+"narrower scope."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:125
+#, no-c-format
+msgid ""
+"By specifying <literal>&lt;seam:configure-scopes/&gt;</literal> once in a "
+"Spring bean factory configuration, all of the Seam scopes will be available "
+"to Spring beans as custom scopes. To associate a Spring bean with a "
+"particular Seam scope, specify the Seam scope in the <literal>scope</"
+"literal> attribute of the bean definition."
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:128
+#, no-c-format
+msgid ""
+"&lt;!-- Only needs to be specified once per bean factory--&gt;\n"
+"&lt;seam:configure-scopes/&gt;\n"
+"\n"
+"...\n"
+"\n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope=\"seam."
+"CONVERSATION\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:129
+#, no-c-format
+msgid ""
+"The prefix of the scope name may be changed by specifying the "
+"<literal>prefix</literal> attribute in the <literal>configure-scopes</"
+"literal> definition. (The default prefix is <literal>seam.</literal>)"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:132
+#, no-c-format
+msgid ""
+"Seam-scoped Spring beans defined this way can be injected into other Spring "
+"beans without the use of <literal>&lt;seam:instance/&gt;</literal>. However, "
+"care must be taken to ensure scope impedance is maintained. The normal "
+"approach used in Spring is to specify <literal>&lt;aop:scoped-proxy/&gt;</"
+"literal> in the bean definition. However, Seam-scoped Spring beans are "
+"<emphasis>not</emphasis> compatible with <literal>&lt;aop:scoped-proxy/&gt;</"
+"literal>. So if you need to inject a Seam-scoped Spring bean into a "
+"singleton, <literal>&lt;seam:instance/&gt;</literal> must be used:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:135
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope=\"seam."
+"CONVERSATION\"/&gt;\n"
+"\n"
+"...\n"
+"\n"
+"&lt;bean id=\"someSingleton\"&gt;\n"
+"    &lt;property name=\"someSeamScopedSpringBean\"&gt;\n"
+"        &lt;seam:instance name=\"someSpringBean\" proxy=\"true\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:139
+#, no-c-format
+msgid "Spring Application Context as a Seam Component"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:140
+#, no-c-format
+msgid ""
+"Although it is possible to use the Spring <literal>ContextLoaderListener</"
+"literal> to start your application&#39;s Spring ApplicationContext there are "
+"a couple of limitations."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:145
+#, no-c-format
+msgid ""
+"the Spring ApplicationContext must be started <emphasis>after</emphasis> the "
+"<literal>SeamListener</literal>"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:150
+#, no-c-format
+msgid ""
+"it can be tricky starting a Spring ApplicationContext for use in Seam unit "
+"and integration tests"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:155
+#, no-c-format
+msgid ""
+"To overcome these two limitations the Spring integration includes a Seam "
+"component that will start a Spring ApplicationContext. To use this Seam "
+"component place the <literal>&lt;spring:context-loader/&gt;</literal> "
+"definition in the <literal>components.xml</literal>. Specify your Spring "
+"context file location in the <literal>config-locations</literal> attribute. "
+"If more than one config file is needed you can place them in the nested "
+"<literal>&lt;spring:config-locations/&gt;</literal> element following "
+"standard <literal>components.xml</literal> multi value practices."
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:158
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:spring=\"http://jboss.com/products/seam/spring\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"http://jboss.com/products/seam/components "
+"http://jboss.com/products/seam/components-1.2.xsd\n"
+"                                http://jboss.com/products/seam/spring http://"
+"jboss.com/products/seam/spring-1.2.xsd\"&gt;\n"
+"\n"
+"        &lt;spring:context-loader context-locations=\"/WEB-INF/"
+"applicationContext.xml\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Testing.pot
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Testing.pot	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Testing.pot	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,399 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-07-14 00:47+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Testing.xml:6
+#, no-c-format
+msgid "Testing Seam applications"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:7
+#, no-c-format
+msgid ""
+"Most Seam applications will need at least two kinds of automated tests: "
+"<emphasis>unit tests</emphasis>, which test a particular Seam component in "
+"isolation, and scripted <emphasis>integration tests</emphasis> which "
+"exercise all Java layers of the application (that is, everything except the "
+"view pages)."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:10
+#, no-c-format
+msgid "Both kinds of tests are very easy to write."
+msgstr ""
+
+#. Tag: title
+#: Testing.xml:14
+#, no-c-format
+msgid "Unit testing Seam components"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:15
+#, no-c-format
+msgid ""
+"All Seam components are POJOs. This is a great place to start if you want "
+"easy unit testing. And since Seam emphasises the use of bijection for inter-"
+"component interactions and access to contextual objects, it is very easy to "
+"test a Seam component outside of its normal runtime environment."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:18
+#, no-c-format
+msgid "Consider the following Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:21
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Scope(EVENT)\n"
+"@Name(\"register\")\n"
+"public class RegisterAction implements Register\n"
+"{\n"
+"   private User user;\n"
+"   private EntityManager em;\n"
+"\n"
+"   @In\n"
+"   public void setUser(User user) {\n"
+"       this.user = user;\n"
+"   }\n"
+"   \n"
+"   @PersistenceContext\n"
+"   public void setBookingDatabase(EntityManager em) {\n"
+"       this.em = em;\n"
+"   }\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = em.createQuery(\"select username from User where "
+"username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getResultList();\n"
+"      if (existing.size()==0)\n"
+"      {\n"
+"         em.persist(user);\n"
+"         return \"success\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:22
+#, no-c-format
+msgid "We could write a TestNG test for this component as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:25
+#, no-c-format
+msgid ""
+"public class RegisterActionTest\n"
+"{\n"
+"\n"
+"    @Test\n"
+"    public testRegisterAction()\n"
+"    {\n"
+"        EntityManager em = getEntityManagerFactory().createEntityManager();\n"
+"        em.getTransaction().begin();\n"
+"        \n"
+"        User gavin = new User();\n"
+"        gavin.setName(\"Gavin King\");\n"
+"        gavin.setUserName(\"1ovthafew\");\n"
+"        gavin.setPassword(\"secret\");\n"
+"        \n"
+"        RegisterAction action = new RegisterAction();\n"
+"        action.setUser(gavin);\n"
+"        action.setBookingDatabase(em);\n"
+"        \n"
+"        assert \"success\".equals( action.register() );\n"
+"        \n"
+"        em.getTransaction().commit();\n"
+"        em.close();\n"
+"    }\n"
+"    \n"
+"    \n"
+"    private EntityManagerFactory emf;\n"
+"    \n"
+"    public EntityManagerFactory getEntityManagerFactory()\n"
+"    {\n"
+"        return emf;\n"
+"    }\n"
+"    \n"
+"    @Configuration(beforeTestClass=true)\n"
+"    public void init() \n"
+"    {\n"
+"        emf = Persistence.createEntityManagerFactory"
+"(\"myResourceLocalEntityManager\");\n"
+"    }\n"
+"    \n"
+"    @Configuration(afterTestClass=true)\n"
+"    public void destroy()\n"
+"    {\n"
+"        emf.close();\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:26
+#, no-c-format
+msgid ""
+"Seam components do not usually depend directly upon container "
+"infrastructure, allowing for simplistic unit testing."
+msgstr ""
+
+#. Tag: title
+#: Testing.xml:32
+#, no-c-format
+msgid "Integration testing Seam applications"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:33
+#, no-c-format
+msgid ""
+"Integration testing is slightly more difficult. In this case, we cannot "
+"eliminate the container infrastructure; indeed, that is part of what is "
+"being tested! At the same time, we do not want to be forced to deploy our "
+"application to an application server to run the automated tests. We need to "
+"be able to reproduce just enough of the container infrastructure inside our "
+"testing environment to be able to exercise the whole application, without "
+"hurting performance too much."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:36
+#, no-c-format
+msgid ""
+"A second problem is emulating user interactions. A third problem is where to "
+"put our assertions. Some test frameworks let us test the whole application "
+"by reproducing user interactions with the web browser. These frameworks have "
+"their place, but they are not appropriate for use at development time."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:39
+#, no-c-format
+msgid ""
+"The approach taken by Seam is to let you write tests that script your "
+"components while running inside a pruned down container environment (Seam, "
+"together with the JBoss Embeddable EJB container). The role of the test "
+"script is basically to reproduce the interaction between the view and the "
+"Seam components. In other words, you get to pretend you are the JSF "
+"implementation!"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:42
+#, no-c-format
+msgid "This approach tests everything except the view."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:45
+#, no-c-format
+msgid "Let us consider a JSP view for the component we unit tested above:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:48
+#, no-c-format
+msgid ""
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Register New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;table border=\"0\"&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Username&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputText value=\"#{user.username}\"/&gt;&lt;/"
+"td&gt;\n"
+"       &lt;/tr&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Real Name&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputText value=\"#{user.name}\"/&gt;&lt;/td&gt;\n"
+"       &lt;/tr&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Password&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputSecret value=\"#{user.password}\"/&gt;&lt;/"
+"td&gt;\n"
+"       &lt;/tr&gt;\n"
+"     &lt;/table&gt;\n"
+"     &lt;h:messages/&gt;\n"
+"     &lt;h:commandButton type=\"submit\" value=\"Register\" action=\"#"
+"{register.register}\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:49
+#, no-c-format
+msgid ""
+"We want to test the registration functionality of our application (the stuff "
+"that happens when the user clicks the Register button). We will reproduce "
+"the JSF request lifecycle in an automated TestNG test:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:52
+#, no-c-format
+msgid ""
+"public class RegisterTest extends SeamTest\n"
+"{\n"
+"   \n"
+"   @Test\n"
+"   public void testRegister() throws Exception\n"
+"   {\n"
+"            \n"
+"      new FacesRequest() {\n"
+"\n"
+"         @Override\n"
+"         protected void processValidations() throws Exception\n"
+"         {\n"
+"            validateValue(\"#{user.username}\", \"1ovthafew\");\n"
+"            validateValue(\"#{user.name}\", \"Gavin King\");\n"
+"            validateValue(\"#{user.password}\", \"secret\");\n"
+"            assert !isValidationFailure();\n"
+"         }\n"
+"         \n"
+"         @Override\n"
+"         protected void updateModelValues() throws Exception\n"
+"         {\n"
+"            setValue(\"#{user.username}\", \"1ovthafew\");\n"
+"            setValue(\"#{user.name}\", \"Gavin King\");\n"
+"            setValue(\"#{user.password}\", \"secret\");\n"
+"         }\n"
+"\n"
+"         @Override\n"
+"         protected void invokeApplication()\n"
+"         {\n"
+"            assert invokeMethod(\"#{register.register}\").equals(\"success"
+"\");\n"
+"         }\n"
+"\n"
+"         @Override\n"
+"         protected void renderResponse()\n"
+"         {\n"
+"            assert getValue(\"#{user.username}\").equals(\"1ovthafew\");\n"
+"            assert getValue(\"#{user.name}\").equals(\"Gavin King\");\n"
+"            assert getValue(\"#{user.password}\").equals(\"secret\");\n"
+"         }\n"
+"         \n"
+"      }.run();\n"
+"      \n"
+"   }\n"
+"\n"
+"   ...\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:53
+#, no-c-format
+msgid ""
+"Notice that we have extended <literal>SeamTest</literal>, which provides a "
+"Seam environment for our components, and written our test script as an "
+"anonymous class that extends <literal>SeamTest.FacesRequest</literal>, which "
+"provides an emulated JSF request lifecycle. (There is also a "
+"<literal>SeamTest.NonFacesRequest</literal> for testing GET requests.) We "
+"have written our code in methods which are named for the various JSF phases, "
+"to emulate the calls that JSF would make to our components. Then we have "
+"thrown in various assertions."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:56
+#, no-c-format
+msgid ""
+"You will find plenty of integration tests for the Seam example applications "
+"which demonstrate more complex cases. There are instructions for running "
+"these tests using Ant, or using the TestNG plugin for eclipse:"
+msgstr ""
+
+#. Tag: title
+#: Testing.xml:68
+#, no-c-format
+msgid "Using mocks in integration tests"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:69
+#, no-c-format
+msgid ""
+"Occasionally, we need to be able to replace the implementation of some Seam "
+"component that depends upon resources which are not available in the "
+"integration test environment. For example, suppose we have some Seam "
+"component which is a facade to some payment processing system:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:72
+#, no-c-format
+msgid ""
+"@Name(\"paymentProcessor\")\n"
+"public class PaymentProcessor {\n"
+"    public boolean processPayment(Payment payment) { .... }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:73
+#, no-c-format
+msgid "For integration tests, we can mock out this component as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:76
+#, no-c-format
+msgid ""
+"@Name(\"paymentProcessor\")\n"
+"@Install(precedence=MOCK)\n"
+"public class MockPaymentProcessor extends PaymentProcessor {\n"
+"    public void processPayment(Payment payment) {\n"
+"        return true;\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:77
+#, no-c-format
+msgid ""
+"Since the <literal>MOCK</literal> precedence is higher than the default "
+"precedence of application components, Seam will install the mock "
+"implementation whenever it is in the classpath. When deployed into "
+"production, the mock implementation is absent, so the real component will be "
+"installed."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Text.pot
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Text.pot	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Text.pot	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,363 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-07-14 00:47+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Text.xml:6
+#, no-c-format
+msgid "Seam Text"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:7
+#, no-c-format
+msgid ""
+"Collaboration-oriented websites require a human-friendly markup language for "
+"easy entry of formatted text in forum posts, wiki pages, blogs, comments, "
+"etc. Seam provides the <literal>&lt;s:formattedText/&gt;</literal> control "
+"for display of formatted text that conforms to the <emphasis>Seam Text</"
+"emphasis> language. Seam Text is implemented using an ANTLR-based parser. "
+"You do not need to know anything about ANTLR to use it, however."
+msgstr ""
+
+#. Tag: title
+#: Text.xml:11
+#, no-c-format
+msgid "Basic fomatting"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:12
+#, no-c-format
+msgid "Here is a simple example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:15
+#, no-c-format
+msgid ""
+"It&#39;s easy to make *bold text*, /italic text/, |monospace|, \n"
+"~deleted text~, super^scripts^ or _underlines_."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:16
+#, no-c-format
+msgid ""
+"If we display this using <literal>&lt;s:formattedText/&gt;</literal>, we "
+"will get the following HTML produced:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:19
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"It&#39;s easy to make &lt;b&gt;bold text&lt;/b&gt;, &lt;i&gt;italic text&lt;/"
+"i&gt;, &lt;tt&gt;monospace&lt;/tt&gt;\n"
+"&lt;del&gt;deleted text&lt;/del&gt;, super&lt;sup&gt;scripts&lt;/sup&gt; or "
+"&lt;u&gt;underlines&lt;/u&gt;.\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:20
+#, no-c-format
+msgid ""
+"We can use a blank line to indicate a new paragraph, and <literal>+</"
+"literal> to indicate a heading:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:23
+#, no-c-format
+msgid ""
+"+This is a big heading\n"
+"You /must/ have some text following a heading!\n"
+" \n"
+"++This is a smaller heading\n"
+"This is the first paragraph. We can split it across multiple \n"
+"lines, but we must end it with a blank line.\n"
+"\n"
+"This is the second paragraph."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:24
+#, no-c-format
+msgid ""
+"A simple newline is ignored, you need an additional blank line to wrap text "
+"into a new paragraph. This is the HTML that results:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:27
+#, no-c-format
+msgid ""
+"&lt;h1&gt;This is a big heading&lt;/h1&gt;\n"
+"&lt;p&gt;\n"
+"You &lt;i&gt;must&lt;/i&gt; have some text following a heading!\n"
+"&lt;/p&gt;\n"
+" \n"
+"&lt;h2&gt;This is a smaller heading&lt;/h2&gt;\n"
+"&lt;p&gt;\n"
+"This is the first paragraph. We can split it across multiple \n"
+"lines, but we must end it with a blank line.\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"This is the second paragraph.\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:28
+#, no-c-format
+msgid ""
+"Ordered lists are created using the <literal>#</literal> character. "
+"Unordered lists use the <literal>=</literal> character:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:31
+#, no-c-format
+msgid ""
+"An ordered list:\n"
+"        \n"
+"#first item\n"
+"#second item\n"
+"#and even the /third/ item\n"
+"\n"
+"An unordered list:\n"
+"\n"
+"=an item\n"
+"=another item"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:32
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"An ordered list:\n"
+"&lt;/p&gt;\n"
+" \n"
+"&lt;ol&gt;       \n"
+"&lt;li&gt;first item&lt;/li&gt;\n"
+"&lt;li&gt;second item&lt;/li&gt;\n"
+"&lt;li&gt;and even the &lt;i&gt;third&lt;/i&gt; item&lt;/li&gt;\n"
+"&lt;/ol&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"An unordered list:\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;ul&gt;\n"
+"&lt;li&gt;an item&lt;/li&gt;\n"
+"&lt;li&gt;another item&lt;/li&gt;\n"
+"&lt;/ul&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:33
+#, no-c-format
+msgid "Quoted sections should be surrounded in double quotes:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:36
+#, no-c-format
+msgid ""
+"The other guy said:\n"
+"        \n"
+"\"Nyeah nyeah-nee \n"
+"/nyeah/ nyeah!\"\n"
+"\n"
+"But what do you think he means by \"nyeah-nee\"?"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:37
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"The other guy said:\n"
+"&lt;/p&gt;\n"
+"        \n"
+"&lt;q&gt;Nyeah nyeah-nee\n"
+"&lt;i&gt;nyeah&lt;/i&gt; nyeah!&lt;/q&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"But what do you think he means by &lt;q&gt;nyeah-nee&lt;/q&gt;?\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: title
+#: Text.xml:41
+#, no-c-format
+msgid "Entering code and text with special characters"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:42
+#, no-c-format
+msgid ""
+"Special characters such as <literal>*</literal>, <literal>|</literal> and "
+"<literal>#</literal>, along with HTML characters such as <literal>&lt;</"
+"literal>, <literal>&gt;</literal> and <literal>&amp;</literal> may be "
+"escaped using <literal>\\</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:45
+#, no-c-format
+msgid ""
+"You can write down equations like 2\\*3\\=6 and HTML tags\n"
+"like \\&lt;body\\&gt; using the escape character: \\\\."
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:46
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"You can write down equations like 2*3=6 and HTML tags\n"
+"like &lt;body&gt; using the escape character: \\.\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:47
+#, no-c-format
+msgid "And we can quote code blocks using backticks:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:50
+#, no-c-format
+msgid ""
+"My code doesn&#39;t work:\n"
+"\n"
+"`for (int i=0; i&lt;100; i--)\n"
+"{\n"
+"    doSomething();\n"
+"}`\n"
+"\n"
+"Any ideas?"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:51
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"My code doesn&#39;t work:\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;pre&gt;for (int i=0; i&lt;100; i--)\n"
+"{\n"
+"    doSomething();\n"
+"}&lt;/pre&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"Any ideas?\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: title
+#: Text.xml:55
+#, no-c-format
+msgid "Links"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:56
+#, no-c-format
+msgid "A link may be created using the following syntax:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:59
+#, no-c-format
+msgid "Go to the Seam website at [=&gt;http://jboss.com/products/seam]."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:60
+#, no-c-format
+msgid "Or, if you want to specify the text of the link:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:63
+#, no-c-format
+msgid "Go to [the Seam website=&gt;http://jboss.com/products/seam]."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:64
+#, no-c-format
+msgid ""
+"For advanced users, it is even possible to customize the Seam Text parser to "
+"understand wikiword links written using this syntax."
+msgstr ""
+
+#. Tag: title
+#: Text.xml:70
+#, no-c-format
+msgid "Entering HTML"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:71
+#, no-c-format
+msgid ""
+"Text may even include a certain limited subset of HTML (the subset is chosen "
+"to be safe from cross-site scripting attacks). This is useful for creating "
+"links:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:74
+#, no-c-format
+msgid ""
+"You might want to link to &lt;a href=\"http://jboss.com/products/seam\"&gt;"
+"something\n"
+"cool&lt;/a&gt;, or even include an image: &lt;img src=\"/logo.jpg\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:75
+#, no-c-format
+msgid "And for creating tables:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:78
+#, no-c-format
+msgid ""
+"&lt;table&gt;\n"
+"    &lt;tr&gt;&lt;td&gt;First name:&lt;/td&gt;&lt;td&gt;Gavin&lt;/td&gt;&lt;/"
+"tr&gt;\n"
+"    &lt;tr&gt;&lt;td&gt;Last name:&lt;/td&gt;&lt;td&gt;King&lt;/td&gt;&lt;/"
+"tr&gt;\n"
+"&lt;/table&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:79
+#, no-c-format
+msgid "There is much more that can be achieved if you wish."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Tools.pot
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Tools.pot	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Tools.pot	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,774 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-07-14 00:47+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Tools.xml:6
+#, no-c-format
+msgid "Seam tools"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:8
+#, no-c-format
+msgid "jBPM designer and viewer"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:9
+#, no-c-format
+msgid ""
+"The jBPM designer and viewer will let you design and view in a nice way your "
+"business processes and your pageflows. This convenient tool is part of the "
+"JBoss Developer Studio and more details can be found in the jBPM&#39;s "
+"documentation (http://docs.jboss.com/jbpm/v3/gpd/)"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:13
+#, no-c-format
+msgid "<title>Business process designer</title>"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:14
+#, no-c-format
+msgid "This tool lets you design your own business process in a graphical way."
+msgstr ""
+
+#. Tag: screeninfo
+#: Tools.xml:17 Tools.xml:34
+#, no-c-format
+msgid "<screeninfo>Business process designer</screeninfo>"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:30
+#, no-c-format
+msgid "Pageflow viewer"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:31
+#, no-c-format
+msgid ""
+"This tool will let you design to some extend your pageflows and let you "
+"build graphical views of them so you can easily share and compare ideas on "
+"how it should be designed."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:48
+#, no-c-format
+msgid "CRUD-application generator"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:49
+#, no-c-format
+msgid ""
+"This chapter, will give you a short overview of the support for Seam that is "
+"available in the Hibernate Tools. Hibernate Tools is a set of tools for "
+"working with Hibernate and related technologies, such as JBoss Seam and "
+"EJB3. The tools are available as a set of eclipse plugins and Ant tasks. You "
+"can download the Hibernate Tools from the JBoss Tools or Hibernate Tools "
+"websites."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:52
+#, no-c-format
+msgid ""
+"The specific support for Seam that is currently available is generation of a "
+"fully functional Seam based CRUD-application. The CRUD-application can be "
+"generated based on your existing Hibernate mapping files or EJB3 annotated "
+"POJO&#39;s or even fully reverse engineered from your existing database "
+"schema."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:55
+#, no-c-format
+msgid ""
+"The following sections is focused on the features required to understand for "
+"usage with Seam. The content is derived from the the Hibernate Tools "
+"reference documentation. Thus if you need more detailed information please "
+"refer to the Hibernate Tools documentation."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:59
+#, no-c-format
+msgid "Creating a Hibernate configuration file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:60
+#, no-c-format
+msgid ""
+"To be able to reverse engineer and generate code a hibernate.properties or "
+"<filename>hibernate.cfg.xml</filename> file is needed. The Hibernate Tools "
+"provide a wizard for generating the <filename>hibernate.cfg.xml</filename> "
+"file if you do not already have such file."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:63
+#, no-c-format
+msgid ""
+"Start the wizard by clicking <literal>New Wizard</literal> (Ctrl+N), select "
+"the Hibernate/Hibernate Configuration file (cfg.xml) wizard and press "
+"<literal>Next</literal>. After selecting the wanted location for the "
+"<filename>hibernate.cfg.xml</filename> file, you will see the following page:"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:74
+#, no-c-format
+msgid ""
+"Tip: The contents in the combo boxes for the JDBC driver class and JDBC URL "
+"change automatically, depending on the Dialect and actual driver you have "
+"chosen."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:77
+#, no-c-format
+msgid ""
+"Enter your configuration information in this dialog. Details about the "
+"configuration options can be found in Hibernate reference documentation."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:80
+#, no-c-format
+msgid ""
+"Press <literal>Finish</literal> to create the configuration file, after "
+"optionally creating a Console onfiguration, the <filename>hibernate.cfg.xml</"
+"filename> will be automatically opened in an editor. The last option "
+"<literal>Create Console Configuration</literal> is enabled by default and "
+"when enabled i will automatically use the <filename>hibernate.cfg.xml</"
+"filename> for the basis of a <literal>Console Configuration</literal>."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:86
+#, no-c-format
+msgid "<title>Creating a Hibernate Console configuration</title>"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:87
+#, no-c-format
+msgid ""
+"A Console Configuration describes to the Hibernate plugin which "
+"configuration files should be used to configure hibernate, including which "
+"classpath is needed to load the POJO&#39;s, JDBC drivers etc. It is required "
+"to make usage of query prototyping, reverse engineering and code generation. "
+"You can have multiple named console configurations. Normally you would just "
+"need one per project, but more (or less) is definitly possible."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:90
+#, no-c-format
+msgid ""
+"You create a console configuration by running the Console Configuration "
+"wizard, shown in the following screenshot. The same wizard will also be used "
+"if you are coming from the <filename>hibernate.cfg.xml</filename> wizard and "
+"had enabled <literal>Create Console Configuration</literal>."
+msgstr ""
+
+#. Tag: caption
+#: Tools.xml:101
+#, no-c-format
+msgid "<caption>Creating a Hibernate Console configuration</caption>"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:103
+#, no-c-format
+msgid ""
+"The following table describes the relevant settings. The wizard can "
+"automatically detect default values for most of these if you started the "
+"Wizard with the relevant java project selected"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:107
+#, no-c-format
+msgid "Hibernate Console Configuration Parameters"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:115
+#, no-c-format
+msgid "Parameter"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:120 Tools.xml:309 Tools.xml:459
+#, no-c-format
+msgid "Description"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:125
+#, no-c-format
+msgid "Auto detected value"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:134
+#, no-c-format
+msgid "Name"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:139
+#, no-c-format
+msgid "The unique name of the configuration"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:144
+#, no-c-format
+msgid "Name of the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:151
+#, no-c-format
+msgid "Property file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:156
+#, no-c-format
+msgid "Path to a hibernate.properties file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:161
+#, no-c-format
+msgid "First hibernate.properties file found in the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:168
+#, no-c-format
+msgid "Configuration file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:173
+#, no-c-format
+msgid "Path to a hibernate.cfg.xml file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:178
+#, no-c-format
+msgid "First hibernate.cfg.xml file found in the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:185
+#, no-c-format
+msgid "Enable Hibernate ejb3/annotations"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:190
+#, no-c-format
+msgid ""
+"Selecting this option enables usage of annotated classes. <filename>hbm.xml</"
+"filename> files are of course still possible to use too. This feature "
+"requires running the Eclipse IDE with a JDK 5 runtime, otherwise you will "
+"get classloading and/or version errors."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:195
+#, no-c-format
+msgid "Not enabled"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:202
+#, no-c-format
+msgid "Mapping files"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:207
+#, no-c-format
+msgid ""
+"List of additional mapping files that should be loaded. Since a "
+"<filename>hibernate.cfg.xml</filename> can also contain mappings, if these a "
+"duplicated here, you will get <errorname>Duplicate mapping</errorname> "
+"errors when using the console configuration."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:212
+#, no-c-format
+msgid ""
+"If no <filename>hibernate.cfg.xml</filename> file is found, all hbm.xml "
+"files found in the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:219
+#, no-c-format
+msgid "Classpath"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:224
+#, no-c-format
+msgid ""
+"The classpath for loading POJO and JDBC drivers. Do not add Hibernate core "
+"libraries or dependencies, they are already included. If you get "
+"ClassNotFound errors then check this list for possible missing or redundant "
+"directories/jars."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:229
+#, no-c-format
+msgid ""
+"The default build output directory and any JARs with a class implementing "
+"java.sql.Driver in the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:237
+#, no-c-format
+msgid ""
+"Clicking <literal>Finish</literal> creates the configuration and shows it in "
+"the <literal>Hibernate Configurations</literal> view"
+msgstr ""
+
+#. Tag: caption
+#: Tools.xml:248
+#, no-c-format
+msgid "Console overview"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:253
+#, no-c-format
+msgid "Reverse engineering and code generation"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:254
+#, no-c-format
+msgid ""
+"A very simple <emphasis>click-and-generate</emphasis> reverse engineering "
+"and code generation facility is available. It is this facility that allows "
+"you to generate the skeleton for a full Seam CRUD application."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:257
+#, no-c-format
+msgid ""
+"To start working with this process, start the <literal>Hibernate Code "
+"Generation</literal> which is available in the toolbar via the Hibernate "
+"icon or via the <literal>Run/Hibernate Code Generation</literal> menu item."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:261
+#, no-c-format
+msgid "Code Generation Launcher"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:262
+#, no-c-format
+msgid ""
+"When you click on <literal>Hibernate Code Generation</literal> the standard "
+"Eclipse launcher dialog will appear. In this dialog you can create, edit and "
+"delete named Hibernate code generation <emphasis>launchers</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:273
+#, no-c-format
+msgid ""
+"The dialog has the standard tabs <literal>Refresh</literal> and "
+"<literal>Common</literal> that can be used to configure which directories "
+"should be automatically refreshed and various general settings launchers, "
+"such as saving them in a project for sharing the launcher within a team."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:284
+#, no-c-format
+msgid ""
+"The first time you create a code generation launcher you should give it a "
+"meaningfull name, otherwise the default prefix <literal>New_Generation</"
+"literal> will be used."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:288
+#, no-c-format
+msgid ""
+"he <literal>At least one exporter option must be selected</literal> is just "
+"a warning stating that for this launch to work you need to select an "
+"exporter on the Exporter tab. When an exporter has been selected the warning "
+"will disappear."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:292
+#, no-c-format
+msgid "On the <literal>Main</literal> tab you the following fields:"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:296
+#, no-c-format
+msgid "Code generation \"Main\" tab fields"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:304 Tools.xml:454
+#, no-c-format
+msgid "Field"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:318
+#, no-c-format
+msgid "Console Configuration"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:323
+#, no-c-format
+msgid ""
+"The name of the console configuration which should be used when code "
+"generating."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:330
+#, no-c-format
+msgid "Output directory"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:335
+#, no-c-format
+msgid ""
+"Path to a directory into where all output will be written by default. Be "
+"aware that existing files will be overwritten, so be sure to specify the "
+"correct directory."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:342
+#, no-c-format
+msgid "Reverse engineer from JDBC Connection"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:347
+#, no-c-format
+msgid ""
+"If enabled the tools will reverse engineer the database available via the "
+"connection information in the selected Hibernate Console Configuration and "
+"generate code based on the database schema. If not enabled the code "
+"generation will just be based on the mappings already specified in the "
+"Hibernate Console configuration."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:354
+#, no-c-format
+msgid "Package"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:359
+#, no-c-format
+msgid ""
+"The package name here is used as the default package name for any entities "
+"found when reverse engineering."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:366
+#, no-c-format
+msgid "reveng.xml"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:371
+#, no-c-format
+msgid ""
+"Path to a reveng.xml file. A reveng.xml file allows you to control certain "
+"aspects of the reverse engineering. For example, how jdbc types are mapped "
+"to hibernate types and especially important which tables are included/"
+"excluded from the process. Clicking \"setup\" allows you to select an "
+"existing reveng.xml file or create a new one.."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:378
+#, no-c-format
+msgid "reveng. strategy"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:383
+#, no-c-format
+msgid ""
+"If <filename>reveng.xml</filename> does not provide enough customization you "
+"can provide your own implementation of an ReverseEngineeringStrategy. The "
+"class need to be in the claspath of the Console Configuration, otherwise you "
+"will get class not found exceptions."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:390
+#, no-c-format
+msgid "Generate basic typed composite ids"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:395
+#, no-c-format
+msgid ""
+"This field should always be enabled when generating the Seam CRUD "
+"application. For a table that has a multi-colum primary key, a &lt;composite-"
+"id&gt; mapping will always be created. If this option is enabled and there "
+"are matching foreign-keys, each key column is still considered a basic "
+"scalar (string, long, etc.) instead of a reference to an entity. If you "
+"disable this option, a &lt;key-many-to-one&gt; mapping with be generated "
+"instead. Note: a &lt;many-to-one&gt; property is still created, but is "
+"simply marked as non-updatable and non-insertable."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:402
+#, no-c-format
+msgid "Use custom templates"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:407
+#, no-c-format
+msgid ""
+"If enabled, the Template directory will be searched first when looking up "
+"the velocity templates, allowing you to redefine how the individual "
+"templates process the hibernate mapping model."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:414
+#, no-c-format
+msgid "Template directory"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:419
+#, no-c-format
+msgid "A path to a directory with custom velocity templates."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:430
+#, no-c-format
+msgid "Exporters"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:431
+#, no-c-format
+msgid ""
+"The exporters tab is used to specify which type of code that should be "
+"generated. Each selection represents an <literal>Exporter</literal> that is "
+"responsible for generating the code, hence the name."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:442
+#, no-c-format
+msgid ""
+"The following table describes in short the various exporters. The most "
+"relevant for Seam is the <literal>JBoss Seam Skeleton</literal> application."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:446
+#, no-c-format
+msgid "Code generation <literal>Exporter</literal> tab fields"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:468
+#, no-c-format
+msgid "Generate domain code"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:473
+#, no-c-format
+msgid ""
+"Generates POJO&#39;s for all the persistent classes and components found in "
+"the given Hibernate configuration."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:480
+#, no-c-format
+msgid "JDK 1.5 constructs"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:485
+#, no-c-format
+msgid "When enabled the POJO&#39;s will use JDK 1.5 constructs."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:492
+#, no-c-format
+msgid "EJB3/JSR-220 annotations"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:497
+#, no-c-format
+msgid ""
+"When enabled the POJO&#39;s will be annotated according to the EJB3/JSR-220 "
+"persistency specification."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:504
+#, no-c-format
+msgid "Generate DAO code"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:509
+#, no-c-format
+msgid "Generates a set of DAO&#39;s for each entity found."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:516
+#, no-c-format
+msgid "Generate Mappings"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:521
+#, no-c-format
+msgid "Generate mapping (hbm.xml) files for each entity"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:528
+#, no-c-format
+msgid "Generate hibernate configuration file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:533
+#, no-c-format
+msgid ""
+"Generate a <filename>hibernate.cfg.xml</filename> file. Used to keep the "
+"hibernate.cfg.xml uptodate with any new found mapping files."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:540
+#, no-c-format
+msgid "Generate schema html-documentation"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:545
+#, no-c-format
+msgid ""
+"Generates set of html pages that documents the database schema and some of "
+"the mappings."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:552
+#, no-c-format
+msgid "Generate JBoss Seam skeleton app (beta)"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:557
+#, no-c-format
+msgid ""
+"Generates a complete JBoss Seam skeleton app. The generation will include "
+"annotated POJO&#39;s, Seam controller beans and a JSP for the presentation "
+"layer. See the generated readme.txt for how to use it."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:561
+#, no-c-format
+msgid ""
+"This exporter generates a full application, including a <filename>build.xml</"
+"filename> thus you will get the best results if you use an output directory "
+"which is the root of your project."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:573
+#, no-c-format
+msgid "Generating and using the code"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:574
+#, no-c-format
+msgid ""
+"When you have finished filling out the settings, simply press <literal>Run</"
+"literal> to start the generation of code. This might take a little while if "
+"you are reverse engineering from a database."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:577
+#, no-c-format
+msgid ""
+"When the generation have finished you should now have a complete skeleton "
+"Seam application in the output directory. In the output directory there is a "
+"<filename>readme.txt</filename> file describing the steps needed to deploy "
+"and run the example."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:580
+#, no-c-format
+msgid ""
+"If you want to regenerate/update the skeleton code then simply run the code "
+"generation again by selecting the <literal>Hibernate Code Generation</"
+"literal> in the toolbar or <literal>Run</literal> menu. Enjoy."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Tutorial.pot
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Tutorial.pot	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Tutorial.pot	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,3922 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-07-14 00:47+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Tutorial.xml:6
+#, no-c-format
+msgid "Seam Tutorial"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:8
+#, no-c-format
+msgid "Try the examples"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:9
+#, no-c-format
+msgid ""
+"In this tutorial, we will assume that you are using the JBoss Enterprise "
+"Application Platform with Seam."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:12
+#, no-c-format
+msgid "The directory structure of each example in Seam follows this pattern:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:17
+#, no-c-format
+msgid ""
+"Web pages, images and stylesheets may be found in <filename>examples/"
+"<replaceable>registration</replaceable>/view</filename>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:22
+#, no-c-format
+msgid ""
+"Resources such as deployment descriptors and data import scripts may be "
+"found in <filename>examples/<replaceable>registration</replaceable>/"
+"resources</filename>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:27
+#, no-c-format
+msgid ""
+"Java source code may be found in <filename>examples/"
+"<replaceable>registration</replaceable>/src</filename>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:32
+#, no-c-format
+msgid ""
+"The Ant build script is <filename>examples/<replaceable>registration</"
+"replaceable>/build.xml</filename>"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:38
+#, no-c-format
+msgid "Running the examples on JBoss Enterprise Application Platform"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:39
+#, no-c-format
+msgid ""
+"First, make sure you have Ant correctly installed, with <literal>&#36;"
+"ANT_HOME</literal> and <literal>&#36;JAVA_HOME</literal> set correctly. "
+"Next, make sure you set the location of your JBoss AS installation in the "
+"<literal>build.properties</literal> file in the root folder of your Seam "
+"installation. If you haven't already done so, start JBoss AS now by typing "
+"<literal>bin/run.sh</literal> or <literal>bin/run.bat</literal> in the root "
+"directory of your JBoss installation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:42
+#, no-c-format
+msgid ""
+"By default the examples will deploy to the default configuration of the "
+"server. These examples should be deployed to the production configuration if "
+"they are to be used with JBoss Enterprise Application Platform, and the "
+"example <literal>build.xml</literal> file should be modified to reflect this "
+"before building and deploying. Two lines should be changed in this file:"
+msgstr ""
+
+#. Tag: screen
+#: Tutorial.xml:45
+#, no-c-format
+msgid ""
+"&lt;property name=\"deploy.dir\"           value=\"${jboss.home}/server/"
+"production/deploy\"/&gt;"
+msgstr ""
+
+#. Tag: screen
+#: Tutorial.xml:46
+#, no-c-format
+msgid ""
+"&lt;property name=\"webroot.dir\"         \n"
+"        value=\"${deploy.dir}/jboss-web.deployer/ROOT.war\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:47
+#, no-c-format
+msgid ""
+"Now, build and deploy the example by typing <literal>ant deploy</literal> in "
+"the <filename>examples/<replaceable>registration</replaceable></filename> "
+"directory."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:50
+#, no-c-format
+msgid ""
+"Try it out by accessing <ulink url=\"http://localhost:8080/seam-registration/"
+"\"><literal>http://localhost:8080/seam-registration/</literal></ulink> with "
+"your web browser."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:56
+#, no-c-format
+msgid "Running the examples on Tomcat"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:57
+#, no-c-format
+msgid ""
+"First, make sure you have Ant correctly installed, with <literal>&#36;"
+"ANT_HOME</literal> and <literal>&#36;JAVA_HOME</literal> set correctly. "
+"Next, make sure you set the location of your Tomcat installation in the "
+"<literal>build.properties</literal> file in the root folder of your Seam "
+"installation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:60
+#, no-c-format
+msgid ""
+"Now, build and deploy the example by typing <literal>ant deploy.tomcat</"
+"literal> in the <filename>examples/<replaceable>registration</replaceable></"
+"filename> directory."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:63
+#, no-c-format
+msgid "Finally, start Tomcat."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:66
+#, no-c-format
+msgid ""
+"Try it out by accessing <ulink url=\"http://localhost:8080/jboss-seam-"
+"registration/\"><literal>http://localhost:8080/jboss-seam-registration/</"
+"literal></ulink> with your web browser."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:69
+#, no-c-format
+msgid ""
+"When you deploy the example to Tomcat, any EJB3 components will run inside "
+"the JBoss Embeddable EJB3 container, a complete standalone EJB3 container "
+"environment."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:75
+#, no-c-format
+msgid "Running the example tests"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:76
+#, no-c-format
+msgid ""
+"Most of the examples come with a suite of TestNG integration tests. The "
+"easiest way to run the tests is to run <literal>ant testexample</literal> "
+"inside the <filename>examples/<replaceable>registration</replaceable></"
+"filename> directory. It is also possible to run the tests inside your IDE "
+"using the TestNG plugin."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:84
+#, no-c-format
+msgid "Your first Seam application: the registration example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:85
+#, no-c-format
+msgid ""
+"The registration example is a fairly trivial application that lets a new "
+"user store his username, real name and password in the database. The example "
+"is not intended to show off all of the cool functionality of Seam. However, "
+"it demonstrates the use of an EJB3 session bean as a JSF action listener, "
+"and basic configuration of Seam."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:88
+#, no-c-format
+msgid ""
+"We will go slowly, since we realize you might not yet be familiar with EJB "
+"3.0."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:91
+#, no-c-format
+msgid ""
+"The start page displays a very basic form with three input fields. Try "
+"filling them in and then submitting the form. This will save a user object "
+"in the database."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:103 Tutorial.xml:416 Tutorial.xml:558 Tutorial.xml:720
+#, no-c-format
+msgid "Understanding the code"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:104
+#, no-c-format
+msgid ""
+"The example is implemented with two JSP pages, one entity bean and one "
+"stateless session bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:115
+#, no-c-format
+msgid "Let us take a look at the code, starting from the bottom."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:119
+#, no-c-format
+msgid "The entity bean: <literal>User.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:120
+#, no-c-format
+msgid ""
+"We need an EJB entity bean for user data. This class defines "
+"<emphasis>persistence</emphasis> and <emphasis>validation</emphasis> "
+"declaratively, via annotations. It also needs some extra annotations that "
+"define the class as a Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:135
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"user\")\n"
+"@Scope(SESSION)\n"
+"@Table(name=\"users\")\n"
+"public class User implements Serializable\n"
+"{\n"
+"   private static final long serialVersionUID = 1881413500711441951L;\n"
+"   \n"
+"   private String username;\n"
+"   private String password;\n"
+"   private String name;\n"
+"   \n"
+"   public User(String name, String password, String username)\n"
+"   {\n"
+"      this.name = name;\n"
+"      this.password = password;\n"
+"      this.username = username;\n"
+"   }\n"
+"   \n"
+"   public User() {}\n"
+"   \n"
+"   @NotNull @Length(min=5, max=15)\n"
+"   public String getPassword()\n"
+"   {\n"
+"      return password;\n"
+"   }\n"
+"\n"
+"   public void setPassword(String password)\n"
+"   {\n"
+"      this.password = password;\n"
+"   }\n"
+"   \n"
+"   @NotNull\n"
+"   public String getName()\n"
+"   {\n"
+"      return name;\n"
+"   }\n"
+"\n"
+"   public void setName(String name)\n"
+"   {\n"
+"      this.name = name;\n"
+"   }\n"
+"   \n"
+"   @Id @NotNull @Length(min=5, max=15)\n"
+"   public String getUsername()\n"
+"   {\n"
+"      return username;\n"
+"   }\n"
+"\n"
+"   public void setUsername(String username)\n"
+"   {\n"
+"      this.username = username;\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:138
+#, no-c-format
+msgid ""
+"The EJB3 standard <literal>@Entity</literal> annotation indicates that the "
+"<literal>User</literal> class is an entity bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:143
+#, no-c-format
+msgid ""
+"A Seam component needs a <emphasis>component name</emphasis> specified by "
+"the <literal>@Name</literal> annotation. This name must be unique within the "
+"Seam application. When JSF asks Seam to resolve a context variable with a "
+"name that is the same as a Seam component name, and the context variable is "
+"currently undefined (null), Seam will instantiate that component, and bind "
+"the new instance to the context variable. In this case, Seam will "
+"instantiate a <literal>User</literal> the first time JSF encounters a "
+"variable named <literal>user</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:148
+#, no-c-format
+msgid ""
+"Whenever Seam instantiates a component, it binds the new instance to a "
+"context variable in the component&#39;s <emphasis>default context</"
+"emphasis>. The default context is specified using the <literal>@Scope</"
+"literal> annotation. The <literal>User</literal> bean is a session scoped "
+"component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:153
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Table</literal> annotation indicates that the "
+"<literal>User</literal> class is mapped to the <literal>users</literal> "
+"table."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:158
+#, no-c-format
+msgid ""
+"<literal>name</literal>, <literal>password</literal> and <literal>username</"
+"literal> are the persistent attributes of the entity bean. All of our "
+"persistent attributes define accessor methods. These are needed when this "
+"component is used by JSF in the render response and update model values "
+"phases."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:163
+#, no-c-format
+msgid ""
+"An empty constructor is both required by both the EJB specification and by "
+"Seam."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:168
+#, no-c-format
+msgid ""
+"The <literal>@NotNull</literal> and <literal>@Length</literal> annotations "
+"are part of the Hibernate Validator framework. Seam integrates Hibernate "
+"Validator and lets you use it for data validation (even if you are not using "
+"Hibernate for persistence)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:173
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Id</literal> annotation indicates the primary key "
+"attribute of the entity bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:180
+#, no-c-format
+msgid ""
+"The most important things to notice in this example are the <literal>@Name</"
+"literal> and <literal>@Scope</literal> annotations. These annotations "
+"establish that this class is a Seam component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:183
+#, no-c-format
+msgid ""
+"We will see below that the properties of our <literal>User</literal> class "
+"are bound to directly to JSF components and are populated by JSF during the "
+"update model values phase. We do not need any tedious glue code to copy data "
+"back and forth between the JSP pages and the entity bean domain model."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:186
+#, no-c-format
+msgid ""
+"However, entity beans should not do transaction management or database "
+"access. So we cannot use this component as a JSF action listener. For that "
+"we need a session bean."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:193
+#, no-c-format
+msgid ""
+"The stateless session bean class: <literal>RegisterAction.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:194
+#, no-c-format
+msgid ""
+"Most Seam application use session beans as JSF action listeners (you can use "
+"JavaBeans instead if you like)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:197
+#, no-c-format
+msgid ""
+"We have exactly one JSF action in our application, and one session bean "
+"method attached to it. In this case, we will use a stateless session bean, "
+"since all the state associated with our action is held by the <literal>User</"
+"literal> bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:200
+#, no-c-format
+msgid "This is the only really interesting code in the example."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:216
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"register\")\n"
+"public class RegisterAction implements Register\n"
+"{\n"
+"\n"
+"   @In\n"
+"   private User user;\n"
+"   \n"
+"   @PersistenceContext\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @Logger\n"
+"   private Log log;\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = em.createQuery(\n"
+"         \"select username from User where username=#{user.username}\")\n"
+"         .getResultList();\n"
+"         \n"
+"      if (existing.size()==0)\n"
+"      {\n"
+"         em.persist(user);\n"
+"         log.info(\"Registered new user #{user.username}\");\n"
+"         return \"/registered.jsp\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         FacesMessages.instance().add(\"User #{user.username} already exists"
+"\");\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:219
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Stateless</literal> annotation marks this class "
+"as stateless session bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:224
+#, no-c-format
+msgid ""
+"The <literal>@In</literal> annotation marks an attribute of the bean as "
+"injected by Seam. In this case, the attribute is injected from a context "
+"variable named <literal>user</literal> (the instance variable name)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:229
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@PersistenceContext</literal> annotation is used "
+"to inject the EJB3 entity manager."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:234
+#, no-c-format
+msgid ""
+"The Seam <literal>@Logger</literal> annotation is used to inject the "
+"component&#39;s <literal>Log</literal> instance."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:239
+#, no-c-format
+msgid ""
+"The action listener method uses the standard EJB3 <literal>EntityManager</"
+"literal> API to interact with the database, and returns the JSF outcome. "
+"Note that, since this is a sesson bean, a transaction is automatically begun "
+"when the <literal>register()</literal> method is called, and committed when "
+"it completes."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:244
+#, no-c-format
+msgid ""
+"Notice that Seam lets you use a JSF EL expression inside EJB-QL. Under the "
+"covers, this results in an ordinary JPA <literal>setParameter()</literal> "
+"call on the standard JPA <literal>Query</literal> object. Nice, huh?"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:249
+#, no-c-format
+msgid ""
+"The <literal>Log</literal> API lets us easily display templated log messages."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:254
+#, no-c-format
+msgid ""
+"JSF action listener methods return a string-valued outcome that determines "
+"what page will be displayed next. A null outcome (or a void action listener "
+"method) redisplays the previous page. In plain JSF, it is normal to always "
+"use a JSF <emphasis>navigation rule</emphasis> to determine the JSF view id "
+"from the outcome. For complex application this indirection is useful and a "
+"good practice. However, for very simple examples like this one, Seam lets "
+"you use the JSF view id as the outcome, eliminating the requirement for a "
+"navigation rule. <emphasis>Note that when you use a view id as an outcome, "
+"Seam always performs a browser redirect.</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:259
+#, no-c-format
+msgid ""
+"Seam provides a number of <emphasis>built-in components</emphasis> to help "
+"solve common problems. The <literal>FacesMessages</literal> component makes "
+"it easy to display templated error or success messages. Built-in Seam "
+"components may be obtained by injection, or by calling an <literal>instance()"
+"</literal> method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:266
+#, no-c-format
+msgid ""
+"Note that we did not explicitly specify a <literal>@Scope</literal> this "
+"time. Each Seam component type has a default scope if not explicitly "
+"specified. For stateless session beans, the default scope is the stateless "
+"context. Actually, <emphasis>all</emphasis> stateless session beans belong "
+"in the stateless context."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:269
+#, no-c-format
+msgid ""
+"Our session bean action listener performs the business and persistence logic "
+"for our mini-application. In more complex applications, we might need to "
+"layer the code and refactor persistence logic into a dedicated data access "
+"component. That is perfectly trivial to do. But notice that Seam does not "
+"force you into any particular strategy for application layering."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:272
+#, no-c-format
+msgid ""
+"Furthermore, notice that our session bean has simultaneous access to context "
+"associated with the web request (the form values in the <literal>User</"
+"literal> object, for example), and state held in transactional resources "
+"(the <literal>EntityManager</literal> object). This is a break from "
+"traditional J2EE architectures. Again, if you are more comfortable with the "
+"traditional J2EE layering, you can certainly implement that in a Seam "
+"application. But for many applications, it is not very useful."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:279
+#, no-c-format
+msgid "The session bean local interface: <literal>Register.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:280
+#, no-c-format
+msgid "Naturally, our session bean needs a local interface."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:283
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface Register\n"
+"{\n"
+"   public String register();\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:284
+#, no-c-format
+msgid "That is the end of the Java code. Now onto the deployment descriptors."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:290
+#, no-c-format
+msgid ""
+"The Seam component deployment descriptor: <literal>components.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:291
+#, no-c-format
+msgid ""
+"If you have used many Java frameworks before, you will be used to having to "
+"declare all your component classes in some kind of XML file that gradually "
+"grows more and more unmanageable as your project matures. You will be "
+"relieved to know that Seam does not require that application components be "
+"accompanied by XML. Most Seam applications require a very small amount of "
+"XML that does not grow very much as the project gets bigger."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:294
+#, no-c-format
+msgid ""
+"Nevertheless, it is often useful to be able to provide for <emphasis>some</"
+"emphasis> external configuration of <emphasis>some</emphasis> components "
+"(particularly the components built in to Seam). You have a couple of options "
+"here, but the most flexible option is to provide this configuration in a "
+"file called <literal>components.xml</literal>, located in the <literal>WEB-"
+"INF</literal> directory. We will use the <literal>components.xml</literal> "
+"file to tell Seam how to find our EJB components in JNDI:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:297
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"&gt;\n"
+"     &lt;core:init jndi-pattern=\"@jndiPattern@\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:298
+#, no-c-format
+msgid ""
+"This code configures a property named <literal>jndiPattern</literal> of a "
+"built-in Seam component named <literal>org.jboss.seam.core.init</literal>."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:304
+#, no-c-format
+msgid "The web deployment description: <literal>web.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:305
+#, no-c-format
+msgid ""
+"The presentation layer for our mini-application will be deployed in a WAR. "
+"So we will need a web deployment descriptor."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:308
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;web-app version=\"2.5\"\n"
+"    xmlns=\"http://java.sun.com/xml/ns/javaee\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n"
+"        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\"&gt;\n"
+"\n"
+"    &lt;!- - Seam - -&gt;\n"
+"\n"
+"    &lt;listener&gt;\n"
+"        &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/"
+"listener-class&gt;\n"
+"    &lt;/listener&gt;\n"
+"    \n"
+"     &lt;listener&gt;\n"
+"         &lt;listener-class&gt;com.sun.faces.config.ConfigureListener&lt;/"
+"listener-class&gt;\n"
+"    &lt;/listener&gt;\n"
+"\n"
+"    &lt;context-param&gt;\n"
+"        &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-"
+"name&gt;\n"
+"        &lt;param-value&gt;client&lt;/param-value&gt;\n"
+"    &lt;/context-param&gt;\n"
+"\n"
+"    &lt;context-param&gt;\n"
+"        &lt;param-name&gt;javax.faces.DEFAULT_SUFFIX&lt;/param-name&gt;\n"
+"        &lt;param-value&gt;.jspx&lt;/param-value&gt;\n"
+"    &lt;/context-param&gt;\n"
+"\n"
+"        &lt;servlet&gt;\n"
+"                &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;\n"
+"                &lt;servlet-class&gt;javax.faces.webapp.FacesServlet&lt;/"
+"servlet-class&gt;\n"
+"                &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;\n"
+"        &lt;/servlet&gt;\n"
+"\n"
+"        <!-- Faces Servlet Mapping -->\n"
+"        &lt;servlet-mapping&gt;\n"
+"                &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;\n"
+"                &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;\n"
+"        &lt;/servlet-mapping&gt;\n"
+"\n"
+"&lt;/web-app&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:309
+#, no-c-format
+msgid ""
+"This <literal>web.xml</literal> file configures Seam and Glassfish. The "
+"configuration you see here is pretty much identical in all Seam applications."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:315
+#, no-c-format
+msgid "The JSF configration: <literal>faces-config.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:316
+#, no-c-format
+msgid ""
+"All Seam applications use JSF views as the presentation layer. So we will "
+"need <literal>faces-config.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:319
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;!DOCTYPE faces-config \n"
+"PUBLIC \"-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN\"\n"
+"                            \"http://java.sun.com/dtd/web-facesconfig_1_0.dtd"
+"\"&gt;\n"
+"&lt;faces-config&gt;\n"
+"\n"
+"    &lt;!- - A phase listener is needed by all Seam applications - -&gt;\n"
+"    \n"
+"    &lt;lifecycle&gt;\n"
+"        &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-"
+"listener&gt;\n"
+"    &lt;/lifecycle&gt;\n"
+"\n"
+"&lt;/faces-config&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:320
+#, no-c-format
+msgid ""
+"The <literal>faces-config.xml</literal> file integrates Seam into JSF. Note "
+"that we do not need any JSF managed bean declarations; the managed beans are "
+"the Seam components. In Seam applications, the <literal>faces-config.xml</"
+"literal> is used much less often than in plain JSF."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:323
+#, no-c-format
+msgid ""
+"In fact, once you have all the basic descriptors set up, the <emphasis>only</"
+"emphasis> XML you need to write as you add new functionality to a Seam "
+"application is the navigation rules, and possibly jBPM process definitions. "
+"Seam takes the view that <emphasis>process flow</emphasis> and "
+"<emphasis>configuration data</emphasis> are the only things that truly "
+"belong in XML."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:326
+#, no-c-format
+msgid ""
+"In this simple example, we do not even need a navigation rule, since we "
+"decided to embed the view id in our action code."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:331
+#, no-c-format
+msgid "The EJB deployment descriptor: <literal>ejb-jar.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:332
+#, no-c-format
+msgid ""
+"The <literal>ejb-jar.xml</literal> file integrates Seam with EJB3, by "
+"attaching the <literal>SeamInterceptor</literal> to all session beans in the "
+"archive."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:335
+#, no-c-format
+msgid ""
+"&lt;ejb-jar xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \n"
+"         xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee \n"
+"                           http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"
+"\"\n"
+"         version=\"3.0\"&gt;\n"
+"         \n"
+"   &lt;interceptors&gt;\n"
+"     &lt;interceptor&gt;\n"
+"       &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"     &lt;/interceptor&gt;\n"
+"   &lt;/interceptors&gt;\n"
+"   \n"
+"   &lt;assembly-descriptor&gt;\n"
+"      &lt;interceptor-binding&gt;\n"
+"         &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"         &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"      &lt;/interceptor-binding&gt;\n"
+"   &lt;/assembly-descriptor&gt;\n"
+"   \n"
+"&lt;/ejb-jar&gt;"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:339
+#, no-c-format
+msgid ""
+"The EJB persistence deployment descriptor: <literal>persistence.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:340
+#, no-c-format
+msgid ""
+"The <literal>persistence.xml</literal> file tells the EJB persistence "
+"provider where to find the datasource, and contains some vendor-specific "
+"settings. In this case, enables automatic schema export at startup time."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:343
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;persistence xmlns=\"http://java.sun.com/xml/ns/persistence\" \n"
+"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence \n"
+"                           http://java.sun.com/xml/ns/persistence/"
+"persistence_1_0.xsd\" \n"
+"             version=\"1.0\"&gt;\n"
+"    &lt;persistence-unit name=\"userDatabase\"&gt;\n"
+"      &lt;provider&gt;org.hibernate.ejb.HibernatePersistence&lt;/"
+"provider&gt;\n"
+"      &lt;jta-data-source&gt;java:/DefaultDS&lt;/jta-data-source&gt;\n"
+"      &lt;properties&gt;\n"
+"         &lt;property name=\"hibernate.hbm2ddl.auto\" value=\"create-drop\"/"
+"&gt;\n"
+"      &lt;/properties&gt;\n"
+"    &lt;/persistence-unit&gt;\n"
+"&lt;/persistence&gt;"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:347
+#, no-c-format
+msgid ""
+"The view: <literal>register.jsp</literal> and <literal>registered.jsp</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:348
+#, no-c-format
+msgid ""
+"The view pages for a Seam application could be implemented using any "
+"technology that supports JSF. In this example we use JSP, since it is "
+"familiar to most developers and since we have minimal requirements here "
+"anyway. (But if you take our advice, you will use Facelets for your own "
+"applications.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:351
+#, no-c-format
+msgid ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://jboss.com/products/seam/taglib\" prefix=\"s\" %"
+"&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Register New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;table border=\"0\"&gt;\n"
+"       &lt;s:validateAll&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Username&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputText value=\"#{user.username}\"/&gt;&lt;/"
+"td&gt;\n"
+"         &lt;/tr&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Real Name&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputText value=\"#{user.name}\"/&gt;&lt;/td&gt;\n"
+"         &lt;/tr&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Password&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputSecret value=\"#{user.password}\"/&gt;&lt;/"
+"td&gt;\n"
+"         &lt;/tr&gt;\n"
+"       &lt;/s:validateAll&gt;\n"
+"     &lt;/table&gt;\n"
+"     &lt;h:messages/&gt;\n"
+"     &lt;h:commandButton type=\"submit\" value=\"Register\" action=\"#"
+"{register.register}\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:352
+#, no-c-format
+msgid ""
+"The only thing here that is specific to Seam is the <literal>&lt;s:"
+"validateAll&gt;</literal> tag. This JSF component tells JSF to validate all "
+"the contained input fields against the Hibernate Validator annotations "
+"specified on the entity bean."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:355
+#, no-c-format
+msgid ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" %&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Successfully Registered New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"    Welcome, &lt;h:outputText value=\"#{user.name}\"/&gt;, \n"
+"    you are successfully registered as &lt;h:outputText value=\"#{user."
+"username}\"/&gt;.\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:356
+#, no-c-format
+msgid ""
+"This is a boring old JSP pages using standard JSF components. There is "
+"nothing specific to Seam here."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:362
+#, no-c-format
+msgid "The EAR deployment descriptor: <literal>application.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:363
+#, no-c-format
+msgid ""
+"Finally, since our application is deployed as an EAR, we need a deployment "
+"descriptor there, too."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:366
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;application xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee \n"
+"                                   http://java.sun.com/xml/ns/javaee/"
+"application_5.xsd\"\n"
+"             version=\"5\"&gt;\n"
+"             \n"
+"    &lt;display-name&gt;Seam Registration&lt;/display-name&gt;\n"
+"\n"
+"    &lt;module&gt;\n"
+"        &lt;web&gt;\n"
+"            &lt;web-uri&gt;jboss-seam-registration.war&lt;/web-uri&gt;\n"
+"            &lt;context-root&gt;/seam-registration&lt;/context-root&gt;\n"
+"        &lt;/web&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;ejb&gt;jboss-seam-registration.jar&lt;/ejb&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;jboss-seam.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;el-ri.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    \n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:367
+#, no-c-format
+msgid ""
+"This deployment descriptor links modules in the enterprise archive and binds "
+"the web application to the context root <literal>/seam-registration</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:379 Tutorial.xml:530 Tutorial.xml:695 Tutorial.xml:812
+#, no-c-format
+msgid "How it works"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:380
+#, no-c-format
+msgid ""
+"When the form is submitted, JSF asks Seam to resolve the variable named "
+"<literal>user</literal>. Since there is no value already bound to that name "
+"(in any Seam context), Seam instantiates the <literal>user</literal> "
+"component, and returns the resulting <literal>User</literal> entity bean "
+"instance to JSF after storing it in the Seam session context."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:383
+#, no-c-format
+msgid ""
+"The form input values are now validated against the Hibernate Validator "
+"constraints specified on the <literal>User</literal> entity. If the "
+"constraints are violated, JSF redisplays the page. Otherwise, JSF binds the "
+"form input values to properties of the <literal>User</literal> entity bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:386
+#, no-c-format
+msgid ""
+"Next, JSF asks Seam to resolve the variable named <literal>register</"
+"literal>. Seam finds the <literal>RegisterAction</literal> stateless session "
+"bean in the stateless context and returns it. JSF invokes the "
+"<literal>register()</literal> action listener method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:389
+#, no-c-format
+msgid ""
+"Seam intercepts the method call and injects the <literal>User</literal> "
+"entity from the Seam session context, before continuing the invocation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:392
+#, no-c-format
+msgid ""
+"The <literal>register()</literal> method checks if a user with the entered "
+"username already exists. If so, an error message is queued with the "
+"<literal>FacesMessages</literal> component, and a null outcome is returned, "
+"causing a page redisplay. The <literal>FacesMessages</literal> component "
+"interpolates the JSF expression embedded in the message string and adds a "
+"JSF <literal>FacesMessage</literal> to the view."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:395
+#, no-c-format
+msgid ""
+"If no user with that username exists, the <literal>\"/registered.jsp\"</"
+"literal> outcome triggers a browser redirect to the <literal>registered.jsp</"
+"literal> page. When JSF comes to render the page, it asks Seam to resolve "
+"the variable named <literal>user</literal> and uses property values of the "
+"returned <literal>User</literal> entity from Seam&#39;s session scope."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:403
+#, no-c-format
+msgid "Clickable lists in Seam: the messages example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:404
+#, no-c-format
+msgid ""
+"Clickable lists of database search results are such an important part of any "
+"online application that Seam provides special functionality on top of JSF to "
+"make it easier to query data using EJB-QL or HQL and display it as a "
+"clickable list using a JSF <literal>&lt;h:dataTable&gt;</literal>. The "
+"messages example demonstrates this functionality."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:417
+#, no-c-format
+msgid ""
+"The message list example has one entity bean, <literal>Message</literal>, "
+"one session bean, <literal>MessageListBean</literal> and one JSP."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:421
+#, no-c-format
+msgid "The entity bean: <literal>Message.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:422
+#, no-c-format
+msgid ""
+"The <literal>Message</literal> entity defines the title, text, date and time "
+"of a message, and a flag indicating whether the message has been read:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:426
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"message\")\n"
+"@Scope(EVENT)\n"
+"public class Message implements Serializable\n"
+"{\n"
+"   private Long id;\n"
+"   private String title;\n"
+"   private String text;\n"
+"   private boolean read;\n"
+"   private Date datetime;\n"
+"   \n"
+"   @Id @GeneratedValue\n"
+"   public Long getId() {\n"
+"      return id;\n"
+"   }\n"
+"   public void setId(Long id) {\n"
+"      this.id = id;\n"
+"   }\n"
+"   \n"
+"   @NotNull @Length(max=100)\n"
+"   public String getTitle() {\n"
+"      return title;\n"
+"   }\n"
+"   public void setTitle(String title) {\n"
+"      this.title = title;\n"
+"   }\n"
+"   \n"
+"   @NotNull @Lob\n"
+"   public String getText() {\n"
+"      return text;\n"
+"   }\n"
+"   public void setText(String text) {\n"
+"      this.text = text;\n"
+"   }\n"
+"   \n"
+"   @NotNull\n"
+"   public boolean isRead() {\n"
+"      return read;\n"
+"   }\n"
+"   public void setRead(boolean read) {\n"
+"      this.read = read;\n"
+"   }\n"
+"   \n"
+"   @NotNull \n"
+"   @Basic @Temporal(TemporalType.TIMESTAMP)\n"
+"   public Date getDatetime() {\n"
+"      return datetime;\n"
+"   }\n"
+"   public void setDatetime(Date datetime) {\n"
+"      this.datetime = datetime;\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:431
+#, no-c-format
+msgid "The stateful session bean: <literal>MessageManagerBean.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:432
+#, no-c-format
+msgid ""
+"Just like in the previous example, we have a session bean, "
+"<literal>MessageManagerBean</literal>, which defines the action listener "
+"methods for the two buttons on our form. One of the buttons selects a "
+"message from the list, and displays that message. The other button deletes a "
+"message. So far, this is not so different to the previous example."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:435
+#, no-c-format
+msgid ""
+"But <literal>MessageManagerBean</literal> is also responsible for fetching "
+"the list of messages the first time we navigate to the message list page. "
+"There are various ways the user could navigate to the page, and not all of "
+"them are preceded by a JSF action&mdash;the user might have bookmarked the "
+"page, for example. So the job of fetching the message list takes place in a "
+"Seam <emphasis>factory method</emphasis>, instead of in an action listener "
+"method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:438
+#, no-c-format
+msgid ""
+"We want to cache the list of messages in memory between server requests, so "
+"we will make this a stateful session bean."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:453
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Scope(SESSION)\n"
+"@Name(\"messageManager\")\n"
+"public class MessageManagerBean implements Serializable, MessageManager\n"
+"{\n"
+"\n"
+"   @DataModel\n"
+"   private List&lt;Message&gt; messageList;\n"
+"   \n"
+"   @DataModelSelection\n"
+"   @Out(required=false)\n"
+"   private Message message;\n"
+"   \n"
+"   @PersistenceContext(type=EXTENDED)\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @Factory(\"messageList\")\n"
+"   public void findMessages()\n"
+"   {\n"
+"      messageList = em.createQuery(\"from Message msg order by msg.datetime "
+"desc\").getResultList();\n"
+"   }\n"
+"   \n"
+"   public void select()\n"
+"   {\n"
+"      message.setRead(true);\n"
+"   }\n"
+"   \n"
+"   public void delete()\n"
+"   {\n"
+"      messageList.remove(message);\n"
+"      em.remove(message);\n"
+"      message=null;\n"
+"   }\n"
+"   \n"
+"   @Remove @Destroy\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:456
+#, no-c-format
+msgid ""
+"The <literal>@DataModel</literal> annotation exposes an attibute of type "
+"<literal>java.util.List</literal> to the JSF page as an instance of "
+"<literal>javax.faces.model.DataModel</literal>. This allows us to use the "
+"list in a JSF <literal>&lt;h:dataTable&gt;</literal> with clickable links "
+"for each row. In this case, the <literal>DataModel</literal> is made "
+"available in a session context variable named <literal>messageList</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:461
+#, no-c-format
+msgid ""
+"The <literal>@DataModelSelection</literal> annotation tells Seam to inject "
+"the <literal>List</literal> element that corresponded to the clicked link."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:466
+#, no-c-format
+msgid ""
+"The <literal>@Out</literal> annotation then exposes the selected value "
+"directly to the page. So every time a row of the clickable list is selected, "
+"the <literal>Message</literal> is injected to the attribute of the stateful "
+"bean, and the subsequently <emphasis>outjected</emphasis> to the event "
+"context variable named <literal>message</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:471
+#, no-c-format
+msgid ""
+"This stateful bean has an EJB3 <emphasis>extended persistence context</"
+"emphasis>. The messages retrieved in the query remain in the managed state "
+"as long as the bean exists, so any subsequent method calls to the stateful "
+"bean can update them without needing to make any explicit call to the "
+"<literal>EntityManager</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:476
+#, no-c-format
+msgid ""
+"The first time we navigate to the JSP page, there will be no value in the "
+"<literal>messageList</literal> context variable. The <literal>@Factory</"
+"literal> annotation tells Seam to create an instance of "
+"<literal>MessageManagerBean</literal> and invoke the <literal>findMessages()"
+"</literal> method to initialize the value. We call <literal>findMessages()</"
+"literal> a <emphasis>factory method</emphasis> for <literal>messages</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:481
+#, no-c-format
+msgid ""
+"The <literal>select()</literal> action listener method marks the selected "
+"<literal>Message</literal> as read, and updates it in the database."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:486
+#, no-c-format
+msgid ""
+"The <literal>delete()</literal> action listener method removes the selected "
+"<literal>Message</literal> from the database."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:491
+#, no-c-format
+msgid ""
+"All stateful session bean Seam components <emphasis>must</emphasis> have a "
+"method marked <literal>@Remove @Destroy</literal> to ensure that Seam will "
+"remove the stateful bean when the Seam context ends, and clean up any server-"
+"side state."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:499
+#, no-c-format
+msgid ""
+"Note that this is a session-scoped Seam component. It is associated with the "
+"user login session, and all requests from a login session share the same "
+"instance of the component. (In Seam applications, we usually use session-"
+"scoped components sparingly.)"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:505
+#, no-c-format
+msgid ""
+"The session bean local interface: <literal>MessageManager.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:506
+#, no-c-format
+msgid "All session beans have a business interface, of course."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:509
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface MessageManager\n"
+"{\n"
+"   public void findMessages();\n"
+"   public void select();\n"
+"   public void delete();\n"
+"   public void destroy();\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:510
+#, no-c-format
+msgid "From now on, we will not show local interfaces in our code examples."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:513
+#, no-c-format
+msgid ""
+"Let us skip over <literal>components.xml</literal>, <literal>persistence."
+"xml</literal>, <literal>web.xml</literal>, <literal>ejb-jar.xml</literal>, "
+"<literal>faces-config.xml</literal> and <literal>application.xml</literal> "
+"since they are much the same as the previous example, and go straight to the "
+"JSP."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:519
+#, no-c-format
+msgid "The view: <literal>messages.jsp</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:520
+#, no-c-format
+msgid ""
+"The JSP page is a straightforward use of the JSF <literal>&lt;h:dataTable&gt;"
+"</literal> component. Again, nothing specific to Seam."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:523
+#, no-c-format
+msgid ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" %&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Messages&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;h2&gt;Message List&lt;/h2&gt;\n"
+"     &lt;h:outputText value=\"No messages to display\" rendered=\"#"
+"{messageList.rowCount==0}\"/&gt;\n"
+"     &lt;h:dataTable var=\"msg\" value=\"#{messageList}\" rendered=\"#"
+"{messageList.rowCount&gt;0}\"&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Read\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:selectBooleanCheckbox value=\"#{msg.read}\" disabled=\"true"
+"\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Title\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:commandLink value=\"#{msg.title}\" action=\"#"
+"{messageManager.select}\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Date/Time\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:outputText value=\"#{msg.datetime}\"&gt;\n"
+"              &lt;f:convertDateTime type=\"both\" dateStyle=\"medium\" "
+"timeStyle=\"short\"/&gt;\n"
+"           &lt;/h:outputText&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;h:commandButton value=\"Delete\" action=\"#{messageManager."
+"delete}\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"     &lt;/h:dataTable&gt;\n"
+"     &lt;h3&gt;&lt;h:outputText value=\"#{message.title}\"/&gt;&lt;/h3&gt;\n"
+"     &lt;div&gt;&lt;h:outputText value=\"#{message.text}\"/&gt;&lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:531
+#, no-c-format
+msgid ""
+"The first time we navigate to the <literal>messages.jsp</literal> page, "
+"whether by a JSF postback (faces request) or a direct browser GET request "
+"(non-faces request), the page will try to resolve the <literal>messageList</"
+"literal> context variable. Since this context variable is not initialized, "
+"Seam will call the factory method <literal>findMessages()</literal>, which "
+"performs a query against the database and results in a <literal>DataModel</"
+"literal> being outjected. This <literal>DataModel</literal> provides the row "
+"data needed for rendering the <literal>&lt;h:dataTable&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:534
+#, no-c-format
+msgid ""
+"When the user clicks the <literal>&lt;h:commandLink&gt;</literal>, JSF calls "
+"the <literal>select()</literal> action listener. Seam intercepts this call "
+"and injects the selected row data into the <literal>message</literal> "
+"attribute of the <literal>messageManager</literal> component. The action "
+"listener fires, marking the selected <literal>Message</literal> as read. At "
+"the end of the call, Seam outjects the selected <literal>Message</literal> "
+"to the context variable named <literal>message</literal>. Next, the EJB "
+"container commits the transaction, and the change to the <literal>Message</"
+"literal> is flushed to the database. Finally, the page is re-rendered, "
+"redisplaying the message list, and displaying the selected message below it."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:537
+#, no-c-format
+msgid ""
+"If the user clicks the <literal>&lt;h:commandButton&gt;</literal>, JSF calls "
+"the <literal>delete()</literal> action listener. Seam intercepts this call "
+"and injects the selected row data into the <literal>message</literal> "
+"attribute of the <literal>messageList</literal> component. The action "
+"listener fires, removing the selected <literal>Message</literal> from the "
+"list, and also calling <literal>remove()</literal> on the "
+"<literal>EntityManager</literal>. At the end of the call, Seam refreshes the "
+"<literal>messageList</literal> context variable and clears the context "
+"variable named <literal>message</literal>. The EJB container commits the "
+"transaction, and deletes the <literal>Message</literal> from the database. "
+"Finally, the page is re-rendered, redisplaying the message list."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:545
+#, no-c-format
+msgid "Seam and jBPM: the todo list example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:546
+#, no-c-format
+msgid ""
+"jBPM provides sophisticated functionality for workflow and task management. "
+"To get a small taste of how jBPM integrates with Seam, we will show you a "
+"simple <emphasis>todo list</emphasis> application. Since managing lists of "
+"tasks is such core functionality for jBPM, there is hardly any Java code at "
+"all in this example."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:559
+#, no-c-format
+msgid ""
+"The center of this example is the jBPM process definition. There are also "
+"two JSPs and two trivial JavaBeans (There was no reason to use session "
+"beans, since they do not access the database, or have any other "
+"transactional behavior). Let us start with the process definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:571
+#, no-c-format
+msgid ""
+"&lt;process-definition name=\"todo\"&gt;\n"
+"   \n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"todo\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;task-node name=\"todo\"&gt;\n"
+"      &lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"         &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"      &lt;/task&gt;\n"
+"      &lt;transition to=\"done\"/&gt;\n"
+"   &lt;/task-node&gt;\n"
+"   \n"
+"   &lt;end-state name=\"done\"/&gt;\n"
+"   \n"
+"&lt;/process-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:574
+#, no-c-format
+msgid ""
+"The <literal>&lt;start-state&gt;</literal> node represents the logical start "
+"of the process. When the process starts, it immediately transitions to the "
+"<literal>todo</literal> node."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:579
+#, no-c-format
+msgid ""
+"The <literal>&lt;task-node&gt;</literal> node represents a <emphasis>wait "
+"state</emphasis>, where business process execution pauses, waiting for one "
+"or more tasks to be performed."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:584
+#, no-c-format
+msgid ""
+"The <literal>&lt;task&gt;</literal> element defines a task to be performed "
+"by a user. Since there is only one task defined on this node, when it is "
+"complete, execution resumes, and we transition to the end state. The task "
+"gets its description from a Seam component named <literal>todoList</literal> "
+"(one of the JavaBeans)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:589
+#, no-c-format
+msgid ""
+"Tasks need to be assigned to a user or group of users when they are created. "
+"In this case, the task is assigned to the current user, which we get from a "
+"built-in Seam component named <literal>actor</literal>. Any Seam component "
+"may be used to perform task assignment."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:594
+#, no-c-format
+msgid ""
+"The <literal>&lt;end-state&gt;</literal> node defines the logical end of the "
+"business process. When execution reaches this node, the process instance is "
+"destroyed."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:601
+#, no-c-format
+msgid ""
+"If we view this process definition using the process definition editor "
+"provided by JBossIDE, this is what it looks like:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:612
+#, no-c-format
+msgid ""
+"This document defines our <emphasis>business process</emphasis> as a graph "
+"of nodes. This is the most trivial possible business process: there is one "
+"<emphasis>task</emphasis> to be performed, and when that task is complete, "
+"the business process ends."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:615
+#, no-c-format
+msgid ""
+"The first JavaBean handles the login screen <literal>login.jsp</literal>. "
+"Its job is just to initialize the jBPM actor id using the <literal>actor</"
+"literal> component. (In a real application, it would also need to "
+"authenticate the user.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:618
+#, no-c-format
+msgid ""
+"@Name(\"login\")\n"
+"public class Login {\n"
+"   \n"
+"   @In\n"
+"   private Actor actor;\n"
+"   \n"
+"   private String user;\n"
+"\n"
+"   public String getUser() {\n"
+"      return user;\n"
+"   }\n"
+"\n"
+"   public void setUser(String user) {\n"
+"      this.user = user;\n"
+"   }\n"
+"   \n"
+"   public String login()\n"
+"   {\n"
+"      actor.setId(user);\n"
+"      return \"/todo.jsp\";\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:619
+#, no-c-format
+msgid ""
+"Here we see the use of <literal>@In</literal> to inject the built-in "
+"<literal>Actor</literal> component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:622
+#, no-c-format
+msgid "The JSP itself is trivial:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:625
+#, no-c-format
+msgid ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"%&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"%&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Login&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Login&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    &lt;h:form&gt;\n"
+"      &lt;div&gt;\n"
+"        &lt;h:inputText value=\"#{login.user}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Login\" action=\"#{login.login}\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"    &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:626
+#, no-c-format
+msgid ""
+"The second JavaBean is responsible for starting business process instances, "
+"and ending tasks."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:636
+#, no-c-format
+msgid ""
+"@Name(\"todoList\")\n"
+"public class TodoList {\n"
+"   \n"
+"   private String description;\n"
+"   \n"
+"   public String getDescription()\n"
+"   {\n"
+"      return description;\n"
+"   }\n"
+"\n"
+"   public void setDescription(String description) {\n"
+"      this.description = description;\n"
+"   }\n"
+"   \n"
+"   @CreateProcess(definition=\"todo\")\n"
+"   public void createTodo() {}\n"
+"   \n"
+"   @StartTask @EndTask\n"
+"   public void done() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:639
+#, no-c-format
+msgid ""
+"The description property accepts user input form the JSP page, and exposes "
+"it to the process definition, allowing the task description to be set."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:644
+#, no-c-format
+msgid ""
+"The Seam <literal>@CreateProcess</literal> annotation creates a new jBPM "
+"process instance for the named process definition."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:649
+#, no-c-format
+msgid ""
+"The Seam <literal>@StartTask</literal> annotation starts work on a task. The "
+"<literal>@EndTask</literal> ends the task, and allows the business process "
+"execution to resume."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:656
+#, no-c-format
+msgid ""
+"In a more realistic example, <literal>@StartTask</literal> and "
+"<literal>@EndTask</literal> would not appear on the same method, because "
+"there is usually work to be done using the application in order to complete "
+"the task."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:659
+#, no-c-format
+msgid "Finally, the meat of the application is in <literal>todo.jsp</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:662
+#, no-c-format
+msgid ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://jboss.com/products/seam/taglib\" prefix=\"s\" %"
+"&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Todo List&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Todo List&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"   &lt;h:form id=\"list\"&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:outputText value=\"There are no todo items.\" rendered=\"#"
+"{empty \n"
+"                                       taskInstanceList}\"/&gt;\n"
+"         &lt;h:dataTable value=\"#{taskInstanceList}\" var=\"task\" rendered="
+"\"#{not empty \n"
+"                                       taskInstanceList}\"&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Description\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.description}\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Created\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:outputText value=\"#{task.taskMgmtInstance."
+"processInstance.start}\"&gt;\n"
+"                    &lt;f:convertDateTime type=\"date\"/&gt;\n"
+"                &lt;/h:outputText&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Priority\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.priority}\" style=\"width: 30"
+"\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Due Date\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.dueDate}\" style=\"width: 100"
+"\"&gt;\n"
+"                    &lt;f:convertDateTime type=\"date\" dateStyle=\"short\"/"
+"&gt;\n"
+"                &lt;/h:inputText&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;s:button value=\"Done\" action=\"#{todoList.done}\" "
+"taskInstance=\"#{task}\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"         &lt;/h:dataTable&gt;\n"
+"      &lt;/div&gt;\n"
+"      &lt;div&gt;\n"
+"      &lt;h:messages/&gt;\n"
+"      &lt;/div&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:commandButton value=\"Update Items\" action=\"update\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"   &lt;h:form id=\"new\"&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:inputText value=\"#{todoList.description}\"/&gt;\n"
+"         &lt;h:commandButton value=\"Create New Item\" action=\"#{todoList."
+"createTodo}\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:663
+#, no-c-format
+msgid "Let us take this one piece at a time."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:666
+#, no-c-format
+msgid ""
+"The page renders a list of tasks, which it gets from a built-in Seam "
+"component named <literal>taskInstanceList</literal>. The list is defined "
+"inside a JSF form."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:669
+#, no-c-format
+msgid ""
+"&lt;h:form id=\"list\"&gt;\n"
+"   &lt;div&gt;\n"
+"      &lt;h:outputText value=\"There are no todo items.\" rendered=\"#{empty "
+"taskInstanceList}\"/&gt;\n"
+"      &lt;h:dataTable value=\"#{taskInstanceList}\" var=\"task\" rendered=\"#"
+"{not empty taskInstanceList}\"&gt;\n"
+"         ...\n"
+"      &lt;/h:dataTable&gt;\n"
+"   &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:670
+#, no-c-format
+msgid ""
+"Each element of the list is an instance of the jBPM class "
+"<literal>TaskInstance</literal>. The following code simply displays the "
+"interesting properties of each task in the list. For the description, "
+"priority and due date, we use input controls, to allow the user to update "
+"these values."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:673
+#, no-c-format
+msgid ""
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"       &lt;h:outputText value=\"Description\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.description}\"/&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Created\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:outputText value=\"#{task.taskMgmtInstance.processInstance.start}"
+"\"&gt;\n"
+"        &lt;f:convertDateTime type=\"date\"/&gt;\n"
+"    &lt;/h:outputText&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Priority\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.priority}\" style=\"width: 30\"/&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Due Date\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.dueDate}\" style=\"width: 100\"&gt;\n"
+"        &lt;f:convertDateTime type=\"date\" dateStyle=\"short\"/&gt;\n"
+"    &lt;/h:inputText&gt;\n"
+"&lt;/h:column&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:674
+#, no-c-format
+msgid ""
+"This button ends the task by calling the action method annotated "
+"<literal>@StartTask @EndTask</literal>. It passes the task id to Seam as a "
+"request parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:677
+#, no-c-format
+msgid ""
+"&lt;h:column&gt;\n"
+"    &lt;s:button value=\"Done\" action=\"#{todoList.done}\" taskInstance=\"#"
+"{task}\"/&gt;\n"
+"&lt;/h:column&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:678
+#, no-c-format
+msgid ""
+"(Note that this is using a Seam <literal>&lt;s:button&gt;</literal> JSF "
+"control from the <literal>seam-ui.jar</literal> package.)"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:681
+#, no-c-format
+msgid ""
+"This button is used to update the properties of the tasks. When the form is "
+"submitted, Seam and jBPM will make any changes to the tasks persistent. "
+"There is no need for any action listener method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:684
+#, no-c-format
+msgid "&lt;h:commandButton value=\"Update Items\" action=\"update\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:685
+#, no-c-format
+msgid ""
+"A second form on the page is used to create new items, by calling the action "
+"method annotated <literal>@CreateProcess</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:688
+#, no-c-format
+msgid ""
+"&lt;h:form id=\"new\"&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:inputText value=\"#{todoList.description}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Create New Item\" action=\"#{todoList."
+"createTodo}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:689
+#, no-c-format
+msgid ""
+"There are several other files needed for the example, but they are just "
+"standard jBPM and Seam configuration and not very interesting."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:696 Tutorial.xml:813 Tutorial.xml:1159 Tutorial.xml:1185
+#: Tutorial.xml:1198
+#, no-c-format
+msgid "TODO"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:704
+#, no-c-format
+msgid "Seam pageflow: the numberguess example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:705
+#, no-c-format
+msgid ""
+"For Seam applications with relatively freeform (ad hoc) navigation, JSF/Seam "
+"navigation rules are a perfectly good way to define the page flow. For "
+"applications with a more constrained style of navigation, especially for "
+"user interfaces which are more stateful, navigation rules make it difficult "
+"to really understand the flow of the system. To understand the flow, you "
+"need to piece it together from the view pages, the actions and the "
+"navigation rules."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:708
+#, no-c-format
+msgid ""
+"Seam allows you to use a jPDL process definition to define pageflow. The "
+"simple number guessing example shows how this is done."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:721
+#, no-c-format
+msgid ""
+"The example is implemented using one JavaBean, three JSP pages and a jPDL "
+"pageflow definition. Let us begin with the pageflow:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:732
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"numberGuess\"&gt;\n"
+"   \n"
+"   &lt;start-page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"          &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"      &lt;/transition&gt;\n"
+"   &lt;/start-page&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess."
+"correctGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateRemainingGuesses\" expression=\"#{numberGuess."
+"lastGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"lose\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"displayGuess\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"lose\" view-id=\"/lose.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:735
+#, no-c-format
+msgid ""
+"The <literal>&lt;page&gt;</literal> element defines a wait state where the "
+"system displays a particular JSF view and waits for user input. The "
+"<literal>view-id</literal> is the same JSF view id used in plain JSF "
+"navigation rules. The <literal>redirect</literal> attribute tells Seam to "
+"use post-then-redirect when navigating to the page. (This results in "
+"friendly browser URLs.)"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:740
+#, no-c-format
+msgid ""
+"The <literal>&lt;transition&gt;</literal> element names a JSF outcome. The "
+"transition is triggered when a JSF action results in that outcome. Execution "
+"will then proceed to the next node of the pageflow graph, after invocation "
+"of any jBPM transition actions."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:745
+#, no-c-format
+msgid ""
+"A transition <literal>&lt;action&gt;</literal> is just like a JSF action, "
+"except that it occurs when a jBPM transition occurs. The transition action "
+"can invoke any Seam component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:750
+#, no-c-format
+msgid ""
+"A <literal>&lt;decision&gt;</literal> node branches the pageflow, and "
+"determines the next node to execute by evaluating a JSF EL expression."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:757
+#, no-c-format
+msgid "Here is what the pageflow looks like in the JBossIDE pageflow editor:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:768
+#, no-c-format
+msgid ""
+"Now that we have seen the pageflow, it is very, very easy to understand the "
+"rest of the application!"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:771
+#, no-c-format
+msgid ""
+"Here is the main page of the application, <literal>numberGuess.jsp</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:774
+#, no-c-format
+msgid ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"%&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"%&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Guess a number...&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Guess a number...&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    &lt;h:form&gt;\n"
+"        &lt;h:outputText value=\"Higher!\" rendered=\"#{numberGuess."
+"randomNumber&gt;numberGuess.currentGuess}\" /&gt;\n"
+"        &lt;h:outputText value=\"Lower!\" rendered=\"#{numberGuess."
+"randomNumber&lt;numberGuess.currentGuess}\" /&gt;\n"
+"        &lt;br /&gt;\n"
+"        I&#39;m thinking of a number between &lt;h:outputText value=\"#"
+"{numberGuess.smallest}\" /&gt; and \n"
+"        &lt;h:outputText value=\"#{numberGuess.biggest}\" /&gt;. You have \n"
+"        &lt;h:outputText value=\"#{numberGuess.remainingGuesses}\" /&gt; "
+"guesses.\n"
+"        &lt;br /&gt;\n"
+"        Your guess: \n"
+"        &lt;h:inputText value=\"#{numberGuess.currentGuess}\" id=\"guess\" "
+"required=\"true\"&gt;\n"
+"            &lt;f:validateLongRange\n"
+"                maximum=\"#{numberGuess.biggest}\" \n"
+"                minimum=\"#{numberGuess.smallest}\"/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"        &lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"guess"
+"\" /&gt;\n"
+"        &lt;br/&gt;\n"
+"        &lt;h:message for=\"guess\" style=\"color: red\"/&gt;\n"
+"    &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:775
+#, no-c-format
+msgid ""
+"Notice how the command button names the <literal>guess</literal> transition "
+"instead of calling an action directly."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:778
+#, no-c-format
+msgid "The <literal>win.jsp</literal> page is predictable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:781
+#, no-c-format
+msgid ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"%&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"%&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;You won!&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;You won!&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    Yes, the answer was &lt;h:outputText value=\"#{numberGuess.currentGuess}"
+"\" /&gt;.\n"
+"    It took you &lt;h:outputText value=\"#{numberGuess.guessCount}\" /&gt; "
+"guesses.\n"
+"    Would you like to &lt;a href=\"numberGuess.seam\"&gt;play again&lt;/"
+"a&gt;?\n"
+"  &lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:782
+#, no-c-format
+msgid ""
+"As is <literal>lose.jsp</literal> (which I can not be bothered copy/"
+"pasting). Finally, the JavaBean Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:791
+#, no-c-format
+msgid ""
+"@Name(\"numberGuess\")\n"
+"@Scope(ScopeType.CONVERSATION)\n"
+"public class NumberGuess {\n"
+"   \n"
+"   private int randomNumber;\n"
+"   private Integer currentGuess;\n"
+"   private int biggest;\n"
+"   private int smallest;\n"
+"   private int guessCount;\n"
+"   private int maxGuesses;\n"
+"   \n"
+"   @Create \n"
+"   @Begin(pageflow=\"numberGuess\")\n"
+"   public void begin()\n"
+"   {\n"
+"      randomNumber = new Random().nextInt(100);\n"
+"      guessCount = 0;\n"
+"      biggest = 100;\n"
+"      smallest = 1;\n"
+"   }\n"
+"   \n"
+"   public void setCurrentGuess(Integer guess)\n"
+"   {\n"
+"      this.currentGuess = guess;\n"
+"   }\n"
+"   \n"
+"   public Integer getCurrentGuess()\n"
+"   {\n"
+"      return currentGuess;\n"
+"   }\n"
+"   \n"
+"   public void guess()\n"
+"   {\n"
+"      if (currentGuess&gt;randomNumber)\n"
+"      {\n"
+"         biggest = currentGuess - 1;\n"
+"      }\n"
+"      if (currentGuess&lt;randomNumber)\n"
+"      {\n"
+"         smallest = currentGuess + 1;\n"
+"      }\n"
+"      guessCount ++;\n"
+"   }\n"
+"   \n"
+"   public boolean isCorrectGuess()\n"
+"   {\n"
+"      return currentGuess==randomNumber;\n"
+"   }\n"
+"   \n"
+"   public int getBiggest()\n"
+"   {\n"
+"      return biggest;\n"
+"   }\n"
+"   \n"
+"   public int getSmallest()\n"
+"   {\n"
+"      return smallest;\n"
+"   }\n"
+"   \n"
+"   public int getGuessCount()\n"
+"   {\n"
+"      return guessCount;\n"
+"   }\n"
+"   \n"
+"   public boolean isLastGuess()\n"
+"   {\n"
+"      return guessCount==maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getRemainingGuesses() {\n"
+"      return maxGuesses-guessCount;\n"
+"   }\n"
+"\n"
+"   public void setMaxGuesses(int maxGuesses) {\n"
+"      this.maxGuesses = maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getMaxGuesses() {\n"
+"      return maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getRandomNumber() {\n"
+"      return randomNumber;\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:794
+#, no-c-format
+msgid ""
+"The first time a JSP page asks for a <literal>numberGuess</literal> "
+"component, Seam will create a new one for it, and the <literal>@Create</"
+"literal> method will be invoked, allowing the component to initialize itself."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:799
+#, no-c-format
+msgid ""
+"The <literal>@Begin</literal> annotation starts a Seam "
+"<emphasis>conversation</emphasis> (much more about that later), and "
+"specifies the pageflow definition to use for the conversation&#39;s page "
+"flow."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:806
+#, no-c-format
+msgid ""
+"As you can see, this Seam component is pure business logic! It does not need "
+"to know anything at all about the user interaction flow. This makes the "
+"component potentially more reuseable."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:821
+#, no-c-format
+msgid "A complete Seam application: the Hotel Booking example"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:823
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:824
+#, no-c-format
+msgid ""
+"The booking application is a complete hotel room reservation system "
+"incorporating the following features:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:829
+#, no-c-format
+msgid "User registration"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:834
+#, no-c-format
+msgid "Login"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:839
+#, no-c-format
+msgid "Logout"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:844
+#, no-c-format
+msgid "Set password"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:849
+#, no-c-format
+msgid "Hotel search"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:854
+#, no-c-format
+msgid "Hotel selection"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:859
+#, no-c-format
+msgid "Room reservation"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:864
+#, no-c-format
+msgid "Reservation confirmation"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:869
+#, no-c-format
+msgid "Existing reservation list"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:876
+#, no-c-format
+msgid "Booking Example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:885
+#, no-c-format
+msgid ""
+"The booking application uses JSF, EJB 3.0 and Seam, together with Facelets "
+"for the view. There is also a port of this application to JSF, Facelets, "
+"Seam, JavaBeans and Hibernate3."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:888
+#, no-c-format
+msgid ""
+"One of the things you will notice if you play with this application for long "
+"enough is that it is extremely <emphasis>robust</emphasis>. You can play "
+"with back buttons and browser refresh and opening multiple windows and "
+"entering nonsensical data as much as you like and you will find it very "
+"difficult to make the application crash. You might think that we spent weeks "
+"testing and fixing bugs to achive this. Actually, this is not the case. Seam "
+"was designed to make it very straightforward to build robust web "
+"applications and a lot of robustness that you are probably used to having to "
+"code yourself comes naturally and automatically with Seam."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:891
+#, no-c-format
+msgid ""
+"As you browse the sourcecode of the example application, and learn how the "
+"application works, observe how the declarative state management and "
+"integrated validation has been used to achieve this robustness."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:897
+#, no-c-format
+msgid "Overview of the booking example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:898
+#, no-c-format
+msgid ""
+"The project structure is identical to the previous one, to install and "
+"deploy this application, please refer to <xref linkend="
+"\"Seam_Reference_Guide-Seam_Tutorial-Try_the_examples\"/>. Once you have "
+"successfully started the application, you can access it by pointing your "
+"browser to <ulink url=\"http://localhost:8080/seam-booking/"
+"\"><literal>http://localhost:8080/seam-booking/</literal></ulink>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:901
+#, no-c-format
+msgid ""
+"Just nine classes (plus six session beans local interfaces) where used to "
+"implement this application. Six session bean action listeners contain all "
+"the business logic for the listed features."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:906
+#, no-c-format
+msgid ""
+"<literal>BookingListAction</literal> retrieves existing bookings for the "
+"currently logged in user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:909
+#, no-c-format
+msgid ""
+"<literal>ChangePasswordAction</literal> updates the password of the "
+"currently logged in user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:912
+#, no-c-format
+msgid ""
+"<literal>HotelBookingAction</literal> implements the core functionality of "
+"the application: hotel room searching, selection, booking and booking "
+"confirmation. This functionality is implemented as a <emphasis>conversation</"
+"emphasis>, so this is the most interesting class in the application."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:915
+#, no-c-format
+msgid "<literal>RegisterAction</literal> registers a new system user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:918
+#, no-c-format
+msgid ""
+"Three entity beans implement the application&#39;s persistent domain model."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:923
+#, no-c-format
+msgid "<literal>Hotel</literal> is an entity bean that represents a hotel"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:928
+#, no-c-format
+msgid ""
+"<literal>Booking</literal> is an entity bean that represents an existing "
+"booking"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:933
+#, no-c-format
+msgid ""
+"<literal>User</literal> is an entity bean to represents a user who can make "
+"hotel bookings"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:941
+#, no-c-format
+msgid "Understanding Seam conversations"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:942
+#, no-c-format
+msgid ""
+"We encourage you browse the sourcecode at your pleasure. In this tutorial we "
+"will concentrate upon one particular piece of functionality: hotel search, "
+"selection, booking and confirmation. From the point of view of the user, "
+"everything from selecting a hotel to confirming a booking is one continuous "
+"unit of work, a <emphasis>conversation</emphasis>. Searching, however, is "
+"<emphasis>not</emphasis> part of the conversation. The user can select "
+"multiple hotels from the same search results page, in different browser tabs."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:945
+#, no-c-format
+msgid ""
+"Most web application architectures have no first class construct to "
+"represent a conversation. This causes enormous problems managing state "
+"associated with the conversation. Usually, Java web applications use a "
+"combination of two techniques: first, some state is thrown into the "
+"<literal>HttpSession</literal>; second, persistable state is flushed to the "
+"database after every request, and reconstructed from the database at the "
+"beginning of each new request."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:948
+#, no-c-format
+msgid ""
+"Since the database is the least scalable tier, this often results in an "
+"utterly unacceptable lack of scalability. Added latency is also a problem, "
+"due to the extra traffic to and from the database on every request. To "
+"reduce this redundant traffic, Java applications often introduce a data "
+"(second-level) cache that keeps commonly accessed data between requests. "
+"This cache is necessarily inefficient, because invalidation is based upon an "
+"LRU policy instead of being based upon when the user has finished working "
+"with the data. Furthermore, because the cache is shared between many "
+"concurrent transactions, we have introduced a whole raft of problem&#39;s "
+"associated with keeping the cached state consistent with the database."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:951
+#, no-c-format
+msgid ""
+"Now consider the state held in the <literal>HttpSession</literal>. By very "
+"careful programming, we might be able to control the size of the session "
+"data. This is a lot more difficult than it sounds, since web browsers permit "
+"ad hoc non-linear navigation. But suppose we suddenly discover a system "
+"requirement that says that a user is allowed to have <emphasis>mutiple "
+"concurrent conversations</emphasis>, halfway through the development of the "
+"system (this has happened to me). Developing mechanisms to isolate session "
+"state associated with different concurrent conversations, and incorporating "
+"failsafes to ensure that conversation state is destroyed when the user "
+"aborts one of the conversations by closing a browser window or tab can be "
+"tough."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:954
+#, no-c-format
+msgid "Now there is a better way."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:957
+#, no-c-format
+msgid ""
+"Seam introduces the <emphasis>conversation context</emphasis> as a first "
+"class construct. You can safely keep conversational state in this context, "
+"and be assured that it will have a well-defined lifecycle. Even better, you "
+"will not need to be continually pushing data back and forth between the "
+"application server and the database, since the conversation context is a "
+"natural cache of data that the user is currently working with."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:960
+#, no-c-format
+msgid ""
+"Usually, the components we keep in the conversation context are stateful "
+"session beans. (We can also keep entity beans and JavaBeans in the "
+"conversation context.) There is an ancient canard in the Java community that "
+"stateful session beans are a scalability killer. This may have been true in "
+"1998 when WebFoobar 1.0 was released. It is no longer true today. "
+"Application servers like JBoss 4.0 have extremely sophisticated mechanisms "
+"for stateful session bean state replication. (For example, the JBoss EJB3 "
+"container performs fine-grained replication, replicating only those bean "
+"attribute values which actually changed.) Note that all the traditional "
+"technical arguments for why stateful beans are inefficient apply equally to "
+"the <literal>HttpSession</literal>, so the practice of shifting state from "
+"business tier stateful session bean components to the web session to try and "
+"improve performance is unbelievably misguided. It is certainly possible to "
+"write unscalable applications using stateful session beans, by using "
+"stateful beans incorrectly, or by using them for the wrong thing. But that "
+"does not mean you should <emphasis>never</emphasis> use them. Anyway, Seam "
+"guides you toward a safe usage model."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:966
+#, no-c-format
+msgid ""
+"The booking example application shows how stateful components with different "
+"scopes can collaborate together to achieve complex behaviors. The main page "
+"of the booking application allows the user to search for hotels. The search "
+"results are kept in the Seam session scope. When the user navigates to one "
+"of these hotels, a conversation begins, and a conversation scoped component "
+"calls back to the session scoped component to retrieve the selected hotel."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:969
+#, no-c-format
+msgid ""
+"The booking example also demonstrates the use of Ajax4JSF to implement rich "
+"client behavior without the use of handwritten JavaScript."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:972
+#, no-c-format
+msgid ""
+"The search functionality is implemented using a session-scope stateful "
+"session bean, similar to the one we saw in the message list example above."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:983
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"hotelSearch\")\n"
+"@Scope(ScopeType.SESSION)\n"
+"@Restrict(\"#{identity.loggedIn}\")\n"
+"public class HotelSearchingAction implements HotelSearching\n"
+"{\n"
+"   \n"
+"   @PersistenceContext\n"
+"   private EntityManager em;\n"
+"   \n"
+"   private String searchString;\n"
+"   private int pageSize = 10;\n"
+"   private int page;\n"
+"   \n"
+"   @DataModel\n"
+"   private List&lt;Hotel&gt; hotels;\n"
+"   \n"
+"   public String find()\n"
+"   {\n"
+"      page = 0;\n"
+"      queryHotels();   \n"
+"      return \"main\";\n"
+"   }\n"
+"\n"
+"   public String nextPage()\n"
+"   {\n"
+"      page++;\n"
+"      queryHotels();\n"
+"      return \"main\";\n"
+"   }\n"
+"      \n"
+"   private void queryHotels()\n"
+"   {\n"
+"      String searchPattern = searchString==null ? \"%\" : &#39;%&#39; + \n"
+"         searchString.toLowerCase().replace(&#39;*&#39;, &#39;%&#39;) + &#39;"
+"%&#39;;\n"
+"      hotels = em.createQuery(\"select h from Hotel h where lower(h.name) "
+"like \n"
+"        :search or lower(h.city) like :search \n"
+"        or lower(h.zip) like :search or lower(h.address) like :search\")\n"
+"            .setParameter(\"search\", searchPattern)\n"
+"            .setMaxResults(pageSize)\n"
+"            .setFirstResult( page * pageSize )\n"
+"            .getResultList();\n"
+"   }\n"
+"   \n"
+"   public boolean isNextPageAvailable()\n"
+"   {\n"
+"      return hotels!=null &amp;&amp; hotels.size()==pageSize;\n"
+"   }\n"
+"   \n"
+"   public int getPageSize() {\n"
+"      return pageSize;\n"
+"   }\n"
+"\n"
+"   public void setPageSize(int pageSize) {\n"
+"      this.pageSize = pageSize;\n"
+"   }\n"
+"\n"
+"   public String getSearchString()\n"
+"   {\n"
+"      return searchString;\n"
+"   }\n"
+"\n"
+"   public void setSearchString(String searchString)\n"
+"   {\n"
+"      this.searchString = searchString;\n"
+"   }\n"
+"   \n"
+"   @Destroy @Remove\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:986
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Stateful</literal> annotation identifies this "
+"class as a stateful session bean. Stateful session beans are scoped to the "
+"conversation context by default."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:991
+#, no-c-format
+msgid ""
+"The <literal>@Restrict</literal> annotation applies a security restriction "
+"to the component. It restricts access to the component allowing only logged-"
+"in users. The security chapter explains more about security in Seam."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:996
+#, no-c-format
+msgid ""
+"The <literal>@DataModel</literal> annotation exposes a <literal>List</"
+"literal> as a JSF <literal>ListDataModel</literal>. This makes it easy to "
+"implement clickable lists for search screens. In this case, the list of "
+"hotels is exposed to the page as a <literal>ListDataModel</literal> in the "
+"conversation variable named <literal>hotels</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1001
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Remove</literal> annotation specifies that a "
+"stateful session bean should be removed and its state destroyed after "
+"invocation of the annotated method. In Seam, all stateful session beans "
+"should define a method marked <literal>@Destroy @Remove</literal>. This is "
+"the EJB remove method that will be called when Seam destroys the session "
+"context. Actually, the <literal>@Destroy</literal> annotation is of more "
+"general usefulness, since it can be used for any kind of cleanup that should "
+"happen when any Seam context ends. If you do not have an <literal>@Destroy "
+"@Remove</literal> method, state will leak and you will suffer performance "
+"problems."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1008
+#, no-c-format
+msgid ""
+"The main page of the application is a Facelets page. Let us look at the "
+"fragment which relates to searching for hotels:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1019
+#, no-c-format
+msgid ""
+"&lt;div class=\"section\"&gt;\n"
+"&lt;h:form&gt;\n"
+"  \n"
+"  &lt;span class=\"errors\"&gt;\n"
+"    &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"  &lt;/span&gt;\n"
+"    \n"
+"  &lt;h1&gt;Search Hotels&lt;/h1&gt;\n"
+"  &lt;fieldset&gt; \n"
+"     &lt;h:inputText value=\"#{hotelSearch.searchString}\" style=\"width: "
+"165px;\"&gt;\n"
+"        &lt;a:support event=\"onkeyup\" actionListener=\"#{hotelSearch.find}"
+"\" \n"
+"                   reRender=\"searchResults\" /&gt;\n"
+"     &lt;/h:inputText&gt;\n"
+"     &#160;\n"
+"     &lt;a:commandButton value=\"Find Hotels\" action=\"#{hotelSearch.find}"
+"\" \n"
+"                      styleClass=\"button\" reRender=\"searchResults\"/&gt;\n"
+"     &#160;\n"
+"     &lt;a:status&gt;\n"
+"        &lt;f:facet name=\"start\"&gt;\n"
+"           &lt;h:graphicImage value=\"/img/spinner.gif\"/&gt;\n"
+"        &lt;/f:facet&gt;\n"
+"     &lt;/a:status&gt;\n"
+"     &lt;br/&gt;\n"
+"     &lt;h:outputLabel for=\"pageSize\"&gt;Maximum results:&lt;/h:"
+"outputLabel&gt;&#160;\n"
+"     &lt;h:selectOneMenu value=\"#{hotelSearch.pageSize}\" id=\"pageSize"
+"\"&gt;\n"
+"        &lt;f:selectItem itemLabel=\"5\" itemValue=\"5\"/&gt;\n"
+"        &lt;f:selectItem itemLabel=\"10\" itemValue=\"10\"/&gt;\n"
+"        &lt;f:selectItem itemLabel=\"20\" itemValue=\"20\"/&gt;\n"
+"     &lt;/h:selectOneMenu&gt;\n"
+"  &lt;/fieldset&gt;\n"
+"    \n"
+"&lt;/h:form&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;a:outputPanel id=\"searchResults\"&gt;\n"
+"  &lt;div class=\"section\"&gt;\n"
+"  &lt;h:outputText value=\"No Hotels Found\" \n"
+"                rendered=\"#{hotels != null and hotels.rowCount==0}\"/&gt;\n"
+"  &lt;h:dataTable value=\"#{hotels}\" var=\"hot\" rendered=\"#{hotels."
+"rowCount&gt;0}\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Name&lt;/f:facet&gt;\n"
+"      #{hot.name}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Address&lt;/f:facet&gt;\n"
+"      #{hot.address}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;City, State&lt;/f:facet&gt;\n"
+"      #{hot.city}, #{hot.state}, #{hot.country}\n"
+"    &lt;/h:column&gt; \n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Zip&lt;/f:facet&gt;\n"
+"      #{hot.zip}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"      &lt;s:link value=\"View Hotel\" action=\"#{hotelBooking.selectHotel"
+"(hot)}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"  &lt;/h:dataTable&gt;\n"
+"  &lt;s:link value=\"More results\" action=\"#{hotelSearch.nextPage}\" \n"
+"          rendered=\"#{hotelSearch.nextPageAvailable}\"/&gt;\n"
+"  &lt;/div&gt;\n"
+"&lt;/a:outputPanel&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1022
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:support&gt;</literal> tag allows a JSF action "
+"event listener to be called by asynchronous <literal>XMLHttpRequest</"
+"literal> when a JavaScript event like <literal>onkeyup</literal> occurs. "
+"Even better, the <literal>reRender</literal> attribute lets us render a "
+"fragment of the JSF page and perform a partial page update when the "
+"asynchronous response is received."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1027
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:status&gt;</literal> tag lets us display a "
+"cheesy annimated image while we wait for asynchronous requests to return."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1032
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:outputPanel&gt;</literal> tag defines a region "
+"of the page which can be re-rendered by an asynchronous request."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1037
+#, no-c-format
+msgid ""
+"The Seam <literal>&lt;s:link&gt;</literal> tag lets us attach a JSF action "
+"listener to an ordinary (non-JavaScript) HTML link. The advantage of this "
+"over the standard JSF <literal>&lt;h:commandLink&gt;</literal> is that it "
+"preserves the operation of \"open in new window\" and \"open in new tab\". "
+"Also notice that we use a method binding with a parameter: <literal>#"
+"{hotelBooking.selectHotel(hot)}</literal>. This is not possible in the "
+"standard Unified EL, but Seam provides an extension to the EL that lets you "
+"use parameters on any method binding expression."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1044
+#, no-c-format
+msgid ""
+"This page displays the search results dynamically as we type, and lets us "
+"choose a hotel and pass it to the <literal>selectHotel()</literal> method of "
+"the <literal>HotelBookingAction</literal>, which is where the "
+"<emphasis>really</emphasis> interesting stuff is going to happen."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1047
+#, no-c-format
+msgid ""
+"Now lets see how the booking example application uses a conversation-scoped "
+"stateful session bean to achieve a natural cache of persistent data related "
+"to the conversation. The following code example is pretty long. But if you "
+"think of it as a list of scripted actions that implement the various steps "
+"of the conversation, it is understandable. Read the class from top to "
+"bottom, as if it were a story."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1059
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"hotelBooking\")\n"
+"@Restrict(\"#{identity.loggedIn}\")\n"
+"public class HotelBookingAction implements HotelBooking\n"
+"{\n"
+"   \n"
+"   @PersistenceContext(type=EXTENDED)\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @In \n"
+"   private User user;\n"
+"   \n"
+"   @In(required=false) @Out\n"
+"   private Hotel hotel;\n"
+"   \n"
+"   @In(required=false) \n"
+"   @Out(required=false)\n"
+"   private Booking booking;\n"
+"     \n"
+"   @In\n"
+"   private FacesMessages facesMessages;\n"
+"      \n"
+"   @In\n"
+"   private Events events;\n"
+"   \n"
+"   @Logger \n"
+"   private Log log;\n"
+"   \n"
+"   @Begin\n"
+"   public String selectHotel(Hotel selectedHotel)\n"
+"   {\n"
+"      hotel = em.merge(selectedHotel);\n"
+"      return \"hotel\";\n"
+"   }\n"
+"   \n"
+"   public String bookHotel()\n"
+"   {      \n"
+"      booking = new Booking(hotel, user);\n"
+"      Calendar calendar = Calendar.getInstance();\n"
+"      booking.setCheckinDate( calendar.getTime() );\n"
+"      calendar.add(Calendar.DAY_OF_MONTH, 1);\n"
+"      booking.setCheckoutDate( calendar.getTime() );\n"
+"      \n"
+"      return \"book\";\n"
+"   }\n"
+"\n"
+"   public String setBookingDetails()\n"
+"   {\n"
+"      if (booking==null || hotel==null) return \"main\";\n"
+"      if ( !booking.getCheckinDate().before( booking.getCheckoutDate() ) )\n"
+"      {\n"
+"         facesMessages.add(\"Check out date must be later than check in date"
+"\");\n"
+"         return null;\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return \"confirm\";\n"
+"      }\n"
+"   }\n"
+"\n"
+"   @End\n"
+"   public String confirm()\n"
+"   {\n"
+"      if (booking==null || hotel==null) return \"main\";\n"
+"      em.persist(booking);\n"
+"      facesMessages.add\n"
+"       (\"Thank you, #{user.name}, your confimation number for #{hotel.name} "
+"is #{booking.id}\");\n"
+"      log.info(\"New booking: #{booking.id} for #{user.username}\");\n"
+"      events.raiseEvent(\"bookingConfirmed\");\n"
+"      return \"confirmed\";\n"
+"   }\n"
+"   \n"
+"   @End\n"
+"   public String cancel()\n"
+"   {\n"
+"      return \"main\";\n"
+"   }\n"
+"   \n"
+"   @Destroy @Remove\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1062
+#, no-c-format
+msgid ""
+"This bean uses an EJB3 <emphasis>extended persistence context</emphasis>, so "
+"that any entity instances remain managed for the whole lifecycle of the "
+"stateful session bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1067
+#, no-c-format
+msgid ""
+"The <literal>@Out</literal> annotation declares that an attribute value is "
+"<emphasis>outjected</emphasis> to a context variable after method "
+"invocations. In this case, the context variable named <literal>hotel</"
+"literal> will be set to the value of the <literal>hotel</literal> instance "
+"variable after every action listener invocation completes."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1072
+#, no-c-format
+msgid ""
+"The <literal>@Begin</literal> annotation specifies that the annotated method "
+"begins a <emphasis>long-running conversation</emphasis>, so the current "
+"conversation context will not be destroyed at the end of the request. "
+"Instead, it will be reassociated with every request from the current window, "
+"and destroyed either by timeout due to conversation inactivity or invocation "
+"of a matching <literal>@End</literal> method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1077
+#, no-c-format
+msgid ""
+"The <literal>@End</literal> annotation specifies that the annotated method "
+"ends the current long-running conversation, so the current conversation "
+"context will be destroyed at the end of the request."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1082
+#, no-c-format
+msgid ""
+"This EJB remove method will be called when Seam destroys the conversation "
+"context and must always be defined."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1089
+#, no-c-format
+msgid ""
+"<literal>HotelBookingAction</literal> contains all the action listener "
+"methods that implement selection, booking and booking confirmation, and "
+"holds state related to this work in its instance variables. We think you "
+"will agree that this code is much cleaner and simpler than getting and "
+"setting <literal>HttpSession</literal> attributes."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1092
+#, no-c-format
+msgid ""
+"Even better, a user can have multiple isolated conversations per login "
+"session. Try it! Log in, run a search, and navigate to different hotel pages "
+"in multiple browser tabs. You will be able to work on creating two different "
+"hotel reservations at the same time. If you leave any one conversation "
+"inactive for long enough, Seam will eventually time out that conversation "
+"and destroy its state. If, after ending a conversation, you backbutton to a "
+"page of that conversation and try to perform an action, Seam will detect "
+"that the conversation was already ended, and redirect you to the search page."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1098
+#, no-c-format
+msgid "The Seam UI control library"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1099
+#, no-c-format
+msgid ""
+"If you check inside the WAR file for the booking application, you will find "
+"<literal>seam-ui.jar</literal> in the <literal>WEB-INF/lib</literal> "
+"directory. This package contains a number of JSF custom controls that "
+"integrate with Seam. The booking application uses the <literal>&lt;s:link&gt;"
+"</literal> control for navigation from the search screen to the hotel page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1102
+#, no-c-format
+msgid ""
+"&lt;s:link value=\"View Hotel\" action=\"#{hotelBooking.selectHotel}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1103
+#, no-c-format
+msgid ""
+"The use of <literal>&lt;s:link&gt;</literal> here allows us to attach an "
+"action listener to a HTML link without breaking the browser&#39;s \"open in "
+"new window\" feature. The standard JSF <literal>&lt;h:commandLink&gt;</"
+"literal> does not work with \"open in new window\". We&#39;ll see later that "
+"<literal>&lt;s:link&gt;</literal> also offers a number of other useful "
+"features, including conversation propagation rules."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1106
+#, no-c-format
+msgid ""
+"The booking application uses some other Seam and Ajax4JSF controls, "
+"especially on the <literal>/book.xhtml</literal> page. We will not get into "
+"the details of those controls here, but if you want to understand this code, "
+"please refer to the chapter covering Seam&#39;s functionality for JSF form "
+"validation."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1112
+#, no-c-format
+msgid "The Seam Debug Page"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1113
+#, no-c-format
+msgid ""
+"The WAR also includes <literal>seam-debug.jar</literal>. If this jar is "
+"deployed in <literal>WEB-INF/lib</literal>, along with the Facelets, and if "
+"you set the following Seam property in <literal>web.xml</literal> or "
+"<literal>seam.properties</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1116
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;org.jboss.seam.core.init.debug&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;true&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1117
+#, no-c-format
+msgid ""
+"Then the Seam debug page will be available. This page lets you browse and "
+"inspect the Seam components in any of the Seam contexts associated with your "
+"current login session. Just point your browser at <ulink url=\"http://"
+"localhost:8080/seam-booking/debug.seam\"><literal>http://localhost:8080/seam-"
+"booking/debug.seam</literal></ulink>."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1133
+#, no-c-format
+msgid "A complete application featuring Seam and jBPM: the DVD Store example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1134
+#, no-c-format
+msgid ""
+"The DVD Store demo application shows the practical usage of jBPM for both "
+"task management and pageflow."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1137
+#, no-c-format
+msgid ""
+"The user screens take advantage of a jPDL pageflow to implement searching "
+"and shopping cart functionality."
+msgstr ""
+
+#. Tag: screeninfo
+#: Tutorial.xml:1140 Tutorial.xml:1151 Tutorial.xml:1177
+#, no-c-format
+msgid "DVD Store example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1148
+#, no-c-format
+msgid ""
+"The administration screens take use jBPM to manage the approval and shipping "
+"cycle for orders. The business process may even be changed dynamically, by "
+"selecting a different process definition!"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1162
+#, no-c-format
+msgid "Look in the <literal>dvdstore</literal> directory."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1168
+#, no-c-format
+msgid ""
+"A complete application featuring Seam workspace management: the Issue "
+"Tracker example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1169
+#, no-c-format
+msgid ""
+"The Issue Tracker demo shows off Seam&#39;s workspace management "
+"functionality: the conversation switcher, conversation list and breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1174
+#, no-c-format
+msgid ""
+"To log into the Issue Tracker demo you must provide a username and password. "
+"You can find this in the <filename>resources/import.sql</filename> file or "
+"use \"gavin\" and \"foobar\" for username and password respectively."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1188
+#, no-c-format
+msgid "Look in the <literal>issues</literal> directory."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1194
+#, no-c-format
+msgid "An example of Seam with Hibernate: the Hibernate Booking example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1195
+#, no-c-format
+msgid ""
+"The Hibernate Booking demo is a straight port of the Booking demo to an "
+"alternative architecture that uses Hibernate for persistence and JavaBeans "
+"instead of session beans."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1201
+#, no-c-format
+msgid "Look in the <literal>hibernate</literal> directory."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1207
+#, no-c-format
+msgid "A RESTful Seam application: the Blog example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1208
+#, no-c-format
+msgid ""
+"Seam makes it very easy to implement applications which keep state on the "
+"server-side. However, server-side state is not always appropriate, "
+"especially in for functionality that serves up <emphasis>content</emphasis>. "
+"For this kind of problem we often need to let the user bookmark pages and "
+"have a relatively stateless server, so that any page can be accessed at any "
+"time, via the bookmark. The Blog example shows how to a implement RESTful "
+"application using Seam. Every page of the application can be bookmarked, "
+"including the search results page."
+msgstr ""
+
+#. Tag: screeninfo
+#: Tutorial.xml:1211
+#, no-c-format
+msgid "Blog example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1219
+#, no-c-format
+msgid ""
+"The Blog example demonstrates the use of \"pull\"-style MVC, where instead "
+"of using action listener methods to retrieve data and prepare the data for "
+"the view, the view pulls data from components as it is being rendered."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1223
+#, no-c-format
+msgid "Using \"pull\"-style MVC"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1224
+#, no-c-format
+msgid ""
+"This snippet from the <literal>index.xhtml</literal> facelets page displays "
+"a list of recent blog entries:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1227
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{blog.recentBlogEntries}\" var=\"blogEntry\" rows="
+"\"3\"&gt;\n"
+"   &lt;h:column&gt;\n"
+"      &lt;div class=\"blogEntry\"&gt;\n"
+"         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"         &lt;div&gt;\n"
+"            &lt;h:outputText escape=\"false\" \n"
+"                  value=\"#{blogEntry.excerpt==null ? blogEntry.body : "
+"blogEntry.excerpt}\"/&gt;\n"
+"         &lt;/div&gt;\n"
+"         &lt;p&gt;\n"
+"            &lt;h:outputLink value=\"entry.seam\" rendered=\"#{blogEntry."
+"excerpt!=null}\"&gt;\n"
+"               &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/"
+"&gt;\n"
+"               Read more...\n"
+"            &lt;/h:outputLink&gt;\n"
+"         &lt;/p&gt;\n"
+"         &lt;p&gt;\n"
+"            [Posted on \n"
+"            &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"               &lt;f:convertDateTime timeZone=\"#{blog.timeZone}\" locale=\"#"
+"{blog.locale}\" \n"
+"                                     type=\"both\"/&gt;\n"
+"            &lt;/h:outputText&gt;]\n"
+"            &#160;\n"
+"            &lt;h:outputLink value=\"entry.seam\"&gt;[Link]\n"
+"               &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/"
+"&gt;\n"
+"            &lt;/h:outputLink&gt;\n"
+"         &lt;/p&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1228
+#, no-c-format
+msgid ""
+"If we navigate to this page from a bookmark, how does the data used by the "
+"<literal>&lt;h:dataTable&gt;</literal> actually get initialized? Well, what "
+"happens is that the <literal>Blog</literal> is retrieved lazily&mdash;"
+"\"pulled\"&mdash;when needed, by a Seam component named <literal>blog</"
+"literal>. This is the opposite flow of control to what is usual in "
+"traditional web action-based frameworks like Struts."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1237
+#, no-c-format
+msgid ""
+"@Name(\"blog\")\n"
+"@Scope(ScopeType.STATELESS)\n"
+"public class BlogService \n"
+"{\n"
+"   \n"
+"   @In\n"
+"   private EntityManager entityManager;\n"
+"  \n"
+"   @Unwrap\n"
+"   public Blog getBlog()\n"
+"   {\n"
+"      return (Blog) entityManager.createQuery(\"from Blog b left join fetch "
+"b.blogEntries\")\n"
+"            .setHint(\"org.hibernate.cacheable\", true)\n"
+"            .getSingleResult();\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1240
+#, no-c-format
+msgid ""
+"This component uses a <emphasis>seam-managed persistence context</emphasis>. "
+"Unlike the other examples we have seen, this persistence context is managed "
+"by Seam, instead of by the EJB3 container. The persistence context spans the "
+"entire web request, allowing us to avoid any exceptions that occur when "
+"accessing unfetched associations in the view."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1245
+#, no-c-format
+msgid ""
+"The <literal>@Unwrap</literal> annotation tells Seam to provide the return "
+"value of the method&mdash;the <literal>Blog</literal>&mdash;instead of the "
+"actual <literal>BlogService</literal> component to clients. This is the Seam "
+"<emphasis>manager component pattern</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1252
+#, no-c-format
+msgid ""
+"This is good so far, but what about bookmarking the result of form "
+"submissions, such as a search results page?"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1258
+#, no-c-format
+msgid "Bookmarkable search results page"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1259
+#, no-c-format
+msgid ""
+"The blog example has a tiny form in the top right of each page that allows "
+"the user to search for blog entries. This is defined in a file, "
+"<literal>menu.xhtml</literal>, included by the facelets template, "
+"<literal>template.xhtml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1262
+#, no-c-format
+msgid ""
+"&lt;div id=\"search\"&gt;\n"
+"   &lt;h:form&gt;\n"
+"      &lt;h:inputText value=\"#{searchAction.searchPattern}\"/&gt;\n"
+"      &lt;h:commandButton value=\"Search\" action=\"/search.xhtml\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1263
+#, no-c-format
+msgid ""
+"To implement a bookmarkable search results page, we need to perform a "
+"browser redirect after processing the search form submission. Because we "
+"used the JSF view id as the action outcome, Seam automatically redirects to "
+"the view id when the form is submitted. Alternatively, we could have defined "
+"a navigation rule like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1266
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"   &lt;navigation-case&gt;\n"
+"      &lt;from-outcome&gt;searchResults&lt;/from-outcome&gt;\n"
+"      &lt;to-view-id&gt;/search.xhtml&lt;/to-view-id&gt;\n"
+"      &lt;redirect/&gt;\n"
+"   &lt;/navigation-case&gt;\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1267
+#, no-c-format
+msgid "Then the form would have looked like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1270
+#, no-c-format
+msgid ""
+"&lt;div id=\"search\"&gt;\n"
+"   &lt;h:form&gt;\n"
+"      &lt;h:inputText value=\"#{searchAction.searchPattern}\"/&gt;\n"
+"      &lt;h:commandButton value=\"Search\" action=\"searchResults\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1271
+#, no-c-format
+msgid ""
+"But when we redirect, we need to include the values submitted with the form "
+"as request parameters, to get a bookmarkable URL like <literal>http://"
+"localhost:8080/seam-blog/search.seam?searchPattern=seam</literal>. JSF does "
+"not provide an easy way to do this, but Seam does. We use a Seam "
+"<emphasis>page parameter</emphasis>, defined in <literal>WEB-INF/pages.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1274
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   &lt;page view-id=\"/search.xhtml\"&gt;\n"
+"      &lt;param name=\"searchPattern\" value=\"#{searchService.searchPattern}"
+"\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1275
+#, no-c-format
+msgid ""
+"This tells Seam to include the value of <literal>#{searchService."
+"searchPattern}</literal> as a request parameter named "
+"<literal>searchPattern</literal> when redirecting to the page, and then re-"
+"apply the value of that parameter to the model before rendering the page."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1278
+#, no-c-format
+msgid "The redirect takes us to the <literal>search.xhtml</literal> page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1281
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{searchResults}\" var=\"blogEntry\"&gt;\n"
+"   &lt;h:column&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:outputLink value=\"entry.seam\"&gt;\n"
+"            &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"            #{blogEntry.title}\n"
+"         &lt;/h:outputLink&gt;\n"
+"         posted on \n"
+"         &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"            &lt;f:convertDateTime timeZone=\"#{blog.timeZone}\" locale=\"#"
+"{blog.locale}\" type=\"both\"/&gt;\n"
+"         &lt;/h:outputText&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1282
+#, no-c-format
+msgid ""
+"Which again uses \"pull\"-style MVC to retrieve the actual search results:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1285
+#, no-c-format
+msgid ""
+"@Name(\"searchService\")\n"
+"public class SearchService \n"
+"{\n"
+"   \n"
+"   @In\n"
+"   private EntityManager entityManager;\n"
+"   \n"
+"   private String searchPattern;\n"
+"   \n"
+"   @Factory(\"searchResults\")\n"
+"   public List&lt;BlogEntry&gt; getSearchResults()\n"
+"   {\n"
+"      if (searchPattern==null)\n"
+"      {\n"
+"         return null;\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return entityManager.createQuery(\"select be from BlogEntry be "
+"where lower(be.title) \n"
+"                               like :searchPattern or lower(be.body) like :"
+"searchPattern \n"
+"                               order by be.date desc\")\n"
+"               .setParameter( \"searchPattern\", getSqlSearchPattern() )\n"
+"               .setMaxResults(100)\n"
+"               .getResultList();\n"
+"      }\n"
+"   }\n"
+"\n"
+"   private String getSqlSearchPattern()\n"
+"   {\n"
+"      return searchPattern==null ? \"\" : &#39;%&#39; + \n"
+"        searchPattern.toLowerCase().replace(&#39;*&#39;, &#39;%&#39;).replace"
+"(&#39;?&#39;, &#39;_&#39;) \n"
+"           + &#39;%&#39;;\n"
+"   }\n"
+"\n"
+"   public String getSearchPattern()\n"
+"   {\n"
+"      return searchPattern;\n"
+"   }\n"
+"\n"
+"   public void setSearchPattern(String searchPattern)\n"
+"   {\n"
+"      this.searchPattern = searchPattern;\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1290
+#, no-c-format
+msgid "Using \"push\"-style MVC in a RESTful application"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1291
+#, no-c-format
+msgid ""
+"Very occasionally, it makes more sense to use push-style MVC for processing "
+"RESTful pages, and so Seam provides the notion of a <emphasis>page action</"
+"emphasis>. The Blog example uses a page action for the blog entry page, "
+"<literal>entry.xhtml</literal>. Note that this is a little bit contrived, it "
+"would have been easier to use pull-style MVC here as well."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1294
+#, no-c-format
+msgid ""
+"The <literal>entryAction</literal> component works much like an action class "
+"in a traditional push-MVC action-oriented framework like Struts:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1297
+#, no-c-format
+msgid ""
+"@Name(\"entryAction\")\n"
+"@Scope(STATELESS)\n"
+"public class EntryAction\n"
+"{\n"
+"   @In(create=true) \n"
+"   private Blog blog;\n"
+"   \n"
+"   @Out\n"
+"   private BlogEntry blogEntry;\n"
+"   \n"
+"   public void loadBlogEntry(String id) throws EntryNotFoundException\n"
+"   {\n"
+"      blogEntry = blog.getBlogEntry(id);\n"
+"      if (blogEntry==null) throw new EntryNotFoundException(id);\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1298
+#, no-c-format
+msgid "Page actions are also declared in <literal>pages.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1301
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   ...\n"
+"\n"
+"   &lt;page view-id=\"/entry.xhtml\" action=\"#{entryAction.loadBlogEntry"
+"(blogEntry.id)}\"&gt;\n"
+"      &lt;param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"\n"
+"   &lt;page view-id=\"/post.xhtml\" action=\"#{loginAction.challenge}\"/"
+"&gt;\n"
+"\n"
+"   &lt;page view-id=\"*\" action=\"#{blog.hitCount.hit}\"/&gt;\n"
+"\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1302
+#, no-c-format
+msgid ""
+"Notice that the example is using page actions for some other "
+"functionality&mdash;the login challenge, and the pageview counter. Also "
+"notice the use of a parameter in the page action method binding. This is not "
+"a standard feature of JSF EL, but Seam lets you use it, not just for page "
+"actions, but also in JSF method bindings."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1305
+#, no-c-format
+msgid ""
+"When the <literal>entry.xhtml</literal> page is requested, Seam first binds "
+"the page parameter <literal>blogEntryId</literal> to the model, then runs "
+"the page action, which retrieves the needed data&mdash;the "
+"<literal>blogEntry</literal>&mdash;and places it in the Seam event context. "
+"Finally, the following is rendered:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1308
+#, no-c-format
+msgid ""
+"&lt;div class=\"blogEntry\"&gt;\n"
+"   &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"   &lt;div&gt;\n"
+"      &lt;h:outputText escape=\"false\" value=\"#{blogEntry.body}\"/&gt;\n"
+"   &lt;/div&gt;\n"
+"   &lt;p&gt;\n"
+"      [Posted on&#160;\n"
+"      &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"         &lt;f:convertDateTime timezone=\"#{blog.timeZone}\" locale=\"#{blog."
+"locale}\" type=\"both\"/&gt;\n"
+"      &lt;/h:outputText&gt;]\n"
+"   &lt;/p&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1309
+#, no-c-format
+msgid ""
+"If the blog entry is not found in the database, the "
+"<literal>EntryNotFoundException</literal> exception is thrown. We want this "
+"exception to result in a 404 error, not a 505, so we annotate the exception "
+"class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1312
+#, no-c-format
+msgid ""
+"@ApplicationException(rollback=true)\n"
+"@HttpError(errorCode=HttpServletResponse.SC_NOT_FOUND)\n"
+"public class EntryNotFoundException extends Exception\n"
+"{\n"
+"   EntryNotFoundException(String id)\n"
+"   {\n"
+"      super(\"entry not found: \" + id);\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1313
+#, no-c-format
+msgid ""
+"An alternative implementation of the example does not use the parameter in "
+"the method binding:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1316
+#, no-c-format
+msgid ""
+"@Name(\"entryAction\")\n"
+"@Scope(STATELESS)\n"
+"public class EntryAction\n"
+"{\n"
+"   @In(create=true) \n"
+"   private Blog blog;\n"
+"   \n"
+"   @In @Out\n"
+"   private BlogEntry blogEntry;\n"
+"   \n"
+"   public void loadBlogEntry() throws EntryNotFoundException\n"
+"   {\n"
+"      blogEntry = blog.getBlogEntry( blogEntry.getId() );\n"
+"      if (blogEntry==null) throw new EntryNotFoundException(id);\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1317
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   ...\n"
+"\n"
+"   &lt;page view-id=\"/entry.xhtml\" action=\"#{entryAction.loadBlogEntry}"
+"\"&gt;\n"
+"      &lt;param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1318
+#, no-c-format
+msgid "It is a matter of personal choice, which implementation you prefer."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Validation.pot
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Validation.pot	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Validation.pot	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,384 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-07-14 00:47+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Validation.xml:6
+#, no-c-format
+msgid "JSF form validation in Seam"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:7
+#, no-c-format
+msgid "In plain JSF, validation is defined in the view:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:10
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;h:messages/&gt;\n"
+"\n"
+"    &lt;div&gt;\n"
+"        Country:\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;my:validateCountry/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    \n"
+"    &lt;div&gt;\n"
+"        Zip code:\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;my:validateZip/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"\n"
+"    &lt;h:commandButton/&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:11
+#, no-c-format
+msgid ""
+"In practice, this approach usually violates DRY, since most validation "
+"actually enforces constraints that are part of the data model, and exist all "
+"the way down to the database schema definition. Seam provides support for "
+"model-based constraints defined using Hibernate Validator."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:14
+#, no-c-format
+msgid ""
+"Let us start by defining our constraints, on our <literal>Location</literal> "
+"class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:17
+#, no-c-format
+msgid ""
+"public class Location {\n"
+"    private String country;\n"
+"    private String zip;\n"
+"    \n"
+"    @NotNull\n"
+"    @Length(max=30)\n"
+"    public String getCountry() { return country; }\n"
+"    public void setCountry(String c) { country = c; }\n"
+"\n"
+"    @NotNull\n"
+"    @Length(max=6)\n"
+"    @Pattern(\"^\\d*$\")\n"
+"    public String getZip() { return zip; }\n"
+"    public void setZip(String z) { zip = z; }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:18
+#, no-c-format
+msgid ""
+"Well, that is a decent first cut, but in practice it might be more elegant "
+"to use custom constraints instead of the ones built into Hibernate Validator:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:21
+#, no-c-format
+msgid ""
+"public class Location {\n"
+"    private String country;\n"
+"    private String zip;\n"
+"    \n"
+"    @NotNull\n"
+"    @Country\n"
+"    public String getCountry() { return country; }\n"
+"    public void setCountry(String c) { country = c; }\n"
+"\n"
+"    @NotNull\n"
+"    @ZipCode\n"
+"    public String getZip() { return zip; }\n"
+"    public void setZip(String z) { zip = z; }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:22
+#, no-c-format
+msgid ""
+"Whichever route we take, we no longer need to specify the type of validation "
+"to be used in the JSF page. Instead, we can use <literal>&lt;s:validate&gt;</"
+"literal> to validate against the constraint defined on the model object."
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:25
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;h:messages/&gt;\n"
+"\n"
+"    &lt;div&gt;\n"
+"        Country:\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;s:validate/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    \n"
+"    &lt;div&gt;\n"
+"        Zip code:\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;s:validate/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    \n"
+"    &lt;h:commandButton/&gt;\n"
+"\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:26
+#, no-c-format
+msgid ""
+"<emphasis>Note:</emphasis> specifying <literal>@NotNull</literal> on the "
+"model does <emphasis>not</emphasis> eliminate the requirement for "
+"<literal>required=\"true\"</literal> to appear on the control! This is due "
+"to a limitation of the JSF validation architecture."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:29
+#, no-c-format
+msgid ""
+"This approach <emphasis>defines</emphasis> constraints on the model, and "
+"<emphasis>presents</emphasis> constraint violations in the view&mdash;a "
+"significantly better design."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:32
+#, no-c-format
+msgid ""
+"However, it is not much less verbose than what we started with, so let us "
+"try <literal>&lt;s:validateAll&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:35
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    \n"
+"    &lt;h:messages/&gt;\n"
+"\n"
+"    &lt;s:validateAll&gt;\n"
+"\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;h:inputText value=\"#{location.country}\" required=\"true\"/"
+"&gt;\n"
+"        &lt;/div&gt;\n"
+"\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/"
+"&gt;\n"
+"        &lt;/div&gt;\n"
+"\n"
+"        &lt;h:commandButton/&gt;\n"
+"\n"
+"    &lt;/s:validateAll&gt;\n"
+"\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:36
+#, no-c-format
+msgid ""
+"This tag simply adds an <literal>&lt;s:validate&gt;</literal> to every input "
+"in the form. For a large form, it can save a lot of typing."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:39
+#, no-c-format
+msgid ""
+"Now we need to do something about displaying feedback to the user when "
+"validation fails. Currently we are displaying all messages at the top of the "
+"form. What we would really like to do is display the message next to the "
+"field with the error (this is possible in plain JSF), highlight the field "
+"and label (this is not possible) and, for good measure, display some image "
+"next the the field (also not possible). We also want to display a little "
+"colored asterisk next to the label for each required form field."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:42
+#, no-c-format
+msgid ""
+"That is quite a lot of functionality we need for each field of our form. We "
+"would not want to have to specify higlighting and the layout of the image, "
+"message and input field for every field on the form. So, instead, we will "
+"specify the common layout in a facelets template:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:45
+#, no-c-format
+msgid ""
+"&lt;ui:composition xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"                xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"                xmlns:h=\"http://java.sun.com/jsf/html\"\n"
+"                xmlns:f=\"http://java.sun.com/jsf/core\"\n"
+"                xmlns:s=\"http://jboss.com/products/seam/taglib\"&gt;\n"
+"                 \n"
+"    &lt;div&gt;\n"
+"    \n"
+"        &lt;s:label styleClass=\"#{invalid?&#39;error&#39;:&#39;&#39;}"
+"\"&gt;\n"
+"            &lt;ui:insert name=\"label\"/&gt;\n"
+"            &lt;s:span styleClass=\"required\" rendered=\"#{required}\"&gt;"
+"*&lt;/s:span&gt;\n"
+"        &lt;/s:label&gt;\n"
+"        \n"
+"        &lt;span class=\"#{invalid?&#39;error&#39;:&#39;&#39;}\"&gt;\n"
+"            &lt;h:graphicImage src=\"img/error.gif\" rendered=\"#{invalid}\"/"
+"&gt;\n"
+"            &lt;s:validateAll&gt;\n"
+"                &lt;ui:insert/&gt;\n"
+"            &lt;/s:validateAll&gt;\n"
+"        &lt;/span&gt;\n"
+"        \n"
+"        &lt;s:message styleClass=\"error\"/&gt;\n"
+"        \n"
+"    &lt;/div&gt;\n"
+"    \n"
+"&lt;/ui:composition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:46
+#, no-c-format
+msgid ""
+"We can include this template for each of our form fields using <literal>&lt;"
+"s:decorate&gt;</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:49
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"\n"
+"    &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"\n"
+"    &lt;s:decorate template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Country:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"/"
+"&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"    \n"
+"    &lt;s:decorate template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Zip code:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"\n"
+"    &lt;h:commandButton/&gt;\n"
+"\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:50
+#, no-c-format
+msgid ""
+"Finally, we can use Ajax4JSF to display validation messages as the user is "
+"navigating around the form:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:53
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"\n"
+"    &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"\n"
+"    &lt;s:decorate id=\"countryDecoration\" template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Country:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;a:support event=\"onblur\" reRender=\"countryDecoration\"/"
+"&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"    \n"
+"    &lt;s:decorate id=\"zipDecoration\" template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Zip code:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;a:support event=\"onblur\" reRender=\"zipDecoration\"/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"\n"
+"    &lt;h:commandButton/&gt;\n"
+"\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:54
+#, no-c-format
+msgid ""
+"As a final note, it would be better style to define explicit IDs for "
+"important controls on the page, especially if you want to do automated "
+"testing for the UI, using some toolkit like Selenium. If you do not provide "
+"explicit ids, JSF will generate them, but the generated values will change "
+"if you change anything on the page."
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:57
+#, no-c-format
+msgid ""
+"&lt;h:form id=\"form\"&gt;\n"
+"\n"
+"    &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"\n"
+"    &lt;s:decorate id=\"countryDecoration\" template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Country:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText id=\"country\" value=\"#{location.country}\" "
+"required=\"true\"&gt;\n"
+"            &lt;a:support event=\"onblur\" reRender=\"countryDecoration\"/"
+"&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"    \n"
+"    &lt;s:decorate id=\"zipDecoration\" template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Zip code:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText id=\"zip\" value=\"#{location.zip}\" required=\"true"
+"\"&gt;\n"
+"            &lt;a:support event=\"onblur\" reRender=\"zipDecoration\"/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"\n"
+"    &lt;h:commandButton/&gt;\n"
+"\n"
+"&lt;/h:form&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Xml.pot
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Xml.pot	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pot/Xml.pot	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,939 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-07-14 00:47+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Xml.xml:6
+#, no-c-format
+msgid "Configuring Seam components"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:7
+#, no-c-format
+msgid ""
+"The philosophy of minimizing XML-based configuration is extremely strong in "
+"Seam. Nevertheless, there are various reasons why we might want to configure "
+"a Seam component using XML: to isolate deployment-specific information from "
+"the Java code, to enable the creation of re-usable frameworks, to configure "
+"Seam&#39;s built-in functionality, etc. Seam provides two basic approaches "
+"to configuring components: configuration via property settings in a "
+"properties file or <literal>web.xml</literal>, and configuration via "
+"<literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:10
+#, no-c-format
+msgid "Configuring components via property settings"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:11
+#, no-c-format
+msgid ""
+"Seam components may be provided with configuration properties either via "
+"servlet context parameters, or via a properties file named <literal>seam."
+"properties</literal> in the root of the classpath."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:14
+#, no-c-format
+msgid ""
+"The configurable Seam component must expose JavaBeans-style property setter "
+"methods for the configurable attributes. If a seam component named "
+"<literal>com.jboss.myapp.settings</literal> has a setter method named "
+"<literal>setLocale()</literal>, we can provide a property named <literal>com."
+"jboss.myapp.settings.locale</literal> in the <literal>seam.properties</"
+"literal> file or as a servlet context parameter, and Seam will set the value "
+"of the <literal>locale</literal> attribute whenever it instantiates the "
+"component."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:17
+#, no-c-format
+msgid ""
+"The same mechanism is used to configure Seam itself. For example, to set the "
+"conversation timeout, we provide a value for <literal>org.jboss.seam.core."
+"manager.conversationTimeout</literal> in <literal>web.xml</literal> or "
+"<literal>seam.properties</literal>. (There is a built-in Seam component "
+"named <literal>org.jboss.seam.core.manager</literal> with a setter method "
+"named <literal>setConversationTimeout()</literal>.)"
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:20
+#, no-c-format
+msgid "Configuring components via components.xml"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:21
+#, no-c-format
+msgid ""
+"The <literal>components.xml</literal> file is a bit more powerful than "
+"property settings. It lets you:"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:26
+#, no-c-format
+msgid ""
+"Configure components that have been installed automatically&mdash;including "
+"both built-in components, and application components that have been "
+"annotated with the <literal>@Name</literal> annotation and picked up by "
+"Seam&#39;s deployment scanner."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:31
+#, no-c-format
+msgid ""
+"Install classes with no <literal>@Name</literal> annotation as Seam "
+"components&mdash;this is most useful for certain kinds of infrastructural "
+"components which can be installed multiple times different names (for "
+"example Seam-managed persistence contexts)."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:36
+#, no-c-format
+msgid ""
+"Install components that <emphasis>do</emphasis> have a <literal>@Name</"
+"literal> annotation but are not installed by default because of an "
+"<literal>@Install</literal> annotation that indicates the component should "
+"not be installed."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:41
+#, no-c-format
+msgid "Override the scope of a component."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:46
+#, no-c-format
+msgid ""
+"A <literal>components.xml</literal> file may appear in one of three "
+"different places:"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:51
+#, no-c-format
+msgid "The <literal>WEB-INF</literal> directory of a <literal>war</literal>."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:56
+#, no-c-format
+msgid "The <literal>META-INF</literal> directory of a <literal>jar</literal>."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:61
+#, no-c-format
+msgid ""
+"Any directory of a <literal>jar</literal> that contains classes with an "
+"<literal>@Name</literal> annotation."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:66
+#, no-c-format
+msgid ""
+"Usually, Seam components are installed when the deployment scanner discovers "
+"a class with a <literal>@Name</literal> annotation sitting in an archive "
+"with a <literal>seam.properties</literal> file or a <literal>META-INF/"
+"components.xml</literal> file. (Unless the component has an "
+"<literal>@Install</literal> annotation indicating it should not be installed "
+"by default.) The <literal>components.xml</literal> file lets us handle "
+"special cases where we need to override the annotations."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:69
+#, no-c-format
+msgid ""
+"For example, the following <literal>components.xml</literal> file installs "
+"the JBoss Embeddable EJB3 container:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:72
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"&gt;\n"
+"    &lt;core:ejb/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:73
+#, no-c-format
+msgid "This example does the same thing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:76
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component class=\"org.jboss.seam.core.Ejb\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:77
+#, no-c-format
+msgid ""
+"This one installs and configures two different Seam-managed persistence "
+"contexts:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:80
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"    &lt;core:managed-persistence-context name=\"customerDatabase\"\n"
+"                persistence-unit-jndi-name=\"java:/"
+"customerEntityManagerFactory\"/&gt;\n"
+"        \n"
+"    &lt;core:managed-persistence-context name=\"accountingDatabase\"\n"
+"                persistence-unit-jndi-name=\"java:/"
+"accountingEntityManagerFactory\"/&gt;            \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:81
+#, no-c-format
+msgid "As does this one:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:84
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component name=\"customerDatabase\" \n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"customerEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"    \n"
+"    &lt;component name=\"accountingDatabase\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"accountingEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:85
+#, no-c-format
+msgid ""
+"This example creates a session-scoped Seam-managed persistence context (this "
+"is not recommended in practice):"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:88
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"  &lt;core:managed-persistence-context name=\"productDatabase\" \n"
+"                                   scope=\"session\"\n"
+"              persistence-unit-jndi-name=\"java:/productEntityManagerFactory"
+"\"/&gt;        \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:89
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"            \n"
+"    &lt;component name=\"productDatabase\"\n"
+"              scope=\"session\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"productEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:90
+#, no-c-format
+msgid ""
+"It is common to use the <literal>auto-create</literal> option for "
+"infrastructural objects like persistence contexts, which saves you from "
+"having to explicitly specify <literal>create=true</literal> when you use the "
+"<literal>@In</literal> annotation."
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:93
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"  &lt;core:managed-persistence-context name=\"productDatabase\" \n"
+"                             auto-create=\"true\"\n"
+"              persistence-unit-jndi-name=\"java:/productEntityManagerFactory"
+"\"/&gt;        \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:94
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"            \n"
+"    &lt;component name=\"productDatabase\"\n"
+"        auto-create=\"true\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"productEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:95
+#, no-c-format
+msgid ""
+"The <literal>&lt;factory&gt;</literal> declaration lets you specify a value "
+"or method binding expression that will be evaluated to initialize the value "
+"of a context variable when it is first referenced."
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:98
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"contact\" method=\"#{contactManager.loadContact}\" "
+"scope=\"CONVERSATION\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:99
+#, no-c-format
+msgid ""
+"You can create an <emphasis>alias</emphasis> (a second name) for a Seam "
+"component like so:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:102
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"user\" value=\"#{actor}\" scope=\"STATELESS\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:103
+#, no-c-format
+msgid ""
+"You can even create an <emphasis>alias</emphasis> for a commonly used "
+"expression:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:106
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"contact\" value=\"#{contactManager.contact}\" scope="
+"\"STATELESS\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:107
+#, no-c-format
+msgid ""
+"It is especially common to see the use of <literal>auto-create=\"true\"</"
+"literal> with the <literal>&lt;factory&gt;</literal> declaration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:110
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"session\" value=\"#{entityManager.delegate}\" scope="
+"\"STATELESS\" \n"
+"       auto-create=\"true\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:111
+#, no-c-format
+msgid ""
+"Sometimes we want to reuse the same <literal>components.xml</literal> file "
+"with minor changes during both deployment and testing. Seam lets you place "
+"wildcards of the form <literal>@wildcard@</literal> in the "
+"<literal>components.xml</literal> file which can be replaced either by your "
+"Ant build script (at deployment time) or by providing a file named "
+"<literal>components.properties</literal> in the classpath (at development "
+"time). You will see this approach used in the Seam examples."
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:114
+#, no-c-format
+msgid "Fine-grained configuration files"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:115
+#, no-c-format
+msgid ""
+"If you have a large number of components that need to be configured in XML, "
+"it makes much more sense to split up the information in <literal>components."
+"xml</literal> into many small files. Seam lets you put configuration for a "
+"class named, for example, <literal>com.helloworld.Hello</literal> in a "
+"resource named <literal>com/helloworld/Hello.component.xml</literal>. (You "
+"might be familiar with this pattern, since it is the same one we use in "
+"Hibernate.) The root element of the file may be either a <literal>&lt;"
+"components&gt;</literal> or <literal>&lt;component&gt;</literal> element."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:118
+#, no-c-format
+msgid "The first option lets you define multiple components in the file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:121
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component class=\"com.helloworld.Hello\" name=\"hello\"&gt;\n"
+"        &lt;property name=\"name\"&gt;#{user.name}&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"    &lt;factory name=\"message\" value=\"#{hello.message}\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:122
+#, no-c-format
+msgid ""
+"The second option only lets you define or configure one component, but is "
+"less noisy:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:125
+#, no-c-format
+msgid ""
+"&lt;component name=\"hello\"&gt;\n"
+"    &lt;property name=\"name\"&gt;#{user.name}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:126
+#, no-c-format
+msgid ""
+"In the second option, the class name is implied by the file in which the "
+"component definition appears."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:129
+#, no-c-format
+msgid ""
+"Alternatively, you may put configuration for all classes in the <literal>com."
+"helloworld</literal> package in <literal>com/helloworld/components.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:132
+#, no-c-format
+msgid "Configurable property types"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:133
+#, no-c-format
+msgid ""
+"Properties of string, primitive or primitive wrapper type may be configured "
+"just as you would expect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:136
+#, no-c-format
+msgid "org.jboss.seam.core.manager.conversationTimeout 60000"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:137
+#, no-c-format
+msgid "&lt;core:manager conversation-timeout=\"60000\"/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:138
+#, no-c-format
+msgid ""
+"&lt;component name=\"org.jboss.seam.core.manager\"&gt;\n"
+"    &lt;property name=\"conversationTimeout\"&gt;60000&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:139
+#, no-c-format
+msgid "Arrays, sets and lists of strings or primitives are also supported:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:142
+#, no-c-format
+msgid ""
+"org.jboss.seam.core.jbpm.processDefinitions order.jpdl.xml, return.jpdl.xml, "
+"inventory.jpdl.xml"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:143
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;order.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;return.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:144
+#, no-c-format
+msgid ""
+"&lt;component name=\"org.jboss.seam.core.jbpm\"&gt;\n"
+"    &lt;property name=\"processDefinitions\"&gt;\n"
+"        &lt;value&gt;order.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;return.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:145
+#, no-c-format
+msgid ""
+"Even maps with String-valued keys and string or primitive values are "
+"supported:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:148
+#, no-c-format
+msgid ""
+"&lt;component name=\"issueEditor\"&gt;\n"
+"    &lt;property name=\"issueStatuses\"&gt;\n"
+"        &lt;key&gt;open&lt;/key&gt; &lt;value&gt;open issue&lt;/value&gt;\n"
+"        &lt;key&gt;resolved&lt;/key&gt; &lt;value&gt;issue resolved by "
+"developer&lt;/value&gt;\n"
+"        &lt;key&gt;closed&lt;/key&gt; &lt;value&gt;resolution accepted by "
+"user&lt;/value&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:149
+#, no-c-format
+msgid ""
+"Finally, you may wire together components using a value-binding expression. "
+"Note that this is quite different to injection using <literal>@In</literal>, "
+"since it happens at component instantiation time instead of invocation time. "
+"It is therefore much more similar to the dependency injection facilities "
+"offered by traditional IoC containers like JSF or Spring."
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:152
+#, no-c-format
+msgid ""
+"&lt;drools:managed-working-memory name=\"policyPricingWorkingMemory\" rule-"
+"base=\"#{policyPricingRules}\"/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:153
+#, no-c-format
+msgid ""
+"&lt;component name=\"policyPricingWorkingMemory\"\n"
+"          class=\"org.jboss.seam.drools.ManagedWorkingMemory\"&gt;\n"
+"    &lt;property name=\"ruleBase\"&gt;#{policyPricingRules}&lt;/"
+"property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:154
+#, no-c-format
+msgid "Using XML Namespaces"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:155
+#, no-c-format
+msgid ""
+"Throughout the examples, there have been two competing ways of declaring "
+"components: with and without the use of XML namespaces. The following shows "
+"a typical <literal>components.xml</literal> file without namespaces. It uses "
+"the Seam Components DTD:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:158
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"&gt;\n"
+"&lt;!DOCTYPE components PUBLIC \"-//JBoss/Seam Component Configuration DTD "
+"1.2//EN\"\n"
+"                            \"http://jboss.com/products/seam/components-1.2."
+"dtd\"&gt;\n"
+"&lt;components&gt;\n"
+"\n"
+"    &lt;component class=\"org.jboss.seam.core.init\"&gt;\n"
+"        &lt;property name=\"debug\"&gt;true&lt;/property&gt;\n"
+"        &lt;property name=\"jndiPattern\"&gt;@jndiPattern@&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"    &lt;component name=\"org.jboss.sean.core.ejb\" installed=\"@embeddedEjb@"
+"\" /&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:159
+#, no-c-format
+msgid ""
+"As you can see, this is somewhat verbose. Even worse, the component and "
+"attribute names cannot be validated at development time."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:162
+#, no-c-format
+msgid "The namespaced version looks like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:165
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                                        http://jboss.com/products/seam/core-"
+"1.2.xsd \n"
+"                 http://jboss.com/products/seam/components \n"
+"                                        http://jboss.com/products/seam/"
+"components-1.2.xsd\"&gt;\n"
+"\n"
+"    &lt;core:init debug=\"true\" jndi-pattern=\"@jndiPattern@\"/&gt;\n"
+"\n"
+"    &lt;core:ejb installed=\"@embeddedEjb@\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:166
+#, no-c-format
+msgid ""
+"Even though the schema declarations are verbose, the actual XML content is "
+"lean and easy to understand. The schemas provide detailed information about "
+"each component and the attributes available, allowing XML editors to offer "
+"intelligent autocomplete. The use of namespaced elements makes generating "
+"and maintaining correct <literal>components.xml</literal> files much simpler."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:169
+#, no-c-format
+msgid ""
+"Now, this works great for the built-in Seam components, but what about user "
+"components? There are two options. First, Seam supports mixing the two "
+"models, allowing the use of the generic <literal>&lt;component&gt;</literal> "
+"declarations for user components, along with namespaced declarations for "
+"built-in components. But even better, Seam allows you to quickly declare "
+"namespaces for your own components."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:172
+#, no-c-format
+msgid ""
+"Any Java package can be associated with an XML namespace by annotating the "
+"package with the <literal>@Namespace</literal> annotation. (Package-level "
+"annotations are declared in a file named <literal>package-info.java</"
+"literal> in the package directory.) Here is an example from the seampay demo:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:175
+#, no-c-format
+msgid ""
+"@Namespace(value=\"http://jboss.com/products/seam/examples/seampay\")\n"
+"package org.jboss.seam.example.seampay;\n"
+"\n"
+"import org.jboss.seam.annotations.Namespace;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:176
+#, no-c-format
+msgid ""
+"That is all you need to do to use the namespaced style in "
+"<literal>components.xml</literal>! Now we can write:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:179
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pay=\"http://jboss.com/products/seam/examples/seampay\"\n"
+"            ... &gt;\n"
+"\n"
+"    &lt;pay:payment-home new-instance=\"#{newPayment}\"\n"
+"                      created-message=\"Created a new payment to #"
+"{newPayment.payee}\" /&gt;\n"
+"\n"
+"    &lt;pay:payment name=\"newPayment\"\n"
+"                 payee=\"Somebody\"\n"
+"                 account=\"#{selectedAccount}\"\n"
+"                 payment-date=\"#{currentDatetime}\"\n"
+"                 created-date=\"#{currentDatetime}\" /&gt;\n"
+"     ...\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:180
+#, no-c-format
+msgid "<para>Or:</para>"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:183
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pay=\"http://jboss.com/products/seam/examples/seampay\"\n"
+"            ... &gt;\n"
+"\n"
+"    &lt;pay:payment-home&gt;\n"
+"        &lt;pay:new-instance&gt;\"#{newPayment}\"&lt;/pay:new-instance&gt;\n"
+"        &lt;pay:created-message&gt;Created a new payment to #{newPayment."
+"payee}&lt;/pay:created-message&gt;\n"
+"    &lt;/pay:payment-home&gt;\n"
+"    \n"
+"    &lt;pay:payment name=\"newPayment\"&gt;\n"
+"        &lt;pay:payee&gt;Somebody\"&lt;/pay:payee&gt;\n"
+"        &lt;pay:account&gt;#{selectedAccount}&lt;/pay:account&gt;\n"
+"        &lt;pay:payment-date&gt;#{currentDatetime}&lt;/pay:payment-date&gt;\n"
+"        &lt;pay:created-date&gt;#{currentDatetime}&lt;/pay:created-date&gt;\n"
+"     &lt;/pay:payment&gt;\n"
+"     ...\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:184
+#, no-c-format
+msgid ""
+"These examples illustrate the two usage models of a namespaced element. In "
+"the first declaration, the <literal>&lt;pay:payment-home&gt;</literal> "
+"references the <literal>paymentHome</literal> component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:187
+#, no-c-format
+msgid ""
+"package org.jboss.seam.example.seampay;\n"
+"...\n"
+"@Name(\"paymentHome\")\n"
+"public class PaymentController\n"
+"    extends EntityHome&lt;Payment&gt;\n"
+"{\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:188
+#, no-c-format
+msgid ""
+"The element name is the hyphenated form of the component name. The "
+"attributes of the element are the hyphenated form of the property names."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:191
+#, no-c-format
+msgid ""
+"In the second declaration, the <literal>&lt;pay:payment&gt;</literal> "
+"element refers to the <literal>Payment</literal> class in the <literal>org."
+"jboss.seam.example.seampay</literal> package. In this case <literal>Payment</"
+"literal> is an entity that is being declared as a Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:194
+#, no-c-format
+msgid ""
+"package org.jboss.seam.example.seampay;\n"
+"...\n"
+"@Entity\n"
+"public class Payment\n"
+"    implements Serializable\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:195
+#, no-c-format
+msgid ""
+"If we want validation and autocompletion to work for user-defined "
+"components, we will need a schema. Seam does not yet provide a mechanism to "
+"automatically generate a schema for a set of components, so it is necessary "
+"to generate one manually. The schema definitions for the standard Seam "
+"packages can be used for guidance."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:198
+#, no-c-format
+msgid "The following are the the namespaces used by Seam:"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:203
+#, no-c-format
+msgid ""
+"components &mdash; <literal>http://jboss.com/products/seam/components</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:208
+#, no-c-format
+msgid "core &mdash; <literal>http://jboss.com/products/seam/core</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:213
+#, no-c-format
+msgid "drools &mdash; <literal>http://jboss.com/products/seam/drools</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:218
+#, no-c-format
+msgid ""
+"framework &mdash; <literal>http://jboss.com/products/seam/framework</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:223
+#, no-c-format
+msgid "jms &mdash; <literal>http://jboss.com/products/seam/jms</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:228
+#, no-c-format
+msgid ""
+"remoting &mdash; <literal>http://jboss.com/products/seam/remoting</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:233
+#, no-c-format
+msgid "theme &mdash; <literal>http://jboss.com/products/seam/theme</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:238
+#, no-c-format
+msgid ""
+"security &mdash; <literal>http://jboss.com/products/seam/security</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:243
+#, no-c-format
+msgid "mail &mdash; <literal>http://jboss.com/products/seam/mail</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:248
+#, no-c-format
+msgid "web &mdash; <literal>http://jboss.com/products/seam/web</literal>"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Annotations.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Annotations.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Annotations.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2433 @@
+# translation of Annotations.po to Brazilian Portuguese
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Leticia de Lima <ldelima at redhat.com>, 2007, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Annotations\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2008-05-21 13:33+1000\n"
+"Last-Translator: Leticia de Lima <ldelima at redhat.com>\n"
+"Language-Team: Brazilian Portuguese <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms:  JBEAP420 \n"
+
+#. Tag: title
+#: Annotations.xml:6
+#, no-c-format
+msgid "Seam annotations"
+msgstr "Anotações Seam "
+
+#. Tag: para
+#: Annotations.xml:7
+#, no-c-format
+msgid ""
+"When you write a Seam application, you&#39;ll use a lot of annotations. Seam "
+"lets you use annotations to achieve a declarative style of programming. Most "
+"of the annotations you&#39;ll use are defined by the EJB 3.0 specification. "
+"The annotations for data validation are defined by the Hibernate Validator "
+"package. Finally, Seam defines its own set of annotations, which we&#39;ll "
+"describe in this chapter."
+msgstr ""
+"Quando você escrever um aplicativo Seam, você precisará de muitas anotações. "
+"O Seam permite utilizar anotações para atingir o estilo declarativo "
+"de programação. Muitas destas anotações utilizadas podem ser definidas pelas "
+"especificações EJB 3.0. As anotações para a validação de dados são definidas "
+"pelo pacote Validador Hibernate. Finalmente, o Seam define o próprio "
+"conjunto de aplicações, do qual iremos descrever neste capítulo. "
+
+#. Tag: para
+#: Annotations.xml:10
+#, no-c-format
+msgid ""
+"All of these annotations are defined in the package <literal>org.jboss.seam."
+"annotations</literal>."
+msgstr ""
+"Todas estas anotações são definidas no pacote <literal>org.jboss.seam."
+"annotations</literal>."
+
+#. Tag: title
+#: Annotations.xml:14
+#, no-c-format
+msgid "Annotations for component definition"
+msgstr "Anotações para a definição de componente "
+
+#. Tag: para
+#: Annotations.xml:15
+#, no-c-format
+msgid ""
+"The first group of annotations lets you define a Seam component. These "
+"annotations appear on the component class."
+msgstr ""
+"O primeiro grupo de anotações permite você definir um componente Seam. Estas "
+"anotações aparecem na classe do componente."
+
+#. Tag: literal
+#: Annotations.xml:20
+#, no-c-format
+msgid "@Name"
+msgstr "@Name "
+
+#. Tag: programlisting
+#: Annotations.xml:22
+#, no-c-format
+msgid "@Name(\"componentName\")"
+msgstr "@Name(\"componentName\")"
+
+#. Tag: para
+#: Annotations.xml:23
+#, no-c-format
+msgid ""
+"Defines the Seam component name for a class. This annotation is required for "
+"all Seam components."
+msgstr "Define o nome do componente Seam para a classe. Esta anotação é requerida para todos os componentes Seam. "
+
+#. Tag: literal
+#: Annotations.xml:29
+#, no-c-format
+msgid "@Scope"
+msgstr "@Scope"
+
+#. Tag: programlisting
+#: Annotations.xml:31
+#, no-c-format
+msgid "@Scope(ScopeType.CONVERSATION)"
+msgstr "@Scope(ScopeType.CONVERSATION)"
+
+#. Tag: para
+#: Annotations.xml:32
+#, no-c-format
+msgid ""
+"Defines the default context of the component. The possible values are "
+"defined by the <literal>ScopeType</literal> enumeration: <literal>EVENT, "
+"PAGE, CONVERSATION, SESSION, BUSINESS_PROCESS, APPLICATION, STATELESS</"
+"literal>."
+msgstr ""
+"Define o contexto padrão do componente. Os valores possíveis são "
+"definidos pela enumeração <literal>ScopeType</literal>: <literal>EVENTO, "
+"PÁGINA, CONVERSAÇÃO, SESSÃO, BUSINESS_PROCESS, APLICATIVO, SEM ESTADO</"
+"literal>."
+
+#. Tag: para
+#: Annotations.xml:35
+#, no-c-format
+msgid ""
+"When no scope is explicitly specified, the default depends upon the "
+"component type. For stateless session beans, the default is "
+"<literal>STATELESS</literal>. For entity beans and stateful session beans, "
+"the default is <literal>CONVERSATION</literal>. For JavaBeans, the default "
+"is <literal>EVENT</literal>."
+msgstr ""
+"Quando o escopo não é explicitamente especificado, o padrão depende do tipo "
+"de componente. O padrão é <literal>SEM ESTADO</literal> para beans de sessão "
+"sem informação de estado. O padrão é de <literal>CONVERSAÇÃO</literal> para beans de entidade e beans de sessão com informação de estado. E, o padrão é <literal>EVENTO</literal> para Java Beans."
+
+#. Tag: literal
+#: Annotations.xml:41
+#, no-c-format
+msgid "@Role"
+msgstr "@Role"
+
+#. Tag: programlisting
+#: Annotations.xml:43
+#, no-c-format
+msgid "@Role(name=\"roleName\", scope=ScopeType.SESSION)"
+msgstr "@Role(name=\"roleName\", scope=ScopeType.SESSION)"
+
+#. Tag: para
+#: Annotations.xml:44
+#, no-c-format
+msgid ""
+"Allows a Seam component to be bound to multiple contexts variables. The "
+"<literal>@Name</literal>/<literal>@Scope</literal> annotations define a "
+"\"default role\". Each <literal>@Role</literal> annotation defines an "
+"additional role."
+msgstr ""
+"Permite um componente Seam limitar as variáveis de contextos múltiplos. A "
+"anotação <literal>@Name</literal>/<literal>@Scope</literal> define uma "
+"\"função padrão\". Cada anotação <literal>@Role</literal> define uma função "
+"adicional."
+
+#. Tag: para
+#: Annotations.xml:49
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the context variable name."
+msgstr "<literal>nome</literal> - O nome da variável de contexto."
+
+#. Tag: para
+#: Annotations.xml:54
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; the context variable scope. When no scope "
+"is explicitly specified, the default depends upon the component type, as "
+"above."
+msgstr ""
+"<literal>escopo</literal> &mdash; o escopo da variável de contexto. Quando o escopo "
+"não está explicitamente especificado, o padrão depende do tipo de "
+"componente, como segue acima."
+
+#. Tag: literal
+#: Annotations.xml:62
+#, no-c-format
+msgid "@Roles"
+msgstr "@Roles "
+
+#. Tag: programlisting
+#: Annotations.xml:64
+#, no-c-format
+msgid ""
+"@Roles({\n"
+"        @Role(name=\"user\", scope=ScopeType.CONVERSATION),\n"
+"        @Role(name=\"currentUser\", scope=ScopeType.SESSION)\n"
+"    })"
+msgstr ""
+"@Roles({\n"
+"        @Role(name=\"user\", scope=ScopeType.CONVERSATION),\n"
+"        @Role(name=\"currentUser\", scope=ScopeType.SESSION)\n"
+"    })"
+
+#. Tag: para
+#: Annotations.xml:65
+#, no-c-format
+msgid "Allows specification of multiple additional roles."
+msgstr "Permite a especificação de múltiplas funções adicionais."
+
+#. Tag: literal
+#: Annotations.xml:71
+#, no-c-format
+msgid "@Intercept"
+msgstr "@Intercept"
+
+#. Tag: programlisting
+#: Annotations.xml:73
+#, no-c-format
+msgid "@Intercept(InterceptionType.ALWAYS)"
+msgstr "@Intercept(InterceptionType.ALWAYS)  "
+
+#. Tag: para
+#: Annotations.xml:74
+#, no-c-format
+msgid ""
+"Determines when Seam interceptors are active. The possible values are "
+"defined by the <literal>InterceptionType</literal> enumeration: "
+"<literal>ALWAYS, AFTER_RESTORE_VIEW, AFTER_UPDATE_MODEL_VALUES, "
+"INVOKE_APPLICATION, NEVER</literal>."
+msgstr ""
+"Determina quando os interceptadores Seam estão ativos. Os valores possíveis "
+"são definidos pela enumeração <literal>InterceptionType</literal>: "
+"<literal>ALWAYS, AFTER_RESTORE_VIEW, AFTER_UPDATE_MODEL_VALUES, "
+"INVOKE_APPLICATION, NEVER</literal>."
+
+#. Tag: para
+#: Annotations.xml:77
+#, no-c-format
+msgid ""
+"When no interception type is explicitly specified, the default depends upon "
+"the component type. For entity beans, the default is <literal>NEVER</"
+"literal>. For session beans, message driven beans and JavaBeans, the default "
+"is <literal>ALWAYS</literal>."
+msgstr ""
+"Quando o tipo de interceptador não é explicitamente especificado, o padrão "
+"depende do tipo de documento. O padrão é <literal>NEVER</literal> para beans "
+"de entidade, e <literal>ALWAYS</literal> para beans de sessão, mensagem de "
+"beans orientados e Java Beans. "
+
+#. Tag: literal
+#: Annotations.xml:83
+#, no-c-format
+msgid "@JndiName"
+msgstr "@JndiName"
+
+#. Tag: programlisting
+#: Annotations.xml:85
+#, no-c-format
+msgid "@JndiName(\"my/jndi/name\")"
+msgstr "@JndiName(\"my/jndi/name\")"
+
+#. Tag: para
+#: Annotations.xml:86
+#, no-c-format
+msgid ""
+"Specifies the JNDI name that Seam will use to look up the EJB component. If "
+"no JNDI name is explicitly specified, Seam will use the JNDI pattern "
+"specified by <literal>org.jboss.seam.core.init.jndiPattern</literal>."
+msgstr ""
+"Indica o nome JNDI do qual o Seam irá utilizar para ver os componentes EJB. "
+"Caso o nome JNDI não seja claramente expecificado, o Seam usará o padrão "
+"JNDI especificado por <literal>org.jboss.seam.core.init.jndiPattern</"
+"literal>. "
+
+#. Tag: literal
+#: Annotations.xml:92
+#, no-c-format
+msgid "@Conversational"
+msgstr "@Conversational "
+
+#. Tag: programlisting
+#: Annotations.xml:94
+#, no-c-format
+msgid "@Conversational(ifNotBegunOutcome=\"error\")"
+msgstr "@Conversational(ifNotBegunOutcome=\"erro\")"
+
+#. Tag: para
+#: Annotations.xml:95
+#, no-c-format
+msgid ""
+"Specifies that a conversation scope component is conversational, meaning "
+"that no method of the component can be called unless a long-running "
+"conversation started by this component is active (unless the method would "
+"begin a new long-running conversation)."
+msgstr ""
+"Indica que o componente escopo de conversação é conversacional, significando "
+"que o método do componente não pode ser chamado a menos que uma conversação "
+"de longa execução seja iniciada por este componente ativo (a não ser que o "
+"método começasse uma nova conversação de longa execução). "
+
+#. Tag: literal
+#: Annotations.xml:101
+#, no-c-format
+msgid "<literal>@Startup</literal>"
+msgstr "<literal>@Startup</literal> "
+
+#. Tag: programlisting
+#: Annotations.xml:103
+#, no-c-format
+msgid "@Startup(depends={\"org.jboss.core.jndi\", \"org.jboss.core.jta\"})"
+msgstr "@Startup(depends={\"org.jboss.core.jndi\", \"org.jboss.core.jta\"}) "
+
+#. Tag: para
+#: Annotations.xml:104
+#, no-c-format
+msgid ""
+"Specifies that an application scope component is started immediately at "
+"initialization time. This is mainly used for certain built-in components "
+"that bootstrap critical infrastructure such as JNDI, datasources, etc."
+msgstr ""
+"Demonstra que uma aplicação do componente escopo é aberta imediatamente no "
+"tempo de inicialização. Isto é principalmente utilizado por certos "
+"componentes internos da infraestrutura crítica bootscrap, como por exemplo: "
+"JNDI, banco de dados, etc."
+
+#. Tag: programlisting
+#: Annotations.xml:107
+#, no-c-format
+msgid "<programlisting>@Startup</programlisting>"
+msgstr "<programlisting>@Startup</programlisting> "
+
+#. Tag: para
+#: Annotations.xml:108
+#, no-c-format
+msgid ""
+"Specifies that a session scope component is started immediately at session "
+"creation time."
+msgstr ""
+"Indica que um componente escopo de sessão é iniciado imediatamente no tempo "
+"de criação de sessão."
+
+#. Tag: para
+#: Annotations.xml:113
+#, no-c-format
+msgid ""
+"<literal>depends</literal> &mdash; specifies that the named components must "
+"be started first, if they are installed."
+msgstr ""
+"<literal>depends</literal> - especifica que os componentes nomeados "
+"necessitam ser iniciados antes, caso eles sejam instalados. "
+
+#. Tag: literal
+#: Annotations.xml:121
+#, no-c-format
+msgid "@Install"
+msgstr "@Install"
+
+#. Tag: programlisting
+#: Annotations.xml:123
+#, no-c-format
+msgid "@Install(false)"
+msgstr "@Install(false)"
+
+#. Tag: para
+#: Annotations.xml:124
+#, no-c-format
+msgid ""
+"Specifies whether or not a component should be installed by default. The "
+"lack of an @Install annotation indicates a component should be installed."
+msgstr ""
+"Demonstra se um componente deveria ser instalado ou não pelo padrão. A falta "
+"de uma anotação @Install, indica que um componente deveria ser instalado. "
+
+#. Tag: programlisting
+#: Annotations.xml:127
+#, no-c-format
+msgid "@Install(dependencies=\"org.jboss.seam.core.jbpm\")"
+msgstr "@Install(dependencies=\"org.jboss.seam.core.jbpm\")"
+
+#. Tag: para
+#: Annotations.xml:128
+#, no-c-format
+msgid ""
+"Specifies that a component should only be stalled if the components listed "
+"as dependencies are also installed."
+msgstr ""
+"Indica que um componente deve ser instalado, se os componentes listados como "
+"dependências forem também instalados."
+
+#. Tag: programlisting
+#: Annotations.xml:131
+#, no-c-format
+msgid "@Install(genericDependencies=ManagedQueueSender.class)"
+msgstr "@Install(genericDependencies=ManagedQueueSender.class)"
+
+#. Tag: para
+#: Annotations.xml:132
+#, no-c-format
+msgid ""
+"Specifies that a component should only be installed if a component that is "
+"implemented by a certain class is installed. This is useful when the "
+"dependency doesn&#39;t have a single well-known name."
+msgstr ""
+"Indica que um componente deve ser apenas instalado se o componete que é "
+"implementado por uma certa classe for instalado. Isto é útil quando a "
+"dependência não possui um único nome conhecido. "
+
+#. Tag: programlisting
+#: Annotations.xml:135
+#, no-c-format
+msgid "@Install(classDependencies=\"org.hibernate.Session\")"
+msgstr "@Install(classDependencies=\"org.hibernate.Session\")"
+
+#. Tag: para
+#: Annotations.xml:136
+#, no-c-format
+msgid ""
+"Specifies that a component should only be installed if the named class is in "
+"the classpath."
+msgstr ""
+"Indica que um componente deve ser apenas instalado se a classe nomeada "
+"estiver no caminho da classe."
+
+#. Tag: programlisting
+#: Annotations.xml:139
+#, no-c-format
+msgid "@Install(precedence=BUILT_IN)"
+msgstr "@Install(precedence=BUILT_IN)"
+
+#. Tag: para
+#: Annotations.xml:140
+#, no-c-format
+msgid ""
+"Specifies the precedence of the component. If multiple components with the "
+"same name exist, the one with the higher precedence will be installed. The "
+"defined precendence values are (in ascending order):"
+msgstr ""
+"Indica a precedência do componente. Em caso de componentes múltiplos com o "
+"mesmo nome existente, o de alta precedência será instalado. Os valores de "
+"precedência definidos são (em ordem ascendente):"
+
+#. Tag: para
+#: Annotations.xml:145
+#, no-c-format
+msgid ""
+"<literal>BUILT_IN</literal> &mdash; Precedence of all built-in Seam "
+"components"
+msgstr "<literal>INTERNO</literal> &mdash; Precedência de todos componentes internos Seam"
+
+#. Tag: para
+#: Annotations.xml:150
+#, no-c-format
+msgid ""
+"<literal>FRAMEWORK</literal> &mdash; Precedence to use for components of "
+"frameworks which extend Seam"
+msgstr ""
+"<literal>ESTRUTURA</literal> &mdash; Precedência para utilizar componentes de "
+"estrutura do qual estende Seam."
+
+#. Tag: para
+#: Annotations.xml:155
+#, no-c-format
+msgid ""
+"<literal>APPLICATION</literal> &mdash; Predence of application components "
+"(the default precedence)"
+msgstr ""
+"<literal>APLICATIVO</literal> &mdash; Precedência dos componentes de aplicação (a "
+"precedência padrão)"
+
+#. Tag: para
+#: Annotations.xml:160
+#, no-c-format
+msgid ""
+"<literal>DEPLOYMENT</literal> &mdash; Precedence to use for components which "
+"override application components in a particular deployment"
+msgstr ""
+"<literal>IMPLEMENTAÇÃO</literal> &mdash; Precedência para utilizar os componentes que "
+"substituem os componentes de aplicação numa implementação particular. "
+
+#. Tag: para
+#: Annotations.xml:165
+#, no-c-format
+msgid "<literal>MOCK</literal> &mdash; Precedence for mock objects used in testing"
+msgstr "<literal>MOCK</literal> &mdash; Precedência para objetos mock usados em teste."
+
+#. Tag: literal
+#: Annotations.xml:173
+#, no-c-format
+msgid "@Synchronized"
+msgstr "@Synchronized "
+
+#. Tag: programlisting
+#: Annotations.xml:175
+#, no-c-format
+msgid "@Synchronized(timeout=1000)"
+msgstr "@Synchronized(timeout=1000) "
+
+#. Tag: para
+#: Annotations.xml:176
+#, no-c-format
+msgid ""
+"Specifies that a component is accessed concurrently by multiple clients, and "
+"that Seam should serialize requests. If a request is not able to obtain its "
+"lock on the component in the given timeout period, an exception will be "
+"raised."
+msgstr ""
+"Indica que um componente é acessado ao mesmo tempo por diversos clientes, e "
+"que Seam deveria serializar as solicitações. Em caso de uma solicitação não "
+"puder obter a capturação do componente no período concedido, uma exceção "
+"será fornecida."
+
+#. Tag: literal
+#: Annotations.xml:182
+#, no-c-format
+msgid "<literal>@ReadOnly</literal>"
+msgstr "<literal>@ReadOnly</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:184
+#, no-c-format
+msgid "<programlisting>@ReadOnly</programlisting>"
+msgstr "<programlisting>@ReadOnly</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:185
+#, no-c-format
+msgid ""
+"Specifies that a JavaBean component or component method does not require "
+"state replication at the end of the invocation."
+msgstr ""
+"Indica que um componente JavaBean ou método do componente não requer estado "
+"de replicação no final da invocação."
+
+#. Tag: title
+#: Annotations.xml:194
+#, no-c-format
+msgid "Annotations for bijection"
+msgstr "Anotações para a bijeção"
+
+#. Tag: para
+#: Annotations.xml:195
+#, no-c-format
+msgid ""
+"The next two annotations control bijection. These attributes occur on "
+"component instance variables or property accessor methods."
+msgstr ""
+"As duas anotações seguintes controlam a bijeção. Estes atributos ocorrem "
+"em variáveis de instância de componentes ou métodos acessores de "
+"propriedades."
+
+#. Tag: literal
+#: Annotations.xml:200
+#, no-c-format
+msgid "<literal>@In</literal>"
+msgstr "<literal>@In</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:202
+#, no-c-format
+msgid "<programlisting>@In</programlisting>"
+msgstr "<programlisting>@In</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:203
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. If the context "
+"variable is null, an exception will be thrown."
+msgstr ""
+"Indica que o atributo do componente deve ser inserida de uma variável de "
+"contexto no início de cada invocação de componente. Caso a variável de "
+"contexto for nula, uma exceção poderá ser adicionada."
+
+#. Tag: programlisting
+#: Annotations.xml:206
+#, no-c-format
+msgid "@In(required=false)"
+msgstr "@In(required=false)"
+
+#. Tag: para
+#: Annotations.xml:207
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. The context variable "
+"may be null."
+msgstr ""
+"Indica que o atributo do componente necessita ser injetado de uma variável "
+"de contexto até o início de cada invocação de componente. A variável de "
+"contexto deve ser nula."
+
+#. Tag: programlisting
+#: Annotations.xml:210
+#, no-c-format
+msgid "@In(create=true)"
+msgstr "@In(create=true)"
+
+#. Tag: para
+#: Annotations.xml:211
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. If the context "
+"variable is null, an instance of the component is instantiated by Seam."
+msgstr ""
+"Indica que o atributo de um componente deve ser injetado de uma variável de "
+"contexto do início de invocação de cada componente. Caso a variável de "
+"contexto seja nula, uma instância de um componente é criada por Seam."
+
+#. Tag: programlisting
+#: Annotations.xml:214
+#, no-c-format
+msgid "@In(value=\"contextVariableName\")"
+msgstr "@In(value=\"contextVariableName\")"
+
+#. Tag: para
+#: Annotations.xml:215 Annotations.xml:260
+#, no-c-format
+msgid ""
+"Specifies the name of the context variable explicitly, instead of using the "
+"annotated instance variable name."
+msgstr ""
+"Indica corretamente o nome da variável de contexto, ao invés de utilizar o "
+"nome da variável de instância anotado."
+
+#. Tag: programlisting
+#: Annotations.xml:218
+#, no-c-format
+msgid "@In(value=\"#{customer.addresses[&#39;shipping&#39;]}\")"
+msgstr "@In(value=\"#{customer.addresses['shipping']}\")"
+
+#. Tag: para
+#: Annotations.xml:219
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected by evaluating a JSF "
+"EL expression at the beginning of each component invocation."
+msgstr ""
+"Indica que o atributo de um componente pode ser inserido, avaliando a "
+"expressão JSF EL através início da invocação de cada componente."
+
+#. Tag: para
+#: Annotations.xml:224
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"Default to the name of the component attribute. Alternatively, specifies a "
+"JSF EL expression, surrounded by <literal>#{...}</literal>."
+msgstr ""
+"<literal>valor</literal> &mdash; indica o nome da variável de contexto. O padrão "
+"para o nome do atributo do componente. Ou então, indica a expressão JSF EL, "
+"cercada por <literal>#{...}</literal>."
+
+#. Tag: para
+#: Annotations.xml:229
+#, no-c-format
+msgid ""
+"<literal>create</literal> &mdash; specifies that Seam should instantiate the "
+"component with the same name as the context variable if the context variable "
+"is undefined (null) in all contexts. Default to false."
+msgstr ""
+"<literal>criação</literal> &mdash; demonstra que Seam deve criar uma instância para o componente "
+"com o mesmo nome da variável de contexto, caso a variável de contexto seja "
+"indefinida (nula) em todos os contextos. Padrão para falso."
+
+#. Tag: para
+#: Annotations.xml:234
+#, no-c-format
+msgid ""
+"<literal>required</literal> &mdash; specifies Seam should throw an exception "
+"if the context variable is undefined in all contexts."
+msgstr ""
+"<literal>required</literal> &mdash; indica que o Seam deve abrir uma exceção, se a "
+"variável de contexto é indefinida em todos os demais contextos."
+
+#. Tag: literal
+#: Annotations.xml:242
+#, no-c-format
+msgid "<literal>@Out</literal>"
+msgstr "<literal>@Out</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:244
+#, no-c-format
+msgid "<programlisting>@Out</programlisting>"
+msgstr "<programlisting>@Out</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:245
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is a Seam component is to be "
+"outjected to its context variable at the end of the invocation. If the "
+"attribute is null, an exception is thrown."
+msgstr ""
+"Demonstra que o atributo do componente que é um componente Seam, "
+"necessita ser ejetado para esta variável de contexto, no final da "
+"invocação. Caso o atributo seja nulo, uma exceção poderá ser concedida."
+
+#. Tag: programlisting
+#: Annotations.xml:248
+#, no-c-format
+msgid "@Out(required=false)"
+msgstr "@Out(required=false)"
+
+#. Tag: para
+#: Annotations.xml:249
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is a Seam component is to be "
+"outjected to its context variable at the end of the invocation. The "
+"attribute may be null."
+msgstr ""
+"Indica que o atributo do componente do qual é um componente Seam, precisa "
+"ser ejetado para a variável de contexto, no final da invocação. O "
+"atributo poderá ser nulo."
+
+#. Tag: programlisting
+#: Annotations.xml:252
+#, no-c-format
+msgid "@Out(scope=ScopeType.SESSION)"
+msgstr "@Out(scope=ScopeType.SESSION)"
+
+#. Tag: para
+#: Annotations.xml:253
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is <emphasis>not</emphasis> a Seam "
+"component type is to be outjected to a specific scope at the end of the "
+"invocation."
+msgstr ""
+"Demonstra que o atributo de um componente que <emphasis>não</emphasis> é um tipo de componente Seam, pode ser ejetado para um escopo específico no "
+"final da invocação."
+
+#. Tag: para
+#: Annotations.xml:256
+#, no-c-format
+msgid ""
+"Alternatively, if no scope is explicitly specified, the scope of the "
+"component with the <literal>@Out</literal> attribute is used (or the "
+"<literal>EVENT</literal> scope if the component is stateless)."
+msgstr ""
+"Por outro lado, se o escopo não estiver claramente especificado, o escopo do "
+"componente com o atributo <literal>@Out</literal> é utilizado (ou escopo "
+"<literal>EVENTO</literal> caso o componente esteja sem informação de estado)."
+
+#. Tag: programlisting
+#: Annotations.xml:259
+#, no-c-format
+msgid "@Out(value=\"contextVariableName\")"
+msgstr "@Out(value=\"contextVariableName\")"
+
+#. Tag: para
+#: Annotations.xml:265
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"Default to the name of the component attribute."
+msgstr ""
+"<literal>valor</literal> &mdash; Indica o nome da variável de contexto. Padrão para "
+"o nome de atributo do componente. "
+
+#. Tag: para
+#: Annotations.xml:270
+#, no-c-format
+msgid ""
+"<literal>required</literal> &mdash; specifies Seam should throw an exception "
+"if the component attribute is null during outjection."
+msgstr ""
+"<literal>solicitação</literal> &mdash; indica que o Seam deveria abrir uma exceção, "
+"caso o atributo de componente for nulo durante a ejeção."
+
+#. Tag: para
+#: Annotations.xml:278
+#, no-c-format
+msgid ""
+"Note that it is quite common for these annotations to occur together, for "
+"example:"
+msgstr ""
+"Observe que é bastante comum que estas anotações aconteçam juntas, por "
+"exemplo: "
+
+#. Tag: programlisting
+#: Annotations.xml:281
+#, no-c-format
+msgid "@In(create=true) @Out private User currentUser;"
+msgstr "@In(create=true) @Out private User currentUser;"
+
+#. Tag: para
+#: Annotations.xml:282
+#, no-c-format
+msgid ""
+"The next annotation supports the <emphasis>manager component</emphasis> "
+"pattern, where a Seam component that manages the lifecycle of an instance of "
+"some other class that is to be injected. It appears on a component getter "
+"method."
+msgstr ""
+"A próxima anotação suporta o padrão <emphasis>componente do gerenciador</"
+"emphasis>, onde o componente Seam gerencia o tempo de vida de uma instância "
+"de outras classes da qual deve ser injetada. Isto aparece no método getter "
+"de um componente. "
+
+#. Tag: literal
+#: Annotations.xml:287
+#, no-c-format
+msgid "<literal>@Unwrap</literal>"
+msgstr "<literal>@Unwrap</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:289
+#, no-c-format
+msgid "<programlisting>@Unwrap</programlisting>"
+msgstr "<programlisting>@Unwrap</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:290
+#, no-c-format
+msgid ""
+"Specifies that the object returned by the annotated getter method is the "
+"thing that is injected instead of the component instance itself."
+msgstr ""
+"Indica que o objeto retornado por uma anotação de método getter, é o que "
+"será injetado ao invés uma instância do componente fazê-la por si mesma."
+
+#. Tag: para
+#: Annotations.xml:296
+#, no-c-format
+msgid ""
+"The next annotation supports the <emphasis>factory component</emphasis> "
+"pattern, where a Seam component is responsible for initializing the value of "
+"a context variable. This is especially useful for initializing any state "
+"needed for rendering the response to a non-faces request. It appears on a "
+"component method."
+msgstr ""
+"A próxima anotação suporta o padrão <emphasis>componente de fábrica</"
+"emphasis>, onde o componente Seam é responsável pela inicialização do valor "
+"de uma variável de contexto. Isto é especialmente utilizado para "
+"inicializar qualquer estado requerido para processamento de resposta por uma "
+"solicitação sem superfície. Isto aparece no método do componente."
+
+#. Tag: literal
+#: Annotations.xml:301
+#, no-c-format
+msgid "@Factory"
+msgstr "@Factory"
+
+#. Tag: programlisting
+#: Annotations.xml:303
+#, no-c-format
+msgid "@Factory(\"processInstance\")"
+msgstr "@Factory(\"processInstance\")"
+
+#. Tag: para
+#: Annotations.xml:304
+#, no-c-format
+msgid ""
+"Specifies that the method of the component is used to initialize the value "
+"of the named context variable, when the context variable has no value. This "
+"style is used with methods that return <literal>void</literal>."
+msgstr ""
+"Indica que o método do componente é utilizado para iniciar o valor da "
+"variável de contexto nomeada, quando esta não possue valor. Este estilo é "
+"utilizado com métodos que retornam <literal>void</literal>."
+
+#. Tag: programlisting
+#: Annotations.xml:307
+#, no-c-format
+msgid "@Factory(\"processInstance\", scope=CONVERSATION)"
+msgstr "@Factory(\"processInstance\", scope=CONVERSATION)"
+
+#. Tag: para
+#: Annotations.xml:308
+#, no-c-format
+msgid ""
+"Specifies that the method returns a value that Seam should use to initialize "
+"the value of the named context variable, when the context variable has no "
+"value. This style is used with methods that return a value. If no scope is "
+"explicitly specified, the scope of the component with the <literal>@Factory</"
+"literal> method is used (unless the component is stateless, in which case "
+"the <literal>EVENT</literal> context is used)."
+msgstr ""
+"Indica que o método retorna a um valor que o Seam deveria utilizar para "
+"iniciar o valor da variável de contexto nomeada, quando esta não possui "
+"valor. Este estilo é utilizado com métodos que retornam a um valor. Caso o "
+"escopo não esteja claramente explicado, o escopo do componente com o método "
+"<literal>@Factory</literal> é utilizado (a não ser que o componente não possua informação de estado, no caso do contexto <literal>EVENTO</literal>) ser "
+"utilizado )."
+
+#. Tag: para
+#: Annotations.xml:313
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"If the method is a getter method, default to the JavaBeans property name."
+msgstr ""
+"<literal>valor</literal> &mdash; Indica o nome da variável de contexto. Se o "
+"método for um método de getter, o padrão é de acordo com o nome de "
+"propriedade JavaBeans."
+
+#. Tag: para
+#: Annotations.xml:318
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; specifies the scope that Seam should bind "
+"the returned value to. Only meaningful for factory methods which return a "
+"value."
+msgstr ""
+"<literal>escopo</literal> &mdash; Indica o escopo que o Seam deve ligar-se no valor "
+"retornado. Apenas válido para métodos de fábrica que retornam ao valor."
+
+#. Tag: para
+#: Annotations.xml:326
+#, no-c-format
+msgid "This annotation lets you inject a <literal>Log</literal>:"
+msgstr "Esta anotação permite você injetar um <literal>Log</literal>:"
+
+#. Tag: literal
+#: Annotations.xml:331
+#, no-c-format
+msgid "@Logger"
+msgstr "@Logger"
+
+#. Tag: programlisting
+#: Annotations.xml:333
+#, no-c-format
+msgid "@Logger(\"categoryName\")"
+msgstr "@Logger(\"categoryName\")"
+
+#. Tag: para
+#: Annotations.xml:334
+#, no-c-format
+msgid ""
+"Specifies that a component field is to be injected with an instance of "
+"<literal>org.jboss.seam.log.Log</literal>. For entity beans, the field must "
+"be declared as static."
+msgstr "Indica que um campo de componente necessita ser injetado com uma instância de <literal>org.jboss.seam.log.Log</literal>. Para beans de entidade, o campo deve ser declarado como estático."
+
+#. Tag: para
+#: Annotations.xml:339
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the log category. "
+"Default to the name of the component class."
+msgstr ""
+"<literal>value</literal> &mdash; Indica o nome da categoria de um log. Padrão para "
+"o nome da classe do componente."
+
+#. Tag: para
+#: Annotations.xml:347
+#, no-c-format
+msgid "The last annotation lets you inject a request parameter value:"
+msgstr "A última anotação permite você injetar o valor do parâmetro de solicitação:"
+
+#. Tag: literal
+#: Annotations.xml:352
+#, no-c-format
+msgid "@RequestParameter"
+msgstr "@RequestParameter"
+
+#. Tag: programlisting
+#: Annotations.xml:354
+#, no-c-format
+msgid "@RequestParameter(\"parameterName\")"
+msgstr "@RequestParameter(\"parameterName\")"
+
+#. Tag: para
+#: Annotations.xml:355
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected with the value of a "
+"request parameter. Basic type conversions are performed automatically."
+msgstr ""
+"Indica que o atributo de um componente precisa ser injetado com o valor do "
+"parâmetro de solicitação. As conversões de tipo básico são automaticamente "
+"executadas."
+
+#. Tag: para
+#: Annotations.xml:360
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the request "
+"parameter. Default to the name of the component attribute."
+msgstr ""
+"<literal>value</literal> &mdash; Indica o nome do parâmetro de solicitação. Padrão "
+"para o nome de atributo do componente."
+
+#. Tag: title
+#: Annotations.xml:371
+#, no-c-format
+msgid "Annotations for component lifecycle methods"
+msgstr "Anotações para os métodos do ciclo de vida de um componete"
+
+#. Tag: para
+#: Annotations.xml:372
+#, no-c-format
+msgid ""
+"These annotations allow a component to react to its own lifecycle events. "
+"They occur on methods of the component. There may be only one of each per "
+"component class."
+msgstr ""
+"Estas anotações permitem um componente reagir nos eventos do próprio ciclo "
+"de vida. Eles ocorrem nos métodos do componente. Provavelmente haverá apenas "
+"um de cada por classe de componente. "
+
+#. Tag: literal
+#: Annotations.xml:377
+#, no-c-format
+msgid "<literal>@Create</literal>"
+msgstr "<literal>@Create</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:379
+#, no-c-format
+msgid "<programlisting>@Create</programlisting>"
+msgstr "<programlisting>@Create</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:380
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when an instance of the component "
+"is instantiated by Seam. Note that create methods are only supported for "
+"JavaBeans and stateful session beans."
+msgstr ""
+"Indica que o método deve ser chamado quando uma instância do componente é "
+"instanciada pelo Seam. Obeserve que os métodos de criação são apenas "
+"suportados por JavaBeans e monitoramento de beans de sessão."
+
+#. Tag: literal
+#: Annotations.xml:386
+#, no-c-format
+msgid "<literal>@Destroy</literal>"
+msgstr "<literal>@Destroy</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:388
+#, no-c-format
+msgid "<programlisting>@Destroy</programlisting>"
+msgstr "<programlisting>@Destroy</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:389
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when the context ends and its "
+"context variables are destroyed. Note that create methods are only supported "
+"for JavaBeans and stateful session beans."
+msgstr ""
+"Indica que o método deve ser chamado quando o contexto chega ao final, e as "
+"variáveis de contexto são destruídas. Perceba que os métodos de criação são "
+"apenas suportados por JavaBeans e monitoramento de beans de sessão."
+
+#. Tag: para
+#: Annotations.xml:392
+#, no-c-format
+msgid ""
+"Note that all stateful session bean components <emphasis>must</emphasis> "
+"define a method annotated <literal>@Destroy @Remove</literal> in order to "
+"guarantee destruction of the stateful bean when a context ends."
+msgstr ""
+"Observe que todos os componetes de monitoramento de bean de sessão "
+"<emphasis>devem</emphasis> definir um método anotado <literal>@Destroy "
+"@Remove</literal> para garantir a destruição do monitorador de bean, quando "
+"um contexto chega ao final."
+
+#. Tag: para
+#: Annotations.xml:395
+#, no-c-format
+msgid ""
+"Destroy methods should be used only for cleanup. <emphasis>Seam catches, "
+"logs and swallows any exception that propagates out of a destroy method.</"
+"emphasis>"
+msgstr ""
+"Métodos de destruição devem ser utilizados apenas para limpeza geral. "
+"<emphasis> O Seam capta, inicia e engole qualquer exceção que se propaga "
+"fora do método de destruição. </emphasis>"
+
+#. Tag: literal
+#: Annotations.xml:401
+#, no-c-format
+msgid "@Observer"
+msgstr "@Observer"
+
+#. Tag: programlisting
+#: Annotations.xml:403
+#, no-c-format
+msgid "@Observer(\"somethingChanged\")"
+msgstr "@Observer(\"somethingChanged\")"
+
+#. Tag: para
+#: Annotations.xml:404
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when a component-driven event of "
+"the specified type occurs."
+msgstr ""
+"Indica que o método deve ser chamado quando ocorrer um evento do componente-"
+"orientado de tipo especificado."
+
+#. Tag: programlisting
+#: Annotations.xml:407
+#, no-c-format
+msgid "@Observer(value=\"somethingChanged\",create=false)"
+msgstr "@Observer(value=\"somethingChanged\",create=false)"
+
+#. Tag: para
+#: Annotations.xml:408
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when an event of the specified "
+"type occurs but that an instance should not be created if one doesn&#39;t "
+"exist. If an instance does not exist and create is false, the event will not "
+"be observed. The default value for create is true."
+msgstr ""
+"Indica que o método deve ser chamado quando ocorrer um evento de tipo "
+"especificado, mas que uma instância não poderá ser criada se esta não "
+"existir. Em caso de uma instância não existir e a criação for falsa, o "
+"evento não poderá ser observado. O valor do padrão para a criação é "
+"verdadeiro."
+
+#. Tag: title
+#: Annotations.xml:417
+#, no-c-format
+msgid "Annotations for context demarcation"
+msgstr "Anotações para a demarcação de contexto"
+
+#. Tag: para
+#: Annotations.xml:418
+#, no-c-format
+msgid ""
+"These annotations provide declarative conversation demarcation. They appear "
+"on methods of Seam components, usually action listener methods."
+msgstr ""
+"Estas anotações providenciam a demarcação da conversação declarativa. Elas "
+"aparecerão nos métodos dos componentes Seam, normalmente métodos action "
+"listener. "
+
+#. Tag: para
+#: Annotations.xml:421
+#, no-c-format
+msgid ""
+"Every web request has a conversation context associated with it. Most of "
+"these conversations end at the end of the request. If you want a "
+"conversation that span multiple requests, you must \"promote\" the current "
+"conversation to a <emphasis>long-running conversation</emphasis> by calling "
+"a method marked with <literal>@Begin</literal>."
+msgstr ""
+"Cada solicitação da web possui um contexto de conversação associado com "
+"isto. Muitas destas conversações terminam no final da solicitação. Caso você "
+"queira uma conversação de solicitações múltiplas de spam, você deverá "
+"\"promover\" a conversação atual para uma <emphasis>conversação de longa "
+"execução</emphasis> excecutando um método marcado por <literal>@Begin</"
+"literal>."
+
+#. Tag: literal
+#: Annotations.xml:426
+#, no-c-format
+msgid "<literal>@Begin</literal>"
+msgstr "<literal>@Begin</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:430
+#, no-c-format
+msgid "<programlisting>@Begin</programlisting>"
+msgstr "<programlisting>@Begin</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:431
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation begins when this method returns a "
+"non-null outcome without exception."
+msgstr ""
+"Indica que uma conversação de longa duração começa quando este método "
+"retorna a um resultado não nulo sem exceção."
+
+#. Tag: programlisting
+#: Annotations.xml:436
+#, no-c-format
+msgid "@Begin(ifOutcome={\"success\", \"continue\"})"
+msgstr "@Begin(ifOutcome={\"success\", \"continue\"})"
+
+#. Tag: para
+#: Annotations.xml:437
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation begins when this action listener "
+"method returns with one of the given outcomes."
+msgstr ""
+"Demonstra que uma conversação de longa duração começa quando o método action "
+"listener retorna com um dos resultados determinados."
+
+#. Tag: programlisting
+#: Annotations.xml:442
+#, no-c-format
+msgid "@Begin(join=true)"
+msgstr "@Begin(join=true)"
+
+#. Tag: para
+#: Annotations.xml:443
+#, no-c-format
+msgid ""
+"Specifies that if a long-running conversation is already in progress, the "
+"conversation context is simply propagated."
+msgstr ""
+"Indica que caso uma conversação de longa execução já estiver em andamento, o "
+"contexto da conversação é simplesmente propagado."
+
+#. Tag: programlisting
+#: Annotations.xml:448
+#, no-c-format
+msgid "@Begin(nested=true)"
+msgstr "@Begin(nested=true)"
+
+#. Tag: para
+#: Annotations.xml:449
+#, no-c-format
+msgid ""
+"Specifies that if a long-running conversation is already in progress, a new "
+"<emphasis>nested</emphasis> conversation context begins. The nested "
+"conversation will end when the next <literal>@End</literal> is encountered, "
+"and the outer conversation will resume. It is perfectly legal for multiple "
+"nested conversations to exist concurrently in the same outer conversation."
+msgstr ""
+"Indica que se uma conversação de longa excecução já estiver em andamento, um "
+"novo contexto da conversação <emphasis>nested</emphasis> será iniciado. A "
+"conversação aninhada irá terminar quando o próximo <literal>@End</literal> "
+"for encontrado, e a conversação externa ser resumida. Isto é perfeitamente "
+"legal para conversações múltiplas aninhadas, para existência simultânea numa "
+"mesma conversação exterior."
+
+#. Tag: programlisting
+#: Annotations.xml:454
+#, no-c-format
+msgid "@Begin(pageflow=\"process definition name\")"
+msgstr "@Begin(pageflow=\"process definition name\")"
+
+#. Tag: para
+#: Annotations.xml:455
+#, no-c-format
+msgid ""
+"Specifies a jBPM process definition name that defines the pageflow for this "
+"conversation."
+msgstr ""
+"Indica um nome de definição do processo JBPM, do qual define o pageflow "
+"para esta conversação."
+
+#. Tag: programlisting
+#: Annotations.xml:460
+#, no-c-format
+msgid "@Begin(flushMode=FlushModeType.MANUAL)"
+msgstr "@Begin(flushMode=FlushModeType.MANUAL)"
+
+#. Tag: para
+#: Annotations.xml:461
+#, no-c-format
+msgid ""
+"Specify the flush mode of any Seam-managed persistence contexts. "
+"<literal>flushMode=FlushModeType.MANUAL</literal> supports the use of "
+"<emphasis>atomic conversations</emphasis> where all write operations are "
+"queued in the conversation context until an explicit call to <literal>flush()"
+"</literal> (which usually occurs at the end of the conversation)."
+msgstr ""
+"Demonstra o flush mode de qualquer gerenciamento Seam nos contextos de "
+"persistência. <literal>flushMode=FlushModeType.MANUAL</literal> suporta o "
+"uso de <emphasis>conversações atômicas</emphasis> onde todas as aplicações "
+"escritas são relatadas no contexto de conversação até uma chamada explícita "
+"<literal>flush()</literal> (da qual normalmente ocorre no final da "
+"conversação)."
+
+#. Tag: para
+#: Annotations.xml:468
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in a new long-running conversation context."
+msgstr ""
+"<literal>ifOutcome</literal> &mdash; Indica o resultado ou resultados JSF que "
+"resultam num novo contexto de conversação de longa execução ."
+
+#. Tag: para
+#: Annotations.xml:473
+#, no-c-format
+msgid ""
+"<literal>join</literal> &mdash; determines the behavior when a long-running "
+"conversation is already in progress. If <literal>true</literal>, the context "
+"is propagated. If <literal>false</literal>, an exception is thrown. Default "
+"to <literal>false</literal>. This setting is ignored when "
+"<literal>nested=true</literal> is specified"
+msgstr ""
+"<literal>join</literal> &mdash; determina o comportamento quando a conversação de "
+"longa execução já estiver em andamento. Caso seja <literal>verdadeiro</literal>, o "
+"contexto é propagado. Caso seja <literal>falso</literal>, uma exceção será "
+"acionada. Padrão para <literal>falso</literal>. Esta configuração é ignorada "
+"quando <literal>nested=true</literal> for especificado."
+
+#. Tag: para
+#: Annotations.xml:478
+#, no-c-format
+msgid ""
+"<literal>nested</literal> &mdash; specifies that a nested conversation "
+"should be started if a long-running conversation is already in progress."
+msgstr ""
+"<literal>nested</literal> &mdash; Indica que a conversação aninhada deverá ser "
+"iniciada caso uma conversação de longa duração já esteja em andamento."
+
+#. Tag: para
+#: Annotations.xml:483 Annotations.xml:550 Annotations.xml:574
+#, no-c-format
+msgid ""
+"<literal>flushMode</literal> &mdash; set the flush mode of any Seam-managed "
+"Hibernate sessions or JPA persistence contexts that are created during this "
+"conversation."
+msgstr ""
+"<literal>flushMode</literal> &mdash; define o flash mode de qualquer gerenciamento "
+"Seam de sessões Hibernate ou de contextos de persistência, dos quais são "
+"criados durante esta conversação."
+
+#. Tag: para
+#: Annotations.xml:488
+#, no-c-format
+msgid ""
+"<literal>pageflow</literal> &mdash; a process definition name of a jBPM "
+"process definition deployed via <literal>org.jboss.seam.core.jbpm."
+"pageflowDefinitions.</literal>"
+msgstr ""
+"<literal>pageflow</literal> &mdash; o nome da definição do processo de uma "
+"definição de um processo JBPM implementado por via de <literal>org.jboss."
+"seam.core.jbpm.pageflowDefinitions.</literal>"
+
+#. Tag: literal
+#: Annotations.xml:498
+#, no-c-format
+msgid "<literal>@End</literal>"
+msgstr "<literal>@End</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:504
+#, no-c-format
+msgid "<programlisting>@End</programlisting>"
+msgstr "<programlisting>@End</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:505
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation ends when this method returns a "
+"non-null outcome without exception."
+msgstr ""
+"Indica que uma conversação de longa execução termina quando este método "
+"retorna a um resultado não-nulo, sem exceção."
+
+#. Tag: programlisting
+#: Annotations.xml:510
+#, no-c-format
+msgid ""
+"@End(ifOutcome={\"success\", \"error\"}, evenIfException={SomeException."
+"class, OtherException.class})"
+msgstr ""
+"@End(ifOutcome={\"success\", \"error\"}, evenIfException={SomeException."
+"class, OtherException.class})"
+
+#. Tag: para
+#: Annotations.xml:511
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation ends when this action listener "
+"method returns with one of the given outcomes or throws one of the specified "
+"classes of exception."
+msgstr ""
+"Indica que uma conversação de longa execução termina quando este método "
+"action listener retorna com um dos resultados gerados ou lançados em uma das "
+"classes de exceção específica."
+
+#. Tag: para
+#: Annotations.xml:518
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in the end of the current long-running conversation."
+msgstr ""
+"<literal>ifOutcome</literal> &mdash; Indica o resultado ou resultados JSF "
+"que resultam no final da corrente conversação de longa excecução."
+
+#. Tag: para
+#: Annotations.xml:523 Annotations.xml:617
+#, no-c-format
+msgid ""
+"<literal>beforeRedirect</literal> &mdash; by default, the conversation will "
+"not actually be destroyed until after any redirect has occurred. Setting "
+"<literal>beforeRedirect=true</literal> specifies that the conversation "
+"should be destroyed at the end of the current request, and that the redirect "
+"will be processed in a new temporary conversation context."
+msgstr ""
+"<literal>beforeRedirect</literal> &mdash; pelo padrão, na realidade a conversação "
+"não será destruída até mesmo depois de qualquer redirecionamento seja "
+"ocorrido. A configuração <literal>beforeRedirect=true</literal> indica que a "
+"conversação deve ser destruída no final da atual solicitação, e que o "
+"redirecionamento será processado novo contexto de conversação temporário."
+
+#. Tag: literal
+#: Annotations.xml:534
+#, no-c-format
+msgid "<literal>@StartTask</literal>"
+msgstr "<literal>@StartTask</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:536
+#, no-c-format
+msgid "<programlisting>@StartTask</programlisting>"
+msgstr "<programlisting>@StartTask</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:537
+#, no-c-format
+msgid ""
+"\"Starts\" a jBPM task. Specifies that a long-running conversation begins "
+"when this method returns a non-null outcome without exception. This "
+"conversation is associated with the jBPM task specified in the named request "
+"parameter. Within the context of this conversation, a business process "
+"context is also defined, for the business process instance of the task "
+"instance."
+msgstr ""
+"\"Início\"uma tarefa JBPM. Indica que uma conversação de longa execução "
+"começa quando este método retorna para um resultado não nulo, sem exceção. "
+"Esta conversação é associada com a tarefa JBPM, especificada no parâmetro de "
+"solicitação nomeado. Desta forma, o contexto desta conversação é também "
+"definido como um contexto de processo comercial, pela instância de processo "
+"comercial da instância de tarefa."
+
+#. Tag: para
+#: Annotations.xml:540
+#, no-c-format
+msgid ""
+"The jBPM <literal>TaskInstance</literal> will be available in a request "
+"context variable named <literal>taskInstance</literal>. The jPBM "
+"<literal>ProcessInstance</literal> will be available in a request context "
+"variable named <literal>processInstance</literal>. (Of course, these objects "
+"are available for injection via <literal>@In</literal>.)"
+msgstr ""
+"O JBPM <literal>TaskInstance</literal> será avaliado numa solicitação da "
+"variável de contexto nomeada <literal>taskInstance</literal>. O JPBM "
+"<literal>ProcessInstance</literal> será avaliado numa solicitação da "
+"variável de contexto nomeada <literal>processInstance</literal> ( Estes "
+"objetos estão disponíveis para injeção por meio de <literal>@In</literal>. "
+
+#. Tag: para
+#: Annotations.xml:545 Annotations.xml:569
+#, no-c-format
+msgid ""
+"<literal>taskIdParameter</literal> &mdash; the name of a request parameter "
+"which holds the id of the task. Default to <literal>\"taskId\"</literal>, "
+"which is also the default used by the Seam <literal>taskList</literal> JSF "
+"component."
+msgstr ""
+"<literal>taskIdParameter</literal> &mdash; O nome de um parâmetro de solicitação "
+"que contém a id da tarefa. Padrão para <literal>\"taskId\"</literal>, que é "
+"também o padrão utilizado pelo componente Seam e JSF <literal>taskList</"
+"literal>."
+
+#. Tag: literal
+#: Annotations.xml:558
+#, no-c-format
+msgid "<literal>@BeginTask</literal>"
+msgstr "<literal>@BeginTask</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:560
+#, no-c-format
+msgid "<programlisting>@BeginTask</programlisting>"
+msgstr "<programlisting>@BeginTask</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:561
+#, no-c-format
+msgid ""
+"Resumes work on an incomplete jBPM task. Specifies that a long-running "
+"conversation begins when this method returns a non-null outcome without "
+"exception. This conversation is associated with the jBPM task specified in "
+"the named request parameter. Within the context of this conversation, a "
+"business process context is also defined, for the business process instance "
+"of the task instance."
+msgstr ""
+"Resume o trabalho de uma tarefa incompleta JBPM. Especifica que uma "
+"conversação de longa execução começa quando este método retorna a um "
+"resultado não nulo, sem exceção. Esta conversação é associada com a tarefa "
+"especificada JBPM num parâmetro de solicitação nomeado. Neste contexto desta "
+"conversação, um contexto de processo comercial é também definido pela "
+"instância de processo comercial de uma instância de tarefa."
+
+#. Tag: para
+#: Annotations.xml:564
+#, no-c-format
+msgid ""
+"The jBPM <literal>TaskInstance</literal> will be available in a request "
+"context variable named <literal>taskInstance</literal>. The jPBM "
+"<literal>ProcessInstance</literal> will be available in a request context "
+"variable named <literal>processInstance</literal>."
+msgstr ""
+"O JBPM <literal>TaskInstance</literal> não pode ser avaliado numa "
+"solicitação nomeada de variável de contexto <literal>taskInstance</literal>. "
+"O JPBM <literal>ProcessInstance</literal> será avaliado numa solicitação "
+"nomeada da variável de contexto <literal>processInstance</literal>."
+
+#. Tag: literal
+#: Annotations.xml:582
+#, no-c-format
+msgid "<literal>@EndTask</literal>"
+msgstr "<literal>@EndTask</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:587
+#, no-c-format
+msgid "<programlisting>@EndTask</programlisting>"
+msgstr "<programlisting>@EndTask</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:588
+#, no-c-format
+msgid ""
+"\"Ends\" a jBPM task. Specifies that a long-running conversation ends when "
+"this method returns a non-null outcome, and that the current task is "
+"complete. Triggers a jBPM transition. The actual transition triggered will "
+"be the default transition unless the application has called "
+"<literal>Transition.setName()</literal> on the built-in component named "
+"<literal>transition</literal>."
+msgstr ""
+"\"Finaliza\" uma tarefa JBPM. Demonstra que uma conversação de longa "
+"execução encerra quando este método retorna a um resultado não nulo, e a "
+"tarefa atual for completada. Disparadores uma transição JBPM. A atual "
+"transição disparada será o padrão de transição, a não ser que a aplicação "
+"seja chamada <literal>Transition.setName()</literal> componente interno "
+"nomeado <literal>transition</literal>."
+
+#. Tag: programlisting
+#: Annotations.xml:593
+#, no-c-format
+msgid "@EndTask(transition=\"transitionName\")"
+msgstr "@EndTask(transition=\"transitionName\") "
+
+#. Tag: para
+#: Annotations.xml:594
+#, no-c-format
+msgid "Triggers the given jBPM transition."
+msgstr "Disparadores que determinam a transição JBPM. "
+
+#. Tag: programlisting
+#: Annotations.xml:599
+#, no-c-format
+msgid "@EndTask(ifOutcome={\"success\", \"continue\"})"
+msgstr "@EndTask(ifOutcome={\"success\", \"continue\"}) "
+
+#. Tag: para
+#: Annotations.xml:600
+#, no-c-format
+msgid ""
+"Specifies that the task ends when this method returns one of the listed "
+"outcomes."
+msgstr ""
+"Indica que a tarefa é finalizada quando este método retorna a um dos "
+"resultados listados."
+
+#. Tag: para
+#: Annotations.xml:607
+#, no-c-format
+msgid ""
+"<literal>transition</literal> &mdash; the name of the jBPM transition to be "
+"triggered when ending the task. Defaults to the default transition."
+msgstr ""
+"<literal>transition</literal> &mdash; O nome da transição JBPM para ser disparada "
+"quando a tarefa estiver finalizando. Padrões para o padrão de transição."
+
+#. Tag: para
+#: Annotations.xml:612
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in the end of the task."
+msgstr ""
+"<literal>ifOutcome</literal> &mdash; Indica o resultado ou resultados JSF que "
+"resultam no final da tarefa. "
+
+#. Tag: literal
+#: Annotations.xml:628
+#, no-c-format
+msgid "@CreateProcess"
+msgstr "@CreateProcess "
+
+#. Tag: programlisting
+#: Annotations.xml:630
+#, no-c-format
+msgid "@CreateProcess(definition=\"process definition name\")"
+msgstr "@CreateProcess(definition=\"process definition name\") "
+
+#. Tag: para
+#: Annotations.xml:631
+#, no-c-format
+msgid ""
+"Creates a new jBPM process instance when the method returns a non-null "
+"outcome without exception. The <literal>ProcessInstance</literal> object "
+"will be available in a context variable named <literal>processInstance</"
+"literal>."
+msgstr ""
+"Cria uma nova instância de processo quando o método retorna a um resultado "
+"não nulo, sem exceção. O objeto <literal>ProcessInstance</literal> estará "
+"disponível numa variável de contexto nomeada <literal>processInstance</"
+"literal>. "
+
+#. Tag: para
+#: Annotations.xml:636
+#, no-c-format
+msgid ""
+"<literal>definition</literal> &mdash; the name of the jBPM process "
+"definition deployed via <literal>org.jboss.seam.core.jbpm."
+"processDefinitions</literal>."
+msgstr ""
+"<literal>definition</literal> &mdash; O nome do processo de seleção JBPM "
+"implantado por meio de <literal>org.jboss.seam.core.jbpm.processDefinitions</"
+"literal>. "
+
+#. Tag: literal
+#: Annotations.xml:644
+#, no-c-format
+msgid "@ResumeProcess"
+msgstr "@ResumeProcess "
+
+#. Tag: programlisting
+#: Annotations.xml:646
+#, no-c-format
+msgid "@ResumeProcess(processIdParameter=\"processId\")"
+msgstr "@ResumeProcess(processIdParameter=\"processId\") "
+
+#. Tag: para
+#: Annotations.xml:647
+#, no-c-format
+msgid ""
+"Re-enters the scope of an existing jBPM process instance when the method "
+"returns a non-null outcome without exception. The <literal>ProcessInstance</"
+"literal> object will be available in a context variable named "
+"<literal>processInstance</literal>."
+msgstr ""
+"Insere novamente o escopo de um processo de instância JBPM existente quando "
+"o método retorna a um resultado não nulo, sem exceção. O objeto "
+"<literal>ProcessInstance</literal> estará disponível numa variável de "
+"contexto nomeada <literal>processInstance</literal>. "
+
+#. Tag: para
+#: Annotations.xml:652
+#, no-c-format
+msgid ""
+"<literal>processIdParameter</literal> &mdash; the name a request parameter "
+"holding the process id. Default to <literal>\"processId\"</literal>."
+msgstr ""
+"<literal>processIdParameter</literal> &mdash; O nome do parâmetro de solicitação "
+"guardando o processo id. Padrão para <literal>\"processId\"</literal>."
+
+#. Tag: title
+#: Annotations.xml:663
+#, no-c-format
+msgid "Annotations for transaction demarcation"
+msgstr "Anotações para demarcação de transação"
+
+#. Tag: para
+#: Annotations.xml:664
+#, no-c-format
+msgid ""
+"Seam provides an annotation that lets you force a rollback of the JTA "
+"transaction for certain action listener outcomes."
+msgstr ""
+"Seam fornece uma anotação da qual permite que você force uma reversão da "
+"transação JTA para certos resultados action listener."
+
+#. Tag: literal
+#: Annotations.xml:669
+#, no-c-format
+msgid "@Rollback"
+msgstr "@Rollback "
+
+#. Tag: programlisting
+#: Annotations.xml:671
+#, no-c-format
+msgid "@Rollback(ifOutcome={\"failure\", \"not-found\"})"
+msgstr "@Rollback(ifOutcome={\"failure\", \"not-found\"}) "
+
+#. Tag: para
+#: Annotations.xml:672
+#, no-c-format
+msgid ""
+"If the outcome of the method matches any of the listed outcomes, or if no "
+"outcomes are listed, set the transaction to rollback only when the method "
+"completes."
+msgstr ""
+"Caso o resultado de um método combinar com qualquer resultado listado, ou se "
+"não houver resultados listados, mude a transação para reverter, mas apenas "
+"quando o método estiver completo."
+
+#. Tag: para
+#: Annotations.xml:677
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; the JSF outcomes that cause a "
+"transaction rollback (no outcomes is interpreted to mean any outcome)."
+msgstr ""
+"<literal>ifOutcome</literal> &mdash; O resultado JSF que causa a reversão da "
+"transação (não há resultados interpretados para significar algum "
+"resultado). "
+
+#. Tag: literal
+#: Annotations.xml:685
+#, no-c-format
+msgid "<literal>@Transactional</literal>"
+msgstr "<literal>@Transactional</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:687
+#, no-c-format
+msgid "<programlisting>@Transactional</programlisting>"
+msgstr "<programlisting>@Transactional</programlisting> "
+
+#. Tag: para
+#: Annotations.xml:688
+#, no-c-format
+msgid ""
+"Specifies that a JavaBean component should have a similar transactional "
+"behavior to the default behavior of a session bean component. ie. method "
+"invocations should take place in a transaction, and if no transaction exists "
+"when the method is called, a transaction will be started just for that "
+"method. This annotation may be applied at either class or method level."
+msgstr ""
+"Indica que o componente JavaBean deve ter um comportamento transacional "
+"similar para o comportamento padrão de um componente de bean de sessão. Por "
+"exemplo, método de invocações deve tomar posição na transação existente "
+"quando o método é chamado. A transação será iniciada apenas para esse "
+"método. Esta anotação talvez seja aplicada tanto na classe ou método do "
+"nível."
+
+#. Tag: para
+#: Annotations.xml:694
+#, no-c-format
+msgid ""
+"Seam applications usually use the standard EJB3 annotations for all other "
+"transaction demarcation needs."
+msgstr ""
+"Aplicativos Seam normalmente utilizados no padrão para todas as outras "
+"transações demarcadas necessitadas."
+
+#. Tag: title
+#: Annotations.xml:700
+#, no-c-format
+msgid "Annotations for exceptions"
+msgstr "Anotações para exceções"
+
+#. Tag: para
+#: Annotations.xml:701
+#, no-c-format
+msgid ""
+"These annotations let you specify how Seam should handle an exception that "
+"propagates out of a Seam component."
+msgstr ""
+"Estas anotações permitem você identificar como o Seam deve manejar uma "
+"exceção que se propaga fora de um componente Seam."
+
+#. Tag: literal
+#: Annotations.xml:706
+#, no-c-format
+msgid "@Redirect"
+msgstr "@Redirect "
+
+#. Tag: programlisting
+#: Annotations.xml:708
+#, no-c-format
+msgid "@Redirect(viewId=\"error.jsp\")"
+msgstr "@Redirect(viewId=\"error.jsp\") "
+
+#. Tag: para
+#: Annotations.xml:709
+#, no-c-format
+msgid ""
+"Specifies that the annotated exception causes a browser redirect to a "
+"specified view id."
+msgstr ""
+"Indica que a exceção anotada causa a redireção do localizador para uma "
+"específica visão de id."
+
+#. Tag: para
+#: Annotations.xml:714
+#, no-c-format
+msgid "<literal>viewId</literal> &mdash; specifies the JSF view id to redirect to."
+msgstr "<literal>viewId</literal> &mdash; Indica o redirecionamento para a visão JSF id. "
+
+#. Tag: para
+#: Annotations.xml:719
+#, no-c-format
+msgid ""
+"<literal>message</literal> &mdash; a message to be displayed, default to the "
+"exception message."
+msgstr ""
+"<literal>message</literal> &mdash; Uma mensagem a ser exibida, padrão para a "
+"mensagem de exceção. "
+
+#. Tag: para
+#: Annotations.xml:724 Annotations.xml:750
+#, no-c-format
+msgid ""
+"<literal>end</literal> &mdash; specifies that the long-running conversation "
+"should end, default to <literal>false</literal>."
+msgstr ""
+"<literal>end</literal> &mdash; Indica que uma conversação de longa execução deve "
+"ser finalizada, padrão para <literal>false</literal>. "
+
+#. Tag: literal
+#: Annotations.xml:732
+#, no-c-format
+msgid "@HttpError"
+msgstr "@HttpError "
+
+#. Tag: programlisting
+#: Annotations.xml:734
+#, no-c-format
+msgid "@HttpError(errorCode=404)"
+msgstr "@HttpError(errorCode=404) "
+
+#. Tag: para
+#: Annotations.xml:735
+#, no-c-format
+msgid "Specifies that the annotated exception causes a HTTP error to be sent."
+msgstr "Indica que a exceção anotada, causa um erro HTTP para ser enviado."
+
+#. Tag: para
+#: Annotations.xml:740
+#, no-c-format
+msgid ""
+"<literal>errorCode</literal> &mdash; the HTTP error code, default to "
+"<literal>500</literal>."
+msgstr ""
+"<literal>errorCode</literal> &mdash; o código de erro HTTP, padrão para "
+"<literal>500</literal>."
+
+#. Tag: para
+#: Annotations.xml:745
+#, no-c-format
+msgid ""
+"<literal>message</literal> &mdash; a message to be sent with the HTTP error, "
+"default to the exception message."
+msgstr ""
+"<literal>message</literal> &mdash; uma mensagem a ser enviada com o erro HTTP, "
+"padrão para a mensagem de exceção. "
+
+#. Tag: title
+#: Annotations.xml:761
+#, no-c-format
+msgid "Annotations for validation"
+msgstr "Anotações para validação "
+
+#. Tag: para
+#: Annotations.xml:762
+#, no-c-format
+msgid ""
+"This annotation triggers Hibernate Validator. It appears on a method of a "
+"Seam component, almost always an action listener method."
+msgstr ""
+"Esta é a anotação de disparadores Hibernate Validator. Isto aparecerá num "
+"método de um componente Seam, quase sempre um método action listener."
+
+#. Tag: para
+#: Annotations.xml:765
+#, no-c-format
+msgid ""
+"Please refer to the documentation for the Hibernate Annotations package for "
+"information about the annotations defined by the Hibernate Validator "
+"framework."
+msgstr ""
+"Para maiores informações sobre as anotações definidas pelo framework "
+"Hibernate Validator, por favor consulte a documentação do pacote de "
+"anotações para Hibernate."
+
+#. Tag: emphasis
+#: Annotations.xml:769
+#, no-c-format
+msgid ""
+"Note that use of <literal>@IfInvalid</literal> is now semi-deprecated and "
+"<literal>&lt;s:validateAll&gt;</literal> is now preferred."
+msgstr ""
+"Perceba que o uso de <literal>@IfInvalid</literal> é semi substituído e "
+"<literal>&lt;s:validateAll&gt;</literal> é preferido agora."
+
+#. Tag: literal
+#: Annotations.xml:773
+#, no-c-format
+msgid "@IfInvalid"
+msgstr "@IfInvalid "
+
+#. Tag: programlisting
+#: Annotations.xml:775
+#, no-c-format
+msgid "@IfInvalid(outcome=\"invalid\", refreshEntities=true)"
+msgstr "@IfInvalid(outcome=\"invalid\", refreshEntities=true) "
+
+#. Tag: para
+#: Annotations.xml:776
+#, no-c-format
+msgid ""
+"Specifies that Hibernate Validator should validate the component before the "
+"method is invoked. If the invocation fails, the specified outcome will be "
+"returned, and the validation failure messages returned by Hibernate "
+"Validator will be added to the <literal>FacesContext</literal>. Otherwise, "
+"the invocation will proceed."
+msgstr ""
+"Indica que o Hibernate Validator deve validar o componente antes que o "
+"método seja chamado. Caso a invocação falhar, o resultado especificado será "
+"retornado, e as mensagens de falha de validação, retornadas pelo Hibernate "
+"Validator, serão adicionadas ao <literal>FacesContext</literal>. Caso "
+"contrário, a invocação será processada."
+
+#. Tag: para
+#: Annotations.xml:781
+#, no-c-format
+msgid "<literal>outcome</literal> &mdash; the JSF outcome when validation fails."
+msgstr "<literal>outcome</literal> &mdash; o resultado JSF quando a validação falhar."
+
+#. Tag: para
+#: Annotations.xml:786
+#, no-c-format
+msgid ""
+"<literal>refreshEntities</literal> &mdash; specifies that any invalid entity "
+"in the managed state should be refreshed from the database when validation "
+"fails. Default to <literal>false</literal>. (Useful with extended "
+"persistence contexts.)"
+msgstr ""
+"<literal>refreshEntities</literal> &mdash; Demonstra que qualquer entidade "
+"inválida no estado gerenciado, deve ser atualizada desde o banco de dados "
+"quando falhar a validação. Padrão para <literal>false</literal>. (útil nos "
+"contextos de persistência estendida)"
+
+#. Tag: title
+#: Annotations.xml:797
+#, no-c-format
+msgid "Annotations for Seam Remoting"
+msgstr "Anotações para Seam Remoto"
+
+#. Tag: para
+#: Annotations.xml:798
+#, no-c-format
+msgid ""
+"Seam Remoting requires that the local interface of a session bean be "
+"annotated with the following annotation:"
+msgstr ""
+"O Seam remoto requer que a interface local de um bean de sessão seja anotada "
+"com a seguinte anotação:"
+
+#. Tag: literal
+#: Annotations.xml:803
+#, no-c-format
+msgid "@WebRemote"
+msgstr "@WebRemote "
+
+#. Tag: programlisting
+#: Annotations.xml:805
+#, no-c-format
+msgid "@WebRemote(exclude=\"path.to.exclude\")"
+msgstr "@WebRemote(exclude=\"path.to.exclude\") "
+
+#. Tag: para
+#: Annotations.xml:806
+#, no-c-format
+msgid ""
+"Indicates that the annotated method may be called from client-side "
+"JavaScript. The <literal>exclude</literal> property is optional and allows "
+"objects to be excluded from the result&#39;s object graph (see the Remoting "
+"chapter for more details)."
+msgstr ""
+"Indica que o método anotado pode ser chamado pelo lado cliente JavaScript. A "
+"propriedade <literal>exclude</literal> é opcional e permite que objetos "
+"sejam excluídos de resultados de objeto gráfico. (para maiores detalhes "
+"verifique o capítulo remoto)."
+
+#. Tag: title
+#: Annotations.xml:815
+#, no-c-format
+msgid "Annotations for Seam interceptors"
+msgstr "Anotações para interceptores Seam"
+
+#. Tag: para
+#: Annotations.xml:816
+#, no-c-format
+msgid "The following annotations appear on Seam interceptor classes."
+msgstr "As seguintes anotações aparecem nas classes de interceptores Seam."
+
+#. Tag: para
+#: Annotations.xml:819
+#, no-c-format
+msgid ""
+"Please refer to the documentation for the EJB 3.0 specification for "
+"information about the annotations required for EJB interceptor definition."
+msgstr ""
+"Por favor refira-se a documentação de especificação EJB 3.0, para informação "
+"sobre anotações requeridas para a definição de interceptor EJB."
+
+#. Tag: literal
+#: Annotations.xml:824
+#, no-c-format
+msgid "@Interceptor"
+msgstr "@Interceptor "
+
+#. Tag: programlisting
+#: Annotations.xml:829
+#, no-c-format
+msgid "@Interceptor(stateless=true)"
+msgstr "@Interceptor(stateless=true) "
+
+#. Tag: para
+#: Annotations.xml:830
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is stateless and Seam may optimize "
+"replication."
+msgstr "Indica que o interceptor é sem estado, e Seam pode otimizar a replicação. "
+
+#. Tag: programlisting
+#: Annotations.xml:835
+#, no-c-format
+msgid "@Interceptor(type=CLIENT)"
+msgstr "@Interceptor(type=CLIENT)  "
+
+#. Tag: para
+#: Annotations.xml:836
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is a \"client-side\" interceptor that is "
+"called before the EJB container."
+msgstr ""
+"Indica que este isto é um interceptor \"a favor do cliente\", do qual é "
+"chamado antes do recipiente EJB."
+
+#. Tag: programlisting
+#: Annotations.xml:841
+#, no-c-format
+msgid "@Interceptor(around={SomeInterceptor.class, OtherInterceptor.class})"
+msgstr "@Interceptor(around={SomeInterceptor.class, OtherInterceptor.class})"
+
+#. Tag: para
+#: Annotations.xml:842
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is positioned higher in the stack than the "
+"given interceptors."
+msgstr ""
+"Indica que o interceptor é posicionado mais alto na pilha do que nos "
+"interceptores especificados."
+
+#. Tag: programlisting
+#: Annotations.xml:847
+#, no-c-format
+msgid "@Interceptor(within={SomeInterceptor.class, OtherInterceptor.class})"
+msgstr "@Interceptor(within={SomeInterceptor.class, OtherInterceptor.class})"
+
+#. Tag: para
+#: Annotations.xml:848
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is positioned deeper in the stack than the "
+"given interceptors."
+msgstr ""
+"Indica que este interceptor é posicionado mais profundamente na pilha do que nos "
+"interceptores especificados."
+
+#. Tag: title
+#: Annotations.xml:860
+#, no-c-format
+msgid "Annotations for asynchronicity"
+msgstr "Anotações para assincronia"
+
+#. Tag: para
+#: Annotations.xml:861
+#, no-c-format
+msgid ""
+"The following annotations are used to declare an asynchronous method, for "
+"example:"
+msgstr ""
+"As anotações seguintes são utilizadas para declarar um método assíncrono, "
+"por exemplo:"
+
+#. Tag: programlisting
+#: Annotations.xml:864
+#, no-c-format
+msgid ""
+"@Asynchronous public void scheduleAlert(Alert alert, @Expiration Date date) "
+"{ ... }"
+msgstr ""
+"@Asynchronous public void scheduleAlert(Alert alert, @Expiration Date date) "
+"{ ... }"
+
+#. Tag: programlisting
+#: Annotations.xml:865
+#, no-c-format
+msgid ""
+"@Asynchronous public Timer scheduleAlerts(Alert alert, @Expiration Date "
+"date, \n"
+"@IntervalDuration long interval) { ... }"
+msgstr ""
+"@Asynchronous public Timer scheduleAlerts(Alert alert, @Expiration Date "
+"date, \n"
+"@IntervalDuration long interval) { ... }"
+
+#. Tag: literal
+#: Annotations.xml:868
+#, no-c-format
+msgid "<literal>@Asynchronous</literal>"
+msgstr "<literal>@Asynchronous</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:870
+#, no-c-format
+msgid "<programlisting>@Asynchronous</programlisting>"
+msgstr "<programlisting>@Asynchronous</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:871
+#, no-c-format
+msgid "Specifies that the method call is processed asynchronously."
+msgstr "Indica que o chamar método é processado assincronicamente."
+
+#. Tag: literal
+#: Annotations.xml:877
+#, no-c-format
+msgid "<literal>@Duration</literal>"
+msgstr "<literal>@Duration</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:879
+#, no-c-format
+msgid "<programlisting>@Duration</programlisting>"
+msgstr "<programlisting>@Duration</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:880
+#, no-c-format
+msgid ""
+"Specifies that a parameter of the asynchronous call is the duration before "
+"the call is processed (or first processed for recurring calls)."
+msgstr ""
+"Indica que um parâmetro de chamada assíncrona tem duração antes que a "
+"chamada for processada (ou processada primeiramente para chamadas "
+"recorrentes)."
+
+#. Tag: literal
+#: Annotations.xml:886
+#, no-c-format
+msgid "<literal>@Expiration</literal>"
+msgstr "<literal>@Expiration</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:888
+#, no-c-format
+msgid "<programlisting>@Expiration</programlisting>"
+msgstr "<programlisting>@Expiration</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:889
+#, no-c-format
+msgid ""
+"Specifies that a parameter of the asynchronous call is the datetime at which "
+"the call is processed (or first processed for recurring calls)."
+msgstr ""
+"Indica que o parâmetro de chamada assíncrona é de data/hora para cada chamada "
+"processada (ou processada primeiramente para chamadas recorrentes)."
+
+#. Tag: literal
+#: Annotations.xml:895
+#, no-c-format
+msgid "<literal>@IntervalDuration</literal>"
+msgstr "<literal>@IntervalDuration</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:897
+#, no-c-format
+msgid "<programlisting>@IntervalDuration</programlisting>"
+msgstr "<programlisting>@IntervalDuration</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:898
+#, no-c-format
+msgid ""
+"Specifies that an asynchronous method call recurs, and that the annotationed "
+"parameter is duration between recurrences."
+msgstr ""
+"Indica que uma chamada de método assíncrono retorna, e que o parâmetro "
+"anotado tem duração entre recorrentes."
+
+#. Tag: title
+#: Annotations.xml:907
+#, no-c-format
+msgid "Annotations for use with JSF <literal>dataTable</literal>"
+msgstr "Anotações para uso com o JSF <literal>dataTable</literal>"
+
+#. Tag: para
+#: Annotations.xml:908
+#, no-c-format
+msgid ""
+"The following annotations make it easy to implement clickable lists backed "
+"by a stateful session bean. They appear on attributes."
+msgstr ""
+"As seguintes anotações mostram claramente como implementar o composto de "
+"listas clicáveis por um bean de sessão monitorador. Elas aparecerão nos "
+"atributos."
+
+#. Tag: literal
+#: Annotations.xml:913
+#, no-c-format
+msgid "@DataModel"
+msgstr "@DataModel "
+
+#. Tag: programlisting
+#: Annotations.xml:915
+#, no-c-format
+msgid "@DataModel(\"variableName\")"
+msgstr "@DataModel(\"variableName\")"
+
+#. Tag: para
+#: Annotations.xml:916
+#, no-c-format
+msgid ""
+"Exposes an attribute of type <literal>List</literal>, <literal>Map</"
+"literal>, <literal>Set</literal> or <literal>Object[]</literal> as a JSF "
+"<literal>DataModel</literal> into the scope of the owning component (or the "
+"<literal>EVENT</literal> scope if the owning component is "
+"<literal>STATELESS</literal>). In the case of <literal>Map</literal>, each "
+"row of the <literal>DataModel</literal> is a <literal>Map.Entry</literal>."
+msgstr ""
+"Expõe um tipo de atributo<literal>List</literal>, <literal>Map</"
+"literal>, <literal>Set</literal> ou <literal>Object[]</literal> como um JSF "
+"<literal>DataModel</literal> dentro do escopo do componente pertencido (ou "
+"o escopo <literal>EVENT</literal> caso o componente pertencido seja "
+"<literal>STATELESS</literal>). No caso do <literal>Map</literal>, cada "
+"linha do <literal>DataModel</literal> e um <literal>Map.Entry</literal>."
+
+#. Tag: para
+#: Annotations.xml:921
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; name of the conversation context variable. "
+"Default to the attribute name."
+msgstr ""
+"<literal>value</literal> &mdash; nome da conversação da variável de contexto. "
+"Padrão para o nome de atributo."
+
+#. Tag: para
+#: Annotations.xml:926
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; if <literal>scope=ScopeType.PAGE</literal> "
+"is explicitly specified, the <literal>DataModel</literal> will be kept in "
+"the <literal>PAGE</literal> context."
+msgstr ""
+"<literal>scope</literal> &mdash; se <literal>scope=ScopeType.PAGE</literal> for "
+"claramente explicado, o <literal>DataModel</literal> será mantido no "
+"contexto <literal>PAGE</literal>. "
+
+#. Tag: literal
+#: Annotations.xml:934
+#, no-c-format
+msgid "<literal>@DataModelSelection</literal>"
+msgstr "<literal>@DataModelSelection</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:936
+#, no-c-format
+msgid "<programlisting>@DataModelSelection</programlisting>"
+msgstr "<programlisting>@DataModelSelection</programlisting> "
+
+#. Tag: para
+#: Annotations.xml:937
+#, no-c-format
+msgid ""
+"Injects the selected value from the JSF <literal>DataModel</literal> (this "
+"is the element of the underlying collection, or the map value)."
+msgstr ""
+"Injeta o valor selecionado pelo JSF <literal>DataModel</literal> (este é o "
+"elemento da coleção subjacente, ou o valor do mapa). "
+
+#. Tag: para
+#: Annotations.xml:942 Annotations.xml:958
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; name of the conversation context variable. "
+"Not needed if there is exactly one <literal>@DataModel</literal> in the "
+"component."
+msgstr ""
+"<literal>value</literal> &mdash; Nome da conversação de variável de contexto. Isto "
+"não é necessário se não houver um <literal>@DataModel</literal> no "
+"componente."
+
+#. Tag: literal
+#: Annotations.xml:950
+#, no-c-format
+msgid "<literal>@DataModelSelectionIndex</literal>"
+msgstr "<literal>@DataModelSelectionIndex</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:952
+#, no-c-format
+msgid "<programlisting>@DataModelSelectionIndex</programlisting>"
+msgstr "<programlisting>@DataModelSelectionIndex</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:953
+#, no-c-format
+msgid ""
+"Exposes the selection index of the JSF <literal>DataModel</literal> as an "
+"attribute of the component (this is the row number of the underlying "
+"collection, or the map key)."
+msgstr ""
+"Expõe o índex da seleção do JSF <literal>DataModel</literal> como um "
+"atributo do componente (isto é número de linhas de uma coleção subjacente, "
+"ou o mapa chave)."
+
+#. Tag: title
+#: Annotations.xml:969
+#, no-c-format
+msgid "Meta-annotations for databinding"
+msgstr "Meta-anotações para vinculação de dados"
+
+#. Tag: para
+#: Annotations.xml:970
+#, no-c-format
+msgid ""
+"These meta-annotations make it possible to implement similar functionality "
+"to <literal>@DataModel</literal> and <literal>@DataModelSelection</literal> "
+"for other datastructures apart from lists."
+msgstr ""
+"Estas meta-anotações possibilita implementar funcionalidade similar a "
+"<literal>@DataModel</literal> e <literal>@DataModelSelection</literal> para "
+"outras estruturas de dados exceto através de listas. "
+
+#. Tag: literal
+#: Annotations.xml:975
+#, no-c-format
+msgid "@DataBinderClass"
+msgstr "@DataBinderClass"
+
+#. Tag: programlisting
+#: Annotations.xml:977
+#, no-c-format
+msgid "@DataBinderClass(DataModelBinder.class)"
+msgstr "@DataBinderClass(DataModelBinder.class)"
+
+#. Tag: para
+#: Annotations.xml:978
+#, no-c-format
+msgid "Specifies that an annotation is a databinding annotation."
+msgstr "Indica que uma anotação é uma anotação de ligação de dados."
+
+#. Tag: literal
+#: Annotations.xml:984
+#, no-c-format
+msgid "@DataSelectorClass"
+msgstr "@DataSelectorClass"
+
+#. Tag: programlisting
+#: Annotations.xml:986
+#, no-c-format
+msgid "@DataSelectorClass(DataModelSelector.class)"
+msgstr "@DataSelectorClass(DataModelSelector.class)"
+
+#. Tag: para
+#: Annotations.xml:987
+#, no-c-format
+msgid "Specifies that an annotation is a dataselection annotation."
+msgstr "Indica que uma anotação é uma anotação de seleção de dados."
+
+#. Tag: title
+#: Annotations.xml:996
+#, no-c-format
+msgid "Annotations for packaging"
+msgstr "Anotações para empacotamento"
+
+#. Tag: para
+#: Annotations.xml:997
+#, no-c-format
+msgid ""
+"This annotation provides a mechanism for declaring information about a set "
+"of components that are packaged together. It can be applied to any Java "
+"package."
+msgstr ""
+"Este anotação proporciona um mecanismo para declarar informação sobre o "
+"conjunto de componentes que são empacotados juntos. Isto pode ser aplicado "
+"para qualquer pacote Java."
+
+#. Tag: literal
+#: Annotations.xml:1002
+#, no-c-format
+msgid "@Namespace"
+msgstr "@Namespace"
+
+#. Tag: programlisting
+#: Annotations.xml:1004
+#, no-c-format
+msgid "@Namespace(value=\"http://jboss.com/products/seam/example/seampay\")"
+msgstr "@Namespace(value=\"http://jboss.com/products/seam/example/seampay\")"
+
+#. Tag: para
+#: Annotations.xml:1005
+#, no-c-format
+msgid ""
+"Specifies that components in the current package are associated with the "
+"given namespace. The declared namespace can be used as an XML namespace in a "
+"<literal>components.xml</literal> file to simplify application configuration."
+msgstr ""
+"Indica que os componentes num pacote atual são associados ao espaço do nome "
+"dado. O declarado espaço para o nome pode ser usado como um espaço do nome "
+"XML num arquivo <literal>components.xml</literal> para configuração de "
+"aplicação simplificada."
+
+#. Tag: programlisting
+#: Annotations.xml:1008
+#, no-c-format
+msgid ""
+"@Namespace(value=\"http://jboss.com/products/seam/core\", prefix=\"org.jboss."
+"seam.core\")"
+msgstr ""
+"@Namespace(value=\"http://jboss.com/products/seam/core\", prefix=\"org.jboss."
+"seam.core\")"
+
+#. Tag: para
+#: Annotations.xml:1009
+#, no-c-format
+msgid ""
+"Specifies a namespace to associate with a given package. Additionally, it "
+"specifies a component name prefix to be applied to component names specified "
+"in the XML file. For example, an XML element named <literal>microcontainer</"
+"literal> that is associated with this namespace would be understood to "
+"actually refere to a component named <literal>org.jboss.seam.core."
+"microcontainer</literal>."
+msgstr ""
+"Indica o espaço do nome para associar com um pacote dado. Além disso, isto "
+"indica o prefixo do nome do componente a ser aplicado nos nomes do componente "
+"especificado no arquivo XML. Por exemplo, um elemento XML "
+"nomeado<literal>microcontainer</literal> do qual é associado com o espaço do "
+"nome, deveria ser entendido para referir-se a um componente "
+"nomeado <literal>org.jboss.seam.core.microcontainer</literal>."
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Author_Group.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Author_Group.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Author_Group.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,42 @@
+# translation of Author_Group.po to Brazilian Portuguese
+# Language pt-BR translations for JBEAP package.
+#
+# Automatically generated, 2008.
+# Leticia de Lima <ldelima at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Author_Group\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-05-19 06:14+0000\n"
+"PO-Revision-Date: 2008-05-19 16:34+1000\n"
+"Last-Translator: Leticia de Lima <ldelima at redhat.com>\n"
+"Language-Team: Brazilian Portuguese <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: firstname
+#: Author_Group.xml:16
+#, no-c-format
+msgid ""
+"Written By: Gavin King, Christian Bauer, Norman Richards, Shane Bryzak, Pete "
+"Muir, Emmanuel Bernard, Max Andersen, Michael Youngstrom, Thomas Heute, "
+"Michael Yuan"
+msgstr ""
+"Escrito por: Gavin King, Christian Bauer, Norman Richards, Shane Bryzak, Pete "
+"Muir, Emmanuel Bernard, Max Andersen, Michael Youngstrom, Thomas Heute, "
+"Michael Yuan."
+
+#. Tag: firstname
+#: Author_Group.xml:19
+#, no-c-format
+msgid ""
+"Japanese Translation: Fusayuki Minamoto, Takayoshi Kimura, Takayoshi Osawa, "
+"Reiko Ohtsuka, Syunpei Shiraishi, Toshiya Kobayashi, Shigeaki Wakizaka, Ken "
+"Yamada, Noriko Mizumoto"
+msgstr ""
+"Tradução Japonesa: Fusayuki Minamoto, Takayoshi Kimura, Takayoshi Osawa, "
+"Reiko Ohtsuka, Syunpei Shiraishi, Toshiya Kobayashi, Shigeaki Wakizaka, Ken "
+"Yamada, Noriko Mizumoto."
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Book_Info.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Book_Info.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Book_Info.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,46 @@
+# translation of Book_Info.po to Brazilian Portuguese
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Leticia de Lima <ldelima at redhat.com>, 2007, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Book_Info\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-02-04 23:29+0000\n"
+"PO-Revision-Date: 2008-05-21 13:34+1000\n"
+"Last-Translator: Leticia de Lima <ldelima at redhat.com>\n"
+"Language-Team: Brazilian Portuguese <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms:  JBEAP420 \n"
+
+#. Tag: title
+#: Book_Info.xml:5
+#, no-c-format
+msgid "Seam Reference Guide"
+msgstr "Guia de Referência Seam"
+
+#. Tag: subtitle
+#: Book_Info.xml:6
+#, no-c-format
+msgid "JBoss Enterprise Application Platform"
+msgstr "Plataforma de Aplicativo JBoss Enterprise"
+
+#. Tag: para
+#: Book_Info.xml:11
+#, no-c-format
+msgid ""
+"This book is a Reference Guide to Seam 1.2 for JBoss Enterprise Application "
+"Platform 4.3."
+msgstr "Este livro é um guia de referência do Seam 1.2 para a Plataforma de Aplicativo JBoss Enterprise 4.3."
+
+#. Tag: holder
+#: Book_Info.xml:22
+#, no-c-format
+msgid "&HOLDER;"
+msgstr "&HOLDER;"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Cache.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Cache.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Cache.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,371 @@
+# translation of Cache.po to Brazilian Portuguese
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Leticia de Lima <ldelima at redhat.com>, 2007, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Cache\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2008-02-27 11:10+1000\n"
+"Last-Translator: Leticia de Lima <ldelima at redhat.com>\n"
+"Language-Team: Brazilian Portuguese <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms:  JBEAP420 \n"
+
+#. Tag: title
+#: Cache.xml:6
+#, no-c-format
+msgid "Caching"
+msgstr "Armazenamento em cache"
+
+#. Tag: para
+#: Cache.xml:7
+#, no-c-format
+msgid ""
+"In almost all enterprise applications, the database is the primary "
+"bottleneck, and the least scalable tier of the runtime environment. People "
+"from a PHP/Ruby environment will try to tell you that so-called \"shared "
+"nothing\" architectures scale well. While that may be literally true, I "
+"don&#39;t know of many interesting multi-user applications which can be "
+"implemented with no sharing of resources between different nodes of the "
+"cluster. What these silly people are really thinking of is a \"share nothing "
+"except for the database\" architecture. Of course, sharing the database is "
+"the primary problem with scaling a multi-user application&mdash;so the claim "
+"that this architecture is highly scalable is absurd, and tells you a lot "
+"about the kind of applications that these folks spend most of their time "
+"working on."
+msgstr ""
+"Em quase todos os aplicativos empresariais, o banco de dados é primeiramente "
+"afunilado, e na menor quantidade de filas escaláveis do ambiente de tempo de "
+"execução. Pessoas do ambiente PHP/Ruby irão tentar informá-lo bem a respeito das chamadas "
+"escalas de arquiteturas \"não compartilhadas\". Enquanto isto pode ser verdade, não sabemos de muitas aplicações interessantes de usuário-múltiplo que podem ser implementadas sem nenhuma divisão de recursos entre diferentes nós agrupados. Na realidade, estas pessoas pensam que é uma arquitetura \"sem compartilhamento com exceção do banco de dados\". Lógico, dividir o banco de dados é um problema primário escalando a aplicação de usuário múltiplo &mdash; então a afirmação de que esta arquitetura é altamente escalável não está correta, e demonstra o tipo de arquitetura em que estas pessoas gastaram tempo trabalhando nisto."
+
+#. Tag: para
+#: Cache.xml:10
+#, no-c-format
+msgid ""
+"Almost anything we can possibly do to share the database <emphasis>less "
+"often</emphasis> is worth doing."
+msgstr ""
+"Nós podemos possivelmente fazer quase tudo que valha a pena ser feito para compartilhar o banco de "
+"dados <emphasis> menos freqüentemente</emphasis>."
+
+#. Tag: para
+#: Cache.xml:13
+#, no-c-format
+msgid ""
+"This calls for a cache. Well, not just one cache. A well designed Seam "
+"application will feature a rich, multi-layered caching strategy that impacts "
+"every layer of the application:"
+msgstr "Isto chama por um cache, na realidade não apenas um. Uma aplicação Seam com um bom design irá retratar uma valiosa estratégia com cache de camada-múltipla que impacta cada camada da aplicação:"
+
+#. Tag: para
+#: Cache.xml:18
+#, no-c-format
+msgid ""
+"The database, of course, has its own cache. This is super-important, but "
+"can&#39;t scale like a cache in the application tier."
+msgstr "É claro que o banco de dados possui o próprio cache. Isto é super importante, mas não pode ser escalado como um cache na camada da aplicação."
+
+#. Tag: para
+#: Cache.xml:23
+#, no-c-format
+msgid ""
+"Your ORM solution (Hibernate, or some other JPA implementation) has a second-"
+"level cache of data from the database. This is a very powerful capability, "
+"but is often misused. In a clustered environment, keeping the data in the "
+"cache transactionally consistent across the whole cluster, and with the "
+"database, is quite expensive. It makes most sense for data which is shared "
+"between many users, and is updated rarely. In traditional stateless "
+"architectures, people often try to use the second-level cache for "
+"conversational state. This is always bad, and is especially wrong in Seam."
+msgstr "A sua solução ORM (Hibernate ou qualquer outra implementação JPA) possui um cache de segundo nível de dados a partir do banco de dados. Isto é um recurso bem potente, mas é freqüentemente mal utilizado. Num ambiente agrupado, manter os dados num cache consistente transacionalmente através do total agrupamento, e com o banco de dados, é bastante caro. Isto faz mas sentido para os dados que são compartilhados entre muitos usuários, e são atualizados raramente. Nas arquiteturas sem informação de estado tradicionais, as pessoas freqüentemente tentam usar o cache de segundo nível para o estado conversacional. Isto não é bom, e é inteiramente errado no Seam."
+
+#. Tag: para
+#: Cache.xml:28
+#, no-c-format
+msgid ""
+"The Seam conversation context is a cache of conversational state. Components "
+"you put into the conversation context can hold and cache state relating to "
+"the current user interaction."
+msgstr "O contexto de conversação Seam é um cache de estado conversacional. Os componentes postos num contexto de conversação podem segurar e relatar o estado do cache ao atual usuário de interação."
+
+#. Tag: para
+#: Cache.xml:33
+#, no-c-format
+msgid ""
+"In particular, the Seam-managed persistence context (or an extended EJB "
+"container-managed persistence context associated with a conversation-scoped "
+"stateful session bean) acts as a cache of data that has been read in the "
+"current conversation. This cache tends to have a pretty high hitrate! Seam "
+"optimizes the replication of Seam-managed persistence contexts in a "
+"clustered environment, and there is no requirement for transactional "
+"consistency with the database (optimistic locking is sufficient) so you "
+"don&#39;t need to worry too much about the performance implications of this "
+"cache, unless you read thousands of objects into a single persistence "
+"context."
+msgstr "Em geral, o contexto de persistência gerenciado pelo Seam (ou um contexto de persistência gerenciado pelo container EJB associado com o bean de sessão monitorado pelo escopo de conversação) atua como um cache de dados do qual foi lido n conversação atual. Este cache tende a ter um alto hitrate! O Seam é eficaz nos contextos de persistência gerenciado pelo Seam num ambiente agrupado, e não há solicitação de consistência transacional com o banco de dados ( um bloqueio otimista é suficiente). Então não há necessidade de preocupar-se com as implicações de desempenho deste cache, a não ser que você veja milhões de objetos dentro de um contexto de persistência única."
+
+#. Tag: para
+#: Cache.xml:38
+#, no-c-format
+msgid ""
+"The application can cache non-transactional state in the Seam application "
+"context. State kept in the application context is of course not visible to "
+"other nodes in the cluster."
+msgstr "O aplicativo pode publicar um cache não-transacional no contexto de aplicativo Seam. O anúncio feito no contexto do aplicativo não é visível para outros nós no cluster."
+
+#. Tag: para
+#: Cache.xml:43
+#, no-c-format
+msgid ""
+"The application can cache transactional state using the Seam "
+"<literal>pojoCache</literal> component, which integrates JBossCache into the "
+"Seam environment. This state will be visible to other nodes if you run JBoss "
+"cache in a clustered mode."
+msgstr "O aplicativo pode publicar transacionalmente o cache usando o componente <literal>pojoCache</literal> Seam, que integra o JBossCache no ambiente Seam. A publicação irá ser visível em outros nós, caso você rode o cache JBoss num modo agrupado."
+
+#. Tag: para
+#: Cache.xml:48
+#, no-c-format
+msgid ""
+"Finally, Seam lets you cache rendered fragments of a JSF page. Unlike the "
+"ORM second-level cache, this cache is not automatically invalidated when "
+"data changes, so you need to write application code to perform explicit "
+"invalidation, or set appropriate expiration policies."
+msgstr "Finalmente o Seam permite que você cache os fragmentos processados de uma página JSF. Diferente do cache de segundo nível ORM, este cache não é automaticamente inválido quando há mudanças de dados. Desta forma, você precisa escrever o código do aplicativo para executar uma invalidação explícita ou organizar apropriadamente as políticas expiradas."
+
+#. Tag: para
+#: Cache.xml:53
+#, no-c-format
+msgid ""
+"For more information about the second-level cache, you&#39;ll need to refer "
+"to the documentation of your ORM solution, since this is an extremely "
+"complex topic. In this section we&#39;ll discuss the use of JBossCache "
+"directly, via the <literal>pojoCache</literal> component, or as the page "
+"fragment cache, via the <literal>&lt;s:cache&gt;</literal> control."
+msgstr "Para maiores informações sobre o cache de segundo nível, você irá precisar a documentação de sua solução ORM, uma vez que isto é um tópico extremamente complexo. Nesta seção nós iremos falar a respeito do uso do JBossCache diretamente, através do componente <literal>pojoCache</literal> ou como a página de cache de fragmento através do controle <literal>&lt;s:cache&gt;</literal>."
+
+#. Tag: title
+#: Cache.xml:57
+#, no-c-format
+msgid "Using JBossCache in Seam"
+msgstr "Usando o JBossCache no Seam"
+
+#. Tag: para
+#: Cache.xml:58
+#, no-c-format
+msgid ""
+"The built-in <literal>pojoCache</literal> component manages an instance of "
+"<literal>org.jboss.cache.aop.PojoCache</literal>. You can safely put any "
+"immutable Java object in the cache, and it will be replicated across the "
+"cluster (assuming that replication is enabled). If you want to keep mutable "
+"objects in the cache, you&#39;ll need to run the JBossCache bytecode "
+"preprocessor to ensure that changes to the objects will be automatically "
+"detected and replicated."
+msgstr "O componente <literal>pojoCache</literal> interno gerencia uma instância do <literal>org.jboss.cache.aop.PojoCache</literal>. Você pode colocar qualquer objeto Java imutável no cache, e isto será replicado através do cluster (assumindo que a replicação seja capacitada). Caso você queira guardar os objetos mutáveis no cache, você precisará rodar o pré-processador código byte para garantir que as mudanças aos objetos serão automaticamente detectadas e replicadas."
+
+#. Tag: para
+#: Cache.xml:61
+#, no-c-format
+msgid ""
+"To use <literal>pojoCache</literal>, all you need to do is put the "
+"JBossCache jars in the classpath, and provide a resource named "
+"<literal>treecache.xml</literal> with an appropriate cache configuration. "
+"JBossCache has many scary and confusing configuration settings, so we "
+"won&#39;t discuss them here. Please refer to the JBossCache documentation "
+"for more information."
+msgstr "Coloque as jarras na classpath e forneça o nomeado recurso <literal>treecache.xml</literal> com a configuração de cache apropriada, para usar o <literal>pojoCache</literal>. O JBossCache possui muitos conjuntos de configuração confusos, então não falaremos a respeito. Por favor consulte a documentação JBoss para maiores informações."
+
+#. Tag: para
+#: Cache.xml:64
+#, no-c-format
+msgid ""
+"For an EAR depoyment of Seam, we recommend that the JBossCache jars and "
+"configuration go directly into the EAR. Make sure you declare the jars in "
+"<literal>application.xml</literal>."
+msgstr "Recomendamos que as jarras JBossCahe e configuração vão diretamente ao EAR para uma implementação EAR do Seam. Certifique-se de declarar as jarras na <literal>application.xml</literal>."
+
+#. Tag: para
+#: Cache.xml:67
+#, no-c-format
+msgid "Now you can inject the cache into any Seam component:"
+msgstr "Agora você pode injetar o Cache em qualquer componente Seam:"
+
+#. Tag: programlisting
+#: Cache.xml:70
+#, no-c-format
+msgid ""
+"@Name(\"chatroom\")\n"
+"public class Chatroom {\n"
+"    @In PojoCache pojoCache;\n"
+"    \n"
+"    public void join(String username) {\n"
+"      try\n"
+"      {\n"
+"         Set&lt;String&gt; userList = (Set&lt;String&gt;) pojoCache.get"
+"(\"chatroom\", \"userList\");\n"
+"         if (userList==null) \n"
+"         {\n"
+"            userList = new HashSet&lt;String&gt;();\n"
+"            pojoCache.put(\"chatroom\", \"userList\", userList);\n"
+"         }\n"
+"         userList.put(username);\n"
+"      }\n"
+"      catch (CacheException ce)\n"
+"      {\n"
+"         throw new RuntimeException(ce);\n"
+"      }\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"chatroom\")\n"
+"public class Chatroom {\n"
+"    @In PojoCache pojoCache;\n"
+"    \n"
+"    public void join(String username) {\n"
+"      try\n"
+"      {\n"
+"         Set&lt;String&gt; userList = (Set&lt;String&gt;) pojoCache.get"
+"(\"chatroom\", \"userList\");\n"
+"         if (userList==null) \n"
+"         {\n"
+"            userList = new HashSet&lt;String&gt;();\n"
+"            pojoCache.put(\"chatroom\", \"userList\", userList);\n"
+"         }\n"
+"         userList.put(username);\n"
+"      }\n"
+"      catch (CacheException ce)\n"
+"      {\n"
+"         throw new RuntimeException(ce);\n"
+"      }\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Cache.xml:71
+#, no-c-format
+msgid ""
+"If you want to have multiple JBossCache configurations in your application, "
+"use <literal>components.xml</literal>:"
+msgstr "Caso queira ter configurações JBossCache múltiplas na sua aplicação, use <literal>components.xml</literal>:"
+
+#. Tag: programlisting
+#: Cache.xml:74
+#, no-c-format
+msgid ""
+"&lt;core:pojo-cache name=\"myCache\" cfg-resource-name=\"myown/cache.xml\"/"
+"&gt;"
+msgstr ""
+"&lt;core:pojo-cache name=\"myCache\" cfg-resource-name=\"myown/cache.xml\"/"
+"&gt;"
+
+#. Tag: title
+#: Cache.xml:78
+#, no-c-format
+msgid "Page fragment caching"
+msgstr "Página de armazenamento em cache de fragmento"
+
+#. Tag: para
+#: Cache.xml:79
+#, no-c-format
+msgid ""
+"The most interesting user of JBossCache is the <literal>&lt;s:cache&gt;</"
+"literal> tag, Seam&#39;s solution to the problem of page fragment caching in "
+"JSF. <literal>&lt;s:cache&gt;</literal> uses <literal>pojoCache</literal> "
+"internally, so you need to follow the steps listed above before you can use "
+"it. (Put the jars in the EAR, wade through the scary configuration options, "
+"etc.)"
+msgstr "O usuário mais interessante do JBossCache é o caracter <literal>&lt;s:cache&gt;</literal>, a solução do Seam para a página de armazenamento em cache de fragmento em JSF. O <literal>&lt;s:cache&gt;</literal> usa internamente o <literal>pojoCache</literal>, então você precisa seguir os passos listados acima antes de usá-lo. (Coloque as jarras no EAR, processe lentamente as opções de configuração, etc.)"
+
+#. Tag: para
+#: Cache.xml:82
+#, no-c-format
+msgid ""
+"<literal>&lt;s:cache&gt;</literal> is used for caching some rendered content "
+"which changes rarely. For example, the welcome page of our blog displays the "
+"recent blog entries:"
+msgstr "O <literal>&lt;s:cache&gt;</literal> é usado para realizar o cache em alguns conteúdos processados que mudam raramente. Por exemplo, a página de entrada de nosso blog apresenta as recentes entradas no blog:"
+
+#. Tag: programlisting
+#: Cache.xml:85
+#, no-c-format
+msgid ""
+"&lt;s:cache key=\"recentEntries-#{blog.id}\" region=\"welcomePageFragments"
+"\"&gt;\n"
+"   &lt;h:dataTable value=\"#{blog.recentEntries}\" var=\"blogEntry\"&gt;\n"
+"      &lt;h:column&gt;\n"
+"         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"         &lt;div&gt;\n"
+"            &lt;s:formattedText value=\"#{blogEntry.body}\"/&gt;\n"
+"         &lt;/div&gt;\n"
+"      &lt;/h:column&gt;\n"
+"   &lt;/h:dataTable&gt;\n"
+"&lt;/s:cache&gt;"
+msgstr ""
+"&lt;s:cache key=\"recentEntries-#{blog.id}\" region=\"welcomePageFragments"
+"\"&gt;\n"
+"   &lt;h:dataTable value=\"#{blog.recentEntries}\" var=\"blogEntry\"&gt;\n"
+"      &lt;h:column&gt;\n"
+"         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"         &lt;div&gt;\n"
+"            &lt;s:formattedText value=\"#{blogEntry.body}\"/&gt;\n"
+"         &lt;/div&gt;\n"
+"      &lt;/h:column&gt;\n"
+"   &lt;/h:dataTable&gt;\n"
+"&lt;/s:cache&gt;"
+
+#. Tag: para
+#: Cache.xml:86
+#, no-c-format
+msgid ""
+"The <literal>key</literal> let&#39;s you have multiple cached versions of "
+"each page fragment. In this case, there is one cached version per blog. The "
+"<literal>region</literal> determines the JBossCache node that all version "
+"will be stored in. Different nodes may have different expiry policies. "
+"(That&#39;s the stuff you set up using the aforementioned scary "
+"configuration options.)"
+msgstr "A <literal>key</literal> permite que você tenha múltiplas versões de cache de cada fragmento de página. Neste caso, há uma versão de cache por blog. A <literal>region</literal> região determina o nó do JBossCache que todas as versões serão armazenadas. Nós diferentes talvez possuam políticas diferentes de expiração. (É o que você monta usando as opções de configuração previamente mencionadas.)"
+
+#. Tag: para
+#: Cache.xml:89
+#, no-c-format
+msgid ""
+"Of course, the big problem with <literal>&lt;s:cache&gt;</literal> is that "
+"it is too stupid to know when the underlying data changes (for example, when "
+"the blogger posts a new entry). So you need to evict the cached fragment "
+"manually:"
+msgstr "O problema com o <literal>&lt;s:cache&gt;</literal> é que este não identifica quando há mudanças de dados fundamentais ( por exemplo, o blogger edita uma nova entrada). Desta maneira, você precisa remover o cache de fragmento manualmente: "
+
+#. Tag: programlisting
+#: Cache.xml:92
+#, no-c-format
+msgid ""
+"public void post() {\n"
+"    ...\n"
+"    entityManager.persist(blogEntry);\n"
+"    pojoCache.remove(\"welcomePageFragments\", \"recentEntries-\" + blog."
+"getId() );\n"
+"}"
+msgstr ""
+"public void post() {\n"
+"    ...\n"
+"    entityManager.persist(blogEntry);\n"
+"    pojoCache.remove(\"welcomePageFragments\", \"recentEntries-\" + blog."
+"getId() );\n"
+"}"
+
+#. Tag: para
+#: Cache.xml:93
+#, no-c-format
+msgid ""
+"Alternatively, if it is not critical that changes are immediately visible to "
+"the user, you could set a short expiry time on the JbossCache node."
+msgstr "Alternativamente, caso não seja importante que as mudanças sejam imediatamente visíveis ao usuário, você pode configurar um tempo de expiração menor no nó do JBossCache."
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Components.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Components.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Components.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2318 @@
+# translation of Components.po to Brazilian Portuguese
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Leticia de Lima <ldelima at redhat.com>, 2007, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Components\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2008-03-07 09:19+1000\n"
+"Last-Translator: Leticia de Lima <ldelima at redhat.com>\n"
+"Language-Team: Brazilian Portuguese <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms:  JBEAP420 \n"
+
+#. Tag: title
+#: Components.xml:6
+#, no-c-format
+msgid "Built-in Seam components"
+msgstr "Componentes Internos Seam"
+
+#. Tag: para
+#: Components.xml:7
+#, no-c-format
+msgid ""
+"This chapter describes Seam&#39;s built-in components, and their "
+"configuration properties."
+msgstr ""
+"Este capítulo descreve os componentes internos do Seam, e suas propriedades de "
+"configuração."
+
+#. Tag: para
+#: Components.xml:10
+#, no-c-format
+msgid ""
+"Note that you can replace any of the built in components with your own "
+"implementations simply by specifying the name of one of the built in "
+"components on your own class using <literal>@Name</literal>."
+msgstr ""
+"Perceba que você pode repôr qualquer um dos componentes internos com a sua "
+"própria implementação, apenas especificando o nome de um dos componentes "
+"internos na própria classe, utilizando <literal>@Name</literal>."
+
+#. Tag: para
+#: Components.xml:13
+#, no-c-format
+msgid ""
+"Note also that even though all the built in components use a qualified name, "
+"most of them are aliased to unqualified names by default. These aliases "
+"specify <literal>auto-create=\"true\"</literal>, so you do not need to use "
+"<literal>create=true</literal> when injecting built-in components by their "
+"unqualified name."
+msgstr ""
+"Além disso, mesmo que todos os componentes internos utilizem um nome "
+"qualificado, a maioria deles serão analisados a partir de nomes não "
+"qualificados pelo padrão. Estas análises indicam <literal>auto-create=\"true"
+"\"</literal>, então você não precisa utilizar <literal>create=true</literal> "
+"quando injetando os componentes internos por nomes não qualificados."
+
+#. Tag: title
+#: Components.xml:17
+#, no-c-format
+msgid "Context injection components"
+msgstr "Componentes de Injeção de Contexto"
+
+#. Tag: para
+#: Components.xml:18
+#, no-c-format
+msgid ""
+"The first set of built in components exist purely to support injection of "
+"various contextual objects. For example, the following component instance "
+"variable would have the Seam session context object injected:"
+msgstr ""
+"A primeira série de componentes internos existe puramente para suportar a "
+"injeção de vários objetos contextuais. Por exemplo, os seguintes "
+"componentes da variável da instância devem ter o injetado objeto do contexto "
+"da sessão Seam:"
+
+#. Tag: programlisting
+#: Components.xml:21
+#, no-c-format
+msgid "@In private Context sessionContext;"
+msgstr "@In private Context sessionContext;"
+
+#. Tag: literal
+#: Components.xml:24
+#, no-c-format
+msgid "org.jboss.seam.core.eventContext"
+msgstr "org.jboss.seam.core.eventContext"
+
+#. Tag: para
+#: Components.xml:26
+#, no-c-format
+msgid "Manager component for the event context object"
+msgstr "Componente gerenciador para o evento do objeto do contexto"
+
+#. Tag: literal
+#: Components.xml:32
+#, no-c-format
+msgid "org.jboss.seam.core.pageContext"
+msgstr "org.jboss.seam.core.pageContext"
+
+#. Tag: para
+#: Components.xml:34
+#, no-c-format
+msgid "Manager component for the page context object"
+msgstr "Componente gerenciador para a página do objeto do contexto"
+
+#. Tag: literal
+#: Components.xml:40
+#, no-c-format
+msgid "org.jboss.seam.core.conversationContext"
+msgstr "org.jboss.seam.core.conversationContext"
+
+#. Tag: para
+#: Components.xml:42
+#, no-c-format
+msgid "Manager component for the conversation context object"
+msgstr "Componente gerenciador para a conversação do objeto do contexto"
+
+#. Tag: literal
+#: Components.xml:48
+#, no-c-format
+msgid "org.jboss.seam.core.sessionContext"
+msgstr "org.jboss.seam.core.sessionContext"
+
+#. Tag: para
+#: Components.xml:50
+#, no-c-format
+msgid "Manager component for the session context object"
+msgstr "Componente gerenciador para a sessão do objeto do contexto"
+
+#. Tag: literal
+#: Components.xml:56
+#, no-c-format
+msgid "org.jboss.seam.core.applicationContext"
+msgstr "org.jboss.seam.core.applicationContext"
+
+#. Tag: para
+#: Components.xml:58
+#, no-c-format
+msgid "Manager component for the appication context object"
+msgstr "Componente gerenciador para o aplicativo do objeto do contexto"
+
+#. Tag: literal
+#: Components.xml:64
+#, no-c-format
+msgid "org.jboss.seam.core.businessProcessContext"
+msgstr "org.jboss.seam.core.businessProcessContext"
+
+#. Tag: para
+#: Components.xml:66
+#, no-c-format
+msgid "Manager component for the business process context object"
+msgstr "Componente gerenciador para o processo comercial do objeto do contexto"
+
+#. Tag: literal
+#: Components.xml:72
+#, no-c-format
+msgid "org.jboss.seam.core.facesContext"
+msgstr "org.jboss.seam.core.facesContext"
+
+#. Tag: para
+#: Components.xml:74
+#, no-c-format
+msgid ""
+"Manager component for the <literal>FacesContext</literal> context object "
+"(not a true Seam context)"
+msgstr ""
+"Componente gerenciador para o objeto do contexto <literal>FacesContext</"
+"literal> (não é um contexto Seam verdadeiro)"
+
+#. Tag: para
+#: Components.xml:80 Components.xml:263 Components.xml:437 Components.xml:568
+#, no-c-format
+msgid "All of these components are always installed."
+msgstr "Todos estes componentes são sempre instalados"
+
+#. Tag: title
+#: Components.xml:86
+#, no-c-format
+msgid "Utility components"
+msgstr "Componentes utilitários"
+
+#. Tag: para
+#: Components.xml:87
+#, no-c-format
+msgid "These components are merely useful."
+msgstr "Estes componentes são inteiramente úteis."
+
+#. Tag: literal
+#: Components.xml:92
+#, no-c-format
+msgid "org.jboss.seam.core.facesMessages"
+msgstr "org.jboss.seam.core.facesMessages"
+
+#. Tag: para
+#: Components.xml:94
+#, no-c-format
+msgid "Allows faces success messages to propagate across a browser redirect."
+msgstr "Permite que as mensagens de sucesso de superfície se propagem através do redirecionamento do navegador."
+
+#. Tag: para
+#: Components.xml:99
+#, no-c-format
+msgid ""
+"<literal>add(FacesMessage facesMessage)</literal> &mdash; add a faces "
+"message, which will be displayed during the next render response phase that "
+"occurs in the current conversation."
+msgstr ""
+"<literal>add(FacesMessage facesMessage)</literal> &mdash; Adiciona mensagem às "
+"superfícies, da qual será exibida durante a próxima fase de resposta "
+"processada que ocorre na conversação atual."
+
+#. Tag: para
+#: Components.xml:104
+#, no-c-format
+msgid ""
+"<literal>add(String messageTemplate)</literal> &mdash; add a faces message, "
+"rendered from the given message template which may contain EL expressions."
+msgstr ""
+"<literal>add(String messageTemplate)</literal> &mdash; Adiciona mensagem às "
+"superfícies, processada desde o modelo de mensagem gerada, da qual pode "
+"conter expressões da EL."
+
+#. Tag: para
+#: Components.xml:109
+#, no-c-format
+msgid ""
+"<literal>add(Severity severity, String messageTemplate)</literal> &mdash; "
+"add a faces message, rendered from the given message template which may "
+"contain EL expressions."
+msgstr ""
+"<literal>add(Severity severity, String messageTemplate)</literal> &mdash; Adiciona "
+"mensagem às superfícies, processada desde o modelo de mensagem gerada, da "
+"qual pode conter expressões EL."
+
+#. Tag: para
+#: Components.xml:114
+#, no-c-format
+msgid ""
+"<literal>addFromResourceBundle(String key)</literal> &mdash; add a faces "
+"message, rendered from a message template defined in the Seam resource "
+"bundle which may contain EL expressions."
+msgstr ""
+"<literal>addFromResourceBundle(String key)</literal> &mdash; Adiciona mensagem às "
+"superfícies, processada de um modelo de mensagem definida no pacote de "
+"recursos Seam, do qual pode conter expressões da EL."
+
+#. Tag: para
+#: Components.xml:119
+#, no-c-format
+msgid ""
+"<literal>addFromResourceBundle(Severity severity, String key)</literal> "
+"&mdash; add a faces message, rendered from a message template defined in the "
+"Seam resource bundle which may contain EL expressions."
+msgstr ""
+"<literal>addFromResourceBundle(Severity severity, String key)</literal> "
+"&mdash; Adiciona mensagem às superfícies, processada de um definido modelo de "
+"processo no pacote de recurso Seam, do qual pode conter expressões da EL."
+
+#. Tag: para
+#: Components.xml:124
+#, no-c-format
+msgid "<literal>clear()</literal> &mdash; clear all messages."
+msgstr "<literal>clear()</literal> &mdash; limpar todas as mensagens."
+
+#. Tag: literal
+#: Components.xml:132
+#, no-c-format
+msgid "org.jboss.seam.core.redirect"
+msgstr "org.jboss.seam.core.redirect"
+
+#. Tag: para
+#: Components.xml:134
+#, no-c-format
+msgid ""
+"A convenient API for performing redirects with parameters (this is "
+"especially useful for bookmarkable search results screens)."
+msgstr ""
+"Um API conveniente para atuar com o redirecionamento dos parâmetros ( este é "
+"especialmente útil para telas de resultados da procura de marcação de texto."
+
+#. Tag: para
+#: Components.xml:139
+#, no-c-format
+msgid "<literal>redirect.viewId</literal> &mdash; the JSF view id to redirect to."
+msgstr "<literal>redirect.viewId</literal> &mdash; Redireção da id para exibição do JSF."
+
+#. Tag: para
+#: Components.xml:144
+#, no-c-format
+msgid ""
+"<literal>redirect.conversationPropagationEnabled</literal> &mdash; "
+"determines whether the conversation will propagate across the redirect."
+msgstr ""
+"<literal>redirect.conversationPropagationEnabled</literal> &mdash; Determina se a "
+"conversação se propagará através da redireção."
+
+#. Tag: para
+#: Components.xml:149
+#, no-c-format
+msgid ""
+"<literal>redirect.parameters</literal> &mdash; a map of request parameter "
+"name to value, to be passed in the redirect request."
+msgstr ""
+"<literal>redirect.parameters</literal> &mdash; O mapa do nome do parâmetro de "
+"solicitação para o valor, a ser passado na solicitação de redireção."
+
+#. Tag: para
+#: Components.xml:154
+#, no-c-format
+msgid "<literal>execute()</literal> &mdash; perform the redirect immediately."
+msgstr "<literal>execute()</literal> &mdash; efetua imediatamente a redireção."
+
+#. Tag: para
+#: Components.xml:159
+#, no-c-format
+msgid ""
+"<literal>captureCurrentRequest()</literal> &mdash; stores the view id and "
+"request parameters of the current GET request (in the conversation context), "
+"for later use by calling <literal>execute()</literal>."
+msgstr ""
+"<literal>captureCurrentRequest()</literal> &mdash; Armazena o id de visualização e "
+"parâmetros de solicitação do pedido GET atual (no contexto de "
+"conversação), para usar mais tarde chamando <literal>execute()</literal>."
+
+#. Tag: literal
+#: Components.xml:167
+#, no-c-format
+msgid "org.jboss.seam.core.httpError"
+msgstr "org.jboss.seam.core.httpError"
+
+#. Tag: para
+#: Components.xml:169
+#, no-c-format
+msgid "A convenient API for sending HTTP errors."
+msgstr "Um API conveniente para envio de erros HTTP."
+
+#. Tag: literal
+#: Components.xml:175
+#, no-c-format
+msgid "org.jboss.seam.core.events"
+msgstr "org.jboss.seam.core.events"
+
+#. Tag: para
+#: Components.xml:177
+#, no-c-format
+msgid ""
+"An API for raising events that can be observed via <literal>@Observer</"
+"literal> methods, or method bindings in <literal>components.xml</literal>."
+msgstr ""
+"Um API de eventos elevados, do qual pode ser observado por meio de "
+"métodos <literal>@Observer</literal>."
+
+#. Tag: para
+#: Components.xml:182
+#, no-c-format
+msgid ""
+"<literal>raiseEvent(String type)</literal> &mdash; raise an event of a "
+"particular type and distribute to all observers."
+msgstr ""
+"<literal>raiseEvent(String type)</literal> &mdash; eleva um evento de um tipo "
+"particular e distribui a todos os observadores."
+
+#. Tag: para
+#: Components.xml:187
+#, no-c-format
+msgid ""
+"<literal>raiseAsynchronousEvent(String type)</literal> &mdash; raise an "
+"event to be processed asynchronously by the EJB3 timer service."
+msgstr ""
+"<literal>raiseAsynchronousEvent(String type)</literal> &mdash; eleva um evento a "
+"ser assincronicamente processado pelo serviço de marcação de tempo EJB3."
+
+#. Tag: para
+#: Components.xml:192
+#, no-c-format
+msgid ""
+"<literal>raiseTimedEvent(String type, ....)</literal> &mdash; schedule an "
+"event to be processed asynchronously by the EJB3 timer service."
+msgstr ""
+"<literal>raiseTimedEvent(String type, ....)</literal> &mdash; agenda um evento a "
+"ser assincronicamente processado  pelo serviço de marcação de tempo EJB3."
+
+#. Tag: para
+#: Components.xml:197
+#, no-c-format
+msgid ""
+"<literal>addListener(String type, String methodBinding)</literal> &mdash; "
+"add an observer for a particular event type."
+msgstr ""
+"<literal>addListener(String type, String methodBinding)</literal> &mdash; adiciona "
+"um observador de um tipo de evento particular."
+
+#. Tag: literal
+#: Components.xml:205
+#, no-c-format
+msgid "org.jboss.seam.core.interpolator"
+msgstr "org.jboss.seam.core.interpolator"
+
+#. Tag: para
+#: Components.xml:207
+#, no-c-format
+msgid "An API for interpolating the values of JSF EL expressions in Strings."
+msgstr "Um API interpolando os valores das expressões da EL do JSF em seqüências."
+
+#. Tag: para
+#: Components.xml:212
+#, no-c-format
+msgid ""
+"<literal>interpolate(String template)</literal> &mdash; scan the template "
+"for JSF EL expressions of the form <literal>#{...}</literal> and replace "
+"them with their evaluated values."
+msgstr ""
+"<literal>interpolate(String template)</literal> &mdash; examina o modelo do "
+"formulário de expressões da EL do JSF <literal>#{...}</literal>, e os "
+"substitui com os valores avaliados."
+
+#. Tag: literal
+#: Components.xml:220
+#, no-c-format
+msgid "org.jboss.seam.core.expressions"
+msgstr "org.jboss.seam.core.expressions"
+
+#. Tag: para
+#: Components.xml:222
+#, no-c-format
+msgid "An API for creating value and method bindings."
+msgstr "Um API para valor de criação e método de vinculação."
+
+#. Tag: para
+#: Components.xml:227
+#, no-c-format
+msgid ""
+"<literal>createValueBinding(String expression)</literal> &mdash; create a "
+"value binding object."
+msgstr ""
+"<literal>createValueBinding(String expression)</literal> &mdash; Cria um objeto de "
+"vinculação de valor."
+
+#. Tag: para
+#: Components.xml:232
+#, no-c-format
+msgid ""
+"<literal>createMethodBinding(String expression)</literal> &mdash; create a "
+"method binding object."
+msgstr ""
+"<literal>createMethodBinding(String expression)</literal> &mdash; cria um objeto de "
+"vinculação de método."
+
+#. Tag: literal
+#: Components.xml:240
+#, no-c-format
+msgid "org.jboss.seam.core.pojoCache"
+msgstr "org.jboss.seam.core.pojoCache"
+
+#. Tag: para
+#: Components.xml:242
+#, no-c-format
+msgid "Manager component for a JBoss Cache <literal>PojoCache</literal> instance."
+msgstr ""
+"Componente gerenciador para uma instância de JBoss Cache <literal>PojoCache</"
+"literal>."
+
+#. Tag: para
+#: Components.xml:247
+#, no-c-format
+msgid ""
+"<literal>pojoCache.cfgResourceName</literal> &mdash; the name of the "
+"configuration file. Default to <literal>treecache.xml</literal>."
+msgstr ""
+"<literal>pojoCache.cfgResourceName</literal> - O nome do arquivo de "
+"configuração. Padrão para <literal>treecache.xml</literal>."
+
+#. Tag: literal
+#: Components.xml:255
+#, no-c-format
+msgid "org.jboss.seam.core.uiComponent"
+msgstr "org.jboss.seam.core.uiComponent"
+
+#. Tag: para
+#: Components.xml:257
+#, no-c-format
+msgid ""
+"Allows access to a JSF <literal>UIComponent</literal> by its id from the EL. "
+"For example, we can write <literal>@In(\"#{uiComponent[&#39;myForm:"
+"address&#39;].value}\")</literal>."
+msgstr ""
+"Permite acesso ao <literal>UIComponent</literal> JSF através de sua id da EL. Por exemplo, nós podemos escrever <literal>@In(\"#{uiComponent[&#39;myForm:"
+"address&#39;].value}\")</literal>."
+
+#. Tag: title
+#: Components.xml:269
+#, no-c-format
+msgid "Components for internationalization and themes"
+msgstr "Componentes para internacionalização e temas"
+
+#. Tag: para
+#: Components.xml:270
+#, no-c-format
+msgid ""
+"The next group of components make it easy to build internationalized user "
+"interfaces using Seam."
+msgstr ""
+"O próximo grupo de componentes facilita construir as interfaces do usuário "
+"internacionalizado utilizando o Seam."
+
+#. Tag: literal
+#: Components.xml:275
+#, no-c-format
+msgid "org.jboss.seam.core.locale"
+msgstr "org.jboss.seam.core.locale"
+
+#. Tag: para
+#: Components.xml:277
+#, no-c-format
+msgid "The Seam locale. The locale is session scoped."
+msgstr "Seam localidade. A localidade é um escopo Session."
+
+#. Tag: literal
+#: Components.xml:283
+#, no-c-format
+msgid "org.jboss.seam.core.timezone"
+msgstr "org.jboss.seam.core.timezone"
+
+#. Tag: para
+#: Components.xml:285
+#, no-c-format
+msgid "The Seam timezone. The timezone is session scoped."
+msgstr "Seam fuso horário. O fuso horário é um escopo Session."
+
+#. Tag: literal
+#: Components.xml:291
+#, no-c-format
+msgid "org.jboss.seam.core.resourceBundle"
+msgstr "org.jboss.seam.core.resourceBundle"
+
+#. Tag: para
+#: Components.xml:293
+#, no-c-format
+msgid ""
+"The Seam resource bundle. The resource bundle is session scoped. The Seam "
+"resource bundle performs a depth-first search for keys in a list of Java "
+"resource bundles."
+msgstr ""
+"Agrupamento de recursos Seam. O agrupamento de recursos é um escopo Session. O agrupamento de recursos Seam "
+" executa uma busca profunda de questões-chave na lista no agrupamento de recursos Java."
+
+#. Tag: para
+#: Components.xml:298
+#, no-c-format
+msgid ""
+"<literal>resourceBundle.bundleNames</literal> &mdash; the names of the Java "
+"resource bundles to search. Default to <literal>messages</literal>."
+msgstr ""
+"<literal>resourceBundle.bundleNames</literal> &mdash; Os nomes do agrupamento de recurso Java "
+" para busca. Padrão para <literal>messages</literal>."
+
+#. Tag: literal
+#: Components.xml:306
+#, no-c-format
+msgid "org.jboss.seam.core.localeSelector"
+msgstr "org.jboss.seam.core.localeSelector"
+
+#. Tag: para
+#: Components.xml:308
+#, no-c-format
+msgid ""
+"Supports selection of the locale either at configuration time, or by the "
+"user at runtime."
+msgstr ""
+"Suporta a seleção de localidade no período da configuração, ou pelo usuário no "
+"tempo de execução."
+
+#. Tag: para
+#: Components.xml:313 Components.xml:363
+#, no-c-format
+msgid "<literal>select()</literal> &mdash; select the specified locale."
+msgstr "<literal>select()</literal> &mdash; Selecione a localidade especificada."
+
+#. Tag: para
+#: Components.xml:318
+#, no-c-format
+msgid ""
+"<literal>localeSelector.locale</literal> &mdash; the actual <literal>java."
+"util.Locale</literal>."
+msgstr ""
+"<literal>localeSelector.locale</literal> &mdash; O atual <literal>java.util.Locale</"
+"literal>."
+
+#. Tag: para
+#: Components.xml:323
+#, no-c-format
+msgid ""
+"<literal>localeSelector.localeString</literal> &mdash; the stringified "
+"representation of the locale."
+msgstr ""
+"<literal>localeSelector.localeString</literal> &mdash; a representação da seqüência "
+"de caracteres de localiadade."
+
+#. Tag: para
+#: Components.xml:328
+#, no-c-format
+msgid ""
+"<literal>localeSelector.language</literal> &mdash; the language for the "
+"specified locale."
+msgstr "<literal>localeSelector.language</literal> &mdash; A linguagem para a localidade especificada."
+
+#. Tag: para
+#: Components.xml:333
+#, no-c-format
+msgid ""
+"<literal>localeSelector.country</literal> &mdash; the country for the "
+"specified locale."
+msgstr "<literal>localeSelector.country</literal> &mdash; o país para a localidade especificada."
+
+#. Tag: para
+#: Components.xml:338
+#, no-c-format
+msgid ""
+"<literal>localeSelector.variant</literal> &mdash; the variant for the "
+"specified locale."
+msgstr ""
+"<literal>localeSelector.variant</literal> &mdash; A variante para a localidade "
+"especificada."
+
+#. Tag: para
+#: Components.xml:343
+#, no-c-format
+msgid ""
+"<literal>localeSelector.supportedLocales</literal> &mdash; a list of "
+"<literal>SelectItem</literal>s representing the supported locales listed in "
+"<literal>jsf-config.xml</literal>."
+msgstr ""
+"<literal>localeSelector.supportedLocales</literal> &mdash; A lista do "
+"<literal>SelectItem</literal>s representam as listadas localidades suportadas <literal>jsf-"
+"config.xml</literal>."
+
+#. Tag: para
+#: Components.xml:348
+#, no-c-format
+msgid ""
+"<literal>localeSelector.cookieEnabled</literal> &mdash; specifies that the "
+"locale selection should be persisted via a cookie."
+msgstr ""
+"<literal>localeSelector.cookieEnabled</literal> &mdash; Demonstra que a seleção de"
+"localidade deve ser persistente por meio de uma cookie."
+
+#. Tag: literal
+#: Components.xml:356
+#, no-c-format
+msgid "org.jboss.seam.core.timezoneSelector"
+msgstr "org.jboss.seam.core.timezoneSelector"
+
+#. Tag: para
+#: Components.xml:358
+#, no-c-format
+msgid ""
+"Supports selection of the timezone either at configuration time, or by the "
+"user at runtime."
+msgstr ""
+"Suporta a seleção do fuso horário tanto no tempo da configuração como pelo "
+"usuário no tempo de execução."
+
+#. Tag: para
+#: Components.xml:368
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.timezone</literal> &mdash; the actual "
+"<literal>java.util.TimeZone</literal>."
+msgstr ""
+"<literal>timezoneSelector.timezone</literal> o atual <literal>java.util."
+"TimeZone</literal>."
+
+#. Tag: para
+#: Components.xml:373
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.timeZoneId</literal> &mdash; the stringified "
+"representation of the timezone."
+msgstr ""
+"<literal>timezoneSelector.timeZoneId</literal> &mdash; A representação da "
+"seqüência de caracteres do fuso horário."
+
+#. Tag: para
+#: Components.xml:378
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.cookieEnabled</literal> &mdash; specifies that the "
+"timezone selection should be persisted via a cookie."
+msgstr ""
+"<literal>timezoneSelector.cookieEnabled</literal> &mdash; Indica que a seleção do "
+"fuso horário deve ser persistente por meio de uma cookie."
+
+#. Tag: literal
+#: Components.xml:386
+#, no-c-format
+msgid "org.jboss.seam.core.messages"
+msgstr "org.jboss.seam.core.messages"
+
+#. Tag: para
+#: Components.xml:388
+#, no-c-format
+msgid ""
+"A map containing internationalized messages rendered from message templates "
+"defined in the Seam resource bundle."
+msgstr ""
+"O mapa que contém mensagens internacionalizadas processadas a partir de modelos de "
+"mensagens definidas no agrupamento de recurso Seam."
+
+#. Tag: literal
+#: Components.xml:394
+#, no-c-format
+msgid "org.jboss.seam.theme.themeSelector"
+msgstr "org.jboss.seam.theme.themeSelector"
+
+#. Tag: para
+#: Components.xml:396
+#, no-c-format
+msgid ""
+"Supports selection of the theme either at configuration time, or by the user "
+"at runtime."
+msgstr ""
+"Suporta a seleção do tema no período da configuração, ou pelo usuário no "
+"tempo de execução. "
+
+#. Tag: para
+#: Components.xml:401
+#, no-c-format
+msgid "<literal>select()</literal> &mdash; select the specified theme."
+msgstr "<literal>select()</literal> &mdash; Seleciona o tema especificado."
+
+#. Tag: para
+#: Components.xml:406
+#, no-c-format
+msgid "<literal>theme.availableThemes</literal> &mdash; the list of defined themes."
+msgstr "<literal>theme.availableThemes</literal> &mdash; A lista dos temas definidos."
+
+#. Tag: para
+#: Components.xml:411
+#, no-c-format
+msgid "<literal>themeSelector.theme</literal> &mdash; the selected theme."
+msgstr "<literal>themeSelector.theme</literal> &mdash; O tema selecionado."
+
+#. Tag: para
+#: Components.xml:416
+#, no-c-format
+msgid ""
+"<literal>themeSelector.themes</literal> &mdash; a list of "
+"<literal>SelectItem</literal>s representing the defined themes."
+msgstr ""
+"<literal>themeSelector.themes</literal> &mdash; A lista do <literal>SelectItem</"
+"literal>s representando os temas definidos."
+
+#. Tag: para
+#: Components.xml:421
+#, no-c-format
+msgid ""
+"<literal>themeSelector.cookieEnabled</literal> &mdash; specifies that the "
+"theme selection should be persisted via a cookie."
+msgstr ""
+"<literal>themeSelector.cookieEnabled</literal> &mdash; Indica que a seleção do tema "
+"deve ser persistente por meio de uma cookie."
+
+#. Tag: literal
+#: Components.xml:429
+#, no-c-format
+msgid "org.jboss.seam.theme.theme"
+msgstr "org.jboss.seam.theme.theme"
+
+#. Tag: para
+#: Components.xml:431
+#, no-c-format
+msgid "A map containing theme entries."
+msgstr "O mapa contendo as entradas do tema."
+
+#. Tag: title
+#: Components.xml:443
+#, no-c-format
+msgid "Components for controlling conversations"
+msgstr "Componentes para controle de conversações"
+
+#. Tag: para
+#: Components.xml:444
+#, no-c-format
+msgid ""
+"The next group of components allow control of conversations by the "
+"application or user interface."
+msgstr ""
+"O próximo grupo de componentes permite controlar as conversações pelo "
+"aplicativo ou usuário de interface."
+
+#. Tag: literal
+#: Components.xml:449
+#, no-c-format
+msgid "org.jboss.seam.core.conversation"
+msgstr "org.jboss.seam.core.conversation"
+
+#. Tag: para
+#: Components.xml:451
+#, no-c-format
+msgid "API for application control of attributes of the current Seam conversation."
+msgstr "API para controle de aplicação dos atributos da atual conversação Seam."
+
+#. Tag: para
+#: Components.xml:456 Components.xml:471
+#, no-c-format
+msgid "<literal>getId()</literal> &mdash; returns the current conversation id"
+msgstr "<literal>getId()</literal> &mdash; Retorna à identificação de conversação"
+
+#. Tag: para
+#: Components.xml:461
+#, no-c-format
+msgid ""
+"<literal>isNested()</literal> &mdash; is the current conversation a nested "
+"conversation?"
+msgstr ""
+"<literal>isNested()</literal> &mdash;  a conversação atual é uma conversação "
+"aninhada?"
+
+#. Tag: para
+#: Components.xml:466
+#, no-c-format
+msgid ""
+"<literal>isLongRunning()</literal> &mdash; is the current conversation a "
+"long-running conversation?"
+msgstr ""
+"<literal>isLongRunning()</literal> &mdash; uma conversação atual é uma "
+"conversação de longa duração?"
+
+#. Tag: para
+#: Components.xml:476
+#, no-c-format
+msgid ""
+"<literal>getParentId()</literal> &mdash; returns the conversation id of the "
+"parent conversation"
+msgstr ""
+"<literal>getParentId()</literal> &mdash; Retorna à conversação de identificação da conversação "
+"pai."
+
+#. Tag: para
+#: Components.xml:481
+#, no-c-format
+msgid ""
+"<literal>getRootId()</literal> &mdash; returns the conversation id of the "
+"root conversation"
+msgstr "<literal>getRootId()</literal> &mdash; rertorna à conversação de identificação a partir da conversação raiz"
+
+#. Tag: para
+#: Components.xml:486
+#, no-c-format
+msgid ""
+"<literal>setTimeout(int timeout)</literal> &mdash; sets the timeout for the "
+"current conversation"
+msgstr ""
+"<literal>setTimeout(int timeout)</literal> &mdash; Determina o tempo limite para a "
+"conversação atual"
+
+#. Tag: para
+#: Components.xml:491
+#, no-c-format
+msgid ""
+"<literal>setViewId(String outcome)</literal> &mdash; sets the view id to be "
+"used when switching back to the current conversation from the conversation "
+"switcher, conversation list, or breadcrumbs."
+msgstr ""
+"<literal>setViewId(String outcome)</literal> &mdash; determina a visualização da identificação "
+"para ser usada quando retornando para a conversação atual a partir de um interruptor de conversação, lista de conversação, ou breadcrumbs."
+
+#. Tag: para
+#: Components.xml:496
+#, no-c-format
+msgid ""
+"<literal>setDescription(String description)</literal> &mdash; sets the "
+"description of the current conversation to be displayed in the conversation "
+"switcher, conversation list, or breadcrumbs."
+msgstr ""
+"<literal>setDescription(String description)</literal> &mdash; Determina a "
+"descrição da conversação atual a ser exibida no interruptor de conversação, "
+"lista de conversação, ou breadcrumbs."
+
+#. Tag: para
+#: Components.xml:501
+#, no-c-format
+msgid ""
+"<literal>redirect()</literal> &mdash; redirect to the last well-defined view "
+"id for this conversation (useful after login challenges)."
+msgstr ""
+"<literal>redirect()</literal> &mdash; Redireciona para a última visualização de identificação bem-"
+"definida para esta conversação (útil após o logon de verificações)."
+
+#. Tag: para
+#: Components.xml:506
+#, no-c-format
+msgid ""
+"<literal>leave()</literal> &mdash; exit the scope of this conversation, "
+"without actually ending the conversation."
+msgstr ""
+"<literal>leave()</literal> &mdash; Saída do escopo desta conversação, sem na "
+"realidade finalizar a conversação."
+
+#. Tag: para
+#: Components.xml:511
+#, no-c-format
+msgid ""
+"<literal>begin()</literal> &mdash; begin a long-running conversation "
+"(equivalent to <literal>@Begin</literal>)."
+msgstr ""
+"<literal>begin()</literal> &mdash; Inicia uma conversação de longa execução "
+"(equivalente ao <literal>@Begin</literal>)."
+
+#. Tag: para
+#: Components.xml:516
+#, no-c-format
+msgid ""
+"<literal>beginPageflow(String pageflowName)</literal> &mdash; begin a long-"
+"running conversation with a pageflow (equivalent to <literal>@Begin(pageflow="
+"\"...\")</literal>)."
+msgstr ""
+"<literal>beginPageflow(String pageflowName)</literal> &mdash; Inicia uma conversação "
+"de longa duração com um pageflow (equivalente ao <literal>@Begin(pageflow="
+"\"...\")</literal>)."
+
+#. Tag: para
+#: Components.xml:521
+#, no-c-format
+msgid ""
+"<literal>end()</literal> &mdash; end a long-running conversation (equivalent "
+"to <literal>@End</literal>)."
+msgstr ""
+"<literal>end()</literal> &mdash; Finaliza uma conversação de longa duração "
+"(equivalente ao <literal>@End</literal>)."
+
+#. Tag: para
+#: Components.xml:526
+#, no-c-format
+msgid ""
+"<literal>pop()</literal> &mdash; pop the conversation stack, returning to "
+"the parent conversation."
+msgstr ""
+"<literal>pop()</literal> &mdash; libera a conversação empilhada, retornando à "
+"conversação pai."
+
+#. Tag: para
+#: Components.xml:531
+#, no-c-format
+msgid ""
+"<literal>root()</literal> &mdash; return to the root conversation of the "
+"conversation stack."
+msgstr ""
+"<literal>root()</literal> &mdash; Retorna à raiz da conversação a partir de uma conversação "
+"empilhada."
+
+#. Tag: para
+#: Components.xml:536
+#, no-c-format
+msgid ""
+"<literal>changeFlushMode(FlushModeType flushMode)</literal> &mdash; change "
+"the flush mode of the conversation."
+msgstr ""
+"<literal>changeFlushMode(FlushModeType flushMode)</literal> &mdash; Altera o modo "
+"de esvaziamento da conversação."
+
+#. Tag: literal
+#: Components.xml:544
+#, no-c-format
+msgid "org.jboss.seam.core.conversationList"
+msgstr "org.jboss.seam.core.conversationList"
+
+#. Tag: para
+#: Components.xml:546
+#, no-c-format
+msgid "Manager component for the conversation list."
+msgstr "Componente gerenciador para a lista de conversação."
+
+#. Tag: literal
+#: Components.xml:552
+#, no-c-format
+msgid "org.jboss.seam.core.conversationStack"
+msgstr "org.jboss.seam.core.conversationStack"
+
+#. Tag: para
+#: Components.xml:554
+#, no-c-format
+msgid "Manager component for the conversation stack (breadcrumbs)."
+msgstr "Componente gerenciador para a conversação de empilhamento (breadcrumbs)."
+
+#. Tag: literal
+#: Components.xml:560
+#, no-c-format
+msgid "org.jboss.seam.core.switcher"
+msgstr "org.jboss.seam.core.switcher"
+
+#. Tag: para
+#: Components.xml:562
+#, no-c-format
+msgid "The conversation switcher."
+msgstr "A conversação do interruptor."
+
+#. Tag: title
+#: Components.xml:574
+#, no-c-format
+msgid "jBPM-related components"
+msgstr "Componentes relacionados JBPM"
+
+#. Tag: para
+#: Components.xml:575
+#, no-c-format
+msgid "These components are for use with jBPM."
+msgstr "Estes componentes são para uso com o JBPM."
+
+#. Tag: literal
+#: Components.xml:580
+#, no-c-format
+msgid "org.jboss.seam.core.pageflow"
+msgstr "org.jboss.seam.core.pageflow"
+
+#. Tag: para
+#: Components.xml:582
+#, no-c-format
+msgid "API control of Seam pageflows."
+msgstr "Controle API de pageflows Seam."
+
+#. Tag: para
+#: Components.xml:587
+#, no-c-format
+msgid ""
+"<literal>isInProcess()</literal> &mdash; returns <literal>true</literal> if "
+"there is currently a pageflow in process"
+msgstr ""
+"<literal>isInProcess()</literal> &mdash; Retorna <literal>true</literal> caso haja "
+"um pageflow em processo."
+
+#. Tag: para
+#: Components.xml:592
+#, no-c-format
+msgid ""
+"<literal>getProcessInstance()</literal> &mdash; returns jBPM "
+"<literal>ProcessInstance</literal> for the current pageflow"
+msgstr ""
+"<literal>getProcessInstance()</literal> &mdash; Retorna o "
+"<literal>ProcessInstance</literal> do JBPM para o atual pageflow"
+
+#. Tag: para
+#: Components.xml:597
+#, no-c-format
+msgid ""
+"<literal>begin(String pageflowName)</literal> &mdash; begin a pageflow in "
+"the context of the current conversation"
+msgstr "<literal>begin(String pageflowName)</literal> &mdash; Inicia um pageflow no contexto de uma conversação atual."
+
+#. Tag: para
+#: Components.xml:602
+#, no-c-format
+msgid ""
+"<literal>reposition(String nodeName)</literal> &mdash; reposition the "
+"current pageflow to a particular node"
+msgstr ""
+"<literal>reposition(String nodeName)</literal> &mdash; Reposiciona o pageflow "
+"atual para um nó particular"
+
+#. Tag: literal
+#: Components.xml:610
+#, no-c-format
+msgid "org.jboss.seam.core.actor"
+msgstr "org.jboss.seam.core.actor"
+
+#. Tag: para
+#: Components.xml:612
+#, no-c-format
+msgid ""
+"API for application control of attributes of the jBPM actor associated with "
+"the current session."
+msgstr ""
+"API para controle de aplicativo de atributos do associado ator JBPM com a "
+"sessão corrente."
+
+#. Tag: para
+#: Components.xml:617
+#, no-c-format
+msgid ""
+"<literal>setId(String actorId)</literal> &mdash; sets the jBPM actor id of "
+"the current user."
+msgstr ""
+"<literal>setId(String actorId)</literal> &mdash; Determina a identidade do ator JBPM do "
+"usuário atual."
+
+#. Tag: para
+#: Components.xml:622
+#, no-c-format
+msgid ""
+"<literal>getGroupActorIds()</literal> &mdash; returns a <literal>Set</"
+"literal> to which jBPM actor ids for the current users groups may be added."
+msgstr ""
+"<literal>getGroupActorIds()</literal> &mdash; Retorna ao <literal>Set</literal> para que as identidades do ator JBPM, para os usuários de grupos atuais, possam ser "
+"adicionadas."
+
+#. Tag: literal
+#: Components.xml:630
+#, no-c-format
+msgid "org.jboss.seam.core.transition"
+msgstr "org.jboss.seam.core.transition"
+
+#. Tag: para
+#: Components.xml:632
+#, no-c-format
+msgid "API for application control of the jBPM transition for the current task."
+msgstr "API para controle de aplicativo de uma transição JBPM para a tarefa atual."
+
+#. Tag: para
+#: Components.xml:637
+#, no-c-format
+msgid ""
+"<literal>setName(String transitionName)</literal> &mdash; sets the jBPM "
+"transition name to be used when the current task is ended via "
+"<literal>@EndTask</literal>."
+msgstr ""
+"<literal>setName(String transitionName)</literal> &mdash; Determina o nome da "
+"transição JBPM a ser usado quando a tarefa atual é finalizada por meio de "
+"<literal>@EndTask</literal>."
+
+#. Tag: literal
+#: Components.xml:645
+#, no-c-format
+msgid "org.jboss.seam.core.businessProcess"
+msgstr "org.jboss.seam.core.businessProcess"
+
+#. Tag: para
+#: Components.xml:647
+#, no-c-format
+msgid ""
+"API for programmatic control of the association between the conversation and "
+"business process."
+msgstr ""
+"API para controle programático de uma associação entre a conversação e "
+"processo comercial."
+
+#. Tag: para
+#: Components.xml:652
+#, no-c-format
+msgid ""
+"<literal>businessProcess.taskId</literal> &mdash; the id of the task "
+"associated with the current conversation."
+msgstr ""
+"<literal>businessProcess.taskId</literal> &mdash; A identidade de uma tarefa associada "
+"com a conversação atual."
+
+#. Tag: para
+#: Components.xml:657
+#, no-c-format
+msgid ""
+"<literal>businessProcess.processId</literal> &mdash; the id of the process "
+"associated with the current conversation."
+msgstr ""
+"<literal>businessProcess.processId</literal> &mdash; A identidade do processo associado "
+"com a conversação atual."
+
+#. Tag: para
+#: Components.xml:662
+#, no-c-format
+msgid ""
+"<literal>businessProcess.hasCurrentTask()</literal> &mdash; is a task "
+"instance associated with the current conversation?"
+msgstr ""
+"<literal>businessProcess.hasCurrentTask()</literal> &mdash; é uma tarefa de "
+"instância associada com a atual conversação?"
+
+#. Tag: para
+#: Components.xml:667
+#, no-c-format
+msgid ""
+"<literal>businessProcess.hasCurrentProcess()</literal> &mdash; is a process "
+"instance associated with the current conversation."
+msgstr ""
+"<literal>businessProcess.hasCurrentProcess()</literal> &mdash; É um processo de "
+"instância associado com a conversação atual."
+
+#. Tag: para
+#: Components.xml:672
+#, no-c-format
+msgid ""
+"<literal>createProcess(String name)</literal> &mdash; create an instance of "
+"the named process definition and associate it with the current conversation."
+msgstr ""
+"<literal>createProcess(String name)</literal> &mdash; Cria uma instância da "
+"definição do processo nomeado e associa isto com a atual conversação."
+
+#. Tag: para
+#: Components.xml:677
+#, no-c-format
+msgid ""
+"<literal>startTask()</literal> &mdash; start the task associated with the "
+"current conversation."
+msgstr ""
+"<literal>startTask()</literal> &mdash; Inicia a tarefa associada com a atual "
+"conversação."
+
+#. Tag: para
+#: Components.xml:682
+#, no-c-format
+msgid ""
+"<literal>endTask(String transitionName)</literal> &mdash; end the task "
+"associated with the current conversation."
+msgstr ""
+"<literal>endTask(String transitionName)</literal> &mdash; Finaliza a tarefa "
+"associada com a conversação atual."
+
+#. Tag: para
+#: Components.xml:687
+#, no-c-format
+msgid ""
+"<literal>resumeTask(Long id)</literal> &mdash; associate the task with the "
+"given id with the current conversation."
+msgstr ""
+"<literal>resumeTask(Long id)</literal> &mdash; Associa a tarefa da identidade fornecida "
+"com a conversação atual."
+
+#. Tag: para
+#: Components.xml:692
+#, no-c-format
+msgid ""
+"<literal>resumeProcess(Long id)</literal> &mdash; associate the process with "
+"the given id with the current conversation."
+msgstr ""
+"<literal>resumeProcess(Long id)</literal> &mdash; Associa o processo da identidade"
+"fornecida com a conversação corrente."
+
+#. Tag: para
+#: Components.xml:697
+#, no-c-format
+msgid ""
+"<literal>transition(String transitionName)</literal> &mdash; trigger the "
+"transition."
+msgstr ""
+"<literal>transition(String transitionName)</literal> &mdash; A transição do "
+"disparador."
+
+#. Tag: literal
+#: Components.xml:705
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstance"
+msgstr "org.jboss.seam.core.taskInstance"
+
+#. Tag: para
+#: Components.xml:707
+#, no-c-format
+msgid "Manager component for the jBPM <literal>TaskInstance</literal>."
+msgstr "Componente do gerenciador para o JBPM <literal>TaskInstance</literal>."
+
+#. Tag: literal
+#: Components.xml:713
+#, no-c-format
+msgid "org.jboss.seam.core.processInstance"
+msgstr "org.jboss.seam.core.processInstance"
+
+#. Tag: para
+#: Components.xml:715
+#, no-c-format
+msgid "Manager component for the jBPM <literal>ProcessInstance</literal>."
+msgstr "Componente do gerenciador para o JBPM <literal>ProcessInstance</literal>."
+
+#. Tag: literal
+#: Components.xml:721
+#, no-c-format
+msgid "org.jboss.seam.core.jbpmContext"
+msgstr "org.jboss.seam.core.jbpmContext"
+
+#. Tag: para
+#: Components.xml:723
+#, no-c-format
+msgid "Manager component for an event-scoped <literal>JbpmContext</literal>."
+msgstr ""
+"Componente do gerenciador para um escopo evento <literal>JbpmContext</"
+"literal>."
+
+#. Tag: literal
+#: Components.xml:729
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstanceList"
+msgstr "org.jboss.seam.core.taskInstanceList"
+
+#. Tag: para
+#: Components.xml:731
+#, no-c-format
+msgid "Manager component for the jBPM task list."
+msgstr "Componente do escopo para a lista da tarefa JBPM."
+
+#. Tag: literal
+#: Components.xml:737
+#, no-c-format
+msgid "org.jboss.seam.core.pooledTaskInstanceList"
+msgstr "org.jboss.seam.core.pooledTaskInstanceList"
+
+#. Tag: para
+#: Components.xml:739
+#, no-c-format
+msgid "Manager component for the jBPM pooled task list."
+msgstr "Componente do gerenciador para a lista de tarefa agrupadas JBPM."
+
+#. Tag: literal
+#: Components.xml:745
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstanceListForType"
+msgstr "org.jboss.seam.core.taskInstanceListForType"
+
+#. Tag: para
+#: Components.xml:747
+#, no-c-format
+msgid "Manager component for the jBPM task lists."
+msgstr "Componente do gerenciador para as listas de tarefa JBPM."
+
+#. Tag: literal
+#: Components.xml:753
+#, no-c-format
+msgid "org.jboss.seam.core.pooledTask"
+msgstr "org.jboss.seam.core.pooledTask"
+
+#. Tag: para
+#: Components.xml:755
+#, no-c-format
+msgid "Action handler for pooled task assignment."
+msgstr "Manipulador de ação para a atribuição da tarefa agrupada."
+
+#. Tag: para
+#: Components.xml:761
+#, no-c-format
+msgid ""
+"All of these components are installed whenever the component <literal>org."
+"jboss.seam.core.jbpm</literal> is installed."
+msgstr ""
+"Todos estes componentes são instalados sempre que o componente for instalado "
+"<literal>org.jboss.seam.core.jbpm</literal>."
+
+#. Tag: title
+#: Components.xml:767
+#, no-c-format
+msgid "Security-related components"
+msgstr "Componentes de segurança relacionada"
+
+#. Tag: para
+#: Components.xml:768
+#, no-c-format
+msgid "These components relate to web-tier security."
+msgstr "Estes componentes relatam sobre a segurança de camada da web."
+
+#. Tag: literal
+#: Components.xml:773
+#, no-c-format
+msgid "org.jboss.seam.core.userPrincipal"
+msgstr "org.jboss.seam.core.userPrincipal"
+
+#. Tag: para
+#: Components.xml:775
+#, no-c-format
+msgid "Manager component for the current user <literal>Principal</literal>."
+msgstr "Componente gerenciador para o usuário atual <literal>Principal</literal>."
+
+#. Tag: literal
+#: Components.xml:781
+#, no-c-format
+msgid "org.jboss.seam.core.isUserInRole"
+msgstr "org.jboss.seam.core.isUserInRole"
+
+#. Tag: para
+#: Components.xml:783
+#, no-c-format
+msgid ""
+"Allows JSF pages to choose to render a control, depending upon the roles "
+"available to the current principal. <literal>&lt;h:commandButton value=\"edit"
+"\" rendered=\"#{isUserInRole[&#39;admin&#39;]}\"/&gt;</literal>."
+msgstr ""
+"Permite que as páginas JSF escolham processar um controle, baseado na disponibilidade das funções atuais mais importantes.<literal>&lt;h:commandButton value=\"edit"
+"\" rendered=\"#{isUserInRole[&#39;admin&#39;]}\"/&gt;</literal>."
+
+#. Tag: title
+#: Components.xml:792
+#, no-c-format
+msgid "JMS-related components"
+msgstr "Componentes relacionados JMS"
+
+#. Tag: para
+#: Components.xml:793
+#, no-c-format
+msgid ""
+"These components are for use with managed <literal>TopicPublisher</literal>s "
+"and <literal>QueueSender</literal>s (see below)."
+msgstr ""
+"Estes componentes são para uso em gerenciador <literal>TopicPublisher</"
+"literal>s e <literal>QueueSender</literal>s ( veja abaixo )."
+
+#. Tag: literal
+#: Components.xml:798
+#, no-c-format
+msgid "org.jboss.seam.jms.queueSession"
+msgstr "org.jboss.seam.jms.queueSession"
+
+#. Tag: para
+#: Components.xml:800
+#, no-c-format
+msgid "Manager component for a JMS <literal>QueueSession</literal> ."
+msgstr "Componente gerenciador para um JSF <literal>QueueSession</literal> ."
+
+#. Tag: literal
+#: Components.xml:806
+#, no-c-format
+msgid "org.jboss.seam.jms.topicSession"
+msgstr "org.jboss.seam.jms.topicSession"
+
+#. Tag: para
+#: Components.xml:808
+#, no-c-format
+msgid "Manager component for a JMS <literal>TopicSession</literal> ."
+msgstr "Componente gerenciador para um JSF <literal>TopicSession</literal> ."
+
+#. Tag: title
+#: Components.xml:817
+#, no-c-format
+msgid "Mail-related components"
+msgstr "Componentes de correio relacionado"
+
+#. Tag: para
+#: Components.xml:818
+#, no-c-format
+msgid "These components are for use with Seam&#39;s Email support"
+msgstr "Estes componentes são para uso de suporte do Email Seam"
+
+#. Tag: literal
+#: Components.xml:823
+#, no-c-format
+msgid "org.jboss.seam.mail.mailSession"
+msgstr "org.jboss.seam.mail.mailSession"
+
+#. Tag: para
+#: Components.xml:825
+#, no-c-format
+msgid "Manager component for a JavaMail <literal>Session</literal> ."
+msgstr "Componente gerenciador para um correio Java <literal>Session</literal> ."
+
+#. Tag: para
+#: Components.xml:830
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.host</literal> &mdash; the hostname "
+"of the SMTP server to use"
+msgstr "<literal>org.jboss.seam.mail.mailSession.host</literal> &mdash; o nome do host de um servidor SMTP a ser utilizado"
+
+#. Tag: para
+#: Components.xml:835
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.port</literal> &mdash; the port of "
+"the SMTP server to use"
+msgstr ""
+"<literal>org.jboss.seam.mail.mailSession.port</literal> &mdash; A porta do "
+"servidor SMTP a ser utilizado"
+
+#. Tag: para
+#: Components.xml:840
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.username</literal> &mdash; the "
+"username to use to connect to the SMTP server."
+msgstr ""
+"<literal>org.jboss.seam.mail.mailSession.username</literal> &mdash; O nome do "
+"usuário a ser utilizado na conexão do servidor SMTP."
+
+#. Tag: para
+#: Components.xml:845
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.password</literal> &mdash; the "
+"password to use to connect to the SMTP server"
+msgstr "<literal>org.jboss.seam.mail.mailSession.password</literal> &mdash; A senha a ser utilizada na conexão do servidor SMTP "
+
+#. Tag: para
+#: Components.xml:850
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.debug</literal> &mdash; enable "
+"JavaMail debugging (very verbose)"
+msgstr ""
+"<literal>org.jboss.seam.mail.mailSession.debug</literal> &mdash; Capacita a "
+"depuração do JavaMail (informações bem detalhadas)"
+
+#. Tag: para
+#: Components.xml:855
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.sessionJndiName</literal> &mdash; "
+"name under which a javax.mail.Session is bound to JNDI"
+msgstr ""
+"<literal>org.jboss.seam.mail.mailSession.sessionJndiName</literal> &mdash; Nome "
+"sob o qual um javax.mail.Session é vinculado ao JNDI"
+
+#. Tag: title
+#: Components.xml:866
+#, no-c-format
+msgid "Infrastructural components"
+msgstr "Componentes infraestruturais"
+
+#. Tag: para
+#: Components.xml:867
+#, no-c-format
+msgid ""
+"These components provide critical platform infrastructure. You can install a "
+"component by including its class name in the <literal>org.jboss.seam.core."
+"init.componentClasses</literal> configuration property."
+msgstr ""
+"Estes componentes fornecem uma infraestrutura de plataforma crítica. Você "
+"pode instalar o componente incluindo o próprio nome de classe na propriedade da "
+"configuração <literal>org.jboss.seam.core.init.componentClasses</literal>."
+
+#. Tag: literal
+#: Components.xml:872
+#, no-c-format
+msgid "org.jboss.seam.core.init"
+msgstr "org.jboss.seam.core.init"
+
+#. Tag: para
+#: Components.xml:874
+#, no-c-format
+msgid "Initialization settings for Seam. Always installed."
+msgstr "Inicialização da configuração do Seam. Sempre instalada."
+
+#. Tag: para
+#: Components.xml:879
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.jndiPattern</literal> &mdash; the JNDI "
+"pattern used for looking up session beans"
+msgstr ""
+"<literal>org.jboss.seam.core.init.jndiPattern</literal> &mdash; O padrão JNDI "
+"usado para procurar beans de sessão"
+
+#. Tag: para
+#: Components.xml:884
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.debug</literal> &mdash; enable Seam debug "
+"mode"
+msgstr ""
+"<literal>org.jboss.seam.core.init.debug</literal> &mdash; Permite que o Seam "
+"depure o modo "
+
+#. Tag: para
+#: Components.xml:889
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.clientSideConversations</literal> &mdash; "
+"if set to <literal>true</literal>, Seam will save conversation context "
+"variables in the client instead of in the <literal>HttpSession</literal>."
+msgstr ""
+"<literal>org.jboss.seam.core.init.clientSideConversations</literal> &mdash; Caso "
+"definido como <literal>true</literal>, o Seam irá salvar as variáveis do "
+"contexto de conversação no cliente ao invés da <literal>HttpSession</literal>."
+
+#. Tag: para
+#: Components.xml:894
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.userTransactionName</literal> &mdash; the "
+"JNDI name to use when looking up the JTA <literal>UserTransaction</literal> "
+"object."
+msgstr "<literal>org.jboss.seam.core.init.userTransactionName</literal> &mdash; O nome JNDI usado quando buscando pelo objeto <literal>UserTransaction</literal> JTA."
+
+#. Tag: literal
+#: Components.xml:902
+#, no-c-format
+msgid "org.jboss.seam.core.manager"
+msgstr "org.jboss.seam.core.manager"
+
+#. Tag: para
+#: Components.xml:904
+#, no-c-format
+msgid ""
+"Internal component for Seam page and conversation context management. Always "
+"installed."
+msgstr ""
+"Componente interno da página Seam e gerenciamento do contexto de "
+"conversação. Sempre instalado."
+
+#. Tag: para
+#: Components.xml:909
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationTimeout</literal> &mdash; "
+"the conversation context timeout in milliseconds."
+msgstr ""
+"<literal>org.jboss.seam.core.manager.conversationTimeout</literal> &mdash; O tempo "
+"máximo do contexto de conversação em milissegundos."
+
+#. Tag: para
+#: Components.xml:914
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.concurrentRequestTimeout</literal> "
+"&mdash; maximum wait time for a thread attempting to gain a lock on the long-"
+"running conversation context."
+msgstr ""
+"<literal>org.jboss.seam.core.manager.concurrentRequestTimeout</literal> "
+"&mdash;"
+"Tempo de espera máxima para um segmento ao tentar adicionar uma trava no "
+"contexto de conversação de longa duração."
+
+#. Tag: para
+#: Components.xml:919
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationIdParameter</literal> "
+"&mdash; the request parameter used to propagate the conversation id, default "
+"to <literal>conversationId</literal>."
+msgstr ""
+"<literal>org.jboss.seam.core.manager.conversationIdParameter</literal> "
+"&mdash; O "
+"parâmetro de solicitação usado para propagar a identidade da conversação, padrão para "
+"<literal>conversationId</literal>."
+
+#. Tag: para
+#: Components.xml:924
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationIsLongRunningParameter</"
+"literal> &mdash; the request parameter used to propagate information about "
+"whether the conversation is long-running, default to "
+"<literal>conversationIsLongRunning</literal>."
+msgstr ""
+"<literal>org.jboss.seam.core.manager.conversationIsLongRunningParameter</"
+"literal> &mdash; O parâmetro de solicitação usado para propagar informação a respeito da "
+"conversação, se é que é uma conversação de longa duração. Padrão de acordo com "
+"<literal>conversationIsLongRunning</literal>."
+
+#. Tag: literal
+#: Components.xml:932
+#, no-c-format
+msgid "org.jboss.seam.core.pages"
+msgstr "org.jboss.seam.core.pages"
+
+#. Tag: para
+#: Components.xml:934
+#, no-c-format
+msgid "Internal component for Seam workspace management. Always installed."
+msgstr ""
+"Componente interno para o gerenciamento do espaço de trabalho Seam. Sempre "
+"instalado."
+
+#. Tag: para
+#: Components.xml:939
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.pages.noConversationViewId</literal> &mdash; "
+"global setting for the view id to redirect to when a conversation entry is "
+"not found on the server side."
+msgstr ""
+"<literal>org.jboss.seam.core.pages.noConversationViewId</literal> &mdash;"
+"Configuração global para exibição da identidade e redirecionamento quando uma entrada de "
+"conversação não for encontrada ao lado do servidor."
+
+#. Tag: literal
+#: Components.xml:947
+#, no-c-format
+msgid "org.jboss.seam.core.ejb"
+msgstr "org.jboss.seam.core.ejb"
+
+#. Tag: para
+#: Components.xml:949
+#, no-c-format
+msgid ""
+"Bootstraps the JBoss Embeddable EJB3 container. Install as class "
+"<literal>org.jboss.seam.core.Ejb</literal>. This is useful when using Seam "
+"with EJB components outside the context of a Java EE 5 application server."
+msgstr ""
+"Inicializa o container EJB3 de Incorporação JBoss. Instale como classes "
+"<literal>org.jboss.seam.core.Ejb</literal>. Isto é útil quando utilizando o "
+"Seam com componentes EJB, fora do contexto de um servidor de aplicativo Java "
+"EE5."
+
+#. Tag: para
+#: Components.xml:952
+#, no-c-format
+msgid ""
+"The basic Embedded EJB configuration is defined in <literal>jboss-embedded-"
+"beans.xml</literal>. Additional microcontainer configuration (for example, "
+"extra datasources) may be specified by <literal>jboss-beans.xml</literal> or "
+"<literal>META-INF/jboss-beans.xml</literal> in the classpath."
+msgstr ""
+"A configuração básica EJB Incoporada é definida no <literal>jboss-embedded-"
+"beans.xml</literal>. A configuração microcontainer adicional (por exemplo, "
+"banco de dados extra) pode ser especificada por <literal>jboss-beans.xml</"
+"literal> ou <literal>META-INF/jboss-beans.xml</literal> na classpath."
+
+#. Tag: literal
+#: Components.xml:958
+#, no-c-format
+msgid "org.jboss.seam.core.microcontainer"
+msgstr "org.jboss.seam.core.microcontainer"
+
+#. Tag: para
+#: Components.xml:960
+#, no-c-format
+msgid ""
+"Bootstraps the JBoss microcontainer. Install as class <literal>org.jboss."
+"seam.core.Microcontainer</literal>. This is useful when using Seam with "
+"Hibernate and no EJB components outside the context of a Java EE application "
+"server. The microcontainer can provide a partial EE environment with JNDI, "
+"JTA, a JCA datasource and Hibernate."
+msgstr ""
+"Inicializa o microcontainer JBoss. Instala como classe <literal>org.jboss."
+"seam.core.Microcontainer</literal>. Isto é útil quando utilizando o Seam com "
+"Hibernate e não há componentes fora do contexto de um servidor de aplicativo "
+"EE Java. O microcontainer pode estabelecer um ambiente EE parcial com JNDI, "
+"JTA, um banco de dados JCA e Hibernate."
+
+#. Tag: para
+#: Components.xml:963
+#, no-c-format
+msgid ""
+"The microcontainer configuration may be specified by <literal>jboss-beans."
+"xml</literal> or <literal>META-INF/jboss-beans.xml</literal> in the "
+"classpath."
+msgstr ""
+"A configuração microcontainer pode ser especificada por <literal>jboss-"
+"beans.xml</literal> ou <literal>META-INF/jboss-beans.xml</literal> na classpath."
+
+#. Tag: literal
+#: Components.xml:969
+#, no-c-format
+msgid "org.jboss.seam.core.jbpm"
+msgstr "org.jboss.seam.core.jbpm"
+
+#. Tag: para
+#: Components.xml:971
+#, no-c-format
+msgid ""
+"Bootstraps a <literal>JbpmConfiguration</literal>. Install as class "
+"<literal>org.jboss.seam.core.Jbpm</literal>."
+msgstr ""
+"Inicializa um <literal>JbpmConfiguration</literal>. Instala como classe "
+"<literal>org.jboss.seam.core.Jbpm</literal>."
+
+#. Tag: para
+#: Components.xml:976
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.jbpm.processDefinitions</literal> &mdash; a "
+"list of resource names of jPDL files to be used for orchestration of "
+"business processes."
+msgstr ""
+"<literal>org.jboss.seam.core.jbpm.processDefinitions</literal> &mdash; uma lista de "
+"nomes de recurso dos arquivos JPDL para serem usados na orquestração de processos comerciais."
+
+#. Tag: para
+#: Components.xml:981
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.jbpm.pageflowDefinitions</literal> &mdash; a "
+"list of resource names of jPDL files to be used for orchestration of "
+"conversation page flows."
+msgstr ""
+"<literal>org.jboss.seam.core.jbpm.pageflowDefinitions</literal> &mdash; Uma lista "
+"de nomes de recurso do arquivo usado para orquestração de fluxos de página "
+"de conversação."
+
+#. Tag: literal
+#: Components.xml:989
+#, no-c-format
+msgid "org.jboss.seam.core.conversationEntries"
+msgstr "org.jboss.seam.core.conversationEntries"
+
+#. Tag: para
+#: Components.xml:991
+#, no-c-format
+msgid ""
+"Internal session-scoped component recording the active long-running "
+"conversations between requests."
+msgstr ""
+"Componente do escopo de sessão interno recorrendo as conversações de longa "
+"duração entre solicitações."
+
+#. Tag: literal
+#: Components.xml:997
+#, no-c-format
+msgid "org.jboss.seam.core.facesPage"
+msgstr "org.jboss.seam.core.facesPage"
+
+#. Tag: para
+#: Components.xml:999
+#, no-c-format
+msgid ""
+"Internal page-scoped component recording the conversation context associated "
+"with a page."
+msgstr ""
+"Componente do escopo page gravando o contexto de conversação "
+"associado com uma página."
+
+#. Tag: literal
+#: Components.xml:1005
+#, no-c-format
+msgid "org.jboss.seam.core.persistenceContexts"
+msgstr "org.jboss.seam.core.persistenceContexts"
+
+#. Tag: para
+#: Components.xml:1007
+#, no-c-format
+msgid ""
+"Internal component recording the persistence contexts which were used in the "
+"current conversation."
+msgstr ""
+"Componente interno gravando os contextos de persistência dos quais foram "
+"usados na conversação atual."
+
+#. Tag: literal
+#: Components.xml:1013
+#, no-c-format
+msgid "org.jboss.seam.jms.queueConnection"
+msgstr "org.jboss.seam.jms.queueConnection"
+
+#. Tag: para
+#: Components.xml:1015
+#, no-c-format
+msgid ""
+"Manages a JMS <literal>QueueConnection</literal>. Installed whenever managed "
+"managed <literal>QueueSender</literal> is installed."
+msgstr ""
+"Coordena um JSF <literal>QueueConnection</literal>. Instalado sempre que o "
+"gerenciador gerenciado <literal>QueueConnection</literal> for instalado. "
+
+#. Tag: para
+#: Components.xml:1020
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.jms.queueConnection.queueConnectionFactoryJndiName</"
+"literal> &mdash; the JNDI name of a JMS <literal>QueueConnectionFactory</"
+"literal>. Default to <literal>UIL2ConnectionFactory</literal>"
+msgstr ""
+"<literal>org.jboss.seam.jms.queueConnection.queueConnectionFactoryJndiName</"
+"literal> &mdash; O nome JNDI de uma <literal>QueueConnectionFactory</literal> JMS. "
+"Padrão de acordo com <literal>UIL2ConnectionFactory</literal>"
+
+#. Tag: literal
+#: Components.xml:1028
+#, no-c-format
+msgid "org.jboss.seam.jms.topicConnection"
+msgstr "org.jboss.seam.jms.topicConnection"
+
+#. Tag: para
+#: Components.xml:1030
+#, no-c-format
+msgid ""
+"Manages a JMS <literal>TopicConnection</literal>. Installed whenever managed "
+"managed <literal>TopicPublisher</literal> is installed."
+msgstr ""
+"Coordena um JMS <literal>TopicConnection</literal>. Instalado sempre que o "
+"gerenciado gerenciador <literal>TopicPublisher</literal> for instalado."
+
+#. Tag: para
+#: Components.xml:1035
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.jms.topicConnection.topicConnectionFactoryJndiName</"
+"literal> &mdash; the JNDI name of a JMS <literal>TopicConnectionFactory</"
+"literal>. Default to <literal>UIL2ConnectionFactory</literal>"
+msgstr ""
+"<literal>org.jboss.seam.jms.topicConnection.topicConnectionFactoryJndiName</"
+"literal> &mdash; O nome JNDI de um JMS <literal>TopicConnectionFactory</literal>. "
+"Padrão de acordo com <literal>UIL2ConnectionFactory</literal>"
+
+#. Tag: literal
+#: Components.xml:1043
+#, no-c-format
+msgid "org.jboss.seam.persistence.persistenceProvider"
+msgstr "org.jboss.seam.persistence.persistenceProvider"
+
+#. Tag: para
+#: Components.xml:1045
+#, no-c-format
+msgid "Abstraction layer for non-standardized features of JPA provider."
+msgstr "Camada de abstração para recursos não padronizados pelo provedor JPA."
+
+#. Tag: literal
+#: Components.xml:1051
+#, no-c-format
+msgid "org.jboss.seam.core.validation"
+msgstr "org.jboss.seam.core.validation"
+
+#. Tag: para
+#: Components.xml:1053
+#, no-c-format
+msgid "Internal component for Hibernate Validator support."
+msgstr "Componente interno para o suporte do Validador Hibernate."
+
+#. Tag: literal
+#: Components.xml:1059
+#, no-c-format
+msgid "org.jboss.seam.debug.introspector"
+msgstr "org.jboss.seam.debug.introspector"
+
+#. Tag: para
+#: Components.xml:1061 Components.xml:1069
+#, no-c-format
+msgid "Support for the Seam Debug Page."
+msgstr "Suporte para o Seam Debug Page."
+
+#. Tag: literal
+#: Components.xml:1067
+#, no-c-format
+msgid "org.jboss.seam.debug.contexts"
+msgstr "org.jboss.seam.debug.contexts"
+
+#. Tag: title
+#: Components.xml:1078
+#, no-c-format
+msgid "Special components"
+msgstr "Componentes especiais"
+
+#. Tag: para
+#: Components.xml:1079
+#, no-c-format
+msgid ""
+"Certain special Seam component classes are installable multiple times under "
+"names specified in the Seam configuration. For example, the following lines "
+"in <literal>components.xml</literal> install and configure two Seam "
+"components:"
+msgstr ""
+"Algumas classes especiais do componente Seam são instaláveis várias vezes "
+"sob nomes especificados na configuração Seam. Por exemplo, as seguintes "
+"linhas em <literal>components.xml</literal> instalam e configuram dois "
+"componentes Seam:"
+
+#. Tag: programlisting
+#: Components.xml:1082
+#, no-c-format
+msgid ""
+"&lt;component name=\"bookingDatabase\"\n"
+"          class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"    &lt;property name=\"persistenceUnitJndiName\"&gt;java:/comp/emf/"
+"bookingPersistence&lt;/property&gt;\n"
+"&lt;/component&gt;\n"
+"\n"
+"&lt;component name=\"userDatabase\"\n"
+"          class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"    &lt;property name=\"persistenceUnitJndiName\"&gt;java:/comp/emf/"
+"userPersistence&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+"&lt;component name=\"bookingDatabase\"\n"
+"          class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"    &lt;property name=\"persistenceUnitJndiName\"&gt;java:/comp/emf/"
+"bookingPersistence&lt;/property&gt;\n"
+"&lt;/component&gt;\n"
+"\n"
+"&lt;component name=\"userDatabase\"\n"
+"          class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"    &lt;property name=\"persistenceUnitJndiName\"&gt;java:/comp/emf/"
+"userPersistence&lt;/property&gt;\n"
+"&lt;/component&gt;"
+
+#. Tag: para
+#: Components.xml:1083
+#, no-c-format
+msgid ""
+"The Seam component names are <literal>bookingDatabase</literal> and "
+"<literal>userDatabase</literal>."
+msgstr ""
+"Os nomes dos componentes Seam são <literal>bookingDatabase</"
+"literal> e <literal>userDatabase</literal>."
+
+#. Tag: literal
+#: Components.xml:1088
+#, no-c-format
+msgid "&lt;entityManager&gt;"
+msgstr "&lt;entityManager&gt;"
+
+#. Tag: literal
+#: Components.xml:1089
+#, no-c-format
+msgid "org.jboss.seam.core.ManagedPersistenceContext"
+msgstr "org.jboss.seam.core.ManagedPersistenceContext"
+
+#. Tag: para
+#: Components.xml:1091
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed <literal>EntityManager</"
+"literal> with an extended persistence context."
+msgstr ""
+"Componente gerenciador para um gerenciado escopo de "
+"conversação <literal>EntityManager</literal> com um contexto de persistência "
+"estendido."
+
+#. Tag: para
+#: Components.xml:1096
+#, no-c-format
+msgid ""
+"<literal> &lt;entityManager&gt; .entityManagerFactory</literal> &mdash; a "
+"value binding expression that evaluates to an instance of "
+"<literal>EntityManagerFactory</literal>."
+msgstr ""
+"<literal> &lt;entityManager&gt; .entityManagerFactory</literal> &mdash; Uma "
+"expressão de vinculação de valor da qual avalia uma instância de "
+"<literal>EntityManagerFactory</literal>."
+
+#. Tag: para
+#: Components.xml:1099
+#, no-c-format
+msgid ""
+"<literal> &lt;entityManager&gt; .persistenceUnitJndiName</literal> &mdash; "
+"the JNDI name of the entity manager factory, default to <literal>java:/ &lt;"
+"managedPersistenceContext&gt; </literal>."
+msgstr ""
+"<literal> &lt;entityManager&gt; .persistenceUnitJndiName</literal> &mdash; o "
+"nome JNDI da fábrica do gerenciador de entidade, padrão de acordo com "
+"<literal>java:/ &lt;"
+"managedPersistenceContext&gt; </literal>."
+
+#. Tag: literal
+#: Components.xml:1107
+#, no-c-format
+msgid "&lt;entityManagerFactory&gt;"
+msgstr "&lt;entityManagerFactory&gt;"
+
+#. Tag: literal
+#: Components.xml:1108
+#, no-c-format
+msgid "org.jboss.seam.core.EntityManagerFactory"
+msgstr "org.jboss.seam.core.EntityManagerFactory"
+
+#. Tag: para
+#: Components.xml:1110
+#, no-c-format
+msgid ""
+"Manages a JPA <literal>EntityManagerFactory</literal>. This is most useful "
+"when using JPA outside of an EJB 3.0 supporting environment."
+msgstr ""
+"Controla um <literal>EntityManagerFactory</literal> JPA. Isto é muito útil "
+"quando utilizando o JPA fora de um ambiente suportado EJB 3.0."
+
+#. Tag: para
+#: Components.xml:1115
+#, no-c-format
+msgid ""
+"<literal>entityManagerFactory.persistenceUnitName</literal> &mdash; the name "
+"of the persistence unit."
+msgstr ""
+"<literal>entityManagerFactory.persistenceUnitName</literal> &mdash; o nome "
+"da unidade de persistência."
+
+#. Tag: para
+#: Components.xml:1120 Components.xml:1158
+#, no-c-format
+msgid "See the API JavaDoc for further configuration properties."
+msgstr "Veja o API JavaDoc para futuras propriedades de configuração."
+
+#. Tag: literal
+#: Components.xml:1126
+#, no-c-format
+msgid "&lt;session&gt;"
+msgstr "&lt;session&gt;"
+
+#. Tag: literal
+#: Components.xml:1127
+#, no-c-format
+msgid "org.jboss.seam.core.ManagedSession"
+msgstr "org.jboss.seam.core.ManagedSession"
+
+#. Tag: para
+#: Components.xml:1129
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed Hibernate "
+"<literal>Session</literal>."
+msgstr ""
+"Componente gerenciador para o Hibernate gerenciador do escopo de conversação "
+"<literal>Session</literal>."
+
+#. Tag: para
+#: Components.xml:1134
+#, no-c-format
+msgid ""
+"<literal> &lt;session&gt; .sessionFactory</literal> &mdash; a value binding "
+"expression that evaluates to an instance of <literal>SessionFactory</"
+"literal>."
+msgstr ""
+"<literal> &lt;session&gt; .sessionFactory</literal> &mdash; Uma expressão de "
+"vinculação de valor que avalia uma instância de "
+"<literal>SessionFactory</literal>."
+
+#. Tag: para
+#: Components.xml:1137
+#, no-c-format
+msgid ""
+"<literal> &lt;session&gt; .sessionFactoryJndiName</literal> &mdash; the JNDI "
+"name of the session factory, default to <literal>java:/ &lt;"
+"managedSession&gt; </literal>."
+msgstr ""
+"<literal> &lt;session&gt; .sessionFactoryJndiName</literal> &mdash; O nome "
+"JNDI da fábrica de sessão, padrão de acordo com <literal>java:/ &lt;"
+"managedSession&gt; </literal>."
+
+#. Tag: literal
+#: Components.xml:1145
+#, no-c-format
+msgid "&lt;sessionFactory&gt;"
+msgstr "&lt;sessionFactory&gt;"
+
+#. Tag: literal
+#: Components.xml:1146
+#, no-c-format
+msgid "org.jboss.seam.core.HibernateSessionFactory"
+msgstr "org.jboss.seam.core.HibernateSessionFactory"
+
+#. Tag: para
+#: Components.xml:1148
+#, no-c-format
+msgid "Manages a Hibernate <literal>SessionFactory</literal>."
+msgstr "Gerencia uma <literal>SessionFactory</literal> Hibernate."
+
+#. Tag: para
+#: Components.xml:1153
+#, no-c-format
+msgid ""
+"<literal>&lt;sessionFactory&gt;.cfgResourceName</literal> &mdash; the path "
+"to the configuration file. Default to <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+"<literal>&lt;sessionFactory&gt;.cfgResourceName</literal> &mdash; O caminho "
+"para o arquivo de configuração. Padrão de acordo com <literal>hibernate.cfg."
+"xml</literal>."
+
+#. Tag: literal
+#: Components.xml:1164
+#, no-c-format
+msgid "&lt;managedQueueSender&gt;"
+msgstr "&lt;managedQueueSender&gt;"
+
+#. Tag: literal
+#: Components.xml:1165
+#, no-c-format
+msgid "org.jboss.seam.jms.ManagedQueueSender"
+msgstr "org.jboss.seam.jms.ManagedQueueSender"
+
+#. Tag: para
+#: Components.xml:1167
+#, no-c-format
+msgid ""
+"Manager component for an event scoped managed JMS <literal>QueueSender</"
+"literal>."
+msgstr ""
+"Componente gerenciador para um escopo do evento JMS gerenciado"
+"<literal>QueueSender</literal>."
+
+#. Tag: para
+#: Components.xml:1172
+#, no-c-format
+msgid ""
+"<literal> &lt;managedQueueSender&gt; .queueJndiName</literal> &mdash; the "
+"JNDI name of the JMS queue."
+msgstr ""
+"<literal> &lt;managedQueueSender&gt; .queueJndiName</literal> &mdash; O nome "
+"JNDI da fila JMS."
+
+#. Tag: literal
+#: Components.xml:1180
+#, no-c-format
+msgid "&lt;managedTopicPublisher&gt;"
+msgstr "&lt;managedTopicPublisher&gt;"
+
+#. Tag: literal
+#: Components.xml:1181
+#, no-c-format
+msgid "org.jboss.seam.jms.ManagedTopicPublisher"
+msgstr "org.jboss.seam.jms.ManagedTopicPublisher"
+
+#. Tag: para
+#: Components.xml:1183
+#, no-c-format
+msgid ""
+"Manager component for an event scoped managed JMS <literal>TopicPublisher</"
+"literal>."
+msgstr ""
+"Componente gerenciador para um  escopo do evento JMS gerenciado "
+"<literal>TopicPublisher</literal>."
+
+#. Tag: para
+#: Components.xml:1188
+#, no-c-format
+msgid ""
+"<literal> &lt;managedTopicPublisher&gt; .topicJndiName</literal> &mdash; the "
+"JNDI name of the JMS topic."
+msgstr ""
+"<literal> &lt;managedTopicPublisher&gt; .topicJndiName</literal> &mdash; o nome "
+"JNDI do tópico JMS."
+
+#. Tag: literal
+#: Components.xml:1196
+#, no-c-format
+msgid "&lt;managedWorkingMemory&gt;"
+msgstr "&lt;managedWorkingMemory&gt;"
+
+#. Tag: literal
+#: Components.xml:1197
+#, no-c-format
+msgid "org.jboss.seam.drools.ManagedWorkingMemory"
+msgstr "org.jboss.seam.drools.ManagedWorkingMemory"
+
+#. Tag: para
+#: Components.xml:1199
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed Drools "
+"<literal>WorkingMemory</literal>."
+msgstr ""
+"Componente gerenciador para um escopo da conversação gerenciado por Drools "
+"<literal>WorkingMemory</literal>."
+
+#. Tag: para
+#: Components.xml:1204
+#, no-c-format
+msgid ""
+"<literal> &lt;managedWorkingMemory&gt; .ruleBase</literal> &mdash; a value "
+"expression that evaluates to an instance of <literal>RuleBase</literal>."
+msgstr ""
+"<literal> &lt;managedWorkingMemory&gt; .ruleBase</literal> &mdash; uma "
+"expressão de valor que avalia uma instância de <literal>RuleBase</literal>."
+
+#. Tag: literal
+#: Components.xml:1212
+#, no-c-format
+msgid "&lt;ruleBase&gt;"
+msgstr "&lt;ruleBase&gt;"
+
+#. Tag: literal
+#: Components.xml:1213
+#, no-c-format
+msgid "org.jboss.seam.drools.RuleBase"
+msgstr "org.jboss.seam.drools.RuleBase"
+
+#. Tag: para
+#: Components.xml:1215
+#, no-c-format
+msgid ""
+"Manager component for an application scoped Drools <literal>RuleBase</"
+"literal>. Note that this is not really intended for production usage, since "
+"it does not support dynamic installation of new rules."
+msgstr ""
+"Componente gerenciador para escopo do aplicativo Drools "
+"<literal>RuleBase</literal>. Note que isto não é o objetivo para "
+"o uso de produção, uma vez que isto não suporta a dinâmica de instalação das "
+"regras novas."
+
+#. Tag: para
+#: Components.xml:1220
+#, no-c-format
+msgid ""
+"<literal> &lt;ruleBase&gt; .ruleFiles</literal> &mdash; a list of files "
+"containing Drools rules."
+msgstr "<literal> &lt;ruleBase&gt; .ruleFiles</literal> &mdash; Uma lista de arquivo contendo as regras Drools."
+
+#. Tag: para
+#: Components.xml:1223
+#, no-c-format
+msgid ""
+"<literal> &lt;ruleBase&gt; .dslFile</literal> &mdash; a Drools DSL "
+"definition."
+msgstr "<literal> &lt;ruleBase&gt; .dslFile</literal> &mdash; Uma definição DSL Drools."
+
+#. Tag: literal
+#: Components.xml:1231
+#, no-c-format
+msgid "&lt;entityHome&gt;"
+msgstr "&lt;entityHome&gt;"
+
+#. Tag: literal
+#: Components.xml:1232
+#, no-c-format
+msgid "org.jboss.seam.framework.EntityHome"
+msgstr "org.jboss.seam.framework.EntityHome"
+
+#. Tag: literal
+#: Components.xml:1238
+#, no-c-format
+msgid "&lt;hibernateEntityHome&gt;"
+msgstr "&lt;hibernateEntityHome&gt;"
+
+#. Tag: literal
+#: Components.xml:1239
+#, no-c-format
+msgid "org.jboss.seam.framework.HibernateEntityHome"
+msgstr "org.jboss.seam.framework.HibernateEntityHome"
+
+#. Tag: literal
+#: Components.xml:1245
+#, no-c-format
+msgid "&lt;entityQuery&gt;"
+msgstr "&lt;entityQuery&gt;"
+
+#. Tag: literal
+#: Components.xml:1246
+#, no-c-format
+msgid "org.jboss.seam.framework.EntityQuery"
+msgstr "org.jboss.seam.framework.EntityQuery"
+
+#. Tag: literal
+#: Components.xml:1252
+#, no-c-format
+msgid "&lt;hibernateEntityQuery&gt;"
+msgstr "&lt;hibernateEntityQuery&gt;"
+
+#. Tag: literal
+#: Components.xml:1253
+#, no-c-format
+msgid "org.jboss.seam.framework.HibernateEntityQuery"
+msgstr "org.jboss.seam.framework.HibernateEntityQuery"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Concepts.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Concepts.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Concepts.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2397 @@
+# translation of Concepts.po to Brazilian Portuguese
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Leticia de Lima <ldelima at redhat.com>, 2007, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Concepts\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2008-06-04 11:25+1000\n"
+"Last-Translator: Leticia de Lima <ldelima at redhat.com>\n"
+"Language-Team: Brazilian Portuguese <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms:  JBEAP420 \n"
+
+#. Tag: title
+#: Concepts.xml:6
+#, no-c-format
+msgid "The contextual component model"
+msgstr "O modelo do componente contextual "
+
+#. Tag: para
+#: Concepts.xml:7
+#, no-c-format
+msgid ""
+"The two core concepts in Seam are the notion of a <emphasis>context</"
+"emphasis> and the notion of a <emphasis>component</emphasis>. Components are "
+"stateful objects, usually EJBs, and an instance of a component is associated "
+"with a context, and given a name in that context. <emphasis>Bijection</"
+"emphasis> provides a mechanism for aliasing internal component names "
+"(instance variables) to contextual names, allowing component trees to be "
+"dynamically assembled, and reassembled by Seam."
+msgstr ""
+"Os dois conceitos centrados em Seam são a idéia do <emphasis>contexto</"
+"emphasis> e a idéia do <emphasis>componente</emphasis>. Os componentes "
+"são objetos com estado, normalmente EJBs, e a instância de um "
+"componente é associada com o contexto e um nome gerado no mesmo."
+" A <emphasis>Bijeção</emphasis> provê um mecanismo para os nomes de componente "
+"interno alias (variáveis de instância) para nomes contextuais, permitindo que "
+"três componentes sejam dinamicamente projetados e reprojetados pelo Seam."
+
+#. Tag: para
+#: Concepts.xml:10
+#, no-c-format
+msgid "Let&#39;s start by describing the contexts built in to Seam."
+msgstr "Vamos começar descrevendo os contextos construídos no Seam. "
+
+#. Tag: title
+#: Concepts.xml:13
+#, no-c-format
+msgid "Seam contexts"
+msgstr "Contextos Seam"
+
+#. Tag: para
+#: Concepts.xml:14
+#, no-c-format
+msgid ""
+"Seam contexts are created and destroyed by the framework. The application "
+"does not control context demarcation via explicit Java API calls. Context "
+"are usually implicit. In some cases, however, contexts are demarcated via "
+"annotations."
+msgstr ""
+"Os contextos Seam são criados e destruídos pelo framework. O aplicativo "
+"não controla a demarcação do contexto por meio de chamadas API Java "
+"explícitas. Os contextos são normalmente implícitos, e em certos casos, são demarcados por meio de anotações."
+
+#. Tag: para
+#: Concepts.xml:17
+#, no-c-format
+msgid "The basic Seam contexts are:"
+msgstr "Segue abaixo os contextos Seam básicos:"
+
+#. Tag: para
+#: Concepts.xml:22
+#, no-c-format
+msgid "<para>Stateless context</para>"
+msgstr "<para>Contexto sem estado</para>"
+
+#. Tag: para
+#: Concepts.xml:27
+#, no-c-format
+msgid "Event (or request) context"
+msgstr "Contexto do evento (ou solicitação)"
+
+#. Tag: para
+#: Concepts.xml:32 Concepts.xml:147
+#, no-c-format
+msgid "<para>Page context</para>"
+msgstr "<para>Contexto da página</para>"
+
+#. Tag: para
+#: Concepts.xml:37 Concepts.xml:152
+#, no-c-format
+msgid "<para>Conversation context</para>"
+msgstr "<para>Contexto de conversação</para>"
+
+#. Tag: para
+#: Concepts.xml:42 Concepts.xml:157
+#, no-c-format
+msgid "<para>Session context</para>"
+msgstr "<para>Contexto da sessão</para>"
+
+#. Tag: para
+#: Concepts.xml:47 Concepts.xml:162
+#, no-c-format
+msgid "<para>Business process context</para>"
+msgstr "<para>Contexto do processo comercial</para>"
+
+#. Tag: para
+#: Concepts.xml:52 Concepts.xml:167
+#, no-c-format
+msgid "<para>Application context</para>"
+msgstr "<para>Contexto do Aplicativo</para>"
+
+#. Tag: para
+#: Concepts.xml:57
+#, no-c-format
+msgid ""
+"You will recognize some of these contexts from servlet and related "
+"specifications. However, two of them might be new to you: "
+"<emphasis>conversation context</emphasis>, and <emphasis>business process "
+"context</emphasis>. One reason state management in web applications is so "
+"fragile and error-prone is that the three built-in contexts (request, "
+"session and application) are not especially meaningful from the point of "
+"view of the business logic. A user login session, for example, is a fairly "
+"arbitrary construct in terms of the actual application work flow. Therefore, "
+"most Seam components are scoped to the conversation or business process "
+"contexts, since they are the contexts which are most meaningful in terms of "
+"the application."
+msgstr ""
+"Você irá reconhecer alguns destes contextos a partir do servlet e especificações "
+"relatadas. No entanto, dois deles podem ser novidade para você: "
+"<emphasis>contexto de conversação</emphasis> e <emphasis>contexto de processo comercial</emphasis>. Uma das razões do gerenciador de estado nos aplicativos "
+"da web ser muito frágil e induzir ao erro, é que os três contextos internos "
+"(solicitação,sessão e aplicativo) não são especificamente significativos "
+"no ponto de vista de lógica comercial. Uma sessão de logon do usuário, por "
+"exemplo, é uma construção claramente arbitrária em termos de fluxo de trabalho "
+"do aplicativo atual. Desta forma, a maioria dos componentes Seam são escopos "
+"da conversação ou contextos de processos comerciais, desde que eles sejam "
+"os contextos mais significativos em relação ao aplicativo."
+
+#. Tag: para
+#: Concepts.xml:60
+#, no-c-format
+msgid "Let&#39;s look at each context in turn."
+msgstr "Vamos observar cada contexto em atividade. "
+
+#. Tag: title
+#: Concepts.xml:63
+#, no-c-format
+msgid "<title>Stateless context</title>"
+msgstr "<title>Contexto sem estado</title>"
+
+#. Tag: para
+#: Concepts.xml:64
+#, no-c-format
+msgid ""
+"Components which are truly stateless (stateless session beans, primarily) "
+"always live in the stateless context (this is really a non-context). "
+"Stateless components are not very interesting, and are arguably not very "
+"object-oriented. Nevertheless, they are important and often useful."
+msgstr ""
+"Os componentes que são de fato sem estado (primeiramente beans de sessão "
+"sem estado) sempre existem no contexto sem estado (na "
+"verdade um contexto nulo). Componentes sem estado são "
+"argumentáveis, mas não são muito interessantes e não possuem objeto orientado. "
+"Todavia, eles são importantes e freqüentemente úteis."
+
+#. Tag: title
+#: Concepts.xml:67
+#, no-c-format
+msgid "<title>Event context</title>"
+msgstr "<title>Contexto do Evento</title>"
+
+#. Tag: para
+#: Concepts.xml:68
+#, no-c-format
+msgid ""
+"The event context is the \"narrowest\" stateful context, and is a "
+"generalization of the notion of the web request context to cover other kinds "
+"of events. Nevertheless, the event context associated with the lifecycle of "
+"a JSF request is the most important example of an event context, and the one "
+"you will work with most often. Components associated with the event context "
+"are destroyed at the end of the request, but their state is available and "
+"well-defined for at least the lifecycle of the request."
+msgstr ""
+"O contexto do evento é o contexto com estado \"narrowest\", e é um "
+"generalizador de noção do contexto de solicitação da web para cobertura de "
+"outros tipos de eventos. No entanto, o contexto do evento associado com o "
+"tempo de vida de uma solicitação JSF é um exemplo muito importante de um "
+"contexto de evento. Os componentes associados com um contexto de evento são "
+"destruídos no final da solicitação, mas o estado está disponível e bem "
+"definido, pelo menos, durante o tempo de vida da solicitação. "
+
+#. Tag: para
+#: Concepts.xml:71
+#, no-c-format
+msgid ""
+"When you invoke a Seam component via RMI, or Seam Remoting, the event "
+"context is created and destroyed just for the invocation."
+msgstr ""
+"Quando você chama um componente Seam por meio de RMI, ou Seam Remoting, o "
+"contexto do evento é criado e destruído apenas pela invocação."
+
+#. Tag: title
+#: Concepts.xml:74
+#, no-c-format
+msgid "<title>Page context</title>"
+msgstr "<title>Contexto da Página</title>"
+
+#. Tag: para
+#: Concepts.xml:75
+#, no-c-format
+msgid ""
+"The page context allows you to associate state with a particular instance of "
+"a rendered page. You can initialize state in your event listener, or while "
+"actually rendering the page, and then have access to it from any event that "
+"originates from that page. This is especially useful for functionality like "
+"clickable lists, where the list is backed by changing data on the server "
+"side. The state is actually serialized to the client, so this construct is "
+"extremely robust with respect to multi-window operation and the back button."
+msgstr ""
+"O contexto da página permite você associar o estado com uma instância "
+"particular de uma página processada. Você pode iniciar o estado no seu "
+"evento ouvinte, ou no momento de processamento da página, e então ter acesso "
+"a qualquer evento originado a partir desta página. Este procedimento é muito utilizado "
+"para funcionalidade como listas clicáveis, onde a lista efetua o backup "
+"mudando os dados no lado do servidor. O estado é na realidade serializado "
+"para o cliente. Então, a construção é extremamente robusta sempre respeitando a "
+"operação janela múltipla e o botão voltar."
+
+#. Tag: title
+#: Concepts.xml:78
+#, no-c-format
+msgid "<title>Conversation context</title>"
+msgstr "<title>Contexto de conversação</title>"
+
+#. Tag: para
+#: Concepts.xml:79
+#, no-c-format
+msgid ""
+"The conversation context is a truly central concept in Seam. A "
+"<emphasis>conversation</emphasis> is a unit of work from the point of view "
+"of the user. It might span several interactions with the user, several "
+"requests, and several database transactions. But to the user, a conversation "
+"solves a single problem. For example, \"book hotel\", \"approve contract\", "
+"\"create order\" are all conversations. You might like to think of a "
+"conversation implementing a single \"use case\" or \"user story\", but the "
+"relationship is not necessarily quite exact."
+msgstr ""
+"O contexto de conversação é um conceito central e verdadeiro em Seam. A "
+"<emphasis>conversação</emphasis> é uma unidade de trabalho do ponto de vista "
+"do usuário. Ela pode passar por diversas interações com o usuário, muitas "
+"solicitações e muitas transações do banco de dados. Porém para o usuário, "
+"a conversação resolve um problema único. Por exemplo, \"reservar um hotel\", "
+"\"aprovar um contrato\" e \"fazer pedido\" são todas as conversações. Você pode até pensar numa conversação implementando um único \"caso de uso\" ou \"histórico do usuário\", mas a relação não é necessariamente exata."
+
+#. Tag: para
+#: Concepts.xml:82
+#, no-c-format
+msgid ""
+"A conversation holds state associated with \"what the user is doing now, in "
+"this window\". A single user may have multiple conversations in progress at "
+"any point in time, usually in multiple windows. The conversation context "
+"allows us to ensure that state from the different conversations does not "
+"collide and cause bugs."
+msgstr ""
+"A conversação contém o estado associado com \"o que o usuário está fazendo nesta janela agora\". Um único usuário pode ter conversações múltiplas em andamento num mesmo instante, normalmente em janelas múltiplas. O contexto de "
+"conversação nos permite assegurar que o estado de diferentes conversações "
+"não colidem ou causam erros."
+
+#. Tag: para
+#: Concepts.xml:85
+#, no-c-format
+msgid ""
+"It might take you some time to get used to thinking of applications in terms "
+"of conversations. But once you get used to it, we think you&#39;ll love the "
+"notion, and never be able to not think in terms of conversations again!"
+msgstr ""
+"Talvez demore um pouco para você começar a pensar nos aplicativos em "
+"termos de conversação. No entanto, uma vez que você se acostume com esta idéia, "
+"acreditamos que você irá adorar esta noção, e jamais mais pensará em termos de "
+"conversação novamente!"
+
+#. Tag: para
+#: Concepts.xml:88
+#, no-c-format
+msgid ""
+"Some conversations last for just a single request. Conversations that span "
+"multiple requests must be demarcated using annotations provided by Seam."
+msgstr ""
+"Algumas conversações duram por apenas uma única solicitação. As conversações que vão além "
+"das solicitações múltiplas devem ser demarcadas usando anotações "
+"providenciadas pelo Seam."
+
+#. Tag: para
+#: Concepts.xml:91
+#, no-c-format
+msgid ""
+"Some conversations are also <emphasis>tasks</emphasis>. A task is a "
+"conversation that is significant in terms of a long-running business "
+"process, and has the potential to trigger a business process state "
+"transition when it is successfully completed. Seam provides a special set of "
+"annotations for task demarcation."
+msgstr ""
+"Algumas conversações são também <emphasis>tarefas</emphasis>. A tarefa é uma "
+"conversação significante em termos de um processo comercial de longa "
+"duração, e possui potencialidade para acionar uma transição do estado de "
+"processo comercial, uma vez completada com êxito. O Seam fornece "
+"uma definição especial de anotações para a demarcação da tarefa."
+
+#. Tag: para
+#: Concepts.xml:94
+#, no-c-format
+msgid ""
+"Conversations may be <emphasis>nested</emphasis>, with one conversation "
+"taking place \"inside\" a wider conversation. This is an advanced feature."
+msgstr ""
+"As conversações podem ser <emphasis>aninhadas</emphasis>, com uma conversação "
+"ocorrendo \"dentro\" de uma conversação mais larga. Isto é um atributo "
+"vantajoso."
+
+#. Tag: para
+#: Concepts.xml:97
+#, no-c-format
+msgid ""
+"Usually, conversation state is actually held by Seam in the servlet session "
+"between requests. Seam implements configurable <emphasis>conversation "
+"timeout</emphasis>, automatically destroying inactive conversations, and "
+"thus ensuring that the state held by a single user login session does not "
+"grow without bound if the user abandons conversations."
+msgstr ""
+"Normalmente, o estado de conversação é retido pelo Seam na sessão servlet entre solicitações. O Seam implementa a configuração <emphasis>tempo limite de conversação</emphasis>, destruindo automaticamente as conversações inativas. Desta maneira, é assegurado que o estado, retido por uma sessão única de logon do "
+"usuário, não aumentará ilimitadamente caso o usuário decida abandonar as conversações."
+
+#. Tag: para
+#: Concepts.xml:100
+#, no-c-format
+msgid ""
+"Seam serializes processing of concurrent requests that take place in the "
+"same long-running conversation context, in the same process."
+msgstr "O Seam publica em séries as solicitações coexistentes que ocorrem no mesmo contexto de conversação de longa execução, num mesmo processo."
+
+#. Tag: para
+#: Concepts.xml:103
+#, no-c-format
+msgid ""
+"Alternatively, Seam may be configured to keep conversational state in the "
+"client browser."
+msgstr ""
+"Alternativamente, o Seam pode ser configurado para manter o estado "
+"conversacional no navegador do cliente."
+
+#. Tag: title
+#: Concepts.xml:106
+#, no-c-format
+msgid "<title>Session context</title>"
+msgstr "<title>Contexto de Sessão</title>"
+
+#. Tag: para
+#: Concepts.xml:107
+#, no-c-format
+msgid ""
+"A session context holds state associated with the user login session. While "
+"there are some cases where it is useful to share state between several "
+"conversations, we generally frown on the use of session context for holding "
+"components other than global information about the logged in user."
+msgstr ""
+"O contexto de sessão detém o estado associado com a sessão de logon do "
+"usuário. Mesmo que existam alguns casos onde é útil dividir o estado entre "
+"diversas conversações, nós normalmente desaprovamos o uso do contexto de "
+"sessão para componentes de detenção, com exceção de informação global sobre o "
+"logon do usuário. "
+
+#. Tag: para
+#: Concepts.xml:110
+#, no-c-format
+msgid ""
+"In a JSR-168 portal environment, the session context represents the portlet "
+"session."
+msgstr ""
+"Num ambiente de portal JSR-168, o contexto de sessão representa a sessão "
+"portlet."
+
+#. Tag: title
+#: Concepts.xml:113
+#, no-c-format
+msgid "<title>Business process context</title>"
+msgstr "<title>Contexto de processo comercial</title>"
+
+#. Tag: para
+#: Concepts.xml:114
+#, no-c-format
+msgid ""
+"The business process context holds state associated with the long running "
+"business process. This state is managed and made persistent by the BPM "
+"engine (JBoss jBPM). The business process spans multiple interactions with "
+"multiple users, so this state is shared between multiple users, but in a "
+"well-defined manner. The current task determines the current business "
+"process instance, and the lifecycle of the business process is defined "
+"externally using a <emphasis>process definition language</emphasis>, so "
+"there are no special annotations for business process demarcation."
+msgstr ""
+"O contexto de processo comercial retém o estado associado com um processo "
+"comercial de longa execução. Este estado é gerenciado e torna-se persistente"
+" graças ao mecanismo BPM (JBoss JBPM). O processo comercial aplica "
+"várias interações com usuários múltiplos, para que o estado seja dividido entre "
+"usuários, porém numa maneira bem definida. A tarefa atual determina a "
+"instância do processo comercial atual, e o ciclo de vida do processo comercial é definido externamente usando um <emphasis>idioma de definição do processo</emphasis>, onde não há anotações especiais para a demarcação "
+"de processo comercial."
+
+#. Tag: title
+#: Concepts.xml:117
+#, no-c-format
+msgid "<title>Application context</title>"
+msgstr "<title>Contexto de Aplicação</title>"
+
+#. Tag: para
+#: Concepts.xml:118
+#, no-c-format
+msgid ""
+"The application context is the familiar servlet context from the servlet "
+"spec. Application context is mainly useful for holding static information "
+"such as configuration data, reference data or metamodels. For example, Seam "
+"stores its own configuration and metamodel in the application context."
+msgstr ""
+"O contexto de aplicação é um contexto servlet conhecido pelo servlet spec. O "
+"contexto de aplicação é principalmente utilizado para reter informação de "
+"estatística como configuração de dados, dados de referência ou meta-"
+"modelos. Por exemplo, o Seam armazena a própria configuração e meta-modelo "
+"no contexto de aplicação."
+
+#. Tag: title
+#: Concepts.xml:121
+#, no-c-format
+msgid "Context variables"
+msgstr "Variáveis de contexto"
+
+#. Tag: para
+#: Concepts.xml:122
+#, no-c-format
+msgid ""
+"A context defines a namespace, a set of <emphasis>context variables</"
+"emphasis>. These work much the same as session or request attributes in the "
+"servlet spec. You may bind any value you like to a context variable, but "
+"usually we bind Seam component instances to context variables."
+msgstr ""
+"O contexto define o nome do espaço, uma definição de <emphasis>variáveis de contexto</emphasis>. Este trabalho é muito parecido com a sessão ou "
+"atributos da solicitação no servlet spec. Você pode ligar qualquer valor que desejar à variável de contexto, mas normalmente ligamos as "
+"instâncias do componente Seam às variáveis de contexto."
+
+#. Tag: para
+#: Concepts.xml:125
+#, no-c-format
+msgid ""
+"So, within a context, a component instance is identified by the context "
+"variable name (this is usually, but not always, the same as the component "
+"name). You may programatically access a named component instance in a "
+"particular scope via the <literal>Contexts</literal> class, which provides "
+"access to several thread-bound instances of the <literal>Context</literal> "
+"interface:"
+msgstr ""
+"Portanto, com este contexto, a instância do componente é identificada pelo nome "
+"da variável de contexto (normalmente o mesmo do nome do componente). Você "
+"pode acessar uma instância de componente nomeado num escopo "
+"particular por meio da classe de <literal>Contexts</literal>, da qual "
+"fornece o acesso a muitas instâncias de segmento vinculadas à interface de "
+"<literal>Context</literal>:"
+
+#. Tag: programlisting
+#: Concepts.xml:128
+#, no-c-format
+msgid "User user = (User) Contexts.getSessionContext().get(\"user\");"
+msgstr "User user = (User) Contexts.getSessionContext().get(\"user\");"
+
+#. Tag: para
+#: Concepts.xml:129
+#, no-c-format
+msgid "You may also set or change the value associated with a name:"
+msgstr "Você pode também definir ou mudar o valor associado com o nome:"
+
+#. Tag: programlisting
+#: Concepts.xml:132
+#, no-c-format
+msgid "Contexts.getSessionContext().set(\"user\", user);"
+msgstr "Contexts.getSessionContext().set(\"user\", user);"
+
+#. Tag: para
+#: Concepts.xml:133
+#, no-c-format
+msgid ""
+"Usually, however, we obtain components from a context via injection, and put "
+"component instances into a context via outjection."
+msgstr ""
+"No entanto, normalmente obtemos os componentes de um contexto via "
+"injeção, e colocamos instâncias do componente em um contexto por meio de outjection."
+
+#. Tag: title
+#: Concepts.xml:136
+#, no-c-format
+msgid "Context search priority"
+msgstr "Prioridade de busca do contexto"
+
+#. Tag: para
+#: Concepts.xml:137
+#, no-c-format
+msgid ""
+"Sometimes, as above, component instances are obtained from a particular "
+"known scope. Other times, all stateful scopes are searched, in "
+"<emphasis>priority order</emphasis>. The order is as follows:"
+msgstr ""
+"Às vezes, as instâncias do componente são obtidas a partir de um específico escopo "
+"conhecido. Em outros casos, todos os escopos com estado são procurados por "
+"<emphasis>ordem de prioridade</emphasis>. Segue abaixo a seqüência:"
+
+#. Tag: para
+#: Concepts.xml:142
+#, no-c-format
+msgid "<para>Event context</para>"
+msgstr "<para>Contexto do evento</para>"
+
+#. Tag: para
+#: Concepts.xml:172
+#, no-c-format
+msgid ""
+"You can perform a priority search by calling <literal>Contexts."
+"lookupInStatefulContexts()</literal>. Whenever you access a component by "
+"name from a JSF page, a priority search occurs."
+msgstr ""
+"Você pode executar uma busca de prioridade chamando <literal>Contexts."
+"lookupInStatefulContexts()</literal>. Toda vez em que você acessar um "
+"componente pelo nome de uma página JSF, ocorrerá uma busca de prioridade."
+
+#. Tag: title
+#: Concepts.xml:175
+#, no-c-format
+msgid "Concurrency model"
+msgstr "Modelo Simultâneo"
+
+#. Tag: para
+#: Concepts.xml:176
+#, no-c-format
+msgid ""
+"Neither the servlet nor EJB specifications define any facilities for "
+"managing concurrent requests originating from the same client. The servlet "
+"container simply lets all threads run concurrently and leaves enforcing "
+"threadsafeness to application code. The EJB container allows stateless "
+"components to be accessed concurrently, and throws an exception if multiple "
+"threads access a stateful session bean."
+msgstr ""
+"Nem o servlet ou mesmo as especificações EJB definem qualquer facilidade das "
+"solicitações simultâneas gerenciadas originalmente a partir de um mesmo cliente. O "
+"container servlet apenas permite que todos os segmentos rodem "
+"simultaneamente, e deixa a segmentação forçada para o código de aplicação. O "
+"container EJB permite que componentes sem estado sejam acessados "
+"simultaneamente.Além de lançar uma exceção, caso o mesmo acesse segmentos múltiplos de um "
+"bean de sessão com estado."
+
+#. Tag: para
+#: Concepts.xml:179
+#, no-c-format
+msgid ""
+"This behavior might have been okay in old-style web applications which were "
+"based around fine-grained, synchronous requests. But for modern applications "
+"which make heavy use of many fine-grained, asynchronous (AJAX) requests, "
+"concurrency is a fact of life, and must be supported by the programming "
+"model. Seam weaves a concurrency management layer into its context model."
+msgstr ""
+"O comportamento deveria ser bom nos aplicativos da web de estilo antigo, onde eram baseados em torno de solicitações não sincronizadas (AJAX) de granulação fina. A concorrência é comum, e deve ser suportada "
+"pela programação modelo. O Seam combina uma camada gerenciadora simultânea "
+"neste modelo de contexto."
+
+#. Tag: para
+#: Concepts.xml:182
+#, no-c-format
+msgid ""
+"The Seam session and application contexts are multithreaded. Seam will allow "
+"concurrent requests in a context to be processed concurrently. The event and "
+"page contexts are by nature single threaded. The business process context is "
+"strictly speaking multi-threaded, but in practice concurrency is "
+"sufficiently rare that this fact may be disregarded most of the time. "
+"Finally, Seam enforces a <emphasis>single thread per conversation per "
+"process</emphasis> model for the conversation context by serializing "
+"concurrent requests in the same long-running conversation context."
+msgstr ""
+"A sessão Seam e os contextos de aplicativos são multi-segmentados. O Seam irá "
+"permitir solicitações simultâneas, num contexto, a serem processadas "
+"simultaneamente. O evento e os contextos da página são por natureza um segmento único. O contexto de processo comercial é estritamente multi-segmentado na teoria, mas "
+"na prática a simultaneidade é suficientemente rara, uma vez que este fato talvez seja "
+"desconsiderado a maior parte do tempo. Finalmente, o Seam força um modelo "
+"<emphasis>único segmentado por conversação por processo</emphasis>, "
+"para um contexto de conversação, serializando solicitações de segmento num "
+"mesmo contexto de conversação de longa execução."
+
+#. Tag: para
+#: Concepts.xml:185
+#, no-c-format
+msgid ""
+"Since the session context is multithreaded, and often contains volatile "
+"state, session scope components are always protected by Seam from concurrent "
+"access. Seam serializes requests to session scope session beans and "
+"JavaBeans by default (and detects and breaks any deadlocks that occur). This "
+"is not the default behaviour for application scoped components however, "
+"since application scoped components do not usually hold volatile state and "
+"because synchronization at the global level is <emphasis>extremely</"
+"emphasis> expensive. However, you can force a serialized threading model on "
+"any session bean or JavaBean component by adding the <literal>@Synchronized</"
+"literal> annotation."
+msgstr ""
+"Visto que o contexto da sessão é multi-segmentado, e freqüentemente contém "
+"um estado volátil, os componentes de escopo de sessão são sempre protegidos "
+"pelo Seam de acesso simultâneo. O Seam serializa solicitações ao escopo de "
+"sessão, beans de sessão e JavaBeans por padrão (detectando e terminando qualquer "
+"bloqueio que ocorrer). Este não é o comportamento padrão para os "
+"componentes de escopo do aplicativo, no entanto, uma vez em que os "
+"componentes do escopo de aplicativo não permanecem em estado volátil. Além disso, a sincronização de nível global é <emphasis>extremamente</emphasis> cara. "
+"De qualquer forma, você pode forçar o modelo de segmento serializado em "
+"qualquer bean de sessão ou componente JavaBean adicionando a anotação "
+"<literal>@Synchronized</literal>."
+
+#. Tag: para
+#: Concepts.xml:188
+#, no-c-format
+msgid ""
+"This concurrency model means that AJAX clients can safely use volatile "
+"session and conversational state, without the need for any special work on "
+"the part of the developer."
+msgstr ""
+"Este modelo simultâneo significa que os clientes AJAX podem seguramente usar "
+"a sessão volátil e o estado conversacional, sem precisar de qualquer trabalho "
+"especial por parte do desenvolvedor."
+
+#. Tag: title
+#: Concepts.xml:191
+#, no-c-format
+msgid "Seam components"
+msgstr "Componentes Seam"
+
+#. Tag: para
+#: Concepts.xml:192
+#, no-c-format
+msgid ""
+"Seam components are POJOs (Plain Old Java Objects). In particular, they are "
+"JavaBeans or EJB 3.0 enterprise beans. While Seam does not require that "
+"components be EJBs and can even be used without an EJB 3.0 compliant "
+"container, Seam was designed with EJB 3.0 in mind and includes deep "
+"integration with EJB 3.0. Seam supports the following <emphasis>component "
+"types</emphasis>."
+msgstr ""
+"Os componentes Seam são POJOs (Plain Old Java Objects - Objetos Java Planos e Antigos). Em particular, "
+"eles são JavaBeans ou beans corporativos EJB 3.0. Uma vez que o Seam não "
+"requer que os componentes sejam EJBs e podem ser usados sem um container "
+"compatível, o Seam foi projetado com o EJB 3.0 e possui integração profunda "
+"com EJB 3.0. O Seam suporta os seguintes <emphasis>tipos de componentes</emphasis>:"
+
+#. Tag: para
+#: Concepts.xml:197
+#, no-c-format
+msgid "EJB 3.0 stateless session beans"
+msgstr "Beans de sessão sem estado EJB 3.0"
+
+#. Tag: para
+#: Concepts.xml:202
+#, no-c-format
+msgid "EJB 3.0 stateful session beans"
+msgstr "Beans de sessão sem estado EJB 3.0"
+
+#. Tag: para
+#: Concepts.xml:207
+#, no-c-format
+msgid "EJB 3.0 entity beans"
+msgstr "Beans de entidade EJB 3.0"
+
+#. Tag: para
+#: Concepts.xml:212
+#, no-c-format
+msgid "<para>JavaBeans</para>"
+msgstr "<para>JavaBeans</para>"
+
+#. Tag: para
+#: Concepts.xml:217
+#, no-c-format
+msgid "EJB 3.0 message-driven beans"
+msgstr "Beans de mensagem orientada EJB 3.0"
+
+#. Tag: title
+#: Concepts.xml:222
+#, no-c-format
+msgid "Stateless session beans"
+msgstr "Beans de sessão sem estado"
+
+#. Tag: para
+#: Concepts.xml:223
+#, no-c-format
+msgid ""
+"Stateless session bean components are not able to hold state across multiple "
+"invocations. Therefore, they usually work by operating upon the state of "
+"other components in the various Seam contexts. They may be used as JSF "
+"action listeners, but cannot provide properties to JSF components for "
+"display."
+msgstr ""
+"Os componentes de bean de sessão sem estado não são capazes de reter o "
+"estado através de invocações múltiplas. Portanto, eles trabalham normalmente "
+"operando o estado de outros componentes em vários contextos de Seam. Eles "
+"podem ser usados como action listeners JSF, mas não podem prover "
+"propriedades de componentes JSF para exibição. "
+
+#. Tag: para
+#: Concepts.xml:226
+#, no-c-format
+msgid "Stateless session beans always live in the stateless context."
+msgstr "Beans de sessão sem estado sempre estão no contexto sem estado."
+
+#. Tag: para
+#: Concepts.xml:229
+#, no-c-format
+msgid "Stateless session beans are the least interesting kind of Seam component."
+msgstr "Beans de sessão sem estado são um tipo de componente Seam sem muito interesse."
+
+#. Tag: title
+#: Concepts.xml:232
+#, no-c-format
+msgid "Stateful session beans"
+msgstr "Beans de sessão com estado"
+
+#. Tag: para
+#: Concepts.xml:233
+#, no-c-format
+msgid ""
+"Stateful session bean components are able to hold state not only across "
+"multiple invocations of the bean, but also across multiple requests. "
+"Application state that does not belong in the database should usually be "
+"held by stateful session beans. This is a major difference between Seam and "
+"many other web application frameworks. Instead of sticking information about "
+"the current conversation directly in the <literal>HttpSession</literal>, you "
+"should keep it in instance variables of a stateful session bean that is "
+"bound to the conversation context. This allows Seam to manage the lifecycle "
+"of this state for you, and ensure that there are no collisions between state "
+"relating to different concurrent conversations."
+msgstr ""
+"Os componentes bean de sessão com estado são capazes de reter o estado "
+"não apenas por invocações múltiplas de bean, mas também através de "
+"solicitações diversas. O estado do aplicativo que não pertence ao banco de dados, deve normalmente ser retido pelos beans de sessão com estado. Esta é a maior diferença entre Seam e outras estruturas "
+"de aplicativos da web. Ao invés de aderir informação sobre a conversação "
+"atual diretamente na <literal>HttpSession</literal>, você poderia reter isto "
+"nas variáveis de instância de um bean de sessão com estado, do qual é "
+"vinculado ao contexto de conversação. Isto permite que o Seam gerencie o "
+"ciclo de vida deste estado para você, e garanta também de que não haja colisões "
+"entre o estado relatado e diferentes conversações simultâneas. "
+
+#. Tag: para
+#: Concepts.xml:236
+#, no-c-format
+msgid ""
+"Stateful session beans are often used as JSF action listener, and as backing "
+"beans that provide properties to JSF components for display or form "
+"submission."
+msgstr ""
+"Beans de sessão com estado são normalmente utilizados como action listener "
+"JSF, e como beans de backup que fornecem propriedades aos componentes JSF "
+"para exibição ou submissão de formulário. "
+
+#. Tag: para
+#: Concepts.xml:239
+#, no-c-format
+msgid ""
+"By default, stateful session beans are bound to the conversation context. "
+"They may never be bound to the page or stateless contexts."
+msgstr ""
+"De acordo com o padrão, os beans de sessão com estado são vinculados ao "
+"contexto de conversação. Talvez, eles nunca sejam vinculados à página ou "
+"contextos sem estado."
+
+#. Tag: para
+#: Concepts.xml:242
+#, no-c-format
+msgid ""
+"Concurrent requests to session-scoped stateful session beans are always "
+"serialized by Seam."
+msgstr ""
+"Solicitações simultâneas para o escopo session com estado e beans de "
+"sessão são sempre serializados pelo Seam."
+
+#. Tag: title
+#: Concepts.xml:245
+#, no-c-format
+msgid "Entity beans"
+msgstr "Beans de entidade"
+
+#. Tag: para
+#: Concepts.xml:246
+#, no-c-format
+msgid ""
+"Entity beans may be bound to a context variable and function as a seam "
+"component. Because entities have a persistent identity in addition to their "
+"contextual identity, entity instances are usually bound explicitly in Java "
+"code, rather than being instantiated implicitly by Seam."
+msgstr ""
+"Beans de entidade podem ser limitados a uma variável de contexto e função "
+"como um componente Seam. Devido às entidades possuirem uma identidade "
+"persistente adicionada à sua própria identidade contextual, as instâncias de "
+"entidades são claramente vinculadas ao código java ao invés de serem "
+"instanciadas implicitamente pelo Seam."
+
+#. Tag: para
+#: Concepts.xml:249
+#, no-c-format
+msgid ""
+"Entity bean components do not support bijection or context demarcation. Nor "
+"does invocation of an entity bean trigger validation."
+msgstr ""
+"Os componentes de bean de entidade não suportam a função de bijeção ou "
+"demarcação de contexto. Não há invocação de uma validação de trigger de "
+"bean de entidade."
+
+#. Tag: para
+#: Concepts.xml:252
+#, no-c-format
+msgid ""
+"Entity beans are not usually used as JSF action listeners, but do often "
+"function as backing beans that provide properties to JSF components for "
+"display or form submission. In particular, it is common to use an entity as "
+"a backing bean, together with a stateless session bean action listener to "
+"implement create/update/delete type functionality."
+msgstr ""
+"Beans de entidade não são normalmente usados como action listeners, mas "
+"freqüentemente operam como beans de backup, dos quais fornecem propriedades "
+"para componentes JSF para exibição ou submissão de formulários. Em particular, "
+"é comum usar uma entidade como um bean de backup, juntamente com um "
+"bean de sessão sem estado de action listener para implementar o tipo de "
+"funcionalidade criar/consultar/deletar."
+
+#. Tag: para
+#: Concepts.xml:255
+#, no-c-format
+msgid ""
+"By default, entity beans are bound to the conversation context. They may "
+"never be bound to the stateless context."
+msgstr ""
+"Baseado no padrão, os beans de entidade são vinculados à conversação de "
+"contexto. Eles talvez nunca sejam vinculados ao contexto sem estado."
+
+#. Tag: para
+#: Concepts.xml:258
+#, no-c-format
+msgid ""
+"Note that it in a clustered environment is somewhat less efficient to bind "
+"an entity bean directly to a conversation or session scoped Seam context "
+"variable than it would be to hold a reference to the entity bean in a "
+"stateful session bean. For this reason, not all Seam applications define "
+"entity beans to be Seam components."
+msgstr ""
+"Perceba que o ambiente agrupado é, de certa forma, menos eficiente para "
+"realizar o binding num bean de entidade diretamente a uma conversação ou escopo de sessão da variável de contexto Seam, do que reter uma referência do "
+"bean de entidade no bean de sessão com estado. Devido a isto, nem todos os "
+"aplicativos Seam definem beans de entidade como componentes Seam."
+
+#. Tag: title
+#: Concepts.xml:261
+#, no-c-format
+msgid "<title>JavaBeans</title>"
+msgstr "<title>JavaBeans</title>"
+
+#. Tag: para
+#: Concepts.xml:262
+#, no-c-format
+msgid ""
+"Javabeans may be used just like a stateless or stateful session bean. "
+"However, they do not provide the functionality of a session bean "
+"(declarative transaction demarcation, declarative security, efficient "
+"clustered state replication, EJB 3.0 persistence, timeout methods, etc)."
+msgstr ""
+"Javabeans podem ser usados apenas como um bean de sessão com estado. No "
+"entanto, eles não fornecem a funcionalidade de bean de sessão (demarcação "
+"de transação declarativa, segurança declarativa, replicação de estado de "
+"agrupamento eficiente, persistência EJB 3.0, métodos de intervalo, etc)."
+
+#. Tag: para
+#: Concepts.xml:265
+#, no-c-format
+msgid ""
+"In a later chapter, we show you how to use Seam and Hibernate without an EJB "
+"container. In this use case, components are JavaBeans instead of session "
+"beans. Note, however, that in many application servers it is somewhat less "
+"efficient to cluster conversation or session scoped Seam JavaBean components "
+"than it is to cluster stateful session bean components."
+msgstr ""
+"No capítulo adiante, mostraremos como utilizar Seam e Hibernate sem um "
+"container EJB. Neste caso, os componentes são JavaBeans ao invés de beans de sessão. No entanto, perceba que em muitos servidores do aplicativo isto é, de certa forma, menos eficiente à conversação de agrupamento ou componentes JavaBean Seam de escopo session do que é para os componentes de bean de sessão com estado agrupado."
+
+#. Tag: para
+#: Concepts.xml:268
+#, no-c-format
+msgid "By default, JavaBeans are bound to the event context."
+msgstr "JavaBeans são vinculados ao contexto do evento pelo padrão."
+
+#. Tag: para
+#: Concepts.xml:271
+#, no-c-format
+msgid ""
+"Concurrent requests to session-scoped JavaBeans are always serialized by "
+"Seam."
+msgstr "As solicitações atuais do JAVABeans de escopo de sessão são sempre serializadas pelo Seam."
+
+#. Tag: title
+#: Concepts.xml:274
+#, no-c-format
+msgid "Message-driven beans"
+msgstr "Message-driven beans"
+
+#. Tag: para
+#: Concepts.xml:275
+#, no-c-format
+msgid ""
+"Message-driven beans may function as a seam component. However, message-"
+"driven beans are called quite differently to other Seam components - instead "
+"of invoking them via the context variable, they listen for messages sent to "
+"a JMS queue or topic."
+msgstr ""
+"Message-driven beans podem trabalhar como um componente Seam. No entanto, message-"
+"driven beans são calculados de uma maneira diferente quando comparados com outros componentes Seam - ao invés de invocá-los através da variável de contexto, eles escutam por mensagens enviadas a uma fila JMS ou tópico."
+
+#. Tag: para
+#: Concepts.xml:278
+#, no-c-format
+msgid ""
+"Message-driven beans may not be bound to a Seam context. Nor do they have "
+"access to the session or conversation state of their \"caller\". However, "
+"they do support bijection and some other Seam functionality."
+msgstr "Message-driven beans não podem ser vinculados a um contexto Seam. Eles não possuem acesso a sessão ou estado de conversação do próprio \"chamador\". No entanto, eles suportam a bijeção e outras funcionalidades Seam."
+
+#. Tag: title
+#: Concepts.xml:281
+#, no-c-format
+msgid "Interception"
+msgstr "Intercepção"
+
+#. Tag: para
+#: Concepts.xml:282
+#, no-c-format
+msgid ""
+"In order to perform its magic (bijection, context demarcation, validation, "
+"etc), Seam must intercept component invocations. For JavaBeans, Seam is in "
+"full control of instantiation of the component, and no special configuration "
+"is needed. For entity beans, interception is not required since bijection "
+"and context demarcation are not defined. For session beans, we must register "
+"an EJB interceptor for the session bean component. We could use an "
+"annotation, as follows:"
+msgstr "Para executar esta validação mágica (bijeção, demarcação de contexto, validação, etc), o Seam deve interceptar invocações do componente. No caso de JavaBeans, o Seam está em controle total da instanciação do componente, não sendo necessária uma configuração especial. Já para Beans de entidade, a intercepção não é requerida desde que a bijeção e a demarcação de contexto não estejam definidas. E, para beans de sessão, temos que registrar um interceptor EJB para o componente de bean de sessão. Poderemos usar uma anotação, como segue a seguir: "
+
+#. Tag: programlisting
+#: Concepts.xml:285
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:286
+#, no-c-format
+msgid ""
+"But a much better way is to define the interceptor in <literal>ejb-jar.xml</"
+"literal>."
+msgstr ""
+"Uma maneira melhor de se definir o interceptor no <literal>ejb-jar.xml</"
+"literal>."
+
+#. Tag: programlisting
+#: Concepts.xml:289
+#, no-c-format
+msgid ""
+"&lt;interceptors&gt;\n"
+"   &lt;interceptor&gt;\n"
+"      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"   &lt;/interceptor&gt;\n"
+"&lt;/interceptors&gt;\n"
+"   \n"
+"&lt;assembly-descriptor&gt;\n"
+"   &lt;interceptor-binding&gt;\n"
+"      &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"   &lt;/interceptor-binding&gt;\n"
+"&lt;/assembly-descriptor&gt;"
+msgstr ""
+"&lt;interceptors&gt;\n"
+"   &lt;interceptor&gt;\n"
+"      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"   &lt;/interceptor&gt;\n"
+"&lt;/interceptors&gt;\n"
+"   \n"
+"&lt;assembly-descriptor&gt;\n"
+"   &lt;interceptor-binding&gt;\n"
+"      &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"   &lt;/interceptor-binding&gt;\n"
+"&lt;/assembly-descriptor&gt;"
+
+#. Tag: title
+#: Concepts.xml:290
+#, no-c-format
+msgid "Component names"
+msgstr "Nomes dos componentes"
+
+#. Tag: para
+#: Concepts.xml:291
+#, no-c-format
+msgid ""
+"All seam components need a name. We can assign a name to a component using "
+"the <literal>@Name</literal> annotation:"
+msgstr "Todos os componentes Seam precisam de um nome. Podemos determinar o nome a um componente usando a anotação <literal>@Name</literal>:"
+
+#. Tag: programlisting
+#: Concepts.xml:294
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:295
+#, no-c-format
+msgid ""
+"This name is the <emphasis>seam component name</emphasis> and is not related "
+"to any other name defined by the EJB specification. However, seam component "
+"names work just like JSF managed bean names and you can think of the two "
+"concepts as identical."
+msgstr "Este nome é o <emphasis>nome do componente Seam</emphasis> e não é relacionado com qualquer outro nome definido pela especificação EJB. No entanto, os nomes do componente Seam funcionam como os nomes de bean gerenciado JSF, e você pode considerar estes dois processos como idênticos."
+
+#. Tag: para
+#: Concepts.xml:298
+#, no-c-format
+msgid ""
+"<literal>@Name</literal> is not the only way to define a component name, but "
+"we always need to specify the name <emphasis>somewhere</emphasis>. If we "
+"don&#39;t, then none of the other Seam annotations will function."
+msgstr "<literal>@Name</literal> não é a única maneira de se determinar um componente, mas sempre precisamos especificar o nome <emphasis>em algum lugar</emphasis>. Caso não o especifiquemos, nenhuma das outras anotações Seam irão funcionar."
+
+#. Tag: para
+#: Concepts.xml:301
+#, no-c-format
+msgid ""
+"Just like in JSF, a seam component instance is usually bound to a context "
+"variable with the same name as the component name. So, for example, we would "
+"access the <literal>LoginAction</literal> using <literal>Contexts."
+"getStatelessContext().get(\"loginAction\")</literal>. In particular, "
+"whenever Seam itself instantiates a component, it binds the new instance to "
+"a variable with the component name. However, again like JSF, it is possible "
+"for the application to bind a component to some other context variable by "
+"programmatic API call. This is only useful if a particular component serves "
+"more than one role in the system. For example, the currently logged in "
+"<literal>User</literal> might be bound to the <literal>currentUser</literal> "
+"session context variable, while a <literal>User</literal> that is the "
+"subject of some administration functionality might be bound to the "
+"<literal>user</literal> conversation context variable."
+msgstr ""
+"Uma instância de componente Seam é normalmente vinculada a uma variável de contexto com o mesmo nome ao do componente, assim como em JSF. Por exemplo, nós podemos acessar o <literal>LoginAction</literal> usando <literal>Contexts."
+"getStatelessContext().get(\"loginAction\")</literal>. Basicamente, a qualquer instante em que o Seam realiza a própria instância a um componente, ele também vincula a nova instância a uma variável com o nome do componente. No entanto, novamente como em JSF, é possível que o aplicativo vincule um componente a qualquer outra variável de contexto pela chamada API programática. Isto é apenas útil se um componente particular servir mais que uma função no sistema. Por exemplo, o loggin atual <literal>User</literal> pode ser vinculado a variável de contexto de sessão <literal>currentUser</literal>, enquanto que um <literal>User</literal>, do qual está sujeito a algumas funcionalidades administrativas, pode ser vinculado à variável de contexto de conversação <literal>user</literal>. "
+
+#. Tag: para
+#: Concepts.xml:304
+#, no-c-format
+msgid ""
+"For very large applications, and for built-in seam components, qualified "
+"names are often used."
+msgstr "Os nomes qualificados são usados freqüentemente para aplicativos longos e componentes Seam internos."
+
+#. Tag: programlisting
+#: Concepts.xml:307
+#, no-c-format
+msgid ""
+"@Name(\"com.jboss.myapp.loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"com.jboss.myapp.loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:308
+#, no-c-format
+msgid ""
+"We may use the qualified component name both in Java code and in JSF&#39;s "
+"expression language:"
+msgstr "Nós poderemos usar o nome do componente qualificado no código Java e na linguagem de expressão do JSF: "
+
+#. Tag: programlisting
+#: Concepts.xml:311
+#, no-c-format
+msgid ""
+"&lt;h:commandButton type=\"submit\" value=\"Login\"\n"
+"                 action=\"#{com.jboss.myapp.loginAction.login}\"/&gt;"
+msgstr ""
+"&lt;h:commandButton type=\"submit\" value=\"Login\"\n"
+"                 action=\"#{com.jboss.myapp.loginAction.login}\"/&gt;"
+
+#. Tag: para
+#: Concepts.xml:312
+#, no-c-format
+msgid ""
+"Since this is noisy, Seam also provides a means of aliasing a qualified name "
+"to a simple name. Add a line like this to the <literal>components.xml</"
+"literal> file:"
+msgstr ""
+"O Seam também fornece um significado na realização do aliás de um nome qualificado a um nome simples. Adicione uma linha como esta ao arquivo <literal>components.xml</"
+"literal>:"
+
+#. Tag: programlisting
+#: Concepts.xml:315
+#, no-c-format
+msgid ""
+"&lt;factory name=\"loginAction\" scope=\"STATELESS\" value=\"#{com.jboss."
+"myapp.loginAction}\"/&gt;"
+msgstr ""
+"&lt;factory name=\"loginAction\" scope=\"STATELESS\" value=\"#{com.jboss."
+"myapp.loginAction}\"/&gt;"
+
+#. Tag: para
+#: Concepts.xml:316
+#, no-c-format
+msgid ""
+"All of the built-in Seam components have qualified names, but most of them "
+"are aliased to a simple name by the <literal>components.xml</literal> file "
+"included in the Seam jar."
+msgstr "Todos os componentes Seam internos possuem nomes qualificados, mas a maioria deles são alias a um nome simples pelo arquivo <literal>components.xml</literal>, incluído na jarra Seam."
+
+#. Tag: title
+#: Concepts.xml:319
+#, no-c-format
+msgid "Defining the component scope"
+msgstr "Definindo o escopo do componente"
+
+#. Tag: para
+#: Concepts.xml:320
+#, no-c-format
+msgid ""
+"We can override the default scope (context) of a component using the "
+"<literal>@Scope</literal> annotation. This lets us define what context a "
+"component instance is bound to, when it is instantiated by Seam."
+msgstr "Nós podemos substituir o escopo padrão (contexto) de um componente usando a anotação <literal>@Scope</literal>. Isto nos ajudará a definir em qual contexto uma instância de componente é vinculada, e quando será instanciada pelo Seam."
+
+#. Tag: programlisting
+#: Concepts.xml:323
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(SESSION)\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(SESSION)\n"
+"public class User { \n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:324
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.ScopeType</literal> defines an enumeration of "
+"possible scopes."
+msgstr "<literal>org.jboss.seam.ScopeType</literal> - define uma enumeração de possíveis escopos. "
+
+#. Tag: title
+#: Concepts.xml:327
+#, no-c-format
+msgid "Components with multiple roles"
+msgstr "Componentes com múltiplas funções"
+
+#. Tag: para
+#: Concepts.xml:328
+#, no-c-format
+msgid ""
+"Some Seam component classes can fulfill more than one role in the system. "
+"For example, we often have a <literal>User</literal> class which is usually "
+"used as a session-scoped component representing the current user but is used "
+"in user administration screens as a conversation-scoped component. The "
+"<literal>@Role</literal> annotation lets us define an additional named role "
+"for a component, with a different scope&mdash;it lets us bind the same "
+"component class to different context variables. (Any Seam component "
+"<emphasis>instance</emphasis> may be bound to multiple context variables, "
+"but this lets us do it at the class level, and take advantage of auto-"
+"instantiation.)"
+msgstr "Algumas classes do componente Seam podem cumprir mais de uma tarefa no sistema. Por exemplo, nós freqüentemente temos uma classe <literal>User</literal>, da qual é normalmente usada como um componente de escopo de sessão, representando o usuário atual porém usada em telas de administração de usuários como um componente de escopo de conversação. A anotação <literal>@Role</literal> nos permite definir uma função nomeada adicional de um componente, com um escopo diferente &mdash; permite vincular a mesma classe do componente a diferentes variáveis de contexto. (Qualquer <emphasis>instância</emphasis> do componente Seam pode ser vinculada a diversas variáveis de contexto, porém isto só é permitido de ser realizado no nível da classe, tirando proveito da auto instanciação.) "
+
+#. Tag: programlisting
+#: Concepts.xml:331
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(CONVERSATION)\n"
+"@Role(name=\"currentUser\", scope=SESSION)\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(CONVERSATION)\n"
+"@Role(name=\"currentUser\", scope=SESSION)\n"
+"public class User { \n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:332
+#, no-c-format
+msgid ""
+"The <literal>@Roles</literal> annotation lets us specify as many additional "
+"roles as we like."
+msgstr "A anotação <literal>@Roles</literal> nos permite especificar todas as funções adicionais que desejarmos."
+
+#. Tag: programlisting
+#: Concepts.xml:335
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(CONVERSATION)\n"
+"@Roles({@Role(name=\"currentUser\", scope=SESSION)\n"
+"        @Role(name=\"tempUser\", scope=EVENT)})\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(CONVERSATION)\n"
+"@Roles({@Role(name=\"currentUser\", scope=SESSION)\n"
+"        @Role(name=\"tempUser\", scope=EVENT)})\n"
+"public class User { \n"
+"    ... \n"
+"}"
+
+#. Tag: title
+#: Concepts.xml:336
+#, no-c-format
+msgid "Built-in components"
+msgstr "Componentes internos"
+
+#. Tag: para
+#: Concepts.xml:337
+#, no-c-format
+msgid ""
+"Like many good frameworks, Seam eats its own dogfood and is implemented "
+"mostly as a set of built-in Seam interceptors (see later) and Seam "
+"components. This makes it easy for applications to interact with built-in "
+"components at runtime or even customize the basic functionality of Seam by "
+"replacing the built-in components with custom implementations. The built-in "
+"components are defined in the Seam namespace <literal>org.jboss.seam.core</"
+"literal> and the Java package of the same name."
+msgstr ""
+"O Seam \"eats its own dogfood\" (usa o próprio produto que faz) e na maioria das vezes é implementado como um conjunto de interceptores de Seam interno (veja a seguir) e componentes Seam. Isto facilita aplicativos a interagirem com componentes internos no tempo de execução, ou mesmo personalizar a funcionalidade básica do Seam, substituindo os componentes internos pelas implementações personalizadas. Os componentes internos estão definidos no nome do espaço Seam <literal>org.jboss.seam.core</"
+"literal> e o pacote Java com o mesmo nome."
+
+#. Tag: para
+#: Concepts.xml:340
+#, no-c-format
+msgid ""
+"The built-in components may be injected, just like any Seam components, but "
+"they also provide convenient static <literal>instance()</literal> methods:"
+msgstr "Os componentes internos podem ser injetados, como qualquer outro componente Seam. No entanto, eles também fornecem os métodos estatísticos convenientes de <literal>instance()</literal>:"
+
+#. Tag: programlisting
+#: Concepts.xml:343
+#, no-c-format
+msgid "FacesMessages.instance().add(\"Welcome back, #{user.name}!\");"
+msgstr "FacesMessages.instance().add(\"Welcome back, #{user.name}!\");"
+
+#. Tag: para
+#: Concepts.xml:344
+#, no-c-format
+msgid ""
+"Seam was designed to integrate tightly in a Java EE 5 environment. However, "
+"we understand that there are many projects which are not running in a full "
+"EE environment. We also realize the critical importance of easy unit and "
+"integration testing using frameworks such as TestNG and JUnit. So, we&#39;ve "
+"made it easy to run Seam in Java SE environments by allowing you to boostrap "
+"certain critical infrastructure normally only found in EE environments by "
+"installing built-in Seam components."
+msgstr "O Seam foi programado a integrar com potência em um ambiente Java EE 5. No entanto, entendemos que existem diversos projetos dos quais não estão rodando num ambiente completo EE. Além disso, estamos cientes da importância crítica da unidade única e teste de integração usando framework como as de TestNG e JUnit. Desta maneira, nós facilitamos rodar o Seam em ambientes Java permitindo que você boostrap certas infraestruturas críticas normalmente encontradas nos ambientes EE, instalando os componentes Seam internos."
+
+#. Tag: para
+#: Concepts.xml:347
+#, no-c-format
+msgid ""
+"For example, you can run your EJB3 components in Tomcat or an integration "
+"test suite just by installing the built-in component <literal>org.jboss.seam."
+"core.ejb</literal>, which automatically bootstraps the JBoss Embeddable EJB3 "
+"container and deploys your EJB components."
+msgstr ""
+"Por exemplo, você pode rodar seus componentes em Tomcat ou em uma suite de teste de integração apenas instalando o componente interno <literal>org.jboss.seam."
+"core.ejb</literal>, do qual automaticamente realiza o bootstrap no container EJB3 de incorporação JBoss,  implementando seus componentes EJB."
+
+#. Tag: para
+#: Concepts.xml:350
+#, no-c-format
+msgid ""
+"Or, if you&#39;re not quite ready for the Brave New World of EJB 3.0, you "
+"can write a Seam application that uses only JavaBean components, together "
+"with Hibernate3 for persistence, by installing a built-in component that "
+"manages a Hibernate <literal>SessionFactory</literal>. When using Hibernate "
+"outside of a J2EE environment, you will also probably need a JTA transaction "
+"manager and JNDI server, which are available via the built-in component "
+"<literal>org.jboss.seam.core.microcontainer</literal>. This lets you use the "
+"bulletproof JTA/JCA pooling datasource from JBoss application server in an "
+"SE environment like Tomcat!"
+msgstr "Caso você não esteja ainda preparado para Enfrentar o Novo Mundo do EJB 3.0, você poderá escrever uma aplicação Seam que usa apenas componentes JavaBean, juntamente com o Hibernate3 para persistência, instalando um componente interno que gerencia uma <literal>SessionFactory</literal> Hibernate. Quando utilizando o Hibernate fora de um ambiente J2EE, você provavelmente precise de um gerenciador de transação JTA e um servidor JNDI, dos quais estão disponíveis através do componente interno <literal>org.jboss.seam.core.microcontainer</literal>. Isto permite você utilizar o banco de dados JTA/JCA bulletproof a partir do servidor de aplicativo JBoss, num ambiente SE como Tomcat!"
+
+#. Tag: title
+#: Concepts.xml:353
+#, no-c-format
+msgid "Bijection"
+msgstr "Bijeção"
+
+#. Tag: para
+#: Concepts.xml:354
+#, no-c-format
+msgid ""
+"<emphasis>Dependency injection</emphasis> or <emphasis>inversion of control</"
+"emphasis> is by now a familiar concept to most Java developers. Dependency "
+"injection allows a component to obtain a reference to another component by "
+"having the container \"inject\" the other component to a setter method or "
+"instance variable. In all dependency injection implementations that we have "
+"seen, injection occurs when the component is constructed, and the reference "
+"does not subsequently change for the lifetime of the component instance. For "
+"stateless components, this is reasonable. From the point of view of a "
+"client, all instances of a particular stateless component are "
+"interchangeable. On the other hand, Seam emphasizes the use of stateful "
+"components. So traditional dependency injection is no longer a very useful "
+"construct. Seam introduces the notion of <emphasis>bijection</emphasis> as a "
+"generalization of injection. In contrast to injection, bijection is:"
+msgstr "<emphasis>Injeção de dependência</emphasis> ou <emphasis>controle de inversão</emphasis> é agora um conceito familiar para a maioria de desenvolvedores Java. A injeção de dependência permite um componente obter uma referência a outro componente possuindo o container \"injetar\""
+
+#. Tag: para
+#: Concepts.xml:359
+#, no-c-format
+msgid ""
+"<emphasis>contextual</emphasis> - bijection is used to assemble stateful "
+"components from various different contexts (a component from a \"wider\" "
+"context may even have a reference to a component from a \"narrower\" context)"
+msgstr "<emphasis>Contextual</emphasis> - a bijeção é usada para unir os componentes com estado a partir de vários componentes diferentes (um componente de contexto \"largo\" pode possuir referência de um componente de um contexto mais \"fino\")"
+
+#. Tag: para
+#: Concepts.xml:364
+#, no-c-format
+msgid ""
+"<emphasis>bidirectional</emphasis> - values are injected from context "
+"variables into attributes of the component being invoked, and also "
+"<emphasis>outjected</emphasis> from the component attributes back out to the "
+"context, allowing the component being invoked to manipulate the values of "
+"contextual variables simply by setting its own instance variables"
+msgstr "<emphasis>Bidirecional</emphasis> - os valores são injetados a partir das variáveis de contexto dentro do componente invocado para manipular os valores das variáveis contextuais simplesmente configurando as próprias variáveis da instância."
+
+#. Tag: para
+#: Concepts.xml:369
+#, no-c-format
+msgid ""
+"<emphasis>dynamic</emphasis> - since the value of contextual variables "
+"changes over time, and since Seam components are stateful, bijection takes "
+"place every time a component is invoked"
+msgstr "<emphasis>Dinâmica</emphasis> - uma vez que as variáveis contextuais mudam toda hora, e que os componentes Seam possuem estado, a bijeção assume lugar toda vez em que um componente é invocado. "
+
+#. Tag: para
+#: Concepts.xml:374
+#, no-c-format
+msgid ""
+"In essence, bijection lets you alias a context variable to a component "
+"instance variable, by specifying that the value of the instance variable is "
+"injected, outjected, or both. Of course, we use annotations to enable "
+"bijection."
+msgstr "Basicamente, a bijeção permite que você realize um aliás a uma variável de contexto para variável da instância de um componente, especificando que o valor da variável da instância é injetada, outjeted ou ambos. É claro que usamos anotações para capacitar a bijeção."
+
+#. Tag: para
+#: Concepts.xml:377
+#, no-c-format
+msgid ""
+"The <literal>@In</literal> annotation specifies that a value should be "
+"injected, either into an instance variable:"
+msgstr "A anotação <literal>@In</literal> especifica que o valor deveria ser injetado, tanto em uma instância variável:"
+
+#. Tag: programlisting
+#: Concepts.xml:380
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In User user;\n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:381
+#, no-c-format
+msgid "or into a setter method:"
+msgstr "ou num método configurador:"
+
+#. Tag: programlisting
+#: Concepts.xml:384
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @In\n"
+"    public void setUser(User user) {\n"
+"        this.user=user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @In\n"
+"    public void setUser(User user) {\n"
+"        this.user=user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:385
+#, no-c-format
+msgid ""
+"By default, Seam will do a priority search of all contexts, using the name "
+"of the property or instance variable that is being injected. You may wish to "
+"specify the context variable name explicitly, using, for example, "
+"<literal>@In(\"currentUser\")</literal>."
+msgstr "Pelo padrão, o Seam irá priorizar a pesquisa de todos os contextos usando o nome da propriedade ou da variável da instância que está sendo injetada. Você talvez queira especificar o nome da variável do contexto explicitamente, usando, por exemplo <literal>@In(\"currentUser\")</literal>."
+
+#. Tag: para
+#: Concepts.xml:388
+#, no-c-format
+msgid ""
+"If you want Seam to create an instance of the component when there is no "
+"existing component instance bound to the named context variable, you should "
+"specify <literal>@In(create=true)</literal>. If the value is optional (it "
+"can be null), specify <literal>@In(required=false)</literal>."
+msgstr "Caso você queira que o Seam crie uma instância do componente, quando não houver vinculação da instância do componente à variável do contexto nomeada, você deverá especificar <literal>@In(create=true)</literal>. Caso o valor seja opcional (pode ser nulo), especifique <literal>@In(required=false)</literal>."
+
+#. Tag: para
+#: Concepts.xml:391
+#, no-c-format
+msgid ""
+"For some components, it can be repetitive to have to specify <literal>@In"
+"(create=true)</literal> everywhere they are used. In such cases, you can "
+"annotate the component <literal>@AutoCreate</literal>, and then it will "
+"always be created, whenever needed, even without the explicit use of "
+"<literal>create=true</literal>."
+msgstr ""
+"Para alguns componentes, pode ser repetitivo a especificação <literal>@In"
+"(create=true)</literal> toda vez que eles forem usados. Em alguns casos, você pode anotar o componente <literal>@AutoCreate</literal>, e então ele será sempre criado, de maneira que seja necessário, mesmo sem o uso explícito do <literal>create=true</literal>. "
+
+#. Tag: para
+#: Concepts.xml:394
+#, no-c-format
+msgid "You can even inject the value of an expression:"
+msgstr "Você pode ainda injetar o valor de uma expressão:"
+
+#. Tag: programlisting
+#: Concepts.xml:397
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In(\"#{user.username}\") String username;\n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In(\"#{user.username}\") String username;\n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:398
+#, no-c-format
+msgid ""
+"(There is much more information about component lifecycle and injection in "
+"the next chapter.)"
+msgstr "(Você poderá encontrar mais informações a respeito do ciclo de vida do componente e injeção no capítulo a seguir.)"
+
+#. Tag: para
+#: Concepts.xml:401
+#, no-c-format
+msgid ""
+"The <literal>@Out</literal> annotation specifies that an attribute should be "
+"outjected, either from an instance variable:"
+msgstr "A anotação <literal>@Out</literal> especifica que um atributo deve ser outjected, também a partir da variável da instância:"
+
+#. Tag: programlisting
+#: Concepts.xml:404
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @Out User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @Out User user;\n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:405
+#, no-c-format
+msgid "or from a getter method:"
+msgstr "ou a partir do método getter:"
+
+#. Tag: programlisting
+#: Concepts.xml:408
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @Out\n"
+"    public User getUser() {\n"
+"        return user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @Out\n"
+"    public User getUser() {\n"
+"        return user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:409
+#, no-c-format
+msgid "An attribute may be both injected and outjected:"
+msgstr "Um atributo pode ser tanto injetado ou outjected:"
+
+#. Tag: programlisting
+#: Concepts.xml:412
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In @Out User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In @Out User user;\n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:413
+#, no-c-format
+msgid "<para>or:</para>"
+msgstr "<para>ou:</para>"
+
+#. Tag: programlisting
+#: Concepts.xml:416
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @In\n"
+"    public void setUser(User user) {\n"
+"        this.user=user;\n"
+"    }\n"
+"    \n"
+"    @Out\n"
+"    public User getUser() {\n"
+"        return user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @In\n"
+"    public void setUser(User user) {\n"
+"        this.user=user;\n"
+"    }\n"
+"    \n"
+"    @Out\n"
+"    public User getUser() {\n"
+"        return user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+
+#. Tag: title
+#: Concepts.xml:417
+#, no-c-format
+msgid "Lifecycle methods"
+msgstr "Métodos de ciclo de vida"
+
+#. Tag: para
+#: Concepts.xml:418
+#, no-c-format
+msgid ""
+"Session bean and entity bean Seam components support all the usual EJB 3.0 "
+"lifecycle callback (<literal>@PostConstruct</literal>, <literal>@PreDestroy</"
+"literal>, etc). Seam extends all of these callbacks except "
+"<literal>@PreDestroy</literal> to JavaBean components. But Seam also defines "
+"its own component lifecycle callbacks."
+msgstr ""
+"Bean de sessão e bean de entidade de componentes Seam suportam todos os retornos de chamadas usuais do ciclo de vida do EJB 3.0 (<literal>@PostConstruct</literal>, <literal>@PreDestroy</"
+"literal>, etc). O Seam estende todos estes retornos de chamada com exceção do <literal>@PreDestroy</literal> para componentes JavaBean. No entanto, o Seam também define os próprios retornos de chamadas do ciclo de vida do componente."
+
+#. Tag: para
+#: Concepts.xml:421
+#, no-c-format
+msgid ""
+"The <literal>@Create</literal> method is called every time Seam instantiates "
+"a component. Unlike the <literal>@PostConstruct</literal> method, this "
+"method is called after the component is fully constructed by the EJB "
+"container, and has access to all the usual Seam functionality (bijection, "
+"etc). Components may define only one <literal>@Create</literal> method."
+msgstr "O método <literal>@Create</literal> é chamado a cada vez que o Seam inicia um componente. Diferente do método <literal>@PostConstruct</literal>, este método é chamado após o componente ser inteiramente construído pelo container EJB, e possui acesso a todas funcionalidades usuais Seam (bijeção, etc). Os componentes talvez definam apenas um método <literal>@Create</literal>."
+
+#. Tag: para
+#: Concepts.xml:424
+#, no-c-format
+msgid ""
+"The <literal>@Destroy</literal> method is called when the context that the "
+"Seam component is bound to ends. Components may define only one "
+"<literal>@Destroy</literal> method. Stateful session bean components "
+"<emphasis>must</emphasis> define a method annotated <literal>@Destroy "
+"@Remove</literal>."
+msgstr ""
+"O método <literal>@Destroy</literal> é chamado quando o contexto, em que o componente Seam é vinculado, terminar. O componente poderá defir apenas um método <literal>@Destroy</literal>. Os componentes de bean de sessão com estado <emphasis>devem</emphasis> definir um método anotado <literal>@Destroy "
+"@Remove</literal>."
+
+#. Tag: para
+#: Concepts.xml:427
+#, no-c-format
+msgid ""
+"Finally, a related annotation is the <literal>@Startup</literal> annotation, "
+"which may be applied to any application or session scoped component. The "
+"<literal>@Startup</literal> annotation tells Seam to instantiate the "
+"component immediately, when the context begins, instead of waiting until it "
+"is first referenced by a client. It is possible to control the order of "
+"instantiation of startup components by specifying <literal>@Startup(depends="
+"{....})</literal>."
+msgstr ""
+"Finalmente, a anotação relacionada é a anotação <literal>@Startup</literal>, da qual poderá ser empregada a qualquer aplicativo ou componente de escopo de sessão. A anotação <literal>@Startup</literal> informa ao Seam para instanciar o componente imediatamente, uma vez que o contexto inicie, ao invés de esperar até que seja referenciado primeiramente por um cliente. É possível controlar a ordem de instanciação de componentes de inicialização, especificando <literal>@Startup(depends="
+"{....})</literal>."
+
+#. Tag: title
+#: Concepts.xml:430
+#, no-c-format
+msgid "Conditional installation"
+msgstr "Instalação Condicional"
+
+#. Tag: para
+#: Concepts.xml:431
+#, no-c-format
+msgid ""
+"The <literal>@Install</literal> annotation lets you control conditional "
+"installation of components that are required in some deployment scenarios "
+"and not in others. This is useful if:"
+msgstr "A anotação <literal>@Install</literal> permite que você controle a instalação condicional de alguns componentes que são requeridos em determinados cenários de implementação, mas não em outros. Isto é útil caso:"
+
+#. Tag: para
+#: Concepts.xml:436
+#, no-c-format
+msgid "You want to mock out some infrastructural component in tests."
+msgstr "Você desejar simular algum componente infraestrutural em teste."
+
+#. Tag: para
+#: Concepts.xml:441
+#, no-c-format
+msgid ""
+"You want change the implementation of a component in certain deployment "
+"scenarios."
+msgstr "Você quiser mudar a implementação de um componente em certos cenários de implementação."
+
+#. Tag: para
+#: Concepts.xml:446
+#, no-c-format
+msgid ""
+"You want to install some components only if their dependencies are available "
+"(useful for framework authors)."
+msgstr "Você quiser instalar alguns documentos apenas se as próprias dependências deles estiverem disponíveis (útil para autores de framework)."
+
+#. Tag: para
+#: Concepts.xml:451
+#, no-c-format
+msgid ""
+"<literal>@Install</literal> works by letting you specify "
+"<emphasis>precedence</emphasis> and <emphasis>dependencies</emphasis>."
+msgstr "<literal>@Install</literal> trabalha informando-o especificamente a <emphasis>precedência</emphasis> e as <emphasis>dependências</emphasis>."
+
+#. Tag: para
+#: Concepts.xml:454
+#, no-c-format
+msgid ""
+"The precedence of a component is a number that Seam uses to decide which "
+"component to install when there are multiple classes with the same component "
+"name in the classpath. Seam will choose the component with the higher "
+"precendence. There are some predefined precedence values (in ascending "
+"order):"
+msgstr "A precedência de um componente é um número que o Seam usa para decidir qual componente deverá ser instalado, quando houver classes múltiplas com o mesmo nome do componente na classpath. O Seam irá escolher o componente com a mais alta precedência. Existem certos valores de precedência pré-definidos (em ordem ascendente):"
+
+#. Tag: para
+#: Concepts.xml:459
+#, no-c-format
+msgid ""
+"<literal>BUILT_IN</literal> &mdash; the lowest precedece components are the "
+"components built in to Seam."
+msgstr "<literal>BUILT_IN</literal> &mdash; os componentes de mais baixa precedência são componentes internos para o Seam."
+
+#. Tag: para
+#: Concepts.xml:464
+#, no-c-format
+msgid ""
+"<literal>FRAMEWORK</literal> &mdash; components defined by third-party "
+"frameworks may override built-in components, but are overridden by "
+"application components."
+msgstr "<literal>FRAMEWORK</literal> &mdash; os componentes definidos por frameworks de terceiros talvez sejam substituídos por componentes internos. No entanto, eles são substituídos por componentes de aplicativos."
+
+#. Tag: para
+#: Concepts.xml:469
+#, no-c-format
+msgid ""
+"<literal>APPLICATION</literal> &mdash; the default precedence. This is "
+"appropriate for most application components."
+msgstr "<literal>APPLICATION</literal> &mdash; o padrão precedente. Isto é apropriado para a maioria dos componentes do aplicativo."
+
+#. Tag: para
+#: Concepts.xml:474
+#, no-c-format
+msgid ""
+"<literal>DEPLOYMENT</literal> &mdash; for application components which are "
+"deployment-specific."
+msgstr "<literal>DEPLOYMENT</literal> &mdash; para componentes do aplicativo que são específicos de implementação."
+
+#. Tag: para
+#: Concepts.xml:479
+#, no-c-format
+msgid "<literal>MOCK</literal> &mdash; for mock objects used in testing."
+msgstr "<literal>MOCK</literal> &mdash; para simular objetos usados em testes."
+
+#. Tag: para
+#: Concepts.xml:484
+#, no-c-format
+msgid ""
+"Suppose we have a component named <literal>messageSender</literal> that "
+"talks to a JMS queue."
+msgstr "Vamos supor que temos um componente nomeado <literal>messageSender</literal>, do qual se comunica com a fila JMS."
+
+#. Tag: programlisting
+#: Concepts.xml:487
+#, no-c-format
+msgid ""
+"@Name(\"messageSender\") \n"
+"public class MessageSender {\n"
+"    public void sendMessage() {\n"
+"        //do something with JMS\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"messageSender\") \n"
+"public class MessageSender {\n"
+"    public void sendMessage() {\n"
+"        //do something with JMS\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:488
+#, no-c-format
+msgid ""
+"In our unit tests, we don&#39;t have a JMS queue available, so we would like "
+"to stub out this method. We&#39;ll create a <emphasis>mock</emphasis> "
+"component that exists in the classpath when unit tests are running, but is "
+"never deployed with the application:"
+msgstr "Em nossas unidades de testes, não possuímos a fila JMS disponível, então gostaríamos de eliminar este método. Criaremos um componete <emphasis>mock</emphasis>, do qual existe na classpath quando as unidades de testes estiverem rodando, porém nunca implementá-lo com o aplicativo."
+
+#. Tag: programlisting
+#: Concepts.xml:491
+#, no-c-format
+msgid ""
+"@Name(\"messageSender\") \n"
+"@Install(precedence=MOCK)\n"
+"public class MockMessageSender extends MessageSender {\n"
+"    public void sendMessage() {\n"
+"        //do nothing!\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"messageSender\") \n"
+"@Install(precedence=MOCK)\n"
+"public class MockMessageSender extends MessageSender {\n"
+"    public void sendMessage() {\n"
+"        //do nothing!\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:492
+#, no-c-format
+msgid ""
+"The <literal>precedence</literal> helps Seam decide which version to use "
+"when it finds both components in the classpath."
+msgstr "A <literal>precedência</literal> ajuda o Seam a decidir por uma versão a ser utilizada, uma vez encontrados ambos componentes na classpath."
+
+#. Tag: para
+#: Concepts.xml:495
+#, no-c-format
+msgid ""
+"This is nice if we are able to control exactly which classes are in the "
+"classpath. But if I&#39;m writing a reusable framework with many "
+"dependecies, I don&#39;t want to have to break that framework across many "
+"jars. I want to be able to decide which components to install depending upon "
+"what other components are installed, and upon what classes are available in "
+"the classpath. The <literal>@Install</literal> annotation also controls this "
+"functionality. Seam uses this mechanism internally to enable conditional "
+"installation of many of the built-in components. However, you probably "
+"won&#39;t need to use it in your application."
+msgstr "Isto será excelente caso sejamos capazes de encontrar exatamente quais classes que estão na classpath. Porém, caso estivermos escrevendo um framework reutilizável com muitas dependências, não queremos uma brecha do framework através de diversas jarras. Nós queremos tomar a decisão de quais componentes devem ser instalados, dependendo dos outros documentos instalados, e sob quais classes estão disponíveis na classpath. O Seam usa este mecanismo internamente para permitir a instalação condicional em muitos dos componentes internos. No entanto, você provavelmente não precisará usar isto no seu aplicativo."
+
+#. Tag: title
+#: Concepts.xml:498
+#, no-c-format
+msgid "Logging"
+msgstr "Executando o loggon"
+
+#. Tag: para
+#: Concepts.xml:499
+#, no-c-format
+msgid "Who is not totally fed up with seeing noisy code like this?"
+msgstr "Quem não está totalmente cansado em ver um código como este?"
+
+#. Tag: programlisting
+#: Concepts.xml:502
+#, no-c-format
+msgid ""
+"private static final Log log = LogFactory.getLog(CreateOrderAction.class);\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    if ( log.isDebugEnabled() ) {\n"
+"        log.debug(\"Creating new order for user: \" + user.username() + \n"
+"            \" product: \" + product.name() \n"
+"            + \" quantity: \" + quantity);\n"
+"    }\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+"private static final Log log = LogFactory.getLog(CreateOrderAction.class);\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    if ( log.isDebugEnabled() ) {\n"
+"        log.debug(\"Creating new order for user: \" + user.username() + \n"
+"            \" product: \" + product.name() \n"
+"            + \" quantity: \" + quantity);\n"
+"    }\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:503
+#, no-c-format
+msgid ""
+"It is difficult to imagine how the code for a simple log message could "
+"possibly be more verbose. There is more lines of code tied up in logging "
+"than in the actual business logic! I remain totally astonished that the Java "
+"community has not come up with anything better in 10 years."
+msgstr "É difícil de se imaginar como o código para uma simples mensagem de Log poderia ser possivelmente mais verboso. Existem mais linhas de código ocupadas do que na atual lógica comercial! Nós permanecemos totalmente surpreendidos de que a comunidade Java não apresentou alguma coisa melhor em 10 anos."
+
+#. Tag: para
+#: Concepts.xml:506
+#, no-c-format
+msgid "Seam provides a logging API that simplifies this code significantly:"
+msgstr "O Seam fornece um loggon API que simplifica este código significantemente:"
+
+#. Tag: programlisting
+#: Concepts.xml:509
+#, no-c-format
+msgid ""
+"@Logger private Log log;\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    log.debug(\"Creating new order for user: #0 product: #1 quantity: #2\", "
+"user.username(), \n"
+"      product.name(), quantity);\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+"@Logger private Log log;\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    log.debug(\"Creating new order for user: #0 product: #1 quantity: #2\", "
+"user.username(), \n"
+"      product.name(), quantity);\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:510
+#, no-c-format
+msgid ""
+"It doesn&#39;t matter if you declare the <literal>log</literal> variable "
+"static or not&mdash;it will work either way, except for entity bean "
+"components which require the <literal>log</literal> variable to be static."
+msgstr "Independente de você declarar ou não a estatística de variável <literal>log</literal>, esta trabalhará de qualquer forma, com exceção dos componentes de bean de entidade que solicitam que a variável <literal>log</literal> seja estatística."
+
+#. Tag: para
+#: Concepts.xml:513
+#, no-c-format
+msgid ""
+"Note that we don&#39;t need the noisy <literal>if ( log.isDebugEnabled() )</"
+"literal> guard, since string concatenation happens <emphasis>inside</"
+"emphasis> the <literal>debug()</literal> method. Note also that we don&#39;t "
+"usually need to specify the log category explicitly, since Seam knows what "
+"component it is injecting the <literal>Log</literal> into."
+msgstr ""
+"Perceba que não precisamos dar atenção ao <literal>if ( log.isDebugEnabled() )</"
+"literal>, uma vez que a concatenação em série acontece <emphasis>dentro</"
+"emphasis> do método <literal>debug()</literal>. Além disso, nós normalmente não precisamos especificar explicitamente a categoria de log, já que o Seam conhece qual componente é injetado dentro do <literal>Log</literal>."
+
+#. Tag: para
+#: Concepts.xml:516
+#, no-c-format
+msgid ""
+"If <literal>User</literal> and <literal>Product</literal> are Seam "
+"components available in the current contexts, it gets even better:"
+msgstr "Caso o <literal>User</literal> e o <literal>Product</literal> forem componentes Seam disponíveis nos contextos atuais, isto se torna ainda mais interessante:"
+
+#. Tag: programlisting
+#: Concepts.xml:519
+#, no-c-format
+msgid ""
+"@Logger private Log log;\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    log.debug(\"Creating new order for user: #{user.username} product: #"
+"{product.name} \n"
+"      quantity: #0\", quantity);\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+"@Logger private Log log;\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    log.debug(\"Creating new order for user: #{user.username} product: #"
+"{product.name} \n"
+"      quantity: #0\", quantity);\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:520
+#, no-c-format
+msgid ""
+"Seam logging automagically chooses whether to send output to log4j or JDK "
+"logging. If log4j is in the classpath, Seam with use it. If it is not, Seam "
+"will use JDK logging."
+msgstr "O loggon de Seam escolhe automaticamente se enviará o resultado ao log4j ou loggon JDK. Caso o log4j esteja na classpath, o Seam o usará. Caso não esteja, o Seam usará o loggon JDK. "
+
+#. Tag: title
+#: Concepts.xml:523
+#, no-c-format
+msgid "The <literal>Mutable</literal> interface and <literal>@ReadOnly</literal>"
+msgstr "A interface <literal>Mutable</literal> e <literal>@ReadOnly</literal>"
+
+#. Tag: para
+#: Concepts.xml:524
+#, no-c-format
+msgid ""
+"Many application servers feature an amazingly broken implementation of "
+"<literal>HttpSession</literal> clustering, where changes to the state of "
+"mutable objects bound to the session are only replicated when the "
+"application calls <literal>setAttribute()</literal> explicitly. This is a "
+"source of bugs that can not effectively be tested for at development time, "
+"since they will only manifest when failover occurs. Furthermore, the actual "
+"replication message contains the entire serialized object graph bound to the "
+"session attribute, which is inefficient."
+msgstr "Muitos servidores de aplicativos caracterizam uma tremenda implementação interrompida do agrupamento <literal>HttpSession</literal>, onde as mudanças ao estado de vinculação de objetos mutáveis à sessão, são apenas replicadas  quando o aplicativo chama explicitamente o <literal>setAttribute()</literal>. Este é um tipo de erro do qual não pode ser efetivamente testado no momento de implementação, uma vez que isto só será manifestado quando a falha ocorrer. Além disso, a mensagem de replicação atual contém por inteiro o vinculado gráfico de objeto serializado para o atributo de sessão, do qual é ineficiente."
+
+#. Tag: para
+#: Concepts.xml:527
+#, no-c-format
+msgid ""
+"Of course, EJB stateful session beans must perform automatic dirty checking "
+"and replication of mutable state and a sophisticated EJB container can "
+"introduce optimizations such as attribute-level replication. Unfortunately, "
+"not all Seam users have the good fortune to be working in an environment "
+"that supports EJB 3.0. So, for session and conversation scoped JavaBean and "
+"entity bean components, Seam provides an extra layer of cluster-safe state "
+"management over the top of the web container session clustering."
+msgstr "Os beans de sessão com estado EJB devem realizar automaticamente a checagem e replicação do estado mutável. Desta forma, o container EJB sofisticado pode introduzir otimizações como a replicação do nível do atributo. Infelizmente, nem todos os servidores Seam tem sorte de trabalhar num ambiente que suporta EJB 3.0. Portanto, tanto para o escopo de sessão e de conversação JavaBean como para os componentes de bean de entidade, o Seam fornece uma camada extra do estado seguro de gerenciamento sobre o topo do agrupamento da sessão de container da web."
+
+#. Tag: para
+#: Concepts.xml:530
+#, no-c-format
+msgid ""
+"For session or conversation scoped JavaBean components, Seam automatically "
+"forces replication to occur by calling <literal>setAttribute()</literal> "
+"once in every request that the component was invoked by the application. Of "
+"course, this strategy is inefficient for read-mostly components. You can "
+"control this behavior by implementing the <literal>org.jboss.seam.core."
+"Mutable</literal> interface, or by extending <literal>org.jboss.seam.core."
+"AbstractMutable</literal>, and writing your own dirty-checking logic inside "
+"the component. For example,"
+msgstr ""
+"Para os componentes JavaBean de escopo de sessão ou conversação, o Seam automaticamente força a replicação a ocorrer chamando <literal>setAttribute()</literal>, uma vez que em cada solicitação que o componente foi invocado pelo aplicativo. Logicamente, a estratégia é ineficiente para a maioria de componentes melhores preparados. Você pode controlar este comportamento implementando a interface <literal>org.jboss.seam.core."
+"Mutable</literal>, ou estendendo <literal>org.jboss.seam.core."
+"AbstractMutable</literal>, além de escrever sua própria lógica de checagem dentro do componente. Por exemplo:"
+
+#. Tag: programlisting
+#: Concepts.xml:533
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class Account extends AbstractMutable\n"
+"{\n"
+"    private BigDecimal balance;\n"
+"    \n"
+"    public void setBalance(BigDecimal balance)\n"
+"    {\n"
+"        setDirty(this.balance, balance);\n"
+"        this.balance = balance;\n"
+"    }\n"
+"    \n"
+"    public BigDecimal getBalance()\n"
+"    {\n"
+"        return balance;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+"@Name(\"account\")\n"
+"public class Account extends AbstractMutable\n"
+"{\n"
+"    private BigDecimal balance;\n"
+"    \n"
+"    public void setBalance(BigDecimal balance)\n"
+"    {\n"
+"        setDirty(this.balance, balance);\n"
+"        this.balance = balance;\n"
+"    }\n"
+"    \n"
+"    public BigDecimal getBalance()\n"
+"    {\n"
+"        return balance;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:534
+#, no-c-format
+msgid ""
+"Or, you can use the <literal>@ReadOnly</literal> annotation to achieve a "
+"similar effect:"
+msgstr "Ou você pode utilizar a anotação <literal>@ReadOnly</literal> para atingir um efeito similar:"
+
+#. Tag: programlisting
+#: Concepts.xml:537
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class Account\n"
+"{\n"
+"    private BigDecimal balance;\n"
+"    \n"
+"    public void setBalance(BigDecimal balance)\n"
+"    {\n"
+"        this.balance = balance;\n"
+"    }\n"
+"    \n"
+"    @ReadOnly\n"
+"    public BigDecimal getBalance()\n"
+"    {\n"
+"        return balance;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+"@Name(\"account\")\n"
+"public class Account\n"
+"{\n"
+"    private BigDecimal balance;\n"
+"    \n"
+"    public void setBalance(BigDecimal balance)\n"
+"    {\n"
+"        this.balance = balance;\n"
+"    }\n"
+"    \n"
+"    @ReadOnly\n"
+"    public BigDecimal getBalance()\n"
+"    {\n"
+"        return balance;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:538
+#, no-c-format
+msgid ""
+"For session or conversation scoped entity bean components, Seam "
+"automatically forces replication to occur by calling <literal>setAttribute()"
+"</literal> once in every request, <emphasis>unless the (conversation-scoped) "
+"entity is currently associated with a Seam-managed persistence context, in "
+"which case no replication is needed</emphasis>. This strategy is not "
+"necessarily efficient, so session or conversation scope entity beans should "
+"be used with care. You can always write a stateful session bean or JavaBean "
+"component to \"manage\" the entity bean instance. For example,"
+msgstr ""
+"Para componentes de bean de entidade com escopo de sessão ou de conversação, o Seam automaticamente força a replicação apenas chamando o <literal>setAttribute()"
+"</literal> uma vez a cada solicitação, <emphasis>a não ser que a entidade (escopo de conversação) seja atualmente associada com um contexto persistente gerenciado pelo Seam, e que a replicação não seja necessária</emphasis>. Esta estratégia não é necessariamente eficiente, então os beans de entidade com escopo de sessão ou de conversação devem ser usados com cuidado. Você pode sempre escrever um bean de sessão com estado ou componente JavaBean para \"gerenciar\" a instância de bean de entidade. Por exemplo:"
+
+#. Tag: programlisting
+#: Concepts.xml:541
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"account\")\n"
+"public class AccountManager extends AbstractMutable\n"
+"{\n"
+"    private Account account; // an entity bean\n"
+"    \n"
+"    @Unwrap\n"
+"    public void getAccount()\n"
+"    {\n"
+"        return account;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+"@Stateful\n"
+"@Name(\"account\")\n"
+"public class AccountManager extends AbstractMutable\n"
+"{\n"
+"    private Account account; // an entity bean\n"
+"    \n"
+"    @Unwrap\n"
+"    public void getAccount()\n"
+"    {\n"
+"        return account;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:542
+#, no-c-format
+msgid ""
+"Note that the <literal>EntityHome</literal> class in the Seam Application "
+"Framework provides a great example of this pattern."
+msgstr "Perceba que a classe <literal>EntityHome</literal>, no Framework de Aplicativo Seam, fornece um bom exemplo deste modelo."
+
+#. Tag: title
+#: Concepts.xml:545
+#, no-c-format
+msgid "Factory and manager components"
+msgstr "Componentes Factory e gerenciadores "
+
+#. Tag: para
+#: Concepts.xml:546
+#, no-c-format
+msgid ""
+"We often need to work with objects that are not Seam components. But we "
+"still want to be able to inject them into our components using <literal>@In</"
+"literal> and use them in value and method binding expressions, etc. "
+"Sometimes, we even need to tie them into the Seam context lifecycle "
+"(<literal>@Destroy</literal>, for example). So the Seam contexts can contain "
+"objects which are not Seam components, and Seam provides a couple of nice "
+"features that make it easier to work with non-component objects bound to "
+"contexts."
+msgstr ""
+"Freqüentemente precisamos trabalhar com objetos que não sejam componentes Seam. No entanto, ainda queremos ser aptos a injetá-los dentro de nossos componentes usando <literal>@In</"
+"literal> além de usá-los com valor e método vinculando expressões, etc. Às vezes, precisamos juntá-los ao ciclo de vida de contexto Seam (<literal>@Destroy</literal>, por exemplo). Desta forma, os contextos Seam podem conter objetos que não são componentes Seam, e o Seam fornece certos recursos que facilitam o trabalho com objetos sem componentes vinculados aos contextos."
+
+#. Tag: para
+#: Concepts.xml:549
+#, no-c-format
+msgid ""
+"The <emphasis>factory component pattern</emphasis> lets a Seam component act "
+"as the instantiator for a non-component object. A <emphasis>factory method</"
+"emphasis> will be called when a context variable is referenced but has no "
+"value bound to it. We define factory methods using the <literal>@Factory</"
+"literal> annotation. The factory method binds a value to the context "
+"variable, and determines the scope of the bound value. There are two styles "
+"of factory method. The first style returns a value, which is bound to the "
+"context by Seam:"
+msgstr ""
+"O <emphasis>padrão do componente factory</emphasis> permite um componente Seam atuar como instanciador para um objeto sem componente. O <emphasis>método factory</emphasis> será chamado quando a variável de um contexto for referenciada, porém não possui valor vinculado para isto. Nós definimos métodos factory usando a anotação <literal>@Factory</"
+"literal>. O método factory vincula um valor à variável do contexto, e determina o escopo de valor vinculado. Existem dois estilos de método factory. O primeiro estilo retorna um valor, que é vinculado ao contexto pelo Seam:"
+
+#. Tag: programlisting
+#: Concepts.xml:552
+#, no-c-format
+msgid ""
+"@Factory(scope=CONVERSATION)\n"
+"public List&lt;Customer&gt; getCustomerList() { \n"
+"    return ... ;\n"
+"}"
+msgstr ""
+"@Factory(scope=CONVERSATION)\n"
+"public List&lt;Customer&gt; getCustomerList() { \n"
+"    return ... ;\n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:553
+#, no-c-format
+msgid ""
+"The second style is a method of type <literal>void</literal> which binds the "
+"value to the context variable itself:"
+msgstr "O segundo estilo é um método do tipo <literal>void</literal>, do qual vincula o valor à variável de contexto por conta própria:"
+
+#. Tag: programlisting
+#: Concepts.xml:556
+#, no-c-format
+msgid ""
+"@DataModel List&lt;Customer&gt; customerList;\n"
+"\n"
+"@Factory(\"customerList\")\n"
+"public void initCustomerList() { \n"
+"    customerList = ...  ;\n"
+"}"
+msgstr ""
+"@DataModel List&lt;Customer&gt; customerList;\n"
+"\n"
+"@Factory(\"customerList\")\n"
+"public void initCustomerList() { \n"
+"    customerList = ...  ;\n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:557
+#, no-c-format
+msgid ""
+"In both cases, the factory method is called when we reference the "
+"<literal>customerList</literal> context variable and its value is null, and "
+"then has no further part to play in the lifecycle of the value. An even more "
+"powerful pattern is the <emphasis>manager component pattern</emphasis>. In "
+"this case, we have a Seam component that is bound to a context variable, "
+"that manages the value of the context variable, while remaining invisible to "
+"clients."
+msgstr "Em ambos os casos, o método factory é chamado quando nos referimos à variável de contexto <literal>customerList</literal> e caso seu valor seja nulo. Desta forma, não há nenhuma parte para se jogar no ciclo de vida do valor. Um padrão ainda mais forte é o <emphasis>padrão de componente gerenciador</emphasis>. Neste caso, nós possuimos o componente Seam que é vinculado a uma variável de contexto, da qual gerencia o valor do contexto da variável enquanto permanece invisível aos clientes."
+
+#. Tag: para
+#: Concepts.xml:560
+#, no-c-format
+msgid ""
+"A manager component is any component with an <literal>@Unwrap</literal> "
+"method. This method returns the value that will be visable to clients, and "
+"is called <emphasis>every time</emphasis> a context variable is referenced."
+msgstr "Um componente gerenciador é qualquer componente com um método <literal>@Unwrap</literal>. Este método retorna ao valor que será visível aos clientes, e é chamado <emphasis>a cada momento</emphasis> que uma variável de contexto for referenciada."
+
+#. Tag: programlisting
+#: Concepts.xml:563
+#, no-c-format
+msgid ""
+"@Name(\"customerList\")\n"
+"@Scope(CONVERSATION)\n"
+"public class CustomerListManager\n"
+"{\n"
+"    ...\n"
+"    \n"
+"    @Unwrap\n"
+"    public List&lt;Customer&gt; getCustomerList() { \n"
+"        return ... ;\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"customerList\")\n"
+"@Scope(CONVERSATION)\n"
+"public class CustomerListManager\n"
+"{\n"
+"    ...\n"
+"    \n"
+"    @Unwrap\n"
+"    public List&lt;Customer&gt; getCustomerList() { \n"
+"        return ... ;\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:564
+#, no-c-format
+msgid ""
+"This pattern is especially useful if we have some heavyweight object that "
+"needs a cleanup operation when the context ends. In this case, the manager "
+"component may perform cleanup in the <literal>@Destroy</literal> method."
+msgstr "Este padrão é bastante útil se possuirmos algum objeto de carga pesada, que precisa de uma operação limpeza quando o contexto chega ao final. Neste caso, o componente gerenciador poderá executar a limpeza no método <literal>@Destroy</literal>."
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Configuration.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Configuration.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Configuration.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2052 @@
+# translation of Configuration.po to Brazilian Portuguese
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Leticia de Lima <ldelima at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Configuration\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2008-03-10 10:04+1000\n"
+"Last-Translator: Leticia de Lima <ldelima at redhat.com>\n"
+"Language-Team: Brazilian Portuguese <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms:  JBEAP420 \n"
+
+#. Tag: title
+#: Configuration.xml:6
+#, no-c-format
+msgid "Configuring Seam and packaging Seam applications"
+msgstr "Configurando o Seam e empacotando os aplicativos Seam"
+
+#. Tag: para
+#: Configuration.xml:7
+#, no-c-format
+msgid ""
+"Configuration is a very boring topic and an extremely tedious pastime. "
+"Unfortunately, several lines of XML are required to integrate Seam into your "
+"JSF implementation and servlet container. There&#39;s no need to be too put "
+"off by the following sections; you&#39;ll never need to type any of this "
+"stuff yourself, since you can just copy and paste from the example "
+"applications!"
+msgstr "Configuração é um assunto bem tedioso e um passatempo extremamente entediante. Infelizmente, diversas linhas do XML estão requeridas para integrar o Seam junto a sua implementação JSF e container servlet. Não há necessidade de preocupar-se com as seguintes sessões: você nunca precisará digitar nada disto por conta própria, uma vez que você pode apenas copiar e colar dos exemplos de aplicativos."
+
+#. Tag: title
+#: Configuration.xml:10
+#, no-c-format
+msgid "Basic Seam configuration"
+msgstr "Configuração básica de Seam"
+
+#. Tag: para
+#: Configuration.xml:11
+#, no-c-format
+msgid ""
+"First, let&#39;s look at the basic configuration that is needed whenever we "
+"use Seam with JSF."
+msgstr "Primeiro, vamos observar a configuração básica que é necessária toda vez que usamos Seam com JSF."
+
+#. Tag: title
+#: Configuration.xml:14
+#, no-c-format
+msgid "Integrating Seam with JSF and your servlet container"
+msgstr "Integrando Seam com JSF e seu container servlet "
+
+#. Tag: para
+#: Configuration.xml:15
+#, no-c-format
+msgid "Seam requires the following entry in your <literal>web.xml</literal> file:"
+msgstr "O Seam solicita a seguinte entrada no seu arquivo <literal>web.xml</literal>:"
+
+#. Tag: programlisting
+#: Configuration.xml:18
+#, no-c-format
+msgid ""
+"&lt;listener&gt;\n"
+"    &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/listener-"
+"class&gt;\n"
+"&lt;/listener&gt;"
+msgstr ""
+"&lt;listener&gt;\n"
+"    &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/listener-"
+"class&gt;\n"
+"&lt;/listener&gt;"
+
+#. Tag: para
+#: Configuration.xml:19
+#, no-c-format
+msgid ""
+"This listener is responsible for bootstrapping Seam, and for destroying "
+"session and application contexts."
+msgstr "Este listener é responsável pela inicialização do Seam, e por destruir a sessão e os contextos de aplicativos."
+
+#. Tag: para
+#: Configuration.xml:22
+#, no-c-format
+msgid ""
+"To integrate with the JSF request lifecycle, we also need a JSF "
+"<literal>PhaseListener</literal> registered in in the <literal>faces-config."
+"xml</literal> file:"
+msgstr ""
+"Com fins de integrar o ciclo de vida de solicitação JSF, nós também precisamos uma registrada <literal>PhaseListener</literal> JSF no arquivo <literal>faces-config."
+"xml</literal>:"
+
+#. Tag: programlisting
+#: Configuration.xml:25
+#, no-c-format
+msgid ""
+"&lt;lifecycle&gt;\n"
+"    &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-"
+"listener&gt;\n"
+"&lt;/lifecycle&gt;"
+msgstr ""
+"&lt;lifecycle&gt;\n"
+"    &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-"
+"listener&gt;\n"
+"&lt;/lifecycle&gt;"
+
+#. Tag: para
+#: Configuration.xml:26
+#, no-c-format
+msgid ""
+"The actual listener class here varies depending upon how you want to manage "
+"transaction demarcation (more on this below)."
+msgstr "A classe listener atual varia dependendo de como você quer gerenciar a demarcação de transação (segue abaixo mais informações a respeito)."
+
+#. Tag: para
+#: Configuration.xml:29
+#, no-c-format
+msgid ""
+"If you are using Sun&#39;s JSF 1.2 reference implementation, you should also "
+"add this to <literal>faces-config.xml</literal>:"
+msgstr "Caso você esteja utilizando a implementação de referência JSF 1.2 Sun, você deve também adicioná-la a <literal>faces-config.xml</literal>:"
+
+#. Tag: programlisting
+#: Configuration.xml:32
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;el-resolver&gt;org.jboss.seam.jsf.SeamELResolver&lt;/el-"
+"resolver&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+"&lt;application&gt;\n"
+"    &lt;el-resolver&gt;org.jboss.seam.jsf.SeamELResolver&lt;/el-"
+"resolver&gt;\n"
+"&lt;/application&gt;"
+
+#. Tag: para
+#: Configuration.xml:33
+#, no-c-format
+msgid ""
+"(This line should not strictly speaking be necessary, but it works around a "
+"minor bug in the RI.)"
+msgstr "(Esta linha "
+
+#. Tag: para
+#: Configuration.xml:36
+#, no-c-format
+msgid ""
+"Some JSF implementations have a broken implementation of server-side state "
+"saving that interferes with Seam&#39;s conversation propagation. If you have "
+"problems with conversation propagation during form submissions, try "
+"switching to client-side state saving. You&#39;ll need this in <literal>web."
+"xml</literal>:"
+msgstr ""
+"Alguns aplicativos JSF possui uma implementação desfeita do estado limitado do servidor do qual interfere a propagação de conversação Seam. Caso você tenha problemas com a propagação de conversação durante as submissões de formulário tente mudar o limitado estado do servidor. Você irá precisar disto na <literal>web."
+"xml</literal>:"
+
+#. Tag: programlisting
+#: Configuration.xml:39
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;client&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;client&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+
+#. Tag: title
+#: Configuration.xml:40
+#, no-c-format
+msgid "Seam Resource Servlet"
+msgstr "Seam Resource Servlet"
+
+#. Tag: para
+#: Configuration.xml:41
+#, no-c-format
+msgid ""
+"The Seam Resource Servlet provides resources used by Seam Remoting, captchas "
+"(see the security chapter) and some JSF UI controls. Configuring the Seam "
+"Resource Servlet requires the following entry in <literal>web.xml</literal>:"
+msgstr ""
+"O Seam Resource Servlet fornece recursos usados pelo Seam Remoting, captchas (veja o capítulo de segurança) e alguns controles JSF UI. A configuração do Seam "
+"Resource Servlet requer as seguintes entradas em <literal>web.xml</literal>:"
+
+#. Tag: programlisting
+#: Configuration.xml:44
+#, no-c-format
+msgid ""
+"&lt;servlet&gt;\n"
+"  &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"  &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"    \n"
+"&lt;servlet-mapping&gt;\n"
+"  &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"  &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+msgstr ""
+"&lt;servlet&gt;\n"
+"  &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"  &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"    \n"
+"&lt;servlet-mapping&gt;\n"
+"  &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"  &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+
+#. Tag: title
+#: Configuration.xml:45
+#, no-c-format
+msgid "Seam servlet filters"
+msgstr "Filtros do Seam servlet "
+
+#. Tag: para
+#: Configuration.xml:46
+#, no-c-format
+msgid ""
+"Seam doesn&#39;t need any servlet filters for basic operation. However, "
+"there are several features which depend upon the use of filters. To make "
+"things easier for you guys, Seam lets you add and configure servlet filters "
+"just like you would configure other built-in Seam components. To take "
+"advantage of this feature, we must first install a master filter in "
+"<literal>web.xml</literal>:"
+msgstr "O Seam não precisa de qualquer um dos filtros servlet para operações básicas. No entanto, existem diversos recursos que dependem no uso de filtros. Para facilitar o seu trabalho, O Seam permite que você adicione e configure os filtros servlet da mesma maneira que você configura outros componentes internos Seam. Para tirar vantagem deste recurso, instalaremos um filtro mestre no <literal>web.xml</literal>:"
+
+#. Tag: programlisting
+#: Configuration.xml:49
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;/*&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;"
+msgstr ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;/*&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;"
+
+#. Tag: para
+#: Configuration.xml:50
+#, no-c-format
+msgid "Adding the master filter enables the following built-in filters."
+msgstr "Adicionar o filtro mestre capacita os seguintes filtros internos."
+
+#. Tag: title
+#: Configuration.xml:53
+#, no-c-format
+msgid "Exception handling"
+msgstr "Exceção de manejo"
+
+#. Tag: para
+#: Configuration.xml:54
+#, no-c-format
+msgid ""
+"This filter provides the exception mapping functionality in <literal>pages."
+"xml</literal> (almost all applications will need this). It also takes care "
+"of rolling back uncommitted transactions when uncaught exceptions occur. "
+"(According to the Java EE specification, the web container should do this "
+"automatically, but we&#39;ve found that this behavior cannot be relied upon "
+"in all application servers. And it is certainly not required of plain "
+"servlet engines like Tomcat.)"
+msgstr ""
+"O filtro fornece a exceção da funcionalidade de mapeamento em <literal>pages."
+"xml</literal> (quase todos os aplicativos irão precisar disto). Ele também cuida do revertimento de transações sem comprometimento quando ocorrer exceções inesperadas. (De acordo com a especificação Java EE, o container da web deve realizar isto automaticamente, mas descobrimos que este comportamento não pode ser levado em conta baseando-se em todos os servidores do aplicativo. Certamente isto não é requerido em mecanismos planos servlet como Tomcat.)"
+
+#. Tag: para
+#: Configuration.xml:57
+#, no-c-format
+msgid ""
+"By default, the exception handling filter will process all requests, however "
+"this behavior may be adjusted by adding a <literal>&lt;web:exception-"
+"filter&gt;</literal> entry to <literal>components.xml</literal>, as shown in "
+"this example:"
+msgstr ""
+"Pelo padrão, o filtro de exceção de manejo irá processar todas as solicitações, no entanto este comportamento deve ser ajustado adicionando uma entrada <literal>&lt;web:exception-"
+"filter&gt;</literal> ao <literal>components.xml</literal>, como apresentado neste exemplo:"
+
+#. Tag: programlisting
+#: Configuration.xml:60
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:web=\"http://jboss.com/products/seam/web\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                                                      http://jboss.com/"
+"products/seam/core-1.2.xsd\n"
+"                 http://jboss.com/products/seam/components \n"
+"                                                      http://jboss.com/"
+"products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/web \n"
+"                                                      http://jboss.com/"
+"products/seam/web-1.2.xsd\"&gt;\n"
+"\n"
+"    &lt;web:exception-filter url-pattern=\"*.seam\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:web=\"http://jboss.com/products/seam/web\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                                                      http://jboss.com/"
+"products/seam/core-1.2.xsd\n"
+"                 http://jboss.com/products/seam/components \n"
+"                                                      http://jboss.com/"
+"products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/web \n"
+"                                                      http://jboss.com/"
+"products/seam/web-1.2.xsd\"&gt;\n"
+"\n"
+"    &lt;web:exception-filter url-pattern=\"*.seam\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Configuration.xml:63 Configuration.xml:78 Configuration.xml:100
+#: Configuration.xml:125
+#, no-c-format
+msgid ""
+"<literal>url-pattern</literal> &mdash; Used to specify which requests are "
+"filtered, the default is all requests."
+msgstr "<literal>url-pattern</literal> &mdash; usado para identificar quais solicitações são filtradas, o padrão é para todas as solicitações."
+
+#. Tag: title
+#: Configuration.xml:68
+#, no-c-format
+msgid "Conversation propagation with redirects"
+msgstr "Propagação da conversação com redirecionamentos "
+
+#. Tag: para
+#: Configuration.xml:69
+#, no-c-format
+msgid ""
+"This filter allows Seam to propagate the conversation context across browser "
+"redirects. It intercepts any browser redirects and adds a request parameter "
+"that specifies the Seam conversation identifier."
+msgstr "Este filtro permite o seam propagar o contexto da conversação através do redirecionamento do navegador. Ele intercepta qualquer redirecionamento do navegador e adiciona um parâmetro de solicitação que especifica o identificador de conversação Seam."
+
+#. Tag: para
+#: Configuration.xml:72
+#, no-c-format
+msgid ""
+"The redirect filter will process all requests by default, but this behavior "
+"can also be adjusted in <literal>components.xml</literal>:"
+msgstr "O filtro de redireção irá processar todas as solicitações pelo padrão, mas este comportamento pode ser ajustado em <literal>components.xml</literal>:"
+
+#. Tag: programlisting
+#: Configuration.xml:75
+#, no-c-format
+msgid "&lt;web:redirect-filter url-pattern=\"*.seam\"/&gt;"
+msgstr "&lt;web:redirect-filter url-pattern=\"*.seam\"/&gt;"
+
+#. Tag: title
+#: Configuration.xml:83
+#, no-c-format
+msgid "Multipart form submissions"
+msgstr "Submissões de formulário de múltipla parte"
+
+#. Tag: para
+#: Configuration.xml:84
+#, no-c-format
+msgid ""
+"This feature is necessary when using the Seam file upload JSF control. It "
+"detects multipart form requests and processes them according to the "
+"multipart/form-data specification (RFC-2388). To override the default "
+"settings, add the following entry to <literal>components.xml</literal>:"
+msgstr "Esta característica é necessária quando utilizamos o controle JSF de carregamento de arquivo Seam. Ele detecta as solicitações de formulários e os processa de acordo com a parte múltipla/especificação de formulário de dados (RFC-2388). Para substituir as configurações padrões, adicione as entradas seguintes ao <literal>components.xml</literal>:"
+
+#. Tag: programlisting
+#: Configuration.xml:87
+#, no-c-format
+msgid ""
+"&lt;web:multipart-filter create-temp-files=\"true\" \n"
+"        max-request-size=\"1000000\" \n"
+"        url-pattern=\"*.seam\"/&gt;"
+msgstr ""
+"&lt;web:multipart-filter create-temp-files=\"true\" \n"
+"        max-request-size=\"1000000\" \n"
+"        url-pattern=\"*.seam\"/&gt;"
+
+#. Tag: para
+#: Configuration.xml:90
+#, no-c-format
+msgid ""
+"<literal>create-temp-files</literal> &mdash; If set to <literal>true</"
+"literal>, uploaded files are written to a temporary file (instead of held in "
+"memory). This may be an important consideration if large file uploads are "
+"expected. The default setting is <literal>false</literal>."
+msgstr ""
+"<literal>create-temp-files</literal> &mdash; Caso configurado como <literal>true</"
+"literal>, os arquivos carregados são escritos em um arquivo temporário ( ao invés de serem mantidos na memória). Esta pode ser uma importante consideração caso grandes arquivos carregados forem esperados. O padrão da configuração é <literal>false</literal>."
+
+#. Tag: para
+#: Configuration.xml:95
+#, no-c-format
+msgid ""
+"<literal>max-request-size</literal> &mdash; If the size of a file upload "
+"request (determined by reading the <literal>Content-Length</literal> header "
+"in the request) exceeds this value, the request will be aborted. The default "
+"setting is 0 (no size limit)."
+msgstr "<literal>max-request-size</literal> &mdash; Caso o tamanho de solicitação de carregamento de um arquivo (determinado pela leitura do cabeçalho <literal>Content-Length</literal> de solicitação) exceder este valor, a solicitação será abortada. A configuração do padrão é 0 (sem limite de tamanho)."
+
+#. Tag: title
+#: Configuration.xml:105
+#, no-c-format
+msgid "Character encoding"
+msgstr "Codificação de caracteres"
+
+#. Tag: para
+#: Configuration.xml:106
+#, no-c-format
+msgid "Sets the character encoding of submitted form data."
+msgstr "Define a codificação de caracteres dos dados de formulários submetidos."
+
+#. Tag: para
+#: Configuration.xml:109 Configuration.xml:137
+#, no-c-format
+msgid ""
+"This filter is not installed by default and requires an entry in "
+"<literal>components.xml</literal> to enable it:"
+msgstr "Este filtro não é instalado pelo padrão e requer uma entrada em <literal>components.xml</literal> para capacitá-lo:"
+
+#. Tag: programlisting
+#: Configuration.xml:112
+#, no-c-format
+msgid ""
+"&lt;web:character-encoding-filter encoding=\"UTF-16\" \n"
+"        override-client=\"true\" \n"
+"        url-pattern=\"*.seam\"/&gt;"
+msgstr ""
+"&lt;web:character-encoding-filter encoding=\"UTF-16\" \n"
+"        override-client=\"true\" \n"
+"        url-pattern=\"*.seam\"/&gt;"
+
+#. Tag: para
+#: Configuration.xml:115
+#, no-c-format
+msgid "<literal>encoding</literal> &mdash; The encoding to use."
+msgstr "<literal>encoding</literal> &mdash; A codificação a ser usada."
+
+#. Tag: para
+#: Configuration.xml:120
+#, no-c-format
+msgid ""
+"<literal>override-client</literal> &mdash; If this is set to <literal>true</"
+"literal>, the request encoding will be set to whatever is specified by "
+"<literal>encoding</literal> no matter whether the request already specifies "
+"an encoding or not. If set to <literal>false</literal>, the request encoding "
+"will only be set if the request doesn&#39;t already specify an encoding. The "
+"default setting is <literal>false</literal>."
+msgstr ""
+"<literal>override-client</literal> &mdash; caso isto seja definido para <literal>true</"
+"literal>, a codificação de solicitação será definida por tudo o que é especificado pela <literal>encoding</literal>, independente da solicitação especificar uma codificação ou não. caso definido para <literal>false</literal>, a codificação de solicitação irá ser definida caso a solicitação não especificar uma codificação. O padrão configurado é <literal>false</literal>."
+
+#. Tag: title
+#: Configuration.xml:130
+#, no-c-format
+msgid "Context management for custom servlets"
+msgstr "Gerenciamento de contexto para servlets personalizados"
+
+#. Tag: para
+#: Configuration.xml:131
+#, no-c-format
+msgid ""
+"Requests sent direct to some servlet other than the JSF servlet are not "
+"processed through the JSF lifecycle, so Seam provides a servlet filter that "
+"can be applied to any other servlet that needs access to Seam components."
+msgstr "As solicitações enviadas para certos servlets, fora o servlet JSF, não são processados através do ciclo de vida JSF. Desta forma, o Seam fornece um filtro servlet que pode ser aplicado a qualquer outro servlet do qual precisa acessar os componentes Seam."
+
+#. Tag: para
+#: Configuration.xml:134
+#, no-c-format
+msgid ""
+"This filter allows custom servlets to interact with the Seam contexts. It "
+"sets up the Seam contexts at the beginning of each request, and tears them "
+"down at the end of the request. You should make sure that this filter is "
+"<emphasis>never</emphasis> applied to the JSF <literal>FacesServlet</"
+"literal>. Seam uses the phase listener for context management in a JSF "
+"request."
+msgstr ""
+"Este filtro permite que os servlets personalizados interajam com os contextos Seam. Ele configura os contextos Seam no início de cada solicitação para subdividí-los no final de cada solicitação. Você deve certificar-se de que  o filtro <emphasis>never</emphasis> será aplicado pelo <literal>FacesServlet</"
+"literal> JSF. O Seam usa a fase listener para o gerenciador de contexto numa solicitação JSF."
+
+#. Tag: programlisting
+#: Configuration.xml:140
+#, no-c-format
+msgid "&lt;web:context-filter url-pattern=\"/media/*\"/&gt;"
+msgstr "&lt;web:context-filter url-pattern=\"/media/*\"/&gt;"
+
+#. Tag: para
+#: Configuration.xml:143
+#, no-c-format
+msgid ""
+"<literal>url-pattern</literal> &mdash; Used to specify which requests are "
+"filtered, the default is all requests. If the url-pattern is specified for "
+"the context filter, then the filter will be enabled (unless explicitly "
+"disabled)."
+msgstr "<literal>url-pattern</literal> &mdash; Usado para especificar quais das solicitações são filtradas, o padrão serve para todas as solicitações. Caso o url-pattern seja especificado pelo filtro do contexto, o filtro irá ser capacitado (a não ser que seja explicitamente desativado)."
+
+#. Tag: para
+#: Configuration.xml:148
+#, no-c-format
+msgid ""
+"The context filter expects to find the conversation id of any conversation "
+"context in a request parameter named <literal>conversationId</literal>. You "
+"are responsible for ensuring that it gets sent in the request."
+msgstr "O filtro do contexto espera encontrar a identidade da conversação de qualquer contexto de conversação num nomeado parâmetro de solicitação <literal>conversationId</literal>. Você é responsável por garantir que isto será enviado na solicitação."
+
+#. Tag: para
+#: Configuration.xml:151
+#, no-c-format
+msgid ""
+"You are also responsible for ensuring propagation of any new conversation id "
+"back to the client. Seam exposes the conversation id as a property of the "
+"built in component <literal>conversation</literal>."
+msgstr "Você é também responsável por garantir a propagação de qualquer nova identidade de conversação retornada ao cliente. O Seam apresenta a identidade da conversação como uma propriedade de componente interno <literal>conversation</literal>."
+
+#. Tag: title
+#: Configuration.xml:154
+#, no-c-format
+msgid "Integrating Seam with your EJB container"
+msgstr "Integração do Seam com o seu container EJB"
+
+#. Tag: para
+#: Configuration.xml:155
+#, no-c-format
+msgid ""
+"We need to apply the <literal>SeamInterceptor</literal> to our Seam "
+"components. The simplest way to do this is to add the following interceptor "
+"binding to the <literal>&lt;assembly-descriptor&gt;</literal> in "
+"<literal>ejb-jar.xml</literal>:"
+msgstr ""
+"Precisamos aplicar o <literal>SeamInterceptor</literal> em nossos componentes Seam. Uma maneira simples de se fazer isto é adicionar a seguinte vinculação do interceptor ao <literal>&lt;assembly-descriptor&gt;</literal> em"
+"<literal>ejb-jar.xml</literal>:"
+
+#. Tag: programlisting
+#: Configuration.xml:158
+#, no-c-format
+msgid ""
+"&lt;interceptor-binding&gt;\n"
+"    &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"    &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"&lt;/interceptor-binding&gt;"
+msgstr ""
+"&lt;interceptor-binding&gt;\n"
+"    &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"    &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"&lt;/interceptor-binding&gt;"
+
+#. Tag: para
+#: Configuration.xml:159
+#, no-c-format
+msgid ""
+"Seam needs to know where to go to find session beans in JNDI. One way to do "
+"this is specify the <literal>@JndiName</literal> annotation on every session "
+"bean Seam component. However, this is quite tedious. A better approach is to "
+"specify a pattern that Seam can use to calculate the JNDI name from the EJB "
+"name. Unfortunately, there is no standard mapping to global JNDI defined in "
+"the EJB3 specification, so this mapping is vendor-specific. We usually "
+"specify this option in <literal>components.xml</literal>."
+msgstr "O Seam precisa saber onde ir para encontrar os beans session em JNDI. Uma forma de se fazer isto é especificar a anotação <literal>@JndiName</literal> em cada componente Seam de bean session. No entanto, este processo é bastante entediante. Uma melhor maneira seria especificar um padrão que o Seam usa para calcular o nome JNDI a partir do nome EJB. Infelizmente, não há mapeamento padrão para o definido JNDI global na especificação EJB3, então o mapeamento é um fornecedor específico. Normalmente, nós especificamos esta opção em <literal>components.xml</literal>."
+
+#. Tag: para
+#: Configuration.xml:162
+#, no-c-format
+msgid "For JBoss AS, the following pattern is correct:"
+msgstr "Para O JBoss AS, o seguinte padrão é correto:"
+
+#. Tag: programlisting
+#: Configuration.xml:165
+#, no-c-format
+msgid "&lt;core:init jndi-name=\"myEarName/#{ejbName}/local\" /&gt;"
+msgstr "&lt;core:init jndi-name=\"myEarName/#{ejbName}/local\" /&gt;"
+
+#. Tag: para
+#: Configuration.xml:166
+#, no-c-format
+msgid ""
+"Where <literal>myEarName</literal> is the name of the EAR in which the bean "
+"is deployed."
+msgstr "Onde <literal>myEarName</literal> é o nome do EAR em qual o bean é implementado."
+
+#. Tag: para
+#: Configuration.xml:169
+#, no-c-format
+msgid ""
+"Outside the context of an EAR (when using the JBoss Embeddable EJB3 "
+"container), the following pattern is the one to use:"
+msgstr ""
+"Fora do contexto de um EAR (quando usando o JBoss Embeddable EJB3 "
+"container), o seguinte padrão deve ser usado:"
+
+#. Tag: programlisting
+#: Configuration.xml:172
+#, no-c-format
+msgid "&lt;core:init jndi-name=\"#{ejbName}/local\" /&gt;"
+msgstr "&lt;core:init jndi-name=\"#{ejbName}/local\" /&gt;"
+
+#. Tag: para
+#: Configuration.xml:173
+#, no-c-format
+msgid ""
+"You&#39;ll have to experiment to find the right setting for other "
+"application servers. Note that some servers (such as GlassFish) require you "
+"to specify JNDI names for all EJB components explicitly (and tediously). In "
+"this case, you can pick your own pattern ;-)"
+msgstr "Você terá que experimentar para encontrar a configuração certa para outros servidores do aplicativo. Perceba que alguns servidores (como GlassFish) pedem que você especifique os nomes JNDI a todos os componentes EJB explícitos. Neste caso, você pode escolher o ser próprio padrão."
+
+#. Tag: title
+#: Configuration.xml:176
+#, no-c-format
+msgid "Using facelets"
+msgstr "Usando facelets"
+
+#. Tag: para
+#: Configuration.xml:177
+#, no-c-format
+msgid ""
+"If you want follow our advice and use facelets instead of JSP, add the "
+"following lines to <literal>faces-config.xml</literal>:"
+msgstr "Caso você queira seguir o nosso conselho e usar facelets ao invés do JSP, adicione as sehuintes linhas em <literal>faces-config.xml</literal>:"
+
+#. Tag: programlisting
+#: Configuration.xml:180
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;view-handler&gt;com.sun.facelets.FaceletViewHandler&lt;/view-"
+"handler&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+"&lt;application&gt;\n"
+"    &lt;view-handler&gt;com.sun.facelets.FaceletViewHandler&lt;/view-"
+"handler&gt;\n"
+"&lt;/application&gt;"
+
+#. Tag: para
+#: Configuration.xml:181
+#, no-c-format
+msgid "And the following lines to <literal>web.xml</literal>:"
+msgstr "E as seguintes linhas em <literal>web.xml</literal>:"
+
+#. Tag: programlisting
+#: Configuration.xml:184
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;javax.faces.DEFAULT_SUFFIX&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;.xhtml&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;javax.faces.DEFAULT_SUFFIX&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;.xhtml&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+
+#. Tag: title
+#: Configuration.xml:185
+#, no-c-format
+msgid "Don&#39;t forget!"
+msgstr "Não se esqueça!"
+
+#. Tag: para
+#: Configuration.xml:186
+#, no-c-format
+msgid ""
+"There is one final item you need to know about. You must place a "
+"<literal>seam.properties</literal>, <literal>META-INF/seam.properties</"
+"literal> or <literal>META-INF/components.xml</literal> file in any archive "
+"in which your Seam components are deployed (even an empty properties file "
+"will do). At startup, Seam will scan any archives with <literal>seam."
+"properties</literal> files for seam components."
+msgstr ""
+"Há um ítem final que você precisa saber a respeito disto. Você deve colocar um <literal>seam.properties</literal>, <literal>META-INF/seam.properties</"
+"literal> ou arquivo <literal>META-INF/components.xml</literal> em qrquivo em que os componentes Seam são implementados (mesmo em um arquivo de propriedades vazias). Para começar, O Seam irá realizar um scan em qualquer arquivo com arquivos <literal>seam."
+"properties</literal> para os componentes Seam."
+
+#. Tag: para
+#: Configuration.xml:189
+#, no-c-format
+msgid ""
+"In a web archive (WAR) file, you must place a <literal>seam.properties</"
+"literal> file in the <literal>WEB-INF/classes</literal> directory if you "
+"have any Seam components included here."
+msgstr ""
+"Num arquivo da web de um arquivo (WAR), você deve por um arquivo <literal>seam.properties</"
+"literal> no diretório <literal>WEB-INF/classes</literal>, caso você tenha qualquer componente Seam incluído aqui."
+
+#. Tag: para
+#: Configuration.xml:192
+#, no-c-format
+msgid ""
+"That&#39;s why all the Seam examples have an empty <literal>seam.properties</"
+"literal> file. You can&#39;t just delete this file and expect everything to "
+"still work!"
+msgstr ""
+"Este é o motivo pelo qual as amostras Seam possuem um arquivo <literal>seam.properties</"
+"literal> vazio. Você não pode apenas deletar este arquivo e esperar que tudo continue funcionando."
+
+#. Tag: para
+#: Configuration.xml:195
+#, no-c-format
+msgid ""
+"You might think this is silly and what kind of idiot framework designers "
+"would make an empty file affect the behavior of their software?? Well, this "
+"is a workaround for a limitation of the JVM&mdash;if we didn&#39;t use this "
+"mechanism, our next best option would be to force you to list every "
+"component explicitly in <literal>components.xml</literal>, just like some "
+"other competing frameworks do! I think you&#39;ll like our way better."
+msgstr "Você deve estar se questionando como um arquivo vazio afeta o comportamento do software. Na realidade, isto é um contorno para uma limitação do JVM &mdash; caso não usemos este mecanismo, a nossa melhor opção seria induzí-lo a listar todo componente explícito em <literal>components.xml</literal>, assim como outros frameworks competidores fazem. Acreditamos que você gostará mais de nossa opção."
+
+#. Tag: title
+#: Configuration.xml:198
+#, no-c-format
+msgid "Configuring Seam in Java EE 5"
+msgstr "Configuração Seam em Java EE 5"
+
+#. Tag: para
+#: Configuration.xml:207
+#, no-c-format
+msgid ""
+"If you&#39;re running in a Java EE 5 environment, this is all the "
+"configuration required to start using Seam!"
+msgstr "Caso você esteja rodando num ambiente Java, isto é tudo que a configuração pede para começar a usar o Seam!"
+
+#. Tag: title
+#: Configuration.xml:210 Configuration.xml:276 Configuration.xml:321
+#: Configuration.xml:360 Configuration.xml:377
+#, no-c-format
+msgid "Packaging"
+msgstr "Empacotamento"
+
+#. Tag: para
+#: Configuration.xml:211
+#, no-c-format
+msgid ""
+"Once you&#39;ve packaged all this stuff together into an EAR, the archive "
+"structure will look something like this:"
+msgstr "Uma vez que você tenha empacotado tudo no EAR, a estrutura do arquivo irá buscar por algo similar a isto:"
+
+#. Tag: programlisting
+#: Configuration.xml:214
+#, no-c-format
+msgid ""
+"my-application.ear/\n"
+"    jboss-seam.jar\n"
+"    el-api.jar\n"
+"    el-ri.jar\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"        application.xml\n"
+"    my-application.war/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"        WEB-INF/\n"
+"            web.xml\n"
+"            components.xml\n"
+"            faces-config.xml\n"
+"            lib/\n"
+"                jsf-facelets.jar\n"
+"                jboss-seam-ui.jar\n"
+"        login.jsp\n"
+"        register.jsp\n"
+"        ...\n"
+"    my-application.jar/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"            persistence.xml\n"
+"        seam.properties\n"
+"        org/\n"
+"            jboss/\n"
+"                myapplication/\n"
+"                    User.class\n"
+"                    Login.class\n"
+"                    LoginBean.class\n"
+"                    Register.class\n"
+"                    RegisterBean.class\n"
+"                    ..."
+msgstr ""
+"my-application.ear/\n"
+"    jboss-seam.jar\n"
+"    el-api.jar\n"
+"    el-ri.jar\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"        application.xml\n"
+"    my-application.war/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"        WEB-INF/\n"
+"            web.xml\n"
+"            components.xml\n"
+"            faces-config.xml\n"
+"            lib/\n"
+"                jsf-facelets.jar\n"
+"                jboss-seam-ui.jar\n"
+"        login.jsp\n"
+"        register.jsp\n"
+"        ...\n"
+"    my-application.jar/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"            persistence.xml\n"
+"        seam.properties\n"
+"        org/\n"
+"            jboss/\n"
+"                myapplication/\n"
+"                    User.class\n"
+"                    Login.class\n"
+"                    LoginBean.class\n"
+"                    Register.class\n"
+"                    RegisterBean.class\n"
+"                    ..."
+
+#. Tag: para
+#: Configuration.xml:215
+#, no-c-format
+msgid ""
+"You must include <literal>jboss-seam.jar</literal>, <literal>el-api.jar</"
+"literal> and <literal>el-ri.jar</literal> in the EAR classpath. Make sure "
+"you reference all of these jars from <literal>application.xml</literal>."
+msgstr ""
+"Você deve incluir <literal>jboss-seam.jar</literal>, <literal>el-api.jar</"
+"literal> e <literal>el-ri.jar</literal> na classpath Ea<literal>application.xml</literal>. Certifique-se de referenciar todas estas jarras em <literal>application.xml</literal>."
+
+#. Tag: para
+#: Configuration.xml:218
+#, no-c-format
+msgid ""
+"If you want to use jBPM or Drools, you must include the needed jars in the "
+"EAR classpath. Make sure you reference all of the jars from "
+"<literal>application.xml</literal>."
+msgstr "Caso você queira usar jBPM ou Drools, você deve incluir as jarras necessárias na classpath EAR. Certifique-se de referenciar todas as jarras em <literal>application.xml</literal>."
+
+#. Tag: para
+#: Configuration.xml:221
+#, no-c-format
+msgid ""
+"If you want to use facelets (our recommendation), you must include "
+"<literal>jsf-facelets.jar</literal> in the <literal>WEB-INF/lib</literal> "
+"directory of the WAR."
+msgstr "Caso você queira usar facelets (nossa recomendação), você deve incluir <literal>jsf-facelets.jar</literal> no diretório <literal>WEB-INF/lib</literal> do WAR."
+
+#. Tag: para
+#: Configuration.xml:224
+#, no-c-format
+msgid ""
+"If you want to use the Seam tag library (most Seam applications do), you "
+"must include <literal>jboss-seam-ui.jar</literal> in the <literal>WEB-INF/"
+"lib</literal> directory of the WAR. If you want to use the PDF or email tag "
+"libraries, you need to put <literal>jboss-seam-pdf.jar</literal> or "
+"<literal>jboss-seam-mail.jar</literal> in <literal>WEB-INF/lib</literal>."
+msgstr ""
+"Caso você queira usar a biblioteca de caracteres Seam (a maioria dos aplicativos Seam a utilizam), você deve incluir <literal>jboss-seam-ui.jar</literal> no diretório <literal>WEB-INF/"
+"lib</literal> do WAR. Caso você queira usar o PDF ou enviar por e-mail as bibliotecas de caracteres, você precisa colocar <literal>jboss-seam-pdf.jar</literal> ou"
+"<literal>jboss-seam-mail.jar</literal> em <literal>WEB-INF/lib</literal>."
+
+#. Tag: para
+#: Configuration.xml:227
+#, no-c-format
+msgid ""
+"If you want to use the Seam debug page (only works for applications using "
+"facelets), you must include <literal>jboss-seam-debug.jar</literal> in the "
+"<literal>WEB-INF/lib</literal> directory of the WAR."
+msgstr "Caso queira usar a página de depuração Seam (apenas funciona nos aplicativos que utilizam facelets) você deve incluir <literal>jboss-seam-debug.jar</literal> no diretório <literal>WEB-INF/lib</literal> de WAR."
+
+#. Tag: para
+#: Configuration.xml:230
+#, no-c-format
+msgid ""
+"Seam ships with several example applications that are deployable in any Java "
+"EE container that supports EJB 3.0."
+msgstr "O Seam envia diversos aplicativos de amostra que são implementados em qualquer container EE Java do qual suporta EJB 3.0."
+
+#. Tag: para
+#: Configuration.xml:233
+#, no-c-format
+msgid ""
+"I really wish that was all there was to say on the topic of configuration "
+"but unfortunately we&#39;re only about a third of the way there. If you&#39;"
+"re too overwhelmed by all this tedious configuration stuff, feel free to "
+"skip over the rest of this section and come back to it later."
+msgstr "Vimos apenas um terço do conteúdo de configuração. Caso sinta-se um pouco cansado deste tópico, fique à vontade em seguir adiante, e retornar mais tarde para esta sessão."
+
+#. Tag: title
+#: Configuration.xml:237
+#, no-c-format
+msgid "Configuring Seam in Java SE, with the JBoss Embeddable EJB3 container"
+msgstr "Configuração Seam em Java SE, com o JBoss Embeddable EJB3 container"
+
+#. Tag: para
+#: Configuration.xml:238
+#, no-c-format
+msgid ""
+"The JBoss Embeddable EJB3 container lets you run EJB3 components outside the "
+"context of the Java EE 5 application server. This is especially, but not "
+"only, useful for testing."
+msgstr "O JBoss Embeddable EJB3 container permite que você rode componentes EJB3 fora do servidor do aplicativo Java EE 5. Este procedimento é especialmente, porém não o único, utilizado para testes."
+
+#. Tag: para
+#: Configuration.xml:241
+#, no-c-format
+msgid ""
+"The Seam booking example application includes a TestNG integration test "
+"suite that runs on the Embeddable EJB3 container."
+msgstr "O aplicativo de amostras reservadas Seam inclui uma suite de teste de integração, da qual roda no Embeddable EJB3 container."
+
+#. Tag: para
+#: Configuration.xml:252
+#, no-c-format
+msgid "The booking example application may even be deployed to Tomcat."
+msgstr "O aplicativo de amostra de reserva poderia ainda ser implantado ao Tomcat."
+
+#. Tag: title
+#: Configuration.xml:263
+#, no-c-format
+msgid "Installing the Embeddable EJB3 container"
+msgstr "Instalação do Embeddable EJB3 container "
+
+#. Tag: para
+#: Configuration.xml:264
+#, no-c-format
+msgid ""
+"Seam ships with a build of the Embeddable EJB3 container in the "
+"<literal>embedded-ejb</literal> directory. To use the Embeddable EJB3 "
+"container with Seam, add the <literal>embedded-ejb/conf</literal> directory, "
+"and all jars in the <literal>lib</literal> and <literal>embedded-ejb/lib</"
+"literal> directories to your classpath. Then, add the following line to "
+"<literal>components.xml</literal>:"
+msgstr ""
+"O Seam envia uma construção do Embeddable EJB3 container no diretório <literal>embedded-ejb</literal>. Para usar o Embeddable EJB3 "
+"container com o Seam, adicione o diretório <literal>embedded-ejb/conf</literal> e todas as jarras em <literal>lib</literal>e diretórios <literal>embedded-ejb/lib</"
+"literal> a sua classpath. Então, adicione a seguinte linha ao <literal>components.xml</literal>: "
+
+#. Tag: programlisting
+#: Configuration.xml:267
+#, no-c-format
+msgid "&lt;core:ejb /&gt;"
+msgstr "&lt;core:ejb /&gt;"
+
+#. Tag: para
+#: Configuration.xml:268
+#, no-c-format
+msgid ""
+"This setting installs the built-in component named <literal>org.jboss.seam."
+"core.ejb</literal>. This component is responsible for bootstrapping the EJB "
+"container when Seam is started, and shutting it down when the web "
+"application is undeployed."
+msgstr ""
+"Este conjunto instala o nomeado componente interno <literal>org.jboss.seam."
+"core.ejb</literal>. Este componente é responsável pela inicialização do container EJB quando o Seam for inciado, e desligando-o quando o aplicativo da web desimplementado."
+
+#. Tag: title
+#: Configuration.xml:271
+#, no-c-format
+msgid "Configuring a datasource with the Embeddable EJB3 container"
+msgstr "Configurando o banco de dados com o Embeddable EJB3 container"
+
+#. Tag: para
+#: Configuration.xml:272
+#, no-c-format
+msgid ""
+"You should refer to the Embeddable EJB3 container documentation for more "
+"information about configuring the container. You&#39;ll probably at least "
+"need to set up your own datasource. Embeddable EJB3 is implemented using the "
+"JBoss Microcontainer, so it&#39;s very easy to add new services to the "
+"minimal set of services provided by default. For example, I can add a new "
+"datasource by putting this <literal>jboss-beans.xml</literal> file in my "
+"classpath:"
+msgstr "Você deve referir-se à documentação Embeddable EJB3 container para maiores informações a respeito da configuração do container. Você precisará no mínimo configurar seu próprio banco de dados. O Embeddable EJB3 é implementado usando o JBoss Microcontainer, para que desta forma seja mais fácil adicionar novos serviços ao conjunto mínimo de serviços fornecidos pelo padrão. Por exemplo, eu posso adicionar um novo banco de dados colocando este arquivo <literal>jboss-beans.xml</literal> na minha classpath:"
+
+#. Tag: programlisting
+#: Configuration.xml:275
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"\n"
+"&lt;deployment xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"urn:jboss:bean-deployer bean-deployer_1_0."
+"xsd\"\n"
+"            xmlns=\"urn:jboss:bean-deployer\"&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasourceBootstrap\"\n"
+"        class=\"org.jboss.resource.adapter.jdbc.local.LocalTxDataSource"
+"\"&gt;\n"
+"      &lt;property name=\"driverClass\"&gt;org.hsqldb.jdbcDriver&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"connectionURL\"&gt;jdbc:hsqldb:.&lt;/property&gt;\n"
+"      &lt;property name=\"userName\"&gt;sa&lt;/property&gt;\n"
+"      &lt;property name=\"jndiName\"&gt;java:/bookingDatasource&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"minSize\"&gt;0&lt;/property&gt;\n"
+"      &lt;property name=\"maxSize\"&gt;10&lt;/property&gt;\n"
+"      &lt;property name=\"blockingTimeout\"&gt;1000&lt;/property&gt;\n"
+"      &lt;property name=\"idleTimeout\"&gt;100000&lt;/property&gt;\n"
+"      &lt;property name=\"transactionManager\"&gt;\n"
+"        &lt;inject bean=\"TransactionManager\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"      &lt;property name=\"cachedConnectionManager\"&gt;\n"
+"        &lt;inject bean=\"CachedConnectionManager\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"      &lt;property name=\"initialContextProperties\"&gt;\n"
+"        &lt;inject bean=\"InitialContextProperties\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasource\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getDatasource\"&gt;\n"
+"         &lt;factory bean=\"bookingDatasourceBootstrap\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"&lt;/deployment&gt;"
+msgstr ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"\n"
+"&lt;deployment xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"urn:jboss:bean-deployer bean-deployer_1_0."
+"xsd\"\n"
+"            xmlns=\"urn:jboss:bean-deployer\"&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasourceBootstrap\"\n"
+"        class=\"org.jboss.resource.adapter.jdbc.local.LocalTxDataSource"
+"\"&gt;\n"
+"      &lt;property name=\"driverClass\"&gt;org.hsqldb.jdbcDriver&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"connectionURL\"&gt;jdbc:hsqldb:.&lt;/property&gt;\n"
+"      &lt;property name=\"userName\"&gt;sa&lt;/property&gt;\n"
+"      &lt;property name=\"jndiName\"&gt;java:/bookingDatasource&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"minSize\"&gt;0&lt;/property&gt;\n"
+"      &lt;property name=\"maxSize\"&gt;10&lt;/property&gt;\n"
+"      &lt;property name=\"blockingTimeout\"&gt;1000&lt;/property&gt;\n"
+"      &lt;property name=\"idleTimeout\"&gt;100000&lt;/property&gt;\n"
+"      &lt;property name=\"transactionManager\"&gt;\n"
+"        &lt;inject bean=\"TransactionManager\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"      &lt;property name=\"cachedConnectionManager\"&gt;\n"
+"        &lt;inject bean=\"CachedConnectionManager\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"      &lt;property name=\"initialContextProperties\"&gt;\n"
+"        &lt;inject bean=\"InitialContextProperties\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasource\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getDatasource\"&gt;\n"
+"         &lt;factory bean=\"bookingDatasourceBootstrap\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"&lt;/deployment&gt;"
+
+#. Tag: para
+#: Configuration.xml:277
+#, no-c-format
+msgid ""
+"The archive structure of a WAR-based deployment on an servlet engine like "
+"Tomcat will look something like this:"
+msgstr "A estrutura do arquivo de um implementado WAR num mecanismo servlet como Tomcat irá parecer-se como:"
+
+#. Tag: programlisting
+#: Configuration.xml:280
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            myfaces-api.jar\n"
+"            myfaces-impl.jar\n"
+"            jboss-ejb3.jar\n"
+"            jboss-jca.jar\n"
+"            jboss-j2ee.jar\n"
+"            ...\n"
+"            mc-conf.jar/\n"
+"                ejb3-interceptors-aop.xml\n"
+"                embedded-jboss-beans.xml\n"
+"                default.persistence.properties\n"
+"                jndi.properties\n"
+"                login-config.xml\n"
+"                security-beans.xml\n"
+"                log4j.xml\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                    MANIFEST.MF\n"
+"                    persistence.xml\n"
+"                    jboss-beans.xml\n"
+"                log4j.xml\n"
+"                seam.properties\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            LoginBean.class\n"
+"                            Register.class\n"
+"                            RegisterBean.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            myfaces-api.jar\n"
+"            myfaces-impl.jar\n"
+"            jboss-ejb3.jar\n"
+"            jboss-jca.jar\n"
+"            jboss-j2ee.jar\n"
+"            ...\n"
+"            mc-conf.jar/\n"
+"                ejb3-interceptors-aop.xml\n"
+"                embedded-jboss-beans.xml\n"
+"                default.persistence.properties\n"
+"                jndi.properties\n"
+"                login-config.xml\n"
+"                security-beans.xml\n"
+"                log4j.xml\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                    MANIFEST.MF\n"
+"                    persistence.xml\n"
+"                    jboss-beans.xml\n"
+"                log4j.xml\n"
+"                seam.properties\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            LoginBean.class\n"
+"                            Register.class\n"
+"                            RegisterBean.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+
+#. Tag: para
+#: Configuration.xml:281
+#, no-c-format
+msgid ""
+"The <literal>mc-conf.jar</literal> just contains the standard JBoss "
+"Microcontainer configuration files for Embeddable EJB3. You won&#39;t "
+"usually need to edit these files yourself."
+msgstr ""
+"O <literal>mc-conf.jar</literal> contém apenas os arquivos de configuração padrão JBoss "
+"Microcontainer para Embeddable EJB3. Normalmente, você não precisará editar estes arquivos."
+
+#. Tag: para
+#: Configuration.xml:284
+#, no-c-format
+msgid ""
+"Most of the Seam example applications may be deployed to Tomcat by running "
+"<literal>ant deploy.tomcat</literal>."
+msgstr "A maioria dos aplicativos de amostra Seam poderiam ser implementados ao Tomcat rodando <literal>ant deploy.tomcat</literal>."
+
+#. Tag: title
+#: Configuration.xml:287
+#, no-c-format
+msgid "Configuring Seam in J2EE"
+msgstr "Configuração Seam em J2EE"
+
+#. Tag: para
+#: Configuration.xml:288
+#, no-c-format
+msgid ""
+"Seam is useful even if you&#39;re not yet ready to take the plunge into EJB "
+"3.0. In this case you would use Hibernate3 or JPA instead of EJB 3.0 "
+"persistence, and plain JavaBeans instead of session beans. You&#39;ll miss "
+"out on some of the nice features of session beans but it will be very easy "
+"to migrate to EJB 3.0 when you&#39;re ready and, in the meantime, you&#39;ll "
+"be able to take advantage of Seam&#39;s unique declarative state management "
+"architecture."
+msgstr "O Seam é útil mesmo que você não esteja pronto ainda para introduzir o plunge no EJB 3.0. Neste caso, você poderia usar o Hibernate3 ou JPA ao invés do persistente EJB 3.0, e JavaBeans planos ao invés de benas de sessão. Você não perderá nenhum dos excelentes recursos dos beans de sessão, mas será muito simples migrá-los ao EJB 3.0 quando você estiver pronto e, no meio termo, você estará apto a desfrutar da arquitetura de gerenciamento do estado declarativo exclusivo Seam."
+
+#. Tag: para
+#: Configuration.xml:299
+#, no-c-format
+msgid ""
+"Seam JavaBean components do not provide declarative transaction demarcation "
+"like session beans do. You <emphasis>could</emphasis> manage your "
+"transactions manually using the JTA <literal>UserTransaction</literal> (you "
+"could even implement your own declarative transaction management in a Seam "
+"interceptor). But most applications will use Seam managed transactions when "
+"using Hibernate with JavaBeans. Follow the instructions in the persistence "
+"chapter to install <literal>TransactionalSeamPhaseListener</literal>."
+msgstr "Os componentes JavaBean não fornecem uma demarcação de transação declarativa como os beans de sessão fazem. Você <emphasis>poderia</emphasis> gerenciar suas transações manualmente usando o <literal>UserTransaction</literal> JTA (você pode ainda implementar seu próprio gerenciador de transação declarativo num interceptor Seam). No entanto, a maioria dos aplicativos irão usar as transações gerenciadas Seam quando utilizando Hibernate com JavaBeans. Siga as instruções no capítulo de persistência para instalar <literal>TransactionalSeamPhaseListener</literal>. "
+
+#. Tag: para
+#: Configuration.xml:302
+#, no-c-format
+msgid ""
+"The Seam distribution includes a version of the booking example application "
+"that uses Hibernate3 and JavaBeans instead of EJB3, and another version that "
+"uses JPA and JavaBeans. These example applications are ready to deploy into "
+"any J2EE application server."
+msgstr "A distribuição Seam inclui uma versão de aplicativo de amostra de reserva da qual utiliza ibernate3 e JavaBeans ao invés de EJB3, e outra versão que usa JPA e JavaBeans. Estes aplicativos de amostras estão prontos para implementação em qualquer servidor de aplicativo J2EE."
+
+#. Tag: title
+#: Configuration.xml:305
+#, no-c-format
+msgid "Boostrapping Hibernate in Seam"
+msgstr "Inicialização Hibernate em Seam"
+
+#. Tag: para
+#: Configuration.xml:306
+#, no-c-format
+msgid ""
+"Seam will bootstrap a Hibernate <literal>SessionFactory</literal> from your "
+"<literal>hibernate.cfg.xml</literal> file if you install a built-in "
+"component:"
+msgstr "O Seam irá inicializar uma <literal>SessionFactory</literal> Hibernate a partir de seu arquivo <literal>hibernate.cfg.xml</literal>, caso você instale um componente interno:"
+
+#. Tag: programlisting
+#: Configuration.xml:309
+#, no-c-format
+msgid "&lt;core:hibernate-session-factory name=\"hibernateSessionFactory\"/&gt;"
+msgstr "&lt;core:hibernate-session-factory name=\"hibernateSessionFactory\"/&gt;"
+
+#. Tag: para
+#: Configuration.xml:310
+#, no-c-format
+msgid ""
+"You will also need to configure a <emphasis>managed session</emphasis> if "
+"you want a Seam managed Hibernate <literal>Session</literal> to be available "
+"via injection."
+msgstr "Você irá também precisar configurar uma <emphasis> sessão gerenciada</emphasis>, caso você queira um Seam gerenciado Hibernate <literal>Session</literal> se disponível através da injeção."
+
+#. Tag: title
+#: Configuration.xml:313
+#, no-c-format
+msgid "Boostrapping JPA in Seam"
+msgstr "Inicialização JPA no Seam"
+
+#. Tag: para
+#: Configuration.xml:314
+#, no-c-format
+msgid ""
+"Seam will bootstrap a JPA <literal>EntityManagerFactory</literal> from your "
+"<literal>persistence.xml</literal> file if you install this built-in "
+"component:"
+msgstr "O Seam irá inicializar um JPA <literal>EntityManagerFactory</literal> a partir de seu arquivo <literal>persistence.xml</literal>, caso você queira instalar componentes internos: "
+
+#. Tag: programlisting
+#: Configuration.xml:317
+#, no-c-format
+msgid "&lt;core:entity-manager-factory name=\"entityManagerFactory\"/&gt;"
+msgstr "&lt;core:entity-manager-factory name=\"entityManagerFactory\"/&gt;"
+
+#. Tag: para
+#: Configuration.xml:318
+#, no-c-format
+msgid ""
+"You will also need to configure a <emphasis>managed persistencece context</"
+"emphasis> if you want a Seam managed JPA <literal>EntityManager</literal> to "
+"be available via injection."
+msgstr ""
+"Você também precisará configurar um <emphasis>contexto de persistência gerenciado</"
+"emphasis>, caso você queira um gerenciado Seam <literal>EntityManager</literal> JPA estar disponível via injeção. "
+
+#. Tag: para
+#: Configuration.xml:322
+#, no-c-format
+msgid "We can package our application as a WAR, in the following structure:"
+msgstr "Nós podemos empacotar nosso próprio aplicativo como um WAR, na seguinte estrutura: "
+
+#. Tag: programlisting
+#: Configuration.xml:325
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            hibernate3.jar\n"
+"            hibernate-annotations.jar\n"
+"            ...\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                   MANIFEST.MF\n"
+"                seam.properties\n"
+"                hibernate.cfg.xml\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            Register.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            hibernate3.jar\n"
+"            hibernate-annotations.jar\n"
+"            ...\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                   MANIFEST.MF\n"
+"                seam.properties\n"
+"                hibernate.cfg.xml\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            Register.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+
+#. Tag: para
+#: Configuration.xml:326
+#, no-c-format
+msgid ""
+"If we want to deploy Hibernate in a non-J2EE environment like Tomcat or "
+"TestNG, we need to do a little bit more work."
+msgstr "Caso quisermos implementar o Hibernate num ambiente non-J2EE como Tomcat ou TestNG, precisaremos realizar um pouco mais de trabalho. "
+
+#. Tag: title
+#: Configuration.xml:330
+#, no-c-format
+msgid "Configuring Seam in Java SE, with the JBoss Microcontainer"
+msgstr "Configuração Seam em Java SE com o JBoss Microcontainer"
+
+#. Tag: para
+#: Configuration.xml:331
+#, no-c-format
+msgid ""
+"The Seam support for Hibernate and JPA requires JTA and a JCA datasource. If "
+"you are running in a non-EE environment like Tomcat or TestNG you can run "
+"these services, and Hibernate itself, in the JBoss Microcontainer."
+msgstr "O suporte Seam para Hibernate e solicitações JPA e um banco de dados JCA. Caso você esteja rodando num ambiente non-EE como Tomcat ou TestNG, você poderá rodar estes serviços, e o próprio Hibernate no JBoss Microcontainer."
+
+#. Tag: para
+#: Configuration.xml:334
+#, no-c-format
+msgid ""
+"You can even deploy the Hibernate and JPA versions of the booking example in "
+"Tomcat."
+msgstr "Você pode ainda implementar o Hibernate e as versões da amostra de reserva Tomcat. "
+
+#. Tag: para
+#: Configuration.xml:345
+#, no-c-format
+msgid ""
+"Seam ships with an example Microcontainer configuration in "
+"<literal>microcontainer/conf/jboss-beans.xml</literal> that provides all the "
+"things you need to run Seam with Hibernate in any non-EE environment. Just "
+"add the <literal>microcontainer/conf</literal> directory, and all jars in "
+"the <literal>lib</literal> and <literal>microcontainer/lib</literal> "
+"directories to your classpath. Refer to the documentation for the JBoss "
+"Microcontainer for more information."
+msgstr ""
+"o Seam envia uma configuração Microcontainer de amostra no <literal>microcontainer/conf/jboss-beans.xml</literal> do qual fornece tudo o que necessário para rodar o Seam com o Hibernate em qualquer ambiente non-EE. Apenas adicione o diretório <literal>microcontainer/conf</literal>, e todas as jarras em <literal>lib</literal> e diretórios <literal>microcontainer/lib</literal> na sua classpath. Consulte a documentação do JBoss "
+"Microcontainer para maiores informações. "
+
+#. Tag: title
+#: Configuration.xml:348
+#, no-c-format
+msgid "Using Hibernate and the JBoss Microcontainer"
+msgstr "Usando Hibernate e JBoss Microcontainer"
+
+#. Tag: para
+#: Configuration.xml:349
+#, no-c-format
+msgid ""
+"The built-in Seam component named <literal>org.jboss.seam.core."
+"microcontainer</literal> bootstraps the microcontainer. As before, we "
+"probably want to use a Seam managed session."
+msgstr ""
+"O nomeado componente Seam interno <literal>org.jboss.seam.core."
+"microcontainer</literal> inicia o microcontainer. Como visto anteriormente, nós provavelmente queremos utilizar uma sessão gerenciada Seam."
+
+#. Tag: programlisting
+#: Configuration.xml:352
+#, no-c-format
+msgid ""
+"&lt;core:microcontainer/&gt;\n"
+"\n"
+"&lt;core:managed-hibernate-session name=\"bookingDatabase\" auto-create="
+"\"true\"\n"
+"    session-factory-jndi-name=\"java:/bookingSessionFactory\"/&gt;"
+msgstr ""
+"&lt;core:microcontainer/&gt;\n"
+"\n"
+"&lt;core:managed-hibernate-session name=\"bookingDatabase\" auto-create="
+"\"true\"\n"
+"    session-factory-jndi-name=\"java:/bookingSessionFactory\"/&gt;"
+
+#. Tag: para
+#: Configuration.xml:353
+#, no-c-format
+msgid ""
+"Where <literal>java:/bookingSessionFactory</literal> is the name of the "
+"Hibernate session factory specified in <literal>hibernate.cfg.xml</literal>."
+msgstr "Onde <literal>java:/bookingSessionFactory</literal> é o nome da especificada factory de sessão Hibernate em <literal>hibernate.cfg.xml</literal>. "
+
+#. Tag: para
+#: Configuration.xml:356
+#, no-c-format
+msgid ""
+"You&#39;ll need to provide a <literal>jboss-beans.xml</literal> file that "
+"installs JNDI, JTA, your JCA datasource and Hibernate into the "
+"microcontainer:"
+msgstr "Você precisará fornecer um arquivo <literal>jboss-beans.xml</literal> que instala JNDI, JTA, seu banco de dados JCA e Hibernate no microcontainer:"
+
+#. Tag: programlisting
+#: Configuration.xml:359
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"\n"
+"&lt;deployment xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"urn:jboss:bean-deployer bean-deployer_1_0."
+"xsd\"\n"
+"            xmlns=\"urn:jboss:bean-deployer\"&gt;\n"
+"\n"
+"   &lt;bean name=\"Naming\" class=\"org.jnp.server.SingletonNamingServer\"/"
+"&gt;\n"
+"\n"
+"   &lt;bean name=\"TransactionManagerFactory\" \n"
+"      class=\"org.jboss.seam.microcontainer.TransactionManagerFactory\"/"
+"&gt;\n"
+"   &lt;bean name=\"TransactionManager\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getTransactionManager\"&gt;\n"
+"         &lt;factory bean=\"TransactionManagerFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasourceFactory\" class=\"org.jboss.seam."
+"microcontainer.DataSourceFactory\"&gt;\n"
+"      &lt;property name=\"driverClass\"&gt;org.hsqldb.jdbcDriver&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"connectionUrl\"&gt;jdbc:hsqldb:.&lt;/property&gt;\n"
+"      &lt;property name=\"userName\"&gt;sa&lt;/property&gt;\n"
+"      &lt;property name=\"jndiName\"&gt;java:/hibernateDatasource&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"minSize\"&gt;0&lt;/property&gt;\n"
+"      &lt;property name=\"maxSize\"&gt;10&lt;/property&gt;\n"
+"      &lt;property name=\"blockingTimeout\"&gt;1000&lt;/property&gt;\n"
+"      &lt;property name=\"idleTimeout\"&gt;100000&lt;/property&gt;\n"
+"      &lt;property name=\"transactionManager\"&gt;&lt;inject bean="
+"\"TransactionManager\"/&gt;&lt;/property&gt;\n"
+"   &lt;/bean&gt;\n"
+"   &lt;bean name=\"bookingDatasource\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getDataSource\"&gt;\n"
+"         &lt;factory bean=\"bookingDatasourceFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingSessionFactoryFactory\" \n"
+"      class=\"org.jboss.seam.microcontainer.HibernateFactory\"/&gt;\n"
+"   &lt;bean name=\"bookingSessionFactory\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getSessionFactory\"&gt;\n"
+"         &lt;factory bean=\"bookingSessionFactoryFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"      &lt;depends&gt;bookingDatasource&lt;/depends&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"&lt;/deployment&gt;"
+msgstr ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"\n"
+"&lt;deployment xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"urn:jboss:bean-deployer bean-deployer_1_0."
+"xsd\"\n"
+"            xmlns=\"urn:jboss:bean-deployer\"&gt;\n"
+"\n"
+"   &lt;bean name=\"Naming\" class=\"org.jnp.server.SingletonNamingServer\"/"
+"&gt;\n"
+"\n"
+"   &lt;bean name=\"TransactionManagerFactory\" \n"
+"      class=\"org.jboss.seam.microcontainer.TransactionManagerFactory\"/"
+"&gt;\n"
+"   &lt;bean name=\"TransactionManager\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getTransactionManager\"&gt;\n"
+"         &lt;factory bean=\"TransactionManagerFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasourceFactory\" class=\"org.jboss.seam."
+"microcontainer.DataSourceFactory\"&gt;\n"
+"      &lt;property name=\"driverClass\"&gt;org.hsqldb.jdbcDriver&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"connectionUrl\"&gt;jdbc:hsqldb:.&lt;/property&gt;\n"
+"      &lt;property name=\"userName\"&gt;sa&lt;/property&gt;\n"
+"      &lt;property name=\"jndiName\"&gt;java:/hibernateDatasource&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"minSize\"&gt;0&lt;/property&gt;\n"
+"      &lt;property name=\"maxSize\"&gt;10&lt;/property&gt;\n"
+"      &lt;property name=\"blockingTimeout\"&gt;1000&lt;/property&gt;\n"
+"      &lt;property name=\"idleTimeout\"&gt;100000&lt;/property&gt;\n"
+"      &lt;property name=\"transactionManager\"&gt;&lt;inject bean="
+"\"TransactionManager\"/&gt;&lt;/property&gt;\n"
+"   &lt;/bean&gt;\n"
+"   &lt;bean name=\"bookingDatasource\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getDataSource\"&gt;\n"
+"         &lt;factory bean=\"bookingDatasourceFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingSessionFactoryFactory\" \n"
+"      class=\"org.jboss.seam.microcontainer.HibernateFactory\"/&gt;\n"
+"   &lt;bean name=\"bookingSessionFactory\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getSessionFactory\"&gt;\n"
+"         &lt;factory bean=\"bookingSessionFactoryFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"      &lt;depends&gt;bookingDatasource&lt;/depends&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"&lt;/deployment&gt;"
+
+#. Tag: para
+#: Configuration.xml:361
+#, no-c-format
+msgid "The WAR could have the following structure:"
+msgstr "O WAR poderia ter a seguinte estrutura:"
+
+#. Tag: programlisting
+#: Configuration.xml:364
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            hibernate3.jar\n"
+"            ...\n"
+"            jboss-microcontainer.jar\n"
+"            jboss-jca.jar\n"
+"            ...\n"
+"            myfaces-api.jar\n"
+"            myfaces-impl.jar\n"
+"            mc-conf.jar/\n"
+"                jndi.properties\n"
+"                log4j.xml\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                    MANIFEST.MF\n"
+"                    jboss-beans.xml\n"
+"                seam.properties\n"
+"                hibernate.cfg.xml\n"
+"                log4j.xml\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            Register.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            hibernate3.jar\n"
+"            ...\n"
+"            jboss-microcontainer.jar\n"
+"            jboss-jca.jar\n"
+"            ...\n"
+"            myfaces-api.jar\n"
+"            myfaces-impl.jar\n"
+"            mc-conf.jar/\n"
+"                jndi.properties\n"
+"                log4j.xml\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                    MANIFEST.MF\n"
+"                    jboss-beans.xml\n"
+"                seam.properties\n"
+"                hibernate.cfg.xml\n"
+"                log4j.xml\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            Register.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+
+#. Tag: title
+#: Configuration.xml:365
+#, no-c-format
+msgid "Configuring jBPM in Seam"
+msgstr "Configuração JBPM em Seam"
+
+#. Tag: para
+#: Configuration.xml:366
+#, no-c-format
+msgid ""
+"Seam&#39;s jBPM integration is not installed by default, so you&#39;ll need "
+"to enable jBPM by installing a built-in component. You&#39;ll also need to "
+"explicitly list your process and pageflow definitions. In "
+"<literal>components.xml</literal>:"
+msgstr "A integração JBPM em Seam não é instalada pelo padrão, então você precisará capacitar o JBPM instalando um componente interno. Você precisará listar explicitamente seus processos e definições de pageflow. Em <literal>components.xml</literal>:"
+
+#. Tag: programlisting
+#: Configuration.xml:369
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:pageflow-definitions&gt;\n"
+"        &lt;value&gt;createDocument.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;editDocument.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;approveDocument.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:pageflow-definitions&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;documentLifecycle.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:pageflow-definitions&gt;\n"
+"        &lt;value&gt;createDocument.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;editDocument.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;approveDocument.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:pageflow-definitions&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;documentLifecycle.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+
+#. Tag: para
+#: Configuration.xml:370
+#, no-c-format
+msgid ""
+"No further special configuration is needed if you only have pageflows. If "
+"you do have business process definitions, you need to provide a jBPM "
+"configuration, and a Hibernate configuration for jBPM. The Seam DVD Store "
+"demo includes example <literal>jbpm.cfg.xml</literal> and <literal>hibernate."
+"cfg.xml</literal> files that will work with Seam:"
+msgstr ""
+"Não há necessidade de futuras configurações especiais caso você apenas tenha pageflows. Caso você tenha definições de processos comerciais, você precisará fornecer uma configuração JBPM e uma configuração Hibernate para JBPM. O Seam DVD Store "
+"demo inclui amostras de arquivos <literal>jbpm.cfg.xml</literal> and <literal>hibernate."
+"cfg.xml</literal> dos quais irão trabalhar com Seam: "
+
+#. Tag: programlisting
+#: Configuration.xml:373
+#, no-c-format
+msgid ""
+"&lt;jbpm-configuration&gt;\n"
+"\n"
+"  &lt;jbpm-context&gt;\n"
+"    &lt;service name=\"persistence\"&gt;\n"
+"       &lt;factory&gt;\n"
+"          &lt;bean class=\"org.jbpm.persistence.db."
+"DbPersistenceServiceFactory\"&gt;\n"
+"             &lt;field name=\"isTransactionEnabled\"&gt;&lt;false/&gt;&lt;/"
+"field&gt;\n"
+"          &lt;/bean&gt;\n"
+"       &lt;/factory&gt;\n"
+"    &lt;/service&gt;\n"
+"    &lt;service name=\"message\" factory=\"org.jbpm.msg.db."
+"DbMessageServiceFactory\" /&gt;\n"
+"    &lt;service name=\"scheduler\" factory=\"org.jbpm.scheduler.db."
+"DbSchedulerServiceFactory\" /&gt;\n"
+"    &lt;service name=\"logging\" factory=\"org.jbpm.logging.db."
+"DbLoggingServiceFactory\" /&gt;\n"
+"    &lt;service name=\"authentication\" \n"
+"       factory=\"org.jbpm.security.authentication."
+"DefaultAuthenticationServiceFactory\" /&gt;\n"
+"  &lt;/jbpm-context&gt;\n"
+"\n"
+"&lt;/jbpm-configuration&gt;"
+msgstr ""
+"&lt;jbpm-configuration&gt;\n"
+"\n"
+"  &lt;jbpm-context&gt;\n"
+"    &lt;service name=\"persistence\"&gt;\n"
+"       &lt;factory&gt;\n"
+"          &lt;bean class=\"org.jbpm.persistence.db."
+"DbPersistenceServiceFactory\"&gt;\n"
+"             &lt;field name=\"isTransactionEnabled\"&gt;&lt;false/&gt;&lt;/"
+"field&gt;\n"
+"          &lt;/bean&gt;\n"
+"       &lt;/factory&gt;\n"
+"    &lt;/service&gt;\n"
+"    &lt;service name=\"message\" factory=\"org.jbpm.msg.db."
+"DbMessageServiceFactory\" /&gt;\n"
+"    &lt;service name=\"scheduler\" factory=\"org.jbpm.scheduler.db."
+"DbSchedulerServiceFactory\" /&gt;\n"
+"    &lt;service name=\"logging\" factory=\"org.jbpm.logging.db."
+"DbLoggingServiceFactory\" /&gt;\n"
+"    &lt;service name=\"authentication\" \n"
+"       factory=\"org.jbpm.security.authentication."
+"DefaultAuthenticationServiceFactory\" /&gt;\n"
+"  &lt;/jbpm-context&gt;\n"
+"\n"
+"&lt;/jbpm-configuration&gt;"
+
+#. Tag: para
+#: Configuration.xml:374
+#, no-c-format
+msgid ""
+"The most important thing to notice here is that jBPM transaction control is "
+"disabled. Seam or EJB3 should control the JTA transactions."
+msgstr "O mais importante é notificar que este controle de transação JBPM é implementada. O Seam ou EJB3 deveriam controlar as transações JTA. "
+
+#. Tag: para
+#: Configuration.xml:378
+#, no-c-format
+msgid ""
+"There is not yet any well-defined packaging format for jBPM configuration "
+"and process/pageflow definition files. In the Seam examples we&#39;ve "
+"decided to simply package all these files into the root of the EAR. In "
+"future, we will probably design some other standard packaging format. So the "
+"EAR looks something like this:"
+msgstr "Não há ainda um formato de empacotamento bem definido pela configuração JBPM e arquivos de definição de processo/pageflow. Nestas amostras de Seam, decidimos simplesmente empacotar todos estes arquivos na raiz do EAR. Futuramente, provavelmente desenvolveremos outros formatos de empacotamento padrão. Desta forma o EAR parecer-á com isto: "
+
+#. Tag: programlisting
+#: Configuration.xml:381
+#, no-c-format
+msgid ""
+"my-application.ear/\n"
+"    jboss-seam.jar\n"
+"    el-api.jar\n"
+"    el-ri.jar\n"
+"    jbpm-3.1.jar\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"        application.xml\n"
+"    my-application.war/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"        WEB-INF/\n"
+"            web.xml\n"
+"            components.xml\n"
+"            faces-config.xml\n"
+"            lib/\n"
+"                jsf-facelets.jar\n"
+"                jboss-seam-ui.jar\n"
+"        login.jsp\n"
+"        register.jsp\n"
+"        ...\n"
+"    my-application.jar/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"            persistence.xml\n"
+"        seam.properties\n"
+"        org/\n"
+"            jboss/\n"
+"                myapplication/\n"
+"                    User.class\n"
+"                    Login.class\n"
+"                    LoginBean.class\n"
+"                    Register.class\n"
+"                    RegisterBean.class\n"
+"                    ...\n"
+"    jbpm.cfg.xml\n"
+"    hibernate.cfg.xml\n"
+"    createDocument.jpdl.xml\n"
+"    editDocument.jpdl.xml\n"
+"    approveDocument.jpdl.xml\n"
+"    documentLifecycle.jpdl.xml"
+msgstr ""
+"my-application.ear/\n"
+"    jboss-seam.jar\n"
+"    el-api.jar\n"
+"    el-ri.jar\n"
+"    jbpm-3.1.jar\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"        application.xml\n"
+"    my-application.war/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"        WEB-INF/\n"
+"            web.xml\n"
+"            components.xml\n"
+"            faces-config.xml\n"
+"            lib/\n"
+"                jsf-facelets.jar\n"
+"                jboss-seam-ui.jar\n"
+"        login.jsp\n"
+"        register.jsp\n"
+"        ...\n"
+"    my-application.jar/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"            persistence.xml\n"
+"        seam.properties\n"
+"        org/\n"
+"            jboss/\n"
+"                myapplication/\n"
+"                    User.class\n"
+"                    Login.class\n"
+"                    LoginBean.class\n"
+"                    Register.class\n"
+"                    RegisterBean.class\n"
+"                    ...\n"
+"    jbpm.cfg.xml\n"
+"    hibernate.cfg.xml\n"
+"    createDocument.jpdl.xml\n"
+"    editDocument.jpdl.xml\n"
+"    approveDocument.jpdl.xml\n"
+"    documentLifecycle.jpdl.xml"
+
+#. Tag: para
+#: Configuration.xml:382
+#, no-c-format
+msgid ""
+"Remember to add <literal>jbpm-3.1.jar</literal> to the manifest of your EJB-"
+"JAR and WAR."
+msgstr ""
+"Lembre-se de adicionar <literal>jbpm-3.1.jar</literal> ao manifesto de seu EJB-"
+"JAR e WAR."
+
+#. Tag: title
+#: Configuration.xml:385
+#, no-c-format
+msgid "Configuring Seam in a Portal"
+msgstr "Configuração Seam num Portal"
+
+#. Tag: para
+#: Configuration.xml:386
+#, no-c-format
+msgid ""
+"To run a Seam application as a portlet, you&#39;ll need to provide certain "
+"portlet metadata (<literal>portlet.xml</literal>, etc) in addition to the "
+"usual Java EE metadata. See the <literal>examples/portal</literal> directory "
+"for an example of the booking demo preconfigured to run on JBoss Portal."
+msgstr ""
+"Para rodar um aplicativo como um portlet, você precisará fornecer um certo banco de dados portlet "
+"(<literal>portlet.xml</literal>, etc) em conjunto com o usual banco de dados Java EE. Consulte o diretório <literal>examples/portal</literal> para uma amostra de reserva demo preconfigured para rodar no Portal JBoss."
+
+#. Tag: para
+#: Configuration.xml:389
+#, no-c-format
+msgid ""
+"In addition, you&#39;ll need to use a portlet-specific phase listener "
+"instead of <literal>SeamPhaseListener</literal> or "
+"<literal>TransactionalSeamPhaseListener</literal>. The "
+"<literal>SeamPortletPhaseListener</literal> and "
+"<literal>TransactionalSeamPortletPhaseListener</literal> are adapted to the "
+"portlet lifecycle. I would like to offer my sincerest apologies for the name "
+"of that last class. I really couldn&#39;t think of anything better. Sorry."
+msgstr ""
+"Além disso, vocêr precisará usar um portlet-specific phase listener ao invés de <literal>SeamPhaseListener</literal> ou <literal>TransactionalSeamPhaseListener</literal>. O "
+"<literal>SeamPortletPhaseListener</literal> e <literal>TransactionalSeamPortletPhaseListener</literal> são adaptados ao ciclo de vida portlet."
+
+#. Tag: title
+#: Configuration.xml:392
+#, no-c-format
+msgid "Configuring SFSB and Session Timeouts in JBoss AS"
+msgstr "Configuração SFSB e Sessão de Tempo de Espera no JBoss AS"
+
+#. Tag: para
+#: Configuration.xml:393
+#, no-c-format
+msgid ""
+"It is very important that the timeout for Stateful Session Beans is set "
+"higher than the timeout for HTTP Sessions, otherwise SFSB&#39;s may time out "
+"before the user&#39;s HTTP session has ended. JBoss Application Server has a "
+"default session bean timeout of 30 minutes, which is configured in "
+"<literal>server/default/conf/standardjboss.xml</literal> (replace "
+"<emphasis>default</emphasis> with your own configuration)."
+msgstr ""
+"É muito importante que o intervalo para dos Beans de Sessão de Espera seja configurado com maior intervalo que as Sessões HTTP, senão o SFSB poderá encerrar a sessão antes que a sessão HTTP do usuário tenha terminado. O Servidor de Aplicativo JBoss possui um padrão de intervalo de 30 minutos, do qual é configurado em <literal>server/default/conf/standardjboss.xml</literal> (substituindo o "
+"<emphasis>padrão</emphasis> com sua própria configuração). "
+
+#. Tag: para
+#: Configuration.xml:396
+#, no-c-format
+msgid ""
+"The default SFSB timeout can be adjusted by modifying the value of "
+"<literal>max-bean-life</literal> in the "
+"<literal>LRUStatefulContextCachePolicy</literal> cache configuration:"
+msgstr "O padrão de intervalo do SFSB pode ser ajustado modificando o valor do <literal>max-bean-life</literal> na configuração do cache <literal>LRUStatefulContextCachePolicy</literal>:"
+
+#. Tag: programlisting
+#: Configuration.xml:399
+#, no-c-format
+msgid ""
+"&lt;container-cache-conf&gt;\n"
+"        &lt;cache-policy&gt;org.jboss.ejb.plugins."
+"LRUStatefulContextCachePolicy&lt;/cache-policy&gt;\n"
+"        &lt;cache-policy-conf&gt;\n"
+"          &lt;min-capacity&gt;50&lt;/min-capacity&gt;\n"
+"          &lt;max-capacity&gt;1000000&lt;/max-capacity&gt;\n"
+"          &lt;remover-period&gt;1800&lt;/remover-period&gt;\n"
+"\n"
+"          &lt;!-- SFSB timeout in seconds; 1800 seconds == 30 minutes --"
+"&gt;\n"
+"          &lt;max-bean-life&gt;1800&lt;/max-bean-life&gt;  \n"
+"          \n"
+"          &lt;overager-period&gt;300&lt;/overager-period&gt;\n"
+"          &lt;max-bean-age&gt;600&lt;/max-bean-age&gt;\n"
+"          &lt;resizer-period&gt;400&lt;/resizer-period&gt;\n"
+"          &lt;max-cache-miss-period&gt;60&lt;/max-cache-miss-period&gt;\n"
+"          &lt;min-cache-miss-period&gt;1&lt;/min-cache-miss-period&gt;\n"
+"          &lt;cache-load-factor&gt;0.75&lt;/cache-load-factor&gt;\n"
+"        &lt;/cache-policy-conf&gt;\n"
+"      &lt;/container-cache-conf&gt;"
+msgstr ""
+"&lt;container-cache-conf&gt;\n"
+"        &lt;cache-policy&gt;org.jboss.ejb.plugins."
+"LRUStatefulContextCachePolicy&lt;/cache-policy&gt;\n"
+"        &lt;cache-policy-conf&gt;\n"
+"          &lt;min-capacity&gt;50&lt;/min-capacity&gt;\n"
+"          &lt;max-capacity&gt;1000000&lt;/max-capacity&gt;\n"
+"          &lt;remover-period&gt;1800&lt;/remover-period&gt;\n"
+"\n"
+"          &lt;!-- SFSB timeout in seconds; 1800 seconds == 30 minutes --"
+"&gt;\n"
+"          &lt;max-bean-life&gt;1800&lt;/max-bean-life&gt;  \n"
+"          \n"
+"          &lt;overager-period&gt;300&lt;/overager-period&gt;\n"
+"          &lt;max-bean-age&gt;600&lt;/max-bean-age&gt;\n"
+"          &lt;resizer-period&gt;400&lt;/resizer-period&gt;\n"
+"          &lt;max-cache-miss-period&gt;60&lt;/max-cache-miss-period&gt;\n"
+"          &lt;min-cache-miss-period&gt;1&lt;/min-cache-miss-period&gt;\n"
+"          &lt;cache-load-factor&gt;0.75&lt;/cache-load-factor&gt;\n"
+"        &lt;/cache-policy-conf&gt;\n"
+"      &lt;/container-cache-conf&gt;"
+
+#. Tag: para
+#: Configuration.xml:400
+#, no-c-format
+msgid ""
+"The default HTTP session timeout can be modified in <literal>server/default/"
+"deploy/jbossweb-tomcat55.sar/conf/web.xml</literal> for JBoss 4.0.x, or in "
+"<literal>server/default/deploy/jboss-web.deployer/conf/web.xml</literal> for "
+"JBoss 4.2.x. The following entry in this file controls the default session "
+"timeout for all web applications:"
+msgstr ""
+"O padrão de intervalo da sessão HTTP pode ser modificado em <literal>server/default/"
+"deploy/jbossweb-tomcat55.sar/conf/web.xml</literal> para o JBoss 4.0.x, ou no "
+"<literal>server/default/deploy/jboss-web.deployer/conf/web.xml</literal> "
+"para o JBoss 4.2.x. A seguinte entrada neste arquivo controla o padrão da sessão de intervalo de todos os aplicativos da web:"
+
+#. Tag: programlisting
+#: Configuration.xml:403
+#, no-c-format
+msgid ""
+"&lt;session-config&gt;\n"
+"      &lt;!-- HTTP Session timeout, in minutes --&gt;\n"
+"      &lt;session-timeout&gt;30&lt;/session-timeout&gt;\n"
+"   &lt;/session-config&gt;"
+msgstr ""
+"&lt;session-config&gt;\n"
+"      &lt;!-- HTTP Session timeout, in minutes --&gt;\n"
+"      &lt;session-timeout&gt;30&lt;/session-timeout&gt;\n"
+"   &lt;/session-config&gt;"
+
+#. Tag: para
+#: Configuration.xml:404
+#, no-c-format
+msgid ""
+"To override this value for your own application, simply include this entry "
+"in your application&#39;s own <literal>web.xml</literal>."
+msgstr "Para substituir este valor em seu próprio aplicativo, apenas inclua esta entrada em seu próprio aplicativo <literal>web.xml</literal>."
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Controls.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Controls.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Controls.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1330 @@
+# translation of Controls.po to Brazilian Portuguese
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Leticia de Lima <ldelima at redhat.com>, 2008.
+# Xi HUANG <xhuang at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Controls\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2008-05-21 08:59+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team: Chinese Simplified <kde-i18n-doc at lists.kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KAider 0.1\n"
+"Plural-Forms:  JBEAP420 \n"
+
+#. Tag: title
+#: Controls.xml:6
+#, no-c-format
+msgid "Seam JSF controls"
+msgstr "Controles JSF Seam"
+
+#. Tag: para
+#: Controls.xml:7
+#, no-c-format
+msgid ""
+"Seam includes a number of JSF controls that are useful for working with "
+"Seam. These are intended to complement the built-in JSF controls, and "
+"controls from other third-party libraries. We recommend the Ajax4JSF and ADF "
+"faces (now Trinidad) tag libraries for use with Seam. We do not recommend "
+"the use of the Tomahawk tag library."
+msgstr "O Seam inclui inúmeros de controles JSF, dos quais são úteis para se trabalhar com Seam. Estes pretendem complementar os controles internos JSF, e controles de outras bibliotecas externas. Recomendamos as bibliotecas de caracteres de faces Ajax4JSF e ADF (agora Trindad) para uso do Seam. Não recomendamos a biblioteca de caracteres Tomahawk."
+
+#. Tag: para
+#: Controls.xml:10
+#, no-c-format
+msgid ""
+"To use these controls, define the \"<literal>s</literal>\" namespace in your "
+"page as follows (facelets only):"
+msgstr "Para uso destes controles, defina o nome do espaço \"<literal>s</literal>\" em sua página como segue a seguir (apenas facelets):"
+
+#. Tag: programlisting
+#: Controls.xml:13
+#, no-c-format
+msgid ""
+"&lt;html xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"      xmlns:s=\"http://jboss.com/products/seam/taglib\"&gt;"
+msgstr ""
+"&lt;html xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"      xmlns:s=\"http://jboss.com/products/seam/taglib\"&gt;"
+
+#. Tag: para
+#: Controls.xml:14
+#, no-c-format
+msgid "The ui example demonstrates the use of a number of these tags."
+msgstr "A amostra ui demonstra o uso de um número destes caracteres."
+
+#. Tag: title
+#: Controls.xml:18
+#, no-c-format
+msgid "Seam JSF Control Reference"
+msgstr "Referência de Controle JSF Seam"
+
+#. Tag: literal
+#: Controls.xml:26
+#, no-c-format
+msgid "&lt;s:validate&gt;"
+msgstr "&lt;s:validate&gt;"
+
+#. Tag: emphasis
+#: Controls.xml:31 Controls.xml:56 Controls.xml:81 Controls.xml:121
+#: Controls.xml:146 Controls.xml:171 Controls.xml:203 Controls.xml:239
+#: Controls.xml:295 Controls.xml:396 Controls.xml:423 Controls.xml:477
+#: Controls.xml:504 Controls.xml:531 Controls.xml:558 Controls.xml:585
+#: Controls.xml:626 Controls.xml:687 Controls.xml:748 Controls.xml:901
+#: Controls.xml:937 Controls.xml:964 Controls.xml:991
+#, no-c-format
+msgid "Description"
+msgstr "Descrição"
+
+#. Tag: para
+#: Controls.xml:33
+#, no-c-format
+msgid ""
+"A non-visual control, validates a JSF input field against the bound property "
+"using Hibernate Validator."
+msgstr "Um controle não visual, valida um campo de entrada JSF de acordo com a propriedade vinculada usando o Validador Hibernate."
+
+#. Tag: emphasis
+#: Controls.xml:37 Controls.xml:62 Controls.xml:87 Controls.xml:127
+#: Controls.xml:152 Controls.xml:180 Controls.xml:209 Controls.xml:245
+#: Controls.xml:304 Controls.xml:402 Controls.xml:448 Controls.xml:483
+#: Controls.xml:510 Controls.xml:537 Controls.xml:564 Controls.xml:591
+#: Controls.xml:632 Controls.xml:693 Controls.xml:754 Controls.xml:907
+#: Controls.xml:943 Controls.xml:970 Controls.xml:1024
+#, no-c-format
+msgid "Attributes"
+msgstr "Atributos"
+
+#. Tag: para
+#: Controls.xml:39 Controls.xml:64 Controls.xml:129 Controls.xml:154
+#: Controls.xml:182 Controls.xml:404 Controls.xml:450 Controls.xml:485
+#: Controls.xml:512 Controls.xml:539 Controls.xml:566 Controls.xml:945
+#: Controls.xml:972
+#, no-c-format
+msgid "None."
+msgstr "None."
+
+#. Tag: emphasis
+#: Controls.xml:43 Controls.xml:68 Controls.xml:97 Controls.xml:133
+#: Controls.xml:158 Controls.xml:190 Controls.xml:224 Controls.xml:280
+#: Controls.xml:381 Controls.xml:408 Controls.xml:454 Controls.xml:489
+#: Controls.xml:516 Controls.xml:543 Controls.xml:570 Controls.xml:611
+#: Controls.xml:672 Controls.xml:733 Controls.xml:779 Controls.xml:922
+#: Controls.xml:949 Controls.xml:976 Controls.xml:1059
+#, no-c-format
+msgid "Usage"
+msgstr "Uso"
+
+#. Tag: programlisting
+#: Controls.xml:45
+#, no-c-format
+msgid ""
+"&lt;h:inputText id=\"userName\" required=\"true\" value=\"#{customer."
+"userName}\"&gt;\n"
+"  &lt;s:validate /&gt;\n"
+"&lt;/h:inputText&gt;\n"
+"&lt;h:message for=\"userName\" styleClass=\"error\" /&gt;"
+msgstr ""
+"&lt;h:inputText id=\"userName\" required=\"true\" value=\"#{customer."
+"userName}\"&gt;\n"
+"  &lt;s:validate /&gt;\n"
+"&lt;/h:inputText&gt;\n"
+"&lt;h:message for=\"userName\" styleClass=\"error\" /&gt;"
+
+#. Tag: literal
+#: Controls.xml:51
+#, no-c-format
+msgid "&lt;s:validateAll&gt;"
+msgstr "&lt;s:validateAll&gt;"
+
+#. Tag: para
+#: Controls.xml:58
+#, no-c-format
+msgid ""
+"A non-visual control, validates all child JSF input fields against their "
+"bound properties using Hibernate Validator."
+msgstr "Um controle não visual valida todos os campos de entrada JSF filho de acordo com as propriedades vinculadas usando o Validador Hibernate."
+
+#. Tag: programlisting
+#: Controls.xml:70
+#, no-c-format
+msgid ""
+"&lt;s:validateAll&gt;\n"
+"  &lt;div class=\"entry\"&gt;\n"
+"    &lt;h:outputLabel for=\"username\"&gt;Username:&lt;/h:outputLabel&gt;\n"
+"    &lt;h:inputText id=\"username\" value=\"#{user.username}\" required="
+"\"true\"/&gt;\n"
+"    &lt;h:message for=\"username\" styleClass=\"error\" /&gt;\n"
+"  &lt;/div&gt;\n"
+"  &lt;div class=\"entry\"&gt;\n"
+"    &lt;h:outputLabel for=\"password\"&gt;Password:&lt;/h:outputLabel&gt;\n"
+"    &lt;h:inputSecret id=\"password\" value=\"#{user.password}\" required="
+"\"true\"/&gt;\n"
+"    &lt;h:message for=\"password\" styleClass=\"error\" /&gt;\n"
+"  &lt;/div&gt;\n"
+"  &lt;div class=\"entry\"&gt;\n"
+"    &lt;h:outputLabel for=\"verify\"&gt;Verify Password:&lt;/h:"
+"outputLabel&gt;\n"
+"    &lt;h:inputSecret id=\"verify\" value=\"#{register.verify}\" required="
+"\"true\"/&gt;\n"
+"    &lt;h:message for=\"verify\" styleClass=\"error\" /&gt;\n"
+"  &lt;/div&gt;\n"
+"&lt;/s:validateAll&gt;"
+msgstr ""
+"&lt;s:validateAll&gt;\n"
+"  &lt;div class=\"entry\"&gt;\n"
+"    &lt;h:outputLabel for=\"username\"&gt;Username:&lt;/h:outputLabel&gt;\n"
+"    &lt;h:inputText id=\"username\" value=\"#{user.username}\" required="
+"\"true\"/&gt;\n"
+"    &lt;h:message for=\"username\" styleClass=\"error\" /&gt;\n"
+"  &lt;/div&gt;\n"
+"  &lt;div class=\"entry\"&gt;\n"
+"    &lt;h:outputLabel for=\"password\"&gt;Password:&lt;/h:outputLabel&gt;\n"
+"    &lt;h:inputSecret id=\"password\" value=\"#{user.password}\" required="
+"\"true\"/&gt;\n"
+"    &lt;h:message for=\"password\" styleClass=\"error\" /&gt;\n"
+"  &lt;/div&gt;\n"
+"  &lt;div class=\"entry\"&gt;\n"
+"    &lt;h:outputLabel for=\"verify\"&gt;Verify Password:&lt;/h:"
+"outputLabel&gt;\n"
+"    &lt;h:inputSecret id=\"verify\" value=\"#{register.verify}\" required="
+"\"true\"/&gt;\n"
+"    &lt;h:message for=\"verify\" styleClass=\"error\" /&gt;\n"
+"  &lt;/div&gt;\n"
+"&lt;/s:validateAll&gt;"
+
+#. Tag: literal
+#: Controls.xml:76
+#, no-c-format
+msgid "&lt;s:formattedText&gt;"
+msgstr "&lt;s:formattedText&gt;"
+
+#. Tag: para
+#: Controls.xml:83
+#, no-c-format
+msgid ""
+"Outputs <emphasis>Seam Text</emphasis>, a rich text markup useful for blogs, "
+"wikis and other applications that might use rich text. See the Seam Text "
+"chapter for full usage."
+msgstr "Emite o <emphasis>Texto Seam</emphasis>, uma marcação rich text muito útil para blogs, wikis e outros aplicativos que usam um rich text. Consulte o capítulo de Texto Seam do uso completo."
+
+#. Tag: para
+#: Controls.xml:91
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; an EL expression specifying the rich text "
+"markup to render."
+msgstr "<literal>valor</literal> &mdash; expressão EL especificando a marcação rich text a ser processada. "
+
+#. Tag: programlisting
+#: Controls.xml:99
+#, no-c-format
+msgid "&lt;s:formattedText value=\"#{blog.text}\"/&gt;"
+msgstr "&lt;s:formattedText value=\"#{blog.text}\"/&gt;"
+
+#. Tag: emphasis
+#: Controls.xml:101 Controls.xml:785
+#, no-c-format
+msgid "Example"
+msgstr "Amostra "
+
+#. Tag: literal
+#: Controls.xml:116
+#, no-c-format
+msgid "&lt;s:convertDateTime&gt;"
+msgstr "&lt;s:convertDateTime&gt;"
+
+#. Tag: para
+#: Controls.xml:123
+#, no-c-format
+msgid "Perform date or time conversions in the Seam timezone."
+msgstr "Data de execução ou conversação de tempo no tempo de zona Seam."
+
+#. Tag: literal
+#: Controls.xml:141
+#, no-c-format
+msgid "&lt;s:convertEnum&gt;"
+msgstr "&lt;s:convertEnum&gt;"
+
+#. Tag: para
+#: Controls.xml:148
+#, no-c-format
+msgid ""
+"Assigns an enum converter to the current component. This is primarily useful "
+"for radio button and dropdown controls."
+msgstr "Determina um convertor enum para o componente atual. Ele é primeiramente utilizado para o botão rádio e controles suspensos."
+
+#. Tag: literal
+#: Controls.xml:166
+#, no-c-format
+msgid "&lt;s:convertEntity&gt;"
+msgstr "&lt;s:convertEntity&gt;"
+
+#. Tag: para
+#: Controls.xml:173
+#, no-c-format
+msgid ""
+"Assigns an entity converter to the current component. This is primarily "
+"useful for radio button and dropdown controls."
+msgstr "Determina um convertor de entidade ao componente atual. Ele é primeiramente utilizado para o botão rádio e controles suspensos."
+
+#. Tag: para
+#: Controls.xml:176
+#, no-c-format
+msgid ""
+"The converter works with any entity which has an <literal>@Id</literal> "
+"annotation - either simple or composite. If your <emphasis>Managed "
+"Persistence Context</emphasis> isn&#39;t called <literal>entityManager</"
+"literal>, then you need to set it in components.xml:"
+msgstr ""
+"O convertor trabalha com qualquer entidade que possui uma anotação <literal>@Id</literal> - tanto simples como de composição. Caso seu <emphasis>Contexto de Persistência Gerenciado</emphasis> não seja chamado <literal>entityManager</"
+"literal>, então você precisará configurá-lo em components.xml:"
+
+#. Tag: emphasis
+#: Controls.xml:186 Controls.xml:1002
+#, no-c-format
+msgid "Configuration"
+msgstr "Configuração"
+
+#. Tag: programlisting
+#: Controls.xml:188
+#, no-c-format
+msgid ""
+"&lt;component name=\"org.jboss.seam.ui.entityConverter\"&gt;\n"
+"      &lt;property name=\"entityManager\"&gt;#{em}&lt;/property&gt;\n"
+"  &lt;/component&gt;"
+msgstr ""
+"&lt;component name=\"org.jboss.seam.ui.entityConverter\"&gt;\n"
+"      &lt;property name=\"entityManager\"&gt;#{em}&lt;/property&gt;\n"
+"  &lt;/component&gt;"
+
+#. Tag: programlisting
+#: Controls.xml:192
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{person.continent}\" required=\"true\"&gt;\n"
+"    &lt;s:selectItems value=\"#{continents.resultList}\" var=\"continent\" "
+"label=\"#{continent.name}\" noSelectionLabel=\"Please Select...\"/&gt;\n"
+"    &lt;s:convertEntity /&gt;\n"
+"&lt;/h:selectOneMenu&gt;"
+msgstr ""
+"&lt;h:selectOneMenu value=\"#{person.continent}\" required=\"true\"&gt;\n"
+"    &lt;s:selectItems value=\"#{continents.resultList}\" var=\"continent\" "
+"label=\"#{continent.name}\" noSelectionLabel=\"Please Select...\"/&gt;\n"
+"    &lt;s:convertEntity /&gt;\n"
+"&lt;/h:selectOneMenu&gt;"
+
+#. Tag: literal
+#: Controls.xml:198
+#, no-c-format
+msgid "&lt;s:enumItem&gt;"
+msgstr "&lt;s:enumItem&gt;"
+
+#. Tag: para
+#: Controls.xml:205
+#, no-c-format
+msgid "Creates a <literal>SelectItem</literal> from an enum value."
+msgstr "Cria um <literal>SelectItem</literal> a partir de um valor enum."
+
+#. Tag: para
+#: Controls.xml:213
+#, no-c-format
+msgid ""
+"<literal>enumValue</literal> &mdash; the string representation of the enum "
+"value."
+msgstr "<literal>enumValue</literal> &mdash; a representação de caracteres do valor enum."
+
+#. Tag: para
+#: Controls.xml:218
+#, no-c-format
+msgid ""
+"<literal>label</literal> &mdash; the label to be used when rendering the "
+"<literal>SelectItem</literal>."
+msgstr "<literal>label</literal> &mdash; a etiqueta a ser utilizada quando processando um <literal>SelectItem</literal>."
+
+#. Tag: literal
+#: Controls.xml:234
+#, no-c-format
+msgid "&lt;s:selectItems&gt;"
+msgstr "&lt;s:selectItems&gt;"
+
+#. Tag: para
+#: Controls.xml:241
+#, no-c-format
+msgid ""
+"Creates a <literal>List&lt;SelectItem&gt;</literal> from a List, Set, "
+"DataModel or Array."
+msgstr "Cria um <literal>List&lt;SelectItem&gt;</literal> a partir de uma Lista, Conjunto, DataModel ou Array."
+
+#. Tag: para
+#: Controls.xml:249
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; an EL expression specifying the data that "
+"backs the <literal>List&lt;SelectItem&gt;</literal>"
+msgstr "<literal>valor</literal> &mdash; uma expressão EL especificando os dados que retornam ao <literal>List&lt;SelectItem&gt;</literal>."
+
+#. Tag: para
+#: Controls.xml:254
+#, no-c-format
+msgid ""
+"<literal>var</literal> &mdash; defines the name of the local variable that "
+"holds the current object during iteration"
+msgstr "<literal>var</literal> &mdash; define o nome do local da variável que retém o objeto atual durante a interação"
+
+#. Tag: para
+#: Controls.xml:259
+#, no-c-format
+msgid ""
+"<literal>label</literal> &mdash; the label to be used when rendering the "
+"<literal>SelectItem</literal>. Can reference the <literal>var</literal> "
+"variable"
+msgstr "<literal>label</literal> &mdash; a etiqueta a ser utilizada quando processando o <literal>SelectItem</literal>. Pode referenciar a variável <literal>var</literal>"
+
+#. Tag: para
+#: Controls.xml:264
+#, no-c-format
+msgid ""
+"<literal>disabled</literal> &mdash; if true the <literal>SelectItem</"
+"literal> will be rendered disabled. Can reference the <literal>var</literal> "
+"variable"
+msgstr ""
+"<literal>disabled</literal> &mdash; caso seja verdadeiro o <literal>SelectItem</"
+"literal> este será processado como desativo. Pode referenciar a variável <literal>var</literal> "
+
+#. Tag: para
+#: Controls.xml:269
+#, no-c-format
+msgid ""
+"<literal>noSelectionLabel</literal> &mdash; specifies the (optional) label "
+"to place at the top of list (if <literal>required=\"true\"</literal> is also "
+"specified then selecting this value will cause a validation error)"
+msgstr "<literal>noSelectionLabel</literal> &mdash; especifica a etiqueta (opcional) a ser colocada no topo da lista (caso <literal>required=\"true\"</literal> for também especificado, então selecionando este valor irá causar um erro de validação)"
+
+#. Tag: para
+#: Controls.xml:274
+#, no-c-format
+msgid ""
+"<literal>hideNoSelectionLabel</literal> &mdash; if true, the "
+"<literal>noSelectionLabel</literal> will be hidden when a value is selected"
+msgstr "<literal>hideNoSelectionLabel</literal> &mdash; for verdadeiro, a <literal>noSelectionLabel</literal> será ocultada quando o valor for selecionado"
+
+#. Tag: programlisting
+#: Controls.xml:283
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{person.age}\"  converter=\"#{converters."
+"ageConverter}\"&gt;\n"
+"    &lt;s:selectItems value=\"#{ages}\" var=\"age\" label=\"#{age}\" /&gt;\n"
+"&lt;/h:selectOneMenu&gt;"
+msgstr ""
+"&lt;h:selectOneMenu value=\"#{person.age}\"  converter=\"#{converters."
+"ageConverter}\"&gt;\n"
+"    &lt;s:selectItems value=\"#{ages}\" var=\"age\" label=\"#{age}\" /&gt;\n"
+"&lt;/h:selectOneMenu&gt;"
+
+#. Tag: literal
+#: Controls.xml:290
+#, no-c-format
+msgid "&lt;s:graphicImage&gt;"
+msgstr "&lt;s:graphicImage&gt;"
+
+#. Tag: para
+#: Controls.xml:297
+#, no-c-format
+msgid ""
+"An extended <literal>&lt;h:graphicImage&gt;</literal> that allows the image "
+"to be created in a Seam Component; further transforms can be applied to the "
+"image. <emphasis>Facelets only.</emphasis>"
+msgstr "Um estendido <literal>&lt;h:graphicImage&gt;</literal> que permite uma imagem a ser criada num componente Seam. As transformações futuras podem ser aplicadas a esta imagem. <emphasis>Apenas Facelets.</emphasis>"
+
+#. Tag: para
+#: Controls.xml:300
+#, no-c-format
+msgid ""
+"All attributes for <literal>&lt;h:graphicImage&gt;</literal> are supported, "
+"as well as:"
+msgstr "Todos os atributos do <literal>&lt;h:graphicImage&gt;</literal> são suportados como também:"
+
+#. Tag: para
+#: Controls.xml:308
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; image to display. Can be a path "
+"<literal>String</literal> (loaded from the classpath), a <literal>byte[]</"
+"literal>, a <literal>java.io.File</literal>, a <literal>java.io.InputStream</"
+"literal> or a <literal>java.net.URL</literal>. Currently supported image "
+"formats are <literal>image/png</literal>, <literal>image/jpeg</literal> and "
+"<literal>image/gif</literal>."
+msgstr ""
+"<literal>value</literal> &mdash; mensagem a ser exibida. Pode ser uma path <literal>String</literal> (carregada de uma classpath), um <literal>byte[]</"
+"literal>, um <literal>java.io.File</literal>, um <literal>java.io.InputStream</"
+"literal> ou um <literal>java.net.URL</literal>. As formatações de imagem suportadas atualmente são <literal>image/png</literal>, <literal>image/jpeg</literal> e"
+"<literal>image/gif</literal>."
+
+#. Tag: para
+#: Controls.xml:313
+#, no-c-format
+msgid ""
+"<literal>fileName</literal> &mdash; if not specified the served image will "
+"have a generated file name. If you want to name your file, you should "
+"specify it here. This name should be unique"
+msgstr "<literal>fileName</literal> &mdash; a imagem servida terá um nome de arquivo gerado, caso não seja especificada. Caso queira nomear o seu arquivo, você deverá especificá-lo aqui. Este nome deve ser exclusivo."
+
+#. Tag: emphasis
+#: Controls.xml:319
+#, no-c-format
+msgid "Transformations"
+msgstr "Transformações"
+
+#. Tag: para
+#: Controls.xml:321
+#, no-c-format
+msgid ""
+"To apply a transform to the image, you would nest a tag specifying the "
+"transform to apply. Seam currently supports these transforms:"
+msgstr "Para aplicar uma transformação a uma imagem, você poderá aninhar um caracter especificando a transformação a ser aplicada. O Seam suporta atualmente estas transformações:"
+
+#. Tag: literal
+#: Controls.xml:326
+#, no-c-format
+msgid "&lt;s:transformImageSize&gt;"
+msgstr "&lt;s:transformImageSize&gt;"
+
+#. Tag: para
+#: Controls.xml:330
+#, no-c-format
+msgid "<literal>width</literal> &mdash; new width of the image"
+msgstr "<literal>width</literal> &mdash; nova largura da imagem"
+
+#. Tag: para
+#: Controls.xml:335
+#, no-c-format
+msgid "<literal>height</literal> &mdash; new height of the image"
+msgstr "<literal>height</literal> &mdash; nova altura da imagem"
+
+#. Tag: para
+#: Controls.xml:340
+#, no-c-format
+msgid ""
+"<literal>maintainRatio</literal> &mdash; if <literal>true</literal>, and "
+"<emphasis>one</emphasis> of <literal>width</literal>/<literal>height</"
+"literal> are specified, the image will be resized with the dimension not "
+"specified being calculated to maintain the aspect ratio."
+msgstr ""
+"<literal>maintainRatio</literal> &mdash; caso seja <literal>true</literal> e <emphasis>uma</emphasis> das <literal>width</literal>/<literal>height</"
+"literal> forem especificadas, a imagem será remodelada com dimensões não especificadas sendo calculadas para manter a taxa de proporção. "
+
+#. Tag: para
+#: Controls.xml:345
+#, no-c-format
+msgid "<literal>factor</literal> &mdash; scale the image by the given factor"
+msgstr "<literal>factor</literal> &mdash; escala de imagem do fator cedido"
+
+#. Tag: literal
+#: Controls.xml:353
+#, no-c-format
+msgid "&lt;s:transformImageBlur&gt;"
+msgstr "&lt;s:transformImageBlur&gt;"
+
+#. Tag: para
+#: Controls.xml:357
+#, no-c-format
+msgid ""
+"<literal>radius</literal> &mdash; perform a convolution blur with the given "
+"radius"
+msgstr "<literal>radius</literal> &mdash; exibe uma convolution Blur com o radius gerado "
+
+#. Tag: literal
+#: Controls.xml:365
+#, no-c-format
+msgid "&lt;s:transformImageType&gt;"
+msgstr "&lt;s:transformImageType&gt;"
+
+#. Tag: para
+#: Controls.xml:369
+#, no-c-format
+msgid ""
+"<literal>contentType</literal> &mdash; alter the type of the image to either "
+"<literal>image/jpeg</literal> or <literal>image/png</literal>"
+msgstr "<literal>contentType</literal> &mdash; altera o tipo de imagem para ambos <literal>image/jpeg</literal> ou <literal>image/png</literal>"
+
+#. Tag: para
+#: Controls.xml:377
+#, no-c-format
+msgid ""
+"It&#39;s easy to create your own transform - create a <literal>UIComponent</"
+"literal> which <literal>implements</literal><literal>org.jboss.seam.ui."
+"graphicImage.ImageTransform</literal>. Inside the <literal>applyTransform()</"
+"literal>method use <literal>image.getBufferedImage()</literal> to get the "
+"original image and <literal>image.setBufferedImage()</literal> to set your "
+"transformed image. Transforms are applied in the order specified in the view."
+msgstr ""
+"É fácil criar a sua própria transformação - crie um <literal>UIComponent</"
+"literal> que <literal>implements</literal><literal>org.jboss.seam.ui."
+"graphicImage.ImageTransform</literal>. Dentro do método <literal>applyTransform()</"
+"literal> use <literal>image.getBufferedImage()</literal> para buscar a imagem original e <literal>image.setBufferedImage()</literal> para configurar sua imagem transformada. As transformações são aplicadas de maneira especificada na visualização."
+
+#. Tag: literal
+#: Controls.xml:391
+#, no-c-format
+msgid "&lt;s:decorate&gt;"
+msgstr "&lt;s:decorate&gt;"
+
+#. Tag: para
+#: Controls.xml:398
+#, no-c-format
+msgid ""
+"\"Decorate\" a JSF input field when validation fails or when "
+"<literal>required=\"true\"</literal> is set."
+msgstr "\"Decore\" um campo de entrada JSF quando falhar a validação ou quando <literal>required=\"true\"</literal> for configurado."
+
+#. Tag: literal
+#: Controls.xml:418
+#, no-c-format
+msgid "&lt;s:layoutForm&gt;"
+msgstr "&lt;s:layoutForm&gt;"
+
+#. Tag: para
+#: Controls.xml:425
+#, no-c-format
+msgid ""
+"A layout component for producing a \"standard\" form layout. Each child "
+"component will be treated as a row, and if the child is a <literal>&lt;s:"
+"decorate&gt;</literal>, additional formatting will be applied:"
+msgstr ""
+"Um componente layout para produzir um layout de forma \"padrão\". Cada componente filho será tratado em uma ordem, e caso o filho for um <literal>&lt;s:"
+"decorate&gt;</literal>, formatações adicionais serão implantadas:"
+
+#. Tag: para
+#: Controls.xml:428
+#, no-c-format
+msgid ""
+"Label &mdash; if a <literal>label</literal> facet is on the <literal>&lt;s:"
+"decorate&gt;</literal> then it&#39;s contents will be used as the label for "
+"this field. The labels are rendered right-aligned in a column"
+msgstr ""
+"Etiqueta &mdash; caso uma facet <literal>label</literal> estiver no <literal>&lt;s:"
+"decorate&gt;</literal> os conteúdos serão usados como a etiqueta para este campo. As etiquetas são processadas no alinhamento direito de uma coluna "
+
+#. Tag: para
+#: Controls.xml:431
+#, no-c-format
+msgid ""
+"Some further decoration facets are supported - <literal>beforeLabel</"
+"literal>, <literal>afterLabel</literal>, <literal>aroundLabel</literal>, "
+"<literal>beforeInvalidLabel</literal>, <literal>afterInvalidLabel</literal> "
+"and <literal>aroundInvalidLabel</literal>."
+msgstr ""
+"Alguns outros facets de decoração são suportados <literal>beforeLabel</"
+"literal>, <literal>afterLabel</literal>, <literal>aroundLabel</literal>, "
+"<literal>beforeInvalidLabel</literal>, <literal>afterInvalidLabel</literal> "
+"and <literal>aroundInvalidLabel</literal>."
+
+#. Tag: para
+#: Controls.xml:436
+#, no-c-format
+msgid ""
+"Other text &mdash; if a <literal>belowLabel</literal> facet or/and a "
+"<literal>belowField</literal> facet are present on <literal>&lt;s:"
+"decorate&gt;</literal> then it&#39;s contents will be placed below the label "
+"or the field"
+msgstr ""
+"Outro texto &mdash; caso um facet <literal>belowLabel</literal> ou/e um facet <literal>belowField</literal> estiver presente na <literal>&lt;s:"
+"decorate&gt;</literal> de forma que seus conteúdo serão colocados abaixo da etiqueta ou no campo"
+
+#. Tag: para
+#: Controls.xml:441
+#, no-c-format
+msgid ""
+"Required &mdash; if <literal>required=\"true\"</literal> is set on the "
+"field, then the <literal>aroundRequiredField</literal>, "
+"<literal>beforeRequiredField</literal>, <literal>afterRequiredField</"
+"literal>, <literal>aroundRequiredLabel</literal>, "
+"<literal>beforeRequiredLabel</literal> and <literal>afterRequiredLabel</"
+"literal> will be applied."
+msgstr ""
+"Requerido &mdash; caso <literal>required=\"true\"</literal> for configurado no campo, então o <literal>aroundRequiredField</literal>, "
+"<literal>beforeRequiredField</literal>, <literal>afterRequiredField</"
+"literal>, <literal>aroundRequiredLabel</literal>, "
+"<literal>beforeRequiredLabel</literal> e <literal>afterRequiredLabel</"
+"literal> será aplicado."
+
+#. Tag: programlisting
+#: Controls.xml:457
+#, no-c-format
+msgid ""
+"&lt;s:layoutForm&gt;\n"
+"   &lt;f:facet name=\"aroundInvalidField\"&gt;\n"
+"       &lt;s:span styleClass=\"error\"/&gt;\n"
+"   &lt;/f:facet&gt;\n"
+"   &lt;f:facet name=\"afterInvalidField\"&gt;\n"
+"       &lt;s:message /&gt;\n"
+"   &lt;/f:facet&gt;\n"
+"   &lt;f:facet name=\"beforeRequiredLabel\"&gt;\n"
+"           &lt;s:span&gt;&lowast;&lt;/s:span&gt;\n"
+"   &lt;/f:facet&gt;\n"
+"   &lt;f:facet name=\"aroundLabel\"&gt;\n"
+"           &lt;s:span style=\"text-align:right;\" /&gt;\n"
+"   &lt;/f:facet&gt;\n"
+"   &lt;f:facet name=\"aroundInvalidLabel\"&gt;\n"
+"           &lt;s:span style=\"text-align:right;\" styleClass=\"error\" /"
+"&gt;\n"
+"   &lt;/f:facet&gt;\n"
+"   &lt;s:decorate&gt;\n"
+"        &lt;f:facet name=\"label\"&gt;\n"
+"                    &lt;h:outputText value=\"Name\" /&gt;\n"
+"        &lt;/f:facet&gt;\n"
+"        &lt;h:inputText value=\"#{person.name}\" required=\"true\"/&gt;\n"
+"        &lt;f:facet name=\"belowField\"&gt;\n"
+"            &lt;h:outputText styleClass=\"help\" \n"
+"               value=\"Enter your name as it appears \n"
+"                  on your passport\" /&gt;\n"
+"        &lt;/f:facet&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"&lt;/s:layoutForm&gt;"
+msgstr ""
+"&lt;s:layoutForm&gt;\n"
+"   &lt;f:facet name=\"aroundInvalidField\"&gt;\n"
+"       &lt;s:span styleClass=\"error\"/&gt;\n"
+"   &lt;/f:facet&gt;\n"
+"   &lt;f:facet name=\"afterInvalidField\"&gt;\n"
+"       &lt;s:message /&gt;\n"
+"   &lt;/f:facet&gt;\n"
+"   &lt;f:facet name=\"beforeRequiredLabel\"&gt;\n"
+"           &lt;s:span&gt;&lowast;&lt;/s:span&gt;\n"
+"   &lt;/f:facet&gt;\n"
+"   &lt;f:facet name=\"aroundLabel\"&gt;\n"
+"           &lt;s:span style=\"text-align:right;\" /&gt;\n"
+"   &lt;/f:facet&gt;\n"
+"   &lt;f:facet name=\"aroundInvalidLabel\"&gt;\n"
+"           &lt;s:span style=\"text-align:right;\" styleClass=\"error\" /"
+"&gt;\n"
+"   &lt;/f:facet&gt;\n"
+"   &lt;s:decorate&gt;\n"
+"        &lt;f:facet name=\"label\"&gt;\n"
+"                    &lt;h:outputText value=\"Name\" /&gt;\n"
+"        &lt;/f:facet&gt;\n"
+"        &lt;h:inputText value=\"#{person.name}\" required=\"true\"/&gt;\n"
+"        &lt;f:facet name=\"belowField\"&gt;\n"
+"            &lt;h:outputText styleClass=\"help\" \n"
+"               value=\"Enter your name as it appears \n"
+"                  on your passport\" /&gt;\n"
+"        &lt;/f:facet&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"&lt;/s:layoutForm&gt;"
+
+#. Tag: literal
+#: Controls.xml:472
+#, no-c-format
+msgid "&lt;s:message&gt;"
+msgstr "&lt;s:message&gt;"
+
+#. Tag: para
+#: Controls.xml:479
+#, no-c-format
+msgid "\"Decorate\" a JSF input field with the validation error message."
+msgstr "\"Decore\" um campo de entrada JSF com a mensagem de erro da validação."
+
+#. Tag: literal
+#: Controls.xml:499
+#, no-c-format
+msgid "&lt;s:span&gt;"
+msgstr "&lt;s:span&gt;"
+
+#. Tag: para
+#: Controls.xml:506
+#, no-c-format
+msgid "Render a HTML <literal>&lt;span&gt;</literal>."
+msgstr "Processe um <literal>&lt;span&gt;</literal> HTML."
+
+#. Tag: literal
+#: Controls.xml:526
+#, no-c-format
+msgid "&lt;s:div&gt;"
+msgstr "&lt;s:div&gt;"
+
+#. Tag: para
+#: Controls.xml:533
+#, no-c-format
+msgid "Render a HTML <literal>&lt;div&gt;</literal>."
+msgstr "Processe um <literal>&lt;div&gt;</literal> HTML."
+
+#. Tag: literal
+#: Controls.xml:553
+#, no-c-format
+msgid "&lt;s:fragment&gt;"
+msgstr "&lt;s:fragment&gt;"
+
+#. Tag: para
+#: Controls.xml:560
+#, no-c-format
+msgid ""
+"A non-rendering component useful for enabling/disabling rendering of it&#39;"
+"s children."
+msgstr "Um componente não-processado útil para o processamento de ativação/desativação dos próprios filhos."
+
+#. Tag: literal
+#: Controls.xml:580
+#, no-c-format
+msgid "&lt;s:cache&gt;"
+msgstr "&lt;s:cache&gt;"
+
+#. Tag: para
+#: Controls.xml:587
+#, no-c-format
+msgid ""
+"Cache the rendered page fragment using JBoss Cache. Note that <literal>&lt;s:"
+"cache&gt;</literal> actually uses the instance of JBoss Cache managed by the "
+"built-in <literal>pojoCache</literal> component."
+msgstr ""
+"Cache de fragmento de página processada usando o JBoss Cache. Perceba que o <literal>&lt;s:"
+"cache&gt;</literal> usa atualmente a instância do gerenciado JBoss Cache pelo componente <literal>pojoCache</literal> interno."
+
+#. Tag: para
+#: Controls.xml:595
+#, no-c-format
+msgid ""
+"<literal>key</literal> &mdash; the key to cache rendered content, often a "
+"value expression. For example, if we were caching a page fragment that "
+"displays a document, we might use <literal>key=\"Document-#{document.id}\"</"
+"literal>."
+msgstr ""
+"<literal>key</literal> &mdash; a chave para o conteúdo de cache processado, quase sempre uma expressão de valor. Por exemplo, caso estejamos realizando o cache no fragmento da página que exibe o documento, nós poderemos usar <literal>key=\"Document-#{document.id}\"</"
+"literal>."
+
+#. Tag: para
+#: Controls.xml:600
+#, no-c-format
+msgid ""
+"<literal>enabled</literal> &mdash; a value expression that determines if the "
+"cache should be used."
+msgstr "<literal>enabled</literal> &mdash; a expressão de valor que determina se o cache deveria ser usado."
+
+#. Tag: para
+#: Controls.xml:605
+#, no-c-format
+msgid ""
+"<literal>region</literal> &mdash; a JBoss Cache node to use (different nodes "
+"can have different expiry policies)."
+msgstr "<literal>region</literal> &mdash; um nó do Cache JBoss a ser usado (nós diferentes podem possuir diferentes políticas de expiração)"
+
+#. Tag: literal
+#: Controls.xml:621
+#, no-c-format
+msgid "&lt;s:link&gt;"
+msgstr "&lt;s:link&gt;"
+
+#. Tag: para
+#: Controls.xml:628
+#, no-c-format
+msgid ""
+"A link that supports invocation of an action with control over conversation "
+"propagation. <emphasis>Does not submit the form.</emphasis>"
+msgstr "Um link que suporta a invocação de uma ação com o controle sobre a propagação de conversação. <emphasis>Não submete o formulário.</emphasis>"
+
+#. Tag: para
+#: Controls.xml:636 Controls.xml:697
+#, no-c-format
+msgid "<literal>value</literal> &mdash; the label."
+msgstr "<literal>value</literal> &mdash; a etiqueta."
+
+#. Tag: para
+#: Controls.xml:641 Controls.xml:702
+#, no-c-format
+msgid ""
+"<literal>action</literal> &mdash; a method binding that specified the action "
+"listener."
+msgstr ""
+"<literal>action</literal> &mdash; um método vinculado que especifica a action "
+"listener."
+
+#. Tag: para
+#: Controls.xml:646 Controls.xml:707
+#, no-c-format
+msgid "<literal>view</literal> &mdash; the JSF view id to link to."
+msgstr "<literal>view</literal> &mdash; a identificação de visualização JSF para vinculação."
+
+#. Tag: para
+#: Controls.xml:651 Controls.xml:712
+#, no-c-format
+msgid "<literal>fragment</literal> &mdash; the fragment identifier to link to."
+msgstr "<literal>fragment</literal> &mdash; o identificador do fragmento para vinculação."
+
+#. Tag: para
+#: Controls.xml:656 Controls.xml:717
+#, no-c-format
+msgid "<literal>disabled</literal> &mdash; is the link disabled?"
+msgstr "<literal>disabled</literal> &mdash; o link está desativado?"
+
+#. Tag: para
+#: Controls.xml:661 Controls.xml:722 Controls.xml:911
+#, no-c-format
+msgid ""
+"<literal>propagation</literal> &mdash; determines the conversation "
+"propagation style: <literal>begin</literal>, <literal>join</literal>, "
+"<literal>nest</literal>, <literal>none</literal> or <literal>end</literal>."
+msgstr ""
+"<literal>propagation</literal> &mdash; determina o estilo de propagação da conversação <literal>begin</literal>, <literal>join</literal>, "
+"<literal>nest</literal>, <literal>none</literal> ou <literal>end</literal>."
+
+#. Tag: para
+#: Controls.xml:666 Controls.xml:727 Controls.xml:916
+#, no-c-format
+msgid ""
+"<literal>pageflow</literal> &mdash; a pageflow definition to begin. (This is "
+"only useful when <literal>propagation=\"begin\"</literal> or "
+"<literal>propagation=\"join\"</literal>.)"
+msgstr ""
+"<literal>pageflow</literal> &mdash; a definição pageflow para começar. (Isto é apenas útil quando <literal>propagation=\"begin\"</literal> ou"
+"<literal>propagation=\"join\"</literal>.)"
+
+#. Tag: literal
+#: Controls.xml:682
+#, no-c-format
+msgid "&lt;s:button&gt;"
+msgstr "&lt;s:button&gt;"
+
+#. Tag: para
+#: Controls.xml:689
+#, no-c-format
+msgid ""
+"A button that supports invocation of an action with control over "
+"conversation propagation. <emphasis>Does not submit the form.</emphasis>"
+msgstr "O botão que suporta a invocação de uma ação com o controle sobre a propagação de conversação. <emphasis>Não submete o formulário.</emphasis>"
+
+#. Tag: literal
+#: Controls.xml:743
+#, no-c-format
+msgid "&lt;s:selectDate&gt;"
+msgstr "&lt;s:selectDate&gt;"
+
+#. Tag: para
+#: Controls.xml:750
+#, no-c-format
+msgid ""
+"Displays a dynamic date picker component that selects a date for the "
+"specified input field. The body of the <literal>selectDate</literal> element "
+"should contain HTML elements, such as text or an image, that prompt the user "
+"to click to display the date picker. The date picker <emphasis>must</"
+"emphasis> be styled using CSS. An example CSS file can be found in the Seam "
+"booking demo as <literal>date.css</literal>, or can be generated using seam-"
+"gen. The CSS styles used to control the appearance of the date picker are "
+"also described below."
+msgstr ""
+"Exibe um componente seletor de data dinâmica que seleciona uma data para o campo de entrada específico. O corpo do elemento <literal>selectDate</literal> deve conter elementos HTML, como um texto ou uma imagem da qual solicita que o usuário clique o seletor de data. O seletor de data <emphasis>deve</emphasis> ser moldado usando o CSS. Um arquivo CSS de amostra pode ser encontrado no demo de reserva Seam como <literal>date.css</literal>, ou pode ser gerado usando o seam-"
+"gen. Os estilos CSS usados para controlar a aparência do seletor de data são também descritos abaixo."
+
+#. Tag: para
+#: Controls.xml:758
+#, no-c-format
+msgid ""
+"<literal>for</literal> &mdash; The id of the input field that the date "
+"picker will insert the selected date into."
+msgstr "<literal>for</literal> &mdash; A identidade do campo de entrada do qual o solicitador de data irá inserir na selecionada data de entrada."
+
+#. Tag: para
+#: Controls.xml:763
+#, no-c-format
+msgid ""
+"<literal>dateFormat</literal> &mdash; The date format string. This should "
+"match the date format of the input field."
+msgstr "<literal>dateFormat</literal> &mdash; caracter de formatação de data. Este deve combinar com a formatação de data do campo de entrada."
+
+#. Tag: para
+#: Controls.xml:768
+#, no-c-format
+msgid ""
+"<literal>startYear</literal> &mdash; The popup year selector range will "
+"start at this year."
+msgstr "<literal>startYear</literal> &mdash; O intervalo do seletor do ano de contexto começará neste ano."
+
+#. Tag: para
+#: Controls.xml:773
+#, no-c-format
+msgid ""
+"<literal>endYear</literal> &mdash; The popup year selector range will end at "
+"this year."
+msgstr "<literal>endYear</literal> &mdash; O tempo de duração do seletor do ano de pop-up terminará este ano."
+
+#. Tag: programlisting
+#: Controls.xml:782
+#, no-c-format
+msgid ""
+"&lt;div class=\"row\"&gt;\n"
+"    &lt;h:outputLabel for=\"dob\"&gt;Date of birth&lt;em&gt;*&lt;/em&gt;&lt;/"
+"h:outputLabel&gt;\n"
+"    &lt;h:inputText id=\"dob\" value=\"#{user.dob}\" required=\"true\"&gt;\n"
+"      &lt;s:convertDateTime pattern=\"MM/dd/yyyy\"/&gt;\n"
+"    &lt;/h:inputText&gt;\n"
+"    &lt;s:selectDate for=\"dob\" startYear=\"1910\" endYear=\"2007\"&gt;&lt;"
+"img src=\"img/datepicker.png\"/&gt;&lt;/s:selectDate&gt;\n"
+"    &lt;div class=\"validationError\"&gt;&lt;h:message for=\"dob\"/&gt;&lt;/"
+"div&gt;\n"
+"  &lt;/div&gt;"
+msgstr ""
+"&lt;div class=\"row\"&gt;\n"
+"    &lt;h:outputLabel for=\"dob\"&gt;Date of birth&lt;em&gt;*&lt;/em&gt;&lt;/"
+"h:outputLabel&gt;\n"
+"    &lt;h:inputText id=\"dob\" value=\"#{user.dob}\" required=\"true\"&gt;\n"
+"      &lt;s:convertDateTime pattern=\"MM/dd/yyyy\"/&gt;\n"
+"    &lt;/h:inputText&gt;\n"
+"    &lt;s:selectDate for=\"dob\" startYear=\"1910\" endYear=\"2007\"&gt;&lt;"
+"img src=\"img/datepicker.png\"/&gt;&lt;/s:selectDate&gt;\n"
+"    &lt;div class=\"validationError\"&gt;&lt;h:message for=\"dob\"/&gt;&lt;/"
+"div&gt;\n"
+"  &lt;/div&gt;"
+
+#. Tag: emphasis
+#: Controls.xml:796
+#, no-c-format
+msgid "CSS Styling"
+msgstr "Modelagem CSS"
+
+#. Tag: para
+#: Controls.xml:798
+#, no-c-format
+msgid ""
+"The following list describes the CSS class names that are used to control "
+"the style of the selectDate control."
+msgstr "A lista seguinte descreve os nomes da classe CSS que é usada para controlar o controle de estilo do controle do controle selectDate."
+
+#. Tag: para
+#: Controls.xml:803
+#, no-c-format
+msgid ""
+"<literal>seam-date</literal> &mdash; This class is applied to the outer "
+"<literal>div</literal> containing the popup calendar. (1) It is also applied "
+"to the <literal>table</literal> that controls the inner layout of the "
+"calendar. (2)"
+msgstr "<literal>seam-date</literal> &mdash; Esta classe é aplicada ao <literal>div</literal> externo que contém o calendário pop-up. (1) Ela é também aplicada à <literal>table</literal> que controla o layout interno do calendário. (2) "
+
+#. Tag: para
+#: Controls.xml:808
+#, no-c-format
+msgid ""
+"<literal>seam-date-header</literal> &mdash; This class is applied to the "
+"calendar header table row (<literal>tr</literal>) and header table cells "
+"(<literal>td</literal>). (3)"
+msgstr "<literal>seam-date-header</literal> &mdash; Esta classe é aplicada à coluna da tabela do cabeçalho do calendário (<literal>tr</literal>) e células da tabela do cabeçalho (<literal>td</literal>). (3)"
+
+#. Tag: para
+#: Controls.xml:813
+#, no-c-format
+msgid ""
+"<literal>seam-date-header-prevMonth</literal> &mdash; This class is applied "
+"to the \"previous month\" table cell, (<literal>td</literal>), which when "
+"clicked causes the calendar to display the month prior to the one currently "
+"displayed. (4)"
+msgstr "<literal>seam-date-header-prevMonth</literal> &mdash; Esta classe é aplicada à celula da tabela do \"mês prévio\", (<literal>td</literal>) que quando clicada faz com que o calendário exiba antes o mês do atual exibido."
+
+#. Tag: para
+#: Controls.xml:818
+#, no-c-format
+msgid ""
+"<literal>seam-date-header-nextMonth</literal> &mdash; This class is applied "
+"to the \"next month\" table cell, (<literal>td</literal>), which when "
+"clicked causes the calendar to display the month following the one currently "
+"displayed. (5)"
+msgstr "<literal>seam-date-header-nextMonth</literal> &mdash; Esta classe é aplicada à celula de tabela do \"próximo mês\" (<literal>td</literal>), que uma vez clicada faz com que calendário exiba o mês seguido do atual já exibido. "
+
+#. Tag: para
+#: Controls.xml:823
+#, no-c-format
+msgid ""
+"<literal>seam-date-headerDays</literal> &mdash; This class is applied to the "
+"calendar days header row (<literal>tr</literal>), which contains the names "
+"of the week days. (6)"
+msgstr "<literal>seam-date-headerDays</literal> &mdash; Esta classe é aplicada à coluna do cabeçalho de dias do calendário (<literal>tr</literal>), que contém os nomes dos dias das semanas. (6)"
+
+#. Tag: para
+#: Controls.xml:828
+#, no-c-format
+msgid ""
+"<literal>seam-date-footer</literal> &mdash; This class is applied to the "
+"calendar footer row (<literal>tr</literal>), which displays the current "
+"date. (7)"
+msgstr "<literal>seam-date-footer</literal> &mdash; Esta classe é aplicada à coluna do rodapé do calendário (<literal>tr</literal>), que exibe a data atual. (7)"
+
+#. Tag: para
+#: Controls.xml:833
+#, no-c-format
+msgid ""
+"<literal>seam-date-inMonth</literal> &mdash; This class is applied to the "
+"table cell (<literal>td</literal>) elements that contain a date within the "
+"month currently displayed. (8)"
+msgstr "<literal>seam-date-inMonth</literal> &mdash; esta classe é aplicada aos elementos (<literal>td</literal>) da célula da tabela, que contém a data do mês atual exibido. (8)"
+
+#. Tag: para
+#: Controls.xml:838
+#, no-c-format
+msgid ""
+"<literal>seam-date-outMonth</literal> &mdash; This class is applied to the "
+"table cell (<literal>td</literal>) elements that contain a date outside of "
+"the month currently displayed. (9)"
+msgstr "<literal>seam-date-outMonth</literal> &mdash; Esta classe é aplicada aos elementos (<literal>td</literal>) da célula da tabela, que contém a data fora do mês atual exibido. (9)"
+
+#. Tag: para
+#: Controls.xml:843
+#, no-c-format
+msgid ""
+"<literal>seam-date-selected</literal> &mdash; This class is applied to the "
+"table cell (<literal>td</literal>) element that contains the currently "
+"selected date. (10)"
+msgstr "<literal>seam-date-selected</literal> &mdash;  Esta classe é aplicada ao elemento (<literal>td</literal>) da célula da tabela, que contém a data atual selecionada. (10)"
+
+#. Tag: para
+#: Controls.xml:848
+#, no-c-format
+msgid ""
+"<literal>seam-date-dayOff-inMonth</literal> &mdash; This class is applied to "
+"the table cell (<literal>td</literal>) elements that contain a \"day off\" "
+"date (i.e. weekend days, Saturday and Sunday) within the currently selected "
+"month. (11)"
+msgstr "<literal>seam-date-dayOff-inMonth</literal> &mdash; esta classe é aplicada aos elementos (<literal>td</literal>) da célula da tabela, que contém a data de \"dia de folga\" (ex: fins de semana, sábados e domingos) com o atual mês selecionado. (11)"
+
+#. Tag: para
+#: Controls.xml:853
+#, no-c-format
+msgid ""
+"<literal>seam-date-dayOff-outMonth</literal> &mdash; This class is applied "
+"to the table cell (<literal>td</literal>) elements that contain a \"day off"
+"\" date (i.e. weekend days, Saturday and Sunday) outside of the currently "
+"selected month. (12)"
+msgstr "<literal>seam-date-dayOff-outMonth</literal> &mdash; Esta classe é aplicada aos elementos (<literal>td</literal>) da célula da tabela, que contém a data de \"dia de folga\" (ex: fins de semana, sábados e domingos) fora do atual mês selecionado. (12)"
+
+#. Tag: para
+#: Controls.xml:858
+#, no-c-format
+msgid ""
+"<literal>seam-date-hover</literal> &mdash; This class is applied to the "
+"table cell (<literal>td</literal>) element over which the cursor is "
+"hovering. (13)"
+msgstr "<literal>seam-date-hover</literal> &mdash; Esta classe é aplicada ao elemento (<literal>td</literal>) de célula da tabela sobre o qual o cursor é suspenso. (13)"
+
+#. Tag: para
+#: Controls.xml:863
+#, no-c-format
+msgid ""
+"<literal>seam-date-monthNames</literal> &mdash; This class is applied to the "
+"<literal>div</literal> control that contains the popup month selector. (14)"
+msgstr "<literal>seam-date-monthNames</literal> &mdash; Esta classe é aplicada ao controle <literal>div</literal> que possui o seletor de mês pop-up."
+
+#. Tag: para
+#: Controls.xml:868
+#, no-c-format
+msgid ""
+"<literal>seam-date-monthNameLink</literal> &mdash; This class is applied to "
+"the anchor (<literal>a</literal>) controls that contain the popup month "
+"names. (15)"
+msgstr "<literal>seam-date-monthNameLink</literal> &mdash; esta classe é aplicada aos controles (<literal>a</literal>) de âncora que contém os nomes do mês de pop-up. (15)"
+
+#. Tag: para
+#: Controls.xml:873
+#, no-c-format
+msgid ""
+"<literal>seam-date-years </literal> &mdash; This class is applied to the "
+"<literal>div</literal> control that contains the popup year selector. (16)"
+msgstr "<literal>seam-date-years </literal> &mdash; Esta classe é aplicada ao controle <literal>div</literal> que contém o seletor do ano de pop-up. (16)"
+
+#. Tag: para
+#: Controls.xml:878
+#, no-c-format
+msgid ""
+"<literal>seam-date-yearLink</literal> &mdash; This class is applied to the "
+"anchor (<literal>a</literal>) controls that contain the popup years. (15)"
+msgstr "<literal>seam-date-yearLink</literal> &mdash; Esta classe é aplicada aos controles (<literal>a</literal>) de âncora que contêm os anos de pop-up. (15)"
+
+#. Tag: literal
+#: Controls.xml:896
+#, no-c-format
+msgid "&lt;s:conversationPropagation&gt;"
+msgstr "&lt;s:conversationPropagation&gt;"
+
+#. Tag: para
+#: Controls.xml:903
+#, no-c-format
+msgid ""
+"Customize the conversation propagation for a command link or button (or "
+"similar JSF control). <emphasis>Facelets only.</emphasis>"
+msgstr "Personalize a propagação de conversação para um link de comando ou botão ( ou controle similar JSF). <emphasis>Facelets only.</emphasis>"
+
+#. Tag: literal
+#: Controls.xml:932
+#, no-c-format
+msgid "&lt;s:conversationId&gt;"
+msgstr "&lt;s:conversationId&gt;"
+
+#. Tag: para
+#: Controls.xml:939
+#, no-c-format
+msgid ""
+"Add the conversation id to an output link (or similar JSF control). "
+"<emphasis>Facelets only.</emphasis>"
+msgstr "Adicione a identidade da conversação a um link de saída (ou controle similar JSF). <emphasis> Apenas Facelets.</emphasis>"
+
+#. Tag: literal
+#: Controls.xml:959
+#, no-c-format
+msgid "&lt;s:taskId&gt;"
+msgstr "&lt;s:taskId&gt;"
+
+#. Tag: para
+#: Controls.xml:966
+#, no-c-format
+msgid ""
+"Add the task id to an output link (or similar JSF control), when the task is "
+"available via <literal>#{task}</literal>. <emphasis>Facelets only.</emphasis>"
+msgstr "Adicione a identidade de tarefa a um link de saída (ou controle similar JSF), quando a tarefa estiver disponível por meio de <literal>#{task}</literal>. <emphasis>Facelets only.</emphasis>"
+
+#. Tag: literal
+#: Controls.xml:986
+#, no-c-format
+msgid "&lt;s:fileUpload&gt;"
+msgstr "&lt;s:fileUpload&gt;"
+
+#. Tag: para
+#: Controls.xml:993
+#, no-c-format
+msgid ""
+"Renders a file upload control. This control must be used within a form with "
+"an encoding type of <literal>multipart/form-data</literal>, i.e:"
+msgstr "Processa o controle de carregamento do arquivo. este controle deve ser usado com um formulário do tipo de codificação do <literal>multipart/form-data</literal>, exemplo:"
+
+#. Tag: programlisting
+#: Controls.xml:996
+#, no-c-format
+msgid "&lt;h:form enctype=\"multipart/form-data\"&gt;"
+msgstr "&lt;h:form enctype=\"multipart/form-data\"&gt;"
+
+#. Tag: para
+#: Controls.xml:997
+#, no-c-format
+msgid ""
+"For multipart requests, the Seam Multipart servlet filter must also be "
+"configured in <literal>web.xml</literal>:"
+msgstr "Para solicitações de múltiplas partes, o filtro servlet de Múltipla parte Seam deve também ser configurado em <literal>web.xml</literal>:"
+
+#. Tag: programlisting
+#: Controls.xml:1000
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-class&gt;\n"
+"  &lt;/filter&gt;\n"
+"\n"
+"  &lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;/*&lt;/url-pattern&gt;\n"
+"  &lt;/filter-mapping&gt;"
+msgstr ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-class&gt;\n"
+"  &lt;/filter&gt;\n"
+"\n"
+"  &lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;/*&lt;/url-pattern&gt;\n"
+"  &lt;/filter-mapping&gt;"
+
+#. Tag: para
+#: Controls.xml:1004
+#, no-c-format
+msgid ""
+"The following configuration options for multipart requests may be configured "
+"in components.xml:"
+msgstr "As seguintes opções de configuração para solicitações de múltipla parte podem ser configuradas em components.xml:"
+
+#. Tag: para
+#: Controls.xml:1009
+#, no-c-format
+msgid ""
+"<literal>createTempFiles</literal> &mdash; if this option is set to true, "
+"uploaded files are streamed to a temporary file instead of in memory."
+msgstr "<literal>createTempFiles</literal> &mdash; caso esta opção seja configurada para verdadeira, os arquivos carregados são transmitidos ao arquivo temporário ao invés do de memória."
+
+#. Tag: para
+#: Controls.xml:1014
+#, no-c-format
+msgid ""
+"<literal>maxRequestSize</literal> &mdash; the maximum size of a file upload "
+"request, in bytes."
+msgstr "<literal>maxRequestSize</literal> &mdash; o tamanho máximo de uma solicitação de carregamento do arquivo, em bytes."
+
+#. Tag: para
+#: Controls.xml:1019
+#, no-c-format
+msgid "Here&#39;s an example:"
+msgstr "Exemplo:"
+
+#. Tag: programlisting
+#: Controls.xml:1022
+#, no-c-format
+msgid ""
+"&lt;component class=\"org.jboss.seam.web.MultipartFilter\"&gt;\n"
+"      &lt;property name=\"createTempFiles\"&gt;true&lt;/property&gt;\n"
+"      &lt;property name=\"maxRequestSize\"&gt;1000000&lt;/property&gt;\n"
+"  &lt;/component&gt;"
+msgstr ""
+"&lt;component class=\"org.jboss.seam.web.MultipartFilter\"&gt;\n"
+"      &lt;property name=\"createTempFiles\"&gt;true&lt;/property&gt;\n"
+"      &lt;property name=\"maxRequestSize\"&gt;1000000&lt;/property&gt;\n"
+"  &lt;/component&gt;"
+
+#. Tag: para
+#: Controls.xml:1028
+#, no-c-format
+msgid ""
+"<literal>data</literal> &mdash; this value binding receives the binary file "
+"data. The receiving field should be declared as a <literal>byte[]</literal> "
+"or <literal>InputStream</literal> (required)."
+msgstr "<literal>data</literal> &mdash; este valor vinculado recebe o dado de arquivo binário. O campo de recebimento deve ser declarado como um <literal>byte[]</literal> ou <literal>InputStream</literal> (solicitado)."
+
+#. Tag: para
+#: Controls.xml:1033
+#, no-c-format
+msgid ""
+"<literal>contentType</literal> &mdash; this value binding receives the "
+"file&#39;s content type (optional)."
+msgstr "<literal>contentType</literal> &mdash; este valor vinculado recebe o tipo de conteúdo do arquivo (opcional)."
+
+#. Tag: para
+#: Controls.xml:1038
+#, no-c-format
+msgid ""
+"<literal>fileName</literal> &mdash; this value binding receives the filename "
+"(optional)."
+msgstr "<literal>fileName</literal> &mdash; este valor vinculado recebe o nome do arquivo (opcional)."
+
+#. Tag: para
+#: Controls.xml:1043
+#, no-c-format
+msgid ""
+"<literal>accept</literal> &mdash; a comma-separated list of content types to "
+"accept, may not be supported by the browser. E.g. <literal>\"images/png,"
+"images/jpg\"</literal>, <literal>\"images/*\"</literal>."
+msgstr ""
+"<literal>accept</literal> &mdash; uma lista de vírgula separada dos tipos de conteúdo para aceitação, talvez não seja aceita pelo navegador. Exemplo <literal>\"images/png,"
+"images/jpg\"</literal>, <literal>\"images/*\"</literal>."
+
+#. Tag: para
+#: Controls.xml:1048
+#, no-c-format
+msgid "<literal>style</literal> &mdash; The control&#39;s style"
+msgstr "<literal>style</literal> &mdash; O estilo do controle "
+
+#. Tag: para
+#: Controls.xml:1053
+#, no-c-format
+msgid "<literal>styleClass</literal> &mdash; The control&#39;s style class"
+msgstr "<literal>styleClass</literal> &mdash; A classe do estilo do controle"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Conversations.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Conversations.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Conversations.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1435 @@
+# translation of Conversations.po to Brazilian Portuguese
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Leticia de Lima <ldelima at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Conversations\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2008-06-10 15:42+1000\n"
+"Last-Translator: Leticia de Lima <ldelima at redhat.com>\n"
+"Language-Team: Brazilian Portuguese <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms:  JBEAP420 \n"
+
+#. Tag: title
+#: Conversations.xml:6
+#, no-c-format
+msgid "Conversations and workspace management"
+msgstr "Conversações e gerenciamento da área de trabalho"
+
+#. Tag: para
+#: Conversations.xml:7
+#, no-c-format
+msgid "It&#39;s time to understand Seam&#39;s conversation model in more detail."
+msgstr "É hora de entendermos o modelo de conversação de Seam com detalhes mais profundos."
+
+#. Tag: para
+#: Conversations.xml:10
+#, no-c-format
+msgid ""
+"Historically, the notion of a Seam \"conversation\" came about as a merger "
+"of three different ideas:"
+msgstr "Historicamente a noção de uma \"conversação\" Seam surgiu com três diferentes idéias:"
+
+#. Tag: para
+#: Conversations.xml:15
+#, no-c-format
+msgid ""
+"The idea of a <emphasis>workspace</emphasis>, which I encountered in a "
+"project for the Victorian government in 2002. In this project I was forced "
+"to implement workspace management on top of Struts, an experience I pray "
+"never to repeat."
+msgstr "A idéia de uma <emphasis>área de trabalho</emphasis>, da qual pode ser encontrada num projeto do governo de Victoria, em 2002. Neste projeto fomos forçados a implementar a área de trabalho no topo do Strutus."
+
+#. Tag: para
+#: Conversations.xml:20
+#, no-c-format
+msgid ""
+"The idea of an <emphasis>application transaction</emphasis> with optimistic "
+"semantics, and the realization that existing frameworks based around a "
+"stateless architecture could not provide effective management of extended "
+"persistence contexts. (The Hibernate team is truly fed up with copping the "
+"blame for <literal>LazyInitializationException</literal>s, which are not "
+"really Hibernate&#39;s fault, but rather the fault of the extremely limiting "
+"persistence context model supported by stateless architectures such as the "
+"Spring framework or the traditional <emphasis>stateless session facade</"
+"emphasis> (anti)pattern in J2EE.)"
+msgstr ""
+"A idéia de uma <emphasis>transação de aplicativo</emphasis> com semânticas otimistas, além da realização de que frameworks existentes baseados em arquiteturas sem estado não poderiam fornecer um gerenciamento efetivo dos contextos de persistência estendidos. (O time Hibernate está cansado de levar a culpa pela <literal>LazyInitializationException</literal>, que na realidade não é culpa do Hibernate, mas sim do modelo de contexto de persistência de limite extremo de arquiteturas sem estado, como o esquema Spring ou o (anti)-padrão <emphasis>facade de sessão sem estado</"
+"emphasis>, tradicional em J2EE.)"
+
+#. Tag: para
+#: Conversations.xml:25
+#, no-c-format
+msgid "The idea of a workflow <emphasis>task</emphasis>."
+msgstr "A idéia de uma <emphasis>tarefa</emphasis> workflow."
+
+#. Tag: para
+#: Conversations.xml:30
+#, no-c-format
+msgid ""
+"By unifying these ideas and providing deep support in the framework, we have "
+"a powerful construct that lets us build richer and more efficient "
+"applications with less code than before."
+msgstr "Unificando estas idéias e fornecendo suporte profundo ao framework, temos uma construção forte que nos permite construir aplicativos mais ricos e mais eficientes, com menos códigos que anteriormente."
+
+#. Tag: title
+#: Conversations.xml:34
+#, no-c-format
+msgid "Seam&#39;s conversation model"
+msgstr "Modelo de conversação Seam "
+
+#. Tag: para
+#: Conversations.xml:35
+#, no-c-format
+msgid ""
+"The examples we have seen so far make use of a very simple conversation "
+"model that follows these rules:"
+msgstr "Os modelos vistos até agora fazem uso de um modelo de conversação simples, da qual segue as seguintes regras:"
+
+#. Tag: para
+#: Conversations.xml:40
+#, no-c-format
+msgid ""
+"There is always a conversation context active during the apply request "
+"values, process validations, update model values, invoke application and "
+"render response phases of the JSF request lifecycle."
+msgstr "Haverá sempre um contexto de conversação ativo durante a aplicação de valores de solicitação, validações de processos, aplicativos de invocação e fases de respostas de processos do ciclo de vida de solicitação JSF. "
+
+#. Tag: para
+#: Conversations.xml:45
+#, no-c-format
+msgid ""
+"At the end of the restore view phase of the JSF request lifecycle, Seam "
+"attempts to restore any previous long-running conversation context. If none "
+"exists, Seam creates a new temporary conversation context."
+msgstr "No final da fase de visualização de restauração do ciclo de vida do JSF, o Seam tende a restaurar qualquer contexto prévio de conversação de execução demorada. Caso não existir nada, o Seam cria um novo contexto de conversação temporário."
+
+#. Tag: para
+#: Conversations.xml:50
+#, no-c-format
+msgid ""
+"When an <literal>@Begin</literal> method is encountered, the temporary "
+"conversation context is promoted to a long running conversation."
+msgstr "Quando um método <literal>@Begin</literal> for encontrado, o contexto de conversação temporário é promovido a uma conversação de longa execução."
+
+#. Tag: para
+#: Conversations.xml:55
+#, no-c-format
+msgid ""
+"When an <literal>@End</literal> method is encountered, any long-running "
+"conversation context is demoted to a temporary conversation."
+msgstr "Quando um método <literal>@End</literal> for encontrado, qualquer contexto de conversação de longa execução é rebaixado à uma conversação temporária."
+
+#. Tag: para
+#: Conversations.xml:60
+#, no-c-format
+msgid ""
+"At the end of the render response phase of the JSF request lifecycle, Seam "
+"stores the contents of a long running conversation context or destroys the "
+"contents of a temporary conversation context."
+msgstr "No final da fase de respostas processadas do ciclo de vida de solicitação JSF, o Seam armazena  os conteúdos do contexto de conversação de longa execução ou destrói os conteúdos de um contexto de conversação temporário."
+
+#. Tag: para
+#: Conversations.xml:65
+#, no-c-format
+msgid ""
+"Any faces request (a JSF postback) will propagate the conversation context. "
+"By default, non-faces requests (GET requests, for example) do not propagate "
+"the conversation context, but see below for more information on this."
+msgstr ""
+"Qualquer solicitação das faces (de retorno de postagem do JSF) irá propagar o contexto de conversação. Pelo padrão, as solicitações sem-faces (solicitações GET, por exemplo) "
+"não se propagam no contexto de conversação. Veja abaixo mais informações a respeito disto."
+
+#. Tag: para
+#: Conversations.xml:70
+#, no-c-format
+msgid ""
+"If the JSF request lifecycle is foreshortened by a redirect, Seam "
+"transparently stores and restores the current conversation context&mdash;"
+"unless the conversation was already ended via <literal>@End"
+"(beforeRedirect=true)</literal>."
+msgstr ""
+"Caso o ciclo de vida de solicitação JSF for reduzido pela redireção, o Seam armazenará e restaurará claramente o contexto de conversação atual &mdash; a não ser que a conversação já tenha sido encerrada pela <literal>@End"
+"(beforeRedirect=true)</literal>."
+
+#. Tag: para
+#: Conversations.xml:75
+#, no-c-format
+msgid ""
+"Seam transparently propagates the conversation context across JSF postbacks "
+"and redirects. If you don&#39;t do anything special, a <emphasis>non-faces "
+"request</emphasis> (a GET request for example) will not propagate the "
+"conversation context and will be processed in a new temporary conversation. "
+"This is usually - but not always - the desired behavior."
+msgstr "O Seam propaga abertamente o contexto de conversação retornando a postagem do JSF e realizando o redirecionamento. Caso, você não realize algo em especial, <emphasis>a solicitação sem faces</emphasis> (uma solicitação GET, por exemplo) não irá propagar-se no contexto de conversação e, conseqüentemente, uma nova conversação temporária será processada. Este é normalmente o componente desejado."
+
+#. Tag: para
+#: Conversations.xml:78
+#, no-c-format
+msgid ""
+"If you want to propagate a Seam conversation across a non-faces request, you "
+"need to explicitly code the Seam <emphasis>conversation id</emphasis> as a "
+"request parameter:"
+msgstr "Caso você deseje propagar uma conversação Seam através de uma solicitação sem faces, você precisará do código explícito da <emphasis>id de conversação</emphasis> do Seam, como um parâmetro de solicitação:"
+
+#. Tag: programlisting
+#: Conversations.xml:81
+#, no-c-format
+msgid ""
+"&lt;a href=\"main.jsf?conversationId=#{conversation.id}\"&gt;Continue&lt;/"
+"a&gt;"
+msgstr ""
+"&lt;a href=\"main.jsf?conversationId=#{conversation.id}\"&gt;Continue&lt;/"
+"a&gt;"
+
+#. Tag: para
+#: Conversations.xml:82
+#, no-c-format
+msgid "Or, the more JSF-ish:"
+msgstr "Ou mais JSF:"
+
+#. Tag: programlisting
+#: Conversations.xml:85
+#, no-c-format
+msgid ""
+"&lt;h:outputLink value=\"main.jsf\"&gt;\n"
+"    &lt;f:param name=\"conversationId\" value=\"#{conversation.id}\"/&gt;\n"
+"    &lt;h:outputText value=\"Continue\"/&gt;\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+"&lt;h:outputLink value=\"main.jsf\"&gt;\n"
+"    &lt;f:param name=\"conversationId\" value=\"#{conversation.id}\"/&gt;\n"
+"    &lt;h:outputText value=\"Continue\"/&gt;\n"
+"&lt;/h:outputLink&gt;"
+
+#. Tag: para
+#: Conversations.xml:86 Conversations.xml:94
+#, no-c-format
+msgid "If you use the Seam tag library, this is equivalent:"
+msgstr "Caso você utilize a biblioteca de caracteres Seam, isto será equivalente a:"
+
+#. Tag: programlisting
+#: Conversations.xml:89
+#, no-c-format
+msgid ""
+"&lt;h:outputLink value=\"main.jsf\"&gt;\n"
+"    &lt;s:conversationId/&gt;\n"
+"    &lt;h:outputText value=\"Continue\"/&gt;\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+"&lt;h:outputLink value=\"main.jsf\"&gt;\n"
+"    &lt;s:conversationId/&gt;\n"
+"    &lt;h:outputText value=\"Continue\"/&gt;\n"
+"&lt;/h:outputLink&gt;"
+
+#. Tag: para
+#: Conversations.xml:90
+#, no-c-format
+msgid ""
+"If you wish to disable propagation of the conversation context for a "
+"postback, a similar trick is used:"
+msgstr "Caso deseje desativar a propagação do contexto de conversação para a re-postagem, um procedimento parecido será utilizado:"
+
+#. Tag: programlisting
+#: Conversations.xml:93
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;f:param name=\"conversationPropagation\" value=\"none\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;f:param name=\"conversationPropagation\" value=\"none\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+
+#. Tag: programlisting
+#: Conversations.xml:97
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"none\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"none\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+
+#. Tag: para
+#: Conversations.xml:98
+#, no-c-format
+msgid ""
+"Note that disabling conversation context propagation is absolutely not the "
+"same thing as ending the conversation."
+msgstr "Observe que a desativação da propagação de contexto de conversação não é exatamente o mesmo procedimento que terminar uma conversação."
+
+#. Tag: para
+#: Conversations.xml:101
+#, no-c-format
+msgid ""
+"The <literal>conversationPropagation</literal> request parameter, or the "
+"<literal>&lt;s:conversationPropagation&gt;</literal> tag may even be used to "
+"begin and end conversation, or begin a nested conversation."
+msgstr "O parâmetro de solicitação <literal>conversationPropagation</literal> ou caractere da <literal>&lt;s:conversationPropagation&gt;</literal> poderá ser usado para começar e terminar uma conversação, ou ainda, começar uma conversação aninhada."
+
+#. Tag: programlisting
+#: Conversations.xml:104
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"end\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"end\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+
+#. Tag: programlisting
+#: Conversations.xml:105
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Child\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"nested\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+"&lt;h:commandLink action=\"main\" value=\"Select Child\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"nested\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+
+#. Tag: programlisting
+#: Conversations.xml:106
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Hotel\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"begin\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+"&lt;h:commandLink action=\"main\" value=\"Select Hotel\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"begin\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+
+#. Tag: programlisting
+#: Conversations.xml:107
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Hotel\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"join\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+"&lt;h:commandLink action=\"main\" value=\"Select Hotel\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"join\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+
+#. Tag: para
+#: Conversations.xml:108
+#, no-c-format
+msgid ""
+"This conversation model makes it easy to build applications which behave "
+"correctly with respect to multi-window operation. For many applications, "
+"this is all that is needed. Some complex applications have either or both of "
+"the following additional requirements:"
+msgstr "Este modelo de conversação facilita a construção de aplicativos que se comportam corretamente à operação múltipla de janela. Para muitos aplicativos, isto é tudo o que é necessário. Alguns aplicativos mais complexos têm as seguintes solicitações adicionais ou ambas: "
+
+#. Tag: para
+#: Conversations.xml:113
+#, no-c-format
+msgid ""
+"A conversation spans many smaller units of user interaction, which execute "
+"serially or even concurrently. The smaller <emphasis>nested conversations</"
+"emphasis> have their own isolated set of conversation state, and also have "
+"access to the state of the outer conversation."
+msgstr ""
+"A conversação estende diversas unidades pequenas de interação do usuário, que agem serialmente ou mesmo simultaneamente. A menor das <emphasis>conversações aninhadas</"
+"emphasis> possui o próprio conjunto isolado de conversação de estado, além de possuir acesso ao estado da conversação de fora. "
+
+#. Tag: para
+#: Conversations.xml:118
+#, no-c-format
+msgid ""
+"The user is able to switch between many conversations within the same "
+"browser window. This feature is called <emphasis>workspace management</"
+"emphasis>."
+msgstr ""
+"O usuário é capaz de optar entre muitas conversações da mesma janela de navegador. Este recurso é chamado <emphasis>gerenciamento de área de trabalho</"
+"emphasis>."
+
+#. Tag: title
+#: Conversations.xml:126
+#, no-c-format
+msgid "Nested conversations"
+msgstr "Conversações aninhadas"
+
+#. Tag: para
+#: Conversations.xml:127
+#, no-c-format
+msgid ""
+"A nested conversation is created by invoking a method marked <literal>@Begin"
+"(nested=true)</literal> inside the scope of an existing conversation. A "
+"nested conversation has its own conversation context, and also has read-only "
+"access to the context of the outer conversation. (It can read the outer "
+"conversation&#39;s context variables, but not write to them.) When an "
+"<literal>@End</literal> is subsequently encountered, the nested conversation "
+"will be destroyed, and the outer conversation will resume, by \"popping\" "
+"the conversation stack. Conversations may be nested to any arbitrary depth."
+msgstr ""
+"Uma conversação aninhada é criada por invocação de um método marcado <literal>@Begin"
+"(nested=true)</literal>, dentro do escopo de uma conversação existente. Uma conversação aninhada possui o próprio contexto de conversação e possui acesso de leitura apenas ao contexto de leitura de fora. (Ela pode ler variáveis de contexto de conversações de fora, mas não pode escrever para elas.) Quando um <literal>@End</literal> é subseqüentemente encontrado, a conversação aninhada será destruída e a conversação de fora se resumirá no lançamento do empilhamento da conversação. As conversações podem estar aninhadas a qualquer arbitrariedade profunda."
+
+#. Tag: para
+#: Conversations.xml:130
+#, no-c-format
+msgid ""
+"Certain user activity (workspace management, or the back button) can cause "
+"the outer conversation to be resumed before the inner conversation is ended. "
+"In this case it is possible to have multiple concurrent nested conversations "
+"belonging to the same outer conversation. If the outer conversation ends "
+"before a nested conversation ends, Seam destroys all nested conversation "
+"contexts along with the outer context."
+msgstr "Certas atividades de usuários (gerenciamento de área de trabalho, ou o botão voltar) podem levar a conversação de fora a ser resumida antes que a conversação interna seja terminada. Neste caso, é possível possuir conversações aninhadas atuais múltiplas pertencentes à mesma conversação de fora. Caso a conversação de fora encerre antes da conversação aninhada, o Seam destruirá todos os contextos de conversação aninhados juntamente com o contexto de fora. "
+
+#. Tag: para
+#: Conversations.xml:133
+#, no-c-format
+msgid ""
+"A conversation may be thought of as a <emphasis>continuable state</"
+"emphasis>. Nested conversations allow the application to capture a "
+"consistent continuable state at various points in a user interaction, thus "
+"insuring truly correct behavior in the face of backbuttoning and workspace "
+"management."
+msgstr ""
+"A conversação pode ser vista como um <emphasis>estado contínuo</"
+"emphasis>. As conversações aninhadas permitem o aplicativo a capturar o estado contínuo persistente sob vários aspectos de uma interação do usuário, garantindo, desta forma, o comportamento correto numa face de ativação do botão voltar e gerenciamento da área de trabalho."
+
+#. Tag: para
+#: Conversations.xml:136
+#, no-c-format
+msgid ""
+"TODO: an example to show how a nested conversation prevents bad stuff "
+"happening when you backbutton."
+msgstr "TODO: um exemplo para exibir como uma conversação aninhada previne que erros ocorram, uma vez em que você estiver ativando o botão voltar."
+
+#. Tag: para
+#: Conversations.xml:139
+#, no-c-format
+msgid ""
+"Usually, if a component exists in a parent conversation of the current "
+"nested conversation, the nested conversation will use the same instance. "
+"Occasionally, it is useful to have a different instance in each nested "
+"conversation, so that the component instance that exists in the parent "
+"conversation is invisible to its child conversations. You can achieve this "
+"behavior by annotating the component <literal>@PerNestedConversation</"
+"literal>."
+msgstr ""
+"Normalmente, se um componente existir numa conversação parent da conversação aninhada atual, a conversação aninhada irá usar a mesma instância. Ocasionalmente, é útil ter uma instância diferente em cada conversação aninhada, para que a instância do componente existente na conversação parent seja invisível para as próprias conversações child. Você pode atingir este comportamento anotando o componente <literal>@PerNestedConversation</"
+"literal>."
+
+#. Tag: title
+#: Conversations.xml:145
+#, no-c-format
+msgid "Starting conversations with GET requests"
+msgstr "Iniciando conversações com solicitações GET"
+
+#. Tag: para
+#: Conversations.xml:146
+#, no-c-format
+msgid ""
+"JSF does not define any kind of action listener that is triggered when a "
+"page is accessed via a non-faces request (for example, a HTTP GET request). "
+"This can occur if the user bookmarks the page, or if we navigate to the page "
+"via an <literal>&lt;h:outputLink&gt;</literal>."
+msgstr "O JSF não define qualquer tipo de action listener, da qual é atualizada uma vez em que a página é acessada por meio de uma solicitação sem-faces (por exemplo, uma solicitação GET HTTP). Isto pode acontecer se o usuário marcar a página ou se navegarmos na página por meio de um <literal>&lt;h:outputLink&gt;</literal>."
+
+#. Tag: para
+#: Conversations.xml:149
+#, no-c-format
+msgid ""
+"Sometimes we want to begin a conversation immediately the page is accessed. "
+"Since there is no JSF action method, we can&#39;t solve the problem in the "
+"usual way, by annotating the action with <literal>@Begin</literal>."
+msgstr "Às vezes queremos iniciar uma conversação imediatamente assim que a página é acessada. A partir de então, não há método action JSF, não podemos resolver o problema usando o procedimento normal, anotando a ação com <literal>@Begin</literal>."
+
+#. Tag: para
+#: Conversations.xml:152
+#, no-c-format
+msgid ""
+"A further problem arises if the page needs some state to be fetched into a "
+"context variable. We&#39;ve already seen two ways to solve this problem. If "
+"that state is held in a Seam component, we can fetch the state in a "
+"<literal>@Create</literal> method. If not, we can define a "
+"<literal>@Factory</literal> method for the context variable."
+msgstr "Um problema poderá ocorrer, caso a página precise que algum estado seja enviado a uma variável de contexto. Temos duas saídas para resolver este problema. Se o estado for mantido num componente Seam, poderemos enviar o estado a um método <literal>@Create</literal>. Do contrário, poderemos definir um método <literal>@Factory</literal> para a variável de contexto."
+
+#. Tag: para
+#: Conversations.xml:155
+#, no-c-format
+msgid ""
+"If none of these options works for you, Seam lets you define a "
+"<emphasis>page action</emphasis> in the <literal>pages.xml</literal> file."
+msgstr "Caso nenhuma destas opções funcionem, o Seam permite que você defina uma <emphasis>página ação</emphasis> no arquivo <literal>pages.xml</literal>."
+
+#. Tag: programlisting
+#: Conversations.xml:158
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\" action=\"#{messageManager.list}\"/"
+"&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\" action=\"#{messageManager.list}\"/"
+"&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Conversations.xml:159
+#, no-c-format
+msgid ""
+"This action method is called at the beginning of the render response phase, "
+"any time the page is about to be rendered. If a page action returns a non-"
+"null outcome, Seam will process any appropriate JSF and Seam navigation "
+"rules, possibly resulting in a completely different page being rendered."
+msgstr "O método ação é chamado no início do processamento da fase de resposta, a qualquer momento em que a página for processada. Caso a página ação retornar a um resultado não-nulo, o Seam irá processar qualquer JSF apropriado e regras de navegação Seam, possivelmente resultando numa página completamente diferente a ser processada. "
+
+#. Tag: para
+#: Conversations.xml:162
+#, no-c-format
+msgid ""
+"If <emphasis>all</emphasis> you want to do before rendering the page is "
+"begin a conversation, you could use a built-in action method that does just "
+"that:"
+msgstr "Caso <emphasis>tudo</emphasis> que você queira fazer seja inicializar uma conversação, antes do processamento da página, você poderá usar um método ação interno, do qual realiza o seguinte:"
+
+#. Tag: programlisting
+#: Conversations.xml:165
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\" action=\"#{conversation.begin}\"/"
+"&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\" action=\"#{conversation.begin}\"/"
+"&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Conversations.xml:166
+#, no-c-format
+msgid ""
+"Note that you can also call this built-in action from a JSF control, and, "
+"similarly, you can use <literal>#{conversation.end}</literal> to end "
+"conversations."
+msgstr "Perceba que você também pode chamar esta ação interna a partir de um controle JSF, e paralelamente você pode usar <literal>#{conversation.end}</literal>, para finalizar conersações."
+
+#. Tag: para
+#: Conversations.xml:169
+#, no-c-format
+msgid ""
+"If you want more control, to join existing conversations or begin a nested "
+"conversion, to begin a pageflow or an atomic conversation, you should use "
+"the <literal>&lt;begin-conversation&gt;</literal> element."
+msgstr "Caso você deseje mais controle para unir-se às conversações existentes ou estar numa conversação aninhada, você deverá utilizar um elemento <literal>&lt;begin-conversation&gt;</literal> para iniciar um pageflow ou uma conversação anatômica."
+
+#. Tag: programlisting
+#: Conversations.xml:172
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\"&gt;\n"
+"       &lt;begin-conversation nested=\"true\" pageflow=\"AddItem\"/&gt;\n"
+"    &lt;page&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\"&gt;\n"
+"       &lt;begin-conversation nested=\"true\" pageflow=\"AddItem\"/&gt;\n"
+"    &lt;page&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Conversations.xml:173
+#, no-c-format
+msgid "There is also an <literal>&lt;end-conversation&gt;</literal> element."
+msgstr "Há também um elemento <literal>&lt;end-conversation&gt;</literal>."
+
+#. Tag: programlisting
+#: Conversations.xml:176
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/home.jsp\"&gt;\n"
+"       &lt;end-conversation/&gt;\n"
+"    &lt;page&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/home.jsp\"&gt;\n"
+"       &lt;end-conversation/&gt;\n"
+"    &lt;page&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Conversations.xml:177
+#, no-c-format
+msgid "To solve the first problem, we now have five options:"
+msgstr "Para resolver este primeiro problema, temos cinco opções disponíveis:"
+
+#. Tag: para
+#: Conversations.xml:182
+#, no-c-format
+msgid "Annotate the <literal>@Create</literal> method with <literal>@Begin</literal>"
+msgstr "Anote o método <literal>@Create</literal> com <literal>@Begin</literal>"
+
+#. Tag: para
+#: Conversations.xml:187
+#, no-c-format
+msgid ""
+"Annotate the <literal>@Factory</literal> method with <literal>@Begin</"
+"literal>"
+msgstr ""
+"Anote o método <literal>@Factory</literal> com <literal>@Begin</"
+"literal>"
+
+#. Tag: para
+#: Conversations.xml:192
+#, no-c-format
+msgid "Annotate the Seam page action method with <literal>@Begin</literal>"
+msgstr "Anote o método ação de página Seam com <literal>@Begin</literal>"
+
+#. Tag: para
+#: Conversations.xml:197
+#, no-c-format
+msgid ""
+"Use <literal>&lt;begin-conversation&gt;</literal> in <literal>pages.xml</"
+"literal>."
+msgstr ""
+"Utilize <literal>&lt;begin-conversation&gt;</literal> nas <literal>pages.xml</"
+"literal>."
+
+#. Tag: para
+#: Conversations.xml:202
+#, no-c-format
+msgid "Use <literal>#{conversation.begin}</literal> as the Seam page action method"
+msgstr "Utilize <literal>#{conversation.begin}</literal> como um método ação de página Seam"
+
+#. Tag: title
+#: Conversations.xml:210
+#, no-c-format
+msgid ""
+"Using <literal>&lt;s:link&gt;</literal> and <literal>&lt;s:button&gt;</"
+"literal>"
+msgstr ""
+"Utilizando <literal>&lt;s:link&gt;</literal> e <literal>&lt;s:button&gt;</"
+"literal>"
+
+#. Tag: para
+#: Conversations.xml:211
+#, no-c-format
+msgid ""
+"JSF command links always perform a form submission via JavaScript, which "
+"breaks the web browser&#39;s \"open in new window\" or \"open in new tab\" "
+"feature. In plain JSF, you need to use an <literal>&lt;h:outputLink&gt;</"
+"literal> if you need this functionality. But there are two major limitations "
+"to <literal>&lt;h:outputLink&gt;</literal>."
+msgstr ""
+"Os links de comando JSF sempre executam uma submissão de formulário através do JavaScript, do qual interrompe o recurso de \"abrir uma nova janela\" ou \"abrir uma nova aba\", no navegador da web. Num simples JSF você precisará usar um <literal>&lt;h:outputLink&gt;</"
+"literal>, caso precise desta funcionalidade. No entanto, existem duas limitações grandes para o <literal>&lt;h:outputLink&gt;</literal>."
+
+#. Tag: para
+#: Conversations.xml:216
+#, no-c-format
+msgid ""
+"JSF provides no way to attach an action listener to an <literal>&lt;h:"
+"outputLink&gt;</literal>."
+msgstr ""
+"O JSF não fornece o caminho para anexar um action listener a um <literal>&lt;h:"
+"outputLink&gt;</literal>."
+
+#. Tag: para
+#: Conversations.xml:221
+#, no-c-format
+msgid ""
+"JSF does not propagate the selected row of a <literal>DataModel</literal> "
+"since there is no actual form submission."
+msgstr "O JSF não propaga a linha selecionada de um <literal>DataModel</literal>, uma vez que não existem submissões de formulários atuais."
+
+#. Tag: para
+#: Conversations.xml:226
+#, no-c-format
+msgid ""
+"Seam provides the notion of a <emphasis>page action</emphasis> to help solve "
+"the first problem, but this does nothing to help us with the second problem. "
+"We <emphasis>could</emphasis> work around this by using the RESTful approach "
+"of passing a request parameter and requerying for the selected object on the "
+"server side. In some cases&mdash;such as the Seam blog example "
+"application&mdash;this is indeed the best approach. The RESTful style "
+"supports bookmarking, since it does not require server-side state. In other "
+"cases, where we don&#39;t care about bookmarks, the use of "
+"<literal>@DataModel</literal> and <literal>@DataModelSelection</literal> is "
+"just so convenient and transparent!"
+msgstr "O Seam fornece a noção de uma <emphasis>página ação</emphasis> para ajudar a resolver o primeiro problema, mas isto não nos ajuda com o segundo problema. Nós <emphasis>poderíamos</emphasis> trabalhar nisto usando o acesso RESTful, passando um parâmetro de solicitação e re-consulta do objeto selecionado ao servidor. Em alguns casos, como o aplicativo de amostra de blog Seam, isto é considerado a melhor consulta. O estilo RESTfull suporta o indicador, desde que não seja requerido o estado do servidor. Em outros casos, quando não nos preocupamos com os indicadores, o uso do <literal>@DataModel</literal> e <literal>@DataModelSelection</literal> é bastante conveniente e transparente."
+
+#. Tag: para
+#: Conversations.xml:229
+#, no-c-format
+msgid ""
+"To fill in this missing functionality, and to make conversation propagation "
+"even simpler to manage, Seam provides the <literal>&lt;s:link&gt;</literal> "
+"JSF tag."
+msgstr "Para preencher esta funcionalidade e fazer com que a propagação de conversação seja ainda mais simples de ser manuseada, o Seam fornece a aba JSF <literal>&lt;s:link&gt;</literal>."
+
+#. Tag: para
+#: Conversations.xml:232
+#, no-c-format
+msgid "The link may specify just the JSF view id:"
+msgstr "O link poderá especificar apenas a identificação de visualização JSF:"
+
+#. Tag: programlisting
+#: Conversations.xml:235
+#, no-c-format
+msgid "&lt;s:link view=“/login.xhtml” value=“Login”/&gt;"
+msgstr "&lt;s:link view=“/login.xhtml” value=“Login”/&gt;"
+
+#. Tag: para
+#: Conversations.xml:236
+#, no-c-format
+msgid ""
+"Or, it may specify an action method (in which case the action outcome "
+"determines the page that results):"
+msgstr "Ou, isto poderá especificar um método ação (neste caso o resultado ação determinará a página resultante)"
+
+#. Tag: programlisting
+#: Conversations.xml:239
+#, no-c-format
+msgid "&lt;s:link action=“#{login.logout}” value=“Logout”/&gt;"
+msgstr "&lt;s:link action=“#{login.logout}” value=“Logout”/&gt;"
+
+#. Tag: para
+#: Conversations.xml:240
+#, no-c-format
+msgid ""
+"If you specify <emphasis>both</emphasis> a JSF view id and an action method, "
+"the &#39;view&#39; will be used <emphasis>unless</emphasis> the action "
+"method returns a non-null outcome:"
+msgstr "Caso você especifique <emphasis>ambos</emphasis>: a id de visualização JSF e um método ação, a visualização será usada, <emphasis>a não ser</emphasis>, que o método ação retorne a um resultado não-nulo:"
+
+#. Tag: programlisting
+#: Conversations.xml:243
+#, no-c-format
+msgid ""
+"&lt;s:link view=\"/loggedOut.xhtml\"  action=“#{login.logout}” "
+"value=“Logout”/&gt;"
+msgstr ""
+"&lt;s:link view=\"/loggedOut.xhtml\"  action=“#{login.logout}” "
+"value=“Logout”/&gt;"
+
+#. Tag: para
+#: Conversations.xml:244
+#, no-c-format
+msgid ""
+"The link automatically propagates the selected row of a <literal>DataModel</"
+"literal> using inside <literal>&lt;h:dataTable&gt;</literal>:"
+msgstr ""
+"O link automaticamente propaga a linha selecionada de um <literal>DataModel</"
+"literal> usando dentro a <literal>&lt;h:dataTable&gt;</literal>:"
+
+#. Tag: programlisting
+#: Conversations.xml:247
+#, no-c-format
+msgid ""
+"&lt;s:link view=“/hotel.xhtml” action=“#{hotelSearch.selectHotel}” value=“#"
+"{hotel.name}”/&gt;"
+msgstr ""
+"&lt;s:link view=“/hotel.xhtml” action=“#{hotelSearch.selectHotel}” value=“#"
+"{hotel.name}”/&gt;"
+
+#. Tag: para
+#: Conversations.xml:248
+#, no-c-format
+msgid "You can leave the scope of an existing conversation:"
+msgstr "Você poderá deixar o escopo de uma conversação existente:"
+
+#. Tag: programlisting
+#: Conversations.xml:251
+#, no-c-format
+msgid "&lt;s:link view=“/main.xhtml” propagation=“none”/&gt;"
+msgstr "&lt;s:link view=“/main.xhtml” propagation=“none”/&gt;"
+
+#. Tag: para
+#: Conversations.xml:252
+#, no-c-format
+msgid "You can begin, end, or nest conversations:"
+msgstr "Você poderá inicializar, encerrar ou aninhar as conversações:"
+
+#. Tag: programlisting
+#: Conversations.xml:255
+#, no-c-format
+msgid "&lt;s:link action=“#{issueEditor.viewComment}” propagation=“nest”/&gt;"
+msgstr "&lt;s:link action=“#{issueEditor.viewComment}” propagation=“nest”/&gt;"
+
+#. Tag: para
+#: Conversations.xml:256
+#, no-c-format
+msgid ""
+"If the link begins a conversation, you can even specify a pageflow to be "
+"used:"
+msgstr "Caso o link inicialize uma conversação, você poderá ainda especificar o pageflow a ser utilizado:"
+
+#. Tag: programlisting
+#: Conversations.xml:259
+#, no-c-format
+msgid ""
+"&lt;s:link action=“#{documentEditor.getDocument}” propagation=“begin” \n"
+"        pageflow=“EditDocument”/&gt;"
+msgstr ""
+"&lt;s:link action=“#{documentEditor.getDocument}” propagation=“begin” \n"
+"        pageflow=“EditDocument”/&gt;"
+
+#. Tag: para
+#: Conversations.xml:260
+#, no-c-format
+msgid "The <literal>taskInstance</literal> attribute if for use in jBPM task lists:"
+msgstr "O atributo <literal>taskInstance</literal> caso seja para o uso nas listas de tarefas JBPM:"
+
+#. Tag: programlisting
+#: Conversations.xml:263
+#, no-c-format
+msgid ""
+"&lt;s:link action=“#{documentApproval.approveOrReject}” taskInstance=“#"
+"{task}”/&gt;"
+msgstr ""
+"&lt;s:link action=“#{documentApproval.approveOrReject}” taskInstance=“#"
+"{task}”/&gt;"
+
+#. Tag: para
+#: Conversations.xml:264
+#, no-c-format
+msgid "(See the DVD Store demo application for examples of this.)"
+msgstr "(Veja o DVD do aplicativo demo de armazenamento para exemplos como este.)"
+
+#. Tag: para
+#: Conversations.xml:267
+#, no-c-format
+msgid ""
+"Finally, if you need the \"link\" to be rendered as a button, use "
+"<literal>&lt;s:button&gt;</literal>:"
+msgstr "E, finalmente, caso você precise do \"link\" a ser processado como um botão, utilize <literal>&lt;s:button&gt;</literal>:"
+
+#. Tag: programlisting
+#: Conversations.xml:270
+#, no-c-format
+msgid "&lt;s:button action=“#{login.logout}” value=“Logout”/&gt;"
+msgstr "&lt;s:button action=“#{login.logout}” value=“Logout”/&gt;"
+
+#. Tag: title
+#: Conversations.xml:274
+#, no-c-format
+msgid "Success messages"
+msgstr "Mensagens de sucesso"
+
+#. Tag: para
+#: Conversations.xml:275
+#, no-c-format
+msgid ""
+"It is quite common to display a message to the user indicating success or "
+"failure of an action. It is convenient to use a JSF <literal>FacesMessage</"
+"literal> for this. Unfortunately, a successful action often requires a "
+"browser redirect, and JSF does not propagate faces messages across "
+"redirects. This makes it quite difficult to display success messages in "
+"plain JSF."
+msgstr ""
+"É bem comum exibir uma mensagem ao usuário indicando o sucesso ou falha de uma ação. Neste caso, é conveniente usar <literal>FacesMessage</"
+"literal> JSF. Infelizmente, uma ação bem sucedida normalmente solicita a redireção do navegador, e o JSF não propaga mensagens de faces através de redireções. Isto dificulta a exibição de mensagens bem sucedidas num JSB simples."
+
+#. Tag: para
+#: Conversations.xml:278
+#, no-c-format
+msgid ""
+"The built in conversation-scoped Seam component named "
+"<literal>facesMessages</literal> solves this problem. (You must have the "
+"Seam redirect filter installed.)"
+msgstr "A construção num escopo de conversação <literal>facesMessages</literal>, de componente nomeado Seam, soluciona este problema. (Você deverá ter instalado o filtro de redirecionamento Seam.)"
+
+#. Tag: programlisting
+#: Conversations.xml:281
+#, no-c-format
+msgid ""
+"@Name(\"editDocumentAction\")\n"
+"@Stateless\n"
+"public class EditDocumentBean implements EditDocument {\n"
+"    @In EntityManager em;\n"
+"    @In Document document;\n"
+"    @In FacesMessages facesMessages;\n"
+"    \n"
+"    public String update() {\n"
+"        em.merge(document);\n"
+"        facesMessages.add(\"Document updated\");\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"editDocumentAction\")\n"
+"@Stateless\n"
+"public class EditDocumentBean implements EditDocument {\n"
+"    @In EntityManager em;\n"
+"    @In Document document;\n"
+"    @In FacesMessages facesMessages;\n"
+"    \n"
+"    public String update() {\n"
+"        em.merge(document);\n"
+"        facesMessages.add(\"Document updated\");\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Conversations.xml:282
+#, no-c-format
+msgid ""
+"Any message added to <literal>facesMessages</literal> is used in the very "
+"next render response phase for the current conversation. This even works "
+"when there is no long-running conversation since Seam preserves even "
+"temporary conversation contexts across redirects."
+msgstr "Qualquer mensagem adicionada às <literal>facesMessages</literal> é usada no próximo processo da fase de resposta da conversação atual. Isto também acontece quando não houver uma conversação de longa execução, desde que o Seam preserve contextos de conversação (mesmo que temporários) por meio de redirecionamentos."
+
+#. Tag: para
+#: Conversations.xml:285
+#, no-c-format
+msgid "You can even include JSF EL expressions in a faces message summary:"
+msgstr "Você pode ainda incluir expressões EL JSF, num sumário de mensagem de faces:"
+
+#. Tag: programlisting
+#: Conversations.xml:288
+#, no-c-format
+msgid "facesMessages.add(\"Document #{document.title} was updated\");"
+msgstr "facesMessages.add(\"Document #{document.title} was updated\");"
+
+#. Tag: para
+#: Conversations.xml:289
+#, no-c-format
+msgid "You may display the messages in the usual way, for example:"
+msgstr "Você poderá exibir mensagens numa maneira comum, como segue o exemplo abaixo:"
+
+#. Tag: programlisting
+#: Conversations.xml:292
+#, no-c-format
+msgid "&lt;h:messages globalOnly=\"true\"/&gt;"
+msgstr "&lt;h:messages globalOnly=\"true\"/&gt;"
+
+#. Tag: title
+#: Conversations.xml:296
+#, no-c-format
+msgid "Using an \"explicit\" conversation id"
+msgstr "Utilizando uma identidade de conversação \"explícita\""
+
+#. Tag: para
+#: Conversations.xml:297
+#, no-c-format
+msgid ""
+"Ordinarily, Seam generates a meaningless unique id for each conversation in "
+"each session. You can customize the id value when you begin the conversation."
+msgstr "Normalmente, o Seam gera uma identidade única e insignificante para cada conversação de cada sessão. Você poderá personalizar o valor da identidade, quando a conversação inicializar."
+
+#. Tag: para
+#: Conversations.xml:300
+#, no-c-format
+msgid ""
+"This feature can be used to customize the conversation id generation "
+"algorithm like so:"
+msgstr "Este recurso pode ser usado para personalizar a id de conversação do algoritmo de geração, como segue a seguir:"
+
+#. Tag: programlisting
+#: Conversations.xml:303
+#, no-c-format
+msgid ""
+"@Begin(id=\"#{myConversationIdGenerator.nextId}\") \n"
+"public void editHotel() { ... }"
+msgstr ""
+"@Begin(id=\"#{myConversationIdGenerator.nextId}\") \n"
+"public void editHotel() { ... }"
+
+#. Tag: para
+#: Conversations.xml:304
+#, no-c-format
+msgid "Or it can be used to assign a meaningful conversation id:"
+msgstr "Ou pode ser usado para determinar uma id de conversação insignificante:"
+
+#. Tag: programlisting
+#: Conversations.xml:307
+#, no-c-format
+msgid ""
+"@Begin(id=\"hotel#{hotel.id}\") \n"
+"public String editHotel() { ... }"
+msgstr ""
+"@Begin(id=\"hotel#{hotel.id}\") \n"
+"public String editHotel() { ... }"
+
+#. Tag: programlisting
+#: Conversations.xml:308
+#, no-c-format
+msgid ""
+"@Begin(id=\"hotel#{hotelsDataModel.rowData.id}\") \n"
+"public String selectHotel() { ... }"
+msgstr ""
+"@Begin(id=\"hotel#{hotelsDataModel.rowData.id}\") \n"
+"public String selectHotel() { ... }"
+
+#. Tag: programlisting
+#: Conversations.xml:309
+#, no-c-format
+msgid ""
+"@Begin(id=\"entry#{params[&#39;blogId&#39;]}\")\n"
+"public String viewBlogEntry() { ... }"
+msgstr ""
+"@Begin(id=\"entry#{params[&#39;blogId&#39;]}\")\n"
+"public String viewBlogEntry() { ... }"
+
+#. Tag: programlisting
+#: Conversations.xml:310
+#, no-c-format
+msgid ""
+"@BeginTask(id=\"task#{taskInstance.id}\") \n"
+"public String approveDocument() { ... }"
+msgstr ""
+"@BeginTask(id=\"task#{taskInstance.id}\") \n"
+"public String approveDocument() { ... }"
+
+#. Tag: para
+#: Conversations.xml:311
+#, no-c-format
+msgid ""
+"Clearly, these example result in the same conversation id every time a "
+"particular hotel, blog or task is selected. So what happens if a "
+"conversation with the same conversation id already exists when the new "
+"conversation begins? Well, Seam detects the existing conversation and "
+"redirects to that conversation without running the <literal>@Begin</literal> "
+"method again. This feature helps control the number of workspaces that are "
+"created when using workspace management."
+msgstr "Logicamente, estas amostras resultam na mesma id de conversação a cada vez em que um específico hotel, blog ou tarefa for selecionado. Então, o que acontecerá se uma conversação com a mesma id de conversação já existir quando uma nova conversação inicializar? Bem, o Seam identifica a conversação existente e a redireciona à conversação anterior, sem executar novamente o método <literal>@Begin</literal>. Este recurso ajuda a controlar o número de áreas de trabalho, das quais são criadas quando utilizando o gerenciamento da área de trabalho."
+
+#. Tag: title
+#: Conversations.xml:317
+#, no-c-format
+msgid "Workspace management"
+msgstr "Gerenciamento da área de trabalho"
+
+#. Tag: para
+#: Conversations.xml:318
+#, no-c-format
+msgid ""
+"Workspace management is the ability to \"switch\" conversations in a single "
+"window. Seam makes workspace management completely transparent at the level "
+"of the Java code. To enable workspace management, all you need to do is:"
+msgstr "O gerenciamento da área de trabalho é a habilidade de \"trocar\" conversações numa única janela. O Seam realiza inteiramente o gerenciamento da área de trabalho, de forma clara, sob nível do código Java. Para permitir o gerenciamento da área de trabalho, você precisará apenas:"
+
+#. Tag: para
+#: Conversations.xml:323
+#, no-c-format
+msgid ""
+"Provide <emphasis>description</emphasis> text for each view id (when using "
+"JSF or Seam navigation rules) or page node (when using jPDL pageflows). This "
+"description text is displayed to the user by the workspace switchers."
+msgstr "Fornecer o texto de <emphasis>descrição</emphasis> para cada identidade de visualização (quando utilizando regras de navegação Seam ou JSF) ou nó de página (quando utilizando pageflows JPDL). Este texto de descrição é exibido ao usuário pelos interruptores da área de trabalho."
+
+#. Tag: para
+#: Conversations.xml:328
+#, no-c-format
+msgid ""
+"Include one or more of the standard workspace switcher JSP or facelets "
+"fragments in your pages. The standard fragments support workspace management "
+"via a drop down menu, a list of conversations, or breadcrumbs."
+msgstr "Incluir um ou mais do JSP interruptor da área de trabalho padrão ou fragmentos facelets nas suas próprias páginas. Os fragmentos padrões suportam o gerenciamento da área de trabalho por meio do menu suspenso, da lista de conversação ou breadcrumbs."
+
+#. Tag: title
+#: Conversations.xml:333
+#, no-c-format
+msgid "Workspace management and JSF navigation"
+msgstr "Gerenciamento da área de trabalho e navegador JSF"
+
+#. Tag: para
+#: Conversations.xml:334
+#, no-c-format
+msgid ""
+"When you use JSF or Seam navigation rules, Seam switches to a conversation "
+"by restoring the current <literal>view-id</literal> for that conversation. "
+"The descriptive text for the workspace is defined in a file called "
+"<literal>pages.xml</literal> that Seam expects to find in the <literal>WEB-"
+"INF</literal> directory, right next to <literal>faces-config.xml</literal>:"
+msgstr ""
+"Quando usando as regras de navegação Seam ou JSF, o Seam muda para uma conversação, apenas restaurando a <literal>view-id</literal> atual para a conversação. O texto descritivo para a área de trabalho é definido num arquivo chamado <literal>pages.xml</literal>, do qual o Seam espera encontrar no diretório <literal>WEB-"
+"INF</literal>, perto do <literal>faces-config.xml</literal>:"
+
+#. Tag: programlisting
+#: Conversations.xml:337
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/main.xhtml\"&gt;Search hotels: #{hotelBooking."
+"searchString}&lt;/page&gt;\n"
+"    &lt;page view-id=\"/hotel.xhtml\"&gt;View hotel: #{hotel.name}&lt;/"
+"page&gt;\n"
+"    &lt;page view-id=\"/book.xhtml\"&gt;Book hotel: #{hotel.name}&lt;/"
+"page&gt;\n"
+"    &lt;page view-id=\"/confirm.xhtml\"&gt;Confirm: #{booking.description}"
+"&lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/main.xhtml\"&gt;Search hotels: #{hotelBooking."
+"searchString}&lt;/page&gt;\n"
+"    &lt;page view-id=\"/hotel.xhtml\"&gt;View hotel: #{hotel.name}&lt;/"
+"page&gt;\n"
+"    &lt;page view-id=\"/book.xhtml\"&gt;Book hotel: #{hotel.name}&lt;/"
+"page&gt;\n"
+"    &lt;page view-id=\"/confirm.xhtml\"&gt;Confirm: #{booking.description}"
+"&lt;/page&gt;\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Conversations.xml:338
+#, no-c-format
+msgid ""
+"Note that if this file is missing, the Seam application will continue to "
+"work perfectly! The only missing functionality will be the ability to switch "
+"workspaces."
+msgstr "Perceba que se este arquivo não for encontrado, o aplicativo Seam continuará trabalhando perfeitamente! A única funcionalidade necessária será a habilidade de trocas de áreas de trabalho."
+
+#. Tag: title
+#: Conversations.xml:344
+#, no-c-format
+msgid "Workspace management and jPDL pageflow"
+msgstr "O gerenciamento da área de trabalho e pageflow JPDL"
+
+#. Tag: para
+#: Conversations.xml:345
+#, no-c-format
+msgid ""
+"When you use a jPDL pageflow definition, Seam switches to a conversation by "
+"restoring the current jBPM process state. This is a more flexible model "
+"since it allows the same <literal>view-id</literal> to have different "
+"descriptions depending upon the current <literal>&lt;page&gt;</literal> "
+"node. The description text is defined by the <literal>&lt;page&gt;</literal> "
+"node:"
+msgstr "Quando utilizando uma definição pageflow JPDL, o Seam muda para uma conversação restaurando o estado atual de processo JBPM. Este é um modelo mais flexível, uma vez que isto permite que a mesma <literal>view-id</literal> tenha descrições diferentes baseando-se no nó da <literal>&lt;page&gt;</literal> atual. O texto de descrição é definido pelo nó da <literal>&lt;page&gt;</literal>:"
+
+#. Tag: programlisting
+#: Conversations.xml:348
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"shopping\"&gt;\n"
+"\n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"browse\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;page name=\"browse\" view-id=\"/browse.xhtml\"&gt;\n"
+"      &lt;description&gt;DVD Search: #{search.searchPattern}&lt;/"
+"description&gt;\n"
+"      &lt;transition to=\"browse\"/&gt;\n"
+"      &lt;transition name=\"checkout\" to=\"checkout\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"checkout\" view-id=\"/checkout.xhtml\"&gt;\n"
+"      &lt;description&gt;Purchase: $#{cart.total}&lt;/description&gt;\n"
+"      &lt;transition to=\"checkout\"/&gt;\n"
+"      &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"complete\" view-id=\"/complete.xhtml\"&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+"&lt;pageflow-definition name=\"shopping\"&gt;\n"
+"\n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"browse\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;page name=\"browse\" view-id=\"/browse.xhtml\"&gt;\n"
+"      &lt;description&gt;DVD Search: #{search.searchPattern}&lt;/"
+"description&gt;\n"
+"      &lt;transition to=\"browse\"/&gt;\n"
+"      &lt;transition name=\"checkout\" to=\"checkout\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"checkout\" view-id=\"/checkout.xhtml\"&gt;\n"
+"      &lt;description&gt;Purchase: $#{cart.total}&lt;/description&gt;\n"
+"      &lt;transition to=\"checkout\"/&gt;\n"
+"      &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"complete\" view-id=\"/complete.xhtml\"&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+
+#. Tag: title
+#: Conversations.xml:352
+#, no-c-format
+msgid "The conversation switcher"
+msgstr "O interruptor de conversação"
+
+#. Tag: para
+#: Conversations.xml:353
+#, no-c-format
+msgid ""
+"Include the following fragment in your JSP or facelets page to get a drop-"
+"down menu that lets you switch to any current conversation, or to any other "
+"page of the application:"
+msgstr "Adicione o seguinte fragmento no seu JSP ou páginas facelets, para a obtenção de um menu suspenso que permite você mudar para qualquer conversação atual ou qualquer outra página do aplicativo:"
+
+#. Tag: programlisting
+#: Conversations.xml:356
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{switcher.conversationIdOrOutcome}\"&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Find Issues\" itemValue=\"findIssue\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Create Issue\" itemValue=\"editIssue\"/"
+"&gt;\n"
+"    &lt;f:selectItems value=\"#{switcher.selectItems}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{switcher.select}\" value=\"Switch\"/&gt;"
+msgstr ""
+"&lt;h:selectOneMenu value=\"#{switcher.conversationIdOrOutcome}\"&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Find Issues\" itemValue=\"findIssue\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Create Issue\" itemValue=\"editIssue\"/"
+"&gt;\n"
+"    &lt;f:selectItems value=\"#{switcher.selectItems}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{switcher.select}\" value=\"Switch\"/&gt;"
+
+#. Tag: para
+#: Conversations.xml:357
+#, no-c-format
+msgid ""
+"In this example, we have a menu that includes an item for each conversation, "
+"together with two additional items that let the user begin a new "
+"conversation."
+msgstr "Neste exemplo, temos um menu que inclui um ítem para cada conversação, juntamente com dois ítens adicionais que permitem o usuário inicializar uma nova conversação."
+
+#. Tag: title
+#: Conversations.xml:371
+#, no-c-format
+msgid "The conversation list"
+msgstr "A lista de conversação "
+
+#. Tag: para
+#: Conversations.xml:372
+#, no-c-format
+msgid ""
+"The conversation list is very similar to the conversation switcher, except "
+"that it is displayed as a table:"
+msgstr "A lista de conversação é bastante similar ao interruptor de conversação, com exceção de que é exibida como uma tabela:"
+
+#. Tag: programlisting
+#: Conversations.xml:375
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{conversationList}\" var=\"entry\"\n"
+"        rendered=\"#{not empty conversationList}\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Workspace&lt;/f:facet&gt;\n"
+"        &lt;h:commandLink action=\"#{entry.select}\" value=\"#{entry."
+"description}\"/&gt;\n"
+"        &lt;h:outputText value=\"[current]\" rendered=\"#{entry.current}\"/"
+"&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Activity&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{entry.startDatetime}\"&gt;\n"
+"            &lt;f:convertDateTime type=\"time\" pattern=\"hh:mm a\"/&gt;\n"
+"        &lt;/h:outputText&gt;\n"
+"        &lt;h:outputText value=\" - \"/&gt;\n"
+"        &lt;h:outputText value=\"#{entry.lastDatetime}\"&gt;\n"
+"            &lt;f:convertDateTime type=\"time\" pattern=\"hh:mm a\"/&gt;\n"
+"        &lt;/h:outputText&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"        &lt;h:commandButton action=\"#{entry.select}\" value=\"#{msg.Switch}"
+"\"/&gt;\n"
+"        &lt;h:commandButton action=\"#{entry.destroy}\" value=\"#{msg."
+"Destroy}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+"&lt;h:dataTable value=\"#{conversationList}\" var=\"entry\"\n"
+"        rendered=\"#{not empty conversationList}\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Workspace&lt;/f:facet&gt;\n"
+"        &lt;h:commandLink action=\"#{entry.select}\" value=\"#{entry."
+"description}\"/&gt;\n"
+"        &lt;h:outputText value=\"[current]\" rendered=\"#{entry.current}\"/"
+"&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Activity&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{entry.startDatetime}\"&gt;\n"
+"            &lt;f:convertDateTime type=\"time\" pattern=\"hh:mm a\"/&gt;\n"
+"        &lt;/h:outputText&gt;\n"
+"        &lt;h:outputText value=\" - \"/&gt;\n"
+"        &lt;h:outputText value=\"#{entry.lastDatetime}\"&gt;\n"
+"            &lt;f:convertDateTime type=\"time\" pattern=\"hh:mm a\"/&gt;\n"
+"        &lt;/h:outputText&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"        &lt;h:commandButton action=\"#{entry.select}\" value=\"#{msg.Switch}"
+"\"/&gt;\n"
+"        &lt;h:commandButton action=\"#{entry.destroy}\" value=\"#{msg."
+"Destroy}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+
+#. Tag: para
+#: Conversations.xml:376
+#, no-c-format
+msgid "We imagine that you will want to customize this for your own application."
+msgstr "Imaginamos que você irá personalizá-la para seu próprio aplicativo."
+
+#. Tag: para
+#: Conversations.xml:387
+#, no-c-format
+msgid ""
+"The conversation list is nice, but it takes up a lot of space on the page, "
+"so you probably don&#39;t want to put it on <emphasis>every</emphasis> page."
+msgstr "A lista de conversação é excelente, porém ocupa bastante espaço na página. Desta forma, você provavelmente não irá colocá-la em <emphasis>todas</emphasis> as páginas."
+
+#. Tag: para
+#: Conversations.xml:390
+#, no-c-format
+msgid "Notice that the conversation list lets the user destroy workspaces."
+msgstr "Perceba que a lista de conversação permite que o usuário destrua áreas de trabalho."
+
+#. Tag: title
+#: Conversations.xml:396
+#, no-c-format
+msgid "Breadcrumbs"
+msgstr "Breadcrumbs"
+
+#. Tag: para
+#: Conversations.xml:397
+#, no-c-format
+msgid ""
+"Breadcrumbs are useful in applications which use a nested conversation "
+"model. The breadcrumbs are a list of links to conversations in the current "
+"conversation stack:"
+msgstr "Os breadcrumbs são úteis em aplicativos que utilizam um modelo de conversação aninhada. Eles são uma lista de links para conversações no empilhamento de conversação atual:"
+
+#. Tag: programlisting
+#: Conversations.xml:400
+#, no-c-format
+msgid ""
+"&lt;t:dataList value=\"#{conversationStack}\" var=\"entry\"&gt;\n"
+"    &lt;h:outputText value=\" | \"/&gt; \n"
+"    &lt;h:commandLink value=\"#{entry.description}\" action=\"#{entry.select}"
+"\"/&gt;\n"
+"&lt;/t:dataList&gt;"
+msgstr ""
+"&lt;t:dataList value=\"#{conversationStack}\" var=\"entry\"&gt;\n"
+"    &lt;h:outputText value=\" | \"/&gt; \n"
+"    &lt;h:commandLink value=\"#{entry.description}\" action=\"#{entry.select}"
+"\"/&gt;\n"
+"&lt;/t:dataList&gt;"
+
+#. Tag: para
+#: Conversations.xml:413
+#, no-c-format
+msgid ""
+"Please refer to the Seam Issue Tracker demo to see all this functionality in "
+"action!"
+msgstr "Por favor consulte o Seam Issue Tracker demo para melhor entendimento a respeito desta funcionalidade em ação!"
+
+#. Tag: title
+#: Conversations.xml:421
+#, no-c-format
+msgid "Conversational components and JSF component bindings"
+msgstr "Componentes de conversação e vinculações de componente JSF"
+
+#. Tag: para
+#: Conversations.xml:422
+#, no-c-format
+msgid ""
+"Conversational components have one minor limitation: they cannot be used to "
+"hold bindings to JSF components. (We generally prefer not to use this "
+"feature of JSF unless absolutely necessary, since it creates a hard "
+"dependency from application logic to the view.) On a postback request, "
+"component bindings are updated during the Restore View phase, before the "
+"Seam conversation context has been restored."
+msgstr "Os componentes de conversação possuem um limitação mínima: eles não podem ser usados para manter vinculações dos componentes JSF. (Normalmente, preferimos não utilizar este recurso do JSF, a não ser que isto seja absolutamente necessário uma vez que ele cria uma dependência a partir da lógica de aplicativo à visualização.) Numa solicitação de postagem, as vinculações de componente são atualizadas durante a fase de visualização de restauração, antes do contexto de conversação Seam ser restaurado."
+
+#. Tag: para
+#: Conversations.xml:425
+#, no-c-format
+msgid ""
+"To work around this use an event scoped component to store the component "
+"bindings and inject it into the conversation scoped component that requires "
+"it."
+msgstr "Para trabalhar com isto, use um componente de escopo de evento de vinculação de componente e insira isto no componente de escopo de conversação que os solicita."
+
+#. Tag: programlisting
+#: Conversations.xml:428
+#, no-c-format
+msgid ""
+"@Name(\"grid\")\n"
+"@Scope(ScopeType.EVENT)\n"
+"public class Grid\n"
+"{\n"
+"    private HtmlPanelGrid htmlPanelGrid;\n"
+"\n"
+"    // getters and setters\n"
+"    ...\n"
+"}"
+msgstr ""
+"@Name(\"grid\")\n"
+"@Scope(ScopeType.EVENT)\n"
+"public class Grid\n"
+"{\n"
+"    private HtmlPanelGrid htmlPanelGrid;\n"
+"\n"
+"    // getters and setters\n"
+"    ...\n"
+"}"
+
+#. Tag: programlisting
+#: Conversations.xml:429
+#, no-c-format
+msgid ""
+"@Name(\"gridEditor\")\n"
+"@Scope(ScopeType.CONVERSATION)\n"
+"public class GridEditor\n"
+"{\n"
+"    @In(required=false)\n"
+"    private Grid grid;\n"
+"    \n"
+"    ...\n"
+"}"
+msgstr ""
+"@Name(\"gridEditor\")\n"
+"@Scope(ScopeType.CONVERSATION)\n"
+"public class GridEditor\n"
+"{\n"
+"    @In(required=false)\n"
+"    private Grid grid;\n"
+"    \n"
+"    ...\n"
+"}"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Drools.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Drools.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Drools.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,387 @@
+# translation of Drools.po to Brazilian Portuguese
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Leticia de Lima <ldelima at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Drools\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2008-06-13 15:29+1000\n"
+"Last-Translator: Leticia de Lima <ldelima at redhat.com>\n"
+"Language-Team: Brazilian Portuguese <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms:  JBEAP420 \n"
+
+#. Tag: title
+#: Drools.xml:6
+#, no-c-format
+msgid "Seam and JBoss Rules"
+msgstr "Regras JBoss e Seam"
+
+#. Tag: para
+#: Drools.xml:7
+#, no-c-format
+msgid ""
+"Seam makes it easy to call JBoss Rules (Drools) rulebases from Seam "
+"components or jBPM process definitions."
+msgstr "O Seam facilita a chamada das regras bases (Drools) de Regras JBoss, a partir de componentes Seam ou definições de processo JBPM. "
+
+#. Tag: title
+#: Drools.xml:11
+#, no-c-format
+msgid "Installing rules"
+msgstr "Regras de instalação"
+
+#. Tag: para
+#: Drools.xml:12
+#, no-c-format
+msgid ""
+"The first step is to make an instance of <literal>org.drools.RuleBase</"
+"literal> available in a Seam context variable. In most rules-driven "
+"applications, rules need to be dynamically deployable, so you will need to "
+"implement some solution that allows you to deploy rules and make them "
+"available to Seam (a future release of Drools will provide a Rule Server "
+"that solves this problem). For testing purposes, Seam provides a built-in "
+"component that compiles a static set of rules from the classpath. You can "
+"install this component via <literal>components.xml</literal>:"
+msgstr ""
+"O primeiro passo é fazer uma instância de <literal>org.drools.RuleBase</"
+"literal> disponível numa variável de contexto Seam. Na maioria de aplicativos de regras dirigidas, as regras precisam ser dinamicamente implantáveis para que você implemente uma solução da qual o permitirá implantar regras, além de fazê-las disponíveis ao Seam (uma liberação futura de Drools fornecerá um Servidor de Regra que solucionará este problema). Em caso de testes, o Seam fornecerá um componente interno, do qual copila um conjunto de estatística de regras a partir da classpath. Você pode instalar este componente por meio dos <literal>components.xml</literal>:"
+
+#. Tag: programlisting
+#: Drools.xml:15
+#, no-c-format
+msgid ""
+"&lt;drools:rule-base name=\"policyPricingRules\"&gt;\n"
+"    &lt;drools:rule-files&gt;\n"
+"        &lt;value&gt;policyPricingRules&lt;/value&gt;\n"
+"    &lt;/drools:rule-files&gt;\n"
+"&lt;/drools:rule-base&gt;"
+msgstr ""
+"&lt;drools:rule-base name=\"policyPricingRules\"&gt;\n"
+"    &lt;drools:rule-files&gt;\n"
+"        &lt;value&gt;policyPricingRules&lt;/value&gt;\n"
+"    &lt;/drools:rule-files&gt;\n"
+"&lt;/drools:rule-base&gt;"
+
+#. Tag: para
+#: Drools.xml:16
+#, no-c-format
+msgid ""
+"This component compiles rules from a set of <literal>.drl</literal> files "
+"and caches an instance of <literal>org.drools.RuleBase</literal> in the Seam "
+"<literal>APPLICATION</literal> context. Note that it is quite likely that "
+"you will need to install multiple rule bases in a rule-driven application."
+msgstr "Este componente copila as regras a partir de um conjunto de arquivos <literal>.drl</literal> e caches de instância de <literal>org.drools.RuleBase</literal>, num contexto de <literal>APPLICATION</literal> Seam. Perceba que é bem provável que você tenha que instalar bases de regras múltiplas num aplicativo de regra dirigida."
+
+#. Tag: para
+#: Drools.xml:19
+#, no-c-format
+msgid "If you want to use a Drools DSL, you alse need to specify the DSL definition:"
+msgstr "Caso você queira usar um DSL Drools, você precisará especificar também a definição DSL:"
+
+#. Tag: programlisting
+#: Drools.xml:22
+#, no-c-format
+msgid ""
+"&lt;drools:rule-base name=\"policyPricingRules\" dsl-file=\"policyPricing.dsl"
+"\"&gt;\n"
+"    &lt;drools:rule-files&gt;\n"
+"        &lt;value&gt;policyPricingRules&lt;/value&gt;\n"
+"    &lt;/drools:rule-files&gt;\n"
+"&lt;/drools:rule-base&gt;"
+msgstr ""
+"&lt;drools:rule-base name=\"policyPricingRules\" dsl-file=\"policyPricing.dsl"
+"\"&gt;\n"
+"    &lt;drools:rule-files&gt;\n"
+"        &lt;value&gt;policyPricingRules&lt;/value&gt;\n"
+"    &lt;/drools:rule-files&gt;\n"
+"&lt;/drools:rule-base&gt;"
+
+#. Tag: para
+#: Drools.xml:23
+#, no-c-format
+msgid ""
+"Next, we need to make an instance of <literal>org.drools.WorkingMemory</"
+"literal> available to each conversation. (Each <literal>WorkingMemory</"
+"literal> accumulates facts relating to the current conversation.)"
+msgstr ""
+"O próximo passo é fazermos com que uma instância de <literal>org.drools.WorkingMemory</"
+"literal> seja disponível a cada conversação. (Cada <literal>WorkingMemory</"
+"literal> acumula fatos relacionados à conversação atual.)"
+
+#. Tag: programlisting
+#: Drools.xml:26
+#, no-c-format
+msgid ""
+"&lt;drools:managed-working-memory name=\"policyPricingWorkingMemory\" auto-"
+"create=\"true\" rule-base=\"#{policyPricingRules}\"/&gt;"
+msgstr ""
+"&lt;drools:managed-working-memory name=\"policyPricingWorkingMemory\" auto-"
+"create=\"true\" rule-base=\"#{policyPricingRules}\"/&gt;"
+
+#. Tag: para
+#: Drools.xml:27
+#, no-c-format
+msgid ""
+"Notice that we gave the <literal>policyPricingWorkingMemory</literal> a "
+"reference back to our rule base via the <literal>ruleBase</literal> "
+"configuration property."
+msgstr "Note que fornecemos à <literal>policyPricingWorkingMemory</literal> uma referência de retorno, para nossa regra base, por meio da propriedade de configuração <literal>ruleBase</literal>."
+
+#. Tag: title
+#: Drools.xml:33
+#, no-c-format
+msgid "Using rules from a Seam component"
+msgstr "Regras utilizadas a partir de um componente Seam"
+
+#. Tag: para
+#: Drools.xml:34
+#, no-c-format
+msgid ""
+"We can now inject our <literal>WorkingMemory</literal> into any Seam "
+"component, assert facts, and fire rules:"
+msgstr "Podemos agora injetar nossa <literal>WorkingMemory</literal> num componente Seam, em fatos declarados e regras de fogo:"
+
+#. Tag: programlisting
+#: Drools.xml:37
+#, no-c-format
+msgid ""
+"@In WorkingMemory policyPricingWorkingMemory;\n"
+"\n"
+"@In Policy policy;\n"
+"@In Customer customer;\n"
+"\n"
+"public void pricePolicy() throws FactException\n"
+"{\n"
+"    policyPricingWorkingMemory.assertObject(policy);\n"
+"    policyPricingWorkingMemory.assertObject(customer);\n"
+"    policyPricingWorkingMemory.fireAllRules();\n"
+"}"
+msgstr ""
+"@In WorkingMemory policyPricingWorkingMemory;\n"
+"\n"
+"@In Policy policy;\n"
+"@In Customer customer;\n"
+"\n"
+"public void pricePolicy() throws FactException\n"
+"{\n"
+"    policyPricingWorkingMemory.assertObject(policy);\n"
+"    policyPricingWorkingMemory.assertObject(customer);\n"
+"    policyPricingWorkingMemory.fireAllRules();\n"
+"}"
+
+#. Tag: title
+#: Drools.xml:41
+#, no-c-format
+msgid "Using rules from a jBPM process definition"
+msgstr "Usando regras a partir de uma definição de processo JBoss"
+
+#. Tag: para
+#: Drools.xml:42
+#, no-c-format
+msgid ""
+"You can even allow a rule base to act as a jBPM action handler, decision "
+"handler, or assignment handler&mdash;in either a pageflow or business "
+"process definition."
+msgstr "Você pode ainda permitir que uma regra base atue como um manipulador de ação JBMP ou manipulador de atribuição &mdash; em ambos pageflow e definição de processo comercial."
+
+#. Tag: programlisting
+#: Drools.xml:45
+#, no-c-format
+msgid ""
+"&lt;decision name=\"approval\"&gt;\n"
+"         \n"
+"    &lt;handler class=\"org.jboss.seam.drools.DroolsDecisionHandler\"&gt;\n"
+"        &lt;workingMemoryName&gt;orderApprovalRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"        &lt;assertObjects&gt;\n"
+"            &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"            &lt;element&gt;#{order}&lt;/element&gt;\n"
+"            &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"        &lt;/assertObjects&gt;\n"
+"    &lt;/handler&gt;\n"
+"    \n"
+"    &lt;transition name=\"approved\" to=\"ship\"&gt;\n"
+"        &lt;action class=\"org.jboss.seam.drools.DroolsActionHandler\"&gt;\n"
+"            &lt;workingMemoryName&gt;shippingRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"            &lt;assertObjects&gt;\n"
+"                &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"            &lt;/assertObjects&gt;\n"
+"        &lt;/action&gt;\n"
+"    &lt;/transition&gt;\n"
+"    \n"
+"    &lt;transition name=\"rejected\" to=\"cancelled\"/&gt;\n"
+"    \n"
+"&lt;/decision&gt;"
+msgstr ""
+"&lt;decision name=\"approval\"&gt;\n"
+"         \n"
+"    &lt;handler class=\"org.jboss.seam.drools.DroolsDecisionHandler\"&gt;\n"
+"        &lt;workingMemoryName&gt;orderApprovalRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"        &lt;assertObjects&gt;\n"
+"            &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"            &lt;element&gt;#{order}&lt;/element&gt;\n"
+"            &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"        &lt;/assertObjects&gt;\n"
+"    &lt;/handler&gt;\n"
+"    \n"
+"    &lt;transition name=\"approved\" to=\"ship\"&gt;\n"
+"        &lt;action class=\"org.jboss.seam.drools.DroolsActionHandler\"&gt;\n"
+"            &lt;workingMemoryName&gt;shippingRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"            &lt;assertObjects&gt;\n"
+"                &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"            &lt;/assertObjects&gt;\n"
+"        &lt;/action&gt;\n"
+"    &lt;/transition&gt;\n"
+"    \n"
+"    &lt;transition name=\"rejected\" to=\"cancelled\"/&gt;\n"
+"    \n"
+"&lt;/decision&gt;"
+
+#. Tag: para
+#: Drools.xml:46
+#, no-c-format
+msgid ""
+"The <literal>&lt;assertObjects&gt;</literal> element specifies EL "
+"expressions that return an object or collection of objects to be asserted as "
+"facts into the <literal>WorkingMemory</literal>."
+msgstr "O elemento <literal>&lt;assertObjects&gt;</literal> especifica as expressões que retornam um objeto ou colecionador de objetos a serem expressados como realidade na <literal>WorkingMemory</literal>."
+
+#. Tag: para
+#: Drools.xml:49
+#, no-c-format
+msgid "There is also support for using Drools for jBPM task assignments:"
+msgstr "Há também um suporte para o uso de Drools pelas atribuições de tarefas JBPM:"
+
+#. Tag: programlisting
+#: Drools.xml:52
+#, no-c-format
+msgid ""
+"&lt;task-node name=\"review\"&gt;\n"
+"    &lt;task name=\"review\" description=\"Review Order\"&gt;\n"
+"        &lt;assignment handler=\"org.jboss.seam.drools."
+"DroolsAssignmentHandler\"&gt;\n"
+"            &lt;workingMemoryName&gt;orderApprovalRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"            &lt;assertObjects&gt;\n"
+"                &lt;element&gt;#{actor}&lt;/element&gt;\n"
+"                &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"            &lt;/assertObjects&gt;\n"
+"        &lt;/assignment&gt;\n"
+"    &lt;/task&gt;\n"
+"    &lt;transition name=\"rejected\" to=\"cancelled\"/&gt;\n"
+"    &lt;transition name=\"approved\" to=\"approved\"/&gt;\n"
+"&lt;/task-node&gt;"
+msgstr ""
+"&lt;task-node name=\"review\"&gt;\n"
+"    &lt;task name=\"review\" description=\"Review Order\"&gt;\n"
+"        &lt;assignment handler=\"org.jboss.seam.drools."
+"DroolsAssignmentHandler\"&gt;\n"
+"            &lt;workingMemoryName&gt;orderApprovalRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"            &lt;assertObjects&gt;\n"
+"                &lt;element&gt;#{actor}&lt;/element&gt;\n"
+"                &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"            &lt;/assertObjects&gt;\n"
+"        &lt;/assignment&gt;\n"
+"    &lt;/task&gt;\n"
+"    &lt;transition name=\"rejected\" to=\"cancelled\"/&gt;\n"
+"    &lt;transition name=\"approved\" to=\"approved\"/&gt;\n"
+"&lt;/task-node&gt;"
+
+#. Tag: para
+#: Drools.xml:53
+#, no-c-format
+msgid ""
+"Certain objects are available to the rules as Drools globals, namely the "
+"jBPM <literal>Assignable</literal>, as <literal>assignable</literal> and a "
+"Seam <literal>Decision</literal> object, as <literal>decision</literal>. "
+"Rules which handle decisions should call <literal>decision.setOutcome"
+"(\"result\")</literal> to determine the result of the decision. Rules which "
+"perform assignments should set the actor id using the <literal>Assignable</"
+"literal>."
+msgstr ""
+"Alguns objetos estão disponíveis às regras como globais Drools, em outras palavras o <literal>Assignable</literal> JBMP, como <literal>assignable</literal> e um objeto de <literal>Decision</literal> Seam como <literal>decision</literal>. As regras que manipulam decisões devem chamar a <literal>decision.setOutcome"
+"(\"resultado\")</literal>, com a finalidade de determinar o resultado da decisão. As regras que executam atribuições devem configurar a id do actor usando o <literal>Assignable</"
+"literal>."
+
+#. Tag: programlisting
+#: Drools.xml:56
+#, no-c-format
+msgid ""
+"package org.jboss.seam.examples.shop\n"
+"\n"
+"import org.jboss.seam.drools.Decision\n"
+"\n"
+"global Decision decision\n"
+"\n"
+"rule \"Approve Order For Loyal Customer\"\n"
+"  when\n"
+"    Customer( loyaltyStatus == \"GOLD\" )\n"
+"    Order( totalAmount &lt;= 10000 )\n"
+"  then\n"
+"    decision.setOutcome(\"approved\");\n"
+"end"
+msgstr ""
+"package org.jboss.seam.examples.shop\n"
+"\n"
+"import org.jboss.seam.drools.Decision\n"
+"\n"
+"global Decision decision\n"
+"\n"
+"rule \"Approve Order For Loyal Customer\"\n"
+"  when\n"
+"    Customer( loyaltyStatus == \"GOLD\" )\n"
+"    Order( totalAmount &lt;= 10000 )\n"
+"  then\n"
+"    decision.setOutcome(\"approved\");\n"
+"end"
+
+#. Tag: programlisting
+#: Drools.xml:57
+#, no-c-format
+msgid ""
+"package org.jboss.seam.examples.shop\n"
+"\n"
+"import org.jbpm.taskmgmt.exe.Assignable\n"
+"\n"
+"global Assignable assignable\n"
+"\n"
+"rule \"Assign Review For Small Order\"\n"
+"  when\n"
+"    Order( totalAmount &lt;= 100 )\n"
+"  then\n"
+"    assignable.setPooledActors( new String[] {\"reviewers\"} );\n"
+"end"
+msgstr ""
+"package org.jboss.seam.examples.shop\n"
+"\n"
+"import org.jbpm.taskmgmt.exe.Assignable\n"
+"\n"
+"global Assignable assignable\n"
+"\n"
+"rule \"Assign Review For Small Order\"\n"
+"  when\n"
+"    Order( totalAmount &lt;= 100 )\n"
+"  then\n"
+"    assignable.setPooledActors( new String[] {\"reviewers\"} );\n"
+"end"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Elenhancements.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Elenhancements.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Elenhancements.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,251 @@
+# translation of Elenhancements.po to Brazilian Portuguese
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Leticia de Lima <ldelima at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Elenhancements\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2008-03-14 10:24+1000\n"
+"Last-Translator: Leticia de Lima <ldelima at redhat.com>\n"
+"Language-Team: Brazilian Portuguese <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms:  JBEAP420 \n"
+
+#. Tag: title
+#: Elenhancements.xml:6
+#, no-c-format
+msgid "Expression language enhancements"
+msgstr "Aprimoramento de expressões de idioma"
+
+#. Tag: para
+#: Elenhancements.xml:7
+#, no-c-format
+msgid ""
+"The standard Unified Expression Language (EL) assumes that any parameters to "
+"a method expression will be provided by Java code. This means that a method "
+"with parameters cannot be used as a JSF method binding. Seam provides an "
+"enhancement to the EL that allows parameters to be included in a method "
+"expression itself. This applies to <emphasis>any</emphasis> Seam method "
+"expression, including any JSF method binding, for example:"
+msgstr "O padrão para o Idioma de Expressão Unificado (EL) assume que qualquer parâmetro a uma expressão de método será fornecida pelo código Java. Isto significa que o método com parâmetros não pode ser usado como uma vinculação de método JSF. O seam fornece para o EL, que permite que parâmetros sejam incluídos numa expressão de método por conta própria. Isto aplica-se a <emphasis>qualquer</emphasis> expressão de método Seam, incluindo qualquer vinculação de método JSF. Segue abaixo um exemplo:"
+
+#. Tag: programlisting
+#: Elenhancements.xml:10
+#, no-c-format
+msgid ""
+"&lt;s:commandButton action=\"#{hotelBooking.bookHotel(hotel)}\" value=\"Book "
+"Hotel\"/&gt;"
+msgstr ""
+"&lt;s:commandButton action=\"#{hotelBooking.bookHotel(hotel)}\" value=\"Book "
+"Hotel\"/&gt;"
+
+#. Tag: title
+#: Elenhancements.xml:12
+#, no-c-format
+msgid "Configuration"
+msgstr "Configuração"
+
+#. Tag: para
+#: Elenhancements.xml:13
+#, no-c-format
+msgid ""
+"To use this feature in Facelets, you will need to declare a special view "
+"handler, <literal>SeamFaceletViewHandler</literal> in <literal>faces-config."
+"xml</literal>."
+msgstr ""
+"Para usar este recurso em Facelets, você precisará declarar um identificador de visualização especial, <literal>SeamFaceletViewHandler</literal> em <literal>faces-config."
+"xml</literal>."
+
+#. Tag: programlisting
+#: Elenhancements.xml:16
+#, no-c-format
+msgid ""
+"&lt;faces-config&gt;\n"
+"    &lt;application&gt;\n"
+"        &lt;view-handler&gt;org.jboss.seam.ui.facelet."
+"SeamFaceletViewHandler&lt;/view-handler&gt;\n"
+"    &lt;/application&gt;\n"
+"&lt;/faces-config&gt;"
+msgstr ""
+"&lt;faces-config&gt;\n"
+"    &lt;application&gt;\n"
+"        &lt;view-handler&gt;org.jboss.seam.ui.facelet."
+"SeamFaceletViewHandler&lt;/view-handler&gt;\n"
+"    &lt;/application&gt;\n"
+"&lt;/faces-config&gt;"
+
+#. Tag: title
+#: Elenhancements.xml:20
+#, no-c-format
+msgid "Usage"
+msgstr "Utilidade"
+
+#. Tag: para
+#: Elenhancements.xml:21
+#, no-c-format
+msgid "Parameters are surrounded by parentheses, and separated by commas:"
+msgstr "O parâmetros são cercados por parênteses e separados por vígulas:"
+
+#. Tag: programlisting
+#: Elenhancements.xml:24
+#, no-c-format
+msgid ""
+"&lt;h:commandButton action=\"#{hotelBooking.bookHotel(hotel, user)}\" value="
+"\"Book Hotel\"/&gt;"
+msgstr ""
+"&lt;h:commandButton action=\"#{hotelBooking.bookHotel(hotel, user)}\" value="
+"\"Book Hotel\"/&gt;"
+
+#. Tag: para
+#: Elenhancements.xml:25
+#, no-c-format
+msgid ""
+"The parameters <literal>hotel</literal> and <literal>user</literal> will be "
+"evaluated as value expressions and passed to the <literal>bookHotel()</"
+"literal> method of the component. This gives you an alternative to the use "
+"of <literal>@In</literal>."
+msgstr ""
+"Os parâmetros <literal>hotel</literal> e <literal>user</literal> serão avaliados como expressões de valor e passados ao método <literal>bookHotel()</"
+"literal> do componente. Isto o fornece uma alternativa de uso do <literal>@In</literal>. "
+
+#. Tag: para
+#: Elenhancements.xml:28
+#, no-c-format
+msgid "Any value expression may be used as a parameter:"
+msgstr "Qualquer expressão de valor pode ser usado como um parâmetro:"
+
+#. Tag: programlisting
+#: Elenhancements.xml:31
+#, no-c-format
+msgid ""
+"&lt;h:commandButton action=\"#{hotelBooking.bookHotel(hotel.id, user."
+"username)}\" value=\"Book Hotel\"/&gt;"
+msgstr ""
+"&lt;h:commandButton action=\"#{hotelBooking.bookHotel(hotel.id, user."
+"username)}\" value=\"Book Hotel\"/&gt;"
+
+#. Tag: para
+#: Elenhancements.xml:32
+#, no-c-format
+msgid "You may even pass literal strings using single or double quotes:"
+msgstr "Você poderá também passar literalmente as seqüências de caracteres usando uma ou o dobro de aspas:"
+
+#. Tag: programlisting
+#: Elenhancements.xml:35
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=”#{printer.println( ‘Hello world!’ )}” "
+"value=”Hello”/&gt;"
+msgstr ""
+"&lt;h:commandLink action=”#{printer.println( ‘Hello world!’ )}” "
+"value=”Hello”/&gt;"
+
+#. Tag: programlisting
+#: Elenhancements.xml:36
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=’#{printer.println( “Hello again” )}’ value=’Hello’/"
+"&gt;"
+msgstr ""
+"&lt;h:commandLink action=’#{printer.println( “Hello again” )}’ value=’Hello’/"
+"&gt;"
+
+#. Tag: para
+#: Elenhancements.xml:37
+#, no-c-format
+msgid ""
+"You might even want to use this notation for all your action methods, even "
+"when you don’t have parameters to pass. This improves readability by making "
+"it clear that the expression is a method expression and not a value "
+"expression:"
+msgstr "Você ainda pode querer utilizar esta notificação para todos os seus métodos action, mesmo que você não tenha parâmetros para passar. Isto traz melhorias à leitura deixando claro que a expressão é um método de expressão e não uma expressão de valor:"
+
+#. Tag: programlisting
+#: Elenhancements.xml:40
+#, no-c-format
+msgid "&lt;s:link value=\"Cancel\" action=\"#{hotelBooking.cancel()}\"/&gt;"
+msgstr "&lt;s:link value=\"Cancel\" action=\"#{hotelBooking.cancel()}\"/&gt;"
+
+#. Tag: title
+#: Elenhancements.xml:44
+#, no-c-format
+msgid "Limitations"
+msgstr "Limitações"
+
+#. Tag: para
+#: Elenhancements.xml:45
+#, no-c-format
+msgid "Please be aware of the following limitations:"
+msgstr "Por favor esteja atento às seguintes limitações:"
+
+#. Tag: title
+#: Elenhancements.xml:49
+#, no-c-format
+msgid "Incompatibility with JSP 2.1"
+msgstr "Incompatibilidade com JSP 2.1"
+
+#. Tag: para
+#: Elenhancements.xml:50
+#, no-c-format
+msgid ""
+"This extension is not currently compatible with JSP 2.1. So if you want to "
+"use this extension with JSF 1.2, you will need to use Facelets. The "
+"extension works correctly with JSP 2.0."
+msgstr "Esta extensão não é atualmente compatível com o JSP 2.1. desta forma, caso queira usar esta extensão com o JSF 1.2, você precisará usar os Facelets. A extensão trabalha corretamente com o JSF 2.0."
+
+#. Tag: title
+#: Elenhancements.xml:56
+#, no-c-format
+msgid "Calling a <literal>MethodExpression</literal> from Java code"
+msgstr "Chamando um <literal>MethodExpression</literal> a partir do código Java"
+
+#. Tag: para
+#: Elenhancements.xml:57
+#, no-c-format
+msgid ""
+"Normally, when a <literal>MethodExpression</literal> or "
+"<literal>MethodBinding</literal> is created, the parameter types are passed "
+"in by JSF. In the case of a method binding, JSF assumes that there are no "
+"parameters to pass. With this extension, we can’t know the parameter types "
+"until after the expression has been evaluated. This has two minor "
+"consequences:"
+msgstr ""
+"Normalmente quando um <literal>MethodExpression</literal> ou "
+"<literal>MethodBinding</literal> é criado, os tipos de parâmetros são passados pelo JSF. No caso de um método de vinculação, o JSF assume que não há parâmetros para passar. Com esta extensão, não sabemos os tipos de parâmetros até que as expressões tenham sido avaliadas. Existem duas conseqüências com isto:"
+
+#. Tag: para
+#: Elenhancements.xml:62
+#, no-c-format
+msgid ""
+"When you invoke a <literal>MethodExpression</literal> in Java code, "
+"parameters you pass may be ignored. Parameters defined in the expression "
+"will take precedence."
+msgstr "Quando você invocar um <literal>Método de Expressão</literal> no código Java, os parâmetros que você passar poderão ser ignorados. Os parâmetros definidos na expressão terão precedência."
+
+#. Tag: para
+#: Elenhancements.xml:67
+#, no-c-format
+msgid ""
+"Ordinarily, it is safe to call <literal>methodExpression.getMethodInfo()."
+"getParamTypes()</literal> at any time. For an expression with parameters, "
+"you must first invoke the <literal>MethodExpression</literal> before calling "
+"<literal>getParamTypes()</literal>."
+msgstr ""
+"Normalmente, é seguro chamar o <literal>methodExpression.getMethodInfo()."
+"getParamTypes()</literal> a qualquer momento. Para uma expressão com parâmetros, você devera primeiramente invocar o <literal>Método de Expressão</literal> antes de chamar o <literal>getParamTypes()</literal>."
+
+#. Tag: para
+#: Elenhancements.xml:72
+#, no-c-format
+msgid ""
+"Both of these cases are exceedingly rare and only apply when you want to "
+"invoke the <literal>MethodExpression</literal> by hand in Java code."
+msgstr "Ambos casos são raros e são apenas aplicados quando você quiser invocar o <literal>Método de Expressão</literal> manualmente no código Java."
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Events.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Events.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Events.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1802 @@
+# translation of Events.po to Brazilian Portuguese
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Leticia de Lima <ldelima at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Events\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2008-06-05 16:42+1000\n"
+"Last-Translator: Leticia de Lima <ldelima at redhat.com>\n"
+"Language-Team: Brazilian Portuguese <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms:  JBEAP420 \n"
+
+#. Tag: title
+#: Events.xml:6
+#, no-c-format
+msgid "Events, interceptors and exception handling"
+msgstr "Eventos, interceptores e exceção de identificadores"
+
+#. Tag: para
+#: Events.xml:7
+#, no-c-format
+msgid ""
+"Complementing the contextual component model, there are two further basic "
+"concepts that facilitate the extreme loose-coupling that is the distinctive "
+"feature of Seam applications. The first is a strong event model where events "
+"may be mapped to event listeners via JSF-like method binding expressions. "
+"The second is the pervasive use of annotations and interceptors to apply "
+"cross-cutting concerns to components which implement business logic."
+msgstr "Complementação do modelo do componente contextual. Existem dois conceitos básicos, dos quais facilitam o loose-coupling extremo, sendo um recurso distinto do aplicativo Seam. O primeiro é um modelo de evento forte, onde os eventos podem ser mapeados ao evento listeners por meio do JSF, parecido com as expressões do método de vinculação. O segundo é o uso persuasivo das anotações e interceptores para aplicação de interesses cross-cutting que implementam a lógica comercial."
+
+#. Tag: title
+#: Events.xml:10
+#, no-c-format
+msgid "Seam events"
+msgstr "Eventos Seam"
+
+#. Tag: para
+#: Events.xml:11
+#, no-c-format
+msgid ""
+"The Seam component model was developed for use with <emphasis>event-driven "
+"applications</emphasis>, specifically to enable the development of fine-"
+"grained, loosely-coupled components in a fine-grained eventing model. Events "
+"in Seam come in several types, most of which we have already seen:"
+msgstr ""
+"O modelo de componente Seam foi desenvolvido para uso dos <emphasis>aplicativos de evento dirigido</emphasis>, especialmente para ativar o desenvolvimento de componentes fine-"
+"grained, de acoplamento frouxo num modelo de evento fine-grained. Os eventos em Seam aparecem em diversos tipos, dos quais a maioria já foi vista anteriormente:"
+
+#. Tag: para
+#: Events.xml:16
+#, no-c-format
+msgid "JSF events"
+msgstr "Eventos JSF"
+
+#. Tag: para
+#: Events.xml:21
+#, no-c-format
+msgid "jBPM transition events"
+msgstr "Eventos de transmissão JBPM"
+
+#. Tag: para
+#: Events.xml:26
+#, no-c-format
+msgid "Seam page actions"
+msgstr "Ações da página Seam"
+
+#. Tag: para
+#: Events.xml:31
+#, no-c-format
+msgid "Seam component-driven events"
+msgstr "Eventos de componente dirigido Seam"
+
+#. Tag: para
+#: Events.xml:36
+#, no-c-format
+msgid "Seam contextual events"
+msgstr "Eventos Contextuais Seam"
+
+#. Tag: para
+#: Events.xml:41
+#, no-c-format
+msgid ""
+"All of these various kinds of events are mapped to Seam components via JSF "
+"EL method binding expressions. For a JSF event, this is defined in the JSF "
+"template:"
+msgstr "Todos estes tipos de eventos estão mapeados aos componentes Seam por meio das expressões binding de método EL JSF. Para um evento JSF, isto é definido no modelo JSF:"
+
+#. Tag: programlisting
+#: Events.xml:44
+#, no-c-format
+msgid ""
+"&lt;h:commandButton value=\"Click me!\" action=\"#{helloWorld.sayHello}\"/"
+"&gt;"
+msgstr ""
+"&lt;h:commandButton value=\"Click me!\" action=\"#{helloWorld.sayHello}\"/"
+"&gt;"
+
+#. Tag: para
+#: Events.xml:45
+#, no-c-format
+msgid ""
+"For a jBPM transition event, it is specified in the jBPM process definition "
+"or pageflow definition:"
+msgstr "Para um evento de transação JBPM, isto é especificado na definição de processo ou definição pageflow:"
+
+#. Tag: programlisting
+#: Events.xml:48
+#, no-c-format
+msgid ""
+"&lt;start-page name=\"hello\" view-id=\"/hello.jsp\"&gt;\n"
+"    &lt;transition to=\"hello\"&gt;\n"
+"        &lt;action expression=\"#{helloWorld.sayHello}\"/&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/start-page&gt;"
+msgstr ""
+"&lt;start-page name=\"hello\" view-id=\"/hello.jsp\"&gt;\n"
+"    &lt;transition to=\"hello\"&gt;\n"
+"        &lt;action expression=\"#{helloWorld.sayHello}\"/&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/start-page&gt;"
+
+#. Tag: para
+#: Events.xml:49
+#, no-c-format
+msgid ""
+"You can find out more information about JSF events and jBPM events "
+"elsewhere. Lets concentrate for now upon the two additional kinds of events "
+"defined by Seam."
+msgstr "Você pode encontrar mais informações a respeito dos eventos JSF e JBMP em qualquer outro lugar. No momento, nos concentraremos apenas em dois tipos de eventos adicionais definidos por Seam."
+
+#. Tag: title
+#: Events.xml:52
+#, no-c-format
+msgid "Page actions"
+msgstr "Ações da página"
+
+#. Tag: para
+#: Events.xml:53
+#, no-c-format
+msgid ""
+"A Seam page action is an event that occurs just before we render a page. We "
+"declare page actions in <literal>WEB-INF/pages.xml</literal>. We can define "
+"a page action for either a particular JSF view id:"
+msgstr "A ação da página Seam é um evento que ocorre antes de processarmos uma página. Declaramos ações da página no <literal>WEB-INF/pages.xml</literal>. Podemos definir uma ação da página para também uma identificação de visualização JSF:"
+
+#. Tag: programlisting
+#: Events.xml:56
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\" action=\"#{helloWorld.sayHello}\"/&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\" action=\"#{helloWorld.sayHello}\"/&gt;\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Events.xml:57
+#, no-c-format
+msgid ""
+"Or we can use a wildcard to specify an action that applies to all view ids "
+"that match the pattern:"
+msgstr "Ou podemos usar um wildcard para especificar uma ação que aplica-se a todas as identificações de visualização que coincidem com o padrão: "
+
+#. Tag: programlisting
+#: Events.xml:60
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello/*\" action=\"#{helloWorld.sayHello}\"/&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello/*\" action=\"#{helloWorld.sayHello}\"/&gt;\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Events.xml:61
+#, no-c-format
+msgid ""
+"If multiple wildcarded page actions match the current view-id, Seam will "
+"call all the actions, in order of least-specific to most-specific."
+msgstr "Caso as ações da página com wildcard múltipla coincidirem com a identificação de visualização atual, o Seam chamará as ações, seguindo a ordem da menos específica para a mais específica."
+
+#. Tag: para
+#: Events.xml:64
+#, no-c-format
+msgid ""
+"The page action method can return a JSF outcome. If the outcome is non-null, "
+"Seam will use the defined navigation rules to navigate to a view."
+msgstr "O método de ação da página pode retornar a um resultado JSF. Caso o resultado seja não nulo, o Seam usará as regras de navegação definidas para navegar a uma visualização."
+
+#. Tag: para
+#: Events.xml:67
+#, no-c-format
+msgid ""
+"Furthermore, the view id mentioned in the <literal>&lt;page&gt;</literal> "
+"element need not correspond to a real JSP or Facelets page! So, we can "
+"reproduce the functionality of a traditional action-oriented framework like "
+"Struts or WebWork using page actions. For example:"
+msgstr "Além disso, a identificação de visualização mencionada no elemento da  <literal>&lt;page&gt;</literal> não precisa corresponder a um real JSF ou página Facelets. Então podemos reproduzir a funcionalidade de um tradicional framework de ação orientada, como Stratus ou Webwork, usando ações da página. Por exemplo:"
+
+#. Tag: programlisting
+#: Events.xml:70
+#, no-c-format
+msgid "TODO: translate struts action into page action"
+msgstr "TODO: traduzindo ação de stratus para a ação de página"
+
+#. Tag: para
+#: Events.xml:71
+#, no-c-format
+msgid ""
+"This is quite useful if you want to do complex things in response to non-"
+"faces requests (for example, HTTP GET requests)."
+msgstr "Isto é bastante útil caso você deseje realizar operações complexas em respostas às solicitações sem faces (por exemplo solicitações GET HTTP)."
+
+#. Tag: title
+#: Events.xml:74
+#, no-c-format
+msgid "Page parameters"
+msgstr "Parâmetros da página"
+
+#. Tag: para
+#: Events.xml:75
+#, no-c-format
+msgid ""
+"A JSF faces request (a form submission) encapsulates both an \"action\" (a "
+"method binding) and \"parameters\" (input value bindings). A page action "
+"might also needs parameters!"
+msgstr "Uma solicitação de face JSF (um submissão de formulário) encapsula ambos \"ação\" (binding do método) e \"parâmetro\" (entrada de binding do valor). "
+
+#. Tag: para
+#: Events.xml:78
+#, no-c-format
+msgid ""
+"Since GET requests are bookmarkable, page parameters are passed as human-"
+"readable request parameters. (Unlike JSF form inputs, which are anything "
+"but!)"
+msgstr "Uma vez que as solicitações foram indicadas, os parâmetros são passados como parâmetros de solicitação de leitura humana. (diferente das entradas de formulários JSF)."
+
+#. Tag: para
+#: Events.xml:81
+#, no-c-format
+msgid ""
+"Seam lets us provide a value binding that maps a named request parameter to "
+"an attribute of a model object."
+msgstr "O Seam permite que fornecermos um binding do valor, do qual mapeia o parâmetro de solicitação nomeado para um atributo de um objeto modelo."
+
+#. Tag: programlisting
+#: Events.xml:84
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\" action=\"#{helloWorld.sayHello}\"&gt;\n"
+"        &lt;param name=\"firstName\" value=\"#{person.firstName}\"/&gt;\n"
+"        &lt;param name=\"lastName\" value=\"#{person.lastName}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\" action=\"#{helloWorld.sayHello}\"&gt;\n"
+"        &lt;param name=\"firstName\" value=\"#{person.firstName}\"/&gt;\n"
+"        &lt;param name=\"lastName\" value=\"#{person.lastName}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Events.xml:85
+#, no-c-format
+msgid ""
+"The <literal>&lt;param&gt;</literal> declaration is bidirectional, just like "
+"a value binding for a JSF input:"
+msgstr "A declaração <literal>&lt;param&gt;</literal> é bidirecional, parecida com um binding do valor para uma entrada JSF:"
+
+#. Tag: para
+#: Events.xml:90
+#, no-c-format
+msgid ""
+"When a non-faces (GET) request for the view id occurs, Seam sets the value "
+"of the named request parameter onto the model object, after performing "
+"appropriate type conversions."
+msgstr "Quando uma solicitação (GET) sem face de identificação de visualização ocorrer, o Seam configura o valor do parâmetro de solicitação nomeado no objeto modelo, após executar conversações de tipos apropriados."
+
+#. Tag: para
+#: Events.xml:95
+#, no-c-format
+msgid ""
+"Any <literal>&lt;s:link&gt;</literal> or <literal>&lt;s:button&gt;</literal> "
+"transparently includes the request parameter. The value of the parameter is "
+"determined by evaluating the value binding during the render phase (when the "
+"<literal>&lt;s:link&gt;</literal> is rendered)."
+msgstr "Qualquer <literal>&lt;s:link&gt;</literal> ou <literal>&lt;s:button&gt;</literal> inclui claramente o parâmetro de solicitação. O valor do parâmetro é determinado pela avaliação de binding do valor durante a fase de processo (quando o <literal>&lt;s:link&gt;</literal> for processado)."
+
+#. Tag: para
+#: Events.xml:100
+#, no-c-format
+msgid ""
+"Any navigation rule with a <literal>&lt;redirect/&gt;</literal> to the view "
+"id transparently includes the request parameter. The value of the parameter "
+"is determined by evaluating the value binding at the end of the invoke "
+"application phase."
+msgstr "Qualquer regra de navegação, com uma <literal>&lt;redirect/&gt;</literal> da identidade de visualização, inclui claramente o parâmetro de solicitação. O valor do parâmetro é determinado pela avaliação do binding do valor no final da fase do aplicativo de invocação. "
+
+#. Tag: para
+#: Events.xml:105
+#, no-c-format
+msgid ""
+"The value is transparently propagated with any JSF form submission for the "
+"page with the given view id. (This means that view parameters behave like "
+"<literal>PAGE</literal>-scoped context variables for faces requests."
+msgstr "O valor é claramente propagado com qualquer submissão de formulário JSF, para a página com a identidade de visualização gerada. (Isto significa que os parâmetros de visualização se comportam como as variáveis de contexto de escopo da página <literal>PAGE</literal>, para solicitações das faces.)"
+
+#. Tag: para
+#: Events.xml:110
+#, no-c-format
+msgid ""
+"The essential idea behind all this is that <emphasis>however</emphasis> we "
+"get from any other page to <literal>/hello.jsp</literal> (or from <literal>/"
+"hello.jsp</literal> back to <literal>/hello.jsp</literal>), the value of the "
+"model attribute referred to in the value binding is \"remembered\", without "
+"the need for a conversation (or other server-side state)."
+msgstr ""
+"A idéia essencial por trás de tudo isto é que <emphasis>mesmo</emphasis> que retirarmos de qualquer outra página para o <literal>/hello.jsp</literal> (ou a partir de <literal>/"
+"hello.jsp</literal> de volta para <literal>/hello.jsp</literal>), o valor do atributo modelo referido para o binding do valor é \"relembrado\", sem a necessidade de uma conversação (ou outro estado no lado do servidor)."
+
+#. Tag: para
+#: Events.xml:113
+#, no-c-format
+msgid ""
+"This all sounds pretty complex, and you&#39;re probably wondering if such an "
+"exotic construct is really worth the effort. Actually, the idea is very "
+"natural once you \"get it\". It is definitely worth taking the time to "
+"understand this stuff. Page parameters are the most elegant way to propagate "
+"state across a non-faces request. They are especially cool for problems like "
+"search screens with bookmarkable results pages, where we would like to be "
+"able to write our application code to handle both POST and GET requests with "
+"the same code. Page parameters eliminate repetitive listing of request "
+"parameters in the view definition and make redirects much easier to code."
+msgstr "Isto parece ser bastante complexo, e você irá provavelmente questionar se vale realmente a pena todo este esforço para uma construção exótica. Atualmente, a idéia é bastante natural uma vez em que você \"obtém isto\". É importante utilizar um tempo maior para compreender esta questão. Os parâmetros da página são uma maneira melhor de se propagar o estado através de uma solicitação sem face. Eles são ideais para problemas como a procura por telas com páginas de resultados indicados, onde gostaríamos de estar aptos a escrever nosso código de aplicativo. Isto tudo, para manusear ambas solicitações ENVIADAS e RECEBIDAS com o mesmo código. Os parâmetros da página eliminam uma listagem repetitiva dos parâmetros de solicitação, na definição de visualização e facilitam o redirecionamento para o código."
+
+#. Tag: para
+#: Events.xml:116
+#, no-c-format
+msgid ""
+"Note that you don&#39;t need an actual page action method binding to use a "
+"page parameter. The following is perfectly valid:"
+msgstr "Perceba que você não precisa do método binding para usar um parâmetro de página. Segue abaixo um trecho perfeitamente válido:"
+
+#. Tag: programlisting
+#: Events.xml:119
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\"&gt;\n"
+"        &lt;param name=\"firstName\" value=\"#{person.firstName}\"/&gt;\n"
+"        &lt;param name=\"lastName\" value=\"#{person.lastName}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\"&gt;\n"
+"        &lt;param name=\"firstName\" value=\"#{person.firstName}\"/&gt;\n"
+"        &lt;param name=\"lastName\" value=\"#{person.lastName}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Events.xml:120
+#, no-c-format
+msgid "You can even specify a JSF converter:"
+msgstr "Você pode também especificar um convertor JSF:"
+
+#. Tag: programlisting
+#: Events.xml:123
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/calculator.jsp\" action=\"#{calculator.calculate}"
+"\"&gt;\n"
+"        &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"        &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"        &lt;param name=\"op\" converterId=\"com.my.calculator."
+"OperatorConverter\" value=\"#{calculator.op}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/calculator.jsp\" action=\"#{calculator.calculate}"
+"\"&gt;\n"
+"        &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"        &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"        &lt;param name=\"op\" converterId=\"com.my.calculator."
+"OperatorConverter\" value=\"#{calculator.op}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+
+#. Tag: programlisting
+#: Events.xml:124
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/calculator.jsp\" action=\"#{calculator.calculate}"
+"\"&gt;\n"
+"        &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"        &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"        &lt;param name=\"op\" converter=\"#{operatorConverter}\" value=\"#"
+"{calculator.op}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/calculator.jsp\" action=\"#{calculator.calculate}"
+"\"&gt;\n"
+"        &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"        &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"        &lt;param name=\"op\" converter=\"#{operatorConverter}\" value=\"#"
+"{calculator.op}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+
+#. Tag: title
+#: Events.xml:125
+#, no-c-format
+msgid "Navigation"
+msgstr "Navegação"
+
+#. Tag: para
+#: Events.xml:126
+#, no-c-format
+msgid ""
+"You can use standard JSF navigation rules defined in <literal>faces-config."
+"xml</literal> in a Seam application. However, JSF navigation rules have a "
+"number of annoying limitations:"
+msgstr ""
+"Você pode usar o padrão de regras de navegação JSF definidas em <literal>faces-config."
+"xml</literal>, num aplicativo Seam. No entanto, as regras de navegação JSF possuem um número de limitações:"
+
+#. Tag: para
+#: Events.xml:131
+#, no-c-format
+msgid "It is not possible to specify request parameters to be used when redirecting."
+msgstr "Não é possível especificar os parâmetros de solicitação a serem utilizados na redireção."
+
+#. Tag: para
+#: Events.xml:136
+#, no-c-format
+msgid "It is not possible to begin or end conversations from a rule."
+msgstr "Não é possível inicializar ou terminar conversações a partir de uma regra."
+
+#. Tag: para
+#: Events.xml:141
+#, no-c-format
+msgid ""
+"Rules work by evaluating the return value of the action method; it is not "
+"possible to evaluate an arbitrary EL expression."
+msgstr "As regras funcionam por avaliação do valor retornado do método action. Não é possível avaliar uma arbitrária expressão EL."
+
+#. Tag: para
+#: Events.xml:146
+#, no-c-format
+msgid ""
+"A further problem is that \"orchestration\" logic gets scattered between "
+"<literal>pages.xml</literal> and <literal>faces-config.xml</literal>. It&#39;"
+"s better to unify this logic into <literal>pages.xml</literal>."
+msgstr "Um outro problema é que a lógica \"orchestration\" amedontra-se entre <literal>pages.xml</literal> e <literal>faces-config.xml</literal>. Recomenda-se unificar a lógica nas <literal>pages.xml</literal>."
+
+#. Tag: para
+#: Events.xml:149
+#, no-c-format
+msgid "This JSF navigation rule:"
+msgstr "A regra de navegação JSF:"
+
+#. Tag: programlisting
+#: Events.xml:152
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"    &lt;from-view-id&gt;/editDocument.xhtml&lt;/from-view-id&gt;\n"
+"    \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-action&gt;#{documentEditor.update}&lt;/from-action&gt;\n"
+"        &lt;from-outcome&gt;success&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/viewDocument.xhtml&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"    \n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+"&lt;navigation-rule&gt;\n"
+"    &lt;from-view-id&gt;/editDocument.xhtml&lt;/from-view-id&gt;\n"
+"    \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-action&gt;#{documentEditor.update}&lt;/from-action&gt;\n"
+"        &lt;from-outcome&gt;success&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/viewDocument.xhtml&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"    \n"
+"&lt;/navigation-rule&gt;"
+
+#. Tag: para
+#: Events.xml:153
+#, no-c-format
+msgid "Can be rewritten as follows:"
+msgstr "Pode ser re-escrito como:"
+
+#. Tag: programlisting
+#: Events.xml:156
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if-outcome=\"success\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if-outcome=\"success\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Events.xml:157
+#, no-c-format
+msgid ""
+"But it would be even nicer if we didn&#39;t have to pollute our "
+"<literal>DocumentEditor</literal> component with string-valued return values "
+"(the JSF outcomes). So Seam lets us write:"
+msgstr "Seria ideal se não precisássemos usar nosso componente <literal>Editor de Documentação</literal> com valores de retorno de seqüência valorizada (o resultado JSF). Desta forma, o Seam nos permite gravar:"
+
+#. Tag: programlisting
+#: Events.xml:160
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\" \n"
+"                   evaluate=\"#{documentEditor.errors.size}\"&gt;\n"
+"        &lt;rule if-outcome=\"0\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\" \n"
+"                   evaluate=\"#{documentEditor.errors.size}\"&gt;\n"
+"        &lt;rule if-outcome=\"0\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Events.xml:161
+#, no-c-format
+msgid "Or even:"
+msgstr "Ou mesmo:"
+
+#. Tag: programlisting
+#: Events.xml:164
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Events.xml:165
+#, no-c-format
+msgid ""
+"The first form evaluates a value binding to determine the outcome value to "
+"be used by the subsequent rules. The second approach ignores the outcome and "
+"evaluates a value binding for each possible rule."
+msgstr "O primeiro formulário avalia um valor binding, para a determinação do valor de resultado usado pelas regras subseqüentes. A segunda abordagem ignora o resultado e avalia um valor binding para cada regra de possibilidade."
+
+#. Tag: para
+#: Events.xml:168
+#, no-c-format
+msgid ""
+"Of course, when an update succeeds, we probably want to end the current "
+"conversation. We can do that like this:"
+msgstr "É claro que quando uma atualização for sucedida, nós provavelmente encerraremos a conversação atual. Podemos realizar isto da seguinte maneira:"
+
+#. Tag: programlisting
+#: Events.xml:171
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Events.xml:172
+#, no-c-format
+msgid ""
+"But ending the conversation loses any state associated with the "
+"conversation, including the document we are currently interested in! One "
+"solution would be to use an immediate render instead of a redirect:"
+msgstr "No entanto, o encerramento da conversação perde qualquer estado associado com a conversação, incluindo o documento em que nós possuimos interesse. Uma solução pode ser usada para um processamento imediato ao invés de um redirecionamento:"
+
+#. Tag: programlisting
+#: Events.xml:175
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Events.xml:176
+#, no-c-format
+msgid "But the correct solution is to pass the document id as a request parameter:"
+msgstr "A solução correta é passar a identidade do documento como um parâmetro de solicitação:"
+
+#. Tag: programlisting
+#: Events.xml:179
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"&gt;\n"
+"                &lt;param name=\"documentId\" value=\"#{documentEditor."
+"documentId}\"/&gt;\n"
+"            &lt;/redirect&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"&gt;\n"
+"                &lt;param name=\"documentId\" value=\"#{documentEditor."
+"documentId}\"/&gt;\n"
+"            &lt;/redirect&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Events.xml:180
+#, no-c-format
+msgid ""
+"Null outcomes are a special case in JSF. The null outcome is interpreted to "
+"mean \"redisplay the page\". The following navigation rule matches any non-"
+"null outcome, but <emphasis>not</emphasis> the null outcome:"
+msgstr "Resultados nulos são um caso especial em JSF. O resultado nulo é interpretado com o significado \"re-exibição da página\". A seguinte regra de navegação coincide com qualquer resultado não nulo, mas <emphasis>não</emphasis> coincide com o resultado nulo:"
+
+#. Tag: programlisting
+#: Events.xml:183
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule&gt;\n"
+"            &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule&gt;\n"
+"            &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Events.xml:184
+#, no-c-format
+msgid ""
+"If you want to perform navigation when a null outcome occurs, use the "
+"following form instead:"
+msgstr "Caso queira executar a navegação quando um resultado nulo ocorrer, use o seguinte formulário:"
+
+#. Tag: programlisting
+#: Events.xml:187
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+
+#. Tag: title
+#: Events.xml:188
+#, no-c-format
+msgid "Fine-grained files for definition of navigation, page actions and parameters"
+msgstr "Arquivos para definição de navegação, ações da página e parâmetros"
+
+#. Tag: para
+#: Events.xml:189
+#, no-c-format
+msgid ""
+"If you have a lot of different page actions and page parameters, or even "
+"just a lot of navigation rules, you will almost certainly want to split the "
+"declarations up over multiple files. You can define actions and parameters "
+"for a page with the view id <literal>/calc/calculator.jsp</literal> in a "
+"resource named <literal>calc/calculator.page.xml</literal>. The root element "
+"in this case is the <literal>&lt;page&gt;</literal> element, and the view id "
+"is implied:"
+msgstr "Caso tenha muitas ações da página e parâmetros da página, ou mesmo muitas regras de navegação, você irá certamente dividir as declarações em arquivos múltiplos. Você pode definir ações e parâmetros para a página com a identificação de visualização <literal>/calc/calculator.jsp</literal> num nomeado recurso <literal>calc/calculator.page.xml</literal>. O elemento raiz neste caso é o elemento <literal>&lt;page&gt;</literal>, e a identificação da visualização é aplicada:"
+
+#. Tag: programlisting
+#: Events.xml:192
+#, no-c-format
+msgid ""
+"&lt;page action=\"#{calculator.calculate}\"&gt;\n"
+"    &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"    &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"    &lt;param name=\"op\" converter=\"#{operatorConverter}\" value=\"#"
+"{calculator.op}\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page action=\"#{calculator.calculate}\"&gt;\n"
+"    &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"    &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"    &lt;param name=\"op\" converter=\"#{operatorConverter}\" value=\"#"
+"{calculator.op}\"/&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: title
+#: Events.xml:193
+#, no-c-format
+msgid "Component-driven events"
+msgstr "Eventos dirigidos do componente"
+
+#. Tag: para
+#: Events.xml:194
+#, no-c-format
+msgid ""
+"Seam components can interact by simply calling each others methods. Stateful "
+"components may even implement the observer/observable pattern. But to enable "
+"components to interact in a more loosely-coupled fashion than is possible "
+"when the components call each others methods directly, Seam provides "
+"<emphasis>component-driven events</emphasis>."
+msgstr "Os componentes Seam podem interagir simplesmente chamando cada um dos outros métodos. Os componentes com estado podem ainda implementar o padrão observador/observação. Porém, para possibilitar que os componentes interajam numa moda mais loosely-coupled, sendo possível quando os componentes chamarem cada um dos outros métodos diretamente, o Seam fornecerá <emphasis>eventos dirigidos do componente</emphasis>."
+
+#. Tag: para
+#: Events.xml:197
+#, no-c-format
+msgid "We specify event listeners (observers) in <literal>components.xml</literal>."
+msgstr "Especificamos os listeners (observadores) do evento em <literal>components.xml</literal>."
+
+#. Tag: programlisting
+#: Events.xml:200
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;event type=\"hello\"&gt;\n"
+"        &lt;action expression=\"#{helloListener.sayHelloBack}\"/&gt;\n"
+"        &lt;action expression=\"#{logger.logHello}\"/&gt;\n"
+"    &lt;/event&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components&gt;\n"
+"    &lt;event type=\"hello\"&gt;\n"
+"        &lt;action expression=\"#{helloListener.sayHelloBack}\"/&gt;\n"
+"        &lt;action expression=\"#{logger.logHello}\"/&gt;\n"
+"    &lt;/event&gt;\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Events.xml:201
+#, no-c-format
+msgid "Where the <emphasis>event type</emphasis> is just an arbitrary string."
+msgstr "Onde o <emphasis>tipo do evento</emphasis> é apenas uma seqüência arbitrária."
+
+#. Tag: para
+#: Events.xml:204
+#, no-c-format
+msgid ""
+"When an event occurs, the actions registered for that event will be called "
+"in the order they appear in <literal>components.xml</literal>. How does a "
+"component raise an event? Seam provides a built-in component for this."
+msgstr "Quando um evento ocorre, as registradas ações para aquele evento irão ser chamadas para que eles apareçam nos <literal>components.xml</literal>. Como é que um documento causa um evento? O Seam fornece um componente interno para isto."
+
+#. Tag: programlisting
+#: Events.xml:207
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World!\");\n"
+"        Events.instance().raiseEvent(\"hello\");\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World!\");\n"
+"        Events.instance().raiseEvent(\"hello\");\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Events.xml:208
+#, no-c-format
+msgid "Or you can use an annotation."
+msgstr "Alternativamente você pode utilizar uma anotação."
+
+#. Tag: programlisting
+#: Events.xml:211
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    @RaiseEvent(\"hello\")\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World!\");\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    @RaiseEvent(\"hello\")\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World!\");\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Events.xml:212
+#, no-c-format
+msgid ""
+"Notice that this event producer has no dependency upon event consumers. The "
+"event listener may now be implemented with absolutely no dependency upon the "
+"producer:"
+msgstr "Perceba que este produtor de evento não possui dependência dos consumidores do evento. O listener do evento talvez seja implantado sem absoluta dependência do produtor:"
+
+#. Tag: programlisting
+#: Events.xml:215
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    public void sayHelloBack() {\n"
+"        FacesMessages.instance().add(\"Hello to you too!\");\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    public void sayHelloBack() {\n"
+"        FacesMessages.instance().add(\"Hello to you too!\");\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Events.xml:216
+#, no-c-format
+msgid ""
+"The method binding defined in <literal>components.xml</literal> above takes "
+"care of mapping the event to the consumer. If you don&#39;t like futzing "
+"about in the <literal>components.xml</literal> file, you can use an "
+"annotation instead:"
+msgstr "O método binding definido nos <literal>components.xml</literal> acima, cuida do mapeamento do evento para o consumidor. Caso não queira usar o arquivo dos <literal>components.xml</literal>, você poderá usar uma anotação no lugar de:"
+
+#. Tag: programlisting
+#: Events.xml:219
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    @Observer(\"hello\")\n"
+"    public void sayHelloBack() {\n"
+"        FacesMessages.instance().add(\"Hello to you too!\");\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    @Observer(\"hello\")\n"
+"    public void sayHelloBack() {\n"
+"        FacesMessages.instance().add(\"Hello to you too!\");\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Events.xml:220
+#, no-c-format
+msgid ""
+"You might wonder why I&#39;ve not mentioned anything about event objects in "
+"this discussion. In Seam, there is no need for an event object to propagate "
+"state between event producer and listener. State is held in the Seam "
+"contexts, and is shared between components. However, if you really want to "
+"pass an event object, you can:"
+msgstr "Você pode estar curioso em saber o motivo pelo qual não mencionamos nada a respeito dos objetos do evento nesta discussão. Não há necessidade de um objeto do evento propagar o estado entre um produtor do evento e listener. O estado é retido nos contextos Seam e compartilhado entre os componentes. No entanto, se você realmente desejar passar um objeto do evento, você poderá:"
+
+#. Tag: programlisting
+#: Events.xml:223
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    private String name;\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World, my name is #0.\", "
+"name);\n"
+"        Events.instance().raiseEvent(\"hello\", name);\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    private String name;\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World, my name is #0.\", "
+"name);\n"
+"        Events.instance().raiseEvent(\"hello\", name);\n"
+"    }\n"
+"}"
+
+#. Tag: programlisting
+#: Events.xml:224
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    @Observer(\"hello\")\n"
+"    public void sayHelloBack(String name) {\n"
+"        FacesMessages.instance().add(\"Hello #0!\", name);\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    @Observer(\"hello\")\n"
+"    public void sayHelloBack(String name) {\n"
+"        FacesMessages.instance().add(\"Hello #0!\", name);\n"
+"    }\n"
+"}"
+
+#. Tag: title
+#: Events.xml:225
+#, no-c-format
+msgid "Contextual events"
+msgstr "Eventos Contextuais"
+
+#. Tag: para
+#: Events.xml:226
+#, no-c-format
+msgid ""
+"Seam defines a number of built-in events that the application can use to "
+"perform special kinds of framework integration. The events are:"
+msgstr "O Seam determina um número de eventos internos que o aplicativo pode usar para executar tipos especiais de integração de framework. Os eventos são:"
+
+#. Tag: para
+#: Events.xml:231
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.validationFailed</literal> &mdash; called when JSF "
+"validation fails"
+msgstr "<literal>org.jboss.seam.validationFailed</literal> &mdash; chamado uma vez que a validação JSF falhe"
+
+#. Tag: para
+#: Events.xml:236
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.noConversation</literal> &mdash; called when there "
+"is no long running conversation and a long running conversation is required"
+msgstr "<literal>org.jboss.seam.noConversation</literal> &mdash; chamado quando não houver mais conversação de longa execução, e quando uma conversação de longa execução for solicitada"
+
+#. Tag: para
+#: Events.xml:241
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preSetVariable.&lt;name&gt;</literal> &mdash; called "
+"when the context variable &lt;name&gt; is set"
+msgstr "<literal>org.jboss.seam.preSetVariable.&lt;name&gt;</literal> &mdash; chamado quando o contexto da variável &lt;name&gt; for definido"
+
+#. Tag: para
+#: Events.xml:246
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postSetVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is set"
+msgstr "<literal>org.jboss.seam.postSetVariable.&lt;name&gt;</literal> &mdash; chamado quando o contexto da variável &lt;name&gt; for definido"
+
+#. Tag: para
+#: Events.xml:251
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preRemoveVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is unset"
+msgstr "<literal>org.jboss.seam.preRemoveVariable.&lt;name&gt;</literal> &mdash; chamado quando o contexto da variável &lt;name&gt; for removido"
+
+#. Tag: para
+#: Events.xml:256
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postRemoveVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is unset"
+msgstr "<literal>org.jboss.seam.postRemoveVariable.&lt;name&gt;</literal> &mdash; chamado quando o contexto da variável &lt;name&gt; for removido"
+
+#. Tag: para
+#: Events.xml:261
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preDestroyContext.&lt;SCOPE&gt;</literal> &mdash; "
+"called before the &lt;SCOPE&gt; context is destroyed"
+msgstr "<literal>org.jboss.seam.preDestroyContext.&lt;SCOPE&gt;</literal> &mdash; chamado quando o contexto do &lt;SCOPE&gt; for destruído"
+
+#. Tag: para
+#: Events.xml:266
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postDestroyContext.&lt;SCOPE&gt;</literal> &mdash; "
+"called after the &lt;SCOPE&gt; context is destroyed"
+msgstr "<literal>org.jboss.seam.postDestroyContext.&lt;SCOPE&gt;</literal> &mdash; chamado após o contexto do &lt;SCOPE&gt; for destruído"
+
+#. Tag: para
+#: Events.xml:271
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beginConversation </literal>&mdash; called whenever "
+"a long-running conversation begins"
+msgstr "<literal>org.jboss.seam.beginConversation </literal>&mdash; chamado a qualquer instante em que a conversação de longa execução iniciar"
+
+#. Tag: para
+#: Events.xml:276
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endConversation </literal>&mdash; called whenever a "
+"long-running conversation ends"
+msgstr "<literal>org.jboss.seam.endConversation </literal>&mdash; chamado a qualquer instante que a conversação de longa execução terminar"
+
+#. Tag: para
+#: Events.xml:281
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beginPageflow.&lt;name&gt; </literal>&mdash; called "
+"when the pageflow &lt;name&gt; begins"
+msgstr "<literal>org.jboss.seam.beginPageflow.&lt;name&gt; </literal>&mdash; chamado quando o pageflow &lt;name&gt; iniciar"
+
+#. Tag: para
+#: Events.xml:286
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endPageflow.&lt;name&gt; </literal>&mdash; called "
+"when the pageflow &lt;name&gt; ends"
+msgstr "<literal>org.jboss.seam.endPageflow.&lt;name&gt; </literal>&mdash; chamado quando o pageflow &lt;name&gt; encerrar"
+
+#. Tag: para
+#: Events.xml:291
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.createProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; is created"
+msgstr "<literal>org.jboss.seam.createProcess.&lt;name&gt; </literal>&mdash; chamado quando o processo &lt;name&gt; for criado"
+
+#. Tag: para
+#: Events.xml:296
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; ends"
+msgstr "<literal>org.jboss.seam.endProcess.&lt;name&gt; </literal>&mdash; chamado quando o processo &lt;name&gt; for encerrado"
+
+#. Tag: para
+#: Events.xml:301
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.initProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; is associated with the conversation"
+msgstr "<literal>org.jboss.seam.initProcess.&lt;name&gt; </literal>&mdash; chamado quando o processo &lt;name&gt; for associado com a conversação"
+
+#. Tag: para
+#: Events.xml:306
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.initTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is associated with the conversation"
+msgstr "<literal>org.jboss.seam.initTask.&lt;name&gt; </literal>&mdash; chamado quando a tarefa &lt;name&gt; for associada com a conversação"
+
+#. Tag: para
+#: Events.xml:311
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.startTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is started"
+msgstr "<literal>org.jboss.seam.startTask.&lt;name&gt; </literal>&mdash; chamado quando a tarefa &lt;name&gt; for iniciada"
+
+#. Tag: para
+#: Events.xml:316
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is ended"
+msgstr "<literal>org.jboss.seam.endTask.&lt;name&gt; </literal>&mdash; chamado quando a tarefa &lt;name&gt; for terminada"
+
+#. Tag: para
+#: Events.xml:321
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postCreate.&lt;name&gt; </literal>&mdash; called "
+"when the component &lt;name&gt; is created"
+msgstr "<literal>org.jboss.seam.postCreate.&lt;name&gt; </literal>&mdash; chamado quando o componente &lt;name&gt; for criado"
+
+#. Tag: para
+#: Events.xml:326
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preDestroy.&lt;name&gt; </literal>&mdash; called "
+"when the component &lt;name&gt; is destroyed"
+msgstr "<literal>org.jboss.seam.preDestroy.&lt;name&gt; </literal>&mdash; chamado quando o componente &lt;name&gt; for destruído"
+
+#. Tag: para
+#: Events.xml:331
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beforePhase </literal>&mdash; called before the "
+"start of a JSF phase"
+msgstr "<literal>org.jboss.seam.beforePhase </literal>&mdash; chamado antes da inicialização de uma fase JSF"
+
+#. Tag: para
+#: Events.xml:336
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.afterPhase </literal>&mdash; called after the end of "
+"a JSF phase"
+msgstr "<literal>org.jboss.seam.afterPhase </literal>&mdash; chamado após o término de uma fase JSF"
+
+#. Tag: para
+#: Events.xml:341
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postAuthenticate.&lt;name&gt; </literal>&mdash; "
+"called after a user is authenticated"
+msgstr "<literal>org.jboss.seam.postAuthenticate.&lt;name&gt; </literal>&mdash; chamado após um usuário ser identificado"
+
+#. Tag: para
+#: Events.xml:346
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preAuthenticate.&lt;name&gt; </literal>&mdash; "
+"called before attempting to authenticate a user"
+msgstr "<literal>org.jboss.seam.preAuthenticate.&lt;name&gt; </literal>&mdash; chamado antes da tentativa de se autenticar um usuário "
+
+#. Tag: para
+#: Events.xml:351
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.notLoggedIn</literal> &mdash; called there is no "
+"authenticated user and authentication is required"
+msgstr "<literal>org.jboss.seam.notLoggedIn</literal> &mdash; a chamada não possui usuário autenticado e a autenticação é solicitada"
+
+#. Tag: para
+#: Events.xml:356
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.rememberMe</literal> &mdash; occurs when Seam "
+"security detects the username in a cookie"
+msgstr "<literal>org.jboss.seam.rememberMe</literal> &mdash; ocorre quando a seguridade Seam detecta o nome do usuário numa cookie"
+
+#. Tag: para
+#: Events.xml:361
+#, no-c-format
+msgid ""
+"Seam components may observe any of these events in just the same way they "
+"observe any other component-driven events."
+msgstr "Os componentes Seam talvez observem qualquer um destes eventos da mesma forma que eles observam quaisquer outros eventos de componentes dirigidos."
+
+#. Tag: title
+#: Events.xml:364
+#, no-c-format
+msgid "Seam interceptors"
+msgstr "Interceptores Seam"
+
+#. Tag: para
+#: Events.xml:365
+#, no-c-format
+msgid ""
+"EJB 3.0 introduced a standard interceptor model for session bean components. "
+"To add an interceptor to a bean, you need to write a class with a method "
+"annotated <literal>@AroundInvoke</literal> and annotate the bean with an "
+"<literal>@Interceptors</literal> annotation that specifies the name of the "
+"interceptor class. For example, the following interceptor checks that the "
+"user is logged in before allowing invoking an action listener method:"
+msgstr "O EJB 3.0 introduziu um modelo de interceptor padrão para os componentes de bean de sessão. Para adicionar um interceptor a um bean, você precisa escrever a classe com um método anotado <literal>@AroundInvoke</literal>, além de anotar o bean numa anotação <literal>@Interceptors</literal>, da qual especifica o nome da classe do interceptor. Por exemplo, o seguinte interceptor checa que o usuário efetuou o logon antes de permitir a invocação num método de action listener:"
+
+#. Tag: programlisting
+#: Events.xml:368
+#, no-c-format
+msgid ""
+"public class LoggedInInterceptor {\n"
+"\n"
+"   @AroundInvoke\n"
+"   public Object checkLoggedIn(InvocationContext invocation) throws "
+"Exception {\n"
+"   \n"
+"      boolean isLoggedIn = Contexts.getSessionContext().get(\"loggedIn\")!"
+"=null;\n"
+"      if (isLoggedIn) {\n"
+"         //the user is already logged in\n"
+"         return invocation.proceed();\n"
+"      }\n"
+"      else {\n"
+"         //the user is not logged in, fwd to login page\n"
+"         return \"login\";\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+"public class LoggedInInterceptor {\n"
+"\n"
+"   @AroundInvoke\n"
+"   public Object checkLoggedIn(InvocationContext invocation) throws "
+"Exception {\n"
+"   \n"
+"      boolean isLoggedIn = Contexts.getSessionContext().get(\"loggedIn\")!"
+"=null;\n"
+"      if (isLoggedIn) {\n"
+"         //the user is already logged in\n"
+"         return invocation.proceed();\n"
+"      }\n"
+"      else {\n"
+"         //the user is not logged in, fwd to login page\n"
+"         return \"login\";\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+
+#. Tag: para
+#: Events.xml:369
+#, no-c-format
+msgid ""
+"To apply this interceptor to a session bean which acts as an action "
+"listener, we must annotate the session bean <literal>@Interceptors"
+"(LoggedInInterceptor.class)</literal>. This is a somewhat ugly annotation. "
+"Seam builds upon the interceptor framework in EJB3 by allowing you to use "
+"<literal>@Interceptors</literal> as a meta-annotation. In our example, we "
+"would create an <literal>@LoggedIn</literal> annotation, as follows:"
+msgstr ""
+"Para aplicar este interceptor a uma sessão bean que atua como um action listener, deveremos anotar o bean de sessão <literal>@Interceptors"
+"(LoggedInInterceptor.class)</literal>. O Seam constrói o framework do interceptor em EJB3, permitindo que você use <literal>@Interceptors</literal> como uma meta-anotação. Em nosso exemplo, gostaríamos de criar uma anotação <literal>@LoggedIn</literal>, como segue a seguir:"
+
+#. Tag: programlisting
+#: Events.xml:372
+#, no-c-format
+msgid ""
+"@Target(TYPE)\n"
+"@Retention(RUNTIME)\n"
+"@Interceptors(LoggedInInterceptor.class)\n"
+"public @interface LoggedIn {}"
+msgstr ""
+"@Target(TYPE)\n"
+"@Retention(RUNTIME)\n"
+"@Interceptors(LoggedInInterceptor.class)\n"
+"public @interface LoggedIn {}"
+
+#. Tag: para
+#: Events.xml:373
+#, no-c-format
+msgid ""
+"We can now simply annotate our action listener bean with <literal>@LoggedIn</"
+"literal> to apply the interceptor."
+msgstr ""
+"Podemos agora simplesmente anotar nosso bean de action listener com <literal>@LoggedIn</"
+"literal>, para a aplicação do interceptor."
+
+#. Tag: programlisting
+#: Events.xml:376
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"changePasswordAction\")\n"
+"@LoggedIn\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class ChangePasswordAction implements ChangePassword { \n"
+"    \n"
+"    ...\n"
+"    \n"
+"    public String changePassword() { ... }\n"
+"    \n"
+"}"
+msgstr ""
+"@Stateless\n"
+"@Name(\"changePasswordAction\")\n"
+"@LoggedIn\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class ChangePasswordAction implements ChangePassword { \n"
+"    \n"
+"    ...\n"
+"    \n"
+"    public String changePassword() { ... }\n"
+"    \n"
+"}"
+
+#. Tag: para
+#: Events.xml:377
+#, no-c-format
+msgid ""
+"If interceptor ordering is important (it usually is), you can add "
+"<literal>@Interceptor</literal> annotations to your interceptor classes to "
+"specify a partial order of interceptors."
+msgstr "Caso a ordenação do interceptor seja importante (normalmente é), você pode adicionar as anotações <literal>@Interceptor</literal> às suas classes do interceptor para especificar uma ordenação parcial dos interceptores."
+
+#. Tag: programlisting
+#: Events.xml:380
+#, no-c-format
+msgid ""
+"@Interceptor(around={BijectionInterceptor.class,\n"
+"                     ValidationInterceptor.class,\n"
+"                     ConversationInterceptor.class},\n"
+"             within=RemoveInterceptor.class)\n"
+"public class LoggedInInterceptor\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+"@Interceptor(around={BijectionInterceptor.class,\n"
+"                     ValidationInterceptor.class,\n"
+"                     ConversationInterceptor.class},\n"
+"             within=RemoveInterceptor.class)\n"
+"public class LoggedInInterceptor\n"
+"{\n"
+"    ...\n"
+"}"
+
+#. Tag: para
+#: Events.xml:381
+#, no-c-format
+msgid ""
+"You can even have a \"client-side\" interceptor, that runs around any of the "
+"built-in functionality of EJB3:"
+msgstr "Você pode ainda ter um interceptor \"a favor do cliente\", que roda sob qualquer uma das funcionalidades do EJB3:"
+
+#. Tag: programlisting
+#: Events.xml:384
+#, no-c-format
+msgid ""
+"@Interceptor(type=CLIENT)\n"
+"public class LoggedInInterceptor\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+"@Interceptor(type=CLIENT)\n"
+"public class LoggedInInterceptor\n"
+"{\n"
+"    ...\n"
+"}"
+
+#. Tag: para
+#: Events.xml:385
+#, no-c-format
+msgid ""
+"EJB interceptors are stateful, with a lifecycle that is the same as the "
+"component they intercept. For interceptors which do not need to maintain "
+"state, Seam lets you get a performance optimization by specifying "
+"<literal>@Interceptor(stateless=true)</literal>."
+msgstr "Os interceptores estão com estado, e com um mesmo ciclo de vida do componente que eles interceptam. Para os interceptores que não precisam manter o estado, o Seam permite que você obtenha a otimização do desempenho apenas especificando <literal>@Interceptor(stateless=true)</literal>."
+
+#. Tag: para
+#: Events.xml:388
+#, no-c-format
+msgid ""
+"Much of the functionality of Seam is implemented as a set of built-in Seam "
+"interceptors, including the interceptors named in the previous example. You "
+"don&#39;t have to explicitly specify these interceptors by annotating your "
+"components; they exist for all interceptable Seam components."
+msgstr "Muita da funcionalidade do Seam é implementada como um conjunto dos interceptores Seam internos, incluindo os nomeados interceptores na amostra anterior. Você não precisa especificar explicitamente estes interceptores anotando seus componentes, uma vez que eles existem para todos os interceptores de componentes Seam. "
+
+#. Tag: para
+#: Events.xml:391
+#, no-c-format
+msgid ""
+"You can even use Seam interceptors with JavaBean components, not just EJB3 "
+"beans!"
+msgstr "Você pode ainda usar interceptores com os componentes JavaBean, não apenas com os beans EJB3."
+
+#. Tag: para
+#: Events.xml:394
+#, no-c-format
+msgid ""
+"EJB defines interception not only for business methods (using "
+"<literal>@AroundInvoke</literal>), but also for the lifecycle methods "
+"<literal>@PostConstruct</literal>, <literal>@PreDestroy</literal>, "
+"<literal>@PrePassivate</literal> and <literal>@PostActive</literal>. Seam "
+"supports all these lifecycle methods on both component and interceptor not "
+"only for EJB3 beans, but also for JavaBean components (except "
+"<literal>@PreDestroy</literal> which is not meaningful for JavaBean "
+"components)."
+msgstr ""
+"O EJB define a intercepção não apenas para os métodos comerciais ( usando <literal>@AroundInvoke</literal>), mas também para os métodos do ciclo de vida <literal>@PostConstruct</literal>, <literal>@PreDestroy</literal>, "
+"<literal>@PrePassivate</literal> e <literal>@PostActive</literal>. O Seam apoia todos estes métodos do ciclo de vida em ambos componente e interceptor, não apenas para JavaBeans, mas também para componentes JavaBean ( com exceção do <literal>@PreDestroy</literal>, do qual não é significante para os componentes JavaBeans)."
+
+#. Tag: title
+#: Events.xml:397
+#, no-c-format
+msgid "Managing exceptions"
+msgstr "Gerenciando exceções"
+
+#. Tag: para
+#: Events.xml:398
+#, no-c-format
+msgid ""
+"JSF is surprisingly limited when it comes to exception handling. As a "
+"partial workaround for this problem, Seam lets you define how a particular "
+"class of exception is to be treated by annotating the exception class, or "
+"declaring the exception class in an XML file. This facility is meant to be "
+"combined with the EJB 3.0-standard <literal>@ApplicationException</literal> "
+"annotation which specifies whether the exception should cause a transaction "
+"rollback."
+msgstr "O JSF é surpreendentemente limitado quando falamos da exceção manuseada. Como contorno parcial para este problema, o Seam permite que você defina como uma classe particular de exceção é tratada pela anotação da classe de exceção, ou declarando a classe de exceção num arquivo XML. Esta facilidade deve combinar-se com a anotação <literal>@ApplicationException</literal> padrão EJB 3.0, da qual especifica se é que a exceção deve causar uma reversão de transação."
+
+#. Tag: title
+#: Events.xml:401
+#, no-c-format
+msgid "Exceptions and transactions"
+msgstr "Exceções e transações"
+
+#. Tag: para
+#: Events.xml:402
+#, no-c-format
+msgid ""
+"EJB specifies well-defined rules that let us control whether an exception "
+"immediately marks the current transaction for rollback when it is thrown by "
+"a business method of the bean: <emphasis>system exceptions</emphasis> always "
+"cause a transaction rollback, <emphasis>application exceptions</emphasis> do "
+"not cause a rollback by default, but they do if "
+"<literal>@ApplicationException(rollback=true)</literal> is specified. (An "
+"application exception is any checked exception, or any unchecked exception "
+"annotated <literal>@ApplicationException</literal>. A system exception is "
+"any unchecked exception without an <literal>@ApplicationException</literal> "
+"annotation.)"
+msgstr "O EJB especifica as regras bem definidas, das quais  nos permitem controlar se uma exceção marca imediatamente a transação atual para reversão. Uma vez que isto é lançado por um método comercial de um bean:as <emphasis>exceções do sistema</emphasis> sempre causam a reversão da transação, as <emphasis>exceções do aplicativo</emphasis> não causam uma reversão pelo padrão, mas elas a fazem se a <literal>@ApplicationException(rollback=true)</literal> for especificada. (Uma exceção do aplicativo é qualquer exceção selecionada ou qualquer exceção não selecionada da <literal>@ApplicationException</literal> anotada. Uma exceção de sistema é qualquer exceção não selecionada sem uma anotação <literal>@ApplicationException</literal>.) "
+
+#. Tag: para
+#: Events.xml:405
+#, no-c-format
+msgid ""
+"Note that there is a difference between marking a transaction for rollback, "
+"and actually rolling it back. The exception rules say that the transaction "
+"should be marked rollback only, but it may still be active after the "
+"exception is thrown."
+msgstr "Perceba que existe uma diferença entre marcar uma transação para reversão e na realidade revertê-la. As regras de exceção falam que uma transação deve ser como reversão apenas, no entanto ela ainda estará ativa após a exceção ser lançada."
+
+#. Tag: para
+#: Events.xml:408
+#, no-c-format
+msgid ""
+"Seam applies the EJB 3.0 exception rollback rules also to Seam JavaBean "
+"components."
+msgstr "O Seam também aplica as regras de reversão da exceção EJB 3.0 para os componentes JavaBean Seam."
+
+#. Tag: para
+#: Events.xml:411
+#, no-c-format
+msgid ""
+"But these rules only apply in the Seam component layer. What about an "
+"exception that is uncaught and propagates out of the Seam component layer, "
+"and out of the JSF layer? Well, it is always wrong to leave a dangling "
+"transaction open, so Seam rolls back any active transaction when an "
+"exception occurs and is uncaught in the Seam component layer."
+msgstr "No entanto, estas regras apenas são aplicadas na camada do componente Seam. E, o que acontece com uma exceção que não é encontrada e se propaga fora da camada de componente Seam, e fora da camada JSF? Bem, não é certo deixar uma transação aberta, então o Seam reverte qualquer transação ativa quando uma exceção ocorrer e não é encontrada na camada de componente Seam. "
+
+#. Tag: title
+#: Events.xml:414
+#, no-c-format
+msgid "Enabling Seam exception handling"
+msgstr "Ativando o manuseio da exceção Seam"
+
+#. Tag: para
+#: Events.xml:415
+#, no-c-format
+msgid ""
+"To enable Seam&#39;s exception handling, we need to make sure we have the "
+"master servlet filter declared in <literal>web.xml</literal>:"
+msgstr "Para ativar o manuseio da exceção Seam precisamos ter certeza de que possuimos o filtro servlet mestre declarado em <literal>web.xml</literal>:"
+
+#. Tag: programlisting
+#: Events.xml:418
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.servlet.SeamFilter&lt;/filter-"
+"class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;"
+msgstr ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.servlet.SeamFilter&lt;/filter-"
+"class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;"
+
+#. Tag: para
+#: Events.xml:419
+#, no-c-format
+msgid ""
+"You may also need to disable Facelets development mode in <literal>web.xml</"
+"literal> and Seam debug mode in <literal>components.xml</literal> if you "
+"want your exception handlers to fire."
+msgstr ""
+"Você também precisa desativar o modo de desenvolvimento Facelets em <literal>web.xml</"
+"literal> e modo de depuração Seam nos <literal>components.xml</literal>, caso queira que seus manuseios da exceção sejam acionados."
+
+#. Tag: title
+#: Events.xml:422
+#, no-c-format
+msgid "Using annotations for exception handling"
+msgstr "Usando anotações para o manuseio da exceção"
+
+#. Tag: para
+#: Events.xml:423
+#, no-c-format
+msgid ""
+"The following exception results in a HTTP 404 error whenever it propagates "
+"out of the Seam component layer. It does not roll back the current "
+"transaction immediately when thrown, but the transaction will be rolled back "
+"if it the exception is not caught by another Seam component."
+msgstr "A seguinte exceção resulta num erro HTTP 404 a todo instante em que ela se propaga fora da camada do componente Seam. Este procedimento não reverte a transação atual imediatamente uma vez lançada, mas a transação retornará uma vez que a exceção não for encontrada por outro componente Seam."
+
+#. Tag: programlisting
+#: Events.xml:426
+#, no-c-format
+msgid ""
+"@HttpError(errorCode=404)\n"
+"public class ApplicationException extends Exception { ... }"
+msgstr ""
+"@HttpError(errorCode=404)\n"
+"public class ApplicationException extends Exception { ... }"
+
+#. Tag: para
+#: Events.xml:427
+#, no-c-format
+msgid ""
+"This exception results in a browser redirect whenever it propagates out of "
+"the Seam component layer. It also ends the current conversation. It causes "
+"an immediate rollback of the current transaction."
+msgstr "Esta exceção resulta numa redireção do navegador a todo momento em que ela se propaga fora da camada do componente Seam, e causa também uma reversão imediata da transação atual."
+
+#. Tag: programlisting
+#: Events.xml:430
+#, no-c-format
+msgid ""
+"@Redirect(viewId=\"/failure.xhtml\", end=true)\n"
+"@ApplicationException(rollback=true)\n"
+"public class UnrecoverableApplicationException extends RuntimeException "
+"{ ... }"
+msgstr ""
+"@Redirect(viewId=\"/failure.xhtml\", end=true)\n"
+"@ApplicationException(rollback=true)\n"
+"public class UnrecoverableApplicationException extends RuntimeException "
+"{ ... }"
+
+#. Tag: para
+#: Events.xml:431
+#, no-c-format
+msgid ""
+"Note that <literal>@Redirect</literal> does not work for exceptions which "
+"occur during the render phase of the JSF lifecycle."
+msgstr "Perceba que a <literal>@Redirect</literal> não trabalha para as exceções que ocorrem durante a fase do processo do ciclo de vida JSF."
+
+#. Tag: para
+#: Events.xml:434
+#, no-c-format
+msgid ""
+"This exception results in a redirect, along with a message to the user, when "
+"it propagates out of the Seam component layer. It also immediately rolls "
+"back the current transaction."
+msgstr "A exceção resulta numa redireção, juntamente com a mensagem para o usuário, uma vez que ela se propaga fora da camada do componente Seam. Este procedimento reverte imediatamente também a transação atual."
+
+#. Tag: programlisting
+#: Events.xml:437
+#, no-c-format
+msgid ""
+"@Redirect(viewId=\"/error.xhtml\", message=\"Unexpected error\")\n"
+"public class SystemException extends RuntimeException { ... }"
+msgstr ""
+"@Redirect(viewId=\"/error.xhtml\", message=\"Unexpected error\")\n"
+"public class SystemException extends RuntimeException { ... }"
+
+#. Tag: title
+#: Events.xml:438
+#, no-c-format
+msgid "Using XML for exception handling"
+msgstr "Usando o XML para manuseio da exceção"
+
+#. Tag: para
+#: Events.xml:439
+#, no-c-format
+msgid ""
+"Since we can&#39;t add annotations to all the exception classes we are "
+"interested in, Seam also lets us specify this functionality in "
+"<literal>pages.xml</literal>."
+msgstr "Uma vez que não podemos adicionar anotações para todas as classes da exceção que possuimos interesse, o Seam também permite que especifiquemos esta funcionalidade nas <literal>pages.xml</literal>."
+
+#. Tag: programlisting
+#: Events.xml:442
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   \n"
+"   &lt;exception class=\"javax.persistence.EntityNotFoundException\"&gt;\n"
+"      &lt;http-error error-code=\"404\"/&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"   &lt;exception class=\"javax.persistence.PersistenceException\"&gt;\n"
+"      &lt;end-conversation/&gt;\n"
+"      &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"          &lt;message&gt;Database access failed&lt;/message&gt;\n"
+"      &lt;/redirect&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"   &lt;exception&gt;\n"
+"      &lt;end-conversation/&gt;\n"
+"      &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"          &lt;message&gt;Unexpected failure&lt;/message&gt;\n"
+"      &lt;/redirect&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"   \n"
+"   &lt;exception class=\"javax.persistence.EntityNotFoundException\"&gt;\n"
+"      &lt;http-error error-code=\"404\"/&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"   &lt;exception class=\"javax.persistence.PersistenceException\"&gt;\n"
+"      &lt;end-conversation/&gt;\n"
+"      &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"          &lt;message&gt;Database access failed&lt;/message&gt;\n"
+"      &lt;/redirect&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"   &lt;exception&gt;\n"
+"      &lt;end-conversation/&gt;\n"
+"      &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"          &lt;message&gt;Unexpected failure&lt;/message&gt;\n"
+"      &lt;/redirect&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Events.xml:443
+#, no-c-format
+msgid ""
+"The last <literal>&lt;exception&gt;</literal> declaration does not specify a "
+"class, and is a catch-all for any exception for which handling is not "
+"otherwise specified via annotations or in <literal>pages.xml</literal>."
+msgstr "A última declaração da <literal>&lt;exception&gt;</literal> não especifica a classe, e é verificada para qualquer exceção e qualquer manuseio que não é especificado de outra maneira além de anotações ou em <literal>pages.xml</literal>."
+
+#. Tag: para
+#: Events.xml:446
+#, no-c-format
+msgid ""
+"You can also access the handled exception instance through EL, Seam places "
+"it in the conversation context, e.g. to access the message of the exception:"
+msgstr "Você pode também acessar a instância da exceção manuseada através do EL. O Seam posicioná-la num contexto de conversação. O exemplo abaixo demonstra como acessar a mensagem da exceção:"
+
+#. Tag: programlisting
+#: Events.xml:449
+#, no-c-format
+msgid ""
+"...\n"
+"throw new AuthorizationException(\"You are not allowed to do this!\");\n"
+"\n"
+"&lt;pages&gt;\n"
+"\n"
+"    &lt;exception class=\"org.jboss.seam.security.AuthorizationException"
+"\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"        &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"            &lt;message severity=\"WARN\"&gt;#{handledException.message}&lt;/"
+"message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"\n"
+"&lt;/pages&gt;"
+msgstr ""
+"...\n"
+"throw new AuthorizationException(\"You are not allowed to do this!\");\n"
+"\n"
+"&lt;pages&gt;\n"
+"\n"
+"    &lt;exception class=\"org.jboss.seam.security.AuthorizationException"
+"\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"        &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"            &lt;message severity=\"WARN\"&gt;#{handledException.message}&lt;/"
+"message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"\n"
+"&lt;/pages&gt;"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Feedback.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Feedback.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Feedback.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,40 @@
+# translation of Feedback.po to Brazilian Portuguese
+# Language pt-BR translations for JBEAP package.
+#
+# Automatically generated, 2008.
+# Leticia de Lima <ldelima at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Feedback\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-05-19 06:14+0000\n"
+"PO-Revision-Date: 2008-05-19 16:31+1000\n"
+"Last-Translator: Leticia de Lima <ldelima at redhat.com>\n"
+"Language-Team: Brazilian Portuguese <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Feedback.xml:6
+#, no-c-format
+msgid "Feedback"
+msgstr "Comentários"
+
+#. Tag: para
+#: Feedback.xml:7
+#, no-c-format
+msgid ""
+"If you spot a typo in this guide, or if you have thought of a way to make "
+"this manual better, we would love to hear from you! Submit a report in "
+"<ulink url=\"http://jira.jboss.com/jira/browse/JBPAPP\">JIRA</ulink> against "
+"the Product: JBoss Enterprise Application Platform, Version: "
+"<replaceable>&lt;version&gt;</replaceable>, Component: <emphasis>Doc</"
+"emphasis>. If you have a suggestion for improving the documentation, try to "
+"be as specific as possible. If you have found an error, include the section "
+"number and some of the surrounding text so we can find it easily."
+msgstr ""
+"Caso você encontre um erro ou se você possui alguma sugestão de aprimoramento deste manual, nós gostaríamos muito de ouvir sua opinião. Submeta um relatório em <ulink url=\"http://jira.jboss.com/jira/browse/JBPAPP\">JIRA</ulink> em referência ao Produto: Plataforma de Aplicativo JBoss Enterprise, Versão: <replaceable>&lt;version&gt;</replaceable>, Componente: <emphasis>Doc</"
+"emphasis>. Caso você tenha alguma alguma sugestão de aperfeiçoamento desta documentação, por favor seja o mais claro possível. E caso você encontre um erro, por favor inclua o número de sessão e algumas informações do texto ao redor."
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Framework.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Framework.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Framework.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1138 @@
+# translation of Framework.po to Brazilian Portuguese
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Leticia de Lima <ldelima at redhat.com>, 2008.
+# Xi HUANG <xhuang at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Framework\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2008-06-13 12:01+1000\n"
+"Last-Translator: Leticia de Lima <ldelima at redhat.com>\n"
+"Language-Team: Brazilian Portuguese <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms:  JBEAP420 \n"
+
+#. Tag: title
+#: Framework.xml:6
+#, no-c-format
+msgid "The Seam Application Framework"
+msgstr "O Framework do Aplicativo Seam"
+
+#. Tag: para
+#: Framework.xml:7
+#, no-c-format
+msgid ""
+"Seam makes it really easy to create applications by writing plain Java "
+"classes with annotations, which don&#39;t need to extend any special "
+"interfaces or superclasses. But we can simplify some common programming "
+"tasks even further, by providing a set of pre-built components which can be "
+"re-used either by configuration in <literal>components.xml</literal> (for "
+"very simple cases) or extension."
+msgstr "O Seam facilita a criação de aplicativos gravando as classes Java simples com anotações, das quais não precisam estender quaisquer interfaces ou super classes especiais. Podemos simplificar ainda, as tarefas de programação comum, providenciando um conjunto de componentes pré-construídos que podem ser reutilizados tanto pela configuração em <literal>components.xml</literal> (em casos bastantes simples) como pela extensão."
+
+#. Tag: para
+#: Framework.xml:10
+#, no-c-format
+msgid ""
+"The <emphasis>Seam Application Framework</emphasis> can reduce the amount of "
+"code you need to write when doing basic database access in a web "
+"application, using either Hibernate or JPA."
+msgstr "O <emphasis>Framework do Aplicativo Seam</emphasis> pode reduzir a quantia de código que você precisa gravar, uma vez que você estiver realizando o acesso ao banco de dados básico, num aplicativo da web. Tudo isto, quando você estiver usando tanto o Hibernate quanto o JPA."
+
+#. Tag: para
+#: Framework.xml:13
+#, no-c-format
+msgid ""
+"We should emphasize that the framework is extremely simple, just a handful "
+"of simple classes that are easy to understand and extend. The \"magic\" is "
+"in Seam itself&mdash;the same magic you use when creating any Seam "
+"application even without using this framework."
+msgstr "Nós devemos enfatizar que o framework é extremamente simples, apenas uma pequena quantia de classes simples são fáceis de serem entendidas e estendidas. A \"mágica\" pertence ao próprio Seam, sendo a mesma mágica que você usa quando criando qualquer aplicativo, mesmo sem utilizar este framework."
+
+#. Tag: title
+#: Framework.xml:17
+#, no-c-format
+msgid "Introduction"
+msgstr "Introdução"
+
+#. Tag: para
+#: Framework.xml:18
+#, no-c-format
+msgid ""
+"The components provided by the Seam application framework may be used in one "
+"of two different approaches. The first way is to install and configure an "
+"instance of the component in <literal>components.xml</literal>, just like we "
+"have done with other kinds of built-in Seam components. For example, the "
+"following fragment from <literal>components.xml</literal> installs a "
+"component which can perform basic CRUD operations for a <literal>Contact</"
+"literal> entity:"
+msgstr ""
+"Os componentes fornecidos pelo framework do aplicativo Seam podem ser usados em um dos dois tipos diferentes de aproximação. A primeira forma é configurar e instalar uma instância de um componente em <literal>components.xml</literal>, da mesma forma em que fizemos com outros tipos de componentes Seam internos. Por exemplo, o seguinte fragmento dos <literal>components.xml</literal> instala um componente que pode executar operações CRUD básicas para uma entidade de <literal>Contato</"
+"literal>:"
+
+#. Tag: programlisting
+#: Framework.xml:21
+#, no-c-format
+msgid ""
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" \n"
+"                       entity-manager=\"#{personDatabase}\"&gt;\n"
+"    &lt;framework:id&gt;#{param.personId}&lt;/framework:id&gt;\n"
+"&lt;/framework:entity-home&gt;"
+msgstr ""
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" \n"
+"                       entity-manager=\"#{personDatabase}\"&gt;\n"
+"    &lt;framework:id&gt;#{param.personId}&lt;/framework:id&gt;\n"
+"&lt;/framework:entity-home&gt;"
+
+#. Tag: para
+#: Framework.xml:22
+#, no-c-format
+msgid ""
+"If that looks a bit too much like \"programming in XML\" for your taste, you "
+"can use extension instead:"
+msgstr "Caso isto se pareça um pouco com a \"programação em XML\", você poderá usar a extensão ao invés de: "
+
+#. Tag: programlisting
+#: Framework.xml:25
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; implements "
+"LocalPersonHome {\n"
+"    @RequestParameter String personId;\n"
+"    @In EntityManager personDatabase;\n"
+"    \n"
+"    public Object getId() { return personId; }\n"
+"    public EntityManager getEntityManager() { return personDatabase; }\n"
+"    \n"
+"}"
+msgstr ""
+"@Stateful\n"
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; implements "
+"LocalPersonHome {\n"
+"    @RequestParameter String personId;\n"
+"    @In EntityManager personDatabase;\n"
+"    \n"
+"    public Object getId() { return personId; }\n"
+"    public EntityManager getEntityManager() { return personDatabase; }\n"
+"    \n"
+"}"
+
+#. Tag: para
+#: Framework.xml:26
+#, no-c-format
+msgid ""
+"The second approach has one huge advantage: you can easily add extra "
+"functionality, and override the built-in functionality (the framework "
+"classes were carefully designed for extension and customization)."
+msgstr "A segunda aproximação possui uma grande vantagem: você pode facilmente adicionar extra funcionalidade e substituir a funcionalidade interna (as classes do framework foram designadas cuidadosamente para extensão e personalização)."
+
+#. Tag: para
+#: Framework.xml:29
+#, no-c-format
+msgid ""
+"A second advantage is that your classes may be EJB stateful sessin beans, if "
+"you like. (They do not have to be, they can be plain JavaBean components if "
+"you prefer.)"
+msgstr "A segunda vantagem é que suas classes podem ser beans de sessão com estado EJB, caso você deseje. (Eles podem ser componentes JavaBean simples ainda, caso você prefira.)"
+
+#. Tag: para
+#: Framework.xml:32
+#, no-c-format
+msgid ""
+"At this time, the Seam Application Framework provides just four built-in "
+"components: <literal>EntityHome</literal> and <literal>HibernateEntityHome</"
+"literal> for CRUD, along with <literal>EntityQuery</literal> and "
+"<literal>HibernateEntityQuery</literal> for queries."
+msgstr ""
+"Neste instante, o Framework de Aplicativo Seam fornece apenas quatro componentes internos <literal>EntityHome</literal> e <literal>HibernateEntityHome</"
+"literal> para CRUD, juntamente com <literal>EntityQuery</literal> e "
+"<literal>HibernateEntityQuery</literal> para consultas."
+
+#. Tag: para
+#: Framework.xml:35
+#, no-c-format
+msgid ""
+"The Home and Query components are written so that they can function with a "
+"scope of session, event or conversation. Which scope you use depends upon "
+"the state model you wish to use in your application."
+msgstr "Os componentes Home e Query são gravados de maneira com que eles possam operar com um escopo da sessão, evento e conversação. O escopo utilizado dependerá do modelo do estado que você deseje usar em seu aplicativo."
+
+#. Tag: para
+#: Framework.xml:38
+#, no-c-format
+msgid ""
+"The Seam Application Framework only works with Seam-managed persistence "
+"contexts. By default, the components will look for a persistence context "
+"named <literal>entityManager</literal>."
+msgstr "O Framework do Aplicativo Seam apenas trabalha com contextos de persistências gerenciados pelo Seam. Por padrão, os componentes irão procurar um nomeado contexto de persistência <literal>entityManager</literal>."
+
+#. Tag: title
+#: Framework.xml:44
+#, no-c-format
+msgid "Home objects"
+msgstr "Objetos de Casa"
+
+#. Tag: para
+#: Framework.xml:45
+#, no-c-format
+msgid ""
+"A Home object provides persistence operations for a particular entity class. "
+"Suppose we have our trusty <literal>Person</literal> class:"
+msgstr "O objeto Home fornece operações de persistência para uma classe de entidade específica. Vamos dizer que temos nossa classe <literal>Person</literal> confiável:"
+
+#. Tag: programlisting
+#: Framework.xml:48
+#, no-c-format
+msgid ""
+"@Entity\n"
+"public class Person {\n"
+"    @Id private Long id;\n"
+"    private String firstName;\n"
+"    private String lastName;\n"
+"    private Country nationality;\n"
+"    \n"
+"    //getters and setters...\n"
+"}"
+msgstr ""
+"@Entity\n"
+"public class Person {\n"
+"    @Id private Long id;\n"
+"    private String firstName;\n"
+"    private String lastName;\n"
+"    private Country nationality;\n"
+"    \n"
+"    //getters and setters...\n"
+"}"
+
+#. Tag: para
+#: Framework.xml:49
+#, no-c-format
+msgid ""
+"We can define a <literal>personHome</literal> component either via "
+"configuration:"
+msgstr "Podemos definir um componente <literal>personHome</literal> tanto por meio da configuração: "
+
+#. Tag: programlisting
+#: Framework.xml:52
+#, no-c-format
+msgid ""
+"&lt;framework:entity-home name=\"personHome\" entity-class=\"eg.Person\" /"
+"&gt;"
+msgstr ""
+"&lt;framework:entity-home name=\"personHome\" entity-class=\"eg.Person\" /"
+"&gt;"
+
+#. Tag: para
+#: Framework.xml:53
+#, no-c-format
+msgid "Or via extension:"
+msgstr "Como por meio da extensão:"
+
+#. Tag: programlisting
+#: Framework.xml:56
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {}"
+msgstr ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {} "
+
+#. Tag: para
+#: Framework.xml:57
+#, no-c-format
+msgid ""
+"A Home object provides the following operations: <literal>persist()</"
+"literal>, <literal>remove()</literal>, <literal>update()</literal> and "
+"<literal>getInstance()</literal>. Before you can call the <literal>remove()</"
+"literal>, or <literal>update()</literal> operations, you must first set the "
+"identifier of the object you are interested in, using the <literal>setId()</"
+"literal> method."
+msgstr ""
+"O objeto Home fornece as seguintes operações: <literal>persist()</"
+"literal>, <literal>remove()</literal>, <literal>update()</literal> e "
+"<literal>getInstance()</literal>. Antes de chamar <literal>remove()</"
+"literal>, ou operações <literal>update()</literal>, você deverá primeiramente configurar o identificador do objeto em que você está interessado, usando o método <literal>setId()</"
+"literal>."
+
+#. Tag: para
+#: Framework.xml:60
+#, no-c-format
+msgid "We can use a Home directly from a JSF page, for example:"
+msgstr "Podemos utilizar Home diretamente de uma página JSF, como segue no exemplo abaixo:"
+
+#. Tag: programlisting
+#: Framework.xml:63
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Create Person&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{personHome.instance."
+"firstName}\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{personHome.instance."
+"lastName}\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h1&gt;Create Person&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{personHome.instance."
+"firstName}\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{personHome.instance."
+"lastName}\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+
+#. Tag: para
+#: Framework.xml:64
+#, no-c-format
+msgid ""
+"Usually, it is much nicer to be able to refer to the <literal>Person</"
+"literal> merely as <literal>person</literal>, so let&#39;s make that "
+"possible by adding a line to <literal>components.xml</literal>:"
+msgstr ""
+"Normalmente, é muito melhor estar apto a referir-se ao <literal>Person</"
+"literal> meramente como <literal>person</literal>, então faremos com que isto seja possível adicionando a linha aos <literal>components.xml</literal>:"
+
+#. Tag: programlisting
+#: Framework.xml:67
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" /&gt;"
+msgstr ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" /&gt;"
+
+#. Tag: para
+#: Framework.xml:68
+#, no-c-format
+msgid ""
+"(If we are using configuration.) Or by adding a <literal>@Factory</literal> "
+"method to <literal>PersonHome</literal>:"
+msgstr "(No caso de estarmos usando a configuração.) Ou, adicionando um método <literal>@Factory</literal> ao <literal>PersonHome</literal>:"
+
+#. Tag: programlisting
+#: Framework.xml:71
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"}"
+msgstr ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"}"
+
+#. Tag: para
+#: Framework.xml:72
+#, no-c-format
+msgid ""
+"(If we are using extension.) This change simplifies our JSF page to the "
+"following:"
+msgstr "(Caso estivermos usando a extensão.) Esta mudança simplifica nossa página JSF para o seguinte: "
+
+#. Tag: programlisting
+#: Framework.xml:75
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Create Person&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{person.firstName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{person.lastName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h1&gt;Create Person&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{person.firstName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{person.lastName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+
+#. Tag: para
+#: Framework.xml:76
+#, no-c-format
+msgid ""
+"Well, that lets us create new <literal>Person</literal> entries. Yes, that "
+"is all the code that is required! Now, if we want to be able to display, "
+"update and delete pre-existing <literal>Person</literal> entries in the "
+"database, we need to be able to pass the entry identifier to the "
+"<literal>PersonHome</literal>. Page parameters are a great way to do that:"
+msgstr "Bem, isto nos permite criar novas entradas <literal>Person</literal>. Sim, estes são todos os códigos que são requeridos. Agora, se quisermos estar aptos a realizar a exibição, atualize e delete as entradas <literal>Person</literal> pré-existentes no banco de dados. Precisamos estar aptos a passar o identificador da entrada ao <literal>PersonHome</literal>. Os parâmetros da página são uma excelente maneira de se realizar isto:"
+
+#. Tag: programlisting
+#: Framework.xml:79
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/editPerson.jsp\"&gt;\n"
+"        &lt;param name=\"personId\" value=\"#{personHome.id}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/editPerson.jsp\"&gt;\n"
+"        &lt;param name=\"personId\" value=\"#{personHome.id}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Framework.xml:80
+#, no-c-format
+msgid "Now we can add the extra operations to our JSF page:"
+msgstr "Agora podemos adicionar operações extras para nossa página JSF:"
+
+#. Tag: programlisting
+#: Framework.xml:83
+#, no-c-format
+msgid ""
+"&lt;h1&gt;\n"
+"    &lt;h:outputText rendered=\"#{!personHome.managed}\" value=\"Create "
+"Person\"/&gt;\n"
+"    &lt;h:outputText rendered=\"#{personHome.managed}\" value=\"Edit Person"
+"\"/&gt;\n"
+"&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{person.firstName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{person.lastName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\" \n"
+"                             rendered=\"#{!personHome.managed}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Update Person\" action=\"#{personHome."
+"update}\" \n"
+"                             rendered=\"#{personHome.managed}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Delete Person\" action=\"#{personHome."
+"remove}\" \n"
+"                             rendered=\"#{personHome.managed}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h1&gt;\n"
+"    &lt;h:outputText rendered=\"#{!personHome.managed}\" value=\"Create "
+"Person\"/&gt;\n"
+"    &lt;h:outputText rendered=\"#{personHome.managed}\" value=\"Edit Person"
+"\"/&gt;\n"
+"&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{person.firstName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{person.lastName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\" \n"
+"                             rendered=\"#{!personHome.managed}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Update Person\" action=\"#{personHome."
+"update}\" \n"
+"                             rendered=\"#{personHome.managed}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Delete Person\" action=\"#{personHome."
+"remove}\" \n"
+"                             rendered=\"#{personHome.managed}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+
+#. Tag: para
+#: Framework.xml:84
+#, no-c-format
+msgid ""
+"When we link to the page with no request parameters, the page will be "
+"displayed as a \"Create Person\" page. When we provide a value for the "
+"<literal>personId</literal> request parameter, it will be an \"Edit Person\" "
+"page."
+msgstr "Quando conectamos à página sem parâmetros de solicitação, ela será exibida como uma página \"Create Person\". Uma vez que providenciarmos o valor do parâmetro de solicitação <literal>personId</literal>, isto será uma página \"Edit Person\"."
+
+#. Tag: para
+#: Framework.xml:87
+#, no-c-format
+msgid ""
+"Suppose we need to create <literal>Person</literal> entries with their "
+"nationality initialized. We can do that easily, via configuration:"
+msgstr "Imagine que precisamos criar entradas <literal>Person</literal> com as nacionalidades deles inicializadas. Podemos fazê-las facilmente por meio da configuração:"
+
+#. Tag: programlisting
+#: Framework.xml:90
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" \n"
+"                       new-instance=\"#{newPerson}\"/&gt;\n"
+"\n"
+"&lt;component name=\"newPerson\" \n"
+"           class=\"eg.Person\"&gt;\n"
+"    &lt;property name=\"nationality\"&gt;#{country}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" \n"
+"                       new-instance=\"#{newPerson}\"/&gt;\n"
+"\n"
+"&lt;component name=\"newPerson\" \n"
+"           class=\"eg.Person\"&gt;\n"
+"    &lt;property name=\"nationality\"&gt;#{country}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+
+#. Tag: para
+#: Framework.xml:91
+#, no-c-format
+msgid "Or by extension:"
+msgstr "Ou pela extensão:"
+
+#. Tag: programlisting
+#: Framework.xml:94
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"}"
+
+#. Tag: para
+#: Framework.xml:95
+#, no-c-format
+msgid ""
+"Of course, the <literal>Country</literal> could be an object managed by "
+"another Home object, for example, <literal>CountryHome</literal>."
+msgstr "O <literal>Country</literal> pode ser um objeto gerenciado por outro objeto Home, como por exemplo <literal>CountryHome</literal>."
+
+#. Tag: para
+#: Framework.xml:98
+#, no-c-format
+msgid ""
+"To add more sophisticated operations (association management, etc), we can "
+"just add methods to <literal>PersonHome</literal>."
+msgstr "Para adicionar operações mais sofisticadas (gerenciamento de associação, etc), podemos apenas adicionar métodos ao <literal>PersonHome</literal>."
+
+#. Tag: programlisting
+#: Framework.xml:101
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"    public void migrate()\n"
+"    {\n"
+"        getInstance().setCountry(country);\n"
+"        update();\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"    public void migrate()\n"
+"    {\n"
+"        getInstance().setCountry(country);\n"
+"        update();\n"
+"    }\n"
+"    \n"
+"}"
+
+#. Tag: para
+#: Framework.xml:102
+#, no-c-format
+msgid ""
+"The Home object automatically displays faces messages when an operation is "
+"successful. To customize these messages we can, again, use configuration:"
+msgstr "O objeto Home exibe automaticamente mensagens de faces quando uma operação é realizada com sucesso. Para personalizar estas mensagens, poderemos usar novamente a configuração:"
+
+#. Tag: programlisting
+#: Framework.xml:105
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\"\n"
+"                       entity-class=\"eg.Person\"\n"
+"                       new-instance=\"#{newPerson}\"&gt;\n"
+"    &lt;framework:created-message&gt;New person #{person.firstName} #{person."
+"lastName} created&lt;/framework:created-message&gt;\n"
+"    &lt;framework:deleted-message&gt;Person #{person.firstName} #{person."
+"lastName} deleted&lt;/framework:deleted-message&gt;\n"
+"    &lt;framework:updated-message&gt;Person #{person.firstName} #{person."
+"lastName} updated&lt;/framework:updated-message&gt;\n"
+"&lt;/framework:entity-home&gt;\n"
+"\n"
+"&lt;component name=\"newPerson\" \n"
+"           class=\"eg.Person\"&gt;\n"
+"    &lt;property name=\"nationality\"&gt;#{country}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\"\n"
+"                       entity-class=\"eg.Person\"\n"
+"                       new-instance=\"#{newPerson}\"&gt;\n"
+"    &lt;framework:created-message&gt;New person #{person.firstName} #{person."
+"lastName} created&lt;/framework:created-message&gt;\n"
+"    &lt;framework:deleted-message&gt;Person #{person.firstName} #{person."
+"lastName} deleted&lt;/framework:deleted-message&gt;\n"
+"    &lt;framework:updated-message&gt;Person #{person.firstName} #{person."
+"lastName} updated&lt;/framework:updated-message&gt;\n"
+"&lt;/framework:entity-home&gt;\n"
+"\n"
+"&lt;component name=\"newPerson\" \n"
+"           class=\"eg.Person\"&gt;\n"
+"    &lt;property name=\"nationality\"&gt;#{country}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+
+#. Tag: para
+#: Framework.xml:106
+#, no-c-format
+msgid "Or extension:"
+msgstr "Ou extensão:"
+
+#. Tag: programlisting
+#: Framework.xml:109
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"    protected String getCreatedMessage() { return \"New person #{person."
+"firstName} \n"
+"      #{person.lastName} created\"; }\n"
+"    protected String getUpdatedMessage() { return \"Person #{person."
+"firstName} \n"
+"      #{person.lastName} updated\"; }\n"
+"    protected String getDeletedMessage() { return \"Person #{person."
+"firstName} \n"
+"      #{person.lastName} deleted\"; }\n"
+"    \n"
+"}"
+msgstr ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"    protected String getCreatedMessage() { return \"New person #{person."
+"firstName} \n"
+"      #{person.lastName} created\"; }\n"
+"    protected String getUpdatedMessage() { return \"Person #{person."
+"firstName} \n"
+"      #{person.lastName} updated\"; }\n"
+"    protected String getDeletedMessage() { return \"Person #{person."
+"firstName} \n"
+"      #{person.lastName} deleted\"; }\n"
+"    \n"
+"}"
+
+#. Tag: para
+#: Framework.xml:110
+#, no-c-format
+msgid ""
+"But the best way to specify the messages is to put them in a resource bundle "
+"known to Seam (the bundle named <literal>messages</literal>, by default)."
+msgstr "A melhor maneira de especificar estas mensagens é colocá-las num conhecido agrupamento de recurso Seam (o nomeado agrupamento <literal>messages</literal>, pelo padrão)."
+
+#. Tag: programlisting
+#: Framework.xml:113
+#, no-c-format
+msgid ""
+"Person_created=New person #{person.firstName} #{person.lastName} created\n"
+"Person_deleted=Person #{person.firstName} #{person.lastName} deleted\n"
+"Person_updated=Person #{person.firstName} #{person.lastName} updated"
+msgstr ""
+"Person_created=New person #{person.firstName} #{person.lastName} created\n"
+"Person_deleted=Person #{person.firstName} #{person.lastName} deleted\n"
+"Person_updated=Person #{person.firstName} #{person.lastName} updated"
+
+#. Tag: para
+#: Framework.xml:114
+#, no-c-format
+msgid ""
+"This enables internationalization, and keeps your code and configuration "
+"clean of presentation concerns."
+msgstr "Isto permite a internacionalização, além de manter seu código e configuração fora das preocupações de apresentação."
+
+#. Tag: para
+#: Framework.xml:117
+#, no-c-format
+msgid ""
+"The final step is to add validation functionality to the page, using "
+"<literal>&lt;s:validateAll&gt;</literal> and <literal>&lt;s:decorate&gt;</"
+"literal>, but I&#39;ll leave that for you to figure out."
+msgstr ""
+"O passo final é adicionar a funcionalidade da validação à página, usando <literal>&lt;s:validateAll&gt;</literal> e <literal>&lt;s:decorate&gt;</"
+"literal>."
+
+#. Tag: title
+#: Framework.xml:123
+#, no-c-format
+msgid "Query objects"
+msgstr "Objetos de Consulta"
+
+#. Tag: para
+#: Framework.xml:124
+#, no-c-format
+msgid ""
+"If we need a list of all <literal>Person</literal> instance in the database, "
+"we can use a Query object. For example:"
+msgstr "Caso precisemos de uma lista com todas as instâncias <literal>Person</literal> no banco de dados, poderemos usar um objeto de Consulta. Por exemplo:"
+
+#. Tag: programlisting
+#: Framework.xml:127
+#, no-c-format
+msgid ""
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\"/&gt;"
+msgstr ""
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\"/&gt;"
+
+#. Tag: para
+#: Framework.xml:128
+#, no-c-format
+msgid "We can use it from a JSF page:"
+msgstr "Podemos usá-lo a partir de uma página JSF:"
+
+#. Tag: programlisting
+#: Framework.xml:131
+#, no-c-format
+msgid ""
+"&lt;h1&gt;List of people&lt;/h1&gt;\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+"&lt;h1&gt;List of people&lt;/h1&gt;\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+
+#. Tag: para
+#: Framework.xml:132
+#, no-c-format
+msgid "We probably need to support pagination:"
+msgstr "Provavelmente precisaremos suportar a paginação:"
+
+#. Tag: programlisting
+#: Framework.xml:135
+#, no-c-format
+msgid ""
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\" \n"
+"                        order=\"lastName\" \n"
+"                        max-results=\"20\"/&gt;"
+msgstr ""
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\" \n"
+"                        order=\"lastName\" \n"
+"                        max-results=\"20\"/&gt;"
+
+#. Tag: para
+#: Framework.xml:136
+#, no-c-format
+msgid "We&#39;ll use a page parameter to determine the page to display:"
+msgstr "Usaremos o parâmetro da página para determinar a página de exibição:"
+
+#. Tag: programlisting
+#: Framework.xml:139
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/searchPerson.jsp\"&gt;\n"
+"        &lt;param name=\"firstResult\" value=\"#{people.firstResult}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/searchPerson.jsp\"&gt;\n"
+"        &lt;param name=\"firstResult\" value=\"#{people.firstResult}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Framework.xml:140
+#, no-c-format
+msgid "The JSF code for a pagination control is a bit verbose, but manageable:"
+msgstr "O código para o controle da paginação é um pouco verbose, porém manejável:"
+
+#. Tag: programlisting
+#: Framework.xml:143
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Search for people&lt;/h1&gt;\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.previousExists}\" "
+"value=\"First Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"0\"/&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.previousExists}\" "
+"value=\"Previous Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.previousFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.nextExists}\" value="
+"\"Next Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.nextFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.nextExists}\" value="
+"\"Last Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.lastFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;"
+msgstr ""
+"&lt;h1&gt;Search for people&lt;/h1&gt;\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.previousExists}\" "
+"value=\"First Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"0\"/&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.previousExists}\" "
+"value=\"Previous Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.previousFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.nextExists}\" value="
+"\"Next Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.nextFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.nextExists}\" value="
+"\"Last Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.lastFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;"
+
+#. Tag: para
+#: Framework.xml:144
+#, no-c-format
+msgid ""
+"Real search screens let the user enter a bunch of optional search criteria "
+"to narrow the list of results returned. The Query object lets you specify "
+"optional \"restrictions\" to support this important usecase:"
+msgstr "As telas de pesquisa real permitem que o usuário entre diversos critérios de busca opcionais, com o objetivo de limitar os resultados retornados. O objeto de Consulta permite você especificar \"restrições\" opcionais para suportar este caso de uso importante:"
+
+#. Tag: programlisting
+#: Framework.xml:147
+#, no-c-format
+msgid ""
+"&lt;component name=\"examplePerson\" class=\"Person\"/&gt;\n"
+"        \n"
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\" \n"
+"                        order=\"lastName\" \n"
+"                        max-results=\"20\"&gt;\n"
+"    &lt;framework:restrictions&gt;\n"
+"        &lt;value&gt;lower(firstName) like lower( #{examplePerson.firstName} "
+"+ &#39;%&#39; )&lt;/value&gt;\n"
+"        &lt;value&gt;lower(lastName) like lower( #{examplePerson.lastName} + "
+"&#39;%&#39; )&lt;/value&gt;\n"
+"    &lt;/framework:restrictions&gt;\n"
+"&lt;/framework:entity-query&gt;"
+msgstr ""
+"&lt;component name=\"examplePerson\" class=\"Person\"/&gt;\n"
+"        \n"
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\" \n"
+"                        order=\"lastName\" \n"
+"                        max-results=\"20\"&gt;\n"
+"    &lt;framework:restrictions&gt;\n"
+"        &lt;value&gt;lower(firstName) like lower( #{examplePerson.firstName} "
+"+ &#39;%&#39; )&lt;/value&gt;\n"
+"        &lt;value&gt;lower(lastName) like lower( #{examplePerson.lastName} + "
+"&#39;%&#39; )&lt;/value&gt;\n"
+"    &lt;/framework:restrictions&gt;\n"
+"&lt;/framework:entity-query&gt;"
+
+#. Tag: para
+#: Framework.xml:148
+#, no-c-format
+msgid "Notice the use of an \"example\" object."
+msgstr "Observe o uso de um objeto \"de amostra\""
+
+#. Tag: programlisting
+#: Framework.xml:151
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Search for people&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{examplePerson.firstName}"
+"\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{examplePerson.lastName}"
+"\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;&lt;h:commandButton value=\"Search\" action=\"/search.jsp\"/"
+"&gt;&lt;/div&gt;\n"
+"&lt;/h:form&gt;\n"
+"\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+"&lt;h1&gt;Search for people&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{examplePerson.firstName}"
+"\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{examplePerson.lastName}"
+"\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;&lt;h:commandButton value=\"Search\" action=\"/search.jsp\"/"
+"&gt;&lt;/div&gt;\n"
+"&lt;/h:form&gt;\n"
+"\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+
+#. Tag: para
+#: Framework.xml:152
+#, no-c-format
+msgid ""
+"The examples in this section have all shown reuse by configuration. However, "
+"reuse by extension is equally possible for Query objects."
+msgstr "As amostras nesta seção demonstaram a reutilização pela configuração. No entanto, a reutilização pela extensão é igualmente possível para objetos de Consulta."
+
+#. Tag: title
+#: Framework.xml:158
+#, no-c-format
+msgid "Controller objects"
+msgstr "Objetos Controladores"
+
+#. Tag: para
+#: Framework.xml:159
+#, no-c-format
+msgid ""
+"A totally optional part of the Seam Application Framework is the class "
+"<literal>Controller</literal> and its subclasses <literal>EntityController</"
+"literal><literal>HibernateEntityController</literal> and "
+"<literal>BusinessProcessController</literal>. These classes provide nothing "
+"more than some convenience methods for access to commonly used built-in "
+"components and methods of built-in components. They help save a few "
+"keystrokes (characters can add up!) and provide a great launchpad for new "
+"users to explore the rich functionality built in to Seam."
+msgstr ""
+"Uma completa parte opcional do Framework do Aplicativo Seam é a classe <literal>Controller</literal>, sua sub-classe <literal>EntityController</"
+"literal><literal>HibernateEntityController</literal> e "
+"<literal>BusinessProcessController</literal>. Estas classes não oferecem mais nada além de métodos convenientes para o acesso comumente usado pelos componentes internos e métodos dos componentes internos. Eles ajudam a salvar algumas teclas pressionadas (caracteres podem adicionar ainda mais) e fornecer um excelente launchpad para que novos usuários explorem a funcionalidade interna do Seam."
+
+#. Tag: para
+#: Framework.xml:162
+#, no-c-format
+msgid ""
+"For example, here is what <literal>RegisterAction</literal> from the Seam "
+"registration example would look like:"
+msgstr "Por exemplo, segue abaixo o <literal>RegisterAction</literal> a partir do exemplo de registro Seam:"
+
+#. Tag: programlisting
+#: Framework.xml:165
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"register\")\n"
+"public class RegisterAction extends EntityController implements Register\n"
+"{\n"
+"\n"
+"   @In private User user;\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = createQuery(\"select u.username from User u where u."
+"username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getResultList();\n"
+"      \n"
+"      if ( existing.size()==0 )\n"
+"      {\n"
+"         persist(user);\n"
+"         info(\"Registered new user #{user.username}\");\n"
+"         return \"/registered.jspx\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         addFacesMessage(\"User #{user.username} already exists\");\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+"@Stateless\n"
+"@Name(\"register\")\n"
+"public class RegisterAction extends EntityController implements Register\n"
+"{\n"
+"\n"
+"   @In private User user;\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = createQuery(\"select u.username from User u where u."
+"username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getResultList();\n"
+"      \n"
+"      if ( existing.size()==0 )\n"
+"      {\n"
+"         persist(user);\n"
+"         info(\"Registered new user #{user.username}\");\n"
+"         return \"/registered.jspx\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         addFacesMessage(\"User #{user.username} already exists\");\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+
+#. Tag: para
+#: Framework.xml:166
+#, no-c-format
+msgid "As you can see, its not an earthshattering improvement..."
+msgstr "Como você pode perceber, não há melhoramento de fragmentação..."
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Gettingstarted.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Gettingstarted.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Gettingstarted.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,958 @@
+# translation of Gettingstarted.po to Brazilian Portuguese
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Leticia de Lima <ldelima at redhat.com>, 2008.
+# Xi HUANG <xhuang at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Gettingstarted\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2008-06-11 09:28+1000\n"
+"Last-Translator: Leticia de Lima <ldelima at redhat.com>\n"
+"Language-Team: Brazilian Portuguese <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms:  JBEAP420 \n"
+
+#. Tag: title
+#: Gettingstarted.xml:6
+#, no-c-format
+msgid "Getting started with Seam, using seam-gen"
+msgstr "Iniciando o Seam usando seam-gen"
+
+#. Tag: para
+#: Gettingstarted.xml:7
+#, no-c-format
+msgid ""
+"The Seam distribution includes a command line utility that makes it really "
+"easy to set up an Eclipse project, generate some simple Seam skeleton code, "
+"and reverse engineer an application from a pre-existing database."
+msgstr "A distribuição Seam inclui a utilidade de linha de comando que facilita a configuração de um projeto Eclipse, gerando alguns códigos simples skeleton Seam e reverter um aplicativo a partir de um banco de dados pré-existente."
+
+#. Tag: para
+#: Gettingstarted.xml:10
+#, no-c-format
+msgid ""
+"This is the easy way to get your feet wet with Seam, and gives you some "
+"ammunition for next time you find yourself trapped in an elevator with one "
+"of those tedious Ruby guys ranting about how great and wonderful his new toy "
+"is for building totally trivial applications that put things in databases."
+msgstr "Esta é a maneira mais fácil de famializar-se com o Seam, além de fornecer uma boa base para se trabalhar na construção dos aplicativos triviais que enviam informações aos bancos de dados."
+
+#. Tag: para
+#: Gettingstarted.xml:13
+#, no-c-format
+msgid ""
+"In this release, seam-gen works best for people with JBoss AS. You can use "
+"the generated project with other J2EE or Java EE 5 application servers by "
+"making a few manual changes to the project configuration."
+msgstr "Nesta liberação o seam-gen trabalha da melhor forma para pessoas do JBoss AS. Você pode usar o objeto gerado com outro J2EE ou servidores do aplicativo Java EE 5, realizando pequenas mudanças à configuração do projeto."
+
+#. Tag: para
+#: Gettingstarted.xml:16
+#, no-c-format
+msgid ""
+"You <emphasis>can</emphasis> use seam-gen without Eclipse, but in this "
+"tutorial, we want to show you how to use it in conjunction with Eclipse for "
+"debugging and integration testing. If you don&#39;t want to install Eclipse, "
+"you can still follow along with this tutorial&mdash;all steps can be "
+"peformed from the command line."
+msgstr "Você <emphasis>pode</emphasis> usar o seam-gen sem Eclipse, porém neste tutorial queremos apresentar como utilizá-lo em conjunto com o Eclipse de depuração e teste de integração. Caso você não queira instalar o Eclipse, você poderá seguir com este tutorial &mdash;todos os passos que podem ser executados nesta linha de comando."
+
+#. Tag: para
+#: Gettingstarted.xml:19
+#, no-c-format
+msgid ""
+"Seam-gen is basically just a big ugly Ant script wrapped around Hibernate "
+"Tools, together with some templates. Which means it is easy to customize if "
+"you need to."
+msgstr "O Seam-gen é basicamente um script Ant feio empacotado em volta das Ferramentas Hibernate juntamente com alguns modelos. Isto quer dizer que a personalização será fácil em caso de isto ser necessário."
+
+#. Tag: title
+#: Gettingstarted.xml:23
+#, no-c-format
+msgid "Before you start"
+msgstr "Antes de você iniciar"
+
+#. Tag: para
+#: Gettingstarted.xml:24
+#, no-c-format
+msgid ""
+"Make sure you have JDK 5 or JDK 6, JBoss AS 4.0.5 and Ant 1.6, along with "
+"recent versions of Eclipse, the JBoss IDE plugin for Eclipse and the TestNG "
+"plugin for Eclipse correctly installed before starting. Add your JBoss "
+"installation to the JBoss Server View in Eclipse. Start JBoss in debug mode. "
+"Finally, start a command prompt in the directory where you unzipped the Seam "
+"distribution."
+msgstr "Tenha certeza de que você tem o JDK 5 ou JDK 6. JBoss AS 4.0.5 e Ant 1.6 juntamente com as recentes versões do Eclipse, o plug-in JBoss IDE para Eclipse e plug-in TestNG para a instalação apropriada do Eclipse antes da inicialização. Adicione sua instalação para a Visualização do Servidor JBoss no Eclipse. Inicie o JBoss no modo de depuração. Finalmente, inicie o aviso do comando dentro do diretório pelo qual você descomprime a distribuição Seam. "
+
+#. Tag: para
+#: Gettingstarted.xml:27
+#, no-c-format
+msgid ""
+"JBoss has sophisticated support for hot re-deployment of WARs and EARs. "
+"Unfortunately, due to bugs in the JVM, repeated redeployment of an EAR&mdash;"
+"which is common during development&mdash;eventually causes the JVM to run "
+"out of perm gen space. For this reason, we recommend running JBoss in a JVM "
+"with a large perm gen space at development time. If you&#39;re running JBoss "
+"from JBoss IDE, you can configure this in the server launch configuration, "
+"under \"VM arguments\". We suggest the following values:"
+msgstr "O Jboss possui um suporte sofisticado para a re-implantação quente do WARs e EARs. Infelizmente, a re-implantação repetitiva de um EAR devido às bugs no JVM &mdash; o que é bastante comum durante o desenvolvimento &mdash; eventualmente faz com que o JVM não possuia mais espaço de perm gen. Por este motivo, recomendamos rodar o JBoss com um JVM num espaço amplo de perm gen no período de desenvolvimento. Caso você não esteja rodando o JBoss a partir do JBoss IDE, você pode configurá-lo numa configuração de inicialização do servidor, sob os \"argumentos VN\". Sugerimos que siga os seguintes valores:"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:30
+#, no-c-format
+msgid "-Xms512m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512"
+msgstr "-Xms512m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512"
+
+#. Tag: para
+#: Gettingstarted.xml:31
+#, no-c-format
+msgid ""
+"If you don&#39;t have so much memory available, the following is our minimum "
+"recommendation:"
+msgstr "Segue abaixo a nossa mínima recomendação, caso você não tenha muita memória disponível:"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:34
+#, no-c-format
+msgid "-Xms256m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=256"
+msgstr "-Xms256m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=256"
+
+#. Tag: para
+#: Gettingstarted.xml:35
+#, no-c-format
+msgid ""
+"If you&#39;re running JBoss from the commandline, you can configure the JVM "
+"options in <literal>bin/run.conf</literal>."
+msgstr "Caso você esteja rodando o JBoss a partir da linha de comando, você poderá configurar as opções JVM em <literal>bin/run.conf</literal>."
+
+#. Tag: para
+#: Gettingstarted.xml:38
+#, no-c-format
+msgid ""
+"If you don&#39;t want to bother with this stuff now, you don&#39;t have "
+"to&mdash;come back to it later, when you get your first "
+"<literal>OutOfMemoryException</literal>."
+msgstr "Caso você não queira preocupar-se com isto agora, você não precisará retornar para isto mais tarde uma vez que você tenha seu primeiro <literal>OutOfMemoryException</literal>."
+
+#. Tag: title
+#: Gettingstarted.xml:44
+#, no-c-format
+msgid "Setting up a new Eclipse project"
+msgstr "Configurando um novo projeto Eclipse"
+
+#. Tag: para
+#: Gettingstarted.xml:45
+#, no-c-format
+msgid ""
+"The first thing we need to do is configure seam-gen for your environment: "
+"JBoss AS installation directory, Eclipse workspace, and database connection. "
+"It&#39;s easy, just type:"
+msgstr "A primeira coisa que precisamos fazer é configurar o seam-gen para seu ambiente: o diretório de instalação JBoss AS, lugar de trabalho Eclipse e conexão de banco de dados. è fácil, apenas digite:"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:48
+#, no-c-format
+msgid ""
+"cd jboss-seam-1.1.x\n"
+"seam setup"
+msgstr ""
+"cd jboss-seam-1.1.x\n"
+"seam setup"
+
+#. Tag: para
+#: Gettingstarted.xml:49
+#, no-c-format
+msgid "And you will be prompted for the needed information:"
+msgstr "Você será informado a respeito da informação necessária:"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:52
+#, no-c-format
+msgid ""
+"C:\\Projects\\jboss-seam&gt;seam setup\n"
+"Buildfile: C:\\Projects\\jboss-seam\\seam-gen\\build.xml\n"
+"\n"
+"setup:\n"
+"    [echo] Welcome to seam-gen :-)\n"
+"    [input] Enter your Java project workspace [C:/Projects]\n"
+"\n"
+"    [input] Enter your JBoss home directory [C:/Program Files/jboss-4.0.5."
+"GA]\n"
+"\n"
+"    [input] Enter the project name [myproject]\n"
+"helloworld\n"
+"    [input] Is this project deployed as an EAR (with EJB components) or a "
+"WAR \n"
+"       (with no EJB support) [ear] (ear,war,)\n"
+"\n"
+"    [input] Enter the Java package name for your session beans [com.mydomain."
+"helloworld]\n"
+"org.jboss.helloworld\n"
+"    [input] Enter the Java package name for your entity beans [org.jboss."
+"helloworld]\n"
+"\n"
+"    [input] Enter the Java package name for your test cases [org.jboss."
+"helloworld.test]\n"
+"\n"
+"    [input] What kind of database are you using? [hsql] \n"
+"    (hsql,mysql,oracle,postgres,mssql,db2,sybase,)\n"
+"mysql\n"
+"    [input] Enter the Hibernate dialect for your database [org.hibernate."
+"dialect.MySQLDialect]\n"
+"\n"
+"    [input] Enter the filesystem path to the JDBC driver jar [lib/hsqldb."
+"jar]\n"
+"../../mysql-connector.jar\n"
+"    [input] Enter JDBC driver class for your database [com.mysql.jdbc."
+"Driver]\n"
+"\n"
+"    [input] Enter the JDBC URL for your database [jdbc:mysql:///test]\n"
+"\n"
+"    [input] Enter database username [sa]\n"
+"gavin\n"
+"    [input] Enter database password []\n"
+"\n"
+"    [input] Are you working with tables that already exist in the database? "
+"[n] (y,n,)\n"
+"y\n"
+"    [input] Do you want to drop and recreate the database tables and data in "
+"import.sql \n"
+"    each time you deploy? [n] (y,n,)\n"
+"n\n"
+"[propertyfile] Creating new property file: C:\\Projects\\jboss-seam\\seam-gen"
+"\\build.properties\n"
+"     [echo] Installing JDBC driver jar to JBoss server\n"
+"     [echo] Type &#39;seam new-project&#39; to create the new project\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 1 minute 17 seconds\n"
+"C:\\Projects\\jboss-seam&gt;"
+msgstr ""
+"C:\\Projects\\jboss-seam&gt;seam setup\n"
+"Buildfile: C:\\Projects\\jboss-seam\\seam-gen\\build.xml\n"
+"\n"
+"setup:\n"
+"    [echo] Welcome to seam-gen :-)\n"
+"    [input] Enter your Java project workspace [C:/Projects]\n"
+"\n"
+"    [input] Enter your JBoss home directory [C:/Program Files/jboss-4.0.5."
+"GA]\n"
+"\n"
+"    [input] Enter the project name [myproject]\n"
+"helloworld\n"
+"    [input] Is this project deployed as an EAR (with EJB components) or a "
+"WAR \n"
+"       (with no EJB support) [ear] (ear,war,)\n"
+"\n"
+"    [input] Enter the Java package name for your session beans [com.mydomain."
+"helloworld]\n"
+"org.jboss.helloworld\n"
+"    [input] Enter the Java package name for your entity beans [org.jboss."
+"helloworld]\n"
+"\n"
+"    [input] Enter the Java package name for your test cases [org.jboss."
+"helloworld.test]\n"
+"\n"
+"    [input] What kind of database are you using? [hsql] \n"
+"    (hsql,mysql,oracle,postgres,mssql,db2,sybase,)\n"
+"mysql\n"
+"    [input] Enter the Hibernate dialect for your database [org.hibernate."
+"dialect.MySQLDialect]\n"
+"\n"
+"    [input] Enter the filesystem path to the JDBC driver jar [lib/hsqldb."
+"jar]\n"
+"../../mysql-connector.jar\n"
+"    [input] Enter JDBC driver class for your database [com.mysql.jdbc."
+"Driver]\n"
+"\n"
+"    [input] Enter the JDBC URL for your database [jdbc:mysql:///test]\n"
+"\n"
+"    [input] Enter database username [sa]\n"
+"gavin\n"
+"    [input] Enter database password []\n"
+"\n"
+"    [input] Are you working with tables that already exist in the database? "
+"[n] (y,n,)\n"
+"y\n"
+"    [input] Do you want to drop and recreate the database tables and data in "
+"import.sql \n"
+"    each time you deploy? [n] (y,n,)\n"
+"n\n"
+"[propertyfile] Creating new property file: C:\\Projects\\jboss-seam\\seam-gen"
+"\\build.properties\n"
+"     [echo] Installing JDBC driver jar to JBoss server\n"
+"     [echo] Type &#39;seam new-project&#39; to create the new project\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 1 minute 17 seconds\n"
+"C:\\Projects\\jboss-seam&gt;"
+
+#. Tag: para
+#: Gettingstarted.xml:53
+#, no-c-format
+msgid ""
+"The tool provides sensible defaults, which you can accept by just pressing "
+"enter at the prompt."
+msgstr "A ferramenta fornece padrões sensíveis, pelo qual você pode aceitar apenas pressionando enter na tela de aviso."
+
+#. Tag: para
+#: Gettingstarted.xml:56
+#, no-c-format
+msgid ""
+"The most important choice you need to make is between EAR deployment and WAR "
+"deployment of your project. EAR projects support EJB 3.0 and require Java EE "
+"5. WAR projects do not support EJB 3.0, but may be deployed to a J2EE "
+"environment. The packaging of a WAR is also simpler to understand. If you "
+"installed JBoss with the ejb3 profile, choose <literal>ear</literal>. "
+"Otherwise, choose <literal>war</literal>. We&#39;ll assume that you&#39;ve "
+"chosen an EAR deployment for the rest of the tutorial, but you can follow "
+"exactly the same steps for a WAR deployment."
+msgstr "A escolha mais importante que você fará, será entre a implementação EAR e a implementação WAR de seu projeto. Os projetos EAR suportam EJB 3.0 e solicitam que os projetos Java EE 5. WAR não suportem o EJB 3.0. No entanto, so mesmos podem ser implementados num ambiente J2EE. O empacotamento de um WAR é também mais fácil de se entender. Caso você instale o JBoss com o perfil ejb3, escolha <literal>ear</literal>. Do contrário, escolha <literal>war</literal>. Vamos assumir que você escolheu uma implementação EAR para o resto do tutorial, mas você poderá seguir exatamente os mesmos passos para a implementação WAR."
+
+#. Tag: para
+#: Gettingstarted.xml:59
+#, no-c-format
+msgid ""
+"If you are working with an existing data model, make sure you tell seam-gen "
+"that the tables already exist in the database."
+msgstr "Caso você esteja trabalhando com um modelo de dados existentes, certifique-se de notificar o seam-gen que as tabelas já existem no banco de dados."
+
+#. Tag: para
+#: Gettingstarted.xml:62
+#, no-c-format
+msgid ""
+"The settings are stored in <literal>seam-gen/build.properties</literal>, but "
+"you can also modify them simply by running <literal>seam setup</literal> a "
+"second time."
+msgstr "As configurações são armazenadas em <literal>seam-gen/build.properties</literal>, mas você poderá também modificá-las simplesmente rodando o <literal>seam setup</literal> pela segunda vez."
+
+#. Tag: para
+#: Gettingstarted.xml:65
+#, no-c-format
+msgid ""
+"Now we can create a new project in our Eclipse workspace directory, by "
+"typing:"
+msgstr "Agora podemos criar um novo projeto em nosso diretório de lugar de trabalho Eclipse apenas digitando:"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:68
+#, no-c-format
+msgid "seam new-project"
+msgstr "Novo projeto Seam"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:69
+#, no-c-format
+msgid ""
+"C:\\Projects\\jboss-seam&gt;seam new-project\n"
+"Buildfile: C:\\Projects\\jboss-seam\\seam-gen\\build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"copy-lib:\n"
+"     [echo] Copying project jars ...\n"
+"     [copy] Copying 32 files to C:\\Projects\\helloworld\\lib\n"
+"     [copy] Copying 9 files to C:\\Projects\\helloworld\\embedded-ejb\n"
+"\n"
+"file-copy-wtp:\n"
+"\n"
+"file-copy:\n"
+"     [echo] Copying project resources ...\n"
+"     [copy] Copying 12 files to C:\\Projects\\helloworld\\resources\n"
+"     [copy] Copying 1 file to C:\\Projects\\helloworld\\resources\n"
+"     [copy] Copying 5 files to C:\\Projects\\helloworld\\view\n"
+"     [copy] Copying 5 files to C:\\Projects\\helloworld\n"
+"    [mkdir] Created dir: C:\\Projects\\helloworld\\src\n"
+"\n"
+"new-project:\n"
+"     [echo] A new Seam project named &#39;helloworld&#39; was created in "
+"the /Users/gavin/Documents/workspace directory\n"
+"     [echo] Type &#39;seam explode&#39; and go to http://localhost:8080/"
+"helloworld\n"
+"     [echo] Eclipse Users: Add the project into Eclipse using File &gt; New "
+"&gt; Project and select General &gt; Project (not Java Project)\n"
+"     [echo] NetBeans Users: Open the project in NetBeans\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 7 seconds\n"
+"C:\\Projects\\jboss-seam&gt;"
+msgstr ""
+"C:\\Projects\\jboss-seam&gt;seam new-project\n"
+"Buildfile: C:\\Projects\\jboss-seam\\seam-gen\\build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"copy-lib:\n"
+"     [echo] Copying project jars ...\n"
+"     [copy] Copying 32 files to C:\\Projects\\helloworld\\lib\n"
+"     [copy] Copying 9 files to C:\\Projects\\helloworld\\embedded-ejb\n"
+"\n"
+"file-copy-wtp:\n"
+"\n"
+"file-copy:\n"
+"     [echo] Copying project resources ...\n"
+"     [copy] Copying 12 files to C:\\Projects\\helloworld\\resources\n"
+"     [copy] Copying 1 file to C:\\Projects\\helloworld\\resources\n"
+"     [copy] Copying 5 files to C:\\Projects\\helloworld\\view\n"
+"     [copy] Copying 5 files to C:\\Projects\\helloworld\n"
+"    [mkdir] Created dir: C:\\Projects\\helloworld\\src\n"
+"\n"
+"new-project:\n"
+"     [echo] A new Seam project named &#39;helloworld&#39; was created in "
+"the /Users/gavin/Documents/workspace directory\n"
+"     [echo] Type &#39;seam explode&#39; and go to http://localhost:8080/"
+"helloworld\n"
+"     [echo] Eclipse Users: Add the project into Eclipse using File &gt; New "
+"&gt; Project and select General &gt; Project (not Java Project)\n"
+"     [echo] NetBeans Users: Open the project in NetBeans\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 7 seconds\n"
+"C:\\Projects\\jboss-seam&gt;"
+
+#. Tag: para
+#: Gettingstarted.xml:70
+#, no-c-format
+msgid ""
+"This copies the Seam jars, dependent jars and the JDBC driver jar to a new "
+"Eclipse project, and generates all needed resources and configuration files, "
+"a facelets template file and stylesheet, along with Eclipse metadata and an "
+"Ant build script. The Eclipse project will be automatically deployed to an "
+"exploded directory structure in JBoss AS as soon as you add the project "
+"using <literal>New -&gt; Project... -&gt; General -&gt; Project -&gt; Next</"
+"literal>, typing the <literal>Project name</literal> (<literal>helloworld</"
+"literal> in this case), and then clicking <literal>Finish</literal>. Do not "
+"select <literal>Java Project</literal> from the New Project wizard."
+msgstr ""
+"Isto copia as jarras Seam, jarras dependentes e jarra JDBC driver a um novo projeto eclipse gerando todos os recursos necessários e arquivos de configuração, arquivo modelo facelets e folhas de estilo juntamente com o banco de dados e script de construção Ant. O projeto Eclipse será implantado automaticamente a uma estrutura do JBoss AS assim que você adicionar o projeto usando <literal>New -&gt; Project... -&gt; General -&gt; Project -&gt; Next</"
+"literal>, digitando o <literal>nome do Projeto</literal> (<literal>helloworld</"
+"literal> neste caso), e clicando em <literal>Terminar</literal>. Não selecione "
+"<literal>Projeto Java</literal> a partir do assistente do Novo Projeto."
+
+#. Tag: para
+#: Gettingstarted.xml:73
+#, no-c-format
+msgid ""
+"If your default JDK in Eclipse is not a Java SE 5 or Java SE 6 JDK, you will "
+"need to select a Java SE 5 compliant JDK using <literal>Project -&gt; "
+"Properties -&gt; Java Compiler</literal>."
+msgstr ""
+"Caso seu JDK padrão em Eclipse não seja um Java SE 5 ou Java SE 6 JDK, você precisará selecionar uma compilação Java SE 5 de JDK usando <literal>Project -&gt; "
+"Properties -&gt; Java Compiler</literal>."
+
+#. Tag: para
+#: Gettingstarted.xml:76
+#, no-c-format
+msgid ""
+"Alternatively, you can deploy the project from outside Eclipse by typing "
+"<literal>seam explode</literal>."
+msgstr "Alternativamente, você pode implementar o projeto a partir do Eclipse do lado de fora digitando <literal>seam explode</literal>."
+
+#. Tag: para
+#: Gettingstarted.xml:79
+#, no-c-format
+msgid ""
+"Go to <literal>http://localhost:8080/helloworld</literal> to see a welcome "
+"page. This is a facelets page, <literal>view/home.xhtml</literal>, using the "
+"template <literal>view/layout/template.xhtml</literal>. You can edit this "
+"page, or the template, in eclipse, and see the results "
+"<emphasis>immediately</emphasis>, by clicking refresh in your browser."
+msgstr "Verifique em <literal>http://localhost:8080/helloworld</literal> para checar a página de entrada. Esta é uma página facelets, <literal>view/home.xhtml</literal>, usando o modelo <literal>view/layout/template.xhtml</literal>. Você pode editar esta página, ou modelo no eclipse e verificar <emphasis>imediatamente os resultados</emphasis> clicando atualizar no seu navegador."
+
+#. Tag: para
+#: Gettingstarted.xml:82
+#, no-c-format
+msgid ""
+"Don&#39;t get scared by the XML configuration documents that were generated "
+"into the project directory. They are mostly standard Java EE stuff, the "
+"stuff you need to create once and then never look at again, and they are 90% "
+"the same between all Seam projects. (They are so easy to write that even "
+"seam-gen can do it.)"
+msgstr "Não se assuste com os documentos de configuração XML que são gerados no diretório do projeto. Eles são mais parecidos com padrão de material Java EE (o material que você precisa criar e nunca mais vê-lo novamente) e são 90% similares a todos os projetos Seam. (Eles são muitos fáceis de gravar que mesmo o seam-gen pode gravá-los.) "
+
+#. Tag: para
+#: Gettingstarted.xml:85
+#, no-c-format
+msgid ""
+"The generated project includes three database and persistence "
+"configurations. The <literal>jboss-beans.xml</literal>, <literal>persistence-"
+"test.xml</literal> and <literal>import-test.sql</literal> files are used "
+"when running the TestNG unit tests against HSQLDB. The database schema and "
+"the test data in <literal>import-test.sql</literal> is always exported to "
+"the database before running tests. The <literal>myproject-dev-ds.xml</"
+"literal>, <literal>persistence-dev.xml</literal>and <literal>import-dev.sql</"
+"literal> files are for use when deploying the application to your "
+"development database. The schema might be exported automatically at "
+"deployment, depending upon whether you told seam-gen that you are working "
+"with an existing database. The <literal>myproject-prod-ds.xml</literal>, "
+"<literal>persistence-prod.xml</literal>and <literal>import-prod.sql</"
+"literal> files are for use when deploying the application to your production "
+"database. The schema is not exported automatically at deployment."
+msgstr ""
+"O projeto gerado inclui três banco de dados e configurações de persitência. O <literal>jboss-beans.xml</literal>, <literal>persistence-"
+"test.xml</literal> e arquivos <literal>import-test.sql</literal> são usados uma vez que rodamos testes de unidades de acordo com HSQLDB. O esquema do banco de dados e dados de teste em <literal>import-test.sql</literal> são sempre exportados ao banco de dados antes de rodar os testes. Os arquivos <literal>myproject-dev-ds.xml</"
+"literal>, <literal>persistence-dev.xml</literal> e <literal>import-dev.sql</"
+"literal> são usados quando implementando o aplicativo ao seu banco de dados implementados. O esquema pode ser exportado automaticamente na implementação dependendo se você passou a informação ao seam-gen que você está trabalhando num banco de dados existente. Os arquivos <literal>myproject-prod-ds.xml</literal>, "
+"<literal>persistence-prod.xml</literal>and <literal>import-prod.sql</"
+"literal> são usados quando implementando o aplicativo para seu banco de dados de produção. O esquema não será exportado automaticamente na implementação."
+
+#. Tag: title
+#: Gettingstarted.xml:91
+#, no-c-format
+msgid "Creating a new action"
+msgstr "Criando uma nova action"
+
+#. Tag: para
+#: Gettingstarted.xml:92
+#, no-c-format
+msgid ""
+"If you&#39;re used to traditional action-style web frameworks, you&#39;re "
+"probably wondering how you can create a simple webpage with a stateless "
+"action method in Java. If you type:"
+msgstr "Caso você queira usar os frameworks da web do estilo action tradicional, você irá provavelmente se perguntar como é possível se criar uma simples página da internet com o método action sem estado em Java. Você poderá digitar:"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:95
+#, no-c-format
+msgid "seam new-action"
+msgstr "nova-action seam"
+
+#. Tag: para
+#: Gettingstarted.xml:96
+#, no-c-format
+msgid ""
+"Seam will prompt for some information, and generate a new facelets page and "
+"Seam component for your project."
+msgstr "O Seam avisa algumas informações, gera novas páginas facelets e componente Seam para seu projeto."
+
+#. Tag: programlisting
+#: Gettingstarted.xml:99
+#, no-c-format
+msgid ""
+"C:\\Projects\\jboss-seam&gt;seam new-action ping\n"
+"Buildfile: C:\\Projects\\jboss-seam\\seam-gen\\build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"action-input:\n"
+"    [input] Enter the Seam component name\n"
+"ping\n"
+"    [input] Enter the local interface name [Ping]\n"
+"\n"
+"    [input] Enter the bean class name [PingBean]\n"
+"\n"
+"    [input] Enter the action method name [ping]\n"
+"\n"
+"    [input] Enter the page name [ping]\n"
+"\n"
+"\n"
+"setup-filters:\n"
+"\n"
+"new-action:\n"
+"     [echo] Creating a new stateless session bean component with an action "
+"method\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\\test\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\\test\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\view\n"
+"     [echo] Type &#39;seam restart&#39; and go to \n"
+"     http://localhost:8080/helloworld/ping.seam\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 13 seconds\n"
+"C:\\Projects\\jboss-seam&gt;"
+msgstr ""
+"C:\\Projects\\jboss-seam&gt;seam new-action ping\n"
+"Buildfile: C:\\Projects\\jboss-seam\\seam-gen\\build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"action-input:\n"
+"    [input] Enter the Seam component name\n"
+"ping\n"
+"    [input] Enter the local interface name [Ping]\n"
+"\n"
+"    [input] Enter the bean class name [PingBean]\n"
+"\n"
+"    [input] Enter the action method name [ping]\n"
+"\n"
+"    [input] Enter the page name [ping]\n"
+"\n"
+"\n"
+"setup-filters:\n"
+"\n"
+"new-action:\n"
+"     [echo] Creating a new stateless session bean component with an action "
+"method\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\\test\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\\test\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\view\n"
+"     [echo] Type &#39;seam restart&#39; and go to \n"
+"     http://localhost:8080/helloworld/ping.seam\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 13 seconds\n"
+"C:\\Projects\\jboss-seam&gt;"
+
+#. Tag: para
+#: Gettingstarted.xml:100
+#, no-c-format
+msgid ""
+"Because we&#39;ve added a new Seam component, we need to restart the "
+"exploded directory deployment. You can do this by typing <literal>seam "
+"restart</literal>, or by running the <literal>restart</literal> target in "
+"the generated project <literal>build.xml</literal> file from inside Eclipse. "
+"Another way to force a restart is to edit the file <literal>resources/META-"
+"INF/application.xml</literal> in Eclipse. <emphasis>Note that you do not "
+"need to restart JBoss each time you change the application.</emphasis>"
+msgstr ""
+"Uma vez que adicionamos um novo componente Seam, precisamos restaurar a implementação do diretório explorado. Você pode realizar isto digitando <literal>restaurar seam</literal>, ou rodando o alvo <literal>restaurar</literal> no arquivo <literal>build.xml</literal> de projeto gerado de dentro do Eclipse. Outra forma para forçar a restauração é editar o arquivo <literal>resources/META-"
+"INF/application.xml</literal> em Eclipse. <emphasis>Perceba que você não precisa restaurar o JBoss a cada instante que você modificar um aplicativo.</emphasis>"
+
+#. Tag: para
+#: Gettingstarted.xml:103
+#, no-c-format
+msgid ""
+"Now go to <literal>http://localhost:8080/helloworld/ping.seam</literal> and "
+"click the button. You can see the code behind this action by looking in the "
+"project <literal>src</literal> directory. Put a breakpoint in the "
+"<literal>ping()</literal> method, and click the button again."
+msgstr "Agora vá para <literal>http://localhost:8080/helloworld/ping.seam</literal> e clique o botão. Você poderá ver o código detrás desta action observando no diretório <literal>src</literal> do projeto. Coloque o ponto de interrupção no método <literal>ping()</literal> e clique no botão novamente."
+
+#. Tag: para
+#: Gettingstarted.xml:106
+#, no-c-format
+msgid ""
+"Finally, locate the <literal>PingTest.xml</literal> file in the test package "
+"and run the integration tests using the TestNG plugin for Eclipse. "
+"Alternatively, run the tests using <literal>seam test</literal> or the "
+"<literal>test</literal> target of the generated build."
+msgstr "Finalmente, localize o arquivo no pacote de teste e rode os testes de integração usando o plug-in TestNG para Eclipse. Alternativamente, rode os testes usando o <literal>teste seam</literal> ou alvo do <literal>teste</literal> da construção gerada."
+
+#. Tag: title
+#: Gettingstarted.xml:112
+#, no-c-format
+msgid "Creating a form with an action"
+msgstr "Criando um formulário com action"
+
+#. Tag: para
+#: Gettingstarted.xml:113
+#, no-c-format
+msgid "The next step is to create a form. Type:"
+msgstr "O próximo passo é criar um formulário. Digite:"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:116
+#, no-c-format
+msgid "seam new-form"
+msgstr "novo-formulário seam"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:117
+#, no-c-format
+msgid ""
+"C:\\Projects\\jboss-seam&gt;seam new-form\n"
+"Buildfile: C:\\Projects\\jboss-seam\\seam-gen\\build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"action-input:\n"
+"    [input] Enter the Seam component name\n"
+"hello\n"
+"    [input] Enter the local interface name [Hello]\n"
+"\n"
+"    [input] Enter the bean class name [HelloBean]\n"
+"\n"
+"    [input] Enter the action method name [hello]\n"
+"\n"
+"    [input] Enter the page name [hello]\n"
+"\n"
+"\n"
+"setup-filters:\n"
+"\n"
+"new-form:\n"
+"     [echo] Creating a new stateful session bean component with an action "
+"method\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\\test\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\view\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\\test\n"
+"     [echo] Type &#39;seam restart&#39; and go to http://localhost:8080/"
+"hello/hello.seam\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 5 seconds\n"
+"C:\\Projects\\jboss-seam&gt;"
+msgstr ""
+"C:\\Projects\\jboss-seam&gt;seam new-form\n"
+"Buildfile: C:\\Projects\\jboss-seam\\seam-gen\\build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"action-input:\n"
+"    [input] Enter the Seam component name\n"
+"hello\n"
+"    [input] Enter the local interface name [Hello]\n"
+"\n"
+"    [input] Enter the bean class name [HelloBean]\n"
+"\n"
+"    [input] Enter the action method name [hello]\n"
+"\n"
+"    [input] Enter the page name [hello]\n"
+"\n"
+"\n"
+"setup-filters:\n"
+"\n"
+"new-form:\n"
+"     [echo] Creating a new stateful session bean component with an action "
+"method\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\\test\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\view\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\\test\n"
+"     [echo] Type &#39;seam restart&#39; and go to http://localhost:8080/"
+"hello/hello.seam\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 5 seconds\n"
+"C:\\Projects\\jboss-seam&gt;"
+
+#. Tag: para
+#: Gettingstarted.xml:118
+#, no-c-format
+msgid ""
+"Restart the application again, and go to <literal>http://localhost:8080/"
+"helloworld/hello.seam</literal>. Then take a look at the generated code. Run "
+"the test. Try adding some new fields to the form and Seam component "
+"(remember to restart the deploment each time you change the Java code)."
+msgstr ""
+"Restaure o aplicativo novamente e vá ao <literal>http://localhost:8080/"
+"helloworld/hello.seam</literal>. Então verifique o código gerado e rode o teste. Tente adicionar novos campos para o formulário e componente Seam (lembre-se de restaurar a implementação cada instante que você mudar o código Java)."
+
+#. Tag: title
+#: Gettingstarted.xml:124
+#, no-c-format
+msgid "Generating an application from an existing database"
+msgstr "Geração de um aplicativo a partir de um banco de dados existente"
+
+#. Tag: para
+#: Gettingstarted.xml:125
+#, no-c-format
+msgid ""
+"Manually create some tables in your database. (If you need to switch to a "
+"different database, just run <literal>seam setup</literal> again.) Now type:"
+msgstr "Crie manualmente algumas tabelas no seu banco de dados. (caso precise alterar para um banco de dados diferente, apenas rode o <literal>seam setup</literal> novamente.) Agora digite:"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:128
+#, no-c-format
+msgid "seam generate-entities"
+msgstr "entidades geradas de seam"
+
+#. Tag: para
+#: Gettingstarted.xml:129
+#, no-c-format
+msgid ""
+"Restart the deployment, and go to <literal>http://localhost:8080/helloworld</"
+"literal>. You can browse the database, edit existing objects, and create new "
+"objects. If you look at the generated code, you&#39;ll probably be amazed "
+"how simple it is! Seam was designed so that data access code is easy to "
+"write by hand, even for people who don&#39;t want to cheat by using seam-gen."
+msgstr ""
+"Restaure a implementação e vá para <literal>http://localhost:8080/helloworld</"
+"literal>. Você pode navegar no banco de daods, editar existentes objetos e criar novos objetos. Caso queira ver o código gerado, você irá surpreender-se o quanto é fazê-lo. O Seam foi designado para que o código de acesso de dados seja fácil de gravado manualmente, mesmo para pessoas que não queiram cometer erros ao utilizar o seam-gen."
+
+#. Tag: title
+#: Gettingstarted.xml:135
+#, no-c-format
+msgid "Deploying the application as an EAR"
+msgstr "Implementando o aplicativo como um EAR"
+
+#. Tag: para
+#: Gettingstarted.xml:136
+#, no-c-format
+msgid ""
+"Finally, we want to be able to deploy the application using standard Java EE "
+"5 packaging. First, we need to remove the exploded directory by running "
+"<literal>seam unexplode</literal>. To deploy the EAR, we can type "
+"<literal>seam deploy</literal> at the command prompt, or run the "
+"<literal>deploy</literal> target of the generated project build script. You "
+"can undeploy using <literal>seam undeploy</literal> or the "
+"<literal>undeploy</literal> target."
+msgstr ""
+"Finalmente querenos estar aptos a implementar o aplicativo usando o empacotamento Java EE "
+"5 padrão. Primeiro, precisamos remover o diretório explorado rodando o <literal>seam unexplode</literal>. Para implementar o EAR, podemos digitar <literal>seam deploy</literal> no aviso do comando ou rodar o objetivo de <literal>implementação</literal> do script construído do projeto gerado. Você pode realizar a desimplementação usando o <literal>seam undeploy</literal> ou o objetivo <literal>undeploy</literal>."
+
+#. Tag: para
+#: Gettingstarted.xml:139
+#, no-c-format
+msgid ""
+"By default, the application will be deployed with the <emphasis>dev profile</"
+"emphasis>. The EAR will include the <literal>persistence-dev.xml</literal> "
+"and <literal>import-dev.sql</literal> files, and the <literal>myproject-dev-"
+"ds.xml</literal> file will be deployed. You can change the profile, and use "
+"the <emphasis>prod profile</emphasis>, by typing"
+msgstr ""
+"Pelo padrão, o aplicativo será implementado com o <emphasis>perfil dev</emphasis>. O EAR irá incluir a <literal>persistence-dev.xml</literal> e arquivos <literal>import-dev.sql</literal>, assim o arquivo <literal>myproject-dev-"
+"ds.xml</literal> será implementado. Você pode mudar o perfil e usar o <emphasis>perfil prod</emphasis> digitando:"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:142
+#, no-c-format
+msgid "seam -Dprofile=prod deploy"
+msgstr "seam -Dprofile=prod deploy"
+
+#. Tag: para
+#: Gettingstarted.xml:143
+#, no-c-format
+msgid ""
+"You can even define new deployment profiles for your application. Just add "
+"appropriately named files to your project&mdash;for example, "
+"<literal>persistence-staging.xml</literal>, <literal>import-staging.sql</"
+"literal> and <literal>myproject-staging-ds.xml</literal>&mdash;and select "
+"the name of the profile using <literal>-Dprofile=staging</literal>."
+msgstr ""
+"Você pode definir novos arquivos de implementação para seu aplicativo. Apenas adicione os arquivos nomeados apropriadamente ao seu projeto&mdash;por exemplo, <literal>persistence-staging.xml</literal>, <literal>import-staging.sql</"
+"literal> and <literal>myproject-staging-ds.xml</literal>&mdash; selecionando o nome do perfil usando <literal>-Dprofile=staging</literal>."
+
+#. Tag: title
+#: Gettingstarted.xml:149
+#, no-c-format
+msgid "Seam and incremental hot deployment"
+msgstr "Seam e a implementação quente implementada"
+
+#. Tag: para
+#: Gettingstarted.xml:150
+#, no-c-format
+msgid ""
+"When you deploy your Seam application as an exploded directory, you&#39;ll "
+"get some support for incremental hot deployment at development time. You "
+"need to enable debug mode in both Seam and Facelets, by adding this line to "
+"<literal>components.xml</literal>:"
+msgstr "Quando você implementar o seu aplicativo Seam como o diretório explorado, você irá receber suporte para a implementação quente incrementada no período do desenvolvimento. Você precisrá ativar o mode de depuração em ambos Seam e Facelets, adicionando esta linha aos <literal>components.xml</literal>:"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:153
+#, no-c-format
+msgid "&lt;core:init debug=\"true\"/&gt;"
+msgstr "&lt;core:init debug=\"true\"/&gt;"
+
+#. Tag: para
+#: Gettingstarted.xml:154
+#, no-c-format
+msgid ""
+"Now, the following files may be redeployed without requiring a full restart "
+"of the web application:"
+msgstr "Os arquivos seguintes serão re-implementados sem solicitar uma restauração completa do aplicativo da web:"
+
+#. Tag: para
+#: Gettingstarted.xml:159
+#, no-c-format
+msgid "any facelets page"
+msgstr "qualquer página facelets"
+
+#. Tag: para
+#: Gettingstarted.xml:164
+#, no-c-format
+msgid "any <literal>pages.xml</literal> file"
+msgstr "qualquer arquivo <literal>pages.xml</literal>"
+
+#. Tag: para
+#: Gettingstarted.xml:169
+#, no-c-format
+msgid ""
+"But if we want to change any Java code, we still need to do a full restart "
+"of the application. (In JBoss this may be accomplished by touching the "
+"toplevel deployment descriptor: <literal>application.xml</literal> for an "
+"EAR deployment, or <literal>web.xml</literal> for a WAR deployment.)"
+msgstr "Mas se quisermos instalar qulquer código Java, precisamos realizar uma restauração completa do aplicativo. (No JBoss isto poderá ser efetuado tocando o nível top do descritor de implementação: <literal>application.xml</literal> para uma implementação EAR ou <literal>web.xml</literal> para uma implementação WAR."
+
+#. Tag: para
+#: Gettingstarted.xml:172
+#, no-c-format
+msgid ""
+"But if you really want a fast edit/compile/test cycle, Seam supports "
+"incremental redeployment of JavaBean components. To make use of this "
+"functionality, you must deploy the JavaBean components into the <literal>WEB-"
+"INF/dev</literal> directory, so that they will be loaded by a special Seam "
+"classloader, instead of by the WAR or EAR classloader."
+msgstr ""
+"No entanto, caso você realmente queira um ciclo rápido editar/compilar/testar, o Seam suporta a re-implementação incrementada dos componentes JavaBean. Para utilizar esta funcionalidade, você deverá implementar os componentes JavaBean num diretório <literal>WEB-"
+"INF/dev</literal> para que os mesmos sejam carregados por uma classe de carregamento especial do Seam, ao invés do WAR ou da classe carregadora EAR."
+
+#. Tag: para
+#: Gettingstarted.xml:175
+#, no-c-format
+msgid "You need to be aware of the following limitations:"
+msgstr "Você precisa estar atento às seguintes limitações:"
+
+#. Tag: para
+#: Gettingstarted.xml:180
+#, no-c-format
+msgid ""
+"the components must be JavaBean components, they cannot be EJB3 beans (we "
+"are working on fixing this limitation)"
+msgstr "os componentes precisam ser componentes JavaBean, eles não podem ser Beans EJB3 (nós estamos trabalhando para arrumar esta limitação) "
+
+#. Tag: para
+#: Gettingstarted.xml:185
+#, no-c-format
+msgid "entities can never be hot-deloyed"
+msgstr "entidades nunca poderão ser quente-implementadas"
+
+#. Tag: para
+#: Gettingstarted.xml:190
+#, no-c-format
+msgid ""
+"components deployed via <literal>components.xml</literal> may not be hot-"
+"deployed"
+msgstr "os componentes implementados por meio de <literal>components.xml</literal> talvez não sejam quente-implementados"
+
+#. Tag: para
+#: Gettingstarted.xml:195
+#, no-c-format
+msgid ""
+"the hot-deployable components will not be visible to any classes deployed "
+"outside of <literal>WEB-INF/dev</literal>"
+msgstr "os componentes quente-implementados não serão visíveis a qualquer implementação das classes fora do <literal>WEB-INF/dev</literal>"
+
+#. Tag: para
+#: Gettingstarted.xml:200
+#, no-c-format
+msgid "Seam debug mode must be enabled"
+msgstr "O modo de depuração Seam deve ser implementado"
+
+#. Tag: para
+#: Gettingstarted.xml:205
+#, no-c-format
+msgid ""
+"If you create a WAR project using seam-gen, incremental hot deployment is "
+"available out of the box for classes in the <literal>src/action</literal> "
+"source directory. However, seam-gen does not support incremental hot "
+"deployment for EAR projects."
+msgstr "Caso você crie uma projeto WAR usando seam-gen, a implementação quente incrementada estará disponível fora da caixa para classes no diretório de fonte <literal>src/action</literal>. No entanto, o seam-gen não suporta a implementação quente incrementada para projetos EAR."
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/I18n.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/I18n.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/I18n.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,626 @@
+# translation of I18n.po to Brazilian Portuguese
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Leticia de Lima <ldelima at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: I18n\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2008-03-25 13:46+1000\n"
+"Last-Translator: Leticia de Lima <ldelima at redhat.com>\n"
+"Language-Team: Brazilian Portuguese <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms:  JBEAP420 \n"
+
+#. Tag: title
+#: I18n.xml:6
+#, no-c-format
+msgid "Internationalization and themes"
+msgstr "Internacionalização e temas"
+
+#. Tag: para
+#: I18n.xml:7
+#, no-c-format
+msgid ""
+"Seam makes it easy to build internationalized applications by providing "
+"several built-in components for handling multi-language UI messages."
+msgstr "O Seam facilita os aplicativos internacionalizados construídos, fornecendo diversos componentes internos para manuseamento de mensagens UI de multi-idiomas."
+
+#. Tag: title
+#: I18n.xml:11
+#, no-c-format
+msgid "Locales"
+msgstr "Locales"
+
+#. Tag: para
+#: I18n.xml:12
+#, no-c-format
+msgid ""
+"Each user login session has an associated instance of <literal>java.util."
+"Locale</literal> (available to the application as a session-scoped component "
+"named <literal>locale</literal>). Under normal circumstances, you won&#39;t "
+"need to do any special configuration to set the locale. Seam just delegates "
+"to JSF to determine the active locale:"
+msgstr ""
+"Cada sessão de log-in possui uma instância associada de <literal>java.util."
+"Locale</literal> (disponível ao aplicativo como nomeado componente de escopo session <literal>locale</literal>). Sob condições normais, você não irá precisar realizar qualquer configuração especial para configurar o locale. O Seam apenas autoriza o JSF a determinar o locale ativo:"
+
+#. Tag: para
+#: I18n.xml:17
+#, no-c-format
+msgid ""
+"If there is a locale associated with the HTTP request (the browser locale), "
+"and that locale is in the list of supported locales from <literal>faces-"
+"config.xml</literal>, use that locale for the rest of the session."
+msgstr ""
+"Caso haja um locale associado com a solicitação HTTP (o navegador locale) e um determinado locale que estiver na lista dos locales suportados por <literal>faces-"
+"config.xml</literal>, use este mesmo locale para o resto da sessão. "
+
+#. Tag: para
+#: I18n.xml:20
+#, no-c-format
+msgid ""
+"Otherwise, if a default locale was specified in the <literal>faces-config."
+"xml</literal>, use that locale for the rest of the session."
+msgstr ""
+"Do contrário, caso o padrão locale tenha sido especificado em <literal>faces-config."
+"xml</literal>, use o mesmo locale para o resto da sessão. "
+
+#. Tag: para
+#: I18n.xml:23
+#, no-c-format
+msgid "Otherwise, use the default locale of the server."
+msgstr "Ou então, use o padrão locale do servidor."
+
+#. Tag: para
+#: I18n.xml:26
+#, no-c-format
+msgid ""
+"It is <emphasis>possible</emphasis> to set the locale manually via the Seam "
+"configuration properties <literal>org.jboss.seam.core.localeSelector."
+"language</literal>, <literal>org.jboss.seam.core.localeSelector.country</"
+"literal> and <literal>org.jboss.seam.core.localeSelector.variant</literal>, "
+"but we can&#39;t think of any good reason to ever do this."
+msgstr ""
+"É <emphasis>possível</emphasis> configurar o locale manualmente por meio das propriedades de configuração Seam <literal>org.jboss.seam.core.localeSelector."
+"language</literal>, <literal>org.jboss.seam.core.localeSelector.country</"
+"literal> e <literal>org.jboss.seam.core.localeSelector.variant</literal>, mas não há motivos para se fazer isto."
+
+#. Tag: para
+#: I18n.xml:29
+#, no-c-format
+msgid ""
+"It is, however, useful to allow the user to set the locale manually via the "
+"application user interface. Seam provides built-in functionality for "
+"overriding the locale determined by the algorithm above. All you have to do "
+"is add the following fragment to a form in your JSP or Facelets page:"
+msgstr "É útil permitir que o usuário configure o locale manualmente por meio da interface do usuário do aplicativo. O Seam fornece a funcionalidade interna para substituir o determinado locale pelo algoritmo acima. Você deve apenas adicionar o seguinte fragmento a um formulário no seu JSP ou página Facelets:"
+
+#. Tag: programlisting
+#: I18n.xml:32
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{localeSelector.language}\"&gt;\n"
+"    &lt;f:selectItem itemLabel=\"English\" itemValue=\"en\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Deutsch\" itemValue=\"de\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Francais\" itemValue=\"fr\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{localeSelector.select}\" value=\"#{messages"
+"[&#39;ChangeLanguage&#39;]}\"/&gt;"
+msgstr ""
+"&lt;h:selectOneMenu value=\"#{localeSelector.language}\"&gt;\n"
+"    &lt;f:selectItem itemLabel=\"English\" itemValue=\"en\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Deutsch\" itemValue=\"de\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Francais\" itemValue=\"fr\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{localeSelector.select}\" value=\"#{messages"
+"[&#39;ChangeLanguage&#39;]}\"/&gt;"
+
+#. Tag: para
+#: I18n.xml:33
+#, no-c-format
+msgid ""
+"Or, if you want a list of all supported locales from <literal>faces-config."
+"xml</literal>, just use:"
+msgstr ""
+"Caso você queira a lista de todos os locales suportados em <literal>faces-config."
+"xml</literal>, apenas use:"
+
+#. Tag: programlisting
+#: I18n.xml:36
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{localeSelector.localeString}\"&gt;\n"
+"    &lt;f:selectItems value=\"#{localeSelector.supportedLocales}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{localeSelector.select}\" value=\"#{messages"
+"[&#39;ChangeLanguage&#39;]}\"/&gt;"
+msgstr ""
+"&lt;h:selectOneMenu value=\"#{localeSelector.localeString}\"&gt;\n"
+"    &lt;f:selectItems value=\"#{localeSelector.supportedLocales}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{localeSelector.select}\" value=\"#{messages"
+"[&#39;ChangeLanguage&#39;]}\"/&gt;"
+
+#. Tag: para
+#: I18n.xml:37
+#, no-c-format
+msgid ""
+"When this use selects an item from the drop-down, and clicks the button, the "
+"Seam and JSF locales will be overridden for the rest of the session."
+msgstr "Quando este procedimento seleciona um ítem a partir do menu suspenso e clica um botão, o Seam e locales JSF serão substituídos pelo resto da sessão."
+
+#. Tag: title
+#: I18n.xml:43
+#, no-c-format
+msgid "Labels"
+msgstr "Rótulos"
+
+#. Tag: para
+#: I18n.xml:44
+#, no-c-format
+msgid ""
+"JSF supports internationalization of user interface labels and descriptive "
+"text via the use of <literal>&lt;f:loadBundle /&gt;</literal>. You can use "
+"this approach in Seam applications. Alternatively, you can take advantage of "
+"the Seam <literal>messages</literal> component to display templated labels "
+"with embedded EL expressions."
+msgstr "O JSF suporta a internacionalização dos rótulos de interface do usuário e texto descritivo por meio do uso do <literal>&lt;f:loadBundle /&gt;</literal>. Você pode usar esta abordagem nos aplicativos Seam. Alternativamente, você pode tirar vantagem do componente de <literal>menssages</literal> Seam para exibir rótulos modelados com as expressões EL incorporadas."
+
+#. Tag: title
+#: I18n.xml:48
+#, no-c-format
+msgid "Defining labels"
+msgstr "Definindo rótulos "
+
+#. Tag: para
+#: I18n.xml:49
+#, no-c-format
+msgid ""
+"Each login session has an associated instance of <literal>java.util."
+"ResourceBundle</literal> (available to the application as a session-scoped "
+"component named <literal>org.jboss.seam.core.resourceBundle</literal>). "
+"You&#39;ll need to make your internationalized labels available via this "
+"special resource bundle. By default, the resource bundle used by Seam is "
+"named <literal>messages</literal> and so you&#39;ll need to define your "
+"labels in files named <literal>messages.properties</literal>, "
+"<literal>messages_en.properties</literal>, <literal>messages_en_AU."
+"properties</literal>, etc. These files usually belong in the <literal>WEB-"
+"INF/classes</literal> directory."
+msgstr ""
+"Cada sessão de logon possui uma instância associada do <literal>java.util."
+"ResourceBundle</literal> (disponível ao aplicativo como um nomeado componente escopo session <literal>org.jboss.seam.core.resourceBundle</literal>). Você precisará fazer disponível seus rótulos internacionalizados por meio deste recurso especial acoplado. Por padrão, o usado recurso acoplado é nomeado <literal>messages</literal> e você definirá seus rótulos em arquivos nomeados <literal>messages.properties</literal>, <literal>messages_en.properties</literal>, <literal>messages_en_AU."
+"properties</literal>, etc. Estes arquivos normalmente pertencem ao diretório <literal>WEB-"
+"INF/classes</literal>."
+
+#. Tag: para
+#: I18n.xml:52
+#, no-c-format
+msgid "So, in <literal>messages_en.properties</literal>:"
+msgstr "Desta forma, em <literal>messages_en.properties</literal>:"
+
+#. Tag: programlisting
+#: I18n.xml:55
+#, no-c-format
+msgid "Hello=Hello"
+msgstr "Hello=Hello"
+
+#. Tag: para
+#: I18n.xml:56
+#, no-c-format
+msgid "And in <literal>messages_en_AU.properties</literal>:"
+msgstr "Adicione em <literal>messages_en_AU.properties</literal>:"
+
+#. Tag: programlisting
+#: I18n.xml:59
+#, no-c-format
+msgid "Hello=G&#39;day"
+msgstr "Hello=G&#39;day"
+
+#. Tag: para
+#: I18n.xml:60
+#, no-c-format
+msgid ""
+"You can select a different name for the resource bundle by setting the Seam "
+"configuration property named <literal>org.jboss.seam.core.resourceBundle."
+"bundleNames</literal>. You can even specify a list of resource bundle names "
+"to be searched (depth first) for messages."
+msgstr ""
+"Você pode selecionar um nome diferente para o recurso acoplado selecionando a nomeada propriedade de configuração Seam <literal>org.jboss.seam.core.resourceBundle."
+"bundleNames</literal>. Você pode ainda especificar uma lista de recursos de nomes acoplados a serem pesquisados (profundamente) por mensagens."
+
+#. Tag: programlisting
+#: I18n.xml:63
+#, no-c-format
+msgid ""
+"&lt;core:resource-bundle&gt;\n"
+"    &lt;core:bundle-names&gt;\n"
+"        &lt;value&gt;mycompany_messages&lt;/value&gt;\n"
+"        &lt;value&gt;standard_messages&lt;/value&gt;       \n"
+"    &lt;/core:bundle-names&gt;\n"
+"&lt;/core:resource-bundle&gt;"
+msgstr ""
+"&lt;core:resource-bundle&gt;\n"
+"    &lt;core:bundle-names&gt;\n"
+"        &lt;value&gt;mycompany_messages&lt;/value&gt;\n"
+"        &lt;value&gt;standard_messages&lt;/value&gt;       \n"
+"    &lt;/core:bundle-names&gt;\n"
+"&lt;/core:resource-bundle&gt;"
+
+#. Tag: para
+#: I18n.xml:64
+#, no-c-format
+msgid ""
+"If you want to define a message just for a particular page, you can specify "
+"it in a resource bundle with the same name as the JSF view id, with the "
+"leading <literal>/</literal> and trailing file extension removed. So we "
+"could put our message in <literal>welcome/hello_en.properties</literal> if "
+"we only needed to display the message on <literal>/welcome/hello.jsp</"
+"literal>."
+msgstr ""
+"Caso você queira definir uma mensagem apenas para uma página particular, você pode especificá-la num recurso acoplado com o mesmo nome como a identificação de visualização JSF, com o arquivo de extensão removido <literal>/</literal> da esquerda à direita. Desta forma, colocamos nossa mensagem em <literal>welcome/hello_en.properties</literal> caso precisemos apenas exibir a mensagem em <literal>/welcome/hello.jsp</"
+"literal>. "
+
+#. Tag: para
+#: I18n.xml:67
+#, no-c-format
+msgid "You can even specify an explicit bundle name in <literal>pages.xml</literal>:"
+msgstr "Você pode especificar um nome acoplado explícito em <literal>pages.xml</literal>:"
+
+#. Tag: programlisting
+#: I18n.xml:70
+#, no-c-format
+msgid "&lt;page view-id=\"/welcome/hello.jsp\" bundle=\"HelloMessages\"/&gt;"
+msgstr "&lt;page view-id=\"/welcome/hello.jsp\" bundle=\"HelloMessages\"/&gt;"
+
+#. Tag: para
+#: I18n.xml:71
+#, no-c-format
+msgid ""
+"Then we could use messages defined in <literal>HelloMessages.properties</"
+"literal> on <literal>/welcome/hello.jsp</literal>."
+msgstr ""
+"Então podemos usar mensagens definidas em <literal>HelloMessages.properties</"
+"literal> no <literal>/welcome/hello.jsp</literal>."
+
+#. Tag: title
+#: I18n.xml:77
+#, no-c-format
+msgid "Displaying labels"
+msgstr "Exibição de rótulos"
+
+#. Tag: para
+#: I18n.xml:78
+#, no-c-format
+msgid ""
+"If you define your labels using the Seam resource bundle, you&#39;ll be able "
+"to use them without having to type <literal>&lt;f:loadBundle ... /&gt;</"
+"literal> on every page. Instead, you can simply type:"
+msgstr ""
+"Caso você defina seus rótulos usando o recurso Seam acoplado, você precisará estar apto a usá-los sem necessitar digitar <literal>&lt;f:loadBundle ... /&gt;</"
+"literal> em cada página. Do contrário, você pode apenas digitar: "
+
+#. Tag: programlisting
+#: I18n.xml:81
+#, no-c-format
+msgid "&lt;h:outputText value=\"#{messages[&#39;Hello&#39;]}\"/&gt;"
+msgstr "&lt;h:outputText value=\"#{messages[&#39;Hello&#39;]}\"/&gt;"
+
+#. Tag: para
+#: I18n.xml:82
+#, no-c-format
+msgid "<para>or:</para>"
+msgstr "<para>ou:</para>"
+
+#. Tag: programlisting
+#: I18n.xml:85
+#, no-c-format
+msgid "&lt;h:outputText value=\"#{messages.Hello}\"/&gt;"
+msgstr "&lt;h:outputText value=\"#{messages.Hello}\"/&gt;"
+
+#. Tag: para
+#: I18n.xml:86
+#, no-c-format
+msgid "Even better, the messages themselves may contain EL expressions:"
+msgstr "As mensagens podem ainda conter por si mesmas as expressões EL:"
+
+#. Tag: programlisting
+#: I18n.xml:89
+#, no-c-format
+msgid "Hello=Hello, #{user.firstName} #{user.lastName}"
+msgstr "Hello=Hello, #{user.firstName} #{user.lastName}"
+
+#. Tag: programlisting
+#: I18n.xml:90
+#, no-c-format
+msgid "Hello=G&#39;day, #{user.firstName}"
+msgstr "Hello=G&#39;day, #{user.firstName}"
+
+#. Tag: para
+#: I18n.xml:91
+#, no-c-format
+msgid "You can even use the messages in your code:"
+msgstr "Você pode ainda usar as mensagens em seu código:"
+
+#. Tag: programlisting
+#: I18n.xml:94
+#, no-c-format
+msgid "@In private Map&lt;String, String&gt; messages;"
+msgstr "@In private Map&lt;String, String&gt; messages;"
+
+#. Tag: programlisting
+#: I18n.xml:95
+#, no-c-format
+msgid "@In(\"#{messages[&#39;Hello&#39;]}\") private String helloMessage;"
+msgstr "@In(\"#{messages[&#39;Hello&#39;]}\") private String helloMessage;"
+
+#. Tag: title
+#: I18n.xml:99
+#, no-c-format
+msgid "Faces messages"
+msgstr "Mensagens Faces"
+
+#. Tag: para
+#: I18n.xml:100
+#, no-c-format
+msgid ""
+"The <literal>facesMessages</literal> component is a super-convenient way to "
+"display success or failure messages to the user. The functionality we just "
+"described also works for faces messages:"
+msgstr "O componente <literal>facesMessages</literal> é uma maneira bastante conveniente para exibir ao usuário o sucesso ou falha das mensagens. A funcionalidade que acabamos de descrever também funciona para as mensagens faces:"
+
+#. Tag: programlisting
+#: I18n.xml:103
+#, no-c-format
+msgid ""
+"@Name(\"hello\")\n"
+"@Stateless\n"
+"public class HelloBean implements Hello {\n"
+"    @In FacesMessages facesMessages;\n"
+"    \n"
+"    public String sayIt() {\n"
+"        facesMessages.addFromResourceBundle(\"Hello\");\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"hello\")\n"
+"@Stateless\n"
+"public class HelloBean implements Hello {\n"
+"    @In FacesMessages facesMessages;\n"
+"    \n"
+"    public String sayIt() {\n"
+"        facesMessages.addFromResourceBundle(\"Hello\");\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: I18n.xml:104
+#, no-c-format
+msgid ""
+"This will display <literal>Hello, Gavin King</literal> or <literal>G&#39;"
+"day, Gavin</literal>, depending upon the user&#39;s locale."
+msgstr ""
+"Isto exibirá <literal>Hello, Gavin King</literal> ou <literal>G&#39;"
+"day, Gavin</literal>, de acordo com o locale do usuário."
+
+#. Tag: title
+#: I18n.xml:112
+#, no-c-format
+msgid "Timezones"
+msgstr "Fuso horários"
+
+#. Tag: para
+#: I18n.xml:113
+#, no-c-format
+msgid ""
+"There is also a session-scoped instance of <literal>java.util.Timezone</"
+"literal>, named <literal>org.jboss.seam.core.timezone</literal>, and a Seam "
+"component for changing the timezone named <literal>org.jboss.seam.core."
+"timezoneSelector</literal>. By default, the timezone is the default timezone "
+"of the server. Unfortunately, the JSF specification says that all dates and "
+"times should be assumed to be UTC, and displayed as UTC, unless a timezone "
+"is explicitly specified using <literal>&lt;f:convertDateTime&gt;</literal>. "
+"This is an extremely inconvenient default behavior."
+msgstr ""
+"Há também a instância de escopo session do <literal>java.util.Timezone</"
+"literal>, nomeado <literal>org.jboss.seam.core.timezone</literal>, e um componente Seam para mudança do nomeado fuso horário <literal>org.jboss.seam.core."
+"timezoneSelector</literal>. Por padrão, o fuso horário é o fuso horário padrão do servidor. Infelizmente, a especificação JSF diz que todas as datas e horários devem ser assumidas para ser UTC e exibidas como UTC, a não ser que um fuso horário é explicitamente especificado usando <literal>&lt;f:convertDateTime&gt;</literal>."
+
+#. Tag: para
+#: I18n.xml:116
+#, no-c-format
+msgid ""
+"Seam overrides this behavior, and defaults all dates and times to the Seam "
+"timezone. In addition, Seam provides the <literal>&lt;s:convertDateTime&gt;</"
+"literal> tag which always performs conversions in the Seam timezone."
+msgstr ""
+"O Seam substitui este comportamento e padroniza todas as datas e horários para o fuso horário Seam. Além disso, o Seam fornece o caracter <literal>&lt;s:convertDateTime&gt;</"
+"literal> que sempre efetua conversões no fuso horário Seam."
+
+#. Tag: title
+#: I18n.xml:122
+#, no-c-format
+msgid "Themes"
+msgstr "Temas"
+
+#. Tag: para
+#: I18n.xml:123
+#, no-c-format
+msgid ""
+"Seam applications are also very easily skinnable. The theme API is very "
+"similar to the localization API, but of course these two concerns are "
+"orthogonal, and some applications support both localization and themes."
+msgstr "O tema API é bastante similar à localização API, mas é caro que estas duas preocupações são ortogonais e alguns aplicativos suportam ambos localização e temas."
+
+#. Tag: para
+#: I18n.xml:126
+#, no-c-format
+msgid "First, configure the set of supported themes:"
+msgstr "Primeiramente, configure o conjunto de temas suportados:"
+
+#. Tag: programlisting
+#: I18n.xml:129
+#, no-c-format
+msgid ""
+"&lt;theme:theme-selector cookie-enabled=\"true\"&gt;\n"
+"    &lt;theme:available-themes&gt;\n"
+"        &lt;value&gt;default&lt;/value&gt;\n"
+"        &lt;value&gt;accessible&lt;/value&gt;\n"
+"        &lt;value&gt;printable&lt;/value&gt;\n"
+"    &lt;/theme:available-themes&gt;\n"
+"&lt;/theme:theme-selector&gt;"
+msgstr ""
+"&lt;theme:theme-selector cookie-enabled=\"true\"&gt;\n"
+"    &lt;theme:available-themes&gt;\n"
+"        &lt;value&gt;default&lt;/value&gt;\n"
+"        &lt;value&gt;accessible&lt;/value&gt;\n"
+"        &lt;value&gt;printable&lt;/value&gt;\n"
+"    &lt;/theme:available-themes&gt;\n"
+"&lt;/theme:theme-selector&gt;"
+
+#. Tag: para
+#: I18n.xml:130
+#, no-c-format
+msgid "Note that the first theme listed is the default theme."
+msgstr "Perceba que o primeiro tema listado é o tema padrão."
+
+#. Tag: para
+#: I18n.xml:133
+#, no-c-format
+msgid ""
+"Themes are defined in a properties file with the same name as the theme. For "
+"example, the <literal>default</literal> theme is defined as a set of entries "
+"in <literal>default.properties</literal>. For example, <literal>default."
+"properties</literal> might define:"
+msgstr ""
+"Os temas são definidos em um arquivo de propriedades do mesmo nome como um tema. Por exemplo, o tema <literal>padrão</literal> é definido como um conjunto de entradas em <literal>default.properties</literal>. Por exemplo, o <literal>default."
+"properties</literal> talvez defina:"
+
+#. Tag: programlisting
+#: I18n.xml:136
+#, no-c-format
+msgid ""
+"css ../screen.css\n"
+"template template.xhtml"
+msgstr ""
+"css ../screen.css\n"
+"template template.xhtml"
+
+#. Tag: para
+#: I18n.xml:137
+#, no-c-format
+msgid ""
+"Usually the entries in a theme resource bundle will be paths to CSS styles "
+"or images and names of facelets templates (unlike localization resource "
+"bundles which are usually text)."
+msgstr "Normalmente as entradas em um tema de recurso acoplado será o caminho para os estilos CSS ou imagens e nomes dos modelos dos facelets (diferente da localização dos recursos acoplados que são normalmente texto)."
+
+#. Tag: para
+#: I18n.xml:140
+#, no-c-format
+msgid ""
+"Now we can use these entries in our JSP or facelets pages. For example, to "
+"theme the stylesheet in a facelets page:"
+msgstr "Agora podemos usar estas entradas em nosso JSP ou páginas facelets. Por exemplo, para tematizar as folhas de estilo na página facelets:"
+
+#. Tag: programlisting
+#: I18n.xml:143
+#, no-c-format
+msgid "&lt;link href=\"#{theme.css}\" rel=\"stylesheet\" type=\"text/css\" /&gt;"
+msgstr "&lt;link href=\"#{theme.css}\" rel=\"stylesheet\" type=\"text/css\" /&gt;"
+
+#. Tag: para
+#: I18n.xml:144
+#, no-c-format
+msgid ""
+"Most powerfully, facelets lets us theme the template used by a <literal>&lt;"
+"ui:composition&gt;</literal>:"
+msgstr ""
+"Os facelets nos permitem tematizar o modelo usado por uma <literal>&lt;"
+"ui:composition&gt;</literal>:"
+
+#. Tag: programlisting
+#: I18n.xml:147
+#, no-c-format
+msgid ""
+"&lt;ui:composition xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"    xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"    xmlns:h=\"http://java.sun.com/jsf/html\"\n"
+"    xmlns:f=\"http://java.sun.com/jsf/core\"\n"
+"    template=\"#{theme.template}\"&gt;"
+msgstr ""
+"&lt;ui:composition xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"    xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"    xmlns:h=\"http://java.sun.com/jsf/html\"\n"
+"    xmlns:f=\"http://java.sun.com/jsf/core\"\n"
+"    template=\"#{theme.template}\"&gt;"
+
+#. Tag: para
+#: I18n.xml:148
+#, no-c-format
+msgid ""
+"Just like the locale selector, there is a built-in theme selector to allow "
+"the user to freely switch themes:"
+msgstr "Assim como o seletor locale, há um seletor de tema interno para permitir que o usuário mude de temas livremente:"
+
+#. Tag: programlisting
+#: I18n.xml:151
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{themeSelector.theme}\"&gt;\n"
+"    &lt;f:selectItems value=\"#{themeSelector.themes}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{themeSelector.select}\" value=\"Select Theme"
+"\"/&gt;"
+msgstr ""
+"&lt;h:selectOneMenu value=\"#{themeSelector.theme}\"&gt;\n"
+"    &lt;f:selectItems value=\"#{themeSelector.themes}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{themeSelector.select}\" value=\"Select Theme"
+"\"/&gt;"
+
+#. Tag: title
+#: I18n.xml:155
+#, no-c-format
+msgid "Persisting locale and theme preferences via cookies"
+msgstr "Locale de persistência e preferências de temas através de cookies"
+
+#. Tag: para
+#: I18n.xml:156
+#, no-c-format
+msgid ""
+"The locale selector, theme selector and timezone selector all support "
+"persistence of locale and theme preference to a cookie. Simply set the "
+"<literal>cookie-enabled</literal> configuration property:"
+msgstr "O seletor locale, o seletor de tema e o seletor do fuso horário suportam a persistência de um locale e preferência do tema por meio de uma cookie. Apenas configure a propriedade de configuração <literal>cookie-enabled</literal>:"
+
+#. Tag: programlisting
+#: I18n.xml:159
+#, no-c-format
+msgid ""
+"&lt;theme:theme-selector cookie-enabled=\"true\"&gt;\n"
+"    &lt;theme:available-themes&gt;\n"
+"        &lt;value&gt;default&lt;/value&gt;\n"
+"        &lt;value&gt;accessible&lt;/value&gt;\n"
+"        &lt;value&gt;printable&lt;/value&gt;\n"
+"    &lt;/theme:available-themes&gt;\n"
+"&lt;/theme:theme-selector&gt;\n"
+"\n"
+"&lt;core:locale-selector cookie-enabled=\"true\"/&gt;"
+msgstr ""
+"&lt;theme:theme-selector cookie-enabled=\"true\"&gt;\n"
+"    &lt;theme:available-themes&gt;\n"
+"        &lt;value&gt;default&lt;/value&gt;\n"
+"        &lt;value&gt;accessible&lt;/value&gt;\n"
+"        &lt;value&gt;printable&lt;/value&gt;\n"
+"    &lt;/theme:available-themes&gt;\n"
+"&lt;/theme:theme-selector&gt;\n"
+"\n"
+"&lt;core:locale-selector cookie-enabled=\"true\"/&gt;"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Itext.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Itext.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Itext.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1622 @@
+# translation of Itext.po to Brazilian Portuguese
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Leticia de Lima <ldelima at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Itext\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2008-03-27 09:21+1000\n"
+"Last-Translator: Leticia de Lima <ldelima at redhat.com>\n"
+"Language-Team: Brazilian Portuguese <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms:  JBEAP420 \n"
+
+#. Tag: title
+#: Itext.xml:6
+#, no-c-format
+msgid "iText PDF generation"
+msgstr "Geração do iText PDF"
+
+#. Tag: para
+#: Itext.xml:7
+#, no-c-format
+msgid ""
+"Seam now includes an component set for generating documents using iText. The "
+"primary focus of Seam&#39;s iText document support is for the generation of "
+"PDF doucuments, but Seam also offers basic support for RTF document "
+"generation."
+msgstr "O Seam inclui agora um conjunto de componente para a geração de documentos usando iText. O foco principal do suporte do documento iText de Seam é a geração dos documentos PDF, mas o Seam também oferece suporte básico para a geração de documento RTF."
+
+#. Tag: title
+#: Itext.xml:11
+#, no-c-format
+msgid "Using PDF Support"
+msgstr "Usando o suporte PDF"
+
+#. Tag: para
+#: Itext.xml:12
+#, no-c-format
+msgid ""
+"iText support is provided by <literal>jboss-seam-pdf.jar</literal>. This JAR "
+"contains the iText JSF controls, which are used to construct views that can "
+"render to PDF, and the DocumentStore component, which serves the rendered "
+"documents to the user. To include PDF support in your application, included "
+"<literal>jboss-seam-pdf.jar</literal> in your <literal>WEB-INF/lib</literal> "
+"directory along with the iText JAR file. There is no further configuration "
+"needed to use Seam&#39;s iText support."
+msgstr "O suporte iText é fornecido pelo <literal>jboss-seam-pdf.jar</literal>. Esta jarra contém os controles JSF iText, dos quais são usados para construir visualizações. Estas podem processar o PDF e o componente DocumentStore, do qual serve os documentos processados ao usuário. Para incluir o suporte PDF no seu aplicativo, inclua o <literal>jboss-seam-pdf.jar</literal> no seu diretório <literal>WEB-INF/lib</literal> juntamente com o arquivo iText JAR. Não há necessidade de futuras configurações para o uso do suporte iText de Seam."
+
+#. Tag: para
+#: Itext.xml:15
+#, no-c-format
+msgid ""
+"The Seam iText module requires the use of Facelets as the view technology. "
+"Future versions of the library may also support the use of JSP. "
+"Additionally, it requires the use of the seam-ui package."
+msgstr "O módulo Seam iText solicita o uso de Facelets como a visualização tecnológica. Versões futuras da biblioteca também suportam o uso do JSP. Somado a isto, ele solicita o uso do pacote seam-ui."
+
+#. Tag: para
+#: Itext.xml:18
+#, no-c-format
+msgid ""
+"The <literal>examples/itext</literal> project contains an example of the PDF "
+"support in action. It demonstrates proper deployment packaging, and it "
+"contains a number examples that demonstrate the key PDF generation features "
+"current supported."
+msgstr "O projeto de <literal>examples/itext</literal> contém um exemplo de suporte PDF em ação. Isto demonstra o empacotamento de implantação apropriado e contém um número de amostras que demonstram os recursos chaves de geração PDF atualmente suportados."
+
+#. Tag: title
+#: Itext.xml:24
+#, no-c-format
+msgid "Creating a document"
+msgstr "Criando um documento"
+
+#. Tag: para
+#: Itext.xml:25
+#, no-c-format
+msgid ""
+"Documents are generated by facelets documents using tags in the "
+"<literal>http://jboss.com/products/seam/pdf</literal> namespace. Documents "
+"should always have the <literal>document</literal> tag at the root of the "
+"document. The <literal>document</literal> tag prepares Seam to generate a "
+"document into the DocumentStore and renders an HTML redirect to that stored "
+"content. The following is a a small PDF document consisting only a single "
+"line of text:"
+msgstr "Os documentos são gerados por documentos facelets que usam caracteres no espaço para nomes <literal>http://jboss.com/products/seam/pdf</literal>. Os documentos devem sempre possuir o caracter <literal>document</literal> na raiz do documento. O caracter <literal>document</literal> prepara o Seam para gerar um documento dentro do DocumentStore e processar uma redireção HTML para o conteúdo armazenado. Segue a seguir um documento pequeno PDF que consiste apenas numa única linha de texto:"
+
+#. Tag: programlisting
+#: Itext.xml:28
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf"
+"\"&gt;                                                      \n"
+"   The document goes "
+"here.                                                                                             \n"
+"&lt;/p:document&gt;"
+msgstr ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf"
+"\"&gt;                                                      \n"
+"   The document goes "
+"here.                                                                                             \n"
+"&lt;/p:document&gt;"
+
+#. Tag: title
+#: Itext.xml:30
+#, no-c-format
+msgid "p:document"
+msgstr "p:document"
+
+#. Tag: para
+#: Itext.xml:31
+#, no-c-format
+msgid "The <literal>p:document</literal> tag supports the following attributes:"
+msgstr "O caracter <literal>p:document</literal> suporta os seguintes atributos:"
+
+#. Tag: literal
+#: Itext.xml:36
+#, no-c-format
+msgid "type"
+msgstr "tipo"
+
+#. Tag: para
+#: Itext.xml:38
+#, no-c-format
+msgid ""
+"The type of the document to be produced. Valid values are <literal>PDF</"
+"literal>, <literal>RTF</literal> and <literal>HTML</literal> modes. Seam "
+"defaults to PDF generation, and many of the features only work correctly "
+"when generating PDF documents."
+msgstr ""
+"O tipo de documento a ser produzido. Os valores válidos são <literal>PDF</"
+"literal>, <literal>RTF</literal> e módulos <literal>HTML</literal>. O Seam padroniza a geração PDF e muitos dos recursos que apenas funcionam corretamente quando gerando documentos PDF."
+
+#. Tag: literal
+#: Itext.xml:44
+#, no-c-format
+msgid "pageSize"
+msgstr "Tamanho da Página"
+
+#. Tag: para
+#: Itext.xml:46
+#, no-c-format
+msgid ""
+"The size of the page to be generate. The most commonly used values would be "
+"<literal>LETTER</literal> and <literal>A4</literal>. A full list of "
+"supported pages sizes can be found in <literal>com.lowagie.text.PageSize</"
+"literal> class. Alternatively, pageSize can provide the width and height of "
+"the page directly. The value \"612 792\", for example, is equizalent to the "
+"LETTER page size."
+msgstr ""
+"O tamanho da página a ser gerado. Os valores mais comuns a serem gerados seriam <literal>LETRA</literal> e <literal>A4</literal>. A lista completa dos tamanhos das páginas suportadas podem ser encontradas na classe <literal>com.lowagie.text.PageSize</"
+"literal>. Alternativamente, o tamanho da página pode fornecer a largura e a altura da página diretamente. Por exemplo, o valor \"612 792\" é equivalente ao tamanho da página LETRA."
+
+#. Tag: literal
+#: Itext.xml:52
+#, no-c-format
+msgid "orientation"
+msgstr "orientação"
+
+#. Tag: para
+#: Itext.xml:54
+#, no-c-format
+msgid ""
+"The orientation of the page. Valid values are <literal>portrait</literal> "
+"and <literal>landscape</literal>. In landscape mode, the height and width "
+"page size values are reversed."
+msgstr "A orientação da página. Os valores válidos são <literal>retrato</literal> e <literal>paisagem</literal>. No modo paisagem, a largura e a altura dos valores do tamanho da página são revertidos. "
+
+#. Tag: literal
+#: Itext.xml:60
+#, no-c-format
+msgid "margins"
+msgstr "margens"
+
+#. Tag: para
+#: Itext.xml:62
+#, no-c-format
+msgid "The left, right, top and bottom margin values."
+msgstr "Os valores das margens da esquerda, da direita, superiores e inferiores da página."
+
+#. Tag: literal
+#: Itext.xml:68
+#, no-c-format
+msgid "marginMirroring"
+msgstr "Espelhamento de margem"
+
+#. Tag: para
+#: Itext.xml:70
+#, no-c-format
+msgid "Indicates that margin settings should be reversed an alternating pages."
+msgstr "Indica que a configuração da margem deve ser revertida em páginas alternadas."
+
+#. Tag: para
+#: Itext.xml:76
+#, no-c-format
+msgid ""
+"Document metadata is also set as attributes of the document tag. The "
+"following metadata fields are supported:"
+msgstr "O metadado do documento é também configurado com atributo do caracter do documeto. Os seguintes campos metadados estão suportados: "
+
+#. Tag: literal
+#: Itext.xml:81
+#, no-c-format
+msgid "title"
+msgstr "título"
+
+#. Tag: para
+#: Itext.xml:83 Itext.xml:90 Itext.xml:97 Itext.xml:104 Itext.xml:111
+#: Itext.xml:135 Itext.xml:142 Itext.xml:149 Itext.xml:156 Itext.xml:179
+#: Itext.xml:186 Itext.xml:193 Itext.xml:328 Itext.xml:335 Itext.xml:358
+#: Itext.xml:365 Itext.xml:372 Itext.xml:387 Itext.xml:394 Itext.xml:686
+#: Itext.xml:693 Itext.xml:700 Itext.xml:707 Itext.xml:730 Itext.xml:737
+#: Itext.xml:744 Itext.xml:751 Itext.xml:799 Itext.xml:806 Itext.xml:813
+#: Itext.xml:820 Itext.xml:827 Itext.xml:834 Itext.xml:841 Itext.xml:848
+#: Itext.xml:855 Itext.xml:862 Itext.xml:869 Itext.xml:876 Itext.xml:883
+#: Itext.xml:890 Itext.xml:897 Itext.xml:904 Itext.xml:911
+#, no-c-format
+msgid "&#x200B;"
+msgstr "&#x200B;"
+
+#. Tag: literal
+#: Itext.xml:88
+#, no-c-format
+msgid "subject"
+msgstr "assunto"
+
+#. Tag: literal
+#: Itext.xml:95
+#, no-c-format
+msgid "keywords"
+msgstr "palavras chaves"
+
+#. Tag: literal
+#: Itext.xml:102
+#, no-c-format
+msgid "author"
+msgstr "autor"
+
+#. Tag: literal
+#: Itext.xml:109
+#, no-c-format
+msgid "creator"
+msgstr "criador"
+
+#. Tag: title
+#: Itext.xml:121
+#, no-c-format
+msgid "Basic Text Elements"
+msgstr "Elementos Básicos do Texto"
+
+#. Tag: para
+#: Itext.xml:122
+#, no-c-format
+msgid ""
+"Useful documents will need to contain more than just text; however, the "
+"standard UI components are geared towards HTML generation and are not useful "
+"for generating PDF content. Instead, Seam provides a special UI components "
+"for generating suitable PDF content. Tags like <literal>&lt;p:image&gt;</"
+"literal> and <literal>&lt;p:paragraph&gt;</literal> are the basic "
+"foundations of simple documents. Tags like <literal>&lt;p:font&gt;</literal> "
+"provide style information to all the content surrounging them."
+msgstr "Os documentos úteis precisarão conter mais do que um simples texto. No entanto, os componentes UI padrões são instalados em direção à geração HTML e não são úteis para geração do conteúdo PDF. Em vez disto, o Seam fornece componentes com o especial UI para geração do conteúdo PDF apropriado. Os caracteres parecidos com <literal>&lt;p:image&gt;</literal> e <literal>&lt;p:paragraph&gt;</literal> são fundações básicas de documentos simples. Os caracteres parecidos com <literal>&lt;p:font&gt;</literal> fornecem um estilo de informação para todos os conteúdos ao redor deles."
+
+#. Tag: programlisting
+#: Itext.xml:125
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"&gt; \n"
+"    &lt;p:image alignment=\"right\" wrap=\"true\" resource=\"/logo.jpg\" /"
+"&gt;\n"
+"    &lt;p:font size=\"24\"&gt;\n"
+"        &lt;p:paragraph spacingAfter=\"50\"&gt;My First Document&lt;/p:"
+"paragraph&gt;\n"
+"    &lt;/p:font&gt;\n"
+"\n"
+"    &lt;p:paragraph alignment=\"justify\"&gt;\n"
+"        This is a simple document.  It isn&#39;t very fancy.\n"
+"    &lt;/p:paragraph&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"&gt; \n"
+"    &lt;p:image alignment=\"right\" wrap=\"true\" resource=\"/logo.jpg\" /"
+"&gt;\n"
+"    &lt;p:font size=\"24\"&gt;\n"
+"        &lt;p:paragraph spacingAfter=\"50\"&gt;My First Document&lt;/p:"
+"paragraph&gt;\n"
+"    &lt;/p:font&gt;\n"
+"\n"
+"    &lt;p:paragraph alignment=\"justify\"&gt;\n"
+"        This is a simple document.  It isn&#39;t very fancy.\n"
+"    &lt;/p:paragraph&gt;\n"
+"&lt;/p:document&gt;"
+
+#. Tag: title
+#: Itext.xml:127
+#, no-c-format
+msgid "p:paragraph"
+msgstr "p:paragraph"
+
+#. Tag: para
+#: Itext.xml:128
+#, no-c-format
+msgid ""
+"Most uses of text should be sectioned into paragraphs so that text fragments "
+"can be flowed, formatted and styled in logical groups."
+msgstr "A maioria das utilidades do texto devem ser selecionadas em parágrafos, para que os fragmentos do texto possam estar cheios, formatados e modelados em grupos lógicos. "
+
+#. Tag: literal
+#: Itext.xml:133
+#, no-c-format
+msgid "firstLineIndent"
+msgstr "Recuo da primeira linha"
+
+#. Tag: literal
+#: Itext.xml:140 Itext.xml:832
+#, no-c-format
+msgid "extraParagraphSpace"
+msgstr "Espaço do parágrafo extra"
+
+#. Tag: literal
+#: Itext.xml:147 Itext.xml:804
+#, no-c-format
+msgid "leading"
+msgstr "à esquerda"
+
+#. Tag: literal
+#: Itext.xml:154 Itext.xml:811
+#, no-c-format
+msgid "multipliedLeading"
+msgstr "à esquerda multiplicada"
+
+#. Tag: literal
+#: Itext.xml:161 Itext.xml:340 Itext.xml:712
+#, no-c-format
+msgid "spacingBefore"
+msgstr "espaçamento anterior"
+
+#. Tag: para
+#: Itext.xml:163 Itext.xml:342 Itext.xml:714
+#, no-c-format
+msgid "The blank space to be inserted before the element."
+msgstr "O espaço em branco a ser inserido antes do elemento."
+
+#. Tag: literal
+#: Itext.xml:169 Itext.xml:348 Itext.xml:720
+#, no-c-format
+msgid "spacingAfter"
+msgstr "Espaçamento Posterior"
+
+#. Tag: para
+#: Itext.xml:171 Itext.xml:350 Itext.xml:722
+#, no-c-format
+msgid "The blank space to be inserted after the element."
+msgstr "O espaço em branco a ser inserido após o elemento."
+
+#. Tag: literal
+#: Itext.xml:177 Itext.xml:326 Itext.xml:595
+#, no-c-format
+msgid "indentationLeft"
+msgstr "distanciamento da margem à esquerda"
+
+#. Tag: literal
+#: Itext.xml:184 Itext.xml:333 Itext.xml:603
+#, no-c-format
+msgid "indentationRight"
+msgstr "distanciamento da margem à direita"
+
+#. Tag: literal
+#: Itext.xml:191 Itext.xml:749
+#, no-c-format
+msgid "keepTogether"
+msgstr "Mantenha junto"
+
+#. Tag: title
+#: Itext.xml:201
+#, no-c-format
+msgid "p:text"
+msgstr "p:text"
+
+#. Tag: para
+#: Itext.xml:202
+#, no-c-format
+msgid ""
+"The <literal>text</literal> tag allows text fragments to be produced from "
+"application data using normal JSF converter mechanisms. It is very similar "
+"to the <literal>outputText</literal> tag used when rendering HTML documents. "
+"Here is an example:"
+msgstr "O caracter <literal>texto</literal> permite que os fragmentos do texto sejam produzidos a partir dos dados de um aplicativo usando mecanismos de convertor JSF normal. Isto é muito parecido com o caracter <literal>outputText</literal> usado quando os documentos HTML estão sendo processados. Segue abaixo o exemplo:"
+
+#. Tag: programlisting
+#: Itext.xml:205
+#, no-c-format
+msgid ""
+"&lt;p:paragraph&gt;\n"
+"    The item costs &lt;p:text value=\"#{product.price}\"&gt;\n"
+"        &lt;f:convertNumber type=\"currency\" currencySymbol=\"$\"/&gt;\n"
+"    &lt;/p:text&gt;\n"
+"&lt;/p:paragraph&gt;"
+msgstr ""
+"&lt;p:paragraph&gt;\n"
+"    The item costs &lt;p:text value=\"#{product.price}\"&gt;\n"
+"        &lt;f:convertNumber type=\"currency\" currencySymbol=\"$\"/&gt;\n"
+"    &lt;/p:text&gt;\n"
+"&lt;/p:paragraph&gt;"
+
+#. Tag: literal
+#: Itext.xml:208
+#, no-c-format
+msgid "value"
+msgstr "valor "
+
+#. Tag: para
+#: Itext.xml:210
+#, no-c-format
+msgid "The value to be displayed. This will typically be a value binding expression."
+msgstr "O valor a ser exibido. Este será tipicamente uma expressão vinculada de valor."
+
+#. Tag: title
+#: Itext.xml:219
+#, no-c-format
+msgid "p:font"
+msgstr "p:font"
+
+#. Tag: para
+#: Itext.xml:220
+#, no-c-format
+msgid "Font declarations have no direct"
+msgstr "As declarações de fonte não possuem direção"
+
+#. Tag: literal
+#: Itext.xml:225
+#, no-c-format
+msgid "familyName"
+msgstr "nome de família"
+
+#. Tag: para
+#: Itext.xml:227
+#, no-c-format
+msgid ""
+"The font family. One of: <literal>COURIER</literal>, <literal>HELVETICA</"
+"literal>, <literal>TIMES-ROMAN</literal>, <literal>SYMBOL</literal> or "
+"<literal>ZAPFDINGBATS</literal>."
+msgstr ""
+"A família da fonte. Uma das: <literal>COURIER</literal>, <literal>HELVETICA</"
+"literal>, <literal>TIMES-ROMAN</literal>, <literal>SYMBOL</literal> ou "
+"<literal>ZAPFDINGBATS</literal>."
+
+#. Tag: literal
+#: Itext.xml:233
+#, no-c-format
+msgid "size"
+msgstr "tamanho"
+
+#. Tag: para
+#: Itext.xml:235
+#, no-c-format
+msgid "The point size of the font."
+msgstr "O tamanho da fonte."
+
+#. Tag: literal
+#: Itext.xml:241 Itext.xml:530
+#, no-c-format
+msgid "style"
+msgstr "estilo"
+
+#. Tag: para
+#: Itext.xml:243
+#, no-c-format
+msgid ""
+"The font styles. Any combination of : <literal>NORMAL</literal>, "
+"<literal>BOLD</literal>, <literal>ITALIC</literal>, <literal>OBLIQUE</"
+"literal>, <literal>UNDERLINE</literal>, <literal>LINE-THROUGH</literal>"
+msgstr ""
+"Os estilos da fonte. Qualquer combinação de: <literal>NORMAL</literal>, "
+"<literal>BOLD</literal>, <literal>ITALIC</literal>, <literal>OBLIQUE</"
+"literal>, <literal>UNDERLINE</literal>, <literal>LINE-THROUGH</literal>."
+
+#. Tag: title
+#: Itext.xml:252
+#, no-c-format
+msgid "p:newPage"
+msgstr "p:newPage"
+
+#. Tag: para
+#: Itext.xml:253
+#, no-c-format
+msgid "<literal>p:newPage</literal> inserts a page break."
+msgstr "A <literal>p:newPage</literal> insere uma quebra de página."
+
+#. Tag: title
+#: Itext.xml:259
+#, no-c-format
+msgid "p:image"
+msgstr "p:image"
+
+#. Tag: para
+#: Itext.xml:260
+#, no-c-format
+msgid ""
+"<literal>p:image</literal> inserts an image into the document. Images can be "
+"be loaded from the classpath or from the web application context using the "
+"<literal>resource</literal> attribute."
+msgstr "A <literal>p:image</literal> insere uma imagem dentro de um documento. As imagens podem ser carregadas a partir de uma classpath ou a partir de um contexto de aplicativo da web usando o atributo <literal>resource</literal>."
+
+#. Tag: programlisting
+#: Itext.xml:263
+#, no-c-format
+msgid "&lt;p:image resource=\"/jboss.jpg\" /&gt;"
+msgstr "&lt;p:image resource=\"/jboss.jpg\" /&gt;"
+
+#. Tag: para
+#: Itext.xml:264
+#, no-c-format
+msgid ""
+"Resources can also be dynamically generated by application code. The "
+"<literal>imageData</literal> attribute can specify a value binding "
+"expression whose value is a <literal>java.awt.Image</literal> object."
+msgstr "Os recursos podem também ser dinamicamente gerados por códigos do aplicativo. O atributo <literal>imageData</literal> pode especificar uma expressão de vinculação do valor em que o valor é um objeto <literal>java.awt.Image</literal>."
+
+#. Tag: programlisting
+#: Itext.xml:267
+#, no-c-format
+msgid "&lt;p:image imageData=\"#{images.chart}\" /&gt;"
+msgstr "&lt;p:image imageData=\"#{images.chart}\" /&gt;"
+
+#. Tag: literal
+#: Itext.xml:270
+#, no-c-format
+msgid "resource"
+msgstr "recurso"
+
+#. Tag: para
+#: Itext.xml:272
+#, no-c-format
+msgid ""
+"The location of the image resource to be included. Resources should be "
+"relative to the document root of the web application."
+msgstr "A localização do recurso da imagem a ser incluído. Os recursos devem ser relativos à raiz do documento do aplicativo da web."
+
+#. Tag: literal
+#: Itext.xml:278
+#, no-c-format
+msgid "imageData"
+msgstr "dados da imagem"
+
+#. Tag: para
+#: Itext.xml:280
+#, no-c-format
+msgid "A method expression binding to an application-generated image."
+msgstr "A vinculação da expressão do método para uma imagem do aplicativo gerada."
+
+#. Tag: literal
+#: Itext.xml:286 Itext.xml:909
+#, no-c-format
+msgid "rotation"
+msgstr "rotação"
+
+#. Tag: para
+#: Itext.xml:288
+#, no-c-format
+msgid "The rotation of the image in degrees."
+msgstr "A rotação da imagem em graus."
+
+#. Tag: literal
+#: Itext.xml:294
+#, no-c-format
+msgid "height"
+msgstr "altura"
+
+#. Tag: para
+#: Itext.xml:296
+#, no-c-format
+msgid "The height of the image."
+msgstr "A altura da imagem."
+
+#. Tag: literal
+#: Itext.xml:302
+#, no-c-format
+msgid "width"
+msgstr "largura"
+
+#. Tag: para
+#: Itext.xml:304
+#, no-c-format
+msgid "The width of the image."
+msgstr "A largura da imagem."
+
+#. Tag: literal
+#: Itext.xml:310 Itext.xml:437 Itext.xml:587
+#, no-c-format
+msgid "alignment"
+msgstr "alinhamento"
+
+#. Tag: para
+#: Itext.xml:312
+#, no-c-format
+msgid ""
+"The alignment of the image. (see <xref linkend=\"Seam_Reference_Guide-"
+"Document_Constants-Alignment_Values\"/> for possible values)"
+msgstr ""
+"O alinhamento da imagem. (veja o <xref linkend=\"Seam_Reference_Guide-"
+"Document_Constants-Alignment_Values\"/> para possíveis valores)"
+
+#. Tag: literal
+#: Itext.xml:318
+#, no-c-format
+msgid "<literal>alt</literal>"
+msgstr "<literal>alt</literal>"
+
+#. Tag: para
+#: Itext.xml:320
+#, no-c-format
+msgid "Alternative text representation for the image."
+msgstr "Representação de texto alternativo para imagem."
+
+#. Tag: literal
+#: Itext.xml:356 Itext.xml:668
+#, no-c-format
+msgid "widthPercentage"
+msgstr "porcentagem da largura"
+
+#. Tag: literal
+#: Itext.xml:363
+#, no-c-format
+msgid "initialRotation"
+msgstr "Rotação inicial"
+
+#. Tag: literal
+#: Itext.xml:370
+#, no-c-format
+msgid "<literal>dpi</literal>"
+msgstr "<literal>dpi</literal>"
+
+#. Tag: literal
+#: Itext.xml:377
+#, no-c-format
+msgid "scalePercent"
+msgstr "Porcentagem de escala"
+
+#. Tag: para
+#: Itext.xml:379
+#, no-c-format
+msgid ""
+"The scaling factor (as a percentage) to use for the image. This can be "
+"expressed as a single percentage value or as two percentage values "
+"representing separate x and y scaling percentages."
+msgstr "O fator escala (como uma porcentagem) para o uso de uma imagem. Isto pode ser expressado como um valor de porcentagem única ou como dois valores de porcentagem representando separadamente x e y porcentagens de escalas."
+
+#. Tag: literal
+#: Itext.xml:385
+#, no-c-format
+msgid "wrap"
+msgstr "quebra"
+
+#. Tag: literal
+#: Itext.xml:392
+#, no-c-format
+msgid "underlying"
+msgstr "sublinhado"
+
+#. Tag: title
+#: Itext.xml:402
+#, no-c-format
+msgid "p:anchor"
+msgstr "p:anchor"
+
+#. Tag: para
+#: Itext.xml:403
+#, no-c-format
+msgid ""
+"<literal>p:anchor</literal> defines clickable links from a document. It "
+"supports the following attributes:"
+msgstr "A <literal>p:anchor</literal> define links clicáveis a partir de um documento. Ele suporta os seguintes atributos:"
+
+#. Tag: literal
+#: Itext.xml:408
+#, no-c-format
+msgid "name"
+msgstr "nome"
+
+#. Tag: para
+#: Itext.xml:410
+#, no-c-format
+msgid "The name of an in-document anchor destination."
+msgstr "O nome de um destino âncora em documento."
+
+#. Tag: literal
+#: Itext.xml:416
+#, no-c-format
+msgid "reference"
+msgstr "referência"
+
+#. Tag: para
+#: Itext.xml:418
+#, no-c-format
+msgid ""
+"The destination the link refers to. Links to other points in the document "
+"should begin with a \"#\". For example, \"#link1\" to refer to an anchor "
+"postion with a <literal>name</literal> of <literal>link1</literal>. Links "
+"may also be a full URL to point to a resource outside of the document."
+msgstr "O destino em que o link se refere. Os links de outros pontos no documento devem iniciar com uma \"#\". Por exemplo, o \"#link1\" para referir a posição da âncora com um <literal>nome</literal> do <literal>link1</literal>. Os links podem ser também um URL cheio para apontar a um recurso fora do documento."
+
+#. Tag: title
+#: Itext.xml:429
+#, no-c-format
+msgid "Headers and Footers"
+msgstr "Cabeçalhos e rodapés"
+
+#. Tag: title
+#: Itext.xml:431
+#, no-c-format
+msgid "p:header and p:footer"
+msgstr "p:header and p:footer"
+
+#. Tag: para
+#: Itext.xml:432
+#, no-c-format
+msgid ""
+"The <literal>p:header</literal> and <literal>p:footer</literal> components "
+"provide the ability to place header and footer text on each page of a "
+"generated document, with the exception of the first page. Header and footer "
+"declarations should appear near the top of a document."
+msgstr "Os componentes <literal>p:header</literal> e <literal>p:footer</literal> fornecem a habilidade de colocar o texto cabeçalho e rodapé em cada página de um documento gerado, com exceção da primeira página. As declarações cabeçalho e rodapé devem aparecer perto do topo de um documento."
+
+#. Tag: para
+#: Itext.xml:439
+#, no-c-format
+msgid ""
+"The alignment of the header/footer box section. (see <xref linkend="
+"\"Seam_Reference_Guide-Document_Constants-Alignment_Values\"/> for alignment "
+"values)"
+msgstr ""
+"O alinhamento da sessão caixa do cabeçalho/rodapé. (consulte o <xref linkend="
+"\"Seam_Reference_Guide-Document_Constants-Alignment_Values\"/> para maiores informações a respeito dos valores do alinhamento)"
+
+#. Tag: literal
+#: Itext.xml:445
+#, no-c-format
+msgid "backgroundColor"
+msgstr "cor de fundo"
+
+#. Tag: para
+#: Itext.xml:447
+#, no-c-format
+msgid ""
+"The background color of the header/footer box. (see <xref linkend="
+"\"Seam_Reference_Guide-Document_Constants-Color_Values\"/> for color values)"
+msgstr ""
+"A cor de fundo da caixa do cabeçalho/rodapé. (consulte <xref linkend="
+"\"Seam_Reference_Guide-Document_Constants-Color_Values\"/> para os valores das cores)"
+
+#. Tag: literal
+#: Itext.xml:453
+#, no-c-format
+msgid "borderColor"
+msgstr "Cor da borda"
+
+#. Tag: para
+#: Itext.xml:455
+#, no-c-format
+msgid ""
+"The border color of the header/footer box. Individual border sides can be "
+"set using <literal>borderColorLeft</literal>, <literal>borderColorRight</"
+"literal>, <literal>borderColorTop</literal> and <literal>borderColorBottom</"
+"literal>.(see <xref linkend=\"Seam_Reference_Guide-Document_Constants-"
+"Color_Values\"/> for color values)"
+msgstr ""
+"A cor de borda da caixa do cabeçalho/rodapé. Os lados das bordas individuais podem ser configurados usando <literal>borderColorLeft</literal>, <literal>borderColorRight</"
+"literal>, <literal>borderColorTop</literal> e <literal>borderColorBottom</"
+"literal>. (consulte <xref linkend=\"Seam_Reference_Guide-Document_Constants-"
+"Color_Values\"/> para informações sobre os valores das cores)"
+
+#. Tag: literal
+#: Itext.xml:461
+#, no-c-format
+msgid "borderWidth"
+msgstr "Largura da borda"
+
+#. Tag: para
+#: Itext.xml:463
+#, no-c-format
+msgid ""
+"The width of the border. Inidvidual border sides can be specified using "
+"<literal>borderWidthLeft</literal>, <literal>borderWidthRight</literal>, "
+"<literal>borderWidthTop</literal> and <literal>borderWidthBottom</literal>."
+msgstr ""
+"A largura da borda. Os lados da borda individuais podem ser especificados usando <literal>borderWidthLeft</literal>, <literal>borderWidthRight</literal>, "
+"<literal>borderWidthTop</literal> e <literal>borderWidthBottomp:pageNumber</literal>."
+
+#. Tag: title
+#: Itext.xml:472
+#, no-c-format
+msgid "p:pageNumber"
+msgstr "p:pageNumber"
+
+#. Tag: para
+#: Itext.xml:473
+#, no-c-format
+msgid ""
+"The current page number can be placed inside of a header or footer using the "
+"<literal>p:pageNumber</literal> tag. The page number tag can only be used in "
+"the context of a header or footer and can only be used once."
+msgstr "O número da página atual pode ser colocado dentro de um cabeçalho ou rodapé usando o caracter <literal>p:pageNumber</literal>. O caracter do número da página pode ser usado no contexto de um cabeçalho ou rodapé e pode ser apenas utilizado uma vez."
+
+#. Tag: title
+#: Itext.xml:481
+#, no-c-format
+msgid "Chapters and Sections"
+msgstr "Capítulos e Sessões"
+
+#. Tag: para
+#: Itext.xml:482
+#, no-c-format
+msgid ""
+"If the generated document follows a book/article structure, the <literal>p:"
+"chapter</literal> and <literal>p:section</literal> tags can be used to "
+"provide the necessary structure. Sections can only be used inside of "
+"chapters, but they may be nested arbitrarily deep. Most PDF viewers provide "
+"easy navigation between chapters and sections in a document."
+msgstr ""
+"Caso o documento gerado seguir uma estrutura de livro/artigo, os<literal>p:"
+"chapter</literal> e <literal>p:section</literal> caracteres podem ser usados para fornecer a estrutura necessária. As sessões podem apenas serem usadas dentro dos capítulos, mas elas poderão ser arbitrariamente aninhadas em profundidade. A maioria dos visualizadores PDF fornecem uma navegação fácil entre os capítulos e as sessões de um documento. "
+
+#. Tag: programlisting
+#: Itext.xml:485
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"\n"
+"            title=\"Hello\"&gt;\n"
+"\n"
+"   &lt;p:chapter number=\"1\"&gt;\n"
+"      &lt;p:title&gt;&lt;p:paragraph&gt;Hello&lt;/p:paragraph&gt;&lt;/p:"
+"title&gt;\n"
+"      &lt;p:paragraph&gt;Hello #{user.name}!&lt;/p:paragraph&gt;\n"
+"   &lt;/p:chapter&gt;\n"
+"\n"
+"   &lt;p:chapter number=\"2\"&gt;\n"
+"      &lt;p:title&gt;&lt;p:paragraph&gt;Goodbye&lt;/p:paragraph&gt;&lt;/p:"
+"title&gt;\n"
+"      &lt;p:paragraph&gt;Goodbye #{user.name}.&lt;/p:paragraph&gt;\n"
+"   &lt;/p:chapter&gt;\n"
+"\n"
+"&lt;/p:document&gt;"
+msgstr ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"\n"
+"            title=\"Hello\"&gt;\n"
+"\n"
+"   &lt;p:chapter number=\"1\"&gt;\n"
+"      &lt;p:title&gt;&lt;p:paragraph&gt;Hello&lt;/p:paragraph&gt;&lt;/p:"
+"title&gt;\n"
+"      &lt;p:paragraph&gt;Hello #{user.name}!&lt;/p:paragraph&gt;\n"
+"   &lt;/p:chapter&gt;\n"
+"\n"
+"   &lt;p:chapter number=\"2\"&gt;\n"
+"      &lt;p:title&gt;&lt;p:paragraph&gt;Goodbye&lt;/p:paragraph&gt;&lt;/p:"
+"title&gt;\n"
+"      &lt;p:paragraph&gt;Goodbye #{user.name}.&lt;/p:paragraph&gt;\n"
+"   &lt;/p:chapter&gt;\n"
+"\n"
+"&lt;/p:document&gt;"
+
+#. Tag: title
+#: Itext.xml:487
+#, no-c-format
+msgid "p:chapter and p:section"
+msgstr "p:chapter and p:section"
+
+#. Tag: literal
+#: Itext.xml:490
+#, no-c-format
+msgid "number"
+msgstr "número"
+
+#. Tag: para
+#: Itext.xml:492
+#, no-c-format
+msgid "The chapter number. Every chapter should be assigned a chapter number."
+msgstr "O número do capítulo. Cada capítulo deve ser determinado por um número de capítulo."
+
+#. Tag: literal
+#: Itext.xml:498
+#, no-c-format
+msgid "numberDepth"
+msgstr "Profundidade de numeração"
+
+#. Tag: para
+#: Itext.xml:500
+#, no-c-format
+msgid ""
+"The depth of numbering for section. All sections are numbered relative to "
+"their surrounding chapter/sections. The fourth section of of the first "
+"section of chapter three would be section 3.1.4, if displayed at the default "
+"number depth of three. To omit the chapter number, a number depth of 2 "
+"should be used. In that case, the section number would be displayed as 1.4."
+msgstr "O profundidade de numeração para a seção. Todas as sessões são relativamente numeradas nos seus arredores de capítulo/sessões. A quarta sessão é a primeira sessão do capítulo três que seria sessão 3.1.4, uma vez exibida na profundidade do número padrão três. Para omitir o número do capítulo, a profundidade de número 2 deve ser usada. Neste caso, o número de sessão deveria ser exibido como 1.4."
+
+#. Tag: title
+#: Itext.xml:509
+#, no-c-format
+msgid "p:title"
+msgstr "p:title"
+
+#. Tag: para
+#: Itext.xml:510
+#, no-c-format
+msgid ""
+"Any chapter or section can contain a <literal>p:title</literal>. The title "
+"will be displayed next to the chapter/section number. The body of the title "
+"may contain raw text or may be a <literal>p:paragraph</literal>."
+msgstr "Qualquer capítulo ou sessão pode conter um <literal>p:title</literal>. O títilo será exibido próximo ao número de capítulo/sessão. O corpo do título pode conter um texto cru ou talvez ser um <literal>p:paragraph</literal>."
+
+#. Tag: title
+#: Itext.xml:518
+#, no-c-format
+msgid "Lists"
+msgstr "Listas"
+
+#. Tag: para
+#: Itext.xml:519
+#, no-c-format
+msgid ""
+"List structures can be displayed using the <literal>p:list</literal> and "
+"<literal>p:listItem</literal> tags. Lists may contain arbitrarily-nested "
+"sublists. List items may not be used outside of a list. he following "
+"document uses the <literal>ui:repeat</literal> tag to to display a list of "
+"values retrieved from a Seam component."
+msgstr ""
+"A estruturas das listas podem ser exibidas usando a <literal>p:list</literal> e caracteres "
+"<literal>p:listItem</literal>. As listas poderão conter sub-listas arbitrariamente aninhadas. Os ítens das listas talvez não sejam usados fora da lista. O seguinte documento usa o caracter <literal>ui:repeat</literal> para exibir a lista de valores retornados de um documento Seam."
+
+#. Tag: programlisting
+#: Itext.xml:522
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"\n"
+"            xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"            title=\"Hello\"&gt;\n"
+"   &lt;p:list style=\"numbered\"&gt;\n"
+"      &lt;ui:repeat value=\"#{documents}\" var=\"doc\"&gt;\n"
+"         &lt;p:listItem&gt;#{doc.name}&lt;/p:listItem&gt;\n"
+"      &lt;/ui:repeat&gt;\n"
+"   &lt;/p:list&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"\n"
+"            xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"            title=\"Hello\"&gt;\n"
+"   &lt;p:list style=\"numbered\"&gt;\n"
+"      &lt;ui:repeat value=\"#{documents}\" var=\"doc\"&gt;\n"
+"         &lt;p:listItem&gt;#{doc.name}&lt;/p:listItem&gt;\n"
+"      &lt;/ui:repeat&gt;\n"
+"   &lt;/p:list&gt;\n"
+"&lt;/p:document&gt;"
+
+#. Tag: title
+#: Itext.xml:524
+#, no-c-format
+msgid "p:list"
+msgstr "p:list"
+
+#. Tag: para
+#: Itext.xml:525
+#, no-c-format
+msgid "<literal>p:list</literal> supports the following attributes:"
+msgstr "<literal>p:list</literal> suporta os seguintes atributos:"
+
+#. Tag: para
+#: Itext.xml:532
+#, no-c-format
+msgid ""
+"The ordering/bulleting style of list. One of: <literal>NUMBERED</literal>, "
+"<literal>LETTERED</literal>, <literal>GREEK</literal>, <literal>ROMAN</"
+"literal>, <literal>ZAPFDINGBATS</literal>, <literal>ZAPFDINGBATS_NUMBER</"
+"literal>. If no style is given, the list items are bulleted."
+msgstr ""
+"O estilo do pedido/marcadores da lista. Um dos: <literal>NUMBERED</literal>, "
+"<literal>LETTERED</literal>, <literal>GREEK</literal>, <literal>ROMAN</"
+"literal>, <literal>ZAPFDINGBATS</literal>, <literal>ZAPFDINGBATS_NUMBER</"
+"literal>. Caso o estilo não seja dado, os ítens da lista são marcados."
+
+#. Tag: literal
+#: Itext.xml:538 Itext.xml:611
+#, no-c-format
+msgid "listSymbol"
+msgstr "símbolo de lista"
+
+#. Tag: para
+#: Itext.xml:540
+#, no-c-format
+msgid "For bulleted lists, specifies the bullet symbol."
+msgstr "Para listas marcadas, especifique o símbolo marcador."
+
+#. Tag: literal
+#: Itext.xml:546 Itext.xml:818
+#, no-c-format
+msgid "indent"
+msgstr "distanciamento das margens"
+
+#. Tag: para
+#: Itext.xml:548
+#, no-c-format
+msgid "The indentation level of the list."
+msgstr "O nível de distanciamento das margens de uma lista."
+
+#. Tag: literal
+#: Itext.xml:554
+#, no-c-format
+msgid "lowerCase"
+msgstr "minúsculo"
+
+#. Tag: para
+#: Itext.xml:556
+#, no-c-format
+msgid ""
+"For list styles using letters, indicates whether the letters should be lower "
+"case."
+msgstr "Usado para os estilos de listas usando letras, e indica se é que as letras devem ser minúsculas."
+
+#. Tag: literal
+#: Itext.xml:562
+#, no-c-format
+msgid "charNumber"
+msgstr "número do caracter"
+
+#. Tag: para
+#: Itext.xml:564
+#, no-c-format
+msgid "For ZAPFDINGBATS, indicates the character code of the bullet character."
+msgstr "Usado com os ZAPFDINGBATS, e indica o código de caracter do caracter marcador."
+
+#. Tag: literal
+#: Itext.xml:570
+#, no-c-format
+msgid "numberType"
+msgstr "Tipo do número"
+
+#. Tag: para
+#: Itext.xml:572
+#, no-c-format
+msgid "For ZAPFDINGBATS_NUMBER, indicates the numbering style."
+msgstr "Usando com ZAPFDINGBATS_NUMBER, e indica o estilo de numeração."
+
+#. Tag: title
+#: Itext.xml:581
+#, no-c-format
+msgid "p:listItem"
+msgstr "p:listItem"
+
+#. Tag: para
+#: Itext.xml:582
+#, no-c-format
+msgid "<literal>p:listItem</literal> supports the following attributes:"
+msgstr "A <literal>p:listItem</literal> suporta os seguintes atributos:"
+
+#. Tag: para
+#: Itext.xml:589
+#, no-c-format
+msgid ""
+"The alignment of the list item. (See <xref linkend=\"Seam_Reference_Guide-"
+"Document_Constants-Alignment_Values\"/> for possible values)"
+msgstr ""
+"O alinhamento do ítem da lista. (consulte <xref linkend=\"Seam_Reference_Guide-"
+"Document_Constants-Alignment_Values\"/> para valores possíveis)"
+
+#. Tag: para
+#: Itext.xml:597
+#, no-c-format
+msgid "The left indentation amount."
+msgstr "A quantia de distanciamento das margens do lado esquerdo."
+
+#. Tag: para
+#: Itext.xml:605
+#, no-c-format
+msgid "The right indentation amount."
+msgstr "A quantia de distanciamento das margens do lado direito."
+
+#. Tag: para
+#: Itext.xml:613
+#, no-c-format
+msgid "Overrides the default list symbol for this list item."
+msgstr "Substitui o símbolo de lista padrão para este ítem da lista."
+
+#. Tag: title
+#: Itext.xml:624
+#, no-c-format
+msgid "Tables"
+msgstr "Tabelas"
+
+#. Tag: para
+#: Itext.xml:625
+#, no-c-format
+msgid ""
+"Table structures can be created using the <literal>p:table</literal> and "
+"<literal>p:cell</literal> tags. Unlike many table structures, there is no "
+"explicit row declaration. If a table has 3 columns, then every 3 cells will "
+"automatically form a row. Header and footer rows can be declared, and the "
+"headers and footers will be repeated in the event a table structure spans "
+"multiple pages."
+msgstr ""
+"As estruturas de tabelas podem ser criadas usando a <literal>p:table</literal> e caracteres "
+"<literal>p:cell</literal>. Diferente de muitas estruturas de tabelas, não existe uma declaração de linha explícita. Caso uma tabela possua 3 colunas, cada célula irá formar automaticamente uma linha. O cabeçalho e o rodapé irão repetir-se no evento que uma estrutura de tabela ultrapassa o limites das páginas múltiplas. "
+
+#. Tag: programlisting
+#: Itext.xml:628
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"   \n"
+"            xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"            title=\"Hello\"&gt;   \n"
+"   &lt;p:table columns=\"3\" headerRows=\"1\"&gt;\n"
+"      &lt;p:cell&gt;name&lt;/p:cell&gt;\n"
+"      &lt;p:cell&gt;owner&lt;/p:cell&gt;\n"
+"      &lt;p:cell&gt;size&lt;/p:cell&gt;\n"
+"      &lt;ui:repeat value=\"#{documents}\" var=\"doc\"&gt;\n"
+"         &lt;p:cell&gt;#{doc.name}&lt;/p:cell&gt;\n"
+"         &lt;p:cell&gt;#{doc.user.name}&lt;/p:cell&gt;\n"
+"         &lt;p:cell&gt;#{doc.size}&lt;/p:cell&gt;\n"
+"      &lt;/ui:repeat&gt;\n"
+"   &lt;/p:table&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"   \n"
+"            xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"            title=\"Hello\"&gt;   \n"
+"   &lt;p:table columns=\"3\" headerRows=\"1\"&gt;\n"
+"      &lt;p:cell&gt;name&lt;/p:cell&gt;\n"
+"      &lt;p:cell&gt;owner&lt;/p:cell&gt;\n"
+"      &lt;p:cell&gt;size&lt;/p:cell&gt;\n"
+"      &lt;ui:repeat value=\"#{documents}\" var=\"doc\"&gt;\n"
+"         &lt;p:cell&gt;#{doc.name}&lt;/p:cell&gt;\n"
+"         &lt;p:cell&gt;#{doc.user.name}&lt;/p:cell&gt;\n"
+"         &lt;p:cell&gt;#{doc.size}&lt;/p:cell&gt;\n"
+"      &lt;/ui:repeat&gt;\n"
+"   &lt;/p:table&gt;\n"
+"&lt;/p:document&gt;"
+
+#. Tag: title
+#: Itext.xml:630
+#, no-c-format
+msgid "p:table"
+msgstr "p:table"
+
+#. Tag: para
+#: Itext.xml:631
+#, no-c-format
+msgid "<literal>p:table</literal> supports the following attributes."
+msgstr "A <literal>p:table</literal> suporta os seguintes atributos."
+
+#. Tag: literal
+#: Itext.xml:636
+#, no-c-format
+msgid "columns"
+msgstr "colunas"
+
+#. Tag: para
+#: Itext.xml:638
+#, no-c-format
+msgid "The number of columns (cells) that make up a table row."
+msgstr "O número de colunas (células) que fazem uma linha de tabela."
+
+#. Tag: literal
+#: Itext.xml:644
+#, no-c-format
+msgid "widths"
+msgstr "largura"
+
+#. Tag: para
+#: Itext.xml:646
+#, no-c-format
+msgid ""
+"The relative widths of each column. There should be one value for each "
+"column. For example: widths=\"2 1 1\" would indicate that there are 3 "
+"columns and the first column should be twice the size of the second and "
+"third column."
+msgstr "As larguras relativas de cada coluna. Deverá haver um valor para cada coluna. Por exemplo: widths=\"2 1 1\" indica que há 3 colunas e a peimeira coluna deve ser o dobro do tamanho da segunda e terceira coluna."
+
+#. Tag: literal
+#: Itext.xml:652
+#, no-c-format
+msgid "headerRows"
+msgstr "headerRows"
+
+#. Tag: para
+#: Itext.xml:654
+#, no-c-format
+msgid ""
+"The initial number of rows which are considered to be headers or footer rows "
+"and should be repeated if the table spans multiple pages."
+msgstr "O número incial de linhas que são consideradas linhas de cabeçalho ou rodapé e que deve ser repetida caso a tabela ultrapasse os limites das páginas múltiplas."
+
+#. Tag: literal
+#: Itext.xml:660
+#, no-c-format
+msgid "footerRows"
+msgstr "footerRows"
+
+#. Tag: para
+#: Itext.xml:662
+#, no-c-format
+msgid ""
+"The number of rows that are considered to be footer rows. This value is "
+"subtracted from the <literal>headerRows</literal> value. If document has 2 "
+"rows which make up the header and one row that makes up the footer, "
+"<literal>headerRows</literal> should be set to 3 and <literal>footerRows</"
+"literal> should be set to 1"
+msgstr ""
+"O número de linhas que são consideradas linhas de rodapé. Este valor é deduzido do valor <literal>headerRows</literal>. Caso o documento possua 2 linhas que criam o cabeçalho e uma linha que cria o rodapé, <literal>headerRows</literal> deve ser configurtado para 3 e <literal>footerRows</"
+"literal> deve ser configurado para 1"
+
+#. Tag: para
+#: Itext.xml:670
+#, no-c-format
+msgid "The percentage of the page width that the table spans."
+msgstr "A porcentagem da largura da página que a tabela excede."
+
+#. Tag: literal
+#: Itext.xml:676 Itext.xml:773
+#, no-c-format
+msgid "horizontalAlignment"
+msgstr "horizontalAlignment"
+
+#. Tag: para
+#: Itext.xml:678
+#, no-c-format
+msgid ""
+"The horizontal alignment of the table. (See <xref linkend="
+"\"Seam_Reference_Guide-Document_Constants-Alignment_Values\"/> for possible "
+"values)"
+msgstr ""
+"O alinhamento horizontal da tabela. (Consulte <xref linkend="
+"\"Seam_Reference_Guide-Document_Constants-Alignment_Values\"/> para maiores informações sobre valores possíveis)"
+
+#. Tag: literal
+#: Itext.xml:684
+#, no-c-format
+msgid "skipFirstHeader"
+msgstr "skipFirstHeader"
+
+#. Tag: literal
+#: Itext.xml:691 Itext.xml:881
+#, no-c-format
+msgid "runDirection"
+msgstr "runDirection"
+
+#. Tag: literal
+#: Itext.xml:698
+#, no-c-format
+msgid "lockedWidth"
+msgstr "lockedWidth"
+
+#. Tag: literal
+#: Itext.xml:705
+#, no-c-format
+msgid "splitRows"
+msgstr "splitRows"
+
+#. Tag: literal
+#: Itext.xml:728
+#, no-c-format
+msgid "extendLastRow"
+msgstr "extendLastRow"
+
+#. Tag: literal
+#: Itext.xml:735
+#, no-c-format
+msgid "headersInEvent"
+msgstr "headersInEventsplitLate"
+
+#. Tag: literal
+#: Itext.xml:742
+#, no-c-format
+msgid "splitLate"
+msgstr "splitLate"
+
+#. Tag: title
+#: Itext.xml:759
+#, no-c-format
+msgid "p:cell"
+msgstr "p:cell"
+
+#. Tag: para
+#: Itext.xml:760
+#, no-c-format
+msgid "<literal>p:cell</literal> supports the following attributes."
+msgstr "<literal>p:cell</literal> suporta os seguintes atributos."
+
+#. Tag: literal
+#: Itext.xml:765
+#, no-c-format
+msgid "colspan"
+msgstr "colspan"
+
+#. Tag: para
+#: Itext.xml:767
+#, no-c-format
+msgid ""
+"Cells can span more than one column by declaring a <literal>colspan</"
+"literal> greater than 1. Tables do not have the ability to span across "
+"multiple rows."
+msgstr ""
+"As células podem exceder os limites de mais de uma coluna declarando que um <literal>colspan</"
+"literal> é maior que 1. As tabelas não possuem a habilidade de extender-se através de linhas múltiplas."
+
+#. Tag: para
+#: Itext.xml:775
+#, no-c-format
+msgid ""
+"The horizontal alignment of the cell. (see <xref linkend="
+"\"Seam_Reference_Guide-Document_Constants-Alignment_Values\"/> for possible "
+"values)"
+msgstr ""
+"O alinhamento horizontal da célula. (consulte <xref linkend="
+"\"Seam_Reference_Guide-Document_Constants-Alignment_Values\"/> para maiores informações sobre valores possíveis) "
+
+#. Tag: literal
+#: Itext.xml:781 Itext.xml:825
+#, no-c-format
+msgid "verticalAlignment"
+msgstr "verticalAlignment"
+
+#. Tag: para
+#: Itext.xml:783
+#, no-c-format
+msgid ""
+"The vertical alignment of the cell. (see <xref linkend="
+"\"Seam_Reference_Guide-Document_Constants-Alignment_Values\"/> for possible "
+"values)"
+msgstr ""
+"O alinhamento vertical da célula. (consulte <xref linkend="
+"\"Seam_Reference_Guide-Document_Constants-Alignment_Values\"/> para valores possíveis)"
+
+#. Tag: literal
+#: Itext.xml:789
+#, no-c-format
+msgid "padding"
+msgstr "enchimento"
+
+#. Tag: para
+#: Itext.xml:791
+#, no-c-format
+msgid ""
+"Padding on a given side can also be specified using <literal>paddingLeft</"
+"literal>, <literal>paddingRight</literal>, <literal>paddingTop</literal> and "
+"<literal>paddingBottom</literal>."
+msgstr ""
+"O enchimento de um lado dado pode também ser especificado usando <literal>paddingLeft</"
+"literal>, <literal>paddingRight</literal>, <literal>paddingTop</literal> e "
+"<literal>paddingBottom</literal>."
+
+#. Tag: literal
+#: Itext.xml:797
+#, no-c-format
+msgid "useBorderPadding"
+msgstr "useBorderPadding"
+
+#. Tag: literal
+#: Itext.xml:839
+#, no-c-format
+msgid "fixedHeight"
+msgstr "fixedHeight"
+
+#. Tag: literal
+#: Itext.xml:846
+#, no-c-format
+msgid "noWrap"
+msgstr "noWrap"
+
+#. Tag: literal
+#: Itext.xml:853
+#, no-c-format
+msgid "minimumHeight"
+msgstr "minimumHeight"
+
+#. Tag: literal
+#: Itext.xml:860
+#, no-c-format
+msgid "followingIndent"
+msgstr "followingIndent"
+
+#. Tag: literal
+#: Itext.xml:867
+#, no-c-format
+msgid "rightIndent"
+msgstr "rightIndent"
+
+#. Tag: literal
+#: Itext.xml:874
+#, no-c-format
+msgid "spaceCharRatio"
+msgstr "spaceCharRatio"
+
+#. Tag: literal
+#: Itext.xml:888
+#, no-c-format
+msgid "arabicOptions"
+msgstr "arabicOptions"
+
+#. Tag: literal
+#: Itext.xml:895
+#, no-c-format
+msgid "useAscender"
+msgstr "useAscender"
+
+#. Tag: literal
+#: Itext.xml:902
+#, no-c-format
+msgid "grayFill"
+msgstr "grayFill"
+
+#. Tag: title
+#: Itext.xml:921
+#, no-c-format
+msgid "Document Constants"
+msgstr "Constantes de Texto"
+
+#. Tag: para
+#: Itext.xml:922
+#, no-c-format
+msgid ""
+"This section documents some of the constants shared by attributes on "
+"multiple tags."
+msgstr "Esta sessão documenta algumas das constantes compartilhadas pelos atributos em caracteres múltiplos."
+
+#. Tag: title
+#: Itext.xml:926
+#, no-c-format
+msgid "Color Values"
+msgstr "Valores das cores"
+
+#. Tag: para
+#: Itext.xml:927
+#, no-c-format
+msgid ""
+"Seam documents do not yet support a full color specification. Currently, "
+"only named colors are supported. They are: <literal>white</literal>, "
+"<literal>gray</literal>, <literal>lightgray</literal>, <literal>darkgray</"
+"literal>, <literal>black</literal>, <literal>red</literal>, <literal>pink</"
+"literal>, <literal>yellow</literal>, <literal>green</literal>, "
+"<literal>magenta</literal>, <literal>cyan</literal> and <literal>blue</"
+"literal>."
+msgstr ""
+"Os documentos Seam não suportam ainda uma especificação inteiramente colorida. Atualmente, apenas as cores nomeadas são suportadas. Elas são: <literal>branco</literal>, "
+"<literal>cinza</literal>, <literal>cinza claro</literal>, <literal>cinza escuro</"
+"literal>, <literal>preto</literal>, <literal>vermelho</literal>, <literal>rosa</"
+"literal>, <literal>amarelo</literal>, <literal>verde</literal>, "
+"<literal>magenta</literal>, <literal>ciano</literal> e <literal>azul</"
+"literal>."
+
+#. Tag: title
+#: Itext.xml:933
+#, no-c-format
+msgid "Alignment Values"
+msgstr "Valores de Alinhamento"
+
+#. Tag: para
+#: Itext.xml:934
+#, no-c-format
+msgid ""
+"Where alignment values are used, the Seam PDF supports the following "
+"horizontal alignment values: <literal>left</literal>, <literal>right</"
+"literal>, <literal>center</literal>, <literal>justify</literal> and "
+"<literal>justifyall</literal>. The vertical alignment values are "
+"<literal>top</literal>, <literal>middle</literal>, <literal>bottom</"
+"literal>, and <literal>baseline</literal>."
+msgstr ""
+"Quando os valores de alinhamento são usados, o Seam PDF suporta os seguintes valores de alinhamento horizontal: <literal>esquerdo</literal>, <literal>direito</"
+"literal>, <literal>centro</literal>, <literal>justificar</literal> e "
+"<literal>justificar tudo</literal>. Os valores do alinhamento vertical são <literal>superior</literal>, <literal>meio</literal>, <literal>inferior</"
+"literal>, e <literal>linha de base</literal>."
+
+#. Tag: title
+#: Itext.xml:942
+#, no-c-format
+msgid "Configuring iText"
+msgstr "Configuração do iText"
+
+#. Tag: para
+#: Itext.xml:943
+#, no-c-format
+msgid ""
+"Document generation works out of the box with no additional configuration "
+"needed. However, there are a few points of configuration that are needed for "
+"more serious applications."
+msgstr "A geração do documento funciona fora da caixa sem nenhuma configuração necessária. No entanto, há poucos pontos da configuração que são necessários para aplicativos mais sérios."
+
+#. Tag: para
+#: Itext.xml:946
+#, no-c-format
+msgid ""
+"The default implementation serves PDF documents from a generic URL, "
+"<literal>/seam-doc.seam</literal>. Many browsers (and users) would prefer to "
+"see URLs that contain the actual PDF name like <literal>/myDocument.pdf</"
+"literal>. This capability requires some configuration. To serve PDF files, "
+"all *.pdf resources should be mapped to the Seam Servlet Filter and to the "
+"DocumentStoreServlet:"
+msgstr ""
+"A implementação padrão serve documentos PDF a partir de um URL genérico <literal>/seam-doc.seam</literal>. Muitos navegadores (e usuários) tem por preferência ver URLs que contém o nome PDF atual como <literal>/myDocument.pdf</"
+"literal>. Esta habilidade requer um pouco de configuração. Para servir os arquivos PDF, todos os recursos *.pdf devem ser mapeados ao Filtro Seam Servlet e ao DocumentStoreServlet:"
+
+#. Tag: programlisting
+#: Itext.xml:949
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.servlet.SeamServletFilter&lt;/filter-"
+"class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;\n"
+"\n"
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.pdf.DocumentStoreServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"\n"
+"&lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+msgstr ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.servlet.SeamServletFilter&lt;/filter-"
+"class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;\n"
+"\n"
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.pdf.DocumentStoreServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"\n"
+"&lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+
+#. Tag: para
+#: Itext.xml:950
+#, no-c-format
+msgid ""
+"The <literal>useExtensions</literal> option on the document store component "
+"completes the functionality by instructing the document store to generate "
+"URLs with the correct filename extension for the document type being "
+"generated."
+msgstr "A opção <literal>useExtensions</literal> no componente de armazenamento do documento completa a funcionalidade instruindo o armazenamento do documento a gerar URLs com a extensão do nome do arquivo correto para o tipo de documento sendo gerado."
+
+#. Tag: programlisting
+#: Itext.xml:953
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pdf=\"http://jboss.com/products/seam/pdf\"&gt;\n"
+"    &lt;pdf:documentStore useExtensions=\"true\" /&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pdf=\"http://jboss.com/products/seam/pdf\"&gt;\n"
+"    &lt;pdf:documentStore useExtensions=\"true\" /&gt;\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Itext.xml:954
+#, no-c-format
+msgid ""
+"Generated documents are stored in conversation scope and will expire when "
+"the conversation ends. At that point, references to the document will be "
+"invalid. To You can specify a default view to be shown when a document does "
+"not exist using the <literal>errorPage</literal> property of the "
+"documentStore."
+msgstr "Documentos gerados são armazenados no escopo de conversação e irão expirar quando a conversação encerrar. Nestas alturas, as referências ao documento serão inválidas. Você pode especificar a visualização padrão a ser demonstrada quando um documento não existir usando a propriedade <literal>errorPage</literal> do documentStore."
+
+#. Tag: programlisting
+#: Itext.xml:957
+#, no-c-format
+msgid ""
+"&lt;pdf:documentStore useExtensions=\"true\" errorPage=\"/pdfMissing.seam\" /"
+"&gt;"
+msgstr ""
+"&lt;pdf:documentStore useExtensions=\"true\" errorPage=\"/pdfMissing.seam\" /"
+"&gt;"
+
+#. Tag: title
+#: Itext.xml:961
+#, no-c-format
+msgid "iText links"
+msgstr "Links iText"
+
+#. Tag: para
+#: Itext.xml:962
+#, no-c-format
+msgid "For further information on iText, see:"
+msgstr "Para maiores informações a respeito do iText, consulte:"
+
+#. Tag: ulink
+#: Itext.xml:969
+#, no-c-format
+msgid "iText Home Page"
+msgstr "Página Principal iText"
+
+#. Tag: ulink
+#: Itext.xml:974
+#, no-c-format
+msgid "iText in Action"
+msgstr "iText em Ação"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Jbpm.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Jbpm.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Jbpm.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1448 @@
+# translation of Jbpm.po to Brazilian Portuguese
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Leticia de Lima <ldelima at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Jbpm\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2008-06-11 14:49+1000\n"
+"Last-Translator: Leticia de Lima <ldelima at redhat.com>\n"
+"Language-Team: Brazilian Portuguese <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms:  JBEAP420 \n"
+
+#. Tag: title
+#: Jbpm.xml:6
+#, no-c-format
+msgid "Pageflows and business processes"
+msgstr "Pageflows e processos comerciais"
+
+#. Tag: para
+#: Jbpm.xml:7
+#, no-c-format
+msgid ""
+"JBoss jBPM is a business process management engine for any Java SE or EE "
+"environment. jBPM lets you represent a business process or user interaction "
+"as a graph of nodes representing wait states, decisions, tasks, web pages, "
+"etc. The graph is defined using a simple, very readable, XML dialect called "
+"jPDL, and may be edited and visualised graphically using an eclipse plugin. "
+"jPDL is an extensible language, and is suitable for a range of problems, "
+"from defining web application page flow, to traditional workflow management, "
+"all the way up to orchestration of services in a SOA environment."
+msgstr "O JBoss JBPM é um mecanismo gerenciador de processo comercial para qualquer Java SE ou ambiente EE. O JBPM permite que você represente um processo comercial ou uma interação do usuário como um gráfico de nós representando estados de espera, decisões, tarefas, páginas da web, etc. O gráfico é definido usando um simples e bem legível dialeto XML chamado JPDL, que poderá ser editado e graficamente visualizado usando um plug-in de eclipse. O JDPL é uma linguagem extensiva e apropriado para diferentes problemas, desde a definição do page flow do aplicativo da web a um gerenciador workflow tradicional, chegando à orquestração de serviços em um ambiente SOA. "
+
+#. Tag: para
+#: Jbpm.xml:10
+#, no-c-format
+msgid "Seam applications use jBPM for two different problems:"
+msgstr "Os aplicativos Seam usam JBPM para os seguintes problemas diferenciados:"
+
+#. Tag: para
+#: Jbpm.xml:15
+#, no-c-format
+msgid ""
+"Defining the pageflow involved in complex user interactions. A jPDL process "
+"definition defines the page flow for a single conversation. A Seam "
+"conversation is considered to be a relatively short-running interaction with "
+"a single user."
+msgstr "A definição do pageflow envolvido em um complexo de interações do usuário. Uma definição de processo JPDL define o page flow para uma conversação única. A conversação Seam é considerada, relativamente, a ser uma interação de curta execução com um único usuário."
+
+#. Tag: para
+#: Jbpm.xml:20
+#, no-c-format
+msgid ""
+"Defining the overarching business process. The business process may span "
+"multiple conversations with multiple users. Its state is persistent in the "
+"jBPM database, so it is considered long-running. Coordination of the "
+"activities of multiple users is a much more complex problem than scripting "
+"an interaction with a single user, so jBPM offers sophisticated facilities "
+"for task management and dealing with multiple concurrent paths of execution."
+msgstr "A definição do processo comercial overarching. O processo comercial pode espalhar múltiplas conversações com múltiplos usuários. Seu estado é persistente no banco de dados JBPM, desta forma considerado de longa duração. A coordenação de atividades dos usuários múltiplos é um problema muito mais complexo que realizar o script numa interação com um único usuário. Desta maneira, o JBPM oferece facilidades sofisticadas para o gerenciamento da tarefa e manuseio com caminhos atuais múltiplos de execução."
+
+#. Tag: para
+#: Jbpm.xml:25
+#, no-c-format
+msgid ""
+"Don&#39;t get these two things confused ! They operate at very different "
+"levels or granularity. <emphasis>Pageflow</emphasis>, "
+"<emphasis>conversation</emphasis> and <emphasis>task</emphasis> all refer to "
+"a single interaction with a single user. A business process spans many "
+"tasks. Futhermore, the two applications of jBPM are totally orthogonal. You "
+"can use them together or independently or not at all."
+msgstr ""
+"Não confunda-se com estes dois tópicos! Eles operam em níveis bastante diferentes ou granulosamente. O <emphasis>Pageflow</emphasis>, a "
+"<emphasis>conversação</emphasis> e a <emphasis>tarefa</emphasis> referem-se a uma interação única com um usuário único. O processo comercial espalha muitas funções. Além disso, os dois aplicativos do JBoss são totalmente ortogonais. Você pode usá-los juntos ou independentemente ou nem usá-los. "
+
+#. Tag: para
+#: Jbpm.xml:28
+#, no-c-format
+msgid ""
+"You don&#39;t have to know jDPL to use Seam. If you&#39;re perfectly happy "
+"defining pageflow using JSF or Seam navigation rules, and if your "
+"application is more data-driven that process-driven, you probably don&#39;t "
+"need jBPM. But we&#39;re finding that thinking of user interaction in terms "
+"of a well-defined graphical representation is helping us build more robust "
+"applications."
+msgstr "Você não precisar saber a respeito do JDPL para usar o Seam. Caso você esteja contente em definir pageflow usando JSF ou regras de navegação Seam, e seu aplicativo for mais dados-dirigidos que processo-dirigidos, você provavelmente não precisará do JBPM. Mas, se pensarmos na interação do usuário em termos da representação gráfica bem definida, isto nos ajudará a construir aplicativos mais robustos."
+
+#. Tag: title
+#: Jbpm.xml:32
+#, no-c-format
+msgid "Pageflow in Seam"
+msgstr "Pageflow em Seam"
+
+#. Tag: para
+#: Jbpm.xml:33
+#, no-c-format
+msgid "There are two ways to define pageflow in Seam:"
+msgstr "Existem duas maneiras de se definir pageflow em Seam:"
+
+#. Tag: para
+#: Jbpm.xml:38
+#, no-c-format
+msgid ""
+"Using JSF or Seam navigation rules - the <emphasis>stateless navigation "
+"model</emphasis>"
+msgstr "Usando JSF ou regras de navegação Seam - <emphasis>modelo de navegação sem estado</emphasis>"
+
+#. Tag: para
+#: Jbpm.xml:43
+#, no-c-format
+msgid "Using jPDL - the <emphasis>stateful navigation model</emphasis>"
+msgstr "Usando JPDL - o <emphasis>modelo de navegação sem estado</emphasis>"
+
+#. Tag: para
+#: Jbpm.xml:48
+#, no-c-format
+msgid ""
+"Very simple applications will only need the stateless navigation model. Very "
+"complex applications will use both models in different places. Each model "
+"has its strengths and weaknesses!"
+msgstr "Os aplicativos bem simples irão apenas precisar do modelo de navegação sem estado. Já os aplicativos bastante complexos irão utilizar ambos modelos em lugares diferentes. Cada modelo possui a própria força e fraqueza."
+
+#. Tag: title
+#: Jbpm.xml:52
+#, no-c-format
+msgid "The two navigation models"
+msgstr "Os dois modelos de navegação"
+
+#. Tag: para
+#: Jbpm.xml:53
+#, no-c-format
+msgid ""
+"The stateless model defines a mapping from a set of named, logical outcomes "
+"of an event directly to the resulting page of the view. The navigation rules "
+"are entirely oblivious to any state held by the application other than what "
+"page was the source of the event. This means that your action listener "
+"methods must sometimes make decisions about the page flow, since only they "
+"have access to the current state of the application."
+msgstr "O modelo sem estado define um mapeamento a partir de um conjunto de resultados lógicos e nomeados de um evento diretamente à página resultante de visualização. As regras de navegação são inteiramente óbvias para qualquer estado retido por um aplicativo diferente da página que era o recurso do evento. Isto significa que os métodos action listener devem, às vezes, tomar decisões a respeito do pageflow, uma vez que eles possuem acesso ao estado atual do aplicativo."
+
+#. Tag: para
+#: Jbpm.xml:56
+#, no-c-format
+msgid "Here is an example page flow definition using JSF navigation rules:"
+msgstr "Segue abaixo, um exemplo de definição de page flow usando as regras de navegação JSF:"
+
+#. Tag: programlisting
+#: Jbpm.xml:59
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"    &lt;from-view-id&gt;/numberGuess.jsp&lt;/from-view-id&gt;\n"
+"        \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;guess&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/numberGuess.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;win&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/win.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"        \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;lose&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/lose.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+"&lt;navigation-rule&gt;\n"
+"    &lt;from-view-id&gt;/numberGuess.jsp&lt;/from-view-id&gt;\n"
+"        \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;guess&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/numberGuess.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;win&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/win.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"        \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;lose&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/lose.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"&lt;/navigation-rule&gt;"
+
+#. Tag: para
+#: Jbpm.xml:60
+#, no-c-format
+msgid "Here is the same example page flow definition using Seam navigation rules:"
+msgstr "A seguir, o mesmo exemplo de page flow usando as regras de navegação Seam:"
+
+#. Tag: programlisting
+#: Jbpm.xml:63
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/numberGuess.jsp\"&gt;\n"
+"        \n"
+"    &lt;navigation&gt;\n"
+"        &lt;rule if-outcome=\"guess\"&gt;\n"
+"            &lt;redirect view-id=\"/numberGuess.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"        &lt;rule if-outcome=\"win\"&gt;\n"
+"            &lt;redirect view-id=\"/win.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"        &lt;rule if-outcome=\"lose\"&gt;\n"
+"            &lt;redirect view-id=\"/lose.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+"&lt;page view-id=\"/numberGuess.jsp\"&gt;\n"
+"        \n"
+"    &lt;navigation&gt;\n"
+"        &lt;rule if-outcome=\"guess\"&gt;\n"
+"            &lt;redirect view-id=\"/numberGuess.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"        &lt;rule if-outcome=\"win\"&gt;\n"
+"            &lt;redirect view-id=\"/win.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"        &lt;rule if-outcome=\"lose\"&gt;\n"
+"            &lt;redirect view-id=\"/lose.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"&lt;/navigation-rule&gt;"
+
+#. Tag: para
+#: Jbpm.xml:64
+#, no-c-format
+msgid ""
+"If you find navigation rules overly verbose, you can return view ids "
+"directly from your action listener methods:"
+msgstr "Caso você ache que as regras de navegação são excessivamente verbosas, você pode retornar as identificações da visualização diretamente de seus métodos action listener:"
+
+#. Tag: programlisting
+#: Jbpm.xml:67
+#, no-c-format
+msgid ""
+"public String guess() {\n"
+"    if (guess==randomNumber) return \"/win.jsp\";\n"
+"    if (++guessCount==maxGuesses) return \"/lose.jsp\";\n"
+"    return null;\n"
+"}"
+msgstr ""
+"public String guess() {\n"
+"    if (guess==randomNumber) return \"/win.jsp\";\n"
+"    if (++guessCount==maxGuesses) return \"/lose.jsp\";\n"
+"    return null;\n"
+"}"
+
+#. Tag: para
+#: Jbpm.xml:68
+#, no-c-format
+msgid ""
+"Note that this results in a redirect. You can even specify parameters to be "
+"used in the redirect:"
+msgstr "Perceba que isto resulta num redirecionamento. Você pode ainda especificar os parâmetros a serem usados num redirecionamento:"
+
+#. Tag: programlisting
+#: Jbpm.xml:71
+#, no-c-format
+msgid ""
+"public String search() {\n"
+"    return \"/searchResults.jsp?searchPattern=#{searchAction.searchPattern}"
+"\";\n"
+"}"
+msgstr ""
+"public String search() {\n"
+"    return \"/searchResults.jsp?searchPattern=#{searchAction.searchPattern}"
+"\";\n"
+"}"
+
+#. Tag: para
+#: Jbpm.xml:72
+#, no-c-format
+msgid ""
+"The stateful model defines a set of transitions between a set of named, "
+"logical application states. In this model, it is possible to express the "
+"flow of any user interaction entirely in the jPDL pageflow definition, and "
+"write action listener methods that are completely unaware of the flow of the "
+"interaction."
+msgstr "O modelo sem estado define um conjunto de transições entre o conjunto dos estados do aplicativo lógico e nomeado. Neste modelo, é possível expressar o fluxo de qualquer interação do usuário de forma geral na definição do pageflow JPDL e métodos action listener. Estes estão completamente sem informação a respeito do fluxo da interação. "
+
+#. Tag: para
+#: Jbpm.xml:75
+#, no-c-format
+msgid "Here is an example page flow definition using jPDL:"
+msgstr "Segue a seguir, um exemplo de definição de page flow usando JPDL:"
+
+#. Tag: programlisting
+#: Jbpm.xml:78
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"numberGuess\"&gt;\n"
+"    \n"
+"   &lt;start-page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"              &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"      &lt;/transition&gt;\n"
+"   &lt;/start-page&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess."
+"correctGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateRemainingGuesses\" expression=\"#{numberGuess."
+"lastGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"lose\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"displayGuess\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"lose\" view-id=\"/lose.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+"&lt;pageflow-definition name=\"numberGuess\"&gt;\n"
+"    \n"
+"   &lt;start-page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"              &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"      &lt;/transition&gt;\n"
+"   &lt;/start-page&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess."
+"correctGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateRemainingGuesses\" expression=\"#{numberGuess."
+"lastGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"lose\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"displayGuess\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"lose\" view-id=\"/lose.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+
+#. Tag: para
+#: Jbpm.xml:87
+#, no-c-format
+msgid "There are two things we notice immediately here:"
+msgstr "Existem duas coisas que percebemos imediatamente aqui:"
+
+#. Tag: para
+#: Jbpm.xml:92
+#, no-c-format
+msgid ""
+"The JSF/Seam navigation rules are <emphasis>much</emphasis> simpler. "
+"(However, this obscures the fact that the underlying Java code is more "
+"complex.)"
+msgstr "As regras de navegação JSF/Seam são <emphasis>muito</emphasis> mais simples. (No entanto, isto obscura o fato de que o código Java subscrito é mais complexo.)"
+
+#. Tag: para
+#: Jbpm.xml:97
+#, no-c-format
+msgid ""
+"The jPDL makes the user interaction immediately understandable, without us "
+"needing to even look at the JSP or Java code."
+msgstr "O JPDL faz a interação do usuário imediatamente compreensiva, sem que precisemos observar o código Java ou JSP."
+
+#. Tag: para
+#: Jbpm.xml:102
+#, no-c-format
+msgid ""
+"In addition, the stateful model is more <emphasis>constrained</emphasis>. "
+"For each logical state (each step in the page flow), there are a constrained "
+"set of possible transitions to other states. The stateless model is an "
+"<emphasis>ad hoc</emphasis> model which is suitable to relatively "
+"unconstrained, freeform navigation where the user decides where he/she wants "
+"to go next, not the application."
+msgstr "Além disso, o modelo sem estado é mais <emphasis>constrito</emphasis>. Para cada estado lógico (cada passo no page flow), há um conjunto restrito de transações possíveis aos outros estados. O modelo sem estado é um modelo <emphasis>ad hoc</emphasis> do qual é adequado à irrestrita relatividade, navegação de formulário livre onde o usuário decide aonde ir ao invés do aplicativo."
+
+#. Tag: para
+#: Jbpm.xml:105
+#, no-c-format
+msgid ""
+"The stateful/stateless navigation distinction is quite similar to the "
+"traditional view of modal/modeless interaction. Now, Seam applications are "
+"not usually modal in the simple sense of the word - indeed, avoiding "
+"application modal behavior is one of the main reasons for having "
+"conversations! However, Seam applications can be, and often are, modal at "
+"the level of a particular conversation. It is well-known that modal behavior "
+"is something to avoid as much as possible; it is very difficult to predict "
+"the order in which your users are going to want to do things! However, there "
+"is no doubt that the stateful model has its place."
+msgstr "A distinção da navegação com/sem estado é bastante similar a visualização tradicional da interação de janela restrita/irrestrita. Os aplicativos Seam não são uma janela restrita no simples sentido da palavra. Adicionado a isto, evitar o comportamento de janela restrita do aplicativo é uma das razões principais de possuir estas conversações. No entanto, os aplicativos Seam podem ser e normalmente são janelas restritas no nível de uma conversação particular. Sabe-se que o comportamento de janela restrita é algo que deve ser evitado o máximo possível, e é bastante difícil de se prever a ordem em que seus os usuários vão querer realizar procedimentos."
+
+#. Tag: para
+#: Jbpm.xml:108
+#, no-c-format
+msgid "The biggest contrast between the two models is the back-button behavior."
+msgstr "O maior contraste entre estes dois modelos é o comportamento do botão voltar."
+
+#. Tag: title
+#: Jbpm.xml:114
+#, no-c-format
+msgid "Seam and the back button"
+msgstr "O Seam e o botão voltar"
+
+#. Tag: para
+#: Jbpm.xml:115
+#, no-c-format
+msgid ""
+"When JSF or Seam navigation rules are used, Seam lets the user freely "
+"navigate via the back, forward and refresh buttons. It is the responsibility "
+"of the application to ensure that conversational state remains internally "
+"consistent when this occurs. Experience with the combination of web "
+"application frameworks like Struts or WebWork - that do not support a "
+"conversational model - and stateless component models like EJB stateless "
+"session beans or the Spring framework has taught many developers that this "
+"is close to impossible to do! However, our experience is that in the context "
+"of Seam, where there is a well-defined conversational model, backed by "
+"stateful session beans, it is actually quite straightforward. Usually it is "
+"as simple as combining the use of <literal>no-conversation-view-id</literal> "
+"with null checks at the beginning of action listener methods. We consider "
+"support for freeform navigation to be almost always desirable."
+msgstr "Quando o JSF ou as regras de navegação são usadas, o Seam permite o usuário navegar livremente através dos botões voltar, avançar e atualizar. É responsabilidade do aplicativo garantir que o estado conversacional permaneça internamente consistente, quando isto acontecer. A experiência com os frameworks do aplicativo da web como Struts ou WebWork (dos quais não suportam um modelo conversacional), modelos de componentes sem estado como beans de sessão sem estado ou Framework Spring têm ensinado muitos desenvolvedores que isto é quase impossível de ser realizado. No entanto, nossa experiência nos diz que em um contexto de Seam, que possui um modelo conversacional bem definido e suportado por beans de sessão com estado, é na realidade bastante claro. Normalmente, isto é tão simples quanto combinar o uso do <literal>no-conversation-view-id</literal> com checagem nulas na inicialização dos métodos action listener. Consideramos que o suporte de naveg!
 ação de formulário livre seja quase sempre desejável."
+
+#. Tag: para
+#: Jbpm.xml:118
+#, no-c-format
+msgid ""
+"In this case, the <literal>no-conversation-view-id</literal> declaration "
+"goes in <literal>pages.xml</literal>. It tells Seam to redirect to a "
+"different page if a request originates from a page rendered during a "
+"conversation, and that conversation no longer exists:"
+msgstr "Neste caso, a declaração de <literal>no-conversation-view-id</literal> vai para as <literal>pages.xml</literal>. Ela informa ao Seam a redirecionar-se para uma página diferente, caso a solicitação iniciar a partir da página processada durante a conversação, e que a conversação não existe mais:"
+
+#. Tag: programlisting
+#: Jbpm.xml:121
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/checkout.xhtml\" \n"
+"        no-conversation-view-id=\"/main.xhtml\"/&gt;"
+msgstr ""
+"&lt;page view-id=\"/checkout.xhtml\" \n"
+"        no-conversation-view-id=\"/main.xhtml\"/&gt;"
+
+#. Tag: para
+#: Jbpm.xml:122
+#, no-c-format
+msgid ""
+"On the other hand, in the stateful model, backbuttoning is interpreted as an "
+"undefined transition back to a previous state. Since the stateful model "
+"enforces a defined set of transitions from the current state, back buttoning "
+"is be default disallowed in the stateful model! Seam transparently detects "
+"the use of the back button, and blocks any attempt to perform an action from "
+"a previous, \"stale\" page, and simply redirects the user to the \"current\" "
+"page (and displays a faces message). Whether you consider this a feature or "
+"a limitation of the stateful model depends upon your point of view: as an "
+"application developer, it is a feature; as a user, it might be frustrating! "
+"You can enable backbutton navigation from a particular page node by setting "
+"<literal>back=\"enabled\"</literal>."
+msgstr "Por outro lado, no modelo com estado, o acionamento do botão voltar é interpretado como uma transição de retorno indefinida para um estado prévio. Uma vez que o modelo com estado reforça o conjunto definido das transações a partir do estado atual, o acionamento do botão voltar é o padrão rejeitado no modelo com estado. O Seam detecta transparentemente o uso do botão voltar e bloqueia qualquer tentativa de executar uma ação a partir de uma prévia página \"stale\" e simples redireciona o usuário para a página \"atual\" (exibindo uma mensagem das faces). Você considerá isto um recurso ou uma limitação do modelo com estado, de acordo com o seu ponto de vista. Caso você seja um desenvolvedor do aplicativo, isto será um recurso, do contrário sendo um usuário isto será uma frustração. Você pode permitir a navegação do botão voltar a partir de um nó de página particular, apenas configurando <literal>back=\"enabled\"</literal>."
+
+#. Tag: programlisting
+#: Jbpm.xml:125
+#, no-c-format
+msgid ""
+"&lt;page name=\"checkout\" \n"
+"        view-id=\"/checkout.xhtml\" \n"
+"        back=\"enabled\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"checkout\"/&gt;\n"
+"    &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page name=\"checkout\" \n"
+"        view-id=\"/checkout.xhtml\" \n"
+"        back=\"enabled\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"checkout\"/&gt;\n"
+"    &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Jbpm.xml:126
+#, no-c-format
+msgid ""
+"This allows backbuttoning <emphasis>from</emphasis> the <literal>checkout</"
+"literal> state to <emphasis>any previous state!</emphasis>"
+msgstr ""
+"Isto permite o acionamento do botão voltar <emphasis>a partir</emphasis> do estado <literal>checkout</"
+"literal> a <emphasis>qualquer estado prévio!</emphasis>"
+
+#. Tag: para
+#: Jbpm.xml:129
+#, no-c-format
+msgid ""
+"Of course, we still need to define what happens if a request originates from "
+"a page rendered during a pageflow, and the conversation with the pageflow no "
+"longer exists. In this case, the <literal>no-conversation-view-id</literal> "
+"declaration goes into the pageflow definition:"
+msgstr "Precisamos, ainda, definir o que acontece se uma solicitação origina-se a partir de uma página processada durante o pageflow. Adicionado a isto, se a conversação com o pageflow não existe mais. Neste caso, a declaração de <literal>no-conversation-view-id</literal> vai para a definição pageflow:"
+
+#. Tag: programlisting
+#: Jbpm.xml:132
+#, no-c-format
+msgid ""
+"&lt;page name=\"checkout\" \n"
+"        view-id=\"/checkout.xhtml\" \n"
+"        back=\"enabled\" \n"
+"        no-conversation-view-id=\"/main.xhtml\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"checkout\"/&gt;\n"
+"    &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page name=\"checkout\" \n"
+"        view-id=\"/checkout.xhtml\" \n"
+"        back=\"enabled\" \n"
+"        no-conversation-view-id=\"/main.xhtml\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"checkout\"/&gt;\n"
+"    &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Jbpm.xml:134
+#, no-c-format
+msgid ""
+"In practice, both navigation models have their place, and you&#39;ll quickly "
+"learn to recognize when to prefer one model over the other."
+msgstr "Na prática, ambos modelos de navegação possuem o próprio lugar, e você irá aprender facilmente a reconhecer quando preferir um modelo ao outro."
+
+#. Tag: title
+#: Jbpm.xml:142
+#, no-c-format
+msgid "Using jPDL pageflows"
+msgstr "Usando JPDL pageflows"
+
+#. Tag: title
+#: Jbpm.xml:144
+#, no-c-format
+msgid "Installing pageflows"
+msgstr "Instalação de pageflows"
+
+#. Tag: para
+#: Jbpm.xml:145
+#, no-c-format
+msgid ""
+"We need to install the Seam jBPM-related components, and tell them where to "
+"find our pageflow definition. We can specify this Seam configuration in "
+"<literal>components.xml</literal>."
+msgstr "Nós precisamos instalar os componentes relacionados ao Seam JBPM, além de informá-los onde encontrar nossa definição pageflow. Podemos especificar esta configuração Seam em <literal>components.xml</literal>."
+
+#. Tag: programlisting
+#: Jbpm.xml:148
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:pageflow-definitions&gt;\n"
+"        &lt;value&gt;pageflow.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:pageflow-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:pageflow-definitions&gt;\n"
+"        &lt;value&gt;pageflow.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:pageflow-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+
+#. Tag: para
+#: Jbpm.xml:149
+#, no-c-format
+msgid ""
+"The first line installs jBPM, the second points to a jPDL-based pageflow "
+"definition."
+msgstr "A primeira linha instala JBPM, a segunda direciona à definição pageflow baseada em JPDL."
+
+#. Tag: title
+#: Jbpm.xml:155
+#, no-c-format
+msgid "Starting pageflows"
+msgstr "Inicializando os pageflows"
+
+#. Tag: para
+#: Jbpm.xml:156
+#, no-c-format
+msgid ""
+"We \"start\" a jPDL-based pageflow by specifying the name of the process "
+"definition using a <literal>@Begin</literal>, <literal>@BeginTask</literal> "
+"or <literal>@StartTask</literal> annotation:"
+msgstr ""
+"\"Iniciamos\" um pageflow baseado em JPDL apenas especificando o nome do processo de definição usando o <literal>@Begin</literal>, <literal>@BeginTask</literal> "
+"ou anotação <literal>@StartTask</literal>:"
+
+#. Tag: programlisting
+#: Jbpm.xml:159
+#, no-c-format
+msgid ""
+"@Begin(pageflow=\"numberguess\")\n"
+"public void begin() { ... }"
+msgstr ""
+"@Begin(pageflow=\"numberguess\")\n"
+"public void begin() { ... }"
+
+#. Tag: para
+#: Jbpm.xml:160
+#, no-c-format
+msgid "Alternatively we can start a pageflow using pages.xml:"
+msgstr "Alternativamente, podemos iniciar um pageflow usando as pages.xml:"
+
+#. Tag: programlisting
+#: Jbpm.xml:163
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"        &lt;begin-conversation pageflow=\"numberguess\"/&gt;\n"
+"    &lt;/page&gt;"
+msgstr ""
+"&lt;page&gt;\n"
+"        &lt;begin-conversation pageflow=\"numberguess\"/&gt;\n"
+"    &lt;/page&gt;"
+
+#. Tag: para
+#: Jbpm.xml:164
+#, no-c-format
+msgid ""
+"If we are beginning the pageflow during the <literal>RENDER_RESPONSE</"
+"literal> phase&mdash;during a <literal>@Factory</literal> or "
+"<literal>@Create</literal> method, for example&mdash;we consider ourselves "
+"to be already at the page being rendered, and use a <literal>&lt;start-"
+"page&gt;</literal> node as the first node in the pageflow, as in the example "
+"above."
+msgstr ""
+"Caso estivermos inicializando o pageflow durante o <literal>RENDER_RESPONSE</"
+"literal> phase&mdash;during a <literal>@Factory</literal> ou método "
+"<literal>@Create</literal>, por exemplo, podemos considerar que já estamos na página processada. Lembre-se de utilizar um nó <literal>&lt;start-"
+"page&gt;</literal> como primeiro nó na pageflow, como segue no exemplo acima."
+
+#. Tag: para
+#: Jbpm.xml:167
+#, no-c-format
+msgid ""
+"But if the pageflow is begun as the result of an action listener invocation, "
+"the outcome of the action listener determines which is the first page to be "
+"rendered. In this case, we use a <literal>&lt;start-state&gt;</literal> as "
+"the first node in the pageflow, and declare a transition for each possible "
+"outcome:"
+msgstr "Caso a pageflow tenha iniciado como resultado de uma invocação action listener, o resultado do action listener determina qual é a primeira página a ser processada. Neste caso, usamos um <literal>&lt;start-state&gt;</literal> como um primeiro nó na pageflow e você poderá declarar uma transição para cada resultado possível:"
+
+#. Tag: programlisting
+#: Jbpm.xml:170
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"viewEditDocument\"&gt;\n"
+"\n"
+"    &lt;start-state name=\"start\"&gt;\n"
+"        &lt;transition name=\"documentFound\" to=\"displayDocument\"/&gt;\n"
+"        &lt;transition name=\"documentNotFound\" to=\"notFound\"/&gt;\n"
+"    &lt;/start-state&gt;\n"
+"    \n"
+"    &lt;page name=\"displayDocument\" view-id=\"/document.jsp\"&gt;\n"
+"        &lt;transition name=\"edit\" to=\"editDocument\"/&gt;\n"
+"        &lt;transition name=\"done\" to=\"main\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"    \n"
+"    ...\n"
+"    \n"
+"    &lt;page name=\"notFound\" view-id=\"/404.jsp\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"    &lt;/page&gt;\n"
+"    \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+"&lt;pageflow-definition name=\"viewEditDocument\"&gt;\n"
+"\n"
+"    &lt;start-state name=\"start\"&gt;\n"
+"        &lt;transition name=\"documentFound\" to=\"displayDocument\"/&gt;\n"
+"        &lt;transition name=\"documentNotFound\" to=\"notFound\"/&gt;\n"
+"    &lt;/start-state&gt;\n"
+"    \n"
+"    &lt;page name=\"displayDocument\" view-id=\"/document.jsp\"&gt;\n"
+"        &lt;transition name=\"edit\" to=\"editDocument\"/&gt;\n"
+"        &lt;transition name=\"done\" to=\"main\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"    \n"
+"    ...\n"
+"    \n"
+"    &lt;page name=\"notFound\" view-id=\"/404.jsp\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"    &lt;/page&gt;\n"
+"    \n"
+"&lt;/pageflow-definition&gt;"
+
+#. Tag: title
+#: Jbpm.xml:174
+#, no-c-format
+msgid "Page nodes and transitions"
+msgstr "Nós de páginas e transições"
+
+#. Tag: para
+#: Jbpm.xml:175
+#, no-c-format
+msgid ""
+"Each <literal>&lt;page&gt;</literal> node represents a state where the "
+"system is waiting for user input:"
+msgstr "Cada nó de <literal>&lt;page&gt;</literal> representa o estado em que o sistema espera pela entrada do usuário:"
+
+#. Tag: programlisting
+#: Jbpm.xml:178
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"        &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"        &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Jbpm.xml:179
+#, no-c-format
+msgid ""
+"The <literal>view-id</literal> is the JSF view id. The <literal>&lt;redirect/"
+"&gt;</literal> element has the same effect as <literal>&lt;redirect/&gt;</"
+"literal> in a JSF navigation rule: namely, a post-then-redirect behavior, to "
+"overcome problems with the browser&#39;s refresh button. (Note that Seam "
+"propagates conversation contexts over these browser redirects. So there is "
+"no need for a Ruby on Rails style \"flash\" construct in Seam!)"
+msgstr ""
+"A <literal>view-id</literal> é a identificação de visualização JSF. O elemento <literal>&lt;redirect/"
+"&gt;</literal> possui o mesmo efeito de um <literal>&lt;redirect/&gt;</"
+"literal> em uma regra de navegação JSF: nomeadamente, um comportamento enviar-e-redirecionar, para superar problemas como o botão atualizar do navegador. (Perceba que o Seam propaga contextos de conversação sobre estes redirecionamentos do navegador. Desta forma, não há necessidade de um Ruby na construção \"flash\" de estilo Rails, em Seam.)"
+
+#. Tag: para
+#: Jbpm.xml:182
+#, no-c-format
+msgid ""
+"The transition name is the name of a JSF outcome triggered by clicking a "
+"command button or command link in <literal>numberGuess.jsp</literal>."
+msgstr "O nome de transição é o nome de um resultado JSF triggered, apenas clicando um botão de comando ou um link de comando em <literal>numberGuess.jsp</literal>."
+
+#. Tag: programlisting
+#: Jbpm.xml:185
+#, no-c-format
+msgid "&lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"guess\"/&gt;"
+msgstr "&lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"guess\"/&gt;"
+
+#. Tag: para
+#: Jbpm.xml:186
+#, no-c-format
+msgid ""
+"When the transition is triggered by clicking this button, jBPM will activate "
+"the transition action by calling the <literal>guess()</literal> method of "
+"the <literal>numberGuess</literal> component. Notice that the syntax used "
+"for specifying actions in the jPDL is just a familiar JSF EL expression, and "
+"that the transition action handler is just a method of a Seam component in "
+"the current Seam contexts. So we have exactly the same event model for jBPM "
+"events that we already have for JSF events! (The <emphasis>One Kind of "
+"Stuff</emphasis> principle.)"
+msgstr "Quando a transição for triggered apenas clicando este botão, o JBPM irá ativar a transição ação apenas chamando o método <literal>guess()</literal> de um componente <literal>numberGuess</literal>. Perceba que a sintaxe usada em ações específicas no JPDL é apenas uma expressão JSF EL familiar, e que o manuseio ação da transição é apenas um método do componente Seam em contextos Seam atuais. Desta forma, possuimos exatamente o mesmo modelo de evento para eventos JBPM, dos quais já possuimos para os eventos JSF. "
+
+#. Tag: para
+#: Jbpm.xml:189
+#, no-c-format
+msgid ""
+"In the case of a null outcome (for example, a command button with no "
+"<literal>action</literal> defined), Seam will signal the transition with no "
+"name if one exists, or else simply redisplay the page if all transitions "
+"have names. So we could slightly simplify our example pageflow and this "
+"button:"
+msgstr "Em caso de um resultado nulo (por exemplo, o botão comando sem <literal>ação</literal> definida), o Seam irá sinalizar a transação sem nome, caso um nome existir, ou uma simples re-exibição da página caso todas as transações possuirem nomes. Desta maneira, podemos simplificar um pouco nosso exemplo de pageflow e este botão:"
+
+#. Tag: programlisting
+#: Jbpm.xml:192
+#, no-c-format
+msgid "&lt;h:commandButton type=\"submit\" value=\"Guess\"/&gt;"
+msgstr "&lt;h:commandButton type=\"submit\" value=\"Guess\"/&gt;"
+
+#. Tag: para
+#: Jbpm.xml:193
+#, no-c-format
+msgid "Would fire the following un-named transition:"
+msgstr "Dispararia a seguinte transação não nomeada:"
+
+#. Tag: programlisting
+#: Jbpm.xml:196
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"evaluateGuess\"&gt;\n"
+"        &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"evaluateGuess\"&gt;\n"
+"        &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Jbpm.xml:197
+#, no-c-format
+msgid ""
+"It is even possible to have the button call an action method, in which case "
+"the action outcome will determine the transition to be taken:"
+msgstr "É possível ainda que o botão chame um método ação, e neste caso, o resultado ação irá determinar a transação escolhida:"
+
+#. Tag: programlisting
+#: Jbpm.xml:200
+#, no-c-format
+msgid ""
+"&lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"#{numberGuess."
+"guess}\"/&gt;"
+msgstr ""
+"&lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"#{numberGuess."
+"guess}\"/&gt;"
+
+#. Tag: programlisting
+#: Jbpm.xml:201
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;transition name=\"correctGuess\" to=\"win\"/&gt;\n"
+"    &lt;transition name=\"incorrectGuess\" to=\"evaluateGuess\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;transition name=\"correctGuess\" to=\"win\"/&gt;\n"
+"    &lt;transition name=\"incorrectGuess\" to=\"evaluateGuess\"/&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Jbpm.xml:202
+#, no-c-format
+msgid ""
+"However, this is considered an inferior style, since it moves responsibility "
+"for controlling the flow out of the pageflow definition and back into the "
+"other components. It is much better to centralize this concern in the "
+"pageflow itself."
+msgstr "No entanto, isto é considerado um estilo inferior, uma vez que isto muda a responsabilidade de controle do fluxo fora da definição pageflow e retorna dentro de outros componentes. É muito melhor centralizar esta preocupação no próprio pageflow."
+
+#. Tag: title
+#: Jbpm.xml:208
+#, no-c-format
+msgid "Controlling the flow"
+msgstr "Controlando o fluxo"
+
+#. Tag: para
+#: Jbpm.xml:209
+#, no-c-format
+msgid ""
+"Usually, we don&#39;t need the more powerful features of jPDL when defining "
+"pageflows. We do need the <literal>&lt;decision&gt;</literal> node, however:"
+msgstr "Normalmente, não precisamos de recursos poderosos do JPDL, quando definindo pageflows. Precisamos do nó <literal>&lt;decision&gt;</literal>, no entanto:"
+
+#. Tag: programlisting
+#: Jbpm.xml:212
+#, no-c-format
+msgid ""
+"&lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess.correctGuess}"
+"\"&gt;\n"
+"    &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"    &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"&lt;/decision&gt;"
+msgstr ""
+"&lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess.correctGuess}"
+"\"&gt;\n"
+"    &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"    &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"&lt;/decision&gt;"
+
+#. Tag: para
+#: Jbpm.xml:213
+#, no-c-format
+msgid "A decision is made by evaluating a JSF EL expression in the Seam contexts."
+msgstr "A decisão é feita pela avaliação da expressão JSF EL nos contextos Seam."
+
+#. Tag: title
+#: Jbpm.xml:219
+#, no-c-format
+msgid "Ending the flow"
+msgstr "Finalizando o fluxo"
+
+#. Tag: para
+#: Jbpm.xml:220
+#, no-c-format
+msgid ""
+"We end the conversation using <literal>&lt;end-conversation&gt;</literal> or "
+"<literal>@End</literal>. (In fact, for readability, use of <emphasis>both</"
+"emphasis> is encouraged.)"
+msgstr ""
+"Nós finalizamos a conversação usando <literal>&lt;end-conversation&gt;</literal> ou "
+"<literal>@End</literal>. (No entanto, o uso de <emphasis>ambos</"
+"emphasis> é recomendado para leituras.)"
+
+#. Tag: programlisting
+#: Jbpm.xml:223
+#, no-c-format
+msgid ""
+"&lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;end-conversation/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;end-conversation/&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Jbpm.xml:224
+#, no-c-format
+msgid ""
+"Optionally, we can end a task, specify a jBPM <literal>transition</literal> "
+"name. In this case, Seam will signal the end of the current task in the "
+"overarching business process."
+msgstr "Alternativamente, podemos finalizar uma tarefa especificando o nome da <literal>transação</literal>. Neste caso, o Seam irá sinalizar o término da tarefa atual no processo comercial overarching."
+
+#. Tag: programlisting
+#: Jbpm.xml:227
+#, no-c-format
+msgid ""
+"&lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;end-task transition=\"success\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;end-task transition=\"success\"/&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: title
+#: Jbpm.xml:233
+#, no-c-format
+msgid "Business process management in Seam"
+msgstr "Gerenciamento de processo comercial em Seam"
+
+#. Tag: para
+#: Jbpm.xml:234
+#, no-c-format
+msgid ""
+"A business process is a well-defined set of tasks that must be performed by "
+"users or software systems according to well-defined rules about "
+"<emphasis>who</emphasis> can perform a task, and <emphasis>when</emphasis> "
+"it should be performed. Seam&#39;s jBPM integration makes it easy to display "
+"lists of tasks to users and let them manage their tasks. Seam also lets the "
+"application store state associated with the business process in the "
+"<literal>BUSINESS_PROCESS</literal> context, and have that state made "
+"persistent via jBPM variables."
+msgstr "Um processo comercial é um conjunto de tarefas que devem ser executados pelos usuários ou sistemas de software, de acordo com as regras bem definidas a respeito de <emphasis>quem</emphasis> pode executar uma tarefa e <emphasis>quando</emphasis> elas podem ser executadas. A integração JBPM de Seam facilita a lista de exibição das tarefas dos usuários e permite que os mesmos gerenciem suas tarefas. O Seam também permite que o aplicativo armazene o estado associado com o processo comercial no contexto <literal>BUSINESS_PROCESS</literal>,e faz com que aquele estado seja persistente através das variáveis."
+
+#. Tag: para
+#: Jbpm.xml:237
+#, no-c-format
+msgid ""
+"A simple business process definition looks much the same as a page flow "
+"definition (<emphasis>One Kind of Stuff</emphasis>), except that instead of "
+"<literal>&lt;page&gt;</literal> nodes, we have <literal>&lt;task-node&gt;</"
+"literal> nodes. In a long-running business process, the wait states are "
+"where the system is waiting for some user to log in and perform a task."
+msgstr ""
+"Uma simples definição de processo comercial é bem parecida com a definição de fluxo (<emphasis>One Kind of Stuff</emphasis>), exceto que ao invés de nós de <literal>&lt;page&gt;</literal>, nós temos nós de <literal>&lt;task-node&gt;</"
+"literal>. Num processo comercial de longa execução, os estados de espera estão onde o sistema estiver aguardando por algum usuário efetuar o logon e executar uma tarefa. "
+
+#. Tag: programlisting
+#: Jbpm.xml:240
+#, no-c-format
+msgid ""
+"&lt;process-definition name=\"todo\"&gt;\n"
+"   \n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"todo\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;task-node name=\"todo\"&gt;\n"
+"      &lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"         &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"      &lt;/task&gt;\n"
+"      &lt;transition to=\"done\"/&gt;\n"
+"   &lt;/task-node&gt;\n"
+"   \n"
+"   &lt;end-state name=\"done\"/&gt;\n"
+"   \n"
+"&lt;/process-definition&gt;"
+msgstr ""
+"&lt;process-definition name=\"todo\"&gt;\n"
+"   \n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"todo\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;task-node name=\"todo\"&gt;\n"
+"      &lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"         &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"      &lt;/task&gt;\n"
+"      &lt;transition to=\"done\"/&gt;\n"
+"   &lt;/task-node&gt;\n"
+"   \n"
+"   &lt;end-state name=\"done\"/&gt;\n"
+"   \n"
+"&lt;/process-definition&gt;"
+
+#. Tag: para
+#: Jbpm.xml:251
+#, no-c-format
+msgid ""
+"It is perfectly possible that we might have both jPDL business process "
+"definitions and jPDL pageflow definitions in the same project. If so, the "
+"relationship between the two is that a single <literal>&lt;task&gt;</"
+"literal> in a business process corresponds to a whole pageflow <literal>&lt;"
+"pageflow-definition&gt;</literal>"
+msgstr ""
+"É extremamente possível que tenhamos ambas definições, de processo comercial JPDL e JDPL pageflow, num mesmo projeto. Caso isto aconteça, o relacionamento entre as duas é que uma única <literal>&lt;task&gt;</"
+"literal> num processo comercial corresponde a todo pageflow <literal>&lt;"
+"pageflow-definition&gt;</literal>"
+
+#. Tag: title
+#: Jbpm.xml:256
+#, no-c-format
+msgid "Using jPDL business process definitions"
+msgstr "Usando as definições de processos comerciais"
+
+#. Tag: title
+#: Jbpm.xml:258
+#, no-c-format
+msgid "Installing process definitions"
+msgstr "Definições de processo de instalação"
+
+#. Tag: para
+#: Jbpm.xml:259
+#, no-c-format
+msgid ""
+"We need to install jBPM, and tell it where to find the business process "
+"definitions:"
+msgstr "Precisamos instalar o JBPM e informá-lo onde encontrar as definições de processo comercial:"
+
+#. Tag: programlisting
+#: Jbpm.xml:262
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;todo.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;todo.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+
+#. Tag: title
+#: Jbpm.xml:266
+#, no-c-format
+msgid "Initializing actor ids"
+msgstr "Inicializando as identificações actor"
+
+#. Tag: para
+#: Jbpm.xml:267
+#, no-c-format
+msgid ""
+"We always need to know what user is currently logged in. jBPM \"knows\" "
+"users by their <emphasis>actor id</emphasis> and <emphasis>group actor ids</"
+"emphasis>. We specify the current actor ids using the built in Seam "
+"component named <literal>actor</literal>:"
+msgstr ""
+"Nós sempre precisamos saber qual usuário efetuou o loggon neste instante. O JBPM \"conhece os usuários\" por sua <emphasis> identidade actor</emphasis> e <emphasis>identidade actors de grupo</"
+"emphasis>. Nós especificamos as identidades actor atuais, usando o nomeado componente interno de Seam <literal>actor</literal>:"
+
+#. Tag: programlisting
+#: Jbpm.xml:270
+#, no-c-format
+msgid ""
+"@In Actor actor;\n"
+"\n"
+"public String login() {\n"
+"    ...\n"
+"    actor.setId( user.getUserName() );\n"
+"    actor.getGroupActorIds().addAll( user.getGroupNames() );\n"
+"    ...\n"
+"}"
+msgstr ""
+"@In Actor actor;\n"
+"\n"
+"public String login() {\n"
+"    ...\n"
+"    actor.setId( user.getUserName() );\n"
+"    actor.getGroupActorIds().addAll( user.getGroupNames() );\n"
+"    ...\n"
+"}"
+
+#. Tag: title
+#: Jbpm.xml:274
+#, no-c-format
+msgid "Initiating a business process"
+msgstr "Inicializando o processo comercial"
+
+#. Tag: para
+#: Jbpm.xml:275
+#, no-c-format
+msgid ""
+"To initiate a business process instance, we use the <literal>@CreateProcess</"
+"literal> annotation:"
+msgstr ""
+"Para inicializar uma instância de processo comercial, usamos a anotação <literal>@CreateProcess</"
+"literal>:"
+
+#. Tag: programlisting
+#: Jbpm.xml:278
+#, no-c-format
+msgid ""
+"@CreateProcess(definition=\"todo\")\n"
+"public void createTodo() { ... }"
+msgstr ""
+"@CreateProcess(definition=\"todo\")\n"
+"public void createTodo() { ... }"
+
+#. Tag: para
+#: Jbpm.xml:279
+#, no-c-format
+msgid "Alternatively we can initiate a business process using pages.xml:"
+msgstr "Alternativamente, podemos inicializar um processo comercial usando as pages.xml:"
+
+#. Tag: programlisting
+#: Jbpm.xml:282
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;create-process definition=\"todo\" /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page&gt;\n"
+"    &lt;create-process definition=\"todo\" /&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: title
+#: Jbpm.xml:286
+#, no-c-format
+msgid "Task assignment"
+msgstr "Determinação da tarefa"
+
+#. Tag: para
+#: Jbpm.xml:287
+#, no-c-format
+msgid ""
+"When a process starts, task instances are created. These must be assigned to "
+"users or user groups. We can either hardcode our actor ids, or delegate to a "
+"Seam component:"
+msgstr "Uma vez que o processo inicializar, as instâncias de tarefa serão criadas. Isto deve ser determinado pelos usuários ou grupos de usuários. Podemos também codificar nossas identidades actor ou delegar a um componente Seam:"
+
+#. Tag: programlisting
+#: Jbpm.xml:290
+#, no-c-format
+msgid ""
+"&lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"    &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"&lt;/task&gt;"
+msgstr ""
+"&lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"    &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"&lt;/task&gt;"
+
+#. Tag: para
+#: Jbpm.xml:291
+#, no-c-format
+msgid ""
+"In this case, we have simply assigned the task to the current user. We can "
+"also assign tasks to a pool:"
+msgstr "Neste caso, precisamos apenas determinar a tarefa do usuário atual. Podemos também determinar as tarefas para um pool:"
+
+#. Tag: programlisting
+#: Jbpm.xml:294
+#, no-c-format
+msgid ""
+"&lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"    &lt;assignment pooled-actors=\"employees\"/&gt;\n"
+"&lt;/task&gt;"
+msgstr ""
+"&lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"    &lt;assignment pooled-actors=\"employees\"/&gt;\n"
+"&lt;/task&gt;"
+
+#. Tag: title
+#: Jbpm.xml:298
+#, no-c-format
+msgid "Task lists"
+msgstr "Listas da tarefa"
+
+#. Tag: para
+#: Jbpm.xml:299
+#, no-c-format
+msgid ""
+"Several built-in Seam components make it easy to display task lists. The "
+"<literal>pooledTaskInstanceList</literal> is a list of pooled tasks that "
+"users may assign to themselves:"
+msgstr "Muitos componentes Seam internos facilitam a exibição das listas de tarefa. O <literal>pooledTaskInstanceList</literal> é uma lista das tarefas de um pool, em que os usuários podem determinar por conta própria:"
+
+#. Tag: programlisting
+#: Jbpm.xml:302
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{pooledTaskInstanceList}\" var=\"task\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Description&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{task.description}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link action=\"#{pooledTask.assignToCurrentActor}\" value="
+"\"Assign\" taskInstance=\"#{task}\"/&gt;\n"
+"    &lt;/h:column&gt;                    \n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+"&lt;h:dataTable value=\"#{pooledTaskInstanceList}\" var=\"task\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Description&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{task.description}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link action=\"#{pooledTask.assignToCurrentActor}\" value="
+"\"Assign\" taskInstance=\"#{task}\"/&gt;\n"
+"    &lt;/h:column&gt;                    \n"
+"&lt;/h:dataTable&gt;"
+
+#. Tag: para
+#: Jbpm.xml:303
+#, no-c-format
+msgid ""
+"Note that instead of <literal>&lt;s:link&gt;</literal> we could have used a "
+"plain JSF <literal>&lt;h:commandLink&gt;</literal>:"
+msgstr "Perceba que ao invés de <literal>&lt;s:link&gt;</literal> nós poderíamos ter usado um plano JSF <literal>&lt;h:commandLink&gt;</literal>:"
+
+#. Tag: programlisting
+#: Jbpm.xml:306
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"#{pooledTask.assignToCurrentActor}\"&gt; \n"
+"    &lt;f:param name=\"taskId\" value=\"#{task.id}\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+"&lt;h:commandLink action=\"#{pooledTask.assignToCurrentActor}\"&gt; \n"
+"    &lt;f:param name=\"taskId\" value=\"#{task.id}\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+
+#. Tag: para
+#: Jbpm.xml:307
+#, no-c-format
+msgid ""
+"The <literal>pooledTask</literal> component is a built-in component that "
+"simply assigns the task to the current user."
+msgstr "O componente <literal>pooledTask</literal> é um componente interno que determina a tarefa do usuário atual. "
+
+#. Tag: para
+#: Jbpm.xml:310
+#, no-c-format
+msgid ""
+"The <literal>taskInstanceListForType</literal> component includes tasks of a "
+"particular type that are assigned to the current user:"
+msgstr "O componente <literal>taskInstanceListForType</literal> inclui as tarefas de um tipo particular, das quais são determinadas para o usuário atual:"
+
+#. Tag: programlisting
+#: Jbpm.xml:313
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{taskInstanceListForType[&#39;todo&#39;]}\" var="
+"\"task\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Description&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{task.description}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link action=\"#{todoList.start}\" value=\"Start Work\" "
+"taskInstance=\"#{task}\"/&gt;\n"
+"    &lt;/h:column&gt;                    \n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+"&lt;h:dataTable value=\"#{taskInstanceListForType[&#39;todo&#39;]}\" var="
+"\"task\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Description&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{task.description}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link action=\"#{todoList.start}\" value=\"Start Work\" "
+"taskInstance=\"#{task}\"/&gt;\n"
+"    &lt;/h:column&gt;                    \n"
+"&lt;/h:dataTable&gt;"
+
+#. Tag: title
+#: Jbpm.xml:317
+#, no-c-format
+msgid "Performing a task"
+msgstr "Executando uma tarefa"
+
+#. Tag: para
+#: Jbpm.xml:318
+#, no-c-format
+msgid ""
+"To begin work on a task, we use either <literal>@StartTask</literal> or "
+"<literal>@BeginTask</literal> on the listener method:"
+msgstr "Para começar a trabalhar numa tarefa, usamos tanto <literal>@StartTask</literal> ou <literal>@BeginTask</literal> no método listener:"
+
+#. Tag: programlisting
+#: Jbpm.xml:321
+#, no-c-format
+msgid ""
+"@StartTask\n"
+"public String start() { ... }"
+msgstr ""
+"@StartTask\n"
+"public String start() { ... }"
+
+#. Tag: para
+#: Jbpm.xml:322
+#, no-c-format
+msgid "Alternatively we can begin work on a task using pages.xml:"
+msgstr "Alternativamente, podemos começar a trabalhar numa tarefa usando pages.xml:"
+
+#. Tag: programlisting
+#: Jbpm.xml:325
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;start-task /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page&gt;\n"
+"    &lt;start-task /&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Jbpm.xml:326
+#, no-c-format
+msgid ""
+"These annotations begin a special kind of conversation that has significance "
+"in terms of the overarching business process. Work done by this conversation "
+"has access to state held in the business process context."
+msgstr "Estas anotações começam com um tipo especial de anotação, do qual possui significância em termos do processo comercial overarching. O trabalho efetuado por esta conversação possui acesso ao estado mantido no contexto do processo comercial."
+
+#. Tag: para
+#: Jbpm.xml:329
+#, no-c-format
+msgid ""
+"If we end the conversation using <literal>@EndTask</literal>, Seam will "
+"signal the completion of the task:"
+msgstr "Caso encerrarmos a conversação usando <literal>@EndTask</literal>, o Seam irá sinalizar a finalização da tarefa:"
+
+#. Tag: programlisting
+#: Jbpm.xml:332
+#, no-c-format
+msgid ""
+"@EndTask(transition=\"completed\")\n"
+"public String completed() { ... }"
+msgstr ""
+"@EndTask(transition=\"completed\")\n"
+"public String completed() { ... }"
+
+#. Tag: para
+#: Jbpm.xml:333
+#, no-c-format
+msgid "Alternatively we can use pages.xml:"
+msgstr "Podemos, também, usar pages.xml:"
+
+#. Tag: programlisting
+#: Jbpm.xml:336
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;end-task transition=\"completed\" /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page&gt;\n"
+"    &lt;end-task transition=\"completed\" /&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Jbpm.xml:337
+#, no-c-format
+msgid ""
+"(Alternatively, we could have used <literal>&lt;end-conversation&gt;</"
+"literal> as shown above.)"
+msgstr ""
+"(Poderíamos, ainda, usar <literal>&lt;end-conversation&gt;</"
+"literal> como demonstrado acima.)"
+
+#. Tag: para
+#: Jbpm.xml:340
+#, no-c-format
+msgid ""
+"At this point, jBPM takes over and continues executing the business process "
+"definition. (In more complex processes, several tasks might need to be "
+"completed before process execution can resume.)"
+msgstr "Neste estágio, o JBPM assume o controle e continua executando a definição de processo comercial. (Em processos mais complexos, diversas tarefas talvez sejam completadas antes da execução de processo poder ser resumida.)"
+
+#. Tag: para
+#: Jbpm.xml:344
+#, no-c-format
+msgid ""
+"Please refer to the jBPM documentation for a more thorough overview of the "
+"sophisticated features that jBPM provides for managing complex business "
+"processes."
+msgstr "Por favor, refira-se à documentação JBPM para uma visão completa dos recursos sofisticados que o JBPM fornece para o complexo gerenciamento de processos comerciais. "
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Jms.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Jms.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Jms.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,744 @@
+# translation of Jms.po to Brazilian Portuguese
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Leticia de Lima <ldelima at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Jms\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-02-04 23:29+0000\n"
+"PO-Revision-Date: 2008-04-07 15:27+1000\n"
+"Last-Translator: Leticia de Lima <ldelima at redhat.com>\n"
+"Language-Team: Brazilian Portuguese <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms:  JBEAP420 \n"
+
+#. Tag: title
+#: Jms.xml:6
+#, no-c-format
+msgid "Asynchronicity and messaging"
+msgstr "Assincronia e mensagem"
+
+#. Tag: para
+#: Jms.xml:7
+#, no-c-format
+msgid ""
+"Seam makes it very easy to perform work asynchronously from a web request. "
+"When most people think of asynchronicity in Java EE, they think of using "
+"JMS. This is certainly one way to approach the problem in Seam, and is the "
+"right way when you have strict and well-defined quality of service "
+"requirements. Seam makes it easy to send and recieve JMS messages using Seam "
+"components."
+msgstr "O Seam facilita a execução do trabalho de assincronia a partir de uma solicitação da web. Quando as pessoas pensam em assincronia no Java EE, elas pensam em usar o JMS. Esta é definitivamente uma maneira de aproximar-se do problema em Seam e a melhor maneira quando você possui solicitações de qualidade de serviço restritas e bem definidas. O Seam facilita o envio e recebimento de mensagens JMS usando componentes Seam."
+
+#. Tag: para
+#: Jms.xml:10
+#, no-c-format
+msgid ""
+"But for many usecases, JMS is overkill. Seam layers a simple asynchronous "
+"method and event facility over the EJB 3.0 timer service."
+msgstr "Mas para muitos casos de uso, o Seam é arrasador. O Seam estende-se em camadas num método assincrônico simples e evento de facilidade sobre o serviço de tempo de limite EJB 3.0."
+
+#. Tag: title
+#: Jms.xml:13
+#, no-c-format
+msgid "Asynchronicity"
+msgstr "Assincronia"
+
+#. Tag: para
+#: Jms.xml:14
+#, no-c-format
+msgid ""
+"Asynchronous events and method calls have the same quality of service "
+"expectations as the container&#39;s EJB timer service. If you&#39;re not "
+"familiar with the Timer service, don&#39;t worry, you don&#39;t need to "
+"interact with it directly if you want to use asynchronous methods in Seam."
+msgstr "Eventos de assincronia e chamadas de método possuem a mesma expectativas de serviço de qualidade como o serviço cronometrador EJB de container. Não se preocupe em se familiarizar com o serviço sincronizador, pois você não precisará interagir com isto para usar os métodos de assincronia em Se<literal>components.xml</literal>:am."
+
+#. Tag: para
+#: Jms.xml:17
+#, no-c-format
+msgid ""
+"To use asynchronous methods and events, you need to add the following line "
+"to <literal>components.xml</literal>:"
+msgstr "Para usar os métodos e eventos de assincronia, você precisa adicionar a seguinte linha ao <literal>components.xml</literal>:"
+
+#. Tag: programlisting
+#: Jms.xml:20
+#, no-c-format
+msgid "&lt;core:dispatcher/&gt;"
+msgstr "&lt;core:dispatcher/&gt;"
+
+#. Tag: para
+#: Jms.xml:21
+#, no-c-format
+msgid ""
+"Note that this functionality is not available in environments which do not "
+"support EJB 3.0."
+msgstr "Perceba que esta funcionalidade não está disponível em ambientes que não suportam o EJB 3.0."
+
+#. Tag: title
+#: Jms.xml:24
+#, no-c-format
+msgid "Asynchronous methods"
+msgstr "Métodos de assincronia"
+
+#. Tag: para
+#: Jms.xml:25
+#, no-c-format
+msgid ""
+"In simplest form, an asynchronous call just lets a method call be processed "
+"asynchronously (in a different thread) from the caller. We usually use an "
+"asynchronous call when we want to return an immediate response to the "
+"client, and let some expensive work be processed in the background. This "
+"pattern works very well in applications which use AJAX, where the client can "
+"automatically poll the server for the result of the work."
+msgstr "De uma maneira simples, uma chamada de assincronia apenas permite que uma chamada de método pode ser processada assincronicamente (num segmento diferente) a partir de um chamador. Nós normalmente usamos uma chamada assincrônica quando quisermos retornar uma resposta imediata ao cliente e permitir permitir que um trabalho caro seja processado no fundo. Este padrão trabalha muito bem em aplicativos que usam AJAX, onde o cliente pode automaticamente coligar-se ao servidor para o resultado de trabalho."
+
+#. Tag: para
+#: Jms.xml:28
+#, no-c-format
+msgid ""
+"For EJB components, we annotate the local interface to specify that a method "
+"is processed asynchronously."
+msgstr "Para os componentes EJB, anotamos a interface local para especificar que o método é processado assincronicamente."
+
+#. Tag: programlisting
+#: Jms.xml:31
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public void processPayment(Payment payment);\n"
+"}"
+msgstr ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public void processPayment(Payment payment);\n"
+"}"
+
+#. Tag: para
+#: Jms.xml:32
+#, no-c-format
+msgid ""
+"(For JavaBean components we can annotate the component implementation class "
+"if we like.)"
+msgstr "(Para componentes JavaBean poderemos anotar a classe de implementação do componente, caso seja necessário)"
+
+#. Tag: para
+#: Jms.xml:35
+#, no-c-format
+msgid "The use of asynchronicity is transparent to the bean class:"
+msgstr "Para o uso da assincronia for transparente à classe bean:"
+
+#. Tag: programlisting
+#: Jms.xml:38
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"paymentHandler\")\n"
+"public class PaymentHandlerBean implements PaymentHandler\n"
+"{\n"
+"    public void processPayment(Payment payment)\n"
+"    {\n"
+"        //do some work!\n"
+"    }\n"
+"}"
+msgstr ""
+"@Stateless\n"
+"@Name(\"paymentHandler\")\n"
+"public class PaymentHandlerBean implements PaymentHandler\n"
+"{\n"
+"    public void processPayment(Payment payment)\n"
+"    {\n"
+"        //do some work!\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Jms.xml:39
+#, no-c-format
+msgid "And also transparent to the client:"
+msgstr "E também transparente ao cliente:"
+
+#. Tag: programlisting
+#: Jms.xml:42
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String pay()\n"
+"    {\n"
+"        paymentHandler.processPayment( new Payment(bill) );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String pay()\n"
+"    {\n"
+"        paymentHandler.processPayment( new Payment(bill) );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Jms.xml:43
+#, no-c-format
+msgid ""
+"The asynchronous method is processed in a completely new event context and "
+"does not have access to the session or conversation context state of the "
+"caller. However, the business process context <emphasis>is</emphasis> "
+"propagated."
+msgstr "O método de assincronia é processado contexto de evento completamente novo e não possui acesso ao estado do contexto de conversação ou sessão do chamador. No entanto, o contexto de processo comercial <emphasis>é</emphasis> propagado."
+
+#. Tag: para
+#: Jms.xml:46
+#, no-c-format
+msgid ""
+"Asynchronous method calls may be scheduled for later execution using the "
+"<literal>@Duration</literal>, <literal>@Expiration</literal> and "
+"<literal>@IntervalDuration</literal> annotations."
+msgstr ""
+"As chamadas de métodos assincrônicos podem ser esquematizadas para outras execuções usando a <literal>@Duration</literal>, <literal>@Expiration</literal> e anotações "
+"<literal>@IntervalDuration</literal>."
+
+#. Tag: programlisting
+#: Jms.xml:49
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public void processScheduledPayment(Payment payment, @Expiration Date "
+"date);\n"
+"\n"
+"    @Asynchronous\n"
+"    public void processRecurringPayment(Payment payment, @Expiration Date "
+"date, \n"
+"      @IntervalDuration Long interval)&#39;\n"
+"}"
+msgstr ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public void processScheduledPayment(Payment payment, @Expiration Date "
+"date);\n"
+"\n"
+"    @Asynchronous\n"
+"    public void processRecurringPayment(Payment payment, @Expiration Date "
+"date, \n"
+"      @IntervalDuration Long interval)&#39;\n"
+"}"
+
+#. Tag: programlisting
+#: Jms.xml:50
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String schedulePayment()\n"
+"    {\n"
+"        paymentHandler.processScheduledPayment( new Payment(bill), bill."
+"getDueDate() );\n"
+"        return \"success\";\n"
+"    }\n"
+"\n"
+"    public String scheduleRecurringPayment()\n"
+"    {\n"
+"        paymentHandler.processRecurringPayment( new Payment(bill), bill."
+"getDueDate(), ONE_MONTH );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String schedulePayment()\n"
+"    {\n"
+"        paymentHandler.processScheduledPayment( new Payment(bill), bill."
+"getDueDate() );\n"
+"        return \"success\";\n"
+"    }\n"
+"\n"
+"    public String scheduleRecurringPayment()\n"
+"    {\n"
+"        paymentHandler.processRecurringPayment( new Payment(bill), bill."
+"getDueDate(), ONE_MONTH );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Jms.xml:51
+#, no-c-format
+msgid ""
+"Both client and server may access the <literal>Timer</literal> object "
+"associated with the invocation."
+msgstr "Ambos clientes e servidor poderão acessar o objeto <literal>Timer</literal> associado com a invocação."
+
+#. Tag: programlisting
+#: Jms.xml:54
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public Timer processScheduledPayment(Payment payment, @Expiration Date "
+"date);\n"
+"}"
+msgstr ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public Timer processScheduledPayment(Payment payment, @Expiration Date "
+"date);\n"
+"}"
+
+#. Tag: programlisting
+#: Jms.xml:55
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"paymentHandler\")\n"
+"public class PaymentHandlerBean implements PaymentHandler\n"
+"{\n"
+"    @In Timer timer;\n"
+"    \n"
+"    public Timer processScheduledPayment(Payment payment, @Expiration Date "
+"date)\n"
+"    {\n"
+"        //do some work!\n"
+"        \n"
+"        return timer; //note that return value is completely ignored\n"
+"    }\n"
+"\n"
+"}"
+msgstr ""
+"@Stateless\n"
+"@Name(\"paymentHandler\")\n"
+"public class PaymentHandlerBean implements PaymentHandler\n"
+"{\n"
+"    @In Timer timer;\n"
+"    \n"
+"    public Timer processScheduledPayment(Payment payment, @Expiration Date "
+"date)\n"
+"    {\n"
+"        //do some work!\n"
+"        \n"
+"        return timer; //note that return value is completely ignored\n"
+"    }\n"
+"\n"
+"}"
+
+#. Tag: programlisting
+#: Jms.xml:56
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String schedulePayment()\n"
+"    {\n"
+"        Timer timer = paymentHandler.processScheduledPayment( new Payment"
+"(bill), bill.getDueDate() );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String schedulePayment()\n"
+"    {\n"
+"        Timer timer = paymentHandler.processScheduledPayment( new Payment"
+"(bill), bill.getDueDate() );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Jms.xml:57
+#, no-c-format
+msgid "Asynchronous methods cannot return any other value to the caller."
+msgstr "Os métodos assincrônicos não podem retornar qualquer valor ao chamador."
+
+#. Tag: title
+#: Jms.xml:60
+#, no-c-format
+msgid "Asynchronous events"
+msgstr "Eventos assincrônicos"
+
+#. Tag: para
+#: Jms.xml:61
+#, no-c-format
+msgid ""
+"Component-driven events may also be asynchronous. To raise an event for "
+"asynchronous processing, simply call the <literal>raiseAsynchronousEvent()</"
+"literal> methods of the <literal>Events</literal> class. To schedule a timed "
+"event, call one of the <literal>raiseTimedEvent()</literal> methods. "
+"Components may observe asynchronous events in the usual way, but remember "
+"that only the business process context is propagated to the asynchronous "
+"thread."
+msgstr ""
+"Os eventos de componente dirigido podem ser também assincrônicos. Para elevar um evento a um processamento assincrônico, apenas chame os métodos <literal>raiseAsynchronousEvent()</"
+"literal> da classe de <literal>Events</literal>. Para esquematizar um evento de tempo limite, chame um dos métodos <literal>raiseTimedEvent()</literal>. Os componentes podem observar os eventos assincrônicos na maneira habitual, mas lembre-se que apenas o contexto de processo comercial é propagado aos segmentos assincrônicos."
+
+#. Tag: title
+#: Jms.xml:64
+#, no-c-format
+msgid "Messaging in Seam"
+msgstr "Mensagem em Seam"
+
+#. Tag: para
+#: Jms.xml:65
+#, no-c-format
+msgid ""
+"Seam makes it easy to send and receive JMS messages to and from Seam "
+"components."
+msgstr "O Seam facilita o envio e recebimento de mensagens JMS para e a partir dos componentes Seam."
+
+#. Tag: title
+#: Jms.xml:68
+#, no-c-format
+msgid "Configuration"
+msgstr "Configuração"
+
+#. Tag: para
+#: Jms.xml:69
+#, no-c-format
+msgid ""
+"To configure Seam&#39;s infrastructure for sending JMS messages, you need to "
+"tell Seam about any topics and queues you want to send messages to, and also "
+"tell Seam where to find the <literal>QueueConnectionFactory</literal> and/or "
+"<literal>TopicConnectionFactory</literal>."
+msgstr ""
+"Para configurar a infraestrutura do Seam para o envio de mensagens JMS, você precisa informar o Seam sobre qualquer tópico e questões que você queira enviar mensagens, e também informá-lo onde encontrar <literal>QueueConnectionFactory</literal> e/ou "
+"<literal>TopicConnectionFactory</literal>."
+
+#. Tag: para
+#: Jms.xml:72
+#, no-c-format
+msgid ""
+"Seam defaults to using <literal>UIL2ConnectionFactory</literal> which is the "
+"usual connection factory for use with JBossMQ. If you are using some other "
+"JMS provider, you need to set one or both of <literal>queueConnection."
+"queueConnectionFactoryJndiName</literal> and <literal>topicConnection."
+"topicConnectionFactoryJndiName</literal> in <literal>seam.properties</"
+"literal>, <literal>web.xml</literal> or <literal>components.xml</literal>."
+msgstr ""
+"Os padrões Seam usando <literal>UIL2ConnectionFactory</literal>, do qual é a fábrica de conexão usual para uso com o JbossMQ. Caso você esteja usando qualquer outro provedor JMS, você precisará um ou ambos dos <literal>queueConnection."
+"queueConnectionFactoryJndiName</literal> e <literal>topicConnection."
+"topicConnectionFactoryJndiName</literal> em <literal>seam.properties</"
+"literal>, <literal>web.xml</literal> ou <literal>components.xml</literal>."
+
+#. Tag: para
+#: Jms.xml:75
+#, no-c-format
+msgid ""
+"You also need to list topics and queues in <literal>components.xml</literal> "
+"to install Seam managed <literal>TopicPublisher</literal>s and "
+"<literal>QueueSender</literal>s:"
+msgstr ""
+"Você também precisará listar tópicos e questões em <literal>components.xml</literal> para instalar o gerenciado Seam <literal>TopicPublisher</literal>s e "
+"<literal>QueueSender</literal>s:"
+
+#. Tag: programlisting
+#: Jms.xml:78
+#, no-c-format
+msgid ""
+"&lt;jms:managed-topic-publisher name=\"stockTickerPublisher\" \n"
+"                   auto-create=\"true  topic-jndi-name=\"topic/"
+"stockTickerTopic\"/&gt;\n"
+"\n"
+"&lt;jms:managed-queue-sender name=\"paymentQueueSender\" auto-create=\"true"
+"\" \n"
+"    queue-jndi-name=\"queue/paymentQueue\"/&gt;"
+msgstr ""
+"&lt;jms:managed-topic-publisher name=\"stockTickerPublisher\" \n"
+"                   auto-create=\"true  topic-jndi-name=\"topic/"
+"stockTickerTopic\"/&gt;\n"
+"\n"
+"&lt;jms:managed-queue-sender name=\"paymentQueueSender\" auto-create=\"true"
+"\" \n"
+"    queue-jndi-name=\"queue/paymentQueue\"/&gt;"
+
+#. Tag: title
+#: Jms.xml:81
+#, no-c-format
+msgid "Using JBoss Messaging"
+msgstr "Usando o JBoss Messaging "
+
+#. Tag: para
+#: Jms.xml:82
+#, no-c-format
+msgid ""
+"For using JBoss Messaging which comes with JBoss Enterprise Application "
+"Platform 4.3, you should first set the value of the properties "
+"'<literal>queueConnection.queueConnectionFactoryJndiName</literal>' and "
+"'<literal>topicConnection.topicConnectionFactoryJndiName</literal>' to "
+"'<literal>ConnectionFactory</literal>' which is the default connection "
+"factory for JBoss Messaging. Then set the value of the "
+"'<literal>connectionProvider</literal>' property to '<literal>org.jboss.seam."
+"remoting.messaging.JBossMessagingConnectionProvider</literal>' on the class "
+"component '<literal>org.jboss.seam.remoting.messaging.SubscriptionRegistry</"
+"literal>', which creates topic connections for jboss messaging. "
+"<programlisting>\n"
+"&lt;component name=\"org.jboss.seam.jms.topicConnection\"&gt;\n"
+"        &lt;property name=\"topicConnectionFactoryJndiName\"&gt;\n"
+"        ConnectionFactory\n"
+"        &lt;/property&gt;\n"
+"&lt;/component&gt;\n"
+"&lt;component class=\"org.jboss.seam.remoting.messaging.SubscriptionRegistry"
+"\" installed=\"true\"&gt;\n"
+"        &lt;property name=\"allowedTopics\"&gt;\n"
+"        chatroomTopic\n"
+"        &lt;/property&gt;\n"
+"        &lt;property name=\"connectionProvider\"&gt;\n"
+"        org.jboss.seam.remoting.messaging.JBossMessagingConnectionProvider\n"
+"        &lt;/property&gt;\n"
+"&lt;/component&gt;\n"
+"</programlisting> You also need to update the topics to use JBoss Messaging "
+"as shown in the code fragment below."
+msgstr ""
+"Para o uso do JBoss Messaging que acompanha a Plataforma de Aplicativo do JBoss Enterprise 4.3, vocªe deve primeiro configurar o valor das propriedades <literal>queueConnection.queueConnectionFactoryJndiName</literal>' e "
+"'<literal>topicConnection.topicConnectionFactoryJndiName</literal> para <literal>ConnectionFactory</literal>'que é o padrão de fabricação de conexão para o JBoss Messaging. Então configure o valor da propriedade <literal>connectionProvider</literal> para <literal>org.jboss.seam."
+"remoting.messaging.JBossMessagingConnectionProvider</literal>'no componente de classe <literal>org.jboss.seam.remoting.messaging.SubscriptionRegistry</"
+"literal>. Este cria conexões de tópicos para o JBoss Messaging. <programlisting>\n"
+"&lt;component name=\"org.jboss.seam.jms.topicConnection\"&gt;\n"
+"        &lt;property name=\"topicConnectionFactoryJndiName\"&gt;\n"
+"        ConnectionFactory\n"
+"        &lt;/property&gt;\n"
+"&lt;/component&gt;\n"
+"&lt;component class=\"org.jboss.seam.remoting.messaging.SubscriptionRegistry"
+"\" installed=\"true\"&gt;\n"
+"        &lt;property name=\"allowedTopics\"&gt;\n"
+"        chatroomTopic\n"
+"        &lt;/property&gt;\n"
+"        &lt;property name=\"connectionProvider\"&gt;\n"
+"        org.jboss.seam.remoting.messaging.JBossMessagingConnectionProvider\n"
+"        &lt;/property&gt;\n"
+"&lt;/component&gt;\n"
+"</programlisting> Você também precisará atualizar os tópicos para o uso do JBoss Messaging como apresentado no fragmento de código abaixo."
+
+#. Tag: programlisting
+#: Jms.xml:86
+#, no-c-format
+msgid ""
+"&lt;server&gt;\n"
+"        &lt;mbean code=\"org.jboss.jms.server.destination.TopicService\"\n"
+"               name=\"jboss.messaging.destination:service=Topic,"
+"name=chatroomTopic\"\n"
+"                                            xmbean-dd=\"xmdesc/Topic-xmbean."
+"xml\"&gt;\n"
+"                &lt;depends optional-attribute-name=\"ServerPeer\"&gt;\n"
+"                jboss.messaging:service=ServerPeer\n"
+"                &lt;/depends&gt;\n"
+"                &lt;depends&gt;\n"
+"                jboss.messaging:service=PostOffice\n"
+"                &lt;/depends&gt;\n"
+"                &lt;attribute name=\"SecurityConfig\"&gt;\n"
+"                        &lt;security&gt;\n"
+"                          &lt;role name=\"guest\" read=\"true\" write=\"true"
+"\"/&gt;\n"
+"                          &lt;role name=\"publisher\" read=\"true\" write="
+"\"true\" create=\"false\"/&gt;\n"
+"                          &lt;role name=\"durpublisher\" read=\"true\" write="
+"\"true\" create=\"true\"/&gt;\n"
+"                        &lt;/security&gt;\n"
+"                &lt;/attribute&gt;\n"
+"        &lt;/mbean&gt;\n"
+"&lt;/server&gt;"
+msgstr ""
+"&lt;server&gt;\n"
+"        &lt;mbean code=\"org.jboss.jms.server.destination.TopicService\"\n"
+"               name=\"jboss.messaging.destination:service=Topic,"
+"name=chatroomTopic\"\n"
+"                                            xmbean-dd=\"xmdesc/Topic-xmbean."
+"xml\"&gt;\n"
+"                &lt;depends optional-attribute-name=\"ServerPeer\"&gt;\n"
+"                jboss.messaging:service=ServerPeer\n"
+"                &lt;/depends&gt;\n"
+"                &lt;depends&gt;\n"
+"                jboss.messaging:service=PostOffice\n"
+"                &lt;/depends&gt;\n"
+"                &lt;attribute name=\"SecurityConfig\"&gt;\n"
+"                        &lt;security&gt;\n"
+"                          &lt;role name=\"guest\" read=\"true\" write=\"true"
+"\"/&gt;\n"
+"                          &lt;role name=\"publisher\" read=\"true\" write="
+"\"true\" create=\"false\"/&gt;\n"
+"                          &lt;role name=\"durpublisher\" read=\"true\" write="
+"\"true\" create=\"true\"/&gt;\n"
+"                        &lt;/security&gt;\n"
+"                &lt;/attribute&gt;\n"
+"        &lt;/mbean&gt;\n"
+"&lt;/server&gt;"
+
+#. Tag: title
+#: Jms.xml:90
+#, no-c-format
+msgid "Sending messages"
+msgstr "Envio de mensagens"
+
+#. Tag: para
+#: Jms.xml:91
+#, no-c-format
+msgid ""
+"Now, you can inject a JMS <literal>TopicPublisher</literal> and "
+"<literal>TopicSession</literal> into any component:"
+msgstr ""
+"Agora, você poderá injetar um JMS <literal>TopicPublisher</literal> e "
+"<literal>TopicSession</literal> em qualquer documento:"
+
+#. Tag: programlisting
+#: Jms.xml:94
+#, no-c-format
+msgid ""
+"@In \n"
+"private TopicPublisher stockTickerPublisher;   \n"
+"@In \n"
+"private TopicSession topicSession;\n"
+"\n"
+"public void publish(StockPrice price) {\n"
+"      try\n"
+"      {\n"
+"         topicPublisher.publish( topicSession.createObjectMessage(price) );\n"
+"      } \n"
+"      catch (Exception ex)\n"
+"      {\n"
+"         throw new RuntimeException(ex);\n"
+"      } \n"
+"}"
+msgstr ""
+"@In \n"
+"private TopicPublisher stockTickerPublisher;   \n"
+"@In \n"
+"private TopicSession topicSession;\n"
+"\n"
+"public void publish(StockPrice price) {\n"
+"      try\n"
+"      {\n"
+"         topicPublisher.publish( topicSession.createObjectMessage(price) );\n"
+"      } \n"
+"      catch (Exception ex)\n"
+"      {\n"
+"         throw new RuntimeException(ex);\n"
+"      } \n"
+"}"
+
+#. Tag: para
+#: Jms.xml:95
+#, no-c-format
+msgid "Or, for working with a queue:"
+msgstr "Ou, para trabalhar com uma fila:"
+
+#. Tag: programlisting
+#: Jms.xml:98
+#, no-c-format
+msgid ""
+"@In\n"
+"private QueueSender paymentQueueSender;   \n"
+"@In\n"
+"private QueueSession queueSession;\n"
+"\n"
+"public void publish(Payment payment) {\n"
+"      try\n"
+"      {\n"
+"         paymentQueueSender.send( queueSession.createObjectMessage"
+"(payment) );\n"
+"      } \n"
+"      catch (Exception ex)\n"
+"      {\n"
+"         throw new RuntimeException(ex);\n"
+"      } \n"
+"}"
+msgstr ""
+"@In\n"
+"private QueueSender paymentQueueSender;   \n"
+"@In\n"
+"private QueueSession queueSession;\n"
+"\n"
+"public void publish(Payment payment) {\n"
+"      try\n"
+"      {\n"
+"         paymentQueueSender.send( queueSession.createObjectMessage"
+"(payment) );\n"
+"      } \n"
+"      catch (Exception ex)\n"
+"      {\n"
+"         throw new RuntimeException(ex);\n"
+"      } \n"
+"}"
+
+#. Tag: title
+#: Jms.xml:99
+#, no-c-format
+msgid "Receiving messages using a message-driven bean"
+msgstr "Recebimento de mensagens usando um bean de mensagem dirigida"
+
+#. Tag: para
+#: Jms.xml:100
+#, no-c-format
+msgid ""
+"You can process messages using any EJB3 message driven bean. Message-driven "
+"beans may even be Seam components, in which case it is possible to inject "
+"other event and application scoped Seam components."
+msgstr "Você pode processar mensagens usando qualquer bean de mensagem dirigida. Os beans de mensagem dirigidas podem ser ainda componentes Seam, que neste caso é possível injetar outro evento e escopo de aplicação de componentes Seam."
+
+#. Tag: title
+#: Jms.xml:103
+#, no-c-format
+msgid "Receiving messages in the client"
+msgstr "Recebimento de mensagens em um cliente"
+
+#. Tag: para
+#: Jms.xml:104
+#, no-c-format
+msgid ""
+"Seam Remoting lets you subscribe to a JMS topic from client-side JavaScript. "
+"This is described in the next chapter."
+msgstr "O Seam Remoting permite que você subescreva para um tópico JMS a partir de JavaScript ao lado do cliente. Isto será descrito no próximo capítulo."
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Mail.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Mail.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Mail.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1202 @@
+# translation of Mail.po to Brazilian Portuguese
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Leticia de Lima <ldelima at redhat.com>, 2008.
+# Xi HUANG <xhuang at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Mail\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2008-05-21 08:42+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team: Chinese Simplified <kde-i18n-doc at lists.kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KAider 0.1\n"
+"Plural-Forms:  JBEAP420 \n"
+
+#. Tag: title
+#: Mail.xml:6
+#, no-c-format
+msgid "Email"
+msgstr "Correio Eletrônico"
+
+#. Tag: para
+#: Mail.xml:7
+#, no-c-format
+msgid "Seam now includes an optional components for templating and sending emails."
+msgstr "Agora o Seam inclui componentes opcionais para modelação e envios de e-mails."
+
+#. Tag: para
+#: Mail.xml:10
+#, no-c-format
+msgid ""
+"Email support is provided by <literal>jboss-seam-mail.jar</literal>. This "
+"JAR contains the mail JSF controls, which are used to construct emails, and "
+"the <literal>mailSession</literal> manager component."
+msgstr "O correio eletrônico de suporte é fornecido por <literal>jboss-seam-mail.jar</literal>. Este JAR contém o correio controle JSF, que é usado para a construção de correio-eletrônicos e componente gerenciador <literal>mailSession</literal>."
+
+#. Tag: para
+#: Mail.xml:13
+#, no-c-format
+msgid ""
+"The examples/mail project contains an example of the email support in "
+"action. It demonstrates proper packaging, and it contains a number of "
+"example that demonstrate the key features currently supported."
+msgstr "O projeto de amostras/correio possui um exemplo de suporte de correio eletrônico em ação, Isto demonstra o empacotamento adequado e contém um número de amostras que demonstram os recursos chaves atualmente suportados."
+
+#. Tag: title
+#: Mail.xml:17
+#, no-c-format
+msgid "Creating a message"
+msgstr "Criando uma mensagem"
+
+#. Tag: para
+#: Mail.xml:18
+#, no-c-format
+msgid ""
+"You don&#39;t need to learn a whole new templating language to use Seam "
+"Mail&mdash;an email is just facelet!"
+msgstr "Você não precisará aprender uma completa nova liguagem de modelação para o uso do Seam Mail - um correio eletrônico é apenas um facelet."
+
+#. Tag: programlisting
+#: Mail.xml:21
+#, no-c-format
+msgid ""
+"&lt;m:message xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"    xmlns:m=\"http://jboss.com/products/seam/mail\"\n"
+"    xmlns:h=\"http://java.sun.com/jsf/html\"&gt;\n"
+"  \n"
+"    &lt;m:from name=\"Peter\" address=\"peter at example.com\" /&gt;\n"
+"    &lt;m:to name=\"#{person.firstname} #{person.lastname}\"&gt;#{person."
+"address}&lt;/m:to&gt;\n"
+"    &lt;m:subject&gt;Try out Seam!&lt;/m:subject&gt;\n"
+"    \n"
+"    &lt;m:body&gt;\n"
+"        &lt;p&gt;&lt;h:outputText value=\"Dear #{person.firstname}\" /&gt;,"
+"&lt;/p&gt;\n"
+"        &lt;p&gt;You can try out Seam by visiting \n"
+"        &lt;a href=\"http://labs.jboss.com/jbossseam\"&gt;http://labs.jboss."
+"com/jbossseam&lt;/a&gt;.&lt;/p&gt;\n"
+"        &lt;p&gt;Regards,&lt;/p&gt;\n"
+"        &lt;p&gt;Peter&lt;/p&gt;\n"
+"    &lt;/m:body&gt;\n"
+"    \n"
+"&lt;/m:message&gt;"
+msgstr ""
+"&lt;m:message xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"    xmlns:m=\"http://jboss.com/products/seam/mail\"\n"
+"    xmlns:h=\"http://java.sun.com/jsf/html\"&gt;\n"
+"  \n"
+"    &lt;m:from name=\"Peter\" address=\"peter at example.com\" /&gt;\n"
+"    &lt;m:to name=\"#{person.firstname} #{person.lastname}\"&gt;#{person."
+"address}&lt;/m:to&gt;\n"
+"    &lt;m:subject&gt;Try out Seam!&lt;/m:subject&gt;\n"
+"    \n"
+"    &lt;m:body&gt;\n"
+"        &lt;p&gt;&lt;h:outputText value=\"Dear #{person.firstname}\" /&gt;,"
+"&lt;/p&gt;\n"
+"        &lt;p&gt;You can try out Seam by visiting \n"
+"        &lt;a href=\"http://labs.jboss.com/jbossseam\"&gt;http://labs.jboss."
+"com/jbossseam&lt;/a&gt;.&lt;/p&gt;\n"
+"        &lt;p&gt;Regards,&lt;/p&gt;\n"
+"        &lt;p&gt;Peter&lt;/p&gt;\n"
+"    &lt;/m:body&gt;\n"
+"    \n"
+"&lt;/m:message&gt;"
+
+#. Tag: para
+#: Mail.xml:22
+#, no-c-format
+msgid ""
+"The <literal>&lt;m:message&gt;</literal> tag wraps the whole message, and "
+"tells Seam to start rendering an email. Inside the <literal>&lt;m:message&gt;"
+"</literal> tag we use an <literal>&lt;m:from&gt;</literal> tag to set who "
+"the message is from, a <literal>&lt;m:to&gt;</literal> tag to specify a "
+"sender (notice how we use EL as we would in a normal facelet), and a "
+"<literal>&lt;m:subject&gt;</literal> tag."
+msgstr ""
+"O caracter <literal>&lt;m:message&gt;</literal> envolve a mensagem completa, e diz para o Seam começar a processar um correio eletrônico. Dentro do caracter <literal>&lt;m:message&gt;"
+"</literal> nós podemos usar um caracter <literal>&lt;m:from&gt;</literal> para configurar da onde que a mensagem vem, o caracter <literal>&lt;m:to&gt;</literal> para especificar um enviador (perceba como usamos EL assim como usaríamos num facelet normal) e um caracter <literal>&lt;m:subject&gt;</literal>."
+
+#. Tag: para
+#: Mail.xml:25
+#, no-c-format
+msgid ""
+"The <literal>&lt;m:body&gt;</literal> tag wraps the body of the email. You "
+"can use regular HTML tags inside the body as well as JSF components."
+msgstr "O caracter <literal>&lt;m:body&gt;</literal> envolve o corpo do correio eletrônico. Você pode usar os caracteres HTML regulares dentro do corpo assim como os componentes JSF."
+
+#. Tag: para
+#: Mail.xml:28
+#, no-c-format
+msgid ""
+"So, now you have your email template, how do you go about sending it? Well, "
+"at the end of rendering the <literal>m:message</literal> the "
+"<literal>mailSession</literal> is called to send the email, so all you have "
+"to do is ask Seam to render the view:"
+msgstr "Agora você possui o seu modelo de correio eletrônico, e como será o envio do mesmo? Bem, no final do processamento da mensagem o <literal>m:message</literal> do <literal>mailSession</literal> é chamado para o envio do correio eletrônico. Desta maneira, tudo o que você precisa fazer é pedir ao Seam para processar a visualização:"
+
+#. Tag: programlisting
+#: Mail.xml:31
+#, no-c-format
+msgid ""
+"@In(create=true)\n"
+"private Renderer renderer;\n"
+"   \n"
+"public void send() {\n"
+"    try {\n"
+"       renderer.render(\"/simple.xhtml\");\n"
+"       facesMessages.add(\"Email sent successfully\");\n"
+"   } \n"
+"   catch (Exception e) {\n"
+"       facesMessages.add(\"Email sending failed: \" + e.getMessage());\n"
+"   }\n"
+"}"
+msgstr ""
+"@In(create=true)\n"
+"private Renderer renderer;\n"
+"   \n"
+"public void send() {\n"
+"    try {\n"
+"       renderer.render(\"/simple.xhtml\");\n"
+"       facesMessages.add(\"Email sent successfully\");\n"
+"   } \n"
+"   catch (Exception e) {\n"
+"       facesMessages.add(\"Email sending failed: \" + e.getMessage());\n"
+"   }\n"
+"}"
+
+#. Tag: para
+#: Mail.xml:32
+#, no-c-format
+msgid ""
+"If, for example, you entered an invalid email address, then an exception "
+"would be thrown, which is caught and then displayed to the user."
+msgstr "Por exemplo, você entrou um endereço de correio eletrônico inválido, então uma exceção será lançada que é retida e então exibida ao usuário."
+
+#. Tag: title
+#: Mail.xml:36
+#, no-c-format
+msgid "Attachments"
+msgstr "Anexos"
+
+#. Tag: para
+#: Mail.xml:37
+#, no-c-format
+msgid ""
+"Seam makes it easy to attach files to an email. It supports most of the "
+"standard java types used when working with files."
+msgstr "O Seam facilita a anexação de documentos pelo correio eletrônico. Ele suporta a maioria dos tipos java padrão usados quando trabalhando com arquivos."
+
+#. Tag: para
+#: Mail.xml:40
+#, no-c-format
+msgid "If you wanted to email the <literal>jboss-seam-mail.jar</literal>:"
+msgstr "Caso queira enviar uma mensagem eletrônica ao <literal>jboss-seam-mail.jar</literal>:"
+
+#. Tag: programlisting
+#: Mail.xml:43
+#, no-c-format
+msgid "&lt;m:attachment value=\"/WEB-INF/lib/jboss-seam-mail.jar\"/&gt;"
+msgstr "&lt;m:attachment value=\"/WEB-INF/lib/jboss-seam-mail.jar\"/&gt;"
+
+#. Tag: para
+#: Mail.xml:44
+#, no-c-format
+msgid ""
+"Seam will load the file from the classpath, and attach it to the email. By "
+"default it would be attached as <literal>jboss-seam-mail.jar</literal>; if "
+"you wanted it to have another name you would just add the <literal>fileName</"
+"literal> attribute:"
+msgstr ""
+"O Seam irá carregar o arquivo a partir da classpath e anexá-lo ao correio eletrônico. Por padrão, isto seria anexado como <literal>jboss-seam-mail.jar</literal>. Caso você queria que isto possua outro nome,você poderia apenas adicionar o atributo <literal>fileName</"
+"literal>:"
+
+#. Tag: programlisting
+#: Mail.xml:47
+#, no-c-format
+msgid ""
+"&lt;m:attachment value=\"/WEB-INF/lib/jboss-seam-mail.jar\" fileName=\"this-"
+"is-so-cool.jar\"/&gt;"
+msgstr ""
+"&lt;m:attachment value=\"/WEB-INF/lib/jboss-seam-mail.jar\" fileName=\"this-"
+"is-so-cool.jar\"/&gt;"
+
+#. Tag: para
+#: Mail.xml:48
+#, no-c-format
+msgid ""
+"You could also attach a <literal>java.io.File</literal>, a <literal>java.net."
+"URL</literal>:"
+msgstr ""
+"Você podria ainda anexar o <literal>java.io.File</literal>, e o <literal>java.net."
+"URL</literal>:"
+
+#. Tag: programlisting
+#: Mail.xml:51
+#, no-c-format
+msgid "&lt;m:attachment value=\"#{numbers}\"/&gt;"
+msgstr "&lt;m:attachment value=\"#{numbers}\"/&gt;"
+
+#. Tag: para
+#: Mail.xml:52
+#, no-c-format
+msgid "Or a <literal>byte[]</literal> or a <literal>java.io.InputStream</literal>:"
+msgstr "Ou um <literal>byte[]</literal>, ou ainda um <literal>java.io.InputStream</literal>:"
+
+#. Tag: programlisting
+#: Mail.xml:55
+#, no-c-format
+msgid "&lt;m:attachment value=\"#{person.photo}\" contentType=\"image/png\"/&gt;"
+msgstr "&lt;m:attachment value=\"#{person.photo}\" contentType=\"image/png\"/&gt;"
+
+#. Tag: para
+#: Mail.xml:56
+#, no-c-format
+msgid ""
+"You&#39;ll notice that for a <literal>byte[]</literal> and a <literal>java."
+"io.InputStream</literal> you need to specify the MIME type of the attachment "
+"(as that information is not carried as part of the file)."
+msgstr ""
+"Você perceberá que para um <literal>byte[]</literal> e um <literal>java."
+"io.InputStream</literal> é necessário especificar o tipo MIME do anexo (uma vez que esta informação não faz parte do arquivo)."
+
+#. Tag: para
+#: Mail.xml:59
+#, no-c-format
+msgid ""
+"And it gets even better, you can attach a Seam generated PDF, or any "
+"standard JSF view, just by wrapping a <literal>&lt;m:attachment&gt;</"
+"literal> around the normal tags you would use:"
+msgstr ""
+"Você pode anexar o PDF gerado pelo Seam ou qualquer visualização JSF padrão, apenas empacotando um <literal>&lt;m:attachment&gt;</"
+"literal> ao redor dos caracteres normais:"
+
+#. Tag: programlisting
+#: Mail.xml:62
+#, no-c-format
+msgid ""
+"&lt;m:attachment fileName=\"tiny.pdf\"&gt;\n"
+"    &lt;p:"
+"document&gt;                                                      \n"
+"        A very tiny "
+"PDF                                                                                                \n"
+"    &lt;/p:document&gt;\n"
+"&lt;/m:attachment&gt;"
+msgstr ""
+"&lt;m:attachment fileName=\"tiny.pdf\"&gt;\n"
+"    &lt;p:"
+"document&gt;                                                      \n"
+"        A very tiny "
+"PDF                                                                                                \n"
+"    &lt;/p:document&gt;\n"
+"&lt;/m:attachment&gt;"
+
+#. Tag: para
+#: Mail.xml:63
+#, no-c-format
+msgid ""
+"If you had a set of files you wanted to attach (for example a set of "
+"pictures loaded from a database) you can just use a <literal>&lt;ui:"
+"repeat&gt;</literal>:"
+msgstr ""
+"Caso você tenha um conjunto de arquivos que queira anexar (por exemplo um conjunto de figuras carregadas a partir do banco de dados) você pode usar um <literal>&lt;ui:"
+"repeat&gt;</literal>:"
+
+#. Tag: programlisting
+#: Mail.xml:66
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{people}\" var=\"person\"&gt;\n"
+"    &lt;m:attachment value=\"#{person.photo}\" contentType=\"image/jpeg\"\n"
+"    fileName=\"#{person.firstname}_#{person.lastname}.jpg\"/&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+"&lt;ui:repeat value=\"#{people}\" var=\"person\"&gt;\n"
+"    &lt;m:attachment value=\"#{person.photo}\" contentType=\"image/jpeg\"\n"
+"    fileName=\"#{person.firstname}_#{person.lastname}.jpg\"/&gt;\n"
+"&lt;/ui:repeat&gt;"
+
+#. Tag: title
+#: Mail.xml:70
+#, no-c-format
+msgid "HTML/Text alternative part"
+msgstr "Parte alternativa do Texto/HTML"
+
+#. Tag: para
+#: Mail.xml:71
+#, no-c-format
+msgid ""
+"Whilst most mail readers nowadays support HTML, some don&#39;t, so you can "
+"add a plain text alternative to your email body:"
+msgstr "Enquanto a maioria dos leitores de correio suportam atualmente HTML, outros não o suportam, desta forma você pode adicionar um texto plano alternativo ao corpo de seu correio eletrônico:"
+
+#. Tag: programlisting
+#: Mail.xml:74
+#, no-c-format
+msgid ""
+"&lt;m:body&gt;\n"
+"    &lt;f:facet name=\"alternative\"&gt;Sorry, your email reader can&#39;t "
+"show our fancy email, \n"
+"please go to http://labs.jboss.com/jbossseam to explore Seam.&lt;/f:"
+"facet&gt;\n"
+"&lt;/m:body&gt;"
+msgstr ""
+"&lt;m:body&gt;\n"
+"    &lt;f:facet name=\"alternative\"&gt;Sorry, your email reader can&#39;t "
+"show our fancy email, \n"
+"please go to http://labs.jboss.com/jbossseam to explore Seam.&lt;/f:"
+"facet&gt;\n"
+"&lt;/m:body&gt;"
+
+#. Tag: title
+#: Mail.xml:78
+#, no-c-format
+msgid "Multiple recipients"
+msgstr "Recipientes múltiplos"
+
+#. Tag: para
+#: Mail.xml:79
+#, no-c-format
+msgid ""
+"Often you&#39;ll want to send an email to a group of recipients (for example "
+"your users). All of the recipient mail tags can be placed inside a "
+"<literal>&lt;ui:repeat&gt;</literal>:"
+msgstr "Normalmente você precisará enviar uma mensagem eletrônica a grupo de recipientes (por exemplo seus usuários). Todos os caracteres de correio do recipiente podem ser colocados dentro de um <literal>&lt;ui:repeat&gt;</literal>:"
+
+#. Tag: programlisting
+#: Mail.xml:82
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{allUsers} var=\"user\"&gt;\n"
+"    &lt;m:to name=\"#{user.firstname} #{user.lastname}\" address=\"#{user."
+"emailAddress}\" /&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+"&lt;ui:repeat value=\"#{allUsers} var=\"user\"&gt;\n"
+"    &lt;m:to name=\"#{user.firstname} #{user.lastname}\" address=\"#{user."
+"emailAddress}\" /&gt;\n"
+"&lt;/ui:repeat&gt;"
+
+#. Tag: title
+#: Mail.xml:86
+#, no-c-format
+msgid "Multiple messages"
+msgstr "Mensagens múltiplas"
+
+#. Tag: para
+#: Mail.xml:87
+#, no-c-format
+msgid ""
+"Sometimes, however, you need to send a slightly different message to each "
+"recipient (e.g. a password reset). The best way to do this is to place the "
+"whole message inside a <literal>&lt;ui:repeat&gt;</literal>:"
+msgstr "Às vezes, você precisa enviar uma mensagem um pouco diferente para cada recipiente (por exemplo; a redefinição de uma senha). A melhor maneira de se realizar isto é colocar a mensagem inteira dentro de um <literal>&lt;ui:repeat&gt;</literal>:"
+
+#. Tag: programlisting
+#: Mail.xml:90
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{people}\" var=\"p\"&gt;\n"
+"    &lt;m:message&gt;\n"
+"        &lt;m:from name=\"#{person.firstname} #{person.lastname}\"&gt;#"
+"{person.address}&lt;/m:from&gt;\n"
+"        &lt;m:to name=\"#{p.firstname}\"&gt;#{p.address}&lt;/m:to&gt;\n"
+"            ...\n"
+"    &lt;/m:message&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+"&lt;ui:repeat value=\"#{people}\" var=\"p\"&gt;\n"
+"    &lt;m:message&gt;\n"
+"        &lt;m:from name=\"#{person.firstname} #{person.lastname}\"&gt;#"
+"{person.address}&lt;/m:from&gt;\n"
+"        &lt;m:to name=\"#{p.firstname}\"&gt;#{p.address}&lt;/m:to&gt;\n"
+"            ...\n"
+"    &lt;/m:message&gt;\n"
+"&lt;/ui:repeat&gt;"
+
+#. Tag: title
+#: Mail.xml:94
+#, no-c-format
+msgid "Templating"
+msgstr "Modelação"
+
+#. Tag: para
+#: Mail.xml:95
+#, no-c-format
+msgid ""
+"The mail templating example shows that facelets templating Just Works with "
+"the Seam mail tags."
+msgstr "A amostra de modelação de correio apresenta que a modelação facelets apenas trabalha com os caracteres de correio Seam."
+
+#. Tag: para
+#: Mail.xml:98
+#, no-c-format
+msgid "Our <literal>template.xhtml</literal> contains:"
+msgstr "Nosso <literal>template.xhtml</literal> contém:"
+
+#. Tag: programlisting
+#: Mail.xml:101
+#, no-c-format
+msgid ""
+"&lt;m:message&gt;\n"
+"   &lt;m:from name=\"Seam\" address=\"do-not-reply at jboss.com\" /&gt;\n"
+"   &lt;m:to name=\"#{person.firstname} #{person.lastname}\"&gt;#{person."
+"address}&lt;/m:to&gt;\n"
+"   &lt;m:subject&gt;#{subject}&lt;/m:subject&gt;\n"
+"   &lt;m:body&gt;\n"
+"       &lt;html&gt;\n"
+"           &lt;body&gt;\n"
+"               &lt;ui:insert name=\"body\"&gt;This is the default body, "
+"specified by the template.\n"
+"                                   &lt;/ui:insert&gt;\n"
+"           &lt;/body&gt;\n"
+"       &lt;/html&gt;\n"
+"   &lt;/m:body&gt;\n"
+"&lt;/m:message&gt;"
+msgstr ""
+"&lt;m:message&gt;\n"
+"   &lt;m:from name=\"Seam\" address=\"do-not-reply at jboss.com\" /&gt;\n"
+"   &lt;m:to name=\"#{person.firstname} #{person.lastname}\"&gt;#{person."
+"address}&lt;/m:to&gt;\n"
+"   &lt;m:subject&gt;#{subject}&lt;/m:subject&gt;\n"
+"   &lt;m:body&gt;\n"
+"       &lt;html&gt;\n"
+"           &lt;body&gt;\n"
+"               &lt;ui:insert name=\"body\"&gt;This is the default body, "
+"specified by the template.\n"
+"                                   &lt;/ui:insert&gt;\n"
+"           &lt;/body&gt;\n"
+"       &lt;/html&gt;\n"
+"   &lt;/m:body&gt;\n"
+"&lt;/m:message&gt;"
+
+#. Tag: para
+#: Mail.xml:102
+#, no-c-format
+msgid "Our <literal>templating.xhtml</literal> contains:"
+msgstr "Nosso <literal>templating.xhtml</literal> contém:"
+
+#. Tag: programlisting
+#: Mail.xml:105
+#, no-c-format
+msgid ""
+"&lt;ui:param name=\"subject\" value=\"Templating with Seam Mail\"/&gt;\n"
+"&lt;ui:define name=\"body\"&gt;\n"
+"    &lt;p&gt;This example demonstrates that you can easily use &lt;i&gt;"
+"facelets templating&lt;/i&gt; in email!&lt;/p&gt;\n"
+"&lt;/ui:define&gt;"
+msgstr ""
+"&lt;ui:param name=\"subject\" value=\"Templating with Seam Mail\"/&gt;\n"
+"&lt;ui:define name=\"body\"&gt;\n"
+"    &lt;p&gt;This example demonstrates that you can easily use &lt;i&gt;"
+"facelets templating&lt;/i&gt; in email!&lt;/p&gt;\n"
+"&lt;/ui:define&gt;"
+
+#. Tag: title
+#: Mail.xml:109
+#, no-c-format
+msgid "Internationalisation"
+msgstr "Intercionalização"
+
+#. Tag: para
+#: Mail.xml:110
+#, no-c-format
+msgid ""
+"Seam supports sending internationalised messages. By default, the encoding "
+"provided by JSF is used, but this can be overridden on the template:"
+msgstr "O Seam suporta o envio de mensagens intercionalizadas. Por padrão, a codificação fornecida pelo JSF é utilizada, porém pode ser substituída no modelo:"
+
+#. Tag: programlisting
+#: Mail.xml:113
+#, no-c-format
+msgid ""
+"&lt;m:message charset=\"UTF-8\"&gt;\n"
+"   ...\n"
+"&lt;/m:message&gt;"
+msgstr ""
+"&lt;m:message charset=\"UTF-8\"&gt;\n"
+"   ...\n"
+"&lt;/m:message&gt;"
+
+#. Tag: para
+#: Mail.xml:114
+#, no-c-format
+msgid ""
+"The body, subject and recipient (and from) name will be encoded. You&#39;ll "
+"need to make sure facelets uses the correct charset for parsing your pages "
+"by setting encoding of the template:"
+msgstr "O corpo, assunto e o nome do recipiente serão codificados. Você precisará ter certeza que o facelets usa o correto conjunto de caracteres para a análise de suas páginas, configurando a codificação do modelo:"
+
+#. Tag: programlisting
+#: Mail.xml:117
+#, no-c-format
+msgid "&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;"
+msgstr "&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;"
+
+#. Tag: title
+#: Mail.xml:121
+#, no-c-format
+msgid "Other Headers"
+msgstr "Outros Cabeçalhos"
+
+#. Tag: para
+#: Mail.xml:122
+#, no-c-format
+msgid ""
+"Sometimes you&#39;ll want to add other headers to your email. Seam provides "
+"support for some (see <xref linkend=\"Seam_Reference_Guide-Email-Tags\"/>). "
+"For example, we can set the importance of the email, and ask for a read "
+"receipt:"
+msgstr "Às vezes você precisará adicionar outros cabeçalhos ao seu correio eletrônico. O Seam fornece suporte para alguns (consulte <xref linkend=\"Seam_Reference_Guide-Email-Tags\"/>). Por exemplo, podemos a importância do correio eletrônico e perguntar por uma confirmação de leitura:"
+
+#. Tag: programlisting
+#: Mail.xml:125
+#, no-c-format
+msgid ""
+"&lt;m:message xmlns:m=\"http://jboss.com/products/seam/mail\"\n"
+"           importance=\"low\"\n"
+"           requestReadReceipt=\"true\"/&gt;"
+msgstr ""
+"&lt;m:message xmlns:m=\"http://jboss.com/products/seam/mail\"\n"
+"           importance=\"low\"\n"
+"           requestReadReceipt=\"true\"/&gt;"
+
+#. Tag: para
+#: Mail.xml:126
+#, no-c-format
+msgid ""
+"Otherise you can add any header to the message using the <literal>&lt;m:"
+"header&gt;</literal> tag:"
+msgstr ""
+"Ou então você pode adcicionar qualquer cabeçalho a mensagem usando o caracter <literal>&lt;m:"
+"header&gt;</literal>:"
+
+#. Tag: programlisting
+#: Mail.xml:129
+#, no-c-format
+msgid "&lt;m:header name=\"X-Sent-From\" value=\"JBoss Seam\"/&gt;"
+msgstr "&lt;m:header name=\"X-Sent-From\" value=\"JBoss Seam\"/&gt;"
+
+#. Tag: title
+#: Mail.xml:135
+#, no-c-format
+msgid "Receiving emails"
+msgstr "Recebimento de correio eletrônico"
+
+#. Tag: para
+#: Mail.xml:136
+#, no-c-format
+msgid ""
+"If you are using EJB then you can use a MDB (Message Driven Bean) to receive "
+"email. Seam comes with an improved version of <literal>mail-ra.rar</literal> "
+"as distributed in JBoss AS; until the improvements make there way into a "
+"released version of JBoss AS, replacing the default <literal>rar</literal> "
+"with the one distributed with Seam is recommended."
+msgstr "Caso você esteja usando o EJB, então você poderá usar o MDB (Message driven Bean - Bean Dirigido de Mensagem). O Seam vem com uma versão aperfeiçoada do <literal>mail-ra.rar</literal> como distribuído no JBoss AS, até que os aperfeiçoamentos caminhem em direção da versão liberada do JBoss AS. É recomendada a substituição do padão <literal>rar</literal> com aquele distribuído com o Seam. "
+
+#. Tag: para
+#: Mail.xml:139
+#, no-c-format
+msgid "You can configure it like this:"
+msgstr "Você poderá configurá-lo desta forma:"
+
+#. Tag: programlisting
+#: Mail.xml:142
+#, no-c-format
+msgid ""
+"@MessageDriven(activationConfig={\n"
+"         @ActivationConfigProperty(propertyName=\"mailServer\", "
+"propertyValue=\"localhost\"),\n"
+"         @ActivationConfigProperty(propertyName=\"mailFolder\", "
+"propertyValue=\"INBOX\"),\n"
+"         @ActivationConfigProperty(propertyName=\"storeProtocol\", "
+"propertyValue=\"pop3\"),\n"
+"         @ActivationConfigProperty(propertyName=\"userName\", propertyValue="
+"\"seam\"),\n"
+"         @ActivationConfigProperty(propertyName=\"password\", propertyValue="
+"\"seam\")\n"
+"})\n"
+"@ResourceAdapter(\"mail-ra.rar\")\n"
+"@Name(\"mailListener\")\n"
+"public class MailListenerMDB implements MailListener {\n"
+"\n"
+"   @In(create=true)\n"
+"   private OrderProcessor orderProcessor;\n"
+"\n"
+"   public void onMessage(Message message) {\n"
+"      // Process the message\n"
+"      orderProcessor.process(message.getSubject());\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+"@MessageDriven(activationConfig={\n"
+"         @ActivationConfigProperty(propertyName=\"mailServer\", "
+"propertyValue=\"localhost\"),\n"
+"         @ActivationConfigProperty(propertyName=\"mailFolder\", "
+"propertyValue=\"INBOX\"),\n"
+"         @ActivationConfigProperty(propertyName=\"storeProtocol\", "
+"propertyValue=\"pop3\"),\n"
+"         @ActivationConfigProperty(propertyName=\"userName\", propertyValue="
+"\"seam\"),\n"
+"         @ActivationConfigProperty(propertyName=\"password\", propertyValue="
+"\"seam\")\n"
+"})\n"
+"@ResourceAdapter(\"mail-ra.rar\")\n"
+"@Name(\"mailListener\")\n"
+"public class MailListenerMDB implements MailListener {\n"
+"\n"
+"   @In(create=true)\n"
+"   private OrderProcessor orderProcessor;\n"
+"\n"
+"   public void onMessage(Message message) {\n"
+"      // Process the message\n"
+"      orderProcessor.process(message.getSubject());\n"
+"   }\n"
+"   \n"
+"}"
+
+#. Tag: para
+#: Mail.xml:143
+#, no-c-format
+msgid ""
+"Each message received will cause <literal>onMessage(Message message)</"
+"literal> to be called. Most seam annotations will work inside a MDB but you "
+"musn&#39;t access the persistence context."
+msgstr ""
+"Cada mensagem recebida irá causar <literal>onMessage(Message message)</"
+"literal> a ser chamado. A maioria das anotações Seam irão trabalhar dentro de um MDB, mas você não poderá acessar o contexto da persistência."
+
+#. Tag: para
+#: Mail.xml:146
+#, no-c-format
+msgid ""
+"You can find more information on the default <literal>mail-ra.rar</literal> "
+"at <ulink url=\"http://wiki.jboss.org/wiki/Wiki.jsp?page=InboundJavaMail"
+"\">http://wiki.jboss.org/wiki/Wiki.jsp?page=InboundJavaMail</ulink>. The "
+"version distributed with Seam also includes a <literal>debug</literal> "
+"property to enable JavaMail debugging, a <literal>flush</literal> property "
+"(by default true) to disable flushing a <literal>POP3</literal> mailbox "
+"after successfullying delivering a message to your MDB and a <literal>port</"
+"literal> property to override the default TCP port. Beware that the api for "
+"this may be altered as changes make there way into JBoss AS."
+msgstr ""
+"Você poderá encontra mais informações no padrão <literal>mail-ra.rar</literal> do <ulink url=\"http://wiki.jboss.org/wiki/Wiki.jsp?page=InboundJavaMail"
+"\">http://wiki.jboss.org/wiki/Wiki.jsp?page=InboundJavaMail</ulink>. A versão distribuída com o Seam também incluirá uma propriedade <literal>debug</literal> para capacitar a depuração JavaMail, uma propriedade <literal>flush</literal> (por verdadeiro padrão) para desativar a movimentação de uma caixa de correio <literal>POP3</literal>, após a entrega com sucesso da mensagem para seu MDB e uma propriedade <literal>port</"
+"literal> para substituição do padrão porto TCP. Esteja ciente de que o api para este procedimento poderá ser alterado uma vez que as mudanças estão direcionando-se ao JBoss AS."
+
+#. Tag: para
+#: Mail.xml:149
+#, no-c-format
+msgid ""
+"If you aren&#39;t using JBoss AS you can still use <literal>mail-ra.rar</"
+"literal> (included with Seam in the mail directory), or you may find your "
+"application server includes a similar adapter."
+msgstr ""
+"Caso não esteja usando o JBoss AS, você poderá continuar usando o <literal>mail-ra.rar</"
+"literal> (incluído com Seam num diretório de correio), ou você poderá encontrar que seu servidor de aplicativo inclui um adaptador similar."
+
+#. Tag: title
+#: Mail.xml:155
+#, no-c-format
+msgid "Configuration"
+msgstr "Configuração"
+
+#. Tag: para
+#: Mail.xml:156
+#, no-c-format
+msgid ""
+"To include Email support in your application, include <literal>jboss-seam-"
+"mail.jar</literal> in your WEB-INF/lib directory. If you are using JBoss AS "
+"there is no further configuration needed to use Seam&#39;s email support. "
+"Otherwise you need to make sure you have the JavaMail API, an implementation "
+"of the JavaMail API present (the API and impl used in JBoss AS are "
+"distributed with seam as <literal>lib/mail.jar</literal>), and a copy of the "
+"Java Activation Framework (distributed with seam as <literal>lib/activation."
+"jar</literal>."
+msgstr ""
+"Para incluir suporte ao correio eletrônico em seu aplicativo, inclua o <literal>jboss-seam-"
+"mail.jar</literal> em seu diretório da WEB-INF/lib. Caso você esteja usando o JBoss AS, não há necessidade de uma configuração futura para o uso do suporte do correio eletrônico de Seam. Por outro lado, você precisa ter certeza que possui o JavaMail API, uma implementação do presente JavaMail API (o API e implementação usada no JBoss AS são distribuídos com o Seam como <literal>lib/mail.jar</literal>), e uma cópia do Sistema de Ativação Java (distribuído com Seam como <literal>lib/activation."
+"jar</literal>."
+
+#. Tag: para
+#: Mail.xml:159
+#, no-c-format
+msgid ""
+"The Seam Email module requires the use of Facelets as the view technology. "
+"Future versions of the library may also support the use of JSP. "
+"Additionally, it requires the use of the seam-ui package."
+msgstr "O módulo de Correio Eletrônico de Seam requer o uso dos Facelets como uma tecnologia de informação. Versões futuras da biblioteca talvez suportem o uso de JSP. além disso, isto requer o uso do pacote de seam_ui."
+
+#. Tag: para
+#: Mail.xml:162
+#, no-c-format
+msgid ""
+"The <literal>mailSession</literal> component uses JavaMail to talk to a &#39;"
+"real&#39; SMTP server."
+msgstr ""
+"O componente <literal>mailSession</literal> usa o JavaMail para conversar com um servidor SMTP &#39;"
+"real&#39;."
+
+#. Tag: literal
+#: Mail.xml:166
+#, no-c-format
+msgid "mailSession"
+msgstr "mailSession"
+
+#. Tag: para
+#: Mail.xml:167
+#, no-c-format
+msgid ""
+"A JavaMail Session may be available via a JNDI lookup if you are working in "
+"an JEE environment or you can use a Seam configured Session."
+msgstr "A Seção JavaMail poderá estar disponível através de uma verificação, caso você esteja trabalhando em um ambiente JEE ou você pode usar uma Seção configurada pelo Seam."
+
+#. Tag: para
+#: Mail.xml:170
+#, no-c-format
+msgid ""
+"The mailSession component&#39;s properties are described in more detail in "
+"<xref linkend=\"Seam_Reference_Guide-Built_in_Seam_components-"
+"Mail_related_components\"/>."
+msgstr ""
+"As propriedades de componente do mailSession são descritas em maiores detalhes no <xref linkend=\"Seam_Reference_Guide-Built_in_Seam_components-"
+"Mail_related_components\"/>."
+
+#. Tag: title
+#: Mail.xml:174
+#, no-c-format
+msgid "JNDI lookup in JBoss AS"
+msgstr "Consulta JNDI em JBoss AS"
+
+#. Tag: para
+#: Mail.xml:175
+#, no-c-format
+msgid ""
+"The JBossAS <literal>deploy/mail-service.xml</literal> configures a JavaMail "
+"session binding into JNDI. The default service configuration will need "
+"altering for your network. <ulink url=\"http://wiki.jboss.org/wiki/Wiki.jsp?"
+"page=JavaMail\">http://wiki.jboss.org/wiki/Wiki.jsp?page=JavaMail</ulink> "
+"describes the service in more detail."
+msgstr ""
+"O JBossAS <literal>deploy/mail-service.xml</literal> configura uma binding de sessão JavaMail no JNDI. A configuração de serviço padrão precisará ser alterada para a sua rede. <ulink url=\"http://wiki.jboss.org/wiki/Wiki.jsp?"
+"page=JavaMail\">http://wiki.jboss.org/wiki/Wiki.jsp?page=JavaMail</ulink> descreve o serviço em maiores detalhes."
+
+#. Tag: programlisting
+#: Mail.xml:178
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"        xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"        xmlns:mail=\"http://jboss.com/products/seam/mail\"&gt;\n"
+"        \n"
+"    &lt;mail:mail-session session-jndi-name=\"java:/Mail\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"        xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"        xmlns:mail=\"http://jboss.com/products/seam/mail\"&gt;\n"
+"        \n"
+"    &lt;mail:mail-session session-jndi-name=\"java:/Mail\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Mail.xml:179
+#, no-c-format
+msgid ""
+"Here we tell Seam to get the mail session bound to <literal>java:/Mail</"
+"literal> from JNDI."
+msgstr ""
+"Neste caso dizemos ao Seam para pegar a acoplada sessão de correio para <literal>java:/Mail</"
+"literal> a partir do JNDI."
+
+#. Tag: title
+#: Mail.xml:185
+#, no-c-format
+msgid "Seam configured Session"
+msgstr "Sessão configurada pelo Seam"
+
+#. Tag: para
+#: Mail.xml:186
+#, no-c-format
+msgid ""
+"A mail session can be configured via <literal>components.xml</literal>. Here "
+"we tell Seam to use <literal>smtp.example.com</literal> as the smtp server,"
+msgstr "Uma sessão de correio pode ser configurada através dos <literal>components.xml</literal>. Desta vez, dizemos ao Seam para usar o <literal>smtp.example.com</literal> como o servidor smtp;"
+
+#. Tag: programlisting
+#: Mail.xml:189
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"        xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"        xmlns:mail=\"http://jboss.com/products/seam/mail\"&gt;\n"
+"        \n"
+"    &lt;mail:mail-session host=\"smtp.example.com\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"        xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"        xmlns:mail=\"http://jboss.com/products/seam/mail\"&gt;\n"
+"        \n"
+"    &lt;mail:mail-session host=\"smtp.example.com\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+
+#. Tag: title
+#: Mail.xml:197
+#, no-c-format
+msgid "Tags"
+msgstr "Caracteres"
+
+#. Tag: para
+#: Mail.xml:198
+#, no-c-format
+msgid ""
+"Emails are generated using tags in the <literal>http://jboss.com/products/"
+"seam/mail</literal> namespace. Documents should always have the "
+"<literal>message</literal> tag at the root of the message. The message tag "
+"prepares Seam to generate an email."
+msgstr ""
+"Os correios eletrônicos são gerados usando caracteres no espaço do nome <literal>http://jboss.com/products/"
+"seam/mail</literal>. Os documentos devem sempre possuir o caracter <literal>message</literal> na raiz da mensagem. O caracter mensagem prepara o Seam para gerar um correio eletrônico."
+
+#. Tag: para
+#: Mail.xml:201
+#, no-c-format
+msgid ""
+"The standard templating tags of facelets can be used as normal. Inside the "
+"body you can use any JSF tag which doesn&#39;t require access to external "
+"resources (stylesheets, javascript)."
+msgstr "Os caracteres e modelação padrão dos facelets podem ser usados normalmente. Dentro do corpo, você pode usar qualquer caracter JSF que não solicita qualquer acesso aos recursos externos (stylesheets, javascript)."
+
+#. Tag: term
+#: Mail.xml:206
+#, no-c-format
+msgid "&lt;m:message&gt;"
+msgstr "&lt;m:message&gt;"
+
+#. Tag: para
+#: Mail.xml:208
+#, no-c-format
+msgid "Root tag of a mail message"
+msgstr "Caracter da raiz de uma mensagem de correio"
+
+#. Tag: para
+#: Mail.xml:213
+#, no-c-format
+msgid ""
+"<literal>importance</literal> &mdash; low, normal or high. By default "
+"normal, this sets the importance of the mail message."
+msgstr "<literal>importância</literal> &mdash; abaixo, normal ou alto. Pelo padrão normal, isto determina a importância da mensagem de correio. "
+
+#. Tag: para
+#: Mail.xml:218
+#, no-c-format
+msgid ""
+"<literal>precedence</literal> &mdash; sets the precedence of the message (e."
+"g. bulk)."
+msgstr "<literal>procedência</literal> &mdash; determina a precedência da mensagem (por exemplo: volume)."
+
+#. Tag: para
+#: Mail.xml:223
+#, no-c-format
+msgid ""
+"<literal>requestReadReceipt</literal> &mdash; by default false, if set, a "
+"read receipt will be request will be added, with the read receipt being sent "
+"to the <literal>From:</literal> address."
+msgstr "<literal>requestReadReceipt</literal> &mdash; pelo padrão falso, caso configurada, a confirmação da leitura será adicionada com a confirmação de leitura que foi enviada para o endereço <literal>From:</literal>."
+
+#. Tag: para
+#: Mail.xml:228
+#, no-c-format
+msgid ""
+"<literal>urlBase</literal> &mdash; If set, the value is prepended to the "
+"<literal>requestContextPath</literal> allowing you to use components such as "
+"<literal>&lt;h:graphicImage&gt;</literal> in your emails."
+msgstr ""
+"<literal>urlBase</literal> &mdash; Caso configurado, o valor é acrescentado no começo do "
+"<literal>requestContextPath</literal> permitindo que você use componentes como <literal>&lt;h:graphicImage&gt;</literal> em seus correios eletrônicos."
+
+#. Tag: term
+#: Mail.xml:236
+#, no-c-format
+msgid "&lt;m:from&gt;"
+msgstr "&lt;m:from&gt;"
+
+#. Tag: para
+#: Mail.xml:238
+#, no-c-format
+msgid ""
+"Set&#39;s the From: address for the email. You can only have one of these "
+"per email."
+msgstr "Define o De: endereço para o correio eletrônico. Você pode possuir apenas um deste por correio eletrônico."
+
+#. Tag: para
+#: Mail.xml:243
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the name the email should come from."
+msgstr "<literal>nome</literal> &mdash; o nome do correio eletrônico deve vir a partir de."
+
+#. Tag: para
+#: Mail.xml:248 Mail.xml:263
+#, no-c-format
+msgid ""
+"<literal>address</literal> &mdash; the email address the email should come "
+"from."
+msgstr "<literal>endereço</literal> &mdash; o endereço do correio eletrônico que deve vir de."
+
+#. Tag: term
+#: Mail.xml:256
+#, no-c-format
+msgid "&lt;m:replyTo&gt;"
+msgstr "&lt;m:replyTo&gt;"
+
+#. Tag: para
+#: Mail.xml:258
+#, no-c-format
+msgid ""
+"Set&#39;s the Reply-to: address for the email. You can only have one of "
+"these per email."
+msgstr "Define o Responder-para: endereço por correio eletrônico. Você pode possuir apenas um deste por correio eletrônico."
+
+#. Tag: term
+#: Mail.xml:271
+#, no-c-format
+msgid "&lt;m:to&gt;"
+msgstr "&lt;m:to&gt;"
+
+#. Tag: para
+#: Mail.xml:273
+#, no-c-format
+msgid ""
+"Add a recipient to the email. Use multiple &lt;m:to&gt; tags for multiple "
+"recipients. This tag can be safely placed inside a repeat tag such as &lt;ui:"
+"repeat&gt;."
+msgstr ""
+"Adicione um recipiente ao correio eletrônico. Use múltiplos caracteres &lt;m:to&gt; para múltiplos recipientes. Este caracter pode ser seguramente colocado dentro de um caracter repetido, como por exemplo &lt;ui:"
+"repeat&gt;."
+
+#. Tag: para
+#: Mail.xml:278 Mail.xml:298 Mail.xml:318
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the name of the recipient."
+msgstr "<literal>nome</literal> &mdash; o nome do recipiente."
+
+#. Tag: para
+#: Mail.xml:283 Mail.xml:303 Mail.xml:323
+#, no-c-format
+msgid "<literal>address</literal> &mdash; the email address of the recipient."
+msgstr "<literal>endereço</literal> &mdash; o endereço do correio eletrônico do recipiente."
+
+#. Tag: term
+#: Mail.xml:291
+#, no-c-format
+msgid "&lt;m:cc&gt;"
+msgstr "&lt;m:cc&gt;"
+
+#. Tag: para
+#: Mail.xml:293
+#, no-c-format
+msgid ""
+"Add a cc recipient to the email. Use multiple &lt;m:cc&gt; tags for multiple "
+"ccs. This tag can be safely placed inside a repeat tag such as &lt;ui:"
+"repeat&gt;."
+msgstr ""
+"Adicione uma cópia ao correio eletrônico do recipiente. Use caracteres múltiplos &lt;m:cc&gt; para cópias múltiplas. Este caracter pode ser colocado seguramente dentro de um caracter repetido, como por exemplo &lt;ui:"
+"repeat&gt;."
+
+#. Tag: term
+#: Mail.xml:311
+#, no-c-format
+msgid "&lt;m:bcc&gt;"
+msgstr "&lt;m:bcc&gt;"
+
+#. Tag: para
+#: Mail.xml:313
+#, no-c-format
+msgid ""
+"Add a bcc recipient to the email. Use multiple &lt;m:bcc&gt; tags for "
+"multiple bccs. This tag can be safely placed inside a repeat tag such as &lt;"
+"ui:repeat&gt;."
+msgstr ""
+"Adicione uma cópia oculta para o correio eletrônico do recipiente. Use caracteres múltiplos &lt;m:bcc&gt; para múltiplas cópias ocultas. Este caracter pode ser seguramente colocado dentro de um caracter repetido, como por exemplo &lt;"
+"ui:repeat&gt;."
+
+#. Tag: term
+#: Mail.xml:331
+#, no-c-format
+msgid "&lt;m:header&gt;"
+msgstr "&lt;m:header&gt;"
+
+#. Tag: para
+#: Mail.xml:333
+#, no-c-format
+msgid "Add a header to the email (e.g. <literal>X-Sent-From: JBoss Seam</literal>"
+msgstr "Adicione o cabeçalho ao correio eletrônico (por exemplo: <literal>X-Sent-From: JBoss Seam</literal>)."
+
+#. Tag: para
+#: Mail.xml:338
+#, no-c-format
+msgid ""
+"<literal>name</literal> &mdash; The name of the header to add (e.g. "
+"<literal>X-Sent-From</literal>)."
+msgstr "<literal>nome</literal> &mdash; O nome do cabeçalho a ser adicionado (por exemplo: <literal>X-Sent-From</literal>)."
+
+#. Tag: para
+#: Mail.xml:343
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; The value of the header to add (e.g. "
+"<literal>JBoss Seam</literal>)."
+msgstr ""
+"<literal>valor</literal> &mdash; O valor do cabeçalho a ser adicionado (por exemplo: "
+"<literal>JBoss Seam</literal>)."
+
+#. Tag: term
+#: Mail.xml:351
+#, no-c-format
+msgid "&lt;m:attachment&gt;"
+msgstr "&lt;m:attachment&gt;"
+
+#. Tag: para
+#: Mail.xml:353
+#, no-c-format
+msgid "Add an attachment to the email."
+msgstr "Adicionar um anexo ao correio eletrônico."
+
+#. Tag: para
+#: Mail.xml:358
+#, no-c-format
+msgid "<literal>value</literal> &mdash; The file to attach:"
+msgstr "<literal>value</literal> &mdash; O arquivo a ser anexado: "
+
+#. Tag: para
+#: Mail.xml:363
+#, no-c-format
+msgid ""
+"<literal>String</literal> &mdash; A <literal>String</literal> is interpreted "
+"as a path to file within the classpath"
+msgstr "<literal>Linha</literal> &mdash; Uma <literal>Linha</literal> é interpretada como um caminho ao<literal>java.io.File</literal> &mdash; arquivo com a classpath."
+
+#. Tag: para
+#: Mail.xml:368
+#, no-c-format
+msgid ""
+"<literal>java.io.File</literal> &mdash; An EL expression can reference a "
+"<literal>File</literal> object"
+msgstr "<literal>java.io.File</literal> &mdash; Uma expressão EL pode referenciar um objeto de <literal>Arquivo</literal>."
+
+#. Tag: para
+#: Mail.xml:373
+#, no-c-format
+msgid ""
+"<literal>java.net.URL</literal> &mdash; An EL expression can reference a "
+"<literal>URL</literal> object"
+msgstr "<literal>java.net.URL</literal> &mdash; Uma expressão EL pode referenciar um objeto <literal>URL</literal>."
+
+#. Tag: para
+#: Mail.xml:378
+#, no-c-format
+msgid ""
+"<literal>java.io.InputStream</literal> &mdash; An EL expression can "
+"reference an <literal>InputStream</literal>. In this case both a "
+"<literal>fileName</literal> and a <literal>contentType</literal> must be "
+"specified."
+msgstr "<literal>java.io.InputStream</literal> &mdash; Uma expressão EL pode referenciar um <literal>InputStream</literal>. Neste caso, ambos <literal>fileName</literal> e <literal>contentType</literal> devem ser especificados."
+
+#. Tag: para
+#: Mail.xml:383
+#, no-c-format
+msgid ""
+"<literal>byte[]</literal> &mdash; An EL expression can reference an "
+"<literal>byte[]</literal>. In this case both a <literal>fileName</literal> "
+"and a <literal>contentType</literal> must be specified."
+msgstr ""
+"<literal>byte[]</literal> &mdash; Uma expressão EL pode referenciar um <literal>byte[]</literal>. Neste caso, ambos <literal>fileName</literal> "
+"e <literal>contentType</literal> devem ser especificados."
+
+#. Tag: para
+#: Mail.xml:388
+#, no-c-format
+msgid "If the value attribute is ommitted:"
+msgstr "Caso o valor do atributo seja omitido:"
+
+#. Tag: para
+#: Mail.xml:393
+#, no-c-format
+msgid ""
+"If this tag contains a <literal>&lt;p:document&gt;</literal> tag, the "
+"document described will be generated and attached to the email. A "
+"<literal>fileName</literal> should be specfied."
+msgstr "Caso este caracter possua o caracter <literal>&lt;p:document&gt;</literal>, o documento descrito irá gerar e anexar ao e-mail. Um <literal>fileName</literal> deve ser especificado."
+
+#. Tag: para
+#: Mail.xml:398
+#, no-c-format
+msgid ""
+"If this tag contains other JSF tags a HTML document will be generated from "
+"them and attached to the email. A <literal>fileName</literal> should be "
+"specfied."
+msgstr "Caso este caracter contenha outros caracteres JSF, um documento HTML será gerado a partir dos mesmos e anexado ao correio eletrônico. Um <literal>fileName</literal> deve ser especificado."
+
+#. Tag: para
+#: Mail.xml:405
+#, no-c-format
+msgid ""
+"<literal>fileName</literal> &mdash; Specify the file name to use for the "
+"attached file."
+msgstr "<literal>fileName</literal> &mdash; Especifique o nome do arquivo a ser usado pelo arquivo anexado."
+
+#. Tag: para
+#: Mail.xml:410
+#, no-c-format
+msgid ""
+"<literal>contentType</literal> &mdash; Specify the MIME type of the attached "
+"file"
+msgstr "<literal>contentType</literal> &mdash; Especifica o tipo MIME do arquivo anexado."
+
+#. Tag: term
+#: Mail.xml:418
+#, no-c-format
+msgid "&lt;m:subject&gt;"
+msgstr "&lt;m:subject&gt;"
+
+#. Tag: para
+#: Mail.xml:420
+#, no-c-format
+msgid "Set&#39;s the subject for the email."
+msgstr "O assunto configurado pelo correio eletrônico."
+
+#. Tag: term
+#: Mail.xml:426
+#, no-c-format
+msgid "&lt;m:body&gt;"
+msgstr "&lt;m:body&gt;"
+
+#. Tag: para
+#: Mail.xml:428
+#, no-c-format
+msgid ""
+"Set&#39;s the body for the email. Supports an <literal>alternative</literal> "
+"facet which, if an HTML email is generated can contain alternative text for "
+"a mail reader which doesn&#39;t support html."
+msgstr "O corpo determinado pelo correio eletrônico. Ele suporta o aspecto <literal>alternativo</literal>, e que caso o correio eletrônico seja gerado, poderá conter um texto alternativo para uma leitura de correio da qual não suporta html."
+
+#. Tag: para
+#: Mail.xml:433
+#, no-c-format
+msgid ""
+"<literal>type</literal> &mdash; If set to <literal>plain</literal> then a "
+"plain text email will be generated otherwise an HTML email is generated."
+msgstr "<literal>tipo</literal> &mdash; Caso seja configurado <literal>sem formatação</literal>, então um correio eletrônico de texto sem formatação será gerado ou um correio eletrônico HTML é gerado."
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Persistence.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Persistence.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Persistence.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,870 @@
+# translation of Persistence.po to Brazilian Portuguese
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Leticia de Lima <ldelima at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Persistence\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2008-06-12 16:07+1000\n"
+"Last-Translator: Leticia de Lima <ldelima at redhat.com>\n"
+"Language-Team: Brazilian Portuguese <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms:  JBEAP420 \n"
+
+#. Tag: title
+#: Persistence.xml:6
+#, no-c-format
+msgid "Seam and Object/Relational Mapping"
+msgstr "Seam e Mapeamento do Objeto/Relacional"
+
+#. Tag: para
+#: Persistence.xml:7
+#, no-c-format
+msgid ""
+"Seam provides extensive support for the two most popular persistence "
+"architectures for Java: Hibernate3, and the Java Persistence API introduced "
+"with EJB 3.0. Seam&#39;s unique state-management architecture allows the "
+"most sophisticated ORM integration of any web application framework."
+msgstr "O Seam fornece suporte extensivo para as duas arquiteturas mais persistentes em Java: Hibernate3 e o Java Persistence API introduzido em EJB 3.0. A arquitetura de gerenciamento de estado único do Seam permite a mais sofisticada integração ORM, de qualquer framework do aplicativo da web."
+
+#. Tag: title
+#: Persistence.xml:11
+#, no-c-format
+msgid "Introduction"
+msgstr "Introdução"
+
+#. Tag: para
+#: Persistence.xml:12
+#, no-c-format
+msgid ""
+"Seam grew out of the frustration of the Hibernate team with the "
+"statelessness typical of the previous generation of Java application "
+"architectures. The state management architecture of Seam was originally "
+"designed to solve problems relating to persistence&mdash;in particular "
+"problems associated with <emphasis>optimistic transaction processing</"
+"emphasis>. Scalable online applications always use optimistic transactions. "
+"An atomic (database/JTA) level transaction should not span a user "
+"interaction unless the application is designed to support only a very small "
+"number of concurrent clients. But almost all interesting work involves first "
+"displaying data to a user, and then, slightly later, updating the same data. "
+"So Hibernate was designed to support the idea of a persistence context which "
+"spanned an optimistic transaction."
+msgstr ""
+"O Seam cresceu a partir da frustração do time Hibernate com a típica ausência de estado da prévia geração das arquiteturas de aplicativo Java. A arquitetura de gerenciamento de estado do Seam foi originalmente designada a resolver problemas relativos à persistência &mdash; particularmente problemas associados com o <emphasis>processamento de transação otimista</"
+"emphasis>. Os aplicativos on-line escaláveis sempre usam as transações otimistas. Uma transação de nível anatômico (banco de dados/JTA) não deve expandir-se a uma interação do usuário, a não ser que o aplicativo seja designado a suportar apenas números pequenos de clientes simultâneos. No entanto, quase todo trabalho interessante envolve primeiro exibição de dados a um usuário, e então a atualização do mesmo dado. Desta forma, o Hibernate foi designado a suportar a idéia do contexto da persistência que espalha-se numa transação otimista."
+
+#. Tag: para
+#: Persistence.xml:15
+#, no-c-format
+msgid ""
+"Unfortunately, the so-called \"stateless\" architectures that preceded Seam "
+"and EJB 3.0 had no construct for representing an optimistic transaction. So, "
+"instead, these architectures provided persistence contexts scoped to the "
+"atomic transaction. Of course, this resulted in many problems for users, and "
+"is the cause of the number one user complaint about Hibernate: the dreaded "
+"<literal>LazyInitializationException</literal>. What we need is a construct "
+"for representing an optimistic transaction in the application tier."
+msgstr "Infelizmente, as chamadas arquiteturas \"sem estado\", que procedem Seam e EJB 3.0, não possuem construção para representar uma transação otimista. No entanto, estas arquiteturas fornecem escopos de contextos de persistência à transação atômica. Isto resulta em muitos problemas para os usuários, além de ser a razão número um de reclamações do Hibernate: <literal>LazyInitializationException</literal>. Na realidade, precisamos de uma construção para representar uma transação otimista da camada do aplicativo."
+
+#. Tag: para
+#: Persistence.xml:18
+#, no-c-format
+msgid ""
+"EJB 3.0 recognizes this problem, and introduces the idea of a stateful "
+"component (a stateful session bean) with an <emphasis>extended persistence "
+"context</emphasis> scoped to the lifetime of the component. This is a "
+"partial solution to the problem (and is a useful construct in and of itself) "
+"however there are two problems:"
+msgstr "O EJB 3.0 reconhece este problema e introduz a idéia de um componente com estado (um bean de sessão com estado) com um escopo de <emphasis>contexto de persistência estendida</emphasis>, para o ciclo de vida do componente. Esta é uma solução parcial do problema, além de ser uma construção útil dentro e fora de si mesma. No entanto, existem dois problemas:"
+
+#. Tag: para
+#: Persistence.xml:23
+#, no-c-format
+msgid ""
+"The lifecycle of the stateful session bean must be managed manually via code "
+"in the web tier (it turns out that this is a subtle problem and much more "
+"difficult in practice than it sounds)."
+msgstr "O ciclo de vida do bean de sessão com estado deve ser gerenciado manualmente a partir do código na camada da web (resultando num problema sútil, além de ser muito mais difícil na prática que isto realmente aparenta)."
+
+#. Tag: para
+#: Persistence.xml:28
+#, no-c-format
+msgid ""
+"Propagation of the persistence context between stateful components in the "
+"same optimistic transaction is possible, but tricky."
+msgstr "A propagação do contexto da persistência entre os componentes com estado em algumas das transações otimistas é possível, porém complicada."
+
+#. Tag: para
+#: Persistence.xml:33
+#, no-c-format
+msgid ""
+"Seam solves the first problem by providing conversations, and stateful "
+"session bean components scoped to the conversation. (Most conversations "
+"actually represent optimistic transactions in the data layer.) This is "
+"sufficient for many simple applications (such as the Seam booking demo) "
+"where persistence context propagation is not needed. For more complex "
+"applications, with many loosly-interacting components in each conversation, "
+"propagation of the persistence context across components becomes an "
+"important issue. So Seam extends the persistence context management model of "
+"EJB 3.0, to provide conversation-scoped extended persistence contexts."
+msgstr "O Seam resolve o primeiro problema fornecendo conversações e escopo de componentes de bean de sessão à conversação. (Na realidade, a maioria das conversações representam transações otimistas na camada dos dados.) Isto é suficiente para muitos aplicativos simples (como demo de marcação Seam), onde a propagação de contexto de persistência não é necessária. Para aplicativos mais complexos, com muitos componentes loosly-interacting em cada conversação, a propagação do contexto de persistência através de componentes torna-se uma questão importante. Desta forma, o Seam estende-se ao modelo gerenciador de contexto de persistência do EJB 3.0, com a finalidade de fornecer contextos de persistência estendida do escopo de conversação."
+
+#. Tag: title
+#: Persistence.xml:39
+#, no-c-format
+msgid "Seam managed transactions"
+msgstr "Transações gerenciadas pelo Seam"
+
+#. Tag: para
+#: Persistence.xml:40
+#, no-c-format
+msgid ""
+"EJB session beans feature declarative transaction management. The EJB "
+"container is able to start a transaction transparently when the bean is "
+"invoked, and end it when the invocation ends. If we write a session bean "
+"method that acts as a JSF action listener, we can do all the work associated "
+"with that action in one transaction, and be sure that it is committed or "
+"rolled back when we finish processing the action. This is a great feature, "
+"and all that is needed by some Seam applications."
+msgstr "Os beans de sessão EJB caracterizam um gerenciamento de transação declarativa. O container EJB é apto a inicializar uma transação transparente, quando o bean é invocado, e finalizá-lo uma vez em que a invocação finaliza. Se gravarmos um método de sessão bean que atua como um JSF action listener, poderemos realizar todo o trabalho associado com aquela ação em um única transação. Desta maneira, podemos ter certeza se isto foi executado ou revertido quando finalizamos o processamento da ação. Isto é um ótimo recurso e tudo o que é necessário para alguns dos aplicativos Seam."
+
+#. Tag: para
+#: Persistence.xml:43
+#, no-c-format
+msgid ""
+"However, there is a problem with this approach. A Seam application may not "
+"perform all data access for a request from a single method call to a session "
+"bean."
+msgstr "No entanto, há um problema com esta abordagem. O aplicativo Seam talvez não execute todos os acessos aos dados de uma solicitação, a partir de uma chamada de método único para o bean de sessão."
+
+#. Tag: para
+#: Persistence.xml:48
+#, no-c-format
+msgid ""
+"The request might require processing by several loosly-coupled components, "
+"each of which is called independently from the web layer. It is common to "
+"see several or even many calls per request from the web layer to EJB "
+"components in Seam."
+msgstr "A solicitação poderá pedir por um processamento de diversos componentes loosly-coupled, cada qual sendo chamado independentemente a partir de uma camada da web. É comum ver diversas chamadas por solicitação a partir da camada da web para os componentes em Seam."
+
+#. Tag: para
+#: Persistence.xml:53
+#, no-c-format
+msgid "Rendering of the view might require lazy fetching of associations."
+msgstr "O processamento da visualização poderá solicitar uma busca simples dos associados."
+
+#. Tag: para
+#: Persistence.xml:58
+#, no-c-format
+msgid ""
+"The more transactions per request, the more likely we are to encounter "
+"atomicity and isolation problems when our application is processing many "
+"concurrent requests. Certainly, all write operations should occur in the "
+"same transaction!"
+msgstr "Quanto maiores forem as transações por solicitação, mais perto estaremos de encontrar problemas de atomicidade e isolação, assim que nossos aplicativos estejam sendo processados em muitas solicitações simultâneas. Certamente, todas as operações gravadas devem ocorrer na mesma transação."
+
+#. Tag: para
+#: Persistence.xml:61
+#, no-c-format
+msgid ""
+"Hibernate users developed the <emphasis>\"open session in view\"</emphasis> "
+"pattern to work around this problem. In the Hibernate community, \"open "
+"session in view\" was historically even more important because frameworks "
+"like Spring use transaction-scoped persistence contexts. So rendering the "
+"view would cause <literal>LazyInitializationException</literal>s when "
+"unfetched associations were accessed."
+msgstr "Os usuários do Hibernate desenvolveram o padrão de <emphasis>\"sessão aberta de visualização\"</emphasis> para trabalhar com este problema. Na comunidade Hibernate, a \"sessão aberta de visualização\" era historicamente mais importante devido estruturas como Spring de uso dos contextos de persistência de escopo de transação. Desta forma, o processamento de visualização poderia causar a <literal>LazyInitializationException</literal>, uma vez que as associações intocáveis forem acessadas."
+
+#. Tag: para
+#: Persistence.xml:64
+#, no-c-format
+msgid ""
+"This pattern is usually implemented as a single transaction which spans the "
+"entire request. There are several problems with this implementation, the "
+"most serious being that we can never be sure that a transaction is "
+"successful until we commit it&mdash;but by the time the \"open session in "
+"view\" transaction is committed, the view is fully rendered, and the "
+"rendered response may already have been flushed to the client. How can we "
+"notify the user that their transaction was unsuccessful?"
+msgstr "Este padrão é normalmente implementado como uma única transação que espalha a solicitação por completo. Existem diversos problemas com esta implementação, a mais severa é que nunca estaremos certos de que uma transação foi bem sucedida até que executemos a mesma. No entanto, até que a transação de \"sessão aberta de visualização\" seja executada, a visualização é inteiramente processada e a resposta processada pode ter sido movimentada ao cliente. Como podemos notificar o usuário que sua transação foi bem sucedida?"
+
+#. Tag: para
+#: Persistence.xml:67
+#, no-c-format
+msgid ""
+"Seam solves both the transaction isolation problem and the association "
+"fetching problem, while working around the problems with \"open session in "
+"view\". The solution comes in two parts:"
+msgstr "O Seam resolve ambos problemas de isolação da transação e de busca associada, enquanto trabalhando com problemas de \"sessão aberta de visualização\". A solução apresenta-se de duas maneiras:"
+
+#. Tag: para
+#: Persistence.xml:72
+#, no-c-format
+msgid ""
+"use an extended persistence context that is scoped to the conversation, "
+"instead of to the transaction"
+msgstr "o uso de um contexto de persistência estendida, do qual possui escopo para a conversação ao invés da transação;"
+
+#. Tag: para
+#: Persistence.xml:77
+#, no-c-format
+msgid ""
+"use two transactions per request; the first spans the beginning of the "
+"update model values phase until the end of the invoke application phase; the "
+"second spans the render response phase"
+msgstr "o uso de duas transações por solicitações; a primeira espalha a inicialização da fase de valores de modelos atualizados até o final da fase do aplicativo de invocação, e a segunda espalha a fase de resposta processada. "
+
+#. Tag: para
+#: Persistence.xml:82
+#, no-c-format
+msgid ""
+"In the next section, we&#39;ll tell you how to set up a conversation-scope "
+"persistence context. But first we need to tell you how to enable Seam "
+"transaction management. Note that you can use conversation-scoped "
+"persistence contexts without Seam transaction management, and there are good "
+"reasons to use Seam transaction management even when you&#39;re not using "
+"Seam-managed persistence contexts. However, the two facilities were designed "
+"to work together, and work best when used together."
+msgstr "Nesta próxima sessão, iremos informá-lo como configurar um contexto de persistência de escopo de conversação. Mas, precisamos informá-lo primeiramente como ativar o gerenciamento de transação Seam. Perceba que você pode usar os contextos de persistência de escopo de conversação sem o gerenciamento de transação Seam. Além disso, há bons motivos para usar o gerenciamento de transação Seam, mesmo quando você não estiver usando os contextos de persistência gerenciados Seam. No entanto, as duas outras facilidades foram designadas a trabalhar juntas,além de serem mais eficientes quando utilizadas juntas."
+
+#. Tag: title
+#: Persistence.xml:86
+#, no-c-format
+msgid "Enabling Seam-managed transactions"
+msgstr "Ativando as transações gerenciadas pelo Seam"
+
+#. Tag: para
+#: Persistence.xml:87
+#, no-c-format
+msgid ""
+"To make use of <emphasis>Seam managed transactions</emphasis>, you need to "
+"use <literal>TransactionalSeamPhaseListener</literal> in place of "
+"<literal>SeamPhaseListener</literal>."
+msgstr "Para se fazer uso das <emphasis>transações gerenciadas pelo Seam</emphasis>, você precisará usar o <literal>TransactionalSeamPhaseListener</literal> em lugar de <literal>SeamPhaseListener</literal>."
+
+#. Tag: programlisting
+#: Persistence.xml:90
+#, no-c-format
+msgid ""
+"&lt;lifecycle&gt;\n"
+"     &lt;phase-listener&gt;\n"
+"        org.jboss.seam.jsf.TransactionalSeamPhaseListener\n"
+"    &lt;/phase-listener&gt;\n"
+"&lt;/lifecycle&gt;"
+msgstr ""
+"&lt;lifecycle&gt;\n"
+"     &lt;phase-listener&gt;\n"
+"        org.jboss.seam.jsf.TransactionalSeamPhaseListener\n"
+"    &lt;/phase-listener&gt;\n"
+"&lt;/lifecycle&gt;"
+
+#. Tag: para
+#: Persistence.xml:91
+#, no-c-format
+msgid ""
+"Seam transaction management is useful even if you&#39;re using EJB 3.0 "
+"container-managed persistence contexts. But it is especially useful if you "
+"use Seam outside a Java EE 5 environment, or in any other case where you "
+"would use a Seam-managed persistence context."
+msgstr "O gerenciamento de transação de Seam é útil mesmo que você use os contextos de persistência de container gerenciados. Porém, ele é ainda mais útil caso você use o Seam fora do ambiente Java EE 5. Ou, ainda, em qualquer outro caso em que você possa usar o contexto de persistência Seam gerenciado."
+
+#. Tag: title
+#: Persistence.xml:99
+#, no-c-format
+msgid "Seam-managed persistence contexts"
+msgstr "Contextos de persistência gerenciados pelo Seam"
+
+#. Tag: para
+#: Persistence.xml:100
+#, no-c-format
+msgid ""
+"If you&#39;re using Seam outside of a Java EE 5 environment, you can&#39;t "
+"rely upon the container to manage the persistence context lifecycle for you. "
+"Even if you are in an EE 5 environment, you might have a complex application "
+"with many loosly coupled components that collaborate together in the scope "
+"of a single conversation, and in this case you might find that propagation "
+"of the persistence context between component is tricky and error-prone."
+msgstr "Caso você esteja usando Seam fora do ambiente Java EE 5, não espere que o container gerencie o ciclo de vida do contexto de persistência para você. Mesmo que você esteja num ambiente EE 5, você poderá possuir um aplicativo complexo com muitos componentes loosly coupled, dos quais colaboram juntos num escopo de conversação única. Neste caso, você poderá descobrir que a propagação do contexto de persistência entre componente é enganadora e induz ao erro."
+
+#. Tag: para
+#: Persistence.xml:103
+#, no-c-format
+msgid ""
+"In either case, you&#39;ll need to use a <emphasis>managed persistence "
+"context</emphasis> (for JPA) or a <emphasis>managed session</emphasis> (for "
+"Hibernate) in your components. A Seam-managed persistence context is just a "
+"built-in Seam component that manages an instance of <literal>EntityManager</"
+"literal> or <literal>Session</literal> in the conversation context. You can "
+"inject it with <literal>@In</literal>."
+msgstr ""
+"Em ambos os casos, você precisará usar o <emphasis>contexto de persistência gerenciado</emphasis> (para JPA) ou uma <emphasis>sessão gerenciada</emphasis> (para Hibernate) em seus componentes. Um contexto de persistência gerenciado pelo Seam é apenas um componente Seam interno que gerencia uma instância de <literal>EntityManager</"
+"literal> ou <literal>Session</literal> no contexto de conversação. Você pode injetá-lo em <literal>@In</literal>."
+
+#. Tag: para
+#: Persistence.xml:106
+#, no-c-format
+msgid ""
+"Seam-managed persistence contexts are extremely efficient in a clustered "
+"environment. Seam is able to perform an optimization that EJB 3.0 "
+"specification does not allow containers to use for container-managed "
+"extended persistence contexts. Seam supports transparent failover of "
+"extended persisence contexts, without the need to replicate any persistence "
+"context state between nodes. (We hope to fix this oversight in the next "
+"revision of the EJB spec.)"
+msgstr "Os contextos de persistência gerenciados pelo Seam são extremamente eficientes num ambiente clustered. O Seam é apto a executar uma otimização de especificação EJB 3.0, da qual não permite os containers a usar os contextos de persistência estendidos de container gerenciado. O Seam suporta transparentemente a falha dos contextos de persistência estendidos, sem a necessidade de replicar estado de contexto de persistência entre nós. (Esperamos ajustar este equívoco na próxima revisão do EJB especificado.)"
+
+#. Tag: title
+#: Persistence.xml:110
+#, no-c-format
+msgid "Using a Seam-managed persistence context with JPA"
+msgstr "Usando um contexto de persistência gerenciado pelo Seam com JPA"
+
+#. Tag: para
+#: Persistence.xml:111
+#, no-c-format
+msgid ""
+"Configuring a managed persistence context is easy. In <literal>components."
+"xml</literal>, we can write:"
+msgstr ""
+"A configuração de um contexto de persistência gerenciado é fácil. Em <literal>components."
+"xml</literal>, nós podemos gravar:"
+
+#. Tag: programlisting
+#: Persistence.xml:114
+#, no-c-format
+msgid ""
+"&lt;core:managed-persistence-context name=\"bookingDatabase\" \n"
+"                           auto-create=\"true\"\n"
+"            persistence-unit-jndi-name=\"java:/EntityManagerFactories/"
+"bookingData\"/&gt;"
+msgstr ""
+"&lt;core:managed-persistence-context name=\"bookingDatabase\" \n"
+"                           auto-create=\"true\"\n"
+"            persistence-unit-jndi-name=\"java:/EntityManagerFactories/"
+"bookingData\"/&gt;"
+
+#. Tag: para
+#: Persistence.xml:115
+#, no-c-format
+msgid ""
+"This configuration creates a conversation-scoped Seam component named "
+"<literal>bookingDatabase</literal> that manages the lifecycle of "
+"<literal>EntityManager</literal> instances for the persistence unit "
+"(<literal>EntityManagerFactory</literal> instance) with JNDI name "
+"<literal>java:/EntityManagerFactories/bookingData</literal>."
+msgstr "Esta configuração cria um nomeado componente Seam de escopo de conversação <literal>bookingDatabase</literal>. Este gerencia o ciclo de vida das instâncias <literal>EntityManager</literal>, para a unidade de persistência (instância <literal>EntityManagerFactory</literal>), com o nome JNDI <literal>java:/EntityManagerFactories/bookingData</literal>."
+
+#. Tag: para
+#: Persistence.xml:118
+#, no-c-format
+msgid ""
+"Of course, you need to make sure that you have bound the "
+"<literal>EntityManagerFactory</literal> into JNDI. In JBoss, you can do this "
+"by adding the following property setting to <literal>persistence.xml</"
+"literal>."
+msgstr ""
+"Você precisará ter certeza de que você acoplou o <literal>EntityManagerFactory</literal> em JNDI. Em JBoss você pode realizar isto apenas adicionando a seguinte configuração de propriedade ao <literal>persistence.xml</"
+"literal>."
+
+#. Tag: programlisting
+#: Persistence.xml:121
+#, no-c-format
+msgid ""
+"&lt;property name=\"jboss.entity.manager.factory.jndi.name\" \n"
+"          value=\"java:/EntityManagerFactories/bookingData\"/&gt;"
+msgstr ""
+"&lt;property name=\"jboss.entity.manager.factory.jndi.name\" \n"
+"          value=\"java:/EntityManagerFactories/bookingData\"/&gt;"
+
+#. Tag: para
+#: Persistence.xml:122
+#, no-c-format
+msgid "Now we can have our <literal>EntityManager</literal> injected using:"
+msgstr "Agora possuimos o nosso <literal>EntityManager</literal> injetado, apenas utilizando:"
+
+#. Tag: programlisting
+#: Persistence.xml:125
+#, no-c-format
+msgid "@In EntityManager bookingDatabase;"
+msgstr "@In EntityManager bookingDatabase;"
+
+#. Tag: title
+#: Persistence.xml:129
+#, no-c-format
+msgid "Using a Seam-managed Hibernate session"
+msgstr "Usando a sessão Hibernate gerenciado pelo Seam"
+
+#. Tag: para
+#: Persistence.xml:130
+#, no-c-format
+msgid ""
+"Seam-managed Hibernate sessions are similar. In <literal>components.xml</"
+"literal>:"
+msgstr ""
+"As sessões Hibernate gerenciadas pelo Seam são similares. Observe em <literal>components.xml</"
+"literal>:"
+
+#. Tag: programlisting
+#: Persistence.xml:133
+#, no-c-format
+msgid ""
+"&lt;core:hibernate-session-factory name=\"hibernateSessionFactory\"/&gt;\n"
+"\n"
+"&lt;core:managed-hibernate-session name=\"bookingDatabase\" \n"
+"                         auto-create=\"true\"\n"
+"           session-factory-jndi-name=\"java:/bookingSessionFactory\"/&gt;"
+msgstr ""
+"&lt;core:hibernate-session-factory name=\"hibernateSessionFactory\"/&gt;\n"
+"\n"
+"&lt;core:managed-hibernate-session name=\"bookingDatabase\" \n"
+"                         auto-create=\"true\"\n"
+"           session-factory-jndi-name=\"java:/bookingSessionFactory\"/&gt;"
+
+#. Tag: para
+#: Persistence.xml:134
+#, no-c-format
+msgid ""
+"Where <literal>java:/bookingSessionFactory</literal> is the name of the "
+"session factory specified in <literal>hibernate.cfg.xml</literal>."
+msgstr "Onde <literal>java:/bookingSessionFactory</literal> é o nome da especificada fábrica de sessão em <literal>hibernate.cfg.xml</literal>."
+
+#. Tag: programlisting
+#: Persistence.xml:137
+#, no-c-format
+msgid ""
+"&lt;session-factory name=\"java:/bookingSessionFactory\"&gt;\n"
+"    &lt;property name=\"transaction.flush_before_completion\"&gt;true&lt;/"
+"property&gt;\n"
+"    &lt;property name=\"connection.release_mode\"&gt;after_statement&lt;/"
+"property&gt;\n"
+"    &lt;property name=\"transaction.manager_lookup_class\"&gt;\n"
+"       org.hibernate.transaction.JBossTransactionManagerLookup\n"
+"    &lt;/property&gt;\n"
+"    &lt;property name=\"transaction.factory_class\"&gt;\n"
+"       org.hibernate.transaction.JTATransactionFactory\n"
+"    &lt;/property&gt;\n"
+"    &lt;property name=\"connection.datasource\"&gt;java:/"
+"bookingDatasource&lt;/property&gt;\n"
+"    ...\n"
+"&lt;/session-factory&gt;"
+msgstr ""
+"&lt;session-factory name=\"java:/bookingSessionFactory\"&gt;\n"
+"    &lt;property name=\"transaction.flush_before_completion\"&gt;true&lt;/"
+"property&gt;\n"
+"    &lt;property name=\"connection.release_mode\"&gt;after_statement&lt;/"
+"property&gt;\n"
+"    &lt;property name=\"transaction.manager_lookup_class\"&gt;\n"
+"       org.hibernate.transaction.JBossTransactionManagerLookup\n"
+"    &lt;/property&gt;\n"
+"    &lt;property name=\"transaction.factory_class\"&gt;\n"
+"       org.hibernate.transaction.JTATransactionFactory\n"
+"    &lt;/property&gt;\n"
+"    &lt;property name=\"connection.datasource\"&gt;java:/"
+"bookingDatasource&lt;/property&gt;\n"
+"    ...\n"
+"&lt;/session-factory&gt;"
+
+#. Tag: para
+#: Persistence.xml:138
+#, no-c-format
+msgid ""
+"Note that Seam does not flush the session, so you should always enable "
+"<literal>hibernate.transaction.flush_before_completion</literal> to ensure "
+"that the session is automatically flushed before the JTA transaction commits."
+msgstr "Perceba que o Seam não movimenta a sessão, então você deve sempre ativar o <literal>hibernate.transaction.flush_before_completion</literal> para garantir que a sessão é automaticamente movimentada, antes de executar a transação JTA."
+
+#. Tag: para
+#: Persistence.xml:141
+#, no-c-format
+msgid ""
+"We can now have a managed Hibernate <literal>Session</literal> injected into "
+"our JavaBean components using the following code:"
+msgstr "Podemos ter agora um Hibernate gerenciado de <literal>Session</literal> injetada, dentro de nossos componentes JavaBean, usando o seguinte código:"
+
+#. Tag: programlisting
+#: Persistence.xml:144
+#, no-c-format
+msgid "@In Session bookingDatabase;"
+msgstr "@In Session bookingDatabase;"
+
+#. Tag: title
+#: Persistence.xml:148
+#, no-c-format
+msgid "Seam-managed persistence contexts and atomic conversations"
+msgstr "Os contextos de persistência gerenciado pelo Seam e conversações atômicas"
+
+#. Tag: para
+#: Persistence.xml:149
+#, no-c-format
+msgid ""
+"Persistence contexts scoped to the conversation allows you to program "
+"optimistic transactions that span multiple requests to the server without "
+"the need to use the <literal>merge()</literal> operation , without the need "
+"to re-load data at the beginning of each request, and without the need to "
+"wrestle with the <literal>LazyInitializationException</literal> or "
+"<literal>NonUniqueObjectException</literal>."
+msgstr ""
+"O escopo de contextos de persistência para a conversação permite você programar transações otimistas que espalham solicitações múltiplas ao servidor. Isto tudo, sem a necessidade de usar a operação <literal>merge()</literal>, sem a necessidade de recarregar dados na inicialização de cada solicitação e sem a necessidade de lutar com a <literal>LazyInitializationException</literal> ou "
+"<literal>NonUniqueObjectException</literal>."
+
+#. Tag: para
+#: Persistence.xml:152
+#, no-c-format
+msgid ""
+"As with any optimistic transaction management, transaction isolation and "
+"consistency can be achieved via use of optimistic locking. Fortunately, both "
+"Hibernate and EJB 3.0 make it very easy to use optimistic locking, by "
+"providing the <literal>@Version</literal> annotation."
+msgstr "Como em muitos outros gerenciamentos de transação otimista, a isolação e a consistência da transação podem ser atingidas através do uso bloqueamento otimista. Felizmente, o Hibernate e o EJB 3.0 facilitam o uso do bloqueamento otimista fornecendo a anotação <literal>@Version</literal>."
+
+#. Tag: para
+#: Persistence.xml:155
+#, no-c-format
+msgid ""
+"By default, the persistence context is flushed (synchronized with the "
+"database) at the end of each transaction. This is sometimes the desired "
+"behavior. But very often, we would prefer that all changes are held in "
+"memory and only written to the database when the conversation ends "
+"successfully. This allows for truly atomic conversations. As the result of a "
+"truly stupid and shortsighted decision by certain non-JBoss, non-Sun and non-"
+"Sybase members of the EJB 3.0 expert group, there is currently no simple, "
+"usable and portable way to implement atomic conversations using EJB 3.0 "
+"persistence. However, Hibernate provides this feature as a vendor extension "
+"to the <literal>FlushModeType</literal>s defined by the specification, and "
+"it is our expectation that other vendors will soon provide a similar "
+"extension."
+msgstr "Por padrão, o contexto de persistência é movimentado (sincronizado com o banco de dados) no final de cada transação. Este é normalmente o comportamento desejado. Mas quase sempre, preferimos que as mudanças sejam mantidas na memória e apenas gravar o banco de dados quando a conversação terminar com êxito. Isto permite que as conversações atômicas sejam verdadeiras. Como resultado de uma decisão negativa por certas pessoas não associadas ao JBoss, Sun ou Sybase do grupo de especialistas EJB 3.0, não há atualmente uma maneira simples, usável e portátil de se implementar conversações atômicas usando EJB 3.0. No entanto, o Hibernate fornece este recurso como uma extensão de fornecedor ao <literal>FlushModeType</literal>, definido pela especificação. Esperamos que outros fornecedores providenciem logo uma extensão similar. "
+
+#. Tag: para
+#: Persistence.xml:158
+#, no-c-format
+msgid ""
+"Seam lets you specify <literal>FlushModeType.MANUAL</literal> when beginning "
+"a conversation. Currently, this works only when Hibernate is the underlying "
+"persistence provider, but we plan to support other equivalent vendor "
+"extensions."
+msgstr "O Seam permite que você especifique o <literal>FlushModeType.MANUAL</literal>, uma vez que você estiver inicializando uma conversação. Atualmente, isto funciona apenas quando o Hibernate é o fornecedor de persistência base, mas planejamos em suportar outras extensões de fornecedor equivalente."
+
+#. Tag: programlisting
+#: Persistence.xml:161
+#, no-c-format
+msgid ""
+"@In EntityManager em; //a Seam-managed persistence context\n"
+"\n"
+"@Begin(flushMode=MANUAL)\n"
+"public void beginClaimWizard() {\n"
+"    claim = em.find(Claim.class, claimId);\n"
+"}"
+msgstr ""
+"@In EntityManager em; //a Seam-managed persistence context\n"
+"\n"
+"@Begin(flushMode=MANUAL)\n"
+"public void beginClaimWizard() {\n"
+"    claim = em.find(Claim.class, claimId);\n"
+"}"
+
+#. Tag: para
+#: Persistence.xml:162
+#, no-c-format
+msgid ""
+"Now, the <literal>claim</literal> object remains managed by the persistence "
+"context for the rest ot the conversation. We can make changes to the claim:"
+msgstr "Agora o objeto <literal>claim</literal> permanece gerenciado pelo contexto de persistência pelo resto da conversação. Podemos realizar mudanças na invocação:"
+
+#. Tag: programlisting
+#: Persistence.xml:165
+#, no-c-format
+msgid ""
+"public void addPartyToClaim() {\n"
+"    Party party = ....;\n"
+"    claim.addParty(party);\n"
+"}"
+msgstr ""
+"public void addPartyToClaim() {\n"
+"    Party party = ....;\n"
+"    claim.addParty(party);\n"
+"}"
+
+#. Tag: para
+#: Persistence.xml:166
+#, no-c-format
+msgid ""
+"But these changes will not be flushed to the database until we explicitly "
+"force the flush to occur:"
+msgstr "Porém, estas mudanças não serão movimentadas para o banco de dados até que, explicitamente, forcemos o movimento a ocorrer:"
+
+#. Tag: programlisting
+#: Persistence.xml:169
+#, no-c-format
+msgid ""
+"@End\n"
+"public void commitClaim() {\n"
+"    em.flush();\n"
+"}"
+msgstr ""
+"@End\n"
+"public void commitClaim() {\n"
+"    em.flush();\n"
+"}"
+
+#. Tag: title
+#: Persistence.xml:175
+#, no-c-format
+msgid "Using the JPA \"delegate\""
+msgstr "Usando o \"delegado\" JPA"
+
+#. Tag: para
+#: Persistence.xml:176
+#, no-c-format
+msgid ""
+"The <literal>EntityManager</literal> interface lets you access a vendor-"
+"specific API via the <literal>getDelegate()</literal> method. Naturally, the "
+"most interesting vendor is Hibernate, and the most powerful delegate "
+"interface is <literal>org.hibernate.Session</literal>. You&#39;d be nuts to "
+"use anything else. Trust me, I&#39;m not biased at all."
+msgstr "A interface <literal>EntityManager</literal> permite você acessar um especificado fornecedor API através do método <literal>getDelegate()</literal>. Naturalmente, o fornecedor mais interessante é o Hibernate e a interface mais poderosa é a <literal>org.hibernate.Session</literal>."
+
+#. Tag: para
+#: Persistence.xml:179
+#, no-c-format
+msgid ""
+"But regardless of whether you&#39;re using Hibernate (genius!) or something "
+"else (masochist, or just not very bright), you&#39;ll almost certainly want "
+"to use the delegate in your Seam components from time to time. One approach "
+"would be the following:"
+msgstr "Independente de você estar usando Hibernate ou não, você irá certamente querer usar o delegado em seus componentes Seam de tempo em tempo. Uma abordagem poderia ser como a seguinte:"
+
+#. Tag: programlisting
+#: Persistence.xml:182
+#, no-c-format
+msgid ""
+"@In EntityManager entityManager;\n"
+"\n"
+"@Create\n"
+"public void init() {\n"
+"    ( (Session) entityManager.getDelegate() ).enableFilter(\"currentVersions"
+"\");\n"
+"}"
+msgstr ""
+"@In EntityManager entityManager;\n"
+"\n"
+"@Create\n"
+"public void init() {\n"
+"    ( (Session) entityManager.getDelegate() ).enableFilter(\"currentVersions"
+"\");\n"
+"}"
+
+#. Tag: para
+#: Persistence.xml:183
+#, no-c-format
+msgid ""
+"But typecasts are unquestionably the ugliest syntax in the Java language, so "
+"most people avoid them whenever possible. Here&#39;s a different way to get "
+"at the delegate. First, add the following line to <literal>components.xml</"
+"literal>:"
+msgstr ""
+"No entanto, typecasts não são a sintaxe preferida na linguagem Java, então as pessoas os evitam toda vez que isto é possível. Há uma maneira diferente de obter a sintaxe na delegação. Primeiro, adicione a linha seguinte aos <literal>components.xml</"
+"literal>:"
+
+#. Tag: programlisting
+#: Persistence.xml:186
+#, no-c-format
+msgid ""
+"&lt;factory name=\"session\" \n"
+"         scope=\"STATELESS\" \n"
+"         auto-create=\"true\" \n"
+"         value=\"#{entityManager.delegate}\"/&gt;"
+msgstr ""
+"&lt;factory name=\"session\" \n"
+"         scope=\"STATELESS\" \n"
+"         auto-create=\"true\" \n"
+"         value=\"#{entityManager.delegate}\"/&gt;"
+
+#. Tag: para
+#: Persistence.xml:187
+#, no-c-format
+msgid "Now we can inject the session directly:"
+msgstr "Agora podemos injetar a sessão diretamente:"
+
+#. Tag: programlisting
+#: Persistence.xml:190
+#, no-c-format
+msgid ""
+"@In Session session;\n"
+"\n"
+"@Create\n"
+"public void init() {\n"
+"    session.enableFilter(\"currentVersions\");\n"
+"}"
+msgstr ""
+"@In Session session;\n"
+"\n"
+"@Create\n"
+"public void init() {\n"
+"    session.enableFilter(\"currentVersions\");\n"
+"}"
+
+#. Tag: title
+#: Persistence.xml:194
+#, no-c-format
+msgid "Using EL in EJB-QL/HQL"
+msgstr "Usando EL em EJB-QL/HQL"
+
+#. Tag: para
+#: Persistence.xml:195
+#, no-c-format
+msgid ""
+"Seam proxies the <literal>EntityManager</literal> or <literal>Session</"
+"literal> object whenever you use a Seam-managed persistence context or "
+"inject a container managed persistence context using "
+"<literal>@PersistenceContext</literal>. This lets you use EL expressions in "
+"your query strings, safely and efficiently. For example, this:"
+msgstr ""
+"O Seam proxies a <literal>EntityManager</literal> ou o objeto <literal>Session</"
+"literal>, a qualquer momento em que você usa o contexto de persistência gerenciado pelo Seam, ou injeta um contexto de persistência gerenciado pelo container usando <literal>@PersistenceContext</literal>. Isto permite com que você use expressões EL em suas seqüências de consulta, com segurança e eficiência. Por exemplo:"
+
+#. Tag: programlisting
+#: Persistence.xml:198
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=#{user.username}\")\n"
+"         .getSingleResult();"
+msgstr ""
+"User user = em.createQuery(\"from User where username=#{user.username}\")\n"
+"         .getSingleResult();"
+
+#. Tag: para
+#: Persistence.xml:199
+#, no-c-format
+msgid "is equivalent to:"
+msgstr "é equivalente a:"
+
+#. Tag: programlisting
+#: Persistence.xml:202
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getSingleResult();"
+msgstr ""
+"User user = em.createQuery(\"from User where username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getSingleResult();"
+
+#. Tag: para
+#: Persistence.xml:203
+#, no-c-format
+msgid "Of course, you should never, ever write it like this:"
+msgstr "É claro que você jamais deverá gravá-lo desta forma:"
+
+#. Tag: programlisting
+#: Persistence.xml:206
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=\" + user.getUsername"
+"()) //BAD!\n"
+"         .getSingleResult();"
+msgstr ""
+"User user = em.createQuery(\"from User where username=\" + user.getUsername"
+"()) //BAD!\n"
+"         .getSingleResult();"
+
+#. Tag: para
+#: Persistence.xml:207
+#, no-c-format
+msgid "(It is inefficient and vulnerable to SQL injection attacks.)"
+msgstr "(Isto é ineficiente e vulnerável aos ataques de injeção SQL)"
+
+#. Tag: title
+#: Persistence.xml:213
+#, no-c-format
+msgid "Using Hibernate filters"
+msgstr "Usando filtros Hibernate"
+
+#. Tag: para
+#: Persistence.xml:214
+#, no-c-format
+msgid ""
+"The coolest, and most unique, feature of Hibernate is <emphasis>filters</"
+"emphasis>. Filters let you provide a restricted view of the data in the "
+"database. You can find out more about filters in the Hibernate "
+"documentation. But we thought we&#39;d mention an easy way to incorporate "
+"filters into a Seam application, one that works especially well with the "
+"Seam Application Framework."
+msgstr ""
+"O melhor e mais exclusivo recurso do Hibernate é o <emphasis>filters</"
+"emphasis>. O Filters permite você fornecer uma visualização restrita dos dados em um banco de dados. Você pode encontrar mais informações sobre filters na documentação Hibernate. No entanto, decidimos mencionar uma maneira fácil para incorporar filters no aplicativo Seam, em que funciona perfeitamente com a Estrutura do Aplicativo Seam."
+
+#. Tag: para
+#: Persistence.xml:217
+#, no-c-format
+msgid ""
+"Seam-managed persistence contexts may have a list of filters defined, which "
+"will be enabled whenever an <literal>EntityManager</literal> or Hibernate "
+"<literal>Session</literal> is first created. (Of course, they may only be "
+"used when Hibernate is the underlying persistence provider.)"
+msgstr ""
+"Os contextos de persistência gerenciados pelo Seam podem ter uma lista de filtros definidos, que serão ativados a qualquer instante em que o <literal>EntityManager</literal> ou "
+"<literal>Session</literal> Hibernate forem primeiramente criados. (É claro que eles apenas serão usados quando o Hibernate for fornecedor de persistência básica.)"
+
+#. Tag: programlisting
+#: Persistence.xml:220
+#, no-c-format
+msgid ""
+"&lt;core:filter name=\"regionFilter\"&gt;\n"
+"    &lt;core:name&gt;region&lt;/core:name&gt;\n"
+"    &lt;core:parameters&gt;\n"
+"        &lt;key&gt;regionCode&lt;/key&gt;\n"
+"        &lt;value&gt;#{region.code}&lt;/value&gt;\n"
+"    &lt;/core:parameters&gt;\n"
+"&lt;/core:filter&gt;\n"
+"\n"
+"&lt;core:filter name=\"currentFilter\"&gt;\n"
+"    &lt;core:name&gt;current&lt;/core:name&gt;\n"
+"    &lt;core:parameters&gt;\n"
+"        &lt;key&gt;date&lt;/key&gt;\n"
+"        &lt;value&gt;#{currentDate}&lt;/value&gt;\n"
+"    &lt;/core:parameters&gt;\n"
+"&lt;/core:filter&gt;\n"
+"\n"
+"&lt;core:managed-persistence-context name=\"personDatabase\"\n"
+"    persistence-unit-jndi-name=\"java:/EntityManagerFactories/personDatabase"
+"\"&gt;\n"
+"    &lt;core:filters&gt;\n"
+"        &lt;value&gt;#{regionFilter}&lt;/value&gt;\n"
+"        &lt;value&gt;#{currentFilter}&lt;/value&gt;\n"
+"    &lt;/core:filters&gt;\n"
+"&lt;/core:managed-persistence-context&gt;"
+msgstr ""
+"&lt;core:filter name=\"regionFilter\"&gt;\n"
+"    &lt;core:name&gt;region&lt;/core:name&gt;\n"
+"    &lt;core:parameters&gt;\n"
+"        &lt;key&gt;regionCode&lt;/key&gt;\n"
+"        &lt;value&gt;#{region.code}&lt;/value&gt;\n"
+"    &lt;/core:parameters&gt;\n"
+"&lt;/core:filter&gt;\n"
+"\n"
+"&lt;core:filter name=\"currentFilter\"&gt;\n"
+"    &lt;core:name&gt;current&lt;/core:name&gt;\n"
+"    &lt;core:parameters&gt;\n"
+"        &lt;key&gt;date&lt;/key&gt;\n"
+"        &lt;value&gt;#{currentDate}&lt;/value&gt;\n"
+"    &lt;/core:parameters&gt;\n"
+"&lt;/core:filter&gt;\n"
+"\n"
+"&lt;core:managed-persistence-context name=\"personDatabase\"\n"
+"    persistence-unit-jndi-name=\"java:/EntityManagerFactories/personDatabase"
+"\"&gt;\n"
+"    &lt;core:filters&gt;\n"
+"        &lt;value&gt;#{regionFilter}&lt;/value&gt;\n"
+"        &lt;value&gt;#{currentFilter}&lt;/value&gt;\n"
+"    &lt;/core:filters&gt;\n"
+"&lt;/core:managed-persistence-context&gt;"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Remoting.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Remoting.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Remoting.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1679 @@
+# translation of Remoting.po to Brazilian Portuguese
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Leticia de Lima <ldelima at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Remoting\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2008-04-14 12:17+1000\n"
+"Last-Translator: Leticia de Lima <ldelima at redhat.com>\n"
+"Language-Team: Brazilian Portuguese <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms:  JBEAP420 \n"
+
+#. Tag: title
+#: Remoting.xml:6
+#, no-c-format
+msgid "Remoting"
+msgstr "Remoting"
+
+#. Tag: para
+#: Remoting.xml:7
+#, no-c-format
+msgid ""
+"Seam provides a convenient method of remotely accessing components from a "
+"web page, using AJAX (Asynchronous Javascript and XML). The framework for "
+"this functionality is provided with almost no up-front development effort - "
+"your components only require simple annotating to become accessible via "
+"AJAX. This chapter describes the steps required to build an AJAX-enabled web "
+"page, then goes on to explain the features of the Seam Remoting framework in "
+"more detail."
+msgstr "O Seam fornece um método conveniente dos componentes acessarem remotamente uma página da web, usando AJAX (Asynchronous Javascript and XML). A estrutura para esta funcionalidade é fornecida sem muito esforço de desenvolvimento à frente - seus componentes apenas solicitam uma anotação simples para ser acessível através do AJAX. Este capítulo descreve os passos solicitados para construir uma página da web ativada pelo AJAX, e então explica os recursos da estrutura do Seam Remoting em maiores detalhes."
+
+#. Tag: title
+#: Remoting.xml:10 Remoting.xml:285
+#, no-c-format
+msgid "Configuration"
+msgstr "Configuração"
+
+#. Tag: para
+#: Remoting.xml:11
+#, no-c-format
+msgid ""
+"To use remoting, the Seam Resource servlet must first be configured in your "
+"<literal>web.xml</literal> file:"
+msgstr "Para usar o remoting, o servlet do Recurso Seam deve ser primeiramente configurado em seu arquivo da 7<literal>web.xml</literal>:"
+
+#. Tag: programlisting
+#: Remoting.xml:14
+#, no-c-format
+msgid ""
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"  &lt;/servlet&gt;\n"
+"\n"
+"  &lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"  &lt;/servlet-mapping&gt;"
+msgstr ""
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"  &lt;/servlet&gt;\n"
+"\n"
+"  &lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"  &lt;/servlet-mapping&gt;"
+
+#. Tag: para
+#: Remoting.xml:15
+#, no-c-format
+msgid ""
+"The next step is to import the necessary Javascript into your web page. "
+"There are a minimum of two scripts that must be imported. The first one "
+"contains all the client-side framework code that enables remoting "
+"functionality:"
+msgstr "O próximo passo é importar o Javascript necessário dentro de sua página da web. Existe o mínimo de dois scripts que devem ser importados. O primeiro contém todo o código da estrutura do lado do cliente que ativa a funcionalidade do remoting:"
+
+#. Tag: programlisting
+#: Remoting.xml:18
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/resource/"
+"remote.js\"&gt;&lt;/script&gt;"
+msgstr ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/resource/"
+"remote.js\"&gt;&lt;/script&gt;"
+
+#. Tag: para
+#: Remoting.xml:19
+#, no-c-format
+msgid ""
+"The second script contains the stubs and type definitions for the components "
+"you wish to call. It is generated dynamically based on the local interface "
+"of your components, and includes type definitions for all of the classes "
+"that can be used to call the remotable methods of the interface. The name of "
+"the script reflects the name of your component. For example, if you have a "
+"stateless session bean annotated with <literal>@Name(\"customerAction\")</"
+"literal>, then your script tag should look like this:"
+msgstr ""
+"O segundo script contém stubs e tipo de definições para os componentes que você queira chamar. Isto é dinamicamente gerado baseando-se na interface local de seus componentes e inclui os tipos de definições para todos que fazem parte das classes que podem ser usadas para chamar os métodos remotos da interface. O nome do script reflete no nome de seu componente. Por exemplo, se você possui um anotado bean de sessão sem estado com "
+"<literal>@Name(\"customerAction\")</"
+"literal>, então seu caracter de script deve parecer-se com:"
+
+#. Tag: programlisting
+#: Remoting.xml:22
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?customerAction\"&gt;\n"
+"    &lt;/script&gt;"
+msgstr ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?customerAction\"&gt;\n"
+"    &lt;/script&gt;"
+
+#. Tag: para
+#: Remoting.xml:23
+#, no-c-format
+msgid ""
+"If you wish to access more than one component from the same page, then "
+"include them all as parameters of your script tag:"
+msgstr "Caso você queira acessar mais de um componente a partir da mesma página, então os inclua como parâmetros de seu caracter de script:"
+
+#. Tag: programlisting
+#: Remoting.xml:26
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" \n"
+"     src=\"seam/resource/remoting/interface.js?customerAction&amp;"
+"accountAction\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+"&lt;script type=\"text/javascript\" \n"
+"     src=\"seam/resource/remoting/interface.js?customerAction&amp;"
+"accountAction\"&gt;\n"
+"  &lt;/script&gt;"
+
+#. Tag: title
+#: Remoting.xml:27
+#, no-c-format
+msgid "The \"Seam\" object"
+msgstr "O objeto \"Seam\""
+
+#. Tag: para
+#: Remoting.xml:28
+#, no-c-format
+msgid ""
+"Client-side interaction with your components is all performed via the "
+"<literal>Seam</literal> Javascript object. This object is defined in "
+"<literal>remote.js</literal>, and you&#39;ll be using it to make "
+"asynchronous calls against your component. It is split into two areas of "
+"functionality; <literal>Seam.Component</literal> contains methods for "
+"working with components and <literal>Seam.Remoting</literal> contains "
+"methods for executing remote requests. The easiest way to become familiar "
+"with this object is to start with a simple example."
+msgstr "A interação do lado do cliente com seus componentes é inteiramente executado por meio do objeto Javascript <literal>Seam</literal>. Este objetivo é definido em <literal>remote.js</literal>, e você irá usá-lo para realizar chamadas assincrônicas baseadas em seu componente. Isto é dividido em duas áreas de funcionalidade; <literal>Seam.Component</literal> contém métodos para trabalhar componentes e o <literal>Seam.Remoting</literal> do qual contém métodos para realizar solicitações remotas. A maneira mais fácil de se tornar familiar com este objeto é começar por uma simples amostra."
+
+#. Tag: title
+#: Remoting.xml:31
+#, no-c-format
+msgid "A Hello World example"
+msgstr "Uma amostra do Mundo Hello"
+
+#. Tag: para
+#: Remoting.xml:32
+#, no-c-format
+msgid ""
+"Let&#39;s step through a simple example to see how the <literal>Seam</"
+"literal> object works. First of all, let&#39;s create a new Seam component "
+"called <literal>helloAction</literal>."
+msgstr ""
+"Vamos começar por uma amostra simples para ver como o objeto <literal>Seam</"
+"literal> funciona. Primeiramente, vamos criar um novo componente Seam chamado <literal>helloAction</literal>."
+
+#. Tag: programlisting
+#: Remoting.xml:35
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"  @Name(\"helloAction\")\n"
+"  public class HelloAction implements HelloLocal {\n"
+"    public String sayHello(String name) {\n"
+"      return \"Hello, \" + name;\n"
+"    }\n"
+"  }"
+msgstr ""
+"@Stateless\n"
+"  @Name(\"helloAction\")\n"
+"  public class HelloAction implements HelloLocal {\n"
+"    public String sayHello(String name) {\n"
+"      return \"Hello, \" + name;\n"
+"    }\n"
+"  }"
+
+#. Tag: para
+#: Remoting.xml:36
+#, no-c-format
+msgid ""
+"You also need to create a local interface for our new component - take "
+"special note of the <literal>@WebRemote</literal> annotation, as it&#39;s "
+"required to make our method accessible via remoting:"
+msgstr "Você precisará criar também uma interface local para que nosso novo componente tenha um lembrete especial da anotação <literal>@WebRemote</literal>, uma vez que isto é solicitado para fazer nosso método acessível através do remoting:"
+
+#. Tag: programlisting
+#: Remoting.xml:39
+#, no-c-format
+msgid ""
+"@Local\n"
+"  public interface HelloLocal {\n"
+"    @WebRemote\n"
+"    public String sayHello(String name);\n"
+"  }"
+msgstr ""
+"@Local\n"
+"  public interface HelloLocal {\n"
+"    @WebRemote\n"
+"    public String sayHello(String name);\n"
+"  }"
+
+#. Tag: para
+#: Remoting.xml:40
+#, no-c-format
+msgid ""
+"That&#39;s all the server-side code we need to write. Now for our web page - "
+"create a new page and import the following scripts:"
+msgstr "Isto é tudo que nós precisamos gravar referente ao código do servidor. Já para a nossa página da web - crie uma nova página e importe os seguintes scripts:"
+
+#. Tag: programlisting
+#: Remoting.xml:43
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/resource/"
+"remote.js\"&gt;&lt;/script&gt;\n"
+"  &lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?helloAction\"&gt;&lt;/script&gt;"
+msgstr ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/resource/"
+"remote.js\"&gt;&lt;/script&gt;\n"
+"  &lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?helloAction\"&gt;&lt;/script&gt;"
+
+#. Tag: para
+#: Remoting.xml:44
+#, no-c-format
+msgid ""
+"To make this a fully interactive user experience, let&#39;s add a button to "
+"our page:"
+msgstr "Para fazer com isto seja uma completa experiência do usuário, vamos adicionar um botão à nossa página:"
+
+#. Tag: programlisting
+#: Remoting.xml:47
+#, no-c-format
+msgid "&lt;button onclick=\"javascript:sayHello()\"&gt;Say Hello&lt;/button&gt;"
+msgstr "&lt;button onclick=\"javascript:sayHello()\"&gt;Say Hello&lt;/button&gt;"
+
+#. Tag: para
+#: Remoting.xml:48
+#, no-c-format
+msgid ""
+"We&#39;ll also need to add some more script to make our button actually do "
+"something when it&#39;s clicked:"
+msgstr "Precisamos ainda adicionar algumas scripts a mais para fazer com que nosso botão execute alguma tarefa uma vez que clicamos no mesmo:"
+
+#. Tag: programlisting
+#: Remoting.xml:51
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\"&gt;\n"
+"    //&lt;![CDATA[\n"
+"\n"
+"    function sayHello() {\n"
+"      var name = prompt(\"What is your name?\");\n"
+"      Seam.Component.getInstance(\"helloAction\").sayHello(name, "
+"sayHelloCallback);\n"
+"    }\n"
+"\n"
+"    function sayHelloCallback(result) {\n"
+"      alert(result);\n"
+"    }\n"
+"\n"
+"    // ]]&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+"&lt;script type=\"text/javascript\"&gt;\n"
+"    //&lt;![CDATA[\n"
+"\n"
+"    function sayHello() {\n"
+"      var name = prompt(\"What is your name?\");\n"
+"      Seam.Component.getInstance(\"helloAction\").sayHello(name, "
+"sayHelloCallback);\n"
+"    }\n"
+"\n"
+"    function sayHelloCallback(result) {\n"
+"      alert(result);\n"
+"    }\n"
+"\n"
+"    // ]]&gt;\n"
+"  &lt;/script&gt;"
+
+#. Tag: para
+#: Remoting.xml:52
+#, no-c-format
+msgid ""
+"We&#39;re done! Deploy your application and browse to your page. Click the "
+"button, and enter a name when prompted. A message box will display the hello "
+"message confirming that the call was successful. If you want to save some "
+"time, you&#39;ll find the full source code for this Hello World example in "
+"Seam&#39;s <literal>/examples/remoting/helloworld</literal> directory."
+msgstr "Terminamos! Implemente seu aplicativo e navegue na sua página. Clique no botão e entre o nome quando solicitado. A caixa de mensagem irá exibir a mensagem hello confirmando que a chamada foi bem sucedida. Caso você queira economizar algum tempo, você poderá encontrar o completo código de fonte para esta amostra do Mundo Hello no diretório <literal>/examples/remoting/helloworld</literal> de Seam."
+
+#. Tag: para
+#: Remoting.xml:55
+#, no-c-format
+msgid ""
+"So what does the code of our script actually do? Let&#39;s break it down "
+"into smaller pieces. To start with, you can see from the Javascript code "
+"listing that we have implemented two methods - the first method is "
+"responsible for prompting the user for their name and then making a remote "
+"request. Take a look at the following line:"
+msgstr "O que realmente o código de nosso script faz? Vamos dividir isto em pequenos pedaços. Podemos começar por você verificando pela listagem do código Javascript que implementamos dois métodos - o primeiro é responsável em avisar o usuário para colocar o nome deles e então realizar uma solicitação remota. Observe a linha abaixo:"
+
+#. Tag: programlisting
+#: Remoting.xml:58
+#, no-c-format
+msgid "Seam.Component.getInstance(\"helloAction\").sayHello(name, sayHelloCallback);"
+msgstr "Seam.Component.getInstance(\"helloAction\").sayHello(name, sayHelloCallback);"
+
+#. Tag: para
+#: Remoting.xml:59
+#, no-c-format
+msgid ""
+"The first section of this line, <literal>Seam.Component.getInstance"
+"(\"helloAction\")</literal> returns a proxy, or \"stub\" for our "
+"<literal>helloAction</literal> component. We can invoke the methods of our "
+"component against this stub, which is exactly what happens with the "
+"remainder of the line: <literal>sayHello(name, sayHelloCallback);</literal>."
+msgstr ""
+"A primeira seção desta linha,  <literal>Seam.Component.getInstance"
+"(\"helloAction\")</literal> retorna um proxy ou \"stub\" para nosso componente <literal>helloAction</literal>. Podemos invocar os métodos de nosso componente referente a este stub, uma vez que é exatamente o que acontece com o restante da linha: <literal>sayHello(name, sayHelloCallback);</literal>."
+
+#. Tag: para
+#: Remoting.xml:62
+#, no-c-format
+msgid ""
+"What this line of code in its completeness does, is invoke the "
+"<literal>sayHello</literal> method of our component, passing in "
+"<literal>name</literal> as a parameter. The second parameter, "
+"<literal>sayHelloCallback</literal> isn&#39;t a parameter of our "
+"component&#39;s <literal>sayHello</literal> method, instead it tells the "
+"Seam Remoting framework that once it receives the response to our request, "
+"it should pass it to the <literal>sayHelloCallback</literal> Javascript "
+"method. This callback parameter is entirely optional, so feel free to leave "
+"it out if you&#39;re calling a method with a <literal>void</literal> return "
+"type or if you don&#39;t care about the result."
+msgstr "O que esta linha de código faz na realidade é invocar o método <literal>sayHello</literal> de nosso componente, passando o <literal>nome</literal> como uma parâmetro. O segundo parâmetro, <literal>sayHelloCallback</literal> não é um parâmetro de nosso método <literal>sayHello</literal> do componente. Do contrário, isto informa a estrutura do Seam Remoting que uma vez a resposta for recebida da nossa solicitação, isto deve passá-la para o método Javascript <literal>sayHelloCallback</literal>. Este parâmetro de chamada de retorno é inteiramente opcional, então não se preocupe de deixar isto de lado caso você esteja chamando o método com um tipo de retorno <literal>void</literal> ou se você não se importar com o resultado."
+
+#. Tag: para
+#: Remoting.xml:65
+#, no-c-format
+msgid ""
+"The <literal>sayHelloCallback</literal> method, once receiving the response "
+"to our remote request then pops up an alert message displaying the result of "
+"our method call."
+msgstr "O método <literal>sayHelloCallback</literal>. Uma vez recebida a resposta de nossa solicitação remota isto então exibe uma mensagem alerta mostrando o resultado de nossa chamada de método."
+
+#. Tag: title
+#: Remoting.xml:68
+#, no-c-format
+msgid "Seam.Component"
+msgstr "Seam.Component"
+
+#. Tag: para
+#: Remoting.xml:69
+#, no-c-format
+msgid ""
+"The <literal>Seam.Component</literal> Javascript object provides a number of "
+"client-side methods for working with your Seam components. The two main "
+"methods, <literal>newInstance()</literal> and <literal>getInstance()</"
+"literal> are documented in the following sections however their main "
+"difference is that <literal>newInstance()</literal> will always create a new "
+"instance of a component type, and <literal>getInstance()</literal> will "
+"return a singleton instance."
+msgstr ""
+"O objeto Javascript <literal>Seam.Component</literal> fornece um número de métodos do lado do cliente para trabalhar com seus componentes Seam. Os dois métodos principais <literal>newInstance()</literal> e <literal>getInstance()</"
+"literal> são documentados nas sessões seguintes. No entanto a maior diferença entre eles é que a <literal>newInstance()</literal> irá sempre criar uma nova instância de um tipo de componente, e o <literal>getInstance()</literal> irá retornar instância singleton."
+
+#. Tag: title
+#: Remoting.xml:72
+#, no-c-format
+msgid "Seam.Component.newInstance()"
+msgstr "Seam.Component.newInstance()"
+
+#. Tag: para
+#: Remoting.xml:73
+#, no-c-format
+msgid ""
+"Use this method to create a new instance of an entity or Javabean component. "
+"The object returned by this method will have the same getter/setter methods "
+"as its server-side counterpart, or alternatively if you wish you can access "
+"its fields directly. Take the following Seam entity component for example:"
+msgstr "Use este método para criar uma nova instância de uma entidade ou componente Javabean. O objeto retornado por este método possuirá os mesmos métodos de elemento/compositor como que sua duplicação por parte do servidor, ou alternativamente caso queira acessar seu campo diretamente. Use como exemplo o componente de de entidade Seam abaixo:"
+
+#. Tag: programlisting
+#: Remoting.xml:76
+#, no-c-format
+msgid ""
+"@Name(\"customer\")\n"
+"  @Entity\n"
+"  public class Customer implements Serializable\n"
+"  {\n"
+"    private Integer customerId;\n"
+"    private String firstName;\n"
+"    private String lastName;\n"
+"    \n"
+"    @Column public Integer getCustomerId() { \n"
+"      return customerId; \n"
+"    }\n"
+"    \n"
+"    public void setCustomerId(Integer customerId} { \n"
+"      this.customerId = customerId; \n"
+"    }\n"
+"    \n"
+"    @Column public String getFirstName() { \n"
+"      return firstName; \n"
+"    }\n"
+"    \n"
+"    public void setFirstName(String firstName) {\n"
+"      this.firstName = firstName; \n"
+"    }\n"
+"    \n"
+"    @Column public String getLastName() {\n"
+"      return lastName;\n"
+"    }\n"
+"    \n"
+"    public void setLastName(String lastName) {\n"
+"      this.lastName = lastName;\n"
+"    }\n"
+"  }"
+msgstr ""
+"@Name(\"customer\")\n"
+"  @Entity\n"
+"  public class Customer implements Serializable\n"
+"  {\n"
+"    private Integer customerId;\n"
+"    private String firstName;\n"
+"    private String lastName;\n"
+"    \n"
+"    @Column public Integer getCustomerId() { \n"
+"      return customerId; \n"
+"    }\n"
+"    \n"
+"    public void setCustomerId(Integer customerId} { \n"
+"      this.customerId = customerId; \n"
+"    }\n"
+"    \n"
+"    @Column public String getFirstName() { \n"
+"      return firstName; \n"
+"    }\n"
+"    \n"
+"    public void setFirstName(String firstName) {\n"
+"      this.firstName = firstName; \n"
+"    }\n"
+"    \n"
+"    @Column public String getLastName() {\n"
+"      return lastName;\n"
+"    }\n"
+"    \n"
+"    public void setLastName(String lastName) {\n"
+"      this.lastName = lastName;\n"
+"    }\n"
+"  }"
+
+#. Tag: para
+#: Remoting.xml:77
+#, no-c-format
+msgid "To create a client-side Customer you would write the following code:"
+msgstr "Para criar um Consumidor por parte do cliente, você deve gravar o seguinte código:"
+
+#. Tag: programlisting
+#: Remoting.xml:80
+#, no-c-format
+msgid "var customer = Seam.Component.newInstance(\"customer\");"
+msgstr "var customer = Seam.Component.newInstance(\"customer\");"
+
+#. Tag: para
+#: Remoting.xml:81
+#, no-c-format
+msgid "Then from here you can set the fields of the customer object:"
+msgstr "A partir disto você pode determinar os campos do objeto do consumidor:"
+
+#. Tag: programlisting
+#: Remoting.xml:84
+#, no-c-format
+msgid ""
+"customer.setFirstName(\"John\");\n"
+"  // Or you can set the fields directly\n"
+"  customer.lastName = \"Smith\";"
+msgstr ""
+"customer.setFirstName(\"John\");\n"
+"  // Or you can set the fields directly\n"
+"  customer.lastName = \"Smith\";"
+
+#. Tag: title
+#: Remoting.xml:85
+#, no-c-format
+msgid "Seam.Component.getInstance()"
+msgstr "Seam.Component.getInstance()"
+
+#. Tag: para
+#: Remoting.xml:86
+#, no-c-format
+msgid ""
+"The <literal>getInstance()</literal> method is used to get a reference to a "
+"Seam session bean component stub, which can then be used to remotely execute "
+"methods against your component. This method returns a singleton for the "
+"specified component, so calling it twice in a row with the same component "
+"name will return the same instance of the component."
+msgstr "O método <literal>getInstance()</literal> é usado para buscar uma referência ao stub do componente bean de sessão, que pode então ser usado em métodos de execução remotos baseados em seus componentes. Este método retorna um singleton para o componente especificado, chamando desta forma duas vezes de cada vez com o mesmo nome do componente retornando à mesma instância do componente."
+
+#. Tag: para
+#: Remoting.xml:89
+#, no-c-format
+msgid ""
+"To continue our example from before, if we have created a new "
+"<literal>customer</literal> and we now wish to save it, we would pass it to "
+"the <literal>saveCustomer()</literal> method of our <literal>customerAction</"
+"literal> component:"
+msgstr ""
+"Para dar continuidade ao nosso exemplo anterior, caso tenhamos criado um novo <literal>customer</literal> e agora desejarmos salvá-lo, precisaremos passá-lo ao método <literal>saveCustomer()</literal> de nosso componente <literal>customerAction</"
+"literal>:"
+
+#. Tag: programlisting
+#: Remoting.xml:92
+#, no-c-format
+msgid "Seam.Component.getInstance(\"customerAction\").saveCustomer(customer);"
+msgstr "Seam.Component.getInstance(\"customerAction\").saveCustomer(customer);"
+
+#. Tag: title
+#: Remoting.xml:93
+#, no-c-format
+msgid "Seam.Component.getComponentName()"
+msgstr "Seam.Component.getComponentName()"
+
+#. Tag: para
+#: Remoting.xml:94
+#, no-c-format
+msgid ""
+"Passing an object into this method will return its component name if it is a "
+"component, or <literal>null</literal> if it is not."
+msgstr "Passando um objeto para este método irá retornar este nome do componente caso isto seja um componente ou <literal>null</literal> caso isto não seja."
+
+#. Tag: programlisting
+#: Remoting.xml:97
+#, no-c-format
+msgid ""
+"if (Seam.Component.getComponentName(instance) == \"customer\")\n"
+"    alert(\"Customer\");\n"
+"  else if (Seam.Component.getComponentName(instance) == \"staff\")\n"
+"    alert(\"Staff member\");"
+msgstr ""
+"if (Seam.Component.getComponentName(instance) == \"customer\")\n"
+"    alert(\"Customer\");\n"
+"  else if (Seam.Component.getComponentName(instance) == \"staff\")\n"
+"    alert(\"Staff member\");"
+
+#. Tag: title
+#: Remoting.xml:98
+#, no-c-format
+msgid "Seam.Remoting"
+msgstr "Seam.Remoting"
+
+#. Tag: para
+#: Remoting.xml:99
+#, no-c-format
+msgid ""
+"Most of the client side functionality for Seam Remoting is contained within "
+"the <literal>Seam.Remoting</literal> object. While you shouldn&#39;t need to "
+"directly call most of its methods, there are a couple of important ones "
+"worth mentioning."
+msgstr "A maioria da funcionalidade do lado do cliente para o Seam Remoting contém o objeto <literal>Seam.Remoting</literal>. Enquanto você não deveria chamar diretamente a maioria destes métodos, há dois importantes que merecem ser mencionados."
+
+#. Tag: title
+#: Remoting.xml:102
+#, no-c-format
+msgid "Seam.Remoting.createType()"
+msgstr "Seam.Remoting.createType()"
+
+#. Tag: para
+#: Remoting.xml:103
+#, no-c-format
+msgid ""
+"If your application contains or uses Javabean classes that aren&#39;t Seam "
+"components, you may need to create these types on the client side to pass as "
+"parameters into your component method. Use the <literal>createType()</"
+"literal> method to create an instance of your type. Pass in the fully "
+"qualified Java class name as a parameter:"
+msgstr ""
+"Caso seu aplicativo tenha ou use as classes que não são componentes Seam, você talvez precise criar estes tipos no lado do cliente para passar os parâmetros em seu método do componente. Use o método <literal>createType()</"
+"literal> para criar uma instância de seu estilo. Passe o nome da classe Java qualificado como um parâmetro:"
+
+#. Tag: programlisting
+#: Remoting.xml:106
+#, no-c-format
+msgid "var widget = Seam.Remoting.createType(\"com.acme.widgets.MyWidget\");"
+msgstr "var widget = Seam.Remoting.createType(\"com.acme.widgets.MyWidget\");"
+
+#. Tag: title
+#: Remoting.xml:107
+#, no-c-format
+msgid "Seam.Remoting.getTypeName()"
+msgstr "Seam.Remoting.getTypeName()"
+
+#. Tag: para
+#: Remoting.xml:108
+#, no-c-format
+msgid ""
+"This method is the equivalent of <literal>Seam.Component.getComponentName()</"
+"literal> but for non-component types. It will return the name of the type "
+"for an object instance, or <literal>null</literal> if the type is not known. "
+"The name is the fully qualified name of the type&#39;s Java class."
+msgstr ""
+"Este método é equivalente ao<literal>Seam.Component.getComponentName()</"
+"literal>, porém para tipos que não são componentes. Isto retornará o nome do tipo e uma instância do objeto, ou <literal>nulo</literal> caso o tipo não seja conhecido. O nome é o nome inteiramente qualificado do tipo da classe Java."
+
+#. Tag: title
+#: Remoting.xml:111
+#, no-c-format
+msgid "Client Interfaces"
+msgstr "Interfaces de Clientes"
+
+#. Tag: para
+#: Remoting.xml:112
+#, no-c-format
+msgid ""
+"In the configuration section above, the interface, or \"stub\" for our "
+"component is imported into our page via <literal>seam/resource/remoting/"
+"interface.js</literal>:"
+msgstr ""
+"Na sessão de configuração acima, a interface, ou \"stub\" de nosso componente é importado para a nossa página através do <literal>seam/resource/remoting/"
+"interface.js</literal>:"
+
+#. Tag: programlisting
+#: Remoting.xml:115
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?customerAction\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?customerAction\"&gt;\n"
+"  &lt;/script&gt;"
+
+#. Tag: para
+#: Remoting.xml:116
+#, no-c-format
+msgid ""
+"By including this script in our page, the interface definitions for our "
+"component, plus any other components or types that are required to execute "
+"the methods of our component are generated and made available for the "
+"remoting framework to use."
+msgstr "Uma vez que incluimos este script em nossa página, as definições da interface para nosso componente, além de outros componentes ou tipos que são requeridos para executar os métodos em que nosso componentes são gerados e forem disponíveis para o uso da estrutura remoting."
+
+#. Tag: para
+#: Remoting.xml:119
+#, no-c-format
+msgid ""
+"There are two types of client stub that can be generated, \"executable\" "
+"stubs and \"type\" stubs. Executable stubs are behavioural, and are used to "
+"execute methods against your session bean components, while type stubs "
+"contain state and represent the types that can be passed in as parameters or "
+"returned as a result."
+msgstr "Há dois tipos de stub cliente dos quais podem ser gerados: stubs\"executáveis\" e \"tipo\". Os stubs executáveis são temperamentais e são usados para executar métodos em referência a seus componentes Bean de sessão, enquanto que os stubs tipo contêm estado e representam os tipos que podem ser passado aos parâmetros ou retornados como um resultado."
+
+#. Tag: para
+#: Remoting.xml:122
+#, no-c-format
+msgid ""
+"The type of client stub that is generated depends on the type of your Seam "
+"component. If the component is a session bean, then an executable stub will "
+"be generated, otherwise if it&#39;s an entity or JavaBean, then a type stub "
+"will be generated. There is one exception to this rule; if your component is "
+"a JavaBean (ie it is not a session bean nor an entity bean) and any of its "
+"methods are annotated with @WebRemote, then an executable stub will be "
+"generated for it instead of a type stub. This allows you to use remoting to "
+"call methods of your JavaBean components in a non-EJB environment where you "
+"don&#39;t have access to session beans."
+msgstr "O tipo do stub cliente gerado depende do tipo do componente Seam. Se o componente é um bean de sessão, então um stub executável será gerado. Do contrário, se for um bean de entidade ou JavaBean o stub tipo será gerado. Há uma exceção para esta regra: caso seu componente seja JavaBean (por exemplo: não sendo bean de sessão ou bean de entidade) e muitos de seus métodos são anotados pelo @WebRemote, então um stub executável será gerado ao invés de um stub tipo. Isto permite que você use o remoting para chamar métodos de seus componentes JavaBean num ambiente EJB, uma vez em que você não terá acesso aos beans de sessão."
+
+#. Tag: title
+#: Remoting.xml:125
+#, no-c-format
+msgid "The Context"
+msgstr "O Contexto"
+
+#. Tag: para
+#: Remoting.xml:126
+#, no-c-format
+msgid ""
+"The Seam Remoting Context contains additional information which is sent and "
+"received as part of a remoting request/response cycle. At this stage it only "
+"contains the conversation ID but may be expanded in the future."
+msgstr "O Contexto do Seam Remoting possui informação adicional que é enviada e recebida como parte de um ciclo de solicitação/resposta remoting. Neste estágio isto apenas contém a ID de conversação, mas poderá ser expandida no futuro."
+
+#. Tag: title
+#: Remoting.xml:129
+#, no-c-format
+msgid "Setting and reading the Conversation ID"
+msgstr "Configurando e lendo a ID de Conversação"
+
+#. Tag: para
+#: Remoting.xml:130
+#, no-c-format
+msgid ""
+"If you intend on using remote calls within the scope of a conversation then "
+"you need to be able to read or set the conversation ID in the Seam Remoting "
+"Context. To read the conversation ID after making a remote request call "
+"<literal>Seam.Remoting.getContext().getConversationId()</literal>. To set "
+"the conversation ID before making a request, call <literal>Seam.Remoting."
+"getContext().setConversationId()</literal>."
+msgstr ""
+"Caso você você pretenda usar as chamadas remotas com o escopo de uma conversação, então você precisará estar apto a ler ou configurar a ID da conversação no Contexto do Seam Remoting. Para ler a ID da conversação após realizar uma chamadade solicitação remota <literal>Seam.Remoting.getContext().getConversationId()</literal>. Para configurar a ID da conversação antes de realizar uma solicitação, chame o <literal>Seam.Remoting."
+"getContext().setConversationId()</literal>."
+
+#. Tag: para
+#: Remoting.xml:133
+#, no-c-format
+msgid ""
+"If the conversation ID hasn&#39;t been explicitly set with <literal>Seam."
+"Remoting.getContext().setConversationId()</literal>, then it will be "
+"automatically assigned the first valid conversation ID that is returned by "
+"any remoting call. If you are working with multiple conversations within "
+"your page, then you may need to explicitly set the conversation ID before "
+"each call. If you are working with just a single conversation, then you "
+"don&#39;t need to do anything special."
+msgstr ""
+"Caso a ID da conversação não tenha sido configurada claramente no <literal>Seam."
+"Remoting.getContext().setConversationId()</literal>, isto então determinará automaticamente a primeira ID de conversação válida que é retornada por qualquer chamada remota. Caso você esteja trabalhando em conversações múltiplas em sua página, você precisará definir claramente a ID da conversação antes de cada chamada. Caso você esteja trabalhando com apenas uma conversação única, então você não precisará fazer nada em especial."
+
+#. Tag: title
+#: Remoting.xml:137
+#, no-c-format
+msgid "Batch Requests"
+msgstr "Solicitações em Lote"
+
+#. Tag: para
+#: Remoting.xml:138
+#, no-c-format
+msgid ""
+"Seam Remoting allows multiple component calls to be executed within a single "
+"request. It is recommended that this feature is used wherever it is "
+"appropriate to reduce network traffic."
+msgstr "O Seam Remoting permite que as chamadas dos componentes sejam executadas com uma simples solicitação. É recomendável que este recurso seja usado toda a vez que seja apropriado para reduzir o tráfico da rede."
+
+#. Tag: para
+#: Remoting.xml:141
+#, no-c-format
+msgid ""
+"The method <literal>Seam.Remoting.startBatch()</literal> will start a new "
+"batch, and any component calls executed after starting a batch are queued, "
+"rather than being sent immediately. When all the desired component calls "
+"have been added to the batch, the <literal>Seam.Remoting.executeBatch()</"
+"literal> method will send a single request containing all of the queued "
+"calls to the server, where they will be executed in order. After the calls "
+"have been executed, a single response containining all return values will be "
+"returned to the client and the callback functions (if provided) triggered in "
+"the same order as execution."
+msgstr ""
+"O método <literal>Seam.Remoting.startBatch()</literal> inicializará um novo lote e qualquer chamada do componente executada após a inicialização do enfileiramento de um lote, ao invés de ser enviada imediatamente. Quando todas as chamadas de componentes desejados tenham sido adicionados ao lote, o <literal>Seam.Remoting.executeBatch()</"
+"literal> método será uma solicitação única contendo todas as chamadas enfileiradas do servidor, das quais serão executadas em ordem. Após as chamadas serem executadas, uma resposta única contendo os valores retornados irão retornar ao cliente e às funções de retorno de chamada (caso fornecidas), acionadas conforme sua ordem de execução."
+
+#. Tag: para
+#: Remoting.xml:144
+#, no-c-format
+msgid ""
+"If you start a new batch via the <literal>startBatch()</literal> method but "
+"then decide you don&#39;t want to send it, the <literal>Seam.Remoting."
+"cancelBatch()</literal> method will discard any calls that were queued and "
+"exit the batch mode."
+msgstr ""
+"Caso você inicie um novo lote através do método <literal>startBatch()</literal>, mas então decida que você não quer mais enviar isto, o método <literal>Seam.Remoting."
+"cancelBatch()</literal> irá descartar qualquer chamada que não estiver enfileirada e sair do modo lote."
+
+#. Tag: para
+#: Remoting.xml:147
+#, no-c-format
+msgid ""
+"To see an example of a batch being used, take a look at <literal>/examples/"
+"remoting/chatroom</literal>."
+msgstr ""
+"Para ver um exemplo de um lote sendo utilizado, observe os <literal>/examples/"
+"remoting/chatroom</literal>."
+
+#. Tag: title
+#: Remoting.xml:150
+#, no-c-format
+msgid "Working with Data types"
+msgstr "Trabalhando com tipos de Dados"
+
+#. Tag: title
+#: Remoting.xml:151
+#, no-c-format
+msgid "Primitives / Basic Types"
+msgstr "Primitivos / Tipos Básicos"
+
+#. Tag: para
+#: Remoting.xml:152
+#, no-c-format
+msgid ""
+"This section describes the support for basic data types. On the server side "
+"these values are generally compatible with either their primitive type or "
+"their corresponding wrapper class."
+msgstr "Esta sessão descreve o suporte para os tipos de dados básicos. Por parte do servidor estes valores são geralmente compatíveis com tanto o tipo primitivo como a classe wrapper (empacotadora) correspondente."
+
+#. Tag: title
+#: Remoting.xml:155
+#, no-c-format
+msgid "String"
+msgstr "Linha"
+
+#. Tag: para
+#: Remoting.xml:156
+#, no-c-format
+msgid "Simply use Javascript String objects when setting String parameter values."
+msgstr "Apenas use objetos de Linha Javascript quando configurados os valores do parâmetro de Linha."
+
+#. Tag: title
+#: Remoting.xml:159
+#, no-c-format
+msgid "Number"
+msgstr "Número"
+
+#. Tag: para
+#: Remoting.xml:160
+#, no-c-format
+msgid ""
+"There is support for all number types supported by Java. On the client side, "
+"number values are always serialized as their String representation and then "
+"on the server side they are converted to the correct destination type. "
+"Conversion into either a primitive or wrapper type is supported for "
+"<literal>Byte</literal>, <literal>Double</literal>, <literal>Float</"
+"literal>, <literal>Integer</literal>, <literal>Long</literal> and "
+"<literal>Short</literal> types."
+msgstr ""
+"Há suporte para todos os tipos de números suportados em Java. Por parte do cliente, os valores numéricos são serializados como a representação de Linha, e já por parte do servidor eles são convertidos ao tipo de destinação correta. A conversão dentro de tanto o tipo empacotador ou primitivo é suportado por <literal>Byte</literal>, <literal>Double</literal>, <literal>Float</"
+"literal>, <literal>Integer</literal>, <literal>Long</literal> e tipos"
+"<literal>Short</literal>."
+
+#. Tag: title
+#: Remoting.xml:163
+#, no-c-format
+msgid "Boolean"
+msgstr "Boolean"
+
+#. Tag: para
+#: Remoting.xml:164
+#, no-c-format
+msgid ""
+"Booleans are represented client side by Javascript Boolean values, and "
+"server side by a Java boolean."
+msgstr "Booleans são representados pelo lado do cliente por valores Javascript Boolean e pelo lado do servidor por Java boolean."
+
+#. Tag: title
+#: Remoting.xml:167
+#, no-c-format
+msgid "JavaBeans"
+msgstr "JavaBeans"
+
+#. Tag: para
+#: Remoting.xml:168
+#, no-c-format
+msgid ""
+"In general these will be either Seam entity or JavaBean components, or some "
+"other non-component class. Use the appropriate method (either <literal>Seam."
+"Component.newInstance()</literal> for Seam components or <literal>Seam."
+"Remoting.createType()</literal> for everything else) to create a new "
+"instance of the object."
+msgstr ""
+"Em geral eles serão tanto entidade de Seam ou componentes JavaBean, ou ainda alguma outra classe sem documento. Use o método apropriado (tanto o <literal>Seam."
+"Component.newInstance()</literal> para os componentes Seam como o <literal>Seam."
+"Remoting.createType()</literal> para o restante) para criar uma nova instância do objeto."
+
+#. Tag: para
+#: Remoting.xml:171
+#, no-c-format
+msgid ""
+"It is important to note that only objects that are created by either of "
+"these two methods should be used as parameter values, where the parameter is "
+"not one of the other valid types mentioned anywhere else in this section. In "
+"some situations you may have a component method where the exact parameter "
+"type cannot be determined, such as:"
+msgstr "É mais importante notar que apenas objetos que são criados pelo dois destes métodos devem ser usados como valores de parâmetros, onde o parâmetro não um dos dos tipos válidos mencionados em qualquer momento nesta seção. Em algumas situações você talvez tenha o método do componente o tipo de parâmetro exato não pode ser determinado, como por exemplo: "
+
+#. Tag: programlisting
+#: Remoting.xml:174
+#, no-c-format
+msgid ""
+"@Name(\"myAction\")\n"
+"  public class MyAction implements MyActionLocal {\n"
+"    public void doSomethingWithObject(Object obj) {\n"
+"      // code\n"
+"    }\n"
+"  }"
+msgstr ""
+"@Name(\"myAction\")\n"
+"  public class MyAction implements MyActionLocal {\n"
+"    public void doSomethingWithObject(Object obj) {\n"
+"      // code\n"
+"    }\n"
+"  }"
+
+#. Tag: para
+#: Remoting.xml:175
+#, no-c-format
+msgid ""
+"In this case you might want to pass in an instance of your "
+"<literal>myWidget</literal> component, however the interface for "
+"<literal>myAction</literal> won&#39;t include <literal>myWidget</literal> as "
+"it is not directly referenced by any of its methods. To get around this, "
+"<literal>MyWidget</literal> needs to be explicitly imported:"
+msgstr "Neste caso, você talvez queira passar uma instância de seu componente <literal>myWidget</literal>, porém a interface para <literal>myAction</literal> não incluirá <literal>myWidget</literal>, uma vez que isto não é referenciado diretamente por qualquer dos próprios métodos. Para entender isto, o <literal>MyWidget</literal> precisa ser claramente importado:"
+
+#. Tag: programlisting
+#: Remoting.xml:178
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?myAction&amp;myWidget\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?myAction&amp;myWidget\"&gt;\n"
+"  &lt;/script&gt;"
+
+#. Tag: para
+#: Remoting.xml:179
+#, no-c-format
+msgid ""
+"This will then allow a <literal>myWidget</literal> object to be created with "
+"<literal>Seam.Component.newInstance(\"myWidget\")</literal>, which can then "
+"be passed to <literal>myAction.doSomethingWithObject()</literal>."
+msgstr "Isto então permitirá um objeto <literal>myWidget</literal> a ser criado pelo <literal>Seam.Component.newInstance(\"myWidget\")</literal>, que pode então ser passado para <literal>myAction.doSomethingWithObject()</literal>."
+
+#. Tag: title
+#: Remoting.xml:182
+#, no-c-format
+msgid "Dates and Times"
+msgstr "Datas e Horários"
+
+#. Tag: para
+#: Remoting.xml:183
+#, no-c-format
+msgid ""
+"Date values are serialized into a String representation that is accurate to "
+"the millisecond. On the client side, use a Javascript Date object to work "
+"with date values. On the server side, use any <literal>java.util.Date</"
+"literal> (or descendent, such as <literal>java.sql.Date</literal> or "
+"<literal>java.sql.Timestamp</literal> class."
+msgstr ""
+"Os valores das datas são serializados em uma representação de Linha que é exata a milhões de segundo. Pelo lado do cliente, use um objeto de Dado Javascript para trabalhar com valores de dados. Pelo lado do servidor, use qualquer <literal>java.util.Date</"
+"literal> (ou descendente, como por exemplo <literal>java.sql.Date</literal> ou a classe "
+"<literal>java.sql.Timestamp</literal>. "
+
+#. Tag: title
+#: Remoting.xml:186
+#, no-c-format
+msgid "Enums"
+msgstr "Enums"
+
+#. Tag: para
+#: Remoting.xml:187
+#, no-c-format
+msgid ""
+"On the client side, enums are treated the same as Strings. When setting the "
+"value for an enum parameter, simply use the String representation of the "
+"enum. Take the following component as an example:"
+msgstr "No lado do cliente, enums são tratados da mesma forma que as Linhas. Quando configurando um valor para um parâmetro de enum, apenas use a representação de Linha do enum. Use o seguinte componente como exemplo:"
+
+#. Tag: programlisting
+#: Remoting.xml:190
+#, no-c-format
+msgid ""
+"@Name(\"paintAction\")\n"
+"  public class paintAction implements paintLocal {\n"
+"    public enum Color {red, green, blue, yellow, orange, purple};\n"
+"\n"
+"    public void paint(Color color) {\n"
+"      // code\n"
+"    }    \n"
+"  }"
+msgstr ""
+"@Name(\"paintAction\")\n"
+"  public class paintAction implements paintLocal {\n"
+"    public enum Color {red, green, blue, yellow, orange, purple};\n"
+"\n"
+"    public void paint(Color color) {\n"
+"      // code\n"
+"    }    \n"
+"  }"
+
+#. Tag: para
+#: Remoting.xml:191
+#, no-c-format
+msgid ""
+"To call the <literal>paint()</literal> method with the color <literal>red</"
+"literal>, pass the parameter value as a String literal:"
+msgstr ""
+"Para chamar o método <literal>paint()</literal> com a cor <literal>vermelha</"
+"literal>, passe o valor do parâmetro como Linha literal:"
+
+#. Tag: programlisting
+#: Remoting.xml:194
+#, no-c-format
+msgid "Seam.Component.getInstance(\"paintAction\").paint(\"red\");"
+msgstr "Seam.Component.getInstance(\"paintAction\").paint(\"red\");"
+
+#. Tag: para
+#: Remoting.xml:195
+#, no-c-format
+msgid ""
+"The inverse is also true - that is, if a component method returns an enum "
+"parameter (or contains an enum field anywhere in the returned object graph) "
+"then on the client-side it will be represented as a String."
+msgstr "O inverso também é verdadeiro - caso um método de um componente retornar a um parâmetro enum (ou conter um campo enum em qualquer lugar do gráfico de objeto retornado), então por lado do cliente, isto será representado como uma Linha."
+
+#. Tag: title
+#: Remoting.xml:198
+#, no-c-format
+msgid "Collections"
+msgstr "Coleções"
+
+#. Tag: title
+#: Remoting.xml:199
+#, no-c-format
+msgid "Bags"
+msgstr "Bags"
+
+#. Tag: para
+#: Remoting.xml:200
+#, no-c-format
+msgid ""
+"Bags cover all collection types including arrays, collections, lists, sets, "
+"(but excluding Maps - see the next section for those), and are implemented "
+"client-side as a Javascript array. When calling a component method that "
+"accepts one of these types as a parameter, your parameter should be a "
+"Javascript array. If a component method returns one of these types, then the "
+"return value will also be a Javascript array. The remoting framework is "
+"clever enough on the server side to convert the bag to an appropriate type "
+"for the component method call."
+msgstr "As Bags cobrem todos os tipos de coleção incluindo arrays, coleções, listas, configurações, (mas excluindo Mapas - verifique isto na próxima sessão), e são implementados ao lado do cliente como um Javascript array. Quando chamando um método de componente que aceita um destes tipos de parâmetros, o seu parâmetro deverá ser um Javascript array. Caso um componente retornar um destes tipos, então o valor retornado será também um Javascript array. A estrutura remoting é esperta o suficiente no lado do servidor para converter uma bag para um tipo apropriado de uma chamada de método de componente."
+
+#. Tag: title
+#: Remoting.xml:203
+#, no-c-format
+msgid "Maps"
+msgstr "Mapas"
+
+#. Tag: para
+#: Remoting.xml:204
+#, no-c-format
+msgid ""
+"As there is no native support for Maps within Javascript, a simple Map "
+"implementation is provided with the Seam Remoting framework. To create a Map "
+"which can be used as a parameter to a remote call, create a new "
+"<literal>Seam.Remoting.Map</literal> object:"
+msgstr "Uma vez que não há suporte para Mapas em Javascript, uma simples implementação de mapa é fornecida pela estrutura de Seam Remoting. Para criar um mapa que poderá ser usado como um parâmetro de uma chamada remota, crie um novo objeto <literal>Seam.Remoting.Map</literal>:"
+
+#. Tag: programlisting
+#: Remoting.xml:207
+#, no-c-format
+msgid "var map = new Seam.Remoting.Map();"
+msgstr "var map = new Seam.Remoting.Map();"
+
+#. Tag: para
+#: Remoting.xml:208
+#, no-c-format
+msgid ""
+"This Javascript implementation provides basic methods for working with Maps: "
+"<literal>size()</literal>, <literal>isEmpty()</literal>, <literal>keySet()</"
+"literal>, <literal>values()</literal>, <literal>get(key)</literal>, "
+"<literal>put(key, value)</literal>, <literal>remove(key)</literal> and "
+"<literal>contains(key)</literal>. Each of these methods are equivalent to "
+"their Java counterpart. Where the method returns a collection, such as "
+"<literal>keySet()</literal> and <literal>values()</literal>, a Javascript "
+"Array object will be returned that contains the key or value objects "
+"(respectively)."
+msgstr ""
+"Esta implementação Javascript fornece métodos básicos para trabalhar com mapas: <literal>size()</literal>, <literal>isEmpty()</literal>, <literal>keySet()</"
+"literal>, <literal>values()</literal>, <literal>get(key)</literal>, "
+"<literal>put(key, value)</literal>, <literal>remove(key)</literal> e "
+"<literal>contains(key)</literal>. Cada um destes métodos são equivalentes ao seu próprio Java counterpart. Quando o método retornar a uma coleção como por exemplo <literal>keySet()</literal> and <literal>values()</literal>, o objeto Javascript Array irá retornar o que contém a chave ou objetos de valor (respectivamente). "
+
+#. Tag: title
+#: Remoting.xml:211
+#, no-c-format
+msgid "Debugging"
+msgstr "Depuração"
+
+#. Tag: para
+#: Remoting.xml:212
+#, no-c-format
+msgid ""
+"To aid in tracking down bugs, it is possible to enable a debug mode which "
+"will display the contents of all the packets send back and forth between the "
+"client and server in a popup window. To enable debug mode, either execute "
+"the <literal>setDebug()</literal> method in Javascript:"
+msgstr "Para auxiliar a busca de bugs, é possível ativar um modo de depuração que exibirá os conteúdos de todos os pacote enviados e retornados entre o cliente e servidor numa janela aberta. Para ativar o mode de depração, execute o método <literal>setDebug()</literal> em Javascript:"
+
+#. Tag: programlisting
+#: Remoting.xml:215
+#, no-c-format
+msgid "Seam.Remoting.setDebug(true);"
+msgstr "Seam.Remoting.setDebug(true);"
+
+#. Tag: para
+#: Remoting.xml:216
+#, no-c-format
+msgid "Or configure it via components.xml:"
+msgstr "Ou o configure através por meio dos components.xml:"
+
+#. Tag: programlisting
+#: Remoting.xml:219
+#, no-c-format
+msgid "&lt;remoting:remoting debug=\"true\"/&gt;"
+msgstr "&lt;remoting:remoting debug=\"true\"/&gt;"
+
+#. Tag: para
+#: Remoting.xml:220
+#, no-c-format
+msgid ""
+"To turn off debugging, call <literal>setDebug(false)</literal>. If you want "
+"to write your own messages to the debug log, call <literal>Seam.Remoting.log"
+"(message)</literal>."
+msgstr ""
+"Caso você desligue a depuração, chame a <literal>setDebug(false)</literal>. Caso você queira escrever suyas próprias mensagens para o log-on de depuração, chame <literal>Seam.Remoting.log"
+"(message)</literal>."
+
+#. Tag: title
+#: Remoting.xml:223
+#, no-c-format
+msgid "The Loading Message"
+msgstr "Carregando a Mensagem"
+
+#. Tag: para
+#: Remoting.xml:224
+#, no-c-format
+msgid ""
+"The default loading message that appears in the top right corner of the "
+"screen can be modified, its rendering customised or even turned off "
+"completely."
+msgstr "A mensagem de carregamento padrão localizada no canto do topo da tela pode ser modificada, seu processamento ajustado ou ser completamente retornada."
+
+#. Tag: title
+#: Remoting.xml:227
+#, no-c-format
+msgid "Changing the message"
+msgstr "Mudando de mensagem"
+
+#. Tag: para
+#: Remoting.xml:228
+#, no-c-format
+msgid ""
+"To change the message from the default \"Please Wait...\" to something "
+"different, set the value of <literal>Seam.Remoting.loadingMessage</literal>:"
+msgstr "Para mudar a mensagem do padrão \"Por favor espere...\" para alguma outra mensagem, configure o valor do <literal>Seam.Remoting.loadingMessage</literal>:"
+
+#. Tag: programlisting
+#: Remoting.xml:231
+#, no-c-format
+msgid "Seam.Remoting.loadingMessage = \"Loading...\";"
+msgstr "Seam.Remoting.loadingMessage = \"Loading...\";"
+
+#. Tag: title
+#: Remoting.xml:232
+#, no-c-format
+msgid "Hiding the loading message"
+msgstr "Ocultando o carregamento da mensagem"
+
+#. Tag: para
+#: Remoting.xml:233
+#, no-c-format
+msgid ""
+"To completely suppress the display of the loading message, override the "
+"implementation of <literal>displayLoadingMessage()</literal> and "
+"<literal>hideLoadingMessage()</literal> with functions that instead do "
+"nothing:"
+msgstr ""
+"Para omitir completamente a exibiçao do carregamento da mensagem, substitua a implementação do <literal>displayLoadingMessage()</literal> e "
+"<literal>hideLoadingMessage()</literal> com as funções que pelo contrário não fazem nada:"
+
+#. Tag: programlisting
+#: Remoting.xml:236
+#, no-c-format
+msgid ""
+"// don&#39;t display the loading indicator\n"
+"  Seam.Remoting.displayLoadingMessage = function() {};\n"
+"  Seam.Remoting.hideLoadingMessage = function() {};"
+msgstr ""
+"// don&#39;t display the loading indicator\n"
+"  Seam.Remoting.displayLoadingMessage = function() {};\n"
+"  Seam.Remoting.hideLoadingMessage = function() {};"
+
+#. Tag: title
+#: Remoting.xml:237
+#, no-c-format
+msgid "A Custom Loading Indicator"
+msgstr "Um Indicador de Carregamento Adaptado"
+
+#. Tag: para
+#: Remoting.xml:238
+#, no-c-format
+msgid ""
+"It is also possible to override the loading indicator to display an animated "
+"icon, or anything else that you want. To do this override the "
+"<literal>displayLoadingMessage()</literal> and <literal>hideLoadingMessage()"
+"</literal> messages with your own implementation:"
+msgstr ""
+"É possível também substituir o indicador do carregamento para exibir um ícone animado ou qualquer outra coisa que você deseje. Para realizar esta substituição as mensagens <literal>displayLoadingMessage()</literal> e <literal>hideLoadingMessage()"
+"</literal> com sua própria implementação:"
+
+#. Tag: programlisting
+#: Remoting.xml:241
+#, no-c-format
+msgid ""
+"Seam.Remoting.displayLoadingMessage = function() {\n"
+"    // Write code here to display the indicator\n"
+"  };\n"
+"  \n"
+"  Seam.Remoting.hideLoadingMessage = function() {\n"
+"    // Write code here to hide the indicator\n"
+"  };"
+msgstr ""
+"Seam.Remoting.displayLoadingMessage = function() {\n"
+"    // Write code here to display the indicator\n"
+"  };\n"
+"  \n"
+"  Seam.Remoting.hideLoadingMessage = function() {\n"
+"    // Write code here to hide the indicator\n"
+"  };"
+
+#. Tag: title
+#: Remoting.xml:242
+#, no-c-format
+msgid "Controlling what data is returned"
+msgstr "Controlando o dado que for retornado"
+
+#. Tag: para
+#: Remoting.xml:243
+#, no-c-format
+msgid ""
+"When a remote method is executed, the result is serialized into an XML "
+"response that is returned to the client. This response is then unmarshaled "
+"by the client into a Javascript object. For complex types (i.e. Javabeans) "
+"that include references to other objects, all of these referenced objects "
+"are also serialized as part of the response. These objects may reference "
+"other objects, which may reference other objects, and so forth. If left "
+"unchecked, this object \"graph\" could potentially be enormous, depending on "
+"what relationships exist between your objects. And as a side issue (besides "
+"the potential verbosity of the response), you might also wish to prevent "
+"sensitive information from being exposed to the client."
+msgstr "Quando o método remoto for executado, o resultado é serializado em uma resposta que é retornada ao cliente. Esta resposta é então desorganizado pelo cliente no objeto Javascript. Para tipos mais complexos (como por exemplo: Jababeans), que possuem referências a outros objetos, todos estes objetos de referências são também serializados como parte da resposta. Estes objetos podem ser referência a outros objetos, em que talvez referência outros objetos e assim por diante. Caso não seja checado, este \"gráfico\" de objeto pode potencialmente ser enorme, dependendo no relacionamento existente entre seus objetivos. Uma questão a parte (além do verbose potencial da resposta) você também deverá prevenir informações sensitivas a serem expostas ao cliente."
+
+#. Tag: para
+#: Remoting.xml:246
+#, no-c-format
+msgid ""
+"Seam Remoting provides a simple means to \"constrain\" the object graph, by "
+"specifying the <literal>exclude</literal> field of the remote method&#39;s "
+"<literal>@WebRemote</literal> annotation. This field accepts a String array "
+"containing one or more paths specified using dot notation. When invoking a "
+"remote method, the objects in the result&#39;s object graph that match these "
+"paths are excluded from the serialized result packet."
+msgstr "O Seam Remoting fornece um simples significado para \"compilir\" o gráfico do objeto, especificando o campo <literal>excluir</literal> do método remoto da anotação <literal>@WebRemote</literal>. Este campo aceita que uma Linha array contenha um ou mais caminhos usando anotação dot. Quando invocando o método remoto, os objetos nos resultados do gráfico do objeto que combinam estes caminhos estão excluídos do pacote de resultado serializado. "
+
+#. Tag: para
+#: Remoting.xml:249
+#, no-c-format
+msgid ""
+"For all our examples, we&#39;ll use the following <literal>Widget</literal> "
+"class:"
+msgstr "Usaremos a seguinte classe <literal>Widget</literal> para nossos exemplos:"
+
+#. Tag: programlisting
+#: Remoting.xml:252
+#, no-c-format
+msgid ""
+"@Name(\"widget\")\n"
+"public class Widget\n"
+"{\n"
+"  private String value;\n"
+"  private String secret;\n"
+"  private Widget child;\n"
+"  private Map&lt;String,Widget&gt; widgetMap;\n"
+"  private List&lt;Widget&gt; widgetList;\n"
+"  \n"
+"  // getters and setters for all fields\n"
+"}"
+msgstr ""
+"@Name(\"widget\")\n"
+"public class Widget\n"
+"{\n"
+"  private String value;\n"
+"  private String secret;\n"
+"  private Widget child;\n"
+"  private Map&lt;String,Widget&gt; widgetMap;\n"
+"  private List&lt;Widget&gt; widgetList;\n"
+"  \n"
+"  // getters and setters for all fields\n"
+"}"
+
+#. Tag: title
+#: Remoting.xml:253
+#, no-c-format
+msgid "Constraining normal fields"
+msgstr "Campos de restrição normal"
+
+#. Tag: para
+#: Remoting.xml:254
+#, no-c-format
+msgid ""
+"If your remote method returns an instance of <literal>Widget</literal>, but "
+"you don&#39;t want to expose the <literal>secret</literal> field because it "
+"contains sensitive information, you would constrain it like this:"
+msgstr "Se o seu método remoto retornar uma instância de <literal>Widget</literal>, mas você não queira expor o campo <literal>secreto</literal> devido a este conter informações sensíveis, você deverá restringí-lo como segue abaixo:"
+
+#. Tag: programlisting
+#: Remoting.xml:257
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+"@WebRemote(exclude = {\"secret\"})\n"
+"  public Widget getWidget();"
+
+#. Tag: para
+#: Remoting.xml:258
+#, no-c-format
+msgid ""
+"The value \"secret\" refers to the <literal>secret</literal> field of the "
+"returned object. Now, suppose that we don&#39;t care about exposing this "
+"particular field to the client. Instead, notice that the <literal>Widget</"
+"literal> value that is returned has a field <literal>child</literal> that is "
+"also a <literal>Widget</literal>. What if we want to hide the "
+"<literal>child</literal>&#39;s <literal>secret</literal> value instead? We "
+"can do this by using dot notation to specify this field&#39;s path within "
+"the result&#39;s object graph:"
+msgstr ""
+"O valor \"secreto\" refere-se ao campo <literal>secreto</literal> do objeto retornado. Vamos supor que não nos importamos em expor este campo específico ao cliente. Por outro lado, perceba que o valor <literal>Widget</"
+"literal> retornado possui um campo <literal>child</literal> que é também um <literal>Widget</literal>. E se quisermos ocultar o valor <literal>secreto</literal> do <literal>child</literal>? Podemos realizar isto apenas usando a notação dot para especificar este caminho do campo com o gráfico de objeto do resultado:"
+
+#. Tag: programlisting
+#: Remoting.xml:261
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"child.secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+"@WebRemote(exclude = {\"child.secret\"})\n"
+"  public Widget getWidget();"
+
+#. Tag: title
+#: Remoting.xml:262
+#, no-c-format
+msgid "Constraining Maps and Collections"
+msgstr "Restringindo Mapas e Coleções"
+
+#. Tag: para
+#: Remoting.xml:263
+#, no-c-format
+msgid ""
+"The other place that objects can exist within an object graph are within a "
+"<literal>Map</literal> or some kind of collection (<literal>List</literal>, "
+"<literal>Set</literal>, <literal>Array</literal>, etc). Collections are "
+"easy, and are treated like any other field. For example, if our "
+"<literal>Widget</literal> contained a list of other <literal>Widget</"
+"literal>s in its <literal>widgetList</literal> field, to constrain the "
+"<literal>secret</literal> field of the <literal>Widget</literal>s in this "
+"list the annotation would look like this:"
+msgstr ""
+"Os objetos podem estar em outros lugares como o <literal>Map</literal> ou algum tipo de coleção (<literal>List</literal>, "
+"<literal>Set</literal>, <literal>Array</literal>, etc, com um gráfico de objeto). As coleções são fáceis e tratadas como qualquer outro campo. Por exemplo, se nosso <literal>Widget</literal> conter a lista de outro <literal>Widget</"
+"literal> em seu campo <literal>widgetList</literal>, a anotação para restringir o campo <literal>secreto</literal> desta lista deve parecer-se com: "
+
+#. Tag: programlisting
+#: Remoting.xml:266
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetList.secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+"@WebRemote(exclude = {\"widgetList.secret\"})\n"
+"  public Widget getWidget();"
+
+#. Tag: para
+#: Remoting.xml:267
+#, no-c-format
+msgid ""
+"To constrain a <literal>Map</literal>&#39;s key or value, the notation is "
+"slightly different. Appending <literal>[key]</literal> after the "
+"<literal>Map</literal>&#39;s field name will constrain the <literal>Map</"
+"literal>&#39;s key object values, while <literal>[value]</literal> will "
+"constrain the value object values. The following example demonstrates how "
+"the values of the <literal>widgetMap</literal> field have their "
+"<literal>secret</literal> field constrained:"
+msgstr ""
+"Para restringir um valor ou chave do <literal>Mapa</literal> a notação é um pouco diferente. Anexando a <literal>[key]</literal> após o nome do campo do <literal>Map</literal> irá restringir os valores de objeto chave do <literal>Map</"
+"literal>, enquanto que o <literal>[value]</literal> irá restringir os valores do objeto valor. O seguinte exemplo demonstra como os valores do campo <literal>widgetMap</literal> possuem o próprio campo <literal>secreto</literal> restringido:"
+
+#. Tag: programlisting
+#: Remoting.xml:270
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetMap[value].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+"@WebRemote(exclude = {\"widgetMap[value].secret\"})\n"
+"  public Widget getWidget();"
+
+#. Tag: title
+#: Remoting.xml:271
+#, no-c-format
+msgid "Constraining objects of a specific type"
+msgstr "Restringindo objetos de um tipo específico"
+
+#. Tag: para
+#: Remoting.xml:272
+#, no-c-format
+msgid ""
+"There is one last notation that can be used to constrain the fields of a "
+"type of object no matter where in the result&#39;s object graph it appears. "
+"This notation uses either the name of the component (if the object is a Seam "
+"component) or the fully qualified class name (only if the object is not a "
+"Seam component) and is expressed using square brackets:"
+msgstr "Há uma última notação que pode ser usado para restringir os campos de um tipo de objeto, não importando onde o gráfico objeto de resultado isto aparecerá. Esta notação usa tanto o nome do componente (caso o objeto seja um componente Seam) ou o nome da classe inteiramente qualificado (apenas se o objeto não for um componente Seam) e é usado usando colchetes:"
+
+#. Tag: programlisting
+#: Remoting.xml:275
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"[widget].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+"@WebRemote(exclude = {\"[widget].secret\"})\n"
+"  public Widget getWidget();"
+
+#. Tag: title
+#: Remoting.xml:276
+#, no-c-format
+msgid "Combining Constraints"
+msgstr "Combinando Restrições"
+
+#. Tag: para
+#: Remoting.xml:277
+#, no-c-format
+msgid ""
+"Constraints can also be combined, to filter objects from multiple paths "
+"within the object graph:"
+msgstr "Restrições podem ser também combinadas para filtrar objetos de diversos caminhos com o gráfico de objeto:"
+
+#. Tag: programlisting
+#: Remoting.xml:280
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetList.secret\", \"widgetMap[value].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+"@WebRemote(exclude = {\"widgetList.secret\", \"widgetMap[value].secret\"})\n"
+"  public Widget getWidget();"
+
+#. Tag: title
+#: Remoting.xml:281
+#, no-c-format
+msgid "JMS Messaging"
+msgstr "JMS Messaging"
+
+#. Tag: para
+#: Remoting.xml:282
+#, no-c-format
+msgid ""
+"Seam Remoting provides experimental support for JMS Messaging. This section "
+"describes the JMS support that is currently implemented, but please note "
+"that this may change in the future. It is currently not recommended that "
+"this feature is used within a production environment."
+msgstr "O Seam Remoting fornece suporte experimental para o JMS Messaging. Esta seção descreve o suporte JMS que é atualmente implementado, mas perceba que isto poderá mudar a frente. Atualmente, este recurso não é usado com um ambiente de produção."
+
+#. Tag: para
+#: Remoting.xml:286
+#, no-c-format
+msgid ""
+"Before you can subscribe to a JMS topic, you must first configure a list of "
+"the topics that can be subscribed to by Seam Remoting. List the topics under "
+"<literal>org.jboss.seam.remoting.messaging.subscriptionRegistry."
+"allowedTopics</literal> in <literal>seam.properties</literal>, <literal>web."
+"xml</literal> or <literal>components.xml</literal>."
+msgstr ""
+"Antes de você estar apto a subscrever-se ao tópico JMS, você deve primeiramente configurar um alista de tópicos que pode ser subscrita pelo Seam Remoting. Liste os tópicos sob <literal>org.jboss.seam.remoting.messaging.subscriptionRegistry."
+"allowedTopics</literal> em <literal>seam.properties</literal>, <literal>web."
+"xml</literal> ou <literal>components.xml</literal>."
+
+#. Tag: programlisting
+#: Remoting.xml:289 Remoting.xml:322
+#, no-c-format
+msgid "&lt;remoting:remoting poll-timeout=\"5\" poll-interval=\"1\"/&gt;"
+msgstr "&lt;remoting:remoting poll-timeout=\"5\" poll-interval=\"1\"/&gt;"
+
+#. Tag: title
+#: Remoting.xml:290
+#, no-c-format
+msgid "Subscribing to a JMS Topic"
+msgstr "Subscrevendo-se ao Tópico JMS"
+
+#. Tag: para
+#: Remoting.xml:291
+#, no-c-format
+msgid "The following example demonstrates how to subscribe to a JMS Topic:"
+msgstr "O seguinte exemplo demonstra como subscrever-se ao Tópico JMS:"
+
+#. Tag: programlisting
+#: Remoting.xml:294
+#, no-c-format
+msgid ""
+"function subscriptionCallback(message)\n"
+"  {\n"
+"    if (message instanceof Seam.Remoting.TextMessage)\n"
+"      alert(\"Received message: \" + message.getText());\n"
+"  }        \n"
+"        \n"
+"  Seam.Remoting.subscribe(\"topicName\", subscriptionCallback);"
+msgstr ""
+"function subscriptionCallback(message)\n"
+"  {\n"
+"    if (message instanceof Seam.Remoting.TextMessage)\n"
+"      alert(\"Received message: \" + message.getText());\n"
+"  }        \n"
+"        \n"
+"  Seam.Remoting.subscribe(\"topicName\", subscriptionCallback);"
+
+#. Tag: para
+#: Remoting.xml:295
+#, no-c-format
+msgid ""
+"The <literal>Seam.Remoting.subscribe()</literal> method accepts two "
+"parameters, the first being the name of the JMS Topic to subscribe to, the "
+"second being the callback function to invoke when a message is received."
+msgstr "O método <literal>Seam.Remoting.subscribe()</literal> aceita dois parâmetros, o primeiro sendo o nome do Tópico JMS para ser subscrito, e segundo sendo a função de retorno de chamada para a invocação, uma vez que a mensagem é recebida."
+
+#. Tag: para
+#: Remoting.xml:298
+#, no-c-format
+msgid ""
+"There are two types of messages supported, Text messages and Object "
+"messages. If you need to test for the type of message that is passed to your "
+"callback function you can use the <literal>instanceof</literal> operator to "
+"test whether the message is a <literal>Seam.Remoting.TextMessage</literal> "
+"or <literal>Seam.Remoting.ObjectMessage</literal>. A <literal>TextMessage</"
+"literal> contains the text value in its <literal>text</literal> field (or "
+"alternatively call <literal>getText()</literal> on it), while an "
+"<literal>ObjectMessage</literal> contains its object value in its "
+"<literal>object</literal> field (or call its <literal>getObject()</literal> "
+"method)."
+msgstr ""
+"Existem dois tipos de mensagens suportadas, as mensagens Texto e as mensagens Objeto. Caso você precise testar o tipo de mensagem que é passado para a sua função de chamada de retorno, você poderá usar o operador <literal>instanceof</literal> onde a mensagem é um <literal>Seam.Remoting.TextMessage</literal> "
+"ou <literal>Seam.Remoting.ObjectMessage</literal>. Uma <literal>TextMessage</"
+"literal> contém o valor do texto em seu campo de <literal>texto</literal> (ou alternativamente chama <literal>getText()</literal> no mesmo), enquanto que uma <literal>ObjectMessage</literal> contém seu valor do objeto em seu campo do <literal>objeto</literal> (ou chama seu método <literal>getObject()</literal>)."
+
+#. Tag: title
+#: Remoting.xml:301
+#, no-c-format
+msgid "Unsubscribing from a Topic"
+msgstr "Cancelando a inscrição de um Tópico"
+
+#. Tag: para
+#: Remoting.xml:302
+#, no-c-format
+msgid ""
+"To unsubscribe from a topic, call <literal>Seam.Remoting.unsubscribe()</"
+"literal> and pass in the topic name:"
+msgstr ""
+"Para cancelar a inscrição de um tópico, chame o <literal>Seam.Remoting.unsubscribe()</"
+"literal> e passe o nome do tópico:"
+
+#. Tag: programlisting
+#: Remoting.xml:305
+#, no-c-format
+msgid "Seam.Remoting.unsubscribe(\"topicName\");"
+msgstr "Seam.Remoting.unsubscribe(\"topicName\");"
+
+#. Tag: title
+#: Remoting.xml:306
+#, no-c-format
+msgid "Tuning the Polling Process"
+msgstr "Ajustando o Processo de Pesquisa"
+
+#. Tag: para
+#: Remoting.xml:307
+#, no-c-format
+msgid ""
+"There are two parameters which you can modify to control how polling occurs. "
+"The first one is <literal>Seam.Remoting.pollInterval</literal>, which "
+"controls how long to wait between subsequent polls for new messages. This "
+"parameter is expressed in seconds, and its default setting is 10."
+msgstr "Há dois parâmetros que você pode modificar para ter controle de como a pesquisa ocorre. O primeiro é o <literal>Seam.Remoting.pollInterval</literal>, que controla o tempo de espera entre pesquisas subseqüentes para novas mensagens. Este parâmetro é expressado em segundos e a configuração de seu parâmetro é 10. "
+
+#. Tag: para
+#: Remoting.xml:310
+#, no-c-format
+msgid ""
+"The second parameter is <literal>Seam.Remoting.pollTimeout</literal>, and is "
+"also expressed as seconds. It controls how long a request to the server "
+"should wait for a new message before timing out and sending an empty "
+"response. Its default is 0 seconds, which means that when the server is "
+"polled, if there are no messages ready for delivery then an empty response "
+"will be immediately returned."
+msgstr "O segundo parâmetro é <literal>Seam.Remoting.pollTimeout</literal>, e é também expressado em segundos. Ele controla quanto tempo uma solicitação a um servidor deve esperar por uma nova mensagem antes do tempo limite e enviar uma resposta vazia. O padrão dele é 0 segundo, significando que quando um servidor é pesquisado, caso não hajam mensagens prontas para envio, uma resposta em branco será retornada imediatamente. "
+
+#. Tag: para
+#: Remoting.xml:313
+#, no-c-format
+msgid ""
+"Caution should be used when setting a high <literal>pollTimeout</literal> "
+"value; each request that has to wait for a message means that a server "
+"thread is tied up until a message is received, or until the request times "
+"out. If many such requests are being served simultaneously, it could mean a "
+"large number of threads become tied up because of this reason."
+msgstr "Deve-se ter cautela quando configurando um grande valor <literal>pollTimeout</literal>. Cada valor que precisa esperar por uma mensagem significando que o segmentado servidor está ocupado até que uma mensagem for recebida, ou até que a solicitação exceda o tempo limite. Caso muitas solicitações sejam servidas simultaneamente, isto significa que um grande número de segmentos ficarão ocupados devido a isto."
+
+#. Tag: para
+#: Remoting.xml:316
+#, no-c-format
+msgid ""
+"It is recommended that you set these options via components.xml, however "
+"they can be overridden via Javascript if desired. The following example "
+"demonstrates how to configure the polling to occur much more aggressively. "
+"You should set these parameters to suitable values for your application:"
+msgstr "É recomendado que você determine estas opções por meio de components.xml. No entanto, eles podem substituir pelo Javascript se desejado. O seguinte exemplo demonstra como configurar a pesquisa para ocorrer de maneira mais agressiva. Você deve configurar estes parâmetros para valores adequados para seu aplicativo:"
+
+#. Tag: para
+#: Remoting.xml:319
+#, no-c-format
+msgid "Via components.xml:"
+msgstr "Por meio de components.xml:"
+
+#. Tag: para
+#: Remoting.xml:323
+#, no-c-format
+msgid "Via JavaScript:"
+msgstr "Por meio do JavaScript:"
+
+#. Tag: programlisting
+#: Remoting.xml:326
+#, no-c-format
+msgid ""
+"// Only wait 1 second between receiving a poll response and sending the next "
+"poll request.\n"
+"  Seam.Remoting.pollInterval = 1;\n"
+"  \n"
+"  // Wait up to 5 seconds on the server for new messages\n"
+"  Seam.Remoting.pollTimeout = 5;"
+msgstr ""
+"// Only wait 1 second between receiving a poll response and sending the next "
+"poll request.\n"
+"  Seam.Remoting.pollInterval = 1;\n"
+"  \n"
+"  // Wait up to 5 seconds on the server for new messages\n"
+"  Seam.Remoting.pollTimeout = 5;"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Seam_Reference_Guide.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Seam_Reference_Guide.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Seam_Reference_Guide.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,419 @@
+# translation of Seam_Reference_Guide.po to Brazilian Portuguese
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Leticia de Lima <ldelima at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Seam_Reference_Guide\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-05-19 06:14+0000\n"
+"PO-Revision-Date: 2008-05-22 15:09+1000\n"
+"Last-Translator: Leticia de Lima <ldelima at redhat.com>\n"
+"Language-Team: Brazilian Portuguese <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms:  JBEAP420 \n"
+
+#. Tag: title
+#: Seam_Reference_Guide.xml:9
+#, no-c-format
+msgid "Introduction to JBoss Seam"
+msgstr "Introdução ao JBoss Seam"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:10
+#, no-c-format
+msgid ""
+"Seam is an application framework for Java EE 5. It is inspired by the "
+"following principles:"
+msgstr "O Seam é um framework de aplicativo para o Java EE 5. Ele é baseado nos seguintes princípios:"
+
+#. Tag: emphasis
+#: Seam_Reference_Guide.xml:15
+#, no-c-format
+msgid "Integrate JSF with EJB 3.0"
+msgstr "Integração JSF com o EJB 3.0"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:17
+#, no-c-format
+msgid ""
+"JSF and EJB 3.0 are two of the best new features of Java EE 5. EJB3 is a "
+"brand new component model for server side business and persistence logic. "
+"Meanwhile, JSF is a great component model for the presentation tier. "
+"Unfortunately, neither component model is able to solve all problems in "
+"computing by itself. Indeed, JSF and EJB3 work best used together. But the "
+"Java EE 5 specification provides no standard way to integrate the two "
+"component models. Fortunately, the creators of both models foresaw this "
+"situation and provided standard extension points to allow extension and "
+"integration of other solutions."
+msgstr "O JSF e EJB 3.0 são os dois melhores recursos do Java EE 5. O EJB3 é um modelo de componente novo para o comércio no lado do servidor e lógica de persistência. Enquanto isto, o JSF é um excelente modelo de componente para a camada de apresentação. Infelizmente, nem mesmo o modelo do componente está apto a resolver todos os problemas em computação por conta própria. Adicionado a isto, o JSF e EJB3 trabalham melhor juntos. No entanto, a especificação Java EE 5 não fornece uma maneira padrão para integrar os dois modelos de componentes. Felizmente, os criadores de ambos modelos viram à frente esta situação e forneceram pontos de extensão padrão para permitir a extensão e integração de outras soluções. "
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:20
+#, no-c-format
+msgid ""
+"Seam unifies the component models of JSF and EJB3, eliminating glue code, "
+"and letting the developer think about the business problem."
+msgstr "O Seam unifica os modelos de componente JSF e EJB3, eliminando o código colar, além de permitir que o desenvolvedor pense sobre este problema comercial."
+
+#. Tag: emphasis
+#: Seam_Reference_Guide.xml:26
+#, no-c-format
+msgid "Integrated AJAX"
+msgstr "Integração AJAX"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:28
+#, no-c-format
+msgid ""
+"Seam supports two open source JSF-based AJAX solutions: ICEfaces and "
+"Ajax4JSF. These solutions let you add AJAX capability to your user interface "
+"without the need to write any JavaScript code."
+msgstr "O Seam suporta duas soluções JSF baseadas em AJAX de código aberto: ICEfaces e Ajax4JSF. Estas soluções permitem que você adicione o recurso AJAX a sua interface do usuário, sem a necessidade de gravar qualquer código JavaScript."
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:31
+#, no-c-format
+msgid ""
+"Seam also provides a built-in JavaScript remoting layer for EJB3 components. "
+"AJAX clients can easily call server-side components and subscribe to JMS "
+"topics, without the need for an intermediate action layer."
+msgstr ""
+"O Seam também fornece uma camada remota JavaScript interna para os "
+"componentes EJB3. Os clientes AJAX podem chamar facilmenete os componentes "
+"no lado do servidor e subscrever-se aos tópicos JMS, sem a necessidade de "
+"uma camada action intermediária."
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:34
+#, no-c-format
+msgid ""
+"Neither of these approaches would work well, were it not for Seam&#39;s "
+"built-in concurrency and state management, which ensures that many "
+"concurrent fine-grained, asynchronous AJAX requests are handled safely and "
+"efficiently on the server side."
+msgstr ""
+"Nenhuma destas abordagens funcionariam bem, caso elas não fossem de concorrência interna de Seam e gerenciamento de estado, dos quais garantem que muitas "
+"concorrências fine-grained, solicitações AJAX assíncronas sejam distribuídas "
+"seguramente e com eficiência no lado do servidor."
+
+#. Tag: emphasis
+#: Seam_Reference_Guide.xml:40
+#, no-c-format
+msgid "Integrate Business Process as a First Class Construct"
+msgstr "Processo Comercial Integrado como uma Construção de Primeira Classe"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:42
+#, no-c-format
+msgid ""
+"Optionally, Seam integrates transparent business process management via "
+"jBPM. You won&#39;t believe how easy it is to implement complex workflows "
+"using jBPM and Seam."
+msgstr "Opcionalmente, o Seam integra o gerenciamento de processo comercial transparente através do JBPM. Você não irá acreditar o quanto é fácil de se implementar workflows complexos usando JBPM e Seam."
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:45
+#, no-c-format
+msgid ""
+"Seam even allows definition of presentation tier conversation flow by the "
+"same means."
+msgstr "O Seam ainda permite a definição do fluxo de conversação da camada de apresentação pelos mesmos meios. "
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:48
+#, no-c-format
+msgid ""
+"JSF provides an incredibly rich event model for the presentation tier. Seam "
+"enhances this model by exposing jBPM&#39;s business process related events "
+"via exactly the same event handling mechanism, providing a uniform event "
+"model for Seam&#39;s uniform component model."
+msgstr "O JSF fornece um incrível modelo de evento para a camada de apresentação. O Seam amplia este modelo expondo os eventos relacionados de processo comercial do JBPM através do mesmo mecanismo de manuseio do evento. Desta maneira, ele fornece um modelo de evento uniforme para o modelo de componente uniforme de Seam."
+
+#. Tag: emphasis
+#: Seam_Reference_Guide.xml:54
+#, no-c-format
+msgid "One Kind of \"Stuff\""
+msgstr "Um Tipo de \"Stuff\""
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:56
+#, no-c-format
+msgid ""
+"Seam provides a uniform component model. A Seam component may be stateful, "
+"with the state associated to any one of a number of contexts, ranging from "
+"the long-running business process to a single web request."
+msgstr ""
+"O Seam fornece um modelo de componente uniforme. O componente Seam pode "
+"estar com estado, sendo este associado a qualquer um dos contextos, abrangendo desde o processo comercial de longa execução a uma única solicitação da web. "
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:59
+#, no-c-format
+msgid ""
+"There is no distinction between presentation tier components and business "
+"logic components in Seam. It is possible to write Seam applications where "
+"\"everything\" is an EJB. This may come as a surprise if you are used to "
+"thinking of EJBs as coarse-grained, heavyweight objects that are a pain in "
+"the backside to create! However, EJB 3.0 completely changes the nature of "
+"EJB from the point of view of the developer. An EJB is a fine-grained object "
+"- nothing more complex than an annotated JavaBean. Seam even encourages you "
+"to use session beans as JSF action listeners!"
+msgstr ""
+"Não há distinção entre componentes de camada de apresentação e componentes "
+"de lógica comercial em Seam. É possível gravar aplicativos Seam num ambiente onde \"tudo"
+"\" é um EJB. Isto pode ser uma surpresa caso você esteja acostumado a pensar "
+"nos EJBs como coarse-grain (componente grande), objetos de carga pesada que "
+"são difíceis de serem criados no final. No entanto, o EJB 3.0 muda "
+"completamente a natureza do EJB a partir do ponto de vista do desenvolvedor. "
+"Um EJB é um objeto fine-grained (componente pequeno) - nada mais complexo "
+"que um JavaBean anotado. O Seam ainda o incentiva a usar os beans de sessão "
+"como JSF action listeners."
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:62
+#, no-c-format
+msgid ""
+"Unlike plain Java EE or J2EE components, Seam components may "
+"<emphasis>simultaneously</emphasis> access state associated with the web "
+"request and state held in transactional resources (without the need to "
+"propagate web request state manually via method parameters). You might "
+"object that the application layering imposed upon you by the old J2EE "
+"platform was a Good Thing. Well, nothing stops you creating an equivalent "
+"layered architecture using Seam - the difference is that <emphasis>you</"
+"emphasis> get to architect your own application and decide what the layers "
+"are and how they work together."
+msgstr ""
+"Diferente do Java EE plano ou componentes J2EE, os componentes Seam podem acessar <emphasis>simultaneamente</emphasis> o estado associado com a solicitação da web e estado retido nos recursos transacionais (sem a necessidade de propagar manualmente o estado de solicitação da web através dos parâmetros do método). Você talvez não concorde que o aplicativo estendido em camadas imposto à você pela antiga plataforma J2EE era uma Coisa Boa. Bem, nada o impede "
+"de criar uma arquitetura de camada equivalente usando Seam. A diferença é "
+"que <emphasis>você</emphasis> arquiteta o seu próprio aplicativo e decide o "
+"que as camadas são e como elas trabalham juntas."
+
+#. Tag: emphasis
+#: Seam_Reference_Guide.xml:68
+#, no-c-format
+msgid "Declarative State Management"
+msgstr "Gerenciamento do Estado Declarativo"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:70
+#, no-c-format
+msgid ""
+"We are all used to the concept of declarative transaction management and "
+"J2EE declarative security from EJB 2.x. EJB 3.0 even introduces declarative "
+"persistence context management. These are three examples of a broader "
+"problem of managing state that is associated with a particular "
+"<emphasis>context</emphasis>, while ensuring that all needed cleanup occurs "
+"when the context ends. Seam takes the concept of declarative state "
+"management much further and applies it to <emphasis>application state</"
+"emphasis>. Traditionally, J2EE applications almost always implement state "
+"management manually, by getting and setting servlet session and request "
+"attributes. This approach to state management is the source of many bugs and "
+"memory leaks when applications fail to clean up session attributes, or when "
+"session data associated with different workflows collides in a multi-window "
+"application. Seam has the potential to almost entirely eliminate this class "
+"of bugs."
+msgstr ""
+"Estamos acostumados ao conceito de gerenciamento de transação declarativa e "
+"seguridade declarativa J2EE a partir do EJB 2.x. O EJB 3.0 introduz ainda o gerenciamento do contexto de persistência declarativo. Estes são os três "
+"exemplos de um problemas mais amplos do gerenciamento de estado, do qual está "
+"associado com um <emphasis>contexto</emphasis> particular, enquanto "
+"garantindo que toda a limpeza necessária aconteça no final do contexto. "
+"O Seam usa o conceito de gerenciamento do estado declarativo muito além e o "
+"aplica ao <emphasis>estado do aplicativo</emphasis>. Tradicionalmente os "
+"aplicativos J2EE quase sempre implementam manualmente o gerenciamento de "
+"estado, obtendo e configurando a sessão servlet e os atributos de "
+"solicitação. Esta abordagem ao gerenciamento de estado é um recurso de muitas "
+"bugs e vazamento de memória quando os aplicativos falham em limpar os "
+"atributos de sessão. Ou ainda, quando dados de sessão associados com "
+"diferentes fluxos de trabalho colidem com um aplicativo de janela múltipla. "
+"O Seam possui o potencial para eliminar quase que inteiramente esta classe "
+"de bugs."
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:73
+#, no-c-format
+msgid ""
+"Declarative application state management is made possible by the richness of "
+"the <emphasis>context model</emphasis> defined by Seam. Seam extends the "
+"context model defined by the servlet spec&mdash;request, session, "
+"application&mdash;with two new contexts&mdash;conversation and business "
+"process&mdash;that are more meaningful from the point of view of the "
+"business logic."
+msgstr "O gerenciamento de estado do aplicativo declarativo é possível graças à riqueza do <emphasis>modelo de contexto</emphasis> definido em Seam. O Seam estende o modelo de contexto definido pelo servlet spec&mdash;solicitação, sessão, aplicativo&mdash;com dois novos contextos&mdash;conversação e processo comercial&mdash;dos quais são mais significativos a partir do ponto de vista de lógica comercial."
+
+#. Tag: emphasis
+#: Seam_Reference_Guide.xml:79
+#, no-c-format
+msgid "Bijection"
+msgstr "Bijeção"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:81
+#, no-c-format
+msgid ""
+"The notion of <emphasis>Inversion of Control</emphasis> or "
+"<emphasis>dependency injection</emphasis> exists in both JSF and EJB3, as "
+"well as in numerous so-called \"lighweight containers\". Most of these "
+"containers emphasize injection of components that implement "
+"<emphasis>stateless services</emphasis>. Even when injection of stateful "
+"components is supported (such as in JSF), it is virtually useless for "
+"handling application state because the scope of the stateful component "
+"cannot be defined with sufficient flexibility."
+msgstr "A noção de <emphasis>Controle de Inversão</emphasis> ou <emphasis>injeção de dependência</emphasis> existe em ambos JSF e EJB3, assim como em inúmeros \"containers de carga leve\". A maioria destes containers enfatizam a injeção dos componentes, da qual implementa os <emphasis>serviços sem estado</emphasis>. Mesmo quando a injeção dos componentes com estado é suportada (assim como em JSF), isto é virtualmente inútil para o manuseio do estado do aplicativo, uma vez que o escopo do componente com estado não pode ser definido com a flexibilidade necessária."
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:84
+#, no-c-format
+msgid ""
+"<emphasis>Bijection</emphasis> differs from IoC in that it is "
+"<emphasis>dynamic</emphasis>, <emphasis>contextual</emphasis>, and "
+"<emphasis>bidirectional</emphasis>. You can think of it as a mechanism for "
+"aliasing contextual variables (names in the various contexts bound to the "
+"current thread) to attributes of the component. Bijection allows auto-"
+"assembly of stateful components by the container. It even allows a component "
+"to safely and easily manipulate the value of a context variable, just by "
+"assigning to an attribute of the component."
+msgstr ""
+"A <emphasis>Bijeção</emphasis> difere-se do IoC que é <emphasis>dinâmico</"
+"emphasis>, <emphasis>contextual</emphasis> e <emphasis>bidirecional</"
+"emphasis>. Você pode ver isto como um mecanismo de variáveis contextuais "
+"aliasing (nomes em muitos dos contextos vinculados ao segmento atual) de "
+"atribuição ao componente. A bijeção permite a auto-linguagem de componentes "
+"com estado pelo container. Isto permite ainda que um componente manipule "
+"seguramente e facilmente o valor de uma variável de contexto , apenas "
+"determinando um atributo do componente."
+
+#. Tag: emphasis
+#: Seam_Reference_Guide.xml:90
+#, no-c-format
+msgid "Workspace Management"
+msgstr "Gerenciamento de Espaço de Trabalho"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:92
+#, no-c-format
+msgid ""
+"Optionally, Seam applications may take advantage of <emphasis>workspace "
+"management</emphasis>, allowing users to freely switch between different "
+"conversations (workspaces) in a single browser window. Seam provides not "
+"only correct multi-window operation, but also multi-window-like operation in "
+"a single window!"
+msgstr ""
+"Opcionalmente, os aplicativos Seam possam tirar proveito do "
+"<emphasis>gerenciamento do espaço de trabalho</emphasis>, permitindo que "
+"usuários mudem livremente entre diferentes conversações (espaços de "
+"trabalho) em uma única janela do navegador. O Seam fornece não apenas a "
+"correta operação de janela múltipla, mas também a operação parecida com a "
+"janela múltipla em uma única janela. "
+
+#. Tag: emphasis
+#: Seam_Reference_Guide.xml:98
+#, no-c-format
+msgid "Annotated POJOs Everywhere"
+msgstr "POJOs Anotados por Toda a Parte"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:100
+#, no-c-format
+msgid ""
+"EJB 3.0 embraces annotations and \"configuration by exception\" as the "
+"easiest way to provide information to the container in a declarative form. "
+"Unfortunately, JSF is still heavily dependent on verbose XML configuration "
+"files. Seam extends the annotations provided by EJB 3.0 with a set of "
+"annotations for declarative state management and declarative context "
+"demarcation. This lets you eliminate the noisy JSF managed bean declarations "
+"and reduce the required XML to just that information which truly belongs in "
+"XML (the JSF navigation rules)."
+msgstr ""
+"O EJB 3.0 adota as anotações e \"configuração por exceção\" como a maneira mais "
+"fácil de se fornecer informação ao container num formulário declarativo. "
+"Infelizmente, o JSF continua extremamente dependente da verbose dos arquivos de configuração XML. O Seam estende as anotações fornecidas pelo EJB "
+"3.0 com um conjunto de anotações para o gerenciamento de estado declarativo "
+"e demarcação de contexto declarativo. Isto permite que você elimine as declarações de bean gerenciado JSF e reduza a solicitação XML para "
+"apenas aquela informação que pertence verdadeiramente ao XML (as regras de "
+"navegação JSF)."
+
+#. Tag: emphasis
+#: Seam_Reference_Guide.xml:106
+#, no-c-format
+msgid "Testability as a Core Feature"
+msgstr "Testabilidade como um Recurso Principal"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:108
+#, no-c-format
+msgid ""
+"Seam components, being POJOs, are by nature unit testable. But for complex "
+"applications, unit testing alone is insufficient. Integration testing has "
+"traditionally been a messy and difficult task for Java web applications. "
+"Therefore, Seam provides for testability of Seam applications as a core "
+"feature of the framework. You can easily write JUnit or TestNG tests that "
+"reproduce a whole interaction with a user, exercising all components of the "
+"system apart from the view (the JSP or Facelets page). You can run these "
+"tests directly inside your IDE, where Seam will automatically deploy EJB "
+"components into the JBoss Embeddable EJB3 container."
+msgstr ""
+"Os componentes Seam, sendo POJOs, são por natureza uma unidade testável. Mas "
+"para aplicativos mais complexos, a unidade testável sozinha é insuficiente. Normalmente, o teste de integração tem sido confuso e uma tarefa difícil para os aplicativos da web Java. Desta forma, o Seam fornece a "
+"testabilidade de aplicativos Seam como um recurso principal do framework. "
+"Você pode facilmente gravar os testes JUnit ou TestNG que reproduzem uma "
+"interação completa com o usuário, movimentando todos os componentes do "
+"sistema, com exceção da visualização (o JSP ou página Facelets). Você pode "
+"rodar estes testes diretamente dentro de seu IDE, onde o Seam irá "
+"automaticamente implementar os componentes EJB no container JBoss Embeddable "
+"EJB3. "
+
+#. Tag: emphasis
+#: Seam_Reference_Guide.xml:114
+#, no-c-format
+msgid "Get started now!"
+msgstr "Inicialização"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:116
+#, no-c-format
+msgid ""
+"Seam works in any application server that supports EJB 3.0. You can even use "
+"Seam in a servlet container like Tomcat, or in any J2EE application server, "
+"by leveraging the new JBoss Embeddable EJB3 container."
+msgstr ""
+"O Seam trabalha em qualquer servidor do aplicativo que suporta EJB 3.0. Você "
+"pode ainda usar o Seam em um container servlet como Tomcat ou em qualquer "
+"servidor de aplicativo J2EE, apenas investindo no novo container JBoss Embeddable "
+"EJB3."
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:119
+#, no-c-format
+msgid ""
+"However, we realize that not everyone is ready to make the switch to EJB "
+"3.0. So, in the interim, you can use Seam as a framework for applications "
+"that use JSF for presentation, Hibernate (or plain JDBC) for persistence and "
+"JavaBeans for application logic. Then, when you&#39;re ready to make the "
+"switch to EJB 3.0, migration will be straightforward."
+msgstr ""
+"No entanto, nós compreendemos que nem todos estão prontos para realizar a "
+"mudança para o EJB 3.0. Então, neste intermédio, você poderá usar o Seam como "
+"um framework para os aplicativos que usam o JSF para apresentação, Hiberate "
+"(ou JDBC plano) para persistência e JavaBeans para a lógica do aplicativo. "
+"Então, quando você estiver pronto para realizar esta mudança para o EJB 3.0, "
+"a migração será será fácil de se realizar."
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:130
+#, no-c-format
+msgid ""
+"It turns out that the combination of Seam, JSF and EJB3 is <emphasis>the</"
+"emphasis> simplest way to write a complex web application in Java. You "
+"won&#39;t believe how little code is required!"
+msgstr ""
+"A combinação do Seam, JSF e EJB3 é <emphasis>a</emphasis> maneira mais fácil "
+"de gravar um aplicativo da web complexo em Java. Você não vai acreditar o "
+"pouco que se pede de código."
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Security.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Security.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Security.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2171 @@
+# translation of Security.po to Brazilian Portuguese
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Leticia de Lima <ldelima at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Security\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2008-08-07 12:23+1000\n"
+"Last-Translator: Leticia de Lima <ldelima at redhat.com>\n"
+"Language-Team: Brazilian Portuguese <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms:  JBEAP420 \n"
+
+#. Tag: title
+#: Security.xml:6
+#, no-c-format
+msgid "Security"
+msgstr "Segurança"
+
+#. Tag: para
+#: Security.xml:7
+#, no-c-format
+msgid ""
+"The Seam Security API is an optional Seam feature that provides "
+"authentication and authorization features for securing both domain and page "
+"resources within your Seam project."
+msgstr "O API de Segurança Seam é um recurso Seam opcional que fornece autenticação e recursos de autorização para seguridade de ambos domínio e recursos de página com seu Projeto Seam."
+
+#. Tag: title
+#: Security.xml:10
+#, no-c-format
+msgid "Overview"
+msgstr "Visão Geral"
+
+#. Tag: para
+#: Security.xml:11
+#, no-c-format
+msgid "Seam Security provides two different modes of operation:"
+msgstr "A Segurança Seam fornece dois modos diferentes de operação:"
+
+#. Tag: para
+#: Security.xml:16
+#, no-c-format
+msgid ""
+"<emphasis>simplified mode</emphasis> - this mode supports authentication "
+"services and simple role-based security checks."
+msgstr "<emphasis>modo simplificado</emphasis> - este modo suporta os serviços de autenticação e função simples baseada em checagens de segurança."
+
+#. Tag: para
+#: Security.xml:21
+#, no-c-format
+msgid ""
+"<emphasis>advanced mode</emphasis> - this mode supports all the same "
+"features as the simplified mode, plus it offers rule-based security checks "
+"using JBoss Rules."
+msgstr "<emphasis>modo avançado</emphasis> - este modo suporta todos os mesmos recursos de modo simplificado, além de oferecer a regra baseada em checagens de segurança, usando Regras JBoss."
+
+#. Tag: title
+#: Security.xml:26
+#, no-c-format
+msgid "Which mode is right for my application?"
+msgstr "Qual é o modo correto para o meu aplicativo?"
+
+#. Tag: para
+#: Security.xml:27
+#, no-c-format
+msgid ""
+"That all depends on the requirements of your application. If you have "
+"minimal security requirements, for example if you only wish to restrict "
+"certain pages and actions to users who are logged in, or who belong to a "
+"certain role, then the simplified mode will probably be sufficient. The "
+"advantages of this is a more simplified configuration, significantly less "
+"libraries to include, and a smaller memory footprint."
+msgstr "Tudo depende nos requerimentos de seu aplicativo. Caso você tenha solicitações de segurança mínima, (por exemplo: se você apenas quiser restringir algumas páginas e ações para os usuários que estão conectados ou aqueles que pertencem a determinadas funções) então, o modo simplificado irá ser suficiente. As vantagens disto são: uma configuração mais simplificada, um número menor significativo de bibliotecas a serem incluídas e uma menor memória de footprint."
+
+#. Tag: para
+#: Security.xml:30
+#, no-c-format
+msgid ""
+"If on the other hand, your application requires security checks based on "
+"contextual state or complex business rules, then you will require the "
+"features provided by the advanced mode."
+msgstr "Por outro lado, seu aplicativo requer checagens de segurança baseadas no estado contextual ou regras comerciais complexas. Desta forma, você irá requerer os recursos fornecidos pelo modo avançado."
+
+#. Tag: title
+#: Security.xml:33
+#, no-c-format
+msgid "Requirements"
+msgstr "Requerimentos"
+
+#. Tag: para
+#: Security.xml:34
+#, no-c-format
+msgid ""
+"If using the advanced mode features of Seam Security, the following jar "
+"files are required to be configured as modules in <literal>application.xml</"
+"literal>. If you are using Seam Security in simplified mode, these are "
+"<emphasis>not</emphasis> required:"
+msgstr ""
+"Caso os recursos do modo avançado da Segurança Seam estejam em uso, os seguintes arquivos de jarra serão solicitados a serem configurados como módulos no <literal>application.xml</"
+"literal>. Caso você esteja usando a Segurança Seam de maneira simplificada, estes <emphasis>não</emphasis> serão solicitados:"
+
+#. Tag: para
+#: Security.xml:39
+#, no-c-format
+msgid "drools-compiler-3.0.5.jar"
+msgstr "drools-compiler-3.0.5.jar"
+
+#. Tag: para
+#: Security.xml:44
+#, no-c-format
+msgid "drools-core-3.0.5.jar"
+msgstr "drools-core-3.0.5.jar"
+
+#. Tag: para
+#: Security.xml:49
+#, no-c-format
+msgid "commons-jci-core-1.0-406301.jar"
+msgstr "commons-jci-core-1.0-406301.jar"
+
+#. Tag: para
+#: Security.xml:54
+#, no-c-format
+msgid "commons-jci-janino-2.4.3.jar"
+msgstr "commons-jci-janino-2.4.3.jar"
+
+#. Tag: para
+#: Security.xml:59
+#, no-c-format
+msgid "commons-lang-2.1.jar"
+msgstr "commons-lang-2.1.jar"
+
+#. Tag: para
+#: Security.xml:64
+#, no-c-format
+msgid "janino-2.4.3.jar"
+msgstr "janino-2.4.3.jar"
+
+#. Tag: para
+#: Security.xml:69
+#, no-c-format
+msgid "stringtemplate-2.3b6.jar"
+msgstr "stringtemplate-2.3b6.jar"
+
+#. Tag: para
+#: Security.xml:74
+#, no-c-format
+msgid "antlr-2.7.6.jar"
+msgstr "antlr-2.7.6.jar"
+
+#. Tag: para
+#: Security.xml:79
+#, no-c-format
+msgid "antlr-3.0ea8.jar"
+msgstr "antlr-3.0ea8.jar"
+
+#. Tag: para
+#: Security.xml:84
+#, no-c-format
+msgid ""
+"For web-based security, <literal>jboss-seam-ui.jar</literal> must also be "
+"included in the application&#39;s war file. Also, to make use of the "
+"security EL functions, <literal>SeamFaceletViewHandler</literal> must be "
+"used. Configure it in <literal>faces-config.xml</literal> like this:"
+msgstr "Para a segurança baseada na web, o <literal>jboss-seam-ui.jar</literal>  deve ser também incluído no arquivo war do aplicativo. Adicionado a isto, para se fazer uso das funções EL de seguridade, o <literal>SeamFaceletViewHandler</literal> deve ser usado. Configure-o em <literal>faces-config.xml</literal> assim como segue abaixo:"
+
+#. Tag: programlisting
+#: Security.xml:87
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;view-handler&gt;org.jboss.seam.ui.facelet.SeamFaceletViewHandler&lt;/"
+"view-handler&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+"&lt;application&gt;\n"
+"    &lt;view-handler&gt;org.jboss.seam.ui.facelet.SeamFaceletViewHandler&lt;/"
+"view-handler&gt;\n"
+"&lt;/application&gt;"
+
+#. Tag: title
+#: Security.xml:88
+#, no-c-format
+msgid "Authentication"
+msgstr "Autenticação"
+
+#. Tag: para
+#: Security.xml:89
+#, no-c-format
+msgid ""
+"The authentication features provided by Seam Security are built upon JAAS "
+"(Java Authentication and Authorization Service), and as such provide a "
+"robust and highly configurable API for handling user authentication. "
+"However, for less complex authentication requirements Seam offers a much "
+"more simplified method of authentication that hides the complexity of JAAS."
+msgstr "Os recursos de autenticação fornecidos pela Segurança Seam são construídos sob o JAAS (Java Authentication and Authorization Service - Serviço de Autorização e Autenticação Java), e como tal fornecem uma robusta e altamente configurável API, para o manuseamento da autenticação do usuário. No entanto, o Seam oferece um método muito mais simplificado de autenticação que omite a complexidade do JAAS, para as solicitações de autenticação menos complexas."
+
+#. Tag: title
+#: Security.xml:92
+#, no-c-format
+msgid "Configuration"
+msgstr "Configuração"
+
+#. Tag: para
+#: Security.xml:93
+#, no-c-format
+msgid ""
+"The simplified authentication method uses a built-in JAAS login module, "
+"<literal>SeamLoginModule</literal>, which delegates authentication to one of "
+"your own Seam components. This login module is already configured inside "
+"Seam as part of a default application policy and as such does not require "
+"any additional configuration files. It allows you to write an authentication "
+"method using the entity classes that are provided by your own application. "
+"Configuring this simplified form of authentication requires the "
+"<literal>identity</literal> component to be configured in "
+"<literal>components.xml</literal>:"
+msgstr "O método de autenticação simplificado usa um módulo de conexão JAAS interno, <literal>SeamLoginModule</literal>, que delega a autenticação para os próprios componentes Seam. Este módulo de conexão já está configurado dentro do Seam como parte de uma política de aplicativo padrão, e, como tal, não requer arquivos de configuração adicional. Isto permite que você grave um método de autenticação usando as classes de entidade, das quais são fornecidas pelo seu próprio aplicativo. Desta forma, a configuração simplificada de autenticação requer que o componente de <literal>identidade</literal> seja configurado em <literal>components.xml</literal>:"
+
+#. Tag: programlisting
+#: Security.xml:96
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:security=\"http://jboss.com/products/seam/security\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core http://jboss.com/"
+"products/seam/core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components http://jboss.com/"
+"products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/drools http://jboss.com/"
+"products/seam/drools-1.2.xsd\"\n"
+"                 http://jboss.com/products/seam/security http://jboss.com/"
+"products/seam/security-1.2.xsd\"&gt;                \n"
+"        \n"
+"    &lt;security:identity authenticate-method=\"#{authenticator.authenticate}"
+"\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:security=\"http://jboss.com/products/seam/security\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core http://jboss.com/"
+"products/seam/core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components http://jboss.com/"
+"products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/drools http://jboss.com/"
+"products/seam/drools-1.2.xsd\"\n"
+"                 http://jboss.com/products/seam/security http://jboss.com/"
+"products/seam/security-1.2.xsd\"&gt;                \n"
+"        \n"
+"    &lt;security:identity authenticate-method=\"#{authenticator.authenticate}"
+"\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Security.xml:97
+#, no-c-format
+msgid ""
+"If you wish to use the advanced security features such as rule-based "
+"permission checks, all you need to do is include the Drools (JBoss Rules) "
+"jars in your classpath, and add some additional configuration, described "
+"later."
+msgstr "Caso você queira usar recursos de segurança avançada como a regra baseada em checagens de permissão, tudo o que você precisa fazer é incluir jarras Drools (Regras JBoss), em sua classpath, e adicionar alguma configuração adicional descrita adiante."
+
+#. Tag: para
+#: Security.xml:100
+#, no-c-format
+msgid ""
+"The EL expression <literal>#{authenticator.authenticate}</literal> is a "
+"method binding indicating that the <literal>authenticate</literal> method of "
+"the <literal>authenticator</literal> component will be used to authenticate "
+"the user."
+msgstr "A expressão EL <literal>#{authenticator.authenticate}</literal> é o método binding indicando que o método <literal>autenticado</literal> do componente <literal>autenticador</literal> será usado para autenticar o usuário."
+
+#. Tag: title
+#: Security.xml:103
+#, no-c-format
+msgid "Writing an authentication method"
+msgstr "Gravando um método de autenticação"
+
+#. Tag: para
+#: Security.xml:104
+#, no-c-format
+msgid ""
+"The <literal>authenticate-method</literal> property specified for "
+"<literal>identity</literal> in <literal>components.xml</literal> specifies "
+"which method will be used by <literal>SeamLoginModule</literal> to "
+"authenticate users. This method takes no parameters, and is expected to "
+"return a boolean indicating whether authentication is successful or not. The "
+"user&#39;s username and password can be obtained from <literal>Identity."
+"instance().getUsername()</literal> and <literal>Identity.instance()."
+"getPassword()</literal>, respectively. Any roles that the user is a member "
+"of should be assigned using <literal>Identity.instance().addRole()</"
+"literal>. Here&#39;s a complete example of an authentication method inside a "
+"JavaBean component:"
+msgstr ""
+"A propriedade <literal>authenticate-method</literal> especificada pela <literal>identidade</literal>, nos <literal>components.xml</literal>, especifica qual método será usado pelo <literal>SeamLoginModule</literal> para autenticar os usuários. Este método não usa parâmetros e, provavelmente, retornará a um boolean, indicando se é que a autenticação foi bem sucedida ou não. O nome e senha do usuário podem ser obtidos a partir da <literal>Identity."
+"instance().getUsername()</literal> e <literal>Identity.instance()."
+"getPassword()</literal>, respectivamente. Qualquer função pela qual o usuário seja membro, deve ser determinada usando a <literal>Identity.instance().addRole()</"
+"literal>. Segue abaixo, um exemplo completo de um método de autenticação dentro de um componente JavaBean:"
+
+#. Tag: programlisting
+#: Security.xml:107
+#, no-c-format
+msgid ""
+"@Name(\"authenticator\")\n"
+"public class Authenticator {\n"
+"   @In EntityManager entityManager;\n"
+"   \n"
+"   public boolean authenticate() {\n"
+"      try\n"
+"      {\n"
+"         User user = (User) entityManager.createQuery(\n"
+"            \"from User where username = :username and password = :password"
+"\")\n"
+"            .setParameter(\"username\", Identity.instance().getUsername())\n"
+"            .setParameter(\"password\", Identity.instance().getPassword())\n"
+"            .getSingleResult();\n"
+"\n"
+"         if (user.getRoles() != null)\n"
+"         {\n"
+"            for (UserRole mr : user.getRoles())\n"
+"               Identity.instance().addRole(mr.getName());\n"
+"         }\n"
+"\n"
+"         return true;\n"
+"      }\n"
+"      catch (NoResultException ex)\n"
+"      {\n"
+"         FacesMessages.instance().add(\"Invalid username/password\");\n"
+"         return false;\n"
+"      }\n"
+"      \n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+"@Name(\"authenticator\")\n"
+"public class Authenticator {\n"
+"   @In EntityManager entityManager;\n"
+"   \n"
+"   public boolean authenticate() {\n"
+"      try\n"
+"      {\n"
+"         User user = (User) entityManager.createQuery(\n"
+"            \"from User where username = :username and password = :password"
+"\")\n"
+"            .setParameter(\"username\", Identity.instance().getUsername())\n"
+"            .setParameter(\"password\", Identity.instance().getPassword())\n"
+"            .getSingleResult();\n"
+"\n"
+"         if (user.getRoles() != null)\n"
+"         {\n"
+"            for (UserRole mr : user.getRoles())\n"
+"               Identity.instance().addRole(mr.getName());\n"
+"         }\n"
+"\n"
+"         return true;\n"
+"      }\n"
+"      catch (NoResultException ex)\n"
+"      {\n"
+"         FacesMessages.instance().add(\"Invalid username/password\");\n"
+"         return false;\n"
+"      }\n"
+"      \n"
+"   }\n"
+"   \n"
+"}"
+
+#. Tag: para
+#: Security.xml:108
+#, no-c-format
+msgid ""
+"In the above example, both <literal>User</literal> and <literal>UserRole</"
+"literal> are application-specific entity beans. The <literal>roles</literal> "
+"parameter is populated with the roles that the user is a member of, which "
+"should be added to the <literal>Set</literal> as literal string values, e.g. "
+"\"admin\", \"user\". In this case, if the user record is not found and a "
+"<literal>NoResultException</literal> thrown, the authentication method "
+"returns <literal>false</literal> to indicate the authentication failed."
+msgstr ""
+"No exemplo acima, ambos <literal>Usuário</literal> e <literal>Função do Usuário</"
+"literal> são beans de entidade de aplicativo específico. O parâmetro das <literal>funções</literal> é cheio de funções em que o usuário é membro, das quais devem ser adicionadas à <literal>Configuração</literal>, como valores de linha literal. Por exemplo: \"admin\", \"user\". Neste caso, se a gravação do usuário não for encontrada e uma <literal>Exceção sem Resultado</literal> for lançada, o método de autenticação retornará como <literal>falso</literal> indicando que a autenticação falhou."
+
+#. Tag: title
+#: Security.xml:111
+#, no-c-format
+msgid "Writing a login form"
+msgstr "Escrevendo um formulário de logon"
+
+#. Tag: para
+#: Security.xml:112
+#, no-c-format
+msgid ""
+"The <literal>Identity</literal> component provides both <literal>username</"
+"literal> and <literal>password</literal> properties, catering for the most "
+"common authentication scenario. These properties can be bound directly to "
+"the username and password fields on a login form. Once these properties are "
+"set, calling the <literal>identity.login()</literal> method will "
+"authenticate the user using the provided credentials. Here&#39;s an example "
+"of a simple login form:"
+msgstr ""
+"O componente <literal>identidade</literal> fornece ambas propriedades <literal>nome do usuário</"
+"literal> e <literal>senha</literal>, servindo, desta maneira, o cenário de autenticação mais comum. Estas propriedades podem ser limitadas diretamente aos campos de nome e senha do usuário numa simples forma de logon:"
+
+#. Tag: programlisting
+#: Security.xml:115
+#, no-c-format
+msgid ""
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"name\" value=\"Username\"/&gt;\n"
+"    &lt;h:inputText id=\"name\" value=\"#{identity.username}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"password\" value=\"Password\"/&gt;\n"
+"    &lt;h:inputSecret id=\"password\" value=\"#{identity.password}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;div&gt;\n"
+"    &lt;h:commandButton value=\"Login\" action=\"#{identity.login}\"/&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"name\" value=\"Username\"/&gt;\n"
+"    &lt;h:inputText id=\"name\" value=\"#{identity.username}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"password\" value=\"Password\"/&gt;\n"
+"    &lt;h:inputSecret id=\"password\" value=\"#{identity.password}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;div&gt;\n"
+"    &lt;h:commandButton value=\"Login\" action=\"#{identity.login}\"/&gt;\n"
+"&lt;/div&gt;"
+
+#. Tag: para
+#: Security.xml:116
+#, no-c-format
+msgid ""
+"Similarly, logging out the user is done by calling <literal>#{identity."
+"logout}</literal>. Calling this action will clear the security state of the "
+"currently authenticated user."
+msgstr ""
+"Similarmente, a execução do logoff é feita chamando a <literal>#{identity."
+"logout}</literal>. A chamada desta ação irá limpar o estado de seguridade do atual usuário autenticado."
+
+#. Tag: title
+#: Security.xml:119
+#, no-c-format
+msgid "Simplified Configuration - Summary"
+msgstr "Configuração Simplificada - Sumário"
+
+#. Tag: para
+#: Security.xml:120
+#, no-c-format
+msgid "So to sum up, there are the three easy steps to configure authentication:"
+msgstr "Em resumo, existem três passos bem simples para se configurar a autenticação:"
+
+#. Tag: para
+#: Security.xml:125
+#, no-c-format
+msgid "Configure an authentication method in <literal>components.xml</literal>."
+msgstr "Configuração de um método de autenticação em <literal>components.xml</literal>."
+
+#. Tag: para
+#: Security.xml:130
+#, no-c-format
+msgid "Write an authentication method."
+msgstr "Gravação de um método de autenticação."
+
+#. Tag: para
+#: Security.xml:135
+#, no-c-format
+msgid "Write a login form so that the user can authenticate."
+msgstr "Gravação de uma forma de logon para que o usuário possa realizar a autenticação."
+
+#. Tag: title
+#: Security.xml:140
+#, no-c-format
+msgid "Handling Security Exceptions"
+msgstr "Manuseando as Exceções de Segurança "
+
+#. Tag: para
+#: Security.xml:141
+#, no-c-format
+msgid ""
+"To prevent users from receiving the default error page in response to a "
+"security error, it&#39;s recommended that <literal>pages.xml</literal> is "
+"configured to redirect security errors to a more \"pretty\" page. The two "
+"main types of exceptions thrown by the security API are:"
+msgstr "Com a intenção de se prevenir que usuários recebam a página de erro padrão em resposta ao erro de segurança, é recomendável que as <literal>pages.xml</literal> sejam configuradas para o redirecionamento de erros a uma página \"melhor\". Os dois tipos principais lançados pela API de segurança são:"
+
+#. Tag: para
+#: Security.xml:146
+#, no-c-format
+msgid ""
+"<literal>NotLoggedInException</literal> - This exception is thrown if the "
+"user attempts to access a restricted action or page when they are not logged "
+"in."
+msgstr "<literal>NotLoggedInException</literal> - Esta exceção é lançada caso os usuários tentem acessar uma ação restrita ou página, quando eles não estiverem conectados."
+
+#. Tag: para
+#: Security.xml:151
+#, no-c-format
+msgid ""
+"<literal>AuthorizationException</literal> - This exception is only thrown if "
+"the user is already logged in, and they have attempted to access a "
+"restricted action or page for which they do not have the necessary "
+"privileges."
+msgstr "<literal>AuthorizationException</literal> - Esta exceção é apenas lançada se o usuário já estiver conectado e o mesmo ter feito uma tentativa de acesso a ação ou página restrita, da qual o usuário não possui o privilégio necessário."
+
+#. Tag: para
+#: Security.xml:156
+#, no-c-format
+msgid ""
+"In the case of a <literal>NotLoggedInException</literal>, it is recommended "
+"that the user is redirected to either a login or registration page so that "
+"they can log in. For an <literal>AuthorizationException</literal>, it may be "
+"useful to redirect the user to an error page. Here&#39;s an example of a "
+"<literal>pages.xml</literal> file that redirects both of these security "
+"exceptions:"
+msgstr "No caso de uma <literal>NotLoggedInException</literal>, é recomendável que o usuário seja redirecionado para tanto um logon ou uma página de registro possibilitando com que eles possam efetuar a conexão. Para uma <literal>AuthorizationException</literal> pode ser útil redirecionar o usuário para uma página error. Segue abaixo, um exemplo do arquivo <literal>pages.xml</literal> que redireciona ambas destas exceções de segurança:"
+
+#. Tag: programlisting
+#: Security.xml:159
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"\n"
+"    ...\n"
+"    \n"
+"    &lt;exception class=\"org.jboss.seam.security.NotLoggedInException"
+"\"&gt;\n"
+"        &lt;redirect view-id=\"/login.xhtml\"&gt;\n"
+"            &lt;message&gt;You must be logged in to perform this action&lt;/"
+"message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"    \n"
+"    &lt;exception class=\"org.jboss.seam.security.AuthorizationException"
+"\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"        &lt;redirect view-id=\"/security_error.xhtml\"&gt;\n"
+"            &lt;message&gt;\n"
+"                              You do not have the necessary security "
+"privileges to perform this action.\n"
+"            &lt;/message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"  \n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"\n"
+"    ...\n"
+"    \n"
+"    &lt;exception class=\"org.jboss.seam.security.NotLoggedInException"
+"\"&gt;\n"
+"        &lt;redirect view-id=\"/login.xhtml\"&gt;\n"
+"            &lt;message&gt;You must be logged in to perform this action&lt;/"
+"message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"    \n"
+"    &lt;exception class=\"org.jboss.seam.security.AuthorizationException"
+"\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"        &lt;redirect view-id=\"/security_error.xhtml\"&gt;\n"
+"            &lt;message&gt;\n"
+"                              You do not have the necessary security "
+"privileges to perform this action.\n"
+"            &lt;/message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"  \n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Security.xml:160
+#, no-c-format
+msgid ""
+"Most web applications require even more sophisticated handling of login "
+"redirection, so Seam includes some special functionality for handling this "
+"problem."
+msgstr "A maioria dos aplicativos requerem um manuseamento ainda mais sofisticado de redireção do logon. Desta forma, o Seam incluirá uma funcionalidade especial para o manuseamento deste problema."
+
+#. Tag: title
+#: Security.xml:163
+#, no-c-format
+msgid "Login Redirection"
+msgstr "Redirecionamento do Logon"
+
+#. Tag: para
+#: Security.xml:164
+#, no-c-format
+msgid ""
+"You can ask Seam to redirect the user to a login screen when an "
+"unauthenticated user tries to access a particular view (or wildcarded view "
+"id) as follows:"
+msgstr "Você pode pedir para o Seam redirecionar o usuário a uma tela de logon, quando um usuário não autenticado tentar acessar uma visualização em particular (ou id de visualização wildcard), conforme segue a seguir:"
+
+#. Tag: programlisting
+#: Security.xml:167
+#, no-c-format
+msgid ""
+"&lt;pages login-view-id=\"/login.xhtml\"&gt;\n"
+"\n"
+"    &lt;page view-id=\"/members/*\" login-required=\"true\"/&gt;\n"
+"    \n"
+"    ...\n"
+"    \n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages login-view-id=\"/login.xhtml\"&gt;\n"
+"\n"
+"    &lt;page view-id=\"/members/*\" login-required=\"true\"/&gt;\n"
+"    \n"
+"    ...\n"
+"    \n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Security.xml:168
+#, no-c-format
+msgid ""
+"(This is less of a blunt instrument than the exception handler shown above, "
+"but should probably be used in conjunction with it.)"
+msgstr "Conforme a figura anterior, isto é um instrumento menos compreensivo do que um manuseador de exceção. No entanto, é recomendável que se utilize em conjunto. "
+
+#. Tag: para
+#: Security.xml:171
+#, no-c-format
+msgid ""
+"After the user logs in, we want to automatically send them back where they "
+"came from, so they can retry the action that required logging in. If you add "
+"the following event listeners to <literal>components.xml</literal>, attempts "
+"to access a restricted view while not logged in will be remembered, so that "
+"upon the user successfully logging in they will be redirected to the "
+"originally requested view, with any page parameters that existed in the "
+"original request."
+msgstr "Após o usuário realizar o logon, enviaremos o mesmo automaticamente de volta para onde ele veio. Desta forma, ele poderá tentar novamente a ação da qual solicita logon. Se você adicionar o seguinte evento listener ao <literal>components.xml</literal>, a tentativa de acesso a uma visualização restrita será relembrada enquanto o logon não for efetuado. Desta forma, até que o usuário realize o logon com sucesso, ele será redirecionado à visualização de solicitação original com qualquer um dos parâmetros de página já existentes na solicitação original."
+
+#. Tag: programlisting
+#: Security.xml:174
+#, no-c-format
+msgid ""
+"&lt;event type=\"org.jboss.seam.notLoggedIn\"&gt;\n"
+"    &lt;action expression=\"#{redirect.captureCurrentView}\"/&gt;\n"
+"&lt;/event&gt;\n"
+"    \n"
+"&lt;event type=\"org.jboss.seam.postAuthenticate\"&gt;\n"
+"    &lt;action expression=\"#{redirect.returnToCapturedView}\"/&gt;\n"
+"&lt;/event&gt;"
+msgstr ""
+"&lt;event type=\"org.jboss.seam.notLoggedIn\"&gt;\n"
+"    &lt;action expression=\"#{redirect.captureCurrentView}\"/&gt;\n"
+"&lt;/event&gt;\n"
+"    \n"
+"&lt;event type=\"org.jboss.seam.postAuthenticate\"&gt;\n"
+"    &lt;action expression=\"#{redirect.returnToCapturedView}\"/&gt;\n"
+"&lt;/event&gt;"
+
+#. Tag: para
+#: Security.xml:175
+#, no-c-format
+msgid ""
+"Note that login redirection is implemented as a conversation-scoped "
+"mechanism, so don&#39;t end the conversation in your <literal>authenticate()"
+"</literal> method."
+msgstr ""
+"Perceba que o redirecionamento do logon é implementado como um mecanismo de escopo de conversação, então não é recomendável encerrar uma conversação em seu método <literal>autenticado()"
+"</literal>."
+
+#. Tag: title
+#: Security.xml:178
+#, no-c-format
+msgid "Advanced Authentication Features"
+msgstr "Recursos de Autenticação Avançados"
+
+#. Tag: para
+#: Security.xml:179
+#, no-c-format
+msgid ""
+"This section explores some of the advanced features provided by the security "
+"API for addressing more complex security requirements."
+msgstr "Esta seção explora alguns dos recursos avançados fornecidos pelo API de segurança, para o endereçamento mais complexo de solicitações de segurança mais complexas."
+
+#. Tag: title
+#: Security.xml:182
+#, no-c-format
+msgid "Using your container&#39;s JAAS configuration"
+msgstr "Usando sua configuração JAAS de container"
+
+#. Tag: para
+#: Security.xml:183
+#, no-c-format
+msgid ""
+"If you would rather not use the simplified JAAS configuration provided by "
+"the Seam Security API, you may instead delegate to the default system JAAS "
+"configuration by providing a <literal>jaasConfigName</literal> property in "
+"<literal>components.xml</literal>. For example, if you are using JBoss AS "
+"and wish to use the <literal>other</literal> policy (which uses the "
+"<literal>UsersRolesLoginModule</literal> login module provided by JBoss AS), "
+"then the entry in <literal>components.xml</literal> would look like this:"
+msgstr "Caso você prefirir não usar a simplificada configuração JAAS fornecida pelo API de seguridade Seam, você poderá delegar a configuração JAAS do sistema padrão fornecendo uma propriedade <literal>jaasConfigName</literal> em <literal>components.xml</literal>. Por exemplo, se você estiver usando o JBoss e queira usar <literal>outra</literal> política (que usa o módulo de logon <literal>UsersRolesLoginModule</literal> fornecido pelo JBoss AS), a entrada nos <literal>components.xml</literal> irá parecer-se com:"
+
+#. Tag: programlisting
+#: Security.xml:186
+#, no-c-format
+msgid ""
+"&lt;security:identity authenticate-method=\"#{authenticator.authenticate}"
+"\" \n"
+"                      jaas-config-name=\"other\"/&gt;"
+msgstr ""
+"&lt;security:identity authenticate-method=\"#{authenticator.authenticate}"
+"\" \n"
+"                      jaas-config-name=\"other\"/&gt;"
+
+#. Tag: title
+#: Security.xml:187
+#, no-c-format
+msgid "Error Messages"
+msgstr "Mensagens de Erro"
+
+#. Tag: para
+#: Security.xml:188
+#, no-c-format
+msgid ""
+"The security API produces a number of default faces messages for various "
+"security-related events. The following table lists the message keys that can "
+"be used to override these messages by specifying them in a <literal>message."
+"properties</literal> resource file."
+msgstr ""
+"O API de seguridade produz um número de mensagens de faces padrões para muitos eventos de segurança relativa. A tabela seguinte lista os pontos chaves de mensagens, dos quais podem ser usados para substituir estas mensagens, especificando-as em um arquivo de recurso de <literal>message."
+"properties</literal>."
+
+#. Tag: title
+#: Security.xml:192
+#, no-c-format
+msgid "Security Message Keys"
+msgstr "Pontos Chaves de Mensagem de Segurança"
+
+#. Tag: literal
+#: Security.xml:200
+#, no-c-format
+msgid "org.jboss.seam.loginSuccessful"
+msgstr "org.jboss.seam.loginSuccessful"
+
+#. Tag: para
+#: Security.xml:204
+#, no-c-format
+msgid ""
+"This message is produced when a user successfully logs in via the security "
+"API."
+msgstr "Esta mensagem é produzida quando um usuário realizar o logon com sucesso, através do API de segurança."
+
+#. Tag: literal
+#: Security.xml:212
+#, no-c-format
+msgid "org.jboss.seam.loginFailed"
+msgstr "org.jboss.seam.loginFailed"
+
+#. Tag: para
+#: Security.xml:216
+#, no-c-format
+msgid ""
+"This message is produced when the login process fails, either because the "
+"user provided an incorrect username or password, or because authentication "
+"failed in some other way."
+msgstr "Esta mensagem é produzida quando o processo de logon falhar, tanto devido ao usuário fornecer o nome ou senha incorretos como devido a falha da autenticação por qualquer outro motivo."
+
+#. Tag: literal
+#: Security.xml:224
+#, no-c-format
+msgid "org.jboss.seam.NotLoggedIn"
+msgstr "org.jboss.seam.NotLoggedIn"
+
+#. Tag: para
+#: Security.xml:228
+#, no-c-format
+msgid ""
+"This message is produced when a user attempts to perform an action or access "
+"a page that requires a security check, and the user is not currently "
+"authenticated."
+msgstr "Esta mensagem é produzida quando um usuário tentar atuar uma ação ou acessar uma página que requer um checagem de segurança, além do usuário não estar autenticado."
+
+#. Tag: title
+#: Security.xml:236
+#, no-c-format
+msgid "Authorization"
+msgstr "Autorização"
+
+#. Tag: para
+#: Security.xml:237
+#, no-c-format
+msgid ""
+"There are a number of authorization features provided by the Seam Security "
+"API for securing access to components, component methods, and pages. This "
+"section describes each of these. An important thing to note is that if you "
+"wish to use any of the advanced features (such as rule-based permissions) "
+"then your <literal>components.xml</literal> must be configured to support "
+"this - see the Configuration section above."
+msgstr "Existe um número de recursos de autorização fornecidos pelo API de Segurança Seam de acesso seguro aos componentes, métodos dos componentes e páginas. Esta seção descreve cada um deles. Um ponto importante a ser destacado é que se você quiser usar qualquer um dos recursos avançados (como as permissões de regras baseadas), o seu <literal>components.xml</literal> deve ser configurado para o auxílio de suporte a isto - consulte a seção configuração acima."
+
+#. Tag: title
+#: Security.xml:240
+#, no-c-format
+msgid "Core concepts"
+msgstr "Conceitos Principais"
+
+#. Tag: para
+#: Security.xml:241
+#, no-c-format
+msgid ""
+"Each of the authorization mechanisms provided by the Seam Security API are "
+"built upon the concept of a user being granted roles and/or permissions. A "
+"role is a <emphasis>group</emphasis>, or <emphasis>type</emphasis>, of user "
+"that may have been granted certain privileges for performing one or more "
+"specific actions within an application. A permission on the other hand is a "
+"privilege (sometimes once-off) for performing a single, specific action. It "
+"is entirely possible to build an application using nothing but permissions, "
+"however roles offer a higher level of convenience when granting privileges "
+"to groups of users."
+msgstr "Cada um dos mecanismos de autorização fornecidos pelo API de Segurança Seam são construídos pelo conceito de um usuário ter concedido permissões e/ou funções. Uma função é um <emphasis>grupo</emphasis> ou <emphasis>tipo</emphasis> de usuário pelo qual foi concedido certos privilégios para executar uma ou mais ações específicas com um aplicativo. Já a permissão é um privilégio para executar uma única e específica ação. É completamente possível construir um aplicativo usando nada além do que permissões. No entanto, as funções oferecem um alto nível de conveniências quando concedendo privilégios a grupos de usuários."
+
+#. Tag: para
+#: Security.xml:244
+#, no-c-format
+msgid ""
+"Roles are simple, consisting of only a name such as \"admin\", \"user\", "
+"\"customer\", etc. Permissions consist of both a name and an action, and are "
+"represented within this documentation in the form <literal>name:action</"
+"literal>, for example <literal>customer:delete</literal>, or "
+"<literal>customer:insert</literal>."
+msgstr ""
+"As funções são simples, constituídas de apenas um nome como \"admin\", \"user\", "
+"\"customer\", etc. As permissões consistem em ambos nome e ação, e são representadas por esta documentação na forma de <literal>name:action</"
+"literal>. Por exemplo: <literal>customer:delete</literal> ou "
+"<literal>customer:insert</literal>."
+
+#. Tag: title
+#: Security.xml:247
+#, no-c-format
+msgid "Securing components"
+msgstr "Componentes de Segurança"
+
+#. Tag: para
+#: Security.xml:248
+#, no-c-format
+msgid ""
+"Let&#39;s start by examining the simplest form of authorization, component "
+"security, starting with the <literal>@Restrict</literal> annotation."
+msgstr "Vamos começar analisando a forma mais simples de autorização e segurança do componente, começando pela anotação <literal>@Restrict</literal>."
+
+#. Tag: title
+#: Security.xml:251
+#, no-c-format
+msgid "The @Restrict annotation"
+msgstr "A anotação @Restrict"
+
+#. Tag: para
+#: Security.xml:252
+#, no-c-format
+msgid ""
+"Seam components may be secured either at the method or the class level, "
+"using the <literal>@Restrict</literal> annotation. If both a method and "
+"it&#39;s declaring class are annotated with <literal>@Restrict</literal>, "
+"the method restriction will take precedence (and the class restriction will "
+"not apply). If a method invocation fails a security check, then an exception "
+"will be thrown as per the contract for <literal>Identity.checkRestriction()</"
+"literal> (see Inline Restrictions). A <literal>@Restrict</literal> on just "
+"the component class itself is equivalent to adding <literal>@Restrict</"
+"literal> to each of its methods."
+msgstr ""
+"Os componentes Seam pode sem segurados pelo nível de método ou classe, usando a anotação <literal>@Restrict</literal>. Caso ambos método e sua classe de declaração estejam anotados com <literal>@Restrict</literal>, a restrição do método irá buscar precedências (e a restrição de classe não será aplicada). E, caso uma invocação de método falhar para uma checagem de segurança, uma exceção será enviada assim como descrito no contrato da <literal>Identity.checkRestriction()</"
+"literal> (consulte Restrições de Linha Interna). Um <literal>@Restrict</literal> na classe do componente sozinho é o mesmo que adicionar <literal>@Restrict</"
+"literal> em cada um de seus métodos."
+
+#. Tag: para
+#: Security.xml:255
+#, no-c-format
+msgid ""
+"An empty <literal>@Restrict</literal> implies a permission check of "
+"<literal>componentName:methodName</literal>. Take for example the following "
+"component method:"
+msgstr "Um <literal>@Restrict</literal> vazio implica numa checagem de permissão do <literal>componentName:methodName</literal>. Use como exemplo o seguinte método do componente:"
+
+#. Tag: programlisting
+#: Security.xml:258
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class AccountAction {\n"
+"    @Restrict public void delete() {\n"
+"      ...\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"account\")\n"
+"public class AccountAction {\n"
+"    @Restrict public void delete() {\n"
+"      ...\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Security.xml:259
+#, no-c-format
+msgid ""
+"In this example, the implied permission required to call the <literal>delete"
+"()</literal> method is <literal>account:delete</literal>. The equivalent of "
+"this would be to write <literal>@Restrict(\"#{s:hasPermission(&#39;"
+"account&#39;,&#39;delete&#39;,null)}\")</literal>. Now let&#39;s look at "
+"another example:"
+msgstr ""
+"Neste exemplo, a solicitada permissão implícita da qual chamou o método <literal>delete"
+"()</literal> foi <literal>account:delete</literal>. Similar a isto, pode ser a gravação do <literal>@Restrict(\"#{s:hasPermission(&#39;"
+"account&#39;,&#39;delete&#39;,null)}\")</literal>. Vamos checar outro exemplo:"
+
+#. Tag: programlisting
+#: Security.xml:262
+#, no-c-format
+msgid ""
+"@Restrict @Name(\"account\")\n"
+"public class AccountAction {\n"
+"    public void insert() {\n"
+"      ...\n"
+"    }\n"
+"    @Restrict(\"#{s:hasRole(&#39;admin&#39;)}\") \n"
+"    public void delete() {\n"
+"      ...\n"
+"    }\n"
+"}"
+msgstr ""
+"@Restrict @Name(\"account\")\n"
+"public class AccountAction {\n"
+"    public void insert() {\n"
+"      ...\n"
+"    }\n"
+"    @Restrict(\"#{s:hasRole(&#39;admin&#39;)}\") \n"
+"    public void delete() {\n"
+"      ...\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Security.xml:263
+#, no-c-format
+msgid ""
+"This time, the component class itself is annotated with <literal>@Restrict</"
+"literal>. This means that any methods without an overriding "
+"<literal>@Restrict</literal> annotation require an implicit permission "
+"check. In the case of this example, the <literal>insert()</literal> method "
+"requires a permission of <literal>account:insert</literal>, while the "
+"<literal>delete()</literal> method requires that the user is a member of the "
+"<literal>admin</literal> role."
+msgstr ""
+"Desta vez a classe do componente é anotada com o <literal>@Restrict</"
+"literal>. Isto significa que muitos métodos sem uma anotação <literal>@Restrict</literal> substituída, solicitam uma checagem de permissão implícita. Neste exemplo, o método <literal>insert()</literal> solicita uma permissão do <literal>account:insert</literal>, enquanto que o método <literal>delete()</literal> solicita que o usuário seja membro de uma função <literal>admin</literal>."
+
+#. Tag: para
+#: Security.xml:266
+#, no-c-format
+msgid ""
+"Before we go any further, let&#39;s address the <literal>#{s:hasRole()}</"
+"literal> expression seen in the above example. Both <literal>s:hasRole</"
+"literal> and <literal>s:hasPermission</literal> are EL functions, which "
+"delegate to the correspondingly named methods of the <literal>Identity</"
+"literal> class. These functions can be used within any EL expression "
+"throughout the entirety of the security API."
+msgstr ""
+"Antes de darmos continuidade, vamos endereçar a expressão <literal>#{s:hasRole()}</"
+"literal> observada no exemplo acima. Ambas <literal>s:hasRole</"
+"literal> e <literal>s:hasPermission</literal> são funções EL das quais delegam os métodos nomeados correspondentes à classe <literal>Identity</"
+"literal>. Estas expressões podem ser usadas como qualquer expressão EL através do API de segurança."
+
+#. Tag: para
+#: Security.xml:269
+#, no-c-format
+msgid ""
+"Being an EL expression, the value of the <literal>@Restrict</literal> "
+"annotation may reference any objects that exist within a Seam context. This "
+"is extremely useful when performing permission checks for a specific object "
+"instance. Look at this example:"
+msgstr "Sendo uma expressão EL, o valor da anotação <literal>@Restrict</literal> pode referenciar qualquer objeto existente num contexto Seam. Isto é extremamente útil quando executando as checagens de permissão para uma instância de objeto específico. Veja o exemplo a seguir:"
+
+#. Tag: programlisting
+#: Security.xml:272
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class AccountAction {\n"
+"    @In Account selectedAccount;\n"
+"    @Restrict(\"#{s:hasPermission(&#39;account&#39;,&#39;modify&#39;,"
+"selectedAccount)}\")\n"
+"    public void modify() {\n"
+"        selectedAccount.modify();\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"account\")\n"
+"public class AccountAction {\n"
+"    @In Account selectedAccount;\n"
+"    @Restrict(\"#{s:hasPermission(&#39;account&#39;,&#39;modify&#39;,"
+"selectedAccount)}\")\n"
+"    public void modify() {\n"
+"        selectedAccount.modify();\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Security.xml:273
+#, no-c-format
+msgid ""
+"The interesting thing to note from this example is the reference to "
+"<literal>selectedAccount</literal> seen within the <literal>hasPermission()</"
+"literal> function call. The value of this variable will be looked up from "
+"within the Seam context, and passed to the <literal>hasPermission()</"
+"literal> method in <literal>Identity</literal>, which in this case can then "
+"determine if the user has the required permission for modifying the "
+"specified <literal>Account</literal> object."
+msgstr ""
+"Um ponto importante a se notar neste exemplo é a referência a <literal>selectedAccount</literal>, vista como a função de chamada <literal>hasPermission()</"
+"literal>. O valor desta variável será observado a partir deste contexto Seam e passado ao método <literal>hasPermission()</"
+"literal> na <literal>Identity</literal>, da qual, neste caso, pode determinar se o usuário possui a permissão requerida para modificar o objeto <literal>Account</literal> especificado."
+
+#. Tag: title
+#: Security.xml:276
+#, no-c-format
+msgid "Inline restrictions"
+msgstr "Restrições de Linhas Internas"
+
+#. Tag: para
+#: Security.xml:277
+#, no-c-format
+msgid ""
+"Sometimes it might be desirable to perform a security check in code, without "
+"using the <literal>@Restrict</literal> annotation. In this situation, simply "
+"use <literal>Identity.checkRestriction()</literal> to evaluate a security "
+"expression, like this:"
+msgstr "Às vezes será desejável executar uma checagem de seguridade no código, sem usar a anotação <literal>@Restrict</literal>. Nesta situação, use simplesmente a <literal>Identity.checkRestriction()</literal> para avaliar uma expressão de segurança, como segue abaixo:"
+
+#. Tag: programlisting
+#: Security.xml:280
+#, no-c-format
+msgid ""
+"public void deleteCustomer() {\n"
+"    Identity.instance().checkRestriction(\"#{s:hasPermission(&#39;"
+"customer&#39;,&#39;delete&#39;,\n"
+"      selectedCustomer)}\");\n"
+"}"
+msgstr ""
+"public void deleteCustomer() {\n"
+"    Identity.instance().checkRestriction(\"#{s:hasPermission(&#39;"
+"customer&#39;,&#39;delete&#39;,\n"
+"      selectedCustomer)}\");\n"
+"}"
+
+#. Tag: para
+#: Security.xml:281
+#, no-c-format
+msgid ""
+"If the expression specified doesn&#39;t evaluate to <literal>true</literal>, "
+"either"
+msgstr "Caso a expressão especificada não avaliar como <literal>verdadeiro</literal>, teremos duas situações possíveis:"
+
+#. Tag: para
+#: Security.xml:286
+#, no-c-format
+msgid ""
+"if the user is not logged in, a <literal>NotLoggedInException</literal> "
+"exception is thrown or"
+msgstr "O usuário não efetuou o logon, e uma exceção <literal>NotLoggedInException</literal> foi lançada, ou;"
+
+#. Tag: para
+#: Security.xml:291
+#, no-c-format
+msgid ""
+"if the user is logged in, an <literal>AuthorizationException</literal> "
+"exception is thrown."
+msgstr "se o usuário estiver on-line, uma exceção <literal>AuthorizationException</literal> será lançada."
+
+#. Tag: para
+#: Security.xml:296
+#, no-c-format
+msgid ""
+"It is also possible to call the <literal>hasRole()</literal> and "
+"<literal>hasPermission()</literal> methods directly from Java code:"
+msgstr "É possível também chamar diretamente os métodos <literal>hasRole()</literal> e <literal>hasPermission()</literal>, a partir do código Java:"
+
+#. Tag: programlisting
+#: Security.xml:299
+#, no-c-format
+msgid ""
+"if (!Identity.instance().hasRole(\"admin\"))\n"
+"     throw new AuthorizationException(\"Must be admin to perform this action"
+"\");\n"
+"\n"
+"if (!Identity.instance().hasPermission(\"customer\", \"create\", null))\n"
+"     throw new AuthorizationException(\"You may not create new customers\");"
+msgstr ""
+"f (!Identity.instance().hasRole(\"admin\"))\n"
+"     throw new AuthorizationException(\"Must be admin to perform this action"
+"\");\n"
+"\n"
+"if (!Identity.instance().hasPermission(\"customer\", \"create\", null))\n"
+"     throw new AuthorizationException(\"You may not create new customers\");"
+
+#. Tag: title
+#: Security.xml:300
+#, no-c-format
+msgid "Security in the user interface"
+msgstr "Segurança na interface do usuário "
+
+#. Tag: para
+#: Security.xml:301
+#, no-c-format
+msgid ""
+"One indication of a well designed user interface is that the user is not "
+"presented with options for which they don&#39;t have the necessary "
+"privileges to use. Seam Security allows conditional rendering of either 1) "
+"sections of a page or 2) individual controls, based upon the privileges of "
+"the user, using the very same EL expressions that are used for component "
+"security."
+msgstr "Uma indicação de uma interface de usuário bem desenhada é aquela em que o usuário não está presente com opções das quais ele não possui privilégios de uso. A segurança Seam permite o processamento condicional de controles individuais de ambas seções: 1) de uma página, ou 2) baseada nos privilégios do usuário, além de usar as mesmas expressões que são usadas para segurança de um componente."
+
+#. Tag: para
+#: Security.xml:304
+#, no-c-format
+msgid ""
+"Let&#39;s take a look at some examples of interface security. First of all, "
+"let&#39;s pretend that we have a login form that should only be rendered if "
+"the user is not already logged in. Using the <literal>identity.isLoggedIn()</"
+"literal> property, we can write this:"
+msgstr ""
+"Vamos verificar alguns exemplos de segurança de interface. Primeiramente, vamos pretender que temos um formulário de logon que deve apenas ser processado se um usuário não estiver conectado. Usando a propriedade <literal>identity.isLoggedIn()</"
+"literal> podemos gravar o seguinte:"
+
+#. Tag: programlisting
+#: Security.xml:307
+#, no-c-format
+msgid "&lt;h:form class=\"loginForm\" rendered=\"#{not identity.loggedIn}\"&gt;"
+msgstr "&lt;h:form class=\"loginForm\" rendered=\"#{not identity.loggedIn}\"&gt;"
+
+#. Tag: para
+#: Security.xml:308
+#, no-c-format
+msgid ""
+"If the user isn&#39;t logged in, then the login form will be rendered - very "
+"straight forward so far. Now let&#39;s pretend there is a menu on the page "
+"that contains some actions which should only be accessible to users in the "
+"<literal>manager</literal> role. Here&#39;s one way that these could be "
+"written:"
+msgstr "Caso o usuário não tenha efetuado o logon, a forma de logon será processada. Vamos dizer que existe um menu na página que contém algumas ações que devem apenas ser acessíveis aos usuários de função <literal>manager</literal>. Segue abaixo, uma maneira em que isto poderia ser gravado:"
+
+#. Tag: programlisting
+#: Security.xml:311
+#, no-c-format
+msgid ""
+"&lt;h:outputLink action=\"#{reports.listManagerReports}\" rendered=\"#{s:"
+"hasRole(&#39;manager&#39;)}\"&gt;\n"
+"    Manager Reports\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+"&lt;h:outputLink action=\"#{reports.listManagerReports}\" rendered=\"#{s:"
+"hasRole(&#39;manager&#39;)}\"&gt;\n"
+"    Manager Reports\n"
+"&lt;/h:outputLink&gt;"
+
+#. Tag: para
+#: Security.xml:312
+#, no-c-format
+msgid ""
+"This is also quite straight forward. If the user is not a member of the "
+"<literal>manager</literal> role, then the outputLink will not be rendered. "
+"The <literal>rendered</literal> attribute can generally be used on the "
+"control itself, or on a surrounding <literal>&lt;s:div&gt;</literal> or "
+"<literal>&lt;s:span&gt;</literal> control."
+msgstr "Esta situação é também bastante direta. Caso o usuário não seja um membro da função <literal>manager</literal>, então o outputLink não será processado. O atributo <literal>processado</literal> pode geralmente ser usado para o próprio controle, ou em um <literal>&lt;s:div&gt;</literal> ao redo ou de controle <literal>&lt;s:span&gt;</literal>."
+
+#. Tag: para
+#: Security.xml:315
+#, no-c-format
+msgid ""
+"Now for something more complex. Let&#39;s say you have a <literal>h:"
+"dataTable</literal> control on a page listing records for which you may or "
+"may not wish to render action links depending on the user&#39;s privileges. "
+"The <literal>s:hasPermission</literal> EL function allows us to pass in an "
+"object parameter which can be used to determine whether the user has the "
+"requested permission for that object or not. Here&#39;s how a dataTable with "
+"secured links might look:"
+msgstr ""
+"E, agora uma situação mais complexa. Vamos dizer que você tem um controle <literal>h:"
+"dataTable</literal> na memória listada de páginas, onde você pretenderá ou não processar links de ação, dependendo dos privilégios do usuário. A função EL <literal>s:hasPermission</literal> nos permite passar um parâmetro do objeto do qual pode ser usado para determinar se é que o usuário possui a permissão solicitada para aquele objeto ou não. Segue abaixo, como um dataTable com links de segurança deve parecer-se:"
+
+#. Tag: programlisting
+#: Security.xml:318
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{clients}\" var=\"cl\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Name&lt;/f:facet&gt;\n"
+"        #{cl.name}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;City&lt;/f:facet&gt;\n"
+"        #{cl.city}\n"
+"    &lt;/h:column&gt;   \n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"        &lt;s:link value=\"Modify Client\" action=\"#{clientAction.modify}"
+"\"\n"
+"                rendered=\"#{s:hasPermission(&#39;client&#39;,&#39;"
+"modify&#39;,cl)\"/&gt;\n"
+"        &lt;s:link value=\"Delete Client\" action=\"#{clientAction.delete}"
+"\"\n"
+"                rendered=\"#{s:hasPermission(&#39;client&#39;,&#39;"
+"delete&#39;,cl)\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+"&lt;h:dataTable value=\"#{clients}\" var=\"cl\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Name&lt;/f:facet&gt;\n"
+"        #{cl.name}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;City&lt;/f:facet&gt;\n"
+"        #{cl.city}\n"
+"    &lt;/h:column&gt;   \n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"        &lt;s:link value=\"Modify Client\" action=\"#{clientAction.modify}"
+"\"\n"
+"                rendered=\"#{s:hasPermission(&#39;client&#39;,&#39;"
+"modify&#39;,cl)\"/&gt;\n"
+"        &lt;s:link value=\"Delete Client\" action=\"#{clientAction.delete}"
+"\"\n"
+"                rendered=\"#{s:hasPermission(&#39;client&#39;,&#39;"
+"delete&#39;,cl)\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+
+#. Tag: title
+#: Security.xml:319
+#, no-c-format
+msgid "Securing pages"
+msgstr "Páginas de Segurança"
+
+#. Tag: para
+#: Security.xml:320
+#, no-c-format
+msgid ""
+"Page security requires that the application is using a <literal>pages.xml</"
+"literal> file, however is extremely simple to configure. Simply include a "
+"<literal>&lt;restrict/&gt;</literal> element within the <literal>page</"
+"literal> elements that you wish to secure. By default, if a value is not "
+"provided for the <literal>restrict</literal> element, an implied permission "
+"of <literal>{viewId}:render</literal> will be checked for whenever accessing "
+"that page. Otherwise the value will be evaluated as a standard security "
+"expression. Here&#39;s a couple of examples:"
+msgstr ""
+"As páginas de segurança solicitam que o aplicativo esteja usando um arquivo <literal>pages.xml</"
+"literal>, o que é na realidade bastante fácil de se configurar. Inclua simplesmente um elemento  <literal>&lt;restrict/&gt;</literal> com os elementos da <literal>página</"
+"literal> que você deseja manter a segurança. Por padrão, caso um valor não seja fornecido para o elemento <literal>restrito</literal>, uma implícita permissão da <literal>{viewId}:render</literal> será checada para qualquer acesso desta página. Do contrário, o valor será avaliado como uma expressão de segurança padrão. Segue abaixo alguns exemplos:"
+
+#. Tag: programlisting
+#: Security.xml:323
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/settings.xhtml\"&gt;\n"
+"    &lt;restrict/&gt;\n"
+"&lt;/page&gt;\n"
+"        \n"
+"&lt;page view-id=\"/reports.xhtml\"&gt;    \n"
+"    &lt;restrict&gt;#{s:hasRole(&#39;admin&#39;)}&lt;/restrict&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page view-id=\"/settings.xhtml\"&gt;\n"
+"    &lt;restrict/&gt;\n"
+"&lt;/page&gt;\n"
+"        \n"
+"&lt;page view-id=\"/reports.xhtml\"&gt;    \n"
+"    &lt;restrict&gt;#{s:hasRole(&#39;admin&#39;)}&lt;/restrict&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Security.xml:324
+#, no-c-format
+msgid ""
+"In the above example, the first page has an implied permission restriction "
+"of <literal>/settings.xhtml:render</literal>, while the second one checks "
+"that the user is a member of the <literal>admin</literal> role."
+msgstr "No exemplo acima, a primeira página possui uma restrição de implícita permissão do <literal>/settings.xhtml:render</literal>, enquanto que a segunda checa se o usuário é um membro da função <literal>admin</literal>."
+
+#. Tag: title
+#: Security.xml:327
+#, no-c-format
+msgid "Securing Entities"
+msgstr "Entidades de Segurança"
+
+#. Tag: para
+#: Security.xml:328
+#, no-c-format
+msgid ""
+"Seam security also makes it possible to apply security restrictions to read, "
+"insert, update and delete actions for entities."
+msgstr "A segurança Seam também possibilita a aplicação das restrições de segurança para ações de ler, inserir, atualizar e deletar entidades."
+
+#. Tag: para
+#: Security.xml:331
+#, no-c-format
+msgid ""
+"To secure all actions for an entity class, add a <literal>@Restrict</"
+"literal> annotation on the class itself:"
+msgstr ""
+"Adicione a anotação <literal>@Restrict</"
+"literal> na própria classe, com a finalidade de manter a segurança de todas as ações numa classe de entidade:"
+
+#. Tag: programlisting
+#: Security.xml:334
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"customer\")\n"
+"@Restrict\n"
+"public class Customer {\n"
+"  ...\n"
+"}"
+msgstr ""
+"@Entity\n"
+"@Name(\"customer\")\n"
+"@Restrict\n"
+"public class Customer {\n"
+"  ...\n"
+"}"
+
+#. Tag: para
+#: Security.xml:335
+#, no-c-format
+msgid ""
+"If no expression is specified in the <literal>@Restrict</literal> "
+"annotation, the default security check that is performed is a permission "
+"check of <literal>entityName:action</literal>, where <literal>entityName</"
+"literal> is the Seam component name of the entity (or the fully-qualified "
+"class name if no @Name is specified), and the <literal>action</literal> is "
+"either <literal>read</literal>, <literal>insert</literal>, <literal>update</"
+"literal> or <literal>delete</literal>."
+msgstr ""
+"Caso nenhuma expressão seja especificada na anotação <literal>@Restrict</literal>, a checagem de segurança padrão pela qual é utilizada, é uma checagem de permissão do <literal>entityName:action</literal>, onde o <literal>entityName</"
+"literal> é um nome do componente Seam de entidade (ou nome de classe inteiramente qualificado caso não haja @Name especificado). Além disso, a <literal>ação</literal> é tanto <literal>ler</literal>, <literal>inserir</literal>, <literal>atualizar</"
+"literal> ou <literal>deletar</literal>."
+
+#. Tag: para
+#: Security.xml:338
+#, no-c-format
+msgid ""
+"It is also possible to only restrict certain actions, by placing a "
+"<literal>@Restrict</literal> annotation on the relevent entity lifecycle "
+"method (annotated as follows):"
+msgstr "É possível também apenas restringir certas ações, colocando uma anotação <literal>@Restrict</literal> no relevante método de ciclo de vida da entidade (assim como a anotação abaixo):"
+
+#. Tag: para
+#: Security.xml:343
+#, no-c-format
+msgid ""
+"<literal>@PostLoad</literal> - Called after an entity instance is loaded "
+"from the database. Use this method to configure a <literal>read</literal> "
+"permission."
+msgstr "<literal>@PostLoad</literal> - Chamado após uma instância de entidade ser carregada a partir do banco de dados. Use este método para configurar uma permissão de <literal>leitura</literal>."
+
+#. Tag: para
+#: Security.xml:348
+#, no-c-format
+msgid ""
+"<literal>@PrePersist</literal> - Called before a new instance of the entity "
+"is inserted. Use this method to configure an <literal>insert</literal> "
+"permission."
+msgstr "<literal>@PrePersist</literal> - Chamado antes de uma nova instância da entidade ser inserida. Use este método para configurar uma permissão de <literal>inserção</literal>."
+
+#. Tag: para
+#: Security.xml:353
+#, no-c-format
+msgid ""
+"<literal>@PreUpdate</literal> - Called before an entity is updated. Use this "
+"method to configure an <literal>update</literal> permission."
+msgstr "<literal>@PreUpdate</literal> - Chamado antes de uma entidade ser atualizada. Use este método para configurar uma permissão de <literal>atualização</literal>."
+
+#. Tag: para
+#: Security.xml:358
+#, no-c-format
+msgid ""
+"<literal>@PreRemove</literal> - Called before an entity is deleted. Use this "
+"method to configure a <literal>delete</literal> permission."
+msgstr "<literal>@PreRemove</literal> - Chamado antes de uma entidade ser deletada. Use este método para configurar uma permissão <literal>delete</literal>."
+
+#. Tag: para
+#: Security.xml:363
+#, no-c-format
+msgid ""
+"Here&#39;s an example of how an entity would be configured to perform a "
+"security check for any <literal>insert</literal> operations. Please note "
+"that the method is not required to do anything, the only important thing in "
+"regard to security is how it is annotated:"
+msgstr "A seguir, um exemplo de como uma entidade poderia ser configurada para executar uma checagem de seguridade em qualquer operação <literal>inserir</literal>. Por favor observe que este método não requer qualquer ação. A única coisa importante com referência a segurança, é como ela é anotada:"
+
+#. Tag: programlisting
+#: Security.xml:366
+#, no-c-format
+msgid ""
+"@PrePersist @Restrict\n"
+"  public void prePersist() {}"
+msgstr ""
+"@PrePersist @Restrict\n"
+"  public void prePersist() {}"
+
+#. Tag: para
+#: Security.xml:367
+#, no-c-format
+msgid ""
+"And here&#39;s an example of an entity permission rule that checks if the "
+"authenticated user is allowed to insert a new <literal>MemberBlog</literal> "
+"record (from the seamspace example). The entity for which the security check "
+"is being made is automatically asserted into the working memory (in this "
+"case <literal>MemberBlog</literal>):"
+msgstr "Segue abaixo, um exemplo de uma regra de permissão de entidade que checa se é que um usuário autenticado é autorizado a inserir uma nova gravação <literal>MemberBlog</literal> (a partir do exemplo de espaço Seam). A entidade, pela qual a checagem de segurança foi efetuada, é diretamente expressada na memória de funcionamento (neste caso <literal>MemberBlog</literal>):"
+
+#. Tag: programlisting
+#: Security.xml:370
+#, no-c-format
+msgid ""
+"rule InsertMemberBlog\n"
+"  no-loop\n"
+"  activation-group \"permissions\"  \n"
+"when\n"
+"  check: PermissionCheck(name == \"memberBlog\", action == \"insert\", "
+"granted == false)\n"
+"  Principal(principalName : name)\n"
+"  MemberBlog(member : member -&gt; (member.getUsername().equals"
+"(principalName)))\n"
+"then\n"
+"  check.grant();\n"
+"end;"
+msgstr ""
+"rule InsertMemberBlog\n"
+"  no-loop\n"
+"  activation-group \"permissions\"  \n"
+"when\n"
+"  check: PermissionCheck(name == \"memberBlog\", action == \"insert\", "
+"granted == false)\n"
+"  Principal(principalName : name)\n"
+"  MemberBlog(member : member -&gt; (member.getUsername().equals"
+"(principalName)))\n"
+"then\n"
+"  check.grant();\n"
+"end;"
+
+#. Tag: para
+#: Security.xml:371
+#, no-c-format
+msgid ""
+"This rule will grant the permission <literal>memberBlog:insert</literal> if "
+"the currently authenticated user (indicated by the <literal>Principal</"
+"literal> fact) has the same name as the member for which the blog entry is "
+"being created. The \"<literal>name : name</literal>\" structure that can be "
+"seen in the <literal>Principal</literal> fact (and other places) is a "
+"variable binding - it binds the <literal>name</literal> property of the "
+"<literal>Principal</literal> to a variable called <literal>name</literal>. "
+"Variable bindings allow the value to be referred to in other places, such as "
+"the following line which compares the member&#39;s username to the "
+"<literal>Principal</literal> name. For more details, please refer to the "
+"JBoss Rules documentation."
+msgstr ""
+"Esta regra irá conceder a permissão <literal>memberBlog:insert</literal>, caso o usuário atual autenticado (indicado pelo fato <literal>Principal</"
+"literal>) possua o mesmo nome ao do membro pelo qual a entrada do blog é criada. A estrutura \"<literal>name : name</literal>\" que pode ser vista no fato principal (e em outros lugares) é uma binding de variável - isto vincula a propriedade do <literal>nome</literal> do <literal>Principal</literal> a uma variável chamada <literal>nome</literal>. As bindings da variável permitem que o valor seja referido em outros lugares, como a seguinte linha que compara o nome do usuário ao nome <literal>Principal</literal>. Para maiores informações, por favor refira-se a documentação de regras JBoss."
+
+#. Tag: para
+#: Security.xml:374
+#, no-c-format
+msgid ""
+"Finally, we need to install a listener class that integrates Seam security "
+"with your JPA provider."
+msgstr "Finalmente, precisaremos instalar uma classe listener que integra a seguridade Seam como seu provedor JPA."
+
+#. Tag: title
+#: Security.xml:377
+#, no-c-format
+msgid "Entity security with JPA"
+msgstr "Segurança de entidade com JPA"
+
+#. Tag: para
+#: Security.xml:378
+#, no-c-format
+msgid ""
+"Security checks for EJB3 entity beans are performed with an "
+"<literal>EntityListener</literal>. You can install this listener by using "
+"the following <literal>META-INF/orm.xml</literal> file:"
+msgstr "A segurança checa se os beans de entidade EJB3 estão sendo executados com uma <literal>EntityListener</literal>. Você pode instalar este listener usando o seguinte arquivo <literal>META-INF/orm.xml</literal>:"
+
+#. Tag: programlisting
+#: Security.xml:381
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;entity-mappings xmlns=\"http://java.sun.com/xml/ns/persistence/orm\"\n"
+"                 xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"                 xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence/"
+"orm \n"
+"                                            http://java.sun.com/xml/ns/"
+"persistence/orm_1_0.xsd\"\n"
+"                 version=\"1.0\"&gt;\n"
+"                 \n"
+"    &lt;persistence-unit-metadata&gt;\n"
+"        &lt;persistence-unit-defaults&gt;\n"
+"            &lt;entity-listeners&gt;\n"
+"                &lt;entity-listener class=\"org.jboss.seam.security."
+"EntitySecurityListener\"/&gt;\n"
+"            &lt;/entity-listeners&gt;\n"
+"        &lt;/persistence-unit-defaults&gt;\n"
+"    &lt;/persistence-unit-metadata&gt;\n"
+"    \n"
+"&lt;/entity-mappings&gt;"
+msgstr ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;entity-mappings xmlns=\"http://java.sun.com/xml/ns/persistence/orm\"\n"
+"                 xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"                 xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence/"
+"orm \n"
+"                                            http://java.sun.com/xml/ns/"
+"persistence/orm_1_0.xsd\"\n"
+"                 version=\"1.0\"&gt;\n"
+"                 \n"
+"    &lt;persistence-unit-metadata&gt;\n"
+"        &lt;persistence-unit-defaults&gt;\n"
+"            &lt;entity-listeners&gt;\n"
+"                &lt;entity-listener class=\"org.jboss.seam.security."
+"EntitySecurityListener\"/&gt;\n"
+"            &lt;/entity-listeners&gt;\n"
+"        &lt;/persistence-unit-defaults&gt;\n"
+"    &lt;/persistence-unit-metadata&gt;\n"
+"    \n"
+"&lt;/entity-mappings&gt;"
+
+#. Tag: title
+#: Security.xml:382
+#, no-c-format
+msgid "Entity security with Hibernate"
+msgstr "Segurança de entidade com Hibernate"
+
+#. Tag: para
+#: Security.xml:383
+#, no-c-format
+msgid ""
+"If you are using a Hibernate <literal>SessionFactory</literal> configured "
+"via Seam, you don&#39;t need to do anything special to use entity security."
+msgstr "Caso você esteja usando um Hibernate <literal>SessionFactory</literal> configurado através do Seam, você não precisará realizar algo especial para usar a segurança de entidade."
+
+#. Tag: title
+#: Security.xml:386
+#, no-c-format
+msgid "Writing Security Rules"
+msgstr "Gravando as Regras de Segurança"
+
+#. Tag: para
+#: Security.xml:387
+#, no-c-format
+msgid ""
+"Up to this point there has been a lot of mention of permissions, but no "
+"information about how permissions are actually defined or granted. This "
+"section completes the picture, by explaining how permission checks are "
+"processed, and how to implement permission checks for a Seam application."
+msgstr "Até agora foram mencionadas muitas coisas a respeito das permissões, mas não há informações de como as permissões são na realidade definidas ou concedidas. Esta sessão completa o tópico, explicando como as checagens de permissão são processadas e como implementar checagens de permissão a um aplicativo Seam."
+
+#. Tag: title
+#: Security.xml:390
+#, no-c-format
+msgid "Permissions Overview"
+msgstr "Visão Geral de Permissões"
+
+#. Tag: para
+#: Security.xml:391
+#, no-c-format
+msgid ""
+"So how does the security API know whether a user has the <literal>customer:"
+"modify</literal> permission for a specific customer? Seam Security provides "
+"quite a novel method for determining user permissions, based on JBoss Rules. "
+"A couple of the advantages of using a rule engine are 1) a centralized "
+"location for the business logic that is behind each user permission, and 2) "
+"speed - JBoss Rules uses very efficient algorithms for evaluating large "
+"numbers of complex rules involving multiple conditions."
+msgstr ""
+"Então, como é que o API de segurança sabe quando um usuário possui uma permissão <literal>customer:"
+"modify</literal> para um cliente específico? A Segurança Seam oferece um método para determinar permissões ao usuário, baseadas em Regras JBoss. Algumas vantagens de se utilizar um mecanismo de regra são: 1) uma localização centralizada para a lógica comercial que está por trás de cada permissão do usuário, e 2) velocidade - as Regras JBoss usam algoritmos bastante eficientes para números grandes de avaliação de regras complexas envolvendo condições múltiplas. "
+
+#. Tag: title
+#: Security.xml:394
+#, no-c-format
+msgid "Configuring a rules file"
+msgstr "Configurando um arquivo de regras"
+
+#. Tag: para
+#: Security.xml:395
+#, no-c-format
+msgid ""
+"Seam Security expects to find a <literal>RuleBase</literal> component called "
+"<literal>securityRules</literal> which it uses to evaluate permission "
+"checks. This is configured in <literal>components.xml</literal> as follows:"
+msgstr "A Segurança Seam espera encontrar um componente de <literal>RuleBase</literal> chamado <literal>securityRules</literal>, do qual usa as checagens de permissão para avaliação. Isto é configurado em <literal>components.xml</literal>, conforme segue abaixo:"
+
+#. Tag: programlisting
+#: Security.xml:398
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:security=\"http://jboss.com/products/seam/security\"\n"
+"            xmlns:drools=\"http://jboss.com/products/seam/drools\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                                              http://jboss.com/products/seam/"
+"core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components \n"
+"                                              http://jboss.com/products/seam/"
+"components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/drools \n"
+"                                              http://jboss.com/products/seam/"
+"drools-1.2.xsd\"\n"
+"                 http://jboss.com/products/seam/security \n"
+"                                              http://jboss.com/products/seam/"
+"security-1.2.xsd\"&gt;                 \n"
+"        \n"
+"   &lt;drools:rule-base name=\"securityRules\"&gt;\n"
+"       &lt;drools:rule-files&gt;\n"
+"           &lt;value&gt;/META-INF/security.drl&lt;/value&gt;\n"
+"       &lt;/drools:rule-files&gt;\n"
+"   &lt;/drools:rule-base&gt;    \n"
+"   \n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:security=\"http://jboss.com/products/seam/security\"\n"
+"            xmlns:drools=\"http://jboss.com/products/seam/drools\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                                              http://jboss.com/products/seam/"
+"core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components \n"
+"                                              http://jboss.com/products/seam/"
+"components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/drools \n"
+"                                              http://jboss.com/products/seam/"
+"drools-1.2.xsd\"\n"
+"                 http://jboss.com/products/seam/security \n"
+"                                              http://jboss.com/products/seam/"
+"security-1.2.xsd\"&gt;                 \n"
+"        \n"
+"   &lt;drools:rule-base name=\"securityRules\"&gt;\n"
+"       &lt;drools:rule-files&gt;\n"
+"           &lt;value&gt;/META-INF/security.drl&lt;/value&gt;\n"
+"       &lt;/drools:rule-files&gt;\n"
+"   &lt;/drools:rule-base&gt;    \n"
+"   \n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Security.xml:399
+#, no-c-format
+msgid ""
+"Once the <literal>RuleBase</literal> component is configured, it&#39;s time "
+"to write the security rules."
+msgstr "Uma vez que o componente <literal>RuleBase</literal> for configurado, o próximo passo será gravar as regras de segurança."
+
+#. Tag: title
+#: Security.xml:402
+#, no-c-format
+msgid "Creating a security rules file"
+msgstr "Criando um arquivo de regras de segurança"
+
+#. Tag: para
+#: Security.xml:403
+#, no-c-format
+msgid ""
+"For this step you need to create a file called <literal>security.drl</"
+"literal> in the <literal>/META-INF</literal> directory of your "
+"application&#39;s jar file. In actual fact this file can be called anything "
+"you want, and exist in any location as long as it is configured "
+"appropriately in <literal>components.xml</literal>."
+msgstr ""
+"Neste procedimento você precisa criar um arquivo chamado <literal>security.drl</"
+"literal>, no diretório <literal>/META-INF</literal> de seu arquivo de jarra de aplicativo. Na realidade, este arquivo pode ser chamado na maneira em que você desejar e existe em qualquer localidade, desde que seja configurado apropriadamente em <literal>components.xml</literal>."
+
+#. Tag: para
+#: Security.xml:406
+#, no-c-format
+msgid ""
+"So what should the security rules file contain? At this stage it might be a "
+"good idea to at least skim through the JBoss Rules documentation, however to "
+"get started here&#39;s an extremely simple example:"
+msgstr "Então, o que deveria conter no arquivo de de regras de segurança? Nestas alturas pode ser uma boa idéia consultar a documentação das Regras JBoss, mas para começarmos, segue abaixo um exemplo extremamente simples: "
+
+#. Tag: programlisting
+#: Security.xml:409
+#, no-c-format
+msgid ""
+"package MyApplicationPermissions;\n"
+"\n"
+"import org.jboss.seam.security.PermissionCheck;\n"
+"import org.jboss.seam.security.Role;\n"
+"\n"
+"rule CanUserDeleteCustomers\n"
+"when\n"
+"  c: PermissionCheck(name == \"customer\", action == \"delete\")\n"
+"  Role(name == \"admin\")\n"
+"then\n"
+"  c.grant();\n"
+"end;"
+msgstr ""
+"package MyApplicationPermissions;\n"
+"\n"
+"import org.jboss.seam.security.PermissionCheck;\n"
+"import org.jboss.seam.security.Role;\n"
+"\n"
+"rule CanUserDeleteCustomers\n"
+"when\n"
+"  c: PermissionCheck(name == \"customer\", action == \"delete\")\n"
+"  Role(name == \"admin\")\n"
+"then\n"
+"  c.grant();\n"
+"end;"
+
+#. Tag: para
+#: Security.xml:410
+#, no-c-format
+msgid ""
+"Let&#39;s break this down. The first thing we see is the package "
+"declaration. A package in JBoss Rules is essentially a collection of rules. "
+"The package name can be anything you want - it doesn&#39;t relate to "
+"anything else outside the scope of the rule base."
+msgstr "Vamos dividir isto em partes. Veremos, primeiramente, a declaração do pacote. Um pacote nas Regras JBoss é essencialmente uma coleção de regras. O nome do pacote pode ser qualquer coisa que você desejar - isto não está relacionado com alguma coisa fora do escopo de regra base."
+
+#. Tag: para
+#: Security.xml:413
+#, no-c-format
+msgid ""
+"The next thing we can notice is a couple of import statements for the "
+"<literal>PermissionCheck</literal> and <literal>Role</literal> classes. "
+"These imports inform the rules engine that we&#39;ll be referencing these "
+"classes within our rules."
+msgstr "O próximo detalhe que podemos notar são duas declarações importadas para a <literal>Checagem de Permissão</literal> e as classes de  <literal>Função</literal>. Estas importações informam que o mecanismo de regras que iremos referenciar estas classes com nossas regras."
+
+#. Tag: para
+#: Security.xml:416
+#, no-c-format
+msgid ""
+"Finally we have the code for the rule. Each rule within a package should be "
+"given a unique name (usually describing the purpose of the rule). In this "
+"case our rule is called <literal>CanUserDeleteCustomers</literal> and will "
+"be used to check whether a user is allowed to delete a customer record."
+msgstr "Finalmente, temos o código para a regra. Cada regra com um pacote deve ter um nome exclusivo (normalmente descrevendo o propósito da regra). Neste caso, nossa regra é chamada <literal>CanUserDeleteCustomers</literal> e será usada para checar se é que um usuário possui permissão para deletar uma gravação de cliente."
+
+#. Tag: para
+#: Security.xml:419
+#, no-c-format
+msgid ""
+"Looking at the body of the rule definition we can notice two distinct "
+"sections. Rules have what is known as a left hand side (LHS) and a right "
+"hand side (RHS). The LHS consists of the conditional part of the rule, i.e. "
+"a list of conditions which must be satisfied for the rule to fire. The LHS "
+"is represented by the <literal>when</literal> section. The RHS is the "
+"consequence, or action section of the rule that will only be fired if all of "
+"the conditions in the LHS are met. The RHS is represented by the "
+"<literal>then</literal> section. The end of the rule is denoted by the "
+"<literal>end;</literal> line."
+msgstr "Poderemos notar duas seções distintas, quando observando o corpo de definição da regra. As regras possuem os conhecidos: lado da mão direita (RHS) e lado da mão esquerda (LHS). O LHS consiste numa parte condicional da regra, por exemplo: a lista de condições das quais devem se satisfazer para que a regra seja acionada. O LHS é representado pela seção <literal>when</literal>. O RHS é conseqüência ou seqüência de ação da regra que será apenas acionada se todas as condições do LHS forem encontradas. O RHS é representado pela seção <literal>after</literal>. O fim da regra é marcado pela linha <literal>end;</literal>."
+
+#. Tag: para
+#: Security.xml:422
+#, no-c-format
+msgid ""
+"If we look at the LHS of the rule, we see two conditions listed there. "
+"Let&#39;s examine the first condition:"
+msgstr "Se observarmos o LHS da regra, veremos duas condições listadas. Vamos examinar a primeira condição:"
+
+#. Tag: programlisting
+#: Security.xml:425
+#, no-c-format
+msgid "c: PermissionCheck(name == \"customer\", action == \"delete\")"
+msgstr "c: PermissionCheck(name == \"customer\", action == \"delete\")"
+
+#. Tag: para
+#: Security.xml:426
+#, no-c-format
+msgid ""
+"In plain english, this condition is stating that there must exist a "
+"<literal>PermissionCheck</literal> object with a <literal>name</literal> "
+"property equal to \"customer\", and an <literal>action</literal> property "
+"equal to \"delete\" within the working memory. What is the working memory? "
+"It is a session-scoped object that contains the contextual information that "
+"is required by the rules engine to make a decision about a permission check. "
+"Each time the <literal>hasPermission()</literal> method is called, a "
+"temporary <literal>PermissionCheck</literal> object, or <emphasis>Fact</"
+"emphasis>, is asserted into the working memory. This "
+"<literal>PermissionCheck</literal> corresponds exactly to the permission "
+"that is being checked, so for example if you call <literal>hasPermission"
+"(\"account\", \"create\", null)</literal> then a <literal>PermissionCheck</"
+"literal> object with a <literal>name</literal> equal to \"account\" and "
+"<literal>action</literal> equal to \"create\" will be asserted into the "
+"working memory for the duration of the permission check."
+msgstr ""
+"Esta condição declara que deve existir um objeto de <literal>Checagem de Permissão</literal> com uma propriedade de <literal>nome</literal> igual ao \"cliente\", e uma propriedade de <literal>ação</literal> igual a \"deletar\" com a memória em funcionamento. O que é a memória em funcionamento? É um objeto de escopo de sessão que contém a informação contextual requerida por mecanismo de regra para realizar a decisão sobre a checagem de permissão. Cada vez que o método <literal>hasPermission()</literal> é chamado, um objeto de <literal>Checagem de Permissão</literal> temporário ou <emphasis>Fato</"
+"emphasis> é asserido na memória em funcionamento. Esta <literal>Checagem de Permissão</literal> corresponde exatamente à permissão que está sendo checada, então se você chamar <literal>hasPermission"
+"(\"account\", \"create\", null)</literal> um objeto de <literal>Checagem de Permissão</"
+"literal> com um <literal>nome</literal> igual ao da \"conta\", e <literal>ação</literal> igual ao de \"criação \" eles serão asseridos na memória em funcionamento durante a checagem de permissão."
+
+#. Tag: para
+#: Security.xml:429
+#, no-c-format
+msgid ""
+"So what else is in the working memory? Besides the short-lived temporary "
+"facts asserted during a permission check, there are some longer-lived "
+"objects in the working memory that stay there for the entire duration of a "
+"user being authenticated. These include any <literal>java.security."
+"Principal</literal> objects that are created as part of the authentication "
+"process, plus a <literal>org.jboss.seam.security.Role</literal> object for "
+"each of the roles that the user is a member of. It is also possible to "
+"assert additional long-lived facts into the working memory by calling "
+"<literal>RuleBasedIdentity.instance().getSecurityContext().assertObject()</"
+"literal>, passing the object as a parameter."
+msgstr ""
+"O que mais há na memória em funcionamento? Além dos fatos temporários de vida curta asseridos numa checagem de permissão, existem alguns objetos de longa vida na memória em funcionamento que permanecem lá durante toda a duração de um usuário sendo autenticado. Isto inclui qualquer objeto <literal>java.security."
+"Principal</literal> que é criado como parte do processamento de autenticação, além de um objeto <literal>org.jboss.seam.security.Role</literal> para cada uma das regras que o usuário seja membro de. É possível também asserir adicionais fatos de longa vida longa dentro da memória em funcionamento chamando por <literal>RuleBasedIdentity.instance().getSecurityContext().assertObject()</"
+"literal>, passando o objeto como um parâmetro."
+
+#. Tag: para
+#: Security.xml:432
+#, no-c-format
+msgid ""
+"Getting back to our simple example, we can also notice that the first line "
+"of our LHS is prefixed with <literal>c:</literal>. This is a variable "
+"binding, and is used to refer back to the object that is matched by the "
+"condition. Moving onto the second line of our LHS, we see this:"
+msgstr "Retornando ao nosso simples exemplo, podemos também notar que a primeira linha de nosso LHS é pré-fixada com <literal>c:</literal>. Isto é uma binding de variável e é usada pata referir-se ao objeto que é combinado pela condição. Mudando para a segunda linha de nosso LHS, veremos o seguinte:"
+
+#. Tag: programlisting
+#: Security.xml:435
+#, no-c-format
+msgid "Role(name == \"admin\")"
+msgstr "Role(name == \"admin\")"
+
+#. Tag: para
+#: Security.xml:436
+#, no-c-format
+msgid ""
+"This condition simply states that there must be a <literal>Role</literal> "
+"object with a <literal>name</literal> of \"admin\" within the working "
+"memory. As mentioned, user roles are asserted into the working memory as "
+"long-lived facts. So, putting both conditions together, this rule is "
+"essentially saying \"I will fire if you are checking for the "
+"<literal>customer:delete</literal> permission and the user is a member of "
+"the <literal>admin</literal> role\"."
+msgstr "Este estado simples de condição declara que deve haver um objeto <literal>Função</literal> com um <literal>nome</literal> de \"admin\" na memória em funcionamento. Como mencionado antes, as funções dos usuários são asseridas dentro da memória em funcionamento como fatos de vida longa. Desta forma, colocando as duas condições juntas, esta função é dizer exatamente \"Eu serei acionado se você estiver checando pela permissão <literal>customer:delete</literal> e se o usuário for um membro da função <literal>admin</literal>\"."
+
+#. Tag: para
+#: Security.xml:439
+#, no-c-format
+msgid ""
+"So what is the consequence of the rule firing? Let&#39;s take a look at the "
+"RHS of the rule:"
+msgstr "Então qual é a conseqüência da regra de asserção? Vamos observar o RHS de função:"
+
+#. Tag: programlisting
+#: Security.xml:442
+#, no-c-format
+msgid "c.grant()"
+msgstr "c.grant()"
+
+#. Tag: para
+#: Security.xml:443
+#, no-c-format
+msgid ""
+"The RHS consists of Java code, and in this case is invoking the "
+"<literal>grant()</literal> method of the <literal>c</literal> object, which "
+"as already mentioned is a variable binding for the <literal>PermissionCheck</"
+"literal> object. Besides the <literal>name</literal> and <literal>action</"
+"literal> properties of the <literal>PermissionCheck</literal> object, there "
+"is also a <literal>granted</literal> property which is initially set to "
+"<literal>false</literal>. Calling <literal>grant()</literal> on a "
+"<literal>PermissionCheck</literal> sets the <literal>granted</literal> "
+"property to <literal>true</literal>, which means that the permission check "
+"was successful, allowing the user to carry out whatever action the "
+"permission check was intended for."
+msgstr ""
+"O RHS consiste no código Java e neste caso está invocando o método <literal>grant()</literal> do objeto <literal>c</literal>, que como anteriormente mencionado é uma binding de variável para o objeto <literal>PermissionCheck</"
+"literal>. Somado ao <literal>nome</literal> e as propriedades de <literal>ação</"
+"literal> do objeto de <literal>Checagem de Permissão</literal>, há também uma propriedade <literal>concedida</literal> da qual é inicialmente configurada para <literal>falso</literal>. Chamando um <literal>grant()</literal> numa <literal>Checagem de Permissão</literal> configura uma propriedade <literal>concedida</literal> para <literal>verdadeira</literal>, significando que a checagem de permissão foi bem sucedida. Isto permite que o usuário conduta qualquer ação desejada da checagem de permissão."
+
+#. Tag: title
+#: Security.xml:446
+#, no-c-format
+msgid "Wildcard permission checks"
+msgstr "Checagens de Permissão de Coringa"
+
+#. Tag: para
+#: Security.xml:447
+#, no-c-format
+msgid ""
+"It is possible to implement a wildcard permission check (which allows all "
+"actions for a given permission name), by omitting the <literal>action</"
+"literal> constraint for the <literal>PermissionCheck</literal> in your rule, "
+"like this:"
+msgstr ""
+"É possível implementar a checagem de permissão de coringa (que permite todas as ações em um nome de permissão concedida), omitindo a <literal>ação</"
+"literal> restrita pela <literal>Checagem de Permissão</literal> em sua regra, como segue a seguir:"
+
+#. Tag: programlisting
+#: Security.xml:450
+#, no-c-format
+msgid ""
+"rule CanDoAnythingToCustomersIfYouAreAnAdmin\n"
+"when\n"
+"  c: PermissionCheck(name == \"customer\")\n"
+"  Role(name == \"admin\")\n"
+"then\n"
+"  c.grant();\n"
+"end;"
+msgstr ""
+"rule CanDoAnythingToCustomersIfYouAreAnAdmin\n"
+"when\n"
+"  c: PermissionCheck(name == \"customer\")\n"
+"  Role(name == \"admin\")\n"
+"then\n"
+"  c.grant();\n"
+"end;"
+
+#. Tag: para
+#: Security.xml:451
+#, no-c-format
+msgid ""
+"This rule allows users with the <literal>admin</literal> role to perform "
+"<emphasis>any</emphasis> action for any <literal>customer</literal> "
+"permission check."
+msgstr "Esta regra permite que usuários da função <literal>admin</literal> para efetuar <emphasis>qualquer</emphasis> ação de checagem de permissão do <literal>cliente</literal>."
+
+#. Tag: title
+#: Security.xml:454
+#, no-c-format
+msgid "SSL Security"
+msgstr "Segurança SSL"
+
+#. Tag: para
+#: Security.xml:455
+#, no-c-format
+msgid ""
+"Seam includes basic support for serving sensitive pages via the HTTPS "
+"protocol. This is easily configured by specifying a <literal>scheme</"
+"literal> for the page in <literal>pages.xml</literal>. The following example "
+"shows how the view <literal>/login.xhtml</literal> is configured to use "
+"HTTPS:"
+msgstr ""
+"O Seam inclui suporte básico para servir páginas sensitivas através do protocolo HTTPS. Isto é facilmente configurado especificando um protocolo. Isto é facilmente configurado apenas especificando o <literal>esquema</"
+"literal> para a página em <literal>pages.xml</literal>. O exemplo a seguir apresenta como a visualização <literal>/login.xhtml</literal> é configurada para usar o HTTPS:"
+
+#. Tag: programlisting
+#: Security.xml:458
+#, no-c-format
+msgid "&lt;page view-id=\"/login.xhtml\" scheme=\"https\"&gt;"
+msgstr "&lt;page view-id=\"/login.xhtml\" scheme=\"https\"&gt;"
+
+#. Tag: para
+#: Security.xml:459
+#, no-c-format
+msgid ""
+"This configuration is automatically extended to both <literal>s:link</"
+"literal> and <literal>s:button</literal> JSF controls, which (when "
+"specifying the <literal>view</literal>) will also render the link using the "
+"correct protocol. Based on the previous example, the following link will use "
+"the HTTPS protocol because <literal>/login.xhtml</literal> is configured to "
+"use it:"
+msgstr ""
+"Esta configuração é automaticamente estendida em ambos controle JSF <literal>s:link</"
+"literal> e <literal>s:button</literal>, dos quais (quando especificando a <literal>visualização</literal>) irá processar também o link usando o protocolo correto. Baseando-se no exemplo anterior, o seguinte link irá usar o protocolo HTTPS uma vez que o <literal>/login.xhtml</literal> é configurado para usá-lo:"
+
+#. Tag: programlisting
+#: Security.xml:462
+#, no-c-format
+msgid "&lt;s:link view=\"/login.xhtml\" value=\"Login\"/&gt;"
+msgstr "&lt;s:link view=\"/login.xhtml\" value=\"Login\"/&gt;"
+
+#. Tag: para
+#: Security.xml:463
+#, no-c-format
+msgid ""
+"Browsing directly to a view when using the <emphasis>incorrect</emphasis> "
+"protocol will cause a redirect to the same view using the <emphasis>correct</"
+"emphasis> protocol. For example, browsing to a page that has <literal>scheme="
+"\"https\"</literal> using HTTP will cause a redirect to the same page using "
+"HTTPS."
+msgstr ""
+"Navegando diretamente para uma visualização quando usando o protocolo <emphasis>incorreto</emphasis> irá causar o redirecionamento para a mesma visualização quando usando o protocolo <emphasis>correto</"
+"emphasis>. Por exemplo, navegando à página da qual possui o <literal>scheme="
+"\"https\"</literal> usando o HTTP irá causar um redirecionamento para a mesma página usando HTTPS."
+
+#. Tag: para
+#: Security.xml:466
+#, no-c-format
+msgid ""
+"It is also possible to configure a default <literal>scheme</literal> for all "
+"pages. This is actually quite important, as you might only wish to use HTTPS "
+"for a few pages, and if no default scheme is specified then the default "
+"behavior is to continue using the current scheme. What this means is that "
+"once you enter a page with HTTPS, then HTTPS will continue to be used even "
+"if you navigate away to other non-HTTPS pages (a bad thing!). So it is "
+"strongly recommended to include a default <literal>scheme</literal>, by "
+"configuring it on the default (<literal>\"*\"</literal>) view:"
+msgstr "É possível configurar um <literal>esquema</literal> padrão para todas as páginas. Na realidade, isto é bastante importante, de forma que você apenas queira usar o HTTP para poucas páginas. E, caso o esquema padrão não seja especificado então o comportamento padrão é continuar usando o esquema corrente. Isto significa que uma vez que você entra uma página com HTTPS, então o HTTPS irá continuar a ser usado mesmo se você navegar para outra página que não seja HTTPS. É altamente recomendável incluir um <literal>esquema</literal> padrão, configurando-o na visualização (<literal>\"*\"</literal>) padrão:"
+
+#. Tag: programlisting
+#: Security.xml:469
+#, no-c-format
+msgid "&lt;page view-id=\"*\" scheme=\"http\"&gt;"
+msgstr "&lt;page view-id=\"*\" scheme=\"http\"&gt;"
+
+#. Tag: para
+#: Security.xml:470
+#, no-c-format
+msgid ""
+"Of course, if <emphasis>none</emphasis> of the pages in your application use "
+"HTTPS then it is not required to specify a default scheme."
+msgstr "É claro que se <emphasis>nenhuma</emphasis> das páginas de seu aplicativo usarem HTTPS, não será necessário especificar o esquema padrão."
+
+#. Tag: title
+#: Security.xml:473
+#, no-c-format
+msgid "Implementing a Captcha Test"
+msgstr "Implementando um Teste Captcha"
+
+#. Tag: para
+#: Security.xml:474
+#, no-c-format
+msgid ""
+"Though strictly not part of the security API, it might be useful in certain "
+"circumstances (such as new user registrations, posting to a public blog or "
+"forum) to implement a Captcha (<emphasis>C</emphasis>ompletely <emphasis>A</"
+"emphasis>utomated <emphasis>P</emphasis>ublic <emphasis>T</emphasis>uring "
+"test to tell <emphasis>C</emphasis>omputers and <emphasis>H</emphasis>umans "
+"<emphasis>A</emphasis>part) to prevent automated bots from interacting with "
+"your application. Seam provides seamless integration with JCaptcha, an "
+"excellent library for generating Captcha challenges. If you wish to use the "
+"captcha feature in your application you need to include the jcaptcha-* jar "
+"file from the Seam lib directory in your project, and register it in "
+"<literal>application.xml</literal> as a java module."
+msgstr ""
+"Mesmo não fazendo parte do API de segurança, isto poderá ser útil em certas circunstâncias (como registros de um novo usuário, envio a um público blog ou fórum) para implementar a Captcha (<emphasis>C</emphasis>ompletely <emphasis>A</"
+"emphasis>utomated <emphasis>P</emphasis>ublic <emphasis>T</emphasis>uring "
+"test to tell <emphasis>C</emphasis>omputers and <emphasis>H</emphasis>umans "
+"<emphasis>A</emphasis>part - teste de Turing público completamente automatizado para diferenciar entre computadores e humanos) prevenindo inicializações automáticas a partir da interação com seu aplicativo. O Seam fornece a integração Seamless com JCaptcha, uma biblioteca excelente para gerar desafios Captcha. Caso queira usar o recurso captcha em seu aplicativo, você precisará incluir o arquivo jcaptcha-* jar a partir do diretório Seam lib em seu projeto, além de registrá-lo no <literal>application.xml</literal> como um  módulo java."
+
+#. Tag: title
+#: Security.xml:477
+#, no-c-format
+msgid "Configuring the Captcha Servlet"
+msgstr "Configurando um Captcha Servlet"
+
+#. Tag: para
+#: Security.xml:478
+#, no-c-format
+msgid ""
+"To get up and running, it is necessary to configure the Seam Resource "
+"Servlet, which will provide the Captcha challenge images to your pages. This "
+"requires the following entry in <literal>web.xml</literal>:"
+msgstr "Vamos começar configurando o Servlet de Recurso Seam, do qual fornece imagens do desafio Captcha para suas páginas. Isto pede a seguinte entrada em <literal>web.xml</literal>:"
+
+#. Tag: programlisting
+#: Security.xml:481
+#, no-c-format
+msgid ""
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"    \n"
+"&lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+msgstr ""
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"    \n"
+"&lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+
+#. Tag: title
+#: Security.xml:482
+#, no-c-format
+msgid "Adding a Captcha to a page"
+msgstr "Adicionando um Captcha a uma Página"
+
+#. Tag: para
+#: Security.xml:483
+#, no-c-format
+msgid ""
+"Adding a captcha challenge to a page is extremely easy. Seam provides a page-"
+"scoped component, <literal>captcha</literal>, which provides everything that "
+"is required, including built-in captcha validation. Here&#39;s an example:"
+msgstr "Adicionar um captcha a uma página é extremamente fácil. O Seam fornece um componente de escopo de página, <literal>captcha</literal>, do qual fornece tudo o que é solicitado incluindo a validação captcha interna. Leia a seguir um exemplo:"
+
+#. Tag: programlisting
+#: Security.xml:486
+#, no-c-format
+msgid ""
+"&lt;div&gt;\n"
+"    &lt;h:graphicImage value=\"/seam/resource/captcha?#{captcha.id}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"  \n"
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"verifyCaptcha\"&gt;Enter the above letters&lt;/h:"
+"outputLabel&gt;\n"
+"    &lt;h:inputText id=\"verifyCaptcha\" value=\"#{captcha.response}\" "
+"required=\"true\"/&gt;\n"
+"    &lt;div class=\"validationError\"&gt;&lt;h:message for=\"verifyCaptcha\"/"
+"&gt;&lt;/div&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+"&lt;div&gt;\n"
+"    &lt;h:graphicImage value=\"/seam/resource/captcha?#{captcha.id}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"  \n"
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"verifyCaptcha\"&gt;Enter the above letters&lt;/h:"
+"outputLabel&gt;\n"
+"    &lt;h:inputText id=\"verifyCaptcha\" value=\"#{captcha.response}\" "
+"required=\"true\"/&gt;\n"
+"    &lt;div class=\"validationError\"&gt;&lt;h:message for=\"verifyCaptcha\"/"
+"&gt;&lt;/div&gt;\n"
+"&lt;/div&gt;"
+
+#. Tag: para
+#: Security.xml:487
+#, no-c-format
+msgid ""
+"That&#39;s all there is to it. The <literal>graphicImage</literal> control "
+"displays the Captcha challenge, and the <literal>inputText</literal> "
+"receives the user&#39;s response. The response is automatically validated "
+"against the Captcha when the form is submitted."
+msgstr "Isto é tudo que deve ser feito. O controle <literal>graphicImage</literal> exibe o desafio Captcha e o <literal>inputText</literal> recebe a resposta do usuário. A resposta é automaticamente validada baseada em Captcha uma vez que o formulário é submetido. "
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Spring.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Spring.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Spring.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,588 @@
+# translation of Spring.po to Brazilian Portuguese
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Leticia de Lima <ldelima at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Spring\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2008-04-18 15:53+1000\n"
+"Last-Translator: Leticia de Lima <ldelima at redhat.com>\n"
+"Language-Team: Brazilian Portuguese <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms:  JBEAP420 \n"
+
+#. Tag: title
+#: Spring.xml:6
+#, no-c-format
+msgid "Spring Framework integration"
+msgstr "Integração do Spring Framework"
+
+#. Tag: para
+#: Spring.xml:7
+#, no-c-format
+msgid ""
+"The Spring integration module allows easy migration of Spring-based projects "
+"to Seam and allows Spring applications to take advantage of key Seam "
+"features like conversations and Seam&#39;s more sophisticated persistence "
+"context management."
+msgstr "O módulo de integração do Spring permite uma migração fácil de projetos baseados no Spring para Seam e permite aplicativos Spring tirar vantagem dos recursos chave Seam como conversações e gerenciamento de contexto de persistência do Seam mais sofisticados."
+
+#. Tag: para
+#: Spring.xml:10
+#, no-c-format
+msgid "Seam&#39;s support for Spring provides the ability to:"
+msgstr "O suporte do Seam para o Spring fornece a habilidade de:"
+
+#. Tag: para
+#: Spring.xml:15
+#, no-c-format
+msgid "inject Seam component instances into Spring beans"
+msgstr "injetar instância de um componente Seam no Spring beans"
+
+#. Tag: para
+#: Spring.xml:20
+#, no-c-format
+msgid "inject Spring beans into Seam components"
+msgstr "injetar Spring beans nos componentes Seam"
+
+#. Tag: para
+#: Spring.xml:25
+#, no-c-format
+msgid "turn Spring beans into Seam components"
+msgstr "tornar Spring beans em componentes Seam"
+
+#. Tag: para
+#: Spring.xml:30
+#, no-c-format
+msgid "allow Spring beans to live in any Seam context"
+msgstr "permitir que Spring beans sobrevivam em qualquer contexto Seam"
+
+#. Tag: para
+#: Spring.xml:35
+#, no-c-format
+msgid "start a spring WebApplicationContext with a Seam component"
+msgstr "iniciar um spring WebApplicationContext com um componente Seam"
+
+#. Tag: title
+#: Spring.xml:41
+#, no-c-format
+msgid "Injecting Seam components into Spring beans"
+msgstr "Injetar componentes Seam em Spring beans"
+
+#. Tag: para
+#: Spring.xml:42
+#, no-c-format
+msgid ""
+"Injecting Seam component instances into Spring beans is accomplished using "
+"the <literal>&lt;seam:instance/&gt;</literal> namespace handler. To enable "
+"the Seam namespace handler, the Seam namespace must be added to the Spring "
+"beans definition file:"
+msgstr ""
+"A injeção de instâncias de componente Seam em Spring beans é efetuada usando o manuseador do espaço do nome <literal>&lt;seam:instance/&gt;</literal>. Para ativar o manuseador do espaço do nome, o espaço do nome Seam deve ser adicionado ao arquivo de definição do Spring "
+"beans:"
+
+#. Tag: programlisting
+#: Spring.xml:45
+#, no-c-format
+msgid ""
+"&lt;beans xmlns=\"http://www.springframework.org/schema/beans\"\n"
+"    xmlns:seam=\"http://jboss.com/products/seam/spring-seam\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://www.springframework.org/schema/beans \n"
+"                        http://www.springframework.org/schema/beans/spring-"
+"beans-2.0.xsd\n"
+"                        http://jboss.com/products/seam/spring-seam \n"
+"                        http://jboss.com/products/seam/spring-seam-1.2.xsd"
+"\"&gt;"
+msgstr ""
+"&lt;beans xmlns=\"http://www.springframework.org/schema/beans\"\n"
+"    xmlns:seam=\"http://jboss.com/products/seam/spring-seam\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://www.springframework.org/schema/beans \n"
+"                        http://www.springframework.org/schema/beans/spring-"
+"beans-2.0.xsd\n"
+"                        http://jboss.com/products/seam/spring-seam \n"
+"                        http://jboss.com/products/seam/spring-seam-1.2.xsd"
+"\"&gt;"
+
+#. Tag: para
+#: Spring.xml:46
+#, no-c-format
+msgid "Now any Seam component may be injected into any Spring bean:"
+msgstr "Agora qualquer componente Seam pode ser injetado em qualquer Spring bean:"
+
+#. Tag: programlisting
+#: Spring.xml:49
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\"&gt;\n"
+"        &lt;seam:instance name=\"someComponent\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\"&gt;\n"
+"        &lt;seam:instance name=\"someComponent\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+
+#. Tag: para
+#: Spring.xml:50
+#, no-c-format
+msgid "An EL expression may be used instead of a component name:"
+msgstr "Uma expressão EL pode ser usada ao invés do nome do componente:"
+
+#. Tag: programlisting
+#: Spring.xml:53
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\"&gt;\n"
+"        &lt;seam:instance name=\"#{someExpression}\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\"&gt;\n"
+"        &lt;seam:instance name=\"#{someExpression}\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+
+#. Tag: para
+#: Spring.xml:54
+#, no-c-format
+msgid ""
+"Seam component instances may even be made available for injection into "
+"Spring beans by a Spring bean id."
+msgstr "As instâncias de componente Seam podem estar disponíveis para a injeção do Spring beans pela Spring bean id."
+
+#. Tag: programlisting
+#: Spring.xml:57
+#, no-c-format
+msgid ""
+"&lt;seam:instance name=\"someComponent\" id=\"someSeamComponentInstance\"/"
+"&gt;\n"
+"\n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\" ref=\"someSeamComponentInstance"
+"\"&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+"&lt;seam:instance name=\"someComponent\" id=\"someSeamComponentInstance\"/"
+"&gt;\n"
+"\n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\" ref=\"someSeamComponentInstance"
+"\"&gt;\n"
+"&lt;/bean&gt;"
+
+#. Tag: para
+#: Spring.xml:58
+#, no-c-format
+msgid "Now for the caveat!"
+msgstr "Aviso "
+
+#. Tag: para
+#: Spring.xml:61
+#, no-c-format
+msgid ""
+"Seam was designed from the ground up to support a stateful component model "
+"with multiple contexts. Spring was not. Unlike Seam bijection, Spring "
+"injection does not occur at method invocation time. Instead, injection "
+"happens only when the Spring bean is instantiated. So the instance available "
+"when the bean is instantiated will be the same instance that the bean uses "
+"for the entire life of the bean. For example, if a Seam "
+"<literal>CONVERSATION</literal>-scoped component instance is directly "
+"injected into a singleton Spring bean, that singleton will hold a reference "
+"to the same instance long after the conversation is over! We call this "
+"problem <emphasis>scope impedance</emphasis>. Seam bijection ensures that "
+"scope impedance is maintained naturally as an invocation flows through the "
+"system. In Spring, we need to inject a proxy of the Seam component, and "
+"resolve the reference when the proxy is invoked."
+msgstr "O Seam foi designado a partir de um plano para suportar um modelo de componente sem estado com múltiplos contextos, enquanto que o Spring não foi. Diferente da bijeção Seam, a injeção Spring não ocorre no tempo de invocação do método. A injeção acontece apenas quando o Spring bean é instanciado. Desta forma, a instância disponível quando o bean é instanciado será a mesma instância que o bean usa para a vida inteira do bean. Por exemplo, se uma instância do componente de escopo de <literal>CONVERSAÇÃO</literal> Seam é diretamente injetada num singleton Spring bean, este singleton irá manter a referência para a mesma instância após a conversação encerrar. Chamamos este problema de <emphasis>impedância de escopo</emphasis>. A bijeção Seam garante que a impedância do escopo seja mantida naturalmente uma vez que a invocação corre pelo sistema. No Spring, precisamos injetar um proxy de componente Seam e resolver a referência quando o pro!
 xy for invocado."
+
+#. Tag: para
+#: Spring.xml:64
+#, no-c-format
+msgid ""
+"The <literal>&lt;seam:instance/&gt;</literal> tag lets us automatically "
+"proxy the Seam component."
+msgstr "O caracter <literal>&lt;seam:instance/&gt;</literal> nos permite realizar o proxy automaticamente no componente Seam."
+
+#. Tag: programlisting
+#: Spring.xml:67
+#, no-c-format
+msgid ""
+"&lt;seam:instance id=\"seamManagedEM\" name=\"someManagedEMComponent\" proxy="
+"\"true\"/&gt;\n"
+"        \n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\"&gt;\n"
+"    &lt;property name=\"entityManager\" ref=\"seamManagedEM\"&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+"&lt;seam:instance id=\"seamManagedEM\" name=\"someManagedEMComponent\" proxy="
+"\"true\"/&gt;\n"
+"        \n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\"&gt;\n"
+"    &lt;property name=\"entityManager\" ref=\"seamManagedEM\"&gt;\n"
+"&lt;/bean&gt;"
+
+#. Tag: para
+#: Spring.xml:68
+#, no-c-format
+msgid ""
+"This example shows one way to use a Seam-managed persistence context from a "
+"Spring bean. (A more robust way to use Seam-managed persistence contexts as "
+"a replacement for the Spring <literal>OpenEntityManagerInView</literal> "
+"filter will be provided in a future release)"
+msgstr "Este exemplo nos apresenta uma maneira de usar o contexto de persistência gerenciada pelo Seam a partir de um Spring bean. (Uma maneira mais brusca de usar os contextos de persistência gerenciados pelo Seam como a substituição de um filtro <literal>OpenEntityManagerInView</literal> Spring irá fornecer uma liberação futura)"
+
+#. Tag: title
+#: Spring.xml:74
+#, no-c-format
+msgid "Injecting Spring beans into Seam components"
+msgstr "Injetando Spring beans em componentes Seam"
+
+#. Tag: para
+#: Spring.xml:75
+#, no-c-format
+msgid ""
+"It is even easier to inject Spring beans into Seam component instances. "
+"Actually, there are two possible approaches:"
+msgstr "É muito simples de se injetar Spring beans em instâncias de componente Seam. Na realidade, existem dois tipos de abordagem:"
+
+#. Tag: para
+#: Spring.xml:80
+#, no-c-format
+msgid "inject a Spring bean using an EL expression"
+msgstr "injeção de um Spring bean usando uma expressão EL"
+
+#. Tag: para
+#: Spring.xml:85
+#, no-c-format
+msgid "make the Spring bean a Seam component"
+msgstr "fazendo um Spring bean um componente Seam"
+
+#. Tag: para
+#: Spring.xml:90
+#, no-c-format
+msgid ""
+"We&#39;ll discuss the second option in the next section. The easiest "
+"approach is to access the Spring beans via EL."
+msgstr "Descreveremos a segunda opção na próxima seção. A maneira mais fácil de abordagem é acessando o Spring beans através do EL."
+
+#. Tag: para
+#: Spring.xml:93
+#, no-c-format
+msgid ""
+"The Spring <literal>DelegatingVariableResolver</literal> is an integration "
+"point Spring provides for integrating Spring with JSF. This "
+"<literal>VariableResolver</literal> makes all Spring beans available in EL "
+"by their bean id. You&#39;ll need to add the "
+"<literal>DelegatingVariableResolver</literal> to <literal>faces-config.xml</"
+"literal>:"
+msgstr ""
+"O Spring <literal>DelegatingVariableResolver</literal> é um ponto de integração do Spring fornecendo a integração entre o Spring e o JSF. Esta <literal>VariableResolver</literal> faz com que todos os Spring beans estejam disponíveis no EL por suas bean id. Você precisará adicionar o <literal>DelegatingVariableResolver</literal> ao <literal>faces-config.xml</"
+"literal>:"
+
+#. Tag: programlisting
+#: Spring.xml:96
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;variable-resolver&gt;\n"
+"        org.springframework.web.jsf.DelegatingVariableResolver\n"
+"    &lt;/variable-resolver&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+"&lt;application&gt;\n"
+"    &lt;variable-resolver&gt;\n"
+"        org.springframework.web.jsf.DelegatingVariableResolver\n"
+"    &lt;/variable-resolver&gt;\n"
+"&lt;/application&gt;"
+
+#. Tag: para
+#: Spring.xml:97
+#, no-c-format
+msgid "Then you can inject Spring beans using <literal>@In</literal>:"
+msgstr "Então, você pode injetar Spring beans usando <literal>@In</literal>:"
+
+#. Tag: programlisting
+#: Spring.xml:100
+#, no-c-format
+msgid ""
+"@In(\"#{bookingService}\")\n"
+"private BookingService bookingService;"
+msgstr ""
+"@In(\"#{bookingService}\")\n"
+"private BookingService bookingService;"
+
+#. Tag: para
+#: Spring.xml:101
+#, no-c-format
+msgid ""
+"The use of Spring beans in EL is not limited to injection. Spring beans may "
+"be used anywhere that EL expressions are used in Seam: process and pageflow "
+"definitions, working memory assertions, etc..."
+msgstr "O uso de Spring beans em EL não é limitado à injeção. O Spring beans podem ser usados em qualquer lugar em que as expressões EL são usadas em Seam: processo, definições pageflow, asserção de memória em funcionamento, etc..."
+
+#. Tag: title
+#: Spring.xml:107
+#, no-c-format
+msgid "Making a Spring bean into a Seam component"
+msgstr "Fazendo um Spring bean em um componente Seam"
+
+#. Tag: para
+#: Spring.xml:108
+#, no-c-format
+msgid ""
+"The <literal>&lt;seam:component/&gt;</literal> namespace handler can be used "
+"to make any Spring bean a Seam component. Just place the <literal>&lt;seam:"
+"component/&gt;</literal> tag within the declaration of the bean that you "
+"wish to be a Seam component:"
+msgstr ""
+"O manuseador do espaço do nome <literal>&lt;seam:component/&gt;</literal> pode ser usado para realizar qualquer Spring bean em um componente Seam. Apenas coloque o caracter <literal>&lt;seam:"
+"component/&gt;</literal> com uma declaração de um bean que você queira que seja um componente Seam:"
+
+#. Tag: programlisting
+#: Spring.xml:111
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;seam:component/&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;seam:component/&gt;\n"
+"&lt;/bean&gt;"
+
+#. Tag: para
+#: Spring.xml:112
+#, no-c-format
+msgid ""
+"By default, <literal>&lt;seam:component/&gt;</literal> will create a "
+"<literal>STATELESS</literal> Seam component with class and name provided in "
+"the bean definition. Occasionally, such as when a <literal>FactoryBean</"
+"literal> is used, the class of the Spring bean may not be the class "
+"appearing in the bean definition. In such cases the <literal>class</literal> "
+"should be explicitly specified. A Seam component name may be explicitly "
+"specified in cases where there is potential for a naming conflict."
+msgstr ""
+"Por padrão, o <literal>&lt;seam:component/&gt;</literal> irá criar um componente Seam <literal>SEM ESTADO</literal> com nome e classe fornecidos na definição bean. Ocasionalmente, como por exemplo quando um <literal>FactoryBean</"
+"literal> for usado, a classe do Spring bean poderá não ser a classe que aparece na definição bean. Neste caso a <literal>classe</literal> deve ser explicitamente especificada. Um nome de componente Seam pode ser explicitamente especificado em casos onde exista um potencial para um conflito de nomeação. "
+
+#. Tag: para
+#: Spring.xml:115
+#, no-c-format
+msgid ""
+"The <literal>scope</literal> attribute of <literal>&lt;seam:component/&gt;</"
+"literal> may be used if you wish the Spring bean to be managed in a "
+"particular Seam scope. The Spring bean must be scoped to <literal>prototype</"
+"literal> if the Seam scope specified is anything other than "
+"<literal>STATELESS</literal>. Pre-existing Spring beans usually have a "
+"fundamentally stateless character, so this attribute is not usually needed."
+msgstr ""
+"O atributo do <literal>escopo</literal> do <literal>&lt;seam:component/&gt;</"
+"literal> pode ser usado caso você queira que o Spring bean seja gerenciado em um particular escopo de Seam. O Spring bean deve possuir escopo para um <literal>prototype</"
+"literal> caso o especificado Seam escopo seja qualquer outra coisa além de <literal>SEM ESTADO</literal>. O Spring beans pré-existentes normalmente possui originalmente um caracter sem estado, desta maneira este atributo não é necessário."
+
+#. Tag: title
+#: Spring.xml:121
+#, no-c-format
+msgid "Seam-scoped Spring beans"
+msgstr "Spring beans de escopo de Seam"
+
+#. Tag: para
+#: Spring.xml:122
+#, no-c-format
+msgid ""
+"The Seam integration package also lets you use Seam&#39;s contexts as Spring "
+"2.0 style custom scopes. This lets you declare any Spring bean in any of "
+"Seam&#39;s contexts. However, note once again that Spring&#39;s component "
+"model was never architected to support statefulness, so please use this "
+"feature with great care. In particular, clustering of session or "
+"conversation scoped Spring beans is deeply problematic, and care must be "
+"taken when injecting a bean or component from a wider scope into a bean of a "
+"narrower scope."
+msgstr "O pacote de integração Seam também permite que você use os contextos do Seam como escopos personalizados de estilo 2.0 Spring. Isto permite que você declare qualquer Seam Spring em qualquer um dos contextos Seam. No entanto, perceba mais uma vez que aquele modelo do componente de Spring nunca foi arquitetado para suporta com/sem estado, então use este recurso com bastante cuidado. Em particular, o agrupamento da sessão ou Spring beans de escopo de conversação são bastante problemáticos e deve-se tomar muito cuidado quando injetando um bean ou componente a partir de um escopo mais largo em um bean de escopo mais estreito."
+
+#. Tag: para
+#: Spring.xml:125
+#, no-c-format
+msgid ""
+"By specifying <literal>&lt;seam:configure-scopes/&gt;</literal> once in a "
+"Spring bean factory configuration, all of the Seam scopes will be available "
+"to Spring beans as custom scopes. To associate a Spring bean with a "
+"particular Seam scope, specify the Seam scope in the <literal>scope</"
+"literal> attribute of the bean definition."
+msgstr ""
+"Especificando o <literal>&lt;seam:configure-scopes/&gt;</literal> uma vez em uma configuração de criação de Spring bean, todos os escopos de Seam irão se tornar disponíveis para Spring beans como escopos personalizados. Para associar um Spring bean com um escopo Seam em particular, especifique o escopo de Seam no atributo do <literal>escopo</"
+"literal> de uma definição bean."
+
+#. Tag: programlisting
+#: Spring.xml:128
+#, no-c-format
+msgid ""
+"&lt;!-- Only needs to be specified once per bean factory--&gt;\n"
+"&lt;seam:configure-scopes/&gt;\n"
+"\n"
+"...\n"
+"\n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope=\"seam."
+"CONVERSATION\"/&gt;"
+msgstr ""
+"&lt;!-- Only needs to be specified once per bean factory--&gt;\n"
+"&lt;seam:configure-scopes/&gt;\n"
+"\n"
+"...\n"
+"\n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope=\"seam."
+"CONVERSATION\"/&gt;"
+
+#. Tag: para
+#: Spring.xml:129
+#, no-c-format
+msgid ""
+"The prefix of the scope name may be changed by specifying the "
+"<literal>prefix</literal> attribute in the <literal>configure-scopes</"
+"literal> definition. (The default prefix is <literal>seam.</literal>)"
+msgstr ""
+"O prefixo do nome do escopo será mudado apenas especificando o atributo de <literal>prefixo</literal> na definição <literal>configure-scopes</"
+"literal>. (O prefixo padrão é <literal>seam.</literal>)."
+
+#. Tag: para
+#: Spring.xml:132
+#, no-c-format
+msgid ""
+"Seam-scoped Spring beans defined this way can be injected into other Spring "
+"beans without the use of <literal>&lt;seam:instance/&gt;</literal>. However, "
+"care must be taken to ensure scope impedance is maintained. The normal "
+"approach used in Spring is to specify <literal>&lt;aop:scoped-proxy/&gt;</"
+"literal> in the bean definition. However, Seam-scoped Spring beans are "
+"<emphasis>not</emphasis> compatible with <literal>&lt;aop:scoped-proxy/&gt;</"
+"literal>. So if you need to inject a Seam-scoped Spring bean into a "
+"singleton, <literal>&lt;seam:instance/&gt;</literal> must be used:"
+msgstr ""
+"O Spring beans de escopo Seam definido desta maneira pode ser injetado em outro Spring beans sem o uso do <literal>&lt;seam:instance/&gt;</literal>. No entanto deve-se tomar cuidado em garantir que a impedância do escopo é mantida. A abordagem normal usada em Spring serve para especificar o <literal>&lt;aop:scoped-proxy/&gt;</"
+"literal> em uma definição bean. No entanto, o Spring beans de escopo Seam <emphasis>não</emphasis> é compatível com <literal>&lt;aop:scoped-proxy/&gt;</"
+"literal>. Caso você precise injetar um Spring bean de escopo Seam em um singleton, o <literal>&lt;seam:instance/&gt;</literal> deve ser usado:"
+
+#. Tag: programlisting
+#: Spring.xml:135
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope=\"seam."
+"CONVERSATION\"/&gt;\n"
+"\n"
+"...\n"
+"\n"
+"&lt;bean id=\"someSingleton\"&gt;\n"
+"    &lt;property name=\"someSeamScopedSpringBean\"&gt;\n"
+"        &lt;seam:instance name=\"someSpringBean\" proxy=\"true\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope=\"seam."
+"CONVERSATION\"/&gt;\n"
+"\n"
+"...\n"
+"\n"
+"&lt;bean id=\"someSingleton\"&gt;\n"
+"    &lt;property name=\"someSeamScopedSpringBean\"&gt;\n"
+"        &lt;seam:instance name=\"someSpringBean\" proxy=\"true\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+
+#. Tag: title
+#: Spring.xml:139
+#, no-c-format
+msgid "Spring Application Context as a Seam Component"
+msgstr "Contexto de Aplicativo Spring como um Contexto Seam"
+
+#. Tag: para
+#: Spring.xml:140
+#, no-c-format
+msgid ""
+"Although it is possible to use the Spring <literal>ContextLoaderListener</"
+"literal> to start your application&#39;s Spring ApplicationContext there are "
+"a couple of limitations."
+msgstr ""
+"Embora é possível usar o Spring <literal>ContextLoaderListener</"
+"literal>, a inicialização de seu Contexto de Aplicativo Spring de aplicação possui algumas limitações."
+
+#. Tag: para
+#: Spring.xml:145
+#, no-c-format
+msgid ""
+"the Spring ApplicationContext must be started <emphasis>after</emphasis> the "
+"<literal>SeamListener</literal>"
+msgstr "o Contexto de Aplicativo Spring deve ser inicializado <emphasis>após</emphasis> o <literal>SeamListener</literal>"
+
+#. Tag: para
+#: Spring.xml:150
+#, no-c-format
+msgid ""
+"it can be tricky starting a Spring ApplicationContext for use in Seam unit "
+"and integration tests"
+msgstr "isto pode ser complicado inicializar um Contexto de Aplicativo Spring para uso na unidade Seam e testes de integração"
+
+#. Tag: para
+#: Spring.xml:155
+#, no-c-format
+msgid ""
+"To overcome these two limitations the Spring integration includes a Seam "
+"component that will start a Spring ApplicationContext. To use this Seam "
+"component place the <literal>&lt;spring:context-loader/&gt;</literal> "
+"definition in the <literal>components.xml</literal>. Specify your Spring "
+"context file location in the <literal>config-locations</literal> attribute. "
+"If more than one config file is needed you can place them in the nested "
+"<literal>&lt;spring:config-locations/&gt;</literal> element following "
+"standard <literal>components.xml</literal> multi value practices."
+msgstr "Para superar estas duas limitações a integração Spring inclui um componente Seam que irá inicializar um Contexto de Aplicativo Spring. Para usar este componente Seam coloque a definição <literal>&lt;spring:context-loader/&gt;</literal> nos <literal>components.xml</literal>. Especifique sua localização de arquivo de contexto Spring no atributo <literal>config-locations</literal>. Caso mais de um arquivo de confirmação seja necessário você poderá colocá-los num elemento <literal>&lt;spring:config-locations/&gt;</literal> aninhado seguindo os <literal>components.xml</literal> padrões de práticas de valores múltiplos."
+
+#. Tag: programlisting
+#: Spring.xml:158
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:spring=\"http://jboss.com/products/seam/spring\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"http://jboss.com/products/seam/components "
+"http://jboss.com/products/seam/components-1.2.xsd\n"
+"                                http://jboss.com/products/seam/spring http://"
+"jboss.com/products/seam/spring-1.2.xsd\"&gt;\n"
+"\n"
+"        &lt;spring:context-loader context-locations=\"/WEB-INF/"
+"applicationContext.xml\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:spring=\"http://jboss.com/products/seam/spring\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"http://jboss.com/products/seam/components "
+"http://jboss.com/products/seam/components-1.2.xsd\n"
+"                                http://jboss.com/products/seam/spring http://"
+"jboss.com/products/seam/spring-1.2.xsd\"&gt;\n"
+"\n"
+"        &lt;spring:context-loader context-locations=\"/WEB-INF/"
+"applicationContext.xml\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Testing.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Testing.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Testing.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,575 @@
+# translation of Testing.po to Brazilian Portuguese
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Leticia de Lima <ldelima at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Testing\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2008-05-02 14:26+1000\n"
+"Last-Translator: Leticia de Lima <ldelima at redhat.com>\n"
+"Language-Team: Brazilian Portuguese <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms:  JBEAP420 \n"
+
+#. Tag: title
+#: Testing.xml:6
+#, no-c-format
+msgid "Testing Seam applications"
+msgstr "Testando aplicativos Seam"
+
+#. Tag: para
+#: Testing.xml:7
+#, no-c-format
+msgid ""
+"Most Seam applications will need at least two kinds of automated tests: "
+"<emphasis>unit tests</emphasis>, which test a particular Seam component in "
+"isolation, and scripted <emphasis>integration tests</emphasis> which "
+"exercise all Java layers of the application (that is, everything except the "
+"view pages)."
+msgstr "A maioria de aplicativos Seam precisa de pelo menos dos tipos de testes automáticos: <emphasis>testes de unidade</emphasis>, que testa um componente Seam particular em isolamento e <emphasis>testes de integração</emphasis> de script, da qual exercita todas as camadas Java do aplicativo (sendo tudo com exceção das páginas de visualização)."
+
+#. Tag: para
+#: Testing.xml:10
+#, no-c-format
+msgid "Both kinds of tests are very easy to write."
+msgstr "Ambos os casos de testes são muito fáceis de serem gravados."
+
+#. Tag: title
+#: Testing.xml:14
+#, no-c-format
+msgid "Unit testing Seam components"
+msgstr "Unidade testando componentes Seam"
+
+#. Tag: para
+#: Testing.xml:15
+#, no-c-format
+msgid ""
+"All Seam components are POJOs. This is a great place to start if you want "
+"easy unit testing. And since Seam emphasises the use of bijection for inter-"
+"component interactions and access to contextual objects, it&#39;s very easy "
+"to test a Seam component outside of its normal runtime environment."
+msgstr "Todos os componentes Seam são POJOs. Este é um bom caminho de se começar caso você queira realizar um teste fácil de unidade. Uma vez que o Seam enfatiza o uso da bijeção para interações de inter-componentes e acessa os objetos contextuais, é muito fácil de se testar um objeto Seam fora de seu ambiente de execução normal."
+
+#. Tag: para
+#: Testing.xml:18
+#, no-c-format
+msgid "Consider the following Seam component:"
+msgstr "Considere o seguinte componente Seam:"
+
+#. Tag: programlisting
+#: Testing.xml:21
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Scope(EVENT)\n"
+"@Name(\"register\")\n"
+"public class RegisterAction implements Register\n"
+"{\n"
+"   private User user;\n"
+"   private EntityManager em;\n"
+"\n"
+"   @In\n"
+"   public void setUser(User user) {\n"
+"       this.user = user;\n"
+"   }\n"
+"   \n"
+"   @PersistenceContext\n"
+"   public void setBookingDatabase(EntityManager em) {\n"
+"       this.em = em;\n"
+"   }\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = em.createQuery(\"select username from User where "
+"username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getResultList();\n"
+"      if (existing.size()==0)\n"
+"      {\n"
+"         em.persist(user);\n"
+"         return \"success\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+"@Stateless\n"
+"@Scope(EVENT)\n"
+"@Name(\"register\")\n"
+"public class RegisterAction implements Register\n"
+"{\n"
+"   private User user;\n"
+"   private EntityManager em;\n"
+"\n"
+"   @In\n"
+"   public void setUser(User user) {\n"
+"       this.user = user;\n"
+"   }\n"
+"   \n"
+"   @PersistenceContext\n"
+"   public void setBookingDatabase(EntityManager em) {\n"
+"       this.em = em;\n"
+"   }\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = em.createQuery(\"select username from User where "
+"username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getResultList();\n"
+"      if (existing.size()==0)\n"
+"      {\n"
+"         em.persist(user);\n"
+"         return \"success\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+
+#. Tag: para
+#: Testing.xml:22
+#, no-c-format
+msgid "We could write a TestNG test for this component as follows:"
+msgstr "Podemos ainda gravar um teste TestNG para este componente como segue abaixo:"
+
+#. Tag: programlisting
+#: Testing.xml:25
+#, no-c-format
+msgid ""
+"public class RegisterActionTest\n"
+"{\n"
+"\n"
+"    @Test\n"
+"    public testRegisterAction()\n"
+"    {\n"
+"        EntityManager em = getEntityManagerFactory().createEntityManager();\n"
+"        em.getTransaction().begin();\n"
+"        \n"
+"        User gavin = new User();\n"
+"        gavin.setName(\"Gavin King\");\n"
+"        gavin.setUserName(\"1ovthafew\");\n"
+"        gavin.setPassword(\"secret\");\n"
+"        \n"
+"        RegisterAction action = new RegisterAction();\n"
+"        action.setUser(gavin);\n"
+"        action.setBookingDatabase(em);\n"
+"        \n"
+"        assert \"success\".equals( action.register() );\n"
+"        \n"
+"        em.getTransaction().commit();\n"
+"        em.close();\n"
+"    }\n"
+"    \n"
+"    \n"
+"    private EntityManagerFactory emf;\n"
+"    \n"
+"    public EntityManagerFactory getEntityManagerFactory()\n"
+"    {\n"
+"        return emf;\n"
+"    }\n"
+"    \n"
+"    @Configuration(beforeTestClass=true)\n"
+"    public void init() \n"
+"    {\n"
+"        emf = Persistence.createEntityManagerFactory"
+"(\"myResourceLocalEntityManager\");\n"
+"    }\n"
+"    \n"
+"    @Configuration(afterTestClass=true)\n"
+"    public void destroy()\n"
+"    {\n"
+"        emf.close();\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+"public class RegisterActionTest\n"
+"{\n"
+"\n"
+"    @Test\n"
+"    public testRegisterAction()\n"
+"    {\n"
+"        EntityManager em = getEntityManagerFactory().createEntityManager();\n"
+"        em.getTransaction().begin();\n"
+"        \n"
+"        User gavin = new User();\n"
+"        gavin.setName(\"Gavin King\");\n"
+"        gavin.setUserName(\"1ovthafew\");\n"
+"        gavin.setPassword(\"secret\");\n"
+"        \n"
+"        RegisterAction action = new RegisterAction();\n"
+"        action.setUser(gavin);\n"
+"        action.setBookingDatabase(em);\n"
+"        \n"
+"        assert \"success\".equals( action.register() );\n"
+"        \n"
+"        em.getTransaction().commit();\n"
+"        em.close();\n"
+"    }\n"
+"    \n"
+"    \n"
+"    private EntityManagerFactory emf;\n"
+"    \n"
+"    public EntityManagerFactory getEntityManagerFactory()\n"
+"    {\n"
+"        return emf;\n"
+"    }\n"
+"    \n"
+"    @Configuration(beforeTestClass=true)\n"
+"    public void init() \n"
+"    {\n"
+"        emf = Persistence.createEntityManagerFactory"
+"(\"myResourceLocalEntityManager\");\n"
+"    }\n"
+"    \n"
+"    @Configuration(afterTestClass=true)\n"
+"    public void destroy()\n"
+"    {\n"
+"        emf.close();\n"
+"    }\n"
+"    \n"
+"}"
+
+#. Tag: para
+#: Testing.xml:26
+#, no-c-format
+msgid ""
+"Seam components don&#39;t usually depend directly upon container "
+"infrastructure, so most unit testing as as easy as that!"
+msgstr "Os componentes Seam não dependem diretamente da infraestrutura do container, então a maioria das unidades testadas são bastante fáceis."
+
+#. Tag: title
+#: Testing.xml:32
+#, no-c-format
+msgid "Integration testing Seam applications"
+msgstr "Teste de Integração dos aplicativos Seam"
+
+#. Tag: para
+#: Testing.xml:33
+#, no-c-format
+msgid ""
+"Integration testing is slightly more difficult. In this case, we can&#39;t "
+"eliminate the container infrastructure; indeed, that is part of what is "
+"being tested! At the same time, we don&#39;t want to be forced to deploy our "
+"application to an application server to run the automated tests. We need to "
+"be able to reproduce just enough of the container infrastructure inside our "
+"testing environment to be able to exercise the whole application, without "
+"hurting performance too much."
+msgstr "O teste de integração é um pouco mais difícil. Neste caso, podemos eliminar a infraestrutura do container, que é de fato a parte parte do que está sendo testado. Ao mesmo tempo, não queremos ser forçados a implementar nosso aplicativo a um servidor de aplicativo para rodar os testes automáticos. Precisamos ser capazes de reproduzir apenas o suficiente da infraestrutura de container, dentro do ambiente de teste, com fins de praticar a aplicação por completa e não prejudicar o desempenho."
+
+#. Tag: para
+#: Testing.xml:36
+#, no-c-format
+msgid ""
+"A second problem is emulating user interactions. A third problem is where to "
+"put our assertions. Some test frameworks let us test the whole application "
+"by reproducing user interactions with the web browser. These frameworks have "
+"their place, but they are not appropriate for use at development time."
+msgstr "O segundo problema é a emulação das interações do usuário. O terceiro problema é onde colocar nossas asserções. Alguns sistemas de testes nos permitem testar o aplicativo por completo, reproduzindo as interações do usuário com o navegador da web. Estes sistemas possuem o próprio lugar, porém não são apropriados para uso no período do desenvolvimento."
+
+#. Tag: para
+#: Testing.xml:39
+#, no-c-format
+msgid ""
+"The approach taken by Seam is to let you write tests that script your "
+"components while running inside a pruned down container environment (Seam, "
+"together with the JBoss Embeddable EJB container). The role of the test "
+"script is basically to reproduce the interaction between the view and the "
+"Seam components. In other words, you get to pretend you are the JSF "
+"implementation!"
+msgstr "A abordagem escolhida pelo Seam é permitir que você escreva testes do script de seus componentes, enquanto que trabalhando dentro de um ambiente de container removido (Seam junto com o container JBoss Embeddable EJB). A função do teste de script e basicamente reproduzir a interação entre a visualização e os componentes Seam. Em outras palavras, você pretende que você está na implementação JSF."
+
+#. Tag: para
+#: Testing.xml:42
+#, no-c-format
+msgid "This approach tests everything except the view."
+msgstr "Esta abordagem testa tudo com exceção da visualização."
+
+#. Tag: para
+#: Testing.xml:45
+#, no-c-format
+msgid "Let&#39;s consider a JSP view for the component we unit tested above:"
+msgstr "Vamos considerar uma visualização JSP para o componente que testamos na unidade acima:"
+
+#. Tag: programlisting
+#: Testing.xml:48
+#, no-c-format
+msgid ""
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Register New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;table border=\"0\"&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Username&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputText value=\"#{user.username}\"/&gt;&lt;/"
+"td&gt;\n"
+"       &lt;/tr&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Real Name&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputText value=\"#{user.name}\"/&gt;&lt;/td&gt;\n"
+"       &lt;/tr&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Password&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputSecret value=\"#{user.password}\"/&gt;&lt;/"
+"td&gt;\n"
+"       &lt;/tr&gt;\n"
+"     &lt;/table&gt;\n"
+"     &lt;h:messages/&gt;\n"
+"     &lt;h:commandButton type=\"submit\" value=\"Register\" action=\"#"
+"{register.register}\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Register New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;table border=\"0\"&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Username&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputText value=\"#{user.username}\"/&gt;&lt;/"
+"td&gt;\n"
+"       &lt;/tr&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Real Name&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputText value=\"#{user.name}\"/&gt;&lt;/td&gt;\n"
+"       &lt;/tr&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Password&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputSecret value=\"#{user.password}\"/&gt;&lt;/"
+"td&gt;\n"
+"       &lt;/tr&gt;\n"
+"     &lt;/table&gt;\n"
+"     &lt;h:messages/&gt;\n"
+"     &lt;h:commandButton type=\"submit\" value=\"Register\" action=\"#"
+"{register.register}\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+
+#. Tag: para
+#: Testing.xml:49
+#, no-c-format
+msgid ""
+"We want to test the registration functionality of our application (the stuff "
+"that happens when the user clicks the Register button). We&#39;ll reproduce "
+"the JSF request lifecycle in an automated TestNG test:"
+msgstr "Queremos testar a funcionalidade de registração em nosso aplicativo (isto acontece quando o usuário clica no botão de Registro). Reproduziremos o ciclo de vida de solicitação JSF em um teste TestNG automático: "
+
+#. Tag: programlisting
+#: Testing.xml:52
+#, no-c-format
+msgid ""
+"public class RegisterTest extends SeamTest\n"
+"{\n"
+"   \n"
+"   @Test\n"
+"   public void testRegister() throws Exception\n"
+"   {\n"
+"            \n"
+"      new FacesRequest() {\n"
+"\n"
+"         @Override\n"
+"         protected void processValidations() throws Exception\n"
+"         {\n"
+"            validateValue(\"#{user.username}\", \"1ovthafew\");\n"
+"            validateValue(\"#{user.name}\", \"Gavin King\");\n"
+"            validateValue(\"#{user.password}\", \"secret\");\n"
+"            assert !isValidationFailure();\n"
+"         }\n"
+"         \n"
+"         @Override\n"
+"         protected void updateModelValues() throws Exception\n"
+"         {\n"
+"            setValue(\"#{user.username}\", \"1ovthafew\");\n"
+"            setValue(\"#{user.name}\", \"Gavin King\");\n"
+"            setValue(\"#{user.password}\", \"secret\");\n"
+"         }\n"
+"\n"
+"         @Override\n"
+"         protected void invokeApplication()\n"
+"         {\n"
+"            assert invokeMethod(\"#{register.register}\").equals(\"success"
+"\");\n"
+"         }\n"
+"\n"
+"         @Override\n"
+"         protected void renderResponse()\n"
+"         {\n"
+"            assert getValue(\"#{user.username}\").equals(\"1ovthafew\");\n"
+"            assert getValue(\"#{user.name}\").equals(\"Gavin King\");\n"
+"            assert getValue(\"#{user.password}\").equals(\"secret\");\n"
+"         }\n"
+"         \n"
+"      }.run();\n"
+"      \n"
+"   }\n"
+"\n"
+"   ...\n"
+"   \n"
+"}"
+msgstr ""
+"public class RegisterTest extends SeamTest\n"
+"{\n"
+"   \n"
+"   @Test\n"
+"   public void testRegister() throws Exception\n"
+"   {\n"
+"            \n"
+"      new FacesRequest() {\n"
+"\n"
+"         @Override\n"
+"         protected void processValidations() throws Exception\n"
+"         {\n"
+"            validateValue(\"#{user.username}\", \"1ovthafew\");\n"
+"            validateValue(\"#{user.name}\", \"Gavin King\");\n"
+"            validateValue(\"#{user.password}\", \"secret\");\n"
+"            assert !isValidationFailure();\n"
+"         }\n"
+"         \n"
+"         @Override\n"
+"         protected void updateModelValues() throws Exception\n"
+"         {\n"
+"            setValue(\"#{user.username}\", \"1ovthafew\");\n"
+"            setValue(\"#{user.name}\", \"Gavin King\");\n"
+"            setValue(\"#{user.password}\", \"secret\");\n"
+"         }\n"
+"\n"
+"         @Override\n"
+"         protected void invokeApplication()\n"
+"         {\n"
+"            assert invokeMethod(\"#{register.register}\").equals(\"success"
+"\");\n"
+"         }\n"
+"\n"
+"         @Override\n"
+"         protected void renderResponse()\n"
+"         {\n"
+"            assert getValue(\"#{user.username}\").equals(\"1ovthafew\");\n"
+"            assert getValue(\"#{user.name}\").equals(\"Gavin King\");\n"
+"            assert getValue(\"#{user.password}\").equals(\"secret\");\n"
+"         }\n"
+"         \n"
+"      }.run();\n"
+"      \n"
+"   }\n"
+"\n"
+"   ...\n"
+"   \n"
+"}"
+
+#. Tag: para
+#: Testing.xml:53
+#, no-c-format
+msgid ""
+"Notice that we&#39;ve extended <literal>SeamTest</literal>, which provides a "
+"Seam environment for our components, and written our test script as an "
+"anonymous class that extends <literal>SeamTest.FacesRequest</literal>, which "
+"provides an emulated JSF request lifecycle. (There is also a "
+"<literal>SeamTest.NonFacesRequest</literal> for testing GET requests.) "
+"We&#39;ve written our code in methods which are named for the various JSF "
+"phases, to emulate the calls that JSF would make to our components. Then "
+"we&#39;ve thrown in various assertions."
+msgstr "Perceba que estendemos o <literal>SeamTest</literal>, do qual fornece um ambiente Seam para nossos componentes e grava nosso script de teste como uma classe anônima que estende o <literal>SeamTest.FacesRequest</literal>. "
+
+#. Tag: para
+#: Testing.xml:56
+#, no-c-format
+msgid ""
+"You&#39;ll find plenty of integration tests for the Seam example "
+"applications which demonstrate more complex cases. There are instructions "
+"for running these tests using Ant, or using the TestNG plugin for eclipse:"
+msgstr "Você encontrará diversos testes de integração para os aplicativos de amostra Seam que demonstram casos mais complexos. Existem instruções para rodar estes testes usando Ant, ou usando o TestNG plugin para eclipse:"
+
+#. Tag: title
+#: Testing.xml:68
+#, no-c-format
+msgid "Using mocks in integration tests"
+msgstr "Usando mocks em testes de integração"
+
+#. Tag: para
+#: Testing.xml:69
+#, no-c-format
+msgid ""
+"Occasionally, we need to be able to replace the implementation of some Seam "
+"component that depends upon resources which are not available in the "
+"integration test environment. For example, suppose we have some Seam "
+"component which is a facade to some payment processing system:"
+msgstr "Ocasionalmente, precisaremos estar aptos a substituir a implementação de alguns componentes Seam que depende dos recursos que não estão disponíveis no ambiente de teste de integração. Por exemplo, vamos supor que temos algum componente Seam da qual é uma facade para alguns sistemas de processos de pagamento:"
+
+#. Tag: programlisting
+#: Testing.xml:72
+#, no-c-format
+msgid ""
+"@Name(\"paymentProcessor\")\n"
+"public class PaymentProcessor {\n"
+"    public boolean processPayment(Payment payment) { .... }\n"
+"}"
+msgstr ""
+"@Name(\"paymentProcessor\")\n"
+"public class PaymentProcessor {\n"
+"    public boolean processPayment(Payment payment) { .... }\n"
+"}"
+
+#. Tag: para
+#: Testing.xml:73
+#, no-c-format
+msgid "For integration tests, we can mock out this component as follows:"
+msgstr "Nos testes de integração, podemos o mock neste componente como segue abaixo:"
+
+#. Tag: programlisting
+#: Testing.xml:76
+#, no-c-format
+msgid ""
+"@Name(\"paymentProcessor\")\n"
+"@Install(precedence=MOCK)\n"
+"public class MockPaymentProcessor extends PaymentProcessor {\n"
+"    public void processPayment(Payment payment) {\n"
+"        return true;\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"paymentProcessor\")\n"
+"@Install(precedence=MOCK)\n"
+"public class MockPaymentProcessor extends PaymentProcessor {\n"
+"    public void processPayment(Payment payment) {\n"
+"        return true;\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Testing.xml:77
+#, no-c-format
+msgid ""
+"Since the <literal>MOCK</literal> precedence is higher than the default "
+"precedence of application components, Seam will install the mock "
+"implementation whenever it is in the classpath. When deployed into "
+"production, the mock implementation is absent, so the real component will be "
+"installed."
+msgstr "Uma vez que a precedência do <literal>MOCK</literal> é mais alta que a precedência padrão dos componentes do aplicativo, o Seam instalará a implementação do mock assim que estiver na classpath. Quando já implementado na produção, a implementação do mock é ausente e então o componente real será instalado."
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Text.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Text.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Text.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,483 @@
+# translation of Text.po to Brazilian Portuguese
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Leticia de Lima <ldelima at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Text\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2008-05-06 09:39+1000\n"
+"Last-Translator: Leticia de Lima <ldelima at redhat.com>\n"
+"Language-Team: Brazilian Portuguese <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Text.xml:6
+#, no-c-format
+msgid "Seam Text"
+msgstr "Teste Seam"
+
+#. Tag: para
+#: Text.xml:7
+#, no-c-format
+msgid ""
+"Collaboration-oriented websites require a human-friendly markup language for "
+"easy entry of formatted text in forum posts, wiki pages, blogs, comments, "
+"etc. Seam provides the <literal>&lt;s:formattedText/&gt;</literal> control "
+"for display of formatted text that conforms to the <emphasis>Seam Text</"
+"emphasis> language. Seam Text is implemented using an ANTLR-based parser. "
+"You don&#39;t need to know anything about ANTLR to use it, however."
+msgstr ""
+"Os websites de colaboração orientada solicitam uma linguagem de marcação humana para fácil entrada de texto de formato em fórum de debates, páginas wiki, blogs, comentários, etc. O Seam fornece o controle <literal>&lt;s:formattedText/&gt;</literal> para exibir o texto formatado que adequada-se a linguagem de <emphasis>Texto Seam</"
+"emphasis>. O Texto Seam é implementado usando um analisador  ANTLR-based. No entanto, você não precisa saber coisa alguma a respeito do ANTLR para usá-lo."
+
+#. Tag: title
+#: Text.xml:11
+#, no-c-format
+msgid "Basic fomatting"
+msgstr "Formatação básica"
+
+#. Tag: para
+#: Text.xml:12
+#, no-c-format
+msgid "Here is a simple example:"
+msgstr "Segue abaixo um simples exemplo:"
+
+#. Tag: programlisting
+#: Text.xml:15
+#, no-c-format
+msgid ""
+"It&#39;s easy to make *bold text*, /italic text/, |monospace|, \n"
+"~deleted text~, super^scripts^ or _underlines_."
+msgstr ""
+"It&#39;s easy to make *bold text*, /italic text/, |monospace|, \n"
+"~deleted text~, super^scripts^ or _underlines_.<literal>&lt;s:formattedText/&gt;</literal>,"
+
+#. Tag: para
+#: Text.xml:16
+#, no-c-format
+msgid ""
+"If we display this using <literal>&lt;s:formattedText/&gt;</literal>, we "
+"will get the following HTML produced:"
+msgstr "Caso exibirmos isto usando <literal>&lt;s:formattedText/&gt;</literal>, teremos o seguinte HTML produzido:"
+
+#. Tag: programlisting
+#: Text.xml:19
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"It&#39;s easy to make &lt;b&gt;bold text&lt;/b&gt;, &lt;i&gt;italic text&lt;/"
+"i&gt;, &lt;tt&gt;monospace&lt;/tt&gt;\n"
+"&lt;del&gt;deleted text&lt;/del&gt;, super&lt;sup&gt;scripts&lt;/sup&gt; or "
+"&lt;u&gt;underlines&lt;/u&gt;.\n"
+"&lt;/p&gt;"
+msgstr ""
+"&lt;p&gt;\n"
+"It&#39;s easy to make &lt;b&gt;bold text&lt;/b&gt;, &lt;i&gt;italic text&lt;/"
+"i&gt;, &lt;tt&gt;monospace&lt;/tt&gt;\n"
+"&lt;del&gt;deleted text&lt;/del&gt;, super&lt;sup&gt;scripts&lt;/sup&gt; or "
+"&lt;u&gt;underlines&lt;/u&gt;.\n"
+"&lt;/p&gt;"
+
+#. Tag: para
+#: Text.xml:20
+#, no-c-format
+msgid ""
+"We can use a blank line to indicate a new paragraph, and <literal>+</"
+"literal> to indicate a heading:"
+msgstr ""
+"Podemos usar uma linha em branco para indicar um novo parágrafo e <literal>+</"
+"literal> para indicar um cabeçalho:"
+
+#. Tag: programlisting
+#: Text.xml:23
+#, no-c-format
+msgid ""
+"+This is a big heading\n"
+"You /must/ have some text following a heading!\n"
+" \n"
+"++This is a smaller heading\n"
+"This is the first paragraph. We can split it across multiple \n"
+"lines, but we must end it with a blank line.\n"
+"\n"
+"This is the second paragraph."
+msgstr ""
+"+This is a big heading\n"
+"You /must/ have some text following a heading!\n"
+" \n"
+"++This is a smaller heading\n"
+"This is the first paragraph. We can split it across multiple \n"
+"lines, but we must end it with a blank line.\n"
+"\n"
+"This is the second paragraph."
+
+#. Tag: para
+#: Text.xml:24
+#, no-c-format
+msgid ""
+"(Note that a simple newline is ignored, you need an additional blank line to "
+"wrap text into a new paragraph.) This is the HTML that results:"
+msgstr "(Perceba que uma simples linha nova é ignorada e você precisa adicionar uma linha em branco para o texto se quebrar automaticamente para o próximo parágrafo.) Este é o resultado no HTML:"
+
+#. Tag: programlisting
+#: Text.xml:27
+#, no-c-format
+msgid ""
+"&lt;h1&gt;This is a big heading&lt;/h1&gt;\n"
+"&lt;p&gt;\n"
+"You &lt;i&gt;must&lt;/i&gt; have some text following a heading!\n"
+"&lt;/p&gt;\n"
+" \n"
+"&lt;h2&gt;This is a smaller heading&lt;/h2&gt;\n"
+"&lt;p&gt;\n"
+"This is the first paragraph. We can split it across multiple \n"
+"lines, but we must end it with a blank line.\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"This is the second paragraph.\n"
+"&lt;/p&gt;"
+msgstr ""
+"&lt;h1&gt;This is a big heading&lt;/h1&gt;\n"
+"&lt;p&gt;\n"
+"You &lt;i&gt;must&lt;/i&gt; have some text following a heading!\n"
+"&lt;/p&gt;\n"
+" \n"
+"&lt;h2&gt;This is a smaller heading&lt;/h2&gt;\n"
+"&lt;p&gt;\n"
+"This is the first paragraph. We can split it across multiple \n"
+"lines, but we must end it with a blank line.\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"This is the second paragraph.\n"
+"&lt;/p&gt;"
+
+#. Tag: para
+#: Text.xml:28
+#, no-c-format
+msgid ""
+"Ordered lists are created using the <literal>#</literal> character. "
+"Unordered lists use the <literal>=</literal> character:"
+msgstr "Listas de pedidos são criadas usando o caracter <literal>#</literal>. Listas desordenadas usam o caracter <literal>=</literal>:"
+
+#. Tag: programlisting
+#: Text.xml:31
+#, no-c-format
+msgid ""
+"An ordered list:\n"
+"        \n"
+"#first item\n"
+"#second item\n"
+"#and even the /third/ item\n"
+"\n"
+"An unordered list:\n"
+"\n"
+"=an item\n"
+"=another item"
+msgstr ""
+"An ordered list:\n"
+"        \n"
+"#first item\n"
+"#second item\n"
+"#and even the /third/ item\n"
+"\n"
+"An unordered list:\n"
+"\n"
+"=an item\n"
+"=another item"
+
+#. Tag: programlisting
+#: Text.xml:32
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"An ordered list:\n"
+"&lt;/p&gt;\n"
+" \n"
+"&lt;ol&gt;       \n"
+"&lt;li&gt;first item&lt;/li&gt;\n"
+"&lt;li&gt;second item&lt;/li&gt;\n"
+"&lt;li&gt;and even the &lt;i&gt;third&lt;/i&gt; item&lt;/li&gt;\n"
+"&lt;/ol&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"An unordered list:\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;ul&gt;\n"
+"&lt;li&gt;an item&lt;/li&gt;\n"
+"&lt;li&gt;another item&lt;/li&gt;\n"
+"&lt;/ul&gt;"
+msgstr ""
+"&lt;p&gt;\n"
+"An ordered list:\n"
+"&lt;/p&gt;\n"
+" \n"
+"&lt;ol&gt;       \n"
+"&lt;li&gt;first item&lt;/li&gt;\n"
+"&lt;li&gt;second item&lt;/li&gt;\n"
+"&lt;li&gt;and even the &lt;i&gt;third&lt;/i&gt; item&lt;/li&gt;\n"
+"&lt;/ol&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"An unordered list:\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;ul&gt;\n"
+"&lt;li&gt;an item&lt;/li&gt;\n"
+"&lt;li&gt;another item&lt;/li&gt;\n"
+"&lt;/ul&gt;"
+
+#. Tag: para
+#: Text.xml:33
+#, no-c-format
+msgid "Quoted sections should be surrounded in double quotes:"
+msgstr "Seções entre aspas devem ser cercadas por dupla aspas:"
+
+#. Tag: programlisting
+#: Text.xml:36
+#, no-c-format
+msgid ""
+"The other guy said:\n"
+"        \n"
+"\"Nyeah nyeah-nee \n"
+"/nyeah/ nyeah!\"\n"
+"\n"
+"But what do you think he means by \"nyeah-nee\"?"
+msgstr ""
+"The other guy said:\n"
+"        \n"
+"\"Nyeah nyeah-nee \n"
+"/nyeah/ nyeah!\"\n"
+"\n"
+"But what do you think he means by \"nyeah-nee\"?"
+
+#. Tag: programlisting
+#: Text.xml:37
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"The other guy said:\n"
+"&lt;/p&gt;\n"
+"        \n"
+"&lt;q&gt;Nyeah nyeah-nee\n"
+"&lt;i&gt;nyeah&lt;/i&gt; nyeah!&lt;/q&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"But what do you think he means by &lt;q&gt;nyeah-nee&lt;/q&gt;?\n"
+"&lt;/p&gt;"
+msgstr ""
+"&lt;p&gt;\n"
+"The other guy said:\n"
+"&lt;/p&gt;\n"
+"        \n"
+"&lt;q&gt;Nyeah nyeah-nee\n"
+"&lt;i&gt;nyeah&lt;/i&gt; nyeah!&lt;/q&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"But what do you think he means by &lt;q&gt;nyeah-nee&lt;/q&gt;?\n"
+"&lt;/p&gt;"
+
+#. Tag: title
+#: Text.xml:41
+#, no-c-format
+msgid "Entering code and text with special characters"
+msgstr "Entrando o código e texto com caracteres especiais"
+
+#. Tag: para
+#: Text.xml:42
+#, no-c-format
+msgid ""
+"Special characters such as <literal>*</literal>, <literal>|</literal> and "
+"<literal>#</literal>, along with HTML characters such as <literal>&lt;</"
+"literal>, <literal>&gt;</literal> and <literal>&amp;</literal> may be "
+"escaped using <literal>\\</literal>:"
+msgstr ""
+"Caracteres especiais como <literal>*</literal>, <literal>|</literal> e "
+"<literal>#</literal>, juntamente com os caracteres HTML como <literal>&lt;</"
+"literal>, <literal>&gt;</literal> e <literal>&amp;</literal> podem ser pulados usando <literal>\\</literal>:"
+
+#. Tag: programlisting
+#: Text.xml:45
+#, no-c-format
+msgid ""
+"You can write down equations like 2\\*3\\=6 and HTML tags\n"
+"like \\&lt;body\\&gt; using the escape character: \\\\."
+msgstr ""
+"Você pode escrever equações como 2\\*3\\=6 and HTML tags\n"
+"like \\&lt;body\\&gt; using the escape character: \\\\."
+
+#. Tag: programlisting
+#: Text.xml:46
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"You can write down equations like 2*3=6 and HTML tags\n"
+"like &lt;body&gt; using the escape character: \\.\n"
+"&lt;/p&gt;"
+msgstr ""
+"&lt;p&gt;\n"
+"You can write down equations like 2*3=6 and HTML tags\n"
+"like &lt;body&gt; using the escape character: \\.\n"
+"&lt;/p&gt;"
+
+#. Tag: para
+#: Text.xml:47
+#, no-c-format
+msgid "And we can quote code blocks using backticks:"
+msgstr "Podemos colocar entre aspas os blocos de código usando backtickes:"
+
+#. Tag: programlisting
+#: Text.xml:50
+#, no-c-format
+msgid ""
+"My code doesn&#39;t work:\n"
+"\n"
+"`for (int i=0; i&lt;100; i--)\n"
+"{\n"
+"    doSomething();\n"
+"}`\n"
+"\n"
+"Any ideas?"
+msgstr ""
+"My code doesn&#39;t work:\n"
+"\n"
+"`for (int i=0; i&lt;100; i--)\n"
+"{\n"
+"    doSomething();\n"
+"}`\n"
+"\n"
+"Any ideas?"
+
+#. Tag: programlisting
+#: Text.xml:51
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"My code doesn&#39;t work:\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;pre&gt;for (int i=0; i&lt;100; i--)\n"
+"{\n"
+"    doSomething();\n"
+"}&lt;/pre&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"Any ideas?\n"
+"&lt;/p&gt;"
+msgstr ""
+"&lt;p&gt;\n"
+"My code doesn&#39;t work:\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;pre&gt;for (int i=0; i&lt;100; i--)\n"
+"{\n"
+"    doSomething();\n"
+"}&lt;/pre&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"Any ideas?\n"
+"&lt;/p&gt;"
+
+#. Tag: title
+#: Text.xml:55
+#, no-c-format
+msgid "Links"
+msgstr "Links"
+
+#. Tag: para
+#: Text.xml:56
+#, no-c-format
+msgid "A link may be created using the following syntax:"
+msgstr "Um link pode ser criado usando a seguinte sintaxe:"
+
+#. Tag: programlisting
+#: Text.xml:59
+#, no-c-format
+msgid "Go to the Seam website at [=&gt;http://jboss.com/products/seam]."
+msgstr "Visite o website Seam em [=&gt;http://jboss.com/products/seam]."
+
+#. Tag: para
+#: Text.xml:60
+#, no-c-format
+msgid "Or, if you want to specify the text of the link:"
+msgstr "Alternativamente, você poderá especificar o testo do link:"
+
+#. Tag: programlisting
+#: Text.xml:63
+#, no-c-format
+msgid "Go to [the Seam website=&gt;http://jboss.com/products/seam]."
+msgstr "Consulte [the Seam website=&gt;http://jboss.com/products/seam]."
+
+#. Tag: para
+#: Text.xml:64
+#, no-c-format
+msgid ""
+"For advanced users, it is even possible to customize the Seam Text parser to "
+"understand wikiword links written using this syntax."
+msgstr "Para usuários mais avançados, é possível ainda personalizar o analisador de Texto Seam para entender links de wikiword gravados utilizando esta sintaxe."
+
+#. Tag: title
+#: Text.xml:70
+#, no-c-format
+msgid "Entering HTML"
+msgstr "Entrando o HTML"
+
+#. Tag: para
+#: Text.xml:71
+#, no-c-format
+msgid ""
+"Text may even include a certain limited subset of HTML (don&#39;t worry, the "
+"subset is chosen to be safe from cross-site scripting attacks). This is "
+"useful for creating links:"
+msgstr "O texto poderá ainda incluir um certo sub-conjunto limitado do HTML (o sub-conjunto é escolhido para estar salvo dos ataques de cross-site scripting). Isto é seguro para a criação de links:"
+
+#. Tag: programlisting
+#: Text.xml:74
+#, no-c-format
+msgid ""
+"You might want to link to &lt;a href=\"http://jboss.com/products/seam\"&gt;"
+"something\n"
+"cool&lt;/a&gt;, or even include an image: &lt;img src=\"/logo.jpg\"/&gt;"
+msgstr ""
+"Você talvez queira conectar-se ao &lt;a href=\"http://jboss.com/products/seam\"&gt;"
+"something\n"
+"cool&lt;/a&gt; ou ainda incluir uma imagem &lt;img src=\"/logo.jpg\"/&gt;"
+
+#. Tag: para
+#: Text.xml:75
+#, no-c-format
+msgid "And for creating tables:"
+msgstr "Para a criação de tabelas:"
+
+#. Tag: programlisting
+#: Text.xml:78
+#, no-c-format
+msgid ""
+"&lt;table&gt;\n"
+"    &lt;tr&gt;&lt;td&gt;First name:&lt;/td&gt;&lt;td&gt;Gavin&lt;/td&gt;&lt;/"
+"tr&gt;\n"
+"    &lt;tr&gt;&lt;td&gt;Last name:&lt;/td&gt;&lt;td&gt;King&lt;/td&gt;&lt;/"
+"tr&gt;\n"
+"&lt;/table&gt;"
+msgstr ""
+"&lt;table&gt;\n"
+"    &lt;tr&gt;&lt;td&gt;First name:&lt;/td&gt;&lt;td&gt;Gavin&lt;/td&gt;&lt;/"
+"tr&gt;\n"
+"    &lt;tr&gt;&lt;td&gt;Last name:&lt;/td&gt;&lt;td&gt;King&lt;/td&gt;&lt;/"
+"tr&gt;\n"
+"&lt;/table&gt;"
+
+#. Tag: para
+#: Text.xml:79
+#, no-c-format
+msgid "But you can do much more if you want!"
+msgstr "Mas você pode ir muito mais adiante, caso seja desejado!"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Tools.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Tools.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Tools.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,785 @@
+# translation of Tools.po to Brazilian Portuguese
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Leticia de Lima <ldelima at redhat.com>, 2008.
+# Xi HUANG <xhuang at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Tools\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2008-05-21 08:42+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team: Chinese Simplified <kde-i18n-doc at lists.kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KAider 0.1\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#. Tag: title
+#: Tools.xml:6
+#, no-c-format
+msgid "Seam tools"
+msgstr "Ferramentas Seam"
+
+#. Tag: title
+#: Tools.xml:8
+#, no-c-format
+msgid "jBPM designer and viewer"
+msgstr "Programador e visualizador JBPM"
+
+#. Tag: para
+#: Tools.xml:9
+#, no-c-format
+msgid ""
+"The jBPM designer and viewer will let you design and view in a nice way your "
+"business processes and your pageflows. This convenient tool is part of JBoss "
+"Eclipse IDE and more details can be found in the jBPM&#39;s documentation "
+"(http://docs.jboss.com/jbpm/v3/gpd/)"
+msgstr "O programador e visualizador JBPM permitirão que você crie e visualize de maneira clara os seus processos comerciais e seus pageflows. Esta ferramenta é parte do JBoss Eclipse IDE e mais detalhes podem ser encontrados na documentação do jBPM (http://docs.jboss.com/jbpm/v3/gpd/)."
+
+#. Tag: title
+#: Tools.xml:13
+#, no-c-format
+msgid "<title>Business process designer</title>"
+msgstr "<title>Programador de processo comercial</title>"
+
+#. Tag: para
+#: Tools.xml:14
+#, no-c-format
+msgid "This tool lets you design your own business process in a graphical way."
+msgstr "Esta ferramenta permite que você crie seu próprio processo comercial numa maneira gráfica."
+
+#. Tag: screeninfo
+#: Tools.xml:17 Tools.xml:33
+#, no-c-format
+msgid "<screeninfo>Business process designer</screeninfo>"
+msgstr "<screeninfo>Programador de processo comercial</screeninfo>"
+
+#. Tag: title
+#: Tools.xml:29
+#, no-c-format
+msgid "Pageflow viewer"
+msgstr "Visualizador Pageflow"
+
+#. Tag: para
+#: Tools.xml:30
+#, no-c-format
+msgid ""
+"This tool let you design to some extend your pageflows and let you build "
+"graphical views of them so you can easily share and compare ideas on how it "
+"should be designed."
+msgstr "Esta ferramenta permite você criar, em certos parâmetros, seus pageflows e permitir que você construa as visualizações gráficas dos mesmos, com a finalidade de dividir e comparar facilmente as idéias de como isto deveria ser criado."
+
+#. Tag: title
+#: Tools.xml:47
+#, no-c-format
+msgid "CRUD-application generator"
+msgstr "Gerador do aplicativo CRUD"
+
+#. Tag: para
+#: Tools.xml:48
+#, no-c-format
+msgid ""
+"This chapter, will give you a short overview of the support for Seam that is "
+"available in the Hibernate Tools. Hibernate Tools is a set of tools for "
+"working with Hibernate and related technologies, such as JBoss Seam and "
+"EJB3. The tools are available as a set of eclipse plugins and Ant tasks. You "
+"can download the Hibernate Tools from the JBoss Eclipse IDE or Hibernate "
+"Tools websites."
+msgstr "Este capítulo dará uma rápida visão do suporte para Seam que está disponível nas Ferramentas Hibernate. As Ferramentas Hibernate são um conjunto de ferramentas para funcionamento com Hibernate e tecnologias relacionadas, como JBoss Seam e EJB3. As ferramentas estão disponíveis como um conjunto de eclipse plugins e tarefas Ant. Você pode realizar o download das Ferramentas Hibernate a partir do JBoss Eclipse IDE ou websites de Ferramentas Hibernate."
+
+#. Tag: para
+#: Tools.xml:51
+#, no-c-format
+msgid ""
+"The specific support for Seam that is currently available is generation of a "
+"fully functional Seam based CRUD-application. The CRUD-application can be "
+"generated based on your existing Hibernate mapping files or EJB3 annotated "
+"POJO&#39;s or even fully reverse engineered from your existing database "
+"schema."
+msgstr "O suporte especificado para Seam que está disponível no momento, é a criação de um Seam inteiramente funcional baseado no aplicativo CRUD. O aplicativo CRUD pode ser gerado baseando-se em seus arquivos de mapeamento Hibernate existentes, POJO's anotados EJB3 ou ainda engenharia de reversão completa a partir do esquema de banco de dados existente."
+
+#. Tag: para
+#: Tools.xml:54
+#, no-c-format
+msgid ""
+"The following sections is focused on the features required to understand for "
+"usage with Seam. The content is derived from the the Hibernate Tools "
+"reference documentation. Thus if you need more detailed information please "
+"refer to the Hibernate Tools documentation."
+msgstr "As seções seguintes são centralizadas nos recursos solicitados para o entendimento de uso do Seam. O conteúdo é derivado a partir da documentação de referência das Ferramentas Hibernate. Dessa forma, caso você precise de informação mais detalhada, por favor refira-se à documentação de Ferramentas Hibernate."
+
+#. Tag: title
+#: Tools.xml:58
+#, no-c-format
+msgid "Creating a Hibernate configuration file"
+msgstr "Criando um arquivo de configuração Hibernate"
+
+#. Tag: para
+#: Tools.xml:59
+#, no-c-format
+msgid ""
+"To be able to reverse engineer and generate code a hibernate.properties or "
+"hibernate.cfg.xml file is needed. The Hibernate Tools provide a wizard for "
+"generating the hibernate.cfg.xml file if you do not already have such file."
+msgstr "Para estar apto à engenharia reversa e código gerado, será necessário um arquivo hibernate.properties ou hibernate.cfg.xml. As Ferramentas Hibernate fornecem um mago para gerar o arquivo hibernate.cfg.xml, caso você não possua este arquivo."
+
+#. Tag: para
+#: Tools.xml:62
+#, no-c-format
+msgid ""
+"Start the wizard by clicking \"New Wizard\" (Ctrl+N), select the Hibernate/"
+"Hibernate Configuration file (cfg.xml) wizard and press \"Next\". After "
+"selecting the wanted location for the hibernate.cfg.xml file, you will see "
+"the following page:"
+msgstr "Inicie o mago apenas clicando em \"Novo Mago\" (Ctrl+N), selecione o Hibernate/ arquivo de Configuração Hibernate (cfg.xml) mago e pressione \"Próxima\". Após selecionar a localização desejada do arquivo hibernate.cfg.xml, você verá a seguinte página:"
+
+#. Tag: para
+#: Tools.xml:73
+#, no-c-format
+msgid ""
+"Tip: The contents in the combo boxes for the JDBC driver class and JDBC URL "
+"change automatically, depending on the Dialect and actual driver you have "
+"chosen."
+msgstr "Dica: os conteúdos nas caixas de combinação para a classe de driver JDBC e JDBC URL mudam automaticamente, dependendo no Dialeto e o driver atual escolhido."
+
+#. Tag: para
+#: Tools.xml:76
+#, no-c-format
+msgid ""
+"Enter your configuration information in this dialog. Details about the "
+"configuration options can be found in Hibernate reference documentation."
+msgstr "Entre a sua informação de configuração neste diálogo. O detalhes sobre as opções de configuração podem ser encontrados na documentação referente ao Hibernate."
+
+#. Tag: para
+#: Tools.xml:79
+#, no-c-format
+msgid ""
+"Press \"Finish\" to create the configuration file, after optionally creating "
+"a Console onfiguration, the hibernate.cfg.xml will be automatically opened "
+"in an editor. The last option \"Create Console Configuration\" is enabled by "
+"default and when enabled i will automatically use the hibernate.cfg.xml for "
+"the basis of a \"Console Configuration\""
+msgstr "Pressione \"Encerrar\" para criar o arquivo de configuração, após criar opcionalmente uma configuração de Console, o hibernate.cfg.xml irá abrir automaticamente num editor. A última opção \"Criar a Configuração de Console\" é ativado por padrão e uma vez ativado irá usar automaticamente o hibernate.cfg.xml para as bases de uma \"Configuração de Controle\"."
+
+#. Tag: title
+#: Tools.xml:85
+#, no-c-format
+msgid "<title>Creating a Hibernate Console configuration</title>"
+msgstr "<title>Criando uma Configuração de Controle Hibernate</title>"
+
+#. Tag: para
+#: Tools.xml:86
+#, no-c-format
+msgid ""
+"A Console Configuration describes to the Hibernate plugin which "
+"configuration files should be used to configure hibernate, including which "
+"classpath is needed to load the POJO&#39;s, JDBC drivers etc. It is required "
+"to make usage of query prototyping, reverse engineering and code generation. "
+"You can have multiple named console configurations. Normally you would just "
+"need one per project, but more (or less) is definitly possible."
+msgstr "A Configuração de Controle descreve ao plug-in Hibernate que os arquivos de configuração devem ser usados para configurar o hibernate, incluindo qual classpath é necessária para carregar POJO&#39;s, JDBC drivers etc. Este procedimento é requerido para fazer uso"
+
+#. Tag: para
+#: Tools.xml:89
+#, no-c-format
+msgid ""
+"You create a console configuration by running the Console Configuration "
+"wizard, shown in the following screenshot. The same wizard will also be used "
+"if you are coming from the hibernate.cfg.xml wizard and had enabled \"Create "
+"Console Configuration\"."
+msgstr ""
+"Você pode criar uma configuração de console apenas rodando o mago de Configuração Console, apresentado na seguinte screenshot. O mesmo mago irá ser usado caso você esteja vindo do mago hibernate.cfg.xml e tenha ativado \"Criar a "
+"Configuração de Console\"."
+
+#. Tag: caption
+#: Tools.xml:100
+#, no-c-format
+msgid "<caption>Creating a Hibernate Console configuration</caption>"
+msgstr "<caption>Criando uma configuração de Console Hibernate</caption>"
+
+#. Tag: para
+#: Tools.xml:102
+#, no-c-format
+msgid ""
+"The following table describes the relevant settings. The wizard can "
+"automatically detect default values for most of these if you started the "
+"Wizard with the relevant java project selected"
+msgstr "A seguinte tabela descreve as configurações relevantes. O mago pode detectar automaticamente os valores padrões para a maioria deles, caso você inicie o Mago com o relevante projeto java selecionado."
+
+#. Tag: title
+#: Tools.xml:106
+#, no-c-format
+msgid "Hibernate Console Configuration Parameters"
+msgstr "Parâmetros de Configuração Console Hibernate"
+
+#. Tag: para
+#: Tools.xml:114
+#, no-c-format
+msgid "Parameter"
+msgstr "Parâmetro "
+
+#. Tag: para
+#: Tools.xml:119 Tools.xml:306 Tools.xml:456
+#, no-c-format
+msgid "Description"
+msgstr "Descrição"
+
+#. Tag: para
+#: Tools.xml:124
+#, no-c-format
+msgid "Auto detected value"
+msgstr "Valor automaticamente detectado"
+
+#. Tag: para
+#: Tools.xml:133
+#, no-c-format
+msgid "Name"
+msgstr "Nome"
+
+#. Tag: para
+#: Tools.xml:138
+#, no-c-format
+msgid "The unique name of the configuration"
+msgstr "O nome exclusivo da configuração"
+
+#. Tag: para
+#: Tools.xml:143
+#, no-c-format
+msgid "Name of the selected project"
+msgstr "Nome do projeto selecionado"
+
+#. Tag: para
+#: Tools.xml:150
+#, no-c-format
+msgid "Property file"
+msgstr "Arquivo da Propriedade"
+
+#. Tag: para
+#: Tools.xml:155
+#, no-c-format
+msgid "Path to a hibernate.properties file"
+msgstr "Caminho para o arquivo hibernate.properties"
+
+#. Tag: para
+#: Tools.xml:160
+#, no-c-format
+msgid "First hibernate.properties file found in the selected project"
+msgstr "Primeiro arquivo hibernate.properties encontrado no projeto selecionado"
+
+#. Tag: para
+#: Tools.xml:167
+#, no-c-format
+msgid "Configuration file"
+msgstr "Arquivo de Configuração"
+
+#. Tag: para
+#: Tools.xml:172
+#, no-c-format
+msgid "Path to a hibernate.cfg.xml file"
+msgstr "Caminho para o arquivo hibernate.cfg.xml"
+
+#. Tag: para
+#: Tools.xml:177
+#, no-c-format
+msgid "First hibernate.cfg.xml file found in the selected project"
+msgstr "Primeiro arquivo encontrado para o projeto selecionado"
+
+#. Tag: para
+#: Tools.xml:184
+#, no-c-format
+msgid "Enable Hibernate ejb3/annotations"
+msgstr "Ativar o Hibernate ejb3/anotações"
+
+#. Tag: para
+#: Tools.xml:189
+#, no-c-format
+msgid ""
+"Selecting this option enables usage of annotated classes. hbm.xml files are "
+"of course still possible to use too. This feature requires running the "
+"Eclipse IDE with a JDK 5 runtime, otherwise you will get classloading and/or "
+"version errors."
+msgstr "A escolha desta opção ativará o uso das classes anotadas. Os arquivos hbm.xml são possíveis de ser utilizados também. Este recurso requer a execução do Eclipse IDE com um período de execução JDK 5, do contrário você terá o carregamento da classe e/ou erros de versão."
+
+#. Tag: para
+#: Tools.xml:194
+#, no-c-format
+msgid "Not enabled"
+msgstr "Não foi ativado"
+
+#. Tag: para
+#: Tools.xml:201
+#, no-c-format
+msgid "Mapping files"
+msgstr "Arquivos de Mapeamento"
+
+#. Tag: para
+#: Tools.xml:206
+#, no-c-format
+msgid ""
+"List of additional mapping files that should be loaded. Note: A hibernate."
+"cfg.xml can also contain mappings. Thus if these a duplicated here, you will "
+"get \"Duplicate mapping\" errors when using the console configuration."
+msgstr "A lista dos arquivos de mapeamento adicional dos quais devem ser carregados. Perceba que um hibernate.cfg.xml pode conter também mapeamentos. Desta forma, caso haja uma duplicação, você receberá erros do \"mapeamento Duplicado\" quando usando a configuração de console."
+
+#. Tag: para
+#: Tools.xml:211
+#, no-c-format
+msgid ""
+"If no hibernate.cfg.xml file is found, all hbm.xml files found in the "
+"selected project"
+msgstr "Caso o arquivo hibernate.cfg.xml não seja encontrado, todos os arquivos hbm.xml são encontrados no projeto selecionado"
+
+#. Tag: para
+#: Tools.xml:218
+#, no-c-format
+msgid "Classpath"
+msgstr "Classpath"
+
+#. Tag: para
+#: Tools.xml:223
+#, no-c-format
+msgid ""
+"The classpath for loading POJO and JDBC drivers. Do not add Hibernate core "
+"libraries or dependencies, they are already included. If you get "
+"ClassNotFound errors then check this list for possible missing or redundant "
+"directories/jars."
+msgstr "A classpath para carregamento POJO e drivers JDBC. Não adicione bibliotecas principais Hibernate ou dependências, pois elas já estão incluídas. Caso você encontre erros ClassNotFound, verifique esta lista para a possível falta ou redundância dos diretórios/jarras."
+
+#. Tag: para
+#: Tools.xml:228
+#, no-c-format
+msgid ""
+"The default build output directory and any JARs with a class implementing "
+"java.sql.Driver in the selected project"
+msgstr "O diretório emissor da construção padrãoe qualquer JARRAS com a implementação da classe java.sql.Driver no produto selecionado"
+
+#. Tag: para
+#: Tools.xml:236
+#, no-c-format
+msgid ""
+"Clicking \"Finish\" creates the configuration and shows it in the "
+"\"Hibernate Configurations\" view"
+msgstr "Clicando \"Encerrar\" cria a configuração e a apresenta na visualização de \"Configurações Hibernate\""
+
+#. Tag: caption
+#: Tools.xml:247
+#, no-c-format
+msgid "Console overview"
+msgstr "Visão Geral do Console"
+
+#. Tag: title
+#: Tools.xml:252
+#, no-c-format
+msgid "Reverse engineering and code generation"
+msgstr "Engenharia Reversa e geração de código"
+
+#. Tag: para
+#: Tools.xml:253
+#, no-c-format
+msgid ""
+"A very simple \"click-and-generate\" reverse engineering and code generation "
+"facility is available. It is this facility that allows you to generate the "
+"skeleton for a full Seam CRUD application."
+msgstr "A facilidade \"clique e gere\" de engenharia reversa e geração de código está disponível. Esta facilidade permite que você gere o esqueleto para um aplicativo completo Seam CRUD."
+
+#. Tag: para
+#: Tools.xml:256
+#, no-c-format
+msgid ""
+"To start working with this process, start the \"Hibernate Code Generation\" "
+"which is available in the toolbar via the Hibernate icon or via the \"Run/"
+"Hibernate Code Generation\" menu item."
+msgstr ""
+"Para começar a trabalhar com este processo, inicie a \"Geração de Código Hibernate\" que está disponível nas barra de ferramenta através do ícone ou por via do ítem de menu de \"Execução/"
+"Geração de Código Hibernate\"."
+
+#. Tag: title
+#: Tools.xml:260
+#, no-c-format
+msgid "Code Generation Launcher"
+msgstr "Iniciador da Geração de Código"
+
+#. Tag: para
+#: Tools.xml:261
+#, no-c-format
+msgid ""
+"When you click on \"Hibernate Code Generation\" the standard Eclipse "
+"launcher dialog will appear. In this dialog you can create, edit and delete "
+"named Hibernate code generation \"launchers\"."
+msgstr "Quando você clica em \"Geração de Código Hibernate\" o diálogo do iniciador Eclipse padrão irá aparecer. Neste diálogo você pode criar, editar e deletar os nomeados \"iniciadores\" de gerador de código Hibernate."
+
+#. Tag: para
+#: Tools.xml:272
+#, no-c-format
+msgid ""
+"The dialog has the standard tabs \"Refresh\" and \"Common\" that can be used "
+"to configure which directories should be automatically refreshed and various "
+"general settings launchers, such as saving them in a project for sharing the "
+"launcher within a team."
+msgstr "O diálogo tem as guias padrões \"Atualizar\" e \"Comum\" que por ser usado para configurar quais diretórios devem ser automaticamente atualizados e vários iniciadores de configurações gerais, como salvá-los num projeto para dividir o iniciador como um time."
+
+#. Tag: para
+#: Tools.xml:283
+#, no-c-format
+msgid ""
+"The first time you create a code generation launcher you should give it a "
+"meaningfull name, otherwise the default prefix \"New_Generation\" will be "
+"used."
+msgstr "A primeira vez em que você criar o iniciador de geração de código, você deverá dar um nome significativo, do contrário o padrão fixado \"Nova_Geração\" será utilizado."
+
+#. Tag: para
+#: Tools.xml:286
+#, no-c-format
+msgid ""
+"Note: The \"At least one exporter option must be selected\" is just a "
+"warning stating that for this launch to work you need to select an exporter "
+"on the Exporter tab. When an exporter has been selected the warning will "
+"disappear."
+msgstr "Perceba que: O \"Pelo menos uma opção exportadora deve ser selecionada\" é apenas um aviso expressando que para que este iniciador funcionar, você precisa precisa selecionar um exportador na guia Exportadora. Quando um exportador for selecionado, o aviso desaparecerá."
+
+#. Tag: para
+#: Tools.xml:289
+#, no-c-format
+msgid "On the \"Main\" tab you the following fields:"
+msgstr "Na guia \"Principal\" você encontrará os seguintes campos:"
+
+#. Tag: title
+#: Tools.xml:293
+#, no-c-format
+msgid "Code generation \"Main\" tab fields"
+msgstr "Campos da guia \"Principal\" de geração de código"
+
+#. Tag: para
+#: Tools.xml:301 Tools.xml:451
+#, no-c-format
+msgid "Field"
+msgstr "Campo"
+
+#. Tag: para
+#: Tools.xml:315
+#, no-c-format
+msgid "Console Configuration"
+msgstr "Configuração de Console"
+
+#. Tag: para
+#: Tools.xml:320
+#, no-c-format
+msgid ""
+"The name of the console configuration which should be used when code "
+"generating."
+msgstr "O nome da configuração de console que deve ser usado quando gerando o código."
+
+#. Tag: para
+#: Tools.xml:327
+#, no-c-format
+msgid "Output directory"
+msgstr "Diretório emissor"
+
+#. Tag: para
+#: Tools.xml:332
+#, no-c-format
+msgid ""
+"Path to a directory into where all output will be written by default. Be "
+"aware that existing files will be overwritten, so be sure to specify the "
+"correct directory."
+msgstr "O caminho do diretório em direção para o local em que todos os emissores serão gravados pelo padrão. Note que os arquivos existentes serão substituídos, então tenha certeza de especificar o diretório correto."
+
+#. Tag: para
+#: Tools.xml:339
+#, no-c-format
+msgid "Reverse engineer from JDBC Connection"
+msgstr "Engenharia Reversa a partir da Conexão JBDC"
+
+#. Tag: para
+#: Tools.xml:344
+#, no-c-format
+msgid ""
+"If enabled the tools will reverse engineer the database available via the "
+"connection information in the selected Hibernate Console Configuration and "
+"generate code based on the database schema. If not enabled the code "
+"generation will just be based on the mappings already specified in the "
+"Hibernate Console configuration."
+msgstr "Caso ativadas, as ferramentas irão utilizar a engenharia reversa do banco de dados disponível, através da informação de conexão na selecionada Configuração de Console Hibernate e geração de código baseado no esquema de banco de dados. Caso não esteja ativada, a geração de código irá apenas basear-se em mapeamentos já especificados na configuração de Console Hibernate."
+
+#. Tag: para
+#: Tools.xml:351
+#, no-c-format
+msgid "Package"
+msgstr "Pacote"
+
+#. Tag: para
+#: Tools.xml:356
+#, no-c-format
+msgid ""
+"The package name here is used as the default package name for any entities "
+"found when reverse engineering."
+msgstr "O nome deste pacote é usado como o nome do pacote padrão para qualquer entidade encontrada quando utilizando a engenharia reversa."
+
+#. Tag: para
+#: Tools.xml:363
+#, no-c-format
+msgid "reveng.xml"
+msgstr "reveng.xml"
+
+#. Tag: para
+#: Tools.xml:368
+#, no-c-format
+msgid ""
+"Path to a reveng.xml file. A reveng.xml file allows you to control certain "
+"aspects of the reverse engineering. e.g. how jdbc types are mapped to "
+"hibernate types and especially important which tables are included/excluded "
+"from the process. Clicking \"setup\" allows you to select an existing reveng."
+"xml file or create a new one.."
+msgstr ""
+"O caminho para o arquivo reveng.xml. O arquivo reveng.xml permite que você controle certos aspectos da engenharia reversa. Por exemplo: como o tipos jdbc estão mapeados para os tipos hibernate e, o mais importante, quais tabelas estão incluídas/excluídas a partir deste processo. Clicando em \"configurar\" permitirá que você selecione um arquivo existente reveng."
+"xml ou criar um novo arquivo."
+
+#. Tag: para
+#: Tools.xml:375
+#, no-c-format
+msgid "reveng. strategy"
+msgstr "reveng. strategy"
+
+#. Tag: para
+#: Tools.xml:380
+#, no-c-format
+msgid ""
+"If reveng.xml does not provide enough customization you can provide your own "
+"implementation of an ReverseEngineeringStrategy. The class need to be in the "
+"claspath of the Console Configuration, otherwise you will get class not "
+"found exceptions."
+msgstr "Caso o reveng.xml não forneça a personalização necessária, você pode fornecer a sua própria implementação de uma ReverseEngineeringStrategy. A classe precisa estar na classpath da Configuração do Console, do contrário terá a classe com exceções não encontradas."
+
+#. Tag: para
+#: Tools.xml:387
+#, no-c-format
+msgid "Generate basic typed composite ids"
+msgstr "Geração de ids de composição básica digitada"
+
+#. Tag: para
+#: Tools.xml:392
+#, no-c-format
+msgid ""
+"This field should always be enabled when generating the Seam CRUD "
+"application. A table that has a multi-colum primary key a &lt;composite-"
+"id&gt; mapping will always be created. If this option is enabled and there "
+"are matching foreign-keys each key column is still considered a &#39;"
+"basic&#39; scalar (string, long, etc.) instead of a reference to an entity. "
+"If you disable this option a &lt;key-many-to-one&gt; instead. Note: a &lt;"
+"many-to-one&gt; property is still created, but is simply marked as non-"
+"updatable and non-insertable."
+msgstr ""
+"Este campo deve sempre ser ativado quando gerando o aplicativo CRUD Seam. A tabela que tem uma chave primária de coluna múltipla, terá sempre um mapeamento &lt;composite-"
+"id&gt; criado. Caso esta opção seja ativada"
+
+#. Tag: para
+#: Tools.xml:399
+#, no-c-format
+msgid "Use custom templates"
+msgstr "Uso de modelos personalizados"
+
+#. Tag: para
+#: Tools.xml:404
+#, no-c-format
+msgid ""
+"If enabled, the Template directory will be searched first when looking up "
+"the velocity templates, allowing you to redefine how the individual "
+"templates process the hibernate mapping model."
+msgstr "Caso ativado, o diretório de Modelo será primeiramente procurado quando observando os modelos de velocidade, permitindo que você redefina como os modelos individuais processam o modelo de mapeamento hibernate."
+
+#. Tag: para
+#: Tools.xml:411
+#, no-c-format
+msgid "Template directory"
+msgstr "Diretório de modelo"
+
+#. Tag: para
+#: Tools.xml:416
+#, no-c-format
+msgid "A path to a directory with custom velocity templates."
+msgstr "Um caminho de diretório de modelo com modelos de velocidade personalizada."
+
+#. Tag: title
+#: Tools.xml:427
+#, no-c-format
+msgid "Exporters"
+msgstr "Exportadores"
+
+#. Tag: para
+#: Tools.xml:428
+#, no-c-format
+msgid ""
+"The exporters tab is used to specify which type of code that should be "
+"generated. Each selection represents an \"Exporter\" that are responsible "
+"for generating the code, hence the name."
+msgstr "O guia de exportadores é usado para especificar qual tipo de código deve ser gerado. Cada seleção representa um \"Exportador\" que é responsável pela geração do código, portanto do nome."
+
+#. Tag: para
+#: Tools.xml:439
+#, no-c-format
+msgid ""
+"The following table describes in short the various exporters. The most "
+"relevant for Seam is of course the \"JBoss Seam Skeleton app\"."
+msgstr "A seguinte tabela descreve em resumo os vários exportadores. O mais relevante para Seam é o \"JBoss Seam Skeleton app\"."
+
+#. Tag: title
+#: Tools.xml:443
+#, no-c-format
+msgid "Code generation \"Exporter\" tab fields"
+msgstr "Campos de guia \"Exportador\" de geração de código"
+
+#. Tag: para
+#: Tools.xml:465
+#, no-c-format
+msgid "Generate domain code"
+msgstr "Criação do código de domínio "
+
+#. Tag: para
+#: Tools.xml:470
+#, no-c-format
+msgid ""
+"Generates POJO&#39;s for all the persistent classes and components found in "
+"the given Hibernate configuration."
+msgstr "Cria o  POJO&#39;s para todas as classes persistentes e componentes encontrados na configuração Hibernate determinada."
+
+#. Tag: para
+#: Tools.xml:477
+#, no-c-format
+msgid "JDK 1.5 constructs"
+msgstr "Construções JDK 1.5"
+
+#. Tag: para
+#: Tools.xml:482
+#, no-c-format
+msgid "When enabled the POJO&#39;s will use JDK 1.5 constructs."
+msgstr "Quando ativado o POJO&#39;s irá usar as construções JDK 1.5."
+
+#. Tag: para
+#: Tools.xml:489
+#, no-c-format
+msgid "EJB3/JSR-220 annotations"
+msgstr "Anotações EJB3/JSR-220"
+
+#. Tag: para
+#: Tools.xml:494
+#, no-c-format
+msgid ""
+"When enabled the POJO&#39;s will be annotated according to the EJB3/JSR-220 "
+"persistency specification."
+msgstr "Quando ativado o POJO&#39;s será anotado de acordo com a especificação de persistência EJB3/JSR-220."
+
+#. Tag: para
+#: Tools.xml:501
+#, no-c-format
+msgid "Generate DAO code"
+msgstr "Criação do código DAO"
+
+#. Tag: para
+#: Tools.xml:506
+#, no-c-format
+msgid "Generates a set of DAO&#39;s for each entity found."
+msgstr "Cria o conjunto de DAO&#39;s para cada entidade encontrada."
+
+#. Tag: para
+#: Tools.xml:513
+#, no-c-format
+msgid "Generate Mappings"
+msgstr "Criação de Mapeamentos "
+
+#. Tag: para
+#: Tools.xml:518
+#, no-c-format
+msgid "Generate mapping (hbm.xml) files for each entity"
+msgstr "Criação de mapeamento dos arquivos (hbm.xml) de cada entidade"
+
+#. Tag: para
+#: Tools.xml:525
+#, no-c-format
+msgid "Generate hibernate configuration file"
+msgstr "Criação do arquivo de configuração Hibernate"
+
+#. Tag: para
+#: Tools.xml:530
+#, no-c-format
+msgid ""
+"Generate a hibernate.cfg.xml file. Used to keep the hibernate.cfg.xml "
+"uptodate with any new found mapping files."
+msgstr "Criação do arquivo hibernate.cfg.xml. Usado para manter o hibernate.cfg.xml atualizado com qualquer um dos novos arquivos de mapeamento encontrados."
+
+#. Tag: para
+#: Tools.xml:537
+#, no-c-format
+msgid "Generate schema html-documentation"
+msgstr "Criação do esquema da documentação html "
+
+#. Tag: para
+#: Tools.xml:542
+#, no-c-format
+msgid ""
+"Generates set of html pages that documents the database schema and some of "
+"the mappings."
+msgstr "Criação do conjunto das páginas html que documenta o esquema de banco de dados e alguns do mapeamento."
+
+#. Tag: para
+#: Tools.xml:549
+#, no-c-format
+msgid "Generate JBoss Seam skeleton app (beta)"
+msgstr "Criação do JBoss Seam skeleton app (beta)"
+
+#. Tag: para
+#: Tools.xml:554
+#, no-c-format
+msgid ""
+"Generates a complete JBoss Seam skeleton app. The generation will include "
+"annotated POJO&#39;s, Seam controller beans and a JSP for the presentation "
+"layer. See the generated readme.txt for how to use it."
+msgstr "Gera um completo JBoss Seam skeleton app. A criação irá incluir o POJO&#39;s anotado, beans de controlador Seam e um JSP para a camada de apresentação. Observe o readme.txt gerado para maiores informações em como se utilizar isto."
+
+#. Tag: para
+#: Tools.xml:557
+#, no-c-format
+msgid ""
+"Note: this exporter generates a full application, including a build.xml thus "
+"you will get the best results if you use an output directory which is the "
+"root of your project."
+msgstr "Perceba que este exportador gera um aplicativo completo, incluindo um build.xml, uma vez que você terá os melhores resultados caso use um diretório emissor do qual é a raiz de seu projeto."
+
+#. Tag: title
+#: Tools.xml:568
+#, no-c-format
+msgid "Generating and using the code"
+msgstr "Gerando e usando o código"
+
+#. Tag: para
+#: Tools.xml:569
+#, no-c-format
+msgid ""
+"When you have finished filling out the settings, simply press \"Run\" to "
+"start the generation of code. This might take a little while if you are "
+"reverse engineering from a database."
+msgstr "Uma vez que você estiver terminado de completar as configurações, apenas pressione \"Ativar\" para iniciar a geração do código. Isto poderá demorar um pouco caso você utilize a engenharia reversa a partir de um banco de dados."
+
+#. Tag: para
+#: Tools.xml:572
+#, no-c-format
+msgid ""
+"When the generation have finished you should now have a complete skeleton "
+"Seam application in the output directory. In the output directory there is a "
+"<literal>readme.txt</literal> file describing the steps needed to deploy and "
+"run the example."
+msgstr "Quando a geração estiver terminada, você deverá ter um aplicativo Seam de esqueleto completo no diretório do emissor. No diretório do emissor há um arquivo <literal>readme.txt</literal> descrevendo os passos necessários para implementar e executar o exemplo."
+
+#. Tag: para
+#: Tools.xml:575
+#, no-c-format
+msgid ""
+"If you want to regenerate/update the skeleton code then simply run the code "
+"generation again by selecting the \"Hibernate Code Generation\" in the "
+"toolbar or \"Run\" menu. Enjoy."
+msgstr "Caso você deseje recriar/atualizar o código do esqueleto, apenas execute a geração do código novamente selecionando a \"Geração do Código Hibernate\" na barra de ferramentas ou menu de \"Ativação\". Divirta-se."
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Tutorial.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Tutorial.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Tutorial.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,5996 @@
+# translation of Tutorial.po to Brazilian Portuguese
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Leticia de Lima <ldelima at redhat.com>, 2008.
+# Xi HUANG <xhuang at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Tutorial\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-05-19 06:14+0000\n"
+"PO-Revision-Date: 2008-06-02 13:19+1000\n"
+"Last-Translator: Leticia de Lima <ldelima at redhat.com>\n"
+"Language-Team: Brazilian Portuguese <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#. Tag: title
+#: Tutorial.xml:6
+#, no-c-format
+msgid "Seam Tutorial"
+msgstr "Seam Tutorial "
+
+#. Tag: title
+#: Tutorial.xml:8
+#, no-c-format
+msgid "Try the examples"
+msgstr "Experimente usar as amostras"
+
+#. Tag: para
+#: Tutorial.xml:9
+#, no-c-format
+msgid ""
+"In this tutorial, we'll assume that you are using JBoss AS 4.2 with Seam, as "
+"in the case of JBoss Enterprise Application Platform."
+msgstr "Neste tutorial, assumimos que você está usando JBoss AS 4.2 com o Seam, como no caso da Plataforma de Aplicativo JBoss Enterprise."
+
+#. Tag: para
+#: Tutorial.xml:12
+#, no-c-format
+msgid "The directory structure of each example in Seam follows this pattern:"
+msgstr "A estrutura do diretório de cada exemplo em Seam segue o seguinte padrão:"
+
+#. Tag: para
+#: Tutorial.xml:17
+#, no-c-format
+msgid ""
+"Web pages, images and stylesheets may be found in <filename>examples/"
+"<replaceable>registration</replaceable>/view</filename>"
+msgstr ""
+"Páginas da web, imagens e folhas de estilo podem ser encontradas em "
+"<filename>examples/<replaceable>registration</replaceable>/view</filename>"
+
+#. Tag: para
+#: Tutorial.xml:22
+#, no-c-format
+msgid ""
+"Resources such as deployment descriptors and data import scripts may be "
+"found in <filename>examples/<replaceable>registration</replaceable>/"
+"resources</filename>"
+msgstr ""
+"Recursos como descritores de implementação e scripts importados de dados "
+"podem ser encontrados em <filename>examples/<replaceable>registration</"
+"replaceable>/resources</filename>"
+
+#. Tag: para
+#: Tutorial.xml:27
+#, no-c-format
+msgid ""
+"Java source code may be found in <filename>examples/"
+"<replaceable>registration</replaceable>/src</filename>"
+msgstr ""
+"O código de fonte Java pode ser encontrado em <filename>examples/"
+"<replaceable>registration</replaceable>/src</filename>"
+
+#. Tag: para
+#: Tutorial.xml:32
+#, no-c-format
+msgid ""
+"The Ant build script is <filename>examples/<replaceable>registration</"
+"replaceable>/build.xml</filename>"
+msgstr ""
+"O script de construção Ant: <filename>examples/<replaceable>registration</"
+"replaceable>/build.xml</filename>"
+
+#. Tag: title
+#: Tutorial.xml:38
+#, no-c-format
+msgid "Running the examples on JBoss AS"
+msgstr "Execução das amostras no JBoss AS"
+
+#. Tag: para
+#: Tutorial.xml:39
+#, no-c-format
+msgid ""
+"First, make sure you have Ant correctly installed, with <literal>&#36;"
+"ANT_HOME</literal> and <literal>&#36;JAVA_HOME</literal> set correctly. "
+"Next, make sure you set the location of your JBoss AS installation in the "
+"<literal>build.properties</literal> file in the root folder of your Seam "
+"installation. If you haven't already done so, start JBoss AS now by typing "
+"<literal>bin/run.sh</literal> or <literal>bin/run.bat</literal> in the root "
+"directory of your JBoss installation."
+msgstr ""
+"Primeiramente, tenha certeza de que você possui a Ant corretamente instalada "
+"e configurada com <literal>&#36;ANT_HOME</literal> e <literal>&#36;"
+"JAVA_HOME</literal>. O próximo passo é certificar-se de configurar a "
+"localização de sua instalação JBoss AS no arquivo <literal>build.properties</"
+"literal> da pasta raiz de sua instalação Seam. Inicie o JBoss AS, caso você "
+"ainda não o tenha iniciado, digitando <literal>bin/run.sh</literal> ou "
+"<literal>bin/run.bat</literal> no diretório raiz de sua instalação JBoss."
+
+#. Tag: para
+#: Tutorial.xml:42
+#, no-c-format
+msgid ""
+"By default the examples will deploy to the default configuration of the "
+"server. These examples should be deployed to the production configuration if "
+"they are to be used with JBoss Enterprise Application Platform 4.2, and the "
+"example <literal>build.xml</literal> file should be modified to reflect this "
+"before building and deploying. Two lines should be changed in this file:"
+msgstr ""
+"Pelo padrão, os exemplos irão implementar a configuração padrão do servidor. "
+"Estes exemplos devem ser implementados à configuração de produção caso eles "
+"não estejam sendo utilizados com a Plataforma de Aplicativo JBoss Enterprise "
+"4.2. Além disso, o arquivo <literal>build.xml</literal> de amostra deve ser "
+"modificado para refletir isto antes da construção e implementação. Duas "
+"linhas deverão ser alteradas neste arquivo:"
+
+#. Tag: screen
+#: Tutorial.xml:45
+#, no-c-format
+msgid ""
+"&lt;property name=\"deploy.dir\"           value=\"${jboss.home}/server/"
+"production/deploy\"/&gt;"
+msgstr ""
+"&lt;property name=\"deploy.dir\"           value=\"${jboss.home}/server/"
+"production/deploy\"/&gt;"
+
+#. Tag: screen
+#: Tutorial.xml:46
+#, no-c-format
+msgid ""
+"&lt;property name=\"webroot.dir\"         \n"
+"        value=\"${deploy.dir}/jboss-web.deployer/ROOT.war\"/&gt;"
+msgstr ""
+"&lt;property name=\"webroot.dir\"         \n"
+"        value=\"${deploy.dir}/jboss-web.deployer/ROOT.war\"/&gt;"
+
+#. Tag: para
+#: Tutorial.xml:47
+#, no-c-format
+msgid ""
+"Now, build and deploy the example by typing <literal>ant deploy</literal> in "
+"the <filename>examples/<replaceable>registration</replaceable></filename> "
+"directory."
+msgstr ""
+"Agora, a construção e implementação da amostra podem ser realizadas apenas "
+"digitando <literal>ant deploy</literal> no diretório <filename>examples/"
+"<replaceable>registration</replaceable></filename>."
+
+#. Tag: para
+#: Tutorial.xml:50
+#, no-c-format
+msgid ""
+"Try it out by accessing <ulink url=\"http://localhost:8080/seam-registration/"
+"\"><literal>http://localhost:8080/seam-registration/</literal></ulink> with "
+"your web browser."
+msgstr ""
+"Faça uma tentativa, apenas acessando <ulink url=\"http://localhost:8080/seam-"
+"registration/\"><literal>http://localhost:8080/seam-registration/</literal></"
+"ulink> com seu navegador da web."
+
+#. Tag: title
+#: Tutorial.xml:56
+#, no-c-format
+msgid "Running the examples on Tomcat"
+msgstr "Rodando as amostras no Tomcat"
+
+#. Tag: para
+#: Tutorial.xml:57
+#, no-c-format
+msgid ""
+"First, make sure you have Ant correctly installed, with <literal>&#36;"
+"ANT_HOME</literal> and <literal>&#36;JAVA_HOME</literal> set correctly. "
+"Next, make sure you set the location of your Tomcat installation in the "
+"<literal>build.properties</literal> file in the root folder of your Seam "
+"installation."
+msgstr ""
+"Primeiramente, certifique-se de que você possui a Ant corretamente instalada "
+"e configurada com <literal>&#36;ANT_HOME</literal> e <literal>&#36;"
+"JAVA_HOME</literal>. Então, configure a localização da sua instalação Tomcat "
+"no seu arquivo <literal>build.properties</literal> na pasta raiz de sua "
+"instalação Seam."
+
+#. Tag: para
+#: Tutorial.xml:60
+#, no-c-format
+msgid ""
+"Now, build and deploy the example by typing <literal>ant deploy.tomcat</"
+"literal> in the <filename>examples/<replaceable>registration</replaceable></"
+"filename> directory."
+msgstr ""
+"Agora, instale e implemente a amostra digitando <literal>ant deploy.tomcat</"
+"literal> no diretório <filename>examples/<replaceable>registration</"
+"replaceable></filename>."
+
+#. Tag: para
+#: Tutorial.xml:63
+#, no-c-format
+msgid "Finally, start Tomcat."
+msgstr "E finalmente, inicie o Tomcat."
+
+#. Tag: para
+#: Tutorial.xml:66
+#, no-c-format
+msgid ""
+"Try it out by accessing <ulink url=\"http://localhost:8080/jboss-seam-"
+"registration/\"><literal>http://localhost:8080/jboss-seam-registration/</"
+"literal></ulink> with your web browser."
+msgstr ""
+"Experimente isto acessando <ulink url=\"http://localhost:8080/jboss-seam-"
+"registration/\"><literal>http://localhost:8080/jboss-seam-registration/</"
+"literal></ulink> com seu navegador da web."
+
+#. Tag: para
+#: Tutorial.xml:69
+#, no-c-format
+msgid ""
+"When you deploy the example to Tomcat, any EJB3 components will run inside "
+"the JBoss Embeddable EJB3 container, a complete standalone EJB3 container "
+"environment."
+msgstr ""
+"Quando você implementar a amostra do Tomcat, qualquer componente EJB3 irá "
+"rodar dentro do container do JBoss Embeddable EJB3, um ambiente de container "
+"EJB3 de autonomia completa."
+
+#. Tag: title
+#: Tutorial.xml:75
+#, no-c-format
+msgid "Running the example tests"
+msgstr "Rodando os testes de amostras"
+
+#. Tag: para
+#: Tutorial.xml:76
+#, no-c-format
+msgid ""
+"Most of the examples come with a suite of TestNG integration tests. The "
+"easiest way to run the tests is to run <literal>ant testexample</literal> "
+"inside the <filename>examples/<replaceable>registration</replaceable></"
+"filename> directory. It is also possible to run the tests inside your IDE "
+"using the TestNG plugin."
+msgstr ""
+"A maioria dos exemplos vêem com a suíte de testes de integração TestNG. A "
+"maneira mais fácil de rodar estes testes é executar <literal>ant "
+"testexample</literal> dentro do diretório <filename>examples/"
+"<replaceable>registration</replaceable></filename>. É possível também "
+"executar os testes dentro de seu IDE usando o plug-in TestNG. "
+
+#. Tag: title
+#: Tutorial.xml:84
+#, no-c-format
+msgid "Your first Seam application: the registration example"
+msgstr "O seu primeiro aplicativo Seam: a amostra de registro"
+
+#. Tag: para
+#: Tutorial.xml:85
+#, no-c-format
+msgid ""
+"The registration example is a fairly trivial application that lets a new "
+"user store his username, real name and password in the database. The example "
+"isn&#39;t intended to show off all of the cool functionality of Seam. "
+"However, it demonstrates the use of an EJB3 session bean as a JSF action "
+"listener, and basic configuration of Seam."
+msgstr ""
+"A amostra de registro é um aplicativo comum verdadeiro, que permite com "
+"que o novo usuário instale o nome do usuário, o nome verdadeiro e a senha no "
+"banco de dados. O exemplo não pretende exibir toda a funcionalidade de Seam. "
+"No entanto, isto demonstra o uso de um bean de sessão EJB3 como um JSF "
+"action listener e configuração básica de Seam."
+
+#. Tag: para
+#: Tutorial.xml:88
+#, no-c-format
+msgid ""
+"We&#39;ll go slowly, since we realize you might not yet be familiar with EJB "
+"3.0."
+msgstr ""
+"Iremos detalhar isto passo a passo, uma vez que você não está ainda "
+"completamente familiar com o EJB 3.0."
+
+#. Tag: para
+#: Tutorial.xml:91
+#, no-c-format
+msgid ""
+"The start page displays a very basic form with three input fields. Try "
+"filling them in and then submitting the form. This will save a user object "
+"in the database."
+msgstr ""
+"A página inicial exibe uma forma bem básica com três campos de entrada. "
+"Tente completá-los e então submeta o formulário. Isto salvará o objeto do "
+"usuário no banco de dados."
+
+#. Tag: title
+#: Tutorial.xml:103 Tutorial.xml:415 Tutorial.xml:554 Tutorial.xml:714
+#, no-c-format
+msgid "Understanding the code"
+msgstr "Dedução do código"
+
+#. Tag: para
+#: Tutorial.xml:104
+#, no-c-format
+msgid ""
+"The example is implemented with two JSP pages, one entity bean and one "
+"stateless session bean."
+msgstr ""
+"A amostra é implementada com as duas páginas JSP, uma de bean de entidade e "
+"outra de bean de sessão sem estado."
+
+#. Tag: para
+#: Tutorial.xml:115
+#, no-c-format
+msgid "Let&#39;s take a look at the code, starting from the \"bottom\"."
+msgstr "Vamos observar o código começando pelo \"básico\"."
+
+#. Tag: title
+#: Tutorial.xml:119
+#, no-c-format
+msgid "The entity bean: <literal>User.java</literal>"
+msgstr "O bean de entidade: <literal>User.java</literal>"
+
+#. Tag: para
+#: Tutorial.xml:120
+#, no-c-format
+msgid ""
+"We need an EJB entity bean for user data. This class defines "
+"<emphasis>persistence</emphasis> and <emphasis>validation</emphasis> "
+"declaratively, via annotations. It also needs some extra annotations that "
+"define the class as a Seam component."
+msgstr ""
+"Precisamos de um bean de entidade para os dados do usuário. Esta classe "
+"determina declaradamente a <emphasis>persistência</emphasis> e a"
+"<emphasis>validação</emphasis> por meio de anotações. Isto precisa também de"
+"algumas anotações extras que definem a classe como um componente Seam."
+
+#. Tag: programlisting
+#: Tutorial.xml:135
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"user\")\n"
+"@Scope(SESSION)\n"
+"@Table(name=\"users\")\n"
+"public class User implements Serializable\n"
+"{\n"
+"   private static final long serialVersionUID = 1881413500711441951L;\n"
+"   \n"
+"   private String username;\n"
+"   private String password;\n"
+"   private String name;\n"
+"   \n"
+"   public User(String name, String password, String username)\n"
+"   {\n"
+"      this.name = name;\n"
+"      this.password = password;\n"
+"      this.username = username;\n"
+"   }\n"
+"   \n"
+"   public User() {}\n"
+"   \n"
+"   @NotNull @Length(min=5, max=15)\n"
+"   public String getPassword()\n"
+"   {\n"
+"      return password;\n"
+"   }\n"
+"\n"
+"   public void setPassword(String password)\n"
+"   {\n"
+"      this.password = password;\n"
+"   }\n"
+"   \n"
+"   @NotNull\n"
+"   public String getName()\n"
+"   {\n"
+"      return name;\n"
+"   }\n"
+"\n"
+"   public void setName(String name)\n"
+"   {\n"
+"      this.name = name;\n"
+"   }\n"
+"   \n"
+"   @Id @NotNull @Length(min=5, max=15)\n"
+"   public String getUsername()\n"
+"   {\n"
+"      return username;\n"
+"   }\n"
+"\n"
+"   public void setUsername(String username)\n"
+"   {\n"
+"      this.username = username;\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+"@Entity\n"
+"@Name(\"user\")\n"
+"@Scope(SESSION)\n"
+"@Table(name=\"users\")\n"
+"public class User implements Serializable\n"
+"{\n"
+"   private static final long serialVersionUID = 1881413500711441951L;\n"
+"   \n"
+"   private String username;\n"
+"   private String password;\n"
+"   private String name;\n"
+"   \n"
+"   public User(String name, String password, String username)\n"
+"   {\n"
+"      this.name = name;\n"
+"      this.password = password;\n"
+"      this.username = username;\n"
+"   }\n"
+"   \n"
+"   public User() {}\n"
+"   \n"
+"   @NotNull @Length(min=5, max=15)\n"
+"   public String getPassword()\n"
+"   {\n"
+"      return password;\n"
+"   }\n"
+"\n"
+"   public void setPassword(String password)\n"
+"   {\n"
+"      this.password = password;\n"
+"   }\n"
+"   \n"
+"   @NotNull\n"
+"   public String getName()\n"
+"   {\n"
+"      return name;\n"
+"   }\n"
+"\n"
+"   public void setName(String name)\n"
+"   {\n"
+"      this.name = name;\n"
+"   }\n"
+"   \n"
+"   @Id @NotNull @Length(min=5, max=15)\n"
+"   public String getUsername()\n"
+"   {\n"
+"      return username;\n"
+"   }\n"
+"\n"
+"   public void setUsername(String username)\n"
+"   {\n"
+"      this.username = username;\n"
+"   }\n"
+"\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:138
+#, no-c-format
+msgid ""
+"The EJB3 standard <literal>@Entity</literal> annotation indicates that the "
+"<literal>User</literal> class is an entity bean."
+msgstr ""
+"A anotação <literal>@Entity</literal> de padrão EJB3 indica que a classe do "
+"<literal>User</literal> é uma entidade bean."
+
+#. Tag: para
+#: Tutorial.xml:143
+#, no-c-format
+msgid ""
+"A Seam component needs a <emphasis>component name</emphasis> specified by "
+"the <link linkend=\"name-annotation\"><literal>@Name</literal></link> "
+"annotation. This name must be unique within the Seam application. When JSF "
+"asks Seam to resolve a context variable with a name that is the same as a "
+"Seam component name, and the context variable is currently undefined (null), "
+"Seam will instantiate that component, and bind the new instance to the "
+"context variable. In this case, Seam will instantiate a <literal>User</"
+"literal> the first time JSF encounters a variable named <literal>user</"
+"literal>."
+msgstr ""
+"O componente Seam precisa de um <emphasis>nome de componente</emphasis> "
+"especificado pela anotação <link linkend=\"name-annotation\"><literal>@Name</"
+"literal></link>. Este nome deve ser exclusivo como no Aplicativo Seam. "
+"Quando o JSF pedir ao Seam para resolver uma variável de contexto com o "
+"mesmo nome ao do componente Seam, e a variável de contexto estiver "
+"indefinida (nula), o Seam irá instanciar o componente e vincular uma nova "
+"instância à variável de contexto. Neste caso, o Seam irá instanciar um "
+"<literal>User</literal> na primeira vez que o JSF encontrar uma variável "
+"nominada <literal>user</literal>."
+
+#. Tag: para
+#: Tutorial.xml:148
+#, no-c-format
+msgid ""
+"Whenever Seam instantiates a component, it binds the new instance to a "
+"context variable in the component&#39;s <emphasis>default context</"
+"emphasis>. The default context is specified using the <link linkend=\"scope-"
+"annotation\"><literal>@Scope</literal></link> annotation. The <literal>User</"
+"literal> bean is a session scoped component."
+msgstr ""
+"A qualquer instante em que o Seam instanciar um componente, este vinculará "
+"uma nova instância à variável de contexto no <emphasis>contexto padrão</"
+"emphasis> do componente. O contexto padrão é especificado usando a anotação "
+"<link linkend=\"scope-annotation\"><literal>@Scope</literal></link>. O bean "
+"do <literal>Usuário</literal> é um componente de escopo de sessão."
+
+#. Tag: para
+#: Tutorial.xml:153
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Table</literal> annotation indicates that the "
+"<literal>User</literal> class is mapped to the <literal>users</literal> "
+"table."
+msgstr ""
+"A anotação <literal>@Table</literal> de padrão EJB indica que a classe do "
+"<literal>Usuário</literal> é mapeada à tabela dos <literal>usuários</"
+"literal>."
+
+#. Tag: para
+#: Tutorial.xml:158
+#, no-c-format
+msgid ""
+"<literal>name</literal>, <literal>password</literal> and <literal>username</"
+"literal> are the persistent attributes of the entity bean. All of our "
+"persistent attributes define accessor methods. These are needed when this "
+"component is used by JSF in the render response and update model values "
+"phases."
+msgstr ""
+"O <literal>nome</literal>, <literal>senha</literal> e <literal>nome do "
+"usuário</literal> são atributos de persistência de bean de entidade. Todos "
+"os nossos atributos persistentes definem os métodos assessores. Isto é "
+"necessário quando este componente é usado pelo JSF na resposta renderizada e "
+"fases de valores de modelo atualizado."
+
+#. Tag: para
+#: Tutorial.xml:163
+#, no-c-format
+msgid ""
+"An empty constructor is both required by both the EJB specification and by "
+"Seam."
+msgstr "Um construtor vazio é solicitado tanto pela especificação EJB como pelo Seam."
+
+#. Tag: para
+#: Tutorial.xml:168
+#, no-c-format
+msgid ""
+"The <literal>@NotNull</literal> and <literal>@Length</literal> annotations "
+"are part of the Hibernate Validator framework. Seam integrates Hibernate "
+"Validator and lets you use it for data validation (even if you are not using "
+"Hibernate for persistence)."
+msgstr ""
+"As anotações <literal>@NotNull</literal> e <literal>@Length</literal> fazem "
+"parte do framework Validador Hibernate. O Seam integra o Validador Hibernate "
+"e permite você usá-lo para a validação de dados (mesmo que você não esteja "
+"usando validador para persistência)."
+
+#. Tag: para
+#: Tutorial.xml:173
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Id</literal> annotation indicates the primary key "
+"attribute of the entity bean."
+msgstr ""
+"A anotação <literal>@Id</literal> de padrão EJB indica o atributo de chave "
+"primária do bean de entidade."
+
+#. Tag: para
+#: Tutorial.xml:180
+#, no-c-format
+msgid ""
+"The most important things to notice in this example are the <literal>@Name</"
+"literal> and <literal>@Scope</literal> annotations. These annotations "
+"establish that this class is a Seam component."
+msgstr ""
+"Os tópicos mais importantes a serem destacados nesta amostra são as "
+"anotações <literal>@Name</literal> e <literal>@Scope</literal>. Estas "
+"anotações estabelecem que esta classe é um componente Seam."
+
+#. Tag: para
+#: Tutorial.xml:183
+#, no-c-format
+msgid ""
+"We&#39;ll see below that the properties of our <literal>User</literal> class "
+"are bound to directly to JSF components and are populated by JSF during the "
+"update model values phase. We don&#39;t need any tedious glue code to copy "
+"data back and forth between the JSP pages and the entity bean domain model."
+msgstr ""
+"Iremos verificar abaixo que as propriedades de nossa classe do "
+"<literal>Usuário</literal> estão vinculadas diretamente aos componentes e "
+"são popularizadas pelo JSF durante a fase de valores do modelo atualizado. "
+"Nós não precisamos do código colar para copiar os dados para frente e para "
+"trás entre as páginas JSF e modelo domínio de bean de entidade."
+
+#. Tag: para
+#: Tutorial.xml:186
+#, no-c-format
+msgid ""
+"However, entity beans shouldn&#39;t do transaction management or database "
+"access. So we can&#39;t use this component as a JSF action listener. For "
+"that we need a session bean."
+msgstr ""
+"No entanto, os beans de entidade não devem gerenciar a transação ou acessar o "
+"banco de dados. Desta maneira, não podemos usar este componente como um JSF "
+"action listener. Para isto, precisamos de um bean de sessão."
+
+#. Tag: title
+#: Tutorial.xml:193
+#, no-c-format
+msgid "The stateless session bean class: <literal>RegisterAction.java</literal>"
+msgstr "A classe do bean de sessão sem estado: <literal>RegisterAction.java</literal>"
+
+#. Tag: para
+#: Tutorial.xml:194
+#, no-c-format
+msgid ""
+"Most Seam application use session beans as JSF action listeners (you can use "
+"JavaBeans instead if you like)."
+msgstr ""
+"A maioria dos aplicativos Seam usam beans de sessão como JSF action "
+"listeners (você pode substituí-los por JavaBeans caso seja desejado)."
+
+#. Tag: para
+#: Tutorial.xml:197
+#, no-c-format
+msgid ""
+"We have exactly one JSF action in our application, and one session bean "
+"method attached to it. In this case, we&#39;ll use a stateless session bean, "
+"since all the state associated with our action is held by the <literal>User</"
+"literal> bean."
+msgstr ""
+"Possuimos exatamente um JSF action em nosso aplicativo e um método de "
+"bean de sessão anexado a isto. Neste caso, usaremos um bean de sessão sem estado uma "
+"vez que todo o estado associado com nossa action é retido pelo bean do "
+"<literal>User</literal>."
+
+#. Tag: para
+#: Tutorial.xml:200
+#, no-c-format
+msgid "This is the only really interesting code in the example!"
+msgstr "Este é o único código interessante da amostra."
+
+#. Tag: programlisting
+#: Tutorial.xml:215
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"register\")\n"
+"public class RegisterAction implements Register\n"
+"{\n"
+"\n"
+"   @In\n"
+"   private User user;\n"
+"   \n"
+"   @PersistenceContext\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @Logger\n"
+"   private Log log;\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = em.createQuery(\n"
+"         \"select username from User where username=#{user.username}\")\n"
+"         .getResultList();\n"
+"         \n"
+"      if (existing.size()==0)\n"
+"      {\n"
+"         em.persist(user);\n"
+"         log.info(\"Registered new user #{user.username}\");\n"
+"         return \"/registered.jsp\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         FacesMessages.instance().add(\"User #{user.username} already exists"
+"\");\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+"@Stateless\n"
+"@Name(\"register\")\n"
+"public class RegisterAction implements Register\n"
+"{\n"
+"\n"
+"   @In\n"
+"   private User user;\n"
+"   \n"
+"   @PersistenceContext\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @Logger\n"
+"   private Log log;\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = em.createQuery(\n"
+"         \"select username from User where username=#{user.username}\")\n"
+"         .getResultList();\n"
+"         \n"
+"      if (existing.size()==0)\n"
+"      {\n"
+"         em.persist(user);\n"
+"         log.info(\"Registered new user #{user.username}\");\n"
+"         return \"/registered.jsp\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         FacesMessages.instance().add(\"User #{user.username} already exists"
+"\");\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:218
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Stateless</literal> annotation marks this class "
+"as stateless session bean."
+msgstr ""
+"A anotação <literal>@Stateless</literal> de padrão EJB marca esta classe como "
+"um bean de sessão sem estado."
+
+#. Tag: para
+#: Tutorial.xml:223
+#, no-c-format
+msgid ""
+"The <link linkend=\"in-annotation\"><literal>@In</literal></link> annotation "
+"marks an attribute of the bean as injected by Seam. In this case, the "
+"attribute is injected from a context variable named <literal>user</literal> "
+"(the instance variable name)."
+msgstr ""
+"A anotação <link linkend=\"in-annotation\"><literal>@In</literal></link> "
+"marca um atributo do bean como injetado pelo Seam. Neste caso, o atributo é "
+"injetado a partir de uma nomeada variável de contexto do <literal>usuário</"
+"literal> (o nome da variável da instância)."
+
+#. Tag: para
+#: Tutorial.xml:228
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@PersistenceContext</literal> annotation is used "
+"to inject the EJB3 entity manager."
+msgstr ""
+"A anotação <literal>@PersistenceContext</literal> de padrão EJB é usada para "
+"injetar o gerenciador de entidade EJB3."
+
+#. Tag: para
+#: Tutorial.xml:233
+#, no-c-format
+msgid ""
+"The Seam <literal>@Logger</literal> annotation is used to inject the "
+"component&#39;s <literal>Log</literal> instance."
+msgstr ""
+"A anotação <literal>@Logger</literal> Seam é usada para injetar a instância "
+"<literal>Log</literal> do componente."
+
+#. Tag: para
+#: Tutorial.xml:238
+#, no-c-format
+msgid ""
+"The action listener method uses the standard EJB3 <literal>EntityManager</"
+"literal> API to interact with the database, and returns the JSF outcome. "
+"Note that, since this is a sesson bean, a transaction is automatically begun "
+"when the <literal>register()</literal> method is called, and committed when "
+"it completes."
+msgstr ""
+"O método action listener usa o API <literal>EntityManager</literal> de "
+"padrão EJB3 para interagir com o banco de dados e retornar ao resultado JSF. "
+"Perceba que, uma vez que isto é um bean de sessão, a transação é "
+"automaticamente iniciada quando o método <literal>register()</literal> é "
+"chamado e executado uma vez que ela é completada. "
+
+#. Tag: para
+#: Tutorial.xml:243
+#, no-c-format
+msgid ""
+"Notice that Seam lets you use a JSF EL expression inside EJB-QL. Under the "
+"covers, this results in an ordinary JPA <literal>setParameter()</literal> "
+"call on the standard JPA <literal>Query</literal> object. Nice, huh?"
+msgstr ""
+"Note que o Seam permite você usar uma expressão JSF EL dentro do EJB-QL. "
+"Isto resulta numa chamada <literal>setParameter()</literal> normal de JPA no objeto <literal>Query</literal> de padrão JPA. "
+
+#. Tag: para
+#: Tutorial.xml:248
+#, no-c-format
+msgid "The <literal>Log</literal> API lets us easily display templated log messages."
+msgstr ""
+"O API <literal>Log</literal> nos permite exibir facilmente as mensagens de "
+"log modeladas."
+
+#. Tag: para
+#: Tutorial.xml:253
+#, no-c-format
+msgid ""
+"JSF action listener methods return a string-valued outcome that determines "
+"what page will be displayed next. A null outcome (or a void action listener "
+"method) redisplays the previous page. In plain JSF, it is normal to always "
+"use a JSF <emphasis>navigation rule</emphasis> to determine the JSF view id "
+"from the outcome. For complex application this indirection is useful and a "
+"good practice. However, for very simple examples like this one, Seam lets "
+"you use the JSF view id as the outcome, eliminating the requirement for a "
+"navigation rule. <emphasis>Note that when you use a view id as an outcome, "
+"Seam always performs a browser redirect.</emphasis>"
+msgstr ""
+"Os métodos action listener JSF retornam a um resultado de linha valorizada, do qual "
+"determina o que será exibido pela página. Um resultado nulo (ou um método "
+"action listener) re-exibe a página anterior. Num JSF plano, é sempre normal "
+"se utilizar uma <emphasis>regra de navegação</emphasis> para determinar a id "
+"de visualização JSF, a partir do resultado. Para um aplicativo mais complexo "
+"este caminho indireto é útil e uma prática boa. No entanto, para amostras "
+"simples como esta, o Seam permite você usar a id de visualização JSF como "
+"resultado, eliminando a solicitação para uma regra de navegação. "
+"<emphasis>Perceba que quando você usa uma id de visualização como um "
+"resultado, o Seam sempre desempenha o redirecionamento do navegador.</emphasis>"
+
+#. Tag: para
+#: Tutorial.xml:258
+#, no-c-format
+msgid ""
+"Seam provides a number of <emphasis>built-in components</emphasis> to help "
+"solve common problems. The <literal>FacesMessages</literal> component makes "
+"it easy to display templated error or success messages. Built-in Seam "
+"components may be obtained by injection, or by calling an <literal>instance()"
+"</literal> method."
+msgstr ""
+"O Seam fornece um número de <emphasis>componentes internos</emphasis> para "
+"ajudar a resolver problemas comuns. O componente <literal>FacesMessages</"
+"literal> facilita a exibição de erro modelado. Os componentes Seam internos "
+"podem ser obtidos pela injeção ou pela chamada de um método de <literal>instance()</"
+"literal>."
+
+#. Tag: para
+#: Tutorial.xml:265
+#, no-c-format
+msgid ""
+"Note that we did not explicitly specify a <literal>@Scope</literal> this "
+"time. Each Seam component type has a default scope if not explicitly "
+"specified. For stateless session beans, the default scope is the stateless "
+"context. Actually, <emphasis>all</emphasis> stateless session beans belong "
+"in the stateless context."
+msgstr ""
+"Perceba que não explicamos explicitamente o <literal>@Scope</literal> desta "
+"vez. Cada componente Seam possui um escopo padrão, caso isto não seja especificado "
+"explicitamente. No caso dos beans de sessão sem estado, o escopo padrão é um "
+"contexto sem estado. Na realidade, <emphasis>todos</emphasis> os beans de "
+"sessão sem estado pertencem ao contexto sem estado."
+
+#. Tag: para
+#: Tutorial.xml:268
+#, no-c-format
+msgid ""
+"Our session bean action listener performs the business and persistence logic "
+"for our mini-application. In more complex applications, we might need to "
+"layer the code and refactor persistence logic into a dedicated data access "
+"component. That&#39;s perfectly trivial to do. But notice that Seam does not "
+"force you into any particular strategy for application layering."
+msgstr ""
+"Nosso action listener de bean de sessão desempenha a lógica de persistência "
+"e comercial para nosso mini-aplicativo. Em aplicativos mais complexos, nós "
+"talvez precisaremos estender em camadas o código e re-fatorar a lógica de "
+"persistência dentro do componente de acesso de dados dedicados. Isto é "
+"totalmente comum de se fazer. Porém, o Seam não o força em qualquer "
+"estratégica particular para o estendimento em camada do aplicativo. "
+
+#. Tag: para
+#: Tutorial.xml:271
+#, no-c-format
+msgid ""
+"Furthermore, notice that our session bean has simultaneous access to context "
+"associated with the web request (the form values in the <literal>User</"
+"literal> object, for example), and state held in transactional resources "
+"(the <literal>EntityManager</literal> object). This is a break from "
+"traditional J2EE architectures. Again, if you are more comfortable with the "
+"traditional J2EE layering, you can certainly implement that in a Seam "
+"application. But for many applications, it&#39;s simply not very useful."
+msgstr ""
+"Além disso, note que nosso bean de sessão possui acessos simultâneos ao "
+"contexto associado com a solicitação da web (os valores de formulário no "
+"objeto do <literal>Usuário</literal>, por exemplo), e estado retido nos "
+"recursos transacionais (o objeto <literal>EntityManager</literal>). Esta é "
+"uma folga das arquiteturas J2EE tradicionais. Caso você se sinta "
+"mais seguro com a extensão de camadas J2EE tradicionais, você certamente "
+"poderá implementá-la no aplicativo Seam. No entanto, isto não é muito útil para "
+"muitos dos aplicativos."
+
+#. Tag: title
+#: Tutorial.xml:278
+#, no-c-format
+msgid "The session bean local interface: <literal>Register.java</literal>"
+msgstr "O bean de sessão de interface local: <literal>Register.java</literal>"
+
+#. Tag: para
+#: Tutorial.xml:279
+#, no-c-format
+msgid "Naturally, our session bean needs a local interface."
+msgstr "Naturalmente, nosso bean de sessão precisa de uma interface local."
+
+#. Tag: programlisting
+#: Tutorial.xml:282
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface Register\n"
+"{\n"
+"   public String register();\n"
+"}"
+msgstr ""
+"@Local\n"
+"public interface Register\n"
+"{\n"
+"   public String register();\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:283
+#, no-c-format
+msgid "That&#39;s the end of the Java code. Now onto the deployment descriptors."
+msgstr "Chegamos ao fim do código Java. A seguir, veremos os descritores implementados."
+
+#. Tag: title
+#: Tutorial.xml:289
+#, no-c-format
+msgid "The Seam component deployment descriptor: <literal>components.xml</literal>"
+msgstr ""
+"O componente Seam de descritor implementado: <literal>components.xml</"
+"literal> "
+
+#. Tag: para
+#: Tutorial.xml:290
+#, no-c-format
+msgid ""
+"If you&#39;ve used many Java frameworks before, you&#39;ll be used to having "
+"to declare all your component classes in some kind of XML file that "
+"gradually grows more and more unmanageable as your project matures. You&#39;"
+"ll be relieved to know that Seam does not require that application "
+"components be accompanied by XML. Most Seam applications require a very "
+"small amount of XML that does not grow very much as the project gets bigger."
+msgstr ""
+"Caso você já tenha usado muitos dos frameworks Java anteriormente, você deve estar acostumado a declarar todas as classes de componentes em algum tipo de "
+"arquivo XML. Este cresce gradativamente e incontrolavelmente como "
+"seus projetos maduros. Você se sentirá aliviado em saber que o Seam não "
+"solicita que os componentes do aplicativo sejam acompanhados pelo XML. A "
+"maioria dos aplicativos Seam solicitam um número bem pequeno de XML, do qual "
+"não cresce na mesma proporção que o projeto."
+
+#. Tag: para
+#: Tutorial.xml:293
+#, no-c-format
+msgid ""
+"Nevertheless, it is often useful to be able to provide for <emphasis>some</"
+"emphasis> external configuration of <emphasis>some</emphasis> components "
+"(particularly the components built in to Seam). You have a couple of options "
+"here, but the most flexible option is to provide this configuration in a "
+"file called <literal>components.xml</literal>, located in the <literal>WEB-"
+"INF</literal> directory. We&#39;ll use the <literal>components.xml</literal> "
+"file to tell Seam how to find our EJB components in JNDI:"
+msgstr ""
+"Apesar disso, é bastante útil estar apto a fornecer <emphasis>alguma</emphasis> "
+"configuração externa de <emphasis>alguns</emphasis> componentes "
+"(especialmente os componentes internos do Seam). Você possui duas opções, no "
+"entanto a opção mais flexível é fornecer esta configuração a um arquivo "
+"chamado <literal>components.xml</literal>, localizado no diretório "
+"<literal>WEB-INF</literal>. Usaremos o arquivo <literal>components.xml</"
+"literal> para informar ao Seam como encontrar nossos componentes EJB em JNDI:"
+
+#. Tag: programlisting
+#: Tutorial.xml:296
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"&gt;\n"
+"     &lt;core:init jndi-pattern=\"@jndiPattern@\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"&gt;\n"
+"     &lt;core:init jndi-pattern=\"@jndiPattern@\"/&gt;\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Tutorial.xml:297
+#, no-c-format
+msgid ""
+"This code configures a property named <literal>jndiPattern</literal> of a "
+"built-in Seam component named <literal>org.jboss.seam.core.init</literal>."
+msgstr ""
+"Este código configura a propriedade nomeada <literal>jndiPattern</literal> "
+"de um nomeado componente Seam interno <literal>org.jboss.seam.core.init</"
+"literal>."
+
+#. Tag: title
+#: Tutorial.xml:303
+#, no-c-format
+msgid "The web deployment description: <literal>web.xml</literal>"
+msgstr "A descrição de implementação da web: <literal>web.xml</literal>"
+
+#. Tag: para
+#: Tutorial.xml:304
+#, no-c-format
+msgid ""
+"The presentation layer for our mini-application will be deployed in a WAR. "
+"So we&#39;ll need a web deployment descriptor."
+msgstr ""
+"A camada de apresentação para nosso mini-aplicativo será implementado num "
+"WAR. Desta forma, precisaremos do descritor de implementação da web."
+
+#. Tag: programlisting
+#: Tutorial.xml:307
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;web-app version=\"2.5\"\n"
+"    xmlns=\"http://java.sun.com/xml/ns/javaee\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n"
+"        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\"&gt;\n"
+"\n"
+"    &lt;!- - Seam - -&gt;\n"
+"\n"
+"    &lt;listener&gt;\n"
+"        &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/"
+"listener-class&gt;\n"
+"    &lt;/listener&gt;\n"
+"    \n"
+"     &lt;listener&gt;\n"
+"         &lt;listener-class&gt;com.sun.faces.config.ConfigureListener&lt;/"
+"listener-class&gt;\n"
+"    &lt;/listener&gt;\n"
+"\n"
+"    &lt;context-param&gt;\n"
+"        &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-"
+"name&gt;\n"
+"        &lt;param-value&gt;client&lt;/param-value&gt;\n"
+"    &lt;/context-param&gt;\n"
+"\n"
+"    &lt;context-param&gt;\n"
+"        &lt;param-name&gt;javax.faces.DEFAULT_SUFFIX&lt;/param-name&gt;\n"
+"        &lt;param-value&gt;.jspx&lt;/param-value&gt;\n"
+"    &lt;/context-param&gt;\n"
+"\n"
+"        &lt;servlet&gt;\n"
+"                &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;\n"
+"                &lt;servlet-class&gt;javax.faces.webapp.FacesServlet&lt;/"
+"servlet-class&gt;\n"
+"                &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;\n"
+"        &lt;/servlet&gt;\n"
+"\n"
+"        <!-- Faces Servlet Mapping -->\n"
+"        &lt;servlet-mapping&gt;\n"
+"                &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;\n"
+"                &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;\n"
+"        &lt;/servlet-mapping&gt;\n"
+"\n"
+"&lt;/web-app&gt;"
+msgstr ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;web-app version=\"2.5\"\n"
+"    xmlns=\"http://java.sun.com/xml/ns/javaee\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n"
+"        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\"&gt;\n"
+"\n"
+"    &lt;!- - Seam - -&gt;\n"
+"\n"
+"    &lt;listener&gt;\n"
+"        &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/"
+"listener-class&gt;\n"
+"    &lt;/listener&gt;\n"
+"    \n"
+"     &lt;listener&gt;\n"
+"         &lt;listener-class&gt;com.sun.faces.config.ConfigureListener&lt;/"
+"listener-class&gt;\n"
+"    &lt;/listener&gt;\n"
+"\n"
+"    &lt;context-param&gt;\n"
+"        &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-"
+"name&gt;\n"
+"        &lt;param-value&gt;client&lt;/param-value&gt;\n"
+"    &lt;/context-param&gt;\n"
+"\n"
+"    &lt;context-param&gt;\n"
+"        &lt;param-name&gt;javax.faces.DEFAULT_SUFFIX&lt;/param-name&gt;\n"
+"        &lt;param-value&gt;.jspx&lt;/param-value&gt;\n"
+"    &lt;/context-param&gt;\n"
+"\n"
+"        &lt;servlet&gt;\n"
+"                &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;\n"
+"                &lt;servlet-class&gt;javax.faces.webapp.FacesServlet&lt;/"
+"servlet-class&gt;\n"
+"                &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;\n"
+"        &lt;/servlet&gt;\n"
+"\n"
+"        <!-- Faces Servlet Mapping -->\n"
+"        &lt;servlet-mapping&gt;\n"
+"                &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;\n"
+"                &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;\n"
+"        &lt;/servlet-mapping&gt;\n"
+"\n"
+"&lt;/web-app&gt;"
+
+#. Tag: para
+#: Tutorial.xml:308
+#, no-c-format
+msgid ""
+"This <literal>web.xml</literal> file configures Seam and Glassfish. The "
+"configuration you see here is pretty much identical in all Seam applications."
+msgstr ""
+"Este arquivo <literal>web.xml</literal> configura o Seam e Glassfish. A "
+"configuração vista aqui é praticamente idêntica em todos os "
+"aplicativos Seam."
+
+#. Tag: title
+#: Tutorial.xml:314
+#, no-c-format
+msgid "The JSF configration: <literal>faces-config.xml</literal>"
+msgstr "A configuração JSF: <literal>faces-config.xml</literal>"
+
+#. Tag: para
+#: Tutorial.xml:315
+#, no-c-format
+msgid ""
+"All Seam applications use JSF views as the presentation layer. So we&#39;ll "
+"need <literal>faces-config.xml</literal>."
+msgstr ""
+"Todos os aplicativos Seam usam as visualizações como a camada de "
+"apresentação. Desta maneira, precisaremos das <literal>faces-config.xml</"
+"literal>."
+
+#. Tag: programlisting
+#: Tutorial.xml:318
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;!DOCTYPE faces-config \n"
+"PUBLIC \"-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN\"\n"
+"                            \"http://java.sun.com/dtd/web-facesconfig_1_0.dtd"
+"\"&gt;\n"
+"&lt;faces-config&gt;\n"
+"\n"
+"    &lt;!- - A phase listener is needed by all Seam applications - -&gt;\n"
+"    \n"
+"    &lt;lifecycle&gt;\n"
+"        &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-"
+"listener&gt;\n"
+"    &lt;/lifecycle&gt;\n"
+"\n"
+"&lt;/faces-config&gt;"
+msgstr ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;!DOCTYPE faces-config \n"
+"PUBLIC \"-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN\"\n"
+"                            \"http://java.sun.com/dtd/web-facesconfig_1_0.dtd"
+"\"&gt;\n"
+"&lt;faces-config&gt;\n"
+"\n"
+"    &lt;!- - A phase listener is needed by all Seam applications - -&gt;\n"
+"    \n"
+"    &lt;lifecycle&gt;\n"
+"        &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-"
+"listener&gt;\n"
+"    &lt;/lifecycle&gt;\n"
+"\n"
+"&lt;/faces-config&gt;"
+
+#. Tag: para
+#: Tutorial.xml:319
+#, no-c-format
+msgid ""
+"The <literal>faces-config.xml</literal> file integrates Seam into JSF. Note "
+"that we don&#39;t need any JSF managed bean declarations! The managed beans "
+"are the Seam components. In Seam applications, the <literal>faces-config."
+"xml</literal> is used much less often than in plain JSF."
+msgstr ""
+"O arquivo <literal>faces-config.xml</literal> integra o Seam ao JSF. Perceba "
+"que não precisamos de qualquer declaração de beans gerenciados JSF. Os "
+"beans gerenciados são componentes Seam. Nos aplicativos Seam, a "
+"<literal>faces-config.xml</literal> é usada em menor freqüência do que o JSF "
+"plano."
+
+#. Tag: para
+#: Tutorial.xml:322
+#, no-c-format
+msgid ""
+"In fact, once you have all the basic descriptors set up, the <emphasis>only</"
+"emphasis> XML you need to write as you add new functionality to a Seam "
+"application is the navigation rules, and possibly jBPM process definitions. "
+"Seam takes the view that <emphasis>process flow</emphasis> and "
+"<emphasis>configuration data</emphasis> are the only things that truly "
+"belong in XML."
+msgstr ""
+"Na realidade, uma vez que você tenha todos os descritores básicos montados, "
+"os <emphasis>únicos</emphasis> XML que você precisa gravar (contando que você tenha"
+"adicionado uma nova funcionalidade ao aplicativo Seam) são as regras de "
+"navegação e possivelmente as definições de processo JBPM. O Seam visualiza "
+"aquele <emphasis>fluxo de processo</emphasis>, e os <emphasis>dados de "
+"configuração</emphasis> são unicamente o que pertence verdadeiramente ao "
+"XML."
+
+#. Tag: para
+#: Tutorial.xml:325
+#, no-c-format
+msgid ""
+"In this simple example, we don&#39;t even need a navigation rule, since we "
+"decided to embed the view id in our action code."
+msgstr ""
+"Neste exemplo, não precisamos de uma regra de navegação uma vez que "
+"decidimos incorporar a visualização id em nosso código action."
+
+#. Tag: title
+#: Tutorial.xml:330
+#, no-c-format
+msgid "The EJB deployment descriptor: <literal>ejb-jar.xml</literal>"
+msgstr "O descritor de implementação EJB: <literal>ejb-jar.xml</literal>"
+
+#. Tag: para
+#: Tutorial.xml:331
+#, no-c-format
+msgid ""
+"The <literal>ejb-jar.xml</literal> file integrates Seam with EJB3, by "
+"attaching the <literal>SeamInterceptor</literal> to all session beans in the "
+"archive."
+msgstr ""
+"O arquivo <literal>ejb-jar.xml</literal> integra o Seam com o EJB3, anexando "
+"o <literal>SeamInterceptor</literal> para todos os beans de sessão do "
+"arquivo."
+
+#. Tag: programlisting
+#: Tutorial.xml:334
+#, no-c-format
+msgid ""
+"&lt;ejb-jar xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \n"
+"         xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee \n"
+"                           http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"
+"\"\n"
+"         version=\"3.0\"&gt;\n"
+"         \n"
+"   &lt;interceptors&gt;\n"
+"     &lt;interceptor&gt;\n"
+"       &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"     &lt;/interceptor&gt;\n"
+"   &lt;/interceptors&gt;\n"
+"   \n"
+"   &lt;assembly-descriptor&gt;\n"
+"      &lt;interceptor-binding&gt;\n"
+"         &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"         &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"      &lt;/interceptor-binding&gt;\n"
+"   &lt;/assembly-descriptor&gt;\n"
+"   \n"
+"&lt;/ejb-jar&gt;"
+msgstr ""
+"&lt;ejb-jar xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \n"
+"         xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee \n"
+"                           http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"
+"\"\n"
+"         version=\"3.0\"&gt;\n"
+"         \n"
+"   &lt;interceptors&gt;\n"
+"     &lt;interceptor&gt;\n"
+"       &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"     &lt;/interceptor&gt;\n"
+"   &lt;/interceptors&gt;\n"
+"   \n"
+"   &lt;assembly-descriptor&gt;\n"
+"      &lt;interceptor-binding&gt;\n"
+"         &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"         &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"      &lt;/interceptor-binding&gt;\n"
+"   &lt;/assembly-descriptor&gt;\n"
+"   \n"
+"&lt;/ejb-jar&gt;"
+
+#. Tag: title
+#: Tutorial.xml:338
+#, no-c-format
+msgid "The EJB persistence deployment descriptor: <literal>persistence.xml</literal>"
+msgstr ""
+"O descritor de implementação de persistência EJB: <literal>persistence.xml</"
+"literal>"
+
+#. Tag: para
+#: Tutorial.xml:339
+#, no-c-format
+msgid ""
+"The <literal>persistence.xml</literal> file tells the EJB persistence "
+"provider where to find the datasource, and contains some vendor-specific "
+"settings. In this case, enables automatic schema export at startup time."
+msgstr ""
+"O arquivo <literal>persistence.xml</literal> informa ao provedor de persistência "
+"EJB onde encontrar a fonte de dados, além de conter algumas configurações vendor-"
+"specific. Neste caso, ele ativa a exportação do esquema automático no "
+"período de inicialização."
+
+#. Tag: programlisting
+#: Tutorial.xml:342
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;persistence xmlns=\"http://java.sun.com/xml/ns/persistence\" \n"
+"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence \n"
+"                           http://java.sun.com/xml/ns/persistence/"
+"persistence_1_0.xsd\" \n"
+"             version=\"1.0\"&gt;\n"
+"    &lt;persistence-unit name=\"userDatabase\"&gt;\n"
+"      &lt;provider&gt;org.hibernate.ejb.HibernatePersistence&lt;/"
+"provider&gt;\n"
+"      &lt;jta-data-source&gt;java:/DefaultDS&lt;/jta-data-source&gt;\n"
+"      &lt;properties&gt;\n"
+"         &lt;property name=\"hibernate.hbm2ddl.auto\" value=\"create-drop\"/"
+"&gt;\n"
+"      &lt;/properties&gt;\n"
+"    &lt;/persistence-unit&gt;\n"
+"&lt;/persistence&gt;"
+msgstr ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;persistence xmlns=\"http://java.sun.com/xml/ns/persistence\" \n"
+"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence \n"
+"                           http://java.sun.com/xml/ns/persistence/"
+"persistence_1_0.xsd\" \n"
+"             version=\"1.0\"&gt;\n"
+"    &lt;persistence-unit name=\"userDatabase\"&gt;\n"
+"      &lt;provider&gt;org.hibernate.ejb.HibernatePersistence&lt;/"
+"provider&gt;\n"
+"      &lt;jta-data-source&gt;java:/DefaultDS&lt;/jta-data-source&gt;\n"
+"      &lt;properties&gt;\n"
+"         &lt;property name=\"hibernate.hbm2ddl.auto\" value=\"create-drop\"/"
+"&gt;\n"
+"      &lt;/properties&gt;\n"
+"    &lt;/persistence-unit&gt;\n"
+"&lt;/persistence&gt;"
+
+#. Tag: title
+#: Tutorial.xml:346
+#, no-c-format
+msgid ""
+"The view: <literal>register.jsp</literal> and <literal>registered.jsp</"
+"literal>"
+msgstr ""
+"A visualização: <literal>register.jsp</literal> e <literal>registered.jsp</"
+"literal>"
+
+#. Tag: para
+#: Tutorial.xml:347
+#, no-c-format
+msgid ""
+"The view pages for a Seam application could be implemented using any "
+"technology that supports JSF. In this example we use JSP, since it is "
+"familiar to most developers and since we have minimal requirements here "
+"anyway. (But if you take our advice, you&#39;ll use Facelets for your own "
+"applications.)"
+msgstr ""
+"As páginas de visualização para o aplicativo Seam podem ser implementadas "
+"usando qualquer tecnologia que suporta o JSF. Neste exemplo, usamos o JSP "
+"uma vez que ele é conhecido pela a maioria dos desenvolvedores e também por "
+"possuirmos solicitações mínimas. (No entanto, se você optar por nosso "
+"conselho, você usará Facelets nos seus próprios aplicativos.)"
+
+#. Tag: programlisting
+#: Tutorial.xml:350
+#, no-c-format
+msgid ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://jboss.com/products/seam/taglib\" prefix=\"s\" %"
+"&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Register New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;table border=\"0\"&gt;\n"
+"       &lt;s:validateAll&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Username&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputText value=\"#{user.username}\"/&gt;&lt;/"
+"td&gt;\n"
+"         &lt;/tr&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Real Name&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputText value=\"#{user.name}\"/&gt;&lt;/td&gt;\n"
+"         &lt;/tr&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Password&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputSecret value=\"#{user.password}\"/&gt;&lt;/"
+"td&gt;\n"
+"         &lt;/tr&gt;\n"
+"       &lt;/s:validateAll&gt;\n"
+"     &lt;/table&gt;\n"
+"     &lt;h:messages/&gt;\n"
+"     &lt;h:commandButton type=\"submit\" value=\"Register\" action=\"#"
+"{register.register}\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://jboss.com/products/seam/taglib\" prefix=\"s\" %"
+"&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Register New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;table border=\"0\"&gt;\n"
+"       &lt;s:validateAll&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Username&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputText value=\"#{user.username}\"/&gt;&lt;/"
+"td&gt;\n"
+"         &lt;/tr&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Real Name&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputText value=\"#{user.name}\"/&gt;&lt;/td&gt;\n"
+"         &lt;/tr&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Password&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputSecret value=\"#{user.password}\"/&gt;&lt;/"
+"td&gt;\n"
+"         &lt;/tr&gt;\n"
+"       &lt;/s:validateAll&gt;\n"
+"     &lt;/table&gt;\n"
+"     &lt;h:messages/&gt;\n"
+"     &lt;h:commandButton type=\"submit\" value=\"Register\" action=\"#"
+"{register.register}\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+
+#. Tag: para
+#: Tutorial.xml:351
+#, no-c-format
+msgid ""
+"The only thing here that is specific to Seam is the <literal>&lt;s:"
+"validateAll&gt;</literal> tag. This JSF component tells JSF to validate all "
+"the contained input fields against the Hibernate Validator annotations "
+"specified on the entity bean."
+msgstr ""
+"A única coisa específica ao Seam é o caracter <literal>&lt;s:"
+"validateAll&gt;</literal>. Este componente JSF informa ao JSF para validar todos "
+"os campos de entrada, em referência às anotações Validador "
+"Hibernate especificadas no bean de entidade."
+
+#. Tag: programlisting
+#: Tutorial.xml:354
+#, no-c-format
+msgid ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" %&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Successfully Registered New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"    Welcome, &lt;h:outputText value=\"#{user.name}\"/&gt;, \n"
+"    you are successfully registered as &lt;h:outputText value=\"#{user."
+"username}\"/&gt;.\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" %&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Successfully Registered New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"    Welcome, &lt;h:outputText value=\"#{user.name}\"/&gt;, \n"
+"    you are successfully registered as &lt;h:outputText value=\"#{user."
+"username}\"/&gt;.\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+
+#. Tag: para
+#: Tutorial.xml:355
+#, no-c-format
+msgid ""
+"This is a boring old JSP pages using standard JSF components. There is "
+"nothing specific to Seam here."
+msgstr ""
+"Estas são páginas JSF antigas usando os componentes JSF padrão. Não há nada "
+"específico ao Seam aqui."
+
+#. Tag: title
+#: Tutorial.xml:361
+#, no-c-format
+msgid "The EAR deployment descriptor: <literal>application.xml</literal>"
+msgstr "O descritor de implementação EAR: <literal>application.xml</literal>"
+
+#. Tag: para
+#: Tutorial.xml:362
+#, no-c-format
+msgid ""
+"Finally, since our application is deployed as an EAR, we need a deployment "
+"descriptor there, too."
+msgstr "Finalmente, precisamos de um descritor de implementação, desde que nosso aplicativo seja implementado como um EAR. "
+
+#. Tag: programlisting
+#: Tutorial.xml:365
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;application xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee \n"
+"                                   http://java.sun.com/xml/ns/javaee/"
+"application_5.xsd\"\n"
+"             version=\"5\"&gt;\n"
+"             \n"
+"    &lt;display-name&gt;Seam Registration&lt;/display-name&gt;\n"
+"\n"
+"    &lt;module&gt;\n"
+"        &lt;web&gt;\n"
+"            &lt;web-uri&gt;jboss-seam-registration.war&lt;/web-uri&gt;\n"
+"            &lt;context-root&gt;/seam-registration&lt;/context-root&gt;\n"
+"        &lt;/web&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;ejb&gt;jboss-seam-registration.jar&lt;/ejb&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;jboss-seam.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;el-ri.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    \n"
+"&lt;/application&gt;"
+msgstr ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;application xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee \n"
+"                                   http://java.sun.com/xml/ns/javaee/"
+"application_5.xsd\"\n"
+"             version=\"5\"&gt;\n"
+"             \n"
+"    &lt;display-name&gt;Seam Registration&lt;/display-name&gt;\n"
+"\n"
+"    &lt;module&gt;\n"
+"        &lt;web&gt;\n"
+"            &lt;web-uri&gt;jboss-seam-registration.war&lt;/web-uri&gt;\n"
+"            &lt;context-root&gt;/seam-registration&lt;/context-root&gt;\n"
+"        &lt;/web&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;ejb&gt;jboss-seam-registration.jar&lt;/ejb&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;jboss-seam.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;el-ri.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    \n"
+"&lt;/application&gt;"
+
+#. Tag: para
+#: Tutorial.xml:366
+#, no-c-format
+msgid ""
+"This deployment descriptor links modules in the enterprise archive and binds "
+"the web application to the context root <literal>/seam-registration</"
+"literal>."
+msgstr ""
+"O descritor de implementação liga os módulos no arquivo enterprise e vincula "
+"o aplicativo da web à raiz do contexto <literal>/seam-registration</literal>."
+
+#. Tag: title
+#: Tutorial.xml:378 Tutorial.xml:526 Tutorial.xml:689 Tutorial.xml:804
+#, no-c-format
+msgid "How it works"
+msgstr "Como isto funciona"
+
+#. Tag: para
+#: Tutorial.xml:379
+#, no-c-format
+msgid ""
+"When the form is submitted, JSF asks Seam to resolve the variable named "
+"<literal>user</literal>. Since there is no value already bound to that name "
+"(in any Seam context), Seam instantiates the <literal>user</literal> "
+"component, and returns the resulting <literal>User</literal> entity bean "
+"instance to JSF after storing it in the Seam session context."
+msgstr ""
+"Quando o formulário for submetido, o JSF pede ao Seam para resolver o "
+"<literal>usuário</literal> de variável nomeada. Uma vez que não haja valor "
+"já vinculado ao nome (em qualquer contexto Seam), o Seam instância o "
+"componente do <literal>usuário</literal> e retorna a instância de bean de "
+"entidade do <literal>Usuário</literal> resultante, após armazená-lo no "
+"contexto da sessão Seam."
+
+#. Tag: para
+#: Tutorial.xml:382
+#, no-c-format
+msgid ""
+"The form input values are now validated against the Hibernate Validator "
+"constraints specified on the <literal>User</literal> entity. If the "
+"constraints are violated, JSF redisplays the page. Otherwise, JSF binds the "
+"form input values to properties of the <literal>User</literal> entity bean."
+msgstr ""
+"Os valores de entrada de formulário são agora validados em referência às "
+"restrições especificadas na entidade do <literal>User</literal>. Caso as "
+"restrições sejam violadas, o JSF re-exibirá a página. Do contrário, o JSF "
+"vincula os valores de entrada de formulário para as propriedades do bean de "
+"entidade do <literal>User</literal>."
+
+#. Tag: para
+#: Tutorial.xml:385
+#, no-c-format
+msgid ""
+"Next, JSF asks Seam to resolve the variable named <literal>register</"
+"literal>. Seam finds the <literal>RegisterAction</literal> stateless session "
+"bean in the stateless context and returns it. JSF invokes the "
+"<literal>register()</literal> action listener method."
+msgstr ""
+"Em seguida, o JSF pede ao Seam para resolver o <literal>registro</literal> "
+"de variável nomeada. O Seam encontra o bean de sessão sem estado "
+"<literal>RegisterAction</literal> no contexto sem estado e o retorna. O JSF "
+"invoca o método action listener <literal>register()</literal>. "
+
+#. Tag: para
+#: Tutorial.xml:388
+#, no-c-format
+msgid ""
+"Seam intercepts the method call and injects the <literal>User</literal> "
+"entity from the Seam session context, before continuing the invocation."
+msgstr ""
+"O Seam intercepta a chamada do método e injeta a entidade do "
+"<literal>User</literal> a partir do contexto de sessão Seam, antes de dar "
+"continuidade à invocação."
+
+#. Tag: para
+#: Tutorial.xml:391
+#, no-c-format
+msgid ""
+"The <literal>register()</literal> method checks if a user with the entered "
+"username already exists. If so, an error message is queued with the "
+"<literal>FacesMessages</literal> component, and a null outcome is returned, "
+"causing a page redisplay. The <literal>FacesMessages</literal> component "
+"interpolates the JSF expression embedded in the message string and adds a "
+"JSF <literal>FacesMessage</literal> to the view."
+msgstr ""
+"O método <literal>register()</literal> checa se um usuário com o nome do "
+"usuário inserido, já é existente. Caso seja, uma mensagem de erro é "
+"enfileirada com o componente <literal>FacesMessages</literal>, e um "
+"resultado nulo é retornado causando a re-exibição da página. O componente "
+"<literal>FacesMessages</literal> interpola a incorporada expressão JSF na "
+"linha da mensagem e adiciona um JSF <literal>FacesMessage</literal> à "
+"visualização."
+
+#. Tag: para
+#: Tutorial.xml:394
+#, no-c-format
+msgid ""
+"If no user with that username exists, the <literal>\"/registered.jsp\"</"
+"literal> outcome triggers a browser redirect to the <literal>registered.jsp</"
+"literal> page. When JSF comes to render the page, it asks Seam to resolve "
+"the variable named <literal>user</literal> and uses property values of the "
+"returned <literal>User</literal> entity from Seam&#39;s session scope."
+msgstr ""
+"Caso não haja usuário com um nome de usuário já existente, o resultado "
+"<literal>\"/registered.jsp\"</literal> aciona a redireção do navegador à "
+"página <literal>registered.jsp</literal>. Quando o JSF inicia a renderização "
+"da página, ele pede ao Seam para resolver o <literal>user</literal> de variável nomeada e usa valores apropriados da entidade do <literal>user</"
+"literal> a partir do escopo de sessão do Seam."
+
+#. Tag: title
+#: Tutorial.xml:402
+#, no-c-format
+msgid "Clickable lists in Seam: the messages example"
+msgstr "Listas clicáveis em Seam: a amostra de mensagem"
+
+#. Tag: para
+#: Tutorial.xml:403
+#, no-c-format
+msgid ""
+"Clickable lists of database search results are such an important part of any "
+"online application that Seam provides special functionality on top of JSF to "
+"make it easier to query data using EJB-QL or HQL and display it as a "
+"clickable list using a JSF <literal>&lt;h:dataTable&gt;</literal>. The "
+"messages example demonstrates this functionality."
+msgstr ""
+"As listas clicáveis dos resultados de busca de banco de dados são uma parte "
+"importante de qualquer aplicativo on-line.O Seam fornece "
+"funcionalidade especial juntamente com o JSF para facilitar os dados em questão "
+"usando EJB-WL ou HQL, além de exibí-los como uma lista clicável usando um "
+"<literal>&lt;h:dataTable&gt;</literal> JSF. As amostras de mensagens "
+"demonstram esta funcionalidade."
+
+#. Tag: para
+#: Tutorial.xml:416
+#, no-c-format
+msgid ""
+"The message list example has one entity bean, <literal>Message</literal>, "
+"one session bean, <literal>MessageListBean</literal> and one JSP."
+msgstr ""
+"A amostra da lista de mensagem possui um bean de entidade, <literal>Message</"
+"literal>, um bean de sessão, <literal>MessageListBean</literal> e um JSP."
+
+#. Tag: title
+#: Tutorial.xml:420
+#, no-c-format
+msgid "The entity bean: <literal>Message.java</literal>"
+msgstr "O bean de entidade: <literal>Message.java</literal>"
+
+#. Tag: para
+#: Tutorial.xml:421
+#, no-c-format
+msgid ""
+"The <literal>Message</literal> entity defines the title, text, date and time "
+"of a message, and a flag indicating whether the message has been read:"
+msgstr ""
+"A entidade <literal>Message</literal> define o título, o texto, a data e o horário "
+"de uma mensagem, além de um aviso indicando se é que a mensagem foi lida:"
+
+#. Tag: programlisting
+#: Tutorial.xml:424
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"message\")\n"
+"@Scope(EVENT)\n"
+"public class Message implements Serializable\n"
+"{\n"
+"   private Long id;\n"
+"   private String title;\n"
+"   private String text;\n"
+"   private boolean read;\n"
+"   private Date datetime;\n"
+"   \n"
+"   @Id @GeneratedValue\n"
+"   public Long getId() {\n"
+"      return id;\n"
+"   }\n"
+"   public void setId(Long id) {\n"
+"      this.id = id;\n"
+"   }\n"
+"   \n"
+"   @NotNull @Length(max=100)\n"
+"   public String getTitle() {\n"
+"      return title;\n"
+"   }\n"
+"   public void setTitle(String title) {\n"
+"      this.title = title;\n"
+"   }\n"
+"   \n"
+"   @NotNull @Lob\n"
+"   public String getText() {\n"
+"      return text;\n"
+"   }\n"
+"   public void setText(String text) {\n"
+"      this.text = text;\n"
+"   }\n"
+"   \n"
+"   @NotNull\n"
+"   public boolean isRead() {\n"
+"      return read;\n"
+"   }\n"
+"   public void setRead(boolean read) {\n"
+"      this.read = read;\n"
+"   }\n"
+"   \n"
+"   @NotNull \n"
+"   @Basic @Temporal(TemporalType.TIMESTAMP)\n"
+"   public Date getDatetime() {\n"
+"      return datetime;\n"
+"   }\n"
+"   public void setDatetime(Date datetime) {\n"
+"      this.datetime = datetime;\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+"@Entity\n"
+"@Name(\"message\")\n"
+"@Scope(EVENT)\n"
+"public class Message implements Serializable\n"
+"{\n"
+"   private Long id;\n"
+"   private String title;\n"
+"   private String text;\n"
+"   private boolean read;\n"
+"   private Date datetime;\n"
+"   \n"
+"   @Id @GeneratedValue\n"
+"   public Long getId() {\n"
+"      return id;\n"
+"   }\n"
+"   public void setId(Long id) {\n"
+"      this.id = id;\n"
+"   }\n"
+"   \n"
+"   @NotNull @Length(max=100)\n"
+"   public String getTitle() {\n"
+"      return title;\n"
+"   }\n"
+"   public void setTitle(String title) {\n"
+"      this.title = title;\n"
+"   }\n"
+"   \n"
+"   @NotNull @Lob\n"
+"   public String getText() {\n"
+"      return text;\n"
+"   }\n"
+"   public void setText(String text) {\n"
+"      this.text = text;\n"
+"   }\n"
+"   \n"
+"   @NotNull\n"
+"   public boolean isRead() {\n"
+"      return read;\n"
+"   }\n"
+"   public void setRead(boolean read) {\n"
+"      this.read = read;\n"
+"   }\n"
+"   \n"
+"   @NotNull \n"
+"   @Basic @Temporal(TemporalType.TIMESTAMP)\n"
+"   public Date getDatetime() {\n"
+"      return datetime;\n"
+"   }\n"
+"   public void setDatetime(Date datetime) {\n"
+"      this.datetime = datetime;\n"
+"   }\n"
+"   \n"
+"}"
+
+#. Tag: title
+#: Tutorial.xml:429
+#, no-c-format
+msgid "The stateful session bean: <literal>MessageManagerBean.java</literal>"
+msgstr "O bean de sessão com estado: <literal>MessageManagerBean.java</literal>"
+
+#. Tag: para
+#: Tutorial.xml:430
+#, no-c-format
+msgid ""
+"Just like in the previous example, we have a session bean, "
+"<literal>MessageManagerBean</literal>, which defines the action listener "
+"methods for the two buttons on our form. One of the buttons selects a "
+"message from the list, and displays that message. The other button deletes a "
+"message. So far, this is not so different to the previous example."
+msgstr ""
+"Assim como na nossa amostra anterior, temos um bean de sessão, "
+"<literal>MessageManagerBean</literal>, do qual define os métodos action "
+"listener para dois botões em nosso formulário. Um dos botões seleciona uma "
+"mensagem a partir da lista e a exibe. O outro botão deleta a mensagem. Até "
+"então, isto não se diferencia tanto da amostra anterior."
+
+#. Tag: para
+#: Tutorial.xml:433
+#, no-c-format
+msgid ""
+"But <literal>MessageManagerBean</literal> is also responsible for fetching "
+"the list of messages the first time we navigate to the message list page. "
+"There are various ways the user could navigate to the page, and not all of "
+"them are preceded by a JSF action&mdash;the user might have bookmarked the "
+"page, for example. So the job of fetching the message list takes place in a "
+"Seam <emphasis>factory method</emphasis>, instead of in an action listener "
+"method."
+msgstr ""
+"O <literal>MessageManagerBean</literal> é também responsável pela busca "
+"de visualização da lista de mensagem na primeira vez que navegamos na página "
+"da lista de mensagem. Existem várias maneiras do usuário navegar na página e "
+"nem todas as opções são precedentes do JSF action&mdash;o usuário talvez tenha "
+"marcado a página, por exemplo. Desta forma, o trabalho da busca de "
+"visualização da lista de mensagem toma espaço num <emphasis>método de "
+"fábrica</emphasis> Seam, ao invés de um método action listener. "
+
+#. Tag: para
+#: Tutorial.xml:436
+#, no-c-format
+msgid ""
+"We want to cache the list of messages in memory between server requests, so "
+"we will make this a stateful session bean."
+msgstr ""
+"Queremos realizar o cache da lista de memória entre as solicitações do "
+"servidor. Então realizaremos isto num bean de sessão com estado."
+
+#. Tag: programlisting
+#: Tutorial.xml:450
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Scope(SESSION)\n"
+"@Name(\"messageManager\")\n"
+"public class MessageManagerBean implements Serializable, MessageManager\n"
+"{\n"
+"\n"
+"   @DataModel\n"
+"   private List&lt;Message&gt; messageList;\n"
+"   \n"
+"   @DataModelSelection\n"
+"   @Out(required=false)\n"
+"   private Message message;\n"
+"   \n"
+"   @PersistenceContext(type=EXTENDED)\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @Factory(\"messageList\")\n"
+"   public void findMessages()\n"
+"   {\n"
+"      messageList = em.createQuery(\"from Message msg order by msg.datetime "
+"desc\").getResultList();\n"
+"   }\n"
+"   \n"
+"   public void select()\n"
+"   {\n"
+"      message.setRead(true);\n"
+"   }\n"
+"   \n"
+"   public void delete()\n"
+"   {\n"
+"      messageList.remove(message);\n"
+"      em.remove(message);\n"
+"      message=null;\n"
+"   }\n"
+"   \n"
+"   @Remove @Destroy\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+"@Stateful\n"
+"@Scope(SESSION)\n"
+"@Name(\"messageManager\")\n"
+"public class MessageManagerBean implements Serializable, MessageManager\n"
+"{\n"
+"\n"
+"   @DataModel\n"
+"   private List&lt;Message&gt; messageList;\n"
+"   \n"
+"   @DataModelSelection\n"
+"   @Out(required=false)\n"
+"   private Message message;\n"
+"   \n"
+"   @PersistenceContext(type=EXTENDED)\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @Factory(\"messageList\")\n"
+"   public void findMessages()\n"
+"   {\n"
+"      messageList = em.createQuery(\"from Message msg order by msg.datetime "
+"desc\").getResultList();\n"
+"   }\n"
+"   \n"
+"   public void select()\n"
+"   {\n"
+"      message.setRead(true);\n"
+"   }\n"
+"   \n"
+"   public void delete()\n"
+"   {\n"
+"      messageList.remove(message);\n"
+"      em.remove(message);\n"
+"      message=null;\n"
+"   }\n"
+"   \n"
+"   @Remove @Destroy\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:453
+#, no-c-format
+msgid ""
+"The <literal>@DataModel</literal> annotation exposes an attibute of type "
+"<literal>java.util.List</literal> to the JSF page as an instance of "
+"<literal>javax.faces.model.DataModel</literal>. This allows us to use the "
+"list in a JSF <literal>&lt;h:dataTable&gt;</literal> with clickable links "
+"for each row. In this case, the <literal>DataModel</literal> is made "
+"available in a session context variable named <literal>messageList</literal>."
+msgstr ""
+"A anotação <literal>@DataModel</literal> expõe um atributo do tipo "
+"<literal>java.util.List</literal> da página JSF, como uma instância do "
+"<literal>javax.faces.model.DataModel</literal>. Isto nos permite usar a "
+"lista num <literal>&lt;h:dataTable&gt;</literal> JSF com links clicáveis "
+"para cada linha. Neste caso, o <literal>DataModel</literal> fica disponível "
+"numa variável nomeada de contexto de sessão <literal>messageList</literal>."
+
+#. Tag: para
+#: Tutorial.xml:458
+#, no-c-format
+msgid ""
+"The <literal>@DataModelSelection</literal> annotation tells Seam to inject "
+"the <literal>List</literal> element that corresponded to the clicked link."
+msgstr ""
+"A anotação <literal>@DataModelSelection</literal> informa ao Seam para "
+"injetar o elemento <literal>Lista</literal> correspondente ao link clicável."
+
+#. Tag: para
+#: Tutorial.xml:463
+#, no-c-format
+msgid ""
+"The <literal>@Out</literal> annotation then exposes the selected value "
+"directly to the page. So ever time a row of the clickable list is selected, "
+"the <literal>Message</literal> is injected to the attribute of the stateful "
+"bean, and the subsequently <emphasis>outjected</emphasis> to the event "
+"context variable named <literal>message</literal>."
+msgstr ""
+"Então, a anotação <literal>@Out</literal> expõe o valor selecionado "
+"diretamente à página. Desta forma, a cada instante em que uma linha de lista "
+"clicáveis for selecionada, a <literal>Mensagem</literal> é injetada ao "
+"atributo do bean com estado e subseqüentemente <emphasis>outjected</"
+"emphasis> à <literal>mensagem</literal> da variável nomeada de contexto do "
+"evento."
+
+#. Tag: para
+#: Tutorial.xml:468
+#, no-c-format
+msgid ""
+"This stateful bean has an EJB3 <emphasis>extended persistence context</"
+"emphasis>. The messages retrieved in the query remain in the managed state "
+"as long as the bean exists, so any subsequent method calls to the stateful "
+"bean can update them without needing to make any explicit call to the "
+"<literal>EntityManager</literal>."
+msgstr ""
+"Este bean com estado possui um <emphasis>contexto de persistência estendido</"
+"emphasis> EJB3. As mensagens recuperadas na consulta permanecem no estado "
+"gerenciado enquanto o bean existir. Desta forma, qualquer uma das chamadas "
+"de método subseqüente ao bean com estado pode atualizá-lo sem a necessidade "
+"de realizar qualquer chamada explícita ao <literal>EntityManager</literal>."
+
+#. Tag: para
+#: Tutorial.xml:473
+#, no-c-format
+msgid ""
+"The first time we navigate to the JSP page, there will be no value in the "
+"<literal>messageList</literal> context variable. The <literal>@Factory</"
+"literal> annotation tells Seam to create an instance of "
+"<literal>MessageManagerBean</literal> and invoke the <literal>findMessages()"
+"</literal> method to initialize the value. We call <literal>findMessages()</"
+"literal> a <emphasis>factory method</emphasis> for <literal>messages</"
+"literal>."
+msgstr ""
+"A primeira vez em que navegarmos na página JSP, não haverá valor na variável "
+"do contexto <literal>messageList</literal>. A anotação <literal>@Factory</"
+"literal> informa ao Seam para criar uma instância da "
+"<literal>MessageManagerBean</literal> e invocar o método "
+"<literal>findMessages()</literal> para inicialização do valor. Chamamos "
+"<literal>findMessages()</literal> um <emphasis>método de fábrica</emphasis> "
+"de <literal>mensagens</literal>."
+
+#. Tag: para
+#: Tutorial.xml:478
+#, no-c-format
+msgid ""
+"The <literal>select()</literal> action listener method marks the selected "
+"<literal>Message</literal> as read, and updates it in the database."
+msgstr ""
+"O <literal>select()</literal> do método action listener marca a "
+"<literal>Mensagem</literal> selecionada como lida e a atualiza no banco de "
+"dados."
+
+#. Tag: para
+#: Tutorial.xml:483
+#, no-c-format
+msgid ""
+"The <literal>delete()</literal> action listener method removes the selected "
+"<literal>Message</literal> from the database."
+msgstr ""
+"O método action listener <literal>delete()</literal> remove a "
+"<literal>Mensagem</literal> selecionada do banco de dados."
+
+#. Tag: para
+#: Tutorial.xml:488
+#, no-c-format
+msgid ""
+"All stateful session bean Seam components <emphasis>must</emphasis> have a "
+"method marked <literal>@Remove @Destroy</literal> to ensure that Seam will "
+"remove the stateful bean when the Seam context ends, and clean up any server-"
+"side state."
+msgstr ""
+"Todos os componentes Seam de bean de sessão com estado <emphasis>devem</"
+"emphasis> ter um método marcado <literal>@Remove @Destroy</literal> para "
+"garantir que o Seam removerá o bean com estado quando o contexto Seam "
+"terminar, além de limpar qualquer estado no lado do servidor."
+
+#. Tag: para
+#: Tutorial.xml:495
+#, no-c-format
+msgid ""
+"Note that this is a session-scoped Seam component. It is associated with the "
+"user login session, and all requests from a login session share the same "
+"instance of the component. (In Seam applications, we usually use session-"
+"scoped components sparingly.)"
+msgstr ""
+"Perceba que isto é um componente Seam de escopo de sessão. Isto é associado "
+"com a sessão de logon e todas as solicitações de uma sessão logon "
+"compartilham a mesma instância do componente. (Nos aplicativos Seam, usamos "
+"normalmente os componentes de escopo de sessão de forma reduzida.)"
+
+#. Tag: title
+#: Tutorial.xml:501
+#, no-c-format
+msgid "The session bean local interface: <literal>MessageManager.java</literal>"
+msgstr "O bean de sessão da interface local: <literal>MessageManager.java</literal>"
+
+#. Tag: para
+#: Tutorial.xml:502
+#, no-c-format
+msgid "All session beans have a business interface, of course."
+msgstr "Todos os beans de sessão possuem uma interface comercial."
+
+#. Tag: programlisting
+#: Tutorial.xml:505
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface MessageManager\n"
+"{\n"
+"   public void findMessages();\n"
+"   public void select();\n"
+"   public void delete();\n"
+"   public void destroy();\n"
+"}"
+msgstr ""
+"@Local\n"
+"public interface MessageManager\n"
+"{\n"
+"   public void findMessages();\n"
+"   public void select();\n"
+"   public void delete();\n"
+"   public void destroy();\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:506
+#, no-c-format
+msgid "From now on, we won&#39;t show local interfaces in our code examples."
+msgstr ""
+"A partir de agora, não apresentaremos mais as interfaces locais em nossas "
+"amostras de código."
+
+#. Tag: para
+#: Tutorial.xml:509
+#, no-c-format
+msgid ""
+"Let&#39;s skip over <literal>components.xml</literal>, <literal>persistence."
+"xml</literal>, <literal>web.xml</literal>, <literal>ejb-jar.xml</literal>, "
+"<literal>faces-config.xml</literal> and <literal>application.xml</literal> "
+"since they are much the same as the previous example, and go straight to the "
+"JSP."
+msgstr ""
+"Vamos pular <literal>components.xml</literal>, <literal>persistence.xml</"
+"literal>, <literal>web.xml</literal>, <literal>ejb-jar.xml</literal>, "
+"<literal>faces-config.xml</literal> e <literal>application.xml</literal>, "
+"uma vez que estes são muito parecidos com o exemplo anterior e vamos direto ao "
+"JSP."
+
+#. Tag: title
+#: Tutorial.xml:515
+#, no-c-format
+msgid "The view: <literal>messages.jsp</literal>"
+msgstr "A visualização: <literal>messages.jsp</literal>"
+
+#. Tag: para
+#: Tutorial.xml:516
+#, no-c-format
+msgid ""
+"The JSP page is a straightforward use of the JSF <literal>&lt;h:dataTable&gt;"
+"</literal> component. Again, nothing specific to Seam."
+msgstr ""
+"A página JSP é uma maneira fácil de se utilizar o componente <literal>&lt;h:dataTable&gt;</"
+"literal> JSF. Novamente, nada especificado ao Seam."
+
+#. Tag: programlisting
+#: Tutorial.xml:519
+#, no-c-format
+msgid ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" %&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Messages&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;h2&gt;Message List&lt;/h2&gt;\n"
+"     &lt;h:outputText value=\"No messages to display\" rendered=\"#"
+"{messageList.rowCount==0}\"/&gt;\n"
+"     &lt;h:dataTable var=\"msg\" value=\"#{messageList}\" rendered=\"#"
+"{messageList.rowCount&gt;0}\"&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Read\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:selectBooleanCheckbox value=\"#{msg.read}\" disabled=\"true"
+"\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Title\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:commandLink value=\"#{msg.title}\" action=\"#"
+"{messageManager.select}\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Date/Time\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:outputText value=\"#{msg.datetime}\"&gt;\n"
+"              &lt;f:convertDateTime type=\"both\" dateStyle=\"medium\" "
+"timeStyle=\"short\"/&gt;\n"
+"           &lt;/h:outputText&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;h:commandButton value=\"Delete\" action=\"#{messageManager."
+"delete}\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"     &lt;/h:dataTable&gt;\n"
+"     &lt;h3&gt;&lt;h:outputText value=\"#{message.title}\"/&gt;&lt;/h3&gt;\n"
+"     &lt;div&gt;&lt;h:outputText value=\"#{message.text}\"/&gt;&lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" %&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Messages&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;h2&gt;Message List&lt;/h2&gt;\n"
+"     &lt;h:outputText value=\"No messages to display\" rendered=\"#"
+"{messageList.rowCount==0}\"/&gt;\n"
+"     &lt;h:dataTable var=\"msg\" value=\"#{messageList}\" rendered=\"#"
+"{messageList.rowCount&gt;0}\"&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Read\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:selectBooleanCheckbox value=\"#{msg.read}\" disabled=\"true"
+"\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Title\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:commandLink value=\"#{msg.title}\" action=\"#"
+"{messageManager.select}\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Date/Time\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:outputText value=\"#{msg.datetime}\"&gt;\n"
+"              &lt;f:convertDateTime type=\"both\" dateStyle=\"medium\" "
+"timeStyle=\"short\"/&gt;\n"
+"           &lt;/h:outputText&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;h:commandButton value=\"Delete\" action=\"#{messageManager."
+"delete}\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"     &lt;/h:dataTable&gt;\n"
+"     &lt;h3&gt;&lt;h:outputText value=\"#{message.title}\"/&gt;&lt;/h3&gt;\n"
+"     &lt;div&gt;&lt;h:outputText value=\"#{message.text}\"/&gt;&lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+
+#. Tag: para
+#: Tutorial.xml:527
+#, no-c-format
+msgid ""
+"The first time we navigate to the <literal>messages.jsp</literal> page, "
+"whether by a JSF postback (faces request) or a direct browser GET request "
+"(non-faces request), the page will try to resolve the <literal>messageList</"
+"literal> context variable. Since this context variable is not initialized, "
+"Seam will call the factory method <literal>findMessages()</literal>, which "
+"performs a query against the database and results in a <literal>DataModel</"
+"literal> being outjected. This <literal>DataModel</literal> provides the row "
+"data needed for rendering the <literal>&lt;h:dataTable&gt;</literal>."
+msgstr ""
+"Na primeira vez em que navegarmos à página de <literal>messages.jsp</"
+"literal>, independente de ser por um re-envio do JSF (solicitação de faces) "
+"ou uma solicitação direta GET do navegador (solicitação sem-faces), a página "
+"tentará resolver a variável do contexto <literal>messageList</literal>. Uma "
+"vez que a variável do contexto não é inicializada, o Seam chamará o"
+"<literal>findMessages()</literal> de método de fábrica, do qual desempenha "
+"uma consulta com referência ao banco de dados e resultados <literal>DataModel</literal> sendo "
+"outjected. Este <literal>DataModel</literal> fornece a fila de dados "
+"necessária para renderizar o <literal>&lt;h:dataTable&gt;</literal>."
+
+#. Tag: para
+#: Tutorial.xml:530
+#, no-c-format
+msgid ""
+"When the user clicks the <literal>&lt;h:commandLink&gt;</literal>, JSF calls "
+"the <literal>select()</literal> action listener. Seam intercepts this call "
+"and injects the selected row data into the <literal>message</literal> "
+"attribute of the <literal>messageManager</literal> component. The action "
+"listener fires, marking the selected <literal>Message</literal> as read. At "
+"the end of the call, Seam outjects the selected <literal>Message</literal> "
+"to the context variable named <literal>message</literal>. Next, the EJB "
+"container commits the transaction, and the change to the <literal>Message</"
+"literal> is flushed to the database. Finally, the page is re-rendered, "
+"redisplaying the message list, and displaying the selected message below it."
+msgstr ""
+"Quando o usuário clicar no <literal>&lt;h:commandLink&gt;</literal>, o JSF "
+"chamará a action listener <literal>select()</literal>. O Seam intercepta "
+"esta chamada e injeta os dados de fila selecionada no atributo da "
+"<literal>mensagem</literal> do componente <literal>messageManager</literal>. "
+"O action listener é acionado, marcando a <literal>Mensagem</literal> "
+"selecionada como lida. No final da chamada, o Seam realiza o outject na "
+"<literal>Mensagem</literal> selecionada à <literal>mensagem</literal> "
+"da variável nomeada do contexto. Em seguida, o container EJB confirma a "
+"transação e muda para a <literal>Mensagem</literal> que é liberada ao banco "
+"de dados. Por último, a página é renderizada novamente, re-exibindo a lista "
+"de mensagem e exibindo a mensagem selecionada abaixo disto."
+
+#. Tag: para
+#: Tutorial.xml:533
+#, no-c-format
+msgid ""
+"If the user clicks the <literal>&lt;h:commandButton&gt;</literal>, JSF calls "
+"the <literal>delete()</literal> action listener. Seam intercepts this call "
+"and injects the selected row data into the <literal>message</literal> "
+"attribute of the <literal>messageList</literal> component. The action "
+"listener fires, removing the selected <literal>Message</literal> from the "
+"list, and also calling <literal>remove()</literal> on the "
+"<literal>EntityManager</literal>. At the end of the call, Seam refreshes the "
+"<literal>messageList</literal> context variable and clears the context "
+"variable named <literal>message</literal>. The EJB container commits the "
+"transaction, and deletes the <literal>Message</literal> from the database. "
+"Finally, the page is re-rendered, redisplaying the message list."
+msgstr ""
+"Caso o usuário clicar no <literal>&lt;h:commandButton&gt;</literal>, o JSF "
+"chama o action listener <literal>delete()</literal>. O Seam intercepta esta "
+"chamada e injeta os dados da fila selecionada no atributo da "
+"<literal>mensagem</literal> do componente de <literal>messageList</literal>. "
+"O action listener é acionado, removendo a <literal>Mensagem</literal> "
+"selecionada da lista e também chamando <literal>remove()</literal> no "
+"<literal>EntityManager</literal>. No final da chamada, o Seam atualiza a "
+"variável do contexto <literal>messageList</literal> e limpa a "
+"<literal>mensagem</literal> nomeada da variável de contexto. O container EJB "
+"confirma a transação e deleta a <literal>Message</literal> do banco de "
+"dados. Finalmente, a página é novamente renderizada re-exibindo a lista de "
+"mensagem."
+
+#. Tag: title
+#: Tutorial.xml:541
+#, no-c-format
+msgid "Seam and jBPM: the todo list example"
+msgstr "Seam e JBPM: a amostra da lista todo"
+
+#. Tag: para
+#: Tutorial.xml:542
+#, no-c-format
+msgid ""
+"jBPM provides sophisticated functionality for workflow and task management. "
+"To get a small taste of how jBPM integrates with Seam, we&#39;ll show you a "
+"simple \"todo list\" application. Since managing lists of tasks is such core "
+"functionality for jBPM, there is hardly any Java code at all in this example."
+msgstr ""
+"O JBPM fornece uma funcionalidade sofisticada para o workflow e "
+"gerenciamento de trabalho. Para ter uma idéia de como o JBPM se integra com "
+"o Seam, apresentaremos um simples aplicativo da \" lista todo\". Uma vez que "
+"as listas gerenciadas da tarefa são uma funcionalidade principal para JBPM, dificilmente haverá "
+"qualquer código Java nesta amostra."
+
+#. Tag: para
+#: Tutorial.xml:555
+#, no-c-format
+msgid ""
+"The center of this example is the jBPM process definition. There are also "
+"two JSPs and two trivial JavaBeans (There was no reason to use session "
+"beans, since they do not access the database, or have any other "
+"transactional behavior). Let&#39;s start with the process definition:"
+msgstr ""
+"O centro desta amostra é a definição de processo JBPM. Há também dois JSPs e "
+"dois JavaBeans comuns. (Não houve necessidade de se usar beans de sessão, "
+"uma vez que eles não acessam o banco de dados ou possuem outro comportamento "
+"de transação). Vamos começar pela definição do processo:"
+
+#. Tag: programlisting
+#: Tutorial.xml:566
+#, no-c-format
+msgid ""
+"&lt;process-definition name=\"todo\"&gt;\n"
+"   \n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"todo\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;task-node name=\"todo\"&gt;\n"
+"      &lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"         &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"      &lt;/task&gt;\n"
+"      &lt;transition to=\"done\"/&gt;\n"
+"   &lt;/task-node&gt;\n"
+"   \n"
+"   &lt;end-state name=\"done\"/&gt;\n"
+"   \n"
+"&lt;/process-definition&gt;"
+msgstr ""
+"&lt;process-definition name=\"todo\"&gt;\n"
+"   \n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"todo\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;task-node name=\"todo\"&gt;\n"
+"      &lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"         &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"      &lt;/task&gt;\n"
+"      &lt;transition to=\"done\"/&gt;\n"
+"   &lt;/task-node&gt;\n"
+"   \n"
+"   &lt;end-state name=\"done\"/&gt;\n"
+"   \n"
+"&lt;/process-definition&gt;"
+
+#. Tag: para
+#: Tutorial.xml:569
+#, no-c-format
+msgid ""
+"The <literal>&lt;start-state&gt;</literal> node represents the logical start "
+"of the process. When the process starts, it immediately transitions to the "
+"<literal>todo</literal> node."
+msgstr ""
+"O nó <literal>&lt;start-state&gt;</literal> representa a inicialização "
+"lógica do processo. Quando o processo for iniciado, ele imediatamente "
+"transitará ao nó <literal>todo</literal>."
+
+#. Tag: para
+#: Tutorial.xml:574
+#, no-c-format
+msgid ""
+"The <literal>&lt;task-node&gt;</literal> node represents a <emphasis>wait "
+"state</emphasis>, where business process execution pauses, waiting for one "
+"or more tasks to be performed."
+msgstr ""
+"O nó <literal>&lt;task-node&gt;</literal> representa um <emphasis>estado de "
+"espera</emphasis>, onde a execução do processo comercial pausa esperando por "
+"uma ou mais tarefas a serem executadas."
+
+#. Tag: para
+#: Tutorial.xml:579
+#, no-c-format
+msgid ""
+"The <literal>&lt;task&gt;</literal> element defines a task to be performed "
+"by a user. Since there is only one task defined on this node, when it is "
+"complete, execution resumes, and we transition to the end state. The task "
+"gets its description from a Seam component named <literal>todoList</literal> "
+"(one of the JavaBeans)."
+msgstr ""
+"O elemento <literal>&lt;task&gt;</literal> define uma tarefa a ser "
+"desempenhada pelo usuário. Uma vez que há apenas uma tarefa definida neste "
+"nó, quando esta for completada, a transição se resumirá e transitaremos para o "
+"final do estado. A tarefa obtém sua descrição do componente nomeado Seam "
+"<literal>todoList</literal> (um dos JavaBeans)."
+
+#. Tag: para
+#: Tutorial.xml:584
+#, no-c-format
+msgid ""
+"Tasks need to be assigned to a user or group of users when they are created. "
+"In this case, the task is assigned to the current user, which we get from a "
+"built-in Seam component named <literal>actor</literal>. Any Seam component "
+"may be used to perform task assignment."
+msgstr ""
+"As tarefas precisam ser determinadas ao usuário ou grupo de usuários uma vez "
+"em que eles são criados. Neste caso, a tarefa é determinada ao usuário "
+"atual, em que obtemos por meio do <literal>actor</literal> nomeado do "
+"componente Seam interno. Qualquer componente Seam é usado para executar a "
+"tarefa."
+
+#. Tag: para
+#: Tutorial.xml:589
+#, no-c-format
+msgid ""
+"The <literal>&lt;end-state&gt;</literal> node defines the logical end of the "
+"business process. When execution reaches this node, the process instance is "
+"destroyed."
+msgstr ""
+"O nó <literal>&lt;end-state&gt;</literal> determina a lógica final do "
+"processo comercial. Quando a execução alcançar este nó, a instância do "
+"processo será destruída."
+
+#. Tag: para
+#: Tutorial.xml:596
+#, no-c-format
+msgid ""
+"If we view this process definition using the process definition editor "
+"provided by JBossIDE, this is what it looks like:"
+msgstr ""
+"Caso vizualizarmos esta definição do processo usando o editor da definição "
+"do processo pelo JBossIDE, isto irá se parecer com:"
+
+#. Tag: para
+#: Tutorial.xml:607
+#, no-c-format
+msgid ""
+"This document defines our <emphasis>business process</emphasis> as a graph "
+"of nodes. This is the most trivial possible business process: there is one "
+"<emphasis>task</emphasis> to be performed, and when that task is complete, "
+"the business process ends."
+msgstr ""
+"Este documento define nosso <emphasis>processo comercial</emphasis> como um "
+"gráfico de nós. Esta é a possibilidade mais comum do processo comercial: "
+"há apenas uma <emphasis>tarefa</emphasis> a ser executada, e quando esta "
+"tarefa for completada, o processo comercial encerrará."
+
+#. Tag: para
+#: Tutorial.xml:610
+#, no-c-format
+msgid ""
+"The first JavaBean handles the login screen <literal>login.jsp</literal>. "
+"Its job is just to initialize the jBPM actor id using the <literal>actor</"
+"literal> component. (In a real application, it would also need to "
+"authenticate the user.)"
+msgstr ""
+"O primeiro JavaBeans manuseia a tela de logon <literal>login.jsp</literal>. "
+"Este processo é apenas para inicializar o jBPM actor id usando o componente "
+"<literal>actor</literal>. (No aplicativo real, seria necessário também "
+"autenticar o usuário.)"
+
+#. Tag: programlisting
+#: Tutorial.xml:613
+#, no-c-format
+msgid ""
+"@Name(\"login\")\n"
+"public class Login {\n"
+"   \n"
+"   @In\n"
+"   private Actor actor;\n"
+"   \n"
+"   private String user;\n"
+"\n"
+"   public String getUser() {\n"
+"      return user;\n"
+"   }\n"
+"\n"
+"   public void setUser(String user) {\n"
+"      this.user = user;\n"
+"   }\n"
+"   \n"
+"   public String login()\n"
+"   {\n"
+"      actor.setId(user);\n"
+"      return \"/todo.jsp\";\n"
+"   }\n"
+"}"
+msgstr ""
+"@Name(\"login\")\n"
+"public class Login {\n"
+"   \n"
+"   @In\n"
+"   private Actor actor;\n"
+"   \n"
+"   private String user;\n"
+"\n"
+"   public String getUser() {\n"
+"      return user;\n"
+"   }\n"
+"\n"
+"   public void setUser(String user) {\n"
+"      this.user = user;\n"
+"   }\n"
+"   \n"
+"   public String login()\n"
+"   {\n"
+"      actor.setId(user);\n"
+"      return \"/todo.jsp\";\n"
+"   }\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:614
+#, no-c-format
+msgid ""
+"Here we see the use of <literal>@In</literal> to inject the built-in "
+"<literal>Actor</literal> component."
+msgstr ""
+"Vemos agora o uso do <literal>@In</literal> para injetar o componente "
+"<literal>Actor</literal> interno."
+
+#. Tag: para
+#: Tutorial.xml:617
+#, no-c-format
+msgid "The JSP itself is trivial:"
+msgstr "O próprio JSP é comum:"
+
+#. Tag: programlisting
+#: Tutorial.xml:620
+#, no-c-format
+msgid ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"%&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"%&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Login&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Login&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    &lt;h:form&gt;\n"
+"      &lt;div&gt;\n"
+"        &lt;h:inputText value=\"#{login.user}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Login\" action=\"#{login.login}\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"    &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"%&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"%&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Login&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Login&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    &lt;h:form&gt;\n"
+"      &lt;div&gt;\n"
+"        &lt;h:inputText value=\"#{login.user}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Login\" action=\"#{login.login}\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"    &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+
+#. Tag: para
+#: Tutorial.xml:621
+#, no-c-format
+msgid ""
+"The second JavaBean is responsible for starting business process instances, "
+"and ending tasks."
+msgstr ""
+"O segundo JavaBean é responsável por iniciar instâncias de processo "
+"comercial e finalizar tarefas."
+
+#. Tag: programlisting
+#: Tutorial.xml:630
+#, no-c-format
+msgid ""
+"@Name(\"todoList\")\n"
+"public class TodoList {\n"
+"   \n"
+"   private String description;\n"
+"   \n"
+"   public String getDescription()\n"
+"   {\n"
+"      return description;\n"
+"   }\n"
+"\n"
+"   public void setDescription(String description) {\n"
+"      this.description = description;\n"
+"   }\n"
+"   \n"
+"   @CreateProcess(definition=\"todo\")\n"
+"   public void createTodo() {}\n"
+"   \n"
+"   @StartTask @EndTask\n"
+"   public void done() {}\n"
+"\n"
+"}"
+msgstr ""
+"@Name(\"todoList\")\n"
+"public class TodoList {\n"
+"   \n"
+"   private String description;\n"
+"   \n"
+"   public String getDescription()\n"
+"   {\n"
+"      return description;\n"
+"   }\n"
+"\n"
+"   public void setDescription(String description) {\n"
+"      this.description = description;\n"
+"   }\n"
+"   \n"
+"   @CreateProcess(definition=\"todo\")\n"
+"   public void createTodo() {}\n"
+"   \n"
+"   @StartTask @EndTask\n"
+"   public void done() {}\n"
+"\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:633
+#, no-c-format
+msgid ""
+"The description property accepts user input form the JSP page, and exposes "
+"it to the process definition, allowing the task description to be set."
+msgstr ""
+"A propriedade de descrição aceita o formulário de entrada do usuário da "
+"página JSP e o expõe à definição do processo, permitindo que a descrição de "
+"tarefa seja configurada."
+
+#. Tag: para
+#: Tutorial.xml:638
+#, no-c-format
+msgid ""
+"The Seam <literal>@CreateProcess</literal> annotation creates a new jBPM "
+"process instance for the named process definition."
+msgstr ""
+"A anotação <literal>@CreateProcess</literal> Seam cria uma nova instância de "
+"processo JBPM para a definição do processo nomeado."
+
+#. Tag: para
+#: Tutorial.xml:643
+#, no-c-format
+msgid ""
+"The Seam <literal>@StartTask</literal> annotation starts work on a task. The "
+"<literal>@EndTask</literal> ends the task, and allows the business process "
+"execution to resume."
+msgstr ""
+"A anotação <literal>@StartTask</literal> Seam começa a trabalhar na tarefa. "
+"O <literal>@EndTask</literal> finaliza a tarefa e permite que a execução do "
+"processo comercial se resuma."
+
+#. Tag: para
+#: Tutorial.xml:650
+#, no-c-format
+msgid ""
+"In a more realistic example, <literal>@StartTask</literal> and "
+"<literal>@EndTask</literal> would not appear on the same method, because "
+"there is usually work to be done using the application in order to complete "
+"the task."
+msgstr ""
+"Numa amostra mais realística, o <literal>@StartTask</literal> e o"
+"<literal>@EndTask</literal> não apareceriam no mesmo método, uma vez que "
+"normalmente há trabalho a ser realizado usando o aplicativo com o objetivo "
+"de se completar a tarefa."
+
+#. Tag: para
+#: Tutorial.xml:653
+#, no-c-format
+msgid "Finally, the meat of the application is in <literal>todo.jsp</literal>:"
+msgstr ""
+"Finalmente, a parte principal do aplicativo está em <literal>todo.jsp</"
+"literal>:"
+
+#. Tag: programlisting
+#: Tutorial.xml:656
+#, no-c-format
+msgid ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://jboss.com/products/seam/taglib\" prefix=\"s\" %"
+"&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Todo List&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Todo List&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"   &lt;h:form id=\"list\"&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:outputText value=\"There are no todo items.\" rendered=\"#"
+"{empty \n"
+"                                       taskInstanceList}\"/&gt;\n"
+"         &lt;h:dataTable value=\"#{taskInstanceList}\" var=\"task\" rendered="
+"\"#{not empty \n"
+"                                       taskInstanceList}\"&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Description\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.description}\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Created\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:outputText value=\"#{task.taskMgmtInstance."
+"processInstance.start}\"&gt;\n"
+"                    &lt;f:convertDateTime type=\"date\"/&gt;\n"
+"                &lt;/h:outputText&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Priority\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.priority}\" style=\"width: 30"
+"\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Due Date\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.dueDate}\" style=\"width: 100"
+"\"&gt;\n"
+"                    &lt;f:convertDateTime type=\"date\" dateStyle=\"short\"/"
+"&gt;\n"
+"                &lt;/h:inputText&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;s:button value=\"Done\" action=\"#{todoList.done}\" "
+"taskInstance=\"#{task}\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"         &lt;/h:dataTable&gt;\n"
+"      &lt;/div&gt;\n"
+"      &lt;div&gt;\n"
+"      &lt;h:messages/&gt;\n"
+"      &lt;/div&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:commandButton value=\"Update Items\" action=\"update\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"   &lt;h:form id=\"new\"&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:inputText value=\"#{todoList.description}\"/&gt;\n"
+"         &lt;h:commandButton value=\"Create New Item\" action=\"#{todoList."
+"createTodo}\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://jboss.com/products/seam/taglib\" prefix=\"s\" %"
+"&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Todo List&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Todo List&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"   &lt;h:form id=\"list\"&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:outputText value=\"There are no todo items.\" rendered=\"#"
+"{empty \n"
+"                                       taskInstanceList}\"/&gt;\n"
+"         &lt;h:dataTable value=\"#{taskInstanceList}\" var=\"task\" rendered="
+"\"#{not empty \n"
+"                                       taskInstanceList}\"&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Description\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.description}\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Created\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:outputText value=\"#{task.taskMgmtInstance."
+"processInstance.start}\"&gt;\n"
+"                    &lt;f:convertDateTime type=\"date\"/&gt;\n"
+"                &lt;/h:outputText&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Priority\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.priority}\" style=\"width: 30"
+"\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Due Date\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.dueDate}\" style=\"width: 100"
+"\"&gt;\n"
+"                    &lt;f:convertDateTime type=\"date\" dateStyle=\"short\"/"
+"&gt;\n"
+"                &lt;/h:inputText&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;s:button value=\"Done\" action=\"#{todoList.done}\" "
+"taskInstance=\"#{task}\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"         &lt;/h:dataTable&gt;\n"
+"      &lt;/div&gt;\n"
+"      &lt;div&gt;\n"
+"      &lt;h:messages/&gt;\n"
+"      &lt;/div&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:commandButton value=\"Update Items\" action=\"update\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"   &lt;h:form id=\"new\"&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:inputText value=\"#{todoList.description}\"/&gt;\n"
+"         &lt;h:commandButton value=\"Create New Item\" action=\"#{todoList."
+"createTodo}\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+
+#. Tag: para
+#: Tutorial.xml:657
+#, no-c-format
+msgid "Let&#39;s take this one piece at a time."
+msgstr "Vamos analisar este trecho no momento certo."
+
+#. Tag: para
+#: Tutorial.xml:660
+#, no-c-format
+msgid ""
+"The page renders a list of tasks, which it gets from a built-in Seam "
+"component named <literal>taskInstanceList</literal>. The list is defined "
+"inside a JSF form."
+msgstr ""
+"A página renderiza a lista de tarefas, que obtém a <literal>taskInstanceList</"
+"literal> de componente nomeado interno Seam. A lista é definida dentro do "
+"formulário JSF."
+
+#. Tag: programlisting
+#: Tutorial.xml:663
+#, no-c-format
+msgid ""
+"&lt;h:form id=\"list\"&gt;\n"
+"   &lt;div&gt;\n"
+"      &lt;h:outputText value=\"There are no todo items.\" rendered=\"#{empty "
+"taskInstanceList}\"/&gt;\n"
+"      &lt;h:dataTable value=\"#{taskInstanceList}\" var=\"task\" rendered=\"#"
+"{not empty taskInstanceList}\"&gt;\n"
+"         ...\n"
+"      &lt;/h:dataTable&gt;\n"
+"   &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h:form id=\"list\"&gt;\n"
+"   &lt;div&gt;\n"
+"      &lt;h:outputText value=\"There are no todo items.\" rendered=\"#{empty "
+"taskInstanceList}\"/&gt;\n"
+"      &lt;h:dataTable value=\"#{taskInstanceList}\" var=\"task\" rendered=\"#"
+"{not empty taskInstanceList}\"&gt;\n"
+"         ...\n"
+"      &lt;/h:dataTable&gt;\n"
+"   &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+
+#. Tag: para
+#: Tutorial.xml:664
+#, no-c-format
+msgid ""
+"Each element of the list is an instance of the jBPM class "
+"<literal>TaskInstance</literal>. The following code simply displays the "
+"interesting properties of each task in the list. For the description, "
+"priority and due date, we use input controls, to allow the user to update "
+"these values."
+msgstr ""
+"Cada elemento da lista é uma instância de <literal>TaskInstance</literal> de "
+"classe JBPM. O código seguinte exibe as propriedades interessantes de cada "
+"tarefa na lista. Para a descrição, prioridade e data de entrega, usaremos "
+"controles de entrada para permitir que o usuário atualize estes valores."
+
+#. Tag: programlisting
+#: Tutorial.xml:667
+#, no-c-format
+msgid ""
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"       &lt;h:outputText value=\"Description\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.description}\"/&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Created\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:outputText value=\"#{task.taskMgmtInstance.processInstance.start}"
+"\"&gt;\n"
+"        &lt;f:convertDateTime type=\"date\"/&gt;\n"
+"    &lt;/h:outputText&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Priority\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.priority}\" style=\"width: 30\"/&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Due Date\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.dueDate}\" style=\"width: 100\"&gt;\n"
+"        &lt;f:convertDateTime type=\"date\" dateStyle=\"short\"/&gt;\n"
+"    &lt;/h:inputText&gt;\n"
+"&lt;/h:column&gt;"
+msgstr ""
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"       &lt;h:outputText value=\"Description\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.description}\"/&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Created\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:outputText value=\"#{task.taskMgmtInstance.processInstance.start}"
+"\"&gt;\n"
+"        &lt;f:convertDateTime type=\"date\"/&gt;\n"
+"    &lt;/h:outputText&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Priority\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.priority}\" style=\"width: 30\"/&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Due Date\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.dueDate}\" style=\"width: 100\"&gt;\n"
+"        &lt;f:convertDateTime type=\"date\" dateStyle=\"short\"/&gt;\n"
+"    &lt;/h:inputText&gt;\n"
+"&lt;/h:column&gt;"
+
+#. Tag: para
+#: Tutorial.xml:668
+#, no-c-format
+msgid ""
+"This button ends the task by calling the action method annotated "
+"<literal>@StartTask @EndTask</literal>. It passes the task id to Seam as a "
+"request parameter:"
+msgstr ""
+"O botão encerra a tarefa chamando o <literal>@StartTask @EndTask</literal> "
+"de método anotado action. Ele passa a id de tarefa ao Seam como uma "
+"solicitação de parâmetro:"
+
+#. Tag: programlisting
+#: Tutorial.xml:671
+#, no-c-format
+msgid ""
+"&lt;h:column&gt;\n"
+"    &lt;s:button value=\"Done\" action=\"#{todoList.done}\" taskInstance=\"#"
+"{task}\"/&gt;\n"
+"&lt;/h:column&gt;"
+msgstr ""
+"&lt;h:column&gt;\n"
+"    &lt;s:button value=\"Done\" action=\"#{todoList.done}\" taskInstance=\"#"
+"{task}\"/&gt;\n"
+"<literal>seam-ui.jar</literal>&lt;/h:column&gt;"
+
+#. Tag: para
+#: Tutorial.xml:672
+#, no-c-format
+msgid ""
+"(Note that this is using a Seam <literal>&lt;s:button&gt;</literal> JSF "
+"control from the <literal>seam-ui.jar</literal> package.)"
+msgstr ""
+"(Perceba que está sendo utilizado um controle JSF de <literal>&lt;s:button&gt;</"
+"literal> Seam, a partir do pacote <literal>seam-ui.jar</literal>.)"
+
+#. Tag: para
+#: Tutorial.xml:675
+#, no-c-format
+msgid ""
+"This button is used to update the properties of the tasks. When the form is "
+"submitted, Seam and jBPM will make any changes to the tasks persistent. "
+"There is no need for any action listener method:"
+msgstr ""
+"Este botão é usado para atualizar as propriedades das tarefas. Quando o "
+"formulário for submetido, o Seam e JBPM realizarão qualquer mudança às "
+"persistências de tarefas. Não há necessidade de qualquer método action "
+"listener:"
+
+#. Tag: programlisting
+#: Tutorial.xml:678
+#, no-c-format
+msgid "&lt;h:commandButton value=\"Update Items\" action=\"update\"/&gt;"
+msgstr "&lt;h:commandButton value=\"Update Items\" action=\"update\"/&gt;"
+
+#. Tag: para
+#: Tutorial.xml:679
+#, no-c-format
+msgid ""
+"A second form on the page is used to create new items, by calling the action "
+"method annotated <literal>@CreateProcess</literal>."
+msgstr ""
+"O segundo formulário da página é usado para criar novos ítens, chamando o "
+"<literal>@CreateProcess</literal> de método anotado action."
+
+#. Tag: programlisting
+#: Tutorial.xml:682
+#, no-c-format
+msgid ""
+"&lt;h:form id=\"new\"&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:inputText value=\"#{todoList.description}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Create New Item\" action=\"#{todoList."
+"createTodo}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h:form id=\"new\"&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:inputText value=\"#{todoList.description}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Create New Item\" action=\"#{todoList."
+"createTodo}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+
+#. Tag: para
+#: Tutorial.xml:683
+#, no-c-format
+msgid ""
+"There are several other files needed for the example, but they are just "
+"standard jBPM and Seam configuration and not very interesting."
+msgstr ""
+"Existem diversos outros arquivos necessários para esta amostra, mas eles são apenas"
+"JBPM padrão e configuração Seam, além de não serem muito interessantes."
+
+#. Tag: para
+#: Tutorial.xml:690 Tutorial.xml:805 Tutorial.xml:1148 Tutorial.xml:1174
+#: Tutorial.xml:1187
+#, no-c-format
+msgid "TODO"
+msgstr "TODO"
+
+#. Tag: title
+#: Tutorial.xml:698
+#, no-c-format
+msgid "Seam pageflow: the numberguess example"
+msgstr "Seam pageflow: a amostra numberguess"
+
+#. Tag: para
+#: Tutorial.xml:699
+#, no-c-format
+msgid ""
+"For Seam applications with relatively freeform (ad hoc) navigation, JSF/Seam "
+"navigation rules are a perfectly good way to define the page flow. For "
+"applications with a more constrained style of navigation, especially for "
+"user interfaces which are more stateful, navigation rules make it difficult "
+"to really understand the flow of the system. To understand the flow, you "
+"need to piece it together from the view pages, the actions and the "
+"navigation rules."
+msgstr ""
+"Para os aplicativos Seam com navegação freeform (ad hoc) relativa, as regras "
+"de navegação JSF/Seam são uma maneira perfeita de definir page flow. Para os "
+"aplicativos de estilo mais restrito de navegação, especialmente para "
+"interfaces de usuários que possuem mais estado, as regras de navegação "
+"dificultam o entendimento do fluxo do sistema. Para o entender o fluxo, você "
+"precisa dividí-lo em pedaço a partir das páginas de visualização, as actions "
+"e regras de navegação."
+
+#. Tag: para
+#: Tutorial.xml:702
+#, no-c-format
+msgid ""
+"Seam allows you to use a jPDL process definition to define pageflow. The "
+"simple number guessing example shows how this is done."
+msgstr ""
+"O Seam permite você usar a definição de processo JDPL para definir pageflow. "
+"A simples amostra de adivinhação apresenta como isto é realizado."
+
+#. Tag: para
+#: Tutorial.xml:715
+#, no-c-format
+msgid ""
+"The example is implemented using one JavaBean, three JSP pages and a jPDL "
+"pageflow definition. Let&#39;s begin with the pageflow:"
+msgstr ""
+"A amostra é implementada usando um JavaBean, três páginas JSP e uma "
+"definição pageflow JPDL. Vamos iniciar com a pageflow:"
+
+#. Tag: programlisting
+#: Tutorial.xml:725
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"numberGuess\"&gt;\n"
+"   \n"
+"   &lt;start-page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"          &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"      &lt;/transition&gt;\n"
+"   &lt;/start-page&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess."
+"correctGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateRemainingGuesses\" expression=\"#{numberGuess."
+"lastGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"lose\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"displayGuess\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"lose\" view-id=\"/lose.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+"&lt;pageflow-definition name=\"numberGuess\"&gt;\n"
+"   \n"
+"   &lt;start-page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"          &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"      &lt;/transition&gt;\n"
+"   &lt;/start-page&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess."
+"correctGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateRemainingGuesses\" expression=\"#{numberGuess."
+"lastGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"lose\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"displayGuess\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"lose\" view-id=\"/lose.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+
+#. Tag: para
+#: Tutorial.xml:728
+#, no-c-format
+msgid ""
+"The <literal>&lt;page&gt;</literal> element defines a wait state where the "
+"system displays a particular JSF view and waits for user input. The "
+"<literal>view-id</literal> is the same JSF view id used in plain JSF "
+"navigation rules. The <literal>redirect</literal> attribute tells Seam to "
+"use post-then-redirect when navigating to the page. (This results in "
+"friendly browser URLs.)"
+msgstr ""
+"O elemento <literal>&lt;page&gt;</literal> define o estado de espera onde o "
+"sistema apresenta uma específica visualização JSF usada nas regras de "
+"navegação JSF. O atributo <literal>redirecionar</literal> pede ao Seam para "
+"usar post-then-redirect quando navegando na página. (Isto resulta num "
+"amigável navegador URLs.)"
+
+#. Tag: para
+#: Tutorial.xml:733
+#, no-c-format
+msgid ""
+"The <literal>&lt;transition&gt;</literal> element names a JSF outcome. The "
+"transition is triggered when a JSF action results in that outcome. Execution "
+"will then proceed to the next node of the pageflow graph, after invocation "
+"of any jBPM transition actions."
+msgstr ""
+"O elemento <literal>&lt;transition&gt;</literal> nomeia o resultado JSF. A "
+"transação é acionada quando um JSF action resulta naquele resultado. A "
+"execução será então procedida para o próximo nó do gráfico pageflow, após a "
+"invocação de qualquer action de transição JBPM. "
+
+#. Tag: para
+#: Tutorial.xml:738
+#, no-c-format
+msgid ""
+"A transition <literal>&lt;action&gt;</literal> is just like a JSF action, "
+"except that it occurs when a jBPM transition occurs. The transition action "
+"can invoke any Seam component."
+msgstr ""
+"A transição <literal>&lt;action&gt;</literal> é como um JSF action, com "
+"exceção que isto ocorre quando a transação JBPM ocorrer. A transação action "
+"pode invocar qualquer componente Seam."
+
+#. Tag: para
+#: Tutorial.xml:743
+#, no-c-format
+msgid ""
+"A <literal>&lt;decision&gt;</literal> node branches the pageflow, and "
+"determines the next node to execute by evaluating a JSF EL expression."
+msgstr ""
+"O nó <literal>&lt;decision&gt;</literal> ramifica o pageflow e determina que "
+"o próximo nó efetue a execução, apenas avaliando uma expressão EL JSF."
+
+#. Tag: para
+#: Tutorial.xml:750
+#, no-c-format
+msgid "Here is what the pageflow looks like in the JBossIDE pageflow editor:"
+msgstr ""
+"Segue abaixo uma idéia de como o pageflow irá parecer-se no editor pageflow "
+"JBossIDE:"
+
+#. Tag: para
+#: Tutorial.xml:761
+#, no-c-format
+msgid ""
+"Now that we have seen the pageflow, it is very, very easy to understand the "
+"rest of the application!"
+msgstr ""
+"Uma vez que já vimos o pageflow, será muito mais fácil entender o resto do "
+"aplicativo."
+
+#. Tag: para
+#: Tutorial.xml:764
+#, no-c-format
+msgid "Here is the main page of the application, <literal>numberGuess.jsp</literal>:"
+msgstr ""
+"Segue a abaixo a página principal do aplicativo, <literal>numberGuess.jsp</"
+"literal>:"
+
+#. Tag: programlisting
+#: Tutorial.xml:767
+#, no-c-format
+msgid ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"%&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"%&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Guess a number...&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Guess a number...&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    &lt;h:form&gt;\n"
+"        &lt;h:outputText value=\"Higher!\" rendered=\"#{numberGuess."
+"randomNumber&gt;numberGuess.currentGuess}\" /&gt;\n"
+"        &lt;h:outputText value=\"Lower!\" rendered=\"#{numberGuess."
+"randomNumber&lt;numberGuess.currentGuess}\" /&gt;\n"
+"        &lt;br /&gt;\n"
+"        I&#39;m thinking of a number between &lt;h:outputText value=\"#"
+"{numberGuess.smallest}\" /&gt; and \n"
+"        &lt;h:outputText value=\"#{numberGuess.biggest}\" /&gt;. You have \n"
+"        &lt;h:outputText value=\"#{numberGuess.remainingGuesses}\" /&gt; "
+"guesses.\n"
+"        &lt;br /&gt;\n"
+"        Your guess: \n"
+"        &lt;h:inputText value=\"#{numberGuess.currentGuess}\" id=\"guess\" "
+"required=\"true\"&gt;\n"
+"            &lt;f:validateLongRange\n"
+"                maximum=\"#{numberGuess.biggest}\" \n"
+"                minimum=\"#{numberGuess.smallest}\"/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"        &lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"guess"
+"\" /&gt;\n"
+"        &lt;br/&gt;\n"
+"        &lt;h:message for=\"guess\" style=\"color: red\"/&gt;\n"
+"    &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"%&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"%&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Guess a number...&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Guess a number...&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    &lt;h:form&gt;\n"
+"        &lt;h:outputText value=\"Higher!\" rendered=\"#{numberGuess."
+"randomNumber&gt;numberGuess.currentGuess}\" /&gt;\n"
+"        &lt;h:outputText value=\"Lower!\" rendered=\"#{numberGuess."
+"randomNumber&lt;numberGuess.currentGuess}\" /&gt;\n"
+"        &lt;br /&gt;\n"
+"        I&#39;m thinking of a number between &lt;h:outputText value=\"#"
+"{numberGuess.smallest}\" /&gt; and \n"
+"        &lt;h:outputText value=\"#{numberGuess.biggest}\" /&gt;. You have \n"
+"        &lt;h:outputText value=\"#{numberGuess.remainingGuesses}\" /&gt; "
+"guesses.\n"
+"        &lt;br /&gt;\n"
+"        Your guess: \n"
+"        &lt;h:inputText value=\"#{numberGuess.currentGuess}\" id=\"guess\" "
+"required=\"true\"&gt;\n"
+"            &lt;f:validateLongRange\n"
+"                maximum=\"#{numberGuess.biggest}\" \n"
+"                minimum=\"#{numberGuess.smallest}\"/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"        &lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"guess"
+"\" /&gt;\n"
+"        &lt;br/&gt;\n"
+"        &lt;h:message for=\"guess\" style=\"color: red\"/&gt;\n"
+"    &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+
+#. Tag: para
+#: Tutorial.xml:768
+#, no-c-format
+msgid ""
+"Notice how the command button names the <literal>guess</literal> transition "
+"instead of calling an action directly."
+msgstr ""
+"Perceba como o botão de comando nomeia a transação <literal>adivinhar</"
+"literal> ao invés de chamar diretamente uma action."
+
+#. Tag: para
+#: Tutorial.xml:771
+#, no-c-format
+msgid "The <literal>win.jsp</literal> page is predictable:"
+msgstr "A página <literal>win.jsp</literal> é premeditada:"
+
+#. Tag: programlisting
+#: Tutorial.xml:774
+#, no-c-format
+msgid ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"%&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"%&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;You won!&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;You won!&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    Yes, the answer was &lt;h:outputText value=\"#{numberGuess.currentGuess}"
+"\" /&gt;.\n"
+"    It took you &lt;h:outputText value=\"#{numberGuess.guessCount}\" /&gt; "
+"guesses.\n"
+"    Would you like to &lt;a href=\"numberGuess.seam\"&gt;play again&lt;/"
+"a&gt;?\n"
+"  &lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"%&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"%&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;You won!&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;You won!&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    Yes, the answer was &lt;h:outputText value=\"#{numberGuess.currentGuess}"
+"\" /&gt;.\n"
+"    It took you &lt;h:outputText value=\"#{numberGuess.guessCount}\" /&gt; "
+"guesses.\n"
+"    Would you like to &lt;a href=\"numberGuess.seam\"&gt;play again&lt;/"
+"a&gt;?\n"
+"  &lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+
+#. Tag: para
+#: Tutorial.xml:775
+#, no-c-format
+msgid ""
+"As is <literal>lose.jsp</literal> (which I can&#39;t be bothered copy/"
+"pasting). Finally, the JavaBean Seam component:"
+msgstr ""
+"Assim como se apresenta <literal>lose.jsp</literal> (o que não irei me "
+"incomodar em copiar/colar). Finalmente, o componente JavaBean Seam:"
+
+#. Tag: programlisting
+#: Tutorial.xml:783
+#, no-c-format
+msgid ""
+"@Name(\"numberGuess\")\n"
+"@Scope(ScopeType.CONVERSATION)\n"
+"public class NumberGuess {\n"
+"   \n"
+"   private int randomNumber;\n"
+"   private Integer currentGuess;\n"
+"   private int biggest;\n"
+"   private int smallest;\n"
+"   private int guessCount;\n"
+"   private int maxGuesses;\n"
+"   \n"
+"   @Create \n"
+"   @Begin(pageflow=\"numberGuess\")\n"
+"   public void begin()\n"
+"   {\n"
+"      randomNumber = new Random().nextInt(100);\n"
+"      guessCount = 0;\n"
+"      biggest = 100;\n"
+"      smallest = 1;\n"
+"   }\n"
+"   \n"
+"   public void setCurrentGuess(Integer guess)\n"
+"   {\n"
+"      this.currentGuess = guess;\n"
+"   }\n"
+"   \n"
+"   public Integer getCurrentGuess()\n"
+"   {\n"
+"      return currentGuess;\n"
+"   }\n"
+"   \n"
+"   public void guess()\n"
+"   {\n"
+"      if (currentGuess&gt;randomNumber)\n"
+"      {\n"
+"         biggest = currentGuess - 1;\n"
+"      }\n"
+"      if (currentGuess&lt;randomNumber)\n"
+"      {\n"
+"         smallest = currentGuess + 1;\n"
+"      }\n"
+"      guessCount ++;\n"
+"   }\n"
+"   \n"
+"   public boolean isCorrectGuess()\n"
+"   {\n"
+"      return currentGuess==randomNumber;\n"
+"   }\n"
+"   \n"
+"   public int getBiggest()\n"
+"   {\n"
+"      return biggest;\n"
+"   }\n"
+"   \n"
+"   public int getSmallest()\n"
+"   {\n"
+"      return smallest;\n"
+"   }\n"
+"   \n"
+"   public int getGuessCount()\n"
+"   {\n"
+"      return guessCount;\n"
+"   }\n"
+"   \n"
+"   public boolean isLastGuess()\n"
+"   {\n"
+"      return guessCount==maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getRemainingGuesses() {\n"
+"      return maxGuesses-guessCount;\n"
+"   }\n"
+"\n"
+"   public void setMaxGuesses(int maxGuesses) {\n"
+"      this.maxGuesses = maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getMaxGuesses() {\n"
+"      return maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getRandomNumber() {\n"
+"      return randomNumber;\n"
+"   }\n"
+"}"
+msgstr ""
+"@Name(\"numberGuess\")\n"
+"@Scope(ScopeType.CONVERSATION)\n"
+"public class NumberGuess {\n"
+"   \n"
+"   private int randomNumber;\n"
+"   private Integer currentGuess;\n"
+"   private int biggest;\n"
+"   private int smallest;\n"
+"   private int guessCount;\n"
+"   private int maxGuesses;\n"
+"   \n"
+"   @Create \n"
+"   @Begin(pageflow=\"numberGuess\")\n"
+"   public void begin()\n"
+"   {\n"
+"      randomNumber = new Random().nextInt(100);\n"
+"      guessCount = 0;\n"
+"      biggest = 100;\n"
+"      smallest = 1;\n"
+"   }\n"
+"   \n"
+"   public void setCurrentGuess(Integer guess)\n"
+"   {\n"
+"      this.currentGuess = guess;\n"
+"   }\n"
+"   \n"
+"   public Integer getCurrentGuess()\n"
+"   {\n"
+"      return currentGuess;\n"
+"   }\n"
+"   \n"
+"   public void guess()\n"
+"   {\n"
+"      if (currentGuess&gt;randomNumber)\n"
+"      {\n"
+"         biggest = currentGuess - 1;\n"
+"      }\n"
+"      if (currentGuess&lt;randomNumber)\n"
+"      {\n"
+"         smallest = currentGuess + 1;\n"
+"      }\n"
+"      guessCount ++;\n"
+"   }\n"
+"   \n"
+"   public boolean isCorrectGuess()\n"
+"   {\n"
+"      return currentGuess==randomNumber;\n"
+"   }\n"
+"   \n"
+"   public int getBiggest()\n"
+"   {\n"
+"      return biggest;\n"
+"   }\n"
+"   \n"
+"   public int getSmallest()\n"
+"   {\n"
+"      return smallest;\n"
+"   }\n"
+"   \n"
+"   public int getGuessCount()\n"
+"   {\n"
+"      return guessCount;\n"
+"   }\n"
+"   \n"
+"   public boolean isLastGuess()\n"
+"   {\n"
+"      return guessCount==maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getRemainingGuesses() {\n"
+"      return maxGuesses-guessCount;\n"
+"   }\n"
+"\n"
+"   public void setMaxGuesses(int maxGuesses) {\n"
+"      this.maxGuesses = maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getMaxGuesses() {\n"
+"      return maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getRandomNumber() {\n"
+"      return randomNumber;\n"
+"   }\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:786
+#, no-c-format
+msgid ""
+"The first time a JSP page asks for a <literal>numberGuess</literal> "
+"component, Seam will create a new one for it, and the <literal>@Create</"
+"literal> method will be invoked, allowing the component to initialize itself."
+msgstr ""
+"Na primeira vez em que uma página JSP perguntar por um componente "
+"<literal>numberGuess</literal>, o Seam criará um novo componente para ela e "
+"o método <literal>@Create</literal> será invocado permitindo que o "
+"componente inicialize por conta própria."
+
+#. Tag: para
+#: Tutorial.xml:791
+#, no-c-format
+msgid ""
+"The <literal>@Begin</literal> annotation starts a Seam "
+"<emphasis>conversation</emphasis> (much more about that later), and "
+"specifies the pageflow definition to use for the conversation&#39;s page "
+"flow."
+msgstr ""
+"A anotação <literal>@Begin</literal> inicializa uma <emphasis>conversação</"
+"emphasis> Seam e especifica a definição da pageflow para uso da pageflow de "
+"conversação."
+
+#. Tag: para
+#: Tutorial.xml:798
+#, no-c-format
+msgid ""
+"As you can see, this Seam component is pure business logic! It doesn&#39;t "
+"need to know anything at all about the user interaction flow. This makes the "
+"component potentially more reuseable."
+msgstr ""
+"Como você pode observar, este componente Seam é pura lógica comercial. Não "
+"existe a necessidade de saber coisa alguma a respeito do fluxo de "
+"interação. Isto faz com que o componente seja potentemente re-"
+"utilizável com mais freqüência."
+
+#. Tag: title
+#: Tutorial.xml:813
+#, no-c-format
+msgid "A complete Seam application: the Hotel Booking example"
+msgstr "Um aplicativo Seam completo: o exemplo de reserva de um Hotel"
+
+#. Tag: title
+#: Tutorial.xml:815
+#, no-c-format
+msgid "Introduction"
+msgstr "Introdução"
+
+#. Tag: para
+#: Tutorial.xml:816
+#, no-c-format
+msgid ""
+"The booking application is a complete hotel room reservation system "
+"incorporating the following features:"
+msgstr ""
+"O aplicativo de reserva é um sistema completo de reserva de quarto de "
+"hotel, incorporado pelos seguintes recursos:"
+
+#. Tag: para
+#: Tutorial.xml:821
+#, no-c-format
+msgid "User registration"
+msgstr "Registro do usuário"
+
+#. Tag: para
+#: Tutorial.xml:826
+#, no-c-format
+msgid "Login"
+msgstr "Logon"
+
+#. Tag: para
+#: Tutorial.xml:831
+#, no-c-format
+msgid "Logout"
+msgstr "Logoff"
+
+#. Tag: para
+#: Tutorial.xml:836
+#, no-c-format
+msgid "Set password"
+msgstr "Definição da senha"
+
+#. Tag: para
+#: Tutorial.xml:841
+#, no-c-format
+msgid "Hotel search"
+msgstr "Procura do Hotel"
+
+#. Tag: para
+#: Tutorial.xml:846
+#, no-c-format
+msgid "Hotel selection"
+msgstr "Seleção do Hotel"
+
+#. Tag: para
+#: Tutorial.xml:851
+#, no-c-format
+msgid "Room reservation"
+msgstr "Reserva do quarto"
+
+#. Tag: para
+#: Tutorial.xml:856
+#, no-c-format
+msgid "Reservation confirmation"
+msgstr "Confirmação de reserva"
+
+#. Tag: para
+#: Tutorial.xml:861
+#, no-c-format
+msgid "Existing reservation list"
+msgstr "Lista de reservas existentes"
+
+#. Tag: title
+#: Tutorial.xml:868
+#, no-c-format
+msgid "Booking Example"
+msgstr "Exemplo de Reserva"
+
+#. Tag: para
+#: Tutorial.xml:877
+#, no-c-format
+msgid ""
+"The booking application uses JSF, EJB 3.0 and Seam, together with Facelets "
+"for the view. There is also a port of this application to JSF, Facelets, "
+"Seam, JavaBeans and Hibernate3."
+msgstr ""
+"O aplicativo de reserva usa o JSF, EJB e Seam juntamente com os Facelets para a "
+"visualização. Há também um portal deste aplicativo para o JSF, Facelets, "
+"Seam, JavaBeans e Hibernate3. "
+
+#. Tag: para
+#: Tutorial.xml:880
+#, no-c-format
+msgid ""
+"One of the things you&#39;ll notice if you play with this application for "
+"long enough is that it is extremely <emphasis>robust</emphasis>. You can "
+"play with back buttons and browser refresh and opening multiple windows and "
+"entering nonsensical data as much as you like and you will find it very "
+"difficult to make the application crash. You might think that we spent weeks "
+"testing and fixing bugs to achive this. Actually, this is not the case. Seam "
+"was designed to make it very straightforward to build robust web "
+"applications and a lot of robustness that you are probably used to having to "
+"code yourself comes naturally and automatically with Seam."
+msgstr ""
+"Uma das coisas que você perceberá, caso você comece a brincar com este "
+"aplicativo por um determinado período, é que ele é extremamente "
+"<emphasis>robusto</emphasis>. Você pode brincar com botões de volta, "
+"atualização de navegador, abertura de múltiplas janelas e entrada de dados "
+"banais quantas vezes você desejar e irá descobrir que é muito difícil que o "
+"aplicativo falhe. Você deve pensar que gastamos semanas testando e "
+"consertando bugs para atingir este nível. Na realidade, este não foi nosso "
+"caso. O Seam foi designado a realizar, de maneira bem simples, a construção de "
+"aplicativos da web robustos. Adicionado a isto, muito deste vigor que você certamente está "
+"acostumado a usar para a própria codificação, vem naturalmente e "
+"automaticamente com o Seam. "
+
+#. Tag: para
+#: Tutorial.xml:883
+#, no-c-format
+msgid ""
+"As you browse the sourcecode of the example application, and learn how the "
+"application works, observe how the declarative state management and "
+"integrated validation has been used to achieve this robustness."
+msgstr ""
+"No momento em que você estiver navegando pelo código fonte do aplicativo de "
+"amostra e aprendendo como este aplicativo funciona, observe como o "
+"gerenciador do estado declarativo e a validação integrada são utilizadas para "
+"atingir esta força. "
+
+#. Tag: title
+#: Tutorial.xml:889
+#, no-c-format
+msgid "Overview of the booking example"
+msgstr "Visão geral do exemplo de reserva"
+
+#. Tag: para
+#: Tutorial.xml:890
+#, no-c-format
+msgid ""
+"The project structure is identical to the previous one, to install and "
+"deploy this application, please refer to <xref linkend="
+"\"Seam_Reference_Guide-Seam_Tutorial-Try_the_examples\"/>. Once you&#39;ve "
+"successfully started the application, you can access it by pointing your "
+"browser to <ulink url=\"http://localhost:8080/seam-booking/"
+"\"><literal>http://localhost:8080/seam-booking/</literal></ulink>"
+msgstr ""
+"A estrutura do projeto é idêntica à anterior, para instalar e implementar "
+"este aplicativo. Consulte a <xref linkend=\"Seam_Reference_Guide-"
+"Seam_Tutorial-Try_the_examples\"/>. Uma vez que você tenha iniciado o "
+"aplicativo com êxito, você poderá acessá-lo indicando em seu navegador o <ulink "
+"url=\"http://localhost:8080/seam-booking/\"><literal>http://localhost:8080/"
+"seam-booking/</literal></ulink>"
+
+#. Tag: para
+#: Tutorial.xml:893
+#, no-c-format
+msgid ""
+"Just nine classes (plus six session beans local interfaces) where used to "
+"implement this application. Six session bean action listeners contain all "
+"the business logic for the listed features."
+msgstr ""
+"Apenas nove classes (mais seis interfaces locais de beans de sessão) foram "
+"usadas para implementar este aplicativo. Seis action listeners de bean de "
+"sessão contêm toda a lógica comercial para os recursos listados."
+
+#. Tag: para
+#: Tutorial.xml:898
+#, no-c-format
+msgid ""
+"<literal>BookingListAction</literal> retrieves existing bookings for the "
+"currently logged in user."
+msgstr ""
+"<literal>BookingListAction</literal> recupera reservas existentes dos"
+"usuários conectados. "
+
+#. Tag: para
+#: Tutorial.xml:901
+#, no-c-format
+msgid ""
+"<literal>ChangePasswordAction</literal> updates the password of the "
+"currently logged in user."
+msgstr ""
+"<literal>ChangePasswordAction</literal> atualiza a senha do usuário "
+"conectado."
+
+#. Tag: para
+#: Tutorial.xml:904
+#, no-c-format
+msgid ""
+"<literal>HotelBookingAction</literal> implements the core functionality of "
+"the application: hotel room searching, selection, booking and booking "
+"confirmation. This functionality is implemented as a <emphasis>conversation</"
+"emphasis>, so this is the most interesting class in the application."
+msgstr ""
+"<literal>HotelBookingAction</literal> implementa a funcionalidade principal "
+"do aplicativo: busca de quarto do hotel, seleção, reserva e confirmação de "
+"reserva. Esta funcionalidade é implementada como uma <emphasis>conversação</"
+"emphasis>, sendo desta forma a classe mais interessante deste aplicativo."
+
+#. Tag: para
+#: Tutorial.xml:907
+#, no-c-format
+msgid "<literal>RegisterAction</literal> registers a new system user."
+msgstr "<literal>RegisterAction</literal> registra um novo usuário no sistema."
+
+#. Tag: para
+#: Tutorial.xml:910
+#, no-c-format
+msgid "Three entity beans implement the application&#39;s persistent domain model."
+msgstr ""
+"Três beans de entidade implementam o modelo de domínio persistente do "
+"aplicativo."
+
+#. Tag: para
+#: Tutorial.xml:915
+#, no-c-format
+msgid "<literal>Hotel</literal> is an entity bean that represents a hotel"
+msgstr "<literal>Hotel</literal> é um bean de entidade que representa o hotel"
+
+#. Tag: para
+#: Tutorial.xml:920
+#, no-c-format
+msgid ""
+"<literal>Booking</literal> is an entity bean that represents an existing "
+"booking"
+msgstr ""
+"<literal>Booking</literal> é um bean de entidade que representa uma reserva "
+"existente"
+
+#. Tag: para
+#: Tutorial.xml:925
+#, no-c-format
+msgid ""
+"<literal>User</literal> is an entity bean to represents a user who can make "
+"hotel bookings"
+msgstr ""
+"<literal>User</literal> é um bean de entidade do qual representa um usuário "
+"que pode realizar reservas"
+
+#. Tag: title
+#: Tutorial.xml:933
+#, no-c-format
+msgid "Understanding Seam conversations"
+msgstr "Esclarecimento das conversações Seam"
+
+#. Tag: para
+#: Tutorial.xml:934
+#, no-c-format
+msgid ""
+"We encourage you browse the sourcecode at your pleasure. In this tutorial "
+"we&#39;ll concentrate upon one particular piece of functionality: hotel "
+"search, selection, booking and confirmation. From the point of view of the "
+"user, everything from selecting a hotel to confirming a booking is one "
+"continuous unit of work, a <emphasis>conversation</emphasis>. Searching, "
+"however, is <emphasis>not</emphasis> part of the conversation. The user can "
+"select multiple hotels from the same search results page, in different "
+"browser tabs."
+msgstr ""
+"Incentivamos que você navegue no código fonte para sua diversão. Neste "
+"tutorial nos concentraremos num pedaço particular de funcionalidade: busca "
+"do hotel, seleção, reserva e confirmação. Sob o ponto de vista do usuário, "
+"tudo a partir da seleção do hotel até a confirmação de reserva é uma unidade "
+"contínua de trabalho, uma <emphasis>conversação</emphasis>. No entanto, a "
+"busca <emphasis>não</emphasis> faz parte da conversação. O usuário pode "
+"selecionar múltiplos hotéis na mesma página de resultados de busca em "
+"diferentes tabelas do navegador. "
+
+#. Tag: para
+#: Tutorial.xml:937
+#, no-c-format
+msgid ""
+"Most web application architectures have no first class construct to "
+"represent a conversation. This causes enormous problems managing state "
+"associated with the conversation. Usually, Java web applications use a "
+"combination of two techniques: first, some state is thrown into the "
+"<literal>HttpSession</literal>; second, persistable state is flushed to the "
+"database after every request, and reconstructed from the database at the "
+"beginning of each new request."
+msgstr ""
+"A maioria das arquiteturas do aplicativo da web não possuem construção de "
+"primeira classe para representar a conversação. Isto causa grandes problemas "
+"no gerenciamento de estado associado com a conversação. Normalmente, os "
+"aplicativos da web Java usam uma combinação de duas técnicas: a primeira, "
+"alguns estados são jogados na <literal>HttpSession</literal>; e a segunda, o "
+"estado persistente é liberado ao banco de dados após cada solicitação e "
+"reconstruído a partir do banco de dados no início de cada solicitação nova."
+
+#. Tag: para
+#: Tutorial.xml:940
+#, no-c-format
+msgid ""
+"Since the database is the least scalable tier, this often results in an "
+"utterly unacceptable lack of scalability. Added latency is also a problem, "
+"due to the extra traffic to and from the database on every request. To "
+"reduce this redundant traffic, Java applications often introduce a data "
+"(second-level) cache that keeps commonly accessed data between requests. "
+"This cache is necessarily inefficient, because invalidation is based upon an "
+"LRU policy instead of being based upon when the user has finished working "
+"with the data. Furthermore, because the cache is shared between many "
+"concurrent transactions, we&#39;ve introduced a whole raft of problem&#39;s "
+"associated with keeping the cached state consistent with the database."
+msgstr ""
+"Uma vez que o banco de dados é uma camada de menor escala, isto normalmente "
+"resulta numa perda total inaceitável de escabilidade. Além disso, a latência "
+"é também um problema devido ao tráfico extra de e para o banco de dados em "
+"cada solicitação. Para reduzir este tráfico redundante, os aplicativos Java "
+"sempre introduzem um cache (segundo nível) de dados que ajuda normalmente o "
+"acesso de dados entre solicitações. Este cache é ineficiente, pois a "
+"invalidação é baseada na política LRU ao invés de basear-se até quando o usuário "
+"estiver terminado o trabalho com os dados. Adicionado a isto, uma vez que o "
+"cache é compartilhado entre diversas transações atuais, introduzimos um "
+"grande suporte associado ao problema de se manter consistente o estado do cache "
+"com o banco de dados."
+
+#. Tag: para
+#: Tutorial.xml:943
+#, no-c-format
+msgid ""
+"Now consider the state held in the <literal>HttpSession</literal>. By very "
+"careful programming, we might be able to control the size of the session "
+"data. This is a lot more difficult than it sounds, since web browsers permit "
+"ad hoc non-linear navigation. But suppose we suddenly discover a system "
+"requirement that says that a user is allowed to have <emphasis>mutiple "
+"concurrent conversations</emphasis>, halfway through the development of the "
+"system (this has happened to me). Developing mechanisms to isolate session "
+"state associated with different concurrent conversations, and incorporating "
+"failsafes to ensure that conversation state is destroyed when the user "
+"aborts one of the conversations by closing a browser window or tab is not "
+"for the faint hearted (I&#39;ve implemented this stuff twice so far, once "
+"for a client application, once for Seam, but I&#39;m famously psychotic)."
+msgstr ""
+"Vamos considerar agora o estado mantido na <literal>HttpSession</literal>. "
+"Através de um programa bem minucioso talvez estejamos aptos a controlar o "
+"tamanho dos dados da sessão. Isto é mais difícil do que se parece, sabendo-"
+"se que os navegadores da web permitem a navegação ad hoc non-linear. Mas, "
+"vamos supor que descobrimos recentemente uma solicitação do sistema que diz "
+"que um usuário é permitido a ter <emphasis>conversações múltiplas atuais</"
+"emphasis>, e isto ocorrendo na metade do caminho do desenvolvimento do "
+"sistema (isto aconteceu comigo). O desenvolvimento de mecanismos para isolar "
+"o associado estado de sessão com diferentes conversações atuais e a "
+"incorporação de failsafes para garantir que o estado de conversação são "
+"destruídos assim que o usuário abortar uma das conversações, fechando a janela "
+"do navegador ou tab. Isto não é para qualquer coração fraco. (Eu implementei duas vezes "
+"isto: uma vez para o aplicativo Seam e a outra para o Seam)."
+
+#. Tag: para
+#: Tutorial.xml:946
+#, no-c-format
+msgid "Now there is a better way."
+msgstr "Há uma maneira melhor para isto."
+
+#. Tag: para
+#: Tutorial.xml:949
+#, no-c-format
+msgid ""
+"Seam introduces the <emphasis>conversation context</emphasis> as a first "
+"class construct. You can safely keep conversational state in this context, "
+"and be assured that it will have a well-defined lifecycle. Even better, you "
+"won&#39;t need to be continually pushing data back and forth between the "
+"application server and the database, since the conversation context is a "
+"natural cache of data that the user is currently working with."
+msgstr ""
+"O Seam introduz o <emphasis>contexto de conversação</emphasis> como uma "
+"construção de primeira classe. Você pode manter seguramente o estado "
+"conversacional neste contexto, e ter certeza que ele terá um ciclo de vida "
+"bem definido. Ainda melhor, precisará mover dados continuamente entre o "
+"servidor do aplicativo e o banco de dados, uma vez que o contexto de "
+"conversação é um cache natural de dados, do qual o usuário está trabalhando "
+"no momento."
+
+#. Tag: para
+#: Tutorial.xml:952
+#, no-c-format
+msgid ""
+"Usually, the components we keep in the conversation context are stateful "
+"session beans. (We can also keep entity beans and JavaBeans in the "
+"conversation context.) There is an ancient canard in the Java community that "
+"stateful session beans are a scalability killer. This may have been true in "
+"1998 when WebFoobar 1.0 was released. It is no longer true today. "
+"Application servers like JBoss 4.0 have extremely sophisticated mechanisms "
+"for stateful session bean state replication. (For example, the JBoss EJB3 "
+"container performs fine-grained replication, replicating only those bean "
+"attribute values which actually changed.) Note that all the traditional "
+"technical arguments for why stateful beans are inefficient apply equally to "
+"the <literal>HttpSession</literal>, so the practice of shifting state from "
+"business tier stateful session bean components to the web session to try and "
+"improve performance is unbelievably misguided. It is certainly possible to "
+"write unscalable applications using stateful session beans, by using "
+"stateful beans incorrectly, or by using them for the wrong thing. But that "
+"doesn&#39;t mean you should <emphasis>never</emphasis> use them. Anyway, "
+"Seam guides you toward a safe usage model. Welcome to 2005."
+msgstr ""
+"Normalmente, os componentes que mantemos no contexto de conversação são "
+"beans de sessão com estado. (Podemos também manter beans de entidade e "
+"JavaBeans no contexto de conversação.) Há também uma ficção antiga na "
+"comunidade Java onde os beans de sessão com estado são uma ameaça para a "
+"adaptabilidade. Isto poderia ser verdadeiro em 1998 quando WebFoobar 1.0 era "
+"liberado. No entanto, isto não é mais válido atualmente. Os servidores de "
+"aplicativo como JBoss 4.0 possuem mecanismos extremamente sofisticados para "
+"a replicação de estado de bean de sessão com estado. (Por exemplo, o "
+"container EJB3 executa a replicação fine-grained, replicando apenas aqueles "
+"valores de atributo de bean que na realidade foram alterados.) Perceba que "
+"todos os argumentos técnicos tradicionais, referentes aos beans com estado, "
+"são igualmente aplicados ineficientemente ao <literal>HttpSession</literal>. "
+"Desta forma, a prática de estado de troca a partir de componentes de bean de "
+"sessão com estado da camada comercial para a sessão da web, com a finalidade de tentar e "
+"melhorar o desempenho, é inacreditávelmente enganosa. É certamente possível "
+"gravar aplicativos sem escala usando beans de sessão com estado, apenas "
+"usando beans com estado incorretamente ou usando-os para o procedimento "
+"errado. No entanto, isto não quer dizer que você <emphasis>nunca</emphasis> "
+"deverá utilizá-los. De qualquer forma, o Seam o guia para o modelo de uso "
+"seguro. Bem vindo à 2005!"
+
+#. Tag: para
+#: Tutorial.xml:955
+#, no-c-format
+msgid "OK, I&#39;ll stop ranting now, and get back to the tutorial."
+msgstr "Tudo bem, eu vou parar de desviar o assunto e voltar ao tutorial."
+
+#. Tag: para
+#: Tutorial.xml:958
+#, no-c-format
+msgid ""
+"The booking example application shows how stateful components with different "
+"scopes can collaborate together to achieve complex behaviors. The main page "
+"of the booking application allows the user to search for hotels. The search "
+"results are kept in the Seam session scope. When the user navigates to one "
+"of these hotels, a conversation begins, and a conversation scoped component "
+"calls back to the session scoped component to retrieve the selected hotel."
+msgstr ""
+"O aplicativo do exemplo de reserva apresenta como os componentes com estado "
+"de escopos diferentes podem juntos colaborar para atingir os comportamentos "
+"mais complexos. A página principal do aplicativo de reserva permite que o "
+"usuário busque por hotéis. O resultado de busca é mantido no escopo de "
+"sessão Seam. Quando o usuário navegar em alguns destes hotéis, a conversação "
+"inicializa e o componente de escopo de conversação pede novamente ao "
+"componente de escopo de sessão para recuperar o hotel selecionado."
+
+#. Tag: para
+#: Tutorial.xml:961
+#, no-c-format
+msgid ""
+"The booking example also demonstrates the use of Ajax4JSF to implement rich "
+"client behavior without the use of handwritten JavaScript."
+msgstr ""
+"O exemplo de reserva também demonstra que o uso do Ajax4JSF para implementar "
+"o comportamento do cliente sem o uso manuscrito do JavaScript."
+
+#. Tag: para
+#: Tutorial.xml:964
+#, no-c-format
+msgid ""
+"The search functionality is implemented using a session-scope stateful "
+"session bean, similar to the one we saw in the message list example above."
+msgstr ""
+"A funcionalidade busca é implementada usando o bean de sessão com estado de "
+"escopo de sessão, similar ao que vimos no exemplo de lista de mensagem acima."
+
+#. Tag: programlisting
+#: Tutorial.xml:974
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"hotelSearch\")\n"
+"@Scope(ScopeType.SESSION)\n"
+"@Restrict(\"#{identity.loggedIn}\")\n"
+"public class HotelSearchingAction implements HotelSearching\n"
+"{\n"
+"   \n"
+"   @PersistenceContext\n"
+"   private EntityManager em;\n"
+"   \n"
+"   private String searchString;\n"
+"   private int pageSize = 10;\n"
+"   private int page;\n"
+"   \n"
+"   @DataModel\n"
+"   private List&lt;Hotel&gt; hotels;\n"
+"   \n"
+"   public String find()\n"
+"   {\n"
+"      page = 0;\n"
+"      queryHotels();   \n"
+"      return \"main\";\n"
+"   }\n"
+"\n"
+"   public String nextPage()\n"
+"   {\n"
+"      page++;\n"
+"      queryHotels();\n"
+"      return \"main\";\n"
+"   }\n"
+"      \n"
+"   private void queryHotels()\n"
+"   {\n"
+"      String searchPattern = searchString==null ? \"%\" : &#39;%&#39; + \n"
+"         searchString.toLowerCase().replace(&#39;*&#39;, &#39;%&#39;) + &#39;"
+"%&#39;;\n"
+"      hotels = em.createQuery(\"select h from Hotel h where lower(h.name) "
+"like \n"
+"        :search or lower(h.city) like :search \n"
+"        or lower(h.zip) like :search or lower(h.address) like :search\")\n"
+"            .setParameter(\"search\", searchPattern)\n"
+"            .setMaxResults(pageSize)\n"
+"            .setFirstResult( page * pageSize )\n"
+"            .getResultList();\n"
+"   }\n"
+"   \n"
+"   public boolean isNextPageAvailable()\n"
+"   {\n"
+"      return hotels!=null &amp;&amp; hotels.size()==pageSize;\n"
+"   }\n"
+"   \n"
+"   public int getPageSize() {\n"
+"      return pageSize;\n"
+"   }\n"
+"\n"
+"   public void setPageSize(int pageSize) {\n"
+"      this.pageSize = pageSize;\n"
+"   }\n"
+"\n"
+"   public String getSearchString()\n"
+"   {\n"
+"      return searchString;\n"
+"   }\n"
+"\n"
+"   public void setSearchString(String searchString)\n"
+"   {\n"
+"      this.searchString = searchString;\n"
+"   }\n"
+"   \n"
+"   @Destroy @Remove\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+"@Scope(ScopeType.SESSION)\n"
+"@Restrict(\"#{identity.loggedIn}\")\n"
+"public class HotelSearchingAction implements HotelSearching\n"
+"{\n"
+"   \n"
+"   @PersistenceContext\n"
+"   private EntityManager em;\n"
+"   \n"
+"   private String searchString;\n"
+"   private int pageSize = 10;\n"
+"   private int page;\n"
+"   \n"
+"   @DataModel\n"
+"   private List&lt;Hotel&gt; hotels;\n"
+"   \n"
+"   public String find()\n"
+"   {\n"
+"      page = 0;\n"
+"      queryHotels();   \n"
+"      return \"main\";\n"
+"   }\n"
+"\n"
+"   public String nextPage()\n"
+"   {\n"
+"      page++;\n"
+"      queryHotels();\n"
+"      return \"main\";\n"
+"   }\n"
+"      \n"
+"   private void queryHotels()\n"
+"   {\n"
+"      String searchPattern = searchString==null ? \"%\" : &#39;%&#39; + \n"
+"         searchString.toLowerCase().replace(&#39;*&#39;, &#39;%&#39;) + &#39;"
+"%&#39;;\n"
+"      hotels = em.createQuery(\"select h from Hotel h where lower(h.name) "
+"like \n"
+"        :search or lower(h.city) like :search \n"
+"        or lower(h.zip) like :search or lower(h.address) like :search\")\n"
+"            .setParameter(\"search\", searchPattern)\n"
+"            .setMaxResults(pageSize)\n"
+"            .setFirstResult( page * pageSize )\n"
+"            .getResultList();\n"
+"   }\n"
+"   \n"
+"   public boolean isNextPageAvailable()\n"
+"   {\n"
+"      return hotels!=null &amp;&amp; hotels.size()==pageSize;\n"
+"   }\n"
+"   \n"
+"   public int getPageSize() {\n"
+"      return pageSize;\n"
+"   }\n"
+"\n"
+"   public void setPageSize(int pageSize) {\n"
+"      this.pageSize = pageSize;\n"
+"   }\n"
+"\n"
+"   public String getSearchString()\n"
+"   {\n"
+"      return searchString;\n"
+"   }\n"
+"\n"
+"   public void setSearchString(String searchString)\n"
+"   {\n"
+"      this.searchString = searchString;\n"
+"   }\n"
+"   \n"
+"   @Destroy @Remove\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:977
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Stateful</literal> annotation identifies this "
+"class as a stateful session bean. Stateful session beans are scoped to the "
+"conversation context by default."
+msgstr ""
+"A anotação <literal>@Stateful</literal> padrão EJB identifica esta classe "
+"como um bean de sessão com estado. Os beans de sessão com estado possuem "
+"escopo para o contexto de conversação pelo padrão."
+
+#. Tag: para
+#: Tutorial.xml:982
+#, no-c-format
+msgid ""
+"The <literal>@Restrict</literal> annotation applies a security restriction "
+"to the component. It restricts access to the component allowing only logged-"
+"in users. The security chapter explains more about security in Seam."
+msgstr ""
+"A anotação <literal>@Restrict</literal> aplica-se a restrição de segurança "
+"do componente. Ela restringe o acesso ao componente permitindo apenas "
+"usuários conectados. O capítulo de segurança explica melhor a respeito sobre "
+"segurança em Seam."
+
+#. Tag: para
+#: Tutorial.xml:987
+#, no-c-format
+msgid ""
+"The <link linkend=\"datamodel-annotation\"><literal>@DataModel</literal></"
+"link> annotation exposes a <literal>List</literal> as a JSF "
+"<literal>ListDataModel</literal>. This makes it easy to implement clickable "
+"lists for search screens. In this case, the list of hotels is exposed to the "
+"page as a <literal>ListDataModel</literal> in the conversation variable "
+"named <literal>hotels</literal>."
+msgstr ""
+"A anotação <link linkend=\"datamodel-annotation\"><literal>@DataModel</"
+"literal></link> expõe uma <literal>List</literal> como um JSF "
+"<literal>ListDataModel</literal>. Isto facilita a implementação de listas clicáveis para a procura das telas. Neste caso, a lista de hotéis é exposta à página como um <literal>ListDataModel</literal> nos <literal>hotels</literal> de variável nomeada de conversação."
+
+#. Tag: para
+#: Tutorial.xml:992
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Remove</literal> annotation specifies that a "
+"stateful session bean should be removed and its state destroyed after "
+"invocation of the annotated method. In Seam, all stateful session beans "
+"should define a method marked <literal>@Destroy @Remove</literal>. This is "
+"the EJB remove method that will be called when Seam destroys the session "
+"context. Actually, the <link linkend=\"destroy-annotation"
+"\"><literal>@Destroy</literal></link> annotation is of more general "
+"usefulness, since it can be used for any kind of cleanup that should happen "
+"when any Seam context ends. If you don&#39;t have an <literal>@Destroy "
+"@Remove</literal> method, state will leak and you will suffer performance "
+"problems."
+msgstr ""
+"A anotação <literal>@Remove</literal> de padrão EJB especifica que um bean "
+"de sessão com estado deve ser removido e seu estado destruído após a "
+"invocação do método anotado. Em Seam, todos os beans de sessão com estado "
+"devem definir o método <literal>@Destroy @Remove</literal> marcado. Este é o "
+"método de remoção EJB que será chamado quando o Seam destruir o contexto de "
+"sessão. Na realidade, a anotação <link linkend=\"destroy-annotation"
+"\"><literal>@Destroy</literal></link> é de um maior proveito, uma vez que "
+"ela pode ser usada para qualquer tipo de limpeza da qual deve ocorrer quando "
+"qualquer contexto Seam encerrar. Caso você não possua o método "
+"<literal>@Destroy @Remove</literal>, o estado irá vazar e você terá "
+"problemas de desempenho. "
+
+#. Tag: para
+#: Tutorial.xml:999
+#, no-c-format
+msgid ""
+"The main page of the application is a Facelets page. Let&#39;s look at the "
+"fragment which relates to searching for hotels:"
+msgstr ""
+"A página principal do aplicativo é a página Facelets. Vamos observar o "
+"fragmento que relata a procura por hotéis:"
+
+#. Tag: programlisting
+#: Tutorial.xml:1009
+#, no-c-format
+msgid ""
+"&lt;div class=\"section\"&gt;\n"
+"&lt;h:form&gt;\n"
+"  \n"
+"  &lt;span class=\"errors\"&gt;\n"
+"    &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"  &lt;/span&gt;\n"
+"    \n"
+"  &lt;h1&gt;Search Hotels&lt;/h1&gt;\n"
+"  &lt;fieldset&gt; \n"
+"     &lt;h:inputText value=\"#{hotelSearch.searchString}\" style=\"width: "
+"165px;\"&gt;\n"
+"        &lt;a:support event=\"onkeyup\" actionListener=\"#{hotelSearch.find}"
+"\" \n"
+"                   reRender=\"searchResults\" /&gt;\n"
+"     &lt;/h:inputText&gt;\n"
+"     &#160;\n"
+"     &lt;a:commandButton value=\"Find Hotels\" action=\"#{hotelSearch.find}"
+"\" \n"
+"                      styleClass=\"button\" reRender=\"searchResults\"/&gt;\n"
+"     &#160;\n"
+"     &lt;a:status&gt;\n"
+"        &lt;f:facet name=\"start\"&gt;\n"
+"           &lt;h:graphicImage value=\"/img/spinner.gif\"/&gt;\n"
+"        &lt;/f:facet&gt;\n"
+"     &lt;/a:status&gt;\n"
+"     &lt;br/&gt;\n"
+"     &lt;h:outputLabel for=\"pageSize\"&gt;Maximum results:&lt;/h:"
+"outputLabel&gt;&#160;\n"
+"     &lt;h:selectOneMenu value=\"#{hotelSearch.pageSize}\" id=\"pageSize"
+"\"&gt;\n"
+"        &lt;f:selectItem itemLabel=\"5\" itemValue=\"5\"/&gt;\n"
+"        &lt;f:selectItem itemLabel=\"10\" itemValue=\"10\"/&gt;\n"
+"        &lt;f:selectItem itemLabel=\"20\" itemValue=\"20\"/&gt;\n"
+"     &lt;/h:selectOneMenu&gt;\n"
+"  &lt;/fieldset&gt;\n"
+"    \n"
+"&lt;/h:form&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;a:outputPanel id=\"searchResults\"&gt;\n"
+"  &lt;div class=\"section\"&gt;\n"
+"  &lt;h:outputText value=\"No Hotels Found\" \n"
+"                rendered=\"#{hotels != null and hotels.rowCount==0}\"/&gt;\n"
+"  &lt;h:dataTable value=\"#{hotels}\" var=\"hot\" rendered=\"#{hotels."
+"rowCount&gt;0}\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Name&lt;/f:facet&gt;\n"
+"      #{hot.name}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Address&lt;/f:facet&gt;\n"
+"      #{hot.address}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;City, State&lt;/f:facet&gt;\n"
+"      #{hot.city}, #{hot.state}, #{hot.country}\n"
+"    &lt;/h:column&gt; \n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Zip&lt;/f:facet&gt;\n"
+"      #{hot.zip}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"      &lt;s:link value=\"View Hotel\" action=\"#{hotelBooking.selectHotel"
+"(hot)}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"  &lt;/h:dataTable&gt;\n"
+"  &lt;s:link value=\"More results\" action=\"#{hotelSearch.nextPage}\" \n"
+"          rendered=\"#{hotelSearch.nextPageAvailable}\"/&gt;\n"
+"  &lt;/div&gt;\n"
+"&lt;/a:outputPanel&gt;"
+msgstr ""
+"&lt;div class=\"section\"&gt;\n"
+"&lt;h:form&gt;\n"
+"  \n"
+"  &lt;span class=\"errors\"&gt;\n"
+"    &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"  &lt;/span&gt;\n"
+"    \n"
+"  &lt;h1&gt;Search Hotels&lt;/h1&gt;\n"
+"  &lt;fieldset&gt; \n"
+"     &lt;h:inputText value=\"#{hotelSearch.searchString}\" style=\"width: "
+"165px;\"&gt;\n"
+"        &lt;a:support event=\"onkeyup\" actionListener=\"#{hotelSearch.find}"
+"\" \n"
+"                   reRender=\"searchResults\" /&gt;\n"
+"     &lt;/h:inputText&gt;\n"
+"     &#160;\n"
+"     &lt;a:commandButton value=\"Find Hotels\" action=\"#{hotelSearch.find}"
+"\" \n"
+"                      styleClass=\"button\" reRender=\"searchResults\"/&gt;\n"
+"     &#160;\n"
+"     &lt;a:status&gt;\n"
+"        &lt;f:facet name=\"start\"&gt;\n"
+"           &lt;h:graphicImage value=\"/img/spinner.gif\"/&gt;\n"
+"        &lt;/f:facet&gt;\n"
+"     &lt;/a:status&gt;\n"
+"     &lt;br/&gt;\n"
+"     &lt;h:outputLabel for=\"pageSize\"&gt;Maximum results:&lt;/h:"
+"outputLabel&gt;&#160;\n"
+"     &lt;h:selectOneMenu value=\"#{hotelSearch.pageSize}\" id=\"pageSize"
+"\"&gt;\n"
+"        &lt;f:selectItem itemLabel=\"5\" itemValue=\"5\"/&gt;\n"
+"        &lt;f:selectItem itemLabel=\"10\" itemValue=\"10\"/&gt;\n"
+"        &lt;f:selectItem itemLabel=\"20\" itemValue=\"20\"/&gt;\n"
+"     &lt;/h:selectOneMenu&gt;\n"
+"  &lt;/fieldset&gt;\n"
+"    \n"
+"&lt;/h:form&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;a:outputPanel id=\"searchResults\"&gt;\n"
+"  &lt;div class=\"section\"&gt;\n"
+"  &lt;h:outputText value=\"No Hotels Found\" \n"
+"                rendered=\"#{hotels != null and hotels.rowCount==0}\"/&gt;\n"
+"  &lt;h:dataTable value=\"#{hotels}\" var=\"hot\" rendered=\"#{hotels."
+"rowCount&gt;0}\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Name&lt;/f:facet&gt;\n"
+"      #{hot.name}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Address&lt;/f:facet&gt;\n"
+"      #{hot.address}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;City, State&lt;/f:facet&gt;\n"
+"      #{hot.city}, #{hot.state}, #{hot.country}\n"
+"    &lt;/h:column&gt; \n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Zip&lt;/f:facet&gt;\n"
+"      #{hot.zip}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"      &lt;s:link value=\"View Hotel\" action=\"#{hotelBooking.selectHotel"
+"(hot)}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"  &lt;/h:dataTable&gt;\n"
+"  &lt;s:link value=\"More results\" action=\"#{hotelSearch.nextPage}\" \n"
+"          rendered=\"#{hotelSearch.nextPageAvailable}\"/&gt;\n"
+"  &lt;/div&gt;\n"
+"&lt;/a:outputPanel&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1012
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:support&gt;</literal> tag allows a JSF action "
+"event listener to be called by asynchronous <literal>XMLHttpRequest</"
+"literal> when a JavaScript event like <literal>onkeyup</literal> occurs. "
+"Even better, the <literal>reRender</literal> attribute lets us render a "
+"fragment of the JSF page and perform a partial page update when the "
+"asynchronous response is received."
+msgstr ""
+"O caracter <literal>&lt;a:support&gt;</literal> Ajax4JSF permite que um "
+"JSF action event listener seja chamado pela <literal>XMLHttpRequest</"
+"literal> assíncrona quando o evento JavaScript como <literal>onkeyup</"
+"literal> ocorrer. Além disso, o atributo <literal>reRender</literal> nos "
+"permite renderizar um fragmento da página JSF e executar a atualização "
+"parcial da página, uma vez que a resposta assíncrona é recebida."
+
+#. Tag: para
+#: Tutorial.xml:1017
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:status&gt;</literal> tag lets us display a "
+"cheesy annimated image while we wait for asynchronous requests to return."
+msgstr ""
+"O caracter <literal>&lt;a:status&gt;</literal> Ajax4JSF nos permite exibir "
+"uma imagem animada enquanto esperamos pelo retorno das solicitações "
+"assíncronas."
+
+#. Tag: para
+#: Tutorial.xml:1022
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:outputPanel&gt;</literal> tag defines a region "
+"of the page which can be re-rendered by an asynchronous request."
+msgstr ""
+"O caracter <literal>&lt;a:outputPanel&gt;</literal> Ajax4JSF define a região "
+"da página que pode ser renderizada novamente pela solicitação assíncrona."
+
+#. Tag: para
+#: Tutorial.xml:1027
+#, no-c-format
+msgid ""
+"The Seam <literal>&lt;s:link&gt;</literal> tag lets us attach a JSF action "
+"listener to an ordinary (non-JavaScript) HTML link. The advantage of this "
+"over the standard JSF <literal>&lt;h:commandLink&gt;</literal> is that it "
+"preserves the operation of \"open in new window\" and \"open in new tab\". "
+"Also notice that we use a method binding with a parameter: <literal>#"
+"{hotelBooking.selectHotel(hot)}</literal>. This is not possible in the "
+"standard Unified EL, but Seam provides an extension to the EL that lets you "
+"use parameters on any method binding expression."
+msgstr ""
+"O caracter <literal>&lt;s:link&gt;</literal> Seam nos permite anexar um JSF "
+"action listener a um link (non-JavaScript) HTML normal. A vantagem disto em "
+"relação ao <literal>&lt;h:commandLink&gt;</literal> de padrão JSF, é que ele "
+"preserva a operação de \"abrir uma nova janela\" e \"abrir uma nova tab\". "
+"Perceba também que estamos usando o método binding com o parâmetro <literal>#"
+"{hotelBooking.selectHotel(hot)}</literal>. Isto não é possível no padrão "
+"unificado EL, mas o Seam fornece uma extensão ao EL, da qual permite que você use "
+"parâmetros em qualquer expressão de método binding."
+
+#. Tag: para
+#: Tutorial.xml:1034
+#, no-c-format
+msgid ""
+"This page displays the search results dynamically as we type, and lets us "
+"choose a hotel and pass it to the <literal>selectHotel()</literal> method of "
+"the <literal>HotelBookingAction</literal>, which is where the "
+"<emphasis>really</emphasis> interesting stuff is going to happen."
+msgstr ""
+"Esta página exibe os resultados de busca rápida, além de nos permitir escolher "
+"o hotel e passá-lo ao método <literal>selectHotel()</literal> do "
+"<literal>HotelBookingAction</literal>, onde procedimentos <emphasis>muito</"
+"emphasis> interessantes irão ocorrer."
+
+#. Tag: para
+#: Tutorial.xml:1037
+#, no-c-format
+msgid ""
+"Now lets see how the booking example application uses a conversation-scoped "
+"stateful session bean to achieve a natural cache of persistent data related "
+"to the conversation. The following code example is pretty long. But if you "
+"think of it as a list of scripted actions that implement the various steps "
+"of the conversation, it&#39;s understandable. Read the class from top to "
+"bottom, as if it were a story."
+msgstr ""
+"Vamos observar agora como o aplicativo de exemplo de reserva usa um bean de "
+"sessão com estado de escopo de conversação, com o objetivo de atingir um cache natural de "
+"dados de persistência relacionados à conversação. O exemplo do código "
+"seguinte é bastante longo. É compreensível que você pense a respeito disto "
+"como uma lista de scripted actions das quais implementam diversos passos da "
+"conversação. Leia a classe do topo ao rodapé como se isto fosse uma estória."
+
+#. Tag: programlisting
+#: Tutorial.xml:1048
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"hotelBooking\")\n"
+"@Restrict(\"#{identity.loggedIn}\")\n"
+"public class HotelBookingAction implements HotelBooking\n"
+"{\n"
+"   \n"
+"   @PersistenceContext(type=EXTENDED)\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @In \n"
+"   private User user;\n"
+"   \n"
+"   @In(required=false) @Out\n"
+"   private Hotel hotel;\n"
+"   \n"
+"   @In(required=false) \n"
+"   @Out(required=false)\n"
+"   private Booking booking;\n"
+"     \n"
+"   @In\n"
+"   private FacesMessages facesMessages;\n"
+"      \n"
+"   @In\n"
+"   private Events events;\n"
+"   \n"
+"   @Logger \n"
+"   private Log log;\n"
+"   \n"
+"   @Begin\n"
+"   public String selectHotel(Hotel selectedHotel)\n"
+"   {\n"
+"      hotel = em.merge(selectedHotel);\n"
+"      return \"hotel\";\n"
+"   }\n"
+"   \n"
+"   public String bookHotel()\n"
+"   {      \n"
+"      booking = new Booking(hotel, user);\n"
+"      Calendar calendar = Calendar.getInstance();\n"
+"      booking.setCheckinDate( calendar.getTime() );\n"
+"      calendar.add(Calendar.DAY_OF_MONTH, 1);\n"
+"      booking.setCheckoutDate( calendar.getTime() );\n"
+"      \n"
+"      return \"book\";\n"
+"   }\n"
+"\n"
+"   public String setBookingDetails()\n"
+"   {\n"
+"      if (booking==null || hotel==null) return \"main\";\n"
+"      if ( !booking.getCheckinDate().before( booking.getCheckoutDate() ) )\n"
+"      {\n"
+"         facesMessages.add(\"Check out date must be later than check in date"
+"\");\n"
+"         return null;\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return \"confirm\";\n"
+"      }\n"
+"   }\n"
+"\n"
+"   @End\n"
+"   public String confirm()\n"
+"   {\n"
+"      if (booking==null || hotel==null) return \"main\";\n"
+"      em.persist(booking);\n"
+"      facesMessages.add\n"
+"       (\"Thank you, #{user.name}, your confimation number for #{hotel.name} "
+"is #{booking.id}\");\n"
+"      log.info(\"New booking: #{booking.id} for #{user.username}\");\n"
+"      events.raiseEvent(\"bookingConfirmed\");\n"
+"      return \"confirmed\";\n"
+"   }\n"
+"   \n"
+"   @End\n"
+"   public String cancel()\n"
+"   {\n"
+"      return \"main\";\n"
+"   }\n"
+"   \n"
+"   @Destroy @Remove\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+"@Stateful\n"
+"@Name(\"hotelBooking\")\n"
+"@Restrict(\"#{identity.loggedIn}\")\n"
+"public class HotelBookingAction implements HotelBooking\n"
+"{\n"
+"   \n"
+"   @PersistenceContext(type=EXTENDED)\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @In \n"
+"   private User user;\n"
+"   \n"
+"   @In(required=false) @Out\n"
+"   private Hotel hotel;\n"
+"   \n"
+"   @In(required=false) \n"
+"   @Out(required=false)\n"
+"   private Booking booking;\n"
+"     \n"
+"   @In\n"
+"   private FacesMessages facesMessages;\n"
+"      \n"
+"   @In\n"
+"   private Events events;\n"
+"   \n"
+"   @Logger \n"
+"   private Log log;\n"
+"   \n"
+"   @Begin\n"
+"   public String selectHotel(Hotel selectedHotel)\n"
+"   {\n"
+"      hotel = em.merge(selectedHotel);\n"
+"      return \"hotel\";\n"
+"   }\n"
+"   \n"
+"   public String bookHotel()\n"
+"   {      \n"
+"      booking = new Booking(hotel, user);\n"
+"      Calendar calendar = Calendar.getInstance();\n"
+"      booking.setCheckinDate( calendar.getTime() );\n"
+"      calendar.add(Calendar.DAY_OF_MONTH, 1);\n"
+"      booking.setCheckoutDate( calendar.getTime() );\n"
+"      \n"
+"      return \"book\";\n"
+"   }\n"
+"\n"
+"   public String setBookingDetails()\n"
+"   {\n"
+"      if (booking==null || hotel==null) return \"main\";\n"
+"      if ( !booking.getCheckinDate().before( booking.getCheckoutDate() ) )\n"
+"      {\n"
+"         facesMessages.add(\"Check out date must be later than check in date"
+"\");\n"
+"         return null;\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return \"confirm\";\n"
+"      }\n"
+"   }\n"
+"\n"
+"   @End\n"
+"   public String confirm()\n"
+"   {\n"
+"      if (booking==null || hotel==null) return \"main\";\n"
+"      em.persist(booking);\n"
+"      facesMessages.add\n"
+"       (\"Thank you, #{user.name}, your confimation number for #{hotel.name} "
+"is #{booking.id}\");\n"
+"      log.info(\"New booking: #{booking.id} for #{user.username}\");\n"
+"      events.raiseEvent(\"bookingConfirmed\");\n"
+"      return \"confirmed\";\n"
+"   }\n"
+"   \n"
+"   @End\n"
+"   public String cancel()\n"
+"   {\n"
+"      return \"main\";\n"
+"   }\n"
+"   \n"
+"   @Destroy @Remove\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:1051
+#, no-c-format
+msgid ""
+"This bean uses an EJB3 <emphasis>extended persistence context</emphasis>, so "
+"that any entity instances remain managed for the whole lifecycle of the "
+"stateful session bean."
+msgstr ""
+"Este bean usa um <emphasis>contexto de persistência estendido</emphasis> EJB3, "
+"para que qualquer instância de entidade permaneça gerenciada por todo ciclo de vida do bean de sessão com estado."
+
+#. Tag: para
+#: Tutorial.xml:1056
+#, no-c-format
+msgid ""
+"The <link linkend=\"out-annotation\"><literal>@Out</literal></link> "
+"annotation declares that an attribute value is <emphasis>outjected</"
+"emphasis> to a context variable after method invocations. In this case, the "
+"context variable named <literal>hotel</literal> will be set to the value of "
+"the <literal>hotel</literal> instance variable after every action listener "
+"invocation completes."
+msgstr ""
+"A anotação <link linkend=\"out-annotation\"><literal>@Out</literal></link> "
+"declara que o valor de um atributo é <emphasis>outjected</emphasis> a uma "
+"variável de contexto, após as invocações de método. Neste caso, o <literal>hotel</"
+"literal> de variável nomeada de contexto será configurado ao valor da "
+"variável da instância do <literal>hotel</literal>, após cada invocação action "
+"listener ser completada."
+
+#. Tag: para
+#: Tutorial.xml:1061
+#, no-c-format
+msgid ""
+"The <link linkend=\"begin-annotation\"><literal>@Begin</literal></link> "
+"annotation specifies that the annotated method begins a <emphasis>long-"
+"running conversation</emphasis>, so the current conversation context will "
+"not be destroyed at the end of the request. Instead, it will be reassociated "
+"with every request from the current window, and destroyed either by timeout "
+"due to conversation inactivity or invocation of a matching <literal>@End</"
+"literal> method."
+msgstr ""
+"A anotação <link linkend=\"begin-annotation\"><literal>@Begin</literal></"
+"link> especifica que o método anotado inicializa uma <emphasis>conversação "
+"de longa execução</emphasis>, de forma que o contexto de conversação atual "
+"não será destruído no final de cada solicitação. Ao invés disto, ele será re-"
+"associado com cada solicitação da janela atual e destruída tanto por tempo "
+"expirado, conversação inativa ou invocação de um método <literal>@End</"
+"literal> de combinação."
+
+#. Tag: para
+#: Tutorial.xml:1066
+#, no-c-format
+msgid ""
+"The <link linkend=\"end-annotation\"><literal>@End</literal></link> "
+"annotation specifies that the annotated method ends the current long-running "
+"conversation, so the current conversation context will be destroyed at the "
+"end of the request."
+msgstr ""
+"A anotação <link linkend=\"end-annotation\"><literal>@End</literal></link> "
+"especifica que o método anotado encerre a conversação de longa duração "
+"atual. Desta forma, o contexto de conversação atual será destruído no final "
+"de cada solicitação."
+
+#. Tag: para
+#: Tutorial.xml:1071
+#, no-c-format
+msgid ""
+"This EJB remove method will be called when Seam destroys the conversation "
+"context. Don&#39;t ever forget to define this method!"
+msgstr ""
+"O método de remoção EJB será chamado quando o Seam destruir o contexto de "
+"conversação. Lembre-se de definir este método."
+
+#. Tag: para
+#: Tutorial.xml:1078
+#, no-c-format
+msgid ""
+"<literal>HotelBookingAction</literal> contains all the action listener "
+"methods that implement selection, booking and booking confirmation, and "
+"holds state related to this work in its instance variables. We think you&#39;"
+"ll agree that this code is much cleaner and simpler than getting and setting "
+"<literal>HttpSession</literal> attributes."
+msgstr ""
+"A <literal>HotelBookingAction</literal> contém todos os métodos action "
+"listener que implementam a seleção, reserva e confirmação de reserva, além "
+"de reter o estado relatado a este trabalho nas próprias variáveis de "
+"instância. Acreditamos que você irá concordar que este código é muito mais "
+"claro e simples do que obter e configurar os atributos <literal>HttpSession</"
+"literal>."
+
+#. Tag: para
+#: Tutorial.xml:1081
+#, no-c-format
+msgid ""
+"Even better, a user can have multiple isolated conversations per login "
+"session. Try it! Log in, run a search, and navigate to different hotel pages "
+"in multiple browser tabs. You&#39;ll be able to work on creating two "
+"different hotel reservations at the same time. If you leave any one "
+"conversation inactive for long enough, Seam will eventually time out that "
+"conversation and destroy its state. If, after ending a conversation, you "
+"backbutton to a page of that conversation and try to perform an action, Seam "
+"will detect that the conversation was already ended, and redirect you to the "
+"search page."
+msgstr ""
+"Adicionado a isto, o usuário pode ter conversações isoladas múltiplas por "
+"sessão de logon. Faça uma tentativa. Execute o logon, a busca e navegue as "
+"diferentes páginas de hotéis em tabs de navegador múltiplo. Você irá estar "
+"apto a trabalhar na criação de duas reservas de hotéis diferentes ao mesmo "
+"tempo. Caso você deixe qualquer conversação inativa por um período longo, o "
+"Seam irá eventualmente dar o intervalo à conversação e destruirá seu "
+"estado. Caso, após o término da conversação, você retornar à página daquela "
+"conversação e tentar desempenhar uma action, o Seam detectará que a "
+"conversação já foi terminada e o redirecionará à página de busca."
+
+#. Tag: title
+#: Tutorial.xml:1087
+#, no-c-format
+msgid "The Seam UI control library"
+msgstr "A biblioteca de controle Seam UI"
+
+#. Tag: para
+#: Tutorial.xml:1088
+#, no-c-format
+msgid ""
+"If you check inside the WAR file for the booking application, you&#39;ll "
+"find <literal>seam-ui.jar</literal> in the <literal>WEB-INF/lib</literal> "
+"directory. This package contains a number of JSF custom controls that "
+"integrate with Seam. The booking application uses the <literal>&lt;s:link&gt;"
+"</literal> control for navigation from the search screen to the hotel page:"
+msgstr ""
+"Caso você checar dentro do arquivo WAR do aplicativo de reserva, você "
+"encontrará <literal>seam-ui.jar</literal> no diretório <literal>WEB-INF/lib</"
+"literal>. Este pacote contém um número de controles de personalização JSF "
+"que integra o Seam. O aplicativo de reserva usa o controle <literal>&lt;s:"
+"link&gt;</literal> para navegação a partir da tela de busca à página do "
+"hotel:"
+
+#. Tag: programlisting
+#: Tutorial.xml:1091
+#, no-c-format
+msgid "&lt;s:link value=\"View Hotel\" action=\"#{hotelBooking.selectHotel}\"/&gt;"
+msgstr "&lt;s:link value=\"View Hotel\" action=\"#{hotelBooking.selectHotel}\"/&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1092
+#, no-c-format
+msgid ""
+"The use of <literal>&lt;s:link&gt;</literal> here allows us to attach an "
+"action listener to a HTML link without breaking the browser&#39;s \"open in "
+"new window\" feature. The standard JSF <literal>&lt;h:commandLink&gt;</"
+"literal> does not work with \"open in new window\". We&#39;ll see later that "
+"<literal>&lt;s:link&gt;</literal> also offers a number of other useful "
+"features, including conversation propagation rules."
+msgstr ""
+"O uso do <literal>&lt;s:link&gt;</literal> nos permite anexar um action "
+"listener ao link HTML sem falhar o recurso \"abrir em uma nova janela\" do "
+"navegador. O <literal>&lt;h:commandLink&gt;</literal> JSF padrão não "
+"funciona com \"abrir uma nova janela\". Verificaremos mais adiante que o "
+"<literal>&lt;s:link&gt;</literal> oferece também um número de outros "
+"recursos úteis, incluindo as regras de propagação de conversação."
+
+#. Tag: para
+#: Tutorial.xml:1095
+#, no-c-format
+msgid ""
+"The booking application uses some other Seam and Ajax4JSF controls, "
+"especially on the <literal>/book.xhtml</literal> page. We won&#39;t get into "
+"the details of those controls here, but if you want to understand this code, "
+"please refer to the chapter covering Seam&#39;s functionality for JSF form "
+"validation."
+msgstr ""
+"O aplicativo de reserva usa alguns outros controles Seam e Ajax4JSF, "
+"especialmente na página <literal>/book.xhtml</literal>. Nós não entraremos "
+"em detalhes destes controles, mas se você quiser entender este código, "
+"consulte o capítulo de funcionalidade Seam para validação do formulário JSF."
+
+#. Tag: title
+#: Tutorial.xml:1101
+#, no-c-format
+msgid "The Seam Debug Page"
+msgstr "Página do Seam Debug"
+
+#. Tag: para
+#: Tutorial.xml:1102
+#, no-c-format
+msgid ""
+"The WAR also includes <literal>seam-debug.jar</literal>. If this jar is "
+"deployed in <literal>WEB-INF/lib</literal>, along with the Facelets, and if "
+"you set the following Seam property in <literal>web.xml</literal> or "
+"<literal>seam.properties</literal>:"
+msgstr ""
+"O WAR também inclui <literal>seam-debug.jar</literal>. Caso esta jarra seja "
+"implementada na <literal>WEB-INF/lib</literal>, juntamente com os Facelets, "
+"e se você configurar a seguinte propriedade Seam em <literal>web.xml</"
+"literal> ou <literal>seam.properties</literal>:"
+
+#. Tag: programlisting
+#: Tutorial.xml:1105
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;org.jboss.seam.core.init.debug&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;true&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;org.jboss.seam.core.init.debug&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;true&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1106
+#, no-c-format
+msgid ""
+"Then the Seam debug page will be available. This page lets you browse and "
+"inspect the Seam components in any of the Seam contexts associated with your "
+"current login session. Just point your browser at <ulink url=\"http://"
+"localhost:8080/seam-booking/debug.seam\"><literal>http://localhost:8080/seam-"
+"booking/debug.seam</literal></ulink>."
+msgstr ""
+"Então a página Seam debug estará disponível. Esta página permite que você "
+"navegue e inspecione os componentes Seam em qualquer um dos contextos "
+"associados com sua sessão de logon atual. Apenas inclua em seu navegador o "
+"<ulink url=\"http://localhost:8080/seam-booking/debug.seam\"><literal>http://"
+"localhost:8080/seam-booking/debug.seam</literal></ulink>"
+
+#. Tag: title
+#: Tutorial.xml:1122
+#, no-c-format
+msgid "A complete application featuring Seam and jBPM: the DVD Store example"
+msgstr "Um aplicativo completo exibindo o Seam e o JBPM: o exemplo do DVD Store"
+
+#. Tag: para
+#: Tutorial.xml:1123
+#, no-c-format
+msgid ""
+"The DVD Store demo application shows the practical usage of jBPM for both "
+"task management and pageflow."
+msgstr ""
+"O aplicativo DVD Store demo apresenta o uso prático do JBPM para tanto o "
+"gerenciamento de tarefa como pageflow."
+
+#. Tag: para
+#: Tutorial.xml:1126
+#, no-c-format
+msgid ""
+"The user screens take advantage of a jPDL pageflow to implement searching "
+"and shopping cart functionality."
+msgstr ""
+"As telas do usuários tiram proveito do JPDL pageflow para implementar a "
+"funcionalidade cart de busca e compra."
+
+#. Tag: screeninfo
+#: Tutorial.xml:1129 Tutorial.xml:1140 Tutorial.xml:1166
+#, no-c-format
+msgid "DVD Store example"
+msgstr "O exemplo do DVD Store"
+
+#. Tag: para
+#: Tutorial.xml:1137
+#, no-c-format
+msgid ""
+"The administration screens take use jBPM to manage the approval and shipping "
+"cycle for orders. The business process may even be changed dynamically, by "
+"selecting a different process definition!"
+msgstr ""
+"As telas de administração usam o JBPM para gerenciar a aprovação e clico de "
+"remessa dos pedidos. O processo comercial pode ainda mudar "
+"dinamicamente, selecionando uma definição de processo diferente."
+
+#. Tag: para
+#: Tutorial.xml:1151
+#, no-c-format
+msgid "Look in the <literal>dvdstore</literal> directory."
+msgstr "Observe o diretório <literal>dvdstore</literal>."
+
+#. Tag: title
+#: Tutorial.xml:1157
+#, no-c-format
+msgid ""
+"A complete application featuring Seam workspace management: the Issue "
+"Tracker example"
+msgstr ""
+"Um aplicativo completo exibindo o gerenciador de espaço de trabalho Seam: a "
+"amostra Issue Tracker"
+
+#. Tag: para
+#: Tutorial.xml:1158
+#, no-c-format
+msgid ""
+"The Issue Tracker demo shows off Seam&#39;s workspace management "
+"functionality: the conversation switcher, conversation list and breadcrumbs."
+msgstr ""
+"O Issue Tracker demo apresenta a funcionalidade do gerenciamento do espaço "
+"de trabalho do Seam: o interruptor de conversação, a lista de conversação e "
+"breadcrumbs."
+
+#. Tag: para
+#: Tutorial.xml:1163
+#, no-c-format
+msgid ""
+"To log into the Issue Tracker demo you must provide a username and password. "
+"You can find this in the <filename>resources/import.sql</filename> file or "
+"use \"gavin\" and \"foobar\" for username and password respectively."
+msgstr ""
+"Para realizar o logon no Issue Tracker demo você deverá providenciar um nome "
+"do usuário e uma senha. Você pode encontrar isto no arquivo "
+"<filename>resources/import.sql</filename> ou usar \"gavin\" e \"foobar\" "
+"para o nome do usuário e senha respectivamente."
+
+#. Tag: para
+#: Tutorial.xml:1177
+#, no-c-format
+msgid "Look in the <literal>issues</literal> directory."
+msgstr "Observe o diretório <literal>issues</literal>."
+
+#. Tag: title
+#: Tutorial.xml:1183
+#, no-c-format
+msgid "An example of Seam with Hibernate: the Hibernate Booking example"
+msgstr "Uma amostra do Seam com Hibernate: a amostra da Reserva Hibernate "
+
+#. Tag: para
+#: Tutorial.xml:1184
+#, no-c-format
+msgid ""
+"The Hibernate Booking demo is a straight port of the Booking demo to an "
+"alternative architecture that uses Hibernate for persistence and JavaBeans "
+"instead of session beans."
+msgstr ""
+"O Hibernate Booking demo é um portal certo do Booking demo à uma arquitetura "
+"alternativa que usa Hibernate para persistência e JavaBeans, ao invés de "
+"beans de sessão."
+
+#. Tag: para
+#: Tutorial.xml:1190
+#, no-c-format
+msgid "Look in the <literal>hibernate</literal> directory."
+msgstr "Observe agora o diretório <literal>hibernate</literal>."
+
+#. Tag: title
+#: Tutorial.xml:1196
+#, no-c-format
+msgid "A RESTful Seam application: the Blog example"
+msgstr "Um aplicativo RESTful Seam: a amostra Blog"
+
+#. Tag: para
+#: Tutorial.xml:1197
+#, no-c-format
+msgid ""
+"Seam makes it very easy to implement applications which keep state on the "
+"server-side. However, server-side state is not always appropriate, "
+"especially in for functionality that serves up <emphasis>content</emphasis>. "
+"For this kind of problem we often need to let the user bookmark pages and "
+"have a relatively stateless server, so that any page can be accessed at any "
+"time, via the bookmark. The Blog example shows how to a implement RESTful "
+"application using Seam. Every page of the application can be bookmarked, "
+"including the search results page."
+msgstr ""
+"O Seam facilita a implementação de aplicativos que mantém o estado no lado "
+"do servidor. No entanto, o estado lado do servidor não é sempre apropriado, "
+"especialmente numa funcionalidade que serve o <emphasis>conteúdo</emphasis>. "
+"Para este tipo de problema precisamos freqüentemente informar ao usuário das "
+"páginas demarcadas e possuir um servidor relativamente sem estado. Desta "
+"forma, qualquer página pode ser acessada a qualquer momento , através do "
+"demarcador. A amostra Blog apresenta como implementar um aplicativo RESTful "
+"usando Seam. Cada página do aplicativo pode ser demarcada, incluindo a "
+"página de resultados de busca. "
+
+#. Tag: screeninfo
+#: Tutorial.xml:1200
+#, no-c-format
+msgid "Blog example"
+msgstr "Amostra blog"
+
+#. Tag: para
+#: Tutorial.xml:1208
+#, no-c-format
+msgid ""
+"The Blog example demonstrates the use of \"pull\"-style MVC, where instead "
+"of using action listener methods to retrieve data and prepare the data for "
+"the view, the view pulls data from components as it is being rendered."
+msgstr ""
+"A amostra Blog demonstra o uso do \"pull\"-style MVC, onde ao invés de usar "
+"os métodos action listener para recuperar dados e preparar dados para "
+"visualização, a visualização obtém dados de componentes, uma vez que eles "
+"foram renderizados."
+
+#. Tag: title
+#: Tutorial.xml:1212
+#, no-c-format
+msgid "Using \"pull\"-style MVC"
+msgstr "Usando \"pull\"-style MVC"
+
+#. Tag: para
+#: Tutorial.xml:1213
+#, no-c-format
+msgid ""
+"This snippet from the <literal>index.xhtml</literal> facelets page displays "
+"a list of recent blog entries:"
+msgstr ""
+"Este fragmento de páginas de facelets <literal>index.xhtml</literal> exibe "
+"uma lista de entradas recentes de blog: "
+
+#. Tag: programlisting
+#: Tutorial.xml:1216
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{blog.recentBlogEntries}\" var=\"blogEntry\" rows="
+"\"3\"&gt;\n"
+"   &lt;h:column&gt;\n"
+"      &lt;div class=\"blogEntry\"&gt;\n"
+"         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"         &lt;div&gt;\n"
+"            &lt;h:outputText escape=\"false\" \n"
+"                  value=\"#{blogEntry.excerpt==null ? blogEntry.body : "
+"blogEntry.excerpt}\"/&gt;\n"
+"         &lt;/div&gt;\n"
+"         &lt;p&gt;\n"
+"            &lt;h:outputLink value=\"entry.seam\" rendered=\"#{blogEntry."
+"excerpt!=null}\"&gt;\n"
+"               &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/"
+"&gt;\n"
+"               Read more...\n"
+"            &lt;/h:outputLink&gt;\n"
+"         &lt;/p&gt;\n"
+"         &lt;p&gt;\n"
+"            [Posted on \n"
+"            &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"               &lt;f:convertDateTime timeZone=\"#{blog.timeZone}\" locale=\"#"
+"{blog.locale}\" \n"
+"                                     type=\"both\"/&gt;\n"
+"            &lt;/h:outputText&gt;]\n"
+"            &#160;\n"
+"            &lt;h:outputLink value=\"entry.seam\"&gt;[Link]\n"
+"               &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/"
+"&gt;\n"
+"            &lt;/h:outputLink&gt;\n"
+"         &lt;/p&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+"&lt;h:dataTable value=\"#{blog.recentBlogEntries}\" var=\"blogEntry\" rows="
+"\"3\"&gt;\n"
+"   &lt;h:column&gt;\n"
+"      &lt;div class=\"blogEntry\"&gt;\n"
+"         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"         &lt;div&gt;\n"
+"            &lt;h:outputText escape=\"false\" \n"
+"                  value=\"#{blogEntry.excerpt==null ? blogEntry.body : "
+"blogEntry.excerpt}\"/&gt;\n"
+"         &lt;/div&gt;\n"
+"         &lt;p&gt;\n"
+"            &lt;h:outputLink value=\"entry.seam\" rendered=\"#{blogEntry."
+"excerpt!=null}\"&gt;\n"
+"               &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/"
+"&gt;\n"
+"               Read more...\n"
+"            &lt;/h:outputLink&gt;\n"
+"         &lt;/p&gt;\n"
+"         &lt;p&gt;\n"
+"            [Posted on \n"
+"            &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"               &lt;f:convertDateTime timeZone=\"#{blog.timeZone}\" locale=\"#"
+"{blog.locale}\" \n"
+"                                     type=\"both\"/&gt;\n"
+"            &lt;/h:outputText&gt;]\n"
+"            &#160;\n"
+"            &lt;h:outputLink value=\"entry.seam\"&gt;[Link]\n"
+"               &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/"
+"&gt;\n"
+"            &lt;/h:outputLink&gt;\n"
+"         &lt;/p&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1217
+#, no-c-format
+msgid ""
+"If we navigate to this page from a bookmark, how does the data used by the "
+"<literal>&lt;h:dataTable&gt;</literal> actually get initialized? Well, what "
+"happens is that the <literal>Blog</literal> is retrieved lazily&mdash;"
+"\"pulled\"&mdash;when needed, by a Seam component named <literal>blog</"
+"literal>. This is the opposite flow of control to what is usual in "
+"traditional web action-based frameworks like Struts."
+msgstr ""
+"Como os dados usados "
+"pela <literal>&lt;h:dataTable&gt;</literal> são na realidade inicializados, se navegarmos nesta página a partir de um indicador? "
+"Bem, o que acontece é que o <literal>Blog</literal> é vagarosamente recuperado&mdash;\"pulled\"&mdash;quando necessário, pelo "
+"<literal>blog</literal> do componente nomeado Seam. Este é o fluxo contrário "
+"de controle para o que é comum nas estruturas action-based da web como "
+"Struts."
+
+#. Tag: programlisting
+#: Tutorial.xml:1225
+#, no-c-format
+msgid ""
+"@Name(\"blog\")\n"
+"@Scope(ScopeType.STATELESS)\n"
+"public class BlogService \n"
+"{\n"
+"   \n"
+"   @In\n"
+"   private EntityManager entityManager;\n"
+"  \n"
+"   @Unwrap\n"
+"   public Blog getBlog()\n"
+"   {\n"
+"      return (Blog) entityManager.createQuery(\"from Blog b left join fetch "
+"b.blogEntries\")\n"
+"            .setHint(\"org.hibernate.cacheable\", true)\n"
+"            .getSingleResult();\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+"@Name(\"blog\")\n"
+"@Scope(ScopeType.STATELESS)\n"
+"public class BlogService \n"
+"{\n"
+"   \n"
+"   @In\n"
+"   private EntityManager entityManager;\n"
+"  \n"
+"   @Unwrap\n"
+"   public Blog getBlog()\n"
+"   {\n"
+"      return (Blog) entityManager.createQuery(\"from Blog b left join fetch "
+"b.blogEntries\")\n"
+"            .setHint(\"org.hibernate.cacheable\", true)\n"
+"            .getSingleResult();\n"
+"   }\n"
+"\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:1228
+#, no-c-format
+msgid ""
+"This component uses a <emphasis>seam-managed persistence context</emphasis>. "
+"Unlike the other examples we&#39;ve seen, this persistence context is "
+"managed by Seam, instead of by the EJB3 container. The persistence context "
+"spans the entire web request, allowing us to avoid any exceptions that occur "
+"when accessing unfetched associations in the view."
+msgstr ""
+"Este componente usa um <emphasis>componente de persistência Seam gerenciado</"
+"emphasis>. Diferente das demais amostras vistas até agora, este contexto de "
+"persistência é gerenciado pelo Seam, ao invés do container EJB3. O contexto "
+"de persistência expande a solicitação da web por completa, nos permitindo "
+"evitar qualquer exceções que ocorrem quando acessando as associações não "
+"obtidas na visualização."
+
+#. Tag: para
+#: Tutorial.xml:1233
+#, no-c-format
+msgid ""
+"The <literal>@Unwrap</literal> annotation tells Seam to provide the return "
+"value of the method&mdash;the <literal>Blog</literal>&mdash;instead of the "
+"actual <literal>BlogService</literal> component to clients. This is the Seam "
+"<emphasis>manager component pattern</emphasis>."
+msgstr ""
+"A anotação <literal>@Unwrap</literal> pede ao Seam para fornecer o valor "
+"retornado do método&mdash;the <literal>Blog</literal>&mdash;ao invés do componente <literal>BlogService</literal> atual para clientes. Este é o "
+"<emphasis>padrão de componente gerenciador</emphasis> Seam."
+
+#. Tag: para
+#: Tutorial.xml:1240
+#, no-c-format
+msgid ""
+"This is good so far, but what about bookmarking the result of form "
+"submissions, such as a search results page?"
+msgstr ""
+"Tudo está se encaminhando muito bem até agora, mas o que acontece com o "
+"indicador das submissões de formulários, como por exemplo uma página dos "
+"resultados de busca?"
+
+#. Tag: title
+#: Tutorial.xml:1246
+#, no-c-format
+msgid "Bookmarkable search results page"
+msgstr "Página de resultados de busca por meio dos indicadores"
+
+#. Tag: para
+#: Tutorial.xml:1247
+#, no-c-format
+msgid ""
+"The blog example has a tiny form in the top right of each page that allows "
+"the user to search for blog entries. This is defined in a file, "
+"<literal>menu.xhtml</literal>, included by the facelets template, "
+"<literal>template.xhtml</literal>:"
+msgstr ""
+"A amostra do blog possui um formulário pequeno no canto superior direito de "
+"cada página, do qual permite que os usuários busquem por entradas de blog. "
+"Isto é definido num arquivo <literal>menu.xhtml</literal>, incluído pelo "
+"modelo facelets <literal>template.xhtml</literal>:"
+
+#. Tag: programlisting
+#: Tutorial.xml:1250
+#, no-c-format
+msgid ""
+"&lt;div id=\"search\"&gt;\n"
+"   &lt;h:form&gt;\n"
+"      &lt;h:inputText value=\"#{searchAction.searchPattern}\"/&gt;\n"
+"      &lt;h:commandButton value=\"Search\" action=\"/search.xhtml\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+"&lt;div id=\"search\"&gt;\n"
+"   &lt;h:form&gt;\n"
+"      &lt;h:inputText value=\"#{searchAction.searchPattern}\"/&gt;\n"
+"      &lt;h:commandButton value=\"Search\" action=\"/search.xhtml\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/div&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1251
+#, no-c-format
+msgid ""
+"To implement a bookmarkable search results page, we need to perform a "
+"browser redirect after processing the search form submission. Because we "
+"used the JSF view id as the action outcome, Seam automatically redirects to "
+"the view id when the form is submitted. Alternatively, we could have defined "
+"a navigation rule like this:"
+msgstr ""
+"Para implementação da página de resultados de busca por meio do indicador, precisamos "
+"executar um redirecionamento do navegador após processar a submissão de "
+"formulário de busca. Devido a utilização do JSF view id como um resultado "
+"action, o Seam automaticamente redireciona a visualização id quando o "
+"formulário é submetido. Alternativamente, podemos definir a regra de "
+"navegação conforme o exemplo a seguir:"
+
+#. Tag: programlisting
+#: Tutorial.xml:1254
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"   &lt;navigation-case&gt;\n"
+"      &lt;from-outcome&gt;searchResults&lt;/from-outcome&gt;\n"
+"      &lt;to-view-id&gt;/search.xhtml&lt;/to-view-id&gt;\n"
+"      &lt;redirect/&gt;\n"
+"   &lt;/navigation-case&gt;\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+"&lt;navigation-rule&gt;\n"
+"   &lt;navigation-case&gt;\n"
+"      &lt;from-outcome&gt;searchResults&lt;/from-outcome&gt;\n"
+"      &lt;to-view-id&gt;/search.xhtml&lt;/to-view-id&gt;\n"
+"      &lt;redirect/&gt;\n"
+"   &lt;/navigation-case&gt;\n"
+"&lt;/navigation-rule&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1255
+#, no-c-format
+msgid "Then the form would have looked like this:"
+msgstr "Então o formulário se parecerá com:"
+
+#. Tag: programlisting
+#: Tutorial.xml:1258
+#, no-c-format
+msgid ""
+"&lt;div id=\"search\"&gt;\n"
+"   &lt;h:form&gt;\n"
+"      &lt;h:inputText value=\"#{searchAction.searchPattern}\"/&gt;\n"
+"      &lt;h:commandButton value=\"Search\" action=\"searchResults\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+"&lt;div id=\"search\"&gt;\n"
+"   &lt;h:form&gt;\n"
+"      &lt;h:inputText value=\"#{searchAction.searchPattern}\"/&gt;\n"
+"      &lt;h:commandButton value=\"Search\" action=\"searchResults\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/div&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1259
+#, no-c-format
+msgid ""
+"But when we redirect, we need to include the values submitted with the form "
+"as request parameters, to get a bookmarkable URL like <literal>http://"
+"localhost:8080/seam-blog/search.seam?searchPattern=seam</literal>. JSF does "
+"not provide an easy way to do this, but Seam does. We use a Seam "
+"<emphasis>page parameter</emphasis>, defined in <literal>WEB-INF/pages.xml</"
+"literal>:"
+msgstr ""
+"Quando realizarmos a redireção, precisaremos incluir os valores submetidos "
+"com o formulário como os parâmetros de solicitação. Tudo isto, com a finalidade de se obter um URL por meio do indicador, como por exemplo: <literal>http://localhost:8080/seam-blog/search.seam?"
+"searchPattern=seam</literal>. O JSF não fornece um caminho fácil para isto, "
+"mas o Seam sim. Usaremos um <emphasis>parâmetro de página</emphasis> Seam "
+"definido na <literal>WEB-INF/pages.xml</literal>:"
+
+#. Tag: programlisting
+#: Tutorial.xml:1262
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   &lt;page view-id=\"/search.xhtml\"&gt;\n"
+"      &lt;param name=\"searchPattern\" value=\"#{searchService.searchPattern}"
+"\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"   &lt;page view-id=\"/search.xhtml\"&gt;\n"
+"      &lt;param name=\"searchPattern\" value=\"#{searchService.searchPattern}"
+"\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   ...\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1263
+#, no-c-format
+msgid ""
+"This tells Seam to include the value of <literal>#{searchService."
+"searchPattern}</literal> as a request parameter named "
+"<literal>searchPattern</literal> when redirecting to the page, and then re-"
+"apply the value of that parameter to the model before rendering the page."
+msgstr ""
+"Isto informa ao Seam para incluir o valor do <literal>#{searchService."
+"searchPattern}</literal> como uma solicitação <literal>searchPattern</literal> "
+"de parâmetro nomeado quando executando o redirecionamento da página. E então, aplicar novamente "
+"o valor daquele parâmetro ao modelo, antes de renderizar a página."
+
+#. Tag: para
+#: Tutorial.xml:1266
+#, no-c-format
+msgid "The redirect takes us to the <literal>search.xhtml</literal> page:"
+msgstr "A redireção nos leva à página <literal>search.xhtml</literal>:"
+
+#. Tag: programlisting
+#: Tutorial.xml:1269
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{searchResults}\" var=\"blogEntry\"&gt;\n"
+"   &lt;h:column&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:outputLink value=\"entry.seam\"&gt;\n"
+"            &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"            #{blogEntry.title}\n"
+"         &lt;/h:outputLink&gt;\n"
+"         posted on \n"
+"         &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"            &lt;f:convertDateTime timeZone=\"#{blog.timeZone}\" locale=\"#"
+"{blog.locale}\" type=\"both\"/&gt;\n"
+"         &lt;/h:outputText&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+"&lt;h:dataTable value=\"#{searchResults}\" var=\"blogEntry\"&gt;\n"
+"   &lt;h:column&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:outputLink value=\"entry.seam\"&gt;\n"
+"            &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"            #{blogEntry.title}\n"
+"         &lt;/h:outputLink&gt;\n"
+"         posted on \n"
+"         &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"            &lt;f:convertDateTime timeZone=\"#{blog.timeZone}\" locale=\"#"
+"{blog.locale}\" type=\"both\"/&gt;\n"
+"         &lt;/h:outputText&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1270
+#, no-c-format
+msgid "Which again uses \"pull\"-style MVC to retrieve the actual search results:"
+msgstr ""
+"Da qual usa novamente \"pull\"-style MVC para recuperar os resultados de "
+"busca atuais:"
+
+#. Tag: programlisting
+#: Tutorial.xml:1273
+#, no-c-format
+msgid ""
+"@Name(\"searchService\")\n"
+"public class SearchService \n"
+"{\n"
+"   \n"
+"   @In\n"
+"   private EntityManager entityManager;\n"
+"   \n"
+"   private String searchPattern;\n"
+"   \n"
+"   @Factory(\"searchResults\")\n"
+"   public List&lt;BlogEntry&gt; getSearchResults()\n"
+"   {\n"
+"      if (searchPattern==null)\n"
+"      {\n"
+"         return null;\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return entityManager.createQuery(\"select be from BlogEntry be "
+"where lower(be.title) \n"
+"                               like :searchPattern or lower(be.body) like :"
+"searchPattern \n"
+"                               order by be.date desc\")\n"
+"               .setParameter( \"searchPattern\", getSqlSearchPattern() )\n"
+"               .setMaxResults(100)\n"
+"               .getResultList();\n"
+"      }\n"
+"   }\n"
+"\n"
+"   private String getSqlSearchPattern()\n"
+"   {\n"
+"      return searchPattern==null ? \"\" : &#39;%&#39; + \n"
+"        searchPattern.toLowerCase().replace(&#39;*&#39;, &#39;%&#39;).replace"
+"(&#39;?&#39;, &#39;_&#39;) \n"
+"           + &#39;%&#39;;\n"
+"   }\n"
+"\n"
+"   public String getSearchPattern()\n"
+"   {\n"
+"      return searchPattern;\n"
+"   }\n"
+"\n"
+"   public void setSearchPattern(String searchPattern)\n"
+"   {\n"
+"      this.searchPattern = searchPattern;\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+"@Name(\"searchService\")\n"
+"public class SearchService \n"
+"{\n"
+"   \n"
+"   @In\n"
+"   private EntityManager entityManager;\n"
+"   \n"
+"   private String searchPattern;\n"
+"   \n"
+"   @Factory(\"searchResults\")\n"
+"   public List&lt;BlogEntry&gt; getSearchResults()\n"
+"   {\n"
+"      if (searchPattern==null)\n"
+"      {\n"
+"         return null;\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return entityManager.createQuery(\"select be from BlogEntry be "
+"where lower(be.title) \n"
+"                               like :searchPattern or lower(be.body) like :"
+"searchPattern \n"
+"                               order by be.date desc\")\n"
+"               .setParameter( \"searchPattern\", getSqlSearchPattern() )\n"
+"               .setMaxResults(100)\n"
+"               .getResultList();\n"
+"      }\n"
+"   }\n"
+"\n"
+"   private String getSqlSearchPattern()\n"
+"   {\n"
+"      return searchPattern==null ? \"\" : &#39;%&#39; + \n"
+"        searchPattern.toLowerCase().replace(&#39;*&#39;, &#39;%&#39;).replace"
+"(&#39;?&#39;, &#39;_&#39;) \n"
+"           + &#39;%&#39;;\n"
+"   }\n"
+"\n"
+"   public String getSearchPattern()\n"
+"   {\n"
+"      return searchPattern;\n"
+"   }\n"
+"\n"
+"   public void setSearchPattern(String searchPattern)\n"
+"   {\n"
+"      this.searchPattern = searchPattern;\n"
+"   }\n"
+"\n"
+"}"
+
+#. Tag: title
+#: Tutorial.xml:1278
+#, no-c-format
+msgid "Using \"push\"-style MVC in a RESTful application"
+msgstr "Usando \"push\"-style MVC num aplicativo RESTful"
+
+#. Tag: para
+#: Tutorial.xml:1279
+#, no-c-format
+msgid ""
+"Very occasionally, it makes more sense to use push-style MVC for processing "
+"RESTful pages, and so Seam provides the notion of a <emphasis>page action</"
+"emphasis>. The Blog example uses a page action for the blog entry page, "
+"<literal>entry.xhtml</literal>. Note that this is a little bit contrived, it "
+"would have been easier to use pull-style MVC here as well."
+msgstr ""
+"Às vezes, é mais coerente usar push-style MVC no processamento de páginas "
+"RESTful, de forma que o Seam forneça uma noção de uma <emphasis>página "
+"action</emphasis>. A amostra do Blog usa uma página action para a página de "
+"entrada do blog, <literal>entry.xhtml</literal>. Perceba que há um pouco de "
+"controvérsia, pois, neste caso, seria mais adequado se utilizar o pull-style MVC."
+
+#. Tag: para
+#: Tutorial.xml:1282
+#, no-c-format
+msgid ""
+"The <literal>entryAction</literal> component works much like an action class "
+"in a traditional push-MVC action-oriented framework like Struts:"
+msgstr ""
+"Aparentemente, o componente <literal>entryAction</literal> possui um trabalho muito parecido à "
+"classe action, numa estrutura push-MVC action-oriented tradicional como "
+"Struts:"
+
+#. Tag: programlisting
+#: Tutorial.xml:1285
+#, no-c-format
+msgid ""
+"@Name(\"entryAction\")\n"
+"@Scope(STATELESS)\n"
+"public class EntryAction\n"
+"{\n"
+"   @In(create=true) \n"
+"   private Blog blog;\n"
+"   \n"
+"   @Out\n"
+"   private BlogEntry blogEntry;\n"
+"   \n"
+"   public void loadBlogEntry(String id) throws EntryNotFoundException\n"
+"   {\n"
+"      blogEntry = blog.getBlogEntry(id);\n"
+"      if (blogEntry==null) throw new EntryNotFoundException(id);\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+"@Name(\"entryAction\")\n"
+"@Scope(STATELESS)\n"
+"public class EntryAction\n"
+"{\n"
+"   @In(create=true) \n"
+"   private Blog blog;\n"
+"   \n"
+"   @Out\n"
+"   private BlogEntry blogEntry;\n"
+"   \n"
+"   public void loadBlogEntry(String id) throws EntryNotFoundException\n"
+"   {\n"
+"      blogEntry = blog.getBlogEntry(id);\n"
+"      if (blogEntry==null) throw new EntryNotFoundException(id);\n"
+"   }\n"
+"   \n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:1286
+#, no-c-format
+msgid "Page actions are also declared in <literal>pages.xml</literal>:"
+msgstr "As páginas actions são também declaradas em <literal>pages.xml</literal>:"
+
+#. Tag: programlisting
+#: Tutorial.xml:1289
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   ...\n"
+"\n"
+"   &lt;page view-id=\"/entry.xhtml\" action=\"#{entryAction.loadBlogEntry"
+"(blogEntry.id)}\"&gt;\n"
+"      &lt;param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"\n"
+"   &lt;page view-id=\"/post.xhtml\" action=\"#{loginAction.challenge}\"/"
+"&gt;\n"
+"\n"
+"   &lt;page view-id=\"*\" action=\"#{blog.hitCount.hit}\"/&gt;\n"
+"\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"   ...\n"
+"\n"
+"   &lt;page view-id=\"/entry.xhtml\" action=\"#{entryAction.loadBlogEntry"
+"(blogEntry.id)}\"&gt;\n"
+"      &lt;param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"\n"
+"   &lt;page view-id=\"/post.xhtml\" action=\"#{loginAction.challenge}\"/"
+"&gt;\n"
+"\n"
+"   &lt;page view-id=\"*\" action=\"#{blog.hitCount.hit}\"/&gt;\n"
+"\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1290
+#, no-c-format
+msgid ""
+"Notice that the example is using page actions for some other "
+"functionality&mdash;the login challenge, and the pageview counter. Also "
+"notice the use of a parameter in the page action method binding. This is not "
+"a standard feature of JSF EL, but Seam lets you use it, not just for page "
+"actions, but also in JSF method bindings."
+msgstr ""
+"Perceba que o exemplo está usando as páginas actions para alguma outra "
+"funcionalidade&mdash;o logon challenge e a reação da página de visualização. "
+"Além disso, note o uso de um parâmetro no método binding da página action. "
+"Isto não é um recurso padrão do JSF EL, mas o Seam permite usá-lo não apenas "
+"para as páginas actions, como também para o método binding do JSF."
+
+#. Tag: para
+#: Tutorial.xml:1293
+#, no-c-format
+msgid ""
+"When the <literal>entry.xhtml</literal> page is requested, Seam first binds "
+"the page parameter <literal>blogEntryId</literal> to the model, then runs "
+"the page action, which retrieves the needed data&mdash;the "
+"<literal>blogEntry</literal>&mdash;and places it in the Seam event context. "
+"Finally, the following is rendered:"
+msgstr ""
+"Quando a página <literal>entry.xhtml</literal> for solicitada, o Seam "
+"primeiro vincula o parâmetro da página <literal>blogEntryId</literal> ao "
+"modelo, e depois roda a página action, da qual recupera os dados "
+"necessários&mdash;o <literal>blogEntry</literal>&mdash;e o coloca num "
+"contexto do evento Seam. Finalmente, segue a seguir o que é renderizado:"
+
+#. Tag: programlisting
+#: Tutorial.xml:1296
+#, no-c-format
+msgid ""
+"&lt;div class=\"blogEntry\"&gt;\n"
+"   &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"   &lt;div&gt;\n"
+"      &lt;h:outputText escape=\"false\" value=\"#{blogEntry.body}\"/&gt;\n"
+"   &lt;/div&gt;\n"
+"   &lt;p&gt;\n"
+"      [Posted on&#160;\n"
+"      &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"         &lt;f:convertDateTime timezone=\"#{blog.timeZone}\" locale=\"#{blog."
+"locale}\" type=\"both\"/&gt;\n"
+"      &lt;/h:outputText&gt;]\n"
+"   &lt;/p&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+"&lt;div class=\"blogEntry\"&gt;\n"
+"   &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"   &lt;div&gt;\n"
+"      &lt;h:outputText escape=\"false\" value=\"#{blogEntry.body}\"/&gt;\n"
+"   &lt;/div&gt;\n"
+"   &lt;p&gt;\n"
+"      [Posted on&#160;\n"
+"      &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"         &lt;f:convertDateTime timezone=\"#{blog.timeZone}\" locale=\"#{blog."
+"locale}\" type=\"both\"/&gt;\n"
+"      &lt;/h:outputText&gt;]\n"
+"   &lt;/p&gt;\n"
+"&lt;/div&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1297
+#, no-c-format
+msgid ""
+"If the blog entry is not found in the database, the "
+"<literal>EntryNotFoundException</literal> exception is thrown. We want this "
+"exception to result in a 404 error, not a 505, so we annotate the exception "
+"class:"
+msgstr ""
+"Caso a entrada do blog não seja encontrada no banco de dados, a exceção "
+"<literal>EntryNotFoundException</literal> é lançada. Queremos que esta "
+"exceção resulte num erro 404, e não 505, então anotamos a classe de exceção:"
+
+#. Tag: programlisting
+#: Tutorial.xml:1300
+#, no-c-format
+msgid ""
+"@ApplicationException(rollback=true)\n"
+"@HttpError(errorCode=HttpServletResponse.SC_NOT_FOUND)\n"
+"public class EntryNotFoundException extends Exception\n"
+"{\n"
+"   EntryNotFoundException(String id)\n"
+"   {\n"
+"      super(\"entry not found: \" + id);\n"
+"   }\n"
+"}"
+msgstr ""
+"@ApplicationException(rollback=true)\n"
+"@HttpError(errorCode=HttpServletResponse.SC_NOT_FOUND)\n"
+"public class EntryNotFoundException extends Exception\n"
+"{\n"
+"   EntryNotFoundException(String id)\n"
+"   {\n"
+"      super(\"entry not found: \" + id);\n"
+"   }\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:1301
+#, no-c-format
+msgid ""
+"An alternative implementation of the example does not use the parameter in "
+"the method binding:"
+msgstr ""
+"Uma implementação alternativa da amostra não usa o parâmetro no método "
+"binding:"
+
+#. Tag: programlisting
+#: Tutorial.xml:1304
+#, no-c-format
+msgid ""
+"@Name(\"entryAction\")\n"
+"@Scope(STATELESS)\n"
+"public class EntryAction\n"
+"{\n"
+"   @In(create=true) \n"
+"   private Blog blog;\n"
+"   \n"
+"   @In @Out\n"
+"   private BlogEntry blogEntry;\n"
+"   \n"
+"   public void loadBlogEntry() throws EntryNotFoundException\n"
+"   {\n"
+"      blogEntry = blog.getBlogEntry( blogEntry.getId() );\n"
+"      if (blogEntry==null) throw new EntryNotFoundException(id);\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+"@Name(\"entryAction\")\n"
+"@Scope(STATELESS)\n"
+"public class EntryAction\n"
+"{\n"
+"   @In(create=true) \n"
+"   private Blog blog;\n"
+"   \n"
+"   @In @Out\n"
+"   private BlogEntry blogEntry;\n"
+"   \n"
+"   public void loadBlogEntry() throws EntryNotFoundException\n"
+"   {\n"
+"      blogEntry = blog.getBlogEntry( blogEntry.getId() );\n"
+"      if (blogEntry==null) throw new EntryNotFoundException(id);\n"
+"   }\n"
+"   \n"
+"}"
+
+#. Tag: programlisting
+#: Tutorial.xml:1305
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   ...\n"
+"\n"
+"   &lt;page view-id=\"/entry.xhtml\" action=\"#{entryAction.loadBlogEntry}"
+"\"&gt;\n"
+"      &lt;param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"   ...\n"
+"\n"
+"   &lt;page view-id=\"/entry.xhtml\" action=\"#{entryAction.loadBlogEntry}"
+"\"&gt;\n"
+"      &lt;param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   ...\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1306
+#, no-c-format
+msgid "It is a matter of taste which implementation you prefer."
+msgstr "É o caso de preferência por qual implementação você irá optar."
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Validation.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Validation.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Validation.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,576 @@
+# translation of Validation.po to Brazilian Portuguese
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Leticia de Lima <ldelima at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Validation\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2008-06-12 16:34+1000\n"
+"Last-Translator: Leticia de Lima <ldelima at redhat.com>\n"
+"Language-Team: Brazilian Portuguese <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Validation.xml:6
+#, no-c-format
+msgid "JSF form validation in Seam"
+msgstr "Validação de forma JSF em Seam"
+
+#. Tag: para
+#: Validation.xml:7
+#, no-c-format
+msgid "In plain JSF, validation is defined in the view:"
+msgstr "Em um JSF plano, a validação é definida na visualização:"
+
+#. Tag: programlisting
+#: Validation.xml:10
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;h:messages/&gt;\n"
+"\n"
+"    &lt;div&gt;\n"
+"        Country:\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;my:validateCountry/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    \n"
+"    &lt;div&gt;\n"
+"        Zip code:\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;my:validateZip/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"\n"
+"    &lt;h:commandButton/&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h:form&gt;\n"
+"    &lt;h:messages/&gt;\n"
+"\n"
+"    &lt;div&gt;\n"
+"        Country:\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;my:validateCountry/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    \n"
+"    &lt;div&gt;\n"
+"        Zip code:\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;my:validateZip/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"\n"
+"    &lt;h:commandButton/&gt;\n"
+"&lt;/h:form&gt;"
+
+#. Tag: para
+#: Validation.xml:11
+#, no-c-format
+msgid ""
+"In practice, this approach usually violates DRY, since most \"validation\" "
+"actually enforces constraints that are part of the data model, and exist all "
+"the way down to the database schema definition. Seam provides support for "
+"model-based constraints defined using Hibernate Validator."
+msgstr "Na prática, esta abordagem normalmente viola o DRY, uma vez que a maioria da \"validação\" reforça as limitações que fazem parte do modelo de dados. Além disso, reforça também a definição do esquema do banco de dados. O Seam fornece suporte para as limitações de modelo baseado definido, usando o Validador Hibernate."
+
+#. Tag: para
+#: Validation.xml:14
+#, no-c-format
+msgid ""
+"Let&#39;s start by defining our constraints, on our <literal>Location</"
+"literal> class:"
+msgstr ""
+"Vamos iniciar definindo nossas limitações em nossa classe de <literal>Localização</"
+"literal>:"
+
+#. Tag: programlisting
+#: Validation.xml:17
+#, no-c-format
+msgid ""
+"public class Location {\n"
+"    private String country;\n"
+"    private String zip;\n"
+"    \n"
+"    @NotNull\n"
+"    @Length(max=30)\n"
+"    public String getCountry() { return country; }\n"
+"    public void setCountry(String c) { country = c; }\n"
+"\n"
+"    @NotNull\n"
+"    @Length(max=6)\n"
+"    @Pattern(\"^\\d*$\")\n"
+"    public String getZip() { return zip; }\n"
+"    public void setZip(String z) { zip = z; }\n"
+"}"
+msgstr ""
+"public class Location {\n"
+"    private String country;\n"
+"    private String zip;\n"
+"    \n"
+"    @NotNull\n"
+"    @Length(max=30)\n"
+"    public String getCountry() { return country; }\n"
+"    public void setCountry(String c) { country = c; }\n"
+"\n"
+"    @NotNull\n"
+"    @Length(max=6)\n"
+"    @Pattern(\"^\\d*$\")\n"
+"    public String getZip() { return zip; }\n"
+"    public void setZip(String z) { zip = z; }\n"
+"}"
+
+#. Tag: para
+#: Validation.xml:18
+#, no-c-format
+msgid ""
+"Well, that&#39;s a decent first cut, but in practice it might be more "
+"elegant to use custom constraints instead of the ones built into Hibernate "
+"Validator:"
+msgstr "Bem, isto é um primeiro atalho decente, no entanto na prática poderá ser mais elegante utilizar as limitações personalizadas, ao invés das construídas no Validador Hibernate:"
+
+#. Tag: programlisting
+#: Validation.xml:21
+#, no-c-format
+msgid ""
+"public class Location {\n"
+"    private String country;\n"
+"    private String zip;\n"
+"    \n"
+"    @NotNull\n"
+"    @Country\n"
+"    public String getCountry() { return country; }\n"
+"    public void setCountry(String c) { country = c; }\n"
+"\n"
+"    @NotNull\n"
+"    @ZipCode\n"
+"    public String getZip() { return zip; }\n"
+"    public void setZip(String z) { zip = z; }\n"
+"}"
+msgstr ""
+"public class Location {\n"
+"    private String country;\n"
+"    private String zip;\n"
+"    \n"
+"    @NotNull\n"
+"    @Country\n"
+"    public String getCountry() { return country; }\n"
+"    public void setCountry(String c) { country = c; }\n"
+"\n"
+"    @NotNull\n"
+"    @ZipCode\n"
+"    public String getZip() { return zip; }\n"
+"    public void setZip(String z) { zip = z; }\n"
+"}"
+
+#. Tag: para
+#: Validation.xml:22
+#, no-c-format
+msgid ""
+"Whichever route we take, we no longer need to specify the type of validation "
+"to be used in the JSF page. Instead, we can use <literal>&lt;s:validate&gt;</"
+"literal> to validate against the constraint defined on the model object."
+msgstr ""
+"Independente da rota que optarmos, não precisaremos especificar o tipo de validação a ser usado na página JSF. Ao invés disto, podemos usar o <literal>&lt;s:validate&gt;</"
+"literal> para a validação em referência a limitação definida, no objeto do modelo."
+
+#. Tag: programlisting
+#: Validation.xml:25
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;h:messages/&gt;\n"
+"\n"
+"    &lt;div&gt;\n"
+"        Country:\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;s:validate/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    \n"
+"    &lt;div&gt;\n"
+"        Zip code:\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;s:validate/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    \n"
+"    &lt;h:commandButton/&gt;\n"
+"\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h:form&gt;\n"
+"    &lt;h:messages/&gt;\n"
+"\n"
+"    &lt;div&gt;\n"
+"        Country:\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;s:validate/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    \n"
+"    &lt;div&gt;\n"
+"        Zip code:\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;s:validate/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    \n"
+"    &lt;h:commandButton/&gt;\n"
+"\n"
+"&lt;/h:form&gt;"
+
+#. Tag: para
+#: Validation.xml:26
+#, no-c-format
+msgid ""
+"<emphasis>Note:</emphasis> specifying <literal>@NotNull</literal> on the "
+"model does <emphasis>not</emphasis> eliminate the requirement for "
+"<literal>required=\"true\"</literal> to appear on the control! This is due "
+"to a limitation of the JSF validation architecture."
+msgstr "<emphasis>Perceba que</emphasis>, a especificação do <literal>@NotNull</literal> no modelo, <emphasis>não</emphasis> elimina a solicitação para a <literal>required=\"true\"</literal> aparecer no controle. Tudo isto é devido a limitação de arquitetura de validação JSF."
+
+#. Tag: para
+#: Validation.xml:29
+#, no-c-format
+msgid ""
+"This approach <emphasis>defines</emphasis> constraints on the model, and "
+"<emphasis>presents</emphasis> constraint violations in the view&mdash;a "
+"significantly better design."
+msgstr "Esta abordagem <emphasis>define</emphasis> as limitações no modelo e <emphasis>apresenta</emphasis> as violações da limitação na visualização&mdash;uma criação muito melhor."
+
+#. Tag: para
+#: Validation.xml:32
+#, no-c-format
+msgid ""
+"However, it is not much less verbose than what we started with, so let&#39;s "
+"try <literal>&lt;s:validateAll&gt;</literal>:"
+msgstr "No entanto, isto não reduz muito a verbose se compararmos com o que começamos. Então, vamos tentar <literal>&lt;s:validateAll&gt;</literal>:"
+
+#. Tag: programlisting
+#: Validation.xml:35
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    \n"
+"    &lt;h:messages/&gt;\n"
+"\n"
+"    &lt;s:validateAll&gt;\n"
+"\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;h:inputText value=\"#{location.country}\" required=\"true\"/"
+"&gt;\n"
+"        &lt;/div&gt;\n"
+"\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/"
+"&gt;\n"
+"        &lt;/div&gt;\n"
+"\n"
+"        &lt;h:commandButton/&gt;\n"
+"\n"
+"    &lt;/s:validateAll&gt;\n"
+"\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h:form&gt;\n"
+"    \n"
+"    &lt;h:messages/&gt;\n"
+"\n"
+"    &lt;s:validateAll&gt;\n"
+"\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;h:inputText value=\"#{location.country}\" required=\"true\"/"
+"&gt;\n"
+"        &lt;/div&gt;\n"
+"\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/"
+"&gt;\n"
+"        &lt;/div&gt;\n"
+"\n"
+"        &lt;h:commandButton/&gt;\n"
+"\n"
+"    &lt;/s:validateAll&gt;\n"
+"\n"
+"&lt;/h:form&gt;"
+
+#. Tag: para
+#: Validation.xml:36
+#, no-c-format
+msgid ""
+"This tag simply adds an <literal>&lt;s:validate&gt;</literal> to every input "
+"in the form. For a large form, it can save a lot of typing!"
+msgstr "Este caractere apenas adiciona um <literal>&lt;s:validate&gt;</literal>, a cada entrada no formulário. Para um formulário maior, isto poderá evitar um tempo considerável utilizado na digitação."
+
+#. Tag: para
+#: Validation.xml:39
+#, no-c-format
+msgid ""
+"Now we need to do something about displaying feedback to the user when "
+"validation fails. Currently we are displaying all messages at the top of the "
+"form. What we would really like to do is display the message next to the "
+"field with the error (this is possible in plain JSF), highlight the field "
+"and label (this is not possible) and, for good measure, display some image "
+"next the the field (also not possible). We also want to display a little "
+"colored asterisk next to the label for each required form field."
+msgstr "Agora precisamos fazer algo a respeito do feedback exibido ao usuário, quando a validação falhar. No momento, estamos exibindo todas as mensagens no topo do formulário. O que realmente gostaríamos de fazer, era exibir a próxima mensagem para o campo com erro (isto é possível num JSF plano). Grife o campo e a etiqueta (isto não é possível), e para uma boa medida, exiba alguma imagem próxima ao campo (também não é possível). Nós desejamos exibir também um pequeno asterisco em negrito, próximo à etiqueta em cada campo de formulário solicitado."
+
+#. Tag: para
+#: Validation.xml:42
+#, no-c-format
+msgid ""
+"That&#39;s quite a lot of functionality we need for each field of our form. "
+"We wouldn&#39;t want to have to specify higlighting and the layout of the "
+"image, message and input field for every field on the form. So, instead, "
+"we&#39;ll specify the common layout in a facelets template:"
+msgstr "Isto é o bastante da funcionalidade que precisamos para cada campo de nosso formulário. Não gostaríamos que ter que especificar as partes grifadas, o layout da imagem, a mensagem e campo de entrada para cada campo no formulário. Ao invés disto, iremos especificar o layout comum num modelo de facelets:"
+
+#. Tag: programlisting
+#: Validation.xml:45
+#, no-c-format
+msgid ""
+"&lt;ui:composition xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"                xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"                xmlns:h=\"http://java.sun.com/jsf/html\"\n"
+"                xmlns:f=\"http://java.sun.com/jsf/core\"\n"
+"                xmlns:s=\"http://jboss.com/products/seam/taglib\"&gt;\n"
+"                 \n"
+"    &lt;div&gt;\n"
+"    \n"
+"        &lt;s:label styleClass=\"#{invalid?&#39;error&#39;:&#39;&#39;}"
+"\"&gt;\n"
+"            &lt;ui:insert name=\"label\"/&gt;\n"
+"            &lt;s:span styleClass=\"required\" rendered=\"#{required}\"&gt;"
+"*&lt;/s:span&gt;\n"
+"        &lt;/s:label&gt;\n"
+"        \n"
+"        &lt;span class=\"#{invalid?&#39;error&#39;:&#39;&#39;}\"&gt;\n"
+"            &lt;h:graphicImage src=\"img/error.gif\" rendered=\"#{invalid}\"/"
+"&gt;\n"
+"            &lt;s:validateAll&gt;\n"
+"                &lt;ui:insert/&gt;\n"
+"            &lt;/s:validateAll&gt;\n"
+"        &lt;/span&gt;\n"
+"        \n"
+"        &lt;s:message styleClass=\"error\"/&gt;\n"
+"        \n"
+"    &lt;/div&gt;\n"
+"    \n"
+"&lt;/ui:composition&gt;"
+msgstr ""
+"&lt;ui:composition xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"                xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"                xmlns:h=\"http://java.sun.com/jsf/html\"\n"
+"                xmlns:f=\"http://java.sun.com/jsf/core\"\n"
+"                xmlns:s=\"http://jboss.com/products/seam/taglib\"&gt;\n"
+"                 \n"
+"    &lt;div&gt;\n"
+"    \n"
+"        &lt;s:label styleClass=\"#{invalid?&#39;error&#39;:&#39;&#39;}"
+"\"&gt;\n"
+"            &lt;ui:insert name=\"label\"/&gt;\n"
+"            &lt;s:span styleClass=\"required\" rendered=\"#{required}\"&gt;"
+"*&lt;/s:span&gt;\n"
+"        &lt;/s:label&gt;\n"
+"        \n"
+"        &lt;span class=\"#{invalid?&#39;error&#39;:&#39;&#39;}\"&gt;\n"
+"            &lt;h:graphicImage src=\"img/error.gif\" rendered=\"#{invalid}\"/"
+"&gt;\n"
+"            &lt;s:validateAll&gt;\n"
+"                &lt;ui:insert/&gt;\n"
+"            &lt;/s:validateAll&gt;\n"
+"        &lt;/span&gt;\n"
+"        \n"
+"        &lt;s:message styleClass=\"error\"/&gt;\n"
+"        \n"
+"    &lt;/div&gt;\n"
+"    \n"
+"&lt;/ui:composition&gt;"
+
+#. Tag: para
+#: Validation.xml:46
+#, no-c-format
+msgid ""
+"We can include this template for each of our form fields using <literal>&lt;"
+"s:decorate&gt;</literal>."
+msgstr "Podemos incluir este modelo para cada um de nossos campos de formulário usando:"
+
+#. Tag: programlisting
+#: Validation.xml:49
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"\n"
+"    &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"\n"
+"    &lt;s:decorate template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Country:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"/"
+"&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"    \n"
+"    &lt;s:decorate template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Zip code:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"\n"
+"    &lt;h:commandButton/&gt;\n"
+"\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h:form&gt;\n"
+"\n"
+"    &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"\n"
+"    &lt;s:decorate template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Country:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"/"
+"&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"    \n"
+"    &lt;s:decorate template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Zip code:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"\n"
+"    &lt;h:commandButton/&gt;\n"
+"\n"
+"&lt;/h:form&gt;"
+
+#. Tag: para
+#: Validation.xml:50
+#, no-c-format
+msgid ""
+"Finally, we can use Ajax4JSF to display validation messages as the user is "
+"navigating around the form:"
+msgstr "Finalmente, podemos usar o Ajax4JSF para exibir as mensagens de vazão, assim como o usuário navega em volta do formulário:"
+
+#. Tag: programlisting
+#: Validation.xml:53
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"\n"
+"    &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"\n"
+"    &lt;s:decorate id=\"countryDecoration\" template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Country:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;a:support event=\"onblur\" reRender=\"countryDecoration\"/"
+"&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"    \n"
+"    &lt;s:decorate id=\"zipDecoration\" template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Zip code:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;a:support event=\"onblur\" reRender=\"zipDecoration\"/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"\n"
+"    &lt;h:commandButton/&gt;\n"
+"\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h:form&gt;\n"
+"\n"
+"    &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"\n"
+"    &lt;s:decorate id=\"countryDecoration\" template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Country:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;a:support event=\"onblur\" reRender=\"countryDecoration\"/"
+"&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"    \n"
+"    &lt;s:decorate id=\"zipDecoration\" template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Zip code:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;a:support event=\"onblur\" reRender=\"zipDecoration\"/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"\n"
+"    &lt;h:commandButton/&gt;\n"
+"\n"
+"&lt;/h:form&gt;"
+
+#. Tag: para
+#: Validation.xml:54
+#, no-c-format
+msgid ""
+"As a final note, it&#39;s better style to define explicit ids for important "
+"controls on the page, especially if you want to do automated testing for the "
+"UI, using some toolkit like Selenium. If you don&#39;t provide explicit ids, "
+"JSF will generate them, but the generated values will change if you change "
+"anything on the page."
+msgstr "E como anotação final, é melhor qualificar a definição de ids explícitas para controles importantes da página, especialmente se você quiser realizar o teste automático para o UI, usando algumas ferramentas de kit, como o Selenium. Caso você não queira fornecer as ids específicas, o JSF irá criá-las e os valores criados mudarão caso você modifique alguma coisa nesta página."
+
+#. Tag: programlisting
+#: Validation.xml:57
+#, no-c-format
+msgid ""
+"&lt;h:form id=\"form\"&gt;\n"
+"\n"
+"    &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"\n"
+"    &lt;s:decorate id=\"countryDecoration\" template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Country:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText id=\"country\" value=\"#{location.country}\" "
+"required=\"true\"&gt;\n"
+"            &lt;a:support event=\"onblur\" reRender=\"countryDecoration\"/"
+"&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"    \n"
+"    &lt;s:decorate id=\"zipDecoration\" template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Zip code:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText id=\"zip\" value=\"#{location.zip}\" required=\"true"
+"\"&gt;\n"
+"            &lt;a:support event=\"onblur\" reRender=\"zipDecoration\"/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"\n"
+"    &lt;h:commandButton/&gt;\n"
+"\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h:form id=\"form\"&gt;\n"
+"\n"
+"    &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"\n"
+"    &lt;s:decorate id=\"countryDecoration\" template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Country:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText id=\"country\" value=\"#{location.country}\" "
+"required=\"true\"&gt;\n"
+"            &lt;a:support event=\"onblur\" reRender=\"countryDecoration\"/"
+"&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"    \n"
+"    &lt;s:decorate id=\"zipDecoration\" template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Zip code:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText id=\"zip\" value=\"#{location.zip}\" required=\"true"
+"\"&gt;\n"
+"            &lt;a:support event=\"onblur\" reRender=\"zipDecoration\"/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"\n"
+"    &lt;h:commandButton/&gt;\n"
+"\n"
+"&lt;/h:form&gt;"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Xml.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Xml.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/pt-BR/Xml.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1188 @@
+# translation of Xml.po to Brazilian Portuguese
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Leticia de Lima <ldelima at redhat.com>, 2008.
+# Xi HUANG <xhuang at redhat.com>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Xml\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2008-06-04 15:14+1000\n"
+"Last-Translator: Leticia de Lima <ldelima at redhat.com>\n"
+"Language-Team: Brazilian Portuguese <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#. Tag: title
+#: Xml.xml:6
+#, no-c-format
+msgid "Configuring Seam components"
+msgstr "Configuração dos componentes Seam"
+
+#. Tag: para
+#: Xml.xml:7
+#, no-c-format
+msgid ""
+"The philosophy of minimizing XML-based configuration is extremely strong in "
+"Seam. Nevertheless, there are various reasons why we might want to configure "
+"a Seam component using XML: to isolate deployment-specific information from "
+"the Java code, to enable the creation of re-usable frameworks, to configure "
+"Seam&#39;s built-in functionality, etc. Seam provides two basic approaches "
+"to configuring components: configuration via property settings in a "
+"properties file or <literal>web.xml</literal>, and configuration via "
+"<literal>components.xml</literal>."
+msgstr "A filosofia de minimização da configuração XML baseada é extremamente forte em Seam. Apesar disso, há várias razões pela qual nós poderemos configurar um componente Seam usando XML: para isolar a informação específica de implementação a partir do código Java, permitir a criação de estruturas reutilizáveis para configuração da funcionalidade interna de Seam, etc. O Seam fornece duas abordagens básicas para a configuração dos componentes: configuração através de configurações de propriedade num arquivo de propriedades ou <literal>web.xml</literal> e configuração através dos <literal>components.xml</literal>."
+
+#. Tag: title
+#: Xml.xml:10
+#, no-c-format
+msgid "Configuring components via property settings"
+msgstr "Configurando componentes a partir configurações de propriedades"
+
+#. Tag: para
+#: Xml.xml:11
+#, no-c-format
+msgid ""
+"Seam components may be provided with configuration properties either via "
+"servlet context parameters, or via a properties file named <literal>seam."
+"properties</literal> in the root of the classpath."
+msgstr ""
+"O componentes Seam podem ser fornecidos com propriedades de configuração tanto através dos parâmetros de contexto servlet ou através das <literal>seam."
+"properties</literal> do arquivo nomeado de propriedades, na raiz da classpath."
+
+#. Tag: para
+#: Xml.xml:14
+#, no-c-format
+msgid ""
+"The configurable Seam component must expose JavaBeans-style property setter "
+"methods for the configurable attributes. If a seam component named "
+"<literal>com.jboss.myapp.settings</literal> has a setter method named "
+"<literal>setLocale()</literal>, we can provide a property named <literal>com."
+"jboss.myapp.settings.locale</literal> in the <literal>seam.properties</"
+"literal> file or as a servlet context parameter, and Seam will set the value "
+"of the <literal>locale</literal> attribute whenever it instantiates the "
+"component."
+msgstr ""
+"O componente Seam configurável deve expor os métodos do definidor de propriedades de estilo JavaBeans aos atributos configuráveis. Caso o <literal>com.jboss.myapp.settings</literal> de componente nomeado Seam possuir um <literal>setLocale()</literal> de método nomeado definidor, poderemos fornecer tanto um <literal>com."
+"jboss.myapp.settings.locale</literal> de propriedade nomeada no arquivo <literal>seam.properties</"
+"literal> quanto um parâmetro de contexto servlet. Desta forma, o Seam definirá o valor do atributo <literal>locale</literal> toda vez que ele instanciar o componente."
+
+#. Tag: para
+#: Xml.xml:17
+#, no-c-format
+msgid ""
+"The same mechanism is used to configure Seam itself. For example, to set the "
+"conversation timeout, we provide a value for <literal>org.jboss.seam.core."
+"manager.conversationTimeout</literal> in <literal>web.xml</literal> or "
+"<literal>seam.properties</literal>. (There is a built-in Seam component "
+"named <literal>org.jboss.seam.core.manager</literal> with a setter method "
+"named <literal>setConversationTimeout()</literal>.)"
+msgstr ""
+"O mesmo mecanismo é usado para configurar o próprio Seam. Por exemplo, para configurar a conversação de intervalo, fornecemos um valor para o <literal>org.jboss.seam.core."
+"manager.conversationTimeout</literal> na <literal>web.xml</literal> ou <literal>seam.properties</literal>. (Existe um <literal>org.jboss.seam.core.manager</literal> de componente nomeado de Seam interno com um <literal>setConversationTimeout()</literal> de método nomeado definidor.)"
+
+#. Tag: title
+#: Xml.xml:20
+#, no-c-format
+msgid "Configuring components via components.xml"
+msgstr "Configuração dos componentes através do components.xml"
+
+#. Tag: para
+#: Xml.xml:21
+#, no-c-format
+msgid ""
+"The <literal>components.xml</literal> file is a bit more powerful than "
+"property settings. It lets you:"
+msgstr "O arquivo <literal>components.xml</literal> é um pouco mais potente que as configurações de propriedade. Isto permite que você:"
+
+#. Tag: para
+#: Xml.xml:26
+#, no-c-format
+msgid ""
+"Configure components that have been installed automatically&mdash;including "
+"both built-in components, and application components that have been "
+"annotated with the <literal>@Name</literal> annotation and picked up by "
+"Seam&#39;s deployment scanner."
+msgstr "Configure componentes que foram instalados automaticamente&mdash;incluindo ambos componentes internos e componentes de aplicativos dos quais foram anotados com a anotação <literal>@Name</literal>, além de serem escolhidos pelo scanner de implementação de Seam."
+
+#. Tag: para
+#: Xml.xml:31
+#, no-c-format
+msgid ""
+"Install classes with no <literal>@Name</literal> annotation as Seam "
+"components&mdash;this is most useful for certain kinds of infrastructural "
+"components which can be installed multiple times different names (for "
+"example Seam-managed persistence contexts)."
+msgstr "Instale classes sem a anotação <literal>@Name</literal> como os componentes Seam&mdash;isto é mais utilizado para certos tipos de componentes infra estruturais, que podem ser instalados múltiplas vezes com nomes diferentes (por exemplo: os contextos de persistência gerenciado pelo Seam)."
+
+#. Tag: para
+#: Xml.xml:36
+#, no-c-format
+msgid ""
+"Install components that <emphasis>do</emphasis> have a <literal>@Name</"
+"literal> annotation but are not installed by default because of an "
+"<literal>@Install</literal> annotation that indicates the component should "
+"not be installed."
+msgstr ""
+"Instale componentes que <emphasis>possuem</emphasis>  uma anotação <literal>@Name</"
+"literal>, mas não estão instalados pelo padrão. Tudo isto é devido a uma anotação <literal>@Install</literal>, da qual indica que o componente não deveria ser instalado."
+
+#. Tag: para
+#: Xml.xml:41
+#, no-c-format
+msgid "Override the scope of a component."
+msgstr "Substitua o escopo do componente."
+
+#. Tag: para
+#: Xml.xml:46
+#, no-c-format
+msgid ""
+"A <literal>components.xml</literal> file may appear in one of three "
+"different places:"
+msgstr "O arquivo <literal>components.xml</literal> pode aparecer em um dos três diferentes lugares:"
+
+#. Tag: para
+#: Xml.xml:51
+#, no-c-format
+msgid "The <literal>WEB-INF</literal> directory of a <literal>war</literal>."
+msgstr "O diretório <literal>WEB-INF</literal> de um <literal>war</literal>."
+
+#. Tag: para
+#: Xml.xml:56
+#, no-c-format
+msgid "The <literal>META-INF</literal> directory of a <literal>jar</literal>."
+msgstr "O diretório <literal>META-INF</literal> de uma <literal>jar</literal>."
+
+#. Tag: para
+#: Xml.xml:61
+#, no-c-format
+msgid ""
+"Any directory of a <literal>jar</literal> that contains classes with an "
+"<literal>@Name</literal> annotation."
+msgstr "Qualquer diretório de uma <literal>jar</literal> que contém classes com uma anotação <literal>@Name</literal>."
+
+#. Tag: para
+#: Xml.xml:66
+#, no-c-format
+msgid ""
+"Usually, Seam components are installed when the deployment scanner discovers "
+"a class with a <literal>@Name</literal> annotation sitting in an archive "
+"with a <literal>seam.properties</literal> file or a <literal>META-INF/"
+"components.xml</literal> file. (Unless the component has an "
+"<literal>@Install</literal> annotation indicating it should not be installed "
+"by default.) The <literal>components.xml</literal> file lets us handle "
+"special cases where we need to override the annotations."
+msgstr ""
+"Normalmente, os componentes Seam são instalados quando o scanner de implementação descobre uma classe com uma anotação <literal>@Name</literal>, num arquivo com o arquivo <literal>seam.properties</literal> ou com o arquivo <literal>META-INF/"
+"components.xml</literal>. (A não ser que o componente possua uma anotação <literal>@Install</literal> indicando que isto deveria ser instalado pelo padrão.) O arquivo <literal>components.xml</literal> nos permite manusear casos especiais, onde precisamos substituir as anotações."
+
+#. Tag: para
+#: Xml.xml:69
+#, no-c-format
+msgid ""
+"For example, the following <literal>components.xml</literal> file installs "
+"the JBoss Embeddable EJB3 container:"
+msgstr "Por exemplo, o seguinte arquivo <literal>components.xml</literal> instala o container JBoss Embeddable EJB3:"
+
+#. Tag: programlisting
+#: Xml.xml:72
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"&gt;\n"
+"    &lt;core:ejb/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"&gt;\n"
+"    &lt;core:ejb/&gt;\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:73
+#, no-c-format
+msgid "This example does the same thing:"
+msgstr "Este exemplo faz a mesma coisa:"
+
+#. Tag: programlisting
+#: Xml.xml:76
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component class=\"org.jboss.seam.core.Ejb\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components&gt;\n"
+"    &lt;component class=\"org.jboss.seam.core.Ejb\"/&gt;\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:77
+#, no-c-format
+msgid ""
+"This one installs and configures two different Seam-managed persistence "
+"contexts:"
+msgstr "Este instala e configura dois diferentes contextos de persistência de Seam gerenciado:"
+
+#. Tag: programlisting
+#: Xml.xml:80
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"    &lt;core:managed-persistence-context name=\"customerDatabase\"\n"
+"                persistence-unit-jndi-name=\"java:/"
+"customerEntityManagerFactory\"/&gt;\n"
+"        \n"
+"    &lt;core:managed-persistence-context name=\"accountingDatabase\"\n"
+"                persistence-unit-jndi-name=\"java:/"
+"accountingEntityManagerFactory\"/&gt;            \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"    &lt;core:managed-persistence-context name=\"customerDatabase\"\n"
+"                persistence-unit-jndi-name=\"java:/"
+"customerEntityManagerFactory\"/&gt;\n"
+"        \n"
+"    &lt;core:managed-persistence-context name=\"accountingDatabase\"\n"
+"                persistence-unit-jndi-name=\"java:/"
+"accountingEntityManagerFactory\"/&gt;            \n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:81
+#, no-c-format
+msgid "As does this one:"
+msgstr "Assim como o exemplo abaixo:"
+
+#. Tag: programlisting
+#: Xml.xml:84
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component name=\"customerDatabase\" \n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"customerEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"    \n"
+"    &lt;component name=\"accountingDatabase\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"accountingEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components&gt;\n"
+"    &lt;component name=\"customerDatabase\" \n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"customerEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"    \n"
+"    &lt;component name=\"accountingDatabase\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"accountingEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:85
+#, no-c-format
+msgid ""
+"This example creates a session-scoped Seam-managed persistence context (this "
+"is not recommended in practice):"
+msgstr "Este exemplo cria um escopo de sessão de contexto de persistência de gerenciamento Seam (isto não é recomendado na prática):"
+
+#. Tag: programlisting
+#: Xml.xml:88
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"  &lt;core:managed-persistence-context name=\"productDatabase\" \n"
+"                                   scope=\"session\"\n"
+"              persistence-unit-jndi-name=\"java:/productEntityManagerFactory"
+"\"/&gt;        \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"  &lt;core:managed-persistence-context name=\"productDatabase\" \n"
+"                                   scope=\"session\"\n"
+"              persistence-unit-jndi-name=\"java:/productEntityManagerFactory"
+"\"/&gt;        \n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: programlisting
+#: Xml.xml:89
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"            \n"
+"    &lt;component name=\"productDatabase\"\n"
+"              scope=\"session\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"productEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components&gt;\n"
+"            \n"
+"    &lt;component name=\"productDatabase\"\n"
+"              scope=\"session\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"productEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:90
+#, no-c-format
+msgid ""
+"It is common to use the <literal>auto-create</literal> option for "
+"infrastructural objects like persistence contexts, which saves you from "
+"having to explicitly specify <literal>create=true</literal> when you use the "
+"<literal>@In</literal> annotation."
+msgstr "É comum se utilizar a opção <literal>auto-create</literal> para objetos infra estruturais como os contextos de persistência, dos quais o poupam de ter uma explícita <literal>create=true</literal> específica, uma vez que utilizando a anotação <literal>@In</literal>."
+
+#. Tag: programlisting
+#: Xml.xml:93
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"  &lt;core:managed-persistence-context name=\"productDatabase\" \n"
+"                             auto-create=\"true\"\n"
+"              persistence-unit-jndi-name=\"java:/productEntityManagerFactory"
+"\"/&gt;        \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"  &lt;core:managed-persistence-context name=\"productDatabase\" \n"
+"                             auto-create=\"true\"\n"
+"              persistence-unit-jndi-name=\"java:/productEntityManagerFactory"
+"\"/&gt;        \n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: programlisting
+#: Xml.xml:94
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"            \n"
+"    &lt;component name=\"productDatabase\"\n"
+"        auto-create=\"true\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"productEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components&gt;\n"
+"            \n"
+"    &lt;component name=\"productDatabase\"\n"
+"        auto-create=\"true\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"productEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:95
+#, no-c-format
+msgid ""
+"The <literal>&lt;factory&gt;</literal> declaration lets you specify a value "
+"or method binding expression that will be evaluated to initialize the value "
+"of a context variable when it is first referenced."
+msgstr "A declaração <literal>&lt;factory&gt;</literal> permite que você especifique um valor ou expressão de método binding, que será avaliada para inicializar o valor de uma variável de contexto, quando isto é inicialmente referenciada."
+
+#. Tag: programlisting
+#: Xml.xml:98
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"contact\" method=\"#{contactManager.loadContact}\" "
+"scope=\"CONVERSATION\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"contact\" method=\"#{contactManager.loadContact}\" "
+"scope=\"CONVERSATION\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:99
+#, no-c-format
+msgid "You can create an \"alias\" (a second name) for a Seam component like so:"
+msgstr "Você pode criar um \"alias\" (um segundo nome) para o componente Seam, similar a isto:"
+
+#. Tag: programlisting
+#: Xml.xml:102
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"user\" value=\"#{actor}\" scope=\"STATELESS\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"user\" value=\"#{actor}\" scope=\"STATELESS\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:103
+#, no-c-format
+msgid "You can even create an \"alias\" for a commonly used expression:"
+msgstr "Você pode ainda criar um \"alias\" para uma expressão comumente usada:"
+
+#. Tag: programlisting
+#: Xml.xml:106
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"contact\" value=\"#{contactManager.contact}\" scope="
+"\"STATELESS\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"contact\" value=\"#{contactManager.contact}\" scope="
+"\"STATELESS\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:107
+#, no-c-format
+msgid ""
+"It is especially common to see the use of <literal>auto-create=\"true\"</"
+"literal> with the <literal>&lt;factory&gt;</literal> declaration:"
+msgstr ""
+"É normalmente comum ver o uso do <literal>auto-create=\"true\"</"
+"literal> com a declaração <literal>&lt;factory&gt;</literal>:"
+
+#. Tag: programlisting
+#: Xml.xml:110
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"session\" value=\"#{entityManager.delegate}\" scope="
+"\"STATELESS\" \n"
+"       auto-create=\"true\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"session\" value=\"#{entityManager.delegate}\" scope="
+"\"STATELESS\" \n"
+"       auto-create=\"true\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:111
+#, no-c-format
+msgid ""
+"Sometimes we want to reuse the same <literal>components.xml</literal> file "
+"with minor changes during both deployment and testing. Seam lets you place "
+"wildcards of the form <literal>@wildcard@</literal> in the "
+"<literal>components.xml</literal> file which can be replaced either by your "
+"Ant build script (at deployment time) or by providing a file named "
+"<literal>components.properties</literal> in the classpath (at development "
+"time). You&#39;ll see this approach used in the Seam examples."
+msgstr "Às vezes queremos reutilizar o mesmo arquivo de <literal>components.xml</literal> com as mínimas mudanças, durante tanto a implementação como os testes. O Seam permite que você coloque os caracteres wildcard do <literal>@wildcard@</literal> no arquivo dos <literal>components.xml</literal> de formulário, do qual pode ser substituído tanto por seu script interno Ant (no período de implementação) ou fornecendo as <literal>components.properties</literal> de arquivo nomeado na classpath (no período de implementação). Você verá esta abordagem sendo utilizada em muitas amostras do Seam."
+
+#. Tag: title
+#: Xml.xml:114
+#, no-c-format
+msgid "Fine-grained configuration files"
+msgstr "Arquivos de configuração fine-grained"
+
+#. Tag: para
+#: Xml.xml:115
+#, no-c-format
+msgid ""
+"If you have a large number of components that need to be configured in XML, "
+"it makes much more sense to split up the information in <literal>components."
+"xml</literal> into many small files. Seam lets you put configuration for a "
+"class named, for example, <literal>com.helloworld.Hello</literal> in a "
+"resource named <literal>com/helloworld/Hello.component.xml</literal>. (You "
+"might be familiar with this pattern, since it is the same one we use in "
+"Hibernate.) The root element of the file may be either a <literal>&lt;"
+"components&gt;</literal> or <literal>&lt;component&gt;</literal> element."
+msgstr ""
+"Caso você possua um número grande de componentes dos quais precisam ser configurados em XML, será mais adequado dividir a informação em diversos arquivos pequenos de <literal>components."
+"xml</literal>. O Seam permite que você coloque a configuração para a classe nomeada, por exemplo, <literal>com.helloworld.Hello</literal> num <literal>com/helloworld/Hello.component.xml</literal>  de recurso nomeado. (Você já deve estar acostumado com este padrão, uma vez que este é o mesmo que utilizamos em Hibernate.) O elemento raiz do arquivo pode ser tanto um elemento <literal>&lt;component&gt;</literal> como <literal>&lt;"
+"components&gt;</literal>."
+
+#. Tag: para
+#: Xml.xml:118
+#, no-c-format
+msgid "The first option lets you define multiple components in the file:"
+msgstr "A primeira opção permite que você defina componentes múltiplos no arquivo:"
+
+#. Tag: programlisting
+#: Xml.xml:121
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component class=\"com.helloworld.Hello\" name=\"hello\"&gt;\n"
+"        &lt;property name=\"name\"&gt;#{user.name}&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"    &lt;factory name=\"message\" value=\"#{hello.message}\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components&gt;\n"
+"    &lt;component class=\"com.helloworld.Hello\" name=\"hello\"&gt;\n"
+"        &lt;property name=\"name\"&gt;#{user.name}&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"    &lt;factory name=\"message\" value=\"#{hello.message}\"/&gt;\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:122
+#, no-c-format
+msgid ""
+"The second option only lets you define or configure one component, but is "
+"less noisy:"
+msgstr "A segunda opção apenas permite que você defina ou configure um componente:"
+
+#. Tag: programlisting
+#: Xml.xml:125
+#, no-c-format
+msgid ""
+"&lt;component name=\"hello\"&gt;\n"
+"    &lt;property name=\"name\"&gt;#{user.name}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+"&lt;component name=\"hello\"&gt;\n"
+"    &lt;property name=\"name\"&gt;#{user.name}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+
+#. Tag: para
+#: Xml.xml:126
+#, no-c-format
+msgid ""
+"In the second option, the class name is implied by the file in which the "
+"component definition appears."
+msgstr "Na segunda opção, o nome da classe é implicada pelo arquivo em que a definição do componente aparecer."
+
+#. Tag: para
+#: Xml.xml:129
+#, no-c-format
+msgid ""
+"Alternatively, you may put configuration for all classes in the <literal>com."
+"helloworld</literal> package in <literal>com/helloworld/components.xml</"
+"literal>."
+msgstr ""
+"Alternativamente, você poderá colocar a configuração para todas as classes do pacote <literal>com."
+"helloworld</literal> em <literal>com/helloworld/components.xml</"
+"literal>."
+
+#. Tag: title
+#: Xml.xml:132
+#, no-c-format
+msgid "Configurable property types"
+msgstr "Tipos de propriedade configurável"
+
+#. Tag: para
+#: Xml.xml:133
+#, no-c-format
+msgid ""
+"Properties of string, primitive or primitive wrapper type may be configured "
+"just as you would expect:"
+msgstr "Propriedades de linha, primitivas ou tipo de decodificação primitivo podem ser configuradas da maneira em que você esperava:"
+
+#. Tag: programlisting
+#: Xml.xml:136
+#, no-c-format
+msgid "org.jboss.seam.core.manager.conversationTimeout 60000"
+msgstr "org.jboss.seam.core.manager.conversationTimeout 60000"
+
+#. Tag: programlisting
+#: Xml.xml:137
+#, no-c-format
+msgid "&lt;core:manager conversation-timeout=\"60000\"/&gt;"
+msgstr "&lt;core:manager conversation-timeout=\"60000\"/&gt;"
+
+#. Tag: programlisting
+#: Xml.xml:138
+#, no-c-format
+msgid ""
+"&lt;component name=\"org.jboss.seam.core.manager\"&gt;\n"
+"    &lt;property name=\"conversationTimeout\"&gt;60000&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+"&lt;component name=\"org.jboss.seam.core.manager\"&gt;\n"
+"    &lt;property name=\"conversationTimeout\"&gt;60000&lt;/property&gt;\n"
+"&lt;/component&gt;"
+
+#. Tag: para
+#: Xml.xml:139
+#, no-c-format
+msgid "Arrays, sets and lists of strings or primitives are also supported:"
+msgstr "Matrizes, conjuntos e listas de linhas ou primitivas são também suportadas:"
+
+#. Tag: programlisting
+#: Xml.xml:142
+#, no-c-format
+msgid ""
+"org.jboss.seam.core.jbpm.processDefinitions order.jpdl.xml, return.jpdl.xml, "
+"inventory.jpdl.xml"
+msgstr ""
+"org.jboss.seam.core.jbpm.processDefinitions order.jpdl.xml, return.jpdl.xml, "
+"inventory.jpdl.xml"
+
+#. Tag: programlisting
+#: Xml.xml:143
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;order.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;return.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;order.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;return.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+
+#. Tag: programlisting
+#: Xml.xml:144
+#, no-c-format
+msgid ""
+"&lt;component name=\"org.jboss.seam.core.jbpm\"&gt;\n"
+"    &lt;property name=\"processDefinitions\"&gt;\n"
+"        &lt;value&gt;order.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;return.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+"&lt;component name=\"org.jboss.seam.core.jbpm\"&gt;\n"
+"    &lt;property name=\"processDefinitions\"&gt;\n"
+"        &lt;value&gt;order.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;return.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/component&gt;"
+
+#. Tag: para
+#: Xml.xml:145
+#, no-c-format
+msgid ""
+"Even maps with String-valued keys and string or primitive values are "
+"supported:"
+msgstr "Mesmo mapas com teclas de linhas valorizadas e linhas ou valores primitivos são suportados:"
+
+#. Tag: programlisting
+#: Xml.xml:148
+#, no-c-format
+msgid ""
+"&lt;component name=\"issueEditor\"&gt;\n"
+"    &lt;property name=\"issueStatuses\"&gt;\n"
+"        &lt;key&gt;open&lt;/key&gt; &lt;value&gt;open issue&lt;/value&gt;\n"
+"        &lt;key&gt;resolved&lt;/key&gt; &lt;value&gt;issue resolved by "
+"developer&lt;/value&gt;\n"
+"        &lt;key&gt;closed&lt;/key&gt; &lt;value&gt;resolution accepted by "
+"user&lt;/value&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+"&lt;component name=\"issueEditor\"&gt;\n"
+"    &lt;property name=\"issueStatuses\"&gt;\n"
+"        &lt;key&gt;open&lt;/key&gt; &lt;value&gt;open issue&lt;/value&gt;\n"
+"        &lt;key&gt;resolved&lt;/key&gt; &lt;value&gt;issue resolved by "
+"developer&lt;/value&gt;\n"
+"        &lt;key&gt;closed&lt;/key&gt; &lt;value&gt;resolution accepted by "
+"user&lt;/value&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/component&gt;"
+
+#. Tag: para
+#: Xml.xml:149
+#, no-c-format
+msgid ""
+"Finally, you may wire together components using a value-binding expression. "
+"Note that this is quite different to injection using <literal>@In</literal>, "
+"since it happens at component instantiation time instead of invocation time. "
+"It is therefore much more similar to the dependency injection facilities "
+"offered by traditional IoC containers like JSF or Spring."
+msgstr "Finalmente, você poderá ligar os componentes usando a expressão de valor binding. Perceba que é bastante diferente realizar a injeção usando <literal>@In</literal>, uma vez que isto ocorre no período de instanciação do componente ao invés do período de invocação. Desta forma, isto é bastante similar às facilidades de injeção de dependência oferecidas pelos containers IoC tradicionais como JSF ou Spring."
+
+#. Tag: programlisting
+#: Xml.xml:152
+#, no-c-format
+msgid ""
+"&lt;drools:managed-working-memory name=\"policyPricingWorkingMemory\" rule-"
+"base=\"#{policyPricingRules}\"/&gt;"
+msgstr ""
+"&lt;drools:managed-working-memory name=\"policyPricingWorkingMemory\" rule-"
+"base=\"#{policyPricingRules}\"/&gt;"
+
+#. Tag: programlisting
+#: Xml.xml:153
+#, no-c-format
+msgid ""
+"&lt;component name=\"policyPricingWorkingMemory\"\n"
+"          class=\"org.jboss.seam.drools.ManagedWorkingMemory\"&gt;\n"
+"    &lt;property name=\"ruleBase\"&gt;#{policyPricingRules}&lt;/"
+"property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+"&lt;component name=\"policyPricingWorkingMemory\"\n"
+"          class=\"org.jboss.seam.drools.ManagedWorkingMemory\"&gt;\n"
+"    &lt;property name=\"ruleBase\"&gt;#{policyPricingRules}&lt;/"
+"property&gt;\n"
+"&lt;/component&gt;"
+
+#. Tag: title
+#: Xml.xml:154
+#, no-c-format
+msgid "Using XML Namespaces"
+msgstr "Usando os espaços do nome em XML"
+
+#. Tag: para
+#: Xml.xml:155
+#, no-c-format
+msgid ""
+"Throughout the examples, there have been two competing ways of declaring "
+"components: with and without the use of XML namespaces. The following shows "
+"a typical <literal>components.xml</literal> file without namespaces. It uses "
+"the Seam Components DTD:"
+msgstr "A partir dos exemplos, pode-se observar que há duas maneiras competitivas de declarar componentes: com e sem o uso dos espaços de nomes XML. Segue abaixo um arquivo típico de <literal>components.xml</literal> sem espaços de nomes. Ele usa o DTD de componentes Seam:"
+
+#. Tag: programlisting
+#: Xml.xml:158
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"&gt;\n"
+"&lt;!DOCTYPE components PUBLIC \"-//JBoss/Seam Component Configuration DTD "
+"1.2//EN\"\n"
+"                            \"http://jboss.com/products/seam/components-1.2."
+"dtd\"&gt;\n"
+"&lt;components&gt;\n"
+"\n"
+"    &lt;component class=\"org.jboss.seam.core.init\"&gt;\n"
+"        &lt;property name=\"debug\"&gt;true&lt;/property&gt;\n"
+"        &lt;property name=\"jndiPattern\"&gt;@jndiPattern@&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"    &lt;component name=\"org.jboss.sean.core.ejb\" installed=\"@embeddedEjb@"
+"\" /&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"&gt;\n"
+"&lt;!DOCTYPE components PUBLIC \"-//JBoss/Seam Component Configuration DTD "
+"1.2//EN\"\n"
+"                            \"http://jboss.com/products/seam/components-1.2."
+"dtd\"&gt;\n"
+"&lt;components&gt;\n"
+"\n"
+"    &lt;component class=\"org.jboss.seam.core.init\"&gt;\n"
+"        &lt;property name=\"debug\"&gt;true&lt;/property&gt;\n"
+"        &lt;property name=\"jndiPattern\"&gt;@jndiPattern@&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"    &lt;component name=\"org.jboss.sean.core.ejb\" installed=\"@embeddedEjb@"
+"\" /&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:159
+#, no-c-format
+msgid ""
+"As you can see, this is somewhat verbose. Even worse, the component and "
+"attribute names cannot be validated at development time."
+msgstr "Como você pode perceber isto é um tipo de verbose. Os nomes do atributo e componente não podem ser validados no período de implementação."
+
+#. Tag: para
+#: Xml.xml:162
+#, no-c-format
+msgid "The namespaced version looks like this:"
+msgstr "A versão de espaço de nomes parece-se com isto:"
+
+#. Tag: programlisting
+#: Xml.xml:165
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                                        http://jboss.com/products/seam/core-"
+"1.2.xsd \n"
+"                 http://jboss.com/products/seam/components \n"
+"                                        http://jboss.com/products/seam/"
+"components-1.2.xsd\"&gt;\n"
+"\n"
+"    &lt;core:init debug=\"true\" jndi-pattern=\"@jndiPattern@\"/&gt;\n"
+"\n"
+"    &lt;core:ejb installed=\"@embeddedEjb@\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                                        http://jboss.com/products/seam/core-"
+"1.2.xsd \n"
+"                 http://jboss.com/products/seam/components \n"
+"                                        http://jboss.com/products/seam/"
+"components-1.2.xsd\"&gt;\n"
+"\n"
+"    &lt;core:init debug=\"true\" jndi-pattern=\"@jndiPattern@\"/&gt;\n"
+"\n"
+"    &lt;core:ejb installed=\"@embeddedEjb@\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:166
+#, no-c-format
+msgid ""
+"Even though the schema declarations are verbose, the actual XML content is "
+"lean and easy to understand. The schemas provide detailed information about "
+"each component and the attributes available, allowing XML editors to offer "
+"intelligent autocomplete. The use of namespaced elements makes generating "
+"and maintaining correct <literal>components.xml</literal> files much simpler."
+msgstr "Mesmo que as declarações de esquema são verboses, o conteúdo XML atual é fácil de se entender. O esquemas fornecem informações detalhadas sobre cada componente e atributos disponíveis, permitindo que editores XML ofereçam um autocomplete inteligente. O uso dos elementos de nome espaçado faz com que a geração e manutenção correta dos arquivos de <literal>components.xml</literal> sejam muito mais simples."
+
+#. Tag: para
+#: Xml.xml:169
+#, no-c-format
+msgid ""
+"Now, this works great for the built-in Seam components, but what about user "
+"components? There are two options. First, Seam supports mixing the two "
+"models, allowing the use of the generic <literal>&lt;component&gt;</literal> "
+"declarations for user components, along with namespaced declarations for "
+"built-in components. But even better, Seam allows you to quickly declare "
+"namespaces for your own components."
+msgstr "Isto funciona muito bem para os componentes Seam internos, mas como isto funciona para os componentes do usuário? Existem duas opções para isto. A primeira, o Seam suporta a mistura de dois modelos, permitindo o uso de declarações de <literal>&lt;component&gt;</literal> genérico para componentes de usuário, juntamente com as declarações de nome espaçado para componentes internos. Adicionado a isto, o Seam permite que você declare rapidamente os espaços de nome para seus próprios componentes."
+
+#. Tag: para
+#: Xml.xml:172
+#, no-c-format
+msgid ""
+"Any Java package can be associated with an XML namespace by annotating the "
+"package with the <literal>@Namespace</literal> annotation. (Package-level "
+"annotations are declared in a file named <literal>package-info.java</"
+"literal> in the package directory.) Here is an example from the seampay demo:"
+msgstr ""
+"Qualquer pacote Java pode ser associado com um espaço de nome XML pela anotação do pacote com a anotação <literal>@Namespace</literal>. (As anotações de nível de pacote são declaradas num arquivo nomeado <literal>package-info.java</"
+"literal> no diretório do pacote.) Segue abaixo um exemplo do seampay demo:"
+
+#. Tag: programlisting
+#: Xml.xml:175
+#, no-c-format
+msgid ""
+"@Namespace(value=\"http://jboss.com/products/seam/examples/seampay\")\n"
+"package org.jboss.seam.example.seampay;\n"
+"\n"
+"import org.jboss.seam.annotations.Namespace;"
+msgstr ""
+"@Namespace(value=\"http://jboss.com/products/seam/examples/seampay\")\n"
+"package org.jboss.seam.example.seampay;\n"
+"\n"
+"import org.jboss.seam.annotations.Namespace;"
+
+#. Tag: para
+#: Xml.xml:176
+#, no-c-format
+msgid ""
+"That is all you need to do to use the namespaced style in "
+"<literal>components.xml</literal>! Now we can write:"
+msgstr "Isto é tudo o que você precisa fazer para usar o estilo de nome espaçado nos <literal>components.xml</literal>. Podemos gravar agora:"
+
+#. Tag: programlisting
+#: Xml.xml:179
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pay=\"http://jboss.com/products/seam/examples/seampay\"\n"
+"            ... &gt;\n"
+"\n"
+"    &lt;pay:payment-home new-instance=\"#{newPayment}\"\n"
+"                      created-message=\"Created a new payment to #"
+"{newPayment.payee}\" /&gt;\n"
+"\n"
+"    &lt;pay:payment name=\"newPayment\"\n"
+"                 payee=\"Somebody\"\n"
+"                 account=\"#{selectedAccount}\"\n"
+"                 payment-date=\"#{currentDatetime}\"\n"
+"                 created-date=\"#{currentDatetime}\" /&gt;\n"
+"     ...\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pay=\"http://jboss.com/products/seam/examples/seampay\"\n"
+"            ... &gt;\n"
+"\n"
+"    &lt;pay:payment-home new-instance=\"#{newPayment}\"\n"
+"                      created-message=\"Created a new payment to #"
+"{newPayment.payee}\" /&gt;\n"
+"\n"
+"    &lt;pay:payment name=\"newPayment\"\n"
+"                 payee=\"Somebody\"\n"
+"                 account=\"#{selectedAccount}\"\n"
+"                 payment-date=\"#{currentDatetime}\"\n"
+"                 created-date=\"#{currentDatetime}\" /&gt;\n"
+"     ...\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:180
+#, no-c-format
+msgid "<para>Or:</para>"
+msgstr "<para>Ou:</para>"
+
+#. Tag: programlisting
+#: Xml.xml:183
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pay=\"http://jboss.com/products/seam/examples/seampay\"\n"
+"            ... &gt;\n"
+"\n"
+"    &lt;pay:payment-home&gt;\n"
+"        &lt;pay:new-instance&gt;\"#{newPayment}\"&lt;/pay:new-instance&gt;\n"
+"        &lt;pay:created-message&gt;Created a new payment to #{newPayment."
+"payee}&lt;/pay:created-message&gt;\n"
+"    &lt;/pay:payment-home&gt;\n"
+"    \n"
+"    &lt;pay:payment name=\"newPayment\"&gt;\n"
+"        &lt;pay:payee&gt;Somebody\"&lt;/pay:payee&gt;\n"
+"        &lt;pay:account&gt;#{selectedAccount}&lt;/pay:account&gt;\n"
+"        &lt;pay:payment-date&gt;#{currentDatetime}&lt;/pay:payment-date&gt;\n"
+"        &lt;pay:created-date&gt;#{currentDatetime}&lt;/pay:created-date&gt;\n"
+"     &lt;/pay:payment&gt;\n"
+"     ...\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pay=\"http://jboss.com/products/seam/examples/seampay\"\n"
+"            ... &gt;\n"
+"\n"
+"    &lt;pay:payment-home&gt;\n"
+"        &lt;pay:new-instance&gt;\"#{newPayment}\"&lt;/pay:new-instance&gt;\n"
+"        &lt;pay:created-message&gt;Created a new payment to #{newPayment."
+"payee}&lt;/pay:created-message&gt;\n"
+"    &lt;/pay:payment-home&gt;\n"
+"    \n"
+"    &lt;pay:payment name=\"newPayment\"&gt;\n"
+"        &lt;pay:payee&gt;Somebody\"&lt;/pay:payee&gt;\n"
+"        &lt;pay:account&gt;#{selectedAccount}&lt;/pay:account&gt;\n"
+"        &lt;pay:payment-date&gt;#{currentDatetime}&lt;/pay:payment-date&gt;\n"
+"        &lt;pay:created-date&gt;#{currentDatetime}&lt;/pay:created-date&gt;\n"
+"     &lt;/pay:payment&gt;\n"
+"     ...\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:184
+#, no-c-format
+msgid ""
+"These examples illustrate the two usage models of a namespaced element. In "
+"the first declaration, the <literal>&lt;pay:payment-home&gt;</literal> "
+"references the <literal>paymentHome</literal> component:"
+msgstr "Estes exemplos ilustram os dois modelos de uso do elemento de nome espaçado. Na primeira declaração, o <literal>&lt;pay:payment-home&gt;</literal> refere-se ao componente <literal>paymentHome</literal>:"
+
+#. Tag: programlisting
+#: Xml.xml:187
+#, no-c-format
+msgid ""
+"package org.jboss.seam.example.seampay;\n"
+"...\n"
+"@Name(\"paymentHome\")\n"
+"public class PaymentController\n"
+"    extends EntityHome&lt;Payment&gt;\n"
+"{\n"
+"    ... \n"
+"}"
+msgstr ""
+"package org.jboss.seam.example.seampay;\n"
+"...\n"
+"@Name(\"paymentHome\")\n"
+"public class PaymentController\n"
+"    extends EntityHome&lt;Payment&gt;\n"
+"{\n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Xml.xml:188
+#, no-c-format
+msgid ""
+"The element name is the hyphenated form of the component name. The "
+"attributes of the element are the hyphenated form of the property names."
+msgstr "O nome do elemento é um formulário unido por meio de hífen de nome de componente. Os atributos do elemento é um formulário unido por meio de hífen dos nomes de propriedade."
+
+#. Tag: para
+#: Xml.xml:191
+#, no-c-format
+msgid ""
+"In the second declaration, the <literal>&lt;pay:payment&gt;</literal> "
+"element refers to the <literal>Payment</literal> class in the <literal>org."
+"jboss.seam.example.seampay</literal> package. In this case <literal>Payment</"
+"literal> is an entity that is being declared as a Seam component:"
+msgstr ""
+"A segunda declaração, o elemento <literal>&lt;pay:payment&gt;</literal> refere-se à classe <literal>Payment</literal> no pacote <literal>org."
+"jboss.seam.example.seampay</literal>. Neste caso, o <literal>Payment</"
+"literal> é uma entidade da qual é declarada como um componente Seam:"
+
+#. Tag: programlisting
+#: Xml.xml:194
+#, no-c-format
+msgid ""
+"package org.jboss.seam.example.seampay;\n"
+"...\n"
+"@Entity\n"
+"public class Payment\n"
+"    implements Serializable\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+"package org.jboss.seam.example.seampay;\n"
+"...\n"
+"@Entity\n"
+"public class Payment\n"
+"    implements Serializable\n"
+"{\n"
+"    ...\n"
+"}"
+
+#. Tag: para
+#: Xml.xml:195
+#, no-c-format
+msgid ""
+"If we want validation and autocompletion to work for user-defined "
+"components, we will need a schema. Seam does not yet provide a mechanism to "
+"automatically generate a schema for a set of components, so it is necessary "
+"to generate one manually. The schema definitions for the standard Seam "
+"packages can be used for guidance."
+msgstr "Caso desejarmos efetuar a validação e autocompletion para trabalhar para os componentes de usuários definidos, teremos um esquema. O Seam não fornece ainda um mecanismo para gerar automaticamente um esquema para um grupo de componentes, sendo então necessário gerar um manualmente. As definições de esquema para os pacotes Seam podem ser usados como guia."
+
+#. Tag: para
+#: Xml.xml:198
+#, no-c-format
+msgid "The following are the the namespaces used by Seam:"
+msgstr "Segue abaixo os espaços de nomes usados pelo Seam:"
+
+#. Tag: para
+#: Xml.xml:203
+#, no-c-format
+msgid ""
+"components &mdash; <literal>http://jboss.com/products/seam/components</"
+"literal>"
+msgstr ""
+"components &mdash; <literal>http://jboss.com/products/seam/components</"
+"literal>"
+
+#. Tag: para
+#: Xml.xml:208
+#, no-c-format
+msgid "core &mdash; <literal>http://jboss.com/products/seam/core</literal>"
+msgstr "core &mdash; <literal>http://jboss.com/products/seam/core</literal>"
+
+#. Tag: para
+#: Xml.xml:213
+#, no-c-format
+msgid "drools &mdash; <literal>http://jboss.com/products/seam/drools</literal>"
+msgstr "drools &mdash; <literal>http://jboss.com/products/seam/drools</literal>"
+
+#. Tag: para
+#: Xml.xml:218
+#, no-c-format
+msgid "framework &mdash; <literal>http://jboss.com/products/seam/framework</literal>"
+msgstr "framework &mdash; <literal>http://jboss.com/products/seam/framework</literal>"
+
+#. Tag: para
+#: Xml.xml:223
+#, no-c-format
+msgid "jms &mdash; <literal>http://jboss.com/products/seam/jms</literal>"
+msgstr "jms &mdash; <literal>http://jboss.com/products/seam/jms</literal>"
+
+#. Tag: para
+#: Xml.xml:228
+#, no-c-format
+msgid "remoting &mdash; <literal>http://jboss.com/products/seam/remoting</literal>"
+msgstr "remoting &mdash; <literal>http://jboss.com/products/seam/remoting</literal>"
+
+#. Tag: para
+#: Xml.xml:233
+#, no-c-format
+msgid "theme &mdash; <literal>http://jboss.com/products/seam/theme</literal>"
+msgstr "theme &mdash; <literal>http://jboss.com/products/seam/theme</literal>"
+
+#. Tag: para
+#: Xml.xml:238
+#, no-c-format
+msgid "security &mdash; <literal>http://jboss.com/products/seam/security</literal>"
+msgstr "security &mdash; <literal>http://jboss.com/products/seam/security</literal>"
+
+#. Tag: para
+#: Xml.xml:243
+#, no-c-format
+msgid "mail &mdash; <literal>http://jboss.com/products/seam/mail</literal>"
+msgstr "mail &mdash; <literal>http://jboss.com/products/seam/mail</literal>"
+
+#. Tag: para
+#: Xml.xml:248
+#, no-c-format
+msgid "web &mdash; <literal>http://jboss.com/products/seam/web</literal>"
+msgstr "web &mdash; <literal>http://jboss.com/products/seam/web</literal>"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/publican.cfg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/publican.cfg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/publican.cfg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,7 @@
+# Config::Simple 4.59
+# Mon Nov 23 16:28:11 2009
+
+debug: 1
+xml_lang: en-US
+brand: JBoss
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Annotations.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Annotations.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Annotations.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2030 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Annotations.xml:10
+#, no-c-format
+msgid "Seam annotations"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:11
+#, no-c-format
+msgid ""
+"When you write a Seam application, you'll use a lot of annotations. Seam "
+"lets you use annotations to achieve a declarative style of programming. Most "
+"of the annotations you'll use are defined by the EJB 3.0 specification. The "
+"annotations for data validation are defined by the Hibernate Validator "
+"package. Finally, Seam defines its own set of annotations, which we'll "
+"describe in this chapter."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:14
+#, no-c-format
+msgid ""
+"All of these annotations are defined in the package <literal>org.jboss.seam."
+"annotations</literal>."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:18
+#, no-c-format
+msgid "Annotations for component definition"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:19
+#, no-c-format
+msgid ""
+"The first group of annotations lets you define a Seam component. These "
+"annotations appear on the component class."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:24
+#, no-c-format
+msgid "@Name"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:26
+#, no-c-format
+msgid "@Name(\"componentName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:27
+#, no-c-format
+msgid ""
+"Defines the Seam component name for a class. This annotation is required for "
+"all Seam components."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:33
+#, no-c-format
+msgid "@Scope"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:35
+#, no-c-format
+msgid "@Scope(ScopeType.CONVERSATION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:36
+#, no-c-format
+msgid ""
+"Defines the default context of the component. The possible values are "
+"defined by the <literal>ScopeType</literal> enumeration: <literal>EVENT, "
+"PAGE, CONVERSATION, SESSION, BUSINESS_PROCESS, APPLICATION, STATELESS</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:39
+#, no-c-format
+msgid ""
+"When no scope is explicitly specified, the default depends upon the "
+"component type. For stateless session beans, the default is "
+"<literal>STATELESS</literal>. For entity beans and stateful session beans, "
+"the default is <literal>CONVERSATION</literal>. For JavaBeans, the default "
+"is <literal>EVENT</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:45
+#, no-c-format
+msgid "@Role"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:47
+#, no-c-format
+msgid "@Role(name=\"roleName\", scope=ScopeType.SESSION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:48
+#, no-c-format
+msgid ""
+"Allows a Seam component to be bound to multiple contexts variables. The "
+"<literal>@Name</literal>/<literal>@Scope</literal> annotations define a "
+"\"default role\". Each <literal>@Role</literal> annotation defines an "
+"additional role."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:53
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the context variable name."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:58
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; the context variable scope. When no scope "
+"is explicitly specified, the default depends upon the component type, as "
+"above."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:66
+#, no-c-format
+msgid "@Roles"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:68
+#, no-c-format
+msgid ""
+"@Roles({\n"
+"        @Role(name=\"user\", scope=ScopeType.CONVERSATION),\n"
+"        @Role(name=\"currentUser\", scope=ScopeType.SESSION)\n"
+"    })"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:69
+#, no-c-format
+msgid "Allows specification of multiple additional roles."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:75
+#, no-c-format
+msgid "@Intercept"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:77
+#, no-c-format
+msgid "@Intercept(InterceptionType.ALWAYS)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:78
+#, no-c-format
+msgid ""
+"Determines when Seam interceptors are active. The possible values are "
+"defined by the <literal>InterceptionType</literal> enumeration: "
+"<literal>ALWAYS, AFTER_RESTORE_VIEW, AFTER_UPDATE_MODEL_VALUES, "
+"INVOKE_APPLICATION, NEVER</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:81
+#, no-c-format
+msgid ""
+"When no interception type is explicitly specified, the default depends upon "
+"the component type. For entity beans, the default is <literal>NEVER</"
+"literal>. For session beans, message driven beans and JavaBeans, the default "
+"is <literal>ALWAYS</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:87
+#, no-c-format
+msgid "@JndiName"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:89
+#, no-c-format
+msgid "@JndiName(\"my/jndi/name\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:90
+#, no-c-format
+msgid ""
+"Specifies the JNDI name that Seam will use to look up the EJB component. If "
+"no JNDI name is explicitly specified, Seam will use the JNDI pattern "
+"specified by <literal>org.jboss.seam.core.init.jndiPattern</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:96
+#, no-c-format
+msgid "@Conversational"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:98
+#, no-c-format
+msgid "@Conversational(ifNotBegunOutcome=\"error\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:99
+#, no-c-format
+msgid ""
+"Specifies that a conversation scope component is conversational, meaning "
+"that no method of the component can be called unless a long-running "
+"conversation started by this component is active (unless the method would "
+"begin a new long-running conversation)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:105
+#, no-c-format
+msgid "<literal>@Startup</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:107
+#, no-c-format
+msgid "@Startup(depends={\"org.jboss.core.jndi\", \"org.jboss.core.jta\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:108
+#, no-c-format
+msgid ""
+"Specifies that an application scope component is started immediately at "
+"initialization time. This is mainly used for certain built-in components "
+"that bootstrap critical infrastructure such as JNDI, datasources, etc."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:111
+#, no-c-format
+msgid "<programlisting>@Startup</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:112
+#, no-c-format
+msgid ""
+"Specifies that a session scope component is started immediately at session "
+"creation time."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:117
+#, no-c-format
+msgid ""
+"<literal>depends</literal> &mdash; specifies that the named components must "
+"be started first, if they are installed."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:125
+#, no-c-format
+msgid "@Install"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:127
+#, no-c-format
+msgid "@Install(false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:128
+#, no-c-format
+msgid ""
+"Specifies whether or not a component should be installed by default. The "
+"lack of an @Install annotation indicates a component should be installed."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:131
+#, no-c-format
+msgid "@Install(dependencies=\"org.jboss.seam.core.jbpm\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:132
+#, no-c-format
+msgid ""
+"Specifies that a component should only be stalled if the components listed "
+"as dependencies are also installed."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:135
+#, no-c-format
+msgid "@Install(genericDependencies=ManagedQueueSender.class)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:136
+#, no-c-format
+msgid ""
+"Specifies that a component should only be installed if a component that is "
+"implemented by a certain class is installed. This is useful when the "
+"dependency doesn't have a single well-known name."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:139
+#, no-c-format
+msgid "@Install(classDependencies=\"org.hibernate.Session\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:140
+#, no-c-format
+msgid ""
+"Specifies that a component should only be installed if the named class is in "
+"the classpath."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:143
+#, no-c-format
+msgid "@Install(precedence=BUILT_IN)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:144
+#, no-c-format
+msgid ""
+"Specifies the precedence of the component. If multiple components with the "
+"same name exist, the one with the higher precedence will be installed. The "
+"defined precendence values are:"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:149
+#, no-c-format
+msgid ""
+"<literal>BUILT_IN</literal> &mdash; Precedence of all built-in Seam "
+"components"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:154
+#, no-c-format
+msgid ""
+"<literal>FRAMEWORK</literal> &mdash; Precedence to use for components of "
+"frameworks which extend Seam"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:159
+#, no-c-format
+msgid ""
+"<literal>APPLICATION</literal> &mdash; Predence of application components "
+"(the default precedence)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:164
+#, no-c-format
+msgid ""
+"<literal>DEPLOYMENT</literal> &mdash; Precedence to use for components which "
+"override application components in a particular deployment"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:172
+#, no-c-format
+msgid "@Synchronized"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:174
+#, no-c-format
+msgid "@Synchronized(timeout=1000)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:175
+#, no-c-format
+msgid ""
+"Specifies that a component is accessed concurrently by multiple clients, and "
+"that Seam should serialize requests. If a request is not able to obtain its "
+"lock on the component in the given timeout period, an exception will be "
+"raised."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:181
+#, no-c-format
+msgid "<literal>@ReadOnly</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:183
+#, no-c-format
+msgid "<programlisting>@ReadOnly</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:184
+#, no-c-format
+msgid ""
+"Specifies that a JavaBean component or component method does not require "
+"state replication at the end of the invocation."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:193
+#, no-c-format
+msgid "Annotations for bijection"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:194
+#, no-c-format
+msgid ""
+"The next two annotations control bijection. These attributes occur on "
+"component instance variables or property accessor methods."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:199
+#, no-c-format
+msgid "<literal>@In</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:201
+#, no-c-format
+msgid "<programlisting>@In</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:202
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. If the context "
+"variable is null, an exception will be thrown."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:205
+#, no-c-format
+msgid "@In(required=false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:206
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. The context variable "
+"may be null."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:209
+#, no-c-format
+msgid "@In(create=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:210
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. If the context "
+"variable is null, an instance of the component is instantiated by Seam."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:213
+#, no-c-format
+msgid "@In(value=\"contextVariableName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:214 Annotations.xml:259
+#, no-c-format
+msgid ""
+"Specifies the name of the context variable explicitly, instead of using the "
+"annotated instance variable name."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:217
+#, no-c-format
+msgid "@In(value=\"#{customer.addresses['shipping']}\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:218
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected by evaluating a JSF "
+"EL expression at the beginning of each component invocation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:223
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"Default to the name of the component attribute. Alternatively, specifies a "
+"JSF EL expression, surrounded by <literal>#{...}</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:228
+#, no-c-format
+msgid ""
+"<literal>create</literal> &mdash; specifies that Seam should instantiate the "
+"component with the same name as the context variable if the context variable "
+"is undefined (null) in all contexts. Default to false."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:233
+#, no-c-format
+msgid ""
+"<literal>required</literal> &mdash; specifies Seam should throw an exception "
+"if the context variable is undefined in all contexts."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:241
+#, no-c-format
+msgid "<literal>@Out</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:243
+#, no-c-format
+msgid "<programlisting>@Out</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:244
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is a Seam component is to be "
+"outjected to its context variable at the end of the invocation. If the "
+"attribute is null, an exception is thrown."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:247
+#, no-c-format
+msgid "@Out(required=false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:248
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is a Seam component is to be "
+"outjected to its context variable at the end of the invocation. The "
+"attribute may be null."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:251
+#, no-c-format
+msgid "@Out(scope=ScopeType.SESSION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:252
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is <emphasis>not</emphasis> a Seam "
+"component type is to be outjected to a specific scope at the end of the "
+"invocation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:255
+#, no-c-format
+msgid ""
+"Alternatively, if no scope is explicitly specified, the scope of the "
+"component with the <literal>@Out</literal> attribute is used (or the "
+"<literal>EVENT</literal> scope if the component is stateless)."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:258
+#, no-c-format
+msgid "@Out(value=\"contextVariableName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:264
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"Default to the name of the component attribute."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:269
+#, no-c-format
+msgid ""
+"<literal>required</literal> &mdash; specifies Seam should throw an exception "
+"if the component attribute is null during outjection."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:277
+#, no-c-format
+msgid ""
+"Note that it is quite common for these annotations to occur together, for "
+"example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:280
+#, no-c-format
+msgid "@In(create=true) @Out private User currentUser;"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:281
+#, no-c-format
+msgid ""
+"The next annotation supports the <emphasis>manager component</emphasis> "
+"pattern, where a Seam component that manages the lifecycle of an instance of "
+"some other class that is to be injected. It appears on a component getter "
+"method."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:286
+#, no-c-format
+msgid "<literal>@Unwrap</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:288
+#, no-c-format
+msgid "<programlisting>@Unwrap</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:289
+#, no-c-format
+msgid ""
+"Specifies that the object returned by the annotated getter method is the "
+"thing that is injected instead of the component instance itself."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:295
+#, no-c-format
+msgid ""
+"The next annotation supports the <emphasis>factory component</emphasis> "
+"pattern, where a Seam component is responsible for initializing the value of "
+"a context variable. This is especially useful for initializing any state "
+"needed for rendering the response to a non-faces request. It appears on a "
+"component method."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:300
+#, no-c-format
+msgid "@Factory"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:302
+#, no-c-format
+msgid "@Factory(\"processInstance\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:303
+#, no-c-format
+msgid ""
+"Specifies that the method of the component is used to initialize the value "
+"of the named context variable, when the context variable has no value. This "
+"style is used with methods that return <literal>void</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:306
+#, no-c-format
+msgid "@Factory(\"processInstance\", scope=CONVERSATION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:307
+#, no-c-format
+msgid ""
+"Specifies that the method returns a value that Seam should use to initialize "
+"the value of the named context variable, when the context variable has no "
+"value. This style is used with methods that return a value. If no scope is "
+"explicitly specified, the scope of the component with the <literal>@Factory</"
+"literal> method is used (unless the component is stateless, in which case "
+"the <literal>EVENT</literal> context is used)."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:312
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"If the method is a getter method, default to the JavaBeans property name."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:317
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; specifies the scope that Seam should bind "
+"the returned value to. Only meaningful for factory methods which return a "
+"value."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:325
+#, no-c-format
+msgid "This annotation lets you inject a <literal>Log</literal>:"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:330
+#, no-c-format
+msgid "@Logger"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:332
+#, no-c-format
+msgid "@Logger(\"categoryName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:333
+#, no-c-format
+msgid ""
+"Specifies that a component field is to be injected with an instance of "
+"<literal>org.jboss.seam.log.Log</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:338
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the log category. "
+"Default to the name of the component class."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:346
+#, no-c-format
+msgid "The last annotation lets you inject a request parameter value:"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:351
+#, no-c-format
+msgid "@RequestParameter"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:353
+#, no-c-format
+msgid "@RequestParameter(\"parameterName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:354
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected with the value of a "
+"request parameter. Basic type conversions are performed automatically."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:359
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the request "
+"parameter. Default to the name of the component attribute."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:370
+#, no-c-format
+msgid "Annotations for component lifecycle methods"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:371
+#, no-c-format
+msgid ""
+"These annotations allow a component to react to its own lifecycle events. "
+"They occur on methods of the component. There may be only one of each per "
+"component class."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:376
+#, no-c-format
+msgid "<literal>@Create</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:378
+#, no-c-format
+msgid "<programlisting>@Create</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:379
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when an instance of the component "
+"is instantiated by Seam. Note that create methods are only supported for "
+"JavaBeans and stateful session beans."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:385
+#, no-c-format
+msgid "<literal>@Destroy</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:387
+#, no-c-format
+msgid "<programlisting>@Destroy</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:388
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when the context ends and its "
+"context variables are destroyed. Note that create methods are only supported "
+"for JavaBeans and stateful session beans."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:391
+#, no-c-format
+msgid ""
+"Note that all stateful session bean components <emphasis>must</emphasis> "
+"define a method annotated <literal>@Destroy @Remove</literal> in order to "
+"guarantee destruction of the stateful bean when a context ends."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:394
+#, no-c-format
+msgid ""
+"Destroy methods should be used only for cleanup. <emphasis>Seam catches, "
+"logs and swallows any exception that propagates out of a destroy method.</"
+"emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:400
+#, no-c-format
+msgid "@Observer"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:402
+#, no-c-format
+msgid "@Observer(\"somethingChanged\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:403
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when a component-driven event of "
+"the specified type occurs."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:406
+#, no-c-format
+msgid "@Observer(value=\"somethingChanged\",create=false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:407
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when an event of the specified "
+"type occurs but that an instance should not be created if one doesn't exist. "
+"If an instance does not exist and create is false, the event will not be "
+"observed. The default value for create is true."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:416
+#, no-c-format
+msgid "Annotations for context demarcation"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:417
+#, no-c-format
+msgid ""
+"These annotations provide declarative conversation demarcation. They appear "
+"on methods of Seam components, usually action listener methods."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:420
+#, no-c-format
+msgid ""
+"Every web request has a conversation context associated with it. Most of "
+"these conversations end at the end of the request. If you want a "
+"conversation that span multiple requests, you must \"promote\" the current "
+"conversation to a <emphasis>long-running conversation</emphasis> by calling "
+"a method marked with <literal>@Begin</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:425
+#, no-c-format
+msgid "<literal>@Begin</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:427
+#, no-c-format
+msgid "<programlisting>@Begin</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:428
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation begins when this method returns a "
+"non-null outcome without exception."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:431
+#, no-c-format
+msgid "@Begin(ifOutcome={\"success\", \"continue\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:432
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation begins when this action listener "
+"method returns with one of the given outcomes."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:435
+#, no-c-format
+msgid "@Begin(join=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:436
+#, no-c-format
+msgid ""
+"Specifies that if a long-running conversation is already in progress, the "
+"conversation context is simply propagated."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:439
+#, no-c-format
+msgid "@Begin(nested=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:440
+#, no-c-format
+msgid ""
+"Specifies that if a long-running conversation is already in progress, a new "
+"<emphasis>nested</emphasis> conversation context begins. The nested "
+"conversation will end when the next <literal>@End</literal> is encountered, "
+"and the outer conversation will resume. It is perfectly legal for multiple "
+"nested conversations to exist concurrently in the same outer conversation."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:443
+#, no-c-format
+msgid "@Begin(pageflow=\"process definition name\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:444
+#, no-c-format
+msgid ""
+"Specifies a jBPM process definition name that defines the pageflow for this "
+"conversation."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:447
+#, no-c-format
+msgid "@Begin(flushMode=FlushModeType.MANUAL)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:448
+#, no-c-format
+msgid ""
+"Specify the flush mode of any Seam-managed persistence contexts. "
+"<literal>flushMode=FlushModeType.MANUAL</literal> supports the use of "
+"<emphasis>atomic conversations</emphasis> where all write operations are "
+"queued in the conversation context until an explicit call to <literal>flush()"
+"</literal> (which usually occurs at the end of the conversation)."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:454
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in a new long-running conversation context."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:459
+#, no-c-format
+msgid ""
+"<literal>join</literal> &mdash; determines the behavior when a long-running "
+"conversation is already in progress. If <literal>true</literal>, the context "
+"is propagated. If <literal>false</literal>, an exception is thrown. Default "
+"to <literal>false</literal>. This setting is ignored when "
+"<literal>nested=true</literal> is specified"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:464
+#, no-c-format
+msgid ""
+"<literal>nested</literal> &mdash; specifies that a nested conversation "
+"should be started if a long-running conversation is already in progress."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:469 Annotations.xml:526 Annotations.xml:550
+#, no-c-format
+msgid ""
+"<literal>flushMode</literal> &mdash; set the flush mode of any Seam-managed "
+"Hibernate sessions or JPA persistence contexts that are created during this "
+"conversation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:474
+#, no-c-format
+msgid ""
+"<literal>pageflow</literal> &mdash; a process definition name of a jBPM "
+"process definition deployed via <literal>org.jboss.seam.core.jbpm."
+"pageflowDefinitions.</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:483
+#, no-c-format
+msgid "<literal>@End</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:485
+#, no-c-format
+msgid "<programlisting>@End</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:486
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation ends when this method returns a "
+"non-null outcome without exception."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:489
+#, no-c-format
+msgid ""
+"@End(ifOutcome={\"success\", \"error\"}, evenIfException={SomeException."
+"class, OtherException.class})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:490
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation ends when this action listener "
+"method returns with one of the given outcomes or throws one of the specified "
+"classes of exception."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:496
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in the end of the current long-running conversation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:501 Annotations.xml:585
+#, no-c-format
+msgid ""
+"<literal>beforeRedirect</literal> &mdash; by default, the conversation will "
+"not actually be destroyed until after any redirect has occurred. Setting "
+"<literal>beforeRedirect=true</literal> specifies that the conversation "
+"should be destroyed at the end of the current request, and that the redirect "
+"will be processed in a new temporary conversation context."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:510
+#, no-c-format
+msgid "<literal>@StartTask</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:512
+#, no-c-format
+msgid "<programlisting>@StartTask</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:513
+#, no-c-format
+msgid ""
+"\"Starts\" a jBPM task. Specifies that a long-running conversation begins "
+"when this method returns a non-null outcome without exception. This "
+"conversation is associated with the jBPM task specified in the named request "
+"parameter. Within the context of this conversation, a business process "
+"context is also defined, for the business process instance of the task "
+"instance."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:516
+#, no-c-format
+msgid ""
+"The jBPM <literal>TaskInstance</literal> will be available in a request "
+"context variable named <literal>taskInstance</literal>. The jPBM "
+"<literal>ProcessInstance</literal> will be available in a request context "
+"variable named <literal>processInstance</literal>. (Of course, these objects "
+"are available for injection via <literal>@In</literal>.)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:521 Annotations.xml:545
+#, no-c-format
+msgid ""
+"<literal>taskIdParameter</literal> &mdash; the name of a request parameter "
+"which holds the id of the task. Default to <literal>\"taskId\"</literal>, "
+"which is also the default used by the Seam <literal>taskList</literal> JSF "
+"component."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:534
+#, no-c-format
+msgid "<literal>@BeginTask</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:536
+#, no-c-format
+msgid "<programlisting>@BeginTask</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:537
+#, no-c-format
+msgid ""
+"Resumes work on an incomplete jBPM task. Specifies that a long-running "
+"conversation begins when this method returns a non-null outcome without "
+"exception. This conversation is associated with the jBPM task specified in "
+"the named request parameter. Within the context of this conversation, a "
+"business process context is also defined, for the business process instance "
+"of the task instance."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:540
+#, no-c-format
+msgid ""
+"The jBPM <literal>TaskInstance</literal> will be available in a request "
+"context variable named <literal>taskInstance</literal>. The jPBM "
+"<literal>ProcessInstance</literal> will be available in a request context "
+"variable named <literal>processInstance</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:558
+#, no-c-format
+msgid "<literal>@EndTask</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:560
+#, no-c-format
+msgid "<programlisting>@EndTask</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:561
+#, no-c-format
+msgid ""
+"\"Ends\" a jBPM task. Specifies that a long-running conversation ends when "
+"this method returns a non-null outcome, and that the current task is "
+"complete. Triggers a jBPM transition. The actual transition triggered will "
+"be the default transition unless the application has called "
+"<literal>Transition.setName()</literal> on the built-in component named "
+"<literal>transition</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:564
+#, no-c-format
+msgid "@EndTask(transition=\"transitionName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:565
+#, no-c-format
+msgid "Triggers the given jBPM transition."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:568
+#, no-c-format
+msgid "@EndTask(ifOutcome={\"success\", \"continue\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:569
+#, no-c-format
+msgid ""
+"Specifies that the task ends when this method returns one of the listed "
+"outcomes."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:575
+#, no-c-format
+msgid ""
+"<literal>transition</literal> &mdash; the name of the jBPM transition to be "
+"triggered when ending the task. Defaults to the default transition."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:580
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in the end of the task."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:594
+#, no-c-format
+msgid "@CreateProcess"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:596
+#, no-c-format
+msgid "@CreateProcess(definition=\"process definition name\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:597
+#, no-c-format
+msgid ""
+"Creates a new jBPM process instance when the method returns a non-null "
+"outcome without exception. The <literal>ProcessInstance</literal> object "
+"will be available in a context variable named <literal>processInstance</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:602
+#, no-c-format
+msgid ""
+"<literal>definition</literal> &mdash; the name of the jBPM process "
+"definition deployed via <literal>org.jboss.seam.core.jbpm."
+"processDefinitions</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:610
+#, no-c-format
+msgid "@ResumeProcess"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:612
+#, no-c-format
+msgid "@ResumeProcess(processIdParameter=\"processId\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:613
+#, no-c-format
+msgid ""
+"Re-enters the scope of an existing jBPM process instance when the method "
+"returns a non-null outcome without exception. The <literal>ProcessInstance</"
+"literal> object will be available in a context variable named "
+"<literal>processInstance</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:618
+#, no-c-format
+msgid ""
+"<literal>processIdParameter</literal> &mdash; the name a request parameter "
+"holding the process id. Default to <literal>\"processId\"</literal>."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:629
+#, no-c-format
+msgid "Annotations for transaction demarcation"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:630
+#, no-c-format
+msgid ""
+"Seam provides an annotation that lets you force a rollback of the JTA "
+"transaction for certain action listener outcomes."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:635
+#, no-c-format
+msgid "@Rollback"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:637
+#, no-c-format
+msgid "@Rollback(ifOutcome={\"failure\", \"not-found\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:638
+#, no-c-format
+msgid ""
+"If the outcome of the method matches any of the listed outcomes, or if no "
+"outcomes are listed, set the transaction to rollback only when the method "
+"completes."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:643
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; the JSF outcomes that cause a "
+"transaction rollback (no outcomes is interpreted to mean any outcome)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:651
+#, no-c-format
+msgid "<literal>@Transactional</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:653
+#, no-c-format
+msgid "<programlisting>@Transactional</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:654
+#, no-c-format
+msgid ""
+"Specifies that a JavaBean component should have a similar transactional "
+"behavior to the default behavior of a session bean component. ie. method "
+"invocations should take place in a transaction, and if no transaction exists "
+"when the method is called, a transaction will be started just for that "
+"method. This annotation may be applied at either class or method level."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:660
+#, no-c-format
+msgid ""
+"Seam applications usually use the standard EJB3 annotations for all other "
+"transaction demarcation needs."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:666
+#, no-c-format
+msgid "Annotations for exceptions"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:667
+#, no-c-format
+msgid ""
+"These annotations let you specify how Seam should handle an exception that "
+"propagates out of a Seam component."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:672
+#, no-c-format
+msgid "@Redirect"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:674
+#, no-c-format
+msgid "@Redirect(viewId=\"error.jsp\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:675
+#, no-c-format
+msgid ""
+"Specifies that the annotated exception causes a browser redirect to a "
+"specified view id."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:680
+#, no-c-format
+msgid ""
+"<literal>viewId</literal> &mdash; specifies the JSF view id to redirect to."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:685
+#, no-c-format
+msgid ""
+"<literal>message</literal> &mdash; a message to be displayed, default to the "
+"exception message."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:690 Annotations.xml:716
+#, no-c-format
+msgid ""
+"<literal>end</literal> &mdash; specifies that the long-running conversation "
+"should end, default to <literal>false</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:698
+#, no-c-format
+msgid "@HttpError"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:700
+#, no-c-format
+msgid "@HttpError(errorCode=404)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:701
+#, no-c-format
+msgid "Specifies that the annotated exception causes a HTTP error to be sent."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:706
+#, no-c-format
+msgid ""
+"<literal>errorCode</literal> &mdash; the HTTP error code, default to "
+"<literal>500</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:711
+#, no-c-format
+msgid ""
+"<literal>message</literal> &mdash; a message to be sent with the HTTP error, "
+"default to the exception message."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:727
+#, no-c-format
+msgid "Annotations for validation"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:728
+#, no-c-format
+msgid ""
+"This annotation triggers Hibernate Validator. It appears on a method of a "
+"Seam component, almost always an action listener method."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:731
+#, no-c-format
+msgid ""
+"Please refer to the documentation for the Hibernate Annotations package for "
+"information about the annotations defined by the Hibernate Validator "
+"framework."
+msgstr ""
+
+#. Tag: emphasis
+#: Annotations.xml:735
+#, no-c-format
+msgid ""
+"Note that use of <literal>@IfInvalid</literal> is now semi-deprecated and "
+"<literal>&lt;s:validateAll&gt;</literal> is now preferred."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:739
+#, no-c-format
+msgid "@IfInvalid"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:741
+#, no-c-format
+msgid "@IfInvalid(outcome=\"invalid\", refreshEntities=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:742
+#, no-c-format
+msgid ""
+"Specifies that Hibernate Validator should validate the component before the "
+"method is invoked. If the invocation fails, the specified outcome will be "
+"returned, and the validation failure messages returned by Hibernate "
+"Validator will be added to the <literal>FacesContext</literal>. Otherwise, "
+"the invocation will proceed."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:747
+#, no-c-format
+msgid ""
+"<literal>outcome</literal> &mdash; the JSF outcome when validation fails."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:752
+#, no-c-format
+msgid ""
+"<literal>refreshEntities</literal> &mdash; specifies that any invalid entity "
+"in the managed state should be refreshed from the database when validation "
+"fails. Default to <literal>false</literal>. (Useful with extended "
+"persistence contexts.)"
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:763
+#, no-c-format
+msgid "Annotations for Seam Remoting"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:764
+#, no-c-format
+msgid ""
+"Seam Remoting requires that the local interface of a session bean be "
+"annotated with the following annotation:"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:769
+#, no-c-format
+msgid "@WebRemote"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:771
+#, no-c-format
+msgid "@WebRemote(exclude=\"path.to.exclude\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:772
+#, no-c-format
+msgid ""
+"Indicates that the annotated method may be called from client-side "
+"JavaScript. The <literal>exclude</literal> property is optional and allows "
+"objects to be excluded from the result's object graph (see the Remoting "
+"chapter for more details)."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:781
+#, no-c-format
+msgid "Annotations for Seam interceptors"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:782
+#, no-c-format
+msgid "The following annotations appear on Seam interceptor classes."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:785
+#, no-c-format
+msgid ""
+"Please refer to the documentation for the EJB 3.0 specification for "
+"information about the annotations required for EJB interceptor definition."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:790
+#, no-c-format
+msgid "@Interceptor"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:792
+#, no-c-format
+msgid "@Interceptor(stateless=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:793
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is stateless and Seam may optimize "
+"replication."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:796
+#, no-c-format
+msgid "@Interceptor(type=CLIENT)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:797
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is a \"client-side\" interceptor that is "
+"called before the EJB container."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:800
+#, no-c-format
+msgid "@Interceptor(around={SomeInterceptor.class, OtherInterceptor.class})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:801
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is positioned higher in the stack than the "
+"given interceptors."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:804
+#, no-c-format
+msgid "@Interceptor(within={SomeInterceptor.class, OtherInterceptor.class})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:805
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is positioned deeper in the stack than the "
+"given interceptors."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:814
+#, no-c-format
+msgid "Annotations for asynchronicity"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:815
+#, no-c-format
+msgid ""
+"The following annotations are used to declare an asynchronous method, for "
+"example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:818
+#, no-c-format
+msgid ""
+"@Asynchronous public void scheduleAlert(Alert alert, @Expiration Date date) "
+"{ ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:819
+#, no-c-format
+msgid ""
+"@Asynchronous public Timer scheduleAlerts(Alert alert, @Expiration Date "
+"date, \n"
+"    @IntervalDuration long interval) { ... }"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:822
+#, no-c-format
+msgid "<literal>@Asynchronous</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:824
+#, no-c-format
+msgid "<programlisting>@Asynchronous</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:825
+#, no-c-format
+msgid "Specifies that the method call is processed asynchronously."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:831
+#, no-c-format
+msgid "<literal>@Duration</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:833
+#, no-c-format
+msgid "<programlisting>@Duration</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:834
+#, no-c-format
+msgid ""
+"Specifies that a parameter of the asynchronous call is the duration before "
+"the call is processed (or first processed for recurring calls)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:840
+#, no-c-format
+msgid "<literal>@Expiration</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:842
+#, no-c-format
+msgid "<programlisting>@Expiration</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:843
+#, no-c-format
+msgid ""
+"Specifies that a parameter of the asynchronous call is the datetime at which "
+"the call is processed (or first processed for recurring calls)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:849
+#, no-c-format
+msgid "<literal>@IntervalDuration</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:851
+#, no-c-format
+msgid "<programlisting>@IntervalDuration</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:852
+#, no-c-format
+msgid ""
+"Specifies that an asynchronous method call recurs, and that the annotationed "
+"parameter is duration between recurrences."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:861
+#, no-c-format
+msgid "Annotations for use with JSF <literal>dataTable</literal>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:862
+#, no-c-format
+msgid ""
+"The following annotations make it easy to implement clickable lists backed "
+"by a stateful session bean. They appear on attributes."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:867
+#, no-c-format
+msgid "@DataModel"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:869
+#, no-c-format
+msgid "@DataModel(\"variableName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:870
+#, no-c-format
+msgid ""
+"Exposes an attribute of type <literal>List</literal>, <literal>Map</"
+"literal>, <literal>Set</literal> or <literal>Object[]</literal> as a JSF "
+"<literal>DataModel</literal> into the scope of the owning component (or the "
+"<literal>EVENT</literal> scope if the owning component is "
+"<literal>STATELESS</literal>). In the case of <literal>Map</literal>, each "
+"row of the <literal>DataModel</literal> is a <literal>Map.Entry</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:875
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; name of the conversation context variable. "
+"Default to the attribute name."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:880
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; if <literal>scope=ScopeType.PAGE</literal> "
+"is explicitly specified, the <literal>DataModel</literal> will be kept in "
+"the <literal>PAGE</literal> context."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:888
+#, no-c-format
+msgid "<literal>@DataModelSelection</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:890
+#, no-c-format
+msgid "<programlisting>@DataModelSelection</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:891
+#, no-c-format
+msgid ""
+"Injects the selected value from the JSF <literal>DataModel</literal> (this "
+"is the element of the underlying collection, or the map value)."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:896 Annotations.xml:912
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; name of the conversation context variable. "
+"Not needed if there is exactly one <literal>@DataModel</literal> in the "
+"component."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:904
+#, no-c-format
+msgid "<literal>@DataModelSelectionIndex</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:906
+#, no-c-format
+msgid "<programlisting>@DataModelSelectionIndex</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:907
+#, no-c-format
+msgid ""
+"Exposes the selection index of the JSF <literal>DataModel</literal> as an "
+"attribute of the component (this is the row number of the underlying "
+"collection, or the map key)."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:923
+#, no-c-format
+msgid "Meta-annotations for databinding"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:924
+#, no-c-format
+msgid ""
+"These meta-annotations make it possible to implement similar functionality "
+"to <literal>@DataModel</literal> and <literal>@DataModelSelection</literal> "
+"for other datastructures apart from lists."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:929
+#, no-c-format
+msgid "@DataBinderClass"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:931
+#, no-c-format
+msgid "@DataBinderClass(DataModelBinder.class)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:932
+#, no-c-format
+msgid "Specifies that an annotation is a databinding annotation."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:938
+#, no-c-format
+msgid "@DataSelectorClass"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:940
+#, no-c-format
+msgid "@DataSelectorClass(DataModelSelector.class)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:941
+#, no-c-format
+msgid "Specifies that an annotation is a dataselection annotation."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:950
+#, no-c-format
+msgid "Annotations for packaging"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:951
+#, no-c-format
+msgid ""
+"This annotation provides a mechanism for declaring information about a set "
+"of components that are packaged together. It can be applied to any Java "
+"package."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:956
+#, no-c-format
+msgid "@Namespace"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:958
+#, no-c-format
+msgid "@Namespace(value=\"http://jboss.com/products/seam/example/seampay\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:959
+#, no-c-format
+msgid ""
+"Specifies that components in the current package are associated with the "
+"given namespace. The declared namespace can be used as an XML namespace in a "
+"<literal>components.xml</literal> file to simplify application configuration."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:962
+#, no-c-format
+msgid ""
+"@Namespace(value=\"http://jboss.com/products/seam/core\", prefix=\"org.jboss."
+"seam.core\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:963
+#, no-c-format
+msgid ""
+"Specifies a namespace to associate with a given package. Additionally, it "
+"specifies a component name prefix to be applied to component names specified "
+"in the XML file. For example, an XML element named <literal>microcontainer</"
+"literal> that is associated with this namespace would be understood to "
+"actually refere to a component named <literal>org.jboss.seam.core."
+"microcontainer</literal>."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Book_Info.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Book_Info.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Book_Info.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,38 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Book_Info.xml:10
+#, no-c-format
+msgid "Seam - Contextual Components"
+msgstr ""
+
+#. Tag: subtitle
+#: Book_Info.xml:11
+#, no-c-format
+msgid "A Framework for Java EE 5"
+msgstr ""
+
+#. Tag: para
+#: Book_Info.xml:15
+#, no-c-format
+msgid "This book is a Reference Guide for Seam"
+msgstr ""
+
+#. Tag: holder
+#: Book_Info.xml:36
+#, no-c-format
+msgid "&FORMAL-RHI;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Cache.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Cache.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Cache.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,318 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Cache.xml:10
+#, no-c-format
+msgid "Caching"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:11
+#, no-c-format
+msgid ""
+"In almost all enterprise applications, the database is the primary "
+"bottleneck, and the least scalable tier of the runtime environment. People "
+"from a PHP/Ruby environment will try to tell you that so-called \"shared "
+"nothing\" architectures scale well. While that may be literally true, I "
+"don't know of many interesting multi-user applications which can be "
+"implemented with no sharing of resources between different nodes of the "
+"cluster. What these silly people are really thinking of is a \"share nothing "
+"except for the database\" architecture. Of course, sharing the database is "
+"the primary problem with scaling a multi-user application&mdash;so the claim "
+"that this architecture is highly scalable is absurd, and tells you a lot "
+"about the kind of applications that these folks spend most of their time "
+"working on."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:14
+#, no-c-format
+msgid ""
+"Almost anything we can possibly do to share the database <emphasis>less "
+"often</emphasis> is worth doing."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:17
+#, no-c-format
+msgid ""
+"This calls for a cache. Well, not just one cache. A well designed Seam "
+"application will feature a rich, multi-layered caching strategy that impacts "
+"every layer of the application:"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:22
+#, no-c-format
+msgid ""
+"The database, of course, has its own cache. This is super-important, but "
+"can't scale like a cache in the application tier."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:27
+#, no-c-format
+msgid ""
+"Your ORM solution (Hibernate, or some other JPA implementation) has a second-"
+"level cache of data from the database. This is a very powerful capability, "
+"but is often misused. In a clustered environment, keeping the data in the "
+"cache transactionally consistent across the whole cluster, and with the "
+"database, is quite expensive. It makes most sense for data which is shared "
+"between many users, and is updated rarely. In traditional stateless "
+"architectures, people often try to use the second-level cache for "
+"conversational state. This is always bad, and is especially wrong in Seam."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:32
+#, no-c-format
+msgid ""
+"The Seam conversation context is a cache of conversational state. Components "
+"you put into the conversation context can hold and cache state relating to "
+"the current user interaction."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:37
+#, no-c-format
+msgid ""
+"In particular, the Seam-managed persistence context (or an extended EJB "
+"container-managed persistence context associated with a conversation-scoped "
+"stateful session bean) acts as a cache of data that has been read in the "
+"current conversation. This cache tends to have a pretty high hitrate! Seam "
+"optimizes the replication of Seam-managed persistence contexts in a "
+"clustered environment, and there is no requirement for transactional "
+"consistency with the database (optimistic locking is sufficient) so you "
+"don't need to worry too much about the performance implications of this "
+"cache, unless you read thousands of objects into a single persistence "
+"context."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:42
+#, no-c-format
+msgid ""
+"The application can cache non-transactional state in the Seam application "
+"context. State kept in the application context is of course not visible to "
+"other nodes in the cluster."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:47
+#, no-c-format
+msgid ""
+"The application can cache transactional state using the Seam "
+"<literal>pojoCache</literal> component, which integrates JBossCache into the "
+"Seam environment. This state will be visible to other nodes if you run JBoss "
+"cache in a clustered mode."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:52
+#, no-c-format
+msgid ""
+"Finally, Seam lets you cache rendered fragments of a JSF page. Unlike the "
+"ORM second-level cache, this cache is not automatically invalidated when "
+"data changes, so you need to write application code to perform explicit "
+"invalidation, or set appropriate expiration policies."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:57
+#, no-c-format
+msgid ""
+"For more information about the second-level cache, you'll need to refer to "
+"the documentation of your ORM solution, since this is an extremely complex "
+"topic. In this section we'll discuss the use of JBossCache directly, via the "
+"<literal>pojoCache</literal> component, or as the page fragment cache, via "
+"the <literal>&lt;s:cache&gt;</literal> control."
+msgstr ""
+
+#. Tag: title
+#: Cache.xml:61
+#, no-c-format
+msgid "Using JBossCache in Seam"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:62
+#, no-c-format
+msgid ""
+"The built-in <literal>pojoCache</literal> component manages an instance of "
+"<literal>org.jboss.cache.aop.PojoCache</literal>. You can safely put any "
+"immutable Java object in the cache, and it will be replicated across the "
+"cluster (assuming that replication is enabled). If you want to keep mutable "
+"objects in the cache, you'll need to run the JBossCache bytecode "
+"preprocessor to ensure that changes to the objects will be automatically "
+"detected and replicated."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:65
+#, no-c-format
+msgid ""
+"To use <literal>pojoCache</literal>, all you need to do is put the "
+"JBossCache jars in the classpath, and provide a resource named "
+"<literal>treecache.xml</literal> with an appropriate cache configuration. "
+"JBossCache has many scary and confusing configuration settings, so we won't "
+"discuss them here. Please refer to the JBossCache documentation for more "
+"information."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:68
+#, no-c-format
+msgid ""
+"For an EAR depoyment of Seam, we recommend that the JBossCache jars and "
+"configuration go directly into the EAR. Make sure you declare the jars in "
+"<literal>application.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:71
+#, no-c-format
+msgid "Now you can inject the cache into any Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:74
+#, no-c-format
+msgid ""
+"@Name(\"chatroom\")\n"
+"public class Chatroom {\n"
+"    @In PojoCache pojoCache;\n"
+"    \n"
+"    public void join(String username) {\n"
+"      try\n"
+"      {\n"
+"         Set&lt;String&gt; userList = (Set&lt;String&gt;) pojoCache.get"
+"(\"chatroom\", \"userList\");\n"
+"         if (userList==null) \n"
+"         {\n"
+"            userList = new HashSet&lt;String&gt;();\n"
+"            pojoCache.put(\"chatroom\", \"userList\", userList);\n"
+"         }\n"
+"         userList.put(username);\n"
+"      }\n"
+"      catch (CacheException ce)\n"
+"      {\n"
+"         throw new RuntimeException(ce);\n"
+"      }\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:75
+#, no-c-format
+msgid ""
+"If you want to have multiple JBossCache configurations in your application, "
+"use <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:78
+#, no-c-format
+msgid ""
+"&lt;core:pojo-cache name=\"myCache\" cfg-resource-name=\"myown/cache.xml\"/"
+"&gt;"
+msgstr ""
+
+#. Tag: title
+#: Cache.xml:82
+#, no-c-format
+msgid "Page fragment caching"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:83
+#, no-c-format
+msgid ""
+"The most interesting user of JBossCache is the <literal>&lt;s:cache&gt;</"
+"literal> tag, Seam's solution to the problem of page fragment caching in "
+"JSF. <literal>&lt;s:cache&gt;</literal> uses <literal>pojoCache</literal> "
+"internally, so you need to follow the steps listed above before you can use "
+"it. (Put the jars in the EAR, wade through the scary configuration options, "
+"etc.)"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:86
+#, no-c-format
+msgid ""
+"<literal>&lt;s:cache&gt;</literal> is used for caching some rendered content "
+"which changes rarely. For example, the welcome page of our blog displays the "
+"recent blog entries:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:89
+#, no-c-format
+msgid ""
+"&lt;s:cache key=\"recentEntries-#{blog.id}\" region=\"welcomePageFragments"
+"\"&gt;\n"
+"   &lt;h:dataTable value=\"#{blog.recentEntries}\" var=\"blogEntry\"&gt;\n"
+"      &lt;h:column&gt;\n"
+"         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"         &lt;div&gt;\n"
+"            &lt;s:formattedText value=\"#{blogEntry.body}\"/&gt;\n"
+"         &lt;/div&gt;\n"
+"      &lt;/h:column&gt;\n"
+"   &lt;/h:dataTable&gt;\n"
+"&lt;/s:cache&gt;"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:90
+#, no-c-format
+msgid ""
+"The <literal>key</literal> let's you have multiple cached versions of each "
+"page fragment. In this case, there is one cached version per blog. The "
+"<literal>region</literal> determines the JBossCache node that all version "
+"will be stored in. Different nodes may have different expiry policies. "
+"(That's the stuff you set up using the aforementioned scary configuration "
+"options.)"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:93
+#, no-c-format
+msgid ""
+"Of course, the big problem with <literal>&lt;s:cache&gt;</literal> is that "
+"it is too stupid to know when the underlying data changes (for example, when "
+"the blogger posts a new entry). So you need to evict the cached fragment "
+"manually:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:96
+#, no-c-format
+msgid ""
+"public void post() {\n"
+"    ...\n"
+"    entityManager.persist(blogEntry);\n"
+"    pojoCache.remove(\"welcomePageFragments\", \"recentEntries-\" + blog."
+"getId() );\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:97
+#, no-c-format
+msgid ""
+"Alternatively, if it is not critical that changes are immediately visible to "
+"the user, you could set a short expiry time on the JbossCache node."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Components.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Components.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Components.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2007 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Components.xml:10
+#, no-c-format
+msgid "Built-in Seam components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:11
+#, no-c-format
+msgid ""
+"This chapter describes Seam's built-in components, and their configuration "
+"properties."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:14
+#, no-c-format
+msgid ""
+"Note that you can replace any of the built in components with your own "
+"implementations simply by specifying the name of one of the built in "
+"components on your own class using <literal>@Name</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:17
+#, no-c-format
+msgid ""
+"Note also that even though all the built in components use a qualified name, "
+"most of them are aliased to unqualified names by default. These aliases "
+"specify <literal>auto-create=\"true\"</literal>, so you do not need to use "
+"<literal>create=true</literal> when injecting built-in components by their "
+"unqualified name."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:21
+#, no-c-format
+msgid "Context injection components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:22
+#, no-c-format
+msgid ""
+"The first set of built in components exist purely to support injection of "
+"various contextual objects. For example, the following component instance "
+"variable would have the Seam session context object injected:"
+msgstr ""
+
+#. Tag: programlisting
+#: Components.xml:25
+#, no-c-format
+msgid "@In private Context sessionContext;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:28
+#, no-c-format
+msgid "org.jboss.seam.core.eventContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:30
+#, no-c-format
+msgid "Manager component for the event context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:36
+#, no-c-format
+msgid "org.jboss.seam.core.pageContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:38
+#, no-c-format
+msgid "Manager component for the page context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:44
+#, no-c-format
+msgid "org.jboss.seam.core.conversationContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:46
+#, no-c-format
+msgid "Manager component for the conversation context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:52
+#, no-c-format
+msgid "org.jboss.seam.core.sessionContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:54
+#, no-c-format
+msgid "Manager component for the session context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:60
+#, no-c-format
+msgid "org.jboss.seam.core.applicationContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:62
+#, no-c-format
+msgid "Manager component for the appication context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:68
+#, no-c-format
+msgid "org.jboss.seam.core.businessProcessContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:70
+#, no-c-format
+msgid "Manager component for the business process context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:76
+#, no-c-format
+msgid "org.jboss.seam.core.facesContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:78
+#, no-c-format
+msgid ""
+"Manager component for the <literal>FacesContext</literal> context object "
+"(not a true Seam context)"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:84 Components.xml:267 Components.xml:441 Components.xml:572
+#, no-c-format
+msgid "All of these components are always installed."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:90
+#, no-c-format
+msgid "Utility components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:91
+#, no-c-format
+msgid "These components are merely useful."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:96
+#, no-c-format
+msgid "org.jboss.seam.core.facesMessages"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:98
+#, no-c-format
+msgid "Allows faces success messages to propagate across a browser redirect."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:103
+#, no-c-format
+msgid ""
+"<literal>add(FacesMessage facesMessage)</literal> &mdash; add a faces "
+"message, which will be displayed during the next render response phase that "
+"occurs in the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:108
+#, no-c-format
+msgid ""
+"<literal>add(String messageTemplate)</literal> &mdash; add a faces message, "
+"rendered from the given message template which may contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:113
+#, no-c-format
+msgid ""
+"<literal>add(Severity severity, String messageTemplate)</literal> &mdash; "
+"add a faces message, rendered from the given message template which may "
+"contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:118
+#, no-c-format
+msgid ""
+"<literal>addFromResourceBundle(String key)</literal> &mdash; add a faces "
+"message, rendered from a message template defined in the Seam resource "
+"bundle which may contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:123
+#, no-c-format
+msgid ""
+"<literal>addFromResourceBundle(Severity severity, String key)</literal> "
+"&mdash; add a faces message, rendered from a message template defined in the "
+"Seam resource bundle which may contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:128
+#, no-c-format
+msgid "<literal>clear()</literal> &mdash; clear all messages."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:136
+#, no-c-format
+msgid "org.jboss.seam.core.redirect"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:138
+#, no-c-format
+msgid ""
+"A convenient API for performing redirects with parameters (this is "
+"especially useful for bookmarkable search results screens)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:143
+#, no-c-format
+msgid ""
+"<literal>redirect.viewId</literal> &mdash; the JSF view id to redirect to."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:148
+#, no-c-format
+msgid ""
+"<literal>redirect.conversationPropagationEnabled</literal> &mdash; "
+"determines whether the conversation will propagate across the redirect."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:153
+#, no-c-format
+msgid ""
+"<literal>redirect.parameters</literal> &mdash; a map of request parameter "
+"name to value, to be passed in the redirect request."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:158
+#, no-c-format
+msgid "<literal>execute()</literal> &mdash; perform the redirect immediately."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:163
+#, no-c-format
+msgid ""
+"<literal>captureCurrentRequest()</literal> &mdash; stores the view id and "
+"request parameters of the current GET request (in the conversation context), "
+"for later use by calling <literal>execute()</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:171
+#, no-c-format
+msgid "org.jboss.seam.core.httpError"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:173
+#, no-c-format
+msgid "A convenient API for sending HTTP errors."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:179
+#, no-c-format
+msgid "org.jboss.seam.core.events"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:181
+#, no-c-format
+msgid ""
+"An API for raising events that can be observed via <literal>@Observer</"
+"literal> methods, or method bindings in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:186
+#, no-c-format
+msgid ""
+"<literal>raiseEvent(String type)</literal> &mdash; raise an event of a "
+"particular type and distribute to all observers."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:191
+#, no-c-format
+msgid ""
+"<literal>raiseAsynchronousEvent(String type)</literal> &mdash; raise an "
+"event to be processed asynchronously by the EJB3 timer service."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:196
+#, no-c-format
+msgid ""
+"<literal>raiseTimedEvent(String type, ....)</literal> &mdash; schedule an "
+"event to be processed asynchronously by the EJB3 timer service."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:201
+#, no-c-format
+msgid ""
+"<literal>addListener(String type, String methodBinding)</literal> &mdash; "
+"add an observer for a particular event type."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:209
+#, no-c-format
+msgid "org.jboss.seam.core.interpolator"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:211
+#, no-c-format
+msgid "An API for interpolating the values of JSF EL expressions in Strings."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:216
+#, no-c-format
+msgid ""
+"<literal>interpolate(String template)</literal> &mdash; scan the template "
+"for JSF EL expressions of the form <literal>#{...}</literal> and replace "
+"them with their evaluated values."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:224
+#, no-c-format
+msgid "org.jboss.seam.core.expressions"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:226
+#, no-c-format
+msgid "An API for creating value and method bindings."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:231
+#, no-c-format
+msgid ""
+"<literal>createValueBinding(String expression)</literal> &mdash; create a "
+"value binding object."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:236
+#, no-c-format
+msgid ""
+"<literal>createMethodBinding(String expression)</literal> &mdash; create a "
+"method binding object."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:244
+#, no-c-format
+msgid "org.jboss.seam.core.pojoCache"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:246
+#, no-c-format
+msgid ""
+"Manager component for a JBoss Cache <literal>PojoCache</literal> instance."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:251
+#, no-c-format
+msgid ""
+"<literal>pojoCache.cfgResourceName</literal> &mdash; the name of the "
+"configuration file. Default to <literal>treecache.xml</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:259
+#, no-c-format
+msgid "org.jboss.seam.core.uiComponent"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:261
+#, no-c-format
+msgid ""
+"Allows access to a JSF <literal>UIComponent</literal> by its id from the EL. "
+"For example, we can write <literal>@In(\"#{uiComponent['myForm:address']."
+"value}\")</literal>."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:273
+#, no-c-format
+msgid "Components for internationalization and themes"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:274
+#, no-c-format
+msgid ""
+"The next group of components make it easy to build internationalized user "
+"interfaces using Seam."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:279
+#, no-c-format
+msgid "org.jboss.seam.core.locale"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:281
+#, no-c-format
+msgid "The Seam locale. The locale is session scoped."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:287
+#, no-c-format
+msgid "org.jboss.seam.core.timezone"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:289
+#, no-c-format
+msgid "The Seam timezone. The timezone is session scoped."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:295
+#, no-c-format
+msgid "org.jboss.seam.core.resourceBundle"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:297
+#, no-c-format
+msgid ""
+"The Seam resource bundle. The resource bundle is session scoped. The Seam "
+"resource bundle performs a depth-first search for keys in a list of Java "
+"resource bundles."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:302
+#, no-c-format
+msgid ""
+"<literal>resourceBundle.bundleNames</literal> &mdash; the names of the Java "
+"resource bundles to search. Default to <literal>messages</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:310
+#, no-c-format
+msgid "org.jboss.seam.core.localeSelector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:312
+#, no-c-format
+msgid ""
+"Supports selection of the locale either at configuration time, or by the "
+"user at runtime."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:317 Components.xml:367
+#, no-c-format
+msgid "<literal>select()</literal> &mdash; select the specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:322
+#, no-c-format
+msgid ""
+"<literal>localeSelector.locale</literal> &mdash; the actual <literal>java."
+"util.Locale</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:327
+#, no-c-format
+msgid ""
+"<literal>localeSelector.localeString</literal> &mdash; the stringified "
+"representation of the locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:332
+#, no-c-format
+msgid ""
+"<literal>localeSelector.language</literal> &mdash; the language for the "
+"specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:337
+#, no-c-format
+msgid ""
+"<literal>localeSelector.country</literal> &mdash; the country for the "
+"specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:342
+#, no-c-format
+msgid ""
+"<literal>localeSelector.variant</literal> &mdash; the variant for the "
+"specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:347
+#, no-c-format
+msgid ""
+"<literal>localeSelector.supportedLocales</literal> &mdash; a list of "
+"<literal>SelectItem</literal>s representing the supported locales listed in "
+"<literal>jsf-config.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:352
+#, no-c-format
+msgid ""
+"<literal>localeSelector.cookieEnabled</literal> &mdash; specifies that the "
+"locale selection should be persisted via a cookie."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:360
+#, no-c-format
+msgid "org.jboss.seam.core.timezoneSelector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:362
+#, no-c-format
+msgid ""
+"Supports selection of the timezone either at configuration time, or by the "
+"user at runtime."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:372
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.timezone</literal> &mdash; the actual "
+"<literal>java.util.TimeZone</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:377
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.timeZoneId</literal> &mdash; the stringified "
+"representation of the timezone."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:382
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.cookieEnabled</literal> &mdash; specifies that the "
+"timezone selection should be persisted via a cookie."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:390
+#, no-c-format
+msgid "org.jboss.seam.core.messages"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:392
+#, no-c-format
+msgid ""
+"A map containing internationalized messages rendered from message templates "
+"defined in the Seam resource bundle."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:398
+#, no-c-format
+msgid "org.jboss.seam.theme.themeSelector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:400
+#, no-c-format
+msgid ""
+"Supports selection of the theme either at configuration time, or by the user "
+"at runtime."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:405
+#, no-c-format
+msgid "<literal>select()</literal> &mdash; select the specified theme."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:410
+#, no-c-format
+msgid ""
+"<literal>theme.availableThemes</literal> &mdash; the list of defined themes."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:415
+#, no-c-format
+msgid "<literal>themeSelector.theme</literal> &mdash; the selected theme."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:420
+#, no-c-format
+msgid ""
+"<literal>themeSelector.themes</literal> &mdash; a list of "
+"<literal>SelectItem</literal>s representing the defined themes."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:425
+#, no-c-format
+msgid ""
+"<literal>themeSelector.cookieEnabled</literal> &mdash; specifies that the "
+"theme selection should be persisted via a cookie."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:433
+#, no-c-format
+msgid "org.jboss.seam.theme.theme"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:435
+#, no-c-format
+msgid "A map containing theme entries."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:447
+#, no-c-format
+msgid "Components for controlling conversations"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:448
+#, no-c-format
+msgid ""
+"The next group of components allow control of conversations by the "
+"application or user interface."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:453
+#, no-c-format
+msgid "org.jboss.seam.core.conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:455
+#, no-c-format
+msgid ""
+"API for application control of attributes of the current Seam conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:460 Components.xml:475
+#, no-c-format
+msgid "<literal>getId()</literal> &mdash; returns the current conversation id"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:465
+#, no-c-format
+msgid ""
+"<literal>isNested()</literal> &mdash; is the current conversation a nested "
+"conversation?"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:470
+#, no-c-format
+msgid ""
+"<literal>isLongRunning()</literal> &mdash; is the current conversation a "
+"long-running conversation?"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:480
+#, no-c-format
+msgid ""
+"<literal>getParentId()</literal> &mdash; returns the conversation id of the "
+"parent conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:485
+#, no-c-format
+msgid ""
+"<literal>getRootId()</literal> &mdash; returns the conversation id of the "
+"root conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:490
+#, no-c-format
+msgid ""
+"<literal>setTimeout(int timeout)</literal> &mdash; sets the timeout for the "
+"current conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:495
+#, no-c-format
+msgid ""
+"<literal>setViewId(String outcome)</literal> &mdash; sets the view id to be "
+"used when switching back to the current conversation from the conversation "
+"switcher, conversation list, or breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:500
+#, no-c-format
+msgid ""
+"<literal>setDescription(String description)</literal> &mdash; sets the "
+"description of the current conversation to be displayed in the conversation "
+"switcher, conversation list, or breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:505
+#, no-c-format
+msgid ""
+"<literal>redirect()</literal> &mdash; redirect to the last well-defined view "
+"id for this conversation (useful after login challenges)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:510
+#, no-c-format
+msgid ""
+"<literal>leave()</literal> &mdash; exit the scope of this conversation, "
+"without actually ending the conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:515
+#, no-c-format
+msgid ""
+"<literal>begin()</literal> &mdash; begin a long-running conversation "
+"(equivalent to <literal>@Begin</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:520
+#, no-c-format
+msgid ""
+"<literal>beginPageflow(String pageflowName)</literal> &mdash; begin a long-"
+"running conversation with a pageflow (equivalent to <literal>@Begin(pageflow="
+"\"...\")</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:525
+#, no-c-format
+msgid ""
+"<literal>end()</literal> &mdash; end a long-running conversation (equivalent "
+"to <literal>@End</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:530
+#, no-c-format
+msgid ""
+"<literal>pop()</literal> &mdash; pop the conversation stack, returning to "
+"the parent conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:535
+#, no-c-format
+msgid ""
+"<literal>root()</literal> &mdash; return to the root conversation of the "
+"conversation stack."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:540
+#, no-c-format
+msgid ""
+"<literal>changeFlushMode(FlushModeType flushMode)</literal> &mdash; change "
+"the flush mode of the conversation."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:548
+#, no-c-format
+msgid "org.jboss.seam.core.conversationList"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:550
+#, no-c-format
+msgid "Manager component for the conversation list."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:556
+#, no-c-format
+msgid "org.jboss.seam.core.conversationStack"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:558
+#, no-c-format
+msgid "Manager component for the conversation stack (breadcrumbs)."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:564
+#, no-c-format
+msgid "org.jboss.seam.core.switcher"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:566
+#, no-c-format
+msgid "The conversation switcher."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:578
+#, no-c-format
+msgid "jBPM-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:579
+#, no-c-format
+msgid "These components are for use with jBPM."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:584
+#, no-c-format
+msgid "org.jboss.seam.core.pageflow"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:586
+#, no-c-format
+msgid "API control of Seam pageflows."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:591
+#, no-c-format
+msgid ""
+"<literal>isInProcess()</literal> &mdash; returns <literal>true</literal> if "
+"there is currently a pageflow in process"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:596
+#, no-c-format
+msgid ""
+"<literal>getProcessInstance()</literal> &mdash; returns jBPM "
+"<literal>ProcessInstance</literal> for the current pageflow"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:601
+#, no-c-format
+msgid ""
+"<literal>begin(String pageflowName)</literal> &mdash; begin a pageflow in "
+"the context of the current conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:606
+#, no-c-format
+msgid ""
+"<literal>reposition(String nodeName)</literal> &mdash; reposition the "
+"current pageflow to a particular node"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:614
+#, no-c-format
+msgid "org.jboss.seam.core.actor"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:616
+#, no-c-format
+msgid ""
+"API for application control of attributes of the jBPM actor associated with "
+"the current session."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:621
+#, no-c-format
+msgid ""
+"<literal>setId(String actorId)</literal> &mdash; sets the jBPM actor id of "
+"the current user."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:626
+#, no-c-format
+msgid ""
+"<literal>getGroupActorIds()</literal> &mdash; returns a <literal>Set</"
+"literal> to which jBPM actor ids for the current users groups may be added."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:634
+#, no-c-format
+msgid "org.jboss.seam.core.transition"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:636
+#, no-c-format
+msgid ""
+"API for application control of the jBPM transition for the current task."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:641
+#, no-c-format
+msgid ""
+"<literal>setName(String transitionName)</literal> &mdash; sets the jBPM "
+"transition name to be used when the current task is ended via "
+"<literal>@EndTask</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:649
+#, no-c-format
+msgid "org.jboss.seam.core.businessProcess"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:651
+#, no-c-format
+msgid ""
+"API for programmatic control of the association between the conversation and "
+"business process."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:656
+#, no-c-format
+msgid ""
+"<literal>businessProcess.taskId</literal> &mdash; the id of the task "
+"associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:661
+#, no-c-format
+msgid ""
+"<literal>businessProcess.processId</literal> &mdash; the id of the process "
+"associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:666
+#, no-c-format
+msgid ""
+"<literal>businessProcess.hasCurrentTask()</literal> &mdash; is a task "
+"instance associated with the current conversation?"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:671
+#, no-c-format
+msgid ""
+"<literal>businessProcess.hasCurrentProcess()</literal> &mdash; is a process "
+"instance associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:676
+#, no-c-format
+msgid ""
+"<literal>createProcess(String name)</literal> &mdash; create an instance of "
+"the named process definition and associate it with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:681
+#, no-c-format
+msgid ""
+"<literal>startTask()</literal> &mdash; start the task associated with the "
+"current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:686
+#, no-c-format
+msgid ""
+"<literal>endTask(String transitionName)</literal> &mdash; end the task "
+"associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:691
+#, no-c-format
+msgid ""
+"<literal>resumeTask(Long id)</literal> &mdash; associate the task with the "
+"given id with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:696
+#, no-c-format
+msgid ""
+"<literal>resumeProcess(Long id)</literal> &mdash; associate the process with "
+"the given id with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:701
+#, no-c-format
+msgid ""
+"<literal>transition(String transitionName)</literal> &mdash; trigger the "
+"transition."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:709
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstance"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:711
+#, no-c-format
+msgid "Manager component for the jBPM <literal>TaskInstance</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:717
+#, no-c-format
+msgid "org.jboss.seam.core.processInstance"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:719
+#, no-c-format
+msgid "Manager component for the jBPM <literal>ProcessInstance</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:725
+#, no-c-format
+msgid "org.jboss.seam.core.jbpmContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:727
+#, no-c-format
+msgid "Manager component for an event-scoped <literal>JbpmContext</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:733
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstanceList"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:735
+#, no-c-format
+msgid "Manager component for the jBPM task list."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:741
+#, no-c-format
+msgid "org.jboss.seam.core.pooledTaskInstanceList"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:743
+#, no-c-format
+msgid "Manager component for the jBPM pooled task list."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:749
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstanceListForType"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:751
+#, no-c-format
+msgid "Manager component for the jBPM task lists."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:757
+#, no-c-format
+msgid "org.jboss.seam.core.pooledTask"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:759
+#, no-c-format
+msgid "Action handler for pooled task assignment."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:765
+#, no-c-format
+msgid ""
+"All of these components are installed whenever the component <literal>org."
+"jboss.seam.core.jbpm</literal> is installed."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:771
+#, no-c-format
+msgid "Security-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:772
+#, no-c-format
+msgid "These components relate to web-tier security."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:777
+#, no-c-format
+msgid "org.jboss.seam.core.userPrincipal"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:779
+#, no-c-format
+msgid "Manager component for the current user <literal>Principal</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:785
+#, no-c-format
+msgid "org.jboss.seam.core.isUserInRole"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:787
+#, no-c-format
+msgid ""
+"Allows JSF pages to choose to render a control, depending upon the roles "
+"available to the current principal. <literal>&lt;h:commandButton value=\"edit"
+"\" rendered=\"#{isUserInRole['admin']}\"/&gt;</literal>."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:796
+#, no-c-format
+msgid "JMS-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:797
+#, no-c-format
+msgid ""
+"These components are for use with managed <literal>TopicPublisher</literal>s "
+"and <literal>QueueSender</literal>s (see below)."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:802
+#, no-c-format
+msgid "org.jboss.seam.jms.queueSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:804
+#, no-c-format
+msgid "Manager component for a JMS <literal>QueueSession</literal> ."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:810
+#, no-c-format
+msgid "org.jboss.seam.jms.topicSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:812
+#, no-c-format
+msgid "Manager component for a JMS <literal>TopicSession</literal> ."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:821
+#, no-c-format
+msgid "Mail-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:822
+#, no-c-format
+msgid "These components are for use with Seam's Email support"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:827
+#, no-c-format
+msgid "org.jboss.seam.mail.mailSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:829
+#, no-c-format
+msgid "Manager component for a JavaMail <literal>Session</literal> ."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:834
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.host</literal> &mdash; the hostname "
+"of the SMTP server to use"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:839
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.port</literal> &mdash; the port of "
+"the SMTP server to use"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:844
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.username</literal> &mdash; the "
+"username to use to connect to the SMTP server."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:849
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.password</literal> &mdash; the "
+"password to use to connect to the SMTP server"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:854
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.debug</literal> &mdash; enable "
+"JavaMail debugging (very verbose)"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:859
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.sessionJndiName</literal> &mdash; "
+"name under which a javax.mail.Session is bound to JNDI"
+msgstr ""
+
+#. Tag: title
+#: Components.xml:870
+#, no-c-format
+msgid "Infrastructural components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:871
+#, no-c-format
+msgid ""
+"These components provide critical platform infrastructure. You can install a "
+"component by including its class name in the <literal>org.jboss.seam.core."
+"init.componentClasses</literal> configuration property."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:876
+#, no-c-format
+msgid "org.jboss.seam.core.init"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:878
+#, no-c-format
+msgid "Initialization settings for Seam. Always installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:883
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.jndiPattern</literal> &mdash; the JNDI "
+"pattern used for looking up session beans"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:888
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.debug</literal> &mdash; enable Seam debug "
+"mode"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:893
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.clientSideConversations</literal> &mdash; "
+"if set to <literal>true</literal>, Seam will save conversation context "
+"variables in the client instead of in the <literal>HttpSession</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:898
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.userTransactionName</literal> &mdash; the "
+"JNDI name to use when looking up the JTA <literal>UserTransaction</literal> "
+"object."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:906
+#, no-c-format
+msgid "org.jboss.seam.core.manager"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:908
+#, no-c-format
+msgid ""
+"Internal component for Seam page and conversation context management. Always "
+"installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:913
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationTimeout</literal> &mdash; "
+"the conversation context timeout in milliseconds."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:918
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.concurrentRequestTimeout</literal> "
+"&mdash; maximum wait time for a thread attempting to gain a lock on the long-"
+"running conversation context."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:923
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationIdParameter</literal> "
+"&mdash; the request parameter used to propagate the conversation id, default "
+"to <literal>conversationId</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:928
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationIsLongRunningParameter</"
+"literal> &mdash; the request parameter used to propagate information about "
+"whether the conversation is long-running, default to "
+"<literal>conversationIsLongRunning</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:936
+#, no-c-format
+msgid "org.jboss.seam.core.pages"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:938
+#, no-c-format
+msgid "Internal component for Seam workspace management. Always installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:943
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.pages.noConversationViewId</literal> &mdash; "
+"global setting for the view id to redirect to when a conversation entry is "
+"not found on the server side."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:951
+#, no-c-format
+msgid "org.jboss.seam.core.ejb"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:953
+#, no-c-format
+msgid ""
+"Bootstraps the JBoss Embeddable EJB3 container. Install as class "
+"<literal>org.jboss.seam.core.Ejb</literal>. This is useful when using Seam "
+"with EJB components outside the context of a Java EE 5 application server."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:956
+#, no-c-format
+msgid ""
+"The basic Embedded EJB configuration is defined in <literal>jboss-embedded-"
+"beans.xml</literal>. Additional microcontainer configuration (for example, "
+"extra datasources) may be specified by <literal>jboss-beans.xml</literal> or "
+"<literal>META-INF/jboss-beans.xml</literal> in the classpath."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:962
+#, no-c-format
+msgid "org.jboss.seam.core.microcontainer"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:964
+#, no-c-format
+msgid ""
+"Bootstraps the JBoss microcontainer. Install as class <literal>org.jboss."
+"seam.core.Microcontainer</literal>. This is useful when using Seam with "
+"Hibernate and no EJB components outside the context of a Java EE application "
+"server. The microcontainer can provide a partial EE environment with JNDI, "
+"JTA, a JCA datasource and Hibernate."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:967
+#, no-c-format
+msgid ""
+"The microcontainer configuration may be specified by <literal>jboss-beans."
+"xml</literal> or <literal>META-INF/jboss-beans.xml</literal> in the "
+"classpath."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:973
+#, no-c-format
+msgid "org.jboss.seam.core.jbpm"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:975
+#, no-c-format
+msgid ""
+"Bootstraps a <literal>JbpmConfiguration</literal>. Install as class "
+"<literal>org.jboss.seam.core.Jbpm</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:980
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.jbpm.processDefinitions</literal> &mdash; a "
+"list of resource names of jPDL files to be used for orchestration of "
+"business processes."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:985
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.jbpm.pageflowDefinitions</literal> &mdash; a "
+"list of resource names of jPDL files to be used for orchestration of "
+"conversation page flows."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:993
+#, no-c-format
+msgid "org.jboss.seam.core.conversationEntries"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:995
+#, no-c-format
+msgid ""
+"Internal session-scoped component recording the active long-running "
+"conversations between requests."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1001
+#, no-c-format
+msgid "org.jboss.seam.core.facesPage"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1003
+#, no-c-format
+msgid ""
+"Internal page-scoped component recording the conversation context associated "
+"with a page."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1009
+#, no-c-format
+msgid "org.jboss.seam.core.persistenceContexts"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1011
+#, no-c-format
+msgid ""
+"Internal component recording the persistence contexts which were used in the "
+"current conversation."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1017
+#, no-c-format
+msgid "org.jboss.seam.jms.queueConnection"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1019
+#, no-c-format
+msgid ""
+"Manages a JMS <literal>QueueConnection</literal>. Installed whenever managed "
+"managed <literal>QueueSender</literal> is installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1024
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.jms.queueConnection.queueConnectionFactoryJndiName</"
+"literal> &mdash; the JNDI name of a JMS <literal>QueueConnectionFactory</"
+"literal>. Default to <literal>UIL2ConnectionFactory</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1032
+#, no-c-format
+msgid "org.jboss.seam.jms.topicConnection"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1034
+#, no-c-format
+msgid ""
+"Manages a JMS <literal>TopicConnection</literal>. Installed whenever managed "
+"managed <literal>TopicPublisher</literal> is installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1039
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.jms.topicConnection.topicConnectionFactoryJndiName</"
+"literal> &mdash; the JNDI name of a JMS <literal>TopicConnectionFactory</"
+"literal>. Default to <literal>UIL2ConnectionFactory</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1047
+#, no-c-format
+msgid "org.jboss.seam.persistence.persistenceProvider"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1049
+#, no-c-format
+msgid "Abstraction layer for non-standardized features of JPA provider."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1055
+#, no-c-format
+msgid "org.jboss.seam.core.validation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1057
+#, no-c-format
+msgid "Internal component for Hibernate Validator support."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1063
+#, no-c-format
+msgid "org.jboss.seam.debug.introspector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1065 Components.xml:1073
+#, no-c-format
+msgid "Support for the Seam Debug Page."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1071
+#, no-c-format
+msgid "org.jboss.seam.debug.contexts"
+msgstr ""
+
+#. Tag: title
+#: Components.xml:1082
+#, no-c-format
+msgid "Special components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1083
+#, no-c-format
+msgid ""
+"Certain special Seam component classes are installable multiple times under "
+"names specified in the Seam configuration. For example, the following lines "
+"in <literal>components.xml</literal> install and configure two Seam "
+"components:"
+msgstr ""
+
+#. Tag: programlisting
+#: Components.xml:1086
+#, no-c-format
+msgid ""
+"&lt;component name=\"bookingDatabase\"\n"
+"          class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"    &lt;property name=\"persistenceUnitJndiName\"&gt;java:/comp/emf/"
+"bookingPersistence&lt;/property&gt;\n"
+"&lt;/component&gt;\n"
+"\n"
+"&lt;component name=\"userDatabase\"\n"
+"          class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"    &lt;property name=\"persistenceUnitJndiName\"&gt;java:/comp/emf/"
+"userPersistence&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1087
+#, no-c-format
+msgid ""
+"The Seam component names are <literal>bookingDatabase</literal> and "
+"<literal>userDatabase</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1092
+#, no-c-format
+msgid "&lt;entityManager&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1093
+#, no-c-format
+msgid "org.jboss.seam.core.ManagedPersistenceContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1095
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed <literal>EntityManager</"
+"literal> with an extended persistence context."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1100
+#, no-c-format
+msgid ""
+"<literal>&lt;entityManager&gt;.entityManagerFactory</literal> &mdash; a "
+"value binding expression that evaluates to an instance of "
+"<literal>EntityManagerFactory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1103
+#, no-c-format
+msgid ""
+"<literal>&lt;entityManager&gt;.persistenceUnitJndiName</literal> &mdash; the "
+"JNDI name of the entity manager factory, default to <literal>java:/&lt;"
+"managedPersistenceContext&gt;</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1111
+#, no-c-format
+msgid "&lt;entityManagerFactory&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1112
+#, no-c-format
+msgid "org.jboss.seam.core.EntityManagerFactory"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1114
+#, no-c-format
+msgid ""
+"Manages a JPA <literal>EntityManagerFactory</literal>. This is most useful "
+"when using JPA outside of an EJB 3.0 supporting environment."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1119
+#, no-c-format
+msgid ""
+"<literal>entityManagerFactory.persistenceUnitName</literal> &mdash; the name "
+"of the persistence unit."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1124 Components.xml:1162
+#, no-c-format
+msgid "See the API JavaDoc for further configuration properties."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1130
+#, no-c-format
+msgid "&lt;session&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1131
+#, no-c-format
+msgid "org.jboss.seam.core.ManagedSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1133
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed Hibernate "
+"<literal>Session</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1138
+#, no-c-format
+msgid ""
+"<literal>&lt;session&gt;.sessionFactory</literal> &mdash; a value binding "
+"expression that evaluates to an instance of <literal>SessionFactory</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1141
+#, no-c-format
+msgid ""
+"<literal>&lt;session&gt;.sessionFactoryJndiName</literal> &mdash; the JNDI "
+"name of the session factory, default to <literal>java:/&lt;managedSession&gt;"
+"</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1149
+#, no-c-format
+msgid "&lt;sessionFactory&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1150
+#, no-c-format
+msgid "org.jboss.seam.core.HibernateSessionFactory"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1152
+#, no-c-format
+msgid "Manages a Hibernate <literal>SessionFactory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1157
+#, no-c-format
+msgid ""
+"<literal>&lt;sessionFactory&gt;.cfgResourceName</literal> &mdash; the path "
+"to the configuration file. Default to <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1168
+#, no-c-format
+msgid "&lt;managedQueueSender&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1169
+#, no-c-format
+msgid "org.jboss.seam.jms.ManagedQueueSender"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1171
+#, no-c-format
+msgid ""
+"Manager component for an event scoped managed JMS <literal>QueueSender</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1176
+#, no-c-format
+msgid ""
+"<literal>&lt;managedQueueSender&gt;.queueJndiName</literal> &mdash; the JNDI "
+"name of the JMS queue."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1184
+#, no-c-format
+msgid "&lt;managedTopicPublisher&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1185
+#, no-c-format
+msgid "org.jboss.seam.jms.ManagedTopicPublisher"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1187
+#, no-c-format
+msgid ""
+"Manager component for an event scoped managed JMS <literal>TopicPublisher</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1192
+#, no-c-format
+msgid ""
+"<literal>&lt;managedTopicPublisher&gt;.topicJndiName</literal> &mdash; the "
+"JNDI name of the JMS topic."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1200
+#, no-c-format
+msgid "&lt;managedWorkingMemory&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1201
+#, no-c-format
+msgid "org.jboss.seam.drools.ManagedWorkingMemory"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1203
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed Drools "
+"<literal>WorkingMemory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1208
+#, no-c-format
+msgid ""
+"<literal>&lt;managedWorkingMemory&gt;.ruleBase</literal> &mdash; a value "
+"expression that evaluates to an instance of <literal>RuleBase</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1216
+#, no-c-format
+msgid "&lt;ruleBase&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1217
+#, no-c-format
+msgid "org.jboss.seam.drools.RuleBase"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1219
+#, no-c-format
+msgid ""
+"Manager component for an application scoped Drools <literal>RuleBase</"
+"literal>. <emphasis>Note that this is not really intended for production "
+"usage, since it does not support dynamic installation of new rules.</"
+"emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1224
+#, no-c-format
+msgid ""
+"<literal>&lt;ruleBase&gt;.ruleFiles</literal> &mdash; a list of files "
+"containing Drools rules."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1227
+#, no-c-format
+msgid ""
+"<literal>&lt;ruleBase&gt;.dslFile</literal> &mdash; a Drools DSL definition."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1235
+#, no-c-format
+msgid "&lt;entityHome&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1236
+#, no-c-format
+msgid "org.jboss.seam.framework.EntityHome"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1240
+#, no-c-format
+msgid "&lt;hibernateEntityHome&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1241
+#, no-c-format
+msgid "org.jboss.seam.framework.HibernateEntityHome"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1245
+#, no-c-format
+msgid "&lt;entityQuery&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1246
+#, no-c-format
+msgid "org.jboss.seam.framework.EntityQuery"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1250
+#, no-c-format
+msgid "&lt;hibernateEntityQuery&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1251
+#, no-c-format
+msgid "org.jboss.seam.framework.HibernateEntityQuery"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Concepts.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Concepts.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Concepts.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1922 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Concepts.xml:10
+#, no-c-format
+msgid "The contextual component model"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:11
+#, no-c-format
+msgid ""
+"The two core concepts in Seam are the notion of a <emphasis>context</"
+"emphasis> and the notion of a <emphasis>component</emphasis>. Components are "
+"stateful objects, usually EJBs, and an instance of a component is associated "
+"with a context, and given a name in that context. <emphasis>Bijection</"
+"emphasis> provides a mechanism for aliasing internal component names "
+"(instance variables) to contextual names, allowing component trees to be "
+"dynamically assembled, and reassembled by Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:14
+#, no-c-format
+msgid "Let's start by describing the contexts built in to Seam."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:17
+#, no-c-format
+msgid "Seam contexts"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:18
+#, no-c-format
+msgid ""
+"Seam contexts are created and destroyed by the framework. The application "
+"does not control context demarcation via explicit Java API calls. Context "
+"are usually implicit. In some cases, however, contexts are demarcated via "
+"annotations."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:21
+#, no-c-format
+msgid "The basic Seam contexts are:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:26
+#, no-c-format
+msgid "<para>Stateless context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:31
+#, no-c-format
+msgid "Event (or request) context"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:36 Concepts.xml:151
+#, no-c-format
+msgid "<para>Page context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:41 Concepts.xml:156
+#, no-c-format
+msgid "<para>Conversation context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:46 Concepts.xml:161
+#, no-c-format
+msgid "<para>Session context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:51 Concepts.xml:166
+#, no-c-format
+msgid "<para>Business process context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:56 Concepts.xml:171
+#, no-c-format
+msgid "<para>Application context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:61
+#, no-c-format
+msgid ""
+"You will recognize some of these contexts from servlet and related "
+"specifications. However, two of them might be new to you: "
+"<emphasis>conversation context</emphasis>, and <emphasis>business process "
+"context</emphasis>. One reason state management in web applications is so "
+"fragile and error-prone is that the three built-in contexts (request, "
+"session and application) are not especially meaningful from the point of "
+"view of the business logic. A user login session, for example, is a fairly "
+"arbitrary construct in terms of the actual application work flow. Therefore, "
+"most Seam components are scoped to the conversation or business process "
+"contexts, since they are the contexts which are most meaningful in terms of "
+"the application."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:64
+#, no-c-format
+msgid "Let's look at each context in turn."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:67
+#, no-c-format
+msgid "<title>Stateless context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:68
+#, no-c-format
+msgid ""
+"Components which are truly stateless (stateless session beans, primarily) "
+"always live in the stateless context (this is really a non-context). "
+"Stateless components are not very interesting, and are arguably not very "
+"object-oriented. Nevertheless, they are important and often useful."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:71
+#, no-c-format
+msgid "<title>Event context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:72
+#, no-c-format
+msgid ""
+"The event context is the \"narrowest\" stateful context, and is a "
+"generalization of the notion of the web request context to cover other kinds "
+"of events. Nevertheless, the event context associated with the lifecycle of "
+"a JSF request is the most important example of an event context, and the one "
+"you will work with most often. Components associated with the event context "
+"are destroyed at the end of the request, but their state is available and "
+"well-defined for at least the lifecycle of the request."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:75
+#, no-c-format
+msgid ""
+"When you invoke a Seam component via RMI, or Seam Remoting, the event "
+"context is created and destroyed just for the invocation."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:78
+#, no-c-format
+msgid "<title>Page context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:79
+#, no-c-format
+msgid ""
+"The page context allows you to associate state with a particular instance of "
+"a rendered page. You can initialize state in your event listener, or while "
+"actually rendering the page, and then have access to it from any event that "
+"originates from that page. This is especially useful for functionality like "
+"clickable lists, where the list is backed by changing data on the server "
+"side. The state is actually serialized to the client, so this construct is "
+"extremely robust with respect to multi-window operation and the back button."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:82
+#, no-c-format
+msgid "<title>Conversation context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:83
+#, no-c-format
+msgid ""
+"The conversation context is a truly central concept in Seam. A "
+"<emphasis>conversation</emphasis> is a unit of work from the point of view "
+"of the user. It might span several interactions with the user, several "
+"requests, and several database transactions. But to the user, a conversation "
+"solves a single problem. For example, \"book hotel\", \"approve contract\", "
+"\"create order\" are all conversations. You might like to think of a "
+"conversation implementing a single \"use case\" or \"user story\", but the "
+"relationship is not necessarily quite exact."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:86
+#, no-c-format
+msgid ""
+"A conversation holds state associated with \"what the user is doing now, in "
+"this window\". A single user may have multiple conversations in progress at "
+"any point in time, usually in multiple windows. The conversation context "
+"allows us to ensure that state from the different conversations does not "
+"collide and cause bugs."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:89
+#, no-c-format
+msgid ""
+"It might take you some time to get used to thinking of applications in terms "
+"of conversations. But once you get used to it, we think you'll love the "
+"notion, and never be able to not think in terms of conversations again!"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:92
+#, no-c-format
+msgid ""
+"Some conversations last for just a single request. Conversations that span "
+"multiple requests must be demarcated using annotations provided by Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:95
+#, no-c-format
+msgid ""
+"Some conversations are also <emphasis>tasks</emphasis>. A task is a "
+"conversation that is significant in terms of a long-running business "
+"process, and has the potential to trigger a business process state "
+"transition when it is successfully completed. Seam provides a special set of "
+"annotations for task demarcation."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:98
+#, no-c-format
+msgid ""
+"Conversations may be <emphasis>nested</emphasis>, with one conversation "
+"taking place \"inside\" a wider conversation. This is an advanced feature."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:101
+#, no-c-format
+msgid ""
+"Usually, conversation state is actually held by Seam in the servlet session "
+"between requests. Seam implements configurable <emphasis>conversation "
+"timeout</emphasis>, automatically destroying inactive conversations, and "
+"thus ensuring that the state held by a single user login session does not "
+"grow without bound if the user abandons conversations."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:104
+#, no-c-format
+msgid ""
+"Seam serializes processing of concurrent requests that take place in the "
+"same long-running conversation context, in the same process."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:107
+#, no-c-format
+msgid ""
+"Alternatively, Seam may be configured to keep conversational state in the "
+"client browser."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:110
+#, no-c-format
+msgid "<title>Session context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:111
+#, no-c-format
+msgid ""
+"A session context holds state associated with the user login session. While "
+"there are some cases where it is useful to share state between several "
+"conversations, we generally frown on the use of session context for holding "
+"components other than global information about the logged in user."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:114
+#, no-c-format
+msgid ""
+"In a JSR-168 portal environment, the session context represents the portlet "
+"session."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:117
+#, no-c-format
+msgid "<title>Business process context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:118
+#, no-c-format
+msgid ""
+"The business process context holds state associated with the long running "
+"business process. This state is managed and made persistent by the BPM "
+"engine (JBoss jBPM). The business process spans multiple interactions with "
+"multiple users, so this state is shared between multiple users, but in a "
+"well-defined manner. The current task determines the current business "
+"process instance, and the lifecycle of the business process is defined "
+"externally using a <emphasis>process definition language</emphasis>, so "
+"there are no special annotations for business process demarcation."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:121
+#, no-c-format
+msgid "<title>Application context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:122
+#, no-c-format
+msgid ""
+"The application context is the familiar servlet context from the servlet "
+"spec. Application context is mainly useful for holding static information "
+"such as configuration data, reference data or metamodels. For example, Seam "
+"stores its own configuration and metamodel in the application context."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:125
+#, no-c-format
+msgid "Context variables"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:126
+#, no-c-format
+msgid ""
+"A context defines a namespace, a set of <emphasis>context variables</"
+"emphasis>. These work much the same as session or request attributes in the "
+"servlet spec. You may bind any value you like to a context variable, but "
+"usually we bind Seam component instances to context variables."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:129
+#, no-c-format
+msgid ""
+"So, within a context, a component instance is identified by the context "
+"variable name (this is usually, but not always, the same as the component "
+"name). You may programatically access a named component instance in a "
+"particular scope via the <literal>Contexts</literal> class, which provides "
+"access to several thread-bound instances of the <literal>Context</literal> "
+"interface:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:132
+#, no-c-format
+msgid "User user = (User) Contexts.getSessionContext().get(\"user\");"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:133
+#, no-c-format
+msgid "You may also set or change the value associated with a name:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:136
+#, no-c-format
+msgid "Contexts.getSessionContext().set(\"user\", user);"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:137
+#, no-c-format
+msgid ""
+"Usually, however, we obtain components from a context via injection, and put "
+"component instances into a context via outjection."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:140
+#, no-c-format
+msgid "Context search priority"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:141
+#, no-c-format
+msgid ""
+"Sometimes, as above, component instances are obtained from a particular "
+"known scope. Other times, all stateful scopes are searched, in "
+"<emphasis>priority order</emphasis>. The order is as follows:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:146
+#, no-c-format
+msgid "<para>Event context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:176
+#, no-c-format
+msgid ""
+"You can perform a priority search by calling <literal>Contexts."
+"lookupInStatefulContexts()</literal>. Whenever you access a component by "
+"name from a JSF page, a priority search occurs."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:179
+#, no-c-format
+msgid "Concurrency model"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:180
+#, no-c-format
+msgid ""
+"Neither the servlet nor EJB specifications define any facilities for "
+"managing concurrent requests originating from the same client. The servlet "
+"container simply lets all threads run concurrently and leaves enforcing "
+"threadsafeness to application code. The EJB container allows stateless "
+"components to be accessed concurrently, and throws an exception if multiple "
+"threads access a stateful session bean."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:183
+#, no-c-format
+msgid ""
+"This behavior might have been okay in old-style web applications which were "
+"based around fine-grained, synchronous requests. But for modern applications "
+"which make heavy use of many fine-grained, asynchronous (AJAX) requests, "
+"concurrency is a fact of life, and must be supported by the programming "
+"model. Seam weaves a concurrency management layer into its context model."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:186
+#, no-c-format
+msgid ""
+"The Seam session and application contexts are multithreaded. Seam will allow "
+"concurrent requests in a context to be processed concurrently. The event and "
+"page contexts are by nature single threaded. The business process context is "
+"strictly speaking multi-threaded, but in practice concurrency is "
+"sufficiently rare that this fact may be disregarded most of the time. "
+"Finally, Seam enforces a <emphasis>single thread per conversation per "
+"process</emphasis> model for the conversation context by serializing "
+"concurrent requests in the same long-running conversation context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:189
+#, no-c-format
+msgid ""
+"Since the session context is multithreaded, and often contains volatile "
+"state, session scope components are always protected by Seam from concurrent "
+"access. Seam serializes requests to session scope session beans and "
+"JavaBeans by default (and detects and breaks any deadlocks that occur). This "
+"is not the default behaviour for application scoped components however, "
+"since application scoped components do not usually hold volatile state and "
+"because synchronization at the global level is <emphasis>extremely</"
+"emphasis> expensive. However, you can force a serialized threading model on "
+"any session bean or JavaBean component by adding the <literal>@Synchronized</"
+"literal> annotation."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:192
+#, no-c-format
+msgid ""
+"This concurrency model means that AJAX clients can safely use volatile "
+"session and conversational state, without the need for any special work on "
+"the part of the developer."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:195
+#, no-c-format
+msgid "Seam components"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:196
+#, no-c-format
+msgid ""
+"Seam components are POJOs (Plain Old Java Objects). In particular, they are "
+"JavaBeans or EJB 3.0 enterprise beans. While Seam does not require that "
+"components be EJBs and can even be used without an EJB 3.0 compliant "
+"container, Seam was designed with EJB 3.0 in mind and includes deep "
+"integration with EJB 3.0. Seam supports the following <emphasis>component "
+"types</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:201
+#, no-c-format
+msgid "EJB 3.0 stateless session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:206
+#, no-c-format
+msgid "EJB 3.0 stateful session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:211
+#, no-c-format
+msgid "EJB 3.0 entity beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:216
+#, no-c-format
+msgid "<para>JavaBeans</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:221
+#, no-c-format
+msgid "EJB 3.0 message-driven beans"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:226
+#, no-c-format
+msgid "Stateless session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:227
+#, no-c-format
+msgid ""
+"Stateless session bean components are not able to hold state across multiple "
+"invocations. Therefore, they usually work by operating upon the state of "
+"other components in the various Seam contexts. They may be used as JSF "
+"action listeners, but cannot provide properties to JSF components for "
+"display."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:230
+#, no-c-format
+msgid "Stateless session beans always live in the stateless context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:233
+#, no-c-format
+msgid ""
+"Stateless session beans are the least interesting kind of Seam component."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:236
+#, no-c-format
+msgid "Stateful session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:237
+#, no-c-format
+msgid ""
+"Stateful session bean components are able to hold state not only across "
+"multiple invocations of the bean, but also across multiple requests. "
+"Application state that does not belong in the database should usually be "
+"held by stateful session beans. This is a major difference between Seam and "
+"many other web application frameworks. Instead of sticking information about "
+"the current conversation directly in the <literal>HttpSession</literal>, you "
+"should keep it in instance variables of a stateful session bean that is "
+"bound to the conversation context. This allows Seam to manage the lifecycle "
+"of this state for you, and ensure that there are no collisions between state "
+"relating to different concurrent conversations."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:240
+#, no-c-format
+msgid ""
+"Stateful session beans are often used as JSF action listener, and as backing "
+"beans that provide properties to JSF components for display or form "
+"submission."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:243
+#, no-c-format
+msgid ""
+"By default, stateful session beans are bound to the conversation context. "
+"They may never be bound to the page or stateless contexts."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:246
+#, no-c-format
+msgid ""
+"Concurrent requests to session-scoped stateful session beans are always "
+"serialized by Seam."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:249
+#, no-c-format
+msgid "Entity beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:250
+#, no-c-format
+msgid ""
+"Entity beans may be bound to a context variable and function as a seam "
+"component. Because entities have a persistent identity in addition to their "
+"contextual identity, entity instances are usually bound explicitly in Java "
+"code, rather than being instantiated implicitly by Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:253
+#, no-c-format
+msgid ""
+"Entity bean components do not support bijection or context demarcation. Nor "
+"does invocation of an entity bean trigger validation."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:256
+#, no-c-format
+msgid ""
+"Entity beans are not usually used as JSF action listeners, but do often "
+"function as backing beans that provide properties to JSF components for "
+"display or form submission. In particular, it is common to use an entity as "
+"a backing bean, together with a stateless session bean action listener to "
+"implement create/update/delete type functionality."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:259
+#, no-c-format
+msgid ""
+"By default, entity beans are bound to the conversation context. They may "
+"never be bound to the stateless context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:262
+#, no-c-format
+msgid ""
+"Note that it in a clustered environment is somewhat less efficient to bind "
+"an entity bean directly to a conversation or session scoped Seam context "
+"variable than it would be to hold a reference to the entity bean in a "
+"stateful session bean. For this reason, not all Seam applications define "
+"entity beans to be Seam components."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:265
+#, no-c-format
+msgid "<title>JavaBeans</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:266
+#, no-c-format
+msgid ""
+"Javabeans may be used just like a stateless or stateful session bean. "
+"However, they do not provide the functionality of a session bean "
+"(declarative transaction demarcation, declarative security, efficient "
+"clustered state replication, EJB 3.0 persistence, timeout methods, etc)."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:269
+#, no-c-format
+msgid ""
+"In a later chapter, we show you how to use Seam and Hibernate without an EJB "
+"container. In this use case, components are JavaBeans instead of session "
+"beans. Note, however, that in many application servers it is somewhat less "
+"efficient to cluster conversation or session scoped Seam JavaBean components "
+"than it is to cluster stateful session bean components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:272
+#, no-c-format
+msgid "By default, JavaBeans are bound to the event context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:275
+#, no-c-format
+msgid ""
+"Concurrent requests to session-scoped JavaBeans are always serialized by "
+"Seam."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:278
+#, no-c-format
+msgid "Message-driven beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:279
+#, no-c-format
+msgid ""
+"Message-driven beans may function as a seam component. However, message-"
+"driven beans are called quite differently to other Seam components - instead "
+"of invoking them via the context variable, they listen for messages sent to "
+"a JMS queue or topic."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:282
+#, no-c-format
+msgid ""
+"Message-driven beans may not be bound to a Seam context. Nor do they have "
+"access to the session or conversation state of their \"caller\". However, "
+"they do support bijection and some other Seam functionality."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:285
+#, no-c-format
+msgid "Interception"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:286
+#, no-c-format
+msgid ""
+"In order to perform its magic (bijection, context demarcation, validation, "
+"etc), Seam must intercept component invocations. For JavaBeans, Seam is in "
+"full control of instantiation of the component, and no special configuration "
+"is needed. For entity beans, interception is not required since bijection "
+"and context demarcation are not defined. For session beans, we must register "
+"an EJB interceptor for the session bean component. We could use an "
+"annotation, as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:289
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:290
+#, no-c-format
+msgid ""
+"But a much better way is to define the interceptor in <literal>ejb-jar.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:293
+#, no-c-format
+msgid ""
+"&lt;interceptors&gt;\n"
+"   &lt;interceptor&gt;\n"
+"      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"   &lt;/interceptor&gt;\n"
+"&lt;/interceptors&gt;\n"
+"   \n"
+"&lt;assembly-descriptor&gt;\n"
+"   &lt;interceptor-binding&gt;\n"
+"      &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"   &lt;/interceptor-binding&gt;\n"
+"&lt;/assembly-descriptor&gt;"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:294
+#, no-c-format
+msgid "Component names"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:295
+#, no-c-format
+msgid ""
+"All seam components need a name. We can assign a name to a component using "
+"the <literal>@Name</literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:298
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:299
+#, no-c-format
+msgid ""
+"This name is the <emphasis>seam component name</emphasis> and is not related "
+"to any other name defined by the EJB specification. However, seam component "
+"names work just like JSF managed bean names and you can think of the two "
+"concepts as identical."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:302
+#, no-c-format
+msgid ""
+"<literal>@Name</literal> is not the only way to define a component name, but "
+"we always need to specify the name <emphasis>somewhere</emphasis>. If we "
+"don't, then none of the other Seam annotations will function."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:305
+#, no-c-format
+msgid ""
+"Just like in JSF, a seam component instance is usually bound to a context "
+"variable with the same name as the component name. So, for example, we would "
+"access the <literal>LoginAction</literal> using <literal>Contexts."
+"getStatelessContext().get(\"loginAction\")</literal>. In particular, "
+"whenever Seam itself instantiates a component, it binds the new instance to "
+"a variable with the component name. However, again like JSF, it is possible "
+"for the application to bind a component to some other context variable by "
+"programmatic API call. This is only useful if a particular component serves "
+"more than one role in the system. For example, the currently logged in "
+"<literal>User</literal> might be bound to the <literal>currentUser</literal> "
+"session context variable, while a <literal>User</literal> that is the "
+"subject of some administration functionality might be bound to the "
+"<literal>user</literal> conversation context variable."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:308
+#, no-c-format
+msgid ""
+"For very large applications, and for built-in seam components, qualified "
+"names are often used."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:311
+#, no-c-format
+msgid ""
+"@Name(\"com.jboss.myapp.loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:312
+#, no-c-format
+msgid ""
+"We may use the qualified component name both in Java code and in JSF's "
+"expression language:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:315
+#, no-c-format
+msgid ""
+"&lt;h:commandButton type=\"submit\" value=\"Login\"\n"
+"                 action=\"#{com.jboss.myapp.loginAction.login}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:316
+#, no-c-format
+msgid ""
+"Since this is noisy, Seam also provides a means of aliasing a qualified name "
+"to a simple name. Add a line like this to the <literal>components.xml</"
+"literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:319
+#, no-c-format
+msgid ""
+"&lt;factory name=\"loginAction\" scope=\"STATELESS\" value=\"#{com.jboss."
+"myapp.loginAction}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:320
+#, no-c-format
+msgid ""
+"All of the built-in Seam components have qualified names, but most of them "
+"are aliased to a simple name by the <literal>components.xml</literal> file "
+"included in the Seam jar."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:323
+#, no-c-format
+msgid "Defining the component scope"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:324
+#, no-c-format
+msgid ""
+"We can override the default scope (context) of a component using the "
+"<literal>@Scope</literal> annotation. This lets us define what context a "
+"component instance is bound to, when it is instantiated by Seam."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:327
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(SESSION)\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:328
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.ScopeType</literal> defines an enumeration of "
+"possible scopes."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:331
+#, no-c-format
+msgid "Components with multiple roles"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:332
+#, no-c-format
+msgid ""
+"Some Seam component classes can fulfill more than one role in the system. "
+"For example, we often have a <literal>User</literal> class which is usually "
+"used as a session-scoped component representing the current user but is used "
+"in user administration screens as a conversation-scoped component. The "
+"<literal>@Role</literal> annotation lets us define an additional named role "
+"for a component, with a different scope&mdash;it lets us bind the same "
+"component class to different context variables. (Any Seam component "
+"<emphasis>instance</emphasis> may be bound to multiple context variables, "
+"but this lets us do it at the class level, and take advantage of auto-"
+"instantiation.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:335
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(CONVERSATION)\n"
+"@Role(name=\"currentUser\", scope=SESSION)\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:336
+#, no-c-format
+msgid ""
+"The <literal>@Roles</literal> annotation lets us specify as many additional "
+"roles as we like."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:339
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(CONVERSATION)\n"
+"@Roles({@Role(name=\"currentUser\", scope=SESSION)\n"
+"        @Role(name=\"tempUser\", scope=EVENT)})\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:340
+#, no-c-format
+msgid "Built-in components"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:341
+#, no-c-format
+msgid ""
+"Like many good frameworks, Seam eats its own dogfood and is implemented "
+"mostly as a set of built-in Seam interceptors (see later) and Seam "
+"components. This makes it easy for applications to interact with built-in "
+"components at runtime or even customize the basic functionality of Seam by "
+"replacing the built-in components with custom implementations. The built-in "
+"components are defined in the Seam namespace <literal>org.jboss.seam.core</"
+"literal> and the Java package of the same name."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:344
+#, no-c-format
+msgid ""
+"The built-in components may be injected, just like any Seam components, but "
+"they also provide convenient static <literal>instance()</literal> methods:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:347
+#, no-c-format
+msgid "FacesMessages.instance().add(\"Welcome back, #{user.name}!\");"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:348
+#, no-c-format
+msgid ""
+"Seam was designed to integrate tightly in a Java EE 5 environment. However, "
+"we understand that there are many projects which are not running in a full "
+"EE environment. We also realize the critical importance of easy unit and "
+"integration testing using frameworks such as TestNG and JUnit. So, we've "
+"made it easy to run Seam in Java SE environments by allowing you to boostrap "
+"certain critical infrastructure normally only found in EE environments by "
+"installing built-in Seam components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:351
+#, no-c-format
+msgid ""
+"For example, you can run your EJB3 components in Tomcat or an integration "
+"test suite just by installing the built-in component <literal>org.jboss.seam."
+"core.ejb</literal>, which automatically bootstraps the JBoss Embeddable EJB3 "
+"container and deploys your EJB components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:354
+#, no-c-format
+msgid ""
+"Or, if you're not quite ready for the Brave New World of EJB 3.0, you can "
+"write a Seam application that uses only JavaBean components, together with "
+"Hibernate3 for persistence, by installing a built-in component that manages "
+"a Hibernate <literal>SessionFactory</literal>. When using Hibernate outside "
+"of a J2EE environment, you will also probably need a JTA transaction manager "
+"and JNDI server, which are available via the built-in component <literal>org."
+"jboss.seam.core.microcontainer</literal>. This lets you use the bulletproof "
+"JTA/JCA pooling datasource from JBoss application server in an SE "
+"environment like Tomcat!"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:357
+#, no-c-format
+msgid "Bijection"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:358
+#, no-c-format
+msgid ""
+"<emphasis>Dependency injection</emphasis> or <emphasis>inversion of control</"
+"emphasis> is by now a familiar concept to most Java developers. Dependency "
+"injection allows a component to obtain a reference to another component by "
+"having the container \"inject\" the other component to a setter method or "
+"instance variable. In all dependency injection implementations that we have "
+"seen, injection occurs when the component is constructed, and the reference "
+"does not subsequently change for the lifetime of the component instance. For "
+"stateless components, this is reasonable. From the point of view of a "
+"client, all instances of a particular stateless component are "
+"interchangeable. On the other hand, Seam emphasizes the use of stateful "
+"components. So traditional dependency injection is no longer a very useful "
+"construct. Seam introduces the notion of <emphasis>bijection</emphasis> as a "
+"generalization of injection. In contrast to injection, bijection is:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:363
+#, no-c-format
+msgid ""
+"<emphasis>contextual</emphasis> - bijection is used to assemble stateful "
+"components from various different contexts (a component from a \"wider\" "
+"context may even have a reference to a component from a \"narrower\" context)"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:368
+#, no-c-format
+msgid ""
+"<emphasis>bidirectional</emphasis> - values are injected from context "
+"variables into attributes of the component being invoked, and also "
+"<emphasis>outjected</emphasis> from the component attributes back out to the "
+"context, allowing the component being invoked to manipulate the values of "
+"contextual variables simply by setting its own instance variables"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:373
+#, no-c-format
+msgid ""
+"<emphasis>dynamic</emphasis> - since the value of contextual variables "
+"changes over time, and since Seam components are stateful, bijection takes "
+"place every time a component is invoked"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:378
+#, no-c-format
+msgid ""
+"In essence, bijection lets you alias a context variable to a component "
+"instance variable, by specifying that the value of the instance variable is "
+"injected, outjected, or both. Of course, we use annotations to enable "
+"bijection."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:381
+#, no-c-format
+msgid ""
+"The <literal>@In</literal> annotation specifies that a value should be "
+"injected, either into an instance variable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:384
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:385
+#, no-c-format
+msgid "or into a setter method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:388
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @In\n"
+"    public void setUser(User user) {\n"
+"        this.user=user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:389
+#, no-c-format
+msgid ""
+"By default, Seam will do a priority search of all contexts, using the name "
+"of the property or instance variable that is being injected. You may wish to "
+"specify the context variable name explicitly, using, for example, "
+"<literal>@In(\"currentUser\")</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:392
+#, no-c-format
+msgid ""
+"If you want Seam to create an instance of the component when there is no "
+"existing component instance bound to the named context variable, you should "
+"specify <literal>@In(create=true)</literal>. If the value is optional (it "
+"can be null), specify <literal>@In(required=false)</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:395
+#, no-c-format
+msgid ""
+"For some components, it can be repetitive to have to specify <literal>@In"
+"(create=true)</literal> everywhere they are used. In such cases, you can "
+"annotate the component <literal>@AutoCreate</literal>, and then it will "
+"always be created, whenever needed, even without the explicit use of "
+"<literal>create=true</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:398
+#, no-c-format
+msgid "You can even inject the value of an expression:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:401
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In(\"#{user.username}\") String username;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:402
+#, no-c-format
+msgid ""
+"(There is much more information about component lifecycle and injection in "
+"the next chapter.)"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:405
+#, no-c-format
+msgid ""
+"The <literal>@Out</literal> annotation specifies that an attribute should be "
+"outjected, either from an instance variable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:408
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @Out User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:409
+#, no-c-format
+msgid "or from a getter method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:412
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @Out\n"
+"    public User getUser() {\n"
+"        return user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:413
+#, no-c-format
+msgid "An attribute may be both injected and outjected:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:416
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In @Out User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:417
+#, no-c-format
+msgid "<para>or:</para>"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:420
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @In\n"
+"    public void setUser(User user) {\n"
+"        this.user=user;\n"
+"    }\n"
+"    \n"
+"    @Out\n"
+"    public User getUser() {\n"
+"        return user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:421
+#, no-c-format
+msgid "Lifecycle methods"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:422
+#, no-c-format
+msgid ""
+"Session bean and entity bean Seam components support all the usual EJB 3.0 "
+"lifecycle callback (<literal>@PostConstruct</literal>, <literal>@PreDestroy</"
+"literal>, etc). Seam extends all of these callbacks except "
+"<literal>@PreDestroy</literal> to JavaBean components. But Seam also defines "
+"its own component lifecycle callbacks."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:425
+#, no-c-format
+msgid ""
+"The <literal>@Create</literal> method is called every time Seam instantiates "
+"a component. Unlike the <literal>@PostConstruct</literal> method, this "
+"method is called after the component is fully constructed by the EJB "
+"container, and has access to all the usual Seam functionality (bijection, "
+"etc). Components may define only one <literal>@Create</literal> method."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:428
+#, no-c-format
+msgid ""
+"The <literal>@Destroy</literal> method is called when the context that the "
+"Seam component is bound to ends. Components may define only one "
+"<literal>@Destroy</literal> method. Stateful session bean components "
+"<emphasis>must</emphasis> define a method annotated <literal>@Destroy "
+"@Remove</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:431
+#, no-c-format
+msgid ""
+"Finally, a related annotation is the <literal>@Startup</literal> annotation, "
+"which may be applied to any application or session scoped component. The "
+"<literal>@Startup</literal> annotation tells Seam to instantiate the "
+"component immediately, when the context begins, instead of waiting until it "
+"is first referenced by a client. It is possible to control the order of "
+"instantiation of startup components by specifying <literal>@Startup(depends="
+"{....})</literal>."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:434
+#, no-c-format
+msgid "Conditional installation"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:435
+#, no-c-format
+msgid ""
+"The <literal>@Install</literal> annotation lets you control conditional "
+"installation of components that are required in some deployment scenarios "
+"and not in others. This is useful if:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:440
+#, no-c-format
+msgid "You want to mock out some infrastructural component in tests."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:445
+#, no-c-format
+msgid ""
+"You want change the implementation of a component in certain deployment "
+"scenarios."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:450
+#, no-c-format
+msgid ""
+"You want to install some components only if their dependencies are available "
+"(useful for framework authors)."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:455
+#, no-c-format
+msgid ""
+"<literal>@Install</literal> works by letting you specify "
+"<emphasis>precedence</emphasis> and <emphasis>dependencies</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:458
+#, no-c-format
+msgid ""
+"The precedence of a component is a number that Seam uses to decide which "
+"component to install when there are multiple classes with the same component "
+"name in the classpath. Seam will choose the component with the higher "
+"precendence. There are some predefined precedence values:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:463
+#, no-c-format
+msgid ""
+"<literal>BUILT_IN</literal> &mdash; the lowest precedece components are the "
+"components built in to Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:468
+#, no-c-format
+msgid ""
+"<literal>FRAMEWORK</literal> &mdash; components defined by third-party "
+"frameworks may override built-in components, but are overridden by "
+"application components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:473
+#, no-c-format
+msgid ""
+"<literal>APPLICATION</literal> &mdash; the default precedence. This is "
+"appropriate for most application components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:478
+#, no-c-format
+msgid ""
+"<literal>DEPLOYMENT</literal> &mdash; for application components which are "
+"deployment-specific."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:483
+#, no-c-format
+msgid "<literal>MOCK</literal> &mdash; for mock objects used in testing."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:488
+#, no-c-format
+msgid ""
+"Suppose we have a component named <literal>messageSender</literal> that "
+"talks to a JMS queue."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:491
+#, no-c-format
+msgid ""
+"@Name(\"messageSender\") \n"
+"public class MessageSender {\n"
+"    public void sendMessage() {\n"
+"        //do something with JMS\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:492
+#, no-c-format
+msgid ""
+"In our unit tests, we don't have a JMS queue available, so we would like to "
+"stub out this method. We'll create a <emphasis>mock</emphasis> component "
+"that exists in the classpath when unit tests are running, but is never "
+"deployed with the application:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:495
+#, no-c-format
+msgid ""
+"@Name(\"messageSender\") \n"
+"@Install(precedence=MOCK)\n"
+"public class MockMessageSender extends MessageSender {\n"
+"    public void sendMessage() {\n"
+"        //do nothing!\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:496
+#, no-c-format
+msgid ""
+"The <literal>precedence</literal> helps Seam decide which version to use "
+"when it finds both components in the classpath."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:499
+#, no-c-format
+msgid ""
+"This is nice if we are able to control exactly which classes are in the "
+"classpath. But if I'm writing a reusable framework with many dependecies, I "
+"don't want to have to break that framework across many jars. I want to be "
+"able to decide which components to install depending upon what other "
+"components are installed, and upon what classes are available in the "
+"classpath. The <literal>@Install</literal> annotation also controls this "
+"functionality. Seam uses this mechanism internally to enable conditional "
+"installation of many of the built-in components. However, you probably won't "
+"need to use it in your application."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:502
+#, no-c-format
+msgid "Logging"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:503
+#, no-c-format
+msgid "Who is not totally fed up with seeing noisy code like this?"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:506
+#, no-c-format
+msgid ""
+"private static final Log log = LogFactory.getLog(CreateOrderAction.class);\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    if ( log.isDebugEnabled() ) {\n"
+"        log.debug(\"Creating new order for user: \" + user.username() + \n"
+"            \" product: \" + product.name() \n"
+"            + \" quantity: \" + quantity);\n"
+"    }\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:507
+#, no-c-format
+msgid ""
+"It is difficult to imagine how the code for a simple log message could "
+"possibly be more verbose. There is more lines of code tied up in logging "
+"than in the actual business logic! I remain totally astonished that the Java "
+"community has not come up with anything better in 10 years."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:510
+#, no-c-format
+msgid ""
+"Seam provides a logging API built on top of Apache commons-logging that "
+"simplifies this code significantly:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:513
+#, no-c-format
+msgid ""
+"@Logger private Log log;\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    log.debug(\"Creating new order for user: #0 product: #1 quantity: #2\", "
+"user.username(), \n"
+"       product.name(), quantity);\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:514
+#, no-c-format
+msgid ""
+"It doesn't matter if you declare the <literal>log</literal> variable static "
+"or not&mdash;it will work either way."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:517
+#, no-c-format
+msgid ""
+"Note that we don't need the noisy <literal>if ( log.isDebugEnabled() )</"
+"literal> guard, since string concatenation happens <emphasis>inside</"
+"emphasis> the <literal>debug()</literal> method. Note also that we don't "
+"usually need to specify the log category explicitly, since Seam knows what "
+"component it is injecting the <literal>Log</literal> into."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:520
+#, no-c-format
+msgid ""
+"If <literal>User</literal> and <literal>Product</literal> are Seam "
+"components available in the current contexts, it gets even better:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:523
+#, no-c-format
+msgid ""
+"@Logger private Log log;\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    log.debug(\"Creating new order for user: #{user.username} product: #"
+"{product.name}\n"
+"       quantity: #0\", quantity);\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:524
+#, no-c-format
+msgid ""
+"The <literal>Mutable</literal> interface and <literal>@ReadOnly</literal>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:525
+#, no-c-format
+msgid ""
+"Many application servers feature an amazingly broken implementation of "
+"<literal>HttpSession</literal> clustering, where changes to the state of "
+"mutable objects bound to the session are only replicated when the "
+"application calls <literal>setAttribute()</literal> explicitly. This is a "
+"source of bugs that can not effectively be tested for at development time, "
+"since they will only manifest when failover occurs. Furthermore, the actual "
+"replication message contains the entire serialized object graph bound to the "
+"session attribute, which is inefficient."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:528
+#, no-c-format
+msgid ""
+"Of course, EJB stateful session beans must perform automatic dirty checking "
+"and replication of mutable state and a sophisticated EJB container can "
+"introduce optimizations such as attribute-level replication. Unfortunately, "
+"not all Seam users have the good fortune to be working in an environment "
+"that supports EJB 3.0. So, for session and conversation scoped JavaBean and "
+"entity bean components, Seam provides an extra layer of cluster-safe state "
+"management over the top of the web container session clustering."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:531
+#, no-c-format
+msgid ""
+"For session or conversation scoped JavaBean components, Seam automatically "
+"forces replication to occur by calling <literal>setAttribute()</literal> "
+"once in every request that the component was invoked by the application. Of "
+"course, this strategy is inefficient for read-mostly components. You can "
+"control this behavior by implementing the <literal>org.jboss.seam.core."
+"Mutable</literal> interface, or by extending <literal>org.jboss.seam.core."
+"AbstractMutable</literal>, and writing your own dirty-checking logic inside "
+"the component. For example,"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:534
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class Account extends AbstractMutable\n"
+"{\n"
+"    private BigDecimal balance;\n"
+"    \n"
+"    public void setBalance(BigDecimal balance)\n"
+"    {\n"
+"        setDirty(this.balance, balance);\n"
+"        this.balance = balance;\n"
+"    }\n"
+"    \n"
+"    public BigDecimal getBalance()\n"
+"    {\n"
+"        return balance;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:535
+#, no-c-format
+msgid ""
+"Or, you can use the <literal>@ReadOnly</literal> annotation to achieve a "
+"similar effect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:538
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class Account\n"
+"{\n"
+"    private BigDecimal balance;\n"
+"    \n"
+"    public void setBalance(BigDecimal balance)\n"
+"    {\n"
+"        this.balance = balance;\n"
+"    }\n"
+"    \n"
+"    @ReadOnly\n"
+"    public BigDecimal getBalance()\n"
+"    {\n"
+"        return balance;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:539
+#, no-c-format
+msgid ""
+"For session or conversation scoped entity bean components, Seam "
+"automatically forces replication to occur by calling <literal>setAttribute()"
+"</literal> once in every request, <emphasis>unless the (conversation-scoped) "
+"entity is currently associated with a Seam-managed persistence context, in "
+"which case no replication is needed</emphasis>. This strategy is not "
+"necessarily efficient, so session or conversation scope entity beans should "
+"be used with care. You can always write a stateful session bean or JavaBean "
+"component to \"manage\" the entity bean instance. For example,"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:542
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"account\")\n"
+"public class AccountManager extends AbstractMutable\n"
+"{\n"
+"    private Account account; // an entity bean\n"
+"    \n"
+"    @Unwrap\n"
+"    public void getAccount()\n"
+"    {\n"
+"        return account;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:543
+#, no-c-format
+msgid ""
+"Note that the <literal>EntityHome</literal> class in the Seam Application "
+"Framework provides a great example of this pattern."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:546
+#, no-c-format
+msgid "Factory and manager components"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:547
+#, no-c-format
+msgid ""
+"We often need to work with objects that are not Seam components. But we "
+"still want to be able to inject them into our components using <literal>@In</"
+"literal> and use them in value and method binding expressions, etc. "
+"Sometimes, we even need to tie them into the Seam context lifecycle "
+"(<literal>@Destroy</literal>, for example). So the Seam contexts can contain "
+"objects which are not Seam components, and Seam provides a couple of nice "
+"features that make it easier to work with non-component objects bound to "
+"contexts."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:550
+#, no-c-format
+msgid ""
+"The <emphasis>factory component pattern</emphasis> lets a Seam component act "
+"as the instantiator for a non-component object. A <emphasis>factory method</"
+"emphasis> will be called when a context variable is referenced but has no "
+"value bound to it. We define factory methods using the <literal>@Factory</"
+"literal> annotation. The factory method binds a value to the context "
+"variable, and determines the scope of the bound value. There are two styles "
+"of factory method. The first style returns a value, which is bound to the "
+"context by Seam:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:553
+#, no-c-format
+msgid ""
+"@Factory(scope=CONVERSATION)\n"
+"public List&lt;Customer&gt; getCustomerList() { \n"
+"    return ... ;\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:554
+#, no-c-format
+msgid ""
+"The second style is a method of type <literal>void</literal> which binds the "
+"value to the context variable itself:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:557
+#, no-c-format
+msgid ""
+"@DataModel List&lt;Customer&gt; customerList;\n"
+"\n"
+"@Factory(\"customerList\")\n"
+"public void initCustomerList() { \n"
+"    customerList = ...  ;\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:558
+#, no-c-format
+msgid ""
+"In both cases, the factory method is called when we reference the "
+"<literal>customerList</literal> context variable and its value is null, and "
+"then has no further part to play in the lifecycle of the value. An even more "
+"powerful pattern is the <emphasis>manager component pattern</emphasis>. In "
+"this case, we have a Seam component that is bound to a context variable, "
+"that manages the value of the context variable, while remaining invisible to "
+"clients."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:561
+#, no-c-format
+msgid ""
+"A manager component is any component with an <literal>@Unwrap</literal> "
+"method. This method returns the value that will be visable to clients, and "
+"is called <emphasis>every time</emphasis> a context variable is referenced."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:564
+#, no-c-format
+msgid ""
+"@Name(\"customerList\")\n"
+"@Scope(CONVERSATION)\n"
+"public class CustomerListManager\n"
+"{\n"
+"    ...\n"
+"    \n"
+"    @Unwrap\n"
+"    public List&lt;Customer&gt; getCustomerList() { \n"
+"        return ... ;\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:565
+#, no-c-format
+msgid ""
+"This pattern is especially useful if we have some heavyweight object that "
+"needs a cleanup operation when the context ends. In this case, the manager "
+"component may perform cleanup in the <literal>@Destroy</literal> method."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Configuration.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Configuration.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Configuration.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1435 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Configuration.xml:10
+#, no-c-format
+msgid "Configuring Seam and packaging Seam applications"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:11
+#, no-c-format
+msgid ""
+"Configuration is a very boring topic and an extremely tedious pastime. "
+"Unfortunately, several lines of XML are required to integrate Seam into your "
+"JSF implementation and servlet container. There's no need to be too put off "
+"by the following sections; you'll never need to type any of this stuff "
+"yourself, since you can just copy and paste from the example applications!"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:14
+#, no-c-format
+msgid "Basic Seam configuration"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:15
+#, no-c-format
+msgid ""
+"First, let's look at the basic configuration that is needed whenever we use "
+"Seam with JSF."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:18
+#, no-c-format
+msgid "Integrating Seam with JSF and your servlet container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:19
+#, no-c-format
+msgid ""
+"Seam requires the following entry in your <literal>web.xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:22
+#, no-c-format
+msgid ""
+"&lt;listener&gt;\n"
+"    &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/listener-"
+"class&gt;\n"
+"&lt;/listener&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:23
+#, no-c-format
+msgid ""
+"This listener is responsible for bootstrapping Seam, and for destroying "
+"session and application contexts."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:26
+#, no-c-format
+msgid ""
+"To integrate with the JSF request lifecycle, we also need a JSF "
+"<literal>PhaseListener</literal> registered in in the <literal>faces-config."
+"xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:29
+#, no-c-format
+msgid ""
+"&lt;lifecycle&gt;\n"
+"    &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-"
+"listener&gt;\n"
+"&lt;/lifecycle&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:30
+#, no-c-format
+msgid ""
+"The actual listener class here varies depending upon how you want to manage "
+"transaction demarcation (more on this below)."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:33
+#, no-c-format
+msgid ""
+"If you are using Sun's JSF 1.2 reference implementation, you should also add "
+"this to <literal>faces-config.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:36
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;el-resolver&gt;org.jboss.seam.jsf.SeamELResolver&lt;/el-"
+"resolver&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:37
+#, no-c-format
+msgid ""
+"(This line should not strictly speaking be necessary, but it works around a "
+"minor bug in the RI.)"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:40
+#, no-c-format
+msgid ""
+"Some JSF implementations have a broken implementation of server-side state "
+"saving that interferes with Seam's conversation propagation. If you have "
+"problems with conversation propagation during form submissions, try "
+"switching to client-side state saving. You'll need this in <literal>web.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:43
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;client&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:44
+#, no-c-format
+msgid "Seam servlet filters"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:45
+#, no-c-format
+msgid ""
+"Seam doesn't need any servlet filters for basic operation. However, there "
+"are several features which depend upon the use of filters. To make things "
+"easier for you guys, Seam lets you add and configure servlet filters just "
+"like you would configure other built-in Seam components. To take advantage "
+"of this feature, we must first install a master filter in <literal>web.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:48
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;/*&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:49
+#, no-c-format
+msgid "Adding the master filter enables the following built-in filters."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:52
+#, no-c-format
+msgid "Exception handling"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:53
+#, no-c-format
+msgid ""
+"This filter provides the exception mapping functionality in <literal>pages."
+"xml</literal> (almost all applications will need this). It also takes care "
+"of rolling back uncommitted transactions when uncaught exceptions occur. "
+"(According to the Java EE specification, the web container should do this "
+"automatically, but we've found that this behavior cannot be relied upon in "
+"all application servers. And it is certainly not required of plain servlet "
+"engines like Tomcat.)"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:56
+#, no-c-format
+msgid ""
+"By default, the exception handling filter will process all requests, however "
+"this behavior may be adjusted by adding a <literal>&lt;web:exception-"
+"filter&gt;</literal> entry to <literal>components.xml</literal>, as shown in "
+"this example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:59
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:web=\"http://jboss.com/products/seam/web\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                    http://jboss.com/products/seam/core-1.2.xsd\n"
+"                 http://jboss.com/products/seam/components \n"
+"                     http://jboss.com/products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/web \n"
+"                     http://jboss.com/products/seam/web-1.2.xsd\"&gt;\n"
+"\n"
+"    &lt;web:exception-filter url-pattern=\"*.seam\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:62 Configuration.xml:77 Configuration.xml:99
+#: Configuration.xml:124
+#, no-c-format
+msgid ""
+"<literal>url-pattern</literal> &mdash; Used to specify which requests are "
+"filtered, the default is all requests."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:67
+#, no-c-format
+msgid "Conversation propagation with redirects"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:68
+#, no-c-format
+msgid ""
+"This filter allows Seam to propagate the conversation context across browser "
+"redirects. It intercepts any browser redirects and adds a request parameter "
+"that specifies the Seam conversation identifier."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:71
+#, no-c-format
+msgid ""
+"The redirect filter will process all requests by default, but this behavior "
+"can also be adjusted in <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:74
+#, no-c-format
+msgid "&lt;web:redirect-filter url-pattern=\"*.seam\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:82
+#, no-c-format
+msgid "Multipart form submissions"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:83
+#, no-c-format
+msgid ""
+"This feature is necessary when using the Seam file upload JSF control. It "
+"detects multipart form requests and processes them according to the "
+"multipart/form-data specification (RFC-2388). To override the default "
+"settings, add the following entry to <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:86
+#, no-c-format
+msgid ""
+"&lt;web:multipart-filter create-temp-files=\"true\" \n"
+"        max-request-size=\"1000000\" \n"
+"        url-pattern=\"*.seam\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:89
+#, no-c-format
+msgid ""
+"<literal>create-temp-files</literal> &mdash; If set to <literal>true</"
+"literal>, uploaded files are written to a temporary file (instead of held in "
+"memory). This may be an important consideration if large file uploads are "
+"expected. The default setting is <literal>false</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:94
+#, no-c-format
+msgid ""
+"<literal>max-request-size</literal> &mdash; If the size of a file upload "
+"request (determined by reading the <literal>Content-Length</literal> header "
+"in the request) exceeds this value, the request will be aborted. The default "
+"setting is 0 (no size limit)."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:104
+#, no-c-format
+msgid "Character encoding"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:105
+#, no-c-format
+msgid "Sets the character encoding of submitted form data."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:108 Configuration.xml:136
+#, no-c-format
+msgid ""
+"This filter is not installed by default and requires an entry in "
+"<literal>components.xml</literal> to enable it:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:111
+#, no-c-format
+msgid ""
+"&lt;web:character-encoding-filter encoding=\"UTF-16\" \n"
+"        override-client=\"true\" \n"
+"        url-pattern=\"*.seam\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:114
+#, no-c-format
+msgid "<literal>encoding</literal> &mdash; The encoding to use."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:119
+#, no-c-format
+msgid ""
+"<literal>override-client</literal> &mdash; If this is set to <literal>true</"
+"literal>, the request encoding will be set to whatever is specified by "
+"<literal>encoding</literal> no matter whether the request already specifies "
+"an encoding or not. If set to <literal>false</literal>, the request encoding "
+"will only be set if the request doesn't already specify an encoding. The "
+"default setting is <literal>false</literal>."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:129
+#, no-c-format
+msgid "Context management for custom servlets"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:130
+#, no-c-format
+msgid ""
+"Requests sent direct to some servlet other than the JSF servlet are not "
+"processed through the JSF lifecycle, so Seam provides a servlet filter that "
+"can be applied to any other servlet that needs access to Seam components."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:133
+#, no-c-format
+msgid ""
+"This filter allows custom servlets to interact with the Seam contexts. It "
+"sets up the Seam contexts at the beginning of each request, and tears them "
+"down at the end of the request. You should make sure that this filter is "
+"<emphasis>never</emphasis> applied to the JSF <literal>FacesServlet</"
+"literal>. Seam uses the phase listener for context management in a JSF "
+"request."
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:139
+#, no-c-format
+msgid "&lt;web:context-filter url-pattern=\"/media/*\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:142
+#, no-c-format
+msgid ""
+"<literal>url-pattern</literal> &mdash; Used to specify which requests are "
+"filtered, the default is all requests. If the url-pattern is specified for "
+"the context filter, then the filter will be enabled (unless explicitly "
+"disabled)."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:147
+#, no-c-format
+msgid ""
+"The context filter expects to find the conversation id of any conversation "
+"context in a request parameter named <literal>conversationId</literal>. You "
+"are responsible for ensuring that it gets sent in the request."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:150
+#, no-c-format
+msgid ""
+"You are also responsible for ensuring propagation of any new conversation id "
+"back to the client. Seam exposes the conversation id as a property of the "
+"built in component <literal>conversation</literal>."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:153
+#, no-c-format
+msgid "Integrating Seam with your EJB container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:154
+#, no-c-format
+msgid ""
+"We need to apply the <literal>SeamInterceptor</literal> to our Seam "
+"components. The simplest way to do this is to add the following interceptor "
+"binding to the <literal>&lt;assembly-descriptor&gt;</literal> in "
+"<literal>ejb-jar.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:157
+#, no-c-format
+msgid ""
+"&lt;interceptor-binding&gt;\n"
+"    &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"    &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"&lt;/interceptor-binding&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:158
+#, no-c-format
+msgid ""
+"Seam needs to know where to go to find session beans in JNDI. One way to do "
+"this is specify the <literal>@JndiName</literal> annotation on every session "
+"bean Seam component. However, this is quite tedious. A better approach is to "
+"specify a pattern that Seam can use to calculate the JNDI name from the EJB "
+"name. Unfortunately, there is no standard mapping to global JNDI defined in "
+"the EJB3 specification, so this mapping is vendor-specific. We usually "
+"specify this option in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:161
+#, no-c-format
+msgid "For JBoss AS, the following pattern is correct:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:164
+#, no-c-format
+msgid "&lt;core:init jndi-name=\"myEarName/#{ejbName}/local\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:165
+#, no-c-format
+msgid ""
+"Where <literal>myEarName</literal> is the name of the EAR in which the bean "
+"is deployed."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:168
+#, no-c-format
+msgid ""
+"Outside the context of an EAR (when using the JBoss Embeddable EJB3 "
+"container), the following pattern is the one to use:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:171
+#, no-c-format
+msgid "&lt;core:init jndi-name=\"#{ejbName}/local\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:172
+#, no-c-format
+msgid ""
+"You'll have to experiment to find the right setting for other application "
+"servers. Note that some servers (such as GlassFish) require you to specify "
+"JNDI names for all EJB components explicitly (and tediously). In this case, "
+"you can pick your own pattern ;-)"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:175
+#, no-c-format
+msgid "Using facelets"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:176
+#, no-c-format
+msgid ""
+"If you want follow our advice and use facelets instead of JSP, add the "
+"following lines to <literal>faces-config.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:179
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;view-handler&gt;com.sun.facelets.FaceletViewHandler&lt;/view-"
+"handler&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:180
+#, no-c-format
+msgid "And the following lines to <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:183
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;javax.faces.DEFAULT_SUFFIX&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;.xhtml&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:184
+#, no-c-format
+msgid "Don't forget!"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:185
+#, no-c-format
+msgid ""
+"There is one final item you need to know about. You must place a "
+"<literal>seam.properties</literal>, <literal>META-INF/seam.properties</"
+"literal> or <literal>META-INF/components.xml</literal> file in any archive "
+"in which your Seam components are deployed (even an empty properties file "
+"will do). At startup, Seam will scan any archives with <literal>seam."
+"properties</literal> files for seam components."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:188
+#, no-c-format
+msgid ""
+"That's why all the Seam examples have an empty <literal>seam.properties</"
+"literal> file. You can't just delete this file and expect everything to "
+"still work!"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:191
+#, no-c-format
+msgid ""
+"You might think this is silly and what kind of idiot framework designers "
+"would make an empty file affect the behavior of their software?? Well, this "
+"is a workaround for a limitation of the JVM&mdash;if we didn't use this "
+"mechanism, our next best option would be to force you to list every "
+"component explicitly in <literal>components.xml</literal>, just like some "
+"other competing frameworks do! I think you'll like our way better."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:195
+#, no-c-format
+msgid "Configuring Seam in Java EE 5"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:204
+#, no-c-format
+msgid ""
+"If you're running in a Java EE 5 environment, this is all the configuration "
+"required to start using Seam!"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:207 Configuration.xml:270 Configuration.xml:318
+#: Configuration.xml:354 Configuration.xml:371
+#, no-c-format
+msgid "Packaging"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:208
+#, no-c-format
+msgid ""
+"Once you've packaged all this stuff together into an EAR, the archive "
+"structure will look something like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:211
+#, no-c-format
+msgid ""
+"my-application.ear/\n"
+"    jboss-seam.jar\n"
+"    el-api.jar\n"
+"    el-ri.jar\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"        application.xml\n"
+"    my-application.war/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"        WEB-INF/\n"
+"            web.xml\n"
+"            components.xml\n"
+"            faces-config.xml\n"
+"            lib/\n"
+"                jsf-facelets.jar\n"
+"                jboss-seam-ui.jar\n"
+"        login.jsp\n"
+"        register.jsp\n"
+"        ...\n"
+"    my-application.jar/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"            persistence.xml\n"
+"        seam.properties\n"
+"        org/\n"
+"            jboss/\n"
+"                myapplication/\n"
+"                    User.class\n"
+"                    Login.class\n"
+"                    LoginBean.class\n"
+"                    Register.class\n"
+"                    RegisterBean.class\n"
+"                    ..."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:212
+#, no-c-format
+msgid ""
+"You must include <literal>jboss-seam.jar</literal>, <literal>el-api.jar</"
+"literal> and <literal>el-ri.jar</literal> in the EAR classpath. Make sure "
+"you reference all of these jars from <literal>application.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:215
+#, no-c-format
+msgid ""
+"If you want to use jBPM or Drools, you must include the needed jars in the "
+"EAR classpath. Make sure you reference all of the jars from "
+"<literal>application.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:218
+#, no-c-format
+msgid ""
+"If you want to use facelets (our recommendation), you must include "
+"<literal>jsf-facelets.jar</literal> in the <literal>WEB-INF/lib</literal> "
+"directory of the WAR."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:221
+#, no-c-format
+msgid ""
+"If you want to use the Seam tag library (most Seam applications do), you "
+"must include <literal>jboss-seam-ui.jar</literal> in the <literal>WEB-INF/"
+"lib</literal> directory of the WAR. If you want to use the PDF or email tag "
+"libraries, you need to put <literal>jboss-seam-pdf.jar</literal> or "
+"<literal>jboss-seam-mail.jar</literal> in <literal>WEB-INF/lib</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:224
+#, no-c-format
+msgid ""
+"If you want to use the Seam debug page (only works for applications using "
+"facelets), you must include <literal>jboss-seam-debug.jar</literal> in the "
+"<literal>WEB-INF/lib</literal> directory of the WAR."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:227
+#, no-c-format
+msgid ""
+"Seam ships with several example applications that are deployable in any Java "
+"EE container that supports EJB 3.0."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:231
+#, no-c-format
+msgid "Configuring Seam in Java SE, with the JBoss Embeddable EJB3 container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:232
+#, no-c-format
+msgid ""
+"The JBoss Embeddable EJB3 container lets you run EJB3 components outside the "
+"context of the Java EE 5 application server. This is especially, but not "
+"only, useful for testing."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:235
+#, no-c-format
+msgid ""
+"The Seam booking example application includes a TestNG integration test "
+"suite that runs on the Embeddable EJB3 container."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:246
+#, no-c-format
+msgid "The booking example application may even be deployed to Tomcat."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:257
+#, no-c-format
+msgid "Installing the Embeddable EJB3 container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:258
+#, no-c-format
+msgid ""
+"Seam ships with a build of the Embeddable EJB3 container in the "
+"<literal>embedded-ejb</literal> directory. To use the Embeddable EJB3 "
+"container with Seam, add the <literal>embedded-ejb/conf</literal> directory, "
+"and all jars in the <literal>lib</literal> and <literal>embedded-ejb/lib</"
+"literal> directories to your classpath. Then, add the following line to "
+"<literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:261
+#, no-c-format
+msgid "&lt;core:ejb /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:262
+#, no-c-format
+msgid ""
+"This setting installs the built-in component named <literal>org.jboss.seam."
+"core.ejb</literal>. This component is responsible for bootstrapping the EJB "
+"container when Seam is started, and shutting it down when the web "
+"application is undeployed."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:265
+#, no-c-format
+msgid "Configuring a datasource with the Embeddable EJB3 container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:266
+#, no-c-format
+msgid ""
+"You should refer to the Embeddable EJB3 container documentation for more "
+"information about configuring the container. You'll probably at least need "
+"to set up your own datasource. Embeddable EJB3 is implemented using the "
+"JBoss Microcontainer, so it's very easy to add new services to the minimal "
+"set of services provided by default. For example, I can add a new datasource "
+"by putting this <literal>jboss-beans.xml</literal> file in my classpath:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:269
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"\n"
+"&lt;deployment xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"urn:jboss:bean-deployer bean-deployer_1_0."
+"xsd\"\n"
+"            xmlns=\"urn:jboss:bean-deployer\"&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasourceBootstrap\"\n"
+"        class=\"org.jboss.resource.adapter.jdbc.local.LocalTxDataSource"
+"\"&gt;\n"
+"      &lt;property name=\"driverClass\"&gt;org.hsqldb.jdbcDriver&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"connectionURL\"&gt;jdbc:hsqldb:.&lt;/property&gt;\n"
+"      &lt;property name=\"userName\"&gt;sa&lt;/property&gt;\n"
+"      &lt;property name=\"jndiName\"&gt;java:/bookingDatasource&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"minSize\"&gt;0&lt;/property&gt;\n"
+"      &lt;property name=\"maxSize\"&gt;10&lt;/property&gt;\n"
+"      &lt;property name=\"blockingTimeout\"&gt;1000&lt;/property&gt;\n"
+"      &lt;property name=\"idleTimeout\"&gt;100000&lt;/property&gt;\n"
+"      &lt;property name=\"transactionManager\"&gt;\n"
+"        &lt;inject bean=\"TransactionManager\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"      &lt;property name=\"cachedConnectionManager\"&gt;\n"
+"        &lt;inject bean=\"CachedConnectionManager\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"      &lt;property name=\"initialContextProperties\"&gt;\n"
+"        &lt;inject bean=\"InitialContextProperties\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasource\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getDatasource\"&gt;\n"
+"         &lt;factory bean=\"bookingDatasourceBootstrap\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"&lt;/deployment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:271
+#, no-c-format
+msgid ""
+"The archive structure of a WAR-based deployment on an servlet engine like "
+"Tomcat will look something like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:274
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            myfaces-api.jar\n"
+"            myfaces-impl.jar\n"
+"            jboss-ejb3.jar\n"
+"            jboss-jca.jar\n"
+"            jboss-j2ee.jar\n"
+"            ...\n"
+"            mc-conf.jar/\n"
+"                ejb3-interceptors-aop.xml\n"
+"                embedded-jboss-beans.xml\n"
+"                default.persistence.properties\n"
+"                jndi.properties\n"
+"                login-config.xml\n"
+"                security-beans.xml\n"
+"                log4j.xml\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                    MANIFEST.MF\n"
+"                    persistence.xml\n"
+"                    jboss-beans.xml\n"
+"                log4j.xml\n"
+"                seam.properties\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            LoginBean.class\n"
+"                            Register.class\n"
+"                            RegisterBean.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:275
+#, no-c-format
+msgid ""
+"The <literal>mc-conf.jar</literal> just contains the standard JBoss "
+"Microcontainer configuration files for Embeddable EJB3. You won't usually "
+"need to edit these files yourself."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:278
+#, no-c-format
+msgid ""
+"Most of the Seam example applications may be deployed to Tomcat by running "
+"<literal>ant deploy.tomcat</literal>."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:281
+#, no-c-format
+msgid "Configuring Seam in J2EE"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:282
+#, no-c-format
+msgid ""
+"Seam is useful even if you're not yet ready to take the plunge into EJB 3.0. "
+"In this case you would use Hibernate3 or JPA instead of EJB 3.0 persistence, "
+"and plain JavaBeans instead of session beans. You'll miss out on some of the "
+"nice features of session beans but it will be very easy to migrate to EJB "
+"3.0 when you're ready and, in the meantime, you'll be able to take advantage "
+"of Seam's unique declarative state management architecture."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:293
+#, no-c-format
+msgid ""
+"Seam JavaBean components do not provide declarative transaction demarcation "
+"like session beans do. You <emphasis>could</emphasis> manage your "
+"transactions manually using the JTA <literal>UserTransaction</literal> (you "
+"could even implement your own declarative transaction management in a Seam "
+"interceptor). But most applications will use Seam managed transactions when "
+"using Hibernate with JavaBeans. Follow the instructions in the persistence "
+"chapter to install <literal>TransactionalSeamPhaseListener</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:296
+#, no-c-format
+msgid ""
+"The Seam distribution includes a version of the booking example application "
+"that uses Hibernate3 and JavaBeans instead of EJB3, and another version that "
+"uses JPA and JavaBeans. These example applications are ready to deploy into "
+"any J2EE application server."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:299
+#, no-c-format
+msgid ""
+"If we want to deploy Hibernate in a non-J2EE environment like Tomcat or "
+"TestNG, we need to do a little bit more work."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:302
+#, no-c-format
+msgid "Boostrapping Hibernate in Seam"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:303
+#, no-c-format
+msgid ""
+"Seam will bootstrap a Hibernate <literal>SessionFactory</literal> from your "
+"<literal>hibernate.cfg.xml</literal> file if you install a built-in "
+"component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:306
+#, no-c-format
+msgid ""
+"&lt;core:hibernate-session-factory name=\"hibernateSessionFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:307
+#, no-c-format
+msgid ""
+"You will also need to configure a <emphasis>managed session</emphasis> if "
+"you want a Seam managed Hibernate <literal>Session</literal> to be available "
+"via injection."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:310
+#, no-c-format
+msgid "Boostrapping JPA in Seam"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:311
+#, no-c-format
+msgid ""
+"Seam will bootstrap a JPA <literal>EntityManagerFactory</literal> from your "
+"<literal>persistence.xml</literal> file if you install this built-in "
+"component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:314
+#, no-c-format
+msgid "&lt;core:entity-manager-factory name=\"entityManagerFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:315
+#, no-c-format
+msgid ""
+"You will also need to configure a <emphasis>managed persistencece context</"
+"emphasis> if you want a Seam managed JPA <literal>EntityManager</literal> to "
+"be available via injection."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:319
+#, no-c-format
+msgid "We can package our application as a WAR, in the following structure:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:322
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            hibernate3.jar\n"
+"            hibernate-annotations.jar\n"
+"            ...\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                   MANIFEST.MF\n"
+"                seam.properties\n"
+"                hibernate.cfg.xml\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            Register.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:324
+#, no-c-format
+msgid "Configuring Seam in Java SE, with the JBoss Microcontainer"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:325
+#, no-c-format
+msgid ""
+"The Seam support for Hibernate and JPA requires JTA and a JCA datasource. If "
+"you are running in a non-EE environment like Tomcat or TestNG you can run "
+"these services, and Hibernate itself, in the JBoss Microcontainer."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:328
+#, no-c-format
+msgid ""
+"You can even deploy the Hibernate and JPA versions of the booking example in "
+"Tomcat."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:339
+#, no-c-format
+msgid ""
+"Seam ships with an example Microcontainer configuration in "
+"<literal>microcontainer/conf/jboss-beans.xml</literal> that provides all the "
+"things you need to run Seam with Hibernate in any non-EE environment. Just "
+"add the <literal>microcontainer/conf</literal> directory, and all jars in "
+"the <literal>lib</literal> and <literal>microcontainer/lib</literal> "
+"directories to your classpath. Refer to the documentation for the JBoss "
+"Microcontainer for more information."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:342
+#, no-c-format
+msgid "Using Hibernate and the JBoss Microcontainer"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:343
+#, no-c-format
+msgid ""
+"The built-in Seam component named <literal>org.jboss.seam.core."
+"microcontainer</literal> bootstraps the microcontainer. As before, we "
+"probably want to use a Seam managed session."
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:346
+#, no-c-format
+msgid ""
+"&lt;core:microcontainer/&gt;\n"
+"\n"
+"&lt;core:managed-hibernate-session name=\"bookingDatabase\" auto-create="
+"\"true\"\n"
+"    session-factory-jndi-name=\"java:/bookingSessionFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:347
+#, no-c-format
+msgid ""
+"Where <literal>java:/bookingSessionFactory</literal> is the name of the "
+"Hibernate session factory specified in <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:350
+#, no-c-format
+msgid ""
+"You'll need to provide a <literal>jboss.beans.xml</literal> file that "
+"installs JNDI, JTA, your JCA datasource and Hibernate into the "
+"microcontainer:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:353
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"\n"
+"&lt;deployment xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"urn:jboss:bean-deployer bean-deployer_1_0."
+"xsd\"\n"
+"            xmlns=\"urn:jboss:bean-deployer\"&gt;\n"
+"\n"
+"   &lt;bean name=\"Naming\" class=\"org.jnp.server.SingletonNamingServer\"/"
+"&gt;\n"
+"\n"
+"   &lt;bean name=\"TransactionManagerFactory\"\n"
+"       class=\"org.jboss.seam.microcontainer.TransactionManagerFactory\"/"
+"&gt;\n"
+"   &lt;bean name=\"TransactionManager\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getTransactionManager\"&gt;\n"
+"         &lt;factory bean=\"TransactionManagerFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasourceFactory\" class=\"org.jboss.seam."
+"microcontainer.DataSourceFactory\"&gt;\n"
+"      &lt;property name=\"driverClass\"&gt;org.hsqldb.jdbcDriver&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"connectionUrl\"&gt;jdbc:hsqldb:.&lt;/property&gt;\n"
+"      &lt;property name=\"userName\"&gt;sa&lt;/property&gt;\n"
+"      &lt;property name=\"jndiName\"&gt;java:/hibernateDatasource&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"minSize\"&gt;0&lt;/property&gt;\n"
+"      &lt;property name=\"maxSize\"&gt;10&lt;/property&gt;\n"
+"      &lt;property name=\"blockingTimeout\"&gt;1000&lt;/property&gt;\n"
+"      &lt;property name=\"idleTimeout\"&gt;100000&lt;/property&gt;\n"
+"      &lt;property name=\"transactionManager\"&gt;&lt;inject bean="
+"\"TransactionManager\"/&gt;&lt;/property&gt;\n"
+"   &lt;/bean&gt;\n"
+"   &lt;bean name=\"bookingDatasource\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getDataSource\"&gt;\n"
+"         &lt;factory bean=\"bookingDatasourceFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingSessionFactoryFactory\"\n"
+"       class=\"org.jboss.seam.microcontainer.HibernateFactory\"/&gt;\n"
+"   &lt;bean name=\"bookingSessionFactory\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getSessionFactory\"&gt;\n"
+"         &lt;factory bean=\"bookingSessionFactoryFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"      &lt;depends&gt;bookingDatasource&lt;/depends&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"&lt;/deployment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:355
+#, no-c-format
+msgid "The WAR could have the following structure:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:358
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            hibernate3.jar\n"
+"            ...\n"
+"            jboss-microcontainer.jar\n"
+"            jboss-jca.jar\n"
+"            ...\n"
+"            myfaces-api.jar\n"
+"            myfaces-impl.jar\n"
+"            mc-conf.jar/\n"
+"                jndi.properties\n"
+"                log4j.xml\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                    MANIFEST.MF\n"
+"                    jboss-beans.xml\n"
+"                seam.properties\n"
+"                hibernate.cfg.xml\n"
+"                log4j.xml\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            Register.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:359
+#, no-c-format
+msgid "Configuring jBPM in Seam"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:360
+#, no-c-format
+msgid ""
+"Seam's jBPM integration is not installed by default, so you'll need to "
+"enable jBPM by installing a built-in component. You'll also need to "
+"explicitly list your process and pageflow definitions. In "
+"<literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:363
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:pageflow-definitions&gt;\n"
+"        &lt;value&gt;createDocument.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;editDocument.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;approveDocument.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:pageflow-definitions&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;documentLifecycle.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:364
+#, no-c-format
+msgid ""
+"No further special configuration is needed if you only have pageflows. If "
+"you do have business process definitions, you need to provide a jBPM "
+"configuration, and a Hibernate configuration for jBPM. The Seam DVD Store "
+"demo includes example <literal>jbpm.cfg.xml</literal> and <literal>hibernate."
+"cfg.xml</literal> files that will work with Seam:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:367
+#, no-c-format
+msgid ""
+"&lt;jbpm-configuration&gt;\n"
+"\n"
+"  &lt;jbpm-context&gt;\n"
+"    &lt;service name=\"persistence\"&gt;\n"
+"       &lt;factory&gt;\n"
+"          &lt;bean class=\"org.jbpm.persistence.db."
+"DbPersistenceServiceFactory\"&gt;\n"
+"             &lt;field name=\"isTransactionEnabled\"&gt;&lt;false/&gt;&lt;/"
+"field&gt;\n"
+"          &lt;/bean&gt;\n"
+"       &lt;/factory&gt;\n"
+"    &lt;/service&gt;\n"
+"    &lt;service name=\"message\" factory=\"org.jbpm.msg.db."
+"DbMessageServiceFactory\" /&gt;\n"
+"    &lt;service name=\"scheduler\" factory=\"org.jbpm.scheduler.db."
+"DbSchedulerServiceFactory\" /&gt;\n"
+"    &lt;service name=\"logging\" factory=\"org.jbpm.logging.db."
+"DbLoggingServiceFactory\" /&gt;\n"
+"    &lt;service name=\"authentication\" \n"
+"        factory=\"org.jbpm.security.authentication."
+"DefaultAuthenticationServiceFactory\" /&gt;\n"
+"  &lt;/jbpm-context&gt;\n"
+"\n"
+"&lt;/jbpm-configuration&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:368
+#, no-c-format
+msgid ""
+"The most important thing to notice here is that jBPM transaction control is "
+"disabled. Seam or EJB3 should control the JTA transactions."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:372
+#, no-c-format
+msgid ""
+"There is not yet any well-defined packaging format for jBPM configuration "
+"and process/pageflow definition files. In the Seam examples we've decided to "
+"simply package all these files into the root of the EAR. In future, we will "
+"probably design some other standard packaging format. So the EAR looks "
+"something like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:375
+#, no-c-format
+msgid ""
+"my-application.ear/\n"
+"    jboss-seam.jar\n"
+"    el-api.jar\n"
+"    el-ri.jar\n"
+"    jbpm-3.1.jar\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"        application.xml\n"
+"    my-application.war/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"        WEB-INF/\n"
+"            web.xml\n"
+"            components.xml\n"
+"            faces-config.xml\n"
+"            lib/\n"
+"                jsf-facelets.jar\n"
+"                jboss-seam-ui.jar\n"
+"        login.jsp\n"
+"        register.jsp\n"
+"        ...\n"
+"    my-application.jar/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"            persistence.xml\n"
+"        seam.properties\n"
+"        org/\n"
+"            jboss/\n"
+"                myapplication/\n"
+"                    User.class\n"
+"                    Login.class\n"
+"                    LoginBean.class\n"
+"                    Register.class\n"
+"                    RegisterBean.class\n"
+"                    ...\n"
+"    jbpm.cfg.xml\n"
+"    hibernate.cfg.xml\n"
+"    createDocument.jpdl.xml\n"
+"    editDocument.jpdl.xml\n"
+"    approveDocument.jpdl.xml\n"
+"    documentLifecycle.jpdl.xml"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:376
+#, no-c-format
+msgid ""
+"Remember to add <literal>jbpm-3.1.jar</literal> to the manifest of your EJB-"
+"JAR and WAR."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:379
+#, no-c-format
+msgid "Configuring Seam in a Portal"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:380
+#, no-c-format
+msgid ""
+"To run a Seam application as a portlet, you'll need to provide certain "
+"portlet metadata (<literal>portlet.xml</literal>, etc) in addition to the "
+"usual Java EE metadata. See the <literal>examples/portal</literal> directory "
+"for an example of the booking demo preconfigured to run on JBoss Portal."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:383
+#, no-c-format
+msgid ""
+"In addition, you'll need to use a portlet-specific phase listener instead of "
+"<literal>SeamPhaseListener</literal> or "
+"<literal>TransactionalSeamPhaseListener</literal>. The "
+"<literal>SeamPortletPhaseListener</literal> and "
+"<literal>TransactionalSeamPortletPhaseListener</literal> are adapted to the "
+"portlet lifecycle. I would like to offer my sincerest apologies for the name "
+"of that last class. I really couldn't think of anything better. Sorry."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Controls.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Controls.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Controls.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,591 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Controls.xml:10
+#, no-c-format
+msgid "Seam JSF controls"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:11
+#, no-c-format
+msgid ""
+"Seam includes a number of JSF controls that are useful for working with "
+"Seam. These are intended to complement the built-in JSF controls, and "
+"controls from other third-party libraries. We recommend the Ajax4JSF and ADF "
+"faces (now Trinidad) tag libraries for use with Seam. We do not recommend "
+"the use of the Tomahawk tag library."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:14
+#, no-c-format
+msgid "The ui example demonstrates the use of a number of these tags."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:19
+#, no-c-format
+msgid "&lt;s:validate&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:21
+#, no-c-format
+msgid ""
+"Validate a JSF input field against the bound property using Hibernate "
+"Validator."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:27
+#, no-c-format
+msgid "&lt;s:validateAll&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:29
+#, no-c-format
+msgid ""
+"Validate all child JSF input fields against the bound propertys using "
+"Hibernate Validator."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:35
+#, no-c-format
+msgid "&lt;s:formattedText&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:37
+#, no-c-format
+msgid "Output <emphasis>Seam Text</emphasis>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:43
+#, no-c-format
+msgid "&lt;s:convertDateTime&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:45
+#, no-c-format
+msgid "Perform date or time conversions in the Seam timezone."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:51
+#, no-c-format
+msgid "&lt;s:convertEnum&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:53
+#, no-c-format
+msgid ""
+"Assigns an enum converter to the current component. This is primarily useful "
+"for radio button and dropdown controls."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:59
+#, no-c-format
+msgid "&lt;s:enumItem&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:61
+#, no-c-format
+msgid "Creates a <literal>SelectItem</literal> from an enum value."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:66
+#, no-c-format
+msgid ""
+"<literal>enumValue</literal> &mdash; the string representation of the enum "
+"value."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:71
+#, no-c-format
+msgid ""
+"<literal>label</literal> &mdash; the label to be used when rendering the "
+"<literal>SelectItem</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:79
+#, no-c-format
+msgid "&lt;s:selectItems&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:81
+#, no-c-format
+msgid ""
+"Creates a <literal>List&lt;SelectItem&gt;</literal> from a List, Set, "
+"DataModel or Array."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:86
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; an EL expression specifying the data that "
+"backs the <literal>List&lt;SelectItem&gt;</literal>"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:91
+#, no-c-format
+msgid ""
+"<literal>var</literal> &mdash; defines the name of the local variable that "
+"holds the current object during iteration"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:96
+#, no-c-format
+msgid ""
+"<literal>label</literal> &mdash; the label to be used when rendering the "
+"<literal>SelectItem</literal>. Can reference the <literal>var</literal> "
+"variable"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:101
+#, no-c-format
+msgid ""
+"<literal>disabled</literal> &mdash; if true the <literal>SelectItem</"
+"literal> will be rendered disabled. Can reference the <literal>var</literal> "
+"variable"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:106
+#, no-c-format
+msgid ""
+"<literal>noSelectionLabel</literal> &mdash; specifies the (optional) label "
+"to place at the top of list (if <literal>required=\"true\"</literal> is also "
+"specified then selecting this value will cause a validation error)"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:111
+#, no-c-format
+msgid ""
+"<literal>hideNoSelectionLabel</literal> &mdash; if true, the "
+"<literal>noSelectionLabel</literal> will be hidden when a value is selected"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:119
+#, no-c-format
+msgid "&lt;s:decorate&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:121
+#, no-c-format
+msgid "\"Decorate\" a JSF input field when validation fails."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:127
+#, no-c-format
+msgid "&lt;s:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:129
+#, no-c-format
+msgid "\"Decorate\" a JSF input field with the validation error message."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:135
+#, no-c-format
+msgid "&lt;s:span&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:137
+#, no-c-format
+msgid "Render a HTML <literal>&lt;span&gt;</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:143
+#, no-c-format
+msgid "&lt;s:div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:145
+#, no-c-format
+msgid "Render a HTML <literal>&lt;div&gt;</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:151
+#, no-c-format
+msgid "&lt;s:fragment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:153
+#, no-c-format
+msgid ""
+"A non-rendering component useful for enabling/disabling rendering of it's "
+"children"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:159
+#, no-c-format
+msgid "&lt;s:cache&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:161
+#, no-c-format
+msgid ""
+"Cache the rendered page fragment using JBoss Cache. Note that <literal>&lt;s:"
+"cache&gt;</literal> actually uses the instance of JBoss Cache managed by the "
+"built-in <literal>pojoCache</literal> component."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:166
+#, no-c-format
+msgid ""
+"<literal>key</literal> &mdash; the key to cache rendered content, often a "
+"value expression. For example, if we were caching a page fragment that "
+"displays a document, we might use <literal>key=\"Document-#{document.id}\"</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:171
+#, no-c-format
+msgid ""
+"<literal>enabled</literal> &mdash; a value expression that determines if the "
+"cache should be used."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:176
+#, no-c-format
+msgid ""
+"<literal>region</literal> &mdash; a JBoss Cache node to use (different nodes "
+"can have different expiry policies)."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:184
+#, no-c-format
+msgid "&lt;s:link&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:186
+#, no-c-format
+msgid ""
+"A link that supports invocation of an action with control over conversation "
+"propagation. <emphasis>Does not submit the form.</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:191 Controls.xml:236
+#, no-c-format
+msgid "<literal>value</literal> &mdash; the label."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:196 Controls.xml:241
+#, no-c-format
+msgid ""
+"<literal>action</literal> &mdash; a method binding that specified the action "
+"listener."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:201 Controls.xml:246
+#, no-c-format
+msgid "<literal>view</literal> &mdash; the JSF view id to link to."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:206 Controls.xml:251
+#, no-c-format
+msgid "<literal>fragment</literal> &mdash; the fragment identifier to link to."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:211 Controls.xml:256
+#, no-c-format
+msgid "<literal>disabled</literal> &mdash; is the link disabled?"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:216 Controls.xml:261 Controls.xml:301
+#, no-c-format
+msgid ""
+"<literal>propagation</literal> &mdash; determines the conversation "
+"propagation style: <literal>begin</literal>, <literal>join</literal>, "
+"<literal>nest</literal>, <literal>none</literal> or <literal>end</literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:221 Controls.xml:266 Controls.xml:306
+#, no-c-format
+msgid ""
+"<literal>pageflow</literal> &mdash; a pageflow definition to begin. (This is "
+"only useful when <literal>propagation=\"begin\"</literal> or "
+"<literal>propagation=\"join\"</literal>.)"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:229
+#, no-c-format
+msgid "&lt;s:button&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:231
+#, no-c-format
+msgid ""
+"A button that supports invocation of an action with control over "
+"conversation propagation. <emphasis>Does not submit the form.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:274
+#, no-c-format
+msgid "&lt;s:selectDate&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:276
+#, no-c-format
+msgid ""
+"Displays a dynamic date picker component that selects a date for the "
+"specified input field. The body of the <literal>selectDate</literal> element "
+"should contain HTML elements, such as text or an image, that prompt the user "
+"to click to display the date picker. The date picker can be styled using "
+"CSS. An example CSS file can be found in the Seam booking demo as "
+"<literal>date.css</literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:281
+#, no-c-format
+msgid ""
+"<literal>for</literal> &mdash; The id of the input field that the date "
+"picker will insert the selected date into."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:286
+#, no-c-format
+msgid ""
+"<literal>dateFormat</literal> &mdash; The date format string. This should "
+"match the date format of the input field."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:294
+#, no-c-format
+msgid "&lt;s:conversationPropagation&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:296
+#, no-c-format
+msgid ""
+"Customize the conversation propagation for a command link or button (or "
+"similar JSF control). <emphasis>Facelets only.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:314
+#, no-c-format
+msgid "&lt;s:conversationId&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:316
+#, no-c-format
+msgid ""
+"Add the conversation id to an output link (or similar JSF control). "
+"<emphasis>Facelets only.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:322
+#, no-c-format
+msgid "&lt;s:taskId&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:324
+#, no-c-format
+msgid ""
+"Add the task id to an output link (or similar JSF control), when the task is "
+"available via <literal>#{task}</literal>. <emphasis>Facelets only.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:330
+#, no-c-format
+msgid "&lt;s:fileUpload&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:332
+#, no-c-format
+msgid ""
+"Renders a file upload control. This control must be used within a form with "
+"an encoding type of <literal>multipart/form-data</literal>, i.e:"
+msgstr ""
+
+#. Tag: programlisting
+#: Controls.xml:335
+#, no-c-format
+msgid "&lt;h:form enctype=\"multipart/form-data\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:336
+#, no-c-format
+msgid ""
+"For multipart requests, the Seam Multipart servlet filter must also be "
+"configured in <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Controls.xml:339
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"      &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"      &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-"
+"class&gt;\n"
+"    &lt;/filter&gt;\n"
+"    \n"
+"    &lt;filter-mapping&gt;\n"
+"      &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"      &lt;url-pattern&gt;/*&lt;/url-pattern&gt;\n"
+"    &lt;/filter-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:340
+#, no-c-format
+msgid ""
+"The following configuration options for multipart requests may be configured "
+"in components.xml:"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:345
+#, no-c-format
+msgid ""
+"<literal>createTempFiles</literal> &mdash; if this option is set to true, "
+"uploaded files are streamed to a temporary file instead of in memory."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:350
+#, no-c-format
+msgid ""
+"<literal>maxRequestSize</literal> &mdash; the maximum size of a file upload "
+"request, in bytes."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:355
+#, no-c-format
+msgid "Here's an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Controls.xml:358
+#, no-c-format
+msgid ""
+"&lt;component class=\"org.jboss.seam.servlet.MultipartConfig\"&gt;\n"
+"        &lt;property name=\"createTempFiles\"&gt;true&lt;/property&gt;\n"
+"        &lt;property name=\"maxRequestSize\"&gt;1000000&lt;/property&gt;\n"
+"    &lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:359
+#, no-c-format
+msgid ""
+"And here's a list of the supported attributes for the <literal>fileUpload</"
+"literal> control:"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:364
+#, no-c-format
+msgid ""
+"<literal>data</literal> &mdash; this value binding receives the binary file "
+"data. The receiving field should be declared as a <literal>byte[]</literal> "
+"or <literal>InputStream</literal> (required)."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:369
+#, no-c-format
+msgid ""
+"<literal>contentType</literal> &mdash; this value binding receives the "
+"file's content type (optional)."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:374
+#, no-c-format
+msgid ""
+"<literal>fileName</literal> &mdash; this value binding receives the filename "
+"(optional)."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:379
+#, no-c-format
+msgid ""
+"<literal>accept</literal> &mdash; a comma-separated list of content types to "
+"accept, may not be supported by the browser. E.g. <literal>\"images/png,"
+"images/jpg\"</literal>, <literal>\"images/*\"</literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:384
+#, no-c-format
+msgid "<literal>style</literal> &mdash; The control's style"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:389
+#, no-c-format
+msgid "<literal>styleClass</literal> &mdash; The control's style class"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Conversations.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Conversations.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Conversations.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1248 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Conversations.xml:10
+#, no-c-format
+msgid "Conversations and workspace management"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:11
+#, no-c-format
+msgid "It's time to understand Seam's conversation model in more detail."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:14
+#, no-c-format
+msgid ""
+"Historically, the notion of a Seam \"conversation\" came about as a merger "
+"of three different ideas:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:19
+#, no-c-format
+msgid ""
+"The idea of a <emphasis>workspace</emphasis>, which I encountered in a "
+"project for the Victorian government in 2002. In this project I was forced "
+"to implement workspace management on top of Struts, an experience I pray "
+"never to repeat."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:24
+#, no-c-format
+msgid ""
+"The idea of an <emphasis>application transaction</emphasis> with optimistic "
+"semantics, and the realization that existing frameworks based around a "
+"stateless architecture could not provide effective management of extended "
+"persistence contexts. (The Hibernate team is truly fed up with copping the "
+"blame for <literal>LazyInitializationException</literal>s, which are not "
+"really Hibernate's fault, but rather the fault of the extremely limiting "
+"persistence context model supported by stateless architectures such as the "
+"Spring framework or the traditional <emphasis>stateless session facade</"
+"emphasis> (anti)pattern in J2EE.)"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:29
+#, no-c-format
+msgid "The idea of a workflow <emphasis>task</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:34
+#, no-c-format
+msgid ""
+"By unifying these ideas and providing deep support in the framework, we have "
+"a powerful construct that lets us build richer and more efficient "
+"applications with less code than before."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:38
+#, no-c-format
+msgid "Seam's conversation model"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:39
+#, no-c-format
+msgid ""
+"The examples we have seen so far make use of a very simple conversation "
+"model that follows these rules:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:44
+#, no-c-format
+msgid ""
+"There is always a conversation context active during the apply request "
+"values, process validations, update model values, invoke application and "
+"render response phases of the JSF request lifecycle."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:49
+#, no-c-format
+msgid ""
+"At the end of the restore view phase of the JSF request lifecycle, Seam "
+"attempts to restore any previous long-running conversation context. If none "
+"exists, Seam creates a new temporary conversation context."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:54
+#, no-c-format
+msgid ""
+"When an <literal>@Begin</literal> method is encountered, the temporary "
+"conversation context is promoted to a long running conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:59
+#, no-c-format
+msgid ""
+"When an <literal>@End</literal> method is encountered, any long-running "
+"conversation context is demoted to a temporary conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:64
+#, no-c-format
+msgid ""
+"At the end of the render response phase of the JSF request lifecycle, Seam "
+"stores the contents of a long running conversation context or destroys the "
+"contents of a temporary conversation context."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:69
+#, no-c-format
+msgid ""
+"Any faces request (a JSF postback) will propagate the conversation context. "
+"By default, non-faces requests (GET requests, for example) do not propagate "
+"the conversation context, but see below for more information on this."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:74
+#, no-c-format
+msgid ""
+"If the JSF request lifecycle is foreshortened by a redirect, Seam "
+"transparently stores and restores the current conversation context&mdash;"
+"unless the conversation was already ended via <literal>@End"
+"(beforeRedirect=true)</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:79
+#, no-c-format
+msgid ""
+"Seam transparently propagates the conversation context across JSF postbacks "
+"and redirects. If you don't do anything special, a <emphasis>non-faces "
+"request</emphasis> (a GET request for example) will not propagate the "
+"conversation context and will be processed in a new temporary conversation. "
+"This is usually - but not always - the desired behavior."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:82
+#, no-c-format
+msgid ""
+"If you want to propagate a Seam conversation across a non-faces request, you "
+"need to explicitly code the Seam <emphasis>conversation id</emphasis> as a "
+"request parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:85
+#, no-c-format
+msgid ""
+"&lt;a href=\"main.jsf?conversationId=#{conversation.id}\"&gt;Continue&lt;/"
+"a&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:86
+#, no-c-format
+msgid "Or, the more JSF-ish:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:89
+#, no-c-format
+msgid ""
+"&lt;h:outputLink value=\"main.jsf\"&gt;\n"
+"    &lt;f:param name=\"conversationId\" value=\"#{conversation.id}\"/&gt;\n"
+"    &lt;h:outputText value=\"Continue\"/&gt;\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:90 Conversations.xml:98
+#, no-c-format
+msgid "If you use the Seam tag library, this is equivalent:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:93
+#, no-c-format
+msgid ""
+"&lt;h:outputLink value=\"main.jsf\"&gt;\n"
+"    &lt;s:conversationId/&gt;\n"
+"    &lt;h:outputText value=\"Continue\"/&gt;\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:94
+#, no-c-format
+msgid ""
+"If you wish to disable propagation of the conversation context for a "
+"postback, a similar trick is used:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:97
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;f:param name=\"conversationPropagation\" value=\"none\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:101
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"none\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:102
+#, no-c-format
+msgid ""
+"Note that disabling conversation context propagation is absolutely not the "
+"same thing as ending the conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:105
+#, no-c-format
+msgid ""
+"The <literal>conversationPropagation</literal> request parameter, or the "
+"<literal>&lt;s:conversationPropagation&gt;</literal> tag may even be used to "
+"begin and end conversation, or begin a nested conversation."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:108
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"end\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:109
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Child\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"nested\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:110
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Hotel\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"begin\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:111
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Hotel\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"join\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:112
+#, no-c-format
+msgid ""
+"This conversation model makes it easy to build applications which behave "
+"correctly with respect to multi-window operation. For many applications, "
+"this is all that is needed. Some complex applications have either or both of "
+"the following additional requirements:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:117
+#, no-c-format
+msgid ""
+"A conversation spans many smaller units of user interaction, which execute "
+"serially or even concurrently. The smaller <emphasis>nested conversations</"
+"emphasis> have their own isolated set of conversation state, and also have "
+"access to the state of the outer conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:122
+#, no-c-format
+msgid ""
+"The user is able to switch between many conversations within the same "
+"browser window. This feature is called <emphasis>workspace management</"
+"emphasis>."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:130
+#, no-c-format
+msgid "Nested conversations"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:131
+#, no-c-format
+msgid ""
+"A nested conversation is created by invoking a method marked <literal>@Begin"
+"(nested=true)</literal> inside the scope of an existing conversation. A "
+"nested conversation has its own conversation context, and also has read-only "
+"access to the context of the outer conversation. (It can read the outer "
+"conversation's context variables, but not write to them.) When an "
+"<literal>@End</literal> is subsequently encountered, the nested conversation "
+"will be destroyed, and the outer conversation will resume, by \"popping\" "
+"the conversation stack. Conversations may be nested to any arbitrary depth."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:134
+#, no-c-format
+msgid ""
+"Certain user activity (workspace management, or the back button) can cause "
+"the outer conversation to be resumed before the inner conversation is ended. "
+"In this case it is possible to have multiple concurrent nested conversations "
+"belonging to the same outer conversation. If the outer conversation ends "
+"before a nested conversation ends, Seam destroys all nested conversation "
+"contexts along with the outer context."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:137
+#, no-c-format
+msgid ""
+"A conversation may be thought of as a <emphasis>continuable state</"
+"emphasis>. Nested conversations allow the application to capture a "
+"consistent continuable state at various points in a user interaction, thus "
+"insuring truly correct behavior in the face of backbuttoning and workspace "
+"management."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:140
+#, no-c-format
+msgid ""
+"TODO: an example to show how a nested conversation prevents bad stuff "
+"happening when you backbutton."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:143
+#, no-c-format
+msgid ""
+"Usually, if a component exists in a parent conversation of the current "
+"nested conversation, the nested conversation will use the same instance. "
+"Occasionally, it is useful to have a different instance in each nested "
+"conversation, so that the component instance that exists in the parent "
+"conversation is invisible to its child conversations. You can achieve this "
+"behavior by annotating the component <literal>@PerNestedConversation</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:149
+#, no-c-format
+msgid "Starting conversations with GET requests"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:150
+#, no-c-format
+msgid ""
+"JSF does not define any kind of action listener that is triggered when a "
+"page is accessed via a non-faces request (for example, a HTTP GET request). "
+"This can occur if the user bookmarks the page, or if we navigate to the page "
+"via an <literal>&lt;h:outputLink&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:153
+#, no-c-format
+msgid ""
+"Sometimes we want to begin a conversation immediately the page is accessed. "
+"Since there is no JSF action method, we can't solve the problem in the usual "
+"way, by annotating the action with <literal>@Begin</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:156
+#, no-c-format
+msgid ""
+"A further problem arises if the page needs some state to be fetched into a "
+"context variable. We've already seen two ways to solve this problem. If that "
+"state is held in a Seam component, we can fetch the state in a "
+"<literal>@Create</literal> method. If not, we can define a "
+"<literal>@Factory</literal> method for the context variable."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:159
+#, no-c-format
+msgid ""
+"If none of these options works for you, Seam lets you define a "
+"<emphasis>page action</emphasis> in the <literal>pages.xml</literal> file."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:162
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\" action=\"#{messageManager.list}\"/"
+"&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:163
+#, no-c-format
+msgid ""
+"This action method is called at the beginning of the render response phase, "
+"any time the page is about to be rendered. If a page action returns a non-"
+"null outcome, Seam will process any appropriate JSF and Seam navigation "
+"rules, possibly resulting in a completely different page being rendered."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:166
+#, no-c-format
+msgid ""
+"If <emphasis>all</emphasis> you want to do before rendering the page is "
+"begin a conversation, you could use a built-in action method that does just "
+"that:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:169
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\" action=\"#{conversation.begin}\"/"
+"&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:170
+#, no-c-format
+msgid ""
+"Note that you can also call this built-in action from a JSF control, and, "
+"similarly, you can use <literal>#{conversation.end}</literal> to end "
+"conversations."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:173
+#, no-c-format
+msgid ""
+"If you want more control, to join existing conversations or begin a nested "
+"conversion, to begin a pageflow or an atomic conversation, you should use "
+"the <literal>&lt;begin-conversation&gt;</literal> element."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:176
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\"&gt;\n"
+"       &lt;begin-conversation nested=\"true\" pageflow=\"AddItem\"/&gt;\n"
+"    &lt;page&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:177
+#, no-c-format
+msgid "There is also an <literal>&lt;end-conversation&gt;</literal> element."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:180
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/home.jsp\"&gt;\n"
+"       &lt;end-conversation/&gt;\n"
+"    &lt;page&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:181
+#, no-c-format
+msgid "To solve the first problem, we now have five options:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:186
+#, no-c-format
+msgid ""
+"Annotate the <literal>@Create</literal> method with <literal>@Begin</literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:191
+#, no-c-format
+msgid ""
+"Annotate the <literal>@Factory</literal> method with <literal>@Begin</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:196
+#, no-c-format
+msgid "Annotate the Seam page action method with <literal>@Begin</literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:201
+#, no-c-format
+msgid ""
+"Use <literal>&lt;begin-conversation&gt;</literal> in <literal>pages.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:206
+#, no-c-format
+msgid ""
+"Use <literal>#{conversation.begin}</literal> as the Seam page action method"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:214
+#, no-c-format
+msgid ""
+"Using <literal>&lt;s:link&gt;</literal> and <literal>&lt;s:button&gt;</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:215
+#, no-c-format
+msgid ""
+"JSF command links always perform a form submission via JavaScript, which "
+"breaks the web browser's \"open in new window\" or \"open in new tab\" "
+"feature. In plain JSF, you need to use an <literal>&lt;h:outputLink&gt;</"
+"literal> if you need this functionality. But there are two major limitations "
+"to <literal>&lt;h:outputLink&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:220
+#, no-c-format
+msgid ""
+"JSF provides no way to attach an action listener to an <literal>&lt;h:"
+"outputLink&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:225
+#, no-c-format
+msgid ""
+"JSF does not propagate the selected row of a <literal>DataModel</literal> "
+"since there is no actual form submission."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:230
+#, no-c-format
+msgid ""
+"Seam provides the notion of a <emphasis>page action</emphasis> to help solve "
+"the first problem, but this does nothing to help us with the second problem. "
+"We <emphasis>could</emphasis> work around this by using the RESTful approach "
+"of passing a request parameter and requerying for the selected object on the "
+"server side. In some cases&mdash;such as the Seam blog example "
+"application&mdash;this is indeed the best approach. The RESTful style "
+"supports bookmarking, since it does not require server-side state. In other "
+"cases, where we don't care about bookmarks, the use of <literal>@DataModel</"
+"literal> and <literal>@DataModelSelection</literal> is just so convenient "
+"and transparent!"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:233
+#, no-c-format
+msgid ""
+"To fill in this missing functionality, and to make conversation propagation "
+"even simpler to manage, Seam provides the <literal>&lt;s:link&gt;</literal> "
+"JSF tag."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:236
+#, no-c-format
+msgid "The link may specify just the JSF view id:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:239
+#, no-c-format
+msgid ""
+"&lt;s:link view=&#8220;/login.xhtml&#8221; value=&#8220;Login&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:240
+#, no-c-format
+msgid ""
+"Or, it may specify an action method (in which case the action outcome "
+"determines the page that results):"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:243
+#, no-c-format
+msgid ""
+"&lt;s:link action=&#8220;#{login.logout}&#8221; value=&#8220;Logout&#8221;/"
+"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:244
+#, no-c-format
+msgid ""
+"If you specify <emphasis>both</emphasis> a JSF view id and an action method, "
+"the 'view' will be used <emphasis>unless</emphasis> the action method "
+"returns a non-null outcome:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:247
+#, no-c-format
+msgid ""
+"&lt;s:link view=\"/loggedOut.xhtml\"  action=&#8220;#{login.logout}&#8221; "
+"value=&#8220;Logout&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:248
+#, no-c-format
+msgid ""
+"The link automatically propagates the selected row of a <literal>DataModel</"
+"literal> using inside <literal>&lt;h:dataTable&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:251
+#, no-c-format
+msgid ""
+"&lt;s:link view=&#8220;/hotel.xhtml&#8221; action=&#8220;#{hotelSearch."
+"selectHotel}&#8221; value=&#8220;#{hotel.name}&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:252
+#, no-c-format
+msgid "You can leave the scope of an existing conversation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:255
+#, no-c-format
+msgid ""
+"&lt;s:link view=&#8220;/main.xhtml&#8221; propagation=&#8220;none&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:256
+#, no-c-format
+msgid "You can begin, end, or nest conversations:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:259
+#, no-c-format
+msgid ""
+"&lt;s:link action=&#8220;#{issueEditor.viewComment}&#8221; "
+"propagation=&#8220;nest&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:260
+#, no-c-format
+msgid ""
+"If the link begins a conversation, you can even specify a pageflow to be "
+"used:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:263
+#, no-c-format
+msgid ""
+"&lt;s:link action=&#8220;#{documentEditor.getDocument}&#8221; "
+"propagation=&#8220;begin&#8221; \n"
+"        pageflow=&#8220;EditDocument&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:264
+#, no-c-format
+msgid ""
+"The <literal>taskInstance</literal> attribute if for use in jBPM task lists:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:267
+#, no-c-format
+msgid ""
+"&lt;s:link action=&#8220;#{documentApproval.approveOrReject}&#8221; "
+"taskInstance=&#8220;#{task}&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:268
+#, no-c-format
+msgid "(See the DVD Store demo application for examples of this.)"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:271
+#, no-c-format
+msgid ""
+"Finally, if you need the \"link\" to be rendered as a button, use "
+"<literal>&lt;s:button&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:274
+#, no-c-format
+msgid ""
+"&lt;s:button action=&#8220;#{login.logout}&#8221; value=&#8220;Logout&#8221;/"
+"&gt;"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:278
+#, no-c-format
+msgid "Success messages"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:279
+#, no-c-format
+msgid ""
+"It is quite common to display a message to the user indicating success or "
+"failure of an action. It is convenient to use a JSF <literal>FacesMessage</"
+"literal> for this. Unfortunately, a successful action often requires a "
+"browser redirect, and JSF does not propagate faces messages across "
+"redirects. This makes it quite difficult to display success messages in "
+"plain JSF."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:282
+#, no-c-format
+msgid ""
+"The built in conversation-scoped Seam component named "
+"<literal>facesMessages</literal> solves this problem. (You must have the "
+"Seam redirect filter installed.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:285
+#, no-c-format
+msgid ""
+"@Name(\"editDocumentAction\")\n"
+"@Stateless\n"
+"public class EditDocumentBean implements EditDocument {\n"
+"    @In EntityManager em;\n"
+"    @In Document document;\n"
+"    @In FacesMessages facesMessages;\n"
+"    \n"
+"    public String update() {\n"
+"        em.merge(document);\n"
+"        facesMessages.add(\"Document updated\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:286
+#, no-c-format
+msgid ""
+"Any message added to <literal>facesMessages</literal> is used in the very "
+"next render response phase for the current conversation. This even works "
+"when there is no long-running conversation since Seam preserves even "
+"temporary conversation contexts across redirects."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:289
+#, no-c-format
+msgid "You can even include JSF EL expressions in a faces message summary:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:292
+#, no-c-format
+msgid "facesMessages.add(\"Document #{document.title} was updated\");"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:293
+#, no-c-format
+msgid "You may display the messages in the usual way, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:296
+#, no-c-format
+msgid "&lt;h:messages globalOnly=\"true\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:300
+#, no-c-format
+msgid "Using an \"explicit\" conversation id"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:301
+#, no-c-format
+msgid ""
+"Ordinarily, Seam generates a meaningless unique id for each conversation in "
+"each session. You can customize the id value when you begin the conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:304
+#, no-c-format
+msgid ""
+"This feature can be used to customize the conversation id generation "
+"algorithm like so:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:307
+#, no-c-format
+msgid ""
+"@Begin(id=\"#{myConversationIdGenerator.nextId}\") \n"
+"public void editHotel() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:308
+#, no-c-format
+msgid "Or it can be used to assign a meaningful conversation id:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:311
+#, no-c-format
+msgid ""
+"@Begin(id=\"hotel#{hotel.id}\") \n"
+"public String editHotel() { ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:312
+#, no-c-format
+msgid ""
+"@Begin(id=\"hotel#{hotelsDataModel.rowData.id}\") \n"
+"public String selectHotel() { ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:313
+#, no-c-format
+msgid ""
+"@Begin(id=\"entry#{params['blogId']}\")\n"
+"public String viewBlogEntry() { ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:314
+#, no-c-format
+msgid ""
+"@BeginTask(id=\"task#{taskInstance.id}\") \n"
+"public String approveDocument() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:315
+#, no-c-format
+msgid ""
+"Clearly, these example result in the same conversation id every time a "
+"particular hotel, blog or task is selected. So what happens if a "
+"conversation with the same conversation id already exists when the new "
+"conversation begins? Well, Seam detects the existing conversation and "
+"redirects to that conversation without running the <literal>@Begin</literal> "
+"method again. This feature helps control the number of workspaces that are "
+"created when using workspace management."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:321
+#, no-c-format
+msgid "Workspace management"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:322
+#, no-c-format
+msgid ""
+"Workspace management is the ability to \"switch\" conversations in a single "
+"window. Seam makes workspace management completely transparent at the level "
+"of the Java code. To enable workspace management, all you need to do is:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:327
+#, no-c-format
+msgid ""
+"Provide <emphasis>description</emphasis> text for each view id (when using "
+"JSF or Seam navigation rules) or page node (when using jPDL pageflows). This "
+"description text is displayed to the user by the workspace switchers."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:332
+#, no-c-format
+msgid ""
+"Include one or more of the standard workspace switcher JSP or facelets "
+"fragments in your pages. The standard fragments support workspace management "
+"via a drop down menu, a list of conversations, or breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:335
+#, no-c-format
+msgid ""
+"Please refer to the Seam Issue Tracker demo to see all this functionality in "
+"action!"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:339
+#, no-c-format
+msgid "Workspace management and JSF navigation"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:340
+#, no-c-format
+msgid ""
+"When you use JSF or Seam navigation rules, Seam switches to a conversation "
+"by restoring the current <literal>view-id</literal> for that conversation. "
+"The descriptive text for the workspace is defined in a file called "
+"<literal>pages.xml</literal> that Seam expects to find in the <literal>WEB-"
+"INF</literal> directory, right next to <literal>faces-config.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:343
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/main.xhtml\"&gt;Search hotels: #{hotelBooking."
+"searchString}&lt;/page&gt;\n"
+"    &lt;page view-id=\"/hotel.xhtml\"&gt;View hotel: #{hotel.name}&lt;/"
+"page&gt;\n"
+"    &lt;page view-id=\"/book.xhtml\"&gt;Book hotel: #{hotel.name}&lt;/"
+"page&gt;\n"
+"    &lt;page view-id=\"/confirm.xhtml\"&gt;Confirm: #{booking.description}"
+"&lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:344
+#, no-c-format
+msgid ""
+"Note that if this file is missing, the Seam application will continue to "
+"work perfectly! The only missing functionality will be the ability to switch "
+"workspaces."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:350
+#, no-c-format
+msgid "Workspace management and jPDL pageflow"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:351
+#, no-c-format
+msgid ""
+"When you use a jPDL pageflow definition, Seam switches to a conversation by "
+"restoring the current jBPM process state. This is a more flexible model "
+"since it allows the same <literal>view-id</literal> to have different "
+"descriptions depending upon the current <literal>&lt;page&gt;</literal> "
+"node. The description text is defined by the <literal>&lt;page&gt;</literal> "
+"node:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:354
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"shopping\"&gt;\n"
+"\n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"browse\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;page name=\"browse\" view-id=\"/browse.xhtml\"&gt;\n"
+"      &lt;description&gt;DVD Search: #{search.searchPattern}&lt;/"
+"description&gt;\n"
+"      &lt;transition to=\"browse\"/&gt;\n"
+"      &lt;transition name=\"checkout\" to=\"checkout\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"checkout\" view-id=\"/checkout.xhtml\"&gt;\n"
+"      &lt;description&gt;Purchase: &#36;#{cart.total}&lt;/description&gt;\n"
+"      &lt;transition to=\"checkout\"/&gt;\n"
+"      &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"complete\" view-id=\"/complete.xhtml\"&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:358
+#, no-c-format
+msgid "The conversation switcher"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:359
+#, no-c-format
+msgid ""
+"Include the following fragment in your JSP or facelets page to get a drop-"
+"down menu that lets you switch to any current conversation, or to any other "
+"page of the application:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:362
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{switcher.conversationIdOrOutcome}\"&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Find Issues\" itemValue=\"findIssue\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Create Issue\" itemValue=\"editIssue\"/"
+"&gt;\n"
+"    &lt;f:selectItems value=\"#{switcher.selectItems}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{switcher.select}\" value=\"Switch\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:363
+#, no-c-format
+msgid ""
+"In this example, we have a menu that includes an item for each conversation, "
+"together with two additional items that let the user begin a new "
+"conversation."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:377
+#, no-c-format
+msgid "The conversation list"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:378
+#, no-c-format
+msgid ""
+"The conversation list is very similar to the conversation switcher, except "
+"that it is displayed as a table:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:381
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{conversationList}\" var=\"entry\"\n"
+"        rendered=\"#{not empty conversationList}\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Workspace&lt;/f:facet&gt;\n"
+"        &lt;h:commandLink action=\"#{entry.select}\" value=\"#{entry."
+"description}\"/&gt;\n"
+"        &lt;h:outputText value=\"[current]\" rendered=\"#{entry.current}\"/"
+"&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Activity&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{entry.startDatetime}\"&gt;\n"
+"            &lt;f:convertDateTime type=\"time\" pattern=\"hh:mm a\"/&gt;\n"
+"        &lt;/h:outputText&gt;\n"
+"        &lt;h:outputText value=\" - \"/&gt;\n"
+"        &lt;h:outputText value=\"#{entry.lastDatetime}\"&gt;\n"
+"            &lt;f:convertDateTime type=\"time\" pattern=\"hh:mm a\"/&gt;\n"
+"        &lt;/h:outputText&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"        &lt;h:commandButton action=\"#{entry.select}\" value=\"#{msg.Switch}"
+"\"/&gt;\n"
+"        &lt;h:commandButton action=\"#{entry.destroy}\" value=\"#{msg."
+"Destroy}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:382
+#, no-c-format
+msgid ""
+"We imagine that you will want to customize this for your own application."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:393
+#, no-c-format
+msgid ""
+"The conversation list is nice, but it takes up a lot of space on the page, "
+"so you probably don't want to put it on <emphasis>every</emphasis> page."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:396
+#, no-c-format
+msgid "Notice that the conversation list lets the user destroy workspaces."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:402
+#, no-c-format
+msgid "Breadcrumbs"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:403
+#, no-c-format
+msgid ""
+"Breadcrumbs are useful in applications which use a nested conversation "
+"model. The breadcrumbs are a list of links to conversations in the current "
+"conversation stack:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:406
+#, no-c-format
+msgid ""
+"&lt;t:dataList value=\"#{conversationStack}\" var=\"entry\"&gt;\n"
+"    &lt;h:outputText value=\" | \"/&gt; \n"
+"    &lt;h:commandLink value=\"#{entry.description}\" action=\"#{entry.select}"
+"\"/&gt;\n"
+"&lt;/t:dataList&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:407
+#, no-c-format
+msgid ""
+"Notice that here we are using the MyFaces <literal>&lt;t:dataList&gt;</"
+"literal> component, since JSF amazingly does not provide any standard "
+"component for looping."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:424
+#, no-c-format
+msgid "Conversational components and JSF component bindings"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:425
+#, no-c-format
+msgid ""
+"Conversational components have one minor limitation: they cannot be used to "
+"hold bindings to JSF components. (We generally prefer not to use this "
+"feature of JSF unless absolutely necessary, since it creates a hard "
+"dependency from application logic to the view.) On a postback request, "
+"component bindings are updated during the Restore View phase, before the "
+"Seam conversation context has been restored."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:428
+#, no-c-format
+msgid ""
+"To work around this use an event scoped component to store the component "
+"bindings and inject it into the conversation scoped component that requires "
+"it."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:431
+#, no-c-format
+msgid ""
+"@Name(\"grid\")\n"
+"@Scope(ScopeType.EVENT)\n"
+"public class Grid\n"
+"{\n"
+"    private HtmlPanelGrid htmlPanelGrid;\n"
+"\n"
+"    // getters and setters\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:432
+#, no-c-format
+msgid ""
+"@Name(\"gridEditor\")\n"
+"@Scope(ScopeType.CONVERSATION)\n"
+"public class GridEditor\n"
+"{\n"
+"    @In(required=false)\n"
+"    private Grid grid;\n"
+"    \n"
+"    ...\n"
+"}"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Drools.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Drools.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Drools.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,281 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Drools.xml:10
+#, no-c-format
+msgid "Seam and JBoss Rules"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:11
+#, no-c-format
+msgid ""
+"Seam makes it easy to call JBoss Rules (Drools) rulebases from Seam "
+"components or jBPM process definitions."
+msgstr ""
+
+#. Tag: title
+#: Drools.xml:15
+#, no-c-format
+msgid "Installing rules"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:16
+#, no-c-format
+msgid ""
+"The first step is to make an instance of <literal>org.drools.RuleBase</"
+"literal> available in a Seam context variable. In most rules-driven "
+"applications, rules need to be dynamically deployable, so you will need to "
+"implement some solution that allows you to deploy rules and make them "
+"available to Seam (a future release of Drools will provide a Rule Server "
+"that solves this problem). For testing purposes, Seam provides a built-in "
+"component that compiles a static set of rules from the classpath. You can "
+"install this component via <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:19
+#, no-c-format
+msgid ""
+"&lt;drools:rule-base name=\"policyPricingRules\"&gt;\n"
+"    &lt;drools:rule-files&gt;\n"
+"        &lt;value&gt;policyPricingRules&lt;/value&gt;\n"
+"    &lt;/drools:rule-files&gt;\n"
+"&lt;/drools:rule-base&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:20
+#, no-c-format
+msgid ""
+"This component compiles rules from a set of <literal>.drl</literal> files "
+"and caches an instance of <literal>org.drools.RuleBase</literal> in the Seam "
+"<literal>APPLICATION</literal> context. Note that it is quite likely that "
+"you will need to install multiple rule bases in a rule-driven application."
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:23
+#, no-c-format
+msgid ""
+"If you want to use a Drools DSL, you alse need to specify the DSL definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:26
+#, no-c-format
+msgid ""
+"&lt;drools:rule-base name=\"policyPricingRules\" dsl-file=\"policyPricing.dsl"
+"\"&gt;\n"
+"    &lt;drools:rule-files&gt;\n"
+"        &lt;value&gt;policyPricingRules&lt;/value&gt;\n"
+"    &lt;/drools:rule-files&gt;\n"
+"&lt;/drools:rule-base&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:27
+#, no-c-format
+msgid ""
+"Next, we need to make an instance of <literal>org.drools.WorkingMemory</"
+"literal> available to each conversation. (Each <literal>WorkingMemory</"
+"literal> accumulates facts relating to the current conversation.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:30
+#, no-c-format
+msgid ""
+"&lt;drools:managed-working-memory name=\"policyPricingWorkingMemory\" auto-"
+"create=\"true\" rule-base=\"#{policyPricingRules}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:31
+#, no-c-format
+msgid ""
+"Notice that we gave the <literal>policyPricingWorkingMemory</literal> a "
+"reference back to our rule base via the <literal>ruleBase</literal> "
+"configuration property."
+msgstr ""
+
+#. Tag: title
+#: Drools.xml:37
+#, no-c-format
+msgid "Using rules from a Seam component"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:38
+#, no-c-format
+msgid ""
+"We can now inject our <literal>WorkingMemory</literal> into any Seam "
+"component, assert facts, and fire rules:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:41
+#, no-c-format
+msgid ""
+"@In WorkingMemory policyPricingWorkingMemory;\n"
+"\n"
+"@In Policy policy;\n"
+"@In Customer customer;\n"
+"\n"
+"public void pricePolicy() throws FactException\n"
+"{\n"
+"    policyPricingWorkingMemory.assertObject(policy);\n"
+"    policyPricingWorkingMemory.assertObject(customer);\n"
+"    policyPricingWorkingMemory.fireAllRules();\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Drools.xml:45
+#, no-c-format
+msgid "Using rules from a jBPM process definition"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:46
+#, no-c-format
+msgid ""
+"You can even allow a rule base to act as a jBPM action handler, decision "
+"handler, or assignment handler&mdash;in either a pageflow or business "
+"process definition."
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:49
+#, no-c-format
+msgid ""
+"&lt;decision name=\"approval\"&gt;\n"
+"         \n"
+"    &lt;handler class=\"org.jboss.seam.drools.DroolsDecisionHandler\"&gt;\n"
+"        &lt;workingMemoryName&gt;orderApprovalRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"        &lt;assertObjects&gt;\n"
+"            &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"            &lt;element&gt;#{order}&lt;/element&gt;\n"
+"            &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"        &lt;/assertObjects&gt;\n"
+"    &lt;/handler&gt;\n"
+"    \n"
+"    &lt;transition name=\"approved\" to=\"ship\"&gt;\n"
+"        &lt;action class=\"org.jboss.seam.drools.DroolsActionHandler\"&gt;\n"
+"            &lt;workingMemoryName&gt;shippingRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"            &lt;assertObjects&gt;\n"
+"                &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"            &lt;/assertObjects&gt;\n"
+"        &lt;/action&gt;\n"
+"    &lt;/transition&gt;\n"
+"    \n"
+"    &lt;transition name=\"rejected\" to=\"cancelled\"/&gt;\n"
+"    \n"
+"&lt;/decision&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:50
+#, no-c-format
+msgid ""
+"The <literal>&lt;assertObjects&gt;</literal> element specifies EL "
+"expressions that return an object or collection of objects to be asserted as "
+"facts into the <literal>WorkingMemory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:53
+#, no-c-format
+msgid "There is also support for using Drools for jBPM task assignments:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:56
+#, no-c-format
+msgid ""
+"&lt;task-node name=\"review\"&gt;\n"
+"    &lt;task name=\"review\" description=\"Review Order\"&gt;\n"
+"        &lt;assignment handler=\"org.jboss.seam.drools."
+"DroolsAssignmentHandler\"&gt;\n"
+"            &lt;workingMemoryName&gt;orderApprovalRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"            &lt;assertObjects&gt;\n"
+"                &lt;element&gt;#{actor}&lt;/element&gt;\n"
+"                &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"            &lt;/assertObjects&gt;\n"
+"        &lt;/assignment&gt;\n"
+"    &lt;/task&gt;\n"
+"    &lt;transition name=\"rejected\" to=\"cancelled\"/&gt;\n"
+"    &lt;transition name=\"approved\" to=\"approved\"/&gt;\n"
+"&lt;/task-node&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:57
+#, no-c-format
+msgid ""
+"Certain objects are available to the rules as Drools globals, namely the "
+"jBPM <literal>Assignable</literal>, as <literal>assignable</literal> and a "
+"Seam <literal>Decision</literal> object, as <literal>decision</literal>. "
+"Rules which handle decisions should call <literal>decision.setOutcome"
+"(\"result\")</literal> to determine the result of the decision. Rules which "
+"perform assignments should set the actor id using the <literal>Assignable</"
+"literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:60
+#, no-c-format
+msgid ""
+"package org.jboss.seam.examples.shop\n"
+"\n"
+"import org.jboss.seam.drools.Decision\n"
+"\n"
+"global Decision decision\n"
+"\n"
+"rule \"Approve Order For Loyal Customer\"\n"
+"  when\n"
+"    Customer( loyaltyStatus == \"GOLD\" )\n"
+"    Order( totalAmount &lt;= 10000 )\n"
+"  then\n"
+"    decision.setOutcome(\"approved\");\n"
+"end"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:61
+#, no-c-format
+msgid ""
+"package org.jboss.seam.examples.shop\n"
+"\n"
+"import org.jbpm.taskmgmt.exe.Assignable\n"
+"\n"
+"global Assignable assignable\n"
+"\n"
+"rule \"Assign Review For Small Order\"\n"
+"  when\n"
+"    Order( totalAmount &lt;= 100 )\n"
+"  then\n"
+"    assignable.setPooledActors( new String[] {\"reviewers\"} );\n"
+"end"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Elenhancements.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Elenhancements.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Elenhancements.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,221 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Elenhancements.xml:10
+#, no-c-format
+msgid "Expression language enhancements"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:11
+#, no-c-format
+msgid ""
+"The standard Unified Expression Language (EL) assumes that any parameters to "
+"a method expression will be provided by Java code. This means that a method "
+"with parameters cannot be used as a JSF method binding. Seam provides an "
+"enhancement to the EL that allows parameters to be included in a method "
+"expression itself. This applies to <emphasis>any</emphasis> Seam method "
+"expression, including any JSF method binding, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:14
+#, no-c-format
+msgid ""
+"&lt;s:commandButton action=\"#{hotelBooking.bookHotel(hotel)}\" value=\"Book "
+"Hotel\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:16
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:17
+#, no-c-format
+msgid ""
+"To use this feature in Facelets, you will need to declare a special view "
+"handler, <literal>SeamFaceletViewHandler</literal> in <literal>faces-config."
+"xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:20
+#, no-c-format
+msgid ""
+"&lt;faces-config&gt;\n"
+"    &lt;application&gt;\n"
+"        &lt;view-handler&gt;org.jboss.seam.ui.facelet."
+"SeamFaceletViewHandler&lt;/view-handler&gt;\n"
+"    &lt;/application&gt;\n"
+"&lt;/faces-config&gt;"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:24
+#, no-c-format
+msgid "Usage"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:25
+#, no-c-format
+msgid "Parameters are surrounded by parentheses, and separated by commas:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:28
+#, no-c-format
+msgid ""
+"&lt;h:commandButton action=\"#{hotelBooking.bookHotel(hotel, user)}\" value="
+"\"Book Hotel\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:29
+#, no-c-format
+msgid ""
+"The parameters <literal>hotel</literal> and <literal>user</literal> will be "
+"evaluated as value expressions and passed to the <literal>bookHotel()</"
+"literal> method of the component. This gives you an alternative to the use "
+"of <literal>@In</literal>."
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:32
+#, no-c-format
+msgid "Any value expression may be used as a parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:35
+#, no-c-format
+msgid ""
+"&lt;h:commandButton action=\"#{hotelBooking.bookHotel(hotel.id, user."
+"username)}\" value=\"Book Hotel\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:36
+#, no-c-format
+msgid "You may even pass literal strings using single or double quotes:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:39
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=&#8221;#{printer.println( &#8216;Hello world!"
+"&#8217; )}&#8221; value=&#8221;Hello&#8221;/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:40
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=&#8217;#{printer.println( &#8220;Hello "
+"again&#8221; )}&#8217; value=&#8217;Hello&#8217;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:41
+#, no-c-format
+msgid ""
+"You might even want to use this notation for all your action methods, even "
+"when you don&#8217;t have parameters to pass. This improves readability by "
+"making it clear that the expression is a method expression and not a value "
+"expression:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:44
+#, no-c-format
+msgid "&lt;s:link value=\"Cancel\" action=\"#{hotelBooking.cancel()}\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:48
+#, no-c-format
+msgid "Limitations"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:49
+#, no-c-format
+msgid "Please be aware of the following limitations:"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:53
+#, no-c-format
+msgid "Incompatibility with JSP 2.1"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:54
+#, no-c-format
+msgid ""
+"This extension is not currently compatible with JSP 2.1. So if you want to "
+"use this extension with JSF 1.2, you will need to use Facelets. The "
+"extension works correctly with JSP 2.0."
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:60
+#, no-c-format
+msgid "Calling a <literal>MethodExpression</literal> from Java code"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:61
+#, no-c-format
+msgid ""
+"Normally, when a <literal>MethodExpression</literal> or "
+"<literal>MethodBinding</literal> is created, the parameter types are passed "
+"in by JSF. In the case of a method binding, JSF assumes that there are no "
+"parameters to pass. With this extension, we can&#8217;t know the parameter "
+"types until after the expression has been evaluated. This has two minor "
+"consequences:"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:66
+#, no-c-format
+msgid ""
+"When you invoke a <literal>MethodExpression</literal> in Java code, "
+"parameters you pass may be ignored. Parameters defined in the expression "
+"will take precedence."
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:71
+#, no-c-format
+msgid ""
+"Ordinarily, it is safe to call <literal>methodExpression.getMethodInfo()."
+"getParamTypes()</literal> at any time. For an expression with parameters, "
+"you must first invoke the <literal>MethodExpression</literal> before calling "
+"<literal>getParamTypes()</literal>."
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:76
+#, no-c-format
+msgid ""
+"Both of these cases are exceedingly rare and only apply when you want to "
+"invoke the <literal>MethodExpression</literal> by hand in Java code."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Events.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Events.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Events.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1430 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Events.xml:10
+#, no-c-format
+msgid "Events, interceptors and exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:11
+#, no-c-format
+msgid ""
+"Complementing the contextual component model, there are two further basic "
+"concepts that facilitate the extreme loose-coupling that is the distinctive "
+"feature of Seam applications. The first is a strong event model where events "
+"may be mapped to event listeners via JSF-like method binding expressions. "
+"The second is the pervasive use of annotations and interceptors to apply "
+"cross-cutting concerns to components which implement business logic."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:14
+#, no-c-format
+msgid "Seam events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:15
+#, no-c-format
+msgid ""
+"The Seam component model was developed for use with <emphasis>event-driven "
+"applications</emphasis>, specifically to enable the development of fine-"
+"grained, loosely-coupled components in a fine-grained eventing model. Events "
+"in Seam come in several types, most of which we have already seen:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:20
+#, no-c-format
+msgid "JSF events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:25
+#, no-c-format
+msgid "jBPM transition events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:30
+#, no-c-format
+msgid "Seam page actions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:35
+#, no-c-format
+msgid "Seam component-driven events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:40
+#, no-c-format
+msgid "Seam contextual events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:45
+#, no-c-format
+msgid ""
+"All of these various kinds of events are mapped to Seam components via JSF "
+"EL method binding expressions. For a JSF event, this is defined in the JSF "
+"template:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:48
+#, no-c-format
+msgid ""
+"&lt;h:commandButton value=\"Click me!\" action=\"#{helloWorld.sayHello}\"/"
+"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:49
+#, no-c-format
+msgid ""
+"For a jBPM transition event, it is specified in the jBPM process definition "
+"or pageflow definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:52
+#, no-c-format
+msgid ""
+"&lt;start-page name=\"hello\" view-id=\"/hello.jsp\"&gt;\n"
+"    &lt;transition to=\"hello\"&gt;\n"
+"        &lt;action expression=\"#{helloWorld.sayHello}\"/&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/start-page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:53
+#, no-c-format
+msgid ""
+"You can find out more information about JSF events and jBPM events "
+"elsewhere. Lets concentrate for now upon the two additional kinds of events "
+"defined by Seam."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:56
+#, no-c-format
+msgid "Page actions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:57
+#, no-c-format
+msgid ""
+"A Seam page action is an event that occurs just before we render a page. We "
+"declare page actions in <literal>WEB-INF/pages.xml</literal>. We can define "
+"a page action for either a particular JSF view id:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:60
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\" action=\"#{helloWorld.sayHello}\"/&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:61
+#, no-c-format
+msgid ""
+"Or we can use a wildcard to specify an action that applies to all view ids "
+"that match the pattern:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:64
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello/*\" action=\"#{helloWorld.sayHello}\"/&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:65
+#, no-c-format
+msgid ""
+"If multiple wildcarded page actions match the current view-id, Seam will "
+"call all the actions, in order of least-specific to most-specific."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:68
+#, no-c-format
+msgid ""
+"The page action method can return a JSF outcome. If the outcome is non-null, "
+"Seam will delegate to the defined JSFadn Seam navigation rules and a "
+"different view may end up being rendered."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:71
+#, no-c-format
+msgid ""
+"Furthermore, the view id mentioned in the <literal>&lt;page&gt;</literal> "
+"element need not correspond to a real JSP or Facelets page! So, we can "
+"reproduce the functionality of a traditional action-oriented framework like "
+"Struts or WebWork using page actions. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:74
+#, no-c-format
+msgid "TODO: translate struts action into page action"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:75
+#, no-c-format
+msgid ""
+"This is quite useful if you want to do complex things in response to non-"
+"faces requests (for example, HTTP GET requests)."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:78
+#, no-c-format
+msgid "Page parameters"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:79
+#, no-c-format
+msgid ""
+"A JSF faces request (a form submission) encapsulates both an \"action\" (a "
+"method binding) and \"parameters\" (input value bindings). A page action "
+"might also needs parameters!"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:82
+#, no-c-format
+msgid ""
+"Since GET requests are bookmarkable, page parameters are passed as human-"
+"readable request parameters. (Unlike JSF form inputs, which are anything "
+"but!)"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:85
+#, no-c-format
+msgid ""
+"Seam lets us provide a value binding that maps a named request parameter to "
+"an attribute of a model object."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:88
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\" action=\"#{helloWorld.sayHello}\"&gt;\n"
+"        &lt;param name=\"firstName\" value=\"#{person.firstName}\"/&gt;\n"
+"        &lt;param name=\"lastName\" value=\"#{person.lastName}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:89
+#, no-c-format
+msgid ""
+"The <literal>&lt;param&gt;</literal> declaration is bidirectional, just like "
+"a value binding for a JSF input:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:94
+#, no-c-format
+msgid ""
+"When a non-faces (GET) request for the view id occurs, Seam sets the value "
+"of the named request parameter onto the model object, after performing "
+"appropriate type conversions."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:99
+#, no-c-format
+msgid ""
+"Any <literal>&lt;s:link&gt;</literal> or <literal>&lt;s:button&gt;</literal> "
+"transparently includes the request parameter. The value of the parameter is "
+"determined by evaluating the value binding during the render phase (when the "
+"<literal>&lt;s:link&gt;</literal> is rendered)."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:104
+#, no-c-format
+msgid ""
+"Any navigation rule with a <literal>&lt;redirect/&gt;</literal> to the view "
+"id transparently includes the request parameter. The value of the parameter "
+"is determined by evaluating the value binding at the end of the invoke "
+"application phase."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:109
+#, no-c-format
+msgid ""
+"The value is transparently propagated with any JSF form submission for the "
+"page with the given view id. (This means that view parameters behave like "
+"<literal>PAGE</literal>-scoped context variables for faces requests."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:114
+#, no-c-format
+msgid ""
+"The essential idea behind all this is that <emphasis>however</emphasis> we "
+"get from any other page to <literal>/hello.jsp</literal> (or from <literal>/"
+"hello.jsp</literal> back to <literal>/hello.jsp</literal>), the value of the "
+"model attribute referred to in the value binding is \"remembered\", without "
+"the need for a conversation (or other server-side state)."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:117
+#, no-c-format
+msgid ""
+"This all sounds pretty complex, and you're probably wondering if such an "
+"exotic construct is really worth the effort. Actually, the idea is very "
+"natural once you \"get it\". It is definitely worth taking the time to "
+"understand this stuff. Page parameters are the most elegant way to propagate "
+"state across a non-faces request. They are especially cool for problems like "
+"search screens with bookmarkable results pages, where we would like to be "
+"able to write our application code to handle both POST and GET requests with "
+"the same code. Page parameters eliminate repetitive listing of request "
+"parameters in the view definition and make redirects much easier to code."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:120
+#, no-c-format
+msgid ""
+"Note that you don't need an actual page action method binding to use a page "
+"parameter. The following is perfectly valid:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:123
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\"&gt;\n"
+"        &lt;param name=\"firstName\" value=\"#{person.firstName}\"/&gt;\n"
+"        &lt;param name=\"lastName\" value=\"#{person.lastName}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:124
+#, no-c-format
+msgid "You can even specify a JSF converter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:127
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/calculator.jsp\" action=\"#{calculator.calculate}"
+"\"&gt;\n"
+"        &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"        &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"        &lt;param name=\"op\" converterId=\"com.my.calculator."
+"OperatorConverter\" value=\"#{calculator.op}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:128
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/calculator.jsp\" action=\"#{calculator.calculate}"
+"\"&gt;\n"
+"        &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"        &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"        &lt;param name=\"op\" converter=\"#{operatorConverter}\" value=\"#"
+"{calculator.op}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:129
+#, no-c-format
+msgid "Navigation"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:130
+#, no-c-format
+msgid ""
+"You can use standard JSF navigation rules defined in <literal>faces-config."
+"xml</literal> in a Seam application. However, JSF navigation rules have a "
+"number of annoying limitations:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:135
+#, no-c-format
+msgid ""
+"It is not possible to specify request parameters to be used when redirecting."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:140
+#, no-c-format
+msgid "It is not possible to begin or end conversations from a rule."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:145
+#, no-c-format
+msgid ""
+"Rules work by evaluating the return value of the action method; it is not "
+"possible to evaluate an arbitrary EL expression."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:150
+#, no-c-format
+msgid ""
+"A further problem is that \"orchestration\" logic gets scattered between "
+"<literal>pages.xml</literal> and <literal>faces-config.xml</literal>. It's "
+"better to unify this logic into <literal>pages.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:153
+#, no-c-format
+msgid "This JSF navigation rule:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:156
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"    &lt;from-view-id&gt;/editDocument.xhtml&lt;/from-view-id&gt;\n"
+"    \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-action&gt;#{documentEditor.update}&lt;/from-action&gt;\n"
+"        &lt;from-outcome&gt;success&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/viewDocument.xhtml&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"    \n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:157
+#, no-c-format
+msgid "Can be rewritten as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:160
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if-outcome=\"success\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:161
+#, no-c-format
+msgid ""
+"But it would be even nicer if we didn't have to pollute our "
+"<literal>DocumentEditor</literal> component with string-valued return values "
+"(the JSF outcomes). So Seam lets us write:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:164
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\" \n"
+"                   evaluate=\"#{documentEditor.errors.size}\"&gt;\n"
+"        &lt;rule if-outcome=\"0\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:165
+#, no-c-format
+msgid "Or even:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:168
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:169
+#, no-c-format
+msgid ""
+"The first form evaluates a value binding to determine the outcome value to "
+"be used by the subsequent rules. The second approach ignores the outcome and "
+"evaluates a value binding for each possible rule."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:172
+#, no-c-format
+msgid ""
+"Of course, when an update succeeds, we probably want to end the current "
+"conversation. We can do that like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:175
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:176
+#, no-c-format
+msgid ""
+"But ending the conversation loses any state associated with the "
+"conversation, including the document we are currently interested in! One "
+"solution would be to use an immediate render instead of a redirect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:179
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:180
+#, no-c-format
+msgid ""
+"But the correct solution is to pass the document id as a request parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:183
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"&gt;\n"
+"                &lt;param name=\"documentId\" value=\"#{documentEditor."
+"documentId}\"/&gt;\n"
+"            &lt;/redirect&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:184
+#, no-c-format
+msgid ""
+"Null outcomes are a special case in JSF. The null outcome is interpreted to "
+"mean \"redisplay the page\". The following navigation rule matches any non-"
+"null outcome, but <emphasis>not</emphasis> the null outcome:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:187
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule&gt;\n"
+"            &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:188
+#, no-c-format
+msgid ""
+"If you want to perform navigation when a null outcome occurs, use the "
+"following form instead:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:191
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:192
+#, no-c-format
+msgid ""
+"Fine-grained files for definition of navigation, page actions and parameters"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:193
+#, no-c-format
+msgid ""
+"If you have a lot of different page actions and page parameters, or even "
+"just a lot of navigation rules, you will almost certainly want to split the "
+"declarations up over multiple files. You can define actions and parameters "
+"for a page with the view id <literal>/calc/calculator.jsp</literal> in a "
+"resource named <literal>calc/calculator.page.xml</literal>. The root element "
+"in this case is the <literal>&lt;page&gt;</literal> element, and the view id "
+"is implied:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:196
+#, no-c-format
+msgid ""
+"&lt;page action=\"#{calculator.calculate}\"&gt;\n"
+"    &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"    &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"    &lt;param name=\"op\" converter=\"#{operatorConverter}\" value=\"#"
+"{calculator.op}\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:197
+#, no-c-format
+msgid "Component-driven events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:198
+#, no-c-format
+msgid ""
+"Seam components can interact by simply calling each others methods. Stateful "
+"components may even implement the observer/observable pattern. But to enable "
+"components to interact in a more loosely-coupled fashion than is possible "
+"when the components call each others methods directly, Seam provides "
+"<emphasis>component-driven events</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:201
+#, no-c-format
+msgid ""
+"We specify event listeners (observers) in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:204
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;event type=\"hello\"&gt;\n"
+"        &lt;action expression=\"#{helloListener.sayHelloBack}\"/&gt;\n"
+"        &lt;action expression=\"#{logger.logHello}\"/&gt;\n"
+"    &lt;/event&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:205
+#, no-c-format
+msgid "Where the <emphasis>event type</emphasis> is just an arbitrary string."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:208
+#, no-c-format
+msgid ""
+"When an event occurs, the actions registered for that event will be called "
+"in the order they appear in <literal>components.xml</literal>. How does a "
+"component raise an event? Seam provides a built-in component for this."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:211
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World!\");\n"
+"        Events.instance().raiseEvent(\"hello\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:212
+#, no-c-format
+msgid "Or you can use an annotation."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:215
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    @RaiseEvent(\"hello\")\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World!\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:216
+#, no-c-format
+msgid ""
+"Notice that this event producer has no dependency upon event consumers. The "
+"event listener may now be implemented with absolutely no dependency upon the "
+"producer:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:219
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    public void sayHelloBack() {\n"
+"        FacesMessages.instance().add(\"Hello to you too!\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:220
+#, no-c-format
+msgid ""
+"The method binding defined in <literal>components.xml</literal> above takes "
+"care of mapping the event to the consumer. If you don't like futzing about "
+"in the <literal>components.xml</literal> file, you can use an annotation "
+"instead:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:223
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    @Observer(\"hello\")\n"
+"    public void sayHelloBack() {\n"
+"        FacesMessages.instance().add(\"Hello to you too!\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:224
+#, no-c-format
+msgid ""
+"You might wonder why I've not mentioned anything about event objects in this "
+"discussion. In Seam, there is no need for an event object to propagate state "
+"between event producer and listener. State is held in the Seam contexts, and "
+"is shared between components. However, if you really want to pass an event "
+"object, you can:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:227
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    private String name;\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World, my name is #0.\", "
+"name);\n"
+"        Events.instance().raiseEvent(\"hello\", name);\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:228
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    @Observer(\"hello\")\n"
+"    public void sayHelloBack(String name) {\n"
+"        FacesMessages.instance().add(\"Hello #0!\", name);\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:229
+#, no-c-format
+msgid "Contextual events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:230
+#, no-c-format
+msgid ""
+"Seam defines a number of built-in events that the application can use to "
+"perform special kinds of framework integration. The events are:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:235
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preSetVariable.&lt;name&gt;</literal> &mdash; called "
+"when the context variable &lt;name&gt; is set"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:240
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postSetVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is set"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:245
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preRemoveVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is unset"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:250
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postRemoveVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is unset"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:255
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preDestroyContext.&lt;SCOPE&gt;</literal> &mdash; "
+"called before the &lt;SCOPE&gt; context is destroyed"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:260
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postDestroyContext.&lt;SCOPE&gt;</literal> &mdash; "
+"called after the &lt;SCOPE&gt; context is destroyed"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:265
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beginConversation </literal>&mdash; called whenever "
+"a long-running conversation begins"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:270
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endConversation </literal>&mdash; called whenever a "
+"long-running conversation ends"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:275
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beginPageflow.&lt;name&gt; </literal>&mdash; called "
+"when the pageflow &lt;name&gt; begins"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:280
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endPageflow.&lt;name&gt; </literal>&mdash; called "
+"when the pageflow &lt;name&gt; ends"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:285
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.createProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; is created"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:290
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; ends"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:295
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.initProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; is associated with the conversation"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:300
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.initTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is associated with the conversation"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:305
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.startTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is started"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:310
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is ended"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:315
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postCreate.&lt;name&gt; </literal>&mdash; called "
+"when the component &lt;name&gt; is created"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:320
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preDestroy.&lt;name&gt; </literal>&mdash; called "
+"when the component &lt;name&gt; is destroyed"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:325
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beforePhase </literal>&mdash; called before the "
+"start of a JSF phase"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:330
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.afterPhase </literal>&mdash; called after the end of "
+"a JSF phase"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:335
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postAuthenticate.&lt;name&gt; </literal>&mdash; "
+"called after a user is authenticated"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:340
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preAuthenticate.&lt;name&gt; </literal>&mdash; "
+"called before attempting to authenticate a user"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:345
+#, no-c-format
+msgid ""
+"Seam components may observe any of these events in just the same way they "
+"observe any other component-driven events."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:348
+#, no-c-format
+msgid "Seam interceptors"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:349
+#, no-c-format
+msgid ""
+"EJB 3.0 introduced a standard interceptor model for session bean components. "
+"To add an interceptor to a bean, you need to write a class with a method "
+"annotated <literal>@AroundInvoke</literal> and annotate the bean with an "
+"<literal>@Interceptors</literal> annotation that specifies the name of the "
+"interceptor class. For example, the following interceptor checks that the "
+"user is logged in before allowing invoking an action listener method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:352
+#, no-c-format
+msgid ""
+"public class LoggedInInterceptor {\n"
+"\n"
+"   @AroundInvoke\n"
+"   public Object checkLoggedIn(InvocationContext invocation) throws "
+"Exception {\n"
+"   \n"
+"      boolean isLoggedIn = Contexts.getSessionContext().get(\"loggedIn\")!"
+"=null;\n"
+"      if (isLoggedIn) {\n"
+"         //the user is already logged in\n"
+"         return invocation.proceed();\n"
+"      }\n"
+"      else {\n"
+"         //the user is not logged in, fwd to login page\n"
+"         return \"login\";\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:353
+#, no-c-format
+msgid ""
+"To apply this interceptor to a session bean which acts as an action "
+"listener, we must annotate the session bean <literal>@Interceptors"
+"(LoggedInInterceptor.class)</literal>. This is a somewhat ugly annotation. "
+"Seam builds upon the interceptor framework in EJB3 by allowing you to use "
+"<literal>@Interceptors</literal> as a meta-annotation. In our example, we "
+"would create an <literal>@LoggedIn</literal> annotation, as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:356
+#, no-c-format
+msgid ""
+"@Target(TYPE)\n"
+"@Retention(RUNTIME)\n"
+"@Interceptors(LoggedInInterceptor.class)\n"
+"public @interface LoggedIn {}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:357
+#, no-c-format
+msgid ""
+"We can now simply annotate our action listener bean with <literal>@LoggedIn</"
+"literal> to apply the interceptor."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:360
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"changePasswordAction\")\n"
+"@LoggedIn\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class ChangePasswordAction implements ChangePassword { \n"
+"    \n"
+"    ...\n"
+"    \n"
+"    public String changePassword() { ... }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:361
+#, no-c-format
+msgid ""
+"If interceptor ordering is important (it usually is), you can add "
+"<literal>@Interceptor</literal> annotations to your interceptor classes to "
+"specify a partial order of interceptors."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:364
+#, no-c-format
+msgid ""
+"@Interceptor(around={BijectionInterceptor.class,\n"
+"                     ValidationInterceptor.class,\n"
+"                     ConversationInterceptor.class},\n"
+"             within=RemoveInterceptor.class)\n"
+"public class LoggedInInterceptor\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:365
+#, no-c-format
+msgid ""
+"You can even have a \"client-side\" interceptor, that runs around any of the "
+"built-in functionality of EJB3:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:368
+#, no-c-format
+msgid ""
+"@Interceptor(type=CLIENT)\n"
+"public class LoggedInInterceptor\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:369
+#, no-c-format
+msgid ""
+"EJB interceptors are stateful, with a lifecycle that is the same as the "
+"component they intercept. For interceptors which do not need to maintain "
+"state, Seam lets you get a performance optimization by specifying "
+"<literal>@Interceptor(stateless=true)</literal>."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:372
+#, no-c-format
+msgid ""
+"Much of the functionality of Seam is implemented as a set of built-in Seam "
+"interceptors, including the interceptors named in the previous example. You "
+"don't have to explicitly specify these interceptors by annotating your "
+"components; they exist for all interceptable Seam components."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:375
+#, no-c-format
+msgid ""
+"You can even use Seam interceptors with JavaBean components, not just EJB3 "
+"beans!"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:378
+#, no-c-format
+msgid ""
+"EJB defines interception not only for business methods (using "
+"<literal>@AroundInvoke</literal>), but also for the lifecycle methods "
+"<literal>@PostConstruct</literal>, <literal>@PreDestroy</literal>, "
+"<literal>@PrePassivate</literal> and <literal>@PostActive</literal>. Seam "
+"supports all these lifecycle methods on both component and interceptor not "
+"only for EJB3 beans, but also for JavaBean components (except "
+"<literal>@PreDestroy</literal> which is not meaningful for JavaBean "
+"components)."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:381
+#, no-c-format
+msgid "Managing exceptions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:382
+#, no-c-format
+msgid ""
+"JSF is surprisingly limited when it comes to exception handling. As a "
+"partial workaround for this problem, Seam lets you define how a particular "
+"class of exception is to be treated by annotating the exception class, or "
+"declaring the exception class in an XML file. This facility is meant to be "
+"combined with the EJB 3.0-standard <literal>@ApplicationException</literal> "
+"annotation which specifies whether the exception should cause a transaction "
+"rollback."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:385
+#, no-c-format
+msgid "Exceptions and transactions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:386
+#, no-c-format
+msgid ""
+"EJB specifies well-defined rules that let us control whether an exception "
+"immediately marks the current transaction for rollback when it is thrown by "
+"a business method of the bean: <emphasis>system exceptions</emphasis> always "
+"cause a transaction rollback, <emphasis>application exceptions</emphasis> do "
+"not cause a rollback by default, but they do if "
+"<literal>@ApplicationException(rollback=true)</literal> is specified. (An "
+"application exception is any checked exception, or any unchecked exception "
+"annotated <literal>@ApplicationException</literal>. A system exception is "
+"any unchecked exception without an <literal>@ApplicationException</literal> "
+"annotation.)"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:389
+#, no-c-format
+msgid ""
+"Note that there is a difference between marking a transaction for rollback, "
+"and actually rolling it back. The exception rules say that the transaction "
+"should be marked rollback only, but it may still be active after the "
+"exception is thrown."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:392
+#, no-c-format
+msgid ""
+"Seam applies the EJB 3.0 exception rollback rules also to Seam JavaBean "
+"components."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:395
+#, no-c-format
+msgid ""
+"But these rules only apply in the Seam component layer. What about an "
+"exception that is uncaught and propagates out of the Seam component layer, "
+"and out of the JSF layer? Well, it is always wrong to leave a dangling "
+"transaction open, so Seam rolls back any active transaction when an "
+"exception occurs and is uncaught in the Seam component layer."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:398
+#, no-c-format
+msgid "Enabling Seam exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:399
+#, no-c-format
+msgid ""
+"To enable Seam's exception handling, we need to make sure we have the master "
+"servlet filter declared in <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:402
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.servlet.SeamFilter&lt;/filter-"
+"class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:403
+#, no-c-format
+msgid "Using annotations for exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:404
+#, no-c-format
+msgid ""
+"The following exception results in a HTTP 404 error whenever it propagates "
+"out of the Seam component layer. It does not roll back the current "
+"transaction immediately when thrown, but the transaction will be rolled back "
+"if it the exception is not caught by another Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:407
+#, no-c-format
+msgid ""
+"@HttpError(errorCode=404)\n"
+"public class ApplicationException extends Exception { ... }"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:408
+#, no-c-format
+msgid ""
+"This exception results in a browser redirect whenever it propagates out of "
+"the Seam component layer. It also ends the current conversation. It causes "
+"an immediate rollback of the current transaction."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:411
+#, no-c-format
+msgid ""
+"@Redirect(viewId=\"/failure.xhtml\", end=true)\n"
+"@ApplicationException(rollback=true)\n"
+"public class UnrecoverableApplicationException extends RuntimeException "
+"{ ... }"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:412
+#, no-c-format
+msgid ""
+"Note that <literal>@Redirect</literal> does not work for exceptions which "
+"occur during the render phase of the JSF lifecycle."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:415
+#, no-c-format
+msgid ""
+"This exception results in a redirect, along with a message to the user, when "
+"it propagates out of the Seam component layer. It also immediately rolls "
+"back the current transaction."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:418
+#, no-c-format
+msgid ""
+"@Redirect(viewId=\"/error.xhtml\", message=\"Unexpected error\")\n"
+"public class SystemException extends RuntimeException { ... }"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:419
+#, no-c-format
+msgid "Using XML for exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:420
+#, no-c-format
+msgid ""
+"Since we can't add annotations to all the exception classes we are "
+"interested in, Seam also lets us specify this functionality in "
+"<literal>pages.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:423
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   \n"
+"   &lt;exception class=\"javax.persistence.EntityNotFoundException\"&gt;\n"
+"      &lt;http-error error-code=\"404\"/&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"   &lt;exception class=\"javax.persistence.PersistenceException\"&gt;\n"
+"      &lt;end-conversation/&gt;\n"
+"      &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"          &lt;message&gt;Database access failed&lt;/message&gt;\n"
+"      &lt;/redirect&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"   &lt;exception&gt;\n"
+"      &lt;end-conversation/&gt;\n"
+"      &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"          &lt;message&gt;Unexpected failure&lt;/message&gt;\n"
+"      &lt;/redirect&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:424
+#, no-c-format
+msgid ""
+"The last <literal>&lt;exception&gt;</literal> declaration does not specify a "
+"class, and is a catch-all for any exception for which handling is not "
+"otherwise specified via annotations or in <literal>pages.xml</literal>."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Framework.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Framework.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Framework.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,828 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Framework.xml:10
+#, no-c-format
+msgid "The Seam Application Framework"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:11
+#, no-c-format
+msgid ""
+"Seam makes it really easy to create applications by writing plain Java "
+"classes with annotations, which don't need to extend any special interfaces "
+"or superclasses. But we can simplify some common programming tasks even "
+"further, by providing a set of pre-built components which can be re-used "
+"either by configuration in <literal>components.xml</literal> (for very "
+"simple cases) or extension."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:14
+#, no-c-format
+msgid ""
+"The <emphasis>Seam Application Framework</emphasis> can reduce the amount of "
+"code you need to write when doing basic database access in a web "
+"application, using either Hibernate or JPA."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:17
+#, no-c-format
+msgid ""
+"We should emphasize that the framework is extremely simple, just a handful "
+"of simple classes that are easy to understand and extend. The \"magic\" is "
+"in Seam itself&mdash;the same magic you use when creating any Seam "
+"application even without using this framework."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:21
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:22
+#, no-c-format
+msgid ""
+"The components provided by the Seam application framework may be used in one "
+"of two different approaches. The first way is to install and configure an "
+"instance of the component in <literal>components.xml</literal>, just like we "
+"have done with other kinds of built-in Seam components. For example, the "
+"following fragment from <literal>components.xml</literal> installs a "
+"component which can perform basic CRUD operations for a <literal>Contact</"
+"literal> entity:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:25
+#, no-c-format
+msgid ""
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" \n"
+"                       entity-manager=\"#{personDatabase}\"&gt;\n"
+"    &lt;framework:id&gt;#{param.personId}&lt;/framework:id&gt;\n"
+"&lt;/framework:entity-home&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:26
+#, no-c-format
+msgid ""
+"If that looks a bit too much like \"programming in XML\" for your taste, you "
+"can use extension instead:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:29
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; implements "
+"LocalPersonHome {\n"
+"    @RequestParameter String personId;\n"
+"    @In EntityManager personDatabase;\n"
+"    \n"
+"    public Object getId() { return personId; }\n"
+"    public EntityManager getEntityManager() { return personDatabase; }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:30
+#, no-c-format
+msgid ""
+"The second approach has one huge advantage: you can easily add extra "
+"functionality, and override the built-in functionality (the framework "
+"classes were carefully designed for extension and customization)."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:33
+#, no-c-format
+msgid ""
+"A second advantage is that your classes may be EJB stateful sessin beans, if "
+"you like. (They do not have to be, they can be plain JavaBean components if "
+"you prefer.)"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:36
+#, no-c-format
+msgid ""
+"At this time, the Seam Application Framework provides just four built-in "
+"components: <literal>EntityHome</literal> and <literal>HibernateEntityHome</"
+"literal> for CRUD, along with <literal>EntityQuery</literal> and "
+"<literal>HibernateEntityQuery</literal> for queries."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:39
+#, no-c-format
+msgid ""
+"The Home and Query components are written so that they can function with a "
+"scope of session, event or conversation. Which scope you use depends upon "
+"the state model you wish to use in your application."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:42
+#, no-c-format
+msgid ""
+"The Seam Application Framework only works with Seam-managed persistence "
+"contexts. By default, the components will look for a persistence context "
+"named <literal>entityManager</literal>."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:48
+#, no-c-format
+msgid "Home objects"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:49
+#, no-c-format
+msgid ""
+"A Home object provides persistence operations for a particular entity class. "
+"Suppose we have our trusty <literal>Person</literal> class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:52
+#, no-c-format
+msgid ""
+"@Entity\n"
+"public class Person {\n"
+"    @Id private Long id;\n"
+"    private String firstName;\n"
+"    private String lastName;\n"
+"    private Country nationality;\n"
+"    \n"
+"    //getters and setters...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:53
+#, no-c-format
+msgid ""
+"We can define a <literal>personHome</literal> component either via "
+"configuration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:56
+#, no-c-format
+msgid ""
+"&lt;framework:entity-home name=\"personHome\" entity-class=\"eg.Person\" /"
+"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:57
+#, no-c-format
+msgid "Or via extension:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:60
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:61
+#, no-c-format
+msgid ""
+"A Home object provides the following operations: <literal>persist()</"
+"literal>, <literal>remove()</literal>, <literal>update()</literal> and "
+"<literal>getInstance()</literal>. Before you can call the <literal>remove()</"
+"literal>, or <literal>update()</literal> operations, you must first set the "
+"identifier of the object you are interested in, using the <literal>setId()</"
+"literal> method."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:64
+#, no-c-format
+msgid "We can use a Home directly from a JSF page, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:67
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Create Person&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{personHome.instance."
+"firstName}\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{personHome.instance."
+"lastName}\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:68
+#, no-c-format
+msgid ""
+"Usually, it is much nicer to be able to refer to the <literal>Person</"
+"literal> merely as <literal>person</literal>, so let's make that possible by "
+"adding a line to <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:71
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:72
+#, no-c-format
+msgid ""
+"(If we are using configuration.) Or by adding a <literal>@Factory</literal> "
+"method to <literal>PersonHome</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:75
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:76
+#, no-c-format
+msgid ""
+"(If we are using extension.) This change simplifies our JSF page to the "
+"following:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:79
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Create Person&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{person.firstName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{person.lastName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:80
+#, no-c-format
+msgid ""
+"Well, that lets us create new <literal>Person</literal> entries. Yes, that "
+"is all the code that is required! Now, if we want to be able to display, "
+"update and delete pre-existing <literal>Person</literal> entries in the "
+"database, we need to be able to pass the entry identifier to the "
+"<literal>PersonHome</literal>. Page parameters are a great way to do that:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:83
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page viewid=\"/editPerson.jsp\"&gt;\n"
+"        &lt;param name=\"personId\" value=\"#{personHome.id}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:84
+#, no-c-format
+msgid "Now we can add the extra operations to our JSF page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:87
+#, no-c-format
+msgid ""
+"&lt;h1&gt;\n"
+"    &lt;h:outputText rendered=\"#{!personHome.managed}\" value=\"Create "
+"Person\"/&gt;\n"
+"    &lt;h:outputText rendered=\"#{personHome.managed}\" value=\"Edit Person"
+"\"/&gt;\n"
+"&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{person.firstName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{person.lastName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\" \n"
+"            rendered=\"#{!personHome.managed}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Update Person\" action=\"#{personHome."
+"update}\" \n"
+"            rendered=\"#{personHome.managed}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Delete Person\" action=\"#{personHome."
+"remove}\" \n"
+"            rendered=\"#{personHome.managed}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:88
+#, no-c-format
+msgid ""
+"When we link to the page with no request parameters, the page will be "
+"displayed as a \"Create Person\" page. When we provide a value for the "
+"<literal>personId</literal> request parameter, it will be an \"Edit Person\" "
+"page."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:91
+#, no-c-format
+msgid ""
+"Suppose we need to create <literal>Person</literal> entries with their "
+"nationality initialized. We can do that easily, via configuration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:94
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" \n"
+"                       new-instance=\"#{newPerson}\"/&gt;\n"
+"\n"
+"&lt;component name=\"newPerson\" \n"
+"           class=\"eg.Person\"&gt;\n"
+"    &lt;property name=\"nationality\"&gt;#{country}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:95
+#, no-c-format
+msgid "Or by extension:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:98
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:99
+#, no-c-format
+msgid ""
+"Of course, the <literal>Country</literal> could be an object managed by "
+"another Home object, for example, <literal>CountryHome</literal>."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:102
+#, no-c-format
+msgid ""
+"To add more sophisticated operations (association management, etc), we can "
+"just add methods to <literal>PersonHome</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:105
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"    public void migrate()\n"
+"    {\n"
+"        getInstance().setCountry(country);\n"
+"        update();\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:106
+#, no-c-format
+msgid ""
+"The Home object automatically displays faces messages when an operation is "
+"successful. To customize these messages we can, again, use configuration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:109
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\"\n"
+"                       entity-class=\"eg.Person\"\n"
+"                       new-instance=\"#{newPerson}\"&gt;\n"
+"    &lt;framework:created-message&gt;New person #{person.firstName} #{person."
+"lastName} \n"
+"        created&lt;/framework:created-message&gt;\n"
+"    &lt;framework:deleted-message&gt;Person #{person.firstName} #{person."
+"lastName}\n"
+"        deleted&lt;/framework:deleted-message&gt;\n"
+"    &lt;framework:updated-message&gt;Person #{person.firstName} #{person."
+"lastName} \n"
+"        updated&lt;/framework:updated-message&gt;\n"
+"&lt;/framework:entity-home&gt;\n"
+"\n"
+"&lt;component name=\"newPerson\" \n"
+"           class=\"eg.Person\"&gt;\n"
+"    &lt;property name=\"nationality\"&gt;#{country}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:110
+#, no-c-format
+msgid "Or extension:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:113
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"    protected String getCreatedMessage() { return \"New person #{person."
+"firstName} \n"
+"        #{person.lastName} created\"; }\n"
+"    protected String getUpdatedMessage() { return \"Person #{person."
+"firstName} \n"
+"        #{person.lastName} updated\"; }\n"
+"    protected String getDeletedMessage() { return \"Person #{person."
+"firstName} \n"
+"        #{person.lastName} deleted\"; }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:114
+#, no-c-format
+msgid ""
+"But the best way to specify the messages is to put them in a resource bundle "
+"known to Seam (the bundle named <literal>messages</literal>, by default)."
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:117
+#, no-c-format
+msgid ""
+"Person_created=New person #{person.firstName} #{person.lastName} created\n"
+"Person_deleted=Person #{person.firstName} #{person.lastName} deleted\n"
+"Person_updated=Person #{person.firstName} #{person.lastName} updated"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:118
+#, no-c-format
+msgid ""
+"This enables internationalization, and keeps your code and configuration "
+"clean of presentation concerns."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:121
+#, no-c-format
+msgid ""
+"The final step is to add validation functionality to the page, using "
+"<literal>&lt;s:validateAll&gt;</literal> and <literal>&lt;s:decorate&gt;</"
+"literal>, but I'll leave that for you to figure out."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:127
+#, no-c-format
+msgid "Query objects"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:128
+#, no-c-format
+msgid ""
+"If we need a list of all <literal>Person</literal> instance in the database, "
+"we can use a Query object. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:131
+#, no-c-format
+msgid ""
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:132
+#, no-c-format
+msgid "We can use it from a JSF page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:135
+#, no-c-format
+msgid ""
+"&lt;h1&gt;List of people&lt;/h1&gt;\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view-id=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:136
+#, no-c-format
+msgid "We probably need to support pagination:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:139
+#, no-c-format
+msgid ""
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\" \n"
+"                        order=\"lastName\" \n"
+"                        max-results=\"20\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:140
+#, no-c-format
+msgid "We'll use a page parameter to determine the page to display:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:143
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page viewid=\"/searchPerson.jsp\"&gt;\n"
+"        &lt;param name=\"firstResult\" value=\"#{people.firstResult}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:144
+#, no-c-format
+msgid "The JSF code for a pagination control is a bit verbose, but manageable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:147
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Search for people&lt;/h1&gt;\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view-id=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.previousExists}\" "
+"value=\"First Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"0\"/&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.previousExists}\" "
+"value=\"Previous Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.previousFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.nextExists}\" value="
+"\"Next Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.nextFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.nextExists}\" value="
+"\"Last Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.lastFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:148
+#, no-c-format
+msgid ""
+"Real search screens let the user enter a bunch of optional search criteria "
+"to narrow the list of results returned. The Query object lets you specify "
+"optional \"restrictions\" to support this important usecase:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:151
+#, no-c-format
+msgid ""
+"&lt;component name=\"examplePerson\" class=\"Person\"/&gt;\n"
+"        \n"
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\" \n"
+"                        order=\"lastName\" \n"
+"                        max-results=\"20\"&gt;\n"
+"    &lt;framework:restrictions&gt;\n"
+"        &lt;value&gt;lower(firstName) like lower( #{examplePerson.firstName} "
+"+ '&#37;' )&lt;/value&gt;\n"
+"        &lt;value&gt;lower(lastName) like lower( #{examplePerson.lastName} + "
+"'&#37;' )&lt;/value&gt;\n"
+"    &lt;/framework:restrictions&gt;\n"
+"&lt;/framework:entity-query&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:152
+#, no-c-format
+msgid "Notice the use of an \"example\" object."
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:155
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Search for people&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{examplePerson.firstName}"
+"\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{examplePerson.lastName}"
+"\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;&lt;h:commandButton value=\"Search\" action=\"/search.jsp\"/"
+"&gt;&lt;/div&gt;\n"
+"&lt;/h:form&gt;\n"
+"\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view-id=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:156
+#, no-c-format
+msgid ""
+"The examples in this section have all shown reuse by configuration. However, "
+"reuse by extension is equally possible for Query objects."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:162
+#, no-c-format
+msgid "Controller objects"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:163
+#, no-c-format
+msgid ""
+"A totally optional part of the Seam Application Framework is the class "
+"<literal>Controller</literal> and its subclasses <literal>EntityController</"
+"literal><literal>HibernateEntityController</literal> and "
+"<literal>BusinessProcessController</literal>. These classes provide nothing "
+"more than some convenience methods for access to commonly used built-in "
+"components and methods of built-in components. They help save a few "
+"keystrokes (characters can add up!) and provide a great launchpad for new "
+"users to explore the rich functionality built in to Seam."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:166
+#, no-c-format
+msgid ""
+"For example, here is what <literal>RegisterAction</literal> from the Seam "
+"registration example would look like:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:169
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"register\")\n"
+"public class RegisterAction extends EntityController implements Register\n"
+"{\n"
+"\n"
+"   @In private User user;\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = createQuery(\"select u.username from User u where u."
+"username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getResultList();\n"
+"      \n"
+"      if ( existing.size()==0 )\n"
+"      {\n"
+"         persist(user);\n"
+"         info(\"Registered new user #{user.username}\");\n"
+"         return \"/registered.jspx\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         addFacesMessage(\"User #{user.username} already exists\");\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:170
+#, no-c-format
+msgid "As you can see, its not an earthshattering improvement..."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Gettingstarted.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Gettingstarted.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Gettingstarted.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,588 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Gettingstarted.xml:10
+#, no-c-format
+msgid "Getting started with Seam, using seam-gen"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:11
+#, no-c-format
+msgid ""
+"The Seam distribution includes a command line utility that makes it really "
+"easy to set up an Eclipse project, generate some simple Seam skeleton code, "
+"and reverse engineer an application from a pre-existing database."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:14
+#, no-c-format
+msgid ""
+"This is the easy way to get your feet wet with Seam, and gives you some "
+"ammunition for next time you find yourself trapped in an elevator with one "
+"of those tedious Ruby guys ranting about how great and wonderful his new toy "
+"is for building totally trivial applications that put things in databases."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:17
+#, no-c-format
+msgid ""
+"In this release, seam-gen works best for people with JBoss AS. You can use "
+"the generated project with other J2EE or Java EE 5 application servers by "
+"making a few manual changes to the project configuration."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:20
+#, no-c-format
+msgid ""
+"You <emphasis>can</emphasis> use seam-gen without Eclipse, but in this "
+"tutorial, we want to show you how to use it in conjunction with Eclipse for "
+"debugging and integration testing. If you don't want to install Eclipse, you "
+"can still follow along with this tutorial&mdash;all steps can be peformed "
+"from the command line."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:23
+#, no-c-format
+msgid ""
+"Seam-gen is basically just a big ugly Ant script wrapped around Hibernate "
+"Tools, together with some templates. Which means it is easy to customize if "
+"you need to."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:27
+#, no-c-format
+msgid "Before you start"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:28
+#, no-c-format
+msgid ""
+"Make sure you have JDK 5 or JDK 6, JBoss AS 4.0.5 and Ant 1.6, along with "
+"recent versions of Eclipse, the JBoss IDE plugin for Eclipse and the TestNG "
+"plugin for Eclipse correctly installed before starting. Add your JBoss "
+"installation to the JBoss Server View in Eclipse. Start JBoss in debug mode. "
+"Finally, start a command prompt in the directory where you unzipped the Seam "
+"distribution."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:34
+#, no-c-format
+msgid "Setting up a new Eclipse project"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:35
+#, no-c-format
+msgid ""
+"The first thing we need to do is configure seam-gen for your environment: "
+"JBoss AS installation directory, Eclipse workspace, and database connection. "
+"It's easy, just type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:38
+#, no-c-format
+msgid ""
+"cd jboss-seam-1.1.x\n"
+"seam setup"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:39
+#, no-c-format
+msgid "And you will be prompted for the needed information:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:42
+#, no-c-format
+msgid ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam setup\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"setup:\n"
+"    [echo] Welcome to seam-gen :-)\n"
+"    [input] Enter your Java project workspace [C:/Projects]\n"
+"\n"
+"    [input] Enter your JBoss home directory [C:/Program Files/jboss-4.0.5."
+"GA]\n"
+"\n"
+"    [input] Enter the project name [myproject]\n"
+"helloworld\n"
+"    [input] Is this project deployed as an EAR (with EJB components) or a "
+"WAR \n"
+"        (with no EJB support) [ear] (ear,war,)\n"
+"\n"
+"    [input] Enter the Java package name for your session beans [com.mydomain."
+"helloworld]\n"
+"org.jboss.helloworld\n"
+"    [input] Enter the Java package name for your entity beans [org.jboss."
+"helloworld]\n"
+"\n"
+"    [input] Enter the Java package name for your test cases [org.jboss."
+"helloworld.test]\n"
+"\n"
+"    [input] What kind of database are you using? [hsql]\n"
+"    (hsql,mysql,oracle,postgres,mssql,db2,sybase,)\n"
+"mysql\n"
+"    [input] Enter the Hibernate dialect for your database [org.hibernate."
+"dialect.MySQLDialect]\n"
+"\n"
+"    [input] Enter the filesystem path to the JDBC driver jar [lib/hsqldb."
+"jar]\n"
+"../../mysql-connector.jar\n"
+"    [input] Enter JDBC driver class for your database [com.mysql.jdbc."
+"Driver]\n"
+"\n"
+"    [input] Enter the JDBC URL for your database [jdbc:mysql:///test]\n"
+"\n"
+"    [input] Enter database username [sa]\n"
+"gavin\n"
+"    [input] Enter database password []\n"
+"\n"
+"    [input] Are you working with tables that already exist in the database? "
+"[n] (y,n,)\n"
+"y\n"
+"    [input] Do you want to drop and recreate the database tables and data in "
+"import.sql \n"
+"    each time you deploy? [n] (y,n,)\n"
+"n\n"
+"[propertyfile] Creating new property file: C:&#92;Projects&#92;jboss-"
+"seam&#92;seam-gen&#92;build.properties\n"
+"     [echo] Installing JDBC driver jar to JBoss server\n"
+"     [echo] Type 'seam new-project' to create the new project\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 1 minute 17 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:43
+#, no-c-format
+msgid ""
+"The tool provides sensible defaults, which you can accept by just pressing "
+"enter at the prompt."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:46
+#, no-c-format
+msgid ""
+"The most important choice you need to make is between EAR deployment and WAR "
+"deployment of your project. EAR projects support EJB 3.0 and require Java EE "
+"5. WAR projects do not support EJB 3.0, but may be deployed to a J2EE "
+"environment. The packaging of a WAR is also simpler to understand. If you "
+"installed JBoss with the ejb3 profile, choose <literal>ear</literal>. "
+"Otherwise, choose <literal>war</literal>. We'll assume that you've chosen an "
+"EAR deployment for the rest of the tutorial, but you can follow exactly the "
+"same steps for a WAR deployment."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:49
+#, no-c-format
+msgid ""
+"If you are working with an existing data model, make sure you tell seam-gen "
+"that the tables already exist in the database."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:52
+#, no-c-format
+msgid ""
+"The settings are stored in <literal>seam-gen/build.properties</literal>, but "
+"you can also modify them simply by running <literal>seam setup</literal> a "
+"second time."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:55
+#, no-c-format
+msgid ""
+"Now we can create a new project in our Eclipse workspace directory, by "
+"typing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:58
+#, no-c-format
+msgid "seam new-project"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:59
+#, no-c-format
+msgid ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam new-project\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"copy-lib:\n"
+"     [echo] Copying project jars ...\n"
+"     [copy] Copying 32 files to C:&#92;Projects&#92;helloworld&#92;lib\n"
+"     [copy] Copying 9 files to C:&#92;Projects&#92;helloworld&#92;embedded-"
+"ejb\n"
+"\n"
+"file-copy-wtp:\n"
+"\n"
+"file-copy:\n"
+"     [echo] Copying project resources ...\n"
+"     [copy] Copying 12 files to C:&#92;Projects&#92;helloworld&#92;"
+"resources\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;helloworld&#92;resources\n"
+"     [copy] Copying 5 files to C:&#92;Projects&#92;helloworld&#92;view\n"
+"     [copy] Copying 5 files to C:&#92;Projects&#92;helloworld\n"
+"    [mkdir] Created dir: C:&#92;Projects&#92;helloworld&#92;src\n"
+"\n"
+"new-project:\n"
+"     [echo] A new Seam project was created in the C:/Projects directory\n"
+"     [echo] Add the project from inside Eclipse (or type 'seam explode') and "
+"go to http://localhost:\n"
+"8080/helloworld\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 7 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:60
+#, no-c-format
+msgid ""
+"This copies the Seam jars, dependent jars and the JDBC driver jar to a new "
+"Eclipse project, and generates all needed resources and configuration files, "
+"a facelets template file and stylesheet, along with Eclipse metadata and an "
+"Ant build script. The Eclipse project will be automatically deployed to an "
+"exploded directory structure in JBoss AS as soon as you add the project "
+"using <literal>New -&gt; Project... -&gt; Java Project -&gt; Next</literal>, "
+"typing the <literal>Project name</literal> (<literal>myproject</literal> in "
+"this case), selecting your Java SE 5 or Java SE 6 JRE and then clicking "
+"<literal>Finish</literal>. Do not select <literal>Create new project from "
+"existing source</literal>. Alternatively, you can deploy the project from "
+"outside Eclipse by typing <literal>seam explode</literal>."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:63
+#, no-c-format
+msgid ""
+"Go to <literal>http://localhost:8080/helloworld</literal> to see a welcome "
+"page. This is a facelets page, <literal>view/home.xhtml</literal>, using the "
+"template <literal>view/layout/template.xhtml</literal>. You can edit this "
+"page, or the template, in eclipse, and see the results "
+"<emphasis>immediately</emphasis>, by clicking refresh in your browser."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:66
+#, no-c-format
+msgid ""
+"Don't get scared by the XML configuration documents that were generated into "
+"the project directory. They are mostly standard Java EE stuff, the stuff you "
+"need to create once and then never look at again, and they are 90&#37; the "
+"same between all Seam projects. (They are so easy to write that even seam-"
+"gen can do it.)"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:69
+#, no-c-format
+msgid ""
+"The generated project includes three database and persistence "
+"configurations. The <literal>jboss-beans.xml</literal>, <literal>persistence-"
+"test.xml</literal> and <literal>import-test.sql</literal> files are used "
+"when running the TestNG unit tests against HSQLDB. The database schema and "
+"the test data in <literal>import-test.sql</literal> is always exported to "
+"the database before running tests. The <literal>myproject-dev-ds.xml</"
+"literal>, <literal>persistence-dev.xml</literal>and <literal>import-dev.sql</"
+"literal> files are for use when deploying the application to your "
+"development database. The schema might be exported automatically at "
+"deployment, depending upon whether you told seam-gen that you are working "
+"with an existing database. The <literal>myproject-prod-ds.xml</literal>, "
+"<literal>persistence-prod.xml</literal>and <literal>import-prod.sql</"
+"literal> files are for use when deploying the application to your production "
+"database. The schema is not exported automatically at deployment."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:75
+#, no-c-format
+msgid "Creating a new action"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:76
+#, no-c-format
+msgid ""
+"If you're used to traditional action-style web frameworks, you're probably "
+"wondering how you can create a simple webpage with a stateless action method "
+"in Java. If you type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:79
+#, no-c-format
+msgid "seam new-action"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:80
+#, no-c-format
+msgid ""
+"Seam will prompt for some information, and generate a new facelets page and "
+"Seam component for your project."
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:83
+#, no-c-format
+msgid ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam new-action ping\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"action-input:\n"
+"    [input] Enter the Seam component name\n"
+"ping\n"
+"    [input] Enter the local interface name [Ping]\n"
+"\n"
+"    [input] Enter the bean class name [PingBean]\n"
+"\n"
+"    [input] Enter the action method name [ping]\n"
+"\n"
+"    [input] Enter the page name [ping]\n"
+"\n"
+"\n"
+"setup-filters:\n"
+"\n"
+"new-action:\n"
+"     [echo] Creating a new stateless session bean component with an action "
+"method\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;view\n"
+"     [echo] Type 'seam restart' and go to \n"
+"     http://localhost:8080/helloworld/ping.seam\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 13 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:84
+#, no-c-format
+msgid ""
+"Because we've added a new Seam component, we need to restart the exploded "
+"directory deployment. You can do this by typing <literal>seam restart</"
+"literal>, or by running the <literal>restart</literal> target in the "
+"generated project <literal>build.xml</literal> file from inside Eclipse. "
+"Another way to force a restart is to edit the file <literal>resources/META-"
+"INF/application.xml</literal> in Eclipse. <emphasis>Note that you do not "
+"need to restart JBoss each time you change the application.</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:87
+#, no-c-format
+msgid ""
+"Now go to <literal>http://localhost:8080/helloworld/ping.seam</literal> and "
+"click the button. You can see the code behind this action by looking in the "
+"project <literal>src</literal> directory. Put a breakpoint in the "
+"<literal>ping()</literal> method, and click the button again."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:90
+#, no-c-format
+msgid ""
+"Finally, locate the <literal>PingTest.xml</literal> file in the test package "
+"and run the integration tests using the TestNG plugin for Eclipse. "
+"Alternatively, run the tests using <literal>seam test</literal> or the "
+"<literal>test</literal> target of the generated build."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:96
+#, no-c-format
+msgid "Creating a form with an action"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:97
+#, no-c-format
+msgid "The next step is to create a form. Type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:100
+#, no-c-format
+msgid "seam new-form"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:101
+#, no-c-format
+msgid ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam new-form\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"action-input:\n"
+"    [input] Enter the Seam component name\n"
+"hello\n"
+"    [input] Enter the local interface name [Hello]\n"
+"\n"
+"    [input] Enter the bean class name [HelloBean]\n"
+"\n"
+"    [input] Enter the action method name [hello]\n"
+"\n"
+"    [input] Enter the page name [hello]\n"
+"\n"
+"\n"
+"setup-filters:\n"
+"\n"
+"new-form:\n"
+"     [echo] Creating a new stateful session bean component with an action "
+"method\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;view\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [echo] Type 'seam restart' and go to http://localhost:8080/hello/hello."
+"seam\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 5 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:102
+#, no-c-format
+msgid ""
+"Restart the application again, and go to <literal>http://localhost:8080/"
+"helloworld/hello.seam</literal>. Then take a look at the generated code. Run "
+"the test. Try adding some new fields to the form and Seam component "
+"(remember to restart the deploment each time you change the Java code)."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:108
+#, no-c-format
+msgid "Generating an application from an existing database"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:109
+#, no-c-format
+msgid ""
+"Manually create some tables in your database. (If you need to switch to a "
+"different database, just run <literal>seam setup</literal> again.) Now type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:112
+#, no-c-format
+msgid "seam generate-entities"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:113
+#, no-c-format
+msgid ""
+"Restart the deployment, and go to <literal>http://localhost:8080/helloworld</"
+"literal>. You can browse the database, edit existing objects, and create new "
+"objects. If you look at the generated code, you'll probably be amazed how "
+"simple it is! Seam was designed so that data access code is easy to write by "
+"hand, even for people who don't want to cheat by using seam-gen."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:119
+#, no-c-format
+msgid "Deploying the application as an EAR"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:120
+#, no-c-format
+msgid ""
+"Finally, we want to be able to deploy the application using standard Java EE "
+"5 packaging. First, we need to remove the exploded directory by running "
+"<literal>seam unexplode</literal>. To deploy the EAR, we can type "
+"<literal>seam deploy</literal> at the command prompt, or run the "
+"<literal>deploy</literal> target of the generated project build script. You "
+"can undeploy using <literal>seam undeploy</literal> or the "
+"<literal>undeploy</literal> target."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:123
+#, no-c-format
+msgid ""
+"By default, the application will be deployed with the <emphasis>dev profile</"
+"emphasis>. The EAR will include the <literal>persistence-dev.xml</literal> "
+"and <literal>import-dev.sql</literal> files, and the <literal>myproject-dev-"
+"ds.xml</literal> file will be deployed. You can change the profile, and use "
+"the <emphasis>prod profile</emphasis>, by typing"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:126
+#, no-c-format
+msgid "seam -Dprofile=prod deploy"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:127
+#, no-c-format
+msgid ""
+"You can even define new deployment profiles for your application. Just add "
+"appropriately named files to your project&mdash;for example, "
+"<literal>persistence-staging.xml</literal>, <literal>import-staging.sql</"
+"literal> and <literal>myproject-staging-ds.xml</literal>&mdash;and select "
+"the name of the profile using <literal>-Dprofile=staging</literal>."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/I18n.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/I18n.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/I18n.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,533 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: I18n.xml:10
+#, no-c-format
+msgid "Internationalization and themes"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:11
+#, no-c-format
+msgid ""
+"Seam makes it easy to build internationalized applications by providing "
+"several built-in components for handling multi-language UI messages."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:15
+#, no-c-format
+msgid "Locales"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:16
+#, no-c-format
+msgid ""
+"Each user login session has an associated instance of <literal>java.util."
+"Locale</literal> (available to the application as a session-scoped component "
+"named <literal>locale</literal>). Under normal circumstances, you won't need "
+"to do any special configuration to set the locale. Seam just delegates to "
+"JSF to determine the active locale:"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:21
+#, no-c-format
+msgid ""
+"If there is a locale associated with the HTTP request (the browser locale), "
+"and that locale is in the list of supported locales from <literal>faces-"
+"config.xml</literal>, use that locale for the rest of the session."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:24
+#, no-c-format
+msgid ""
+"Otherwise, if a default locale was specified in the <literal>faces-config."
+"xml</literal>, use that locale for the rest of the session."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:27
+#, no-c-format
+msgid "Otherwise, use the default locale of the server."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:30
+#, no-c-format
+msgid ""
+"It is <emphasis>possible</emphasis> to set the locale manually via the Seam "
+"configuration properties <literal>org.jboss.seam.core.localeSelector."
+"language</literal>, <literal>org.jboss.seam.core.localeSelector.country</"
+"literal> and <literal>org.jboss.seam.core.localeSelector.variant</literal>, "
+"but we can't think of any good reason to ever do this."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:33
+#, no-c-format
+msgid ""
+"It is, however, useful to allow the user to set the locale manually via the "
+"application user interface. Seam provides built-in functionality for "
+"overriding the locale determined by the algorithm above. All you have to do "
+"is add the following fragment to a form in your JSP or Facelets page:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:36
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{localeSelector.language}\"&gt;\n"
+"    &lt;f:selectItem itemLabel=\"English\" itemValue=\"en\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Deutsch\" itemValue=\"de\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Francais\" itemValue=\"fr\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{localeSelector.select}\" value=\"#{messages"
+"['ChangeLanguage']}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:37
+#, no-c-format
+msgid ""
+"Or, if you want a list of all supported locales from <literal>faces-config."
+"xml</literal>, just use:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:40
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{localeSelector.localeString}\"&gt;\n"
+"    &lt;f:selectItems value=\"#{localeSelector.supportedLocales}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{localeSelector.select}\" value=\"#{messages"
+"['ChangeLanguage']}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:41
+#, no-c-format
+msgid ""
+"When this use selects an item from the drop-down, and clicks the button, the "
+"Seam and JSF locales will be overridden for the rest of the session."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:47
+#, no-c-format
+msgid "Labels"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:48
+#, no-c-format
+msgid ""
+"JSF supports internationalization of user interface labels and descriptive "
+"text via the use of <literal>&lt;f:loadBundle /&gt;</literal>. You can use "
+"this approach in Seam applications. Alternatively, you can take advantage of "
+"the Seam <literal>messages</literal> component to display templated labels "
+"with embedded EL expressions."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:52
+#, no-c-format
+msgid "Defining labels"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:53
+#, no-c-format
+msgid ""
+"Each login session has an associated instance of <literal>java.util."
+"ResourceBundle</literal> (available to the application as a session-scoped "
+"component named <literal>org.jboss.seam.core.resourceBundle</literal>). "
+"You'll need to make your internationalized labels available via this special "
+"resource bundle. By default, the resource bundle used by Seam is named "
+"<literal>messages</literal> and so you'll need to define your labels in "
+"files named <literal>messages.properties</literal>, <literal>messages_en."
+"properties</literal>, <literal>messages_en_AU.properties</literal>, etc. "
+"These files usually belong in the <literal>WEB-INF/classes</literal> "
+"directory."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:56
+#, no-c-format
+msgid "So, in <literal>messages_en.properties</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:59
+#, no-c-format
+msgid "Hello=Hello"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:60
+#, no-c-format
+msgid "And in <literal>messages_en_AU.properties</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:63
+#, no-c-format
+msgid "Hello=G'day"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:64
+#, no-c-format
+msgid ""
+"You can select a different name for the resource bundle by setting the Seam "
+"configuration property named <literal>org.jboss.seam.core.resourceBundle."
+"bundleNames</literal>. You can even specify a list of resource bundle names "
+"to be searched (depth first) for messages."
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:67
+#, no-c-format
+msgid ""
+"&lt;core:resource-bundle&gt;\n"
+"    &lt;core:bundle-names&gt;\n"
+"        &lt;value&gt;mycompany_messages&lt;/value&gt;\n"
+"        &lt;value&gt;standard_messages&lt;/value&gt;       \n"
+"    &lt;/core:bundle-names&gt;\n"
+"&lt;/core:resource-bundle&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:68
+#, no-c-format
+msgid ""
+"If you want to define a message just for a particular page, you can specify "
+"it in a resource bundle with the same name as the JSF view id, with the "
+"leading <literal>/</literal> and trailing file extension removed. So we "
+"could put our message in <literal>welcome/hello_en.properties</literal> if "
+"we only needed to display the message on <literal>/welcome/hello.jsp</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:71
+#, no-c-format
+msgid ""
+"You can even specify an explicit bundle name in <literal>pages.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:74
+#, no-c-format
+msgid "&lt;page view-id=\"/welcome/hello.jsp\" bundle=\"HelloMessages\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:75
+#, no-c-format
+msgid ""
+"Then we could use messages defined in <literal>HelloMessages.properties</"
+"literal> on <literal>/welcome/hello.jsp</literal>."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:81
+#, no-c-format
+msgid "Displaying labels"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:82
+#, no-c-format
+msgid ""
+"If you define your labels using the Seam resource bundle, you'll be able to "
+"use them without having to type <literal>&lt;f:loadBundle ... /&gt;</"
+"literal> on every page. Instead, you can simply type:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:85
+#, no-c-format
+msgid "&lt;h:outputText value=\"#{messages['Hello']}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:86
+#, no-c-format
+msgid "<para>or:</para>"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:89
+#, no-c-format
+msgid "&lt;h:outputText value=\"#{messages.Hello}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:90
+#, no-c-format
+msgid "Even better, the messages themselves may contain EL expressions:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:93
+#, no-c-format
+msgid "Hello=Hello, #{user.firstName} #{user.lastName}"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:94
+#, no-c-format
+msgid "Hello=G'day, #{user.firstName}"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:95
+#, no-c-format
+msgid "You can even use the messages in your code:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:98
+#, no-c-format
+msgid "@In private Map&lt;String, String&gt; messages;"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:99
+#, no-c-format
+msgid "@In(\"#{messages['Hello']}\") private String helloMessage;"
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:103
+#, no-c-format
+msgid "Faces messages"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:104
+#, no-c-format
+msgid ""
+"The <literal>facesMessages</literal> component is a super-convenient way to "
+"display success or failure messages to the user. The functionality we just "
+"described also works for faces messages:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:107
+#, no-c-format
+msgid ""
+"@Name(\"hello\")\n"
+"@Stateless\n"
+"public class HelloBean implements Hello {\n"
+"    @In FacesMessages facesMessages;\n"
+"    \n"
+"    public String sayIt() {\n"
+"        facesMessages.addFromResourceBundle(\"Hello\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:108
+#, no-c-format
+msgid ""
+"This will display <literal>Hello, Gavin King</literal> or <literal>G'day, "
+"Gavin</literal>, depending upon the user's locale."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:116
+#, no-c-format
+msgid "Timezones"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:117
+#, no-c-format
+msgid ""
+"There is also a session-scoped instance of <literal>java.util.Timezone</"
+"literal>, named <literal>org.jboss.seam.core.timezone</literal>, and a Seam "
+"component for changing the timezone named <literal>org.jboss.seam.core."
+"timezoneSelector</literal>. By default, the timezone is the default timezone "
+"of the server. Unfortunately, the JSF specification says that all dates and "
+"times should be assumed to be UTC, and displayed as UTC, unless a timezone "
+"is explicitly specified using <literal>&lt;f:convertDateTime&gt;</literal>. "
+"This is an extremely inconvenient default behavior."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:120
+#, no-c-format
+msgid ""
+"Seam overrides this behavior, and defaults all dates and times to the Seam "
+"timezone. In addition, Seam provides the <literal>&lt;s:convertDateTime&gt;</"
+"literal> tag which always performs conversions in the Seam timezone."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:126
+#, no-c-format
+msgid "Themes"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:127
+#, no-c-format
+msgid ""
+"Seam applications are also very easily skinnable. The theme API is very "
+"similar to the localization API, but of course these two concerns are "
+"orthogonal, and some applications support both localization and themes."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:130
+#, no-c-format
+msgid "First, configure the set of supported themes:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:133
+#, no-c-format
+msgid ""
+"&lt;theme:theme-selector cookie-enabled=\"true\"&gt;\n"
+"    &lt;theme:available-themes&gt;\n"
+"        &lt;value&gt;default&lt;/value&gt;\n"
+"        &lt;value&gt;accessible&lt;/value&gt;\n"
+"        &lt;value&gt;printable&lt;/value&gt;\n"
+"    &lt;/theme:available-themes&gt;\n"
+"&lt;/theme:theme-selector&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:134
+#, no-c-format
+msgid "Note that the first theme listed is the default theme."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:137
+#, no-c-format
+msgid ""
+"Themes are defined in a properties file with the same name as the theme. For "
+"example, the <literal>default</literal> theme is defined as a set of entries "
+"in <literal>default.properties</literal>. For example, <literal>default."
+"properties</literal> might define:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:140
+#, no-c-format
+msgid ""
+"css ../screen.css\n"
+"template template.xhtml"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:141
+#, no-c-format
+msgid ""
+"Usually the entries in a theme resource bundle will be paths to CSS styles "
+"or images and names of facelets templates (unlike localization resource "
+"bundles which are usually text)."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:144
+#, no-c-format
+msgid ""
+"Now we can use these entries in our JSP or facelets pages. For example, to "
+"theme the stylesheet in a facelets page:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:147
+#, no-c-format
+msgid ""
+"&lt;link href=\"#{theme.css}\" rel=\"stylesheet\" type=\"text/css\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:148
+#, no-c-format
+msgid ""
+"Most powerfully, facelets lets us theme the template used by a <literal>&lt;"
+"ui:composition&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:151
+#, no-c-format
+msgid ""
+"&lt;ui:composition xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"    xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"    xmlns:h=\"http://java.sun.com/jsf/html\"\n"
+"    xmlns:f=\"http://java.sun.com/jsf/core\"\n"
+"    template=\"#{theme.template}\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:152
+#, no-c-format
+msgid ""
+"Just like the locale selector, there is a built-in theme selector to allow "
+"the user to freely switch themes:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:155
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{themeSelector.theme}\"&gt;\n"
+"    &lt;f:selectItems value=\"#{themeSelector.themes}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{themeSelector.select}\" value=\"Select Theme"
+"\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:159
+#, no-c-format
+msgid "Persisting locale and theme preferences via cookies"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:160
+#, no-c-format
+msgid ""
+"The locale selector, theme selector and timezone selector all support "
+"persistence of locale and theme preference to a cookie. Simply set the "
+"<literal>cookie-enabled</literal> configuration property:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:163
+#, no-c-format
+msgid ""
+"&lt;theme:theme-selector cookie-enabled=\"true\"&gt;\n"
+"    &lt;theme:available-themes&gt;\n"
+"        &lt;value&gt;default&lt;/value&gt;\n"
+"        &lt;value&gt;accessible&lt;/value&gt;\n"
+"        &lt;value&gt;printable&lt;/value&gt;\n"
+"    &lt;/theme:available-themes&gt;\n"
+"&lt;/theme:theme-selector&gt;\n"
+"\n"
+"&lt;core:locale-selector cookie-enabled=\"true\"/&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Itext.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Itext.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Itext.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1452 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Itext.xml:10
+#, no-c-format
+msgid "iText PDF generation"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:11
+#, no-c-format
+msgid ""
+"Seam now includes an component set for generating documents using iText. The "
+"primary focus of Seam's iText document support is for the generation of PDF "
+"doucuments, but Seam also offers basic support for RTF document generation."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:15
+#, no-c-format
+msgid "Using PDF Support"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:16
+#, no-c-format
+msgid ""
+"iText support is provided by <literal>jboss-seam-pdf.jar</literal>. This JAR "
+"contains the iText JSF controls, which are used to construct views that can "
+"render to PDF, and the DocumentStore component, which serves the rendered "
+"documents to the user. To include PDF support in your application, included "
+"<literal>jboss-seam-pdf.jar</literal> in your <literal>WEB-INF/lib</literal> "
+"directory along with the iText JAR file. There is no further configuration "
+"needed to use Seam's iText support."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:19
+#, no-c-format
+msgid ""
+"The Seam iText module requires the use of Facelets as the view technology. "
+"Future versions of the library may also support the use of JSP. "
+"Additionally, it requires the use of the seam-ui package."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:22
+#, no-c-format
+msgid ""
+"The <literal>examples/itext</literal> project contains an example of the PDF "
+"support in action. It demonstrates proper deployment packaging, and it "
+"contains a number examples that demonstrate the key PDF generation features "
+"current supported."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:28
+#, no-c-format
+msgid "Creating a document"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:29
+#, no-c-format
+msgid ""
+"Documents are generated by facelets documents using tags in the "
+"<literal>http://jboss.com/products/seam/pdf</literal> namespace. Documents "
+"should always have the <literal>document</literal> tag at the root of the "
+"document. The <literal>document</literal> tag prepares Seam to generate a "
+"document into the DocumentStore and renders an HTML redirect to that stored "
+"content. The following is a a small PDF document consisting only a single "
+"line of text:"
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:32
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf"
+"\"&gt;                                                      \n"
+"   The document goes "
+"here.                                                                                             \n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:34
+#, no-c-format
+msgid "p:document"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:35
+#, no-c-format
+msgid ""
+"The <literal>p:document</literal> tag supports the following attributes:"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:40
+#, no-c-format
+msgid "type"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:42
+#, no-c-format
+msgid ""
+"The type of the document to be produced. Valid values are <literal>PDF</"
+"literal>, <literal>RTF</literal> and <literal>HTML</literal> modes. Seam "
+"defaults to PDF generation, and many of the features only work correctly "
+"when generating PDF documents."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:48
+#, no-c-format
+msgid "pageSize"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:50
+#, no-c-format
+msgid ""
+"The size of the page to be generate. The most commonly used values would be "
+"<literal>LETTER</literal> and <literal>A4</literal>. A full list of "
+"supported pages sizes can be found in <literal>com.lowagie.text.PageSize</"
+"literal> class. Alternatively, pageSize can provide the width and height of "
+"the page directly. The value \"612 792\", for example, is equizalent to the "
+"LETTER page size."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:56
+#, no-c-format
+msgid "orientation"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:58
+#, no-c-format
+msgid ""
+"The orientation of the page. Valid values are <literal>portrait</literal> "
+"and <literal>landscape</literal>. In landscape mode, the height and width "
+"page size values are reversed."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:64
+#, no-c-format
+msgid "margins"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:66
+#, no-c-format
+msgid "The left, right, top and bottom margin values."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:72
+#, no-c-format
+msgid "marginMirroring"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:74
+#, no-c-format
+msgid "Indicates that margin settings should be reversed an alternating pages."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:80
+#, no-c-format
+msgid ""
+"Document metadata is also set as attributes of the document tag. The "
+"following metadata fields are supported:"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:85
+#, no-c-format
+msgid "title"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:92
+#, no-c-format
+msgid "subject"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:99
+#, no-c-format
+msgid "keywords"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:106
+#, no-c-format
+msgid "author"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:113
+#, no-c-format
+msgid "creator"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:125
+#, no-c-format
+msgid "Basic Text Elements"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:126
+#, no-c-format
+msgid ""
+"Useful documents will need to contain more than just text; however, the "
+"standard UI components are geared towards HTML generation and are not useful "
+"for generating PDF content. Instead, Seam provides a special UI components "
+"for generating suitable PDF content. Tags like <literal>&lt;p:image&gt;</"
+"literal> and <literal>&lt;p:paragraph&gt;</literal> are the basic "
+"foundations of simple documents. Tags like <literal>&lt;p:font&gt;</literal> "
+"provide style information to all the content surrounging them."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:129
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"&gt; \n"
+"    &lt;p:image alignment=\"right\" wrap=\"true\" resource=\"/logo.jpg\" /"
+"&gt;\n"
+"    &lt;p:font size=\"24\"&gt;\n"
+"        &lt;p:paragraph spacingAfter=\"50\"&gt;My First Document&lt;/p:"
+"paragraph&gt;\n"
+"    &lt;/p:font&gt;\n"
+"\n"
+"    &lt;p:paragraph alignment=\"justify\"&gt;\n"
+"        This is a simple document.  It isn't very fancy.\n"
+"    &lt;/p:paragraph&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:131
+#, no-c-format
+msgid "p:paragraph"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:132
+#, no-c-format
+msgid ""
+"Most uses of text should be sectioned into paragraphs so that text fragments "
+"can be flowed, formatted and styled in logical groups."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:137
+#, no-c-format
+msgid "firstLineIndent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:144 Itext.xml:836
+#, no-c-format
+msgid "extraParagraphSpace"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:151 Itext.xml:808
+#, no-c-format
+msgid "leading"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:158 Itext.xml:815
+#, no-c-format
+msgid "multipliedLeading"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:165 Itext.xml:344 Itext.xml:716
+#, no-c-format
+msgid "spacingBefore"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:167 Itext.xml:346 Itext.xml:718
+#, no-c-format
+msgid "The blank space to be inserted before the element."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:173 Itext.xml:352 Itext.xml:724
+#, no-c-format
+msgid "spacingAfter"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:175 Itext.xml:354 Itext.xml:726
+#, no-c-format
+msgid "The blank space to be inserted after the element."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:181 Itext.xml:330 Itext.xml:599
+#, no-c-format
+msgid "indentationLeft"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:188 Itext.xml:337 Itext.xml:607
+#, no-c-format
+msgid "indentationRight"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:195 Itext.xml:753
+#, no-c-format
+msgid "keepTogether"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:205
+#, no-c-format
+msgid "p:text"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:206
+#, no-c-format
+msgid ""
+"The <literal>text</literal> tag allows text fragments to be produced from "
+"application data using normal JSF converter mechanisms. It is very similar "
+"to the <literal>outputText</literal> tag used when rendering HTML documents. "
+"Here is an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:209
+#, no-c-format
+msgid ""
+"&lt;p:paragraph&gt;\n"
+"    The item costs &lt;p:text value=\"#{product.price}\"&gt;\n"
+"        &lt;f:convertNumber type=\"currency\" currencySymbol=\"&#36;\"/&gt;\n"
+"    &lt;/p:text&gt;\n"
+"&lt;/p:paragraph&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:212
+#, no-c-format
+msgid "value"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:214
+#, no-c-format
+msgid ""
+"The value to be displayed. This will typically be a value binding expression."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:223
+#, no-c-format
+msgid "p:font"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:224
+#, no-c-format
+msgid "Font declarations have no direct"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:229
+#, no-c-format
+msgid "familyName"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:231
+#, no-c-format
+msgid ""
+"The font family. One of: <literal>COURIER</literal>, <literal>HELVETICA</"
+"literal>, <literal>TIMES-ROMAN</literal>, <literal>SYMBOL</literal> or "
+"<literal>ZAPFDINGBATS</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:237
+#, no-c-format
+msgid "size"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:239
+#, no-c-format
+msgid "The point size of the font."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:245 Itext.xml:534
+#, no-c-format
+msgid "style"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:247
+#, no-c-format
+msgid ""
+"The font styles. Any combination of : <literal>NORMAL</literal>, "
+"<literal>BOLD</literal>, <literal>ITALIC</literal>, <literal>OBLIQUE</"
+"literal>, <literal>UNDERLINE</literal>, <literal>LINE-THROUGH</literal>"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:256
+#, no-c-format
+msgid "p:newPage"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:257
+#, no-c-format
+msgid "<literal>p:newPage</literal> inserts a page break."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:263
+#, no-c-format
+msgid "p:image"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:264
+#, no-c-format
+msgid ""
+"<literal>p:image</literal> inserts an image into the document. Images can be "
+"be loaded from the classpath or from the web application context using the "
+"<literal>resource</literal> attribute."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:267
+#, no-c-format
+msgid "&lt;p:image resource=\"/jboss.jpg\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:268
+#, no-c-format
+msgid ""
+"Resources can also be dynamically generated by application code. The "
+"<literal>imageData</literal> attribute can specify a value binding "
+"expression whose value is a <literal>java.awt.Image</literal> object."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:271
+#, no-c-format
+msgid "&lt;p:image imageData=\"#{images.chart}\" /&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:274
+#, no-c-format
+msgid "resource"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:276
+#, no-c-format
+msgid ""
+"The location of the image resource to be included. Resources should be "
+"relative to the document root of the web application."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:282
+#, no-c-format
+msgid "imageData"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:284
+#, no-c-format
+msgid "A method expression binding to an application-generated image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:290 Itext.xml:913
+#, no-c-format
+msgid "rotation"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:292
+#, no-c-format
+msgid "The rotation of the image in degrees."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:298
+#, no-c-format
+msgid "height"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:300
+#, no-c-format
+msgid "The height of the image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:306
+#, no-c-format
+msgid "width"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:308
+#, no-c-format
+msgid "The width of the image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:314 Itext.xml:441 Itext.xml:591
+#, no-c-format
+msgid "alignment"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:316
+#, no-c-format
+msgid ""
+"The alignment of the image. (see <xref linkend=\"Document_Constants-"
+"Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:322
+#, no-c-format
+msgid "<literal>alt</literal>"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:324
+#, no-c-format
+msgid "Alternative text representation for the image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:360 Itext.xml:672
+#, no-c-format
+msgid "widthPercentage"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:367
+#, no-c-format
+msgid "initialRotation"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:374
+#, no-c-format
+msgid "<literal>dpi</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:381
+#, no-c-format
+msgid "scalePercent"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:383
+#, no-c-format
+msgid ""
+"The scaling factor (as a percentage) to use for the image. This can be "
+"expressed as a single percentage value or as two percentage values "
+"representing separate x and y scaling percentages."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:389
+#, no-c-format
+msgid "wrap"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:396
+#, no-c-format
+msgid "underlying"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:406
+#, no-c-format
+msgid "p:anchor"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:407
+#, no-c-format
+msgid ""
+"<literal>p:anchor</literal> defines clickable links from a document. It "
+"supports the following attributes:"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:412
+#, no-c-format
+msgid "name"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:414
+#, no-c-format
+msgid "The name of an in-document anchor destination."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:420
+#, no-c-format
+msgid "reference"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:422
+#, no-c-format
+msgid ""
+"The destination the link refers to. Links to other points in the document "
+"should begin with a \"#\". For example, \"#link1\" to refer to an anchor "
+"postion with a <literal>name</literal> of <literal>link1</literal>. Links "
+"may also be a full URL to point to a resource outside of the document."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:433
+#, no-c-format
+msgid "Headers and Footers"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:435
+#, no-c-format
+msgid "p:header and p:footer"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:436
+#, no-c-format
+msgid ""
+"The <literal>p:header</literal> and <literal>p:footer</literal> components "
+"provide the ability to place header and footer text on each page of a "
+"generated document, with the exception of the first page. Header and footer "
+"declarations should appear near the top of a document."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:443
+#, no-c-format
+msgid ""
+"The alignment of the header/footer box section. (see <xref linkend="
+"\"Document_Constants-Alignment_Values\"/> for alignment values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:449
+#, no-c-format
+msgid "backgroundColor"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:451
+#, no-c-format
+msgid ""
+"The background color of the header/footer box. (see <xref linkend="
+"\"Document_Constants-Color_Values\"/> for color values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:457
+#, no-c-format
+msgid "borderColor"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:459
+#, no-c-format
+msgid ""
+"The border color of the header/footer box. Individual border sides can be "
+"set using <literal>borderColorLeft</literal>, <literal>borderColorRight</"
+"literal>, <literal>borderColorTop</literal> and <literal>borderColorBottom</"
+"literal>.(see <xref linkend=\"Document_Constants-Color_Values\"/> for color "
+"values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:465
+#, no-c-format
+msgid "borderWidth"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:467
+#, no-c-format
+msgid ""
+"The width of the border. Inidvidual border sides can be specified using "
+"<literal>borderWidthLeft</literal>, <literal>borderWidthRight</literal>, "
+"<literal>borderWidthTop</literal> and <literal>borderWidthBottom</literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:476
+#, no-c-format
+msgid "p:pageNumber"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:477
+#, no-c-format
+msgid ""
+"The current page number can be placed inside of a header or footer using the "
+"<literal>p:pageNumber</literal> tag. The page number tag can only be used in "
+"the context of a header or footer and can only be used once."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:485
+#, no-c-format
+msgid "Chapters and Sections"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:486
+#, no-c-format
+msgid ""
+"If the generated document follows a book/article structure, the <literal>p:"
+"chapter</literal> and <literal>p:section</literal> tags can be used to "
+"provide the necessary structure. Sections can only be used inside of "
+"chapters, but they may be nested arbitrarily deep. Most PDF viewers provide "
+"easy navigation between chapters and sections in a document."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:489
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"\n"
+"            title=\"Hello\"&gt;\n"
+"\n"
+"   &lt;p:chapter number=\"1\"&gt;\n"
+"      &lt;p:title&gt;&lt;p:paragraph&gt;Hello&lt;/p:paragraph&gt;&lt;/p:"
+"title&gt;\n"
+"      &lt;p:paragraph&gt;Hello #{user.name}!&lt;/p:paragraph&gt;\n"
+"   &lt;/p:chapter&gt;\n"
+"\n"
+"   &lt;p:chapter number=\"2\"&gt;\n"
+"      &lt;p:title&gt;&lt;p:paragraph&gt;Goodbye&lt;/p:paragraph&gt;&lt;/p:"
+"title&gt;\n"
+"      &lt;p:paragraph&gt;Goodbye #{user.name}.&lt;/p:paragraph&gt;\n"
+"   &lt;/p:chapter&gt;\n"
+"\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:491
+#, no-c-format
+msgid "p:chapter and p:section"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:494
+#, no-c-format
+msgid "number"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:496
+#, no-c-format
+msgid "The chapter number. Every chapter should be assigned a chapter number."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:502
+#, no-c-format
+msgid "numberDepth"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:504
+#, no-c-format
+msgid ""
+"The depth of numbering for section. All sections are numbered relative to "
+"their surrounding chapter/sections. The fourth section of of the first "
+"section of chapter three would be section 3.1.4, if displayed at the default "
+"number depth of three. To omit the chapter number, a number depth of 2 "
+"should be used. In that case, the section number would be displayed as 1.4."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:513
+#, no-c-format
+msgid "p:title"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:514
+#, no-c-format
+msgid ""
+"Any chapter or section can contain a <literal>p:title</literal>. The title "
+"will be displayed next to the chapter/section number. The body of the title "
+"may contain raw text or may be a <literal>p:paragraph</literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:522
+#, no-c-format
+msgid "Lists"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:523
+#, no-c-format
+msgid ""
+"List structures can be displayed using the <literal>p:list</literal> and "
+"<literal>p:listItem</literal> tags. Lists may contain arbitrarily-nested "
+"sublists. List items may not be used outside of a list. he following "
+"document uses the <literal>ui:repeat</literal> tag to to display a list of "
+"values retrieved from a Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:526
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"\n"
+"            xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"            title=\"Hello\"&gt;\n"
+"   &lt;p:list style=\"numbered\"&gt;\n"
+"      &lt;ui:repeat value=\"#{documents}\" var=\"doc\"&gt;\n"
+"         &lt;p:listItem&gt;#{doc.name}&lt;/p:listItem&gt;\n"
+"      &lt;/ui:repeat&gt;\n"
+"   &lt;/p:list&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:528
+#, no-c-format
+msgid "p:list"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:529
+#, no-c-format
+msgid "<literal>p:list</literal> supports the following attributes:"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:536
+#, no-c-format
+msgid ""
+"The ordering/bulleting style of list. One of: <literal>NUMBERED</literal>, "
+"<literal>LETTERED</literal>, <literal>GREEK</literal>, <literal>ROMAN</"
+"literal>, <literal>ZAPFDINGBATS</literal>, <literal>ZAPFDINGBATS_NUMBER</"
+"literal>. If no style is given, the list items are bulleted."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:542 Itext.xml:615
+#, no-c-format
+msgid "listSymbol"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:544
+#, no-c-format
+msgid "For bulleted lists, specifies the bullet symbol."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:550 Itext.xml:822
+#, no-c-format
+msgid "indent"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:552
+#, no-c-format
+msgid "The indentation level of the list."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:558
+#, no-c-format
+msgid "lowerCase"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:560
+#, no-c-format
+msgid ""
+"For list styles using letters, indicates whether the letters should be lower "
+"case."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:566
+#, no-c-format
+msgid "charNumber"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:568
+#, no-c-format
+msgid "For ZAPFDINGBATS, indicates the character code of the bullet character."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:574
+#, no-c-format
+msgid "numberType"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:576
+#, no-c-format
+msgid "For ZAPFDINGBATS_NUMBER, indicates the numbering style."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:585
+#, no-c-format
+msgid "p:listItem"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:586
+#, no-c-format
+msgid "<literal>p:listItem</literal> supports the following attributes:"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:593
+#, no-c-format
+msgid ""
+"The alignment of the list item. (See <xref linkend=\"Document_Constants-"
+"Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:601
+#, no-c-format
+msgid "The left indentation amount."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:609
+#, no-c-format
+msgid "The right indentation amount."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:617
+#, no-c-format
+msgid "Overrides the default list symbol for this list item."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:628
+#, no-c-format
+msgid "Tables"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:629
+#, no-c-format
+msgid ""
+"Table structures can be created using the <literal>p:table</literal> and "
+"<literal>p:cell</literal> tags. Unlike many table structures, there is no "
+"explicit row declaration. If a table has 3 columns, then every 3 cells will "
+"automatically form a row. Header and footer rows can be declared, and the "
+"headers and footers will be repeated in the event a table structure spans "
+"multiple pages."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:632
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"   \n"
+"            xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"            title=\"Hello\"&gt;   \n"
+"   &lt;p:table columns=\"3\" headerRows=\"1\"&gt;\n"
+"      &lt;p:cell&gt;name&lt;/p:cell&gt;\n"
+"      &lt;p:cell&gt;owner&lt;/p:cell&gt;\n"
+"      &lt;p:cell&gt;size&lt;/p:cell&gt;\n"
+"      &lt;ui:repeat value=\"#{documents}\" var=\"doc\"&gt;\n"
+"         &lt;p:cell&gt;#{doc.name}&lt;/p:cell&gt;\n"
+"         &lt;p:cell&gt;#{doc.user.name}&lt;/p:cell&gt;\n"
+"         &lt;p:cell&gt;#{doc.size}&lt;/p:cell&gt;\n"
+"      &lt;/ui:repeat&gt;\n"
+"   &lt;/p:table&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:634
+#, no-c-format
+msgid "p:table"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:635
+#, no-c-format
+msgid "<literal>p:table</literal> supports the following attributes."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:640
+#, no-c-format
+msgid "columns"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:642
+#, no-c-format
+msgid "The number of columns (cells) that make up a table row."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:648
+#, no-c-format
+msgid "widths"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:650
+#, no-c-format
+msgid ""
+"The relative widths of each column. There should be one value for each "
+"column. For example: widths=\"2 1 1\" would indicate that there are 3 "
+"columns and the first column should be twice the size of the second and "
+"third column."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:656
+#, no-c-format
+msgid "headerRows"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:658
+#, no-c-format
+msgid ""
+"The initial number of rows which are considered to be headers or footer rows "
+"and should be repeated if the table spans multiple pages."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:664
+#, no-c-format
+msgid "footerRows"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:666
+#, no-c-format
+msgid ""
+"The number of rows that are considered to be footer rows. This value is "
+"subtracted from the <literal>headerRows</literal> value. If document has 2 "
+"rows which make up the header and one row that makes up the footer, "
+"<literal>headerRows</literal> should be set to 3 and <literal>footerRows</"
+"literal> should be set to 1"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:674
+#, no-c-format
+msgid "The percentage of the page width that the table spans."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:680 Itext.xml:777
+#, no-c-format
+msgid "horizontalAlignment"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:682
+#, no-c-format
+msgid ""
+"The horizontal alignment of the table. (See <xref linkend="
+"\"Document_Constants-Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:688
+#, no-c-format
+msgid "skipFirstHeader"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:695 Itext.xml:885
+#, no-c-format
+msgid "runDirection"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:702
+#, no-c-format
+msgid "lockedWidth"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:709
+#, no-c-format
+msgid "splitRows"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:732
+#, no-c-format
+msgid "extendLastRow"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:739
+#, no-c-format
+msgid "headersInEvent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:746
+#, no-c-format
+msgid "splitLate"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:763
+#, no-c-format
+msgid "p:cell"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:764
+#, no-c-format
+msgid "<literal>p:cell</literal> supports the following attributes."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:769
+#, no-c-format
+msgid "colspan"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:771
+#, no-c-format
+msgid ""
+"Cells can span more than one column by declaring a <literal>colspan</"
+"literal> greater than 1. Tables do not have the ability to span across "
+"multiple rows."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:779
+#, no-c-format
+msgid ""
+"The horizontal alignment of the cell. (see <xref linkend="
+"\"Document_Constants-Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:785 Itext.xml:829
+#, no-c-format
+msgid "verticalAlignment"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:787
+#, no-c-format
+msgid ""
+"The vertical alignment of the cell. (see <xref linkend=\"Document_Constants-"
+"Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:793
+#, no-c-format
+msgid "padding"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:795
+#, no-c-format
+msgid ""
+"Padding on a given side can also be specified using <literal>paddingLeft</"
+"literal>, <literal>paddingRight</literal>, <literal>paddingTop</literal> and "
+"<literal>paddingBottom</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:801
+#, no-c-format
+msgid "useBorderPadding"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:843
+#, no-c-format
+msgid "fixedHeight"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:850
+#, no-c-format
+msgid "noWrap"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:857
+#, no-c-format
+msgid "minimumHeight"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:864
+#, no-c-format
+msgid "followingIndent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:871
+#, no-c-format
+msgid "rightIndent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:878
+#, no-c-format
+msgid "spaceCharRatio"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:892
+#, no-c-format
+msgid "arabicOptions"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:899
+#, no-c-format
+msgid "useAscender"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:906
+#, no-c-format
+msgid "grayFill"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:925
+#, no-c-format
+msgid "Document Constants"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:926
+#, no-c-format
+msgid ""
+"This section documents some of the constants shared by attributes on "
+"multiple tags."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:930
+#, no-c-format
+msgid "Color Values"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:931
+#, no-c-format
+msgid ""
+"Seam documents do not yet support a full color specification. Currently, "
+"only named colors are supported. They are: <literal>white</literal>, "
+"<literal>gray</literal>, <literal>lightgray</literal>, <literal>darkgray</"
+"literal>, <literal>black</literal>, <literal>red</literal>, <literal>pink</"
+"literal>, <literal>yellow</literal>, <literal>green</literal>, "
+"<literal>magenta</literal>, <literal>cyan</literal> and <literal>blue</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:937
+#, no-c-format
+msgid "Alignment Values"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:938
+#, no-c-format
+msgid ""
+"Where alignment values are used, the Seam PDF supports the following "
+"horizontal alignment values: <literal>left</literal>, <literal>right</"
+"literal>, <literal>center</literal>, <literal>justify</literal> and "
+"<literal>justifyall</literal>. The vertical alignment values are "
+"<literal>top</literal>, <literal>middle</literal>, <literal>bottom</"
+"literal>, and <literal>baseline</literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:946
+#, no-c-format
+msgid "Configuring iText"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:947
+#, no-c-format
+msgid ""
+"Document generation works out of the box with no additional configuration "
+"needed. However, there are a few points of configuration that are needed for "
+"more serious applications."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:950
+#, no-c-format
+msgid ""
+"The default implementation serves PDF documents from a generic URL, "
+"<literal>/seam-doc.seam</literal>. Many browsers (and users) would prefer to "
+"see URLs that contain the actual PDF name like <literal>/myDocument.pdf</"
+"literal>. This capability requires some configuration. To serve PDF files, "
+"all *.pdf resources should be mapped to the Seam Servlet Filter and to the "
+"DocumentStoreServlet:"
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:953
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.servlet.SeamServletFilter&lt;/filter-"
+"class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;\n"
+"\n"
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.pdf.DocumentStoreServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"\n"
+"&lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:954
+#, no-c-format
+msgid ""
+"The <literal>useExtensions</literal> option on the document store component "
+"completes the functionality by instructing the document store to generate "
+"URLs with the correct filename extension for the document type being "
+"generated."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:957
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pdf=\"http://jboss.com/products/seam/pdf\"&gt;\n"
+"    &lt;pdf:documentStore useExtensions=\"true\" /&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:958
+#, no-c-format
+msgid ""
+"Generated documents are stored in conversation scope and will expire when "
+"the conversation ends. At that point, references to the document will be "
+"invalid. To You can specify a default view to be shown when a document does "
+"not exist using the <literal>errorPage</literal> property of the "
+"documentStore."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:961
+#, no-c-format
+msgid ""
+"&lt;pdf:documentStore useExtensions=\"true\" errorPage=\"/pdfMissing.seam\" /"
+"&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:965
+#, no-c-format
+msgid "iText links"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:966
+#, no-c-format
+msgid "For further information on iText, see:"
+msgstr ""
+
+#. Tag: ulink
+#: Itext.xml:973
+#, no-c-format
+msgid "iText Home Page"
+msgstr ""
+
+#. Tag: ulink
+#: Itext.xml:978
+#, no-c-format
+msgid "iText in Action"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Jbpm.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Jbpm.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Jbpm.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1189 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Jbpm.xml:10
+#, no-c-format
+msgid "Pageflows and business processes"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:11
+#, no-c-format
+msgid ""
+"JBoss jBPM is a business process management engine for any Java SE or EE "
+"environment. jBPM lets you represent a business process or user interaction "
+"as a graph of nodes representing wait states, decisions, tasks, web pages, "
+"etc. The graph is defined using a simple, very readable, XML dialect called "
+"jPDL, and may be edited and visualised graphically using an eclipse plugin. "
+"jPDL is an extensible language, and is suitable for a range of problems, "
+"from defining web application page flow, to traditional workflow management, "
+"all the way up to orchestration of services in a SOA environment."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:14
+#, no-c-format
+msgid "Seam applications use jBPM for two different problems:"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:20
+#, no-c-format
+msgid ""
+"Defining the pageflow involved in complex user interactions. A jPDL process "
+"definition defines the page flow for a single conversation. A Seam "
+"conversation is considered to be a relatively short-running interaction with "
+"a single user."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:25
+#, no-c-format
+msgid ""
+"Defining the overarching business process. The business process may span "
+"multiple conversations with multiple users. Its state is persistent in the "
+"jBPM database, so it is considered long-running. Coordination of the "
+"activities of multiple users is a much more complex problem than scripting "
+"an interaction with a single user, so jBPM offers sophisticated facilities "
+"for task management and dealing with multiple concurrent paths of execution."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:31
+#, no-c-format
+msgid ""
+"Don't get these two things confused ! They operate at very different levels "
+"or granularity. <emphasis>Pageflow</emphasis>, <emphasis>conversation</"
+"emphasis> and <emphasis>task</emphasis> all refer to a single interaction "
+"with a single user. A business process spans many tasks. Futhermore, the two "
+"applications of jBPM are totally orthogonal. You can use them together or "
+"independently or not at all."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:34
+#, no-c-format
+msgid ""
+"You don't have to know jDPL to use Seam. If you're perfectly happy defining "
+"pageflow using JSF or Seam navigation rules, and if your application is more "
+"data-driven that process-driven, you probably don't need jBPM. But we're "
+"finding that thinking of user interaction in terms of a well-defined "
+"graphical representation is helping us build more robust applications."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:37
+#, no-c-format
+msgid ""
+"Please refer to the jBPM documentation for a more thorough overview of the "
+"sophisticated features that jBPM provides for managing complex business "
+"processes."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:41
+#, no-c-format
+msgid "Pageflow in Seam"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:42
+#, no-c-format
+msgid "There are two ways to define pageflow in Seam:"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:47
+#, no-c-format
+msgid ""
+"Using JSF or Seam navigation rules - the <emphasis>stateless navigation "
+"model</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:52
+#, no-c-format
+msgid "Using jPDL - the <emphasis>stateful navigation model</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:57
+#, no-c-format
+msgid ""
+"Very simple applications will only need the stateless navigation model. Very "
+"complex applications will use both models in different places. Each model "
+"has its strengths and weaknesses!"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:60
+#, no-c-format
+msgid ""
+"In practice, both navigation models have their place, and you'll quickly "
+"learn to recognize when to prefer one model over the other."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:64
+#, no-c-format
+msgid "The two navigation models"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:65
+#, no-c-format
+msgid ""
+"The stateless model defines a mapping from a set of named, logical outcomes "
+"of an event directly to the resulting page of the view. The navigation rules "
+"are entirely oblivious to any state held by the application other than what "
+"page was the source of the event. This means that your action listener "
+"methods must sometimes make decisions about the page flow, since only they "
+"have access to the current state of the application."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:68
+#, no-c-format
+msgid "Here is an example page flow definition using JSF navigation rules:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:71
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"    &lt;from-view-id&gt;/numberGuess.jsp&lt;/from-view-id&gt;\n"
+"        \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;guess&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/numberGuess.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;win&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/win.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"        \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;lose&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/lose.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:72
+#, no-c-format
+msgid ""
+"Here is the same example page flow definition using Seam navigation rules:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:75
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/numberGuess.jsp\"&gt;\n"
+"        \n"
+"    &lt;navigation&gt;\n"
+"        &lt;rule if-outcome=\"guess\"&gt;\n"
+"            &lt;redirect view-id=\"/numberGuess.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"        &lt;rule if-outcome=\"win\"&gt;\n"
+"            &lt;redirect view-id=\"/win.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"        &lt;rule if-outcome=\"lose\"&gt;\n"
+"            &lt;redirect view-id=\"/lose.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:76
+#, no-c-format
+msgid ""
+"If you find navigation rules overly verbose, you can return view ids "
+"directly from your action listener methods:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:79
+#, no-c-format
+msgid ""
+"public String guess() {\n"
+"    if (guess==randomNumber) return \"/win.jsp\";\n"
+"    if (++guessCount==maxGuesses) return \"/lose.jsp\";\n"
+"    return null;\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:80
+#, no-c-format
+msgid ""
+"Note that this results in a redirect. You can even specify parameters to be "
+"used in the redirect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:83
+#, no-c-format
+msgid ""
+"public String search() {\n"
+"    return \"/searchResults.jsp?searchPattern=#{searchAction.searchPattern}"
+"\";\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:84
+#, no-c-format
+msgid ""
+"The stateful model defines a set of transitions between a set of named, "
+"logical application states. In this model, it is possible to express the "
+"flow of any user interaction entirely in the jPDL pageflow definition, and "
+"write action listener methods that are completely unaware of the flow of the "
+"interaction."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:87
+#, no-c-format
+msgid "Here is an example page flow definition using jPDL:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:90
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"numberGuess\"&gt;\n"
+"    \n"
+"   &lt;start-page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"      &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"      &lt;/transition&gt;\n"
+"   &lt;/start-page&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess."
+"correctGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateRemainingGuesses\" expression=\"#{numberGuess."
+"lastGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"lose\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"displayGuess\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"lose\" view-id=\"/lose.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:99
+#, no-c-format
+msgid "There are two things we notice immediately here:"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:104
+#, no-c-format
+msgid ""
+"The JSF/Seam navigation rules are <emphasis>much</emphasis> simpler. "
+"(However, this obscures the fact that the underlying Java code is more "
+"complex.)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:109
+#, no-c-format
+msgid ""
+"The jPDL makes the user interaction immediately understandable, without us "
+"needing to even look at the JSP or Java code."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:114
+#, no-c-format
+msgid ""
+"In addition, the stateful model is more <emphasis>constrained</emphasis>. "
+"For each logical state (each step in the page flow), there are a constrained "
+"set of possible transitions to other states. The stateless model is an "
+"<emphasis>ad hoc</emphasis> model which is suitable to relatively "
+"unconstrained, freeform navigation where the user decides where he/she wants "
+"to go next, not the application."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:117
+#, no-c-format
+msgid ""
+"The stateful/stateless navigation distinction is quite similar to the "
+"traditional view of modal/modeless interaction. Now, Seam applications are "
+"not usually modal in the simple sense of the word - indeed, avoiding "
+"application modal behavior is one of the main reasons for having "
+"conversations! However, Seam applications can be, and often are, modal at "
+"the level of a particular conversation. It is well-known that modal behavior "
+"is something to avoid as much as possible; it is very difficult to predict "
+"the order in which your users are going to want to do things! However, there "
+"is no doubt that the stateful model has its place."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:120
+#, no-c-format
+msgid ""
+"The biggest contrast between the two models is the back-button behavior."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:126
+#, no-c-format
+msgid "Seam and the back button"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:127
+#, no-c-format
+msgid ""
+"When JSF or Seam navigation rules are used, Seam lets the user freely "
+"navigate via the back, forward and refresh buttons. It is the responsibility "
+"of the application to ensure that conversational state remains internally "
+"consistent when this occurs. Experience with the combination of web "
+"application frameworks like Struts or WebWork - that do not support a "
+"conversational model - and stateless component models like EJB stateless "
+"session beans or the Spring framework has taught many developers that this "
+"is close to impossible to do! However, our experience is that in the context "
+"of Seam, where there is a well-defined conversational model, backed by "
+"stateful session beans, it is actually quite straightforward. Usually it is "
+"as simple as combining the use of <literal>no-conversation-view-id</literal> "
+"with null checks at the beginning of action listener methods. We consider "
+"support for freeform navigation to be almost always desirable."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:130
+#, no-c-format
+msgid ""
+"In this case, the <literal>no-conversation-view-id</literal> declaration "
+"goes in <literal>pages.xml</literal>. It tells Seam to redirect to a "
+"different page if a request originates from a page rendered during a "
+"conversation, and that conversation no longer exists:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:133
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/checkout.xhtml\" \n"
+"        no-conversation-view-id=\"/main.xhtml\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:134
+#, no-c-format
+msgid ""
+"On the other hand, in the stateful model, backbuttoning is interpreted as an "
+"undefined transition back to a previous state. Since the stateful model "
+"enforces a defined set of transitions from the current state, back buttoning "
+"is be default disallowed in the stateful model! Seam transparently detects "
+"the use of the back button, and blocks any attempt to perform an action from "
+"a previous, \"stale\" page, and simply redirects the user to the \"current\" "
+"page (and displays a faces message). Whether you consider this a feature or "
+"a limitation of the stateful model depends upon your point of view: as an "
+"application developer, it is a feature; as a user, it might be frustrating! "
+"You can enable backbutton navigation from a particular page node by setting "
+"<literal>back=\"enabled\"</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:137
+#, no-c-format
+msgid ""
+"&lt;page name=\"checkout\" \n"
+"        view-id=\"/checkout.xhtml\" \n"
+"        back=\"enabled\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"checkout\"/&gt;\n"
+"    &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:138
+#, no-c-format
+msgid ""
+"This allows backbuttoning <emphasis>from</emphasis> the <literal>checkout</"
+"literal> state to <emphasis>any previous state!</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:141
+#, no-c-format
+msgid ""
+"Of course, we still need to define what happens if a request originates from "
+"a page rendered during a pageflow, and the conversation with the pageflow no "
+"longer exists. In this case, the <literal>no-conversation-view-id</literal> "
+"declaration goes into the pageflow definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:144
+#, no-c-format
+msgid ""
+"&lt;page name=\"checkout\" \n"
+"        view-id=\"/checkout.xhtml\" \n"
+"        back=\"enabled\" \n"
+"        no-conversation-view-id=\"/main.xhtml\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"checkout\"/&gt;\n"
+"    &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:151
+#, no-c-format
+msgid "Using jPDL pageflows"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:153
+#, no-c-format
+msgid "Installing pageflows"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:154
+#, no-c-format
+msgid ""
+"We need to install the Seam jBPM-related components, and tell them where to "
+"find our pageflow definition. We can specify this Seam configuration in "
+"<literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:157
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:pageflow-definitions&gt;\n"
+"        &lt;value&gt;pageflow.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:pageflow-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:158
+#, no-c-format
+msgid ""
+"The first line installs jBPM, the second points to a jPDL-based pageflow "
+"definition."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:164
+#, no-c-format
+msgid "Starting pageflows"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:165
+#, no-c-format
+msgid ""
+"We \"start\" a jPDL-based pageflow by specifying the name of the process "
+"definition using a <literal>@Begin</literal>, <literal>@BeginTask</literal> "
+"or <literal>@StartTask</literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:168
+#, no-c-format
+msgid ""
+"@Begin(pageflow=\"numberguess\")\n"
+"public void begin() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:169
+#, no-c-format
+msgid "Alternatively we can start a pageflow using pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:172
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"        &lt;begin-conversation pageflow=\"numberguess\"/&gt;\n"
+"    &lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:173
+#, no-c-format
+msgid ""
+"If we are beginning the pageflow during the <literal>RENDER_RESPONSE</"
+"literal> phase&mdash;during a <literal>@Factory</literal> or "
+"<literal>@Create</literal> method, for example&mdash;we consider ourselves "
+"to be already at the page being rendered, and use a <literal>&lt;start-"
+"page&gt;</literal> node as the first node in the pageflow, as in the example "
+"above."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:176
+#, no-c-format
+msgid ""
+"But if the pageflow is begun as the result of an action listener invocation, "
+"the outcome of the action listener determines which is the first page to be "
+"rendered. In this case, we use a <literal>&lt;start-state&gt;</literal> as "
+"the first node in the pageflow, and declare a transition for each possible "
+"outcome:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:179
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"viewEditDocument\"&gt;\n"
+"\n"
+"    &lt;start-state name=\"start\"&gt;\n"
+"        &lt;transition name=\"documentFound\" to=\"displayDocument\"/&gt;\n"
+"        &lt;transition name=\"documentNotFound\" to=\"notFound\"/&gt;\n"
+"    &lt;/start-state&gt;\n"
+"    \n"
+"    &lt;page name=\"displayDocument\" view-id=\"/document.jsp\"&gt;\n"
+"        &lt;transition name=\"edit\" to=\"editDocument\"/&gt;\n"
+"        &lt;transition name=\"done\" to=\"main\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"    \n"
+"    ...\n"
+"    \n"
+"    &lt;page name=\"notFound\" view-id=\"/404.jsp\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"    &lt;/page&gt;\n"
+"    \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:183
+#, no-c-format
+msgid "Page nodes and transitions"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:184
+#, no-c-format
+msgid ""
+"Each <literal>&lt;page&gt;</literal> node represents a state where the "
+"system is waiting for user input:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:187
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"        &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:188
+#, no-c-format
+msgid ""
+"The <literal>view-id</literal> is the JSF view id. The <literal>&lt;redirect/"
+"&gt;</literal> element has the same effect as <literal>&lt;redirect/&gt;</"
+"literal> in a JSF navigation rule: namely, a post-then-redirect behavior, to "
+"overcome problems with the browser's refresh button. (Note that Seam "
+"propagates conversation contexts over these browser redirects. So there is "
+"no need for a Ruby on Rails style \"flash\" construct in Seam!)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:191
+#, no-c-format
+msgid ""
+"The transition name is the name of a JSF outcome triggered by clicking a "
+"command button or command link in <literal>numberGuess.jsp</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:194
+#, no-c-format
+msgid ""
+"&lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"guess\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:195
+#, no-c-format
+msgid ""
+"When the transition is triggered by clicking this button, jBPM will activate "
+"the transition action by calling the <literal>guess()</literal> method of "
+"the <literal>numberGuess</literal> component. Notice that the syntax used "
+"for specifying actions in the jPDL is just a familiar JSF EL expression, and "
+"that the transition action handler is just a method of a Seam component in "
+"the current Seam contexts. So we have exactly the same event model for jBPM "
+"events that we already have for JSF events! (The <emphasis>One Kind of "
+"Stuff</emphasis> principle.)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:198
+#, no-c-format
+msgid ""
+"In the case of a null outcome (for example, a command button with no "
+"<literal>action</literal> defined), Seam will signal the transition with no "
+"name if one exists, or else simply redisplay the page if all transitions "
+"have names. So we could slightly simplify our example pageflow and this "
+"button:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:201
+#, no-c-format
+msgid "&lt;h:commandButton type=\"submit\" value=\"Guess\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:202
+#, no-c-format
+msgid "Would fire the following un-named transition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:205
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"evaluateGuess\"&gt;\n"
+"        &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:206
+#, no-c-format
+msgid ""
+"It is even possible to have the button call an action method, in which case "
+"the action outcome will determine the transition to be taken:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:209
+#, no-c-format
+msgid ""
+"&lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"#{numberGuess."
+"guess}\"/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:210
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;transition name=\"correctGuess\" to=\"win\"/&gt;\n"
+"    &lt;transition name=\"incorrectGuess\" to=\"evaluateGuess\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:211
+#, no-c-format
+msgid ""
+"However, this is considered an inferior style, since it moves responsibility "
+"for controlling the flow out of the pageflow definition and back into the "
+"other components. It is much better to centralize this concern in the "
+"pageflow itself."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:217
+#, no-c-format
+msgid "Controlling the flow"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:218
+#, no-c-format
+msgid ""
+"Usually, we don't need the more powerful features of jPDL when defining "
+"pageflows. We do need the <literal>&lt;decision&gt;</literal> node, however:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:221
+#, no-c-format
+msgid ""
+"&lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess.correctGuess}"
+"\"&gt;\n"
+"    &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"    &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"&lt;/decision&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:222
+#, no-c-format
+msgid ""
+"A decision is made by evaluating a JSF EL expression in the Seam contexts."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:228
+#, no-c-format
+msgid "Ending the flow"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:229
+#, no-c-format
+msgid ""
+"We end the conversation using <literal>&lt;end-conversation&gt;</literal> or "
+"<literal>@End</literal>. (In fact, for readability, use of <emphasis>both</"
+"emphasis> is encouraged.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:232
+#, no-c-format
+msgid ""
+"&lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;end-conversation/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:233
+#, no-c-format
+msgid ""
+"Optionally, we can end a task, specify a jBPM <literal>transition</literal> "
+"name. In this case, Seam will signal the end of the current task in the "
+"overarching business process."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:236
+#, no-c-format
+msgid ""
+"&lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;end-task transition=\"success\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:242
+#, no-c-format
+msgid "Business process management in Seam"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:243
+#, no-c-format
+msgid ""
+"A business process is a well-defined set of tasks that must be performed by "
+"users or software systems according to well-defined rules about "
+"<emphasis>who</emphasis> can perform a task, and <emphasis>when</emphasis> "
+"it should be performed. Seam's jBPM integration makes it easy to display "
+"lists of tasks to users and let them manage their tasks. Seam also lets the "
+"application store state associated with the business process in the "
+"<literal>BUSINESS_PROCESS</literal> context, and have that state made "
+"persistent via jBPM variables."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:246
+#, no-c-format
+msgid ""
+"A simple business process definition looks much the same as a page flow "
+"definition (<emphasis>One Kind of Stuff</emphasis>), except that instead of "
+"<literal>&lt;page&gt;</literal> nodes, we have <literal>&lt;task-node&gt;</"
+"literal> nodes. In a long-running business process, the wait states are "
+"where the system is waiting for some user to log in and perform a task."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:249
+#, no-c-format
+msgid ""
+"&lt;process-definition name=\"todo\"&gt;\n"
+"   \n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"todo\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;task-node name=\"todo\"&gt;\n"
+"      &lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"         &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"      &lt;/task&gt;\n"
+"      &lt;transition to=\"done\"/&gt;\n"
+"   &lt;/task-node&gt;\n"
+"   \n"
+"   &lt;end-state name=\"done\"/&gt;\n"
+"   \n"
+"&lt;/process-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:260
+#, no-c-format
+msgid ""
+"It is perfectly possible that we might have both jPDL business process "
+"definitions and jPDL pageflow definitions in the same project. If so, the "
+"relationship between the two is that a single <literal>&lt;task&gt;</"
+"literal> in a business process corresponds to a whole pageflow <literal>&lt;"
+"pageflow-definition&gt;</literal>"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:265
+#, no-c-format
+msgid "Using jPDL business process definitions"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:267
+#, no-c-format
+msgid "Installing process definitions"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:268
+#, no-c-format
+msgid ""
+"We need to install jBPM, and tell it where to find the business process "
+"definitions:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:271
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;todo.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:275
+#, no-c-format
+msgid "Initializing actor ids"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:276
+#, no-c-format
+msgid ""
+"We always need to know what user is currently logged in. jBPM \"knows\" "
+"users by their <emphasis>actor id</emphasis> and <emphasis>group actor ids</"
+"emphasis>. We specify the current actor ids using the built in Seam "
+"component named <literal>actor</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:279
+#, no-c-format
+msgid ""
+"@In Actor actor;\n"
+"\n"
+"public String login() {\n"
+"    ...\n"
+"    actor.setId( user.getUserName() );\n"
+"    actor.getGroupActorIds().addAll( user.getGroupNames() );\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:283
+#, no-c-format
+msgid "Initiating a business process"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:284
+#, no-c-format
+msgid ""
+"To initiate a business process instance, we use the <literal>@CreateProcess</"
+"literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:287
+#, no-c-format
+msgid ""
+"@CreateProcess(definition=\"todo\")\n"
+"public void createTodo() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:288
+#, no-c-format
+msgid "Alternatively we can initiate a business process using pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:291
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;create-process definition=\"todo\" /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:295
+#, no-c-format
+msgid "Task assignment"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:296
+#, no-c-format
+msgid ""
+"When a process starts, task instances are created. These must be assigned to "
+"users or user groups. We can either hardcode our actor ids, or delegate to a "
+"Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:299
+#, no-c-format
+msgid ""
+"&lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"    &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"&lt;/task&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:300
+#, no-c-format
+msgid ""
+"In this case, we have simply assigned the task to the current user. We can "
+"also assign tasks to a pool:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:303
+#, no-c-format
+msgid ""
+"&lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"    &lt;assignment pooled-actors=\"employees\"/&gt;\n"
+"&lt;/task&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:307
+#, no-c-format
+msgid "Task lists"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:308
+#, no-c-format
+msgid ""
+"Several built-in Seam components make it easy to display task lists. The "
+"<literal>pooledTaskInstanceList</literal> is a list of pooled tasks that "
+"users may assign to themselves:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:311
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{pooledTaskInstanceList}\" var=\"task\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Description&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{task.description}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link action=\"#{pooledTask.assignToCurrentActor}\" value="
+"\"Assign\" taskInstance=\"#{task}\"/&gt;\n"
+"    &lt;/h:column&gt;            \n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:312
+#, no-c-format
+msgid ""
+"Note that instead of <literal>&lt;s:link&gt;</literal> we could have used a "
+"plain JSF <literal>&lt;h:commandLink&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:315
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"#{pooledTask.assignToCurrentActor}\"&gt; \n"
+"    &lt;f:param name=\"taskId\" value=\"#{task.id}\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:316
+#, no-c-format
+msgid ""
+"The <literal>pooledTask</literal> component is a built-in component that "
+"simply assigns the task to the current user."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:319
+#, no-c-format
+msgid ""
+"The <literal>taskInstanceListByType</literal> component includes tasks of a "
+"particular type that are assigned to the current user:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:322
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{taskInstanceListByType['todo']}\" var=\"task"
+"\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Description&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{task.description}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link action=\"#{todoList.start}\" value=\"Start Work\" "
+"taskInstance=\"#{task}\"/&gt;\n"
+"    &lt;/h:column&gt;            \n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:326
+#, no-c-format
+msgid "Performing a task"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:327
+#, no-c-format
+msgid ""
+"To begin work on a task, we use either <literal>@StartTask</literal> or "
+"<literal>@BeginTask</literal> on the listener method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:330
+#, no-c-format
+msgid ""
+"@StartTask\n"
+"public String start() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:331
+#, no-c-format
+msgid "Alternatively we can begin work on a task using pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:334
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;start-task /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:335
+#, no-c-format
+msgid ""
+"These annotations begin a special kind of conversation that has significance "
+"in terms of the overarching business process. Work done by this conversation "
+"has access to state held in the business process context."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:338
+#, no-c-format
+msgid ""
+"If we end the conversation using <literal>@EndTask</literal>, Seam will "
+"signal the completion of the task:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:341
+#, no-c-format
+msgid ""
+"@EndTask(transition=\"completed\")\n"
+"public String completed() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:342
+#, no-c-format
+msgid "Alternatively we can use pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:345
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;end-task transition=\"completed\" /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:346
+#, no-c-format
+msgid ""
+"(Alternatively, we could have used <literal>&lt;end-conversation&gt;</"
+"literal> as shown above.)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:349
+#, no-c-format
+msgid ""
+"At this point, jBPM takes over and continues executing the business process "
+"definition. (In more complex processes, several tasks might need to be "
+"completed before process execution can resume.)"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Jms.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Jms.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Jms.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,477 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Jms.xml:10
+#, no-c-format
+msgid "Asynchronicity and messaging"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:11
+#, no-c-format
+msgid ""
+"Seam makes it very easy to perform work asynchronously from a web request. "
+"When most people think of asynchronicity in Java EE, they think of using "
+"JMS. This is certainly one way to approach the problem in Seam, and is the "
+"right way when you have strict and well-defined quality of service "
+"requirements. Seam makes it easy to send and recieve JMS messages using Seam "
+"components."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:14
+#, no-c-format
+msgid ""
+"But for many usecases, JMS is overkill. Seam layers a simple asynchronous "
+"method and event facility over the EJB 3.0 timer service."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:17
+#, no-c-format
+msgid "Asynchronicity"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:18
+#, no-c-format
+msgid ""
+"Asynchronous events and method calls have the same quality of service "
+"expectations as the container's EJB timer service. If you're not familiar "
+"with the Timer service, don't worry, you don't need to interact with it "
+"directly if you want to use asynchronous methods in Seam."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:21
+#, no-c-format
+msgid ""
+"To use asynchronous methods and events, you need to add the following line "
+"to <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:24
+#, no-c-format
+msgid "&lt;core:dispatcher/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:25
+#, no-c-format
+msgid ""
+"Note that this functionality is not available in environments which do not "
+"support EJB 3.0."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:28
+#, no-c-format
+msgid "Asynchronous methods"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:29
+#, no-c-format
+msgid ""
+"In simplest form, an asynchronous call just lets a method call be processed "
+"asynchronously (in a different thread) from the caller. We usually use an "
+"asynchronous call when we want to return an immediate response to the "
+"client, and let some expensive work be processed in the background. This "
+"pattern works very well in applications which use AJAX, where the client can "
+"automatically poll the server for the result of the work."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:32
+#, no-c-format
+msgid ""
+"For EJB components, we annotate the local interface to specify that a method "
+"is processed asynchronously."
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:35
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public void processPayment(Payment payment);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:36
+#, no-c-format
+msgid ""
+"(For JavaBean components we can annotate the component implementation class "
+"if we like.)"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:39
+#, no-c-format
+msgid "The use of asynchronicity is transparent to the bean class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:42
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"paymentHandler\")\n"
+"public class PaymentHandlerBean implements PaymentHandler\n"
+"{\n"
+"    public void processPayment(Payment payment)\n"
+"    {\n"
+"        //do some work!\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:43
+#, no-c-format
+msgid "And also transparent to the client:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:46
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String pay()\n"
+"    {\n"
+"        paymentHandler.processPayment( new Payment(bill) );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:47
+#, no-c-format
+msgid ""
+"The asynchronous method is processed in a completely new event context and "
+"does not have access to the session or conversation context state of the "
+"caller. However, the business process context <emphasis>is</emphasis> "
+"propagated."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:50
+#, no-c-format
+msgid ""
+"Asynchronous method calls may be scheduled for later execution using the "
+"<literal>@Duration</literal>, <literal>@Expiration</literal> and "
+"<literal>@IntervalDuration</literal> annotations."
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:53
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public void processScheduledPayment(Payment payment, @Expiration Date "
+"date);\n"
+"\n"
+"    @Asynchronous\n"
+"    public void processRecurringPayment(Payment payment, @Expiration Date "
+"date, \n"
+"        @IntervalDuration Long interval)'\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:54
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String schedulePayment()\n"
+"    {\n"
+"        paymentHandler.processScheduledPayment( new Payment(bill), bill."
+"getDueDate() );\n"
+"        return \"success\";\n"
+"    }\n"
+"\n"
+"    public String scheduleRecurringPayment()\n"
+"    {\n"
+"        paymentHandler.processRecurringPayment( new Payment(bill), bill."
+"getDueDate(), ONE_MONTH );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:55
+#, no-c-format
+msgid ""
+"Both client and server may access the <literal>Timer</literal> object "
+"associated with the invocation."
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:58
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public Timer processScheduledPayment(Payment payment, @Expiration Date "
+"date);\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:59
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"paymentHandler\")\n"
+"public class PaymentHandlerBean implements PaymentHandler\n"
+"{\n"
+"    @In Timer timer;\n"
+"    \n"
+"    public Timer processScheduledPayment(Payment payment, @Expiration Date "
+"date)\n"
+"    {\n"
+"        //do some work!\n"
+"        \n"
+"        return timer; //note that return value is completely ignored\n"
+"    }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:60
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String schedulePayment()\n"
+"    {\n"
+"        Timer timer = paymentHandler.processScheduledPayment( new Payment"
+"(bill), bill.getDueDate() );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:61
+#, no-c-format
+msgid "Asynchronous methods cannot return any other value to the caller."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:64
+#, no-c-format
+msgid "Asynchronous events"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:65
+#, no-c-format
+msgid ""
+"Component-driven events may also be asynchronous. To raise an event for "
+"asynchronous processing, simply call the <literal>raiseAsynchronousEvent()</"
+"literal> methods of the <literal>Events</literal> class. To schedule a timed "
+"event, call one of the <literal>raiseTimedEvent()</literal> methods. "
+"Components may observe asynchronous events in the usual way, but remember "
+"that only the business process context is propagated to the asynchronous "
+"thread."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:68
+#, no-c-format
+msgid "Messaging in Seam"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:69
+#, no-c-format
+msgid ""
+"Seam makes it easy to send and receive JMS messages to and from Seam "
+"components."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:72
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:73
+#, no-c-format
+msgid ""
+"To configure Seam's infrastructure for sending JMS messages, you need to "
+"tell Seam about any topics and queues you want to send messages to, and also "
+"tell Seam where to find the <literal>QueueConnectionFactory</literal> and/or "
+"<literal>TopicConnectionFactory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:76
+#, no-c-format
+msgid ""
+"Seam defaults to using <literal>UIL2ConnectionFactory</literal> which is the "
+"usual connection factory for use with JBossMQ. If you are using some other "
+"JMS provider, you need to set one or both of <literal>queueConnection."
+"queueConnectionFactoryJndiName</literal> and <literal>topicConnection."
+"topicConnectionFactoryJndiName</literal> in <literal>seam.properties</"
+"literal>, <literal>web.xml</literal> or <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:79
+#, no-c-format
+msgid ""
+"You also need to list topics and queues in <literal>components.xml</literal> "
+"to install Seam managed <literal>TopicPublisher</literal>s and "
+"<literal>QueueSender</literal>s:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:82
+#, no-c-format
+msgid ""
+"&lt;jms:managed-topic-publisher name=\"stockTickerPublisher\" auto-create="
+"\"true\" \n"
+"    topic-jndi-name=\"topic/stockTickerTopic\"/&gt;\n"
+"\n"
+"&lt;jms:managed-queue-sender name=\"paymentQueueSender\" auto-create=\"true"
+"\" \n"
+"    queue-jndi-name=\"queue/paymentQueue\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:83
+#, no-c-format
+msgid "Sending messages"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:84
+#, no-c-format
+msgid ""
+"Now, you can inject a JMS <literal>TopicPublisher</literal> and "
+"<literal>TopicSession</literal> into any component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:87
+#, no-c-format
+msgid ""
+"@In \n"
+"private TopicPublisher stockTickerPublisher;   \n"
+"@In \n"
+"private TopicSession topicSession;\n"
+"\n"
+"public void publish(StockPrice price) {\n"
+"      try\n"
+"      {\n"
+"         topicPublisher.publish( topicSession.createObjectMessage(price) );\n"
+"      } \n"
+"      catch (Exception ex)\n"
+"      {\n"
+"         throw new RuntimeException(ex);\n"
+"      } \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:88
+#, no-c-format
+msgid "Or, for working with a queue:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:91
+#, no-c-format
+msgid ""
+"@In\n"
+"private QueueSender paymentQueueSender;   \n"
+"@In\n"
+"private QueueSession queueSession;\n"
+"\n"
+"public void publish(Payment payment) {\n"
+"      try\n"
+"      {\n"
+"         paymentQueueSender.send( queueSession.createObjectMessage"
+"(payment) );\n"
+"      } \n"
+"      catch (Exception ex)\n"
+"      {\n"
+"         throw new RuntimeException(ex);\n"
+"      } \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:92
+#, no-c-format
+msgid "Receiving messages using a message-driven bean"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:93
+#, no-c-format
+msgid ""
+"You can process messages using any EJB3 message driven bean. Message-driven "
+"beans may even be Seam components, in which case it is possible to inject "
+"other event and application scoped Seam components."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:96
+#, no-c-format
+msgid "Receiving messages in the client"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:97
+#, no-c-format
+msgid ""
+"Seam Remoting lets you subscribe to a JMS topic from client-side JavaScript. "
+"This is described in the next chapter."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Mail.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Mail.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Mail.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,985 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Mail.xml:10
+#, no-c-format
+msgid "Email"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:11
+#, no-c-format
+msgid ""
+"Seam now includes an optional components for templating and sending emails."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:14
+#, no-c-format
+msgid ""
+"Email support is provided by <literal>jboss-seam-mail.jar</literal>. This "
+"JAR contains the mail JSF controls, which are used to construct emails, and "
+"the <literal>mailSession</literal> manager component."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:17
+#, no-c-format
+msgid ""
+"The examples/mail project contains an example of the email support in "
+"action. It demonstrates proper packaging, and it contains a number of "
+"example that demonstrate the key features currently supported."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:21
+#, no-c-format
+msgid "Creating a message"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:22
+#, no-c-format
+msgid ""
+"You don't need to learn a whole new templating language to use Seam "
+"Mail&mdash;an email is just facelet!"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:25
+#, no-c-format
+msgid ""
+"&lt;m:message xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"    xmlns:m=\"http://jboss.com/products/seam/mail\"\n"
+"    xmlns:h=\"http://java.sun.com/jsf/html\"&gt;\n"
+"  \n"
+"    &lt;m:from name=\"Peter\" address=\"peter at example.com\" /&gt;\n"
+"    &lt;m:to name=\"#{person.firstname} #{person.lastname}\"&gt;#{person."
+"address}&lt;/m:to&gt;\n"
+"    &lt;m:subject&gt;Try out Seam!&lt;/m:subject&gt;\n"
+"    \n"
+"    &lt;m:body&gt;\n"
+"        &lt;p&gt;&lt;h:outputText value=\"Dear #{person.firstname}\" /&gt;,"
+"&lt;/p&gt;\n"
+"        &lt;p&gt;You can try out Seam by visiting \n"
+"        &lt;a href=\"http://labs.jboss.com/jbossseam\"&gt;http://labs.jboss."
+"com/jbossseam&lt;/a&gt;.&lt;/p&gt;\n"
+"        &lt;p&gt;Regards,&lt;/p&gt;\n"
+"        &lt;p&gt;Peter&lt;/p&gt;\n"
+"    &lt;/m:body&gt;\n"
+"    \n"
+"&lt;/m:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:26
+#, no-c-format
+msgid ""
+"The <literal>&lt;m:message&gt;</literal> tag wraps the whole message, and "
+"tells Seam to start rendering an email. Inside the <literal>&lt;m:message&gt;"
+"</literal> tag we use an <literal>&lt;m:from&gt;</literal> tag to set who "
+"the message is from, a <literal>&lt;m:to&gt;</literal> tag to specify a "
+"sender (notice how we use EL as we would in a normal facelet), and a "
+"<literal>&lt;m:subject&gt;</literal> tag."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:29
+#, no-c-format
+msgid ""
+"The <literal>&lt;m:body&gt;</literal> tag wraps the body of the email. You "
+"can use regular HTML tags inside the body as well as JSF components."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:32
+#, no-c-format
+msgid ""
+"So, now you have your email template, how do you go about sending it? Well, "
+"at the end of rendering the <literal>m:message</literal> the "
+"<literal>mailSession</literal> is called to send the email, so all you have "
+"to do is ask Seam to render the view:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:35
+#, no-c-format
+msgid ""
+"@In(create=true)\n"
+"private Renderer renderer;\n"
+"   \n"
+"public void send() {\n"
+"    try {\n"
+"       renderer.render(\"/simple.xhtml\");\n"
+"       facesMessages.add(\"Email sent successfully\");\n"
+"   } \n"
+"   catch (Exception e) {\n"
+"       facesMessages.add(\"Email sending failed: \" + e.getMessage());\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:36
+#, no-c-format
+msgid ""
+"If, for example, you entered an invalid email address, then an exception "
+"would be thrown, which is caught and then displayed to the user."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:40
+#, no-c-format
+msgid "Attachments"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:41
+#, no-c-format
+msgid ""
+"Seam makes it easy to attach files to an email. It supports most of the "
+"standard java types used when working with files."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:44
+#, no-c-format
+msgid "If you wanted to email the <literal>jboss-seam-mail.jar</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:47
+#, no-c-format
+msgid "&lt;m:attachment value=\"/WEB-INF/lib/jboss-seam-mail.jar\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:48
+#, no-c-format
+msgid ""
+"Seam will load the file from the classpath, and attach it to the email. By "
+"default it would be attached as <literal>jboss-seam-mail.jar</literal>; if "
+"you wanted it to have another name you would just add the <literal>fileName</"
+"literal> attribute:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:51
+#, no-c-format
+msgid ""
+"&lt;m:attachment value=\"/WEB-INF/lib/jboss-seam-mail.jar\" fileName=\"this-"
+"is-so-cool.jar\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:52
+#, no-c-format
+msgid ""
+"You could also attach a <literal>java.io.File</literal>, a <literal>java.net."
+"URL</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:55
+#, no-c-format
+msgid "&lt;m:attachment value=\"#{numbers}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:56
+#, no-c-format
+msgid ""
+"Or a <literal>byte[]</literal> or a <literal>java.io.InputStream</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:59
+#, no-c-format
+msgid ""
+"&lt;m:attachment value=\"#{person.photo}\" contentType=\"image/png\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:60
+#, no-c-format
+msgid ""
+"You'll notice that for a <literal>byte[]</literal> and a <literal>java.io."
+"InputStream</literal> you need to specify the MIME type of the attachment "
+"(as that information is not carried as part of the file)."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:63
+#, no-c-format
+msgid ""
+"And it gets even better, you can attach a Seam generated PDF, or any "
+"standard JSF view, just by wrapping a <literal>&lt;m:attachment&gt;</"
+"literal> around the normal tags you would use:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:66
+#, no-c-format
+msgid ""
+"&lt;m:attachment fileName=\"tiny.pdf\"&gt;\n"
+"    &lt;p:"
+"document&gt;                                                      \n"
+"        A very tiny "
+"PDF                                                                                                \n"
+"    &lt;/p:document&gt;\n"
+"&lt;/m:attachment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:67
+#, no-c-format
+msgid ""
+"If you had a set of files you wanted to attach (for example a set of "
+"pictures loaded from a database) you can just use a <literal>&lt;ui:"
+"repeat&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:70
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{people}\" var=\"person\"&gt;\n"
+"    &lt;m:attachment value=\"#{person.photo}\" contentType=\"image/jpeg\"\n"
+"    fileName=\"#{person.firstname}_#{person.lastname}.jpg\"/&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:74
+#, no-c-format
+msgid "HTML/Text alternative part"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:75
+#, no-c-format
+msgid ""
+"Whilst most mail readers nowadays support HTML, some don't, so you can add a "
+"plain text alternative to your email body:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:78
+#, no-c-format
+msgid ""
+"&lt;m:body&gt;\n"
+"    &lt;f:facet name=\"alternative\"&gt;Sorry, your email reader can't show "
+"our fancy email, \n"
+"please go to http://labs.jboss.com/jbossseam to explore Seam.&lt;/f:"
+"facet&gt;\n"
+"&lt;/m:body&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:82
+#, no-c-format
+msgid "Multiple recipients"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:83
+#, no-c-format
+msgid ""
+"Often you'll want to send an email to a group of recipients (for example "
+"your users). All of the recipient mail tags can be placed inside a "
+"<literal>&lt;ui:repeat&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:86
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{allUsers} var=\"user\"&gt;\n"
+"    &lt;m:to name=\"#{user.firstname} #{user.lastname}\" address=\"#{user."
+"emailAddress}\" /&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:90
+#, no-c-format
+msgid "Multiple messages"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:91
+#, no-c-format
+msgid ""
+"Sometimes, however, you need to send a slightly different message to each "
+"recipient (e.g. a password reset). The best way to do this is to place the "
+"whole message inside a <literal>&lt;ui:repeat&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:94
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{people}\" var=\"p\"&gt;\n"
+"    &lt;m:message&gt;\n"
+"        &lt;m:from name=\"#{person.firstname} #{person.lastname}\"&gt;#"
+"{person.address}&lt;/m:from&gt;\n"
+"        &lt;m:to name=\"#{p.firstname}\"&gt;#{p.address}&lt;/m:to&gt;\n"
+"            ...\n"
+"    &lt;/m:message&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:98
+#, no-c-format
+msgid "Templating"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:99
+#, no-c-format
+msgid ""
+"The mail templating example shows that facelets templating Just Works with "
+"the Seam mail tags."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:102
+#, no-c-format
+msgid "Our <literal>template.xhtml</literal> contains:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:105
+#, no-c-format
+msgid ""
+"&lt;m:message&gt;\n"
+"   &lt;m:from name=\"Seam\" address=\"do-not-reply at jboss.com\" /&gt;\n"
+"   &lt;m:to name=\"#{person.firstname} #{person.lastname}\"&gt;#{person."
+"address}&lt;/m:to&gt;\n"
+"   &lt;m:subject&gt;#{subject}&lt;/m:subject&gt;\n"
+"   &lt;m:body&gt;\n"
+"       &lt;html&gt;\n"
+"           &lt;body&gt;\n"
+"               &lt;ui:insert name=\"body\"&gt;This is the default body, "
+"specified by the template.\n"
+"               &lt;/ui:insert&gt;\n"
+"           &lt;/body&gt;\n"
+"       &lt;/html&gt;\n"
+"   &lt;/m:body&gt;\n"
+"&lt;/m:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:106
+#, no-c-format
+msgid "Our <literal>templating.xhtml</literal> contains:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:109
+#, no-c-format
+msgid ""
+"&lt;ui:param name=\"subject\" value=\"Templating with Seam Mail\"/&gt;\n"
+"&lt;ui:define name=\"body\"&gt;\n"
+"    &lt;p&gt;This example demonstrates that you can easily use &lt;i&gt;"
+"facelets templating&lt;/i&gt; in email!&lt;/p&gt;\n"
+"&lt;/ui:define&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:113
+#, no-c-format
+msgid "Other Headers"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:114
+#, no-c-format
+msgid ""
+"Sometimes you'll want to add other headers to your email. Seam provides "
+"support for some (see <xref linkend=\"Email-Tags\"/>). For example, we can "
+"set the importance of the email, and ask for a read receipt:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:117
+#, no-c-format
+msgid ""
+"&lt;m:message xmlns:m=\"http://jboss.com/products/seam/mail\"\n"
+"           importance=\"low\"\n"
+"           requestReadReceipt=\"true\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:118
+#, no-c-format
+msgid ""
+"Otherise you can add any header to the message using the <literal>&lt;m:"
+"header&gt;</literal> tag:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:121
+#, no-c-format
+msgid "&lt;m:header name=\"X-Sent-From\" value=\"JBoss Seam\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:127
+#, no-c-format
+msgid "Receiving emails"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:128
+#, no-c-format
+msgid ""
+"If you are using EJB then you can use a MDB (Message Driven Bean) to receive "
+"email. Seam comes with an improved version of <literal>mail-ra.rar</literal> "
+"as distributed in JBoss AS; until the improvements make there way into a "
+"released version of JBoss AS, replacing the default <literal>rar</literal> "
+"with the one distributed with Seam is recommended."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:131
+#, no-c-format
+msgid "You can configure it like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:134
+#, no-c-format
+msgid ""
+"@MessageDriven(activationConfig={\n"
+"         @ActivationConfigProperty(propertyName=\"mailServer\", "
+"propertyValue=\"localhost\"),\n"
+"         @ActivationConfigProperty(propertyName=\"mailFolder\", "
+"propertyValue=\"INBOX\"),\n"
+"         @ActivationConfigProperty(propertyName=\"storeProtocol\", "
+"propertyValue=\"pop3\"),\n"
+"         @ActivationConfigProperty(propertyName=\"userName\", propertyValue="
+"\"seam\"),\n"
+"         @ActivationConfigProperty(propertyName=\"password\", propertyValue="
+"\"seam\")\n"
+"})\n"
+"@ResourceAdapter(\"mail-ra.rar\")\n"
+"@Name(\"mailListener\")\n"
+"public class MailListenerMDB implements MailListener {\n"
+"\n"
+"   @In(create=true)\n"
+"   private OrderProcessor orderProcessor;\n"
+"\n"
+"   public void onMessage(Message message) {\n"
+"      // Process the message\n"
+"      orderProcessor.process(message.getSubject());\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:135
+#, no-c-format
+msgid ""
+"Each message received will cause <literal>onMessage(Message message)</"
+"literal> to be called. Most seam annotations will work inside a MDB but you "
+"musn't access the persistence context."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:138
+#, no-c-format
+msgid ""
+"You can find more information on the default <literal>mail-ra.rar</literal> "
+"at <ulink url=\"http://wiki.jboss.org/wiki/Wiki.jsp?page=InboundJavaMail"
+"\">http://wiki.jboss.org/wiki/Wiki.jsp?page=InboundJavaMail</ulink>. The "
+"version distributed with Seam also includes a <literal>debug</literal> "
+"property to enable JavaMail debugging, a <literal>flush</literal> property "
+"(by default true) to disable flushing a <literal>POP3</literal> mailbox "
+"after successfullying delivering a message to your MDB and a <literal>port</"
+"literal> property to override the default TCP port. Beware that the api for "
+"this may be altered as changes make there way into JBoss AS."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:141
+#, no-c-format
+msgid ""
+"If you aren't using JBoss AS you can still use <literal>mail-ra.rar</"
+"literal> (included with Seam in the mail directory), or you may find your "
+"application server includes a similar adapter."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:147
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:148
+#, no-c-format
+msgid ""
+"To include Email support in your application, include <literal>jboss-seam-"
+"mail.jar</literal> in your WEB-INF/lib directory. If you are using JBoss AS "
+"there is no further configuration needed to use Seam's email support. "
+"Otherwise you need to make sure you have the JavaMail API, an implementation "
+"of the JavaMail API present (the API and impl used in JBoss AS are "
+"distributed with seam as <literal>lib/mail.jar</literal>), and a copy of the "
+"Java Activation Framework (distributed with seam as <literal>lib/activation."
+"jar</literal>."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:151
+#, no-c-format
+msgid ""
+"The Seam Email module requires the use of Facelets as the view technology. "
+"Future versions of the library may also support the use of JSP. "
+"Additionally, it requires the use of the seam-ui package."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:154
+#, no-c-format
+msgid ""
+"The <literal>mailSession</literal> component uses JavaMail to talk to a "
+"'real' SMTP server."
+msgstr ""
+
+#. Tag: literal
+#: Mail.xml:158
+#, no-c-format
+msgid "mailSession"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:159
+#, no-c-format
+msgid ""
+"A JavaMail Session may be available via a JNDI lookup if you are working in "
+"an JEE environment or you can use a Seam configured Session."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:162
+#, no-c-format
+msgid ""
+"The mailSession component's properties are described in more detail in <xref "
+"linkend=\"Built_in_Seam_components-Mail_related_components\"/>."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:166
+#, no-c-format
+msgid "JNDI lookup in JBoss AS"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:167
+#, no-c-format
+msgid ""
+"The JBossAS <literal>deploy/mail-service.xml</literal> configures a JavaMail "
+"session binding into JNDI. The default service configuration will need "
+"altering for your network. <ulink url=\"http://wiki.jboss.org/wiki/Wiki.jsp?"
+"page=JavaMail\">http://wiki.jboss.org/wiki/Wiki.jsp?page=JavaMail</ulink> "
+"describes the service in more detail."
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:170
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"        xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"        xmlns:mail=\"http://jboss.com/products/seam/mail\"&gt;\n"
+"        \n"
+"    &lt;mail:mail-session session-jndi-name=\"java:/Mail\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:171
+#, no-c-format
+msgid ""
+"Here we tell Seam to get the mail session bound to <literal>java:/Mail</"
+"literal> from JNDI."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:177
+#, no-c-format
+msgid "Seam configured Session"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:178
+#, no-c-format
+msgid ""
+"A mail session can be configured via <literal>components.xml</literal>. Here "
+"we tell Seam to use <literal>smtp.example.com</literal> as the smtp server,"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:181
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"        xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"        xmlns:mail=\"http://jboss.com/products/seam/mail\"&gt;\n"
+"        \n"
+"    &lt;mail:mail-session host=\"smtp.example.com\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:189
+#, no-c-format
+msgid "Tags"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:190
+#, no-c-format
+msgid ""
+"Emails are generated using tags in the <literal>http://jboss.com/products/"
+"seam/mail</literal> namespace. Documents should always have the "
+"<literal>message</literal> tag at the root of the message. The message tag "
+"prepares Seam to generate an email."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:193
+#, no-c-format
+msgid ""
+"The standard templating tags of facelets can be used as normal. Inside the "
+"body you can use any JSF tag which doesn't require access to external "
+"resources (stylesheets, javascript)."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:198
+#, no-c-format
+msgid "&lt;m:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:200
+#, no-c-format
+msgid "Root tag of a mail message"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:205
+#, no-c-format
+msgid ""
+"<literal>importance</literal> &mdash; low, normal or high. By default "
+"normal, this sets the importance of the mail message."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:210
+#, no-c-format
+msgid ""
+"<literal>precedence</literal> &mdash; sets the precedence of the message (e."
+"g. bulk)."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:215
+#, no-c-format
+msgid ""
+"<literal>requestReadReceipt</literal> &mdash; by default false, if set, a "
+"read receipt will be request will be added, with the read receipt being sent "
+"to the <literal>From:</literal> address."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:220
+#, no-c-format
+msgid ""
+"<literal>urlBase</literal> &mdash; If set, the value is prepended to the "
+"<literal>requestContextPath</literal> allowing you to use components such as "
+"<literal>&lt;h:graphicImage&gt;</literal> in your emails."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:228
+#, no-c-format
+msgid "&lt;m:from&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:230
+#, no-c-format
+msgid ""
+"Set's the From: address for the email. You can only have one of these per "
+"email."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:235
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the name the email should come from."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:240 Mail.xml:255
+#, no-c-format
+msgid ""
+"<literal>address</literal> &mdash; the email address the email should come "
+"from."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:248
+#, no-c-format
+msgid "&lt;m:replyTo&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:250
+#, no-c-format
+msgid ""
+"Set's the Reply-to: address for the email. You can only have one of these "
+"per email."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:263
+#, no-c-format
+msgid "&lt;m:to&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:265
+#, no-c-format
+msgid ""
+"Add a recipient to the email. Use multiple &lt;m:to&gt; tags for multiple "
+"recipients. This tag can be safely placed inside a repeat tag such as &lt;ui:"
+"repeat&gt;."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:270 Mail.xml:290 Mail.xml:310
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the name of the recipient."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:275 Mail.xml:295 Mail.xml:315
+#, no-c-format
+msgid "<literal>address</literal> &mdash; the email address of the recipient."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:283
+#, no-c-format
+msgid "&lt;m:cc&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:285
+#, no-c-format
+msgid ""
+"Add a cc recipient to the email. Use multiple &lt;m:cc&gt; tags for multiple "
+"ccs. This tag can be safely placed inside a repeat tag such as &lt;ui:"
+"repeat&gt;."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:303
+#, no-c-format
+msgid "&lt;m:bcc&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:305
+#, no-c-format
+msgid ""
+"Add a bcc recipient to the email. Use multiple &lt;m:bcc&gt; tags for "
+"multiple bccs. This tag can be safely placed inside a repeat tag such as &lt;"
+"ui:repeat&gt;."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:323
+#, no-c-format
+msgid "&lt;m:header&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:325
+#, no-c-format
+msgid ""
+"Add a header to the email (e.g. <literal>X-Sent-From: JBoss Seam</literal>"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:330
+#, no-c-format
+msgid ""
+"<literal>name</literal> &mdash; The name of the header to add (e.g. "
+"<literal>X-Sent-From</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:335
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; The value of the header to add (e.g. "
+"<literal>JBoss Seam</literal>)."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:343
+#, no-c-format
+msgid "&lt;m:attachment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:345
+#, no-c-format
+msgid "Add an attachment to the email."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:350
+#, no-c-format
+msgid "<literal>value</literal> &mdash; The file to attach:"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:355
+#, no-c-format
+msgid ""
+"<literal>String</literal> &mdash; A <literal>String</literal> is interpreted "
+"as a path to file within the classpath"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:360
+#, no-c-format
+msgid ""
+"<literal>java.io.File</literal> &mdash; An EL expression can reference a "
+"<literal>File</literal> object"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:365
+#, no-c-format
+msgid ""
+"<literal>java.net.URL</literal> &mdash; An EL expression can reference a "
+"<literal>URL</literal> object"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:370
+#, no-c-format
+msgid ""
+"<literal>java.io.InputStream</literal> &mdash; An EL expression can "
+"reference an <literal>InputStream</literal>. In this case both a "
+"<literal>fileName</literal> and a <literal>contentType</literal> must be "
+"specified."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:375
+#, no-c-format
+msgid ""
+"<literal>byte[]</literal> &mdash; An EL expression can reference an "
+"<literal>byte[]</literal>. In this case both a <literal>fileName</literal> "
+"and a <literal>contentType</literal> must be specified."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:380
+#, no-c-format
+msgid "If the value attribute is ommitted:"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:385
+#, no-c-format
+msgid ""
+"If this tag contains a <literal>&lt;p:document&gt;</literal> tag, the "
+"document described will be generated and attached to the email. A "
+"<literal>fileName</literal> should be specfied."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:390
+#, no-c-format
+msgid ""
+"If this tag contains other JSF tags a HTML document will be generated from "
+"them and attached to the email. A <literal>fileName</literal> should be "
+"specfied."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:397
+#, no-c-format
+msgid ""
+"<literal>fileName</literal> &mdash; Specify the file name to use for the "
+"attached file."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:402
+#, no-c-format
+msgid ""
+"<literal>contentType</literal> &mdash; Specify the MIME type of the attached "
+"file"
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:410
+#, no-c-format
+msgid "&lt;m:subject&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:412
+#, no-c-format
+msgid "Set's the subject for the email."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:418
+#, no-c-format
+msgid "&lt;m:body&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:420
+#, no-c-format
+msgid ""
+"Set's the body for the email. Supports an <literal>alternative</literal> "
+"facet which, if an HTML email is generated can contain alternative text for "
+"a mail reader which doesn't support html."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:425
+#, no-c-format
+msgid ""
+"<literal>type</literal> &mdash; If set to <literal>plain</literal> then a "
+"plain text email will be generated otherwise an HTML email is generated."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Persistence.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Persistence.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Persistence.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,750 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Persistence.xml:10
+#, no-c-format
+msgid "Seam and Object/Relational Mapping"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:11
+#, no-c-format
+msgid ""
+"Seam provides extensive support for the two most popular persistence "
+"architectures for Java: Hibernate3, and the Java Persistence API introduced "
+"with EJB 3.0. Seam's unique state-management architecture allows the most "
+"sophisticated ORM integration of any web application framework."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:15
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:16
+#, no-c-format
+msgid ""
+"Seam grew out of the frustration of the Hibernate team with the "
+"statelessness typical of the previous generation of Java application "
+"architectures. The state management architecture of Seam was originally "
+"designed to solve problems relating to persistence&mdash;in particular "
+"problems associated with <emphasis>optimistic transaction processing</"
+"emphasis>. Scalable online applications always use optimistic transactions. "
+"An atomic (database/JTA) level transaction should not span a user "
+"interaction unless the application is designed to support only a very small "
+"number of concurrent clients. But almost all interesting work involves first "
+"displaying data to a user, and then, slightly later, updating the same data. "
+"So Hibernate was designed to support the idea of a persistence context which "
+"spanned an optimistic transaction."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:19
+#, no-c-format
+msgid ""
+"Unfortunately, the so-called \"stateless\" architectures that preceded Seam "
+"and EJB 3.0 had no construct for representing an optimistic transaction. So, "
+"instead, these architectures provided persistence contexts scoped to the "
+"atomic transaction. Of course, this resulted in many problems for users, and "
+"is the cause of the number one user complaint about Hibernate: the dreaded "
+"<literal>LazyInitializationException</literal>. What we need is a construct "
+"for representing an optimistic transaction in the application tier."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:22
+#, no-c-format
+msgid ""
+"EJB 3.0 recognizes this problem, and introduces the idea of a stateful "
+"component (a stateful session bean) with an <emphasis>extended persistence "
+"context</emphasis> scoped to the lifetime of the component. This is a "
+"partial solution to the problem (and is a useful construct in and of itself) "
+"however there are two problems:"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:27
+#, no-c-format
+msgid ""
+"The lifecycle of the stateful session bean must be managed manually via code "
+"in the web tier (it turns out that this is a subtle problem and much more "
+"difficult in practice than it sounds)."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:32
+#, no-c-format
+msgid ""
+"Propagation of the persistence context between stateful components in the "
+"same optimistic transaction is possible, but tricky."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:37
+#, no-c-format
+msgid ""
+"Seam solves the first problem by providing conversations, and stateful "
+"session bean components scoped to the conversation. (Most conversations "
+"actually represent optimistic transactions in the data layer.) This is "
+"sufficient for many simple applications (such as the Seam booking demo) "
+"where persistence context propagation is not needed. For more complex "
+"applications, with many loosly-interacting components in each conversation, "
+"propagation of the persistence context across components becomes an "
+"important issue. So Seam extends the persistence context management model of "
+"EJB 3.0, to provide conversation-scoped extended persistence contexts."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:43
+#, no-c-format
+msgid "Seam managed transactions"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:44
+#, no-c-format
+msgid ""
+"EJB session beans feature declarative transaction management. The EJB "
+"container is able to start a transaction transparently when the bean is "
+"invoked, and end it when the invocation ends. If we write a session bean "
+"method that acts as a JSF action listener, we can do all the work associated "
+"with that action in one transaction, and be sure that it is committed or "
+"rolled back when we finish processing the action. This is a great feature, "
+"and all that is needed by some Seam applications."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:47
+#, no-c-format
+msgid ""
+"However, there is a problem with this approach. A Seam application may not "
+"perform all data access for a request from a single method call to a session "
+"bean."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:52
+#, no-c-format
+msgid ""
+"The request might require processing by several loosly-coupled components, "
+"each of which is called independently from the web layer. It is common to "
+"see several or even many calls per request from the web layer to EJB "
+"components in Seam."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:57
+#, no-c-format
+msgid "Rendering of the view might require lazy fetching of associations."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:62
+#, no-c-format
+msgid ""
+"The more transactions per request, the more likely we are to encounter "
+"atomicity and isolation problems when our application is processing many "
+"concurrent requests. Certainly, all write operations should occur in the "
+"same transaction!"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:65
+#, no-c-format
+msgid ""
+"Hibernate users developed the <emphasis>\"open session in view\"</emphasis> "
+"pattern to work around this problem. In the Hibernate community, \"open "
+"session in view\" was historically even more important because frameworks "
+"like Spring use transaction-scoped persistence contexts. So rendering the "
+"view would cause <literal>LazyInitializationException</literal>s when "
+"unfetched associations were accessed."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:68
+#, no-c-format
+msgid ""
+"This pattern is usually implemented as a single transaction which spans the "
+"entire request. There are several problems with this implementation, the "
+"most serious being that we can never be sure that a transaction is "
+"successful until we commit it&mdash;but by the time the \"open session in "
+"view\" transaction is committed, the view is fully rendered, and the "
+"rendered response may already have been flushed to the client. How can we "
+"notify the user that their transaction was unsuccessful?"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:71
+#, no-c-format
+msgid ""
+"Seam solves both the transaction isolation problem and the association "
+"fetching problem, while working around the problems with \"open session in "
+"view\". The solution comes in two parts:"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:76
+#, no-c-format
+msgid ""
+"use an extended persistence context that is scoped to the conversation, "
+"instead of to the transaction"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:81
+#, no-c-format
+msgid ""
+"use two transactions per request; the first spans the beginning of the "
+"update model values phase until the end of the invoke application phase; the "
+"second spans the render response phase"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:86
+#, no-c-format
+msgid ""
+"In the next section, we'll tell you how to set up a conversation-scope "
+"persistence context. But first we need to tell you how to enable Seam "
+"transaction management. Note that you can use conversation-scoped "
+"persistence contexts without Seam transaction management, and there are good "
+"reasons to use Seam transaction management even when you're not using Seam-"
+"managed persistence contexts. However, the two facilities were designed to "
+"work together, and work best when used together."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:90
+#, no-c-format
+msgid "Enabling Seam-managed transactions"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:91
+#, no-c-format
+msgid ""
+"To make use of <emphasis>Seam managed transactions</emphasis>, you need to "
+"use <literal>TransactionalSeamPhaseListener</literal> in place of "
+"<literal>SeamPhaseListener</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:94
+#, no-c-format
+msgid ""
+"&lt;lifecycle&gt;\n"
+"     &lt;phase-listener&gt;\n"
+"        org.jboss.seam.jsf.TransactionalSeamPhaseListener\n"
+"    &lt;/phase-listener&gt;\n"
+"&lt;/lifecycle&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:95
+#, no-c-format
+msgid ""
+"Seam transaction management is useful even if you're using EJB 3.0 container-"
+"managed persistence contexts. But it is especially useful if you use Seam "
+"outside a Java EE 5 environment, or in any other case where you would use a "
+"Seam-managed persistence context."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:103
+#, no-c-format
+msgid "Seam-managed persistence contexts"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:104
+#, no-c-format
+msgid ""
+"If you're using Seam outside of a Java EE 5 environment, you can't rely upon "
+"the container to manage the persistence context lifecycle for you. Even if "
+"you are in an EE 5 environment, you might have a complex application with "
+"many loosly coupled components that collaborate together in the scope of a "
+"single conversation, and in this case you might find that propagation of the "
+"persistence context between component is tricky and error-prone."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:107
+#, no-c-format
+msgid ""
+"In either case, you'll need to use a <emphasis>managed persistence context</"
+"emphasis> (for JPA) or a <emphasis>managed session</emphasis> (for "
+"Hibernate) in your components. A Seam-managed persistence context is just a "
+"built-in Seam component that manages an instance of <literal>EntityManager</"
+"literal> or <literal>Session</literal> in the conversation context. You can "
+"inject it with <literal>@In</literal>."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:110
+#, no-c-format
+msgid ""
+"Seam-managed persistence contexts are extremely efficient in a clustered "
+"environment. Seam is able to perform an optimization that EJB 3.0 "
+"specification does not allow containers to use for container-managed "
+"extended persistence contexts. Seam supports transparent failover of "
+"extended persisence contexts, without the need to replicate any persistence "
+"context state between nodes. (We hope to fix this oversight in the next "
+"revision of the EJB spec.)"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:114
+#, no-c-format
+msgid "Using a Seam-managed persistence context with JPA"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:115
+#, no-c-format
+msgid ""
+"Configuring a managed persistence context is easy. In <literal>components."
+"xml</literal>, we can write:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:118
+#, no-c-format
+msgid ""
+"&lt;core:managed-persistence-context name=\"bookingDatabase\" \n"
+"                           auto-create=\"true\"\n"
+"            persistence-unit-jndi-name=\"java:/EntityManagerFactories/"
+"bookingData\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:119
+#, no-c-format
+msgid ""
+"This configuration creates a conversation-scoped Seam component named "
+"<literal>bookingDatabase</literal> that manages the lifecycle of "
+"<literal>EntityManager</literal> instances for the persistence unit "
+"(<literal>EntityManagerFactory</literal> instance) with JNDI name "
+"<literal>java:/EntityManagerFactories/bookingData</literal>."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:122
+#, no-c-format
+msgid ""
+"Of course, you need to make sure that you have bound the "
+"<literal>EntityManagerFactory</literal> into JNDI. In JBoss, you can do this "
+"by adding the following property setting to <literal>persistence.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:125
+#, no-c-format
+msgid ""
+"&lt;property name=\"jboss.entity.manager.factory.jndi.name\" \n"
+"          value=\"java:/EntityManagerFactories/bookingData\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:126
+#, no-c-format
+msgid "Now we can have our <literal>EntityManager</literal> injected using:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:129
+#, no-c-format
+msgid "@In EntityManager bookingDatabase;"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:133
+#, no-c-format
+msgid "Using a Seam-managed Hibernate session"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:134
+#, no-c-format
+msgid ""
+"Seam-managed Hibernate sessions are similar. In <literal>components.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:137
+#, no-c-format
+msgid ""
+"&lt;core:hibernate-session-factory name=\"hibernateSessionFactory\"/&gt;\n"
+"\n"
+"&lt;core:managed-hibernate-session name=\"bookingDatabase\" \n"
+"                         auto-create=\"true\"\n"
+"           session-factory-jndi-name=\"java:/bookingSessionFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:138
+#, no-c-format
+msgid ""
+"Where <literal>java:/bookingSessionFactory</literal> is the name of the "
+"session factory specified in <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:141
+#, no-c-format
+msgid ""
+"&lt;session-factory name=\"java:/bookingSessionFactory\"&gt;\n"
+"    &lt;property name=\"transaction.flush_before_completion\"&gt;true&lt;/"
+"property&gt;\n"
+"    &lt;property name=\"connection.release_mode\"&gt;after_statement&lt;/"
+"property&gt;\n"
+"    &lt;property name=\"transaction.manager_lookup_class\"&gt;\n"
+"        org.hibernate.transaction.JBossTransactionManagerLookup\n"
+"    &lt;/property&gt;\n"
+"    &lt;property name=\"transaction.factory_class\"&gt;\n"
+"        org.hibernate.transaction.JTATransactionFactory\n"
+"    &lt;/property&gt;\n"
+"    &lt;property name=\"connection.datasource\"&gt;java:/"
+"bookingDatasource&lt;/property&gt;\n"
+"    ...\n"
+"&lt;/session-factory&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:142
+#, no-c-format
+msgid ""
+"Note that Seam does not flush the session, so you should always enable "
+"<literal>hibernate.transaction.flush_before_completion</literal> to ensure "
+"that the session is automatically flushed before the JTA transaction commits."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:145
+#, no-c-format
+msgid ""
+"We can now have a managed Hibernate <literal>Session</literal> injected into "
+"our JavaBean components using the following code:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:148
+#, no-c-format
+msgid "@In Session bookingDatabase;"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:152
+#, no-c-format
+msgid "Seam-managed persistence contexts and atomic conversations"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:153
+#, no-c-format
+msgid ""
+"Persistence contexts scoped to the conversation allows you to program "
+"optimistic transactions that span multiple requests to the server without "
+"the need to use the <literal>merge()</literal> operation , without the need "
+"to re-load data at the beginning of each request, and without the need to "
+"wrestle with the <literal>LazyInitializationException</literal> or "
+"<literal>NonUniqueObjectException</literal>."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:156
+#, no-c-format
+msgid ""
+"As with any optimistic transaction management, transaction isolation and "
+"consistency can be achieved via use of optimistic locking. Fortunately, both "
+"Hibernate and EJB 3.0 make it very easy to use optimistic locking, by "
+"providing the <literal>@Version</literal> annotation."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:159
+#, no-c-format
+msgid ""
+"By default, the persistence context is flushed (synchronized with the "
+"database) at the end of each transaction. This is sometimes the desired "
+"behavior. But very often, we would prefer that all changes are held in "
+"memory and only written to the database when the conversation ends "
+"successfully. This allows for truly atomic conversations. As the result of a "
+"truly stupid and shortsighted decision by certain non-JBoss, non-Sun and non-"
+"Sybase members of the EJB 3.0 expert group, there is currently no simple, "
+"usable and portable way to implement atomic conversations using EJB 3.0 "
+"persistence. However, Hibernate provides this feature as a vendor extension "
+"to the <literal>FlushModeType</literal>s defined by the specification, and "
+"it is our expectation that other vendors will soon provide a similar "
+"extension."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:162
+#, no-c-format
+msgid ""
+"Seam lets you specify <literal>FlushModeType.MANUAL</literal> when beginning "
+"a conversation. Currently, this works only when Hibernate is the underlying "
+"persistence provider, but we plan to support other equivalent vendor "
+"extensions."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:165
+#, no-c-format
+msgid ""
+"@In EntityManager em; //a Seam-managed persistence context\n"
+"\n"
+"@Begin(flushMode=MANUAL)\n"
+"public void beginClaimWizard() {\n"
+"    claim = em.find(Claim.class, claimId);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:166
+#, no-c-format
+msgid ""
+"Now, the <literal>claim</literal> object remains managed by the persistence "
+"context for the rest ot the conversation. We can make changes to the claim:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:169
+#, no-c-format
+msgid ""
+"public void addPartyToClaim() {\n"
+"    Party party = ....;\n"
+"    claim.addParty(party);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:170
+#, no-c-format
+msgid ""
+"But these changes will not be flushed to the database until we explicitly "
+"force the flush to occur:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:173
+#, no-c-format
+msgid ""
+"@End\n"
+"public void commitClaim() {\n"
+"    em.flush();\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:179
+#, no-c-format
+msgid "Using the JPA \"delegate\""
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:180
+#, no-c-format
+msgid ""
+"The <literal>EntityManager</literal> interface lets you access a vendor-"
+"specific API via the <literal>getDelegate()</literal> method. Naturally, the "
+"most interesting vendor is Hibernate, and the most powerful delegate "
+"interface is <literal>org.hibernate.Session</literal>. You'd be nuts to use "
+"anything else. Trust me, I'm not biased at all."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:183
+#, no-c-format
+msgid ""
+"But regardless of whether you're using Hibernate (genius!) or something else "
+"(masochist, or just not very bright), you'll almost certainly want to use "
+"the delegate in your Seam components from time to time. One approach would "
+"be the following:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:186
+#, no-c-format
+msgid ""
+"@In EntityManager entityManager;\n"
+"\n"
+"@Create\n"
+"public void init() {\n"
+"    ( (Session) entityManager.getDelegate() ).enableFilter(\"currentVersions"
+"\");\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:187
+#, no-c-format
+msgid ""
+"But typecasts are unquestionably the ugliest syntax in the Java language, so "
+"most people avoid them whenever possible. Here's a different way to get at "
+"the delegate. First, add the following line to <literal>components.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:190
+#, no-c-format
+msgid ""
+"&lt;factory name=\"session\" \n"
+"         scope=\"STATELESS\" \n"
+"         auto-create=\"true\" \n"
+"         value=\"#{entityManager.delegate}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:191
+#, no-c-format
+msgid "Now we can inject the session directly:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:194
+#, no-c-format
+msgid ""
+"@In Session session;\n"
+"\n"
+"@Create\n"
+"public void init() {\n"
+"    session.enableFilter(\"currentVersions\");\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:198
+#, no-c-format
+msgid "Using EL in EJB-QL/HQL"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:199
+#, no-c-format
+msgid ""
+"Seam proxies the <literal>EntityManager</literal> or <literal>Session</"
+"literal> object whenever you use a Seam-managed persistence context or "
+"inject a container managed persistence context using "
+"<literal>@PersistenceContext</literal>. This lets you use EL expressions in "
+"your query strings, safely and efficiently. For example, this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:202
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=#{user.username}\")\n"
+"         .getSingleResult();"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:203
+#, no-c-format
+msgid "is equivalent to:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:206
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getSingleResult();"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:207
+#, no-c-format
+msgid "Of course, you should never, ever write it like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:210
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=\" + user.getUsername"
+"()) //BAD!\n"
+"         .getSingleResult();"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:211
+#, no-c-format
+msgid "(It is inefficient and vulnerable to SQL injection attacks.)"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:217
+#, no-c-format
+msgid "Using Hibernate filters"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:218
+#, no-c-format
+msgid ""
+"The coolest, and most unique, feature of Hibernate is <emphasis>filters</"
+"emphasis>. Filters let you provide a restricted view of the data in the "
+"database. You can find out more about filters in the Hibernate "
+"documentation. But we thought we'd mention an easy way to incorporate "
+"filters into a Seam application, one that works especially well with the "
+"Seam Application Framework."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:221
+#, no-c-format
+msgid ""
+"Seam-managed persistence contexts may have a list of filters defined, which "
+"will be enabled whenever an <literal>EntityManager</literal> or Hibernate "
+"<literal>Session</literal> is first created. (Of course, they may only be "
+"used when Hibernate is the underlying persistence provider.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:224
+#, no-c-format
+msgid ""
+"&lt;core:filter name=\"regionFilter\"&gt;\n"
+"    &lt;core:name&gt;region&lt;/core:name&gt;\n"
+"    &lt;core:parameters&gt;\n"
+"        &lt;key&gt;regionCode&lt;/key&gt;\n"
+"        &lt;value&gt;#{region.code}&lt;/value&gt;\n"
+"    &lt;/core:parameters&gt;\n"
+"&lt;/core:filter&gt;\n"
+"\n"
+"&lt;core:filter name=\"currentFilter\"&gt;\n"
+"    &lt;core:name&gt;current&lt;/core:name&gt;\n"
+"    &lt;core:parameters&gt;\n"
+"        &lt;key&gt;date&lt;/key&gt;\n"
+"        &lt;value&gt;#{currentDate}&lt;/value&gt;\n"
+"    &lt;/core:parameters&gt;\n"
+"&lt;/core:filter&gt;\n"
+"\n"
+"&lt;core:managed-persistence-context name=\"personDatabase\"\n"
+"    persistence-unit-jndi-name=\"java:/EntityManagerFactories/personDatabase"
+"\"&gt;\n"
+"    &lt;core:filters&gt;\n"
+"        &lt;value&gt;#{regionFilter}&lt;/value&gt;\n"
+"        &lt;value&gt;#{currentFilter}&lt;/value&gt;\n"
+"    &lt;/core:filters&gt;\n"
+"&lt;/core:managed-persistence-context&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Remoting.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Remoting.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Remoting.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1458 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Remoting.xml:10
+#, no-c-format
+msgid "Remoting"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:11
+#, no-c-format
+msgid ""
+"Seam provides a convenient method of remotely accessing components from a "
+"web page, using AJAX (Asynchronous Javascript and XML). The framework for "
+"this functionality is provided with almost no up-front development effort - "
+"your components only require simple annotating to become accessible via "
+"AJAX. This chapter describes the steps required to build an AJAX-enabled web "
+"page, then goes on to explain the features of the Seam Remoting framework in "
+"more detail."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:14 Remoting.xml:296
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:15
+#, no-c-format
+msgid ""
+"To use remoting, the Seam Resource servlet must first be configured in your "
+"<literal>web.xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:18
+#, no-c-format
+msgid ""
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"  &lt;/servlet&gt;\n"
+"\n"
+"  &lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"  &lt;/servlet-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:19
+#, no-c-format
+msgid ""
+"The next step is to import the necessary Javascript into your web page. "
+"There are a minimum of two scripts that must be imported. The first one "
+"contains all the client-side framework code that enables remoting "
+"functionality:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:22
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/resource/"
+"remote.js\"&gt;&lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:23
+#, no-c-format
+msgid ""
+"The second script contains the stubs and type definitions for the components "
+"you wish to call. It is generated dynamically based on the local interface "
+"of your components, and includes type definitions for all of the classes "
+"that can be used to call the remotable methods of the interface. The name of "
+"the script reflects the name of your component. For example, if you have a "
+"stateless session bean annotated with <literal>@Name(\"customerAction\")</"
+"literal>, then your script tag should look like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:26
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?customerAction\"&gt;\n"
+"      &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:27
+#, no-c-format
+msgid ""
+"If you wish to access more than one component from the same page, then "
+"include them all as parameters of your script tag:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:30
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" \n"
+"      src=\"seam/resource/remoting/interface.js?customerAction&amp;"
+"accountAction\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:31
+#, no-c-format
+msgid "The \"Seam\" object"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:32
+#, no-c-format
+msgid ""
+"Client-side interaction with your components is all performed via the "
+"<literal>Seam</literal> Javascript object. This object is defined in "
+"<literal>remote.js</literal>, and you'll be using it to make asynchronous "
+"calls against your component. It is split into two areas of functionality; "
+"<literal>Seam.Component</literal> contains methods for working with "
+"components and <literal>Seam.Remoting</literal> contains methods for "
+"executing remote requests. The easiest way to become familiar with this "
+"object is to start with a simple example."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:35
+#, no-c-format
+msgid "A Hello World example"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:36
+#, no-c-format
+msgid ""
+"Let's step through a simple example to see how the <literal>Seam</literal> "
+"object works. First of all, let's create a new Seam component called "
+"<literal>helloAction</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:39
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"  @Name(\"helloAction\")\n"
+"  public class HelloAction implements HelloLocal {\n"
+"    public String sayHello(String name) {\n"
+"      return \"Hello, \" + name;\n"
+"    }\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:40
+#, no-c-format
+msgid ""
+"You also need to create a local interface for our new component - take "
+"special note of the <literal>@WebRemote</literal> annotation, as it's "
+"required to make our method accessible via remoting:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:43
+#, no-c-format
+msgid ""
+"@Local\n"
+"  public interface HelloLocal {\n"
+"    @WebRemote\n"
+"    public String sayHello(String name);\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:44
+#, no-c-format
+msgid ""
+"That's all the server-side code we need to write. Now for our web page - "
+"create a new page and import the following scripts:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:47
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/resource/"
+"remote.js\"&gt;&lt;/script&gt;\n"
+"  &lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?helloAction\"&gt;&lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:48
+#, no-c-format
+msgid ""
+"To make this a fully interactive user experience, let's add a button to our "
+"page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:51
+#, no-c-format
+msgid ""
+"&lt;button onclick=\"javascript:sayHello()\"&gt;Say Hello&lt;/button&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:52
+#, no-c-format
+msgid ""
+"We'll also need to add some more script to make our button actually do "
+"something when it's clicked:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:55
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\"&gt;\n"
+"    //&lt;![CDATA[\n"
+"\n"
+"    function sayHello() {\n"
+"      var name = prompt(\"What is your name?\");\n"
+"      Seam.Component.getInstance(\"helloAction\").sayHello(name, "
+"sayHelloCallback);\n"
+"    }\n"
+"\n"
+"    function sayHelloCallback(result) {\n"
+"      alert(result);\n"
+"    }\n"
+"\n"
+"    // ]]&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:56
+#, no-c-format
+msgid ""
+"We're done! Deploy your application and browse to your page. Click the "
+"button, and enter a name when prompted. A message box will display the hello "
+"message confirming that the call was successful. If you want to save some "
+"time, you'll find the full source code for this Hello World example in "
+"Seam's <literal>/examples/remoting/helloworld</literal> directory."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:59
+#, no-c-format
+msgid ""
+"So what does the code of our script actually do? Let's break it down into "
+"smaller pieces. To start with, you can see from the Javascript code listing "
+"that we have implemented two methods - the first method is responsible for "
+"prompting the user for their name and then making a remote request. Take a "
+"look at the following line:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:62
+#, no-c-format
+msgid ""
+"Seam.Component.getInstance(\"helloAction\").sayHello(name, sayHelloCallback);"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:63
+#, no-c-format
+msgid ""
+"The first section of this line, <literal>Seam.Component.getInstance"
+"(\"helloAction\")</literal> returns a proxy, or \"stub\" for our "
+"<literal>helloAction</literal> component. We can invoke the methods of our "
+"component against this stub, which is exactly what happens with the "
+"remainder of the line: <literal>sayHello(name, sayHelloCallback);</literal>."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:66
+#, no-c-format
+msgid ""
+"What this line of code in its completeness does, is invoke the "
+"<literal>sayHello</literal> method of our component, passing in "
+"<literal>name</literal> as a parameter. The second parameter, "
+"<literal>sayHelloCallback</literal> isn't a parameter of our component's "
+"<literal>sayHello</literal> method, instead it tells the Seam Remoting "
+"framework that once it receives the response to our request, it should pass "
+"it to the <literal>sayHelloCallback</literal> Javascript method. This "
+"callback parameter is entirely optional, so feel free to leave it out if "
+"you're calling a method with a <literal>void</literal> return type or if you "
+"don't care about the result."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:69
+#, no-c-format
+msgid ""
+"The <literal>sayHelloCallback</literal> method, once receiving the response "
+"to our remote request then pops up an alert message displaying the result of "
+"our method call."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:72
+#, no-c-format
+msgid "Seam.Component"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:73
+#, no-c-format
+msgid ""
+"The <literal>Seam.Component</literal> Javascript object provides a number of "
+"client-side methods for working with your Seam components. The two main "
+"methods, <literal>newInstance()</literal> and <literal>getInstance()</"
+"literal> are documented in the following sections however their main "
+"difference is that <literal>newInstance()</literal> will always create a new "
+"instance of a component type, and <literal>getInstance()</literal> will "
+"return a singleton instance."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:76
+#, no-c-format
+msgid "Seam.Component.newInstance()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:77
+#, no-c-format
+msgid ""
+"Use this method to create a new instance of an entity or Javabean component. "
+"The object returned by this method will have the same getter/setter methods "
+"as its server-side counterpart, or alternatively if you wish you can access "
+"its fields directly. Take the following Seam entity component for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:80
+#, no-c-format
+msgid ""
+"@Name(\"customer\")\n"
+"  @Entity\n"
+"  public class Customer implements Serializable\n"
+"  {\n"
+"    private Integer customerId;\n"
+"    private String firstName;\n"
+"    private String lastName;\n"
+"    \n"
+"    @Column public Integer getCustomerId() { \n"
+"      return customerId; \n"
+"    }\n"
+"    \n"
+"    public void setCustomerId(Integer customerId} { \n"
+"      this.customerId = customerId; \n"
+"    }\n"
+"    \n"
+"    @Column public String getFirstName() { \n"
+"      return firstName; \n"
+"    }\n"
+"    \n"
+"    public void setFirstName(String firstName) {\n"
+"      this.firstName = firstName; \n"
+"    }\n"
+"    \n"
+"    @Column public String getLastName() {\n"
+"      return lastName;\n"
+"    }\n"
+"    \n"
+"    public void setLastName(String lastName) {\n"
+"      this.lastName = lastName;\n"
+"    }\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:81
+#, no-c-format
+msgid "To create a client-side Customer you would write the following code:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:84
+#, no-c-format
+msgid "var customer = Seam.Component.newInstance(\"customer\");"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:85
+#, no-c-format
+msgid "Then from here you can set the fields of the customer object:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:88
+#, no-c-format
+msgid ""
+"customer.setFirstName(\"John\");\n"
+"  // Or you can set the fields directly\n"
+"  customer.lastName = \"Smith\";"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:89
+#, no-c-format
+msgid "Seam.Component.getInstance()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:90
+#, no-c-format
+msgid ""
+"The <literal>getInstance()</literal> method is used to get a reference to a "
+"Seam session bean component stub, which can then be used to remotely execute "
+"methods against your component. This method returns a singleton for the "
+"specified component, so calling it twice in a row with the same component "
+"name will return the same instance of the component."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:93
+#, no-c-format
+msgid ""
+"To continue our example from before, if we have created a new "
+"<literal>customer</literal> and we now wish to save it, we would pass it to "
+"the <literal>saveCustomer()</literal> method of our <literal>customerAction</"
+"literal> component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:96
+#, no-c-format
+msgid "Seam.Component.getInstance(\"customerAction\").saveCustomer(customer);"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:97
+#, no-c-format
+msgid "Seam.Component.getComponentName()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:98
+#, no-c-format
+msgid ""
+"Passing an object into this method will return its component name if it is a "
+"component, or <literal>null</literal> if it is not."
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:101
+#, no-c-format
+msgid ""
+"if (Seam.Component.getComponentName(instance) == \"customer\")\n"
+"    alert(\"Customer\");\n"
+"  else if (Seam.Component.getComponentName(instance) == \"staff\")\n"
+"    alert(\"Staff member\");"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:102
+#, no-c-format
+msgid "Seam.Remoting"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:103
+#, no-c-format
+msgid ""
+"Most of the client side functionality for Seam Remoting is contained within "
+"the <literal>Seam.Remoting</literal> object. While you shouldn't need to "
+"directly call most of its methods, there are a couple of important ones "
+"worth mentioning."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:106
+#, no-c-format
+msgid "Seam.Remoting.createType()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:107
+#, no-c-format
+msgid ""
+"If your application contains or uses Javabean classes that aren't Seam "
+"components, you may need to create these types on the client side to pass as "
+"parameters into your component method. Use the <literal>createType()</"
+"literal> method to create an instance of your type. Pass in the fully "
+"qualified Java class name as a parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:110
+#, no-c-format
+msgid "var widget = Seam.Remoting.createType(\"com.acme.widgets.MyWidget\");"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:111
+#, no-c-format
+msgid "Seam.Remoting.getTypeName()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:112
+#, no-c-format
+msgid ""
+"This method is the equivalent of <literal>Seam.Component.getComponentName()</"
+"literal> but for non-component types. It will return the name of the type "
+"for an object instance, or <literal>null</literal> if the type is not known. "
+"The name is the fully qualified name of the type's Java class."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:115
+#, no-c-format
+msgid "Client Interfaces"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:116
+#, no-c-format
+msgid ""
+"In the configuration section above, the interface, or \"stub\" for our "
+"component is imported into our page via <literal>seam/resource/remoting/"
+"interface.js</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:119
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?customerAction\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:120
+#, no-c-format
+msgid ""
+"By including this script in our page, the interface definitions for our "
+"component, plus any other components or types that are required to execute "
+"the methods of our component are generated and made available for the "
+"remoting framework to use."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:123
+#, no-c-format
+msgid ""
+"There are two types of client stub that can be generated, \"executable\" "
+"stubs and \"type\" stubs. Executable stubs are behavioural, and are used to "
+"execute methods against your session bean components, while type stubs "
+"contain state and represent the types that can be passed in as parameters or "
+"returned as a result."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:126
+#, no-c-format
+msgid ""
+"The type of client stub that is generated depends on the type of your Seam "
+"component. If the component is a session bean, then an executable stub will "
+"be generated, otherwise if it's an entity or JavaBean, then a type stub will "
+"be generated. There is one exception to this rule; if your component is a "
+"JavaBean (ie it is not a session bean nor an entity bean) and any of its "
+"methods are annotated with @WebRemote, then an executable stub will be "
+"generated for it instead of a type stub. This allows you to use remoting to "
+"call methods of your JavaBean components in a non-EJB environment where you "
+"don't have access to session beans."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:130
+#, no-c-format
+msgid "The Context"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:131
+#, no-c-format
+msgid ""
+"The Seam Remoting Context contains additional information which is sent and "
+"received as part of a remoting request/response cycle. At this stage it only "
+"contains the conversation ID but may be expanded in the future."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:134
+#, no-c-format
+msgid "Setting and reading the Conversation ID"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:136
+#, no-c-format
+msgid ""
+"If you intend on using remote calls within the scope of a conversation then "
+"you need to be able to read or set the conversation ID in the Seam Remoting "
+"Context. To read the conversation ID after making a remote request call "
+"<literal>Seam.Remoting.getContext().getConversationId()</literal>. To set "
+"the conversation ID before making a request, call <literal>Seam.Remoting."
+"getContext().setConversationId()</literal>."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:139
+#, no-c-format
+msgid ""
+"If the conversation ID hasn't been explicitly set with <literal>Seam."
+"Remoting.getContext().setConversationId()</literal>, then it will be "
+"automatically assigned the first valid conversation ID that is returned by "
+"any remoting call. If you are working with multiple conversations within "
+"your page, then you may need to explicitly set the conversation ID before "
+"each call. If you are working with just a single conversation, then you "
+"don't need to do anything special."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:145
+#, no-c-format
+msgid "Batch Requests"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:146
+#, no-c-format
+msgid ""
+"Seam Remoting allows multiple component calls to be executed within a single "
+"request. It is recommended that this feature is used wherever it is "
+"appropriate to reduce network traffic."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:149
+#, no-c-format
+msgid ""
+"The method <literal>Seam.Remoting.startBatch()</literal> will start a new "
+"batch, and any component calls executed after starting a batch are queued, "
+"rather than being sent immediately. When all the desired component calls "
+"have been added to the batch, the <literal>Seam.Remoting.executeBatch()</"
+"literal> method will send a single request containing all of the queued "
+"calls to the server, where they will be executed in order. After the calls "
+"have been executed, a single response containining all return values will be "
+"returned to the client and the callback functions (if provided) triggered in "
+"the same order as execution."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:152
+#, no-c-format
+msgid ""
+"If you start a new batch via the <literal>startBatch()</literal> method but "
+"then decide you don't want to send it, the <literal>Seam.Remoting.cancelBatch"
+"()</literal> method will discard any calls that were queued and exit the "
+"batch mode."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:155
+#, no-c-format
+msgid ""
+"To see an example of a batch being used, take a look at <literal>/examples/"
+"remoting/chatroom</literal>."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:159
+#, no-c-format
+msgid "Working with Data types"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:160
+#, no-c-format
+msgid "Primitives / Basic Types"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:161
+#, no-c-format
+msgid ""
+"This section describes the support for basic data types. On the server side "
+"these values are generally compatible with either their primitive type or "
+"their corresponding wrapper class."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:164
+#, no-c-format
+msgid "String"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:165
+#, no-c-format
+msgid ""
+"Simply use Javascript String objects when setting String parameter values."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:168
+#, no-c-format
+msgid "Number"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:169
+#, no-c-format
+msgid ""
+"There is support for all number types supported by Java. On the client side, "
+"number values are always serialized as their String representation and then "
+"on the server side they are converted to the correct destination type. "
+"Conversion into either a primitive or wrapper type is supported for "
+"<literal>Byte</literal>, <literal>Double</literal>, <literal>Float</"
+"literal>, <literal>Integer</literal>, <literal>Long</literal> and "
+"<literal>Short</literal> types."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:172
+#, no-c-format
+msgid "Boolean"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:173
+#, no-c-format
+msgid ""
+"Booleans are represented client side by Javascript Boolean values, and "
+"server side by a Java boolean."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:176
+#, no-c-format
+msgid "JavaBeans"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:177
+#, no-c-format
+msgid ""
+"In general these will be either Seam entity or JavaBean components, or some "
+"other non-component class. Use the appropriate method (either <literal>Seam."
+"Component.newInstance()</literal> for Seam components or <literal>Seam."
+"Remoting.createType()</literal> for everything else) to create a new "
+"instance of the object."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:180
+#, no-c-format
+msgid ""
+"It is important to note that only objects that are created by either of "
+"these two methods should be used as parameter values, where the parameter is "
+"not one of the other valid types mentioned anywhere else in this section. In "
+"some situations you may have a component method where the exact parameter "
+"type cannot be determined, such as:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:183
+#, no-c-format
+msgid ""
+"@Name(\"myAction\")\n"
+"  public class MyAction implements MyActionLocal {\n"
+"    public void doSomethingWithObject(Object obj) {\n"
+"      // code\n"
+"    }\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:184
+#, no-c-format
+msgid ""
+"In this case you might want to pass in an instance of your "
+"<literal>myWidget</literal> component, however the interface for "
+"<literal>myAction</literal> won't include <literal>myWidget</literal> as it "
+"is not directly referenced by any of its methods. To get around this, "
+"<literal>MyWidget</literal> needs to be explicitly imported:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:187
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?myAction&amp;myWidget\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:188
+#, no-c-format
+msgid ""
+"This will then allow a <literal>myWidget</literal> object to be created with "
+"<literal>Seam.Component.newInstance(\"myWidget\")</literal>, which can then "
+"be passed to <literal>myAction.doSomethingWithObject()</literal>."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:191
+#, no-c-format
+msgid "Dates and Times"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:192
+#, no-c-format
+msgid ""
+"Date values are serialized into a String representation that is accurate to "
+"the millisecond. On the client side, use a Javascript Date object to work "
+"with date values. On the server side, use any <literal>java.util.Date</"
+"literal> (or descendent, such as <literal>java.sql.Date</literal> or "
+"<literal>java.sql.Timestamp</literal> class."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:195
+#, no-c-format
+msgid "Enums"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:196
+#, no-c-format
+msgid ""
+"On the client side, enums are treated the same as Strings. When setting the "
+"value for an enum parameter, simply use the String representation of the "
+"enum. Take the following component as an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:199
+#, no-c-format
+msgid ""
+"@Name(\"paintAction\")\n"
+"  public class paintAction implements paintLocal {\n"
+"    public enum Color {red, green, blue, yellow, orange, purple};\n"
+"\n"
+"    public void paint(Color color) {\n"
+"      // code\n"
+"    }    \n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:200
+#, no-c-format
+msgid ""
+"To call the <literal>paint()</literal> method with the color <literal>red</"
+"literal>, pass the parameter value as a String literal:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:203
+#, no-c-format
+msgid "Seam.Component.getInstance(\"paintAction\").paint(\"red\");"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:204
+#, no-c-format
+msgid ""
+"The inverse is also true - that is, if a component method returns an enum "
+"parameter (or contains an enum field anywhere in the returned object graph) "
+"then on the client-side it will be represented as a String."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:207
+#, no-c-format
+msgid "Collections"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:208
+#, no-c-format
+msgid "Bags"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:209
+#, no-c-format
+msgid ""
+"Bags cover all collection types including arrays, collections, lists, sets, "
+"(but excluding Maps - see the next section for those), and are implemented "
+"client-side as a Javascript array. When calling a component method that "
+"accepts one of these types as a parameter, your parameter should be a "
+"Javascript array. If a component method returns one of these types, then the "
+"return value will also be a Javascript array. The remoting framework is "
+"clever enough on the server side to convert the bag to an appropriate type "
+"for the component method call."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:212
+#, no-c-format
+msgid "Maps"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:213
+#, no-c-format
+msgid ""
+"As there is no native support for Maps within Javascript, a simple Map "
+"implementation is provided with the Seam Remoting framework. To create a Map "
+"which can be used as a parameter to a remote call, create a new "
+"<literal>Seam.Remoting.Map</literal> object:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:216
+#, no-c-format
+msgid "var map = new Seam.Remoting.Map();"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:217
+#, no-c-format
+msgid ""
+"This Javascript implementation provides basic methods for working with Maps: "
+"<literal>size()</literal>, <literal>isEmpty()</literal>, <literal>keySet()</"
+"literal>, <literal>values()</literal>, <literal>get(key)</literal>, "
+"<literal>put(key, value)</literal>, <literal>remove(key)</literal> and "
+"<literal>contains(key)</literal>. Each of these methods are equivalent to "
+"their Java counterpart. Where the method returns a collection, such as "
+"<literal>keySet()</literal> and <literal>values()</literal>, a Javascript "
+"Array object will be returned that contains the key or value objects "
+"(respectively)."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:220
+#, no-c-format
+msgid "Debugging"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:221
+#, no-c-format
+msgid ""
+"To aid in tracking down bugs, it is possible to enable a debug mode which "
+"will display the contents of all the packets send back and forth between the "
+"client and server in a popup window. To enable debug mode, either execute "
+"the <literal>setDebug()</literal> method in Javascript:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:224
+#, no-c-format
+msgid "Seam.Remoting.setDebug(true);"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:225
+#, no-c-format
+msgid "Or configure it via components.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:228
+#, no-c-format
+msgid "&lt;remoting:remoting debug=\"true\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:229
+#, no-c-format
+msgid ""
+"To turn off debugging, call <literal>setDebug(false)</literal>. If you want "
+"to write your own messages to the debug log, call <literal>Seam.Remoting.log"
+"(message)</literal>."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:233
+#, no-c-format
+msgid "The Loading Message"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:234
+#, no-c-format
+msgid ""
+"The default loading message that appears in the top right corner of the "
+"screen can be modified, its rendering customised or even turned off "
+"completely."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:237
+#, no-c-format
+msgid "Changing the message"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:238
+#, no-c-format
+msgid ""
+"To change the message from the default \"Please Wait...\" to something "
+"different, set the value of <literal>Seam.Remoting.loadingMessage</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:241
+#, no-c-format
+msgid "Seam.Remoting.loadingMessage = \"Loading...\";"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:243
+#, no-c-format
+msgid "Hiding the loading message"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:244
+#, no-c-format
+msgid ""
+"To completely suppress the display of the loading message, override the "
+"implementation of <literal>displayLoadingMessage()</literal> and "
+"<literal>hideLoadingMessage()</literal> with functions that instead do "
+"nothing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:247
+#, no-c-format
+msgid ""
+"// don't display the loading indicator\n"
+"  Seam.Remoting.displayLoadingMessage = function() {};\n"
+"  Seam.Remoting.hideLoadingMessage = function() {};"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:248
+#, no-c-format
+msgid "A Custom Loading Indicator"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:249
+#, no-c-format
+msgid ""
+"It is also possible to override the loading indicator to display an animated "
+"icon, or anything else that you want. To do this override the "
+"<literal>displayLoadingMessage()</literal> and <literal>hideLoadingMessage()"
+"</literal> messages with your own implementation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:252
+#, no-c-format
+msgid ""
+"Seam.Remoting.displayLoadingMessage = function() {\n"
+"    // Write code here to display the indicator\n"
+"  };\n"
+"  \n"
+"  Seam.Remoting.hideLoadingMessage = function() {\n"
+"    // Write code here to hide the indicator\n"
+"  };"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:253
+#, no-c-format
+msgid "Controlling what data is returned"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:254
+#, no-c-format
+msgid ""
+"When a remote method is executed, the result is serialized into an XML "
+"response that is returned to the client. This response is then unmarshaled "
+"by the client into a Javascript object. For complex types (i.e. Javabeans) "
+"that include references to other objects, all of these referenced objects "
+"are also serialized as part of the response. These objects may reference "
+"other objects, which may reference other objects, and so forth. If left "
+"unchecked, this object \"graph\" could potentially be enormous, depending on "
+"what relationships exist between your objects. And as a side issue (besides "
+"the potential verbosity of the response), you might also wish to prevent "
+"sensitive information from being exposed to the client."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:257
+#, no-c-format
+msgid ""
+"Seam Remoting provides a simple means to \"constrain\" the object graph, by "
+"specifying the <literal>exclude</literal> field of the remote method's "
+"<literal>@WebRemote</literal> annotation. This field accepts a String array "
+"containing one or more paths specified using dot notation. When invoking a "
+"remote method, the objects in the result's object graph that match these "
+"paths are excluded from the serialized result packet."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:260
+#, no-c-format
+msgid ""
+"For all our examples, we'll use the following <literal>Widget</literal> "
+"class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:263
+#, no-c-format
+msgid ""
+"@Name(\"widget\")\n"
+"public class Widget\n"
+"{\n"
+"  private String value;\n"
+"  private String secret;\n"
+"  private Widget child;\n"
+"  private Map&lt;String,Widget&gt; widgetMap;\n"
+"  private List&lt;Widget&gt; widgetList;\n"
+"  \n"
+"  // getters and setters for all fields\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:264
+#, no-c-format
+msgid "Constraining normal fields"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:265
+#, no-c-format
+msgid ""
+"If your remote method returns an instance of <literal>Widget</literal>, but "
+"you don't want to expose the <literal>secret</literal> field because it "
+"contains sensitive information, you would constrain it like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:268
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:269
+#, no-c-format
+msgid ""
+"The value \"secret\" refers to the <literal>secret</literal> field of the "
+"returned object. Now, suppose that we don't care about exposing this "
+"particular field to the client. Instead, notice that the <literal>Widget</"
+"literal> value that is returned has a field <literal>child</literal> that is "
+"also a <literal>Widget</literal>. What if we want to hide the "
+"<literal>child</literal>'s <literal>secret</literal> value instead? We can "
+"do this by using dot notation to specify this field's path within the "
+"result's object graph:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:272
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"child.secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:273
+#, no-c-format
+msgid "Constraining Maps and Collections"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:274
+#, no-c-format
+msgid ""
+"The other place that objects can exist within an object graph are within a "
+"<literal>Map</literal> or some kind of collection (<literal>List</literal>, "
+"<literal>Set</literal>, <literal>Array</literal>, etc). Collections are "
+"easy, and are treated like any other field. For example, if our "
+"<literal>Widget</literal> contained a list of other <literal>Widget</"
+"literal>s in its <literal>widgetList</literal> field, to constrain the "
+"<literal>secret</literal> field of the <literal>Widget</literal>s in this "
+"list the annotation would look like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:277
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetList.secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:278
+#, no-c-format
+msgid ""
+"To constrain a <literal>Map</literal>'s key or value, the notation is "
+"slightly different. Appending <literal>[key]</literal> after the "
+"<literal>Map</literal>'s field name will constrain the <literal>Map</"
+"literal>'s key object values, while <literal>[value]</literal> will "
+"constrain the value object values. The following example demonstrates how "
+"the values of the <literal>widgetMap</literal> field have their "
+"<literal>secret</literal> field constrained:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:281
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetMap[value].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:282
+#, no-c-format
+msgid "Constraining objects of a specific type"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:283
+#, no-c-format
+msgid ""
+"There is one last notation that can be used to constrain the fields of a "
+"type of object no matter where in the result's object graph it appears. This "
+"notation uses either the name of the component (if the object is a Seam "
+"component) or the fully qualified class name (only if the object is not a "
+"Seam component) and is expressed using square brackets:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:286
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"[widget].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:287
+#, no-c-format
+msgid "Combining Constraints"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:288
+#, no-c-format
+msgid ""
+"Constraints can also be combined, to filter objects from multiple paths "
+"within the object graph:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:291
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetList.secret\", \"widgetMap[value].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:292
+#, no-c-format
+msgid "JMS Messaging"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:293
+#, no-c-format
+msgid ""
+"Seam Remoting provides experimental support for JMS Messaging. This section "
+"describes the JMS support that is currently implemented, but please note "
+"that this may change in the future. It is currently not recommended that "
+"this feature is used within a production environment."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:297
+#, no-c-format
+msgid ""
+"Before you can subscribe to a JMS topic, you must first configure a list of "
+"the topics that can be subscribed to by Seam Remoting. List the topics under "
+"<literal>org.jboss.seam.remoting.messaging.subscriptionRegistry."
+"allowedTopics</literal> in <literal>seam.properties</literal>, <literal>web."
+"xml</literal> or <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:300 Remoting.xml:333
+#, no-c-format
+msgid "&lt;remoting:remoting poll-timeout=\"5\" poll-interval=\"1\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:301
+#, no-c-format
+msgid "Subscribing to a JMS Topic"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:302
+#, no-c-format
+msgid "The following example demonstrates how to subscribe to a JMS Topic:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:305
+#, no-c-format
+msgid ""
+"function subscriptionCallback(message)\n"
+"  {\n"
+"    if (message instanceof Seam.Remoting.TextMessage)\n"
+"      alert(\"Received message: \" + message.getText());\n"
+"  }        \n"
+"        \n"
+"  Seam.Remoting.subscribe(\"topicName\", subscriptionCallback);"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:306
+#, no-c-format
+msgid ""
+"The <literal>Seam.Remoting.subscribe()</literal> method accepts two "
+"parameters, the first being the name of the JMS Topic to subscribe to, the "
+"second being the callback function to invoke when a message is received."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:309
+#, no-c-format
+msgid ""
+"There are two types of messages supported, Text messages and Object "
+"messages. If you need to test for the type of message that is passed to your "
+"callback function you can use the <literal>instanceof</literal> operator to "
+"test whether the message is a <literal>Seam.Remoting.TextMessage</literal> "
+"or <literal>Seam.Remoting.ObjectMessage</literal>. A <literal>TextMessage</"
+"literal> contains the text value in its <literal>text</literal> field (or "
+"alternatively call <literal>getText()</literal> on it), while an "
+"<literal>ObjectMessage</literal> contains its object value in its "
+"<literal>object</literal> field (or call its <literal>getObject()</literal> "
+"method)."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:312
+#, no-c-format
+msgid "Unsubscribing from a Topic"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:313
+#, no-c-format
+msgid ""
+"To unsubscribe from a topic, call <literal>Seam.Remoting.unsubscribe()</"
+"literal> and pass in the topic name:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:316
+#, no-c-format
+msgid "Seam.Remoting.unsubscribe(\"topicName\");"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:317
+#, no-c-format
+msgid "Tuning the Polling Process"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:318
+#, no-c-format
+msgid ""
+"There are two parameters which you can modify to control how polling occurs. "
+"The first one is <literal>Seam.Remoting.pollInterval</literal>, which "
+"controls how long to wait between subsequent polls for new messages. This "
+"parameter is expressed in seconds, and its default setting is 10."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:321
+#, no-c-format
+msgid ""
+"The second parameter is <literal>Seam.Remoting.pollTimeout</literal>, and is "
+"also expressed as seconds. It controls how long a request to the server "
+"should wait for a new message before timing out and sending an empty "
+"response. Its default is 0 seconds, which means that when the server is "
+"polled, if there are no messages ready for delivery then an empty response "
+"will be immediately returned."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:324
+#, no-c-format
+msgid ""
+"Caution should be used when setting a high <literal>pollTimeout</literal> "
+"value; each request that has to wait for a message means that a server "
+"thread is tied up until a message is received, or until the request times "
+"out. If many such requests are being served simultaneously, it could mean a "
+"large number of threads become tied up because of this reason."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:327
+#, no-c-format
+msgid ""
+"It is recommended that you set these options via components.xml, however "
+"they can be overridden via Javascript if desired. The following example "
+"demonstrates how to configure the polling to occur much more aggressively. "
+"You should set these parameters to suitable values for your application:"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:330
+#, no-c-format
+msgid "Via components.xml:"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:334
+#, no-c-format
+msgid "Via JavaScript:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:337
+#, no-c-format
+msgid ""
+"// Only wait 1 second between receiving a poll response and sending the next "
+"poll request.\n"
+"  Seam.Remoting.pollInterval = 1;\n"
+"  \n"
+"  // Wait up to 5 seconds on the server for new messages\n"
+"  Seam.Remoting.pollTimeout = 5;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Security.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Security.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Security.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1676 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Security.xml:10
+#, no-c-format
+msgid "Security"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:11
+#, no-c-format
+msgid ""
+"The Seam Security API is an optional Seam feature that provides "
+"authentication and authorization features for securing both domain and page "
+"resources within your Seam project."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:14
+#, no-c-format
+msgid "Overview"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:15
+#, no-c-format
+msgid "Seam Security provides two different modes of operation:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:20
+#, no-c-format
+msgid ""
+"<emphasis>simplified mode</emphasis> - this mode supports authentication "
+"services and simple role-based security checks."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:25
+#, no-c-format
+msgid ""
+"<emphasis>advanced mode</emphasis> - this mode supports all the same "
+"features as the simplified mode, plus it offers rule-based security checks "
+"using JBoss Rules."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:30
+#, no-c-format
+msgid "Which mode is right for my application?"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:31
+#, no-c-format
+msgid ""
+"That all depends on the requirements of your application. If you have "
+"minimal security requirements, for example if you only wish to restrict "
+"certain pages and actions to users who are logged in, or who belong to a "
+"certain role, then the simplified mode will probably be sufficient. The "
+"advantages of this is a more simplified configuration, significantly less "
+"libraries to include, and a smaller memory footprint."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:34
+#, no-c-format
+msgid ""
+"If on the other hand, your application requires security checks based on "
+"contextual state or complex business rules, then you will require the "
+"features provided by the advanced mode."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:37
+#, no-c-format
+msgid "Requirements"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:38
+#, no-c-format
+msgid ""
+"If using the advanced mode features of Seam Security, the following jar "
+"files are required to be configured as modules in <literal>application.xml</"
+"literal>. If you are using Seam Security in simplified mode, these are "
+"<emphasis>not</emphasis> required:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:43
+#, no-c-format
+msgid "drools-compiler-3.0.5.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:48
+#, no-c-format
+msgid "drools-core-3.0.5.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:53
+#, no-c-format
+msgid "commons-jci-core-1.0-406301.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:58
+#, no-c-format
+msgid "commons-jci-janino-2.4.3.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:63
+#, no-c-format
+msgid "commons-lang-2.1.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:68
+#, no-c-format
+msgid "janino-2.4.3.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:73
+#, no-c-format
+msgid "stringtemplate-2.3b6.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:78
+#, no-c-format
+msgid "antlr-2.7.6.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:83
+#, no-c-format
+msgid "antlr-3.0ea8.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:88
+#, no-c-format
+msgid ""
+"For web-based security, <literal>jboss-seam-ui.jar</literal> must also be "
+"included in the application's war file. Also, to make use of the security EL "
+"functions, <literal>SeamFaceletViewHandler</literal> must be used. Configure "
+"it in <literal>faces-config.xml</literal> like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:91
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;view-handler&gt;org.jboss.seam.ui.facelet.SeamFaceletViewHandler&lt;/"
+"view-handler&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:92
+#, no-c-format
+msgid "Authentication"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:93
+#, no-c-format
+msgid ""
+"The authentication features provided by Seam Security are built upon JAAS "
+"(Java Authentication and Authorization Service), and as such provide a "
+"robust and highly configurable API for handling user authentication. "
+"However, for less complex authentication requirements Seam offers a much "
+"more simplified method of authentication that hides the complexity of JAAS."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:96
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:97
+#, no-c-format
+msgid ""
+"The simplified authentication method uses a built-in JAAS login module, "
+"<literal>SeamLoginModule</literal>, which delegates authentication to one of "
+"your own Seam components. This login module is already configured inside "
+"Seam as part of a default application policy and as such does not require "
+"any additional configuration files. It allows you to write an authentication "
+"method using the entity classes that are provided by your own application. "
+"Configuring this simplified form of authentication requires the "
+"<literal>identity</literal> component to be configured in "
+"<literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:100
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:security=\"http://jboss.com/products/seam/security\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core http://jboss.com/"
+"products/seam/core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components http://jboss.com/"
+"products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/drools http://jboss.com/"
+"products/seam/drools-1.2.xsd\"\n"
+"                 http://jboss.com/products/seam/security http://jboss.com/"
+"products/seam/security-1.2.xsd\"&gt;                \n"
+"        \n"
+"    &lt;security:identity authenticate-method=\"#{authenticator.authenticate}"
+"\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:101
+#, no-c-format
+msgid ""
+"If you wish to use the advanced security features such as rule-based "
+"permission checks, all you need to do is include the Drools (JBoss Rules) "
+"jars in your classpath, and add some additional configuration, described "
+"later."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:104
+#, no-c-format
+msgid ""
+"The EL expression <literal>#{authenticator.authenticate}</literal> is a "
+"method binding indicating that the <literal>authenticate</literal> method of "
+"the <literal>authenticator</literal> component will be used to authenticate "
+"the user."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:107
+#, no-c-format
+msgid "Writing an authentication method"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:108
+#, no-c-format
+msgid ""
+"The <literal>authenticate-method</literal> property specified for "
+"<literal>identity</literal> in <literal>components.xml</literal> specifies "
+"which method will be used by <literal>SeamLoginModule</literal> to "
+"authenticate users. This method takes no parameters, and is expected to "
+"return a boolean indicating whether authentication is successful or not. The "
+"user's username and password can be obtained from <literal>Identity.instance"
+"().getUsername()</literal> and <literal>Identity.instance().getPassword()</"
+"literal>, respectively. Any roles that the user is a member of should be "
+"assigned using <literal>Identity.instance().addRole()</literal>. Here's a "
+"complete example of an authentication method inside a JavaBean component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:111
+#, no-c-format
+msgid ""
+"@Name(\"authenticator\")\n"
+"public class Authenticator {\n"
+"   @In EntityManager entityManager;\n"
+"   \n"
+"   public boolean authenticate() {\n"
+"      try\n"
+"      {\n"
+"         User user = (User) entityManager.createQuery(\n"
+"            \"from User where username = :username and password = :password"
+"\")\n"
+"            .setParameter(\"username\", Identity.instance().getUsername())\n"
+"            .setParameter(\"password\", Identity.instance().getPassword())\n"
+"            .getSingleResult();\n"
+"\n"
+"         if (user.getRoles() != null)\n"
+"         {\n"
+"            for (UserRole mr : user.getRoles())\n"
+"               Identity.instance().addRole(mr.getName());\n"
+"         }\n"
+"\n"
+"         return true;\n"
+"      }\n"
+"      catch (NoResultException ex)\n"
+"      {\n"
+"         FacesMessages.instance().add(\"Invalid username/password\");\n"
+"         return false;\n"
+"      }\n"
+"      \n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:112
+#, no-c-format
+msgid ""
+"In the above example, both <literal>User</literal> and <literal>UserRole</"
+"literal> are application-specific entity beans. The <literal>roles</literal> "
+"parameter is populated with the roles that the user is a member of, which "
+"should be added to the <literal>Set</literal> as literal string values, e.g. "
+"\"admin\", \"user\". In this case, if the user record is not found and a "
+"<literal>NoResultException</literal> thrown, the authentication method "
+"returns <literal>false</literal> to indicate the authentication failed."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:115
+#, no-c-format
+msgid "Writing a login form"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:116
+#, no-c-format
+msgid ""
+"The <literal>Identity</literal> component provides both <literal>username</"
+"literal> and <literal>password</literal> properties, catering for the most "
+"common authentication scenario. These properties can be bound directly to "
+"the username and password fields on a login form. Once these properties are "
+"set, calling the <literal>identity.login()</literal> method will "
+"authenticate the user using the provided credentials. Here's an example of a "
+"simple login form:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:119
+#, no-c-format
+msgid ""
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"name\" value=\"Username\"/&gt;\n"
+"    &lt;h:inputText id=\"name\" value=\"#{identity.username}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"password\" value=\"Password\"/&gt;\n"
+"    &lt;h:inputSecret id=\"password\" value=\"#{identity.password}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;div&gt;\n"
+"    &lt;h:commandButton value=\"Login\" action=\"#{identity.login}\"/&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:120
+#, no-c-format
+msgid ""
+"Similarly, logging out the user is done by calling <literal>#{identity."
+"logout}</literal>. Calling this action will clear the security state of the "
+"currently authenticated user."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:123
+#, no-c-format
+msgid "Simplified Configuration - Summary"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:124
+#, no-c-format
+msgid ""
+"So to sum up, there are the three easy steps to configure authentication:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:129
+#, no-c-format
+msgid ""
+"Configure an authentication method in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:134
+#, no-c-format
+msgid "Write an authentication method."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:139
+#, no-c-format
+msgid "Write a login form so that the user can authenticate."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:144
+#, no-c-format
+msgid "Handling Security Exceptions"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:145
+#, no-c-format
+msgid ""
+"To prevent users from receiving the default error page in response to a "
+"security error, it's recommended that <literal>pages.xml</literal> is "
+"configured to redirect security errors to a more \"pretty\" page. The two "
+"main types of exceptions thrown by the security API are:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:150
+#, no-c-format
+msgid ""
+"<literal>NotLoggedInException</literal> - This exception is thrown if the "
+"user attempts to access a restricted action or page when they are not logged "
+"in."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:155
+#, no-c-format
+msgid ""
+"<literal>AuthorizationException</literal> - This exception is only thrown if "
+"the user is already logged in, and they have attempted to access a "
+"restricted action or page for which they do not have the necessary "
+"privileges."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:160
+#, no-c-format
+msgid ""
+"In the case of a <literal>NotLoggedInException</literal>, it is recommended "
+"that the user is redirected to either a login or registration page so that "
+"they can log in. For an <literal>AuthorizationException</literal>, it may be "
+"useful to redirect the user to an error page. Here's an example of a "
+"<literal>pages.xml</literal> file that redirects both of these security "
+"exceptions:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:163
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"\n"
+"    ...\n"
+"    \n"
+"    &lt;exception class=\"org.jboss.seam.security.NotLoggedInException"
+"\"&gt;\n"
+"        &lt;redirect view-id=\"/login.xhtml\"&gt;\n"
+"            &lt;message&gt;You must be logged in to perform this action&lt;/"
+"message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"    \n"
+"    &lt;exception class=\"org.jboss.seam.security.AuthorizationException"
+"\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"        &lt;redirect view-id=\"/security_error.xhtml\"&gt;\n"
+"            &lt;message&gt;\n"
+"                You do not have the necessary security privileges to perform "
+"this action.\n"
+"            &lt;/message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"  \n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:164
+#, no-c-format
+msgid ""
+"Most web applications require even more sophisticated handling of login "
+"redirection, so Seam includes some special functionality for handling this "
+"problem."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:167
+#, no-c-format
+msgid "Login Redirection"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:168
+#, no-c-format
+msgid ""
+"You can ask Seam to redirect the user to a login screen when an "
+"unauthenticated user tries to access a particular view (or wildcarded view "
+"id) as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:171
+#, no-c-format
+msgid ""
+"&lt;pages login-view-id=\"/login.xhtml\"&gt;\n"
+"\n"
+"    &lt;page view-id=\"/members/*\" login-required=\"true\"/&gt;\n"
+"    \n"
+"    ...\n"
+"    \n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:172
+#, no-c-format
+msgid ""
+"(This is less of a blunt instrument than the exception handler shown above, "
+"but should probably be used in conjunction with it.)"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:175
+#, no-c-format
+msgid ""
+"After the user logs in, we want to automatically send them back where they "
+"came from, so they can retry the action that required logging in. If you add "
+"the following event listeners to <literal>components.xml</literal>, attempts "
+"to access a restricted view while not logged in will be remembered, so that "
+"upon the user successfully logging in they will be redirected to the "
+"originally requested view, with any page parameters that existed in the "
+"original request."
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:178
+#, no-c-format
+msgid ""
+"&lt;event type=\"org.jboss.seam.notLoggedIn\"&gt;\n"
+"    &lt;action expression=\"#{redirect.captureCurrentView}\"/&gt;\n"
+"&lt;/event&gt;\n"
+"    \n"
+"&lt;event type=\"org.jboss.seam.postAuthenticate\"&gt;\n"
+"    &lt;action expression=\"#{redirect.returnToCapturedView}\"/&gt;\n"
+"&lt;/event&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:179
+#, no-c-format
+msgid ""
+"Note that login redirection is implemented as a conversation-scoped "
+"mechanism, so don't end the conversation in your <literal>authenticate()</"
+"literal> method."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:182
+#, no-c-format
+msgid "Advanced Authentication Features"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:183
+#, no-c-format
+msgid ""
+"This section explores some of the advanced features provided by the security "
+"API for addressing more complex security requirements."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:186
+#, no-c-format
+msgid "Using your container's JAAS configuration"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:187
+#, no-c-format
+msgid ""
+"If you would rather not use the simplified JAAS configuration provided by "
+"the Seam Security API, you may instead delegate to the default system JAAS "
+"configuration by providing a <literal>jaasConfigName</literal> property in "
+"<literal>components.xml</literal>. For example, if you are using JBoss AS "
+"and wish to use the <literal>other</literal> policy (which uses the "
+"<literal>UsersRolesLoginModule</literal> login module provided by JBoss AS), "
+"then the entry in <literal>components.xml</literal> would look like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:190
+#, no-c-format
+msgid ""
+"&lt;security:identity authenticate-method=\"#{authenticator.authenticate}"
+"\" \n"
+"                      jaas-config-name=\"other\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:191
+#, no-c-format
+msgid "Authorization"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:192
+#, no-c-format
+msgid ""
+"There are a number of authorization features provided by the Seam Security "
+"API for securing access to components, component methods, and pages. This "
+"section describes each of these. An important thing to note is that if you "
+"wish to use any of the advanced features (such as rule-based permissions) "
+"then your <literal>components.xml</literal> must be configured to support "
+"this - see the Configuration section above."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:195
+#, no-c-format
+msgid "Core concepts"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:196
+#, no-c-format
+msgid ""
+"Each of the authorization mechanisms provided by the Seam Security API are "
+"built upon the concept of a user being granted roles and/or permissions. A "
+"role is a <emphasis>group</emphasis>, or <emphasis>type</emphasis>, of user "
+"that may have been granted certain privileges for performing one or more "
+"specific actions within an application. A permission on the other hand is a "
+"privilege (sometimes once-off) for performing a single, specific action. It "
+"is entirely possible to build an application using nothing but permissions, "
+"however roles offer a higher level of convenience when granting privileges "
+"to groups of users."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:199
+#, no-c-format
+msgid ""
+"Roles are simple, consisting of only a name such as \"admin\", \"user\", "
+"\"customer\", etc. Permissions consist of both a name and an action, and are "
+"represented within this documentation in the form <literal>name:action</"
+"literal>, for example <literal>customer:delete</literal>, or "
+"<literal>customer:insert</literal>."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:202
+#, no-c-format
+msgid "Securing components"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:203
+#, no-c-format
+msgid ""
+"Let's start by examining the simplest form of authorization, component "
+"security, starting with the <literal>@Restrict</literal> annotation."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:206
+#, no-c-format
+msgid "The @Restrict annotation"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:207
+#, no-c-format
+msgid ""
+"Seam components may be secured either at the method or the class level, "
+"using the <literal>@Restrict</literal> annotation. If both a method and it's "
+"declaring class are annotated with <literal>@Restrict</literal>, the method "
+"restriction will take precedence (and the class restriction will not apply). "
+"If a method invocation fails a security check, then an exception will be "
+"thrown as per the contract for <literal>Identity.checkRestriction()</"
+"literal> (see Inline Restrictions). A <literal>@Restrict</literal> on just "
+"the component class itself is equivalent to adding <literal>@Restrict</"
+"literal> to each of its methods."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:210
+#, no-c-format
+msgid ""
+"An empty <literal>@Restrict</literal> implies a permission check of "
+"<literal>componentName:methodName</literal>. Take for example the following "
+"component method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:213
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class AccountAction {\n"
+"    @Restrict public void delete() {\n"
+"      ...\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:214
+#, no-c-format
+msgid ""
+"In this example, the implied permission required to call the <literal>delete"
+"()</literal> method is <literal>account:delete</literal>. The equivalent of "
+"this would be to write <literal>@Restrict(\"#{s:hasPermission"
+"('account','delete',null)}\")</literal>. Now let's look at another example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:217
+#, no-c-format
+msgid ""
+"@Restrict @Name(\"account\")\n"
+"public class AccountAction {\n"
+"    public void insert() {\n"
+"      ...\n"
+"    }\n"
+"    @Restrict(\"#{s:hasRole('admin')}\") \n"
+"    public void delete() {\n"
+"      ...\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:218
+#, no-c-format
+msgid ""
+"This time, the component class itself is annotated with <literal>@Restrict</"
+"literal>. This means that any methods without an overriding "
+"<literal>@Restrict</literal> annotation require an implicit permission "
+"check. In the case of this example, the <literal>insert()</literal> method "
+"requires a permission of <literal>account:insert</literal>, while the "
+"<literal>delete()</literal> method requires that the user is a member of the "
+"<literal>admin</literal> role."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:221
+#, no-c-format
+msgid ""
+"Before we go any further, let's address the <literal>#{s:hasRole()}</"
+"literal> expression seen in the above example. Both <literal>s:hasRole</"
+"literal> and <literal>s:hasPermission</literal> are EL functions, which "
+"delegate to the correspondingly named methods of the <literal>Identity</"
+"literal> class. These functions can be used within any EL expression "
+"throughout the entirety of the security API."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:224
+#, no-c-format
+msgid ""
+"Being an EL expression, the value of the <literal>@Restrict</literal> "
+"annotation may reference any objects that exist within a Seam context. This "
+"is extremely useful when performing permission checks for a specific object "
+"instance. Look at this example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:227
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class AccountAction {\n"
+"    @In Account selectedAccount;\n"
+"    @Restrict(\"#{s:hasPermission('account','modify',selectedAccount)}\")\n"
+"    public void modify() {\n"
+"        selectedAccount.modify();\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:228
+#, no-c-format
+msgid ""
+"The interesting thing to note from this example is the reference to "
+"<literal>selectedAccount</literal> seen within the <literal>hasPermission()</"
+"literal> function call. The value of this variable will be looked up from "
+"within the Seam context, and passed to the <literal>hasPermission()</"
+"literal> method in <literal>Identity</literal>, which in this case can then "
+"determine if the user has the required permission for modifying the "
+"specified <literal>Account</literal> object."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:231
+#, no-c-format
+msgid "Inline restrictions"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:232
+#, no-c-format
+msgid ""
+"Sometimes it might be desirable to perform a security check in code, without "
+"using the <literal>@Restrict</literal> annotation. In this situation, simply "
+"use <literal>Identity.checkRestriction()</literal> to evaluate a security "
+"expression, like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:235
+#, no-c-format
+msgid ""
+"public void deleteCustomer() {\n"
+"    Identity.instance().checkRestriction(\"#{s:hasPermission"
+"('customer','delete',\n"
+"        selectedCustomer)}\");\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:236
+#, no-c-format
+msgid ""
+"If the expression specified doesn't evaluate to <literal>true</literal>, "
+"either"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:241
+#, no-c-format
+msgid ""
+"if the user is not logged in, a <literal>NotLoggedInException</literal> "
+"exception is thrown or"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:246
+#, no-c-format
+msgid ""
+"if the user is logged in, an <literal>AuthorizationException</literal> "
+"exception is thrown."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:251
+#, no-c-format
+msgid ""
+"It is also possible to call the <literal>hasRole()</literal> and "
+"<literal>hasPermission()</literal> methods directly from Java code:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:254
+#, no-c-format
+msgid ""
+"if (!Identity.instance().hasRole(\"admin\"))\n"
+"     throw new AuthorizationException(\"Must be admin to perform this action"
+"\");\n"
+"\n"
+"if (!Identity.instance().hasPermission(\"customer\", \"create\", null))\n"
+"     throw new AuthorizationException(\"You may not create new customers\");"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:255
+#, no-c-format
+msgid "Security in the user interface"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:256
+#, no-c-format
+msgid ""
+"One indication of a well designed user interface is that the user is not "
+"presented with options for which they don't have the necessary privileges to "
+"use. Seam Security allows conditional rendering of either 1) sections of a "
+"page or 2) individual controls, based upon the privileges of the user, using "
+"the very same EL expressions that are used for component security."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:259
+#, no-c-format
+msgid ""
+"Let's take a look at some examples of interface security. First of all, "
+"let's pretend that we have a login form that should only be rendered if the "
+"user is not already logged in. Using the <literal>identity.isLoggedIn()</"
+"literal> property, we can write this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:262
+#, no-c-format
+msgid ""
+"&lt;h:form class=\"loginForm\" rendered=\"#{not identity.loggedIn}\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:263
+#, no-c-format
+msgid ""
+"If the user isn't logged in, then the login form will be rendered - very "
+"straight forward so far. Now let's pretend there is a menu on the page that "
+"contains some actions which should only be accessible to users in the "
+"<literal>manager</literal> role. Here's one way that these could be written:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:266
+#, no-c-format
+msgid ""
+"&lt;h:outputLink action=\"#{reports.listManagerReports}\" rendered=\"#{s:"
+"hasRole('manager')}\"&gt;\n"
+"    Manager Reports\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:267
+#, no-c-format
+msgid ""
+"This is also quite straight forward. If the user is not a member of the "
+"<literal>manager</literal> role, then the outputLink will not be rendered. "
+"The <literal>rendered</literal> attribute can generally be used on the "
+"control itself, or on a surrounding <literal>&lt;s:div&gt;</literal> or "
+"<literal>&lt;s:span&gt;</literal> control."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:270
+#, no-c-format
+msgid ""
+"Now for something more complex. Let's say you have a <literal>h:dataTable</"
+"literal> control on a page listing records for which you may or may not wish "
+"to render action links depending on the user's privileges. The <literal>s:"
+"hasPermission</literal> EL function allows us to pass in an object parameter "
+"which can be used to determine whether the user has the requested permission "
+"for that object or not. Here's how a dataTable with secured links might look:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:273
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{clients}\" var=\"cl\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Name&lt;/f:facet&gt;\n"
+"        #{cl.name}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;City&lt;/f:facet&gt;\n"
+"        #{cl.city}\n"
+"    &lt;/h:column&gt;   \n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"        &lt;s:link value=\"Modify Client\" action=\"#{clientAction.modify}"
+"\"\n"
+"                rendered=\"#{s:hasPermission('client','modify',cl)\"/&gt;\n"
+"        &lt;s:link value=\"Delete Client\" action=\"#{clientAction.delete}"
+"\"\n"
+"                rendered=\"#{s:hasPermission('client','delete',cl)\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:274
+#, no-c-format
+msgid "Securing pages"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:275
+#, no-c-format
+msgid ""
+"Page security requires that the application is using a <literal>pages.xml</"
+"literal> file, however is extremely simple to configure. Simply include a "
+"<literal>&lt;restrict/&gt;</literal> element within the <literal>page</"
+"literal> elements that you wish to secure. By default, if a value is not "
+"provided for the <literal>restrict</literal> element, an implied permission "
+"of <literal>{viewId}:render</literal> will be checked for whenever accessing "
+"that page. Otherwise the value will be evaluated as a standard security "
+"expression. Here's a couple of examples:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:278
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/settings.xhtml\"&gt;\n"
+"    &lt;restrict/&gt;\n"
+"&lt;/page&gt;\n"
+"        \n"
+"&lt;page view-id=\"/reports.xhtml\"&gt;    \n"
+"    &lt;restrict&gt;#{s:hasRole('admin')}&lt;/restrict&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:279
+#, no-c-format
+msgid ""
+"In the above example, the first page has an implied permission restriction "
+"of <literal>/settings.xhtml:render</literal>, while the second one checks "
+"that the user is a member of the <literal>admin</literal> role."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:282
+#, no-c-format
+msgid "Securing Entities"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:283
+#, no-c-format
+msgid ""
+"Seam security also makes it possible to apply security restrictions to read, "
+"insert, update and delete actions for entities."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:286
+#, no-c-format
+msgid ""
+"To secure all actions for an entity class, add a <literal>@Restrict</"
+"literal> annotation on the class itself:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:289
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"customer\")\n"
+"@Restrict\n"
+"public class Customer {\n"
+"  ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:290
+#, no-c-format
+msgid ""
+"If no expression is specified in the <literal>@Restrict</literal> "
+"annotation, the default security check that is performed is a permission "
+"check of <literal>entityName:action</literal>, where <literal>entityName</"
+"literal> is the name of the entity (or the class name if no @Name is "
+"specified), and the <literal>action</literal> is either <literal>read</"
+"literal>, <literal>insert</literal>, <literal>update</literal> or "
+"<literal>delete</literal>."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:293
+#, no-c-format
+msgid ""
+"It is also possible to only restrict certain actions, by placing a "
+"<literal>@Restrict</literal> annotation on the relevent entity lifecycle "
+"method (annotated as follows):"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:298
+#, no-c-format
+msgid ""
+"<literal>@PostLoad</literal> - Called after an entity instance is loaded "
+"from the database. Use this method to configure a <literal>read</literal> "
+"permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:303
+#, no-c-format
+msgid ""
+"<literal>@PrePersist</literal> - Called before a new instance of the entity "
+"is inserted. Use this method to configure an <literal>insert</literal> "
+"permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:308
+#, no-c-format
+msgid ""
+"<literal>@PreUpdate</literal> - Called before an entity is updated. Use this "
+"method to configure an <literal>update</literal> permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:313
+#, no-c-format
+msgid ""
+"<literal>@PreRemove</literal> - Called before an entity is deleted. Use this "
+"method to configure a <literal>delete</literal> permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:318
+#, no-c-format
+msgid ""
+"Here's an example of how an entity would be configured to perform a security "
+"check for any <literal>insert</literal> operations. Please note that the "
+"method is not required to do anything, the only important thing in regard to "
+"security is how it is annotated:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:321
+#, no-c-format
+msgid ""
+"@PrePersist @Restrict\n"
+"  public void prePersist() {}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:322
+#, no-c-format
+msgid ""
+"And here's an example of an entity permission rule that checks if the "
+"authenticated user is allowed to create a new blog entry (from the seamspace "
+"example):"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:325
+#, no-c-format
+msgid ""
+"rule InsertMemberBlog\n"
+"  no-loop\n"
+"  activation-group \"permissions\"\n"
+"when\n"
+"  c: PermissionCheck(name == \"memberBlog\", action == \"insert\", granted "
+"== false)\n"
+"  Principal(nm : name)\n"
+"  MemberBlog(mbr : member -&gt; (mbr.getUsername().equals(nm)))\n"
+"then\n"
+"  c.grant();\n"
+"  modify(c);\n"
+"end;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:326
+#, no-c-format
+msgid ""
+"Finally, we need to install a listener class that integrates Seam security "
+"with your JPA provider."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:329
+#, no-c-format
+msgid "Entity security with JPA"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:330
+#, no-c-format
+msgid ""
+"Security checks for EJB3 entity beans are performed with an "
+"<literal>EntityListener</literal>. You can install this listener by using "
+"the following <literal>META-INF/orm.xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:333
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;entity-mappings xmlns=\"http://java.sun.com/xml/ns/persistence/orm\"\n"
+"                 xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"                 xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence/"
+"orm \n"
+"                 http://java.sun.com/xml/ns/persistence/orm_1_0.xsd\"\n"
+"                 version=\"1.0\"&gt;\n"
+"                 \n"
+"    &lt;persistence-unit-metadata&gt;\n"
+"        &lt;persistence-unit-defaults&gt;\n"
+"            &lt;entity-listeners&gt;\n"
+"                &lt;entity-listener class=\"org.jboss.seam.security."
+"EntitySecurityListener\"/&gt;\n"
+"            &lt;/entity-listeners&gt;\n"
+"        &lt;/persistence-unit-defaults&gt;\n"
+"    &lt;/persistence-unit-metadata&gt;\n"
+"    \n"
+"&lt;/entity-mappings&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:334
+#, no-c-format
+msgid "Entity security with Hibernate"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:335
+#, no-c-format
+msgid ""
+"If you are using a Hibernate <literal>SessionFactory</literal> configured "
+"via Seam, you don't need to do anything special to use entity security."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:338
+#, no-c-format
+msgid "Writing Security Rules"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:339
+#, no-c-format
+msgid ""
+"Up to this point there has been a lot of mention of permissions, but no "
+"information about how permissions are actually defined or granted. This "
+"section completes the picture, by explaining how permission checks are "
+"processed, and how to implement permission checks for a Seam application."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:342
+#, no-c-format
+msgid "Permissions Overview"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:343
+#, no-c-format
+msgid ""
+"So how does the security API know whether a user has the <literal>customer:"
+"modify</literal> permission for a specific customer? Seam Security provides "
+"quite a novel method for determining user permissions, based on JBoss Rules. "
+"A couple of the advantages of using a rule engine are 1) a centralized "
+"location for the business logic that is behind each user permission, and 2) "
+"speed - JBoss Rules uses very efficient algorithms for evaluating large "
+"numbers of complex rules involving multiple conditions."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:346
+#, no-c-format
+msgid "Configuring a rules file"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:347
+#, no-c-format
+msgid ""
+"Seam Security expects to find a <literal>RuleBase</literal> component called "
+"<literal>securityRules</literal> which it uses to evaluate permission "
+"checks. This is configured in <literal>components.xml</literal> as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:350
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:security=\"http://jboss.com/products/seam/security\"\n"
+"            xmlns:drools=\"http://jboss.com/products/seam/drools\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                     http://jboss.com/products/seam/core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components  \n"
+"                     http://jboss.com/products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/drools \n"
+"                     http://jboss.com/products/seam/drools-1.2.xsd\"\n"
+"                 http://jboss.com/products/seam/security \n"
+"                     http://jboss.com/products/seam/security-1.2.xsd"
+"\"&gt;                 \n"
+"        \n"
+"   &lt;drools:rule-base name=\"securityRules\"&gt;\n"
+"       &lt;drools:rule-files&gt;\n"
+"           &lt;value&gt;/META-INF/security.drl&lt;/value&gt;\n"
+"       &lt;/drools:rule-files&gt;\n"
+"   &lt;/drools:rule-base&gt;    \n"
+"   \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:351
+#, no-c-format
+msgid ""
+"Once the <literal>RuleBase</literal> component is configured, it's time to "
+"write the security rules."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:354
+#, no-c-format
+msgid "Creating a security rules file"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:355
+#, no-c-format
+msgid ""
+"For this step you need to create a file called <literal>security.drl</"
+"literal> in the <literal>/META-INF</literal> directory of your application's "
+"jar file. In actual fact this file can be called anything you want, and "
+"exist in any location as long as it is configured appropriately in "
+"<literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:358
+#, no-c-format
+msgid ""
+"So what should the security rules file contain? At this stage it might be a "
+"good idea to at least skim through the JBoss Rules documentation, however to "
+"get started here's an extremely simple example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:361
+#, no-c-format
+msgid ""
+"package MyApplicationPermissions;\n"
+"\n"
+"import org.jboss.seam.security.PermissionCheck;\n"
+"import org.jboss.seam.security.Role;\n"
+"\n"
+"rule CanUserDeleteCustomers\n"
+"when\n"
+"  c: PermissionCheck(name == \"customer\", action == \"delete\")\n"
+"  Role(name == \"admin\")\n"
+"then\n"
+"  c.grant();\n"
+"end;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:362
+#, no-c-format
+msgid ""
+"Let's break this down. The first thing we see is the package declaration. A "
+"package in JBoss Rules is essentially a collection of rules. The package "
+"name can be anything you want - it doesn't relate to anything else outside "
+"the scope of the rule base."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:365
+#, no-c-format
+msgid ""
+"The next thing we can notice is a couple of import statements for the "
+"<literal>PermissionCheck</literal> and <literal>Role</literal> classes. "
+"These imports inform the rules engine that we'll be referencing these "
+"classes within our rules."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:368
+#, no-c-format
+msgid ""
+"Finally we have the code for the rule. Each rule within a package should be "
+"given a unique name (usually describing the purpose of the rule). In this "
+"case our rule is called <literal>CanUserDeleteCustomers</literal> and will "
+"be used to check whether a user is allowed to delete a customer record."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:371
+#, no-c-format
+msgid ""
+"Looking at the body of the rule definition we can notice two distinct "
+"sections. Rules have what is known as a left hand side (LHS) and a right "
+"hand side (RHS). The LHS consists of the conditional part of the rule, i.e. "
+"a list of conditions which must be satisfied for the rule to fire. The LHS "
+"is represented by the <literal>when</literal> section. The RHS is the "
+"consequence, or action section of the rule that will only be fired if all of "
+"the conditions in the LHS are met. The RHS is represented by the "
+"<literal>then</literal> section. The end of the rule is denoted by the "
+"<literal>end;</literal> line."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:374
+#, no-c-format
+msgid ""
+"If we look at the LHS of the rule, we see two conditions listed there. Let's "
+"examine the first condition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:377
+#, no-c-format
+msgid "c: PermissionCheck(name == \"customer\", action == \"delete\")"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:378
+#, no-c-format
+msgid ""
+"In plain english, this condition is stating that there must exist a "
+"<literal>PermissionCheck</literal> object with a <literal>name</literal> "
+"property equal to \"customer\", and an <literal>action</literal> property "
+"equal to \"delete\" within the working memory. What is the working memory? "
+"It is a session-scoped object that contains the contextual information that "
+"is required by the rules engine to make a decision about a permission check. "
+"Each time the <literal>hasPermission()</literal> method is called, a "
+"temporary <literal>PermissionCheck</literal> object, or <emphasis>Fact</"
+"emphasis>, is asserted into the working memory. This "
+"<literal>PermissionCheck</literal> corresponds exactly to the permission "
+"that is being checked, so for example if you call <literal>hasPermission"
+"(\"account\", \"create\", null)</literal> then a <literal>PermissionCheck</"
+"literal> object with a <literal>name</literal> equal to \"account\" and "
+"<literal>action</literal> equal to \"create\" will be asserted into the "
+"working memory for the duration of the permission check."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:381
+#, no-c-format
+msgid ""
+"So what else is in the working memory? Besides the short-lived temporary "
+"facts asserted during a permission check, there are some longer-lived "
+"objects in the working memory that stay there for the entire duration of a "
+"user being authenticated. These include any <literal>java.security."
+"Principal</literal> objects that are created as part of the authentication "
+"process, plus a <literal>org.jboss.seam.security.Role</literal> object for "
+"each of the roles that the user is a member of. It is also possible to "
+"assert additional long-lived facts into the working memory by calling "
+"<literal>Identity.instance().getSecurityContext().assertObject()</literal>, "
+"passing the object as a parameter."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:384
+#, no-c-format
+msgid ""
+"Getting back to our simple example, we can also notice that the first line "
+"of our LHS is prefixed with <literal>c:</literal>. This is a variable "
+"binding, and is used to refer back to the object that is matched by the "
+"condition. Moving onto the second line of our LHS, we see this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:387
+#, no-c-format
+msgid "Role(name == \"admin\")"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:388
+#, no-c-format
+msgid ""
+"This condition simply states that there must be a <literal>Role</literal> "
+"object with a <literal>name</literal> of \"admin\" within the working "
+"memory. As mentioned, user roles are asserted into the working memory as "
+"long-lived facts. So, putting both conditions together, this rule is "
+"essentially saying \"I will fire if you are checking for the "
+"<literal>customer:delete</literal> permission and the user is a member of "
+"the <literal>admin</literal> role\"."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:391
+#, no-c-format
+msgid ""
+"So what is the consequence of the rule firing? Let's take a look at the RHS "
+"of the rule:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:394
+#, no-c-format
+msgid "c.grant()"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:395
+#, no-c-format
+msgid ""
+"The RHS consists of Java code, and in this case is invoking the "
+"<literal>grant()</literal> method of the <literal>c</literal> object, which "
+"as already mentioned is a variable binding for the <literal>PermissionCheck</"
+"literal> object. Besides the <literal>name</literal> and <literal>action</"
+"literal> properties of the <literal>PermissionCheck</literal> object, there "
+"is also a <literal>granted</literal> property which is initially set to "
+"<literal>false</literal>. Calling <literal>grant()</literal> on a "
+"<literal>PermissionCheck</literal> sets the <literal>granted</literal> "
+"property to <literal>true</literal>, which means that the permission check "
+"was successful, allowing the user to carry out whatever action the "
+"permission check was intended for."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:398
+#, no-c-format
+msgid "SSL Security"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:399
+#, no-c-format
+msgid ""
+"Seam includes basic support for serving sensitive pages via the HTTPS "
+"protocol. This is easily configured by specifying a <literal>scheme</"
+"literal> for the page in <literal>pages.xml</literal>. The following example "
+"shows how the view <literal>/login.xhtml</literal> is configured to use "
+"HTTPS:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:402
+#, no-c-format
+msgid "&lt;page view-id=\"/login.xhtml\" scheme=\"https\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:403
+#, no-c-format
+msgid ""
+"This configuration is automatically extended to both <literal>s:link</"
+"literal> and <literal>s:button</literal> JSF controls, which (when "
+"specifying the <literal>view</literal>) will also render the link using the "
+"correct protocol. Based on the previous example, the following link will use "
+"the HTTPS protocol because <literal>/login.xhtml</literal> is configured to "
+"use it:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:406
+#, no-c-format
+msgid "&lt;s:link view=\"/login.xhtml\" value=\"Login\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:407
+#, no-c-format
+msgid ""
+"Browsing directly to a view when using the <emphasis>incorrect</emphasis> "
+"protocol will cause a redirect to the same view using the <emphasis>correct</"
+"emphasis> protocol. For example, browsing to a page that has <literal>scheme="
+"\"https\"</literal> using HTTP will cause a redirect to the same page using "
+"HTTPS."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:410
+#, no-c-format
+msgid ""
+"It is also possible to configure a default <literal>scheme</literal> for all "
+"pages. This is actually quite important, as you might only wish to use HTTPS "
+"for a few pages, and if no default scheme is specified then the default "
+"behavior is to continue using the current scheme. What this means is that "
+"once you enter a page with HTTPS, then HTTPS will continue to be used even "
+"if you navigate away to other non-HTTPS pages (a bad thing!). So it is "
+"strongly recommended to include a default <literal>scheme</literal>, by "
+"configuring it on the default (<literal>\"*\"</literal>) view:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:413
+#, no-c-format
+msgid "&lt;page view-id=\"*\" scheme=\"http\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:414
+#, no-c-format
+msgid ""
+"Of course, if <emphasis>none</emphasis> of the pages in your application use "
+"HTTPS then it is not required to specify a default scheme."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:417
+#, no-c-format
+msgid "Implementing a Captcha Test"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:418
+#, no-c-format
+msgid ""
+"Though strictly not part of the security API, it might be useful in certain "
+"circumstances (such as new user registrations, posting to a public blog or "
+"forum) to implement a Captcha (<emphasis>C</emphasis>ompletely <emphasis>A</"
+"emphasis>utomated <emphasis>P</emphasis>ublic <emphasis>T</emphasis>uring "
+"test to tell <emphasis>C</emphasis>omputers and <emphasis>H</emphasis>umans "
+"<emphasis>A</emphasis>part) to prevent automated bots from interacting with "
+"your application. Seam provides seamless integration with JCaptcha, an "
+"excellent library for generating Captcha challenges. If you wish to use the "
+"captcha feature in your application you need to include the jcaptcha-* jar "
+"file from the Seam lib directory in your project, and register it in "
+"<literal>application.xml</literal> as a java module."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:421
+#, no-c-format
+msgid "Configuring the Captcha Servlet"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:422
+#, no-c-format
+msgid ""
+"To get up and running, it is necessary to configure the Seam Resource "
+"Servlet, which will provide the Captcha challenge images to your pages. This "
+"requires the following entry in <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:425
+#, no-c-format
+msgid ""
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"    \n"
+"&lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:426
+#, no-c-format
+msgid "Adding a Captcha to a page"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:427
+#, no-c-format
+msgid ""
+"Adding a captcha challenge to a page is extremely easy. Seam provides a page-"
+"scoped component, <literal>captcha</literal>, which provides everything that "
+"is required, including built-in captcha validation. Here's an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:430
+#, no-c-format
+msgid ""
+"&lt;div&gt;\n"
+"    &lt;h:graphicImage value=\"/seam/resource/captcha?#{captcha.id}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"  \n"
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"verifyCaptcha\"&gt;Enter the above letters&lt;/h:"
+"outputLabel&gt;\n"
+"    &lt;h:inputText id=\"verifyCaptcha\" value=\"#{captcha.response}\" "
+"required=\"true\"/&gt;\n"
+"    &lt;div class=\"validationError\"&gt;&lt;h:message for=\"verifyCaptcha\"/"
+"&gt;&lt;/div&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:431
+#, no-c-format
+msgid ""
+"That's all there is to it. The <literal>graphicImage</literal> control "
+"displays the Captcha challenge, and the <literal>inputText</literal> "
+"receives the user's response. The response is automatically validated "
+"against the Captcha when the form is submitted."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Spring.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Spring.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Spring.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,416 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Spring.xml:10
+#, no-c-format
+msgid "Spring Framework integration"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:11
+#, no-c-format
+msgid ""
+"The Spring integration module allows easy migration of Spring-based projects "
+"to Seam and allows Spring applications to take advantage of key Seam "
+"features like conversations and Seam's more sophisticated persistence "
+"context management."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:14
+#, no-c-format
+msgid "Seam's support for Spring provides the ability to:"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:19
+#, no-c-format
+msgid "inject Seam component instances into Spring beans"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:24
+#, no-c-format
+msgid "inject Spring beans into Seam components"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:29
+#, no-c-format
+msgid "turn Spring beans into Seam components"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:34
+#, no-c-format
+msgid "allow Spring beans to live in any Seam context"
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:40
+#, no-c-format
+msgid "Injecting Seam components into Spring beans"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:41
+#, no-c-format
+msgid ""
+"Injecting Seam component instances into Spring beans is accomplished using "
+"the <literal>&lt;seam:instance/&gt;</literal> namespace handler. To enable "
+"the Seam namespace handler, the Seam namespace must be added to the Spring "
+"beans definition file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:44
+#, no-c-format
+msgid ""
+"&lt;beans xmlns=\"http://www.springframework.org/schema/beans\"\n"
+"    xmlns:seam=\"http://jboss.com/products/seam/spring\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://www.springframework.org/schema/beans \n"
+"                        http://www.springframework.org/schema/beans/spring-"
+"beans-2.0.xsd\n"
+"                        http://jboss.com/products/seam/spring \n"
+"                        http://jboss.com/products/seam/spring-1.2.xsd\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:45
+#, no-c-format
+msgid "Now any Seam component may be injected into any Spring bean:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:48
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\"&gt;\n"
+"        &lt;seam:instance name=\"someComponent\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:49
+#, no-c-format
+msgid "An EL expression may be used instead of a component name:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:52
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\"&gt;\n"
+"        &lt;seam:instance name=\"#{someExpression}\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:53
+#, no-c-format
+msgid ""
+"Seam component instances may even be made available for injection into "
+"Spring beans by a Spring bean id."
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:56
+#, no-c-format
+msgid ""
+"&lt;seam:instance name=\"someComponent\" id=\"someSeamComponentInstance\"/"
+"&gt;\n"
+"\n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\" ref=\"someSeamComponentInstance"
+"\"&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:57
+#, no-c-format
+msgid "Now for the caveat!"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:60
+#, no-c-format
+msgid ""
+"Seam was designed from the ground up to support a stateful component model "
+"with multiple contexts. Spring was not. Unlike Seam bijection, Spring "
+"injection does not occur at method invocation time. Instead, injection "
+"happens only when the Spring bean is instantiated. So the instance available "
+"when the bean is instantiated will be the same instance that the bean uses "
+"for the entire life of the bean. For example, if a Seam "
+"<literal>CONVERSATION</literal>-scoped component instance is directly "
+"injected into a singleton Spring bean, that singleton will hold a reference "
+"to the same instance long after the conversation is over! We call this "
+"problem <emphasis>scope impedance</emphasis>. Seam bijection ensures that "
+"scope impedance is maintained naturally as an invocation flows through the "
+"system. In Spring, we need to inject a proxy of the Seam component, and "
+"resolve the reference when the proxy is invoked."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:63
+#, no-c-format
+msgid ""
+"The <literal>&lt;seam:instance/&gt;</literal> tag lets us automatically "
+"proxy the Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:66
+#, no-c-format
+msgid ""
+"&lt;seam:instance id=\"seamManagedEM\" name=\"someManagedEMComponent\" proxy="
+"\"true\"/&gt;\n"
+"        \n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\"&gt;\n"
+"    &lt;property name=\"entityManager\" ref=\"seamManagedEM\"&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:67
+#, no-c-format
+msgid ""
+"This example shows one way to use a Seam-managed persistence context from a "
+"Spring bean. (A more robust way to use Seam-managed persistence contexts as "
+"a replacement for the Spring <literal>OpenEntityManagerInView</literal> "
+"filter will be provided in a future release)"
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:73
+#, no-c-format
+msgid "Injecting Spring beans into Seam components"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:74
+#, no-c-format
+msgid ""
+"It is even easier to inject Spring beans into Seam component instances. "
+"Actually, there are two possible approaches:"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:79
+#, no-c-format
+msgid "inject a Spring bean using an EL expression"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:84
+#, no-c-format
+msgid "make the Spring bean a Seam component"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:89
+#, no-c-format
+msgid ""
+"We'll discuss the second option in the next section. The easiest approach is "
+"to access the Spring beans via EL."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:92
+#, no-c-format
+msgid ""
+"The Spring <literal>DelegatingVariableResolver</literal> is an integration "
+"point Spring provides for integrating Spring with JSF. This "
+"<literal>VariableResolver</literal> makes all Spring beans available in EL "
+"by their bean id. You'll need to add the "
+"<literal>DelegatingVariableResolver</literal> to <literal>faces-config.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:95
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;variable-resolver&gt;\n"
+"        org.springframework.web.jsf.DelegatingVariableResolver\n"
+"    &lt;/variable-resolver&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:96
+#, no-c-format
+msgid "Then you can inject Spring beans using <literal>@In</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:99
+#, no-c-format
+msgid ""
+"@In(\"#{bookingService}\")\n"
+"private BookingService bookingService;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:100
+#, no-c-format
+msgid ""
+"The use of Spring beans in EL is not limited to injection. Spring beans may "
+"be used anywhere that EL expressions are used in Seam: process and pageflow "
+"definitions, working memory assertions, etc..."
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:106
+#, no-c-format
+msgid "Making a Spring bean into a Seam component"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:107
+#, no-c-format
+msgid ""
+"The <literal>&lt;seam:component/&gt;</literal> namespace handler can be used "
+"to make any Spring bean a Seam component. Just place the <literal>&lt;seam:"
+"component/&gt;</literal> tag within the declaration of the bean that you "
+"wish to be a Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:110
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;seam:component/&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:111
+#, no-c-format
+msgid ""
+"By default, <literal>&lt;seam:component/&gt;</literal> will create a "
+"<literal>STATELESS</literal> Seam component with class and name provided in "
+"the bean definition. Occasionally, such as when a <literal>FactoryBean</"
+"literal> is used, the class of the Spring bean may not be the class "
+"appearing in the bean definition. In such cases the <literal>beanClass</"
+"literal> should be explicitly specified. A Seam component name may be "
+"explicitly specified in cases where there is potential for a naming conflict."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:114
+#, no-c-format
+msgid ""
+"The <literal>scope</literal> attribute of <literal>&lt;seam:component/&gt;</"
+"literal> may be used if you wish the Spring bean to be managed in a "
+"particular Seam scope. The Spring bean must be scoped to <literal>prototype</"
+"literal> if the Seam scope specified is anything other than "
+"<literal>STATELESS</literal>. Pre-existing Spring beans usually have a "
+"fundamentally stateless character, so this attribute is not usually needed."
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:120
+#, no-c-format
+msgid "Seam-scoped Spring beans"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:121
+#, no-c-format
+msgid ""
+"The Seam integration package also lets you use Seam's contexts as Spring 2.0 "
+"style custom scopes. This lets you declare any Spring bean in any of Seam's "
+"contexts. However, note once again that Spring's component model was never "
+"architected to support statefulness, so please use this feature with great "
+"care. In particular, clustering of session or conversation scoped Spring "
+"beans is deeply problematic, and care must be taken when injecting a bean or "
+"component from a wider scope into a bean of a narrower scope."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:124
+#, no-c-format
+msgid ""
+"By specifying <literal>&lt;seam:configure-scopes/&gt;</literal> once in a "
+"Spring bean factory configuration, all of the Seam scopes will be available "
+"to Spring beans as custom scopes. To associate a Spring bean with a "
+"particular Seam scope, specify the Seam scope in the <literal>scope</"
+"literal> attribute of the bean definition."
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:127
+#, no-c-format
+msgid ""
+"&lt;!-- Only needs to be specified once per bean factory--&gt;\n"
+"&lt;seam:configure-scopes/&gt;\n"
+"\n"
+"...\n"
+"\n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope=\"seam."
+"CONVERSATION\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:128
+#, no-c-format
+msgid ""
+"The prefix of the scope name may be changed by specifying the "
+"<literal>prefix</literal> attribute in the <literal>configure-scopes</"
+"literal> definition. (The default prefix is <literal>seam.</literal>)"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:131
+#, no-c-format
+msgid ""
+"Seam-scoped Spring beans defined this way can be injected into other Spring "
+"beans without the use of <literal>&lt;seam:instance/&gt;</literal>. However, "
+"care must be taken to ensure scope impedance is maintained. The normal "
+"approach used in Spring is to specify <literal>&lt;aop:scoped-proxy/&gt;</"
+"literal> in the bean definition. However, Seam-scoped Spring beans are "
+"<emphasis>not</emphasis> compatible with <literal>&lt;aop:scoped-proxy/&gt;</"
+"literal>. So if you need to inject a Seam-scoped Spring bean into a "
+"singleton, <literal>&lt;seam:instance/&gt;</literal> must be used:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:134
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope=\"seam."
+"CONVERSATION\"/&gt;\n"
+"\n"
+"...\n"
+"\n"
+"&lt;bean id=\"someSingleton\"&gt;\n"
+"    &lt;property name=\"someSeamScopedSpringBean\"&gt;\n"
+"        &lt;seam:instance name=\"someSpringBean\" proxy=\"true\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Testing.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Testing.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Testing.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,342 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Testing.xml:10
+#, no-c-format
+msgid "Testing Seam applications"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:11
+#, no-c-format
+msgid ""
+"Most Seam applications will need at least two kinds of automated tests: "
+"<emphasis>unit tests</emphasis>, which test a particular Seam component in "
+"isolation, and scripted <emphasis>integration tests</emphasis> which "
+"exercise all Java layers of the application (that is, everything except the "
+"view pages)."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:14
+#, no-c-format
+msgid "Both kinds of tests are very easy to write."
+msgstr ""
+
+#. Tag: title
+#: Testing.xml:18
+#, no-c-format
+msgid "Unit testing Seam components"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:19
+#, no-c-format
+msgid ""
+"All Seam components are POJOs. This is a great place to start if you want "
+"easy unit testing. And since Seam emphasises the use of bijection for inter-"
+"component interactions and access to contextual objects, it's very easy to "
+"test a Seam component outside of its normal runtime environment."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:22
+#, no-c-format
+msgid "Consider the following Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:25
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Scope(EVENT)\n"
+"@Name(\"register\")\n"
+"public class RegisterAction implements Register\n"
+"{\n"
+"   private User user;\n"
+"   private EntityManager em;\n"
+"\n"
+"   @In\n"
+"   public void setUser(User user) {\n"
+"       this.user = user;\n"
+"   }\n"
+"   \n"
+"   @PersistenceContext\n"
+"   public void setBookingDatabase(EntityManager em) {\n"
+"       this.em = em;\n"
+"   }\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = em.createQuery(\"select username from User where "
+"username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getResultList();\n"
+"      if (existing.size()==0)\n"
+"      {\n"
+"         em.persist(user);\n"
+"         return \"success\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:26
+#, no-c-format
+msgid "We could write a TestNG test for this component as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:29
+#, no-c-format
+msgid ""
+"public class RegisterActionTest\n"
+"{\n"
+"\n"
+"    @Test\n"
+"    public testRegisterAction()\n"
+"    {\n"
+"        EntityManager em = getEntityManagerFactory().createEntityManager();\n"
+"        em.getTransaction().begin();\n"
+"        \n"
+"        User gavin = new User();\n"
+"        gavin.setName(\"Gavin King\");\n"
+"        gavin.setUserName(\"1ovthafew\");\n"
+"        gavin.setPassword(\"secret\");\n"
+"        \n"
+"        RegisterAction action = new RegisterAction();\n"
+"        action.setUser(gavin);\n"
+"        action.setBookingDatabase(em);\n"
+"        \n"
+"        assert \"success\".equals( action.register() );\n"
+"        \n"
+"        em.getTransaction().commit();\n"
+"        em.close();\n"
+"    }\n"
+"    \n"
+"    \n"
+"    private EntityManagerFactory emf;\n"
+"    \n"
+"    public EntityManagerFactory getEntityManagerFactory()\n"
+"    {\n"
+"        return emf;\n"
+"    }\n"
+"    \n"
+"    @Configuration(beforeTestClass=true)\n"
+"    public void init() \n"
+"    {\n"
+"        emf = Persistence.createEntityManagerFactory"
+"(\"myResourceLocalEntityManager\");\n"
+"    }\n"
+"    \n"
+"    @Configuration(afterTestClass=true)\n"
+"    public void destroy()\n"
+"    {\n"
+"        emf.close();\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:30
+#, no-c-format
+msgid ""
+"Seam components don't usually depend directly upon container infrastructure, "
+"so most unit testing as as easy as that!"
+msgstr ""
+
+#. Tag: title
+#: Testing.xml:36
+#, no-c-format
+msgid "Integration testing Seam applications"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:37
+#, no-c-format
+msgid ""
+"Integration testing is slightly more difficult. In this case, we can't "
+"eliminate the container infrastructure; indeed, that is part of what is "
+"being tested! At the same time, we don't want to be forced to deploy our "
+"application to an application server to run the automated tests. We need to "
+"be able to reproduce just enough of the container infrastructure inside our "
+"testing environment to be able to exercise the whole application, without "
+"hurting performance too much."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:40
+#, no-c-format
+msgid ""
+"A second problem is emulating user interactions. A third problem is where to "
+"put our assertions. Some test frameworks let us test the whole application "
+"by reproducing user interactions with the web browser. These frameworks have "
+"their place, but they are not appropriate for use at development time."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:43
+#, no-c-format
+msgid ""
+"The approach taken by Seam is to let you write tests that script your "
+"components while running inside a pruned down container environment (Seam, "
+"together with the JBoss Embeddable EJB container). The role of the test "
+"script is basically to reproduce the interaction between the view and the "
+"Seam components. In other words, you get to pretend you are the JSF "
+"implementation!"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:46
+#, no-c-format
+msgid "This approach tests everything except the view."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:49
+#, no-c-format
+msgid "Let's consider a JSP view for the component we unit tested above:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:52
+#, no-c-format
+msgid ""
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Register New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;table border=\"0\"&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Username&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputText value=\"#{user.username}\"/&gt;&lt;/"
+"td&gt;\n"
+"       &lt;/tr&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Real Name&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputText value=\"#{user.name}\"/&gt;&lt;/td&gt;\n"
+"       &lt;/tr&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Password&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputSecret value=\"#{user.password}\"/&gt;&lt;/"
+"td&gt;\n"
+"       &lt;/tr&gt;\n"
+"     &lt;/table&gt;\n"
+"     &lt;h:messages/&gt;\n"
+"     &lt;h:commandButton type=\"submit\" value=\"Register\" action=\"#"
+"{register.register}\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:53
+#, no-c-format
+msgid ""
+"We want to test the registration functionality of our application (the stuff "
+"that happens when the user clicks the Register button). We'll reproduce the "
+"JSF request lifecycle in an automated TestNG test:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:56
+#, no-c-format
+msgid ""
+"public class RegisterTest extends SeamTest\n"
+"{\n"
+"   \n"
+"   @Test\n"
+"   public void testRegister() throws Exception\n"
+"   {\n"
+"            \n"
+"      new FacesRequest() {\n"
+"\n"
+"         @Override\n"
+"         protected void processValidations() throws Exception\n"
+"         {\n"
+"            validateValue(\"#{user.username}\", \"1ovthafew\");\n"
+"            validateValue(\"#{user.name}\", \"Gavin King\");\n"
+"            validateValue(\"#{user.password}\", \"secret\");\n"
+"            assert !isValidationFailure();\n"
+"         }\n"
+"         \n"
+"         @Override\n"
+"         protected void updateModelValues() throws Exception\n"
+"         {\n"
+"            setValue(\"#{user.username}\", \"1ovthafew\");\n"
+"            setValue(\"#{user.name}\", \"Gavin King\");\n"
+"            setValue(\"#{user.password}\", \"secret\");\n"
+"         }\n"
+"\n"
+"         @Override\n"
+"         protected void invokeApplication()\n"
+"         {\n"
+"            assert invokeMethod(\"#{register.register}\").equals(\"success"
+"\");\n"
+"         }\n"
+"\n"
+"         @Override\n"
+"         protected void renderResponse()\n"
+"         {\n"
+"            assert getValue(\"#{user.username}\").equals(\"1ovthafew\");\n"
+"            assert getValue(\"#{user.name}\").equals(\"Gavin King\");\n"
+"            assert getValue(\"#{user.password}\").equals(\"secret\");\n"
+"         }\n"
+"         \n"
+"      }.run();\n"
+"      \n"
+"   }\n"
+"\n"
+"   ...\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:57
+#, no-c-format
+msgid ""
+"Notice that we've extended <literal>SeamTest</literal>, which provides a "
+"Seam environment for our components, and written our test script as an "
+"anonymous class that extends <literal>SeamTest.FacesRequest</literal>, which "
+"provides an emulated JSF request lifecycle. (There is also a "
+"<literal>SeamTest.NonFacesRequest</literal> for testing GET requests.) We've "
+"written our code in methods which are named for the various JSF phases, to "
+"emulate the calls that JSF would make to our components. Then we've thrown "
+"in various assertions."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:60
+#, no-c-format
+msgid ""
+"You'll find plenty of integration tests for the Seam example applications "
+"which demonstrate more complex cases. There are instructions for running "
+"these tests using Ant, or using the TestNG plugin for eclipse:"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Text.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Text.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Text.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,362 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Text.xml:10
+#, no-c-format
+msgid "Seam Text"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:11
+#, no-c-format
+msgid ""
+"Collaboration-oriented websites require a human-friendly markup language for "
+"easy entry of formatted text in forum posts, wiki pages, blogs, comments, "
+"etc. Seam provides the <literal>&lt;s:formattedText/&gt;</literal> control "
+"for display of formatted text that conforms to the <emphasis>Seam Text</"
+"emphasis> language. Seam Text is implemented using an ANTLR-based parser. "
+"You don't need to know anything about ANTLR to use it, however."
+msgstr ""
+
+#. Tag: title
+#: Text.xml:15
+#, no-c-format
+msgid "Basic fomatting"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:16
+#, no-c-format
+msgid "Here is a simple example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:19
+#, no-c-format
+msgid ""
+"It's easy to make *bold text*, /italic text/, |monospace|, \n"
+"~deleted text~, super^scripts^ or _underlines_."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:20
+#, no-c-format
+msgid ""
+"If we display this using <literal>&lt;s:formattedText/&gt;</literal>, we "
+"will get the following HTML produced:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:23
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"It's easy to make &lt;b&gt;bold text&lt;/b&gt;, &lt;i&gt;italic text&lt;/"
+"i&gt;, &lt;tt&gt;monospace&lt;/tt&gt;\n"
+"&lt;del&gt;deleted text&lt;/del&gt;, super&lt;sup&gt;scripts&lt;/sup&gt; or "
+"&lt;u&gt;underlines&lt;/u&gt;.\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:24
+#, no-c-format
+msgid ""
+"We can use a blank line to indicate a new paragraph, and <literal>+</"
+"literal> to indicate a heading:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:27
+#, no-c-format
+msgid ""
+"+This is a big heading\n"
+"You /must/ have some text following a heading!\n"
+" \n"
+"++This is a smaller heading\n"
+"This is the first paragraph. We can split it across multiple \n"
+"lines, but we must end it with a blank line.\n"
+"\n"
+"This is the second paragraph."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:28
+#, no-c-format
+msgid ""
+"(Note that a simple newline is ignored, you need an additional blank line to "
+"wrap text into a new paragraph.) This is the HTML that results:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:31
+#, no-c-format
+msgid ""
+"&lt;h1&gt;This is a big heading&lt;/h1&gt;\n"
+"&lt;p&gt;\n"
+"You &lt;i&gt;must&lt;/i&gt; have some text following a heading!\n"
+"&lt;/p&gt;\n"
+" \n"
+"&lt;h2&gt;This is a smaller heading&lt;/h2&gt;\n"
+"&lt;p&gt;\n"
+"This is the first paragraph. We can split it across multiple \n"
+"lines, but we must end it with a blank line.\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"This is the second paragraph.\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:32
+#, no-c-format
+msgid ""
+"Ordered lists are created using the <literal>#</literal> character. "
+"Unordered lists use the <literal>=</literal> character:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:35
+#, no-c-format
+msgid ""
+"An ordered list:\n"
+"        \n"
+"#first item\n"
+"#second item\n"
+"#and even the /third/ item\n"
+"\n"
+"An unordered list:\n"
+"\n"
+"=an item\n"
+"=another item"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:36
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"An ordered list:\n"
+"&lt;/p&gt;\n"
+" \n"
+"&lt;ol&gt;       \n"
+"&lt;li&gt;first item&lt;/li&gt;\n"
+"&lt;li&gt;second item&lt;/li&gt;\n"
+"&lt;li&gt;and even the &lt;i&gt;third&lt;/i&gt; item&lt;/li&gt;\n"
+"&lt;/ol&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"An unordered list:\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;ul&gt;\n"
+"&lt;li&gt;an item&lt;/li&gt;\n"
+"&lt;li&gt;another item&lt;/li&gt;\n"
+"&lt;/ul&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:37
+#, no-c-format
+msgid "Quoted sections should be surrounded in double quotes:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:40
+#, no-c-format
+msgid ""
+"The other guy said:\n"
+"        \n"
+"\"Nyeah nyeah-nee \n"
+"/nyeah/ nyeah!\"\n"
+"\n"
+"But what do you think he means by \"nyeah-nee\"?"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:41
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"The other guy said:\n"
+"&lt;/p&gt;\n"
+"        \n"
+"&lt;q&gt;Nyeah nyeah-nee\n"
+"&lt;i&gt;nyeah&lt;/i&gt; nyeah!&lt;/q&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"But what do you think he means by &lt;q&gt;nyeah-nee&lt;/q&gt;?\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: title
+#: Text.xml:45
+#, no-c-format
+msgid "Entering code and text with special characters"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:46
+#, no-c-format
+msgid ""
+"Special characters such as <literal>*</literal>, <literal>|</literal> and "
+"<literal>#</literal>, along with HTML characters such as <literal>&lt;</"
+"literal>, <literal>&gt;</literal> and <literal>&amp;</literal> may be "
+"escaped using <literal>&#92;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:49
+#, no-c-format
+msgid ""
+"You can write down equations like 2&#92;*3&#92;=6 and HTML tags\n"
+"like &#92;&lt;body&#92;&gt; using the escape character: &#92;&#92;."
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:50
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"You can write down equations like 2*3=6 and HTML tags\n"
+"like &lt;body&gt; using the escape character: &#92;.\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:51
+#, no-c-format
+msgid "And we can quote code blocks using backticks:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:54
+#, no-c-format
+msgid ""
+"My code doesn't work:\n"
+"\n"
+"`for (int i=0; i&lt;100; i--)\n"
+"{\n"
+"    doSomething();\n"
+"}`\n"
+"\n"
+"Any ideas?"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:55
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"My code doesn't work:\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;pre&gt;for (int i=0; i&lt;100; i--)\n"
+"{\n"
+"    doSomething();\n"
+"}&lt;/pre&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"Any ideas?\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: title
+#: Text.xml:59
+#, no-c-format
+msgid "Links"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:60
+#, no-c-format
+msgid "A link may be created using the following syntax:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:63
+#, no-c-format
+msgid "Go to the Seam website at [=&gt;http://jboss.com/products/seam]."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:64
+#, no-c-format
+msgid "Or, if you want to specify the text of the link:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:67
+#, no-c-format
+msgid "Go to [the Seam website=&gt;http://jboss.com/products/seam]."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:68
+#, no-c-format
+msgid ""
+"For advanced users, it is even possible to customize the Seam Text parser to "
+"understand wikiword links written using this syntax."
+msgstr ""
+
+#. Tag: title
+#: Text.xml:74
+#, no-c-format
+msgid "Entering HTML"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:75
+#, no-c-format
+msgid ""
+"Text may even include a certain limited subset of HTML (don't worry, the "
+"subset is chosen to be safe from cross-site scripting attacks). This is "
+"useful for creating links:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:78
+#, no-c-format
+msgid ""
+"You might want to link to &lt;a href=\"http://jboss.com/products/seam\"&gt;"
+"something\n"
+"cool&lt;/a&gt;, or even include an image: &lt;img src=\"/logo.jpg\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:79
+#, no-c-format
+msgid "And for creating tables:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:82
+#, no-c-format
+msgid ""
+"&lt;table&gt;\n"
+"    &lt;tr&gt;&lt;td&gt;First name:&lt;/td&gt;&lt;td&gt;Gavin&lt;/td&gt;&lt;/"
+"tr&gt;\n"
+"    &lt;tr&gt;&lt;td&gt;Last name:&lt;/td&gt;&lt;td&gt;King&lt;/td&gt;&lt;/"
+"tr&gt;\n"
+"&lt;/table&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:83
+#, no-c-format
+msgid "But you can do much more if you want!"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Tools.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Tools.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Tools.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,769 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Tools.xml:10
+#, no-c-format
+msgid "Seam tools"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:12
+#, no-c-format
+msgid "jBPM designer and viewer"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:13
+#, no-c-format
+msgid ""
+"The jBPM designer and viewer will let you design and view in a nice way your "
+"business processes and your pageflows. This convenient tool is part of JBoss "
+"Eclipse IDE and more details can be found in the jBPM's documentation "
+"(http://docs.jboss.com/jbpm/v3/gpd/)"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:17
+#, no-c-format
+msgid "<title>Business process designer</title>"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:18
+#, no-c-format
+msgid "This tool lets you design your own business process in a graphical way."
+msgstr ""
+
+#. Tag: screeninfo
+#: Tools.xml:21 Tools.xml:37
+#, no-c-format
+msgid "<screeninfo>Business process designer</screeninfo>"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:33
+#, no-c-format
+msgid "Pageflow viewer"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:34
+#, no-c-format
+msgid ""
+"This tool let you design to some extend your pageflows and let you build "
+"graphical views of them so you can easily share and compare ideas on how it "
+"should be designed."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:51
+#, no-c-format
+msgid "CRUD-application generator"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:52
+#, no-c-format
+msgid ""
+"This chapter, will give you a short overview of the support for Seam that is "
+"available in the Hibernate Tools. Hibernate Tools is a set of tools for "
+"working with Hibernate and related technologies, such as JBoss Seam and "
+"EJB3. The tools are available as a set of eclipse plugins and Ant tasks. You "
+"can download the Hibernate Tools from the JBoss Eclipse IDE or Hibernate "
+"Tools websites."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:55
+#, no-c-format
+msgid ""
+"The specific support for Seam that is currently available is generation of a "
+"fully functional Seam based CRUD-application. The CRUD-application can be "
+"generated based on your existing Hibernate mapping files or EJB3 annotated "
+"POJO's or even fully reverse engineered from your existing database schema."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:58
+#, no-c-format
+msgid ""
+"The following sections is focused on the features required to understand for "
+"usage with Seam. The content is derived from the the Hibernate Tools "
+"reference documentation. Thus if you need more detailed information please "
+"refer to the Hibernate Tools documentation."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:62
+#, no-c-format
+msgid "Creating a Hibernate configuration file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:63
+#, no-c-format
+msgid ""
+"To be able to reverse engineer and generate code a hibernate.properties or "
+"hibernate.cfg.xml file is needed. The Hibernate Tools provide a wizard for "
+"generating the hibernate.cfg.xml file if you do not already have such file."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:66
+#, no-c-format
+msgid ""
+"Start the wizard by clicking \"New Wizard\" (Ctrl+N), select the Hibernate/"
+"Hibernate Configuration file (cfg.xml) wizard and press \"Next\". After "
+"selecting the wanted location for the hibernate.cfg.xml file, you will see "
+"the following page:"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:77
+#, no-c-format
+msgid ""
+"Tip: The contents in the combo boxes for the JDBC driver class and JDBC URL "
+"change automatically, depending on the Dialect and actual driver you have "
+"chosen."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:80
+#, no-c-format
+msgid ""
+"Enter your configuration information in this dialog. Details about the "
+"configuration options can be found in Hibernate reference documentation."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:83
+#, no-c-format
+msgid ""
+"Press \"Finish\" to create the configuration file, after optionally creating "
+"a Console onfiguration, the hibernate.cfg.xml will be automatically opened "
+"in an editor. The last option \"Create Console Configuration\" is enabled by "
+"default and when enabled i will automatically use the hibernate.cfg.xml for "
+"the basis of a \"Console Configuration\""
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:89
+#, no-c-format
+msgid "<title>Creating a Hibernate Console configuration</title>"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:90
+#, no-c-format
+msgid ""
+"A Console Configuration describes to the Hibernate plugin which "
+"configuration files should be used to configure hibernate, including which "
+"classpath is needed to load the POJO's, JDBC drivers etc. It is required to "
+"make usage of query prototyping, reverse engineering and code generation. "
+"You can have multiple named console configurations. Normally you would just "
+"need one per project, but more (or less) is definitly possible."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:93
+#, no-c-format
+msgid ""
+"You create a console configuration by running the Console Configuration "
+"wizard, shown in the following screenshot. The same wizard will also be used "
+"if you are coming from the hibernate.cfg.xml wizard and had enabled \"Create "
+"Console Configuration\"."
+msgstr ""
+
+#. Tag: caption
+#: Tools.xml:103
+#, no-c-format
+msgid "<caption>Creating a Hibernate Console configuration</caption>"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:105
+#, no-c-format
+msgid ""
+"The following table describes the relevant settings. The wizard can "
+"automatically detect default values for most of these if you started the "
+"Wizard with the relevant java project selected"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:109
+#, no-c-format
+msgid "Hibernate Console Configuration Parameters"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:117
+#, no-c-format
+msgid "Parameter"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:122 Tools.xml:308 Tools.xml:458
+#, no-c-format
+msgid "Description"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:127
+#, no-c-format
+msgid "Auto detected value"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:136
+#, no-c-format
+msgid "Name"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:141
+#, no-c-format
+msgid "The unique name of the configuration"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:146
+#, no-c-format
+msgid "Name of the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:153
+#, no-c-format
+msgid "Property file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:158
+#, no-c-format
+msgid "Path to a hibernate.properties file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:163
+#, no-c-format
+msgid "First hibernate.properties file found in the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:170
+#, no-c-format
+msgid "Configuration file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:175
+#, no-c-format
+msgid "Path to a hibernate.cfg.xml file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:180
+#, no-c-format
+msgid "First hibernate.cfg.xml file found in the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:187
+#, no-c-format
+msgid "Enable Hibernate ejb3/annotations"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:192
+#, no-c-format
+msgid ""
+"Selecting this option enables usage of annotated classes. hbm.xml files are "
+"of course still possible to use too. This feature requires running the "
+"Eclipse IDE with a JDK 5 runtime, otherwise you will get classloading and/or "
+"version errors."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:197
+#, no-c-format
+msgid "Not enabled"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:204
+#, no-c-format
+msgid "Mapping files"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:209
+#, no-c-format
+msgid ""
+"List of additional mapping files that should be loaded. Note: A hibernate."
+"cfg.xml can also contain mappings. Thus if these a duplicated here, you will "
+"get \"Duplicate mapping\" errors when using the console configuration."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:214
+#, no-c-format
+msgid ""
+"If no hibernate.cfg.xml file is found, all hbm.xml files found in the "
+"selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:221
+#, no-c-format
+msgid "Classpath"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:226
+#, no-c-format
+msgid ""
+"The classpath for loading POJO and JDBC drivers. Do not add Hibernate core "
+"libraries or dependencies, they are already included. If you get "
+"ClassNotFound errors then check this list for possible missing or redundant "
+"directories/jars."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:231
+#, no-c-format
+msgid ""
+"The default build output directory and any JARs with a class implementing "
+"java.sql.Driver in the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:239
+#, no-c-format
+msgid ""
+"Clicking \"Finish\" creates the configuration and shows it in the "
+"\"Hibernate Configurations\" view"
+msgstr ""
+
+#. Tag: caption
+#: Tools.xml:249
+#, no-c-format
+msgid "Console overview"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:254
+#, no-c-format
+msgid "Reverse engineering and code generation"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:255
+#, no-c-format
+msgid ""
+"A very simple \"click-and-generate\" reverse engineering and code generation "
+"facility is available. It is this facility that allows you to generate the "
+"skeleton for a full Seam CRUD application."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:258
+#, no-c-format
+msgid ""
+"To start working with this process, start the \"Hibernate Code Generation\" "
+"which is available in the toolbar via the Hibernate icon or via the \"Run/"
+"Hibernate Code Generation\" menu item."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:262
+#, no-c-format
+msgid "Code Generation Launcher"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:263
+#, no-c-format
+msgid ""
+"When you click on \"Hibernate Code Generation\" the standard Eclipse "
+"launcher dialog will appear. In this dialog you can create, edit and delete "
+"named Hibernate code generation \"launchers\"."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:274
+#, no-c-format
+msgid ""
+"The dialog has the standard tabs \"Refresh\" and \"Common\" that can be used "
+"to configure which directories should be automatically refreshed and various "
+"general settings launchers, such as saving them in a project for sharing the "
+"launcher within a team."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:285
+#, no-c-format
+msgid ""
+"The first time you create a code generation launcher you should give it a "
+"meaningfull name, otherwise the default prefix \"New_Generation\" will be "
+"used."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:288
+#, no-c-format
+msgid ""
+"Note: The \"At least one exporter option must be selected\" is just a "
+"warning stating that for this launch to work you need to select an exporter "
+"on the Exporter tab. When an exporter has been selected the warning will "
+"disappear."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:291
+#, no-c-format
+msgid "On the \"Main\" tab you the following fields:"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:295
+#, no-c-format
+msgid "Code generation \"Main\" tab fields"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:303 Tools.xml:453
+#, no-c-format
+msgid "Field"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:317
+#, no-c-format
+msgid "Console Configuration"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:322
+#, no-c-format
+msgid ""
+"The name of the console configuration which should be used when code "
+"generating."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:329
+#, no-c-format
+msgid "Output directory"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:334
+#, no-c-format
+msgid ""
+"Path to a directory into where all output will be written by default. Be "
+"aware that existing files will be overwritten, so be sure to specify the "
+"correct directory."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:341
+#, no-c-format
+msgid "Reverse engineer from JDBC Connection"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:346
+#, no-c-format
+msgid ""
+"If enabled the tools will reverse engineer the database available via the "
+"connection information in the selected Hibernate Console Configuration and "
+"generate code based on the database schema. If not enabled the code "
+"generation will just be based on the mappings already specified in the "
+"Hibernate Console configuration."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:353
+#, no-c-format
+msgid "Package"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:358
+#, no-c-format
+msgid ""
+"The package name here is used as the default package name for any entities "
+"found when reverse engineering."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:365
+#, no-c-format
+msgid "reveng.xml"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:370
+#, no-c-format
+msgid ""
+"Path to a reveng.xml file. A reveng.xml file allows you to control certain "
+"aspects of the reverse engineering. e.g. how jdbc types are mapped to "
+"hibernate types and especially important which tables are included/excluded "
+"from the process. Clicking \"setup\" allows you to select an existing reveng."
+"xml file or create a new one.."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:377
+#, no-c-format
+msgid "reveng. strategy"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:382
+#, no-c-format
+msgid ""
+"If reveng.xml does not provide enough customization you can provide your own "
+"implementation of an ReverseEngineeringStrategy. The class need to be in the "
+"claspath of the Console Configuration, otherwise you will get class not "
+"found exceptions."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:389
+#, no-c-format
+msgid "Generate basic typed composite ids"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:394
+#, no-c-format
+msgid ""
+"This field should always be enabled when generating the Seam CRUD "
+"application. A table that has a multi-colum primary key a &lt;composite-"
+"id&gt; mapping will always be created. If this option is enabled and there "
+"are matching foreign-keys each key column is still considered a 'basic' "
+"scalar (string, long, etc.) instead of a reference to an entity. If you "
+"disable this option a &lt;key-many-to-one&gt; instead. Note: a &lt;many-to-"
+"one&gt; property is still created, but is simply marked as non-updatable and "
+"non-insertable."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:401
+#, no-c-format
+msgid "Use custom templates"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:406
+#, no-c-format
+msgid ""
+"If enabled, the Template directory will be searched first when looking up "
+"the velocity templates, allowing you to redefine how the individual "
+"templates process the hibernate mapping model."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:413
+#, no-c-format
+msgid "Template directory"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:418
+#, no-c-format
+msgid "A path to a directory with custom velocity templates."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:429
+#, no-c-format
+msgid "Exporters"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:430
+#, no-c-format
+msgid ""
+"The exporters tab is used to specify which type of code that should be "
+"generated. Each selection represents an \"Exporter\" that are responsible "
+"for generating the code, hence the name."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:441
+#, no-c-format
+msgid ""
+"The following table describes in short the various exporters. The most "
+"relevant for Seam is of course the \"JBoss Seam Skeleton app\"."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:445
+#, no-c-format
+msgid "Code generation \"Exporter\" tab fields"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:467
+#, no-c-format
+msgid "Generate domain code"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:472
+#, no-c-format
+msgid ""
+"Generates POJO's for all the persistent classes and components found in the "
+"given Hibernate configuration."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:479
+#, no-c-format
+msgid "JDK 1.5 constructs"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:484
+#, no-c-format
+msgid "When enabled the POJO's will use JDK 1.5 constructs."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:491
+#, no-c-format
+msgid "EJB3/JSR-220 annotations"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:496
+#, no-c-format
+msgid ""
+"When enabled the POJO's will be annotated according to the EJB3/JSR-220 "
+"persistency specification."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:503
+#, no-c-format
+msgid "Generate DAO code"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:508
+#, no-c-format
+msgid "Generates a set of DAO's for each entity found."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:515
+#, no-c-format
+msgid "Generate Mappings"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:520
+#, no-c-format
+msgid "Generate mapping (hbm.xml) files for each entity"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:527
+#, no-c-format
+msgid "Generate hibernate configuration file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:532
+#, no-c-format
+msgid ""
+"Generate a hibernate.cfg.xml file. Used to keep the hibernate.cfg.xml "
+"uptodate with any new found mapping files."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:539
+#, no-c-format
+msgid "Generate schema html-documentation"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:544
+#, no-c-format
+msgid ""
+"Generates set of html pages that documents the database schema and some of "
+"the mappings."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:551
+#, no-c-format
+msgid "Generate JBoss Seam skeleton app (beta)"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:556
+#, no-c-format
+msgid ""
+"Generates a complete JBoss Seam skeleton app. The generation will include "
+"annotated POJO's, Seam controller beans and a JSP for the presentation "
+"layer. See the generated readme.txt for how to use it."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:559
+#, no-c-format
+msgid ""
+"Note: this exporter generates a full application, including a build.xml thus "
+"you will get the best results if you use an output directory which is the "
+"root of your project."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:570
+#, no-c-format
+msgid "Generating and using the code"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:571
+#, no-c-format
+msgid ""
+"When you have finished filling out the settings, simply press \"Run\" to "
+"start the generation of code. This might take a little while if you are "
+"reverse engineering from a database."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:574
+#, no-c-format
+msgid ""
+"When the generation have finished you should now have a complete skeleton "
+"Seam application in the output directory. In the output directory there is a "
+"<literal>readme.txt</literal> file describing the steps needed to deploy and "
+"run the example."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:577
+#, no-c-format
+msgid ""
+"If you want to regenerate/update the skeleton code then simply run the code "
+"generation again by selecting the \"Hibernate Code Generation\" in the "
+"toolbar or \"Run\" menu. Enjoy."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Tutorial.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Tutorial.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Tutorial.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,4041 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Tutorial.xml:10
+#, no-c-format
+msgid "Seam Tutorial"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:12
+#, no-c-format
+msgid "Try the examples"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:13
+#, no-c-format
+msgid ""
+"In this tutorial, we'll assume that you have downloaded JBoss AS 4.0.5 and "
+"installed the EJB 3.0 profile (using the JBoss AS installer). You should "
+"also have a copy of Seam downloaded and extracted to a work directory."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:16
+#, no-c-format
+msgid "The directory structure of each example in Seam follows this pattern:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:21
+#, no-c-format
+msgid ""
+"Web pages, images and stylesheets may be found in <filename>examples/"
+"<replaceable>registration</replaceable>/view</filename>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:26
+#, no-c-format
+msgid ""
+"Resources such as deployment descriptors and data import scripts may be "
+"found in <filename>examples/<replaceable>registration</replaceable>/"
+"resources</filename>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:31
+#, no-c-format
+msgid ""
+"Java source code may be found in <filename>examples/"
+"<replaceable>registration</replaceable>/src</filename>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:36
+#, no-c-format
+msgid ""
+"The Ant build script is <filename>examples/<replaceable>registration</"
+"replaceable>/build.xml</filename>"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:42
+#, no-c-format
+msgid "Running the examples on JBoss AS"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:43
+#, no-c-format
+msgid ""
+"First, make sure you have Ant correctly installed, with <literal>&#36;"
+"ANT_HOME</literal> and <literal>&#36;JAVA_HOME</literal> set correctly. "
+"Next, make sure you set the location of your JBoss AS 4.0.5 installation in "
+"the <literal>build.properties</literal> file in the root folder of your Seam "
+"installation. If you haven't already done so, start JBoss AS now by typing "
+"<literal>bin/run.sh</literal> or <literal>bin/run.bat</literal> in the root "
+"directory of your JBoss installation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:46
+#, no-c-format
+msgid ""
+"By default the examples will deploy to the default configuration of the "
+"server. If the server has been started using an a configuration other than "
+"default then the example <literal>build.xml</literal> file should be "
+"modified to reflect this before building and deploying. Two lines should be "
+"changed in this file:"
+msgstr ""
+
+#. Tag: screen
+#: Tutorial.xml:49
+#, no-c-format
+msgid ""
+"&lt;property name=\"deploy.dir\"           value=\"${jboss.home}/server/"
+"default/deploy\"/&gt;"
+msgstr ""
+
+#. Tag: screen
+#: Tutorial.xml:50
+#, no-c-format
+msgid ""
+"&lt;property name=\"webroot.dir\"         \n"
+"        value=\"${deploy.dir}/jboss-web.deployer/ROOT.war\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:51
+#, no-c-format
+msgid ""
+"Now, build and deploy the example by typing <literal>ant deploy</literal> in "
+"the <filename>examples/<replaceable>registration</replaceable></filename> "
+"directory."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:54
+#, no-c-format
+msgid ""
+"Try it out by accessing <ulink url=\"http://localhost:8080/seam-registration/"
+"\"><literal>http://localhost:8080/seam-registration/</literal></ulink> with "
+"your web browser."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:60
+#, no-c-format
+msgid "Running the examples on Tomcat"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:61
+#, no-c-format
+msgid ""
+"First, make sure you have Ant correctly installed, with <literal>&#36;"
+"ANT_HOME</literal> and <literal>&#36;JAVA_HOME</literal> set correctly. "
+"Next, make sure you set the location of your Tomcat 5.5 installation in the "
+"<literal>build.properties</literal> file in the root folder of your Seam "
+"installation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:64
+#, no-c-format
+msgid ""
+"Now, build and deploy the example by typing <literal>ant deploy.tomcat</"
+"literal> in the <filename>examples/<replaceable>registration</replaceable></"
+"filename> directory."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:67
+#, no-c-format
+msgid "Finally, start Tomcat."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:70
+#, no-c-format
+msgid ""
+"Try it out by accessing <ulink url=\"http://localhost:8080/jboss-seam-"
+"registration/\"><literal>http://localhost:8080/jboss-seam-registration/</"
+"literal></ulink> with your web browser."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:73
+#, no-c-format
+msgid ""
+"When you deploy the example to Tomcat, any EJB3 components will run inside "
+"the JBoss Embeddable EJB3 container, a complete standalone EJB3 container "
+"environment."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:79
+#, no-c-format
+msgid "Running the example tests"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:80
+#, no-c-format
+msgid ""
+"Most of the examples come with a suite of TestNG integration tests. The "
+"easiest way to run the tests is to run <literal>ant testexample</literal> "
+"inside the <filename>examples/<replaceable>registration</replaceable></"
+"filename> directory. It is also possible to run the tests inside your IDE "
+"using the TestNG plugin."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:88
+#, no-c-format
+msgid "Your first Seam application: the registration example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:89
+#, no-c-format
+msgid ""
+"The registration example is a fairly trivial application that lets a new "
+"user store his username, real name and password in the database. The example "
+"isn't intended to show off all of the cool functionality of Seam. However, "
+"it demonstrates the use of an EJB3 session bean as a JSF action listener, "
+"and basic configuration of Seam."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:92
+#, no-c-format
+msgid ""
+"We'll go slowly, since we realize you might not yet be familiar with EJB 3.0."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:95
+#, no-c-format
+msgid ""
+"The start page displays a very basic form with three input fields. Try "
+"filling them in and then submitting the form. This will save a user object "
+"in the database."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:107 Tutorial.xml:424 Tutorial.xml:563 Tutorial.xml:723
+#, no-c-format
+msgid "Understanding the code"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:108
+#, no-c-format
+msgid ""
+"The example is implemented with two JSP pages, one entity bean and one "
+"stateless session bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:119
+#, no-c-format
+msgid "Let's take a look at the code, starting from the \"bottom\"."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:123
+#, no-c-format
+msgid "The entity bean: <literal>User.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:124
+#, no-c-format
+msgid ""
+"We need an EJB entity bean for user data. This class defines "
+"<emphasis>persistence</emphasis> and <emphasis>validation</emphasis> "
+"declaratively, via annotations. It also needs some extra annotations that "
+"define the class as a Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:140
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"user\")\n"
+"@Scope(SESSION)\n"
+"@Table(name=\"users\")\n"
+"public class User implements Serializable\n"
+"{\n"
+"   private static final long serialVersionUID = 1881413500711441951L;\n"
+"   \n"
+"   private String username;\n"
+"   private String password;\n"
+"   private String name;\n"
+"   \n"
+"   public User(String name, String password, String username)\n"
+"   {\n"
+"      this.name = name;\n"
+"      this.password = password;\n"
+"      this.username = username;\n"
+"   }\n"
+"   \n"
+"   public User() {}\n"
+"   \n"
+"   @NotNull @Length(min=5, max=15)\n"
+"   public String getPassword()\n"
+"   {\n"
+"      return password;\n"
+"   }\n"
+"\n"
+"   public void setPassword(String password)\n"
+"   {\n"
+"      this.password = password;\n"
+"   }\n"
+"   \n"
+"   @NotNull\n"
+"   public String getName()\n"
+"   {\n"
+"      return name;\n"
+"   }\n"
+"\n"
+"   public void setName(String name)\n"
+"   {\n"
+"      this.name = name;\n"
+"   }\n"
+"   \n"
+"   @Id @NotNull @Length(min=5, max=15)\n"
+"   public String getUsername()\n"
+"   {\n"
+"      return username;\n"
+"   }\n"
+"\n"
+"   public void setUsername(String username)\n"
+"   {\n"
+"      this.username = username;\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:143
+#, no-c-format
+msgid ""
+"The EJB3 standard <literal>@Entity</literal> annotation indicates that the "
+"<literal>User</literal> class is an entity bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:148
+#, no-c-format
+msgid ""
+"A Seam component needs a <emphasis>component name</emphasis> specified by "
+"the <link linkend=\"name-annotation\"><literal>@Name</literal></link> "
+"annotation. This name must be unique within the Seam application. When JSF "
+"asks Seam to resolve a context variable with a name that is the same as a "
+"Seam component name, and the context variable is currently undefined (null), "
+"Seam will instantiate that component, and bind the new instance to the "
+"context variable. In this case, Seam will instantiate a <literal>User</"
+"literal> the first time JSF encounters a variable named <literal>user</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:153
+#, no-c-format
+msgid ""
+"Whenever Seam instantiates a component, it binds the new instance to a "
+"context variable in the component's <emphasis>default context</emphasis>. "
+"The default context is specified using the <link linkend=\"scope-annotation"
+"\"><literal>@Scope</literal></link> annotation. The <literal>User</literal> "
+"bean is a session scoped component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:158
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Table</literal> annotation indicates that the "
+"<literal>User</literal> class is mapped to the <literal>users</literal> "
+"table."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:163
+#, no-c-format
+msgid ""
+"<literal>name</literal>, <literal>password</literal> and <literal>username</"
+"literal> are the persistent attributes of the entity bean. All of our "
+"persistent attributes define accessor methods. These are needed when this "
+"component is used by JSF in the render response and update model values "
+"phases."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:168
+#, no-c-format
+msgid ""
+"An empty constructor is both required by both the EJB specification and by "
+"Seam."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:173
+#, no-c-format
+msgid ""
+"The <literal>@NotNull</literal> and <literal>@Length</literal> annotations "
+"are part of the Hibernate Validator framework. Seam integrates Hibernate "
+"Validator and lets you use it for data validation (even if you are not using "
+"Hibernate for persistence)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:178
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Id</literal> annotation indicates the primary key "
+"attribute of the entity bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:185
+#, no-c-format
+msgid ""
+"The most important things to notice in this example are the <literal>@Name</"
+"literal> and <literal>@Scope</literal> annotations. These annotations "
+"establish that this class is a Seam component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:188
+#, no-c-format
+msgid ""
+"We'll see below that the properties of our <literal>User</literal> class are "
+"bound to directly to JSF components and are populated by JSF during the "
+"update model values phase. We don't need any tedious glue code to copy data "
+"back and forth between the JSP pages and the entity bean domain model."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:191
+#, no-c-format
+msgid ""
+"However, entity beans shouldn't do transaction management or database "
+"access. So we can't use this component as a JSF action listener. For that we "
+"need a session bean."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:198
+#, no-c-format
+msgid ""
+"The stateless session bean class: <literal>RegisterAction.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:199
+#, no-c-format
+msgid ""
+"Most Seam application use session beans as JSF action listeners (you can use "
+"JavaBeans instead if you like)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:202
+#, no-c-format
+msgid ""
+"We have exactly one JSF action in our application, and one session bean "
+"method attached to it. In this case, we'll use a stateless session bean, "
+"since all the state associated with our action is held by the <literal>User</"
+"literal> bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:205
+#, no-c-format
+msgid "This is the only really interesting code in the example!"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:222
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"register\")\n"
+"public class RegisterAction implements Register\n"
+"{\n"
+"\n"
+"   @In\n"
+"   private User user;\n"
+"   \n"
+"   @PersistenceContext\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @Logger\n"
+"   private Log log;\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = em.createQuery(\n"
+"         \"select username from User where username=#{user.username}\")\n"
+"         .getResultList();\n"
+"         \n"
+"      if (existing.size()==0)\n"
+"      {\n"
+"         em.persist(user);\n"
+"         log.info(\"Registered new user #{user.username}\");\n"
+"         return \"/registered.jsp\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         FacesMessages.instance().add(\"User #{user.username} already exists"
+"\");\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:225
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Stateless</literal> annotation marks this class "
+"as stateless session bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:230
+#, no-c-format
+msgid ""
+"The <link linkend=\"in-annotation\"><literal>@In</literal></link> annotation "
+"marks an attribute of the bean as injected by Seam. In this case, the "
+"attribute is injected from a context variable named <literal>user</literal> "
+"(the instance variable name)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:235
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@PersistenceContext</literal> annotation is used "
+"to inject the EJB3 entity manager."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:240
+#, no-c-format
+msgid ""
+"The Seam <literal>@Logger</literal> annotation is used to inject the "
+"component's <literal>Log</literal> instance."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:245
+#, no-c-format
+msgid ""
+"The action listener method uses the standard EJB3 <literal>EntityManager</"
+"literal> API to interact with the database, and returns the JSF outcome. "
+"Note that, since this is a sesson bean, a transaction is automatically begun "
+"when the <literal>register()</literal> method is called, and committed when "
+"it completes."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:250
+#, no-c-format
+msgid ""
+"Notice that Seam lets you use a JSF EL expression inside EJB-QL. Under the "
+"covers, this results in an ordinary JPA <literal>setParameter()</literal> "
+"call on the standard JPA <literal>Query</literal> object. Nice, huh?"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:255
+#, no-c-format
+msgid ""
+"The <literal>Log</literal> API lets us easily display templated log messages."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:260
+#, no-c-format
+msgid ""
+"JSF action listener methods return a string-valued outcome that determines "
+"what page will be displayed next. A null outcome (or a void action listener "
+"method) redisplays the previous page. In plain JSF, it is normal to always "
+"use a JSF <emphasis>navigation rule</emphasis> to determine the JSF view id "
+"from the outcome. For complex application this indirection is useful and a "
+"good practice. However, for very simple examples like this one, Seam lets "
+"you use the JSF view id as the outcome, eliminating the requirement for a "
+"navigation rule. <emphasis>Note that when you use a view id as an outcome, "
+"Seam always performs a browser redirect.</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:265
+#, no-c-format
+msgid ""
+"Seam provides a number of <emphasis>built-in components</emphasis> to help "
+"solve common problems. The <literal>FacesMessages</literal> component makes "
+"it easy to display templated error or success messages. Built-in Seam "
+"components may be obtained by injection, or by calling an <literal>instance()"
+"</literal> method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:272
+#, no-c-format
+msgid ""
+"Note that we did not explicitly specify a <literal>@Scope</literal> this "
+"time. Each Seam component type has a default scope if not explicitly "
+"specified. For stateless session beans, the default scope is the stateless "
+"context. Actually, <emphasis>all</emphasis> stateless session beans belong "
+"in the stateless context."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:275
+#, no-c-format
+msgid ""
+"Our session bean action listener performs the business and persistence logic "
+"for our mini-application. In more complex applications, we might need to "
+"layer the code and refactor persistence logic into a dedicated data access "
+"component. That's perfectly trivial to do. But notice that Seam does not "
+"force you into any particular strategy for application layering."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:278
+#, no-c-format
+msgid ""
+"Furthermore, notice that our session bean has simultaneous access to context "
+"associated with the web request (the form values in the <literal>User</"
+"literal> object, for example), and state held in transactional resources "
+"(the <literal>EntityManager</literal> object). This is a break from "
+"traditional J2EE architectures. Again, if you are more comfortable with the "
+"traditional J2EE layering, you can certainly implement that in a Seam "
+"application. But for many applications, it's simply not very useful."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:285
+#, no-c-format
+msgid "The session bean local interface: <literal>Register.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:286
+#, no-c-format
+msgid "Naturally, our session bean needs a local interface."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:291
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface Register\n"
+"{\n"
+"   public String register();\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:292
+#, no-c-format
+msgid "That's the end of the Java code. Now onto the deployment descriptors."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:298
+#, no-c-format
+msgid ""
+"The Seam component deployment descriptor: <literal>components.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:299
+#, no-c-format
+msgid ""
+"If you've used many Java frameworks before, you'll be used to having to "
+"declate all your component classes in some kind of XML file that gradually "
+"grows more and more unmanageable as your project matures. You'll be relieved "
+"to know that Seam does not require that application components be "
+"accompanied by XML. Most Seam applications require a very small amount of "
+"XML that does not grow very much as the project gets bigger."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:302
+#, no-c-format
+msgid ""
+"Nevertheless, it is often useful to be able to provide for <emphasis>some</"
+"emphasis> external configuration of <emphasis>some</emphasis> components "
+"(particularly the components built in to Seam). You have a couple of options "
+"here, but the most flexible option is to provide this configuration in a "
+"file called <literal>components.xml</literal>, located in the <literal>WEB-"
+"INF</literal> directory. We'll use the <literal>components.xml</literal> "
+"file to tell Seam how to find our EJB components in JNDI:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:305
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"&gt;\n"
+"     &lt;core:init jndi-pattern=\"@jndiPattern@\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:306
+#, no-c-format
+msgid ""
+"This code configures a property named <literal>jndiPattern</literal> of a "
+"built-in Seam component named <literal>org.jboss.seam.core.init</literal>."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:312
+#, no-c-format
+msgid "The web deployment description: <literal>web.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:313
+#, no-c-format
+msgid ""
+"The presentation layer for our mini-application will be deployed in a WAR. "
+"So we'll need a web deployment descriptor."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:316
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;web-app version=\"2.5\"\n"
+"    xmlns=\"http://java.sun.com/xml/ns/javaee\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n"
+"        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\"&gt;\n"
+"\n"
+"    &lt;!-- Seam --&gt;\n"
+"\n"
+"    &lt;listener&gt;\n"
+"        &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/"
+"listener-class&gt;\n"
+"    &lt;/listener&gt;\n"
+"\n"
+"    &lt;!-- MyFaces --&gt;\n"
+"\n"
+"    &lt;listener&gt;\n"
+"        &lt;listener-class&gt;\n"
+"            org.apache.myfaces.webapp.StartupServletContextListener\n"
+"        &lt;/listener-class&gt;\n"
+"    &lt;/listener&gt;\n"
+"\n"
+"    &lt;context-param&gt;\n"
+"        &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-"
+"name&gt;\n"
+"        &lt;param-value&gt;client&lt;/param-value&gt;\n"
+"    &lt;/context-param&gt;\n"
+"\n"
+"    &lt;servlet&gt;\n"
+"        &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;\n"
+"        &lt;servlet-class&gt;javax.faces.webapp.FacesServlet&lt;/servlet-"
+"class&gt;\n"
+"        &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;\n"
+"    &lt;/servlet&gt;\n"
+"\n"
+"    &lt;!-- Faces Servlet Mapping --&gt;\n"
+"    &lt;servlet-mapping&gt;\n"
+"        &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;\n"
+"        &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;\n"
+"    &lt;/servlet-mapping&gt;\n"
+"\n"
+"&lt;/web-app&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:317
+#, no-c-format
+msgid ""
+"This <literal>web.xml</literal> file configures Seam and MyFaces. The "
+"configuration you see here is pretty much identical in all Seam applications."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:323
+#, no-c-format
+msgid "The JSF configration: <literal>faces-config.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:324
+#, no-c-format
+msgid ""
+"All Seam applications use JSF views as the presentation layer. So we'll need "
+"<literal>faces-config.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:327
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;!DOCTYPE faces-config \n"
+"PUBLIC \"-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN\"\n"
+"                            \"http://java.sun.com/dtd/web-facesconfig_1_0.dtd"
+"\"&gt;\n"
+"&lt;faces-config&gt;\n"
+"\n"
+"    &lt;!-- A phase listener is needed by all Seam applications --&gt;\n"
+"    \n"
+"    &lt;lifecycle&gt;\n"
+"        &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-"
+"listener&gt;\n"
+"    &lt;/lifecycle&gt;\n"
+"\n"
+"&lt;/faces-config&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:328
+#, no-c-format
+msgid ""
+"The <literal>faces-config.xml</literal> file integrates Seam into JSF. Note "
+"that we don't need any JSF managed bean declarations! The managed beans are "
+"the Seam components. In Seam applications, the <literal>faces-config.xml</"
+"literal> is used much less often than in plain JSF."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:331
+#, no-c-format
+msgid ""
+"In fact, once you have all the basic descriptors set up, the <emphasis>only</"
+"emphasis> XML you need to write as you add new functionality to a Seam "
+"application is the navigation rules, and possibly jBPM process definitions. "
+"Seam takes the view that <emphasis>process flow</emphasis> and "
+"<emphasis>configuration data</emphasis> are the only things that truly "
+"belong in XML."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:334
+#, no-c-format
+msgid ""
+"In this simple example, we don't even need a navigation rule, since we "
+"decided to embed the view id in our action code."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:340
+#, no-c-format
+msgid "The EJB deployment descriptor: <literal>ejb-jar.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:341
+#, no-c-format
+msgid ""
+"The <literal>ejb-jar.xml</literal> file integrates Seam with EJB3, by "
+"attaching the <literal>SeamInterceptor</literal> to all session beans in the "
+"archive."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:344
+#, no-c-format
+msgid ""
+"&lt;ejb-jar xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \n"
+"         xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n"
+"         http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd\"\n"
+"         version=\"3.0\"&gt;\n"
+"         \n"
+"   &lt;interceptors&gt;\n"
+"     &lt;interceptor&gt;\n"
+"       &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"     &lt;/interceptor&gt;\n"
+"   &lt;/interceptors&gt;\n"
+"   \n"
+"   &lt;assembly-descriptor&gt;\n"
+"      &lt;interceptor-binding&gt;\n"
+"         &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"         &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"      &lt;/interceptor-binding&gt;\n"
+"   &lt;/assembly-descriptor&gt;\n"
+"   \n"
+"&lt;/ejb-jar&gt;"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:348
+#, no-c-format
+msgid ""
+"The EJB persistence deployment descriptor: <literal>persistence.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:349
+#, no-c-format
+msgid ""
+"The <literal>persistence.xml</literal> file tells the EJB persistence "
+"provider where to find the datasource, and contains some vendor-specific "
+"settings. In this case, enables automatic schema export at startup time."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:352
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;persistence xmlns=\"http://java.sun.com/xml/ns/persistence\" \n"
+"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence \n"
+"             http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd\" \n"
+"             version=\"1.0\"&gt;\n"
+"    &lt;persistence-unit name=\"userDatabase\"&gt;\n"
+"      &lt;provider&gt;org.hibernate.ejb.HibernatePersistence&lt;/"
+"provider&gt;\n"
+"      &lt;jta-data-source&gt;java:/DefaultDS&lt;/jta-data-source&gt;\n"
+"      &lt;properties&gt;\n"
+"         &lt;property name=\"hibernate.hbm2ddl.auto\" value=\"create-drop\"/"
+"&gt;\n"
+"      &lt;/properties&gt;\n"
+"    &lt;/persistence-unit&gt;\n"
+"&lt;/persistence&gt;"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:356
+#, no-c-format
+msgid ""
+"The view: <literal>register.jsp</literal> and <literal>registered.jsp</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:357
+#, no-c-format
+msgid ""
+"The view pages for a Seam application could be implemented using any "
+"technology that supports JSF. In this example we use JSP, since it is "
+"familiar to most developers and since we have minimal requirements here "
+"anyway. (But if you take our advice, you'll use Facelets for your own "
+"applications.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:360
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://jboss.com/products/seam/taglib\" prefix=\"s\" "
+"&#37;&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Register New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;table border=\"0\"&gt;\n"
+"       &lt;s:validateAll&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Username&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputText value=\"#{user.username}\"/&gt;&lt;/"
+"td&gt;\n"
+"         &lt;/tr&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Real Name&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputText value=\"#{user.name}\"/&gt;&lt;/td&gt;\n"
+"         &lt;/tr&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Password&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputSecret value=\"#{user.password}\"/&gt;&lt;/"
+"td&gt;\n"
+"         &lt;/tr&gt;\n"
+"       &lt;/s:validateAll&gt;\n"
+"     &lt;/table&gt;\n"
+"     &lt;h:messages/&gt;\n"
+"     &lt;h:commandButton type=\"submit\" value=\"Register\" action=\"#"
+"{register.register}\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:361
+#, no-c-format
+msgid ""
+"The only thing here that is specific to Seam is the <literal>&lt;s:"
+"validateAll&gt;</literal> tag. This JSF component tells JSF to validate all "
+"the contained input fields against the Hibernate Validator annotations "
+"specified on the entity bean."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:364
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Successfully Registered New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"    Welcome, &lt;h:outputText value=\"#{user.name}\"/&gt;, \n"
+"    you are successfully registered as &lt;h:outputText value=\"#{user."
+"username}\"/&gt;.\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:365
+#, no-c-format
+msgid ""
+"This is a boring old JSP pages using standard JSF components. There is "
+"nothing specific to Seam here."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:371
+#, no-c-format
+msgid "The EAR deployment descriptor: <literal>application.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:372
+#, no-c-format
+msgid ""
+"Finally, since our application is deployed as an EAR, we need a deployment "
+"descriptor there, too."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:375
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;application xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee \n"
+"             http://java.sun.com/xml/ns/javaee/application_5.xsd\"\n"
+"             version=\"5\"&gt;\n"
+"             \n"
+"    &lt;display-name&gt;Seam Registration&lt;/display-name&gt;\n"
+"\n"
+"    &lt;module&gt;\n"
+"        &lt;web&gt;\n"
+"            &lt;web-uri&gt;jboss-seam-registration.war&lt;/web-uri&gt;\n"
+"            &lt;context-root&gt;/seam-registration&lt;/context-root&gt;\n"
+"        &lt;/web&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;ejb&gt;jboss-seam-registration.jar&lt;/ejb&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;jboss-seam.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;el-api.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;el-ri.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    \n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:376
+#, no-c-format
+msgid ""
+"This deployment descriptor links modules in the enterprise archive and binds "
+"the web application to the context root <literal>/seam-registration</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:387 Tutorial.xml:535 Tutorial.xml:698 Tutorial.xml:813
+#, no-c-format
+msgid "How it works"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:388
+#, no-c-format
+msgid ""
+"When the form is submitted, JSF asks Seam to resolve the variable named "
+"<literal>user</literal>. Since there is no value already bound to that name "
+"(in any Seam context), Seam instantiates the <literal>user</literal> "
+"component, and returns the resulting <literal>User</literal> entity bean "
+"instance to JSF after storing it in the Seam session context."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:391
+#, no-c-format
+msgid ""
+"The form input values are now validated against the Hibernate Validator "
+"constraints specified on the <literal>User</literal> entity. If the "
+"constraints are violated, JSF redisplays the page. Otherwise, JSF binds the "
+"form input values to properties of the <literal>User</literal> entity bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:394
+#, no-c-format
+msgid ""
+"Next, JSF asks Seam to resolve the variable named <literal>register</"
+"literal>. Seam finds the <literal>RegisterAction</literal> stateless session "
+"bean in the stateless context and returns it. JSF invokes the "
+"<literal>register()</literal> action listener method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:397
+#, no-c-format
+msgid ""
+"Seam intercepts the method call and injects the <literal>User</literal> "
+"entity from the Seam session context, before continuing the invocation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:400
+#, no-c-format
+msgid ""
+"The <literal>register()</literal> method checks if a user with the entered "
+"username already exists. If so, an error message is queued with the "
+"<literal>FacesMessages</literal> component, and a null outcome is returned, "
+"causing a page redisplay. The <literal>FacesMessages</literal> component "
+"interpolates the JSF expression embedded in the message string and adds a "
+"JSF <literal>FacesMessage</literal> to the view."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:403
+#, no-c-format
+msgid ""
+"If no user with that username exists, the <literal>\"/registered.jsp\"</"
+"literal> outcome triggers a browser redirect to the <literal>registered.jsp</"
+"literal> page. When JSF comes to render the page, it asks Seam to resolve "
+"the variable named <literal>user</literal> and uses property values of the "
+"returned <literal>User</literal> entity from Seam's session scope."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:411
+#, no-c-format
+msgid "Clickable lists in Seam: the messages example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:412
+#, no-c-format
+msgid ""
+"Clickable lists of database search results are such an important part of any "
+"online application that Seam provides special functionality on top of JSF to "
+"make it easier to query data using EJB-QL or HQL and display it as a "
+"clickable list using a JSF <literal>&lt;h:dataTable&gt;</literal>. The "
+"messages example demonstrates this functionality."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:425
+#, no-c-format
+msgid ""
+"The message list example has one entity bean, <literal>Message</literal>, "
+"one session bean, <literal>MessageListBean</literal> and one JSP."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:429
+#, no-c-format
+msgid "The entity bean: <literal>Message.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:430
+#, no-c-format
+msgid ""
+"The <literal>Message</literal> entity defines the title, text, date and time "
+"of a message, and a flag indicating whether the message has been read:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:433
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"message\")\n"
+"@Scope(EVENT)\n"
+"public class Message implements Serializable\n"
+"{\n"
+"   private Long id;\n"
+"   private String title;\n"
+"   private String text;\n"
+"   private boolean read;\n"
+"   private Date datetime;\n"
+"   \n"
+"   @Id @GeneratedValue\n"
+"   public Long getId() {\n"
+"      return id;\n"
+"   }\n"
+"   public void setId(Long id) {\n"
+"      this.id = id;\n"
+"   }\n"
+"   \n"
+"   @NotNull @Length(max=100)\n"
+"   public String getTitle() {\n"
+"      return title;\n"
+"   }\n"
+"   public void setTitle(String title) {\n"
+"      this.title = title;\n"
+"   }\n"
+"   \n"
+"   @NotNull @Lob\n"
+"   public String getText() {\n"
+"      return text;\n"
+"   }\n"
+"   public void setText(String text) {\n"
+"      this.text = text;\n"
+"   }\n"
+"   \n"
+"   @NotNull\n"
+"   public boolean isRead() {\n"
+"      return read;\n"
+"   }\n"
+"   public void setRead(boolean read) {\n"
+"      this.read = read;\n"
+"   }\n"
+"   \n"
+"   @NotNull \n"
+"   @Basic @Temporal(TemporalType.TIMESTAMP)\n"
+"   public Date getDatetime() {\n"
+"      return datetime;\n"
+"   }\n"
+"   public void setDatetime(Date datetime) {\n"
+"      this.datetime = datetime;\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:438
+#, no-c-format
+msgid "The stateful session bean: <literal>MessageManagerBean.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:439
+#, no-c-format
+msgid ""
+"Just like in the previous example, we have a session bean, "
+"<literal>MessageManagerBean</literal>, which defines the action listener "
+"methods for the two buttons on our form. One of the buttons selects a "
+"message from the list, and displays that message. The other button deletes a "
+"message. So far, this is not so different to the previous example."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:442
+#, no-c-format
+msgid ""
+"But <literal>MessageManagerBean</literal> is also responsible for fetching "
+"the list of messages the first time we navigate to the message list page. "
+"There are various ways the user could navigate to the page, and not all of "
+"them are preceded by a JSF action&mdash;the user might have bookmarked the "
+"page, for example. So the job of fetching the message list takes place in a "
+"Seam <emphasis>factory method</emphasis>, instead of in an action listener "
+"method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:445
+#, no-c-format
+msgid ""
+"We want to cache the list of messages in memory between server requests, so "
+"we will make this a stateful session bean."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:459
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Scope(SESSION)\n"
+"@Name(\"messageManager\")\n"
+"public class MessageManagerBean implements Serializable, MessageManager\n"
+"{\n"
+"\n"
+"   @DataModel\n"
+"   private List&lt;Message&gt; messageList;\n"
+"   \n"
+"   @DataModelSelection\n"
+"   @Out(required=false)\n"
+"   private Message message;\n"
+"   \n"
+"   @PersistenceContext(type=EXTENDED)\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @Factory(\"messageList\")\n"
+"   public void findMessages()\n"
+"   {\n"
+"      messageList = em.createQuery(\"from Message msg order by msg.datetime "
+"desc\").getResultList();\n"
+"   }\n"
+"   \n"
+"   public void select()\n"
+"   {\n"
+"      message.setRead(true);\n"
+"   }\n"
+"   \n"
+"   public void delete()\n"
+"   {\n"
+"      messageList.remove(message);\n"
+"      em.remove(message);\n"
+"      message=null;\n"
+"   }\n"
+"   \n"
+"   @Remove @Destroy\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:462
+#, no-c-format
+msgid ""
+"The <literal>@DataModel</literal> annotation exposes an attibute of type "
+"<literal>java.util.List</literal> to the JSF page as an instance of "
+"<literal>javax.faces.model.DataModel</literal>. This allows us to use the "
+"list in a JSF <literal>&lt;h:dataTable&gt;</literal> with clickable links "
+"for each row. In this case, the <literal>DataModel</literal> is made "
+"available in a session context variable named <literal>messageList</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:467
+#, no-c-format
+msgid ""
+"The <literal>@DataModelSelection</literal> annotation tells Seam to inject "
+"the <literal>List</literal> element that corresponded to the clicked link."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:472
+#, no-c-format
+msgid ""
+"The <literal>@Out</literal> annotation then exposes the selected value "
+"directly to the page. So ever time a row of the clickable list is selected, "
+"the <literal>Message</literal> is injected to the attribute of the stateful "
+"bean, and the subsequently <emphasis>outjected</emphasis> to the event "
+"context variable named <literal>message</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:477
+#, no-c-format
+msgid ""
+"This stateful bean has an EJB3 <emphasis>extended persistence context</"
+"emphasis>. The messages retrieved in the query remain in the managed state "
+"as long as the bean exists, so any subsequent method calls to the stateful "
+"bean can update them without needing to make any explicit call to the "
+"<literal>EntityManager</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:482
+#, no-c-format
+msgid ""
+"The first time we navigate to the JSP page, there will be no value in the "
+"<literal>messageList</literal> context variable. The <literal>@Factory</"
+"literal> annotation tells Seam to create an instance of "
+"<literal>MessageManagerBean</literal> and invoke the <literal>findMessages()"
+"</literal> method to initialize the value. We call <literal>findMessages()</"
+"literal> a <emphasis>factory method</emphasis> for <literal>messages</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:487
+#, no-c-format
+msgid ""
+"The <literal>select()</literal> action listener method marks the selected "
+"<literal>Message</literal> as read, and updates it in the database."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:492
+#, no-c-format
+msgid ""
+"The <literal>delete()</literal> action listener method removes the selected "
+"<literal>Message</literal> from the database."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:497
+#, no-c-format
+msgid ""
+"All stateful session bean Seam components <emphasis>must</emphasis> have a "
+"method marked <literal>@Remove @Destroy</literal> to ensure that Seam will "
+"remove the stateful bean when the Seam context ends, and clean up any server-"
+"side state."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:504
+#, no-c-format
+msgid ""
+"Note that this is a session-scoped Seam component. It is associated with the "
+"user login session, and all requests from a login session share the same "
+"instance of the component. (In Seam applications, we usually use session-"
+"scoped components sparingly.)"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:510
+#, no-c-format
+msgid ""
+"The session bean local interface: <literal>MessageManager.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:511
+#, no-c-format
+msgid "All session beans have a business interface, of course."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:514
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface MessageManager\n"
+"{\n"
+"   public void findMessages();\n"
+"   public void select();\n"
+"   public void delete();\n"
+"   public void destroy();\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:515
+#, no-c-format
+msgid "From now on, we won't show local interfaces in our code examples."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:518
+#, no-c-format
+msgid ""
+"Let's skip over <literal>components.xml</literal>, <literal>persistence.xml</"
+"literal>, <literal>web.xml</literal>, <literal>ejb-jar.xml</literal>, "
+"<literal>faces-config.xml</literal> and <literal>application.xml</literal> "
+"since they are much the same as the previous example, and go straight to the "
+"JSP."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:524
+#, no-c-format
+msgid "The view: <literal>messages.jsp</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:525
+#, no-c-format
+msgid ""
+"The JSP page is a straightforward use of the JSF <literal>&lt;h:dataTable&gt;"
+"</literal> component. Again, nothing specific to Seam."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:528
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Messages&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;h2&gt;Message List&lt;/h2&gt;\n"
+"     &lt;h:outputText value=\"No messages to display\" rendered=\"#"
+"{messageList.rowCount==0}\"/&gt;\n"
+"     &lt;h:dataTable var=\"msg\" value=\"#{messageList}\" rendered=\"#"
+"{messageList.rowCount&gt;0}\"&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Read\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:selectBooleanCheckbox value=\"#{msg.read}\" disabled=\"true"
+"\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Title\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:commandLink value=\"#{msg.title}\" action=\"#"
+"{messageManager.select}\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Date/Time\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:outputText value=\"#{msg.datetime}\"&gt;\n"
+"              &lt;f:convertDateTime type=\"both\" dateStyle=\"medium\" "
+"timeStyle=\"short\"/&gt;\n"
+"           &lt;/h:outputText&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;h:commandButton value=\"Delete\" action=\"#{messageManager."
+"delete}\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"     &lt;/h:dataTable&gt;\n"
+"     &lt;h3&gt;&lt;h:outputText value=\"#{message.title}\"/&gt;&lt;/h3&gt;\n"
+"     &lt;div&gt;&lt;h:outputText value=\"#{message.text}\"/&gt;&lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:536
+#, no-c-format
+msgid ""
+"The first time we navigate to the <literal>messages.jsp</literal> page, "
+"whether by a JSF postback (faces request) or a direct browser GET request "
+"(non-faces request), the page will try to resolve the <literal>messageList</"
+"literal> context variable. Since this context variable is not initialized, "
+"Seam will call the factory method <literal>findMessages()</literal>, which "
+"performs a query against the database and results in a <literal>DataModel</"
+"literal> being outjected. This <literal>DataModel</literal> provides the row "
+"data needed for rendering the <literal>&lt;h:dataTable&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:539
+#, no-c-format
+msgid ""
+"When the user clicks the <literal>&lt;h:commandLink&gt;</literal>, JSF calls "
+"the <literal>select()</literal> action listener. Seam intercepts this call "
+"and injects the selected row data into the <literal>message</literal> "
+"attribute of the <literal>messageManager</literal> component. The action "
+"listener fires, marking the selected <literal>Message</literal> as read. At "
+"the end of the call, Seam outjects the selected <literal>Message</literal> "
+"to the context variable named <literal>message</literal>. Next, the EJB "
+"container commits the transaction, and the change to the <literal>Message</"
+"literal> is flushed to the database. Finally, the page is re-rendered, "
+"redisplaying the message list, and displaying the selected message below it."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:542
+#, no-c-format
+msgid ""
+"If the user clicks the <literal>&lt;h:commandButton&gt;</literal>, JSF calls "
+"the <literal>delete()</literal> action listener. Seam intercepts this call "
+"and injects the selected row data into the <literal>message</literal> "
+"attribute of the <literal>messageList</literal> component. The action "
+"listener fires, removing the selected <literal>Message</literal> from the "
+"list, and also calling <literal>remove()</literal> on the "
+"<literal>EntityManager</literal>. At the end of the call, Seam refreshes the "
+"<literal>messageList</literal> context variable and clears the context "
+"variable named <literal>message</literal>. The EJB container commits the "
+"transaction, and deletes the <literal>Message</literal> from the database. "
+"Finally, the page is re-rendered, redisplaying the message list."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:550
+#, no-c-format
+msgid "Seam and jBPM: the todo list example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:551
+#, no-c-format
+msgid ""
+"jBPM provides sophisticated functionality for workflow and task management. "
+"To get a small taste of how jBPM integrates with Seam, we'll show you a "
+"simple \"todo list\" application. Since managing lists of tasks is such core "
+"functionality for jBPM, there is hardly any Java code at all in this example."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:564
+#, no-c-format
+msgid ""
+"The center of this example is the jBPM process definition. There are also "
+"two JSPs and two trivial JavaBeans (There was no reason to use session "
+"beans, since they do not access the database, or have any other "
+"transactional behavior). Let's start with the process definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:575
+#, no-c-format
+msgid ""
+"&lt;process-definition name=\"todo\"&gt;\n"
+"   \n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"todo\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;task-node name=\"todo\"&gt;\n"
+"      &lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"         &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"      &lt;/task&gt;\n"
+"      &lt;transition to=\"done\"/&gt;\n"
+"   &lt;/task-node&gt;\n"
+"   \n"
+"   &lt;end-state name=\"done\"/&gt;\n"
+"   \n"
+"&lt;/process-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:578
+#, no-c-format
+msgid ""
+"The <literal>&lt;start-state&gt;</literal> node represents the logical start "
+"of the process. When the process starts, it immediately transitions to the "
+"<literal>todo</literal> node."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:583
+#, no-c-format
+msgid ""
+"The <literal>&lt;task-node&gt;</literal> node represents a <emphasis>wait "
+"state</emphasis>, where business process execution pauses, waiting for one "
+"or more tasks to be performed."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:588
+#, no-c-format
+msgid ""
+"The <literal>&lt;task&gt;</literal> element defines a task to be performed "
+"by a user. Since there is only one task defined on this node, when it is "
+"complete, execution resumes, and we transition to the end state. The task "
+"gets its description from a Seam component named <literal>todoList</literal> "
+"(one of the JavaBeans)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:593
+#, no-c-format
+msgid ""
+"Tasks need to be assigned to a user or group of users when they are created. "
+"In this case, the task is assigned to the current user, which we get from a "
+"built-in Seam component named <literal>actor</literal>. Any Seam component "
+"may be used to perform task assignment."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:598
+#, no-c-format
+msgid ""
+"The <literal>&lt;end-state&gt;</literal> node defines the logical end of the "
+"business process. When execution reaches this node, the process instance is "
+"destroyed."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:605
+#, no-c-format
+msgid ""
+"If we view this process definition using the process definition editor "
+"provided by JBossIDE, this is what it looks like:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:616
+#, no-c-format
+msgid ""
+"This document defines our <emphasis>business process</emphasis> as a graph "
+"of nodes. This is the most trivial possible business process: there is one "
+"<emphasis>task</emphasis> to be performed, and when that task is complete, "
+"the business process ends."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:619
+#, no-c-format
+msgid ""
+"The first JavaBean handles the login screen <literal>login.jsp</literal>. "
+"Its job is just to initialize the jBPM actor id using the <literal>actor</"
+"literal> component. (In a real application, it would also need to "
+"authenticate the user.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:622
+#, no-c-format
+msgid ""
+"@Name(\"login\")\n"
+"public class Login {\n"
+"   \n"
+"   @In\n"
+"   private Actor actor;\n"
+"   \n"
+"   private String user;\n"
+"\n"
+"   public String getUser() {\n"
+"      return user;\n"
+"   }\n"
+"\n"
+"   public void setUser(String user) {\n"
+"      this.user = user;\n"
+"   }\n"
+"   \n"
+"   public String login()\n"
+"   {\n"
+"      actor.setId(user);\n"
+"      return \"/todo.jsp\";\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:623
+#, no-c-format
+msgid ""
+"Here we see the use of <literal>@In</literal> to inject the built-in "
+"<literal>Actor</literal> component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:626
+#, no-c-format
+msgid "The JSP itself is trivial:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:629
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"&#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"&#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Login&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Login&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    &lt;h:form&gt;\n"
+"      &lt;div&gt;\n"
+"        &lt;h:inputText value=\"#{login.user}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Login\" action=\"#{login.login}\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"    &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:630
+#, no-c-format
+msgid ""
+"The second JavaBean is responsible for starting business process instances, "
+"and ending tasks."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:639
+#, no-c-format
+msgid ""
+"@Name(\"todoList\")\n"
+"public class TodoList {\n"
+"   \n"
+"   private String description;\n"
+"   \n"
+"   public String getDescription()\n"
+"   {\n"
+"      return description;\n"
+"   }\n"
+"\n"
+"   public void setDescription(String description) {\n"
+"      this.description = description;\n"
+"   }\n"
+"   \n"
+"   @CreateProcess(definition=\"todo\")\n"
+"   public void createTodo() {}\n"
+"   \n"
+"   @StartTask @EndTask\n"
+"   public void done() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:642
+#, no-c-format
+msgid ""
+"The description property accepts user input form the JSP page, and exposes "
+"it to the process definition, allowing the task description to be set."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:647
+#, no-c-format
+msgid ""
+"The Seam <literal>@CreateProcess</literal> annotation creates a new jBPM "
+"process instance for the named process definition."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:652
+#, no-c-format
+msgid ""
+"The Seam <literal>@StartTask</literal> annotation starts work on a task. The "
+"<literal>@EndTask</literal> ends the task, and allows the business process "
+"execution to resume."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:659
+#, no-c-format
+msgid ""
+"In a more realistic example, <literal>@StartTask</literal> and "
+"<literal>@EndTask</literal> would not appear on the same method, because "
+"there is usually work to be done using the application in order to complete "
+"the task."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:662
+#, no-c-format
+msgid "Finally, the meat of the application is in <literal>todo.jsp</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:665
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://jboss.com/products/seam/taglib\" prefix=\"s\" "
+"&#37;&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Todo List&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Todo List&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"   &lt;h:form id=\"list\"&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:outputText value=\"There are no todo items.\" rendered=\"#"
+"{empty \n"
+"             taskInstanceList}\"/&gt;\n"
+"         &lt;h:dataTable value=\"#{taskInstanceList}\" var=\"task\" rendered="
+"\"#{not empty taskInstanceList}\"&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Description\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.description}\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Created\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:outputText value=\"#{task.taskMgmtInstance."
+"processInstance.start}\"&gt;\n"
+"                    &lt;f:convertDateTime type=\"date\"/&gt;\n"
+"                &lt;/h:outputText&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Priority\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.priority}\" style=\"width: 30"
+"\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Due Date\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.dueDate}\" style=\"width: 100"
+"\"&gt;\n"
+"                    &lt;f:convertDateTime type=\"date\" dateStyle=\"short\"/"
+"&gt;\n"
+"                &lt;/h:inputText&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;s:button value=\"Done\" action=\"#{todoList.done}\" "
+"taskInstance=\"#{task}\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"         &lt;/h:dataTable&gt;\n"
+"      &lt;/div&gt;\n"
+"      &lt;div&gt;\n"
+"      &lt;h:messages/&gt;\n"
+"      &lt;/div&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:commandButton value=\"Update Items\" action=\"update\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"   &lt;h:form id=\"new\"&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:inputText value=\"#{todoList.description}\"/&gt;\n"
+"         &lt;h:commandButton value=\"Create New Item\" action=\"#{todoList."
+"createTodo}\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:666
+#, no-c-format
+msgid "Let's take this one piece at a time."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:669
+#, no-c-format
+msgid ""
+"The page renders a list of tasks, which it gets from a built-in Seam "
+"component named <literal>taskInstanceList</literal>. The list is defined "
+"inside a JSF form."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:672
+#, no-c-format
+msgid ""
+"&lt;h:form id=\"list\"&gt;\n"
+"   &lt;div&gt;\n"
+"      &lt;h:outputText value=\"There are no todo items.\" rendered=\"#{empty "
+"taskInstanceList}\"/&gt;\n"
+"      &lt;h:dataTable value=\"#{taskInstanceList}\" var=\"task\" rendered=\"#"
+"{not empty taskInstanceList}\"&gt;\n"
+"         ...\n"
+"      &lt;/h:dataTable&gt;\n"
+"   &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:673
+#, no-c-format
+msgid ""
+"Each element of the list is an instance of the jBPM class "
+"<literal>TaskInstance</literal>. The following code simply displays the "
+"interesting properties of each task in the list. For the description, "
+"priority and due date, we use input controls, to allow the user to update "
+"these values."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:676
+#, no-c-format
+msgid ""
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"       &lt;h:outputText value=\"Description\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.description}\"/&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Created\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:outputText value=\"#{task.taskMgmtInstance.processInstance.start}"
+"\"&gt;\n"
+"        &lt;f:convertDateTime type=\"date\"/&gt;\n"
+"    &lt;/h:outputText&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Priority\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.priority}\" style=\"width: 30\"/&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Due Date\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.dueDate}\" style=\"width: 100\"&gt;\n"
+"        &lt;f:convertDateTime type=\"date\" dateStyle=\"short\"/&gt;\n"
+"    &lt;/h:inputText&gt;\n"
+"&lt;/h:column&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:677
+#, no-c-format
+msgid ""
+"This button ends the task by calling the action method annotated "
+"<literal>@StartTask @EndTask</literal>. It passes the task id to Seam as a "
+"request parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:680
+#, no-c-format
+msgid ""
+"&lt;h:column&gt;\n"
+"    &lt;s:button value=\"Done\" action=\"#{todoList.done}\" taskInstance=\"#"
+"{task}\"/&gt;\n"
+"&lt;/h:column&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:681
+#, no-c-format
+msgid ""
+"(Note that this is using a Seam <literal>&lt;s:button&gt;</literal> JSF "
+"control from the <literal>seam-ui.jar</literal> package.)"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:684
+#, no-c-format
+msgid ""
+"This button is used to update the properties of the tasks. When the form is "
+"submitted, Seam and jBPM will make any changes to the tasks persistent. "
+"There is no need for any action listener method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:687
+#, no-c-format
+msgid "&lt;h:commandButton value=\"Update Items\" action=\"update\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:688
+#, no-c-format
+msgid ""
+"A second form on the page is used to create new items, by calling the action "
+"method annotated <literal>@CreateProcess</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:691
+#, no-c-format
+msgid ""
+"&lt;h:form id=\"new\"&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:inputText value=\"#{todoList.description}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Create New Item\" action=\"#{todoList."
+"createTodo}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:692
+#, no-c-format
+msgid ""
+"There are several other files needed for the example, but they are just "
+"standard jBPM and Seam configuration and not very interesting."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:699 Tutorial.xml:814 Tutorial.xml:1157 Tutorial.xml:1178
+#: Tutorial.xml:1191
+#, no-c-format
+msgid "TODO"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:707
+#, no-c-format
+msgid "Seam pageflow: the numberguess example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:708
+#, no-c-format
+msgid ""
+"For Seam applications with relatively freeform (ad hoc) navigation, JSF/Seam "
+"navigation rules are a perfectly good way to define the page flow. For "
+"applications with a more constrained style of navigation, especially for "
+"user interfaces which are more stateful, navigation rules make it difficult "
+"to really understand the flow of the system. To understand the flow, you "
+"need to piece it together from the view pages, the actions and the "
+"navigation rules."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:711
+#, no-c-format
+msgid ""
+"Seam allows you to use a jPDL process definition to define pageflow. The "
+"simple number guessing example shows how this is done."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:724
+#, no-c-format
+msgid ""
+"The example is implemented using one JavaBean, three JSP pages and a jPDL "
+"pageflow definition. Let's begin with the pageflow:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:734
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"numberGuess\"&gt;\n"
+"   \n"
+"   &lt;start-page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"          &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"      &lt;/transition&gt;\n"
+"   &lt;/start-page&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess."
+"correctGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateRemainingGuesses\" expression=\"#{numberGuess."
+"lastGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"lose\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"displayGuess\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"lose\" view-id=\"/lose.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:737
+#, no-c-format
+msgid ""
+"The <literal>&lt;page&gt;</literal> element defines a wait state where the "
+"system displays a particular JSF view and waits for user input. The "
+"<literal>view-id</literal> is the same JSF view id used in plain JSF "
+"navigation rules. The <literal>redirect</literal> attribute tells Seam to "
+"use post-then-redirect when navigating to the page. (This results in "
+"friendly browser URLs.)"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:742
+#, no-c-format
+msgid ""
+"The <literal>&lt;transition&gt;</literal> element names a JSF outcome. The "
+"transition is triggered when a JSF action results in that outcome. Execution "
+"will then proceed to the next node of the pageflow graph, after invocation "
+"of any jBPM transition actions."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:747
+#, no-c-format
+msgid ""
+"A transition <literal>&lt;action&gt;</literal> is just like a JSF action, "
+"except that it occurs when a jBPM transition occurs. The transition action "
+"can invoke any Seam component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:752
+#, no-c-format
+msgid ""
+"A <literal>&lt;decision&gt;</literal> node branches the pageflow, and "
+"determines the next node to execute by evaluating a JSF EL expression."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:759
+#, no-c-format
+msgid "Here is what the pageflow looks like in the JBossIDE pageflow editor:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:770
+#, no-c-format
+msgid ""
+"Now that we have seen the pageflow, it is very, very easy to understand the "
+"rest of the application!"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:773
+#, no-c-format
+msgid ""
+"Here is the main page of the application, <literal>numberGuess.jsp</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:776
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"&#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"&#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Guess a number...&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Guess a number...&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    &lt;h:form&gt;\n"
+"        &lt;h:outputText value=\"Higher!\" rendered=\"#{numberGuess."
+"randomNumber&gt;numberGuess.currentGuess}\" /&gt;\n"
+"        &lt;h:outputText value=\"Lower!\" rendered=\"#{numberGuess."
+"randomNumber&lt;numberGuess.currentGuess}\" /&gt;\n"
+"        &lt;br /&gt;\n"
+"        I'm thinking of a number between &lt;h:outputText value=\"#"
+"{numberGuess.smallest}\" /&gt; and \n"
+"        &lt;h:outputText value=\"#{numberGuess.biggest}\" /&gt;. You have \n"
+"        &lt;h:outputText value=\"#{numberGuess.remainingGuesses}\" /&gt; "
+"guesses.\n"
+"        &lt;br /&gt;\n"
+"        Your guess: \n"
+"        &lt;h:inputText value=\"#{numberGuess.currentGuess}\" id=\"guess\" "
+"required=\"true\"&gt;\n"
+"            &lt;f:validateLongRange\n"
+"                maximum=\"#{numberGuess.biggest}\" \n"
+"                minimum=\"#{numberGuess.smallest}\"/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"        &lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"guess"
+"\" /&gt;\n"
+"        &lt;br/&gt;\n"
+"        &lt;h:message for=\"guess\" style=\"color: red\"/&gt;\n"
+"    &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:777
+#, no-c-format
+msgid ""
+"Notice how the command button names the <literal>guess</literal> transition "
+"instead of calling an action directly."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:780
+#, no-c-format
+msgid "The <literal>win.jsp</literal> page is predictable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:783
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"&#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"&#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;You won!&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;You won!&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    Yes, the answer was &lt;h:outputText value=\"#{numberGuess.currentGuess}"
+"\" /&gt;.\n"
+"    It took you &lt;h:outputText value=\"#{numberGuess.guessCount}\" /&gt; "
+"guesses.\n"
+"    Would you like to &lt;a href=\"numberGuess.seam\"&gt;play again&lt;/"
+"a&gt;?\n"
+"  &lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:784
+#, no-c-format
+msgid ""
+"As is <literal>lose.jsp</literal> (which I can't be bothered copy/pasting). "
+"Finally, the JavaBean Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:792
+#, no-c-format
+msgid ""
+"@Name(\"numberGuess\")\n"
+"@Scope(ScopeType.CONVERSATION)\n"
+"public class NumberGuess {\n"
+"   \n"
+"   private int randomNumber;\n"
+"   private Integer currentGuess;\n"
+"   private int biggest;\n"
+"   private int smallest;\n"
+"   private int guessCount;\n"
+"   private int maxGuesses;\n"
+"   \n"
+"   @Create \n"
+"   @Begin(pageflow=\"numberGuess\")\n"
+"   public void begin()\n"
+"   {\n"
+"      randomNumber = new Random().nextInt(100);\n"
+"      guessCount = 0;\n"
+"      biggest = 100;\n"
+"      smallest = 1;\n"
+"   }\n"
+"   \n"
+"   public void setCurrentGuess(Integer guess)\n"
+"   {\n"
+"      this.currentGuess = guess;\n"
+"   }\n"
+"   \n"
+"   public Integer getCurrentGuess()\n"
+"   {\n"
+"      return currentGuess;\n"
+"   }\n"
+"   \n"
+"   public void guess()\n"
+"   {\n"
+"      if (currentGuess&gt;randomNumber)\n"
+"      {\n"
+"         biggest = currentGuess - 1;\n"
+"      }\n"
+"      if (currentGuess&lt;randomNumber)\n"
+"      {\n"
+"         smallest = currentGuess + 1;\n"
+"      }\n"
+"      guessCount ++;\n"
+"   }\n"
+"   \n"
+"   public boolean isCorrectGuess()\n"
+"   {\n"
+"      return currentGuess==randomNumber;\n"
+"   }\n"
+"   \n"
+"   public int getBiggest()\n"
+"   {\n"
+"      return biggest;\n"
+"   }\n"
+"   \n"
+"   public int getSmallest()\n"
+"   {\n"
+"      return smallest;\n"
+"   }\n"
+"   \n"
+"   public int getGuessCount()\n"
+"   {\n"
+"      return guessCount;\n"
+"   }\n"
+"   \n"
+"   public boolean isLastGuess()\n"
+"   {\n"
+"      return guessCount==maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getRemainingGuesses() {\n"
+"      return maxGuesses-guessCount;\n"
+"   }\n"
+"\n"
+"   public void setMaxGuesses(int maxGuesses) {\n"
+"      this.maxGuesses = maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getMaxGuesses() {\n"
+"      return maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getRandomNumber() {\n"
+"      return randomNumber;\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:795
+#, no-c-format
+msgid ""
+"The first time a JSP page asks for a <literal>numberGuess</literal> "
+"component, Seam will create a new one for it, and the <literal>@Create</"
+"literal> method will be invoked, allowing the component to initialize itself."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:800
+#, no-c-format
+msgid ""
+"The <literal>@Begin</literal> annotation starts a Seam "
+"<emphasis>conversation</emphasis> (much more about that later), and "
+"specifies the pageflow definition to use for the conversation's page flow."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:807
+#, no-c-format
+msgid ""
+"As you can see, this Seam component is pure business logic! It doesn't need "
+"to know anything at all about the user interaction flow. This makes the "
+"component potentially more reuseable."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:822
+#, no-c-format
+msgid "A complete Seam application: the Hotel Booking example"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:824
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:825
+#, no-c-format
+msgid ""
+"The booking application is a complete hotel room reservation system "
+"incorporating the following features:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:830
+#, no-c-format
+msgid "User registration"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:835
+#, no-c-format
+msgid "Login"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:840
+#, no-c-format
+msgid "Logout"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:845
+#, no-c-format
+msgid "Set password"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:850
+#, no-c-format
+msgid "Hotel search"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:855
+#, no-c-format
+msgid "Hotel selection"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:860
+#, no-c-format
+msgid "Room reservation"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:865
+#, no-c-format
+msgid "Reservation confirmation"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:870
+#, no-c-format
+msgid "Existing reservation list"
+msgstr ""
+
+#. Tag: screeninfo
+#: Tutorial.xml:875
+#, no-c-format
+msgid "Booking example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:883
+#, no-c-format
+msgid ""
+"The booking application uses JSF, EJB 3.0 and Seam, together with Facelets "
+"for the view. There is also a port of this application to JSF, Facelets, "
+"Seam, JavaBeans and Hibernate3."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:886
+#, no-c-format
+msgid ""
+"One of the things you'll notice if you play with this application for long "
+"enough is that it is extremely <emphasis>robust</emphasis>. You can play "
+"with back buttons and browser refresh and opening multiple windows and "
+"entering nonsensical data as much as you like and you will find it very "
+"difficult to make the application crash. You might think that we spent weeks "
+"testing and fixing bugs to achive this. Actually, this is not the case. Seam "
+"was designed to make it very straightforward to build robust web "
+"applications and a lot of robustness that you are probably used to having to "
+"code yourself comes naturally and automatically with Seam."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:889
+#, no-c-format
+msgid ""
+"As you browse the sourcecode of the example application, and learn how the "
+"application works, observe how the declarative state management and "
+"integrated validation has been used to achieve this robustness."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:895
+#, no-c-format
+msgid "Overview of the booking example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:896
+#, no-c-format
+msgid ""
+"The project structure is identical to the previous one, to install and "
+"deploy this application, please refer to <xref linkend=\"Seam_Tutorial-"
+"Try_the_examples\"/>. Once you've successfully started the application, you "
+"can access it by pointing your browser to <ulink url=\"http://localhost:8080/"
+"seam-booking/\"><literal>http://localhost:8080/seam-booking/</literal></"
+"ulink>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:899
+#, no-c-format
+msgid ""
+"Just ten classes (plus six session beans local interfaces and 1 annotation "
+"interface) where used to implement this application. Six session bean action "
+"listeners contain all the business logic for the listed features."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:904
+#, no-c-format
+msgid ""
+"<literal>BookingListAction</literal> retrieves existing bookings for the "
+"currently logged in user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:907
+#, no-c-format
+msgid ""
+"<literal>ChangePasswordAction</literal> updates the password of the "
+"currently logged in user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:910
+#, no-c-format
+msgid ""
+"<literal>HotelBookingAction</literal> implements the core functionality of "
+"the application: hotel room searching, selection, booking and booking "
+"confirmation. This functionality is implemented as a <emphasis>conversation</"
+"emphasis>, so this is the most interesting class in the application."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:913
+#, no-c-format
+msgid ""
+"<literal>LoginAction</literal> validates the login details and retrieves the "
+"logged in user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:916
+#, no-c-format
+msgid "<literal>LogoutAction</literal> ends the login session."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:919
+#, no-c-format
+msgid "<literal>RegisterAction</literal> registers a new system user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:922
+#, no-c-format
+msgid "Three entity beans implement the application's persistent domain model."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:927
+#, no-c-format
+msgid "<literal>Hotel</literal> is an entity bean that represent a hotel"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:930
+#, no-c-format
+msgid ""
+"<literal>Booking</literal> is an entity bean that represents an existing "
+"booking"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:933
+#, no-c-format
+msgid ""
+"<literal>User</literal> is an entity bean to represents a user who can make "
+"hotel bookings"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:936
+#, no-c-format
+msgid ""
+"Finally, the <literal>LoggedIn</literal> annotation and the "
+"<literal>LoggedInInterceptor</literal> are used to protect actions that "
+"require a logged in user."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:942
+#, no-c-format
+msgid "Understanding Seam conversations"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:943
+#, no-c-format
+msgid ""
+"We encourage you browse the sourcecode at your pleasure. In this tutorial "
+"we'll concentrate upon one particular piece of functionality: hotel search, "
+"selection, booking and confirmation. From the point of view of the user, "
+"everything from selecting a hotel to confirming a booking is one continuous "
+"unit of work, a <emphasis>conversation</emphasis>. Searching, however, is "
+"<emphasis>not</emphasis> part of the conversation. The user can select "
+"multiple hotels from the same search results page, in different browser tabs."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:946
+#, no-c-format
+msgid ""
+"Most web application architectures have no first class construct to "
+"represent a conversation. This causes enormous problems managing state "
+"associated with the conversation. Usually, Java web applications use a "
+"combination of two techniques: first, some state is thrown into the "
+"<literal>HttpSession</literal>; second, persistable state is flushed to the "
+"database after every request, and reconstructed from the database at the "
+"beginning of each new request."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:949
+#, no-c-format
+msgid ""
+"Since the database is the least scalable tier, this often results in an "
+"utterly unacceptable lack of scalability. Added latency is also a problem, "
+"due to the extra traffic to and from the database on every request. To "
+"reduce this redundant traffic, Java applications often introduce a data "
+"(second-level) cache that keeps commonly accessed data between requests. "
+"This cache is necessarily inefficient, because invalidation is based upon an "
+"LRU policy instead of being based upon when the user has finished working "
+"with the data. Furthermore, because the cache is shared between many "
+"concurrent transactions, we've introduced a whole raft of problem's "
+"associated with keeping the cached state consistent with the database."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:952
+#, no-c-format
+msgid ""
+"Now consider the state held in the <literal>HttpSession</literal>. By very "
+"careful programming, we might be able to control the size of the session "
+"data. This is a lot more difficult than it sounds, since web browsers permit "
+"ad hoc non-linear navigation. But suppose we suddenly discover a system "
+"requirement that says that a user is allowed to have <emphasis>mutiple "
+"concurrent conversations</emphasis>, halfway through the development of the "
+"system (this has happened to me). Developing mechanisms to isolate session "
+"state associated with different concurrent conversations, and incorporating "
+"failsafes to ensure that conversation state is destroyed when the user "
+"aborts one of the conversations by closing a browser window or tab is not "
+"for the faint hearted (I've implemented this stuff twice so far, once for a "
+"client application, once for Seam, but I'm famously psychotic)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:955
+#, no-c-format
+msgid "Now there is a better way."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:958
+#, no-c-format
+msgid ""
+"Seam introduces the <emphasis>conversation context</emphasis> as a first "
+"class construct. You can safely keep conversational state in this context, "
+"and be assured that it will have a well-defined lifecycle. Even better, you "
+"won't need to be continually pushing data back and forth between the "
+"application server and the database, since the conversation context is a "
+"natural cache of data that the user is currently working with."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:961
+#, no-c-format
+msgid ""
+"Usually, the components we keep in the conversation context are stateful "
+"session beans. (We can also keep entity beans and JavaBeans in the "
+"conversation context.) There is an ancient canard in the Java community that "
+"stateful session beans are a scalability killer. This may have been true in "
+"1998 when WebFoobar 1.0 was released. It is no longer true today. "
+"Application servers like JBoss 4.0 have extremely sophisticated mechanisms "
+"for stateful session bean state replication. (For example, the JBoss EJB3 "
+"container performs fine-grained replication, replicating only those bean "
+"attribute values which actually changed.) Note that all the traditional "
+"technical arguments for why stateful beans are inefficient apply equally to "
+"the <literal>HttpSession</literal>, so the practice of shifting state from "
+"business tier stateful session bean components to the web session to try and "
+"improve performance is unbelievably misguided. It is certainly possible to "
+"write unscalable applications using stateful session beans, by using "
+"stateful beans incorrectly, or by using them for the wrong thing. But that "
+"doesn't mean you should <emphasis>never</emphasis> use them. Anyway, Seam "
+"guides you toward a safe usage model. Welcome to 2005."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:964
+#, no-c-format
+msgid "OK, I'll stop ranting now, and get back to the tutorial."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:967
+#, no-c-format
+msgid ""
+"The booking example application shows how stateful components with different "
+"scopes can collaborate together to achieve complex behaviors. The main page "
+"of the booking application allows the user to search for hotels. The search "
+"results are kept in the Seam session scope. When the user navigates to one "
+"of these hotels, a conversation begins, and a conversation scoped component "
+"calls back to the session scoped component to retrieve the selected hotel."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:970
+#, no-c-format
+msgid ""
+"The booking example also demonstrates the use of Ajax4JSF to implement rich "
+"client behavior without the use of handwritten JavaScript."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:973
+#, no-c-format
+msgid ""
+"The search functionality is implemented using a session-scope stateful "
+"session bean, similar to the one we saw in the message list example above."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:983
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"hotelSearch\")\n"
+"@Scope(ScopeType.SESSION)\n"
+"@LoggedIn\n"
+"public class HotelSearchingAction implements HotelSearching\n"
+"{\n"
+"   \n"
+"   @PersistenceContext\n"
+"   private EntityManager em;\n"
+"   \n"
+"   private String searchString;\n"
+"   private int pageSize = 10;\n"
+"   private int page;\n"
+"   \n"
+"   @DataModel\n"
+"   private List&lt;Hotel&gt; hotels;\n"
+"   \n"
+"   public String find()\n"
+"   {\n"
+"      page = 0;\n"
+"      queryHotels();   \n"
+"      return \"main\";\n"
+"   }\n"
+"\n"
+"   public String nextPage()\n"
+"   {\n"
+"      page++;\n"
+"      queryHotels();\n"
+"      return \"main\";\n"
+"   }\n"
+"      \n"
+"   private void queryHotels()\n"
+"   {\n"
+"      String searchPattern = searchString==null ? \"&#37;\" : '&#37;' + \n"
+"          searchString.toLowerCase().replace('*', '&#37;') + '&#37;';\n"
+"      hotels = em.createQuery(\"select h from Hotel h where lower(h.name) "
+"like\n"
+"          :search or lower(h.city) like :search \n"
+"          or lower(h.zip) like :search or lower(h.address) like :search\")\n"
+"            .setParameter(\"search\", searchPattern)\n"
+"            .setMaxResults(pageSize)\n"
+"            .setFirstResult( page * pageSize )\n"
+"            .getResultList();\n"
+"   }\n"
+"   \n"
+"   public boolean isNextPageAvailable()\n"
+"   {\n"
+"      return hotels!=null &amp;&amp; hotels.size()==pageSize;\n"
+"   }\n"
+"   \n"
+"   public int getPageSize() {\n"
+"      return pageSize;\n"
+"   }\n"
+"\n"
+"   public void setPageSize(int pageSize) {\n"
+"      this.pageSize = pageSize;\n"
+"   }\n"
+"\n"
+"   public String getSearchString()\n"
+"   {\n"
+"      return searchString;\n"
+"   }\n"
+"\n"
+"   public void setSearchString(String searchString)\n"
+"   {\n"
+"      this.searchString = searchString;\n"
+"   }\n"
+"   \n"
+"   @Destroy @Remove\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:986
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Stateful</literal> annotation identifies this "
+"class as a stateful session bean. Stateful session beans are scoped to the "
+"conversation context by default."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:991
+#, no-c-format
+msgid ""
+"The <literal>@LoggedIn</literal> annotation applies a custom Seam "
+"interceptor to the component. This works because <literal>@LoggedIn</"
+"literal> is marked with an <literal>@Interceptor</literal> meta-annotation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:996
+#, no-c-format
+msgid ""
+"The <link linkend=\"datamodel-annotation\"><literal>@DataModel</literal></"
+"link> annotation exposes a <literal>List</literal> as a JSF "
+"<literal>ListDataModel</literal>. This makes it easy to implement clickable "
+"lists for search screens. In this case, the list of hotels is exposed to the "
+"page as a <literal>ListDataModel</literal> in the conversation variable "
+"named <literal>hotels</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1001
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Remove</literal> annotation specifies that a "
+"stateful session bean should be removed and its state destroyed after "
+"invocation of the annotated method. In Seam, all stateful session beans "
+"should define a method marked <literal>@Destroy @Remove</literal>. This is "
+"the EJB remove method that will be called when Seam destroys the session "
+"context. Actually, the <link linkend=\"destroy-annotation"
+"\"><literal>@Destroy</literal></link> annotation is of more general "
+"usefulness, since it can be used for any kind of cleanup that should happen "
+"when any Seam context ends. If you don't have an <literal>@Destroy @Remove</"
+"literal> method, state will leak and you will suffer performance problems."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1008
+#, no-c-format
+msgid ""
+"The main page of the application is a Facelets page. Let's look at the "
+"fragment which relates to searching for hotels:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1018
+#, no-c-format
+msgid ""
+"&lt;div class=\"section\"&gt;\n"
+"&lt;h:form&gt;\n"
+"  \n"
+"  &lt;span class=\"errors\"&gt;\n"
+"    &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"  &lt;/span&gt;\n"
+"    \n"
+"  &lt;h1&gt;Search Hotels&lt;/h1&gt;\n"
+"  &lt;fieldset&gt; \n"
+"     &lt;h:inputText value=\"#{hotelSearch.searchString}\" style=\"width: "
+"165px;\"&gt;\n"
+"        &lt;a:support event=\"onkeyup\" actionListener=\"#{hotelSearch.find}"
+"\" \n"
+"                   reRender=\"searchResults\" /&gt;\n"
+"     &lt;/h:inputText&gt;\n"
+"     &amp;#160;\n"
+"     &lt;a:commandButton value=\"Find Hotels\" action=\"#{hotelSearch.find}"
+"\" \n"
+"                      styleClass=\"button\" reRender=\"searchResults\"/&gt;\n"
+"     &amp;#160;\n"
+"     &lt;a:status&gt;\n"
+"        &lt;f:facet name=\"start\"&gt;\n"
+"           &lt;h:graphicImage value=\"/img/spinner.gif\"/&gt;\n"
+"        &lt;/f:facet&gt;\n"
+"     &lt;/a:status&gt;\n"
+"     &lt;br/&gt;\n"
+"     &lt;h:outputLabel for=\"pageSize\"&gt;Maximum results:&lt;/h:"
+"outputLabel&gt;&amp;#160;\n"
+"     &lt;h:selectOneMenu value=\"#{hotelSearch.pageSize}\" id=\"pageSize"
+"\"&gt;\n"
+"        &lt;f:selectItem itemLabel=\"5\" itemValue=\"5\"/&gt;\n"
+"        &lt;f:selectItem itemLabel=\"10\" itemValue=\"10\"/&gt;\n"
+"        &lt;f:selectItem itemLabel=\"20\" itemValue=\"20\"/&gt;\n"
+"     &lt;/h:selectOneMenu&gt;\n"
+"  &lt;/fieldset&gt;\n"
+"    \n"
+"&lt;/h:form&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;a:outputPanel id=\"searchResults\"&gt;\n"
+"  &lt;div class=\"section\"&gt;\n"
+"  &lt;h:outputText value=\"No Hotels Found\" \n"
+"                rendered=\"#{hotels != null and hotels.rowCount==0}\"/&gt;\n"
+"  &lt;h:dataTable value=\"#{hotels}\" var=\"hot\" rendered=\"#{hotels."
+"rowCount&gt;0}\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Name&lt;/f:facet&gt;\n"
+"      #{hot.name}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Address&lt;/f:facet&gt;\n"
+"      #{hot.address}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;City, State&lt;/f:facet&gt;\n"
+"      #{hot.city}, #{hot.state}, #{hot.country}\n"
+"    &lt;/h:column&gt; \n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Zip&lt;/f:facet&gt;\n"
+"      #{hot.zip}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"      &lt;s:link value=\"View Hotel\" action=\"#{hotelBooking.selectHotel"
+"(hot)}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"  &lt;/h:dataTable&gt;\n"
+"  &lt;s:link value=\"More results\" action=\"#{hotelSearch.nextPage}\" \n"
+"          rendered=\"#{hotelSearch.nextPageAvailable}\"/&gt;\n"
+"  &lt;/div&gt;\n"
+"&lt;/a:outputPanel&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1021
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:support&gt;</literal> tag allows a JSF action "
+"event listener to be called by asynchronous <literal>XMLHttpRequest</"
+"literal> when a JavaScript event like <literal>onkeyup</literal> occurs. "
+"Even better, the <literal>reRender</literal> attribute lets us render a "
+"fragment of the JSF page and perform a partial page update when the "
+"asynchronous response is received."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1026
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:status&gt;</literal> tag lets us display a "
+"cheesy annimated image while we wait for asynchronous requests to return."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1031
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:outputPanel&gt;</literal> tag defines a region "
+"of the page which can be re-rendered by an asynchronous request."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1036
+#, no-c-format
+msgid ""
+"The Seam <literal>&lt;s:link&gt;</literal> tag lets us attach a JSF action "
+"listener to an ordinary (non-JavaScript) HTML link. The advantage of this "
+"over the standard JSF <literal>&lt;h:commandLink&gt;</literal> is that it "
+"preserves the operation of \"open in new window\" and \"open in new tab\". "
+"Also notice that we use a method binding with a parameter: <literal>#"
+"{hotelBooking.selectHotel(hot)}</literal>. This is not possible in the "
+"standard Unified EL, but Seam provides an extension to the EL that lets you "
+"use parameters on any method binding expression."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1043
+#, no-c-format
+msgid ""
+"This page displays the search results dynamically as we type, and lets us "
+"choose a hotel and pass it to the <literal>selectHotel()</literal> method of "
+"the <literal>HotelBookingAction</literal>, which is where the "
+"<emphasis>really</emphasis> interesting stuff is going to happen."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1046
+#, no-c-format
+msgid ""
+"Now lets see how the booking example application uses a conversation-scoped "
+"stateful session bean to achieve a natural cache of persistent data related "
+"to the conversation. The following code example is pretty long. But if you "
+"think of it as a list of scripted actions that implement the various steps "
+"of the conversation, it's understandable. Read the class from top to bottom, "
+"as if it were a story."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1057
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"hotelBooking\")\n"
+"@LoggedIn\n"
+"public class HotelBookingAction implements HotelBooking\n"
+"{\n"
+"   \n"
+"   @PersistenceContext(type=EXTENDED)\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @In \n"
+"   private User user;\n"
+"   \n"
+"   @In(required=false) @Out\n"
+"   private Hotel hotel;\n"
+"   \n"
+"   @In(required=false) \n"
+"   @Out(required=false)\n"
+"   private Booking booking;\n"
+"     \n"
+"   @In\n"
+"   private FacesMessages facesMessages;\n"
+"      \n"
+"   @In\n"
+"   private Events events;\n"
+"   \n"
+"   @Logger \n"
+"   private Log log;\n"
+"   \n"
+"   @Begin\n"
+"   public String selectHotel(Hotel selectedHotel)\n"
+"   {\n"
+"      hotel = em.merge(selectedHotel);\n"
+"      return \"hotel\";\n"
+"   }\n"
+"   \n"
+"   public String bookHotel()\n"
+"   {      \n"
+"      booking = new Booking(hotel, user);\n"
+"      Calendar calendar = Calendar.getInstance();\n"
+"      booking.setCheckinDate( calendar.getTime() );\n"
+"      calendar.add(Calendar.DAY_OF_MONTH, 1);\n"
+"      booking.setCheckoutDate( calendar.getTime() );\n"
+"      \n"
+"      return \"book\";\n"
+"   }\n"
+"\n"
+"   public String setBookingDetails()\n"
+"   {\n"
+"      if (booking==null || hotel==null) return \"main\";\n"
+"      if ( !booking.getCheckinDate().before( booking.getCheckoutDate() ) )\n"
+"      {\n"
+"         facesMessages.add(\"Check out date must be later than check in date"
+"\");\n"
+"         return null;\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return \"confirm\";\n"
+"      }\n"
+"   }\n"
+"\n"
+"   @End\n"
+"   public String confirm()\n"
+"   {\n"
+"      if (booking==null || hotel==null) return \"main\";\n"
+"      em.persist(booking);\n"
+"      facesMessages.add\n"
+"          (\"Thank you, #{user.name}, your confimation number for #{hotel."
+"name} is #{booking.id}\");\n"
+"      log.info(\"New booking: #{booking.id} for #{user.username}\");\n"
+"      events.raiseEvent(\"bookingConfirmed\");\n"
+"      return \"confirmed\";\n"
+"   }\n"
+"   \n"
+"   @End\n"
+"   public String cancel()\n"
+"   {\n"
+"      return \"main\";\n"
+"   }\n"
+"   \n"
+"   @Destroy @Remove\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1060
+#, no-c-format
+msgid ""
+"This bean uses an EJB3 <emphasis>extended persistence context</emphasis>, so "
+"that any entity instances remain managed for the whole lifecycle of the "
+"stateful session bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1065
+#, no-c-format
+msgid ""
+"The <link linkend=\"out-annotation\"><literal>@Out</literal></link> "
+"annotation declares that an attribute value is <emphasis>outjected</"
+"emphasis> to a context variable after method invocations. In this case, the "
+"context variable named <literal>hotel</literal> will be set to the value of "
+"the <literal>hotel</literal> instance variable after every action listener "
+"invocation completes."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1070
+#, no-c-format
+msgid ""
+"The <link linkend=\"begin-annotation\"><literal>@Begin</literal></link> "
+"annotation specifies that the annotated method begins a <emphasis>long-"
+"running conversation</emphasis>, so the current conversation context will "
+"not be destroyed at the end of the request. Instead, it will be reassociated "
+"with every request from the current window, and destroyed either by timeout "
+"due to conversation inactivity or invocation of a matching <literal>@End</"
+"literal> method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1075
+#, no-c-format
+msgid ""
+"The <link linkend=\"end-annotation\"><literal>@End</literal></link> "
+"annotation specifies that the annotated method ends the current long-running "
+"conversation, so the current conversation context will be destroyed at the "
+"end of the request."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1080
+#, no-c-format
+msgid ""
+"This EJB remove method will be called when Seam destroys the conversation "
+"context. Don't ever forget to define this method!"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1087
+#, no-c-format
+msgid ""
+"<literal>HotelBookingAction</literal> contains all the action listener "
+"methods that implement selection, booking and booking confirmation, and "
+"holds state related to this work in its instance variables. We think you'll "
+"agree that this code is much cleaner and simpler than getting and setting "
+"<literal>HttpSession</literal> attributes."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1090
+#, no-c-format
+msgid ""
+"Even better, a user can have multiple isolated conversations per login "
+"session. Try it! Log in, run a search, and navigate to different hotel pages "
+"in multiple browser tabs. You'll be able to work on creating two different "
+"hotel reservations at the same time. If you leave any one conversation "
+"inactive for long enough, Seam will eventually time out that conversation "
+"and destroy its state. If, after ending a conversation, you backbutton to a "
+"page of that conversation and try to perform an action, Seam will detect "
+"that the conversation was already ended, and redirect you to the search page."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1096
+#, no-c-format
+msgid "The Seam UI control library"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1097
+#, no-c-format
+msgid ""
+"If you check inside the WAR file for the booking application, you'll find "
+"<literal>seam-ui.jar</literal> in the <literal>WEB-INF/lib</literal> "
+"directory. This package contains a number of JSF custom controls that "
+"integrate with Seam. The booking application uses the <literal>&lt;s:link&gt;"
+"</literal> control for navigation from the search screen to the hotel page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1100
+#, no-c-format
+msgid ""
+"&lt;s:link value=\"View Hotel\" action=\"#{hotelBooking.selectHotel}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1101
+#, no-c-format
+msgid ""
+"The use of <literal>&lt;s:link&gt;</literal> here allows us to attach an "
+"action listener to a HTML link without breaking the browser's \"open in new "
+"window\" feature. The standard JSF <literal>&lt;h:commandLink&gt;</literal> "
+"does not work with \"open in new window\". We'll see later that <literal>&lt;"
+"s:link&gt;</literal> also offers a number of other useful features, "
+"including conversation propagation rules."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1104
+#, no-c-format
+msgid ""
+"The booking application uses some other Seam and Ajax4JSF controls, "
+"especially on the <literal>/book.xhtml</literal> page. We won't get into the "
+"details of those controls here, but if you want to understand this code, "
+"please refer to the chapter covering Seam's functionality for JSF form "
+"validation."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1110
+#, no-c-format
+msgid "The Seam Debug Page"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1111
+#, no-c-format
+msgid ""
+"The WAR also includes <literal>seam-debug.jar</literal>. If this jar is "
+"deployed in <literal>WEB-INF/lib</literal>, along with the Facelets, and if "
+"you set the following Seam property in <literal>web.xml</literal> or "
+"<literal>seam.properties</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1114
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;org.jboss.seam.core.init.debug&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;true&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1115
+#, no-c-format
+msgid ""
+"Then the Seam debug page will be available. This page lets you browse and "
+"inspect the Seam components in any of the Seam contexts associated with your "
+"current login session. Just point your browser at <ulink url=\"http://"
+"localhost:8080/seam-booking/debug.seam\"><literal>http://localhost:8080/seam-"
+"booking/debug.seam</literal></ulink>."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1131
+#, no-c-format
+msgid "A complete application featuring Seam and jBPM: the DVD Store example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1132
+#, no-c-format
+msgid ""
+"The DVD Store demo application shows the practical usage of jBPM for both "
+"task management and pageflow."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1135
+#, no-c-format
+msgid ""
+"The user screens take advantage of a jPDL pageflow to implement searching "
+"and shopping cart functionality."
+msgstr ""
+
+#. Tag: screeninfo
+#: Tutorial.xml:1138 Tutorial.xml:1149 Tutorial.xml:1170
+#, no-c-format
+msgid "DVD Store example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1146
+#, no-c-format
+msgid ""
+"The administration screens take use jBPM to manage the approval and shipping "
+"cycle for orders. The business process may even be changed dynamically, by "
+"selecting a different process definition!"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1160
+#, no-c-format
+msgid "Look in the <literal>dvdstore</literal> directory."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1166
+#, no-c-format
+msgid ""
+"A complete application featuring Seam workspace management: the Issue "
+"Tracker example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1167
+#, no-c-format
+msgid ""
+"The Issue Tracker demo shows off Seam's workspace management functionality: "
+"the conversation switcher, conversation list and breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1181
+#, no-c-format
+msgid "Look in the <literal>issues</literal> directory."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1187
+#, no-c-format
+msgid "An example of Seam with Hibernate: the Hibernate Booking example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1188
+#, no-c-format
+msgid ""
+"The Hibernate Booking demo is a straight port of the Booking demo to an "
+"alternative architecture that uses Hibernate for persistence and JavaBeans "
+"instead of session beans."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1194
+#, no-c-format
+msgid "Look in the <literal>hibernate</literal> directory."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1200
+#, no-c-format
+msgid "A RESTful Seam application: the Blog example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1201
+#, no-c-format
+msgid ""
+"Seam makes it very easy to implement applications which keep state on the "
+"server-side. However, server-side state is not always appropriate, "
+"especially in for functionality that serves up <emphasis>content</emphasis>. "
+"For this kind of problem we often need to let the user bookmark pages and "
+"have a relatively stateless server, so that any page can be accessed at any "
+"time, via the bookmark. The Blog example shows how to a implement RESTful "
+"application using Seam. Every page of the application can be bookmarked, "
+"including the search results page."
+msgstr ""
+
+#. Tag: screeninfo
+#: Tutorial.xml:1204
+#, no-c-format
+msgid "Blog example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1212
+#, no-c-format
+msgid ""
+"The Blog example demonstrates the use of \"pull\"-style MVC, where instead "
+"of using action listener methods to retrieve data and prepare the data for "
+"the view, the view pulls data from components as it is being rendered."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1216
+#, no-c-format
+msgid "Using \"pull\"-style MVC"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1217
+#, no-c-format
+msgid ""
+"This snippet from the <literal>index.xhtml</literal> facelets page displays "
+"a list of recent blog entries:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1220
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{blog.recentBlogEntries}\" var=\"blogEntry\" rows="
+"\"3\"&gt;\n"
+"   &lt;h:column&gt;\n"
+"      &lt;div class=\"blogEntry\"&gt;\n"
+"         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"         &lt;div&gt;\n"
+"            &lt;h:outputText escape=\"false\" \n"
+"                  value=\"#{blogEntry.excerpt==null ? blogEntry.body : "
+"blogEntry.excerpt}\"/&gt;\n"
+"         &lt;/div&gt;\n"
+"         &lt;p&gt;\n"
+"            &lt;h:outputLink value=\"entry.seam\" rendered=\"#{blogEntry."
+"excerpt!=null}\"&gt;\n"
+"               &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/"
+"&gt;\n"
+"               Read more...\n"
+"            &lt;/h:outputLink&gt;\n"
+"         &lt;/p&gt;\n"
+"         &lt;p&gt;\n"
+"            [Posted on \n"
+"            &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"               &lt;f:convertDateTime timeZone=\"#{blog.timeZone}\" locale=\"#"
+"{blog.locale}\" \n"
+"                   type=\"both\"/&gt;\n"
+"            &lt;/h:outputText&gt;]\n"
+"            &amp;#160;\n"
+"            &lt;h:outputLink value=\"entry.seam\"&gt;[Link]\n"
+"               &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/"
+"&gt;\n"
+"            &lt;/h:outputLink&gt;\n"
+"         &lt;/p&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1221
+#, no-c-format
+msgid ""
+"If we navigate to this page from a bookmark, how does the data used by the "
+"<literal>&lt;h:dataTable&gt;</literal> actually get initialized? Well, what "
+"happens is that the <literal>Blog</literal> is retrieved lazily&mdash;"
+"\"pulled\"&mdash;when needed, by a Seam component named <literal>blog</"
+"literal>. This is the opposite flow of control to what is usual in "
+"traditional web action-based frameworks like Struts."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1229
+#, no-c-format
+msgid ""
+"@Name(\"blog\")\n"
+"@Scope(ScopeType.STATELESS)\n"
+"public class BlogService \n"
+"{\n"
+"   \n"
+"   @In\n"
+"   private EntityManager entityManager;\n"
+"  \n"
+"   @Unwrap\n"
+"   public Blog getBlog()\n"
+"   {\n"
+"      return (Blog) entityManager.createQuery(\"from Blog b left join fetch "
+"b.blogEntries\")\n"
+"            .setHint(\"org.hibernate.cacheable\", true)\n"
+"            .getSingleResult();\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1232
+#, no-c-format
+msgid ""
+"This component uses a <emphasis>seam-managed persistence context</emphasis>. "
+"Unlike the other examples we've seen, this persistence context is managed by "
+"Seam, instead of by the EJB3 container. The persistence context spans the "
+"entire web request, allowing us to avoid any exceptions that occur when "
+"accessing unfetched associations in the view."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1237
+#, no-c-format
+msgid ""
+"The <literal>@Unwrap</literal> annotation tells Seam to provide the return "
+"value of the method&mdash;the <literal>Blog</literal>&mdash;instead of the "
+"actual <literal>BlogService</literal> component to clients. This is the Seam "
+"<emphasis>manager component pattern</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1244
+#, no-c-format
+msgid ""
+"This is good so far, but what about bookmarking the result of form "
+"submissions, such as a search results page?"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1250
+#, no-c-format
+msgid "Bookmarkable search results page"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1251
+#, no-c-format
+msgid ""
+"The blog example has a tiny form in the top right of each page that allows "
+"the user to search for blog entries. This is defined in a file, "
+"<literal>menu.xhtml</literal>, included by the facelets template, "
+"<literal>template.xhtml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1254
+#, no-c-format
+msgid ""
+"&lt;div id=\"search\"&gt;\n"
+"   &lt;h:form&gt;\n"
+"      &lt;h:inputText value=\"#{searchAction.searchPattern}\"/&gt;\n"
+"      &lt;h:commandButton value=\"Search\" action=\"/search.xhtml\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1255
+#, no-c-format
+msgid ""
+"To implement a bookmarkable search results page, we need to perform a "
+"browser redirect after processing the search form submission. Because we "
+"used the JSF view id as the action outcome, Seam automatically redirects to "
+"the view id when the form is submitted. Alternatively, we could have defined "
+"a navigation rule like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1258
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"   &lt;navigation-case&gt;\n"
+"      &lt;from-outcome&gt;searchResults&lt;/from-outcome&gt;\n"
+"      &lt;to-view-id&gt;/search.xhtml&lt;/to-view-id&gt;\n"
+"      &lt;redirect/&gt;\n"
+"   &lt;/navigation-case&gt;\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1259
+#, no-c-format
+msgid "Then the form would have looked like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1262
+#, no-c-format
+msgid ""
+"&lt;div id=\"search\"&gt;\n"
+"   &lt;h:form&gt;\n"
+"      &lt;h:inputText value=\"#{searchAction.searchPattern}\"/&gt;\n"
+"      &lt;h:commandButton value=\"Search\" action=\"searchResults\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1263
+#, no-c-format
+msgid ""
+"But when we redirect, we need to include the values submitted with the form "
+"as request parameters, to get a bookmarkable URL like <literal>http://"
+"localhost:8080/seam-blog/search.seam?searchPattern=seam</literal>. JSF does "
+"not provide an easy way to do this, but Seam does. We use a Seam "
+"<emphasis>page parameter</emphasis>, defined in <literal>WEB-INF/pages.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1266
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   &lt;page view-id=\"/search.xhtml\"&gt;\n"
+"      &lt;param name=\"searchPattern\" value=\"#{searchService.searchPattern}"
+"\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1267
+#, no-c-format
+msgid ""
+"This tells Seam to include the value of <literal>#{searchService."
+"searchPattern}</literal> as a request parameter named "
+"<literal>searchPattern</literal> when redirecting to the page, and then re-"
+"apply the value of that parameter to the model before rendering the page."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1270
+#, no-c-format
+msgid "The redirect takes us to the <literal>search.xhtml</literal> page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1273
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{searchResults}\" var=\"blogEntry\"&gt;\n"
+"   &lt;h:column&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:outputLink value=\"entry.seam\"&gt;\n"
+"            &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"            #{blogEntry.title}\n"
+"         &lt;/h:outputLink&gt;\n"
+"         posted on \n"
+"         &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"            &lt;f:convertDateTime timeZone=\"#{blog.timeZone}\" locale=\"#"
+"{blog.locale}\" type=\"both\"/&gt;\n"
+"         &lt;/h:outputText&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1274
+#, no-c-format
+msgid ""
+"Which again uses \"pull\"-style MVC to retrieve the actual search results:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1277
+#, no-c-format
+msgid ""
+"@Name(\"searchService\")\n"
+"public class SearchService \n"
+"{\n"
+"   \n"
+"   @In\n"
+"   private EntityManager entityManager;\n"
+"   \n"
+"   private String searchPattern;\n"
+"   \n"
+"   @Factory(\"searchResults\")\n"
+"   public List&lt;BlogEntry&gt; getSearchResults()\n"
+"   {\n"
+"      if (searchPattern==null)\n"
+"      {\n"
+"         return null;\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return entityManager.createQuery(\"select be from BlogEntry be "
+"where lower(be.title)\n"
+"             like :searchPattern or lower(be.body) like :searchPattern \n"
+"             order by be.date desc\")\n"
+"               .setParameter( \"searchPattern\", getSqlSearchPattern() )\n"
+"               .setMaxResults(100)\n"
+"               .getResultList();\n"
+"      }\n"
+"   }\n"
+"\n"
+"   private String getSqlSearchPattern()\n"
+"   {\n"
+"      return searchPattern==null ? \"\" : '&#37;' + \n"
+"          searchPattern.toLowerCase().replace('*', '&#37;').replace('?', "
+"'_') + '&#37;';\n"
+"   }\n"
+"\n"
+"   public String getSearchPattern()\n"
+"   {\n"
+"      return searchPattern;\n"
+"   }\n"
+"\n"
+"   public void setSearchPattern(String searchPattern)\n"
+"   {\n"
+"      this.searchPattern = searchPattern;\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1282
+#, no-c-format
+msgid "Using \"push\"-style MVC in a RESTful application"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1283
+#, no-c-format
+msgid ""
+"Very occasionally, it makes more sense to use push-style MVC for processing "
+"RESTful pages, and so Seam provides the notion of a <emphasis>page action</"
+"emphasis>. The Blog example uses a page action for the blog entry page, "
+"<literal>entry.xhtml</literal>. Note that this is a little bit contrived, it "
+"would have been easier to use pull-style MVC here as well."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1286
+#, no-c-format
+msgid ""
+"The <literal>entryAction</literal> component works much like an action class "
+"in a traditional push-MVC action-oriented framework like Struts:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1289
+#, no-c-format
+msgid ""
+"@Name(\"entryAction\")\n"
+"@Scope(STATELESS)\n"
+"public class EntryAction\n"
+"{\n"
+"   @In(create=true) \n"
+"   private Blog blog;\n"
+"   \n"
+"   @Out\n"
+"   private BlogEntry blogEntry;\n"
+"   \n"
+"   public void loadBlogEntry(String id) throws EntryNotFoundException\n"
+"   {\n"
+"      blogEntry = blog.getBlogEntry(id);\n"
+"      if (blogEntry==null) throw new EntryNotFoundException(id);\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1290
+#, no-c-format
+msgid "Page actions are also declared in <literal>pages.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1293
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   ...\n"
+"\n"
+"   &lt;page view-id=\"/entry.xhtml\" action=\"#{entryAction.loadBlogEntry"
+"(blogEntry.id)}\"&gt;\n"
+"      &lt;param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"\n"
+"   &lt;page view-id=\"/post.xhtml\" action=\"#{loginAction.challenge}\"/"
+"&gt;\n"
+"\n"
+"   &lt;page view-id=\"*\" action=\"#{blog.hitCount.hit}\"/&gt;\n"
+"\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1294
+#, no-c-format
+msgid ""
+"Notice that the example is using page actions for some other "
+"functionality&mdash;the login challenge, and the pageview counter. Also "
+"notice the use of a parameter in the page action method binding. This is not "
+"a standard feature of JSF EL, but Seam lets you use it, not just for page "
+"actions, but also in JSF method bindings."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1297
+#, no-c-format
+msgid ""
+"When the <literal>entry.xhtml</literal> page is requested, Seam first binds "
+"the page parameter <literal>blogEntryId</literal> to the model, then runs "
+"the page action, which retrieves the needed data&mdash;the "
+"<literal>blogEntry</literal>&mdash;and places it in the Seam event context. "
+"Finally, the following is rendered:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1300
+#, no-c-format
+msgid ""
+"&lt;div class=\"blogEntry\"&gt;\n"
+"   &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"   &lt;div&gt;\n"
+"      &lt;h:outputText escape=\"false\" value=\"#{blogEntry.body}\"/&gt;\n"
+"   &lt;/div&gt;\n"
+"   &lt;p&gt;\n"
+"      [Posted on&amp;#160;\n"
+"      &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"         &lt;f:convertDateTime timezone=\"#{blog.timeZone}\" locale=\"#{blog."
+"locale}\" type=\"both\"/&gt;\n"
+"      &lt;/h:outputText&gt;]\n"
+"   &lt;/p&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1301
+#, no-c-format
+msgid ""
+"If the blog entry is not found in the database, the "
+"<literal>EntryNotFoundException</literal> exception is thrown. We want this "
+"exception to result in a 404 error, not a 505, so we annotate the exception "
+"class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1304
+#, no-c-format
+msgid ""
+"@ApplicationException(rollback=true)\n"
+"@HttpError(errorCode=HttpServletResponse.SC_NOT_FOUND)\n"
+"public class EntryNotFoundException extends Exception\n"
+"{\n"
+"   EntryNotFoundException(String id)\n"
+"   {\n"
+"      super(\"entry not found: \" + id);\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1305
+#, no-c-format
+msgid ""
+"An alternative implementation of the example does not use the parameter in "
+"the method binding:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1308
+#, no-c-format
+msgid ""
+"@Name(\"entryAction\")\n"
+"@Scope(STATELESS)\n"
+"public class EntryAction\n"
+"{\n"
+"   @In(create=true) \n"
+"   private Blog blog;\n"
+"   \n"
+"   @In @Out\n"
+"   private BlogEntry blogEntry;\n"
+"   \n"
+"   public void loadBlogEntry() throws EntryNotFoundException\n"
+"   {\n"
+"      blogEntry = blog.getBlogEntry( blogEntry.getId() );\n"
+"      if (blogEntry==null) throw new EntryNotFoundException(id);\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1309
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   ...\n"
+"\n"
+"   &lt;page view-id=\"/entry.xhtml\" action=\"#{entryAction.loadBlogEntry}"
+"\"&gt;\n"
+"      &lt;param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1310
+#, no-c-format
+msgid "It is a matter of taste which implementation you prefer."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1318
+#, no-c-format
+msgid "Running the Seam examples in JBoss using the JSF 1.2 RI"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1319
+#, no-c-format
+msgid ""
+"JBoss AS 4.0 ships with the Apache MyFaces implementation of JSF 1.1. After "
+"many months of waiting, there is <emphasis>still</emphasis> no "
+"implementation of JSF 1.2 from MyFaces. For this and other reasons, JBoss AS "
+"4.2 will embed the JSF 1.2 Reference Implementation by default. Soon after "
+"the release of 4.2, we will migrate the Seam examples to JSF 1.2."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1322
+#, no-c-format
+msgid ""
+"For those who can't wait, Seam is already compatible with JSF 1.2, and it's "
+"easy to get the Seam examples running with JSF 1.2 in JBoss 4.0.5. Let's "
+"start with the famous booking example:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1327
+#, no-c-format
+msgid ""
+"copy <literal>jsf-api.jar</literal>, <literal>jsf-impl.jar</literal>, "
+"<literal>el-api.jar</literal>, <literal>el-impl.jar</literal> to "
+"<literal>server/default/deploy/tomcat/jbossweb-tomcat55.sar/jsf-libs</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1332
+#, no-c-format
+msgid ""
+"delete <literal>myfaces-api.jar</literal> and <literal>myfaces-impl.jar</"
+"literal> from <literal>server/default/deploy/tomcat/jbossweb-tomcat55.sar/"
+"jsf-libs</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1337
+#, no-c-format
+msgid ""
+"edit <literal>server/default/deploy/tomcat/jbossweb-tomcat55.sar/conf/web."
+"xml</literal>, replacing <literal>myfaces-impl.jar</literal> with "
+"<literal>jsf-impl.jar</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1342
+#, no-c-format
+msgid ""
+"edit <literal>examples/booking/resources/WEB-INF/web.xml</literal>, deleting "
+"the MyFaces listener, uncommenting the RI listener"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1347
+#, no-c-format
+msgid ""
+"edit <literal>examples/booking/resources/WEB-INF/faces-config.xml</literal>, "
+"uncommenting the lines that install the <literal>SeamELResolver</literal> "
+"using the new JSF 1.2 XML schema declaration."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1352
+#, no-c-format
+msgid ""
+"edit <literal>examples/booking/resources/META-INF/application.xml</literal>, "
+"deleting the lines that declare <literal>el-api.jar</literal> and "
+"<literal>el-impl.jar</literal> as Java modules."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1357
+#, no-c-format
+msgid ""
+"Restart JBoss, and type <literal>ant</literal> in the <literal>examples/"
+"booking</literal> directory."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Validation.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Validation.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Validation.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,375 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Validation.xml:10
+#, no-c-format
+msgid "JSF form validation in Seam"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:11
+#, no-c-format
+msgid "In plain JSF, validation is defined in the view:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:14
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Country:\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;my:validateCountry/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Zip code:\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;my:validateZip/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:15
+#, no-c-format
+msgid ""
+"In practice, this approach usually violates DRY, since most \"validation\" "
+"actually enforces constraints that are part of the data model, and exist all "
+"the way down to the database schema definition. Seam provides support for "
+"model-based constraints defined using Hibernate Validator."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:18
+#, no-c-format
+msgid ""
+"Let's start by defining our constraints, on our <literal>Location</literal> "
+"class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:21
+#, no-c-format
+msgid ""
+"public class Location {\n"
+"    private String country;\n"
+"    private String zip;\n"
+"    \n"
+"    @NotNull\n"
+"    @Length(max=30)\n"
+"    public String getCountry() { return country; }\n"
+"    public void setCountry(String c) { country = c; }\n"
+"\n"
+"    @NotNull\n"
+"    @Length(max=6)\n"
+"    @Pattern(\"^&#92;d*&#36;\")\n"
+"    public String getZip() { return zip; }\n"
+"    public void setZip(String z) { zip = z; }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:22
+#, no-c-format
+msgid ""
+"Well, that's a decent first cut, but in practice it might be more elegant to "
+"use custom constraints instead of the ones built into Hibernate Validator:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:25
+#, no-c-format
+msgid ""
+"public class Location {\n"
+"    private String country;\n"
+"    private String zip;\n"
+"    \n"
+"    @NotNull\n"
+"    @Country\n"
+"    public String getCountry() { return country; }\n"
+"    public void setCountry(String c) { country = c; }\n"
+"\n"
+"    @NotNull\n"
+"    @ZipCode\n"
+"    public String getZip() { return zip; }\n"
+"    public void setZip(String z) { zip = z; }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:26
+#, no-c-format
+msgid ""
+"Whichever route we take, we no longer need to specify the type of validation "
+"to be used in the JSF page. Instead, we can use <literal>&lt;s:validate&gt;</"
+"literal> to validate against the constraint defined on the model object."
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:29
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Country:\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;s:validate/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Zip code:\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;s:validate/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:30
+#, no-c-format
+msgid ""
+"<emphasis>Note:</emphasis> specifying <literal>@NotNull</literal> on the "
+"model does <emphasis>not</emphasis> eliminate the requirement for "
+"<literal>required=\"true\"</literal> to appear on the control! This is due "
+"to a limitation of the JSF validation architecture."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:33
+#, no-c-format
+msgid ""
+"This version is not much less verbose than what we started with, so let's "
+"try <literal>&lt;s:validateAll&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:36
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;h:inputText value=\"#{location.country}\" required=\"true\"/"
+"&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/"
+"&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:37
+#, no-c-format
+msgid ""
+"This tag simply adds an <literal>&lt;s:validate&gt;</literal> to every input "
+"in the form. For a large form, it can save a lot of typing!"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:40
+#, no-c-format
+msgid ""
+"Now we need to do something about displaying feedback to the user when "
+"validation fails. Currently we are displaying all messages at the top of the "
+"form. What we would really like to do is display the message next to the "
+"field with the error (this is possible in plain JSF), highlight the field "
+"(this is not possible) and, for good measure, display some image next the "
+"the field (also not possible)."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:43
+#, no-c-format
+msgid "Let's try out <literal>&lt;s:decorate&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:46
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;s:decorate&gt;\n"
+"                &lt;f:facet name=\"beforeInvalidField\"&gt;&lt;h:"
+"graphicImage src=\"img/error.gif\"/&gt;&lt;/f:facet&gt;\n"
+"                &lt;f:facet name=\"afterInvalidField\"&gt;&lt;s:message/&gt;"
+"&lt;/f:facet&gt;\n"
+"                &lt;f:facet name=\"aroundInvalidField\"&gt;&lt;s:span "
+"styleClass=\"error\"/&gt;&lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{location.country}\" required=\"true"
+"\"/&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;s:decorate&gt;\n"
+"                &lt;f:facet name=\"beforeInvalidField\"&gt;&lt;h:"
+"graphicImage src=\"img/error.gif\"/&gt;&lt;/f:facet&gt;\n"
+"                &lt;f:facet name=\"afterInvalidField\"&gt;&lt;s:message/&gt;"
+"&lt;/f:facet&gt;\n"
+"                &lt;f:facet name=\"aroundInvalidField\"&gt;&lt;s:span "
+"styleClass=\"error\"/&gt;&lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/"
+"&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:47
+#, no-c-format
+msgid ""
+"Well, that looks much better to the user, but it is extremely verbose. "
+"Fortunately, the facets of <literal>&lt;s:decorate&gt;</literal> may be "
+"defined on any parent element:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:50
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;f:facet name=\"beforeInvalidField\"&gt;\n"
+"        &lt;h:graphicImage src=\"img/error.gif\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;f:facet name=\"afterInvalidField\"&gt;\n"
+"        &lt;s:message/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;f:facet name=\"aroundInvalidField\"&gt;\n"
+"        &lt;s:span styleClass=\"error\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;s:decorate&gt;\n"
+"                &lt;h:inputText value=\"#{location.country}\" required=\"true"
+"\"/&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;s:decorate&gt;\n"
+"                &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/"
+"&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:51
+#, no-c-format
+msgid ""
+"This approach <emphasis>defines</emphasis> constraints on the model, and "
+"<emphasis>presents</emphasis> constraint violations in the view&mdash;a "
+"significantly better design."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:54
+#, no-c-format
+msgid ""
+"Finally, we can use Ajax4JSF to display validation messages as the user is "
+"typing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:57
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;f:facet name=\"beforeInvalidField\"&gt;\n"
+"        &lt;h:graphicImage src=\"img/error.gif\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;f:facet name=\"afterInvalidField\"&gt;\n"
+"        &lt;s:message/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;f:facet name=\"aroundInvalidField\"&gt;\n"
+"        &lt;s:span styleClass=\"error\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;s:decorate id=\"country\"&gt;\n"
+"                &lt;h:inputText value=\"#{location.country}\" required=\"true"
+"\"&gt;\n"
+"                    &lt;a:support event=\"onblur\" reRender=\"country\"/"
+"&gt;\n"
+"                &lt;/h:inputText&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;s:decorate id=\"zip\"&gt;\n"
+"                &lt;h:inputText value=\"#{location.zip}\" required=\"true"
+"\"&gt;\n"
+"                    &lt;a:support event=\"onblur\" reRender=\"zip\"/&gt;\n"
+"                &lt;/h:inputText&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Xml.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Xml.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ru-RU/Xml.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,933 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Xml.xml:10
+#, no-c-format
+msgid "Configuring Seam components"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:11
+#, no-c-format
+msgid ""
+"The philosophy of minimizing XML-based configuration is extremely strong in "
+"Seam. Nevertheless, there are various reasons why we might want to configure "
+"a Seam component using XML: to isolate deployment-specific information from "
+"the Java code, to enable the creation of re-usable frameworks, to configure "
+"Seam's built-in functionality, etc. Seam provides two basic approaches to "
+"configuring components: configuration via property settings in a properties "
+"file or <literal>web.xml</literal>, and configuration via "
+"<literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:14
+#, no-c-format
+msgid "Configuring components via property settings"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:15
+#, no-c-format
+msgid ""
+"Seam components may be provided with configuration properties either via "
+"servlet context parameters, or via a properties file named <literal>seam."
+"properties</literal> in the root of the classpath."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:18
+#, no-c-format
+msgid ""
+"The configurable Seam component must expose JavaBeans-style property setter "
+"methods for the configurable attributes. If a seam component named "
+"<literal>com.jboss.myapp.settings</literal> has a setter method named "
+"<literal>setLocale()</literal>, we can provide a property named <literal>com."
+"jboss.myapp.settings.locale</literal> in the <literal>seam.properties</"
+"literal> file or as a servlet context parameter, and Seam will set the value "
+"of the <literal>locale</literal> attribute whenever it instantiates the "
+"component."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:21
+#, no-c-format
+msgid ""
+"The same mechanism is used to configure Seam itself. For example, to set the "
+"conversation timeout, we provide a value for <literal>org.jboss.seam.core."
+"manager.conversationTimeout</literal> in <literal>web.xml</literal> or "
+"<literal>seam.properties</literal>. (There is a built-in Seam component "
+"named <literal>org.jboss.seam.core.manager</literal> with a setter method "
+"named <literal>setConversationTimeout()</literal>.)"
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:24
+#, no-c-format
+msgid "Configuring components via components.xml"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:25
+#, no-c-format
+msgid ""
+"The <literal>components.xml</literal> file is a bit more powerful than "
+"property settings. It lets you:"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:30
+#, no-c-format
+msgid ""
+"Configure components that have been installed automatically&mdash;including "
+"both built-in components, and application components that have been "
+"annotated with the <literal>@Name</literal> annotation and picked up by "
+"Seam's deployment scanner."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:35
+#, no-c-format
+msgid ""
+"Install classes with no <literal>@Name</literal> annotation as Seam "
+"components&mdash;this is most useful for certain kinds of infrastructural "
+"components which can be installed multiple times different names (for "
+"example Seam-managed persistence contexts)."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:40
+#, no-c-format
+msgid ""
+"Install components that <emphasis>do</emphasis> have a <literal>@Name</"
+"literal> annotation but are not installed by default because of an "
+"<literal>@Install</literal> annotation that indicates the component should "
+"not be installed."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:45
+#, no-c-format
+msgid "Override the scope of a component."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:50
+#, no-c-format
+msgid ""
+"A <literal>components.xml</literal> file may appear in one of three "
+"different places:"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:55
+#, no-c-format
+msgid "The <literal>WEB-INF</literal> directory of a <literal>war</literal>."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:60
+#, no-c-format
+msgid "The <literal>META-INF</literal> directory of a <literal>jar</literal>."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:65
+#, no-c-format
+msgid ""
+"Any directory of a <literal>jar</literal> that contains classes with an "
+"<literal>@Name</literal> annotation."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:70
+#, no-c-format
+msgid ""
+"Usually, Seam components are installed when the deployment scanner discovers "
+"a class with a <literal>@Name</literal> annotation sitting in an archive "
+"with a <literal>seam.properties</literal> file or a <literal>META-INF/"
+"components.xml</literal> file. (Unless the component has an "
+"<literal>@Install</literal> annotation indicating it should not be installed "
+"by default.) The <literal>components.xml</literal> file lets us handle "
+"special cases where we need to override the annotations."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:73
+#, no-c-format
+msgid ""
+"For example, the following <literal>components.xml</literal> file installs "
+"the JBoss Embeddable EJB3 container:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:76
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"&gt;\n"
+"    &lt;core:ejb/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:77
+#, no-c-format
+msgid "This example does the same thing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:80
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component class=\"org.jboss.seam.core.Ejb\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:81
+#, no-c-format
+msgid ""
+"This one installs and configures two different Seam-managed persistence "
+"contexts:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:84
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"    &lt;core:managed-persistence-context name=\"customerDatabase\"\n"
+"                persistence-unit-jndi-name=\"java:/"
+"customerEntityManagerFactory\"/&gt;\n"
+"        \n"
+"    &lt;core:managed-persistence-context name=\"accountingDatabase\"\n"
+"                persistence-unit-jndi-name=\"java:/"
+"accountingEntityManagerFactory\"/&gt;            \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:85
+#, no-c-format
+msgid "As does this one:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:88
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component name=\"customerDatabase\" \n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"customerEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"    \n"
+"    &lt;component name=\"accountingDatabase\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"accountingEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:89
+#, no-c-format
+msgid ""
+"This example creates a session-scoped Seam-managed persistence context (this "
+"is not recommended in practice):"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:92
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"  &lt;core:managed-persistence-context name=\"productDatabase\" \n"
+"                                   scope=\"session\"\n"
+"              persistence-unit-jndi-name=\"java:/productEntityManagerFactory"
+"\"/&gt;        \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:93
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"            \n"
+"    &lt;component name=\"productDatabase\"\n"
+"              scope=\"session\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"productEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:94
+#, no-c-format
+msgid ""
+"It is common to use the <literal>auto-create</literal> option for "
+"infrastructural objects like persistence contexts, which saves you from "
+"having to explicitly specify <literal>create=true</literal> when you use the "
+"<literal>@In</literal> annotation."
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:97
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"  &lt;core:managed-persistence-context name=\"productDatabase\" \n"
+"                             auto-create=\"true\"\n"
+"              persistence-unit-jndi-name=\"java:/productEntityManagerFactory"
+"\"/&gt;        \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:98
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"            \n"
+"    &lt;component name=\"productDatabase\"\n"
+"        auto-create=\"true\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"productEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:99
+#, no-c-format
+msgid ""
+"The <literal>&lt;factory&gt;</literal> declaration lets you specify a value "
+"or method binding expression that will be evaluated to initialize the value "
+"of a context variable when it is first referenced."
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:102
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"contact\" method=\"#{contactManager.loadContact}\" "
+"scope=\"CONVERSATION\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:103
+#, no-c-format
+msgid ""
+"You can create an \"alias\" (a second name) for a Seam component like so:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:106
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"user\" value=\"#{actor}\" scope=\"STATELESS\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:107
+#, no-c-format
+msgid "You can even create an \"alias\" for a commonly used expression:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:110
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"contact\" value=\"#{contactManager.contact}\" scope="
+"\"STATELESS\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:111
+#, no-c-format
+msgid ""
+"It is especially common to see the use of <literal>auto-create=\"true\"</"
+"literal> with the <literal>&lt;factory&gt;</literal> declaration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:114
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"session\" value=\"#{entityManager.delegate}\" scope="
+"\"STATELESS\" \n"
+"        auto-create=\"true\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:115
+#, no-c-format
+msgid ""
+"Sometimes we want to reuse the same <literal>components.xml</literal> file "
+"with minor changes during both deployment and testing. Seam lets you place "
+"wildcards of the form <literal>@wildcard@</literal> in the "
+"<literal>components.xml</literal> file which can be replaced either by your "
+"Ant build script (at deployment time) or by providing a file named "
+"<literal>components.properties</literal> in the classpath (at development "
+"time). You'll see this approach used in the Seam examples."
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:118
+#, no-c-format
+msgid "Fine-grained configuration files"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:119
+#, no-c-format
+msgid ""
+"If you have a large number of components that need to be configured in XML, "
+"it makes much more sense to split up the information in <literal>components."
+"xml</literal> into many small files. Seam lets you put configuration for a "
+"class named, for example, <literal>com.helloworld.Hello</literal> in a "
+"resource named <literal>com/helloworld/Hello.component.xml</literal>. (You "
+"might be familiar with this pattern, since it is the same one we use in "
+"Hibernate.) The root element of the file may be either a <literal>&lt;"
+"components&gt;</literal> or <literal>&lt;component&gt;</literal> element."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:122
+#, no-c-format
+msgid "The first option lets you define multiple components in the file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:125
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component class=\"com.helloworld.Hello\" name=\"hello\"&gt;\n"
+"        &lt;property name=\"name\"&gt;#{user.name}&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"    &lt;factory name=\"message\" value=\"#{hello.message}\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:126
+#, no-c-format
+msgid ""
+"The second option only lets you define or configure one component, but is "
+"less noisy:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:129
+#, no-c-format
+msgid ""
+"&lt;component name=\"hello\"&gt;\n"
+"    &lt;property name=\"name\"&gt;#{user.name}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:130
+#, no-c-format
+msgid ""
+"In the second option, the class name is implied by the file in which the "
+"component definition appears."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:133
+#, no-c-format
+msgid ""
+"Alternatively, you may put configuration for all classes in the <literal>com."
+"helloworld</literal> package in <literal>com/helloworld/components.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:136
+#, no-c-format
+msgid "Configurable property types"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:137
+#, no-c-format
+msgid ""
+"Properties of string, primitive or primitive wrapper type may be configured "
+"just as you would expect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:140
+#, no-c-format
+msgid "org.jboss.seam.core.manager.conversationTimeout 60000"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:141
+#, no-c-format
+msgid "&lt;core:manager conversation-timeout=\"60000\"/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:142
+#, no-c-format
+msgid ""
+"&lt;component name=\"org.jboss.seam.core.manager\"&gt;\n"
+"    &lt;property name=\"conversationTimeout\"&gt;60000&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:143
+#, no-c-format
+msgid "Arrays, sets and lists of strings or primitives are also supported:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:146
+#, no-c-format
+msgid ""
+"org.jboss.seam.core.jbpm.processDefinitions order.jpdl.xml, return.jpdl.xml, "
+"inventory.jpdl.xml"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:147
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;order.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;return.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:148
+#, no-c-format
+msgid ""
+"&lt;component name=\"org.jboss.seam.core.jbpm\"&gt;\n"
+"    &lt;property name=\"processDefinitions\"&gt;\n"
+"        &lt;value&gt;order.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;return.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:149
+#, no-c-format
+msgid ""
+"Even maps with String-valued keys and string or primitive values are "
+"supported:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:152
+#, no-c-format
+msgid ""
+"&lt;component name=\"issueEditor\"&gt;\n"
+"    &lt;property name=\"issueStatuses\"&gt;\n"
+"        &lt;key&gt;open&lt;/key&gt; &lt;value&gt;open issue&lt;/value&gt;\n"
+"        &lt;key&gt;resolved&lt;/key&gt; &lt;value&gt;issue resolved by "
+"developer&lt;/value&gt;\n"
+"        &lt;key&gt;closed&lt;/key&gt; &lt;value&gt;resolution accepted by "
+"user&lt;/value&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:153
+#, no-c-format
+msgid ""
+"Finally, you may wire together components using a value-binding expression. "
+"Note that this is quite different to injection using <literal>@In</literal>, "
+"since it happens at component instantiation time instead of invocation time. "
+"It is therefore much more similar to the dependency injection facilities "
+"offered by traditional IoC containers like JSF or Spring."
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:156
+#, no-c-format
+msgid ""
+"&lt;drools:managed-working-memory name=\"policyPricingWorkingMemory\" rule-"
+"base=\"#{policyPricingRules}\"/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:157
+#, no-c-format
+msgid ""
+"&lt;component name=\"policyPricingWorkingMemory\"\n"
+"          class=\"org.jboss.seam.drools.ManagedWorkingMemory\"&gt;\n"
+"    &lt;property name=\"ruleBase\"&gt;#{policyPricingRules}&lt;/"
+"property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:158
+#, no-c-format
+msgid "Using XML Namespaces"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:159
+#, no-c-format
+msgid ""
+"Throughout the examples, there have been two competing ways of declaring "
+"components: with and without the use of XML namespaces. The following shows "
+"a typical <literal>components.xml</literal> file without namespaces. It uses "
+"the Seam Components DTD:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:162
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"&gt;\n"
+"&lt;!DOCTYPE components PUBLIC \"-//JBoss/Seam Component Configuration DTD "
+"1.2//EN\"\n"
+"                            \"http://jboss.com/products/seam/components-1.2."
+"dtd\"&gt;\n"
+"&lt;components&gt;\n"
+"\n"
+"    &lt;component class=\"org.jboss.seam.core.init\"&gt;\n"
+"        &lt;property name=\"debug\"&gt;true&lt;/property&gt;\n"
+"        &lt;property name=\"jndiPattern\"&gt;@jndiPattern@&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"    &lt;component name=\"org.jboss.sean.core.ejb\" installed=\"@embeddedEjb@"
+"\" /&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:163
+#, no-c-format
+msgid ""
+"As you can see, this is somewhat verbose. Even worse, the component and "
+"attribute names cannot be validated at development time."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:166
+#, no-c-format
+msgid "The namespaced version looks like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:169
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                http://jboss.com/products/seam/core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components \n"
+"                 http://jboss.com/products/seam/components-1.2.xsd\"&gt;\n"
+"\n"
+"    &lt;core:init debug=\"true\" jndi-pattern=\"@jndiPattern@\"/&gt;\n"
+"\n"
+"    &lt;core:ejb installed=\"@embeddedEjb@\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:170
+#, no-c-format
+msgid ""
+"Even though the schema declarations are verbose, the actual XML content is "
+"lean and easy to understand. The schemas provide detailed information about "
+"each component and the attributes available, allowing XML editors to offer "
+"intelligent autocomplete. The use of namespaced elements makes generating "
+"and maintaining correct <literal>components.xml</literal> files much simpler."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:173
+#, no-c-format
+msgid ""
+"Now, this works great for the built-in Seam components, but what about user "
+"components? There are two options. First, Seam supports mixing the two "
+"models, allowing the use of the generic <literal>&lt;component&gt;</literal> "
+"declarations for user components, along with namespaced declarations for "
+"built-in components. But even better, Seam allows you to quickly declare "
+"namespaces for your own components."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:176
+#, no-c-format
+msgid ""
+"Any Java package can be associated with an XML namespace by annotating the "
+"package with the <literal>@Namespace</literal> annotation. (Package-level "
+"annotations are declared in a file named <literal>package-info.java</"
+"literal> in the package directory.) Here is an example from the seampay demo:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:179
+#, no-c-format
+msgid ""
+"@Namespace(value=\"http://jboss.com/products/seam/examples/seampay\")\n"
+"package org.jboss.seam.example.seampay;\n"
+"\n"
+"import org.jboss.seam.annotations.Namespace;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:180
+#, no-c-format
+msgid ""
+"That is all you need to do to use the namespaced style in "
+"<literal>components.xml</literal>! Now we can write:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:183
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pay=\"http://jboss.com/products/seam/examples/seampay\"\n"
+"            ... &gt;\n"
+"\n"
+"    &lt;pay:payment-home new-instance=\"#{newPayment}\"\n"
+"                      created-message=\"Created a new payment to #"
+"{newPayment.payee}\" /&gt;\n"
+"\n"
+"    &lt;pay:payment name=\"newPayment\"\n"
+"                 payee=\"Somebody\"\n"
+"                 account=\"#{selectedAccount}\"\n"
+"                 payment-date=\"#{currentDatetime}\"\n"
+"                 created-date=\"#{currentDatetime}\" /&gt;\n"
+"     ...\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:184
+#, no-c-format
+msgid "<para>Or:</para>"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:187
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pay=\"http://jboss.com/products/seam/examples/seampay\"\n"
+"            ... &gt;\n"
+"\n"
+"    &lt;pay:payment-home&gt;\n"
+"        &lt;pay:new-instance&gt;\"#{newPayment}\"&lt;/pay:new-instance&gt;\n"
+"        &lt;pay:created-message&gt;Created a new payment to #{newPayment."
+"payee}&lt;/pay:created-message&gt;\n"
+"    &lt;/pay:payment-home&gt;\n"
+"    \n"
+"    &lt;pay:payment name=\"newPayment\"&gt;\n"
+"        &lt;pay:payee&gt;Somebody\"&lt;/pay:payee&gt;\n"
+"        &lt;pay:account&gt;#{selectedAccount}&lt;/pay:account&gt;\n"
+"        &lt;pay:payment-date&gt;#{currentDatetime}&lt;/pay:payment-date&gt;\n"
+"        &lt;pay:created-date&gt;#{currentDatetime}&lt;/pay:created-date&gt;\n"
+"     &lt;/pay:payment&gt;\n"
+"     ...\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:188
+#, no-c-format
+msgid ""
+"These examples illustrate the two usage models of a namespaced element. In "
+"the first declaration, the <literal>&lt;pay:payment-home&gt;</literal> "
+"references the <literal>paymentHome</literal> component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:191
+#, no-c-format
+msgid ""
+"package org.jboss.seam.example.seampay;\n"
+"...\n"
+"@Name(\"paymentHome\")\n"
+"public class PaymentController\n"
+"    extends EntityHome&lt;Payment&gt;\n"
+"{\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:192
+#, no-c-format
+msgid ""
+"The element name is the hyphenated form of the component name. The "
+"attributes of the element are the hyphenated form of the property names."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:195
+#, no-c-format
+msgid ""
+"In the second declaration, the <literal>&lt;pay:payment&gt;</literal> "
+"element refers to the <literal>Payment</literal> class in the <literal>org."
+"jboss.seam.example.seampay</literal> package. In this case <literal>Payment</"
+"literal> is an entity that is being declared as a Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:198
+#, no-c-format
+msgid ""
+"package org.jboss.seam.example.seampay;\n"
+"...\n"
+"@Entity\n"
+"public class Payment\n"
+"    implements Serializable\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:199
+#, no-c-format
+msgid ""
+"If we want validation and autocompletion to work for user-defined "
+"components, we will need a schema. Seam does not yet provide a mechanism to "
+"automatically generate a schema for a set of components, so it is necessary "
+"to generate one manually. The schema definitions for the standard Seam "
+"packages can be used for guidance."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:202
+#, no-c-format
+msgid "The following are the the namespaces used by Seam:"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:207
+#, no-c-format
+msgid ""
+"components &mdash; <literal>http://jboss.com/products/seam/components</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:212
+#, no-c-format
+msgid "core &mdash; <literal>http://jboss.com/products/seam/core</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:217
+#, no-c-format
+msgid "drools &mdash; <literal>http://jboss.com/products/seam/drools</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:222
+#, no-c-format
+msgid ""
+"framework &mdash; <literal>http://jboss.com/products/seam/framework</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:227
+#, no-c-format
+msgid "jms &mdash; <literal>http://jboss.com/products/seam/jms</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:232
+#, no-c-format
+msgid ""
+"remoting &mdash; <literal>http://jboss.com/products/seam/remoting</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:237
+#, no-c-format
+msgid "theme &mdash; <literal>http://jboss.com/products/seam/theme</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:242
+#, no-c-format
+msgid ""
+"security &mdash; <literal>http://jboss.com/products/seam/security</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:247
+#, no-c-format
+msgid "mail &mdash; <literal>http://jboss.com/products/seam/mail</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:252
+#, no-c-format
+msgid "web &mdash; <literal>http://jboss.com/products/seam/web</literal>"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Annotations.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Annotations.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Annotations.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2030 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Annotations.xml:10
+#, no-c-format
+msgid "Seam annotations"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:11
+#, no-c-format
+msgid ""
+"When you write a Seam application, you'll use a lot of annotations. Seam "
+"lets you use annotations to achieve a declarative style of programming. Most "
+"of the annotations you'll use are defined by the EJB 3.0 specification. The "
+"annotations for data validation are defined by the Hibernate Validator "
+"package. Finally, Seam defines its own set of annotations, which we'll "
+"describe in this chapter."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:14
+#, no-c-format
+msgid ""
+"All of these annotations are defined in the package <literal>org.jboss.seam."
+"annotations</literal>."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:18
+#, no-c-format
+msgid "Annotations for component definition"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:19
+#, no-c-format
+msgid ""
+"The first group of annotations lets you define a Seam component. These "
+"annotations appear on the component class."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:24
+#, no-c-format
+msgid "@Name"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:26
+#, no-c-format
+msgid "@Name(\"componentName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:27
+#, no-c-format
+msgid ""
+"Defines the Seam component name for a class. This annotation is required for "
+"all Seam components."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:33
+#, no-c-format
+msgid "@Scope"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:35
+#, no-c-format
+msgid "@Scope(ScopeType.CONVERSATION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:36
+#, no-c-format
+msgid ""
+"Defines the default context of the component. The possible values are "
+"defined by the <literal>ScopeType</literal> enumeration: <literal>EVENT, "
+"PAGE, CONVERSATION, SESSION, BUSINESS_PROCESS, APPLICATION, STATELESS</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:39
+#, no-c-format
+msgid ""
+"When no scope is explicitly specified, the default depends upon the "
+"component type. For stateless session beans, the default is "
+"<literal>STATELESS</literal>. For entity beans and stateful session beans, "
+"the default is <literal>CONVERSATION</literal>. For JavaBeans, the default "
+"is <literal>EVENT</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:45
+#, no-c-format
+msgid "@Role"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:47
+#, no-c-format
+msgid "@Role(name=\"roleName\", scope=ScopeType.SESSION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:48
+#, no-c-format
+msgid ""
+"Allows a Seam component to be bound to multiple contexts variables. The "
+"<literal>@Name</literal>/<literal>@Scope</literal> annotations define a "
+"\"default role\". Each <literal>@Role</literal> annotation defines an "
+"additional role."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:53
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the context variable name."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:58
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; the context variable scope. When no scope "
+"is explicitly specified, the default depends upon the component type, as "
+"above."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:66
+#, no-c-format
+msgid "@Roles"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:68
+#, no-c-format
+msgid ""
+"@Roles({\n"
+"        @Role(name=\"user\", scope=ScopeType.CONVERSATION),\n"
+"        @Role(name=\"currentUser\", scope=ScopeType.SESSION)\n"
+"    })"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:69
+#, no-c-format
+msgid "Allows specification of multiple additional roles."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:75
+#, no-c-format
+msgid "@Intercept"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:77
+#, no-c-format
+msgid "@Intercept(InterceptionType.ALWAYS)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:78
+#, no-c-format
+msgid ""
+"Determines when Seam interceptors are active. The possible values are "
+"defined by the <literal>InterceptionType</literal> enumeration: "
+"<literal>ALWAYS, AFTER_RESTORE_VIEW, AFTER_UPDATE_MODEL_VALUES, "
+"INVOKE_APPLICATION, NEVER</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:81
+#, no-c-format
+msgid ""
+"When no interception type is explicitly specified, the default depends upon "
+"the component type. For entity beans, the default is <literal>NEVER</"
+"literal>. For session beans, message driven beans and JavaBeans, the default "
+"is <literal>ALWAYS</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:87
+#, no-c-format
+msgid "@JndiName"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:89
+#, no-c-format
+msgid "@JndiName(\"my/jndi/name\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:90
+#, no-c-format
+msgid ""
+"Specifies the JNDI name that Seam will use to look up the EJB component. If "
+"no JNDI name is explicitly specified, Seam will use the JNDI pattern "
+"specified by <literal>org.jboss.seam.core.init.jndiPattern</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:96
+#, no-c-format
+msgid "@Conversational"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:98
+#, no-c-format
+msgid "@Conversational(ifNotBegunOutcome=\"error\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:99
+#, no-c-format
+msgid ""
+"Specifies that a conversation scope component is conversational, meaning "
+"that no method of the component can be called unless a long-running "
+"conversation started by this component is active (unless the method would "
+"begin a new long-running conversation)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:105
+#, no-c-format
+msgid "<literal>@Startup</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:107
+#, no-c-format
+msgid "@Startup(depends={\"org.jboss.core.jndi\", \"org.jboss.core.jta\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:108
+#, no-c-format
+msgid ""
+"Specifies that an application scope component is started immediately at "
+"initialization time. This is mainly used for certain built-in components "
+"that bootstrap critical infrastructure such as JNDI, datasources, etc."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:111
+#, no-c-format
+msgid "<programlisting>@Startup</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:112
+#, no-c-format
+msgid ""
+"Specifies that a session scope component is started immediately at session "
+"creation time."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:117
+#, no-c-format
+msgid ""
+"<literal>depends</literal> &mdash; specifies that the named components must "
+"be started first, if they are installed."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:125
+#, no-c-format
+msgid "@Install"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:127
+#, no-c-format
+msgid "@Install(false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:128
+#, no-c-format
+msgid ""
+"Specifies whether or not a component should be installed by default. The "
+"lack of an @Install annotation indicates a component should be installed."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:131
+#, no-c-format
+msgid "@Install(dependencies=\"org.jboss.seam.core.jbpm\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:132
+#, no-c-format
+msgid ""
+"Specifies that a component should only be stalled if the components listed "
+"as dependencies are also installed."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:135
+#, no-c-format
+msgid "@Install(genericDependencies=ManagedQueueSender.class)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:136
+#, no-c-format
+msgid ""
+"Specifies that a component should only be installed if a component that is "
+"implemented by a certain class is installed. This is useful when the "
+"dependency doesn't have a single well-known name."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:139
+#, no-c-format
+msgid "@Install(classDependencies=\"org.hibernate.Session\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:140
+#, no-c-format
+msgid ""
+"Specifies that a component should only be installed if the named class is in "
+"the classpath."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:143
+#, no-c-format
+msgid "@Install(precedence=BUILT_IN)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:144
+#, no-c-format
+msgid ""
+"Specifies the precedence of the component. If multiple components with the "
+"same name exist, the one with the higher precedence will be installed. The "
+"defined precendence values are:"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:149
+#, no-c-format
+msgid ""
+"<literal>BUILT_IN</literal> &mdash; Precedence of all built-in Seam "
+"components"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:154
+#, no-c-format
+msgid ""
+"<literal>FRAMEWORK</literal> &mdash; Precedence to use for components of "
+"frameworks which extend Seam"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:159
+#, no-c-format
+msgid ""
+"<literal>APPLICATION</literal> &mdash; Predence of application components "
+"(the default precedence)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:164
+#, no-c-format
+msgid ""
+"<literal>DEPLOYMENT</literal> &mdash; Precedence to use for components which "
+"override application components in a particular deployment"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:172
+#, no-c-format
+msgid "@Synchronized"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:174
+#, no-c-format
+msgid "@Synchronized(timeout=1000)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:175
+#, no-c-format
+msgid ""
+"Specifies that a component is accessed concurrently by multiple clients, and "
+"that Seam should serialize requests. If a request is not able to obtain its "
+"lock on the component in the given timeout period, an exception will be "
+"raised."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:181
+#, no-c-format
+msgid "<literal>@ReadOnly</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:183
+#, no-c-format
+msgid "<programlisting>@ReadOnly</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:184
+#, no-c-format
+msgid ""
+"Specifies that a JavaBean component or component method does not require "
+"state replication at the end of the invocation."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:193
+#, no-c-format
+msgid "Annotations for bijection"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:194
+#, no-c-format
+msgid ""
+"The next two annotations control bijection. These attributes occur on "
+"component instance variables or property accessor methods."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:199
+#, no-c-format
+msgid "<literal>@In</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:201
+#, no-c-format
+msgid "<programlisting>@In</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:202
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. If the context "
+"variable is null, an exception will be thrown."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:205
+#, no-c-format
+msgid "@In(required=false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:206
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. The context variable "
+"may be null."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:209
+#, no-c-format
+msgid "@In(create=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:210
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. If the context "
+"variable is null, an instance of the component is instantiated by Seam."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:213
+#, no-c-format
+msgid "@In(value=\"contextVariableName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:214 Annotations.xml:259
+#, no-c-format
+msgid ""
+"Specifies the name of the context variable explicitly, instead of using the "
+"annotated instance variable name."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:217
+#, no-c-format
+msgid "@In(value=\"#{customer.addresses['shipping']}\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:218
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected by evaluating a JSF "
+"EL expression at the beginning of each component invocation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:223
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"Default to the name of the component attribute. Alternatively, specifies a "
+"JSF EL expression, surrounded by <literal>#{...}</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:228
+#, no-c-format
+msgid ""
+"<literal>create</literal> &mdash; specifies that Seam should instantiate the "
+"component with the same name as the context variable if the context variable "
+"is undefined (null) in all contexts. Default to false."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:233
+#, no-c-format
+msgid ""
+"<literal>required</literal> &mdash; specifies Seam should throw an exception "
+"if the context variable is undefined in all contexts."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:241
+#, no-c-format
+msgid "<literal>@Out</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:243
+#, no-c-format
+msgid "<programlisting>@Out</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:244
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is a Seam component is to be "
+"outjected to its context variable at the end of the invocation. If the "
+"attribute is null, an exception is thrown."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:247
+#, no-c-format
+msgid "@Out(required=false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:248
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is a Seam component is to be "
+"outjected to its context variable at the end of the invocation. The "
+"attribute may be null."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:251
+#, no-c-format
+msgid "@Out(scope=ScopeType.SESSION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:252
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is <emphasis>not</emphasis> a Seam "
+"component type is to be outjected to a specific scope at the end of the "
+"invocation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:255
+#, no-c-format
+msgid ""
+"Alternatively, if no scope is explicitly specified, the scope of the "
+"component with the <literal>@Out</literal> attribute is used (or the "
+"<literal>EVENT</literal> scope if the component is stateless)."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:258
+#, no-c-format
+msgid "@Out(value=\"contextVariableName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:264
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"Default to the name of the component attribute."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:269
+#, no-c-format
+msgid ""
+"<literal>required</literal> &mdash; specifies Seam should throw an exception "
+"if the component attribute is null during outjection."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:277
+#, no-c-format
+msgid ""
+"Note that it is quite common for these annotations to occur together, for "
+"example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:280
+#, no-c-format
+msgid "@In(create=true) @Out private User currentUser;"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:281
+#, no-c-format
+msgid ""
+"The next annotation supports the <emphasis>manager component</emphasis> "
+"pattern, where a Seam component that manages the lifecycle of an instance of "
+"some other class that is to be injected. It appears on a component getter "
+"method."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:286
+#, no-c-format
+msgid "<literal>@Unwrap</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:288
+#, no-c-format
+msgid "<programlisting>@Unwrap</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:289
+#, no-c-format
+msgid ""
+"Specifies that the object returned by the annotated getter method is the "
+"thing that is injected instead of the component instance itself."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:295
+#, no-c-format
+msgid ""
+"The next annotation supports the <emphasis>factory component</emphasis> "
+"pattern, where a Seam component is responsible for initializing the value of "
+"a context variable. This is especially useful for initializing any state "
+"needed for rendering the response to a non-faces request. It appears on a "
+"component method."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:300
+#, no-c-format
+msgid "@Factory"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:302
+#, no-c-format
+msgid "@Factory(\"processInstance\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:303
+#, no-c-format
+msgid ""
+"Specifies that the method of the component is used to initialize the value "
+"of the named context variable, when the context variable has no value. This "
+"style is used with methods that return <literal>void</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:306
+#, no-c-format
+msgid "@Factory(\"processInstance\", scope=CONVERSATION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:307
+#, no-c-format
+msgid ""
+"Specifies that the method returns a value that Seam should use to initialize "
+"the value of the named context variable, when the context variable has no "
+"value. This style is used with methods that return a value. If no scope is "
+"explicitly specified, the scope of the component with the <literal>@Factory</"
+"literal> method is used (unless the component is stateless, in which case "
+"the <literal>EVENT</literal> context is used)."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:312
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"If the method is a getter method, default to the JavaBeans property name."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:317
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; specifies the scope that Seam should bind "
+"the returned value to. Only meaningful for factory methods which return a "
+"value."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:325
+#, no-c-format
+msgid "This annotation lets you inject a <literal>Log</literal>:"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:330
+#, no-c-format
+msgid "@Logger"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:332
+#, no-c-format
+msgid "@Logger(\"categoryName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:333
+#, no-c-format
+msgid ""
+"Specifies that a component field is to be injected with an instance of "
+"<literal>org.jboss.seam.log.Log</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:338
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the log category. "
+"Default to the name of the component class."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:346
+#, no-c-format
+msgid "The last annotation lets you inject a request parameter value:"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:351
+#, no-c-format
+msgid "@RequestParameter"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:353
+#, no-c-format
+msgid "@RequestParameter(\"parameterName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:354
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected with the value of a "
+"request parameter. Basic type conversions are performed automatically."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:359
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the request "
+"parameter. Default to the name of the component attribute."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:370
+#, no-c-format
+msgid "Annotations for component lifecycle methods"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:371
+#, no-c-format
+msgid ""
+"These annotations allow a component to react to its own lifecycle events. "
+"They occur on methods of the component. There may be only one of each per "
+"component class."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:376
+#, no-c-format
+msgid "<literal>@Create</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:378
+#, no-c-format
+msgid "<programlisting>@Create</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:379
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when an instance of the component "
+"is instantiated by Seam. Note that create methods are only supported for "
+"JavaBeans and stateful session beans."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:385
+#, no-c-format
+msgid "<literal>@Destroy</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:387
+#, no-c-format
+msgid "<programlisting>@Destroy</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:388
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when the context ends and its "
+"context variables are destroyed. Note that create methods are only supported "
+"for JavaBeans and stateful session beans."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:391
+#, no-c-format
+msgid ""
+"Note that all stateful session bean components <emphasis>must</emphasis> "
+"define a method annotated <literal>@Destroy @Remove</literal> in order to "
+"guarantee destruction of the stateful bean when a context ends."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:394
+#, no-c-format
+msgid ""
+"Destroy methods should be used only for cleanup. <emphasis>Seam catches, "
+"logs and swallows any exception that propagates out of a destroy method.</"
+"emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:400
+#, no-c-format
+msgid "@Observer"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:402
+#, no-c-format
+msgid "@Observer(\"somethingChanged\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:403
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when a component-driven event of "
+"the specified type occurs."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:406
+#, no-c-format
+msgid "@Observer(value=\"somethingChanged\",create=false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:407
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when an event of the specified "
+"type occurs but that an instance should not be created if one doesn't exist. "
+"If an instance does not exist and create is false, the event will not be "
+"observed. The default value for create is true."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:416
+#, no-c-format
+msgid "Annotations for context demarcation"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:417
+#, no-c-format
+msgid ""
+"These annotations provide declarative conversation demarcation. They appear "
+"on methods of Seam components, usually action listener methods."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:420
+#, no-c-format
+msgid ""
+"Every web request has a conversation context associated with it. Most of "
+"these conversations end at the end of the request. If you want a "
+"conversation that span multiple requests, you must \"promote\" the current "
+"conversation to a <emphasis>long-running conversation</emphasis> by calling "
+"a method marked with <literal>@Begin</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:425
+#, no-c-format
+msgid "<literal>@Begin</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:427
+#, no-c-format
+msgid "<programlisting>@Begin</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:428
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation begins when this method returns a "
+"non-null outcome without exception."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:431
+#, no-c-format
+msgid "@Begin(ifOutcome={\"success\", \"continue\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:432
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation begins when this action listener "
+"method returns with one of the given outcomes."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:435
+#, no-c-format
+msgid "@Begin(join=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:436
+#, no-c-format
+msgid ""
+"Specifies that if a long-running conversation is already in progress, the "
+"conversation context is simply propagated."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:439
+#, no-c-format
+msgid "@Begin(nested=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:440
+#, no-c-format
+msgid ""
+"Specifies that if a long-running conversation is already in progress, a new "
+"<emphasis>nested</emphasis> conversation context begins. The nested "
+"conversation will end when the next <literal>@End</literal> is encountered, "
+"and the outer conversation will resume. It is perfectly legal for multiple "
+"nested conversations to exist concurrently in the same outer conversation."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:443
+#, no-c-format
+msgid "@Begin(pageflow=\"process definition name\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:444
+#, no-c-format
+msgid ""
+"Specifies a jBPM process definition name that defines the pageflow for this "
+"conversation."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:447
+#, no-c-format
+msgid "@Begin(flushMode=FlushModeType.MANUAL)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:448
+#, no-c-format
+msgid ""
+"Specify the flush mode of any Seam-managed persistence contexts. "
+"<literal>flushMode=FlushModeType.MANUAL</literal> supports the use of "
+"<emphasis>atomic conversations</emphasis> where all write operations are "
+"queued in the conversation context until an explicit call to <literal>flush()"
+"</literal> (which usually occurs at the end of the conversation)."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:454
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in a new long-running conversation context."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:459
+#, no-c-format
+msgid ""
+"<literal>join</literal> &mdash; determines the behavior when a long-running "
+"conversation is already in progress. If <literal>true</literal>, the context "
+"is propagated. If <literal>false</literal>, an exception is thrown. Default "
+"to <literal>false</literal>. This setting is ignored when "
+"<literal>nested=true</literal> is specified"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:464
+#, no-c-format
+msgid ""
+"<literal>nested</literal> &mdash; specifies that a nested conversation "
+"should be started if a long-running conversation is already in progress."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:469 Annotations.xml:526 Annotations.xml:550
+#, no-c-format
+msgid ""
+"<literal>flushMode</literal> &mdash; set the flush mode of any Seam-managed "
+"Hibernate sessions or JPA persistence contexts that are created during this "
+"conversation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:474
+#, no-c-format
+msgid ""
+"<literal>pageflow</literal> &mdash; a process definition name of a jBPM "
+"process definition deployed via <literal>org.jboss.seam.core.jbpm."
+"pageflowDefinitions.</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:483
+#, no-c-format
+msgid "<literal>@End</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:485
+#, no-c-format
+msgid "<programlisting>@End</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:486
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation ends when this method returns a "
+"non-null outcome without exception."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:489
+#, no-c-format
+msgid ""
+"@End(ifOutcome={\"success\", \"error\"}, evenIfException={SomeException."
+"class, OtherException.class})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:490
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation ends when this action listener "
+"method returns with one of the given outcomes or throws one of the specified "
+"classes of exception."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:496
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in the end of the current long-running conversation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:501 Annotations.xml:585
+#, no-c-format
+msgid ""
+"<literal>beforeRedirect</literal> &mdash; by default, the conversation will "
+"not actually be destroyed until after any redirect has occurred. Setting "
+"<literal>beforeRedirect=true</literal> specifies that the conversation "
+"should be destroyed at the end of the current request, and that the redirect "
+"will be processed in a new temporary conversation context."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:510
+#, no-c-format
+msgid "<literal>@StartTask</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:512
+#, no-c-format
+msgid "<programlisting>@StartTask</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:513
+#, no-c-format
+msgid ""
+"\"Starts\" a jBPM task. Specifies that a long-running conversation begins "
+"when this method returns a non-null outcome without exception. This "
+"conversation is associated with the jBPM task specified in the named request "
+"parameter. Within the context of this conversation, a business process "
+"context is also defined, for the business process instance of the task "
+"instance."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:516
+#, no-c-format
+msgid ""
+"The jBPM <literal>TaskInstance</literal> will be available in a request "
+"context variable named <literal>taskInstance</literal>. The jPBM "
+"<literal>ProcessInstance</literal> will be available in a request context "
+"variable named <literal>processInstance</literal>. (Of course, these objects "
+"are available for injection via <literal>@In</literal>.)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:521 Annotations.xml:545
+#, no-c-format
+msgid ""
+"<literal>taskIdParameter</literal> &mdash; the name of a request parameter "
+"which holds the id of the task. Default to <literal>\"taskId\"</literal>, "
+"which is also the default used by the Seam <literal>taskList</literal> JSF "
+"component."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:534
+#, no-c-format
+msgid "<literal>@BeginTask</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:536
+#, no-c-format
+msgid "<programlisting>@BeginTask</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:537
+#, no-c-format
+msgid ""
+"Resumes work on an incomplete jBPM task. Specifies that a long-running "
+"conversation begins when this method returns a non-null outcome without "
+"exception. This conversation is associated with the jBPM task specified in "
+"the named request parameter. Within the context of this conversation, a "
+"business process context is also defined, for the business process instance "
+"of the task instance."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:540
+#, no-c-format
+msgid ""
+"The jBPM <literal>TaskInstance</literal> will be available in a request "
+"context variable named <literal>taskInstance</literal>. The jPBM "
+"<literal>ProcessInstance</literal> will be available in a request context "
+"variable named <literal>processInstance</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:558
+#, no-c-format
+msgid "<literal>@EndTask</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:560
+#, no-c-format
+msgid "<programlisting>@EndTask</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:561
+#, no-c-format
+msgid ""
+"\"Ends\" a jBPM task. Specifies that a long-running conversation ends when "
+"this method returns a non-null outcome, and that the current task is "
+"complete. Triggers a jBPM transition. The actual transition triggered will "
+"be the default transition unless the application has called "
+"<literal>Transition.setName()</literal> on the built-in component named "
+"<literal>transition</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:564
+#, no-c-format
+msgid "@EndTask(transition=\"transitionName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:565
+#, no-c-format
+msgid "Triggers the given jBPM transition."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:568
+#, no-c-format
+msgid "@EndTask(ifOutcome={\"success\", \"continue\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:569
+#, no-c-format
+msgid ""
+"Specifies that the task ends when this method returns one of the listed "
+"outcomes."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:575
+#, no-c-format
+msgid ""
+"<literal>transition</literal> &mdash; the name of the jBPM transition to be "
+"triggered when ending the task. Defaults to the default transition."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:580
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in the end of the task."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:594
+#, no-c-format
+msgid "@CreateProcess"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:596
+#, no-c-format
+msgid "@CreateProcess(definition=\"process definition name\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:597
+#, no-c-format
+msgid ""
+"Creates a new jBPM process instance when the method returns a non-null "
+"outcome without exception. The <literal>ProcessInstance</literal> object "
+"will be available in a context variable named <literal>processInstance</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:602
+#, no-c-format
+msgid ""
+"<literal>definition</literal> &mdash; the name of the jBPM process "
+"definition deployed via <literal>org.jboss.seam.core.jbpm."
+"processDefinitions</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:610
+#, no-c-format
+msgid "@ResumeProcess"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:612
+#, no-c-format
+msgid "@ResumeProcess(processIdParameter=\"processId\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:613
+#, no-c-format
+msgid ""
+"Re-enters the scope of an existing jBPM process instance when the method "
+"returns a non-null outcome without exception. The <literal>ProcessInstance</"
+"literal> object will be available in a context variable named "
+"<literal>processInstance</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:618
+#, no-c-format
+msgid ""
+"<literal>processIdParameter</literal> &mdash; the name a request parameter "
+"holding the process id. Default to <literal>\"processId\"</literal>."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:629
+#, no-c-format
+msgid "Annotations for transaction demarcation"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:630
+#, no-c-format
+msgid ""
+"Seam provides an annotation that lets you force a rollback of the JTA "
+"transaction for certain action listener outcomes."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:635
+#, no-c-format
+msgid "@Rollback"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:637
+#, no-c-format
+msgid "@Rollback(ifOutcome={\"failure\", \"not-found\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:638
+#, no-c-format
+msgid ""
+"If the outcome of the method matches any of the listed outcomes, or if no "
+"outcomes are listed, set the transaction to rollback only when the method "
+"completes."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:643
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; the JSF outcomes that cause a "
+"transaction rollback (no outcomes is interpreted to mean any outcome)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:651
+#, no-c-format
+msgid "<literal>@Transactional</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:653
+#, no-c-format
+msgid "<programlisting>@Transactional</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:654
+#, no-c-format
+msgid ""
+"Specifies that a JavaBean component should have a similar transactional "
+"behavior to the default behavior of a session bean component. ie. method "
+"invocations should take place in a transaction, and if no transaction exists "
+"when the method is called, a transaction will be started just for that "
+"method. This annotation may be applied at either class or method level."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:660
+#, no-c-format
+msgid ""
+"Seam applications usually use the standard EJB3 annotations for all other "
+"transaction demarcation needs."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:666
+#, no-c-format
+msgid "Annotations for exceptions"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:667
+#, no-c-format
+msgid ""
+"These annotations let you specify how Seam should handle an exception that "
+"propagates out of a Seam component."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:672
+#, no-c-format
+msgid "@Redirect"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:674
+#, no-c-format
+msgid "@Redirect(viewId=\"error.jsp\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:675
+#, no-c-format
+msgid ""
+"Specifies that the annotated exception causes a browser redirect to a "
+"specified view id."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:680
+#, no-c-format
+msgid ""
+"<literal>viewId</literal> &mdash; specifies the JSF view id to redirect to."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:685
+#, no-c-format
+msgid ""
+"<literal>message</literal> &mdash; a message to be displayed, default to the "
+"exception message."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:690 Annotations.xml:716
+#, no-c-format
+msgid ""
+"<literal>end</literal> &mdash; specifies that the long-running conversation "
+"should end, default to <literal>false</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:698
+#, no-c-format
+msgid "@HttpError"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:700
+#, no-c-format
+msgid "@HttpError(errorCode=404)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:701
+#, no-c-format
+msgid "Specifies that the annotated exception causes a HTTP error to be sent."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:706
+#, no-c-format
+msgid ""
+"<literal>errorCode</literal> &mdash; the HTTP error code, default to "
+"<literal>500</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:711
+#, no-c-format
+msgid ""
+"<literal>message</literal> &mdash; a message to be sent with the HTTP error, "
+"default to the exception message."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:727
+#, no-c-format
+msgid "Annotations for validation"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:728
+#, no-c-format
+msgid ""
+"This annotation triggers Hibernate Validator. It appears on a method of a "
+"Seam component, almost always an action listener method."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:731
+#, no-c-format
+msgid ""
+"Please refer to the documentation for the Hibernate Annotations package for "
+"information about the annotations defined by the Hibernate Validator "
+"framework."
+msgstr ""
+
+#. Tag: emphasis
+#: Annotations.xml:735
+#, no-c-format
+msgid ""
+"Note that use of <literal>@IfInvalid</literal> is now semi-deprecated and "
+"<literal>&lt;s:validateAll&gt;</literal> is now preferred."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:739
+#, no-c-format
+msgid "@IfInvalid"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:741
+#, no-c-format
+msgid "@IfInvalid(outcome=\"invalid\", refreshEntities=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:742
+#, no-c-format
+msgid ""
+"Specifies that Hibernate Validator should validate the component before the "
+"method is invoked. If the invocation fails, the specified outcome will be "
+"returned, and the validation failure messages returned by Hibernate "
+"Validator will be added to the <literal>FacesContext</literal>. Otherwise, "
+"the invocation will proceed."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:747
+#, no-c-format
+msgid ""
+"<literal>outcome</literal> &mdash; the JSF outcome when validation fails."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:752
+#, no-c-format
+msgid ""
+"<literal>refreshEntities</literal> &mdash; specifies that any invalid entity "
+"in the managed state should be refreshed from the database when validation "
+"fails. Default to <literal>false</literal>. (Useful with extended "
+"persistence contexts.)"
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:763
+#, no-c-format
+msgid "Annotations for Seam Remoting"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:764
+#, no-c-format
+msgid ""
+"Seam Remoting requires that the local interface of a session bean be "
+"annotated with the following annotation:"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:769
+#, no-c-format
+msgid "@WebRemote"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:771
+#, no-c-format
+msgid "@WebRemote(exclude=\"path.to.exclude\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:772
+#, no-c-format
+msgid ""
+"Indicates that the annotated method may be called from client-side "
+"JavaScript. The <literal>exclude</literal> property is optional and allows "
+"objects to be excluded from the result's object graph (see the Remoting "
+"chapter for more details)."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:781
+#, no-c-format
+msgid "Annotations for Seam interceptors"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:782
+#, no-c-format
+msgid "The following annotations appear on Seam interceptor classes."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:785
+#, no-c-format
+msgid ""
+"Please refer to the documentation for the EJB 3.0 specification for "
+"information about the annotations required for EJB interceptor definition."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:790
+#, no-c-format
+msgid "@Interceptor"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:792
+#, no-c-format
+msgid "@Interceptor(stateless=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:793
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is stateless and Seam may optimize "
+"replication."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:796
+#, no-c-format
+msgid "@Interceptor(type=CLIENT)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:797
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is a \"client-side\" interceptor that is "
+"called before the EJB container."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:800
+#, no-c-format
+msgid "@Interceptor(around={SomeInterceptor.class, OtherInterceptor.class})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:801
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is positioned higher in the stack than the "
+"given interceptors."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:804
+#, no-c-format
+msgid "@Interceptor(within={SomeInterceptor.class, OtherInterceptor.class})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:805
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is positioned deeper in the stack than the "
+"given interceptors."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:814
+#, no-c-format
+msgid "Annotations for asynchronicity"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:815
+#, no-c-format
+msgid ""
+"The following annotations are used to declare an asynchronous method, for "
+"example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:818
+#, no-c-format
+msgid ""
+"@Asynchronous public void scheduleAlert(Alert alert, @Expiration Date date) "
+"{ ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:819
+#, no-c-format
+msgid ""
+"@Asynchronous public Timer scheduleAlerts(Alert alert, @Expiration Date "
+"date, \n"
+"    @IntervalDuration long interval) { ... }"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:822
+#, no-c-format
+msgid "<literal>@Asynchronous</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:824
+#, no-c-format
+msgid "<programlisting>@Asynchronous</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:825
+#, no-c-format
+msgid "Specifies that the method call is processed asynchronously."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:831
+#, no-c-format
+msgid "<literal>@Duration</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:833
+#, no-c-format
+msgid "<programlisting>@Duration</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:834
+#, no-c-format
+msgid ""
+"Specifies that a parameter of the asynchronous call is the duration before "
+"the call is processed (or first processed for recurring calls)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:840
+#, no-c-format
+msgid "<literal>@Expiration</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:842
+#, no-c-format
+msgid "<programlisting>@Expiration</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:843
+#, no-c-format
+msgid ""
+"Specifies that a parameter of the asynchronous call is the datetime at which "
+"the call is processed (or first processed for recurring calls)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:849
+#, no-c-format
+msgid "<literal>@IntervalDuration</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:851
+#, no-c-format
+msgid "<programlisting>@IntervalDuration</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:852
+#, no-c-format
+msgid ""
+"Specifies that an asynchronous method call recurs, and that the annotationed "
+"parameter is duration between recurrences."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:861
+#, no-c-format
+msgid "Annotations for use with JSF <literal>dataTable</literal>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:862
+#, no-c-format
+msgid ""
+"The following annotations make it easy to implement clickable lists backed "
+"by a stateful session bean. They appear on attributes."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:867
+#, no-c-format
+msgid "@DataModel"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:869
+#, no-c-format
+msgid "@DataModel(\"variableName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:870
+#, no-c-format
+msgid ""
+"Exposes an attribute of type <literal>List</literal>, <literal>Map</"
+"literal>, <literal>Set</literal> or <literal>Object[]</literal> as a JSF "
+"<literal>DataModel</literal> into the scope of the owning component (or the "
+"<literal>EVENT</literal> scope if the owning component is "
+"<literal>STATELESS</literal>). In the case of <literal>Map</literal>, each "
+"row of the <literal>DataModel</literal> is a <literal>Map.Entry</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:875
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; name of the conversation context variable. "
+"Default to the attribute name."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:880
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; if <literal>scope=ScopeType.PAGE</literal> "
+"is explicitly specified, the <literal>DataModel</literal> will be kept in "
+"the <literal>PAGE</literal> context."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:888
+#, no-c-format
+msgid "<literal>@DataModelSelection</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:890
+#, no-c-format
+msgid "<programlisting>@DataModelSelection</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:891
+#, no-c-format
+msgid ""
+"Injects the selected value from the JSF <literal>DataModel</literal> (this "
+"is the element of the underlying collection, or the map value)."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:896 Annotations.xml:912
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; name of the conversation context variable. "
+"Not needed if there is exactly one <literal>@DataModel</literal> in the "
+"component."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:904
+#, no-c-format
+msgid "<literal>@DataModelSelectionIndex</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:906
+#, no-c-format
+msgid "<programlisting>@DataModelSelectionIndex</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:907
+#, no-c-format
+msgid ""
+"Exposes the selection index of the JSF <literal>DataModel</literal> as an "
+"attribute of the component (this is the row number of the underlying "
+"collection, or the map key)."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:923
+#, no-c-format
+msgid "Meta-annotations for databinding"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:924
+#, no-c-format
+msgid ""
+"These meta-annotations make it possible to implement similar functionality "
+"to <literal>@DataModel</literal> and <literal>@DataModelSelection</literal> "
+"for other datastructures apart from lists."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:929
+#, no-c-format
+msgid "@DataBinderClass"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:931
+#, no-c-format
+msgid "@DataBinderClass(DataModelBinder.class)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:932
+#, no-c-format
+msgid "Specifies that an annotation is a databinding annotation."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:938
+#, no-c-format
+msgid "@DataSelectorClass"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:940
+#, no-c-format
+msgid "@DataSelectorClass(DataModelSelector.class)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:941
+#, no-c-format
+msgid "Specifies that an annotation is a dataselection annotation."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:950
+#, no-c-format
+msgid "Annotations for packaging"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:951
+#, no-c-format
+msgid ""
+"This annotation provides a mechanism for declaring information about a set "
+"of components that are packaged together. It can be applied to any Java "
+"package."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:956
+#, no-c-format
+msgid "@Namespace"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:958
+#, no-c-format
+msgid "@Namespace(value=\"http://jboss.com/products/seam/example/seampay\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:959
+#, no-c-format
+msgid ""
+"Specifies that components in the current package are associated with the "
+"given namespace. The declared namespace can be used as an XML namespace in a "
+"<literal>components.xml</literal> file to simplify application configuration."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:962
+#, no-c-format
+msgid ""
+"@Namespace(value=\"http://jboss.com/products/seam/core\", prefix=\"org.jboss."
+"seam.core\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:963
+#, no-c-format
+msgid ""
+"Specifies a namespace to associate with a given package. Additionally, it "
+"specifies a component name prefix to be applied to component names specified "
+"in the XML file. For example, an XML element named <literal>microcontainer</"
+"literal> that is associated with this namespace would be understood to "
+"actually refere to a component named <literal>org.jboss.seam.core."
+"microcontainer</literal>."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Book_Info.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Book_Info.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Book_Info.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,38 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Book_Info.xml:10
+#, no-c-format
+msgid "Seam - Contextual Components"
+msgstr ""
+
+#. Tag: subtitle
+#: Book_Info.xml:11
+#, no-c-format
+msgid "A Framework for Java EE 5"
+msgstr ""
+
+#. Tag: para
+#: Book_Info.xml:15
+#, no-c-format
+msgid "This book is a Reference Guide for Seam"
+msgstr ""
+
+#. Tag: holder
+#: Book_Info.xml:36
+#, no-c-format
+msgid "&FORMAL-RHI;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Cache.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Cache.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Cache.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,318 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Cache.xml:10
+#, no-c-format
+msgid "Caching"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:11
+#, no-c-format
+msgid ""
+"In almost all enterprise applications, the database is the primary "
+"bottleneck, and the least scalable tier of the runtime environment. People "
+"from a PHP/Ruby environment will try to tell you that so-called \"shared "
+"nothing\" architectures scale well. While that may be literally true, I "
+"don't know of many interesting multi-user applications which can be "
+"implemented with no sharing of resources between different nodes of the "
+"cluster. What these silly people are really thinking of is a \"share nothing "
+"except for the database\" architecture. Of course, sharing the database is "
+"the primary problem with scaling a multi-user application&mdash;so the claim "
+"that this architecture is highly scalable is absurd, and tells you a lot "
+"about the kind of applications that these folks spend most of their time "
+"working on."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:14
+#, no-c-format
+msgid ""
+"Almost anything we can possibly do to share the database <emphasis>less "
+"often</emphasis> is worth doing."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:17
+#, no-c-format
+msgid ""
+"This calls for a cache. Well, not just one cache. A well designed Seam "
+"application will feature a rich, multi-layered caching strategy that impacts "
+"every layer of the application:"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:22
+#, no-c-format
+msgid ""
+"The database, of course, has its own cache. This is super-important, but "
+"can't scale like a cache in the application tier."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:27
+#, no-c-format
+msgid ""
+"Your ORM solution (Hibernate, or some other JPA implementation) has a second-"
+"level cache of data from the database. This is a very powerful capability, "
+"but is often misused. In a clustered environment, keeping the data in the "
+"cache transactionally consistent across the whole cluster, and with the "
+"database, is quite expensive. It makes most sense for data which is shared "
+"between many users, and is updated rarely. In traditional stateless "
+"architectures, people often try to use the second-level cache for "
+"conversational state. This is always bad, and is especially wrong in Seam."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:32
+#, no-c-format
+msgid ""
+"The Seam conversation context is a cache of conversational state. Components "
+"you put into the conversation context can hold and cache state relating to "
+"the current user interaction."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:37
+#, no-c-format
+msgid ""
+"In particular, the Seam-managed persistence context (or an extended EJB "
+"container-managed persistence context associated with a conversation-scoped "
+"stateful session bean) acts as a cache of data that has been read in the "
+"current conversation. This cache tends to have a pretty high hitrate! Seam "
+"optimizes the replication of Seam-managed persistence contexts in a "
+"clustered environment, and there is no requirement for transactional "
+"consistency with the database (optimistic locking is sufficient) so you "
+"don't need to worry too much about the performance implications of this "
+"cache, unless you read thousands of objects into a single persistence "
+"context."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:42
+#, no-c-format
+msgid ""
+"The application can cache non-transactional state in the Seam application "
+"context. State kept in the application context is of course not visible to "
+"other nodes in the cluster."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:47
+#, no-c-format
+msgid ""
+"The application can cache transactional state using the Seam "
+"<literal>pojoCache</literal> component, which integrates JBossCache into the "
+"Seam environment. This state will be visible to other nodes if you run JBoss "
+"cache in a clustered mode."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:52
+#, no-c-format
+msgid ""
+"Finally, Seam lets you cache rendered fragments of a JSF page. Unlike the "
+"ORM second-level cache, this cache is not automatically invalidated when "
+"data changes, so you need to write application code to perform explicit "
+"invalidation, or set appropriate expiration policies."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:57
+#, no-c-format
+msgid ""
+"For more information about the second-level cache, you'll need to refer to "
+"the documentation of your ORM solution, since this is an extremely complex "
+"topic. In this section we'll discuss the use of JBossCache directly, via the "
+"<literal>pojoCache</literal> component, or as the page fragment cache, via "
+"the <literal>&lt;s:cache&gt;</literal> control."
+msgstr ""
+
+#. Tag: title
+#: Cache.xml:61
+#, no-c-format
+msgid "Using JBossCache in Seam"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:62
+#, no-c-format
+msgid ""
+"The built-in <literal>pojoCache</literal> component manages an instance of "
+"<literal>org.jboss.cache.aop.PojoCache</literal>. You can safely put any "
+"immutable Java object in the cache, and it will be replicated across the "
+"cluster (assuming that replication is enabled). If you want to keep mutable "
+"objects in the cache, you'll need to run the JBossCache bytecode "
+"preprocessor to ensure that changes to the objects will be automatically "
+"detected and replicated."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:65
+#, no-c-format
+msgid ""
+"To use <literal>pojoCache</literal>, all you need to do is put the "
+"JBossCache jars in the classpath, and provide a resource named "
+"<literal>treecache.xml</literal> with an appropriate cache configuration. "
+"JBossCache has many scary and confusing configuration settings, so we won't "
+"discuss them here. Please refer to the JBossCache documentation for more "
+"information."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:68
+#, no-c-format
+msgid ""
+"For an EAR depoyment of Seam, we recommend that the JBossCache jars and "
+"configuration go directly into the EAR. Make sure you declare the jars in "
+"<literal>application.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:71
+#, no-c-format
+msgid "Now you can inject the cache into any Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:74
+#, no-c-format
+msgid ""
+"@Name(\"chatroom\")\n"
+"public class Chatroom {\n"
+"    @In PojoCache pojoCache;\n"
+"    \n"
+"    public void join(String username) {\n"
+"      try\n"
+"      {\n"
+"         Set&lt;String&gt; userList = (Set&lt;String&gt;) pojoCache.get"
+"(\"chatroom\", \"userList\");\n"
+"         if (userList==null) \n"
+"         {\n"
+"            userList = new HashSet&lt;String&gt;();\n"
+"            pojoCache.put(\"chatroom\", \"userList\", userList);\n"
+"         }\n"
+"         userList.put(username);\n"
+"      }\n"
+"      catch (CacheException ce)\n"
+"      {\n"
+"         throw new RuntimeException(ce);\n"
+"      }\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:75
+#, no-c-format
+msgid ""
+"If you want to have multiple JBossCache configurations in your application, "
+"use <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:78
+#, no-c-format
+msgid ""
+"&lt;core:pojo-cache name=\"myCache\" cfg-resource-name=\"myown/cache.xml\"/"
+"&gt;"
+msgstr ""
+
+#. Tag: title
+#: Cache.xml:82
+#, no-c-format
+msgid "Page fragment caching"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:83
+#, no-c-format
+msgid ""
+"The most interesting user of JBossCache is the <literal>&lt;s:cache&gt;</"
+"literal> tag, Seam's solution to the problem of page fragment caching in "
+"JSF. <literal>&lt;s:cache&gt;</literal> uses <literal>pojoCache</literal> "
+"internally, so you need to follow the steps listed above before you can use "
+"it. (Put the jars in the EAR, wade through the scary configuration options, "
+"etc.)"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:86
+#, no-c-format
+msgid ""
+"<literal>&lt;s:cache&gt;</literal> is used for caching some rendered content "
+"which changes rarely. For example, the welcome page of our blog displays the "
+"recent blog entries:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:89
+#, no-c-format
+msgid ""
+"&lt;s:cache key=\"recentEntries-#{blog.id}\" region=\"welcomePageFragments"
+"\"&gt;\n"
+"   &lt;h:dataTable value=\"#{blog.recentEntries}\" var=\"blogEntry\"&gt;\n"
+"      &lt;h:column&gt;\n"
+"         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"         &lt;div&gt;\n"
+"            &lt;s:formattedText value=\"#{blogEntry.body}\"/&gt;\n"
+"         &lt;/div&gt;\n"
+"      &lt;/h:column&gt;\n"
+"   &lt;/h:dataTable&gt;\n"
+"&lt;/s:cache&gt;"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:90
+#, no-c-format
+msgid ""
+"The <literal>key</literal> let's you have multiple cached versions of each "
+"page fragment. In this case, there is one cached version per blog. The "
+"<literal>region</literal> determines the JBossCache node that all version "
+"will be stored in. Different nodes may have different expiry policies. "
+"(That's the stuff you set up using the aforementioned scary configuration "
+"options.)"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:93
+#, no-c-format
+msgid ""
+"Of course, the big problem with <literal>&lt;s:cache&gt;</literal> is that "
+"it is too stupid to know when the underlying data changes (for example, when "
+"the blogger posts a new entry). So you need to evict the cached fragment "
+"manually:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:96
+#, no-c-format
+msgid ""
+"public void post() {\n"
+"    ...\n"
+"    entityManager.persist(blogEntry);\n"
+"    pojoCache.remove(\"welcomePageFragments\", \"recentEntries-\" + blog."
+"getId() );\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:97
+#, no-c-format
+msgid ""
+"Alternatively, if it is not critical that changes are immediately visible to "
+"the user, you could set a short expiry time on the JbossCache node."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Components.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Components.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Components.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2007 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Components.xml:10
+#, no-c-format
+msgid "Built-in Seam components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:11
+#, no-c-format
+msgid ""
+"This chapter describes Seam's built-in components, and their configuration "
+"properties."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:14
+#, no-c-format
+msgid ""
+"Note that you can replace any of the built in components with your own "
+"implementations simply by specifying the name of one of the built in "
+"components on your own class using <literal>@Name</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:17
+#, no-c-format
+msgid ""
+"Note also that even though all the built in components use a qualified name, "
+"most of them are aliased to unqualified names by default. These aliases "
+"specify <literal>auto-create=\"true\"</literal>, so you do not need to use "
+"<literal>create=true</literal> when injecting built-in components by their "
+"unqualified name."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:21
+#, no-c-format
+msgid "Context injection components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:22
+#, no-c-format
+msgid ""
+"The first set of built in components exist purely to support injection of "
+"various contextual objects. For example, the following component instance "
+"variable would have the Seam session context object injected:"
+msgstr ""
+
+#. Tag: programlisting
+#: Components.xml:25
+#, no-c-format
+msgid "@In private Context sessionContext;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:28
+#, no-c-format
+msgid "org.jboss.seam.core.eventContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:30
+#, no-c-format
+msgid "Manager component for the event context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:36
+#, no-c-format
+msgid "org.jboss.seam.core.pageContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:38
+#, no-c-format
+msgid "Manager component for the page context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:44
+#, no-c-format
+msgid "org.jboss.seam.core.conversationContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:46
+#, no-c-format
+msgid "Manager component for the conversation context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:52
+#, no-c-format
+msgid "org.jboss.seam.core.sessionContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:54
+#, no-c-format
+msgid "Manager component for the session context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:60
+#, no-c-format
+msgid "org.jboss.seam.core.applicationContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:62
+#, no-c-format
+msgid "Manager component for the appication context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:68
+#, no-c-format
+msgid "org.jboss.seam.core.businessProcessContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:70
+#, no-c-format
+msgid "Manager component for the business process context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:76
+#, no-c-format
+msgid "org.jboss.seam.core.facesContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:78
+#, no-c-format
+msgid ""
+"Manager component for the <literal>FacesContext</literal> context object "
+"(not a true Seam context)"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:84 Components.xml:267 Components.xml:441 Components.xml:572
+#, no-c-format
+msgid "All of these components are always installed."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:90
+#, no-c-format
+msgid "Utility components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:91
+#, no-c-format
+msgid "These components are merely useful."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:96
+#, no-c-format
+msgid "org.jboss.seam.core.facesMessages"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:98
+#, no-c-format
+msgid "Allows faces success messages to propagate across a browser redirect."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:103
+#, no-c-format
+msgid ""
+"<literal>add(FacesMessage facesMessage)</literal> &mdash; add a faces "
+"message, which will be displayed during the next render response phase that "
+"occurs in the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:108
+#, no-c-format
+msgid ""
+"<literal>add(String messageTemplate)</literal> &mdash; add a faces message, "
+"rendered from the given message template which may contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:113
+#, no-c-format
+msgid ""
+"<literal>add(Severity severity, String messageTemplate)</literal> &mdash; "
+"add a faces message, rendered from the given message template which may "
+"contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:118
+#, no-c-format
+msgid ""
+"<literal>addFromResourceBundle(String key)</literal> &mdash; add a faces "
+"message, rendered from a message template defined in the Seam resource "
+"bundle which may contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:123
+#, no-c-format
+msgid ""
+"<literal>addFromResourceBundle(Severity severity, String key)</literal> "
+"&mdash; add a faces message, rendered from a message template defined in the "
+"Seam resource bundle which may contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:128
+#, no-c-format
+msgid "<literal>clear()</literal> &mdash; clear all messages."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:136
+#, no-c-format
+msgid "org.jboss.seam.core.redirect"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:138
+#, no-c-format
+msgid ""
+"A convenient API for performing redirects with parameters (this is "
+"especially useful for bookmarkable search results screens)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:143
+#, no-c-format
+msgid ""
+"<literal>redirect.viewId</literal> &mdash; the JSF view id to redirect to."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:148
+#, no-c-format
+msgid ""
+"<literal>redirect.conversationPropagationEnabled</literal> &mdash; "
+"determines whether the conversation will propagate across the redirect."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:153
+#, no-c-format
+msgid ""
+"<literal>redirect.parameters</literal> &mdash; a map of request parameter "
+"name to value, to be passed in the redirect request."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:158
+#, no-c-format
+msgid "<literal>execute()</literal> &mdash; perform the redirect immediately."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:163
+#, no-c-format
+msgid ""
+"<literal>captureCurrentRequest()</literal> &mdash; stores the view id and "
+"request parameters of the current GET request (in the conversation context), "
+"for later use by calling <literal>execute()</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:171
+#, no-c-format
+msgid "org.jboss.seam.core.httpError"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:173
+#, no-c-format
+msgid "A convenient API for sending HTTP errors."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:179
+#, no-c-format
+msgid "org.jboss.seam.core.events"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:181
+#, no-c-format
+msgid ""
+"An API for raising events that can be observed via <literal>@Observer</"
+"literal> methods, or method bindings in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:186
+#, no-c-format
+msgid ""
+"<literal>raiseEvent(String type)</literal> &mdash; raise an event of a "
+"particular type and distribute to all observers."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:191
+#, no-c-format
+msgid ""
+"<literal>raiseAsynchronousEvent(String type)</literal> &mdash; raise an "
+"event to be processed asynchronously by the EJB3 timer service."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:196
+#, no-c-format
+msgid ""
+"<literal>raiseTimedEvent(String type, ....)</literal> &mdash; schedule an "
+"event to be processed asynchronously by the EJB3 timer service."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:201
+#, no-c-format
+msgid ""
+"<literal>addListener(String type, String methodBinding)</literal> &mdash; "
+"add an observer for a particular event type."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:209
+#, no-c-format
+msgid "org.jboss.seam.core.interpolator"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:211
+#, no-c-format
+msgid "An API for interpolating the values of JSF EL expressions in Strings."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:216
+#, no-c-format
+msgid ""
+"<literal>interpolate(String template)</literal> &mdash; scan the template "
+"for JSF EL expressions of the form <literal>#{...}</literal> and replace "
+"them with their evaluated values."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:224
+#, no-c-format
+msgid "org.jboss.seam.core.expressions"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:226
+#, no-c-format
+msgid "An API for creating value and method bindings."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:231
+#, no-c-format
+msgid ""
+"<literal>createValueBinding(String expression)</literal> &mdash; create a "
+"value binding object."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:236
+#, no-c-format
+msgid ""
+"<literal>createMethodBinding(String expression)</literal> &mdash; create a "
+"method binding object."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:244
+#, no-c-format
+msgid "org.jboss.seam.core.pojoCache"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:246
+#, no-c-format
+msgid ""
+"Manager component for a JBoss Cache <literal>PojoCache</literal> instance."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:251
+#, no-c-format
+msgid ""
+"<literal>pojoCache.cfgResourceName</literal> &mdash; the name of the "
+"configuration file. Default to <literal>treecache.xml</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:259
+#, no-c-format
+msgid "org.jboss.seam.core.uiComponent"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:261
+#, no-c-format
+msgid ""
+"Allows access to a JSF <literal>UIComponent</literal> by its id from the EL. "
+"For example, we can write <literal>@In(\"#{uiComponent['myForm:address']."
+"value}\")</literal>."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:273
+#, no-c-format
+msgid "Components for internationalization and themes"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:274
+#, no-c-format
+msgid ""
+"The next group of components make it easy to build internationalized user "
+"interfaces using Seam."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:279
+#, no-c-format
+msgid "org.jboss.seam.core.locale"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:281
+#, no-c-format
+msgid "The Seam locale. The locale is session scoped."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:287
+#, no-c-format
+msgid "org.jboss.seam.core.timezone"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:289
+#, no-c-format
+msgid "The Seam timezone. The timezone is session scoped."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:295
+#, no-c-format
+msgid "org.jboss.seam.core.resourceBundle"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:297
+#, no-c-format
+msgid ""
+"The Seam resource bundle. The resource bundle is session scoped. The Seam "
+"resource bundle performs a depth-first search for keys in a list of Java "
+"resource bundles."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:302
+#, no-c-format
+msgid ""
+"<literal>resourceBundle.bundleNames</literal> &mdash; the names of the Java "
+"resource bundles to search. Default to <literal>messages</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:310
+#, no-c-format
+msgid "org.jboss.seam.core.localeSelector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:312
+#, no-c-format
+msgid ""
+"Supports selection of the locale either at configuration time, or by the "
+"user at runtime."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:317 Components.xml:367
+#, no-c-format
+msgid "<literal>select()</literal> &mdash; select the specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:322
+#, no-c-format
+msgid ""
+"<literal>localeSelector.locale</literal> &mdash; the actual <literal>java."
+"util.Locale</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:327
+#, no-c-format
+msgid ""
+"<literal>localeSelector.localeString</literal> &mdash; the stringified "
+"representation of the locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:332
+#, no-c-format
+msgid ""
+"<literal>localeSelector.language</literal> &mdash; the language for the "
+"specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:337
+#, no-c-format
+msgid ""
+"<literal>localeSelector.country</literal> &mdash; the country for the "
+"specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:342
+#, no-c-format
+msgid ""
+"<literal>localeSelector.variant</literal> &mdash; the variant for the "
+"specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:347
+#, no-c-format
+msgid ""
+"<literal>localeSelector.supportedLocales</literal> &mdash; a list of "
+"<literal>SelectItem</literal>s representing the supported locales listed in "
+"<literal>jsf-config.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:352
+#, no-c-format
+msgid ""
+"<literal>localeSelector.cookieEnabled</literal> &mdash; specifies that the "
+"locale selection should be persisted via a cookie."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:360
+#, no-c-format
+msgid "org.jboss.seam.core.timezoneSelector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:362
+#, no-c-format
+msgid ""
+"Supports selection of the timezone either at configuration time, or by the "
+"user at runtime."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:372
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.timezone</literal> &mdash; the actual "
+"<literal>java.util.TimeZone</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:377
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.timeZoneId</literal> &mdash; the stringified "
+"representation of the timezone."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:382
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.cookieEnabled</literal> &mdash; specifies that the "
+"timezone selection should be persisted via a cookie."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:390
+#, no-c-format
+msgid "org.jboss.seam.core.messages"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:392
+#, no-c-format
+msgid ""
+"A map containing internationalized messages rendered from message templates "
+"defined in the Seam resource bundle."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:398
+#, no-c-format
+msgid "org.jboss.seam.theme.themeSelector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:400
+#, no-c-format
+msgid ""
+"Supports selection of the theme either at configuration time, or by the user "
+"at runtime."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:405
+#, no-c-format
+msgid "<literal>select()</literal> &mdash; select the specified theme."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:410
+#, no-c-format
+msgid ""
+"<literal>theme.availableThemes</literal> &mdash; the list of defined themes."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:415
+#, no-c-format
+msgid "<literal>themeSelector.theme</literal> &mdash; the selected theme."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:420
+#, no-c-format
+msgid ""
+"<literal>themeSelector.themes</literal> &mdash; a list of "
+"<literal>SelectItem</literal>s representing the defined themes."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:425
+#, no-c-format
+msgid ""
+"<literal>themeSelector.cookieEnabled</literal> &mdash; specifies that the "
+"theme selection should be persisted via a cookie."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:433
+#, no-c-format
+msgid "org.jboss.seam.theme.theme"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:435
+#, no-c-format
+msgid "A map containing theme entries."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:447
+#, no-c-format
+msgid "Components for controlling conversations"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:448
+#, no-c-format
+msgid ""
+"The next group of components allow control of conversations by the "
+"application or user interface."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:453
+#, no-c-format
+msgid "org.jboss.seam.core.conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:455
+#, no-c-format
+msgid ""
+"API for application control of attributes of the current Seam conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:460 Components.xml:475
+#, no-c-format
+msgid "<literal>getId()</literal> &mdash; returns the current conversation id"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:465
+#, no-c-format
+msgid ""
+"<literal>isNested()</literal> &mdash; is the current conversation a nested "
+"conversation?"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:470
+#, no-c-format
+msgid ""
+"<literal>isLongRunning()</literal> &mdash; is the current conversation a "
+"long-running conversation?"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:480
+#, no-c-format
+msgid ""
+"<literal>getParentId()</literal> &mdash; returns the conversation id of the "
+"parent conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:485
+#, no-c-format
+msgid ""
+"<literal>getRootId()</literal> &mdash; returns the conversation id of the "
+"root conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:490
+#, no-c-format
+msgid ""
+"<literal>setTimeout(int timeout)</literal> &mdash; sets the timeout for the "
+"current conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:495
+#, no-c-format
+msgid ""
+"<literal>setViewId(String outcome)</literal> &mdash; sets the view id to be "
+"used when switching back to the current conversation from the conversation "
+"switcher, conversation list, or breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:500
+#, no-c-format
+msgid ""
+"<literal>setDescription(String description)</literal> &mdash; sets the "
+"description of the current conversation to be displayed in the conversation "
+"switcher, conversation list, or breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:505
+#, no-c-format
+msgid ""
+"<literal>redirect()</literal> &mdash; redirect to the last well-defined view "
+"id for this conversation (useful after login challenges)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:510
+#, no-c-format
+msgid ""
+"<literal>leave()</literal> &mdash; exit the scope of this conversation, "
+"without actually ending the conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:515
+#, no-c-format
+msgid ""
+"<literal>begin()</literal> &mdash; begin a long-running conversation "
+"(equivalent to <literal>@Begin</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:520
+#, no-c-format
+msgid ""
+"<literal>beginPageflow(String pageflowName)</literal> &mdash; begin a long-"
+"running conversation with a pageflow (equivalent to <literal>@Begin(pageflow="
+"\"...\")</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:525
+#, no-c-format
+msgid ""
+"<literal>end()</literal> &mdash; end a long-running conversation (equivalent "
+"to <literal>@End</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:530
+#, no-c-format
+msgid ""
+"<literal>pop()</literal> &mdash; pop the conversation stack, returning to "
+"the parent conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:535
+#, no-c-format
+msgid ""
+"<literal>root()</literal> &mdash; return to the root conversation of the "
+"conversation stack."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:540
+#, no-c-format
+msgid ""
+"<literal>changeFlushMode(FlushModeType flushMode)</literal> &mdash; change "
+"the flush mode of the conversation."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:548
+#, no-c-format
+msgid "org.jboss.seam.core.conversationList"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:550
+#, no-c-format
+msgid "Manager component for the conversation list."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:556
+#, no-c-format
+msgid "org.jboss.seam.core.conversationStack"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:558
+#, no-c-format
+msgid "Manager component for the conversation stack (breadcrumbs)."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:564
+#, no-c-format
+msgid "org.jboss.seam.core.switcher"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:566
+#, no-c-format
+msgid "The conversation switcher."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:578
+#, no-c-format
+msgid "jBPM-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:579
+#, no-c-format
+msgid "These components are for use with jBPM."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:584
+#, no-c-format
+msgid "org.jboss.seam.core.pageflow"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:586
+#, no-c-format
+msgid "API control of Seam pageflows."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:591
+#, no-c-format
+msgid ""
+"<literal>isInProcess()</literal> &mdash; returns <literal>true</literal> if "
+"there is currently a pageflow in process"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:596
+#, no-c-format
+msgid ""
+"<literal>getProcessInstance()</literal> &mdash; returns jBPM "
+"<literal>ProcessInstance</literal> for the current pageflow"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:601
+#, no-c-format
+msgid ""
+"<literal>begin(String pageflowName)</literal> &mdash; begin a pageflow in "
+"the context of the current conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:606
+#, no-c-format
+msgid ""
+"<literal>reposition(String nodeName)</literal> &mdash; reposition the "
+"current pageflow to a particular node"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:614
+#, no-c-format
+msgid "org.jboss.seam.core.actor"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:616
+#, no-c-format
+msgid ""
+"API for application control of attributes of the jBPM actor associated with "
+"the current session."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:621
+#, no-c-format
+msgid ""
+"<literal>setId(String actorId)</literal> &mdash; sets the jBPM actor id of "
+"the current user."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:626
+#, no-c-format
+msgid ""
+"<literal>getGroupActorIds()</literal> &mdash; returns a <literal>Set</"
+"literal> to which jBPM actor ids for the current users groups may be added."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:634
+#, no-c-format
+msgid "org.jboss.seam.core.transition"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:636
+#, no-c-format
+msgid ""
+"API for application control of the jBPM transition for the current task."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:641
+#, no-c-format
+msgid ""
+"<literal>setName(String transitionName)</literal> &mdash; sets the jBPM "
+"transition name to be used when the current task is ended via "
+"<literal>@EndTask</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:649
+#, no-c-format
+msgid "org.jboss.seam.core.businessProcess"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:651
+#, no-c-format
+msgid ""
+"API for programmatic control of the association between the conversation and "
+"business process."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:656
+#, no-c-format
+msgid ""
+"<literal>businessProcess.taskId</literal> &mdash; the id of the task "
+"associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:661
+#, no-c-format
+msgid ""
+"<literal>businessProcess.processId</literal> &mdash; the id of the process "
+"associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:666
+#, no-c-format
+msgid ""
+"<literal>businessProcess.hasCurrentTask()</literal> &mdash; is a task "
+"instance associated with the current conversation?"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:671
+#, no-c-format
+msgid ""
+"<literal>businessProcess.hasCurrentProcess()</literal> &mdash; is a process "
+"instance associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:676
+#, no-c-format
+msgid ""
+"<literal>createProcess(String name)</literal> &mdash; create an instance of "
+"the named process definition and associate it with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:681
+#, no-c-format
+msgid ""
+"<literal>startTask()</literal> &mdash; start the task associated with the "
+"current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:686
+#, no-c-format
+msgid ""
+"<literal>endTask(String transitionName)</literal> &mdash; end the task "
+"associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:691
+#, no-c-format
+msgid ""
+"<literal>resumeTask(Long id)</literal> &mdash; associate the task with the "
+"given id with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:696
+#, no-c-format
+msgid ""
+"<literal>resumeProcess(Long id)</literal> &mdash; associate the process with "
+"the given id with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:701
+#, no-c-format
+msgid ""
+"<literal>transition(String transitionName)</literal> &mdash; trigger the "
+"transition."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:709
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstance"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:711
+#, no-c-format
+msgid "Manager component for the jBPM <literal>TaskInstance</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:717
+#, no-c-format
+msgid "org.jboss.seam.core.processInstance"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:719
+#, no-c-format
+msgid "Manager component for the jBPM <literal>ProcessInstance</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:725
+#, no-c-format
+msgid "org.jboss.seam.core.jbpmContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:727
+#, no-c-format
+msgid "Manager component for an event-scoped <literal>JbpmContext</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:733
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstanceList"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:735
+#, no-c-format
+msgid "Manager component for the jBPM task list."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:741
+#, no-c-format
+msgid "org.jboss.seam.core.pooledTaskInstanceList"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:743
+#, no-c-format
+msgid "Manager component for the jBPM pooled task list."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:749
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstanceListForType"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:751
+#, no-c-format
+msgid "Manager component for the jBPM task lists."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:757
+#, no-c-format
+msgid "org.jboss.seam.core.pooledTask"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:759
+#, no-c-format
+msgid "Action handler for pooled task assignment."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:765
+#, no-c-format
+msgid ""
+"All of these components are installed whenever the component <literal>org."
+"jboss.seam.core.jbpm</literal> is installed."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:771
+#, no-c-format
+msgid "Security-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:772
+#, no-c-format
+msgid "These components relate to web-tier security."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:777
+#, no-c-format
+msgid "org.jboss.seam.core.userPrincipal"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:779
+#, no-c-format
+msgid "Manager component for the current user <literal>Principal</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:785
+#, no-c-format
+msgid "org.jboss.seam.core.isUserInRole"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:787
+#, no-c-format
+msgid ""
+"Allows JSF pages to choose to render a control, depending upon the roles "
+"available to the current principal. <literal>&lt;h:commandButton value=\"edit"
+"\" rendered=\"#{isUserInRole['admin']}\"/&gt;</literal>."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:796
+#, no-c-format
+msgid "JMS-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:797
+#, no-c-format
+msgid ""
+"These components are for use with managed <literal>TopicPublisher</literal>s "
+"and <literal>QueueSender</literal>s (see below)."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:802
+#, no-c-format
+msgid "org.jboss.seam.jms.queueSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:804
+#, no-c-format
+msgid "Manager component for a JMS <literal>QueueSession</literal> ."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:810
+#, no-c-format
+msgid "org.jboss.seam.jms.topicSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:812
+#, no-c-format
+msgid "Manager component for a JMS <literal>TopicSession</literal> ."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:821
+#, no-c-format
+msgid "Mail-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:822
+#, no-c-format
+msgid "These components are for use with Seam's Email support"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:827
+#, no-c-format
+msgid "org.jboss.seam.mail.mailSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:829
+#, no-c-format
+msgid "Manager component for a JavaMail <literal>Session</literal> ."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:834
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.host</literal> &mdash; the hostname "
+"of the SMTP server to use"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:839
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.port</literal> &mdash; the port of "
+"the SMTP server to use"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:844
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.username</literal> &mdash; the "
+"username to use to connect to the SMTP server."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:849
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.password</literal> &mdash; the "
+"password to use to connect to the SMTP server"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:854
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.debug</literal> &mdash; enable "
+"JavaMail debugging (very verbose)"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:859
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.sessionJndiName</literal> &mdash; "
+"name under which a javax.mail.Session is bound to JNDI"
+msgstr ""
+
+#. Tag: title
+#: Components.xml:870
+#, no-c-format
+msgid "Infrastructural components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:871
+#, no-c-format
+msgid ""
+"These components provide critical platform infrastructure. You can install a "
+"component by including its class name in the <literal>org.jboss.seam.core."
+"init.componentClasses</literal> configuration property."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:876
+#, no-c-format
+msgid "org.jboss.seam.core.init"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:878
+#, no-c-format
+msgid "Initialization settings for Seam. Always installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:883
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.jndiPattern</literal> &mdash; the JNDI "
+"pattern used for looking up session beans"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:888
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.debug</literal> &mdash; enable Seam debug "
+"mode"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:893
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.clientSideConversations</literal> &mdash; "
+"if set to <literal>true</literal>, Seam will save conversation context "
+"variables in the client instead of in the <literal>HttpSession</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:898
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.userTransactionName</literal> &mdash; the "
+"JNDI name to use when looking up the JTA <literal>UserTransaction</literal> "
+"object."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:906
+#, no-c-format
+msgid "org.jboss.seam.core.manager"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:908
+#, no-c-format
+msgid ""
+"Internal component for Seam page and conversation context management. Always "
+"installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:913
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationTimeout</literal> &mdash; "
+"the conversation context timeout in milliseconds."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:918
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.concurrentRequestTimeout</literal> "
+"&mdash; maximum wait time for a thread attempting to gain a lock on the long-"
+"running conversation context."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:923
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationIdParameter</literal> "
+"&mdash; the request parameter used to propagate the conversation id, default "
+"to <literal>conversationId</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:928
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationIsLongRunningParameter</"
+"literal> &mdash; the request parameter used to propagate information about "
+"whether the conversation is long-running, default to "
+"<literal>conversationIsLongRunning</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:936
+#, no-c-format
+msgid "org.jboss.seam.core.pages"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:938
+#, no-c-format
+msgid "Internal component for Seam workspace management. Always installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:943
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.pages.noConversationViewId</literal> &mdash; "
+"global setting for the view id to redirect to when a conversation entry is "
+"not found on the server side."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:951
+#, no-c-format
+msgid "org.jboss.seam.core.ejb"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:953
+#, no-c-format
+msgid ""
+"Bootstraps the JBoss Embeddable EJB3 container. Install as class "
+"<literal>org.jboss.seam.core.Ejb</literal>. This is useful when using Seam "
+"with EJB components outside the context of a Java EE 5 application server."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:956
+#, no-c-format
+msgid ""
+"The basic Embedded EJB configuration is defined in <literal>jboss-embedded-"
+"beans.xml</literal>. Additional microcontainer configuration (for example, "
+"extra datasources) may be specified by <literal>jboss-beans.xml</literal> or "
+"<literal>META-INF/jboss-beans.xml</literal> in the classpath."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:962
+#, no-c-format
+msgid "org.jboss.seam.core.microcontainer"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:964
+#, no-c-format
+msgid ""
+"Bootstraps the JBoss microcontainer. Install as class <literal>org.jboss."
+"seam.core.Microcontainer</literal>. This is useful when using Seam with "
+"Hibernate and no EJB components outside the context of a Java EE application "
+"server. The microcontainer can provide a partial EE environment with JNDI, "
+"JTA, a JCA datasource and Hibernate."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:967
+#, no-c-format
+msgid ""
+"The microcontainer configuration may be specified by <literal>jboss-beans."
+"xml</literal> or <literal>META-INF/jboss-beans.xml</literal> in the "
+"classpath."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:973
+#, no-c-format
+msgid "org.jboss.seam.core.jbpm"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:975
+#, no-c-format
+msgid ""
+"Bootstraps a <literal>JbpmConfiguration</literal>. Install as class "
+"<literal>org.jboss.seam.core.Jbpm</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:980
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.jbpm.processDefinitions</literal> &mdash; a "
+"list of resource names of jPDL files to be used for orchestration of "
+"business processes."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:985
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.jbpm.pageflowDefinitions</literal> &mdash; a "
+"list of resource names of jPDL files to be used for orchestration of "
+"conversation page flows."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:993
+#, no-c-format
+msgid "org.jboss.seam.core.conversationEntries"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:995
+#, no-c-format
+msgid ""
+"Internal session-scoped component recording the active long-running "
+"conversations between requests."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1001
+#, no-c-format
+msgid "org.jboss.seam.core.facesPage"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1003
+#, no-c-format
+msgid ""
+"Internal page-scoped component recording the conversation context associated "
+"with a page."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1009
+#, no-c-format
+msgid "org.jboss.seam.core.persistenceContexts"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1011
+#, no-c-format
+msgid ""
+"Internal component recording the persistence contexts which were used in the "
+"current conversation."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1017
+#, no-c-format
+msgid "org.jboss.seam.jms.queueConnection"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1019
+#, no-c-format
+msgid ""
+"Manages a JMS <literal>QueueConnection</literal>. Installed whenever managed "
+"managed <literal>QueueSender</literal> is installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1024
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.jms.queueConnection.queueConnectionFactoryJndiName</"
+"literal> &mdash; the JNDI name of a JMS <literal>QueueConnectionFactory</"
+"literal>. Default to <literal>UIL2ConnectionFactory</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1032
+#, no-c-format
+msgid "org.jboss.seam.jms.topicConnection"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1034
+#, no-c-format
+msgid ""
+"Manages a JMS <literal>TopicConnection</literal>. Installed whenever managed "
+"managed <literal>TopicPublisher</literal> is installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1039
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.jms.topicConnection.topicConnectionFactoryJndiName</"
+"literal> &mdash; the JNDI name of a JMS <literal>TopicConnectionFactory</"
+"literal>. Default to <literal>UIL2ConnectionFactory</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1047
+#, no-c-format
+msgid "org.jboss.seam.persistence.persistenceProvider"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1049
+#, no-c-format
+msgid "Abstraction layer for non-standardized features of JPA provider."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1055
+#, no-c-format
+msgid "org.jboss.seam.core.validation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1057
+#, no-c-format
+msgid "Internal component for Hibernate Validator support."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1063
+#, no-c-format
+msgid "org.jboss.seam.debug.introspector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1065 Components.xml:1073
+#, no-c-format
+msgid "Support for the Seam Debug Page."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1071
+#, no-c-format
+msgid "org.jboss.seam.debug.contexts"
+msgstr ""
+
+#. Tag: title
+#: Components.xml:1082
+#, no-c-format
+msgid "Special components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1083
+#, no-c-format
+msgid ""
+"Certain special Seam component classes are installable multiple times under "
+"names specified in the Seam configuration. For example, the following lines "
+"in <literal>components.xml</literal> install and configure two Seam "
+"components:"
+msgstr ""
+
+#. Tag: programlisting
+#: Components.xml:1086
+#, no-c-format
+msgid ""
+"&lt;component name=\"bookingDatabase\"\n"
+"          class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"    &lt;property name=\"persistenceUnitJndiName\"&gt;java:/comp/emf/"
+"bookingPersistence&lt;/property&gt;\n"
+"&lt;/component&gt;\n"
+"\n"
+"&lt;component name=\"userDatabase\"\n"
+"          class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"    &lt;property name=\"persistenceUnitJndiName\"&gt;java:/comp/emf/"
+"userPersistence&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1087
+#, no-c-format
+msgid ""
+"The Seam component names are <literal>bookingDatabase</literal> and "
+"<literal>userDatabase</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1092
+#, no-c-format
+msgid "&lt;entityManager&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1093
+#, no-c-format
+msgid "org.jboss.seam.core.ManagedPersistenceContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1095
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed <literal>EntityManager</"
+"literal> with an extended persistence context."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1100
+#, no-c-format
+msgid ""
+"<literal>&lt;entityManager&gt;.entityManagerFactory</literal> &mdash; a "
+"value binding expression that evaluates to an instance of "
+"<literal>EntityManagerFactory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1103
+#, no-c-format
+msgid ""
+"<literal>&lt;entityManager&gt;.persistenceUnitJndiName</literal> &mdash; the "
+"JNDI name of the entity manager factory, default to <literal>java:/&lt;"
+"managedPersistenceContext&gt;</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1111
+#, no-c-format
+msgid "&lt;entityManagerFactory&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1112
+#, no-c-format
+msgid "org.jboss.seam.core.EntityManagerFactory"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1114
+#, no-c-format
+msgid ""
+"Manages a JPA <literal>EntityManagerFactory</literal>. This is most useful "
+"when using JPA outside of an EJB 3.0 supporting environment."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1119
+#, no-c-format
+msgid ""
+"<literal>entityManagerFactory.persistenceUnitName</literal> &mdash; the name "
+"of the persistence unit."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1124 Components.xml:1162
+#, no-c-format
+msgid "See the API JavaDoc for further configuration properties."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1130
+#, no-c-format
+msgid "&lt;session&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1131
+#, no-c-format
+msgid "org.jboss.seam.core.ManagedSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1133
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed Hibernate "
+"<literal>Session</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1138
+#, no-c-format
+msgid ""
+"<literal>&lt;session&gt;.sessionFactory</literal> &mdash; a value binding "
+"expression that evaluates to an instance of <literal>SessionFactory</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1141
+#, no-c-format
+msgid ""
+"<literal>&lt;session&gt;.sessionFactoryJndiName</literal> &mdash; the JNDI "
+"name of the session factory, default to <literal>java:/&lt;managedSession&gt;"
+"</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1149
+#, no-c-format
+msgid "&lt;sessionFactory&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1150
+#, no-c-format
+msgid "org.jboss.seam.core.HibernateSessionFactory"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1152
+#, no-c-format
+msgid "Manages a Hibernate <literal>SessionFactory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1157
+#, no-c-format
+msgid ""
+"<literal>&lt;sessionFactory&gt;.cfgResourceName</literal> &mdash; the path "
+"to the configuration file. Default to <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1168
+#, no-c-format
+msgid "&lt;managedQueueSender&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1169
+#, no-c-format
+msgid "org.jboss.seam.jms.ManagedQueueSender"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1171
+#, no-c-format
+msgid ""
+"Manager component for an event scoped managed JMS <literal>QueueSender</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1176
+#, no-c-format
+msgid ""
+"<literal>&lt;managedQueueSender&gt;.queueJndiName</literal> &mdash; the JNDI "
+"name of the JMS queue."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1184
+#, no-c-format
+msgid "&lt;managedTopicPublisher&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1185
+#, no-c-format
+msgid "org.jboss.seam.jms.ManagedTopicPublisher"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1187
+#, no-c-format
+msgid ""
+"Manager component for an event scoped managed JMS <literal>TopicPublisher</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1192
+#, no-c-format
+msgid ""
+"<literal>&lt;managedTopicPublisher&gt;.topicJndiName</literal> &mdash; the "
+"JNDI name of the JMS topic."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1200
+#, no-c-format
+msgid "&lt;managedWorkingMemory&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1201
+#, no-c-format
+msgid "org.jboss.seam.drools.ManagedWorkingMemory"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1203
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed Drools "
+"<literal>WorkingMemory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1208
+#, no-c-format
+msgid ""
+"<literal>&lt;managedWorkingMemory&gt;.ruleBase</literal> &mdash; a value "
+"expression that evaluates to an instance of <literal>RuleBase</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1216
+#, no-c-format
+msgid "&lt;ruleBase&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1217
+#, no-c-format
+msgid "org.jboss.seam.drools.RuleBase"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1219
+#, no-c-format
+msgid ""
+"Manager component for an application scoped Drools <literal>RuleBase</"
+"literal>. <emphasis>Note that this is not really intended for production "
+"usage, since it does not support dynamic installation of new rules.</"
+"emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1224
+#, no-c-format
+msgid ""
+"<literal>&lt;ruleBase&gt;.ruleFiles</literal> &mdash; a list of files "
+"containing Drools rules."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1227
+#, no-c-format
+msgid ""
+"<literal>&lt;ruleBase&gt;.dslFile</literal> &mdash; a Drools DSL definition."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1235
+#, no-c-format
+msgid "&lt;entityHome&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1236
+#, no-c-format
+msgid "org.jboss.seam.framework.EntityHome"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1240
+#, no-c-format
+msgid "&lt;hibernateEntityHome&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1241
+#, no-c-format
+msgid "org.jboss.seam.framework.HibernateEntityHome"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1245
+#, no-c-format
+msgid "&lt;entityQuery&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1246
+#, no-c-format
+msgid "org.jboss.seam.framework.EntityQuery"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1250
+#, no-c-format
+msgid "&lt;hibernateEntityQuery&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1251
+#, no-c-format
+msgid "org.jboss.seam.framework.HibernateEntityQuery"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Concepts.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Concepts.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Concepts.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1922 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Concepts.xml:10
+#, no-c-format
+msgid "The contextual component model"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:11
+#, no-c-format
+msgid ""
+"The two core concepts in Seam are the notion of a <emphasis>context</"
+"emphasis> and the notion of a <emphasis>component</emphasis>. Components are "
+"stateful objects, usually EJBs, and an instance of a component is associated "
+"with a context, and given a name in that context. <emphasis>Bijection</"
+"emphasis> provides a mechanism for aliasing internal component names "
+"(instance variables) to contextual names, allowing component trees to be "
+"dynamically assembled, and reassembled by Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:14
+#, no-c-format
+msgid "Let's start by describing the contexts built in to Seam."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:17
+#, no-c-format
+msgid "Seam contexts"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:18
+#, no-c-format
+msgid ""
+"Seam contexts are created and destroyed by the framework. The application "
+"does not control context demarcation via explicit Java API calls. Context "
+"are usually implicit. In some cases, however, contexts are demarcated via "
+"annotations."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:21
+#, no-c-format
+msgid "The basic Seam contexts are:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:26
+#, no-c-format
+msgid "<para>Stateless context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:31
+#, no-c-format
+msgid "Event (or request) context"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:36 Concepts.xml:151
+#, no-c-format
+msgid "<para>Page context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:41 Concepts.xml:156
+#, no-c-format
+msgid "<para>Conversation context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:46 Concepts.xml:161
+#, no-c-format
+msgid "<para>Session context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:51 Concepts.xml:166
+#, no-c-format
+msgid "<para>Business process context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:56 Concepts.xml:171
+#, no-c-format
+msgid "<para>Application context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:61
+#, no-c-format
+msgid ""
+"You will recognize some of these contexts from servlet and related "
+"specifications. However, two of them might be new to you: "
+"<emphasis>conversation context</emphasis>, and <emphasis>business process "
+"context</emphasis>. One reason state management in web applications is so "
+"fragile and error-prone is that the three built-in contexts (request, "
+"session and application) are not especially meaningful from the point of "
+"view of the business logic. A user login session, for example, is a fairly "
+"arbitrary construct in terms of the actual application work flow. Therefore, "
+"most Seam components are scoped to the conversation or business process "
+"contexts, since they are the contexts which are most meaningful in terms of "
+"the application."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:64
+#, no-c-format
+msgid "Let's look at each context in turn."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:67
+#, no-c-format
+msgid "<title>Stateless context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:68
+#, no-c-format
+msgid ""
+"Components which are truly stateless (stateless session beans, primarily) "
+"always live in the stateless context (this is really a non-context). "
+"Stateless components are not very interesting, and are arguably not very "
+"object-oriented. Nevertheless, they are important and often useful."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:71
+#, no-c-format
+msgid "<title>Event context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:72
+#, no-c-format
+msgid ""
+"The event context is the \"narrowest\" stateful context, and is a "
+"generalization of the notion of the web request context to cover other kinds "
+"of events. Nevertheless, the event context associated with the lifecycle of "
+"a JSF request is the most important example of an event context, and the one "
+"you will work with most often. Components associated with the event context "
+"are destroyed at the end of the request, but their state is available and "
+"well-defined for at least the lifecycle of the request."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:75
+#, no-c-format
+msgid ""
+"When you invoke a Seam component via RMI, or Seam Remoting, the event "
+"context is created and destroyed just for the invocation."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:78
+#, no-c-format
+msgid "<title>Page context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:79
+#, no-c-format
+msgid ""
+"The page context allows you to associate state with a particular instance of "
+"a rendered page. You can initialize state in your event listener, or while "
+"actually rendering the page, and then have access to it from any event that "
+"originates from that page. This is especially useful for functionality like "
+"clickable lists, where the list is backed by changing data on the server "
+"side. The state is actually serialized to the client, so this construct is "
+"extremely robust with respect to multi-window operation and the back button."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:82
+#, no-c-format
+msgid "<title>Conversation context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:83
+#, no-c-format
+msgid ""
+"The conversation context is a truly central concept in Seam. A "
+"<emphasis>conversation</emphasis> is a unit of work from the point of view "
+"of the user. It might span several interactions with the user, several "
+"requests, and several database transactions. But to the user, a conversation "
+"solves a single problem. For example, \"book hotel\", \"approve contract\", "
+"\"create order\" are all conversations. You might like to think of a "
+"conversation implementing a single \"use case\" or \"user story\", but the "
+"relationship is not necessarily quite exact."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:86
+#, no-c-format
+msgid ""
+"A conversation holds state associated with \"what the user is doing now, in "
+"this window\". A single user may have multiple conversations in progress at "
+"any point in time, usually in multiple windows. The conversation context "
+"allows us to ensure that state from the different conversations does not "
+"collide and cause bugs."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:89
+#, no-c-format
+msgid ""
+"It might take you some time to get used to thinking of applications in terms "
+"of conversations. But once you get used to it, we think you'll love the "
+"notion, and never be able to not think in terms of conversations again!"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:92
+#, no-c-format
+msgid ""
+"Some conversations last for just a single request. Conversations that span "
+"multiple requests must be demarcated using annotations provided by Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:95
+#, no-c-format
+msgid ""
+"Some conversations are also <emphasis>tasks</emphasis>. A task is a "
+"conversation that is significant in terms of a long-running business "
+"process, and has the potential to trigger a business process state "
+"transition when it is successfully completed. Seam provides a special set of "
+"annotations for task demarcation."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:98
+#, no-c-format
+msgid ""
+"Conversations may be <emphasis>nested</emphasis>, with one conversation "
+"taking place \"inside\" a wider conversation. This is an advanced feature."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:101
+#, no-c-format
+msgid ""
+"Usually, conversation state is actually held by Seam in the servlet session "
+"between requests. Seam implements configurable <emphasis>conversation "
+"timeout</emphasis>, automatically destroying inactive conversations, and "
+"thus ensuring that the state held by a single user login session does not "
+"grow without bound if the user abandons conversations."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:104
+#, no-c-format
+msgid ""
+"Seam serializes processing of concurrent requests that take place in the "
+"same long-running conversation context, in the same process."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:107
+#, no-c-format
+msgid ""
+"Alternatively, Seam may be configured to keep conversational state in the "
+"client browser."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:110
+#, no-c-format
+msgid "<title>Session context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:111
+#, no-c-format
+msgid ""
+"A session context holds state associated with the user login session. While "
+"there are some cases where it is useful to share state between several "
+"conversations, we generally frown on the use of session context for holding "
+"components other than global information about the logged in user."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:114
+#, no-c-format
+msgid ""
+"In a JSR-168 portal environment, the session context represents the portlet "
+"session."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:117
+#, no-c-format
+msgid "<title>Business process context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:118
+#, no-c-format
+msgid ""
+"The business process context holds state associated with the long running "
+"business process. This state is managed and made persistent by the BPM "
+"engine (JBoss jBPM). The business process spans multiple interactions with "
+"multiple users, so this state is shared between multiple users, but in a "
+"well-defined manner. The current task determines the current business "
+"process instance, and the lifecycle of the business process is defined "
+"externally using a <emphasis>process definition language</emphasis>, so "
+"there are no special annotations for business process demarcation."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:121
+#, no-c-format
+msgid "<title>Application context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:122
+#, no-c-format
+msgid ""
+"The application context is the familiar servlet context from the servlet "
+"spec. Application context is mainly useful for holding static information "
+"such as configuration data, reference data or metamodels. For example, Seam "
+"stores its own configuration and metamodel in the application context."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:125
+#, no-c-format
+msgid "Context variables"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:126
+#, no-c-format
+msgid ""
+"A context defines a namespace, a set of <emphasis>context variables</"
+"emphasis>. These work much the same as session or request attributes in the "
+"servlet spec. You may bind any value you like to a context variable, but "
+"usually we bind Seam component instances to context variables."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:129
+#, no-c-format
+msgid ""
+"So, within a context, a component instance is identified by the context "
+"variable name (this is usually, but not always, the same as the component "
+"name). You may programatically access a named component instance in a "
+"particular scope via the <literal>Contexts</literal> class, which provides "
+"access to several thread-bound instances of the <literal>Context</literal> "
+"interface:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:132
+#, no-c-format
+msgid "User user = (User) Contexts.getSessionContext().get(\"user\");"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:133
+#, no-c-format
+msgid "You may also set or change the value associated with a name:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:136
+#, no-c-format
+msgid "Contexts.getSessionContext().set(\"user\", user);"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:137
+#, no-c-format
+msgid ""
+"Usually, however, we obtain components from a context via injection, and put "
+"component instances into a context via outjection."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:140
+#, no-c-format
+msgid "Context search priority"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:141
+#, no-c-format
+msgid ""
+"Sometimes, as above, component instances are obtained from a particular "
+"known scope. Other times, all stateful scopes are searched, in "
+"<emphasis>priority order</emphasis>. The order is as follows:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:146
+#, no-c-format
+msgid "<para>Event context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:176
+#, no-c-format
+msgid ""
+"You can perform a priority search by calling <literal>Contexts."
+"lookupInStatefulContexts()</literal>. Whenever you access a component by "
+"name from a JSF page, a priority search occurs."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:179
+#, no-c-format
+msgid "Concurrency model"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:180
+#, no-c-format
+msgid ""
+"Neither the servlet nor EJB specifications define any facilities for "
+"managing concurrent requests originating from the same client. The servlet "
+"container simply lets all threads run concurrently and leaves enforcing "
+"threadsafeness to application code. The EJB container allows stateless "
+"components to be accessed concurrently, and throws an exception if multiple "
+"threads access a stateful session bean."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:183
+#, no-c-format
+msgid ""
+"This behavior might have been okay in old-style web applications which were "
+"based around fine-grained, synchronous requests. But for modern applications "
+"which make heavy use of many fine-grained, asynchronous (AJAX) requests, "
+"concurrency is a fact of life, and must be supported by the programming "
+"model. Seam weaves a concurrency management layer into its context model."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:186
+#, no-c-format
+msgid ""
+"The Seam session and application contexts are multithreaded. Seam will allow "
+"concurrent requests in a context to be processed concurrently. The event and "
+"page contexts are by nature single threaded. The business process context is "
+"strictly speaking multi-threaded, but in practice concurrency is "
+"sufficiently rare that this fact may be disregarded most of the time. "
+"Finally, Seam enforces a <emphasis>single thread per conversation per "
+"process</emphasis> model for the conversation context by serializing "
+"concurrent requests in the same long-running conversation context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:189
+#, no-c-format
+msgid ""
+"Since the session context is multithreaded, and often contains volatile "
+"state, session scope components are always protected by Seam from concurrent "
+"access. Seam serializes requests to session scope session beans and "
+"JavaBeans by default (and detects and breaks any deadlocks that occur). This "
+"is not the default behaviour for application scoped components however, "
+"since application scoped components do not usually hold volatile state and "
+"because synchronization at the global level is <emphasis>extremely</"
+"emphasis> expensive. However, you can force a serialized threading model on "
+"any session bean or JavaBean component by adding the <literal>@Synchronized</"
+"literal> annotation."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:192
+#, no-c-format
+msgid ""
+"This concurrency model means that AJAX clients can safely use volatile "
+"session and conversational state, without the need for any special work on "
+"the part of the developer."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:195
+#, no-c-format
+msgid "Seam components"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:196
+#, no-c-format
+msgid ""
+"Seam components are POJOs (Plain Old Java Objects). In particular, they are "
+"JavaBeans or EJB 3.0 enterprise beans. While Seam does not require that "
+"components be EJBs and can even be used without an EJB 3.0 compliant "
+"container, Seam was designed with EJB 3.0 in mind and includes deep "
+"integration with EJB 3.0. Seam supports the following <emphasis>component "
+"types</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:201
+#, no-c-format
+msgid "EJB 3.0 stateless session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:206
+#, no-c-format
+msgid "EJB 3.0 stateful session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:211
+#, no-c-format
+msgid "EJB 3.0 entity beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:216
+#, no-c-format
+msgid "<para>JavaBeans</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:221
+#, no-c-format
+msgid "EJB 3.0 message-driven beans"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:226
+#, no-c-format
+msgid "Stateless session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:227
+#, no-c-format
+msgid ""
+"Stateless session bean components are not able to hold state across multiple "
+"invocations. Therefore, they usually work by operating upon the state of "
+"other components in the various Seam contexts. They may be used as JSF "
+"action listeners, but cannot provide properties to JSF components for "
+"display."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:230
+#, no-c-format
+msgid "Stateless session beans always live in the stateless context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:233
+#, no-c-format
+msgid ""
+"Stateless session beans are the least interesting kind of Seam component."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:236
+#, no-c-format
+msgid "Stateful session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:237
+#, no-c-format
+msgid ""
+"Stateful session bean components are able to hold state not only across "
+"multiple invocations of the bean, but also across multiple requests. "
+"Application state that does not belong in the database should usually be "
+"held by stateful session beans. This is a major difference between Seam and "
+"many other web application frameworks. Instead of sticking information about "
+"the current conversation directly in the <literal>HttpSession</literal>, you "
+"should keep it in instance variables of a stateful session bean that is "
+"bound to the conversation context. This allows Seam to manage the lifecycle "
+"of this state for you, and ensure that there are no collisions between state "
+"relating to different concurrent conversations."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:240
+#, no-c-format
+msgid ""
+"Stateful session beans are often used as JSF action listener, and as backing "
+"beans that provide properties to JSF components for display or form "
+"submission."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:243
+#, no-c-format
+msgid ""
+"By default, stateful session beans are bound to the conversation context. "
+"They may never be bound to the page or stateless contexts."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:246
+#, no-c-format
+msgid ""
+"Concurrent requests to session-scoped stateful session beans are always "
+"serialized by Seam."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:249
+#, no-c-format
+msgid "Entity beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:250
+#, no-c-format
+msgid ""
+"Entity beans may be bound to a context variable and function as a seam "
+"component. Because entities have a persistent identity in addition to their "
+"contextual identity, entity instances are usually bound explicitly in Java "
+"code, rather than being instantiated implicitly by Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:253
+#, no-c-format
+msgid ""
+"Entity bean components do not support bijection or context demarcation. Nor "
+"does invocation of an entity bean trigger validation."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:256
+#, no-c-format
+msgid ""
+"Entity beans are not usually used as JSF action listeners, but do often "
+"function as backing beans that provide properties to JSF components for "
+"display or form submission. In particular, it is common to use an entity as "
+"a backing bean, together with a stateless session bean action listener to "
+"implement create/update/delete type functionality."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:259
+#, no-c-format
+msgid ""
+"By default, entity beans are bound to the conversation context. They may "
+"never be bound to the stateless context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:262
+#, no-c-format
+msgid ""
+"Note that it in a clustered environment is somewhat less efficient to bind "
+"an entity bean directly to a conversation or session scoped Seam context "
+"variable than it would be to hold a reference to the entity bean in a "
+"stateful session bean. For this reason, not all Seam applications define "
+"entity beans to be Seam components."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:265
+#, no-c-format
+msgid "<title>JavaBeans</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:266
+#, no-c-format
+msgid ""
+"Javabeans may be used just like a stateless or stateful session bean. "
+"However, they do not provide the functionality of a session bean "
+"(declarative transaction demarcation, declarative security, efficient "
+"clustered state replication, EJB 3.0 persistence, timeout methods, etc)."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:269
+#, no-c-format
+msgid ""
+"In a later chapter, we show you how to use Seam and Hibernate without an EJB "
+"container. In this use case, components are JavaBeans instead of session "
+"beans. Note, however, that in many application servers it is somewhat less "
+"efficient to cluster conversation or session scoped Seam JavaBean components "
+"than it is to cluster stateful session bean components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:272
+#, no-c-format
+msgid "By default, JavaBeans are bound to the event context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:275
+#, no-c-format
+msgid ""
+"Concurrent requests to session-scoped JavaBeans are always serialized by "
+"Seam."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:278
+#, no-c-format
+msgid "Message-driven beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:279
+#, no-c-format
+msgid ""
+"Message-driven beans may function as a seam component. However, message-"
+"driven beans are called quite differently to other Seam components - instead "
+"of invoking them via the context variable, they listen for messages sent to "
+"a JMS queue or topic."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:282
+#, no-c-format
+msgid ""
+"Message-driven beans may not be bound to a Seam context. Nor do they have "
+"access to the session or conversation state of their \"caller\". However, "
+"they do support bijection and some other Seam functionality."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:285
+#, no-c-format
+msgid "Interception"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:286
+#, no-c-format
+msgid ""
+"In order to perform its magic (bijection, context demarcation, validation, "
+"etc), Seam must intercept component invocations. For JavaBeans, Seam is in "
+"full control of instantiation of the component, and no special configuration "
+"is needed. For entity beans, interception is not required since bijection "
+"and context demarcation are not defined. For session beans, we must register "
+"an EJB interceptor for the session bean component. We could use an "
+"annotation, as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:289
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:290
+#, no-c-format
+msgid ""
+"But a much better way is to define the interceptor in <literal>ejb-jar.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:293
+#, no-c-format
+msgid ""
+"&lt;interceptors&gt;\n"
+"   &lt;interceptor&gt;\n"
+"      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"   &lt;/interceptor&gt;\n"
+"&lt;/interceptors&gt;\n"
+"   \n"
+"&lt;assembly-descriptor&gt;\n"
+"   &lt;interceptor-binding&gt;\n"
+"      &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"   &lt;/interceptor-binding&gt;\n"
+"&lt;/assembly-descriptor&gt;"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:294
+#, no-c-format
+msgid "Component names"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:295
+#, no-c-format
+msgid ""
+"All seam components need a name. We can assign a name to a component using "
+"the <literal>@Name</literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:298
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:299
+#, no-c-format
+msgid ""
+"This name is the <emphasis>seam component name</emphasis> and is not related "
+"to any other name defined by the EJB specification. However, seam component "
+"names work just like JSF managed bean names and you can think of the two "
+"concepts as identical."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:302
+#, no-c-format
+msgid ""
+"<literal>@Name</literal> is not the only way to define a component name, but "
+"we always need to specify the name <emphasis>somewhere</emphasis>. If we "
+"don't, then none of the other Seam annotations will function."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:305
+#, no-c-format
+msgid ""
+"Just like in JSF, a seam component instance is usually bound to a context "
+"variable with the same name as the component name. So, for example, we would "
+"access the <literal>LoginAction</literal> using <literal>Contexts."
+"getStatelessContext().get(\"loginAction\")</literal>. In particular, "
+"whenever Seam itself instantiates a component, it binds the new instance to "
+"a variable with the component name. However, again like JSF, it is possible "
+"for the application to bind a component to some other context variable by "
+"programmatic API call. This is only useful if a particular component serves "
+"more than one role in the system. For example, the currently logged in "
+"<literal>User</literal> might be bound to the <literal>currentUser</literal> "
+"session context variable, while a <literal>User</literal> that is the "
+"subject of some administration functionality might be bound to the "
+"<literal>user</literal> conversation context variable."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:308
+#, no-c-format
+msgid ""
+"For very large applications, and for built-in seam components, qualified "
+"names are often used."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:311
+#, no-c-format
+msgid ""
+"@Name(\"com.jboss.myapp.loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:312
+#, no-c-format
+msgid ""
+"We may use the qualified component name both in Java code and in JSF's "
+"expression language:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:315
+#, no-c-format
+msgid ""
+"&lt;h:commandButton type=\"submit\" value=\"Login\"\n"
+"                 action=\"#{com.jboss.myapp.loginAction.login}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:316
+#, no-c-format
+msgid ""
+"Since this is noisy, Seam also provides a means of aliasing a qualified name "
+"to a simple name. Add a line like this to the <literal>components.xml</"
+"literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:319
+#, no-c-format
+msgid ""
+"&lt;factory name=\"loginAction\" scope=\"STATELESS\" value=\"#{com.jboss."
+"myapp.loginAction}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:320
+#, no-c-format
+msgid ""
+"All of the built-in Seam components have qualified names, but most of them "
+"are aliased to a simple name by the <literal>components.xml</literal> file "
+"included in the Seam jar."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:323
+#, no-c-format
+msgid "Defining the component scope"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:324
+#, no-c-format
+msgid ""
+"We can override the default scope (context) of a component using the "
+"<literal>@Scope</literal> annotation. This lets us define what context a "
+"component instance is bound to, when it is instantiated by Seam."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:327
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(SESSION)\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:328
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.ScopeType</literal> defines an enumeration of "
+"possible scopes."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:331
+#, no-c-format
+msgid "Components with multiple roles"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:332
+#, no-c-format
+msgid ""
+"Some Seam component classes can fulfill more than one role in the system. "
+"For example, we often have a <literal>User</literal> class which is usually "
+"used as a session-scoped component representing the current user but is used "
+"in user administration screens as a conversation-scoped component. The "
+"<literal>@Role</literal> annotation lets us define an additional named role "
+"for a component, with a different scope&mdash;it lets us bind the same "
+"component class to different context variables. (Any Seam component "
+"<emphasis>instance</emphasis> may be bound to multiple context variables, "
+"but this lets us do it at the class level, and take advantage of auto-"
+"instantiation.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:335
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(CONVERSATION)\n"
+"@Role(name=\"currentUser\", scope=SESSION)\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:336
+#, no-c-format
+msgid ""
+"The <literal>@Roles</literal> annotation lets us specify as many additional "
+"roles as we like."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:339
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(CONVERSATION)\n"
+"@Roles({@Role(name=\"currentUser\", scope=SESSION)\n"
+"        @Role(name=\"tempUser\", scope=EVENT)})\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:340
+#, no-c-format
+msgid "Built-in components"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:341
+#, no-c-format
+msgid ""
+"Like many good frameworks, Seam eats its own dogfood and is implemented "
+"mostly as a set of built-in Seam interceptors (see later) and Seam "
+"components. This makes it easy for applications to interact with built-in "
+"components at runtime or even customize the basic functionality of Seam by "
+"replacing the built-in components with custom implementations. The built-in "
+"components are defined in the Seam namespace <literal>org.jboss.seam.core</"
+"literal> and the Java package of the same name."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:344
+#, no-c-format
+msgid ""
+"The built-in components may be injected, just like any Seam components, but "
+"they also provide convenient static <literal>instance()</literal> methods:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:347
+#, no-c-format
+msgid "FacesMessages.instance().add(\"Welcome back, #{user.name}!\");"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:348
+#, no-c-format
+msgid ""
+"Seam was designed to integrate tightly in a Java EE 5 environment. However, "
+"we understand that there are many projects which are not running in a full "
+"EE environment. We also realize the critical importance of easy unit and "
+"integration testing using frameworks such as TestNG and JUnit. So, we've "
+"made it easy to run Seam in Java SE environments by allowing you to boostrap "
+"certain critical infrastructure normally only found in EE environments by "
+"installing built-in Seam components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:351
+#, no-c-format
+msgid ""
+"For example, you can run your EJB3 components in Tomcat or an integration "
+"test suite just by installing the built-in component <literal>org.jboss.seam."
+"core.ejb</literal>, which automatically bootstraps the JBoss Embeddable EJB3 "
+"container and deploys your EJB components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:354
+#, no-c-format
+msgid ""
+"Or, if you're not quite ready for the Brave New World of EJB 3.0, you can "
+"write a Seam application that uses only JavaBean components, together with "
+"Hibernate3 for persistence, by installing a built-in component that manages "
+"a Hibernate <literal>SessionFactory</literal>. When using Hibernate outside "
+"of a J2EE environment, you will also probably need a JTA transaction manager "
+"and JNDI server, which are available via the built-in component <literal>org."
+"jboss.seam.core.microcontainer</literal>. This lets you use the bulletproof "
+"JTA/JCA pooling datasource from JBoss application server in an SE "
+"environment like Tomcat!"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:357
+#, no-c-format
+msgid "Bijection"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:358
+#, no-c-format
+msgid ""
+"<emphasis>Dependency injection</emphasis> or <emphasis>inversion of control</"
+"emphasis> is by now a familiar concept to most Java developers. Dependency "
+"injection allows a component to obtain a reference to another component by "
+"having the container \"inject\" the other component to a setter method or "
+"instance variable. In all dependency injection implementations that we have "
+"seen, injection occurs when the component is constructed, and the reference "
+"does not subsequently change for the lifetime of the component instance. For "
+"stateless components, this is reasonable. From the point of view of a "
+"client, all instances of a particular stateless component are "
+"interchangeable. On the other hand, Seam emphasizes the use of stateful "
+"components. So traditional dependency injection is no longer a very useful "
+"construct. Seam introduces the notion of <emphasis>bijection</emphasis> as a "
+"generalization of injection. In contrast to injection, bijection is:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:363
+#, no-c-format
+msgid ""
+"<emphasis>contextual</emphasis> - bijection is used to assemble stateful "
+"components from various different contexts (a component from a \"wider\" "
+"context may even have a reference to a component from a \"narrower\" context)"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:368
+#, no-c-format
+msgid ""
+"<emphasis>bidirectional</emphasis> - values are injected from context "
+"variables into attributes of the component being invoked, and also "
+"<emphasis>outjected</emphasis> from the component attributes back out to the "
+"context, allowing the component being invoked to manipulate the values of "
+"contextual variables simply by setting its own instance variables"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:373
+#, no-c-format
+msgid ""
+"<emphasis>dynamic</emphasis> - since the value of contextual variables "
+"changes over time, and since Seam components are stateful, bijection takes "
+"place every time a component is invoked"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:378
+#, no-c-format
+msgid ""
+"In essence, bijection lets you alias a context variable to a component "
+"instance variable, by specifying that the value of the instance variable is "
+"injected, outjected, or both. Of course, we use annotations to enable "
+"bijection."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:381
+#, no-c-format
+msgid ""
+"The <literal>@In</literal> annotation specifies that a value should be "
+"injected, either into an instance variable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:384
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:385
+#, no-c-format
+msgid "or into a setter method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:388
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @In\n"
+"    public void setUser(User user) {\n"
+"        this.user=user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:389
+#, no-c-format
+msgid ""
+"By default, Seam will do a priority search of all contexts, using the name "
+"of the property or instance variable that is being injected. You may wish to "
+"specify the context variable name explicitly, using, for example, "
+"<literal>@In(\"currentUser\")</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:392
+#, no-c-format
+msgid ""
+"If you want Seam to create an instance of the component when there is no "
+"existing component instance bound to the named context variable, you should "
+"specify <literal>@In(create=true)</literal>. If the value is optional (it "
+"can be null), specify <literal>@In(required=false)</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:395
+#, no-c-format
+msgid ""
+"For some components, it can be repetitive to have to specify <literal>@In"
+"(create=true)</literal> everywhere they are used. In such cases, you can "
+"annotate the component <literal>@AutoCreate</literal>, and then it will "
+"always be created, whenever needed, even without the explicit use of "
+"<literal>create=true</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:398
+#, no-c-format
+msgid "You can even inject the value of an expression:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:401
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In(\"#{user.username}\") String username;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:402
+#, no-c-format
+msgid ""
+"(There is much more information about component lifecycle and injection in "
+"the next chapter.)"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:405
+#, no-c-format
+msgid ""
+"The <literal>@Out</literal> annotation specifies that an attribute should be "
+"outjected, either from an instance variable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:408
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @Out User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:409
+#, no-c-format
+msgid "or from a getter method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:412
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @Out\n"
+"    public User getUser() {\n"
+"        return user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:413
+#, no-c-format
+msgid "An attribute may be both injected and outjected:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:416
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In @Out User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:417
+#, no-c-format
+msgid "<para>or:</para>"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:420
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @In\n"
+"    public void setUser(User user) {\n"
+"        this.user=user;\n"
+"    }\n"
+"    \n"
+"    @Out\n"
+"    public User getUser() {\n"
+"        return user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:421
+#, no-c-format
+msgid "Lifecycle methods"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:422
+#, no-c-format
+msgid ""
+"Session bean and entity bean Seam components support all the usual EJB 3.0 "
+"lifecycle callback (<literal>@PostConstruct</literal>, <literal>@PreDestroy</"
+"literal>, etc). Seam extends all of these callbacks except "
+"<literal>@PreDestroy</literal> to JavaBean components. But Seam also defines "
+"its own component lifecycle callbacks."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:425
+#, no-c-format
+msgid ""
+"The <literal>@Create</literal> method is called every time Seam instantiates "
+"a component. Unlike the <literal>@PostConstruct</literal> method, this "
+"method is called after the component is fully constructed by the EJB "
+"container, and has access to all the usual Seam functionality (bijection, "
+"etc). Components may define only one <literal>@Create</literal> method."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:428
+#, no-c-format
+msgid ""
+"The <literal>@Destroy</literal> method is called when the context that the "
+"Seam component is bound to ends. Components may define only one "
+"<literal>@Destroy</literal> method. Stateful session bean components "
+"<emphasis>must</emphasis> define a method annotated <literal>@Destroy "
+"@Remove</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:431
+#, no-c-format
+msgid ""
+"Finally, a related annotation is the <literal>@Startup</literal> annotation, "
+"which may be applied to any application or session scoped component. The "
+"<literal>@Startup</literal> annotation tells Seam to instantiate the "
+"component immediately, when the context begins, instead of waiting until it "
+"is first referenced by a client. It is possible to control the order of "
+"instantiation of startup components by specifying <literal>@Startup(depends="
+"{....})</literal>."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:434
+#, no-c-format
+msgid "Conditional installation"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:435
+#, no-c-format
+msgid ""
+"The <literal>@Install</literal> annotation lets you control conditional "
+"installation of components that are required in some deployment scenarios "
+"and not in others. This is useful if:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:440
+#, no-c-format
+msgid "You want to mock out some infrastructural component in tests."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:445
+#, no-c-format
+msgid ""
+"You want change the implementation of a component in certain deployment "
+"scenarios."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:450
+#, no-c-format
+msgid ""
+"You want to install some components only if their dependencies are available "
+"(useful for framework authors)."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:455
+#, no-c-format
+msgid ""
+"<literal>@Install</literal> works by letting you specify "
+"<emphasis>precedence</emphasis> and <emphasis>dependencies</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:458
+#, no-c-format
+msgid ""
+"The precedence of a component is a number that Seam uses to decide which "
+"component to install when there are multiple classes with the same component "
+"name in the classpath. Seam will choose the component with the higher "
+"precendence. There are some predefined precedence values:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:463
+#, no-c-format
+msgid ""
+"<literal>BUILT_IN</literal> &mdash; the lowest precedece components are the "
+"components built in to Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:468
+#, no-c-format
+msgid ""
+"<literal>FRAMEWORK</literal> &mdash; components defined by third-party "
+"frameworks may override built-in components, but are overridden by "
+"application components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:473
+#, no-c-format
+msgid ""
+"<literal>APPLICATION</literal> &mdash; the default precedence. This is "
+"appropriate for most application components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:478
+#, no-c-format
+msgid ""
+"<literal>DEPLOYMENT</literal> &mdash; for application components which are "
+"deployment-specific."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:483
+#, no-c-format
+msgid "<literal>MOCK</literal> &mdash; for mock objects used in testing."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:488
+#, no-c-format
+msgid ""
+"Suppose we have a component named <literal>messageSender</literal> that "
+"talks to a JMS queue."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:491
+#, no-c-format
+msgid ""
+"@Name(\"messageSender\") \n"
+"public class MessageSender {\n"
+"    public void sendMessage() {\n"
+"        //do something with JMS\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:492
+#, no-c-format
+msgid ""
+"In our unit tests, we don't have a JMS queue available, so we would like to "
+"stub out this method. We'll create a <emphasis>mock</emphasis> component "
+"that exists in the classpath when unit tests are running, but is never "
+"deployed with the application:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:495
+#, no-c-format
+msgid ""
+"@Name(\"messageSender\") \n"
+"@Install(precedence=MOCK)\n"
+"public class MockMessageSender extends MessageSender {\n"
+"    public void sendMessage() {\n"
+"        //do nothing!\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:496
+#, no-c-format
+msgid ""
+"The <literal>precedence</literal> helps Seam decide which version to use "
+"when it finds both components in the classpath."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:499
+#, no-c-format
+msgid ""
+"This is nice if we are able to control exactly which classes are in the "
+"classpath. But if I'm writing a reusable framework with many dependecies, I "
+"don't want to have to break that framework across many jars. I want to be "
+"able to decide which components to install depending upon what other "
+"components are installed, and upon what classes are available in the "
+"classpath. The <literal>@Install</literal> annotation also controls this "
+"functionality. Seam uses this mechanism internally to enable conditional "
+"installation of many of the built-in components. However, you probably won't "
+"need to use it in your application."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:502
+#, no-c-format
+msgid "Logging"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:503
+#, no-c-format
+msgid "Who is not totally fed up with seeing noisy code like this?"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:506
+#, no-c-format
+msgid ""
+"private static final Log log = LogFactory.getLog(CreateOrderAction.class);\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    if ( log.isDebugEnabled() ) {\n"
+"        log.debug(\"Creating new order for user: \" + user.username() + \n"
+"            \" product: \" + product.name() \n"
+"            + \" quantity: \" + quantity);\n"
+"    }\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:507
+#, no-c-format
+msgid ""
+"It is difficult to imagine how the code for a simple log message could "
+"possibly be more verbose. There is more lines of code tied up in logging "
+"than in the actual business logic! I remain totally astonished that the Java "
+"community has not come up with anything better in 10 years."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:510
+#, no-c-format
+msgid ""
+"Seam provides a logging API built on top of Apache commons-logging that "
+"simplifies this code significantly:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:513
+#, no-c-format
+msgid ""
+"@Logger private Log log;\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    log.debug(\"Creating new order for user: #0 product: #1 quantity: #2\", "
+"user.username(), \n"
+"       product.name(), quantity);\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:514
+#, no-c-format
+msgid ""
+"It doesn't matter if you declare the <literal>log</literal> variable static "
+"or not&mdash;it will work either way."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:517
+#, no-c-format
+msgid ""
+"Note that we don't need the noisy <literal>if ( log.isDebugEnabled() )</"
+"literal> guard, since string concatenation happens <emphasis>inside</"
+"emphasis> the <literal>debug()</literal> method. Note also that we don't "
+"usually need to specify the log category explicitly, since Seam knows what "
+"component it is injecting the <literal>Log</literal> into."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:520
+#, no-c-format
+msgid ""
+"If <literal>User</literal> and <literal>Product</literal> are Seam "
+"components available in the current contexts, it gets even better:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:523
+#, no-c-format
+msgid ""
+"@Logger private Log log;\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    log.debug(\"Creating new order for user: #{user.username} product: #"
+"{product.name}\n"
+"       quantity: #0\", quantity);\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:524
+#, no-c-format
+msgid ""
+"The <literal>Mutable</literal> interface and <literal>@ReadOnly</literal>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:525
+#, no-c-format
+msgid ""
+"Many application servers feature an amazingly broken implementation of "
+"<literal>HttpSession</literal> clustering, where changes to the state of "
+"mutable objects bound to the session are only replicated when the "
+"application calls <literal>setAttribute()</literal> explicitly. This is a "
+"source of bugs that can not effectively be tested for at development time, "
+"since they will only manifest when failover occurs. Furthermore, the actual "
+"replication message contains the entire serialized object graph bound to the "
+"session attribute, which is inefficient."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:528
+#, no-c-format
+msgid ""
+"Of course, EJB stateful session beans must perform automatic dirty checking "
+"and replication of mutable state and a sophisticated EJB container can "
+"introduce optimizations such as attribute-level replication. Unfortunately, "
+"not all Seam users have the good fortune to be working in an environment "
+"that supports EJB 3.0. So, for session and conversation scoped JavaBean and "
+"entity bean components, Seam provides an extra layer of cluster-safe state "
+"management over the top of the web container session clustering."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:531
+#, no-c-format
+msgid ""
+"For session or conversation scoped JavaBean components, Seam automatically "
+"forces replication to occur by calling <literal>setAttribute()</literal> "
+"once in every request that the component was invoked by the application. Of "
+"course, this strategy is inefficient for read-mostly components. You can "
+"control this behavior by implementing the <literal>org.jboss.seam.core."
+"Mutable</literal> interface, or by extending <literal>org.jboss.seam.core."
+"AbstractMutable</literal>, and writing your own dirty-checking logic inside "
+"the component. For example,"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:534
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class Account extends AbstractMutable\n"
+"{\n"
+"    private BigDecimal balance;\n"
+"    \n"
+"    public void setBalance(BigDecimal balance)\n"
+"    {\n"
+"        setDirty(this.balance, balance);\n"
+"        this.balance = balance;\n"
+"    }\n"
+"    \n"
+"    public BigDecimal getBalance()\n"
+"    {\n"
+"        return balance;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:535
+#, no-c-format
+msgid ""
+"Or, you can use the <literal>@ReadOnly</literal> annotation to achieve a "
+"similar effect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:538
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class Account\n"
+"{\n"
+"    private BigDecimal balance;\n"
+"    \n"
+"    public void setBalance(BigDecimal balance)\n"
+"    {\n"
+"        this.balance = balance;\n"
+"    }\n"
+"    \n"
+"    @ReadOnly\n"
+"    public BigDecimal getBalance()\n"
+"    {\n"
+"        return balance;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:539
+#, no-c-format
+msgid ""
+"For session or conversation scoped entity bean components, Seam "
+"automatically forces replication to occur by calling <literal>setAttribute()"
+"</literal> once in every request, <emphasis>unless the (conversation-scoped) "
+"entity is currently associated with a Seam-managed persistence context, in "
+"which case no replication is needed</emphasis>. This strategy is not "
+"necessarily efficient, so session or conversation scope entity beans should "
+"be used with care. You can always write a stateful session bean or JavaBean "
+"component to \"manage\" the entity bean instance. For example,"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:542
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"account\")\n"
+"public class AccountManager extends AbstractMutable\n"
+"{\n"
+"    private Account account; // an entity bean\n"
+"    \n"
+"    @Unwrap\n"
+"    public void getAccount()\n"
+"    {\n"
+"        return account;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:543
+#, no-c-format
+msgid ""
+"Note that the <literal>EntityHome</literal> class in the Seam Application "
+"Framework provides a great example of this pattern."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:546
+#, no-c-format
+msgid "Factory and manager components"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:547
+#, no-c-format
+msgid ""
+"We often need to work with objects that are not Seam components. But we "
+"still want to be able to inject them into our components using <literal>@In</"
+"literal> and use them in value and method binding expressions, etc. "
+"Sometimes, we even need to tie them into the Seam context lifecycle "
+"(<literal>@Destroy</literal>, for example). So the Seam contexts can contain "
+"objects which are not Seam components, and Seam provides a couple of nice "
+"features that make it easier to work with non-component objects bound to "
+"contexts."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:550
+#, no-c-format
+msgid ""
+"The <emphasis>factory component pattern</emphasis> lets a Seam component act "
+"as the instantiator for a non-component object. A <emphasis>factory method</"
+"emphasis> will be called when a context variable is referenced but has no "
+"value bound to it. We define factory methods using the <literal>@Factory</"
+"literal> annotation. The factory method binds a value to the context "
+"variable, and determines the scope of the bound value. There are two styles "
+"of factory method. The first style returns a value, which is bound to the "
+"context by Seam:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:553
+#, no-c-format
+msgid ""
+"@Factory(scope=CONVERSATION)\n"
+"public List&lt;Customer&gt; getCustomerList() { \n"
+"    return ... ;\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:554
+#, no-c-format
+msgid ""
+"The second style is a method of type <literal>void</literal> which binds the "
+"value to the context variable itself:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:557
+#, no-c-format
+msgid ""
+"@DataModel List&lt;Customer&gt; customerList;\n"
+"\n"
+"@Factory(\"customerList\")\n"
+"public void initCustomerList() { \n"
+"    customerList = ...  ;\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:558
+#, no-c-format
+msgid ""
+"In both cases, the factory method is called when we reference the "
+"<literal>customerList</literal> context variable and its value is null, and "
+"then has no further part to play in the lifecycle of the value. An even more "
+"powerful pattern is the <emphasis>manager component pattern</emphasis>. In "
+"this case, we have a Seam component that is bound to a context variable, "
+"that manages the value of the context variable, while remaining invisible to "
+"clients."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:561
+#, no-c-format
+msgid ""
+"A manager component is any component with an <literal>@Unwrap</literal> "
+"method. This method returns the value that will be visable to clients, and "
+"is called <emphasis>every time</emphasis> a context variable is referenced."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:564
+#, no-c-format
+msgid ""
+"@Name(\"customerList\")\n"
+"@Scope(CONVERSATION)\n"
+"public class CustomerListManager\n"
+"{\n"
+"    ...\n"
+"    \n"
+"    @Unwrap\n"
+"    public List&lt;Customer&gt; getCustomerList() { \n"
+"        return ... ;\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:565
+#, no-c-format
+msgid ""
+"This pattern is especially useful if we have some heavyweight object that "
+"needs a cleanup operation when the context ends. In this case, the manager "
+"component may perform cleanup in the <literal>@Destroy</literal> method."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Configuration.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Configuration.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Configuration.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1435 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Configuration.xml:10
+#, no-c-format
+msgid "Configuring Seam and packaging Seam applications"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:11
+#, no-c-format
+msgid ""
+"Configuration is a very boring topic and an extremely tedious pastime. "
+"Unfortunately, several lines of XML are required to integrate Seam into your "
+"JSF implementation and servlet container. There's no need to be too put off "
+"by the following sections; you'll never need to type any of this stuff "
+"yourself, since you can just copy and paste from the example applications!"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:14
+#, no-c-format
+msgid "Basic Seam configuration"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:15
+#, no-c-format
+msgid ""
+"First, let's look at the basic configuration that is needed whenever we use "
+"Seam with JSF."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:18
+#, no-c-format
+msgid "Integrating Seam with JSF and your servlet container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:19
+#, no-c-format
+msgid ""
+"Seam requires the following entry in your <literal>web.xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:22
+#, no-c-format
+msgid ""
+"&lt;listener&gt;\n"
+"    &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/listener-"
+"class&gt;\n"
+"&lt;/listener&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:23
+#, no-c-format
+msgid ""
+"This listener is responsible for bootstrapping Seam, and for destroying "
+"session and application contexts."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:26
+#, no-c-format
+msgid ""
+"To integrate with the JSF request lifecycle, we also need a JSF "
+"<literal>PhaseListener</literal> registered in in the <literal>faces-config."
+"xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:29
+#, no-c-format
+msgid ""
+"&lt;lifecycle&gt;\n"
+"    &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-"
+"listener&gt;\n"
+"&lt;/lifecycle&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:30
+#, no-c-format
+msgid ""
+"The actual listener class here varies depending upon how you want to manage "
+"transaction demarcation (more on this below)."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:33
+#, no-c-format
+msgid ""
+"If you are using Sun's JSF 1.2 reference implementation, you should also add "
+"this to <literal>faces-config.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:36
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;el-resolver&gt;org.jboss.seam.jsf.SeamELResolver&lt;/el-"
+"resolver&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:37
+#, no-c-format
+msgid ""
+"(This line should not strictly speaking be necessary, but it works around a "
+"minor bug in the RI.)"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:40
+#, no-c-format
+msgid ""
+"Some JSF implementations have a broken implementation of server-side state "
+"saving that interferes with Seam's conversation propagation. If you have "
+"problems with conversation propagation during form submissions, try "
+"switching to client-side state saving. You'll need this in <literal>web.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:43
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;client&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:44
+#, no-c-format
+msgid "Seam servlet filters"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:45
+#, no-c-format
+msgid ""
+"Seam doesn't need any servlet filters for basic operation. However, there "
+"are several features which depend upon the use of filters. To make things "
+"easier for you guys, Seam lets you add and configure servlet filters just "
+"like you would configure other built-in Seam components. To take advantage "
+"of this feature, we must first install a master filter in <literal>web.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:48
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;/*&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:49
+#, no-c-format
+msgid "Adding the master filter enables the following built-in filters."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:52
+#, no-c-format
+msgid "Exception handling"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:53
+#, no-c-format
+msgid ""
+"This filter provides the exception mapping functionality in <literal>pages."
+"xml</literal> (almost all applications will need this). It also takes care "
+"of rolling back uncommitted transactions when uncaught exceptions occur. "
+"(According to the Java EE specification, the web container should do this "
+"automatically, but we've found that this behavior cannot be relied upon in "
+"all application servers. And it is certainly not required of plain servlet "
+"engines like Tomcat.)"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:56
+#, no-c-format
+msgid ""
+"By default, the exception handling filter will process all requests, however "
+"this behavior may be adjusted by adding a <literal>&lt;web:exception-"
+"filter&gt;</literal> entry to <literal>components.xml</literal>, as shown in "
+"this example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:59
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:web=\"http://jboss.com/products/seam/web\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                    http://jboss.com/products/seam/core-1.2.xsd\n"
+"                 http://jboss.com/products/seam/components \n"
+"                     http://jboss.com/products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/web \n"
+"                     http://jboss.com/products/seam/web-1.2.xsd\"&gt;\n"
+"\n"
+"    &lt;web:exception-filter url-pattern=\"*.seam\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:62 Configuration.xml:77 Configuration.xml:99
+#: Configuration.xml:124
+#, no-c-format
+msgid ""
+"<literal>url-pattern</literal> &mdash; Used to specify which requests are "
+"filtered, the default is all requests."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:67
+#, no-c-format
+msgid "Conversation propagation with redirects"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:68
+#, no-c-format
+msgid ""
+"This filter allows Seam to propagate the conversation context across browser "
+"redirects. It intercepts any browser redirects and adds a request parameter "
+"that specifies the Seam conversation identifier."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:71
+#, no-c-format
+msgid ""
+"The redirect filter will process all requests by default, but this behavior "
+"can also be adjusted in <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:74
+#, no-c-format
+msgid "&lt;web:redirect-filter url-pattern=\"*.seam\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:82
+#, no-c-format
+msgid "Multipart form submissions"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:83
+#, no-c-format
+msgid ""
+"This feature is necessary when using the Seam file upload JSF control. It "
+"detects multipart form requests and processes them according to the "
+"multipart/form-data specification (RFC-2388). To override the default "
+"settings, add the following entry to <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:86
+#, no-c-format
+msgid ""
+"&lt;web:multipart-filter create-temp-files=\"true\" \n"
+"        max-request-size=\"1000000\" \n"
+"        url-pattern=\"*.seam\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:89
+#, no-c-format
+msgid ""
+"<literal>create-temp-files</literal> &mdash; If set to <literal>true</"
+"literal>, uploaded files are written to a temporary file (instead of held in "
+"memory). This may be an important consideration if large file uploads are "
+"expected. The default setting is <literal>false</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:94
+#, no-c-format
+msgid ""
+"<literal>max-request-size</literal> &mdash; If the size of a file upload "
+"request (determined by reading the <literal>Content-Length</literal> header "
+"in the request) exceeds this value, the request will be aborted. The default "
+"setting is 0 (no size limit)."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:104
+#, no-c-format
+msgid "Character encoding"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:105
+#, no-c-format
+msgid "Sets the character encoding of submitted form data."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:108 Configuration.xml:136
+#, no-c-format
+msgid ""
+"This filter is not installed by default and requires an entry in "
+"<literal>components.xml</literal> to enable it:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:111
+#, no-c-format
+msgid ""
+"&lt;web:character-encoding-filter encoding=\"UTF-16\" \n"
+"        override-client=\"true\" \n"
+"        url-pattern=\"*.seam\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:114
+#, no-c-format
+msgid "<literal>encoding</literal> &mdash; The encoding to use."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:119
+#, no-c-format
+msgid ""
+"<literal>override-client</literal> &mdash; If this is set to <literal>true</"
+"literal>, the request encoding will be set to whatever is specified by "
+"<literal>encoding</literal> no matter whether the request already specifies "
+"an encoding or not. If set to <literal>false</literal>, the request encoding "
+"will only be set if the request doesn't already specify an encoding. The "
+"default setting is <literal>false</literal>."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:129
+#, no-c-format
+msgid "Context management for custom servlets"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:130
+#, no-c-format
+msgid ""
+"Requests sent direct to some servlet other than the JSF servlet are not "
+"processed through the JSF lifecycle, so Seam provides a servlet filter that "
+"can be applied to any other servlet that needs access to Seam components."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:133
+#, no-c-format
+msgid ""
+"This filter allows custom servlets to interact with the Seam contexts. It "
+"sets up the Seam contexts at the beginning of each request, and tears them "
+"down at the end of the request. You should make sure that this filter is "
+"<emphasis>never</emphasis> applied to the JSF <literal>FacesServlet</"
+"literal>. Seam uses the phase listener for context management in a JSF "
+"request."
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:139
+#, no-c-format
+msgid "&lt;web:context-filter url-pattern=\"/media/*\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:142
+#, no-c-format
+msgid ""
+"<literal>url-pattern</literal> &mdash; Used to specify which requests are "
+"filtered, the default is all requests. If the url-pattern is specified for "
+"the context filter, then the filter will be enabled (unless explicitly "
+"disabled)."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:147
+#, no-c-format
+msgid ""
+"The context filter expects to find the conversation id of any conversation "
+"context in a request parameter named <literal>conversationId</literal>. You "
+"are responsible for ensuring that it gets sent in the request."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:150
+#, no-c-format
+msgid ""
+"You are also responsible for ensuring propagation of any new conversation id "
+"back to the client. Seam exposes the conversation id as a property of the "
+"built in component <literal>conversation</literal>."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:153
+#, no-c-format
+msgid "Integrating Seam with your EJB container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:154
+#, no-c-format
+msgid ""
+"We need to apply the <literal>SeamInterceptor</literal> to our Seam "
+"components. The simplest way to do this is to add the following interceptor "
+"binding to the <literal>&lt;assembly-descriptor&gt;</literal> in "
+"<literal>ejb-jar.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:157
+#, no-c-format
+msgid ""
+"&lt;interceptor-binding&gt;\n"
+"    &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"    &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"&lt;/interceptor-binding&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:158
+#, no-c-format
+msgid ""
+"Seam needs to know where to go to find session beans in JNDI. One way to do "
+"this is specify the <literal>@JndiName</literal> annotation on every session "
+"bean Seam component. However, this is quite tedious. A better approach is to "
+"specify a pattern that Seam can use to calculate the JNDI name from the EJB "
+"name. Unfortunately, there is no standard mapping to global JNDI defined in "
+"the EJB3 specification, so this mapping is vendor-specific. We usually "
+"specify this option in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:161
+#, no-c-format
+msgid "For JBoss AS, the following pattern is correct:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:164
+#, no-c-format
+msgid "&lt;core:init jndi-name=\"myEarName/#{ejbName}/local\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:165
+#, no-c-format
+msgid ""
+"Where <literal>myEarName</literal> is the name of the EAR in which the bean "
+"is deployed."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:168
+#, no-c-format
+msgid ""
+"Outside the context of an EAR (when using the JBoss Embeddable EJB3 "
+"container), the following pattern is the one to use:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:171
+#, no-c-format
+msgid "&lt;core:init jndi-name=\"#{ejbName}/local\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:172
+#, no-c-format
+msgid ""
+"You'll have to experiment to find the right setting for other application "
+"servers. Note that some servers (such as GlassFish) require you to specify "
+"JNDI names for all EJB components explicitly (and tediously). In this case, "
+"you can pick your own pattern ;-)"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:175
+#, no-c-format
+msgid "Using facelets"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:176
+#, no-c-format
+msgid ""
+"If you want follow our advice and use facelets instead of JSP, add the "
+"following lines to <literal>faces-config.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:179
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;view-handler&gt;com.sun.facelets.FaceletViewHandler&lt;/view-"
+"handler&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:180
+#, no-c-format
+msgid "And the following lines to <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:183
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;javax.faces.DEFAULT_SUFFIX&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;.xhtml&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:184
+#, no-c-format
+msgid "Don't forget!"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:185
+#, no-c-format
+msgid ""
+"There is one final item you need to know about. You must place a "
+"<literal>seam.properties</literal>, <literal>META-INF/seam.properties</"
+"literal> or <literal>META-INF/components.xml</literal> file in any archive "
+"in which your Seam components are deployed (even an empty properties file "
+"will do). At startup, Seam will scan any archives with <literal>seam."
+"properties</literal> files for seam components."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:188
+#, no-c-format
+msgid ""
+"That's why all the Seam examples have an empty <literal>seam.properties</"
+"literal> file. You can't just delete this file and expect everything to "
+"still work!"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:191
+#, no-c-format
+msgid ""
+"You might think this is silly and what kind of idiot framework designers "
+"would make an empty file affect the behavior of their software?? Well, this "
+"is a workaround for a limitation of the JVM&mdash;if we didn't use this "
+"mechanism, our next best option would be to force you to list every "
+"component explicitly in <literal>components.xml</literal>, just like some "
+"other competing frameworks do! I think you'll like our way better."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:195
+#, no-c-format
+msgid "Configuring Seam in Java EE 5"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:204
+#, no-c-format
+msgid ""
+"If you're running in a Java EE 5 environment, this is all the configuration "
+"required to start using Seam!"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:207 Configuration.xml:270 Configuration.xml:318
+#: Configuration.xml:354 Configuration.xml:371
+#, no-c-format
+msgid "Packaging"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:208
+#, no-c-format
+msgid ""
+"Once you've packaged all this stuff together into an EAR, the archive "
+"structure will look something like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:211
+#, no-c-format
+msgid ""
+"my-application.ear/\n"
+"    jboss-seam.jar\n"
+"    el-api.jar\n"
+"    el-ri.jar\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"        application.xml\n"
+"    my-application.war/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"        WEB-INF/\n"
+"            web.xml\n"
+"            components.xml\n"
+"            faces-config.xml\n"
+"            lib/\n"
+"                jsf-facelets.jar\n"
+"                jboss-seam-ui.jar\n"
+"        login.jsp\n"
+"        register.jsp\n"
+"        ...\n"
+"    my-application.jar/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"            persistence.xml\n"
+"        seam.properties\n"
+"        org/\n"
+"            jboss/\n"
+"                myapplication/\n"
+"                    User.class\n"
+"                    Login.class\n"
+"                    LoginBean.class\n"
+"                    Register.class\n"
+"                    RegisterBean.class\n"
+"                    ..."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:212
+#, no-c-format
+msgid ""
+"You must include <literal>jboss-seam.jar</literal>, <literal>el-api.jar</"
+"literal> and <literal>el-ri.jar</literal> in the EAR classpath. Make sure "
+"you reference all of these jars from <literal>application.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:215
+#, no-c-format
+msgid ""
+"If you want to use jBPM or Drools, you must include the needed jars in the "
+"EAR classpath. Make sure you reference all of the jars from "
+"<literal>application.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:218
+#, no-c-format
+msgid ""
+"If you want to use facelets (our recommendation), you must include "
+"<literal>jsf-facelets.jar</literal> in the <literal>WEB-INF/lib</literal> "
+"directory of the WAR."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:221
+#, no-c-format
+msgid ""
+"If you want to use the Seam tag library (most Seam applications do), you "
+"must include <literal>jboss-seam-ui.jar</literal> in the <literal>WEB-INF/"
+"lib</literal> directory of the WAR. If you want to use the PDF or email tag "
+"libraries, you need to put <literal>jboss-seam-pdf.jar</literal> or "
+"<literal>jboss-seam-mail.jar</literal> in <literal>WEB-INF/lib</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:224
+#, no-c-format
+msgid ""
+"If you want to use the Seam debug page (only works for applications using "
+"facelets), you must include <literal>jboss-seam-debug.jar</literal> in the "
+"<literal>WEB-INF/lib</literal> directory of the WAR."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:227
+#, no-c-format
+msgid ""
+"Seam ships with several example applications that are deployable in any Java "
+"EE container that supports EJB 3.0."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:231
+#, no-c-format
+msgid "Configuring Seam in Java SE, with the JBoss Embeddable EJB3 container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:232
+#, no-c-format
+msgid ""
+"The JBoss Embeddable EJB3 container lets you run EJB3 components outside the "
+"context of the Java EE 5 application server. This is especially, but not "
+"only, useful for testing."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:235
+#, no-c-format
+msgid ""
+"The Seam booking example application includes a TestNG integration test "
+"suite that runs on the Embeddable EJB3 container."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:246
+#, no-c-format
+msgid "The booking example application may even be deployed to Tomcat."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:257
+#, no-c-format
+msgid "Installing the Embeddable EJB3 container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:258
+#, no-c-format
+msgid ""
+"Seam ships with a build of the Embeddable EJB3 container in the "
+"<literal>embedded-ejb</literal> directory. To use the Embeddable EJB3 "
+"container with Seam, add the <literal>embedded-ejb/conf</literal> directory, "
+"and all jars in the <literal>lib</literal> and <literal>embedded-ejb/lib</"
+"literal> directories to your classpath. Then, add the following line to "
+"<literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:261
+#, no-c-format
+msgid "&lt;core:ejb /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:262
+#, no-c-format
+msgid ""
+"This setting installs the built-in component named <literal>org.jboss.seam."
+"core.ejb</literal>. This component is responsible for bootstrapping the EJB "
+"container when Seam is started, and shutting it down when the web "
+"application is undeployed."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:265
+#, no-c-format
+msgid "Configuring a datasource with the Embeddable EJB3 container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:266
+#, no-c-format
+msgid ""
+"You should refer to the Embeddable EJB3 container documentation for more "
+"information about configuring the container. You'll probably at least need "
+"to set up your own datasource. Embeddable EJB3 is implemented using the "
+"JBoss Microcontainer, so it's very easy to add new services to the minimal "
+"set of services provided by default. For example, I can add a new datasource "
+"by putting this <literal>jboss-beans.xml</literal> file in my classpath:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:269
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"\n"
+"&lt;deployment xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"urn:jboss:bean-deployer bean-deployer_1_0."
+"xsd\"\n"
+"            xmlns=\"urn:jboss:bean-deployer\"&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasourceBootstrap\"\n"
+"        class=\"org.jboss.resource.adapter.jdbc.local.LocalTxDataSource"
+"\"&gt;\n"
+"      &lt;property name=\"driverClass\"&gt;org.hsqldb.jdbcDriver&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"connectionURL\"&gt;jdbc:hsqldb:.&lt;/property&gt;\n"
+"      &lt;property name=\"userName\"&gt;sa&lt;/property&gt;\n"
+"      &lt;property name=\"jndiName\"&gt;java:/bookingDatasource&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"minSize\"&gt;0&lt;/property&gt;\n"
+"      &lt;property name=\"maxSize\"&gt;10&lt;/property&gt;\n"
+"      &lt;property name=\"blockingTimeout\"&gt;1000&lt;/property&gt;\n"
+"      &lt;property name=\"idleTimeout\"&gt;100000&lt;/property&gt;\n"
+"      &lt;property name=\"transactionManager\"&gt;\n"
+"        &lt;inject bean=\"TransactionManager\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"      &lt;property name=\"cachedConnectionManager\"&gt;\n"
+"        &lt;inject bean=\"CachedConnectionManager\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"      &lt;property name=\"initialContextProperties\"&gt;\n"
+"        &lt;inject bean=\"InitialContextProperties\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasource\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getDatasource\"&gt;\n"
+"         &lt;factory bean=\"bookingDatasourceBootstrap\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"&lt;/deployment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:271
+#, no-c-format
+msgid ""
+"The archive structure of a WAR-based deployment on an servlet engine like "
+"Tomcat will look something like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:274
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            myfaces-api.jar\n"
+"            myfaces-impl.jar\n"
+"            jboss-ejb3.jar\n"
+"            jboss-jca.jar\n"
+"            jboss-j2ee.jar\n"
+"            ...\n"
+"            mc-conf.jar/\n"
+"                ejb3-interceptors-aop.xml\n"
+"                embedded-jboss-beans.xml\n"
+"                default.persistence.properties\n"
+"                jndi.properties\n"
+"                login-config.xml\n"
+"                security-beans.xml\n"
+"                log4j.xml\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                    MANIFEST.MF\n"
+"                    persistence.xml\n"
+"                    jboss-beans.xml\n"
+"                log4j.xml\n"
+"                seam.properties\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            LoginBean.class\n"
+"                            Register.class\n"
+"                            RegisterBean.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:275
+#, no-c-format
+msgid ""
+"The <literal>mc-conf.jar</literal> just contains the standard JBoss "
+"Microcontainer configuration files for Embeddable EJB3. You won't usually "
+"need to edit these files yourself."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:278
+#, no-c-format
+msgid ""
+"Most of the Seam example applications may be deployed to Tomcat by running "
+"<literal>ant deploy.tomcat</literal>."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:281
+#, no-c-format
+msgid "Configuring Seam in J2EE"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:282
+#, no-c-format
+msgid ""
+"Seam is useful even if you're not yet ready to take the plunge into EJB 3.0. "
+"In this case you would use Hibernate3 or JPA instead of EJB 3.0 persistence, "
+"and plain JavaBeans instead of session beans. You'll miss out on some of the "
+"nice features of session beans but it will be very easy to migrate to EJB "
+"3.0 when you're ready and, in the meantime, you'll be able to take advantage "
+"of Seam's unique declarative state management architecture."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:293
+#, no-c-format
+msgid ""
+"Seam JavaBean components do not provide declarative transaction demarcation "
+"like session beans do. You <emphasis>could</emphasis> manage your "
+"transactions manually using the JTA <literal>UserTransaction</literal> (you "
+"could even implement your own declarative transaction management in a Seam "
+"interceptor). But most applications will use Seam managed transactions when "
+"using Hibernate with JavaBeans. Follow the instructions in the persistence "
+"chapter to install <literal>TransactionalSeamPhaseListener</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:296
+#, no-c-format
+msgid ""
+"The Seam distribution includes a version of the booking example application "
+"that uses Hibernate3 and JavaBeans instead of EJB3, and another version that "
+"uses JPA and JavaBeans. These example applications are ready to deploy into "
+"any J2EE application server."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:299
+#, no-c-format
+msgid ""
+"If we want to deploy Hibernate in a non-J2EE environment like Tomcat or "
+"TestNG, we need to do a little bit more work."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:302
+#, no-c-format
+msgid "Boostrapping Hibernate in Seam"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:303
+#, no-c-format
+msgid ""
+"Seam will bootstrap a Hibernate <literal>SessionFactory</literal> from your "
+"<literal>hibernate.cfg.xml</literal> file if you install a built-in "
+"component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:306
+#, no-c-format
+msgid ""
+"&lt;core:hibernate-session-factory name=\"hibernateSessionFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:307
+#, no-c-format
+msgid ""
+"You will also need to configure a <emphasis>managed session</emphasis> if "
+"you want a Seam managed Hibernate <literal>Session</literal> to be available "
+"via injection."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:310
+#, no-c-format
+msgid "Boostrapping JPA in Seam"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:311
+#, no-c-format
+msgid ""
+"Seam will bootstrap a JPA <literal>EntityManagerFactory</literal> from your "
+"<literal>persistence.xml</literal> file if you install this built-in "
+"component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:314
+#, no-c-format
+msgid "&lt;core:entity-manager-factory name=\"entityManagerFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:315
+#, no-c-format
+msgid ""
+"You will also need to configure a <emphasis>managed persistencece context</"
+"emphasis> if you want a Seam managed JPA <literal>EntityManager</literal> to "
+"be available via injection."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:319
+#, no-c-format
+msgid "We can package our application as a WAR, in the following structure:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:322
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            hibernate3.jar\n"
+"            hibernate-annotations.jar\n"
+"            ...\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                   MANIFEST.MF\n"
+"                seam.properties\n"
+"                hibernate.cfg.xml\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            Register.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:324
+#, no-c-format
+msgid "Configuring Seam in Java SE, with the JBoss Microcontainer"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:325
+#, no-c-format
+msgid ""
+"The Seam support for Hibernate and JPA requires JTA and a JCA datasource. If "
+"you are running in a non-EE environment like Tomcat or TestNG you can run "
+"these services, and Hibernate itself, in the JBoss Microcontainer."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:328
+#, no-c-format
+msgid ""
+"You can even deploy the Hibernate and JPA versions of the booking example in "
+"Tomcat."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:339
+#, no-c-format
+msgid ""
+"Seam ships with an example Microcontainer configuration in "
+"<literal>microcontainer/conf/jboss-beans.xml</literal> that provides all the "
+"things you need to run Seam with Hibernate in any non-EE environment. Just "
+"add the <literal>microcontainer/conf</literal> directory, and all jars in "
+"the <literal>lib</literal> and <literal>microcontainer/lib</literal> "
+"directories to your classpath. Refer to the documentation for the JBoss "
+"Microcontainer for more information."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:342
+#, no-c-format
+msgid "Using Hibernate and the JBoss Microcontainer"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:343
+#, no-c-format
+msgid ""
+"The built-in Seam component named <literal>org.jboss.seam.core."
+"microcontainer</literal> bootstraps the microcontainer. As before, we "
+"probably want to use a Seam managed session."
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:346
+#, no-c-format
+msgid ""
+"&lt;core:microcontainer/&gt;\n"
+"\n"
+"&lt;core:managed-hibernate-session name=\"bookingDatabase\" auto-create="
+"\"true\"\n"
+"    session-factory-jndi-name=\"java:/bookingSessionFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:347
+#, no-c-format
+msgid ""
+"Where <literal>java:/bookingSessionFactory</literal> is the name of the "
+"Hibernate session factory specified in <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:350
+#, no-c-format
+msgid ""
+"You'll need to provide a <literal>jboss.beans.xml</literal> file that "
+"installs JNDI, JTA, your JCA datasource and Hibernate into the "
+"microcontainer:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:353
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"\n"
+"&lt;deployment xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"urn:jboss:bean-deployer bean-deployer_1_0."
+"xsd\"\n"
+"            xmlns=\"urn:jboss:bean-deployer\"&gt;\n"
+"\n"
+"   &lt;bean name=\"Naming\" class=\"org.jnp.server.SingletonNamingServer\"/"
+"&gt;\n"
+"\n"
+"   &lt;bean name=\"TransactionManagerFactory\"\n"
+"       class=\"org.jboss.seam.microcontainer.TransactionManagerFactory\"/"
+"&gt;\n"
+"   &lt;bean name=\"TransactionManager\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getTransactionManager\"&gt;\n"
+"         &lt;factory bean=\"TransactionManagerFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasourceFactory\" class=\"org.jboss.seam."
+"microcontainer.DataSourceFactory\"&gt;\n"
+"      &lt;property name=\"driverClass\"&gt;org.hsqldb.jdbcDriver&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"connectionUrl\"&gt;jdbc:hsqldb:.&lt;/property&gt;\n"
+"      &lt;property name=\"userName\"&gt;sa&lt;/property&gt;\n"
+"      &lt;property name=\"jndiName\"&gt;java:/hibernateDatasource&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"minSize\"&gt;0&lt;/property&gt;\n"
+"      &lt;property name=\"maxSize\"&gt;10&lt;/property&gt;\n"
+"      &lt;property name=\"blockingTimeout\"&gt;1000&lt;/property&gt;\n"
+"      &lt;property name=\"idleTimeout\"&gt;100000&lt;/property&gt;\n"
+"      &lt;property name=\"transactionManager\"&gt;&lt;inject bean="
+"\"TransactionManager\"/&gt;&lt;/property&gt;\n"
+"   &lt;/bean&gt;\n"
+"   &lt;bean name=\"bookingDatasource\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getDataSource\"&gt;\n"
+"         &lt;factory bean=\"bookingDatasourceFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingSessionFactoryFactory\"\n"
+"       class=\"org.jboss.seam.microcontainer.HibernateFactory\"/&gt;\n"
+"   &lt;bean name=\"bookingSessionFactory\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getSessionFactory\"&gt;\n"
+"         &lt;factory bean=\"bookingSessionFactoryFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"      &lt;depends&gt;bookingDatasource&lt;/depends&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"&lt;/deployment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:355
+#, no-c-format
+msgid "The WAR could have the following structure:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:358
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            hibernate3.jar\n"
+"            ...\n"
+"            jboss-microcontainer.jar\n"
+"            jboss-jca.jar\n"
+"            ...\n"
+"            myfaces-api.jar\n"
+"            myfaces-impl.jar\n"
+"            mc-conf.jar/\n"
+"                jndi.properties\n"
+"                log4j.xml\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                    MANIFEST.MF\n"
+"                    jboss-beans.xml\n"
+"                seam.properties\n"
+"                hibernate.cfg.xml\n"
+"                log4j.xml\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            Register.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:359
+#, no-c-format
+msgid "Configuring jBPM in Seam"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:360
+#, no-c-format
+msgid ""
+"Seam's jBPM integration is not installed by default, so you'll need to "
+"enable jBPM by installing a built-in component. You'll also need to "
+"explicitly list your process and pageflow definitions. In "
+"<literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:363
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:pageflow-definitions&gt;\n"
+"        &lt;value&gt;createDocument.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;editDocument.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;approveDocument.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:pageflow-definitions&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;documentLifecycle.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:364
+#, no-c-format
+msgid ""
+"No further special configuration is needed if you only have pageflows. If "
+"you do have business process definitions, you need to provide a jBPM "
+"configuration, and a Hibernate configuration for jBPM. The Seam DVD Store "
+"demo includes example <literal>jbpm.cfg.xml</literal> and <literal>hibernate."
+"cfg.xml</literal> files that will work with Seam:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:367
+#, no-c-format
+msgid ""
+"&lt;jbpm-configuration&gt;\n"
+"\n"
+"  &lt;jbpm-context&gt;\n"
+"    &lt;service name=\"persistence\"&gt;\n"
+"       &lt;factory&gt;\n"
+"          &lt;bean class=\"org.jbpm.persistence.db."
+"DbPersistenceServiceFactory\"&gt;\n"
+"             &lt;field name=\"isTransactionEnabled\"&gt;&lt;false/&gt;&lt;/"
+"field&gt;\n"
+"          &lt;/bean&gt;\n"
+"       &lt;/factory&gt;\n"
+"    &lt;/service&gt;\n"
+"    &lt;service name=\"message\" factory=\"org.jbpm.msg.db."
+"DbMessageServiceFactory\" /&gt;\n"
+"    &lt;service name=\"scheduler\" factory=\"org.jbpm.scheduler.db."
+"DbSchedulerServiceFactory\" /&gt;\n"
+"    &lt;service name=\"logging\" factory=\"org.jbpm.logging.db."
+"DbLoggingServiceFactory\" /&gt;\n"
+"    &lt;service name=\"authentication\" \n"
+"        factory=\"org.jbpm.security.authentication."
+"DefaultAuthenticationServiceFactory\" /&gt;\n"
+"  &lt;/jbpm-context&gt;\n"
+"\n"
+"&lt;/jbpm-configuration&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:368
+#, no-c-format
+msgid ""
+"The most important thing to notice here is that jBPM transaction control is "
+"disabled. Seam or EJB3 should control the JTA transactions."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:372
+#, no-c-format
+msgid ""
+"There is not yet any well-defined packaging format for jBPM configuration "
+"and process/pageflow definition files. In the Seam examples we've decided to "
+"simply package all these files into the root of the EAR. In future, we will "
+"probably design some other standard packaging format. So the EAR looks "
+"something like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:375
+#, no-c-format
+msgid ""
+"my-application.ear/\n"
+"    jboss-seam.jar\n"
+"    el-api.jar\n"
+"    el-ri.jar\n"
+"    jbpm-3.1.jar\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"        application.xml\n"
+"    my-application.war/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"        WEB-INF/\n"
+"            web.xml\n"
+"            components.xml\n"
+"            faces-config.xml\n"
+"            lib/\n"
+"                jsf-facelets.jar\n"
+"                jboss-seam-ui.jar\n"
+"        login.jsp\n"
+"        register.jsp\n"
+"        ...\n"
+"    my-application.jar/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"            persistence.xml\n"
+"        seam.properties\n"
+"        org/\n"
+"            jboss/\n"
+"                myapplication/\n"
+"                    User.class\n"
+"                    Login.class\n"
+"                    LoginBean.class\n"
+"                    Register.class\n"
+"                    RegisterBean.class\n"
+"                    ...\n"
+"    jbpm.cfg.xml\n"
+"    hibernate.cfg.xml\n"
+"    createDocument.jpdl.xml\n"
+"    editDocument.jpdl.xml\n"
+"    approveDocument.jpdl.xml\n"
+"    documentLifecycle.jpdl.xml"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:376
+#, no-c-format
+msgid ""
+"Remember to add <literal>jbpm-3.1.jar</literal> to the manifest of your EJB-"
+"JAR and WAR."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:379
+#, no-c-format
+msgid "Configuring Seam in a Portal"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:380
+#, no-c-format
+msgid ""
+"To run a Seam application as a portlet, you'll need to provide certain "
+"portlet metadata (<literal>portlet.xml</literal>, etc) in addition to the "
+"usual Java EE metadata. See the <literal>examples/portal</literal> directory "
+"for an example of the booking demo preconfigured to run on JBoss Portal."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:383
+#, no-c-format
+msgid ""
+"In addition, you'll need to use a portlet-specific phase listener instead of "
+"<literal>SeamPhaseListener</literal> or "
+"<literal>TransactionalSeamPhaseListener</literal>. The "
+"<literal>SeamPortletPhaseListener</literal> and "
+"<literal>TransactionalSeamPortletPhaseListener</literal> are adapted to the "
+"portlet lifecycle. I would like to offer my sincerest apologies for the name "
+"of that last class. I really couldn't think of anything better. Sorry."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Controls.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Controls.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Controls.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,591 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Controls.xml:10
+#, no-c-format
+msgid "Seam JSF controls"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:11
+#, no-c-format
+msgid ""
+"Seam includes a number of JSF controls that are useful for working with "
+"Seam. These are intended to complement the built-in JSF controls, and "
+"controls from other third-party libraries. We recommend the Ajax4JSF and ADF "
+"faces (now Trinidad) tag libraries for use with Seam. We do not recommend "
+"the use of the Tomahawk tag library."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:14
+#, no-c-format
+msgid "The ui example demonstrates the use of a number of these tags."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:19
+#, no-c-format
+msgid "&lt;s:validate&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:21
+#, no-c-format
+msgid ""
+"Validate a JSF input field against the bound property using Hibernate "
+"Validator."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:27
+#, no-c-format
+msgid "&lt;s:validateAll&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:29
+#, no-c-format
+msgid ""
+"Validate all child JSF input fields against the bound propertys using "
+"Hibernate Validator."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:35
+#, no-c-format
+msgid "&lt;s:formattedText&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:37
+#, no-c-format
+msgid "Output <emphasis>Seam Text</emphasis>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:43
+#, no-c-format
+msgid "&lt;s:convertDateTime&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:45
+#, no-c-format
+msgid "Perform date or time conversions in the Seam timezone."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:51
+#, no-c-format
+msgid "&lt;s:convertEnum&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:53
+#, no-c-format
+msgid ""
+"Assigns an enum converter to the current component. This is primarily useful "
+"for radio button and dropdown controls."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:59
+#, no-c-format
+msgid "&lt;s:enumItem&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:61
+#, no-c-format
+msgid "Creates a <literal>SelectItem</literal> from an enum value."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:66
+#, no-c-format
+msgid ""
+"<literal>enumValue</literal> &mdash; the string representation of the enum "
+"value."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:71
+#, no-c-format
+msgid ""
+"<literal>label</literal> &mdash; the label to be used when rendering the "
+"<literal>SelectItem</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:79
+#, no-c-format
+msgid "&lt;s:selectItems&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:81
+#, no-c-format
+msgid ""
+"Creates a <literal>List&lt;SelectItem&gt;</literal> from a List, Set, "
+"DataModel or Array."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:86
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; an EL expression specifying the data that "
+"backs the <literal>List&lt;SelectItem&gt;</literal>"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:91
+#, no-c-format
+msgid ""
+"<literal>var</literal> &mdash; defines the name of the local variable that "
+"holds the current object during iteration"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:96
+#, no-c-format
+msgid ""
+"<literal>label</literal> &mdash; the label to be used when rendering the "
+"<literal>SelectItem</literal>. Can reference the <literal>var</literal> "
+"variable"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:101
+#, no-c-format
+msgid ""
+"<literal>disabled</literal> &mdash; if true the <literal>SelectItem</"
+"literal> will be rendered disabled. Can reference the <literal>var</literal> "
+"variable"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:106
+#, no-c-format
+msgid ""
+"<literal>noSelectionLabel</literal> &mdash; specifies the (optional) label "
+"to place at the top of list (if <literal>required=\"true\"</literal> is also "
+"specified then selecting this value will cause a validation error)"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:111
+#, no-c-format
+msgid ""
+"<literal>hideNoSelectionLabel</literal> &mdash; if true, the "
+"<literal>noSelectionLabel</literal> will be hidden when a value is selected"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:119
+#, no-c-format
+msgid "&lt;s:decorate&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:121
+#, no-c-format
+msgid "\"Decorate\" a JSF input field when validation fails."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:127
+#, no-c-format
+msgid "&lt;s:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:129
+#, no-c-format
+msgid "\"Decorate\" a JSF input field with the validation error message."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:135
+#, no-c-format
+msgid "&lt;s:span&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:137
+#, no-c-format
+msgid "Render a HTML <literal>&lt;span&gt;</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:143
+#, no-c-format
+msgid "&lt;s:div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:145
+#, no-c-format
+msgid "Render a HTML <literal>&lt;div&gt;</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:151
+#, no-c-format
+msgid "&lt;s:fragment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:153
+#, no-c-format
+msgid ""
+"A non-rendering component useful for enabling/disabling rendering of it's "
+"children"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:159
+#, no-c-format
+msgid "&lt;s:cache&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:161
+#, no-c-format
+msgid ""
+"Cache the rendered page fragment using JBoss Cache. Note that <literal>&lt;s:"
+"cache&gt;</literal> actually uses the instance of JBoss Cache managed by the "
+"built-in <literal>pojoCache</literal> component."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:166
+#, no-c-format
+msgid ""
+"<literal>key</literal> &mdash; the key to cache rendered content, often a "
+"value expression. For example, if we were caching a page fragment that "
+"displays a document, we might use <literal>key=\"Document-#{document.id}\"</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:171
+#, no-c-format
+msgid ""
+"<literal>enabled</literal> &mdash; a value expression that determines if the "
+"cache should be used."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:176
+#, no-c-format
+msgid ""
+"<literal>region</literal> &mdash; a JBoss Cache node to use (different nodes "
+"can have different expiry policies)."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:184
+#, no-c-format
+msgid "&lt;s:link&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:186
+#, no-c-format
+msgid ""
+"A link that supports invocation of an action with control over conversation "
+"propagation. <emphasis>Does not submit the form.</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:191 Controls.xml:236
+#, no-c-format
+msgid "<literal>value</literal> &mdash; the label."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:196 Controls.xml:241
+#, no-c-format
+msgid ""
+"<literal>action</literal> &mdash; a method binding that specified the action "
+"listener."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:201 Controls.xml:246
+#, no-c-format
+msgid "<literal>view</literal> &mdash; the JSF view id to link to."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:206 Controls.xml:251
+#, no-c-format
+msgid "<literal>fragment</literal> &mdash; the fragment identifier to link to."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:211 Controls.xml:256
+#, no-c-format
+msgid "<literal>disabled</literal> &mdash; is the link disabled?"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:216 Controls.xml:261 Controls.xml:301
+#, no-c-format
+msgid ""
+"<literal>propagation</literal> &mdash; determines the conversation "
+"propagation style: <literal>begin</literal>, <literal>join</literal>, "
+"<literal>nest</literal>, <literal>none</literal> or <literal>end</literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:221 Controls.xml:266 Controls.xml:306
+#, no-c-format
+msgid ""
+"<literal>pageflow</literal> &mdash; a pageflow definition to begin. (This is "
+"only useful when <literal>propagation=\"begin\"</literal> or "
+"<literal>propagation=\"join\"</literal>.)"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:229
+#, no-c-format
+msgid "&lt;s:button&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:231
+#, no-c-format
+msgid ""
+"A button that supports invocation of an action with control over "
+"conversation propagation. <emphasis>Does not submit the form.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:274
+#, no-c-format
+msgid "&lt;s:selectDate&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:276
+#, no-c-format
+msgid ""
+"Displays a dynamic date picker component that selects a date for the "
+"specified input field. The body of the <literal>selectDate</literal> element "
+"should contain HTML elements, such as text or an image, that prompt the user "
+"to click to display the date picker. The date picker can be styled using "
+"CSS. An example CSS file can be found in the Seam booking demo as "
+"<literal>date.css</literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:281
+#, no-c-format
+msgid ""
+"<literal>for</literal> &mdash; The id of the input field that the date "
+"picker will insert the selected date into."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:286
+#, no-c-format
+msgid ""
+"<literal>dateFormat</literal> &mdash; The date format string. This should "
+"match the date format of the input field."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:294
+#, no-c-format
+msgid "&lt;s:conversationPropagation&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:296
+#, no-c-format
+msgid ""
+"Customize the conversation propagation for a command link or button (or "
+"similar JSF control). <emphasis>Facelets only.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:314
+#, no-c-format
+msgid "&lt;s:conversationId&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:316
+#, no-c-format
+msgid ""
+"Add the conversation id to an output link (or similar JSF control). "
+"<emphasis>Facelets only.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:322
+#, no-c-format
+msgid "&lt;s:taskId&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:324
+#, no-c-format
+msgid ""
+"Add the task id to an output link (or similar JSF control), when the task is "
+"available via <literal>#{task}</literal>. <emphasis>Facelets only.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:330
+#, no-c-format
+msgid "&lt;s:fileUpload&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:332
+#, no-c-format
+msgid ""
+"Renders a file upload control. This control must be used within a form with "
+"an encoding type of <literal>multipart/form-data</literal>, i.e:"
+msgstr ""
+
+#. Tag: programlisting
+#: Controls.xml:335
+#, no-c-format
+msgid "&lt;h:form enctype=\"multipart/form-data\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:336
+#, no-c-format
+msgid ""
+"For multipart requests, the Seam Multipart servlet filter must also be "
+"configured in <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Controls.xml:339
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"      &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"      &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-"
+"class&gt;\n"
+"    &lt;/filter&gt;\n"
+"    \n"
+"    &lt;filter-mapping&gt;\n"
+"      &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"      &lt;url-pattern&gt;/*&lt;/url-pattern&gt;\n"
+"    &lt;/filter-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:340
+#, no-c-format
+msgid ""
+"The following configuration options for multipart requests may be configured "
+"in components.xml:"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:345
+#, no-c-format
+msgid ""
+"<literal>createTempFiles</literal> &mdash; if this option is set to true, "
+"uploaded files are streamed to a temporary file instead of in memory."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:350
+#, no-c-format
+msgid ""
+"<literal>maxRequestSize</literal> &mdash; the maximum size of a file upload "
+"request, in bytes."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:355
+#, no-c-format
+msgid "Here's an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Controls.xml:358
+#, no-c-format
+msgid ""
+"&lt;component class=\"org.jboss.seam.servlet.MultipartConfig\"&gt;\n"
+"        &lt;property name=\"createTempFiles\"&gt;true&lt;/property&gt;\n"
+"        &lt;property name=\"maxRequestSize\"&gt;1000000&lt;/property&gt;\n"
+"    &lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:359
+#, no-c-format
+msgid ""
+"And here's a list of the supported attributes for the <literal>fileUpload</"
+"literal> control:"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:364
+#, no-c-format
+msgid ""
+"<literal>data</literal> &mdash; this value binding receives the binary file "
+"data. The receiving field should be declared as a <literal>byte[]</literal> "
+"or <literal>InputStream</literal> (required)."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:369
+#, no-c-format
+msgid ""
+"<literal>contentType</literal> &mdash; this value binding receives the "
+"file's content type (optional)."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:374
+#, no-c-format
+msgid ""
+"<literal>fileName</literal> &mdash; this value binding receives the filename "
+"(optional)."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:379
+#, no-c-format
+msgid ""
+"<literal>accept</literal> &mdash; a comma-separated list of content types to "
+"accept, may not be supported by the browser. E.g. <literal>\"images/png,"
+"images/jpg\"</literal>, <literal>\"images/*\"</literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:384
+#, no-c-format
+msgid "<literal>style</literal> &mdash; The control's style"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:389
+#, no-c-format
+msgid "<literal>styleClass</literal> &mdash; The control's style class"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Conversations.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Conversations.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Conversations.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1248 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Conversations.xml:10
+#, no-c-format
+msgid "Conversations and workspace management"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:11
+#, no-c-format
+msgid "It's time to understand Seam's conversation model in more detail."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:14
+#, no-c-format
+msgid ""
+"Historically, the notion of a Seam \"conversation\" came about as a merger "
+"of three different ideas:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:19
+#, no-c-format
+msgid ""
+"The idea of a <emphasis>workspace</emphasis>, which I encountered in a "
+"project for the Victorian government in 2002. In this project I was forced "
+"to implement workspace management on top of Struts, an experience I pray "
+"never to repeat."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:24
+#, no-c-format
+msgid ""
+"The idea of an <emphasis>application transaction</emphasis> with optimistic "
+"semantics, and the realization that existing frameworks based around a "
+"stateless architecture could not provide effective management of extended "
+"persistence contexts. (The Hibernate team is truly fed up with copping the "
+"blame for <literal>LazyInitializationException</literal>s, which are not "
+"really Hibernate's fault, but rather the fault of the extremely limiting "
+"persistence context model supported by stateless architectures such as the "
+"Spring framework or the traditional <emphasis>stateless session facade</"
+"emphasis> (anti)pattern in J2EE.)"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:29
+#, no-c-format
+msgid "The idea of a workflow <emphasis>task</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:34
+#, no-c-format
+msgid ""
+"By unifying these ideas and providing deep support in the framework, we have "
+"a powerful construct that lets us build richer and more efficient "
+"applications with less code than before."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:38
+#, no-c-format
+msgid "Seam's conversation model"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:39
+#, no-c-format
+msgid ""
+"The examples we have seen so far make use of a very simple conversation "
+"model that follows these rules:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:44
+#, no-c-format
+msgid ""
+"There is always a conversation context active during the apply request "
+"values, process validations, update model values, invoke application and "
+"render response phases of the JSF request lifecycle."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:49
+#, no-c-format
+msgid ""
+"At the end of the restore view phase of the JSF request lifecycle, Seam "
+"attempts to restore any previous long-running conversation context. If none "
+"exists, Seam creates a new temporary conversation context."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:54
+#, no-c-format
+msgid ""
+"When an <literal>@Begin</literal> method is encountered, the temporary "
+"conversation context is promoted to a long running conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:59
+#, no-c-format
+msgid ""
+"When an <literal>@End</literal> method is encountered, any long-running "
+"conversation context is demoted to a temporary conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:64
+#, no-c-format
+msgid ""
+"At the end of the render response phase of the JSF request lifecycle, Seam "
+"stores the contents of a long running conversation context or destroys the "
+"contents of a temporary conversation context."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:69
+#, no-c-format
+msgid ""
+"Any faces request (a JSF postback) will propagate the conversation context. "
+"By default, non-faces requests (GET requests, for example) do not propagate "
+"the conversation context, but see below for more information on this."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:74
+#, no-c-format
+msgid ""
+"If the JSF request lifecycle is foreshortened by a redirect, Seam "
+"transparently stores and restores the current conversation context&mdash;"
+"unless the conversation was already ended via <literal>@End"
+"(beforeRedirect=true)</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:79
+#, no-c-format
+msgid ""
+"Seam transparently propagates the conversation context across JSF postbacks "
+"and redirects. If you don't do anything special, a <emphasis>non-faces "
+"request</emphasis> (a GET request for example) will not propagate the "
+"conversation context and will be processed in a new temporary conversation. "
+"This is usually - but not always - the desired behavior."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:82
+#, no-c-format
+msgid ""
+"If you want to propagate a Seam conversation across a non-faces request, you "
+"need to explicitly code the Seam <emphasis>conversation id</emphasis> as a "
+"request parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:85
+#, no-c-format
+msgid ""
+"&lt;a href=\"main.jsf?conversationId=#{conversation.id}\"&gt;Continue&lt;/"
+"a&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:86
+#, no-c-format
+msgid "Or, the more JSF-ish:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:89
+#, no-c-format
+msgid ""
+"&lt;h:outputLink value=\"main.jsf\"&gt;\n"
+"    &lt;f:param name=\"conversationId\" value=\"#{conversation.id}\"/&gt;\n"
+"    &lt;h:outputText value=\"Continue\"/&gt;\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:90 Conversations.xml:98
+#, no-c-format
+msgid "If you use the Seam tag library, this is equivalent:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:93
+#, no-c-format
+msgid ""
+"&lt;h:outputLink value=\"main.jsf\"&gt;\n"
+"    &lt;s:conversationId/&gt;\n"
+"    &lt;h:outputText value=\"Continue\"/&gt;\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:94
+#, no-c-format
+msgid ""
+"If you wish to disable propagation of the conversation context for a "
+"postback, a similar trick is used:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:97
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;f:param name=\"conversationPropagation\" value=\"none\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:101
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"none\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:102
+#, no-c-format
+msgid ""
+"Note that disabling conversation context propagation is absolutely not the "
+"same thing as ending the conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:105
+#, no-c-format
+msgid ""
+"The <literal>conversationPropagation</literal> request parameter, or the "
+"<literal>&lt;s:conversationPropagation&gt;</literal> tag may even be used to "
+"begin and end conversation, or begin a nested conversation."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:108
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"end\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:109
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Child\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"nested\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:110
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Hotel\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"begin\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:111
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Hotel\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"join\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:112
+#, no-c-format
+msgid ""
+"This conversation model makes it easy to build applications which behave "
+"correctly with respect to multi-window operation. For many applications, "
+"this is all that is needed. Some complex applications have either or both of "
+"the following additional requirements:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:117
+#, no-c-format
+msgid ""
+"A conversation spans many smaller units of user interaction, which execute "
+"serially or even concurrently. The smaller <emphasis>nested conversations</"
+"emphasis> have their own isolated set of conversation state, and also have "
+"access to the state of the outer conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:122
+#, no-c-format
+msgid ""
+"The user is able to switch between many conversations within the same "
+"browser window. This feature is called <emphasis>workspace management</"
+"emphasis>."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:130
+#, no-c-format
+msgid "Nested conversations"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:131
+#, no-c-format
+msgid ""
+"A nested conversation is created by invoking a method marked <literal>@Begin"
+"(nested=true)</literal> inside the scope of an existing conversation. A "
+"nested conversation has its own conversation context, and also has read-only "
+"access to the context of the outer conversation. (It can read the outer "
+"conversation's context variables, but not write to them.) When an "
+"<literal>@End</literal> is subsequently encountered, the nested conversation "
+"will be destroyed, and the outer conversation will resume, by \"popping\" "
+"the conversation stack. Conversations may be nested to any arbitrary depth."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:134
+#, no-c-format
+msgid ""
+"Certain user activity (workspace management, or the back button) can cause "
+"the outer conversation to be resumed before the inner conversation is ended. "
+"In this case it is possible to have multiple concurrent nested conversations "
+"belonging to the same outer conversation. If the outer conversation ends "
+"before a nested conversation ends, Seam destroys all nested conversation "
+"contexts along with the outer context."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:137
+#, no-c-format
+msgid ""
+"A conversation may be thought of as a <emphasis>continuable state</"
+"emphasis>. Nested conversations allow the application to capture a "
+"consistent continuable state at various points in a user interaction, thus "
+"insuring truly correct behavior in the face of backbuttoning and workspace "
+"management."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:140
+#, no-c-format
+msgid ""
+"TODO: an example to show how a nested conversation prevents bad stuff "
+"happening when you backbutton."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:143
+#, no-c-format
+msgid ""
+"Usually, if a component exists in a parent conversation of the current "
+"nested conversation, the nested conversation will use the same instance. "
+"Occasionally, it is useful to have a different instance in each nested "
+"conversation, so that the component instance that exists in the parent "
+"conversation is invisible to its child conversations. You can achieve this "
+"behavior by annotating the component <literal>@PerNestedConversation</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:149
+#, no-c-format
+msgid "Starting conversations with GET requests"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:150
+#, no-c-format
+msgid ""
+"JSF does not define any kind of action listener that is triggered when a "
+"page is accessed via a non-faces request (for example, a HTTP GET request). "
+"This can occur if the user bookmarks the page, or if we navigate to the page "
+"via an <literal>&lt;h:outputLink&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:153
+#, no-c-format
+msgid ""
+"Sometimes we want to begin a conversation immediately the page is accessed. "
+"Since there is no JSF action method, we can't solve the problem in the usual "
+"way, by annotating the action with <literal>@Begin</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:156
+#, no-c-format
+msgid ""
+"A further problem arises if the page needs some state to be fetched into a "
+"context variable. We've already seen two ways to solve this problem. If that "
+"state is held in a Seam component, we can fetch the state in a "
+"<literal>@Create</literal> method. If not, we can define a "
+"<literal>@Factory</literal> method for the context variable."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:159
+#, no-c-format
+msgid ""
+"If none of these options works for you, Seam lets you define a "
+"<emphasis>page action</emphasis> in the <literal>pages.xml</literal> file."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:162
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\" action=\"#{messageManager.list}\"/"
+"&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:163
+#, no-c-format
+msgid ""
+"This action method is called at the beginning of the render response phase, "
+"any time the page is about to be rendered. If a page action returns a non-"
+"null outcome, Seam will process any appropriate JSF and Seam navigation "
+"rules, possibly resulting in a completely different page being rendered."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:166
+#, no-c-format
+msgid ""
+"If <emphasis>all</emphasis> you want to do before rendering the page is "
+"begin a conversation, you could use a built-in action method that does just "
+"that:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:169
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\" action=\"#{conversation.begin}\"/"
+"&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:170
+#, no-c-format
+msgid ""
+"Note that you can also call this built-in action from a JSF control, and, "
+"similarly, you can use <literal>#{conversation.end}</literal> to end "
+"conversations."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:173
+#, no-c-format
+msgid ""
+"If you want more control, to join existing conversations or begin a nested "
+"conversion, to begin a pageflow or an atomic conversation, you should use "
+"the <literal>&lt;begin-conversation&gt;</literal> element."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:176
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\"&gt;\n"
+"       &lt;begin-conversation nested=\"true\" pageflow=\"AddItem\"/&gt;\n"
+"    &lt;page&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:177
+#, no-c-format
+msgid "There is also an <literal>&lt;end-conversation&gt;</literal> element."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:180
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/home.jsp\"&gt;\n"
+"       &lt;end-conversation/&gt;\n"
+"    &lt;page&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:181
+#, no-c-format
+msgid "To solve the first problem, we now have five options:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:186
+#, no-c-format
+msgid ""
+"Annotate the <literal>@Create</literal> method with <literal>@Begin</literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:191
+#, no-c-format
+msgid ""
+"Annotate the <literal>@Factory</literal> method with <literal>@Begin</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:196
+#, no-c-format
+msgid "Annotate the Seam page action method with <literal>@Begin</literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:201
+#, no-c-format
+msgid ""
+"Use <literal>&lt;begin-conversation&gt;</literal> in <literal>pages.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:206
+#, no-c-format
+msgid ""
+"Use <literal>#{conversation.begin}</literal> as the Seam page action method"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:214
+#, no-c-format
+msgid ""
+"Using <literal>&lt;s:link&gt;</literal> and <literal>&lt;s:button&gt;</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:215
+#, no-c-format
+msgid ""
+"JSF command links always perform a form submission via JavaScript, which "
+"breaks the web browser's \"open in new window\" or \"open in new tab\" "
+"feature. In plain JSF, you need to use an <literal>&lt;h:outputLink&gt;</"
+"literal> if you need this functionality. But there are two major limitations "
+"to <literal>&lt;h:outputLink&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:220
+#, no-c-format
+msgid ""
+"JSF provides no way to attach an action listener to an <literal>&lt;h:"
+"outputLink&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:225
+#, no-c-format
+msgid ""
+"JSF does not propagate the selected row of a <literal>DataModel</literal> "
+"since there is no actual form submission."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:230
+#, no-c-format
+msgid ""
+"Seam provides the notion of a <emphasis>page action</emphasis> to help solve "
+"the first problem, but this does nothing to help us with the second problem. "
+"We <emphasis>could</emphasis> work around this by using the RESTful approach "
+"of passing a request parameter and requerying for the selected object on the "
+"server side. In some cases&mdash;such as the Seam blog example "
+"application&mdash;this is indeed the best approach. The RESTful style "
+"supports bookmarking, since it does not require server-side state. In other "
+"cases, where we don't care about bookmarks, the use of <literal>@DataModel</"
+"literal> and <literal>@DataModelSelection</literal> is just so convenient "
+"and transparent!"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:233
+#, no-c-format
+msgid ""
+"To fill in this missing functionality, and to make conversation propagation "
+"even simpler to manage, Seam provides the <literal>&lt;s:link&gt;</literal> "
+"JSF tag."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:236
+#, no-c-format
+msgid "The link may specify just the JSF view id:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:239
+#, no-c-format
+msgid ""
+"&lt;s:link view=&#8220;/login.xhtml&#8221; value=&#8220;Login&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:240
+#, no-c-format
+msgid ""
+"Or, it may specify an action method (in which case the action outcome "
+"determines the page that results):"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:243
+#, no-c-format
+msgid ""
+"&lt;s:link action=&#8220;#{login.logout}&#8221; value=&#8220;Logout&#8221;/"
+"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:244
+#, no-c-format
+msgid ""
+"If you specify <emphasis>both</emphasis> a JSF view id and an action method, "
+"the 'view' will be used <emphasis>unless</emphasis> the action method "
+"returns a non-null outcome:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:247
+#, no-c-format
+msgid ""
+"&lt;s:link view=\"/loggedOut.xhtml\"  action=&#8220;#{login.logout}&#8221; "
+"value=&#8220;Logout&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:248
+#, no-c-format
+msgid ""
+"The link automatically propagates the selected row of a <literal>DataModel</"
+"literal> using inside <literal>&lt;h:dataTable&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:251
+#, no-c-format
+msgid ""
+"&lt;s:link view=&#8220;/hotel.xhtml&#8221; action=&#8220;#{hotelSearch."
+"selectHotel}&#8221; value=&#8220;#{hotel.name}&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:252
+#, no-c-format
+msgid "You can leave the scope of an existing conversation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:255
+#, no-c-format
+msgid ""
+"&lt;s:link view=&#8220;/main.xhtml&#8221; propagation=&#8220;none&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:256
+#, no-c-format
+msgid "You can begin, end, or nest conversations:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:259
+#, no-c-format
+msgid ""
+"&lt;s:link action=&#8220;#{issueEditor.viewComment}&#8221; "
+"propagation=&#8220;nest&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:260
+#, no-c-format
+msgid ""
+"If the link begins a conversation, you can even specify a pageflow to be "
+"used:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:263
+#, no-c-format
+msgid ""
+"&lt;s:link action=&#8220;#{documentEditor.getDocument}&#8221; "
+"propagation=&#8220;begin&#8221; \n"
+"        pageflow=&#8220;EditDocument&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:264
+#, no-c-format
+msgid ""
+"The <literal>taskInstance</literal> attribute if for use in jBPM task lists:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:267
+#, no-c-format
+msgid ""
+"&lt;s:link action=&#8220;#{documentApproval.approveOrReject}&#8221; "
+"taskInstance=&#8220;#{task}&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:268
+#, no-c-format
+msgid "(See the DVD Store demo application for examples of this.)"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:271
+#, no-c-format
+msgid ""
+"Finally, if you need the \"link\" to be rendered as a button, use "
+"<literal>&lt;s:button&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:274
+#, no-c-format
+msgid ""
+"&lt;s:button action=&#8220;#{login.logout}&#8221; value=&#8220;Logout&#8221;/"
+"&gt;"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:278
+#, no-c-format
+msgid "Success messages"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:279
+#, no-c-format
+msgid ""
+"It is quite common to display a message to the user indicating success or "
+"failure of an action. It is convenient to use a JSF <literal>FacesMessage</"
+"literal> for this. Unfortunately, a successful action often requires a "
+"browser redirect, and JSF does not propagate faces messages across "
+"redirects. This makes it quite difficult to display success messages in "
+"plain JSF."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:282
+#, no-c-format
+msgid ""
+"The built in conversation-scoped Seam component named "
+"<literal>facesMessages</literal> solves this problem. (You must have the "
+"Seam redirect filter installed.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:285
+#, no-c-format
+msgid ""
+"@Name(\"editDocumentAction\")\n"
+"@Stateless\n"
+"public class EditDocumentBean implements EditDocument {\n"
+"    @In EntityManager em;\n"
+"    @In Document document;\n"
+"    @In FacesMessages facesMessages;\n"
+"    \n"
+"    public String update() {\n"
+"        em.merge(document);\n"
+"        facesMessages.add(\"Document updated\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:286
+#, no-c-format
+msgid ""
+"Any message added to <literal>facesMessages</literal> is used in the very "
+"next render response phase for the current conversation. This even works "
+"when there is no long-running conversation since Seam preserves even "
+"temporary conversation contexts across redirects."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:289
+#, no-c-format
+msgid "You can even include JSF EL expressions in a faces message summary:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:292
+#, no-c-format
+msgid "facesMessages.add(\"Document #{document.title} was updated\");"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:293
+#, no-c-format
+msgid "You may display the messages in the usual way, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:296
+#, no-c-format
+msgid "&lt;h:messages globalOnly=\"true\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:300
+#, no-c-format
+msgid "Using an \"explicit\" conversation id"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:301
+#, no-c-format
+msgid ""
+"Ordinarily, Seam generates a meaningless unique id for each conversation in "
+"each session. You can customize the id value when you begin the conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:304
+#, no-c-format
+msgid ""
+"This feature can be used to customize the conversation id generation "
+"algorithm like so:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:307
+#, no-c-format
+msgid ""
+"@Begin(id=\"#{myConversationIdGenerator.nextId}\") \n"
+"public void editHotel() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:308
+#, no-c-format
+msgid "Or it can be used to assign a meaningful conversation id:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:311
+#, no-c-format
+msgid ""
+"@Begin(id=\"hotel#{hotel.id}\") \n"
+"public String editHotel() { ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:312
+#, no-c-format
+msgid ""
+"@Begin(id=\"hotel#{hotelsDataModel.rowData.id}\") \n"
+"public String selectHotel() { ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:313
+#, no-c-format
+msgid ""
+"@Begin(id=\"entry#{params['blogId']}\")\n"
+"public String viewBlogEntry() { ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:314
+#, no-c-format
+msgid ""
+"@BeginTask(id=\"task#{taskInstance.id}\") \n"
+"public String approveDocument() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:315
+#, no-c-format
+msgid ""
+"Clearly, these example result in the same conversation id every time a "
+"particular hotel, blog or task is selected. So what happens if a "
+"conversation with the same conversation id already exists when the new "
+"conversation begins? Well, Seam detects the existing conversation and "
+"redirects to that conversation without running the <literal>@Begin</literal> "
+"method again. This feature helps control the number of workspaces that are "
+"created when using workspace management."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:321
+#, no-c-format
+msgid "Workspace management"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:322
+#, no-c-format
+msgid ""
+"Workspace management is the ability to \"switch\" conversations in a single "
+"window. Seam makes workspace management completely transparent at the level "
+"of the Java code. To enable workspace management, all you need to do is:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:327
+#, no-c-format
+msgid ""
+"Provide <emphasis>description</emphasis> text for each view id (when using "
+"JSF or Seam navigation rules) or page node (when using jPDL pageflows). This "
+"description text is displayed to the user by the workspace switchers."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:332
+#, no-c-format
+msgid ""
+"Include one or more of the standard workspace switcher JSP or facelets "
+"fragments in your pages. The standard fragments support workspace management "
+"via a drop down menu, a list of conversations, or breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:335
+#, no-c-format
+msgid ""
+"Please refer to the Seam Issue Tracker demo to see all this functionality in "
+"action!"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:339
+#, no-c-format
+msgid "Workspace management and JSF navigation"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:340
+#, no-c-format
+msgid ""
+"When you use JSF or Seam navigation rules, Seam switches to a conversation "
+"by restoring the current <literal>view-id</literal> for that conversation. "
+"The descriptive text for the workspace is defined in a file called "
+"<literal>pages.xml</literal> that Seam expects to find in the <literal>WEB-"
+"INF</literal> directory, right next to <literal>faces-config.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:343
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/main.xhtml\"&gt;Search hotels: #{hotelBooking."
+"searchString}&lt;/page&gt;\n"
+"    &lt;page view-id=\"/hotel.xhtml\"&gt;View hotel: #{hotel.name}&lt;/"
+"page&gt;\n"
+"    &lt;page view-id=\"/book.xhtml\"&gt;Book hotel: #{hotel.name}&lt;/"
+"page&gt;\n"
+"    &lt;page view-id=\"/confirm.xhtml\"&gt;Confirm: #{booking.description}"
+"&lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:344
+#, no-c-format
+msgid ""
+"Note that if this file is missing, the Seam application will continue to "
+"work perfectly! The only missing functionality will be the ability to switch "
+"workspaces."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:350
+#, no-c-format
+msgid "Workspace management and jPDL pageflow"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:351
+#, no-c-format
+msgid ""
+"When you use a jPDL pageflow definition, Seam switches to a conversation by "
+"restoring the current jBPM process state. This is a more flexible model "
+"since it allows the same <literal>view-id</literal> to have different "
+"descriptions depending upon the current <literal>&lt;page&gt;</literal> "
+"node. The description text is defined by the <literal>&lt;page&gt;</literal> "
+"node:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:354
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"shopping\"&gt;\n"
+"\n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"browse\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;page name=\"browse\" view-id=\"/browse.xhtml\"&gt;\n"
+"      &lt;description&gt;DVD Search: #{search.searchPattern}&lt;/"
+"description&gt;\n"
+"      &lt;transition to=\"browse\"/&gt;\n"
+"      &lt;transition name=\"checkout\" to=\"checkout\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"checkout\" view-id=\"/checkout.xhtml\"&gt;\n"
+"      &lt;description&gt;Purchase: &#36;#{cart.total}&lt;/description&gt;\n"
+"      &lt;transition to=\"checkout\"/&gt;\n"
+"      &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"complete\" view-id=\"/complete.xhtml\"&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:358
+#, no-c-format
+msgid "The conversation switcher"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:359
+#, no-c-format
+msgid ""
+"Include the following fragment in your JSP or facelets page to get a drop-"
+"down menu that lets you switch to any current conversation, or to any other "
+"page of the application:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:362
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{switcher.conversationIdOrOutcome}\"&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Find Issues\" itemValue=\"findIssue\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Create Issue\" itemValue=\"editIssue\"/"
+"&gt;\n"
+"    &lt;f:selectItems value=\"#{switcher.selectItems}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{switcher.select}\" value=\"Switch\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:363
+#, no-c-format
+msgid ""
+"In this example, we have a menu that includes an item for each conversation, "
+"together with two additional items that let the user begin a new "
+"conversation."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:377
+#, no-c-format
+msgid "The conversation list"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:378
+#, no-c-format
+msgid ""
+"The conversation list is very similar to the conversation switcher, except "
+"that it is displayed as a table:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:381
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{conversationList}\" var=\"entry\"\n"
+"        rendered=\"#{not empty conversationList}\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Workspace&lt;/f:facet&gt;\n"
+"        &lt;h:commandLink action=\"#{entry.select}\" value=\"#{entry."
+"description}\"/&gt;\n"
+"        &lt;h:outputText value=\"[current]\" rendered=\"#{entry.current}\"/"
+"&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Activity&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{entry.startDatetime}\"&gt;\n"
+"            &lt;f:convertDateTime type=\"time\" pattern=\"hh:mm a\"/&gt;\n"
+"        &lt;/h:outputText&gt;\n"
+"        &lt;h:outputText value=\" - \"/&gt;\n"
+"        &lt;h:outputText value=\"#{entry.lastDatetime}\"&gt;\n"
+"            &lt;f:convertDateTime type=\"time\" pattern=\"hh:mm a\"/&gt;\n"
+"        &lt;/h:outputText&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"        &lt;h:commandButton action=\"#{entry.select}\" value=\"#{msg.Switch}"
+"\"/&gt;\n"
+"        &lt;h:commandButton action=\"#{entry.destroy}\" value=\"#{msg."
+"Destroy}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:382
+#, no-c-format
+msgid ""
+"We imagine that you will want to customize this for your own application."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:393
+#, no-c-format
+msgid ""
+"The conversation list is nice, but it takes up a lot of space on the page, "
+"so you probably don't want to put it on <emphasis>every</emphasis> page."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:396
+#, no-c-format
+msgid "Notice that the conversation list lets the user destroy workspaces."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:402
+#, no-c-format
+msgid "Breadcrumbs"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:403
+#, no-c-format
+msgid ""
+"Breadcrumbs are useful in applications which use a nested conversation "
+"model. The breadcrumbs are a list of links to conversations in the current "
+"conversation stack:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:406
+#, no-c-format
+msgid ""
+"&lt;t:dataList value=\"#{conversationStack}\" var=\"entry\"&gt;\n"
+"    &lt;h:outputText value=\" | \"/&gt; \n"
+"    &lt;h:commandLink value=\"#{entry.description}\" action=\"#{entry.select}"
+"\"/&gt;\n"
+"&lt;/t:dataList&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:407
+#, no-c-format
+msgid ""
+"Notice that here we are using the MyFaces <literal>&lt;t:dataList&gt;</"
+"literal> component, since JSF amazingly does not provide any standard "
+"component for looping."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:424
+#, no-c-format
+msgid "Conversational components and JSF component bindings"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:425
+#, no-c-format
+msgid ""
+"Conversational components have one minor limitation: they cannot be used to "
+"hold bindings to JSF components. (We generally prefer not to use this "
+"feature of JSF unless absolutely necessary, since it creates a hard "
+"dependency from application logic to the view.) On a postback request, "
+"component bindings are updated during the Restore View phase, before the "
+"Seam conversation context has been restored."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:428
+#, no-c-format
+msgid ""
+"To work around this use an event scoped component to store the component "
+"bindings and inject it into the conversation scoped component that requires "
+"it."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:431
+#, no-c-format
+msgid ""
+"@Name(\"grid\")\n"
+"@Scope(ScopeType.EVENT)\n"
+"public class Grid\n"
+"{\n"
+"    private HtmlPanelGrid htmlPanelGrid;\n"
+"\n"
+"    // getters and setters\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:432
+#, no-c-format
+msgid ""
+"@Name(\"gridEditor\")\n"
+"@Scope(ScopeType.CONVERSATION)\n"
+"public class GridEditor\n"
+"{\n"
+"    @In(required=false)\n"
+"    private Grid grid;\n"
+"    \n"
+"    ...\n"
+"}"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Drools.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Drools.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Drools.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,281 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Drools.xml:10
+#, no-c-format
+msgid "Seam and JBoss Rules"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:11
+#, no-c-format
+msgid ""
+"Seam makes it easy to call JBoss Rules (Drools) rulebases from Seam "
+"components or jBPM process definitions."
+msgstr ""
+
+#. Tag: title
+#: Drools.xml:15
+#, no-c-format
+msgid "Installing rules"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:16
+#, no-c-format
+msgid ""
+"The first step is to make an instance of <literal>org.drools.RuleBase</"
+"literal> available in a Seam context variable. In most rules-driven "
+"applications, rules need to be dynamically deployable, so you will need to "
+"implement some solution that allows you to deploy rules and make them "
+"available to Seam (a future release of Drools will provide a Rule Server "
+"that solves this problem). For testing purposes, Seam provides a built-in "
+"component that compiles a static set of rules from the classpath. You can "
+"install this component via <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:19
+#, no-c-format
+msgid ""
+"&lt;drools:rule-base name=\"policyPricingRules\"&gt;\n"
+"    &lt;drools:rule-files&gt;\n"
+"        &lt;value&gt;policyPricingRules&lt;/value&gt;\n"
+"    &lt;/drools:rule-files&gt;\n"
+"&lt;/drools:rule-base&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:20
+#, no-c-format
+msgid ""
+"This component compiles rules from a set of <literal>.drl</literal> files "
+"and caches an instance of <literal>org.drools.RuleBase</literal> in the Seam "
+"<literal>APPLICATION</literal> context. Note that it is quite likely that "
+"you will need to install multiple rule bases in a rule-driven application."
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:23
+#, no-c-format
+msgid ""
+"If you want to use a Drools DSL, you alse need to specify the DSL definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:26
+#, no-c-format
+msgid ""
+"&lt;drools:rule-base name=\"policyPricingRules\" dsl-file=\"policyPricing.dsl"
+"\"&gt;\n"
+"    &lt;drools:rule-files&gt;\n"
+"        &lt;value&gt;policyPricingRules&lt;/value&gt;\n"
+"    &lt;/drools:rule-files&gt;\n"
+"&lt;/drools:rule-base&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:27
+#, no-c-format
+msgid ""
+"Next, we need to make an instance of <literal>org.drools.WorkingMemory</"
+"literal> available to each conversation. (Each <literal>WorkingMemory</"
+"literal> accumulates facts relating to the current conversation.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:30
+#, no-c-format
+msgid ""
+"&lt;drools:managed-working-memory name=\"policyPricingWorkingMemory\" auto-"
+"create=\"true\" rule-base=\"#{policyPricingRules}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:31
+#, no-c-format
+msgid ""
+"Notice that we gave the <literal>policyPricingWorkingMemory</literal> a "
+"reference back to our rule base via the <literal>ruleBase</literal> "
+"configuration property."
+msgstr ""
+
+#. Tag: title
+#: Drools.xml:37
+#, no-c-format
+msgid "Using rules from a Seam component"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:38
+#, no-c-format
+msgid ""
+"We can now inject our <literal>WorkingMemory</literal> into any Seam "
+"component, assert facts, and fire rules:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:41
+#, no-c-format
+msgid ""
+"@In WorkingMemory policyPricingWorkingMemory;\n"
+"\n"
+"@In Policy policy;\n"
+"@In Customer customer;\n"
+"\n"
+"public void pricePolicy() throws FactException\n"
+"{\n"
+"    policyPricingWorkingMemory.assertObject(policy);\n"
+"    policyPricingWorkingMemory.assertObject(customer);\n"
+"    policyPricingWorkingMemory.fireAllRules();\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Drools.xml:45
+#, no-c-format
+msgid "Using rules from a jBPM process definition"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:46
+#, no-c-format
+msgid ""
+"You can even allow a rule base to act as a jBPM action handler, decision "
+"handler, or assignment handler&mdash;in either a pageflow or business "
+"process definition."
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:49
+#, no-c-format
+msgid ""
+"&lt;decision name=\"approval\"&gt;\n"
+"         \n"
+"    &lt;handler class=\"org.jboss.seam.drools.DroolsDecisionHandler\"&gt;\n"
+"        &lt;workingMemoryName&gt;orderApprovalRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"        &lt;assertObjects&gt;\n"
+"            &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"            &lt;element&gt;#{order}&lt;/element&gt;\n"
+"            &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"        &lt;/assertObjects&gt;\n"
+"    &lt;/handler&gt;\n"
+"    \n"
+"    &lt;transition name=\"approved\" to=\"ship\"&gt;\n"
+"        &lt;action class=\"org.jboss.seam.drools.DroolsActionHandler\"&gt;\n"
+"            &lt;workingMemoryName&gt;shippingRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"            &lt;assertObjects&gt;\n"
+"                &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"            &lt;/assertObjects&gt;\n"
+"        &lt;/action&gt;\n"
+"    &lt;/transition&gt;\n"
+"    \n"
+"    &lt;transition name=\"rejected\" to=\"cancelled\"/&gt;\n"
+"    \n"
+"&lt;/decision&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:50
+#, no-c-format
+msgid ""
+"The <literal>&lt;assertObjects&gt;</literal> element specifies EL "
+"expressions that return an object or collection of objects to be asserted as "
+"facts into the <literal>WorkingMemory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:53
+#, no-c-format
+msgid "There is also support for using Drools for jBPM task assignments:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:56
+#, no-c-format
+msgid ""
+"&lt;task-node name=\"review\"&gt;\n"
+"    &lt;task name=\"review\" description=\"Review Order\"&gt;\n"
+"        &lt;assignment handler=\"org.jboss.seam.drools."
+"DroolsAssignmentHandler\"&gt;\n"
+"            &lt;workingMemoryName&gt;orderApprovalRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"            &lt;assertObjects&gt;\n"
+"                &lt;element&gt;#{actor}&lt;/element&gt;\n"
+"                &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"            &lt;/assertObjects&gt;\n"
+"        &lt;/assignment&gt;\n"
+"    &lt;/task&gt;\n"
+"    &lt;transition name=\"rejected\" to=\"cancelled\"/&gt;\n"
+"    &lt;transition name=\"approved\" to=\"approved\"/&gt;\n"
+"&lt;/task-node&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:57
+#, no-c-format
+msgid ""
+"Certain objects are available to the rules as Drools globals, namely the "
+"jBPM <literal>Assignable</literal>, as <literal>assignable</literal> and a "
+"Seam <literal>Decision</literal> object, as <literal>decision</literal>. "
+"Rules which handle decisions should call <literal>decision.setOutcome"
+"(\"result\")</literal> to determine the result of the decision. Rules which "
+"perform assignments should set the actor id using the <literal>Assignable</"
+"literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:60
+#, no-c-format
+msgid ""
+"package org.jboss.seam.examples.shop\n"
+"\n"
+"import org.jboss.seam.drools.Decision\n"
+"\n"
+"global Decision decision\n"
+"\n"
+"rule \"Approve Order For Loyal Customer\"\n"
+"  when\n"
+"    Customer( loyaltyStatus == \"GOLD\" )\n"
+"    Order( totalAmount &lt;= 10000 )\n"
+"  then\n"
+"    decision.setOutcome(\"approved\");\n"
+"end"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:61
+#, no-c-format
+msgid ""
+"package org.jboss.seam.examples.shop\n"
+"\n"
+"import org.jbpm.taskmgmt.exe.Assignable\n"
+"\n"
+"global Assignable assignable\n"
+"\n"
+"rule \"Assign Review For Small Order\"\n"
+"  when\n"
+"    Order( totalAmount &lt;= 100 )\n"
+"  then\n"
+"    assignable.setPooledActors( new String[] {\"reviewers\"} );\n"
+"end"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Elenhancements.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Elenhancements.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Elenhancements.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,221 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Elenhancements.xml:10
+#, no-c-format
+msgid "Expression language enhancements"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:11
+#, no-c-format
+msgid ""
+"The standard Unified Expression Language (EL) assumes that any parameters to "
+"a method expression will be provided by Java code. This means that a method "
+"with parameters cannot be used as a JSF method binding. Seam provides an "
+"enhancement to the EL that allows parameters to be included in a method "
+"expression itself. This applies to <emphasis>any</emphasis> Seam method "
+"expression, including any JSF method binding, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:14
+#, no-c-format
+msgid ""
+"&lt;s:commandButton action=\"#{hotelBooking.bookHotel(hotel)}\" value=\"Book "
+"Hotel\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:16
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:17
+#, no-c-format
+msgid ""
+"To use this feature in Facelets, you will need to declare a special view "
+"handler, <literal>SeamFaceletViewHandler</literal> in <literal>faces-config."
+"xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:20
+#, no-c-format
+msgid ""
+"&lt;faces-config&gt;\n"
+"    &lt;application&gt;\n"
+"        &lt;view-handler&gt;org.jboss.seam.ui.facelet."
+"SeamFaceletViewHandler&lt;/view-handler&gt;\n"
+"    &lt;/application&gt;\n"
+"&lt;/faces-config&gt;"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:24
+#, no-c-format
+msgid "Usage"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:25
+#, no-c-format
+msgid "Parameters are surrounded by parentheses, and separated by commas:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:28
+#, no-c-format
+msgid ""
+"&lt;h:commandButton action=\"#{hotelBooking.bookHotel(hotel, user)}\" value="
+"\"Book Hotel\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:29
+#, no-c-format
+msgid ""
+"The parameters <literal>hotel</literal> and <literal>user</literal> will be "
+"evaluated as value expressions and passed to the <literal>bookHotel()</"
+"literal> method of the component. This gives you an alternative to the use "
+"of <literal>@In</literal>."
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:32
+#, no-c-format
+msgid "Any value expression may be used as a parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:35
+#, no-c-format
+msgid ""
+"&lt;h:commandButton action=\"#{hotelBooking.bookHotel(hotel.id, user."
+"username)}\" value=\"Book Hotel\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:36
+#, no-c-format
+msgid "You may even pass literal strings using single or double quotes:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:39
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=&#8221;#{printer.println( &#8216;Hello world!"
+"&#8217; )}&#8221; value=&#8221;Hello&#8221;/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:40
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=&#8217;#{printer.println( &#8220;Hello "
+"again&#8221; )}&#8217; value=&#8217;Hello&#8217;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:41
+#, no-c-format
+msgid ""
+"You might even want to use this notation for all your action methods, even "
+"when you don&#8217;t have parameters to pass. This improves readability by "
+"making it clear that the expression is a method expression and not a value "
+"expression:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:44
+#, no-c-format
+msgid "&lt;s:link value=\"Cancel\" action=\"#{hotelBooking.cancel()}\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:48
+#, no-c-format
+msgid "Limitations"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:49
+#, no-c-format
+msgid "Please be aware of the following limitations:"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:53
+#, no-c-format
+msgid "Incompatibility with JSP 2.1"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:54
+#, no-c-format
+msgid ""
+"This extension is not currently compatible with JSP 2.1. So if you want to "
+"use this extension with JSF 1.2, you will need to use Facelets. The "
+"extension works correctly with JSP 2.0."
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:60
+#, no-c-format
+msgid "Calling a <literal>MethodExpression</literal> from Java code"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:61
+#, no-c-format
+msgid ""
+"Normally, when a <literal>MethodExpression</literal> or "
+"<literal>MethodBinding</literal> is created, the parameter types are passed "
+"in by JSF. In the case of a method binding, JSF assumes that there are no "
+"parameters to pass. With this extension, we can&#8217;t know the parameter "
+"types until after the expression has been evaluated. This has two minor "
+"consequences:"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:66
+#, no-c-format
+msgid ""
+"When you invoke a <literal>MethodExpression</literal> in Java code, "
+"parameters you pass may be ignored. Parameters defined in the expression "
+"will take precedence."
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:71
+#, no-c-format
+msgid ""
+"Ordinarily, it is safe to call <literal>methodExpression.getMethodInfo()."
+"getParamTypes()</literal> at any time. For an expression with parameters, "
+"you must first invoke the <literal>MethodExpression</literal> before calling "
+"<literal>getParamTypes()</literal>."
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:76
+#, no-c-format
+msgid ""
+"Both of these cases are exceedingly rare and only apply when you want to "
+"invoke the <literal>MethodExpression</literal> by hand in Java code."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Events.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Events.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Events.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1430 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Events.xml:10
+#, no-c-format
+msgid "Events, interceptors and exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:11
+#, no-c-format
+msgid ""
+"Complementing the contextual component model, there are two further basic "
+"concepts that facilitate the extreme loose-coupling that is the distinctive "
+"feature of Seam applications. The first is a strong event model where events "
+"may be mapped to event listeners via JSF-like method binding expressions. "
+"The second is the pervasive use of annotations and interceptors to apply "
+"cross-cutting concerns to components which implement business logic."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:14
+#, no-c-format
+msgid "Seam events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:15
+#, no-c-format
+msgid ""
+"The Seam component model was developed for use with <emphasis>event-driven "
+"applications</emphasis>, specifically to enable the development of fine-"
+"grained, loosely-coupled components in a fine-grained eventing model. Events "
+"in Seam come in several types, most of which we have already seen:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:20
+#, no-c-format
+msgid "JSF events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:25
+#, no-c-format
+msgid "jBPM transition events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:30
+#, no-c-format
+msgid "Seam page actions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:35
+#, no-c-format
+msgid "Seam component-driven events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:40
+#, no-c-format
+msgid "Seam contextual events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:45
+#, no-c-format
+msgid ""
+"All of these various kinds of events are mapped to Seam components via JSF "
+"EL method binding expressions. For a JSF event, this is defined in the JSF "
+"template:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:48
+#, no-c-format
+msgid ""
+"&lt;h:commandButton value=\"Click me!\" action=\"#{helloWorld.sayHello}\"/"
+"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:49
+#, no-c-format
+msgid ""
+"For a jBPM transition event, it is specified in the jBPM process definition "
+"or pageflow definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:52
+#, no-c-format
+msgid ""
+"&lt;start-page name=\"hello\" view-id=\"/hello.jsp\"&gt;\n"
+"    &lt;transition to=\"hello\"&gt;\n"
+"        &lt;action expression=\"#{helloWorld.sayHello}\"/&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/start-page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:53
+#, no-c-format
+msgid ""
+"You can find out more information about JSF events and jBPM events "
+"elsewhere. Lets concentrate for now upon the two additional kinds of events "
+"defined by Seam."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:56
+#, no-c-format
+msgid "Page actions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:57
+#, no-c-format
+msgid ""
+"A Seam page action is an event that occurs just before we render a page. We "
+"declare page actions in <literal>WEB-INF/pages.xml</literal>. We can define "
+"a page action for either a particular JSF view id:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:60
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\" action=\"#{helloWorld.sayHello}\"/&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:61
+#, no-c-format
+msgid ""
+"Or we can use a wildcard to specify an action that applies to all view ids "
+"that match the pattern:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:64
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello/*\" action=\"#{helloWorld.sayHello}\"/&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:65
+#, no-c-format
+msgid ""
+"If multiple wildcarded page actions match the current view-id, Seam will "
+"call all the actions, in order of least-specific to most-specific."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:68
+#, no-c-format
+msgid ""
+"The page action method can return a JSF outcome. If the outcome is non-null, "
+"Seam will delegate to the defined JSFadn Seam navigation rules and a "
+"different view may end up being rendered."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:71
+#, no-c-format
+msgid ""
+"Furthermore, the view id mentioned in the <literal>&lt;page&gt;</literal> "
+"element need not correspond to a real JSP or Facelets page! So, we can "
+"reproduce the functionality of a traditional action-oriented framework like "
+"Struts or WebWork using page actions. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:74
+#, no-c-format
+msgid "TODO: translate struts action into page action"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:75
+#, no-c-format
+msgid ""
+"This is quite useful if you want to do complex things in response to non-"
+"faces requests (for example, HTTP GET requests)."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:78
+#, no-c-format
+msgid "Page parameters"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:79
+#, no-c-format
+msgid ""
+"A JSF faces request (a form submission) encapsulates both an \"action\" (a "
+"method binding) and \"parameters\" (input value bindings). A page action "
+"might also needs parameters!"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:82
+#, no-c-format
+msgid ""
+"Since GET requests are bookmarkable, page parameters are passed as human-"
+"readable request parameters. (Unlike JSF form inputs, which are anything "
+"but!)"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:85
+#, no-c-format
+msgid ""
+"Seam lets us provide a value binding that maps a named request parameter to "
+"an attribute of a model object."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:88
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\" action=\"#{helloWorld.sayHello}\"&gt;\n"
+"        &lt;param name=\"firstName\" value=\"#{person.firstName}\"/&gt;\n"
+"        &lt;param name=\"lastName\" value=\"#{person.lastName}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:89
+#, no-c-format
+msgid ""
+"The <literal>&lt;param&gt;</literal> declaration is bidirectional, just like "
+"a value binding for a JSF input:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:94
+#, no-c-format
+msgid ""
+"When a non-faces (GET) request for the view id occurs, Seam sets the value "
+"of the named request parameter onto the model object, after performing "
+"appropriate type conversions."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:99
+#, no-c-format
+msgid ""
+"Any <literal>&lt;s:link&gt;</literal> or <literal>&lt;s:button&gt;</literal> "
+"transparently includes the request parameter. The value of the parameter is "
+"determined by evaluating the value binding during the render phase (when the "
+"<literal>&lt;s:link&gt;</literal> is rendered)."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:104
+#, no-c-format
+msgid ""
+"Any navigation rule with a <literal>&lt;redirect/&gt;</literal> to the view "
+"id transparently includes the request parameter. The value of the parameter "
+"is determined by evaluating the value binding at the end of the invoke "
+"application phase."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:109
+#, no-c-format
+msgid ""
+"The value is transparently propagated with any JSF form submission for the "
+"page with the given view id. (This means that view parameters behave like "
+"<literal>PAGE</literal>-scoped context variables for faces requests."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:114
+#, no-c-format
+msgid ""
+"The essential idea behind all this is that <emphasis>however</emphasis> we "
+"get from any other page to <literal>/hello.jsp</literal> (or from <literal>/"
+"hello.jsp</literal> back to <literal>/hello.jsp</literal>), the value of the "
+"model attribute referred to in the value binding is \"remembered\", without "
+"the need for a conversation (or other server-side state)."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:117
+#, no-c-format
+msgid ""
+"This all sounds pretty complex, and you're probably wondering if such an "
+"exotic construct is really worth the effort. Actually, the idea is very "
+"natural once you \"get it\". It is definitely worth taking the time to "
+"understand this stuff. Page parameters are the most elegant way to propagate "
+"state across a non-faces request. They are especially cool for problems like "
+"search screens with bookmarkable results pages, where we would like to be "
+"able to write our application code to handle both POST and GET requests with "
+"the same code. Page parameters eliminate repetitive listing of request "
+"parameters in the view definition and make redirects much easier to code."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:120
+#, no-c-format
+msgid ""
+"Note that you don't need an actual page action method binding to use a page "
+"parameter. The following is perfectly valid:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:123
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\"&gt;\n"
+"        &lt;param name=\"firstName\" value=\"#{person.firstName}\"/&gt;\n"
+"        &lt;param name=\"lastName\" value=\"#{person.lastName}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:124
+#, no-c-format
+msgid "You can even specify a JSF converter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:127
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/calculator.jsp\" action=\"#{calculator.calculate}"
+"\"&gt;\n"
+"        &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"        &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"        &lt;param name=\"op\" converterId=\"com.my.calculator."
+"OperatorConverter\" value=\"#{calculator.op}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:128
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/calculator.jsp\" action=\"#{calculator.calculate}"
+"\"&gt;\n"
+"        &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"        &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"        &lt;param name=\"op\" converter=\"#{operatorConverter}\" value=\"#"
+"{calculator.op}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:129
+#, no-c-format
+msgid "Navigation"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:130
+#, no-c-format
+msgid ""
+"You can use standard JSF navigation rules defined in <literal>faces-config."
+"xml</literal> in a Seam application. However, JSF navigation rules have a "
+"number of annoying limitations:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:135
+#, no-c-format
+msgid ""
+"It is not possible to specify request parameters to be used when redirecting."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:140
+#, no-c-format
+msgid "It is not possible to begin or end conversations from a rule."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:145
+#, no-c-format
+msgid ""
+"Rules work by evaluating the return value of the action method; it is not "
+"possible to evaluate an arbitrary EL expression."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:150
+#, no-c-format
+msgid ""
+"A further problem is that \"orchestration\" logic gets scattered between "
+"<literal>pages.xml</literal> and <literal>faces-config.xml</literal>. It's "
+"better to unify this logic into <literal>pages.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:153
+#, no-c-format
+msgid "This JSF navigation rule:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:156
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"    &lt;from-view-id&gt;/editDocument.xhtml&lt;/from-view-id&gt;\n"
+"    \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-action&gt;#{documentEditor.update}&lt;/from-action&gt;\n"
+"        &lt;from-outcome&gt;success&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/viewDocument.xhtml&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"    \n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:157
+#, no-c-format
+msgid "Can be rewritten as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:160
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if-outcome=\"success\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:161
+#, no-c-format
+msgid ""
+"But it would be even nicer if we didn't have to pollute our "
+"<literal>DocumentEditor</literal> component with string-valued return values "
+"(the JSF outcomes). So Seam lets us write:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:164
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\" \n"
+"                   evaluate=\"#{documentEditor.errors.size}\"&gt;\n"
+"        &lt;rule if-outcome=\"0\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:165
+#, no-c-format
+msgid "Or even:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:168
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:169
+#, no-c-format
+msgid ""
+"The first form evaluates a value binding to determine the outcome value to "
+"be used by the subsequent rules. The second approach ignores the outcome and "
+"evaluates a value binding for each possible rule."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:172
+#, no-c-format
+msgid ""
+"Of course, when an update succeeds, we probably want to end the current "
+"conversation. We can do that like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:175
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:176
+#, no-c-format
+msgid ""
+"But ending the conversation loses any state associated with the "
+"conversation, including the document we are currently interested in! One "
+"solution would be to use an immediate render instead of a redirect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:179
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:180
+#, no-c-format
+msgid ""
+"But the correct solution is to pass the document id as a request parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:183
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"&gt;\n"
+"                &lt;param name=\"documentId\" value=\"#{documentEditor."
+"documentId}\"/&gt;\n"
+"            &lt;/redirect&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:184
+#, no-c-format
+msgid ""
+"Null outcomes are a special case in JSF. The null outcome is interpreted to "
+"mean \"redisplay the page\". The following navigation rule matches any non-"
+"null outcome, but <emphasis>not</emphasis> the null outcome:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:187
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule&gt;\n"
+"            &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:188
+#, no-c-format
+msgid ""
+"If you want to perform navigation when a null outcome occurs, use the "
+"following form instead:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:191
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:192
+#, no-c-format
+msgid ""
+"Fine-grained files for definition of navigation, page actions and parameters"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:193
+#, no-c-format
+msgid ""
+"If you have a lot of different page actions and page parameters, or even "
+"just a lot of navigation rules, you will almost certainly want to split the "
+"declarations up over multiple files. You can define actions and parameters "
+"for a page with the view id <literal>/calc/calculator.jsp</literal> in a "
+"resource named <literal>calc/calculator.page.xml</literal>. The root element "
+"in this case is the <literal>&lt;page&gt;</literal> element, and the view id "
+"is implied:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:196
+#, no-c-format
+msgid ""
+"&lt;page action=\"#{calculator.calculate}\"&gt;\n"
+"    &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"    &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"    &lt;param name=\"op\" converter=\"#{operatorConverter}\" value=\"#"
+"{calculator.op}\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:197
+#, no-c-format
+msgid "Component-driven events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:198
+#, no-c-format
+msgid ""
+"Seam components can interact by simply calling each others methods. Stateful "
+"components may even implement the observer/observable pattern. But to enable "
+"components to interact in a more loosely-coupled fashion than is possible "
+"when the components call each others methods directly, Seam provides "
+"<emphasis>component-driven events</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:201
+#, no-c-format
+msgid ""
+"We specify event listeners (observers) in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:204
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;event type=\"hello\"&gt;\n"
+"        &lt;action expression=\"#{helloListener.sayHelloBack}\"/&gt;\n"
+"        &lt;action expression=\"#{logger.logHello}\"/&gt;\n"
+"    &lt;/event&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:205
+#, no-c-format
+msgid "Where the <emphasis>event type</emphasis> is just an arbitrary string."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:208
+#, no-c-format
+msgid ""
+"When an event occurs, the actions registered for that event will be called "
+"in the order they appear in <literal>components.xml</literal>. How does a "
+"component raise an event? Seam provides a built-in component for this."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:211
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World!\");\n"
+"        Events.instance().raiseEvent(\"hello\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:212
+#, no-c-format
+msgid "Or you can use an annotation."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:215
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    @RaiseEvent(\"hello\")\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World!\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:216
+#, no-c-format
+msgid ""
+"Notice that this event producer has no dependency upon event consumers. The "
+"event listener may now be implemented with absolutely no dependency upon the "
+"producer:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:219
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    public void sayHelloBack() {\n"
+"        FacesMessages.instance().add(\"Hello to you too!\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:220
+#, no-c-format
+msgid ""
+"The method binding defined in <literal>components.xml</literal> above takes "
+"care of mapping the event to the consumer. If you don't like futzing about "
+"in the <literal>components.xml</literal> file, you can use an annotation "
+"instead:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:223
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    @Observer(\"hello\")\n"
+"    public void sayHelloBack() {\n"
+"        FacesMessages.instance().add(\"Hello to you too!\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:224
+#, no-c-format
+msgid ""
+"You might wonder why I've not mentioned anything about event objects in this "
+"discussion. In Seam, there is no need for an event object to propagate state "
+"between event producer and listener. State is held in the Seam contexts, and "
+"is shared between components. However, if you really want to pass an event "
+"object, you can:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:227
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    private String name;\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World, my name is #0.\", "
+"name);\n"
+"        Events.instance().raiseEvent(\"hello\", name);\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:228
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    @Observer(\"hello\")\n"
+"    public void sayHelloBack(String name) {\n"
+"        FacesMessages.instance().add(\"Hello #0!\", name);\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:229
+#, no-c-format
+msgid "Contextual events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:230
+#, no-c-format
+msgid ""
+"Seam defines a number of built-in events that the application can use to "
+"perform special kinds of framework integration. The events are:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:235
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preSetVariable.&lt;name&gt;</literal> &mdash; called "
+"when the context variable &lt;name&gt; is set"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:240
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postSetVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is set"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:245
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preRemoveVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is unset"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:250
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postRemoveVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is unset"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:255
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preDestroyContext.&lt;SCOPE&gt;</literal> &mdash; "
+"called before the &lt;SCOPE&gt; context is destroyed"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:260
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postDestroyContext.&lt;SCOPE&gt;</literal> &mdash; "
+"called after the &lt;SCOPE&gt; context is destroyed"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:265
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beginConversation </literal>&mdash; called whenever "
+"a long-running conversation begins"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:270
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endConversation </literal>&mdash; called whenever a "
+"long-running conversation ends"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:275
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beginPageflow.&lt;name&gt; </literal>&mdash; called "
+"when the pageflow &lt;name&gt; begins"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:280
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endPageflow.&lt;name&gt; </literal>&mdash; called "
+"when the pageflow &lt;name&gt; ends"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:285
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.createProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; is created"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:290
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; ends"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:295
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.initProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; is associated with the conversation"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:300
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.initTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is associated with the conversation"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:305
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.startTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is started"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:310
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is ended"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:315
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postCreate.&lt;name&gt; </literal>&mdash; called "
+"when the component &lt;name&gt; is created"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:320
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preDestroy.&lt;name&gt; </literal>&mdash; called "
+"when the component &lt;name&gt; is destroyed"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:325
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beforePhase </literal>&mdash; called before the "
+"start of a JSF phase"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:330
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.afterPhase </literal>&mdash; called after the end of "
+"a JSF phase"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:335
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postAuthenticate.&lt;name&gt; </literal>&mdash; "
+"called after a user is authenticated"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:340
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preAuthenticate.&lt;name&gt; </literal>&mdash; "
+"called before attempting to authenticate a user"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:345
+#, no-c-format
+msgid ""
+"Seam components may observe any of these events in just the same way they "
+"observe any other component-driven events."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:348
+#, no-c-format
+msgid "Seam interceptors"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:349
+#, no-c-format
+msgid ""
+"EJB 3.0 introduced a standard interceptor model for session bean components. "
+"To add an interceptor to a bean, you need to write a class with a method "
+"annotated <literal>@AroundInvoke</literal> and annotate the bean with an "
+"<literal>@Interceptors</literal> annotation that specifies the name of the "
+"interceptor class. For example, the following interceptor checks that the "
+"user is logged in before allowing invoking an action listener method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:352
+#, no-c-format
+msgid ""
+"public class LoggedInInterceptor {\n"
+"\n"
+"   @AroundInvoke\n"
+"   public Object checkLoggedIn(InvocationContext invocation) throws "
+"Exception {\n"
+"   \n"
+"      boolean isLoggedIn = Contexts.getSessionContext().get(\"loggedIn\")!"
+"=null;\n"
+"      if (isLoggedIn) {\n"
+"         //the user is already logged in\n"
+"         return invocation.proceed();\n"
+"      }\n"
+"      else {\n"
+"         //the user is not logged in, fwd to login page\n"
+"         return \"login\";\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:353
+#, no-c-format
+msgid ""
+"To apply this interceptor to a session bean which acts as an action "
+"listener, we must annotate the session bean <literal>@Interceptors"
+"(LoggedInInterceptor.class)</literal>. This is a somewhat ugly annotation. "
+"Seam builds upon the interceptor framework in EJB3 by allowing you to use "
+"<literal>@Interceptors</literal> as a meta-annotation. In our example, we "
+"would create an <literal>@LoggedIn</literal> annotation, as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:356
+#, no-c-format
+msgid ""
+"@Target(TYPE)\n"
+"@Retention(RUNTIME)\n"
+"@Interceptors(LoggedInInterceptor.class)\n"
+"public @interface LoggedIn {}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:357
+#, no-c-format
+msgid ""
+"We can now simply annotate our action listener bean with <literal>@LoggedIn</"
+"literal> to apply the interceptor."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:360
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"changePasswordAction\")\n"
+"@LoggedIn\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class ChangePasswordAction implements ChangePassword { \n"
+"    \n"
+"    ...\n"
+"    \n"
+"    public String changePassword() { ... }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:361
+#, no-c-format
+msgid ""
+"If interceptor ordering is important (it usually is), you can add "
+"<literal>@Interceptor</literal> annotations to your interceptor classes to "
+"specify a partial order of interceptors."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:364
+#, no-c-format
+msgid ""
+"@Interceptor(around={BijectionInterceptor.class,\n"
+"                     ValidationInterceptor.class,\n"
+"                     ConversationInterceptor.class},\n"
+"             within=RemoveInterceptor.class)\n"
+"public class LoggedInInterceptor\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:365
+#, no-c-format
+msgid ""
+"You can even have a \"client-side\" interceptor, that runs around any of the "
+"built-in functionality of EJB3:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:368
+#, no-c-format
+msgid ""
+"@Interceptor(type=CLIENT)\n"
+"public class LoggedInInterceptor\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:369
+#, no-c-format
+msgid ""
+"EJB interceptors are stateful, with a lifecycle that is the same as the "
+"component they intercept. For interceptors which do not need to maintain "
+"state, Seam lets you get a performance optimization by specifying "
+"<literal>@Interceptor(stateless=true)</literal>."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:372
+#, no-c-format
+msgid ""
+"Much of the functionality of Seam is implemented as a set of built-in Seam "
+"interceptors, including the interceptors named in the previous example. You "
+"don't have to explicitly specify these interceptors by annotating your "
+"components; they exist for all interceptable Seam components."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:375
+#, no-c-format
+msgid ""
+"You can even use Seam interceptors with JavaBean components, not just EJB3 "
+"beans!"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:378
+#, no-c-format
+msgid ""
+"EJB defines interception not only for business methods (using "
+"<literal>@AroundInvoke</literal>), but also for the lifecycle methods "
+"<literal>@PostConstruct</literal>, <literal>@PreDestroy</literal>, "
+"<literal>@PrePassivate</literal> and <literal>@PostActive</literal>. Seam "
+"supports all these lifecycle methods on both component and interceptor not "
+"only for EJB3 beans, but also for JavaBean components (except "
+"<literal>@PreDestroy</literal> which is not meaningful for JavaBean "
+"components)."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:381
+#, no-c-format
+msgid "Managing exceptions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:382
+#, no-c-format
+msgid ""
+"JSF is surprisingly limited when it comes to exception handling. As a "
+"partial workaround for this problem, Seam lets you define how a particular "
+"class of exception is to be treated by annotating the exception class, or "
+"declaring the exception class in an XML file. This facility is meant to be "
+"combined with the EJB 3.0-standard <literal>@ApplicationException</literal> "
+"annotation which specifies whether the exception should cause a transaction "
+"rollback."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:385
+#, no-c-format
+msgid "Exceptions and transactions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:386
+#, no-c-format
+msgid ""
+"EJB specifies well-defined rules that let us control whether an exception "
+"immediately marks the current transaction for rollback when it is thrown by "
+"a business method of the bean: <emphasis>system exceptions</emphasis> always "
+"cause a transaction rollback, <emphasis>application exceptions</emphasis> do "
+"not cause a rollback by default, but they do if "
+"<literal>@ApplicationException(rollback=true)</literal> is specified. (An "
+"application exception is any checked exception, or any unchecked exception "
+"annotated <literal>@ApplicationException</literal>. A system exception is "
+"any unchecked exception without an <literal>@ApplicationException</literal> "
+"annotation.)"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:389
+#, no-c-format
+msgid ""
+"Note that there is a difference between marking a transaction for rollback, "
+"and actually rolling it back. The exception rules say that the transaction "
+"should be marked rollback only, but it may still be active after the "
+"exception is thrown."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:392
+#, no-c-format
+msgid ""
+"Seam applies the EJB 3.0 exception rollback rules also to Seam JavaBean "
+"components."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:395
+#, no-c-format
+msgid ""
+"But these rules only apply in the Seam component layer. What about an "
+"exception that is uncaught and propagates out of the Seam component layer, "
+"and out of the JSF layer? Well, it is always wrong to leave a dangling "
+"transaction open, so Seam rolls back any active transaction when an "
+"exception occurs and is uncaught in the Seam component layer."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:398
+#, no-c-format
+msgid "Enabling Seam exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:399
+#, no-c-format
+msgid ""
+"To enable Seam's exception handling, we need to make sure we have the master "
+"servlet filter declared in <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:402
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.servlet.SeamFilter&lt;/filter-"
+"class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:403
+#, no-c-format
+msgid "Using annotations for exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:404
+#, no-c-format
+msgid ""
+"The following exception results in a HTTP 404 error whenever it propagates "
+"out of the Seam component layer. It does not roll back the current "
+"transaction immediately when thrown, but the transaction will be rolled back "
+"if it the exception is not caught by another Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:407
+#, no-c-format
+msgid ""
+"@HttpError(errorCode=404)\n"
+"public class ApplicationException extends Exception { ... }"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:408
+#, no-c-format
+msgid ""
+"This exception results in a browser redirect whenever it propagates out of "
+"the Seam component layer. It also ends the current conversation. It causes "
+"an immediate rollback of the current transaction."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:411
+#, no-c-format
+msgid ""
+"@Redirect(viewId=\"/failure.xhtml\", end=true)\n"
+"@ApplicationException(rollback=true)\n"
+"public class UnrecoverableApplicationException extends RuntimeException "
+"{ ... }"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:412
+#, no-c-format
+msgid ""
+"Note that <literal>@Redirect</literal> does not work for exceptions which "
+"occur during the render phase of the JSF lifecycle."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:415
+#, no-c-format
+msgid ""
+"This exception results in a redirect, along with a message to the user, when "
+"it propagates out of the Seam component layer. It also immediately rolls "
+"back the current transaction."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:418
+#, no-c-format
+msgid ""
+"@Redirect(viewId=\"/error.xhtml\", message=\"Unexpected error\")\n"
+"public class SystemException extends RuntimeException { ... }"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:419
+#, no-c-format
+msgid "Using XML for exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:420
+#, no-c-format
+msgid ""
+"Since we can't add annotations to all the exception classes we are "
+"interested in, Seam also lets us specify this functionality in "
+"<literal>pages.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:423
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   \n"
+"   &lt;exception class=\"javax.persistence.EntityNotFoundException\"&gt;\n"
+"      &lt;http-error error-code=\"404\"/&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"   &lt;exception class=\"javax.persistence.PersistenceException\"&gt;\n"
+"      &lt;end-conversation/&gt;\n"
+"      &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"          &lt;message&gt;Database access failed&lt;/message&gt;\n"
+"      &lt;/redirect&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"   &lt;exception&gt;\n"
+"      &lt;end-conversation/&gt;\n"
+"      &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"          &lt;message&gt;Unexpected failure&lt;/message&gt;\n"
+"      &lt;/redirect&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:424
+#, no-c-format
+msgid ""
+"The last <literal>&lt;exception&gt;</literal> declaration does not specify a "
+"class, and is a catch-all for any exception for which handling is not "
+"otherwise specified via annotations or in <literal>pages.xml</literal>."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Framework.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Framework.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Framework.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,828 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Framework.xml:10
+#, no-c-format
+msgid "The Seam Application Framework"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:11
+#, no-c-format
+msgid ""
+"Seam makes it really easy to create applications by writing plain Java "
+"classes with annotations, which don't need to extend any special interfaces "
+"or superclasses. But we can simplify some common programming tasks even "
+"further, by providing a set of pre-built components which can be re-used "
+"either by configuration in <literal>components.xml</literal> (for very "
+"simple cases) or extension."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:14
+#, no-c-format
+msgid ""
+"The <emphasis>Seam Application Framework</emphasis> can reduce the amount of "
+"code you need to write when doing basic database access in a web "
+"application, using either Hibernate or JPA."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:17
+#, no-c-format
+msgid ""
+"We should emphasize that the framework is extremely simple, just a handful "
+"of simple classes that are easy to understand and extend. The \"magic\" is "
+"in Seam itself&mdash;the same magic you use when creating any Seam "
+"application even without using this framework."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:21
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:22
+#, no-c-format
+msgid ""
+"The components provided by the Seam application framework may be used in one "
+"of two different approaches. The first way is to install and configure an "
+"instance of the component in <literal>components.xml</literal>, just like we "
+"have done with other kinds of built-in Seam components. For example, the "
+"following fragment from <literal>components.xml</literal> installs a "
+"component which can perform basic CRUD operations for a <literal>Contact</"
+"literal> entity:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:25
+#, no-c-format
+msgid ""
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" \n"
+"                       entity-manager=\"#{personDatabase}\"&gt;\n"
+"    &lt;framework:id&gt;#{param.personId}&lt;/framework:id&gt;\n"
+"&lt;/framework:entity-home&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:26
+#, no-c-format
+msgid ""
+"If that looks a bit too much like \"programming in XML\" for your taste, you "
+"can use extension instead:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:29
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; implements "
+"LocalPersonHome {\n"
+"    @RequestParameter String personId;\n"
+"    @In EntityManager personDatabase;\n"
+"    \n"
+"    public Object getId() { return personId; }\n"
+"    public EntityManager getEntityManager() { return personDatabase; }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:30
+#, no-c-format
+msgid ""
+"The second approach has one huge advantage: you can easily add extra "
+"functionality, and override the built-in functionality (the framework "
+"classes were carefully designed for extension and customization)."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:33
+#, no-c-format
+msgid ""
+"A second advantage is that your classes may be EJB stateful sessin beans, if "
+"you like. (They do not have to be, they can be plain JavaBean components if "
+"you prefer.)"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:36
+#, no-c-format
+msgid ""
+"At this time, the Seam Application Framework provides just four built-in "
+"components: <literal>EntityHome</literal> and <literal>HibernateEntityHome</"
+"literal> for CRUD, along with <literal>EntityQuery</literal> and "
+"<literal>HibernateEntityQuery</literal> for queries."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:39
+#, no-c-format
+msgid ""
+"The Home and Query components are written so that they can function with a "
+"scope of session, event or conversation. Which scope you use depends upon "
+"the state model you wish to use in your application."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:42
+#, no-c-format
+msgid ""
+"The Seam Application Framework only works with Seam-managed persistence "
+"contexts. By default, the components will look for a persistence context "
+"named <literal>entityManager</literal>."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:48
+#, no-c-format
+msgid "Home objects"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:49
+#, no-c-format
+msgid ""
+"A Home object provides persistence operations for a particular entity class. "
+"Suppose we have our trusty <literal>Person</literal> class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:52
+#, no-c-format
+msgid ""
+"@Entity\n"
+"public class Person {\n"
+"    @Id private Long id;\n"
+"    private String firstName;\n"
+"    private String lastName;\n"
+"    private Country nationality;\n"
+"    \n"
+"    //getters and setters...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:53
+#, no-c-format
+msgid ""
+"We can define a <literal>personHome</literal> component either via "
+"configuration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:56
+#, no-c-format
+msgid ""
+"&lt;framework:entity-home name=\"personHome\" entity-class=\"eg.Person\" /"
+"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:57
+#, no-c-format
+msgid "Or via extension:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:60
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:61
+#, no-c-format
+msgid ""
+"A Home object provides the following operations: <literal>persist()</"
+"literal>, <literal>remove()</literal>, <literal>update()</literal> and "
+"<literal>getInstance()</literal>. Before you can call the <literal>remove()</"
+"literal>, or <literal>update()</literal> operations, you must first set the "
+"identifier of the object you are interested in, using the <literal>setId()</"
+"literal> method."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:64
+#, no-c-format
+msgid "We can use a Home directly from a JSF page, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:67
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Create Person&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{personHome.instance."
+"firstName}\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{personHome.instance."
+"lastName}\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:68
+#, no-c-format
+msgid ""
+"Usually, it is much nicer to be able to refer to the <literal>Person</"
+"literal> merely as <literal>person</literal>, so let's make that possible by "
+"adding a line to <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:71
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:72
+#, no-c-format
+msgid ""
+"(If we are using configuration.) Or by adding a <literal>@Factory</literal> "
+"method to <literal>PersonHome</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:75
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:76
+#, no-c-format
+msgid ""
+"(If we are using extension.) This change simplifies our JSF page to the "
+"following:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:79
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Create Person&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{person.firstName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{person.lastName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:80
+#, no-c-format
+msgid ""
+"Well, that lets us create new <literal>Person</literal> entries. Yes, that "
+"is all the code that is required! Now, if we want to be able to display, "
+"update and delete pre-existing <literal>Person</literal> entries in the "
+"database, we need to be able to pass the entry identifier to the "
+"<literal>PersonHome</literal>. Page parameters are a great way to do that:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:83
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page viewid=\"/editPerson.jsp\"&gt;\n"
+"        &lt;param name=\"personId\" value=\"#{personHome.id}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:84
+#, no-c-format
+msgid "Now we can add the extra operations to our JSF page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:87
+#, no-c-format
+msgid ""
+"&lt;h1&gt;\n"
+"    &lt;h:outputText rendered=\"#{!personHome.managed}\" value=\"Create "
+"Person\"/&gt;\n"
+"    &lt;h:outputText rendered=\"#{personHome.managed}\" value=\"Edit Person"
+"\"/&gt;\n"
+"&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{person.firstName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{person.lastName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\" \n"
+"            rendered=\"#{!personHome.managed}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Update Person\" action=\"#{personHome."
+"update}\" \n"
+"            rendered=\"#{personHome.managed}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Delete Person\" action=\"#{personHome."
+"remove}\" \n"
+"            rendered=\"#{personHome.managed}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:88
+#, no-c-format
+msgid ""
+"When we link to the page with no request parameters, the page will be "
+"displayed as a \"Create Person\" page. When we provide a value for the "
+"<literal>personId</literal> request parameter, it will be an \"Edit Person\" "
+"page."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:91
+#, no-c-format
+msgid ""
+"Suppose we need to create <literal>Person</literal> entries with their "
+"nationality initialized. We can do that easily, via configuration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:94
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" \n"
+"                       new-instance=\"#{newPerson}\"/&gt;\n"
+"\n"
+"&lt;component name=\"newPerson\" \n"
+"           class=\"eg.Person\"&gt;\n"
+"    &lt;property name=\"nationality\"&gt;#{country}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:95
+#, no-c-format
+msgid "Or by extension:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:98
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:99
+#, no-c-format
+msgid ""
+"Of course, the <literal>Country</literal> could be an object managed by "
+"another Home object, for example, <literal>CountryHome</literal>."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:102
+#, no-c-format
+msgid ""
+"To add more sophisticated operations (association management, etc), we can "
+"just add methods to <literal>PersonHome</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:105
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"    public void migrate()\n"
+"    {\n"
+"        getInstance().setCountry(country);\n"
+"        update();\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:106
+#, no-c-format
+msgid ""
+"The Home object automatically displays faces messages when an operation is "
+"successful. To customize these messages we can, again, use configuration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:109
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\"\n"
+"                       entity-class=\"eg.Person\"\n"
+"                       new-instance=\"#{newPerson}\"&gt;\n"
+"    &lt;framework:created-message&gt;New person #{person.firstName} #{person."
+"lastName} \n"
+"        created&lt;/framework:created-message&gt;\n"
+"    &lt;framework:deleted-message&gt;Person #{person.firstName} #{person."
+"lastName}\n"
+"        deleted&lt;/framework:deleted-message&gt;\n"
+"    &lt;framework:updated-message&gt;Person #{person.firstName} #{person."
+"lastName} \n"
+"        updated&lt;/framework:updated-message&gt;\n"
+"&lt;/framework:entity-home&gt;\n"
+"\n"
+"&lt;component name=\"newPerson\" \n"
+"           class=\"eg.Person\"&gt;\n"
+"    &lt;property name=\"nationality\"&gt;#{country}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:110
+#, no-c-format
+msgid "Or extension:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:113
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"    protected String getCreatedMessage() { return \"New person #{person."
+"firstName} \n"
+"        #{person.lastName} created\"; }\n"
+"    protected String getUpdatedMessage() { return \"Person #{person."
+"firstName} \n"
+"        #{person.lastName} updated\"; }\n"
+"    protected String getDeletedMessage() { return \"Person #{person."
+"firstName} \n"
+"        #{person.lastName} deleted\"; }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:114
+#, no-c-format
+msgid ""
+"But the best way to specify the messages is to put them in a resource bundle "
+"known to Seam (the bundle named <literal>messages</literal>, by default)."
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:117
+#, no-c-format
+msgid ""
+"Person_created=New person #{person.firstName} #{person.lastName} created\n"
+"Person_deleted=Person #{person.firstName} #{person.lastName} deleted\n"
+"Person_updated=Person #{person.firstName} #{person.lastName} updated"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:118
+#, no-c-format
+msgid ""
+"This enables internationalization, and keeps your code and configuration "
+"clean of presentation concerns."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:121
+#, no-c-format
+msgid ""
+"The final step is to add validation functionality to the page, using "
+"<literal>&lt;s:validateAll&gt;</literal> and <literal>&lt;s:decorate&gt;</"
+"literal>, but I'll leave that for you to figure out."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:127
+#, no-c-format
+msgid "Query objects"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:128
+#, no-c-format
+msgid ""
+"If we need a list of all <literal>Person</literal> instance in the database, "
+"we can use a Query object. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:131
+#, no-c-format
+msgid ""
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:132
+#, no-c-format
+msgid "We can use it from a JSF page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:135
+#, no-c-format
+msgid ""
+"&lt;h1&gt;List of people&lt;/h1&gt;\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view-id=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:136
+#, no-c-format
+msgid "We probably need to support pagination:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:139
+#, no-c-format
+msgid ""
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\" \n"
+"                        order=\"lastName\" \n"
+"                        max-results=\"20\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:140
+#, no-c-format
+msgid "We'll use a page parameter to determine the page to display:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:143
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page viewid=\"/searchPerson.jsp\"&gt;\n"
+"        &lt;param name=\"firstResult\" value=\"#{people.firstResult}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:144
+#, no-c-format
+msgid "The JSF code for a pagination control is a bit verbose, but manageable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:147
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Search for people&lt;/h1&gt;\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view-id=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.previousExists}\" "
+"value=\"First Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"0\"/&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.previousExists}\" "
+"value=\"Previous Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.previousFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.nextExists}\" value="
+"\"Next Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.nextFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.nextExists}\" value="
+"\"Last Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.lastFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:148
+#, no-c-format
+msgid ""
+"Real search screens let the user enter a bunch of optional search criteria "
+"to narrow the list of results returned. The Query object lets you specify "
+"optional \"restrictions\" to support this important usecase:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:151
+#, no-c-format
+msgid ""
+"&lt;component name=\"examplePerson\" class=\"Person\"/&gt;\n"
+"        \n"
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\" \n"
+"                        order=\"lastName\" \n"
+"                        max-results=\"20\"&gt;\n"
+"    &lt;framework:restrictions&gt;\n"
+"        &lt;value&gt;lower(firstName) like lower( #{examplePerson.firstName} "
+"+ '&#37;' )&lt;/value&gt;\n"
+"        &lt;value&gt;lower(lastName) like lower( #{examplePerson.lastName} + "
+"'&#37;' )&lt;/value&gt;\n"
+"    &lt;/framework:restrictions&gt;\n"
+"&lt;/framework:entity-query&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:152
+#, no-c-format
+msgid "Notice the use of an \"example\" object."
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:155
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Search for people&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{examplePerson.firstName}"
+"\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{examplePerson.lastName}"
+"\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;&lt;h:commandButton value=\"Search\" action=\"/search.jsp\"/"
+"&gt;&lt;/div&gt;\n"
+"&lt;/h:form&gt;\n"
+"\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view-id=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:156
+#, no-c-format
+msgid ""
+"The examples in this section have all shown reuse by configuration. However, "
+"reuse by extension is equally possible for Query objects."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:162
+#, no-c-format
+msgid "Controller objects"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:163
+#, no-c-format
+msgid ""
+"A totally optional part of the Seam Application Framework is the class "
+"<literal>Controller</literal> and its subclasses <literal>EntityController</"
+"literal><literal>HibernateEntityController</literal> and "
+"<literal>BusinessProcessController</literal>. These classes provide nothing "
+"more than some convenience methods for access to commonly used built-in "
+"components and methods of built-in components. They help save a few "
+"keystrokes (characters can add up!) and provide a great launchpad for new "
+"users to explore the rich functionality built in to Seam."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:166
+#, no-c-format
+msgid ""
+"For example, here is what <literal>RegisterAction</literal> from the Seam "
+"registration example would look like:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:169
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"register\")\n"
+"public class RegisterAction extends EntityController implements Register\n"
+"{\n"
+"\n"
+"   @In private User user;\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = createQuery(\"select u.username from User u where u."
+"username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getResultList();\n"
+"      \n"
+"      if ( existing.size()==0 )\n"
+"      {\n"
+"         persist(user);\n"
+"         info(\"Registered new user #{user.username}\");\n"
+"         return \"/registered.jspx\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         addFacesMessage(\"User #{user.username} already exists\");\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:170
+#, no-c-format
+msgid "As you can see, its not an earthshattering improvement..."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Gettingstarted.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Gettingstarted.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Gettingstarted.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,588 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Gettingstarted.xml:10
+#, no-c-format
+msgid "Getting started with Seam, using seam-gen"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:11
+#, no-c-format
+msgid ""
+"The Seam distribution includes a command line utility that makes it really "
+"easy to set up an Eclipse project, generate some simple Seam skeleton code, "
+"and reverse engineer an application from a pre-existing database."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:14
+#, no-c-format
+msgid ""
+"This is the easy way to get your feet wet with Seam, and gives you some "
+"ammunition for next time you find yourself trapped in an elevator with one "
+"of those tedious Ruby guys ranting about how great and wonderful his new toy "
+"is for building totally trivial applications that put things in databases."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:17
+#, no-c-format
+msgid ""
+"In this release, seam-gen works best for people with JBoss AS. You can use "
+"the generated project with other J2EE or Java EE 5 application servers by "
+"making a few manual changes to the project configuration."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:20
+#, no-c-format
+msgid ""
+"You <emphasis>can</emphasis> use seam-gen without Eclipse, but in this "
+"tutorial, we want to show you how to use it in conjunction with Eclipse for "
+"debugging and integration testing. If you don't want to install Eclipse, you "
+"can still follow along with this tutorial&mdash;all steps can be peformed "
+"from the command line."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:23
+#, no-c-format
+msgid ""
+"Seam-gen is basically just a big ugly Ant script wrapped around Hibernate "
+"Tools, together with some templates. Which means it is easy to customize if "
+"you need to."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:27
+#, no-c-format
+msgid "Before you start"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:28
+#, no-c-format
+msgid ""
+"Make sure you have JDK 5 or JDK 6, JBoss AS 4.0.5 and Ant 1.6, along with "
+"recent versions of Eclipse, the JBoss IDE plugin for Eclipse and the TestNG "
+"plugin for Eclipse correctly installed before starting. Add your JBoss "
+"installation to the JBoss Server View in Eclipse. Start JBoss in debug mode. "
+"Finally, start a command prompt in the directory where you unzipped the Seam "
+"distribution."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:34
+#, no-c-format
+msgid "Setting up a new Eclipse project"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:35
+#, no-c-format
+msgid ""
+"The first thing we need to do is configure seam-gen for your environment: "
+"JBoss AS installation directory, Eclipse workspace, and database connection. "
+"It's easy, just type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:38
+#, no-c-format
+msgid ""
+"cd jboss-seam-1.1.x\n"
+"seam setup"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:39
+#, no-c-format
+msgid "And you will be prompted for the needed information:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:42
+#, no-c-format
+msgid ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam setup\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"setup:\n"
+"    [echo] Welcome to seam-gen :-)\n"
+"    [input] Enter your Java project workspace [C:/Projects]\n"
+"\n"
+"    [input] Enter your JBoss home directory [C:/Program Files/jboss-4.0.5."
+"GA]\n"
+"\n"
+"    [input] Enter the project name [myproject]\n"
+"helloworld\n"
+"    [input] Is this project deployed as an EAR (with EJB components) or a "
+"WAR \n"
+"        (with no EJB support) [ear] (ear,war,)\n"
+"\n"
+"    [input] Enter the Java package name for your session beans [com.mydomain."
+"helloworld]\n"
+"org.jboss.helloworld\n"
+"    [input] Enter the Java package name for your entity beans [org.jboss."
+"helloworld]\n"
+"\n"
+"    [input] Enter the Java package name for your test cases [org.jboss."
+"helloworld.test]\n"
+"\n"
+"    [input] What kind of database are you using? [hsql]\n"
+"    (hsql,mysql,oracle,postgres,mssql,db2,sybase,)\n"
+"mysql\n"
+"    [input] Enter the Hibernate dialect for your database [org.hibernate."
+"dialect.MySQLDialect]\n"
+"\n"
+"    [input] Enter the filesystem path to the JDBC driver jar [lib/hsqldb."
+"jar]\n"
+"../../mysql-connector.jar\n"
+"    [input] Enter JDBC driver class for your database [com.mysql.jdbc."
+"Driver]\n"
+"\n"
+"    [input] Enter the JDBC URL for your database [jdbc:mysql:///test]\n"
+"\n"
+"    [input] Enter database username [sa]\n"
+"gavin\n"
+"    [input] Enter database password []\n"
+"\n"
+"    [input] Are you working with tables that already exist in the database? "
+"[n] (y,n,)\n"
+"y\n"
+"    [input] Do you want to drop and recreate the database tables and data in "
+"import.sql \n"
+"    each time you deploy? [n] (y,n,)\n"
+"n\n"
+"[propertyfile] Creating new property file: C:&#92;Projects&#92;jboss-"
+"seam&#92;seam-gen&#92;build.properties\n"
+"     [echo] Installing JDBC driver jar to JBoss server\n"
+"     [echo] Type 'seam new-project' to create the new project\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 1 minute 17 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:43
+#, no-c-format
+msgid ""
+"The tool provides sensible defaults, which you can accept by just pressing "
+"enter at the prompt."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:46
+#, no-c-format
+msgid ""
+"The most important choice you need to make is between EAR deployment and WAR "
+"deployment of your project. EAR projects support EJB 3.0 and require Java EE "
+"5. WAR projects do not support EJB 3.0, but may be deployed to a J2EE "
+"environment. The packaging of a WAR is also simpler to understand. If you "
+"installed JBoss with the ejb3 profile, choose <literal>ear</literal>. "
+"Otherwise, choose <literal>war</literal>. We'll assume that you've chosen an "
+"EAR deployment for the rest of the tutorial, but you can follow exactly the "
+"same steps for a WAR deployment."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:49
+#, no-c-format
+msgid ""
+"If you are working with an existing data model, make sure you tell seam-gen "
+"that the tables already exist in the database."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:52
+#, no-c-format
+msgid ""
+"The settings are stored in <literal>seam-gen/build.properties</literal>, but "
+"you can also modify them simply by running <literal>seam setup</literal> a "
+"second time."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:55
+#, no-c-format
+msgid ""
+"Now we can create a new project in our Eclipse workspace directory, by "
+"typing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:58
+#, no-c-format
+msgid "seam new-project"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:59
+#, no-c-format
+msgid ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam new-project\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"copy-lib:\n"
+"     [echo] Copying project jars ...\n"
+"     [copy] Copying 32 files to C:&#92;Projects&#92;helloworld&#92;lib\n"
+"     [copy] Copying 9 files to C:&#92;Projects&#92;helloworld&#92;embedded-"
+"ejb\n"
+"\n"
+"file-copy-wtp:\n"
+"\n"
+"file-copy:\n"
+"     [echo] Copying project resources ...\n"
+"     [copy] Copying 12 files to C:&#92;Projects&#92;helloworld&#92;"
+"resources\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;helloworld&#92;resources\n"
+"     [copy] Copying 5 files to C:&#92;Projects&#92;helloworld&#92;view\n"
+"     [copy] Copying 5 files to C:&#92;Projects&#92;helloworld\n"
+"    [mkdir] Created dir: C:&#92;Projects&#92;helloworld&#92;src\n"
+"\n"
+"new-project:\n"
+"     [echo] A new Seam project was created in the C:/Projects directory\n"
+"     [echo] Add the project from inside Eclipse (or type 'seam explode') and "
+"go to http://localhost:\n"
+"8080/helloworld\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 7 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:60
+#, no-c-format
+msgid ""
+"This copies the Seam jars, dependent jars and the JDBC driver jar to a new "
+"Eclipse project, and generates all needed resources and configuration files, "
+"a facelets template file and stylesheet, along with Eclipse metadata and an "
+"Ant build script. The Eclipse project will be automatically deployed to an "
+"exploded directory structure in JBoss AS as soon as you add the project "
+"using <literal>New -&gt; Project... -&gt; Java Project -&gt; Next</literal>, "
+"typing the <literal>Project name</literal> (<literal>myproject</literal> in "
+"this case), selecting your Java SE 5 or Java SE 6 JRE and then clicking "
+"<literal>Finish</literal>. Do not select <literal>Create new project from "
+"existing source</literal>. Alternatively, you can deploy the project from "
+"outside Eclipse by typing <literal>seam explode</literal>."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:63
+#, no-c-format
+msgid ""
+"Go to <literal>http://localhost:8080/helloworld</literal> to see a welcome "
+"page. This is a facelets page, <literal>view/home.xhtml</literal>, using the "
+"template <literal>view/layout/template.xhtml</literal>. You can edit this "
+"page, or the template, in eclipse, and see the results "
+"<emphasis>immediately</emphasis>, by clicking refresh in your browser."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:66
+#, no-c-format
+msgid ""
+"Don't get scared by the XML configuration documents that were generated into "
+"the project directory. They are mostly standard Java EE stuff, the stuff you "
+"need to create once and then never look at again, and they are 90&#37; the "
+"same between all Seam projects. (They are so easy to write that even seam-"
+"gen can do it.)"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:69
+#, no-c-format
+msgid ""
+"The generated project includes three database and persistence "
+"configurations. The <literal>jboss-beans.xml</literal>, <literal>persistence-"
+"test.xml</literal> and <literal>import-test.sql</literal> files are used "
+"when running the TestNG unit tests against HSQLDB. The database schema and "
+"the test data in <literal>import-test.sql</literal> is always exported to "
+"the database before running tests. The <literal>myproject-dev-ds.xml</"
+"literal>, <literal>persistence-dev.xml</literal>and <literal>import-dev.sql</"
+"literal> files are for use when deploying the application to your "
+"development database. The schema might be exported automatically at "
+"deployment, depending upon whether you told seam-gen that you are working "
+"with an existing database. The <literal>myproject-prod-ds.xml</literal>, "
+"<literal>persistence-prod.xml</literal>and <literal>import-prod.sql</"
+"literal> files are for use when deploying the application to your production "
+"database. The schema is not exported automatically at deployment."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:75
+#, no-c-format
+msgid "Creating a new action"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:76
+#, no-c-format
+msgid ""
+"If you're used to traditional action-style web frameworks, you're probably "
+"wondering how you can create a simple webpage with a stateless action method "
+"in Java. If you type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:79
+#, no-c-format
+msgid "seam new-action"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:80
+#, no-c-format
+msgid ""
+"Seam will prompt for some information, and generate a new facelets page and "
+"Seam component for your project."
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:83
+#, no-c-format
+msgid ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam new-action ping\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"action-input:\n"
+"    [input] Enter the Seam component name\n"
+"ping\n"
+"    [input] Enter the local interface name [Ping]\n"
+"\n"
+"    [input] Enter the bean class name [PingBean]\n"
+"\n"
+"    [input] Enter the action method name [ping]\n"
+"\n"
+"    [input] Enter the page name [ping]\n"
+"\n"
+"\n"
+"setup-filters:\n"
+"\n"
+"new-action:\n"
+"     [echo] Creating a new stateless session bean component with an action "
+"method\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;view\n"
+"     [echo] Type 'seam restart' and go to \n"
+"     http://localhost:8080/helloworld/ping.seam\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 13 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:84
+#, no-c-format
+msgid ""
+"Because we've added a new Seam component, we need to restart the exploded "
+"directory deployment. You can do this by typing <literal>seam restart</"
+"literal>, or by running the <literal>restart</literal> target in the "
+"generated project <literal>build.xml</literal> file from inside Eclipse. "
+"Another way to force a restart is to edit the file <literal>resources/META-"
+"INF/application.xml</literal> in Eclipse. <emphasis>Note that you do not "
+"need to restart JBoss each time you change the application.</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:87
+#, no-c-format
+msgid ""
+"Now go to <literal>http://localhost:8080/helloworld/ping.seam</literal> and "
+"click the button. You can see the code behind this action by looking in the "
+"project <literal>src</literal> directory. Put a breakpoint in the "
+"<literal>ping()</literal> method, and click the button again."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:90
+#, no-c-format
+msgid ""
+"Finally, locate the <literal>PingTest.xml</literal> file in the test package "
+"and run the integration tests using the TestNG plugin for Eclipse. "
+"Alternatively, run the tests using <literal>seam test</literal> or the "
+"<literal>test</literal> target of the generated build."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:96
+#, no-c-format
+msgid "Creating a form with an action"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:97
+#, no-c-format
+msgid "The next step is to create a form. Type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:100
+#, no-c-format
+msgid "seam new-form"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:101
+#, no-c-format
+msgid ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam new-form\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"action-input:\n"
+"    [input] Enter the Seam component name\n"
+"hello\n"
+"    [input] Enter the local interface name [Hello]\n"
+"\n"
+"    [input] Enter the bean class name [HelloBean]\n"
+"\n"
+"    [input] Enter the action method name [hello]\n"
+"\n"
+"    [input] Enter the page name [hello]\n"
+"\n"
+"\n"
+"setup-filters:\n"
+"\n"
+"new-form:\n"
+"     [echo] Creating a new stateful session bean component with an action "
+"method\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;view\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [echo] Type 'seam restart' and go to http://localhost:8080/hello/hello."
+"seam\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 5 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:102
+#, no-c-format
+msgid ""
+"Restart the application again, and go to <literal>http://localhost:8080/"
+"helloworld/hello.seam</literal>. Then take a look at the generated code. Run "
+"the test. Try adding some new fields to the form and Seam component "
+"(remember to restart the deploment each time you change the Java code)."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:108
+#, no-c-format
+msgid "Generating an application from an existing database"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:109
+#, no-c-format
+msgid ""
+"Manually create some tables in your database. (If you need to switch to a "
+"different database, just run <literal>seam setup</literal> again.) Now type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:112
+#, no-c-format
+msgid "seam generate-entities"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:113
+#, no-c-format
+msgid ""
+"Restart the deployment, and go to <literal>http://localhost:8080/helloworld</"
+"literal>. You can browse the database, edit existing objects, and create new "
+"objects. If you look at the generated code, you'll probably be amazed how "
+"simple it is! Seam was designed so that data access code is easy to write by "
+"hand, even for people who don't want to cheat by using seam-gen."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:119
+#, no-c-format
+msgid "Deploying the application as an EAR"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:120
+#, no-c-format
+msgid ""
+"Finally, we want to be able to deploy the application using standard Java EE "
+"5 packaging. First, we need to remove the exploded directory by running "
+"<literal>seam unexplode</literal>. To deploy the EAR, we can type "
+"<literal>seam deploy</literal> at the command prompt, or run the "
+"<literal>deploy</literal> target of the generated project build script. You "
+"can undeploy using <literal>seam undeploy</literal> or the "
+"<literal>undeploy</literal> target."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:123
+#, no-c-format
+msgid ""
+"By default, the application will be deployed with the <emphasis>dev profile</"
+"emphasis>. The EAR will include the <literal>persistence-dev.xml</literal> "
+"and <literal>import-dev.sql</literal> files, and the <literal>myproject-dev-"
+"ds.xml</literal> file will be deployed. You can change the profile, and use "
+"the <emphasis>prod profile</emphasis>, by typing"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:126
+#, no-c-format
+msgid "seam -Dprofile=prod deploy"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:127
+#, no-c-format
+msgid ""
+"You can even define new deployment profiles for your application. Just add "
+"appropriately named files to your project&mdash;for example, "
+"<literal>persistence-staging.xml</literal>, <literal>import-staging.sql</"
+"literal> and <literal>myproject-staging-ds.xml</literal>&mdash;and select "
+"the name of the profile using <literal>-Dprofile=staging</literal>."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/I18n.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/I18n.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/I18n.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,533 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: I18n.xml:10
+#, no-c-format
+msgid "Internationalization and themes"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:11
+#, no-c-format
+msgid ""
+"Seam makes it easy to build internationalized applications by providing "
+"several built-in components for handling multi-language UI messages."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:15
+#, no-c-format
+msgid "Locales"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:16
+#, no-c-format
+msgid ""
+"Each user login session has an associated instance of <literal>java.util."
+"Locale</literal> (available to the application as a session-scoped component "
+"named <literal>locale</literal>). Under normal circumstances, you won't need "
+"to do any special configuration to set the locale. Seam just delegates to "
+"JSF to determine the active locale:"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:21
+#, no-c-format
+msgid ""
+"If there is a locale associated with the HTTP request (the browser locale), "
+"and that locale is in the list of supported locales from <literal>faces-"
+"config.xml</literal>, use that locale for the rest of the session."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:24
+#, no-c-format
+msgid ""
+"Otherwise, if a default locale was specified in the <literal>faces-config."
+"xml</literal>, use that locale for the rest of the session."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:27
+#, no-c-format
+msgid "Otherwise, use the default locale of the server."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:30
+#, no-c-format
+msgid ""
+"It is <emphasis>possible</emphasis> to set the locale manually via the Seam "
+"configuration properties <literal>org.jboss.seam.core.localeSelector."
+"language</literal>, <literal>org.jboss.seam.core.localeSelector.country</"
+"literal> and <literal>org.jboss.seam.core.localeSelector.variant</literal>, "
+"but we can't think of any good reason to ever do this."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:33
+#, no-c-format
+msgid ""
+"It is, however, useful to allow the user to set the locale manually via the "
+"application user interface. Seam provides built-in functionality for "
+"overriding the locale determined by the algorithm above. All you have to do "
+"is add the following fragment to a form in your JSP or Facelets page:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:36
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{localeSelector.language}\"&gt;\n"
+"    &lt;f:selectItem itemLabel=\"English\" itemValue=\"en\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Deutsch\" itemValue=\"de\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Francais\" itemValue=\"fr\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{localeSelector.select}\" value=\"#{messages"
+"['ChangeLanguage']}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:37
+#, no-c-format
+msgid ""
+"Or, if you want a list of all supported locales from <literal>faces-config."
+"xml</literal>, just use:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:40
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{localeSelector.localeString}\"&gt;\n"
+"    &lt;f:selectItems value=\"#{localeSelector.supportedLocales}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{localeSelector.select}\" value=\"#{messages"
+"['ChangeLanguage']}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:41
+#, no-c-format
+msgid ""
+"When this use selects an item from the drop-down, and clicks the button, the "
+"Seam and JSF locales will be overridden for the rest of the session."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:47
+#, no-c-format
+msgid "Labels"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:48
+#, no-c-format
+msgid ""
+"JSF supports internationalization of user interface labels and descriptive "
+"text via the use of <literal>&lt;f:loadBundle /&gt;</literal>. You can use "
+"this approach in Seam applications. Alternatively, you can take advantage of "
+"the Seam <literal>messages</literal> component to display templated labels "
+"with embedded EL expressions."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:52
+#, no-c-format
+msgid "Defining labels"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:53
+#, no-c-format
+msgid ""
+"Each login session has an associated instance of <literal>java.util."
+"ResourceBundle</literal> (available to the application as a session-scoped "
+"component named <literal>org.jboss.seam.core.resourceBundle</literal>). "
+"You'll need to make your internationalized labels available via this special "
+"resource bundle. By default, the resource bundle used by Seam is named "
+"<literal>messages</literal> and so you'll need to define your labels in "
+"files named <literal>messages.properties</literal>, <literal>messages_en."
+"properties</literal>, <literal>messages_en_AU.properties</literal>, etc. "
+"These files usually belong in the <literal>WEB-INF/classes</literal> "
+"directory."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:56
+#, no-c-format
+msgid "So, in <literal>messages_en.properties</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:59
+#, no-c-format
+msgid "Hello=Hello"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:60
+#, no-c-format
+msgid "And in <literal>messages_en_AU.properties</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:63
+#, no-c-format
+msgid "Hello=G'day"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:64
+#, no-c-format
+msgid ""
+"You can select a different name for the resource bundle by setting the Seam "
+"configuration property named <literal>org.jboss.seam.core.resourceBundle."
+"bundleNames</literal>. You can even specify a list of resource bundle names "
+"to be searched (depth first) for messages."
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:67
+#, no-c-format
+msgid ""
+"&lt;core:resource-bundle&gt;\n"
+"    &lt;core:bundle-names&gt;\n"
+"        &lt;value&gt;mycompany_messages&lt;/value&gt;\n"
+"        &lt;value&gt;standard_messages&lt;/value&gt;       \n"
+"    &lt;/core:bundle-names&gt;\n"
+"&lt;/core:resource-bundle&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:68
+#, no-c-format
+msgid ""
+"If you want to define a message just for a particular page, you can specify "
+"it in a resource bundle with the same name as the JSF view id, with the "
+"leading <literal>/</literal> and trailing file extension removed. So we "
+"could put our message in <literal>welcome/hello_en.properties</literal> if "
+"we only needed to display the message on <literal>/welcome/hello.jsp</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:71
+#, no-c-format
+msgid ""
+"You can even specify an explicit bundle name in <literal>pages.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:74
+#, no-c-format
+msgid "&lt;page view-id=\"/welcome/hello.jsp\" bundle=\"HelloMessages\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:75
+#, no-c-format
+msgid ""
+"Then we could use messages defined in <literal>HelloMessages.properties</"
+"literal> on <literal>/welcome/hello.jsp</literal>."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:81
+#, no-c-format
+msgid "Displaying labels"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:82
+#, no-c-format
+msgid ""
+"If you define your labels using the Seam resource bundle, you'll be able to "
+"use them without having to type <literal>&lt;f:loadBundle ... /&gt;</"
+"literal> on every page. Instead, you can simply type:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:85
+#, no-c-format
+msgid "&lt;h:outputText value=\"#{messages['Hello']}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:86
+#, no-c-format
+msgid "<para>or:</para>"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:89
+#, no-c-format
+msgid "&lt;h:outputText value=\"#{messages.Hello}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:90
+#, no-c-format
+msgid "Even better, the messages themselves may contain EL expressions:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:93
+#, no-c-format
+msgid "Hello=Hello, #{user.firstName} #{user.lastName}"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:94
+#, no-c-format
+msgid "Hello=G'day, #{user.firstName}"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:95
+#, no-c-format
+msgid "You can even use the messages in your code:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:98
+#, no-c-format
+msgid "@In private Map&lt;String, String&gt; messages;"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:99
+#, no-c-format
+msgid "@In(\"#{messages['Hello']}\") private String helloMessage;"
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:103
+#, no-c-format
+msgid "Faces messages"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:104
+#, no-c-format
+msgid ""
+"The <literal>facesMessages</literal> component is a super-convenient way to "
+"display success or failure messages to the user. The functionality we just "
+"described also works for faces messages:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:107
+#, no-c-format
+msgid ""
+"@Name(\"hello\")\n"
+"@Stateless\n"
+"public class HelloBean implements Hello {\n"
+"    @In FacesMessages facesMessages;\n"
+"    \n"
+"    public String sayIt() {\n"
+"        facesMessages.addFromResourceBundle(\"Hello\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:108
+#, no-c-format
+msgid ""
+"This will display <literal>Hello, Gavin King</literal> or <literal>G'day, "
+"Gavin</literal>, depending upon the user's locale."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:116
+#, no-c-format
+msgid "Timezones"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:117
+#, no-c-format
+msgid ""
+"There is also a session-scoped instance of <literal>java.util.Timezone</"
+"literal>, named <literal>org.jboss.seam.core.timezone</literal>, and a Seam "
+"component for changing the timezone named <literal>org.jboss.seam.core."
+"timezoneSelector</literal>. By default, the timezone is the default timezone "
+"of the server. Unfortunately, the JSF specification says that all dates and "
+"times should be assumed to be UTC, and displayed as UTC, unless a timezone "
+"is explicitly specified using <literal>&lt;f:convertDateTime&gt;</literal>. "
+"This is an extremely inconvenient default behavior."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:120
+#, no-c-format
+msgid ""
+"Seam overrides this behavior, and defaults all dates and times to the Seam "
+"timezone. In addition, Seam provides the <literal>&lt;s:convertDateTime&gt;</"
+"literal> tag which always performs conversions in the Seam timezone."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:126
+#, no-c-format
+msgid "Themes"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:127
+#, no-c-format
+msgid ""
+"Seam applications are also very easily skinnable. The theme API is very "
+"similar to the localization API, but of course these two concerns are "
+"orthogonal, and some applications support both localization and themes."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:130
+#, no-c-format
+msgid "First, configure the set of supported themes:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:133
+#, no-c-format
+msgid ""
+"&lt;theme:theme-selector cookie-enabled=\"true\"&gt;\n"
+"    &lt;theme:available-themes&gt;\n"
+"        &lt;value&gt;default&lt;/value&gt;\n"
+"        &lt;value&gt;accessible&lt;/value&gt;\n"
+"        &lt;value&gt;printable&lt;/value&gt;\n"
+"    &lt;/theme:available-themes&gt;\n"
+"&lt;/theme:theme-selector&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:134
+#, no-c-format
+msgid "Note that the first theme listed is the default theme."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:137
+#, no-c-format
+msgid ""
+"Themes are defined in a properties file with the same name as the theme. For "
+"example, the <literal>default</literal> theme is defined as a set of entries "
+"in <literal>default.properties</literal>. For example, <literal>default."
+"properties</literal> might define:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:140
+#, no-c-format
+msgid ""
+"css ../screen.css\n"
+"template template.xhtml"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:141
+#, no-c-format
+msgid ""
+"Usually the entries in a theme resource bundle will be paths to CSS styles "
+"or images and names of facelets templates (unlike localization resource "
+"bundles which are usually text)."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:144
+#, no-c-format
+msgid ""
+"Now we can use these entries in our JSP or facelets pages. For example, to "
+"theme the stylesheet in a facelets page:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:147
+#, no-c-format
+msgid ""
+"&lt;link href=\"#{theme.css}\" rel=\"stylesheet\" type=\"text/css\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:148
+#, no-c-format
+msgid ""
+"Most powerfully, facelets lets us theme the template used by a <literal>&lt;"
+"ui:composition&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:151
+#, no-c-format
+msgid ""
+"&lt;ui:composition xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"    xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"    xmlns:h=\"http://java.sun.com/jsf/html\"\n"
+"    xmlns:f=\"http://java.sun.com/jsf/core\"\n"
+"    template=\"#{theme.template}\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:152
+#, no-c-format
+msgid ""
+"Just like the locale selector, there is a built-in theme selector to allow "
+"the user to freely switch themes:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:155
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{themeSelector.theme}\"&gt;\n"
+"    &lt;f:selectItems value=\"#{themeSelector.themes}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{themeSelector.select}\" value=\"Select Theme"
+"\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:159
+#, no-c-format
+msgid "Persisting locale and theme preferences via cookies"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:160
+#, no-c-format
+msgid ""
+"The locale selector, theme selector and timezone selector all support "
+"persistence of locale and theme preference to a cookie. Simply set the "
+"<literal>cookie-enabled</literal> configuration property:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:163
+#, no-c-format
+msgid ""
+"&lt;theme:theme-selector cookie-enabled=\"true\"&gt;\n"
+"    &lt;theme:available-themes&gt;\n"
+"        &lt;value&gt;default&lt;/value&gt;\n"
+"        &lt;value&gt;accessible&lt;/value&gt;\n"
+"        &lt;value&gt;printable&lt;/value&gt;\n"
+"    &lt;/theme:available-themes&gt;\n"
+"&lt;/theme:theme-selector&gt;\n"
+"\n"
+"&lt;core:locale-selector cookie-enabled=\"true\"/&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Itext.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Itext.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Itext.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1452 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Itext.xml:10
+#, no-c-format
+msgid "iText PDF generation"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:11
+#, no-c-format
+msgid ""
+"Seam now includes an component set for generating documents using iText. The "
+"primary focus of Seam's iText document support is for the generation of PDF "
+"doucuments, but Seam also offers basic support for RTF document generation."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:15
+#, no-c-format
+msgid "Using PDF Support"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:16
+#, no-c-format
+msgid ""
+"iText support is provided by <literal>jboss-seam-pdf.jar</literal>. This JAR "
+"contains the iText JSF controls, which are used to construct views that can "
+"render to PDF, and the DocumentStore component, which serves the rendered "
+"documents to the user. To include PDF support in your application, included "
+"<literal>jboss-seam-pdf.jar</literal> in your <literal>WEB-INF/lib</literal> "
+"directory along with the iText JAR file. There is no further configuration "
+"needed to use Seam's iText support."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:19
+#, no-c-format
+msgid ""
+"The Seam iText module requires the use of Facelets as the view technology. "
+"Future versions of the library may also support the use of JSP. "
+"Additionally, it requires the use of the seam-ui package."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:22
+#, no-c-format
+msgid ""
+"The <literal>examples/itext</literal> project contains an example of the PDF "
+"support in action. It demonstrates proper deployment packaging, and it "
+"contains a number examples that demonstrate the key PDF generation features "
+"current supported."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:28
+#, no-c-format
+msgid "Creating a document"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:29
+#, no-c-format
+msgid ""
+"Documents are generated by facelets documents using tags in the "
+"<literal>http://jboss.com/products/seam/pdf</literal> namespace. Documents "
+"should always have the <literal>document</literal> tag at the root of the "
+"document. The <literal>document</literal> tag prepares Seam to generate a "
+"document into the DocumentStore and renders an HTML redirect to that stored "
+"content. The following is a a small PDF document consisting only a single "
+"line of text:"
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:32
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf"
+"\"&gt;                                                      \n"
+"   The document goes "
+"here.                                                                                             \n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:34
+#, no-c-format
+msgid "p:document"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:35
+#, no-c-format
+msgid ""
+"The <literal>p:document</literal> tag supports the following attributes:"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:40
+#, no-c-format
+msgid "type"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:42
+#, no-c-format
+msgid ""
+"The type of the document to be produced. Valid values are <literal>PDF</"
+"literal>, <literal>RTF</literal> and <literal>HTML</literal> modes. Seam "
+"defaults to PDF generation, and many of the features only work correctly "
+"when generating PDF documents."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:48
+#, no-c-format
+msgid "pageSize"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:50
+#, no-c-format
+msgid ""
+"The size of the page to be generate. The most commonly used values would be "
+"<literal>LETTER</literal> and <literal>A4</literal>. A full list of "
+"supported pages sizes can be found in <literal>com.lowagie.text.PageSize</"
+"literal> class. Alternatively, pageSize can provide the width and height of "
+"the page directly. The value \"612 792\", for example, is equizalent to the "
+"LETTER page size."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:56
+#, no-c-format
+msgid "orientation"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:58
+#, no-c-format
+msgid ""
+"The orientation of the page. Valid values are <literal>portrait</literal> "
+"and <literal>landscape</literal>. In landscape mode, the height and width "
+"page size values are reversed."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:64
+#, no-c-format
+msgid "margins"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:66
+#, no-c-format
+msgid "The left, right, top and bottom margin values."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:72
+#, no-c-format
+msgid "marginMirroring"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:74
+#, no-c-format
+msgid "Indicates that margin settings should be reversed an alternating pages."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:80
+#, no-c-format
+msgid ""
+"Document metadata is also set as attributes of the document tag. The "
+"following metadata fields are supported:"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:85
+#, no-c-format
+msgid "title"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:92
+#, no-c-format
+msgid "subject"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:99
+#, no-c-format
+msgid "keywords"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:106
+#, no-c-format
+msgid "author"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:113
+#, no-c-format
+msgid "creator"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:125
+#, no-c-format
+msgid "Basic Text Elements"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:126
+#, no-c-format
+msgid ""
+"Useful documents will need to contain more than just text; however, the "
+"standard UI components are geared towards HTML generation and are not useful "
+"for generating PDF content. Instead, Seam provides a special UI components "
+"for generating suitable PDF content. Tags like <literal>&lt;p:image&gt;</"
+"literal> and <literal>&lt;p:paragraph&gt;</literal> are the basic "
+"foundations of simple documents. Tags like <literal>&lt;p:font&gt;</literal> "
+"provide style information to all the content surrounging them."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:129
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"&gt; \n"
+"    &lt;p:image alignment=\"right\" wrap=\"true\" resource=\"/logo.jpg\" /"
+"&gt;\n"
+"    &lt;p:font size=\"24\"&gt;\n"
+"        &lt;p:paragraph spacingAfter=\"50\"&gt;My First Document&lt;/p:"
+"paragraph&gt;\n"
+"    &lt;/p:font&gt;\n"
+"\n"
+"    &lt;p:paragraph alignment=\"justify\"&gt;\n"
+"        This is a simple document.  It isn't very fancy.\n"
+"    &lt;/p:paragraph&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:131
+#, no-c-format
+msgid "p:paragraph"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:132
+#, no-c-format
+msgid ""
+"Most uses of text should be sectioned into paragraphs so that text fragments "
+"can be flowed, formatted and styled in logical groups."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:137
+#, no-c-format
+msgid "firstLineIndent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:144 Itext.xml:836
+#, no-c-format
+msgid "extraParagraphSpace"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:151 Itext.xml:808
+#, no-c-format
+msgid "leading"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:158 Itext.xml:815
+#, no-c-format
+msgid "multipliedLeading"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:165 Itext.xml:344 Itext.xml:716
+#, no-c-format
+msgid "spacingBefore"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:167 Itext.xml:346 Itext.xml:718
+#, no-c-format
+msgid "The blank space to be inserted before the element."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:173 Itext.xml:352 Itext.xml:724
+#, no-c-format
+msgid "spacingAfter"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:175 Itext.xml:354 Itext.xml:726
+#, no-c-format
+msgid "The blank space to be inserted after the element."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:181 Itext.xml:330 Itext.xml:599
+#, no-c-format
+msgid "indentationLeft"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:188 Itext.xml:337 Itext.xml:607
+#, no-c-format
+msgid "indentationRight"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:195 Itext.xml:753
+#, no-c-format
+msgid "keepTogether"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:205
+#, no-c-format
+msgid "p:text"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:206
+#, no-c-format
+msgid ""
+"The <literal>text</literal> tag allows text fragments to be produced from "
+"application data using normal JSF converter mechanisms. It is very similar "
+"to the <literal>outputText</literal> tag used when rendering HTML documents. "
+"Here is an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:209
+#, no-c-format
+msgid ""
+"&lt;p:paragraph&gt;\n"
+"    The item costs &lt;p:text value=\"#{product.price}\"&gt;\n"
+"        &lt;f:convertNumber type=\"currency\" currencySymbol=\"&#36;\"/&gt;\n"
+"    &lt;/p:text&gt;\n"
+"&lt;/p:paragraph&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:212
+#, no-c-format
+msgid "value"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:214
+#, no-c-format
+msgid ""
+"The value to be displayed. This will typically be a value binding expression."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:223
+#, no-c-format
+msgid "p:font"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:224
+#, no-c-format
+msgid "Font declarations have no direct"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:229
+#, no-c-format
+msgid "familyName"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:231
+#, no-c-format
+msgid ""
+"The font family. One of: <literal>COURIER</literal>, <literal>HELVETICA</"
+"literal>, <literal>TIMES-ROMAN</literal>, <literal>SYMBOL</literal> or "
+"<literal>ZAPFDINGBATS</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:237
+#, no-c-format
+msgid "size"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:239
+#, no-c-format
+msgid "The point size of the font."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:245 Itext.xml:534
+#, no-c-format
+msgid "style"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:247
+#, no-c-format
+msgid ""
+"The font styles. Any combination of : <literal>NORMAL</literal>, "
+"<literal>BOLD</literal>, <literal>ITALIC</literal>, <literal>OBLIQUE</"
+"literal>, <literal>UNDERLINE</literal>, <literal>LINE-THROUGH</literal>"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:256
+#, no-c-format
+msgid "p:newPage"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:257
+#, no-c-format
+msgid "<literal>p:newPage</literal> inserts a page break."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:263
+#, no-c-format
+msgid "p:image"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:264
+#, no-c-format
+msgid ""
+"<literal>p:image</literal> inserts an image into the document. Images can be "
+"be loaded from the classpath or from the web application context using the "
+"<literal>resource</literal> attribute."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:267
+#, no-c-format
+msgid "&lt;p:image resource=\"/jboss.jpg\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:268
+#, no-c-format
+msgid ""
+"Resources can also be dynamically generated by application code. The "
+"<literal>imageData</literal> attribute can specify a value binding "
+"expression whose value is a <literal>java.awt.Image</literal> object."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:271
+#, no-c-format
+msgid "&lt;p:image imageData=\"#{images.chart}\" /&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:274
+#, no-c-format
+msgid "resource"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:276
+#, no-c-format
+msgid ""
+"The location of the image resource to be included. Resources should be "
+"relative to the document root of the web application."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:282
+#, no-c-format
+msgid "imageData"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:284
+#, no-c-format
+msgid "A method expression binding to an application-generated image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:290 Itext.xml:913
+#, no-c-format
+msgid "rotation"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:292
+#, no-c-format
+msgid "The rotation of the image in degrees."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:298
+#, no-c-format
+msgid "height"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:300
+#, no-c-format
+msgid "The height of the image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:306
+#, no-c-format
+msgid "width"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:308
+#, no-c-format
+msgid "The width of the image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:314 Itext.xml:441 Itext.xml:591
+#, no-c-format
+msgid "alignment"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:316
+#, no-c-format
+msgid ""
+"The alignment of the image. (see <xref linkend=\"Document_Constants-"
+"Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:322
+#, no-c-format
+msgid "<literal>alt</literal>"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:324
+#, no-c-format
+msgid "Alternative text representation for the image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:360 Itext.xml:672
+#, no-c-format
+msgid "widthPercentage"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:367
+#, no-c-format
+msgid "initialRotation"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:374
+#, no-c-format
+msgid "<literal>dpi</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:381
+#, no-c-format
+msgid "scalePercent"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:383
+#, no-c-format
+msgid ""
+"The scaling factor (as a percentage) to use for the image. This can be "
+"expressed as a single percentage value or as two percentage values "
+"representing separate x and y scaling percentages."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:389
+#, no-c-format
+msgid "wrap"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:396
+#, no-c-format
+msgid "underlying"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:406
+#, no-c-format
+msgid "p:anchor"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:407
+#, no-c-format
+msgid ""
+"<literal>p:anchor</literal> defines clickable links from a document. It "
+"supports the following attributes:"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:412
+#, no-c-format
+msgid "name"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:414
+#, no-c-format
+msgid "The name of an in-document anchor destination."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:420
+#, no-c-format
+msgid "reference"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:422
+#, no-c-format
+msgid ""
+"The destination the link refers to. Links to other points in the document "
+"should begin with a \"#\". For example, \"#link1\" to refer to an anchor "
+"postion with a <literal>name</literal> of <literal>link1</literal>. Links "
+"may also be a full URL to point to a resource outside of the document."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:433
+#, no-c-format
+msgid "Headers and Footers"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:435
+#, no-c-format
+msgid "p:header and p:footer"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:436
+#, no-c-format
+msgid ""
+"The <literal>p:header</literal> and <literal>p:footer</literal> components "
+"provide the ability to place header and footer text on each page of a "
+"generated document, with the exception of the first page. Header and footer "
+"declarations should appear near the top of a document."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:443
+#, no-c-format
+msgid ""
+"The alignment of the header/footer box section. (see <xref linkend="
+"\"Document_Constants-Alignment_Values\"/> for alignment values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:449
+#, no-c-format
+msgid "backgroundColor"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:451
+#, no-c-format
+msgid ""
+"The background color of the header/footer box. (see <xref linkend="
+"\"Document_Constants-Color_Values\"/> for color values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:457
+#, no-c-format
+msgid "borderColor"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:459
+#, no-c-format
+msgid ""
+"The border color of the header/footer box. Individual border sides can be "
+"set using <literal>borderColorLeft</literal>, <literal>borderColorRight</"
+"literal>, <literal>borderColorTop</literal> and <literal>borderColorBottom</"
+"literal>.(see <xref linkend=\"Document_Constants-Color_Values\"/> for color "
+"values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:465
+#, no-c-format
+msgid "borderWidth"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:467
+#, no-c-format
+msgid ""
+"The width of the border. Inidvidual border sides can be specified using "
+"<literal>borderWidthLeft</literal>, <literal>borderWidthRight</literal>, "
+"<literal>borderWidthTop</literal> and <literal>borderWidthBottom</literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:476
+#, no-c-format
+msgid "p:pageNumber"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:477
+#, no-c-format
+msgid ""
+"The current page number can be placed inside of a header or footer using the "
+"<literal>p:pageNumber</literal> tag. The page number tag can only be used in "
+"the context of a header or footer and can only be used once."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:485
+#, no-c-format
+msgid "Chapters and Sections"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:486
+#, no-c-format
+msgid ""
+"If the generated document follows a book/article structure, the <literal>p:"
+"chapter</literal> and <literal>p:section</literal> tags can be used to "
+"provide the necessary structure. Sections can only be used inside of "
+"chapters, but they may be nested arbitrarily deep. Most PDF viewers provide "
+"easy navigation between chapters and sections in a document."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:489
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"\n"
+"            title=\"Hello\"&gt;\n"
+"\n"
+"   &lt;p:chapter number=\"1\"&gt;\n"
+"      &lt;p:title&gt;&lt;p:paragraph&gt;Hello&lt;/p:paragraph&gt;&lt;/p:"
+"title&gt;\n"
+"      &lt;p:paragraph&gt;Hello #{user.name}!&lt;/p:paragraph&gt;\n"
+"   &lt;/p:chapter&gt;\n"
+"\n"
+"   &lt;p:chapter number=\"2\"&gt;\n"
+"      &lt;p:title&gt;&lt;p:paragraph&gt;Goodbye&lt;/p:paragraph&gt;&lt;/p:"
+"title&gt;\n"
+"      &lt;p:paragraph&gt;Goodbye #{user.name}.&lt;/p:paragraph&gt;\n"
+"   &lt;/p:chapter&gt;\n"
+"\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:491
+#, no-c-format
+msgid "p:chapter and p:section"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:494
+#, no-c-format
+msgid "number"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:496
+#, no-c-format
+msgid "The chapter number. Every chapter should be assigned a chapter number."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:502
+#, no-c-format
+msgid "numberDepth"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:504
+#, no-c-format
+msgid ""
+"The depth of numbering for section. All sections are numbered relative to "
+"their surrounding chapter/sections. The fourth section of of the first "
+"section of chapter three would be section 3.1.4, if displayed at the default "
+"number depth of three. To omit the chapter number, a number depth of 2 "
+"should be used. In that case, the section number would be displayed as 1.4."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:513
+#, no-c-format
+msgid "p:title"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:514
+#, no-c-format
+msgid ""
+"Any chapter or section can contain a <literal>p:title</literal>. The title "
+"will be displayed next to the chapter/section number. The body of the title "
+"may contain raw text or may be a <literal>p:paragraph</literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:522
+#, no-c-format
+msgid "Lists"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:523
+#, no-c-format
+msgid ""
+"List structures can be displayed using the <literal>p:list</literal> and "
+"<literal>p:listItem</literal> tags. Lists may contain arbitrarily-nested "
+"sublists. List items may not be used outside of a list. he following "
+"document uses the <literal>ui:repeat</literal> tag to to display a list of "
+"values retrieved from a Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:526
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"\n"
+"            xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"            title=\"Hello\"&gt;\n"
+"   &lt;p:list style=\"numbered\"&gt;\n"
+"      &lt;ui:repeat value=\"#{documents}\" var=\"doc\"&gt;\n"
+"         &lt;p:listItem&gt;#{doc.name}&lt;/p:listItem&gt;\n"
+"      &lt;/ui:repeat&gt;\n"
+"   &lt;/p:list&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:528
+#, no-c-format
+msgid "p:list"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:529
+#, no-c-format
+msgid "<literal>p:list</literal> supports the following attributes:"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:536
+#, no-c-format
+msgid ""
+"The ordering/bulleting style of list. One of: <literal>NUMBERED</literal>, "
+"<literal>LETTERED</literal>, <literal>GREEK</literal>, <literal>ROMAN</"
+"literal>, <literal>ZAPFDINGBATS</literal>, <literal>ZAPFDINGBATS_NUMBER</"
+"literal>. If no style is given, the list items are bulleted."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:542 Itext.xml:615
+#, no-c-format
+msgid "listSymbol"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:544
+#, no-c-format
+msgid "For bulleted lists, specifies the bullet symbol."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:550 Itext.xml:822
+#, no-c-format
+msgid "indent"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:552
+#, no-c-format
+msgid "The indentation level of the list."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:558
+#, no-c-format
+msgid "lowerCase"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:560
+#, no-c-format
+msgid ""
+"For list styles using letters, indicates whether the letters should be lower "
+"case."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:566
+#, no-c-format
+msgid "charNumber"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:568
+#, no-c-format
+msgid "For ZAPFDINGBATS, indicates the character code of the bullet character."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:574
+#, no-c-format
+msgid "numberType"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:576
+#, no-c-format
+msgid "For ZAPFDINGBATS_NUMBER, indicates the numbering style."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:585
+#, no-c-format
+msgid "p:listItem"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:586
+#, no-c-format
+msgid "<literal>p:listItem</literal> supports the following attributes:"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:593
+#, no-c-format
+msgid ""
+"The alignment of the list item. (See <xref linkend=\"Document_Constants-"
+"Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:601
+#, no-c-format
+msgid "The left indentation amount."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:609
+#, no-c-format
+msgid "The right indentation amount."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:617
+#, no-c-format
+msgid "Overrides the default list symbol for this list item."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:628
+#, no-c-format
+msgid "Tables"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:629
+#, no-c-format
+msgid ""
+"Table structures can be created using the <literal>p:table</literal> and "
+"<literal>p:cell</literal> tags. Unlike many table structures, there is no "
+"explicit row declaration. If a table has 3 columns, then every 3 cells will "
+"automatically form a row. Header and footer rows can be declared, and the "
+"headers and footers will be repeated in the event a table structure spans "
+"multiple pages."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:632
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"   \n"
+"            xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"            title=\"Hello\"&gt;   \n"
+"   &lt;p:table columns=\"3\" headerRows=\"1\"&gt;\n"
+"      &lt;p:cell&gt;name&lt;/p:cell&gt;\n"
+"      &lt;p:cell&gt;owner&lt;/p:cell&gt;\n"
+"      &lt;p:cell&gt;size&lt;/p:cell&gt;\n"
+"      &lt;ui:repeat value=\"#{documents}\" var=\"doc\"&gt;\n"
+"         &lt;p:cell&gt;#{doc.name}&lt;/p:cell&gt;\n"
+"         &lt;p:cell&gt;#{doc.user.name}&lt;/p:cell&gt;\n"
+"         &lt;p:cell&gt;#{doc.size}&lt;/p:cell&gt;\n"
+"      &lt;/ui:repeat&gt;\n"
+"   &lt;/p:table&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:634
+#, no-c-format
+msgid "p:table"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:635
+#, no-c-format
+msgid "<literal>p:table</literal> supports the following attributes."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:640
+#, no-c-format
+msgid "columns"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:642
+#, no-c-format
+msgid "The number of columns (cells) that make up a table row."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:648
+#, no-c-format
+msgid "widths"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:650
+#, no-c-format
+msgid ""
+"The relative widths of each column. There should be one value for each "
+"column. For example: widths=\"2 1 1\" would indicate that there are 3 "
+"columns and the first column should be twice the size of the second and "
+"third column."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:656
+#, no-c-format
+msgid "headerRows"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:658
+#, no-c-format
+msgid ""
+"The initial number of rows which are considered to be headers or footer rows "
+"and should be repeated if the table spans multiple pages."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:664
+#, no-c-format
+msgid "footerRows"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:666
+#, no-c-format
+msgid ""
+"The number of rows that are considered to be footer rows. This value is "
+"subtracted from the <literal>headerRows</literal> value. If document has 2 "
+"rows which make up the header and one row that makes up the footer, "
+"<literal>headerRows</literal> should be set to 3 and <literal>footerRows</"
+"literal> should be set to 1"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:674
+#, no-c-format
+msgid "The percentage of the page width that the table spans."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:680 Itext.xml:777
+#, no-c-format
+msgid "horizontalAlignment"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:682
+#, no-c-format
+msgid ""
+"The horizontal alignment of the table. (See <xref linkend="
+"\"Document_Constants-Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:688
+#, no-c-format
+msgid "skipFirstHeader"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:695 Itext.xml:885
+#, no-c-format
+msgid "runDirection"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:702
+#, no-c-format
+msgid "lockedWidth"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:709
+#, no-c-format
+msgid "splitRows"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:732
+#, no-c-format
+msgid "extendLastRow"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:739
+#, no-c-format
+msgid "headersInEvent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:746
+#, no-c-format
+msgid "splitLate"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:763
+#, no-c-format
+msgid "p:cell"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:764
+#, no-c-format
+msgid "<literal>p:cell</literal> supports the following attributes."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:769
+#, no-c-format
+msgid "colspan"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:771
+#, no-c-format
+msgid ""
+"Cells can span more than one column by declaring a <literal>colspan</"
+"literal> greater than 1. Tables do not have the ability to span across "
+"multiple rows."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:779
+#, no-c-format
+msgid ""
+"The horizontal alignment of the cell. (see <xref linkend="
+"\"Document_Constants-Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:785 Itext.xml:829
+#, no-c-format
+msgid "verticalAlignment"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:787
+#, no-c-format
+msgid ""
+"The vertical alignment of the cell. (see <xref linkend=\"Document_Constants-"
+"Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:793
+#, no-c-format
+msgid "padding"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:795
+#, no-c-format
+msgid ""
+"Padding on a given side can also be specified using <literal>paddingLeft</"
+"literal>, <literal>paddingRight</literal>, <literal>paddingTop</literal> and "
+"<literal>paddingBottom</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:801
+#, no-c-format
+msgid "useBorderPadding"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:843
+#, no-c-format
+msgid "fixedHeight"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:850
+#, no-c-format
+msgid "noWrap"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:857
+#, no-c-format
+msgid "minimumHeight"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:864
+#, no-c-format
+msgid "followingIndent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:871
+#, no-c-format
+msgid "rightIndent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:878
+#, no-c-format
+msgid "spaceCharRatio"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:892
+#, no-c-format
+msgid "arabicOptions"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:899
+#, no-c-format
+msgid "useAscender"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:906
+#, no-c-format
+msgid "grayFill"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:925
+#, no-c-format
+msgid "Document Constants"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:926
+#, no-c-format
+msgid ""
+"This section documents some of the constants shared by attributes on "
+"multiple tags."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:930
+#, no-c-format
+msgid "Color Values"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:931
+#, no-c-format
+msgid ""
+"Seam documents do not yet support a full color specification. Currently, "
+"only named colors are supported. They are: <literal>white</literal>, "
+"<literal>gray</literal>, <literal>lightgray</literal>, <literal>darkgray</"
+"literal>, <literal>black</literal>, <literal>red</literal>, <literal>pink</"
+"literal>, <literal>yellow</literal>, <literal>green</literal>, "
+"<literal>magenta</literal>, <literal>cyan</literal> and <literal>blue</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:937
+#, no-c-format
+msgid "Alignment Values"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:938
+#, no-c-format
+msgid ""
+"Where alignment values are used, the Seam PDF supports the following "
+"horizontal alignment values: <literal>left</literal>, <literal>right</"
+"literal>, <literal>center</literal>, <literal>justify</literal> and "
+"<literal>justifyall</literal>. The vertical alignment values are "
+"<literal>top</literal>, <literal>middle</literal>, <literal>bottom</"
+"literal>, and <literal>baseline</literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:946
+#, no-c-format
+msgid "Configuring iText"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:947
+#, no-c-format
+msgid ""
+"Document generation works out of the box with no additional configuration "
+"needed. However, there are a few points of configuration that are needed for "
+"more serious applications."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:950
+#, no-c-format
+msgid ""
+"The default implementation serves PDF documents from a generic URL, "
+"<literal>/seam-doc.seam</literal>. Many browsers (and users) would prefer to "
+"see URLs that contain the actual PDF name like <literal>/myDocument.pdf</"
+"literal>. This capability requires some configuration. To serve PDF files, "
+"all *.pdf resources should be mapped to the Seam Servlet Filter and to the "
+"DocumentStoreServlet:"
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:953
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.servlet.SeamServletFilter&lt;/filter-"
+"class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;\n"
+"\n"
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.pdf.DocumentStoreServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"\n"
+"&lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:954
+#, no-c-format
+msgid ""
+"The <literal>useExtensions</literal> option on the document store component "
+"completes the functionality by instructing the document store to generate "
+"URLs with the correct filename extension for the document type being "
+"generated."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:957
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pdf=\"http://jboss.com/products/seam/pdf\"&gt;\n"
+"    &lt;pdf:documentStore useExtensions=\"true\" /&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:958
+#, no-c-format
+msgid ""
+"Generated documents are stored in conversation scope and will expire when "
+"the conversation ends. At that point, references to the document will be "
+"invalid. To You can specify a default view to be shown when a document does "
+"not exist using the <literal>errorPage</literal> property of the "
+"documentStore."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:961
+#, no-c-format
+msgid ""
+"&lt;pdf:documentStore useExtensions=\"true\" errorPage=\"/pdfMissing.seam\" /"
+"&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:965
+#, no-c-format
+msgid "iText links"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:966
+#, no-c-format
+msgid "For further information on iText, see:"
+msgstr ""
+
+#. Tag: ulink
+#: Itext.xml:973
+#, no-c-format
+msgid "iText Home Page"
+msgstr ""
+
+#. Tag: ulink
+#: Itext.xml:978
+#, no-c-format
+msgid "iText in Action"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Jbpm.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Jbpm.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Jbpm.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1189 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Jbpm.xml:10
+#, no-c-format
+msgid "Pageflows and business processes"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:11
+#, no-c-format
+msgid ""
+"JBoss jBPM is a business process management engine for any Java SE or EE "
+"environment. jBPM lets you represent a business process or user interaction "
+"as a graph of nodes representing wait states, decisions, tasks, web pages, "
+"etc. The graph is defined using a simple, very readable, XML dialect called "
+"jPDL, and may be edited and visualised graphically using an eclipse plugin. "
+"jPDL is an extensible language, and is suitable for a range of problems, "
+"from defining web application page flow, to traditional workflow management, "
+"all the way up to orchestration of services in a SOA environment."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:14
+#, no-c-format
+msgid "Seam applications use jBPM for two different problems:"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:20
+#, no-c-format
+msgid ""
+"Defining the pageflow involved in complex user interactions. A jPDL process "
+"definition defines the page flow for a single conversation. A Seam "
+"conversation is considered to be a relatively short-running interaction with "
+"a single user."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:25
+#, no-c-format
+msgid ""
+"Defining the overarching business process. The business process may span "
+"multiple conversations with multiple users. Its state is persistent in the "
+"jBPM database, so it is considered long-running. Coordination of the "
+"activities of multiple users is a much more complex problem than scripting "
+"an interaction with a single user, so jBPM offers sophisticated facilities "
+"for task management and dealing with multiple concurrent paths of execution."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:31
+#, no-c-format
+msgid ""
+"Don't get these two things confused ! They operate at very different levels "
+"or granularity. <emphasis>Pageflow</emphasis>, <emphasis>conversation</"
+"emphasis> and <emphasis>task</emphasis> all refer to a single interaction "
+"with a single user. A business process spans many tasks. Futhermore, the two "
+"applications of jBPM are totally orthogonal. You can use them together or "
+"independently or not at all."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:34
+#, no-c-format
+msgid ""
+"You don't have to know jDPL to use Seam. If you're perfectly happy defining "
+"pageflow using JSF or Seam navigation rules, and if your application is more "
+"data-driven that process-driven, you probably don't need jBPM. But we're "
+"finding that thinking of user interaction in terms of a well-defined "
+"graphical representation is helping us build more robust applications."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:37
+#, no-c-format
+msgid ""
+"Please refer to the jBPM documentation for a more thorough overview of the "
+"sophisticated features that jBPM provides for managing complex business "
+"processes."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:41
+#, no-c-format
+msgid "Pageflow in Seam"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:42
+#, no-c-format
+msgid "There are two ways to define pageflow in Seam:"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:47
+#, no-c-format
+msgid ""
+"Using JSF or Seam navigation rules - the <emphasis>stateless navigation "
+"model</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:52
+#, no-c-format
+msgid "Using jPDL - the <emphasis>stateful navigation model</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:57
+#, no-c-format
+msgid ""
+"Very simple applications will only need the stateless navigation model. Very "
+"complex applications will use both models in different places. Each model "
+"has its strengths and weaknesses!"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:60
+#, no-c-format
+msgid ""
+"In practice, both navigation models have their place, and you'll quickly "
+"learn to recognize when to prefer one model over the other."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:64
+#, no-c-format
+msgid "The two navigation models"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:65
+#, no-c-format
+msgid ""
+"The stateless model defines a mapping from a set of named, logical outcomes "
+"of an event directly to the resulting page of the view. The navigation rules "
+"are entirely oblivious to any state held by the application other than what "
+"page was the source of the event. This means that your action listener "
+"methods must sometimes make decisions about the page flow, since only they "
+"have access to the current state of the application."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:68
+#, no-c-format
+msgid "Here is an example page flow definition using JSF navigation rules:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:71
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"    &lt;from-view-id&gt;/numberGuess.jsp&lt;/from-view-id&gt;\n"
+"        \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;guess&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/numberGuess.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;win&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/win.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"        \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;lose&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/lose.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:72
+#, no-c-format
+msgid ""
+"Here is the same example page flow definition using Seam navigation rules:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:75
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/numberGuess.jsp\"&gt;\n"
+"        \n"
+"    &lt;navigation&gt;\n"
+"        &lt;rule if-outcome=\"guess\"&gt;\n"
+"            &lt;redirect view-id=\"/numberGuess.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"        &lt;rule if-outcome=\"win\"&gt;\n"
+"            &lt;redirect view-id=\"/win.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"        &lt;rule if-outcome=\"lose\"&gt;\n"
+"            &lt;redirect view-id=\"/lose.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:76
+#, no-c-format
+msgid ""
+"If you find navigation rules overly verbose, you can return view ids "
+"directly from your action listener methods:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:79
+#, no-c-format
+msgid ""
+"public String guess() {\n"
+"    if (guess==randomNumber) return \"/win.jsp\";\n"
+"    if (++guessCount==maxGuesses) return \"/lose.jsp\";\n"
+"    return null;\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:80
+#, no-c-format
+msgid ""
+"Note that this results in a redirect. You can even specify parameters to be "
+"used in the redirect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:83
+#, no-c-format
+msgid ""
+"public String search() {\n"
+"    return \"/searchResults.jsp?searchPattern=#{searchAction.searchPattern}"
+"\";\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:84
+#, no-c-format
+msgid ""
+"The stateful model defines a set of transitions between a set of named, "
+"logical application states. In this model, it is possible to express the "
+"flow of any user interaction entirely in the jPDL pageflow definition, and "
+"write action listener methods that are completely unaware of the flow of the "
+"interaction."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:87
+#, no-c-format
+msgid "Here is an example page flow definition using jPDL:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:90
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"numberGuess\"&gt;\n"
+"    \n"
+"   &lt;start-page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"      &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"      &lt;/transition&gt;\n"
+"   &lt;/start-page&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess."
+"correctGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateRemainingGuesses\" expression=\"#{numberGuess."
+"lastGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"lose\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"displayGuess\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"lose\" view-id=\"/lose.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:99
+#, no-c-format
+msgid "There are two things we notice immediately here:"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:104
+#, no-c-format
+msgid ""
+"The JSF/Seam navigation rules are <emphasis>much</emphasis> simpler. "
+"(However, this obscures the fact that the underlying Java code is more "
+"complex.)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:109
+#, no-c-format
+msgid ""
+"The jPDL makes the user interaction immediately understandable, without us "
+"needing to even look at the JSP or Java code."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:114
+#, no-c-format
+msgid ""
+"In addition, the stateful model is more <emphasis>constrained</emphasis>. "
+"For each logical state (each step in the page flow), there are a constrained "
+"set of possible transitions to other states. The stateless model is an "
+"<emphasis>ad hoc</emphasis> model which is suitable to relatively "
+"unconstrained, freeform navigation where the user decides where he/she wants "
+"to go next, not the application."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:117
+#, no-c-format
+msgid ""
+"The stateful/stateless navigation distinction is quite similar to the "
+"traditional view of modal/modeless interaction. Now, Seam applications are "
+"not usually modal in the simple sense of the word - indeed, avoiding "
+"application modal behavior is one of the main reasons for having "
+"conversations! However, Seam applications can be, and often are, modal at "
+"the level of a particular conversation. It is well-known that modal behavior "
+"is something to avoid as much as possible; it is very difficult to predict "
+"the order in which your users are going to want to do things! However, there "
+"is no doubt that the stateful model has its place."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:120
+#, no-c-format
+msgid ""
+"The biggest contrast between the two models is the back-button behavior."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:126
+#, no-c-format
+msgid "Seam and the back button"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:127
+#, no-c-format
+msgid ""
+"When JSF or Seam navigation rules are used, Seam lets the user freely "
+"navigate via the back, forward and refresh buttons. It is the responsibility "
+"of the application to ensure that conversational state remains internally "
+"consistent when this occurs. Experience with the combination of web "
+"application frameworks like Struts or WebWork - that do not support a "
+"conversational model - and stateless component models like EJB stateless "
+"session beans or the Spring framework has taught many developers that this "
+"is close to impossible to do! However, our experience is that in the context "
+"of Seam, where there is a well-defined conversational model, backed by "
+"stateful session beans, it is actually quite straightforward. Usually it is "
+"as simple as combining the use of <literal>no-conversation-view-id</literal> "
+"with null checks at the beginning of action listener methods. We consider "
+"support for freeform navigation to be almost always desirable."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:130
+#, no-c-format
+msgid ""
+"In this case, the <literal>no-conversation-view-id</literal> declaration "
+"goes in <literal>pages.xml</literal>. It tells Seam to redirect to a "
+"different page if a request originates from a page rendered during a "
+"conversation, and that conversation no longer exists:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:133
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/checkout.xhtml\" \n"
+"        no-conversation-view-id=\"/main.xhtml\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:134
+#, no-c-format
+msgid ""
+"On the other hand, in the stateful model, backbuttoning is interpreted as an "
+"undefined transition back to a previous state. Since the stateful model "
+"enforces a defined set of transitions from the current state, back buttoning "
+"is be default disallowed in the stateful model! Seam transparently detects "
+"the use of the back button, and blocks any attempt to perform an action from "
+"a previous, \"stale\" page, and simply redirects the user to the \"current\" "
+"page (and displays a faces message). Whether you consider this a feature or "
+"a limitation of the stateful model depends upon your point of view: as an "
+"application developer, it is a feature; as a user, it might be frustrating! "
+"You can enable backbutton navigation from a particular page node by setting "
+"<literal>back=\"enabled\"</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:137
+#, no-c-format
+msgid ""
+"&lt;page name=\"checkout\" \n"
+"        view-id=\"/checkout.xhtml\" \n"
+"        back=\"enabled\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"checkout\"/&gt;\n"
+"    &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:138
+#, no-c-format
+msgid ""
+"This allows backbuttoning <emphasis>from</emphasis> the <literal>checkout</"
+"literal> state to <emphasis>any previous state!</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:141
+#, no-c-format
+msgid ""
+"Of course, we still need to define what happens if a request originates from "
+"a page rendered during a pageflow, and the conversation with the pageflow no "
+"longer exists. In this case, the <literal>no-conversation-view-id</literal> "
+"declaration goes into the pageflow definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:144
+#, no-c-format
+msgid ""
+"&lt;page name=\"checkout\" \n"
+"        view-id=\"/checkout.xhtml\" \n"
+"        back=\"enabled\" \n"
+"        no-conversation-view-id=\"/main.xhtml\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"checkout\"/&gt;\n"
+"    &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:151
+#, no-c-format
+msgid "Using jPDL pageflows"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:153
+#, no-c-format
+msgid "Installing pageflows"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:154
+#, no-c-format
+msgid ""
+"We need to install the Seam jBPM-related components, and tell them where to "
+"find our pageflow definition. We can specify this Seam configuration in "
+"<literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:157
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:pageflow-definitions&gt;\n"
+"        &lt;value&gt;pageflow.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:pageflow-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:158
+#, no-c-format
+msgid ""
+"The first line installs jBPM, the second points to a jPDL-based pageflow "
+"definition."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:164
+#, no-c-format
+msgid "Starting pageflows"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:165
+#, no-c-format
+msgid ""
+"We \"start\" a jPDL-based pageflow by specifying the name of the process "
+"definition using a <literal>@Begin</literal>, <literal>@BeginTask</literal> "
+"or <literal>@StartTask</literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:168
+#, no-c-format
+msgid ""
+"@Begin(pageflow=\"numberguess\")\n"
+"public void begin() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:169
+#, no-c-format
+msgid "Alternatively we can start a pageflow using pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:172
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"        &lt;begin-conversation pageflow=\"numberguess\"/&gt;\n"
+"    &lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:173
+#, no-c-format
+msgid ""
+"If we are beginning the pageflow during the <literal>RENDER_RESPONSE</"
+"literal> phase&mdash;during a <literal>@Factory</literal> or "
+"<literal>@Create</literal> method, for example&mdash;we consider ourselves "
+"to be already at the page being rendered, and use a <literal>&lt;start-"
+"page&gt;</literal> node as the first node in the pageflow, as in the example "
+"above."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:176
+#, no-c-format
+msgid ""
+"But if the pageflow is begun as the result of an action listener invocation, "
+"the outcome of the action listener determines which is the first page to be "
+"rendered. In this case, we use a <literal>&lt;start-state&gt;</literal> as "
+"the first node in the pageflow, and declare a transition for each possible "
+"outcome:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:179
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"viewEditDocument\"&gt;\n"
+"\n"
+"    &lt;start-state name=\"start\"&gt;\n"
+"        &lt;transition name=\"documentFound\" to=\"displayDocument\"/&gt;\n"
+"        &lt;transition name=\"documentNotFound\" to=\"notFound\"/&gt;\n"
+"    &lt;/start-state&gt;\n"
+"    \n"
+"    &lt;page name=\"displayDocument\" view-id=\"/document.jsp\"&gt;\n"
+"        &lt;transition name=\"edit\" to=\"editDocument\"/&gt;\n"
+"        &lt;transition name=\"done\" to=\"main\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"    \n"
+"    ...\n"
+"    \n"
+"    &lt;page name=\"notFound\" view-id=\"/404.jsp\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"    &lt;/page&gt;\n"
+"    \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:183
+#, no-c-format
+msgid "Page nodes and transitions"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:184
+#, no-c-format
+msgid ""
+"Each <literal>&lt;page&gt;</literal> node represents a state where the "
+"system is waiting for user input:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:187
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"        &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:188
+#, no-c-format
+msgid ""
+"The <literal>view-id</literal> is the JSF view id. The <literal>&lt;redirect/"
+"&gt;</literal> element has the same effect as <literal>&lt;redirect/&gt;</"
+"literal> in a JSF navigation rule: namely, a post-then-redirect behavior, to "
+"overcome problems with the browser's refresh button. (Note that Seam "
+"propagates conversation contexts over these browser redirects. So there is "
+"no need for a Ruby on Rails style \"flash\" construct in Seam!)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:191
+#, no-c-format
+msgid ""
+"The transition name is the name of a JSF outcome triggered by clicking a "
+"command button or command link in <literal>numberGuess.jsp</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:194
+#, no-c-format
+msgid ""
+"&lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"guess\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:195
+#, no-c-format
+msgid ""
+"When the transition is triggered by clicking this button, jBPM will activate "
+"the transition action by calling the <literal>guess()</literal> method of "
+"the <literal>numberGuess</literal> component. Notice that the syntax used "
+"for specifying actions in the jPDL is just a familiar JSF EL expression, and "
+"that the transition action handler is just a method of a Seam component in "
+"the current Seam contexts. So we have exactly the same event model for jBPM "
+"events that we already have for JSF events! (The <emphasis>One Kind of "
+"Stuff</emphasis> principle.)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:198
+#, no-c-format
+msgid ""
+"In the case of a null outcome (for example, a command button with no "
+"<literal>action</literal> defined), Seam will signal the transition with no "
+"name if one exists, or else simply redisplay the page if all transitions "
+"have names. So we could slightly simplify our example pageflow and this "
+"button:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:201
+#, no-c-format
+msgid "&lt;h:commandButton type=\"submit\" value=\"Guess\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:202
+#, no-c-format
+msgid "Would fire the following un-named transition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:205
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"evaluateGuess\"&gt;\n"
+"        &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:206
+#, no-c-format
+msgid ""
+"It is even possible to have the button call an action method, in which case "
+"the action outcome will determine the transition to be taken:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:209
+#, no-c-format
+msgid ""
+"&lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"#{numberGuess."
+"guess}\"/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:210
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;transition name=\"correctGuess\" to=\"win\"/&gt;\n"
+"    &lt;transition name=\"incorrectGuess\" to=\"evaluateGuess\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:211
+#, no-c-format
+msgid ""
+"However, this is considered an inferior style, since it moves responsibility "
+"for controlling the flow out of the pageflow definition and back into the "
+"other components. It is much better to centralize this concern in the "
+"pageflow itself."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:217
+#, no-c-format
+msgid "Controlling the flow"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:218
+#, no-c-format
+msgid ""
+"Usually, we don't need the more powerful features of jPDL when defining "
+"pageflows. We do need the <literal>&lt;decision&gt;</literal> node, however:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:221
+#, no-c-format
+msgid ""
+"&lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess.correctGuess}"
+"\"&gt;\n"
+"    &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"    &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"&lt;/decision&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:222
+#, no-c-format
+msgid ""
+"A decision is made by evaluating a JSF EL expression in the Seam contexts."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:228
+#, no-c-format
+msgid "Ending the flow"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:229
+#, no-c-format
+msgid ""
+"We end the conversation using <literal>&lt;end-conversation&gt;</literal> or "
+"<literal>@End</literal>. (In fact, for readability, use of <emphasis>both</"
+"emphasis> is encouraged.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:232
+#, no-c-format
+msgid ""
+"&lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;end-conversation/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:233
+#, no-c-format
+msgid ""
+"Optionally, we can end a task, specify a jBPM <literal>transition</literal> "
+"name. In this case, Seam will signal the end of the current task in the "
+"overarching business process."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:236
+#, no-c-format
+msgid ""
+"&lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;end-task transition=\"success\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:242
+#, no-c-format
+msgid "Business process management in Seam"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:243
+#, no-c-format
+msgid ""
+"A business process is a well-defined set of tasks that must be performed by "
+"users or software systems according to well-defined rules about "
+"<emphasis>who</emphasis> can perform a task, and <emphasis>when</emphasis> "
+"it should be performed. Seam's jBPM integration makes it easy to display "
+"lists of tasks to users and let them manage their tasks. Seam also lets the "
+"application store state associated with the business process in the "
+"<literal>BUSINESS_PROCESS</literal> context, and have that state made "
+"persistent via jBPM variables."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:246
+#, no-c-format
+msgid ""
+"A simple business process definition looks much the same as a page flow "
+"definition (<emphasis>One Kind of Stuff</emphasis>), except that instead of "
+"<literal>&lt;page&gt;</literal> nodes, we have <literal>&lt;task-node&gt;</"
+"literal> nodes. In a long-running business process, the wait states are "
+"where the system is waiting for some user to log in and perform a task."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:249
+#, no-c-format
+msgid ""
+"&lt;process-definition name=\"todo\"&gt;\n"
+"   \n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"todo\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;task-node name=\"todo\"&gt;\n"
+"      &lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"         &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"      &lt;/task&gt;\n"
+"      &lt;transition to=\"done\"/&gt;\n"
+"   &lt;/task-node&gt;\n"
+"   \n"
+"   &lt;end-state name=\"done\"/&gt;\n"
+"   \n"
+"&lt;/process-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:260
+#, no-c-format
+msgid ""
+"It is perfectly possible that we might have both jPDL business process "
+"definitions and jPDL pageflow definitions in the same project. If so, the "
+"relationship between the two is that a single <literal>&lt;task&gt;</"
+"literal> in a business process corresponds to a whole pageflow <literal>&lt;"
+"pageflow-definition&gt;</literal>"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:265
+#, no-c-format
+msgid "Using jPDL business process definitions"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:267
+#, no-c-format
+msgid "Installing process definitions"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:268
+#, no-c-format
+msgid ""
+"We need to install jBPM, and tell it where to find the business process "
+"definitions:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:271
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;todo.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:275
+#, no-c-format
+msgid "Initializing actor ids"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:276
+#, no-c-format
+msgid ""
+"We always need to know what user is currently logged in. jBPM \"knows\" "
+"users by their <emphasis>actor id</emphasis> and <emphasis>group actor ids</"
+"emphasis>. We specify the current actor ids using the built in Seam "
+"component named <literal>actor</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:279
+#, no-c-format
+msgid ""
+"@In Actor actor;\n"
+"\n"
+"public String login() {\n"
+"    ...\n"
+"    actor.setId( user.getUserName() );\n"
+"    actor.getGroupActorIds().addAll( user.getGroupNames() );\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:283
+#, no-c-format
+msgid "Initiating a business process"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:284
+#, no-c-format
+msgid ""
+"To initiate a business process instance, we use the <literal>@CreateProcess</"
+"literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:287
+#, no-c-format
+msgid ""
+"@CreateProcess(definition=\"todo\")\n"
+"public void createTodo() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:288
+#, no-c-format
+msgid "Alternatively we can initiate a business process using pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:291
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;create-process definition=\"todo\" /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:295
+#, no-c-format
+msgid "Task assignment"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:296
+#, no-c-format
+msgid ""
+"When a process starts, task instances are created. These must be assigned to "
+"users or user groups. We can either hardcode our actor ids, or delegate to a "
+"Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:299
+#, no-c-format
+msgid ""
+"&lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"    &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"&lt;/task&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:300
+#, no-c-format
+msgid ""
+"In this case, we have simply assigned the task to the current user. We can "
+"also assign tasks to a pool:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:303
+#, no-c-format
+msgid ""
+"&lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"    &lt;assignment pooled-actors=\"employees\"/&gt;\n"
+"&lt;/task&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:307
+#, no-c-format
+msgid "Task lists"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:308
+#, no-c-format
+msgid ""
+"Several built-in Seam components make it easy to display task lists. The "
+"<literal>pooledTaskInstanceList</literal> is a list of pooled tasks that "
+"users may assign to themselves:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:311
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{pooledTaskInstanceList}\" var=\"task\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Description&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{task.description}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link action=\"#{pooledTask.assignToCurrentActor}\" value="
+"\"Assign\" taskInstance=\"#{task}\"/&gt;\n"
+"    &lt;/h:column&gt;            \n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:312
+#, no-c-format
+msgid ""
+"Note that instead of <literal>&lt;s:link&gt;</literal> we could have used a "
+"plain JSF <literal>&lt;h:commandLink&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:315
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"#{pooledTask.assignToCurrentActor}\"&gt; \n"
+"    &lt;f:param name=\"taskId\" value=\"#{task.id}\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:316
+#, no-c-format
+msgid ""
+"The <literal>pooledTask</literal> component is a built-in component that "
+"simply assigns the task to the current user."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:319
+#, no-c-format
+msgid ""
+"The <literal>taskInstanceListByType</literal> component includes tasks of a "
+"particular type that are assigned to the current user:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:322
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{taskInstanceListByType['todo']}\" var=\"task"
+"\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Description&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{task.description}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link action=\"#{todoList.start}\" value=\"Start Work\" "
+"taskInstance=\"#{task}\"/&gt;\n"
+"    &lt;/h:column&gt;            \n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:326
+#, no-c-format
+msgid "Performing a task"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:327
+#, no-c-format
+msgid ""
+"To begin work on a task, we use either <literal>@StartTask</literal> or "
+"<literal>@BeginTask</literal> on the listener method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:330
+#, no-c-format
+msgid ""
+"@StartTask\n"
+"public String start() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:331
+#, no-c-format
+msgid "Alternatively we can begin work on a task using pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:334
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;start-task /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:335
+#, no-c-format
+msgid ""
+"These annotations begin a special kind of conversation that has significance "
+"in terms of the overarching business process. Work done by this conversation "
+"has access to state held in the business process context."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:338
+#, no-c-format
+msgid ""
+"If we end the conversation using <literal>@EndTask</literal>, Seam will "
+"signal the completion of the task:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:341
+#, no-c-format
+msgid ""
+"@EndTask(transition=\"completed\")\n"
+"public String completed() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:342
+#, no-c-format
+msgid "Alternatively we can use pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:345
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;end-task transition=\"completed\" /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:346
+#, no-c-format
+msgid ""
+"(Alternatively, we could have used <literal>&lt;end-conversation&gt;</"
+"literal> as shown above.)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:349
+#, no-c-format
+msgid ""
+"At this point, jBPM takes over and continues executing the business process "
+"definition. (In more complex processes, several tasks might need to be "
+"completed before process execution can resume.)"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Jms.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Jms.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Jms.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,477 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Jms.xml:10
+#, no-c-format
+msgid "Asynchronicity and messaging"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:11
+#, no-c-format
+msgid ""
+"Seam makes it very easy to perform work asynchronously from a web request. "
+"When most people think of asynchronicity in Java EE, they think of using "
+"JMS. This is certainly one way to approach the problem in Seam, and is the "
+"right way when you have strict and well-defined quality of service "
+"requirements. Seam makes it easy to send and recieve JMS messages using Seam "
+"components."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:14
+#, no-c-format
+msgid ""
+"But for many usecases, JMS is overkill. Seam layers a simple asynchronous "
+"method and event facility over the EJB 3.0 timer service."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:17
+#, no-c-format
+msgid "Asynchronicity"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:18
+#, no-c-format
+msgid ""
+"Asynchronous events and method calls have the same quality of service "
+"expectations as the container's EJB timer service. If you're not familiar "
+"with the Timer service, don't worry, you don't need to interact with it "
+"directly if you want to use asynchronous methods in Seam."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:21
+#, no-c-format
+msgid ""
+"To use asynchronous methods and events, you need to add the following line "
+"to <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:24
+#, no-c-format
+msgid "&lt;core:dispatcher/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:25
+#, no-c-format
+msgid ""
+"Note that this functionality is not available in environments which do not "
+"support EJB 3.0."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:28
+#, no-c-format
+msgid "Asynchronous methods"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:29
+#, no-c-format
+msgid ""
+"In simplest form, an asynchronous call just lets a method call be processed "
+"asynchronously (in a different thread) from the caller. We usually use an "
+"asynchronous call when we want to return an immediate response to the "
+"client, and let some expensive work be processed in the background. This "
+"pattern works very well in applications which use AJAX, where the client can "
+"automatically poll the server for the result of the work."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:32
+#, no-c-format
+msgid ""
+"For EJB components, we annotate the local interface to specify that a method "
+"is processed asynchronously."
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:35
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public void processPayment(Payment payment);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:36
+#, no-c-format
+msgid ""
+"(For JavaBean components we can annotate the component implementation class "
+"if we like.)"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:39
+#, no-c-format
+msgid "The use of asynchronicity is transparent to the bean class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:42
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"paymentHandler\")\n"
+"public class PaymentHandlerBean implements PaymentHandler\n"
+"{\n"
+"    public void processPayment(Payment payment)\n"
+"    {\n"
+"        //do some work!\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:43
+#, no-c-format
+msgid "And also transparent to the client:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:46
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String pay()\n"
+"    {\n"
+"        paymentHandler.processPayment( new Payment(bill) );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:47
+#, no-c-format
+msgid ""
+"The asynchronous method is processed in a completely new event context and "
+"does not have access to the session or conversation context state of the "
+"caller. However, the business process context <emphasis>is</emphasis> "
+"propagated."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:50
+#, no-c-format
+msgid ""
+"Asynchronous method calls may be scheduled for later execution using the "
+"<literal>@Duration</literal>, <literal>@Expiration</literal> and "
+"<literal>@IntervalDuration</literal> annotations."
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:53
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public void processScheduledPayment(Payment payment, @Expiration Date "
+"date);\n"
+"\n"
+"    @Asynchronous\n"
+"    public void processRecurringPayment(Payment payment, @Expiration Date "
+"date, \n"
+"        @IntervalDuration Long interval)'\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:54
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String schedulePayment()\n"
+"    {\n"
+"        paymentHandler.processScheduledPayment( new Payment(bill), bill."
+"getDueDate() );\n"
+"        return \"success\";\n"
+"    }\n"
+"\n"
+"    public String scheduleRecurringPayment()\n"
+"    {\n"
+"        paymentHandler.processRecurringPayment( new Payment(bill), bill."
+"getDueDate(), ONE_MONTH );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:55
+#, no-c-format
+msgid ""
+"Both client and server may access the <literal>Timer</literal> object "
+"associated with the invocation."
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:58
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public Timer processScheduledPayment(Payment payment, @Expiration Date "
+"date);\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:59
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"paymentHandler\")\n"
+"public class PaymentHandlerBean implements PaymentHandler\n"
+"{\n"
+"    @In Timer timer;\n"
+"    \n"
+"    public Timer processScheduledPayment(Payment payment, @Expiration Date "
+"date)\n"
+"    {\n"
+"        //do some work!\n"
+"        \n"
+"        return timer; //note that return value is completely ignored\n"
+"    }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:60
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String schedulePayment()\n"
+"    {\n"
+"        Timer timer = paymentHandler.processScheduledPayment( new Payment"
+"(bill), bill.getDueDate() );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:61
+#, no-c-format
+msgid "Asynchronous methods cannot return any other value to the caller."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:64
+#, no-c-format
+msgid "Asynchronous events"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:65
+#, no-c-format
+msgid ""
+"Component-driven events may also be asynchronous. To raise an event for "
+"asynchronous processing, simply call the <literal>raiseAsynchronousEvent()</"
+"literal> methods of the <literal>Events</literal> class. To schedule a timed "
+"event, call one of the <literal>raiseTimedEvent()</literal> methods. "
+"Components may observe asynchronous events in the usual way, but remember "
+"that only the business process context is propagated to the asynchronous "
+"thread."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:68
+#, no-c-format
+msgid "Messaging in Seam"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:69
+#, no-c-format
+msgid ""
+"Seam makes it easy to send and receive JMS messages to and from Seam "
+"components."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:72
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:73
+#, no-c-format
+msgid ""
+"To configure Seam's infrastructure for sending JMS messages, you need to "
+"tell Seam about any topics and queues you want to send messages to, and also "
+"tell Seam where to find the <literal>QueueConnectionFactory</literal> and/or "
+"<literal>TopicConnectionFactory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:76
+#, no-c-format
+msgid ""
+"Seam defaults to using <literal>UIL2ConnectionFactory</literal> which is the "
+"usual connection factory for use with JBossMQ. If you are using some other "
+"JMS provider, you need to set one or both of <literal>queueConnection."
+"queueConnectionFactoryJndiName</literal> and <literal>topicConnection."
+"topicConnectionFactoryJndiName</literal> in <literal>seam.properties</"
+"literal>, <literal>web.xml</literal> or <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:79
+#, no-c-format
+msgid ""
+"You also need to list topics and queues in <literal>components.xml</literal> "
+"to install Seam managed <literal>TopicPublisher</literal>s and "
+"<literal>QueueSender</literal>s:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:82
+#, no-c-format
+msgid ""
+"&lt;jms:managed-topic-publisher name=\"stockTickerPublisher\" auto-create="
+"\"true\" \n"
+"    topic-jndi-name=\"topic/stockTickerTopic\"/&gt;\n"
+"\n"
+"&lt;jms:managed-queue-sender name=\"paymentQueueSender\" auto-create=\"true"
+"\" \n"
+"    queue-jndi-name=\"queue/paymentQueue\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:83
+#, no-c-format
+msgid "Sending messages"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:84
+#, no-c-format
+msgid ""
+"Now, you can inject a JMS <literal>TopicPublisher</literal> and "
+"<literal>TopicSession</literal> into any component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:87
+#, no-c-format
+msgid ""
+"@In \n"
+"private TopicPublisher stockTickerPublisher;   \n"
+"@In \n"
+"private TopicSession topicSession;\n"
+"\n"
+"public void publish(StockPrice price) {\n"
+"      try\n"
+"      {\n"
+"         topicPublisher.publish( topicSession.createObjectMessage(price) );\n"
+"      } \n"
+"      catch (Exception ex)\n"
+"      {\n"
+"         throw new RuntimeException(ex);\n"
+"      } \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:88
+#, no-c-format
+msgid "Or, for working with a queue:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:91
+#, no-c-format
+msgid ""
+"@In\n"
+"private QueueSender paymentQueueSender;   \n"
+"@In\n"
+"private QueueSession queueSession;\n"
+"\n"
+"public void publish(Payment payment) {\n"
+"      try\n"
+"      {\n"
+"         paymentQueueSender.send( queueSession.createObjectMessage"
+"(payment) );\n"
+"      } \n"
+"      catch (Exception ex)\n"
+"      {\n"
+"         throw new RuntimeException(ex);\n"
+"      } \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:92
+#, no-c-format
+msgid "Receiving messages using a message-driven bean"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:93
+#, no-c-format
+msgid ""
+"You can process messages using any EJB3 message driven bean. Message-driven "
+"beans may even be Seam components, in which case it is possible to inject "
+"other event and application scoped Seam components."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:96
+#, no-c-format
+msgid "Receiving messages in the client"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:97
+#, no-c-format
+msgid ""
+"Seam Remoting lets you subscribe to a JMS topic from client-side JavaScript. "
+"This is described in the next chapter."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Mail.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Mail.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Mail.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,985 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Mail.xml:10
+#, no-c-format
+msgid "Email"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:11
+#, no-c-format
+msgid ""
+"Seam now includes an optional components for templating and sending emails."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:14
+#, no-c-format
+msgid ""
+"Email support is provided by <literal>jboss-seam-mail.jar</literal>. This "
+"JAR contains the mail JSF controls, which are used to construct emails, and "
+"the <literal>mailSession</literal> manager component."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:17
+#, no-c-format
+msgid ""
+"The examples/mail project contains an example of the email support in "
+"action. It demonstrates proper packaging, and it contains a number of "
+"example that demonstrate the key features currently supported."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:21
+#, no-c-format
+msgid "Creating a message"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:22
+#, no-c-format
+msgid ""
+"You don't need to learn a whole new templating language to use Seam "
+"Mail&mdash;an email is just facelet!"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:25
+#, no-c-format
+msgid ""
+"&lt;m:message xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"    xmlns:m=\"http://jboss.com/products/seam/mail\"\n"
+"    xmlns:h=\"http://java.sun.com/jsf/html\"&gt;\n"
+"  \n"
+"    &lt;m:from name=\"Peter\" address=\"peter at example.com\" /&gt;\n"
+"    &lt;m:to name=\"#{person.firstname} #{person.lastname}\"&gt;#{person."
+"address}&lt;/m:to&gt;\n"
+"    &lt;m:subject&gt;Try out Seam!&lt;/m:subject&gt;\n"
+"    \n"
+"    &lt;m:body&gt;\n"
+"        &lt;p&gt;&lt;h:outputText value=\"Dear #{person.firstname}\" /&gt;,"
+"&lt;/p&gt;\n"
+"        &lt;p&gt;You can try out Seam by visiting \n"
+"        &lt;a href=\"http://labs.jboss.com/jbossseam\"&gt;http://labs.jboss."
+"com/jbossseam&lt;/a&gt;.&lt;/p&gt;\n"
+"        &lt;p&gt;Regards,&lt;/p&gt;\n"
+"        &lt;p&gt;Peter&lt;/p&gt;\n"
+"    &lt;/m:body&gt;\n"
+"    \n"
+"&lt;/m:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:26
+#, no-c-format
+msgid ""
+"The <literal>&lt;m:message&gt;</literal> tag wraps the whole message, and "
+"tells Seam to start rendering an email. Inside the <literal>&lt;m:message&gt;"
+"</literal> tag we use an <literal>&lt;m:from&gt;</literal> tag to set who "
+"the message is from, a <literal>&lt;m:to&gt;</literal> tag to specify a "
+"sender (notice how we use EL as we would in a normal facelet), and a "
+"<literal>&lt;m:subject&gt;</literal> tag."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:29
+#, no-c-format
+msgid ""
+"The <literal>&lt;m:body&gt;</literal> tag wraps the body of the email. You "
+"can use regular HTML tags inside the body as well as JSF components."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:32
+#, no-c-format
+msgid ""
+"So, now you have your email template, how do you go about sending it? Well, "
+"at the end of rendering the <literal>m:message</literal> the "
+"<literal>mailSession</literal> is called to send the email, so all you have "
+"to do is ask Seam to render the view:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:35
+#, no-c-format
+msgid ""
+"@In(create=true)\n"
+"private Renderer renderer;\n"
+"   \n"
+"public void send() {\n"
+"    try {\n"
+"       renderer.render(\"/simple.xhtml\");\n"
+"       facesMessages.add(\"Email sent successfully\");\n"
+"   } \n"
+"   catch (Exception e) {\n"
+"       facesMessages.add(\"Email sending failed: \" + e.getMessage());\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:36
+#, no-c-format
+msgid ""
+"If, for example, you entered an invalid email address, then an exception "
+"would be thrown, which is caught and then displayed to the user."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:40
+#, no-c-format
+msgid "Attachments"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:41
+#, no-c-format
+msgid ""
+"Seam makes it easy to attach files to an email. It supports most of the "
+"standard java types used when working with files."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:44
+#, no-c-format
+msgid "If you wanted to email the <literal>jboss-seam-mail.jar</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:47
+#, no-c-format
+msgid "&lt;m:attachment value=\"/WEB-INF/lib/jboss-seam-mail.jar\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:48
+#, no-c-format
+msgid ""
+"Seam will load the file from the classpath, and attach it to the email. By "
+"default it would be attached as <literal>jboss-seam-mail.jar</literal>; if "
+"you wanted it to have another name you would just add the <literal>fileName</"
+"literal> attribute:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:51
+#, no-c-format
+msgid ""
+"&lt;m:attachment value=\"/WEB-INF/lib/jboss-seam-mail.jar\" fileName=\"this-"
+"is-so-cool.jar\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:52
+#, no-c-format
+msgid ""
+"You could also attach a <literal>java.io.File</literal>, a <literal>java.net."
+"URL</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:55
+#, no-c-format
+msgid "&lt;m:attachment value=\"#{numbers}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:56
+#, no-c-format
+msgid ""
+"Or a <literal>byte[]</literal> or a <literal>java.io.InputStream</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:59
+#, no-c-format
+msgid ""
+"&lt;m:attachment value=\"#{person.photo}\" contentType=\"image/png\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:60
+#, no-c-format
+msgid ""
+"You'll notice that for a <literal>byte[]</literal> and a <literal>java.io."
+"InputStream</literal> you need to specify the MIME type of the attachment "
+"(as that information is not carried as part of the file)."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:63
+#, no-c-format
+msgid ""
+"And it gets even better, you can attach a Seam generated PDF, or any "
+"standard JSF view, just by wrapping a <literal>&lt;m:attachment&gt;</"
+"literal> around the normal tags you would use:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:66
+#, no-c-format
+msgid ""
+"&lt;m:attachment fileName=\"tiny.pdf\"&gt;\n"
+"    &lt;p:"
+"document&gt;                                                      \n"
+"        A very tiny "
+"PDF                                                                                                \n"
+"    &lt;/p:document&gt;\n"
+"&lt;/m:attachment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:67
+#, no-c-format
+msgid ""
+"If you had a set of files you wanted to attach (for example a set of "
+"pictures loaded from a database) you can just use a <literal>&lt;ui:"
+"repeat&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:70
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{people}\" var=\"person\"&gt;\n"
+"    &lt;m:attachment value=\"#{person.photo}\" contentType=\"image/jpeg\"\n"
+"    fileName=\"#{person.firstname}_#{person.lastname}.jpg\"/&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:74
+#, no-c-format
+msgid "HTML/Text alternative part"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:75
+#, no-c-format
+msgid ""
+"Whilst most mail readers nowadays support HTML, some don't, so you can add a "
+"plain text alternative to your email body:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:78
+#, no-c-format
+msgid ""
+"&lt;m:body&gt;\n"
+"    &lt;f:facet name=\"alternative\"&gt;Sorry, your email reader can't show "
+"our fancy email, \n"
+"please go to http://labs.jboss.com/jbossseam to explore Seam.&lt;/f:"
+"facet&gt;\n"
+"&lt;/m:body&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:82
+#, no-c-format
+msgid "Multiple recipients"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:83
+#, no-c-format
+msgid ""
+"Often you'll want to send an email to a group of recipients (for example "
+"your users). All of the recipient mail tags can be placed inside a "
+"<literal>&lt;ui:repeat&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:86
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{allUsers} var=\"user\"&gt;\n"
+"    &lt;m:to name=\"#{user.firstname} #{user.lastname}\" address=\"#{user."
+"emailAddress}\" /&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:90
+#, no-c-format
+msgid "Multiple messages"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:91
+#, no-c-format
+msgid ""
+"Sometimes, however, you need to send a slightly different message to each "
+"recipient (e.g. a password reset). The best way to do this is to place the "
+"whole message inside a <literal>&lt;ui:repeat&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:94
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{people}\" var=\"p\"&gt;\n"
+"    &lt;m:message&gt;\n"
+"        &lt;m:from name=\"#{person.firstname} #{person.lastname}\"&gt;#"
+"{person.address}&lt;/m:from&gt;\n"
+"        &lt;m:to name=\"#{p.firstname}\"&gt;#{p.address}&lt;/m:to&gt;\n"
+"            ...\n"
+"    &lt;/m:message&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:98
+#, no-c-format
+msgid "Templating"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:99
+#, no-c-format
+msgid ""
+"The mail templating example shows that facelets templating Just Works with "
+"the Seam mail tags."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:102
+#, no-c-format
+msgid "Our <literal>template.xhtml</literal> contains:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:105
+#, no-c-format
+msgid ""
+"&lt;m:message&gt;\n"
+"   &lt;m:from name=\"Seam\" address=\"do-not-reply at jboss.com\" /&gt;\n"
+"   &lt;m:to name=\"#{person.firstname} #{person.lastname}\"&gt;#{person."
+"address}&lt;/m:to&gt;\n"
+"   &lt;m:subject&gt;#{subject}&lt;/m:subject&gt;\n"
+"   &lt;m:body&gt;\n"
+"       &lt;html&gt;\n"
+"           &lt;body&gt;\n"
+"               &lt;ui:insert name=\"body\"&gt;This is the default body, "
+"specified by the template.\n"
+"               &lt;/ui:insert&gt;\n"
+"           &lt;/body&gt;\n"
+"       &lt;/html&gt;\n"
+"   &lt;/m:body&gt;\n"
+"&lt;/m:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:106
+#, no-c-format
+msgid "Our <literal>templating.xhtml</literal> contains:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:109
+#, no-c-format
+msgid ""
+"&lt;ui:param name=\"subject\" value=\"Templating with Seam Mail\"/&gt;\n"
+"&lt;ui:define name=\"body\"&gt;\n"
+"    &lt;p&gt;This example demonstrates that you can easily use &lt;i&gt;"
+"facelets templating&lt;/i&gt; in email!&lt;/p&gt;\n"
+"&lt;/ui:define&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:113
+#, no-c-format
+msgid "Other Headers"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:114
+#, no-c-format
+msgid ""
+"Sometimes you'll want to add other headers to your email. Seam provides "
+"support for some (see <xref linkend=\"Email-Tags\"/>). For example, we can "
+"set the importance of the email, and ask for a read receipt:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:117
+#, no-c-format
+msgid ""
+"&lt;m:message xmlns:m=\"http://jboss.com/products/seam/mail\"\n"
+"           importance=\"low\"\n"
+"           requestReadReceipt=\"true\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:118
+#, no-c-format
+msgid ""
+"Otherise you can add any header to the message using the <literal>&lt;m:"
+"header&gt;</literal> tag:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:121
+#, no-c-format
+msgid "&lt;m:header name=\"X-Sent-From\" value=\"JBoss Seam\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:127
+#, no-c-format
+msgid "Receiving emails"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:128
+#, no-c-format
+msgid ""
+"If you are using EJB then you can use a MDB (Message Driven Bean) to receive "
+"email. Seam comes with an improved version of <literal>mail-ra.rar</literal> "
+"as distributed in JBoss AS; until the improvements make there way into a "
+"released version of JBoss AS, replacing the default <literal>rar</literal> "
+"with the one distributed with Seam is recommended."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:131
+#, no-c-format
+msgid "You can configure it like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:134
+#, no-c-format
+msgid ""
+"@MessageDriven(activationConfig={\n"
+"         @ActivationConfigProperty(propertyName=\"mailServer\", "
+"propertyValue=\"localhost\"),\n"
+"         @ActivationConfigProperty(propertyName=\"mailFolder\", "
+"propertyValue=\"INBOX\"),\n"
+"         @ActivationConfigProperty(propertyName=\"storeProtocol\", "
+"propertyValue=\"pop3\"),\n"
+"         @ActivationConfigProperty(propertyName=\"userName\", propertyValue="
+"\"seam\"),\n"
+"         @ActivationConfigProperty(propertyName=\"password\", propertyValue="
+"\"seam\")\n"
+"})\n"
+"@ResourceAdapter(\"mail-ra.rar\")\n"
+"@Name(\"mailListener\")\n"
+"public class MailListenerMDB implements MailListener {\n"
+"\n"
+"   @In(create=true)\n"
+"   private OrderProcessor orderProcessor;\n"
+"\n"
+"   public void onMessage(Message message) {\n"
+"      // Process the message\n"
+"      orderProcessor.process(message.getSubject());\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:135
+#, no-c-format
+msgid ""
+"Each message received will cause <literal>onMessage(Message message)</"
+"literal> to be called. Most seam annotations will work inside a MDB but you "
+"musn't access the persistence context."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:138
+#, no-c-format
+msgid ""
+"You can find more information on the default <literal>mail-ra.rar</literal> "
+"at <ulink url=\"http://wiki.jboss.org/wiki/Wiki.jsp?page=InboundJavaMail"
+"\">http://wiki.jboss.org/wiki/Wiki.jsp?page=InboundJavaMail</ulink>. The "
+"version distributed with Seam also includes a <literal>debug</literal> "
+"property to enable JavaMail debugging, a <literal>flush</literal> property "
+"(by default true) to disable flushing a <literal>POP3</literal> mailbox "
+"after successfullying delivering a message to your MDB and a <literal>port</"
+"literal> property to override the default TCP port. Beware that the api for "
+"this may be altered as changes make there way into JBoss AS."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:141
+#, no-c-format
+msgid ""
+"If you aren't using JBoss AS you can still use <literal>mail-ra.rar</"
+"literal> (included with Seam in the mail directory), or you may find your "
+"application server includes a similar adapter."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:147
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:148
+#, no-c-format
+msgid ""
+"To include Email support in your application, include <literal>jboss-seam-"
+"mail.jar</literal> in your WEB-INF/lib directory. If you are using JBoss AS "
+"there is no further configuration needed to use Seam's email support. "
+"Otherwise you need to make sure you have the JavaMail API, an implementation "
+"of the JavaMail API present (the API and impl used in JBoss AS are "
+"distributed with seam as <literal>lib/mail.jar</literal>), and a copy of the "
+"Java Activation Framework (distributed with seam as <literal>lib/activation."
+"jar</literal>."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:151
+#, no-c-format
+msgid ""
+"The Seam Email module requires the use of Facelets as the view technology. "
+"Future versions of the library may also support the use of JSP. "
+"Additionally, it requires the use of the seam-ui package."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:154
+#, no-c-format
+msgid ""
+"The <literal>mailSession</literal> component uses JavaMail to talk to a "
+"'real' SMTP server."
+msgstr ""
+
+#. Tag: literal
+#: Mail.xml:158
+#, no-c-format
+msgid "mailSession"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:159
+#, no-c-format
+msgid ""
+"A JavaMail Session may be available via a JNDI lookup if you are working in "
+"an JEE environment or you can use a Seam configured Session."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:162
+#, no-c-format
+msgid ""
+"The mailSession component's properties are described in more detail in <xref "
+"linkend=\"Built_in_Seam_components-Mail_related_components\"/>."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:166
+#, no-c-format
+msgid "JNDI lookup in JBoss AS"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:167
+#, no-c-format
+msgid ""
+"The JBossAS <literal>deploy/mail-service.xml</literal> configures a JavaMail "
+"session binding into JNDI. The default service configuration will need "
+"altering for your network. <ulink url=\"http://wiki.jboss.org/wiki/Wiki.jsp?"
+"page=JavaMail\">http://wiki.jboss.org/wiki/Wiki.jsp?page=JavaMail</ulink> "
+"describes the service in more detail."
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:170
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"        xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"        xmlns:mail=\"http://jboss.com/products/seam/mail\"&gt;\n"
+"        \n"
+"    &lt;mail:mail-session session-jndi-name=\"java:/Mail\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:171
+#, no-c-format
+msgid ""
+"Here we tell Seam to get the mail session bound to <literal>java:/Mail</"
+"literal> from JNDI."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:177
+#, no-c-format
+msgid "Seam configured Session"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:178
+#, no-c-format
+msgid ""
+"A mail session can be configured via <literal>components.xml</literal>. Here "
+"we tell Seam to use <literal>smtp.example.com</literal> as the smtp server,"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:181
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"        xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"        xmlns:mail=\"http://jboss.com/products/seam/mail\"&gt;\n"
+"        \n"
+"    &lt;mail:mail-session host=\"smtp.example.com\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:189
+#, no-c-format
+msgid "Tags"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:190
+#, no-c-format
+msgid ""
+"Emails are generated using tags in the <literal>http://jboss.com/products/"
+"seam/mail</literal> namespace. Documents should always have the "
+"<literal>message</literal> tag at the root of the message. The message tag "
+"prepares Seam to generate an email."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:193
+#, no-c-format
+msgid ""
+"The standard templating tags of facelets can be used as normal. Inside the "
+"body you can use any JSF tag which doesn't require access to external "
+"resources (stylesheets, javascript)."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:198
+#, no-c-format
+msgid "&lt;m:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:200
+#, no-c-format
+msgid "Root tag of a mail message"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:205
+#, no-c-format
+msgid ""
+"<literal>importance</literal> &mdash; low, normal or high. By default "
+"normal, this sets the importance of the mail message."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:210
+#, no-c-format
+msgid ""
+"<literal>precedence</literal> &mdash; sets the precedence of the message (e."
+"g. bulk)."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:215
+#, no-c-format
+msgid ""
+"<literal>requestReadReceipt</literal> &mdash; by default false, if set, a "
+"read receipt will be request will be added, with the read receipt being sent "
+"to the <literal>From:</literal> address."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:220
+#, no-c-format
+msgid ""
+"<literal>urlBase</literal> &mdash; If set, the value is prepended to the "
+"<literal>requestContextPath</literal> allowing you to use components such as "
+"<literal>&lt;h:graphicImage&gt;</literal> in your emails."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:228
+#, no-c-format
+msgid "&lt;m:from&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:230
+#, no-c-format
+msgid ""
+"Set's the From: address for the email. You can only have one of these per "
+"email."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:235
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the name the email should come from."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:240 Mail.xml:255
+#, no-c-format
+msgid ""
+"<literal>address</literal> &mdash; the email address the email should come "
+"from."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:248
+#, no-c-format
+msgid "&lt;m:replyTo&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:250
+#, no-c-format
+msgid ""
+"Set's the Reply-to: address for the email. You can only have one of these "
+"per email."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:263
+#, no-c-format
+msgid "&lt;m:to&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:265
+#, no-c-format
+msgid ""
+"Add a recipient to the email. Use multiple &lt;m:to&gt; tags for multiple "
+"recipients. This tag can be safely placed inside a repeat tag such as &lt;ui:"
+"repeat&gt;."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:270 Mail.xml:290 Mail.xml:310
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the name of the recipient."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:275 Mail.xml:295 Mail.xml:315
+#, no-c-format
+msgid "<literal>address</literal> &mdash; the email address of the recipient."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:283
+#, no-c-format
+msgid "&lt;m:cc&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:285
+#, no-c-format
+msgid ""
+"Add a cc recipient to the email. Use multiple &lt;m:cc&gt; tags for multiple "
+"ccs. This tag can be safely placed inside a repeat tag such as &lt;ui:"
+"repeat&gt;."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:303
+#, no-c-format
+msgid "&lt;m:bcc&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:305
+#, no-c-format
+msgid ""
+"Add a bcc recipient to the email. Use multiple &lt;m:bcc&gt; tags for "
+"multiple bccs. This tag can be safely placed inside a repeat tag such as &lt;"
+"ui:repeat&gt;."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:323
+#, no-c-format
+msgid "&lt;m:header&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:325
+#, no-c-format
+msgid ""
+"Add a header to the email (e.g. <literal>X-Sent-From: JBoss Seam</literal>"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:330
+#, no-c-format
+msgid ""
+"<literal>name</literal> &mdash; The name of the header to add (e.g. "
+"<literal>X-Sent-From</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:335
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; The value of the header to add (e.g. "
+"<literal>JBoss Seam</literal>)."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:343
+#, no-c-format
+msgid "&lt;m:attachment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:345
+#, no-c-format
+msgid "Add an attachment to the email."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:350
+#, no-c-format
+msgid "<literal>value</literal> &mdash; The file to attach:"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:355
+#, no-c-format
+msgid ""
+"<literal>String</literal> &mdash; A <literal>String</literal> is interpreted "
+"as a path to file within the classpath"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:360
+#, no-c-format
+msgid ""
+"<literal>java.io.File</literal> &mdash; An EL expression can reference a "
+"<literal>File</literal> object"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:365
+#, no-c-format
+msgid ""
+"<literal>java.net.URL</literal> &mdash; An EL expression can reference a "
+"<literal>URL</literal> object"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:370
+#, no-c-format
+msgid ""
+"<literal>java.io.InputStream</literal> &mdash; An EL expression can "
+"reference an <literal>InputStream</literal>. In this case both a "
+"<literal>fileName</literal> and a <literal>contentType</literal> must be "
+"specified."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:375
+#, no-c-format
+msgid ""
+"<literal>byte[]</literal> &mdash; An EL expression can reference an "
+"<literal>byte[]</literal>. In this case both a <literal>fileName</literal> "
+"and a <literal>contentType</literal> must be specified."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:380
+#, no-c-format
+msgid "If the value attribute is ommitted:"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:385
+#, no-c-format
+msgid ""
+"If this tag contains a <literal>&lt;p:document&gt;</literal> tag, the "
+"document described will be generated and attached to the email. A "
+"<literal>fileName</literal> should be specfied."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:390
+#, no-c-format
+msgid ""
+"If this tag contains other JSF tags a HTML document will be generated from "
+"them and attached to the email. A <literal>fileName</literal> should be "
+"specfied."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:397
+#, no-c-format
+msgid ""
+"<literal>fileName</literal> &mdash; Specify the file name to use for the "
+"attached file."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:402
+#, no-c-format
+msgid ""
+"<literal>contentType</literal> &mdash; Specify the MIME type of the attached "
+"file"
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:410
+#, no-c-format
+msgid "&lt;m:subject&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:412
+#, no-c-format
+msgid "Set's the subject for the email."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:418
+#, no-c-format
+msgid "&lt;m:body&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:420
+#, no-c-format
+msgid ""
+"Set's the body for the email. Supports an <literal>alternative</literal> "
+"facet which, if an HTML email is generated can contain alternative text for "
+"a mail reader which doesn't support html."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:425
+#, no-c-format
+msgid ""
+"<literal>type</literal> &mdash; If set to <literal>plain</literal> then a "
+"plain text email will be generated otherwise an HTML email is generated."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Persistence.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Persistence.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Persistence.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,750 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Persistence.xml:10
+#, no-c-format
+msgid "Seam and Object/Relational Mapping"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:11
+#, no-c-format
+msgid ""
+"Seam provides extensive support for the two most popular persistence "
+"architectures for Java: Hibernate3, and the Java Persistence API introduced "
+"with EJB 3.0. Seam's unique state-management architecture allows the most "
+"sophisticated ORM integration of any web application framework."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:15
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:16
+#, no-c-format
+msgid ""
+"Seam grew out of the frustration of the Hibernate team with the "
+"statelessness typical of the previous generation of Java application "
+"architectures. The state management architecture of Seam was originally "
+"designed to solve problems relating to persistence&mdash;in particular "
+"problems associated with <emphasis>optimistic transaction processing</"
+"emphasis>. Scalable online applications always use optimistic transactions. "
+"An atomic (database/JTA) level transaction should not span a user "
+"interaction unless the application is designed to support only a very small "
+"number of concurrent clients. But almost all interesting work involves first "
+"displaying data to a user, and then, slightly later, updating the same data. "
+"So Hibernate was designed to support the idea of a persistence context which "
+"spanned an optimistic transaction."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:19
+#, no-c-format
+msgid ""
+"Unfortunately, the so-called \"stateless\" architectures that preceded Seam "
+"and EJB 3.0 had no construct for representing an optimistic transaction. So, "
+"instead, these architectures provided persistence contexts scoped to the "
+"atomic transaction. Of course, this resulted in many problems for users, and "
+"is the cause of the number one user complaint about Hibernate: the dreaded "
+"<literal>LazyInitializationException</literal>. What we need is a construct "
+"for representing an optimistic transaction in the application tier."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:22
+#, no-c-format
+msgid ""
+"EJB 3.0 recognizes this problem, and introduces the idea of a stateful "
+"component (a stateful session bean) with an <emphasis>extended persistence "
+"context</emphasis> scoped to the lifetime of the component. This is a "
+"partial solution to the problem (and is a useful construct in and of itself) "
+"however there are two problems:"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:27
+#, no-c-format
+msgid ""
+"The lifecycle of the stateful session bean must be managed manually via code "
+"in the web tier (it turns out that this is a subtle problem and much more "
+"difficult in practice than it sounds)."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:32
+#, no-c-format
+msgid ""
+"Propagation of the persistence context between stateful components in the "
+"same optimistic transaction is possible, but tricky."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:37
+#, no-c-format
+msgid ""
+"Seam solves the first problem by providing conversations, and stateful "
+"session bean components scoped to the conversation. (Most conversations "
+"actually represent optimistic transactions in the data layer.) This is "
+"sufficient for many simple applications (such as the Seam booking demo) "
+"where persistence context propagation is not needed. For more complex "
+"applications, with many loosly-interacting components in each conversation, "
+"propagation of the persistence context across components becomes an "
+"important issue. So Seam extends the persistence context management model of "
+"EJB 3.0, to provide conversation-scoped extended persistence contexts."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:43
+#, no-c-format
+msgid "Seam managed transactions"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:44
+#, no-c-format
+msgid ""
+"EJB session beans feature declarative transaction management. The EJB "
+"container is able to start a transaction transparently when the bean is "
+"invoked, and end it when the invocation ends. If we write a session bean "
+"method that acts as a JSF action listener, we can do all the work associated "
+"with that action in one transaction, and be sure that it is committed or "
+"rolled back when we finish processing the action. This is a great feature, "
+"and all that is needed by some Seam applications."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:47
+#, no-c-format
+msgid ""
+"However, there is a problem with this approach. A Seam application may not "
+"perform all data access for a request from a single method call to a session "
+"bean."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:52
+#, no-c-format
+msgid ""
+"The request might require processing by several loosly-coupled components, "
+"each of which is called independently from the web layer. It is common to "
+"see several or even many calls per request from the web layer to EJB "
+"components in Seam."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:57
+#, no-c-format
+msgid "Rendering of the view might require lazy fetching of associations."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:62
+#, no-c-format
+msgid ""
+"The more transactions per request, the more likely we are to encounter "
+"atomicity and isolation problems when our application is processing many "
+"concurrent requests. Certainly, all write operations should occur in the "
+"same transaction!"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:65
+#, no-c-format
+msgid ""
+"Hibernate users developed the <emphasis>\"open session in view\"</emphasis> "
+"pattern to work around this problem. In the Hibernate community, \"open "
+"session in view\" was historically even more important because frameworks "
+"like Spring use transaction-scoped persistence contexts. So rendering the "
+"view would cause <literal>LazyInitializationException</literal>s when "
+"unfetched associations were accessed."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:68
+#, no-c-format
+msgid ""
+"This pattern is usually implemented as a single transaction which spans the "
+"entire request. There are several problems with this implementation, the "
+"most serious being that we can never be sure that a transaction is "
+"successful until we commit it&mdash;but by the time the \"open session in "
+"view\" transaction is committed, the view is fully rendered, and the "
+"rendered response may already have been flushed to the client. How can we "
+"notify the user that their transaction was unsuccessful?"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:71
+#, no-c-format
+msgid ""
+"Seam solves both the transaction isolation problem and the association "
+"fetching problem, while working around the problems with \"open session in "
+"view\". The solution comes in two parts:"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:76
+#, no-c-format
+msgid ""
+"use an extended persistence context that is scoped to the conversation, "
+"instead of to the transaction"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:81
+#, no-c-format
+msgid ""
+"use two transactions per request; the first spans the beginning of the "
+"update model values phase until the end of the invoke application phase; the "
+"second spans the render response phase"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:86
+#, no-c-format
+msgid ""
+"In the next section, we'll tell you how to set up a conversation-scope "
+"persistence context. But first we need to tell you how to enable Seam "
+"transaction management. Note that you can use conversation-scoped "
+"persistence contexts without Seam transaction management, and there are good "
+"reasons to use Seam transaction management even when you're not using Seam-"
+"managed persistence contexts. However, the two facilities were designed to "
+"work together, and work best when used together."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:90
+#, no-c-format
+msgid "Enabling Seam-managed transactions"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:91
+#, no-c-format
+msgid ""
+"To make use of <emphasis>Seam managed transactions</emphasis>, you need to "
+"use <literal>TransactionalSeamPhaseListener</literal> in place of "
+"<literal>SeamPhaseListener</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:94
+#, no-c-format
+msgid ""
+"&lt;lifecycle&gt;\n"
+"     &lt;phase-listener&gt;\n"
+"        org.jboss.seam.jsf.TransactionalSeamPhaseListener\n"
+"    &lt;/phase-listener&gt;\n"
+"&lt;/lifecycle&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:95
+#, no-c-format
+msgid ""
+"Seam transaction management is useful even if you're using EJB 3.0 container-"
+"managed persistence contexts. But it is especially useful if you use Seam "
+"outside a Java EE 5 environment, or in any other case where you would use a "
+"Seam-managed persistence context."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:103
+#, no-c-format
+msgid "Seam-managed persistence contexts"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:104
+#, no-c-format
+msgid ""
+"If you're using Seam outside of a Java EE 5 environment, you can't rely upon "
+"the container to manage the persistence context lifecycle for you. Even if "
+"you are in an EE 5 environment, you might have a complex application with "
+"many loosly coupled components that collaborate together in the scope of a "
+"single conversation, and in this case you might find that propagation of the "
+"persistence context between component is tricky and error-prone."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:107
+#, no-c-format
+msgid ""
+"In either case, you'll need to use a <emphasis>managed persistence context</"
+"emphasis> (for JPA) or a <emphasis>managed session</emphasis> (for "
+"Hibernate) in your components. A Seam-managed persistence context is just a "
+"built-in Seam component that manages an instance of <literal>EntityManager</"
+"literal> or <literal>Session</literal> in the conversation context. You can "
+"inject it with <literal>@In</literal>."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:110
+#, no-c-format
+msgid ""
+"Seam-managed persistence contexts are extremely efficient in a clustered "
+"environment. Seam is able to perform an optimization that EJB 3.0 "
+"specification does not allow containers to use for container-managed "
+"extended persistence contexts. Seam supports transparent failover of "
+"extended persisence contexts, without the need to replicate any persistence "
+"context state between nodes. (We hope to fix this oversight in the next "
+"revision of the EJB spec.)"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:114
+#, no-c-format
+msgid "Using a Seam-managed persistence context with JPA"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:115
+#, no-c-format
+msgid ""
+"Configuring a managed persistence context is easy. In <literal>components."
+"xml</literal>, we can write:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:118
+#, no-c-format
+msgid ""
+"&lt;core:managed-persistence-context name=\"bookingDatabase\" \n"
+"                           auto-create=\"true\"\n"
+"            persistence-unit-jndi-name=\"java:/EntityManagerFactories/"
+"bookingData\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:119
+#, no-c-format
+msgid ""
+"This configuration creates a conversation-scoped Seam component named "
+"<literal>bookingDatabase</literal> that manages the lifecycle of "
+"<literal>EntityManager</literal> instances for the persistence unit "
+"(<literal>EntityManagerFactory</literal> instance) with JNDI name "
+"<literal>java:/EntityManagerFactories/bookingData</literal>."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:122
+#, no-c-format
+msgid ""
+"Of course, you need to make sure that you have bound the "
+"<literal>EntityManagerFactory</literal> into JNDI. In JBoss, you can do this "
+"by adding the following property setting to <literal>persistence.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:125
+#, no-c-format
+msgid ""
+"&lt;property name=\"jboss.entity.manager.factory.jndi.name\" \n"
+"          value=\"java:/EntityManagerFactories/bookingData\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:126
+#, no-c-format
+msgid "Now we can have our <literal>EntityManager</literal> injected using:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:129
+#, no-c-format
+msgid "@In EntityManager bookingDatabase;"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:133
+#, no-c-format
+msgid "Using a Seam-managed Hibernate session"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:134
+#, no-c-format
+msgid ""
+"Seam-managed Hibernate sessions are similar. In <literal>components.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:137
+#, no-c-format
+msgid ""
+"&lt;core:hibernate-session-factory name=\"hibernateSessionFactory\"/&gt;\n"
+"\n"
+"&lt;core:managed-hibernate-session name=\"bookingDatabase\" \n"
+"                         auto-create=\"true\"\n"
+"           session-factory-jndi-name=\"java:/bookingSessionFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:138
+#, no-c-format
+msgid ""
+"Where <literal>java:/bookingSessionFactory</literal> is the name of the "
+"session factory specified in <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:141
+#, no-c-format
+msgid ""
+"&lt;session-factory name=\"java:/bookingSessionFactory\"&gt;\n"
+"    &lt;property name=\"transaction.flush_before_completion\"&gt;true&lt;/"
+"property&gt;\n"
+"    &lt;property name=\"connection.release_mode\"&gt;after_statement&lt;/"
+"property&gt;\n"
+"    &lt;property name=\"transaction.manager_lookup_class\"&gt;\n"
+"        org.hibernate.transaction.JBossTransactionManagerLookup\n"
+"    &lt;/property&gt;\n"
+"    &lt;property name=\"transaction.factory_class\"&gt;\n"
+"        org.hibernate.transaction.JTATransactionFactory\n"
+"    &lt;/property&gt;\n"
+"    &lt;property name=\"connection.datasource\"&gt;java:/"
+"bookingDatasource&lt;/property&gt;\n"
+"    ...\n"
+"&lt;/session-factory&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:142
+#, no-c-format
+msgid ""
+"Note that Seam does not flush the session, so you should always enable "
+"<literal>hibernate.transaction.flush_before_completion</literal> to ensure "
+"that the session is automatically flushed before the JTA transaction commits."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:145
+#, no-c-format
+msgid ""
+"We can now have a managed Hibernate <literal>Session</literal> injected into "
+"our JavaBean components using the following code:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:148
+#, no-c-format
+msgid "@In Session bookingDatabase;"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:152
+#, no-c-format
+msgid "Seam-managed persistence contexts and atomic conversations"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:153
+#, no-c-format
+msgid ""
+"Persistence contexts scoped to the conversation allows you to program "
+"optimistic transactions that span multiple requests to the server without "
+"the need to use the <literal>merge()</literal> operation , without the need "
+"to re-load data at the beginning of each request, and without the need to "
+"wrestle with the <literal>LazyInitializationException</literal> or "
+"<literal>NonUniqueObjectException</literal>."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:156
+#, no-c-format
+msgid ""
+"As with any optimistic transaction management, transaction isolation and "
+"consistency can be achieved via use of optimistic locking. Fortunately, both "
+"Hibernate and EJB 3.0 make it very easy to use optimistic locking, by "
+"providing the <literal>@Version</literal> annotation."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:159
+#, no-c-format
+msgid ""
+"By default, the persistence context is flushed (synchronized with the "
+"database) at the end of each transaction. This is sometimes the desired "
+"behavior. But very often, we would prefer that all changes are held in "
+"memory and only written to the database when the conversation ends "
+"successfully. This allows for truly atomic conversations. As the result of a "
+"truly stupid and shortsighted decision by certain non-JBoss, non-Sun and non-"
+"Sybase members of the EJB 3.0 expert group, there is currently no simple, "
+"usable and portable way to implement atomic conversations using EJB 3.0 "
+"persistence. However, Hibernate provides this feature as a vendor extension "
+"to the <literal>FlushModeType</literal>s defined by the specification, and "
+"it is our expectation that other vendors will soon provide a similar "
+"extension."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:162
+#, no-c-format
+msgid ""
+"Seam lets you specify <literal>FlushModeType.MANUAL</literal> when beginning "
+"a conversation. Currently, this works only when Hibernate is the underlying "
+"persistence provider, but we plan to support other equivalent vendor "
+"extensions."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:165
+#, no-c-format
+msgid ""
+"@In EntityManager em; //a Seam-managed persistence context\n"
+"\n"
+"@Begin(flushMode=MANUAL)\n"
+"public void beginClaimWizard() {\n"
+"    claim = em.find(Claim.class, claimId);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:166
+#, no-c-format
+msgid ""
+"Now, the <literal>claim</literal> object remains managed by the persistence "
+"context for the rest ot the conversation. We can make changes to the claim:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:169
+#, no-c-format
+msgid ""
+"public void addPartyToClaim() {\n"
+"    Party party = ....;\n"
+"    claim.addParty(party);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:170
+#, no-c-format
+msgid ""
+"But these changes will not be flushed to the database until we explicitly "
+"force the flush to occur:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:173
+#, no-c-format
+msgid ""
+"@End\n"
+"public void commitClaim() {\n"
+"    em.flush();\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:179
+#, no-c-format
+msgid "Using the JPA \"delegate\""
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:180
+#, no-c-format
+msgid ""
+"The <literal>EntityManager</literal> interface lets you access a vendor-"
+"specific API via the <literal>getDelegate()</literal> method. Naturally, the "
+"most interesting vendor is Hibernate, and the most powerful delegate "
+"interface is <literal>org.hibernate.Session</literal>. You'd be nuts to use "
+"anything else. Trust me, I'm not biased at all."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:183
+#, no-c-format
+msgid ""
+"But regardless of whether you're using Hibernate (genius!) or something else "
+"(masochist, or just not very bright), you'll almost certainly want to use "
+"the delegate in your Seam components from time to time. One approach would "
+"be the following:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:186
+#, no-c-format
+msgid ""
+"@In EntityManager entityManager;\n"
+"\n"
+"@Create\n"
+"public void init() {\n"
+"    ( (Session) entityManager.getDelegate() ).enableFilter(\"currentVersions"
+"\");\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:187
+#, no-c-format
+msgid ""
+"But typecasts are unquestionably the ugliest syntax in the Java language, so "
+"most people avoid them whenever possible. Here's a different way to get at "
+"the delegate. First, add the following line to <literal>components.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:190
+#, no-c-format
+msgid ""
+"&lt;factory name=\"session\" \n"
+"         scope=\"STATELESS\" \n"
+"         auto-create=\"true\" \n"
+"         value=\"#{entityManager.delegate}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:191
+#, no-c-format
+msgid "Now we can inject the session directly:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:194
+#, no-c-format
+msgid ""
+"@In Session session;\n"
+"\n"
+"@Create\n"
+"public void init() {\n"
+"    session.enableFilter(\"currentVersions\");\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:198
+#, no-c-format
+msgid "Using EL in EJB-QL/HQL"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:199
+#, no-c-format
+msgid ""
+"Seam proxies the <literal>EntityManager</literal> or <literal>Session</"
+"literal> object whenever you use a Seam-managed persistence context or "
+"inject a container managed persistence context using "
+"<literal>@PersistenceContext</literal>. This lets you use EL expressions in "
+"your query strings, safely and efficiently. For example, this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:202
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=#{user.username}\")\n"
+"         .getSingleResult();"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:203
+#, no-c-format
+msgid "is equivalent to:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:206
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getSingleResult();"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:207
+#, no-c-format
+msgid "Of course, you should never, ever write it like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:210
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=\" + user.getUsername"
+"()) //BAD!\n"
+"         .getSingleResult();"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:211
+#, no-c-format
+msgid "(It is inefficient and vulnerable to SQL injection attacks.)"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:217
+#, no-c-format
+msgid "Using Hibernate filters"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:218
+#, no-c-format
+msgid ""
+"The coolest, and most unique, feature of Hibernate is <emphasis>filters</"
+"emphasis>. Filters let you provide a restricted view of the data in the "
+"database. You can find out more about filters in the Hibernate "
+"documentation. But we thought we'd mention an easy way to incorporate "
+"filters into a Seam application, one that works especially well with the "
+"Seam Application Framework."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:221
+#, no-c-format
+msgid ""
+"Seam-managed persistence contexts may have a list of filters defined, which "
+"will be enabled whenever an <literal>EntityManager</literal> or Hibernate "
+"<literal>Session</literal> is first created. (Of course, they may only be "
+"used when Hibernate is the underlying persistence provider.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:224
+#, no-c-format
+msgid ""
+"&lt;core:filter name=\"regionFilter\"&gt;\n"
+"    &lt;core:name&gt;region&lt;/core:name&gt;\n"
+"    &lt;core:parameters&gt;\n"
+"        &lt;key&gt;regionCode&lt;/key&gt;\n"
+"        &lt;value&gt;#{region.code}&lt;/value&gt;\n"
+"    &lt;/core:parameters&gt;\n"
+"&lt;/core:filter&gt;\n"
+"\n"
+"&lt;core:filter name=\"currentFilter\"&gt;\n"
+"    &lt;core:name&gt;current&lt;/core:name&gt;\n"
+"    &lt;core:parameters&gt;\n"
+"        &lt;key&gt;date&lt;/key&gt;\n"
+"        &lt;value&gt;#{currentDate}&lt;/value&gt;\n"
+"    &lt;/core:parameters&gt;\n"
+"&lt;/core:filter&gt;\n"
+"\n"
+"&lt;core:managed-persistence-context name=\"personDatabase\"\n"
+"    persistence-unit-jndi-name=\"java:/EntityManagerFactories/personDatabase"
+"\"&gt;\n"
+"    &lt;core:filters&gt;\n"
+"        &lt;value&gt;#{regionFilter}&lt;/value&gt;\n"
+"        &lt;value&gt;#{currentFilter}&lt;/value&gt;\n"
+"    &lt;/core:filters&gt;\n"
+"&lt;/core:managed-persistence-context&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Remoting.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Remoting.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Remoting.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1458 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Remoting.xml:10
+#, no-c-format
+msgid "Remoting"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:11
+#, no-c-format
+msgid ""
+"Seam provides a convenient method of remotely accessing components from a "
+"web page, using AJAX (Asynchronous Javascript and XML). The framework for "
+"this functionality is provided with almost no up-front development effort - "
+"your components only require simple annotating to become accessible via "
+"AJAX. This chapter describes the steps required to build an AJAX-enabled web "
+"page, then goes on to explain the features of the Seam Remoting framework in "
+"more detail."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:14 Remoting.xml:296
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:15
+#, no-c-format
+msgid ""
+"To use remoting, the Seam Resource servlet must first be configured in your "
+"<literal>web.xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:18
+#, no-c-format
+msgid ""
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"  &lt;/servlet&gt;\n"
+"\n"
+"  &lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"  &lt;/servlet-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:19
+#, no-c-format
+msgid ""
+"The next step is to import the necessary Javascript into your web page. "
+"There are a minimum of two scripts that must be imported. The first one "
+"contains all the client-side framework code that enables remoting "
+"functionality:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:22
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/resource/"
+"remote.js\"&gt;&lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:23
+#, no-c-format
+msgid ""
+"The second script contains the stubs and type definitions for the components "
+"you wish to call. It is generated dynamically based on the local interface "
+"of your components, and includes type definitions for all of the classes "
+"that can be used to call the remotable methods of the interface. The name of "
+"the script reflects the name of your component. For example, if you have a "
+"stateless session bean annotated with <literal>@Name(\"customerAction\")</"
+"literal>, then your script tag should look like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:26
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?customerAction\"&gt;\n"
+"      &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:27
+#, no-c-format
+msgid ""
+"If you wish to access more than one component from the same page, then "
+"include them all as parameters of your script tag:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:30
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" \n"
+"      src=\"seam/resource/remoting/interface.js?customerAction&amp;"
+"accountAction\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:31
+#, no-c-format
+msgid "The \"Seam\" object"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:32
+#, no-c-format
+msgid ""
+"Client-side interaction with your components is all performed via the "
+"<literal>Seam</literal> Javascript object. This object is defined in "
+"<literal>remote.js</literal>, and you'll be using it to make asynchronous "
+"calls against your component. It is split into two areas of functionality; "
+"<literal>Seam.Component</literal> contains methods for working with "
+"components and <literal>Seam.Remoting</literal> contains methods for "
+"executing remote requests. The easiest way to become familiar with this "
+"object is to start with a simple example."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:35
+#, no-c-format
+msgid "A Hello World example"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:36
+#, no-c-format
+msgid ""
+"Let's step through a simple example to see how the <literal>Seam</literal> "
+"object works. First of all, let's create a new Seam component called "
+"<literal>helloAction</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:39
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"  @Name(\"helloAction\")\n"
+"  public class HelloAction implements HelloLocal {\n"
+"    public String sayHello(String name) {\n"
+"      return \"Hello, \" + name;\n"
+"    }\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:40
+#, no-c-format
+msgid ""
+"You also need to create a local interface for our new component - take "
+"special note of the <literal>@WebRemote</literal> annotation, as it's "
+"required to make our method accessible via remoting:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:43
+#, no-c-format
+msgid ""
+"@Local\n"
+"  public interface HelloLocal {\n"
+"    @WebRemote\n"
+"    public String sayHello(String name);\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:44
+#, no-c-format
+msgid ""
+"That's all the server-side code we need to write. Now for our web page - "
+"create a new page and import the following scripts:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:47
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/resource/"
+"remote.js\"&gt;&lt;/script&gt;\n"
+"  &lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?helloAction\"&gt;&lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:48
+#, no-c-format
+msgid ""
+"To make this a fully interactive user experience, let's add a button to our "
+"page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:51
+#, no-c-format
+msgid ""
+"&lt;button onclick=\"javascript:sayHello()\"&gt;Say Hello&lt;/button&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:52
+#, no-c-format
+msgid ""
+"We'll also need to add some more script to make our button actually do "
+"something when it's clicked:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:55
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\"&gt;\n"
+"    //&lt;![CDATA[\n"
+"\n"
+"    function sayHello() {\n"
+"      var name = prompt(\"What is your name?\");\n"
+"      Seam.Component.getInstance(\"helloAction\").sayHello(name, "
+"sayHelloCallback);\n"
+"    }\n"
+"\n"
+"    function sayHelloCallback(result) {\n"
+"      alert(result);\n"
+"    }\n"
+"\n"
+"    // ]]&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:56
+#, no-c-format
+msgid ""
+"We're done! Deploy your application and browse to your page. Click the "
+"button, and enter a name when prompted. A message box will display the hello "
+"message confirming that the call was successful. If you want to save some "
+"time, you'll find the full source code for this Hello World example in "
+"Seam's <literal>/examples/remoting/helloworld</literal> directory."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:59
+#, no-c-format
+msgid ""
+"So what does the code of our script actually do? Let's break it down into "
+"smaller pieces. To start with, you can see from the Javascript code listing "
+"that we have implemented two methods - the first method is responsible for "
+"prompting the user for their name and then making a remote request. Take a "
+"look at the following line:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:62
+#, no-c-format
+msgid ""
+"Seam.Component.getInstance(\"helloAction\").sayHello(name, sayHelloCallback);"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:63
+#, no-c-format
+msgid ""
+"The first section of this line, <literal>Seam.Component.getInstance"
+"(\"helloAction\")</literal> returns a proxy, or \"stub\" for our "
+"<literal>helloAction</literal> component. We can invoke the methods of our "
+"component against this stub, which is exactly what happens with the "
+"remainder of the line: <literal>sayHello(name, sayHelloCallback);</literal>."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:66
+#, no-c-format
+msgid ""
+"What this line of code in its completeness does, is invoke the "
+"<literal>sayHello</literal> method of our component, passing in "
+"<literal>name</literal> as a parameter. The second parameter, "
+"<literal>sayHelloCallback</literal> isn't a parameter of our component's "
+"<literal>sayHello</literal> method, instead it tells the Seam Remoting "
+"framework that once it receives the response to our request, it should pass "
+"it to the <literal>sayHelloCallback</literal> Javascript method. This "
+"callback parameter is entirely optional, so feel free to leave it out if "
+"you're calling a method with a <literal>void</literal> return type or if you "
+"don't care about the result."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:69
+#, no-c-format
+msgid ""
+"The <literal>sayHelloCallback</literal> method, once receiving the response "
+"to our remote request then pops up an alert message displaying the result of "
+"our method call."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:72
+#, no-c-format
+msgid "Seam.Component"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:73
+#, no-c-format
+msgid ""
+"The <literal>Seam.Component</literal> Javascript object provides a number of "
+"client-side methods for working with your Seam components. The two main "
+"methods, <literal>newInstance()</literal> and <literal>getInstance()</"
+"literal> are documented in the following sections however their main "
+"difference is that <literal>newInstance()</literal> will always create a new "
+"instance of a component type, and <literal>getInstance()</literal> will "
+"return a singleton instance."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:76
+#, no-c-format
+msgid "Seam.Component.newInstance()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:77
+#, no-c-format
+msgid ""
+"Use this method to create a new instance of an entity or Javabean component. "
+"The object returned by this method will have the same getter/setter methods "
+"as its server-side counterpart, or alternatively if you wish you can access "
+"its fields directly. Take the following Seam entity component for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:80
+#, no-c-format
+msgid ""
+"@Name(\"customer\")\n"
+"  @Entity\n"
+"  public class Customer implements Serializable\n"
+"  {\n"
+"    private Integer customerId;\n"
+"    private String firstName;\n"
+"    private String lastName;\n"
+"    \n"
+"    @Column public Integer getCustomerId() { \n"
+"      return customerId; \n"
+"    }\n"
+"    \n"
+"    public void setCustomerId(Integer customerId} { \n"
+"      this.customerId = customerId; \n"
+"    }\n"
+"    \n"
+"    @Column public String getFirstName() { \n"
+"      return firstName; \n"
+"    }\n"
+"    \n"
+"    public void setFirstName(String firstName) {\n"
+"      this.firstName = firstName; \n"
+"    }\n"
+"    \n"
+"    @Column public String getLastName() {\n"
+"      return lastName;\n"
+"    }\n"
+"    \n"
+"    public void setLastName(String lastName) {\n"
+"      this.lastName = lastName;\n"
+"    }\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:81
+#, no-c-format
+msgid "To create a client-side Customer you would write the following code:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:84
+#, no-c-format
+msgid "var customer = Seam.Component.newInstance(\"customer\");"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:85
+#, no-c-format
+msgid "Then from here you can set the fields of the customer object:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:88
+#, no-c-format
+msgid ""
+"customer.setFirstName(\"John\");\n"
+"  // Or you can set the fields directly\n"
+"  customer.lastName = \"Smith\";"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:89
+#, no-c-format
+msgid "Seam.Component.getInstance()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:90
+#, no-c-format
+msgid ""
+"The <literal>getInstance()</literal> method is used to get a reference to a "
+"Seam session bean component stub, which can then be used to remotely execute "
+"methods against your component. This method returns a singleton for the "
+"specified component, so calling it twice in a row with the same component "
+"name will return the same instance of the component."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:93
+#, no-c-format
+msgid ""
+"To continue our example from before, if we have created a new "
+"<literal>customer</literal> and we now wish to save it, we would pass it to "
+"the <literal>saveCustomer()</literal> method of our <literal>customerAction</"
+"literal> component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:96
+#, no-c-format
+msgid "Seam.Component.getInstance(\"customerAction\").saveCustomer(customer);"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:97
+#, no-c-format
+msgid "Seam.Component.getComponentName()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:98
+#, no-c-format
+msgid ""
+"Passing an object into this method will return its component name if it is a "
+"component, or <literal>null</literal> if it is not."
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:101
+#, no-c-format
+msgid ""
+"if (Seam.Component.getComponentName(instance) == \"customer\")\n"
+"    alert(\"Customer\");\n"
+"  else if (Seam.Component.getComponentName(instance) == \"staff\")\n"
+"    alert(\"Staff member\");"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:102
+#, no-c-format
+msgid "Seam.Remoting"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:103
+#, no-c-format
+msgid ""
+"Most of the client side functionality for Seam Remoting is contained within "
+"the <literal>Seam.Remoting</literal> object. While you shouldn't need to "
+"directly call most of its methods, there are a couple of important ones "
+"worth mentioning."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:106
+#, no-c-format
+msgid "Seam.Remoting.createType()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:107
+#, no-c-format
+msgid ""
+"If your application contains or uses Javabean classes that aren't Seam "
+"components, you may need to create these types on the client side to pass as "
+"parameters into your component method. Use the <literal>createType()</"
+"literal> method to create an instance of your type. Pass in the fully "
+"qualified Java class name as a parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:110
+#, no-c-format
+msgid "var widget = Seam.Remoting.createType(\"com.acme.widgets.MyWidget\");"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:111
+#, no-c-format
+msgid "Seam.Remoting.getTypeName()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:112
+#, no-c-format
+msgid ""
+"This method is the equivalent of <literal>Seam.Component.getComponentName()</"
+"literal> but for non-component types. It will return the name of the type "
+"for an object instance, or <literal>null</literal> if the type is not known. "
+"The name is the fully qualified name of the type's Java class."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:115
+#, no-c-format
+msgid "Client Interfaces"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:116
+#, no-c-format
+msgid ""
+"In the configuration section above, the interface, or \"stub\" for our "
+"component is imported into our page via <literal>seam/resource/remoting/"
+"interface.js</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:119
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?customerAction\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:120
+#, no-c-format
+msgid ""
+"By including this script in our page, the interface definitions for our "
+"component, plus any other components or types that are required to execute "
+"the methods of our component are generated and made available for the "
+"remoting framework to use."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:123
+#, no-c-format
+msgid ""
+"There are two types of client stub that can be generated, \"executable\" "
+"stubs and \"type\" stubs. Executable stubs are behavioural, and are used to "
+"execute methods against your session bean components, while type stubs "
+"contain state and represent the types that can be passed in as parameters or "
+"returned as a result."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:126
+#, no-c-format
+msgid ""
+"The type of client stub that is generated depends on the type of your Seam "
+"component. If the component is a session bean, then an executable stub will "
+"be generated, otherwise if it's an entity or JavaBean, then a type stub will "
+"be generated. There is one exception to this rule; if your component is a "
+"JavaBean (ie it is not a session bean nor an entity bean) and any of its "
+"methods are annotated with @WebRemote, then an executable stub will be "
+"generated for it instead of a type stub. This allows you to use remoting to "
+"call methods of your JavaBean components in a non-EJB environment where you "
+"don't have access to session beans."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:130
+#, no-c-format
+msgid "The Context"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:131
+#, no-c-format
+msgid ""
+"The Seam Remoting Context contains additional information which is sent and "
+"received as part of a remoting request/response cycle. At this stage it only "
+"contains the conversation ID but may be expanded in the future."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:134
+#, no-c-format
+msgid "Setting and reading the Conversation ID"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:136
+#, no-c-format
+msgid ""
+"If you intend on using remote calls within the scope of a conversation then "
+"you need to be able to read or set the conversation ID in the Seam Remoting "
+"Context. To read the conversation ID after making a remote request call "
+"<literal>Seam.Remoting.getContext().getConversationId()</literal>. To set "
+"the conversation ID before making a request, call <literal>Seam.Remoting."
+"getContext().setConversationId()</literal>."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:139
+#, no-c-format
+msgid ""
+"If the conversation ID hasn't been explicitly set with <literal>Seam."
+"Remoting.getContext().setConversationId()</literal>, then it will be "
+"automatically assigned the first valid conversation ID that is returned by "
+"any remoting call. If you are working with multiple conversations within "
+"your page, then you may need to explicitly set the conversation ID before "
+"each call. If you are working with just a single conversation, then you "
+"don't need to do anything special."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:145
+#, no-c-format
+msgid "Batch Requests"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:146
+#, no-c-format
+msgid ""
+"Seam Remoting allows multiple component calls to be executed within a single "
+"request. It is recommended that this feature is used wherever it is "
+"appropriate to reduce network traffic."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:149
+#, no-c-format
+msgid ""
+"The method <literal>Seam.Remoting.startBatch()</literal> will start a new "
+"batch, and any component calls executed after starting a batch are queued, "
+"rather than being sent immediately. When all the desired component calls "
+"have been added to the batch, the <literal>Seam.Remoting.executeBatch()</"
+"literal> method will send a single request containing all of the queued "
+"calls to the server, where they will be executed in order. After the calls "
+"have been executed, a single response containining all return values will be "
+"returned to the client and the callback functions (if provided) triggered in "
+"the same order as execution."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:152
+#, no-c-format
+msgid ""
+"If you start a new batch via the <literal>startBatch()</literal> method but "
+"then decide you don't want to send it, the <literal>Seam.Remoting.cancelBatch"
+"()</literal> method will discard any calls that were queued and exit the "
+"batch mode."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:155
+#, no-c-format
+msgid ""
+"To see an example of a batch being used, take a look at <literal>/examples/"
+"remoting/chatroom</literal>."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:159
+#, no-c-format
+msgid "Working with Data types"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:160
+#, no-c-format
+msgid "Primitives / Basic Types"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:161
+#, no-c-format
+msgid ""
+"This section describes the support for basic data types. On the server side "
+"these values are generally compatible with either their primitive type or "
+"their corresponding wrapper class."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:164
+#, no-c-format
+msgid "String"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:165
+#, no-c-format
+msgid ""
+"Simply use Javascript String objects when setting String parameter values."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:168
+#, no-c-format
+msgid "Number"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:169
+#, no-c-format
+msgid ""
+"There is support for all number types supported by Java. On the client side, "
+"number values are always serialized as their String representation and then "
+"on the server side they are converted to the correct destination type. "
+"Conversion into either a primitive or wrapper type is supported for "
+"<literal>Byte</literal>, <literal>Double</literal>, <literal>Float</"
+"literal>, <literal>Integer</literal>, <literal>Long</literal> and "
+"<literal>Short</literal> types."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:172
+#, no-c-format
+msgid "Boolean"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:173
+#, no-c-format
+msgid ""
+"Booleans are represented client side by Javascript Boolean values, and "
+"server side by a Java boolean."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:176
+#, no-c-format
+msgid "JavaBeans"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:177
+#, no-c-format
+msgid ""
+"In general these will be either Seam entity or JavaBean components, or some "
+"other non-component class. Use the appropriate method (either <literal>Seam."
+"Component.newInstance()</literal> for Seam components or <literal>Seam."
+"Remoting.createType()</literal> for everything else) to create a new "
+"instance of the object."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:180
+#, no-c-format
+msgid ""
+"It is important to note that only objects that are created by either of "
+"these two methods should be used as parameter values, where the parameter is "
+"not one of the other valid types mentioned anywhere else in this section. In "
+"some situations you may have a component method where the exact parameter "
+"type cannot be determined, such as:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:183
+#, no-c-format
+msgid ""
+"@Name(\"myAction\")\n"
+"  public class MyAction implements MyActionLocal {\n"
+"    public void doSomethingWithObject(Object obj) {\n"
+"      // code\n"
+"    }\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:184
+#, no-c-format
+msgid ""
+"In this case you might want to pass in an instance of your "
+"<literal>myWidget</literal> component, however the interface for "
+"<literal>myAction</literal> won't include <literal>myWidget</literal> as it "
+"is not directly referenced by any of its methods. To get around this, "
+"<literal>MyWidget</literal> needs to be explicitly imported:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:187
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?myAction&amp;myWidget\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:188
+#, no-c-format
+msgid ""
+"This will then allow a <literal>myWidget</literal> object to be created with "
+"<literal>Seam.Component.newInstance(\"myWidget\")</literal>, which can then "
+"be passed to <literal>myAction.doSomethingWithObject()</literal>."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:191
+#, no-c-format
+msgid "Dates and Times"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:192
+#, no-c-format
+msgid ""
+"Date values are serialized into a String representation that is accurate to "
+"the millisecond. On the client side, use a Javascript Date object to work "
+"with date values. On the server side, use any <literal>java.util.Date</"
+"literal> (or descendent, such as <literal>java.sql.Date</literal> or "
+"<literal>java.sql.Timestamp</literal> class."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:195
+#, no-c-format
+msgid "Enums"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:196
+#, no-c-format
+msgid ""
+"On the client side, enums are treated the same as Strings. When setting the "
+"value for an enum parameter, simply use the String representation of the "
+"enum. Take the following component as an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:199
+#, no-c-format
+msgid ""
+"@Name(\"paintAction\")\n"
+"  public class paintAction implements paintLocal {\n"
+"    public enum Color {red, green, blue, yellow, orange, purple};\n"
+"\n"
+"    public void paint(Color color) {\n"
+"      // code\n"
+"    }    \n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:200
+#, no-c-format
+msgid ""
+"To call the <literal>paint()</literal> method with the color <literal>red</"
+"literal>, pass the parameter value as a String literal:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:203
+#, no-c-format
+msgid "Seam.Component.getInstance(\"paintAction\").paint(\"red\");"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:204
+#, no-c-format
+msgid ""
+"The inverse is also true - that is, if a component method returns an enum "
+"parameter (or contains an enum field anywhere in the returned object graph) "
+"then on the client-side it will be represented as a String."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:207
+#, no-c-format
+msgid "Collections"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:208
+#, no-c-format
+msgid "Bags"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:209
+#, no-c-format
+msgid ""
+"Bags cover all collection types including arrays, collections, lists, sets, "
+"(but excluding Maps - see the next section for those), and are implemented "
+"client-side as a Javascript array. When calling a component method that "
+"accepts one of these types as a parameter, your parameter should be a "
+"Javascript array. If a component method returns one of these types, then the "
+"return value will also be a Javascript array. The remoting framework is "
+"clever enough on the server side to convert the bag to an appropriate type "
+"for the component method call."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:212
+#, no-c-format
+msgid "Maps"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:213
+#, no-c-format
+msgid ""
+"As there is no native support for Maps within Javascript, a simple Map "
+"implementation is provided with the Seam Remoting framework. To create a Map "
+"which can be used as a parameter to a remote call, create a new "
+"<literal>Seam.Remoting.Map</literal> object:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:216
+#, no-c-format
+msgid "var map = new Seam.Remoting.Map();"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:217
+#, no-c-format
+msgid ""
+"This Javascript implementation provides basic methods for working with Maps: "
+"<literal>size()</literal>, <literal>isEmpty()</literal>, <literal>keySet()</"
+"literal>, <literal>values()</literal>, <literal>get(key)</literal>, "
+"<literal>put(key, value)</literal>, <literal>remove(key)</literal> and "
+"<literal>contains(key)</literal>. Each of these methods are equivalent to "
+"their Java counterpart. Where the method returns a collection, such as "
+"<literal>keySet()</literal> and <literal>values()</literal>, a Javascript "
+"Array object will be returned that contains the key or value objects "
+"(respectively)."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:220
+#, no-c-format
+msgid "Debugging"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:221
+#, no-c-format
+msgid ""
+"To aid in tracking down bugs, it is possible to enable a debug mode which "
+"will display the contents of all the packets send back and forth between the "
+"client and server in a popup window. To enable debug mode, either execute "
+"the <literal>setDebug()</literal> method in Javascript:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:224
+#, no-c-format
+msgid "Seam.Remoting.setDebug(true);"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:225
+#, no-c-format
+msgid "Or configure it via components.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:228
+#, no-c-format
+msgid "&lt;remoting:remoting debug=\"true\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:229
+#, no-c-format
+msgid ""
+"To turn off debugging, call <literal>setDebug(false)</literal>. If you want "
+"to write your own messages to the debug log, call <literal>Seam.Remoting.log"
+"(message)</literal>."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:233
+#, no-c-format
+msgid "The Loading Message"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:234
+#, no-c-format
+msgid ""
+"The default loading message that appears in the top right corner of the "
+"screen can be modified, its rendering customised or even turned off "
+"completely."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:237
+#, no-c-format
+msgid "Changing the message"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:238
+#, no-c-format
+msgid ""
+"To change the message from the default \"Please Wait...\" to something "
+"different, set the value of <literal>Seam.Remoting.loadingMessage</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:241
+#, no-c-format
+msgid "Seam.Remoting.loadingMessage = \"Loading...\";"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:243
+#, no-c-format
+msgid "Hiding the loading message"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:244
+#, no-c-format
+msgid ""
+"To completely suppress the display of the loading message, override the "
+"implementation of <literal>displayLoadingMessage()</literal> and "
+"<literal>hideLoadingMessage()</literal> with functions that instead do "
+"nothing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:247
+#, no-c-format
+msgid ""
+"// don't display the loading indicator\n"
+"  Seam.Remoting.displayLoadingMessage = function() {};\n"
+"  Seam.Remoting.hideLoadingMessage = function() {};"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:248
+#, no-c-format
+msgid "A Custom Loading Indicator"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:249
+#, no-c-format
+msgid ""
+"It is also possible to override the loading indicator to display an animated "
+"icon, or anything else that you want. To do this override the "
+"<literal>displayLoadingMessage()</literal> and <literal>hideLoadingMessage()"
+"</literal> messages with your own implementation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:252
+#, no-c-format
+msgid ""
+"Seam.Remoting.displayLoadingMessage = function() {\n"
+"    // Write code here to display the indicator\n"
+"  };\n"
+"  \n"
+"  Seam.Remoting.hideLoadingMessage = function() {\n"
+"    // Write code here to hide the indicator\n"
+"  };"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:253
+#, no-c-format
+msgid "Controlling what data is returned"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:254
+#, no-c-format
+msgid ""
+"When a remote method is executed, the result is serialized into an XML "
+"response that is returned to the client. This response is then unmarshaled "
+"by the client into a Javascript object. For complex types (i.e. Javabeans) "
+"that include references to other objects, all of these referenced objects "
+"are also serialized as part of the response. These objects may reference "
+"other objects, which may reference other objects, and so forth. If left "
+"unchecked, this object \"graph\" could potentially be enormous, depending on "
+"what relationships exist between your objects. And as a side issue (besides "
+"the potential verbosity of the response), you might also wish to prevent "
+"sensitive information from being exposed to the client."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:257
+#, no-c-format
+msgid ""
+"Seam Remoting provides a simple means to \"constrain\" the object graph, by "
+"specifying the <literal>exclude</literal> field of the remote method's "
+"<literal>@WebRemote</literal> annotation. This field accepts a String array "
+"containing one or more paths specified using dot notation. When invoking a "
+"remote method, the objects in the result's object graph that match these "
+"paths are excluded from the serialized result packet."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:260
+#, no-c-format
+msgid ""
+"For all our examples, we'll use the following <literal>Widget</literal> "
+"class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:263
+#, no-c-format
+msgid ""
+"@Name(\"widget\")\n"
+"public class Widget\n"
+"{\n"
+"  private String value;\n"
+"  private String secret;\n"
+"  private Widget child;\n"
+"  private Map&lt;String,Widget&gt; widgetMap;\n"
+"  private List&lt;Widget&gt; widgetList;\n"
+"  \n"
+"  // getters and setters for all fields\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:264
+#, no-c-format
+msgid "Constraining normal fields"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:265
+#, no-c-format
+msgid ""
+"If your remote method returns an instance of <literal>Widget</literal>, but "
+"you don't want to expose the <literal>secret</literal> field because it "
+"contains sensitive information, you would constrain it like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:268
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:269
+#, no-c-format
+msgid ""
+"The value \"secret\" refers to the <literal>secret</literal> field of the "
+"returned object. Now, suppose that we don't care about exposing this "
+"particular field to the client. Instead, notice that the <literal>Widget</"
+"literal> value that is returned has a field <literal>child</literal> that is "
+"also a <literal>Widget</literal>. What if we want to hide the "
+"<literal>child</literal>'s <literal>secret</literal> value instead? We can "
+"do this by using dot notation to specify this field's path within the "
+"result's object graph:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:272
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"child.secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:273
+#, no-c-format
+msgid "Constraining Maps and Collections"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:274
+#, no-c-format
+msgid ""
+"The other place that objects can exist within an object graph are within a "
+"<literal>Map</literal> or some kind of collection (<literal>List</literal>, "
+"<literal>Set</literal>, <literal>Array</literal>, etc). Collections are "
+"easy, and are treated like any other field. For example, if our "
+"<literal>Widget</literal> contained a list of other <literal>Widget</"
+"literal>s in its <literal>widgetList</literal> field, to constrain the "
+"<literal>secret</literal> field of the <literal>Widget</literal>s in this "
+"list the annotation would look like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:277
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetList.secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:278
+#, no-c-format
+msgid ""
+"To constrain a <literal>Map</literal>'s key or value, the notation is "
+"slightly different. Appending <literal>[key]</literal> after the "
+"<literal>Map</literal>'s field name will constrain the <literal>Map</"
+"literal>'s key object values, while <literal>[value]</literal> will "
+"constrain the value object values. The following example demonstrates how "
+"the values of the <literal>widgetMap</literal> field have their "
+"<literal>secret</literal> field constrained:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:281
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetMap[value].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:282
+#, no-c-format
+msgid "Constraining objects of a specific type"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:283
+#, no-c-format
+msgid ""
+"There is one last notation that can be used to constrain the fields of a "
+"type of object no matter where in the result's object graph it appears. This "
+"notation uses either the name of the component (if the object is a Seam "
+"component) or the fully qualified class name (only if the object is not a "
+"Seam component) and is expressed using square brackets:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:286
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"[widget].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:287
+#, no-c-format
+msgid "Combining Constraints"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:288
+#, no-c-format
+msgid ""
+"Constraints can also be combined, to filter objects from multiple paths "
+"within the object graph:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:291
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetList.secret\", \"widgetMap[value].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:292
+#, no-c-format
+msgid "JMS Messaging"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:293
+#, no-c-format
+msgid ""
+"Seam Remoting provides experimental support for JMS Messaging. This section "
+"describes the JMS support that is currently implemented, but please note "
+"that this may change in the future. It is currently not recommended that "
+"this feature is used within a production environment."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:297
+#, no-c-format
+msgid ""
+"Before you can subscribe to a JMS topic, you must first configure a list of "
+"the topics that can be subscribed to by Seam Remoting. List the topics under "
+"<literal>org.jboss.seam.remoting.messaging.subscriptionRegistry."
+"allowedTopics</literal> in <literal>seam.properties</literal>, <literal>web."
+"xml</literal> or <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:300 Remoting.xml:333
+#, no-c-format
+msgid "&lt;remoting:remoting poll-timeout=\"5\" poll-interval=\"1\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:301
+#, no-c-format
+msgid "Subscribing to a JMS Topic"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:302
+#, no-c-format
+msgid "The following example demonstrates how to subscribe to a JMS Topic:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:305
+#, no-c-format
+msgid ""
+"function subscriptionCallback(message)\n"
+"  {\n"
+"    if (message instanceof Seam.Remoting.TextMessage)\n"
+"      alert(\"Received message: \" + message.getText());\n"
+"  }        \n"
+"        \n"
+"  Seam.Remoting.subscribe(\"topicName\", subscriptionCallback);"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:306
+#, no-c-format
+msgid ""
+"The <literal>Seam.Remoting.subscribe()</literal> method accepts two "
+"parameters, the first being the name of the JMS Topic to subscribe to, the "
+"second being the callback function to invoke when a message is received."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:309
+#, no-c-format
+msgid ""
+"There are two types of messages supported, Text messages and Object "
+"messages. If you need to test for the type of message that is passed to your "
+"callback function you can use the <literal>instanceof</literal> operator to "
+"test whether the message is a <literal>Seam.Remoting.TextMessage</literal> "
+"or <literal>Seam.Remoting.ObjectMessage</literal>. A <literal>TextMessage</"
+"literal> contains the text value in its <literal>text</literal> field (or "
+"alternatively call <literal>getText()</literal> on it), while an "
+"<literal>ObjectMessage</literal> contains its object value in its "
+"<literal>object</literal> field (or call its <literal>getObject()</literal> "
+"method)."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:312
+#, no-c-format
+msgid "Unsubscribing from a Topic"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:313
+#, no-c-format
+msgid ""
+"To unsubscribe from a topic, call <literal>Seam.Remoting.unsubscribe()</"
+"literal> and pass in the topic name:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:316
+#, no-c-format
+msgid "Seam.Remoting.unsubscribe(\"topicName\");"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:317
+#, no-c-format
+msgid "Tuning the Polling Process"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:318
+#, no-c-format
+msgid ""
+"There are two parameters which you can modify to control how polling occurs. "
+"The first one is <literal>Seam.Remoting.pollInterval</literal>, which "
+"controls how long to wait between subsequent polls for new messages. This "
+"parameter is expressed in seconds, and its default setting is 10."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:321
+#, no-c-format
+msgid ""
+"The second parameter is <literal>Seam.Remoting.pollTimeout</literal>, and is "
+"also expressed as seconds. It controls how long a request to the server "
+"should wait for a new message before timing out and sending an empty "
+"response. Its default is 0 seconds, which means that when the server is "
+"polled, if there are no messages ready for delivery then an empty response "
+"will be immediately returned."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:324
+#, no-c-format
+msgid ""
+"Caution should be used when setting a high <literal>pollTimeout</literal> "
+"value; each request that has to wait for a message means that a server "
+"thread is tied up until a message is received, or until the request times "
+"out. If many such requests are being served simultaneously, it could mean a "
+"large number of threads become tied up because of this reason."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:327
+#, no-c-format
+msgid ""
+"It is recommended that you set these options via components.xml, however "
+"they can be overridden via Javascript if desired. The following example "
+"demonstrates how to configure the polling to occur much more aggressively. "
+"You should set these parameters to suitable values for your application:"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:330
+#, no-c-format
+msgid "Via components.xml:"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:334
+#, no-c-format
+msgid "Via JavaScript:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:337
+#, no-c-format
+msgid ""
+"// Only wait 1 second between receiving a poll response and sending the next "
+"poll request.\n"
+"  Seam.Remoting.pollInterval = 1;\n"
+"  \n"
+"  // Wait up to 5 seconds on the server for new messages\n"
+"  Seam.Remoting.pollTimeout = 5;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Security.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Security.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Security.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1676 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Security.xml:10
+#, no-c-format
+msgid "Security"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:11
+#, no-c-format
+msgid ""
+"The Seam Security API is an optional Seam feature that provides "
+"authentication and authorization features for securing both domain and page "
+"resources within your Seam project."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:14
+#, no-c-format
+msgid "Overview"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:15
+#, no-c-format
+msgid "Seam Security provides two different modes of operation:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:20
+#, no-c-format
+msgid ""
+"<emphasis>simplified mode</emphasis> - this mode supports authentication "
+"services and simple role-based security checks."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:25
+#, no-c-format
+msgid ""
+"<emphasis>advanced mode</emphasis> - this mode supports all the same "
+"features as the simplified mode, plus it offers rule-based security checks "
+"using JBoss Rules."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:30
+#, no-c-format
+msgid "Which mode is right for my application?"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:31
+#, no-c-format
+msgid ""
+"That all depends on the requirements of your application. If you have "
+"minimal security requirements, for example if you only wish to restrict "
+"certain pages and actions to users who are logged in, or who belong to a "
+"certain role, then the simplified mode will probably be sufficient. The "
+"advantages of this is a more simplified configuration, significantly less "
+"libraries to include, and a smaller memory footprint."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:34
+#, no-c-format
+msgid ""
+"If on the other hand, your application requires security checks based on "
+"contextual state or complex business rules, then you will require the "
+"features provided by the advanced mode."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:37
+#, no-c-format
+msgid "Requirements"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:38
+#, no-c-format
+msgid ""
+"If using the advanced mode features of Seam Security, the following jar "
+"files are required to be configured as modules in <literal>application.xml</"
+"literal>. If you are using Seam Security in simplified mode, these are "
+"<emphasis>not</emphasis> required:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:43
+#, no-c-format
+msgid "drools-compiler-3.0.5.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:48
+#, no-c-format
+msgid "drools-core-3.0.5.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:53
+#, no-c-format
+msgid "commons-jci-core-1.0-406301.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:58
+#, no-c-format
+msgid "commons-jci-janino-2.4.3.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:63
+#, no-c-format
+msgid "commons-lang-2.1.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:68
+#, no-c-format
+msgid "janino-2.4.3.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:73
+#, no-c-format
+msgid "stringtemplate-2.3b6.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:78
+#, no-c-format
+msgid "antlr-2.7.6.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:83
+#, no-c-format
+msgid "antlr-3.0ea8.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:88
+#, no-c-format
+msgid ""
+"For web-based security, <literal>jboss-seam-ui.jar</literal> must also be "
+"included in the application's war file. Also, to make use of the security EL "
+"functions, <literal>SeamFaceletViewHandler</literal> must be used. Configure "
+"it in <literal>faces-config.xml</literal> like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:91
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;view-handler&gt;org.jboss.seam.ui.facelet.SeamFaceletViewHandler&lt;/"
+"view-handler&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:92
+#, no-c-format
+msgid "Authentication"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:93
+#, no-c-format
+msgid ""
+"The authentication features provided by Seam Security are built upon JAAS "
+"(Java Authentication and Authorization Service), and as such provide a "
+"robust and highly configurable API for handling user authentication. "
+"However, for less complex authentication requirements Seam offers a much "
+"more simplified method of authentication that hides the complexity of JAAS."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:96
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:97
+#, no-c-format
+msgid ""
+"The simplified authentication method uses a built-in JAAS login module, "
+"<literal>SeamLoginModule</literal>, which delegates authentication to one of "
+"your own Seam components. This login module is already configured inside "
+"Seam as part of a default application policy and as such does not require "
+"any additional configuration files. It allows you to write an authentication "
+"method using the entity classes that are provided by your own application. "
+"Configuring this simplified form of authentication requires the "
+"<literal>identity</literal> component to be configured in "
+"<literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:100
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:security=\"http://jboss.com/products/seam/security\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core http://jboss.com/"
+"products/seam/core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components http://jboss.com/"
+"products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/drools http://jboss.com/"
+"products/seam/drools-1.2.xsd\"\n"
+"                 http://jboss.com/products/seam/security http://jboss.com/"
+"products/seam/security-1.2.xsd\"&gt;                \n"
+"        \n"
+"    &lt;security:identity authenticate-method=\"#{authenticator.authenticate}"
+"\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:101
+#, no-c-format
+msgid ""
+"If you wish to use the advanced security features such as rule-based "
+"permission checks, all you need to do is include the Drools (JBoss Rules) "
+"jars in your classpath, and add some additional configuration, described "
+"later."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:104
+#, no-c-format
+msgid ""
+"The EL expression <literal>#{authenticator.authenticate}</literal> is a "
+"method binding indicating that the <literal>authenticate</literal> method of "
+"the <literal>authenticator</literal> component will be used to authenticate "
+"the user."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:107
+#, no-c-format
+msgid "Writing an authentication method"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:108
+#, no-c-format
+msgid ""
+"The <literal>authenticate-method</literal> property specified for "
+"<literal>identity</literal> in <literal>components.xml</literal> specifies "
+"which method will be used by <literal>SeamLoginModule</literal> to "
+"authenticate users. This method takes no parameters, and is expected to "
+"return a boolean indicating whether authentication is successful or not. The "
+"user's username and password can be obtained from <literal>Identity.instance"
+"().getUsername()</literal> and <literal>Identity.instance().getPassword()</"
+"literal>, respectively. Any roles that the user is a member of should be "
+"assigned using <literal>Identity.instance().addRole()</literal>. Here's a "
+"complete example of an authentication method inside a JavaBean component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:111
+#, no-c-format
+msgid ""
+"@Name(\"authenticator\")\n"
+"public class Authenticator {\n"
+"   @In EntityManager entityManager;\n"
+"   \n"
+"   public boolean authenticate() {\n"
+"      try\n"
+"      {\n"
+"         User user = (User) entityManager.createQuery(\n"
+"            \"from User where username = :username and password = :password"
+"\")\n"
+"            .setParameter(\"username\", Identity.instance().getUsername())\n"
+"            .setParameter(\"password\", Identity.instance().getPassword())\n"
+"            .getSingleResult();\n"
+"\n"
+"         if (user.getRoles() != null)\n"
+"         {\n"
+"            for (UserRole mr : user.getRoles())\n"
+"               Identity.instance().addRole(mr.getName());\n"
+"         }\n"
+"\n"
+"         return true;\n"
+"      }\n"
+"      catch (NoResultException ex)\n"
+"      {\n"
+"         FacesMessages.instance().add(\"Invalid username/password\");\n"
+"         return false;\n"
+"      }\n"
+"      \n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:112
+#, no-c-format
+msgid ""
+"In the above example, both <literal>User</literal> and <literal>UserRole</"
+"literal> are application-specific entity beans. The <literal>roles</literal> "
+"parameter is populated with the roles that the user is a member of, which "
+"should be added to the <literal>Set</literal> as literal string values, e.g. "
+"\"admin\", \"user\". In this case, if the user record is not found and a "
+"<literal>NoResultException</literal> thrown, the authentication method "
+"returns <literal>false</literal> to indicate the authentication failed."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:115
+#, no-c-format
+msgid "Writing a login form"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:116
+#, no-c-format
+msgid ""
+"The <literal>Identity</literal> component provides both <literal>username</"
+"literal> and <literal>password</literal> properties, catering for the most "
+"common authentication scenario. These properties can be bound directly to "
+"the username and password fields on a login form. Once these properties are "
+"set, calling the <literal>identity.login()</literal> method will "
+"authenticate the user using the provided credentials. Here's an example of a "
+"simple login form:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:119
+#, no-c-format
+msgid ""
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"name\" value=\"Username\"/&gt;\n"
+"    &lt;h:inputText id=\"name\" value=\"#{identity.username}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"password\" value=\"Password\"/&gt;\n"
+"    &lt;h:inputSecret id=\"password\" value=\"#{identity.password}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;div&gt;\n"
+"    &lt;h:commandButton value=\"Login\" action=\"#{identity.login}\"/&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:120
+#, no-c-format
+msgid ""
+"Similarly, logging out the user is done by calling <literal>#{identity."
+"logout}</literal>. Calling this action will clear the security state of the "
+"currently authenticated user."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:123
+#, no-c-format
+msgid "Simplified Configuration - Summary"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:124
+#, no-c-format
+msgid ""
+"So to sum up, there are the three easy steps to configure authentication:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:129
+#, no-c-format
+msgid ""
+"Configure an authentication method in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:134
+#, no-c-format
+msgid "Write an authentication method."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:139
+#, no-c-format
+msgid "Write a login form so that the user can authenticate."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:144
+#, no-c-format
+msgid "Handling Security Exceptions"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:145
+#, no-c-format
+msgid ""
+"To prevent users from receiving the default error page in response to a "
+"security error, it's recommended that <literal>pages.xml</literal> is "
+"configured to redirect security errors to a more \"pretty\" page. The two "
+"main types of exceptions thrown by the security API are:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:150
+#, no-c-format
+msgid ""
+"<literal>NotLoggedInException</literal> - This exception is thrown if the "
+"user attempts to access a restricted action or page when they are not logged "
+"in."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:155
+#, no-c-format
+msgid ""
+"<literal>AuthorizationException</literal> - This exception is only thrown if "
+"the user is already logged in, and they have attempted to access a "
+"restricted action or page for which they do not have the necessary "
+"privileges."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:160
+#, no-c-format
+msgid ""
+"In the case of a <literal>NotLoggedInException</literal>, it is recommended "
+"that the user is redirected to either a login or registration page so that "
+"they can log in. For an <literal>AuthorizationException</literal>, it may be "
+"useful to redirect the user to an error page. Here's an example of a "
+"<literal>pages.xml</literal> file that redirects both of these security "
+"exceptions:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:163
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"\n"
+"    ...\n"
+"    \n"
+"    &lt;exception class=\"org.jboss.seam.security.NotLoggedInException"
+"\"&gt;\n"
+"        &lt;redirect view-id=\"/login.xhtml\"&gt;\n"
+"            &lt;message&gt;You must be logged in to perform this action&lt;/"
+"message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"    \n"
+"    &lt;exception class=\"org.jboss.seam.security.AuthorizationException"
+"\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"        &lt;redirect view-id=\"/security_error.xhtml\"&gt;\n"
+"            &lt;message&gt;\n"
+"                You do not have the necessary security privileges to perform "
+"this action.\n"
+"            &lt;/message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"  \n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:164
+#, no-c-format
+msgid ""
+"Most web applications require even more sophisticated handling of login "
+"redirection, so Seam includes some special functionality for handling this "
+"problem."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:167
+#, no-c-format
+msgid "Login Redirection"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:168
+#, no-c-format
+msgid ""
+"You can ask Seam to redirect the user to a login screen when an "
+"unauthenticated user tries to access a particular view (or wildcarded view "
+"id) as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:171
+#, no-c-format
+msgid ""
+"&lt;pages login-view-id=\"/login.xhtml\"&gt;\n"
+"\n"
+"    &lt;page view-id=\"/members/*\" login-required=\"true\"/&gt;\n"
+"    \n"
+"    ...\n"
+"    \n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:172
+#, no-c-format
+msgid ""
+"(This is less of a blunt instrument than the exception handler shown above, "
+"but should probably be used in conjunction with it.)"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:175
+#, no-c-format
+msgid ""
+"After the user logs in, we want to automatically send them back where they "
+"came from, so they can retry the action that required logging in. If you add "
+"the following event listeners to <literal>components.xml</literal>, attempts "
+"to access a restricted view while not logged in will be remembered, so that "
+"upon the user successfully logging in they will be redirected to the "
+"originally requested view, with any page parameters that existed in the "
+"original request."
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:178
+#, no-c-format
+msgid ""
+"&lt;event type=\"org.jboss.seam.notLoggedIn\"&gt;\n"
+"    &lt;action expression=\"#{redirect.captureCurrentView}\"/&gt;\n"
+"&lt;/event&gt;\n"
+"    \n"
+"&lt;event type=\"org.jboss.seam.postAuthenticate\"&gt;\n"
+"    &lt;action expression=\"#{redirect.returnToCapturedView}\"/&gt;\n"
+"&lt;/event&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:179
+#, no-c-format
+msgid ""
+"Note that login redirection is implemented as a conversation-scoped "
+"mechanism, so don't end the conversation in your <literal>authenticate()</"
+"literal> method."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:182
+#, no-c-format
+msgid "Advanced Authentication Features"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:183
+#, no-c-format
+msgid ""
+"This section explores some of the advanced features provided by the security "
+"API for addressing more complex security requirements."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:186
+#, no-c-format
+msgid "Using your container's JAAS configuration"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:187
+#, no-c-format
+msgid ""
+"If you would rather not use the simplified JAAS configuration provided by "
+"the Seam Security API, you may instead delegate to the default system JAAS "
+"configuration by providing a <literal>jaasConfigName</literal> property in "
+"<literal>components.xml</literal>. For example, if you are using JBoss AS "
+"and wish to use the <literal>other</literal> policy (which uses the "
+"<literal>UsersRolesLoginModule</literal> login module provided by JBoss AS), "
+"then the entry in <literal>components.xml</literal> would look like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:190
+#, no-c-format
+msgid ""
+"&lt;security:identity authenticate-method=\"#{authenticator.authenticate}"
+"\" \n"
+"                      jaas-config-name=\"other\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:191
+#, no-c-format
+msgid "Authorization"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:192
+#, no-c-format
+msgid ""
+"There are a number of authorization features provided by the Seam Security "
+"API for securing access to components, component methods, and pages. This "
+"section describes each of these. An important thing to note is that if you "
+"wish to use any of the advanced features (such as rule-based permissions) "
+"then your <literal>components.xml</literal> must be configured to support "
+"this - see the Configuration section above."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:195
+#, no-c-format
+msgid "Core concepts"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:196
+#, no-c-format
+msgid ""
+"Each of the authorization mechanisms provided by the Seam Security API are "
+"built upon the concept of a user being granted roles and/or permissions. A "
+"role is a <emphasis>group</emphasis>, or <emphasis>type</emphasis>, of user "
+"that may have been granted certain privileges for performing one or more "
+"specific actions within an application. A permission on the other hand is a "
+"privilege (sometimes once-off) for performing a single, specific action. It "
+"is entirely possible to build an application using nothing but permissions, "
+"however roles offer a higher level of convenience when granting privileges "
+"to groups of users."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:199
+#, no-c-format
+msgid ""
+"Roles are simple, consisting of only a name such as \"admin\", \"user\", "
+"\"customer\", etc. Permissions consist of both a name and an action, and are "
+"represented within this documentation in the form <literal>name:action</"
+"literal>, for example <literal>customer:delete</literal>, or "
+"<literal>customer:insert</literal>."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:202
+#, no-c-format
+msgid "Securing components"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:203
+#, no-c-format
+msgid ""
+"Let's start by examining the simplest form of authorization, component "
+"security, starting with the <literal>@Restrict</literal> annotation."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:206
+#, no-c-format
+msgid "The @Restrict annotation"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:207
+#, no-c-format
+msgid ""
+"Seam components may be secured either at the method or the class level, "
+"using the <literal>@Restrict</literal> annotation. If both a method and it's "
+"declaring class are annotated with <literal>@Restrict</literal>, the method "
+"restriction will take precedence (and the class restriction will not apply). "
+"If a method invocation fails a security check, then an exception will be "
+"thrown as per the contract for <literal>Identity.checkRestriction()</"
+"literal> (see Inline Restrictions). A <literal>@Restrict</literal> on just "
+"the component class itself is equivalent to adding <literal>@Restrict</"
+"literal> to each of its methods."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:210
+#, no-c-format
+msgid ""
+"An empty <literal>@Restrict</literal> implies a permission check of "
+"<literal>componentName:methodName</literal>. Take for example the following "
+"component method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:213
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class AccountAction {\n"
+"    @Restrict public void delete() {\n"
+"      ...\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:214
+#, no-c-format
+msgid ""
+"In this example, the implied permission required to call the <literal>delete"
+"()</literal> method is <literal>account:delete</literal>. The equivalent of "
+"this would be to write <literal>@Restrict(\"#{s:hasPermission"
+"('account','delete',null)}\")</literal>. Now let's look at another example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:217
+#, no-c-format
+msgid ""
+"@Restrict @Name(\"account\")\n"
+"public class AccountAction {\n"
+"    public void insert() {\n"
+"      ...\n"
+"    }\n"
+"    @Restrict(\"#{s:hasRole('admin')}\") \n"
+"    public void delete() {\n"
+"      ...\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:218
+#, no-c-format
+msgid ""
+"This time, the component class itself is annotated with <literal>@Restrict</"
+"literal>. This means that any methods without an overriding "
+"<literal>@Restrict</literal> annotation require an implicit permission "
+"check. In the case of this example, the <literal>insert()</literal> method "
+"requires a permission of <literal>account:insert</literal>, while the "
+"<literal>delete()</literal> method requires that the user is a member of the "
+"<literal>admin</literal> role."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:221
+#, no-c-format
+msgid ""
+"Before we go any further, let's address the <literal>#{s:hasRole()}</"
+"literal> expression seen in the above example. Both <literal>s:hasRole</"
+"literal> and <literal>s:hasPermission</literal> are EL functions, which "
+"delegate to the correspondingly named methods of the <literal>Identity</"
+"literal> class. These functions can be used within any EL expression "
+"throughout the entirety of the security API."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:224
+#, no-c-format
+msgid ""
+"Being an EL expression, the value of the <literal>@Restrict</literal> "
+"annotation may reference any objects that exist within a Seam context. This "
+"is extremely useful when performing permission checks for a specific object "
+"instance. Look at this example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:227
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class AccountAction {\n"
+"    @In Account selectedAccount;\n"
+"    @Restrict(\"#{s:hasPermission('account','modify',selectedAccount)}\")\n"
+"    public void modify() {\n"
+"        selectedAccount.modify();\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:228
+#, no-c-format
+msgid ""
+"The interesting thing to note from this example is the reference to "
+"<literal>selectedAccount</literal> seen within the <literal>hasPermission()</"
+"literal> function call. The value of this variable will be looked up from "
+"within the Seam context, and passed to the <literal>hasPermission()</"
+"literal> method in <literal>Identity</literal>, which in this case can then "
+"determine if the user has the required permission for modifying the "
+"specified <literal>Account</literal> object."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:231
+#, no-c-format
+msgid "Inline restrictions"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:232
+#, no-c-format
+msgid ""
+"Sometimes it might be desirable to perform a security check in code, without "
+"using the <literal>@Restrict</literal> annotation. In this situation, simply "
+"use <literal>Identity.checkRestriction()</literal> to evaluate a security "
+"expression, like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:235
+#, no-c-format
+msgid ""
+"public void deleteCustomer() {\n"
+"    Identity.instance().checkRestriction(\"#{s:hasPermission"
+"('customer','delete',\n"
+"        selectedCustomer)}\");\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:236
+#, no-c-format
+msgid ""
+"If the expression specified doesn't evaluate to <literal>true</literal>, "
+"either"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:241
+#, no-c-format
+msgid ""
+"if the user is not logged in, a <literal>NotLoggedInException</literal> "
+"exception is thrown or"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:246
+#, no-c-format
+msgid ""
+"if the user is logged in, an <literal>AuthorizationException</literal> "
+"exception is thrown."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:251
+#, no-c-format
+msgid ""
+"It is also possible to call the <literal>hasRole()</literal> and "
+"<literal>hasPermission()</literal> methods directly from Java code:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:254
+#, no-c-format
+msgid ""
+"if (!Identity.instance().hasRole(\"admin\"))\n"
+"     throw new AuthorizationException(\"Must be admin to perform this action"
+"\");\n"
+"\n"
+"if (!Identity.instance().hasPermission(\"customer\", \"create\", null))\n"
+"     throw new AuthorizationException(\"You may not create new customers\");"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:255
+#, no-c-format
+msgid "Security in the user interface"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:256
+#, no-c-format
+msgid ""
+"One indication of a well designed user interface is that the user is not "
+"presented with options for which they don't have the necessary privileges to "
+"use. Seam Security allows conditional rendering of either 1) sections of a "
+"page or 2) individual controls, based upon the privileges of the user, using "
+"the very same EL expressions that are used for component security."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:259
+#, no-c-format
+msgid ""
+"Let's take a look at some examples of interface security. First of all, "
+"let's pretend that we have a login form that should only be rendered if the "
+"user is not already logged in. Using the <literal>identity.isLoggedIn()</"
+"literal> property, we can write this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:262
+#, no-c-format
+msgid ""
+"&lt;h:form class=\"loginForm\" rendered=\"#{not identity.loggedIn}\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:263
+#, no-c-format
+msgid ""
+"If the user isn't logged in, then the login form will be rendered - very "
+"straight forward so far. Now let's pretend there is a menu on the page that "
+"contains some actions which should only be accessible to users in the "
+"<literal>manager</literal> role. Here's one way that these could be written:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:266
+#, no-c-format
+msgid ""
+"&lt;h:outputLink action=\"#{reports.listManagerReports}\" rendered=\"#{s:"
+"hasRole('manager')}\"&gt;\n"
+"    Manager Reports\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:267
+#, no-c-format
+msgid ""
+"This is also quite straight forward. If the user is not a member of the "
+"<literal>manager</literal> role, then the outputLink will not be rendered. "
+"The <literal>rendered</literal> attribute can generally be used on the "
+"control itself, or on a surrounding <literal>&lt;s:div&gt;</literal> or "
+"<literal>&lt;s:span&gt;</literal> control."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:270
+#, no-c-format
+msgid ""
+"Now for something more complex. Let's say you have a <literal>h:dataTable</"
+"literal> control on a page listing records for which you may or may not wish "
+"to render action links depending on the user's privileges. The <literal>s:"
+"hasPermission</literal> EL function allows us to pass in an object parameter "
+"which can be used to determine whether the user has the requested permission "
+"for that object or not. Here's how a dataTable with secured links might look:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:273
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{clients}\" var=\"cl\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Name&lt;/f:facet&gt;\n"
+"        #{cl.name}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;City&lt;/f:facet&gt;\n"
+"        #{cl.city}\n"
+"    &lt;/h:column&gt;   \n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"        &lt;s:link value=\"Modify Client\" action=\"#{clientAction.modify}"
+"\"\n"
+"                rendered=\"#{s:hasPermission('client','modify',cl)\"/&gt;\n"
+"        &lt;s:link value=\"Delete Client\" action=\"#{clientAction.delete}"
+"\"\n"
+"                rendered=\"#{s:hasPermission('client','delete',cl)\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:274
+#, no-c-format
+msgid "Securing pages"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:275
+#, no-c-format
+msgid ""
+"Page security requires that the application is using a <literal>pages.xml</"
+"literal> file, however is extremely simple to configure. Simply include a "
+"<literal>&lt;restrict/&gt;</literal> element within the <literal>page</"
+"literal> elements that you wish to secure. By default, if a value is not "
+"provided for the <literal>restrict</literal> element, an implied permission "
+"of <literal>{viewId}:render</literal> will be checked for whenever accessing "
+"that page. Otherwise the value will be evaluated as a standard security "
+"expression. Here's a couple of examples:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:278
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/settings.xhtml\"&gt;\n"
+"    &lt;restrict/&gt;\n"
+"&lt;/page&gt;\n"
+"        \n"
+"&lt;page view-id=\"/reports.xhtml\"&gt;    \n"
+"    &lt;restrict&gt;#{s:hasRole('admin')}&lt;/restrict&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:279
+#, no-c-format
+msgid ""
+"In the above example, the first page has an implied permission restriction "
+"of <literal>/settings.xhtml:render</literal>, while the second one checks "
+"that the user is a member of the <literal>admin</literal> role."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:282
+#, no-c-format
+msgid "Securing Entities"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:283
+#, no-c-format
+msgid ""
+"Seam security also makes it possible to apply security restrictions to read, "
+"insert, update and delete actions for entities."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:286
+#, no-c-format
+msgid ""
+"To secure all actions for an entity class, add a <literal>@Restrict</"
+"literal> annotation on the class itself:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:289
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"customer\")\n"
+"@Restrict\n"
+"public class Customer {\n"
+"  ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:290
+#, no-c-format
+msgid ""
+"If no expression is specified in the <literal>@Restrict</literal> "
+"annotation, the default security check that is performed is a permission "
+"check of <literal>entityName:action</literal>, where <literal>entityName</"
+"literal> is the name of the entity (or the class name if no @Name is "
+"specified), and the <literal>action</literal> is either <literal>read</"
+"literal>, <literal>insert</literal>, <literal>update</literal> or "
+"<literal>delete</literal>."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:293
+#, no-c-format
+msgid ""
+"It is also possible to only restrict certain actions, by placing a "
+"<literal>@Restrict</literal> annotation on the relevent entity lifecycle "
+"method (annotated as follows):"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:298
+#, no-c-format
+msgid ""
+"<literal>@PostLoad</literal> - Called after an entity instance is loaded "
+"from the database. Use this method to configure a <literal>read</literal> "
+"permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:303
+#, no-c-format
+msgid ""
+"<literal>@PrePersist</literal> - Called before a new instance of the entity "
+"is inserted. Use this method to configure an <literal>insert</literal> "
+"permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:308
+#, no-c-format
+msgid ""
+"<literal>@PreUpdate</literal> - Called before an entity is updated. Use this "
+"method to configure an <literal>update</literal> permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:313
+#, no-c-format
+msgid ""
+"<literal>@PreRemove</literal> - Called before an entity is deleted. Use this "
+"method to configure a <literal>delete</literal> permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:318
+#, no-c-format
+msgid ""
+"Here's an example of how an entity would be configured to perform a security "
+"check for any <literal>insert</literal> operations. Please note that the "
+"method is not required to do anything, the only important thing in regard to "
+"security is how it is annotated:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:321
+#, no-c-format
+msgid ""
+"@PrePersist @Restrict\n"
+"  public void prePersist() {}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:322
+#, no-c-format
+msgid ""
+"And here's an example of an entity permission rule that checks if the "
+"authenticated user is allowed to create a new blog entry (from the seamspace "
+"example):"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:325
+#, no-c-format
+msgid ""
+"rule InsertMemberBlog\n"
+"  no-loop\n"
+"  activation-group \"permissions\"\n"
+"when\n"
+"  c: PermissionCheck(name == \"memberBlog\", action == \"insert\", granted "
+"== false)\n"
+"  Principal(nm : name)\n"
+"  MemberBlog(mbr : member -&gt; (mbr.getUsername().equals(nm)))\n"
+"then\n"
+"  c.grant();\n"
+"  modify(c);\n"
+"end;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:326
+#, no-c-format
+msgid ""
+"Finally, we need to install a listener class that integrates Seam security "
+"with your JPA provider."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:329
+#, no-c-format
+msgid "Entity security with JPA"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:330
+#, no-c-format
+msgid ""
+"Security checks for EJB3 entity beans are performed with an "
+"<literal>EntityListener</literal>. You can install this listener by using "
+"the following <literal>META-INF/orm.xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:333
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;entity-mappings xmlns=\"http://java.sun.com/xml/ns/persistence/orm\"\n"
+"                 xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"                 xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence/"
+"orm \n"
+"                 http://java.sun.com/xml/ns/persistence/orm_1_0.xsd\"\n"
+"                 version=\"1.0\"&gt;\n"
+"                 \n"
+"    &lt;persistence-unit-metadata&gt;\n"
+"        &lt;persistence-unit-defaults&gt;\n"
+"            &lt;entity-listeners&gt;\n"
+"                &lt;entity-listener class=\"org.jboss.seam.security."
+"EntitySecurityListener\"/&gt;\n"
+"            &lt;/entity-listeners&gt;\n"
+"        &lt;/persistence-unit-defaults&gt;\n"
+"    &lt;/persistence-unit-metadata&gt;\n"
+"    \n"
+"&lt;/entity-mappings&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:334
+#, no-c-format
+msgid "Entity security with Hibernate"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:335
+#, no-c-format
+msgid ""
+"If you are using a Hibernate <literal>SessionFactory</literal> configured "
+"via Seam, you don't need to do anything special to use entity security."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:338
+#, no-c-format
+msgid "Writing Security Rules"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:339
+#, no-c-format
+msgid ""
+"Up to this point there has been a lot of mention of permissions, but no "
+"information about how permissions are actually defined or granted. This "
+"section completes the picture, by explaining how permission checks are "
+"processed, and how to implement permission checks for a Seam application."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:342
+#, no-c-format
+msgid "Permissions Overview"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:343
+#, no-c-format
+msgid ""
+"So how does the security API know whether a user has the <literal>customer:"
+"modify</literal> permission for a specific customer? Seam Security provides "
+"quite a novel method for determining user permissions, based on JBoss Rules. "
+"A couple of the advantages of using a rule engine are 1) a centralized "
+"location for the business logic that is behind each user permission, and 2) "
+"speed - JBoss Rules uses very efficient algorithms for evaluating large "
+"numbers of complex rules involving multiple conditions."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:346
+#, no-c-format
+msgid "Configuring a rules file"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:347
+#, no-c-format
+msgid ""
+"Seam Security expects to find a <literal>RuleBase</literal> component called "
+"<literal>securityRules</literal> which it uses to evaluate permission "
+"checks. This is configured in <literal>components.xml</literal> as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:350
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:security=\"http://jboss.com/products/seam/security\"\n"
+"            xmlns:drools=\"http://jboss.com/products/seam/drools\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                     http://jboss.com/products/seam/core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components  \n"
+"                     http://jboss.com/products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/drools \n"
+"                     http://jboss.com/products/seam/drools-1.2.xsd\"\n"
+"                 http://jboss.com/products/seam/security \n"
+"                     http://jboss.com/products/seam/security-1.2.xsd"
+"\"&gt;                 \n"
+"        \n"
+"   &lt;drools:rule-base name=\"securityRules\"&gt;\n"
+"       &lt;drools:rule-files&gt;\n"
+"           &lt;value&gt;/META-INF/security.drl&lt;/value&gt;\n"
+"       &lt;/drools:rule-files&gt;\n"
+"   &lt;/drools:rule-base&gt;    \n"
+"   \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:351
+#, no-c-format
+msgid ""
+"Once the <literal>RuleBase</literal> component is configured, it's time to "
+"write the security rules."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:354
+#, no-c-format
+msgid "Creating a security rules file"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:355
+#, no-c-format
+msgid ""
+"For this step you need to create a file called <literal>security.drl</"
+"literal> in the <literal>/META-INF</literal> directory of your application's "
+"jar file. In actual fact this file can be called anything you want, and "
+"exist in any location as long as it is configured appropriately in "
+"<literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:358
+#, no-c-format
+msgid ""
+"So what should the security rules file contain? At this stage it might be a "
+"good idea to at least skim through the JBoss Rules documentation, however to "
+"get started here's an extremely simple example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:361
+#, no-c-format
+msgid ""
+"package MyApplicationPermissions;\n"
+"\n"
+"import org.jboss.seam.security.PermissionCheck;\n"
+"import org.jboss.seam.security.Role;\n"
+"\n"
+"rule CanUserDeleteCustomers\n"
+"when\n"
+"  c: PermissionCheck(name == \"customer\", action == \"delete\")\n"
+"  Role(name == \"admin\")\n"
+"then\n"
+"  c.grant();\n"
+"end;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:362
+#, no-c-format
+msgid ""
+"Let's break this down. The first thing we see is the package declaration. A "
+"package in JBoss Rules is essentially a collection of rules. The package "
+"name can be anything you want - it doesn't relate to anything else outside "
+"the scope of the rule base."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:365
+#, no-c-format
+msgid ""
+"The next thing we can notice is a couple of import statements for the "
+"<literal>PermissionCheck</literal> and <literal>Role</literal> classes. "
+"These imports inform the rules engine that we'll be referencing these "
+"classes within our rules."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:368
+#, no-c-format
+msgid ""
+"Finally we have the code for the rule. Each rule within a package should be "
+"given a unique name (usually describing the purpose of the rule). In this "
+"case our rule is called <literal>CanUserDeleteCustomers</literal> and will "
+"be used to check whether a user is allowed to delete a customer record."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:371
+#, no-c-format
+msgid ""
+"Looking at the body of the rule definition we can notice two distinct "
+"sections. Rules have what is known as a left hand side (LHS) and a right "
+"hand side (RHS). The LHS consists of the conditional part of the rule, i.e. "
+"a list of conditions which must be satisfied for the rule to fire. The LHS "
+"is represented by the <literal>when</literal> section. The RHS is the "
+"consequence, or action section of the rule that will only be fired if all of "
+"the conditions in the LHS are met. The RHS is represented by the "
+"<literal>then</literal> section. The end of the rule is denoted by the "
+"<literal>end;</literal> line."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:374
+#, no-c-format
+msgid ""
+"If we look at the LHS of the rule, we see two conditions listed there. Let's "
+"examine the first condition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:377
+#, no-c-format
+msgid "c: PermissionCheck(name == \"customer\", action == \"delete\")"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:378
+#, no-c-format
+msgid ""
+"In plain english, this condition is stating that there must exist a "
+"<literal>PermissionCheck</literal> object with a <literal>name</literal> "
+"property equal to \"customer\", and an <literal>action</literal> property "
+"equal to \"delete\" within the working memory. What is the working memory? "
+"It is a session-scoped object that contains the contextual information that "
+"is required by the rules engine to make a decision about a permission check. "
+"Each time the <literal>hasPermission()</literal> method is called, a "
+"temporary <literal>PermissionCheck</literal> object, or <emphasis>Fact</"
+"emphasis>, is asserted into the working memory. This "
+"<literal>PermissionCheck</literal> corresponds exactly to the permission "
+"that is being checked, so for example if you call <literal>hasPermission"
+"(\"account\", \"create\", null)</literal> then a <literal>PermissionCheck</"
+"literal> object with a <literal>name</literal> equal to \"account\" and "
+"<literal>action</literal> equal to \"create\" will be asserted into the "
+"working memory for the duration of the permission check."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:381
+#, no-c-format
+msgid ""
+"So what else is in the working memory? Besides the short-lived temporary "
+"facts asserted during a permission check, there are some longer-lived "
+"objects in the working memory that stay there for the entire duration of a "
+"user being authenticated. These include any <literal>java.security."
+"Principal</literal> objects that are created as part of the authentication "
+"process, plus a <literal>org.jboss.seam.security.Role</literal> object for "
+"each of the roles that the user is a member of. It is also possible to "
+"assert additional long-lived facts into the working memory by calling "
+"<literal>Identity.instance().getSecurityContext().assertObject()</literal>, "
+"passing the object as a parameter."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:384
+#, no-c-format
+msgid ""
+"Getting back to our simple example, we can also notice that the first line "
+"of our LHS is prefixed with <literal>c:</literal>. This is a variable "
+"binding, and is used to refer back to the object that is matched by the "
+"condition. Moving onto the second line of our LHS, we see this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:387
+#, no-c-format
+msgid "Role(name == \"admin\")"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:388
+#, no-c-format
+msgid ""
+"This condition simply states that there must be a <literal>Role</literal> "
+"object with a <literal>name</literal> of \"admin\" within the working "
+"memory. As mentioned, user roles are asserted into the working memory as "
+"long-lived facts. So, putting both conditions together, this rule is "
+"essentially saying \"I will fire if you are checking for the "
+"<literal>customer:delete</literal> permission and the user is a member of "
+"the <literal>admin</literal> role\"."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:391
+#, no-c-format
+msgid ""
+"So what is the consequence of the rule firing? Let's take a look at the RHS "
+"of the rule:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:394
+#, no-c-format
+msgid "c.grant()"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:395
+#, no-c-format
+msgid ""
+"The RHS consists of Java code, and in this case is invoking the "
+"<literal>grant()</literal> method of the <literal>c</literal> object, which "
+"as already mentioned is a variable binding for the <literal>PermissionCheck</"
+"literal> object. Besides the <literal>name</literal> and <literal>action</"
+"literal> properties of the <literal>PermissionCheck</literal> object, there "
+"is also a <literal>granted</literal> property which is initially set to "
+"<literal>false</literal>. Calling <literal>grant()</literal> on a "
+"<literal>PermissionCheck</literal> sets the <literal>granted</literal> "
+"property to <literal>true</literal>, which means that the permission check "
+"was successful, allowing the user to carry out whatever action the "
+"permission check was intended for."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:398
+#, no-c-format
+msgid "SSL Security"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:399
+#, no-c-format
+msgid ""
+"Seam includes basic support for serving sensitive pages via the HTTPS "
+"protocol. This is easily configured by specifying a <literal>scheme</"
+"literal> for the page in <literal>pages.xml</literal>. The following example "
+"shows how the view <literal>/login.xhtml</literal> is configured to use "
+"HTTPS:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:402
+#, no-c-format
+msgid "&lt;page view-id=\"/login.xhtml\" scheme=\"https\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:403
+#, no-c-format
+msgid ""
+"This configuration is automatically extended to both <literal>s:link</"
+"literal> and <literal>s:button</literal> JSF controls, which (when "
+"specifying the <literal>view</literal>) will also render the link using the "
+"correct protocol. Based on the previous example, the following link will use "
+"the HTTPS protocol because <literal>/login.xhtml</literal> is configured to "
+"use it:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:406
+#, no-c-format
+msgid "&lt;s:link view=\"/login.xhtml\" value=\"Login\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:407
+#, no-c-format
+msgid ""
+"Browsing directly to a view when using the <emphasis>incorrect</emphasis> "
+"protocol will cause a redirect to the same view using the <emphasis>correct</"
+"emphasis> protocol. For example, browsing to a page that has <literal>scheme="
+"\"https\"</literal> using HTTP will cause a redirect to the same page using "
+"HTTPS."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:410
+#, no-c-format
+msgid ""
+"It is also possible to configure a default <literal>scheme</literal> for all "
+"pages. This is actually quite important, as you might only wish to use HTTPS "
+"for a few pages, and if no default scheme is specified then the default "
+"behavior is to continue using the current scheme. What this means is that "
+"once you enter a page with HTTPS, then HTTPS will continue to be used even "
+"if you navigate away to other non-HTTPS pages (a bad thing!). So it is "
+"strongly recommended to include a default <literal>scheme</literal>, by "
+"configuring it on the default (<literal>\"*\"</literal>) view:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:413
+#, no-c-format
+msgid "&lt;page view-id=\"*\" scheme=\"http\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:414
+#, no-c-format
+msgid ""
+"Of course, if <emphasis>none</emphasis> of the pages in your application use "
+"HTTPS then it is not required to specify a default scheme."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:417
+#, no-c-format
+msgid "Implementing a Captcha Test"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:418
+#, no-c-format
+msgid ""
+"Though strictly not part of the security API, it might be useful in certain "
+"circumstances (such as new user registrations, posting to a public blog or "
+"forum) to implement a Captcha (<emphasis>C</emphasis>ompletely <emphasis>A</"
+"emphasis>utomated <emphasis>P</emphasis>ublic <emphasis>T</emphasis>uring "
+"test to tell <emphasis>C</emphasis>omputers and <emphasis>H</emphasis>umans "
+"<emphasis>A</emphasis>part) to prevent automated bots from interacting with "
+"your application. Seam provides seamless integration with JCaptcha, an "
+"excellent library for generating Captcha challenges. If you wish to use the "
+"captcha feature in your application you need to include the jcaptcha-* jar "
+"file from the Seam lib directory in your project, and register it in "
+"<literal>application.xml</literal> as a java module."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:421
+#, no-c-format
+msgid "Configuring the Captcha Servlet"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:422
+#, no-c-format
+msgid ""
+"To get up and running, it is necessary to configure the Seam Resource "
+"Servlet, which will provide the Captcha challenge images to your pages. This "
+"requires the following entry in <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:425
+#, no-c-format
+msgid ""
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"    \n"
+"&lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:426
+#, no-c-format
+msgid "Adding a Captcha to a page"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:427
+#, no-c-format
+msgid ""
+"Adding a captcha challenge to a page is extremely easy. Seam provides a page-"
+"scoped component, <literal>captcha</literal>, which provides everything that "
+"is required, including built-in captcha validation. Here's an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:430
+#, no-c-format
+msgid ""
+"&lt;div&gt;\n"
+"    &lt;h:graphicImage value=\"/seam/resource/captcha?#{captcha.id}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"  \n"
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"verifyCaptcha\"&gt;Enter the above letters&lt;/h:"
+"outputLabel&gt;\n"
+"    &lt;h:inputText id=\"verifyCaptcha\" value=\"#{captcha.response}\" "
+"required=\"true\"/&gt;\n"
+"    &lt;div class=\"validationError\"&gt;&lt;h:message for=\"verifyCaptcha\"/"
+"&gt;&lt;/div&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:431
+#, no-c-format
+msgid ""
+"That's all there is to it. The <literal>graphicImage</literal> control "
+"displays the Captcha challenge, and the <literal>inputText</literal> "
+"receives the user's response. The response is automatically validated "
+"against the Captcha when the form is submitted."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Spring.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Spring.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Spring.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,416 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Spring.xml:10
+#, no-c-format
+msgid "Spring Framework integration"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:11
+#, no-c-format
+msgid ""
+"The Spring integration module allows easy migration of Spring-based projects "
+"to Seam and allows Spring applications to take advantage of key Seam "
+"features like conversations and Seam's more sophisticated persistence "
+"context management."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:14
+#, no-c-format
+msgid "Seam's support for Spring provides the ability to:"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:19
+#, no-c-format
+msgid "inject Seam component instances into Spring beans"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:24
+#, no-c-format
+msgid "inject Spring beans into Seam components"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:29
+#, no-c-format
+msgid "turn Spring beans into Seam components"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:34
+#, no-c-format
+msgid "allow Spring beans to live in any Seam context"
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:40
+#, no-c-format
+msgid "Injecting Seam components into Spring beans"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:41
+#, no-c-format
+msgid ""
+"Injecting Seam component instances into Spring beans is accomplished using "
+"the <literal>&lt;seam:instance/&gt;</literal> namespace handler. To enable "
+"the Seam namespace handler, the Seam namespace must be added to the Spring "
+"beans definition file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:44
+#, no-c-format
+msgid ""
+"&lt;beans xmlns=\"http://www.springframework.org/schema/beans\"\n"
+"    xmlns:seam=\"http://jboss.com/products/seam/spring\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://www.springframework.org/schema/beans \n"
+"                        http://www.springframework.org/schema/beans/spring-"
+"beans-2.0.xsd\n"
+"                        http://jboss.com/products/seam/spring \n"
+"                        http://jboss.com/products/seam/spring-1.2.xsd\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:45
+#, no-c-format
+msgid "Now any Seam component may be injected into any Spring bean:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:48
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\"&gt;\n"
+"        &lt;seam:instance name=\"someComponent\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:49
+#, no-c-format
+msgid "An EL expression may be used instead of a component name:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:52
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\"&gt;\n"
+"        &lt;seam:instance name=\"#{someExpression}\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:53
+#, no-c-format
+msgid ""
+"Seam component instances may even be made available for injection into "
+"Spring beans by a Spring bean id."
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:56
+#, no-c-format
+msgid ""
+"&lt;seam:instance name=\"someComponent\" id=\"someSeamComponentInstance\"/"
+"&gt;\n"
+"\n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\" ref=\"someSeamComponentInstance"
+"\"&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:57
+#, no-c-format
+msgid "Now for the caveat!"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:60
+#, no-c-format
+msgid ""
+"Seam was designed from the ground up to support a stateful component model "
+"with multiple contexts. Spring was not. Unlike Seam bijection, Spring "
+"injection does not occur at method invocation time. Instead, injection "
+"happens only when the Spring bean is instantiated. So the instance available "
+"when the bean is instantiated will be the same instance that the bean uses "
+"for the entire life of the bean. For example, if a Seam "
+"<literal>CONVERSATION</literal>-scoped component instance is directly "
+"injected into a singleton Spring bean, that singleton will hold a reference "
+"to the same instance long after the conversation is over! We call this "
+"problem <emphasis>scope impedance</emphasis>. Seam bijection ensures that "
+"scope impedance is maintained naturally as an invocation flows through the "
+"system. In Spring, we need to inject a proxy of the Seam component, and "
+"resolve the reference when the proxy is invoked."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:63
+#, no-c-format
+msgid ""
+"The <literal>&lt;seam:instance/&gt;</literal> tag lets us automatically "
+"proxy the Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:66
+#, no-c-format
+msgid ""
+"&lt;seam:instance id=\"seamManagedEM\" name=\"someManagedEMComponent\" proxy="
+"\"true\"/&gt;\n"
+"        \n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\"&gt;\n"
+"    &lt;property name=\"entityManager\" ref=\"seamManagedEM\"&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:67
+#, no-c-format
+msgid ""
+"This example shows one way to use a Seam-managed persistence context from a "
+"Spring bean. (A more robust way to use Seam-managed persistence contexts as "
+"a replacement for the Spring <literal>OpenEntityManagerInView</literal> "
+"filter will be provided in a future release)"
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:73
+#, no-c-format
+msgid "Injecting Spring beans into Seam components"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:74
+#, no-c-format
+msgid ""
+"It is even easier to inject Spring beans into Seam component instances. "
+"Actually, there are two possible approaches:"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:79
+#, no-c-format
+msgid "inject a Spring bean using an EL expression"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:84
+#, no-c-format
+msgid "make the Spring bean a Seam component"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:89
+#, no-c-format
+msgid ""
+"We'll discuss the second option in the next section. The easiest approach is "
+"to access the Spring beans via EL."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:92
+#, no-c-format
+msgid ""
+"The Spring <literal>DelegatingVariableResolver</literal> is an integration "
+"point Spring provides for integrating Spring with JSF. This "
+"<literal>VariableResolver</literal> makes all Spring beans available in EL "
+"by their bean id. You'll need to add the "
+"<literal>DelegatingVariableResolver</literal> to <literal>faces-config.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:95
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;variable-resolver&gt;\n"
+"        org.springframework.web.jsf.DelegatingVariableResolver\n"
+"    &lt;/variable-resolver&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:96
+#, no-c-format
+msgid "Then you can inject Spring beans using <literal>@In</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:99
+#, no-c-format
+msgid ""
+"@In(\"#{bookingService}\")\n"
+"private BookingService bookingService;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:100
+#, no-c-format
+msgid ""
+"The use of Spring beans in EL is not limited to injection. Spring beans may "
+"be used anywhere that EL expressions are used in Seam: process and pageflow "
+"definitions, working memory assertions, etc..."
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:106
+#, no-c-format
+msgid "Making a Spring bean into a Seam component"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:107
+#, no-c-format
+msgid ""
+"The <literal>&lt;seam:component/&gt;</literal> namespace handler can be used "
+"to make any Spring bean a Seam component. Just place the <literal>&lt;seam:"
+"component/&gt;</literal> tag within the declaration of the bean that you "
+"wish to be a Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:110
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;seam:component/&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:111
+#, no-c-format
+msgid ""
+"By default, <literal>&lt;seam:component/&gt;</literal> will create a "
+"<literal>STATELESS</literal> Seam component with class and name provided in "
+"the bean definition. Occasionally, such as when a <literal>FactoryBean</"
+"literal> is used, the class of the Spring bean may not be the class "
+"appearing in the bean definition. In such cases the <literal>beanClass</"
+"literal> should be explicitly specified. A Seam component name may be "
+"explicitly specified in cases where there is potential for a naming conflict."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:114
+#, no-c-format
+msgid ""
+"The <literal>scope</literal> attribute of <literal>&lt;seam:component/&gt;</"
+"literal> may be used if you wish the Spring bean to be managed in a "
+"particular Seam scope. The Spring bean must be scoped to <literal>prototype</"
+"literal> if the Seam scope specified is anything other than "
+"<literal>STATELESS</literal>. Pre-existing Spring beans usually have a "
+"fundamentally stateless character, so this attribute is not usually needed."
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:120
+#, no-c-format
+msgid "Seam-scoped Spring beans"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:121
+#, no-c-format
+msgid ""
+"The Seam integration package also lets you use Seam's contexts as Spring 2.0 "
+"style custom scopes. This lets you declare any Spring bean in any of Seam's "
+"contexts. However, note once again that Spring's component model was never "
+"architected to support statefulness, so please use this feature with great "
+"care. In particular, clustering of session or conversation scoped Spring "
+"beans is deeply problematic, and care must be taken when injecting a bean or "
+"component from a wider scope into a bean of a narrower scope."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:124
+#, no-c-format
+msgid ""
+"By specifying <literal>&lt;seam:configure-scopes/&gt;</literal> once in a "
+"Spring bean factory configuration, all of the Seam scopes will be available "
+"to Spring beans as custom scopes. To associate a Spring bean with a "
+"particular Seam scope, specify the Seam scope in the <literal>scope</"
+"literal> attribute of the bean definition."
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:127
+#, no-c-format
+msgid ""
+"&lt;!-- Only needs to be specified once per bean factory--&gt;\n"
+"&lt;seam:configure-scopes/&gt;\n"
+"\n"
+"...\n"
+"\n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope=\"seam."
+"CONVERSATION\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:128
+#, no-c-format
+msgid ""
+"The prefix of the scope name may be changed by specifying the "
+"<literal>prefix</literal> attribute in the <literal>configure-scopes</"
+"literal> definition. (The default prefix is <literal>seam.</literal>)"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:131
+#, no-c-format
+msgid ""
+"Seam-scoped Spring beans defined this way can be injected into other Spring "
+"beans without the use of <literal>&lt;seam:instance/&gt;</literal>. However, "
+"care must be taken to ensure scope impedance is maintained. The normal "
+"approach used in Spring is to specify <literal>&lt;aop:scoped-proxy/&gt;</"
+"literal> in the bean definition. However, Seam-scoped Spring beans are "
+"<emphasis>not</emphasis> compatible with <literal>&lt;aop:scoped-proxy/&gt;</"
+"literal>. So if you need to inject a Seam-scoped Spring bean into a "
+"singleton, <literal>&lt;seam:instance/&gt;</literal> must be used:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:134
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope=\"seam."
+"CONVERSATION\"/&gt;\n"
+"\n"
+"...\n"
+"\n"
+"&lt;bean id=\"someSingleton\"&gt;\n"
+"    &lt;property name=\"someSeamScopedSpringBean\"&gt;\n"
+"        &lt;seam:instance name=\"someSpringBean\" proxy=\"true\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Testing.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Testing.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Testing.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,342 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Testing.xml:10
+#, no-c-format
+msgid "Testing Seam applications"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:11
+#, no-c-format
+msgid ""
+"Most Seam applications will need at least two kinds of automated tests: "
+"<emphasis>unit tests</emphasis>, which test a particular Seam component in "
+"isolation, and scripted <emphasis>integration tests</emphasis> which "
+"exercise all Java layers of the application (that is, everything except the "
+"view pages)."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:14
+#, no-c-format
+msgid "Both kinds of tests are very easy to write."
+msgstr ""
+
+#. Tag: title
+#: Testing.xml:18
+#, no-c-format
+msgid "Unit testing Seam components"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:19
+#, no-c-format
+msgid ""
+"All Seam components are POJOs. This is a great place to start if you want "
+"easy unit testing. And since Seam emphasises the use of bijection for inter-"
+"component interactions and access to contextual objects, it's very easy to "
+"test a Seam component outside of its normal runtime environment."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:22
+#, no-c-format
+msgid "Consider the following Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:25
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Scope(EVENT)\n"
+"@Name(\"register\")\n"
+"public class RegisterAction implements Register\n"
+"{\n"
+"   private User user;\n"
+"   private EntityManager em;\n"
+"\n"
+"   @In\n"
+"   public void setUser(User user) {\n"
+"       this.user = user;\n"
+"   }\n"
+"   \n"
+"   @PersistenceContext\n"
+"   public void setBookingDatabase(EntityManager em) {\n"
+"       this.em = em;\n"
+"   }\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = em.createQuery(\"select username from User where "
+"username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getResultList();\n"
+"      if (existing.size()==0)\n"
+"      {\n"
+"         em.persist(user);\n"
+"         return \"success\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:26
+#, no-c-format
+msgid "We could write a TestNG test for this component as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:29
+#, no-c-format
+msgid ""
+"public class RegisterActionTest\n"
+"{\n"
+"\n"
+"    @Test\n"
+"    public testRegisterAction()\n"
+"    {\n"
+"        EntityManager em = getEntityManagerFactory().createEntityManager();\n"
+"        em.getTransaction().begin();\n"
+"        \n"
+"        User gavin = new User();\n"
+"        gavin.setName(\"Gavin King\");\n"
+"        gavin.setUserName(\"1ovthafew\");\n"
+"        gavin.setPassword(\"secret\");\n"
+"        \n"
+"        RegisterAction action = new RegisterAction();\n"
+"        action.setUser(gavin);\n"
+"        action.setBookingDatabase(em);\n"
+"        \n"
+"        assert \"success\".equals( action.register() );\n"
+"        \n"
+"        em.getTransaction().commit();\n"
+"        em.close();\n"
+"    }\n"
+"    \n"
+"    \n"
+"    private EntityManagerFactory emf;\n"
+"    \n"
+"    public EntityManagerFactory getEntityManagerFactory()\n"
+"    {\n"
+"        return emf;\n"
+"    }\n"
+"    \n"
+"    @Configuration(beforeTestClass=true)\n"
+"    public void init() \n"
+"    {\n"
+"        emf = Persistence.createEntityManagerFactory"
+"(\"myResourceLocalEntityManager\");\n"
+"    }\n"
+"    \n"
+"    @Configuration(afterTestClass=true)\n"
+"    public void destroy()\n"
+"    {\n"
+"        emf.close();\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:30
+#, no-c-format
+msgid ""
+"Seam components don't usually depend directly upon container infrastructure, "
+"so most unit testing as as easy as that!"
+msgstr ""
+
+#. Tag: title
+#: Testing.xml:36
+#, no-c-format
+msgid "Integration testing Seam applications"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:37
+#, no-c-format
+msgid ""
+"Integration testing is slightly more difficult. In this case, we can't "
+"eliminate the container infrastructure; indeed, that is part of what is "
+"being tested! At the same time, we don't want to be forced to deploy our "
+"application to an application server to run the automated tests. We need to "
+"be able to reproduce just enough of the container infrastructure inside our "
+"testing environment to be able to exercise the whole application, without "
+"hurting performance too much."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:40
+#, no-c-format
+msgid ""
+"A second problem is emulating user interactions. A third problem is where to "
+"put our assertions. Some test frameworks let us test the whole application "
+"by reproducing user interactions with the web browser. These frameworks have "
+"their place, but they are not appropriate for use at development time."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:43
+#, no-c-format
+msgid ""
+"The approach taken by Seam is to let you write tests that script your "
+"components while running inside a pruned down container environment (Seam, "
+"together with the JBoss Embeddable EJB container). The role of the test "
+"script is basically to reproduce the interaction between the view and the "
+"Seam components. In other words, you get to pretend you are the JSF "
+"implementation!"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:46
+#, no-c-format
+msgid "This approach tests everything except the view."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:49
+#, no-c-format
+msgid "Let's consider a JSP view for the component we unit tested above:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:52
+#, no-c-format
+msgid ""
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Register New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;table border=\"0\"&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Username&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputText value=\"#{user.username}\"/&gt;&lt;/"
+"td&gt;\n"
+"       &lt;/tr&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Real Name&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputText value=\"#{user.name}\"/&gt;&lt;/td&gt;\n"
+"       &lt;/tr&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Password&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputSecret value=\"#{user.password}\"/&gt;&lt;/"
+"td&gt;\n"
+"       &lt;/tr&gt;\n"
+"     &lt;/table&gt;\n"
+"     &lt;h:messages/&gt;\n"
+"     &lt;h:commandButton type=\"submit\" value=\"Register\" action=\"#"
+"{register.register}\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:53
+#, no-c-format
+msgid ""
+"We want to test the registration functionality of our application (the stuff "
+"that happens when the user clicks the Register button). We'll reproduce the "
+"JSF request lifecycle in an automated TestNG test:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:56
+#, no-c-format
+msgid ""
+"public class RegisterTest extends SeamTest\n"
+"{\n"
+"   \n"
+"   @Test\n"
+"   public void testRegister() throws Exception\n"
+"   {\n"
+"            \n"
+"      new FacesRequest() {\n"
+"\n"
+"         @Override\n"
+"         protected void processValidations() throws Exception\n"
+"         {\n"
+"            validateValue(\"#{user.username}\", \"1ovthafew\");\n"
+"            validateValue(\"#{user.name}\", \"Gavin King\");\n"
+"            validateValue(\"#{user.password}\", \"secret\");\n"
+"            assert !isValidationFailure();\n"
+"         }\n"
+"         \n"
+"         @Override\n"
+"         protected void updateModelValues() throws Exception\n"
+"         {\n"
+"            setValue(\"#{user.username}\", \"1ovthafew\");\n"
+"            setValue(\"#{user.name}\", \"Gavin King\");\n"
+"            setValue(\"#{user.password}\", \"secret\");\n"
+"         }\n"
+"\n"
+"         @Override\n"
+"         protected void invokeApplication()\n"
+"         {\n"
+"            assert invokeMethod(\"#{register.register}\").equals(\"success"
+"\");\n"
+"         }\n"
+"\n"
+"         @Override\n"
+"         protected void renderResponse()\n"
+"         {\n"
+"            assert getValue(\"#{user.username}\").equals(\"1ovthafew\");\n"
+"            assert getValue(\"#{user.name}\").equals(\"Gavin King\");\n"
+"            assert getValue(\"#{user.password}\").equals(\"secret\");\n"
+"         }\n"
+"         \n"
+"      }.run();\n"
+"      \n"
+"   }\n"
+"\n"
+"   ...\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:57
+#, no-c-format
+msgid ""
+"Notice that we've extended <literal>SeamTest</literal>, which provides a "
+"Seam environment for our components, and written our test script as an "
+"anonymous class that extends <literal>SeamTest.FacesRequest</literal>, which "
+"provides an emulated JSF request lifecycle. (There is also a "
+"<literal>SeamTest.NonFacesRequest</literal> for testing GET requests.) We've "
+"written our code in methods which are named for the various JSF phases, to "
+"emulate the calls that JSF would make to our components. Then we've thrown "
+"in various assertions."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:60
+#, no-c-format
+msgid ""
+"You'll find plenty of integration tests for the Seam example applications "
+"which demonstrate more complex cases. There are instructions for running "
+"these tests using Ant, or using the TestNG plugin for eclipse:"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Text.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Text.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Text.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,362 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Text.xml:10
+#, no-c-format
+msgid "Seam Text"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:11
+#, no-c-format
+msgid ""
+"Collaboration-oriented websites require a human-friendly markup language for "
+"easy entry of formatted text in forum posts, wiki pages, blogs, comments, "
+"etc. Seam provides the <literal>&lt;s:formattedText/&gt;</literal> control "
+"for display of formatted text that conforms to the <emphasis>Seam Text</"
+"emphasis> language. Seam Text is implemented using an ANTLR-based parser. "
+"You don't need to know anything about ANTLR to use it, however."
+msgstr ""
+
+#. Tag: title
+#: Text.xml:15
+#, no-c-format
+msgid "Basic fomatting"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:16
+#, no-c-format
+msgid "Here is a simple example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:19
+#, no-c-format
+msgid ""
+"It's easy to make *bold text*, /italic text/, |monospace|, \n"
+"~deleted text~, super^scripts^ or _underlines_."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:20
+#, no-c-format
+msgid ""
+"If we display this using <literal>&lt;s:formattedText/&gt;</literal>, we "
+"will get the following HTML produced:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:23
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"It's easy to make &lt;b&gt;bold text&lt;/b&gt;, &lt;i&gt;italic text&lt;/"
+"i&gt;, &lt;tt&gt;monospace&lt;/tt&gt;\n"
+"&lt;del&gt;deleted text&lt;/del&gt;, super&lt;sup&gt;scripts&lt;/sup&gt; or "
+"&lt;u&gt;underlines&lt;/u&gt;.\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:24
+#, no-c-format
+msgid ""
+"We can use a blank line to indicate a new paragraph, and <literal>+</"
+"literal> to indicate a heading:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:27
+#, no-c-format
+msgid ""
+"+This is a big heading\n"
+"You /must/ have some text following a heading!\n"
+" \n"
+"++This is a smaller heading\n"
+"This is the first paragraph. We can split it across multiple \n"
+"lines, but we must end it with a blank line.\n"
+"\n"
+"This is the second paragraph."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:28
+#, no-c-format
+msgid ""
+"(Note that a simple newline is ignored, you need an additional blank line to "
+"wrap text into a new paragraph.) This is the HTML that results:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:31
+#, no-c-format
+msgid ""
+"&lt;h1&gt;This is a big heading&lt;/h1&gt;\n"
+"&lt;p&gt;\n"
+"You &lt;i&gt;must&lt;/i&gt; have some text following a heading!\n"
+"&lt;/p&gt;\n"
+" \n"
+"&lt;h2&gt;This is a smaller heading&lt;/h2&gt;\n"
+"&lt;p&gt;\n"
+"This is the first paragraph. We can split it across multiple \n"
+"lines, but we must end it with a blank line.\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"This is the second paragraph.\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:32
+#, no-c-format
+msgid ""
+"Ordered lists are created using the <literal>#</literal> character. "
+"Unordered lists use the <literal>=</literal> character:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:35
+#, no-c-format
+msgid ""
+"An ordered list:\n"
+"        \n"
+"#first item\n"
+"#second item\n"
+"#and even the /third/ item\n"
+"\n"
+"An unordered list:\n"
+"\n"
+"=an item\n"
+"=another item"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:36
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"An ordered list:\n"
+"&lt;/p&gt;\n"
+" \n"
+"&lt;ol&gt;       \n"
+"&lt;li&gt;first item&lt;/li&gt;\n"
+"&lt;li&gt;second item&lt;/li&gt;\n"
+"&lt;li&gt;and even the &lt;i&gt;third&lt;/i&gt; item&lt;/li&gt;\n"
+"&lt;/ol&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"An unordered list:\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;ul&gt;\n"
+"&lt;li&gt;an item&lt;/li&gt;\n"
+"&lt;li&gt;another item&lt;/li&gt;\n"
+"&lt;/ul&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:37
+#, no-c-format
+msgid "Quoted sections should be surrounded in double quotes:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:40
+#, no-c-format
+msgid ""
+"The other guy said:\n"
+"        \n"
+"\"Nyeah nyeah-nee \n"
+"/nyeah/ nyeah!\"\n"
+"\n"
+"But what do you think he means by \"nyeah-nee\"?"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:41
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"The other guy said:\n"
+"&lt;/p&gt;\n"
+"        \n"
+"&lt;q&gt;Nyeah nyeah-nee\n"
+"&lt;i&gt;nyeah&lt;/i&gt; nyeah!&lt;/q&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"But what do you think he means by &lt;q&gt;nyeah-nee&lt;/q&gt;?\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: title
+#: Text.xml:45
+#, no-c-format
+msgid "Entering code and text with special characters"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:46
+#, no-c-format
+msgid ""
+"Special characters such as <literal>*</literal>, <literal>|</literal> and "
+"<literal>#</literal>, along with HTML characters such as <literal>&lt;</"
+"literal>, <literal>&gt;</literal> and <literal>&amp;</literal> may be "
+"escaped using <literal>&#92;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:49
+#, no-c-format
+msgid ""
+"You can write down equations like 2&#92;*3&#92;=6 and HTML tags\n"
+"like &#92;&lt;body&#92;&gt; using the escape character: &#92;&#92;."
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:50
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"You can write down equations like 2*3=6 and HTML tags\n"
+"like &lt;body&gt; using the escape character: &#92;.\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:51
+#, no-c-format
+msgid "And we can quote code blocks using backticks:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:54
+#, no-c-format
+msgid ""
+"My code doesn't work:\n"
+"\n"
+"`for (int i=0; i&lt;100; i--)\n"
+"{\n"
+"    doSomething();\n"
+"}`\n"
+"\n"
+"Any ideas?"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:55
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"My code doesn't work:\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;pre&gt;for (int i=0; i&lt;100; i--)\n"
+"{\n"
+"    doSomething();\n"
+"}&lt;/pre&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"Any ideas?\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: title
+#: Text.xml:59
+#, no-c-format
+msgid "Links"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:60
+#, no-c-format
+msgid "A link may be created using the following syntax:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:63
+#, no-c-format
+msgid "Go to the Seam website at [=&gt;http://jboss.com/products/seam]."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:64
+#, no-c-format
+msgid "Or, if you want to specify the text of the link:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:67
+#, no-c-format
+msgid "Go to [the Seam website=&gt;http://jboss.com/products/seam]."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:68
+#, no-c-format
+msgid ""
+"For advanced users, it is even possible to customize the Seam Text parser to "
+"understand wikiword links written using this syntax."
+msgstr ""
+
+#. Tag: title
+#: Text.xml:74
+#, no-c-format
+msgid "Entering HTML"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:75
+#, no-c-format
+msgid ""
+"Text may even include a certain limited subset of HTML (don't worry, the "
+"subset is chosen to be safe from cross-site scripting attacks). This is "
+"useful for creating links:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:78
+#, no-c-format
+msgid ""
+"You might want to link to &lt;a href=\"http://jboss.com/products/seam\"&gt;"
+"something\n"
+"cool&lt;/a&gt;, or even include an image: &lt;img src=\"/logo.jpg\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:79
+#, no-c-format
+msgid "And for creating tables:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:82
+#, no-c-format
+msgid ""
+"&lt;table&gt;\n"
+"    &lt;tr&gt;&lt;td&gt;First name:&lt;/td&gt;&lt;td&gt;Gavin&lt;/td&gt;&lt;/"
+"tr&gt;\n"
+"    &lt;tr&gt;&lt;td&gt;Last name:&lt;/td&gt;&lt;td&gt;King&lt;/td&gt;&lt;/"
+"tr&gt;\n"
+"&lt;/table&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:83
+#, no-c-format
+msgid "But you can do much more if you want!"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Tools.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Tools.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Tools.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,769 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Tools.xml:10
+#, no-c-format
+msgid "Seam tools"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:12
+#, no-c-format
+msgid "jBPM designer and viewer"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:13
+#, no-c-format
+msgid ""
+"The jBPM designer and viewer will let you design and view in a nice way your "
+"business processes and your pageflows. This convenient tool is part of JBoss "
+"Eclipse IDE and more details can be found in the jBPM's documentation "
+"(http://docs.jboss.com/jbpm/v3/gpd/)"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:17
+#, no-c-format
+msgid "<title>Business process designer</title>"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:18
+#, no-c-format
+msgid "This tool lets you design your own business process in a graphical way."
+msgstr ""
+
+#. Tag: screeninfo
+#: Tools.xml:21 Tools.xml:37
+#, no-c-format
+msgid "<screeninfo>Business process designer</screeninfo>"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:33
+#, no-c-format
+msgid "Pageflow viewer"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:34
+#, no-c-format
+msgid ""
+"This tool let you design to some extend your pageflows and let you build "
+"graphical views of them so you can easily share and compare ideas on how it "
+"should be designed."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:51
+#, no-c-format
+msgid "CRUD-application generator"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:52
+#, no-c-format
+msgid ""
+"This chapter, will give you a short overview of the support for Seam that is "
+"available in the Hibernate Tools. Hibernate Tools is a set of tools for "
+"working with Hibernate and related technologies, such as JBoss Seam and "
+"EJB3. The tools are available as a set of eclipse plugins and Ant tasks. You "
+"can download the Hibernate Tools from the JBoss Eclipse IDE or Hibernate "
+"Tools websites."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:55
+#, no-c-format
+msgid ""
+"The specific support for Seam that is currently available is generation of a "
+"fully functional Seam based CRUD-application. The CRUD-application can be "
+"generated based on your existing Hibernate mapping files or EJB3 annotated "
+"POJO's or even fully reverse engineered from your existing database schema."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:58
+#, no-c-format
+msgid ""
+"The following sections is focused on the features required to understand for "
+"usage with Seam. The content is derived from the the Hibernate Tools "
+"reference documentation. Thus if you need more detailed information please "
+"refer to the Hibernate Tools documentation."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:62
+#, no-c-format
+msgid "Creating a Hibernate configuration file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:63
+#, no-c-format
+msgid ""
+"To be able to reverse engineer and generate code a hibernate.properties or "
+"hibernate.cfg.xml file is needed. The Hibernate Tools provide a wizard for "
+"generating the hibernate.cfg.xml file if you do not already have such file."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:66
+#, no-c-format
+msgid ""
+"Start the wizard by clicking \"New Wizard\" (Ctrl+N), select the Hibernate/"
+"Hibernate Configuration file (cfg.xml) wizard and press \"Next\". After "
+"selecting the wanted location for the hibernate.cfg.xml file, you will see "
+"the following page:"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:77
+#, no-c-format
+msgid ""
+"Tip: The contents in the combo boxes for the JDBC driver class and JDBC URL "
+"change automatically, depending on the Dialect and actual driver you have "
+"chosen."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:80
+#, no-c-format
+msgid ""
+"Enter your configuration information in this dialog. Details about the "
+"configuration options can be found in Hibernate reference documentation."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:83
+#, no-c-format
+msgid ""
+"Press \"Finish\" to create the configuration file, after optionally creating "
+"a Console onfiguration, the hibernate.cfg.xml will be automatically opened "
+"in an editor. The last option \"Create Console Configuration\" is enabled by "
+"default and when enabled i will automatically use the hibernate.cfg.xml for "
+"the basis of a \"Console Configuration\""
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:89
+#, no-c-format
+msgid "<title>Creating a Hibernate Console configuration</title>"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:90
+#, no-c-format
+msgid ""
+"A Console Configuration describes to the Hibernate plugin which "
+"configuration files should be used to configure hibernate, including which "
+"classpath is needed to load the POJO's, JDBC drivers etc. It is required to "
+"make usage of query prototyping, reverse engineering and code generation. "
+"You can have multiple named console configurations. Normally you would just "
+"need one per project, but more (or less) is definitly possible."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:93
+#, no-c-format
+msgid ""
+"You create a console configuration by running the Console Configuration "
+"wizard, shown in the following screenshot. The same wizard will also be used "
+"if you are coming from the hibernate.cfg.xml wizard and had enabled \"Create "
+"Console Configuration\"."
+msgstr ""
+
+#. Tag: caption
+#: Tools.xml:103
+#, no-c-format
+msgid "<caption>Creating a Hibernate Console configuration</caption>"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:105
+#, no-c-format
+msgid ""
+"The following table describes the relevant settings. The wizard can "
+"automatically detect default values for most of these if you started the "
+"Wizard with the relevant java project selected"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:109
+#, no-c-format
+msgid "Hibernate Console Configuration Parameters"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:117
+#, no-c-format
+msgid "Parameter"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:122 Tools.xml:308 Tools.xml:458
+#, no-c-format
+msgid "Description"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:127
+#, no-c-format
+msgid "Auto detected value"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:136
+#, no-c-format
+msgid "Name"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:141
+#, no-c-format
+msgid "The unique name of the configuration"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:146
+#, no-c-format
+msgid "Name of the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:153
+#, no-c-format
+msgid "Property file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:158
+#, no-c-format
+msgid "Path to a hibernate.properties file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:163
+#, no-c-format
+msgid "First hibernate.properties file found in the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:170
+#, no-c-format
+msgid "Configuration file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:175
+#, no-c-format
+msgid "Path to a hibernate.cfg.xml file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:180
+#, no-c-format
+msgid "First hibernate.cfg.xml file found in the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:187
+#, no-c-format
+msgid "Enable Hibernate ejb3/annotations"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:192
+#, no-c-format
+msgid ""
+"Selecting this option enables usage of annotated classes. hbm.xml files are "
+"of course still possible to use too. This feature requires running the "
+"Eclipse IDE with a JDK 5 runtime, otherwise you will get classloading and/or "
+"version errors."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:197
+#, no-c-format
+msgid "Not enabled"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:204
+#, no-c-format
+msgid "Mapping files"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:209
+#, no-c-format
+msgid ""
+"List of additional mapping files that should be loaded. Note: A hibernate."
+"cfg.xml can also contain mappings. Thus if these a duplicated here, you will "
+"get \"Duplicate mapping\" errors when using the console configuration."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:214
+#, no-c-format
+msgid ""
+"If no hibernate.cfg.xml file is found, all hbm.xml files found in the "
+"selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:221
+#, no-c-format
+msgid "Classpath"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:226
+#, no-c-format
+msgid ""
+"The classpath for loading POJO and JDBC drivers. Do not add Hibernate core "
+"libraries or dependencies, they are already included. If you get "
+"ClassNotFound errors then check this list for possible missing or redundant "
+"directories/jars."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:231
+#, no-c-format
+msgid ""
+"The default build output directory and any JARs with a class implementing "
+"java.sql.Driver in the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:239
+#, no-c-format
+msgid ""
+"Clicking \"Finish\" creates the configuration and shows it in the "
+"\"Hibernate Configurations\" view"
+msgstr ""
+
+#. Tag: caption
+#: Tools.xml:249
+#, no-c-format
+msgid "Console overview"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:254
+#, no-c-format
+msgid "Reverse engineering and code generation"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:255
+#, no-c-format
+msgid ""
+"A very simple \"click-and-generate\" reverse engineering and code generation "
+"facility is available. It is this facility that allows you to generate the "
+"skeleton for a full Seam CRUD application."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:258
+#, no-c-format
+msgid ""
+"To start working with this process, start the \"Hibernate Code Generation\" "
+"which is available in the toolbar via the Hibernate icon or via the \"Run/"
+"Hibernate Code Generation\" menu item."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:262
+#, no-c-format
+msgid "Code Generation Launcher"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:263
+#, no-c-format
+msgid ""
+"When you click on \"Hibernate Code Generation\" the standard Eclipse "
+"launcher dialog will appear. In this dialog you can create, edit and delete "
+"named Hibernate code generation \"launchers\"."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:274
+#, no-c-format
+msgid ""
+"The dialog has the standard tabs \"Refresh\" and \"Common\" that can be used "
+"to configure which directories should be automatically refreshed and various "
+"general settings launchers, such as saving them in a project for sharing the "
+"launcher within a team."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:285
+#, no-c-format
+msgid ""
+"The first time you create a code generation launcher you should give it a "
+"meaningfull name, otherwise the default prefix \"New_Generation\" will be "
+"used."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:288
+#, no-c-format
+msgid ""
+"Note: The \"At least one exporter option must be selected\" is just a "
+"warning stating that for this launch to work you need to select an exporter "
+"on the Exporter tab. When an exporter has been selected the warning will "
+"disappear."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:291
+#, no-c-format
+msgid "On the \"Main\" tab you the following fields:"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:295
+#, no-c-format
+msgid "Code generation \"Main\" tab fields"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:303 Tools.xml:453
+#, no-c-format
+msgid "Field"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:317
+#, no-c-format
+msgid "Console Configuration"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:322
+#, no-c-format
+msgid ""
+"The name of the console configuration which should be used when code "
+"generating."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:329
+#, no-c-format
+msgid "Output directory"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:334
+#, no-c-format
+msgid ""
+"Path to a directory into where all output will be written by default. Be "
+"aware that existing files will be overwritten, so be sure to specify the "
+"correct directory."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:341
+#, no-c-format
+msgid "Reverse engineer from JDBC Connection"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:346
+#, no-c-format
+msgid ""
+"If enabled the tools will reverse engineer the database available via the "
+"connection information in the selected Hibernate Console Configuration and "
+"generate code based on the database schema. If not enabled the code "
+"generation will just be based on the mappings already specified in the "
+"Hibernate Console configuration."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:353
+#, no-c-format
+msgid "Package"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:358
+#, no-c-format
+msgid ""
+"The package name here is used as the default package name for any entities "
+"found when reverse engineering."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:365
+#, no-c-format
+msgid "reveng.xml"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:370
+#, no-c-format
+msgid ""
+"Path to a reveng.xml file. A reveng.xml file allows you to control certain "
+"aspects of the reverse engineering. e.g. how jdbc types are mapped to "
+"hibernate types and especially important which tables are included/excluded "
+"from the process. Clicking \"setup\" allows you to select an existing reveng."
+"xml file or create a new one.."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:377
+#, no-c-format
+msgid "reveng. strategy"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:382
+#, no-c-format
+msgid ""
+"If reveng.xml does not provide enough customization you can provide your own "
+"implementation of an ReverseEngineeringStrategy. The class need to be in the "
+"claspath of the Console Configuration, otherwise you will get class not "
+"found exceptions."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:389
+#, no-c-format
+msgid "Generate basic typed composite ids"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:394
+#, no-c-format
+msgid ""
+"This field should always be enabled when generating the Seam CRUD "
+"application. A table that has a multi-colum primary key a &lt;composite-"
+"id&gt; mapping will always be created. If this option is enabled and there "
+"are matching foreign-keys each key column is still considered a 'basic' "
+"scalar (string, long, etc.) instead of a reference to an entity. If you "
+"disable this option a &lt;key-many-to-one&gt; instead. Note: a &lt;many-to-"
+"one&gt; property is still created, but is simply marked as non-updatable and "
+"non-insertable."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:401
+#, no-c-format
+msgid "Use custom templates"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:406
+#, no-c-format
+msgid ""
+"If enabled, the Template directory will be searched first when looking up "
+"the velocity templates, allowing you to redefine how the individual "
+"templates process the hibernate mapping model."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:413
+#, no-c-format
+msgid "Template directory"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:418
+#, no-c-format
+msgid "A path to a directory with custom velocity templates."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:429
+#, no-c-format
+msgid "Exporters"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:430
+#, no-c-format
+msgid ""
+"The exporters tab is used to specify which type of code that should be "
+"generated. Each selection represents an \"Exporter\" that are responsible "
+"for generating the code, hence the name."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:441
+#, no-c-format
+msgid ""
+"The following table describes in short the various exporters. The most "
+"relevant for Seam is of course the \"JBoss Seam Skeleton app\"."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:445
+#, no-c-format
+msgid "Code generation \"Exporter\" tab fields"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:467
+#, no-c-format
+msgid "Generate domain code"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:472
+#, no-c-format
+msgid ""
+"Generates POJO's for all the persistent classes and components found in the "
+"given Hibernate configuration."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:479
+#, no-c-format
+msgid "JDK 1.5 constructs"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:484
+#, no-c-format
+msgid "When enabled the POJO's will use JDK 1.5 constructs."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:491
+#, no-c-format
+msgid "EJB3/JSR-220 annotations"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:496
+#, no-c-format
+msgid ""
+"When enabled the POJO's will be annotated according to the EJB3/JSR-220 "
+"persistency specification."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:503
+#, no-c-format
+msgid "Generate DAO code"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:508
+#, no-c-format
+msgid "Generates a set of DAO's for each entity found."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:515
+#, no-c-format
+msgid "Generate Mappings"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:520
+#, no-c-format
+msgid "Generate mapping (hbm.xml) files for each entity"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:527
+#, no-c-format
+msgid "Generate hibernate configuration file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:532
+#, no-c-format
+msgid ""
+"Generate a hibernate.cfg.xml file. Used to keep the hibernate.cfg.xml "
+"uptodate with any new found mapping files."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:539
+#, no-c-format
+msgid "Generate schema html-documentation"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:544
+#, no-c-format
+msgid ""
+"Generates set of html pages that documents the database schema and some of "
+"the mappings."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:551
+#, no-c-format
+msgid "Generate JBoss Seam skeleton app (beta)"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:556
+#, no-c-format
+msgid ""
+"Generates a complete JBoss Seam skeleton app. The generation will include "
+"annotated POJO's, Seam controller beans and a JSP for the presentation "
+"layer. See the generated readme.txt for how to use it."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:559
+#, no-c-format
+msgid ""
+"Note: this exporter generates a full application, including a build.xml thus "
+"you will get the best results if you use an output directory which is the "
+"root of your project."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:570
+#, no-c-format
+msgid "Generating and using the code"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:571
+#, no-c-format
+msgid ""
+"When you have finished filling out the settings, simply press \"Run\" to "
+"start the generation of code. This might take a little while if you are "
+"reverse engineering from a database."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:574
+#, no-c-format
+msgid ""
+"When the generation have finished you should now have a complete skeleton "
+"Seam application in the output directory. In the output directory there is a "
+"<literal>readme.txt</literal> file describing the steps needed to deploy and "
+"run the example."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:577
+#, no-c-format
+msgid ""
+"If you want to regenerate/update the skeleton code then simply run the code "
+"generation again by selecting the \"Hibernate Code Generation\" in the "
+"toolbar or \"Run\" menu. Enjoy."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Tutorial.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Tutorial.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Tutorial.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,4041 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Tutorial.xml:10
+#, no-c-format
+msgid "Seam Tutorial"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:12
+#, no-c-format
+msgid "Try the examples"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:13
+#, no-c-format
+msgid ""
+"In this tutorial, we'll assume that you have downloaded JBoss AS 4.0.5 and "
+"installed the EJB 3.0 profile (using the JBoss AS installer). You should "
+"also have a copy of Seam downloaded and extracted to a work directory."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:16
+#, no-c-format
+msgid "The directory structure of each example in Seam follows this pattern:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:21
+#, no-c-format
+msgid ""
+"Web pages, images and stylesheets may be found in <filename>examples/"
+"<replaceable>registration</replaceable>/view</filename>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:26
+#, no-c-format
+msgid ""
+"Resources such as deployment descriptors and data import scripts may be "
+"found in <filename>examples/<replaceable>registration</replaceable>/"
+"resources</filename>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:31
+#, no-c-format
+msgid ""
+"Java source code may be found in <filename>examples/"
+"<replaceable>registration</replaceable>/src</filename>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:36
+#, no-c-format
+msgid ""
+"The Ant build script is <filename>examples/<replaceable>registration</"
+"replaceable>/build.xml</filename>"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:42
+#, no-c-format
+msgid "Running the examples on JBoss AS"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:43
+#, no-c-format
+msgid ""
+"First, make sure you have Ant correctly installed, with <literal>&#36;"
+"ANT_HOME</literal> and <literal>&#36;JAVA_HOME</literal> set correctly. "
+"Next, make sure you set the location of your JBoss AS 4.0.5 installation in "
+"the <literal>build.properties</literal> file in the root folder of your Seam "
+"installation. If you haven't already done so, start JBoss AS now by typing "
+"<literal>bin/run.sh</literal> or <literal>bin/run.bat</literal> in the root "
+"directory of your JBoss installation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:46
+#, no-c-format
+msgid ""
+"By default the examples will deploy to the default configuration of the "
+"server. If the server has been started using an a configuration other than "
+"default then the example <literal>build.xml</literal> file should be "
+"modified to reflect this before building and deploying. Two lines should be "
+"changed in this file:"
+msgstr ""
+
+#. Tag: screen
+#: Tutorial.xml:49
+#, no-c-format
+msgid ""
+"&lt;property name=\"deploy.dir\"           value=\"${jboss.home}/server/"
+"default/deploy\"/&gt;"
+msgstr ""
+
+#. Tag: screen
+#: Tutorial.xml:50
+#, no-c-format
+msgid ""
+"&lt;property name=\"webroot.dir\"         \n"
+"        value=\"${deploy.dir}/jboss-web.deployer/ROOT.war\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:51
+#, no-c-format
+msgid ""
+"Now, build and deploy the example by typing <literal>ant deploy</literal> in "
+"the <filename>examples/<replaceable>registration</replaceable></filename> "
+"directory."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:54
+#, no-c-format
+msgid ""
+"Try it out by accessing <ulink url=\"http://localhost:8080/seam-registration/"
+"\"><literal>http://localhost:8080/seam-registration/</literal></ulink> with "
+"your web browser."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:60
+#, no-c-format
+msgid "Running the examples on Tomcat"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:61
+#, no-c-format
+msgid ""
+"First, make sure you have Ant correctly installed, with <literal>&#36;"
+"ANT_HOME</literal> and <literal>&#36;JAVA_HOME</literal> set correctly. "
+"Next, make sure you set the location of your Tomcat 5.5 installation in the "
+"<literal>build.properties</literal> file in the root folder of your Seam "
+"installation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:64
+#, no-c-format
+msgid ""
+"Now, build and deploy the example by typing <literal>ant deploy.tomcat</"
+"literal> in the <filename>examples/<replaceable>registration</replaceable></"
+"filename> directory."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:67
+#, no-c-format
+msgid "Finally, start Tomcat."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:70
+#, no-c-format
+msgid ""
+"Try it out by accessing <ulink url=\"http://localhost:8080/jboss-seam-"
+"registration/\"><literal>http://localhost:8080/jboss-seam-registration/</"
+"literal></ulink> with your web browser."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:73
+#, no-c-format
+msgid ""
+"When you deploy the example to Tomcat, any EJB3 components will run inside "
+"the JBoss Embeddable EJB3 container, a complete standalone EJB3 container "
+"environment."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:79
+#, no-c-format
+msgid "Running the example tests"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:80
+#, no-c-format
+msgid ""
+"Most of the examples come with a suite of TestNG integration tests. The "
+"easiest way to run the tests is to run <literal>ant testexample</literal> "
+"inside the <filename>examples/<replaceable>registration</replaceable></"
+"filename> directory. It is also possible to run the tests inside your IDE "
+"using the TestNG plugin."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:88
+#, no-c-format
+msgid "Your first Seam application: the registration example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:89
+#, no-c-format
+msgid ""
+"The registration example is a fairly trivial application that lets a new "
+"user store his username, real name and password in the database. The example "
+"isn't intended to show off all of the cool functionality of Seam. However, "
+"it demonstrates the use of an EJB3 session bean as a JSF action listener, "
+"and basic configuration of Seam."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:92
+#, no-c-format
+msgid ""
+"We'll go slowly, since we realize you might not yet be familiar with EJB 3.0."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:95
+#, no-c-format
+msgid ""
+"The start page displays a very basic form with three input fields. Try "
+"filling them in and then submitting the form. This will save a user object "
+"in the database."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:107 Tutorial.xml:424 Tutorial.xml:563 Tutorial.xml:723
+#, no-c-format
+msgid "Understanding the code"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:108
+#, no-c-format
+msgid ""
+"The example is implemented with two JSP pages, one entity bean and one "
+"stateless session bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:119
+#, no-c-format
+msgid "Let's take a look at the code, starting from the \"bottom\"."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:123
+#, no-c-format
+msgid "The entity bean: <literal>User.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:124
+#, no-c-format
+msgid ""
+"We need an EJB entity bean for user data. This class defines "
+"<emphasis>persistence</emphasis> and <emphasis>validation</emphasis> "
+"declaratively, via annotations. It also needs some extra annotations that "
+"define the class as a Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:140
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"user\")\n"
+"@Scope(SESSION)\n"
+"@Table(name=\"users\")\n"
+"public class User implements Serializable\n"
+"{\n"
+"   private static final long serialVersionUID = 1881413500711441951L;\n"
+"   \n"
+"   private String username;\n"
+"   private String password;\n"
+"   private String name;\n"
+"   \n"
+"   public User(String name, String password, String username)\n"
+"   {\n"
+"      this.name = name;\n"
+"      this.password = password;\n"
+"      this.username = username;\n"
+"   }\n"
+"   \n"
+"   public User() {}\n"
+"   \n"
+"   @NotNull @Length(min=5, max=15)\n"
+"   public String getPassword()\n"
+"   {\n"
+"      return password;\n"
+"   }\n"
+"\n"
+"   public void setPassword(String password)\n"
+"   {\n"
+"      this.password = password;\n"
+"   }\n"
+"   \n"
+"   @NotNull\n"
+"   public String getName()\n"
+"   {\n"
+"      return name;\n"
+"   }\n"
+"\n"
+"   public void setName(String name)\n"
+"   {\n"
+"      this.name = name;\n"
+"   }\n"
+"   \n"
+"   @Id @NotNull @Length(min=5, max=15)\n"
+"   public String getUsername()\n"
+"   {\n"
+"      return username;\n"
+"   }\n"
+"\n"
+"   public void setUsername(String username)\n"
+"   {\n"
+"      this.username = username;\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:143
+#, no-c-format
+msgid ""
+"The EJB3 standard <literal>@Entity</literal> annotation indicates that the "
+"<literal>User</literal> class is an entity bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:148
+#, no-c-format
+msgid ""
+"A Seam component needs a <emphasis>component name</emphasis> specified by "
+"the <link linkend=\"name-annotation\"><literal>@Name</literal></link> "
+"annotation. This name must be unique within the Seam application. When JSF "
+"asks Seam to resolve a context variable with a name that is the same as a "
+"Seam component name, and the context variable is currently undefined (null), "
+"Seam will instantiate that component, and bind the new instance to the "
+"context variable. In this case, Seam will instantiate a <literal>User</"
+"literal> the first time JSF encounters a variable named <literal>user</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:153
+#, no-c-format
+msgid ""
+"Whenever Seam instantiates a component, it binds the new instance to a "
+"context variable in the component's <emphasis>default context</emphasis>. "
+"The default context is specified using the <link linkend=\"scope-annotation"
+"\"><literal>@Scope</literal></link> annotation. The <literal>User</literal> "
+"bean is a session scoped component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:158
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Table</literal> annotation indicates that the "
+"<literal>User</literal> class is mapped to the <literal>users</literal> "
+"table."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:163
+#, no-c-format
+msgid ""
+"<literal>name</literal>, <literal>password</literal> and <literal>username</"
+"literal> are the persistent attributes of the entity bean. All of our "
+"persistent attributes define accessor methods. These are needed when this "
+"component is used by JSF in the render response and update model values "
+"phases."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:168
+#, no-c-format
+msgid ""
+"An empty constructor is both required by both the EJB specification and by "
+"Seam."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:173
+#, no-c-format
+msgid ""
+"The <literal>@NotNull</literal> and <literal>@Length</literal> annotations "
+"are part of the Hibernate Validator framework. Seam integrates Hibernate "
+"Validator and lets you use it for data validation (even if you are not using "
+"Hibernate for persistence)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:178
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Id</literal> annotation indicates the primary key "
+"attribute of the entity bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:185
+#, no-c-format
+msgid ""
+"The most important things to notice in this example are the <literal>@Name</"
+"literal> and <literal>@Scope</literal> annotations. These annotations "
+"establish that this class is a Seam component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:188
+#, no-c-format
+msgid ""
+"We'll see below that the properties of our <literal>User</literal> class are "
+"bound to directly to JSF components and are populated by JSF during the "
+"update model values phase. We don't need any tedious glue code to copy data "
+"back and forth between the JSP pages and the entity bean domain model."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:191
+#, no-c-format
+msgid ""
+"However, entity beans shouldn't do transaction management or database "
+"access. So we can't use this component as a JSF action listener. For that we "
+"need a session bean."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:198
+#, no-c-format
+msgid ""
+"The stateless session bean class: <literal>RegisterAction.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:199
+#, no-c-format
+msgid ""
+"Most Seam application use session beans as JSF action listeners (you can use "
+"JavaBeans instead if you like)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:202
+#, no-c-format
+msgid ""
+"We have exactly one JSF action in our application, and one session bean "
+"method attached to it. In this case, we'll use a stateless session bean, "
+"since all the state associated with our action is held by the <literal>User</"
+"literal> bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:205
+#, no-c-format
+msgid "This is the only really interesting code in the example!"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:222
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"register\")\n"
+"public class RegisterAction implements Register\n"
+"{\n"
+"\n"
+"   @In\n"
+"   private User user;\n"
+"   \n"
+"   @PersistenceContext\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @Logger\n"
+"   private Log log;\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = em.createQuery(\n"
+"         \"select username from User where username=#{user.username}\")\n"
+"         .getResultList();\n"
+"         \n"
+"      if (existing.size()==0)\n"
+"      {\n"
+"         em.persist(user);\n"
+"         log.info(\"Registered new user #{user.username}\");\n"
+"         return \"/registered.jsp\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         FacesMessages.instance().add(\"User #{user.username} already exists"
+"\");\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:225
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Stateless</literal> annotation marks this class "
+"as stateless session bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:230
+#, no-c-format
+msgid ""
+"The <link linkend=\"in-annotation\"><literal>@In</literal></link> annotation "
+"marks an attribute of the bean as injected by Seam. In this case, the "
+"attribute is injected from a context variable named <literal>user</literal> "
+"(the instance variable name)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:235
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@PersistenceContext</literal> annotation is used "
+"to inject the EJB3 entity manager."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:240
+#, no-c-format
+msgid ""
+"The Seam <literal>@Logger</literal> annotation is used to inject the "
+"component's <literal>Log</literal> instance."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:245
+#, no-c-format
+msgid ""
+"The action listener method uses the standard EJB3 <literal>EntityManager</"
+"literal> API to interact with the database, and returns the JSF outcome. "
+"Note that, since this is a sesson bean, a transaction is automatically begun "
+"when the <literal>register()</literal> method is called, and committed when "
+"it completes."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:250
+#, no-c-format
+msgid ""
+"Notice that Seam lets you use a JSF EL expression inside EJB-QL. Under the "
+"covers, this results in an ordinary JPA <literal>setParameter()</literal> "
+"call on the standard JPA <literal>Query</literal> object. Nice, huh?"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:255
+#, no-c-format
+msgid ""
+"The <literal>Log</literal> API lets us easily display templated log messages."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:260
+#, no-c-format
+msgid ""
+"JSF action listener methods return a string-valued outcome that determines "
+"what page will be displayed next. A null outcome (or a void action listener "
+"method) redisplays the previous page. In plain JSF, it is normal to always "
+"use a JSF <emphasis>navigation rule</emphasis> to determine the JSF view id "
+"from the outcome. For complex application this indirection is useful and a "
+"good practice. However, for very simple examples like this one, Seam lets "
+"you use the JSF view id as the outcome, eliminating the requirement for a "
+"navigation rule. <emphasis>Note that when you use a view id as an outcome, "
+"Seam always performs a browser redirect.</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:265
+#, no-c-format
+msgid ""
+"Seam provides a number of <emphasis>built-in components</emphasis> to help "
+"solve common problems. The <literal>FacesMessages</literal> component makes "
+"it easy to display templated error or success messages. Built-in Seam "
+"components may be obtained by injection, or by calling an <literal>instance()"
+"</literal> method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:272
+#, no-c-format
+msgid ""
+"Note that we did not explicitly specify a <literal>@Scope</literal> this "
+"time. Each Seam component type has a default scope if not explicitly "
+"specified. For stateless session beans, the default scope is the stateless "
+"context. Actually, <emphasis>all</emphasis> stateless session beans belong "
+"in the stateless context."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:275
+#, no-c-format
+msgid ""
+"Our session bean action listener performs the business and persistence logic "
+"for our mini-application. In more complex applications, we might need to "
+"layer the code and refactor persistence logic into a dedicated data access "
+"component. That's perfectly trivial to do. But notice that Seam does not "
+"force you into any particular strategy for application layering."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:278
+#, no-c-format
+msgid ""
+"Furthermore, notice that our session bean has simultaneous access to context "
+"associated with the web request (the form values in the <literal>User</"
+"literal> object, for example), and state held in transactional resources "
+"(the <literal>EntityManager</literal> object). This is a break from "
+"traditional J2EE architectures. Again, if you are more comfortable with the "
+"traditional J2EE layering, you can certainly implement that in a Seam "
+"application. But for many applications, it's simply not very useful."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:285
+#, no-c-format
+msgid "The session bean local interface: <literal>Register.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:286
+#, no-c-format
+msgid "Naturally, our session bean needs a local interface."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:291
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface Register\n"
+"{\n"
+"   public String register();\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:292
+#, no-c-format
+msgid "That's the end of the Java code. Now onto the deployment descriptors."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:298
+#, no-c-format
+msgid ""
+"The Seam component deployment descriptor: <literal>components.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:299
+#, no-c-format
+msgid ""
+"If you've used many Java frameworks before, you'll be used to having to "
+"declate all your component classes in some kind of XML file that gradually "
+"grows more and more unmanageable as your project matures. You'll be relieved "
+"to know that Seam does not require that application components be "
+"accompanied by XML. Most Seam applications require a very small amount of "
+"XML that does not grow very much as the project gets bigger."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:302
+#, no-c-format
+msgid ""
+"Nevertheless, it is often useful to be able to provide for <emphasis>some</"
+"emphasis> external configuration of <emphasis>some</emphasis> components "
+"(particularly the components built in to Seam). You have a couple of options "
+"here, but the most flexible option is to provide this configuration in a "
+"file called <literal>components.xml</literal>, located in the <literal>WEB-"
+"INF</literal> directory. We'll use the <literal>components.xml</literal> "
+"file to tell Seam how to find our EJB components in JNDI:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:305
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"&gt;\n"
+"     &lt;core:init jndi-pattern=\"@jndiPattern@\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:306
+#, no-c-format
+msgid ""
+"This code configures a property named <literal>jndiPattern</literal> of a "
+"built-in Seam component named <literal>org.jboss.seam.core.init</literal>."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:312
+#, no-c-format
+msgid "The web deployment description: <literal>web.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:313
+#, no-c-format
+msgid ""
+"The presentation layer for our mini-application will be deployed in a WAR. "
+"So we'll need a web deployment descriptor."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:316
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;web-app version=\"2.5\"\n"
+"    xmlns=\"http://java.sun.com/xml/ns/javaee\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n"
+"        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\"&gt;\n"
+"\n"
+"    &lt;!-- Seam --&gt;\n"
+"\n"
+"    &lt;listener&gt;\n"
+"        &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/"
+"listener-class&gt;\n"
+"    &lt;/listener&gt;\n"
+"\n"
+"    &lt;!-- MyFaces --&gt;\n"
+"\n"
+"    &lt;listener&gt;\n"
+"        &lt;listener-class&gt;\n"
+"            org.apache.myfaces.webapp.StartupServletContextListener\n"
+"        &lt;/listener-class&gt;\n"
+"    &lt;/listener&gt;\n"
+"\n"
+"    &lt;context-param&gt;\n"
+"        &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-"
+"name&gt;\n"
+"        &lt;param-value&gt;client&lt;/param-value&gt;\n"
+"    &lt;/context-param&gt;\n"
+"\n"
+"    &lt;servlet&gt;\n"
+"        &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;\n"
+"        &lt;servlet-class&gt;javax.faces.webapp.FacesServlet&lt;/servlet-"
+"class&gt;\n"
+"        &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;\n"
+"    &lt;/servlet&gt;\n"
+"\n"
+"    &lt;!-- Faces Servlet Mapping --&gt;\n"
+"    &lt;servlet-mapping&gt;\n"
+"        &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;\n"
+"        &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;\n"
+"    &lt;/servlet-mapping&gt;\n"
+"\n"
+"&lt;/web-app&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:317
+#, no-c-format
+msgid ""
+"This <literal>web.xml</literal> file configures Seam and MyFaces. The "
+"configuration you see here is pretty much identical in all Seam applications."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:323
+#, no-c-format
+msgid "The JSF configration: <literal>faces-config.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:324
+#, no-c-format
+msgid ""
+"All Seam applications use JSF views as the presentation layer. So we'll need "
+"<literal>faces-config.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:327
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;!DOCTYPE faces-config \n"
+"PUBLIC \"-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN\"\n"
+"                            \"http://java.sun.com/dtd/web-facesconfig_1_0.dtd"
+"\"&gt;\n"
+"&lt;faces-config&gt;\n"
+"\n"
+"    &lt;!-- A phase listener is needed by all Seam applications --&gt;\n"
+"    \n"
+"    &lt;lifecycle&gt;\n"
+"        &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-"
+"listener&gt;\n"
+"    &lt;/lifecycle&gt;\n"
+"\n"
+"&lt;/faces-config&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:328
+#, no-c-format
+msgid ""
+"The <literal>faces-config.xml</literal> file integrates Seam into JSF. Note "
+"that we don't need any JSF managed bean declarations! The managed beans are "
+"the Seam components. In Seam applications, the <literal>faces-config.xml</"
+"literal> is used much less often than in plain JSF."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:331
+#, no-c-format
+msgid ""
+"In fact, once you have all the basic descriptors set up, the <emphasis>only</"
+"emphasis> XML you need to write as you add new functionality to a Seam "
+"application is the navigation rules, and possibly jBPM process definitions. "
+"Seam takes the view that <emphasis>process flow</emphasis> and "
+"<emphasis>configuration data</emphasis> are the only things that truly "
+"belong in XML."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:334
+#, no-c-format
+msgid ""
+"In this simple example, we don't even need a navigation rule, since we "
+"decided to embed the view id in our action code."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:340
+#, no-c-format
+msgid "The EJB deployment descriptor: <literal>ejb-jar.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:341
+#, no-c-format
+msgid ""
+"The <literal>ejb-jar.xml</literal> file integrates Seam with EJB3, by "
+"attaching the <literal>SeamInterceptor</literal> to all session beans in the "
+"archive."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:344
+#, no-c-format
+msgid ""
+"&lt;ejb-jar xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \n"
+"         xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n"
+"         http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd\"\n"
+"         version=\"3.0\"&gt;\n"
+"         \n"
+"   &lt;interceptors&gt;\n"
+"     &lt;interceptor&gt;\n"
+"       &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"     &lt;/interceptor&gt;\n"
+"   &lt;/interceptors&gt;\n"
+"   \n"
+"   &lt;assembly-descriptor&gt;\n"
+"      &lt;interceptor-binding&gt;\n"
+"         &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"         &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"      &lt;/interceptor-binding&gt;\n"
+"   &lt;/assembly-descriptor&gt;\n"
+"   \n"
+"&lt;/ejb-jar&gt;"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:348
+#, no-c-format
+msgid ""
+"The EJB persistence deployment descriptor: <literal>persistence.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:349
+#, no-c-format
+msgid ""
+"The <literal>persistence.xml</literal> file tells the EJB persistence "
+"provider where to find the datasource, and contains some vendor-specific "
+"settings. In this case, enables automatic schema export at startup time."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:352
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;persistence xmlns=\"http://java.sun.com/xml/ns/persistence\" \n"
+"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence \n"
+"             http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd\" \n"
+"             version=\"1.0\"&gt;\n"
+"    &lt;persistence-unit name=\"userDatabase\"&gt;\n"
+"      &lt;provider&gt;org.hibernate.ejb.HibernatePersistence&lt;/"
+"provider&gt;\n"
+"      &lt;jta-data-source&gt;java:/DefaultDS&lt;/jta-data-source&gt;\n"
+"      &lt;properties&gt;\n"
+"         &lt;property name=\"hibernate.hbm2ddl.auto\" value=\"create-drop\"/"
+"&gt;\n"
+"      &lt;/properties&gt;\n"
+"    &lt;/persistence-unit&gt;\n"
+"&lt;/persistence&gt;"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:356
+#, no-c-format
+msgid ""
+"The view: <literal>register.jsp</literal> and <literal>registered.jsp</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:357
+#, no-c-format
+msgid ""
+"The view pages for a Seam application could be implemented using any "
+"technology that supports JSF. In this example we use JSP, since it is "
+"familiar to most developers and since we have minimal requirements here "
+"anyway. (But if you take our advice, you'll use Facelets for your own "
+"applications.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:360
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://jboss.com/products/seam/taglib\" prefix=\"s\" "
+"&#37;&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Register New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;table border=\"0\"&gt;\n"
+"       &lt;s:validateAll&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Username&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputText value=\"#{user.username}\"/&gt;&lt;/"
+"td&gt;\n"
+"         &lt;/tr&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Real Name&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputText value=\"#{user.name}\"/&gt;&lt;/td&gt;\n"
+"         &lt;/tr&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Password&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputSecret value=\"#{user.password}\"/&gt;&lt;/"
+"td&gt;\n"
+"         &lt;/tr&gt;\n"
+"       &lt;/s:validateAll&gt;\n"
+"     &lt;/table&gt;\n"
+"     &lt;h:messages/&gt;\n"
+"     &lt;h:commandButton type=\"submit\" value=\"Register\" action=\"#"
+"{register.register}\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:361
+#, no-c-format
+msgid ""
+"The only thing here that is specific to Seam is the <literal>&lt;s:"
+"validateAll&gt;</literal> tag. This JSF component tells JSF to validate all "
+"the contained input fields against the Hibernate Validator annotations "
+"specified on the entity bean."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:364
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Successfully Registered New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"    Welcome, &lt;h:outputText value=\"#{user.name}\"/&gt;, \n"
+"    you are successfully registered as &lt;h:outputText value=\"#{user."
+"username}\"/&gt;.\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:365
+#, no-c-format
+msgid ""
+"This is a boring old JSP pages using standard JSF components. There is "
+"nothing specific to Seam here."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:371
+#, no-c-format
+msgid "The EAR deployment descriptor: <literal>application.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:372
+#, no-c-format
+msgid ""
+"Finally, since our application is deployed as an EAR, we need a deployment "
+"descriptor there, too."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:375
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;application xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee \n"
+"             http://java.sun.com/xml/ns/javaee/application_5.xsd\"\n"
+"             version=\"5\"&gt;\n"
+"             \n"
+"    &lt;display-name&gt;Seam Registration&lt;/display-name&gt;\n"
+"\n"
+"    &lt;module&gt;\n"
+"        &lt;web&gt;\n"
+"            &lt;web-uri&gt;jboss-seam-registration.war&lt;/web-uri&gt;\n"
+"            &lt;context-root&gt;/seam-registration&lt;/context-root&gt;\n"
+"        &lt;/web&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;ejb&gt;jboss-seam-registration.jar&lt;/ejb&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;jboss-seam.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;el-api.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;el-ri.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    \n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:376
+#, no-c-format
+msgid ""
+"This deployment descriptor links modules in the enterprise archive and binds "
+"the web application to the context root <literal>/seam-registration</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:387 Tutorial.xml:535 Tutorial.xml:698 Tutorial.xml:813
+#, no-c-format
+msgid "How it works"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:388
+#, no-c-format
+msgid ""
+"When the form is submitted, JSF asks Seam to resolve the variable named "
+"<literal>user</literal>. Since there is no value already bound to that name "
+"(in any Seam context), Seam instantiates the <literal>user</literal> "
+"component, and returns the resulting <literal>User</literal> entity bean "
+"instance to JSF after storing it in the Seam session context."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:391
+#, no-c-format
+msgid ""
+"The form input values are now validated against the Hibernate Validator "
+"constraints specified on the <literal>User</literal> entity. If the "
+"constraints are violated, JSF redisplays the page. Otherwise, JSF binds the "
+"form input values to properties of the <literal>User</literal> entity bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:394
+#, no-c-format
+msgid ""
+"Next, JSF asks Seam to resolve the variable named <literal>register</"
+"literal>. Seam finds the <literal>RegisterAction</literal> stateless session "
+"bean in the stateless context and returns it. JSF invokes the "
+"<literal>register()</literal> action listener method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:397
+#, no-c-format
+msgid ""
+"Seam intercepts the method call and injects the <literal>User</literal> "
+"entity from the Seam session context, before continuing the invocation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:400
+#, no-c-format
+msgid ""
+"The <literal>register()</literal> method checks if a user with the entered "
+"username already exists. If so, an error message is queued with the "
+"<literal>FacesMessages</literal> component, and a null outcome is returned, "
+"causing a page redisplay. The <literal>FacesMessages</literal> component "
+"interpolates the JSF expression embedded in the message string and adds a "
+"JSF <literal>FacesMessage</literal> to the view."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:403
+#, no-c-format
+msgid ""
+"If no user with that username exists, the <literal>\"/registered.jsp\"</"
+"literal> outcome triggers a browser redirect to the <literal>registered.jsp</"
+"literal> page. When JSF comes to render the page, it asks Seam to resolve "
+"the variable named <literal>user</literal> and uses property values of the "
+"returned <literal>User</literal> entity from Seam's session scope."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:411
+#, no-c-format
+msgid "Clickable lists in Seam: the messages example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:412
+#, no-c-format
+msgid ""
+"Clickable lists of database search results are such an important part of any "
+"online application that Seam provides special functionality on top of JSF to "
+"make it easier to query data using EJB-QL or HQL and display it as a "
+"clickable list using a JSF <literal>&lt;h:dataTable&gt;</literal>. The "
+"messages example demonstrates this functionality."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:425
+#, no-c-format
+msgid ""
+"The message list example has one entity bean, <literal>Message</literal>, "
+"one session bean, <literal>MessageListBean</literal> and one JSP."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:429
+#, no-c-format
+msgid "The entity bean: <literal>Message.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:430
+#, no-c-format
+msgid ""
+"The <literal>Message</literal> entity defines the title, text, date and time "
+"of a message, and a flag indicating whether the message has been read:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:433
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"message\")\n"
+"@Scope(EVENT)\n"
+"public class Message implements Serializable\n"
+"{\n"
+"   private Long id;\n"
+"   private String title;\n"
+"   private String text;\n"
+"   private boolean read;\n"
+"   private Date datetime;\n"
+"   \n"
+"   @Id @GeneratedValue\n"
+"   public Long getId() {\n"
+"      return id;\n"
+"   }\n"
+"   public void setId(Long id) {\n"
+"      this.id = id;\n"
+"   }\n"
+"   \n"
+"   @NotNull @Length(max=100)\n"
+"   public String getTitle() {\n"
+"      return title;\n"
+"   }\n"
+"   public void setTitle(String title) {\n"
+"      this.title = title;\n"
+"   }\n"
+"   \n"
+"   @NotNull @Lob\n"
+"   public String getText() {\n"
+"      return text;\n"
+"   }\n"
+"   public void setText(String text) {\n"
+"      this.text = text;\n"
+"   }\n"
+"   \n"
+"   @NotNull\n"
+"   public boolean isRead() {\n"
+"      return read;\n"
+"   }\n"
+"   public void setRead(boolean read) {\n"
+"      this.read = read;\n"
+"   }\n"
+"   \n"
+"   @NotNull \n"
+"   @Basic @Temporal(TemporalType.TIMESTAMP)\n"
+"   public Date getDatetime() {\n"
+"      return datetime;\n"
+"   }\n"
+"   public void setDatetime(Date datetime) {\n"
+"      this.datetime = datetime;\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:438
+#, no-c-format
+msgid "The stateful session bean: <literal>MessageManagerBean.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:439
+#, no-c-format
+msgid ""
+"Just like in the previous example, we have a session bean, "
+"<literal>MessageManagerBean</literal>, which defines the action listener "
+"methods for the two buttons on our form. One of the buttons selects a "
+"message from the list, and displays that message. The other button deletes a "
+"message. So far, this is not so different to the previous example."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:442
+#, no-c-format
+msgid ""
+"But <literal>MessageManagerBean</literal> is also responsible for fetching "
+"the list of messages the first time we navigate to the message list page. "
+"There are various ways the user could navigate to the page, and not all of "
+"them are preceded by a JSF action&mdash;the user might have bookmarked the "
+"page, for example. So the job of fetching the message list takes place in a "
+"Seam <emphasis>factory method</emphasis>, instead of in an action listener "
+"method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:445
+#, no-c-format
+msgid ""
+"We want to cache the list of messages in memory between server requests, so "
+"we will make this a stateful session bean."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:459
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Scope(SESSION)\n"
+"@Name(\"messageManager\")\n"
+"public class MessageManagerBean implements Serializable, MessageManager\n"
+"{\n"
+"\n"
+"   @DataModel\n"
+"   private List&lt;Message&gt; messageList;\n"
+"   \n"
+"   @DataModelSelection\n"
+"   @Out(required=false)\n"
+"   private Message message;\n"
+"   \n"
+"   @PersistenceContext(type=EXTENDED)\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @Factory(\"messageList\")\n"
+"   public void findMessages()\n"
+"   {\n"
+"      messageList = em.createQuery(\"from Message msg order by msg.datetime "
+"desc\").getResultList();\n"
+"   }\n"
+"   \n"
+"   public void select()\n"
+"   {\n"
+"      message.setRead(true);\n"
+"   }\n"
+"   \n"
+"   public void delete()\n"
+"   {\n"
+"      messageList.remove(message);\n"
+"      em.remove(message);\n"
+"      message=null;\n"
+"   }\n"
+"   \n"
+"   @Remove @Destroy\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:462
+#, no-c-format
+msgid ""
+"The <literal>@DataModel</literal> annotation exposes an attibute of type "
+"<literal>java.util.List</literal> to the JSF page as an instance of "
+"<literal>javax.faces.model.DataModel</literal>. This allows us to use the "
+"list in a JSF <literal>&lt;h:dataTable&gt;</literal> with clickable links "
+"for each row. In this case, the <literal>DataModel</literal> is made "
+"available in a session context variable named <literal>messageList</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:467
+#, no-c-format
+msgid ""
+"The <literal>@DataModelSelection</literal> annotation tells Seam to inject "
+"the <literal>List</literal> element that corresponded to the clicked link."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:472
+#, no-c-format
+msgid ""
+"The <literal>@Out</literal> annotation then exposes the selected value "
+"directly to the page. So ever time a row of the clickable list is selected, "
+"the <literal>Message</literal> is injected to the attribute of the stateful "
+"bean, and the subsequently <emphasis>outjected</emphasis> to the event "
+"context variable named <literal>message</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:477
+#, no-c-format
+msgid ""
+"This stateful bean has an EJB3 <emphasis>extended persistence context</"
+"emphasis>. The messages retrieved in the query remain in the managed state "
+"as long as the bean exists, so any subsequent method calls to the stateful "
+"bean can update them without needing to make any explicit call to the "
+"<literal>EntityManager</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:482
+#, no-c-format
+msgid ""
+"The first time we navigate to the JSP page, there will be no value in the "
+"<literal>messageList</literal> context variable. The <literal>@Factory</"
+"literal> annotation tells Seam to create an instance of "
+"<literal>MessageManagerBean</literal> and invoke the <literal>findMessages()"
+"</literal> method to initialize the value. We call <literal>findMessages()</"
+"literal> a <emphasis>factory method</emphasis> for <literal>messages</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:487
+#, no-c-format
+msgid ""
+"The <literal>select()</literal> action listener method marks the selected "
+"<literal>Message</literal> as read, and updates it in the database."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:492
+#, no-c-format
+msgid ""
+"The <literal>delete()</literal> action listener method removes the selected "
+"<literal>Message</literal> from the database."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:497
+#, no-c-format
+msgid ""
+"All stateful session bean Seam components <emphasis>must</emphasis> have a "
+"method marked <literal>@Remove @Destroy</literal> to ensure that Seam will "
+"remove the stateful bean when the Seam context ends, and clean up any server-"
+"side state."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:504
+#, no-c-format
+msgid ""
+"Note that this is a session-scoped Seam component. It is associated with the "
+"user login session, and all requests from a login session share the same "
+"instance of the component. (In Seam applications, we usually use session-"
+"scoped components sparingly.)"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:510
+#, no-c-format
+msgid ""
+"The session bean local interface: <literal>MessageManager.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:511
+#, no-c-format
+msgid "All session beans have a business interface, of course."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:514
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface MessageManager\n"
+"{\n"
+"   public void findMessages();\n"
+"   public void select();\n"
+"   public void delete();\n"
+"   public void destroy();\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:515
+#, no-c-format
+msgid "From now on, we won't show local interfaces in our code examples."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:518
+#, no-c-format
+msgid ""
+"Let's skip over <literal>components.xml</literal>, <literal>persistence.xml</"
+"literal>, <literal>web.xml</literal>, <literal>ejb-jar.xml</literal>, "
+"<literal>faces-config.xml</literal> and <literal>application.xml</literal> "
+"since they are much the same as the previous example, and go straight to the "
+"JSP."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:524
+#, no-c-format
+msgid "The view: <literal>messages.jsp</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:525
+#, no-c-format
+msgid ""
+"The JSP page is a straightforward use of the JSF <literal>&lt;h:dataTable&gt;"
+"</literal> component. Again, nothing specific to Seam."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:528
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Messages&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;h2&gt;Message List&lt;/h2&gt;\n"
+"     &lt;h:outputText value=\"No messages to display\" rendered=\"#"
+"{messageList.rowCount==0}\"/&gt;\n"
+"     &lt;h:dataTable var=\"msg\" value=\"#{messageList}\" rendered=\"#"
+"{messageList.rowCount&gt;0}\"&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Read\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:selectBooleanCheckbox value=\"#{msg.read}\" disabled=\"true"
+"\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Title\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:commandLink value=\"#{msg.title}\" action=\"#"
+"{messageManager.select}\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Date/Time\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:outputText value=\"#{msg.datetime}\"&gt;\n"
+"              &lt;f:convertDateTime type=\"both\" dateStyle=\"medium\" "
+"timeStyle=\"short\"/&gt;\n"
+"           &lt;/h:outputText&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;h:commandButton value=\"Delete\" action=\"#{messageManager."
+"delete}\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"     &lt;/h:dataTable&gt;\n"
+"     &lt;h3&gt;&lt;h:outputText value=\"#{message.title}\"/&gt;&lt;/h3&gt;\n"
+"     &lt;div&gt;&lt;h:outputText value=\"#{message.text}\"/&gt;&lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:536
+#, no-c-format
+msgid ""
+"The first time we navigate to the <literal>messages.jsp</literal> page, "
+"whether by a JSF postback (faces request) or a direct browser GET request "
+"(non-faces request), the page will try to resolve the <literal>messageList</"
+"literal> context variable. Since this context variable is not initialized, "
+"Seam will call the factory method <literal>findMessages()</literal>, which "
+"performs a query against the database and results in a <literal>DataModel</"
+"literal> being outjected. This <literal>DataModel</literal> provides the row "
+"data needed for rendering the <literal>&lt;h:dataTable&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:539
+#, no-c-format
+msgid ""
+"When the user clicks the <literal>&lt;h:commandLink&gt;</literal>, JSF calls "
+"the <literal>select()</literal> action listener. Seam intercepts this call "
+"and injects the selected row data into the <literal>message</literal> "
+"attribute of the <literal>messageManager</literal> component. The action "
+"listener fires, marking the selected <literal>Message</literal> as read. At "
+"the end of the call, Seam outjects the selected <literal>Message</literal> "
+"to the context variable named <literal>message</literal>. Next, the EJB "
+"container commits the transaction, and the change to the <literal>Message</"
+"literal> is flushed to the database. Finally, the page is re-rendered, "
+"redisplaying the message list, and displaying the selected message below it."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:542
+#, no-c-format
+msgid ""
+"If the user clicks the <literal>&lt;h:commandButton&gt;</literal>, JSF calls "
+"the <literal>delete()</literal> action listener. Seam intercepts this call "
+"and injects the selected row data into the <literal>message</literal> "
+"attribute of the <literal>messageList</literal> component. The action "
+"listener fires, removing the selected <literal>Message</literal> from the "
+"list, and also calling <literal>remove()</literal> on the "
+"<literal>EntityManager</literal>. At the end of the call, Seam refreshes the "
+"<literal>messageList</literal> context variable and clears the context "
+"variable named <literal>message</literal>. The EJB container commits the "
+"transaction, and deletes the <literal>Message</literal> from the database. "
+"Finally, the page is re-rendered, redisplaying the message list."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:550
+#, no-c-format
+msgid "Seam and jBPM: the todo list example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:551
+#, no-c-format
+msgid ""
+"jBPM provides sophisticated functionality for workflow and task management. "
+"To get a small taste of how jBPM integrates with Seam, we'll show you a "
+"simple \"todo list\" application. Since managing lists of tasks is such core "
+"functionality for jBPM, there is hardly any Java code at all in this example."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:564
+#, no-c-format
+msgid ""
+"The center of this example is the jBPM process definition. There are also "
+"two JSPs and two trivial JavaBeans (There was no reason to use session "
+"beans, since they do not access the database, or have any other "
+"transactional behavior). Let's start with the process definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:575
+#, no-c-format
+msgid ""
+"&lt;process-definition name=\"todo\"&gt;\n"
+"   \n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"todo\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;task-node name=\"todo\"&gt;\n"
+"      &lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"         &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"      &lt;/task&gt;\n"
+"      &lt;transition to=\"done\"/&gt;\n"
+"   &lt;/task-node&gt;\n"
+"   \n"
+"   &lt;end-state name=\"done\"/&gt;\n"
+"   \n"
+"&lt;/process-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:578
+#, no-c-format
+msgid ""
+"The <literal>&lt;start-state&gt;</literal> node represents the logical start "
+"of the process. When the process starts, it immediately transitions to the "
+"<literal>todo</literal> node."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:583
+#, no-c-format
+msgid ""
+"The <literal>&lt;task-node&gt;</literal> node represents a <emphasis>wait "
+"state</emphasis>, where business process execution pauses, waiting for one "
+"or more tasks to be performed."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:588
+#, no-c-format
+msgid ""
+"The <literal>&lt;task&gt;</literal> element defines a task to be performed "
+"by a user. Since there is only one task defined on this node, when it is "
+"complete, execution resumes, and we transition to the end state. The task "
+"gets its description from a Seam component named <literal>todoList</literal> "
+"(one of the JavaBeans)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:593
+#, no-c-format
+msgid ""
+"Tasks need to be assigned to a user or group of users when they are created. "
+"In this case, the task is assigned to the current user, which we get from a "
+"built-in Seam component named <literal>actor</literal>. Any Seam component "
+"may be used to perform task assignment."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:598
+#, no-c-format
+msgid ""
+"The <literal>&lt;end-state&gt;</literal> node defines the logical end of the "
+"business process. When execution reaches this node, the process instance is "
+"destroyed."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:605
+#, no-c-format
+msgid ""
+"If we view this process definition using the process definition editor "
+"provided by JBossIDE, this is what it looks like:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:616
+#, no-c-format
+msgid ""
+"This document defines our <emphasis>business process</emphasis> as a graph "
+"of nodes. This is the most trivial possible business process: there is one "
+"<emphasis>task</emphasis> to be performed, and when that task is complete, "
+"the business process ends."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:619
+#, no-c-format
+msgid ""
+"The first JavaBean handles the login screen <literal>login.jsp</literal>. "
+"Its job is just to initialize the jBPM actor id using the <literal>actor</"
+"literal> component. (In a real application, it would also need to "
+"authenticate the user.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:622
+#, no-c-format
+msgid ""
+"@Name(\"login\")\n"
+"public class Login {\n"
+"   \n"
+"   @In\n"
+"   private Actor actor;\n"
+"   \n"
+"   private String user;\n"
+"\n"
+"   public String getUser() {\n"
+"      return user;\n"
+"   }\n"
+"\n"
+"   public void setUser(String user) {\n"
+"      this.user = user;\n"
+"   }\n"
+"   \n"
+"   public String login()\n"
+"   {\n"
+"      actor.setId(user);\n"
+"      return \"/todo.jsp\";\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:623
+#, no-c-format
+msgid ""
+"Here we see the use of <literal>@In</literal> to inject the built-in "
+"<literal>Actor</literal> component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:626
+#, no-c-format
+msgid "The JSP itself is trivial:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:629
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"&#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"&#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Login&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Login&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    &lt;h:form&gt;\n"
+"      &lt;div&gt;\n"
+"        &lt;h:inputText value=\"#{login.user}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Login\" action=\"#{login.login}\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"    &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:630
+#, no-c-format
+msgid ""
+"The second JavaBean is responsible for starting business process instances, "
+"and ending tasks."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:639
+#, no-c-format
+msgid ""
+"@Name(\"todoList\")\n"
+"public class TodoList {\n"
+"   \n"
+"   private String description;\n"
+"   \n"
+"   public String getDescription()\n"
+"   {\n"
+"      return description;\n"
+"   }\n"
+"\n"
+"   public void setDescription(String description) {\n"
+"      this.description = description;\n"
+"   }\n"
+"   \n"
+"   @CreateProcess(definition=\"todo\")\n"
+"   public void createTodo() {}\n"
+"   \n"
+"   @StartTask @EndTask\n"
+"   public void done() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:642
+#, no-c-format
+msgid ""
+"The description property accepts user input form the JSP page, and exposes "
+"it to the process definition, allowing the task description to be set."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:647
+#, no-c-format
+msgid ""
+"The Seam <literal>@CreateProcess</literal> annotation creates a new jBPM "
+"process instance for the named process definition."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:652
+#, no-c-format
+msgid ""
+"The Seam <literal>@StartTask</literal> annotation starts work on a task. The "
+"<literal>@EndTask</literal> ends the task, and allows the business process "
+"execution to resume."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:659
+#, no-c-format
+msgid ""
+"In a more realistic example, <literal>@StartTask</literal> and "
+"<literal>@EndTask</literal> would not appear on the same method, because "
+"there is usually work to be done using the application in order to complete "
+"the task."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:662
+#, no-c-format
+msgid "Finally, the meat of the application is in <literal>todo.jsp</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:665
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://jboss.com/products/seam/taglib\" prefix=\"s\" "
+"&#37;&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Todo List&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Todo List&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"   &lt;h:form id=\"list\"&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:outputText value=\"There are no todo items.\" rendered=\"#"
+"{empty \n"
+"             taskInstanceList}\"/&gt;\n"
+"         &lt;h:dataTable value=\"#{taskInstanceList}\" var=\"task\" rendered="
+"\"#{not empty taskInstanceList}\"&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Description\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.description}\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Created\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:outputText value=\"#{task.taskMgmtInstance."
+"processInstance.start}\"&gt;\n"
+"                    &lt;f:convertDateTime type=\"date\"/&gt;\n"
+"                &lt;/h:outputText&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Priority\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.priority}\" style=\"width: 30"
+"\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Due Date\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.dueDate}\" style=\"width: 100"
+"\"&gt;\n"
+"                    &lt;f:convertDateTime type=\"date\" dateStyle=\"short\"/"
+"&gt;\n"
+"                &lt;/h:inputText&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;s:button value=\"Done\" action=\"#{todoList.done}\" "
+"taskInstance=\"#{task}\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"         &lt;/h:dataTable&gt;\n"
+"      &lt;/div&gt;\n"
+"      &lt;div&gt;\n"
+"      &lt;h:messages/&gt;\n"
+"      &lt;/div&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:commandButton value=\"Update Items\" action=\"update\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"   &lt;h:form id=\"new\"&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:inputText value=\"#{todoList.description}\"/&gt;\n"
+"         &lt;h:commandButton value=\"Create New Item\" action=\"#{todoList."
+"createTodo}\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:666
+#, no-c-format
+msgid "Let's take this one piece at a time."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:669
+#, no-c-format
+msgid ""
+"The page renders a list of tasks, which it gets from a built-in Seam "
+"component named <literal>taskInstanceList</literal>. The list is defined "
+"inside a JSF form."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:672
+#, no-c-format
+msgid ""
+"&lt;h:form id=\"list\"&gt;\n"
+"   &lt;div&gt;\n"
+"      &lt;h:outputText value=\"There are no todo items.\" rendered=\"#{empty "
+"taskInstanceList}\"/&gt;\n"
+"      &lt;h:dataTable value=\"#{taskInstanceList}\" var=\"task\" rendered=\"#"
+"{not empty taskInstanceList}\"&gt;\n"
+"         ...\n"
+"      &lt;/h:dataTable&gt;\n"
+"   &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:673
+#, no-c-format
+msgid ""
+"Each element of the list is an instance of the jBPM class "
+"<literal>TaskInstance</literal>. The following code simply displays the "
+"interesting properties of each task in the list. For the description, "
+"priority and due date, we use input controls, to allow the user to update "
+"these values."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:676
+#, no-c-format
+msgid ""
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"       &lt;h:outputText value=\"Description\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.description}\"/&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Created\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:outputText value=\"#{task.taskMgmtInstance.processInstance.start}"
+"\"&gt;\n"
+"        &lt;f:convertDateTime type=\"date\"/&gt;\n"
+"    &lt;/h:outputText&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Priority\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.priority}\" style=\"width: 30\"/&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Due Date\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.dueDate}\" style=\"width: 100\"&gt;\n"
+"        &lt;f:convertDateTime type=\"date\" dateStyle=\"short\"/&gt;\n"
+"    &lt;/h:inputText&gt;\n"
+"&lt;/h:column&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:677
+#, no-c-format
+msgid ""
+"This button ends the task by calling the action method annotated "
+"<literal>@StartTask @EndTask</literal>. It passes the task id to Seam as a "
+"request parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:680
+#, no-c-format
+msgid ""
+"&lt;h:column&gt;\n"
+"    &lt;s:button value=\"Done\" action=\"#{todoList.done}\" taskInstance=\"#"
+"{task}\"/&gt;\n"
+"&lt;/h:column&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:681
+#, no-c-format
+msgid ""
+"(Note that this is using a Seam <literal>&lt;s:button&gt;</literal> JSF "
+"control from the <literal>seam-ui.jar</literal> package.)"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:684
+#, no-c-format
+msgid ""
+"This button is used to update the properties of the tasks. When the form is "
+"submitted, Seam and jBPM will make any changes to the tasks persistent. "
+"There is no need for any action listener method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:687
+#, no-c-format
+msgid "&lt;h:commandButton value=\"Update Items\" action=\"update\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:688
+#, no-c-format
+msgid ""
+"A second form on the page is used to create new items, by calling the action "
+"method annotated <literal>@CreateProcess</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:691
+#, no-c-format
+msgid ""
+"&lt;h:form id=\"new\"&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:inputText value=\"#{todoList.description}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Create New Item\" action=\"#{todoList."
+"createTodo}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:692
+#, no-c-format
+msgid ""
+"There are several other files needed for the example, but they are just "
+"standard jBPM and Seam configuration and not very interesting."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:699 Tutorial.xml:814 Tutorial.xml:1157 Tutorial.xml:1178
+#: Tutorial.xml:1191
+#, no-c-format
+msgid "TODO"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:707
+#, no-c-format
+msgid "Seam pageflow: the numberguess example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:708
+#, no-c-format
+msgid ""
+"For Seam applications with relatively freeform (ad hoc) navigation, JSF/Seam "
+"navigation rules are a perfectly good way to define the page flow. For "
+"applications with a more constrained style of navigation, especially for "
+"user interfaces which are more stateful, navigation rules make it difficult "
+"to really understand the flow of the system. To understand the flow, you "
+"need to piece it together from the view pages, the actions and the "
+"navigation rules."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:711
+#, no-c-format
+msgid ""
+"Seam allows you to use a jPDL process definition to define pageflow. The "
+"simple number guessing example shows how this is done."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:724
+#, no-c-format
+msgid ""
+"The example is implemented using one JavaBean, three JSP pages and a jPDL "
+"pageflow definition. Let's begin with the pageflow:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:734
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"numberGuess\"&gt;\n"
+"   \n"
+"   &lt;start-page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"          &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"      &lt;/transition&gt;\n"
+"   &lt;/start-page&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess."
+"correctGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateRemainingGuesses\" expression=\"#{numberGuess."
+"lastGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"lose\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"displayGuess\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"lose\" view-id=\"/lose.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:737
+#, no-c-format
+msgid ""
+"The <literal>&lt;page&gt;</literal> element defines a wait state where the "
+"system displays a particular JSF view and waits for user input. The "
+"<literal>view-id</literal> is the same JSF view id used in plain JSF "
+"navigation rules. The <literal>redirect</literal> attribute tells Seam to "
+"use post-then-redirect when navigating to the page. (This results in "
+"friendly browser URLs.)"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:742
+#, no-c-format
+msgid ""
+"The <literal>&lt;transition&gt;</literal> element names a JSF outcome. The "
+"transition is triggered when a JSF action results in that outcome. Execution "
+"will then proceed to the next node of the pageflow graph, after invocation "
+"of any jBPM transition actions."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:747
+#, no-c-format
+msgid ""
+"A transition <literal>&lt;action&gt;</literal> is just like a JSF action, "
+"except that it occurs when a jBPM transition occurs. The transition action "
+"can invoke any Seam component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:752
+#, no-c-format
+msgid ""
+"A <literal>&lt;decision&gt;</literal> node branches the pageflow, and "
+"determines the next node to execute by evaluating a JSF EL expression."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:759
+#, no-c-format
+msgid "Here is what the pageflow looks like in the JBossIDE pageflow editor:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:770
+#, no-c-format
+msgid ""
+"Now that we have seen the pageflow, it is very, very easy to understand the "
+"rest of the application!"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:773
+#, no-c-format
+msgid ""
+"Here is the main page of the application, <literal>numberGuess.jsp</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:776
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"&#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"&#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Guess a number...&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Guess a number...&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    &lt;h:form&gt;\n"
+"        &lt;h:outputText value=\"Higher!\" rendered=\"#{numberGuess."
+"randomNumber&gt;numberGuess.currentGuess}\" /&gt;\n"
+"        &lt;h:outputText value=\"Lower!\" rendered=\"#{numberGuess."
+"randomNumber&lt;numberGuess.currentGuess}\" /&gt;\n"
+"        &lt;br /&gt;\n"
+"        I'm thinking of a number between &lt;h:outputText value=\"#"
+"{numberGuess.smallest}\" /&gt; and \n"
+"        &lt;h:outputText value=\"#{numberGuess.biggest}\" /&gt;. You have \n"
+"        &lt;h:outputText value=\"#{numberGuess.remainingGuesses}\" /&gt; "
+"guesses.\n"
+"        &lt;br /&gt;\n"
+"        Your guess: \n"
+"        &lt;h:inputText value=\"#{numberGuess.currentGuess}\" id=\"guess\" "
+"required=\"true\"&gt;\n"
+"            &lt;f:validateLongRange\n"
+"                maximum=\"#{numberGuess.biggest}\" \n"
+"                minimum=\"#{numberGuess.smallest}\"/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"        &lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"guess"
+"\" /&gt;\n"
+"        &lt;br/&gt;\n"
+"        &lt;h:message for=\"guess\" style=\"color: red\"/&gt;\n"
+"    &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:777
+#, no-c-format
+msgid ""
+"Notice how the command button names the <literal>guess</literal> transition "
+"instead of calling an action directly."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:780
+#, no-c-format
+msgid "The <literal>win.jsp</literal> page is predictable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:783
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"&#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"&#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;You won!&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;You won!&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    Yes, the answer was &lt;h:outputText value=\"#{numberGuess.currentGuess}"
+"\" /&gt;.\n"
+"    It took you &lt;h:outputText value=\"#{numberGuess.guessCount}\" /&gt; "
+"guesses.\n"
+"    Would you like to &lt;a href=\"numberGuess.seam\"&gt;play again&lt;/"
+"a&gt;?\n"
+"  &lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:784
+#, no-c-format
+msgid ""
+"As is <literal>lose.jsp</literal> (which I can't be bothered copy/pasting). "
+"Finally, the JavaBean Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:792
+#, no-c-format
+msgid ""
+"@Name(\"numberGuess\")\n"
+"@Scope(ScopeType.CONVERSATION)\n"
+"public class NumberGuess {\n"
+"   \n"
+"   private int randomNumber;\n"
+"   private Integer currentGuess;\n"
+"   private int biggest;\n"
+"   private int smallest;\n"
+"   private int guessCount;\n"
+"   private int maxGuesses;\n"
+"   \n"
+"   @Create \n"
+"   @Begin(pageflow=\"numberGuess\")\n"
+"   public void begin()\n"
+"   {\n"
+"      randomNumber = new Random().nextInt(100);\n"
+"      guessCount = 0;\n"
+"      biggest = 100;\n"
+"      smallest = 1;\n"
+"   }\n"
+"   \n"
+"   public void setCurrentGuess(Integer guess)\n"
+"   {\n"
+"      this.currentGuess = guess;\n"
+"   }\n"
+"   \n"
+"   public Integer getCurrentGuess()\n"
+"   {\n"
+"      return currentGuess;\n"
+"   }\n"
+"   \n"
+"   public void guess()\n"
+"   {\n"
+"      if (currentGuess&gt;randomNumber)\n"
+"      {\n"
+"         biggest = currentGuess - 1;\n"
+"      }\n"
+"      if (currentGuess&lt;randomNumber)\n"
+"      {\n"
+"         smallest = currentGuess + 1;\n"
+"      }\n"
+"      guessCount ++;\n"
+"   }\n"
+"   \n"
+"   public boolean isCorrectGuess()\n"
+"   {\n"
+"      return currentGuess==randomNumber;\n"
+"   }\n"
+"   \n"
+"   public int getBiggest()\n"
+"   {\n"
+"      return biggest;\n"
+"   }\n"
+"   \n"
+"   public int getSmallest()\n"
+"   {\n"
+"      return smallest;\n"
+"   }\n"
+"   \n"
+"   public int getGuessCount()\n"
+"   {\n"
+"      return guessCount;\n"
+"   }\n"
+"   \n"
+"   public boolean isLastGuess()\n"
+"   {\n"
+"      return guessCount==maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getRemainingGuesses() {\n"
+"      return maxGuesses-guessCount;\n"
+"   }\n"
+"\n"
+"   public void setMaxGuesses(int maxGuesses) {\n"
+"      this.maxGuesses = maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getMaxGuesses() {\n"
+"      return maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getRandomNumber() {\n"
+"      return randomNumber;\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:795
+#, no-c-format
+msgid ""
+"The first time a JSP page asks for a <literal>numberGuess</literal> "
+"component, Seam will create a new one for it, and the <literal>@Create</"
+"literal> method will be invoked, allowing the component to initialize itself."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:800
+#, no-c-format
+msgid ""
+"The <literal>@Begin</literal> annotation starts a Seam "
+"<emphasis>conversation</emphasis> (much more about that later), and "
+"specifies the pageflow definition to use for the conversation's page flow."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:807
+#, no-c-format
+msgid ""
+"As you can see, this Seam component is pure business logic! It doesn't need "
+"to know anything at all about the user interaction flow. This makes the "
+"component potentially more reuseable."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:822
+#, no-c-format
+msgid "A complete Seam application: the Hotel Booking example"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:824
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:825
+#, no-c-format
+msgid ""
+"The booking application is a complete hotel room reservation system "
+"incorporating the following features:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:830
+#, no-c-format
+msgid "User registration"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:835
+#, no-c-format
+msgid "Login"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:840
+#, no-c-format
+msgid "Logout"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:845
+#, no-c-format
+msgid "Set password"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:850
+#, no-c-format
+msgid "Hotel search"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:855
+#, no-c-format
+msgid "Hotel selection"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:860
+#, no-c-format
+msgid "Room reservation"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:865
+#, no-c-format
+msgid "Reservation confirmation"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:870
+#, no-c-format
+msgid "Existing reservation list"
+msgstr ""
+
+#. Tag: screeninfo
+#: Tutorial.xml:875
+#, no-c-format
+msgid "Booking example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:883
+#, no-c-format
+msgid ""
+"The booking application uses JSF, EJB 3.0 and Seam, together with Facelets "
+"for the view. There is also a port of this application to JSF, Facelets, "
+"Seam, JavaBeans and Hibernate3."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:886
+#, no-c-format
+msgid ""
+"One of the things you'll notice if you play with this application for long "
+"enough is that it is extremely <emphasis>robust</emphasis>. You can play "
+"with back buttons and browser refresh and opening multiple windows and "
+"entering nonsensical data as much as you like and you will find it very "
+"difficult to make the application crash. You might think that we spent weeks "
+"testing and fixing bugs to achive this. Actually, this is not the case. Seam "
+"was designed to make it very straightforward to build robust web "
+"applications and a lot of robustness that you are probably used to having to "
+"code yourself comes naturally and automatically with Seam."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:889
+#, no-c-format
+msgid ""
+"As you browse the sourcecode of the example application, and learn how the "
+"application works, observe how the declarative state management and "
+"integrated validation has been used to achieve this robustness."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:895
+#, no-c-format
+msgid "Overview of the booking example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:896
+#, no-c-format
+msgid ""
+"The project structure is identical to the previous one, to install and "
+"deploy this application, please refer to <xref linkend=\"Seam_Tutorial-"
+"Try_the_examples\"/>. Once you've successfully started the application, you "
+"can access it by pointing your browser to <ulink url=\"http://localhost:8080/"
+"seam-booking/\"><literal>http://localhost:8080/seam-booking/</literal></"
+"ulink>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:899
+#, no-c-format
+msgid ""
+"Just ten classes (plus six session beans local interfaces and 1 annotation "
+"interface) where used to implement this application. Six session bean action "
+"listeners contain all the business logic for the listed features."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:904
+#, no-c-format
+msgid ""
+"<literal>BookingListAction</literal> retrieves existing bookings for the "
+"currently logged in user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:907
+#, no-c-format
+msgid ""
+"<literal>ChangePasswordAction</literal> updates the password of the "
+"currently logged in user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:910
+#, no-c-format
+msgid ""
+"<literal>HotelBookingAction</literal> implements the core functionality of "
+"the application: hotel room searching, selection, booking and booking "
+"confirmation. This functionality is implemented as a <emphasis>conversation</"
+"emphasis>, so this is the most interesting class in the application."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:913
+#, no-c-format
+msgid ""
+"<literal>LoginAction</literal> validates the login details and retrieves the "
+"logged in user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:916
+#, no-c-format
+msgid "<literal>LogoutAction</literal> ends the login session."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:919
+#, no-c-format
+msgid "<literal>RegisterAction</literal> registers a new system user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:922
+#, no-c-format
+msgid "Three entity beans implement the application's persistent domain model."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:927
+#, no-c-format
+msgid "<literal>Hotel</literal> is an entity bean that represent a hotel"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:930
+#, no-c-format
+msgid ""
+"<literal>Booking</literal> is an entity bean that represents an existing "
+"booking"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:933
+#, no-c-format
+msgid ""
+"<literal>User</literal> is an entity bean to represents a user who can make "
+"hotel bookings"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:936
+#, no-c-format
+msgid ""
+"Finally, the <literal>LoggedIn</literal> annotation and the "
+"<literal>LoggedInInterceptor</literal> are used to protect actions that "
+"require a logged in user."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:942
+#, no-c-format
+msgid "Understanding Seam conversations"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:943
+#, no-c-format
+msgid ""
+"We encourage you browse the sourcecode at your pleasure. In this tutorial "
+"we'll concentrate upon one particular piece of functionality: hotel search, "
+"selection, booking and confirmation. From the point of view of the user, "
+"everything from selecting a hotel to confirming a booking is one continuous "
+"unit of work, a <emphasis>conversation</emphasis>. Searching, however, is "
+"<emphasis>not</emphasis> part of the conversation. The user can select "
+"multiple hotels from the same search results page, in different browser tabs."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:946
+#, no-c-format
+msgid ""
+"Most web application architectures have no first class construct to "
+"represent a conversation. This causes enormous problems managing state "
+"associated with the conversation. Usually, Java web applications use a "
+"combination of two techniques: first, some state is thrown into the "
+"<literal>HttpSession</literal>; second, persistable state is flushed to the "
+"database after every request, and reconstructed from the database at the "
+"beginning of each new request."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:949
+#, no-c-format
+msgid ""
+"Since the database is the least scalable tier, this often results in an "
+"utterly unacceptable lack of scalability. Added latency is also a problem, "
+"due to the extra traffic to and from the database on every request. To "
+"reduce this redundant traffic, Java applications often introduce a data "
+"(second-level) cache that keeps commonly accessed data between requests. "
+"This cache is necessarily inefficient, because invalidation is based upon an "
+"LRU policy instead of being based upon when the user has finished working "
+"with the data. Furthermore, because the cache is shared between many "
+"concurrent transactions, we've introduced a whole raft of problem's "
+"associated with keeping the cached state consistent with the database."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:952
+#, no-c-format
+msgid ""
+"Now consider the state held in the <literal>HttpSession</literal>. By very "
+"careful programming, we might be able to control the size of the session "
+"data. This is a lot more difficult than it sounds, since web browsers permit "
+"ad hoc non-linear navigation. But suppose we suddenly discover a system "
+"requirement that says that a user is allowed to have <emphasis>mutiple "
+"concurrent conversations</emphasis>, halfway through the development of the "
+"system (this has happened to me). Developing mechanisms to isolate session "
+"state associated with different concurrent conversations, and incorporating "
+"failsafes to ensure that conversation state is destroyed when the user "
+"aborts one of the conversations by closing a browser window or tab is not "
+"for the faint hearted (I've implemented this stuff twice so far, once for a "
+"client application, once for Seam, but I'm famously psychotic)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:955
+#, no-c-format
+msgid "Now there is a better way."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:958
+#, no-c-format
+msgid ""
+"Seam introduces the <emphasis>conversation context</emphasis> as a first "
+"class construct. You can safely keep conversational state in this context, "
+"and be assured that it will have a well-defined lifecycle. Even better, you "
+"won't need to be continually pushing data back and forth between the "
+"application server and the database, since the conversation context is a "
+"natural cache of data that the user is currently working with."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:961
+#, no-c-format
+msgid ""
+"Usually, the components we keep in the conversation context are stateful "
+"session beans. (We can also keep entity beans and JavaBeans in the "
+"conversation context.) There is an ancient canard in the Java community that "
+"stateful session beans are a scalability killer. This may have been true in "
+"1998 when WebFoobar 1.0 was released. It is no longer true today. "
+"Application servers like JBoss 4.0 have extremely sophisticated mechanisms "
+"for stateful session bean state replication. (For example, the JBoss EJB3 "
+"container performs fine-grained replication, replicating only those bean "
+"attribute values which actually changed.) Note that all the traditional "
+"technical arguments for why stateful beans are inefficient apply equally to "
+"the <literal>HttpSession</literal>, so the practice of shifting state from "
+"business tier stateful session bean components to the web session to try and "
+"improve performance is unbelievably misguided. It is certainly possible to "
+"write unscalable applications using stateful session beans, by using "
+"stateful beans incorrectly, or by using them for the wrong thing. But that "
+"doesn't mean you should <emphasis>never</emphasis> use them. Anyway, Seam "
+"guides you toward a safe usage model. Welcome to 2005."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:964
+#, no-c-format
+msgid "OK, I'll stop ranting now, and get back to the tutorial."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:967
+#, no-c-format
+msgid ""
+"The booking example application shows how stateful components with different "
+"scopes can collaborate together to achieve complex behaviors. The main page "
+"of the booking application allows the user to search for hotels. The search "
+"results are kept in the Seam session scope. When the user navigates to one "
+"of these hotels, a conversation begins, and a conversation scoped component "
+"calls back to the session scoped component to retrieve the selected hotel."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:970
+#, no-c-format
+msgid ""
+"The booking example also demonstrates the use of Ajax4JSF to implement rich "
+"client behavior without the use of handwritten JavaScript."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:973
+#, no-c-format
+msgid ""
+"The search functionality is implemented using a session-scope stateful "
+"session bean, similar to the one we saw in the message list example above."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:983
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"hotelSearch\")\n"
+"@Scope(ScopeType.SESSION)\n"
+"@LoggedIn\n"
+"public class HotelSearchingAction implements HotelSearching\n"
+"{\n"
+"   \n"
+"   @PersistenceContext\n"
+"   private EntityManager em;\n"
+"   \n"
+"   private String searchString;\n"
+"   private int pageSize = 10;\n"
+"   private int page;\n"
+"   \n"
+"   @DataModel\n"
+"   private List&lt;Hotel&gt; hotels;\n"
+"   \n"
+"   public String find()\n"
+"   {\n"
+"      page = 0;\n"
+"      queryHotels();   \n"
+"      return \"main\";\n"
+"   }\n"
+"\n"
+"   public String nextPage()\n"
+"   {\n"
+"      page++;\n"
+"      queryHotels();\n"
+"      return \"main\";\n"
+"   }\n"
+"      \n"
+"   private void queryHotels()\n"
+"   {\n"
+"      String searchPattern = searchString==null ? \"&#37;\" : '&#37;' + \n"
+"          searchString.toLowerCase().replace('*', '&#37;') + '&#37;';\n"
+"      hotels = em.createQuery(\"select h from Hotel h where lower(h.name) "
+"like\n"
+"          :search or lower(h.city) like :search \n"
+"          or lower(h.zip) like :search or lower(h.address) like :search\")\n"
+"            .setParameter(\"search\", searchPattern)\n"
+"            .setMaxResults(pageSize)\n"
+"            .setFirstResult( page * pageSize )\n"
+"            .getResultList();\n"
+"   }\n"
+"   \n"
+"   public boolean isNextPageAvailable()\n"
+"   {\n"
+"      return hotels!=null &amp;&amp; hotels.size()==pageSize;\n"
+"   }\n"
+"   \n"
+"   public int getPageSize() {\n"
+"      return pageSize;\n"
+"   }\n"
+"\n"
+"   public void setPageSize(int pageSize) {\n"
+"      this.pageSize = pageSize;\n"
+"   }\n"
+"\n"
+"   public String getSearchString()\n"
+"   {\n"
+"      return searchString;\n"
+"   }\n"
+"\n"
+"   public void setSearchString(String searchString)\n"
+"   {\n"
+"      this.searchString = searchString;\n"
+"   }\n"
+"   \n"
+"   @Destroy @Remove\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:986
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Stateful</literal> annotation identifies this "
+"class as a stateful session bean. Stateful session beans are scoped to the "
+"conversation context by default."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:991
+#, no-c-format
+msgid ""
+"The <literal>@LoggedIn</literal> annotation applies a custom Seam "
+"interceptor to the component. This works because <literal>@LoggedIn</"
+"literal> is marked with an <literal>@Interceptor</literal> meta-annotation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:996
+#, no-c-format
+msgid ""
+"The <link linkend=\"datamodel-annotation\"><literal>@DataModel</literal></"
+"link> annotation exposes a <literal>List</literal> as a JSF "
+"<literal>ListDataModel</literal>. This makes it easy to implement clickable "
+"lists for search screens. In this case, the list of hotels is exposed to the "
+"page as a <literal>ListDataModel</literal> in the conversation variable "
+"named <literal>hotels</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1001
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Remove</literal> annotation specifies that a "
+"stateful session bean should be removed and its state destroyed after "
+"invocation of the annotated method. In Seam, all stateful session beans "
+"should define a method marked <literal>@Destroy @Remove</literal>. This is "
+"the EJB remove method that will be called when Seam destroys the session "
+"context. Actually, the <link linkend=\"destroy-annotation"
+"\"><literal>@Destroy</literal></link> annotation is of more general "
+"usefulness, since it can be used for any kind of cleanup that should happen "
+"when any Seam context ends. If you don't have an <literal>@Destroy @Remove</"
+"literal> method, state will leak and you will suffer performance problems."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1008
+#, no-c-format
+msgid ""
+"The main page of the application is a Facelets page. Let's look at the "
+"fragment which relates to searching for hotels:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1018
+#, no-c-format
+msgid ""
+"&lt;div class=\"section\"&gt;\n"
+"&lt;h:form&gt;\n"
+"  \n"
+"  &lt;span class=\"errors\"&gt;\n"
+"    &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"  &lt;/span&gt;\n"
+"    \n"
+"  &lt;h1&gt;Search Hotels&lt;/h1&gt;\n"
+"  &lt;fieldset&gt; \n"
+"     &lt;h:inputText value=\"#{hotelSearch.searchString}\" style=\"width: "
+"165px;\"&gt;\n"
+"        &lt;a:support event=\"onkeyup\" actionListener=\"#{hotelSearch.find}"
+"\" \n"
+"                   reRender=\"searchResults\" /&gt;\n"
+"     &lt;/h:inputText&gt;\n"
+"     &amp;#160;\n"
+"     &lt;a:commandButton value=\"Find Hotels\" action=\"#{hotelSearch.find}"
+"\" \n"
+"                      styleClass=\"button\" reRender=\"searchResults\"/&gt;\n"
+"     &amp;#160;\n"
+"     &lt;a:status&gt;\n"
+"        &lt;f:facet name=\"start\"&gt;\n"
+"           &lt;h:graphicImage value=\"/img/spinner.gif\"/&gt;\n"
+"        &lt;/f:facet&gt;\n"
+"     &lt;/a:status&gt;\n"
+"     &lt;br/&gt;\n"
+"     &lt;h:outputLabel for=\"pageSize\"&gt;Maximum results:&lt;/h:"
+"outputLabel&gt;&amp;#160;\n"
+"     &lt;h:selectOneMenu value=\"#{hotelSearch.pageSize}\" id=\"pageSize"
+"\"&gt;\n"
+"        &lt;f:selectItem itemLabel=\"5\" itemValue=\"5\"/&gt;\n"
+"        &lt;f:selectItem itemLabel=\"10\" itemValue=\"10\"/&gt;\n"
+"        &lt;f:selectItem itemLabel=\"20\" itemValue=\"20\"/&gt;\n"
+"     &lt;/h:selectOneMenu&gt;\n"
+"  &lt;/fieldset&gt;\n"
+"    \n"
+"&lt;/h:form&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;a:outputPanel id=\"searchResults\"&gt;\n"
+"  &lt;div class=\"section\"&gt;\n"
+"  &lt;h:outputText value=\"No Hotels Found\" \n"
+"                rendered=\"#{hotels != null and hotels.rowCount==0}\"/&gt;\n"
+"  &lt;h:dataTable value=\"#{hotels}\" var=\"hot\" rendered=\"#{hotels."
+"rowCount&gt;0}\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Name&lt;/f:facet&gt;\n"
+"      #{hot.name}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Address&lt;/f:facet&gt;\n"
+"      #{hot.address}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;City, State&lt;/f:facet&gt;\n"
+"      #{hot.city}, #{hot.state}, #{hot.country}\n"
+"    &lt;/h:column&gt; \n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Zip&lt;/f:facet&gt;\n"
+"      #{hot.zip}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"      &lt;s:link value=\"View Hotel\" action=\"#{hotelBooking.selectHotel"
+"(hot)}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"  &lt;/h:dataTable&gt;\n"
+"  &lt;s:link value=\"More results\" action=\"#{hotelSearch.nextPage}\" \n"
+"          rendered=\"#{hotelSearch.nextPageAvailable}\"/&gt;\n"
+"  &lt;/div&gt;\n"
+"&lt;/a:outputPanel&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1021
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:support&gt;</literal> tag allows a JSF action "
+"event listener to be called by asynchronous <literal>XMLHttpRequest</"
+"literal> when a JavaScript event like <literal>onkeyup</literal> occurs. "
+"Even better, the <literal>reRender</literal> attribute lets us render a "
+"fragment of the JSF page and perform a partial page update when the "
+"asynchronous response is received."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1026
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:status&gt;</literal> tag lets us display a "
+"cheesy annimated image while we wait for asynchronous requests to return."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1031
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:outputPanel&gt;</literal> tag defines a region "
+"of the page which can be re-rendered by an asynchronous request."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1036
+#, no-c-format
+msgid ""
+"The Seam <literal>&lt;s:link&gt;</literal> tag lets us attach a JSF action "
+"listener to an ordinary (non-JavaScript) HTML link. The advantage of this "
+"over the standard JSF <literal>&lt;h:commandLink&gt;</literal> is that it "
+"preserves the operation of \"open in new window\" and \"open in new tab\". "
+"Also notice that we use a method binding with a parameter: <literal>#"
+"{hotelBooking.selectHotel(hot)}</literal>. This is not possible in the "
+"standard Unified EL, but Seam provides an extension to the EL that lets you "
+"use parameters on any method binding expression."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1043
+#, no-c-format
+msgid ""
+"This page displays the search results dynamically as we type, and lets us "
+"choose a hotel and pass it to the <literal>selectHotel()</literal> method of "
+"the <literal>HotelBookingAction</literal>, which is where the "
+"<emphasis>really</emphasis> interesting stuff is going to happen."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1046
+#, no-c-format
+msgid ""
+"Now lets see how the booking example application uses a conversation-scoped "
+"stateful session bean to achieve a natural cache of persistent data related "
+"to the conversation. The following code example is pretty long. But if you "
+"think of it as a list of scripted actions that implement the various steps "
+"of the conversation, it's understandable. Read the class from top to bottom, "
+"as if it were a story."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1057
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"hotelBooking\")\n"
+"@LoggedIn\n"
+"public class HotelBookingAction implements HotelBooking\n"
+"{\n"
+"   \n"
+"   @PersistenceContext(type=EXTENDED)\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @In \n"
+"   private User user;\n"
+"   \n"
+"   @In(required=false) @Out\n"
+"   private Hotel hotel;\n"
+"   \n"
+"   @In(required=false) \n"
+"   @Out(required=false)\n"
+"   private Booking booking;\n"
+"     \n"
+"   @In\n"
+"   private FacesMessages facesMessages;\n"
+"      \n"
+"   @In\n"
+"   private Events events;\n"
+"   \n"
+"   @Logger \n"
+"   private Log log;\n"
+"   \n"
+"   @Begin\n"
+"   public String selectHotel(Hotel selectedHotel)\n"
+"   {\n"
+"      hotel = em.merge(selectedHotel);\n"
+"      return \"hotel\";\n"
+"   }\n"
+"   \n"
+"   public String bookHotel()\n"
+"   {      \n"
+"      booking = new Booking(hotel, user);\n"
+"      Calendar calendar = Calendar.getInstance();\n"
+"      booking.setCheckinDate( calendar.getTime() );\n"
+"      calendar.add(Calendar.DAY_OF_MONTH, 1);\n"
+"      booking.setCheckoutDate( calendar.getTime() );\n"
+"      \n"
+"      return \"book\";\n"
+"   }\n"
+"\n"
+"   public String setBookingDetails()\n"
+"   {\n"
+"      if (booking==null || hotel==null) return \"main\";\n"
+"      if ( !booking.getCheckinDate().before( booking.getCheckoutDate() ) )\n"
+"      {\n"
+"         facesMessages.add(\"Check out date must be later than check in date"
+"\");\n"
+"         return null;\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return \"confirm\";\n"
+"      }\n"
+"   }\n"
+"\n"
+"   @End\n"
+"   public String confirm()\n"
+"   {\n"
+"      if (booking==null || hotel==null) return \"main\";\n"
+"      em.persist(booking);\n"
+"      facesMessages.add\n"
+"          (\"Thank you, #{user.name}, your confimation number for #{hotel."
+"name} is #{booking.id}\");\n"
+"      log.info(\"New booking: #{booking.id} for #{user.username}\");\n"
+"      events.raiseEvent(\"bookingConfirmed\");\n"
+"      return \"confirmed\";\n"
+"   }\n"
+"   \n"
+"   @End\n"
+"   public String cancel()\n"
+"   {\n"
+"      return \"main\";\n"
+"   }\n"
+"   \n"
+"   @Destroy @Remove\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1060
+#, no-c-format
+msgid ""
+"This bean uses an EJB3 <emphasis>extended persistence context</emphasis>, so "
+"that any entity instances remain managed for the whole lifecycle of the "
+"stateful session bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1065
+#, no-c-format
+msgid ""
+"The <link linkend=\"out-annotation\"><literal>@Out</literal></link> "
+"annotation declares that an attribute value is <emphasis>outjected</"
+"emphasis> to a context variable after method invocations. In this case, the "
+"context variable named <literal>hotel</literal> will be set to the value of "
+"the <literal>hotel</literal> instance variable after every action listener "
+"invocation completes."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1070
+#, no-c-format
+msgid ""
+"The <link linkend=\"begin-annotation\"><literal>@Begin</literal></link> "
+"annotation specifies that the annotated method begins a <emphasis>long-"
+"running conversation</emphasis>, so the current conversation context will "
+"not be destroyed at the end of the request. Instead, it will be reassociated "
+"with every request from the current window, and destroyed either by timeout "
+"due to conversation inactivity or invocation of a matching <literal>@End</"
+"literal> method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1075
+#, no-c-format
+msgid ""
+"The <link linkend=\"end-annotation\"><literal>@End</literal></link> "
+"annotation specifies that the annotated method ends the current long-running "
+"conversation, so the current conversation context will be destroyed at the "
+"end of the request."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1080
+#, no-c-format
+msgid ""
+"This EJB remove method will be called when Seam destroys the conversation "
+"context. Don't ever forget to define this method!"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1087
+#, no-c-format
+msgid ""
+"<literal>HotelBookingAction</literal> contains all the action listener "
+"methods that implement selection, booking and booking confirmation, and "
+"holds state related to this work in its instance variables. We think you'll "
+"agree that this code is much cleaner and simpler than getting and setting "
+"<literal>HttpSession</literal> attributes."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1090
+#, no-c-format
+msgid ""
+"Even better, a user can have multiple isolated conversations per login "
+"session. Try it! Log in, run a search, and navigate to different hotel pages "
+"in multiple browser tabs. You'll be able to work on creating two different "
+"hotel reservations at the same time. If you leave any one conversation "
+"inactive for long enough, Seam will eventually time out that conversation "
+"and destroy its state. If, after ending a conversation, you backbutton to a "
+"page of that conversation and try to perform an action, Seam will detect "
+"that the conversation was already ended, and redirect you to the search page."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1096
+#, no-c-format
+msgid "The Seam UI control library"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1097
+#, no-c-format
+msgid ""
+"If you check inside the WAR file for the booking application, you'll find "
+"<literal>seam-ui.jar</literal> in the <literal>WEB-INF/lib</literal> "
+"directory. This package contains a number of JSF custom controls that "
+"integrate with Seam. The booking application uses the <literal>&lt;s:link&gt;"
+"</literal> control for navigation from the search screen to the hotel page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1100
+#, no-c-format
+msgid ""
+"&lt;s:link value=\"View Hotel\" action=\"#{hotelBooking.selectHotel}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1101
+#, no-c-format
+msgid ""
+"The use of <literal>&lt;s:link&gt;</literal> here allows us to attach an "
+"action listener to a HTML link without breaking the browser's \"open in new "
+"window\" feature. The standard JSF <literal>&lt;h:commandLink&gt;</literal> "
+"does not work with \"open in new window\". We'll see later that <literal>&lt;"
+"s:link&gt;</literal> also offers a number of other useful features, "
+"including conversation propagation rules."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1104
+#, no-c-format
+msgid ""
+"The booking application uses some other Seam and Ajax4JSF controls, "
+"especially on the <literal>/book.xhtml</literal> page. We won't get into the "
+"details of those controls here, but if you want to understand this code, "
+"please refer to the chapter covering Seam's functionality for JSF form "
+"validation."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1110
+#, no-c-format
+msgid "The Seam Debug Page"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1111
+#, no-c-format
+msgid ""
+"The WAR also includes <literal>seam-debug.jar</literal>. If this jar is "
+"deployed in <literal>WEB-INF/lib</literal>, along with the Facelets, and if "
+"you set the following Seam property in <literal>web.xml</literal> or "
+"<literal>seam.properties</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1114
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;org.jboss.seam.core.init.debug&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;true&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1115
+#, no-c-format
+msgid ""
+"Then the Seam debug page will be available. This page lets you browse and "
+"inspect the Seam components in any of the Seam contexts associated with your "
+"current login session. Just point your browser at <ulink url=\"http://"
+"localhost:8080/seam-booking/debug.seam\"><literal>http://localhost:8080/seam-"
+"booking/debug.seam</literal></ulink>."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1131
+#, no-c-format
+msgid "A complete application featuring Seam and jBPM: the DVD Store example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1132
+#, no-c-format
+msgid ""
+"The DVD Store demo application shows the practical usage of jBPM for both "
+"task management and pageflow."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1135
+#, no-c-format
+msgid ""
+"The user screens take advantage of a jPDL pageflow to implement searching "
+"and shopping cart functionality."
+msgstr ""
+
+#. Tag: screeninfo
+#: Tutorial.xml:1138 Tutorial.xml:1149 Tutorial.xml:1170
+#, no-c-format
+msgid "DVD Store example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1146
+#, no-c-format
+msgid ""
+"The administration screens take use jBPM to manage the approval and shipping "
+"cycle for orders. The business process may even be changed dynamically, by "
+"selecting a different process definition!"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1160
+#, no-c-format
+msgid "Look in the <literal>dvdstore</literal> directory."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1166
+#, no-c-format
+msgid ""
+"A complete application featuring Seam workspace management: the Issue "
+"Tracker example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1167
+#, no-c-format
+msgid ""
+"The Issue Tracker demo shows off Seam's workspace management functionality: "
+"the conversation switcher, conversation list and breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1181
+#, no-c-format
+msgid "Look in the <literal>issues</literal> directory."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1187
+#, no-c-format
+msgid "An example of Seam with Hibernate: the Hibernate Booking example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1188
+#, no-c-format
+msgid ""
+"The Hibernate Booking demo is a straight port of the Booking demo to an "
+"alternative architecture that uses Hibernate for persistence and JavaBeans "
+"instead of session beans."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1194
+#, no-c-format
+msgid "Look in the <literal>hibernate</literal> directory."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1200
+#, no-c-format
+msgid "A RESTful Seam application: the Blog example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1201
+#, no-c-format
+msgid ""
+"Seam makes it very easy to implement applications which keep state on the "
+"server-side. However, server-side state is not always appropriate, "
+"especially in for functionality that serves up <emphasis>content</emphasis>. "
+"For this kind of problem we often need to let the user bookmark pages and "
+"have a relatively stateless server, so that any page can be accessed at any "
+"time, via the bookmark. The Blog example shows how to a implement RESTful "
+"application using Seam. Every page of the application can be bookmarked, "
+"including the search results page."
+msgstr ""
+
+#. Tag: screeninfo
+#: Tutorial.xml:1204
+#, no-c-format
+msgid "Blog example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1212
+#, no-c-format
+msgid ""
+"The Blog example demonstrates the use of \"pull\"-style MVC, where instead "
+"of using action listener methods to retrieve data and prepare the data for "
+"the view, the view pulls data from components as it is being rendered."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1216
+#, no-c-format
+msgid "Using \"pull\"-style MVC"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1217
+#, no-c-format
+msgid ""
+"This snippet from the <literal>index.xhtml</literal> facelets page displays "
+"a list of recent blog entries:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1220
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{blog.recentBlogEntries}\" var=\"blogEntry\" rows="
+"\"3\"&gt;\n"
+"   &lt;h:column&gt;\n"
+"      &lt;div class=\"blogEntry\"&gt;\n"
+"         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"         &lt;div&gt;\n"
+"            &lt;h:outputText escape=\"false\" \n"
+"                  value=\"#{blogEntry.excerpt==null ? blogEntry.body : "
+"blogEntry.excerpt}\"/&gt;\n"
+"         &lt;/div&gt;\n"
+"         &lt;p&gt;\n"
+"            &lt;h:outputLink value=\"entry.seam\" rendered=\"#{blogEntry."
+"excerpt!=null}\"&gt;\n"
+"               &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/"
+"&gt;\n"
+"               Read more...\n"
+"            &lt;/h:outputLink&gt;\n"
+"         &lt;/p&gt;\n"
+"         &lt;p&gt;\n"
+"            [Posted on \n"
+"            &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"               &lt;f:convertDateTime timeZone=\"#{blog.timeZone}\" locale=\"#"
+"{blog.locale}\" \n"
+"                   type=\"both\"/&gt;\n"
+"            &lt;/h:outputText&gt;]\n"
+"            &amp;#160;\n"
+"            &lt;h:outputLink value=\"entry.seam\"&gt;[Link]\n"
+"               &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/"
+"&gt;\n"
+"            &lt;/h:outputLink&gt;\n"
+"         &lt;/p&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1221
+#, no-c-format
+msgid ""
+"If we navigate to this page from a bookmark, how does the data used by the "
+"<literal>&lt;h:dataTable&gt;</literal> actually get initialized? Well, what "
+"happens is that the <literal>Blog</literal> is retrieved lazily&mdash;"
+"\"pulled\"&mdash;when needed, by a Seam component named <literal>blog</"
+"literal>. This is the opposite flow of control to what is usual in "
+"traditional web action-based frameworks like Struts."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1229
+#, no-c-format
+msgid ""
+"@Name(\"blog\")\n"
+"@Scope(ScopeType.STATELESS)\n"
+"public class BlogService \n"
+"{\n"
+"   \n"
+"   @In\n"
+"   private EntityManager entityManager;\n"
+"  \n"
+"   @Unwrap\n"
+"   public Blog getBlog()\n"
+"   {\n"
+"      return (Blog) entityManager.createQuery(\"from Blog b left join fetch "
+"b.blogEntries\")\n"
+"            .setHint(\"org.hibernate.cacheable\", true)\n"
+"            .getSingleResult();\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1232
+#, no-c-format
+msgid ""
+"This component uses a <emphasis>seam-managed persistence context</emphasis>. "
+"Unlike the other examples we've seen, this persistence context is managed by "
+"Seam, instead of by the EJB3 container. The persistence context spans the "
+"entire web request, allowing us to avoid any exceptions that occur when "
+"accessing unfetched associations in the view."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1237
+#, no-c-format
+msgid ""
+"The <literal>@Unwrap</literal> annotation tells Seam to provide the return "
+"value of the method&mdash;the <literal>Blog</literal>&mdash;instead of the "
+"actual <literal>BlogService</literal> component to clients. This is the Seam "
+"<emphasis>manager component pattern</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1244
+#, no-c-format
+msgid ""
+"This is good so far, but what about bookmarking the result of form "
+"submissions, such as a search results page?"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1250
+#, no-c-format
+msgid "Bookmarkable search results page"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1251
+#, no-c-format
+msgid ""
+"The blog example has a tiny form in the top right of each page that allows "
+"the user to search for blog entries. This is defined in a file, "
+"<literal>menu.xhtml</literal>, included by the facelets template, "
+"<literal>template.xhtml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1254
+#, no-c-format
+msgid ""
+"&lt;div id=\"search\"&gt;\n"
+"   &lt;h:form&gt;\n"
+"      &lt;h:inputText value=\"#{searchAction.searchPattern}\"/&gt;\n"
+"      &lt;h:commandButton value=\"Search\" action=\"/search.xhtml\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1255
+#, no-c-format
+msgid ""
+"To implement a bookmarkable search results page, we need to perform a "
+"browser redirect after processing the search form submission. Because we "
+"used the JSF view id as the action outcome, Seam automatically redirects to "
+"the view id when the form is submitted. Alternatively, we could have defined "
+"a navigation rule like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1258
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"   &lt;navigation-case&gt;\n"
+"      &lt;from-outcome&gt;searchResults&lt;/from-outcome&gt;\n"
+"      &lt;to-view-id&gt;/search.xhtml&lt;/to-view-id&gt;\n"
+"      &lt;redirect/&gt;\n"
+"   &lt;/navigation-case&gt;\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1259
+#, no-c-format
+msgid "Then the form would have looked like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1262
+#, no-c-format
+msgid ""
+"&lt;div id=\"search\"&gt;\n"
+"   &lt;h:form&gt;\n"
+"      &lt;h:inputText value=\"#{searchAction.searchPattern}\"/&gt;\n"
+"      &lt;h:commandButton value=\"Search\" action=\"searchResults\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1263
+#, no-c-format
+msgid ""
+"But when we redirect, we need to include the values submitted with the form "
+"as request parameters, to get a bookmarkable URL like <literal>http://"
+"localhost:8080/seam-blog/search.seam?searchPattern=seam</literal>. JSF does "
+"not provide an easy way to do this, but Seam does. We use a Seam "
+"<emphasis>page parameter</emphasis>, defined in <literal>WEB-INF/pages.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1266
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   &lt;page view-id=\"/search.xhtml\"&gt;\n"
+"      &lt;param name=\"searchPattern\" value=\"#{searchService.searchPattern}"
+"\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1267
+#, no-c-format
+msgid ""
+"This tells Seam to include the value of <literal>#{searchService."
+"searchPattern}</literal> as a request parameter named "
+"<literal>searchPattern</literal> when redirecting to the page, and then re-"
+"apply the value of that parameter to the model before rendering the page."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1270
+#, no-c-format
+msgid "The redirect takes us to the <literal>search.xhtml</literal> page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1273
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{searchResults}\" var=\"blogEntry\"&gt;\n"
+"   &lt;h:column&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:outputLink value=\"entry.seam\"&gt;\n"
+"            &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"            #{blogEntry.title}\n"
+"         &lt;/h:outputLink&gt;\n"
+"         posted on \n"
+"         &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"            &lt;f:convertDateTime timeZone=\"#{blog.timeZone}\" locale=\"#"
+"{blog.locale}\" type=\"both\"/&gt;\n"
+"         &lt;/h:outputText&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1274
+#, no-c-format
+msgid ""
+"Which again uses \"pull\"-style MVC to retrieve the actual search results:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1277
+#, no-c-format
+msgid ""
+"@Name(\"searchService\")\n"
+"public class SearchService \n"
+"{\n"
+"   \n"
+"   @In\n"
+"   private EntityManager entityManager;\n"
+"   \n"
+"   private String searchPattern;\n"
+"   \n"
+"   @Factory(\"searchResults\")\n"
+"   public List&lt;BlogEntry&gt; getSearchResults()\n"
+"   {\n"
+"      if (searchPattern==null)\n"
+"      {\n"
+"         return null;\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return entityManager.createQuery(\"select be from BlogEntry be "
+"where lower(be.title)\n"
+"             like :searchPattern or lower(be.body) like :searchPattern \n"
+"             order by be.date desc\")\n"
+"               .setParameter( \"searchPattern\", getSqlSearchPattern() )\n"
+"               .setMaxResults(100)\n"
+"               .getResultList();\n"
+"      }\n"
+"   }\n"
+"\n"
+"   private String getSqlSearchPattern()\n"
+"   {\n"
+"      return searchPattern==null ? \"\" : '&#37;' + \n"
+"          searchPattern.toLowerCase().replace('*', '&#37;').replace('?', "
+"'_') + '&#37;';\n"
+"   }\n"
+"\n"
+"   public String getSearchPattern()\n"
+"   {\n"
+"      return searchPattern;\n"
+"   }\n"
+"\n"
+"   public void setSearchPattern(String searchPattern)\n"
+"   {\n"
+"      this.searchPattern = searchPattern;\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1282
+#, no-c-format
+msgid "Using \"push\"-style MVC in a RESTful application"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1283
+#, no-c-format
+msgid ""
+"Very occasionally, it makes more sense to use push-style MVC for processing "
+"RESTful pages, and so Seam provides the notion of a <emphasis>page action</"
+"emphasis>. The Blog example uses a page action for the blog entry page, "
+"<literal>entry.xhtml</literal>. Note that this is a little bit contrived, it "
+"would have been easier to use pull-style MVC here as well."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1286
+#, no-c-format
+msgid ""
+"The <literal>entryAction</literal> component works much like an action class "
+"in a traditional push-MVC action-oriented framework like Struts:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1289
+#, no-c-format
+msgid ""
+"@Name(\"entryAction\")\n"
+"@Scope(STATELESS)\n"
+"public class EntryAction\n"
+"{\n"
+"   @In(create=true) \n"
+"   private Blog blog;\n"
+"   \n"
+"   @Out\n"
+"   private BlogEntry blogEntry;\n"
+"   \n"
+"   public void loadBlogEntry(String id) throws EntryNotFoundException\n"
+"   {\n"
+"      blogEntry = blog.getBlogEntry(id);\n"
+"      if (blogEntry==null) throw new EntryNotFoundException(id);\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1290
+#, no-c-format
+msgid "Page actions are also declared in <literal>pages.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1293
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   ...\n"
+"\n"
+"   &lt;page view-id=\"/entry.xhtml\" action=\"#{entryAction.loadBlogEntry"
+"(blogEntry.id)}\"&gt;\n"
+"      &lt;param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"\n"
+"   &lt;page view-id=\"/post.xhtml\" action=\"#{loginAction.challenge}\"/"
+"&gt;\n"
+"\n"
+"   &lt;page view-id=\"*\" action=\"#{blog.hitCount.hit}\"/&gt;\n"
+"\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1294
+#, no-c-format
+msgid ""
+"Notice that the example is using page actions for some other "
+"functionality&mdash;the login challenge, and the pageview counter. Also "
+"notice the use of a parameter in the page action method binding. This is not "
+"a standard feature of JSF EL, but Seam lets you use it, not just for page "
+"actions, but also in JSF method bindings."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1297
+#, no-c-format
+msgid ""
+"When the <literal>entry.xhtml</literal> page is requested, Seam first binds "
+"the page parameter <literal>blogEntryId</literal> to the model, then runs "
+"the page action, which retrieves the needed data&mdash;the "
+"<literal>blogEntry</literal>&mdash;and places it in the Seam event context. "
+"Finally, the following is rendered:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1300
+#, no-c-format
+msgid ""
+"&lt;div class=\"blogEntry\"&gt;\n"
+"   &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"   &lt;div&gt;\n"
+"      &lt;h:outputText escape=\"false\" value=\"#{blogEntry.body}\"/&gt;\n"
+"   &lt;/div&gt;\n"
+"   &lt;p&gt;\n"
+"      [Posted on&amp;#160;\n"
+"      &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"         &lt;f:convertDateTime timezone=\"#{blog.timeZone}\" locale=\"#{blog."
+"locale}\" type=\"both\"/&gt;\n"
+"      &lt;/h:outputText&gt;]\n"
+"   &lt;/p&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1301
+#, no-c-format
+msgid ""
+"If the blog entry is not found in the database, the "
+"<literal>EntryNotFoundException</literal> exception is thrown. We want this "
+"exception to result in a 404 error, not a 505, so we annotate the exception "
+"class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1304
+#, no-c-format
+msgid ""
+"@ApplicationException(rollback=true)\n"
+"@HttpError(errorCode=HttpServletResponse.SC_NOT_FOUND)\n"
+"public class EntryNotFoundException extends Exception\n"
+"{\n"
+"   EntryNotFoundException(String id)\n"
+"   {\n"
+"      super(\"entry not found: \" + id);\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1305
+#, no-c-format
+msgid ""
+"An alternative implementation of the example does not use the parameter in "
+"the method binding:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1308
+#, no-c-format
+msgid ""
+"@Name(\"entryAction\")\n"
+"@Scope(STATELESS)\n"
+"public class EntryAction\n"
+"{\n"
+"   @In(create=true) \n"
+"   private Blog blog;\n"
+"   \n"
+"   @In @Out\n"
+"   private BlogEntry blogEntry;\n"
+"   \n"
+"   public void loadBlogEntry() throws EntryNotFoundException\n"
+"   {\n"
+"      blogEntry = blog.getBlogEntry( blogEntry.getId() );\n"
+"      if (blogEntry==null) throw new EntryNotFoundException(id);\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1309
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   ...\n"
+"\n"
+"   &lt;page view-id=\"/entry.xhtml\" action=\"#{entryAction.loadBlogEntry}"
+"\"&gt;\n"
+"      &lt;param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1310
+#, no-c-format
+msgid "It is a matter of taste which implementation you prefer."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1318
+#, no-c-format
+msgid "Running the Seam examples in JBoss using the JSF 1.2 RI"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1319
+#, no-c-format
+msgid ""
+"JBoss AS 4.0 ships with the Apache MyFaces implementation of JSF 1.1. After "
+"many months of waiting, there is <emphasis>still</emphasis> no "
+"implementation of JSF 1.2 from MyFaces. For this and other reasons, JBoss AS "
+"4.2 will embed the JSF 1.2 Reference Implementation by default. Soon after "
+"the release of 4.2, we will migrate the Seam examples to JSF 1.2."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1322
+#, no-c-format
+msgid ""
+"For those who can't wait, Seam is already compatible with JSF 1.2, and it's "
+"easy to get the Seam examples running with JSF 1.2 in JBoss 4.0.5. Let's "
+"start with the famous booking example:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1327
+#, no-c-format
+msgid ""
+"copy <literal>jsf-api.jar</literal>, <literal>jsf-impl.jar</literal>, "
+"<literal>el-api.jar</literal>, <literal>el-impl.jar</literal> to "
+"<literal>server/default/deploy/tomcat/jbossweb-tomcat55.sar/jsf-libs</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1332
+#, no-c-format
+msgid ""
+"delete <literal>myfaces-api.jar</literal> and <literal>myfaces-impl.jar</"
+"literal> from <literal>server/default/deploy/tomcat/jbossweb-tomcat55.sar/"
+"jsf-libs</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1337
+#, no-c-format
+msgid ""
+"edit <literal>server/default/deploy/tomcat/jbossweb-tomcat55.sar/conf/web."
+"xml</literal>, replacing <literal>myfaces-impl.jar</literal> with "
+"<literal>jsf-impl.jar</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1342
+#, no-c-format
+msgid ""
+"edit <literal>examples/booking/resources/WEB-INF/web.xml</literal>, deleting "
+"the MyFaces listener, uncommenting the RI listener"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1347
+#, no-c-format
+msgid ""
+"edit <literal>examples/booking/resources/WEB-INF/faces-config.xml</literal>, "
+"uncommenting the lines that install the <literal>SeamELResolver</literal> "
+"using the new JSF 1.2 XML schema declaration."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1352
+#, no-c-format
+msgid ""
+"edit <literal>examples/booking/resources/META-INF/application.xml</literal>, "
+"deleting the lines that declare <literal>el-api.jar</literal> and "
+"<literal>el-impl.jar</literal> as Java modules."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1357
+#, no-c-format
+msgid ""
+"Restart JBoss, and type <literal>ant</literal> in the <literal>examples/"
+"booking</literal> directory."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Validation.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Validation.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Validation.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,375 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Validation.xml:10
+#, no-c-format
+msgid "JSF form validation in Seam"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:11
+#, no-c-format
+msgid "In plain JSF, validation is defined in the view:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:14
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Country:\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;my:validateCountry/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Zip code:\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;my:validateZip/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:15
+#, no-c-format
+msgid ""
+"In practice, this approach usually violates DRY, since most \"validation\" "
+"actually enforces constraints that are part of the data model, and exist all "
+"the way down to the database schema definition. Seam provides support for "
+"model-based constraints defined using Hibernate Validator."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:18
+#, no-c-format
+msgid ""
+"Let's start by defining our constraints, on our <literal>Location</literal> "
+"class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:21
+#, no-c-format
+msgid ""
+"public class Location {\n"
+"    private String country;\n"
+"    private String zip;\n"
+"    \n"
+"    @NotNull\n"
+"    @Length(max=30)\n"
+"    public String getCountry() { return country; }\n"
+"    public void setCountry(String c) { country = c; }\n"
+"\n"
+"    @NotNull\n"
+"    @Length(max=6)\n"
+"    @Pattern(\"^&#92;d*&#36;\")\n"
+"    public String getZip() { return zip; }\n"
+"    public void setZip(String z) { zip = z; }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:22
+#, no-c-format
+msgid ""
+"Well, that's a decent first cut, but in practice it might be more elegant to "
+"use custom constraints instead of the ones built into Hibernate Validator:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:25
+#, no-c-format
+msgid ""
+"public class Location {\n"
+"    private String country;\n"
+"    private String zip;\n"
+"    \n"
+"    @NotNull\n"
+"    @Country\n"
+"    public String getCountry() { return country; }\n"
+"    public void setCountry(String c) { country = c; }\n"
+"\n"
+"    @NotNull\n"
+"    @ZipCode\n"
+"    public String getZip() { return zip; }\n"
+"    public void setZip(String z) { zip = z; }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:26
+#, no-c-format
+msgid ""
+"Whichever route we take, we no longer need to specify the type of validation "
+"to be used in the JSF page. Instead, we can use <literal>&lt;s:validate&gt;</"
+"literal> to validate against the constraint defined on the model object."
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:29
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Country:\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;s:validate/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Zip code:\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;s:validate/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:30
+#, no-c-format
+msgid ""
+"<emphasis>Note:</emphasis> specifying <literal>@NotNull</literal> on the "
+"model does <emphasis>not</emphasis> eliminate the requirement for "
+"<literal>required=\"true\"</literal> to appear on the control! This is due "
+"to a limitation of the JSF validation architecture."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:33
+#, no-c-format
+msgid ""
+"This version is not much less verbose than what we started with, so let's "
+"try <literal>&lt;s:validateAll&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:36
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;h:inputText value=\"#{location.country}\" required=\"true\"/"
+"&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/"
+"&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:37
+#, no-c-format
+msgid ""
+"This tag simply adds an <literal>&lt;s:validate&gt;</literal> to every input "
+"in the form. For a large form, it can save a lot of typing!"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:40
+#, no-c-format
+msgid ""
+"Now we need to do something about displaying feedback to the user when "
+"validation fails. Currently we are displaying all messages at the top of the "
+"form. What we would really like to do is display the message next to the "
+"field with the error (this is possible in plain JSF), highlight the field "
+"(this is not possible) and, for good measure, display some image next the "
+"the field (also not possible)."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:43
+#, no-c-format
+msgid "Let's try out <literal>&lt;s:decorate&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:46
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;s:decorate&gt;\n"
+"                &lt;f:facet name=\"beforeInvalidField\"&gt;&lt;h:"
+"graphicImage src=\"img/error.gif\"/&gt;&lt;/f:facet&gt;\n"
+"                &lt;f:facet name=\"afterInvalidField\"&gt;&lt;s:message/&gt;"
+"&lt;/f:facet&gt;\n"
+"                &lt;f:facet name=\"aroundInvalidField\"&gt;&lt;s:span "
+"styleClass=\"error\"/&gt;&lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{location.country}\" required=\"true"
+"\"/&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;s:decorate&gt;\n"
+"                &lt;f:facet name=\"beforeInvalidField\"&gt;&lt;h:"
+"graphicImage src=\"img/error.gif\"/&gt;&lt;/f:facet&gt;\n"
+"                &lt;f:facet name=\"afterInvalidField\"&gt;&lt;s:message/&gt;"
+"&lt;/f:facet&gt;\n"
+"                &lt;f:facet name=\"aroundInvalidField\"&gt;&lt;s:span "
+"styleClass=\"error\"/&gt;&lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/"
+"&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:47
+#, no-c-format
+msgid ""
+"Well, that looks much better to the user, but it is extremely verbose. "
+"Fortunately, the facets of <literal>&lt;s:decorate&gt;</literal> may be "
+"defined on any parent element:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:50
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;f:facet name=\"beforeInvalidField\"&gt;\n"
+"        &lt;h:graphicImage src=\"img/error.gif\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;f:facet name=\"afterInvalidField\"&gt;\n"
+"        &lt;s:message/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;f:facet name=\"aroundInvalidField\"&gt;\n"
+"        &lt;s:span styleClass=\"error\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;s:decorate&gt;\n"
+"                &lt;h:inputText value=\"#{location.country}\" required=\"true"
+"\"/&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;s:decorate&gt;\n"
+"                &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/"
+"&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:51
+#, no-c-format
+msgid ""
+"This approach <emphasis>defines</emphasis> constraints on the model, and "
+"<emphasis>presents</emphasis> constraint violations in the view&mdash;a "
+"significantly better design."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:54
+#, no-c-format
+msgid ""
+"Finally, we can use Ajax4JSF to display validation messages as the user is "
+"typing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:57
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;f:facet name=\"beforeInvalidField\"&gt;\n"
+"        &lt;h:graphicImage src=\"img/error.gif\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;f:facet name=\"afterInvalidField\"&gt;\n"
+"        &lt;s:message/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;f:facet name=\"aroundInvalidField\"&gt;\n"
+"        &lt;s:span styleClass=\"error\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;s:decorate id=\"country\"&gt;\n"
+"                &lt;h:inputText value=\"#{location.country}\" required=\"true"
+"\"&gt;\n"
+"                    &lt;a:support event=\"onblur\" reRender=\"country\"/"
+"&gt;\n"
+"                &lt;/h:inputText&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;s:decorate id=\"zip\"&gt;\n"
+"                &lt;h:inputText value=\"#{location.zip}\" required=\"true"
+"\"&gt;\n"
+"                    &lt;a:support event=\"onblur\" reRender=\"zip\"/&gt;\n"
+"                &lt;/h:inputText&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Xml.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Xml.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/si-LK/Xml.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,933 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Xml.xml:10
+#, no-c-format
+msgid "Configuring Seam components"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:11
+#, no-c-format
+msgid ""
+"The philosophy of minimizing XML-based configuration is extremely strong in "
+"Seam. Nevertheless, there are various reasons why we might want to configure "
+"a Seam component using XML: to isolate deployment-specific information from "
+"the Java code, to enable the creation of re-usable frameworks, to configure "
+"Seam's built-in functionality, etc. Seam provides two basic approaches to "
+"configuring components: configuration via property settings in a properties "
+"file or <literal>web.xml</literal>, and configuration via "
+"<literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:14
+#, no-c-format
+msgid "Configuring components via property settings"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:15
+#, no-c-format
+msgid ""
+"Seam components may be provided with configuration properties either via "
+"servlet context parameters, or via a properties file named <literal>seam."
+"properties</literal> in the root of the classpath."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:18
+#, no-c-format
+msgid ""
+"The configurable Seam component must expose JavaBeans-style property setter "
+"methods for the configurable attributes. If a seam component named "
+"<literal>com.jboss.myapp.settings</literal> has a setter method named "
+"<literal>setLocale()</literal>, we can provide a property named <literal>com."
+"jboss.myapp.settings.locale</literal> in the <literal>seam.properties</"
+"literal> file or as a servlet context parameter, and Seam will set the value "
+"of the <literal>locale</literal> attribute whenever it instantiates the "
+"component."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:21
+#, no-c-format
+msgid ""
+"The same mechanism is used to configure Seam itself. For example, to set the "
+"conversation timeout, we provide a value for <literal>org.jboss.seam.core."
+"manager.conversationTimeout</literal> in <literal>web.xml</literal> or "
+"<literal>seam.properties</literal>. (There is a built-in Seam component "
+"named <literal>org.jboss.seam.core.manager</literal> with a setter method "
+"named <literal>setConversationTimeout()</literal>.)"
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:24
+#, no-c-format
+msgid "Configuring components via components.xml"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:25
+#, no-c-format
+msgid ""
+"The <literal>components.xml</literal> file is a bit more powerful than "
+"property settings. It lets you:"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:30
+#, no-c-format
+msgid ""
+"Configure components that have been installed automatically&mdash;including "
+"both built-in components, and application components that have been "
+"annotated with the <literal>@Name</literal> annotation and picked up by "
+"Seam's deployment scanner."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:35
+#, no-c-format
+msgid ""
+"Install classes with no <literal>@Name</literal> annotation as Seam "
+"components&mdash;this is most useful for certain kinds of infrastructural "
+"components which can be installed multiple times different names (for "
+"example Seam-managed persistence contexts)."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:40
+#, no-c-format
+msgid ""
+"Install components that <emphasis>do</emphasis> have a <literal>@Name</"
+"literal> annotation but are not installed by default because of an "
+"<literal>@Install</literal> annotation that indicates the component should "
+"not be installed."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:45
+#, no-c-format
+msgid "Override the scope of a component."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:50
+#, no-c-format
+msgid ""
+"A <literal>components.xml</literal> file may appear in one of three "
+"different places:"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:55
+#, no-c-format
+msgid "The <literal>WEB-INF</literal> directory of a <literal>war</literal>."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:60
+#, no-c-format
+msgid "The <literal>META-INF</literal> directory of a <literal>jar</literal>."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:65
+#, no-c-format
+msgid ""
+"Any directory of a <literal>jar</literal> that contains classes with an "
+"<literal>@Name</literal> annotation."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:70
+#, no-c-format
+msgid ""
+"Usually, Seam components are installed when the deployment scanner discovers "
+"a class with a <literal>@Name</literal> annotation sitting in an archive "
+"with a <literal>seam.properties</literal> file or a <literal>META-INF/"
+"components.xml</literal> file. (Unless the component has an "
+"<literal>@Install</literal> annotation indicating it should not be installed "
+"by default.) The <literal>components.xml</literal> file lets us handle "
+"special cases where we need to override the annotations."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:73
+#, no-c-format
+msgid ""
+"For example, the following <literal>components.xml</literal> file installs "
+"the JBoss Embeddable EJB3 container:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:76
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"&gt;\n"
+"    &lt;core:ejb/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:77
+#, no-c-format
+msgid "This example does the same thing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:80
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component class=\"org.jboss.seam.core.Ejb\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:81
+#, no-c-format
+msgid ""
+"This one installs and configures two different Seam-managed persistence "
+"contexts:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:84
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"    &lt;core:managed-persistence-context name=\"customerDatabase\"\n"
+"                persistence-unit-jndi-name=\"java:/"
+"customerEntityManagerFactory\"/&gt;\n"
+"        \n"
+"    &lt;core:managed-persistence-context name=\"accountingDatabase\"\n"
+"                persistence-unit-jndi-name=\"java:/"
+"accountingEntityManagerFactory\"/&gt;            \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:85
+#, no-c-format
+msgid "As does this one:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:88
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component name=\"customerDatabase\" \n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"customerEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"    \n"
+"    &lt;component name=\"accountingDatabase\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"accountingEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:89
+#, no-c-format
+msgid ""
+"This example creates a session-scoped Seam-managed persistence context (this "
+"is not recommended in practice):"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:92
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"  &lt;core:managed-persistence-context name=\"productDatabase\" \n"
+"                                   scope=\"session\"\n"
+"              persistence-unit-jndi-name=\"java:/productEntityManagerFactory"
+"\"/&gt;        \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:93
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"            \n"
+"    &lt;component name=\"productDatabase\"\n"
+"              scope=\"session\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"productEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:94
+#, no-c-format
+msgid ""
+"It is common to use the <literal>auto-create</literal> option for "
+"infrastructural objects like persistence contexts, which saves you from "
+"having to explicitly specify <literal>create=true</literal> when you use the "
+"<literal>@In</literal> annotation."
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:97
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"  &lt;core:managed-persistence-context name=\"productDatabase\" \n"
+"                             auto-create=\"true\"\n"
+"              persistence-unit-jndi-name=\"java:/productEntityManagerFactory"
+"\"/&gt;        \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:98
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"            \n"
+"    &lt;component name=\"productDatabase\"\n"
+"        auto-create=\"true\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"productEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:99
+#, no-c-format
+msgid ""
+"The <literal>&lt;factory&gt;</literal> declaration lets you specify a value "
+"or method binding expression that will be evaluated to initialize the value "
+"of a context variable when it is first referenced."
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:102
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"contact\" method=\"#{contactManager.loadContact}\" "
+"scope=\"CONVERSATION\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:103
+#, no-c-format
+msgid ""
+"You can create an \"alias\" (a second name) for a Seam component like so:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:106
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"user\" value=\"#{actor}\" scope=\"STATELESS\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:107
+#, no-c-format
+msgid "You can even create an \"alias\" for a commonly used expression:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:110
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"contact\" value=\"#{contactManager.contact}\" scope="
+"\"STATELESS\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:111
+#, no-c-format
+msgid ""
+"It is especially common to see the use of <literal>auto-create=\"true\"</"
+"literal> with the <literal>&lt;factory&gt;</literal> declaration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:114
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"session\" value=\"#{entityManager.delegate}\" scope="
+"\"STATELESS\" \n"
+"        auto-create=\"true\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:115
+#, no-c-format
+msgid ""
+"Sometimes we want to reuse the same <literal>components.xml</literal> file "
+"with minor changes during both deployment and testing. Seam lets you place "
+"wildcards of the form <literal>@wildcard@</literal> in the "
+"<literal>components.xml</literal> file which can be replaced either by your "
+"Ant build script (at deployment time) or by providing a file named "
+"<literal>components.properties</literal> in the classpath (at development "
+"time). You'll see this approach used in the Seam examples."
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:118
+#, no-c-format
+msgid "Fine-grained configuration files"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:119
+#, no-c-format
+msgid ""
+"If you have a large number of components that need to be configured in XML, "
+"it makes much more sense to split up the information in <literal>components."
+"xml</literal> into many small files. Seam lets you put configuration for a "
+"class named, for example, <literal>com.helloworld.Hello</literal> in a "
+"resource named <literal>com/helloworld/Hello.component.xml</literal>. (You "
+"might be familiar with this pattern, since it is the same one we use in "
+"Hibernate.) The root element of the file may be either a <literal>&lt;"
+"components&gt;</literal> or <literal>&lt;component&gt;</literal> element."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:122
+#, no-c-format
+msgid "The first option lets you define multiple components in the file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:125
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component class=\"com.helloworld.Hello\" name=\"hello\"&gt;\n"
+"        &lt;property name=\"name\"&gt;#{user.name}&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"    &lt;factory name=\"message\" value=\"#{hello.message}\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:126
+#, no-c-format
+msgid ""
+"The second option only lets you define or configure one component, but is "
+"less noisy:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:129
+#, no-c-format
+msgid ""
+"&lt;component name=\"hello\"&gt;\n"
+"    &lt;property name=\"name\"&gt;#{user.name}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:130
+#, no-c-format
+msgid ""
+"In the second option, the class name is implied by the file in which the "
+"component definition appears."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:133
+#, no-c-format
+msgid ""
+"Alternatively, you may put configuration for all classes in the <literal>com."
+"helloworld</literal> package in <literal>com/helloworld/components.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:136
+#, no-c-format
+msgid "Configurable property types"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:137
+#, no-c-format
+msgid ""
+"Properties of string, primitive or primitive wrapper type may be configured "
+"just as you would expect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:140
+#, no-c-format
+msgid "org.jboss.seam.core.manager.conversationTimeout 60000"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:141
+#, no-c-format
+msgid "&lt;core:manager conversation-timeout=\"60000\"/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:142
+#, no-c-format
+msgid ""
+"&lt;component name=\"org.jboss.seam.core.manager\"&gt;\n"
+"    &lt;property name=\"conversationTimeout\"&gt;60000&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:143
+#, no-c-format
+msgid "Arrays, sets and lists of strings or primitives are also supported:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:146
+#, no-c-format
+msgid ""
+"org.jboss.seam.core.jbpm.processDefinitions order.jpdl.xml, return.jpdl.xml, "
+"inventory.jpdl.xml"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:147
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;order.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;return.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:148
+#, no-c-format
+msgid ""
+"&lt;component name=\"org.jboss.seam.core.jbpm\"&gt;\n"
+"    &lt;property name=\"processDefinitions\"&gt;\n"
+"        &lt;value&gt;order.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;return.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:149
+#, no-c-format
+msgid ""
+"Even maps with String-valued keys and string or primitive values are "
+"supported:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:152
+#, no-c-format
+msgid ""
+"&lt;component name=\"issueEditor\"&gt;\n"
+"    &lt;property name=\"issueStatuses\"&gt;\n"
+"        &lt;key&gt;open&lt;/key&gt; &lt;value&gt;open issue&lt;/value&gt;\n"
+"        &lt;key&gt;resolved&lt;/key&gt; &lt;value&gt;issue resolved by "
+"developer&lt;/value&gt;\n"
+"        &lt;key&gt;closed&lt;/key&gt; &lt;value&gt;resolution accepted by "
+"user&lt;/value&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:153
+#, no-c-format
+msgid ""
+"Finally, you may wire together components using a value-binding expression. "
+"Note that this is quite different to injection using <literal>@In</literal>, "
+"since it happens at component instantiation time instead of invocation time. "
+"It is therefore much more similar to the dependency injection facilities "
+"offered by traditional IoC containers like JSF or Spring."
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:156
+#, no-c-format
+msgid ""
+"&lt;drools:managed-working-memory name=\"policyPricingWorkingMemory\" rule-"
+"base=\"#{policyPricingRules}\"/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:157
+#, no-c-format
+msgid ""
+"&lt;component name=\"policyPricingWorkingMemory\"\n"
+"          class=\"org.jboss.seam.drools.ManagedWorkingMemory\"&gt;\n"
+"    &lt;property name=\"ruleBase\"&gt;#{policyPricingRules}&lt;/"
+"property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:158
+#, no-c-format
+msgid "Using XML Namespaces"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:159
+#, no-c-format
+msgid ""
+"Throughout the examples, there have been two competing ways of declaring "
+"components: with and without the use of XML namespaces. The following shows "
+"a typical <literal>components.xml</literal> file without namespaces. It uses "
+"the Seam Components DTD:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:162
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"&gt;\n"
+"&lt;!DOCTYPE components PUBLIC \"-//JBoss/Seam Component Configuration DTD "
+"1.2//EN\"\n"
+"                            \"http://jboss.com/products/seam/components-1.2."
+"dtd\"&gt;\n"
+"&lt;components&gt;\n"
+"\n"
+"    &lt;component class=\"org.jboss.seam.core.init\"&gt;\n"
+"        &lt;property name=\"debug\"&gt;true&lt;/property&gt;\n"
+"        &lt;property name=\"jndiPattern\"&gt;@jndiPattern@&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"    &lt;component name=\"org.jboss.sean.core.ejb\" installed=\"@embeddedEjb@"
+"\" /&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:163
+#, no-c-format
+msgid ""
+"As you can see, this is somewhat verbose. Even worse, the component and "
+"attribute names cannot be validated at development time."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:166
+#, no-c-format
+msgid "The namespaced version looks like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:169
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                http://jboss.com/products/seam/core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components \n"
+"                 http://jboss.com/products/seam/components-1.2.xsd\"&gt;\n"
+"\n"
+"    &lt;core:init debug=\"true\" jndi-pattern=\"@jndiPattern@\"/&gt;\n"
+"\n"
+"    &lt;core:ejb installed=\"@embeddedEjb@\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:170
+#, no-c-format
+msgid ""
+"Even though the schema declarations are verbose, the actual XML content is "
+"lean and easy to understand. The schemas provide detailed information about "
+"each component and the attributes available, allowing XML editors to offer "
+"intelligent autocomplete. The use of namespaced elements makes generating "
+"and maintaining correct <literal>components.xml</literal> files much simpler."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:173
+#, no-c-format
+msgid ""
+"Now, this works great for the built-in Seam components, but what about user "
+"components? There are two options. First, Seam supports mixing the two "
+"models, allowing the use of the generic <literal>&lt;component&gt;</literal> "
+"declarations for user components, along with namespaced declarations for "
+"built-in components. But even better, Seam allows you to quickly declare "
+"namespaces for your own components."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:176
+#, no-c-format
+msgid ""
+"Any Java package can be associated with an XML namespace by annotating the "
+"package with the <literal>@Namespace</literal> annotation. (Package-level "
+"annotations are declared in a file named <literal>package-info.java</"
+"literal> in the package directory.) Here is an example from the seampay demo:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:179
+#, no-c-format
+msgid ""
+"@Namespace(value=\"http://jboss.com/products/seam/examples/seampay\")\n"
+"package org.jboss.seam.example.seampay;\n"
+"\n"
+"import org.jboss.seam.annotations.Namespace;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:180
+#, no-c-format
+msgid ""
+"That is all you need to do to use the namespaced style in "
+"<literal>components.xml</literal>! Now we can write:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:183
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pay=\"http://jboss.com/products/seam/examples/seampay\"\n"
+"            ... &gt;\n"
+"\n"
+"    &lt;pay:payment-home new-instance=\"#{newPayment}\"\n"
+"                      created-message=\"Created a new payment to #"
+"{newPayment.payee}\" /&gt;\n"
+"\n"
+"    &lt;pay:payment name=\"newPayment\"\n"
+"                 payee=\"Somebody\"\n"
+"                 account=\"#{selectedAccount}\"\n"
+"                 payment-date=\"#{currentDatetime}\"\n"
+"                 created-date=\"#{currentDatetime}\" /&gt;\n"
+"     ...\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:184
+#, no-c-format
+msgid "<para>Or:</para>"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:187
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pay=\"http://jboss.com/products/seam/examples/seampay\"\n"
+"            ... &gt;\n"
+"\n"
+"    &lt;pay:payment-home&gt;\n"
+"        &lt;pay:new-instance&gt;\"#{newPayment}\"&lt;/pay:new-instance&gt;\n"
+"        &lt;pay:created-message&gt;Created a new payment to #{newPayment."
+"payee}&lt;/pay:created-message&gt;\n"
+"    &lt;/pay:payment-home&gt;\n"
+"    \n"
+"    &lt;pay:payment name=\"newPayment\"&gt;\n"
+"        &lt;pay:payee&gt;Somebody\"&lt;/pay:payee&gt;\n"
+"        &lt;pay:account&gt;#{selectedAccount}&lt;/pay:account&gt;\n"
+"        &lt;pay:payment-date&gt;#{currentDatetime}&lt;/pay:payment-date&gt;\n"
+"        &lt;pay:created-date&gt;#{currentDatetime}&lt;/pay:created-date&gt;\n"
+"     &lt;/pay:payment&gt;\n"
+"     ...\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:188
+#, no-c-format
+msgid ""
+"These examples illustrate the two usage models of a namespaced element. In "
+"the first declaration, the <literal>&lt;pay:payment-home&gt;</literal> "
+"references the <literal>paymentHome</literal> component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:191
+#, no-c-format
+msgid ""
+"package org.jboss.seam.example.seampay;\n"
+"...\n"
+"@Name(\"paymentHome\")\n"
+"public class PaymentController\n"
+"    extends EntityHome&lt;Payment&gt;\n"
+"{\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:192
+#, no-c-format
+msgid ""
+"The element name is the hyphenated form of the component name. The "
+"attributes of the element are the hyphenated form of the property names."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:195
+#, no-c-format
+msgid ""
+"In the second declaration, the <literal>&lt;pay:payment&gt;</literal> "
+"element refers to the <literal>Payment</literal> class in the <literal>org."
+"jboss.seam.example.seampay</literal> package. In this case <literal>Payment</"
+"literal> is an entity that is being declared as a Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:198
+#, no-c-format
+msgid ""
+"package org.jboss.seam.example.seampay;\n"
+"...\n"
+"@Entity\n"
+"public class Payment\n"
+"    implements Serializable\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:199
+#, no-c-format
+msgid ""
+"If we want validation and autocompletion to work for user-defined "
+"components, we will need a schema. Seam does not yet provide a mechanism to "
+"automatically generate a schema for a set of components, so it is necessary "
+"to generate one manually. The schema definitions for the standard Seam "
+"packages can be used for guidance."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:202
+#, no-c-format
+msgid "The following are the the namespaces used by Seam:"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:207
+#, no-c-format
+msgid ""
+"components &mdash; <literal>http://jboss.com/products/seam/components</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:212
+#, no-c-format
+msgid "core &mdash; <literal>http://jboss.com/products/seam/core</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:217
+#, no-c-format
+msgid "drools &mdash; <literal>http://jboss.com/products/seam/drools</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:222
+#, no-c-format
+msgid ""
+"framework &mdash; <literal>http://jboss.com/products/seam/framework</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:227
+#, no-c-format
+msgid "jms &mdash; <literal>http://jboss.com/products/seam/jms</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:232
+#, no-c-format
+msgid ""
+"remoting &mdash; <literal>http://jboss.com/products/seam/remoting</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:237
+#, no-c-format
+msgid "theme &mdash; <literal>http://jboss.com/products/seam/theme</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:242
+#, no-c-format
+msgid ""
+"security &mdash; <literal>http://jboss.com/products/seam/security</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:247
+#, no-c-format
+msgid "mail &mdash; <literal>http://jboss.com/products/seam/mail</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:252
+#, no-c-format
+msgid "web &mdash; <literal>http://jboss.com/products/seam/web</literal>"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Annotations.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Annotations.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Annotations.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2030 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Annotations.xml:10
+#, no-c-format
+msgid "Seam annotations"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:11
+#, no-c-format
+msgid ""
+"When you write a Seam application, you'll use a lot of annotations. Seam "
+"lets you use annotations to achieve a declarative style of programming. Most "
+"of the annotations you'll use are defined by the EJB 3.0 specification. The "
+"annotations for data validation are defined by the Hibernate Validator "
+"package. Finally, Seam defines its own set of annotations, which we'll "
+"describe in this chapter."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:14
+#, no-c-format
+msgid ""
+"All of these annotations are defined in the package <literal>org.jboss.seam."
+"annotations</literal>."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:18
+#, no-c-format
+msgid "Annotations for component definition"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:19
+#, no-c-format
+msgid ""
+"The first group of annotations lets you define a Seam component. These "
+"annotations appear on the component class."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:24
+#, no-c-format
+msgid "@Name"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:26
+#, no-c-format
+msgid "@Name(\"componentName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:27
+#, no-c-format
+msgid ""
+"Defines the Seam component name for a class. This annotation is required for "
+"all Seam components."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:33
+#, no-c-format
+msgid "@Scope"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:35
+#, no-c-format
+msgid "@Scope(ScopeType.CONVERSATION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:36
+#, no-c-format
+msgid ""
+"Defines the default context of the component. The possible values are "
+"defined by the <literal>ScopeType</literal> enumeration: <literal>EVENT, "
+"PAGE, CONVERSATION, SESSION, BUSINESS_PROCESS, APPLICATION, STATELESS</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:39
+#, no-c-format
+msgid ""
+"When no scope is explicitly specified, the default depends upon the "
+"component type. For stateless session beans, the default is "
+"<literal>STATELESS</literal>. For entity beans and stateful session beans, "
+"the default is <literal>CONVERSATION</literal>. For JavaBeans, the default "
+"is <literal>EVENT</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:45
+#, no-c-format
+msgid "@Role"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:47
+#, no-c-format
+msgid "@Role(name=\"roleName\", scope=ScopeType.SESSION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:48
+#, no-c-format
+msgid ""
+"Allows a Seam component to be bound to multiple contexts variables. The "
+"<literal>@Name</literal>/<literal>@Scope</literal> annotations define a "
+"\"default role\". Each <literal>@Role</literal> annotation defines an "
+"additional role."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:53
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the context variable name."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:58
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; the context variable scope. When no scope "
+"is explicitly specified, the default depends upon the component type, as "
+"above."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:66
+#, no-c-format
+msgid "@Roles"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:68
+#, no-c-format
+msgid ""
+"@Roles({\n"
+"        @Role(name=\"user\", scope=ScopeType.CONVERSATION),\n"
+"        @Role(name=\"currentUser\", scope=ScopeType.SESSION)\n"
+"    })"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:69
+#, no-c-format
+msgid "Allows specification of multiple additional roles."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:75
+#, no-c-format
+msgid "@Intercept"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:77
+#, no-c-format
+msgid "@Intercept(InterceptionType.ALWAYS)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:78
+#, no-c-format
+msgid ""
+"Determines when Seam interceptors are active. The possible values are "
+"defined by the <literal>InterceptionType</literal> enumeration: "
+"<literal>ALWAYS, AFTER_RESTORE_VIEW, AFTER_UPDATE_MODEL_VALUES, "
+"INVOKE_APPLICATION, NEVER</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:81
+#, no-c-format
+msgid ""
+"When no interception type is explicitly specified, the default depends upon "
+"the component type. For entity beans, the default is <literal>NEVER</"
+"literal>. For session beans, message driven beans and JavaBeans, the default "
+"is <literal>ALWAYS</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:87
+#, no-c-format
+msgid "@JndiName"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:89
+#, no-c-format
+msgid "@JndiName(\"my/jndi/name\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:90
+#, no-c-format
+msgid ""
+"Specifies the JNDI name that Seam will use to look up the EJB component. If "
+"no JNDI name is explicitly specified, Seam will use the JNDI pattern "
+"specified by <literal>org.jboss.seam.core.init.jndiPattern</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:96
+#, no-c-format
+msgid "@Conversational"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:98
+#, no-c-format
+msgid "@Conversational(ifNotBegunOutcome=\"error\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:99
+#, no-c-format
+msgid ""
+"Specifies that a conversation scope component is conversational, meaning "
+"that no method of the component can be called unless a long-running "
+"conversation started by this component is active (unless the method would "
+"begin a new long-running conversation)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:105
+#, no-c-format
+msgid "<literal>@Startup</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:107
+#, no-c-format
+msgid "@Startup(depends={\"org.jboss.core.jndi\", \"org.jboss.core.jta\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:108
+#, no-c-format
+msgid ""
+"Specifies that an application scope component is started immediately at "
+"initialization time. This is mainly used for certain built-in components "
+"that bootstrap critical infrastructure such as JNDI, datasources, etc."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:111
+#, no-c-format
+msgid "<programlisting>@Startup</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:112
+#, no-c-format
+msgid ""
+"Specifies that a session scope component is started immediately at session "
+"creation time."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:117
+#, no-c-format
+msgid ""
+"<literal>depends</literal> &mdash; specifies that the named components must "
+"be started first, if they are installed."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:125
+#, no-c-format
+msgid "@Install"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:127
+#, no-c-format
+msgid "@Install(false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:128
+#, no-c-format
+msgid ""
+"Specifies whether or not a component should be installed by default. The "
+"lack of an @Install annotation indicates a component should be installed."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:131
+#, no-c-format
+msgid "@Install(dependencies=\"org.jboss.seam.core.jbpm\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:132
+#, no-c-format
+msgid ""
+"Specifies that a component should only be stalled if the components listed "
+"as dependencies are also installed."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:135
+#, no-c-format
+msgid "@Install(genericDependencies=ManagedQueueSender.class)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:136
+#, no-c-format
+msgid ""
+"Specifies that a component should only be installed if a component that is "
+"implemented by a certain class is installed. This is useful when the "
+"dependency doesn't have a single well-known name."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:139
+#, no-c-format
+msgid "@Install(classDependencies=\"org.hibernate.Session\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:140
+#, no-c-format
+msgid ""
+"Specifies that a component should only be installed if the named class is in "
+"the classpath."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:143
+#, no-c-format
+msgid "@Install(precedence=BUILT_IN)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:144
+#, no-c-format
+msgid ""
+"Specifies the precedence of the component. If multiple components with the "
+"same name exist, the one with the higher precedence will be installed. The "
+"defined precendence values are:"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:149
+#, no-c-format
+msgid ""
+"<literal>BUILT_IN</literal> &mdash; Precedence of all built-in Seam "
+"components"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:154
+#, no-c-format
+msgid ""
+"<literal>FRAMEWORK</literal> &mdash; Precedence to use for components of "
+"frameworks which extend Seam"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:159
+#, no-c-format
+msgid ""
+"<literal>APPLICATION</literal> &mdash; Predence of application components "
+"(the default precedence)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:164
+#, no-c-format
+msgid ""
+"<literal>DEPLOYMENT</literal> &mdash; Precedence to use for components which "
+"override application components in a particular deployment"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:172
+#, no-c-format
+msgid "@Synchronized"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:174
+#, no-c-format
+msgid "@Synchronized(timeout=1000)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:175
+#, no-c-format
+msgid ""
+"Specifies that a component is accessed concurrently by multiple clients, and "
+"that Seam should serialize requests. If a request is not able to obtain its "
+"lock on the component in the given timeout period, an exception will be "
+"raised."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:181
+#, no-c-format
+msgid "<literal>@ReadOnly</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:183
+#, no-c-format
+msgid "<programlisting>@ReadOnly</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:184
+#, no-c-format
+msgid ""
+"Specifies that a JavaBean component or component method does not require "
+"state replication at the end of the invocation."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:193
+#, no-c-format
+msgid "Annotations for bijection"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:194
+#, no-c-format
+msgid ""
+"The next two annotations control bijection. These attributes occur on "
+"component instance variables or property accessor methods."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:199
+#, no-c-format
+msgid "<literal>@In</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:201
+#, no-c-format
+msgid "<programlisting>@In</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:202
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. If the context "
+"variable is null, an exception will be thrown."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:205
+#, no-c-format
+msgid "@In(required=false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:206
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. The context variable "
+"may be null."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:209
+#, no-c-format
+msgid "@In(create=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:210
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. If the context "
+"variable is null, an instance of the component is instantiated by Seam."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:213
+#, no-c-format
+msgid "@In(value=\"contextVariableName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:214 Annotations.xml:259
+#, no-c-format
+msgid ""
+"Specifies the name of the context variable explicitly, instead of using the "
+"annotated instance variable name."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:217
+#, no-c-format
+msgid "@In(value=\"#{customer.addresses['shipping']}\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:218
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected by evaluating a JSF "
+"EL expression at the beginning of each component invocation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:223
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"Default to the name of the component attribute. Alternatively, specifies a "
+"JSF EL expression, surrounded by <literal>#{...}</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:228
+#, no-c-format
+msgid ""
+"<literal>create</literal> &mdash; specifies that Seam should instantiate the "
+"component with the same name as the context variable if the context variable "
+"is undefined (null) in all contexts. Default to false."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:233
+#, no-c-format
+msgid ""
+"<literal>required</literal> &mdash; specifies Seam should throw an exception "
+"if the context variable is undefined in all contexts."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:241
+#, no-c-format
+msgid "<literal>@Out</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:243
+#, no-c-format
+msgid "<programlisting>@Out</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:244
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is a Seam component is to be "
+"outjected to its context variable at the end of the invocation. If the "
+"attribute is null, an exception is thrown."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:247
+#, no-c-format
+msgid "@Out(required=false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:248
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is a Seam component is to be "
+"outjected to its context variable at the end of the invocation. The "
+"attribute may be null."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:251
+#, no-c-format
+msgid "@Out(scope=ScopeType.SESSION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:252
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is <emphasis>not</emphasis> a Seam "
+"component type is to be outjected to a specific scope at the end of the "
+"invocation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:255
+#, no-c-format
+msgid ""
+"Alternatively, if no scope is explicitly specified, the scope of the "
+"component with the <literal>@Out</literal> attribute is used (or the "
+"<literal>EVENT</literal> scope if the component is stateless)."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:258
+#, no-c-format
+msgid "@Out(value=\"contextVariableName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:264
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"Default to the name of the component attribute."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:269
+#, no-c-format
+msgid ""
+"<literal>required</literal> &mdash; specifies Seam should throw an exception "
+"if the component attribute is null during outjection."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:277
+#, no-c-format
+msgid ""
+"Note that it is quite common for these annotations to occur together, for "
+"example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:280
+#, no-c-format
+msgid "@In(create=true) @Out private User currentUser;"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:281
+#, no-c-format
+msgid ""
+"The next annotation supports the <emphasis>manager component</emphasis> "
+"pattern, where a Seam component that manages the lifecycle of an instance of "
+"some other class that is to be injected. It appears on a component getter "
+"method."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:286
+#, no-c-format
+msgid "<literal>@Unwrap</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:288
+#, no-c-format
+msgid "<programlisting>@Unwrap</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:289
+#, no-c-format
+msgid ""
+"Specifies that the object returned by the annotated getter method is the "
+"thing that is injected instead of the component instance itself."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:295
+#, no-c-format
+msgid ""
+"The next annotation supports the <emphasis>factory component</emphasis> "
+"pattern, where a Seam component is responsible for initializing the value of "
+"a context variable. This is especially useful for initializing any state "
+"needed for rendering the response to a non-faces request. It appears on a "
+"component method."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:300
+#, no-c-format
+msgid "@Factory"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:302
+#, no-c-format
+msgid "@Factory(\"processInstance\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:303
+#, no-c-format
+msgid ""
+"Specifies that the method of the component is used to initialize the value "
+"of the named context variable, when the context variable has no value. This "
+"style is used with methods that return <literal>void</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:306
+#, no-c-format
+msgid "@Factory(\"processInstance\", scope=CONVERSATION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:307
+#, no-c-format
+msgid ""
+"Specifies that the method returns a value that Seam should use to initialize "
+"the value of the named context variable, when the context variable has no "
+"value. This style is used with methods that return a value. If no scope is "
+"explicitly specified, the scope of the component with the <literal>@Factory</"
+"literal> method is used (unless the component is stateless, in which case "
+"the <literal>EVENT</literal> context is used)."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:312
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"If the method is a getter method, default to the JavaBeans property name."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:317
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; specifies the scope that Seam should bind "
+"the returned value to. Only meaningful for factory methods which return a "
+"value."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:325
+#, no-c-format
+msgid "This annotation lets you inject a <literal>Log</literal>:"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:330
+#, no-c-format
+msgid "@Logger"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:332
+#, no-c-format
+msgid "@Logger(\"categoryName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:333
+#, no-c-format
+msgid ""
+"Specifies that a component field is to be injected with an instance of "
+"<literal>org.jboss.seam.log.Log</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:338
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the log category. "
+"Default to the name of the component class."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:346
+#, no-c-format
+msgid "The last annotation lets you inject a request parameter value:"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:351
+#, no-c-format
+msgid "@RequestParameter"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:353
+#, no-c-format
+msgid "@RequestParameter(\"parameterName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:354
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected with the value of a "
+"request parameter. Basic type conversions are performed automatically."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:359
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the request "
+"parameter. Default to the name of the component attribute."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:370
+#, no-c-format
+msgid "Annotations for component lifecycle methods"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:371
+#, no-c-format
+msgid ""
+"These annotations allow a component to react to its own lifecycle events. "
+"They occur on methods of the component. There may be only one of each per "
+"component class."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:376
+#, no-c-format
+msgid "<literal>@Create</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:378
+#, no-c-format
+msgid "<programlisting>@Create</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:379
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when an instance of the component "
+"is instantiated by Seam. Note that create methods are only supported for "
+"JavaBeans and stateful session beans."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:385
+#, no-c-format
+msgid "<literal>@Destroy</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:387
+#, no-c-format
+msgid "<programlisting>@Destroy</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:388
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when the context ends and its "
+"context variables are destroyed. Note that create methods are only supported "
+"for JavaBeans and stateful session beans."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:391
+#, no-c-format
+msgid ""
+"Note that all stateful session bean components <emphasis>must</emphasis> "
+"define a method annotated <literal>@Destroy @Remove</literal> in order to "
+"guarantee destruction of the stateful bean when a context ends."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:394
+#, no-c-format
+msgid ""
+"Destroy methods should be used only for cleanup. <emphasis>Seam catches, "
+"logs and swallows any exception that propagates out of a destroy method.</"
+"emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:400
+#, no-c-format
+msgid "@Observer"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:402
+#, no-c-format
+msgid "@Observer(\"somethingChanged\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:403
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when a component-driven event of "
+"the specified type occurs."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:406
+#, no-c-format
+msgid "@Observer(value=\"somethingChanged\",create=false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:407
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when an event of the specified "
+"type occurs but that an instance should not be created if one doesn't exist. "
+"If an instance does not exist and create is false, the event will not be "
+"observed. The default value for create is true."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:416
+#, no-c-format
+msgid "Annotations for context demarcation"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:417
+#, no-c-format
+msgid ""
+"These annotations provide declarative conversation demarcation. They appear "
+"on methods of Seam components, usually action listener methods."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:420
+#, no-c-format
+msgid ""
+"Every web request has a conversation context associated with it. Most of "
+"these conversations end at the end of the request. If you want a "
+"conversation that span multiple requests, you must \"promote\" the current "
+"conversation to a <emphasis>long-running conversation</emphasis> by calling "
+"a method marked with <literal>@Begin</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:425
+#, no-c-format
+msgid "<literal>@Begin</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:427
+#, no-c-format
+msgid "<programlisting>@Begin</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:428
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation begins when this method returns a "
+"non-null outcome without exception."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:431
+#, no-c-format
+msgid "@Begin(ifOutcome={\"success\", \"continue\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:432
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation begins when this action listener "
+"method returns with one of the given outcomes."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:435
+#, no-c-format
+msgid "@Begin(join=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:436
+#, no-c-format
+msgid ""
+"Specifies that if a long-running conversation is already in progress, the "
+"conversation context is simply propagated."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:439
+#, no-c-format
+msgid "@Begin(nested=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:440
+#, no-c-format
+msgid ""
+"Specifies that if a long-running conversation is already in progress, a new "
+"<emphasis>nested</emphasis> conversation context begins. The nested "
+"conversation will end when the next <literal>@End</literal> is encountered, "
+"and the outer conversation will resume. It is perfectly legal for multiple "
+"nested conversations to exist concurrently in the same outer conversation."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:443
+#, no-c-format
+msgid "@Begin(pageflow=\"process definition name\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:444
+#, no-c-format
+msgid ""
+"Specifies a jBPM process definition name that defines the pageflow for this "
+"conversation."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:447
+#, no-c-format
+msgid "@Begin(flushMode=FlushModeType.MANUAL)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:448
+#, no-c-format
+msgid ""
+"Specify the flush mode of any Seam-managed persistence contexts. "
+"<literal>flushMode=FlushModeType.MANUAL</literal> supports the use of "
+"<emphasis>atomic conversations</emphasis> where all write operations are "
+"queued in the conversation context until an explicit call to <literal>flush()"
+"</literal> (which usually occurs at the end of the conversation)."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:454
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in a new long-running conversation context."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:459
+#, no-c-format
+msgid ""
+"<literal>join</literal> &mdash; determines the behavior when a long-running "
+"conversation is already in progress. If <literal>true</literal>, the context "
+"is propagated. If <literal>false</literal>, an exception is thrown. Default "
+"to <literal>false</literal>. This setting is ignored when "
+"<literal>nested=true</literal> is specified"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:464
+#, no-c-format
+msgid ""
+"<literal>nested</literal> &mdash; specifies that a nested conversation "
+"should be started if a long-running conversation is already in progress."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:469 Annotations.xml:526 Annotations.xml:550
+#, no-c-format
+msgid ""
+"<literal>flushMode</literal> &mdash; set the flush mode of any Seam-managed "
+"Hibernate sessions or JPA persistence contexts that are created during this "
+"conversation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:474
+#, no-c-format
+msgid ""
+"<literal>pageflow</literal> &mdash; a process definition name of a jBPM "
+"process definition deployed via <literal>org.jboss.seam.core.jbpm."
+"pageflowDefinitions.</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:483
+#, no-c-format
+msgid "<literal>@End</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:485
+#, no-c-format
+msgid "<programlisting>@End</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:486
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation ends when this method returns a "
+"non-null outcome without exception."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:489
+#, no-c-format
+msgid ""
+"@End(ifOutcome={\"success\", \"error\"}, evenIfException={SomeException."
+"class, OtherException.class})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:490
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation ends when this action listener "
+"method returns with one of the given outcomes or throws one of the specified "
+"classes of exception."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:496
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in the end of the current long-running conversation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:501 Annotations.xml:585
+#, no-c-format
+msgid ""
+"<literal>beforeRedirect</literal> &mdash; by default, the conversation will "
+"not actually be destroyed until after any redirect has occurred. Setting "
+"<literal>beforeRedirect=true</literal> specifies that the conversation "
+"should be destroyed at the end of the current request, and that the redirect "
+"will be processed in a new temporary conversation context."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:510
+#, no-c-format
+msgid "<literal>@StartTask</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:512
+#, no-c-format
+msgid "<programlisting>@StartTask</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:513
+#, no-c-format
+msgid ""
+"\"Starts\" a jBPM task. Specifies that a long-running conversation begins "
+"when this method returns a non-null outcome without exception. This "
+"conversation is associated with the jBPM task specified in the named request "
+"parameter. Within the context of this conversation, a business process "
+"context is also defined, for the business process instance of the task "
+"instance."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:516
+#, no-c-format
+msgid ""
+"The jBPM <literal>TaskInstance</literal> will be available in a request "
+"context variable named <literal>taskInstance</literal>. The jPBM "
+"<literal>ProcessInstance</literal> will be available in a request context "
+"variable named <literal>processInstance</literal>. (Of course, these objects "
+"are available for injection via <literal>@In</literal>.)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:521 Annotations.xml:545
+#, no-c-format
+msgid ""
+"<literal>taskIdParameter</literal> &mdash; the name of a request parameter "
+"which holds the id of the task. Default to <literal>\"taskId\"</literal>, "
+"which is also the default used by the Seam <literal>taskList</literal> JSF "
+"component."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:534
+#, no-c-format
+msgid "<literal>@BeginTask</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:536
+#, no-c-format
+msgid "<programlisting>@BeginTask</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:537
+#, no-c-format
+msgid ""
+"Resumes work on an incomplete jBPM task. Specifies that a long-running "
+"conversation begins when this method returns a non-null outcome without "
+"exception. This conversation is associated with the jBPM task specified in "
+"the named request parameter. Within the context of this conversation, a "
+"business process context is also defined, for the business process instance "
+"of the task instance."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:540
+#, no-c-format
+msgid ""
+"The jBPM <literal>TaskInstance</literal> will be available in a request "
+"context variable named <literal>taskInstance</literal>. The jPBM "
+"<literal>ProcessInstance</literal> will be available in a request context "
+"variable named <literal>processInstance</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:558
+#, no-c-format
+msgid "<literal>@EndTask</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:560
+#, no-c-format
+msgid "<programlisting>@EndTask</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:561
+#, no-c-format
+msgid ""
+"\"Ends\" a jBPM task. Specifies that a long-running conversation ends when "
+"this method returns a non-null outcome, and that the current task is "
+"complete. Triggers a jBPM transition. The actual transition triggered will "
+"be the default transition unless the application has called "
+"<literal>Transition.setName()</literal> on the built-in component named "
+"<literal>transition</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:564
+#, no-c-format
+msgid "@EndTask(transition=\"transitionName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:565
+#, no-c-format
+msgid "Triggers the given jBPM transition."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:568
+#, no-c-format
+msgid "@EndTask(ifOutcome={\"success\", \"continue\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:569
+#, no-c-format
+msgid ""
+"Specifies that the task ends when this method returns one of the listed "
+"outcomes."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:575
+#, no-c-format
+msgid ""
+"<literal>transition</literal> &mdash; the name of the jBPM transition to be "
+"triggered when ending the task. Defaults to the default transition."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:580
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in the end of the task."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:594
+#, no-c-format
+msgid "@CreateProcess"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:596
+#, no-c-format
+msgid "@CreateProcess(definition=\"process definition name\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:597
+#, no-c-format
+msgid ""
+"Creates a new jBPM process instance when the method returns a non-null "
+"outcome without exception. The <literal>ProcessInstance</literal> object "
+"will be available in a context variable named <literal>processInstance</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:602
+#, no-c-format
+msgid ""
+"<literal>definition</literal> &mdash; the name of the jBPM process "
+"definition deployed via <literal>org.jboss.seam.core.jbpm."
+"processDefinitions</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:610
+#, no-c-format
+msgid "@ResumeProcess"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:612
+#, no-c-format
+msgid "@ResumeProcess(processIdParameter=\"processId\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:613
+#, no-c-format
+msgid ""
+"Re-enters the scope of an existing jBPM process instance when the method "
+"returns a non-null outcome without exception. The <literal>ProcessInstance</"
+"literal> object will be available in a context variable named "
+"<literal>processInstance</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:618
+#, no-c-format
+msgid ""
+"<literal>processIdParameter</literal> &mdash; the name a request parameter "
+"holding the process id. Default to <literal>\"processId\"</literal>."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:629
+#, no-c-format
+msgid "Annotations for transaction demarcation"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:630
+#, no-c-format
+msgid ""
+"Seam provides an annotation that lets you force a rollback of the JTA "
+"transaction for certain action listener outcomes."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:635
+#, no-c-format
+msgid "@Rollback"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:637
+#, no-c-format
+msgid "@Rollback(ifOutcome={\"failure\", \"not-found\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:638
+#, no-c-format
+msgid ""
+"If the outcome of the method matches any of the listed outcomes, or if no "
+"outcomes are listed, set the transaction to rollback only when the method "
+"completes."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:643
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; the JSF outcomes that cause a "
+"transaction rollback (no outcomes is interpreted to mean any outcome)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:651
+#, no-c-format
+msgid "<literal>@Transactional</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:653
+#, no-c-format
+msgid "<programlisting>@Transactional</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:654
+#, no-c-format
+msgid ""
+"Specifies that a JavaBean component should have a similar transactional "
+"behavior to the default behavior of a session bean component. ie. method "
+"invocations should take place in a transaction, and if no transaction exists "
+"when the method is called, a transaction will be started just for that "
+"method. This annotation may be applied at either class or method level."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:660
+#, no-c-format
+msgid ""
+"Seam applications usually use the standard EJB3 annotations for all other "
+"transaction demarcation needs."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:666
+#, no-c-format
+msgid "Annotations for exceptions"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:667
+#, no-c-format
+msgid ""
+"These annotations let you specify how Seam should handle an exception that "
+"propagates out of a Seam component."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:672
+#, no-c-format
+msgid "@Redirect"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:674
+#, no-c-format
+msgid "@Redirect(viewId=\"error.jsp\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:675
+#, no-c-format
+msgid ""
+"Specifies that the annotated exception causes a browser redirect to a "
+"specified view id."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:680
+#, no-c-format
+msgid ""
+"<literal>viewId</literal> &mdash; specifies the JSF view id to redirect to."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:685
+#, no-c-format
+msgid ""
+"<literal>message</literal> &mdash; a message to be displayed, default to the "
+"exception message."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:690 Annotations.xml:716
+#, no-c-format
+msgid ""
+"<literal>end</literal> &mdash; specifies that the long-running conversation "
+"should end, default to <literal>false</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:698
+#, no-c-format
+msgid "@HttpError"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:700
+#, no-c-format
+msgid "@HttpError(errorCode=404)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:701
+#, no-c-format
+msgid "Specifies that the annotated exception causes a HTTP error to be sent."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:706
+#, no-c-format
+msgid ""
+"<literal>errorCode</literal> &mdash; the HTTP error code, default to "
+"<literal>500</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:711
+#, no-c-format
+msgid ""
+"<literal>message</literal> &mdash; a message to be sent with the HTTP error, "
+"default to the exception message."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:727
+#, no-c-format
+msgid "Annotations for validation"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:728
+#, no-c-format
+msgid ""
+"This annotation triggers Hibernate Validator. It appears on a method of a "
+"Seam component, almost always an action listener method."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:731
+#, no-c-format
+msgid ""
+"Please refer to the documentation for the Hibernate Annotations package for "
+"information about the annotations defined by the Hibernate Validator "
+"framework."
+msgstr ""
+
+#. Tag: emphasis
+#: Annotations.xml:735
+#, no-c-format
+msgid ""
+"Note that use of <literal>@IfInvalid</literal> is now semi-deprecated and "
+"<literal>&lt;s:validateAll&gt;</literal> is now preferred."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:739
+#, no-c-format
+msgid "@IfInvalid"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:741
+#, no-c-format
+msgid "@IfInvalid(outcome=\"invalid\", refreshEntities=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:742
+#, no-c-format
+msgid ""
+"Specifies that Hibernate Validator should validate the component before the "
+"method is invoked. If the invocation fails, the specified outcome will be "
+"returned, and the validation failure messages returned by Hibernate "
+"Validator will be added to the <literal>FacesContext</literal>. Otherwise, "
+"the invocation will proceed."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:747
+#, no-c-format
+msgid ""
+"<literal>outcome</literal> &mdash; the JSF outcome when validation fails."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:752
+#, no-c-format
+msgid ""
+"<literal>refreshEntities</literal> &mdash; specifies that any invalid entity "
+"in the managed state should be refreshed from the database when validation "
+"fails. Default to <literal>false</literal>. (Useful with extended "
+"persistence contexts.)"
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:763
+#, no-c-format
+msgid "Annotations for Seam Remoting"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:764
+#, no-c-format
+msgid ""
+"Seam Remoting requires that the local interface of a session bean be "
+"annotated with the following annotation:"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:769
+#, no-c-format
+msgid "@WebRemote"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:771
+#, no-c-format
+msgid "@WebRemote(exclude=\"path.to.exclude\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:772
+#, no-c-format
+msgid ""
+"Indicates that the annotated method may be called from client-side "
+"JavaScript. The <literal>exclude</literal> property is optional and allows "
+"objects to be excluded from the result's object graph (see the Remoting "
+"chapter for more details)."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:781
+#, no-c-format
+msgid "Annotations for Seam interceptors"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:782
+#, no-c-format
+msgid "The following annotations appear on Seam interceptor classes."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:785
+#, no-c-format
+msgid ""
+"Please refer to the documentation for the EJB 3.0 specification for "
+"information about the annotations required for EJB interceptor definition."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:790
+#, no-c-format
+msgid "@Interceptor"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:792
+#, no-c-format
+msgid "@Interceptor(stateless=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:793
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is stateless and Seam may optimize "
+"replication."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:796
+#, no-c-format
+msgid "@Interceptor(type=CLIENT)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:797
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is a \"client-side\" interceptor that is "
+"called before the EJB container."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:800
+#, no-c-format
+msgid "@Interceptor(around={SomeInterceptor.class, OtherInterceptor.class})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:801
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is positioned higher in the stack than the "
+"given interceptors."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:804
+#, no-c-format
+msgid "@Interceptor(within={SomeInterceptor.class, OtherInterceptor.class})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:805
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is positioned deeper in the stack than the "
+"given interceptors."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:814
+#, no-c-format
+msgid "Annotations for asynchronicity"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:815
+#, no-c-format
+msgid ""
+"The following annotations are used to declare an asynchronous method, for "
+"example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:818
+#, no-c-format
+msgid ""
+"@Asynchronous public void scheduleAlert(Alert alert, @Expiration Date date) "
+"{ ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:819
+#, no-c-format
+msgid ""
+"@Asynchronous public Timer scheduleAlerts(Alert alert, @Expiration Date "
+"date, \n"
+"    @IntervalDuration long interval) { ... }"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:822
+#, no-c-format
+msgid "<literal>@Asynchronous</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:824
+#, no-c-format
+msgid "<programlisting>@Asynchronous</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:825
+#, no-c-format
+msgid "Specifies that the method call is processed asynchronously."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:831
+#, no-c-format
+msgid "<literal>@Duration</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:833
+#, no-c-format
+msgid "<programlisting>@Duration</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:834
+#, no-c-format
+msgid ""
+"Specifies that a parameter of the asynchronous call is the duration before "
+"the call is processed (or first processed for recurring calls)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:840
+#, no-c-format
+msgid "<literal>@Expiration</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:842
+#, no-c-format
+msgid "<programlisting>@Expiration</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:843
+#, no-c-format
+msgid ""
+"Specifies that a parameter of the asynchronous call is the datetime at which "
+"the call is processed (or first processed for recurring calls)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:849
+#, no-c-format
+msgid "<literal>@IntervalDuration</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:851
+#, no-c-format
+msgid "<programlisting>@IntervalDuration</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:852
+#, no-c-format
+msgid ""
+"Specifies that an asynchronous method call recurs, and that the annotationed "
+"parameter is duration between recurrences."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:861
+#, no-c-format
+msgid "Annotations for use with JSF <literal>dataTable</literal>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:862
+#, no-c-format
+msgid ""
+"The following annotations make it easy to implement clickable lists backed "
+"by a stateful session bean. They appear on attributes."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:867
+#, no-c-format
+msgid "@DataModel"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:869
+#, no-c-format
+msgid "@DataModel(\"variableName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:870
+#, no-c-format
+msgid ""
+"Exposes an attribute of type <literal>List</literal>, <literal>Map</"
+"literal>, <literal>Set</literal> or <literal>Object[]</literal> as a JSF "
+"<literal>DataModel</literal> into the scope of the owning component (or the "
+"<literal>EVENT</literal> scope if the owning component is "
+"<literal>STATELESS</literal>). In the case of <literal>Map</literal>, each "
+"row of the <literal>DataModel</literal> is a <literal>Map.Entry</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:875
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; name of the conversation context variable. "
+"Default to the attribute name."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:880
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; if <literal>scope=ScopeType.PAGE</literal> "
+"is explicitly specified, the <literal>DataModel</literal> will be kept in "
+"the <literal>PAGE</literal> context."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:888
+#, no-c-format
+msgid "<literal>@DataModelSelection</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:890
+#, no-c-format
+msgid "<programlisting>@DataModelSelection</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:891
+#, no-c-format
+msgid ""
+"Injects the selected value from the JSF <literal>DataModel</literal> (this "
+"is the element of the underlying collection, or the map value)."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:896 Annotations.xml:912
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; name of the conversation context variable. "
+"Not needed if there is exactly one <literal>@DataModel</literal> in the "
+"component."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:904
+#, no-c-format
+msgid "<literal>@DataModelSelectionIndex</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:906
+#, no-c-format
+msgid "<programlisting>@DataModelSelectionIndex</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:907
+#, no-c-format
+msgid ""
+"Exposes the selection index of the JSF <literal>DataModel</literal> as an "
+"attribute of the component (this is the row number of the underlying "
+"collection, or the map key)."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:923
+#, no-c-format
+msgid "Meta-annotations for databinding"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:924
+#, no-c-format
+msgid ""
+"These meta-annotations make it possible to implement similar functionality "
+"to <literal>@DataModel</literal> and <literal>@DataModelSelection</literal> "
+"for other datastructures apart from lists."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:929
+#, no-c-format
+msgid "@DataBinderClass"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:931
+#, no-c-format
+msgid "@DataBinderClass(DataModelBinder.class)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:932
+#, no-c-format
+msgid "Specifies that an annotation is a databinding annotation."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:938
+#, no-c-format
+msgid "@DataSelectorClass"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:940
+#, no-c-format
+msgid "@DataSelectorClass(DataModelSelector.class)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:941
+#, no-c-format
+msgid "Specifies that an annotation is a dataselection annotation."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:950
+#, no-c-format
+msgid "Annotations for packaging"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:951
+#, no-c-format
+msgid ""
+"This annotation provides a mechanism for declaring information about a set "
+"of components that are packaged together. It can be applied to any Java "
+"package."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:956
+#, no-c-format
+msgid "@Namespace"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:958
+#, no-c-format
+msgid "@Namespace(value=\"http://jboss.com/products/seam/example/seampay\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:959
+#, no-c-format
+msgid ""
+"Specifies that components in the current package are associated with the "
+"given namespace. The declared namespace can be used as an XML namespace in a "
+"<literal>components.xml</literal> file to simplify application configuration."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:962
+#, no-c-format
+msgid ""
+"@Namespace(value=\"http://jboss.com/products/seam/core\", prefix=\"org.jboss."
+"seam.core\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:963
+#, no-c-format
+msgid ""
+"Specifies a namespace to associate with a given package. Additionally, it "
+"specifies a component name prefix to be applied to component names specified "
+"in the XML file. For example, an XML element named <literal>microcontainer</"
+"literal> that is associated with this namespace would be understood to "
+"actually refere to a component named <literal>org.jboss.seam.core."
+"microcontainer</literal>."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Book_Info.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Book_Info.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Book_Info.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,38 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Book_Info.xml:10
+#, no-c-format
+msgid "Seam - Contextual Components"
+msgstr ""
+
+#. Tag: subtitle
+#: Book_Info.xml:11
+#, no-c-format
+msgid "A Framework for Java EE 5"
+msgstr ""
+
+#. Tag: para
+#: Book_Info.xml:15
+#, no-c-format
+msgid "This book is a Reference Guide for Seam"
+msgstr ""
+
+#. Tag: holder
+#: Book_Info.xml:36
+#, no-c-format
+msgid "&FORMAL-RHI;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Cache.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Cache.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Cache.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,318 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Cache.xml:10
+#, no-c-format
+msgid "Caching"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:11
+#, no-c-format
+msgid ""
+"In almost all enterprise applications, the database is the primary "
+"bottleneck, and the least scalable tier of the runtime environment. People "
+"from a PHP/Ruby environment will try to tell you that so-called \"shared "
+"nothing\" architectures scale well. While that may be literally true, I "
+"don't know of many interesting multi-user applications which can be "
+"implemented with no sharing of resources between different nodes of the "
+"cluster. What these silly people are really thinking of is a \"share nothing "
+"except for the database\" architecture. Of course, sharing the database is "
+"the primary problem with scaling a multi-user application&mdash;so the claim "
+"that this architecture is highly scalable is absurd, and tells you a lot "
+"about the kind of applications that these folks spend most of their time "
+"working on."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:14
+#, no-c-format
+msgid ""
+"Almost anything we can possibly do to share the database <emphasis>less "
+"often</emphasis> is worth doing."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:17
+#, no-c-format
+msgid ""
+"This calls for a cache. Well, not just one cache. A well designed Seam "
+"application will feature a rich, multi-layered caching strategy that impacts "
+"every layer of the application:"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:22
+#, no-c-format
+msgid ""
+"The database, of course, has its own cache. This is super-important, but "
+"can't scale like a cache in the application tier."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:27
+#, no-c-format
+msgid ""
+"Your ORM solution (Hibernate, or some other JPA implementation) has a second-"
+"level cache of data from the database. This is a very powerful capability, "
+"but is often misused. In a clustered environment, keeping the data in the "
+"cache transactionally consistent across the whole cluster, and with the "
+"database, is quite expensive. It makes most sense for data which is shared "
+"between many users, and is updated rarely. In traditional stateless "
+"architectures, people often try to use the second-level cache for "
+"conversational state. This is always bad, and is especially wrong in Seam."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:32
+#, no-c-format
+msgid ""
+"The Seam conversation context is a cache of conversational state. Components "
+"you put into the conversation context can hold and cache state relating to "
+"the current user interaction."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:37
+#, no-c-format
+msgid ""
+"In particular, the Seam-managed persistence context (or an extended EJB "
+"container-managed persistence context associated with a conversation-scoped "
+"stateful session bean) acts as a cache of data that has been read in the "
+"current conversation. This cache tends to have a pretty high hitrate! Seam "
+"optimizes the replication of Seam-managed persistence contexts in a "
+"clustered environment, and there is no requirement for transactional "
+"consistency with the database (optimistic locking is sufficient) so you "
+"don't need to worry too much about the performance implications of this "
+"cache, unless you read thousands of objects into a single persistence "
+"context."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:42
+#, no-c-format
+msgid ""
+"The application can cache non-transactional state in the Seam application "
+"context. State kept in the application context is of course not visible to "
+"other nodes in the cluster."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:47
+#, no-c-format
+msgid ""
+"The application can cache transactional state using the Seam "
+"<literal>pojoCache</literal> component, which integrates JBossCache into the "
+"Seam environment. This state will be visible to other nodes if you run JBoss "
+"cache in a clustered mode."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:52
+#, no-c-format
+msgid ""
+"Finally, Seam lets you cache rendered fragments of a JSF page. Unlike the "
+"ORM second-level cache, this cache is not automatically invalidated when "
+"data changes, so you need to write application code to perform explicit "
+"invalidation, or set appropriate expiration policies."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:57
+#, no-c-format
+msgid ""
+"For more information about the second-level cache, you'll need to refer to "
+"the documentation of your ORM solution, since this is an extremely complex "
+"topic. In this section we'll discuss the use of JBossCache directly, via the "
+"<literal>pojoCache</literal> component, or as the page fragment cache, via "
+"the <literal>&lt;s:cache&gt;</literal> control."
+msgstr ""
+
+#. Tag: title
+#: Cache.xml:61
+#, no-c-format
+msgid "Using JBossCache in Seam"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:62
+#, no-c-format
+msgid ""
+"The built-in <literal>pojoCache</literal> component manages an instance of "
+"<literal>org.jboss.cache.aop.PojoCache</literal>. You can safely put any "
+"immutable Java object in the cache, and it will be replicated across the "
+"cluster (assuming that replication is enabled). If you want to keep mutable "
+"objects in the cache, you'll need to run the JBossCache bytecode "
+"preprocessor to ensure that changes to the objects will be automatically "
+"detected and replicated."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:65
+#, no-c-format
+msgid ""
+"To use <literal>pojoCache</literal>, all you need to do is put the "
+"JBossCache jars in the classpath, and provide a resource named "
+"<literal>treecache.xml</literal> with an appropriate cache configuration. "
+"JBossCache has many scary and confusing configuration settings, so we won't "
+"discuss them here. Please refer to the JBossCache documentation for more "
+"information."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:68
+#, no-c-format
+msgid ""
+"For an EAR depoyment of Seam, we recommend that the JBossCache jars and "
+"configuration go directly into the EAR. Make sure you declare the jars in "
+"<literal>application.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:71
+#, no-c-format
+msgid "Now you can inject the cache into any Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:74
+#, no-c-format
+msgid ""
+"@Name(\"chatroom\")\n"
+"public class Chatroom {\n"
+"    @In PojoCache pojoCache;\n"
+"    \n"
+"    public void join(String username) {\n"
+"      try\n"
+"      {\n"
+"         Set&lt;String&gt; userList = (Set&lt;String&gt;) pojoCache.get"
+"(\"chatroom\", \"userList\");\n"
+"         if (userList==null) \n"
+"         {\n"
+"            userList = new HashSet&lt;String&gt;();\n"
+"            pojoCache.put(\"chatroom\", \"userList\", userList);\n"
+"         }\n"
+"         userList.put(username);\n"
+"      }\n"
+"      catch (CacheException ce)\n"
+"      {\n"
+"         throw new RuntimeException(ce);\n"
+"      }\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:75
+#, no-c-format
+msgid ""
+"If you want to have multiple JBossCache configurations in your application, "
+"use <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:78
+#, no-c-format
+msgid ""
+"&lt;core:pojo-cache name=\"myCache\" cfg-resource-name=\"myown/cache.xml\"/"
+"&gt;"
+msgstr ""
+
+#. Tag: title
+#: Cache.xml:82
+#, no-c-format
+msgid "Page fragment caching"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:83
+#, no-c-format
+msgid ""
+"The most interesting user of JBossCache is the <literal>&lt;s:cache&gt;</"
+"literal> tag, Seam's solution to the problem of page fragment caching in "
+"JSF. <literal>&lt;s:cache&gt;</literal> uses <literal>pojoCache</literal> "
+"internally, so you need to follow the steps listed above before you can use "
+"it. (Put the jars in the EAR, wade through the scary configuration options, "
+"etc.)"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:86
+#, no-c-format
+msgid ""
+"<literal>&lt;s:cache&gt;</literal> is used for caching some rendered content "
+"which changes rarely. For example, the welcome page of our blog displays the "
+"recent blog entries:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:89
+#, no-c-format
+msgid ""
+"&lt;s:cache key=\"recentEntries-#{blog.id}\" region=\"welcomePageFragments"
+"\"&gt;\n"
+"   &lt;h:dataTable value=\"#{blog.recentEntries}\" var=\"blogEntry\"&gt;\n"
+"      &lt;h:column&gt;\n"
+"         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"         &lt;div&gt;\n"
+"            &lt;s:formattedText value=\"#{blogEntry.body}\"/&gt;\n"
+"         &lt;/div&gt;\n"
+"      &lt;/h:column&gt;\n"
+"   &lt;/h:dataTable&gt;\n"
+"&lt;/s:cache&gt;"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:90
+#, no-c-format
+msgid ""
+"The <literal>key</literal> let's you have multiple cached versions of each "
+"page fragment. In this case, there is one cached version per blog. The "
+"<literal>region</literal> determines the JBossCache node that all version "
+"will be stored in. Different nodes may have different expiry policies. "
+"(That's the stuff you set up using the aforementioned scary configuration "
+"options.)"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:93
+#, no-c-format
+msgid ""
+"Of course, the big problem with <literal>&lt;s:cache&gt;</literal> is that "
+"it is too stupid to know when the underlying data changes (for example, when "
+"the blogger posts a new entry). So you need to evict the cached fragment "
+"manually:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:96
+#, no-c-format
+msgid ""
+"public void post() {\n"
+"    ...\n"
+"    entityManager.persist(blogEntry);\n"
+"    pojoCache.remove(\"welcomePageFragments\", \"recentEntries-\" + blog."
+"getId() );\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:97
+#, no-c-format
+msgid ""
+"Alternatively, if it is not critical that changes are immediately visible to "
+"the user, you could set a short expiry time on the JbossCache node."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Components.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Components.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Components.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2007 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Components.xml:10
+#, no-c-format
+msgid "Built-in Seam components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:11
+#, no-c-format
+msgid ""
+"This chapter describes Seam's built-in components, and their configuration "
+"properties."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:14
+#, no-c-format
+msgid ""
+"Note that you can replace any of the built in components with your own "
+"implementations simply by specifying the name of one of the built in "
+"components on your own class using <literal>@Name</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:17
+#, no-c-format
+msgid ""
+"Note also that even though all the built in components use a qualified name, "
+"most of them are aliased to unqualified names by default. These aliases "
+"specify <literal>auto-create=\"true\"</literal>, so you do not need to use "
+"<literal>create=true</literal> when injecting built-in components by their "
+"unqualified name."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:21
+#, no-c-format
+msgid "Context injection components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:22
+#, no-c-format
+msgid ""
+"The first set of built in components exist purely to support injection of "
+"various contextual objects. For example, the following component instance "
+"variable would have the Seam session context object injected:"
+msgstr ""
+
+#. Tag: programlisting
+#: Components.xml:25
+#, no-c-format
+msgid "@In private Context sessionContext;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:28
+#, no-c-format
+msgid "org.jboss.seam.core.eventContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:30
+#, no-c-format
+msgid "Manager component for the event context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:36
+#, no-c-format
+msgid "org.jboss.seam.core.pageContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:38
+#, no-c-format
+msgid "Manager component for the page context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:44
+#, no-c-format
+msgid "org.jboss.seam.core.conversationContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:46
+#, no-c-format
+msgid "Manager component for the conversation context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:52
+#, no-c-format
+msgid "org.jboss.seam.core.sessionContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:54
+#, no-c-format
+msgid "Manager component for the session context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:60
+#, no-c-format
+msgid "org.jboss.seam.core.applicationContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:62
+#, no-c-format
+msgid "Manager component for the appication context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:68
+#, no-c-format
+msgid "org.jboss.seam.core.businessProcessContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:70
+#, no-c-format
+msgid "Manager component for the business process context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:76
+#, no-c-format
+msgid "org.jboss.seam.core.facesContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:78
+#, no-c-format
+msgid ""
+"Manager component for the <literal>FacesContext</literal> context object "
+"(not a true Seam context)"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:84 Components.xml:267 Components.xml:441 Components.xml:572
+#, no-c-format
+msgid "All of these components are always installed."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:90
+#, no-c-format
+msgid "Utility components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:91
+#, no-c-format
+msgid "These components are merely useful."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:96
+#, no-c-format
+msgid "org.jboss.seam.core.facesMessages"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:98
+#, no-c-format
+msgid "Allows faces success messages to propagate across a browser redirect."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:103
+#, no-c-format
+msgid ""
+"<literal>add(FacesMessage facesMessage)</literal> &mdash; add a faces "
+"message, which will be displayed during the next render response phase that "
+"occurs in the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:108
+#, no-c-format
+msgid ""
+"<literal>add(String messageTemplate)</literal> &mdash; add a faces message, "
+"rendered from the given message template which may contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:113
+#, no-c-format
+msgid ""
+"<literal>add(Severity severity, String messageTemplate)</literal> &mdash; "
+"add a faces message, rendered from the given message template which may "
+"contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:118
+#, no-c-format
+msgid ""
+"<literal>addFromResourceBundle(String key)</literal> &mdash; add a faces "
+"message, rendered from a message template defined in the Seam resource "
+"bundle which may contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:123
+#, no-c-format
+msgid ""
+"<literal>addFromResourceBundle(Severity severity, String key)</literal> "
+"&mdash; add a faces message, rendered from a message template defined in the "
+"Seam resource bundle which may contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:128
+#, no-c-format
+msgid "<literal>clear()</literal> &mdash; clear all messages."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:136
+#, no-c-format
+msgid "org.jboss.seam.core.redirect"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:138
+#, no-c-format
+msgid ""
+"A convenient API for performing redirects with parameters (this is "
+"especially useful for bookmarkable search results screens)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:143
+#, no-c-format
+msgid ""
+"<literal>redirect.viewId</literal> &mdash; the JSF view id to redirect to."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:148
+#, no-c-format
+msgid ""
+"<literal>redirect.conversationPropagationEnabled</literal> &mdash; "
+"determines whether the conversation will propagate across the redirect."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:153
+#, no-c-format
+msgid ""
+"<literal>redirect.parameters</literal> &mdash; a map of request parameter "
+"name to value, to be passed in the redirect request."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:158
+#, no-c-format
+msgid "<literal>execute()</literal> &mdash; perform the redirect immediately."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:163
+#, no-c-format
+msgid ""
+"<literal>captureCurrentRequest()</literal> &mdash; stores the view id and "
+"request parameters of the current GET request (in the conversation context), "
+"for later use by calling <literal>execute()</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:171
+#, no-c-format
+msgid "org.jboss.seam.core.httpError"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:173
+#, no-c-format
+msgid "A convenient API for sending HTTP errors."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:179
+#, no-c-format
+msgid "org.jboss.seam.core.events"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:181
+#, no-c-format
+msgid ""
+"An API for raising events that can be observed via <literal>@Observer</"
+"literal> methods, or method bindings in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:186
+#, no-c-format
+msgid ""
+"<literal>raiseEvent(String type)</literal> &mdash; raise an event of a "
+"particular type and distribute to all observers."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:191
+#, no-c-format
+msgid ""
+"<literal>raiseAsynchronousEvent(String type)</literal> &mdash; raise an "
+"event to be processed asynchronously by the EJB3 timer service."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:196
+#, no-c-format
+msgid ""
+"<literal>raiseTimedEvent(String type, ....)</literal> &mdash; schedule an "
+"event to be processed asynchronously by the EJB3 timer service."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:201
+#, no-c-format
+msgid ""
+"<literal>addListener(String type, String methodBinding)</literal> &mdash; "
+"add an observer for a particular event type."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:209
+#, no-c-format
+msgid "org.jboss.seam.core.interpolator"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:211
+#, no-c-format
+msgid "An API for interpolating the values of JSF EL expressions in Strings."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:216
+#, no-c-format
+msgid ""
+"<literal>interpolate(String template)</literal> &mdash; scan the template "
+"for JSF EL expressions of the form <literal>#{...}</literal> and replace "
+"them with their evaluated values."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:224
+#, no-c-format
+msgid "org.jboss.seam.core.expressions"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:226
+#, no-c-format
+msgid "An API for creating value and method bindings."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:231
+#, no-c-format
+msgid ""
+"<literal>createValueBinding(String expression)</literal> &mdash; create a "
+"value binding object."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:236
+#, no-c-format
+msgid ""
+"<literal>createMethodBinding(String expression)</literal> &mdash; create a "
+"method binding object."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:244
+#, no-c-format
+msgid "org.jboss.seam.core.pojoCache"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:246
+#, no-c-format
+msgid ""
+"Manager component for a JBoss Cache <literal>PojoCache</literal> instance."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:251
+#, no-c-format
+msgid ""
+"<literal>pojoCache.cfgResourceName</literal> &mdash; the name of the "
+"configuration file. Default to <literal>treecache.xml</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:259
+#, no-c-format
+msgid "org.jboss.seam.core.uiComponent"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:261
+#, no-c-format
+msgid ""
+"Allows access to a JSF <literal>UIComponent</literal> by its id from the EL. "
+"For example, we can write <literal>@In(\"#{uiComponent['myForm:address']."
+"value}\")</literal>."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:273
+#, no-c-format
+msgid "Components for internationalization and themes"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:274
+#, no-c-format
+msgid ""
+"The next group of components make it easy to build internationalized user "
+"interfaces using Seam."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:279
+#, no-c-format
+msgid "org.jboss.seam.core.locale"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:281
+#, no-c-format
+msgid "The Seam locale. The locale is session scoped."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:287
+#, no-c-format
+msgid "org.jboss.seam.core.timezone"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:289
+#, no-c-format
+msgid "The Seam timezone. The timezone is session scoped."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:295
+#, no-c-format
+msgid "org.jboss.seam.core.resourceBundle"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:297
+#, no-c-format
+msgid ""
+"The Seam resource bundle. The resource bundle is session scoped. The Seam "
+"resource bundle performs a depth-first search for keys in a list of Java "
+"resource bundles."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:302
+#, no-c-format
+msgid ""
+"<literal>resourceBundle.bundleNames</literal> &mdash; the names of the Java "
+"resource bundles to search. Default to <literal>messages</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:310
+#, no-c-format
+msgid "org.jboss.seam.core.localeSelector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:312
+#, no-c-format
+msgid ""
+"Supports selection of the locale either at configuration time, or by the "
+"user at runtime."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:317 Components.xml:367
+#, no-c-format
+msgid "<literal>select()</literal> &mdash; select the specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:322
+#, no-c-format
+msgid ""
+"<literal>localeSelector.locale</literal> &mdash; the actual <literal>java."
+"util.Locale</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:327
+#, no-c-format
+msgid ""
+"<literal>localeSelector.localeString</literal> &mdash; the stringified "
+"representation of the locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:332
+#, no-c-format
+msgid ""
+"<literal>localeSelector.language</literal> &mdash; the language for the "
+"specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:337
+#, no-c-format
+msgid ""
+"<literal>localeSelector.country</literal> &mdash; the country for the "
+"specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:342
+#, no-c-format
+msgid ""
+"<literal>localeSelector.variant</literal> &mdash; the variant for the "
+"specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:347
+#, no-c-format
+msgid ""
+"<literal>localeSelector.supportedLocales</literal> &mdash; a list of "
+"<literal>SelectItem</literal>s representing the supported locales listed in "
+"<literal>jsf-config.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:352
+#, no-c-format
+msgid ""
+"<literal>localeSelector.cookieEnabled</literal> &mdash; specifies that the "
+"locale selection should be persisted via a cookie."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:360
+#, no-c-format
+msgid "org.jboss.seam.core.timezoneSelector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:362
+#, no-c-format
+msgid ""
+"Supports selection of the timezone either at configuration time, or by the "
+"user at runtime."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:372
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.timezone</literal> &mdash; the actual "
+"<literal>java.util.TimeZone</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:377
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.timeZoneId</literal> &mdash; the stringified "
+"representation of the timezone."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:382
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.cookieEnabled</literal> &mdash; specifies that the "
+"timezone selection should be persisted via a cookie."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:390
+#, no-c-format
+msgid "org.jboss.seam.core.messages"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:392
+#, no-c-format
+msgid ""
+"A map containing internationalized messages rendered from message templates "
+"defined in the Seam resource bundle."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:398
+#, no-c-format
+msgid "org.jboss.seam.theme.themeSelector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:400
+#, no-c-format
+msgid ""
+"Supports selection of the theme either at configuration time, or by the user "
+"at runtime."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:405
+#, no-c-format
+msgid "<literal>select()</literal> &mdash; select the specified theme."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:410
+#, no-c-format
+msgid ""
+"<literal>theme.availableThemes</literal> &mdash; the list of defined themes."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:415
+#, no-c-format
+msgid "<literal>themeSelector.theme</literal> &mdash; the selected theme."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:420
+#, no-c-format
+msgid ""
+"<literal>themeSelector.themes</literal> &mdash; a list of "
+"<literal>SelectItem</literal>s representing the defined themes."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:425
+#, no-c-format
+msgid ""
+"<literal>themeSelector.cookieEnabled</literal> &mdash; specifies that the "
+"theme selection should be persisted via a cookie."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:433
+#, no-c-format
+msgid "org.jboss.seam.theme.theme"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:435
+#, no-c-format
+msgid "A map containing theme entries."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:447
+#, no-c-format
+msgid "Components for controlling conversations"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:448
+#, no-c-format
+msgid ""
+"The next group of components allow control of conversations by the "
+"application or user interface."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:453
+#, no-c-format
+msgid "org.jboss.seam.core.conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:455
+#, no-c-format
+msgid ""
+"API for application control of attributes of the current Seam conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:460 Components.xml:475
+#, no-c-format
+msgid "<literal>getId()</literal> &mdash; returns the current conversation id"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:465
+#, no-c-format
+msgid ""
+"<literal>isNested()</literal> &mdash; is the current conversation a nested "
+"conversation?"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:470
+#, no-c-format
+msgid ""
+"<literal>isLongRunning()</literal> &mdash; is the current conversation a "
+"long-running conversation?"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:480
+#, no-c-format
+msgid ""
+"<literal>getParentId()</literal> &mdash; returns the conversation id of the "
+"parent conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:485
+#, no-c-format
+msgid ""
+"<literal>getRootId()</literal> &mdash; returns the conversation id of the "
+"root conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:490
+#, no-c-format
+msgid ""
+"<literal>setTimeout(int timeout)</literal> &mdash; sets the timeout for the "
+"current conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:495
+#, no-c-format
+msgid ""
+"<literal>setViewId(String outcome)</literal> &mdash; sets the view id to be "
+"used when switching back to the current conversation from the conversation "
+"switcher, conversation list, or breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:500
+#, no-c-format
+msgid ""
+"<literal>setDescription(String description)</literal> &mdash; sets the "
+"description of the current conversation to be displayed in the conversation "
+"switcher, conversation list, or breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:505
+#, no-c-format
+msgid ""
+"<literal>redirect()</literal> &mdash; redirect to the last well-defined view "
+"id for this conversation (useful after login challenges)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:510
+#, no-c-format
+msgid ""
+"<literal>leave()</literal> &mdash; exit the scope of this conversation, "
+"without actually ending the conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:515
+#, no-c-format
+msgid ""
+"<literal>begin()</literal> &mdash; begin a long-running conversation "
+"(equivalent to <literal>@Begin</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:520
+#, no-c-format
+msgid ""
+"<literal>beginPageflow(String pageflowName)</literal> &mdash; begin a long-"
+"running conversation with a pageflow (equivalent to <literal>@Begin(pageflow="
+"\"...\")</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:525
+#, no-c-format
+msgid ""
+"<literal>end()</literal> &mdash; end a long-running conversation (equivalent "
+"to <literal>@End</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:530
+#, no-c-format
+msgid ""
+"<literal>pop()</literal> &mdash; pop the conversation stack, returning to "
+"the parent conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:535
+#, no-c-format
+msgid ""
+"<literal>root()</literal> &mdash; return to the root conversation of the "
+"conversation stack."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:540
+#, no-c-format
+msgid ""
+"<literal>changeFlushMode(FlushModeType flushMode)</literal> &mdash; change "
+"the flush mode of the conversation."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:548
+#, no-c-format
+msgid "org.jboss.seam.core.conversationList"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:550
+#, no-c-format
+msgid "Manager component for the conversation list."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:556
+#, no-c-format
+msgid "org.jboss.seam.core.conversationStack"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:558
+#, no-c-format
+msgid "Manager component for the conversation stack (breadcrumbs)."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:564
+#, no-c-format
+msgid "org.jboss.seam.core.switcher"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:566
+#, no-c-format
+msgid "The conversation switcher."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:578
+#, no-c-format
+msgid "jBPM-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:579
+#, no-c-format
+msgid "These components are for use with jBPM."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:584
+#, no-c-format
+msgid "org.jboss.seam.core.pageflow"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:586
+#, no-c-format
+msgid "API control of Seam pageflows."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:591
+#, no-c-format
+msgid ""
+"<literal>isInProcess()</literal> &mdash; returns <literal>true</literal> if "
+"there is currently a pageflow in process"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:596
+#, no-c-format
+msgid ""
+"<literal>getProcessInstance()</literal> &mdash; returns jBPM "
+"<literal>ProcessInstance</literal> for the current pageflow"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:601
+#, no-c-format
+msgid ""
+"<literal>begin(String pageflowName)</literal> &mdash; begin a pageflow in "
+"the context of the current conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:606
+#, no-c-format
+msgid ""
+"<literal>reposition(String nodeName)</literal> &mdash; reposition the "
+"current pageflow to a particular node"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:614
+#, no-c-format
+msgid "org.jboss.seam.core.actor"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:616
+#, no-c-format
+msgid ""
+"API for application control of attributes of the jBPM actor associated with "
+"the current session."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:621
+#, no-c-format
+msgid ""
+"<literal>setId(String actorId)</literal> &mdash; sets the jBPM actor id of "
+"the current user."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:626
+#, no-c-format
+msgid ""
+"<literal>getGroupActorIds()</literal> &mdash; returns a <literal>Set</"
+"literal> to which jBPM actor ids for the current users groups may be added."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:634
+#, no-c-format
+msgid "org.jboss.seam.core.transition"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:636
+#, no-c-format
+msgid ""
+"API for application control of the jBPM transition for the current task."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:641
+#, no-c-format
+msgid ""
+"<literal>setName(String transitionName)</literal> &mdash; sets the jBPM "
+"transition name to be used when the current task is ended via "
+"<literal>@EndTask</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:649
+#, no-c-format
+msgid "org.jboss.seam.core.businessProcess"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:651
+#, no-c-format
+msgid ""
+"API for programmatic control of the association between the conversation and "
+"business process."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:656
+#, no-c-format
+msgid ""
+"<literal>businessProcess.taskId</literal> &mdash; the id of the task "
+"associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:661
+#, no-c-format
+msgid ""
+"<literal>businessProcess.processId</literal> &mdash; the id of the process "
+"associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:666
+#, no-c-format
+msgid ""
+"<literal>businessProcess.hasCurrentTask()</literal> &mdash; is a task "
+"instance associated with the current conversation?"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:671
+#, no-c-format
+msgid ""
+"<literal>businessProcess.hasCurrentProcess()</literal> &mdash; is a process "
+"instance associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:676
+#, no-c-format
+msgid ""
+"<literal>createProcess(String name)</literal> &mdash; create an instance of "
+"the named process definition and associate it with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:681
+#, no-c-format
+msgid ""
+"<literal>startTask()</literal> &mdash; start the task associated with the "
+"current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:686
+#, no-c-format
+msgid ""
+"<literal>endTask(String transitionName)</literal> &mdash; end the task "
+"associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:691
+#, no-c-format
+msgid ""
+"<literal>resumeTask(Long id)</literal> &mdash; associate the task with the "
+"given id with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:696
+#, no-c-format
+msgid ""
+"<literal>resumeProcess(Long id)</literal> &mdash; associate the process with "
+"the given id with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:701
+#, no-c-format
+msgid ""
+"<literal>transition(String transitionName)</literal> &mdash; trigger the "
+"transition."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:709
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstance"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:711
+#, no-c-format
+msgid "Manager component for the jBPM <literal>TaskInstance</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:717
+#, no-c-format
+msgid "org.jboss.seam.core.processInstance"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:719
+#, no-c-format
+msgid "Manager component for the jBPM <literal>ProcessInstance</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:725
+#, no-c-format
+msgid "org.jboss.seam.core.jbpmContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:727
+#, no-c-format
+msgid "Manager component for an event-scoped <literal>JbpmContext</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:733
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstanceList"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:735
+#, no-c-format
+msgid "Manager component for the jBPM task list."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:741
+#, no-c-format
+msgid "org.jboss.seam.core.pooledTaskInstanceList"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:743
+#, no-c-format
+msgid "Manager component for the jBPM pooled task list."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:749
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstanceListForType"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:751
+#, no-c-format
+msgid "Manager component for the jBPM task lists."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:757
+#, no-c-format
+msgid "org.jboss.seam.core.pooledTask"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:759
+#, no-c-format
+msgid "Action handler for pooled task assignment."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:765
+#, no-c-format
+msgid ""
+"All of these components are installed whenever the component <literal>org."
+"jboss.seam.core.jbpm</literal> is installed."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:771
+#, no-c-format
+msgid "Security-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:772
+#, no-c-format
+msgid "These components relate to web-tier security."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:777
+#, no-c-format
+msgid "org.jboss.seam.core.userPrincipal"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:779
+#, no-c-format
+msgid "Manager component for the current user <literal>Principal</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:785
+#, no-c-format
+msgid "org.jboss.seam.core.isUserInRole"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:787
+#, no-c-format
+msgid ""
+"Allows JSF pages to choose to render a control, depending upon the roles "
+"available to the current principal. <literal>&lt;h:commandButton value=\"edit"
+"\" rendered=\"#{isUserInRole['admin']}\"/&gt;</literal>."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:796
+#, no-c-format
+msgid "JMS-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:797
+#, no-c-format
+msgid ""
+"These components are for use with managed <literal>TopicPublisher</literal>s "
+"and <literal>QueueSender</literal>s (see below)."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:802
+#, no-c-format
+msgid "org.jboss.seam.jms.queueSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:804
+#, no-c-format
+msgid "Manager component for a JMS <literal>QueueSession</literal> ."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:810
+#, no-c-format
+msgid "org.jboss.seam.jms.topicSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:812
+#, no-c-format
+msgid "Manager component for a JMS <literal>TopicSession</literal> ."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:821
+#, no-c-format
+msgid "Mail-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:822
+#, no-c-format
+msgid "These components are for use with Seam's Email support"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:827
+#, no-c-format
+msgid "org.jboss.seam.mail.mailSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:829
+#, no-c-format
+msgid "Manager component for a JavaMail <literal>Session</literal> ."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:834
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.host</literal> &mdash; the hostname "
+"of the SMTP server to use"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:839
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.port</literal> &mdash; the port of "
+"the SMTP server to use"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:844
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.username</literal> &mdash; the "
+"username to use to connect to the SMTP server."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:849
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.password</literal> &mdash; the "
+"password to use to connect to the SMTP server"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:854
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.debug</literal> &mdash; enable "
+"JavaMail debugging (very verbose)"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:859
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.sessionJndiName</literal> &mdash; "
+"name under which a javax.mail.Session is bound to JNDI"
+msgstr ""
+
+#. Tag: title
+#: Components.xml:870
+#, no-c-format
+msgid "Infrastructural components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:871
+#, no-c-format
+msgid ""
+"These components provide critical platform infrastructure. You can install a "
+"component by including its class name in the <literal>org.jboss.seam.core."
+"init.componentClasses</literal> configuration property."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:876
+#, no-c-format
+msgid "org.jboss.seam.core.init"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:878
+#, no-c-format
+msgid "Initialization settings for Seam. Always installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:883
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.jndiPattern</literal> &mdash; the JNDI "
+"pattern used for looking up session beans"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:888
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.debug</literal> &mdash; enable Seam debug "
+"mode"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:893
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.clientSideConversations</literal> &mdash; "
+"if set to <literal>true</literal>, Seam will save conversation context "
+"variables in the client instead of in the <literal>HttpSession</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:898
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.userTransactionName</literal> &mdash; the "
+"JNDI name to use when looking up the JTA <literal>UserTransaction</literal> "
+"object."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:906
+#, no-c-format
+msgid "org.jboss.seam.core.manager"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:908
+#, no-c-format
+msgid ""
+"Internal component for Seam page and conversation context management. Always "
+"installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:913
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationTimeout</literal> &mdash; "
+"the conversation context timeout in milliseconds."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:918
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.concurrentRequestTimeout</literal> "
+"&mdash; maximum wait time for a thread attempting to gain a lock on the long-"
+"running conversation context."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:923
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationIdParameter</literal> "
+"&mdash; the request parameter used to propagate the conversation id, default "
+"to <literal>conversationId</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:928
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationIsLongRunningParameter</"
+"literal> &mdash; the request parameter used to propagate information about "
+"whether the conversation is long-running, default to "
+"<literal>conversationIsLongRunning</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:936
+#, no-c-format
+msgid "org.jboss.seam.core.pages"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:938
+#, no-c-format
+msgid "Internal component for Seam workspace management. Always installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:943
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.pages.noConversationViewId</literal> &mdash; "
+"global setting for the view id to redirect to when a conversation entry is "
+"not found on the server side."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:951
+#, no-c-format
+msgid "org.jboss.seam.core.ejb"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:953
+#, no-c-format
+msgid ""
+"Bootstraps the JBoss Embeddable EJB3 container. Install as class "
+"<literal>org.jboss.seam.core.Ejb</literal>. This is useful when using Seam "
+"with EJB components outside the context of a Java EE 5 application server."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:956
+#, no-c-format
+msgid ""
+"The basic Embedded EJB configuration is defined in <literal>jboss-embedded-"
+"beans.xml</literal>. Additional microcontainer configuration (for example, "
+"extra datasources) may be specified by <literal>jboss-beans.xml</literal> or "
+"<literal>META-INF/jboss-beans.xml</literal> in the classpath."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:962
+#, no-c-format
+msgid "org.jboss.seam.core.microcontainer"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:964
+#, no-c-format
+msgid ""
+"Bootstraps the JBoss microcontainer. Install as class <literal>org.jboss."
+"seam.core.Microcontainer</literal>. This is useful when using Seam with "
+"Hibernate and no EJB components outside the context of a Java EE application "
+"server. The microcontainer can provide a partial EE environment with JNDI, "
+"JTA, a JCA datasource and Hibernate."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:967
+#, no-c-format
+msgid ""
+"The microcontainer configuration may be specified by <literal>jboss-beans."
+"xml</literal> or <literal>META-INF/jboss-beans.xml</literal> in the "
+"classpath."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:973
+#, no-c-format
+msgid "org.jboss.seam.core.jbpm"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:975
+#, no-c-format
+msgid ""
+"Bootstraps a <literal>JbpmConfiguration</literal>. Install as class "
+"<literal>org.jboss.seam.core.Jbpm</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:980
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.jbpm.processDefinitions</literal> &mdash; a "
+"list of resource names of jPDL files to be used for orchestration of "
+"business processes."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:985
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.jbpm.pageflowDefinitions</literal> &mdash; a "
+"list of resource names of jPDL files to be used for orchestration of "
+"conversation page flows."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:993
+#, no-c-format
+msgid "org.jboss.seam.core.conversationEntries"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:995
+#, no-c-format
+msgid ""
+"Internal session-scoped component recording the active long-running "
+"conversations between requests."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1001
+#, no-c-format
+msgid "org.jboss.seam.core.facesPage"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1003
+#, no-c-format
+msgid ""
+"Internal page-scoped component recording the conversation context associated "
+"with a page."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1009
+#, no-c-format
+msgid "org.jboss.seam.core.persistenceContexts"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1011
+#, no-c-format
+msgid ""
+"Internal component recording the persistence contexts which were used in the "
+"current conversation."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1017
+#, no-c-format
+msgid "org.jboss.seam.jms.queueConnection"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1019
+#, no-c-format
+msgid ""
+"Manages a JMS <literal>QueueConnection</literal>. Installed whenever managed "
+"managed <literal>QueueSender</literal> is installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1024
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.jms.queueConnection.queueConnectionFactoryJndiName</"
+"literal> &mdash; the JNDI name of a JMS <literal>QueueConnectionFactory</"
+"literal>. Default to <literal>UIL2ConnectionFactory</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1032
+#, no-c-format
+msgid "org.jboss.seam.jms.topicConnection"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1034
+#, no-c-format
+msgid ""
+"Manages a JMS <literal>TopicConnection</literal>. Installed whenever managed "
+"managed <literal>TopicPublisher</literal> is installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1039
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.jms.topicConnection.topicConnectionFactoryJndiName</"
+"literal> &mdash; the JNDI name of a JMS <literal>TopicConnectionFactory</"
+"literal>. Default to <literal>UIL2ConnectionFactory</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1047
+#, no-c-format
+msgid "org.jboss.seam.persistence.persistenceProvider"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1049
+#, no-c-format
+msgid "Abstraction layer for non-standardized features of JPA provider."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1055
+#, no-c-format
+msgid "org.jboss.seam.core.validation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1057
+#, no-c-format
+msgid "Internal component for Hibernate Validator support."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1063
+#, no-c-format
+msgid "org.jboss.seam.debug.introspector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1065 Components.xml:1073
+#, no-c-format
+msgid "Support for the Seam Debug Page."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1071
+#, no-c-format
+msgid "org.jboss.seam.debug.contexts"
+msgstr ""
+
+#. Tag: title
+#: Components.xml:1082
+#, no-c-format
+msgid "Special components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1083
+#, no-c-format
+msgid ""
+"Certain special Seam component classes are installable multiple times under "
+"names specified in the Seam configuration. For example, the following lines "
+"in <literal>components.xml</literal> install and configure two Seam "
+"components:"
+msgstr ""
+
+#. Tag: programlisting
+#: Components.xml:1086
+#, no-c-format
+msgid ""
+"&lt;component name=\"bookingDatabase\"\n"
+"          class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"    &lt;property name=\"persistenceUnitJndiName\"&gt;java:/comp/emf/"
+"bookingPersistence&lt;/property&gt;\n"
+"&lt;/component&gt;\n"
+"\n"
+"&lt;component name=\"userDatabase\"\n"
+"          class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"    &lt;property name=\"persistenceUnitJndiName\"&gt;java:/comp/emf/"
+"userPersistence&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1087
+#, no-c-format
+msgid ""
+"The Seam component names are <literal>bookingDatabase</literal> and "
+"<literal>userDatabase</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1092
+#, no-c-format
+msgid "&lt;entityManager&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1093
+#, no-c-format
+msgid "org.jboss.seam.core.ManagedPersistenceContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1095
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed <literal>EntityManager</"
+"literal> with an extended persistence context."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1100
+#, no-c-format
+msgid ""
+"<literal>&lt;entityManager&gt;.entityManagerFactory</literal> &mdash; a "
+"value binding expression that evaluates to an instance of "
+"<literal>EntityManagerFactory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1103
+#, no-c-format
+msgid ""
+"<literal>&lt;entityManager&gt;.persistenceUnitJndiName</literal> &mdash; the "
+"JNDI name of the entity manager factory, default to <literal>java:/&lt;"
+"managedPersistenceContext&gt;</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1111
+#, no-c-format
+msgid "&lt;entityManagerFactory&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1112
+#, no-c-format
+msgid "org.jboss.seam.core.EntityManagerFactory"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1114
+#, no-c-format
+msgid ""
+"Manages a JPA <literal>EntityManagerFactory</literal>. This is most useful "
+"when using JPA outside of an EJB 3.0 supporting environment."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1119
+#, no-c-format
+msgid ""
+"<literal>entityManagerFactory.persistenceUnitName</literal> &mdash; the name "
+"of the persistence unit."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1124 Components.xml:1162
+#, no-c-format
+msgid "See the API JavaDoc for further configuration properties."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1130
+#, no-c-format
+msgid "&lt;session&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1131
+#, no-c-format
+msgid "org.jboss.seam.core.ManagedSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1133
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed Hibernate "
+"<literal>Session</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1138
+#, no-c-format
+msgid ""
+"<literal>&lt;session&gt;.sessionFactory</literal> &mdash; a value binding "
+"expression that evaluates to an instance of <literal>SessionFactory</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1141
+#, no-c-format
+msgid ""
+"<literal>&lt;session&gt;.sessionFactoryJndiName</literal> &mdash; the JNDI "
+"name of the session factory, default to <literal>java:/&lt;managedSession&gt;"
+"</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1149
+#, no-c-format
+msgid "&lt;sessionFactory&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1150
+#, no-c-format
+msgid "org.jboss.seam.core.HibernateSessionFactory"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1152
+#, no-c-format
+msgid "Manages a Hibernate <literal>SessionFactory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1157
+#, no-c-format
+msgid ""
+"<literal>&lt;sessionFactory&gt;.cfgResourceName</literal> &mdash; the path "
+"to the configuration file. Default to <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1168
+#, no-c-format
+msgid "&lt;managedQueueSender&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1169
+#, no-c-format
+msgid "org.jboss.seam.jms.ManagedQueueSender"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1171
+#, no-c-format
+msgid ""
+"Manager component for an event scoped managed JMS <literal>QueueSender</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1176
+#, no-c-format
+msgid ""
+"<literal>&lt;managedQueueSender&gt;.queueJndiName</literal> &mdash; the JNDI "
+"name of the JMS queue."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1184
+#, no-c-format
+msgid "&lt;managedTopicPublisher&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1185
+#, no-c-format
+msgid "org.jboss.seam.jms.ManagedTopicPublisher"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1187
+#, no-c-format
+msgid ""
+"Manager component for an event scoped managed JMS <literal>TopicPublisher</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1192
+#, no-c-format
+msgid ""
+"<literal>&lt;managedTopicPublisher&gt;.topicJndiName</literal> &mdash; the "
+"JNDI name of the JMS topic."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1200
+#, no-c-format
+msgid "&lt;managedWorkingMemory&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1201
+#, no-c-format
+msgid "org.jboss.seam.drools.ManagedWorkingMemory"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1203
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed Drools "
+"<literal>WorkingMemory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1208
+#, no-c-format
+msgid ""
+"<literal>&lt;managedWorkingMemory&gt;.ruleBase</literal> &mdash; a value "
+"expression that evaluates to an instance of <literal>RuleBase</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1216
+#, no-c-format
+msgid "&lt;ruleBase&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1217
+#, no-c-format
+msgid "org.jboss.seam.drools.RuleBase"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1219
+#, no-c-format
+msgid ""
+"Manager component for an application scoped Drools <literal>RuleBase</"
+"literal>. <emphasis>Note that this is not really intended for production "
+"usage, since it does not support dynamic installation of new rules.</"
+"emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1224
+#, no-c-format
+msgid ""
+"<literal>&lt;ruleBase&gt;.ruleFiles</literal> &mdash; a list of files "
+"containing Drools rules."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1227
+#, no-c-format
+msgid ""
+"<literal>&lt;ruleBase&gt;.dslFile</literal> &mdash; a Drools DSL definition."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1235
+#, no-c-format
+msgid "&lt;entityHome&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1236
+#, no-c-format
+msgid "org.jboss.seam.framework.EntityHome"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1240
+#, no-c-format
+msgid "&lt;hibernateEntityHome&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1241
+#, no-c-format
+msgid "org.jboss.seam.framework.HibernateEntityHome"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1245
+#, no-c-format
+msgid "&lt;entityQuery&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1246
+#, no-c-format
+msgid "org.jboss.seam.framework.EntityQuery"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1250
+#, no-c-format
+msgid "&lt;hibernateEntityQuery&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1251
+#, no-c-format
+msgid "org.jboss.seam.framework.HibernateEntityQuery"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Concepts.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Concepts.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Concepts.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1922 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Concepts.xml:10
+#, no-c-format
+msgid "The contextual component model"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:11
+#, no-c-format
+msgid ""
+"The two core concepts in Seam are the notion of a <emphasis>context</"
+"emphasis> and the notion of a <emphasis>component</emphasis>. Components are "
+"stateful objects, usually EJBs, and an instance of a component is associated "
+"with a context, and given a name in that context. <emphasis>Bijection</"
+"emphasis> provides a mechanism for aliasing internal component names "
+"(instance variables) to contextual names, allowing component trees to be "
+"dynamically assembled, and reassembled by Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:14
+#, no-c-format
+msgid "Let's start by describing the contexts built in to Seam."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:17
+#, no-c-format
+msgid "Seam contexts"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:18
+#, no-c-format
+msgid ""
+"Seam contexts are created and destroyed by the framework. The application "
+"does not control context demarcation via explicit Java API calls. Context "
+"are usually implicit. In some cases, however, contexts are demarcated via "
+"annotations."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:21
+#, no-c-format
+msgid "The basic Seam contexts are:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:26
+#, no-c-format
+msgid "<para>Stateless context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:31
+#, no-c-format
+msgid "Event (or request) context"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:36 Concepts.xml:151
+#, no-c-format
+msgid "<para>Page context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:41 Concepts.xml:156
+#, no-c-format
+msgid "<para>Conversation context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:46 Concepts.xml:161
+#, no-c-format
+msgid "<para>Session context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:51 Concepts.xml:166
+#, no-c-format
+msgid "<para>Business process context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:56 Concepts.xml:171
+#, no-c-format
+msgid "<para>Application context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:61
+#, no-c-format
+msgid ""
+"You will recognize some of these contexts from servlet and related "
+"specifications. However, two of them might be new to you: "
+"<emphasis>conversation context</emphasis>, and <emphasis>business process "
+"context</emphasis>. One reason state management in web applications is so "
+"fragile and error-prone is that the three built-in contexts (request, "
+"session and application) are not especially meaningful from the point of "
+"view of the business logic. A user login session, for example, is a fairly "
+"arbitrary construct in terms of the actual application work flow. Therefore, "
+"most Seam components are scoped to the conversation or business process "
+"contexts, since they are the contexts which are most meaningful in terms of "
+"the application."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:64
+#, no-c-format
+msgid "Let's look at each context in turn."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:67
+#, no-c-format
+msgid "<title>Stateless context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:68
+#, no-c-format
+msgid ""
+"Components which are truly stateless (stateless session beans, primarily) "
+"always live in the stateless context (this is really a non-context). "
+"Stateless components are not very interesting, and are arguably not very "
+"object-oriented. Nevertheless, they are important and often useful."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:71
+#, no-c-format
+msgid "<title>Event context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:72
+#, no-c-format
+msgid ""
+"The event context is the \"narrowest\" stateful context, and is a "
+"generalization of the notion of the web request context to cover other kinds "
+"of events. Nevertheless, the event context associated with the lifecycle of "
+"a JSF request is the most important example of an event context, and the one "
+"you will work with most often. Components associated with the event context "
+"are destroyed at the end of the request, but their state is available and "
+"well-defined for at least the lifecycle of the request."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:75
+#, no-c-format
+msgid ""
+"When you invoke a Seam component via RMI, or Seam Remoting, the event "
+"context is created and destroyed just for the invocation."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:78
+#, no-c-format
+msgid "<title>Page context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:79
+#, no-c-format
+msgid ""
+"The page context allows you to associate state with a particular instance of "
+"a rendered page. You can initialize state in your event listener, or while "
+"actually rendering the page, and then have access to it from any event that "
+"originates from that page. This is especially useful for functionality like "
+"clickable lists, where the list is backed by changing data on the server "
+"side. The state is actually serialized to the client, so this construct is "
+"extremely robust with respect to multi-window operation and the back button."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:82
+#, no-c-format
+msgid "<title>Conversation context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:83
+#, no-c-format
+msgid ""
+"The conversation context is a truly central concept in Seam. A "
+"<emphasis>conversation</emphasis> is a unit of work from the point of view "
+"of the user. It might span several interactions with the user, several "
+"requests, and several database transactions. But to the user, a conversation "
+"solves a single problem. For example, \"book hotel\", \"approve contract\", "
+"\"create order\" are all conversations. You might like to think of a "
+"conversation implementing a single \"use case\" or \"user story\", but the "
+"relationship is not necessarily quite exact."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:86
+#, no-c-format
+msgid ""
+"A conversation holds state associated with \"what the user is doing now, in "
+"this window\". A single user may have multiple conversations in progress at "
+"any point in time, usually in multiple windows. The conversation context "
+"allows us to ensure that state from the different conversations does not "
+"collide and cause bugs."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:89
+#, no-c-format
+msgid ""
+"It might take you some time to get used to thinking of applications in terms "
+"of conversations. But once you get used to it, we think you'll love the "
+"notion, and never be able to not think in terms of conversations again!"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:92
+#, no-c-format
+msgid ""
+"Some conversations last for just a single request. Conversations that span "
+"multiple requests must be demarcated using annotations provided by Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:95
+#, no-c-format
+msgid ""
+"Some conversations are also <emphasis>tasks</emphasis>. A task is a "
+"conversation that is significant in terms of a long-running business "
+"process, and has the potential to trigger a business process state "
+"transition when it is successfully completed. Seam provides a special set of "
+"annotations for task demarcation."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:98
+#, no-c-format
+msgid ""
+"Conversations may be <emphasis>nested</emphasis>, with one conversation "
+"taking place \"inside\" a wider conversation. This is an advanced feature."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:101
+#, no-c-format
+msgid ""
+"Usually, conversation state is actually held by Seam in the servlet session "
+"between requests. Seam implements configurable <emphasis>conversation "
+"timeout</emphasis>, automatically destroying inactive conversations, and "
+"thus ensuring that the state held by a single user login session does not "
+"grow without bound if the user abandons conversations."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:104
+#, no-c-format
+msgid ""
+"Seam serializes processing of concurrent requests that take place in the "
+"same long-running conversation context, in the same process."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:107
+#, no-c-format
+msgid ""
+"Alternatively, Seam may be configured to keep conversational state in the "
+"client browser."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:110
+#, no-c-format
+msgid "<title>Session context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:111
+#, no-c-format
+msgid ""
+"A session context holds state associated with the user login session. While "
+"there are some cases where it is useful to share state between several "
+"conversations, we generally frown on the use of session context for holding "
+"components other than global information about the logged in user."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:114
+#, no-c-format
+msgid ""
+"In a JSR-168 portal environment, the session context represents the portlet "
+"session."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:117
+#, no-c-format
+msgid "<title>Business process context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:118
+#, no-c-format
+msgid ""
+"The business process context holds state associated with the long running "
+"business process. This state is managed and made persistent by the BPM "
+"engine (JBoss jBPM). The business process spans multiple interactions with "
+"multiple users, so this state is shared between multiple users, but in a "
+"well-defined manner. The current task determines the current business "
+"process instance, and the lifecycle of the business process is defined "
+"externally using a <emphasis>process definition language</emphasis>, so "
+"there are no special annotations for business process demarcation."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:121
+#, no-c-format
+msgid "<title>Application context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:122
+#, no-c-format
+msgid ""
+"The application context is the familiar servlet context from the servlet "
+"spec. Application context is mainly useful for holding static information "
+"such as configuration data, reference data or metamodels. For example, Seam "
+"stores its own configuration and metamodel in the application context."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:125
+#, no-c-format
+msgid "Context variables"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:126
+#, no-c-format
+msgid ""
+"A context defines a namespace, a set of <emphasis>context variables</"
+"emphasis>. These work much the same as session or request attributes in the "
+"servlet spec. You may bind any value you like to a context variable, but "
+"usually we bind Seam component instances to context variables."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:129
+#, no-c-format
+msgid ""
+"So, within a context, a component instance is identified by the context "
+"variable name (this is usually, but not always, the same as the component "
+"name). You may programatically access a named component instance in a "
+"particular scope via the <literal>Contexts</literal> class, which provides "
+"access to several thread-bound instances of the <literal>Context</literal> "
+"interface:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:132
+#, no-c-format
+msgid "User user = (User) Contexts.getSessionContext().get(\"user\");"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:133
+#, no-c-format
+msgid "You may also set or change the value associated with a name:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:136
+#, no-c-format
+msgid "Contexts.getSessionContext().set(\"user\", user);"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:137
+#, no-c-format
+msgid ""
+"Usually, however, we obtain components from a context via injection, and put "
+"component instances into a context via outjection."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:140
+#, no-c-format
+msgid "Context search priority"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:141
+#, no-c-format
+msgid ""
+"Sometimes, as above, component instances are obtained from a particular "
+"known scope. Other times, all stateful scopes are searched, in "
+"<emphasis>priority order</emphasis>. The order is as follows:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:146
+#, no-c-format
+msgid "<para>Event context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:176
+#, no-c-format
+msgid ""
+"You can perform a priority search by calling <literal>Contexts."
+"lookupInStatefulContexts()</literal>. Whenever you access a component by "
+"name from a JSF page, a priority search occurs."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:179
+#, no-c-format
+msgid "Concurrency model"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:180
+#, no-c-format
+msgid ""
+"Neither the servlet nor EJB specifications define any facilities for "
+"managing concurrent requests originating from the same client. The servlet "
+"container simply lets all threads run concurrently and leaves enforcing "
+"threadsafeness to application code. The EJB container allows stateless "
+"components to be accessed concurrently, and throws an exception if multiple "
+"threads access a stateful session bean."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:183
+#, no-c-format
+msgid ""
+"This behavior might have been okay in old-style web applications which were "
+"based around fine-grained, synchronous requests. But for modern applications "
+"which make heavy use of many fine-grained, asynchronous (AJAX) requests, "
+"concurrency is a fact of life, and must be supported by the programming "
+"model. Seam weaves a concurrency management layer into its context model."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:186
+#, no-c-format
+msgid ""
+"The Seam session and application contexts are multithreaded. Seam will allow "
+"concurrent requests in a context to be processed concurrently. The event and "
+"page contexts are by nature single threaded. The business process context is "
+"strictly speaking multi-threaded, but in practice concurrency is "
+"sufficiently rare that this fact may be disregarded most of the time. "
+"Finally, Seam enforces a <emphasis>single thread per conversation per "
+"process</emphasis> model for the conversation context by serializing "
+"concurrent requests in the same long-running conversation context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:189
+#, no-c-format
+msgid ""
+"Since the session context is multithreaded, and often contains volatile "
+"state, session scope components are always protected by Seam from concurrent "
+"access. Seam serializes requests to session scope session beans and "
+"JavaBeans by default (and detects and breaks any deadlocks that occur). This "
+"is not the default behaviour for application scoped components however, "
+"since application scoped components do not usually hold volatile state and "
+"because synchronization at the global level is <emphasis>extremely</"
+"emphasis> expensive. However, you can force a serialized threading model on "
+"any session bean or JavaBean component by adding the <literal>@Synchronized</"
+"literal> annotation."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:192
+#, no-c-format
+msgid ""
+"This concurrency model means that AJAX clients can safely use volatile "
+"session and conversational state, without the need for any special work on "
+"the part of the developer."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:195
+#, no-c-format
+msgid "Seam components"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:196
+#, no-c-format
+msgid ""
+"Seam components are POJOs (Plain Old Java Objects). In particular, they are "
+"JavaBeans or EJB 3.0 enterprise beans. While Seam does not require that "
+"components be EJBs and can even be used without an EJB 3.0 compliant "
+"container, Seam was designed with EJB 3.0 in mind and includes deep "
+"integration with EJB 3.0. Seam supports the following <emphasis>component "
+"types</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:201
+#, no-c-format
+msgid "EJB 3.0 stateless session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:206
+#, no-c-format
+msgid "EJB 3.0 stateful session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:211
+#, no-c-format
+msgid "EJB 3.0 entity beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:216
+#, no-c-format
+msgid "<para>JavaBeans</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:221
+#, no-c-format
+msgid "EJB 3.0 message-driven beans"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:226
+#, no-c-format
+msgid "Stateless session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:227
+#, no-c-format
+msgid ""
+"Stateless session bean components are not able to hold state across multiple "
+"invocations. Therefore, they usually work by operating upon the state of "
+"other components in the various Seam contexts. They may be used as JSF "
+"action listeners, but cannot provide properties to JSF components for "
+"display."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:230
+#, no-c-format
+msgid "Stateless session beans always live in the stateless context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:233
+#, no-c-format
+msgid ""
+"Stateless session beans are the least interesting kind of Seam component."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:236
+#, no-c-format
+msgid "Stateful session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:237
+#, no-c-format
+msgid ""
+"Stateful session bean components are able to hold state not only across "
+"multiple invocations of the bean, but also across multiple requests. "
+"Application state that does not belong in the database should usually be "
+"held by stateful session beans. This is a major difference between Seam and "
+"many other web application frameworks. Instead of sticking information about "
+"the current conversation directly in the <literal>HttpSession</literal>, you "
+"should keep it in instance variables of a stateful session bean that is "
+"bound to the conversation context. This allows Seam to manage the lifecycle "
+"of this state for you, and ensure that there are no collisions between state "
+"relating to different concurrent conversations."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:240
+#, no-c-format
+msgid ""
+"Stateful session beans are often used as JSF action listener, and as backing "
+"beans that provide properties to JSF components for display or form "
+"submission."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:243
+#, no-c-format
+msgid ""
+"By default, stateful session beans are bound to the conversation context. "
+"They may never be bound to the page or stateless contexts."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:246
+#, no-c-format
+msgid ""
+"Concurrent requests to session-scoped stateful session beans are always "
+"serialized by Seam."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:249
+#, no-c-format
+msgid "Entity beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:250
+#, no-c-format
+msgid ""
+"Entity beans may be bound to a context variable and function as a seam "
+"component. Because entities have a persistent identity in addition to their "
+"contextual identity, entity instances are usually bound explicitly in Java "
+"code, rather than being instantiated implicitly by Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:253
+#, no-c-format
+msgid ""
+"Entity bean components do not support bijection or context demarcation. Nor "
+"does invocation of an entity bean trigger validation."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:256
+#, no-c-format
+msgid ""
+"Entity beans are not usually used as JSF action listeners, but do often "
+"function as backing beans that provide properties to JSF components for "
+"display or form submission. In particular, it is common to use an entity as "
+"a backing bean, together with a stateless session bean action listener to "
+"implement create/update/delete type functionality."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:259
+#, no-c-format
+msgid ""
+"By default, entity beans are bound to the conversation context. They may "
+"never be bound to the stateless context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:262
+#, no-c-format
+msgid ""
+"Note that it in a clustered environment is somewhat less efficient to bind "
+"an entity bean directly to a conversation or session scoped Seam context "
+"variable than it would be to hold a reference to the entity bean in a "
+"stateful session bean. For this reason, not all Seam applications define "
+"entity beans to be Seam components."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:265
+#, no-c-format
+msgid "<title>JavaBeans</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:266
+#, no-c-format
+msgid ""
+"Javabeans may be used just like a stateless or stateful session bean. "
+"However, they do not provide the functionality of a session bean "
+"(declarative transaction demarcation, declarative security, efficient "
+"clustered state replication, EJB 3.0 persistence, timeout methods, etc)."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:269
+#, no-c-format
+msgid ""
+"In a later chapter, we show you how to use Seam and Hibernate without an EJB "
+"container. In this use case, components are JavaBeans instead of session "
+"beans. Note, however, that in many application servers it is somewhat less "
+"efficient to cluster conversation or session scoped Seam JavaBean components "
+"than it is to cluster stateful session bean components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:272
+#, no-c-format
+msgid "By default, JavaBeans are bound to the event context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:275
+#, no-c-format
+msgid ""
+"Concurrent requests to session-scoped JavaBeans are always serialized by "
+"Seam."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:278
+#, no-c-format
+msgid "Message-driven beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:279
+#, no-c-format
+msgid ""
+"Message-driven beans may function as a seam component. However, message-"
+"driven beans are called quite differently to other Seam components - instead "
+"of invoking them via the context variable, they listen for messages sent to "
+"a JMS queue or topic."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:282
+#, no-c-format
+msgid ""
+"Message-driven beans may not be bound to a Seam context. Nor do they have "
+"access to the session or conversation state of their \"caller\". However, "
+"they do support bijection and some other Seam functionality."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:285
+#, no-c-format
+msgid "Interception"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:286
+#, no-c-format
+msgid ""
+"In order to perform its magic (bijection, context demarcation, validation, "
+"etc), Seam must intercept component invocations. For JavaBeans, Seam is in "
+"full control of instantiation of the component, and no special configuration "
+"is needed. For entity beans, interception is not required since bijection "
+"and context demarcation are not defined. For session beans, we must register "
+"an EJB interceptor for the session bean component. We could use an "
+"annotation, as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:289
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:290
+#, no-c-format
+msgid ""
+"But a much better way is to define the interceptor in <literal>ejb-jar.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:293
+#, no-c-format
+msgid ""
+"&lt;interceptors&gt;\n"
+"   &lt;interceptor&gt;\n"
+"      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"   &lt;/interceptor&gt;\n"
+"&lt;/interceptors&gt;\n"
+"   \n"
+"&lt;assembly-descriptor&gt;\n"
+"   &lt;interceptor-binding&gt;\n"
+"      &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"   &lt;/interceptor-binding&gt;\n"
+"&lt;/assembly-descriptor&gt;"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:294
+#, no-c-format
+msgid "Component names"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:295
+#, no-c-format
+msgid ""
+"All seam components need a name. We can assign a name to a component using "
+"the <literal>@Name</literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:298
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:299
+#, no-c-format
+msgid ""
+"This name is the <emphasis>seam component name</emphasis> and is not related "
+"to any other name defined by the EJB specification. However, seam component "
+"names work just like JSF managed bean names and you can think of the two "
+"concepts as identical."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:302
+#, no-c-format
+msgid ""
+"<literal>@Name</literal> is not the only way to define a component name, but "
+"we always need to specify the name <emphasis>somewhere</emphasis>. If we "
+"don't, then none of the other Seam annotations will function."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:305
+#, no-c-format
+msgid ""
+"Just like in JSF, a seam component instance is usually bound to a context "
+"variable with the same name as the component name. So, for example, we would "
+"access the <literal>LoginAction</literal> using <literal>Contexts."
+"getStatelessContext().get(\"loginAction\")</literal>. In particular, "
+"whenever Seam itself instantiates a component, it binds the new instance to "
+"a variable with the component name. However, again like JSF, it is possible "
+"for the application to bind a component to some other context variable by "
+"programmatic API call. This is only useful if a particular component serves "
+"more than one role in the system. For example, the currently logged in "
+"<literal>User</literal> might be bound to the <literal>currentUser</literal> "
+"session context variable, while a <literal>User</literal> that is the "
+"subject of some administration functionality might be bound to the "
+"<literal>user</literal> conversation context variable."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:308
+#, no-c-format
+msgid ""
+"For very large applications, and for built-in seam components, qualified "
+"names are often used."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:311
+#, no-c-format
+msgid ""
+"@Name(\"com.jboss.myapp.loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:312
+#, no-c-format
+msgid ""
+"We may use the qualified component name both in Java code and in JSF's "
+"expression language:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:315
+#, no-c-format
+msgid ""
+"&lt;h:commandButton type=\"submit\" value=\"Login\"\n"
+"                 action=\"#{com.jboss.myapp.loginAction.login}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:316
+#, no-c-format
+msgid ""
+"Since this is noisy, Seam also provides a means of aliasing a qualified name "
+"to a simple name. Add a line like this to the <literal>components.xml</"
+"literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:319
+#, no-c-format
+msgid ""
+"&lt;factory name=\"loginAction\" scope=\"STATELESS\" value=\"#{com.jboss."
+"myapp.loginAction}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:320
+#, no-c-format
+msgid ""
+"All of the built-in Seam components have qualified names, but most of them "
+"are aliased to a simple name by the <literal>components.xml</literal> file "
+"included in the Seam jar."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:323
+#, no-c-format
+msgid "Defining the component scope"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:324
+#, no-c-format
+msgid ""
+"We can override the default scope (context) of a component using the "
+"<literal>@Scope</literal> annotation. This lets us define what context a "
+"component instance is bound to, when it is instantiated by Seam."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:327
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(SESSION)\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:328
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.ScopeType</literal> defines an enumeration of "
+"possible scopes."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:331
+#, no-c-format
+msgid "Components with multiple roles"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:332
+#, no-c-format
+msgid ""
+"Some Seam component classes can fulfill more than one role in the system. "
+"For example, we often have a <literal>User</literal> class which is usually "
+"used as a session-scoped component representing the current user but is used "
+"in user administration screens as a conversation-scoped component. The "
+"<literal>@Role</literal> annotation lets us define an additional named role "
+"for a component, with a different scope&mdash;it lets us bind the same "
+"component class to different context variables. (Any Seam component "
+"<emphasis>instance</emphasis> may be bound to multiple context variables, "
+"but this lets us do it at the class level, and take advantage of auto-"
+"instantiation.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:335
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(CONVERSATION)\n"
+"@Role(name=\"currentUser\", scope=SESSION)\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:336
+#, no-c-format
+msgid ""
+"The <literal>@Roles</literal> annotation lets us specify as many additional "
+"roles as we like."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:339
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(CONVERSATION)\n"
+"@Roles({@Role(name=\"currentUser\", scope=SESSION)\n"
+"        @Role(name=\"tempUser\", scope=EVENT)})\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:340
+#, no-c-format
+msgid "Built-in components"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:341
+#, no-c-format
+msgid ""
+"Like many good frameworks, Seam eats its own dogfood and is implemented "
+"mostly as a set of built-in Seam interceptors (see later) and Seam "
+"components. This makes it easy for applications to interact with built-in "
+"components at runtime or even customize the basic functionality of Seam by "
+"replacing the built-in components with custom implementations. The built-in "
+"components are defined in the Seam namespace <literal>org.jboss.seam.core</"
+"literal> and the Java package of the same name."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:344
+#, no-c-format
+msgid ""
+"The built-in components may be injected, just like any Seam components, but "
+"they also provide convenient static <literal>instance()</literal> methods:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:347
+#, no-c-format
+msgid "FacesMessages.instance().add(\"Welcome back, #{user.name}!\");"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:348
+#, no-c-format
+msgid ""
+"Seam was designed to integrate tightly in a Java EE 5 environment. However, "
+"we understand that there are many projects which are not running in a full "
+"EE environment. We also realize the critical importance of easy unit and "
+"integration testing using frameworks such as TestNG and JUnit. So, we've "
+"made it easy to run Seam in Java SE environments by allowing you to boostrap "
+"certain critical infrastructure normally only found in EE environments by "
+"installing built-in Seam components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:351
+#, no-c-format
+msgid ""
+"For example, you can run your EJB3 components in Tomcat or an integration "
+"test suite just by installing the built-in component <literal>org.jboss.seam."
+"core.ejb</literal>, which automatically bootstraps the JBoss Embeddable EJB3 "
+"container and deploys your EJB components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:354
+#, no-c-format
+msgid ""
+"Or, if you're not quite ready for the Brave New World of EJB 3.0, you can "
+"write a Seam application that uses only JavaBean components, together with "
+"Hibernate3 for persistence, by installing a built-in component that manages "
+"a Hibernate <literal>SessionFactory</literal>. When using Hibernate outside "
+"of a J2EE environment, you will also probably need a JTA transaction manager "
+"and JNDI server, which are available via the built-in component <literal>org."
+"jboss.seam.core.microcontainer</literal>. This lets you use the bulletproof "
+"JTA/JCA pooling datasource from JBoss application server in an SE "
+"environment like Tomcat!"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:357
+#, no-c-format
+msgid "Bijection"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:358
+#, no-c-format
+msgid ""
+"<emphasis>Dependency injection</emphasis> or <emphasis>inversion of control</"
+"emphasis> is by now a familiar concept to most Java developers. Dependency "
+"injection allows a component to obtain a reference to another component by "
+"having the container \"inject\" the other component to a setter method or "
+"instance variable. In all dependency injection implementations that we have "
+"seen, injection occurs when the component is constructed, and the reference "
+"does not subsequently change for the lifetime of the component instance. For "
+"stateless components, this is reasonable. From the point of view of a "
+"client, all instances of a particular stateless component are "
+"interchangeable. On the other hand, Seam emphasizes the use of stateful "
+"components. So traditional dependency injection is no longer a very useful "
+"construct. Seam introduces the notion of <emphasis>bijection</emphasis> as a "
+"generalization of injection. In contrast to injection, bijection is:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:363
+#, no-c-format
+msgid ""
+"<emphasis>contextual</emphasis> - bijection is used to assemble stateful "
+"components from various different contexts (a component from a \"wider\" "
+"context may even have a reference to a component from a \"narrower\" context)"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:368
+#, no-c-format
+msgid ""
+"<emphasis>bidirectional</emphasis> - values are injected from context "
+"variables into attributes of the component being invoked, and also "
+"<emphasis>outjected</emphasis> from the component attributes back out to the "
+"context, allowing the component being invoked to manipulate the values of "
+"contextual variables simply by setting its own instance variables"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:373
+#, no-c-format
+msgid ""
+"<emphasis>dynamic</emphasis> - since the value of contextual variables "
+"changes over time, and since Seam components are stateful, bijection takes "
+"place every time a component is invoked"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:378
+#, no-c-format
+msgid ""
+"In essence, bijection lets you alias a context variable to a component "
+"instance variable, by specifying that the value of the instance variable is "
+"injected, outjected, or both. Of course, we use annotations to enable "
+"bijection."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:381
+#, no-c-format
+msgid ""
+"The <literal>@In</literal> annotation specifies that a value should be "
+"injected, either into an instance variable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:384
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:385
+#, no-c-format
+msgid "or into a setter method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:388
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @In\n"
+"    public void setUser(User user) {\n"
+"        this.user=user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:389
+#, no-c-format
+msgid ""
+"By default, Seam will do a priority search of all contexts, using the name "
+"of the property or instance variable that is being injected. You may wish to "
+"specify the context variable name explicitly, using, for example, "
+"<literal>@In(\"currentUser\")</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:392
+#, no-c-format
+msgid ""
+"If you want Seam to create an instance of the component when there is no "
+"existing component instance bound to the named context variable, you should "
+"specify <literal>@In(create=true)</literal>. If the value is optional (it "
+"can be null), specify <literal>@In(required=false)</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:395
+#, no-c-format
+msgid ""
+"For some components, it can be repetitive to have to specify <literal>@In"
+"(create=true)</literal> everywhere they are used. In such cases, you can "
+"annotate the component <literal>@AutoCreate</literal>, and then it will "
+"always be created, whenever needed, even without the explicit use of "
+"<literal>create=true</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:398
+#, no-c-format
+msgid "You can even inject the value of an expression:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:401
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In(\"#{user.username}\") String username;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:402
+#, no-c-format
+msgid ""
+"(There is much more information about component lifecycle and injection in "
+"the next chapter.)"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:405
+#, no-c-format
+msgid ""
+"The <literal>@Out</literal> annotation specifies that an attribute should be "
+"outjected, either from an instance variable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:408
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @Out User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:409
+#, no-c-format
+msgid "or from a getter method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:412
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @Out\n"
+"    public User getUser() {\n"
+"        return user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:413
+#, no-c-format
+msgid "An attribute may be both injected and outjected:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:416
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In @Out User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:417
+#, no-c-format
+msgid "<para>or:</para>"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:420
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @In\n"
+"    public void setUser(User user) {\n"
+"        this.user=user;\n"
+"    }\n"
+"    \n"
+"    @Out\n"
+"    public User getUser() {\n"
+"        return user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:421
+#, no-c-format
+msgid "Lifecycle methods"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:422
+#, no-c-format
+msgid ""
+"Session bean and entity bean Seam components support all the usual EJB 3.0 "
+"lifecycle callback (<literal>@PostConstruct</literal>, <literal>@PreDestroy</"
+"literal>, etc). Seam extends all of these callbacks except "
+"<literal>@PreDestroy</literal> to JavaBean components. But Seam also defines "
+"its own component lifecycle callbacks."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:425
+#, no-c-format
+msgid ""
+"The <literal>@Create</literal> method is called every time Seam instantiates "
+"a component. Unlike the <literal>@PostConstruct</literal> method, this "
+"method is called after the component is fully constructed by the EJB "
+"container, and has access to all the usual Seam functionality (bijection, "
+"etc). Components may define only one <literal>@Create</literal> method."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:428
+#, no-c-format
+msgid ""
+"The <literal>@Destroy</literal> method is called when the context that the "
+"Seam component is bound to ends. Components may define only one "
+"<literal>@Destroy</literal> method. Stateful session bean components "
+"<emphasis>must</emphasis> define a method annotated <literal>@Destroy "
+"@Remove</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:431
+#, no-c-format
+msgid ""
+"Finally, a related annotation is the <literal>@Startup</literal> annotation, "
+"which may be applied to any application or session scoped component. The "
+"<literal>@Startup</literal> annotation tells Seam to instantiate the "
+"component immediately, when the context begins, instead of waiting until it "
+"is first referenced by a client. It is possible to control the order of "
+"instantiation of startup components by specifying <literal>@Startup(depends="
+"{....})</literal>."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:434
+#, no-c-format
+msgid "Conditional installation"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:435
+#, no-c-format
+msgid ""
+"The <literal>@Install</literal> annotation lets you control conditional "
+"installation of components that are required in some deployment scenarios "
+"and not in others. This is useful if:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:440
+#, no-c-format
+msgid "You want to mock out some infrastructural component in tests."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:445
+#, no-c-format
+msgid ""
+"You want change the implementation of a component in certain deployment "
+"scenarios."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:450
+#, no-c-format
+msgid ""
+"You want to install some components only if their dependencies are available "
+"(useful for framework authors)."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:455
+#, no-c-format
+msgid ""
+"<literal>@Install</literal> works by letting you specify "
+"<emphasis>precedence</emphasis> and <emphasis>dependencies</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:458
+#, no-c-format
+msgid ""
+"The precedence of a component is a number that Seam uses to decide which "
+"component to install when there are multiple classes with the same component "
+"name in the classpath. Seam will choose the component with the higher "
+"precendence. There are some predefined precedence values:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:463
+#, no-c-format
+msgid ""
+"<literal>BUILT_IN</literal> &mdash; the lowest precedece components are the "
+"components built in to Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:468
+#, no-c-format
+msgid ""
+"<literal>FRAMEWORK</literal> &mdash; components defined by third-party "
+"frameworks may override built-in components, but are overridden by "
+"application components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:473
+#, no-c-format
+msgid ""
+"<literal>APPLICATION</literal> &mdash; the default precedence. This is "
+"appropriate for most application components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:478
+#, no-c-format
+msgid ""
+"<literal>DEPLOYMENT</literal> &mdash; for application components which are "
+"deployment-specific."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:483
+#, no-c-format
+msgid "<literal>MOCK</literal> &mdash; for mock objects used in testing."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:488
+#, no-c-format
+msgid ""
+"Suppose we have a component named <literal>messageSender</literal> that "
+"talks to a JMS queue."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:491
+#, no-c-format
+msgid ""
+"@Name(\"messageSender\") \n"
+"public class MessageSender {\n"
+"    public void sendMessage() {\n"
+"        //do something with JMS\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:492
+#, no-c-format
+msgid ""
+"In our unit tests, we don't have a JMS queue available, so we would like to "
+"stub out this method. We'll create a <emphasis>mock</emphasis> component "
+"that exists in the classpath when unit tests are running, but is never "
+"deployed with the application:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:495
+#, no-c-format
+msgid ""
+"@Name(\"messageSender\") \n"
+"@Install(precedence=MOCK)\n"
+"public class MockMessageSender extends MessageSender {\n"
+"    public void sendMessage() {\n"
+"        //do nothing!\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:496
+#, no-c-format
+msgid ""
+"The <literal>precedence</literal> helps Seam decide which version to use "
+"when it finds both components in the classpath."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:499
+#, no-c-format
+msgid ""
+"This is nice if we are able to control exactly which classes are in the "
+"classpath. But if I'm writing a reusable framework with many dependecies, I "
+"don't want to have to break that framework across many jars. I want to be "
+"able to decide which components to install depending upon what other "
+"components are installed, and upon what classes are available in the "
+"classpath. The <literal>@Install</literal> annotation also controls this "
+"functionality. Seam uses this mechanism internally to enable conditional "
+"installation of many of the built-in components. However, you probably won't "
+"need to use it in your application."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:502
+#, no-c-format
+msgid "Logging"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:503
+#, no-c-format
+msgid "Who is not totally fed up with seeing noisy code like this?"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:506
+#, no-c-format
+msgid ""
+"private static final Log log = LogFactory.getLog(CreateOrderAction.class);\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    if ( log.isDebugEnabled() ) {\n"
+"        log.debug(\"Creating new order for user: \" + user.username() + \n"
+"            \" product: \" + product.name() \n"
+"            + \" quantity: \" + quantity);\n"
+"    }\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:507
+#, no-c-format
+msgid ""
+"It is difficult to imagine how the code for a simple log message could "
+"possibly be more verbose. There is more lines of code tied up in logging "
+"than in the actual business logic! I remain totally astonished that the Java "
+"community has not come up with anything better in 10 years."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:510
+#, no-c-format
+msgid ""
+"Seam provides a logging API built on top of Apache commons-logging that "
+"simplifies this code significantly:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:513
+#, no-c-format
+msgid ""
+"@Logger private Log log;\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    log.debug(\"Creating new order for user: #0 product: #1 quantity: #2\", "
+"user.username(), \n"
+"       product.name(), quantity);\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:514
+#, no-c-format
+msgid ""
+"It doesn't matter if you declare the <literal>log</literal> variable static "
+"or not&mdash;it will work either way."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:517
+#, no-c-format
+msgid ""
+"Note that we don't need the noisy <literal>if ( log.isDebugEnabled() )</"
+"literal> guard, since string concatenation happens <emphasis>inside</"
+"emphasis> the <literal>debug()</literal> method. Note also that we don't "
+"usually need to specify the log category explicitly, since Seam knows what "
+"component it is injecting the <literal>Log</literal> into."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:520
+#, no-c-format
+msgid ""
+"If <literal>User</literal> and <literal>Product</literal> are Seam "
+"components available in the current contexts, it gets even better:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:523
+#, no-c-format
+msgid ""
+"@Logger private Log log;\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    log.debug(\"Creating new order for user: #{user.username} product: #"
+"{product.name}\n"
+"       quantity: #0\", quantity);\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:524
+#, no-c-format
+msgid ""
+"The <literal>Mutable</literal> interface and <literal>@ReadOnly</literal>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:525
+#, no-c-format
+msgid ""
+"Many application servers feature an amazingly broken implementation of "
+"<literal>HttpSession</literal> clustering, where changes to the state of "
+"mutable objects bound to the session are only replicated when the "
+"application calls <literal>setAttribute()</literal> explicitly. This is a "
+"source of bugs that can not effectively be tested for at development time, "
+"since they will only manifest when failover occurs. Furthermore, the actual "
+"replication message contains the entire serialized object graph bound to the "
+"session attribute, which is inefficient."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:528
+#, no-c-format
+msgid ""
+"Of course, EJB stateful session beans must perform automatic dirty checking "
+"and replication of mutable state and a sophisticated EJB container can "
+"introduce optimizations such as attribute-level replication. Unfortunately, "
+"not all Seam users have the good fortune to be working in an environment "
+"that supports EJB 3.0. So, for session and conversation scoped JavaBean and "
+"entity bean components, Seam provides an extra layer of cluster-safe state "
+"management over the top of the web container session clustering."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:531
+#, no-c-format
+msgid ""
+"For session or conversation scoped JavaBean components, Seam automatically "
+"forces replication to occur by calling <literal>setAttribute()</literal> "
+"once in every request that the component was invoked by the application. Of "
+"course, this strategy is inefficient for read-mostly components. You can "
+"control this behavior by implementing the <literal>org.jboss.seam.core."
+"Mutable</literal> interface, or by extending <literal>org.jboss.seam.core."
+"AbstractMutable</literal>, and writing your own dirty-checking logic inside "
+"the component. For example,"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:534
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class Account extends AbstractMutable\n"
+"{\n"
+"    private BigDecimal balance;\n"
+"    \n"
+"    public void setBalance(BigDecimal balance)\n"
+"    {\n"
+"        setDirty(this.balance, balance);\n"
+"        this.balance = balance;\n"
+"    }\n"
+"    \n"
+"    public BigDecimal getBalance()\n"
+"    {\n"
+"        return balance;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:535
+#, no-c-format
+msgid ""
+"Or, you can use the <literal>@ReadOnly</literal> annotation to achieve a "
+"similar effect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:538
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class Account\n"
+"{\n"
+"    private BigDecimal balance;\n"
+"    \n"
+"    public void setBalance(BigDecimal balance)\n"
+"    {\n"
+"        this.balance = balance;\n"
+"    }\n"
+"    \n"
+"    @ReadOnly\n"
+"    public BigDecimal getBalance()\n"
+"    {\n"
+"        return balance;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:539
+#, no-c-format
+msgid ""
+"For session or conversation scoped entity bean components, Seam "
+"automatically forces replication to occur by calling <literal>setAttribute()"
+"</literal> once in every request, <emphasis>unless the (conversation-scoped) "
+"entity is currently associated with a Seam-managed persistence context, in "
+"which case no replication is needed</emphasis>. This strategy is not "
+"necessarily efficient, so session or conversation scope entity beans should "
+"be used with care. You can always write a stateful session bean or JavaBean "
+"component to \"manage\" the entity bean instance. For example,"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:542
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"account\")\n"
+"public class AccountManager extends AbstractMutable\n"
+"{\n"
+"    private Account account; // an entity bean\n"
+"    \n"
+"    @Unwrap\n"
+"    public void getAccount()\n"
+"    {\n"
+"        return account;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:543
+#, no-c-format
+msgid ""
+"Note that the <literal>EntityHome</literal> class in the Seam Application "
+"Framework provides a great example of this pattern."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:546
+#, no-c-format
+msgid "Factory and manager components"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:547
+#, no-c-format
+msgid ""
+"We often need to work with objects that are not Seam components. But we "
+"still want to be able to inject them into our components using <literal>@In</"
+"literal> and use them in value and method binding expressions, etc. "
+"Sometimes, we even need to tie them into the Seam context lifecycle "
+"(<literal>@Destroy</literal>, for example). So the Seam contexts can contain "
+"objects which are not Seam components, and Seam provides a couple of nice "
+"features that make it easier to work with non-component objects bound to "
+"contexts."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:550
+#, no-c-format
+msgid ""
+"The <emphasis>factory component pattern</emphasis> lets a Seam component act "
+"as the instantiator for a non-component object. A <emphasis>factory method</"
+"emphasis> will be called when a context variable is referenced but has no "
+"value bound to it. We define factory methods using the <literal>@Factory</"
+"literal> annotation. The factory method binds a value to the context "
+"variable, and determines the scope of the bound value. There are two styles "
+"of factory method. The first style returns a value, which is bound to the "
+"context by Seam:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:553
+#, no-c-format
+msgid ""
+"@Factory(scope=CONVERSATION)\n"
+"public List&lt;Customer&gt; getCustomerList() { \n"
+"    return ... ;\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:554
+#, no-c-format
+msgid ""
+"The second style is a method of type <literal>void</literal> which binds the "
+"value to the context variable itself:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:557
+#, no-c-format
+msgid ""
+"@DataModel List&lt;Customer&gt; customerList;\n"
+"\n"
+"@Factory(\"customerList\")\n"
+"public void initCustomerList() { \n"
+"    customerList = ...  ;\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:558
+#, no-c-format
+msgid ""
+"In both cases, the factory method is called when we reference the "
+"<literal>customerList</literal> context variable and its value is null, and "
+"then has no further part to play in the lifecycle of the value. An even more "
+"powerful pattern is the <emphasis>manager component pattern</emphasis>. In "
+"this case, we have a Seam component that is bound to a context variable, "
+"that manages the value of the context variable, while remaining invisible to "
+"clients."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:561
+#, no-c-format
+msgid ""
+"A manager component is any component with an <literal>@Unwrap</literal> "
+"method. This method returns the value that will be visable to clients, and "
+"is called <emphasis>every time</emphasis> a context variable is referenced."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:564
+#, no-c-format
+msgid ""
+"@Name(\"customerList\")\n"
+"@Scope(CONVERSATION)\n"
+"public class CustomerListManager\n"
+"{\n"
+"    ...\n"
+"    \n"
+"    @Unwrap\n"
+"    public List&lt;Customer&gt; getCustomerList() { \n"
+"        return ... ;\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:565
+#, no-c-format
+msgid ""
+"This pattern is especially useful if we have some heavyweight object that "
+"needs a cleanup operation when the context ends. In this case, the manager "
+"component may perform cleanup in the <literal>@Destroy</literal> method."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Configuration.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Configuration.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Configuration.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1435 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Configuration.xml:10
+#, no-c-format
+msgid "Configuring Seam and packaging Seam applications"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:11
+#, no-c-format
+msgid ""
+"Configuration is a very boring topic and an extremely tedious pastime. "
+"Unfortunately, several lines of XML are required to integrate Seam into your "
+"JSF implementation and servlet container. There's no need to be too put off "
+"by the following sections; you'll never need to type any of this stuff "
+"yourself, since you can just copy and paste from the example applications!"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:14
+#, no-c-format
+msgid "Basic Seam configuration"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:15
+#, no-c-format
+msgid ""
+"First, let's look at the basic configuration that is needed whenever we use "
+"Seam with JSF."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:18
+#, no-c-format
+msgid "Integrating Seam with JSF and your servlet container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:19
+#, no-c-format
+msgid ""
+"Seam requires the following entry in your <literal>web.xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:22
+#, no-c-format
+msgid ""
+"&lt;listener&gt;\n"
+"    &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/listener-"
+"class&gt;\n"
+"&lt;/listener&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:23
+#, no-c-format
+msgid ""
+"This listener is responsible for bootstrapping Seam, and for destroying "
+"session and application contexts."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:26
+#, no-c-format
+msgid ""
+"To integrate with the JSF request lifecycle, we also need a JSF "
+"<literal>PhaseListener</literal> registered in in the <literal>faces-config."
+"xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:29
+#, no-c-format
+msgid ""
+"&lt;lifecycle&gt;\n"
+"    &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-"
+"listener&gt;\n"
+"&lt;/lifecycle&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:30
+#, no-c-format
+msgid ""
+"The actual listener class here varies depending upon how you want to manage "
+"transaction demarcation (more on this below)."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:33
+#, no-c-format
+msgid ""
+"If you are using Sun's JSF 1.2 reference implementation, you should also add "
+"this to <literal>faces-config.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:36
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;el-resolver&gt;org.jboss.seam.jsf.SeamELResolver&lt;/el-"
+"resolver&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:37
+#, no-c-format
+msgid ""
+"(This line should not strictly speaking be necessary, but it works around a "
+"minor bug in the RI.)"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:40
+#, no-c-format
+msgid ""
+"Some JSF implementations have a broken implementation of server-side state "
+"saving that interferes with Seam's conversation propagation. If you have "
+"problems with conversation propagation during form submissions, try "
+"switching to client-side state saving. You'll need this in <literal>web.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:43
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;client&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:44
+#, no-c-format
+msgid "Seam servlet filters"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:45
+#, no-c-format
+msgid ""
+"Seam doesn't need any servlet filters for basic operation. However, there "
+"are several features which depend upon the use of filters. To make things "
+"easier for you guys, Seam lets you add and configure servlet filters just "
+"like you would configure other built-in Seam components. To take advantage "
+"of this feature, we must first install a master filter in <literal>web.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:48
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;/*&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:49
+#, no-c-format
+msgid "Adding the master filter enables the following built-in filters."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:52
+#, no-c-format
+msgid "Exception handling"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:53
+#, no-c-format
+msgid ""
+"This filter provides the exception mapping functionality in <literal>pages."
+"xml</literal> (almost all applications will need this). It also takes care "
+"of rolling back uncommitted transactions when uncaught exceptions occur. "
+"(According to the Java EE specification, the web container should do this "
+"automatically, but we've found that this behavior cannot be relied upon in "
+"all application servers. And it is certainly not required of plain servlet "
+"engines like Tomcat.)"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:56
+#, no-c-format
+msgid ""
+"By default, the exception handling filter will process all requests, however "
+"this behavior may be adjusted by adding a <literal>&lt;web:exception-"
+"filter&gt;</literal> entry to <literal>components.xml</literal>, as shown in "
+"this example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:59
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:web=\"http://jboss.com/products/seam/web\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                    http://jboss.com/products/seam/core-1.2.xsd\n"
+"                 http://jboss.com/products/seam/components \n"
+"                     http://jboss.com/products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/web \n"
+"                     http://jboss.com/products/seam/web-1.2.xsd\"&gt;\n"
+"\n"
+"    &lt;web:exception-filter url-pattern=\"*.seam\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:62 Configuration.xml:77 Configuration.xml:99
+#: Configuration.xml:124
+#, no-c-format
+msgid ""
+"<literal>url-pattern</literal> &mdash; Used to specify which requests are "
+"filtered, the default is all requests."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:67
+#, no-c-format
+msgid "Conversation propagation with redirects"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:68
+#, no-c-format
+msgid ""
+"This filter allows Seam to propagate the conversation context across browser "
+"redirects. It intercepts any browser redirects and adds a request parameter "
+"that specifies the Seam conversation identifier."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:71
+#, no-c-format
+msgid ""
+"The redirect filter will process all requests by default, but this behavior "
+"can also be adjusted in <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:74
+#, no-c-format
+msgid "&lt;web:redirect-filter url-pattern=\"*.seam\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:82
+#, no-c-format
+msgid "Multipart form submissions"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:83
+#, no-c-format
+msgid ""
+"This feature is necessary when using the Seam file upload JSF control. It "
+"detects multipart form requests and processes them according to the "
+"multipart/form-data specification (RFC-2388). To override the default "
+"settings, add the following entry to <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:86
+#, no-c-format
+msgid ""
+"&lt;web:multipart-filter create-temp-files=\"true\" \n"
+"        max-request-size=\"1000000\" \n"
+"        url-pattern=\"*.seam\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:89
+#, no-c-format
+msgid ""
+"<literal>create-temp-files</literal> &mdash; If set to <literal>true</"
+"literal>, uploaded files are written to a temporary file (instead of held in "
+"memory). This may be an important consideration if large file uploads are "
+"expected. The default setting is <literal>false</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:94
+#, no-c-format
+msgid ""
+"<literal>max-request-size</literal> &mdash; If the size of a file upload "
+"request (determined by reading the <literal>Content-Length</literal> header "
+"in the request) exceeds this value, the request will be aborted. The default "
+"setting is 0 (no size limit)."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:104
+#, no-c-format
+msgid "Character encoding"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:105
+#, no-c-format
+msgid "Sets the character encoding of submitted form data."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:108 Configuration.xml:136
+#, no-c-format
+msgid ""
+"This filter is not installed by default and requires an entry in "
+"<literal>components.xml</literal> to enable it:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:111
+#, no-c-format
+msgid ""
+"&lt;web:character-encoding-filter encoding=\"UTF-16\" \n"
+"        override-client=\"true\" \n"
+"        url-pattern=\"*.seam\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:114
+#, no-c-format
+msgid "<literal>encoding</literal> &mdash; The encoding to use."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:119
+#, no-c-format
+msgid ""
+"<literal>override-client</literal> &mdash; If this is set to <literal>true</"
+"literal>, the request encoding will be set to whatever is specified by "
+"<literal>encoding</literal> no matter whether the request already specifies "
+"an encoding or not. If set to <literal>false</literal>, the request encoding "
+"will only be set if the request doesn't already specify an encoding. The "
+"default setting is <literal>false</literal>."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:129
+#, no-c-format
+msgid "Context management for custom servlets"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:130
+#, no-c-format
+msgid ""
+"Requests sent direct to some servlet other than the JSF servlet are not "
+"processed through the JSF lifecycle, so Seam provides a servlet filter that "
+"can be applied to any other servlet that needs access to Seam components."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:133
+#, no-c-format
+msgid ""
+"This filter allows custom servlets to interact with the Seam contexts. It "
+"sets up the Seam contexts at the beginning of each request, and tears them "
+"down at the end of the request. You should make sure that this filter is "
+"<emphasis>never</emphasis> applied to the JSF <literal>FacesServlet</"
+"literal>. Seam uses the phase listener for context management in a JSF "
+"request."
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:139
+#, no-c-format
+msgid "&lt;web:context-filter url-pattern=\"/media/*\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:142
+#, no-c-format
+msgid ""
+"<literal>url-pattern</literal> &mdash; Used to specify which requests are "
+"filtered, the default is all requests. If the url-pattern is specified for "
+"the context filter, then the filter will be enabled (unless explicitly "
+"disabled)."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:147
+#, no-c-format
+msgid ""
+"The context filter expects to find the conversation id of any conversation "
+"context in a request parameter named <literal>conversationId</literal>. You "
+"are responsible for ensuring that it gets sent in the request."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:150
+#, no-c-format
+msgid ""
+"You are also responsible for ensuring propagation of any new conversation id "
+"back to the client. Seam exposes the conversation id as a property of the "
+"built in component <literal>conversation</literal>."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:153
+#, no-c-format
+msgid "Integrating Seam with your EJB container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:154
+#, no-c-format
+msgid ""
+"We need to apply the <literal>SeamInterceptor</literal> to our Seam "
+"components. The simplest way to do this is to add the following interceptor "
+"binding to the <literal>&lt;assembly-descriptor&gt;</literal> in "
+"<literal>ejb-jar.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:157
+#, no-c-format
+msgid ""
+"&lt;interceptor-binding&gt;\n"
+"    &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"    &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"&lt;/interceptor-binding&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:158
+#, no-c-format
+msgid ""
+"Seam needs to know where to go to find session beans in JNDI. One way to do "
+"this is specify the <literal>@JndiName</literal> annotation on every session "
+"bean Seam component. However, this is quite tedious. A better approach is to "
+"specify a pattern that Seam can use to calculate the JNDI name from the EJB "
+"name. Unfortunately, there is no standard mapping to global JNDI defined in "
+"the EJB3 specification, so this mapping is vendor-specific. We usually "
+"specify this option in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:161
+#, no-c-format
+msgid "For JBoss AS, the following pattern is correct:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:164
+#, no-c-format
+msgid "&lt;core:init jndi-name=\"myEarName/#{ejbName}/local\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:165
+#, no-c-format
+msgid ""
+"Where <literal>myEarName</literal> is the name of the EAR in which the bean "
+"is deployed."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:168
+#, no-c-format
+msgid ""
+"Outside the context of an EAR (when using the JBoss Embeddable EJB3 "
+"container), the following pattern is the one to use:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:171
+#, no-c-format
+msgid "&lt;core:init jndi-name=\"#{ejbName}/local\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:172
+#, no-c-format
+msgid ""
+"You'll have to experiment to find the right setting for other application "
+"servers. Note that some servers (such as GlassFish) require you to specify "
+"JNDI names for all EJB components explicitly (and tediously). In this case, "
+"you can pick your own pattern ;-)"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:175
+#, no-c-format
+msgid "Using facelets"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:176
+#, no-c-format
+msgid ""
+"If you want follow our advice and use facelets instead of JSP, add the "
+"following lines to <literal>faces-config.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:179
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;view-handler&gt;com.sun.facelets.FaceletViewHandler&lt;/view-"
+"handler&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:180
+#, no-c-format
+msgid "And the following lines to <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:183
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;javax.faces.DEFAULT_SUFFIX&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;.xhtml&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:184
+#, no-c-format
+msgid "Don't forget!"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:185
+#, no-c-format
+msgid ""
+"There is one final item you need to know about. You must place a "
+"<literal>seam.properties</literal>, <literal>META-INF/seam.properties</"
+"literal> or <literal>META-INF/components.xml</literal> file in any archive "
+"in which your Seam components are deployed (even an empty properties file "
+"will do). At startup, Seam will scan any archives with <literal>seam."
+"properties</literal> files for seam components."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:188
+#, no-c-format
+msgid ""
+"That's why all the Seam examples have an empty <literal>seam.properties</"
+"literal> file. You can't just delete this file and expect everything to "
+"still work!"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:191
+#, no-c-format
+msgid ""
+"You might think this is silly and what kind of idiot framework designers "
+"would make an empty file affect the behavior of their software?? Well, this "
+"is a workaround for a limitation of the JVM&mdash;if we didn't use this "
+"mechanism, our next best option would be to force you to list every "
+"component explicitly in <literal>components.xml</literal>, just like some "
+"other competing frameworks do! I think you'll like our way better."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:195
+#, no-c-format
+msgid "Configuring Seam in Java EE 5"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:204
+#, no-c-format
+msgid ""
+"If you're running in a Java EE 5 environment, this is all the configuration "
+"required to start using Seam!"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:207 Configuration.xml:270 Configuration.xml:318
+#: Configuration.xml:354 Configuration.xml:371
+#, no-c-format
+msgid "Packaging"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:208
+#, no-c-format
+msgid ""
+"Once you've packaged all this stuff together into an EAR, the archive "
+"structure will look something like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:211
+#, no-c-format
+msgid ""
+"my-application.ear/\n"
+"    jboss-seam.jar\n"
+"    el-api.jar\n"
+"    el-ri.jar\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"        application.xml\n"
+"    my-application.war/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"        WEB-INF/\n"
+"            web.xml\n"
+"            components.xml\n"
+"            faces-config.xml\n"
+"            lib/\n"
+"                jsf-facelets.jar\n"
+"                jboss-seam-ui.jar\n"
+"        login.jsp\n"
+"        register.jsp\n"
+"        ...\n"
+"    my-application.jar/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"            persistence.xml\n"
+"        seam.properties\n"
+"        org/\n"
+"            jboss/\n"
+"                myapplication/\n"
+"                    User.class\n"
+"                    Login.class\n"
+"                    LoginBean.class\n"
+"                    Register.class\n"
+"                    RegisterBean.class\n"
+"                    ..."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:212
+#, no-c-format
+msgid ""
+"You must include <literal>jboss-seam.jar</literal>, <literal>el-api.jar</"
+"literal> and <literal>el-ri.jar</literal> in the EAR classpath. Make sure "
+"you reference all of these jars from <literal>application.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:215
+#, no-c-format
+msgid ""
+"If you want to use jBPM or Drools, you must include the needed jars in the "
+"EAR classpath. Make sure you reference all of the jars from "
+"<literal>application.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:218
+#, no-c-format
+msgid ""
+"If you want to use facelets (our recommendation), you must include "
+"<literal>jsf-facelets.jar</literal> in the <literal>WEB-INF/lib</literal> "
+"directory of the WAR."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:221
+#, no-c-format
+msgid ""
+"If you want to use the Seam tag library (most Seam applications do), you "
+"must include <literal>jboss-seam-ui.jar</literal> in the <literal>WEB-INF/"
+"lib</literal> directory of the WAR. If you want to use the PDF or email tag "
+"libraries, you need to put <literal>jboss-seam-pdf.jar</literal> or "
+"<literal>jboss-seam-mail.jar</literal> in <literal>WEB-INF/lib</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:224
+#, no-c-format
+msgid ""
+"If you want to use the Seam debug page (only works for applications using "
+"facelets), you must include <literal>jboss-seam-debug.jar</literal> in the "
+"<literal>WEB-INF/lib</literal> directory of the WAR."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:227
+#, no-c-format
+msgid ""
+"Seam ships with several example applications that are deployable in any Java "
+"EE container that supports EJB 3.0."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:231
+#, no-c-format
+msgid "Configuring Seam in Java SE, with the JBoss Embeddable EJB3 container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:232
+#, no-c-format
+msgid ""
+"The JBoss Embeddable EJB3 container lets you run EJB3 components outside the "
+"context of the Java EE 5 application server. This is especially, but not "
+"only, useful for testing."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:235
+#, no-c-format
+msgid ""
+"The Seam booking example application includes a TestNG integration test "
+"suite that runs on the Embeddable EJB3 container."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:246
+#, no-c-format
+msgid "The booking example application may even be deployed to Tomcat."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:257
+#, no-c-format
+msgid "Installing the Embeddable EJB3 container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:258
+#, no-c-format
+msgid ""
+"Seam ships with a build of the Embeddable EJB3 container in the "
+"<literal>embedded-ejb</literal> directory. To use the Embeddable EJB3 "
+"container with Seam, add the <literal>embedded-ejb/conf</literal> directory, "
+"and all jars in the <literal>lib</literal> and <literal>embedded-ejb/lib</"
+"literal> directories to your classpath. Then, add the following line to "
+"<literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:261
+#, no-c-format
+msgid "&lt;core:ejb /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:262
+#, no-c-format
+msgid ""
+"This setting installs the built-in component named <literal>org.jboss.seam."
+"core.ejb</literal>. This component is responsible for bootstrapping the EJB "
+"container when Seam is started, and shutting it down when the web "
+"application is undeployed."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:265
+#, no-c-format
+msgid "Configuring a datasource with the Embeddable EJB3 container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:266
+#, no-c-format
+msgid ""
+"You should refer to the Embeddable EJB3 container documentation for more "
+"information about configuring the container. You'll probably at least need "
+"to set up your own datasource. Embeddable EJB3 is implemented using the "
+"JBoss Microcontainer, so it's very easy to add new services to the minimal "
+"set of services provided by default. For example, I can add a new datasource "
+"by putting this <literal>jboss-beans.xml</literal> file in my classpath:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:269
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"\n"
+"&lt;deployment xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"urn:jboss:bean-deployer bean-deployer_1_0."
+"xsd\"\n"
+"            xmlns=\"urn:jboss:bean-deployer\"&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasourceBootstrap\"\n"
+"        class=\"org.jboss.resource.adapter.jdbc.local.LocalTxDataSource"
+"\"&gt;\n"
+"      &lt;property name=\"driverClass\"&gt;org.hsqldb.jdbcDriver&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"connectionURL\"&gt;jdbc:hsqldb:.&lt;/property&gt;\n"
+"      &lt;property name=\"userName\"&gt;sa&lt;/property&gt;\n"
+"      &lt;property name=\"jndiName\"&gt;java:/bookingDatasource&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"minSize\"&gt;0&lt;/property&gt;\n"
+"      &lt;property name=\"maxSize\"&gt;10&lt;/property&gt;\n"
+"      &lt;property name=\"blockingTimeout\"&gt;1000&lt;/property&gt;\n"
+"      &lt;property name=\"idleTimeout\"&gt;100000&lt;/property&gt;\n"
+"      &lt;property name=\"transactionManager\"&gt;\n"
+"        &lt;inject bean=\"TransactionManager\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"      &lt;property name=\"cachedConnectionManager\"&gt;\n"
+"        &lt;inject bean=\"CachedConnectionManager\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"      &lt;property name=\"initialContextProperties\"&gt;\n"
+"        &lt;inject bean=\"InitialContextProperties\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasource\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getDatasource\"&gt;\n"
+"         &lt;factory bean=\"bookingDatasourceBootstrap\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"&lt;/deployment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:271
+#, no-c-format
+msgid ""
+"The archive structure of a WAR-based deployment on an servlet engine like "
+"Tomcat will look something like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:274
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            myfaces-api.jar\n"
+"            myfaces-impl.jar\n"
+"            jboss-ejb3.jar\n"
+"            jboss-jca.jar\n"
+"            jboss-j2ee.jar\n"
+"            ...\n"
+"            mc-conf.jar/\n"
+"                ejb3-interceptors-aop.xml\n"
+"                embedded-jboss-beans.xml\n"
+"                default.persistence.properties\n"
+"                jndi.properties\n"
+"                login-config.xml\n"
+"                security-beans.xml\n"
+"                log4j.xml\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                    MANIFEST.MF\n"
+"                    persistence.xml\n"
+"                    jboss-beans.xml\n"
+"                log4j.xml\n"
+"                seam.properties\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            LoginBean.class\n"
+"                            Register.class\n"
+"                            RegisterBean.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:275
+#, no-c-format
+msgid ""
+"The <literal>mc-conf.jar</literal> just contains the standard JBoss "
+"Microcontainer configuration files for Embeddable EJB3. You won't usually "
+"need to edit these files yourself."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:278
+#, no-c-format
+msgid ""
+"Most of the Seam example applications may be deployed to Tomcat by running "
+"<literal>ant deploy.tomcat</literal>."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:281
+#, no-c-format
+msgid "Configuring Seam in J2EE"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:282
+#, no-c-format
+msgid ""
+"Seam is useful even if you're not yet ready to take the plunge into EJB 3.0. "
+"In this case you would use Hibernate3 or JPA instead of EJB 3.0 persistence, "
+"and plain JavaBeans instead of session beans. You'll miss out on some of the "
+"nice features of session beans but it will be very easy to migrate to EJB "
+"3.0 when you're ready and, in the meantime, you'll be able to take advantage "
+"of Seam's unique declarative state management architecture."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:293
+#, no-c-format
+msgid ""
+"Seam JavaBean components do not provide declarative transaction demarcation "
+"like session beans do. You <emphasis>could</emphasis> manage your "
+"transactions manually using the JTA <literal>UserTransaction</literal> (you "
+"could even implement your own declarative transaction management in a Seam "
+"interceptor). But most applications will use Seam managed transactions when "
+"using Hibernate with JavaBeans. Follow the instructions in the persistence "
+"chapter to install <literal>TransactionalSeamPhaseListener</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:296
+#, no-c-format
+msgid ""
+"The Seam distribution includes a version of the booking example application "
+"that uses Hibernate3 and JavaBeans instead of EJB3, and another version that "
+"uses JPA and JavaBeans. These example applications are ready to deploy into "
+"any J2EE application server."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:299
+#, no-c-format
+msgid ""
+"If we want to deploy Hibernate in a non-J2EE environment like Tomcat or "
+"TestNG, we need to do a little bit more work."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:302
+#, no-c-format
+msgid "Boostrapping Hibernate in Seam"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:303
+#, no-c-format
+msgid ""
+"Seam will bootstrap a Hibernate <literal>SessionFactory</literal> from your "
+"<literal>hibernate.cfg.xml</literal> file if you install a built-in "
+"component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:306
+#, no-c-format
+msgid ""
+"&lt;core:hibernate-session-factory name=\"hibernateSessionFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:307
+#, no-c-format
+msgid ""
+"You will also need to configure a <emphasis>managed session</emphasis> if "
+"you want a Seam managed Hibernate <literal>Session</literal> to be available "
+"via injection."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:310
+#, no-c-format
+msgid "Boostrapping JPA in Seam"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:311
+#, no-c-format
+msgid ""
+"Seam will bootstrap a JPA <literal>EntityManagerFactory</literal> from your "
+"<literal>persistence.xml</literal> file if you install this built-in "
+"component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:314
+#, no-c-format
+msgid "&lt;core:entity-manager-factory name=\"entityManagerFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:315
+#, no-c-format
+msgid ""
+"You will also need to configure a <emphasis>managed persistencece context</"
+"emphasis> if you want a Seam managed JPA <literal>EntityManager</literal> to "
+"be available via injection."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:319
+#, no-c-format
+msgid "We can package our application as a WAR, in the following structure:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:322
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            hibernate3.jar\n"
+"            hibernate-annotations.jar\n"
+"            ...\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                   MANIFEST.MF\n"
+"                seam.properties\n"
+"                hibernate.cfg.xml\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            Register.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:324
+#, no-c-format
+msgid "Configuring Seam in Java SE, with the JBoss Microcontainer"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:325
+#, no-c-format
+msgid ""
+"The Seam support for Hibernate and JPA requires JTA and a JCA datasource. If "
+"you are running in a non-EE environment like Tomcat or TestNG you can run "
+"these services, and Hibernate itself, in the JBoss Microcontainer."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:328
+#, no-c-format
+msgid ""
+"You can even deploy the Hibernate and JPA versions of the booking example in "
+"Tomcat."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:339
+#, no-c-format
+msgid ""
+"Seam ships with an example Microcontainer configuration in "
+"<literal>microcontainer/conf/jboss-beans.xml</literal> that provides all the "
+"things you need to run Seam with Hibernate in any non-EE environment. Just "
+"add the <literal>microcontainer/conf</literal> directory, and all jars in "
+"the <literal>lib</literal> and <literal>microcontainer/lib</literal> "
+"directories to your classpath. Refer to the documentation for the JBoss "
+"Microcontainer for more information."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:342
+#, no-c-format
+msgid "Using Hibernate and the JBoss Microcontainer"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:343
+#, no-c-format
+msgid ""
+"The built-in Seam component named <literal>org.jboss.seam.core."
+"microcontainer</literal> bootstraps the microcontainer. As before, we "
+"probably want to use a Seam managed session."
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:346
+#, no-c-format
+msgid ""
+"&lt;core:microcontainer/&gt;\n"
+"\n"
+"&lt;core:managed-hibernate-session name=\"bookingDatabase\" auto-create="
+"\"true\"\n"
+"    session-factory-jndi-name=\"java:/bookingSessionFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:347
+#, no-c-format
+msgid ""
+"Where <literal>java:/bookingSessionFactory</literal> is the name of the "
+"Hibernate session factory specified in <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:350
+#, no-c-format
+msgid ""
+"You'll need to provide a <literal>jboss.beans.xml</literal> file that "
+"installs JNDI, JTA, your JCA datasource and Hibernate into the "
+"microcontainer:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:353
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"\n"
+"&lt;deployment xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"urn:jboss:bean-deployer bean-deployer_1_0."
+"xsd\"\n"
+"            xmlns=\"urn:jboss:bean-deployer\"&gt;\n"
+"\n"
+"   &lt;bean name=\"Naming\" class=\"org.jnp.server.SingletonNamingServer\"/"
+"&gt;\n"
+"\n"
+"   &lt;bean name=\"TransactionManagerFactory\"\n"
+"       class=\"org.jboss.seam.microcontainer.TransactionManagerFactory\"/"
+"&gt;\n"
+"   &lt;bean name=\"TransactionManager\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getTransactionManager\"&gt;\n"
+"         &lt;factory bean=\"TransactionManagerFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasourceFactory\" class=\"org.jboss.seam."
+"microcontainer.DataSourceFactory\"&gt;\n"
+"      &lt;property name=\"driverClass\"&gt;org.hsqldb.jdbcDriver&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"connectionUrl\"&gt;jdbc:hsqldb:.&lt;/property&gt;\n"
+"      &lt;property name=\"userName\"&gt;sa&lt;/property&gt;\n"
+"      &lt;property name=\"jndiName\"&gt;java:/hibernateDatasource&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"minSize\"&gt;0&lt;/property&gt;\n"
+"      &lt;property name=\"maxSize\"&gt;10&lt;/property&gt;\n"
+"      &lt;property name=\"blockingTimeout\"&gt;1000&lt;/property&gt;\n"
+"      &lt;property name=\"idleTimeout\"&gt;100000&lt;/property&gt;\n"
+"      &lt;property name=\"transactionManager\"&gt;&lt;inject bean="
+"\"TransactionManager\"/&gt;&lt;/property&gt;\n"
+"   &lt;/bean&gt;\n"
+"   &lt;bean name=\"bookingDatasource\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getDataSource\"&gt;\n"
+"         &lt;factory bean=\"bookingDatasourceFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingSessionFactoryFactory\"\n"
+"       class=\"org.jboss.seam.microcontainer.HibernateFactory\"/&gt;\n"
+"   &lt;bean name=\"bookingSessionFactory\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getSessionFactory\"&gt;\n"
+"         &lt;factory bean=\"bookingSessionFactoryFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"      &lt;depends&gt;bookingDatasource&lt;/depends&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"&lt;/deployment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:355
+#, no-c-format
+msgid "The WAR could have the following structure:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:358
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            hibernate3.jar\n"
+"            ...\n"
+"            jboss-microcontainer.jar\n"
+"            jboss-jca.jar\n"
+"            ...\n"
+"            myfaces-api.jar\n"
+"            myfaces-impl.jar\n"
+"            mc-conf.jar/\n"
+"                jndi.properties\n"
+"                log4j.xml\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                    MANIFEST.MF\n"
+"                    jboss-beans.xml\n"
+"                seam.properties\n"
+"                hibernate.cfg.xml\n"
+"                log4j.xml\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            Register.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:359
+#, no-c-format
+msgid "Configuring jBPM in Seam"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:360
+#, no-c-format
+msgid ""
+"Seam's jBPM integration is not installed by default, so you'll need to "
+"enable jBPM by installing a built-in component. You'll also need to "
+"explicitly list your process and pageflow definitions. In "
+"<literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:363
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:pageflow-definitions&gt;\n"
+"        &lt;value&gt;createDocument.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;editDocument.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;approveDocument.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:pageflow-definitions&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;documentLifecycle.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:364
+#, no-c-format
+msgid ""
+"No further special configuration is needed if you only have pageflows. If "
+"you do have business process definitions, you need to provide a jBPM "
+"configuration, and a Hibernate configuration for jBPM. The Seam DVD Store "
+"demo includes example <literal>jbpm.cfg.xml</literal> and <literal>hibernate."
+"cfg.xml</literal> files that will work with Seam:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:367
+#, no-c-format
+msgid ""
+"&lt;jbpm-configuration&gt;\n"
+"\n"
+"  &lt;jbpm-context&gt;\n"
+"    &lt;service name=\"persistence\"&gt;\n"
+"       &lt;factory&gt;\n"
+"          &lt;bean class=\"org.jbpm.persistence.db."
+"DbPersistenceServiceFactory\"&gt;\n"
+"             &lt;field name=\"isTransactionEnabled\"&gt;&lt;false/&gt;&lt;/"
+"field&gt;\n"
+"          &lt;/bean&gt;\n"
+"       &lt;/factory&gt;\n"
+"    &lt;/service&gt;\n"
+"    &lt;service name=\"message\" factory=\"org.jbpm.msg.db."
+"DbMessageServiceFactory\" /&gt;\n"
+"    &lt;service name=\"scheduler\" factory=\"org.jbpm.scheduler.db."
+"DbSchedulerServiceFactory\" /&gt;\n"
+"    &lt;service name=\"logging\" factory=\"org.jbpm.logging.db."
+"DbLoggingServiceFactory\" /&gt;\n"
+"    &lt;service name=\"authentication\" \n"
+"        factory=\"org.jbpm.security.authentication."
+"DefaultAuthenticationServiceFactory\" /&gt;\n"
+"  &lt;/jbpm-context&gt;\n"
+"\n"
+"&lt;/jbpm-configuration&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:368
+#, no-c-format
+msgid ""
+"The most important thing to notice here is that jBPM transaction control is "
+"disabled. Seam or EJB3 should control the JTA transactions."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:372
+#, no-c-format
+msgid ""
+"There is not yet any well-defined packaging format for jBPM configuration "
+"and process/pageflow definition files. In the Seam examples we've decided to "
+"simply package all these files into the root of the EAR. In future, we will "
+"probably design some other standard packaging format. So the EAR looks "
+"something like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:375
+#, no-c-format
+msgid ""
+"my-application.ear/\n"
+"    jboss-seam.jar\n"
+"    el-api.jar\n"
+"    el-ri.jar\n"
+"    jbpm-3.1.jar\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"        application.xml\n"
+"    my-application.war/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"        WEB-INF/\n"
+"            web.xml\n"
+"            components.xml\n"
+"            faces-config.xml\n"
+"            lib/\n"
+"                jsf-facelets.jar\n"
+"                jboss-seam-ui.jar\n"
+"        login.jsp\n"
+"        register.jsp\n"
+"        ...\n"
+"    my-application.jar/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"            persistence.xml\n"
+"        seam.properties\n"
+"        org/\n"
+"            jboss/\n"
+"                myapplication/\n"
+"                    User.class\n"
+"                    Login.class\n"
+"                    LoginBean.class\n"
+"                    Register.class\n"
+"                    RegisterBean.class\n"
+"                    ...\n"
+"    jbpm.cfg.xml\n"
+"    hibernate.cfg.xml\n"
+"    createDocument.jpdl.xml\n"
+"    editDocument.jpdl.xml\n"
+"    approveDocument.jpdl.xml\n"
+"    documentLifecycle.jpdl.xml"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:376
+#, no-c-format
+msgid ""
+"Remember to add <literal>jbpm-3.1.jar</literal> to the manifest of your EJB-"
+"JAR and WAR."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:379
+#, no-c-format
+msgid "Configuring Seam in a Portal"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:380
+#, no-c-format
+msgid ""
+"To run a Seam application as a portlet, you'll need to provide certain "
+"portlet metadata (<literal>portlet.xml</literal>, etc) in addition to the "
+"usual Java EE metadata. See the <literal>examples/portal</literal> directory "
+"for an example of the booking demo preconfigured to run on JBoss Portal."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:383
+#, no-c-format
+msgid ""
+"In addition, you'll need to use a portlet-specific phase listener instead of "
+"<literal>SeamPhaseListener</literal> or "
+"<literal>TransactionalSeamPhaseListener</literal>. The "
+"<literal>SeamPortletPhaseListener</literal> and "
+"<literal>TransactionalSeamPortletPhaseListener</literal> are adapted to the "
+"portlet lifecycle. I would like to offer my sincerest apologies for the name "
+"of that last class. I really couldn't think of anything better. Sorry."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Controls.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Controls.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Controls.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,591 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Controls.xml:10
+#, no-c-format
+msgid "Seam JSF controls"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:11
+#, no-c-format
+msgid ""
+"Seam includes a number of JSF controls that are useful for working with "
+"Seam. These are intended to complement the built-in JSF controls, and "
+"controls from other third-party libraries. We recommend the Ajax4JSF and ADF "
+"faces (now Trinidad) tag libraries for use with Seam. We do not recommend "
+"the use of the Tomahawk tag library."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:14
+#, no-c-format
+msgid "The ui example demonstrates the use of a number of these tags."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:19
+#, no-c-format
+msgid "&lt;s:validate&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:21
+#, no-c-format
+msgid ""
+"Validate a JSF input field against the bound property using Hibernate "
+"Validator."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:27
+#, no-c-format
+msgid "&lt;s:validateAll&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:29
+#, no-c-format
+msgid ""
+"Validate all child JSF input fields against the bound propertys using "
+"Hibernate Validator."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:35
+#, no-c-format
+msgid "&lt;s:formattedText&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:37
+#, no-c-format
+msgid "Output <emphasis>Seam Text</emphasis>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:43
+#, no-c-format
+msgid "&lt;s:convertDateTime&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:45
+#, no-c-format
+msgid "Perform date or time conversions in the Seam timezone."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:51
+#, no-c-format
+msgid "&lt;s:convertEnum&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:53
+#, no-c-format
+msgid ""
+"Assigns an enum converter to the current component. This is primarily useful "
+"for radio button and dropdown controls."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:59
+#, no-c-format
+msgid "&lt;s:enumItem&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:61
+#, no-c-format
+msgid "Creates a <literal>SelectItem</literal> from an enum value."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:66
+#, no-c-format
+msgid ""
+"<literal>enumValue</literal> &mdash; the string representation of the enum "
+"value."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:71
+#, no-c-format
+msgid ""
+"<literal>label</literal> &mdash; the label to be used when rendering the "
+"<literal>SelectItem</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:79
+#, no-c-format
+msgid "&lt;s:selectItems&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:81
+#, no-c-format
+msgid ""
+"Creates a <literal>List&lt;SelectItem&gt;</literal> from a List, Set, "
+"DataModel or Array."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:86
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; an EL expression specifying the data that "
+"backs the <literal>List&lt;SelectItem&gt;</literal>"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:91
+#, no-c-format
+msgid ""
+"<literal>var</literal> &mdash; defines the name of the local variable that "
+"holds the current object during iteration"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:96
+#, no-c-format
+msgid ""
+"<literal>label</literal> &mdash; the label to be used when rendering the "
+"<literal>SelectItem</literal>. Can reference the <literal>var</literal> "
+"variable"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:101
+#, no-c-format
+msgid ""
+"<literal>disabled</literal> &mdash; if true the <literal>SelectItem</"
+"literal> will be rendered disabled. Can reference the <literal>var</literal> "
+"variable"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:106
+#, no-c-format
+msgid ""
+"<literal>noSelectionLabel</literal> &mdash; specifies the (optional) label "
+"to place at the top of list (if <literal>required=\"true\"</literal> is also "
+"specified then selecting this value will cause a validation error)"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:111
+#, no-c-format
+msgid ""
+"<literal>hideNoSelectionLabel</literal> &mdash; if true, the "
+"<literal>noSelectionLabel</literal> will be hidden when a value is selected"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:119
+#, no-c-format
+msgid "&lt;s:decorate&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:121
+#, no-c-format
+msgid "\"Decorate\" a JSF input field when validation fails."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:127
+#, no-c-format
+msgid "&lt;s:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:129
+#, no-c-format
+msgid "\"Decorate\" a JSF input field with the validation error message."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:135
+#, no-c-format
+msgid "&lt;s:span&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:137
+#, no-c-format
+msgid "Render a HTML <literal>&lt;span&gt;</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:143
+#, no-c-format
+msgid "&lt;s:div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:145
+#, no-c-format
+msgid "Render a HTML <literal>&lt;div&gt;</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:151
+#, no-c-format
+msgid "&lt;s:fragment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:153
+#, no-c-format
+msgid ""
+"A non-rendering component useful for enabling/disabling rendering of it's "
+"children"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:159
+#, no-c-format
+msgid "&lt;s:cache&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:161
+#, no-c-format
+msgid ""
+"Cache the rendered page fragment using JBoss Cache. Note that <literal>&lt;s:"
+"cache&gt;</literal> actually uses the instance of JBoss Cache managed by the "
+"built-in <literal>pojoCache</literal> component."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:166
+#, no-c-format
+msgid ""
+"<literal>key</literal> &mdash; the key to cache rendered content, often a "
+"value expression. For example, if we were caching a page fragment that "
+"displays a document, we might use <literal>key=\"Document-#{document.id}\"</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:171
+#, no-c-format
+msgid ""
+"<literal>enabled</literal> &mdash; a value expression that determines if the "
+"cache should be used."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:176
+#, no-c-format
+msgid ""
+"<literal>region</literal> &mdash; a JBoss Cache node to use (different nodes "
+"can have different expiry policies)."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:184
+#, no-c-format
+msgid "&lt;s:link&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:186
+#, no-c-format
+msgid ""
+"A link that supports invocation of an action with control over conversation "
+"propagation. <emphasis>Does not submit the form.</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:191 Controls.xml:236
+#, no-c-format
+msgid "<literal>value</literal> &mdash; the label."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:196 Controls.xml:241
+#, no-c-format
+msgid ""
+"<literal>action</literal> &mdash; a method binding that specified the action "
+"listener."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:201 Controls.xml:246
+#, no-c-format
+msgid "<literal>view</literal> &mdash; the JSF view id to link to."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:206 Controls.xml:251
+#, no-c-format
+msgid "<literal>fragment</literal> &mdash; the fragment identifier to link to."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:211 Controls.xml:256
+#, no-c-format
+msgid "<literal>disabled</literal> &mdash; is the link disabled?"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:216 Controls.xml:261 Controls.xml:301
+#, no-c-format
+msgid ""
+"<literal>propagation</literal> &mdash; determines the conversation "
+"propagation style: <literal>begin</literal>, <literal>join</literal>, "
+"<literal>nest</literal>, <literal>none</literal> or <literal>end</literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:221 Controls.xml:266 Controls.xml:306
+#, no-c-format
+msgid ""
+"<literal>pageflow</literal> &mdash; a pageflow definition to begin. (This is "
+"only useful when <literal>propagation=\"begin\"</literal> or "
+"<literal>propagation=\"join\"</literal>.)"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:229
+#, no-c-format
+msgid "&lt;s:button&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:231
+#, no-c-format
+msgid ""
+"A button that supports invocation of an action with control over "
+"conversation propagation. <emphasis>Does not submit the form.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:274
+#, no-c-format
+msgid "&lt;s:selectDate&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:276
+#, no-c-format
+msgid ""
+"Displays a dynamic date picker component that selects a date for the "
+"specified input field. The body of the <literal>selectDate</literal> element "
+"should contain HTML elements, such as text or an image, that prompt the user "
+"to click to display the date picker. The date picker can be styled using "
+"CSS. An example CSS file can be found in the Seam booking demo as "
+"<literal>date.css</literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:281
+#, no-c-format
+msgid ""
+"<literal>for</literal> &mdash; The id of the input field that the date "
+"picker will insert the selected date into."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:286
+#, no-c-format
+msgid ""
+"<literal>dateFormat</literal> &mdash; The date format string. This should "
+"match the date format of the input field."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:294
+#, no-c-format
+msgid "&lt;s:conversationPropagation&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:296
+#, no-c-format
+msgid ""
+"Customize the conversation propagation for a command link or button (or "
+"similar JSF control). <emphasis>Facelets only.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:314
+#, no-c-format
+msgid "&lt;s:conversationId&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:316
+#, no-c-format
+msgid ""
+"Add the conversation id to an output link (or similar JSF control). "
+"<emphasis>Facelets only.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:322
+#, no-c-format
+msgid "&lt;s:taskId&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:324
+#, no-c-format
+msgid ""
+"Add the task id to an output link (or similar JSF control), when the task is "
+"available via <literal>#{task}</literal>. <emphasis>Facelets only.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:330
+#, no-c-format
+msgid "&lt;s:fileUpload&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:332
+#, no-c-format
+msgid ""
+"Renders a file upload control. This control must be used within a form with "
+"an encoding type of <literal>multipart/form-data</literal>, i.e:"
+msgstr ""
+
+#. Tag: programlisting
+#: Controls.xml:335
+#, no-c-format
+msgid "&lt;h:form enctype=\"multipart/form-data\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:336
+#, no-c-format
+msgid ""
+"For multipart requests, the Seam Multipart servlet filter must also be "
+"configured in <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Controls.xml:339
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"      &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"      &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-"
+"class&gt;\n"
+"    &lt;/filter&gt;\n"
+"    \n"
+"    &lt;filter-mapping&gt;\n"
+"      &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"      &lt;url-pattern&gt;/*&lt;/url-pattern&gt;\n"
+"    &lt;/filter-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:340
+#, no-c-format
+msgid ""
+"The following configuration options for multipart requests may be configured "
+"in components.xml:"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:345
+#, no-c-format
+msgid ""
+"<literal>createTempFiles</literal> &mdash; if this option is set to true, "
+"uploaded files are streamed to a temporary file instead of in memory."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:350
+#, no-c-format
+msgid ""
+"<literal>maxRequestSize</literal> &mdash; the maximum size of a file upload "
+"request, in bytes."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:355
+#, no-c-format
+msgid "Here's an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Controls.xml:358
+#, no-c-format
+msgid ""
+"&lt;component class=\"org.jboss.seam.servlet.MultipartConfig\"&gt;\n"
+"        &lt;property name=\"createTempFiles\"&gt;true&lt;/property&gt;\n"
+"        &lt;property name=\"maxRequestSize\"&gt;1000000&lt;/property&gt;\n"
+"    &lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:359
+#, no-c-format
+msgid ""
+"And here's a list of the supported attributes for the <literal>fileUpload</"
+"literal> control:"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:364
+#, no-c-format
+msgid ""
+"<literal>data</literal> &mdash; this value binding receives the binary file "
+"data. The receiving field should be declared as a <literal>byte[]</literal> "
+"or <literal>InputStream</literal> (required)."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:369
+#, no-c-format
+msgid ""
+"<literal>contentType</literal> &mdash; this value binding receives the "
+"file's content type (optional)."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:374
+#, no-c-format
+msgid ""
+"<literal>fileName</literal> &mdash; this value binding receives the filename "
+"(optional)."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:379
+#, no-c-format
+msgid ""
+"<literal>accept</literal> &mdash; a comma-separated list of content types to "
+"accept, may not be supported by the browser. E.g. <literal>\"images/png,"
+"images/jpg\"</literal>, <literal>\"images/*\"</literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:384
+#, no-c-format
+msgid "<literal>style</literal> &mdash; The control's style"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:389
+#, no-c-format
+msgid "<literal>styleClass</literal> &mdash; The control's style class"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Conversations.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Conversations.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Conversations.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1248 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Conversations.xml:10
+#, no-c-format
+msgid "Conversations and workspace management"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:11
+#, no-c-format
+msgid "It's time to understand Seam's conversation model in more detail."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:14
+#, no-c-format
+msgid ""
+"Historically, the notion of a Seam \"conversation\" came about as a merger "
+"of three different ideas:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:19
+#, no-c-format
+msgid ""
+"The idea of a <emphasis>workspace</emphasis>, which I encountered in a "
+"project for the Victorian government in 2002. In this project I was forced "
+"to implement workspace management on top of Struts, an experience I pray "
+"never to repeat."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:24
+#, no-c-format
+msgid ""
+"The idea of an <emphasis>application transaction</emphasis> with optimistic "
+"semantics, and the realization that existing frameworks based around a "
+"stateless architecture could not provide effective management of extended "
+"persistence contexts. (The Hibernate team is truly fed up with copping the "
+"blame for <literal>LazyInitializationException</literal>s, which are not "
+"really Hibernate's fault, but rather the fault of the extremely limiting "
+"persistence context model supported by stateless architectures such as the "
+"Spring framework or the traditional <emphasis>stateless session facade</"
+"emphasis> (anti)pattern in J2EE.)"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:29
+#, no-c-format
+msgid "The idea of a workflow <emphasis>task</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:34
+#, no-c-format
+msgid ""
+"By unifying these ideas and providing deep support in the framework, we have "
+"a powerful construct that lets us build richer and more efficient "
+"applications with less code than before."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:38
+#, no-c-format
+msgid "Seam's conversation model"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:39
+#, no-c-format
+msgid ""
+"The examples we have seen so far make use of a very simple conversation "
+"model that follows these rules:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:44
+#, no-c-format
+msgid ""
+"There is always a conversation context active during the apply request "
+"values, process validations, update model values, invoke application and "
+"render response phases of the JSF request lifecycle."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:49
+#, no-c-format
+msgid ""
+"At the end of the restore view phase of the JSF request lifecycle, Seam "
+"attempts to restore any previous long-running conversation context. If none "
+"exists, Seam creates a new temporary conversation context."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:54
+#, no-c-format
+msgid ""
+"When an <literal>@Begin</literal> method is encountered, the temporary "
+"conversation context is promoted to a long running conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:59
+#, no-c-format
+msgid ""
+"When an <literal>@End</literal> method is encountered, any long-running "
+"conversation context is demoted to a temporary conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:64
+#, no-c-format
+msgid ""
+"At the end of the render response phase of the JSF request lifecycle, Seam "
+"stores the contents of a long running conversation context or destroys the "
+"contents of a temporary conversation context."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:69
+#, no-c-format
+msgid ""
+"Any faces request (a JSF postback) will propagate the conversation context. "
+"By default, non-faces requests (GET requests, for example) do not propagate "
+"the conversation context, but see below for more information on this."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:74
+#, no-c-format
+msgid ""
+"If the JSF request lifecycle is foreshortened by a redirect, Seam "
+"transparently stores and restores the current conversation context&mdash;"
+"unless the conversation was already ended via <literal>@End"
+"(beforeRedirect=true)</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:79
+#, no-c-format
+msgid ""
+"Seam transparently propagates the conversation context across JSF postbacks "
+"and redirects. If you don't do anything special, a <emphasis>non-faces "
+"request</emphasis> (a GET request for example) will not propagate the "
+"conversation context and will be processed in a new temporary conversation. "
+"This is usually - but not always - the desired behavior."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:82
+#, no-c-format
+msgid ""
+"If you want to propagate a Seam conversation across a non-faces request, you "
+"need to explicitly code the Seam <emphasis>conversation id</emphasis> as a "
+"request parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:85
+#, no-c-format
+msgid ""
+"&lt;a href=\"main.jsf?conversationId=#{conversation.id}\"&gt;Continue&lt;/"
+"a&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:86
+#, no-c-format
+msgid "Or, the more JSF-ish:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:89
+#, no-c-format
+msgid ""
+"&lt;h:outputLink value=\"main.jsf\"&gt;\n"
+"    &lt;f:param name=\"conversationId\" value=\"#{conversation.id}\"/&gt;\n"
+"    &lt;h:outputText value=\"Continue\"/&gt;\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:90 Conversations.xml:98
+#, no-c-format
+msgid "If you use the Seam tag library, this is equivalent:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:93
+#, no-c-format
+msgid ""
+"&lt;h:outputLink value=\"main.jsf\"&gt;\n"
+"    &lt;s:conversationId/&gt;\n"
+"    &lt;h:outputText value=\"Continue\"/&gt;\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:94
+#, no-c-format
+msgid ""
+"If you wish to disable propagation of the conversation context for a "
+"postback, a similar trick is used:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:97
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;f:param name=\"conversationPropagation\" value=\"none\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:101
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"none\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:102
+#, no-c-format
+msgid ""
+"Note that disabling conversation context propagation is absolutely not the "
+"same thing as ending the conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:105
+#, no-c-format
+msgid ""
+"The <literal>conversationPropagation</literal> request parameter, or the "
+"<literal>&lt;s:conversationPropagation&gt;</literal> tag may even be used to "
+"begin and end conversation, or begin a nested conversation."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:108
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"end\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:109
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Child\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"nested\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:110
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Hotel\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"begin\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:111
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Hotel\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"join\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:112
+#, no-c-format
+msgid ""
+"This conversation model makes it easy to build applications which behave "
+"correctly with respect to multi-window operation. For many applications, "
+"this is all that is needed. Some complex applications have either or both of "
+"the following additional requirements:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:117
+#, no-c-format
+msgid ""
+"A conversation spans many smaller units of user interaction, which execute "
+"serially or even concurrently. The smaller <emphasis>nested conversations</"
+"emphasis> have their own isolated set of conversation state, and also have "
+"access to the state of the outer conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:122
+#, no-c-format
+msgid ""
+"The user is able to switch between many conversations within the same "
+"browser window. This feature is called <emphasis>workspace management</"
+"emphasis>."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:130
+#, no-c-format
+msgid "Nested conversations"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:131
+#, no-c-format
+msgid ""
+"A nested conversation is created by invoking a method marked <literal>@Begin"
+"(nested=true)</literal> inside the scope of an existing conversation. A "
+"nested conversation has its own conversation context, and also has read-only "
+"access to the context of the outer conversation. (It can read the outer "
+"conversation's context variables, but not write to them.) When an "
+"<literal>@End</literal> is subsequently encountered, the nested conversation "
+"will be destroyed, and the outer conversation will resume, by \"popping\" "
+"the conversation stack. Conversations may be nested to any arbitrary depth."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:134
+#, no-c-format
+msgid ""
+"Certain user activity (workspace management, or the back button) can cause "
+"the outer conversation to be resumed before the inner conversation is ended. "
+"In this case it is possible to have multiple concurrent nested conversations "
+"belonging to the same outer conversation. If the outer conversation ends "
+"before a nested conversation ends, Seam destroys all nested conversation "
+"contexts along with the outer context."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:137
+#, no-c-format
+msgid ""
+"A conversation may be thought of as a <emphasis>continuable state</"
+"emphasis>. Nested conversations allow the application to capture a "
+"consistent continuable state at various points in a user interaction, thus "
+"insuring truly correct behavior in the face of backbuttoning and workspace "
+"management."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:140
+#, no-c-format
+msgid ""
+"TODO: an example to show how a nested conversation prevents bad stuff "
+"happening when you backbutton."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:143
+#, no-c-format
+msgid ""
+"Usually, if a component exists in a parent conversation of the current "
+"nested conversation, the nested conversation will use the same instance. "
+"Occasionally, it is useful to have a different instance in each nested "
+"conversation, so that the component instance that exists in the parent "
+"conversation is invisible to its child conversations. You can achieve this "
+"behavior by annotating the component <literal>@PerNestedConversation</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:149
+#, no-c-format
+msgid "Starting conversations with GET requests"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:150
+#, no-c-format
+msgid ""
+"JSF does not define any kind of action listener that is triggered when a "
+"page is accessed via a non-faces request (for example, a HTTP GET request). "
+"This can occur if the user bookmarks the page, or if we navigate to the page "
+"via an <literal>&lt;h:outputLink&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:153
+#, no-c-format
+msgid ""
+"Sometimes we want to begin a conversation immediately the page is accessed. "
+"Since there is no JSF action method, we can't solve the problem in the usual "
+"way, by annotating the action with <literal>@Begin</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:156
+#, no-c-format
+msgid ""
+"A further problem arises if the page needs some state to be fetched into a "
+"context variable. We've already seen two ways to solve this problem. If that "
+"state is held in a Seam component, we can fetch the state in a "
+"<literal>@Create</literal> method. If not, we can define a "
+"<literal>@Factory</literal> method for the context variable."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:159
+#, no-c-format
+msgid ""
+"If none of these options works for you, Seam lets you define a "
+"<emphasis>page action</emphasis> in the <literal>pages.xml</literal> file."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:162
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\" action=\"#{messageManager.list}\"/"
+"&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:163
+#, no-c-format
+msgid ""
+"This action method is called at the beginning of the render response phase, "
+"any time the page is about to be rendered. If a page action returns a non-"
+"null outcome, Seam will process any appropriate JSF and Seam navigation "
+"rules, possibly resulting in a completely different page being rendered."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:166
+#, no-c-format
+msgid ""
+"If <emphasis>all</emphasis> you want to do before rendering the page is "
+"begin a conversation, you could use a built-in action method that does just "
+"that:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:169
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\" action=\"#{conversation.begin}\"/"
+"&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:170
+#, no-c-format
+msgid ""
+"Note that you can also call this built-in action from a JSF control, and, "
+"similarly, you can use <literal>#{conversation.end}</literal> to end "
+"conversations."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:173
+#, no-c-format
+msgid ""
+"If you want more control, to join existing conversations or begin a nested "
+"conversion, to begin a pageflow or an atomic conversation, you should use "
+"the <literal>&lt;begin-conversation&gt;</literal> element."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:176
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\"&gt;\n"
+"       &lt;begin-conversation nested=\"true\" pageflow=\"AddItem\"/&gt;\n"
+"    &lt;page&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:177
+#, no-c-format
+msgid "There is also an <literal>&lt;end-conversation&gt;</literal> element."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:180
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/home.jsp\"&gt;\n"
+"       &lt;end-conversation/&gt;\n"
+"    &lt;page&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:181
+#, no-c-format
+msgid "To solve the first problem, we now have five options:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:186
+#, no-c-format
+msgid ""
+"Annotate the <literal>@Create</literal> method with <literal>@Begin</literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:191
+#, no-c-format
+msgid ""
+"Annotate the <literal>@Factory</literal> method with <literal>@Begin</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:196
+#, no-c-format
+msgid "Annotate the Seam page action method with <literal>@Begin</literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:201
+#, no-c-format
+msgid ""
+"Use <literal>&lt;begin-conversation&gt;</literal> in <literal>pages.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:206
+#, no-c-format
+msgid ""
+"Use <literal>#{conversation.begin}</literal> as the Seam page action method"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:214
+#, no-c-format
+msgid ""
+"Using <literal>&lt;s:link&gt;</literal> and <literal>&lt;s:button&gt;</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:215
+#, no-c-format
+msgid ""
+"JSF command links always perform a form submission via JavaScript, which "
+"breaks the web browser's \"open in new window\" or \"open in new tab\" "
+"feature. In plain JSF, you need to use an <literal>&lt;h:outputLink&gt;</"
+"literal> if you need this functionality. But there are two major limitations "
+"to <literal>&lt;h:outputLink&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:220
+#, no-c-format
+msgid ""
+"JSF provides no way to attach an action listener to an <literal>&lt;h:"
+"outputLink&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:225
+#, no-c-format
+msgid ""
+"JSF does not propagate the selected row of a <literal>DataModel</literal> "
+"since there is no actual form submission."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:230
+#, no-c-format
+msgid ""
+"Seam provides the notion of a <emphasis>page action</emphasis> to help solve "
+"the first problem, but this does nothing to help us with the second problem. "
+"We <emphasis>could</emphasis> work around this by using the RESTful approach "
+"of passing a request parameter and requerying for the selected object on the "
+"server side. In some cases&mdash;such as the Seam blog example "
+"application&mdash;this is indeed the best approach. The RESTful style "
+"supports bookmarking, since it does not require server-side state. In other "
+"cases, where we don't care about bookmarks, the use of <literal>@DataModel</"
+"literal> and <literal>@DataModelSelection</literal> is just so convenient "
+"and transparent!"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:233
+#, no-c-format
+msgid ""
+"To fill in this missing functionality, and to make conversation propagation "
+"even simpler to manage, Seam provides the <literal>&lt;s:link&gt;</literal> "
+"JSF tag."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:236
+#, no-c-format
+msgid "The link may specify just the JSF view id:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:239
+#, no-c-format
+msgid ""
+"&lt;s:link view=&#8220;/login.xhtml&#8221; value=&#8220;Login&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:240
+#, no-c-format
+msgid ""
+"Or, it may specify an action method (in which case the action outcome "
+"determines the page that results):"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:243
+#, no-c-format
+msgid ""
+"&lt;s:link action=&#8220;#{login.logout}&#8221; value=&#8220;Logout&#8221;/"
+"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:244
+#, no-c-format
+msgid ""
+"If you specify <emphasis>both</emphasis> a JSF view id and an action method, "
+"the 'view' will be used <emphasis>unless</emphasis> the action method "
+"returns a non-null outcome:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:247
+#, no-c-format
+msgid ""
+"&lt;s:link view=\"/loggedOut.xhtml\"  action=&#8220;#{login.logout}&#8221; "
+"value=&#8220;Logout&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:248
+#, no-c-format
+msgid ""
+"The link automatically propagates the selected row of a <literal>DataModel</"
+"literal> using inside <literal>&lt;h:dataTable&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:251
+#, no-c-format
+msgid ""
+"&lt;s:link view=&#8220;/hotel.xhtml&#8221; action=&#8220;#{hotelSearch."
+"selectHotel}&#8221; value=&#8220;#{hotel.name}&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:252
+#, no-c-format
+msgid "You can leave the scope of an existing conversation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:255
+#, no-c-format
+msgid ""
+"&lt;s:link view=&#8220;/main.xhtml&#8221; propagation=&#8220;none&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:256
+#, no-c-format
+msgid "You can begin, end, or nest conversations:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:259
+#, no-c-format
+msgid ""
+"&lt;s:link action=&#8220;#{issueEditor.viewComment}&#8221; "
+"propagation=&#8220;nest&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:260
+#, no-c-format
+msgid ""
+"If the link begins a conversation, you can even specify a pageflow to be "
+"used:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:263
+#, no-c-format
+msgid ""
+"&lt;s:link action=&#8220;#{documentEditor.getDocument}&#8221; "
+"propagation=&#8220;begin&#8221; \n"
+"        pageflow=&#8220;EditDocument&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:264
+#, no-c-format
+msgid ""
+"The <literal>taskInstance</literal> attribute if for use in jBPM task lists:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:267
+#, no-c-format
+msgid ""
+"&lt;s:link action=&#8220;#{documentApproval.approveOrReject}&#8221; "
+"taskInstance=&#8220;#{task}&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:268
+#, no-c-format
+msgid "(See the DVD Store demo application for examples of this.)"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:271
+#, no-c-format
+msgid ""
+"Finally, if you need the \"link\" to be rendered as a button, use "
+"<literal>&lt;s:button&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:274
+#, no-c-format
+msgid ""
+"&lt;s:button action=&#8220;#{login.logout}&#8221; value=&#8220;Logout&#8221;/"
+"&gt;"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:278
+#, no-c-format
+msgid "Success messages"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:279
+#, no-c-format
+msgid ""
+"It is quite common to display a message to the user indicating success or "
+"failure of an action. It is convenient to use a JSF <literal>FacesMessage</"
+"literal> for this. Unfortunately, a successful action often requires a "
+"browser redirect, and JSF does not propagate faces messages across "
+"redirects. This makes it quite difficult to display success messages in "
+"plain JSF."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:282
+#, no-c-format
+msgid ""
+"The built in conversation-scoped Seam component named "
+"<literal>facesMessages</literal> solves this problem. (You must have the "
+"Seam redirect filter installed.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:285
+#, no-c-format
+msgid ""
+"@Name(\"editDocumentAction\")\n"
+"@Stateless\n"
+"public class EditDocumentBean implements EditDocument {\n"
+"    @In EntityManager em;\n"
+"    @In Document document;\n"
+"    @In FacesMessages facesMessages;\n"
+"    \n"
+"    public String update() {\n"
+"        em.merge(document);\n"
+"        facesMessages.add(\"Document updated\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:286
+#, no-c-format
+msgid ""
+"Any message added to <literal>facesMessages</literal> is used in the very "
+"next render response phase for the current conversation. This even works "
+"when there is no long-running conversation since Seam preserves even "
+"temporary conversation contexts across redirects."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:289
+#, no-c-format
+msgid "You can even include JSF EL expressions in a faces message summary:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:292
+#, no-c-format
+msgid "facesMessages.add(\"Document #{document.title} was updated\");"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:293
+#, no-c-format
+msgid "You may display the messages in the usual way, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:296
+#, no-c-format
+msgid "&lt;h:messages globalOnly=\"true\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:300
+#, no-c-format
+msgid "Using an \"explicit\" conversation id"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:301
+#, no-c-format
+msgid ""
+"Ordinarily, Seam generates a meaningless unique id for each conversation in "
+"each session. You can customize the id value when you begin the conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:304
+#, no-c-format
+msgid ""
+"This feature can be used to customize the conversation id generation "
+"algorithm like so:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:307
+#, no-c-format
+msgid ""
+"@Begin(id=\"#{myConversationIdGenerator.nextId}\") \n"
+"public void editHotel() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:308
+#, no-c-format
+msgid "Or it can be used to assign a meaningful conversation id:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:311
+#, no-c-format
+msgid ""
+"@Begin(id=\"hotel#{hotel.id}\") \n"
+"public String editHotel() { ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:312
+#, no-c-format
+msgid ""
+"@Begin(id=\"hotel#{hotelsDataModel.rowData.id}\") \n"
+"public String selectHotel() { ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:313
+#, no-c-format
+msgid ""
+"@Begin(id=\"entry#{params['blogId']}\")\n"
+"public String viewBlogEntry() { ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:314
+#, no-c-format
+msgid ""
+"@BeginTask(id=\"task#{taskInstance.id}\") \n"
+"public String approveDocument() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:315
+#, no-c-format
+msgid ""
+"Clearly, these example result in the same conversation id every time a "
+"particular hotel, blog or task is selected. So what happens if a "
+"conversation with the same conversation id already exists when the new "
+"conversation begins? Well, Seam detects the existing conversation and "
+"redirects to that conversation without running the <literal>@Begin</literal> "
+"method again. This feature helps control the number of workspaces that are "
+"created when using workspace management."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:321
+#, no-c-format
+msgid "Workspace management"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:322
+#, no-c-format
+msgid ""
+"Workspace management is the ability to \"switch\" conversations in a single "
+"window. Seam makes workspace management completely transparent at the level "
+"of the Java code. To enable workspace management, all you need to do is:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:327
+#, no-c-format
+msgid ""
+"Provide <emphasis>description</emphasis> text for each view id (when using "
+"JSF or Seam navigation rules) or page node (when using jPDL pageflows). This "
+"description text is displayed to the user by the workspace switchers."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:332
+#, no-c-format
+msgid ""
+"Include one or more of the standard workspace switcher JSP or facelets "
+"fragments in your pages. The standard fragments support workspace management "
+"via a drop down menu, a list of conversations, or breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:335
+#, no-c-format
+msgid ""
+"Please refer to the Seam Issue Tracker demo to see all this functionality in "
+"action!"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:339
+#, no-c-format
+msgid "Workspace management and JSF navigation"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:340
+#, no-c-format
+msgid ""
+"When you use JSF or Seam navigation rules, Seam switches to a conversation "
+"by restoring the current <literal>view-id</literal> for that conversation. "
+"The descriptive text for the workspace is defined in a file called "
+"<literal>pages.xml</literal> that Seam expects to find in the <literal>WEB-"
+"INF</literal> directory, right next to <literal>faces-config.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:343
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/main.xhtml\"&gt;Search hotels: #{hotelBooking."
+"searchString}&lt;/page&gt;\n"
+"    &lt;page view-id=\"/hotel.xhtml\"&gt;View hotel: #{hotel.name}&lt;/"
+"page&gt;\n"
+"    &lt;page view-id=\"/book.xhtml\"&gt;Book hotel: #{hotel.name}&lt;/"
+"page&gt;\n"
+"    &lt;page view-id=\"/confirm.xhtml\"&gt;Confirm: #{booking.description}"
+"&lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:344
+#, no-c-format
+msgid ""
+"Note that if this file is missing, the Seam application will continue to "
+"work perfectly! The only missing functionality will be the ability to switch "
+"workspaces."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:350
+#, no-c-format
+msgid "Workspace management and jPDL pageflow"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:351
+#, no-c-format
+msgid ""
+"When you use a jPDL pageflow definition, Seam switches to a conversation by "
+"restoring the current jBPM process state. This is a more flexible model "
+"since it allows the same <literal>view-id</literal> to have different "
+"descriptions depending upon the current <literal>&lt;page&gt;</literal> "
+"node. The description text is defined by the <literal>&lt;page&gt;</literal> "
+"node:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:354
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"shopping\"&gt;\n"
+"\n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"browse\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;page name=\"browse\" view-id=\"/browse.xhtml\"&gt;\n"
+"      &lt;description&gt;DVD Search: #{search.searchPattern}&lt;/"
+"description&gt;\n"
+"      &lt;transition to=\"browse\"/&gt;\n"
+"      &lt;transition name=\"checkout\" to=\"checkout\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"checkout\" view-id=\"/checkout.xhtml\"&gt;\n"
+"      &lt;description&gt;Purchase: &#36;#{cart.total}&lt;/description&gt;\n"
+"      &lt;transition to=\"checkout\"/&gt;\n"
+"      &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"complete\" view-id=\"/complete.xhtml\"&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:358
+#, no-c-format
+msgid "The conversation switcher"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:359
+#, no-c-format
+msgid ""
+"Include the following fragment in your JSP or facelets page to get a drop-"
+"down menu that lets you switch to any current conversation, or to any other "
+"page of the application:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:362
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{switcher.conversationIdOrOutcome}\"&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Find Issues\" itemValue=\"findIssue\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Create Issue\" itemValue=\"editIssue\"/"
+"&gt;\n"
+"    &lt;f:selectItems value=\"#{switcher.selectItems}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{switcher.select}\" value=\"Switch\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:363
+#, no-c-format
+msgid ""
+"In this example, we have a menu that includes an item for each conversation, "
+"together with two additional items that let the user begin a new "
+"conversation."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:377
+#, no-c-format
+msgid "The conversation list"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:378
+#, no-c-format
+msgid ""
+"The conversation list is very similar to the conversation switcher, except "
+"that it is displayed as a table:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:381
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{conversationList}\" var=\"entry\"\n"
+"        rendered=\"#{not empty conversationList}\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Workspace&lt;/f:facet&gt;\n"
+"        &lt;h:commandLink action=\"#{entry.select}\" value=\"#{entry."
+"description}\"/&gt;\n"
+"        &lt;h:outputText value=\"[current]\" rendered=\"#{entry.current}\"/"
+"&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Activity&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{entry.startDatetime}\"&gt;\n"
+"            &lt;f:convertDateTime type=\"time\" pattern=\"hh:mm a\"/&gt;\n"
+"        &lt;/h:outputText&gt;\n"
+"        &lt;h:outputText value=\" - \"/&gt;\n"
+"        &lt;h:outputText value=\"#{entry.lastDatetime}\"&gt;\n"
+"            &lt;f:convertDateTime type=\"time\" pattern=\"hh:mm a\"/&gt;\n"
+"        &lt;/h:outputText&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"        &lt;h:commandButton action=\"#{entry.select}\" value=\"#{msg.Switch}"
+"\"/&gt;\n"
+"        &lt;h:commandButton action=\"#{entry.destroy}\" value=\"#{msg."
+"Destroy}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:382
+#, no-c-format
+msgid ""
+"We imagine that you will want to customize this for your own application."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:393
+#, no-c-format
+msgid ""
+"The conversation list is nice, but it takes up a lot of space on the page, "
+"so you probably don't want to put it on <emphasis>every</emphasis> page."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:396
+#, no-c-format
+msgid "Notice that the conversation list lets the user destroy workspaces."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:402
+#, no-c-format
+msgid "Breadcrumbs"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:403
+#, no-c-format
+msgid ""
+"Breadcrumbs are useful in applications which use a nested conversation "
+"model. The breadcrumbs are a list of links to conversations in the current "
+"conversation stack:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:406
+#, no-c-format
+msgid ""
+"&lt;t:dataList value=\"#{conversationStack}\" var=\"entry\"&gt;\n"
+"    &lt;h:outputText value=\" | \"/&gt; \n"
+"    &lt;h:commandLink value=\"#{entry.description}\" action=\"#{entry.select}"
+"\"/&gt;\n"
+"&lt;/t:dataList&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:407
+#, no-c-format
+msgid ""
+"Notice that here we are using the MyFaces <literal>&lt;t:dataList&gt;</"
+"literal> component, since JSF amazingly does not provide any standard "
+"component for looping."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:424
+#, no-c-format
+msgid "Conversational components and JSF component bindings"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:425
+#, no-c-format
+msgid ""
+"Conversational components have one minor limitation: they cannot be used to "
+"hold bindings to JSF components. (We generally prefer not to use this "
+"feature of JSF unless absolutely necessary, since it creates a hard "
+"dependency from application logic to the view.) On a postback request, "
+"component bindings are updated during the Restore View phase, before the "
+"Seam conversation context has been restored."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:428
+#, no-c-format
+msgid ""
+"To work around this use an event scoped component to store the component "
+"bindings and inject it into the conversation scoped component that requires "
+"it."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:431
+#, no-c-format
+msgid ""
+"@Name(\"grid\")\n"
+"@Scope(ScopeType.EVENT)\n"
+"public class Grid\n"
+"{\n"
+"    private HtmlPanelGrid htmlPanelGrid;\n"
+"\n"
+"    // getters and setters\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:432
+#, no-c-format
+msgid ""
+"@Name(\"gridEditor\")\n"
+"@Scope(ScopeType.CONVERSATION)\n"
+"public class GridEditor\n"
+"{\n"
+"    @In(required=false)\n"
+"    private Grid grid;\n"
+"    \n"
+"    ...\n"
+"}"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Drools.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Drools.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Drools.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,281 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Drools.xml:10
+#, no-c-format
+msgid "Seam and JBoss Rules"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:11
+#, no-c-format
+msgid ""
+"Seam makes it easy to call JBoss Rules (Drools) rulebases from Seam "
+"components or jBPM process definitions."
+msgstr ""
+
+#. Tag: title
+#: Drools.xml:15
+#, no-c-format
+msgid "Installing rules"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:16
+#, no-c-format
+msgid ""
+"The first step is to make an instance of <literal>org.drools.RuleBase</"
+"literal> available in a Seam context variable. In most rules-driven "
+"applications, rules need to be dynamically deployable, so you will need to "
+"implement some solution that allows you to deploy rules and make them "
+"available to Seam (a future release of Drools will provide a Rule Server "
+"that solves this problem). For testing purposes, Seam provides a built-in "
+"component that compiles a static set of rules from the classpath. You can "
+"install this component via <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:19
+#, no-c-format
+msgid ""
+"&lt;drools:rule-base name=\"policyPricingRules\"&gt;\n"
+"    &lt;drools:rule-files&gt;\n"
+"        &lt;value&gt;policyPricingRules&lt;/value&gt;\n"
+"    &lt;/drools:rule-files&gt;\n"
+"&lt;/drools:rule-base&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:20
+#, no-c-format
+msgid ""
+"This component compiles rules from a set of <literal>.drl</literal> files "
+"and caches an instance of <literal>org.drools.RuleBase</literal> in the Seam "
+"<literal>APPLICATION</literal> context. Note that it is quite likely that "
+"you will need to install multiple rule bases in a rule-driven application."
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:23
+#, no-c-format
+msgid ""
+"If you want to use a Drools DSL, you alse need to specify the DSL definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:26
+#, no-c-format
+msgid ""
+"&lt;drools:rule-base name=\"policyPricingRules\" dsl-file=\"policyPricing.dsl"
+"\"&gt;\n"
+"    &lt;drools:rule-files&gt;\n"
+"        &lt;value&gt;policyPricingRules&lt;/value&gt;\n"
+"    &lt;/drools:rule-files&gt;\n"
+"&lt;/drools:rule-base&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:27
+#, no-c-format
+msgid ""
+"Next, we need to make an instance of <literal>org.drools.WorkingMemory</"
+"literal> available to each conversation. (Each <literal>WorkingMemory</"
+"literal> accumulates facts relating to the current conversation.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:30
+#, no-c-format
+msgid ""
+"&lt;drools:managed-working-memory name=\"policyPricingWorkingMemory\" auto-"
+"create=\"true\" rule-base=\"#{policyPricingRules}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:31
+#, no-c-format
+msgid ""
+"Notice that we gave the <literal>policyPricingWorkingMemory</literal> a "
+"reference back to our rule base via the <literal>ruleBase</literal> "
+"configuration property."
+msgstr ""
+
+#. Tag: title
+#: Drools.xml:37
+#, no-c-format
+msgid "Using rules from a Seam component"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:38
+#, no-c-format
+msgid ""
+"We can now inject our <literal>WorkingMemory</literal> into any Seam "
+"component, assert facts, and fire rules:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:41
+#, no-c-format
+msgid ""
+"@In WorkingMemory policyPricingWorkingMemory;\n"
+"\n"
+"@In Policy policy;\n"
+"@In Customer customer;\n"
+"\n"
+"public void pricePolicy() throws FactException\n"
+"{\n"
+"    policyPricingWorkingMemory.assertObject(policy);\n"
+"    policyPricingWorkingMemory.assertObject(customer);\n"
+"    policyPricingWorkingMemory.fireAllRules();\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Drools.xml:45
+#, no-c-format
+msgid "Using rules from a jBPM process definition"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:46
+#, no-c-format
+msgid ""
+"You can even allow a rule base to act as a jBPM action handler, decision "
+"handler, or assignment handler&mdash;in either a pageflow or business "
+"process definition."
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:49
+#, no-c-format
+msgid ""
+"&lt;decision name=\"approval\"&gt;\n"
+"         \n"
+"    &lt;handler class=\"org.jboss.seam.drools.DroolsDecisionHandler\"&gt;\n"
+"        &lt;workingMemoryName&gt;orderApprovalRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"        &lt;assertObjects&gt;\n"
+"            &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"            &lt;element&gt;#{order}&lt;/element&gt;\n"
+"            &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"        &lt;/assertObjects&gt;\n"
+"    &lt;/handler&gt;\n"
+"    \n"
+"    &lt;transition name=\"approved\" to=\"ship\"&gt;\n"
+"        &lt;action class=\"org.jboss.seam.drools.DroolsActionHandler\"&gt;\n"
+"            &lt;workingMemoryName&gt;shippingRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"            &lt;assertObjects&gt;\n"
+"                &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"            &lt;/assertObjects&gt;\n"
+"        &lt;/action&gt;\n"
+"    &lt;/transition&gt;\n"
+"    \n"
+"    &lt;transition name=\"rejected\" to=\"cancelled\"/&gt;\n"
+"    \n"
+"&lt;/decision&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:50
+#, no-c-format
+msgid ""
+"The <literal>&lt;assertObjects&gt;</literal> element specifies EL "
+"expressions that return an object or collection of objects to be asserted as "
+"facts into the <literal>WorkingMemory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:53
+#, no-c-format
+msgid "There is also support for using Drools for jBPM task assignments:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:56
+#, no-c-format
+msgid ""
+"&lt;task-node name=\"review\"&gt;\n"
+"    &lt;task name=\"review\" description=\"Review Order\"&gt;\n"
+"        &lt;assignment handler=\"org.jboss.seam.drools."
+"DroolsAssignmentHandler\"&gt;\n"
+"            &lt;workingMemoryName&gt;orderApprovalRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"            &lt;assertObjects&gt;\n"
+"                &lt;element&gt;#{actor}&lt;/element&gt;\n"
+"                &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"            &lt;/assertObjects&gt;\n"
+"        &lt;/assignment&gt;\n"
+"    &lt;/task&gt;\n"
+"    &lt;transition name=\"rejected\" to=\"cancelled\"/&gt;\n"
+"    &lt;transition name=\"approved\" to=\"approved\"/&gt;\n"
+"&lt;/task-node&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:57
+#, no-c-format
+msgid ""
+"Certain objects are available to the rules as Drools globals, namely the "
+"jBPM <literal>Assignable</literal>, as <literal>assignable</literal> and a "
+"Seam <literal>Decision</literal> object, as <literal>decision</literal>. "
+"Rules which handle decisions should call <literal>decision.setOutcome"
+"(\"result\")</literal> to determine the result of the decision. Rules which "
+"perform assignments should set the actor id using the <literal>Assignable</"
+"literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:60
+#, no-c-format
+msgid ""
+"package org.jboss.seam.examples.shop\n"
+"\n"
+"import org.jboss.seam.drools.Decision\n"
+"\n"
+"global Decision decision\n"
+"\n"
+"rule \"Approve Order For Loyal Customer\"\n"
+"  when\n"
+"    Customer( loyaltyStatus == \"GOLD\" )\n"
+"    Order( totalAmount &lt;= 10000 )\n"
+"  then\n"
+"    decision.setOutcome(\"approved\");\n"
+"end"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:61
+#, no-c-format
+msgid ""
+"package org.jboss.seam.examples.shop\n"
+"\n"
+"import org.jbpm.taskmgmt.exe.Assignable\n"
+"\n"
+"global Assignable assignable\n"
+"\n"
+"rule \"Assign Review For Small Order\"\n"
+"  when\n"
+"    Order( totalAmount &lt;= 100 )\n"
+"  then\n"
+"    assignable.setPooledActors( new String[] {\"reviewers\"} );\n"
+"end"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Elenhancements.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Elenhancements.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Elenhancements.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,221 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Elenhancements.xml:10
+#, no-c-format
+msgid "Expression language enhancements"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:11
+#, no-c-format
+msgid ""
+"The standard Unified Expression Language (EL) assumes that any parameters to "
+"a method expression will be provided by Java code. This means that a method "
+"with parameters cannot be used as a JSF method binding. Seam provides an "
+"enhancement to the EL that allows parameters to be included in a method "
+"expression itself. This applies to <emphasis>any</emphasis> Seam method "
+"expression, including any JSF method binding, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:14
+#, no-c-format
+msgid ""
+"&lt;s:commandButton action=\"#{hotelBooking.bookHotel(hotel)}\" value=\"Book "
+"Hotel\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:16
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:17
+#, no-c-format
+msgid ""
+"To use this feature in Facelets, you will need to declare a special view "
+"handler, <literal>SeamFaceletViewHandler</literal> in <literal>faces-config."
+"xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:20
+#, no-c-format
+msgid ""
+"&lt;faces-config&gt;\n"
+"    &lt;application&gt;\n"
+"        &lt;view-handler&gt;org.jboss.seam.ui.facelet."
+"SeamFaceletViewHandler&lt;/view-handler&gt;\n"
+"    &lt;/application&gt;\n"
+"&lt;/faces-config&gt;"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:24
+#, no-c-format
+msgid "Usage"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:25
+#, no-c-format
+msgid "Parameters are surrounded by parentheses, and separated by commas:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:28
+#, no-c-format
+msgid ""
+"&lt;h:commandButton action=\"#{hotelBooking.bookHotel(hotel, user)}\" value="
+"\"Book Hotel\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:29
+#, no-c-format
+msgid ""
+"The parameters <literal>hotel</literal> and <literal>user</literal> will be "
+"evaluated as value expressions and passed to the <literal>bookHotel()</"
+"literal> method of the component. This gives you an alternative to the use "
+"of <literal>@In</literal>."
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:32
+#, no-c-format
+msgid "Any value expression may be used as a parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:35
+#, no-c-format
+msgid ""
+"&lt;h:commandButton action=\"#{hotelBooking.bookHotel(hotel.id, user."
+"username)}\" value=\"Book Hotel\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:36
+#, no-c-format
+msgid "You may even pass literal strings using single or double quotes:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:39
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=&#8221;#{printer.println( &#8216;Hello world!"
+"&#8217; )}&#8221; value=&#8221;Hello&#8221;/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:40
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=&#8217;#{printer.println( &#8220;Hello "
+"again&#8221; )}&#8217; value=&#8217;Hello&#8217;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:41
+#, no-c-format
+msgid ""
+"You might even want to use this notation for all your action methods, even "
+"when you don&#8217;t have parameters to pass. This improves readability by "
+"making it clear that the expression is a method expression and not a value "
+"expression:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:44
+#, no-c-format
+msgid "&lt;s:link value=\"Cancel\" action=\"#{hotelBooking.cancel()}\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:48
+#, no-c-format
+msgid "Limitations"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:49
+#, no-c-format
+msgid "Please be aware of the following limitations:"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:53
+#, no-c-format
+msgid "Incompatibility with JSP 2.1"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:54
+#, no-c-format
+msgid ""
+"This extension is not currently compatible with JSP 2.1. So if you want to "
+"use this extension with JSF 1.2, you will need to use Facelets. The "
+"extension works correctly with JSP 2.0."
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:60
+#, no-c-format
+msgid "Calling a <literal>MethodExpression</literal> from Java code"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:61
+#, no-c-format
+msgid ""
+"Normally, when a <literal>MethodExpression</literal> or "
+"<literal>MethodBinding</literal> is created, the parameter types are passed "
+"in by JSF. In the case of a method binding, JSF assumes that there are no "
+"parameters to pass. With this extension, we can&#8217;t know the parameter "
+"types until after the expression has been evaluated. This has two minor "
+"consequences:"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:66
+#, no-c-format
+msgid ""
+"When you invoke a <literal>MethodExpression</literal> in Java code, "
+"parameters you pass may be ignored. Parameters defined in the expression "
+"will take precedence."
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:71
+#, no-c-format
+msgid ""
+"Ordinarily, it is safe to call <literal>methodExpression.getMethodInfo()."
+"getParamTypes()</literal> at any time. For an expression with parameters, "
+"you must first invoke the <literal>MethodExpression</literal> before calling "
+"<literal>getParamTypes()</literal>."
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:76
+#, no-c-format
+msgid ""
+"Both of these cases are exceedingly rare and only apply when you want to "
+"invoke the <literal>MethodExpression</literal> by hand in Java code."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Events.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Events.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Events.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1430 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Events.xml:10
+#, no-c-format
+msgid "Events, interceptors and exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:11
+#, no-c-format
+msgid ""
+"Complementing the contextual component model, there are two further basic "
+"concepts that facilitate the extreme loose-coupling that is the distinctive "
+"feature of Seam applications. The first is a strong event model where events "
+"may be mapped to event listeners via JSF-like method binding expressions. "
+"The second is the pervasive use of annotations and interceptors to apply "
+"cross-cutting concerns to components which implement business logic."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:14
+#, no-c-format
+msgid "Seam events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:15
+#, no-c-format
+msgid ""
+"The Seam component model was developed for use with <emphasis>event-driven "
+"applications</emphasis>, specifically to enable the development of fine-"
+"grained, loosely-coupled components in a fine-grained eventing model. Events "
+"in Seam come in several types, most of which we have already seen:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:20
+#, no-c-format
+msgid "JSF events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:25
+#, no-c-format
+msgid "jBPM transition events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:30
+#, no-c-format
+msgid "Seam page actions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:35
+#, no-c-format
+msgid "Seam component-driven events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:40
+#, no-c-format
+msgid "Seam contextual events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:45
+#, no-c-format
+msgid ""
+"All of these various kinds of events are mapped to Seam components via JSF "
+"EL method binding expressions. For a JSF event, this is defined in the JSF "
+"template:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:48
+#, no-c-format
+msgid ""
+"&lt;h:commandButton value=\"Click me!\" action=\"#{helloWorld.sayHello}\"/"
+"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:49
+#, no-c-format
+msgid ""
+"For a jBPM transition event, it is specified in the jBPM process definition "
+"or pageflow definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:52
+#, no-c-format
+msgid ""
+"&lt;start-page name=\"hello\" view-id=\"/hello.jsp\"&gt;\n"
+"    &lt;transition to=\"hello\"&gt;\n"
+"        &lt;action expression=\"#{helloWorld.sayHello}\"/&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/start-page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:53
+#, no-c-format
+msgid ""
+"You can find out more information about JSF events and jBPM events "
+"elsewhere. Lets concentrate for now upon the two additional kinds of events "
+"defined by Seam."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:56
+#, no-c-format
+msgid "Page actions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:57
+#, no-c-format
+msgid ""
+"A Seam page action is an event that occurs just before we render a page. We "
+"declare page actions in <literal>WEB-INF/pages.xml</literal>. We can define "
+"a page action for either a particular JSF view id:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:60
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\" action=\"#{helloWorld.sayHello}\"/&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:61
+#, no-c-format
+msgid ""
+"Or we can use a wildcard to specify an action that applies to all view ids "
+"that match the pattern:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:64
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello/*\" action=\"#{helloWorld.sayHello}\"/&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:65
+#, no-c-format
+msgid ""
+"If multiple wildcarded page actions match the current view-id, Seam will "
+"call all the actions, in order of least-specific to most-specific."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:68
+#, no-c-format
+msgid ""
+"The page action method can return a JSF outcome. If the outcome is non-null, "
+"Seam will delegate to the defined JSFadn Seam navigation rules and a "
+"different view may end up being rendered."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:71
+#, no-c-format
+msgid ""
+"Furthermore, the view id mentioned in the <literal>&lt;page&gt;</literal> "
+"element need not correspond to a real JSP or Facelets page! So, we can "
+"reproduce the functionality of a traditional action-oriented framework like "
+"Struts or WebWork using page actions. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:74
+#, no-c-format
+msgid "TODO: translate struts action into page action"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:75
+#, no-c-format
+msgid ""
+"This is quite useful if you want to do complex things in response to non-"
+"faces requests (for example, HTTP GET requests)."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:78
+#, no-c-format
+msgid "Page parameters"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:79
+#, no-c-format
+msgid ""
+"A JSF faces request (a form submission) encapsulates both an \"action\" (a "
+"method binding) and \"parameters\" (input value bindings). A page action "
+"might also needs parameters!"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:82
+#, no-c-format
+msgid ""
+"Since GET requests are bookmarkable, page parameters are passed as human-"
+"readable request parameters. (Unlike JSF form inputs, which are anything "
+"but!)"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:85
+#, no-c-format
+msgid ""
+"Seam lets us provide a value binding that maps a named request parameter to "
+"an attribute of a model object."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:88
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\" action=\"#{helloWorld.sayHello}\"&gt;\n"
+"        &lt;param name=\"firstName\" value=\"#{person.firstName}\"/&gt;\n"
+"        &lt;param name=\"lastName\" value=\"#{person.lastName}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:89
+#, no-c-format
+msgid ""
+"The <literal>&lt;param&gt;</literal> declaration is bidirectional, just like "
+"a value binding for a JSF input:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:94
+#, no-c-format
+msgid ""
+"When a non-faces (GET) request for the view id occurs, Seam sets the value "
+"of the named request parameter onto the model object, after performing "
+"appropriate type conversions."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:99
+#, no-c-format
+msgid ""
+"Any <literal>&lt;s:link&gt;</literal> or <literal>&lt;s:button&gt;</literal> "
+"transparently includes the request parameter. The value of the parameter is "
+"determined by evaluating the value binding during the render phase (when the "
+"<literal>&lt;s:link&gt;</literal> is rendered)."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:104
+#, no-c-format
+msgid ""
+"Any navigation rule with a <literal>&lt;redirect/&gt;</literal> to the view "
+"id transparently includes the request parameter. The value of the parameter "
+"is determined by evaluating the value binding at the end of the invoke "
+"application phase."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:109
+#, no-c-format
+msgid ""
+"The value is transparently propagated with any JSF form submission for the "
+"page with the given view id. (This means that view parameters behave like "
+"<literal>PAGE</literal>-scoped context variables for faces requests."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:114
+#, no-c-format
+msgid ""
+"The essential idea behind all this is that <emphasis>however</emphasis> we "
+"get from any other page to <literal>/hello.jsp</literal> (or from <literal>/"
+"hello.jsp</literal> back to <literal>/hello.jsp</literal>), the value of the "
+"model attribute referred to in the value binding is \"remembered\", without "
+"the need for a conversation (or other server-side state)."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:117
+#, no-c-format
+msgid ""
+"This all sounds pretty complex, and you're probably wondering if such an "
+"exotic construct is really worth the effort. Actually, the idea is very "
+"natural once you \"get it\". It is definitely worth taking the time to "
+"understand this stuff. Page parameters are the most elegant way to propagate "
+"state across a non-faces request. They are especially cool for problems like "
+"search screens with bookmarkable results pages, where we would like to be "
+"able to write our application code to handle both POST and GET requests with "
+"the same code. Page parameters eliminate repetitive listing of request "
+"parameters in the view definition and make redirects much easier to code."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:120
+#, no-c-format
+msgid ""
+"Note that you don't need an actual page action method binding to use a page "
+"parameter. The following is perfectly valid:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:123
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\"&gt;\n"
+"        &lt;param name=\"firstName\" value=\"#{person.firstName}\"/&gt;\n"
+"        &lt;param name=\"lastName\" value=\"#{person.lastName}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:124
+#, no-c-format
+msgid "You can even specify a JSF converter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:127
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/calculator.jsp\" action=\"#{calculator.calculate}"
+"\"&gt;\n"
+"        &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"        &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"        &lt;param name=\"op\" converterId=\"com.my.calculator."
+"OperatorConverter\" value=\"#{calculator.op}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:128
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/calculator.jsp\" action=\"#{calculator.calculate}"
+"\"&gt;\n"
+"        &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"        &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"        &lt;param name=\"op\" converter=\"#{operatorConverter}\" value=\"#"
+"{calculator.op}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:129
+#, no-c-format
+msgid "Navigation"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:130
+#, no-c-format
+msgid ""
+"You can use standard JSF navigation rules defined in <literal>faces-config."
+"xml</literal> in a Seam application. However, JSF navigation rules have a "
+"number of annoying limitations:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:135
+#, no-c-format
+msgid ""
+"It is not possible to specify request parameters to be used when redirecting."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:140
+#, no-c-format
+msgid "It is not possible to begin or end conversations from a rule."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:145
+#, no-c-format
+msgid ""
+"Rules work by evaluating the return value of the action method; it is not "
+"possible to evaluate an arbitrary EL expression."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:150
+#, no-c-format
+msgid ""
+"A further problem is that \"orchestration\" logic gets scattered between "
+"<literal>pages.xml</literal> and <literal>faces-config.xml</literal>. It's "
+"better to unify this logic into <literal>pages.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:153
+#, no-c-format
+msgid "This JSF navigation rule:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:156
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"    &lt;from-view-id&gt;/editDocument.xhtml&lt;/from-view-id&gt;\n"
+"    \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-action&gt;#{documentEditor.update}&lt;/from-action&gt;\n"
+"        &lt;from-outcome&gt;success&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/viewDocument.xhtml&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"    \n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:157
+#, no-c-format
+msgid "Can be rewritten as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:160
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if-outcome=\"success\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:161
+#, no-c-format
+msgid ""
+"But it would be even nicer if we didn't have to pollute our "
+"<literal>DocumentEditor</literal> component with string-valued return values "
+"(the JSF outcomes). So Seam lets us write:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:164
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\" \n"
+"                   evaluate=\"#{documentEditor.errors.size}\"&gt;\n"
+"        &lt;rule if-outcome=\"0\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:165
+#, no-c-format
+msgid "Or even:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:168
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:169
+#, no-c-format
+msgid ""
+"The first form evaluates a value binding to determine the outcome value to "
+"be used by the subsequent rules. The second approach ignores the outcome and "
+"evaluates a value binding for each possible rule."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:172
+#, no-c-format
+msgid ""
+"Of course, when an update succeeds, we probably want to end the current "
+"conversation. We can do that like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:175
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:176
+#, no-c-format
+msgid ""
+"But ending the conversation loses any state associated with the "
+"conversation, including the document we are currently interested in! One "
+"solution would be to use an immediate render instead of a redirect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:179
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:180
+#, no-c-format
+msgid ""
+"But the correct solution is to pass the document id as a request parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:183
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"&gt;\n"
+"                &lt;param name=\"documentId\" value=\"#{documentEditor."
+"documentId}\"/&gt;\n"
+"            &lt;/redirect&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:184
+#, no-c-format
+msgid ""
+"Null outcomes are a special case in JSF. The null outcome is interpreted to "
+"mean \"redisplay the page\". The following navigation rule matches any non-"
+"null outcome, but <emphasis>not</emphasis> the null outcome:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:187
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule&gt;\n"
+"            &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:188
+#, no-c-format
+msgid ""
+"If you want to perform navigation when a null outcome occurs, use the "
+"following form instead:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:191
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:192
+#, no-c-format
+msgid ""
+"Fine-grained files for definition of navigation, page actions and parameters"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:193
+#, no-c-format
+msgid ""
+"If you have a lot of different page actions and page parameters, or even "
+"just a lot of navigation rules, you will almost certainly want to split the "
+"declarations up over multiple files. You can define actions and parameters "
+"for a page with the view id <literal>/calc/calculator.jsp</literal> in a "
+"resource named <literal>calc/calculator.page.xml</literal>. The root element "
+"in this case is the <literal>&lt;page&gt;</literal> element, and the view id "
+"is implied:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:196
+#, no-c-format
+msgid ""
+"&lt;page action=\"#{calculator.calculate}\"&gt;\n"
+"    &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"    &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"    &lt;param name=\"op\" converter=\"#{operatorConverter}\" value=\"#"
+"{calculator.op}\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:197
+#, no-c-format
+msgid "Component-driven events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:198
+#, no-c-format
+msgid ""
+"Seam components can interact by simply calling each others methods. Stateful "
+"components may even implement the observer/observable pattern. But to enable "
+"components to interact in a more loosely-coupled fashion than is possible "
+"when the components call each others methods directly, Seam provides "
+"<emphasis>component-driven events</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:201
+#, no-c-format
+msgid ""
+"We specify event listeners (observers) in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:204
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;event type=\"hello\"&gt;\n"
+"        &lt;action expression=\"#{helloListener.sayHelloBack}\"/&gt;\n"
+"        &lt;action expression=\"#{logger.logHello}\"/&gt;\n"
+"    &lt;/event&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:205
+#, no-c-format
+msgid "Where the <emphasis>event type</emphasis> is just an arbitrary string."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:208
+#, no-c-format
+msgid ""
+"When an event occurs, the actions registered for that event will be called "
+"in the order they appear in <literal>components.xml</literal>. How does a "
+"component raise an event? Seam provides a built-in component for this."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:211
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World!\");\n"
+"        Events.instance().raiseEvent(\"hello\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:212
+#, no-c-format
+msgid "Or you can use an annotation."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:215
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    @RaiseEvent(\"hello\")\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World!\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:216
+#, no-c-format
+msgid ""
+"Notice that this event producer has no dependency upon event consumers. The "
+"event listener may now be implemented with absolutely no dependency upon the "
+"producer:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:219
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    public void sayHelloBack() {\n"
+"        FacesMessages.instance().add(\"Hello to you too!\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:220
+#, no-c-format
+msgid ""
+"The method binding defined in <literal>components.xml</literal> above takes "
+"care of mapping the event to the consumer. If you don't like futzing about "
+"in the <literal>components.xml</literal> file, you can use an annotation "
+"instead:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:223
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    @Observer(\"hello\")\n"
+"    public void sayHelloBack() {\n"
+"        FacesMessages.instance().add(\"Hello to you too!\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:224
+#, no-c-format
+msgid ""
+"You might wonder why I've not mentioned anything about event objects in this "
+"discussion. In Seam, there is no need for an event object to propagate state "
+"between event producer and listener. State is held in the Seam contexts, and "
+"is shared between components. However, if you really want to pass an event "
+"object, you can:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:227
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    private String name;\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World, my name is #0.\", "
+"name);\n"
+"        Events.instance().raiseEvent(\"hello\", name);\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:228
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    @Observer(\"hello\")\n"
+"    public void sayHelloBack(String name) {\n"
+"        FacesMessages.instance().add(\"Hello #0!\", name);\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:229
+#, no-c-format
+msgid "Contextual events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:230
+#, no-c-format
+msgid ""
+"Seam defines a number of built-in events that the application can use to "
+"perform special kinds of framework integration. The events are:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:235
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preSetVariable.&lt;name&gt;</literal> &mdash; called "
+"when the context variable &lt;name&gt; is set"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:240
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postSetVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is set"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:245
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preRemoveVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is unset"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:250
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postRemoveVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is unset"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:255
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preDestroyContext.&lt;SCOPE&gt;</literal> &mdash; "
+"called before the &lt;SCOPE&gt; context is destroyed"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:260
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postDestroyContext.&lt;SCOPE&gt;</literal> &mdash; "
+"called after the &lt;SCOPE&gt; context is destroyed"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:265
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beginConversation </literal>&mdash; called whenever "
+"a long-running conversation begins"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:270
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endConversation </literal>&mdash; called whenever a "
+"long-running conversation ends"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:275
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beginPageflow.&lt;name&gt; </literal>&mdash; called "
+"when the pageflow &lt;name&gt; begins"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:280
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endPageflow.&lt;name&gt; </literal>&mdash; called "
+"when the pageflow &lt;name&gt; ends"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:285
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.createProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; is created"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:290
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; ends"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:295
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.initProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; is associated with the conversation"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:300
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.initTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is associated with the conversation"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:305
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.startTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is started"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:310
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is ended"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:315
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postCreate.&lt;name&gt; </literal>&mdash; called "
+"when the component &lt;name&gt; is created"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:320
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preDestroy.&lt;name&gt; </literal>&mdash; called "
+"when the component &lt;name&gt; is destroyed"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:325
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beforePhase </literal>&mdash; called before the "
+"start of a JSF phase"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:330
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.afterPhase </literal>&mdash; called after the end of "
+"a JSF phase"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:335
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postAuthenticate.&lt;name&gt; </literal>&mdash; "
+"called after a user is authenticated"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:340
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preAuthenticate.&lt;name&gt; </literal>&mdash; "
+"called before attempting to authenticate a user"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:345
+#, no-c-format
+msgid ""
+"Seam components may observe any of these events in just the same way they "
+"observe any other component-driven events."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:348
+#, no-c-format
+msgid "Seam interceptors"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:349
+#, no-c-format
+msgid ""
+"EJB 3.0 introduced a standard interceptor model for session bean components. "
+"To add an interceptor to a bean, you need to write a class with a method "
+"annotated <literal>@AroundInvoke</literal> and annotate the bean with an "
+"<literal>@Interceptors</literal> annotation that specifies the name of the "
+"interceptor class. For example, the following interceptor checks that the "
+"user is logged in before allowing invoking an action listener method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:352
+#, no-c-format
+msgid ""
+"public class LoggedInInterceptor {\n"
+"\n"
+"   @AroundInvoke\n"
+"   public Object checkLoggedIn(InvocationContext invocation) throws "
+"Exception {\n"
+"   \n"
+"      boolean isLoggedIn = Contexts.getSessionContext().get(\"loggedIn\")!"
+"=null;\n"
+"      if (isLoggedIn) {\n"
+"         //the user is already logged in\n"
+"         return invocation.proceed();\n"
+"      }\n"
+"      else {\n"
+"         //the user is not logged in, fwd to login page\n"
+"         return \"login\";\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:353
+#, no-c-format
+msgid ""
+"To apply this interceptor to a session bean which acts as an action "
+"listener, we must annotate the session bean <literal>@Interceptors"
+"(LoggedInInterceptor.class)</literal>. This is a somewhat ugly annotation. "
+"Seam builds upon the interceptor framework in EJB3 by allowing you to use "
+"<literal>@Interceptors</literal> as a meta-annotation. In our example, we "
+"would create an <literal>@LoggedIn</literal> annotation, as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:356
+#, no-c-format
+msgid ""
+"@Target(TYPE)\n"
+"@Retention(RUNTIME)\n"
+"@Interceptors(LoggedInInterceptor.class)\n"
+"public @interface LoggedIn {}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:357
+#, no-c-format
+msgid ""
+"We can now simply annotate our action listener bean with <literal>@LoggedIn</"
+"literal> to apply the interceptor."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:360
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"changePasswordAction\")\n"
+"@LoggedIn\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class ChangePasswordAction implements ChangePassword { \n"
+"    \n"
+"    ...\n"
+"    \n"
+"    public String changePassword() { ... }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:361
+#, no-c-format
+msgid ""
+"If interceptor ordering is important (it usually is), you can add "
+"<literal>@Interceptor</literal> annotations to your interceptor classes to "
+"specify a partial order of interceptors."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:364
+#, no-c-format
+msgid ""
+"@Interceptor(around={BijectionInterceptor.class,\n"
+"                     ValidationInterceptor.class,\n"
+"                     ConversationInterceptor.class},\n"
+"             within=RemoveInterceptor.class)\n"
+"public class LoggedInInterceptor\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:365
+#, no-c-format
+msgid ""
+"You can even have a \"client-side\" interceptor, that runs around any of the "
+"built-in functionality of EJB3:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:368
+#, no-c-format
+msgid ""
+"@Interceptor(type=CLIENT)\n"
+"public class LoggedInInterceptor\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:369
+#, no-c-format
+msgid ""
+"EJB interceptors are stateful, with a lifecycle that is the same as the "
+"component they intercept. For interceptors which do not need to maintain "
+"state, Seam lets you get a performance optimization by specifying "
+"<literal>@Interceptor(stateless=true)</literal>."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:372
+#, no-c-format
+msgid ""
+"Much of the functionality of Seam is implemented as a set of built-in Seam "
+"interceptors, including the interceptors named in the previous example. You "
+"don't have to explicitly specify these interceptors by annotating your "
+"components; they exist for all interceptable Seam components."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:375
+#, no-c-format
+msgid ""
+"You can even use Seam interceptors with JavaBean components, not just EJB3 "
+"beans!"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:378
+#, no-c-format
+msgid ""
+"EJB defines interception not only for business methods (using "
+"<literal>@AroundInvoke</literal>), but also for the lifecycle methods "
+"<literal>@PostConstruct</literal>, <literal>@PreDestroy</literal>, "
+"<literal>@PrePassivate</literal> and <literal>@PostActive</literal>. Seam "
+"supports all these lifecycle methods on both component and interceptor not "
+"only for EJB3 beans, but also for JavaBean components (except "
+"<literal>@PreDestroy</literal> which is not meaningful for JavaBean "
+"components)."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:381
+#, no-c-format
+msgid "Managing exceptions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:382
+#, no-c-format
+msgid ""
+"JSF is surprisingly limited when it comes to exception handling. As a "
+"partial workaround for this problem, Seam lets you define how a particular "
+"class of exception is to be treated by annotating the exception class, or "
+"declaring the exception class in an XML file. This facility is meant to be "
+"combined with the EJB 3.0-standard <literal>@ApplicationException</literal> "
+"annotation which specifies whether the exception should cause a transaction "
+"rollback."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:385
+#, no-c-format
+msgid "Exceptions and transactions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:386
+#, no-c-format
+msgid ""
+"EJB specifies well-defined rules that let us control whether an exception "
+"immediately marks the current transaction for rollback when it is thrown by "
+"a business method of the bean: <emphasis>system exceptions</emphasis> always "
+"cause a transaction rollback, <emphasis>application exceptions</emphasis> do "
+"not cause a rollback by default, but they do if "
+"<literal>@ApplicationException(rollback=true)</literal> is specified. (An "
+"application exception is any checked exception, or any unchecked exception "
+"annotated <literal>@ApplicationException</literal>. A system exception is "
+"any unchecked exception without an <literal>@ApplicationException</literal> "
+"annotation.)"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:389
+#, no-c-format
+msgid ""
+"Note that there is a difference between marking a transaction for rollback, "
+"and actually rolling it back. The exception rules say that the transaction "
+"should be marked rollback only, but it may still be active after the "
+"exception is thrown."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:392
+#, no-c-format
+msgid ""
+"Seam applies the EJB 3.0 exception rollback rules also to Seam JavaBean "
+"components."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:395
+#, no-c-format
+msgid ""
+"But these rules only apply in the Seam component layer. What about an "
+"exception that is uncaught and propagates out of the Seam component layer, "
+"and out of the JSF layer? Well, it is always wrong to leave a dangling "
+"transaction open, so Seam rolls back any active transaction when an "
+"exception occurs and is uncaught in the Seam component layer."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:398
+#, no-c-format
+msgid "Enabling Seam exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:399
+#, no-c-format
+msgid ""
+"To enable Seam's exception handling, we need to make sure we have the master "
+"servlet filter declared in <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:402
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.servlet.SeamFilter&lt;/filter-"
+"class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:403
+#, no-c-format
+msgid "Using annotations for exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:404
+#, no-c-format
+msgid ""
+"The following exception results in a HTTP 404 error whenever it propagates "
+"out of the Seam component layer. It does not roll back the current "
+"transaction immediately when thrown, but the transaction will be rolled back "
+"if it the exception is not caught by another Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:407
+#, no-c-format
+msgid ""
+"@HttpError(errorCode=404)\n"
+"public class ApplicationException extends Exception { ... }"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:408
+#, no-c-format
+msgid ""
+"This exception results in a browser redirect whenever it propagates out of "
+"the Seam component layer. It also ends the current conversation. It causes "
+"an immediate rollback of the current transaction."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:411
+#, no-c-format
+msgid ""
+"@Redirect(viewId=\"/failure.xhtml\", end=true)\n"
+"@ApplicationException(rollback=true)\n"
+"public class UnrecoverableApplicationException extends RuntimeException "
+"{ ... }"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:412
+#, no-c-format
+msgid ""
+"Note that <literal>@Redirect</literal> does not work for exceptions which "
+"occur during the render phase of the JSF lifecycle."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:415
+#, no-c-format
+msgid ""
+"This exception results in a redirect, along with a message to the user, when "
+"it propagates out of the Seam component layer. It also immediately rolls "
+"back the current transaction."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:418
+#, no-c-format
+msgid ""
+"@Redirect(viewId=\"/error.xhtml\", message=\"Unexpected error\")\n"
+"public class SystemException extends RuntimeException { ... }"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:419
+#, no-c-format
+msgid "Using XML for exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:420
+#, no-c-format
+msgid ""
+"Since we can't add annotations to all the exception classes we are "
+"interested in, Seam also lets us specify this functionality in "
+"<literal>pages.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:423
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   \n"
+"   &lt;exception class=\"javax.persistence.EntityNotFoundException\"&gt;\n"
+"      &lt;http-error error-code=\"404\"/&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"   &lt;exception class=\"javax.persistence.PersistenceException\"&gt;\n"
+"      &lt;end-conversation/&gt;\n"
+"      &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"          &lt;message&gt;Database access failed&lt;/message&gt;\n"
+"      &lt;/redirect&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"   &lt;exception&gt;\n"
+"      &lt;end-conversation/&gt;\n"
+"      &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"          &lt;message&gt;Unexpected failure&lt;/message&gt;\n"
+"      &lt;/redirect&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:424
+#, no-c-format
+msgid ""
+"The last <literal>&lt;exception&gt;</literal> declaration does not specify a "
+"class, and is a catch-all for any exception for which handling is not "
+"otherwise specified via annotations or in <literal>pages.xml</literal>."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Framework.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Framework.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Framework.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,828 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Framework.xml:10
+#, no-c-format
+msgid "The Seam Application Framework"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:11
+#, no-c-format
+msgid ""
+"Seam makes it really easy to create applications by writing plain Java "
+"classes with annotations, which don't need to extend any special interfaces "
+"or superclasses. But we can simplify some common programming tasks even "
+"further, by providing a set of pre-built components which can be re-used "
+"either by configuration in <literal>components.xml</literal> (for very "
+"simple cases) or extension."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:14
+#, no-c-format
+msgid ""
+"The <emphasis>Seam Application Framework</emphasis> can reduce the amount of "
+"code you need to write when doing basic database access in a web "
+"application, using either Hibernate or JPA."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:17
+#, no-c-format
+msgid ""
+"We should emphasize that the framework is extremely simple, just a handful "
+"of simple classes that are easy to understand and extend. The \"magic\" is "
+"in Seam itself&mdash;the same magic you use when creating any Seam "
+"application even without using this framework."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:21
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:22
+#, no-c-format
+msgid ""
+"The components provided by the Seam application framework may be used in one "
+"of two different approaches. The first way is to install and configure an "
+"instance of the component in <literal>components.xml</literal>, just like we "
+"have done with other kinds of built-in Seam components. For example, the "
+"following fragment from <literal>components.xml</literal> installs a "
+"component which can perform basic CRUD operations for a <literal>Contact</"
+"literal> entity:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:25
+#, no-c-format
+msgid ""
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" \n"
+"                       entity-manager=\"#{personDatabase}\"&gt;\n"
+"    &lt;framework:id&gt;#{param.personId}&lt;/framework:id&gt;\n"
+"&lt;/framework:entity-home&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:26
+#, no-c-format
+msgid ""
+"If that looks a bit too much like \"programming in XML\" for your taste, you "
+"can use extension instead:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:29
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; implements "
+"LocalPersonHome {\n"
+"    @RequestParameter String personId;\n"
+"    @In EntityManager personDatabase;\n"
+"    \n"
+"    public Object getId() { return personId; }\n"
+"    public EntityManager getEntityManager() { return personDatabase; }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:30
+#, no-c-format
+msgid ""
+"The second approach has one huge advantage: you can easily add extra "
+"functionality, and override the built-in functionality (the framework "
+"classes were carefully designed for extension and customization)."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:33
+#, no-c-format
+msgid ""
+"A second advantage is that your classes may be EJB stateful sessin beans, if "
+"you like. (They do not have to be, they can be plain JavaBean components if "
+"you prefer.)"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:36
+#, no-c-format
+msgid ""
+"At this time, the Seam Application Framework provides just four built-in "
+"components: <literal>EntityHome</literal> and <literal>HibernateEntityHome</"
+"literal> for CRUD, along with <literal>EntityQuery</literal> and "
+"<literal>HibernateEntityQuery</literal> for queries."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:39
+#, no-c-format
+msgid ""
+"The Home and Query components are written so that they can function with a "
+"scope of session, event or conversation. Which scope you use depends upon "
+"the state model you wish to use in your application."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:42
+#, no-c-format
+msgid ""
+"The Seam Application Framework only works with Seam-managed persistence "
+"contexts. By default, the components will look for a persistence context "
+"named <literal>entityManager</literal>."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:48
+#, no-c-format
+msgid "Home objects"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:49
+#, no-c-format
+msgid ""
+"A Home object provides persistence operations for a particular entity class. "
+"Suppose we have our trusty <literal>Person</literal> class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:52
+#, no-c-format
+msgid ""
+"@Entity\n"
+"public class Person {\n"
+"    @Id private Long id;\n"
+"    private String firstName;\n"
+"    private String lastName;\n"
+"    private Country nationality;\n"
+"    \n"
+"    //getters and setters...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:53
+#, no-c-format
+msgid ""
+"We can define a <literal>personHome</literal> component either via "
+"configuration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:56
+#, no-c-format
+msgid ""
+"&lt;framework:entity-home name=\"personHome\" entity-class=\"eg.Person\" /"
+"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:57
+#, no-c-format
+msgid "Or via extension:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:60
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:61
+#, no-c-format
+msgid ""
+"A Home object provides the following operations: <literal>persist()</"
+"literal>, <literal>remove()</literal>, <literal>update()</literal> and "
+"<literal>getInstance()</literal>. Before you can call the <literal>remove()</"
+"literal>, or <literal>update()</literal> operations, you must first set the "
+"identifier of the object you are interested in, using the <literal>setId()</"
+"literal> method."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:64
+#, no-c-format
+msgid "We can use a Home directly from a JSF page, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:67
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Create Person&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{personHome.instance."
+"firstName}\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{personHome.instance."
+"lastName}\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:68
+#, no-c-format
+msgid ""
+"Usually, it is much nicer to be able to refer to the <literal>Person</"
+"literal> merely as <literal>person</literal>, so let's make that possible by "
+"adding a line to <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:71
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:72
+#, no-c-format
+msgid ""
+"(If we are using configuration.) Or by adding a <literal>@Factory</literal> "
+"method to <literal>PersonHome</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:75
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:76
+#, no-c-format
+msgid ""
+"(If we are using extension.) This change simplifies our JSF page to the "
+"following:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:79
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Create Person&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{person.firstName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{person.lastName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:80
+#, no-c-format
+msgid ""
+"Well, that lets us create new <literal>Person</literal> entries. Yes, that "
+"is all the code that is required! Now, if we want to be able to display, "
+"update and delete pre-existing <literal>Person</literal> entries in the "
+"database, we need to be able to pass the entry identifier to the "
+"<literal>PersonHome</literal>. Page parameters are a great way to do that:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:83
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page viewid=\"/editPerson.jsp\"&gt;\n"
+"        &lt;param name=\"personId\" value=\"#{personHome.id}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:84
+#, no-c-format
+msgid "Now we can add the extra operations to our JSF page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:87
+#, no-c-format
+msgid ""
+"&lt;h1&gt;\n"
+"    &lt;h:outputText rendered=\"#{!personHome.managed}\" value=\"Create "
+"Person\"/&gt;\n"
+"    &lt;h:outputText rendered=\"#{personHome.managed}\" value=\"Edit Person"
+"\"/&gt;\n"
+"&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{person.firstName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{person.lastName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\" \n"
+"            rendered=\"#{!personHome.managed}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Update Person\" action=\"#{personHome."
+"update}\" \n"
+"            rendered=\"#{personHome.managed}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Delete Person\" action=\"#{personHome."
+"remove}\" \n"
+"            rendered=\"#{personHome.managed}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:88
+#, no-c-format
+msgid ""
+"When we link to the page with no request parameters, the page will be "
+"displayed as a \"Create Person\" page. When we provide a value for the "
+"<literal>personId</literal> request parameter, it will be an \"Edit Person\" "
+"page."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:91
+#, no-c-format
+msgid ""
+"Suppose we need to create <literal>Person</literal> entries with their "
+"nationality initialized. We can do that easily, via configuration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:94
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" \n"
+"                       new-instance=\"#{newPerson}\"/&gt;\n"
+"\n"
+"&lt;component name=\"newPerson\" \n"
+"           class=\"eg.Person\"&gt;\n"
+"    &lt;property name=\"nationality\"&gt;#{country}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:95
+#, no-c-format
+msgid "Or by extension:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:98
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:99
+#, no-c-format
+msgid ""
+"Of course, the <literal>Country</literal> could be an object managed by "
+"another Home object, for example, <literal>CountryHome</literal>."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:102
+#, no-c-format
+msgid ""
+"To add more sophisticated operations (association management, etc), we can "
+"just add methods to <literal>PersonHome</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:105
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"    public void migrate()\n"
+"    {\n"
+"        getInstance().setCountry(country);\n"
+"        update();\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:106
+#, no-c-format
+msgid ""
+"The Home object automatically displays faces messages when an operation is "
+"successful. To customize these messages we can, again, use configuration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:109
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\"\n"
+"                       entity-class=\"eg.Person\"\n"
+"                       new-instance=\"#{newPerson}\"&gt;\n"
+"    &lt;framework:created-message&gt;New person #{person.firstName} #{person."
+"lastName} \n"
+"        created&lt;/framework:created-message&gt;\n"
+"    &lt;framework:deleted-message&gt;Person #{person.firstName} #{person."
+"lastName}\n"
+"        deleted&lt;/framework:deleted-message&gt;\n"
+"    &lt;framework:updated-message&gt;Person #{person.firstName} #{person."
+"lastName} \n"
+"        updated&lt;/framework:updated-message&gt;\n"
+"&lt;/framework:entity-home&gt;\n"
+"\n"
+"&lt;component name=\"newPerson\" \n"
+"           class=\"eg.Person\"&gt;\n"
+"    &lt;property name=\"nationality\"&gt;#{country}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:110
+#, no-c-format
+msgid "Or extension:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:113
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"    protected String getCreatedMessage() { return \"New person #{person."
+"firstName} \n"
+"        #{person.lastName} created\"; }\n"
+"    protected String getUpdatedMessage() { return \"Person #{person."
+"firstName} \n"
+"        #{person.lastName} updated\"; }\n"
+"    protected String getDeletedMessage() { return \"Person #{person."
+"firstName} \n"
+"        #{person.lastName} deleted\"; }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:114
+#, no-c-format
+msgid ""
+"But the best way to specify the messages is to put them in a resource bundle "
+"known to Seam (the bundle named <literal>messages</literal>, by default)."
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:117
+#, no-c-format
+msgid ""
+"Person_created=New person #{person.firstName} #{person.lastName} created\n"
+"Person_deleted=Person #{person.firstName} #{person.lastName} deleted\n"
+"Person_updated=Person #{person.firstName} #{person.lastName} updated"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:118
+#, no-c-format
+msgid ""
+"This enables internationalization, and keeps your code and configuration "
+"clean of presentation concerns."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:121
+#, no-c-format
+msgid ""
+"The final step is to add validation functionality to the page, using "
+"<literal>&lt;s:validateAll&gt;</literal> and <literal>&lt;s:decorate&gt;</"
+"literal>, but I'll leave that for you to figure out."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:127
+#, no-c-format
+msgid "Query objects"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:128
+#, no-c-format
+msgid ""
+"If we need a list of all <literal>Person</literal> instance in the database, "
+"we can use a Query object. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:131
+#, no-c-format
+msgid ""
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:132
+#, no-c-format
+msgid "We can use it from a JSF page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:135
+#, no-c-format
+msgid ""
+"&lt;h1&gt;List of people&lt;/h1&gt;\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view-id=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:136
+#, no-c-format
+msgid "We probably need to support pagination:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:139
+#, no-c-format
+msgid ""
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\" \n"
+"                        order=\"lastName\" \n"
+"                        max-results=\"20\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:140
+#, no-c-format
+msgid "We'll use a page parameter to determine the page to display:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:143
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page viewid=\"/searchPerson.jsp\"&gt;\n"
+"        &lt;param name=\"firstResult\" value=\"#{people.firstResult}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:144
+#, no-c-format
+msgid "The JSF code for a pagination control is a bit verbose, but manageable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:147
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Search for people&lt;/h1&gt;\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view-id=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.previousExists}\" "
+"value=\"First Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"0\"/&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.previousExists}\" "
+"value=\"Previous Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.previousFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.nextExists}\" value="
+"\"Next Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.nextFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.nextExists}\" value="
+"\"Last Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.lastFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:148
+#, no-c-format
+msgid ""
+"Real search screens let the user enter a bunch of optional search criteria "
+"to narrow the list of results returned. The Query object lets you specify "
+"optional \"restrictions\" to support this important usecase:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:151
+#, no-c-format
+msgid ""
+"&lt;component name=\"examplePerson\" class=\"Person\"/&gt;\n"
+"        \n"
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\" \n"
+"                        order=\"lastName\" \n"
+"                        max-results=\"20\"&gt;\n"
+"    &lt;framework:restrictions&gt;\n"
+"        &lt;value&gt;lower(firstName) like lower( #{examplePerson.firstName} "
+"+ '&#37;' )&lt;/value&gt;\n"
+"        &lt;value&gt;lower(lastName) like lower( #{examplePerson.lastName} + "
+"'&#37;' )&lt;/value&gt;\n"
+"    &lt;/framework:restrictions&gt;\n"
+"&lt;/framework:entity-query&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:152
+#, no-c-format
+msgid "Notice the use of an \"example\" object."
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:155
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Search for people&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{examplePerson.firstName}"
+"\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{examplePerson.lastName}"
+"\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;&lt;h:commandButton value=\"Search\" action=\"/search.jsp\"/"
+"&gt;&lt;/div&gt;\n"
+"&lt;/h:form&gt;\n"
+"\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view-id=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:156
+#, no-c-format
+msgid ""
+"The examples in this section have all shown reuse by configuration. However, "
+"reuse by extension is equally possible for Query objects."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:162
+#, no-c-format
+msgid "Controller objects"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:163
+#, no-c-format
+msgid ""
+"A totally optional part of the Seam Application Framework is the class "
+"<literal>Controller</literal> and its subclasses <literal>EntityController</"
+"literal><literal>HibernateEntityController</literal> and "
+"<literal>BusinessProcessController</literal>. These classes provide nothing "
+"more than some convenience methods for access to commonly used built-in "
+"components and methods of built-in components. They help save a few "
+"keystrokes (characters can add up!) and provide a great launchpad for new "
+"users to explore the rich functionality built in to Seam."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:166
+#, no-c-format
+msgid ""
+"For example, here is what <literal>RegisterAction</literal> from the Seam "
+"registration example would look like:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:169
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"register\")\n"
+"public class RegisterAction extends EntityController implements Register\n"
+"{\n"
+"\n"
+"   @In private User user;\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = createQuery(\"select u.username from User u where u."
+"username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getResultList();\n"
+"      \n"
+"      if ( existing.size()==0 )\n"
+"      {\n"
+"         persist(user);\n"
+"         info(\"Registered new user #{user.username}\");\n"
+"         return \"/registered.jspx\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         addFacesMessage(\"User #{user.username} already exists\");\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:170
+#, no-c-format
+msgid "As you can see, its not an earthshattering improvement..."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Gettingstarted.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Gettingstarted.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Gettingstarted.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,588 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Gettingstarted.xml:10
+#, no-c-format
+msgid "Getting started with Seam, using seam-gen"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:11
+#, no-c-format
+msgid ""
+"The Seam distribution includes a command line utility that makes it really "
+"easy to set up an Eclipse project, generate some simple Seam skeleton code, "
+"and reverse engineer an application from a pre-existing database."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:14
+#, no-c-format
+msgid ""
+"This is the easy way to get your feet wet with Seam, and gives you some "
+"ammunition for next time you find yourself trapped in an elevator with one "
+"of those tedious Ruby guys ranting about how great and wonderful his new toy "
+"is for building totally trivial applications that put things in databases."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:17
+#, no-c-format
+msgid ""
+"In this release, seam-gen works best for people with JBoss AS. You can use "
+"the generated project with other J2EE or Java EE 5 application servers by "
+"making a few manual changes to the project configuration."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:20
+#, no-c-format
+msgid ""
+"You <emphasis>can</emphasis> use seam-gen without Eclipse, but in this "
+"tutorial, we want to show you how to use it in conjunction with Eclipse for "
+"debugging and integration testing. If you don't want to install Eclipse, you "
+"can still follow along with this tutorial&mdash;all steps can be peformed "
+"from the command line."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:23
+#, no-c-format
+msgid ""
+"Seam-gen is basically just a big ugly Ant script wrapped around Hibernate "
+"Tools, together with some templates. Which means it is easy to customize if "
+"you need to."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:27
+#, no-c-format
+msgid "Before you start"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:28
+#, no-c-format
+msgid ""
+"Make sure you have JDK 5 or JDK 6, JBoss AS 4.0.5 and Ant 1.6, along with "
+"recent versions of Eclipse, the JBoss IDE plugin for Eclipse and the TestNG "
+"plugin for Eclipse correctly installed before starting. Add your JBoss "
+"installation to the JBoss Server View in Eclipse. Start JBoss in debug mode. "
+"Finally, start a command prompt in the directory where you unzipped the Seam "
+"distribution."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:34
+#, no-c-format
+msgid "Setting up a new Eclipse project"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:35
+#, no-c-format
+msgid ""
+"The first thing we need to do is configure seam-gen for your environment: "
+"JBoss AS installation directory, Eclipse workspace, and database connection. "
+"It's easy, just type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:38
+#, no-c-format
+msgid ""
+"cd jboss-seam-1.1.x\n"
+"seam setup"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:39
+#, no-c-format
+msgid "And you will be prompted for the needed information:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:42
+#, no-c-format
+msgid ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam setup\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"setup:\n"
+"    [echo] Welcome to seam-gen :-)\n"
+"    [input] Enter your Java project workspace [C:/Projects]\n"
+"\n"
+"    [input] Enter your JBoss home directory [C:/Program Files/jboss-4.0.5."
+"GA]\n"
+"\n"
+"    [input] Enter the project name [myproject]\n"
+"helloworld\n"
+"    [input] Is this project deployed as an EAR (with EJB components) or a "
+"WAR \n"
+"        (with no EJB support) [ear] (ear,war,)\n"
+"\n"
+"    [input] Enter the Java package name for your session beans [com.mydomain."
+"helloworld]\n"
+"org.jboss.helloworld\n"
+"    [input] Enter the Java package name for your entity beans [org.jboss."
+"helloworld]\n"
+"\n"
+"    [input] Enter the Java package name for your test cases [org.jboss."
+"helloworld.test]\n"
+"\n"
+"    [input] What kind of database are you using? [hsql]\n"
+"    (hsql,mysql,oracle,postgres,mssql,db2,sybase,)\n"
+"mysql\n"
+"    [input] Enter the Hibernate dialect for your database [org.hibernate."
+"dialect.MySQLDialect]\n"
+"\n"
+"    [input] Enter the filesystem path to the JDBC driver jar [lib/hsqldb."
+"jar]\n"
+"../../mysql-connector.jar\n"
+"    [input] Enter JDBC driver class for your database [com.mysql.jdbc."
+"Driver]\n"
+"\n"
+"    [input] Enter the JDBC URL for your database [jdbc:mysql:///test]\n"
+"\n"
+"    [input] Enter database username [sa]\n"
+"gavin\n"
+"    [input] Enter database password []\n"
+"\n"
+"    [input] Are you working with tables that already exist in the database? "
+"[n] (y,n,)\n"
+"y\n"
+"    [input] Do you want to drop and recreate the database tables and data in "
+"import.sql \n"
+"    each time you deploy? [n] (y,n,)\n"
+"n\n"
+"[propertyfile] Creating new property file: C:&#92;Projects&#92;jboss-"
+"seam&#92;seam-gen&#92;build.properties\n"
+"     [echo] Installing JDBC driver jar to JBoss server\n"
+"     [echo] Type 'seam new-project' to create the new project\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 1 minute 17 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:43
+#, no-c-format
+msgid ""
+"The tool provides sensible defaults, which you can accept by just pressing "
+"enter at the prompt."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:46
+#, no-c-format
+msgid ""
+"The most important choice you need to make is between EAR deployment and WAR "
+"deployment of your project. EAR projects support EJB 3.0 and require Java EE "
+"5. WAR projects do not support EJB 3.0, but may be deployed to a J2EE "
+"environment. The packaging of a WAR is also simpler to understand. If you "
+"installed JBoss with the ejb3 profile, choose <literal>ear</literal>. "
+"Otherwise, choose <literal>war</literal>. We'll assume that you've chosen an "
+"EAR deployment for the rest of the tutorial, but you can follow exactly the "
+"same steps for a WAR deployment."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:49
+#, no-c-format
+msgid ""
+"If you are working with an existing data model, make sure you tell seam-gen "
+"that the tables already exist in the database."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:52
+#, no-c-format
+msgid ""
+"The settings are stored in <literal>seam-gen/build.properties</literal>, but "
+"you can also modify them simply by running <literal>seam setup</literal> a "
+"second time."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:55
+#, no-c-format
+msgid ""
+"Now we can create a new project in our Eclipse workspace directory, by "
+"typing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:58
+#, no-c-format
+msgid "seam new-project"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:59
+#, no-c-format
+msgid ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam new-project\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"copy-lib:\n"
+"     [echo] Copying project jars ...\n"
+"     [copy] Copying 32 files to C:&#92;Projects&#92;helloworld&#92;lib\n"
+"     [copy] Copying 9 files to C:&#92;Projects&#92;helloworld&#92;embedded-"
+"ejb\n"
+"\n"
+"file-copy-wtp:\n"
+"\n"
+"file-copy:\n"
+"     [echo] Copying project resources ...\n"
+"     [copy] Copying 12 files to C:&#92;Projects&#92;helloworld&#92;"
+"resources\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;helloworld&#92;resources\n"
+"     [copy] Copying 5 files to C:&#92;Projects&#92;helloworld&#92;view\n"
+"     [copy] Copying 5 files to C:&#92;Projects&#92;helloworld\n"
+"    [mkdir] Created dir: C:&#92;Projects&#92;helloworld&#92;src\n"
+"\n"
+"new-project:\n"
+"     [echo] A new Seam project was created in the C:/Projects directory\n"
+"     [echo] Add the project from inside Eclipse (or type 'seam explode') and "
+"go to http://localhost:\n"
+"8080/helloworld\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 7 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:60
+#, no-c-format
+msgid ""
+"This copies the Seam jars, dependent jars and the JDBC driver jar to a new "
+"Eclipse project, and generates all needed resources and configuration files, "
+"a facelets template file and stylesheet, along with Eclipse metadata and an "
+"Ant build script. The Eclipse project will be automatically deployed to an "
+"exploded directory structure in JBoss AS as soon as you add the project "
+"using <literal>New -&gt; Project... -&gt; Java Project -&gt; Next</literal>, "
+"typing the <literal>Project name</literal> (<literal>myproject</literal> in "
+"this case), selecting your Java SE 5 or Java SE 6 JRE and then clicking "
+"<literal>Finish</literal>. Do not select <literal>Create new project from "
+"existing source</literal>. Alternatively, you can deploy the project from "
+"outside Eclipse by typing <literal>seam explode</literal>."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:63
+#, no-c-format
+msgid ""
+"Go to <literal>http://localhost:8080/helloworld</literal> to see a welcome "
+"page. This is a facelets page, <literal>view/home.xhtml</literal>, using the "
+"template <literal>view/layout/template.xhtml</literal>. You can edit this "
+"page, or the template, in eclipse, and see the results "
+"<emphasis>immediately</emphasis>, by clicking refresh in your browser."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:66
+#, no-c-format
+msgid ""
+"Don't get scared by the XML configuration documents that were generated into "
+"the project directory. They are mostly standard Java EE stuff, the stuff you "
+"need to create once and then never look at again, and they are 90&#37; the "
+"same between all Seam projects. (They are so easy to write that even seam-"
+"gen can do it.)"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:69
+#, no-c-format
+msgid ""
+"The generated project includes three database and persistence "
+"configurations. The <literal>jboss-beans.xml</literal>, <literal>persistence-"
+"test.xml</literal> and <literal>import-test.sql</literal> files are used "
+"when running the TestNG unit tests against HSQLDB. The database schema and "
+"the test data in <literal>import-test.sql</literal> is always exported to "
+"the database before running tests. The <literal>myproject-dev-ds.xml</"
+"literal>, <literal>persistence-dev.xml</literal>and <literal>import-dev.sql</"
+"literal> files are for use when deploying the application to your "
+"development database. The schema might be exported automatically at "
+"deployment, depending upon whether you told seam-gen that you are working "
+"with an existing database. The <literal>myproject-prod-ds.xml</literal>, "
+"<literal>persistence-prod.xml</literal>and <literal>import-prod.sql</"
+"literal> files are for use when deploying the application to your production "
+"database. The schema is not exported automatically at deployment."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:75
+#, no-c-format
+msgid "Creating a new action"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:76
+#, no-c-format
+msgid ""
+"If you're used to traditional action-style web frameworks, you're probably "
+"wondering how you can create a simple webpage with a stateless action method "
+"in Java. If you type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:79
+#, no-c-format
+msgid "seam new-action"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:80
+#, no-c-format
+msgid ""
+"Seam will prompt for some information, and generate a new facelets page and "
+"Seam component for your project."
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:83
+#, no-c-format
+msgid ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam new-action ping\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"action-input:\n"
+"    [input] Enter the Seam component name\n"
+"ping\n"
+"    [input] Enter the local interface name [Ping]\n"
+"\n"
+"    [input] Enter the bean class name [PingBean]\n"
+"\n"
+"    [input] Enter the action method name [ping]\n"
+"\n"
+"    [input] Enter the page name [ping]\n"
+"\n"
+"\n"
+"setup-filters:\n"
+"\n"
+"new-action:\n"
+"     [echo] Creating a new stateless session bean component with an action "
+"method\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;view\n"
+"     [echo] Type 'seam restart' and go to \n"
+"     http://localhost:8080/helloworld/ping.seam\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 13 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:84
+#, no-c-format
+msgid ""
+"Because we've added a new Seam component, we need to restart the exploded "
+"directory deployment. You can do this by typing <literal>seam restart</"
+"literal>, or by running the <literal>restart</literal> target in the "
+"generated project <literal>build.xml</literal> file from inside Eclipse. "
+"Another way to force a restart is to edit the file <literal>resources/META-"
+"INF/application.xml</literal> in Eclipse. <emphasis>Note that you do not "
+"need to restart JBoss each time you change the application.</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:87
+#, no-c-format
+msgid ""
+"Now go to <literal>http://localhost:8080/helloworld/ping.seam</literal> and "
+"click the button. You can see the code behind this action by looking in the "
+"project <literal>src</literal> directory. Put a breakpoint in the "
+"<literal>ping()</literal> method, and click the button again."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:90
+#, no-c-format
+msgid ""
+"Finally, locate the <literal>PingTest.xml</literal> file in the test package "
+"and run the integration tests using the TestNG plugin for Eclipse. "
+"Alternatively, run the tests using <literal>seam test</literal> or the "
+"<literal>test</literal> target of the generated build."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:96
+#, no-c-format
+msgid "Creating a form with an action"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:97
+#, no-c-format
+msgid "The next step is to create a form. Type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:100
+#, no-c-format
+msgid "seam new-form"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:101
+#, no-c-format
+msgid ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam new-form\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"action-input:\n"
+"    [input] Enter the Seam component name\n"
+"hello\n"
+"    [input] Enter the local interface name [Hello]\n"
+"\n"
+"    [input] Enter the bean class name [HelloBean]\n"
+"\n"
+"    [input] Enter the action method name [hello]\n"
+"\n"
+"    [input] Enter the page name [hello]\n"
+"\n"
+"\n"
+"setup-filters:\n"
+"\n"
+"new-form:\n"
+"     [echo] Creating a new stateful session bean component with an action "
+"method\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;view\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [echo] Type 'seam restart' and go to http://localhost:8080/hello/hello."
+"seam\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 5 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:102
+#, no-c-format
+msgid ""
+"Restart the application again, and go to <literal>http://localhost:8080/"
+"helloworld/hello.seam</literal>. Then take a look at the generated code. Run "
+"the test. Try adding some new fields to the form and Seam component "
+"(remember to restart the deploment each time you change the Java code)."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:108
+#, no-c-format
+msgid "Generating an application from an existing database"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:109
+#, no-c-format
+msgid ""
+"Manually create some tables in your database. (If you need to switch to a "
+"different database, just run <literal>seam setup</literal> again.) Now type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:112
+#, no-c-format
+msgid "seam generate-entities"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:113
+#, no-c-format
+msgid ""
+"Restart the deployment, and go to <literal>http://localhost:8080/helloworld</"
+"literal>. You can browse the database, edit existing objects, and create new "
+"objects. If you look at the generated code, you'll probably be amazed how "
+"simple it is! Seam was designed so that data access code is easy to write by "
+"hand, even for people who don't want to cheat by using seam-gen."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:119
+#, no-c-format
+msgid "Deploying the application as an EAR"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:120
+#, no-c-format
+msgid ""
+"Finally, we want to be able to deploy the application using standard Java EE "
+"5 packaging. First, we need to remove the exploded directory by running "
+"<literal>seam unexplode</literal>. To deploy the EAR, we can type "
+"<literal>seam deploy</literal> at the command prompt, or run the "
+"<literal>deploy</literal> target of the generated project build script. You "
+"can undeploy using <literal>seam undeploy</literal> or the "
+"<literal>undeploy</literal> target."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:123
+#, no-c-format
+msgid ""
+"By default, the application will be deployed with the <emphasis>dev profile</"
+"emphasis>. The EAR will include the <literal>persistence-dev.xml</literal> "
+"and <literal>import-dev.sql</literal> files, and the <literal>myproject-dev-"
+"ds.xml</literal> file will be deployed. You can change the profile, and use "
+"the <emphasis>prod profile</emphasis>, by typing"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:126
+#, no-c-format
+msgid "seam -Dprofile=prod deploy"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:127
+#, no-c-format
+msgid ""
+"You can even define new deployment profiles for your application. Just add "
+"appropriately named files to your project&mdash;for example, "
+"<literal>persistence-staging.xml</literal>, <literal>import-staging.sql</"
+"literal> and <literal>myproject-staging-ds.xml</literal>&mdash;and select "
+"the name of the profile using <literal>-Dprofile=staging</literal>."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/I18n.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/I18n.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/I18n.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,533 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: I18n.xml:10
+#, no-c-format
+msgid "Internationalization and themes"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:11
+#, no-c-format
+msgid ""
+"Seam makes it easy to build internationalized applications by providing "
+"several built-in components for handling multi-language UI messages."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:15
+#, no-c-format
+msgid "Locales"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:16
+#, no-c-format
+msgid ""
+"Each user login session has an associated instance of <literal>java.util."
+"Locale</literal> (available to the application as a session-scoped component "
+"named <literal>locale</literal>). Under normal circumstances, you won't need "
+"to do any special configuration to set the locale. Seam just delegates to "
+"JSF to determine the active locale:"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:21
+#, no-c-format
+msgid ""
+"If there is a locale associated with the HTTP request (the browser locale), "
+"and that locale is in the list of supported locales from <literal>faces-"
+"config.xml</literal>, use that locale for the rest of the session."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:24
+#, no-c-format
+msgid ""
+"Otherwise, if a default locale was specified in the <literal>faces-config."
+"xml</literal>, use that locale for the rest of the session."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:27
+#, no-c-format
+msgid "Otherwise, use the default locale of the server."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:30
+#, no-c-format
+msgid ""
+"It is <emphasis>possible</emphasis> to set the locale manually via the Seam "
+"configuration properties <literal>org.jboss.seam.core.localeSelector."
+"language</literal>, <literal>org.jboss.seam.core.localeSelector.country</"
+"literal> and <literal>org.jboss.seam.core.localeSelector.variant</literal>, "
+"but we can't think of any good reason to ever do this."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:33
+#, no-c-format
+msgid ""
+"It is, however, useful to allow the user to set the locale manually via the "
+"application user interface. Seam provides built-in functionality for "
+"overriding the locale determined by the algorithm above. All you have to do "
+"is add the following fragment to a form in your JSP or Facelets page:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:36
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{localeSelector.language}\"&gt;\n"
+"    &lt;f:selectItem itemLabel=\"English\" itemValue=\"en\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Deutsch\" itemValue=\"de\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Francais\" itemValue=\"fr\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{localeSelector.select}\" value=\"#{messages"
+"['ChangeLanguage']}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:37
+#, no-c-format
+msgid ""
+"Or, if you want a list of all supported locales from <literal>faces-config."
+"xml</literal>, just use:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:40
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{localeSelector.localeString}\"&gt;\n"
+"    &lt;f:selectItems value=\"#{localeSelector.supportedLocales}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{localeSelector.select}\" value=\"#{messages"
+"['ChangeLanguage']}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:41
+#, no-c-format
+msgid ""
+"When this use selects an item from the drop-down, and clicks the button, the "
+"Seam and JSF locales will be overridden for the rest of the session."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:47
+#, no-c-format
+msgid "Labels"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:48
+#, no-c-format
+msgid ""
+"JSF supports internationalization of user interface labels and descriptive "
+"text via the use of <literal>&lt;f:loadBundle /&gt;</literal>. You can use "
+"this approach in Seam applications. Alternatively, you can take advantage of "
+"the Seam <literal>messages</literal> component to display templated labels "
+"with embedded EL expressions."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:52
+#, no-c-format
+msgid "Defining labels"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:53
+#, no-c-format
+msgid ""
+"Each login session has an associated instance of <literal>java.util."
+"ResourceBundle</literal> (available to the application as a session-scoped "
+"component named <literal>org.jboss.seam.core.resourceBundle</literal>). "
+"You'll need to make your internationalized labels available via this special "
+"resource bundle. By default, the resource bundle used by Seam is named "
+"<literal>messages</literal> and so you'll need to define your labels in "
+"files named <literal>messages.properties</literal>, <literal>messages_en."
+"properties</literal>, <literal>messages_en_AU.properties</literal>, etc. "
+"These files usually belong in the <literal>WEB-INF/classes</literal> "
+"directory."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:56
+#, no-c-format
+msgid "So, in <literal>messages_en.properties</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:59
+#, no-c-format
+msgid "Hello=Hello"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:60
+#, no-c-format
+msgid "And in <literal>messages_en_AU.properties</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:63
+#, no-c-format
+msgid "Hello=G'day"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:64
+#, no-c-format
+msgid ""
+"You can select a different name for the resource bundle by setting the Seam "
+"configuration property named <literal>org.jboss.seam.core.resourceBundle."
+"bundleNames</literal>. You can even specify a list of resource bundle names "
+"to be searched (depth first) for messages."
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:67
+#, no-c-format
+msgid ""
+"&lt;core:resource-bundle&gt;\n"
+"    &lt;core:bundle-names&gt;\n"
+"        &lt;value&gt;mycompany_messages&lt;/value&gt;\n"
+"        &lt;value&gt;standard_messages&lt;/value&gt;       \n"
+"    &lt;/core:bundle-names&gt;\n"
+"&lt;/core:resource-bundle&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:68
+#, no-c-format
+msgid ""
+"If you want to define a message just for a particular page, you can specify "
+"it in a resource bundle with the same name as the JSF view id, with the "
+"leading <literal>/</literal> and trailing file extension removed. So we "
+"could put our message in <literal>welcome/hello_en.properties</literal> if "
+"we only needed to display the message on <literal>/welcome/hello.jsp</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:71
+#, no-c-format
+msgid ""
+"You can even specify an explicit bundle name in <literal>pages.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:74
+#, no-c-format
+msgid "&lt;page view-id=\"/welcome/hello.jsp\" bundle=\"HelloMessages\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:75
+#, no-c-format
+msgid ""
+"Then we could use messages defined in <literal>HelloMessages.properties</"
+"literal> on <literal>/welcome/hello.jsp</literal>."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:81
+#, no-c-format
+msgid "Displaying labels"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:82
+#, no-c-format
+msgid ""
+"If you define your labels using the Seam resource bundle, you'll be able to "
+"use them without having to type <literal>&lt;f:loadBundle ... /&gt;</"
+"literal> on every page. Instead, you can simply type:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:85
+#, no-c-format
+msgid "&lt;h:outputText value=\"#{messages['Hello']}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:86
+#, no-c-format
+msgid "<para>or:</para>"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:89
+#, no-c-format
+msgid "&lt;h:outputText value=\"#{messages.Hello}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:90
+#, no-c-format
+msgid "Even better, the messages themselves may contain EL expressions:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:93
+#, no-c-format
+msgid "Hello=Hello, #{user.firstName} #{user.lastName}"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:94
+#, no-c-format
+msgid "Hello=G'day, #{user.firstName}"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:95
+#, no-c-format
+msgid "You can even use the messages in your code:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:98
+#, no-c-format
+msgid "@In private Map&lt;String, String&gt; messages;"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:99
+#, no-c-format
+msgid "@In(\"#{messages['Hello']}\") private String helloMessage;"
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:103
+#, no-c-format
+msgid "Faces messages"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:104
+#, no-c-format
+msgid ""
+"The <literal>facesMessages</literal> component is a super-convenient way to "
+"display success or failure messages to the user. The functionality we just "
+"described also works for faces messages:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:107
+#, no-c-format
+msgid ""
+"@Name(\"hello\")\n"
+"@Stateless\n"
+"public class HelloBean implements Hello {\n"
+"    @In FacesMessages facesMessages;\n"
+"    \n"
+"    public String sayIt() {\n"
+"        facesMessages.addFromResourceBundle(\"Hello\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:108
+#, no-c-format
+msgid ""
+"This will display <literal>Hello, Gavin King</literal> or <literal>G'day, "
+"Gavin</literal>, depending upon the user's locale."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:116
+#, no-c-format
+msgid "Timezones"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:117
+#, no-c-format
+msgid ""
+"There is also a session-scoped instance of <literal>java.util.Timezone</"
+"literal>, named <literal>org.jboss.seam.core.timezone</literal>, and a Seam "
+"component for changing the timezone named <literal>org.jboss.seam.core."
+"timezoneSelector</literal>. By default, the timezone is the default timezone "
+"of the server. Unfortunately, the JSF specification says that all dates and "
+"times should be assumed to be UTC, and displayed as UTC, unless a timezone "
+"is explicitly specified using <literal>&lt;f:convertDateTime&gt;</literal>. "
+"This is an extremely inconvenient default behavior."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:120
+#, no-c-format
+msgid ""
+"Seam overrides this behavior, and defaults all dates and times to the Seam "
+"timezone. In addition, Seam provides the <literal>&lt;s:convertDateTime&gt;</"
+"literal> tag which always performs conversions in the Seam timezone."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:126
+#, no-c-format
+msgid "Themes"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:127
+#, no-c-format
+msgid ""
+"Seam applications are also very easily skinnable. The theme API is very "
+"similar to the localization API, but of course these two concerns are "
+"orthogonal, and some applications support both localization and themes."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:130
+#, no-c-format
+msgid "First, configure the set of supported themes:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:133
+#, no-c-format
+msgid ""
+"&lt;theme:theme-selector cookie-enabled=\"true\"&gt;\n"
+"    &lt;theme:available-themes&gt;\n"
+"        &lt;value&gt;default&lt;/value&gt;\n"
+"        &lt;value&gt;accessible&lt;/value&gt;\n"
+"        &lt;value&gt;printable&lt;/value&gt;\n"
+"    &lt;/theme:available-themes&gt;\n"
+"&lt;/theme:theme-selector&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:134
+#, no-c-format
+msgid "Note that the first theme listed is the default theme."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:137
+#, no-c-format
+msgid ""
+"Themes are defined in a properties file with the same name as the theme. For "
+"example, the <literal>default</literal> theme is defined as a set of entries "
+"in <literal>default.properties</literal>. For example, <literal>default."
+"properties</literal> might define:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:140
+#, no-c-format
+msgid ""
+"css ../screen.css\n"
+"template template.xhtml"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:141
+#, no-c-format
+msgid ""
+"Usually the entries in a theme resource bundle will be paths to CSS styles "
+"or images and names of facelets templates (unlike localization resource "
+"bundles which are usually text)."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:144
+#, no-c-format
+msgid ""
+"Now we can use these entries in our JSP or facelets pages. For example, to "
+"theme the stylesheet in a facelets page:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:147
+#, no-c-format
+msgid ""
+"&lt;link href=\"#{theme.css}\" rel=\"stylesheet\" type=\"text/css\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:148
+#, no-c-format
+msgid ""
+"Most powerfully, facelets lets us theme the template used by a <literal>&lt;"
+"ui:composition&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:151
+#, no-c-format
+msgid ""
+"&lt;ui:composition xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"    xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"    xmlns:h=\"http://java.sun.com/jsf/html\"\n"
+"    xmlns:f=\"http://java.sun.com/jsf/core\"\n"
+"    template=\"#{theme.template}\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:152
+#, no-c-format
+msgid ""
+"Just like the locale selector, there is a built-in theme selector to allow "
+"the user to freely switch themes:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:155
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{themeSelector.theme}\"&gt;\n"
+"    &lt;f:selectItems value=\"#{themeSelector.themes}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{themeSelector.select}\" value=\"Select Theme"
+"\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:159
+#, no-c-format
+msgid "Persisting locale and theme preferences via cookies"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:160
+#, no-c-format
+msgid ""
+"The locale selector, theme selector and timezone selector all support "
+"persistence of locale and theme preference to a cookie. Simply set the "
+"<literal>cookie-enabled</literal> configuration property:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:163
+#, no-c-format
+msgid ""
+"&lt;theme:theme-selector cookie-enabled=\"true\"&gt;\n"
+"    &lt;theme:available-themes&gt;\n"
+"        &lt;value&gt;default&lt;/value&gt;\n"
+"        &lt;value&gt;accessible&lt;/value&gt;\n"
+"        &lt;value&gt;printable&lt;/value&gt;\n"
+"    &lt;/theme:available-themes&gt;\n"
+"&lt;/theme:theme-selector&gt;\n"
+"\n"
+"&lt;core:locale-selector cookie-enabled=\"true\"/&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Itext.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Itext.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Itext.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1452 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Itext.xml:10
+#, no-c-format
+msgid "iText PDF generation"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:11
+#, no-c-format
+msgid ""
+"Seam now includes an component set for generating documents using iText. The "
+"primary focus of Seam's iText document support is for the generation of PDF "
+"doucuments, but Seam also offers basic support for RTF document generation."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:15
+#, no-c-format
+msgid "Using PDF Support"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:16
+#, no-c-format
+msgid ""
+"iText support is provided by <literal>jboss-seam-pdf.jar</literal>. This JAR "
+"contains the iText JSF controls, which are used to construct views that can "
+"render to PDF, and the DocumentStore component, which serves the rendered "
+"documents to the user. To include PDF support in your application, included "
+"<literal>jboss-seam-pdf.jar</literal> in your <literal>WEB-INF/lib</literal> "
+"directory along with the iText JAR file. There is no further configuration "
+"needed to use Seam's iText support."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:19
+#, no-c-format
+msgid ""
+"The Seam iText module requires the use of Facelets as the view technology. "
+"Future versions of the library may also support the use of JSP. "
+"Additionally, it requires the use of the seam-ui package."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:22
+#, no-c-format
+msgid ""
+"The <literal>examples/itext</literal> project contains an example of the PDF "
+"support in action. It demonstrates proper deployment packaging, and it "
+"contains a number examples that demonstrate the key PDF generation features "
+"current supported."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:28
+#, no-c-format
+msgid "Creating a document"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:29
+#, no-c-format
+msgid ""
+"Documents are generated by facelets documents using tags in the "
+"<literal>http://jboss.com/products/seam/pdf</literal> namespace. Documents "
+"should always have the <literal>document</literal> tag at the root of the "
+"document. The <literal>document</literal> tag prepares Seam to generate a "
+"document into the DocumentStore and renders an HTML redirect to that stored "
+"content. The following is a a small PDF document consisting only a single "
+"line of text:"
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:32
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf"
+"\"&gt;                                                      \n"
+"   The document goes "
+"here.                                                                                             \n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:34
+#, no-c-format
+msgid "p:document"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:35
+#, no-c-format
+msgid ""
+"The <literal>p:document</literal> tag supports the following attributes:"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:40
+#, no-c-format
+msgid "type"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:42
+#, no-c-format
+msgid ""
+"The type of the document to be produced. Valid values are <literal>PDF</"
+"literal>, <literal>RTF</literal> and <literal>HTML</literal> modes. Seam "
+"defaults to PDF generation, and many of the features only work correctly "
+"when generating PDF documents."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:48
+#, no-c-format
+msgid "pageSize"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:50
+#, no-c-format
+msgid ""
+"The size of the page to be generate. The most commonly used values would be "
+"<literal>LETTER</literal> and <literal>A4</literal>. A full list of "
+"supported pages sizes can be found in <literal>com.lowagie.text.PageSize</"
+"literal> class. Alternatively, pageSize can provide the width and height of "
+"the page directly. The value \"612 792\", for example, is equizalent to the "
+"LETTER page size."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:56
+#, no-c-format
+msgid "orientation"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:58
+#, no-c-format
+msgid ""
+"The orientation of the page. Valid values are <literal>portrait</literal> "
+"and <literal>landscape</literal>. In landscape mode, the height and width "
+"page size values are reversed."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:64
+#, no-c-format
+msgid "margins"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:66
+#, no-c-format
+msgid "The left, right, top and bottom margin values."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:72
+#, no-c-format
+msgid "marginMirroring"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:74
+#, no-c-format
+msgid "Indicates that margin settings should be reversed an alternating pages."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:80
+#, no-c-format
+msgid ""
+"Document metadata is also set as attributes of the document tag. The "
+"following metadata fields are supported:"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:85
+#, no-c-format
+msgid "title"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:92
+#, no-c-format
+msgid "subject"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:99
+#, no-c-format
+msgid "keywords"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:106
+#, no-c-format
+msgid "author"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:113
+#, no-c-format
+msgid "creator"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:125
+#, no-c-format
+msgid "Basic Text Elements"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:126
+#, no-c-format
+msgid ""
+"Useful documents will need to contain more than just text; however, the "
+"standard UI components are geared towards HTML generation and are not useful "
+"for generating PDF content. Instead, Seam provides a special UI components "
+"for generating suitable PDF content. Tags like <literal>&lt;p:image&gt;</"
+"literal> and <literal>&lt;p:paragraph&gt;</literal> are the basic "
+"foundations of simple documents. Tags like <literal>&lt;p:font&gt;</literal> "
+"provide style information to all the content surrounging them."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:129
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"&gt; \n"
+"    &lt;p:image alignment=\"right\" wrap=\"true\" resource=\"/logo.jpg\" /"
+"&gt;\n"
+"    &lt;p:font size=\"24\"&gt;\n"
+"        &lt;p:paragraph spacingAfter=\"50\"&gt;My First Document&lt;/p:"
+"paragraph&gt;\n"
+"    &lt;/p:font&gt;\n"
+"\n"
+"    &lt;p:paragraph alignment=\"justify\"&gt;\n"
+"        This is a simple document.  It isn't very fancy.\n"
+"    &lt;/p:paragraph&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:131
+#, no-c-format
+msgid "p:paragraph"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:132
+#, no-c-format
+msgid ""
+"Most uses of text should be sectioned into paragraphs so that text fragments "
+"can be flowed, formatted and styled in logical groups."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:137
+#, no-c-format
+msgid "firstLineIndent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:144 Itext.xml:836
+#, no-c-format
+msgid "extraParagraphSpace"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:151 Itext.xml:808
+#, no-c-format
+msgid "leading"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:158 Itext.xml:815
+#, no-c-format
+msgid "multipliedLeading"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:165 Itext.xml:344 Itext.xml:716
+#, no-c-format
+msgid "spacingBefore"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:167 Itext.xml:346 Itext.xml:718
+#, no-c-format
+msgid "The blank space to be inserted before the element."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:173 Itext.xml:352 Itext.xml:724
+#, no-c-format
+msgid "spacingAfter"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:175 Itext.xml:354 Itext.xml:726
+#, no-c-format
+msgid "The blank space to be inserted after the element."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:181 Itext.xml:330 Itext.xml:599
+#, no-c-format
+msgid "indentationLeft"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:188 Itext.xml:337 Itext.xml:607
+#, no-c-format
+msgid "indentationRight"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:195 Itext.xml:753
+#, no-c-format
+msgid "keepTogether"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:205
+#, no-c-format
+msgid "p:text"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:206
+#, no-c-format
+msgid ""
+"The <literal>text</literal> tag allows text fragments to be produced from "
+"application data using normal JSF converter mechanisms. It is very similar "
+"to the <literal>outputText</literal> tag used when rendering HTML documents. "
+"Here is an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:209
+#, no-c-format
+msgid ""
+"&lt;p:paragraph&gt;\n"
+"    The item costs &lt;p:text value=\"#{product.price}\"&gt;\n"
+"        &lt;f:convertNumber type=\"currency\" currencySymbol=\"&#36;\"/&gt;\n"
+"    &lt;/p:text&gt;\n"
+"&lt;/p:paragraph&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:212
+#, no-c-format
+msgid "value"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:214
+#, no-c-format
+msgid ""
+"The value to be displayed. This will typically be a value binding expression."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:223
+#, no-c-format
+msgid "p:font"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:224
+#, no-c-format
+msgid "Font declarations have no direct"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:229
+#, no-c-format
+msgid "familyName"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:231
+#, no-c-format
+msgid ""
+"The font family. One of: <literal>COURIER</literal>, <literal>HELVETICA</"
+"literal>, <literal>TIMES-ROMAN</literal>, <literal>SYMBOL</literal> or "
+"<literal>ZAPFDINGBATS</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:237
+#, no-c-format
+msgid "size"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:239
+#, no-c-format
+msgid "The point size of the font."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:245 Itext.xml:534
+#, no-c-format
+msgid "style"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:247
+#, no-c-format
+msgid ""
+"The font styles. Any combination of : <literal>NORMAL</literal>, "
+"<literal>BOLD</literal>, <literal>ITALIC</literal>, <literal>OBLIQUE</"
+"literal>, <literal>UNDERLINE</literal>, <literal>LINE-THROUGH</literal>"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:256
+#, no-c-format
+msgid "p:newPage"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:257
+#, no-c-format
+msgid "<literal>p:newPage</literal> inserts a page break."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:263
+#, no-c-format
+msgid "p:image"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:264
+#, no-c-format
+msgid ""
+"<literal>p:image</literal> inserts an image into the document. Images can be "
+"be loaded from the classpath or from the web application context using the "
+"<literal>resource</literal> attribute."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:267
+#, no-c-format
+msgid "&lt;p:image resource=\"/jboss.jpg\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:268
+#, no-c-format
+msgid ""
+"Resources can also be dynamically generated by application code. The "
+"<literal>imageData</literal> attribute can specify a value binding "
+"expression whose value is a <literal>java.awt.Image</literal> object."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:271
+#, no-c-format
+msgid "&lt;p:image imageData=\"#{images.chart}\" /&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:274
+#, no-c-format
+msgid "resource"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:276
+#, no-c-format
+msgid ""
+"The location of the image resource to be included. Resources should be "
+"relative to the document root of the web application."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:282
+#, no-c-format
+msgid "imageData"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:284
+#, no-c-format
+msgid "A method expression binding to an application-generated image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:290 Itext.xml:913
+#, no-c-format
+msgid "rotation"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:292
+#, no-c-format
+msgid "The rotation of the image in degrees."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:298
+#, no-c-format
+msgid "height"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:300
+#, no-c-format
+msgid "The height of the image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:306
+#, no-c-format
+msgid "width"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:308
+#, no-c-format
+msgid "The width of the image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:314 Itext.xml:441 Itext.xml:591
+#, no-c-format
+msgid "alignment"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:316
+#, no-c-format
+msgid ""
+"The alignment of the image. (see <xref linkend=\"Document_Constants-"
+"Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:322
+#, no-c-format
+msgid "<literal>alt</literal>"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:324
+#, no-c-format
+msgid "Alternative text representation for the image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:360 Itext.xml:672
+#, no-c-format
+msgid "widthPercentage"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:367
+#, no-c-format
+msgid "initialRotation"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:374
+#, no-c-format
+msgid "<literal>dpi</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:381
+#, no-c-format
+msgid "scalePercent"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:383
+#, no-c-format
+msgid ""
+"The scaling factor (as a percentage) to use for the image. This can be "
+"expressed as a single percentage value or as two percentage values "
+"representing separate x and y scaling percentages."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:389
+#, no-c-format
+msgid "wrap"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:396
+#, no-c-format
+msgid "underlying"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:406
+#, no-c-format
+msgid "p:anchor"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:407
+#, no-c-format
+msgid ""
+"<literal>p:anchor</literal> defines clickable links from a document. It "
+"supports the following attributes:"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:412
+#, no-c-format
+msgid "name"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:414
+#, no-c-format
+msgid "The name of an in-document anchor destination."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:420
+#, no-c-format
+msgid "reference"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:422
+#, no-c-format
+msgid ""
+"The destination the link refers to. Links to other points in the document "
+"should begin with a \"#\". For example, \"#link1\" to refer to an anchor "
+"postion with a <literal>name</literal> of <literal>link1</literal>. Links "
+"may also be a full URL to point to a resource outside of the document."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:433
+#, no-c-format
+msgid "Headers and Footers"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:435
+#, no-c-format
+msgid "p:header and p:footer"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:436
+#, no-c-format
+msgid ""
+"The <literal>p:header</literal> and <literal>p:footer</literal> components "
+"provide the ability to place header and footer text on each page of a "
+"generated document, with the exception of the first page. Header and footer "
+"declarations should appear near the top of a document."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:443
+#, no-c-format
+msgid ""
+"The alignment of the header/footer box section. (see <xref linkend="
+"\"Document_Constants-Alignment_Values\"/> for alignment values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:449
+#, no-c-format
+msgid "backgroundColor"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:451
+#, no-c-format
+msgid ""
+"The background color of the header/footer box. (see <xref linkend="
+"\"Document_Constants-Color_Values\"/> for color values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:457
+#, no-c-format
+msgid "borderColor"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:459
+#, no-c-format
+msgid ""
+"The border color of the header/footer box. Individual border sides can be "
+"set using <literal>borderColorLeft</literal>, <literal>borderColorRight</"
+"literal>, <literal>borderColorTop</literal> and <literal>borderColorBottom</"
+"literal>.(see <xref linkend=\"Document_Constants-Color_Values\"/> for color "
+"values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:465
+#, no-c-format
+msgid "borderWidth"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:467
+#, no-c-format
+msgid ""
+"The width of the border. Inidvidual border sides can be specified using "
+"<literal>borderWidthLeft</literal>, <literal>borderWidthRight</literal>, "
+"<literal>borderWidthTop</literal> and <literal>borderWidthBottom</literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:476
+#, no-c-format
+msgid "p:pageNumber"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:477
+#, no-c-format
+msgid ""
+"The current page number can be placed inside of a header or footer using the "
+"<literal>p:pageNumber</literal> tag. The page number tag can only be used in "
+"the context of a header or footer and can only be used once."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:485
+#, no-c-format
+msgid "Chapters and Sections"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:486
+#, no-c-format
+msgid ""
+"If the generated document follows a book/article structure, the <literal>p:"
+"chapter</literal> and <literal>p:section</literal> tags can be used to "
+"provide the necessary structure. Sections can only be used inside of "
+"chapters, but they may be nested arbitrarily deep. Most PDF viewers provide "
+"easy navigation between chapters and sections in a document."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:489
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"\n"
+"            title=\"Hello\"&gt;\n"
+"\n"
+"   &lt;p:chapter number=\"1\"&gt;\n"
+"      &lt;p:title&gt;&lt;p:paragraph&gt;Hello&lt;/p:paragraph&gt;&lt;/p:"
+"title&gt;\n"
+"      &lt;p:paragraph&gt;Hello #{user.name}!&lt;/p:paragraph&gt;\n"
+"   &lt;/p:chapter&gt;\n"
+"\n"
+"   &lt;p:chapter number=\"2\"&gt;\n"
+"      &lt;p:title&gt;&lt;p:paragraph&gt;Goodbye&lt;/p:paragraph&gt;&lt;/p:"
+"title&gt;\n"
+"      &lt;p:paragraph&gt;Goodbye #{user.name}.&lt;/p:paragraph&gt;\n"
+"   &lt;/p:chapter&gt;\n"
+"\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:491
+#, no-c-format
+msgid "p:chapter and p:section"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:494
+#, no-c-format
+msgid "number"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:496
+#, no-c-format
+msgid "The chapter number. Every chapter should be assigned a chapter number."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:502
+#, no-c-format
+msgid "numberDepth"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:504
+#, no-c-format
+msgid ""
+"The depth of numbering for section. All sections are numbered relative to "
+"their surrounding chapter/sections. The fourth section of of the first "
+"section of chapter three would be section 3.1.4, if displayed at the default "
+"number depth of three. To omit the chapter number, a number depth of 2 "
+"should be used. In that case, the section number would be displayed as 1.4."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:513
+#, no-c-format
+msgid "p:title"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:514
+#, no-c-format
+msgid ""
+"Any chapter or section can contain a <literal>p:title</literal>. The title "
+"will be displayed next to the chapter/section number. The body of the title "
+"may contain raw text or may be a <literal>p:paragraph</literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:522
+#, no-c-format
+msgid "Lists"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:523
+#, no-c-format
+msgid ""
+"List structures can be displayed using the <literal>p:list</literal> and "
+"<literal>p:listItem</literal> tags. Lists may contain arbitrarily-nested "
+"sublists. List items may not be used outside of a list. he following "
+"document uses the <literal>ui:repeat</literal> tag to to display a list of "
+"values retrieved from a Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:526
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"\n"
+"            xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"            title=\"Hello\"&gt;\n"
+"   &lt;p:list style=\"numbered\"&gt;\n"
+"      &lt;ui:repeat value=\"#{documents}\" var=\"doc\"&gt;\n"
+"         &lt;p:listItem&gt;#{doc.name}&lt;/p:listItem&gt;\n"
+"      &lt;/ui:repeat&gt;\n"
+"   &lt;/p:list&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:528
+#, no-c-format
+msgid "p:list"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:529
+#, no-c-format
+msgid "<literal>p:list</literal> supports the following attributes:"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:536
+#, no-c-format
+msgid ""
+"The ordering/bulleting style of list. One of: <literal>NUMBERED</literal>, "
+"<literal>LETTERED</literal>, <literal>GREEK</literal>, <literal>ROMAN</"
+"literal>, <literal>ZAPFDINGBATS</literal>, <literal>ZAPFDINGBATS_NUMBER</"
+"literal>. If no style is given, the list items are bulleted."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:542 Itext.xml:615
+#, no-c-format
+msgid "listSymbol"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:544
+#, no-c-format
+msgid "For bulleted lists, specifies the bullet symbol."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:550 Itext.xml:822
+#, no-c-format
+msgid "indent"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:552
+#, no-c-format
+msgid "The indentation level of the list."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:558
+#, no-c-format
+msgid "lowerCase"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:560
+#, no-c-format
+msgid ""
+"For list styles using letters, indicates whether the letters should be lower "
+"case."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:566
+#, no-c-format
+msgid "charNumber"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:568
+#, no-c-format
+msgid "For ZAPFDINGBATS, indicates the character code of the bullet character."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:574
+#, no-c-format
+msgid "numberType"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:576
+#, no-c-format
+msgid "For ZAPFDINGBATS_NUMBER, indicates the numbering style."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:585
+#, no-c-format
+msgid "p:listItem"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:586
+#, no-c-format
+msgid "<literal>p:listItem</literal> supports the following attributes:"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:593
+#, no-c-format
+msgid ""
+"The alignment of the list item. (See <xref linkend=\"Document_Constants-"
+"Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:601
+#, no-c-format
+msgid "The left indentation amount."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:609
+#, no-c-format
+msgid "The right indentation amount."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:617
+#, no-c-format
+msgid "Overrides the default list symbol for this list item."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:628
+#, no-c-format
+msgid "Tables"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:629
+#, no-c-format
+msgid ""
+"Table structures can be created using the <literal>p:table</literal> and "
+"<literal>p:cell</literal> tags. Unlike many table structures, there is no "
+"explicit row declaration. If a table has 3 columns, then every 3 cells will "
+"automatically form a row. Header and footer rows can be declared, and the "
+"headers and footers will be repeated in the event a table structure spans "
+"multiple pages."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:632
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"   \n"
+"            xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"            title=\"Hello\"&gt;   \n"
+"   &lt;p:table columns=\"3\" headerRows=\"1\"&gt;\n"
+"      &lt;p:cell&gt;name&lt;/p:cell&gt;\n"
+"      &lt;p:cell&gt;owner&lt;/p:cell&gt;\n"
+"      &lt;p:cell&gt;size&lt;/p:cell&gt;\n"
+"      &lt;ui:repeat value=\"#{documents}\" var=\"doc\"&gt;\n"
+"         &lt;p:cell&gt;#{doc.name}&lt;/p:cell&gt;\n"
+"         &lt;p:cell&gt;#{doc.user.name}&lt;/p:cell&gt;\n"
+"         &lt;p:cell&gt;#{doc.size}&lt;/p:cell&gt;\n"
+"      &lt;/ui:repeat&gt;\n"
+"   &lt;/p:table&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:634
+#, no-c-format
+msgid "p:table"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:635
+#, no-c-format
+msgid "<literal>p:table</literal> supports the following attributes."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:640
+#, no-c-format
+msgid "columns"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:642
+#, no-c-format
+msgid "The number of columns (cells) that make up a table row."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:648
+#, no-c-format
+msgid "widths"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:650
+#, no-c-format
+msgid ""
+"The relative widths of each column. There should be one value for each "
+"column. For example: widths=\"2 1 1\" would indicate that there are 3 "
+"columns and the first column should be twice the size of the second and "
+"third column."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:656
+#, no-c-format
+msgid "headerRows"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:658
+#, no-c-format
+msgid ""
+"The initial number of rows which are considered to be headers or footer rows "
+"and should be repeated if the table spans multiple pages."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:664
+#, no-c-format
+msgid "footerRows"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:666
+#, no-c-format
+msgid ""
+"The number of rows that are considered to be footer rows. This value is "
+"subtracted from the <literal>headerRows</literal> value. If document has 2 "
+"rows which make up the header and one row that makes up the footer, "
+"<literal>headerRows</literal> should be set to 3 and <literal>footerRows</"
+"literal> should be set to 1"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:674
+#, no-c-format
+msgid "The percentage of the page width that the table spans."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:680 Itext.xml:777
+#, no-c-format
+msgid "horizontalAlignment"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:682
+#, no-c-format
+msgid ""
+"The horizontal alignment of the table. (See <xref linkend="
+"\"Document_Constants-Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:688
+#, no-c-format
+msgid "skipFirstHeader"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:695 Itext.xml:885
+#, no-c-format
+msgid "runDirection"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:702
+#, no-c-format
+msgid "lockedWidth"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:709
+#, no-c-format
+msgid "splitRows"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:732
+#, no-c-format
+msgid "extendLastRow"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:739
+#, no-c-format
+msgid "headersInEvent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:746
+#, no-c-format
+msgid "splitLate"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:763
+#, no-c-format
+msgid "p:cell"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:764
+#, no-c-format
+msgid "<literal>p:cell</literal> supports the following attributes."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:769
+#, no-c-format
+msgid "colspan"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:771
+#, no-c-format
+msgid ""
+"Cells can span more than one column by declaring a <literal>colspan</"
+"literal> greater than 1. Tables do not have the ability to span across "
+"multiple rows."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:779
+#, no-c-format
+msgid ""
+"The horizontal alignment of the cell. (see <xref linkend="
+"\"Document_Constants-Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:785 Itext.xml:829
+#, no-c-format
+msgid "verticalAlignment"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:787
+#, no-c-format
+msgid ""
+"The vertical alignment of the cell. (see <xref linkend=\"Document_Constants-"
+"Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:793
+#, no-c-format
+msgid "padding"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:795
+#, no-c-format
+msgid ""
+"Padding on a given side can also be specified using <literal>paddingLeft</"
+"literal>, <literal>paddingRight</literal>, <literal>paddingTop</literal> and "
+"<literal>paddingBottom</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:801
+#, no-c-format
+msgid "useBorderPadding"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:843
+#, no-c-format
+msgid "fixedHeight"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:850
+#, no-c-format
+msgid "noWrap"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:857
+#, no-c-format
+msgid "minimumHeight"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:864
+#, no-c-format
+msgid "followingIndent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:871
+#, no-c-format
+msgid "rightIndent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:878
+#, no-c-format
+msgid "spaceCharRatio"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:892
+#, no-c-format
+msgid "arabicOptions"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:899
+#, no-c-format
+msgid "useAscender"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:906
+#, no-c-format
+msgid "grayFill"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:925
+#, no-c-format
+msgid "Document Constants"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:926
+#, no-c-format
+msgid ""
+"This section documents some of the constants shared by attributes on "
+"multiple tags."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:930
+#, no-c-format
+msgid "Color Values"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:931
+#, no-c-format
+msgid ""
+"Seam documents do not yet support a full color specification. Currently, "
+"only named colors are supported. They are: <literal>white</literal>, "
+"<literal>gray</literal>, <literal>lightgray</literal>, <literal>darkgray</"
+"literal>, <literal>black</literal>, <literal>red</literal>, <literal>pink</"
+"literal>, <literal>yellow</literal>, <literal>green</literal>, "
+"<literal>magenta</literal>, <literal>cyan</literal> and <literal>blue</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:937
+#, no-c-format
+msgid "Alignment Values"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:938
+#, no-c-format
+msgid ""
+"Where alignment values are used, the Seam PDF supports the following "
+"horizontal alignment values: <literal>left</literal>, <literal>right</"
+"literal>, <literal>center</literal>, <literal>justify</literal> and "
+"<literal>justifyall</literal>. The vertical alignment values are "
+"<literal>top</literal>, <literal>middle</literal>, <literal>bottom</"
+"literal>, and <literal>baseline</literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:946
+#, no-c-format
+msgid "Configuring iText"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:947
+#, no-c-format
+msgid ""
+"Document generation works out of the box with no additional configuration "
+"needed. However, there are a few points of configuration that are needed for "
+"more serious applications."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:950
+#, no-c-format
+msgid ""
+"The default implementation serves PDF documents from a generic URL, "
+"<literal>/seam-doc.seam</literal>. Many browsers (and users) would prefer to "
+"see URLs that contain the actual PDF name like <literal>/myDocument.pdf</"
+"literal>. This capability requires some configuration. To serve PDF files, "
+"all *.pdf resources should be mapped to the Seam Servlet Filter and to the "
+"DocumentStoreServlet:"
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:953
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.servlet.SeamServletFilter&lt;/filter-"
+"class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;\n"
+"\n"
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.pdf.DocumentStoreServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"\n"
+"&lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:954
+#, no-c-format
+msgid ""
+"The <literal>useExtensions</literal> option on the document store component "
+"completes the functionality by instructing the document store to generate "
+"URLs with the correct filename extension for the document type being "
+"generated."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:957
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pdf=\"http://jboss.com/products/seam/pdf\"&gt;\n"
+"    &lt;pdf:documentStore useExtensions=\"true\" /&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:958
+#, no-c-format
+msgid ""
+"Generated documents are stored in conversation scope and will expire when "
+"the conversation ends. At that point, references to the document will be "
+"invalid. To You can specify a default view to be shown when a document does "
+"not exist using the <literal>errorPage</literal> property of the "
+"documentStore."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:961
+#, no-c-format
+msgid ""
+"&lt;pdf:documentStore useExtensions=\"true\" errorPage=\"/pdfMissing.seam\" /"
+"&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:965
+#, no-c-format
+msgid "iText links"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:966
+#, no-c-format
+msgid "For further information on iText, see:"
+msgstr ""
+
+#. Tag: ulink
+#: Itext.xml:973
+#, no-c-format
+msgid "iText Home Page"
+msgstr ""
+
+#. Tag: ulink
+#: Itext.xml:978
+#, no-c-format
+msgid "iText in Action"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Jbpm.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Jbpm.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Jbpm.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1189 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Jbpm.xml:10
+#, no-c-format
+msgid "Pageflows and business processes"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:11
+#, no-c-format
+msgid ""
+"JBoss jBPM is a business process management engine for any Java SE or EE "
+"environment. jBPM lets you represent a business process or user interaction "
+"as a graph of nodes representing wait states, decisions, tasks, web pages, "
+"etc. The graph is defined using a simple, very readable, XML dialect called "
+"jPDL, and may be edited and visualised graphically using an eclipse plugin. "
+"jPDL is an extensible language, and is suitable for a range of problems, "
+"from defining web application page flow, to traditional workflow management, "
+"all the way up to orchestration of services in a SOA environment."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:14
+#, no-c-format
+msgid "Seam applications use jBPM for two different problems:"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:20
+#, no-c-format
+msgid ""
+"Defining the pageflow involved in complex user interactions. A jPDL process "
+"definition defines the page flow for a single conversation. A Seam "
+"conversation is considered to be a relatively short-running interaction with "
+"a single user."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:25
+#, no-c-format
+msgid ""
+"Defining the overarching business process. The business process may span "
+"multiple conversations with multiple users. Its state is persistent in the "
+"jBPM database, so it is considered long-running. Coordination of the "
+"activities of multiple users is a much more complex problem than scripting "
+"an interaction with a single user, so jBPM offers sophisticated facilities "
+"for task management and dealing with multiple concurrent paths of execution."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:31
+#, no-c-format
+msgid ""
+"Don't get these two things confused ! They operate at very different levels "
+"or granularity. <emphasis>Pageflow</emphasis>, <emphasis>conversation</"
+"emphasis> and <emphasis>task</emphasis> all refer to a single interaction "
+"with a single user. A business process spans many tasks. Futhermore, the two "
+"applications of jBPM are totally orthogonal. You can use them together or "
+"independently or not at all."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:34
+#, no-c-format
+msgid ""
+"You don't have to know jDPL to use Seam. If you're perfectly happy defining "
+"pageflow using JSF or Seam navigation rules, and if your application is more "
+"data-driven that process-driven, you probably don't need jBPM. But we're "
+"finding that thinking of user interaction in terms of a well-defined "
+"graphical representation is helping us build more robust applications."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:37
+#, no-c-format
+msgid ""
+"Please refer to the jBPM documentation for a more thorough overview of the "
+"sophisticated features that jBPM provides for managing complex business "
+"processes."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:41
+#, no-c-format
+msgid "Pageflow in Seam"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:42
+#, no-c-format
+msgid "There are two ways to define pageflow in Seam:"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:47
+#, no-c-format
+msgid ""
+"Using JSF or Seam navigation rules - the <emphasis>stateless navigation "
+"model</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:52
+#, no-c-format
+msgid "Using jPDL - the <emphasis>stateful navigation model</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:57
+#, no-c-format
+msgid ""
+"Very simple applications will only need the stateless navigation model. Very "
+"complex applications will use both models in different places. Each model "
+"has its strengths and weaknesses!"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:60
+#, no-c-format
+msgid ""
+"In practice, both navigation models have their place, and you'll quickly "
+"learn to recognize when to prefer one model over the other."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:64
+#, no-c-format
+msgid "The two navigation models"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:65
+#, no-c-format
+msgid ""
+"The stateless model defines a mapping from a set of named, logical outcomes "
+"of an event directly to the resulting page of the view. The navigation rules "
+"are entirely oblivious to any state held by the application other than what "
+"page was the source of the event. This means that your action listener "
+"methods must sometimes make decisions about the page flow, since only they "
+"have access to the current state of the application."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:68
+#, no-c-format
+msgid "Here is an example page flow definition using JSF navigation rules:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:71
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"    &lt;from-view-id&gt;/numberGuess.jsp&lt;/from-view-id&gt;\n"
+"        \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;guess&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/numberGuess.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;win&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/win.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"        \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;lose&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/lose.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:72
+#, no-c-format
+msgid ""
+"Here is the same example page flow definition using Seam navigation rules:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:75
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/numberGuess.jsp\"&gt;\n"
+"        \n"
+"    &lt;navigation&gt;\n"
+"        &lt;rule if-outcome=\"guess\"&gt;\n"
+"            &lt;redirect view-id=\"/numberGuess.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"        &lt;rule if-outcome=\"win\"&gt;\n"
+"            &lt;redirect view-id=\"/win.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"        &lt;rule if-outcome=\"lose\"&gt;\n"
+"            &lt;redirect view-id=\"/lose.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:76
+#, no-c-format
+msgid ""
+"If you find navigation rules overly verbose, you can return view ids "
+"directly from your action listener methods:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:79
+#, no-c-format
+msgid ""
+"public String guess() {\n"
+"    if (guess==randomNumber) return \"/win.jsp\";\n"
+"    if (++guessCount==maxGuesses) return \"/lose.jsp\";\n"
+"    return null;\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:80
+#, no-c-format
+msgid ""
+"Note that this results in a redirect. You can even specify parameters to be "
+"used in the redirect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:83
+#, no-c-format
+msgid ""
+"public String search() {\n"
+"    return \"/searchResults.jsp?searchPattern=#{searchAction.searchPattern}"
+"\";\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:84
+#, no-c-format
+msgid ""
+"The stateful model defines a set of transitions between a set of named, "
+"logical application states. In this model, it is possible to express the "
+"flow of any user interaction entirely in the jPDL pageflow definition, and "
+"write action listener methods that are completely unaware of the flow of the "
+"interaction."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:87
+#, no-c-format
+msgid "Here is an example page flow definition using jPDL:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:90
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"numberGuess\"&gt;\n"
+"    \n"
+"   &lt;start-page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"      &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"      &lt;/transition&gt;\n"
+"   &lt;/start-page&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess."
+"correctGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateRemainingGuesses\" expression=\"#{numberGuess."
+"lastGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"lose\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"displayGuess\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"lose\" view-id=\"/lose.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:99
+#, no-c-format
+msgid "There are two things we notice immediately here:"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:104
+#, no-c-format
+msgid ""
+"The JSF/Seam navigation rules are <emphasis>much</emphasis> simpler. "
+"(However, this obscures the fact that the underlying Java code is more "
+"complex.)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:109
+#, no-c-format
+msgid ""
+"The jPDL makes the user interaction immediately understandable, without us "
+"needing to even look at the JSP or Java code."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:114
+#, no-c-format
+msgid ""
+"In addition, the stateful model is more <emphasis>constrained</emphasis>. "
+"For each logical state (each step in the page flow), there are a constrained "
+"set of possible transitions to other states. The stateless model is an "
+"<emphasis>ad hoc</emphasis> model which is suitable to relatively "
+"unconstrained, freeform navigation where the user decides where he/she wants "
+"to go next, not the application."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:117
+#, no-c-format
+msgid ""
+"The stateful/stateless navigation distinction is quite similar to the "
+"traditional view of modal/modeless interaction. Now, Seam applications are "
+"not usually modal in the simple sense of the word - indeed, avoiding "
+"application modal behavior is one of the main reasons for having "
+"conversations! However, Seam applications can be, and often are, modal at "
+"the level of a particular conversation. It is well-known that modal behavior "
+"is something to avoid as much as possible; it is very difficult to predict "
+"the order in which your users are going to want to do things! However, there "
+"is no doubt that the stateful model has its place."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:120
+#, no-c-format
+msgid ""
+"The biggest contrast between the two models is the back-button behavior."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:126
+#, no-c-format
+msgid "Seam and the back button"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:127
+#, no-c-format
+msgid ""
+"When JSF or Seam navigation rules are used, Seam lets the user freely "
+"navigate via the back, forward and refresh buttons. It is the responsibility "
+"of the application to ensure that conversational state remains internally "
+"consistent when this occurs. Experience with the combination of web "
+"application frameworks like Struts or WebWork - that do not support a "
+"conversational model - and stateless component models like EJB stateless "
+"session beans or the Spring framework has taught many developers that this "
+"is close to impossible to do! However, our experience is that in the context "
+"of Seam, where there is a well-defined conversational model, backed by "
+"stateful session beans, it is actually quite straightforward. Usually it is "
+"as simple as combining the use of <literal>no-conversation-view-id</literal> "
+"with null checks at the beginning of action listener methods. We consider "
+"support for freeform navigation to be almost always desirable."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:130
+#, no-c-format
+msgid ""
+"In this case, the <literal>no-conversation-view-id</literal> declaration "
+"goes in <literal>pages.xml</literal>. It tells Seam to redirect to a "
+"different page if a request originates from a page rendered during a "
+"conversation, and that conversation no longer exists:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:133
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/checkout.xhtml\" \n"
+"        no-conversation-view-id=\"/main.xhtml\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:134
+#, no-c-format
+msgid ""
+"On the other hand, in the stateful model, backbuttoning is interpreted as an "
+"undefined transition back to a previous state. Since the stateful model "
+"enforces a defined set of transitions from the current state, back buttoning "
+"is be default disallowed in the stateful model! Seam transparently detects "
+"the use of the back button, and blocks any attempt to perform an action from "
+"a previous, \"stale\" page, and simply redirects the user to the \"current\" "
+"page (and displays a faces message). Whether you consider this a feature or "
+"a limitation of the stateful model depends upon your point of view: as an "
+"application developer, it is a feature; as a user, it might be frustrating! "
+"You can enable backbutton navigation from a particular page node by setting "
+"<literal>back=\"enabled\"</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:137
+#, no-c-format
+msgid ""
+"&lt;page name=\"checkout\" \n"
+"        view-id=\"/checkout.xhtml\" \n"
+"        back=\"enabled\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"checkout\"/&gt;\n"
+"    &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:138
+#, no-c-format
+msgid ""
+"This allows backbuttoning <emphasis>from</emphasis> the <literal>checkout</"
+"literal> state to <emphasis>any previous state!</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:141
+#, no-c-format
+msgid ""
+"Of course, we still need to define what happens if a request originates from "
+"a page rendered during a pageflow, and the conversation with the pageflow no "
+"longer exists. In this case, the <literal>no-conversation-view-id</literal> "
+"declaration goes into the pageflow definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:144
+#, no-c-format
+msgid ""
+"&lt;page name=\"checkout\" \n"
+"        view-id=\"/checkout.xhtml\" \n"
+"        back=\"enabled\" \n"
+"        no-conversation-view-id=\"/main.xhtml\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"checkout\"/&gt;\n"
+"    &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:151
+#, no-c-format
+msgid "Using jPDL pageflows"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:153
+#, no-c-format
+msgid "Installing pageflows"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:154
+#, no-c-format
+msgid ""
+"We need to install the Seam jBPM-related components, and tell them where to "
+"find our pageflow definition. We can specify this Seam configuration in "
+"<literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:157
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:pageflow-definitions&gt;\n"
+"        &lt;value&gt;pageflow.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:pageflow-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:158
+#, no-c-format
+msgid ""
+"The first line installs jBPM, the second points to a jPDL-based pageflow "
+"definition."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:164
+#, no-c-format
+msgid "Starting pageflows"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:165
+#, no-c-format
+msgid ""
+"We \"start\" a jPDL-based pageflow by specifying the name of the process "
+"definition using a <literal>@Begin</literal>, <literal>@BeginTask</literal> "
+"or <literal>@StartTask</literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:168
+#, no-c-format
+msgid ""
+"@Begin(pageflow=\"numberguess\")\n"
+"public void begin() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:169
+#, no-c-format
+msgid "Alternatively we can start a pageflow using pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:172
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"        &lt;begin-conversation pageflow=\"numberguess\"/&gt;\n"
+"    &lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:173
+#, no-c-format
+msgid ""
+"If we are beginning the pageflow during the <literal>RENDER_RESPONSE</"
+"literal> phase&mdash;during a <literal>@Factory</literal> or "
+"<literal>@Create</literal> method, for example&mdash;we consider ourselves "
+"to be already at the page being rendered, and use a <literal>&lt;start-"
+"page&gt;</literal> node as the first node in the pageflow, as in the example "
+"above."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:176
+#, no-c-format
+msgid ""
+"But if the pageflow is begun as the result of an action listener invocation, "
+"the outcome of the action listener determines which is the first page to be "
+"rendered. In this case, we use a <literal>&lt;start-state&gt;</literal> as "
+"the first node in the pageflow, and declare a transition for each possible "
+"outcome:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:179
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"viewEditDocument\"&gt;\n"
+"\n"
+"    &lt;start-state name=\"start\"&gt;\n"
+"        &lt;transition name=\"documentFound\" to=\"displayDocument\"/&gt;\n"
+"        &lt;transition name=\"documentNotFound\" to=\"notFound\"/&gt;\n"
+"    &lt;/start-state&gt;\n"
+"    \n"
+"    &lt;page name=\"displayDocument\" view-id=\"/document.jsp\"&gt;\n"
+"        &lt;transition name=\"edit\" to=\"editDocument\"/&gt;\n"
+"        &lt;transition name=\"done\" to=\"main\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"    \n"
+"    ...\n"
+"    \n"
+"    &lt;page name=\"notFound\" view-id=\"/404.jsp\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"    &lt;/page&gt;\n"
+"    \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:183
+#, no-c-format
+msgid "Page nodes and transitions"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:184
+#, no-c-format
+msgid ""
+"Each <literal>&lt;page&gt;</literal> node represents a state where the "
+"system is waiting for user input:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:187
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"        &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:188
+#, no-c-format
+msgid ""
+"The <literal>view-id</literal> is the JSF view id. The <literal>&lt;redirect/"
+"&gt;</literal> element has the same effect as <literal>&lt;redirect/&gt;</"
+"literal> in a JSF navigation rule: namely, a post-then-redirect behavior, to "
+"overcome problems with the browser's refresh button. (Note that Seam "
+"propagates conversation contexts over these browser redirects. So there is "
+"no need for a Ruby on Rails style \"flash\" construct in Seam!)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:191
+#, no-c-format
+msgid ""
+"The transition name is the name of a JSF outcome triggered by clicking a "
+"command button or command link in <literal>numberGuess.jsp</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:194
+#, no-c-format
+msgid ""
+"&lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"guess\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:195
+#, no-c-format
+msgid ""
+"When the transition is triggered by clicking this button, jBPM will activate "
+"the transition action by calling the <literal>guess()</literal> method of "
+"the <literal>numberGuess</literal> component. Notice that the syntax used "
+"for specifying actions in the jPDL is just a familiar JSF EL expression, and "
+"that the transition action handler is just a method of a Seam component in "
+"the current Seam contexts. So we have exactly the same event model for jBPM "
+"events that we already have for JSF events! (The <emphasis>One Kind of "
+"Stuff</emphasis> principle.)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:198
+#, no-c-format
+msgid ""
+"In the case of a null outcome (for example, a command button with no "
+"<literal>action</literal> defined), Seam will signal the transition with no "
+"name if one exists, or else simply redisplay the page if all transitions "
+"have names. So we could slightly simplify our example pageflow and this "
+"button:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:201
+#, no-c-format
+msgid "&lt;h:commandButton type=\"submit\" value=\"Guess\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:202
+#, no-c-format
+msgid "Would fire the following un-named transition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:205
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"evaluateGuess\"&gt;\n"
+"        &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:206
+#, no-c-format
+msgid ""
+"It is even possible to have the button call an action method, in which case "
+"the action outcome will determine the transition to be taken:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:209
+#, no-c-format
+msgid ""
+"&lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"#{numberGuess."
+"guess}\"/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:210
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;transition name=\"correctGuess\" to=\"win\"/&gt;\n"
+"    &lt;transition name=\"incorrectGuess\" to=\"evaluateGuess\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:211
+#, no-c-format
+msgid ""
+"However, this is considered an inferior style, since it moves responsibility "
+"for controlling the flow out of the pageflow definition and back into the "
+"other components. It is much better to centralize this concern in the "
+"pageflow itself."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:217
+#, no-c-format
+msgid "Controlling the flow"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:218
+#, no-c-format
+msgid ""
+"Usually, we don't need the more powerful features of jPDL when defining "
+"pageflows. We do need the <literal>&lt;decision&gt;</literal> node, however:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:221
+#, no-c-format
+msgid ""
+"&lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess.correctGuess}"
+"\"&gt;\n"
+"    &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"    &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"&lt;/decision&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:222
+#, no-c-format
+msgid ""
+"A decision is made by evaluating a JSF EL expression in the Seam contexts."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:228
+#, no-c-format
+msgid "Ending the flow"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:229
+#, no-c-format
+msgid ""
+"We end the conversation using <literal>&lt;end-conversation&gt;</literal> or "
+"<literal>@End</literal>. (In fact, for readability, use of <emphasis>both</"
+"emphasis> is encouraged.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:232
+#, no-c-format
+msgid ""
+"&lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;end-conversation/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:233
+#, no-c-format
+msgid ""
+"Optionally, we can end a task, specify a jBPM <literal>transition</literal> "
+"name. In this case, Seam will signal the end of the current task in the "
+"overarching business process."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:236
+#, no-c-format
+msgid ""
+"&lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;end-task transition=\"success\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:242
+#, no-c-format
+msgid "Business process management in Seam"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:243
+#, no-c-format
+msgid ""
+"A business process is a well-defined set of tasks that must be performed by "
+"users or software systems according to well-defined rules about "
+"<emphasis>who</emphasis> can perform a task, and <emphasis>when</emphasis> "
+"it should be performed. Seam's jBPM integration makes it easy to display "
+"lists of tasks to users and let them manage their tasks. Seam also lets the "
+"application store state associated with the business process in the "
+"<literal>BUSINESS_PROCESS</literal> context, and have that state made "
+"persistent via jBPM variables."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:246
+#, no-c-format
+msgid ""
+"A simple business process definition looks much the same as a page flow "
+"definition (<emphasis>One Kind of Stuff</emphasis>), except that instead of "
+"<literal>&lt;page&gt;</literal> nodes, we have <literal>&lt;task-node&gt;</"
+"literal> nodes. In a long-running business process, the wait states are "
+"where the system is waiting for some user to log in and perform a task."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:249
+#, no-c-format
+msgid ""
+"&lt;process-definition name=\"todo\"&gt;\n"
+"   \n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"todo\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;task-node name=\"todo\"&gt;\n"
+"      &lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"         &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"      &lt;/task&gt;\n"
+"      &lt;transition to=\"done\"/&gt;\n"
+"   &lt;/task-node&gt;\n"
+"   \n"
+"   &lt;end-state name=\"done\"/&gt;\n"
+"   \n"
+"&lt;/process-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:260
+#, no-c-format
+msgid ""
+"It is perfectly possible that we might have both jPDL business process "
+"definitions and jPDL pageflow definitions in the same project. If so, the "
+"relationship between the two is that a single <literal>&lt;task&gt;</"
+"literal> in a business process corresponds to a whole pageflow <literal>&lt;"
+"pageflow-definition&gt;</literal>"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:265
+#, no-c-format
+msgid "Using jPDL business process definitions"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:267
+#, no-c-format
+msgid "Installing process definitions"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:268
+#, no-c-format
+msgid ""
+"We need to install jBPM, and tell it where to find the business process "
+"definitions:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:271
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;todo.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:275
+#, no-c-format
+msgid "Initializing actor ids"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:276
+#, no-c-format
+msgid ""
+"We always need to know what user is currently logged in. jBPM \"knows\" "
+"users by their <emphasis>actor id</emphasis> and <emphasis>group actor ids</"
+"emphasis>. We specify the current actor ids using the built in Seam "
+"component named <literal>actor</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:279
+#, no-c-format
+msgid ""
+"@In Actor actor;\n"
+"\n"
+"public String login() {\n"
+"    ...\n"
+"    actor.setId( user.getUserName() );\n"
+"    actor.getGroupActorIds().addAll( user.getGroupNames() );\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:283
+#, no-c-format
+msgid "Initiating a business process"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:284
+#, no-c-format
+msgid ""
+"To initiate a business process instance, we use the <literal>@CreateProcess</"
+"literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:287
+#, no-c-format
+msgid ""
+"@CreateProcess(definition=\"todo\")\n"
+"public void createTodo() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:288
+#, no-c-format
+msgid "Alternatively we can initiate a business process using pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:291
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;create-process definition=\"todo\" /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:295
+#, no-c-format
+msgid "Task assignment"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:296
+#, no-c-format
+msgid ""
+"When a process starts, task instances are created. These must be assigned to "
+"users or user groups. We can either hardcode our actor ids, or delegate to a "
+"Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:299
+#, no-c-format
+msgid ""
+"&lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"    &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"&lt;/task&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:300
+#, no-c-format
+msgid ""
+"In this case, we have simply assigned the task to the current user. We can "
+"also assign tasks to a pool:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:303
+#, no-c-format
+msgid ""
+"&lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"    &lt;assignment pooled-actors=\"employees\"/&gt;\n"
+"&lt;/task&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:307
+#, no-c-format
+msgid "Task lists"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:308
+#, no-c-format
+msgid ""
+"Several built-in Seam components make it easy to display task lists. The "
+"<literal>pooledTaskInstanceList</literal> is a list of pooled tasks that "
+"users may assign to themselves:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:311
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{pooledTaskInstanceList}\" var=\"task\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Description&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{task.description}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link action=\"#{pooledTask.assignToCurrentActor}\" value="
+"\"Assign\" taskInstance=\"#{task}\"/&gt;\n"
+"    &lt;/h:column&gt;            \n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:312
+#, no-c-format
+msgid ""
+"Note that instead of <literal>&lt;s:link&gt;</literal> we could have used a "
+"plain JSF <literal>&lt;h:commandLink&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:315
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"#{pooledTask.assignToCurrentActor}\"&gt; \n"
+"    &lt;f:param name=\"taskId\" value=\"#{task.id}\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:316
+#, no-c-format
+msgid ""
+"The <literal>pooledTask</literal> component is a built-in component that "
+"simply assigns the task to the current user."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:319
+#, no-c-format
+msgid ""
+"The <literal>taskInstanceListByType</literal> component includes tasks of a "
+"particular type that are assigned to the current user:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:322
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{taskInstanceListByType['todo']}\" var=\"task"
+"\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Description&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{task.description}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link action=\"#{todoList.start}\" value=\"Start Work\" "
+"taskInstance=\"#{task}\"/&gt;\n"
+"    &lt;/h:column&gt;            \n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:326
+#, no-c-format
+msgid "Performing a task"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:327
+#, no-c-format
+msgid ""
+"To begin work on a task, we use either <literal>@StartTask</literal> or "
+"<literal>@BeginTask</literal> on the listener method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:330
+#, no-c-format
+msgid ""
+"@StartTask\n"
+"public String start() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:331
+#, no-c-format
+msgid "Alternatively we can begin work on a task using pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:334
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;start-task /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:335
+#, no-c-format
+msgid ""
+"These annotations begin a special kind of conversation that has significance "
+"in terms of the overarching business process. Work done by this conversation "
+"has access to state held in the business process context."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:338
+#, no-c-format
+msgid ""
+"If we end the conversation using <literal>@EndTask</literal>, Seam will "
+"signal the completion of the task:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:341
+#, no-c-format
+msgid ""
+"@EndTask(transition=\"completed\")\n"
+"public String completed() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:342
+#, no-c-format
+msgid "Alternatively we can use pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:345
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;end-task transition=\"completed\" /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:346
+#, no-c-format
+msgid ""
+"(Alternatively, we could have used <literal>&lt;end-conversation&gt;</"
+"literal> as shown above.)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:349
+#, no-c-format
+msgid ""
+"At this point, jBPM takes over and continues executing the business process "
+"definition. (In more complex processes, several tasks might need to be "
+"completed before process execution can resume.)"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Jms.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Jms.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Jms.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,477 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Jms.xml:10
+#, no-c-format
+msgid "Asynchronicity and messaging"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:11
+#, no-c-format
+msgid ""
+"Seam makes it very easy to perform work asynchronously from a web request. "
+"When most people think of asynchronicity in Java EE, they think of using "
+"JMS. This is certainly one way to approach the problem in Seam, and is the "
+"right way when you have strict and well-defined quality of service "
+"requirements. Seam makes it easy to send and recieve JMS messages using Seam "
+"components."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:14
+#, no-c-format
+msgid ""
+"But for many usecases, JMS is overkill. Seam layers a simple asynchronous "
+"method and event facility over the EJB 3.0 timer service."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:17
+#, no-c-format
+msgid "Asynchronicity"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:18
+#, no-c-format
+msgid ""
+"Asynchronous events and method calls have the same quality of service "
+"expectations as the container's EJB timer service. If you're not familiar "
+"with the Timer service, don't worry, you don't need to interact with it "
+"directly if you want to use asynchronous methods in Seam."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:21
+#, no-c-format
+msgid ""
+"To use asynchronous methods and events, you need to add the following line "
+"to <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:24
+#, no-c-format
+msgid "&lt;core:dispatcher/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:25
+#, no-c-format
+msgid ""
+"Note that this functionality is not available in environments which do not "
+"support EJB 3.0."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:28
+#, no-c-format
+msgid "Asynchronous methods"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:29
+#, no-c-format
+msgid ""
+"In simplest form, an asynchronous call just lets a method call be processed "
+"asynchronously (in a different thread) from the caller. We usually use an "
+"asynchronous call when we want to return an immediate response to the "
+"client, and let some expensive work be processed in the background. This "
+"pattern works very well in applications which use AJAX, where the client can "
+"automatically poll the server for the result of the work."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:32
+#, no-c-format
+msgid ""
+"For EJB components, we annotate the local interface to specify that a method "
+"is processed asynchronously."
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:35
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public void processPayment(Payment payment);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:36
+#, no-c-format
+msgid ""
+"(For JavaBean components we can annotate the component implementation class "
+"if we like.)"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:39
+#, no-c-format
+msgid "The use of asynchronicity is transparent to the bean class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:42
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"paymentHandler\")\n"
+"public class PaymentHandlerBean implements PaymentHandler\n"
+"{\n"
+"    public void processPayment(Payment payment)\n"
+"    {\n"
+"        //do some work!\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:43
+#, no-c-format
+msgid "And also transparent to the client:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:46
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String pay()\n"
+"    {\n"
+"        paymentHandler.processPayment( new Payment(bill) );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:47
+#, no-c-format
+msgid ""
+"The asynchronous method is processed in a completely new event context and "
+"does not have access to the session or conversation context state of the "
+"caller. However, the business process context <emphasis>is</emphasis> "
+"propagated."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:50
+#, no-c-format
+msgid ""
+"Asynchronous method calls may be scheduled for later execution using the "
+"<literal>@Duration</literal>, <literal>@Expiration</literal> and "
+"<literal>@IntervalDuration</literal> annotations."
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:53
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public void processScheduledPayment(Payment payment, @Expiration Date "
+"date);\n"
+"\n"
+"    @Asynchronous\n"
+"    public void processRecurringPayment(Payment payment, @Expiration Date "
+"date, \n"
+"        @IntervalDuration Long interval)'\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:54
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String schedulePayment()\n"
+"    {\n"
+"        paymentHandler.processScheduledPayment( new Payment(bill), bill."
+"getDueDate() );\n"
+"        return \"success\";\n"
+"    }\n"
+"\n"
+"    public String scheduleRecurringPayment()\n"
+"    {\n"
+"        paymentHandler.processRecurringPayment( new Payment(bill), bill."
+"getDueDate(), ONE_MONTH );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:55
+#, no-c-format
+msgid ""
+"Both client and server may access the <literal>Timer</literal> object "
+"associated with the invocation."
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:58
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public Timer processScheduledPayment(Payment payment, @Expiration Date "
+"date);\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:59
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"paymentHandler\")\n"
+"public class PaymentHandlerBean implements PaymentHandler\n"
+"{\n"
+"    @In Timer timer;\n"
+"    \n"
+"    public Timer processScheduledPayment(Payment payment, @Expiration Date "
+"date)\n"
+"    {\n"
+"        //do some work!\n"
+"        \n"
+"        return timer; //note that return value is completely ignored\n"
+"    }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:60
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String schedulePayment()\n"
+"    {\n"
+"        Timer timer = paymentHandler.processScheduledPayment( new Payment"
+"(bill), bill.getDueDate() );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:61
+#, no-c-format
+msgid "Asynchronous methods cannot return any other value to the caller."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:64
+#, no-c-format
+msgid "Asynchronous events"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:65
+#, no-c-format
+msgid ""
+"Component-driven events may also be asynchronous. To raise an event for "
+"asynchronous processing, simply call the <literal>raiseAsynchronousEvent()</"
+"literal> methods of the <literal>Events</literal> class. To schedule a timed "
+"event, call one of the <literal>raiseTimedEvent()</literal> methods. "
+"Components may observe asynchronous events in the usual way, but remember "
+"that only the business process context is propagated to the asynchronous "
+"thread."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:68
+#, no-c-format
+msgid "Messaging in Seam"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:69
+#, no-c-format
+msgid ""
+"Seam makes it easy to send and receive JMS messages to and from Seam "
+"components."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:72
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:73
+#, no-c-format
+msgid ""
+"To configure Seam's infrastructure for sending JMS messages, you need to "
+"tell Seam about any topics and queues you want to send messages to, and also "
+"tell Seam where to find the <literal>QueueConnectionFactory</literal> and/or "
+"<literal>TopicConnectionFactory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:76
+#, no-c-format
+msgid ""
+"Seam defaults to using <literal>UIL2ConnectionFactory</literal> which is the "
+"usual connection factory for use with JBossMQ. If you are using some other "
+"JMS provider, you need to set one or both of <literal>queueConnection."
+"queueConnectionFactoryJndiName</literal> and <literal>topicConnection."
+"topicConnectionFactoryJndiName</literal> in <literal>seam.properties</"
+"literal>, <literal>web.xml</literal> or <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:79
+#, no-c-format
+msgid ""
+"You also need to list topics and queues in <literal>components.xml</literal> "
+"to install Seam managed <literal>TopicPublisher</literal>s and "
+"<literal>QueueSender</literal>s:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:82
+#, no-c-format
+msgid ""
+"&lt;jms:managed-topic-publisher name=\"stockTickerPublisher\" auto-create="
+"\"true\" \n"
+"    topic-jndi-name=\"topic/stockTickerTopic\"/&gt;\n"
+"\n"
+"&lt;jms:managed-queue-sender name=\"paymentQueueSender\" auto-create=\"true"
+"\" \n"
+"    queue-jndi-name=\"queue/paymentQueue\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:83
+#, no-c-format
+msgid "Sending messages"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:84
+#, no-c-format
+msgid ""
+"Now, you can inject a JMS <literal>TopicPublisher</literal> and "
+"<literal>TopicSession</literal> into any component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:87
+#, no-c-format
+msgid ""
+"@In \n"
+"private TopicPublisher stockTickerPublisher;   \n"
+"@In \n"
+"private TopicSession topicSession;\n"
+"\n"
+"public void publish(StockPrice price) {\n"
+"      try\n"
+"      {\n"
+"         topicPublisher.publish( topicSession.createObjectMessage(price) );\n"
+"      } \n"
+"      catch (Exception ex)\n"
+"      {\n"
+"         throw new RuntimeException(ex);\n"
+"      } \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:88
+#, no-c-format
+msgid "Or, for working with a queue:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:91
+#, no-c-format
+msgid ""
+"@In\n"
+"private QueueSender paymentQueueSender;   \n"
+"@In\n"
+"private QueueSession queueSession;\n"
+"\n"
+"public void publish(Payment payment) {\n"
+"      try\n"
+"      {\n"
+"         paymentQueueSender.send( queueSession.createObjectMessage"
+"(payment) );\n"
+"      } \n"
+"      catch (Exception ex)\n"
+"      {\n"
+"         throw new RuntimeException(ex);\n"
+"      } \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:92
+#, no-c-format
+msgid "Receiving messages using a message-driven bean"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:93
+#, no-c-format
+msgid ""
+"You can process messages using any EJB3 message driven bean. Message-driven "
+"beans may even be Seam components, in which case it is possible to inject "
+"other event and application scoped Seam components."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:96
+#, no-c-format
+msgid "Receiving messages in the client"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:97
+#, no-c-format
+msgid ""
+"Seam Remoting lets you subscribe to a JMS topic from client-side JavaScript. "
+"This is described in the next chapter."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Mail.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Mail.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Mail.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,985 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Mail.xml:10
+#, no-c-format
+msgid "Email"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:11
+#, no-c-format
+msgid ""
+"Seam now includes an optional components for templating and sending emails."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:14
+#, no-c-format
+msgid ""
+"Email support is provided by <literal>jboss-seam-mail.jar</literal>. This "
+"JAR contains the mail JSF controls, which are used to construct emails, and "
+"the <literal>mailSession</literal> manager component."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:17
+#, no-c-format
+msgid ""
+"The examples/mail project contains an example of the email support in "
+"action. It demonstrates proper packaging, and it contains a number of "
+"example that demonstrate the key features currently supported."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:21
+#, no-c-format
+msgid "Creating a message"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:22
+#, no-c-format
+msgid ""
+"You don't need to learn a whole new templating language to use Seam "
+"Mail&mdash;an email is just facelet!"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:25
+#, no-c-format
+msgid ""
+"&lt;m:message xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"    xmlns:m=\"http://jboss.com/products/seam/mail\"\n"
+"    xmlns:h=\"http://java.sun.com/jsf/html\"&gt;\n"
+"  \n"
+"    &lt;m:from name=\"Peter\" address=\"peter at example.com\" /&gt;\n"
+"    &lt;m:to name=\"#{person.firstname} #{person.lastname}\"&gt;#{person."
+"address}&lt;/m:to&gt;\n"
+"    &lt;m:subject&gt;Try out Seam!&lt;/m:subject&gt;\n"
+"    \n"
+"    &lt;m:body&gt;\n"
+"        &lt;p&gt;&lt;h:outputText value=\"Dear #{person.firstname}\" /&gt;,"
+"&lt;/p&gt;\n"
+"        &lt;p&gt;You can try out Seam by visiting \n"
+"        &lt;a href=\"http://labs.jboss.com/jbossseam\"&gt;http://labs.jboss."
+"com/jbossseam&lt;/a&gt;.&lt;/p&gt;\n"
+"        &lt;p&gt;Regards,&lt;/p&gt;\n"
+"        &lt;p&gt;Peter&lt;/p&gt;\n"
+"    &lt;/m:body&gt;\n"
+"    \n"
+"&lt;/m:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:26
+#, no-c-format
+msgid ""
+"The <literal>&lt;m:message&gt;</literal> tag wraps the whole message, and "
+"tells Seam to start rendering an email. Inside the <literal>&lt;m:message&gt;"
+"</literal> tag we use an <literal>&lt;m:from&gt;</literal> tag to set who "
+"the message is from, a <literal>&lt;m:to&gt;</literal> tag to specify a "
+"sender (notice how we use EL as we would in a normal facelet), and a "
+"<literal>&lt;m:subject&gt;</literal> tag."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:29
+#, no-c-format
+msgid ""
+"The <literal>&lt;m:body&gt;</literal> tag wraps the body of the email. You "
+"can use regular HTML tags inside the body as well as JSF components."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:32
+#, no-c-format
+msgid ""
+"So, now you have your email template, how do you go about sending it? Well, "
+"at the end of rendering the <literal>m:message</literal> the "
+"<literal>mailSession</literal> is called to send the email, so all you have "
+"to do is ask Seam to render the view:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:35
+#, no-c-format
+msgid ""
+"@In(create=true)\n"
+"private Renderer renderer;\n"
+"   \n"
+"public void send() {\n"
+"    try {\n"
+"       renderer.render(\"/simple.xhtml\");\n"
+"       facesMessages.add(\"Email sent successfully\");\n"
+"   } \n"
+"   catch (Exception e) {\n"
+"       facesMessages.add(\"Email sending failed: \" + e.getMessage());\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:36
+#, no-c-format
+msgid ""
+"If, for example, you entered an invalid email address, then an exception "
+"would be thrown, which is caught and then displayed to the user."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:40
+#, no-c-format
+msgid "Attachments"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:41
+#, no-c-format
+msgid ""
+"Seam makes it easy to attach files to an email. It supports most of the "
+"standard java types used when working with files."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:44
+#, no-c-format
+msgid "If you wanted to email the <literal>jboss-seam-mail.jar</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:47
+#, no-c-format
+msgid "&lt;m:attachment value=\"/WEB-INF/lib/jboss-seam-mail.jar\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:48
+#, no-c-format
+msgid ""
+"Seam will load the file from the classpath, and attach it to the email. By "
+"default it would be attached as <literal>jboss-seam-mail.jar</literal>; if "
+"you wanted it to have another name you would just add the <literal>fileName</"
+"literal> attribute:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:51
+#, no-c-format
+msgid ""
+"&lt;m:attachment value=\"/WEB-INF/lib/jboss-seam-mail.jar\" fileName=\"this-"
+"is-so-cool.jar\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:52
+#, no-c-format
+msgid ""
+"You could also attach a <literal>java.io.File</literal>, a <literal>java.net."
+"URL</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:55
+#, no-c-format
+msgid "&lt;m:attachment value=\"#{numbers}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:56
+#, no-c-format
+msgid ""
+"Or a <literal>byte[]</literal> or a <literal>java.io.InputStream</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:59
+#, no-c-format
+msgid ""
+"&lt;m:attachment value=\"#{person.photo}\" contentType=\"image/png\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:60
+#, no-c-format
+msgid ""
+"You'll notice that for a <literal>byte[]</literal> and a <literal>java.io."
+"InputStream</literal> you need to specify the MIME type of the attachment "
+"(as that information is not carried as part of the file)."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:63
+#, no-c-format
+msgid ""
+"And it gets even better, you can attach a Seam generated PDF, or any "
+"standard JSF view, just by wrapping a <literal>&lt;m:attachment&gt;</"
+"literal> around the normal tags you would use:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:66
+#, no-c-format
+msgid ""
+"&lt;m:attachment fileName=\"tiny.pdf\"&gt;\n"
+"    &lt;p:"
+"document&gt;                                                      \n"
+"        A very tiny "
+"PDF                                                                                                \n"
+"    &lt;/p:document&gt;\n"
+"&lt;/m:attachment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:67
+#, no-c-format
+msgid ""
+"If you had a set of files you wanted to attach (for example a set of "
+"pictures loaded from a database) you can just use a <literal>&lt;ui:"
+"repeat&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:70
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{people}\" var=\"person\"&gt;\n"
+"    &lt;m:attachment value=\"#{person.photo}\" contentType=\"image/jpeg\"\n"
+"    fileName=\"#{person.firstname}_#{person.lastname}.jpg\"/&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:74
+#, no-c-format
+msgid "HTML/Text alternative part"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:75
+#, no-c-format
+msgid ""
+"Whilst most mail readers nowadays support HTML, some don't, so you can add a "
+"plain text alternative to your email body:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:78
+#, no-c-format
+msgid ""
+"&lt;m:body&gt;\n"
+"    &lt;f:facet name=\"alternative\"&gt;Sorry, your email reader can't show "
+"our fancy email, \n"
+"please go to http://labs.jboss.com/jbossseam to explore Seam.&lt;/f:"
+"facet&gt;\n"
+"&lt;/m:body&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:82
+#, no-c-format
+msgid "Multiple recipients"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:83
+#, no-c-format
+msgid ""
+"Often you'll want to send an email to a group of recipients (for example "
+"your users). All of the recipient mail tags can be placed inside a "
+"<literal>&lt;ui:repeat&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:86
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{allUsers} var=\"user\"&gt;\n"
+"    &lt;m:to name=\"#{user.firstname} #{user.lastname}\" address=\"#{user."
+"emailAddress}\" /&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:90
+#, no-c-format
+msgid "Multiple messages"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:91
+#, no-c-format
+msgid ""
+"Sometimes, however, you need to send a slightly different message to each "
+"recipient (e.g. a password reset). The best way to do this is to place the "
+"whole message inside a <literal>&lt;ui:repeat&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:94
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{people}\" var=\"p\"&gt;\n"
+"    &lt;m:message&gt;\n"
+"        &lt;m:from name=\"#{person.firstname} #{person.lastname}\"&gt;#"
+"{person.address}&lt;/m:from&gt;\n"
+"        &lt;m:to name=\"#{p.firstname}\"&gt;#{p.address}&lt;/m:to&gt;\n"
+"            ...\n"
+"    &lt;/m:message&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:98
+#, no-c-format
+msgid "Templating"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:99
+#, no-c-format
+msgid ""
+"The mail templating example shows that facelets templating Just Works with "
+"the Seam mail tags."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:102
+#, no-c-format
+msgid "Our <literal>template.xhtml</literal> contains:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:105
+#, no-c-format
+msgid ""
+"&lt;m:message&gt;\n"
+"   &lt;m:from name=\"Seam\" address=\"do-not-reply at jboss.com\" /&gt;\n"
+"   &lt;m:to name=\"#{person.firstname} #{person.lastname}\"&gt;#{person."
+"address}&lt;/m:to&gt;\n"
+"   &lt;m:subject&gt;#{subject}&lt;/m:subject&gt;\n"
+"   &lt;m:body&gt;\n"
+"       &lt;html&gt;\n"
+"           &lt;body&gt;\n"
+"               &lt;ui:insert name=\"body\"&gt;This is the default body, "
+"specified by the template.\n"
+"               &lt;/ui:insert&gt;\n"
+"           &lt;/body&gt;\n"
+"       &lt;/html&gt;\n"
+"   &lt;/m:body&gt;\n"
+"&lt;/m:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:106
+#, no-c-format
+msgid "Our <literal>templating.xhtml</literal> contains:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:109
+#, no-c-format
+msgid ""
+"&lt;ui:param name=\"subject\" value=\"Templating with Seam Mail\"/&gt;\n"
+"&lt;ui:define name=\"body\"&gt;\n"
+"    &lt;p&gt;This example demonstrates that you can easily use &lt;i&gt;"
+"facelets templating&lt;/i&gt; in email!&lt;/p&gt;\n"
+"&lt;/ui:define&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:113
+#, no-c-format
+msgid "Other Headers"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:114
+#, no-c-format
+msgid ""
+"Sometimes you'll want to add other headers to your email. Seam provides "
+"support for some (see <xref linkend=\"Email-Tags\"/>). For example, we can "
+"set the importance of the email, and ask for a read receipt:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:117
+#, no-c-format
+msgid ""
+"&lt;m:message xmlns:m=\"http://jboss.com/products/seam/mail\"\n"
+"           importance=\"low\"\n"
+"           requestReadReceipt=\"true\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:118
+#, no-c-format
+msgid ""
+"Otherise you can add any header to the message using the <literal>&lt;m:"
+"header&gt;</literal> tag:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:121
+#, no-c-format
+msgid "&lt;m:header name=\"X-Sent-From\" value=\"JBoss Seam\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:127
+#, no-c-format
+msgid "Receiving emails"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:128
+#, no-c-format
+msgid ""
+"If you are using EJB then you can use a MDB (Message Driven Bean) to receive "
+"email. Seam comes with an improved version of <literal>mail-ra.rar</literal> "
+"as distributed in JBoss AS; until the improvements make there way into a "
+"released version of JBoss AS, replacing the default <literal>rar</literal> "
+"with the one distributed with Seam is recommended."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:131
+#, no-c-format
+msgid "You can configure it like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:134
+#, no-c-format
+msgid ""
+"@MessageDriven(activationConfig={\n"
+"         @ActivationConfigProperty(propertyName=\"mailServer\", "
+"propertyValue=\"localhost\"),\n"
+"         @ActivationConfigProperty(propertyName=\"mailFolder\", "
+"propertyValue=\"INBOX\"),\n"
+"         @ActivationConfigProperty(propertyName=\"storeProtocol\", "
+"propertyValue=\"pop3\"),\n"
+"         @ActivationConfigProperty(propertyName=\"userName\", propertyValue="
+"\"seam\"),\n"
+"         @ActivationConfigProperty(propertyName=\"password\", propertyValue="
+"\"seam\")\n"
+"})\n"
+"@ResourceAdapter(\"mail-ra.rar\")\n"
+"@Name(\"mailListener\")\n"
+"public class MailListenerMDB implements MailListener {\n"
+"\n"
+"   @In(create=true)\n"
+"   private OrderProcessor orderProcessor;\n"
+"\n"
+"   public void onMessage(Message message) {\n"
+"      // Process the message\n"
+"      orderProcessor.process(message.getSubject());\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:135
+#, no-c-format
+msgid ""
+"Each message received will cause <literal>onMessage(Message message)</"
+"literal> to be called. Most seam annotations will work inside a MDB but you "
+"musn't access the persistence context."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:138
+#, no-c-format
+msgid ""
+"You can find more information on the default <literal>mail-ra.rar</literal> "
+"at <ulink url=\"http://wiki.jboss.org/wiki/Wiki.jsp?page=InboundJavaMail"
+"\">http://wiki.jboss.org/wiki/Wiki.jsp?page=InboundJavaMail</ulink>. The "
+"version distributed with Seam also includes a <literal>debug</literal> "
+"property to enable JavaMail debugging, a <literal>flush</literal> property "
+"(by default true) to disable flushing a <literal>POP3</literal> mailbox "
+"after successfullying delivering a message to your MDB and a <literal>port</"
+"literal> property to override the default TCP port. Beware that the api for "
+"this may be altered as changes make there way into JBoss AS."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:141
+#, no-c-format
+msgid ""
+"If you aren't using JBoss AS you can still use <literal>mail-ra.rar</"
+"literal> (included with Seam in the mail directory), or you may find your "
+"application server includes a similar adapter."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:147
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:148
+#, no-c-format
+msgid ""
+"To include Email support in your application, include <literal>jboss-seam-"
+"mail.jar</literal> in your WEB-INF/lib directory. If you are using JBoss AS "
+"there is no further configuration needed to use Seam's email support. "
+"Otherwise you need to make sure you have the JavaMail API, an implementation "
+"of the JavaMail API present (the API and impl used in JBoss AS are "
+"distributed with seam as <literal>lib/mail.jar</literal>), and a copy of the "
+"Java Activation Framework (distributed with seam as <literal>lib/activation."
+"jar</literal>."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:151
+#, no-c-format
+msgid ""
+"The Seam Email module requires the use of Facelets as the view technology. "
+"Future versions of the library may also support the use of JSP. "
+"Additionally, it requires the use of the seam-ui package."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:154
+#, no-c-format
+msgid ""
+"The <literal>mailSession</literal> component uses JavaMail to talk to a "
+"'real' SMTP server."
+msgstr ""
+
+#. Tag: literal
+#: Mail.xml:158
+#, no-c-format
+msgid "mailSession"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:159
+#, no-c-format
+msgid ""
+"A JavaMail Session may be available via a JNDI lookup if you are working in "
+"an JEE environment or you can use a Seam configured Session."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:162
+#, no-c-format
+msgid ""
+"The mailSession component's properties are described in more detail in <xref "
+"linkend=\"Built_in_Seam_components-Mail_related_components\"/>."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:166
+#, no-c-format
+msgid "JNDI lookup in JBoss AS"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:167
+#, no-c-format
+msgid ""
+"The JBossAS <literal>deploy/mail-service.xml</literal> configures a JavaMail "
+"session binding into JNDI. The default service configuration will need "
+"altering for your network. <ulink url=\"http://wiki.jboss.org/wiki/Wiki.jsp?"
+"page=JavaMail\">http://wiki.jboss.org/wiki/Wiki.jsp?page=JavaMail</ulink> "
+"describes the service in more detail."
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:170
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"        xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"        xmlns:mail=\"http://jboss.com/products/seam/mail\"&gt;\n"
+"        \n"
+"    &lt;mail:mail-session session-jndi-name=\"java:/Mail\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:171
+#, no-c-format
+msgid ""
+"Here we tell Seam to get the mail session bound to <literal>java:/Mail</"
+"literal> from JNDI."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:177
+#, no-c-format
+msgid "Seam configured Session"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:178
+#, no-c-format
+msgid ""
+"A mail session can be configured via <literal>components.xml</literal>. Here "
+"we tell Seam to use <literal>smtp.example.com</literal> as the smtp server,"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:181
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"        xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"        xmlns:mail=\"http://jboss.com/products/seam/mail\"&gt;\n"
+"        \n"
+"    &lt;mail:mail-session host=\"smtp.example.com\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:189
+#, no-c-format
+msgid "Tags"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:190
+#, no-c-format
+msgid ""
+"Emails are generated using tags in the <literal>http://jboss.com/products/"
+"seam/mail</literal> namespace. Documents should always have the "
+"<literal>message</literal> tag at the root of the message. The message tag "
+"prepares Seam to generate an email."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:193
+#, no-c-format
+msgid ""
+"The standard templating tags of facelets can be used as normal. Inside the "
+"body you can use any JSF tag which doesn't require access to external "
+"resources (stylesheets, javascript)."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:198
+#, no-c-format
+msgid "&lt;m:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:200
+#, no-c-format
+msgid "Root tag of a mail message"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:205
+#, no-c-format
+msgid ""
+"<literal>importance</literal> &mdash; low, normal or high. By default "
+"normal, this sets the importance of the mail message."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:210
+#, no-c-format
+msgid ""
+"<literal>precedence</literal> &mdash; sets the precedence of the message (e."
+"g. bulk)."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:215
+#, no-c-format
+msgid ""
+"<literal>requestReadReceipt</literal> &mdash; by default false, if set, a "
+"read receipt will be request will be added, with the read receipt being sent "
+"to the <literal>From:</literal> address."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:220
+#, no-c-format
+msgid ""
+"<literal>urlBase</literal> &mdash; If set, the value is prepended to the "
+"<literal>requestContextPath</literal> allowing you to use components such as "
+"<literal>&lt;h:graphicImage&gt;</literal> in your emails."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:228
+#, no-c-format
+msgid "&lt;m:from&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:230
+#, no-c-format
+msgid ""
+"Set's the From: address for the email. You can only have one of these per "
+"email."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:235
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the name the email should come from."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:240 Mail.xml:255
+#, no-c-format
+msgid ""
+"<literal>address</literal> &mdash; the email address the email should come "
+"from."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:248
+#, no-c-format
+msgid "&lt;m:replyTo&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:250
+#, no-c-format
+msgid ""
+"Set's the Reply-to: address for the email. You can only have one of these "
+"per email."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:263
+#, no-c-format
+msgid "&lt;m:to&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:265
+#, no-c-format
+msgid ""
+"Add a recipient to the email. Use multiple &lt;m:to&gt; tags for multiple "
+"recipients. This tag can be safely placed inside a repeat tag such as &lt;ui:"
+"repeat&gt;."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:270 Mail.xml:290 Mail.xml:310
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the name of the recipient."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:275 Mail.xml:295 Mail.xml:315
+#, no-c-format
+msgid "<literal>address</literal> &mdash; the email address of the recipient."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:283
+#, no-c-format
+msgid "&lt;m:cc&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:285
+#, no-c-format
+msgid ""
+"Add a cc recipient to the email. Use multiple &lt;m:cc&gt; tags for multiple "
+"ccs. This tag can be safely placed inside a repeat tag such as &lt;ui:"
+"repeat&gt;."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:303
+#, no-c-format
+msgid "&lt;m:bcc&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:305
+#, no-c-format
+msgid ""
+"Add a bcc recipient to the email. Use multiple &lt;m:bcc&gt; tags for "
+"multiple bccs. This tag can be safely placed inside a repeat tag such as &lt;"
+"ui:repeat&gt;."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:323
+#, no-c-format
+msgid "&lt;m:header&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:325
+#, no-c-format
+msgid ""
+"Add a header to the email (e.g. <literal>X-Sent-From: JBoss Seam</literal>"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:330
+#, no-c-format
+msgid ""
+"<literal>name</literal> &mdash; The name of the header to add (e.g. "
+"<literal>X-Sent-From</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:335
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; The value of the header to add (e.g. "
+"<literal>JBoss Seam</literal>)."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:343
+#, no-c-format
+msgid "&lt;m:attachment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:345
+#, no-c-format
+msgid "Add an attachment to the email."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:350
+#, no-c-format
+msgid "<literal>value</literal> &mdash; The file to attach:"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:355
+#, no-c-format
+msgid ""
+"<literal>String</literal> &mdash; A <literal>String</literal> is interpreted "
+"as a path to file within the classpath"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:360
+#, no-c-format
+msgid ""
+"<literal>java.io.File</literal> &mdash; An EL expression can reference a "
+"<literal>File</literal> object"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:365
+#, no-c-format
+msgid ""
+"<literal>java.net.URL</literal> &mdash; An EL expression can reference a "
+"<literal>URL</literal> object"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:370
+#, no-c-format
+msgid ""
+"<literal>java.io.InputStream</literal> &mdash; An EL expression can "
+"reference an <literal>InputStream</literal>. In this case both a "
+"<literal>fileName</literal> and a <literal>contentType</literal> must be "
+"specified."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:375
+#, no-c-format
+msgid ""
+"<literal>byte[]</literal> &mdash; An EL expression can reference an "
+"<literal>byte[]</literal>. In this case both a <literal>fileName</literal> "
+"and a <literal>contentType</literal> must be specified."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:380
+#, no-c-format
+msgid "If the value attribute is ommitted:"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:385
+#, no-c-format
+msgid ""
+"If this tag contains a <literal>&lt;p:document&gt;</literal> tag, the "
+"document described will be generated and attached to the email. A "
+"<literal>fileName</literal> should be specfied."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:390
+#, no-c-format
+msgid ""
+"If this tag contains other JSF tags a HTML document will be generated from "
+"them and attached to the email. A <literal>fileName</literal> should be "
+"specfied."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:397
+#, no-c-format
+msgid ""
+"<literal>fileName</literal> &mdash; Specify the file name to use for the "
+"attached file."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:402
+#, no-c-format
+msgid ""
+"<literal>contentType</literal> &mdash; Specify the MIME type of the attached "
+"file"
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:410
+#, no-c-format
+msgid "&lt;m:subject&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:412
+#, no-c-format
+msgid "Set's the subject for the email."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:418
+#, no-c-format
+msgid "&lt;m:body&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:420
+#, no-c-format
+msgid ""
+"Set's the body for the email. Supports an <literal>alternative</literal> "
+"facet which, if an HTML email is generated can contain alternative text for "
+"a mail reader which doesn't support html."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:425
+#, no-c-format
+msgid ""
+"<literal>type</literal> &mdash; If set to <literal>plain</literal> then a "
+"plain text email will be generated otherwise an HTML email is generated."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Persistence.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Persistence.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Persistence.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,750 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Persistence.xml:10
+#, no-c-format
+msgid "Seam and Object/Relational Mapping"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:11
+#, no-c-format
+msgid ""
+"Seam provides extensive support for the two most popular persistence "
+"architectures for Java: Hibernate3, and the Java Persistence API introduced "
+"with EJB 3.0. Seam's unique state-management architecture allows the most "
+"sophisticated ORM integration of any web application framework."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:15
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:16
+#, no-c-format
+msgid ""
+"Seam grew out of the frustration of the Hibernate team with the "
+"statelessness typical of the previous generation of Java application "
+"architectures. The state management architecture of Seam was originally "
+"designed to solve problems relating to persistence&mdash;in particular "
+"problems associated with <emphasis>optimistic transaction processing</"
+"emphasis>. Scalable online applications always use optimistic transactions. "
+"An atomic (database/JTA) level transaction should not span a user "
+"interaction unless the application is designed to support only a very small "
+"number of concurrent clients. But almost all interesting work involves first "
+"displaying data to a user, and then, slightly later, updating the same data. "
+"So Hibernate was designed to support the idea of a persistence context which "
+"spanned an optimistic transaction."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:19
+#, no-c-format
+msgid ""
+"Unfortunately, the so-called \"stateless\" architectures that preceded Seam "
+"and EJB 3.0 had no construct for representing an optimistic transaction. So, "
+"instead, these architectures provided persistence contexts scoped to the "
+"atomic transaction. Of course, this resulted in many problems for users, and "
+"is the cause of the number one user complaint about Hibernate: the dreaded "
+"<literal>LazyInitializationException</literal>. What we need is a construct "
+"for representing an optimistic transaction in the application tier."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:22
+#, no-c-format
+msgid ""
+"EJB 3.0 recognizes this problem, and introduces the idea of a stateful "
+"component (a stateful session bean) with an <emphasis>extended persistence "
+"context</emphasis> scoped to the lifetime of the component. This is a "
+"partial solution to the problem (and is a useful construct in and of itself) "
+"however there are two problems:"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:27
+#, no-c-format
+msgid ""
+"The lifecycle of the stateful session bean must be managed manually via code "
+"in the web tier (it turns out that this is a subtle problem and much more "
+"difficult in practice than it sounds)."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:32
+#, no-c-format
+msgid ""
+"Propagation of the persistence context between stateful components in the "
+"same optimistic transaction is possible, but tricky."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:37
+#, no-c-format
+msgid ""
+"Seam solves the first problem by providing conversations, and stateful "
+"session bean components scoped to the conversation. (Most conversations "
+"actually represent optimistic transactions in the data layer.) This is "
+"sufficient for many simple applications (such as the Seam booking demo) "
+"where persistence context propagation is not needed. For more complex "
+"applications, with many loosly-interacting components in each conversation, "
+"propagation of the persistence context across components becomes an "
+"important issue. So Seam extends the persistence context management model of "
+"EJB 3.0, to provide conversation-scoped extended persistence contexts."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:43
+#, no-c-format
+msgid "Seam managed transactions"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:44
+#, no-c-format
+msgid ""
+"EJB session beans feature declarative transaction management. The EJB "
+"container is able to start a transaction transparently when the bean is "
+"invoked, and end it when the invocation ends. If we write a session bean "
+"method that acts as a JSF action listener, we can do all the work associated "
+"with that action in one transaction, and be sure that it is committed or "
+"rolled back when we finish processing the action. This is a great feature, "
+"and all that is needed by some Seam applications."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:47
+#, no-c-format
+msgid ""
+"However, there is a problem with this approach. A Seam application may not "
+"perform all data access for a request from a single method call to a session "
+"bean."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:52
+#, no-c-format
+msgid ""
+"The request might require processing by several loosly-coupled components, "
+"each of which is called independently from the web layer. It is common to "
+"see several or even many calls per request from the web layer to EJB "
+"components in Seam."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:57
+#, no-c-format
+msgid "Rendering of the view might require lazy fetching of associations."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:62
+#, no-c-format
+msgid ""
+"The more transactions per request, the more likely we are to encounter "
+"atomicity and isolation problems when our application is processing many "
+"concurrent requests. Certainly, all write operations should occur in the "
+"same transaction!"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:65
+#, no-c-format
+msgid ""
+"Hibernate users developed the <emphasis>\"open session in view\"</emphasis> "
+"pattern to work around this problem. In the Hibernate community, \"open "
+"session in view\" was historically even more important because frameworks "
+"like Spring use transaction-scoped persistence contexts. So rendering the "
+"view would cause <literal>LazyInitializationException</literal>s when "
+"unfetched associations were accessed."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:68
+#, no-c-format
+msgid ""
+"This pattern is usually implemented as a single transaction which spans the "
+"entire request. There are several problems with this implementation, the "
+"most serious being that we can never be sure that a transaction is "
+"successful until we commit it&mdash;but by the time the \"open session in "
+"view\" transaction is committed, the view is fully rendered, and the "
+"rendered response may already have been flushed to the client. How can we "
+"notify the user that their transaction was unsuccessful?"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:71
+#, no-c-format
+msgid ""
+"Seam solves both the transaction isolation problem and the association "
+"fetching problem, while working around the problems with \"open session in "
+"view\". The solution comes in two parts:"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:76
+#, no-c-format
+msgid ""
+"use an extended persistence context that is scoped to the conversation, "
+"instead of to the transaction"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:81
+#, no-c-format
+msgid ""
+"use two transactions per request; the first spans the beginning of the "
+"update model values phase until the end of the invoke application phase; the "
+"second spans the render response phase"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:86
+#, no-c-format
+msgid ""
+"In the next section, we'll tell you how to set up a conversation-scope "
+"persistence context. But first we need to tell you how to enable Seam "
+"transaction management. Note that you can use conversation-scoped "
+"persistence contexts without Seam transaction management, and there are good "
+"reasons to use Seam transaction management even when you're not using Seam-"
+"managed persistence contexts. However, the two facilities were designed to "
+"work together, and work best when used together."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:90
+#, no-c-format
+msgid "Enabling Seam-managed transactions"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:91
+#, no-c-format
+msgid ""
+"To make use of <emphasis>Seam managed transactions</emphasis>, you need to "
+"use <literal>TransactionalSeamPhaseListener</literal> in place of "
+"<literal>SeamPhaseListener</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:94
+#, no-c-format
+msgid ""
+"&lt;lifecycle&gt;\n"
+"     &lt;phase-listener&gt;\n"
+"        org.jboss.seam.jsf.TransactionalSeamPhaseListener\n"
+"    &lt;/phase-listener&gt;\n"
+"&lt;/lifecycle&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:95
+#, no-c-format
+msgid ""
+"Seam transaction management is useful even if you're using EJB 3.0 container-"
+"managed persistence contexts. But it is especially useful if you use Seam "
+"outside a Java EE 5 environment, or in any other case where you would use a "
+"Seam-managed persistence context."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:103
+#, no-c-format
+msgid "Seam-managed persistence contexts"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:104
+#, no-c-format
+msgid ""
+"If you're using Seam outside of a Java EE 5 environment, you can't rely upon "
+"the container to manage the persistence context lifecycle for you. Even if "
+"you are in an EE 5 environment, you might have a complex application with "
+"many loosly coupled components that collaborate together in the scope of a "
+"single conversation, and in this case you might find that propagation of the "
+"persistence context between component is tricky and error-prone."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:107
+#, no-c-format
+msgid ""
+"In either case, you'll need to use a <emphasis>managed persistence context</"
+"emphasis> (for JPA) or a <emphasis>managed session</emphasis> (for "
+"Hibernate) in your components. A Seam-managed persistence context is just a "
+"built-in Seam component that manages an instance of <literal>EntityManager</"
+"literal> or <literal>Session</literal> in the conversation context. You can "
+"inject it with <literal>@In</literal>."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:110
+#, no-c-format
+msgid ""
+"Seam-managed persistence contexts are extremely efficient in a clustered "
+"environment. Seam is able to perform an optimization that EJB 3.0 "
+"specification does not allow containers to use for container-managed "
+"extended persistence contexts. Seam supports transparent failover of "
+"extended persisence contexts, without the need to replicate any persistence "
+"context state between nodes. (We hope to fix this oversight in the next "
+"revision of the EJB spec.)"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:114
+#, no-c-format
+msgid "Using a Seam-managed persistence context with JPA"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:115
+#, no-c-format
+msgid ""
+"Configuring a managed persistence context is easy. In <literal>components."
+"xml</literal>, we can write:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:118
+#, no-c-format
+msgid ""
+"&lt;core:managed-persistence-context name=\"bookingDatabase\" \n"
+"                           auto-create=\"true\"\n"
+"            persistence-unit-jndi-name=\"java:/EntityManagerFactories/"
+"bookingData\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:119
+#, no-c-format
+msgid ""
+"This configuration creates a conversation-scoped Seam component named "
+"<literal>bookingDatabase</literal> that manages the lifecycle of "
+"<literal>EntityManager</literal> instances for the persistence unit "
+"(<literal>EntityManagerFactory</literal> instance) with JNDI name "
+"<literal>java:/EntityManagerFactories/bookingData</literal>."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:122
+#, no-c-format
+msgid ""
+"Of course, you need to make sure that you have bound the "
+"<literal>EntityManagerFactory</literal> into JNDI. In JBoss, you can do this "
+"by adding the following property setting to <literal>persistence.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:125
+#, no-c-format
+msgid ""
+"&lt;property name=\"jboss.entity.manager.factory.jndi.name\" \n"
+"          value=\"java:/EntityManagerFactories/bookingData\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:126
+#, no-c-format
+msgid "Now we can have our <literal>EntityManager</literal> injected using:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:129
+#, no-c-format
+msgid "@In EntityManager bookingDatabase;"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:133
+#, no-c-format
+msgid "Using a Seam-managed Hibernate session"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:134
+#, no-c-format
+msgid ""
+"Seam-managed Hibernate sessions are similar. In <literal>components.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:137
+#, no-c-format
+msgid ""
+"&lt;core:hibernate-session-factory name=\"hibernateSessionFactory\"/&gt;\n"
+"\n"
+"&lt;core:managed-hibernate-session name=\"bookingDatabase\" \n"
+"                         auto-create=\"true\"\n"
+"           session-factory-jndi-name=\"java:/bookingSessionFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:138
+#, no-c-format
+msgid ""
+"Where <literal>java:/bookingSessionFactory</literal> is the name of the "
+"session factory specified in <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:141
+#, no-c-format
+msgid ""
+"&lt;session-factory name=\"java:/bookingSessionFactory\"&gt;\n"
+"    &lt;property name=\"transaction.flush_before_completion\"&gt;true&lt;/"
+"property&gt;\n"
+"    &lt;property name=\"connection.release_mode\"&gt;after_statement&lt;/"
+"property&gt;\n"
+"    &lt;property name=\"transaction.manager_lookup_class\"&gt;\n"
+"        org.hibernate.transaction.JBossTransactionManagerLookup\n"
+"    &lt;/property&gt;\n"
+"    &lt;property name=\"transaction.factory_class\"&gt;\n"
+"        org.hibernate.transaction.JTATransactionFactory\n"
+"    &lt;/property&gt;\n"
+"    &lt;property name=\"connection.datasource\"&gt;java:/"
+"bookingDatasource&lt;/property&gt;\n"
+"    ...\n"
+"&lt;/session-factory&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:142
+#, no-c-format
+msgid ""
+"Note that Seam does not flush the session, so you should always enable "
+"<literal>hibernate.transaction.flush_before_completion</literal> to ensure "
+"that the session is automatically flushed before the JTA transaction commits."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:145
+#, no-c-format
+msgid ""
+"We can now have a managed Hibernate <literal>Session</literal> injected into "
+"our JavaBean components using the following code:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:148
+#, no-c-format
+msgid "@In Session bookingDatabase;"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:152
+#, no-c-format
+msgid "Seam-managed persistence contexts and atomic conversations"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:153
+#, no-c-format
+msgid ""
+"Persistence contexts scoped to the conversation allows you to program "
+"optimistic transactions that span multiple requests to the server without "
+"the need to use the <literal>merge()</literal> operation , without the need "
+"to re-load data at the beginning of each request, and without the need to "
+"wrestle with the <literal>LazyInitializationException</literal> or "
+"<literal>NonUniqueObjectException</literal>."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:156
+#, no-c-format
+msgid ""
+"As with any optimistic transaction management, transaction isolation and "
+"consistency can be achieved via use of optimistic locking. Fortunately, both "
+"Hibernate and EJB 3.0 make it very easy to use optimistic locking, by "
+"providing the <literal>@Version</literal> annotation."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:159
+#, no-c-format
+msgid ""
+"By default, the persistence context is flushed (synchronized with the "
+"database) at the end of each transaction. This is sometimes the desired "
+"behavior. But very often, we would prefer that all changes are held in "
+"memory and only written to the database when the conversation ends "
+"successfully. This allows for truly atomic conversations. As the result of a "
+"truly stupid and shortsighted decision by certain non-JBoss, non-Sun and non-"
+"Sybase members of the EJB 3.0 expert group, there is currently no simple, "
+"usable and portable way to implement atomic conversations using EJB 3.0 "
+"persistence. However, Hibernate provides this feature as a vendor extension "
+"to the <literal>FlushModeType</literal>s defined by the specification, and "
+"it is our expectation that other vendors will soon provide a similar "
+"extension."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:162
+#, no-c-format
+msgid ""
+"Seam lets you specify <literal>FlushModeType.MANUAL</literal> when beginning "
+"a conversation. Currently, this works only when Hibernate is the underlying "
+"persistence provider, but we plan to support other equivalent vendor "
+"extensions."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:165
+#, no-c-format
+msgid ""
+"@In EntityManager em; //a Seam-managed persistence context\n"
+"\n"
+"@Begin(flushMode=MANUAL)\n"
+"public void beginClaimWizard() {\n"
+"    claim = em.find(Claim.class, claimId);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:166
+#, no-c-format
+msgid ""
+"Now, the <literal>claim</literal> object remains managed by the persistence "
+"context for the rest ot the conversation. We can make changes to the claim:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:169
+#, no-c-format
+msgid ""
+"public void addPartyToClaim() {\n"
+"    Party party = ....;\n"
+"    claim.addParty(party);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:170
+#, no-c-format
+msgid ""
+"But these changes will not be flushed to the database until we explicitly "
+"force the flush to occur:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:173
+#, no-c-format
+msgid ""
+"@End\n"
+"public void commitClaim() {\n"
+"    em.flush();\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:179
+#, no-c-format
+msgid "Using the JPA \"delegate\""
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:180
+#, no-c-format
+msgid ""
+"The <literal>EntityManager</literal> interface lets you access a vendor-"
+"specific API via the <literal>getDelegate()</literal> method. Naturally, the "
+"most interesting vendor is Hibernate, and the most powerful delegate "
+"interface is <literal>org.hibernate.Session</literal>. You'd be nuts to use "
+"anything else. Trust me, I'm not biased at all."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:183
+#, no-c-format
+msgid ""
+"But regardless of whether you're using Hibernate (genius!) or something else "
+"(masochist, or just not very bright), you'll almost certainly want to use "
+"the delegate in your Seam components from time to time. One approach would "
+"be the following:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:186
+#, no-c-format
+msgid ""
+"@In EntityManager entityManager;\n"
+"\n"
+"@Create\n"
+"public void init() {\n"
+"    ( (Session) entityManager.getDelegate() ).enableFilter(\"currentVersions"
+"\");\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:187
+#, no-c-format
+msgid ""
+"But typecasts are unquestionably the ugliest syntax in the Java language, so "
+"most people avoid them whenever possible. Here's a different way to get at "
+"the delegate. First, add the following line to <literal>components.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:190
+#, no-c-format
+msgid ""
+"&lt;factory name=\"session\" \n"
+"         scope=\"STATELESS\" \n"
+"         auto-create=\"true\" \n"
+"         value=\"#{entityManager.delegate}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:191
+#, no-c-format
+msgid "Now we can inject the session directly:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:194
+#, no-c-format
+msgid ""
+"@In Session session;\n"
+"\n"
+"@Create\n"
+"public void init() {\n"
+"    session.enableFilter(\"currentVersions\");\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:198
+#, no-c-format
+msgid "Using EL in EJB-QL/HQL"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:199
+#, no-c-format
+msgid ""
+"Seam proxies the <literal>EntityManager</literal> or <literal>Session</"
+"literal> object whenever you use a Seam-managed persistence context or "
+"inject a container managed persistence context using "
+"<literal>@PersistenceContext</literal>. This lets you use EL expressions in "
+"your query strings, safely and efficiently. For example, this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:202
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=#{user.username}\")\n"
+"         .getSingleResult();"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:203
+#, no-c-format
+msgid "is equivalent to:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:206
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getSingleResult();"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:207
+#, no-c-format
+msgid "Of course, you should never, ever write it like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:210
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=\" + user.getUsername"
+"()) //BAD!\n"
+"         .getSingleResult();"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:211
+#, no-c-format
+msgid "(It is inefficient and vulnerable to SQL injection attacks.)"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:217
+#, no-c-format
+msgid "Using Hibernate filters"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:218
+#, no-c-format
+msgid ""
+"The coolest, and most unique, feature of Hibernate is <emphasis>filters</"
+"emphasis>. Filters let you provide a restricted view of the data in the "
+"database. You can find out more about filters in the Hibernate "
+"documentation. But we thought we'd mention an easy way to incorporate "
+"filters into a Seam application, one that works especially well with the "
+"Seam Application Framework."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:221
+#, no-c-format
+msgid ""
+"Seam-managed persistence contexts may have a list of filters defined, which "
+"will be enabled whenever an <literal>EntityManager</literal> or Hibernate "
+"<literal>Session</literal> is first created. (Of course, they may only be "
+"used when Hibernate is the underlying persistence provider.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:224
+#, no-c-format
+msgid ""
+"&lt;core:filter name=\"regionFilter\"&gt;\n"
+"    &lt;core:name&gt;region&lt;/core:name&gt;\n"
+"    &lt;core:parameters&gt;\n"
+"        &lt;key&gt;regionCode&lt;/key&gt;\n"
+"        &lt;value&gt;#{region.code}&lt;/value&gt;\n"
+"    &lt;/core:parameters&gt;\n"
+"&lt;/core:filter&gt;\n"
+"\n"
+"&lt;core:filter name=\"currentFilter\"&gt;\n"
+"    &lt;core:name&gt;current&lt;/core:name&gt;\n"
+"    &lt;core:parameters&gt;\n"
+"        &lt;key&gt;date&lt;/key&gt;\n"
+"        &lt;value&gt;#{currentDate}&lt;/value&gt;\n"
+"    &lt;/core:parameters&gt;\n"
+"&lt;/core:filter&gt;\n"
+"\n"
+"&lt;core:managed-persistence-context name=\"personDatabase\"\n"
+"    persistence-unit-jndi-name=\"java:/EntityManagerFactories/personDatabase"
+"\"&gt;\n"
+"    &lt;core:filters&gt;\n"
+"        &lt;value&gt;#{regionFilter}&lt;/value&gt;\n"
+"        &lt;value&gt;#{currentFilter}&lt;/value&gt;\n"
+"    &lt;/core:filters&gt;\n"
+"&lt;/core:managed-persistence-context&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Remoting.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Remoting.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Remoting.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1458 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Remoting.xml:10
+#, no-c-format
+msgid "Remoting"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:11
+#, no-c-format
+msgid ""
+"Seam provides a convenient method of remotely accessing components from a "
+"web page, using AJAX (Asynchronous Javascript and XML). The framework for "
+"this functionality is provided with almost no up-front development effort - "
+"your components only require simple annotating to become accessible via "
+"AJAX. This chapter describes the steps required to build an AJAX-enabled web "
+"page, then goes on to explain the features of the Seam Remoting framework in "
+"more detail."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:14 Remoting.xml:296
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:15
+#, no-c-format
+msgid ""
+"To use remoting, the Seam Resource servlet must first be configured in your "
+"<literal>web.xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:18
+#, no-c-format
+msgid ""
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"  &lt;/servlet&gt;\n"
+"\n"
+"  &lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"  &lt;/servlet-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:19
+#, no-c-format
+msgid ""
+"The next step is to import the necessary Javascript into your web page. "
+"There are a minimum of two scripts that must be imported. The first one "
+"contains all the client-side framework code that enables remoting "
+"functionality:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:22
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/resource/"
+"remote.js\"&gt;&lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:23
+#, no-c-format
+msgid ""
+"The second script contains the stubs and type definitions for the components "
+"you wish to call. It is generated dynamically based on the local interface "
+"of your components, and includes type definitions for all of the classes "
+"that can be used to call the remotable methods of the interface. The name of "
+"the script reflects the name of your component. For example, if you have a "
+"stateless session bean annotated with <literal>@Name(\"customerAction\")</"
+"literal>, then your script tag should look like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:26
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?customerAction\"&gt;\n"
+"      &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:27
+#, no-c-format
+msgid ""
+"If you wish to access more than one component from the same page, then "
+"include them all as parameters of your script tag:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:30
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" \n"
+"      src=\"seam/resource/remoting/interface.js?customerAction&amp;"
+"accountAction\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:31
+#, no-c-format
+msgid "The \"Seam\" object"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:32
+#, no-c-format
+msgid ""
+"Client-side interaction with your components is all performed via the "
+"<literal>Seam</literal> Javascript object. This object is defined in "
+"<literal>remote.js</literal>, and you'll be using it to make asynchronous "
+"calls against your component. It is split into two areas of functionality; "
+"<literal>Seam.Component</literal> contains methods for working with "
+"components and <literal>Seam.Remoting</literal> contains methods for "
+"executing remote requests. The easiest way to become familiar with this "
+"object is to start with a simple example."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:35
+#, no-c-format
+msgid "A Hello World example"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:36
+#, no-c-format
+msgid ""
+"Let's step through a simple example to see how the <literal>Seam</literal> "
+"object works. First of all, let's create a new Seam component called "
+"<literal>helloAction</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:39
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"  @Name(\"helloAction\")\n"
+"  public class HelloAction implements HelloLocal {\n"
+"    public String sayHello(String name) {\n"
+"      return \"Hello, \" + name;\n"
+"    }\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:40
+#, no-c-format
+msgid ""
+"You also need to create a local interface for our new component - take "
+"special note of the <literal>@WebRemote</literal> annotation, as it's "
+"required to make our method accessible via remoting:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:43
+#, no-c-format
+msgid ""
+"@Local\n"
+"  public interface HelloLocal {\n"
+"    @WebRemote\n"
+"    public String sayHello(String name);\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:44
+#, no-c-format
+msgid ""
+"That's all the server-side code we need to write. Now for our web page - "
+"create a new page and import the following scripts:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:47
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/resource/"
+"remote.js\"&gt;&lt;/script&gt;\n"
+"  &lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?helloAction\"&gt;&lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:48
+#, no-c-format
+msgid ""
+"To make this a fully interactive user experience, let's add a button to our "
+"page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:51
+#, no-c-format
+msgid ""
+"&lt;button onclick=\"javascript:sayHello()\"&gt;Say Hello&lt;/button&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:52
+#, no-c-format
+msgid ""
+"We'll also need to add some more script to make our button actually do "
+"something when it's clicked:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:55
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\"&gt;\n"
+"    //&lt;![CDATA[\n"
+"\n"
+"    function sayHello() {\n"
+"      var name = prompt(\"What is your name?\");\n"
+"      Seam.Component.getInstance(\"helloAction\").sayHello(name, "
+"sayHelloCallback);\n"
+"    }\n"
+"\n"
+"    function sayHelloCallback(result) {\n"
+"      alert(result);\n"
+"    }\n"
+"\n"
+"    // ]]&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:56
+#, no-c-format
+msgid ""
+"We're done! Deploy your application and browse to your page. Click the "
+"button, and enter a name when prompted. A message box will display the hello "
+"message confirming that the call was successful. If you want to save some "
+"time, you'll find the full source code for this Hello World example in "
+"Seam's <literal>/examples/remoting/helloworld</literal> directory."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:59
+#, no-c-format
+msgid ""
+"So what does the code of our script actually do? Let's break it down into "
+"smaller pieces. To start with, you can see from the Javascript code listing "
+"that we have implemented two methods - the first method is responsible for "
+"prompting the user for their name and then making a remote request. Take a "
+"look at the following line:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:62
+#, no-c-format
+msgid ""
+"Seam.Component.getInstance(\"helloAction\").sayHello(name, sayHelloCallback);"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:63
+#, no-c-format
+msgid ""
+"The first section of this line, <literal>Seam.Component.getInstance"
+"(\"helloAction\")</literal> returns a proxy, or \"stub\" for our "
+"<literal>helloAction</literal> component. We can invoke the methods of our "
+"component against this stub, which is exactly what happens with the "
+"remainder of the line: <literal>sayHello(name, sayHelloCallback);</literal>."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:66
+#, no-c-format
+msgid ""
+"What this line of code in its completeness does, is invoke the "
+"<literal>sayHello</literal> method of our component, passing in "
+"<literal>name</literal> as a parameter. The second parameter, "
+"<literal>sayHelloCallback</literal> isn't a parameter of our component's "
+"<literal>sayHello</literal> method, instead it tells the Seam Remoting "
+"framework that once it receives the response to our request, it should pass "
+"it to the <literal>sayHelloCallback</literal> Javascript method. This "
+"callback parameter is entirely optional, so feel free to leave it out if "
+"you're calling a method with a <literal>void</literal> return type or if you "
+"don't care about the result."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:69
+#, no-c-format
+msgid ""
+"The <literal>sayHelloCallback</literal> method, once receiving the response "
+"to our remote request then pops up an alert message displaying the result of "
+"our method call."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:72
+#, no-c-format
+msgid "Seam.Component"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:73
+#, no-c-format
+msgid ""
+"The <literal>Seam.Component</literal> Javascript object provides a number of "
+"client-side methods for working with your Seam components. The two main "
+"methods, <literal>newInstance()</literal> and <literal>getInstance()</"
+"literal> are documented in the following sections however their main "
+"difference is that <literal>newInstance()</literal> will always create a new "
+"instance of a component type, and <literal>getInstance()</literal> will "
+"return a singleton instance."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:76
+#, no-c-format
+msgid "Seam.Component.newInstance()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:77
+#, no-c-format
+msgid ""
+"Use this method to create a new instance of an entity or Javabean component. "
+"The object returned by this method will have the same getter/setter methods "
+"as its server-side counterpart, or alternatively if you wish you can access "
+"its fields directly. Take the following Seam entity component for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:80
+#, no-c-format
+msgid ""
+"@Name(\"customer\")\n"
+"  @Entity\n"
+"  public class Customer implements Serializable\n"
+"  {\n"
+"    private Integer customerId;\n"
+"    private String firstName;\n"
+"    private String lastName;\n"
+"    \n"
+"    @Column public Integer getCustomerId() { \n"
+"      return customerId; \n"
+"    }\n"
+"    \n"
+"    public void setCustomerId(Integer customerId} { \n"
+"      this.customerId = customerId; \n"
+"    }\n"
+"    \n"
+"    @Column public String getFirstName() { \n"
+"      return firstName; \n"
+"    }\n"
+"    \n"
+"    public void setFirstName(String firstName) {\n"
+"      this.firstName = firstName; \n"
+"    }\n"
+"    \n"
+"    @Column public String getLastName() {\n"
+"      return lastName;\n"
+"    }\n"
+"    \n"
+"    public void setLastName(String lastName) {\n"
+"      this.lastName = lastName;\n"
+"    }\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:81
+#, no-c-format
+msgid "To create a client-side Customer you would write the following code:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:84
+#, no-c-format
+msgid "var customer = Seam.Component.newInstance(\"customer\");"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:85
+#, no-c-format
+msgid "Then from here you can set the fields of the customer object:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:88
+#, no-c-format
+msgid ""
+"customer.setFirstName(\"John\");\n"
+"  // Or you can set the fields directly\n"
+"  customer.lastName = \"Smith\";"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:89
+#, no-c-format
+msgid "Seam.Component.getInstance()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:90
+#, no-c-format
+msgid ""
+"The <literal>getInstance()</literal> method is used to get a reference to a "
+"Seam session bean component stub, which can then be used to remotely execute "
+"methods against your component. This method returns a singleton for the "
+"specified component, so calling it twice in a row with the same component "
+"name will return the same instance of the component."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:93
+#, no-c-format
+msgid ""
+"To continue our example from before, if we have created a new "
+"<literal>customer</literal> and we now wish to save it, we would pass it to "
+"the <literal>saveCustomer()</literal> method of our <literal>customerAction</"
+"literal> component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:96
+#, no-c-format
+msgid "Seam.Component.getInstance(\"customerAction\").saveCustomer(customer);"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:97
+#, no-c-format
+msgid "Seam.Component.getComponentName()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:98
+#, no-c-format
+msgid ""
+"Passing an object into this method will return its component name if it is a "
+"component, or <literal>null</literal> if it is not."
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:101
+#, no-c-format
+msgid ""
+"if (Seam.Component.getComponentName(instance) == \"customer\")\n"
+"    alert(\"Customer\");\n"
+"  else if (Seam.Component.getComponentName(instance) == \"staff\")\n"
+"    alert(\"Staff member\");"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:102
+#, no-c-format
+msgid "Seam.Remoting"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:103
+#, no-c-format
+msgid ""
+"Most of the client side functionality for Seam Remoting is contained within "
+"the <literal>Seam.Remoting</literal> object. While you shouldn't need to "
+"directly call most of its methods, there are a couple of important ones "
+"worth mentioning."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:106
+#, no-c-format
+msgid "Seam.Remoting.createType()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:107
+#, no-c-format
+msgid ""
+"If your application contains or uses Javabean classes that aren't Seam "
+"components, you may need to create these types on the client side to pass as "
+"parameters into your component method. Use the <literal>createType()</"
+"literal> method to create an instance of your type. Pass in the fully "
+"qualified Java class name as a parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:110
+#, no-c-format
+msgid "var widget = Seam.Remoting.createType(\"com.acme.widgets.MyWidget\");"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:111
+#, no-c-format
+msgid "Seam.Remoting.getTypeName()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:112
+#, no-c-format
+msgid ""
+"This method is the equivalent of <literal>Seam.Component.getComponentName()</"
+"literal> but for non-component types. It will return the name of the type "
+"for an object instance, or <literal>null</literal> if the type is not known. "
+"The name is the fully qualified name of the type's Java class."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:115
+#, no-c-format
+msgid "Client Interfaces"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:116
+#, no-c-format
+msgid ""
+"In the configuration section above, the interface, or \"stub\" for our "
+"component is imported into our page via <literal>seam/resource/remoting/"
+"interface.js</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:119
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?customerAction\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:120
+#, no-c-format
+msgid ""
+"By including this script in our page, the interface definitions for our "
+"component, plus any other components or types that are required to execute "
+"the methods of our component are generated and made available for the "
+"remoting framework to use."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:123
+#, no-c-format
+msgid ""
+"There are two types of client stub that can be generated, \"executable\" "
+"stubs and \"type\" stubs. Executable stubs are behavioural, and are used to "
+"execute methods against your session bean components, while type stubs "
+"contain state and represent the types that can be passed in as parameters or "
+"returned as a result."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:126
+#, no-c-format
+msgid ""
+"The type of client stub that is generated depends on the type of your Seam "
+"component. If the component is a session bean, then an executable stub will "
+"be generated, otherwise if it's an entity or JavaBean, then a type stub will "
+"be generated. There is one exception to this rule; if your component is a "
+"JavaBean (ie it is not a session bean nor an entity bean) and any of its "
+"methods are annotated with @WebRemote, then an executable stub will be "
+"generated for it instead of a type stub. This allows you to use remoting to "
+"call methods of your JavaBean components in a non-EJB environment where you "
+"don't have access to session beans."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:130
+#, no-c-format
+msgid "The Context"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:131
+#, no-c-format
+msgid ""
+"The Seam Remoting Context contains additional information which is sent and "
+"received as part of a remoting request/response cycle. At this stage it only "
+"contains the conversation ID but may be expanded in the future."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:134
+#, no-c-format
+msgid "Setting and reading the Conversation ID"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:136
+#, no-c-format
+msgid ""
+"If you intend on using remote calls within the scope of a conversation then "
+"you need to be able to read or set the conversation ID in the Seam Remoting "
+"Context. To read the conversation ID after making a remote request call "
+"<literal>Seam.Remoting.getContext().getConversationId()</literal>. To set "
+"the conversation ID before making a request, call <literal>Seam.Remoting."
+"getContext().setConversationId()</literal>."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:139
+#, no-c-format
+msgid ""
+"If the conversation ID hasn't been explicitly set with <literal>Seam."
+"Remoting.getContext().setConversationId()</literal>, then it will be "
+"automatically assigned the first valid conversation ID that is returned by "
+"any remoting call. If you are working with multiple conversations within "
+"your page, then you may need to explicitly set the conversation ID before "
+"each call. If you are working with just a single conversation, then you "
+"don't need to do anything special."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:145
+#, no-c-format
+msgid "Batch Requests"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:146
+#, no-c-format
+msgid ""
+"Seam Remoting allows multiple component calls to be executed within a single "
+"request. It is recommended that this feature is used wherever it is "
+"appropriate to reduce network traffic."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:149
+#, no-c-format
+msgid ""
+"The method <literal>Seam.Remoting.startBatch()</literal> will start a new "
+"batch, and any component calls executed after starting a batch are queued, "
+"rather than being sent immediately. When all the desired component calls "
+"have been added to the batch, the <literal>Seam.Remoting.executeBatch()</"
+"literal> method will send a single request containing all of the queued "
+"calls to the server, where they will be executed in order. After the calls "
+"have been executed, a single response containining all return values will be "
+"returned to the client and the callback functions (if provided) triggered in "
+"the same order as execution."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:152
+#, no-c-format
+msgid ""
+"If you start a new batch via the <literal>startBatch()</literal> method but "
+"then decide you don't want to send it, the <literal>Seam.Remoting.cancelBatch"
+"()</literal> method will discard any calls that were queued and exit the "
+"batch mode."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:155
+#, no-c-format
+msgid ""
+"To see an example of a batch being used, take a look at <literal>/examples/"
+"remoting/chatroom</literal>."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:159
+#, no-c-format
+msgid "Working with Data types"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:160
+#, no-c-format
+msgid "Primitives / Basic Types"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:161
+#, no-c-format
+msgid ""
+"This section describes the support for basic data types. On the server side "
+"these values are generally compatible with either their primitive type or "
+"their corresponding wrapper class."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:164
+#, no-c-format
+msgid "String"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:165
+#, no-c-format
+msgid ""
+"Simply use Javascript String objects when setting String parameter values."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:168
+#, no-c-format
+msgid "Number"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:169
+#, no-c-format
+msgid ""
+"There is support for all number types supported by Java. On the client side, "
+"number values are always serialized as their String representation and then "
+"on the server side they are converted to the correct destination type. "
+"Conversion into either a primitive or wrapper type is supported for "
+"<literal>Byte</literal>, <literal>Double</literal>, <literal>Float</"
+"literal>, <literal>Integer</literal>, <literal>Long</literal> and "
+"<literal>Short</literal> types."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:172
+#, no-c-format
+msgid "Boolean"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:173
+#, no-c-format
+msgid ""
+"Booleans are represented client side by Javascript Boolean values, and "
+"server side by a Java boolean."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:176
+#, no-c-format
+msgid "JavaBeans"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:177
+#, no-c-format
+msgid ""
+"In general these will be either Seam entity or JavaBean components, or some "
+"other non-component class. Use the appropriate method (either <literal>Seam."
+"Component.newInstance()</literal> for Seam components or <literal>Seam."
+"Remoting.createType()</literal> for everything else) to create a new "
+"instance of the object."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:180
+#, no-c-format
+msgid ""
+"It is important to note that only objects that are created by either of "
+"these two methods should be used as parameter values, where the parameter is "
+"not one of the other valid types mentioned anywhere else in this section. In "
+"some situations you may have a component method where the exact parameter "
+"type cannot be determined, such as:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:183
+#, no-c-format
+msgid ""
+"@Name(\"myAction\")\n"
+"  public class MyAction implements MyActionLocal {\n"
+"    public void doSomethingWithObject(Object obj) {\n"
+"      // code\n"
+"    }\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:184
+#, no-c-format
+msgid ""
+"In this case you might want to pass in an instance of your "
+"<literal>myWidget</literal> component, however the interface for "
+"<literal>myAction</literal> won't include <literal>myWidget</literal> as it "
+"is not directly referenced by any of its methods. To get around this, "
+"<literal>MyWidget</literal> needs to be explicitly imported:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:187
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?myAction&amp;myWidget\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:188
+#, no-c-format
+msgid ""
+"This will then allow a <literal>myWidget</literal> object to be created with "
+"<literal>Seam.Component.newInstance(\"myWidget\")</literal>, which can then "
+"be passed to <literal>myAction.doSomethingWithObject()</literal>."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:191
+#, no-c-format
+msgid "Dates and Times"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:192
+#, no-c-format
+msgid ""
+"Date values are serialized into a String representation that is accurate to "
+"the millisecond. On the client side, use a Javascript Date object to work "
+"with date values. On the server side, use any <literal>java.util.Date</"
+"literal> (or descendent, such as <literal>java.sql.Date</literal> or "
+"<literal>java.sql.Timestamp</literal> class."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:195
+#, no-c-format
+msgid "Enums"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:196
+#, no-c-format
+msgid ""
+"On the client side, enums are treated the same as Strings. When setting the "
+"value for an enum parameter, simply use the String representation of the "
+"enum. Take the following component as an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:199
+#, no-c-format
+msgid ""
+"@Name(\"paintAction\")\n"
+"  public class paintAction implements paintLocal {\n"
+"    public enum Color {red, green, blue, yellow, orange, purple};\n"
+"\n"
+"    public void paint(Color color) {\n"
+"      // code\n"
+"    }    \n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:200
+#, no-c-format
+msgid ""
+"To call the <literal>paint()</literal> method with the color <literal>red</"
+"literal>, pass the parameter value as a String literal:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:203
+#, no-c-format
+msgid "Seam.Component.getInstance(\"paintAction\").paint(\"red\");"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:204
+#, no-c-format
+msgid ""
+"The inverse is also true - that is, if a component method returns an enum "
+"parameter (or contains an enum field anywhere in the returned object graph) "
+"then on the client-side it will be represented as a String."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:207
+#, no-c-format
+msgid "Collections"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:208
+#, no-c-format
+msgid "Bags"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:209
+#, no-c-format
+msgid ""
+"Bags cover all collection types including arrays, collections, lists, sets, "
+"(but excluding Maps - see the next section for those), and are implemented "
+"client-side as a Javascript array. When calling a component method that "
+"accepts one of these types as a parameter, your parameter should be a "
+"Javascript array. If a component method returns one of these types, then the "
+"return value will also be a Javascript array. The remoting framework is "
+"clever enough on the server side to convert the bag to an appropriate type "
+"for the component method call."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:212
+#, no-c-format
+msgid "Maps"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:213
+#, no-c-format
+msgid ""
+"As there is no native support for Maps within Javascript, a simple Map "
+"implementation is provided with the Seam Remoting framework. To create a Map "
+"which can be used as a parameter to a remote call, create a new "
+"<literal>Seam.Remoting.Map</literal> object:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:216
+#, no-c-format
+msgid "var map = new Seam.Remoting.Map();"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:217
+#, no-c-format
+msgid ""
+"This Javascript implementation provides basic methods for working with Maps: "
+"<literal>size()</literal>, <literal>isEmpty()</literal>, <literal>keySet()</"
+"literal>, <literal>values()</literal>, <literal>get(key)</literal>, "
+"<literal>put(key, value)</literal>, <literal>remove(key)</literal> and "
+"<literal>contains(key)</literal>. Each of these methods are equivalent to "
+"their Java counterpart. Where the method returns a collection, such as "
+"<literal>keySet()</literal> and <literal>values()</literal>, a Javascript "
+"Array object will be returned that contains the key or value objects "
+"(respectively)."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:220
+#, no-c-format
+msgid "Debugging"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:221
+#, no-c-format
+msgid ""
+"To aid in tracking down bugs, it is possible to enable a debug mode which "
+"will display the contents of all the packets send back and forth between the "
+"client and server in a popup window. To enable debug mode, either execute "
+"the <literal>setDebug()</literal> method in Javascript:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:224
+#, no-c-format
+msgid "Seam.Remoting.setDebug(true);"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:225
+#, no-c-format
+msgid "Or configure it via components.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:228
+#, no-c-format
+msgid "&lt;remoting:remoting debug=\"true\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:229
+#, no-c-format
+msgid ""
+"To turn off debugging, call <literal>setDebug(false)</literal>. If you want "
+"to write your own messages to the debug log, call <literal>Seam.Remoting.log"
+"(message)</literal>."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:233
+#, no-c-format
+msgid "The Loading Message"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:234
+#, no-c-format
+msgid ""
+"The default loading message that appears in the top right corner of the "
+"screen can be modified, its rendering customised or even turned off "
+"completely."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:237
+#, no-c-format
+msgid "Changing the message"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:238
+#, no-c-format
+msgid ""
+"To change the message from the default \"Please Wait...\" to something "
+"different, set the value of <literal>Seam.Remoting.loadingMessage</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:241
+#, no-c-format
+msgid "Seam.Remoting.loadingMessage = \"Loading...\";"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:243
+#, no-c-format
+msgid "Hiding the loading message"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:244
+#, no-c-format
+msgid ""
+"To completely suppress the display of the loading message, override the "
+"implementation of <literal>displayLoadingMessage()</literal> and "
+"<literal>hideLoadingMessage()</literal> with functions that instead do "
+"nothing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:247
+#, no-c-format
+msgid ""
+"// don't display the loading indicator\n"
+"  Seam.Remoting.displayLoadingMessage = function() {};\n"
+"  Seam.Remoting.hideLoadingMessage = function() {};"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:248
+#, no-c-format
+msgid "A Custom Loading Indicator"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:249
+#, no-c-format
+msgid ""
+"It is also possible to override the loading indicator to display an animated "
+"icon, or anything else that you want. To do this override the "
+"<literal>displayLoadingMessage()</literal> and <literal>hideLoadingMessage()"
+"</literal> messages with your own implementation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:252
+#, no-c-format
+msgid ""
+"Seam.Remoting.displayLoadingMessage = function() {\n"
+"    // Write code here to display the indicator\n"
+"  };\n"
+"  \n"
+"  Seam.Remoting.hideLoadingMessage = function() {\n"
+"    // Write code here to hide the indicator\n"
+"  };"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:253
+#, no-c-format
+msgid "Controlling what data is returned"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:254
+#, no-c-format
+msgid ""
+"When a remote method is executed, the result is serialized into an XML "
+"response that is returned to the client. This response is then unmarshaled "
+"by the client into a Javascript object. For complex types (i.e. Javabeans) "
+"that include references to other objects, all of these referenced objects "
+"are also serialized as part of the response. These objects may reference "
+"other objects, which may reference other objects, and so forth. If left "
+"unchecked, this object \"graph\" could potentially be enormous, depending on "
+"what relationships exist between your objects. And as a side issue (besides "
+"the potential verbosity of the response), you might also wish to prevent "
+"sensitive information from being exposed to the client."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:257
+#, no-c-format
+msgid ""
+"Seam Remoting provides a simple means to \"constrain\" the object graph, by "
+"specifying the <literal>exclude</literal> field of the remote method's "
+"<literal>@WebRemote</literal> annotation. This field accepts a String array "
+"containing one or more paths specified using dot notation. When invoking a "
+"remote method, the objects in the result's object graph that match these "
+"paths are excluded from the serialized result packet."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:260
+#, no-c-format
+msgid ""
+"For all our examples, we'll use the following <literal>Widget</literal> "
+"class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:263
+#, no-c-format
+msgid ""
+"@Name(\"widget\")\n"
+"public class Widget\n"
+"{\n"
+"  private String value;\n"
+"  private String secret;\n"
+"  private Widget child;\n"
+"  private Map&lt;String,Widget&gt; widgetMap;\n"
+"  private List&lt;Widget&gt; widgetList;\n"
+"  \n"
+"  // getters and setters for all fields\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:264
+#, no-c-format
+msgid "Constraining normal fields"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:265
+#, no-c-format
+msgid ""
+"If your remote method returns an instance of <literal>Widget</literal>, but "
+"you don't want to expose the <literal>secret</literal> field because it "
+"contains sensitive information, you would constrain it like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:268
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:269
+#, no-c-format
+msgid ""
+"The value \"secret\" refers to the <literal>secret</literal> field of the "
+"returned object. Now, suppose that we don't care about exposing this "
+"particular field to the client. Instead, notice that the <literal>Widget</"
+"literal> value that is returned has a field <literal>child</literal> that is "
+"also a <literal>Widget</literal>. What if we want to hide the "
+"<literal>child</literal>'s <literal>secret</literal> value instead? We can "
+"do this by using dot notation to specify this field's path within the "
+"result's object graph:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:272
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"child.secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:273
+#, no-c-format
+msgid "Constraining Maps and Collections"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:274
+#, no-c-format
+msgid ""
+"The other place that objects can exist within an object graph are within a "
+"<literal>Map</literal> or some kind of collection (<literal>List</literal>, "
+"<literal>Set</literal>, <literal>Array</literal>, etc). Collections are "
+"easy, and are treated like any other field. For example, if our "
+"<literal>Widget</literal> contained a list of other <literal>Widget</"
+"literal>s in its <literal>widgetList</literal> field, to constrain the "
+"<literal>secret</literal> field of the <literal>Widget</literal>s in this "
+"list the annotation would look like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:277
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetList.secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:278
+#, no-c-format
+msgid ""
+"To constrain a <literal>Map</literal>'s key or value, the notation is "
+"slightly different. Appending <literal>[key]</literal> after the "
+"<literal>Map</literal>'s field name will constrain the <literal>Map</"
+"literal>'s key object values, while <literal>[value]</literal> will "
+"constrain the value object values. The following example demonstrates how "
+"the values of the <literal>widgetMap</literal> field have their "
+"<literal>secret</literal> field constrained:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:281
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetMap[value].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:282
+#, no-c-format
+msgid "Constraining objects of a specific type"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:283
+#, no-c-format
+msgid ""
+"There is one last notation that can be used to constrain the fields of a "
+"type of object no matter where in the result's object graph it appears. This "
+"notation uses either the name of the component (if the object is a Seam "
+"component) or the fully qualified class name (only if the object is not a "
+"Seam component) and is expressed using square brackets:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:286
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"[widget].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:287
+#, no-c-format
+msgid "Combining Constraints"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:288
+#, no-c-format
+msgid ""
+"Constraints can also be combined, to filter objects from multiple paths "
+"within the object graph:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:291
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetList.secret\", \"widgetMap[value].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:292
+#, no-c-format
+msgid "JMS Messaging"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:293
+#, no-c-format
+msgid ""
+"Seam Remoting provides experimental support for JMS Messaging. This section "
+"describes the JMS support that is currently implemented, but please note "
+"that this may change in the future. It is currently not recommended that "
+"this feature is used within a production environment."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:297
+#, no-c-format
+msgid ""
+"Before you can subscribe to a JMS topic, you must first configure a list of "
+"the topics that can be subscribed to by Seam Remoting. List the topics under "
+"<literal>org.jboss.seam.remoting.messaging.subscriptionRegistry."
+"allowedTopics</literal> in <literal>seam.properties</literal>, <literal>web."
+"xml</literal> or <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:300 Remoting.xml:333
+#, no-c-format
+msgid "&lt;remoting:remoting poll-timeout=\"5\" poll-interval=\"1\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:301
+#, no-c-format
+msgid "Subscribing to a JMS Topic"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:302
+#, no-c-format
+msgid "The following example demonstrates how to subscribe to a JMS Topic:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:305
+#, no-c-format
+msgid ""
+"function subscriptionCallback(message)\n"
+"  {\n"
+"    if (message instanceof Seam.Remoting.TextMessage)\n"
+"      alert(\"Received message: \" + message.getText());\n"
+"  }        \n"
+"        \n"
+"  Seam.Remoting.subscribe(\"topicName\", subscriptionCallback);"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:306
+#, no-c-format
+msgid ""
+"The <literal>Seam.Remoting.subscribe()</literal> method accepts two "
+"parameters, the first being the name of the JMS Topic to subscribe to, the "
+"second being the callback function to invoke when a message is received."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:309
+#, no-c-format
+msgid ""
+"There are two types of messages supported, Text messages and Object "
+"messages. If you need to test for the type of message that is passed to your "
+"callback function you can use the <literal>instanceof</literal> operator to "
+"test whether the message is a <literal>Seam.Remoting.TextMessage</literal> "
+"or <literal>Seam.Remoting.ObjectMessage</literal>. A <literal>TextMessage</"
+"literal> contains the text value in its <literal>text</literal> field (or "
+"alternatively call <literal>getText()</literal> on it), while an "
+"<literal>ObjectMessage</literal> contains its object value in its "
+"<literal>object</literal> field (or call its <literal>getObject()</literal> "
+"method)."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:312
+#, no-c-format
+msgid "Unsubscribing from a Topic"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:313
+#, no-c-format
+msgid ""
+"To unsubscribe from a topic, call <literal>Seam.Remoting.unsubscribe()</"
+"literal> and pass in the topic name:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:316
+#, no-c-format
+msgid "Seam.Remoting.unsubscribe(\"topicName\");"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:317
+#, no-c-format
+msgid "Tuning the Polling Process"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:318
+#, no-c-format
+msgid ""
+"There are two parameters which you can modify to control how polling occurs. "
+"The first one is <literal>Seam.Remoting.pollInterval</literal>, which "
+"controls how long to wait between subsequent polls for new messages. This "
+"parameter is expressed in seconds, and its default setting is 10."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:321
+#, no-c-format
+msgid ""
+"The second parameter is <literal>Seam.Remoting.pollTimeout</literal>, and is "
+"also expressed as seconds. It controls how long a request to the server "
+"should wait for a new message before timing out and sending an empty "
+"response. Its default is 0 seconds, which means that when the server is "
+"polled, if there are no messages ready for delivery then an empty response "
+"will be immediately returned."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:324
+#, no-c-format
+msgid ""
+"Caution should be used when setting a high <literal>pollTimeout</literal> "
+"value; each request that has to wait for a message means that a server "
+"thread is tied up until a message is received, or until the request times "
+"out. If many such requests are being served simultaneously, it could mean a "
+"large number of threads become tied up because of this reason."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:327
+#, no-c-format
+msgid ""
+"It is recommended that you set these options via components.xml, however "
+"they can be overridden via Javascript if desired. The following example "
+"demonstrates how to configure the polling to occur much more aggressively. "
+"You should set these parameters to suitable values for your application:"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:330
+#, no-c-format
+msgid "Via components.xml:"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:334
+#, no-c-format
+msgid "Via JavaScript:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:337
+#, no-c-format
+msgid ""
+"// Only wait 1 second between receiving a poll response and sending the next "
+"poll request.\n"
+"  Seam.Remoting.pollInterval = 1;\n"
+"  \n"
+"  // Wait up to 5 seconds on the server for new messages\n"
+"  Seam.Remoting.pollTimeout = 5;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Security.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Security.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Security.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1676 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Security.xml:10
+#, no-c-format
+msgid "Security"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:11
+#, no-c-format
+msgid ""
+"The Seam Security API is an optional Seam feature that provides "
+"authentication and authorization features for securing both domain and page "
+"resources within your Seam project."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:14
+#, no-c-format
+msgid "Overview"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:15
+#, no-c-format
+msgid "Seam Security provides two different modes of operation:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:20
+#, no-c-format
+msgid ""
+"<emphasis>simplified mode</emphasis> - this mode supports authentication "
+"services and simple role-based security checks."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:25
+#, no-c-format
+msgid ""
+"<emphasis>advanced mode</emphasis> - this mode supports all the same "
+"features as the simplified mode, plus it offers rule-based security checks "
+"using JBoss Rules."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:30
+#, no-c-format
+msgid "Which mode is right for my application?"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:31
+#, no-c-format
+msgid ""
+"That all depends on the requirements of your application. If you have "
+"minimal security requirements, for example if you only wish to restrict "
+"certain pages and actions to users who are logged in, or who belong to a "
+"certain role, then the simplified mode will probably be sufficient. The "
+"advantages of this is a more simplified configuration, significantly less "
+"libraries to include, and a smaller memory footprint."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:34
+#, no-c-format
+msgid ""
+"If on the other hand, your application requires security checks based on "
+"contextual state or complex business rules, then you will require the "
+"features provided by the advanced mode."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:37
+#, no-c-format
+msgid "Requirements"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:38
+#, no-c-format
+msgid ""
+"If using the advanced mode features of Seam Security, the following jar "
+"files are required to be configured as modules in <literal>application.xml</"
+"literal>. If you are using Seam Security in simplified mode, these are "
+"<emphasis>not</emphasis> required:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:43
+#, no-c-format
+msgid "drools-compiler-3.0.5.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:48
+#, no-c-format
+msgid "drools-core-3.0.5.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:53
+#, no-c-format
+msgid "commons-jci-core-1.0-406301.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:58
+#, no-c-format
+msgid "commons-jci-janino-2.4.3.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:63
+#, no-c-format
+msgid "commons-lang-2.1.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:68
+#, no-c-format
+msgid "janino-2.4.3.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:73
+#, no-c-format
+msgid "stringtemplate-2.3b6.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:78
+#, no-c-format
+msgid "antlr-2.7.6.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:83
+#, no-c-format
+msgid "antlr-3.0ea8.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:88
+#, no-c-format
+msgid ""
+"For web-based security, <literal>jboss-seam-ui.jar</literal> must also be "
+"included in the application's war file. Also, to make use of the security EL "
+"functions, <literal>SeamFaceletViewHandler</literal> must be used. Configure "
+"it in <literal>faces-config.xml</literal> like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:91
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;view-handler&gt;org.jboss.seam.ui.facelet.SeamFaceletViewHandler&lt;/"
+"view-handler&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:92
+#, no-c-format
+msgid "Authentication"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:93
+#, no-c-format
+msgid ""
+"The authentication features provided by Seam Security are built upon JAAS "
+"(Java Authentication and Authorization Service), and as such provide a "
+"robust and highly configurable API for handling user authentication. "
+"However, for less complex authentication requirements Seam offers a much "
+"more simplified method of authentication that hides the complexity of JAAS."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:96
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:97
+#, no-c-format
+msgid ""
+"The simplified authentication method uses a built-in JAAS login module, "
+"<literal>SeamLoginModule</literal>, which delegates authentication to one of "
+"your own Seam components. This login module is already configured inside "
+"Seam as part of a default application policy and as such does not require "
+"any additional configuration files. It allows you to write an authentication "
+"method using the entity classes that are provided by your own application. "
+"Configuring this simplified form of authentication requires the "
+"<literal>identity</literal> component to be configured in "
+"<literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:100
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:security=\"http://jboss.com/products/seam/security\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core http://jboss.com/"
+"products/seam/core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components http://jboss.com/"
+"products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/drools http://jboss.com/"
+"products/seam/drools-1.2.xsd\"\n"
+"                 http://jboss.com/products/seam/security http://jboss.com/"
+"products/seam/security-1.2.xsd\"&gt;                \n"
+"        \n"
+"    &lt;security:identity authenticate-method=\"#{authenticator.authenticate}"
+"\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:101
+#, no-c-format
+msgid ""
+"If you wish to use the advanced security features such as rule-based "
+"permission checks, all you need to do is include the Drools (JBoss Rules) "
+"jars in your classpath, and add some additional configuration, described "
+"later."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:104
+#, no-c-format
+msgid ""
+"The EL expression <literal>#{authenticator.authenticate}</literal> is a "
+"method binding indicating that the <literal>authenticate</literal> method of "
+"the <literal>authenticator</literal> component will be used to authenticate "
+"the user."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:107
+#, no-c-format
+msgid "Writing an authentication method"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:108
+#, no-c-format
+msgid ""
+"The <literal>authenticate-method</literal> property specified for "
+"<literal>identity</literal> in <literal>components.xml</literal> specifies "
+"which method will be used by <literal>SeamLoginModule</literal> to "
+"authenticate users. This method takes no parameters, and is expected to "
+"return a boolean indicating whether authentication is successful or not. The "
+"user's username and password can be obtained from <literal>Identity.instance"
+"().getUsername()</literal> and <literal>Identity.instance().getPassword()</"
+"literal>, respectively. Any roles that the user is a member of should be "
+"assigned using <literal>Identity.instance().addRole()</literal>. Here's a "
+"complete example of an authentication method inside a JavaBean component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:111
+#, no-c-format
+msgid ""
+"@Name(\"authenticator\")\n"
+"public class Authenticator {\n"
+"   @In EntityManager entityManager;\n"
+"   \n"
+"   public boolean authenticate() {\n"
+"      try\n"
+"      {\n"
+"         User user = (User) entityManager.createQuery(\n"
+"            \"from User where username = :username and password = :password"
+"\")\n"
+"            .setParameter(\"username\", Identity.instance().getUsername())\n"
+"            .setParameter(\"password\", Identity.instance().getPassword())\n"
+"            .getSingleResult();\n"
+"\n"
+"         if (user.getRoles() != null)\n"
+"         {\n"
+"            for (UserRole mr : user.getRoles())\n"
+"               Identity.instance().addRole(mr.getName());\n"
+"         }\n"
+"\n"
+"         return true;\n"
+"      }\n"
+"      catch (NoResultException ex)\n"
+"      {\n"
+"         FacesMessages.instance().add(\"Invalid username/password\");\n"
+"         return false;\n"
+"      }\n"
+"      \n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:112
+#, no-c-format
+msgid ""
+"In the above example, both <literal>User</literal> and <literal>UserRole</"
+"literal> are application-specific entity beans. The <literal>roles</literal> "
+"parameter is populated with the roles that the user is a member of, which "
+"should be added to the <literal>Set</literal> as literal string values, e.g. "
+"\"admin\", \"user\". In this case, if the user record is not found and a "
+"<literal>NoResultException</literal> thrown, the authentication method "
+"returns <literal>false</literal> to indicate the authentication failed."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:115
+#, no-c-format
+msgid "Writing a login form"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:116
+#, no-c-format
+msgid ""
+"The <literal>Identity</literal> component provides both <literal>username</"
+"literal> and <literal>password</literal> properties, catering for the most "
+"common authentication scenario. These properties can be bound directly to "
+"the username and password fields on a login form. Once these properties are "
+"set, calling the <literal>identity.login()</literal> method will "
+"authenticate the user using the provided credentials. Here's an example of a "
+"simple login form:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:119
+#, no-c-format
+msgid ""
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"name\" value=\"Username\"/&gt;\n"
+"    &lt;h:inputText id=\"name\" value=\"#{identity.username}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"password\" value=\"Password\"/&gt;\n"
+"    &lt;h:inputSecret id=\"password\" value=\"#{identity.password}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;div&gt;\n"
+"    &lt;h:commandButton value=\"Login\" action=\"#{identity.login}\"/&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:120
+#, no-c-format
+msgid ""
+"Similarly, logging out the user is done by calling <literal>#{identity."
+"logout}</literal>. Calling this action will clear the security state of the "
+"currently authenticated user."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:123
+#, no-c-format
+msgid "Simplified Configuration - Summary"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:124
+#, no-c-format
+msgid ""
+"So to sum up, there are the three easy steps to configure authentication:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:129
+#, no-c-format
+msgid ""
+"Configure an authentication method in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:134
+#, no-c-format
+msgid "Write an authentication method."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:139
+#, no-c-format
+msgid "Write a login form so that the user can authenticate."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:144
+#, no-c-format
+msgid "Handling Security Exceptions"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:145
+#, no-c-format
+msgid ""
+"To prevent users from receiving the default error page in response to a "
+"security error, it's recommended that <literal>pages.xml</literal> is "
+"configured to redirect security errors to a more \"pretty\" page. The two "
+"main types of exceptions thrown by the security API are:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:150
+#, no-c-format
+msgid ""
+"<literal>NotLoggedInException</literal> - This exception is thrown if the "
+"user attempts to access a restricted action or page when they are not logged "
+"in."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:155
+#, no-c-format
+msgid ""
+"<literal>AuthorizationException</literal> - This exception is only thrown if "
+"the user is already logged in, and they have attempted to access a "
+"restricted action or page for which they do not have the necessary "
+"privileges."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:160
+#, no-c-format
+msgid ""
+"In the case of a <literal>NotLoggedInException</literal>, it is recommended "
+"that the user is redirected to either a login or registration page so that "
+"they can log in. For an <literal>AuthorizationException</literal>, it may be "
+"useful to redirect the user to an error page. Here's an example of a "
+"<literal>pages.xml</literal> file that redirects both of these security "
+"exceptions:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:163
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"\n"
+"    ...\n"
+"    \n"
+"    &lt;exception class=\"org.jboss.seam.security.NotLoggedInException"
+"\"&gt;\n"
+"        &lt;redirect view-id=\"/login.xhtml\"&gt;\n"
+"            &lt;message&gt;You must be logged in to perform this action&lt;/"
+"message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"    \n"
+"    &lt;exception class=\"org.jboss.seam.security.AuthorizationException"
+"\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"        &lt;redirect view-id=\"/security_error.xhtml\"&gt;\n"
+"            &lt;message&gt;\n"
+"                You do not have the necessary security privileges to perform "
+"this action.\n"
+"            &lt;/message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"  \n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:164
+#, no-c-format
+msgid ""
+"Most web applications require even more sophisticated handling of login "
+"redirection, so Seam includes some special functionality for handling this "
+"problem."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:167
+#, no-c-format
+msgid "Login Redirection"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:168
+#, no-c-format
+msgid ""
+"You can ask Seam to redirect the user to a login screen when an "
+"unauthenticated user tries to access a particular view (or wildcarded view "
+"id) as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:171
+#, no-c-format
+msgid ""
+"&lt;pages login-view-id=\"/login.xhtml\"&gt;\n"
+"\n"
+"    &lt;page view-id=\"/members/*\" login-required=\"true\"/&gt;\n"
+"    \n"
+"    ...\n"
+"    \n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:172
+#, no-c-format
+msgid ""
+"(This is less of a blunt instrument than the exception handler shown above, "
+"but should probably be used in conjunction with it.)"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:175
+#, no-c-format
+msgid ""
+"After the user logs in, we want to automatically send them back where they "
+"came from, so they can retry the action that required logging in. If you add "
+"the following event listeners to <literal>components.xml</literal>, attempts "
+"to access a restricted view while not logged in will be remembered, so that "
+"upon the user successfully logging in they will be redirected to the "
+"originally requested view, with any page parameters that existed in the "
+"original request."
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:178
+#, no-c-format
+msgid ""
+"&lt;event type=\"org.jboss.seam.notLoggedIn\"&gt;\n"
+"    &lt;action expression=\"#{redirect.captureCurrentView}\"/&gt;\n"
+"&lt;/event&gt;\n"
+"    \n"
+"&lt;event type=\"org.jboss.seam.postAuthenticate\"&gt;\n"
+"    &lt;action expression=\"#{redirect.returnToCapturedView}\"/&gt;\n"
+"&lt;/event&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:179
+#, no-c-format
+msgid ""
+"Note that login redirection is implemented as a conversation-scoped "
+"mechanism, so don't end the conversation in your <literal>authenticate()</"
+"literal> method."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:182
+#, no-c-format
+msgid "Advanced Authentication Features"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:183
+#, no-c-format
+msgid ""
+"This section explores some of the advanced features provided by the security "
+"API for addressing more complex security requirements."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:186
+#, no-c-format
+msgid "Using your container's JAAS configuration"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:187
+#, no-c-format
+msgid ""
+"If you would rather not use the simplified JAAS configuration provided by "
+"the Seam Security API, you may instead delegate to the default system JAAS "
+"configuration by providing a <literal>jaasConfigName</literal> property in "
+"<literal>components.xml</literal>. For example, if you are using JBoss AS "
+"and wish to use the <literal>other</literal> policy (which uses the "
+"<literal>UsersRolesLoginModule</literal> login module provided by JBoss AS), "
+"then the entry in <literal>components.xml</literal> would look like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:190
+#, no-c-format
+msgid ""
+"&lt;security:identity authenticate-method=\"#{authenticator.authenticate}"
+"\" \n"
+"                      jaas-config-name=\"other\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:191
+#, no-c-format
+msgid "Authorization"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:192
+#, no-c-format
+msgid ""
+"There are a number of authorization features provided by the Seam Security "
+"API for securing access to components, component methods, and pages. This "
+"section describes each of these. An important thing to note is that if you "
+"wish to use any of the advanced features (such as rule-based permissions) "
+"then your <literal>components.xml</literal> must be configured to support "
+"this - see the Configuration section above."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:195
+#, no-c-format
+msgid "Core concepts"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:196
+#, no-c-format
+msgid ""
+"Each of the authorization mechanisms provided by the Seam Security API are "
+"built upon the concept of a user being granted roles and/or permissions. A "
+"role is a <emphasis>group</emphasis>, or <emphasis>type</emphasis>, of user "
+"that may have been granted certain privileges for performing one or more "
+"specific actions within an application. A permission on the other hand is a "
+"privilege (sometimes once-off) for performing a single, specific action. It "
+"is entirely possible to build an application using nothing but permissions, "
+"however roles offer a higher level of convenience when granting privileges "
+"to groups of users."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:199
+#, no-c-format
+msgid ""
+"Roles are simple, consisting of only a name such as \"admin\", \"user\", "
+"\"customer\", etc. Permissions consist of both a name and an action, and are "
+"represented within this documentation in the form <literal>name:action</"
+"literal>, for example <literal>customer:delete</literal>, or "
+"<literal>customer:insert</literal>."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:202
+#, no-c-format
+msgid "Securing components"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:203
+#, no-c-format
+msgid ""
+"Let's start by examining the simplest form of authorization, component "
+"security, starting with the <literal>@Restrict</literal> annotation."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:206
+#, no-c-format
+msgid "The @Restrict annotation"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:207
+#, no-c-format
+msgid ""
+"Seam components may be secured either at the method or the class level, "
+"using the <literal>@Restrict</literal> annotation. If both a method and it's "
+"declaring class are annotated with <literal>@Restrict</literal>, the method "
+"restriction will take precedence (and the class restriction will not apply). "
+"If a method invocation fails a security check, then an exception will be "
+"thrown as per the contract for <literal>Identity.checkRestriction()</"
+"literal> (see Inline Restrictions). A <literal>@Restrict</literal> on just "
+"the component class itself is equivalent to adding <literal>@Restrict</"
+"literal> to each of its methods."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:210
+#, no-c-format
+msgid ""
+"An empty <literal>@Restrict</literal> implies a permission check of "
+"<literal>componentName:methodName</literal>. Take for example the following "
+"component method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:213
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class AccountAction {\n"
+"    @Restrict public void delete() {\n"
+"      ...\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:214
+#, no-c-format
+msgid ""
+"In this example, the implied permission required to call the <literal>delete"
+"()</literal> method is <literal>account:delete</literal>. The equivalent of "
+"this would be to write <literal>@Restrict(\"#{s:hasPermission"
+"('account','delete',null)}\")</literal>. Now let's look at another example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:217
+#, no-c-format
+msgid ""
+"@Restrict @Name(\"account\")\n"
+"public class AccountAction {\n"
+"    public void insert() {\n"
+"      ...\n"
+"    }\n"
+"    @Restrict(\"#{s:hasRole('admin')}\") \n"
+"    public void delete() {\n"
+"      ...\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:218
+#, no-c-format
+msgid ""
+"This time, the component class itself is annotated with <literal>@Restrict</"
+"literal>. This means that any methods without an overriding "
+"<literal>@Restrict</literal> annotation require an implicit permission "
+"check. In the case of this example, the <literal>insert()</literal> method "
+"requires a permission of <literal>account:insert</literal>, while the "
+"<literal>delete()</literal> method requires that the user is a member of the "
+"<literal>admin</literal> role."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:221
+#, no-c-format
+msgid ""
+"Before we go any further, let's address the <literal>#{s:hasRole()}</"
+"literal> expression seen in the above example. Both <literal>s:hasRole</"
+"literal> and <literal>s:hasPermission</literal> are EL functions, which "
+"delegate to the correspondingly named methods of the <literal>Identity</"
+"literal> class. These functions can be used within any EL expression "
+"throughout the entirety of the security API."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:224
+#, no-c-format
+msgid ""
+"Being an EL expression, the value of the <literal>@Restrict</literal> "
+"annotation may reference any objects that exist within a Seam context. This "
+"is extremely useful when performing permission checks for a specific object "
+"instance. Look at this example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:227
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class AccountAction {\n"
+"    @In Account selectedAccount;\n"
+"    @Restrict(\"#{s:hasPermission('account','modify',selectedAccount)}\")\n"
+"    public void modify() {\n"
+"        selectedAccount.modify();\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:228
+#, no-c-format
+msgid ""
+"The interesting thing to note from this example is the reference to "
+"<literal>selectedAccount</literal> seen within the <literal>hasPermission()</"
+"literal> function call. The value of this variable will be looked up from "
+"within the Seam context, and passed to the <literal>hasPermission()</"
+"literal> method in <literal>Identity</literal>, which in this case can then "
+"determine if the user has the required permission for modifying the "
+"specified <literal>Account</literal> object."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:231
+#, no-c-format
+msgid "Inline restrictions"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:232
+#, no-c-format
+msgid ""
+"Sometimes it might be desirable to perform a security check in code, without "
+"using the <literal>@Restrict</literal> annotation. In this situation, simply "
+"use <literal>Identity.checkRestriction()</literal> to evaluate a security "
+"expression, like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:235
+#, no-c-format
+msgid ""
+"public void deleteCustomer() {\n"
+"    Identity.instance().checkRestriction(\"#{s:hasPermission"
+"('customer','delete',\n"
+"        selectedCustomer)}\");\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:236
+#, no-c-format
+msgid ""
+"If the expression specified doesn't evaluate to <literal>true</literal>, "
+"either"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:241
+#, no-c-format
+msgid ""
+"if the user is not logged in, a <literal>NotLoggedInException</literal> "
+"exception is thrown or"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:246
+#, no-c-format
+msgid ""
+"if the user is logged in, an <literal>AuthorizationException</literal> "
+"exception is thrown."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:251
+#, no-c-format
+msgid ""
+"It is also possible to call the <literal>hasRole()</literal> and "
+"<literal>hasPermission()</literal> methods directly from Java code:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:254
+#, no-c-format
+msgid ""
+"if (!Identity.instance().hasRole(\"admin\"))\n"
+"     throw new AuthorizationException(\"Must be admin to perform this action"
+"\");\n"
+"\n"
+"if (!Identity.instance().hasPermission(\"customer\", \"create\", null))\n"
+"     throw new AuthorizationException(\"You may not create new customers\");"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:255
+#, no-c-format
+msgid "Security in the user interface"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:256
+#, no-c-format
+msgid ""
+"One indication of a well designed user interface is that the user is not "
+"presented with options for which they don't have the necessary privileges to "
+"use. Seam Security allows conditional rendering of either 1) sections of a "
+"page or 2) individual controls, based upon the privileges of the user, using "
+"the very same EL expressions that are used for component security."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:259
+#, no-c-format
+msgid ""
+"Let's take a look at some examples of interface security. First of all, "
+"let's pretend that we have a login form that should only be rendered if the "
+"user is not already logged in. Using the <literal>identity.isLoggedIn()</"
+"literal> property, we can write this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:262
+#, no-c-format
+msgid ""
+"&lt;h:form class=\"loginForm\" rendered=\"#{not identity.loggedIn}\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:263
+#, no-c-format
+msgid ""
+"If the user isn't logged in, then the login form will be rendered - very "
+"straight forward so far. Now let's pretend there is a menu on the page that "
+"contains some actions which should only be accessible to users in the "
+"<literal>manager</literal> role. Here's one way that these could be written:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:266
+#, no-c-format
+msgid ""
+"&lt;h:outputLink action=\"#{reports.listManagerReports}\" rendered=\"#{s:"
+"hasRole('manager')}\"&gt;\n"
+"    Manager Reports\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:267
+#, no-c-format
+msgid ""
+"This is also quite straight forward. If the user is not a member of the "
+"<literal>manager</literal> role, then the outputLink will not be rendered. "
+"The <literal>rendered</literal> attribute can generally be used on the "
+"control itself, or on a surrounding <literal>&lt;s:div&gt;</literal> or "
+"<literal>&lt;s:span&gt;</literal> control."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:270
+#, no-c-format
+msgid ""
+"Now for something more complex. Let's say you have a <literal>h:dataTable</"
+"literal> control on a page listing records for which you may or may not wish "
+"to render action links depending on the user's privileges. The <literal>s:"
+"hasPermission</literal> EL function allows us to pass in an object parameter "
+"which can be used to determine whether the user has the requested permission "
+"for that object or not. Here's how a dataTable with secured links might look:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:273
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{clients}\" var=\"cl\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Name&lt;/f:facet&gt;\n"
+"        #{cl.name}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;City&lt;/f:facet&gt;\n"
+"        #{cl.city}\n"
+"    &lt;/h:column&gt;   \n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"        &lt;s:link value=\"Modify Client\" action=\"#{clientAction.modify}"
+"\"\n"
+"                rendered=\"#{s:hasPermission('client','modify',cl)\"/&gt;\n"
+"        &lt;s:link value=\"Delete Client\" action=\"#{clientAction.delete}"
+"\"\n"
+"                rendered=\"#{s:hasPermission('client','delete',cl)\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:274
+#, no-c-format
+msgid "Securing pages"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:275
+#, no-c-format
+msgid ""
+"Page security requires that the application is using a <literal>pages.xml</"
+"literal> file, however is extremely simple to configure. Simply include a "
+"<literal>&lt;restrict/&gt;</literal> element within the <literal>page</"
+"literal> elements that you wish to secure. By default, if a value is not "
+"provided for the <literal>restrict</literal> element, an implied permission "
+"of <literal>{viewId}:render</literal> will be checked for whenever accessing "
+"that page. Otherwise the value will be evaluated as a standard security "
+"expression. Here's a couple of examples:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:278
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/settings.xhtml\"&gt;\n"
+"    &lt;restrict/&gt;\n"
+"&lt;/page&gt;\n"
+"        \n"
+"&lt;page view-id=\"/reports.xhtml\"&gt;    \n"
+"    &lt;restrict&gt;#{s:hasRole('admin')}&lt;/restrict&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:279
+#, no-c-format
+msgid ""
+"In the above example, the first page has an implied permission restriction "
+"of <literal>/settings.xhtml:render</literal>, while the second one checks "
+"that the user is a member of the <literal>admin</literal> role."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:282
+#, no-c-format
+msgid "Securing Entities"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:283
+#, no-c-format
+msgid ""
+"Seam security also makes it possible to apply security restrictions to read, "
+"insert, update and delete actions for entities."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:286
+#, no-c-format
+msgid ""
+"To secure all actions for an entity class, add a <literal>@Restrict</"
+"literal> annotation on the class itself:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:289
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"customer\")\n"
+"@Restrict\n"
+"public class Customer {\n"
+"  ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:290
+#, no-c-format
+msgid ""
+"If no expression is specified in the <literal>@Restrict</literal> "
+"annotation, the default security check that is performed is a permission "
+"check of <literal>entityName:action</literal>, where <literal>entityName</"
+"literal> is the name of the entity (or the class name if no @Name is "
+"specified), and the <literal>action</literal> is either <literal>read</"
+"literal>, <literal>insert</literal>, <literal>update</literal> or "
+"<literal>delete</literal>."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:293
+#, no-c-format
+msgid ""
+"It is also possible to only restrict certain actions, by placing a "
+"<literal>@Restrict</literal> annotation on the relevent entity lifecycle "
+"method (annotated as follows):"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:298
+#, no-c-format
+msgid ""
+"<literal>@PostLoad</literal> - Called after an entity instance is loaded "
+"from the database. Use this method to configure a <literal>read</literal> "
+"permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:303
+#, no-c-format
+msgid ""
+"<literal>@PrePersist</literal> - Called before a new instance of the entity "
+"is inserted. Use this method to configure an <literal>insert</literal> "
+"permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:308
+#, no-c-format
+msgid ""
+"<literal>@PreUpdate</literal> - Called before an entity is updated. Use this "
+"method to configure an <literal>update</literal> permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:313
+#, no-c-format
+msgid ""
+"<literal>@PreRemove</literal> - Called before an entity is deleted. Use this "
+"method to configure a <literal>delete</literal> permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:318
+#, no-c-format
+msgid ""
+"Here's an example of how an entity would be configured to perform a security "
+"check for any <literal>insert</literal> operations. Please note that the "
+"method is not required to do anything, the only important thing in regard to "
+"security is how it is annotated:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:321
+#, no-c-format
+msgid ""
+"@PrePersist @Restrict\n"
+"  public void prePersist() {}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:322
+#, no-c-format
+msgid ""
+"And here's an example of an entity permission rule that checks if the "
+"authenticated user is allowed to create a new blog entry (from the seamspace "
+"example):"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:325
+#, no-c-format
+msgid ""
+"rule InsertMemberBlog\n"
+"  no-loop\n"
+"  activation-group \"permissions\"\n"
+"when\n"
+"  c: PermissionCheck(name == \"memberBlog\", action == \"insert\", granted "
+"== false)\n"
+"  Principal(nm : name)\n"
+"  MemberBlog(mbr : member -&gt; (mbr.getUsername().equals(nm)))\n"
+"then\n"
+"  c.grant();\n"
+"  modify(c);\n"
+"end;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:326
+#, no-c-format
+msgid ""
+"Finally, we need to install a listener class that integrates Seam security "
+"with your JPA provider."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:329
+#, no-c-format
+msgid "Entity security with JPA"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:330
+#, no-c-format
+msgid ""
+"Security checks for EJB3 entity beans are performed with an "
+"<literal>EntityListener</literal>. You can install this listener by using "
+"the following <literal>META-INF/orm.xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:333
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;entity-mappings xmlns=\"http://java.sun.com/xml/ns/persistence/orm\"\n"
+"                 xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"                 xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence/"
+"orm \n"
+"                 http://java.sun.com/xml/ns/persistence/orm_1_0.xsd\"\n"
+"                 version=\"1.0\"&gt;\n"
+"                 \n"
+"    &lt;persistence-unit-metadata&gt;\n"
+"        &lt;persistence-unit-defaults&gt;\n"
+"            &lt;entity-listeners&gt;\n"
+"                &lt;entity-listener class=\"org.jboss.seam.security."
+"EntitySecurityListener\"/&gt;\n"
+"            &lt;/entity-listeners&gt;\n"
+"        &lt;/persistence-unit-defaults&gt;\n"
+"    &lt;/persistence-unit-metadata&gt;\n"
+"    \n"
+"&lt;/entity-mappings&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:334
+#, no-c-format
+msgid "Entity security with Hibernate"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:335
+#, no-c-format
+msgid ""
+"If you are using a Hibernate <literal>SessionFactory</literal> configured "
+"via Seam, you don't need to do anything special to use entity security."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:338
+#, no-c-format
+msgid "Writing Security Rules"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:339
+#, no-c-format
+msgid ""
+"Up to this point there has been a lot of mention of permissions, but no "
+"information about how permissions are actually defined or granted. This "
+"section completes the picture, by explaining how permission checks are "
+"processed, and how to implement permission checks for a Seam application."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:342
+#, no-c-format
+msgid "Permissions Overview"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:343
+#, no-c-format
+msgid ""
+"So how does the security API know whether a user has the <literal>customer:"
+"modify</literal> permission for a specific customer? Seam Security provides "
+"quite a novel method for determining user permissions, based on JBoss Rules. "
+"A couple of the advantages of using a rule engine are 1) a centralized "
+"location for the business logic that is behind each user permission, and 2) "
+"speed - JBoss Rules uses very efficient algorithms for evaluating large "
+"numbers of complex rules involving multiple conditions."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:346
+#, no-c-format
+msgid "Configuring a rules file"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:347
+#, no-c-format
+msgid ""
+"Seam Security expects to find a <literal>RuleBase</literal> component called "
+"<literal>securityRules</literal> which it uses to evaluate permission "
+"checks. This is configured in <literal>components.xml</literal> as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:350
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:security=\"http://jboss.com/products/seam/security\"\n"
+"            xmlns:drools=\"http://jboss.com/products/seam/drools\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                     http://jboss.com/products/seam/core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components  \n"
+"                     http://jboss.com/products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/drools \n"
+"                     http://jboss.com/products/seam/drools-1.2.xsd\"\n"
+"                 http://jboss.com/products/seam/security \n"
+"                     http://jboss.com/products/seam/security-1.2.xsd"
+"\"&gt;                 \n"
+"        \n"
+"   &lt;drools:rule-base name=\"securityRules\"&gt;\n"
+"       &lt;drools:rule-files&gt;\n"
+"           &lt;value&gt;/META-INF/security.drl&lt;/value&gt;\n"
+"       &lt;/drools:rule-files&gt;\n"
+"   &lt;/drools:rule-base&gt;    \n"
+"   \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:351
+#, no-c-format
+msgid ""
+"Once the <literal>RuleBase</literal> component is configured, it's time to "
+"write the security rules."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:354
+#, no-c-format
+msgid "Creating a security rules file"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:355
+#, no-c-format
+msgid ""
+"For this step you need to create a file called <literal>security.drl</"
+"literal> in the <literal>/META-INF</literal> directory of your application's "
+"jar file. In actual fact this file can be called anything you want, and "
+"exist in any location as long as it is configured appropriately in "
+"<literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:358
+#, no-c-format
+msgid ""
+"So what should the security rules file contain? At this stage it might be a "
+"good idea to at least skim through the JBoss Rules documentation, however to "
+"get started here's an extremely simple example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:361
+#, no-c-format
+msgid ""
+"package MyApplicationPermissions;\n"
+"\n"
+"import org.jboss.seam.security.PermissionCheck;\n"
+"import org.jboss.seam.security.Role;\n"
+"\n"
+"rule CanUserDeleteCustomers\n"
+"when\n"
+"  c: PermissionCheck(name == \"customer\", action == \"delete\")\n"
+"  Role(name == \"admin\")\n"
+"then\n"
+"  c.grant();\n"
+"end;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:362
+#, no-c-format
+msgid ""
+"Let's break this down. The first thing we see is the package declaration. A "
+"package in JBoss Rules is essentially a collection of rules. The package "
+"name can be anything you want - it doesn't relate to anything else outside "
+"the scope of the rule base."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:365
+#, no-c-format
+msgid ""
+"The next thing we can notice is a couple of import statements for the "
+"<literal>PermissionCheck</literal> and <literal>Role</literal> classes. "
+"These imports inform the rules engine that we'll be referencing these "
+"classes within our rules."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:368
+#, no-c-format
+msgid ""
+"Finally we have the code for the rule. Each rule within a package should be "
+"given a unique name (usually describing the purpose of the rule). In this "
+"case our rule is called <literal>CanUserDeleteCustomers</literal> and will "
+"be used to check whether a user is allowed to delete a customer record."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:371
+#, no-c-format
+msgid ""
+"Looking at the body of the rule definition we can notice two distinct "
+"sections. Rules have what is known as a left hand side (LHS) and a right "
+"hand side (RHS). The LHS consists of the conditional part of the rule, i.e. "
+"a list of conditions which must be satisfied for the rule to fire. The LHS "
+"is represented by the <literal>when</literal> section. The RHS is the "
+"consequence, or action section of the rule that will only be fired if all of "
+"the conditions in the LHS are met. The RHS is represented by the "
+"<literal>then</literal> section. The end of the rule is denoted by the "
+"<literal>end;</literal> line."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:374
+#, no-c-format
+msgid ""
+"If we look at the LHS of the rule, we see two conditions listed there. Let's "
+"examine the first condition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:377
+#, no-c-format
+msgid "c: PermissionCheck(name == \"customer\", action == \"delete\")"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:378
+#, no-c-format
+msgid ""
+"In plain english, this condition is stating that there must exist a "
+"<literal>PermissionCheck</literal> object with a <literal>name</literal> "
+"property equal to \"customer\", and an <literal>action</literal> property "
+"equal to \"delete\" within the working memory. What is the working memory? "
+"It is a session-scoped object that contains the contextual information that "
+"is required by the rules engine to make a decision about a permission check. "
+"Each time the <literal>hasPermission()</literal> method is called, a "
+"temporary <literal>PermissionCheck</literal> object, or <emphasis>Fact</"
+"emphasis>, is asserted into the working memory. This "
+"<literal>PermissionCheck</literal> corresponds exactly to the permission "
+"that is being checked, so for example if you call <literal>hasPermission"
+"(\"account\", \"create\", null)</literal> then a <literal>PermissionCheck</"
+"literal> object with a <literal>name</literal> equal to \"account\" and "
+"<literal>action</literal> equal to \"create\" will be asserted into the "
+"working memory for the duration of the permission check."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:381
+#, no-c-format
+msgid ""
+"So what else is in the working memory? Besides the short-lived temporary "
+"facts asserted during a permission check, there are some longer-lived "
+"objects in the working memory that stay there for the entire duration of a "
+"user being authenticated. These include any <literal>java.security."
+"Principal</literal> objects that are created as part of the authentication "
+"process, plus a <literal>org.jboss.seam.security.Role</literal> object for "
+"each of the roles that the user is a member of. It is also possible to "
+"assert additional long-lived facts into the working memory by calling "
+"<literal>Identity.instance().getSecurityContext().assertObject()</literal>, "
+"passing the object as a parameter."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:384
+#, no-c-format
+msgid ""
+"Getting back to our simple example, we can also notice that the first line "
+"of our LHS is prefixed with <literal>c:</literal>. This is a variable "
+"binding, and is used to refer back to the object that is matched by the "
+"condition. Moving onto the second line of our LHS, we see this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:387
+#, no-c-format
+msgid "Role(name == \"admin\")"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:388
+#, no-c-format
+msgid ""
+"This condition simply states that there must be a <literal>Role</literal> "
+"object with a <literal>name</literal> of \"admin\" within the working "
+"memory. As mentioned, user roles are asserted into the working memory as "
+"long-lived facts. So, putting both conditions together, this rule is "
+"essentially saying \"I will fire if you are checking for the "
+"<literal>customer:delete</literal> permission and the user is a member of "
+"the <literal>admin</literal> role\"."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:391
+#, no-c-format
+msgid ""
+"So what is the consequence of the rule firing? Let's take a look at the RHS "
+"of the rule:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:394
+#, no-c-format
+msgid "c.grant()"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:395
+#, no-c-format
+msgid ""
+"The RHS consists of Java code, and in this case is invoking the "
+"<literal>grant()</literal> method of the <literal>c</literal> object, which "
+"as already mentioned is a variable binding for the <literal>PermissionCheck</"
+"literal> object. Besides the <literal>name</literal> and <literal>action</"
+"literal> properties of the <literal>PermissionCheck</literal> object, there "
+"is also a <literal>granted</literal> property which is initially set to "
+"<literal>false</literal>. Calling <literal>grant()</literal> on a "
+"<literal>PermissionCheck</literal> sets the <literal>granted</literal> "
+"property to <literal>true</literal>, which means that the permission check "
+"was successful, allowing the user to carry out whatever action the "
+"permission check was intended for."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:398
+#, no-c-format
+msgid "SSL Security"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:399
+#, no-c-format
+msgid ""
+"Seam includes basic support for serving sensitive pages via the HTTPS "
+"protocol. This is easily configured by specifying a <literal>scheme</"
+"literal> for the page in <literal>pages.xml</literal>. The following example "
+"shows how the view <literal>/login.xhtml</literal> is configured to use "
+"HTTPS:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:402
+#, no-c-format
+msgid "&lt;page view-id=\"/login.xhtml\" scheme=\"https\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:403
+#, no-c-format
+msgid ""
+"This configuration is automatically extended to both <literal>s:link</"
+"literal> and <literal>s:button</literal> JSF controls, which (when "
+"specifying the <literal>view</literal>) will also render the link using the "
+"correct protocol. Based on the previous example, the following link will use "
+"the HTTPS protocol because <literal>/login.xhtml</literal> is configured to "
+"use it:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:406
+#, no-c-format
+msgid "&lt;s:link view=\"/login.xhtml\" value=\"Login\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:407
+#, no-c-format
+msgid ""
+"Browsing directly to a view when using the <emphasis>incorrect</emphasis> "
+"protocol will cause a redirect to the same view using the <emphasis>correct</"
+"emphasis> protocol. For example, browsing to a page that has <literal>scheme="
+"\"https\"</literal> using HTTP will cause a redirect to the same page using "
+"HTTPS."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:410
+#, no-c-format
+msgid ""
+"It is also possible to configure a default <literal>scheme</literal> for all "
+"pages. This is actually quite important, as you might only wish to use HTTPS "
+"for a few pages, and if no default scheme is specified then the default "
+"behavior is to continue using the current scheme. What this means is that "
+"once you enter a page with HTTPS, then HTTPS will continue to be used even "
+"if you navigate away to other non-HTTPS pages (a bad thing!). So it is "
+"strongly recommended to include a default <literal>scheme</literal>, by "
+"configuring it on the default (<literal>\"*\"</literal>) view:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:413
+#, no-c-format
+msgid "&lt;page view-id=\"*\" scheme=\"http\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:414
+#, no-c-format
+msgid ""
+"Of course, if <emphasis>none</emphasis> of the pages in your application use "
+"HTTPS then it is not required to specify a default scheme."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:417
+#, no-c-format
+msgid "Implementing a Captcha Test"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:418
+#, no-c-format
+msgid ""
+"Though strictly not part of the security API, it might be useful in certain "
+"circumstances (such as new user registrations, posting to a public blog or "
+"forum) to implement a Captcha (<emphasis>C</emphasis>ompletely <emphasis>A</"
+"emphasis>utomated <emphasis>P</emphasis>ublic <emphasis>T</emphasis>uring "
+"test to tell <emphasis>C</emphasis>omputers and <emphasis>H</emphasis>umans "
+"<emphasis>A</emphasis>part) to prevent automated bots from interacting with "
+"your application. Seam provides seamless integration with JCaptcha, an "
+"excellent library for generating Captcha challenges. If you wish to use the "
+"captcha feature in your application you need to include the jcaptcha-* jar "
+"file from the Seam lib directory in your project, and register it in "
+"<literal>application.xml</literal> as a java module."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:421
+#, no-c-format
+msgid "Configuring the Captcha Servlet"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:422
+#, no-c-format
+msgid ""
+"To get up and running, it is necessary to configure the Seam Resource "
+"Servlet, which will provide the Captcha challenge images to your pages. This "
+"requires the following entry in <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:425
+#, no-c-format
+msgid ""
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"    \n"
+"&lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:426
+#, no-c-format
+msgid "Adding a Captcha to a page"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:427
+#, no-c-format
+msgid ""
+"Adding a captcha challenge to a page is extremely easy. Seam provides a page-"
+"scoped component, <literal>captcha</literal>, which provides everything that "
+"is required, including built-in captcha validation. Here's an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:430
+#, no-c-format
+msgid ""
+"&lt;div&gt;\n"
+"    &lt;h:graphicImage value=\"/seam/resource/captcha?#{captcha.id}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"  \n"
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"verifyCaptcha\"&gt;Enter the above letters&lt;/h:"
+"outputLabel&gt;\n"
+"    &lt;h:inputText id=\"verifyCaptcha\" value=\"#{captcha.response}\" "
+"required=\"true\"/&gt;\n"
+"    &lt;div class=\"validationError\"&gt;&lt;h:message for=\"verifyCaptcha\"/"
+"&gt;&lt;/div&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:431
+#, no-c-format
+msgid ""
+"That's all there is to it. The <literal>graphicImage</literal> control "
+"displays the Captcha challenge, and the <literal>inputText</literal> "
+"receives the user's response. The response is automatically validated "
+"against the Captcha when the form is submitted."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Spring.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Spring.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Spring.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,416 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Spring.xml:10
+#, no-c-format
+msgid "Spring Framework integration"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:11
+#, no-c-format
+msgid ""
+"The Spring integration module allows easy migration of Spring-based projects "
+"to Seam and allows Spring applications to take advantage of key Seam "
+"features like conversations and Seam's more sophisticated persistence "
+"context management."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:14
+#, no-c-format
+msgid "Seam's support for Spring provides the ability to:"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:19
+#, no-c-format
+msgid "inject Seam component instances into Spring beans"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:24
+#, no-c-format
+msgid "inject Spring beans into Seam components"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:29
+#, no-c-format
+msgid "turn Spring beans into Seam components"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:34
+#, no-c-format
+msgid "allow Spring beans to live in any Seam context"
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:40
+#, no-c-format
+msgid "Injecting Seam components into Spring beans"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:41
+#, no-c-format
+msgid ""
+"Injecting Seam component instances into Spring beans is accomplished using "
+"the <literal>&lt;seam:instance/&gt;</literal> namespace handler. To enable "
+"the Seam namespace handler, the Seam namespace must be added to the Spring "
+"beans definition file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:44
+#, no-c-format
+msgid ""
+"&lt;beans xmlns=\"http://www.springframework.org/schema/beans\"\n"
+"    xmlns:seam=\"http://jboss.com/products/seam/spring\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://www.springframework.org/schema/beans \n"
+"                        http://www.springframework.org/schema/beans/spring-"
+"beans-2.0.xsd\n"
+"                        http://jboss.com/products/seam/spring \n"
+"                        http://jboss.com/products/seam/spring-1.2.xsd\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:45
+#, no-c-format
+msgid "Now any Seam component may be injected into any Spring bean:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:48
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\"&gt;\n"
+"        &lt;seam:instance name=\"someComponent\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:49
+#, no-c-format
+msgid "An EL expression may be used instead of a component name:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:52
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\"&gt;\n"
+"        &lt;seam:instance name=\"#{someExpression}\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:53
+#, no-c-format
+msgid ""
+"Seam component instances may even be made available for injection into "
+"Spring beans by a Spring bean id."
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:56
+#, no-c-format
+msgid ""
+"&lt;seam:instance name=\"someComponent\" id=\"someSeamComponentInstance\"/"
+"&gt;\n"
+"\n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\" ref=\"someSeamComponentInstance"
+"\"&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:57
+#, no-c-format
+msgid "Now for the caveat!"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:60
+#, no-c-format
+msgid ""
+"Seam was designed from the ground up to support a stateful component model "
+"with multiple contexts. Spring was not. Unlike Seam bijection, Spring "
+"injection does not occur at method invocation time. Instead, injection "
+"happens only when the Spring bean is instantiated. So the instance available "
+"when the bean is instantiated will be the same instance that the bean uses "
+"for the entire life of the bean. For example, if a Seam "
+"<literal>CONVERSATION</literal>-scoped component instance is directly "
+"injected into a singleton Spring bean, that singleton will hold a reference "
+"to the same instance long after the conversation is over! We call this "
+"problem <emphasis>scope impedance</emphasis>. Seam bijection ensures that "
+"scope impedance is maintained naturally as an invocation flows through the "
+"system. In Spring, we need to inject a proxy of the Seam component, and "
+"resolve the reference when the proxy is invoked."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:63
+#, no-c-format
+msgid ""
+"The <literal>&lt;seam:instance/&gt;</literal> tag lets us automatically "
+"proxy the Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:66
+#, no-c-format
+msgid ""
+"&lt;seam:instance id=\"seamManagedEM\" name=\"someManagedEMComponent\" proxy="
+"\"true\"/&gt;\n"
+"        \n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\"&gt;\n"
+"    &lt;property name=\"entityManager\" ref=\"seamManagedEM\"&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:67
+#, no-c-format
+msgid ""
+"This example shows one way to use a Seam-managed persistence context from a "
+"Spring bean. (A more robust way to use Seam-managed persistence contexts as "
+"a replacement for the Spring <literal>OpenEntityManagerInView</literal> "
+"filter will be provided in a future release)"
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:73
+#, no-c-format
+msgid "Injecting Spring beans into Seam components"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:74
+#, no-c-format
+msgid ""
+"It is even easier to inject Spring beans into Seam component instances. "
+"Actually, there are two possible approaches:"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:79
+#, no-c-format
+msgid "inject a Spring bean using an EL expression"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:84
+#, no-c-format
+msgid "make the Spring bean a Seam component"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:89
+#, no-c-format
+msgid ""
+"We'll discuss the second option in the next section. The easiest approach is "
+"to access the Spring beans via EL."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:92
+#, no-c-format
+msgid ""
+"The Spring <literal>DelegatingVariableResolver</literal> is an integration "
+"point Spring provides for integrating Spring with JSF. This "
+"<literal>VariableResolver</literal> makes all Spring beans available in EL "
+"by their bean id. You'll need to add the "
+"<literal>DelegatingVariableResolver</literal> to <literal>faces-config.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:95
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;variable-resolver&gt;\n"
+"        org.springframework.web.jsf.DelegatingVariableResolver\n"
+"    &lt;/variable-resolver&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:96
+#, no-c-format
+msgid "Then you can inject Spring beans using <literal>@In</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:99
+#, no-c-format
+msgid ""
+"@In(\"#{bookingService}\")\n"
+"private BookingService bookingService;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:100
+#, no-c-format
+msgid ""
+"The use of Spring beans in EL is not limited to injection. Spring beans may "
+"be used anywhere that EL expressions are used in Seam: process and pageflow "
+"definitions, working memory assertions, etc..."
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:106
+#, no-c-format
+msgid "Making a Spring bean into a Seam component"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:107
+#, no-c-format
+msgid ""
+"The <literal>&lt;seam:component/&gt;</literal> namespace handler can be used "
+"to make any Spring bean a Seam component. Just place the <literal>&lt;seam:"
+"component/&gt;</literal> tag within the declaration of the bean that you "
+"wish to be a Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:110
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;seam:component/&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:111
+#, no-c-format
+msgid ""
+"By default, <literal>&lt;seam:component/&gt;</literal> will create a "
+"<literal>STATELESS</literal> Seam component with class and name provided in "
+"the bean definition. Occasionally, such as when a <literal>FactoryBean</"
+"literal> is used, the class of the Spring bean may not be the class "
+"appearing in the bean definition. In such cases the <literal>beanClass</"
+"literal> should be explicitly specified. A Seam component name may be "
+"explicitly specified in cases where there is potential for a naming conflict."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:114
+#, no-c-format
+msgid ""
+"The <literal>scope</literal> attribute of <literal>&lt;seam:component/&gt;</"
+"literal> may be used if you wish the Spring bean to be managed in a "
+"particular Seam scope. The Spring bean must be scoped to <literal>prototype</"
+"literal> if the Seam scope specified is anything other than "
+"<literal>STATELESS</literal>. Pre-existing Spring beans usually have a "
+"fundamentally stateless character, so this attribute is not usually needed."
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:120
+#, no-c-format
+msgid "Seam-scoped Spring beans"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:121
+#, no-c-format
+msgid ""
+"The Seam integration package also lets you use Seam's contexts as Spring 2.0 "
+"style custom scopes. This lets you declare any Spring bean in any of Seam's "
+"contexts. However, note once again that Spring's component model was never "
+"architected to support statefulness, so please use this feature with great "
+"care. In particular, clustering of session or conversation scoped Spring "
+"beans is deeply problematic, and care must be taken when injecting a bean or "
+"component from a wider scope into a bean of a narrower scope."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:124
+#, no-c-format
+msgid ""
+"By specifying <literal>&lt;seam:configure-scopes/&gt;</literal> once in a "
+"Spring bean factory configuration, all of the Seam scopes will be available "
+"to Spring beans as custom scopes. To associate a Spring bean with a "
+"particular Seam scope, specify the Seam scope in the <literal>scope</"
+"literal> attribute of the bean definition."
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:127
+#, no-c-format
+msgid ""
+"&lt;!-- Only needs to be specified once per bean factory--&gt;\n"
+"&lt;seam:configure-scopes/&gt;\n"
+"\n"
+"...\n"
+"\n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope=\"seam."
+"CONVERSATION\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:128
+#, no-c-format
+msgid ""
+"The prefix of the scope name may be changed by specifying the "
+"<literal>prefix</literal> attribute in the <literal>configure-scopes</"
+"literal> definition. (The default prefix is <literal>seam.</literal>)"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:131
+#, no-c-format
+msgid ""
+"Seam-scoped Spring beans defined this way can be injected into other Spring "
+"beans without the use of <literal>&lt;seam:instance/&gt;</literal>. However, "
+"care must be taken to ensure scope impedance is maintained. The normal "
+"approach used in Spring is to specify <literal>&lt;aop:scoped-proxy/&gt;</"
+"literal> in the bean definition. However, Seam-scoped Spring beans are "
+"<emphasis>not</emphasis> compatible with <literal>&lt;aop:scoped-proxy/&gt;</"
+"literal>. So if you need to inject a Seam-scoped Spring bean into a "
+"singleton, <literal>&lt;seam:instance/&gt;</literal> must be used:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:134
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope=\"seam."
+"CONVERSATION\"/&gt;\n"
+"\n"
+"...\n"
+"\n"
+"&lt;bean id=\"someSingleton\"&gt;\n"
+"    &lt;property name=\"someSeamScopedSpringBean\"&gt;\n"
+"        &lt;seam:instance name=\"someSpringBean\" proxy=\"true\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Testing.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Testing.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Testing.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,342 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Testing.xml:10
+#, no-c-format
+msgid "Testing Seam applications"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:11
+#, no-c-format
+msgid ""
+"Most Seam applications will need at least two kinds of automated tests: "
+"<emphasis>unit tests</emphasis>, which test a particular Seam component in "
+"isolation, and scripted <emphasis>integration tests</emphasis> which "
+"exercise all Java layers of the application (that is, everything except the "
+"view pages)."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:14
+#, no-c-format
+msgid "Both kinds of tests are very easy to write."
+msgstr ""
+
+#. Tag: title
+#: Testing.xml:18
+#, no-c-format
+msgid "Unit testing Seam components"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:19
+#, no-c-format
+msgid ""
+"All Seam components are POJOs. This is a great place to start if you want "
+"easy unit testing. And since Seam emphasises the use of bijection for inter-"
+"component interactions and access to contextual objects, it's very easy to "
+"test a Seam component outside of its normal runtime environment."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:22
+#, no-c-format
+msgid "Consider the following Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:25
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Scope(EVENT)\n"
+"@Name(\"register\")\n"
+"public class RegisterAction implements Register\n"
+"{\n"
+"   private User user;\n"
+"   private EntityManager em;\n"
+"\n"
+"   @In\n"
+"   public void setUser(User user) {\n"
+"       this.user = user;\n"
+"   }\n"
+"   \n"
+"   @PersistenceContext\n"
+"   public void setBookingDatabase(EntityManager em) {\n"
+"       this.em = em;\n"
+"   }\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = em.createQuery(\"select username from User where "
+"username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getResultList();\n"
+"      if (existing.size()==0)\n"
+"      {\n"
+"         em.persist(user);\n"
+"         return \"success\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:26
+#, no-c-format
+msgid "We could write a TestNG test for this component as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:29
+#, no-c-format
+msgid ""
+"public class RegisterActionTest\n"
+"{\n"
+"\n"
+"    @Test\n"
+"    public testRegisterAction()\n"
+"    {\n"
+"        EntityManager em = getEntityManagerFactory().createEntityManager();\n"
+"        em.getTransaction().begin();\n"
+"        \n"
+"        User gavin = new User();\n"
+"        gavin.setName(\"Gavin King\");\n"
+"        gavin.setUserName(\"1ovthafew\");\n"
+"        gavin.setPassword(\"secret\");\n"
+"        \n"
+"        RegisterAction action = new RegisterAction();\n"
+"        action.setUser(gavin);\n"
+"        action.setBookingDatabase(em);\n"
+"        \n"
+"        assert \"success\".equals( action.register() );\n"
+"        \n"
+"        em.getTransaction().commit();\n"
+"        em.close();\n"
+"    }\n"
+"    \n"
+"    \n"
+"    private EntityManagerFactory emf;\n"
+"    \n"
+"    public EntityManagerFactory getEntityManagerFactory()\n"
+"    {\n"
+"        return emf;\n"
+"    }\n"
+"    \n"
+"    @Configuration(beforeTestClass=true)\n"
+"    public void init() \n"
+"    {\n"
+"        emf = Persistence.createEntityManagerFactory"
+"(\"myResourceLocalEntityManager\");\n"
+"    }\n"
+"    \n"
+"    @Configuration(afterTestClass=true)\n"
+"    public void destroy()\n"
+"    {\n"
+"        emf.close();\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:30
+#, no-c-format
+msgid ""
+"Seam components don't usually depend directly upon container infrastructure, "
+"so most unit testing as as easy as that!"
+msgstr ""
+
+#. Tag: title
+#: Testing.xml:36
+#, no-c-format
+msgid "Integration testing Seam applications"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:37
+#, no-c-format
+msgid ""
+"Integration testing is slightly more difficult. In this case, we can't "
+"eliminate the container infrastructure; indeed, that is part of what is "
+"being tested! At the same time, we don't want to be forced to deploy our "
+"application to an application server to run the automated tests. We need to "
+"be able to reproduce just enough of the container infrastructure inside our "
+"testing environment to be able to exercise the whole application, without "
+"hurting performance too much."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:40
+#, no-c-format
+msgid ""
+"A second problem is emulating user interactions. A third problem is where to "
+"put our assertions. Some test frameworks let us test the whole application "
+"by reproducing user interactions with the web browser. These frameworks have "
+"their place, but they are not appropriate for use at development time."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:43
+#, no-c-format
+msgid ""
+"The approach taken by Seam is to let you write tests that script your "
+"components while running inside a pruned down container environment (Seam, "
+"together with the JBoss Embeddable EJB container). The role of the test "
+"script is basically to reproduce the interaction between the view and the "
+"Seam components. In other words, you get to pretend you are the JSF "
+"implementation!"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:46
+#, no-c-format
+msgid "This approach tests everything except the view."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:49
+#, no-c-format
+msgid "Let's consider a JSP view for the component we unit tested above:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:52
+#, no-c-format
+msgid ""
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Register New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;table border=\"0\"&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Username&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputText value=\"#{user.username}\"/&gt;&lt;/"
+"td&gt;\n"
+"       &lt;/tr&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Real Name&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputText value=\"#{user.name}\"/&gt;&lt;/td&gt;\n"
+"       &lt;/tr&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Password&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputSecret value=\"#{user.password}\"/&gt;&lt;/"
+"td&gt;\n"
+"       &lt;/tr&gt;\n"
+"     &lt;/table&gt;\n"
+"     &lt;h:messages/&gt;\n"
+"     &lt;h:commandButton type=\"submit\" value=\"Register\" action=\"#"
+"{register.register}\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:53
+#, no-c-format
+msgid ""
+"We want to test the registration functionality of our application (the stuff "
+"that happens when the user clicks the Register button). We'll reproduce the "
+"JSF request lifecycle in an automated TestNG test:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:56
+#, no-c-format
+msgid ""
+"public class RegisterTest extends SeamTest\n"
+"{\n"
+"   \n"
+"   @Test\n"
+"   public void testRegister() throws Exception\n"
+"   {\n"
+"            \n"
+"      new FacesRequest() {\n"
+"\n"
+"         @Override\n"
+"         protected void processValidations() throws Exception\n"
+"         {\n"
+"            validateValue(\"#{user.username}\", \"1ovthafew\");\n"
+"            validateValue(\"#{user.name}\", \"Gavin King\");\n"
+"            validateValue(\"#{user.password}\", \"secret\");\n"
+"            assert !isValidationFailure();\n"
+"         }\n"
+"         \n"
+"         @Override\n"
+"         protected void updateModelValues() throws Exception\n"
+"         {\n"
+"            setValue(\"#{user.username}\", \"1ovthafew\");\n"
+"            setValue(\"#{user.name}\", \"Gavin King\");\n"
+"            setValue(\"#{user.password}\", \"secret\");\n"
+"         }\n"
+"\n"
+"         @Override\n"
+"         protected void invokeApplication()\n"
+"         {\n"
+"            assert invokeMethod(\"#{register.register}\").equals(\"success"
+"\");\n"
+"         }\n"
+"\n"
+"         @Override\n"
+"         protected void renderResponse()\n"
+"         {\n"
+"            assert getValue(\"#{user.username}\").equals(\"1ovthafew\");\n"
+"            assert getValue(\"#{user.name}\").equals(\"Gavin King\");\n"
+"            assert getValue(\"#{user.password}\").equals(\"secret\");\n"
+"         }\n"
+"         \n"
+"      }.run();\n"
+"      \n"
+"   }\n"
+"\n"
+"   ...\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:57
+#, no-c-format
+msgid ""
+"Notice that we've extended <literal>SeamTest</literal>, which provides a "
+"Seam environment for our components, and written our test script as an "
+"anonymous class that extends <literal>SeamTest.FacesRequest</literal>, which "
+"provides an emulated JSF request lifecycle. (There is also a "
+"<literal>SeamTest.NonFacesRequest</literal> for testing GET requests.) We've "
+"written our code in methods which are named for the various JSF phases, to "
+"emulate the calls that JSF would make to our components. Then we've thrown "
+"in various assertions."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:60
+#, no-c-format
+msgid ""
+"You'll find plenty of integration tests for the Seam example applications "
+"which demonstrate more complex cases. There are instructions for running "
+"these tests using Ant, or using the TestNG plugin for eclipse:"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Text.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Text.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Text.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,362 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Text.xml:10
+#, no-c-format
+msgid "Seam Text"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:11
+#, no-c-format
+msgid ""
+"Collaboration-oriented websites require a human-friendly markup language for "
+"easy entry of formatted text in forum posts, wiki pages, blogs, comments, "
+"etc. Seam provides the <literal>&lt;s:formattedText/&gt;</literal> control "
+"for display of formatted text that conforms to the <emphasis>Seam Text</"
+"emphasis> language. Seam Text is implemented using an ANTLR-based parser. "
+"You don't need to know anything about ANTLR to use it, however."
+msgstr ""
+
+#. Tag: title
+#: Text.xml:15
+#, no-c-format
+msgid "Basic fomatting"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:16
+#, no-c-format
+msgid "Here is a simple example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:19
+#, no-c-format
+msgid ""
+"It's easy to make *bold text*, /italic text/, |monospace|, \n"
+"~deleted text~, super^scripts^ or _underlines_."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:20
+#, no-c-format
+msgid ""
+"If we display this using <literal>&lt;s:formattedText/&gt;</literal>, we "
+"will get the following HTML produced:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:23
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"It's easy to make &lt;b&gt;bold text&lt;/b&gt;, &lt;i&gt;italic text&lt;/"
+"i&gt;, &lt;tt&gt;monospace&lt;/tt&gt;\n"
+"&lt;del&gt;deleted text&lt;/del&gt;, super&lt;sup&gt;scripts&lt;/sup&gt; or "
+"&lt;u&gt;underlines&lt;/u&gt;.\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:24
+#, no-c-format
+msgid ""
+"We can use a blank line to indicate a new paragraph, and <literal>+</"
+"literal> to indicate a heading:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:27
+#, no-c-format
+msgid ""
+"+This is a big heading\n"
+"You /must/ have some text following a heading!\n"
+" \n"
+"++This is a smaller heading\n"
+"This is the first paragraph. We can split it across multiple \n"
+"lines, but we must end it with a blank line.\n"
+"\n"
+"This is the second paragraph."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:28
+#, no-c-format
+msgid ""
+"(Note that a simple newline is ignored, you need an additional blank line to "
+"wrap text into a new paragraph.) This is the HTML that results:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:31
+#, no-c-format
+msgid ""
+"&lt;h1&gt;This is a big heading&lt;/h1&gt;\n"
+"&lt;p&gt;\n"
+"You &lt;i&gt;must&lt;/i&gt; have some text following a heading!\n"
+"&lt;/p&gt;\n"
+" \n"
+"&lt;h2&gt;This is a smaller heading&lt;/h2&gt;\n"
+"&lt;p&gt;\n"
+"This is the first paragraph. We can split it across multiple \n"
+"lines, but we must end it with a blank line.\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"This is the second paragraph.\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:32
+#, no-c-format
+msgid ""
+"Ordered lists are created using the <literal>#</literal> character. "
+"Unordered lists use the <literal>=</literal> character:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:35
+#, no-c-format
+msgid ""
+"An ordered list:\n"
+"        \n"
+"#first item\n"
+"#second item\n"
+"#and even the /third/ item\n"
+"\n"
+"An unordered list:\n"
+"\n"
+"=an item\n"
+"=another item"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:36
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"An ordered list:\n"
+"&lt;/p&gt;\n"
+" \n"
+"&lt;ol&gt;       \n"
+"&lt;li&gt;first item&lt;/li&gt;\n"
+"&lt;li&gt;second item&lt;/li&gt;\n"
+"&lt;li&gt;and even the &lt;i&gt;third&lt;/i&gt; item&lt;/li&gt;\n"
+"&lt;/ol&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"An unordered list:\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;ul&gt;\n"
+"&lt;li&gt;an item&lt;/li&gt;\n"
+"&lt;li&gt;another item&lt;/li&gt;\n"
+"&lt;/ul&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:37
+#, no-c-format
+msgid "Quoted sections should be surrounded in double quotes:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:40
+#, no-c-format
+msgid ""
+"The other guy said:\n"
+"        \n"
+"\"Nyeah nyeah-nee \n"
+"/nyeah/ nyeah!\"\n"
+"\n"
+"But what do you think he means by \"nyeah-nee\"?"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:41
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"The other guy said:\n"
+"&lt;/p&gt;\n"
+"        \n"
+"&lt;q&gt;Nyeah nyeah-nee\n"
+"&lt;i&gt;nyeah&lt;/i&gt; nyeah!&lt;/q&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"But what do you think he means by &lt;q&gt;nyeah-nee&lt;/q&gt;?\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: title
+#: Text.xml:45
+#, no-c-format
+msgid "Entering code and text with special characters"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:46
+#, no-c-format
+msgid ""
+"Special characters such as <literal>*</literal>, <literal>|</literal> and "
+"<literal>#</literal>, along with HTML characters such as <literal>&lt;</"
+"literal>, <literal>&gt;</literal> and <literal>&amp;</literal> may be "
+"escaped using <literal>&#92;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:49
+#, no-c-format
+msgid ""
+"You can write down equations like 2&#92;*3&#92;=6 and HTML tags\n"
+"like &#92;&lt;body&#92;&gt; using the escape character: &#92;&#92;."
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:50
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"You can write down equations like 2*3=6 and HTML tags\n"
+"like &lt;body&gt; using the escape character: &#92;.\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:51
+#, no-c-format
+msgid "And we can quote code blocks using backticks:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:54
+#, no-c-format
+msgid ""
+"My code doesn't work:\n"
+"\n"
+"`for (int i=0; i&lt;100; i--)\n"
+"{\n"
+"    doSomething();\n"
+"}`\n"
+"\n"
+"Any ideas?"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:55
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"My code doesn't work:\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;pre&gt;for (int i=0; i&lt;100; i--)\n"
+"{\n"
+"    doSomething();\n"
+"}&lt;/pre&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"Any ideas?\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: title
+#: Text.xml:59
+#, no-c-format
+msgid "Links"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:60
+#, no-c-format
+msgid "A link may be created using the following syntax:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:63
+#, no-c-format
+msgid "Go to the Seam website at [=&gt;http://jboss.com/products/seam]."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:64
+#, no-c-format
+msgid "Or, if you want to specify the text of the link:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:67
+#, no-c-format
+msgid "Go to [the Seam website=&gt;http://jboss.com/products/seam]."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:68
+#, no-c-format
+msgid ""
+"For advanced users, it is even possible to customize the Seam Text parser to "
+"understand wikiword links written using this syntax."
+msgstr ""
+
+#. Tag: title
+#: Text.xml:74
+#, no-c-format
+msgid "Entering HTML"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:75
+#, no-c-format
+msgid ""
+"Text may even include a certain limited subset of HTML (don't worry, the "
+"subset is chosen to be safe from cross-site scripting attacks). This is "
+"useful for creating links:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:78
+#, no-c-format
+msgid ""
+"You might want to link to &lt;a href=\"http://jboss.com/products/seam\"&gt;"
+"something\n"
+"cool&lt;/a&gt;, or even include an image: &lt;img src=\"/logo.jpg\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:79
+#, no-c-format
+msgid "And for creating tables:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:82
+#, no-c-format
+msgid ""
+"&lt;table&gt;\n"
+"    &lt;tr&gt;&lt;td&gt;First name:&lt;/td&gt;&lt;td&gt;Gavin&lt;/td&gt;&lt;/"
+"tr&gt;\n"
+"    &lt;tr&gt;&lt;td&gt;Last name:&lt;/td&gt;&lt;td&gt;King&lt;/td&gt;&lt;/"
+"tr&gt;\n"
+"&lt;/table&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:83
+#, no-c-format
+msgid "But you can do much more if you want!"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Tools.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Tools.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Tools.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,769 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Tools.xml:10
+#, no-c-format
+msgid "Seam tools"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:12
+#, no-c-format
+msgid "jBPM designer and viewer"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:13
+#, no-c-format
+msgid ""
+"The jBPM designer and viewer will let you design and view in a nice way your "
+"business processes and your pageflows. This convenient tool is part of JBoss "
+"Eclipse IDE and more details can be found in the jBPM's documentation "
+"(http://docs.jboss.com/jbpm/v3/gpd/)"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:17
+#, no-c-format
+msgid "<title>Business process designer</title>"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:18
+#, no-c-format
+msgid "This tool lets you design your own business process in a graphical way."
+msgstr ""
+
+#. Tag: screeninfo
+#: Tools.xml:21 Tools.xml:37
+#, no-c-format
+msgid "<screeninfo>Business process designer</screeninfo>"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:33
+#, no-c-format
+msgid "Pageflow viewer"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:34
+#, no-c-format
+msgid ""
+"This tool let you design to some extend your pageflows and let you build "
+"graphical views of them so you can easily share and compare ideas on how it "
+"should be designed."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:51
+#, no-c-format
+msgid "CRUD-application generator"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:52
+#, no-c-format
+msgid ""
+"This chapter, will give you a short overview of the support for Seam that is "
+"available in the Hibernate Tools. Hibernate Tools is a set of tools for "
+"working with Hibernate and related technologies, such as JBoss Seam and "
+"EJB3. The tools are available as a set of eclipse plugins and Ant tasks. You "
+"can download the Hibernate Tools from the JBoss Eclipse IDE or Hibernate "
+"Tools websites."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:55
+#, no-c-format
+msgid ""
+"The specific support for Seam that is currently available is generation of a "
+"fully functional Seam based CRUD-application. The CRUD-application can be "
+"generated based on your existing Hibernate mapping files or EJB3 annotated "
+"POJO's or even fully reverse engineered from your existing database schema."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:58
+#, no-c-format
+msgid ""
+"The following sections is focused on the features required to understand for "
+"usage with Seam. The content is derived from the the Hibernate Tools "
+"reference documentation. Thus if you need more detailed information please "
+"refer to the Hibernate Tools documentation."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:62
+#, no-c-format
+msgid "Creating a Hibernate configuration file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:63
+#, no-c-format
+msgid ""
+"To be able to reverse engineer and generate code a hibernate.properties or "
+"hibernate.cfg.xml file is needed. The Hibernate Tools provide a wizard for "
+"generating the hibernate.cfg.xml file if you do not already have such file."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:66
+#, no-c-format
+msgid ""
+"Start the wizard by clicking \"New Wizard\" (Ctrl+N), select the Hibernate/"
+"Hibernate Configuration file (cfg.xml) wizard and press \"Next\". After "
+"selecting the wanted location for the hibernate.cfg.xml file, you will see "
+"the following page:"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:77
+#, no-c-format
+msgid ""
+"Tip: The contents in the combo boxes for the JDBC driver class and JDBC URL "
+"change automatically, depending on the Dialect and actual driver you have "
+"chosen."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:80
+#, no-c-format
+msgid ""
+"Enter your configuration information in this dialog. Details about the "
+"configuration options can be found in Hibernate reference documentation."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:83
+#, no-c-format
+msgid ""
+"Press \"Finish\" to create the configuration file, after optionally creating "
+"a Console onfiguration, the hibernate.cfg.xml will be automatically opened "
+"in an editor. The last option \"Create Console Configuration\" is enabled by "
+"default and when enabled i will automatically use the hibernate.cfg.xml for "
+"the basis of a \"Console Configuration\""
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:89
+#, no-c-format
+msgid "<title>Creating a Hibernate Console configuration</title>"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:90
+#, no-c-format
+msgid ""
+"A Console Configuration describes to the Hibernate plugin which "
+"configuration files should be used to configure hibernate, including which "
+"classpath is needed to load the POJO's, JDBC drivers etc. It is required to "
+"make usage of query prototyping, reverse engineering and code generation. "
+"You can have multiple named console configurations. Normally you would just "
+"need one per project, but more (or less) is definitly possible."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:93
+#, no-c-format
+msgid ""
+"You create a console configuration by running the Console Configuration "
+"wizard, shown in the following screenshot. The same wizard will also be used "
+"if you are coming from the hibernate.cfg.xml wizard and had enabled \"Create "
+"Console Configuration\"."
+msgstr ""
+
+#. Tag: caption
+#: Tools.xml:103
+#, no-c-format
+msgid "<caption>Creating a Hibernate Console configuration</caption>"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:105
+#, no-c-format
+msgid ""
+"The following table describes the relevant settings. The wizard can "
+"automatically detect default values for most of these if you started the "
+"Wizard with the relevant java project selected"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:109
+#, no-c-format
+msgid "Hibernate Console Configuration Parameters"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:117
+#, no-c-format
+msgid "Parameter"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:122 Tools.xml:308 Tools.xml:458
+#, no-c-format
+msgid "Description"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:127
+#, no-c-format
+msgid "Auto detected value"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:136
+#, no-c-format
+msgid "Name"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:141
+#, no-c-format
+msgid "The unique name of the configuration"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:146
+#, no-c-format
+msgid "Name of the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:153
+#, no-c-format
+msgid "Property file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:158
+#, no-c-format
+msgid "Path to a hibernate.properties file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:163
+#, no-c-format
+msgid "First hibernate.properties file found in the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:170
+#, no-c-format
+msgid "Configuration file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:175
+#, no-c-format
+msgid "Path to a hibernate.cfg.xml file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:180
+#, no-c-format
+msgid "First hibernate.cfg.xml file found in the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:187
+#, no-c-format
+msgid "Enable Hibernate ejb3/annotations"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:192
+#, no-c-format
+msgid ""
+"Selecting this option enables usage of annotated classes. hbm.xml files are "
+"of course still possible to use too. This feature requires running the "
+"Eclipse IDE with a JDK 5 runtime, otherwise you will get classloading and/or "
+"version errors."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:197
+#, no-c-format
+msgid "Not enabled"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:204
+#, no-c-format
+msgid "Mapping files"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:209
+#, no-c-format
+msgid ""
+"List of additional mapping files that should be loaded. Note: A hibernate."
+"cfg.xml can also contain mappings. Thus if these a duplicated here, you will "
+"get \"Duplicate mapping\" errors when using the console configuration."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:214
+#, no-c-format
+msgid ""
+"If no hibernate.cfg.xml file is found, all hbm.xml files found in the "
+"selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:221
+#, no-c-format
+msgid "Classpath"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:226
+#, no-c-format
+msgid ""
+"The classpath for loading POJO and JDBC drivers. Do not add Hibernate core "
+"libraries or dependencies, they are already included. If you get "
+"ClassNotFound errors then check this list for possible missing or redundant "
+"directories/jars."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:231
+#, no-c-format
+msgid ""
+"The default build output directory and any JARs with a class implementing "
+"java.sql.Driver in the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:239
+#, no-c-format
+msgid ""
+"Clicking \"Finish\" creates the configuration and shows it in the "
+"\"Hibernate Configurations\" view"
+msgstr ""
+
+#. Tag: caption
+#: Tools.xml:249
+#, no-c-format
+msgid "Console overview"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:254
+#, no-c-format
+msgid "Reverse engineering and code generation"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:255
+#, no-c-format
+msgid ""
+"A very simple \"click-and-generate\" reverse engineering and code generation "
+"facility is available. It is this facility that allows you to generate the "
+"skeleton for a full Seam CRUD application."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:258
+#, no-c-format
+msgid ""
+"To start working with this process, start the \"Hibernate Code Generation\" "
+"which is available in the toolbar via the Hibernate icon or via the \"Run/"
+"Hibernate Code Generation\" menu item."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:262
+#, no-c-format
+msgid "Code Generation Launcher"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:263
+#, no-c-format
+msgid ""
+"When you click on \"Hibernate Code Generation\" the standard Eclipse "
+"launcher dialog will appear. In this dialog you can create, edit and delete "
+"named Hibernate code generation \"launchers\"."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:274
+#, no-c-format
+msgid ""
+"The dialog has the standard tabs \"Refresh\" and \"Common\" that can be used "
+"to configure which directories should be automatically refreshed and various "
+"general settings launchers, such as saving them in a project for sharing the "
+"launcher within a team."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:285
+#, no-c-format
+msgid ""
+"The first time you create a code generation launcher you should give it a "
+"meaningfull name, otherwise the default prefix \"New_Generation\" will be "
+"used."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:288
+#, no-c-format
+msgid ""
+"Note: The \"At least one exporter option must be selected\" is just a "
+"warning stating that for this launch to work you need to select an exporter "
+"on the Exporter tab. When an exporter has been selected the warning will "
+"disappear."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:291
+#, no-c-format
+msgid "On the \"Main\" tab you the following fields:"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:295
+#, no-c-format
+msgid "Code generation \"Main\" tab fields"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:303 Tools.xml:453
+#, no-c-format
+msgid "Field"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:317
+#, no-c-format
+msgid "Console Configuration"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:322
+#, no-c-format
+msgid ""
+"The name of the console configuration which should be used when code "
+"generating."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:329
+#, no-c-format
+msgid "Output directory"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:334
+#, no-c-format
+msgid ""
+"Path to a directory into where all output will be written by default. Be "
+"aware that existing files will be overwritten, so be sure to specify the "
+"correct directory."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:341
+#, no-c-format
+msgid "Reverse engineer from JDBC Connection"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:346
+#, no-c-format
+msgid ""
+"If enabled the tools will reverse engineer the database available via the "
+"connection information in the selected Hibernate Console Configuration and "
+"generate code based on the database schema. If not enabled the code "
+"generation will just be based on the mappings already specified in the "
+"Hibernate Console configuration."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:353
+#, no-c-format
+msgid "Package"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:358
+#, no-c-format
+msgid ""
+"The package name here is used as the default package name for any entities "
+"found when reverse engineering."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:365
+#, no-c-format
+msgid "reveng.xml"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:370
+#, no-c-format
+msgid ""
+"Path to a reveng.xml file. A reveng.xml file allows you to control certain "
+"aspects of the reverse engineering. e.g. how jdbc types are mapped to "
+"hibernate types and especially important which tables are included/excluded "
+"from the process. Clicking \"setup\" allows you to select an existing reveng."
+"xml file or create a new one.."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:377
+#, no-c-format
+msgid "reveng. strategy"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:382
+#, no-c-format
+msgid ""
+"If reveng.xml does not provide enough customization you can provide your own "
+"implementation of an ReverseEngineeringStrategy. The class need to be in the "
+"claspath of the Console Configuration, otherwise you will get class not "
+"found exceptions."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:389
+#, no-c-format
+msgid "Generate basic typed composite ids"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:394
+#, no-c-format
+msgid ""
+"This field should always be enabled when generating the Seam CRUD "
+"application. A table that has a multi-colum primary key a &lt;composite-"
+"id&gt; mapping will always be created. If this option is enabled and there "
+"are matching foreign-keys each key column is still considered a 'basic' "
+"scalar (string, long, etc.) instead of a reference to an entity. If you "
+"disable this option a &lt;key-many-to-one&gt; instead. Note: a &lt;many-to-"
+"one&gt; property is still created, but is simply marked as non-updatable and "
+"non-insertable."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:401
+#, no-c-format
+msgid "Use custom templates"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:406
+#, no-c-format
+msgid ""
+"If enabled, the Template directory will be searched first when looking up "
+"the velocity templates, allowing you to redefine how the individual "
+"templates process the hibernate mapping model."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:413
+#, no-c-format
+msgid "Template directory"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:418
+#, no-c-format
+msgid "A path to a directory with custom velocity templates."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:429
+#, no-c-format
+msgid "Exporters"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:430
+#, no-c-format
+msgid ""
+"The exporters tab is used to specify which type of code that should be "
+"generated. Each selection represents an \"Exporter\" that are responsible "
+"for generating the code, hence the name."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:441
+#, no-c-format
+msgid ""
+"The following table describes in short the various exporters. The most "
+"relevant for Seam is of course the \"JBoss Seam Skeleton app\"."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:445
+#, no-c-format
+msgid "Code generation \"Exporter\" tab fields"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:467
+#, no-c-format
+msgid "Generate domain code"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:472
+#, no-c-format
+msgid ""
+"Generates POJO's for all the persistent classes and components found in the "
+"given Hibernate configuration."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:479
+#, no-c-format
+msgid "JDK 1.5 constructs"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:484
+#, no-c-format
+msgid "When enabled the POJO's will use JDK 1.5 constructs."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:491
+#, no-c-format
+msgid "EJB3/JSR-220 annotations"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:496
+#, no-c-format
+msgid ""
+"When enabled the POJO's will be annotated according to the EJB3/JSR-220 "
+"persistency specification."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:503
+#, no-c-format
+msgid "Generate DAO code"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:508
+#, no-c-format
+msgid "Generates a set of DAO's for each entity found."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:515
+#, no-c-format
+msgid "Generate Mappings"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:520
+#, no-c-format
+msgid "Generate mapping (hbm.xml) files for each entity"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:527
+#, no-c-format
+msgid "Generate hibernate configuration file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:532
+#, no-c-format
+msgid ""
+"Generate a hibernate.cfg.xml file. Used to keep the hibernate.cfg.xml "
+"uptodate with any new found mapping files."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:539
+#, no-c-format
+msgid "Generate schema html-documentation"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:544
+#, no-c-format
+msgid ""
+"Generates set of html pages that documents the database schema and some of "
+"the mappings."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:551
+#, no-c-format
+msgid "Generate JBoss Seam skeleton app (beta)"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:556
+#, no-c-format
+msgid ""
+"Generates a complete JBoss Seam skeleton app. The generation will include "
+"annotated POJO's, Seam controller beans and a JSP for the presentation "
+"layer. See the generated readme.txt for how to use it."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:559
+#, no-c-format
+msgid ""
+"Note: this exporter generates a full application, including a build.xml thus "
+"you will get the best results if you use an output directory which is the "
+"root of your project."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:570
+#, no-c-format
+msgid "Generating and using the code"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:571
+#, no-c-format
+msgid ""
+"When you have finished filling out the settings, simply press \"Run\" to "
+"start the generation of code. This might take a little while if you are "
+"reverse engineering from a database."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:574
+#, no-c-format
+msgid ""
+"When the generation have finished you should now have a complete skeleton "
+"Seam application in the output directory. In the output directory there is a "
+"<literal>readme.txt</literal> file describing the steps needed to deploy and "
+"run the example."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:577
+#, no-c-format
+msgid ""
+"If you want to regenerate/update the skeleton code then simply run the code "
+"generation again by selecting the \"Hibernate Code Generation\" in the "
+"toolbar or \"Run\" menu. Enjoy."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Tutorial.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Tutorial.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Tutorial.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,4041 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Tutorial.xml:10
+#, no-c-format
+msgid "Seam Tutorial"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:12
+#, no-c-format
+msgid "Try the examples"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:13
+#, no-c-format
+msgid ""
+"In this tutorial, we'll assume that you have downloaded JBoss AS 4.0.5 and "
+"installed the EJB 3.0 profile (using the JBoss AS installer). You should "
+"also have a copy of Seam downloaded and extracted to a work directory."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:16
+#, no-c-format
+msgid "The directory structure of each example in Seam follows this pattern:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:21
+#, no-c-format
+msgid ""
+"Web pages, images and stylesheets may be found in <filename>examples/"
+"<replaceable>registration</replaceable>/view</filename>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:26
+#, no-c-format
+msgid ""
+"Resources such as deployment descriptors and data import scripts may be "
+"found in <filename>examples/<replaceable>registration</replaceable>/"
+"resources</filename>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:31
+#, no-c-format
+msgid ""
+"Java source code may be found in <filename>examples/"
+"<replaceable>registration</replaceable>/src</filename>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:36
+#, no-c-format
+msgid ""
+"The Ant build script is <filename>examples/<replaceable>registration</"
+"replaceable>/build.xml</filename>"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:42
+#, no-c-format
+msgid "Running the examples on JBoss AS"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:43
+#, no-c-format
+msgid ""
+"First, make sure you have Ant correctly installed, with <literal>&#36;"
+"ANT_HOME</literal> and <literal>&#36;JAVA_HOME</literal> set correctly. "
+"Next, make sure you set the location of your JBoss AS 4.0.5 installation in "
+"the <literal>build.properties</literal> file in the root folder of your Seam "
+"installation. If you haven't already done so, start JBoss AS now by typing "
+"<literal>bin/run.sh</literal> or <literal>bin/run.bat</literal> in the root "
+"directory of your JBoss installation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:46
+#, no-c-format
+msgid ""
+"By default the examples will deploy to the default configuration of the "
+"server. If the server has been started using an a configuration other than "
+"default then the example <literal>build.xml</literal> file should be "
+"modified to reflect this before building and deploying. Two lines should be "
+"changed in this file:"
+msgstr ""
+
+#. Tag: screen
+#: Tutorial.xml:49
+#, no-c-format
+msgid ""
+"&lt;property name=\"deploy.dir\"           value=\"${jboss.home}/server/"
+"default/deploy\"/&gt;"
+msgstr ""
+
+#. Tag: screen
+#: Tutorial.xml:50
+#, no-c-format
+msgid ""
+"&lt;property name=\"webroot.dir\"         \n"
+"        value=\"${deploy.dir}/jboss-web.deployer/ROOT.war\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:51
+#, no-c-format
+msgid ""
+"Now, build and deploy the example by typing <literal>ant deploy</literal> in "
+"the <filename>examples/<replaceable>registration</replaceable></filename> "
+"directory."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:54
+#, no-c-format
+msgid ""
+"Try it out by accessing <ulink url=\"http://localhost:8080/seam-registration/"
+"\"><literal>http://localhost:8080/seam-registration/</literal></ulink> with "
+"your web browser."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:60
+#, no-c-format
+msgid "Running the examples on Tomcat"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:61
+#, no-c-format
+msgid ""
+"First, make sure you have Ant correctly installed, with <literal>&#36;"
+"ANT_HOME</literal> and <literal>&#36;JAVA_HOME</literal> set correctly. "
+"Next, make sure you set the location of your Tomcat 5.5 installation in the "
+"<literal>build.properties</literal> file in the root folder of your Seam "
+"installation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:64
+#, no-c-format
+msgid ""
+"Now, build and deploy the example by typing <literal>ant deploy.tomcat</"
+"literal> in the <filename>examples/<replaceable>registration</replaceable></"
+"filename> directory."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:67
+#, no-c-format
+msgid "Finally, start Tomcat."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:70
+#, no-c-format
+msgid ""
+"Try it out by accessing <ulink url=\"http://localhost:8080/jboss-seam-"
+"registration/\"><literal>http://localhost:8080/jboss-seam-registration/</"
+"literal></ulink> with your web browser."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:73
+#, no-c-format
+msgid ""
+"When you deploy the example to Tomcat, any EJB3 components will run inside "
+"the JBoss Embeddable EJB3 container, a complete standalone EJB3 container "
+"environment."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:79
+#, no-c-format
+msgid "Running the example tests"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:80
+#, no-c-format
+msgid ""
+"Most of the examples come with a suite of TestNG integration tests. The "
+"easiest way to run the tests is to run <literal>ant testexample</literal> "
+"inside the <filename>examples/<replaceable>registration</replaceable></"
+"filename> directory. It is also possible to run the tests inside your IDE "
+"using the TestNG plugin."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:88
+#, no-c-format
+msgid "Your first Seam application: the registration example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:89
+#, no-c-format
+msgid ""
+"The registration example is a fairly trivial application that lets a new "
+"user store his username, real name and password in the database. The example "
+"isn't intended to show off all of the cool functionality of Seam. However, "
+"it demonstrates the use of an EJB3 session bean as a JSF action listener, "
+"and basic configuration of Seam."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:92
+#, no-c-format
+msgid ""
+"We'll go slowly, since we realize you might not yet be familiar with EJB 3.0."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:95
+#, no-c-format
+msgid ""
+"The start page displays a very basic form with three input fields. Try "
+"filling them in and then submitting the form. This will save a user object "
+"in the database."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:107 Tutorial.xml:424 Tutorial.xml:563 Tutorial.xml:723
+#, no-c-format
+msgid "Understanding the code"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:108
+#, no-c-format
+msgid ""
+"The example is implemented with two JSP pages, one entity bean and one "
+"stateless session bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:119
+#, no-c-format
+msgid "Let's take a look at the code, starting from the \"bottom\"."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:123
+#, no-c-format
+msgid "The entity bean: <literal>User.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:124
+#, no-c-format
+msgid ""
+"We need an EJB entity bean for user data. This class defines "
+"<emphasis>persistence</emphasis> and <emphasis>validation</emphasis> "
+"declaratively, via annotations. It also needs some extra annotations that "
+"define the class as a Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:140
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"user\")\n"
+"@Scope(SESSION)\n"
+"@Table(name=\"users\")\n"
+"public class User implements Serializable\n"
+"{\n"
+"   private static final long serialVersionUID = 1881413500711441951L;\n"
+"   \n"
+"   private String username;\n"
+"   private String password;\n"
+"   private String name;\n"
+"   \n"
+"   public User(String name, String password, String username)\n"
+"   {\n"
+"      this.name = name;\n"
+"      this.password = password;\n"
+"      this.username = username;\n"
+"   }\n"
+"   \n"
+"   public User() {}\n"
+"   \n"
+"   @NotNull @Length(min=5, max=15)\n"
+"   public String getPassword()\n"
+"   {\n"
+"      return password;\n"
+"   }\n"
+"\n"
+"   public void setPassword(String password)\n"
+"   {\n"
+"      this.password = password;\n"
+"   }\n"
+"   \n"
+"   @NotNull\n"
+"   public String getName()\n"
+"   {\n"
+"      return name;\n"
+"   }\n"
+"\n"
+"   public void setName(String name)\n"
+"   {\n"
+"      this.name = name;\n"
+"   }\n"
+"   \n"
+"   @Id @NotNull @Length(min=5, max=15)\n"
+"   public String getUsername()\n"
+"   {\n"
+"      return username;\n"
+"   }\n"
+"\n"
+"   public void setUsername(String username)\n"
+"   {\n"
+"      this.username = username;\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:143
+#, no-c-format
+msgid ""
+"The EJB3 standard <literal>@Entity</literal> annotation indicates that the "
+"<literal>User</literal> class is an entity bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:148
+#, no-c-format
+msgid ""
+"A Seam component needs a <emphasis>component name</emphasis> specified by "
+"the <link linkend=\"name-annotation\"><literal>@Name</literal></link> "
+"annotation. This name must be unique within the Seam application. When JSF "
+"asks Seam to resolve a context variable with a name that is the same as a "
+"Seam component name, and the context variable is currently undefined (null), "
+"Seam will instantiate that component, and bind the new instance to the "
+"context variable. In this case, Seam will instantiate a <literal>User</"
+"literal> the first time JSF encounters a variable named <literal>user</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:153
+#, no-c-format
+msgid ""
+"Whenever Seam instantiates a component, it binds the new instance to a "
+"context variable in the component's <emphasis>default context</emphasis>. "
+"The default context is specified using the <link linkend=\"scope-annotation"
+"\"><literal>@Scope</literal></link> annotation. The <literal>User</literal> "
+"bean is a session scoped component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:158
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Table</literal> annotation indicates that the "
+"<literal>User</literal> class is mapped to the <literal>users</literal> "
+"table."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:163
+#, no-c-format
+msgid ""
+"<literal>name</literal>, <literal>password</literal> and <literal>username</"
+"literal> are the persistent attributes of the entity bean. All of our "
+"persistent attributes define accessor methods. These are needed when this "
+"component is used by JSF in the render response and update model values "
+"phases."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:168
+#, no-c-format
+msgid ""
+"An empty constructor is both required by both the EJB specification and by "
+"Seam."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:173
+#, no-c-format
+msgid ""
+"The <literal>@NotNull</literal> and <literal>@Length</literal> annotations "
+"are part of the Hibernate Validator framework. Seam integrates Hibernate "
+"Validator and lets you use it for data validation (even if you are not using "
+"Hibernate for persistence)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:178
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Id</literal> annotation indicates the primary key "
+"attribute of the entity bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:185
+#, no-c-format
+msgid ""
+"The most important things to notice in this example are the <literal>@Name</"
+"literal> and <literal>@Scope</literal> annotations. These annotations "
+"establish that this class is a Seam component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:188
+#, no-c-format
+msgid ""
+"We'll see below that the properties of our <literal>User</literal> class are "
+"bound to directly to JSF components and are populated by JSF during the "
+"update model values phase. We don't need any tedious glue code to copy data "
+"back and forth between the JSP pages and the entity bean domain model."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:191
+#, no-c-format
+msgid ""
+"However, entity beans shouldn't do transaction management or database "
+"access. So we can't use this component as a JSF action listener. For that we "
+"need a session bean."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:198
+#, no-c-format
+msgid ""
+"The stateless session bean class: <literal>RegisterAction.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:199
+#, no-c-format
+msgid ""
+"Most Seam application use session beans as JSF action listeners (you can use "
+"JavaBeans instead if you like)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:202
+#, no-c-format
+msgid ""
+"We have exactly one JSF action in our application, and one session bean "
+"method attached to it. In this case, we'll use a stateless session bean, "
+"since all the state associated with our action is held by the <literal>User</"
+"literal> bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:205
+#, no-c-format
+msgid "This is the only really interesting code in the example!"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:222
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"register\")\n"
+"public class RegisterAction implements Register\n"
+"{\n"
+"\n"
+"   @In\n"
+"   private User user;\n"
+"   \n"
+"   @PersistenceContext\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @Logger\n"
+"   private Log log;\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = em.createQuery(\n"
+"         \"select username from User where username=#{user.username}\")\n"
+"         .getResultList();\n"
+"         \n"
+"      if (existing.size()==0)\n"
+"      {\n"
+"         em.persist(user);\n"
+"         log.info(\"Registered new user #{user.username}\");\n"
+"         return \"/registered.jsp\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         FacesMessages.instance().add(\"User #{user.username} already exists"
+"\");\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:225
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Stateless</literal> annotation marks this class "
+"as stateless session bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:230
+#, no-c-format
+msgid ""
+"The <link linkend=\"in-annotation\"><literal>@In</literal></link> annotation "
+"marks an attribute of the bean as injected by Seam. In this case, the "
+"attribute is injected from a context variable named <literal>user</literal> "
+"(the instance variable name)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:235
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@PersistenceContext</literal> annotation is used "
+"to inject the EJB3 entity manager."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:240
+#, no-c-format
+msgid ""
+"The Seam <literal>@Logger</literal> annotation is used to inject the "
+"component's <literal>Log</literal> instance."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:245
+#, no-c-format
+msgid ""
+"The action listener method uses the standard EJB3 <literal>EntityManager</"
+"literal> API to interact with the database, and returns the JSF outcome. "
+"Note that, since this is a sesson bean, a transaction is automatically begun "
+"when the <literal>register()</literal> method is called, and committed when "
+"it completes."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:250
+#, no-c-format
+msgid ""
+"Notice that Seam lets you use a JSF EL expression inside EJB-QL. Under the "
+"covers, this results in an ordinary JPA <literal>setParameter()</literal> "
+"call on the standard JPA <literal>Query</literal> object. Nice, huh?"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:255
+#, no-c-format
+msgid ""
+"The <literal>Log</literal> API lets us easily display templated log messages."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:260
+#, no-c-format
+msgid ""
+"JSF action listener methods return a string-valued outcome that determines "
+"what page will be displayed next. A null outcome (or a void action listener "
+"method) redisplays the previous page. In plain JSF, it is normal to always "
+"use a JSF <emphasis>navigation rule</emphasis> to determine the JSF view id "
+"from the outcome. For complex application this indirection is useful and a "
+"good practice. However, for very simple examples like this one, Seam lets "
+"you use the JSF view id as the outcome, eliminating the requirement for a "
+"navigation rule. <emphasis>Note that when you use a view id as an outcome, "
+"Seam always performs a browser redirect.</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:265
+#, no-c-format
+msgid ""
+"Seam provides a number of <emphasis>built-in components</emphasis> to help "
+"solve common problems. The <literal>FacesMessages</literal> component makes "
+"it easy to display templated error or success messages. Built-in Seam "
+"components may be obtained by injection, or by calling an <literal>instance()"
+"</literal> method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:272
+#, no-c-format
+msgid ""
+"Note that we did not explicitly specify a <literal>@Scope</literal> this "
+"time. Each Seam component type has a default scope if not explicitly "
+"specified. For stateless session beans, the default scope is the stateless "
+"context. Actually, <emphasis>all</emphasis> stateless session beans belong "
+"in the stateless context."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:275
+#, no-c-format
+msgid ""
+"Our session bean action listener performs the business and persistence logic "
+"for our mini-application. In more complex applications, we might need to "
+"layer the code and refactor persistence logic into a dedicated data access "
+"component. That's perfectly trivial to do. But notice that Seam does not "
+"force you into any particular strategy for application layering."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:278
+#, no-c-format
+msgid ""
+"Furthermore, notice that our session bean has simultaneous access to context "
+"associated with the web request (the form values in the <literal>User</"
+"literal> object, for example), and state held in transactional resources "
+"(the <literal>EntityManager</literal> object). This is a break from "
+"traditional J2EE architectures. Again, if you are more comfortable with the "
+"traditional J2EE layering, you can certainly implement that in a Seam "
+"application. But for many applications, it's simply not very useful."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:285
+#, no-c-format
+msgid "The session bean local interface: <literal>Register.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:286
+#, no-c-format
+msgid "Naturally, our session bean needs a local interface."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:291
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface Register\n"
+"{\n"
+"   public String register();\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:292
+#, no-c-format
+msgid "That's the end of the Java code. Now onto the deployment descriptors."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:298
+#, no-c-format
+msgid ""
+"The Seam component deployment descriptor: <literal>components.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:299
+#, no-c-format
+msgid ""
+"If you've used many Java frameworks before, you'll be used to having to "
+"declate all your component classes in some kind of XML file that gradually "
+"grows more and more unmanageable as your project matures. You'll be relieved "
+"to know that Seam does not require that application components be "
+"accompanied by XML. Most Seam applications require a very small amount of "
+"XML that does not grow very much as the project gets bigger."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:302
+#, no-c-format
+msgid ""
+"Nevertheless, it is often useful to be able to provide for <emphasis>some</"
+"emphasis> external configuration of <emphasis>some</emphasis> components "
+"(particularly the components built in to Seam). You have a couple of options "
+"here, but the most flexible option is to provide this configuration in a "
+"file called <literal>components.xml</literal>, located in the <literal>WEB-"
+"INF</literal> directory. We'll use the <literal>components.xml</literal> "
+"file to tell Seam how to find our EJB components in JNDI:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:305
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"&gt;\n"
+"     &lt;core:init jndi-pattern=\"@jndiPattern@\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:306
+#, no-c-format
+msgid ""
+"This code configures a property named <literal>jndiPattern</literal> of a "
+"built-in Seam component named <literal>org.jboss.seam.core.init</literal>."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:312
+#, no-c-format
+msgid "The web deployment description: <literal>web.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:313
+#, no-c-format
+msgid ""
+"The presentation layer for our mini-application will be deployed in a WAR. "
+"So we'll need a web deployment descriptor."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:316
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;web-app version=\"2.5\"\n"
+"    xmlns=\"http://java.sun.com/xml/ns/javaee\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n"
+"        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\"&gt;\n"
+"\n"
+"    &lt;!-- Seam --&gt;\n"
+"\n"
+"    &lt;listener&gt;\n"
+"        &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/"
+"listener-class&gt;\n"
+"    &lt;/listener&gt;\n"
+"\n"
+"    &lt;!-- MyFaces --&gt;\n"
+"\n"
+"    &lt;listener&gt;\n"
+"        &lt;listener-class&gt;\n"
+"            org.apache.myfaces.webapp.StartupServletContextListener\n"
+"        &lt;/listener-class&gt;\n"
+"    &lt;/listener&gt;\n"
+"\n"
+"    &lt;context-param&gt;\n"
+"        &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-"
+"name&gt;\n"
+"        &lt;param-value&gt;client&lt;/param-value&gt;\n"
+"    &lt;/context-param&gt;\n"
+"\n"
+"    &lt;servlet&gt;\n"
+"        &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;\n"
+"        &lt;servlet-class&gt;javax.faces.webapp.FacesServlet&lt;/servlet-"
+"class&gt;\n"
+"        &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;\n"
+"    &lt;/servlet&gt;\n"
+"\n"
+"    &lt;!-- Faces Servlet Mapping --&gt;\n"
+"    &lt;servlet-mapping&gt;\n"
+"        &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;\n"
+"        &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;\n"
+"    &lt;/servlet-mapping&gt;\n"
+"\n"
+"&lt;/web-app&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:317
+#, no-c-format
+msgid ""
+"This <literal>web.xml</literal> file configures Seam and MyFaces. The "
+"configuration you see here is pretty much identical in all Seam applications."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:323
+#, no-c-format
+msgid "The JSF configration: <literal>faces-config.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:324
+#, no-c-format
+msgid ""
+"All Seam applications use JSF views as the presentation layer. So we'll need "
+"<literal>faces-config.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:327
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;!DOCTYPE faces-config \n"
+"PUBLIC \"-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN\"\n"
+"                            \"http://java.sun.com/dtd/web-facesconfig_1_0.dtd"
+"\"&gt;\n"
+"&lt;faces-config&gt;\n"
+"\n"
+"    &lt;!-- A phase listener is needed by all Seam applications --&gt;\n"
+"    \n"
+"    &lt;lifecycle&gt;\n"
+"        &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-"
+"listener&gt;\n"
+"    &lt;/lifecycle&gt;\n"
+"\n"
+"&lt;/faces-config&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:328
+#, no-c-format
+msgid ""
+"The <literal>faces-config.xml</literal> file integrates Seam into JSF. Note "
+"that we don't need any JSF managed bean declarations! The managed beans are "
+"the Seam components. In Seam applications, the <literal>faces-config.xml</"
+"literal> is used much less often than in plain JSF."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:331
+#, no-c-format
+msgid ""
+"In fact, once you have all the basic descriptors set up, the <emphasis>only</"
+"emphasis> XML you need to write as you add new functionality to a Seam "
+"application is the navigation rules, and possibly jBPM process definitions. "
+"Seam takes the view that <emphasis>process flow</emphasis> and "
+"<emphasis>configuration data</emphasis> are the only things that truly "
+"belong in XML."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:334
+#, no-c-format
+msgid ""
+"In this simple example, we don't even need a navigation rule, since we "
+"decided to embed the view id in our action code."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:340
+#, no-c-format
+msgid "The EJB deployment descriptor: <literal>ejb-jar.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:341
+#, no-c-format
+msgid ""
+"The <literal>ejb-jar.xml</literal> file integrates Seam with EJB3, by "
+"attaching the <literal>SeamInterceptor</literal> to all session beans in the "
+"archive."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:344
+#, no-c-format
+msgid ""
+"&lt;ejb-jar xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \n"
+"         xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n"
+"         http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd\"\n"
+"         version=\"3.0\"&gt;\n"
+"         \n"
+"   &lt;interceptors&gt;\n"
+"     &lt;interceptor&gt;\n"
+"       &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"     &lt;/interceptor&gt;\n"
+"   &lt;/interceptors&gt;\n"
+"   \n"
+"   &lt;assembly-descriptor&gt;\n"
+"      &lt;interceptor-binding&gt;\n"
+"         &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"         &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"      &lt;/interceptor-binding&gt;\n"
+"   &lt;/assembly-descriptor&gt;\n"
+"   \n"
+"&lt;/ejb-jar&gt;"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:348
+#, no-c-format
+msgid ""
+"The EJB persistence deployment descriptor: <literal>persistence.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:349
+#, no-c-format
+msgid ""
+"The <literal>persistence.xml</literal> file tells the EJB persistence "
+"provider where to find the datasource, and contains some vendor-specific "
+"settings. In this case, enables automatic schema export at startup time."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:352
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;persistence xmlns=\"http://java.sun.com/xml/ns/persistence\" \n"
+"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence \n"
+"             http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd\" \n"
+"             version=\"1.0\"&gt;\n"
+"    &lt;persistence-unit name=\"userDatabase\"&gt;\n"
+"      &lt;provider&gt;org.hibernate.ejb.HibernatePersistence&lt;/"
+"provider&gt;\n"
+"      &lt;jta-data-source&gt;java:/DefaultDS&lt;/jta-data-source&gt;\n"
+"      &lt;properties&gt;\n"
+"         &lt;property name=\"hibernate.hbm2ddl.auto\" value=\"create-drop\"/"
+"&gt;\n"
+"      &lt;/properties&gt;\n"
+"    &lt;/persistence-unit&gt;\n"
+"&lt;/persistence&gt;"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:356
+#, no-c-format
+msgid ""
+"The view: <literal>register.jsp</literal> and <literal>registered.jsp</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:357
+#, no-c-format
+msgid ""
+"The view pages for a Seam application could be implemented using any "
+"technology that supports JSF. In this example we use JSP, since it is "
+"familiar to most developers and since we have minimal requirements here "
+"anyway. (But if you take our advice, you'll use Facelets for your own "
+"applications.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:360
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://jboss.com/products/seam/taglib\" prefix=\"s\" "
+"&#37;&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Register New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;table border=\"0\"&gt;\n"
+"       &lt;s:validateAll&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Username&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputText value=\"#{user.username}\"/&gt;&lt;/"
+"td&gt;\n"
+"         &lt;/tr&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Real Name&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputText value=\"#{user.name}\"/&gt;&lt;/td&gt;\n"
+"         &lt;/tr&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Password&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputSecret value=\"#{user.password}\"/&gt;&lt;/"
+"td&gt;\n"
+"         &lt;/tr&gt;\n"
+"       &lt;/s:validateAll&gt;\n"
+"     &lt;/table&gt;\n"
+"     &lt;h:messages/&gt;\n"
+"     &lt;h:commandButton type=\"submit\" value=\"Register\" action=\"#"
+"{register.register}\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:361
+#, no-c-format
+msgid ""
+"The only thing here that is specific to Seam is the <literal>&lt;s:"
+"validateAll&gt;</literal> tag. This JSF component tells JSF to validate all "
+"the contained input fields against the Hibernate Validator annotations "
+"specified on the entity bean."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:364
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Successfully Registered New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"    Welcome, &lt;h:outputText value=\"#{user.name}\"/&gt;, \n"
+"    you are successfully registered as &lt;h:outputText value=\"#{user."
+"username}\"/&gt;.\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:365
+#, no-c-format
+msgid ""
+"This is a boring old JSP pages using standard JSF components. There is "
+"nothing specific to Seam here."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:371
+#, no-c-format
+msgid "The EAR deployment descriptor: <literal>application.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:372
+#, no-c-format
+msgid ""
+"Finally, since our application is deployed as an EAR, we need a deployment "
+"descriptor there, too."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:375
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;application xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee \n"
+"             http://java.sun.com/xml/ns/javaee/application_5.xsd\"\n"
+"             version=\"5\"&gt;\n"
+"             \n"
+"    &lt;display-name&gt;Seam Registration&lt;/display-name&gt;\n"
+"\n"
+"    &lt;module&gt;\n"
+"        &lt;web&gt;\n"
+"            &lt;web-uri&gt;jboss-seam-registration.war&lt;/web-uri&gt;\n"
+"            &lt;context-root&gt;/seam-registration&lt;/context-root&gt;\n"
+"        &lt;/web&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;ejb&gt;jboss-seam-registration.jar&lt;/ejb&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;jboss-seam.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;el-api.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;el-ri.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    \n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:376
+#, no-c-format
+msgid ""
+"This deployment descriptor links modules in the enterprise archive and binds "
+"the web application to the context root <literal>/seam-registration</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:387 Tutorial.xml:535 Tutorial.xml:698 Tutorial.xml:813
+#, no-c-format
+msgid "How it works"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:388
+#, no-c-format
+msgid ""
+"When the form is submitted, JSF asks Seam to resolve the variable named "
+"<literal>user</literal>. Since there is no value already bound to that name "
+"(in any Seam context), Seam instantiates the <literal>user</literal> "
+"component, and returns the resulting <literal>User</literal> entity bean "
+"instance to JSF after storing it in the Seam session context."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:391
+#, no-c-format
+msgid ""
+"The form input values are now validated against the Hibernate Validator "
+"constraints specified on the <literal>User</literal> entity. If the "
+"constraints are violated, JSF redisplays the page. Otherwise, JSF binds the "
+"form input values to properties of the <literal>User</literal> entity bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:394
+#, no-c-format
+msgid ""
+"Next, JSF asks Seam to resolve the variable named <literal>register</"
+"literal>. Seam finds the <literal>RegisterAction</literal> stateless session "
+"bean in the stateless context and returns it. JSF invokes the "
+"<literal>register()</literal> action listener method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:397
+#, no-c-format
+msgid ""
+"Seam intercepts the method call and injects the <literal>User</literal> "
+"entity from the Seam session context, before continuing the invocation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:400
+#, no-c-format
+msgid ""
+"The <literal>register()</literal> method checks if a user with the entered "
+"username already exists. If so, an error message is queued with the "
+"<literal>FacesMessages</literal> component, and a null outcome is returned, "
+"causing a page redisplay. The <literal>FacesMessages</literal> component "
+"interpolates the JSF expression embedded in the message string and adds a "
+"JSF <literal>FacesMessage</literal> to the view."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:403
+#, no-c-format
+msgid ""
+"If no user with that username exists, the <literal>\"/registered.jsp\"</"
+"literal> outcome triggers a browser redirect to the <literal>registered.jsp</"
+"literal> page. When JSF comes to render the page, it asks Seam to resolve "
+"the variable named <literal>user</literal> and uses property values of the "
+"returned <literal>User</literal> entity from Seam's session scope."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:411
+#, no-c-format
+msgid "Clickable lists in Seam: the messages example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:412
+#, no-c-format
+msgid ""
+"Clickable lists of database search results are such an important part of any "
+"online application that Seam provides special functionality on top of JSF to "
+"make it easier to query data using EJB-QL or HQL and display it as a "
+"clickable list using a JSF <literal>&lt;h:dataTable&gt;</literal>. The "
+"messages example demonstrates this functionality."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:425
+#, no-c-format
+msgid ""
+"The message list example has one entity bean, <literal>Message</literal>, "
+"one session bean, <literal>MessageListBean</literal> and one JSP."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:429
+#, no-c-format
+msgid "The entity bean: <literal>Message.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:430
+#, no-c-format
+msgid ""
+"The <literal>Message</literal> entity defines the title, text, date and time "
+"of a message, and a flag indicating whether the message has been read:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:433
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"message\")\n"
+"@Scope(EVENT)\n"
+"public class Message implements Serializable\n"
+"{\n"
+"   private Long id;\n"
+"   private String title;\n"
+"   private String text;\n"
+"   private boolean read;\n"
+"   private Date datetime;\n"
+"   \n"
+"   @Id @GeneratedValue\n"
+"   public Long getId() {\n"
+"      return id;\n"
+"   }\n"
+"   public void setId(Long id) {\n"
+"      this.id = id;\n"
+"   }\n"
+"   \n"
+"   @NotNull @Length(max=100)\n"
+"   public String getTitle() {\n"
+"      return title;\n"
+"   }\n"
+"   public void setTitle(String title) {\n"
+"      this.title = title;\n"
+"   }\n"
+"   \n"
+"   @NotNull @Lob\n"
+"   public String getText() {\n"
+"      return text;\n"
+"   }\n"
+"   public void setText(String text) {\n"
+"      this.text = text;\n"
+"   }\n"
+"   \n"
+"   @NotNull\n"
+"   public boolean isRead() {\n"
+"      return read;\n"
+"   }\n"
+"   public void setRead(boolean read) {\n"
+"      this.read = read;\n"
+"   }\n"
+"   \n"
+"   @NotNull \n"
+"   @Basic @Temporal(TemporalType.TIMESTAMP)\n"
+"   public Date getDatetime() {\n"
+"      return datetime;\n"
+"   }\n"
+"   public void setDatetime(Date datetime) {\n"
+"      this.datetime = datetime;\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:438
+#, no-c-format
+msgid "The stateful session bean: <literal>MessageManagerBean.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:439
+#, no-c-format
+msgid ""
+"Just like in the previous example, we have a session bean, "
+"<literal>MessageManagerBean</literal>, which defines the action listener "
+"methods for the two buttons on our form. One of the buttons selects a "
+"message from the list, and displays that message. The other button deletes a "
+"message. So far, this is not so different to the previous example."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:442
+#, no-c-format
+msgid ""
+"But <literal>MessageManagerBean</literal> is also responsible for fetching "
+"the list of messages the first time we navigate to the message list page. "
+"There are various ways the user could navigate to the page, and not all of "
+"them are preceded by a JSF action&mdash;the user might have bookmarked the "
+"page, for example. So the job of fetching the message list takes place in a "
+"Seam <emphasis>factory method</emphasis>, instead of in an action listener "
+"method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:445
+#, no-c-format
+msgid ""
+"We want to cache the list of messages in memory between server requests, so "
+"we will make this a stateful session bean."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:459
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Scope(SESSION)\n"
+"@Name(\"messageManager\")\n"
+"public class MessageManagerBean implements Serializable, MessageManager\n"
+"{\n"
+"\n"
+"   @DataModel\n"
+"   private List&lt;Message&gt; messageList;\n"
+"   \n"
+"   @DataModelSelection\n"
+"   @Out(required=false)\n"
+"   private Message message;\n"
+"   \n"
+"   @PersistenceContext(type=EXTENDED)\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @Factory(\"messageList\")\n"
+"   public void findMessages()\n"
+"   {\n"
+"      messageList = em.createQuery(\"from Message msg order by msg.datetime "
+"desc\").getResultList();\n"
+"   }\n"
+"   \n"
+"   public void select()\n"
+"   {\n"
+"      message.setRead(true);\n"
+"   }\n"
+"   \n"
+"   public void delete()\n"
+"   {\n"
+"      messageList.remove(message);\n"
+"      em.remove(message);\n"
+"      message=null;\n"
+"   }\n"
+"   \n"
+"   @Remove @Destroy\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:462
+#, no-c-format
+msgid ""
+"The <literal>@DataModel</literal> annotation exposes an attibute of type "
+"<literal>java.util.List</literal> to the JSF page as an instance of "
+"<literal>javax.faces.model.DataModel</literal>. This allows us to use the "
+"list in a JSF <literal>&lt;h:dataTable&gt;</literal> with clickable links "
+"for each row. In this case, the <literal>DataModel</literal> is made "
+"available in a session context variable named <literal>messageList</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:467
+#, no-c-format
+msgid ""
+"The <literal>@DataModelSelection</literal> annotation tells Seam to inject "
+"the <literal>List</literal> element that corresponded to the clicked link."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:472
+#, no-c-format
+msgid ""
+"The <literal>@Out</literal> annotation then exposes the selected value "
+"directly to the page. So ever time a row of the clickable list is selected, "
+"the <literal>Message</literal> is injected to the attribute of the stateful "
+"bean, and the subsequently <emphasis>outjected</emphasis> to the event "
+"context variable named <literal>message</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:477
+#, no-c-format
+msgid ""
+"This stateful bean has an EJB3 <emphasis>extended persistence context</"
+"emphasis>. The messages retrieved in the query remain in the managed state "
+"as long as the bean exists, so any subsequent method calls to the stateful "
+"bean can update them without needing to make any explicit call to the "
+"<literal>EntityManager</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:482
+#, no-c-format
+msgid ""
+"The first time we navigate to the JSP page, there will be no value in the "
+"<literal>messageList</literal> context variable. The <literal>@Factory</"
+"literal> annotation tells Seam to create an instance of "
+"<literal>MessageManagerBean</literal> and invoke the <literal>findMessages()"
+"</literal> method to initialize the value. We call <literal>findMessages()</"
+"literal> a <emphasis>factory method</emphasis> for <literal>messages</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:487
+#, no-c-format
+msgid ""
+"The <literal>select()</literal> action listener method marks the selected "
+"<literal>Message</literal> as read, and updates it in the database."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:492
+#, no-c-format
+msgid ""
+"The <literal>delete()</literal> action listener method removes the selected "
+"<literal>Message</literal> from the database."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:497
+#, no-c-format
+msgid ""
+"All stateful session bean Seam components <emphasis>must</emphasis> have a "
+"method marked <literal>@Remove @Destroy</literal> to ensure that Seam will "
+"remove the stateful bean when the Seam context ends, and clean up any server-"
+"side state."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:504
+#, no-c-format
+msgid ""
+"Note that this is a session-scoped Seam component. It is associated with the "
+"user login session, and all requests from a login session share the same "
+"instance of the component. (In Seam applications, we usually use session-"
+"scoped components sparingly.)"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:510
+#, no-c-format
+msgid ""
+"The session bean local interface: <literal>MessageManager.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:511
+#, no-c-format
+msgid "All session beans have a business interface, of course."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:514
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface MessageManager\n"
+"{\n"
+"   public void findMessages();\n"
+"   public void select();\n"
+"   public void delete();\n"
+"   public void destroy();\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:515
+#, no-c-format
+msgid "From now on, we won't show local interfaces in our code examples."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:518
+#, no-c-format
+msgid ""
+"Let's skip over <literal>components.xml</literal>, <literal>persistence.xml</"
+"literal>, <literal>web.xml</literal>, <literal>ejb-jar.xml</literal>, "
+"<literal>faces-config.xml</literal> and <literal>application.xml</literal> "
+"since they are much the same as the previous example, and go straight to the "
+"JSP."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:524
+#, no-c-format
+msgid "The view: <literal>messages.jsp</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:525
+#, no-c-format
+msgid ""
+"The JSP page is a straightforward use of the JSF <literal>&lt;h:dataTable&gt;"
+"</literal> component. Again, nothing specific to Seam."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:528
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Messages&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;h2&gt;Message List&lt;/h2&gt;\n"
+"     &lt;h:outputText value=\"No messages to display\" rendered=\"#"
+"{messageList.rowCount==0}\"/&gt;\n"
+"     &lt;h:dataTable var=\"msg\" value=\"#{messageList}\" rendered=\"#"
+"{messageList.rowCount&gt;0}\"&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Read\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:selectBooleanCheckbox value=\"#{msg.read}\" disabled=\"true"
+"\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Title\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:commandLink value=\"#{msg.title}\" action=\"#"
+"{messageManager.select}\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Date/Time\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:outputText value=\"#{msg.datetime}\"&gt;\n"
+"              &lt;f:convertDateTime type=\"both\" dateStyle=\"medium\" "
+"timeStyle=\"short\"/&gt;\n"
+"           &lt;/h:outputText&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;h:commandButton value=\"Delete\" action=\"#{messageManager."
+"delete}\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"     &lt;/h:dataTable&gt;\n"
+"     &lt;h3&gt;&lt;h:outputText value=\"#{message.title}\"/&gt;&lt;/h3&gt;\n"
+"     &lt;div&gt;&lt;h:outputText value=\"#{message.text}\"/&gt;&lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:536
+#, no-c-format
+msgid ""
+"The first time we navigate to the <literal>messages.jsp</literal> page, "
+"whether by a JSF postback (faces request) or a direct browser GET request "
+"(non-faces request), the page will try to resolve the <literal>messageList</"
+"literal> context variable. Since this context variable is not initialized, "
+"Seam will call the factory method <literal>findMessages()</literal>, which "
+"performs a query against the database and results in a <literal>DataModel</"
+"literal> being outjected. This <literal>DataModel</literal> provides the row "
+"data needed for rendering the <literal>&lt;h:dataTable&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:539
+#, no-c-format
+msgid ""
+"When the user clicks the <literal>&lt;h:commandLink&gt;</literal>, JSF calls "
+"the <literal>select()</literal> action listener. Seam intercepts this call "
+"and injects the selected row data into the <literal>message</literal> "
+"attribute of the <literal>messageManager</literal> component. The action "
+"listener fires, marking the selected <literal>Message</literal> as read. At "
+"the end of the call, Seam outjects the selected <literal>Message</literal> "
+"to the context variable named <literal>message</literal>. Next, the EJB "
+"container commits the transaction, and the change to the <literal>Message</"
+"literal> is flushed to the database. Finally, the page is re-rendered, "
+"redisplaying the message list, and displaying the selected message below it."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:542
+#, no-c-format
+msgid ""
+"If the user clicks the <literal>&lt;h:commandButton&gt;</literal>, JSF calls "
+"the <literal>delete()</literal> action listener. Seam intercepts this call "
+"and injects the selected row data into the <literal>message</literal> "
+"attribute of the <literal>messageList</literal> component. The action "
+"listener fires, removing the selected <literal>Message</literal> from the "
+"list, and also calling <literal>remove()</literal> on the "
+"<literal>EntityManager</literal>. At the end of the call, Seam refreshes the "
+"<literal>messageList</literal> context variable and clears the context "
+"variable named <literal>message</literal>. The EJB container commits the "
+"transaction, and deletes the <literal>Message</literal> from the database. "
+"Finally, the page is re-rendered, redisplaying the message list."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:550
+#, no-c-format
+msgid "Seam and jBPM: the todo list example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:551
+#, no-c-format
+msgid ""
+"jBPM provides sophisticated functionality for workflow and task management. "
+"To get a small taste of how jBPM integrates with Seam, we'll show you a "
+"simple \"todo list\" application. Since managing lists of tasks is such core "
+"functionality for jBPM, there is hardly any Java code at all in this example."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:564
+#, no-c-format
+msgid ""
+"The center of this example is the jBPM process definition. There are also "
+"two JSPs and two trivial JavaBeans (There was no reason to use session "
+"beans, since they do not access the database, or have any other "
+"transactional behavior). Let's start with the process definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:575
+#, no-c-format
+msgid ""
+"&lt;process-definition name=\"todo\"&gt;\n"
+"   \n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"todo\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;task-node name=\"todo\"&gt;\n"
+"      &lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"         &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"      &lt;/task&gt;\n"
+"      &lt;transition to=\"done\"/&gt;\n"
+"   &lt;/task-node&gt;\n"
+"   \n"
+"   &lt;end-state name=\"done\"/&gt;\n"
+"   \n"
+"&lt;/process-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:578
+#, no-c-format
+msgid ""
+"The <literal>&lt;start-state&gt;</literal> node represents the logical start "
+"of the process. When the process starts, it immediately transitions to the "
+"<literal>todo</literal> node."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:583
+#, no-c-format
+msgid ""
+"The <literal>&lt;task-node&gt;</literal> node represents a <emphasis>wait "
+"state</emphasis>, where business process execution pauses, waiting for one "
+"or more tasks to be performed."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:588
+#, no-c-format
+msgid ""
+"The <literal>&lt;task&gt;</literal> element defines a task to be performed "
+"by a user. Since there is only one task defined on this node, when it is "
+"complete, execution resumes, and we transition to the end state. The task "
+"gets its description from a Seam component named <literal>todoList</literal> "
+"(one of the JavaBeans)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:593
+#, no-c-format
+msgid ""
+"Tasks need to be assigned to a user or group of users when they are created. "
+"In this case, the task is assigned to the current user, which we get from a "
+"built-in Seam component named <literal>actor</literal>. Any Seam component "
+"may be used to perform task assignment."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:598
+#, no-c-format
+msgid ""
+"The <literal>&lt;end-state&gt;</literal> node defines the logical end of the "
+"business process. When execution reaches this node, the process instance is "
+"destroyed."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:605
+#, no-c-format
+msgid ""
+"If we view this process definition using the process definition editor "
+"provided by JBossIDE, this is what it looks like:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:616
+#, no-c-format
+msgid ""
+"This document defines our <emphasis>business process</emphasis> as a graph "
+"of nodes. This is the most trivial possible business process: there is one "
+"<emphasis>task</emphasis> to be performed, and when that task is complete, "
+"the business process ends."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:619
+#, no-c-format
+msgid ""
+"The first JavaBean handles the login screen <literal>login.jsp</literal>. "
+"Its job is just to initialize the jBPM actor id using the <literal>actor</"
+"literal> component. (In a real application, it would also need to "
+"authenticate the user.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:622
+#, no-c-format
+msgid ""
+"@Name(\"login\")\n"
+"public class Login {\n"
+"   \n"
+"   @In\n"
+"   private Actor actor;\n"
+"   \n"
+"   private String user;\n"
+"\n"
+"   public String getUser() {\n"
+"      return user;\n"
+"   }\n"
+"\n"
+"   public void setUser(String user) {\n"
+"      this.user = user;\n"
+"   }\n"
+"   \n"
+"   public String login()\n"
+"   {\n"
+"      actor.setId(user);\n"
+"      return \"/todo.jsp\";\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:623
+#, no-c-format
+msgid ""
+"Here we see the use of <literal>@In</literal> to inject the built-in "
+"<literal>Actor</literal> component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:626
+#, no-c-format
+msgid "The JSP itself is trivial:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:629
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"&#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"&#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Login&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Login&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    &lt;h:form&gt;\n"
+"      &lt;div&gt;\n"
+"        &lt;h:inputText value=\"#{login.user}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Login\" action=\"#{login.login}\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"    &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:630
+#, no-c-format
+msgid ""
+"The second JavaBean is responsible for starting business process instances, "
+"and ending tasks."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:639
+#, no-c-format
+msgid ""
+"@Name(\"todoList\")\n"
+"public class TodoList {\n"
+"   \n"
+"   private String description;\n"
+"   \n"
+"   public String getDescription()\n"
+"   {\n"
+"      return description;\n"
+"   }\n"
+"\n"
+"   public void setDescription(String description) {\n"
+"      this.description = description;\n"
+"   }\n"
+"   \n"
+"   @CreateProcess(definition=\"todo\")\n"
+"   public void createTodo() {}\n"
+"   \n"
+"   @StartTask @EndTask\n"
+"   public void done() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:642
+#, no-c-format
+msgid ""
+"The description property accepts user input form the JSP page, and exposes "
+"it to the process definition, allowing the task description to be set."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:647
+#, no-c-format
+msgid ""
+"The Seam <literal>@CreateProcess</literal> annotation creates a new jBPM "
+"process instance for the named process definition."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:652
+#, no-c-format
+msgid ""
+"The Seam <literal>@StartTask</literal> annotation starts work on a task. The "
+"<literal>@EndTask</literal> ends the task, and allows the business process "
+"execution to resume."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:659
+#, no-c-format
+msgid ""
+"In a more realistic example, <literal>@StartTask</literal> and "
+"<literal>@EndTask</literal> would not appear on the same method, because "
+"there is usually work to be done using the application in order to complete "
+"the task."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:662
+#, no-c-format
+msgid "Finally, the meat of the application is in <literal>todo.jsp</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:665
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://jboss.com/products/seam/taglib\" prefix=\"s\" "
+"&#37;&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Todo List&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Todo List&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"   &lt;h:form id=\"list\"&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:outputText value=\"There are no todo items.\" rendered=\"#"
+"{empty \n"
+"             taskInstanceList}\"/&gt;\n"
+"         &lt;h:dataTable value=\"#{taskInstanceList}\" var=\"task\" rendered="
+"\"#{not empty taskInstanceList}\"&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Description\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.description}\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Created\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:outputText value=\"#{task.taskMgmtInstance."
+"processInstance.start}\"&gt;\n"
+"                    &lt;f:convertDateTime type=\"date\"/&gt;\n"
+"                &lt;/h:outputText&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Priority\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.priority}\" style=\"width: 30"
+"\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Due Date\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.dueDate}\" style=\"width: 100"
+"\"&gt;\n"
+"                    &lt;f:convertDateTime type=\"date\" dateStyle=\"short\"/"
+"&gt;\n"
+"                &lt;/h:inputText&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;s:button value=\"Done\" action=\"#{todoList.done}\" "
+"taskInstance=\"#{task}\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"         &lt;/h:dataTable&gt;\n"
+"      &lt;/div&gt;\n"
+"      &lt;div&gt;\n"
+"      &lt;h:messages/&gt;\n"
+"      &lt;/div&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:commandButton value=\"Update Items\" action=\"update\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"   &lt;h:form id=\"new\"&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:inputText value=\"#{todoList.description}\"/&gt;\n"
+"         &lt;h:commandButton value=\"Create New Item\" action=\"#{todoList."
+"createTodo}\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:666
+#, no-c-format
+msgid "Let's take this one piece at a time."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:669
+#, no-c-format
+msgid ""
+"The page renders a list of tasks, which it gets from a built-in Seam "
+"component named <literal>taskInstanceList</literal>. The list is defined "
+"inside a JSF form."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:672
+#, no-c-format
+msgid ""
+"&lt;h:form id=\"list\"&gt;\n"
+"   &lt;div&gt;\n"
+"      &lt;h:outputText value=\"There are no todo items.\" rendered=\"#{empty "
+"taskInstanceList}\"/&gt;\n"
+"      &lt;h:dataTable value=\"#{taskInstanceList}\" var=\"task\" rendered=\"#"
+"{not empty taskInstanceList}\"&gt;\n"
+"         ...\n"
+"      &lt;/h:dataTable&gt;\n"
+"   &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:673
+#, no-c-format
+msgid ""
+"Each element of the list is an instance of the jBPM class "
+"<literal>TaskInstance</literal>. The following code simply displays the "
+"interesting properties of each task in the list. For the description, "
+"priority and due date, we use input controls, to allow the user to update "
+"these values."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:676
+#, no-c-format
+msgid ""
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"       &lt;h:outputText value=\"Description\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.description}\"/&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Created\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:outputText value=\"#{task.taskMgmtInstance.processInstance.start}"
+"\"&gt;\n"
+"        &lt;f:convertDateTime type=\"date\"/&gt;\n"
+"    &lt;/h:outputText&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Priority\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.priority}\" style=\"width: 30\"/&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Due Date\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.dueDate}\" style=\"width: 100\"&gt;\n"
+"        &lt;f:convertDateTime type=\"date\" dateStyle=\"short\"/&gt;\n"
+"    &lt;/h:inputText&gt;\n"
+"&lt;/h:column&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:677
+#, no-c-format
+msgid ""
+"This button ends the task by calling the action method annotated "
+"<literal>@StartTask @EndTask</literal>. It passes the task id to Seam as a "
+"request parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:680
+#, no-c-format
+msgid ""
+"&lt;h:column&gt;\n"
+"    &lt;s:button value=\"Done\" action=\"#{todoList.done}\" taskInstance=\"#"
+"{task}\"/&gt;\n"
+"&lt;/h:column&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:681
+#, no-c-format
+msgid ""
+"(Note that this is using a Seam <literal>&lt;s:button&gt;</literal> JSF "
+"control from the <literal>seam-ui.jar</literal> package.)"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:684
+#, no-c-format
+msgid ""
+"This button is used to update the properties of the tasks. When the form is "
+"submitted, Seam and jBPM will make any changes to the tasks persistent. "
+"There is no need for any action listener method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:687
+#, no-c-format
+msgid "&lt;h:commandButton value=\"Update Items\" action=\"update\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:688
+#, no-c-format
+msgid ""
+"A second form on the page is used to create new items, by calling the action "
+"method annotated <literal>@CreateProcess</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:691
+#, no-c-format
+msgid ""
+"&lt;h:form id=\"new\"&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:inputText value=\"#{todoList.description}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Create New Item\" action=\"#{todoList."
+"createTodo}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:692
+#, no-c-format
+msgid ""
+"There are several other files needed for the example, but they are just "
+"standard jBPM and Seam configuration and not very interesting."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:699 Tutorial.xml:814 Tutorial.xml:1157 Tutorial.xml:1178
+#: Tutorial.xml:1191
+#, no-c-format
+msgid "TODO"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:707
+#, no-c-format
+msgid "Seam pageflow: the numberguess example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:708
+#, no-c-format
+msgid ""
+"For Seam applications with relatively freeform (ad hoc) navigation, JSF/Seam "
+"navigation rules are a perfectly good way to define the page flow. For "
+"applications with a more constrained style of navigation, especially for "
+"user interfaces which are more stateful, navigation rules make it difficult "
+"to really understand the flow of the system. To understand the flow, you "
+"need to piece it together from the view pages, the actions and the "
+"navigation rules."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:711
+#, no-c-format
+msgid ""
+"Seam allows you to use a jPDL process definition to define pageflow. The "
+"simple number guessing example shows how this is done."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:724
+#, no-c-format
+msgid ""
+"The example is implemented using one JavaBean, three JSP pages and a jPDL "
+"pageflow definition. Let's begin with the pageflow:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:734
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"numberGuess\"&gt;\n"
+"   \n"
+"   &lt;start-page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"          &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"      &lt;/transition&gt;\n"
+"   &lt;/start-page&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess."
+"correctGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateRemainingGuesses\" expression=\"#{numberGuess."
+"lastGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"lose\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"displayGuess\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"lose\" view-id=\"/lose.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:737
+#, no-c-format
+msgid ""
+"The <literal>&lt;page&gt;</literal> element defines a wait state where the "
+"system displays a particular JSF view and waits for user input. The "
+"<literal>view-id</literal> is the same JSF view id used in plain JSF "
+"navigation rules. The <literal>redirect</literal> attribute tells Seam to "
+"use post-then-redirect when navigating to the page. (This results in "
+"friendly browser URLs.)"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:742
+#, no-c-format
+msgid ""
+"The <literal>&lt;transition&gt;</literal> element names a JSF outcome. The "
+"transition is triggered when a JSF action results in that outcome. Execution "
+"will then proceed to the next node of the pageflow graph, after invocation "
+"of any jBPM transition actions."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:747
+#, no-c-format
+msgid ""
+"A transition <literal>&lt;action&gt;</literal> is just like a JSF action, "
+"except that it occurs when a jBPM transition occurs. The transition action "
+"can invoke any Seam component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:752
+#, no-c-format
+msgid ""
+"A <literal>&lt;decision&gt;</literal> node branches the pageflow, and "
+"determines the next node to execute by evaluating a JSF EL expression."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:759
+#, no-c-format
+msgid "Here is what the pageflow looks like in the JBossIDE pageflow editor:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:770
+#, no-c-format
+msgid ""
+"Now that we have seen the pageflow, it is very, very easy to understand the "
+"rest of the application!"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:773
+#, no-c-format
+msgid ""
+"Here is the main page of the application, <literal>numberGuess.jsp</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:776
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"&#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"&#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Guess a number...&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Guess a number...&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    &lt;h:form&gt;\n"
+"        &lt;h:outputText value=\"Higher!\" rendered=\"#{numberGuess."
+"randomNumber&gt;numberGuess.currentGuess}\" /&gt;\n"
+"        &lt;h:outputText value=\"Lower!\" rendered=\"#{numberGuess."
+"randomNumber&lt;numberGuess.currentGuess}\" /&gt;\n"
+"        &lt;br /&gt;\n"
+"        I'm thinking of a number between &lt;h:outputText value=\"#"
+"{numberGuess.smallest}\" /&gt; and \n"
+"        &lt;h:outputText value=\"#{numberGuess.biggest}\" /&gt;. You have \n"
+"        &lt;h:outputText value=\"#{numberGuess.remainingGuesses}\" /&gt; "
+"guesses.\n"
+"        &lt;br /&gt;\n"
+"        Your guess: \n"
+"        &lt;h:inputText value=\"#{numberGuess.currentGuess}\" id=\"guess\" "
+"required=\"true\"&gt;\n"
+"            &lt;f:validateLongRange\n"
+"                maximum=\"#{numberGuess.biggest}\" \n"
+"                minimum=\"#{numberGuess.smallest}\"/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"        &lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"guess"
+"\" /&gt;\n"
+"        &lt;br/&gt;\n"
+"        &lt;h:message for=\"guess\" style=\"color: red\"/&gt;\n"
+"    &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:777
+#, no-c-format
+msgid ""
+"Notice how the command button names the <literal>guess</literal> transition "
+"instead of calling an action directly."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:780
+#, no-c-format
+msgid "The <literal>win.jsp</literal> page is predictable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:783
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"&#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"&#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;You won!&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;You won!&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    Yes, the answer was &lt;h:outputText value=\"#{numberGuess.currentGuess}"
+"\" /&gt;.\n"
+"    It took you &lt;h:outputText value=\"#{numberGuess.guessCount}\" /&gt; "
+"guesses.\n"
+"    Would you like to &lt;a href=\"numberGuess.seam\"&gt;play again&lt;/"
+"a&gt;?\n"
+"  &lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:784
+#, no-c-format
+msgid ""
+"As is <literal>lose.jsp</literal> (which I can't be bothered copy/pasting). "
+"Finally, the JavaBean Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:792
+#, no-c-format
+msgid ""
+"@Name(\"numberGuess\")\n"
+"@Scope(ScopeType.CONVERSATION)\n"
+"public class NumberGuess {\n"
+"   \n"
+"   private int randomNumber;\n"
+"   private Integer currentGuess;\n"
+"   private int biggest;\n"
+"   private int smallest;\n"
+"   private int guessCount;\n"
+"   private int maxGuesses;\n"
+"   \n"
+"   @Create \n"
+"   @Begin(pageflow=\"numberGuess\")\n"
+"   public void begin()\n"
+"   {\n"
+"      randomNumber = new Random().nextInt(100);\n"
+"      guessCount = 0;\n"
+"      biggest = 100;\n"
+"      smallest = 1;\n"
+"   }\n"
+"   \n"
+"   public void setCurrentGuess(Integer guess)\n"
+"   {\n"
+"      this.currentGuess = guess;\n"
+"   }\n"
+"   \n"
+"   public Integer getCurrentGuess()\n"
+"   {\n"
+"      return currentGuess;\n"
+"   }\n"
+"   \n"
+"   public void guess()\n"
+"   {\n"
+"      if (currentGuess&gt;randomNumber)\n"
+"      {\n"
+"         biggest = currentGuess - 1;\n"
+"      }\n"
+"      if (currentGuess&lt;randomNumber)\n"
+"      {\n"
+"         smallest = currentGuess + 1;\n"
+"      }\n"
+"      guessCount ++;\n"
+"   }\n"
+"   \n"
+"   public boolean isCorrectGuess()\n"
+"   {\n"
+"      return currentGuess==randomNumber;\n"
+"   }\n"
+"   \n"
+"   public int getBiggest()\n"
+"   {\n"
+"      return biggest;\n"
+"   }\n"
+"   \n"
+"   public int getSmallest()\n"
+"   {\n"
+"      return smallest;\n"
+"   }\n"
+"   \n"
+"   public int getGuessCount()\n"
+"   {\n"
+"      return guessCount;\n"
+"   }\n"
+"   \n"
+"   public boolean isLastGuess()\n"
+"   {\n"
+"      return guessCount==maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getRemainingGuesses() {\n"
+"      return maxGuesses-guessCount;\n"
+"   }\n"
+"\n"
+"   public void setMaxGuesses(int maxGuesses) {\n"
+"      this.maxGuesses = maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getMaxGuesses() {\n"
+"      return maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getRandomNumber() {\n"
+"      return randomNumber;\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:795
+#, no-c-format
+msgid ""
+"The first time a JSP page asks for a <literal>numberGuess</literal> "
+"component, Seam will create a new one for it, and the <literal>@Create</"
+"literal> method will be invoked, allowing the component to initialize itself."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:800
+#, no-c-format
+msgid ""
+"The <literal>@Begin</literal> annotation starts a Seam "
+"<emphasis>conversation</emphasis> (much more about that later), and "
+"specifies the pageflow definition to use for the conversation's page flow."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:807
+#, no-c-format
+msgid ""
+"As you can see, this Seam component is pure business logic! It doesn't need "
+"to know anything at all about the user interaction flow. This makes the "
+"component potentially more reuseable."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:822
+#, no-c-format
+msgid "A complete Seam application: the Hotel Booking example"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:824
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:825
+#, no-c-format
+msgid ""
+"The booking application is a complete hotel room reservation system "
+"incorporating the following features:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:830
+#, no-c-format
+msgid "User registration"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:835
+#, no-c-format
+msgid "Login"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:840
+#, no-c-format
+msgid "Logout"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:845
+#, no-c-format
+msgid "Set password"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:850
+#, no-c-format
+msgid "Hotel search"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:855
+#, no-c-format
+msgid "Hotel selection"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:860
+#, no-c-format
+msgid "Room reservation"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:865
+#, no-c-format
+msgid "Reservation confirmation"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:870
+#, no-c-format
+msgid "Existing reservation list"
+msgstr ""
+
+#. Tag: screeninfo
+#: Tutorial.xml:875
+#, no-c-format
+msgid "Booking example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:883
+#, no-c-format
+msgid ""
+"The booking application uses JSF, EJB 3.0 and Seam, together with Facelets "
+"for the view. There is also a port of this application to JSF, Facelets, "
+"Seam, JavaBeans and Hibernate3."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:886
+#, no-c-format
+msgid ""
+"One of the things you'll notice if you play with this application for long "
+"enough is that it is extremely <emphasis>robust</emphasis>. You can play "
+"with back buttons and browser refresh and opening multiple windows and "
+"entering nonsensical data as much as you like and you will find it very "
+"difficult to make the application crash. You might think that we spent weeks "
+"testing and fixing bugs to achive this. Actually, this is not the case. Seam "
+"was designed to make it very straightforward to build robust web "
+"applications and a lot of robustness that you are probably used to having to "
+"code yourself comes naturally and automatically with Seam."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:889
+#, no-c-format
+msgid ""
+"As you browse the sourcecode of the example application, and learn how the "
+"application works, observe how the declarative state management and "
+"integrated validation has been used to achieve this robustness."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:895
+#, no-c-format
+msgid "Overview of the booking example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:896
+#, no-c-format
+msgid ""
+"The project structure is identical to the previous one, to install and "
+"deploy this application, please refer to <xref linkend=\"Seam_Tutorial-"
+"Try_the_examples\"/>. Once you've successfully started the application, you "
+"can access it by pointing your browser to <ulink url=\"http://localhost:8080/"
+"seam-booking/\"><literal>http://localhost:8080/seam-booking/</literal></"
+"ulink>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:899
+#, no-c-format
+msgid ""
+"Just ten classes (plus six session beans local interfaces and 1 annotation "
+"interface) where used to implement this application. Six session bean action "
+"listeners contain all the business logic for the listed features."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:904
+#, no-c-format
+msgid ""
+"<literal>BookingListAction</literal> retrieves existing bookings for the "
+"currently logged in user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:907
+#, no-c-format
+msgid ""
+"<literal>ChangePasswordAction</literal> updates the password of the "
+"currently logged in user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:910
+#, no-c-format
+msgid ""
+"<literal>HotelBookingAction</literal> implements the core functionality of "
+"the application: hotel room searching, selection, booking and booking "
+"confirmation. This functionality is implemented as a <emphasis>conversation</"
+"emphasis>, so this is the most interesting class in the application."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:913
+#, no-c-format
+msgid ""
+"<literal>LoginAction</literal> validates the login details and retrieves the "
+"logged in user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:916
+#, no-c-format
+msgid "<literal>LogoutAction</literal> ends the login session."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:919
+#, no-c-format
+msgid "<literal>RegisterAction</literal> registers a new system user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:922
+#, no-c-format
+msgid "Three entity beans implement the application's persistent domain model."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:927
+#, no-c-format
+msgid "<literal>Hotel</literal> is an entity bean that represent a hotel"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:930
+#, no-c-format
+msgid ""
+"<literal>Booking</literal> is an entity bean that represents an existing "
+"booking"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:933
+#, no-c-format
+msgid ""
+"<literal>User</literal> is an entity bean to represents a user who can make "
+"hotel bookings"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:936
+#, no-c-format
+msgid ""
+"Finally, the <literal>LoggedIn</literal> annotation and the "
+"<literal>LoggedInInterceptor</literal> are used to protect actions that "
+"require a logged in user."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:942
+#, no-c-format
+msgid "Understanding Seam conversations"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:943
+#, no-c-format
+msgid ""
+"We encourage you browse the sourcecode at your pleasure. In this tutorial "
+"we'll concentrate upon one particular piece of functionality: hotel search, "
+"selection, booking and confirmation. From the point of view of the user, "
+"everything from selecting a hotel to confirming a booking is one continuous "
+"unit of work, a <emphasis>conversation</emphasis>. Searching, however, is "
+"<emphasis>not</emphasis> part of the conversation. The user can select "
+"multiple hotels from the same search results page, in different browser tabs."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:946
+#, no-c-format
+msgid ""
+"Most web application architectures have no first class construct to "
+"represent a conversation. This causes enormous problems managing state "
+"associated with the conversation. Usually, Java web applications use a "
+"combination of two techniques: first, some state is thrown into the "
+"<literal>HttpSession</literal>; second, persistable state is flushed to the "
+"database after every request, and reconstructed from the database at the "
+"beginning of each new request."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:949
+#, no-c-format
+msgid ""
+"Since the database is the least scalable tier, this often results in an "
+"utterly unacceptable lack of scalability. Added latency is also a problem, "
+"due to the extra traffic to and from the database on every request. To "
+"reduce this redundant traffic, Java applications often introduce a data "
+"(second-level) cache that keeps commonly accessed data between requests. "
+"This cache is necessarily inefficient, because invalidation is based upon an "
+"LRU policy instead of being based upon when the user has finished working "
+"with the data. Furthermore, because the cache is shared between many "
+"concurrent transactions, we've introduced a whole raft of problem's "
+"associated with keeping the cached state consistent with the database."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:952
+#, no-c-format
+msgid ""
+"Now consider the state held in the <literal>HttpSession</literal>. By very "
+"careful programming, we might be able to control the size of the session "
+"data. This is a lot more difficult than it sounds, since web browsers permit "
+"ad hoc non-linear navigation. But suppose we suddenly discover a system "
+"requirement that says that a user is allowed to have <emphasis>mutiple "
+"concurrent conversations</emphasis>, halfway through the development of the "
+"system (this has happened to me). Developing mechanisms to isolate session "
+"state associated with different concurrent conversations, and incorporating "
+"failsafes to ensure that conversation state is destroyed when the user "
+"aborts one of the conversations by closing a browser window or tab is not "
+"for the faint hearted (I've implemented this stuff twice so far, once for a "
+"client application, once for Seam, but I'm famously psychotic)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:955
+#, no-c-format
+msgid "Now there is a better way."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:958
+#, no-c-format
+msgid ""
+"Seam introduces the <emphasis>conversation context</emphasis> as a first "
+"class construct. You can safely keep conversational state in this context, "
+"and be assured that it will have a well-defined lifecycle. Even better, you "
+"won't need to be continually pushing data back and forth between the "
+"application server and the database, since the conversation context is a "
+"natural cache of data that the user is currently working with."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:961
+#, no-c-format
+msgid ""
+"Usually, the components we keep in the conversation context are stateful "
+"session beans. (We can also keep entity beans and JavaBeans in the "
+"conversation context.) There is an ancient canard in the Java community that "
+"stateful session beans are a scalability killer. This may have been true in "
+"1998 when WebFoobar 1.0 was released. It is no longer true today. "
+"Application servers like JBoss 4.0 have extremely sophisticated mechanisms "
+"for stateful session bean state replication. (For example, the JBoss EJB3 "
+"container performs fine-grained replication, replicating only those bean "
+"attribute values which actually changed.) Note that all the traditional "
+"technical arguments for why stateful beans are inefficient apply equally to "
+"the <literal>HttpSession</literal>, so the practice of shifting state from "
+"business tier stateful session bean components to the web session to try and "
+"improve performance is unbelievably misguided. It is certainly possible to "
+"write unscalable applications using stateful session beans, by using "
+"stateful beans incorrectly, or by using them for the wrong thing. But that "
+"doesn't mean you should <emphasis>never</emphasis> use them. Anyway, Seam "
+"guides you toward a safe usage model. Welcome to 2005."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:964
+#, no-c-format
+msgid "OK, I'll stop ranting now, and get back to the tutorial."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:967
+#, no-c-format
+msgid ""
+"The booking example application shows how stateful components with different "
+"scopes can collaborate together to achieve complex behaviors. The main page "
+"of the booking application allows the user to search for hotels. The search "
+"results are kept in the Seam session scope. When the user navigates to one "
+"of these hotels, a conversation begins, and a conversation scoped component "
+"calls back to the session scoped component to retrieve the selected hotel."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:970
+#, no-c-format
+msgid ""
+"The booking example also demonstrates the use of Ajax4JSF to implement rich "
+"client behavior without the use of handwritten JavaScript."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:973
+#, no-c-format
+msgid ""
+"The search functionality is implemented using a session-scope stateful "
+"session bean, similar to the one we saw in the message list example above."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:983
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"hotelSearch\")\n"
+"@Scope(ScopeType.SESSION)\n"
+"@LoggedIn\n"
+"public class HotelSearchingAction implements HotelSearching\n"
+"{\n"
+"   \n"
+"   @PersistenceContext\n"
+"   private EntityManager em;\n"
+"   \n"
+"   private String searchString;\n"
+"   private int pageSize = 10;\n"
+"   private int page;\n"
+"   \n"
+"   @DataModel\n"
+"   private List&lt;Hotel&gt; hotels;\n"
+"   \n"
+"   public String find()\n"
+"   {\n"
+"      page = 0;\n"
+"      queryHotels();   \n"
+"      return \"main\";\n"
+"   }\n"
+"\n"
+"   public String nextPage()\n"
+"   {\n"
+"      page++;\n"
+"      queryHotels();\n"
+"      return \"main\";\n"
+"   }\n"
+"      \n"
+"   private void queryHotels()\n"
+"   {\n"
+"      String searchPattern = searchString==null ? \"&#37;\" : '&#37;' + \n"
+"          searchString.toLowerCase().replace('*', '&#37;') + '&#37;';\n"
+"      hotels = em.createQuery(\"select h from Hotel h where lower(h.name) "
+"like\n"
+"          :search or lower(h.city) like :search \n"
+"          or lower(h.zip) like :search or lower(h.address) like :search\")\n"
+"            .setParameter(\"search\", searchPattern)\n"
+"            .setMaxResults(pageSize)\n"
+"            .setFirstResult( page * pageSize )\n"
+"            .getResultList();\n"
+"   }\n"
+"   \n"
+"   public boolean isNextPageAvailable()\n"
+"   {\n"
+"      return hotels!=null &amp;&amp; hotels.size()==pageSize;\n"
+"   }\n"
+"   \n"
+"   public int getPageSize() {\n"
+"      return pageSize;\n"
+"   }\n"
+"\n"
+"   public void setPageSize(int pageSize) {\n"
+"      this.pageSize = pageSize;\n"
+"   }\n"
+"\n"
+"   public String getSearchString()\n"
+"   {\n"
+"      return searchString;\n"
+"   }\n"
+"\n"
+"   public void setSearchString(String searchString)\n"
+"   {\n"
+"      this.searchString = searchString;\n"
+"   }\n"
+"   \n"
+"   @Destroy @Remove\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:986
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Stateful</literal> annotation identifies this "
+"class as a stateful session bean. Stateful session beans are scoped to the "
+"conversation context by default."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:991
+#, no-c-format
+msgid ""
+"The <literal>@LoggedIn</literal> annotation applies a custom Seam "
+"interceptor to the component. This works because <literal>@LoggedIn</"
+"literal> is marked with an <literal>@Interceptor</literal> meta-annotation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:996
+#, no-c-format
+msgid ""
+"The <link linkend=\"datamodel-annotation\"><literal>@DataModel</literal></"
+"link> annotation exposes a <literal>List</literal> as a JSF "
+"<literal>ListDataModel</literal>. This makes it easy to implement clickable "
+"lists for search screens. In this case, the list of hotels is exposed to the "
+"page as a <literal>ListDataModel</literal> in the conversation variable "
+"named <literal>hotels</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1001
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Remove</literal> annotation specifies that a "
+"stateful session bean should be removed and its state destroyed after "
+"invocation of the annotated method. In Seam, all stateful session beans "
+"should define a method marked <literal>@Destroy @Remove</literal>. This is "
+"the EJB remove method that will be called when Seam destroys the session "
+"context. Actually, the <link linkend=\"destroy-annotation"
+"\"><literal>@Destroy</literal></link> annotation is of more general "
+"usefulness, since it can be used for any kind of cleanup that should happen "
+"when any Seam context ends. If you don't have an <literal>@Destroy @Remove</"
+"literal> method, state will leak and you will suffer performance problems."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1008
+#, no-c-format
+msgid ""
+"The main page of the application is a Facelets page. Let's look at the "
+"fragment which relates to searching for hotels:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1018
+#, no-c-format
+msgid ""
+"&lt;div class=\"section\"&gt;\n"
+"&lt;h:form&gt;\n"
+"  \n"
+"  &lt;span class=\"errors\"&gt;\n"
+"    &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"  &lt;/span&gt;\n"
+"    \n"
+"  &lt;h1&gt;Search Hotels&lt;/h1&gt;\n"
+"  &lt;fieldset&gt; \n"
+"     &lt;h:inputText value=\"#{hotelSearch.searchString}\" style=\"width: "
+"165px;\"&gt;\n"
+"        &lt;a:support event=\"onkeyup\" actionListener=\"#{hotelSearch.find}"
+"\" \n"
+"                   reRender=\"searchResults\" /&gt;\n"
+"     &lt;/h:inputText&gt;\n"
+"     &amp;#160;\n"
+"     &lt;a:commandButton value=\"Find Hotels\" action=\"#{hotelSearch.find}"
+"\" \n"
+"                      styleClass=\"button\" reRender=\"searchResults\"/&gt;\n"
+"     &amp;#160;\n"
+"     &lt;a:status&gt;\n"
+"        &lt;f:facet name=\"start\"&gt;\n"
+"           &lt;h:graphicImage value=\"/img/spinner.gif\"/&gt;\n"
+"        &lt;/f:facet&gt;\n"
+"     &lt;/a:status&gt;\n"
+"     &lt;br/&gt;\n"
+"     &lt;h:outputLabel for=\"pageSize\"&gt;Maximum results:&lt;/h:"
+"outputLabel&gt;&amp;#160;\n"
+"     &lt;h:selectOneMenu value=\"#{hotelSearch.pageSize}\" id=\"pageSize"
+"\"&gt;\n"
+"        &lt;f:selectItem itemLabel=\"5\" itemValue=\"5\"/&gt;\n"
+"        &lt;f:selectItem itemLabel=\"10\" itemValue=\"10\"/&gt;\n"
+"        &lt;f:selectItem itemLabel=\"20\" itemValue=\"20\"/&gt;\n"
+"     &lt;/h:selectOneMenu&gt;\n"
+"  &lt;/fieldset&gt;\n"
+"    \n"
+"&lt;/h:form&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;a:outputPanel id=\"searchResults\"&gt;\n"
+"  &lt;div class=\"section\"&gt;\n"
+"  &lt;h:outputText value=\"No Hotels Found\" \n"
+"                rendered=\"#{hotels != null and hotels.rowCount==0}\"/&gt;\n"
+"  &lt;h:dataTable value=\"#{hotels}\" var=\"hot\" rendered=\"#{hotels."
+"rowCount&gt;0}\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Name&lt;/f:facet&gt;\n"
+"      #{hot.name}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Address&lt;/f:facet&gt;\n"
+"      #{hot.address}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;City, State&lt;/f:facet&gt;\n"
+"      #{hot.city}, #{hot.state}, #{hot.country}\n"
+"    &lt;/h:column&gt; \n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Zip&lt;/f:facet&gt;\n"
+"      #{hot.zip}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"      &lt;s:link value=\"View Hotel\" action=\"#{hotelBooking.selectHotel"
+"(hot)}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"  &lt;/h:dataTable&gt;\n"
+"  &lt;s:link value=\"More results\" action=\"#{hotelSearch.nextPage}\" \n"
+"          rendered=\"#{hotelSearch.nextPageAvailable}\"/&gt;\n"
+"  &lt;/div&gt;\n"
+"&lt;/a:outputPanel&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1021
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:support&gt;</literal> tag allows a JSF action "
+"event listener to be called by asynchronous <literal>XMLHttpRequest</"
+"literal> when a JavaScript event like <literal>onkeyup</literal> occurs. "
+"Even better, the <literal>reRender</literal> attribute lets us render a "
+"fragment of the JSF page and perform a partial page update when the "
+"asynchronous response is received."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1026
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:status&gt;</literal> tag lets us display a "
+"cheesy annimated image while we wait for asynchronous requests to return."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1031
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:outputPanel&gt;</literal> tag defines a region "
+"of the page which can be re-rendered by an asynchronous request."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1036
+#, no-c-format
+msgid ""
+"The Seam <literal>&lt;s:link&gt;</literal> tag lets us attach a JSF action "
+"listener to an ordinary (non-JavaScript) HTML link. The advantage of this "
+"over the standard JSF <literal>&lt;h:commandLink&gt;</literal> is that it "
+"preserves the operation of \"open in new window\" and \"open in new tab\". "
+"Also notice that we use a method binding with a parameter: <literal>#"
+"{hotelBooking.selectHotel(hot)}</literal>. This is not possible in the "
+"standard Unified EL, but Seam provides an extension to the EL that lets you "
+"use parameters on any method binding expression."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1043
+#, no-c-format
+msgid ""
+"This page displays the search results dynamically as we type, and lets us "
+"choose a hotel and pass it to the <literal>selectHotel()</literal> method of "
+"the <literal>HotelBookingAction</literal>, which is where the "
+"<emphasis>really</emphasis> interesting stuff is going to happen."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1046
+#, no-c-format
+msgid ""
+"Now lets see how the booking example application uses a conversation-scoped "
+"stateful session bean to achieve a natural cache of persistent data related "
+"to the conversation. The following code example is pretty long. But if you "
+"think of it as a list of scripted actions that implement the various steps "
+"of the conversation, it's understandable. Read the class from top to bottom, "
+"as if it were a story."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1057
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"hotelBooking\")\n"
+"@LoggedIn\n"
+"public class HotelBookingAction implements HotelBooking\n"
+"{\n"
+"   \n"
+"   @PersistenceContext(type=EXTENDED)\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @In \n"
+"   private User user;\n"
+"   \n"
+"   @In(required=false) @Out\n"
+"   private Hotel hotel;\n"
+"   \n"
+"   @In(required=false) \n"
+"   @Out(required=false)\n"
+"   private Booking booking;\n"
+"     \n"
+"   @In\n"
+"   private FacesMessages facesMessages;\n"
+"      \n"
+"   @In\n"
+"   private Events events;\n"
+"   \n"
+"   @Logger \n"
+"   private Log log;\n"
+"   \n"
+"   @Begin\n"
+"   public String selectHotel(Hotel selectedHotel)\n"
+"   {\n"
+"      hotel = em.merge(selectedHotel);\n"
+"      return \"hotel\";\n"
+"   }\n"
+"   \n"
+"   public String bookHotel()\n"
+"   {      \n"
+"      booking = new Booking(hotel, user);\n"
+"      Calendar calendar = Calendar.getInstance();\n"
+"      booking.setCheckinDate( calendar.getTime() );\n"
+"      calendar.add(Calendar.DAY_OF_MONTH, 1);\n"
+"      booking.setCheckoutDate( calendar.getTime() );\n"
+"      \n"
+"      return \"book\";\n"
+"   }\n"
+"\n"
+"   public String setBookingDetails()\n"
+"   {\n"
+"      if (booking==null || hotel==null) return \"main\";\n"
+"      if ( !booking.getCheckinDate().before( booking.getCheckoutDate() ) )\n"
+"      {\n"
+"         facesMessages.add(\"Check out date must be later than check in date"
+"\");\n"
+"         return null;\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return \"confirm\";\n"
+"      }\n"
+"   }\n"
+"\n"
+"   @End\n"
+"   public String confirm()\n"
+"   {\n"
+"      if (booking==null || hotel==null) return \"main\";\n"
+"      em.persist(booking);\n"
+"      facesMessages.add\n"
+"          (\"Thank you, #{user.name}, your confimation number for #{hotel."
+"name} is #{booking.id}\");\n"
+"      log.info(\"New booking: #{booking.id} for #{user.username}\");\n"
+"      events.raiseEvent(\"bookingConfirmed\");\n"
+"      return \"confirmed\";\n"
+"   }\n"
+"   \n"
+"   @End\n"
+"   public String cancel()\n"
+"   {\n"
+"      return \"main\";\n"
+"   }\n"
+"   \n"
+"   @Destroy @Remove\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1060
+#, no-c-format
+msgid ""
+"This bean uses an EJB3 <emphasis>extended persistence context</emphasis>, so "
+"that any entity instances remain managed for the whole lifecycle of the "
+"stateful session bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1065
+#, no-c-format
+msgid ""
+"The <link linkend=\"out-annotation\"><literal>@Out</literal></link> "
+"annotation declares that an attribute value is <emphasis>outjected</"
+"emphasis> to a context variable after method invocations. In this case, the "
+"context variable named <literal>hotel</literal> will be set to the value of "
+"the <literal>hotel</literal> instance variable after every action listener "
+"invocation completes."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1070
+#, no-c-format
+msgid ""
+"The <link linkend=\"begin-annotation\"><literal>@Begin</literal></link> "
+"annotation specifies that the annotated method begins a <emphasis>long-"
+"running conversation</emphasis>, so the current conversation context will "
+"not be destroyed at the end of the request. Instead, it will be reassociated "
+"with every request from the current window, and destroyed either by timeout "
+"due to conversation inactivity or invocation of a matching <literal>@End</"
+"literal> method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1075
+#, no-c-format
+msgid ""
+"The <link linkend=\"end-annotation\"><literal>@End</literal></link> "
+"annotation specifies that the annotated method ends the current long-running "
+"conversation, so the current conversation context will be destroyed at the "
+"end of the request."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1080
+#, no-c-format
+msgid ""
+"This EJB remove method will be called when Seam destroys the conversation "
+"context. Don't ever forget to define this method!"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1087
+#, no-c-format
+msgid ""
+"<literal>HotelBookingAction</literal> contains all the action listener "
+"methods that implement selection, booking and booking confirmation, and "
+"holds state related to this work in its instance variables. We think you'll "
+"agree that this code is much cleaner and simpler than getting and setting "
+"<literal>HttpSession</literal> attributes."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1090
+#, no-c-format
+msgid ""
+"Even better, a user can have multiple isolated conversations per login "
+"session. Try it! Log in, run a search, and navigate to different hotel pages "
+"in multiple browser tabs. You'll be able to work on creating two different "
+"hotel reservations at the same time. If you leave any one conversation "
+"inactive for long enough, Seam will eventually time out that conversation "
+"and destroy its state. If, after ending a conversation, you backbutton to a "
+"page of that conversation and try to perform an action, Seam will detect "
+"that the conversation was already ended, and redirect you to the search page."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1096
+#, no-c-format
+msgid "The Seam UI control library"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1097
+#, no-c-format
+msgid ""
+"If you check inside the WAR file for the booking application, you'll find "
+"<literal>seam-ui.jar</literal> in the <literal>WEB-INF/lib</literal> "
+"directory. This package contains a number of JSF custom controls that "
+"integrate with Seam. The booking application uses the <literal>&lt;s:link&gt;"
+"</literal> control for navigation from the search screen to the hotel page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1100
+#, no-c-format
+msgid ""
+"&lt;s:link value=\"View Hotel\" action=\"#{hotelBooking.selectHotel}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1101
+#, no-c-format
+msgid ""
+"The use of <literal>&lt;s:link&gt;</literal> here allows us to attach an "
+"action listener to a HTML link without breaking the browser's \"open in new "
+"window\" feature. The standard JSF <literal>&lt;h:commandLink&gt;</literal> "
+"does not work with \"open in new window\". We'll see later that <literal>&lt;"
+"s:link&gt;</literal> also offers a number of other useful features, "
+"including conversation propagation rules."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1104
+#, no-c-format
+msgid ""
+"The booking application uses some other Seam and Ajax4JSF controls, "
+"especially on the <literal>/book.xhtml</literal> page. We won't get into the "
+"details of those controls here, but if you want to understand this code, "
+"please refer to the chapter covering Seam's functionality for JSF form "
+"validation."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1110
+#, no-c-format
+msgid "The Seam Debug Page"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1111
+#, no-c-format
+msgid ""
+"The WAR also includes <literal>seam-debug.jar</literal>. If this jar is "
+"deployed in <literal>WEB-INF/lib</literal>, along with the Facelets, and if "
+"you set the following Seam property in <literal>web.xml</literal> or "
+"<literal>seam.properties</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1114
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;org.jboss.seam.core.init.debug&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;true&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1115
+#, no-c-format
+msgid ""
+"Then the Seam debug page will be available. This page lets you browse and "
+"inspect the Seam components in any of the Seam contexts associated with your "
+"current login session. Just point your browser at <ulink url=\"http://"
+"localhost:8080/seam-booking/debug.seam\"><literal>http://localhost:8080/seam-"
+"booking/debug.seam</literal></ulink>."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1131
+#, no-c-format
+msgid "A complete application featuring Seam and jBPM: the DVD Store example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1132
+#, no-c-format
+msgid ""
+"The DVD Store demo application shows the practical usage of jBPM for both "
+"task management and pageflow."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1135
+#, no-c-format
+msgid ""
+"The user screens take advantage of a jPDL pageflow to implement searching "
+"and shopping cart functionality."
+msgstr ""
+
+#. Tag: screeninfo
+#: Tutorial.xml:1138 Tutorial.xml:1149 Tutorial.xml:1170
+#, no-c-format
+msgid "DVD Store example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1146
+#, no-c-format
+msgid ""
+"The administration screens take use jBPM to manage the approval and shipping "
+"cycle for orders. The business process may even be changed dynamically, by "
+"selecting a different process definition!"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1160
+#, no-c-format
+msgid "Look in the <literal>dvdstore</literal> directory."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1166
+#, no-c-format
+msgid ""
+"A complete application featuring Seam workspace management: the Issue "
+"Tracker example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1167
+#, no-c-format
+msgid ""
+"The Issue Tracker demo shows off Seam's workspace management functionality: "
+"the conversation switcher, conversation list and breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1181
+#, no-c-format
+msgid "Look in the <literal>issues</literal> directory."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1187
+#, no-c-format
+msgid "An example of Seam with Hibernate: the Hibernate Booking example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1188
+#, no-c-format
+msgid ""
+"The Hibernate Booking demo is a straight port of the Booking demo to an "
+"alternative architecture that uses Hibernate for persistence and JavaBeans "
+"instead of session beans."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1194
+#, no-c-format
+msgid "Look in the <literal>hibernate</literal> directory."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1200
+#, no-c-format
+msgid "A RESTful Seam application: the Blog example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1201
+#, no-c-format
+msgid ""
+"Seam makes it very easy to implement applications which keep state on the "
+"server-side. However, server-side state is not always appropriate, "
+"especially in for functionality that serves up <emphasis>content</emphasis>. "
+"For this kind of problem we often need to let the user bookmark pages and "
+"have a relatively stateless server, so that any page can be accessed at any "
+"time, via the bookmark. The Blog example shows how to a implement RESTful "
+"application using Seam. Every page of the application can be bookmarked, "
+"including the search results page."
+msgstr ""
+
+#. Tag: screeninfo
+#: Tutorial.xml:1204
+#, no-c-format
+msgid "Blog example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1212
+#, no-c-format
+msgid ""
+"The Blog example demonstrates the use of \"pull\"-style MVC, where instead "
+"of using action listener methods to retrieve data and prepare the data for "
+"the view, the view pulls data from components as it is being rendered."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1216
+#, no-c-format
+msgid "Using \"pull\"-style MVC"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1217
+#, no-c-format
+msgid ""
+"This snippet from the <literal>index.xhtml</literal> facelets page displays "
+"a list of recent blog entries:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1220
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{blog.recentBlogEntries}\" var=\"blogEntry\" rows="
+"\"3\"&gt;\n"
+"   &lt;h:column&gt;\n"
+"      &lt;div class=\"blogEntry\"&gt;\n"
+"         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"         &lt;div&gt;\n"
+"            &lt;h:outputText escape=\"false\" \n"
+"                  value=\"#{blogEntry.excerpt==null ? blogEntry.body : "
+"blogEntry.excerpt}\"/&gt;\n"
+"         &lt;/div&gt;\n"
+"         &lt;p&gt;\n"
+"            &lt;h:outputLink value=\"entry.seam\" rendered=\"#{blogEntry."
+"excerpt!=null}\"&gt;\n"
+"               &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/"
+"&gt;\n"
+"               Read more...\n"
+"            &lt;/h:outputLink&gt;\n"
+"         &lt;/p&gt;\n"
+"         &lt;p&gt;\n"
+"            [Posted on \n"
+"            &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"               &lt;f:convertDateTime timeZone=\"#{blog.timeZone}\" locale=\"#"
+"{blog.locale}\" \n"
+"                   type=\"both\"/&gt;\n"
+"            &lt;/h:outputText&gt;]\n"
+"            &amp;#160;\n"
+"            &lt;h:outputLink value=\"entry.seam\"&gt;[Link]\n"
+"               &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/"
+"&gt;\n"
+"            &lt;/h:outputLink&gt;\n"
+"         &lt;/p&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1221
+#, no-c-format
+msgid ""
+"If we navigate to this page from a bookmark, how does the data used by the "
+"<literal>&lt;h:dataTable&gt;</literal> actually get initialized? Well, what "
+"happens is that the <literal>Blog</literal> is retrieved lazily&mdash;"
+"\"pulled\"&mdash;when needed, by a Seam component named <literal>blog</"
+"literal>. This is the opposite flow of control to what is usual in "
+"traditional web action-based frameworks like Struts."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1229
+#, no-c-format
+msgid ""
+"@Name(\"blog\")\n"
+"@Scope(ScopeType.STATELESS)\n"
+"public class BlogService \n"
+"{\n"
+"   \n"
+"   @In\n"
+"   private EntityManager entityManager;\n"
+"  \n"
+"   @Unwrap\n"
+"   public Blog getBlog()\n"
+"   {\n"
+"      return (Blog) entityManager.createQuery(\"from Blog b left join fetch "
+"b.blogEntries\")\n"
+"            .setHint(\"org.hibernate.cacheable\", true)\n"
+"            .getSingleResult();\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1232
+#, no-c-format
+msgid ""
+"This component uses a <emphasis>seam-managed persistence context</emphasis>. "
+"Unlike the other examples we've seen, this persistence context is managed by "
+"Seam, instead of by the EJB3 container. The persistence context spans the "
+"entire web request, allowing us to avoid any exceptions that occur when "
+"accessing unfetched associations in the view."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1237
+#, no-c-format
+msgid ""
+"The <literal>@Unwrap</literal> annotation tells Seam to provide the return "
+"value of the method&mdash;the <literal>Blog</literal>&mdash;instead of the "
+"actual <literal>BlogService</literal> component to clients. This is the Seam "
+"<emphasis>manager component pattern</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1244
+#, no-c-format
+msgid ""
+"This is good so far, but what about bookmarking the result of form "
+"submissions, such as a search results page?"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1250
+#, no-c-format
+msgid "Bookmarkable search results page"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1251
+#, no-c-format
+msgid ""
+"The blog example has a tiny form in the top right of each page that allows "
+"the user to search for blog entries. This is defined in a file, "
+"<literal>menu.xhtml</literal>, included by the facelets template, "
+"<literal>template.xhtml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1254
+#, no-c-format
+msgid ""
+"&lt;div id=\"search\"&gt;\n"
+"   &lt;h:form&gt;\n"
+"      &lt;h:inputText value=\"#{searchAction.searchPattern}\"/&gt;\n"
+"      &lt;h:commandButton value=\"Search\" action=\"/search.xhtml\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1255
+#, no-c-format
+msgid ""
+"To implement a bookmarkable search results page, we need to perform a "
+"browser redirect after processing the search form submission. Because we "
+"used the JSF view id as the action outcome, Seam automatically redirects to "
+"the view id when the form is submitted. Alternatively, we could have defined "
+"a navigation rule like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1258
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"   &lt;navigation-case&gt;\n"
+"      &lt;from-outcome&gt;searchResults&lt;/from-outcome&gt;\n"
+"      &lt;to-view-id&gt;/search.xhtml&lt;/to-view-id&gt;\n"
+"      &lt;redirect/&gt;\n"
+"   &lt;/navigation-case&gt;\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1259
+#, no-c-format
+msgid "Then the form would have looked like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1262
+#, no-c-format
+msgid ""
+"&lt;div id=\"search\"&gt;\n"
+"   &lt;h:form&gt;\n"
+"      &lt;h:inputText value=\"#{searchAction.searchPattern}\"/&gt;\n"
+"      &lt;h:commandButton value=\"Search\" action=\"searchResults\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1263
+#, no-c-format
+msgid ""
+"But when we redirect, we need to include the values submitted with the form "
+"as request parameters, to get a bookmarkable URL like <literal>http://"
+"localhost:8080/seam-blog/search.seam?searchPattern=seam</literal>. JSF does "
+"not provide an easy way to do this, but Seam does. We use a Seam "
+"<emphasis>page parameter</emphasis>, defined in <literal>WEB-INF/pages.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1266
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   &lt;page view-id=\"/search.xhtml\"&gt;\n"
+"      &lt;param name=\"searchPattern\" value=\"#{searchService.searchPattern}"
+"\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1267
+#, no-c-format
+msgid ""
+"This tells Seam to include the value of <literal>#{searchService."
+"searchPattern}</literal> as a request parameter named "
+"<literal>searchPattern</literal> when redirecting to the page, and then re-"
+"apply the value of that parameter to the model before rendering the page."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1270
+#, no-c-format
+msgid "The redirect takes us to the <literal>search.xhtml</literal> page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1273
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{searchResults}\" var=\"blogEntry\"&gt;\n"
+"   &lt;h:column&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:outputLink value=\"entry.seam\"&gt;\n"
+"            &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"            #{blogEntry.title}\n"
+"         &lt;/h:outputLink&gt;\n"
+"         posted on \n"
+"         &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"            &lt;f:convertDateTime timeZone=\"#{blog.timeZone}\" locale=\"#"
+"{blog.locale}\" type=\"both\"/&gt;\n"
+"         &lt;/h:outputText&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1274
+#, no-c-format
+msgid ""
+"Which again uses \"pull\"-style MVC to retrieve the actual search results:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1277
+#, no-c-format
+msgid ""
+"@Name(\"searchService\")\n"
+"public class SearchService \n"
+"{\n"
+"   \n"
+"   @In\n"
+"   private EntityManager entityManager;\n"
+"   \n"
+"   private String searchPattern;\n"
+"   \n"
+"   @Factory(\"searchResults\")\n"
+"   public List&lt;BlogEntry&gt; getSearchResults()\n"
+"   {\n"
+"      if (searchPattern==null)\n"
+"      {\n"
+"         return null;\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return entityManager.createQuery(\"select be from BlogEntry be "
+"where lower(be.title)\n"
+"             like :searchPattern or lower(be.body) like :searchPattern \n"
+"             order by be.date desc\")\n"
+"               .setParameter( \"searchPattern\", getSqlSearchPattern() )\n"
+"               .setMaxResults(100)\n"
+"               .getResultList();\n"
+"      }\n"
+"   }\n"
+"\n"
+"   private String getSqlSearchPattern()\n"
+"   {\n"
+"      return searchPattern==null ? \"\" : '&#37;' + \n"
+"          searchPattern.toLowerCase().replace('*', '&#37;').replace('?', "
+"'_') + '&#37;';\n"
+"   }\n"
+"\n"
+"   public String getSearchPattern()\n"
+"   {\n"
+"      return searchPattern;\n"
+"   }\n"
+"\n"
+"   public void setSearchPattern(String searchPattern)\n"
+"   {\n"
+"      this.searchPattern = searchPattern;\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1282
+#, no-c-format
+msgid "Using \"push\"-style MVC in a RESTful application"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1283
+#, no-c-format
+msgid ""
+"Very occasionally, it makes more sense to use push-style MVC for processing "
+"RESTful pages, and so Seam provides the notion of a <emphasis>page action</"
+"emphasis>. The Blog example uses a page action for the blog entry page, "
+"<literal>entry.xhtml</literal>. Note that this is a little bit contrived, it "
+"would have been easier to use pull-style MVC here as well."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1286
+#, no-c-format
+msgid ""
+"The <literal>entryAction</literal> component works much like an action class "
+"in a traditional push-MVC action-oriented framework like Struts:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1289
+#, no-c-format
+msgid ""
+"@Name(\"entryAction\")\n"
+"@Scope(STATELESS)\n"
+"public class EntryAction\n"
+"{\n"
+"   @In(create=true) \n"
+"   private Blog blog;\n"
+"   \n"
+"   @Out\n"
+"   private BlogEntry blogEntry;\n"
+"   \n"
+"   public void loadBlogEntry(String id) throws EntryNotFoundException\n"
+"   {\n"
+"      blogEntry = blog.getBlogEntry(id);\n"
+"      if (blogEntry==null) throw new EntryNotFoundException(id);\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1290
+#, no-c-format
+msgid "Page actions are also declared in <literal>pages.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1293
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   ...\n"
+"\n"
+"   &lt;page view-id=\"/entry.xhtml\" action=\"#{entryAction.loadBlogEntry"
+"(blogEntry.id)}\"&gt;\n"
+"      &lt;param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"\n"
+"   &lt;page view-id=\"/post.xhtml\" action=\"#{loginAction.challenge}\"/"
+"&gt;\n"
+"\n"
+"   &lt;page view-id=\"*\" action=\"#{blog.hitCount.hit}\"/&gt;\n"
+"\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1294
+#, no-c-format
+msgid ""
+"Notice that the example is using page actions for some other "
+"functionality&mdash;the login challenge, and the pageview counter. Also "
+"notice the use of a parameter in the page action method binding. This is not "
+"a standard feature of JSF EL, but Seam lets you use it, not just for page "
+"actions, but also in JSF method bindings."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1297
+#, no-c-format
+msgid ""
+"When the <literal>entry.xhtml</literal> page is requested, Seam first binds "
+"the page parameter <literal>blogEntryId</literal> to the model, then runs "
+"the page action, which retrieves the needed data&mdash;the "
+"<literal>blogEntry</literal>&mdash;and places it in the Seam event context. "
+"Finally, the following is rendered:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1300
+#, no-c-format
+msgid ""
+"&lt;div class=\"blogEntry\"&gt;\n"
+"   &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"   &lt;div&gt;\n"
+"      &lt;h:outputText escape=\"false\" value=\"#{blogEntry.body}\"/&gt;\n"
+"   &lt;/div&gt;\n"
+"   &lt;p&gt;\n"
+"      [Posted on&amp;#160;\n"
+"      &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"         &lt;f:convertDateTime timezone=\"#{blog.timeZone}\" locale=\"#{blog."
+"locale}\" type=\"both\"/&gt;\n"
+"      &lt;/h:outputText&gt;]\n"
+"   &lt;/p&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1301
+#, no-c-format
+msgid ""
+"If the blog entry is not found in the database, the "
+"<literal>EntryNotFoundException</literal> exception is thrown. We want this "
+"exception to result in a 404 error, not a 505, so we annotate the exception "
+"class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1304
+#, no-c-format
+msgid ""
+"@ApplicationException(rollback=true)\n"
+"@HttpError(errorCode=HttpServletResponse.SC_NOT_FOUND)\n"
+"public class EntryNotFoundException extends Exception\n"
+"{\n"
+"   EntryNotFoundException(String id)\n"
+"   {\n"
+"      super(\"entry not found: \" + id);\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1305
+#, no-c-format
+msgid ""
+"An alternative implementation of the example does not use the parameter in "
+"the method binding:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1308
+#, no-c-format
+msgid ""
+"@Name(\"entryAction\")\n"
+"@Scope(STATELESS)\n"
+"public class EntryAction\n"
+"{\n"
+"   @In(create=true) \n"
+"   private Blog blog;\n"
+"   \n"
+"   @In @Out\n"
+"   private BlogEntry blogEntry;\n"
+"   \n"
+"   public void loadBlogEntry() throws EntryNotFoundException\n"
+"   {\n"
+"      blogEntry = blog.getBlogEntry( blogEntry.getId() );\n"
+"      if (blogEntry==null) throw new EntryNotFoundException(id);\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1309
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   ...\n"
+"\n"
+"   &lt;page view-id=\"/entry.xhtml\" action=\"#{entryAction.loadBlogEntry}"
+"\"&gt;\n"
+"      &lt;param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1310
+#, no-c-format
+msgid "It is a matter of taste which implementation you prefer."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1318
+#, no-c-format
+msgid "Running the Seam examples in JBoss using the JSF 1.2 RI"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1319
+#, no-c-format
+msgid ""
+"JBoss AS 4.0 ships with the Apache MyFaces implementation of JSF 1.1. After "
+"many months of waiting, there is <emphasis>still</emphasis> no "
+"implementation of JSF 1.2 from MyFaces. For this and other reasons, JBoss AS "
+"4.2 will embed the JSF 1.2 Reference Implementation by default. Soon after "
+"the release of 4.2, we will migrate the Seam examples to JSF 1.2."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1322
+#, no-c-format
+msgid ""
+"For those who can't wait, Seam is already compatible with JSF 1.2, and it's "
+"easy to get the Seam examples running with JSF 1.2 in JBoss 4.0.5. Let's "
+"start with the famous booking example:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1327
+#, no-c-format
+msgid ""
+"copy <literal>jsf-api.jar</literal>, <literal>jsf-impl.jar</literal>, "
+"<literal>el-api.jar</literal>, <literal>el-impl.jar</literal> to "
+"<literal>server/default/deploy/tomcat/jbossweb-tomcat55.sar/jsf-libs</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1332
+#, no-c-format
+msgid ""
+"delete <literal>myfaces-api.jar</literal> and <literal>myfaces-impl.jar</"
+"literal> from <literal>server/default/deploy/tomcat/jbossweb-tomcat55.sar/"
+"jsf-libs</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1337
+#, no-c-format
+msgid ""
+"edit <literal>server/default/deploy/tomcat/jbossweb-tomcat55.sar/conf/web."
+"xml</literal>, replacing <literal>myfaces-impl.jar</literal> with "
+"<literal>jsf-impl.jar</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1342
+#, no-c-format
+msgid ""
+"edit <literal>examples/booking/resources/WEB-INF/web.xml</literal>, deleting "
+"the MyFaces listener, uncommenting the RI listener"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1347
+#, no-c-format
+msgid ""
+"edit <literal>examples/booking/resources/WEB-INF/faces-config.xml</literal>, "
+"uncommenting the lines that install the <literal>SeamELResolver</literal> "
+"using the new JSF 1.2 XML schema declaration."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1352
+#, no-c-format
+msgid ""
+"edit <literal>examples/booking/resources/META-INF/application.xml</literal>, "
+"deleting the lines that declare <literal>el-api.jar</literal> and "
+"<literal>el-impl.jar</literal> as Java modules."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1357
+#, no-c-format
+msgid ""
+"Restart JBoss, and type <literal>ant</literal> in the <literal>examples/"
+"booking</literal> directory."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Validation.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Validation.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Validation.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,375 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Validation.xml:10
+#, no-c-format
+msgid "JSF form validation in Seam"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:11
+#, no-c-format
+msgid "In plain JSF, validation is defined in the view:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:14
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Country:\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;my:validateCountry/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Zip code:\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;my:validateZip/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:15
+#, no-c-format
+msgid ""
+"In practice, this approach usually violates DRY, since most \"validation\" "
+"actually enforces constraints that are part of the data model, and exist all "
+"the way down to the database schema definition. Seam provides support for "
+"model-based constraints defined using Hibernate Validator."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:18
+#, no-c-format
+msgid ""
+"Let's start by defining our constraints, on our <literal>Location</literal> "
+"class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:21
+#, no-c-format
+msgid ""
+"public class Location {\n"
+"    private String country;\n"
+"    private String zip;\n"
+"    \n"
+"    @NotNull\n"
+"    @Length(max=30)\n"
+"    public String getCountry() { return country; }\n"
+"    public void setCountry(String c) { country = c; }\n"
+"\n"
+"    @NotNull\n"
+"    @Length(max=6)\n"
+"    @Pattern(\"^&#92;d*&#36;\")\n"
+"    public String getZip() { return zip; }\n"
+"    public void setZip(String z) { zip = z; }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:22
+#, no-c-format
+msgid ""
+"Well, that's a decent first cut, but in practice it might be more elegant to "
+"use custom constraints instead of the ones built into Hibernate Validator:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:25
+#, no-c-format
+msgid ""
+"public class Location {\n"
+"    private String country;\n"
+"    private String zip;\n"
+"    \n"
+"    @NotNull\n"
+"    @Country\n"
+"    public String getCountry() { return country; }\n"
+"    public void setCountry(String c) { country = c; }\n"
+"\n"
+"    @NotNull\n"
+"    @ZipCode\n"
+"    public String getZip() { return zip; }\n"
+"    public void setZip(String z) { zip = z; }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:26
+#, no-c-format
+msgid ""
+"Whichever route we take, we no longer need to specify the type of validation "
+"to be used in the JSF page. Instead, we can use <literal>&lt;s:validate&gt;</"
+"literal> to validate against the constraint defined on the model object."
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:29
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Country:\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;s:validate/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Zip code:\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;s:validate/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:30
+#, no-c-format
+msgid ""
+"<emphasis>Note:</emphasis> specifying <literal>@NotNull</literal> on the "
+"model does <emphasis>not</emphasis> eliminate the requirement for "
+"<literal>required=\"true\"</literal> to appear on the control! This is due "
+"to a limitation of the JSF validation architecture."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:33
+#, no-c-format
+msgid ""
+"This version is not much less verbose than what we started with, so let's "
+"try <literal>&lt;s:validateAll&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:36
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;h:inputText value=\"#{location.country}\" required=\"true\"/"
+"&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/"
+"&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:37
+#, no-c-format
+msgid ""
+"This tag simply adds an <literal>&lt;s:validate&gt;</literal> to every input "
+"in the form. For a large form, it can save a lot of typing!"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:40
+#, no-c-format
+msgid ""
+"Now we need to do something about displaying feedback to the user when "
+"validation fails. Currently we are displaying all messages at the top of the "
+"form. What we would really like to do is display the message next to the "
+"field with the error (this is possible in plain JSF), highlight the field "
+"(this is not possible) and, for good measure, display some image next the "
+"the field (also not possible)."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:43
+#, no-c-format
+msgid "Let's try out <literal>&lt;s:decorate&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:46
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;s:decorate&gt;\n"
+"                &lt;f:facet name=\"beforeInvalidField\"&gt;&lt;h:"
+"graphicImage src=\"img/error.gif\"/&gt;&lt;/f:facet&gt;\n"
+"                &lt;f:facet name=\"afterInvalidField\"&gt;&lt;s:message/&gt;"
+"&lt;/f:facet&gt;\n"
+"                &lt;f:facet name=\"aroundInvalidField\"&gt;&lt;s:span "
+"styleClass=\"error\"/&gt;&lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{location.country}\" required=\"true"
+"\"/&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;s:decorate&gt;\n"
+"                &lt;f:facet name=\"beforeInvalidField\"&gt;&lt;h:"
+"graphicImage src=\"img/error.gif\"/&gt;&lt;/f:facet&gt;\n"
+"                &lt;f:facet name=\"afterInvalidField\"&gt;&lt;s:message/&gt;"
+"&lt;/f:facet&gt;\n"
+"                &lt;f:facet name=\"aroundInvalidField\"&gt;&lt;s:span "
+"styleClass=\"error\"/&gt;&lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/"
+"&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:47
+#, no-c-format
+msgid ""
+"Well, that looks much better to the user, but it is extremely verbose. "
+"Fortunately, the facets of <literal>&lt;s:decorate&gt;</literal> may be "
+"defined on any parent element:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:50
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;f:facet name=\"beforeInvalidField\"&gt;\n"
+"        &lt;h:graphicImage src=\"img/error.gif\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;f:facet name=\"afterInvalidField\"&gt;\n"
+"        &lt;s:message/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;f:facet name=\"aroundInvalidField\"&gt;\n"
+"        &lt;s:span styleClass=\"error\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;s:decorate&gt;\n"
+"                &lt;h:inputText value=\"#{location.country}\" required=\"true"
+"\"/&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;s:decorate&gt;\n"
+"                &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/"
+"&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:51
+#, no-c-format
+msgid ""
+"This approach <emphasis>defines</emphasis> constraints on the model, and "
+"<emphasis>presents</emphasis> constraint violations in the view&mdash;a "
+"significantly better design."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:54
+#, no-c-format
+msgid ""
+"Finally, we can use Ajax4JSF to display validation messages as the user is "
+"typing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:57
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;f:facet name=\"beforeInvalidField\"&gt;\n"
+"        &lt;h:graphicImage src=\"img/error.gif\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;f:facet name=\"afterInvalidField\"&gt;\n"
+"        &lt;s:message/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;f:facet name=\"aroundInvalidField\"&gt;\n"
+"        &lt;s:span styleClass=\"error\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;s:decorate id=\"country\"&gt;\n"
+"                &lt;h:inputText value=\"#{location.country}\" required=\"true"
+"\"&gt;\n"
+"                    &lt;a:support event=\"onblur\" reRender=\"country\"/"
+"&gt;\n"
+"                &lt;/h:inputText&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;s:decorate id=\"zip\"&gt;\n"
+"                &lt;h:inputText value=\"#{location.zip}\" required=\"true"
+"\"&gt;\n"
+"                    &lt;a:support event=\"onblur\" reRender=\"zip\"/&gt;\n"
+"                &lt;/h:inputText&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Xml.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Xml.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/ta-IN/Xml.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,933 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Xml.xml:10
+#, no-c-format
+msgid "Configuring Seam components"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:11
+#, no-c-format
+msgid ""
+"The philosophy of minimizing XML-based configuration is extremely strong in "
+"Seam. Nevertheless, there are various reasons why we might want to configure "
+"a Seam component using XML: to isolate deployment-specific information from "
+"the Java code, to enable the creation of re-usable frameworks, to configure "
+"Seam's built-in functionality, etc. Seam provides two basic approaches to "
+"configuring components: configuration via property settings in a properties "
+"file or <literal>web.xml</literal>, and configuration via "
+"<literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:14
+#, no-c-format
+msgid "Configuring components via property settings"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:15
+#, no-c-format
+msgid ""
+"Seam components may be provided with configuration properties either via "
+"servlet context parameters, or via a properties file named <literal>seam."
+"properties</literal> in the root of the classpath."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:18
+#, no-c-format
+msgid ""
+"The configurable Seam component must expose JavaBeans-style property setter "
+"methods for the configurable attributes. If a seam component named "
+"<literal>com.jboss.myapp.settings</literal> has a setter method named "
+"<literal>setLocale()</literal>, we can provide a property named <literal>com."
+"jboss.myapp.settings.locale</literal> in the <literal>seam.properties</"
+"literal> file or as a servlet context parameter, and Seam will set the value "
+"of the <literal>locale</literal> attribute whenever it instantiates the "
+"component."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:21
+#, no-c-format
+msgid ""
+"The same mechanism is used to configure Seam itself. For example, to set the "
+"conversation timeout, we provide a value for <literal>org.jboss.seam.core."
+"manager.conversationTimeout</literal> in <literal>web.xml</literal> or "
+"<literal>seam.properties</literal>. (There is a built-in Seam component "
+"named <literal>org.jboss.seam.core.manager</literal> with a setter method "
+"named <literal>setConversationTimeout()</literal>.)"
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:24
+#, no-c-format
+msgid "Configuring components via components.xml"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:25
+#, no-c-format
+msgid ""
+"The <literal>components.xml</literal> file is a bit more powerful than "
+"property settings. It lets you:"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:30
+#, no-c-format
+msgid ""
+"Configure components that have been installed automatically&mdash;including "
+"both built-in components, and application components that have been "
+"annotated with the <literal>@Name</literal> annotation and picked up by "
+"Seam's deployment scanner."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:35
+#, no-c-format
+msgid ""
+"Install classes with no <literal>@Name</literal> annotation as Seam "
+"components&mdash;this is most useful for certain kinds of infrastructural "
+"components which can be installed multiple times different names (for "
+"example Seam-managed persistence contexts)."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:40
+#, no-c-format
+msgid ""
+"Install components that <emphasis>do</emphasis> have a <literal>@Name</"
+"literal> annotation but are not installed by default because of an "
+"<literal>@Install</literal> annotation that indicates the component should "
+"not be installed."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:45
+#, no-c-format
+msgid "Override the scope of a component."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:50
+#, no-c-format
+msgid ""
+"A <literal>components.xml</literal> file may appear in one of three "
+"different places:"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:55
+#, no-c-format
+msgid "The <literal>WEB-INF</literal> directory of a <literal>war</literal>."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:60
+#, no-c-format
+msgid "The <literal>META-INF</literal> directory of a <literal>jar</literal>."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:65
+#, no-c-format
+msgid ""
+"Any directory of a <literal>jar</literal> that contains classes with an "
+"<literal>@Name</literal> annotation."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:70
+#, no-c-format
+msgid ""
+"Usually, Seam components are installed when the deployment scanner discovers "
+"a class with a <literal>@Name</literal> annotation sitting in an archive "
+"with a <literal>seam.properties</literal> file or a <literal>META-INF/"
+"components.xml</literal> file. (Unless the component has an "
+"<literal>@Install</literal> annotation indicating it should not be installed "
+"by default.) The <literal>components.xml</literal> file lets us handle "
+"special cases where we need to override the annotations."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:73
+#, no-c-format
+msgid ""
+"For example, the following <literal>components.xml</literal> file installs "
+"the JBoss Embeddable EJB3 container:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:76
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"&gt;\n"
+"    &lt;core:ejb/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:77
+#, no-c-format
+msgid "This example does the same thing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:80
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component class=\"org.jboss.seam.core.Ejb\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:81
+#, no-c-format
+msgid ""
+"This one installs and configures two different Seam-managed persistence "
+"contexts:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:84
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"    &lt;core:managed-persistence-context name=\"customerDatabase\"\n"
+"                persistence-unit-jndi-name=\"java:/"
+"customerEntityManagerFactory\"/&gt;\n"
+"        \n"
+"    &lt;core:managed-persistence-context name=\"accountingDatabase\"\n"
+"                persistence-unit-jndi-name=\"java:/"
+"accountingEntityManagerFactory\"/&gt;            \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:85
+#, no-c-format
+msgid "As does this one:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:88
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component name=\"customerDatabase\" \n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"customerEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"    \n"
+"    &lt;component name=\"accountingDatabase\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"accountingEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:89
+#, no-c-format
+msgid ""
+"This example creates a session-scoped Seam-managed persistence context (this "
+"is not recommended in practice):"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:92
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"  &lt;core:managed-persistence-context name=\"productDatabase\" \n"
+"                                   scope=\"session\"\n"
+"              persistence-unit-jndi-name=\"java:/productEntityManagerFactory"
+"\"/&gt;        \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:93
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"            \n"
+"    &lt;component name=\"productDatabase\"\n"
+"              scope=\"session\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"productEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:94
+#, no-c-format
+msgid ""
+"It is common to use the <literal>auto-create</literal> option for "
+"infrastructural objects like persistence contexts, which saves you from "
+"having to explicitly specify <literal>create=true</literal> when you use the "
+"<literal>@In</literal> annotation."
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:97
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"  &lt;core:managed-persistence-context name=\"productDatabase\" \n"
+"                             auto-create=\"true\"\n"
+"              persistence-unit-jndi-name=\"java:/productEntityManagerFactory"
+"\"/&gt;        \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:98
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"            \n"
+"    &lt;component name=\"productDatabase\"\n"
+"        auto-create=\"true\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"productEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:99
+#, no-c-format
+msgid ""
+"The <literal>&lt;factory&gt;</literal> declaration lets you specify a value "
+"or method binding expression that will be evaluated to initialize the value "
+"of a context variable when it is first referenced."
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:102
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"contact\" method=\"#{contactManager.loadContact}\" "
+"scope=\"CONVERSATION\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:103
+#, no-c-format
+msgid ""
+"You can create an \"alias\" (a second name) for a Seam component like so:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:106
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"user\" value=\"#{actor}\" scope=\"STATELESS\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:107
+#, no-c-format
+msgid "You can even create an \"alias\" for a commonly used expression:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:110
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"contact\" value=\"#{contactManager.contact}\" scope="
+"\"STATELESS\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:111
+#, no-c-format
+msgid ""
+"It is especially common to see the use of <literal>auto-create=\"true\"</"
+"literal> with the <literal>&lt;factory&gt;</literal> declaration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:114
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"session\" value=\"#{entityManager.delegate}\" scope="
+"\"STATELESS\" \n"
+"        auto-create=\"true\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:115
+#, no-c-format
+msgid ""
+"Sometimes we want to reuse the same <literal>components.xml</literal> file "
+"with minor changes during both deployment and testing. Seam lets you place "
+"wildcards of the form <literal>@wildcard@</literal> in the "
+"<literal>components.xml</literal> file which can be replaced either by your "
+"Ant build script (at deployment time) or by providing a file named "
+"<literal>components.properties</literal> in the classpath (at development "
+"time). You'll see this approach used in the Seam examples."
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:118
+#, no-c-format
+msgid "Fine-grained configuration files"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:119
+#, no-c-format
+msgid ""
+"If you have a large number of components that need to be configured in XML, "
+"it makes much more sense to split up the information in <literal>components."
+"xml</literal> into many small files. Seam lets you put configuration for a "
+"class named, for example, <literal>com.helloworld.Hello</literal> in a "
+"resource named <literal>com/helloworld/Hello.component.xml</literal>. (You "
+"might be familiar with this pattern, since it is the same one we use in "
+"Hibernate.) The root element of the file may be either a <literal>&lt;"
+"components&gt;</literal> or <literal>&lt;component&gt;</literal> element."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:122
+#, no-c-format
+msgid "The first option lets you define multiple components in the file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:125
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component class=\"com.helloworld.Hello\" name=\"hello\"&gt;\n"
+"        &lt;property name=\"name\"&gt;#{user.name}&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"    &lt;factory name=\"message\" value=\"#{hello.message}\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:126
+#, no-c-format
+msgid ""
+"The second option only lets you define or configure one component, but is "
+"less noisy:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:129
+#, no-c-format
+msgid ""
+"&lt;component name=\"hello\"&gt;\n"
+"    &lt;property name=\"name\"&gt;#{user.name}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:130
+#, no-c-format
+msgid ""
+"In the second option, the class name is implied by the file in which the "
+"component definition appears."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:133
+#, no-c-format
+msgid ""
+"Alternatively, you may put configuration for all classes in the <literal>com."
+"helloworld</literal> package in <literal>com/helloworld/components.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:136
+#, no-c-format
+msgid "Configurable property types"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:137
+#, no-c-format
+msgid ""
+"Properties of string, primitive or primitive wrapper type may be configured "
+"just as you would expect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:140
+#, no-c-format
+msgid "org.jboss.seam.core.manager.conversationTimeout 60000"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:141
+#, no-c-format
+msgid "&lt;core:manager conversation-timeout=\"60000\"/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:142
+#, no-c-format
+msgid ""
+"&lt;component name=\"org.jboss.seam.core.manager\"&gt;\n"
+"    &lt;property name=\"conversationTimeout\"&gt;60000&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:143
+#, no-c-format
+msgid "Arrays, sets and lists of strings or primitives are also supported:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:146
+#, no-c-format
+msgid ""
+"org.jboss.seam.core.jbpm.processDefinitions order.jpdl.xml, return.jpdl.xml, "
+"inventory.jpdl.xml"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:147
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;order.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;return.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:148
+#, no-c-format
+msgid ""
+"&lt;component name=\"org.jboss.seam.core.jbpm\"&gt;\n"
+"    &lt;property name=\"processDefinitions\"&gt;\n"
+"        &lt;value&gt;order.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;return.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:149
+#, no-c-format
+msgid ""
+"Even maps with String-valued keys and string or primitive values are "
+"supported:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:152
+#, no-c-format
+msgid ""
+"&lt;component name=\"issueEditor\"&gt;\n"
+"    &lt;property name=\"issueStatuses\"&gt;\n"
+"        &lt;key&gt;open&lt;/key&gt; &lt;value&gt;open issue&lt;/value&gt;\n"
+"        &lt;key&gt;resolved&lt;/key&gt; &lt;value&gt;issue resolved by "
+"developer&lt;/value&gt;\n"
+"        &lt;key&gt;closed&lt;/key&gt; &lt;value&gt;resolution accepted by "
+"user&lt;/value&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:153
+#, no-c-format
+msgid ""
+"Finally, you may wire together components using a value-binding expression. "
+"Note that this is quite different to injection using <literal>@In</literal>, "
+"since it happens at component instantiation time instead of invocation time. "
+"It is therefore much more similar to the dependency injection facilities "
+"offered by traditional IoC containers like JSF or Spring."
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:156
+#, no-c-format
+msgid ""
+"&lt;drools:managed-working-memory name=\"policyPricingWorkingMemory\" rule-"
+"base=\"#{policyPricingRules}\"/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:157
+#, no-c-format
+msgid ""
+"&lt;component name=\"policyPricingWorkingMemory\"\n"
+"          class=\"org.jboss.seam.drools.ManagedWorkingMemory\"&gt;\n"
+"    &lt;property name=\"ruleBase\"&gt;#{policyPricingRules}&lt;/"
+"property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:158
+#, no-c-format
+msgid "Using XML Namespaces"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:159
+#, no-c-format
+msgid ""
+"Throughout the examples, there have been two competing ways of declaring "
+"components: with and without the use of XML namespaces. The following shows "
+"a typical <literal>components.xml</literal> file without namespaces. It uses "
+"the Seam Components DTD:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:162
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"&gt;\n"
+"&lt;!DOCTYPE components PUBLIC \"-//JBoss/Seam Component Configuration DTD "
+"1.2//EN\"\n"
+"                            \"http://jboss.com/products/seam/components-1.2."
+"dtd\"&gt;\n"
+"&lt;components&gt;\n"
+"\n"
+"    &lt;component class=\"org.jboss.seam.core.init\"&gt;\n"
+"        &lt;property name=\"debug\"&gt;true&lt;/property&gt;\n"
+"        &lt;property name=\"jndiPattern\"&gt;@jndiPattern@&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"    &lt;component name=\"org.jboss.sean.core.ejb\" installed=\"@embeddedEjb@"
+"\" /&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:163
+#, no-c-format
+msgid ""
+"As you can see, this is somewhat verbose. Even worse, the component and "
+"attribute names cannot be validated at development time."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:166
+#, no-c-format
+msgid "The namespaced version looks like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:169
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                http://jboss.com/products/seam/core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components \n"
+"                 http://jboss.com/products/seam/components-1.2.xsd\"&gt;\n"
+"\n"
+"    &lt;core:init debug=\"true\" jndi-pattern=\"@jndiPattern@\"/&gt;\n"
+"\n"
+"    &lt;core:ejb installed=\"@embeddedEjb@\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:170
+#, no-c-format
+msgid ""
+"Even though the schema declarations are verbose, the actual XML content is "
+"lean and easy to understand. The schemas provide detailed information about "
+"each component and the attributes available, allowing XML editors to offer "
+"intelligent autocomplete. The use of namespaced elements makes generating "
+"and maintaining correct <literal>components.xml</literal> files much simpler."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:173
+#, no-c-format
+msgid ""
+"Now, this works great for the built-in Seam components, but what about user "
+"components? There are two options. First, Seam supports mixing the two "
+"models, allowing the use of the generic <literal>&lt;component&gt;</literal> "
+"declarations for user components, along with namespaced declarations for "
+"built-in components. But even better, Seam allows you to quickly declare "
+"namespaces for your own components."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:176
+#, no-c-format
+msgid ""
+"Any Java package can be associated with an XML namespace by annotating the "
+"package with the <literal>@Namespace</literal> annotation. (Package-level "
+"annotations are declared in a file named <literal>package-info.java</"
+"literal> in the package directory.) Here is an example from the seampay demo:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:179
+#, no-c-format
+msgid ""
+"@Namespace(value=\"http://jboss.com/products/seam/examples/seampay\")\n"
+"package org.jboss.seam.example.seampay;\n"
+"\n"
+"import org.jboss.seam.annotations.Namespace;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:180
+#, no-c-format
+msgid ""
+"That is all you need to do to use the namespaced style in "
+"<literal>components.xml</literal>! Now we can write:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:183
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pay=\"http://jboss.com/products/seam/examples/seampay\"\n"
+"            ... &gt;\n"
+"\n"
+"    &lt;pay:payment-home new-instance=\"#{newPayment}\"\n"
+"                      created-message=\"Created a new payment to #"
+"{newPayment.payee}\" /&gt;\n"
+"\n"
+"    &lt;pay:payment name=\"newPayment\"\n"
+"                 payee=\"Somebody\"\n"
+"                 account=\"#{selectedAccount}\"\n"
+"                 payment-date=\"#{currentDatetime}\"\n"
+"                 created-date=\"#{currentDatetime}\" /&gt;\n"
+"     ...\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:184
+#, no-c-format
+msgid "<para>Or:</para>"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:187
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pay=\"http://jboss.com/products/seam/examples/seampay\"\n"
+"            ... &gt;\n"
+"\n"
+"    &lt;pay:payment-home&gt;\n"
+"        &lt;pay:new-instance&gt;\"#{newPayment}\"&lt;/pay:new-instance&gt;\n"
+"        &lt;pay:created-message&gt;Created a new payment to #{newPayment."
+"payee}&lt;/pay:created-message&gt;\n"
+"    &lt;/pay:payment-home&gt;\n"
+"    \n"
+"    &lt;pay:payment name=\"newPayment\"&gt;\n"
+"        &lt;pay:payee&gt;Somebody\"&lt;/pay:payee&gt;\n"
+"        &lt;pay:account&gt;#{selectedAccount}&lt;/pay:account&gt;\n"
+"        &lt;pay:payment-date&gt;#{currentDatetime}&lt;/pay:payment-date&gt;\n"
+"        &lt;pay:created-date&gt;#{currentDatetime}&lt;/pay:created-date&gt;\n"
+"     &lt;/pay:payment&gt;\n"
+"     ...\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:188
+#, no-c-format
+msgid ""
+"These examples illustrate the two usage models of a namespaced element. In "
+"the first declaration, the <literal>&lt;pay:payment-home&gt;</literal> "
+"references the <literal>paymentHome</literal> component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:191
+#, no-c-format
+msgid ""
+"package org.jboss.seam.example.seampay;\n"
+"...\n"
+"@Name(\"paymentHome\")\n"
+"public class PaymentController\n"
+"    extends EntityHome&lt;Payment&gt;\n"
+"{\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:192
+#, no-c-format
+msgid ""
+"The element name is the hyphenated form of the component name. The "
+"attributes of the element are the hyphenated form of the property names."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:195
+#, no-c-format
+msgid ""
+"In the second declaration, the <literal>&lt;pay:payment&gt;</literal> "
+"element refers to the <literal>Payment</literal> class in the <literal>org."
+"jboss.seam.example.seampay</literal> package. In this case <literal>Payment</"
+"literal> is an entity that is being declared as a Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:198
+#, no-c-format
+msgid ""
+"package org.jboss.seam.example.seampay;\n"
+"...\n"
+"@Entity\n"
+"public class Payment\n"
+"    implements Serializable\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:199
+#, no-c-format
+msgid ""
+"If we want validation and autocompletion to work for user-defined "
+"components, we will need a schema. Seam does not yet provide a mechanism to "
+"automatically generate a schema for a set of components, so it is necessary "
+"to generate one manually. The schema definitions for the standard Seam "
+"packages can be used for guidance."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:202
+#, no-c-format
+msgid "The following are the the namespaces used by Seam:"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:207
+#, no-c-format
+msgid ""
+"components &mdash; <literal>http://jboss.com/products/seam/components</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:212
+#, no-c-format
+msgid "core &mdash; <literal>http://jboss.com/products/seam/core</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:217
+#, no-c-format
+msgid "drools &mdash; <literal>http://jboss.com/products/seam/drools</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:222
+#, no-c-format
+msgid ""
+"framework &mdash; <literal>http://jboss.com/products/seam/framework</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:227
+#, no-c-format
+msgid "jms &mdash; <literal>http://jboss.com/products/seam/jms</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:232
+#, no-c-format
+msgid ""
+"remoting &mdash; <literal>http://jboss.com/products/seam/remoting</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:237
+#, no-c-format
+msgid "theme &mdash; <literal>http://jboss.com/products/seam/theme</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:242
+#, no-c-format
+msgid ""
+"security &mdash; <literal>http://jboss.com/products/seam/security</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:247
+#, no-c-format
+msgid "mail &mdash; <literal>http://jboss.com/products/seam/mail</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:252
+#, no-c-format
+msgid "web &mdash; <literal>http://jboss.com/products/seam/web</literal>"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Annotations.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Annotations.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Annotations.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2030 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Annotations.xml:10
+#, no-c-format
+msgid "Seam annotations"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:11
+#, no-c-format
+msgid ""
+"When you write a Seam application, you'll use a lot of annotations. Seam "
+"lets you use annotations to achieve a declarative style of programming. Most "
+"of the annotations you'll use are defined by the EJB 3.0 specification. The "
+"annotations for data validation are defined by the Hibernate Validator "
+"package. Finally, Seam defines its own set of annotations, which we'll "
+"describe in this chapter."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:14
+#, no-c-format
+msgid ""
+"All of these annotations are defined in the package <literal>org.jboss.seam."
+"annotations</literal>."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:18
+#, no-c-format
+msgid "Annotations for component definition"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:19
+#, no-c-format
+msgid ""
+"The first group of annotations lets you define a Seam component. These "
+"annotations appear on the component class."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:24
+#, no-c-format
+msgid "@Name"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:26
+#, no-c-format
+msgid "@Name(\"componentName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:27
+#, no-c-format
+msgid ""
+"Defines the Seam component name for a class. This annotation is required for "
+"all Seam components."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:33
+#, no-c-format
+msgid "@Scope"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:35
+#, no-c-format
+msgid "@Scope(ScopeType.CONVERSATION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:36
+#, no-c-format
+msgid ""
+"Defines the default context of the component. The possible values are "
+"defined by the <literal>ScopeType</literal> enumeration: <literal>EVENT, "
+"PAGE, CONVERSATION, SESSION, BUSINESS_PROCESS, APPLICATION, STATELESS</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:39
+#, no-c-format
+msgid ""
+"When no scope is explicitly specified, the default depends upon the "
+"component type. For stateless session beans, the default is "
+"<literal>STATELESS</literal>. For entity beans and stateful session beans, "
+"the default is <literal>CONVERSATION</literal>. For JavaBeans, the default "
+"is <literal>EVENT</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:45
+#, no-c-format
+msgid "@Role"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:47
+#, no-c-format
+msgid "@Role(name=\"roleName\", scope=ScopeType.SESSION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:48
+#, no-c-format
+msgid ""
+"Allows a Seam component to be bound to multiple contexts variables. The "
+"<literal>@Name</literal>/<literal>@Scope</literal> annotations define a "
+"\"default role\". Each <literal>@Role</literal> annotation defines an "
+"additional role."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:53
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the context variable name."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:58
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; the context variable scope. When no scope "
+"is explicitly specified, the default depends upon the component type, as "
+"above."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:66
+#, no-c-format
+msgid "@Roles"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:68
+#, no-c-format
+msgid ""
+"@Roles({\n"
+"        @Role(name=\"user\", scope=ScopeType.CONVERSATION),\n"
+"        @Role(name=\"currentUser\", scope=ScopeType.SESSION)\n"
+"    })"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:69
+#, no-c-format
+msgid "Allows specification of multiple additional roles."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:75
+#, no-c-format
+msgid "@Intercept"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:77
+#, no-c-format
+msgid "@Intercept(InterceptionType.ALWAYS)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:78
+#, no-c-format
+msgid ""
+"Determines when Seam interceptors are active. The possible values are "
+"defined by the <literal>InterceptionType</literal> enumeration: "
+"<literal>ALWAYS, AFTER_RESTORE_VIEW, AFTER_UPDATE_MODEL_VALUES, "
+"INVOKE_APPLICATION, NEVER</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:81
+#, no-c-format
+msgid ""
+"When no interception type is explicitly specified, the default depends upon "
+"the component type. For entity beans, the default is <literal>NEVER</"
+"literal>. For session beans, message driven beans and JavaBeans, the default "
+"is <literal>ALWAYS</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:87
+#, no-c-format
+msgid "@JndiName"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:89
+#, no-c-format
+msgid "@JndiName(\"my/jndi/name\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:90
+#, no-c-format
+msgid ""
+"Specifies the JNDI name that Seam will use to look up the EJB component. If "
+"no JNDI name is explicitly specified, Seam will use the JNDI pattern "
+"specified by <literal>org.jboss.seam.core.init.jndiPattern</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:96
+#, no-c-format
+msgid "@Conversational"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:98
+#, no-c-format
+msgid "@Conversational(ifNotBegunOutcome=\"error\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:99
+#, no-c-format
+msgid ""
+"Specifies that a conversation scope component is conversational, meaning "
+"that no method of the component can be called unless a long-running "
+"conversation started by this component is active (unless the method would "
+"begin a new long-running conversation)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:105
+#, no-c-format
+msgid "<literal>@Startup</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:107
+#, no-c-format
+msgid "@Startup(depends={\"org.jboss.core.jndi\", \"org.jboss.core.jta\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:108
+#, no-c-format
+msgid ""
+"Specifies that an application scope component is started immediately at "
+"initialization time. This is mainly used for certain built-in components "
+"that bootstrap critical infrastructure such as JNDI, datasources, etc."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:111
+#, no-c-format
+msgid "<programlisting>@Startup</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:112
+#, no-c-format
+msgid ""
+"Specifies that a session scope component is started immediately at session "
+"creation time."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:117
+#, no-c-format
+msgid ""
+"<literal>depends</literal> &mdash; specifies that the named components must "
+"be started first, if they are installed."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:125
+#, no-c-format
+msgid "@Install"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:127
+#, no-c-format
+msgid "@Install(false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:128
+#, no-c-format
+msgid ""
+"Specifies whether or not a component should be installed by default. The "
+"lack of an @Install annotation indicates a component should be installed."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:131
+#, no-c-format
+msgid "@Install(dependencies=\"org.jboss.seam.core.jbpm\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:132
+#, no-c-format
+msgid ""
+"Specifies that a component should only be stalled if the components listed "
+"as dependencies are also installed."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:135
+#, no-c-format
+msgid "@Install(genericDependencies=ManagedQueueSender.class)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:136
+#, no-c-format
+msgid ""
+"Specifies that a component should only be installed if a component that is "
+"implemented by a certain class is installed. This is useful when the "
+"dependency doesn't have a single well-known name."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:139
+#, no-c-format
+msgid "@Install(classDependencies=\"org.hibernate.Session\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:140
+#, no-c-format
+msgid ""
+"Specifies that a component should only be installed if the named class is in "
+"the classpath."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:143
+#, no-c-format
+msgid "@Install(precedence=BUILT_IN)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:144
+#, no-c-format
+msgid ""
+"Specifies the precedence of the component. If multiple components with the "
+"same name exist, the one with the higher precedence will be installed. The "
+"defined precendence values are:"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:149
+#, no-c-format
+msgid ""
+"<literal>BUILT_IN</literal> &mdash; Precedence of all built-in Seam "
+"components"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:154
+#, no-c-format
+msgid ""
+"<literal>FRAMEWORK</literal> &mdash; Precedence to use for components of "
+"frameworks which extend Seam"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:159
+#, no-c-format
+msgid ""
+"<literal>APPLICATION</literal> &mdash; Predence of application components "
+"(the default precedence)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:164
+#, no-c-format
+msgid ""
+"<literal>DEPLOYMENT</literal> &mdash; Precedence to use for components which "
+"override application components in a particular deployment"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:172
+#, no-c-format
+msgid "@Synchronized"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:174
+#, no-c-format
+msgid "@Synchronized(timeout=1000)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:175
+#, no-c-format
+msgid ""
+"Specifies that a component is accessed concurrently by multiple clients, and "
+"that Seam should serialize requests. If a request is not able to obtain its "
+"lock on the component in the given timeout period, an exception will be "
+"raised."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:181
+#, no-c-format
+msgid "<literal>@ReadOnly</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:183
+#, no-c-format
+msgid "<programlisting>@ReadOnly</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:184
+#, no-c-format
+msgid ""
+"Specifies that a JavaBean component or component method does not require "
+"state replication at the end of the invocation."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:193
+#, no-c-format
+msgid "Annotations for bijection"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:194
+#, no-c-format
+msgid ""
+"The next two annotations control bijection. These attributes occur on "
+"component instance variables or property accessor methods."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:199
+#, no-c-format
+msgid "<literal>@In</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:201
+#, no-c-format
+msgid "<programlisting>@In</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:202
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. If the context "
+"variable is null, an exception will be thrown."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:205
+#, no-c-format
+msgid "@In(required=false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:206
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. The context variable "
+"may be null."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:209
+#, no-c-format
+msgid "@In(create=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:210
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. If the context "
+"variable is null, an instance of the component is instantiated by Seam."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:213
+#, no-c-format
+msgid "@In(value=\"contextVariableName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:214 Annotations.xml:259
+#, no-c-format
+msgid ""
+"Specifies the name of the context variable explicitly, instead of using the "
+"annotated instance variable name."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:217
+#, no-c-format
+msgid "@In(value=\"#{customer.addresses['shipping']}\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:218
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected by evaluating a JSF "
+"EL expression at the beginning of each component invocation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:223
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"Default to the name of the component attribute. Alternatively, specifies a "
+"JSF EL expression, surrounded by <literal>#{...}</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:228
+#, no-c-format
+msgid ""
+"<literal>create</literal> &mdash; specifies that Seam should instantiate the "
+"component with the same name as the context variable if the context variable "
+"is undefined (null) in all contexts. Default to false."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:233
+#, no-c-format
+msgid ""
+"<literal>required</literal> &mdash; specifies Seam should throw an exception "
+"if the context variable is undefined in all contexts."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:241
+#, no-c-format
+msgid "<literal>@Out</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:243
+#, no-c-format
+msgid "<programlisting>@Out</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:244
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is a Seam component is to be "
+"outjected to its context variable at the end of the invocation. If the "
+"attribute is null, an exception is thrown."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:247
+#, no-c-format
+msgid "@Out(required=false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:248
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is a Seam component is to be "
+"outjected to its context variable at the end of the invocation. The "
+"attribute may be null."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:251
+#, no-c-format
+msgid "@Out(scope=ScopeType.SESSION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:252
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is <emphasis>not</emphasis> a Seam "
+"component type is to be outjected to a specific scope at the end of the "
+"invocation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:255
+#, no-c-format
+msgid ""
+"Alternatively, if no scope is explicitly specified, the scope of the "
+"component with the <literal>@Out</literal> attribute is used (or the "
+"<literal>EVENT</literal> scope if the component is stateless)."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:258
+#, no-c-format
+msgid "@Out(value=\"contextVariableName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:264
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"Default to the name of the component attribute."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:269
+#, no-c-format
+msgid ""
+"<literal>required</literal> &mdash; specifies Seam should throw an exception "
+"if the component attribute is null during outjection."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:277
+#, no-c-format
+msgid ""
+"Note that it is quite common for these annotations to occur together, for "
+"example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:280
+#, no-c-format
+msgid "@In(create=true) @Out private User currentUser;"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:281
+#, no-c-format
+msgid ""
+"The next annotation supports the <emphasis>manager component</emphasis> "
+"pattern, where a Seam component that manages the lifecycle of an instance of "
+"some other class that is to be injected. It appears on a component getter "
+"method."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:286
+#, no-c-format
+msgid "<literal>@Unwrap</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:288
+#, no-c-format
+msgid "<programlisting>@Unwrap</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:289
+#, no-c-format
+msgid ""
+"Specifies that the object returned by the annotated getter method is the "
+"thing that is injected instead of the component instance itself."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:295
+#, no-c-format
+msgid ""
+"The next annotation supports the <emphasis>factory component</emphasis> "
+"pattern, where a Seam component is responsible for initializing the value of "
+"a context variable. This is especially useful for initializing any state "
+"needed for rendering the response to a non-faces request. It appears on a "
+"component method."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:300
+#, no-c-format
+msgid "@Factory"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:302
+#, no-c-format
+msgid "@Factory(\"processInstance\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:303
+#, no-c-format
+msgid ""
+"Specifies that the method of the component is used to initialize the value "
+"of the named context variable, when the context variable has no value. This "
+"style is used with methods that return <literal>void</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:306
+#, no-c-format
+msgid "@Factory(\"processInstance\", scope=CONVERSATION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:307
+#, no-c-format
+msgid ""
+"Specifies that the method returns a value that Seam should use to initialize "
+"the value of the named context variable, when the context variable has no "
+"value. This style is used with methods that return a value. If no scope is "
+"explicitly specified, the scope of the component with the <literal>@Factory</"
+"literal> method is used (unless the component is stateless, in which case "
+"the <literal>EVENT</literal> context is used)."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:312
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"If the method is a getter method, default to the JavaBeans property name."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:317
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; specifies the scope that Seam should bind "
+"the returned value to. Only meaningful for factory methods which return a "
+"value."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:325
+#, no-c-format
+msgid "This annotation lets you inject a <literal>Log</literal>:"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:330
+#, no-c-format
+msgid "@Logger"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:332
+#, no-c-format
+msgid "@Logger(\"categoryName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:333
+#, no-c-format
+msgid ""
+"Specifies that a component field is to be injected with an instance of "
+"<literal>org.jboss.seam.log.Log</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:338
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the log category. "
+"Default to the name of the component class."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:346
+#, no-c-format
+msgid "The last annotation lets you inject a request parameter value:"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:351
+#, no-c-format
+msgid "@RequestParameter"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:353
+#, no-c-format
+msgid "@RequestParameter(\"parameterName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:354
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected with the value of a "
+"request parameter. Basic type conversions are performed automatically."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:359
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the request "
+"parameter. Default to the name of the component attribute."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:370
+#, no-c-format
+msgid "Annotations for component lifecycle methods"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:371
+#, no-c-format
+msgid ""
+"These annotations allow a component to react to its own lifecycle events. "
+"They occur on methods of the component. There may be only one of each per "
+"component class."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:376
+#, no-c-format
+msgid "<literal>@Create</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:378
+#, no-c-format
+msgid "<programlisting>@Create</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:379
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when an instance of the component "
+"is instantiated by Seam. Note that create methods are only supported for "
+"JavaBeans and stateful session beans."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:385
+#, no-c-format
+msgid "<literal>@Destroy</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:387
+#, no-c-format
+msgid "<programlisting>@Destroy</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:388
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when the context ends and its "
+"context variables are destroyed. Note that create methods are only supported "
+"for JavaBeans and stateful session beans."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:391
+#, no-c-format
+msgid ""
+"Note that all stateful session bean components <emphasis>must</emphasis> "
+"define a method annotated <literal>@Destroy @Remove</literal> in order to "
+"guarantee destruction of the stateful bean when a context ends."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:394
+#, no-c-format
+msgid ""
+"Destroy methods should be used only for cleanup. <emphasis>Seam catches, "
+"logs and swallows any exception that propagates out of a destroy method.</"
+"emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:400
+#, no-c-format
+msgid "@Observer"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:402
+#, no-c-format
+msgid "@Observer(\"somethingChanged\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:403
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when a component-driven event of "
+"the specified type occurs."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:406
+#, no-c-format
+msgid "@Observer(value=\"somethingChanged\",create=false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:407
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when an event of the specified "
+"type occurs but that an instance should not be created if one doesn't exist. "
+"If an instance does not exist and create is false, the event will not be "
+"observed. The default value for create is true."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:416
+#, no-c-format
+msgid "Annotations for context demarcation"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:417
+#, no-c-format
+msgid ""
+"These annotations provide declarative conversation demarcation. They appear "
+"on methods of Seam components, usually action listener methods."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:420
+#, no-c-format
+msgid ""
+"Every web request has a conversation context associated with it. Most of "
+"these conversations end at the end of the request. If you want a "
+"conversation that span multiple requests, you must \"promote\" the current "
+"conversation to a <emphasis>long-running conversation</emphasis> by calling "
+"a method marked with <literal>@Begin</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:425
+#, no-c-format
+msgid "<literal>@Begin</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:427
+#, no-c-format
+msgid "<programlisting>@Begin</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:428
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation begins when this method returns a "
+"non-null outcome without exception."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:431
+#, no-c-format
+msgid "@Begin(ifOutcome={\"success\", \"continue\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:432
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation begins when this action listener "
+"method returns with one of the given outcomes."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:435
+#, no-c-format
+msgid "@Begin(join=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:436
+#, no-c-format
+msgid ""
+"Specifies that if a long-running conversation is already in progress, the "
+"conversation context is simply propagated."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:439
+#, no-c-format
+msgid "@Begin(nested=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:440
+#, no-c-format
+msgid ""
+"Specifies that if a long-running conversation is already in progress, a new "
+"<emphasis>nested</emphasis> conversation context begins. The nested "
+"conversation will end when the next <literal>@End</literal> is encountered, "
+"and the outer conversation will resume. It is perfectly legal for multiple "
+"nested conversations to exist concurrently in the same outer conversation."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:443
+#, no-c-format
+msgid "@Begin(pageflow=\"process definition name\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:444
+#, no-c-format
+msgid ""
+"Specifies a jBPM process definition name that defines the pageflow for this "
+"conversation."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:447
+#, no-c-format
+msgid "@Begin(flushMode=FlushModeType.MANUAL)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:448
+#, no-c-format
+msgid ""
+"Specify the flush mode of any Seam-managed persistence contexts. "
+"<literal>flushMode=FlushModeType.MANUAL</literal> supports the use of "
+"<emphasis>atomic conversations</emphasis> where all write operations are "
+"queued in the conversation context until an explicit call to <literal>flush()"
+"</literal> (which usually occurs at the end of the conversation)."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:454
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in a new long-running conversation context."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:459
+#, no-c-format
+msgid ""
+"<literal>join</literal> &mdash; determines the behavior when a long-running "
+"conversation is already in progress. If <literal>true</literal>, the context "
+"is propagated. If <literal>false</literal>, an exception is thrown. Default "
+"to <literal>false</literal>. This setting is ignored when "
+"<literal>nested=true</literal> is specified"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:464
+#, no-c-format
+msgid ""
+"<literal>nested</literal> &mdash; specifies that a nested conversation "
+"should be started if a long-running conversation is already in progress."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:469 Annotations.xml:526 Annotations.xml:550
+#, no-c-format
+msgid ""
+"<literal>flushMode</literal> &mdash; set the flush mode of any Seam-managed "
+"Hibernate sessions or JPA persistence contexts that are created during this "
+"conversation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:474
+#, no-c-format
+msgid ""
+"<literal>pageflow</literal> &mdash; a process definition name of a jBPM "
+"process definition deployed via <literal>org.jboss.seam.core.jbpm."
+"pageflowDefinitions.</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:483
+#, no-c-format
+msgid "<literal>@End</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:485
+#, no-c-format
+msgid "<programlisting>@End</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:486
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation ends when this method returns a "
+"non-null outcome without exception."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:489
+#, no-c-format
+msgid ""
+"@End(ifOutcome={\"success\", \"error\"}, evenIfException={SomeException."
+"class, OtherException.class})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:490
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation ends when this action listener "
+"method returns with one of the given outcomes or throws one of the specified "
+"classes of exception."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:496
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in the end of the current long-running conversation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:501 Annotations.xml:585
+#, no-c-format
+msgid ""
+"<literal>beforeRedirect</literal> &mdash; by default, the conversation will "
+"not actually be destroyed until after any redirect has occurred. Setting "
+"<literal>beforeRedirect=true</literal> specifies that the conversation "
+"should be destroyed at the end of the current request, and that the redirect "
+"will be processed in a new temporary conversation context."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:510
+#, no-c-format
+msgid "<literal>@StartTask</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:512
+#, no-c-format
+msgid "<programlisting>@StartTask</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:513
+#, no-c-format
+msgid ""
+"\"Starts\" a jBPM task. Specifies that a long-running conversation begins "
+"when this method returns a non-null outcome without exception. This "
+"conversation is associated with the jBPM task specified in the named request "
+"parameter. Within the context of this conversation, a business process "
+"context is also defined, for the business process instance of the task "
+"instance."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:516
+#, no-c-format
+msgid ""
+"The jBPM <literal>TaskInstance</literal> will be available in a request "
+"context variable named <literal>taskInstance</literal>. The jPBM "
+"<literal>ProcessInstance</literal> will be available in a request context "
+"variable named <literal>processInstance</literal>. (Of course, these objects "
+"are available for injection via <literal>@In</literal>.)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:521 Annotations.xml:545
+#, no-c-format
+msgid ""
+"<literal>taskIdParameter</literal> &mdash; the name of a request parameter "
+"which holds the id of the task. Default to <literal>\"taskId\"</literal>, "
+"which is also the default used by the Seam <literal>taskList</literal> JSF "
+"component."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:534
+#, no-c-format
+msgid "<literal>@BeginTask</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:536
+#, no-c-format
+msgid "<programlisting>@BeginTask</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:537
+#, no-c-format
+msgid ""
+"Resumes work on an incomplete jBPM task. Specifies that a long-running "
+"conversation begins when this method returns a non-null outcome without "
+"exception. This conversation is associated with the jBPM task specified in "
+"the named request parameter. Within the context of this conversation, a "
+"business process context is also defined, for the business process instance "
+"of the task instance."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:540
+#, no-c-format
+msgid ""
+"The jBPM <literal>TaskInstance</literal> will be available in a request "
+"context variable named <literal>taskInstance</literal>. The jPBM "
+"<literal>ProcessInstance</literal> will be available in a request context "
+"variable named <literal>processInstance</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:558
+#, no-c-format
+msgid "<literal>@EndTask</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:560
+#, no-c-format
+msgid "<programlisting>@EndTask</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:561
+#, no-c-format
+msgid ""
+"\"Ends\" a jBPM task. Specifies that a long-running conversation ends when "
+"this method returns a non-null outcome, and that the current task is "
+"complete. Triggers a jBPM transition. The actual transition triggered will "
+"be the default transition unless the application has called "
+"<literal>Transition.setName()</literal> on the built-in component named "
+"<literal>transition</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:564
+#, no-c-format
+msgid "@EndTask(transition=\"transitionName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:565
+#, no-c-format
+msgid "Triggers the given jBPM transition."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:568
+#, no-c-format
+msgid "@EndTask(ifOutcome={\"success\", \"continue\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:569
+#, no-c-format
+msgid ""
+"Specifies that the task ends when this method returns one of the listed "
+"outcomes."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:575
+#, no-c-format
+msgid ""
+"<literal>transition</literal> &mdash; the name of the jBPM transition to be "
+"triggered when ending the task. Defaults to the default transition."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:580
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in the end of the task."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:594
+#, no-c-format
+msgid "@CreateProcess"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:596
+#, no-c-format
+msgid "@CreateProcess(definition=\"process definition name\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:597
+#, no-c-format
+msgid ""
+"Creates a new jBPM process instance when the method returns a non-null "
+"outcome without exception. The <literal>ProcessInstance</literal> object "
+"will be available in a context variable named <literal>processInstance</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:602
+#, no-c-format
+msgid ""
+"<literal>definition</literal> &mdash; the name of the jBPM process "
+"definition deployed via <literal>org.jboss.seam.core.jbpm."
+"processDefinitions</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:610
+#, no-c-format
+msgid "@ResumeProcess"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:612
+#, no-c-format
+msgid "@ResumeProcess(processIdParameter=\"processId\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:613
+#, no-c-format
+msgid ""
+"Re-enters the scope of an existing jBPM process instance when the method "
+"returns a non-null outcome without exception. The <literal>ProcessInstance</"
+"literal> object will be available in a context variable named "
+"<literal>processInstance</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:618
+#, no-c-format
+msgid ""
+"<literal>processIdParameter</literal> &mdash; the name a request parameter "
+"holding the process id. Default to <literal>\"processId\"</literal>."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:629
+#, no-c-format
+msgid "Annotations for transaction demarcation"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:630
+#, no-c-format
+msgid ""
+"Seam provides an annotation that lets you force a rollback of the JTA "
+"transaction for certain action listener outcomes."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:635
+#, no-c-format
+msgid "@Rollback"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:637
+#, no-c-format
+msgid "@Rollback(ifOutcome={\"failure\", \"not-found\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:638
+#, no-c-format
+msgid ""
+"If the outcome of the method matches any of the listed outcomes, or if no "
+"outcomes are listed, set the transaction to rollback only when the method "
+"completes."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:643
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; the JSF outcomes that cause a "
+"transaction rollback (no outcomes is interpreted to mean any outcome)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:651
+#, no-c-format
+msgid "<literal>@Transactional</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:653
+#, no-c-format
+msgid "<programlisting>@Transactional</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:654
+#, no-c-format
+msgid ""
+"Specifies that a JavaBean component should have a similar transactional "
+"behavior to the default behavior of a session bean component. ie. method "
+"invocations should take place in a transaction, and if no transaction exists "
+"when the method is called, a transaction will be started just for that "
+"method. This annotation may be applied at either class or method level."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:660
+#, no-c-format
+msgid ""
+"Seam applications usually use the standard EJB3 annotations for all other "
+"transaction demarcation needs."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:666
+#, no-c-format
+msgid "Annotations for exceptions"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:667
+#, no-c-format
+msgid ""
+"These annotations let you specify how Seam should handle an exception that "
+"propagates out of a Seam component."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:672
+#, no-c-format
+msgid "@Redirect"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:674
+#, no-c-format
+msgid "@Redirect(viewId=\"error.jsp\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:675
+#, no-c-format
+msgid ""
+"Specifies that the annotated exception causes a browser redirect to a "
+"specified view id."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:680
+#, no-c-format
+msgid ""
+"<literal>viewId</literal> &mdash; specifies the JSF view id to redirect to."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:685
+#, no-c-format
+msgid ""
+"<literal>message</literal> &mdash; a message to be displayed, default to the "
+"exception message."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:690 Annotations.xml:716
+#, no-c-format
+msgid ""
+"<literal>end</literal> &mdash; specifies that the long-running conversation "
+"should end, default to <literal>false</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:698
+#, no-c-format
+msgid "@HttpError"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:700
+#, no-c-format
+msgid "@HttpError(errorCode=404)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:701
+#, no-c-format
+msgid "Specifies that the annotated exception causes a HTTP error to be sent."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:706
+#, no-c-format
+msgid ""
+"<literal>errorCode</literal> &mdash; the HTTP error code, default to "
+"<literal>500</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:711
+#, no-c-format
+msgid ""
+"<literal>message</literal> &mdash; a message to be sent with the HTTP error, "
+"default to the exception message."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:727
+#, no-c-format
+msgid "Annotations for validation"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:728
+#, no-c-format
+msgid ""
+"This annotation triggers Hibernate Validator. It appears on a method of a "
+"Seam component, almost always an action listener method."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:731
+#, no-c-format
+msgid ""
+"Please refer to the documentation for the Hibernate Annotations package for "
+"information about the annotations defined by the Hibernate Validator "
+"framework."
+msgstr ""
+
+#. Tag: emphasis
+#: Annotations.xml:735
+#, no-c-format
+msgid ""
+"Note that use of <literal>@IfInvalid</literal> is now semi-deprecated and "
+"<literal>&lt;s:validateAll&gt;</literal> is now preferred."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:739
+#, no-c-format
+msgid "@IfInvalid"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:741
+#, no-c-format
+msgid "@IfInvalid(outcome=\"invalid\", refreshEntities=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:742
+#, no-c-format
+msgid ""
+"Specifies that Hibernate Validator should validate the component before the "
+"method is invoked. If the invocation fails, the specified outcome will be "
+"returned, and the validation failure messages returned by Hibernate "
+"Validator will be added to the <literal>FacesContext</literal>. Otherwise, "
+"the invocation will proceed."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:747
+#, no-c-format
+msgid ""
+"<literal>outcome</literal> &mdash; the JSF outcome when validation fails."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:752
+#, no-c-format
+msgid ""
+"<literal>refreshEntities</literal> &mdash; specifies that any invalid entity "
+"in the managed state should be refreshed from the database when validation "
+"fails. Default to <literal>false</literal>. (Useful with extended "
+"persistence contexts.)"
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:763
+#, no-c-format
+msgid "Annotations for Seam Remoting"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:764
+#, no-c-format
+msgid ""
+"Seam Remoting requires that the local interface of a session bean be "
+"annotated with the following annotation:"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:769
+#, no-c-format
+msgid "@WebRemote"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:771
+#, no-c-format
+msgid "@WebRemote(exclude=\"path.to.exclude\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:772
+#, no-c-format
+msgid ""
+"Indicates that the annotated method may be called from client-side "
+"JavaScript. The <literal>exclude</literal> property is optional and allows "
+"objects to be excluded from the result's object graph (see the Remoting "
+"chapter for more details)."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:781
+#, no-c-format
+msgid "Annotations for Seam interceptors"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:782
+#, no-c-format
+msgid "The following annotations appear on Seam interceptor classes."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:785
+#, no-c-format
+msgid ""
+"Please refer to the documentation for the EJB 3.0 specification for "
+"information about the annotations required for EJB interceptor definition."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:790
+#, no-c-format
+msgid "@Interceptor"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:792
+#, no-c-format
+msgid "@Interceptor(stateless=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:793
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is stateless and Seam may optimize "
+"replication."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:796
+#, no-c-format
+msgid "@Interceptor(type=CLIENT)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:797
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is a \"client-side\" interceptor that is "
+"called before the EJB container."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:800
+#, no-c-format
+msgid "@Interceptor(around={SomeInterceptor.class, OtherInterceptor.class})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:801
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is positioned higher in the stack than the "
+"given interceptors."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:804
+#, no-c-format
+msgid "@Interceptor(within={SomeInterceptor.class, OtherInterceptor.class})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:805
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is positioned deeper in the stack than the "
+"given interceptors."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:814
+#, no-c-format
+msgid "Annotations for asynchronicity"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:815
+#, no-c-format
+msgid ""
+"The following annotations are used to declare an asynchronous method, for "
+"example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:818
+#, no-c-format
+msgid ""
+"@Asynchronous public void scheduleAlert(Alert alert, @Expiration Date date) "
+"{ ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:819
+#, no-c-format
+msgid ""
+"@Asynchronous public Timer scheduleAlerts(Alert alert, @Expiration Date "
+"date, \n"
+"    @IntervalDuration long interval) { ... }"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:822
+#, no-c-format
+msgid "<literal>@Asynchronous</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:824
+#, no-c-format
+msgid "<programlisting>@Asynchronous</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:825
+#, no-c-format
+msgid "Specifies that the method call is processed asynchronously."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:831
+#, no-c-format
+msgid "<literal>@Duration</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:833
+#, no-c-format
+msgid "<programlisting>@Duration</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:834
+#, no-c-format
+msgid ""
+"Specifies that a parameter of the asynchronous call is the duration before "
+"the call is processed (or first processed for recurring calls)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:840
+#, no-c-format
+msgid "<literal>@Expiration</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:842
+#, no-c-format
+msgid "<programlisting>@Expiration</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:843
+#, no-c-format
+msgid ""
+"Specifies that a parameter of the asynchronous call is the datetime at which "
+"the call is processed (or first processed for recurring calls)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:849
+#, no-c-format
+msgid "<literal>@IntervalDuration</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:851
+#, no-c-format
+msgid "<programlisting>@IntervalDuration</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:852
+#, no-c-format
+msgid ""
+"Specifies that an asynchronous method call recurs, and that the annotationed "
+"parameter is duration between recurrences."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:861
+#, no-c-format
+msgid "Annotations for use with JSF <literal>dataTable</literal>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:862
+#, no-c-format
+msgid ""
+"The following annotations make it easy to implement clickable lists backed "
+"by a stateful session bean. They appear on attributes."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:867
+#, no-c-format
+msgid "@DataModel"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:869
+#, no-c-format
+msgid "@DataModel(\"variableName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:870
+#, no-c-format
+msgid ""
+"Exposes an attribute of type <literal>List</literal>, <literal>Map</"
+"literal>, <literal>Set</literal> or <literal>Object[]</literal> as a JSF "
+"<literal>DataModel</literal> into the scope of the owning component (or the "
+"<literal>EVENT</literal> scope if the owning component is "
+"<literal>STATELESS</literal>). In the case of <literal>Map</literal>, each "
+"row of the <literal>DataModel</literal> is a <literal>Map.Entry</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:875
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; name of the conversation context variable. "
+"Default to the attribute name."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:880
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; if <literal>scope=ScopeType.PAGE</literal> "
+"is explicitly specified, the <literal>DataModel</literal> will be kept in "
+"the <literal>PAGE</literal> context."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:888
+#, no-c-format
+msgid "<literal>@DataModelSelection</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:890
+#, no-c-format
+msgid "<programlisting>@DataModelSelection</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:891
+#, no-c-format
+msgid ""
+"Injects the selected value from the JSF <literal>DataModel</literal> (this "
+"is the element of the underlying collection, or the map value)."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:896 Annotations.xml:912
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; name of the conversation context variable. "
+"Not needed if there is exactly one <literal>@DataModel</literal> in the "
+"component."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:904
+#, no-c-format
+msgid "<literal>@DataModelSelectionIndex</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:906
+#, no-c-format
+msgid "<programlisting>@DataModelSelectionIndex</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:907
+#, no-c-format
+msgid ""
+"Exposes the selection index of the JSF <literal>DataModel</literal> as an "
+"attribute of the component (this is the row number of the underlying "
+"collection, or the map key)."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:923
+#, no-c-format
+msgid "Meta-annotations for databinding"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:924
+#, no-c-format
+msgid ""
+"These meta-annotations make it possible to implement similar functionality "
+"to <literal>@DataModel</literal> and <literal>@DataModelSelection</literal> "
+"for other datastructures apart from lists."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:929
+#, no-c-format
+msgid "@DataBinderClass"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:931
+#, no-c-format
+msgid "@DataBinderClass(DataModelBinder.class)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:932
+#, no-c-format
+msgid "Specifies that an annotation is a databinding annotation."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:938
+#, no-c-format
+msgid "@DataSelectorClass"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:940
+#, no-c-format
+msgid "@DataSelectorClass(DataModelSelector.class)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:941
+#, no-c-format
+msgid "Specifies that an annotation is a dataselection annotation."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:950
+#, no-c-format
+msgid "Annotations for packaging"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:951
+#, no-c-format
+msgid ""
+"This annotation provides a mechanism for declaring information about a set "
+"of components that are packaged together. It can be applied to any Java "
+"package."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:956
+#, no-c-format
+msgid "@Namespace"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:958
+#, no-c-format
+msgid "@Namespace(value=\"http://jboss.com/products/seam/example/seampay\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:959
+#, no-c-format
+msgid ""
+"Specifies that components in the current package are associated with the "
+"given namespace. The declared namespace can be used as an XML namespace in a "
+"<literal>components.xml</literal> file to simplify application configuration."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:962
+#, no-c-format
+msgid ""
+"@Namespace(value=\"http://jboss.com/products/seam/core\", prefix=\"org.jboss."
+"seam.core\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:963
+#, no-c-format
+msgid ""
+"Specifies a namespace to associate with a given package. Additionally, it "
+"specifies a component name prefix to be applied to component names specified "
+"in the XML file. For example, an XML element named <literal>microcontainer</"
+"literal> that is associated with this namespace would be understood to "
+"actually refere to a component named <literal>org.jboss.seam.core."
+"microcontainer</literal>."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Book_Info.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Book_Info.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Book_Info.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,38 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Book_Info.xml:10
+#, no-c-format
+msgid "Seam - Contextual Components"
+msgstr ""
+
+#. Tag: subtitle
+#: Book_Info.xml:11
+#, no-c-format
+msgid "A Framework for Java EE 5"
+msgstr ""
+
+#. Tag: para
+#: Book_Info.xml:15
+#, no-c-format
+msgid "This book is a Reference Guide for Seam"
+msgstr ""
+
+#. Tag: holder
+#: Book_Info.xml:36
+#, no-c-format
+msgid "&FORMAL-RHI;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Cache.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Cache.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Cache.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,318 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Cache.xml:10
+#, no-c-format
+msgid "Caching"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:11
+#, no-c-format
+msgid ""
+"In almost all enterprise applications, the database is the primary "
+"bottleneck, and the least scalable tier of the runtime environment. People "
+"from a PHP/Ruby environment will try to tell you that so-called \"shared "
+"nothing\" architectures scale well. While that may be literally true, I "
+"don't know of many interesting multi-user applications which can be "
+"implemented with no sharing of resources between different nodes of the "
+"cluster. What these silly people are really thinking of is a \"share nothing "
+"except for the database\" architecture. Of course, sharing the database is "
+"the primary problem with scaling a multi-user application&mdash;so the claim "
+"that this architecture is highly scalable is absurd, and tells you a lot "
+"about the kind of applications that these folks spend most of their time "
+"working on."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:14
+#, no-c-format
+msgid ""
+"Almost anything we can possibly do to share the database <emphasis>less "
+"often</emphasis> is worth doing."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:17
+#, no-c-format
+msgid ""
+"This calls for a cache. Well, not just one cache. A well designed Seam "
+"application will feature a rich, multi-layered caching strategy that impacts "
+"every layer of the application:"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:22
+#, no-c-format
+msgid ""
+"The database, of course, has its own cache. This is super-important, but "
+"can't scale like a cache in the application tier."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:27
+#, no-c-format
+msgid ""
+"Your ORM solution (Hibernate, or some other JPA implementation) has a second-"
+"level cache of data from the database. This is a very powerful capability, "
+"but is often misused. In a clustered environment, keeping the data in the "
+"cache transactionally consistent across the whole cluster, and with the "
+"database, is quite expensive. It makes most sense for data which is shared "
+"between many users, and is updated rarely. In traditional stateless "
+"architectures, people often try to use the second-level cache for "
+"conversational state. This is always bad, and is especially wrong in Seam."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:32
+#, no-c-format
+msgid ""
+"The Seam conversation context is a cache of conversational state. Components "
+"you put into the conversation context can hold and cache state relating to "
+"the current user interaction."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:37
+#, no-c-format
+msgid ""
+"In particular, the Seam-managed persistence context (or an extended EJB "
+"container-managed persistence context associated with a conversation-scoped "
+"stateful session bean) acts as a cache of data that has been read in the "
+"current conversation. This cache tends to have a pretty high hitrate! Seam "
+"optimizes the replication of Seam-managed persistence contexts in a "
+"clustered environment, and there is no requirement for transactional "
+"consistency with the database (optimistic locking is sufficient) so you "
+"don't need to worry too much about the performance implications of this "
+"cache, unless you read thousands of objects into a single persistence "
+"context."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:42
+#, no-c-format
+msgid ""
+"The application can cache non-transactional state in the Seam application "
+"context. State kept in the application context is of course not visible to "
+"other nodes in the cluster."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:47
+#, no-c-format
+msgid ""
+"The application can cache transactional state using the Seam "
+"<literal>pojoCache</literal> component, which integrates JBossCache into the "
+"Seam environment. This state will be visible to other nodes if you run JBoss "
+"cache in a clustered mode."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:52
+#, no-c-format
+msgid ""
+"Finally, Seam lets you cache rendered fragments of a JSF page. Unlike the "
+"ORM second-level cache, this cache is not automatically invalidated when "
+"data changes, so you need to write application code to perform explicit "
+"invalidation, or set appropriate expiration policies."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:57
+#, no-c-format
+msgid ""
+"For more information about the second-level cache, you'll need to refer to "
+"the documentation of your ORM solution, since this is an extremely complex "
+"topic. In this section we'll discuss the use of JBossCache directly, via the "
+"<literal>pojoCache</literal> component, or as the page fragment cache, via "
+"the <literal>&lt;s:cache&gt;</literal> control."
+msgstr ""
+
+#. Tag: title
+#: Cache.xml:61
+#, no-c-format
+msgid "Using JBossCache in Seam"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:62
+#, no-c-format
+msgid ""
+"The built-in <literal>pojoCache</literal> component manages an instance of "
+"<literal>org.jboss.cache.aop.PojoCache</literal>. You can safely put any "
+"immutable Java object in the cache, and it will be replicated across the "
+"cluster (assuming that replication is enabled). If you want to keep mutable "
+"objects in the cache, you'll need to run the JBossCache bytecode "
+"preprocessor to ensure that changes to the objects will be automatically "
+"detected and replicated."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:65
+#, no-c-format
+msgid ""
+"To use <literal>pojoCache</literal>, all you need to do is put the "
+"JBossCache jars in the classpath, and provide a resource named "
+"<literal>treecache.xml</literal> with an appropriate cache configuration. "
+"JBossCache has many scary and confusing configuration settings, so we won't "
+"discuss them here. Please refer to the JBossCache documentation for more "
+"information."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:68
+#, no-c-format
+msgid ""
+"For an EAR depoyment of Seam, we recommend that the JBossCache jars and "
+"configuration go directly into the EAR. Make sure you declare the jars in "
+"<literal>application.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:71
+#, no-c-format
+msgid "Now you can inject the cache into any Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:74
+#, no-c-format
+msgid ""
+"@Name(\"chatroom\")\n"
+"public class Chatroom {\n"
+"    @In PojoCache pojoCache;\n"
+"    \n"
+"    public void join(String username) {\n"
+"      try\n"
+"      {\n"
+"         Set&lt;String&gt; userList = (Set&lt;String&gt;) pojoCache.get"
+"(\"chatroom\", \"userList\");\n"
+"         if (userList==null) \n"
+"         {\n"
+"            userList = new HashSet&lt;String&gt;();\n"
+"            pojoCache.put(\"chatroom\", \"userList\", userList);\n"
+"         }\n"
+"         userList.put(username);\n"
+"      }\n"
+"      catch (CacheException ce)\n"
+"      {\n"
+"         throw new RuntimeException(ce);\n"
+"      }\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:75
+#, no-c-format
+msgid ""
+"If you want to have multiple JBossCache configurations in your application, "
+"use <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:78
+#, no-c-format
+msgid ""
+"&lt;core:pojo-cache name=\"myCache\" cfg-resource-name=\"myown/cache.xml\"/"
+"&gt;"
+msgstr ""
+
+#. Tag: title
+#: Cache.xml:82
+#, no-c-format
+msgid "Page fragment caching"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:83
+#, no-c-format
+msgid ""
+"The most interesting user of JBossCache is the <literal>&lt;s:cache&gt;</"
+"literal> tag, Seam's solution to the problem of page fragment caching in "
+"JSF. <literal>&lt;s:cache&gt;</literal> uses <literal>pojoCache</literal> "
+"internally, so you need to follow the steps listed above before you can use "
+"it. (Put the jars in the EAR, wade through the scary configuration options, "
+"etc.)"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:86
+#, no-c-format
+msgid ""
+"<literal>&lt;s:cache&gt;</literal> is used for caching some rendered content "
+"which changes rarely. For example, the welcome page of our blog displays the "
+"recent blog entries:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:89
+#, no-c-format
+msgid ""
+"&lt;s:cache key=\"recentEntries-#{blog.id}\" region=\"welcomePageFragments"
+"\"&gt;\n"
+"   &lt;h:dataTable value=\"#{blog.recentEntries}\" var=\"blogEntry\"&gt;\n"
+"      &lt;h:column&gt;\n"
+"         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"         &lt;div&gt;\n"
+"            &lt;s:formattedText value=\"#{blogEntry.body}\"/&gt;\n"
+"         &lt;/div&gt;\n"
+"      &lt;/h:column&gt;\n"
+"   &lt;/h:dataTable&gt;\n"
+"&lt;/s:cache&gt;"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:90
+#, no-c-format
+msgid ""
+"The <literal>key</literal> let's you have multiple cached versions of each "
+"page fragment. In this case, there is one cached version per blog. The "
+"<literal>region</literal> determines the JBossCache node that all version "
+"will be stored in. Different nodes may have different expiry policies. "
+"(That's the stuff you set up using the aforementioned scary configuration "
+"options.)"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:93
+#, no-c-format
+msgid ""
+"Of course, the big problem with <literal>&lt;s:cache&gt;</literal> is that "
+"it is too stupid to know when the underlying data changes (for example, when "
+"the blogger posts a new entry). So you need to evict the cached fragment "
+"manually:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:96
+#, no-c-format
+msgid ""
+"public void post() {\n"
+"    ...\n"
+"    entityManager.persist(blogEntry);\n"
+"    pojoCache.remove(\"welcomePageFragments\", \"recentEntries-\" + blog."
+"getId() );\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:97
+#, no-c-format
+msgid ""
+"Alternatively, if it is not critical that changes are immediately visible to "
+"the user, you could set a short expiry time on the JbossCache node."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Components.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Components.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Components.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2007 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Components.xml:10
+#, no-c-format
+msgid "Built-in Seam components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:11
+#, no-c-format
+msgid ""
+"This chapter describes Seam's built-in components, and their configuration "
+"properties."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:14
+#, no-c-format
+msgid ""
+"Note that you can replace any of the built in components with your own "
+"implementations simply by specifying the name of one of the built in "
+"components on your own class using <literal>@Name</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:17
+#, no-c-format
+msgid ""
+"Note also that even though all the built in components use a qualified name, "
+"most of them are aliased to unqualified names by default. These aliases "
+"specify <literal>auto-create=\"true\"</literal>, so you do not need to use "
+"<literal>create=true</literal> when injecting built-in components by their "
+"unqualified name."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:21
+#, no-c-format
+msgid "Context injection components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:22
+#, no-c-format
+msgid ""
+"The first set of built in components exist purely to support injection of "
+"various contextual objects. For example, the following component instance "
+"variable would have the Seam session context object injected:"
+msgstr ""
+
+#. Tag: programlisting
+#: Components.xml:25
+#, no-c-format
+msgid "@In private Context sessionContext;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:28
+#, no-c-format
+msgid "org.jboss.seam.core.eventContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:30
+#, no-c-format
+msgid "Manager component for the event context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:36
+#, no-c-format
+msgid "org.jboss.seam.core.pageContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:38
+#, no-c-format
+msgid "Manager component for the page context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:44
+#, no-c-format
+msgid "org.jboss.seam.core.conversationContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:46
+#, no-c-format
+msgid "Manager component for the conversation context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:52
+#, no-c-format
+msgid "org.jboss.seam.core.sessionContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:54
+#, no-c-format
+msgid "Manager component for the session context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:60
+#, no-c-format
+msgid "org.jboss.seam.core.applicationContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:62
+#, no-c-format
+msgid "Manager component for the appication context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:68
+#, no-c-format
+msgid "org.jboss.seam.core.businessProcessContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:70
+#, no-c-format
+msgid "Manager component for the business process context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:76
+#, no-c-format
+msgid "org.jboss.seam.core.facesContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:78
+#, no-c-format
+msgid ""
+"Manager component for the <literal>FacesContext</literal> context object "
+"(not a true Seam context)"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:84 Components.xml:267 Components.xml:441 Components.xml:572
+#, no-c-format
+msgid "All of these components are always installed."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:90
+#, no-c-format
+msgid "Utility components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:91
+#, no-c-format
+msgid "These components are merely useful."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:96
+#, no-c-format
+msgid "org.jboss.seam.core.facesMessages"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:98
+#, no-c-format
+msgid "Allows faces success messages to propagate across a browser redirect."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:103
+#, no-c-format
+msgid ""
+"<literal>add(FacesMessage facesMessage)</literal> &mdash; add a faces "
+"message, which will be displayed during the next render response phase that "
+"occurs in the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:108
+#, no-c-format
+msgid ""
+"<literal>add(String messageTemplate)</literal> &mdash; add a faces message, "
+"rendered from the given message template which may contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:113
+#, no-c-format
+msgid ""
+"<literal>add(Severity severity, String messageTemplate)</literal> &mdash; "
+"add a faces message, rendered from the given message template which may "
+"contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:118
+#, no-c-format
+msgid ""
+"<literal>addFromResourceBundle(String key)</literal> &mdash; add a faces "
+"message, rendered from a message template defined in the Seam resource "
+"bundle which may contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:123
+#, no-c-format
+msgid ""
+"<literal>addFromResourceBundle(Severity severity, String key)</literal> "
+"&mdash; add a faces message, rendered from a message template defined in the "
+"Seam resource bundle which may contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:128
+#, no-c-format
+msgid "<literal>clear()</literal> &mdash; clear all messages."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:136
+#, no-c-format
+msgid "org.jboss.seam.core.redirect"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:138
+#, no-c-format
+msgid ""
+"A convenient API for performing redirects with parameters (this is "
+"especially useful for bookmarkable search results screens)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:143
+#, no-c-format
+msgid ""
+"<literal>redirect.viewId</literal> &mdash; the JSF view id to redirect to."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:148
+#, no-c-format
+msgid ""
+"<literal>redirect.conversationPropagationEnabled</literal> &mdash; "
+"determines whether the conversation will propagate across the redirect."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:153
+#, no-c-format
+msgid ""
+"<literal>redirect.parameters</literal> &mdash; a map of request parameter "
+"name to value, to be passed in the redirect request."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:158
+#, no-c-format
+msgid "<literal>execute()</literal> &mdash; perform the redirect immediately."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:163
+#, no-c-format
+msgid ""
+"<literal>captureCurrentRequest()</literal> &mdash; stores the view id and "
+"request parameters of the current GET request (in the conversation context), "
+"for later use by calling <literal>execute()</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:171
+#, no-c-format
+msgid "org.jboss.seam.core.httpError"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:173
+#, no-c-format
+msgid "A convenient API for sending HTTP errors."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:179
+#, no-c-format
+msgid "org.jboss.seam.core.events"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:181
+#, no-c-format
+msgid ""
+"An API for raising events that can be observed via <literal>@Observer</"
+"literal> methods, or method bindings in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:186
+#, no-c-format
+msgid ""
+"<literal>raiseEvent(String type)</literal> &mdash; raise an event of a "
+"particular type and distribute to all observers."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:191
+#, no-c-format
+msgid ""
+"<literal>raiseAsynchronousEvent(String type)</literal> &mdash; raise an "
+"event to be processed asynchronously by the EJB3 timer service."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:196
+#, no-c-format
+msgid ""
+"<literal>raiseTimedEvent(String type, ....)</literal> &mdash; schedule an "
+"event to be processed asynchronously by the EJB3 timer service."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:201
+#, no-c-format
+msgid ""
+"<literal>addListener(String type, String methodBinding)</literal> &mdash; "
+"add an observer for a particular event type."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:209
+#, no-c-format
+msgid "org.jboss.seam.core.interpolator"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:211
+#, no-c-format
+msgid "An API for interpolating the values of JSF EL expressions in Strings."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:216
+#, no-c-format
+msgid ""
+"<literal>interpolate(String template)</literal> &mdash; scan the template "
+"for JSF EL expressions of the form <literal>#{...}</literal> and replace "
+"them with their evaluated values."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:224
+#, no-c-format
+msgid "org.jboss.seam.core.expressions"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:226
+#, no-c-format
+msgid "An API for creating value and method bindings."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:231
+#, no-c-format
+msgid ""
+"<literal>createValueBinding(String expression)</literal> &mdash; create a "
+"value binding object."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:236
+#, no-c-format
+msgid ""
+"<literal>createMethodBinding(String expression)</literal> &mdash; create a "
+"method binding object."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:244
+#, no-c-format
+msgid "org.jboss.seam.core.pojoCache"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:246
+#, no-c-format
+msgid ""
+"Manager component for a JBoss Cache <literal>PojoCache</literal> instance."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:251
+#, no-c-format
+msgid ""
+"<literal>pojoCache.cfgResourceName</literal> &mdash; the name of the "
+"configuration file. Default to <literal>treecache.xml</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:259
+#, no-c-format
+msgid "org.jboss.seam.core.uiComponent"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:261
+#, no-c-format
+msgid ""
+"Allows access to a JSF <literal>UIComponent</literal> by its id from the EL. "
+"For example, we can write <literal>@In(\"#{uiComponent['myForm:address']."
+"value}\")</literal>."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:273
+#, no-c-format
+msgid "Components for internationalization and themes"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:274
+#, no-c-format
+msgid ""
+"The next group of components make it easy to build internationalized user "
+"interfaces using Seam."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:279
+#, no-c-format
+msgid "org.jboss.seam.core.locale"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:281
+#, no-c-format
+msgid "The Seam locale. The locale is session scoped."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:287
+#, no-c-format
+msgid "org.jboss.seam.core.timezone"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:289
+#, no-c-format
+msgid "The Seam timezone. The timezone is session scoped."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:295
+#, no-c-format
+msgid "org.jboss.seam.core.resourceBundle"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:297
+#, no-c-format
+msgid ""
+"The Seam resource bundle. The resource bundle is session scoped. The Seam "
+"resource bundle performs a depth-first search for keys in a list of Java "
+"resource bundles."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:302
+#, no-c-format
+msgid ""
+"<literal>resourceBundle.bundleNames</literal> &mdash; the names of the Java "
+"resource bundles to search. Default to <literal>messages</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:310
+#, no-c-format
+msgid "org.jboss.seam.core.localeSelector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:312
+#, no-c-format
+msgid ""
+"Supports selection of the locale either at configuration time, or by the "
+"user at runtime."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:317 Components.xml:367
+#, no-c-format
+msgid "<literal>select()</literal> &mdash; select the specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:322
+#, no-c-format
+msgid ""
+"<literal>localeSelector.locale</literal> &mdash; the actual <literal>java."
+"util.Locale</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:327
+#, no-c-format
+msgid ""
+"<literal>localeSelector.localeString</literal> &mdash; the stringified "
+"representation of the locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:332
+#, no-c-format
+msgid ""
+"<literal>localeSelector.language</literal> &mdash; the language for the "
+"specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:337
+#, no-c-format
+msgid ""
+"<literal>localeSelector.country</literal> &mdash; the country for the "
+"specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:342
+#, no-c-format
+msgid ""
+"<literal>localeSelector.variant</literal> &mdash; the variant for the "
+"specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:347
+#, no-c-format
+msgid ""
+"<literal>localeSelector.supportedLocales</literal> &mdash; a list of "
+"<literal>SelectItem</literal>s representing the supported locales listed in "
+"<literal>jsf-config.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:352
+#, no-c-format
+msgid ""
+"<literal>localeSelector.cookieEnabled</literal> &mdash; specifies that the "
+"locale selection should be persisted via a cookie."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:360
+#, no-c-format
+msgid "org.jboss.seam.core.timezoneSelector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:362
+#, no-c-format
+msgid ""
+"Supports selection of the timezone either at configuration time, or by the "
+"user at runtime."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:372
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.timezone</literal> &mdash; the actual "
+"<literal>java.util.TimeZone</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:377
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.timeZoneId</literal> &mdash; the stringified "
+"representation of the timezone."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:382
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.cookieEnabled</literal> &mdash; specifies that the "
+"timezone selection should be persisted via a cookie."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:390
+#, no-c-format
+msgid "org.jboss.seam.core.messages"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:392
+#, no-c-format
+msgid ""
+"A map containing internationalized messages rendered from message templates "
+"defined in the Seam resource bundle."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:398
+#, no-c-format
+msgid "org.jboss.seam.theme.themeSelector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:400
+#, no-c-format
+msgid ""
+"Supports selection of the theme either at configuration time, or by the user "
+"at runtime."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:405
+#, no-c-format
+msgid "<literal>select()</literal> &mdash; select the specified theme."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:410
+#, no-c-format
+msgid ""
+"<literal>theme.availableThemes</literal> &mdash; the list of defined themes."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:415
+#, no-c-format
+msgid "<literal>themeSelector.theme</literal> &mdash; the selected theme."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:420
+#, no-c-format
+msgid ""
+"<literal>themeSelector.themes</literal> &mdash; a list of "
+"<literal>SelectItem</literal>s representing the defined themes."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:425
+#, no-c-format
+msgid ""
+"<literal>themeSelector.cookieEnabled</literal> &mdash; specifies that the "
+"theme selection should be persisted via a cookie."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:433
+#, no-c-format
+msgid "org.jboss.seam.theme.theme"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:435
+#, no-c-format
+msgid "A map containing theme entries."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:447
+#, no-c-format
+msgid "Components for controlling conversations"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:448
+#, no-c-format
+msgid ""
+"The next group of components allow control of conversations by the "
+"application or user interface."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:453
+#, no-c-format
+msgid "org.jboss.seam.core.conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:455
+#, no-c-format
+msgid ""
+"API for application control of attributes of the current Seam conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:460 Components.xml:475
+#, no-c-format
+msgid "<literal>getId()</literal> &mdash; returns the current conversation id"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:465
+#, no-c-format
+msgid ""
+"<literal>isNested()</literal> &mdash; is the current conversation a nested "
+"conversation?"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:470
+#, no-c-format
+msgid ""
+"<literal>isLongRunning()</literal> &mdash; is the current conversation a "
+"long-running conversation?"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:480
+#, no-c-format
+msgid ""
+"<literal>getParentId()</literal> &mdash; returns the conversation id of the "
+"parent conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:485
+#, no-c-format
+msgid ""
+"<literal>getRootId()</literal> &mdash; returns the conversation id of the "
+"root conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:490
+#, no-c-format
+msgid ""
+"<literal>setTimeout(int timeout)</literal> &mdash; sets the timeout for the "
+"current conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:495
+#, no-c-format
+msgid ""
+"<literal>setViewId(String outcome)</literal> &mdash; sets the view id to be "
+"used when switching back to the current conversation from the conversation "
+"switcher, conversation list, or breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:500
+#, no-c-format
+msgid ""
+"<literal>setDescription(String description)</literal> &mdash; sets the "
+"description of the current conversation to be displayed in the conversation "
+"switcher, conversation list, or breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:505
+#, no-c-format
+msgid ""
+"<literal>redirect()</literal> &mdash; redirect to the last well-defined view "
+"id for this conversation (useful after login challenges)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:510
+#, no-c-format
+msgid ""
+"<literal>leave()</literal> &mdash; exit the scope of this conversation, "
+"without actually ending the conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:515
+#, no-c-format
+msgid ""
+"<literal>begin()</literal> &mdash; begin a long-running conversation "
+"(equivalent to <literal>@Begin</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:520
+#, no-c-format
+msgid ""
+"<literal>beginPageflow(String pageflowName)</literal> &mdash; begin a long-"
+"running conversation with a pageflow (equivalent to <literal>@Begin(pageflow="
+"\"...\")</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:525
+#, no-c-format
+msgid ""
+"<literal>end()</literal> &mdash; end a long-running conversation (equivalent "
+"to <literal>@End</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:530
+#, no-c-format
+msgid ""
+"<literal>pop()</literal> &mdash; pop the conversation stack, returning to "
+"the parent conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:535
+#, no-c-format
+msgid ""
+"<literal>root()</literal> &mdash; return to the root conversation of the "
+"conversation stack."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:540
+#, no-c-format
+msgid ""
+"<literal>changeFlushMode(FlushModeType flushMode)</literal> &mdash; change "
+"the flush mode of the conversation."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:548
+#, no-c-format
+msgid "org.jboss.seam.core.conversationList"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:550
+#, no-c-format
+msgid "Manager component for the conversation list."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:556
+#, no-c-format
+msgid "org.jboss.seam.core.conversationStack"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:558
+#, no-c-format
+msgid "Manager component for the conversation stack (breadcrumbs)."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:564
+#, no-c-format
+msgid "org.jboss.seam.core.switcher"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:566
+#, no-c-format
+msgid "The conversation switcher."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:578
+#, no-c-format
+msgid "jBPM-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:579
+#, no-c-format
+msgid "These components are for use with jBPM."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:584
+#, no-c-format
+msgid "org.jboss.seam.core.pageflow"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:586
+#, no-c-format
+msgid "API control of Seam pageflows."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:591
+#, no-c-format
+msgid ""
+"<literal>isInProcess()</literal> &mdash; returns <literal>true</literal> if "
+"there is currently a pageflow in process"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:596
+#, no-c-format
+msgid ""
+"<literal>getProcessInstance()</literal> &mdash; returns jBPM "
+"<literal>ProcessInstance</literal> for the current pageflow"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:601
+#, no-c-format
+msgid ""
+"<literal>begin(String pageflowName)</literal> &mdash; begin a pageflow in "
+"the context of the current conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:606
+#, no-c-format
+msgid ""
+"<literal>reposition(String nodeName)</literal> &mdash; reposition the "
+"current pageflow to a particular node"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:614
+#, no-c-format
+msgid "org.jboss.seam.core.actor"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:616
+#, no-c-format
+msgid ""
+"API for application control of attributes of the jBPM actor associated with "
+"the current session."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:621
+#, no-c-format
+msgid ""
+"<literal>setId(String actorId)</literal> &mdash; sets the jBPM actor id of "
+"the current user."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:626
+#, no-c-format
+msgid ""
+"<literal>getGroupActorIds()</literal> &mdash; returns a <literal>Set</"
+"literal> to which jBPM actor ids for the current users groups may be added."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:634
+#, no-c-format
+msgid "org.jboss.seam.core.transition"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:636
+#, no-c-format
+msgid ""
+"API for application control of the jBPM transition for the current task."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:641
+#, no-c-format
+msgid ""
+"<literal>setName(String transitionName)</literal> &mdash; sets the jBPM "
+"transition name to be used when the current task is ended via "
+"<literal>@EndTask</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:649
+#, no-c-format
+msgid "org.jboss.seam.core.businessProcess"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:651
+#, no-c-format
+msgid ""
+"API for programmatic control of the association between the conversation and "
+"business process."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:656
+#, no-c-format
+msgid ""
+"<literal>businessProcess.taskId</literal> &mdash; the id of the task "
+"associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:661
+#, no-c-format
+msgid ""
+"<literal>businessProcess.processId</literal> &mdash; the id of the process "
+"associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:666
+#, no-c-format
+msgid ""
+"<literal>businessProcess.hasCurrentTask()</literal> &mdash; is a task "
+"instance associated with the current conversation?"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:671
+#, no-c-format
+msgid ""
+"<literal>businessProcess.hasCurrentProcess()</literal> &mdash; is a process "
+"instance associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:676
+#, no-c-format
+msgid ""
+"<literal>createProcess(String name)</literal> &mdash; create an instance of "
+"the named process definition and associate it with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:681
+#, no-c-format
+msgid ""
+"<literal>startTask()</literal> &mdash; start the task associated with the "
+"current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:686
+#, no-c-format
+msgid ""
+"<literal>endTask(String transitionName)</literal> &mdash; end the task "
+"associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:691
+#, no-c-format
+msgid ""
+"<literal>resumeTask(Long id)</literal> &mdash; associate the task with the "
+"given id with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:696
+#, no-c-format
+msgid ""
+"<literal>resumeProcess(Long id)</literal> &mdash; associate the process with "
+"the given id with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:701
+#, no-c-format
+msgid ""
+"<literal>transition(String transitionName)</literal> &mdash; trigger the "
+"transition."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:709
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstance"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:711
+#, no-c-format
+msgid "Manager component for the jBPM <literal>TaskInstance</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:717
+#, no-c-format
+msgid "org.jboss.seam.core.processInstance"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:719
+#, no-c-format
+msgid "Manager component for the jBPM <literal>ProcessInstance</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:725
+#, no-c-format
+msgid "org.jboss.seam.core.jbpmContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:727
+#, no-c-format
+msgid "Manager component for an event-scoped <literal>JbpmContext</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:733
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstanceList"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:735
+#, no-c-format
+msgid "Manager component for the jBPM task list."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:741
+#, no-c-format
+msgid "org.jboss.seam.core.pooledTaskInstanceList"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:743
+#, no-c-format
+msgid "Manager component for the jBPM pooled task list."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:749
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstanceListForType"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:751
+#, no-c-format
+msgid "Manager component for the jBPM task lists."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:757
+#, no-c-format
+msgid "org.jboss.seam.core.pooledTask"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:759
+#, no-c-format
+msgid "Action handler for pooled task assignment."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:765
+#, no-c-format
+msgid ""
+"All of these components are installed whenever the component <literal>org."
+"jboss.seam.core.jbpm</literal> is installed."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:771
+#, no-c-format
+msgid "Security-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:772
+#, no-c-format
+msgid "These components relate to web-tier security."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:777
+#, no-c-format
+msgid "org.jboss.seam.core.userPrincipal"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:779
+#, no-c-format
+msgid "Manager component for the current user <literal>Principal</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:785
+#, no-c-format
+msgid "org.jboss.seam.core.isUserInRole"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:787
+#, no-c-format
+msgid ""
+"Allows JSF pages to choose to render a control, depending upon the roles "
+"available to the current principal. <literal>&lt;h:commandButton value=\"edit"
+"\" rendered=\"#{isUserInRole['admin']}\"/&gt;</literal>."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:796
+#, no-c-format
+msgid "JMS-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:797
+#, no-c-format
+msgid ""
+"These components are for use with managed <literal>TopicPublisher</literal>s "
+"and <literal>QueueSender</literal>s (see below)."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:802
+#, no-c-format
+msgid "org.jboss.seam.jms.queueSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:804
+#, no-c-format
+msgid "Manager component for a JMS <literal>QueueSession</literal> ."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:810
+#, no-c-format
+msgid "org.jboss.seam.jms.topicSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:812
+#, no-c-format
+msgid "Manager component for a JMS <literal>TopicSession</literal> ."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:821
+#, no-c-format
+msgid "Mail-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:822
+#, no-c-format
+msgid "These components are for use with Seam's Email support"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:827
+#, no-c-format
+msgid "org.jboss.seam.mail.mailSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:829
+#, no-c-format
+msgid "Manager component for a JavaMail <literal>Session</literal> ."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:834
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.host</literal> &mdash; the hostname "
+"of the SMTP server to use"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:839
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.port</literal> &mdash; the port of "
+"the SMTP server to use"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:844
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.username</literal> &mdash; the "
+"username to use to connect to the SMTP server."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:849
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.password</literal> &mdash; the "
+"password to use to connect to the SMTP server"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:854
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.debug</literal> &mdash; enable "
+"JavaMail debugging (very verbose)"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:859
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.sessionJndiName</literal> &mdash; "
+"name under which a javax.mail.Session is bound to JNDI"
+msgstr ""
+
+#. Tag: title
+#: Components.xml:870
+#, no-c-format
+msgid "Infrastructural components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:871
+#, no-c-format
+msgid ""
+"These components provide critical platform infrastructure. You can install a "
+"component by including its class name in the <literal>org.jboss.seam.core."
+"init.componentClasses</literal> configuration property."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:876
+#, no-c-format
+msgid "org.jboss.seam.core.init"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:878
+#, no-c-format
+msgid "Initialization settings for Seam. Always installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:883
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.jndiPattern</literal> &mdash; the JNDI "
+"pattern used for looking up session beans"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:888
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.debug</literal> &mdash; enable Seam debug "
+"mode"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:893
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.clientSideConversations</literal> &mdash; "
+"if set to <literal>true</literal>, Seam will save conversation context "
+"variables in the client instead of in the <literal>HttpSession</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:898
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.userTransactionName</literal> &mdash; the "
+"JNDI name to use when looking up the JTA <literal>UserTransaction</literal> "
+"object."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:906
+#, no-c-format
+msgid "org.jboss.seam.core.manager"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:908
+#, no-c-format
+msgid ""
+"Internal component for Seam page and conversation context management. Always "
+"installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:913
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationTimeout</literal> &mdash; "
+"the conversation context timeout in milliseconds."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:918
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.concurrentRequestTimeout</literal> "
+"&mdash; maximum wait time for a thread attempting to gain a lock on the long-"
+"running conversation context."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:923
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationIdParameter</literal> "
+"&mdash; the request parameter used to propagate the conversation id, default "
+"to <literal>conversationId</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:928
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationIsLongRunningParameter</"
+"literal> &mdash; the request parameter used to propagate information about "
+"whether the conversation is long-running, default to "
+"<literal>conversationIsLongRunning</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:936
+#, no-c-format
+msgid "org.jboss.seam.core.pages"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:938
+#, no-c-format
+msgid "Internal component for Seam workspace management. Always installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:943
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.pages.noConversationViewId</literal> &mdash; "
+"global setting for the view id to redirect to when a conversation entry is "
+"not found on the server side."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:951
+#, no-c-format
+msgid "org.jboss.seam.core.ejb"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:953
+#, no-c-format
+msgid ""
+"Bootstraps the JBoss Embeddable EJB3 container. Install as class "
+"<literal>org.jboss.seam.core.Ejb</literal>. This is useful when using Seam "
+"with EJB components outside the context of a Java EE 5 application server."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:956
+#, no-c-format
+msgid ""
+"The basic Embedded EJB configuration is defined in <literal>jboss-embedded-"
+"beans.xml</literal>. Additional microcontainer configuration (for example, "
+"extra datasources) may be specified by <literal>jboss-beans.xml</literal> or "
+"<literal>META-INF/jboss-beans.xml</literal> in the classpath."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:962
+#, no-c-format
+msgid "org.jboss.seam.core.microcontainer"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:964
+#, no-c-format
+msgid ""
+"Bootstraps the JBoss microcontainer. Install as class <literal>org.jboss."
+"seam.core.Microcontainer</literal>. This is useful when using Seam with "
+"Hibernate and no EJB components outside the context of a Java EE application "
+"server. The microcontainer can provide a partial EE environment with JNDI, "
+"JTA, a JCA datasource and Hibernate."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:967
+#, no-c-format
+msgid ""
+"The microcontainer configuration may be specified by <literal>jboss-beans."
+"xml</literal> or <literal>META-INF/jboss-beans.xml</literal> in the "
+"classpath."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:973
+#, no-c-format
+msgid "org.jboss.seam.core.jbpm"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:975
+#, no-c-format
+msgid ""
+"Bootstraps a <literal>JbpmConfiguration</literal>. Install as class "
+"<literal>org.jboss.seam.core.Jbpm</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:980
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.jbpm.processDefinitions</literal> &mdash; a "
+"list of resource names of jPDL files to be used for orchestration of "
+"business processes."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:985
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.jbpm.pageflowDefinitions</literal> &mdash; a "
+"list of resource names of jPDL files to be used for orchestration of "
+"conversation page flows."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:993
+#, no-c-format
+msgid "org.jboss.seam.core.conversationEntries"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:995
+#, no-c-format
+msgid ""
+"Internal session-scoped component recording the active long-running "
+"conversations between requests."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1001
+#, no-c-format
+msgid "org.jboss.seam.core.facesPage"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1003
+#, no-c-format
+msgid ""
+"Internal page-scoped component recording the conversation context associated "
+"with a page."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1009
+#, no-c-format
+msgid "org.jboss.seam.core.persistenceContexts"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1011
+#, no-c-format
+msgid ""
+"Internal component recording the persistence contexts which were used in the "
+"current conversation."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1017
+#, no-c-format
+msgid "org.jboss.seam.jms.queueConnection"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1019
+#, no-c-format
+msgid ""
+"Manages a JMS <literal>QueueConnection</literal>. Installed whenever managed "
+"managed <literal>QueueSender</literal> is installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1024
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.jms.queueConnection.queueConnectionFactoryJndiName</"
+"literal> &mdash; the JNDI name of a JMS <literal>QueueConnectionFactory</"
+"literal>. Default to <literal>UIL2ConnectionFactory</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1032
+#, no-c-format
+msgid "org.jboss.seam.jms.topicConnection"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1034
+#, no-c-format
+msgid ""
+"Manages a JMS <literal>TopicConnection</literal>. Installed whenever managed "
+"managed <literal>TopicPublisher</literal> is installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1039
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.jms.topicConnection.topicConnectionFactoryJndiName</"
+"literal> &mdash; the JNDI name of a JMS <literal>TopicConnectionFactory</"
+"literal>. Default to <literal>UIL2ConnectionFactory</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1047
+#, no-c-format
+msgid "org.jboss.seam.persistence.persistenceProvider"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1049
+#, no-c-format
+msgid "Abstraction layer for non-standardized features of JPA provider."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1055
+#, no-c-format
+msgid "org.jboss.seam.core.validation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1057
+#, no-c-format
+msgid "Internal component for Hibernate Validator support."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1063
+#, no-c-format
+msgid "org.jboss.seam.debug.introspector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1065 Components.xml:1073
+#, no-c-format
+msgid "Support for the Seam Debug Page."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1071
+#, no-c-format
+msgid "org.jboss.seam.debug.contexts"
+msgstr ""
+
+#. Tag: title
+#: Components.xml:1082
+#, no-c-format
+msgid "Special components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1083
+#, no-c-format
+msgid ""
+"Certain special Seam component classes are installable multiple times under "
+"names specified in the Seam configuration. For example, the following lines "
+"in <literal>components.xml</literal> install and configure two Seam "
+"components:"
+msgstr ""
+
+#. Tag: programlisting
+#: Components.xml:1086
+#, no-c-format
+msgid ""
+"&lt;component name=\"bookingDatabase\"\n"
+"          class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"    &lt;property name=\"persistenceUnitJndiName\"&gt;java:/comp/emf/"
+"bookingPersistence&lt;/property&gt;\n"
+"&lt;/component&gt;\n"
+"\n"
+"&lt;component name=\"userDatabase\"\n"
+"          class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"    &lt;property name=\"persistenceUnitJndiName\"&gt;java:/comp/emf/"
+"userPersistence&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1087
+#, no-c-format
+msgid ""
+"The Seam component names are <literal>bookingDatabase</literal> and "
+"<literal>userDatabase</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1092
+#, no-c-format
+msgid "&lt;entityManager&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1093
+#, no-c-format
+msgid "org.jboss.seam.core.ManagedPersistenceContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1095
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed <literal>EntityManager</"
+"literal> with an extended persistence context."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1100
+#, no-c-format
+msgid ""
+"<literal>&lt;entityManager&gt;.entityManagerFactory</literal> &mdash; a "
+"value binding expression that evaluates to an instance of "
+"<literal>EntityManagerFactory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1103
+#, no-c-format
+msgid ""
+"<literal>&lt;entityManager&gt;.persistenceUnitJndiName</literal> &mdash; the "
+"JNDI name of the entity manager factory, default to <literal>java:/&lt;"
+"managedPersistenceContext&gt;</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1111
+#, no-c-format
+msgid "&lt;entityManagerFactory&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1112
+#, no-c-format
+msgid "org.jboss.seam.core.EntityManagerFactory"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1114
+#, no-c-format
+msgid ""
+"Manages a JPA <literal>EntityManagerFactory</literal>. This is most useful "
+"when using JPA outside of an EJB 3.0 supporting environment."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1119
+#, no-c-format
+msgid ""
+"<literal>entityManagerFactory.persistenceUnitName</literal> &mdash; the name "
+"of the persistence unit."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1124 Components.xml:1162
+#, no-c-format
+msgid "See the API JavaDoc for further configuration properties."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1130
+#, no-c-format
+msgid "&lt;session&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1131
+#, no-c-format
+msgid "org.jboss.seam.core.ManagedSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1133
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed Hibernate "
+"<literal>Session</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1138
+#, no-c-format
+msgid ""
+"<literal>&lt;session&gt;.sessionFactory</literal> &mdash; a value binding "
+"expression that evaluates to an instance of <literal>SessionFactory</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1141
+#, no-c-format
+msgid ""
+"<literal>&lt;session&gt;.sessionFactoryJndiName</literal> &mdash; the JNDI "
+"name of the session factory, default to <literal>java:/&lt;managedSession&gt;"
+"</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1149
+#, no-c-format
+msgid "&lt;sessionFactory&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1150
+#, no-c-format
+msgid "org.jboss.seam.core.HibernateSessionFactory"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1152
+#, no-c-format
+msgid "Manages a Hibernate <literal>SessionFactory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1157
+#, no-c-format
+msgid ""
+"<literal>&lt;sessionFactory&gt;.cfgResourceName</literal> &mdash; the path "
+"to the configuration file. Default to <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1168
+#, no-c-format
+msgid "&lt;managedQueueSender&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1169
+#, no-c-format
+msgid "org.jboss.seam.jms.ManagedQueueSender"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1171
+#, no-c-format
+msgid ""
+"Manager component for an event scoped managed JMS <literal>QueueSender</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1176
+#, no-c-format
+msgid ""
+"<literal>&lt;managedQueueSender&gt;.queueJndiName</literal> &mdash; the JNDI "
+"name of the JMS queue."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1184
+#, no-c-format
+msgid "&lt;managedTopicPublisher&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1185
+#, no-c-format
+msgid "org.jboss.seam.jms.ManagedTopicPublisher"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1187
+#, no-c-format
+msgid ""
+"Manager component for an event scoped managed JMS <literal>TopicPublisher</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1192
+#, no-c-format
+msgid ""
+"<literal>&lt;managedTopicPublisher&gt;.topicJndiName</literal> &mdash; the "
+"JNDI name of the JMS topic."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1200
+#, no-c-format
+msgid "&lt;managedWorkingMemory&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1201
+#, no-c-format
+msgid "org.jboss.seam.drools.ManagedWorkingMemory"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1203
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed Drools "
+"<literal>WorkingMemory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1208
+#, no-c-format
+msgid ""
+"<literal>&lt;managedWorkingMemory&gt;.ruleBase</literal> &mdash; a value "
+"expression that evaluates to an instance of <literal>RuleBase</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1216
+#, no-c-format
+msgid "&lt;ruleBase&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1217
+#, no-c-format
+msgid "org.jboss.seam.drools.RuleBase"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1219
+#, no-c-format
+msgid ""
+"Manager component for an application scoped Drools <literal>RuleBase</"
+"literal>. <emphasis>Note that this is not really intended for production "
+"usage, since it does not support dynamic installation of new rules.</"
+"emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1224
+#, no-c-format
+msgid ""
+"<literal>&lt;ruleBase&gt;.ruleFiles</literal> &mdash; a list of files "
+"containing Drools rules."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1227
+#, no-c-format
+msgid ""
+"<literal>&lt;ruleBase&gt;.dslFile</literal> &mdash; a Drools DSL definition."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1235
+#, no-c-format
+msgid "&lt;entityHome&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1236
+#, no-c-format
+msgid "org.jboss.seam.framework.EntityHome"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1240
+#, no-c-format
+msgid "&lt;hibernateEntityHome&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1241
+#, no-c-format
+msgid "org.jboss.seam.framework.HibernateEntityHome"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1245
+#, no-c-format
+msgid "&lt;entityQuery&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1246
+#, no-c-format
+msgid "org.jboss.seam.framework.EntityQuery"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1250
+#, no-c-format
+msgid "&lt;hibernateEntityQuery&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1251
+#, no-c-format
+msgid "org.jboss.seam.framework.HibernateEntityQuery"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Concepts.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Concepts.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Concepts.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1922 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Concepts.xml:10
+#, no-c-format
+msgid "The contextual component model"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:11
+#, no-c-format
+msgid ""
+"The two core concepts in Seam are the notion of a <emphasis>context</"
+"emphasis> and the notion of a <emphasis>component</emphasis>. Components are "
+"stateful objects, usually EJBs, and an instance of a component is associated "
+"with a context, and given a name in that context. <emphasis>Bijection</"
+"emphasis> provides a mechanism for aliasing internal component names "
+"(instance variables) to contextual names, allowing component trees to be "
+"dynamically assembled, and reassembled by Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:14
+#, no-c-format
+msgid "Let's start by describing the contexts built in to Seam."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:17
+#, no-c-format
+msgid "Seam contexts"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:18
+#, no-c-format
+msgid ""
+"Seam contexts are created and destroyed by the framework. The application "
+"does not control context demarcation via explicit Java API calls. Context "
+"are usually implicit. In some cases, however, contexts are demarcated via "
+"annotations."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:21
+#, no-c-format
+msgid "The basic Seam contexts are:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:26
+#, no-c-format
+msgid "<para>Stateless context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:31
+#, no-c-format
+msgid "Event (or request) context"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:36 Concepts.xml:151
+#, no-c-format
+msgid "<para>Page context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:41 Concepts.xml:156
+#, no-c-format
+msgid "<para>Conversation context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:46 Concepts.xml:161
+#, no-c-format
+msgid "<para>Session context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:51 Concepts.xml:166
+#, no-c-format
+msgid "<para>Business process context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:56 Concepts.xml:171
+#, no-c-format
+msgid "<para>Application context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:61
+#, no-c-format
+msgid ""
+"You will recognize some of these contexts from servlet and related "
+"specifications. However, two of them might be new to you: "
+"<emphasis>conversation context</emphasis>, and <emphasis>business process "
+"context</emphasis>. One reason state management in web applications is so "
+"fragile and error-prone is that the three built-in contexts (request, "
+"session and application) are not especially meaningful from the point of "
+"view of the business logic. A user login session, for example, is a fairly "
+"arbitrary construct in terms of the actual application work flow. Therefore, "
+"most Seam components are scoped to the conversation or business process "
+"contexts, since they are the contexts which are most meaningful in terms of "
+"the application."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:64
+#, no-c-format
+msgid "Let's look at each context in turn."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:67
+#, no-c-format
+msgid "<title>Stateless context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:68
+#, no-c-format
+msgid ""
+"Components which are truly stateless (stateless session beans, primarily) "
+"always live in the stateless context (this is really a non-context). "
+"Stateless components are not very interesting, and are arguably not very "
+"object-oriented. Nevertheless, they are important and often useful."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:71
+#, no-c-format
+msgid "<title>Event context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:72
+#, no-c-format
+msgid ""
+"The event context is the \"narrowest\" stateful context, and is a "
+"generalization of the notion of the web request context to cover other kinds "
+"of events. Nevertheless, the event context associated with the lifecycle of "
+"a JSF request is the most important example of an event context, and the one "
+"you will work with most often. Components associated with the event context "
+"are destroyed at the end of the request, but their state is available and "
+"well-defined for at least the lifecycle of the request."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:75
+#, no-c-format
+msgid ""
+"When you invoke a Seam component via RMI, or Seam Remoting, the event "
+"context is created and destroyed just for the invocation."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:78
+#, no-c-format
+msgid "<title>Page context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:79
+#, no-c-format
+msgid ""
+"The page context allows you to associate state with a particular instance of "
+"a rendered page. You can initialize state in your event listener, or while "
+"actually rendering the page, and then have access to it from any event that "
+"originates from that page. This is especially useful for functionality like "
+"clickable lists, where the list is backed by changing data on the server "
+"side. The state is actually serialized to the client, so this construct is "
+"extremely robust with respect to multi-window operation and the back button."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:82
+#, no-c-format
+msgid "<title>Conversation context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:83
+#, no-c-format
+msgid ""
+"The conversation context is a truly central concept in Seam. A "
+"<emphasis>conversation</emphasis> is a unit of work from the point of view "
+"of the user. It might span several interactions with the user, several "
+"requests, and several database transactions. But to the user, a conversation "
+"solves a single problem. For example, \"book hotel\", \"approve contract\", "
+"\"create order\" are all conversations. You might like to think of a "
+"conversation implementing a single \"use case\" or \"user story\", but the "
+"relationship is not necessarily quite exact."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:86
+#, no-c-format
+msgid ""
+"A conversation holds state associated with \"what the user is doing now, in "
+"this window\". A single user may have multiple conversations in progress at "
+"any point in time, usually in multiple windows. The conversation context "
+"allows us to ensure that state from the different conversations does not "
+"collide and cause bugs."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:89
+#, no-c-format
+msgid ""
+"It might take you some time to get used to thinking of applications in terms "
+"of conversations. But once you get used to it, we think you'll love the "
+"notion, and never be able to not think in terms of conversations again!"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:92
+#, no-c-format
+msgid ""
+"Some conversations last for just a single request. Conversations that span "
+"multiple requests must be demarcated using annotations provided by Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:95
+#, no-c-format
+msgid ""
+"Some conversations are also <emphasis>tasks</emphasis>. A task is a "
+"conversation that is significant in terms of a long-running business "
+"process, and has the potential to trigger a business process state "
+"transition when it is successfully completed. Seam provides a special set of "
+"annotations for task demarcation."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:98
+#, no-c-format
+msgid ""
+"Conversations may be <emphasis>nested</emphasis>, with one conversation "
+"taking place \"inside\" a wider conversation. This is an advanced feature."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:101
+#, no-c-format
+msgid ""
+"Usually, conversation state is actually held by Seam in the servlet session "
+"between requests. Seam implements configurable <emphasis>conversation "
+"timeout</emphasis>, automatically destroying inactive conversations, and "
+"thus ensuring that the state held by a single user login session does not "
+"grow without bound if the user abandons conversations."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:104
+#, no-c-format
+msgid ""
+"Seam serializes processing of concurrent requests that take place in the "
+"same long-running conversation context, in the same process."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:107
+#, no-c-format
+msgid ""
+"Alternatively, Seam may be configured to keep conversational state in the "
+"client browser."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:110
+#, no-c-format
+msgid "<title>Session context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:111
+#, no-c-format
+msgid ""
+"A session context holds state associated with the user login session. While "
+"there are some cases where it is useful to share state between several "
+"conversations, we generally frown on the use of session context for holding "
+"components other than global information about the logged in user."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:114
+#, no-c-format
+msgid ""
+"In a JSR-168 portal environment, the session context represents the portlet "
+"session."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:117
+#, no-c-format
+msgid "<title>Business process context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:118
+#, no-c-format
+msgid ""
+"The business process context holds state associated with the long running "
+"business process. This state is managed and made persistent by the BPM "
+"engine (JBoss jBPM). The business process spans multiple interactions with "
+"multiple users, so this state is shared between multiple users, but in a "
+"well-defined manner. The current task determines the current business "
+"process instance, and the lifecycle of the business process is defined "
+"externally using a <emphasis>process definition language</emphasis>, so "
+"there are no special annotations for business process demarcation."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:121
+#, no-c-format
+msgid "<title>Application context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:122
+#, no-c-format
+msgid ""
+"The application context is the familiar servlet context from the servlet "
+"spec. Application context is mainly useful for holding static information "
+"such as configuration data, reference data or metamodels. For example, Seam "
+"stores its own configuration and metamodel in the application context."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:125
+#, no-c-format
+msgid "Context variables"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:126
+#, no-c-format
+msgid ""
+"A context defines a namespace, a set of <emphasis>context variables</"
+"emphasis>. These work much the same as session or request attributes in the "
+"servlet spec. You may bind any value you like to a context variable, but "
+"usually we bind Seam component instances to context variables."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:129
+#, no-c-format
+msgid ""
+"So, within a context, a component instance is identified by the context "
+"variable name (this is usually, but not always, the same as the component "
+"name). You may programatically access a named component instance in a "
+"particular scope via the <literal>Contexts</literal> class, which provides "
+"access to several thread-bound instances of the <literal>Context</literal> "
+"interface:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:132
+#, no-c-format
+msgid "User user = (User) Contexts.getSessionContext().get(\"user\");"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:133
+#, no-c-format
+msgid "You may also set or change the value associated with a name:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:136
+#, no-c-format
+msgid "Contexts.getSessionContext().set(\"user\", user);"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:137
+#, no-c-format
+msgid ""
+"Usually, however, we obtain components from a context via injection, and put "
+"component instances into a context via outjection."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:140
+#, no-c-format
+msgid "Context search priority"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:141
+#, no-c-format
+msgid ""
+"Sometimes, as above, component instances are obtained from a particular "
+"known scope. Other times, all stateful scopes are searched, in "
+"<emphasis>priority order</emphasis>. The order is as follows:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:146
+#, no-c-format
+msgid "<para>Event context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:176
+#, no-c-format
+msgid ""
+"You can perform a priority search by calling <literal>Contexts."
+"lookupInStatefulContexts()</literal>. Whenever you access a component by "
+"name from a JSF page, a priority search occurs."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:179
+#, no-c-format
+msgid "Concurrency model"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:180
+#, no-c-format
+msgid ""
+"Neither the servlet nor EJB specifications define any facilities for "
+"managing concurrent requests originating from the same client. The servlet "
+"container simply lets all threads run concurrently and leaves enforcing "
+"threadsafeness to application code. The EJB container allows stateless "
+"components to be accessed concurrently, and throws an exception if multiple "
+"threads access a stateful session bean."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:183
+#, no-c-format
+msgid ""
+"This behavior might have been okay in old-style web applications which were "
+"based around fine-grained, synchronous requests. But for modern applications "
+"which make heavy use of many fine-grained, asynchronous (AJAX) requests, "
+"concurrency is a fact of life, and must be supported by the programming "
+"model. Seam weaves a concurrency management layer into its context model."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:186
+#, no-c-format
+msgid ""
+"The Seam session and application contexts are multithreaded. Seam will allow "
+"concurrent requests in a context to be processed concurrently. The event and "
+"page contexts are by nature single threaded. The business process context is "
+"strictly speaking multi-threaded, but in practice concurrency is "
+"sufficiently rare that this fact may be disregarded most of the time. "
+"Finally, Seam enforces a <emphasis>single thread per conversation per "
+"process</emphasis> model for the conversation context by serializing "
+"concurrent requests in the same long-running conversation context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:189
+#, no-c-format
+msgid ""
+"Since the session context is multithreaded, and often contains volatile "
+"state, session scope components are always protected by Seam from concurrent "
+"access. Seam serializes requests to session scope session beans and "
+"JavaBeans by default (and detects and breaks any deadlocks that occur). This "
+"is not the default behaviour for application scoped components however, "
+"since application scoped components do not usually hold volatile state and "
+"because synchronization at the global level is <emphasis>extremely</"
+"emphasis> expensive. However, you can force a serialized threading model on "
+"any session bean or JavaBean component by adding the <literal>@Synchronized</"
+"literal> annotation."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:192
+#, no-c-format
+msgid ""
+"This concurrency model means that AJAX clients can safely use volatile "
+"session and conversational state, without the need for any special work on "
+"the part of the developer."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:195
+#, no-c-format
+msgid "Seam components"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:196
+#, no-c-format
+msgid ""
+"Seam components are POJOs (Plain Old Java Objects). In particular, they are "
+"JavaBeans or EJB 3.0 enterprise beans. While Seam does not require that "
+"components be EJBs and can even be used without an EJB 3.0 compliant "
+"container, Seam was designed with EJB 3.0 in mind and includes deep "
+"integration with EJB 3.0. Seam supports the following <emphasis>component "
+"types</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:201
+#, no-c-format
+msgid "EJB 3.0 stateless session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:206
+#, no-c-format
+msgid "EJB 3.0 stateful session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:211
+#, no-c-format
+msgid "EJB 3.0 entity beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:216
+#, no-c-format
+msgid "<para>JavaBeans</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:221
+#, no-c-format
+msgid "EJB 3.0 message-driven beans"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:226
+#, no-c-format
+msgid "Stateless session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:227
+#, no-c-format
+msgid ""
+"Stateless session bean components are not able to hold state across multiple "
+"invocations. Therefore, they usually work by operating upon the state of "
+"other components in the various Seam contexts. They may be used as JSF "
+"action listeners, but cannot provide properties to JSF components for "
+"display."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:230
+#, no-c-format
+msgid "Stateless session beans always live in the stateless context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:233
+#, no-c-format
+msgid ""
+"Stateless session beans are the least interesting kind of Seam component."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:236
+#, no-c-format
+msgid "Stateful session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:237
+#, no-c-format
+msgid ""
+"Stateful session bean components are able to hold state not only across "
+"multiple invocations of the bean, but also across multiple requests. "
+"Application state that does not belong in the database should usually be "
+"held by stateful session beans. This is a major difference between Seam and "
+"many other web application frameworks. Instead of sticking information about "
+"the current conversation directly in the <literal>HttpSession</literal>, you "
+"should keep it in instance variables of a stateful session bean that is "
+"bound to the conversation context. This allows Seam to manage the lifecycle "
+"of this state for you, and ensure that there are no collisions between state "
+"relating to different concurrent conversations."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:240
+#, no-c-format
+msgid ""
+"Stateful session beans are often used as JSF action listener, and as backing "
+"beans that provide properties to JSF components for display or form "
+"submission."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:243
+#, no-c-format
+msgid ""
+"By default, stateful session beans are bound to the conversation context. "
+"They may never be bound to the page or stateless contexts."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:246
+#, no-c-format
+msgid ""
+"Concurrent requests to session-scoped stateful session beans are always "
+"serialized by Seam."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:249
+#, no-c-format
+msgid "Entity beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:250
+#, no-c-format
+msgid ""
+"Entity beans may be bound to a context variable and function as a seam "
+"component. Because entities have a persistent identity in addition to their "
+"contextual identity, entity instances are usually bound explicitly in Java "
+"code, rather than being instantiated implicitly by Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:253
+#, no-c-format
+msgid ""
+"Entity bean components do not support bijection or context demarcation. Nor "
+"does invocation of an entity bean trigger validation."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:256
+#, no-c-format
+msgid ""
+"Entity beans are not usually used as JSF action listeners, but do often "
+"function as backing beans that provide properties to JSF components for "
+"display or form submission. In particular, it is common to use an entity as "
+"a backing bean, together with a stateless session bean action listener to "
+"implement create/update/delete type functionality."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:259
+#, no-c-format
+msgid ""
+"By default, entity beans are bound to the conversation context. They may "
+"never be bound to the stateless context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:262
+#, no-c-format
+msgid ""
+"Note that it in a clustered environment is somewhat less efficient to bind "
+"an entity bean directly to a conversation or session scoped Seam context "
+"variable than it would be to hold a reference to the entity bean in a "
+"stateful session bean. For this reason, not all Seam applications define "
+"entity beans to be Seam components."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:265
+#, no-c-format
+msgid "<title>JavaBeans</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:266
+#, no-c-format
+msgid ""
+"Javabeans may be used just like a stateless or stateful session bean. "
+"However, they do not provide the functionality of a session bean "
+"(declarative transaction demarcation, declarative security, efficient "
+"clustered state replication, EJB 3.0 persistence, timeout methods, etc)."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:269
+#, no-c-format
+msgid ""
+"In a later chapter, we show you how to use Seam and Hibernate without an EJB "
+"container. In this use case, components are JavaBeans instead of session "
+"beans. Note, however, that in many application servers it is somewhat less "
+"efficient to cluster conversation or session scoped Seam JavaBean components "
+"than it is to cluster stateful session bean components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:272
+#, no-c-format
+msgid "By default, JavaBeans are bound to the event context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:275
+#, no-c-format
+msgid ""
+"Concurrent requests to session-scoped JavaBeans are always serialized by "
+"Seam."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:278
+#, no-c-format
+msgid "Message-driven beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:279
+#, no-c-format
+msgid ""
+"Message-driven beans may function as a seam component. However, message-"
+"driven beans are called quite differently to other Seam components - instead "
+"of invoking them via the context variable, they listen for messages sent to "
+"a JMS queue or topic."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:282
+#, no-c-format
+msgid ""
+"Message-driven beans may not be bound to a Seam context. Nor do they have "
+"access to the session or conversation state of their \"caller\". However, "
+"they do support bijection and some other Seam functionality."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:285
+#, no-c-format
+msgid "Interception"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:286
+#, no-c-format
+msgid ""
+"In order to perform its magic (bijection, context demarcation, validation, "
+"etc), Seam must intercept component invocations. For JavaBeans, Seam is in "
+"full control of instantiation of the component, and no special configuration "
+"is needed. For entity beans, interception is not required since bijection "
+"and context demarcation are not defined. For session beans, we must register "
+"an EJB interceptor for the session bean component. We could use an "
+"annotation, as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:289
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:290
+#, no-c-format
+msgid ""
+"But a much better way is to define the interceptor in <literal>ejb-jar.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:293
+#, no-c-format
+msgid ""
+"&lt;interceptors&gt;\n"
+"   &lt;interceptor&gt;\n"
+"      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"   &lt;/interceptor&gt;\n"
+"&lt;/interceptors&gt;\n"
+"   \n"
+"&lt;assembly-descriptor&gt;\n"
+"   &lt;interceptor-binding&gt;\n"
+"      &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"   &lt;/interceptor-binding&gt;\n"
+"&lt;/assembly-descriptor&gt;"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:294
+#, no-c-format
+msgid "Component names"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:295
+#, no-c-format
+msgid ""
+"All seam components need a name. We can assign a name to a component using "
+"the <literal>@Name</literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:298
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:299
+#, no-c-format
+msgid ""
+"This name is the <emphasis>seam component name</emphasis> and is not related "
+"to any other name defined by the EJB specification. However, seam component "
+"names work just like JSF managed bean names and you can think of the two "
+"concepts as identical."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:302
+#, no-c-format
+msgid ""
+"<literal>@Name</literal> is not the only way to define a component name, but "
+"we always need to specify the name <emphasis>somewhere</emphasis>. If we "
+"don't, then none of the other Seam annotations will function."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:305
+#, no-c-format
+msgid ""
+"Just like in JSF, a seam component instance is usually bound to a context "
+"variable with the same name as the component name. So, for example, we would "
+"access the <literal>LoginAction</literal> using <literal>Contexts."
+"getStatelessContext().get(\"loginAction\")</literal>. In particular, "
+"whenever Seam itself instantiates a component, it binds the new instance to "
+"a variable with the component name. However, again like JSF, it is possible "
+"for the application to bind a component to some other context variable by "
+"programmatic API call. This is only useful if a particular component serves "
+"more than one role in the system. For example, the currently logged in "
+"<literal>User</literal> might be bound to the <literal>currentUser</literal> "
+"session context variable, while a <literal>User</literal> that is the "
+"subject of some administration functionality might be bound to the "
+"<literal>user</literal> conversation context variable."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:308
+#, no-c-format
+msgid ""
+"For very large applications, and for built-in seam components, qualified "
+"names are often used."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:311
+#, no-c-format
+msgid ""
+"@Name(\"com.jboss.myapp.loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:312
+#, no-c-format
+msgid ""
+"We may use the qualified component name both in Java code and in JSF's "
+"expression language:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:315
+#, no-c-format
+msgid ""
+"&lt;h:commandButton type=\"submit\" value=\"Login\"\n"
+"                 action=\"#{com.jboss.myapp.loginAction.login}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:316
+#, no-c-format
+msgid ""
+"Since this is noisy, Seam also provides a means of aliasing a qualified name "
+"to a simple name. Add a line like this to the <literal>components.xml</"
+"literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:319
+#, no-c-format
+msgid ""
+"&lt;factory name=\"loginAction\" scope=\"STATELESS\" value=\"#{com.jboss."
+"myapp.loginAction}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:320
+#, no-c-format
+msgid ""
+"All of the built-in Seam components have qualified names, but most of them "
+"are aliased to a simple name by the <literal>components.xml</literal> file "
+"included in the Seam jar."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:323
+#, no-c-format
+msgid "Defining the component scope"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:324
+#, no-c-format
+msgid ""
+"We can override the default scope (context) of a component using the "
+"<literal>@Scope</literal> annotation. This lets us define what context a "
+"component instance is bound to, when it is instantiated by Seam."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:327
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(SESSION)\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:328
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.ScopeType</literal> defines an enumeration of "
+"possible scopes."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:331
+#, no-c-format
+msgid "Components with multiple roles"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:332
+#, no-c-format
+msgid ""
+"Some Seam component classes can fulfill more than one role in the system. "
+"For example, we often have a <literal>User</literal> class which is usually "
+"used as a session-scoped component representing the current user but is used "
+"in user administration screens as a conversation-scoped component. The "
+"<literal>@Role</literal> annotation lets us define an additional named role "
+"for a component, with a different scope&mdash;it lets us bind the same "
+"component class to different context variables. (Any Seam component "
+"<emphasis>instance</emphasis> may be bound to multiple context variables, "
+"but this lets us do it at the class level, and take advantage of auto-"
+"instantiation.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:335
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(CONVERSATION)\n"
+"@Role(name=\"currentUser\", scope=SESSION)\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:336
+#, no-c-format
+msgid ""
+"The <literal>@Roles</literal> annotation lets us specify as many additional "
+"roles as we like."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:339
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(CONVERSATION)\n"
+"@Roles({@Role(name=\"currentUser\", scope=SESSION)\n"
+"        @Role(name=\"tempUser\", scope=EVENT)})\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:340
+#, no-c-format
+msgid "Built-in components"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:341
+#, no-c-format
+msgid ""
+"Like many good frameworks, Seam eats its own dogfood and is implemented "
+"mostly as a set of built-in Seam interceptors (see later) and Seam "
+"components. This makes it easy for applications to interact with built-in "
+"components at runtime or even customize the basic functionality of Seam by "
+"replacing the built-in components with custom implementations. The built-in "
+"components are defined in the Seam namespace <literal>org.jboss.seam.core</"
+"literal> and the Java package of the same name."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:344
+#, no-c-format
+msgid ""
+"The built-in components may be injected, just like any Seam components, but "
+"they also provide convenient static <literal>instance()</literal> methods:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:347
+#, no-c-format
+msgid "FacesMessages.instance().add(\"Welcome back, #{user.name}!\");"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:348
+#, no-c-format
+msgid ""
+"Seam was designed to integrate tightly in a Java EE 5 environment. However, "
+"we understand that there are many projects which are not running in a full "
+"EE environment. We also realize the critical importance of easy unit and "
+"integration testing using frameworks such as TestNG and JUnit. So, we've "
+"made it easy to run Seam in Java SE environments by allowing you to boostrap "
+"certain critical infrastructure normally only found in EE environments by "
+"installing built-in Seam components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:351
+#, no-c-format
+msgid ""
+"For example, you can run your EJB3 components in Tomcat or an integration "
+"test suite just by installing the built-in component <literal>org.jboss.seam."
+"core.ejb</literal>, which automatically bootstraps the JBoss Embeddable EJB3 "
+"container and deploys your EJB components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:354
+#, no-c-format
+msgid ""
+"Or, if you're not quite ready for the Brave New World of EJB 3.0, you can "
+"write a Seam application that uses only JavaBean components, together with "
+"Hibernate3 for persistence, by installing a built-in component that manages "
+"a Hibernate <literal>SessionFactory</literal>. When using Hibernate outside "
+"of a J2EE environment, you will also probably need a JTA transaction manager "
+"and JNDI server, which are available via the built-in component <literal>org."
+"jboss.seam.core.microcontainer</literal>. This lets you use the bulletproof "
+"JTA/JCA pooling datasource from JBoss application server in an SE "
+"environment like Tomcat!"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:357
+#, no-c-format
+msgid "Bijection"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:358
+#, no-c-format
+msgid ""
+"<emphasis>Dependency injection</emphasis> or <emphasis>inversion of control</"
+"emphasis> is by now a familiar concept to most Java developers. Dependency "
+"injection allows a component to obtain a reference to another component by "
+"having the container \"inject\" the other component to a setter method or "
+"instance variable. In all dependency injection implementations that we have "
+"seen, injection occurs when the component is constructed, and the reference "
+"does not subsequently change for the lifetime of the component instance. For "
+"stateless components, this is reasonable. From the point of view of a "
+"client, all instances of a particular stateless component are "
+"interchangeable. On the other hand, Seam emphasizes the use of stateful "
+"components. So traditional dependency injection is no longer a very useful "
+"construct. Seam introduces the notion of <emphasis>bijection</emphasis> as a "
+"generalization of injection. In contrast to injection, bijection is:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:363
+#, no-c-format
+msgid ""
+"<emphasis>contextual</emphasis> - bijection is used to assemble stateful "
+"components from various different contexts (a component from a \"wider\" "
+"context may even have a reference to a component from a \"narrower\" context)"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:368
+#, no-c-format
+msgid ""
+"<emphasis>bidirectional</emphasis> - values are injected from context "
+"variables into attributes of the component being invoked, and also "
+"<emphasis>outjected</emphasis> from the component attributes back out to the "
+"context, allowing the component being invoked to manipulate the values of "
+"contextual variables simply by setting its own instance variables"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:373
+#, no-c-format
+msgid ""
+"<emphasis>dynamic</emphasis> - since the value of contextual variables "
+"changes over time, and since Seam components are stateful, bijection takes "
+"place every time a component is invoked"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:378
+#, no-c-format
+msgid ""
+"In essence, bijection lets you alias a context variable to a component "
+"instance variable, by specifying that the value of the instance variable is "
+"injected, outjected, or both. Of course, we use annotations to enable "
+"bijection."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:381
+#, no-c-format
+msgid ""
+"The <literal>@In</literal> annotation specifies that a value should be "
+"injected, either into an instance variable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:384
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:385
+#, no-c-format
+msgid "or into a setter method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:388
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @In\n"
+"    public void setUser(User user) {\n"
+"        this.user=user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:389
+#, no-c-format
+msgid ""
+"By default, Seam will do a priority search of all contexts, using the name "
+"of the property or instance variable that is being injected. You may wish to "
+"specify the context variable name explicitly, using, for example, "
+"<literal>@In(\"currentUser\")</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:392
+#, no-c-format
+msgid ""
+"If you want Seam to create an instance of the component when there is no "
+"existing component instance bound to the named context variable, you should "
+"specify <literal>@In(create=true)</literal>. If the value is optional (it "
+"can be null), specify <literal>@In(required=false)</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:395
+#, no-c-format
+msgid ""
+"For some components, it can be repetitive to have to specify <literal>@In"
+"(create=true)</literal> everywhere they are used. In such cases, you can "
+"annotate the component <literal>@AutoCreate</literal>, and then it will "
+"always be created, whenever needed, even without the explicit use of "
+"<literal>create=true</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:398
+#, no-c-format
+msgid "You can even inject the value of an expression:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:401
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In(\"#{user.username}\") String username;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:402
+#, no-c-format
+msgid ""
+"(There is much more information about component lifecycle and injection in "
+"the next chapter.)"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:405
+#, no-c-format
+msgid ""
+"The <literal>@Out</literal> annotation specifies that an attribute should be "
+"outjected, either from an instance variable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:408
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @Out User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:409
+#, no-c-format
+msgid "or from a getter method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:412
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @Out\n"
+"    public User getUser() {\n"
+"        return user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:413
+#, no-c-format
+msgid "An attribute may be both injected and outjected:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:416
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In @Out User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:417
+#, no-c-format
+msgid "<para>or:</para>"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:420
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @In\n"
+"    public void setUser(User user) {\n"
+"        this.user=user;\n"
+"    }\n"
+"    \n"
+"    @Out\n"
+"    public User getUser() {\n"
+"        return user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:421
+#, no-c-format
+msgid "Lifecycle methods"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:422
+#, no-c-format
+msgid ""
+"Session bean and entity bean Seam components support all the usual EJB 3.0 "
+"lifecycle callback (<literal>@PostConstruct</literal>, <literal>@PreDestroy</"
+"literal>, etc). Seam extends all of these callbacks except "
+"<literal>@PreDestroy</literal> to JavaBean components. But Seam also defines "
+"its own component lifecycle callbacks."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:425
+#, no-c-format
+msgid ""
+"The <literal>@Create</literal> method is called every time Seam instantiates "
+"a component. Unlike the <literal>@PostConstruct</literal> method, this "
+"method is called after the component is fully constructed by the EJB "
+"container, and has access to all the usual Seam functionality (bijection, "
+"etc). Components may define only one <literal>@Create</literal> method."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:428
+#, no-c-format
+msgid ""
+"The <literal>@Destroy</literal> method is called when the context that the "
+"Seam component is bound to ends. Components may define only one "
+"<literal>@Destroy</literal> method. Stateful session bean components "
+"<emphasis>must</emphasis> define a method annotated <literal>@Destroy "
+"@Remove</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:431
+#, no-c-format
+msgid ""
+"Finally, a related annotation is the <literal>@Startup</literal> annotation, "
+"which may be applied to any application or session scoped component. The "
+"<literal>@Startup</literal> annotation tells Seam to instantiate the "
+"component immediately, when the context begins, instead of waiting until it "
+"is first referenced by a client. It is possible to control the order of "
+"instantiation of startup components by specifying <literal>@Startup(depends="
+"{....})</literal>."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:434
+#, no-c-format
+msgid "Conditional installation"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:435
+#, no-c-format
+msgid ""
+"The <literal>@Install</literal> annotation lets you control conditional "
+"installation of components that are required in some deployment scenarios "
+"and not in others. This is useful if:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:440
+#, no-c-format
+msgid "You want to mock out some infrastructural component in tests."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:445
+#, no-c-format
+msgid ""
+"You want change the implementation of a component in certain deployment "
+"scenarios."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:450
+#, no-c-format
+msgid ""
+"You want to install some components only if their dependencies are available "
+"(useful for framework authors)."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:455
+#, no-c-format
+msgid ""
+"<literal>@Install</literal> works by letting you specify "
+"<emphasis>precedence</emphasis> and <emphasis>dependencies</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:458
+#, no-c-format
+msgid ""
+"The precedence of a component is a number that Seam uses to decide which "
+"component to install when there are multiple classes with the same component "
+"name in the classpath. Seam will choose the component with the higher "
+"precendence. There are some predefined precedence values:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:463
+#, no-c-format
+msgid ""
+"<literal>BUILT_IN</literal> &mdash; the lowest precedece components are the "
+"components built in to Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:468
+#, no-c-format
+msgid ""
+"<literal>FRAMEWORK</literal> &mdash; components defined by third-party "
+"frameworks may override built-in components, but are overridden by "
+"application components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:473
+#, no-c-format
+msgid ""
+"<literal>APPLICATION</literal> &mdash; the default precedence. This is "
+"appropriate for most application components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:478
+#, no-c-format
+msgid ""
+"<literal>DEPLOYMENT</literal> &mdash; for application components which are "
+"deployment-specific."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:483
+#, no-c-format
+msgid "<literal>MOCK</literal> &mdash; for mock objects used in testing."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:488
+#, no-c-format
+msgid ""
+"Suppose we have a component named <literal>messageSender</literal> that "
+"talks to a JMS queue."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:491
+#, no-c-format
+msgid ""
+"@Name(\"messageSender\") \n"
+"public class MessageSender {\n"
+"    public void sendMessage() {\n"
+"        //do something with JMS\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:492
+#, no-c-format
+msgid ""
+"In our unit tests, we don't have a JMS queue available, so we would like to "
+"stub out this method. We'll create a <emphasis>mock</emphasis> component "
+"that exists in the classpath when unit tests are running, but is never "
+"deployed with the application:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:495
+#, no-c-format
+msgid ""
+"@Name(\"messageSender\") \n"
+"@Install(precedence=MOCK)\n"
+"public class MockMessageSender extends MessageSender {\n"
+"    public void sendMessage() {\n"
+"        //do nothing!\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:496
+#, no-c-format
+msgid ""
+"The <literal>precedence</literal> helps Seam decide which version to use "
+"when it finds both components in the classpath."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:499
+#, no-c-format
+msgid ""
+"This is nice if we are able to control exactly which classes are in the "
+"classpath. But if I'm writing a reusable framework with many dependecies, I "
+"don't want to have to break that framework across many jars. I want to be "
+"able to decide which components to install depending upon what other "
+"components are installed, and upon what classes are available in the "
+"classpath. The <literal>@Install</literal> annotation also controls this "
+"functionality. Seam uses this mechanism internally to enable conditional "
+"installation of many of the built-in components. However, you probably won't "
+"need to use it in your application."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:502
+#, no-c-format
+msgid "Logging"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:503
+#, no-c-format
+msgid "Who is not totally fed up with seeing noisy code like this?"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:506
+#, no-c-format
+msgid ""
+"private static final Log log = LogFactory.getLog(CreateOrderAction.class);\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    if ( log.isDebugEnabled() ) {\n"
+"        log.debug(\"Creating new order for user: \" + user.username() + \n"
+"            \" product: \" + product.name() \n"
+"            + \" quantity: \" + quantity);\n"
+"    }\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:507
+#, no-c-format
+msgid ""
+"It is difficult to imagine how the code for a simple log message could "
+"possibly be more verbose. There is more lines of code tied up in logging "
+"than in the actual business logic! I remain totally astonished that the Java "
+"community has not come up with anything better in 10 years."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:510
+#, no-c-format
+msgid ""
+"Seam provides a logging API built on top of Apache commons-logging that "
+"simplifies this code significantly:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:513
+#, no-c-format
+msgid ""
+"@Logger private Log log;\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    log.debug(\"Creating new order for user: #0 product: #1 quantity: #2\", "
+"user.username(), \n"
+"       product.name(), quantity);\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:514
+#, no-c-format
+msgid ""
+"It doesn't matter if you declare the <literal>log</literal> variable static "
+"or not&mdash;it will work either way."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:517
+#, no-c-format
+msgid ""
+"Note that we don't need the noisy <literal>if ( log.isDebugEnabled() )</"
+"literal> guard, since string concatenation happens <emphasis>inside</"
+"emphasis> the <literal>debug()</literal> method. Note also that we don't "
+"usually need to specify the log category explicitly, since Seam knows what "
+"component it is injecting the <literal>Log</literal> into."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:520
+#, no-c-format
+msgid ""
+"If <literal>User</literal> and <literal>Product</literal> are Seam "
+"components available in the current contexts, it gets even better:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:523
+#, no-c-format
+msgid ""
+"@Logger private Log log;\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    log.debug(\"Creating new order for user: #{user.username} product: #"
+"{product.name}\n"
+"       quantity: #0\", quantity);\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:524
+#, no-c-format
+msgid ""
+"The <literal>Mutable</literal> interface and <literal>@ReadOnly</literal>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:525
+#, no-c-format
+msgid ""
+"Many application servers feature an amazingly broken implementation of "
+"<literal>HttpSession</literal> clustering, where changes to the state of "
+"mutable objects bound to the session are only replicated when the "
+"application calls <literal>setAttribute()</literal> explicitly. This is a "
+"source of bugs that can not effectively be tested for at development time, "
+"since they will only manifest when failover occurs. Furthermore, the actual "
+"replication message contains the entire serialized object graph bound to the "
+"session attribute, which is inefficient."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:528
+#, no-c-format
+msgid ""
+"Of course, EJB stateful session beans must perform automatic dirty checking "
+"and replication of mutable state and a sophisticated EJB container can "
+"introduce optimizations such as attribute-level replication. Unfortunately, "
+"not all Seam users have the good fortune to be working in an environment "
+"that supports EJB 3.0. So, for session and conversation scoped JavaBean and "
+"entity bean components, Seam provides an extra layer of cluster-safe state "
+"management over the top of the web container session clustering."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:531
+#, no-c-format
+msgid ""
+"For session or conversation scoped JavaBean components, Seam automatically "
+"forces replication to occur by calling <literal>setAttribute()</literal> "
+"once in every request that the component was invoked by the application. Of "
+"course, this strategy is inefficient for read-mostly components. You can "
+"control this behavior by implementing the <literal>org.jboss.seam.core."
+"Mutable</literal> interface, or by extending <literal>org.jboss.seam.core."
+"AbstractMutable</literal>, and writing your own dirty-checking logic inside "
+"the component. For example,"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:534
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class Account extends AbstractMutable\n"
+"{\n"
+"    private BigDecimal balance;\n"
+"    \n"
+"    public void setBalance(BigDecimal balance)\n"
+"    {\n"
+"        setDirty(this.balance, balance);\n"
+"        this.balance = balance;\n"
+"    }\n"
+"    \n"
+"    public BigDecimal getBalance()\n"
+"    {\n"
+"        return balance;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:535
+#, no-c-format
+msgid ""
+"Or, you can use the <literal>@ReadOnly</literal> annotation to achieve a "
+"similar effect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:538
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class Account\n"
+"{\n"
+"    private BigDecimal balance;\n"
+"    \n"
+"    public void setBalance(BigDecimal balance)\n"
+"    {\n"
+"        this.balance = balance;\n"
+"    }\n"
+"    \n"
+"    @ReadOnly\n"
+"    public BigDecimal getBalance()\n"
+"    {\n"
+"        return balance;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:539
+#, no-c-format
+msgid ""
+"For session or conversation scoped entity bean components, Seam "
+"automatically forces replication to occur by calling <literal>setAttribute()"
+"</literal> once in every request, <emphasis>unless the (conversation-scoped) "
+"entity is currently associated with a Seam-managed persistence context, in "
+"which case no replication is needed</emphasis>. This strategy is not "
+"necessarily efficient, so session or conversation scope entity beans should "
+"be used with care. You can always write a stateful session bean or JavaBean "
+"component to \"manage\" the entity bean instance. For example,"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:542
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"account\")\n"
+"public class AccountManager extends AbstractMutable\n"
+"{\n"
+"    private Account account; // an entity bean\n"
+"    \n"
+"    @Unwrap\n"
+"    public void getAccount()\n"
+"    {\n"
+"        return account;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:543
+#, no-c-format
+msgid ""
+"Note that the <literal>EntityHome</literal> class in the Seam Application "
+"Framework provides a great example of this pattern."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:546
+#, no-c-format
+msgid "Factory and manager components"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:547
+#, no-c-format
+msgid ""
+"We often need to work with objects that are not Seam components. But we "
+"still want to be able to inject them into our components using <literal>@In</"
+"literal> and use them in value and method binding expressions, etc. "
+"Sometimes, we even need to tie them into the Seam context lifecycle "
+"(<literal>@Destroy</literal>, for example). So the Seam contexts can contain "
+"objects which are not Seam components, and Seam provides a couple of nice "
+"features that make it easier to work with non-component objects bound to "
+"contexts."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:550
+#, no-c-format
+msgid ""
+"The <emphasis>factory component pattern</emphasis> lets a Seam component act "
+"as the instantiator for a non-component object. A <emphasis>factory method</"
+"emphasis> will be called when a context variable is referenced but has no "
+"value bound to it. We define factory methods using the <literal>@Factory</"
+"literal> annotation. The factory method binds a value to the context "
+"variable, and determines the scope of the bound value. There are two styles "
+"of factory method. The first style returns a value, which is bound to the "
+"context by Seam:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:553
+#, no-c-format
+msgid ""
+"@Factory(scope=CONVERSATION)\n"
+"public List&lt;Customer&gt; getCustomerList() { \n"
+"    return ... ;\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:554
+#, no-c-format
+msgid ""
+"The second style is a method of type <literal>void</literal> which binds the "
+"value to the context variable itself:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:557
+#, no-c-format
+msgid ""
+"@DataModel List&lt;Customer&gt; customerList;\n"
+"\n"
+"@Factory(\"customerList\")\n"
+"public void initCustomerList() { \n"
+"    customerList = ...  ;\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:558
+#, no-c-format
+msgid ""
+"In both cases, the factory method is called when we reference the "
+"<literal>customerList</literal> context variable and its value is null, and "
+"then has no further part to play in the lifecycle of the value. An even more "
+"powerful pattern is the <emphasis>manager component pattern</emphasis>. In "
+"this case, we have a Seam component that is bound to a context variable, "
+"that manages the value of the context variable, while remaining invisible to "
+"clients."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:561
+#, no-c-format
+msgid ""
+"A manager component is any component with an <literal>@Unwrap</literal> "
+"method. This method returns the value that will be visable to clients, and "
+"is called <emphasis>every time</emphasis> a context variable is referenced."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:564
+#, no-c-format
+msgid ""
+"@Name(\"customerList\")\n"
+"@Scope(CONVERSATION)\n"
+"public class CustomerListManager\n"
+"{\n"
+"    ...\n"
+"    \n"
+"    @Unwrap\n"
+"    public List&lt;Customer&gt; getCustomerList() { \n"
+"        return ... ;\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:565
+#, no-c-format
+msgid ""
+"This pattern is especially useful if we have some heavyweight object that "
+"needs a cleanup operation when the context ends. In this case, the manager "
+"component may perform cleanup in the <literal>@Destroy</literal> method."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Configuration.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Configuration.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Configuration.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1435 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Configuration.xml:10
+#, no-c-format
+msgid "Configuring Seam and packaging Seam applications"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:11
+#, no-c-format
+msgid ""
+"Configuration is a very boring topic and an extremely tedious pastime. "
+"Unfortunately, several lines of XML are required to integrate Seam into your "
+"JSF implementation and servlet container. There's no need to be too put off "
+"by the following sections; you'll never need to type any of this stuff "
+"yourself, since you can just copy and paste from the example applications!"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:14
+#, no-c-format
+msgid "Basic Seam configuration"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:15
+#, no-c-format
+msgid ""
+"First, let's look at the basic configuration that is needed whenever we use "
+"Seam with JSF."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:18
+#, no-c-format
+msgid "Integrating Seam with JSF and your servlet container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:19
+#, no-c-format
+msgid ""
+"Seam requires the following entry in your <literal>web.xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:22
+#, no-c-format
+msgid ""
+"&lt;listener&gt;\n"
+"    &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/listener-"
+"class&gt;\n"
+"&lt;/listener&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:23
+#, no-c-format
+msgid ""
+"This listener is responsible for bootstrapping Seam, and for destroying "
+"session and application contexts."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:26
+#, no-c-format
+msgid ""
+"To integrate with the JSF request lifecycle, we also need a JSF "
+"<literal>PhaseListener</literal> registered in in the <literal>faces-config."
+"xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:29
+#, no-c-format
+msgid ""
+"&lt;lifecycle&gt;\n"
+"    &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-"
+"listener&gt;\n"
+"&lt;/lifecycle&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:30
+#, no-c-format
+msgid ""
+"The actual listener class here varies depending upon how you want to manage "
+"transaction demarcation (more on this below)."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:33
+#, no-c-format
+msgid ""
+"If you are using Sun's JSF 1.2 reference implementation, you should also add "
+"this to <literal>faces-config.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:36
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;el-resolver&gt;org.jboss.seam.jsf.SeamELResolver&lt;/el-"
+"resolver&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:37
+#, no-c-format
+msgid ""
+"(This line should not strictly speaking be necessary, but it works around a "
+"minor bug in the RI.)"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:40
+#, no-c-format
+msgid ""
+"Some JSF implementations have a broken implementation of server-side state "
+"saving that interferes with Seam's conversation propagation. If you have "
+"problems with conversation propagation during form submissions, try "
+"switching to client-side state saving. You'll need this in <literal>web.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:43
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;client&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:44
+#, no-c-format
+msgid "Seam servlet filters"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:45
+#, no-c-format
+msgid ""
+"Seam doesn't need any servlet filters for basic operation. However, there "
+"are several features which depend upon the use of filters. To make things "
+"easier for you guys, Seam lets you add and configure servlet filters just "
+"like you would configure other built-in Seam components. To take advantage "
+"of this feature, we must first install a master filter in <literal>web.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:48
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;/*&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:49
+#, no-c-format
+msgid "Adding the master filter enables the following built-in filters."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:52
+#, no-c-format
+msgid "Exception handling"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:53
+#, no-c-format
+msgid ""
+"This filter provides the exception mapping functionality in <literal>pages."
+"xml</literal> (almost all applications will need this). It also takes care "
+"of rolling back uncommitted transactions when uncaught exceptions occur. "
+"(According to the Java EE specification, the web container should do this "
+"automatically, but we've found that this behavior cannot be relied upon in "
+"all application servers. And it is certainly not required of plain servlet "
+"engines like Tomcat.)"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:56
+#, no-c-format
+msgid ""
+"By default, the exception handling filter will process all requests, however "
+"this behavior may be adjusted by adding a <literal>&lt;web:exception-"
+"filter&gt;</literal> entry to <literal>components.xml</literal>, as shown in "
+"this example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:59
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:web=\"http://jboss.com/products/seam/web\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                    http://jboss.com/products/seam/core-1.2.xsd\n"
+"                 http://jboss.com/products/seam/components \n"
+"                     http://jboss.com/products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/web \n"
+"                     http://jboss.com/products/seam/web-1.2.xsd\"&gt;\n"
+"\n"
+"    &lt;web:exception-filter url-pattern=\"*.seam\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:62 Configuration.xml:77 Configuration.xml:99
+#: Configuration.xml:124
+#, no-c-format
+msgid ""
+"<literal>url-pattern</literal> &mdash; Used to specify which requests are "
+"filtered, the default is all requests."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:67
+#, no-c-format
+msgid "Conversation propagation with redirects"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:68
+#, no-c-format
+msgid ""
+"This filter allows Seam to propagate the conversation context across browser "
+"redirects. It intercepts any browser redirects and adds a request parameter "
+"that specifies the Seam conversation identifier."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:71
+#, no-c-format
+msgid ""
+"The redirect filter will process all requests by default, but this behavior "
+"can also be adjusted in <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:74
+#, no-c-format
+msgid "&lt;web:redirect-filter url-pattern=\"*.seam\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:82
+#, no-c-format
+msgid "Multipart form submissions"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:83
+#, no-c-format
+msgid ""
+"This feature is necessary when using the Seam file upload JSF control. It "
+"detects multipart form requests and processes them according to the "
+"multipart/form-data specification (RFC-2388). To override the default "
+"settings, add the following entry to <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:86
+#, no-c-format
+msgid ""
+"&lt;web:multipart-filter create-temp-files=\"true\" \n"
+"        max-request-size=\"1000000\" \n"
+"        url-pattern=\"*.seam\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:89
+#, no-c-format
+msgid ""
+"<literal>create-temp-files</literal> &mdash; If set to <literal>true</"
+"literal>, uploaded files are written to a temporary file (instead of held in "
+"memory). This may be an important consideration if large file uploads are "
+"expected. The default setting is <literal>false</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:94
+#, no-c-format
+msgid ""
+"<literal>max-request-size</literal> &mdash; If the size of a file upload "
+"request (determined by reading the <literal>Content-Length</literal> header "
+"in the request) exceeds this value, the request will be aborted. The default "
+"setting is 0 (no size limit)."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:104
+#, no-c-format
+msgid "Character encoding"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:105
+#, no-c-format
+msgid "Sets the character encoding of submitted form data."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:108 Configuration.xml:136
+#, no-c-format
+msgid ""
+"This filter is not installed by default and requires an entry in "
+"<literal>components.xml</literal> to enable it:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:111
+#, no-c-format
+msgid ""
+"&lt;web:character-encoding-filter encoding=\"UTF-16\" \n"
+"        override-client=\"true\" \n"
+"        url-pattern=\"*.seam\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:114
+#, no-c-format
+msgid "<literal>encoding</literal> &mdash; The encoding to use."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:119
+#, no-c-format
+msgid ""
+"<literal>override-client</literal> &mdash; If this is set to <literal>true</"
+"literal>, the request encoding will be set to whatever is specified by "
+"<literal>encoding</literal> no matter whether the request already specifies "
+"an encoding or not. If set to <literal>false</literal>, the request encoding "
+"will only be set if the request doesn't already specify an encoding. The "
+"default setting is <literal>false</literal>."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:129
+#, no-c-format
+msgid "Context management for custom servlets"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:130
+#, no-c-format
+msgid ""
+"Requests sent direct to some servlet other than the JSF servlet are not "
+"processed through the JSF lifecycle, so Seam provides a servlet filter that "
+"can be applied to any other servlet that needs access to Seam components."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:133
+#, no-c-format
+msgid ""
+"This filter allows custom servlets to interact with the Seam contexts. It "
+"sets up the Seam contexts at the beginning of each request, and tears them "
+"down at the end of the request. You should make sure that this filter is "
+"<emphasis>never</emphasis> applied to the JSF <literal>FacesServlet</"
+"literal>. Seam uses the phase listener for context management in a JSF "
+"request."
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:139
+#, no-c-format
+msgid "&lt;web:context-filter url-pattern=\"/media/*\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:142
+#, no-c-format
+msgid ""
+"<literal>url-pattern</literal> &mdash; Used to specify which requests are "
+"filtered, the default is all requests. If the url-pattern is specified for "
+"the context filter, then the filter will be enabled (unless explicitly "
+"disabled)."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:147
+#, no-c-format
+msgid ""
+"The context filter expects to find the conversation id of any conversation "
+"context in a request parameter named <literal>conversationId</literal>. You "
+"are responsible for ensuring that it gets sent in the request."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:150
+#, no-c-format
+msgid ""
+"You are also responsible for ensuring propagation of any new conversation id "
+"back to the client. Seam exposes the conversation id as a property of the "
+"built in component <literal>conversation</literal>."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:153
+#, no-c-format
+msgid "Integrating Seam with your EJB container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:154
+#, no-c-format
+msgid ""
+"We need to apply the <literal>SeamInterceptor</literal> to our Seam "
+"components. The simplest way to do this is to add the following interceptor "
+"binding to the <literal>&lt;assembly-descriptor&gt;</literal> in "
+"<literal>ejb-jar.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:157
+#, no-c-format
+msgid ""
+"&lt;interceptor-binding&gt;\n"
+"    &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"    &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"&lt;/interceptor-binding&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:158
+#, no-c-format
+msgid ""
+"Seam needs to know where to go to find session beans in JNDI. One way to do "
+"this is specify the <literal>@JndiName</literal> annotation on every session "
+"bean Seam component. However, this is quite tedious. A better approach is to "
+"specify a pattern that Seam can use to calculate the JNDI name from the EJB "
+"name. Unfortunately, there is no standard mapping to global JNDI defined in "
+"the EJB3 specification, so this mapping is vendor-specific. We usually "
+"specify this option in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:161
+#, no-c-format
+msgid "For JBoss AS, the following pattern is correct:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:164
+#, no-c-format
+msgid "&lt;core:init jndi-name=\"myEarName/#{ejbName}/local\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:165
+#, no-c-format
+msgid ""
+"Where <literal>myEarName</literal> is the name of the EAR in which the bean "
+"is deployed."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:168
+#, no-c-format
+msgid ""
+"Outside the context of an EAR (when using the JBoss Embeddable EJB3 "
+"container), the following pattern is the one to use:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:171
+#, no-c-format
+msgid "&lt;core:init jndi-name=\"#{ejbName}/local\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:172
+#, no-c-format
+msgid ""
+"You'll have to experiment to find the right setting for other application "
+"servers. Note that some servers (such as GlassFish) require you to specify "
+"JNDI names for all EJB components explicitly (and tediously). In this case, "
+"you can pick your own pattern ;-)"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:175
+#, no-c-format
+msgid "Using facelets"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:176
+#, no-c-format
+msgid ""
+"If you want follow our advice and use facelets instead of JSP, add the "
+"following lines to <literal>faces-config.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:179
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;view-handler&gt;com.sun.facelets.FaceletViewHandler&lt;/view-"
+"handler&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:180
+#, no-c-format
+msgid "And the following lines to <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:183
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;javax.faces.DEFAULT_SUFFIX&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;.xhtml&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:184
+#, no-c-format
+msgid "Don't forget!"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:185
+#, no-c-format
+msgid ""
+"There is one final item you need to know about. You must place a "
+"<literal>seam.properties</literal>, <literal>META-INF/seam.properties</"
+"literal> or <literal>META-INF/components.xml</literal> file in any archive "
+"in which your Seam components are deployed (even an empty properties file "
+"will do). At startup, Seam will scan any archives with <literal>seam."
+"properties</literal> files for seam components."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:188
+#, no-c-format
+msgid ""
+"That's why all the Seam examples have an empty <literal>seam.properties</"
+"literal> file. You can't just delete this file and expect everything to "
+"still work!"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:191
+#, no-c-format
+msgid ""
+"You might think this is silly and what kind of idiot framework designers "
+"would make an empty file affect the behavior of their software?? Well, this "
+"is a workaround for a limitation of the JVM&mdash;if we didn't use this "
+"mechanism, our next best option would be to force you to list every "
+"component explicitly in <literal>components.xml</literal>, just like some "
+"other competing frameworks do! I think you'll like our way better."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:195
+#, no-c-format
+msgid "Configuring Seam in Java EE 5"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:204
+#, no-c-format
+msgid ""
+"If you're running in a Java EE 5 environment, this is all the configuration "
+"required to start using Seam!"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:207 Configuration.xml:270 Configuration.xml:318
+#: Configuration.xml:354 Configuration.xml:371
+#, no-c-format
+msgid "Packaging"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:208
+#, no-c-format
+msgid ""
+"Once you've packaged all this stuff together into an EAR, the archive "
+"structure will look something like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:211
+#, no-c-format
+msgid ""
+"my-application.ear/\n"
+"    jboss-seam.jar\n"
+"    el-api.jar\n"
+"    el-ri.jar\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"        application.xml\n"
+"    my-application.war/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"        WEB-INF/\n"
+"            web.xml\n"
+"            components.xml\n"
+"            faces-config.xml\n"
+"            lib/\n"
+"                jsf-facelets.jar\n"
+"                jboss-seam-ui.jar\n"
+"        login.jsp\n"
+"        register.jsp\n"
+"        ...\n"
+"    my-application.jar/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"            persistence.xml\n"
+"        seam.properties\n"
+"        org/\n"
+"            jboss/\n"
+"                myapplication/\n"
+"                    User.class\n"
+"                    Login.class\n"
+"                    LoginBean.class\n"
+"                    Register.class\n"
+"                    RegisterBean.class\n"
+"                    ..."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:212
+#, no-c-format
+msgid ""
+"You must include <literal>jboss-seam.jar</literal>, <literal>el-api.jar</"
+"literal> and <literal>el-ri.jar</literal> in the EAR classpath. Make sure "
+"you reference all of these jars from <literal>application.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:215
+#, no-c-format
+msgid ""
+"If you want to use jBPM or Drools, you must include the needed jars in the "
+"EAR classpath. Make sure you reference all of the jars from "
+"<literal>application.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:218
+#, no-c-format
+msgid ""
+"If you want to use facelets (our recommendation), you must include "
+"<literal>jsf-facelets.jar</literal> in the <literal>WEB-INF/lib</literal> "
+"directory of the WAR."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:221
+#, no-c-format
+msgid ""
+"If you want to use the Seam tag library (most Seam applications do), you "
+"must include <literal>jboss-seam-ui.jar</literal> in the <literal>WEB-INF/"
+"lib</literal> directory of the WAR. If you want to use the PDF or email tag "
+"libraries, you need to put <literal>jboss-seam-pdf.jar</literal> or "
+"<literal>jboss-seam-mail.jar</literal> in <literal>WEB-INF/lib</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:224
+#, no-c-format
+msgid ""
+"If you want to use the Seam debug page (only works for applications using "
+"facelets), you must include <literal>jboss-seam-debug.jar</literal> in the "
+"<literal>WEB-INF/lib</literal> directory of the WAR."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:227
+#, no-c-format
+msgid ""
+"Seam ships with several example applications that are deployable in any Java "
+"EE container that supports EJB 3.0."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:231
+#, no-c-format
+msgid "Configuring Seam in Java SE, with the JBoss Embeddable EJB3 container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:232
+#, no-c-format
+msgid ""
+"The JBoss Embeddable EJB3 container lets you run EJB3 components outside the "
+"context of the Java EE 5 application server. This is especially, but not "
+"only, useful for testing."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:235
+#, no-c-format
+msgid ""
+"The Seam booking example application includes a TestNG integration test "
+"suite that runs on the Embeddable EJB3 container."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:246
+#, no-c-format
+msgid "The booking example application may even be deployed to Tomcat."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:257
+#, no-c-format
+msgid "Installing the Embeddable EJB3 container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:258
+#, no-c-format
+msgid ""
+"Seam ships with a build of the Embeddable EJB3 container in the "
+"<literal>embedded-ejb</literal> directory. To use the Embeddable EJB3 "
+"container with Seam, add the <literal>embedded-ejb/conf</literal> directory, "
+"and all jars in the <literal>lib</literal> and <literal>embedded-ejb/lib</"
+"literal> directories to your classpath. Then, add the following line to "
+"<literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:261
+#, no-c-format
+msgid "&lt;core:ejb /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:262
+#, no-c-format
+msgid ""
+"This setting installs the built-in component named <literal>org.jboss.seam."
+"core.ejb</literal>. This component is responsible for bootstrapping the EJB "
+"container when Seam is started, and shutting it down when the web "
+"application is undeployed."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:265
+#, no-c-format
+msgid "Configuring a datasource with the Embeddable EJB3 container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:266
+#, no-c-format
+msgid ""
+"You should refer to the Embeddable EJB3 container documentation for more "
+"information about configuring the container. You'll probably at least need "
+"to set up your own datasource. Embeddable EJB3 is implemented using the "
+"JBoss Microcontainer, so it's very easy to add new services to the minimal "
+"set of services provided by default. For example, I can add a new datasource "
+"by putting this <literal>jboss-beans.xml</literal> file in my classpath:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:269
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"\n"
+"&lt;deployment xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"urn:jboss:bean-deployer bean-deployer_1_0."
+"xsd\"\n"
+"            xmlns=\"urn:jboss:bean-deployer\"&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasourceBootstrap\"\n"
+"        class=\"org.jboss.resource.adapter.jdbc.local.LocalTxDataSource"
+"\"&gt;\n"
+"      &lt;property name=\"driverClass\"&gt;org.hsqldb.jdbcDriver&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"connectionURL\"&gt;jdbc:hsqldb:.&lt;/property&gt;\n"
+"      &lt;property name=\"userName\"&gt;sa&lt;/property&gt;\n"
+"      &lt;property name=\"jndiName\"&gt;java:/bookingDatasource&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"minSize\"&gt;0&lt;/property&gt;\n"
+"      &lt;property name=\"maxSize\"&gt;10&lt;/property&gt;\n"
+"      &lt;property name=\"blockingTimeout\"&gt;1000&lt;/property&gt;\n"
+"      &lt;property name=\"idleTimeout\"&gt;100000&lt;/property&gt;\n"
+"      &lt;property name=\"transactionManager\"&gt;\n"
+"        &lt;inject bean=\"TransactionManager\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"      &lt;property name=\"cachedConnectionManager\"&gt;\n"
+"        &lt;inject bean=\"CachedConnectionManager\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"      &lt;property name=\"initialContextProperties\"&gt;\n"
+"        &lt;inject bean=\"InitialContextProperties\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasource\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getDatasource\"&gt;\n"
+"         &lt;factory bean=\"bookingDatasourceBootstrap\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"&lt;/deployment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:271
+#, no-c-format
+msgid ""
+"The archive structure of a WAR-based deployment on an servlet engine like "
+"Tomcat will look something like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:274
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            myfaces-api.jar\n"
+"            myfaces-impl.jar\n"
+"            jboss-ejb3.jar\n"
+"            jboss-jca.jar\n"
+"            jboss-j2ee.jar\n"
+"            ...\n"
+"            mc-conf.jar/\n"
+"                ejb3-interceptors-aop.xml\n"
+"                embedded-jboss-beans.xml\n"
+"                default.persistence.properties\n"
+"                jndi.properties\n"
+"                login-config.xml\n"
+"                security-beans.xml\n"
+"                log4j.xml\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                    MANIFEST.MF\n"
+"                    persistence.xml\n"
+"                    jboss-beans.xml\n"
+"                log4j.xml\n"
+"                seam.properties\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            LoginBean.class\n"
+"                            Register.class\n"
+"                            RegisterBean.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:275
+#, no-c-format
+msgid ""
+"The <literal>mc-conf.jar</literal> just contains the standard JBoss "
+"Microcontainer configuration files for Embeddable EJB3. You won't usually "
+"need to edit these files yourself."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:278
+#, no-c-format
+msgid ""
+"Most of the Seam example applications may be deployed to Tomcat by running "
+"<literal>ant deploy.tomcat</literal>."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:281
+#, no-c-format
+msgid "Configuring Seam in J2EE"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:282
+#, no-c-format
+msgid ""
+"Seam is useful even if you're not yet ready to take the plunge into EJB 3.0. "
+"In this case you would use Hibernate3 or JPA instead of EJB 3.0 persistence, "
+"and plain JavaBeans instead of session beans. You'll miss out on some of the "
+"nice features of session beans but it will be very easy to migrate to EJB "
+"3.0 when you're ready and, in the meantime, you'll be able to take advantage "
+"of Seam's unique declarative state management architecture."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:293
+#, no-c-format
+msgid ""
+"Seam JavaBean components do not provide declarative transaction demarcation "
+"like session beans do. You <emphasis>could</emphasis> manage your "
+"transactions manually using the JTA <literal>UserTransaction</literal> (you "
+"could even implement your own declarative transaction management in a Seam "
+"interceptor). But most applications will use Seam managed transactions when "
+"using Hibernate with JavaBeans. Follow the instructions in the persistence "
+"chapter to install <literal>TransactionalSeamPhaseListener</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:296
+#, no-c-format
+msgid ""
+"The Seam distribution includes a version of the booking example application "
+"that uses Hibernate3 and JavaBeans instead of EJB3, and another version that "
+"uses JPA and JavaBeans. These example applications are ready to deploy into "
+"any J2EE application server."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:299
+#, no-c-format
+msgid ""
+"If we want to deploy Hibernate in a non-J2EE environment like Tomcat or "
+"TestNG, we need to do a little bit more work."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:302
+#, no-c-format
+msgid "Boostrapping Hibernate in Seam"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:303
+#, no-c-format
+msgid ""
+"Seam will bootstrap a Hibernate <literal>SessionFactory</literal> from your "
+"<literal>hibernate.cfg.xml</literal> file if you install a built-in "
+"component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:306
+#, no-c-format
+msgid ""
+"&lt;core:hibernate-session-factory name=\"hibernateSessionFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:307
+#, no-c-format
+msgid ""
+"You will also need to configure a <emphasis>managed session</emphasis> if "
+"you want a Seam managed Hibernate <literal>Session</literal> to be available "
+"via injection."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:310
+#, no-c-format
+msgid "Boostrapping JPA in Seam"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:311
+#, no-c-format
+msgid ""
+"Seam will bootstrap a JPA <literal>EntityManagerFactory</literal> from your "
+"<literal>persistence.xml</literal> file if you install this built-in "
+"component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:314
+#, no-c-format
+msgid "&lt;core:entity-manager-factory name=\"entityManagerFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:315
+#, no-c-format
+msgid ""
+"You will also need to configure a <emphasis>managed persistencece context</"
+"emphasis> if you want a Seam managed JPA <literal>EntityManager</literal> to "
+"be available via injection."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:319
+#, no-c-format
+msgid "We can package our application as a WAR, in the following structure:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:322
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            hibernate3.jar\n"
+"            hibernate-annotations.jar\n"
+"            ...\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                   MANIFEST.MF\n"
+"                seam.properties\n"
+"                hibernate.cfg.xml\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            Register.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:324
+#, no-c-format
+msgid "Configuring Seam in Java SE, with the JBoss Microcontainer"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:325
+#, no-c-format
+msgid ""
+"The Seam support for Hibernate and JPA requires JTA and a JCA datasource. If "
+"you are running in a non-EE environment like Tomcat or TestNG you can run "
+"these services, and Hibernate itself, in the JBoss Microcontainer."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:328
+#, no-c-format
+msgid ""
+"You can even deploy the Hibernate and JPA versions of the booking example in "
+"Tomcat."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:339
+#, no-c-format
+msgid ""
+"Seam ships with an example Microcontainer configuration in "
+"<literal>microcontainer/conf/jboss-beans.xml</literal> that provides all the "
+"things you need to run Seam with Hibernate in any non-EE environment. Just "
+"add the <literal>microcontainer/conf</literal> directory, and all jars in "
+"the <literal>lib</literal> and <literal>microcontainer/lib</literal> "
+"directories to your classpath. Refer to the documentation for the JBoss "
+"Microcontainer for more information."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:342
+#, no-c-format
+msgid "Using Hibernate and the JBoss Microcontainer"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:343
+#, no-c-format
+msgid ""
+"The built-in Seam component named <literal>org.jboss.seam.core."
+"microcontainer</literal> bootstraps the microcontainer. As before, we "
+"probably want to use a Seam managed session."
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:346
+#, no-c-format
+msgid ""
+"&lt;core:microcontainer/&gt;\n"
+"\n"
+"&lt;core:managed-hibernate-session name=\"bookingDatabase\" auto-create="
+"\"true\"\n"
+"    session-factory-jndi-name=\"java:/bookingSessionFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:347
+#, no-c-format
+msgid ""
+"Where <literal>java:/bookingSessionFactory</literal> is the name of the "
+"Hibernate session factory specified in <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:350
+#, no-c-format
+msgid ""
+"You'll need to provide a <literal>jboss.beans.xml</literal> file that "
+"installs JNDI, JTA, your JCA datasource and Hibernate into the "
+"microcontainer:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:353
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"\n"
+"&lt;deployment xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"urn:jboss:bean-deployer bean-deployer_1_0."
+"xsd\"\n"
+"            xmlns=\"urn:jboss:bean-deployer\"&gt;\n"
+"\n"
+"   &lt;bean name=\"Naming\" class=\"org.jnp.server.SingletonNamingServer\"/"
+"&gt;\n"
+"\n"
+"   &lt;bean name=\"TransactionManagerFactory\"\n"
+"       class=\"org.jboss.seam.microcontainer.TransactionManagerFactory\"/"
+"&gt;\n"
+"   &lt;bean name=\"TransactionManager\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getTransactionManager\"&gt;\n"
+"         &lt;factory bean=\"TransactionManagerFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasourceFactory\" class=\"org.jboss.seam."
+"microcontainer.DataSourceFactory\"&gt;\n"
+"      &lt;property name=\"driverClass\"&gt;org.hsqldb.jdbcDriver&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"connectionUrl\"&gt;jdbc:hsqldb:.&lt;/property&gt;\n"
+"      &lt;property name=\"userName\"&gt;sa&lt;/property&gt;\n"
+"      &lt;property name=\"jndiName\"&gt;java:/hibernateDatasource&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"minSize\"&gt;0&lt;/property&gt;\n"
+"      &lt;property name=\"maxSize\"&gt;10&lt;/property&gt;\n"
+"      &lt;property name=\"blockingTimeout\"&gt;1000&lt;/property&gt;\n"
+"      &lt;property name=\"idleTimeout\"&gt;100000&lt;/property&gt;\n"
+"      &lt;property name=\"transactionManager\"&gt;&lt;inject bean="
+"\"TransactionManager\"/&gt;&lt;/property&gt;\n"
+"   &lt;/bean&gt;\n"
+"   &lt;bean name=\"bookingDatasource\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getDataSource\"&gt;\n"
+"         &lt;factory bean=\"bookingDatasourceFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingSessionFactoryFactory\"\n"
+"       class=\"org.jboss.seam.microcontainer.HibernateFactory\"/&gt;\n"
+"   &lt;bean name=\"bookingSessionFactory\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getSessionFactory\"&gt;\n"
+"         &lt;factory bean=\"bookingSessionFactoryFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"      &lt;depends&gt;bookingDatasource&lt;/depends&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"&lt;/deployment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:355
+#, no-c-format
+msgid "The WAR could have the following structure:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:358
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            hibernate3.jar\n"
+"            ...\n"
+"            jboss-microcontainer.jar\n"
+"            jboss-jca.jar\n"
+"            ...\n"
+"            myfaces-api.jar\n"
+"            myfaces-impl.jar\n"
+"            mc-conf.jar/\n"
+"                jndi.properties\n"
+"                log4j.xml\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                    MANIFEST.MF\n"
+"                    jboss-beans.xml\n"
+"                seam.properties\n"
+"                hibernate.cfg.xml\n"
+"                log4j.xml\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            Register.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:359
+#, no-c-format
+msgid "Configuring jBPM in Seam"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:360
+#, no-c-format
+msgid ""
+"Seam's jBPM integration is not installed by default, so you'll need to "
+"enable jBPM by installing a built-in component. You'll also need to "
+"explicitly list your process and pageflow definitions. In "
+"<literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:363
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:pageflow-definitions&gt;\n"
+"        &lt;value&gt;createDocument.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;editDocument.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;approveDocument.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:pageflow-definitions&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;documentLifecycle.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:364
+#, no-c-format
+msgid ""
+"No further special configuration is needed if you only have pageflows. If "
+"you do have business process definitions, you need to provide a jBPM "
+"configuration, and a Hibernate configuration for jBPM. The Seam DVD Store "
+"demo includes example <literal>jbpm.cfg.xml</literal> and <literal>hibernate."
+"cfg.xml</literal> files that will work with Seam:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:367
+#, no-c-format
+msgid ""
+"&lt;jbpm-configuration&gt;\n"
+"\n"
+"  &lt;jbpm-context&gt;\n"
+"    &lt;service name=\"persistence\"&gt;\n"
+"       &lt;factory&gt;\n"
+"          &lt;bean class=\"org.jbpm.persistence.db."
+"DbPersistenceServiceFactory\"&gt;\n"
+"             &lt;field name=\"isTransactionEnabled\"&gt;&lt;false/&gt;&lt;/"
+"field&gt;\n"
+"          &lt;/bean&gt;\n"
+"       &lt;/factory&gt;\n"
+"    &lt;/service&gt;\n"
+"    &lt;service name=\"message\" factory=\"org.jbpm.msg.db."
+"DbMessageServiceFactory\" /&gt;\n"
+"    &lt;service name=\"scheduler\" factory=\"org.jbpm.scheduler.db."
+"DbSchedulerServiceFactory\" /&gt;\n"
+"    &lt;service name=\"logging\" factory=\"org.jbpm.logging.db."
+"DbLoggingServiceFactory\" /&gt;\n"
+"    &lt;service name=\"authentication\" \n"
+"        factory=\"org.jbpm.security.authentication."
+"DefaultAuthenticationServiceFactory\" /&gt;\n"
+"  &lt;/jbpm-context&gt;\n"
+"\n"
+"&lt;/jbpm-configuration&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:368
+#, no-c-format
+msgid ""
+"The most important thing to notice here is that jBPM transaction control is "
+"disabled. Seam or EJB3 should control the JTA transactions."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:372
+#, no-c-format
+msgid ""
+"There is not yet any well-defined packaging format for jBPM configuration "
+"and process/pageflow definition files. In the Seam examples we've decided to "
+"simply package all these files into the root of the EAR. In future, we will "
+"probably design some other standard packaging format. So the EAR looks "
+"something like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:375
+#, no-c-format
+msgid ""
+"my-application.ear/\n"
+"    jboss-seam.jar\n"
+"    el-api.jar\n"
+"    el-ri.jar\n"
+"    jbpm-3.1.jar\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"        application.xml\n"
+"    my-application.war/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"        WEB-INF/\n"
+"            web.xml\n"
+"            components.xml\n"
+"            faces-config.xml\n"
+"            lib/\n"
+"                jsf-facelets.jar\n"
+"                jboss-seam-ui.jar\n"
+"        login.jsp\n"
+"        register.jsp\n"
+"        ...\n"
+"    my-application.jar/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"            persistence.xml\n"
+"        seam.properties\n"
+"        org/\n"
+"            jboss/\n"
+"                myapplication/\n"
+"                    User.class\n"
+"                    Login.class\n"
+"                    LoginBean.class\n"
+"                    Register.class\n"
+"                    RegisterBean.class\n"
+"                    ...\n"
+"    jbpm.cfg.xml\n"
+"    hibernate.cfg.xml\n"
+"    createDocument.jpdl.xml\n"
+"    editDocument.jpdl.xml\n"
+"    approveDocument.jpdl.xml\n"
+"    documentLifecycle.jpdl.xml"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:376
+#, no-c-format
+msgid ""
+"Remember to add <literal>jbpm-3.1.jar</literal> to the manifest of your EJB-"
+"JAR and WAR."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:379
+#, no-c-format
+msgid "Configuring Seam in a Portal"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:380
+#, no-c-format
+msgid ""
+"To run a Seam application as a portlet, you'll need to provide certain "
+"portlet metadata (<literal>portlet.xml</literal>, etc) in addition to the "
+"usual Java EE metadata. See the <literal>examples/portal</literal> directory "
+"for an example of the booking demo preconfigured to run on JBoss Portal."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:383
+#, no-c-format
+msgid ""
+"In addition, you'll need to use a portlet-specific phase listener instead of "
+"<literal>SeamPhaseListener</literal> or "
+"<literal>TransactionalSeamPhaseListener</literal>. The "
+"<literal>SeamPortletPhaseListener</literal> and "
+"<literal>TransactionalSeamPortletPhaseListener</literal> are adapted to the "
+"portlet lifecycle. I would like to offer my sincerest apologies for the name "
+"of that last class. I really couldn't think of anything better. Sorry."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Controls.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Controls.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Controls.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,591 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Controls.xml:10
+#, no-c-format
+msgid "Seam JSF controls"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:11
+#, no-c-format
+msgid ""
+"Seam includes a number of JSF controls that are useful for working with "
+"Seam. These are intended to complement the built-in JSF controls, and "
+"controls from other third-party libraries. We recommend the Ajax4JSF and ADF "
+"faces (now Trinidad) tag libraries for use with Seam. We do not recommend "
+"the use of the Tomahawk tag library."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:14
+#, no-c-format
+msgid "The ui example demonstrates the use of a number of these tags."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:19
+#, no-c-format
+msgid "&lt;s:validate&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:21
+#, no-c-format
+msgid ""
+"Validate a JSF input field against the bound property using Hibernate "
+"Validator."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:27
+#, no-c-format
+msgid "&lt;s:validateAll&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:29
+#, no-c-format
+msgid ""
+"Validate all child JSF input fields against the bound propertys using "
+"Hibernate Validator."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:35
+#, no-c-format
+msgid "&lt;s:formattedText&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:37
+#, no-c-format
+msgid "Output <emphasis>Seam Text</emphasis>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:43
+#, no-c-format
+msgid "&lt;s:convertDateTime&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:45
+#, no-c-format
+msgid "Perform date or time conversions in the Seam timezone."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:51
+#, no-c-format
+msgid "&lt;s:convertEnum&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:53
+#, no-c-format
+msgid ""
+"Assigns an enum converter to the current component. This is primarily useful "
+"for radio button and dropdown controls."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:59
+#, no-c-format
+msgid "&lt;s:enumItem&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:61
+#, no-c-format
+msgid "Creates a <literal>SelectItem</literal> from an enum value."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:66
+#, no-c-format
+msgid ""
+"<literal>enumValue</literal> &mdash; the string representation of the enum "
+"value."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:71
+#, no-c-format
+msgid ""
+"<literal>label</literal> &mdash; the label to be used when rendering the "
+"<literal>SelectItem</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:79
+#, no-c-format
+msgid "&lt;s:selectItems&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:81
+#, no-c-format
+msgid ""
+"Creates a <literal>List&lt;SelectItem&gt;</literal> from a List, Set, "
+"DataModel or Array."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:86
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; an EL expression specifying the data that "
+"backs the <literal>List&lt;SelectItem&gt;</literal>"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:91
+#, no-c-format
+msgid ""
+"<literal>var</literal> &mdash; defines the name of the local variable that "
+"holds the current object during iteration"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:96
+#, no-c-format
+msgid ""
+"<literal>label</literal> &mdash; the label to be used when rendering the "
+"<literal>SelectItem</literal>. Can reference the <literal>var</literal> "
+"variable"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:101
+#, no-c-format
+msgid ""
+"<literal>disabled</literal> &mdash; if true the <literal>SelectItem</"
+"literal> will be rendered disabled. Can reference the <literal>var</literal> "
+"variable"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:106
+#, no-c-format
+msgid ""
+"<literal>noSelectionLabel</literal> &mdash; specifies the (optional) label "
+"to place at the top of list (if <literal>required=\"true\"</literal> is also "
+"specified then selecting this value will cause a validation error)"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:111
+#, no-c-format
+msgid ""
+"<literal>hideNoSelectionLabel</literal> &mdash; if true, the "
+"<literal>noSelectionLabel</literal> will be hidden when a value is selected"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:119
+#, no-c-format
+msgid "&lt;s:decorate&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:121
+#, no-c-format
+msgid "\"Decorate\" a JSF input field when validation fails."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:127
+#, no-c-format
+msgid "&lt;s:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:129
+#, no-c-format
+msgid "\"Decorate\" a JSF input field with the validation error message."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:135
+#, no-c-format
+msgid "&lt;s:span&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:137
+#, no-c-format
+msgid "Render a HTML <literal>&lt;span&gt;</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:143
+#, no-c-format
+msgid "&lt;s:div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:145
+#, no-c-format
+msgid "Render a HTML <literal>&lt;div&gt;</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:151
+#, no-c-format
+msgid "&lt;s:fragment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:153
+#, no-c-format
+msgid ""
+"A non-rendering component useful for enabling/disabling rendering of it's "
+"children"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:159
+#, no-c-format
+msgid "&lt;s:cache&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:161
+#, no-c-format
+msgid ""
+"Cache the rendered page fragment using JBoss Cache. Note that <literal>&lt;s:"
+"cache&gt;</literal> actually uses the instance of JBoss Cache managed by the "
+"built-in <literal>pojoCache</literal> component."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:166
+#, no-c-format
+msgid ""
+"<literal>key</literal> &mdash; the key to cache rendered content, often a "
+"value expression. For example, if we were caching a page fragment that "
+"displays a document, we might use <literal>key=\"Document-#{document.id}\"</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:171
+#, no-c-format
+msgid ""
+"<literal>enabled</literal> &mdash; a value expression that determines if the "
+"cache should be used."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:176
+#, no-c-format
+msgid ""
+"<literal>region</literal> &mdash; a JBoss Cache node to use (different nodes "
+"can have different expiry policies)."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:184
+#, no-c-format
+msgid "&lt;s:link&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:186
+#, no-c-format
+msgid ""
+"A link that supports invocation of an action with control over conversation "
+"propagation. <emphasis>Does not submit the form.</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:191 Controls.xml:236
+#, no-c-format
+msgid "<literal>value</literal> &mdash; the label."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:196 Controls.xml:241
+#, no-c-format
+msgid ""
+"<literal>action</literal> &mdash; a method binding that specified the action "
+"listener."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:201 Controls.xml:246
+#, no-c-format
+msgid "<literal>view</literal> &mdash; the JSF view id to link to."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:206 Controls.xml:251
+#, no-c-format
+msgid "<literal>fragment</literal> &mdash; the fragment identifier to link to."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:211 Controls.xml:256
+#, no-c-format
+msgid "<literal>disabled</literal> &mdash; is the link disabled?"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:216 Controls.xml:261 Controls.xml:301
+#, no-c-format
+msgid ""
+"<literal>propagation</literal> &mdash; determines the conversation "
+"propagation style: <literal>begin</literal>, <literal>join</literal>, "
+"<literal>nest</literal>, <literal>none</literal> or <literal>end</literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:221 Controls.xml:266 Controls.xml:306
+#, no-c-format
+msgid ""
+"<literal>pageflow</literal> &mdash; a pageflow definition to begin. (This is "
+"only useful when <literal>propagation=\"begin\"</literal> or "
+"<literal>propagation=\"join\"</literal>.)"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:229
+#, no-c-format
+msgid "&lt;s:button&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:231
+#, no-c-format
+msgid ""
+"A button that supports invocation of an action with control over "
+"conversation propagation. <emphasis>Does not submit the form.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:274
+#, no-c-format
+msgid "&lt;s:selectDate&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:276
+#, no-c-format
+msgid ""
+"Displays a dynamic date picker component that selects a date for the "
+"specified input field. The body of the <literal>selectDate</literal> element "
+"should contain HTML elements, such as text or an image, that prompt the user "
+"to click to display the date picker. The date picker can be styled using "
+"CSS. An example CSS file can be found in the Seam booking demo as "
+"<literal>date.css</literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:281
+#, no-c-format
+msgid ""
+"<literal>for</literal> &mdash; The id of the input field that the date "
+"picker will insert the selected date into."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:286
+#, no-c-format
+msgid ""
+"<literal>dateFormat</literal> &mdash; The date format string. This should "
+"match the date format of the input field."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:294
+#, no-c-format
+msgid "&lt;s:conversationPropagation&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:296
+#, no-c-format
+msgid ""
+"Customize the conversation propagation for a command link or button (or "
+"similar JSF control). <emphasis>Facelets only.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:314
+#, no-c-format
+msgid "&lt;s:conversationId&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:316
+#, no-c-format
+msgid ""
+"Add the conversation id to an output link (or similar JSF control). "
+"<emphasis>Facelets only.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:322
+#, no-c-format
+msgid "&lt;s:taskId&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:324
+#, no-c-format
+msgid ""
+"Add the task id to an output link (or similar JSF control), when the task is "
+"available via <literal>#{task}</literal>. <emphasis>Facelets only.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:330
+#, no-c-format
+msgid "&lt;s:fileUpload&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:332
+#, no-c-format
+msgid ""
+"Renders a file upload control. This control must be used within a form with "
+"an encoding type of <literal>multipart/form-data</literal>, i.e:"
+msgstr ""
+
+#. Tag: programlisting
+#: Controls.xml:335
+#, no-c-format
+msgid "&lt;h:form enctype=\"multipart/form-data\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:336
+#, no-c-format
+msgid ""
+"For multipart requests, the Seam Multipart servlet filter must also be "
+"configured in <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Controls.xml:339
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"      &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"      &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-"
+"class&gt;\n"
+"    &lt;/filter&gt;\n"
+"    \n"
+"    &lt;filter-mapping&gt;\n"
+"      &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"      &lt;url-pattern&gt;/*&lt;/url-pattern&gt;\n"
+"    &lt;/filter-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:340
+#, no-c-format
+msgid ""
+"The following configuration options for multipart requests may be configured "
+"in components.xml:"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:345
+#, no-c-format
+msgid ""
+"<literal>createTempFiles</literal> &mdash; if this option is set to true, "
+"uploaded files are streamed to a temporary file instead of in memory."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:350
+#, no-c-format
+msgid ""
+"<literal>maxRequestSize</literal> &mdash; the maximum size of a file upload "
+"request, in bytes."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:355
+#, no-c-format
+msgid "Here's an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Controls.xml:358
+#, no-c-format
+msgid ""
+"&lt;component class=\"org.jboss.seam.servlet.MultipartConfig\"&gt;\n"
+"        &lt;property name=\"createTempFiles\"&gt;true&lt;/property&gt;\n"
+"        &lt;property name=\"maxRequestSize\"&gt;1000000&lt;/property&gt;\n"
+"    &lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:359
+#, no-c-format
+msgid ""
+"And here's a list of the supported attributes for the <literal>fileUpload</"
+"literal> control:"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:364
+#, no-c-format
+msgid ""
+"<literal>data</literal> &mdash; this value binding receives the binary file "
+"data. The receiving field should be declared as a <literal>byte[]</literal> "
+"or <literal>InputStream</literal> (required)."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:369
+#, no-c-format
+msgid ""
+"<literal>contentType</literal> &mdash; this value binding receives the "
+"file's content type (optional)."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:374
+#, no-c-format
+msgid ""
+"<literal>fileName</literal> &mdash; this value binding receives the filename "
+"(optional)."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:379
+#, no-c-format
+msgid ""
+"<literal>accept</literal> &mdash; a comma-separated list of content types to "
+"accept, may not be supported by the browser. E.g. <literal>\"images/png,"
+"images/jpg\"</literal>, <literal>\"images/*\"</literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:384
+#, no-c-format
+msgid "<literal>style</literal> &mdash; The control's style"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:389
+#, no-c-format
+msgid "<literal>styleClass</literal> &mdash; The control's style class"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Conversations.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Conversations.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Conversations.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1248 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Conversations.xml:10
+#, no-c-format
+msgid "Conversations and workspace management"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:11
+#, no-c-format
+msgid "It's time to understand Seam's conversation model in more detail."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:14
+#, no-c-format
+msgid ""
+"Historically, the notion of a Seam \"conversation\" came about as a merger "
+"of three different ideas:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:19
+#, no-c-format
+msgid ""
+"The idea of a <emphasis>workspace</emphasis>, which I encountered in a "
+"project for the Victorian government in 2002. In this project I was forced "
+"to implement workspace management on top of Struts, an experience I pray "
+"never to repeat."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:24
+#, no-c-format
+msgid ""
+"The idea of an <emphasis>application transaction</emphasis> with optimistic "
+"semantics, and the realization that existing frameworks based around a "
+"stateless architecture could not provide effective management of extended "
+"persistence contexts. (The Hibernate team is truly fed up with copping the "
+"blame for <literal>LazyInitializationException</literal>s, which are not "
+"really Hibernate's fault, but rather the fault of the extremely limiting "
+"persistence context model supported by stateless architectures such as the "
+"Spring framework or the traditional <emphasis>stateless session facade</"
+"emphasis> (anti)pattern in J2EE.)"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:29
+#, no-c-format
+msgid "The idea of a workflow <emphasis>task</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:34
+#, no-c-format
+msgid ""
+"By unifying these ideas and providing deep support in the framework, we have "
+"a powerful construct that lets us build richer and more efficient "
+"applications with less code than before."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:38
+#, no-c-format
+msgid "Seam's conversation model"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:39
+#, no-c-format
+msgid ""
+"The examples we have seen so far make use of a very simple conversation "
+"model that follows these rules:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:44
+#, no-c-format
+msgid ""
+"There is always a conversation context active during the apply request "
+"values, process validations, update model values, invoke application and "
+"render response phases of the JSF request lifecycle."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:49
+#, no-c-format
+msgid ""
+"At the end of the restore view phase of the JSF request lifecycle, Seam "
+"attempts to restore any previous long-running conversation context. If none "
+"exists, Seam creates a new temporary conversation context."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:54
+#, no-c-format
+msgid ""
+"When an <literal>@Begin</literal> method is encountered, the temporary "
+"conversation context is promoted to a long running conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:59
+#, no-c-format
+msgid ""
+"When an <literal>@End</literal> method is encountered, any long-running "
+"conversation context is demoted to a temporary conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:64
+#, no-c-format
+msgid ""
+"At the end of the render response phase of the JSF request lifecycle, Seam "
+"stores the contents of a long running conversation context or destroys the "
+"contents of a temporary conversation context."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:69
+#, no-c-format
+msgid ""
+"Any faces request (a JSF postback) will propagate the conversation context. "
+"By default, non-faces requests (GET requests, for example) do not propagate "
+"the conversation context, but see below for more information on this."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:74
+#, no-c-format
+msgid ""
+"If the JSF request lifecycle is foreshortened by a redirect, Seam "
+"transparently stores and restores the current conversation context&mdash;"
+"unless the conversation was already ended via <literal>@End"
+"(beforeRedirect=true)</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:79
+#, no-c-format
+msgid ""
+"Seam transparently propagates the conversation context across JSF postbacks "
+"and redirects. If you don't do anything special, a <emphasis>non-faces "
+"request</emphasis> (a GET request for example) will not propagate the "
+"conversation context and will be processed in a new temporary conversation. "
+"This is usually - but not always - the desired behavior."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:82
+#, no-c-format
+msgid ""
+"If you want to propagate a Seam conversation across a non-faces request, you "
+"need to explicitly code the Seam <emphasis>conversation id</emphasis> as a "
+"request parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:85
+#, no-c-format
+msgid ""
+"&lt;a href=\"main.jsf?conversationId=#{conversation.id}\"&gt;Continue&lt;/"
+"a&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:86
+#, no-c-format
+msgid "Or, the more JSF-ish:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:89
+#, no-c-format
+msgid ""
+"&lt;h:outputLink value=\"main.jsf\"&gt;\n"
+"    &lt;f:param name=\"conversationId\" value=\"#{conversation.id}\"/&gt;\n"
+"    &lt;h:outputText value=\"Continue\"/&gt;\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:90 Conversations.xml:98
+#, no-c-format
+msgid "If you use the Seam tag library, this is equivalent:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:93
+#, no-c-format
+msgid ""
+"&lt;h:outputLink value=\"main.jsf\"&gt;\n"
+"    &lt;s:conversationId/&gt;\n"
+"    &lt;h:outputText value=\"Continue\"/&gt;\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:94
+#, no-c-format
+msgid ""
+"If you wish to disable propagation of the conversation context for a "
+"postback, a similar trick is used:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:97
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;f:param name=\"conversationPropagation\" value=\"none\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:101
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"none\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:102
+#, no-c-format
+msgid ""
+"Note that disabling conversation context propagation is absolutely not the "
+"same thing as ending the conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:105
+#, no-c-format
+msgid ""
+"The <literal>conversationPropagation</literal> request parameter, or the "
+"<literal>&lt;s:conversationPropagation&gt;</literal> tag may even be used to "
+"begin and end conversation, or begin a nested conversation."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:108
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"end\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:109
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Child\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"nested\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:110
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Hotel\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"begin\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:111
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Hotel\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"join\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:112
+#, no-c-format
+msgid ""
+"This conversation model makes it easy to build applications which behave "
+"correctly with respect to multi-window operation. For many applications, "
+"this is all that is needed. Some complex applications have either or both of "
+"the following additional requirements:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:117
+#, no-c-format
+msgid ""
+"A conversation spans many smaller units of user interaction, which execute "
+"serially or even concurrently. The smaller <emphasis>nested conversations</"
+"emphasis> have their own isolated set of conversation state, and also have "
+"access to the state of the outer conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:122
+#, no-c-format
+msgid ""
+"The user is able to switch between many conversations within the same "
+"browser window. This feature is called <emphasis>workspace management</"
+"emphasis>."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:130
+#, no-c-format
+msgid "Nested conversations"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:131
+#, no-c-format
+msgid ""
+"A nested conversation is created by invoking a method marked <literal>@Begin"
+"(nested=true)</literal> inside the scope of an existing conversation. A "
+"nested conversation has its own conversation context, and also has read-only "
+"access to the context of the outer conversation. (It can read the outer "
+"conversation's context variables, but not write to them.) When an "
+"<literal>@End</literal> is subsequently encountered, the nested conversation "
+"will be destroyed, and the outer conversation will resume, by \"popping\" "
+"the conversation stack. Conversations may be nested to any arbitrary depth."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:134
+#, no-c-format
+msgid ""
+"Certain user activity (workspace management, or the back button) can cause "
+"the outer conversation to be resumed before the inner conversation is ended. "
+"In this case it is possible to have multiple concurrent nested conversations "
+"belonging to the same outer conversation. If the outer conversation ends "
+"before a nested conversation ends, Seam destroys all nested conversation "
+"contexts along with the outer context."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:137
+#, no-c-format
+msgid ""
+"A conversation may be thought of as a <emphasis>continuable state</"
+"emphasis>. Nested conversations allow the application to capture a "
+"consistent continuable state at various points in a user interaction, thus "
+"insuring truly correct behavior in the face of backbuttoning and workspace "
+"management."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:140
+#, no-c-format
+msgid ""
+"TODO: an example to show how a nested conversation prevents bad stuff "
+"happening when you backbutton."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:143
+#, no-c-format
+msgid ""
+"Usually, if a component exists in a parent conversation of the current "
+"nested conversation, the nested conversation will use the same instance. "
+"Occasionally, it is useful to have a different instance in each nested "
+"conversation, so that the component instance that exists in the parent "
+"conversation is invisible to its child conversations. You can achieve this "
+"behavior by annotating the component <literal>@PerNestedConversation</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:149
+#, no-c-format
+msgid "Starting conversations with GET requests"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:150
+#, no-c-format
+msgid ""
+"JSF does not define any kind of action listener that is triggered when a "
+"page is accessed via a non-faces request (for example, a HTTP GET request). "
+"This can occur if the user bookmarks the page, or if we navigate to the page "
+"via an <literal>&lt;h:outputLink&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:153
+#, no-c-format
+msgid ""
+"Sometimes we want to begin a conversation immediately the page is accessed. "
+"Since there is no JSF action method, we can't solve the problem in the usual "
+"way, by annotating the action with <literal>@Begin</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:156
+#, no-c-format
+msgid ""
+"A further problem arises if the page needs some state to be fetched into a "
+"context variable. We've already seen two ways to solve this problem. If that "
+"state is held in a Seam component, we can fetch the state in a "
+"<literal>@Create</literal> method. If not, we can define a "
+"<literal>@Factory</literal> method for the context variable."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:159
+#, no-c-format
+msgid ""
+"If none of these options works for you, Seam lets you define a "
+"<emphasis>page action</emphasis> in the <literal>pages.xml</literal> file."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:162
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\" action=\"#{messageManager.list}\"/"
+"&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:163
+#, no-c-format
+msgid ""
+"This action method is called at the beginning of the render response phase, "
+"any time the page is about to be rendered. If a page action returns a non-"
+"null outcome, Seam will process any appropriate JSF and Seam navigation "
+"rules, possibly resulting in a completely different page being rendered."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:166
+#, no-c-format
+msgid ""
+"If <emphasis>all</emphasis> you want to do before rendering the page is "
+"begin a conversation, you could use a built-in action method that does just "
+"that:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:169
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\" action=\"#{conversation.begin}\"/"
+"&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:170
+#, no-c-format
+msgid ""
+"Note that you can also call this built-in action from a JSF control, and, "
+"similarly, you can use <literal>#{conversation.end}</literal> to end "
+"conversations."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:173
+#, no-c-format
+msgid ""
+"If you want more control, to join existing conversations or begin a nested "
+"conversion, to begin a pageflow or an atomic conversation, you should use "
+"the <literal>&lt;begin-conversation&gt;</literal> element."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:176
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\"&gt;\n"
+"       &lt;begin-conversation nested=\"true\" pageflow=\"AddItem\"/&gt;\n"
+"    &lt;page&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:177
+#, no-c-format
+msgid "There is also an <literal>&lt;end-conversation&gt;</literal> element."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:180
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/home.jsp\"&gt;\n"
+"       &lt;end-conversation/&gt;\n"
+"    &lt;page&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:181
+#, no-c-format
+msgid "To solve the first problem, we now have five options:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:186
+#, no-c-format
+msgid ""
+"Annotate the <literal>@Create</literal> method with <literal>@Begin</literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:191
+#, no-c-format
+msgid ""
+"Annotate the <literal>@Factory</literal> method with <literal>@Begin</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:196
+#, no-c-format
+msgid "Annotate the Seam page action method with <literal>@Begin</literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:201
+#, no-c-format
+msgid ""
+"Use <literal>&lt;begin-conversation&gt;</literal> in <literal>pages.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:206
+#, no-c-format
+msgid ""
+"Use <literal>#{conversation.begin}</literal> as the Seam page action method"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:214
+#, no-c-format
+msgid ""
+"Using <literal>&lt;s:link&gt;</literal> and <literal>&lt;s:button&gt;</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:215
+#, no-c-format
+msgid ""
+"JSF command links always perform a form submission via JavaScript, which "
+"breaks the web browser's \"open in new window\" or \"open in new tab\" "
+"feature. In plain JSF, you need to use an <literal>&lt;h:outputLink&gt;</"
+"literal> if you need this functionality. But there are two major limitations "
+"to <literal>&lt;h:outputLink&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:220
+#, no-c-format
+msgid ""
+"JSF provides no way to attach an action listener to an <literal>&lt;h:"
+"outputLink&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:225
+#, no-c-format
+msgid ""
+"JSF does not propagate the selected row of a <literal>DataModel</literal> "
+"since there is no actual form submission."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:230
+#, no-c-format
+msgid ""
+"Seam provides the notion of a <emphasis>page action</emphasis> to help solve "
+"the first problem, but this does nothing to help us with the second problem. "
+"We <emphasis>could</emphasis> work around this by using the RESTful approach "
+"of passing a request parameter and requerying for the selected object on the "
+"server side. In some cases&mdash;such as the Seam blog example "
+"application&mdash;this is indeed the best approach. The RESTful style "
+"supports bookmarking, since it does not require server-side state. In other "
+"cases, where we don't care about bookmarks, the use of <literal>@DataModel</"
+"literal> and <literal>@DataModelSelection</literal> is just so convenient "
+"and transparent!"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:233
+#, no-c-format
+msgid ""
+"To fill in this missing functionality, and to make conversation propagation "
+"even simpler to manage, Seam provides the <literal>&lt;s:link&gt;</literal> "
+"JSF tag."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:236
+#, no-c-format
+msgid "The link may specify just the JSF view id:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:239
+#, no-c-format
+msgid ""
+"&lt;s:link view=&#8220;/login.xhtml&#8221; value=&#8220;Login&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:240
+#, no-c-format
+msgid ""
+"Or, it may specify an action method (in which case the action outcome "
+"determines the page that results):"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:243
+#, no-c-format
+msgid ""
+"&lt;s:link action=&#8220;#{login.logout}&#8221; value=&#8220;Logout&#8221;/"
+"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:244
+#, no-c-format
+msgid ""
+"If you specify <emphasis>both</emphasis> a JSF view id and an action method, "
+"the 'view' will be used <emphasis>unless</emphasis> the action method "
+"returns a non-null outcome:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:247
+#, no-c-format
+msgid ""
+"&lt;s:link view=\"/loggedOut.xhtml\"  action=&#8220;#{login.logout}&#8221; "
+"value=&#8220;Logout&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:248
+#, no-c-format
+msgid ""
+"The link automatically propagates the selected row of a <literal>DataModel</"
+"literal> using inside <literal>&lt;h:dataTable&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:251
+#, no-c-format
+msgid ""
+"&lt;s:link view=&#8220;/hotel.xhtml&#8221; action=&#8220;#{hotelSearch."
+"selectHotel}&#8221; value=&#8220;#{hotel.name}&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:252
+#, no-c-format
+msgid "You can leave the scope of an existing conversation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:255
+#, no-c-format
+msgid ""
+"&lt;s:link view=&#8220;/main.xhtml&#8221; propagation=&#8220;none&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:256
+#, no-c-format
+msgid "You can begin, end, or nest conversations:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:259
+#, no-c-format
+msgid ""
+"&lt;s:link action=&#8220;#{issueEditor.viewComment}&#8221; "
+"propagation=&#8220;nest&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:260
+#, no-c-format
+msgid ""
+"If the link begins a conversation, you can even specify a pageflow to be "
+"used:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:263
+#, no-c-format
+msgid ""
+"&lt;s:link action=&#8220;#{documentEditor.getDocument}&#8221; "
+"propagation=&#8220;begin&#8221; \n"
+"        pageflow=&#8220;EditDocument&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:264
+#, no-c-format
+msgid ""
+"The <literal>taskInstance</literal> attribute if for use in jBPM task lists:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:267
+#, no-c-format
+msgid ""
+"&lt;s:link action=&#8220;#{documentApproval.approveOrReject}&#8221; "
+"taskInstance=&#8220;#{task}&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:268
+#, no-c-format
+msgid "(See the DVD Store demo application for examples of this.)"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:271
+#, no-c-format
+msgid ""
+"Finally, if you need the \"link\" to be rendered as a button, use "
+"<literal>&lt;s:button&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:274
+#, no-c-format
+msgid ""
+"&lt;s:button action=&#8220;#{login.logout}&#8221; value=&#8220;Logout&#8221;/"
+"&gt;"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:278
+#, no-c-format
+msgid "Success messages"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:279
+#, no-c-format
+msgid ""
+"It is quite common to display a message to the user indicating success or "
+"failure of an action. It is convenient to use a JSF <literal>FacesMessage</"
+"literal> for this. Unfortunately, a successful action often requires a "
+"browser redirect, and JSF does not propagate faces messages across "
+"redirects. This makes it quite difficult to display success messages in "
+"plain JSF."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:282
+#, no-c-format
+msgid ""
+"The built in conversation-scoped Seam component named "
+"<literal>facesMessages</literal> solves this problem. (You must have the "
+"Seam redirect filter installed.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:285
+#, no-c-format
+msgid ""
+"@Name(\"editDocumentAction\")\n"
+"@Stateless\n"
+"public class EditDocumentBean implements EditDocument {\n"
+"    @In EntityManager em;\n"
+"    @In Document document;\n"
+"    @In FacesMessages facesMessages;\n"
+"    \n"
+"    public String update() {\n"
+"        em.merge(document);\n"
+"        facesMessages.add(\"Document updated\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:286
+#, no-c-format
+msgid ""
+"Any message added to <literal>facesMessages</literal> is used in the very "
+"next render response phase for the current conversation. This even works "
+"when there is no long-running conversation since Seam preserves even "
+"temporary conversation contexts across redirects."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:289
+#, no-c-format
+msgid "You can even include JSF EL expressions in a faces message summary:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:292
+#, no-c-format
+msgid "facesMessages.add(\"Document #{document.title} was updated\");"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:293
+#, no-c-format
+msgid "You may display the messages in the usual way, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:296
+#, no-c-format
+msgid "&lt;h:messages globalOnly=\"true\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:300
+#, no-c-format
+msgid "Using an \"explicit\" conversation id"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:301
+#, no-c-format
+msgid ""
+"Ordinarily, Seam generates a meaningless unique id for each conversation in "
+"each session. You can customize the id value when you begin the conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:304
+#, no-c-format
+msgid ""
+"This feature can be used to customize the conversation id generation "
+"algorithm like so:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:307
+#, no-c-format
+msgid ""
+"@Begin(id=\"#{myConversationIdGenerator.nextId}\") \n"
+"public void editHotel() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:308
+#, no-c-format
+msgid "Or it can be used to assign a meaningful conversation id:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:311
+#, no-c-format
+msgid ""
+"@Begin(id=\"hotel#{hotel.id}\") \n"
+"public String editHotel() { ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:312
+#, no-c-format
+msgid ""
+"@Begin(id=\"hotel#{hotelsDataModel.rowData.id}\") \n"
+"public String selectHotel() { ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:313
+#, no-c-format
+msgid ""
+"@Begin(id=\"entry#{params['blogId']}\")\n"
+"public String viewBlogEntry() { ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:314
+#, no-c-format
+msgid ""
+"@BeginTask(id=\"task#{taskInstance.id}\") \n"
+"public String approveDocument() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:315
+#, no-c-format
+msgid ""
+"Clearly, these example result in the same conversation id every time a "
+"particular hotel, blog or task is selected. So what happens if a "
+"conversation with the same conversation id already exists when the new "
+"conversation begins? Well, Seam detects the existing conversation and "
+"redirects to that conversation without running the <literal>@Begin</literal> "
+"method again. This feature helps control the number of workspaces that are "
+"created when using workspace management."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:321
+#, no-c-format
+msgid "Workspace management"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:322
+#, no-c-format
+msgid ""
+"Workspace management is the ability to \"switch\" conversations in a single "
+"window. Seam makes workspace management completely transparent at the level "
+"of the Java code. To enable workspace management, all you need to do is:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:327
+#, no-c-format
+msgid ""
+"Provide <emphasis>description</emphasis> text for each view id (when using "
+"JSF or Seam navigation rules) or page node (when using jPDL pageflows). This "
+"description text is displayed to the user by the workspace switchers."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:332
+#, no-c-format
+msgid ""
+"Include one or more of the standard workspace switcher JSP or facelets "
+"fragments in your pages. The standard fragments support workspace management "
+"via a drop down menu, a list of conversations, or breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:335
+#, no-c-format
+msgid ""
+"Please refer to the Seam Issue Tracker demo to see all this functionality in "
+"action!"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:339
+#, no-c-format
+msgid "Workspace management and JSF navigation"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:340
+#, no-c-format
+msgid ""
+"When you use JSF or Seam navigation rules, Seam switches to a conversation "
+"by restoring the current <literal>view-id</literal> for that conversation. "
+"The descriptive text for the workspace is defined in a file called "
+"<literal>pages.xml</literal> that Seam expects to find in the <literal>WEB-"
+"INF</literal> directory, right next to <literal>faces-config.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:343
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/main.xhtml\"&gt;Search hotels: #{hotelBooking."
+"searchString}&lt;/page&gt;\n"
+"    &lt;page view-id=\"/hotel.xhtml\"&gt;View hotel: #{hotel.name}&lt;/"
+"page&gt;\n"
+"    &lt;page view-id=\"/book.xhtml\"&gt;Book hotel: #{hotel.name}&lt;/"
+"page&gt;\n"
+"    &lt;page view-id=\"/confirm.xhtml\"&gt;Confirm: #{booking.description}"
+"&lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:344
+#, no-c-format
+msgid ""
+"Note that if this file is missing, the Seam application will continue to "
+"work perfectly! The only missing functionality will be the ability to switch "
+"workspaces."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:350
+#, no-c-format
+msgid "Workspace management and jPDL pageflow"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:351
+#, no-c-format
+msgid ""
+"When you use a jPDL pageflow definition, Seam switches to a conversation by "
+"restoring the current jBPM process state. This is a more flexible model "
+"since it allows the same <literal>view-id</literal> to have different "
+"descriptions depending upon the current <literal>&lt;page&gt;</literal> "
+"node. The description text is defined by the <literal>&lt;page&gt;</literal> "
+"node:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:354
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"shopping\"&gt;\n"
+"\n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"browse\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;page name=\"browse\" view-id=\"/browse.xhtml\"&gt;\n"
+"      &lt;description&gt;DVD Search: #{search.searchPattern}&lt;/"
+"description&gt;\n"
+"      &lt;transition to=\"browse\"/&gt;\n"
+"      &lt;transition name=\"checkout\" to=\"checkout\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"checkout\" view-id=\"/checkout.xhtml\"&gt;\n"
+"      &lt;description&gt;Purchase: &#36;#{cart.total}&lt;/description&gt;\n"
+"      &lt;transition to=\"checkout\"/&gt;\n"
+"      &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"complete\" view-id=\"/complete.xhtml\"&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:358
+#, no-c-format
+msgid "The conversation switcher"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:359
+#, no-c-format
+msgid ""
+"Include the following fragment in your JSP or facelets page to get a drop-"
+"down menu that lets you switch to any current conversation, or to any other "
+"page of the application:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:362
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{switcher.conversationIdOrOutcome}\"&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Find Issues\" itemValue=\"findIssue\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Create Issue\" itemValue=\"editIssue\"/"
+"&gt;\n"
+"    &lt;f:selectItems value=\"#{switcher.selectItems}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{switcher.select}\" value=\"Switch\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:363
+#, no-c-format
+msgid ""
+"In this example, we have a menu that includes an item for each conversation, "
+"together with two additional items that let the user begin a new "
+"conversation."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:377
+#, no-c-format
+msgid "The conversation list"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:378
+#, no-c-format
+msgid ""
+"The conversation list is very similar to the conversation switcher, except "
+"that it is displayed as a table:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:381
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{conversationList}\" var=\"entry\"\n"
+"        rendered=\"#{not empty conversationList}\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Workspace&lt;/f:facet&gt;\n"
+"        &lt;h:commandLink action=\"#{entry.select}\" value=\"#{entry."
+"description}\"/&gt;\n"
+"        &lt;h:outputText value=\"[current]\" rendered=\"#{entry.current}\"/"
+"&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Activity&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{entry.startDatetime}\"&gt;\n"
+"            &lt;f:convertDateTime type=\"time\" pattern=\"hh:mm a\"/&gt;\n"
+"        &lt;/h:outputText&gt;\n"
+"        &lt;h:outputText value=\" - \"/&gt;\n"
+"        &lt;h:outputText value=\"#{entry.lastDatetime}\"&gt;\n"
+"            &lt;f:convertDateTime type=\"time\" pattern=\"hh:mm a\"/&gt;\n"
+"        &lt;/h:outputText&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"        &lt;h:commandButton action=\"#{entry.select}\" value=\"#{msg.Switch}"
+"\"/&gt;\n"
+"        &lt;h:commandButton action=\"#{entry.destroy}\" value=\"#{msg."
+"Destroy}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:382
+#, no-c-format
+msgid ""
+"We imagine that you will want to customize this for your own application."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:393
+#, no-c-format
+msgid ""
+"The conversation list is nice, but it takes up a lot of space on the page, "
+"so you probably don't want to put it on <emphasis>every</emphasis> page."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:396
+#, no-c-format
+msgid "Notice that the conversation list lets the user destroy workspaces."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:402
+#, no-c-format
+msgid "Breadcrumbs"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:403
+#, no-c-format
+msgid ""
+"Breadcrumbs are useful in applications which use a nested conversation "
+"model. The breadcrumbs are a list of links to conversations in the current "
+"conversation stack:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:406
+#, no-c-format
+msgid ""
+"&lt;t:dataList value=\"#{conversationStack}\" var=\"entry\"&gt;\n"
+"    &lt;h:outputText value=\" | \"/&gt; \n"
+"    &lt;h:commandLink value=\"#{entry.description}\" action=\"#{entry.select}"
+"\"/&gt;\n"
+"&lt;/t:dataList&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:407
+#, no-c-format
+msgid ""
+"Notice that here we are using the MyFaces <literal>&lt;t:dataList&gt;</"
+"literal> component, since JSF amazingly does not provide any standard "
+"component for looping."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:424
+#, no-c-format
+msgid "Conversational components and JSF component bindings"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:425
+#, no-c-format
+msgid ""
+"Conversational components have one minor limitation: they cannot be used to "
+"hold bindings to JSF components. (We generally prefer not to use this "
+"feature of JSF unless absolutely necessary, since it creates a hard "
+"dependency from application logic to the view.) On a postback request, "
+"component bindings are updated during the Restore View phase, before the "
+"Seam conversation context has been restored."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:428
+#, no-c-format
+msgid ""
+"To work around this use an event scoped component to store the component "
+"bindings and inject it into the conversation scoped component that requires "
+"it."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:431
+#, no-c-format
+msgid ""
+"@Name(\"grid\")\n"
+"@Scope(ScopeType.EVENT)\n"
+"public class Grid\n"
+"{\n"
+"    private HtmlPanelGrid htmlPanelGrid;\n"
+"\n"
+"    // getters and setters\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:432
+#, no-c-format
+msgid ""
+"@Name(\"gridEditor\")\n"
+"@Scope(ScopeType.CONVERSATION)\n"
+"public class GridEditor\n"
+"{\n"
+"    @In(required=false)\n"
+"    private Grid grid;\n"
+"    \n"
+"    ...\n"
+"}"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Drools.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Drools.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Drools.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,281 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Drools.xml:10
+#, no-c-format
+msgid "Seam and JBoss Rules"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:11
+#, no-c-format
+msgid ""
+"Seam makes it easy to call JBoss Rules (Drools) rulebases from Seam "
+"components or jBPM process definitions."
+msgstr ""
+
+#. Tag: title
+#: Drools.xml:15
+#, no-c-format
+msgid "Installing rules"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:16
+#, no-c-format
+msgid ""
+"The first step is to make an instance of <literal>org.drools.RuleBase</"
+"literal> available in a Seam context variable. In most rules-driven "
+"applications, rules need to be dynamically deployable, so you will need to "
+"implement some solution that allows you to deploy rules and make them "
+"available to Seam (a future release of Drools will provide a Rule Server "
+"that solves this problem). For testing purposes, Seam provides a built-in "
+"component that compiles a static set of rules from the classpath. You can "
+"install this component via <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:19
+#, no-c-format
+msgid ""
+"&lt;drools:rule-base name=\"policyPricingRules\"&gt;\n"
+"    &lt;drools:rule-files&gt;\n"
+"        &lt;value&gt;policyPricingRules&lt;/value&gt;\n"
+"    &lt;/drools:rule-files&gt;\n"
+"&lt;/drools:rule-base&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:20
+#, no-c-format
+msgid ""
+"This component compiles rules from a set of <literal>.drl</literal> files "
+"and caches an instance of <literal>org.drools.RuleBase</literal> in the Seam "
+"<literal>APPLICATION</literal> context. Note that it is quite likely that "
+"you will need to install multiple rule bases in a rule-driven application."
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:23
+#, no-c-format
+msgid ""
+"If you want to use a Drools DSL, you alse need to specify the DSL definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:26
+#, no-c-format
+msgid ""
+"&lt;drools:rule-base name=\"policyPricingRules\" dsl-file=\"policyPricing.dsl"
+"\"&gt;\n"
+"    &lt;drools:rule-files&gt;\n"
+"        &lt;value&gt;policyPricingRules&lt;/value&gt;\n"
+"    &lt;/drools:rule-files&gt;\n"
+"&lt;/drools:rule-base&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:27
+#, no-c-format
+msgid ""
+"Next, we need to make an instance of <literal>org.drools.WorkingMemory</"
+"literal> available to each conversation. (Each <literal>WorkingMemory</"
+"literal> accumulates facts relating to the current conversation.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:30
+#, no-c-format
+msgid ""
+"&lt;drools:managed-working-memory name=\"policyPricingWorkingMemory\" auto-"
+"create=\"true\" rule-base=\"#{policyPricingRules}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:31
+#, no-c-format
+msgid ""
+"Notice that we gave the <literal>policyPricingWorkingMemory</literal> a "
+"reference back to our rule base via the <literal>ruleBase</literal> "
+"configuration property."
+msgstr ""
+
+#. Tag: title
+#: Drools.xml:37
+#, no-c-format
+msgid "Using rules from a Seam component"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:38
+#, no-c-format
+msgid ""
+"We can now inject our <literal>WorkingMemory</literal> into any Seam "
+"component, assert facts, and fire rules:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:41
+#, no-c-format
+msgid ""
+"@In WorkingMemory policyPricingWorkingMemory;\n"
+"\n"
+"@In Policy policy;\n"
+"@In Customer customer;\n"
+"\n"
+"public void pricePolicy() throws FactException\n"
+"{\n"
+"    policyPricingWorkingMemory.assertObject(policy);\n"
+"    policyPricingWorkingMemory.assertObject(customer);\n"
+"    policyPricingWorkingMemory.fireAllRules();\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Drools.xml:45
+#, no-c-format
+msgid "Using rules from a jBPM process definition"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:46
+#, no-c-format
+msgid ""
+"You can even allow a rule base to act as a jBPM action handler, decision "
+"handler, or assignment handler&mdash;in either a pageflow or business "
+"process definition."
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:49
+#, no-c-format
+msgid ""
+"&lt;decision name=\"approval\"&gt;\n"
+"         \n"
+"    &lt;handler class=\"org.jboss.seam.drools.DroolsDecisionHandler\"&gt;\n"
+"        &lt;workingMemoryName&gt;orderApprovalRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"        &lt;assertObjects&gt;\n"
+"            &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"            &lt;element&gt;#{order}&lt;/element&gt;\n"
+"            &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"        &lt;/assertObjects&gt;\n"
+"    &lt;/handler&gt;\n"
+"    \n"
+"    &lt;transition name=\"approved\" to=\"ship\"&gt;\n"
+"        &lt;action class=\"org.jboss.seam.drools.DroolsActionHandler\"&gt;\n"
+"            &lt;workingMemoryName&gt;shippingRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"            &lt;assertObjects&gt;\n"
+"                &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"            &lt;/assertObjects&gt;\n"
+"        &lt;/action&gt;\n"
+"    &lt;/transition&gt;\n"
+"    \n"
+"    &lt;transition name=\"rejected\" to=\"cancelled\"/&gt;\n"
+"    \n"
+"&lt;/decision&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:50
+#, no-c-format
+msgid ""
+"The <literal>&lt;assertObjects&gt;</literal> element specifies EL "
+"expressions that return an object or collection of objects to be asserted as "
+"facts into the <literal>WorkingMemory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:53
+#, no-c-format
+msgid "There is also support for using Drools for jBPM task assignments:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:56
+#, no-c-format
+msgid ""
+"&lt;task-node name=\"review\"&gt;\n"
+"    &lt;task name=\"review\" description=\"Review Order\"&gt;\n"
+"        &lt;assignment handler=\"org.jboss.seam.drools."
+"DroolsAssignmentHandler\"&gt;\n"
+"            &lt;workingMemoryName&gt;orderApprovalRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"            &lt;assertObjects&gt;\n"
+"                &lt;element&gt;#{actor}&lt;/element&gt;\n"
+"                &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"            &lt;/assertObjects&gt;\n"
+"        &lt;/assignment&gt;\n"
+"    &lt;/task&gt;\n"
+"    &lt;transition name=\"rejected\" to=\"cancelled\"/&gt;\n"
+"    &lt;transition name=\"approved\" to=\"approved\"/&gt;\n"
+"&lt;/task-node&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:57
+#, no-c-format
+msgid ""
+"Certain objects are available to the rules as Drools globals, namely the "
+"jBPM <literal>Assignable</literal>, as <literal>assignable</literal> and a "
+"Seam <literal>Decision</literal> object, as <literal>decision</literal>. "
+"Rules which handle decisions should call <literal>decision.setOutcome"
+"(\"result\")</literal> to determine the result of the decision. Rules which "
+"perform assignments should set the actor id using the <literal>Assignable</"
+"literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:60
+#, no-c-format
+msgid ""
+"package org.jboss.seam.examples.shop\n"
+"\n"
+"import org.jboss.seam.drools.Decision\n"
+"\n"
+"global Decision decision\n"
+"\n"
+"rule \"Approve Order For Loyal Customer\"\n"
+"  when\n"
+"    Customer( loyaltyStatus == \"GOLD\" )\n"
+"    Order( totalAmount &lt;= 10000 )\n"
+"  then\n"
+"    decision.setOutcome(\"approved\");\n"
+"end"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:61
+#, no-c-format
+msgid ""
+"package org.jboss.seam.examples.shop\n"
+"\n"
+"import org.jbpm.taskmgmt.exe.Assignable\n"
+"\n"
+"global Assignable assignable\n"
+"\n"
+"rule \"Assign Review For Small Order\"\n"
+"  when\n"
+"    Order( totalAmount &lt;= 100 )\n"
+"  then\n"
+"    assignable.setPooledActors( new String[] {\"reviewers\"} );\n"
+"end"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Elenhancements.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Elenhancements.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Elenhancements.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,221 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Elenhancements.xml:10
+#, no-c-format
+msgid "Expression language enhancements"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:11
+#, no-c-format
+msgid ""
+"The standard Unified Expression Language (EL) assumes that any parameters to "
+"a method expression will be provided by Java code. This means that a method "
+"with parameters cannot be used as a JSF method binding. Seam provides an "
+"enhancement to the EL that allows parameters to be included in a method "
+"expression itself. This applies to <emphasis>any</emphasis> Seam method "
+"expression, including any JSF method binding, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:14
+#, no-c-format
+msgid ""
+"&lt;s:commandButton action=\"#{hotelBooking.bookHotel(hotel)}\" value=\"Book "
+"Hotel\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:16
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:17
+#, no-c-format
+msgid ""
+"To use this feature in Facelets, you will need to declare a special view "
+"handler, <literal>SeamFaceletViewHandler</literal> in <literal>faces-config."
+"xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:20
+#, no-c-format
+msgid ""
+"&lt;faces-config&gt;\n"
+"    &lt;application&gt;\n"
+"        &lt;view-handler&gt;org.jboss.seam.ui.facelet."
+"SeamFaceletViewHandler&lt;/view-handler&gt;\n"
+"    &lt;/application&gt;\n"
+"&lt;/faces-config&gt;"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:24
+#, no-c-format
+msgid "Usage"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:25
+#, no-c-format
+msgid "Parameters are surrounded by parentheses, and separated by commas:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:28
+#, no-c-format
+msgid ""
+"&lt;h:commandButton action=\"#{hotelBooking.bookHotel(hotel, user)}\" value="
+"\"Book Hotel\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:29
+#, no-c-format
+msgid ""
+"The parameters <literal>hotel</literal> and <literal>user</literal> will be "
+"evaluated as value expressions and passed to the <literal>bookHotel()</"
+"literal> method of the component. This gives you an alternative to the use "
+"of <literal>@In</literal>."
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:32
+#, no-c-format
+msgid "Any value expression may be used as a parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:35
+#, no-c-format
+msgid ""
+"&lt;h:commandButton action=\"#{hotelBooking.bookHotel(hotel.id, user."
+"username)}\" value=\"Book Hotel\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:36
+#, no-c-format
+msgid "You may even pass literal strings using single or double quotes:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:39
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=&#8221;#{printer.println( &#8216;Hello world!"
+"&#8217; )}&#8221; value=&#8221;Hello&#8221;/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:40
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=&#8217;#{printer.println( &#8220;Hello "
+"again&#8221; )}&#8217; value=&#8217;Hello&#8217;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:41
+#, no-c-format
+msgid ""
+"You might even want to use this notation for all your action methods, even "
+"when you don&#8217;t have parameters to pass. This improves readability by "
+"making it clear that the expression is a method expression and not a value "
+"expression:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:44
+#, no-c-format
+msgid "&lt;s:link value=\"Cancel\" action=\"#{hotelBooking.cancel()}\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:48
+#, no-c-format
+msgid "Limitations"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:49
+#, no-c-format
+msgid "Please be aware of the following limitations:"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:53
+#, no-c-format
+msgid "Incompatibility with JSP 2.1"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:54
+#, no-c-format
+msgid ""
+"This extension is not currently compatible with JSP 2.1. So if you want to "
+"use this extension with JSF 1.2, you will need to use Facelets. The "
+"extension works correctly with JSP 2.0."
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:60
+#, no-c-format
+msgid "Calling a <literal>MethodExpression</literal> from Java code"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:61
+#, no-c-format
+msgid ""
+"Normally, when a <literal>MethodExpression</literal> or "
+"<literal>MethodBinding</literal> is created, the parameter types are passed "
+"in by JSF. In the case of a method binding, JSF assumes that there are no "
+"parameters to pass. With this extension, we can&#8217;t know the parameter "
+"types until after the expression has been evaluated. This has two minor "
+"consequences:"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:66
+#, no-c-format
+msgid ""
+"When you invoke a <literal>MethodExpression</literal> in Java code, "
+"parameters you pass may be ignored. Parameters defined in the expression "
+"will take precedence."
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:71
+#, no-c-format
+msgid ""
+"Ordinarily, it is safe to call <literal>methodExpression.getMethodInfo()."
+"getParamTypes()</literal> at any time. For an expression with parameters, "
+"you must first invoke the <literal>MethodExpression</literal> before calling "
+"<literal>getParamTypes()</literal>."
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:76
+#, no-c-format
+msgid ""
+"Both of these cases are exceedingly rare and only apply when you want to "
+"invoke the <literal>MethodExpression</literal> by hand in Java code."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Events.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Events.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Events.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1430 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Events.xml:10
+#, no-c-format
+msgid "Events, interceptors and exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:11
+#, no-c-format
+msgid ""
+"Complementing the contextual component model, there are two further basic "
+"concepts that facilitate the extreme loose-coupling that is the distinctive "
+"feature of Seam applications. The first is a strong event model where events "
+"may be mapped to event listeners via JSF-like method binding expressions. "
+"The second is the pervasive use of annotations and interceptors to apply "
+"cross-cutting concerns to components which implement business logic."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:14
+#, no-c-format
+msgid "Seam events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:15
+#, no-c-format
+msgid ""
+"The Seam component model was developed for use with <emphasis>event-driven "
+"applications</emphasis>, specifically to enable the development of fine-"
+"grained, loosely-coupled components in a fine-grained eventing model. Events "
+"in Seam come in several types, most of which we have already seen:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:20
+#, no-c-format
+msgid "JSF events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:25
+#, no-c-format
+msgid "jBPM transition events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:30
+#, no-c-format
+msgid "Seam page actions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:35
+#, no-c-format
+msgid "Seam component-driven events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:40
+#, no-c-format
+msgid "Seam contextual events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:45
+#, no-c-format
+msgid ""
+"All of these various kinds of events are mapped to Seam components via JSF "
+"EL method binding expressions. For a JSF event, this is defined in the JSF "
+"template:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:48
+#, no-c-format
+msgid ""
+"&lt;h:commandButton value=\"Click me!\" action=\"#{helloWorld.sayHello}\"/"
+"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:49
+#, no-c-format
+msgid ""
+"For a jBPM transition event, it is specified in the jBPM process definition "
+"or pageflow definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:52
+#, no-c-format
+msgid ""
+"&lt;start-page name=\"hello\" view-id=\"/hello.jsp\"&gt;\n"
+"    &lt;transition to=\"hello\"&gt;\n"
+"        &lt;action expression=\"#{helloWorld.sayHello}\"/&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/start-page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:53
+#, no-c-format
+msgid ""
+"You can find out more information about JSF events and jBPM events "
+"elsewhere. Lets concentrate for now upon the two additional kinds of events "
+"defined by Seam."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:56
+#, no-c-format
+msgid "Page actions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:57
+#, no-c-format
+msgid ""
+"A Seam page action is an event that occurs just before we render a page. We "
+"declare page actions in <literal>WEB-INF/pages.xml</literal>. We can define "
+"a page action for either a particular JSF view id:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:60
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\" action=\"#{helloWorld.sayHello}\"/&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:61
+#, no-c-format
+msgid ""
+"Or we can use a wildcard to specify an action that applies to all view ids "
+"that match the pattern:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:64
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello/*\" action=\"#{helloWorld.sayHello}\"/&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:65
+#, no-c-format
+msgid ""
+"If multiple wildcarded page actions match the current view-id, Seam will "
+"call all the actions, in order of least-specific to most-specific."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:68
+#, no-c-format
+msgid ""
+"The page action method can return a JSF outcome. If the outcome is non-null, "
+"Seam will delegate to the defined JSFadn Seam navigation rules and a "
+"different view may end up being rendered."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:71
+#, no-c-format
+msgid ""
+"Furthermore, the view id mentioned in the <literal>&lt;page&gt;</literal> "
+"element need not correspond to a real JSP or Facelets page! So, we can "
+"reproduce the functionality of a traditional action-oriented framework like "
+"Struts or WebWork using page actions. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:74
+#, no-c-format
+msgid "TODO: translate struts action into page action"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:75
+#, no-c-format
+msgid ""
+"This is quite useful if you want to do complex things in response to non-"
+"faces requests (for example, HTTP GET requests)."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:78
+#, no-c-format
+msgid "Page parameters"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:79
+#, no-c-format
+msgid ""
+"A JSF faces request (a form submission) encapsulates both an \"action\" (a "
+"method binding) and \"parameters\" (input value bindings). A page action "
+"might also needs parameters!"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:82
+#, no-c-format
+msgid ""
+"Since GET requests are bookmarkable, page parameters are passed as human-"
+"readable request parameters. (Unlike JSF form inputs, which are anything "
+"but!)"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:85
+#, no-c-format
+msgid ""
+"Seam lets us provide a value binding that maps a named request parameter to "
+"an attribute of a model object."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:88
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\" action=\"#{helloWorld.sayHello}\"&gt;\n"
+"        &lt;param name=\"firstName\" value=\"#{person.firstName}\"/&gt;\n"
+"        &lt;param name=\"lastName\" value=\"#{person.lastName}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:89
+#, no-c-format
+msgid ""
+"The <literal>&lt;param&gt;</literal> declaration is bidirectional, just like "
+"a value binding for a JSF input:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:94
+#, no-c-format
+msgid ""
+"When a non-faces (GET) request for the view id occurs, Seam sets the value "
+"of the named request parameter onto the model object, after performing "
+"appropriate type conversions."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:99
+#, no-c-format
+msgid ""
+"Any <literal>&lt;s:link&gt;</literal> or <literal>&lt;s:button&gt;</literal> "
+"transparently includes the request parameter. The value of the parameter is "
+"determined by evaluating the value binding during the render phase (when the "
+"<literal>&lt;s:link&gt;</literal> is rendered)."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:104
+#, no-c-format
+msgid ""
+"Any navigation rule with a <literal>&lt;redirect/&gt;</literal> to the view "
+"id transparently includes the request parameter. The value of the parameter "
+"is determined by evaluating the value binding at the end of the invoke "
+"application phase."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:109
+#, no-c-format
+msgid ""
+"The value is transparently propagated with any JSF form submission for the "
+"page with the given view id. (This means that view parameters behave like "
+"<literal>PAGE</literal>-scoped context variables for faces requests."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:114
+#, no-c-format
+msgid ""
+"The essential idea behind all this is that <emphasis>however</emphasis> we "
+"get from any other page to <literal>/hello.jsp</literal> (or from <literal>/"
+"hello.jsp</literal> back to <literal>/hello.jsp</literal>), the value of the "
+"model attribute referred to in the value binding is \"remembered\", without "
+"the need for a conversation (or other server-side state)."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:117
+#, no-c-format
+msgid ""
+"This all sounds pretty complex, and you're probably wondering if such an "
+"exotic construct is really worth the effort. Actually, the idea is very "
+"natural once you \"get it\". It is definitely worth taking the time to "
+"understand this stuff. Page parameters are the most elegant way to propagate "
+"state across a non-faces request. They are especially cool for problems like "
+"search screens with bookmarkable results pages, where we would like to be "
+"able to write our application code to handle both POST and GET requests with "
+"the same code. Page parameters eliminate repetitive listing of request "
+"parameters in the view definition and make redirects much easier to code."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:120
+#, no-c-format
+msgid ""
+"Note that you don't need an actual page action method binding to use a page "
+"parameter. The following is perfectly valid:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:123
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\"&gt;\n"
+"        &lt;param name=\"firstName\" value=\"#{person.firstName}\"/&gt;\n"
+"        &lt;param name=\"lastName\" value=\"#{person.lastName}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:124
+#, no-c-format
+msgid "You can even specify a JSF converter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:127
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/calculator.jsp\" action=\"#{calculator.calculate}"
+"\"&gt;\n"
+"        &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"        &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"        &lt;param name=\"op\" converterId=\"com.my.calculator."
+"OperatorConverter\" value=\"#{calculator.op}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:128
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/calculator.jsp\" action=\"#{calculator.calculate}"
+"\"&gt;\n"
+"        &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"        &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"        &lt;param name=\"op\" converter=\"#{operatorConverter}\" value=\"#"
+"{calculator.op}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:129
+#, no-c-format
+msgid "Navigation"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:130
+#, no-c-format
+msgid ""
+"You can use standard JSF navigation rules defined in <literal>faces-config."
+"xml</literal> in a Seam application. However, JSF navigation rules have a "
+"number of annoying limitations:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:135
+#, no-c-format
+msgid ""
+"It is not possible to specify request parameters to be used when redirecting."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:140
+#, no-c-format
+msgid "It is not possible to begin or end conversations from a rule."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:145
+#, no-c-format
+msgid ""
+"Rules work by evaluating the return value of the action method; it is not "
+"possible to evaluate an arbitrary EL expression."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:150
+#, no-c-format
+msgid ""
+"A further problem is that \"orchestration\" logic gets scattered between "
+"<literal>pages.xml</literal> and <literal>faces-config.xml</literal>. It's "
+"better to unify this logic into <literal>pages.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:153
+#, no-c-format
+msgid "This JSF navigation rule:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:156
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"    &lt;from-view-id&gt;/editDocument.xhtml&lt;/from-view-id&gt;\n"
+"    \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-action&gt;#{documentEditor.update}&lt;/from-action&gt;\n"
+"        &lt;from-outcome&gt;success&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/viewDocument.xhtml&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"    \n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:157
+#, no-c-format
+msgid "Can be rewritten as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:160
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if-outcome=\"success\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:161
+#, no-c-format
+msgid ""
+"But it would be even nicer if we didn't have to pollute our "
+"<literal>DocumentEditor</literal> component with string-valued return values "
+"(the JSF outcomes). So Seam lets us write:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:164
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\" \n"
+"                   evaluate=\"#{documentEditor.errors.size}\"&gt;\n"
+"        &lt;rule if-outcome=\"0\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:165
+#, no-c-format
+msgid "Or even:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:168
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:169
+#, no-c-format
+msgid ""
+"The first form evaluates a value binding to determine the outcome value to "
+"be used by the subsequent rules. The second approach ignores the outcome and "
+"evaluates a value binding for each possible rule."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:172
+#, no-c-format
+msgid ""
+"Of course, when an update succeeds, we probably want to end the current "
+"conversation. We can do that like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:175
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:176
+#, no-c-format
+msgid ""
+"But ending the conversation loses any state associated with the "
+"conversation, including the document we are currently interested in! One "
+"solution would be to use an immediate render instead of a redirect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:179
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:180
+#, no-c-format
+msgid ""
+"But the correct solution is to pass the document id as a request parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:183
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"&gt;\n"
+"                &lt;param name=\"documentId\" value=\"#{documentEditor."
+"documentId}\"/&gt;\n"
+"            &lt;/redirect&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:184
+#, no-c-format
+msgid ""
+"Null outcomes are a special case in JSF. The null outcome is interpreted to "
+"mean \"redisplay the page\". The following navigation rule matches any non-"
+"null outcome, but <emphasis>not</emphasis> the null outcome:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:187
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule&gt;\n"
+"            &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:188
+#, no-c-format
+msgid ""
+"If you want to perform navigation when a null outcome occurs, use the "
+"following form instead:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:191
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:192
+#, no-c-format
+msgid ""
+"Fine-grained files for definition of navigation, page actions and parameters"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:193
+#, no-c-format
+msgid ""
+"If you have a lot of different page actions and page parameters, or even "
+"just a lot of navigation rules, you will almost certainly want to split the "
+"declarations up over multiple files. You can define actions and parameters "
+"for a page with the view id <literal>/calc/calculator.jsp</literal> in a "
+"resource named <literal>calc/calculator.page.xml</literal>. The root element "
+"in this case is the <literal>&lt;page&gt;</literal> element, and the view id "
+"is implied:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:196
+#, no-c-format
+msgid ""
+"&lt;page action=\"#{calculator.calculate}\"&gt;\n"
+"    &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"    &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"    &lt;param name=\"op\" converter=\"#{operatorConverter}\" value=\"#"
+"{calculator.op}\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:197
+#, no-c-format
+msgid "Component-driven events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:198
+#, no-c-format
+msgid ""
+"Seam components can interact by simply calling each others methods. Stateful "
+"components may even implement the observer/observable pattern. But to enable "
+"components to interact in a more loosely-coupled fashion than is possible "
+"when the components call each others methods directly, Seam provides "
+"<emphasis>component-driven events</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:201
+#, no-c-format
+msgid ""
+"We specify event listeners (observers) in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:204
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;event type=\"hello\"&gt;\n"
+"        &lt;action expression=\"#{helloListener.sayHelloBack}\"/&gt;\n"
+"        &lt;action expression=\"#{logger.logHello}\"/&gt;\n"
+"    &lt;/event&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:205
+#, no-c-format
+msgid "Where the <emphasis>event type</emphasis> is just an arbitrary string."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:208
+#, no-c-format
+msgid ""
+"When an event occurs, the actions registered for that event will be called "
+"in the order they appear in <literal>components.xml</literal>. How does a "
+"component raise an event? Seam provides a built-in component for this."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:211
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World!\");\n"
+"        Events.instance().raiseEvent(\"hello\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:212
+#, no-c-format
+msgid "Or you can use an annotation."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:215
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    @RaiseEvent(\"hello\")\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World!\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:216
+#, no-c-format
+msgid ""
+"Notice that this event producer has no dependency upon event consumers. The "
+"event listener may now be implemented with absolutely no dependency upon the "
+"producer:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:219
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    public void sayHelloBack() {\n"
+"        FacesMessages.instance().add(\"Hello to you too!\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:220
+#, no-c-format
+msgid ""
+"The method binding defined in <literal>components.xml</literal> above takes "
+"care of mapping the event to the consumer. If you don't like futzing about "
+"in the <literal>components.xml</literal> file, you can use an annotation "
+"instead:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:223
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    @Observer(\"hello\")\n"
+"    public void sayHelloBack() {\n"
+"        FacesMessages.instance().add(\"Hello to you too!\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:224
+#, no-c-format
+msgid ""
+"You might wonder why I've not mentioned anything about event objects in this "
+"discussion. In Seam, there is no need for an event object to propagate state "
+"between event producer and listener. State is held in the Seam contexts, and "
+"is shared between components. However, if you really want to pass an event "
+"object, you can:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:227
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    private String name;\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World, my name is #0.\", "
+"name);\n"
+"        Events.instance().raiseEvent(\"hello\", name);\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:228
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    @Observer(\"hello\")\n"
+"    public void sayHelloBack(String name) {\n"
+"        FacesMessages.instance().add(\"Hello #0!\", name);\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:229
+#, no-c-format
+msgid "Contextual events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:230
+#, no-c-format
+msgid ""
+"Seam defines a number of built-in events that the application can use to "
+"perform special kinds of framework integration. The events are:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:235
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preSetVariable.&lt;name&gt;</literal> &mdash; called "
+"when the context variable &lt;name&gt; is set"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:240
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postSetVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is set"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:245
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preRemoveVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is unset"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:250
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postRemoveVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is unset"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:255
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preDestroyContext.&lt;SCOPE&gt;</literal> &mdash; "
+"called before the &lt;SCOPE&gt; context is destroyed"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:260
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postDestroyContext.&lt;SCOPE&gt;</literal> &mdash; "
+"called after the &lt;SCOPE&gt; context is destroyed"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:265
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beginConversation </literal>&mdash; called whenever "
+"a long-running conversation begins"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:270
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endConversation </literal>&mdash; called whenever a "
+"long-running conversation ends"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:275
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beginPageflow.&lt;name&gt; </literal>&mdash; called "
+"when the pageflow &lt;name&gt; begins"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:280
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endPageflow.&lt;name&gt; </literal>&mdash; called "
+"when the pageflow &lt;name&gt; ends"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:285
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.createProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; is created"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:290
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; ends"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:295
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.initProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; is associated with the conversation"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:300
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.initTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is associated with the conversation"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:305
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.startTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is started"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:310
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is ended"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:315
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postCreate.&lt;name&gt; </literal>&mdash; called "
+"when the component &lt;name&gt; is created"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:320
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preDestroy.&lt;name&gt; </literal>&mdash; called "
+"when the component &lt;name&gt; is destroyed"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:325
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beforePhase </literal>&mdash; called before the "
+"start of a JSF phase"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:330
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.afterPhase </literal>&mdash; called after the end of "
+"a JSF phase"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:335
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postAuthenticate.&lt;name&gt; </literal>&mdash; "
+"called after a user is authenticated"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:340
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preAuthenticate.&lt;name&gt; </literal>&mdash; "
+"called before attempting to authenticate a user"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:345
+#, no-c-format
+msgid ""
+"Seam components may observe any of these events in just the same way they "
+"observe any other component-driven events."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:348
+#, no-c-format
+msgid "Seam interceptors"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:349
+#, no-c-format
+msgid ""
+"EJB 3.0 introduced a standard interceptor model for session bean components. "
+"To add an interceptor to a bean, you need to write a class with a method "
+"annotated <literal>@AroundInvoke</literal> and annotate the bean with an "
+"<literal>@Interceptors</literal> annotation that specifies the name of the "
+"interceptor class. For example, the following interceptor checks that the "
+"user is logged in before allowing invoking an action listener method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:352
+#, no-c-format
+msgid ""
+"public class LoggedInInterceptor {\n"
+"\n"
+"   @AroundInvoke\n"
+"   public Object checkLoggedIn(InvocationContext invocation) throws "
+"Exception {\n"
+"   \n"
+"      boolean isLoggedIn = Contexts.getSessionContext().get(\"loggedIn\")!"
+"=null;\n"
+"      if (isLoggedIn) {\n"
+"         //the user is already logged in\n"
+"         return invocation.proceed();\n"
+"      }\n"
+"      else {\n"
+"         //the user is not logged in, fwd to login page\n"
+"         return \"login\";\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:353
+#, no-c-format
+msgid ""
+"To apply this interceptor to a session bean which acts as an action "
+"listener, we must annotate the session bean <literal>@Interceptors"
+"(LoggedInInterceptor.class)</literal>. This is a somewhat ugly annotation. "
+"Seam builds upon the interceptor framework in EJB3 by allowing you to use "
+"<literal>@Interceptors</literal> as a meta-annotation. In our example, we "
+"would create an <literal>@LoggedIn</literal> annotation, as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:356
+#, no-c-format
+msgid ""
+"@Target(TYPE)\n"
+"@Retention(RUNTIME)\n"
+"@Interceptors(LoggedInInterceptor.class)\n"
+"public @interface LoggedIn {}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:357
+#, no-c-format
+msgid ""
+"We can now simply annotate our action listener bean with <literal>@LoggedIn</"
+"literal> to apply the interceptor."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:360
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"changePasswordAction\")\n"
+"@LoggedIn\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class ChangePasswordAction implements ChangePassword { \n"
+"    \n"
+"    ...\n"
+"    \n"
+"    public String changePassword() { ... }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:361
+#, no-c-format
+msgid ""
+"If interceptor ordering is important (it usually is), you can add "
+"<literal>@Interceptor</literal> annotations to your interceptor classes to "
+"specify a partial order of interceptors."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:364
+#, no-c-format
+msgid ""
+"@Interceptor(around={BijectionInterceptor.class,\n"
+"                     ValidationInterceptor.class,\n"
+"                     ConversationInterceptor.class},\n"
+"             within=RemoveInterceptor.class)\n"
+"public class LoggedInInterceptor\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:365
+#, no-c-format
+msgid ""
+"You can even have a \"client-side\" interceptor, that runs around any of the "
+"built-in functionality of EJB3:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:368
+#, no-c-format
+msgid ""
+"@Interceptor(type=CLIENT)\n"
+"public class LoggedInInterceptor\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:369
+#, no-c-format
+msgid ""
+"EJB interceptors are stateful, with a lifecycle that is the same as the "
+"component they intercept. For interceptors which do not need to maintain "
+"state, Seam lets you get a performance optimization by specifying "
+"<literal>@Interceptor(stateless=true)</literal>."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:372
+#, no-c-format
+msgid ""
+"Much of the functionality of Seam is implemented as a set of built-in Seam "
+"interceptors, including the interceptors named in the previous example. You "
+"don't have to explicitly specify these interceptors by annotating your "
+"components; they exist for all interceptable Seam components."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:375
+#, no-c-format
+msgid ""
+"You can even use Seam interceptors with JavaBean components, not just EJB3 "
+"beans!"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:378
+#, no-c-format
+msgid ""
+"EJB defines interception not only for business methods (using "
+"<literal>@AroundInvoke</literal>), but also for the lifecycle methods "
+"<literal>@PostConstruct</literal>, <literal>@PreDestroy</literal>, "
+"<literal>@PrePassivate</literal> and <literal>@PostActive</literal>. Seam "
+"supports all these lifecycle methods on both component and interceptor not "
+"only for EJB3 beans, but also for JavaBean components (except "
+"<literal>@PreDestroy</literal> which is not meaningful for JavaBean "
+"components)."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:381
+#, no-c-format
+msgid "Managing exceptions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:382
+#, no-c-format
+msgid ""
+"JSF is surprisingly limited when it comes to exception handling. As a "
+"partial workaround for this problem, Seam lets you define how a particular "
+"class of exception is to be treated by annotating the exception class, or "
+"declaring the exception class in an XML file. This facility is meant to be "
+"combined with the EJB 3.0-standard <literal>@ApplicationException</literal> "
+"annotation which specifies whether the exception should cause a transaction "
+"rollback."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:385
+#, no-c-format
+msgid "Exceptions and transactions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:386
+#, no-c-format
+msgid ""
+"EJB specifies well-defined rules that let us control whether an exception "
+"immediately marks the current transaction for rollback when it is thrown by "
+"a business method of the bean: <emphasis>system exceptions</emphasis> always "
+"cause a transaction rollback, <emphasis>application exceptions</emphasis> do "
+"not cause a rollback by default, but they do if "
+"<literal>@ApplicationException(rollback=true)</literal> is specified. (An "
+"application exception is any checked exception, or any unchecked exception "
+"annotated <literal>@ApplicationException</literal>. A system exception is "
+"any unchecked exception without an <literal>@ApplicationException</literal> "
+"annotation.)"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:389
+#, no-c-format
+msgid ""
+"Note that there is a difference between marking a transaction for rollback, "
+"and actually rolling it back. The exception rules say that the transaction "
+"should be marked rollback only, but it may still be active after the "
+"exception is thrown."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:392
+#, no-c-format
+msgid ""
+"Seam applies the EJB 3.0 exception rollback rules also to Seam JavaBean "
+"components."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:395
+#, no-c-format
+msgid ""
+"But these rules only apply in the Seam component layer. What about an "
+"exception that is uncaught and propagates out of the Seam component layer, "
+"and out of the JSF layer? Well, it is always wrong to leave a dangling "
+"transaction open, so Seam rolls back any active transaction when an "
+"exception occurs and is uncaught in the Seam component layer."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:398
+#, no-c-format
+msgid "Enabling Seam exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:399
+#, no-c-format
+msgid ""
+"To enable Seam's exception handling, we need to make sure we have the master "
+"servlet filter declared in <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:402
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.servlet.SeamFilter&lt;/filter-"
+"class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:403
+#, no-c-format
+msgid "Using annotations for exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:404
+#, no-c-format
+msgid ""
+"The following exception results in a HTTP 404 error whenever it propagates "
+"out of the Seam component layer. It does not roll back the current "
+"transaction immediately when thrown, but the transaction will be rolled back "
+"if it the exception is not caught by another Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:407
+#, no-c-format
+msgid ""
+"@HttpError(errorCode=404)\n"
+"public class ApplicationException extends Exception { ... }"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:408
+#, no-c-format
+msgid ""
+"This exception results in a browser redirect whenever it propagates out of "
+"the Seam component layer. It also ends the current conversation. It causes "
+"an immediate rollback of the current transaction."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:411
+#, no-c-format
+msgid ""
+"@Redirect(viewId=\"/failure.xhtml\", end=true)\n"
+"@ApplicationException(rollback=true)\n"
+"public class UnrecoverableApplicationException extends RuntimeException "
+"{ ... }"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:412
+#, no-c-format
+msgid ""
+"Note that <literal>@Redirect</literal> does not work for exceptions which "
+"occur during the render phase of the JSF lifecycle."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:415
+#, no-c-format
+msgid ""
+"This exception results in a redirect, along with a message to the user, when "
+"it propagates out of the Seam component layer. It also immediately rolls "
+"back the current transaction."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:418
+#, no-c-format
+msgid ""
+"@Redirect(viewId=\"/error.xhtml\", message=\"Unexpected error\")\n"
+"public class SystemException extends RuntimeException { ... }"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:419
+#, no-c-format
+msgid "Using XML for exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:420
+#, no-c-format
+msgid ""
+"Since we can't add annotations to all the exception classes we are "
+"interested in, Seam also lets us specify this functionality in "
+"<literal>pages.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:423
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   \n"
+"   &lt;exception class=\"javax.persistence.EntityNotFoundException\"&gt;\n"
+"      &lt;http-error error-code=\"404\"/&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"   &lt;exception class=\"javax.persistence.PersistenceException\"&gt;\n"
+"      &lt;end-conversation/&gt;\n"
+"      &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"          &lt;message&gt;Database access failed&lt;/message&gt;\n"
+"      &lt;/redirect&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"   &lt;exception&gt;\n"
+"      &lt;end-conversation/&gt;\n"
+"      &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"          &lt;message&gt;Unexpected failure&lt;/message&gt;\n"
+"      &lt;/redirect&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:424
+#, no-c-format
+msgid ""
+"The last <literal>&lt;exception&gt;</literal> declaration does not specify a "
+"class, and is a catch-all for any exception for which handling is not "
+"otherwise specified via annotations or in <literal>pages.xml</literal>."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Framework.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Framework.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Framework.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,828 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Framework.xml:10
+#, no-c-format
+msgid "The Seam Application Framework"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:11
+#, no-c-format
+msgid ""
+"Seam makes it really easy to create applications by writing plain Java "
+"classes with annotations, which don't need to extend any special interfaces "
+"or superclasses. But we can simplify some common programming tasks even "
+"further, by providing a set of pre-built components which can be re-used "
+"either by configuration in <literal>components.xml</literal> (for very "
+"simple cases) or extension."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:14
+#, no-c-format
+msgid ""
+"The <emphasis>Seam Application Framework</emphasis> can reduce the amount of "
+"code you need to write when doing basic database access in a web "
+"application, using either Hibernate or JPA."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:17
+#, no-c-format
+msgid ""
+"We should emphasize that the framework is extremely simple, just a handful "
+"of simple classes that are easy to understand and extend. The \"magic\" is "
+"in Seam itself&mdash;the same magic you use when creating any Seam "
+"application even without using this framework."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:21
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:22
+#, no-c-format
+msgid ""
+"The components provided by the Seam application framework may be used in one "
+"of two different approaches. The first way is to install and configure an "
+"instance of the component in <literal>components.xml</literal>, just like we "
+"have done with other kinds of built-in Seam components. For example, the "
+"following fragment from <literal>components.xml</literal> installs a "
+"component which can perform basic CRUD operations for a <literal>Contact</"
+"literal> entity:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:25
+#, no-c-format
+msgid ""
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" \n"
+"                       entity-manager=\"#{personDatabase}\"&gt;\n"
+"    &lt;framework:id&gt;#{param.personId}&lt;/framework:id&gt;\n"
+"&lt;/framework:entity-home&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:26
+#, no-c-format
+msgid ""
+"If that looks a bit too much like \"programming in XML\" for your taste, you "
+"can use extension instead:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:29
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; implements "
+"LocalPersonHome {\n"
+"    @RequestParameter String personId;\n"
+"    @In EntityManager personDatabase;\n"
+"    \n"
+"    public Object getId() { return personId; }\n"
+"    public EntityManager getEntityManager() { return personDatabase; }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:30
+#, no-c-format
+msgid ""
+"The second approach has one huge advantage: you can easily add extra "
+"functionality, and override the built-in functionality (the framework "
+"classes were carefully designed for extension and customization)."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:33
+#, no-c-format
+msgid ""
+"A second advantage is that your classes may be EJB stateful sessin beans, if "
+"you like. (They do not have to be, they can be plain JavaBean components if "
+"you prefer.)"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:36
+#, no-c-format
+msgid ""
+"At this time, the Seam Application Framework provides just four built-in "
+"components: <literal>EntityHome</literal> and <literal>HibernateEntityHome</"
+"literal> for CRUD, along with <literal>EntityQuery</literal> and "
+"<literal>HibernateEntityQuery</literal> for queries."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:39
+#, no-c-format
+msgid ""
+"The Home and Query components are written so that they can function with a "
+"scope of session, event or conversation. Which scope you use depends upon "
+"the state model you wish to use in your application."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:42
+#, no-c-format
+msgid ""
+"The Seam Application Framework only works with Seam-managed persistence "
+"contexts. By default, the components will look for a persistence context "
+"named <literal>entityManager</literal>."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:48
+#, no-c-format
+msgid "Home objects"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:49
+#, no-c-format
+msgid ""
+"A Home object provides persistence operations for a particular entity class. "
+"Suppose we have our trusty <literal>Person</literal> class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:52
+#, no-c-format
+msgid ""
+"@Entity\n"
+"public class Person {\n"
+"    @Id private Long id;\n"
+"    private String firstName;\n"
+"    private String lastName;\n"
+"    private Country nationality;\n"
+"    \n"
+"    //getters and setters...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:53
+#, no-c-format
+msgid ""
+"We can define a <literal>personHome</literal> component either via "
+"configuration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:56
+#, no-c-format
+msgid ""
+"&lt;framework:entity-home name=\"personHome\" entity-class=\"eg.Person\" /"
+"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:57
+#, no-c-format
+msgid "Or via extension:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:60
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:61
+#, no-c-format
+msgid ""
+"A Home object provides the following operations: <literal>persist()</"
+"literal>, <literal>remove()</literal>, <literal>update()</literal> and "
+"<literal>getInstance()</literal>. Before you can call the <literal>remove()</"
+"literal>, or <literal>update()</literal> operations, you must first set the "
+"identifier of the object you are interested in, using the <literal>setId()</"
+"literal> method."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:64
+#, no-c-format
+msgid "We can use a Home directly from a JSF page, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:67
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Create Person&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{personHome.instance."
+"firstName}\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{personHome.instance."
+"lastName}\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:68
+#, no-c-format
+msgid ""
+"Usually, it is much nicer to be able to refer to the <literal>Person</"
+"literal> merely as <literal>person</literal>, so let's make that possible by "
+"adding a line to <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:71
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:72
+#, no-c-format
+msgid ""
+"(If we are using configuration.) Or by adding a <literal>@Factory</literal> "
+"method to <literal>PersonHome</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:75
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:76
+#, no-c-format
+msgid ""
+"(If we are using extension.) This change simplifies our JSF page to the "
+"following:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:79
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Create Person&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{person.firstName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{person.lastName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:80
+#, no-c-format
+msgid ""
+"Well, that lets us create new <literal>Person</literal> entries. Yes, that "
+"is all the code that is required! Now, if we want to be able to display, "
+"update and delete pre-existing <literal>Person</literal> entries in the "
+"database, we need to be able to pass the entry identifier to the "
+"<literal>PersonHome</literal>. Page parameters are a great way to do that:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:83
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page viewid=\"/editPerson.jsp\"&gt;\n"
+"        &lt;param name=\"personId\" value=\"#{personHome.id}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:84
+#, no-c-format
+msgid "Now we can add the extra operations to our JSF page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:87
+#, no-c-format
+msgid ""
+"&lt;h1&gt;\n"
+"    &lt;h:outputText rendered=\"#{!personHome.managed}\" value=\"Create "
+"Person\"/&gt;\n"
+"    &lt;h:outputText rendered=\"#{personHome.managed}\" value=\"Edit Person"
+"\"/&gt;\n"
+"&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{person.firstName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{person.lastName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\" \n"
+"            rendered=\"#{!personHome.managed}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Update Person\" action=\"#{personHome."
+"update}\" \n"
+"            rendered=\"#{personHome.managed}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Delete Person\" action=\"#{personHome."
+"remove}\" \n"
+"            rendered=\"#{personHome.managed}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:88
+#, no-c-format
+msgid ""
+"When we link to the page with no request parameters, the page will be "
+"displayed as a \"Create Person\" page. When we provide a value for the "
+"<literal>personId</literal> request parameter, it will be an \"Edit Person\" "
+"page."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:91
+#, no-c-format
+msgid ""
+"Suppose we need to create <literal>Person</literal> entries with their "
+"nationality initialized. We can do that easily, via configuration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:94
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" \n"
+"                       new-instance=\"#{newPerson}\"/&gt;\n"
+"\n"
+"&lt;component name=\"newPerson\" \n"
+"           class=\"eg.Person\"&gt;\n"
+"    &lt;property name=\"nationality\"&gt;#{country}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:95
+#, no-c-format
+msgid "Or by extension:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:98
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:99
+#, no-c-format
+msgid ""
+"Of course, the <literal>Country</literal> could be an object managed by "
+"another Home object, for example, <literal>CountryHome</literal>."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:102
+#, no-c-format
+msgid ""
+"To add more sophisticated operations (association management, etc), we can "
+"just add methods to <literal>PersonHome</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:105
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"    public void migrate()\n"
+"    {\n"
+"        getInstance().setCountry(country);\n"
+"        update();\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:106
+#, no-c-format
+msgid ""
+"The Home object automatically displays faces messages when an operation is "
+"successful. To customize these messages we can, again, use configuration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:109
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\"\n"
+"                       entity-class=\"eg.Person\"\n"
+"                       new-instance=\"#{newPerson}\"&gt;\n"
+"    &lt;framework:created-message&gt;New person #{person.firstName} #{person."
+"lastName} \n"
+"        created&lt;/framework:created-message&gt;\n"
+"    &lt;framework:deleted-message&gt;Person #{person.firstName} #{person."
+"lastName}\n"
+"        deleted&lt;/framework:deleted-message&gt;\n"
+"    &lt;framework:updated-message&gt;Person #{person.firstName} #{person."
+"lastName} \n"
+"        updated&lt;/framework:updated-message&gt;\n"
+"&lt;/framework:entity-home&gt;\n"
+"\n"
+"&lt;component name=\"newPerson\" \n"
+"           class=\"eg.Person\"&gt;\n"
+"    &lt;property name=\"nationality\"&gt;#{country}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:110
+#, no-c-format
+msgid "Or extension:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:113
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"    protected String getCreatedMessage() { return \"New person #{person."
+"firstName} \n"
+"        #{person.lastName} created\"; }\n"
+"    protected String getUpdatedMessage() { return \"Person #{person."
+"firstName} \n"
+"        #{person.lastName} updated\"; }\n"
+"    protected String getDeletedMessage() { return \"Person #{person."
+"firstName} \n"
+"        #{person.lastName} deleted\"; }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:114
+#, no-c-format
+msgid ""
+"But the best way to specify the messages is to put them in a resource bundle "
+"known to Seam (the bundle named <literal>messages</literal>, by default)."
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:117
+#, no-c-format
+msgid ""
+"Person_created=New person #{person.firstName} #{person.lastName} created\n"
+"Person_deleted=Person #{person.firstName} #{person.lastName} deleted\n"
+"Person_updated=Person #{person.firstName} #{person.lastName} updated"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:118
+#, no-c-format
+msgid ""
+"This enables internationalization, and keeps your code and configuration "
+"clean of presentation concerns."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:121
+#, no-c-format
+msgid ""
+"The final step is to add validation functionality to the page, using "
+"<literal>&lt;s:validateAll&gt;</literal> and <literal>&lt;s:decorate&gt;</"
+"literal>, but I'll leave that for you to figure out."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:127
+#, no-c-format
+msgid "Query objects"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:128
+#, no-c-format
+msgid ""
+"If we need a list of all <literal>Person</literal> instance in the database, "
+"we can use a Query object. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:131
+#, no-c-format
+msgid ""
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:132
+#, no-c-format
+msgid "We can use it from a JSF page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:135
+#, no-c-format
+msgid ""
+"&lt;h1&gt;List of people&lt;/h1&gt;\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view-id=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:136
+#, no-c-format
+msgid "We probably need to support pagination:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:139
+#, no-c-format
+msgid ""
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\" \n"
+"                        order=\"lastName\" \n"
+"                        max-results=\"20\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:140
+#, no-c-format
+msgid "We'll use a page parameter to determine the page to display:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:143
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page viewid=\"/searchPerson.jsp\"&gt;\n"
+"        &lt;param name=\"firstResult\" value=\"#{people.firstResult}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:144
+#, no-c-format
+msgid "The JSF code for a pagination control is a bit verbose, but manageable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:147
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Search for people&lt;/h1&gt;\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view-id=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.previousExists}\" "
+"value=\"First Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"0\"/&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.previousExists}\" "
+"value=\"Previous Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.previousFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.nextExists}\" value="
+"\"Next Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.nextFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.nextExists}\" value="
+"\"Last Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.lastFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:148
+#, no-c-format
+msgid ""
+"Real search screens let the user enter a bunch of optional search criteria "
+"to narrow the list of results returned. The Query object lets you specify "
+"optional \"restrictions\" to support this important usecase:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:151
+#, no-c-format
+msgid ""
+"&lt;component name=\"examplePerson\" class=\"Person\"/&gt;\n"
+"        \n"
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\" \n"
+"                        order=\"lastName\" \n"
+"                        max-results=\"20\"&gt;\n"
+"    &lt;framework:restrictions&gt;\n"
+"        &lt;value&gt;lower(firstName) like lower( #{examplePerson.firstName} "
+"+ '&#37;' )&lt;/value&gt;\n"
+"        &lt;value&gt;lower(lastName) like lower( #{examplePerson.lastName} + "
+"'&#37;' )&lt;/value&gt;\n"
+"    &lt;/framework:restrictions&gt;\n"
+"&lt;/framework:entity-query&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:152
+#, no-c-format
+msgid "Notice the use of an \"example\" object."
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:155
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Search for people&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{examplePerson.firstName}"
+"\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{examplePerson.lastName}"
+"\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;&lt;h:commandButton value=\"Search\" action=\"/search.jsp\"/"
+"&gt;&lt;/div&gt;\n"
+"&lt;/h:form&gt;\n"
+"\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view-id=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:156
+#, no-c-format
+msgid ""
+"The examples in this section have all shown reuse by configuration. However, "
+"reuse by extension is equally possible for Query objects."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:162
+#, no-c-format
+msgid "Controller objects"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:163
+#, no-c-format
+msgid ""
+"A totally optional part of the Seam Application Framework is the class "
+"<literal>Controller</literal> and its subclasses <literal>EntityController</"
+"literal><literal>HibernateEntityController</literal> and "
+"<literal>BusinessProcessController</literal>. These classes provide nothing "
+"more than some convenience methods for access to commonly used built-in "
+"components and methods of built-in components. They help save a few "
+"keystrokes (characters can add up!) and provide a great launchpad for new "
+"users to explore the rich functionality built in to Seam."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:166
+#, no-c-format
+msgid ""
+"For example, here is what <literal>RegisterAction</literal> from the Seam "
+"registration example would look like:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:169
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"register\")\n"
+"public class RegisterAction extends EntityController implements Register\n"
+"{\n"
+"\n"
+"   @In private User user;\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = createQuery(\"select u.username from User u where u."
+"username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getResultList();\n"
+"      \n"
+"      if ( existing.size()==0 )\n"
+"      {\n"
+"         persist(user);\n"
+"         info(\"Registered new user #{user.username}\");\n"
+"         return \"/registered.jspx\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         addFacesMessage(\"User #{user.username} already exists\");\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:170
+#, no-c-format
+msgid "As you can see, its not an earthshattering improvement..."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Gettingstarted.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Gettingstarted.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Gettingstarted.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,588 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Gettingstarted.xml:10
+#, no-c-format
+msgid "Getting started with Seam, using seam-gen"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:11
+#, no-c-format
+msgid ""
+"The Seam distribution includes a command line utility that makes it really "
+"easy to set up an Eclipse project, generate some simple Seam skeleton code, "
+"and reverse engineer an application from a pre-existing database."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:14
+#, no-c-format
+msgid ""
+"This is the easy way to get your feet wet with Seam, and gives you some "
+"ammunition for next time you find yourself trapped in an elevator with one "
+"of those tedious Ruby guys ranting about how great and wonderful his new toy "
+"is for building totally trivial applications that put things in databases."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:17
+#, no-c-format
+msgid ""
+"In this release, seam-gen works best for people with JBoss AS. You can use "
+"the generated project with other J2EE or Java EE 5 application servers by "
+"making a few manual changes to the project configuration."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:20
+#, no-c-format
+msgid ""
+"You <emphasis>can</emphasis> use seam-gen without Eclipse, but in this "
+"tutorial, we want to show you how to use it in conjunction with Eclipse for "
+"debugging and integration testing. If you don't want to install Eclipse, you "
+"can still follow along with this tutorial&mdash;all steps can be peformed "
+"from the command line."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:23
+#, no-c-format
+msgid ""
+"Seam-gen is basically just a big ugly Ant script wrapped around Hibernate "
+"Tools, together with some templates. Which means it is easy to customize if "
+"you need to."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:27
+#, no-c-format
+msgid "Before you start"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:28
+#, no-c-format
+msgid ""
+"Make sure you have JDK 5 or JDK 6, JBoss AS 4.0.5 and Ant 1.6, along with "
+"recent versions of Eclipse, the JBoss IDE plugin for Eclipse and the TestNG "
+"plugin for Eclipse correctly installed before starting. Add your JBoss "
+"installation to the JBoss Server View in Eclipse. Start JBoss in debug mode. "
+"Finally, start a command prompt in the directory where you unzipped the Seam "
+"distribution."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:34
+#, no-c-format
+msgid "Setting up a new Eclipse project"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:35
+#, no-c-format
+msgid ""
+"The first thing we need to do is configure seam-gen for your environment: "
+"JBoss AS installation directory, Eclipse workspace, and database connection. "
+"It's easy, just type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:38
+#, no-c-format
+msgid ""
+"cd jboss-seam-1.1.x\n"
+"seam setup"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:39
+#, no-c-format
+msgid "And you will be prompted for the needed information:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:42
+#, no-c-format
+msgid ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam setup\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"setup:\n"
+"    [echo] Welcome to seam-gen :-)\n"
+"    [input] Enter your Java project workspace [C:/Projects]\n"
+"\n"
+"    [input] Enter your JBoss home directory [C:/Program Files/jboss-4.0.5."
+"GA]\n"
+"\n"
+"    [input] Enter the project name [myproject]\n"
+"helloworld\n"
+"    [input] Is this project deployed as an EAR (with EJB components) or a "
+"WAR \n"
+"        (with no EJB support) [ear] (ear,war,)\n"
+"\n"
+"    [input] Enter the Java package name for your session beans [com.mydomain."
+"helloworld]\n"
+"org.jboss.helloworld\n"
+"    [input] Enter the Java package name for your entity beans [org.jboss."
+"helloworld]\n"
+"\n"
+"    [input] Enter the Java package name for your test cases [org.jboss."
+"helloworld.test]\n"
+"\n"
+"    [input] What kind of database are you using? [hsql]\n"
+"    (hsql,mysql,oracle,postgres,mssql,db2,sybase,)\n"
+"mysql\n"
+"    [input] Enter the Hibernate dialect for your database [org.hibernate."
+"dialect.MySQLDialect]\n"
+"\n"
+"    [input] Enter the filesystem path to the JDBC driver jar [lib/hsqldb."
+"jar]\n"
+"../../mysql-connector.jar\n"
+"    [input] Enter JDBC driver class for your database [com.mysql.jdbc."
+"Driver]\n"
+"\n"
+"    [input] Enter the JDBC URL for your database [jdbc:mysql:///test]\n"
+"\n"
+"    [input] Enter database username [sa]\n"
+"gavin\n"
+"    [input] Enter database password []\n"
+"\n"
+"    [input] Are you working with tables that already exist in the database? "
+"[n] (y,n,)\n"
+"y\n"
+"    [input] Do you want to drop and recreate the database tables and data in "
+"import.sql \n"
+"    each time you deploy? [n] (y,n,)\n"
+"n\n"
+"[propertyfile] Creating new property file: C:&#92;Projects&#92;jboss-"
+"seam&#92;seam-gen&#92;build.properties\n"
+"     [echo] Installing JDBC driver jar to JBoss server\n"
+"     [echo] Type 'seam new-project' to create the new project\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 1 minute 17 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:43
+#, no-c-format
+msgid ""
+"The tool provides sensible defaults, which you can accept by just pressing "
+"enter at the prompt."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:46
+#, no-c-format
+msgid ""
+"The most important choice you need to make is between EAR deployment and WAR "
+"deployment of your project. EAR projects support EJB 3.0 and require Java EE "
+"5. WAR projects do not support EJB 3.0, but may be deployed to a J2EE "
+"environment. The packaging of a WAR is also simpler to understand. If you "
+"installed JBoss with the ejb3 profile, choose <literal>ear</literal>. "
+"Otherwise, choose <literal>war</literal>. We'll assume that you've chosen an "
+"EAR deployment for the rest of the tutorial, but you can follow exactly the "
+"same steps for a WAR deployment."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:49
+#, no-c-format
+msgid ""
+"If you are working with an existing data model, make sure you tell seam-gen "
+"that the tables already exist in the database."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:52
+#, no-c-format
+msgid ""
+"The settings are stored in <literal>seam-gen/build.properties</literal>, but "
+"you can also modify them simply by running <literal>seam setup</literal> a "
+"second time."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:55
+#, no-c-format
+msgid ""
+"Now we can create a new project in our Eclipse workspace directory, by "
+"typing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:58
+#, no-c-format
+msgid "seam new-project"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:59
+#, no-c-format
+msgid ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam new-project\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"copy-lib:\n"
+"     [echo] Copying project jars ...\n"
+"     [copy] Copying 32 files to C:&#92;Projects&#92;helloworld&#92;lib\n"
+"     [copy] Copying 9 files to C:&#92;Projects&#92;helloworld&#92;embedded-"
+"ejb\n"
+"\n"
+"file-copy-wtp:\n"
+"\n"
+"file-copy:\n"
+"     [echo] Copying project resources ...\n"
+"     [copy] Copying 12 files to C:&#92;Projects&#92;helloworld&#92;"
+"resources\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;helloworld&#92;resources\n"
+"     [copy] Copying 5 files to C:&#92;Projects&#92;helloworld&#92;view\n"
+"     [copy] Copying 5 files to C:&#92;Projects&#92;helloworld\n"
+"    [mkdir] Created dir: C:&#92;Projects&#92;helloworld&#92;src\n"
+"\n"
+"new-project:\n"
+"     [echo] A new Seam project was created in the C:/Projects directory\n"
+"     [echo] Add the project from inside Eclipse (or type 'seam explode') and "
+"go to http://localhost:\n"
+"8080/helloworld\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 7 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:60
+#, no-c-format
+msgid ""
+"This copies the Seam jars, dependent jars and the JDBC driver jar to a new "
+"Eclipse project, and generates all needed resources and configuration files, "
+"a facelets template file and stylesheet, along with Eclipse metadata and an "
+"Ant build script. The Eclipse project will be automatically deployed to an "
+"exploded directory structure in JBoss AS as soon as you add the project "
+"using <literal>New -&gt; Project... -&gt; Java Project -&gt; Next</literal>, "
+"typing the <literal>Project name</literal> (<literal>myproject</literal> in "
+"this case), selecting your Java SE 5 or Java SE 6 JRE and then clicking "
+"<literal>Finish</literal>. Do not select <literal>Create new project from "
+"existing source</literal>. Alternatively, you can deploy the project from "
+"outside Eclipse by typing <literal>seam explode</literal>."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:63
+#, no-c-format
+msgid ""
+"Go to <literal>http://localhost:8080/helloworld</literal> to see a welcome "
+"page. This is a facelets page, <literal>view/home.xhtml</literal>, using the "
+"template <literal>view/layout/template.xhtml</literal>. You can edit this "
+"page, or the template, in eclipse, and see the results "
+"<emphasis>immediately</emphasis>, by clicking refresh in your browser."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:66
+#, no-c-format
+msgid ""
+"Don't get scared by the XML configuration documents that were generated into "
+"the project directory. They are mostly standard Java EE stuff, the stuff you "
+"need to create once and then never look at again, and they are 90&#37; the "
+"same between all Seam projects. (They are so easy to write that even seam-"
+"gen can do it.)"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:69
+#, no-c-format
+msgid ""
+"The generated project includes three database and persistence "
+"configurations. The <literal>jboss-beans.xml</literal>, <literal>persistence-"
+"test.xml</literal> and <literal>import-test.sql</literal> files are used "
+"when running the TestNG unit tests against HSQLDB. The database schema and "
+"the test data in <literal>import-test.sql</literal> is always exported to "
+"the database before running tests. The <literal>myproject-dev-ds.xml</"
+"literal>, <literal>persistence-dev.xml</literal>and <literal>import-dev.sql</"
+"literal> files are for use when deploying the application to your "
+"development database. The schema might be exported automatically at "
+"deployment, depending upon whether you told seam-gen that you are working "
+"with an existing database. The <literal>myproject-prod-ds.xml</literal>, "
+"<literal>persistence-prod.xml</literal>and <literal>import-prod.sql</"
+"literal> files are for use when deploying the application to your production "
+"database. The schema is not exported automatically at deployment."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:75
+#, no-c-format
+msgid "Creating a new action"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:76
+#, no-c-format
+msgid ""
+"If you're used to traditional action-style web frameworks, you're probably "
+"wondering how you can create a simple webpage with a stateless action method "
+"in Java. If you type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:79
+#, no-c-format
+msgid "seam new-action"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:80
+#, no-c-format
+msgid ""
+"Seam will prompt for some information, and generate a new facelets page and "
+"Seam component for your project."
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:83
+#, no-c-format
+msgid ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam new-action ping\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"action-input:\n"
+"    [input] Enter the Seam component name\n"
+"ping\n"
+"    [input] Enter the local interface name [Ping]\n"
+"\n"
+"    [input] Enter the bean class name [PingBean]\n"
+"\n"
+"    [input] Enter the action method name [ping]\n"
+"\n"
+"    [input] Enter the page name [ping]\n"
+"\n"
+"\n"
+"setup-filters:\n"
+"\n"
+"new-action:\n"
+"     [echo] Creating a new stateless session bean component with an action "
+"method\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;view\n"
+"     [echo] Type 'seam restart' and go to \n"
+"     http://localhost:8080/helloworld/ping.seam\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 13 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:84
+#, no-c-format
+msgid ""
+"Because we've added a new Seam component, we need to restart the exploded "
+"directory deployment. You can do this by typing <literal>seam restart</"
+"literal>, or by running the <literal>restart</literal> target in the "
+"generated project <literal>build.xml</literal> file from inside Eclipse. "
+"Another way to force a restart is to edit the file <literal>resources/META-"
+"INF/application.xml</literal> in Eclipse. <emphasis>Note that you do not "
+"need to restart JBoss each time you change the application.</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:87
+#, no-c-format
+msgid ""
+"Now go to <literal>http://localhost:8080/helloworld/ping.seam</literal> and "
+"click the button. You can see the code behind this action by looking in the "
+"project <literal>src</literal> directory. Put a breakpoint in the "
+"<literal>ping()</literal> method, and click the button again."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:90
+#, no-c-format
+msgid ""
+"Finally, locate the <literal>PingTest.xml</literal> file in the test package "
+"and run the integration tests using the TestNG plugin for Eclipse. "
+"Alternatively, run the tests using <literal>seam test</literal> or the "
+"<literal>test</literal> target of the generated build."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:96
+#, no-c-format
+msgid "Creating a form with an action"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:97
+#, no-c-format
+msgid "The next step is to create a form. Type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:100
+#, no-c-format
+msgid "seam new-form"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:101
+#, no-c-format
+msgid ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam new-form\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"action-input:\n"
+"    [input] Enter the Seam component name\n"
+"hello\n"
+"    [input] Enter the local interface name [Hello]\n"
+"\n"
+"    [input] Enter the bean class name [HelloBean]\n"
+"\n"
+"    [input] Enter the action method name [hello]\n"
+"\n"
+"    [input] Enter the page name [hello]\n"
+"\n"
+"\n"
+"setup-filters:\n"
+"\n"
+"new-form:\n"
+"     [echo] Creating a new stateful session bean component with an action "
+"method\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;view\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [echo] Type 'seam restart' and go to http://localhost:8080/hello/hello."
+"seam\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 5 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:102
+#, no-c-format
+msgid ""
+"Restart the application again, and go to <literal>http://localhost:8080/"
+"helloworld/hello.seam</literal>. Then take a look at the generated code. Run "
+"the test. Try adding some new fields to the form and Seam component "
+"(remember to restart the deploment each time you change the Java code)."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:108
+#, no-c-format
+msgid "Generating an application from an existing database"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:109
+#, no-c-format
+msgid ""
+"Manually create some tables in your database. (If you need to switch to a "
+"different database, just run <literal>seam setup</literal> again.) Now type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:112
+#, no-c-format
+msgid "seam generate-entities"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:113
+#, no-c-format
+msgid ""
+"Restart the deployment, and go to <literal>http://localhost:8080/helloworld</"
+"literal>. You can browse the database, edit existing objects, and create new "
+"objects. If you look at the generated code, you'll probably be amazed how "
+"simple it is! Seam was designed so that data access code is easy to write by "
+"hand, even for people who don't want to cheat by using seam-gen."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:119
+#, no-c-format
+msgid "Deploying the application as an EAR"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:120
+#, no-c-format
+msgid ""
+"Finally, we want to be able to deploy the application using standard Java EE "
+"5 packaging. First, we need to remove the exploded directory by running "
+"<literal>seam unexplode</literal>. To deploy the EAR, we can type "
+"<literal>seam deploy</literal> at the command prompt, or run the "
+"<literal>deploy</literal> target of the generated project build script. You "
+"can undeploy using <literal>seam undeploy</literal> or the "
+"<literal>undeploy</literal> target."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:123
+#, no-c-format
+msgid ""
+"By default, the application will be deployed with the <emphasis>dev profile</"
+"emphasis>. The EAR will include the <literal>persistence-dev.xml</literal> "
+"and <literal>import-dev.sql</literal> files, and the <literal>myproject-dev-"
+"ds.xml</literal> file will be deployed. You can change the profile, and use "
+"the <emphasis>prod profile</emphasis>, by typing"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:126
+#, no-c-format
+msgid "seam -Dprofile=prod deploy"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:127
+#, no-c-format
+msgid ""
+"You can even define new deployment profiles for your application. Just add "
+"appropriately named files to your project&mdash;for example, "
+"<literal>persistence-staging.xml</literal>, <literal>import-staging.sql</"
+"literal> and <literal>myproject-staging-ds.xml</literal>&mdash;and select "
+"the name of the profile using <literal>-Dprofile=staging</literal>."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/I18n.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/I18n.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/I18n.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,533 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: I18n.xml:10
+#, no-c-format
+msgid "Internationalization and themes"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:11
+#, no-c-format
+msgid ""
+"Seam makes it easy to build internationalized applications by providing "
+"several built-in components for handling multi-language UI messages."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:15
+#, no-c-format
+msgid "Locales"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:16
+#, no-c-format
+msgid ""
+"Each user login session has an associated instance of <literal>java.util."
+"Locale</literal> (available to the application as a session-scoped component "
+"named <literal>locale</literal>). Under normal circumstances, you won't need "
+"to do any special configuration to set the locale. Seam just delegates to "
+"JSF to determine the active locale:"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:21
+#, no-c-format
+msgid ""
+"If there is a locale associated with the HTTP request (the browser locale), "
+"and that locale is in the list of supported locales from <literal>faces-"
+"config.xml</literal>, use that locale for the rest of the session."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:24
+#, no-c-format
+msgid ""
+"Otherwise, if a default locale was specified in the <literal>faces-config."
+"xml</literal>, use that locale for the rest of the session."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:27
+#, no-c-format
+msgid "Otherwise, use the default locale of the server."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:30
+#, no-c-format
+msgid ""
+"It is <emphasis>possible</emphasis> to set the locale manually via the Seam "
+"configuration properties <literal>org.jboss.seam.core.localeSelector."
+"language</literal>, <literal>org.jboss.seam.core.localeSelector.country</"
+"literal> and <literal>org.jboss.seam.core.localeSelector.variant</literal>, "
+"but we can't think of any good reason to ever do this."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:33
+#, no-c-format
+msgid ""
+"It is, however, useful to allow the user to set the locale manually via the "
+"application user interface. Seam provides built-in functionality for "
+"overriding the locale determined by the algorithm above. All you have to do "
+"is add the following fragment to a form in your JSP or Facelets page:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:36
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{localeSelector.language}\"&gt;\n"
+"    &lt;f:selectItem itemLabel=\"English\" itemValue=\"en\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Deutsch\" itemValue=\"de\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Francais\" itemValue=\"fr\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{localeSelector.select}\" value=\"#{messages"
+"['ChangeLanguage']}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:37
+#, no-c-format
+msgid ""
+"Or, if you want a list of all supported locales from <literal>faces-config."
+"xml</literal>, just use:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:40
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{localeSelector.localeString}\"&gt;\n"
+"    &lt;f:selectItems value=\"#{localeSelector.supportedLocales}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{localeSelector.select}\" value=\"#{messages"
+"['ChangeLanguage']}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:41
+#, no-c-format
+msgid ""
+"When this use selects an item from the drop-down, and clicks the button, the "
+"Seam and JSF locales will be overridden for the rest of the session."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:47
+#, no-c-format
+msgid "Labels"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:48
+#, no-c-format
+msgid ""
+"JSF supports internationalization of user interface labels and descriptive "
+"text via the use of <literal>&lt;f:loadBundle /&gt;</literal>. You can use "
+"this approach in Seam applications. Alternatively, you can take advantage of "
+"the Seam <literal>messages</literal> component to display templated labels "
+"with embedded EL expressions."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:52
+#, no-c-format
+msgid "Defining labels"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:53
+#, no-c-format
+msgid ""
+"Each login session has an associated instance of <literal>java.util."
+"ResourceBundle</literal> (available to the application as a session-scoped "
+"component named <literal>org.jboss.seam.core.resourceBundle</literal>). "
+"You'll need to make your internationalized labels available via this special "
+"resource bundle. By default, the resource bundle used by Seam is named "
+"<literal>messages</literal> and so you'll need to define your labels in "
+"files named <literal>messages.properties</literal>, <literal>messages_en."
+"properties</literal>, <literal>messages_en_AU.properties</literal>, etc. "
+"These files usually belong in the <literal>WEB-INF/classes</literal> "
+"directory."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:56
+#, no-c-format
+msgid "So, in <literal>messages_en.properties</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:59
+#, no-c-format
+msgid "Hello=Hello"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:60
+#, no-c-format
+msgid "And in <literal>messages_en_AU.properties</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:63
+#, no-c-format
+msgid "Hello=G'day"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:64
+#, no-c-format
+msgid ""
+"You can select a different name for the resource bundle by setting the Seam "
+"configuration property named <literal>org.jboss.seam.core.resourceBundle."
+"bundleNames</literal>. You can even specify a list of resource bundle names "
+"to be searched (depth first) for messages."
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:67
+#, no-c-format
+msgid ""
+"&lt;core:resource-bundle&gt;\n"
+"    &lt;core:bundle-names&gt;\n"
+"        &lt;value&gt;mycompany_messages&lt;/value&gt;\n"
+"        &lt;value&gt;standard_messages&lt;/value&gt;       \n"
+"    &lt;/core:bundle-names&gt;\n"
+"&lt;/core:resource-bundle&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:68
+#, no-c-format
+msgid ""
+"If you want to define a message just for a particular page, you can specify "
+"it in a resource bundle with the same name as the JSF view id, with the "
+"leading <literal>/</literal> and trailing file extension removed. So we "
+"could put our message in <literal>welcome/hello_en.properties</literal> if "
+"we only needed to display the message on <literal>/welcome/hello.jsp</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:71
+#, no-c-format
+msgid ""
+"You can even specify an explicit bundle name in <literal>pages.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:74
+#, no-c-format
+msgid "&lt;page view-id=\"/welcome/hello.jsp\" bundle=\"HelloMessages\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:75
+#, no-c-format
+msgid ""
+"Then we could use messages defined in <literal>HelloMessages.properties</"
+"literal> on <literal>/welcome/hello.jsp</literal>."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:81
+#, no-c-format
+msgid "Displaying labels"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:82
+#, no-c-format
+msgid ""
+"If you define your labels using the Seam resource bundle, you'll be able to "
+"use them without having to type <literal>&lt;f:loadBundle ... /&gt;</"
+"literal> on every page. Instead, you can simply type:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:85
+#, no-c-format
+msgid "&lt;h:outputText value=\"#{messages['Hello']}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:86
+#, no-c-format
+msgid "<para>or:</para>"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:89
+#, no-c-format
+msgid "&lt;h:outputText value=\"#{messages.Hello}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:90
+#, no-c-format
+msgid "Even better, the messages themselves may contain EL expressions:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:93
+#, no-c-format
+msgid "Hello=Hello, #{user.firstName} #{user.lastName}"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:94
+#, no-c-format
+msgid "Hello=G'day, #{user.firstName}"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:95
+#, no-c-format
+msgid "You can even use the messages in your code:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:98
+#, no-c-format
+msgid "@In private Map&lt;String, String&gt; messages;"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:99
+#, no-c-format
+msgid "@In(\"#{messages['Hello']}\") private String helloMessage;"
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:103
+#, no-c-format
+msgid "Faces messages"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:104
+#, no-c-format
+msgid ""
+"The <literal>facesMessages</literal> component is a super-convenient way to "
+"display success or failure messages to the user. The functionality we just "
+"described also works for faces messages:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:107
+#, no-c-format
+msgid ""
+"@Name(\"hello\")\n"
+"@Stateless\n"
+"public class HelloBean implements Hello {\n"
+"    @In FacesMessages facesMessages;\n"
+"    \n"
+"    public String sayIt() {\n"
+"        facesMessages.addFromResourceBundle(\"Hello\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:108
+#, no-c-format
+msgid ""
+"This will display <literal>Hello, Gavin King</literal> or <literal>G'day, "
+"Gavin</literal>, depending upon the user's locale."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:116
+#, no-c-format
+msgid "Timezones"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:117
+#, no-c-format
+msgid ""
+"There is also a session-scoped instance of <literal>java.util.Timezone</"
+"literal>, named <literal>org.jboss.seam.core.timezone</literal>, and a Seam "
+"component for changing the timezone named <literal>org.jboss.seam.core."
+"timezoneSelector</literal>. By default, the timezone is the default timezone "
+"of the server. Unfortunately, the JSF specification says that all dates and "
+"times should be assumed to be UTC, and displayed as UTC, unless a timezone "
+"is explicitly specified using <literal>&lt;f:convertDateTime&gt;</literal>. "
+"This is an extremely inconvenient default behavior."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:120
+#, no-c-format
+msgid ""
+"Seam overrides this behavior, and defaults all dates and times to the Seam "
+"timezone. In addition, Seam provides the <literal>&lt;s:convertDateTime&gt;</"
+"literal> tag which always performs conversions in the Seam timezone."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:126
+#, no-c-format
+msgid "Themes"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:127
+#, no-c-format
+msgid ""
+"Seam applications are also very easily skinnable. The theme API is very "
+"similar to the localization API, but of course these two concerns are "
+"orthogonal, and some applications support both localization and themes."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:130
+#, no-c-format
+msgid "First, configure the set of supported themes:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:133
+#, no-c-format
+msgid ""
+"&lt;theme:theme-selector cookie-enabled=\"true\"&gt;\n"
+"    &lt;theme:available-themes&gt;\n"
+"        &lt;value&gt;default&lt;/value&gt;\n"
+"        &lt;value&gt;accessible&lt;/value&gt;\n"
+"        &lt;value&gt;printable&lt;/value&gt;\n"
+"    &lt;/theme:available-themes&gt;\n"
+"&lt;/theme:theme-selector&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:134
+#, no-c-format
+msgid "Note that the first theme listed is the default theme."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:137
+#, no-c-format
+msgid ""
+"Themes are defined in a properties file with the same name as the theme. For "
+"example, the <literal>default</literal> theme is defined as a set of entries "
+"in <literal>default.properties</literal>. For example, <literal>default."
+"properties</literal> might define:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:140
+#, no-c-format
+msgid ""
+"css ../screen.css\n"
+"template template.xhtml"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:141
+#, no-c-format
+msgid ""
+"Usually the entries in a theme resource bundle will be paths to CSS styles "
+"or images and names of facelets templates (unlike localization resource "
+"bundles which are usually text)."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:144
+#, no-c-format
+msgid ""
+"Now we can use these entries in our JSP or facelets pages. For example, to "
+"theme the stylesheet in a facelets page:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:147
+#, no-c-format
+msgid ""
+"&lt;link href=\"#{theme.css}\" rel=\"stylesheet\" type=\"text/css\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:148
+#, no-c-format
+msgid ""
+"Most powerfully, facelets lets us theme the template used by a <literal>&lt;"
+"ui:composition&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:151
+#, no-c-format
+msgid ""
+"&lt;ui:composition xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"    xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"    xmlns:h=\"http://java.sun.com/jsf/html\"\n"
+"    xmlns:f=\"http://java.sun.com/jsf/core\"\n"
+"    template=\"#{theme.template}\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:152
+#, no-c-format
+msgid ""
+"Just like the locale selector, there is a built-in theme selector to allow "
+"the user to freely switch themes:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:155
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{themeSelector.theme}\"&gt;\n"
+"    &lt;f:selectItems value=\"#{themeSelector.themes}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{themeSelector.select}\" value=\"Select Theme"
+"\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:159
+#, no-c-format
+msgid "Persisting locale and theme preferences via cookies"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:160
+#, no-c-format
+msgid ""
+"The locale selector, theme selector and timezone selector all support "
+"persistence of locale and theme preference to a cookie. Simply set the "
+"<literal>cookie-enabled</literal> configuration property:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:163
+#, no-c-format
+msgid ""
+"&lt;theme:theme-selector cookie-enabled=\"true\"&gt;\n"
+"    &lt;theme:available-themes&gt;\n"
+"        &lt;value&gt;default&lt;/value&gt;\n"
+"        &lt;value&gt;accessible&lt;/value&gt;\n"
+"        &lt;value&gt;printable&lt;/value&gt;\n"
+"    &lt;/theme:available-themes&gt;\n"
+"&lt;/theme:theme-selector&gt;\n"
+"\n"
+"&lt;core:locale-selector cookie-enabled=\"true\"/&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Itext.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Itext.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Itext.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1452 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Itext.xml:10
+#, no-c-format
+msgid "iText PDF generation"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:11
+#, no-c-format
+msgid ""
+"Seam now includes an component set for generating documents using iText. The "
+"primary focus of Seam's iText document support is for the generation of PDF "
+"doucuments, but Seam also offers basic support for RTF document generation."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:15
+#, no-c-format
+msgid "Using PDF Support"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:16
+#, no-c-format
+msgid ""
+"iText support is provided by <literal>jboss-seam-pdf.jar</literal>. This JAR "
+"contains the iText JSF controls, which are used to construct views that can "
+"render to PDF, and the DocumentStore component, which serves the rendered "
+"documents to the user. To include PDF support in your application, included "
+"<literal>jboss-seam-pdf.jar</literal> in your <literal>WEB-INF/lib</literal> "
+"directory along with the iText JAR file. There is no further configuration "
+"needed to use Seam's iText support."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:19
+#, no-c-format
+msgid ""
+"The Seam iText module requires the use of Facelets as the view technology. "
+"Future versions of the library may also support the use of JSP. "
+"Additionally, it requires the use of the seam-ui package."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:22
+#, no-c-format
+msgid ""
+"The <literal>examples/itext</literal> project contains an example of the PDF "
+"support in action. It demonstrates proper deployment packaging, and it "
+"contains a number examples that demonstrate the key PDF generation features "
+"current supported."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:28
+#, no-c-format
+msgid "Creating a document"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:29
+#, no-c-format
+msgid ""
+"Documents are generated by facelets documents using tags in the "
+"<literal>http://jboss.com/products/seam/pdf</literal> namespace. Documents "
+"should always have the <literal>document</literal> tag at the root of the "
+"document. The <literal>document</literal> tag prepares Seam to generate a "
+"document into the DocumentStore and renders an HTML redirect to that stored "
+"content. The following is a a small PDF document consisting only a single "
+"line of text:"
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:32
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf"
+"\"&gt;                                                      \n"
+"   The document goes "
+"here.                                                                                             \n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:34
+#, no-c-format
+msgid "p:document"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:35
+#, no-c-format
+msgid ""
+"The <literal>p:document</literal> tag supports the following attributes:"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:40
+#, no-c-format
+msgid "type"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:42
+#, no-c-format
+msgid ""
+"The type of the document to be produced. Valid values are <literal>PDF</"
+"literal>, <literal>RTF</literal> and <literal>HTML</literal> modes. Seam "
+"defaults to PDF generation, and many of the features only work correctly "
+"when generating PDF documents."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:48
+#, no-c-format
+msgid "pageSize"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:50
+#, no-c-format
+msgid ""
+"The size of the page to be generate. The most commonly used values would be "
+"<literal>LETTER</literal> and <literal>A4</literal>. A full list of "
+"supported pages sizes can be found in <literal>com.lowagie.text.PageSize</"
+"literal> class. Alternatively, pageSize can provide the width and height of "
+"the page directly. The value \"612 792\", for example, is equizalent to the "
+"LETTER page size."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:56
+#, no-c-format
+msgid "orientation"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:58
+#, no-c-format
+msgid ""
+"The orientation of the page. Valid values are <literal>portrait</literal> "
+"and <literal>landscape</literal>. In landscape mode, the height and width "
+"page size values are reversed."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:64
+#, no-c-format
+msgid "margins"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:66
+#, no-c-format
+msgid "The left, right, top and bottom margin values."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:72
+#, no-c-format
+msgid "marginMirroring"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:74
+#, no-c-format
+msgid "Indicates that margin settings should be reversed an alternating pages."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:80
+#, no-c-format
+msgid ""
+"Document metadata is also set as attributes of the document tag. The "
+"following metadata fields are supported:"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:85
+#, no-c-format
+msgid "title"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:92
+#, no-c-format
+msgid "subject"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:99
+#, no-c-format
+msgid "keywords"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:106
+#, no-c-format
+msgid "author"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:113
+#, no-c-format
+msgid "creator"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:125
+#, no-c-format
+msgid "Basic Text Elements"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:126
+#, no-c-format
+msgid ""
+"Useful documents will need to contain more than just text; however, the "
+"standard UI components are geared towards HTML generation and are not useful "
+"for generating PDF content. Instead, Seam provides a special UI components "
+"for generating suitable PDF content. Tags like <literal>&lt;p:image&gt;</"
+"literal> and <literal>&lt;p:paragraph&gt;</literal> are the basic "
+"foundations of simple documents. Tags like <literal>&lt;p:font&gt;</literal> "
+"provide style information to all the content surrounging them."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:129
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"&gt; \n"
+"    &lt;p:image alignment=\"right\" wrap=\"true\" resource=\"/logo.jpg\" /"
+"&gt;\n"
+"    &lt;p:font size=\"24\"&gt;\n"
+"        &lt;p:paragraph spacingAfter=\"50\"&gt;My First Document&lt;/p:"
+"paragraph&gt;\n"
+"    &lt;/p:font&gt;\n"
+"\n"
+"    &lt;p:paragraph alignment=\"justify\"&gt;\n"
+"        This is a simple document.  It isn't very fancy.\n"
+"    &lt;/p:paragraph&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:131
+#, no-c-format
+msgid "p:paragraph"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:132
+#, no-c-format
+msgid ""
+"Most uses of text should be sectioned into paragraphs so that text fragments "
+"can be flowed, formatted and styled in logical groups."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:137
+#, no-c-format
+msgid "firstLineIndent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:144 Itext.xml:836
+#, no-c-format
+msgid "extraParagraphSpace"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:151 Itext.xml:808
+#, no-c-format
+msgid "leading"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:158 Itext.xml:815
+#, no-c-format
+msgid "multipliedLeading"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:165 Itext.xml:344 Itext.xml:716
+#, no-c-format
+msgid "spacingBefore"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:167 Itext.xml:346 Itext.xml:718
+#, no-c-format
+msgid "The blank space to be inserted before the element."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:173 Itext.xml:352 Itext.xml:724
+#, no-c-format
+msgid "spacingAfter"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:175 Itext.xml:354 Itext.xml:726
+#, no-c-format
+msgid "The blank space to be inserted after the element."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:181 Itext.xml:330 Itext.xml:599
+#, no-c-format
+msgid "indentationLeft"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:188 Itext.xml:337 Itext.xml:607
+#, no-c-format
+msgid "indentationRight"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:195 Itext.xml:753
+#, no-c-format
+msgid "keepTogether"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:205
+#, no-c-format
+msgid "p:text"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:206
+#, no-c-format
+msgid ""
+"The <literal>text</literal> tag allows text fragments to be produced from "
+"application data using normal JSF converter mechanisms. It is very similar "
+"to the <literal>outputText</literal> tag used when rendering HTML documents. "
+"Here is an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:209
+#, no-c-format
+msgid ""
+"&lt;p:paragraph&gt;\n"
+"    The item costs &lt;p:text value=\"#{product.price}\"&gt;\n"
+"        &lt;f:convertNumber type=\"currency\" currencySymbol=\"&#36;\"/&gt;\n"
+"    &lt;/p:text&gt;\n"
+"&lt;/p:paragraph&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:212
+#, no-c-format
+msgid "value"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:214
+#, no-c-format
+msgid ""
+"The value to be displayed. This will typically be a value binding expression."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:223
+#, no-c-format
+msgid "p:font"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:224
+#, no-c-format
+msgid "Font declarations have no direct"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:229
+#, no-c-format
+msgid "familyName"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:231
+#, no-c-format
+msgid ""
+"The font family. One of: <literal>COURIER</literal>, <literal>HELVETICA</"
+"literal>, <literal>TIMES-ROMAN</literal>, <literal>SYMBOL</literal> or "
+"<literal>ZAPFDINGBATS</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:237
+#, no-c-format
+msgid "size"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:239
+#, no-c-format
+msgid "The point size of the font."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:245 Itext.xml:534
+#, no-c-format
+msgid "style"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:247
+#, no-c-format
+msgid ""
+"The font styles. Any combination of : <literal>NORMAL</literal>, "
+"<literal>BOLD</literal>, <literal>ITALIC</literal>, <literal>OBLIQUE</"
+"literal>, <literal>UNDERLINE</literal>, <literal>LINE-THROUGH</literal>"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:256
+#, no-c-format
+msgid "p:newPage"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:257
+#, no-c-format
+msgid "<literal>p:newPage</literal> inserts a page break."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:263
+#, no-c-format
+msgid "p:image"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:264
+#, no-c-format
+msgid ""
+"<literal>p:image</literal> inserts an image into the document. Images can be "
+"be loaded from the classpath or from the web application context using the "
+"<literal>resource</literal> attribute."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:267
+#, no-c-format
+msgid "&lt;p:image resource=\"/jboss.jpg\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:268
+#, no-c-format
+msgid ""
+"Resources can also be dynamically generated by application code. The "
+"<literal>imageData</literal> attribute can specify a value binding "
+"expression whose value is a <literal>java.awt.Image</literal> object."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:271
+#, no-c-format
+msgid "&lt;p:image imageData=\"#{images.chart}\" /&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:274
+#, no-c-format
+msgid "resource"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:276
+#, no-c-format
+msgid ""
+"The location of the image resource to be included. Resources should be "
+"relative to the document root of the web application."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:282
+#, no-c-format
+msgid "imageData"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:284
+#, no-c-format
+msgid "A method expression binding to an application-generated image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:290 Itext.xml:913
+#, no-c-format
+msgid "rotation"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:292
+#, no-c-format
+msgid "The rotation of the image in degrees."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:298
+#, no-c-format
+msgid "height"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:300
+#, no-c-format
+msgid "The height of the image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:306
+#, no-c-format
+msgid "width"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:308
+#, no-c-format
+msgid "The width of the image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:314 Itext.xml:441 Itext.xml:591
+#, no-c-format
+msgid "alignment"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:316
+#, no-c-format
+msgid ""
+"The alignment of the image. (see <xref linkend=\"Document_Constants-"
+"Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:322
+#, no-c-format
+msgid "<literal>alt</literal>"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:324
+#, no-c-format
+msgid "Alternative text representation for the image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:360 Itext.xml:672
+#, no-c-format
+msgid "widthPercentage"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:367
+#, no-c-format
+msgid "initialRotation"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:374
+#, no-c-format
+msgid "<literal>dpi</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:381
+#, no-c-format
+msgid "scalePercent"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:383
+#, no-c-format
+msgid ""
+"The scaling factor (as a percentage) to use for the image. This can be "
+"expressed as a single percentage value or as two percentage values "
+"representing separate x and y scaling percentages."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:389
+#, no-c-format
+msgid "wrap"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:396
+#, no-c-format
+msgid "underlying"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:406
+#, no-c-format
+msgid "p:anchor"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:407
+#, no-c-format
+msgid ""
+"<literal>p:anchor</literal> defines clickable links from a document. It "
+"supports the following attributes:"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:412
+#, no-c-format
+msgid "name"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:414
+#, no-c-format
+msgid "The name of an in-document anchor destination."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:420
+#, no-c-format
+msgid "reference"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:422
+#, no-c-format
+msgid ""
+"The destination the link refers to. Links to other points in the document "
+"should begin with a \"#\". For example, \"#link1\" to refer to an anchor "
+"postion with a <literal>name</literal> of <literal>link1</literal>. Links "
+"may also be a full URL to point to a resource outside of the document."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:433
+#, no-c-format
+msgid "Headers and Footers"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:435
+#, no-c-format
+msgid "p:header and p:footer"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:436
+#, no-c-format
+msgid ""
+"The <literal>p:header</literal> and <literal>p:footer</literal> components "
+"provide the ability to place header and footer text on each page of a "
+"generated document, with the exception of the first page. Header and footer "
+"declarations should appear near the top of a document."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:443
+#, no-c-format
+msgid ""
+"The alignment of the header/footer box section. (see <xref linkend="
+"\"Document_Constants-Alignment_Values\"/> for alignment values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:449
+#, no-c-format
+msgid "backgroundColor"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:451
+#, no-c-format
+msgid ""
+"The background color of the header/footer box. (see <xref linkend="
+"\"Document_Constants-Color_Values\"/> for color values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:457
+#, no-c-format
+msgid "borderColor"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:459
+#, no-c-format
+msgid ""
+"The border color of the header/footer box. Individual border sides can be "
+"set using <literal>borderColorLeft</literal>, <literal>borderColorRight</"
+"literal>, <literal>borderColorTop</literal> and <literal>borderColorBottom</"
+"literal>.(see <xref linkend=\"Document_Constants-Color_Values\"/> for color "
+"values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:465
+#, no-c-format
+msgid "borderWidth"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:467
+#, no-c-format
+msgid ""
+"The width of the border. Inidvidual border sides can be specified using "
+"<literal>borderWidthLeft</literal>, <literal>borderWidthRight</literal>, "
+"<literal>borderWidthTop</literal> and <literal>borderWidthBottom</literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:476
+#, no-c-format
+msgid "p:pageNumber"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:477
+#, no-c-format
+msgid ""
+"The current page number can be placed inside of a header or footer using the "
+"<literal>p:pageNumber</literal> tag. The page number tag can only be used in "
+"the context of a header or footer and can only be used once."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:485
+#, no-c-format
+msgid "Chapters and Sections"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:486
+#, no-c-format
+msgid ""
+"If the generated document follows a book/article structure, the <literal>p:"
+"chapter</literal> and <literal>p:section</literal> tags can be used to "
+"provide the necessary structure. Sections can only be used inside of "
+"chapters, but they may be nested arbitrarily deep. Most PDF viewers provide "
+"easy navigation between chapters and sections in a document."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:489
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"\n"
+"            title=\"Hello\"&gt;\n"
+"\n"
+"   &lt;p:chapter number=\"1\"&gt;\n"
+"      &lt;p:title&gt;&lt;p:paragraph&gt;Hello&lt;/p:paragraph&gt;&lt;/p:"
+"title&gt;\n"
+"      &lt;p:paragraph&gt;Hello #{user.name}!&lt;/p:paragraph&gt;\n"
+"   &lt;/p:chapter&gt;\n"
+"\n"
+"   &lt;p:chapter number=\"2\"&gt;\n"
+"      &lt;p:title&gt;&lt;p:paragraph&gt;Goodbye&lt;/p:paragraph&gt;&lt;/p:"
+"title&gt;\n"
+"      &lt;p:paragraph&gt;Goodbye #{user.name}.&lt;/p:paragraph&gt;\n"
+"   &lt;/p:chapter&gt;\n"
+"\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:491
+#, no-c-format
+msgid "p:chapter and p:section"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:494
+#, no-c-format
+msgid "number"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:496
+#, no-c-format
+msgid "The chapter number. Every chapter should be assigned a chapter number."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:502
+#, no-c-format
+msgid "numberDepth"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:504
+#, no-c-format
+msgid ""
+"The depth of numbering for section. All sections are numbered relative to "
+"their surrounding chapter/sections. The fourth section of of the first "
+"section of chapter three would be section 3.1.4, if displayed at the default "
+"number depth of three. To omit the chapter number, a number depth of 2 "
+"should be used. In that case, the section number would be displayed as 1.4."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:513
+#, no-c-format
+msgid "p:title"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:514
+#, no-c-format
+msgid ""
+"Any chapter or section can contain a <literal>p:title</literal>. The title "
+"will be displayed next to the chapter/section number. The body of the title "
+"may contain raw text or may be a <literal>p:paragraph</literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:522
+#, no-c-format
+msgid "Lists"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:523
+#, no-c-format
+msgid ""
+"List structures can be displayed using the <literal>p:list</literal> and "
+"<literal>p:listItem</literal> tags. Lists may contain arbitrarily-nested "
+"sublists. List items may not be used outside of a list. he following "
+"document uses the <literal>ui:repeat</literal> tag to to display a list of "
+"values retrieved from a Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:526
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"\n"
+"            xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"            title=\"Hello\"&gt;\n"
+"   &lt;p:list style=\"numbered\"&gt;\n"
+"      &lt;ui:repeat value=\"#{documents}\" var=\"doc\"&gt;\n"
+"         &lt;p:listItem&gt;#{doc.name}&lt;/p:listItem&gt;\n"
+"      &lt;/ui:repeat&gt;\n"
+"   &lt;/p:list&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:528
+#, no-c-format
+msgid "p:list"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:529
+#, no-c-format
+msgid "<literal>p:list</literal> supports the following attributes:"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:536
+#, no-c-format
+msgid ""
+"The ordering/bulleting style of list. One of: <literal>NUMBERED</literal>, "
+"<literal>LETTERED</literal>, <literal>GREEK</literal>, <literal>ROMAN</"
+"literal>, <literal>ZAPFDINGBATS</literal>, <literal>ZAPFDINGBATS_NUMBER</"
+"literal>. If no style is given, the list items are bulleted."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:542 Itext.xml:615
+#, no-c-format
+msgid "listSymbol"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:544
+#, no-c-format
+msgid "For bulleted lists, specifies the bullet symbol."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:550 Itext.xml:822
+#, no-c-format
+msgid "indent"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:552
+#, no-c-format
+msgid "The indentation level of the list."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:558
+#, no-c-format
+msgid "lowerCase"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:560
+#, no-c-format
+msgid ""
+"For list styles using letters, indicates whether the letters should be lower "
+"case."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:566
+#, no-c-format
+msgid "charNumber"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:568
+#, no-c-format
+msgid "For ZAPFDINGBATS, indicates the character code of the bullet character."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:574
+#, no-c-format
+msgid "numberType"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:576
+#, no-c-format
+msgid "For ZAPFDINGBATS_NUMBER, indicates the numbering style."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:585
+#, no-c-format
+msgid "p:listItem"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:586
+#, no-c-format
+msgid "<literal>p:listItem</literal> supports the following attributes:"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:593
+#, no-c-format
+msgid ""
+"The alignment of the list item. (See <xref linkend=\"Document_Constants-"
+"Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:601
+#, no-c-format
+msgid "The left indentation amount."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:609
+#, no-c-format
+msgid "The right indentation amount."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:617
+#, no-c-format
+msgid "Overrides the default list symbol for this list item."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:628
+#, no-c-format
+msgid "Tables"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:629
+#, no-c-format
+msgid ""
+"Table structures can be created using the <literal>p:table</literal> and "
+"<literal>p:cell</literal> tags. Unlike many table structures, there is no "
+"explicit row declaration. If a table has 3 columns, then every 3 cells will "
+"automatically form a row. Header and footer rows can be declared, and the "
+"headers and footers will be repeated in the event a table structure spans "
+"multiple pages."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:632
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"   \n"
+"            xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"            title=\"Hello\"&gt;   \n"
+"   &lt;p:table columns=\"3\" headerRows=\"1\"&gt;\n"
+"      &lt;p:cell&gt;name&lt;/p:cell&gt;\n"
+"      &lt;p:cell&gt;owner&lt;/p:cell&gt;\n"
+"      &lt;p:cell&gt;size&lt;/p:cell&gt;\n"
+"      &lt;ui:repeat value=\"#{documents}\" var=\"doc\"&gt;\n"
+"         &lt;p:cell&gt;#{doc.name}&lt;/p:cell&gt;\n"
+"         &lt;p:cell&gt;#{doc.user.name}&lt;/p:cell&gt;\n"
+"         &lt;p:cell&gt;#{doc.size}&lt;/p:cell&gt;\n"
+"      &lt;/ui:repeat&gt;\n"
+"   &lt;/p:table&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:634
+#, no-c-format
+msgid "p:table"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:635
+#, no-c-format
+msgid "<literal>p:table</literal> supports the following attributes."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:640
+#, no-c-format
+msgid "columns"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:642
+#, no-c-format
+msgid "The number of columns (cells) that make up a table row."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:648
+#, no-c-format
+msgid "widths"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:650
+#, no-c-format
+msgid ""
+"The relative widths of each column. There should be one value for each "
+"column. For example: widths=\"2 1 1\" would indicate that there are 3 "
+"columns and the first column should be twice the size of the second and "
+"third column."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:656
+#, no-c-format
+msgid "headerRows"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:658
+#, no-c-format
+msgid ""
+"The initial number of rows which are considered to be headers or footer rows "
+"and should be repeated if the table spans multiple pages."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:664
+#, no-c-format
+msgid "footerRows"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:666
+#, no-c-format
+msgid ""
+"The number of rows that are considered to be footer rows. This value is "
+"subtracted from the <literal>headerRows</literal> value. If document has 2 "
+"rows which make up the header and one row that makes up the footer, "
+"<literal>headerRows</literal> should be set to 3 and <literal>footerRows</"
+"literal> should be set to 1"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:674
+#, no-c-format
+msgid "The percentage of the page width that the table spans."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:680 Itext.xml:777
+#, no-c-format
+msgid "horizontalAlignment"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:682
+#, no-c-format
+msgid ""
+"The horizontal alignment of the table. (See <xref linkend="
+"\"Document_Constants-Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:688
+#, no-c-format
+msgid "skipFirstHeader"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:695 Itext.xml:885
+#, no-c-format
+msgid "runDirection"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:702
+#, no-c-format
+msgid "lockedWidth"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:709
+#, no-c-format
+msgid "splitRows"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:732
+#, no-c-format
+msgid "extendLastRow"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:739
+#, no-c-format
+msgid "headersInEvent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:746
+#, no-c-format
+msgid "splitLate"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:763
+#, no-c-format
+msgid "p:cell"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:764
+#, no-c-format
+msgid "<literal>p:cell</literal> supports the following attributes."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:769
+#, no-c-format
+msgid "colspan"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:771
+#, no-c-format
+msgid ""
+"Cells can span more than one column by declaring a <literal>colspan</"
+"literal> greater than 1. Tables do not have the ability to span across "
+"multiple rows."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:779
+#, no-c-format
+msgid ""
+"The horizontal alignment of the cell. (see <xref linkend="
+"\"Document_Constants-Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:785 Itext.xml:829
+#, no-c-format
+msgid "verticalAlignment"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:787
+#, no-c-format
+msgid ""
+"The vertical alignment of the cell. (see <xref linkend=\"Document_Constants-"
+"Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:793
+#, no-c-format
+msgid "padding"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:795
+#, no-c-format
+msgid ""
+"Padding on a given side can also be specified using <literal>paddingLeft</"
+"literal>, <literal>paddingRight</literal>, <literal>paddingTop</literal> and "
+"<literal>paddingBottom</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:801
+#, no-c-format
+msgid "useBorderPadding"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:843
+#, no-c-format
+msgid "fixedHeight"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:850
+#, no-c-format
+msgid "noWrap"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:857
+#, no-c-format
+msgid "minimumHeight"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:864
+#, no-c-format
+msgid "followingIndent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:871
+#, no-c-format
+msgid "rightIndent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:878
+#, no-c-format
+msgid "spaceCharRatio"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:892
+#, no-c-format
+msgid "arabicOptions"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:899
+#, no-c-format
+msgid "useAscender"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:906
+#, no-c-format
+msgid "grayFill"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:925
+#, no-c-format
+msgid "Document Constants"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:926
+#, no-c-format
+msgid ""
+"This section documents some of the constants shared by attributes on "
+"multiple tags."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:930
+#, no-c-format
+msgid "Color Values"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:931
+#, no-c-format
+msgid ""
+"Seam documents do not yet support a full color specification. Currently, "
+"only named colors are supported. They are: <literal>white</literal>, "
+"<literal>gray</literal>, <literal>lightgray</literal>, <literal>darkgray</"
+"literal>, <literal>black</literal>, <literal>red</literal>, <literal>pink</"
+"literal>, <literal>yellow</literal>, <literal>green</literal>, "
+"<literal>magenta</literal>, <literal>cyan</literal> and <literal>blue</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:937
+#, no-c-format
+msgid "Alignment Values"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:938
+#, no-c-format
+msgid ""
+"Where alignment values are used, the Seam PDF supports the following "
+"horizontal alignment values: <literal>left</literal>, <literal>right</"
+"literal>, <literal>center</literal>, <literal>justify</literal> and "
+"<literal>justifyall</literal>. The vertical alignment values are "
+"<literal>top</literal>, <literal>middle</literal>, <literal>bottom</"
+"literal>, and <literal>baseline</literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:946
+#, no-c-format
+msgid "Configuring iText"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:947
+#, no-c-format
+msgid ""
+"Document generation works out of the box with no additional configuration "
+"needed. However, there are a few points of configuration that are needed for "
+"more serious applications."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:950
+#, no-c-format
+msgid ""
+"The default implementation serves PDF documents from a generic URL, "
+"<literal>/seam-doc.seam</literal>. Many browsers (and users) would prefer to "
+"see URLs that contain the actual PDF name like <literal>/myDocument.pdf</"
+"literal>. This capability requires some configuration. To serve PDF files, "
+"all *.pdf resources should be mapped to the Seam Servlet Filter and to the "
+"DocumentStoreServlet:"
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:953
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.servlet.SeamServletFilter&lt;/filter-"
+"class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;\n"
+"\n"
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.pdf.DocumentStoreServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"\n"
+"&lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:954
+#, no-c-format
+msgid ""
+"The <literal>useExtensions</literal> option on the document store component "
+"completes the functionality by instructing the document store to generate "
+"URLs with the correct filename extension for the document type being "
+"generated."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:957
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pdf=\"http://jboss.com/products/seam/pdf\"&gt;\n"
+"    &lt;pdf:documentStore useExtensions=\"true\" /&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:958
+#, no-c-format
+msgid ""
+"Generated documents are stored in conversation scope and will expire when "
+"the conversation ends. At that point, references to the document will be "
+"invalid. To You can specify a default view to be shown when a document does "
+"not exist using the <literal>errorPage</literal> property of the "
+"documentStore."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:961
+#, no-c-format
+msgid ""
+"&lt;pdf:documentStore useExtensions=\"true\" errorPage=\"/pdfMissing.seam\" /"
+"&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:965
+#, no-c-format
+msgid "iText links"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:966
+#, no-c-format
+msgid "For further information on iText, see:"
+msgstr ""
+
+#. Tag: ulink
+#: Itext.xml:973
+#, no-c-format
+msgid "iText Home Page"
+msgstr ""
+
+#. Tag: ulink
+#: Itext.xml:978
+#, no-c-format
+msgid "iText in Action"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Jbpm.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Jbpm.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Jbpm.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1189 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Jbpm.xml:10
+#, no-c-format
+msgid "Pageflows and business processes"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:11
+#, no-c-format
+msgid ""
+"JBoss jBPM is a business process management engine for any Java SE or EE "
+"environment. jBPM lets you represent a business process or user interaction "
+"as a graph of nodes representing wait states, decisions, tasks, web pages, "
+"etc. The graph is defined using a simple, very readable, XML dialect called "
+"jPDL, and may be edited and visualised graphically using an eclipse plugin. "
+"jPDL is an extensible language, and is suitable for a range of problems, "
+"from defining web application page flow, to traditional workflow management, "
+"all the way up to orchestration of services in a SOA environment."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:14
+#, no-c-format
+msgid "Seam applications use jBPM for two different problems:"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:20
+#, no-c-format
+msgid ""
+"Defining the pageflow involved in complex user interactions. A jPDL process "
+"definition defines the page flow for a single conversation. A Seam "
+"conversation is considered to be a relatively short-running interaction with "
+"a single user."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:25
+#, no-c-format
+msgid ""
+"Defining the overarching business process. The business process may span "
+"multiple conversations with multiple users. Its state is persistent in the "
+"jBPM database, so it is considered long-running. Coordination of the "
+"activities of multiple users is a much more complex problem than scripting "
+"an interaction with a single user, so jBPM offers sophisticated facilities "
+"for task management and dealing with multiple concurrent paths of execution."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:31
+#, no-c-format
+msgid ""
+"Don't get these two things confused ! They operate at very different levels "
+"or granularity. <emphasis>Pageflow</emphasis>, <emphasis>conversation</"
+"emphasis> and <emphasis>task</emphasis> all refer to a single interaction "
+"with a single user. A business process spans many tasks. Futhermore, the two "
+"applications of jBPM are totally orthogonal. You can use them together or "
+"independently or not at all."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:34
+#, no-c-format
+msgid ""
+"You don't have to know jDPL to use Seam. If you're perfectly happy defining "
+"pageflow using JSF or Seam navigation rules, and if your application is more "
+"data-driven that process-driven, you probably don't need jBPM. But we're "
+"finding that thinking of user interaction in terms of a well-defined "
+"graphical representation is helping us build more robust applications."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:37
+#, no-c-format
+msgid ""
+"Please refer to the jBPM documentation for a more thorough overview of the "
+"sophisticated features that jBPM provides for managing complex business "
+"processes."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:41
+#, no-c-format
+msgid "Pageflow in Seam"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:42
+#, no-c-format
+msgid "There are two ways to define pageflow in Seam:"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:47
+#, no-c-format
+msgid ""
+"Using JSF or Seam navigation rules - the <emphasis>stateless navigation "
+"model</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:52
+#, no-c-format
+msgid "Using jPDL - the <emphasis>stateful navigation model</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:57
+#, no-c-format
+msgid ""
+"Very simple applications will only need the stateless navigation model. Very "
+"complex applications will use both models in different places. Each model "
+"has its strengths and weaknesses!"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:60
+#, no-c-format
+msgid ""
+"In practice, both navigation models have their place, and you'll quickly "
+"learn to recognize when to prefer one model over the other."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:64
+#, no-c-format
+msgid "The two navigation models"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:65
+#, no-c-format
+msgid ""
+"The stateless model defines a mapping from a set of named, logical outcomes "
+"of an event directly to the resulting page of the view. The navigation rules "
+"are entirely oblivious to any state held by the application other than what "
+"page was the source of the event. This means that your action listener "
+"methods must sometimes make decisions about the page flow, since only they "
+"have access to the current state of the application."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:68
+#, no-c-format
+msgid "Here is an example page flow definition using JSF navigation rules:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:71
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"    &lt;from-view-id&gt;/numberGuess.jsp&lt;/from-view-id&gt;\n"
+"        \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;guess&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/numberGuess.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;win&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/win.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"        \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;lose&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/lose.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:72
+#, no-c-format
+msgid ""
+"Here is the same example page flow definition using Seam navigation rules:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:75
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/numberGuess.jsp\"&gt;\n"
+"        \n"
+"    &lt;navigation&gt;\n"
+"        &lt;rule if-outcome=\"guess\"&gt;\n"
+"            &lt;redirect view-id=\"/numberGuess.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"        &lt;rule if-outcome=\"win\"&gt;\n"
+"            &lt;redirect view-id=\"/win.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"        &lt;rule if-outcome=\"lose\"&gt;\n"
+"            &lt;redirect view-id=\"/lose.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:76
+#, no-c-format
+msgid ""
+"If you find navigation rules overly verbose, you can return view ids "
+"directly from your action listener methods:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:79
+#, no-c-format
+msgid ""
+"public String guess() {\n"
+"    if (guess==randomNumber) return \"/win.jsp\";\n"
+"    if (++guessCount==maxGuesses) return \"/lose.jsp\";\n"
+"    return null;\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:80
+#, no-c-format
+msgid ""
+"Note that this results in a redirect. You can even specify parameters to be "
+"used in the redirect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:83
+#, no-c-format
+msgid ""
+"public String search() {\n"
+"    return \"/searchResults.jsp?searchPattern=#{searchAction.searchPattern}"
+"\";\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:84
+#, no-c-format
+msgid ""
+"The stateful model defines a set of transitions between a set of named, "
+"logical application states. In this model, it is possible to express the "
+"flow of any user interaction entirely in the jPDL pageflow definition, and "
+"write action listener methods that are completely unaware of the flow of the "
+"interaction."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:87
+#, no-c-format
+msgid "Here is an example page flow definition using jPDL:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:90
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"numberGuess\"&gt;\n"
+"    \n"
+"   &lt;start-page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"      &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"      &lt;/transition&gt;\n"
+"   &lt;/start-page&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess."
+"correctGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateRemainingGuesses\" expression=\"#{numberGuess."
+"lastGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"lose\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"displayGuess\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"lose\" view-id=\"/lose.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:99
+#, no-c-format
+msgid "There are two things we notice immediately here:"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:104
+#, no-c-format
+msgid ""
+"The JSF/Seam navigation rules are <emphasis>much</emphasis> simpler. "
+"(However, this obscures the fact that the underlying Java code is more "
+"complex.)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:109
+#, no-c-format
+msgid ""
+"The jPDL makes the user interaction immediately understandable, without us "
+"needing to even look at the JSP or Java code."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:114
+#, no-c-format
+msgid ""
+"In addition, the stateful model is more <emphasis>constrained</emphasis>. "
+"For each logical state (each step in the page flow), there are a constrained "
+"set of possible transitions to other states. The stateless model is an "
+"<emphasis>ad hoc</emphasis> model which is suitable to relatively "
+"unconstrained, freeform navigation where the user decides where he/she wants "
+"to go next, not the application."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:117
+#, no-c-format
+msgid ""
+"The stateful/stateless navigation distinction is quite similar to the "
+"traditional view of modal/modeless interaction. Now, Seam applications are "
+"not usually modal in the simple sense of the word - indeed, avoiding "
+"application modal behavior is one of the main reasons for having "
+"conversations! However, Seam applications can be, and often are, modal at "
+"the level of a particular conversation. It is well-known that modal behavior "
+"is something to avoid as much as possible; it is very difficult to predict "
+"the order in which your users are going to want to do things! However, there "
+"is no doubt that the stateful model has its place."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:120
+#, no-c-format
+msgid ""
+"The biggest contrast between the two models is the back-button behavior."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:126
+#, no-c-format
+msgid "Seam and the back button"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:127
+#, no-c-format
+msgid ""
+"When JSF or Seam navigation rules are used, Seam lets the user freely "
+"navigate via the back, forward and refresh buttons. It is the responsibility "
+"of the application to ensure that conversational state remains internally "
+"consistent when this occurs. Experience with the combination of web "
+"application frameworks like Struts or WebWork - that do not support a "
+"conversational model - and stateless component models like EJB stateless "
+"session beans or the Spring framework has taught many developers that this "
+"is close to impossible to do! However, our experience is that in the context "
+"of Seam, where there is a well-defined conversational model, backed by "
+"stateful session beans, it is actually quite straightforward. Usually it is "
+"as simple as combining the use of <literal>no-conversation-view-id</literal> "
+"with null checks at the beginning of action listener methods. We consider "
+"support for freeform navigation to be almost always desirable."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:130
+#, no-c-format
+msgid ""
+"In this case, the <literal>no-conversation-view-id</literal> declaration "
+"goes in <literal>pages.xml</literal>. It tells Seam to redirect to a "
+"different page if a request originates from a page rendered during a "
+"conversation, and that conversation no longer exists:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:133
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/checkout.xhtml\" \n"
+"        no-conversation-view-id=\"/main.xhtml\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:134
+#, no-c-format
+msgid ""
+"On the other hand, in the stateful model, backbuttoning is interpreted as an "
+"undefined transition back to a previous state. Since the stateful model "
+"enforces a defined set of transitions from the current state, back buttoning "
+"is be default disallowed in the stateful model! Seam transparently detects "
+"the use of the back button, and blocks any attempt to perform an action from "
+"a previous, \"stale\" page, and simply redirects the user to the \"current\" "
+"page (and displays a faces message). Whether you consider this a feature or "
+"a limitation of the stateful model depends upon your point of view: as an "
+"application developer, it is a feature; as a user, it might be frustrating! "
+"You can enable backbutton navigation from a particular page node by setting "
+"<literal>back=\"enabled\"</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:137
+#, no-c-format
+msgid ""
+"&lt;page name=\"checkout\" \n"
+"        view-id=\"/checkout.xhtml\" \n"
+"        back=\"enabled\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"checkout\"/&gt;\n"
+"    &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:138
+#, no-c-format
+msgid ""
+"This allows backbuttoning <emphasis>from</emphasis> the <literal>checkout</"
+"literal> state to <emphasis>any previous state!</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:141
+#, no-c-format
+msgid ""
+"Of course, we still need to define what happens if a request originates from "
+"a page rendered during a pageflow, and the conversation with the pageflow no "
+"longer exists. In this case, the <literal>no-conversation-view-id</literal> "
+"declaration goes into the pageflow definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:144
+#, no-c-format
+msgid ""
+"&lt;page name=\"checkout\" \n"
+"        view-id=\"/checkout.xhtml\" \n"
+"        back=\"enabled\" \n"
+"        no-conversation-view-id=\"/main.xhtml\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"checkout\"/&gt;\n"
+"    &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:151
+#, no-c-format
+msgid "Using jPDL pageflows"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:153
+#, no-c-format
+msgid "Installing pageflows"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:154
+#, no-c-format
+msgid ""
+"We need to install the Seam jBPM-related components, and tell them where to "
+"find our pageflow definition. We can specify this Seam configuration in "
+"<literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:157
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:pageflow-definitions&gt;\n"
+"        &lt;value&gt;pageflow.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:pageflow-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:158
+#, no-c-format
+msgid ""
+"The first line installs jBPM, the second points to a jPDL-based pageflow "
+"definition."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:164
+#, no-c-format
+msgid "Starting pageflows"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:165
+#, no-c-format
+msgid ""
+"We \"start\" a jPDL-based pageflow by specifying the name of the process "
+"definition using a <literal>@Begin</literal>, <literal>@BeginTask</literal> "
+"or <literal>@StartTask</literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:168
+#, no-c-format
+msgid ""
+"@Begin(pageflow=\"numberguess\")\n"
+"public void begin() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:169
+#, no-c-format
+msgid "Alternatively we can start a pageflow using pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:172
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"        &lt;begin-conversation pageflow=\"numberguess\"/&gt;\n"
+"    &lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:173
+#, no-c-format
+msgid ""
+"If we are beginning the pageflow during the <literal>RENDER_RESPONSE</"
+"literal> phase&mdash;during a <literal>@Factory</literal> or "
+"<literal>@Create</literal> method, for example&mdash;we consider ourselves "
+"to be already at the page being rendered, and use a <literal>&lt;start-"
+"page&gt;</literal> node as the first node in the pageflow, as in the example "
+"above."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:176
+#, no-c-format
+msgid ""
+"But if the pageflow is begun as the result of an action listener invocation, "
+"the outcome of the action listener determines which is the first page to be "
+"rendered. In this case, we use a <literal>&lt;start-state&gt;</literal> as "
+"the first node in the pageflow, and declare a transition for each possible "
+"outcome:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:179
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"viewEditDocument\"&gt;\n"
+"\n"
+"    &lt;start-state name=\"start\"&gt;\n"
+"        &lt;transition name=\"documentFound\" to=\"displayDocument\"/&gt;\n"
+"        &lt;transition name=\"documentNotFound\" to=\"notFound\"/&gt;\n"
+"    &lt;/start-state&gt;\n"
+"    \n"
+"    &lt;page name=\"displayDocument\" view-id=\"/document.jsp\"&gt;\n"
+"        &lt;transition name=\"edit\" to=\"editDocument\"/&gt;\n"
+"        &lt;transition name=\"done\" to=\"main\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"    \n"
+"    ...\n"
+"    \n"
+"    &lt;page name=\"notFound\" view-id=\"/404.jsp\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"    &lt;/page&gt;\n"
+"    \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:183
+#, no-c-format
+msgid "Page nodes and transitions"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:184
+#, no-c-format
+msgid ""
+"Each <literal>&lt;page&gt;</literal> node represents a state where the "
+"system is waiting for user input:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:187
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"        &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:188
+#, no-c-format
+msgid ""
+"The <literal>view-id</literal> is the JSF view id. The <literal>&lt;redirect/"
+"&gt;</literal> element has the same effect as <literal>&lt;redirect/&gt;</"
+"literal> in a JSF navigation rule: namely, a post-then-redirect behavior, to "
+"overcome problems with the browser's refresh button. (Note that Seam "
+"propagates conversation contexts over these browser redirects. So there is "
+"no need for a Ruby on Rails style \"flash\" construct in Seam!)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:191
+#, no-c-format
+msgid ""
+"The transition name is the name of a JSF outcome triggered by clicking a "
+"command button or command link in <literal>numberGuess.jsp</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:194
+#, no-c-format
+msgid ""
+"&lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"guess\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:195
+#, no-c-format
+msgid ""
+"When the transition is triggered by clicking this button, jBPM will activate "
+"the transition action by calling the <literal>guess()</literal> method of "
+"the <literal>numberGuess</literal> component. Notice that the syntax used "
+"for specifying actions in the jPDL is just a familiar JSF EL expression, and "
+"that the transition action handler is just a method of a Seam component in "
+"the current Seam contexts. So we have exactly the same event model for jBPM "
+"events that we already have for JSF events! (The <emphasis>One Kind of "
+"Stuff</emphasis> principle.)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:198
+#, no-c-format
+msgid ""
+"In the case of a null outcome (for example, a command button with no "
+"<literal>action</literal> defined), Seam will signal the transition with no "
+"name if one exists, or else simply redisplay the page if all transitions "
+"have names. So we could slightly simplify our example pageflow and this "
+"button:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:201
+#, no-c-format
+msgid "&lt;h:commandButton type=\"submit\" value=\"Guess\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:202
+#, no-c-format
+msgid "Would fire the following un-named transition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:205
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"evaluateGuess\"&gt;\n"
+"        &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:206
+#, no-c-format
+msgid ""
+"It is even possible to have the button call an action method, in which case "
+"the action outcome will determine the transition to be taken:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:209
+#, no-c-format
+msgid ""
+"&lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"#{numberGuess."
+"guess}\"/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:210
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;transition name=\"correctGuess\" to=\"win\"/&gt;\n"
+"    &lt;transition name=\"incorrectGuess\" to=\"evaluateGuess\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:211
+#, no-c-format
+msgid ""
+"However, this is considered an inferior style, since it moves responsibility "
+"for controlling the flow out of the pageflow definition and back into the "
+"other components. It is much better to centralize this concern in the "
+"pageflow itself."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:217
+#, no-c-format
+msgid "Controlling the flow"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:218
+#, no-c-format
+msgid ""
+"Usually, we don't need the more powerful features of jPDL when defining "
+"pageflows. We do need the <literal>&lt;decision&gt;</literal> node, however:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:221
+#, no-c-format
+msgid ""
+"&lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess.correctGuess}"
+"\"&gt;\n"
+"    &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"    &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"&lt;/decision&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:222
+#, no-c-format
+msgid ""
+"A decision is made by evaluating a JSF EL expression in the Seam contexts."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:228
+#, no-c-format
+msgid "Ending the flow"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:229
+#, no-c-format
+msgid ""
+"We end the conversation using <literal>&lt;end-conversation&gt;</literal> or "
+"<literal>@End</literal>. (In fact, for readability, use of <emphasis>both</"
+"emphasis> is encouraged.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:232
+#, no-c-format
+msgid ""
+"&lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;end-conversation/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:233
+#, no-c-format
+msgid ""
+"Optionally, we can end a task, specify a jBPM <literal>transition</literal> "
+"name. In this case, Seam will signal the end of the current task in the "
+"overarching business process."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:236
+#, no-c-format
+msgid ""
+"&lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;end-task transition=\"success\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:242
+#, no-c-format
+msgid "Business process management in Seam"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:243
+#, no-c-format
+msgid ""
+"A business process is a well-defined set of tasks that must be performed by "
+"users or software systems according to well-defined rules about "
+"<emphasis>who</emphasis> can perform a task, and <emphasis>when</emphasis> "
+"it should be performed. Seam's jBPM integration makes it easy to display "
+"lists of tasks to users and let them manage their tasks. Seam also lets the "
+"application store state associated with the business process in the "
+"<literal>BUSINESS_PROCESS</literal> context, and have that state made "
+"persistent via jBPM variables."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:246
+#, no-c-format
+msgid ""
+"A simple business process definition looks much the same as a page flow "
+"definition (<emphasis>One Kind of Stuff</emphasis>), except that instead of "
+"<literal>&lt;page&gt;</literal> nodes, we have <literal>&lt;task-node&gt;</"
+"literal> nodes. In a long-running business process, the wait states are "
+"where the system is waiting for some user to log in and perform a task."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:249
+#, no-c-format
+msgid ""
+"&lt;process-definition name=\"todo\"&gt;\n"
+"   \n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"todo\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;task-node name=\"todo\"&gt;\n"
+"      &lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"         &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"      &lt;/task&gt;\n"
+"      &lt;transition to=\"done\"/&gt;\n"
+"   &lt;/task-node&gt;\n"
+"   \n"
+"   &lt;end-state name=\"done\"/&gt;\n"
+"   \n"
+"&lt;/process-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:260
+#, no-c-format
+msgid ""
+"It is perfectly possible that we might have both jPDL business process "
+"definitions and jPDL pageflow definitions in the same project. If so, the "
+"relationship between the two is that a single <literal>&lt;task&gt;</"
+"literal> in a business process corresponds to a whole pageflow <literal>&lt;"
+"pageflow-definition&gt;</literal>"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:265
+#, no-c-format
+msgid "Using jPDL business process definitions"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:267
+#, no-c-format
+msgid "Installing process definitions"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:268
+#, no-c-format
+msgid ""
+"We need to install jBPM, and tell it where to find the business process "
+"definitions:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:271
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;todo.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:275
+#, no-c-format
+msgid "Initializing actor ids"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:276
+#, no-c-format
+msgid ""
+"We always need to know what user is currently logged in. jBPM \"knows\" "
+"users by their <emphasis>actor id</emphasis> and <emphasis>group actor ids</"
+"emphasis>. We specify the current actor ids using the built in Seam "
+"component named <literal>actor</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:279
+#, no-c-format
+msgid ""
+"@In Actor actor;\n"
+"\n"
+"public String login() {\n"
+"    ...\n"
+"    actor.setId( user.getUserName() );\n"
+"    actor.getGroupActorIds().addAll( user.getGroupNames() );\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:283
+#, no-c-format
+msgid "Initiating a business process"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:284
+#, no-c-format
+msgid ""
+"To initiate a business process instance, we use the <literal>@CreateProcess</"
+"literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:287
+#, no-c-format
+msgid ""
+"@CreateProcess(definition=\"todo\")\n"
+"public void createTodo() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:288
+#, no-c-format
+msgid "Alternatively we can initiate a business process using pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:291
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;create-process definition=\"todo\" /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:295
+#, no-c-format
+msgid "Task assignment"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:296
+#, no-c-format
+msgid ""
+"When a process starts, task instances are created. These must be assigned to "
+"users or user groups. We can either hardcode our actor ids, or delegate to a "
+"Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:299
+#, no-c-format
+msgid ""
+"&lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"    &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"&lt;/task&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:300
+#, no-c-format
+msgid ""
+"In this case, we have simply assigned the task to the current user. We can "
+"also assign tasks to a pool:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:303
+#, no-c-format
+msgid ""
+"&lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"    &lt;assignment pooled-actors=\"employees\"/&gt;\n"
+"&lt;/task&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:307
+#, no-c-format
+msgid "Task lists"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:308
+#, no-c-format
+msgid ""
+"Several built-in Seam components make it easy to display task lists. The "
+"<literal>pooledTaskInstanceList</literal> is a list of pooled tasks that "
+"users may assign to themselves:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:311
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{pooledTaskInstanceList}\" var=\"task\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Description&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{task.description}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link action=\"#{pooledTask.assignToCurrentActor}\" value="
+"\"Assign\" taskInstance=\"#{task}\"/&gt;\n"
+"    &lt;/h:column&gt;            \n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:312
+#, no-c-format
+msgid ""
+"Note that instead of <literal>&lt;s:link&gt;</literal> we could have used a "
+"plain JSF <literal>&lt;h:commandLink&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:315
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"#{pooledTask.assignToCurrentActor}\"&gt; \n"
+"    &lt;f:param name=\"taskId\" value=\"#{task.id}\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:316
+#, no-c-format
+msgid ""
+"The <literal>pooledTask</literal> component is a built-in component that "
+"simply assigns the task to the current user."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:319
+#, no-c-format
+msgid ""
+"The <literal>taskInstanceListByType</literal> component includes tasks of a "
+"particular type that are assigned to the current user:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:322
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{taskInstanceListByType['todo']}\" var=\"task"
+"\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Description&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{task.description}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link action=\"#{todoList.start}\" value=\"Start Work\" "
+"taskInstance=\"#{task}\"/&gt;\n"
+"    &lt;/h:column&gt;            \n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:326
+#, no-c-format
+msgid "Performing a task"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:327
+#, no-c-format
+msgid ""
+"To begin work on a task, we use either <literal>@StartTask</literal> or "
+"<literal>@BeginTask</literal> on the listener method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:330
+#, no-c-format
+msgid ""
+"@StartTask\n"
+"public String start() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:331
+#, no-c-format
+msgid "Alternatively we can begin work on a task using pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:334
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;start-task /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:335
+#, no-c-format
+msgid ""
+"These annotations begin a special kind of conversation that has significance "
+"in terms of the overarching business process. Work done by this conversation "
+"has access to state held in the business process context."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:338
+#, no-c-format
+msgid ""
+"If we end the conversation using <literal>@EndTask</literal>, Seam will "
+"signal the completion of the task:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:341
+#, no-c-format
+msgid ""
+"@EndTask(transition=\"completed\")\n"
+"public String completed() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:342
+#, no-c-format
+msgid "Alternatively we can use pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:345
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;end-task transition=\"completed\" /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:346
+#, no-c-format
+msgid ""
+"(Alternatively, we could have used <literal>&lt;end-conversation&gt;</"
+"literal> as shown above.)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:349
+#, no-c-format
+msgid ""
+"At this point, jBPM takes over and continues executing the business process "
+"definition. (In more complex processes, several tasks might need to be "
+"completed before process execution can resume.)"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Jms.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Jms.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Jms.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,477 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Jms.xml:10
+#, no-c-format
+msgid "Asynchronicity and messaging"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:11
+#, no-c-format
+msgid ""
+"Seam makes it very easy to perform work asynchronously from a web request. "
+"When most people think of asynchronicity in Java EE, they think of using "
+"JMS. This is certainly one way to approach the problem in Seam, and is the "
+"right way when you have strict and well-defined quality of service "
+"requirements. Seam makes it easy to send and recieve JMS messages using Seam "
+"components."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:14
+#, no-c-format
+msgid ""
+"But for many usecases, JMS is overkill. Seam layers a simple asynchronous "
+"method and event facility over the EJB 3.0 timer service."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:17
+#, no-c-format
+msgid "Asynchronicity"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:18
+#, no-c-format
+msgid ""
+"Asynchronous events and method calls have the same quality of service "
+"expectations as the container's EJB timer service. If you're not familiar "
+"with the Timer service, don't worry, you don't need to interact with it "
+"directly if you want to use asynchronous methods in Seam."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:21
+#, no-c-format
+msgid ""
+"To use asynchronous methods and events, you need to add the following line "
+"to <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:24
+#, no-c-format
+msgid "&lt;core:dispatcher/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:25
+#, no-c-format
+msgid ""
+"Note that this functionality is not available in environments which do not "
+"support EJB 3.0."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:28
+#, no-c-format
+msgid "Asynchronous methods"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:29
+#, no-c-format
+msgid ""
+"In simplest form, an asynchronous call just lets a method call be processed "
+"asynchronously (in a different thread) from the caller. We usually use an "
+"asynchronous call when we want to return an immediate response to the "
+"client, and let some expensive work be processed in the background. This "
+"pattern works very well in applications which use AJAX, where the client can "
+"automatically poll the server for the result of the work."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:32
+#, no-c-format
+msgid ""
+"For EJB components, we annotate the local interface to specify that a method "
+"is processed asynchronously."
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:35
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public void processPayment(Payment payment);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:36
+#, no-c-format
+msgid ""
+"(For JavaBean components we can annotate the component implementation class "
+"if we like.)"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:39
+#, no-c-format
+msgid "The use of asynchronicity is transparent to the bean class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:42
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"paymentHandler\")\n"
+"public class PaymentHandlerBean implements PaymentHandler\n"
+"{\n"
+"    public void processPayment(Payment payment)\n"
+"    {\n"
+"        //do some work!\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:43
+#, no-c-format
+msgid "And also transparent to the client:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:46
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String pay()\n"
+"    {\n"
+"        paymentHandler.processPayment( new Payment(bill) );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:47
+#, no-c-format
+msgid ""
+"The asynchronous method is processed in a completely new event context and "
+"does not have access to the session or conversation context state of the "
+"caller. However, the business process context <emphasis>is</emphasis> "
+"propagated."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:50
+#, no-c-format
+msgid ""
+"Asynchronous method calls may be scheduled for later execution using the "
+"<literal>@Duration</literal>, <literal>@Expiration</literal> and "
+"<literal>@IntervalDuration</literal> annotations."
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:53
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public void processScheduledPayment(Payment payment, @Expiration Date "
+"date);\n"
+"\n"
+"    @Asynchronous\n"
+"    public void processRecurringPayment(Payment payment, @Expiration Date "
+"date, \n"
+"        @IntervalDuration Long interval)'\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:54
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String schedulePayment()\n"
+"    {\n"
+"        paymentHandler.processScheduledPayment( new Payment(bill), bill."
+"getDueDate() );\n"
+"        return \"success\";\n"
+"    }\n"
+"\n"
+"    public String scheduleRecurringPayment()\n"
+"    {\n"
+"        paymentHandler.processRecurringPayment( new Payment(bill), bill."
+"getDueDate(), ONE_MONTH );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:55
+#, no-c-format
+msgid ""
+"Both client and server may access the <literal>Timer</literal> object "
+"associated with the invocation."
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:58
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public Timer processScheduledPayment(Payment payment, @Expiration Date "
+"date);\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:59
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"paymentHandler\")\n"
+"public class PaymentHandlerBean implements PaymentHandler\n"
+"{\n"
+"    @In Timer timer;\n"
+"    \n"
+"    public Timer processScheduledPayment(Payment payment, @Expiration Date "
+"date)\n"
+"    {\n"
+"        //do some work!\n"
+"        \n"
+"        return timer; //note that return value is completely ignored\n"
+"    }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:60
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String schedulePayment()\n"
+"    {\n"
+"        Timer timer = paymentHandler.processScheduledPayment( new Payment"
+"(bill), bill.getDueDate() );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:61
+#, no-c-format
+msgid "Asynchronous methods cannot return any other value to the caller."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:64
+#, no-c-format
+msgid "Asynchronous events"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:65
+#, no-c-format
+msgid ""
+"Component-driven events may also be asynchronous. To raise an event for "
+"asynchronous processing, simply call the <literal>raiseAsynchronousEvent()</"
+"literal> methods of the <literal>Events</literal> class. To schedule a timed "
+"event, call one of the <literal>raiseTimedEvent()</literal> methods. "
+"Components may observe asynchronous events in the usual way, but remember "
+"that only the business process context is propagated to the asynchronous "
+"thread."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:68
+#, no-c-format
+msgid "Messaging in Seam"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:69
+#, no-c-format
+msgid ""
+"Seam makes it easy to send and receive JMS messages to and from Seam "
+"components."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:72
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:73
+#, no-c-format
+msgid ""
+"To configure Seam's infrastructure for sending JMS messages, you need to "
+"tell Seam about any topics and queues you want to send messages to, and also "
+"tell Seam where to find the <literal>QueueConnectionFactory</literal> and/or "
+"<literal>TopicConnectionFactory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:76
+#, no-c-format
+msgid ""
+"Seam defaults to using <literal>UIL2ConnectionFactory</literal> which is the "
+"usual connection factory for use with JBossMQ. If you are using some other "
+"JMS provider, you need to set one or both of <literal>queueConnection."
+"queueConnectionFactoryJndiName</literal> and <literal>topicConnection."
+"topicConnectionFactoryJndiName</literal> in <literal>seam.properties</"
+"literal>, <literal>web.xml</literal> or <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:79
+#, no-c-format
+msgid ""
+"You also need to list topics and queues in <literal>components.xml</literal> "
+"to install Seam managed <literal>TopicPublisher</literal>s and "
+"<literal>QueueSender</literal>s:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:82
+#, no-c-format
+msgid ""
+"&lt;jms:managed-topic-publisher name=\"stockTickerPublisher\" auto-create="
+"\"true\" \n"
+"    topic-jndi-name=\"topic/stockTickerTopic\"/&gt;\n"
+"\n"
+"&lt;jms:managed-queue-sender name=\"paymentQueueSender\" auto-create=\"true"
+"\" \n"
+"    queue-jndi-name=\"queue/paymentQueue\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:83
+#, no-c-format
+msgid "Sending messages"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:84
+#, no-c-format
+msgid ""
+"Now, you can inject a JMS <literal>TopicPublisher</literal> and "
+"<literal>TopicSession</literal> into any component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:87
+#, no-c-format
+msgid ""
+"@In \n"
+"private TopicPublisher stockTickerPublisher;   \n"
+"@In \n"
+"private TopicSession topicSession;\n"
+"\n"
+"public void publish(StockPrice price) {\n"
+"      try\n"
+"      {\n"
+"         topicPublisher.publish( topicSession.createObjectMessage(price) );\n"
+"      } \n"
+"      catch (Exception ex)\n"
+"      {\n"
+"         throw new RuntimeException(ex);\n"
+"      } \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:88
+#, no-c-format
+msgid "Or, for working with a queue:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:91
+#, no-c-format
+msgid ""
+"@In\n"
+"private QueueSender paymentQueueSender;   \n"
+"@In\n"
+"private QueueSession queueSession;\n"
+"\n"
+"public void publish(Payment payment) {\n"
+"      try\n"
+"      {\n"
+"         paymentQueueSender.send( queueSession.createObjectMessage"
+"(payment) );\n"
+"      } \n"
+"      catch (Exception ex)\n"
+"      {\n"
+"         throw new RuntimeException(ex);\n"
+"      } \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:92
+#, no-c-format
+msgid "Receiving messages using a message-driven bean"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:93
+#, no-c-format
+msgid ""
+"You can process messages using any EJB3 message driven bean. Message-driven "
+"beans may even be Seam components, in which case it is possible to inject "
+"other event and application scoped Seam components."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:96
+#, no-c-format
+msgid "Receiving messages in the client"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:97
+#, no-c-format
+msgid ""
+"Seam Remoting lets you subscribe to a JMS topic from client-side JavaScript. "
+"This is described in the next chapter."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Mail.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Mail.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Mail.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,985 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Mail.xml:10
+#, no-c-format
+msgid "Email"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:11
+#, no-c-format
+msgid ""
+"Seam now includes an optional components for templating and sending emails."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:14
+#, no-c-format
+msgid ""
+"Email support is provided by <literal>jboss-seam-mail.jar</literal>. This "
+"JAR contains the mail JSF controls, which are used to construct emails, and "
+"the <literal>mailSession</literal> manager component."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:17
+#, no-c-format
+msgid ""
+"The examples/mail project contains an example of the email support in "
+"action. It demonstrates proper packaging, and it contains a number of "
+"example that demonstrate the key features currently supported."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:21
+#, no-c-format
+msgid "Creating a message"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:22
+#, no-c-format
+msgid ""
+"You don't need to learn a whole new templating language to use Seam "
+"Mail&mdash;an email is just facelet!"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:25
+#, no-c-format
+msgid ""
+"&lt;m:message xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"    xmlns:m=\"http://jboss.com/products/seam/mail\"\n"
+"    xmlns:h=\"http://java.sun.com/jsf/html\"&gt;\n"
+"  \n"
+"    &lt;m:from name=\"Peter\" address=\"peter at example.com\" /&gt;\n"
+"    &lt;m:to name=\"#{person.firstname} #{person.lastname}\"&gt;#{person."
+"address}&lt;/m:to&gt;\n"
+"    &lt;m:subject&gt;Try out Seam!&lt;/m:subject&gt;\n"
+"    \n"
+"    &lt;m:body&gt;\n"
+"        &lt;p&gt;&lt;h:outputText value=\"Dear #{person.firstname}\" /&gt;,"
+"&lt;/p&gt;\n"
+"        &lt;p&gt;You can try out Seam by visiting \n"
+"        &lt;a href=\"http://labs.jboss.com/jbossseam\"&gt;http://labs.jboss."
+"com/jbossseam&lt;/a&gt;.&lt;/p&gt;\n"
+"        &lt;p&gt;Regards,&lt;/p&gt;\n"
+"        &lt;p&gt;Peter&lt;/p&gt;\n"
+"    &lt;/m:body&gt;\n"
+"    \n"
+"&lt;/m:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:26
+#, no-c-format
+msgid ""
+"The <literal>&lt;m:message&gt;</literal> tag wraps the whole message, and "
+"tells Seam to start rendering an email. Inside the <literal>&lt;m:message&gt;"
+"</literal> tag we use an <literal>&lt;m:from&gt;</literal> tag to set who "
+"the message is from, a <literal>&lt;m:to&gt;</literal> tag to specify a "
+"sender (notice how we use EL as we would in a normal facelet), and a "
+"<literal>&lt;m:subject&gt;</literal> tag."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:29
+#, no-c-format
+msgid ""
+"The <literal>&lt;m:body&gt;</literal> tag wraps the body of the email. You "
+"can use regular HTML tags inside the body as well as JSF components."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:32
+#, no-c-format
+msgid ""
+"So, now you have your email template, how do you go about sending it? Well, "
+"at the end of rendering the <literal>m:message</literal> the "
+"<literal>mailSession</literal> is called to send the email, so all you have "
+"to do is ask Seam to render the view:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:35
+#, no-c-format
+msgid ""
+"@In(create=true)\n"
+"private Renderer renderer;\n"
+"   \n"
+"public void send() {\n"
+"    try {\n"
+"       renderer.render(\"/simple.xhtml\");\n"
+"       facesMessages.add(\"Email sent successfully\");\n"
+"   } \n"
+"   catch (Exception e) {\n"
+"       facesMessages.add(\"Email sending failed: \" + e.getMessage());\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:36
+#, no-c-format
+msgid ""
+"If, for example, you entered an invalid email address, then an exception "
+"would be thrown, which is caught and then displayed to the user."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:40
+#, no-c-format
+msgid "Attachments"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:41
+#, no-c-format
+msgid ""
+"Seam makes it easy to attach files to an email. It supports most of the "
+"standard java types used when working with files."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:44
+#, no-c-format
+msgid "If you wanted to email the <literal>jboss-seam-mail.jar</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:47
+#, no-c-format
+msgid "&lt;m:attachment value=\"/WEB-INF/lib/jboss-seam-mail.jar\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:48
+#, no-c-format
+msgid ""
+"Seam will load the file from the classpath, and attach it to the email. By "
+"default it would be attached as <literal>jboss-seam-mail.jar</literal>; if "
+"you wanted it to have another name you would just add the <literal>fileName</"
+"literal> attribute:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:51
+#, no-c-format
+msgid ""
+"&lt;m:attachment value=\"/WEB-INF/lib/jboss-seam-mail.jar\" fileName=\"this-"
+"is-so-cool.jar\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:52
+#, no-c-format
+msgid ""
+"You could also attach a <literal>java.io.File</literal>, a <literal>java.net."
+"URL</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:55
+#, no-c-format
+msgid "&lt;m:attachment value=\"#{numbers}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:56
+#, no-c-format
+msgid ""
+"Or a <literal>byte[]</literal> or a <literal>java.io.InputStream</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:59
+#, no-c-format
+msgid ""
+"&lt;m:attachment value=\"#{person.photo}\" contentType=\"image/png\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:60
+#, no-c-format
+msgid ""
+"You'll notice that for a <literal>byte[]</literal> and a <literal>java.io."
+"InputStream</literal> you need to specify the MIME type of the attachment "
+"(as that information is not carried as part of the file)."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:63
+#, no-c-format
+msgid ""
+"And it gets even better, you can attach a Seam generated PDF, or any "
+"standard JSF view, just by wrapping a <literal>&lt;m:attachment&gt;</"
+"literal> around the normal tags you would use:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:66
+#, no-c-format
+msgid ""
+"&lt;m:attachment fileName=\"tiny.pdf\"&gt;\n"
+"    &lt;p:"
+"document&gt;                                                      \n"
+"        A very tiny "
+"PDF                                                                                                \n"
+"    &lt;/p:document&gt;\n"
+"&lt;/m:attachment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:67
+#, no-c-format
+msgid ""
+"If you had a set of files you wanted to attach (for example a set of "
+"pictures loaded from a database) you can just use a <literal>&lt;ui:"
+"repeat&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:70
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{people}\" var=\"person\"&gt;\n"
+"    &lt;m:attachment value=\"#{person.photo}\" contentType=\"image/jpeg\"\n"
+"    fileName=\"#{person.firstname}_#{person.lastname}.jpg\"/&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:74
+#, no-c-format
+msgid "HTML/Text alternative part"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:75
+#, no-c-format
+msgid ""
+"Whilst most mail readers nowadays support HTML, some don't, so you can add a "
+"plain text alternative to your email body:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:78
+#, no-c-format
+msgid ""
+"&lt;m:body&gt;\n"
+"    &lt;f:facet name=\"alternative\"&gt;Sorry, your email reader can't show "
+"our fancy email, \n"
+"please go to http://labs.jboss.com/jbossseam to explore Seam.&lt;/f:"
+"facet&gt;\n"
+"&lt;/m:body&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:82
+#, no-c-format
+msgid "Multiple recipients"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:83
+#, no-c-format
+msgid ""
+"Often you'll want to send an email to a group of recipients (for example "
+"your users). All of the recipient mail tags can be placed inside a "
+"<literal>&lt;ui:repeat&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:86
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{allUsers} var=\"user\"&gt;\n"
+"    &lt;m:to name=\"#{user.firstname} #{user.lastname}\" address=\"#{user."
+"emailAddress}\" /&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:90
+#, no-c-format
+msgid "Multiple messages"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:91
+#, no-c-format
+msgid ""
+"Sometimes, however, you need to send a slightly different message to each "
+"recipient (e.g. a password reset). The best way to do this is to place the "
+"whole message inside a <literal>&lt;ui:repeat&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:94
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{people}\" var=\"p\"&gt;\n"
+"    &lt;m:message&gt;\n"
+"        &lt;m:from name=\"#{person.firstname} #{person.lastname}\"&gt;#"
+"{person.address}&lt;/m:from&gt;\n"
+"        &lt;m:to name=\"#{p.firstname}\"&gt;#{p.address}&lt;/m:to&gt;\n"
+"            ...\n"
+"    &lt;/m:message&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:98
+#, no-c-format
+msgid "Templating"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:99
+#, no-c-format
+msgid ""
+"The mail templating example shows that facelets templating Just Works with "
+"the Seam mail tags."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:102
+#, no-c-format
+msgid "Our <literal>template.xhtml</literal> contains:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:105
+#, no-c-format
+msgid ""
+"&lt;m:message&gt;\n"
+"   &lt;m:from name=\"Seam\" address=\"do-not-reply at jboss.com\" /&gt;\n"
+"   &lt;m:to name=\"#{person.firstname} #{person.lastname}\"&gt;#{person."
+"address}&lt;/m:to&gt;\n"
+"   &lt;m:subject&gt;#{subject}&lt;/m:subject&gt;\n"
+"   &lt;m:body&gt;\n"
+"       &lt;html&gt;\n"
+"           &lt;body&gt;\n"
+"               &lt;ui:insert name=\"body\"&gt;This is the default body, "
+"specified by the template.\n"
+"               &lt;/ui:insert&gt;\n"
+"           &lt;/body&gt;\n"
+"       &lt;/html&gt;\n"
+"   &lt;/m:body&gt;\n"
+"&lt;/m:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:106
+#, no-c-format
+msgid "Our <literal>templating.xhtml</literal> contains:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:109
+#, no-c-format
+msgid ""
+"&lt;ui:param name=\"subject\" value=\"Templating with Seam Mail\"/&gt;\n"
+"&lt;ui:define name=\"body\"&gt;\n"
+"    &lt;p&gt;This example demonstrates that you can easily use &lt;i&gt;"
+"facelets templating&lt;/i&gt; in email!&lt;/p&gt;\n"
+"&lt;/ui:define&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:113
+#, no-c-format
+msgid "Other Headers"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:114
+#, no-c-format
+msgid ""
+"Sometimes you'll want to add other headers to your email. Seam provides "
+"support for some (see <xref linkend=\"Email-Tags\"/>). For example, we can "
+"set the importance of the email, and ask for a read receipt:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:117
+#, no-c-format
+msgid ""
+"&lt;m:message xmlns:m=\"http://jboss.com/products/seam/mail\"\n"
+"           importance=\"low\"\n"
+"           requestReadReceipt=\"true\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:118
+#, no-c-format
+msgid ""
+"Otherise you can add any header to the message using the <literal>&lt;m:"
+"header&gt;</literal> tag:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:121
+#, no-c-format
+msgid "&lt;m:header name=\"X-Sent-From\" value=\"JBoss Seam\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:127
+#, no-c-format
+msgid "Receiving emails"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:128
+#, no-c-format
+msgid ""
+"If you are using EJB then you can use a MDB (Message Driven Bean) to receive "
+"email. Seam comes with an improved version of <literal>mail-ra.rar</literal> "
+"as distributed in JBoss AS; until the improvements make there way into a "
+"released version of JBoss AS, replacing the default <literal>rar</literal> "
+"with the one distributed with Seam is recommended."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:131
+#, no-c-format
+msgid "You can configure it like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:134
+#, no-c-format
+msgid ""
+"@MessageDriven(activationConfig={\n"
+"         @ActivationConfigProperty(propertyName=\"mailServer\", "
+"propertyValue=\"localhost\"),\n"
+"         @ActivationConfigProperty(propertyName=\"mailFolder\", "
+"propertyValue=\"INBOX\"),\n"
+"         @ActivationConfigProperty(propertyName=\"storeProtocol\", "
+"propertyValue=\"pop3\"),\n"
+"         @ActivationConfigProperty(propertyName=\"userName\", propertyValue="
+"\"seam\"),\n"
+"         @ActivationConfigProperty(propertyName=\"password\", propertyValue="
+"\"seam\")\n"
+"})\n"
+"@ResourceAdapter(\"mail-ra.rar\")\n"
+"@Name(\"mailListener\")\n"
+"public class MailListenerMDB implements MailListener {\n"
+"\n"
+"   @In(create=true)\n"
+"   private OrderProcessor orderProcessor;\n"
+"\n"
+"   public void onMessage(Message message) {\n"
+"      // Process the message\n"
+"      orderProcessor.process(message.getSubject());\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:135
+#, no-c-format
+msgid ""
+"Each message received will cause <literal>onMessage(Message message)</"
+"literal> to be called. Most seam annotations will work inside a MDB but you "
+"musn't access the persistence context."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:138
+#, no-c-format
+msgid ""
+"You can find more information on the default <literal>mail-ra.rar</literal> "
+"at <ulink url=\"http://wiki.jboss.org/wiki/Wiki.jsp?page=InboundJavaMail"
+"\">http://wiki.jboss.org/wiki/Wiki.jsp?page=InboundJavaMail</ulink>. The "
+"version distributed with Seam also includes a <literal>debug</literal> "
+"property to enable JavaMail debugging, a <literal>flush</literal> property "
+"(by default true) to disable flushing a <literal>POP3</literal> mailbox "
+"after successfullying delivering a message to your MDB and a <literal>port</"
+"literal> property to override the default TCP port. Beware that the api for "
+"this may be altered as changes make there way into JBoss AS."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:141
+#, no-c-format
+msgid ""
+"If you aren't using JBoss AS you can still use <literal>mail-ra.rar</"
+"literal> (included with Seam in the mail directory), or you may find your "
+"application server includes a similar adapter."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:147
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:148
+#, no-c-format
+msgid ""
+"To include Email support in your application, include <literal>jboss-seam-"
+"mail.jar</literal> in your WEB-INF/lib directory. If you are using JBoss AS "
+"there is no further configuration needed to use Seam's email support. "
+"Otherwise you need to make sure you have the JavaMail API, an implementation "
+"of the JavaMail API present (the API and impl used in JBoss AS are "
+"distributed with seam as <literal>lib/mail.jar</literal>), and a copy of the "
+"Java Activation Framework (distributed with seam as <literal>lib/activation."
+"jar</literal>."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:151
+#, no-c-format
+msgid ""
+"The Seam Email module requires the use of Facelets as the view technology. "
+"Future versions of the library may also support the use of JSP. "
+"Additionally, it requires the use of the seam-ui package."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:154
+#, no-c-format
+msgid ""
+"The <literal>mailSession</literal> component uses JavaMail to talk to a "
+"'real' SMTP server."
+msgstr ""
+
+#. Tag: literal
+#: Mail.xml:158
+#, no-c-format
+msgid "mailSession"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:159
+#, no-c-format
+msgid ""
+"A JavaMail Session may be available via a JNDI lookup if you are working in "
+"an JEE environment or you can use a Seam configured Session."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:162
+#, no-c-format
+msgid ""
+"The mailSession component's properties are described in more detail in <xref "
+"linkend=\"Built_in_Seam_components-Mail_related_components\"/>."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:166
+#, no-c-format
+msgid "JNDI lookup in JBoss AS"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:167
+#, no-c-format
+msgid ""
+"The JBossAS <literal>deploy/mail-service.xml</literal> configures a JavaMail "
+"session binding into JNDI. The default service configuration will need "
+"altering for your network. <ulink url=\"http://wiki.jboss.org/wiki/Wiki.jsp?"
+"page=JavaMail\">http://wiki.jboss.org/wiki/Wiki.jsp?page=JavaMail</ulink> "
+"describes the service in more detail."
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:170
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"        xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"        xmlns:mail=\"http://jboss.com/products/seam/mail\"&gt;\n"
+"        \n"
+"    &lt;mail:mail-session session-jndi-name=\"java:/Mail\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:171
+#, no-c-format
+msgid ""
+"Here we tell Seam to get the mail session bound to <literal>java:/Mail</"
+"literal> from JNDI."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:177
+#, no-c-format
+msgid "Seam configured Session"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:178
+#, no-c-format
+msgid ""
+"A mail session can be configured via <literal>components.xml</literal>. Here "
+"we tell Seam to use <literal>smtp.example.com</literal> as the smtp server,"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:181
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"        xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"        xmlns:mail=\"http://jboss.com/products/seam/mail\"&gt;\n"
+"        \n"
+"    &lt;mail:mail-session host=\"smtp.example.com\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:189
+#, no-c-format
+msgid "Tags"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:190
+#, no-c-format
+msgid ""
+"Emails are generated using tags in the <literal>http://jboss.com/products/"
+"seam/mail</literal> namespace. Documents should always have the "
+"<literal>message</literal> tag at the root of the message. The message tag "
+"prepares Seam to generate an email."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:193
+#, no-c-format
+msgid ""
+"The standard templating tags of facelets can be used as normal. Inside the "
+"body you can use any JSF tag which doesn't require access to external "
+"resources (stylesheets, javascript)."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:198
+#, no-c-format
+msgid "&lt;m:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:200
+#, no-c-format
+msgid "Root tag of a mail message"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:205
+#, no-c-format
+msgid ""
+"<literal>importance</literal> &mdash; low, normal or high. By default "
+"normal, this sets the importance of the mail message."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:210
+#, no-c-format
+msgid ""
+"<literal>precedence</literal> &mdash; sets the precedence of the message (e."
+"g. bulk)."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:215
+#, no-c-format
+msgid ""
+"<literal>requestReadReceipt</literal> &mdash; by default false, if set, a "
+"read receipt will be request will be added, with the read receipt being sent "
+"to the <literal>From:</literal> address."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:220
+#, no-c-format
+msgid ""
+"<literal>urlBase</literal> &mdash; If set, the value is prepended to the "
+"<literal>requestContextPath</literal> allowing you to use components such as "
+"<literal>&lt;h:graphicImage&gt;</literal> in your emails."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:228
+#, no-c-format
+msgid "&lt;m:from&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:230
+#, no-c-format
+msgid ""
+"Set's the From: address for the email. You can only have one of these per "
+"email."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:235
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the name the email should come from."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:240 Mail.xml:255
+#, no-c-format
+msgid ""
+"<literal>address</literal> &mdash; the email address the email should come "
+"from."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:248
+#, no-c-format
+msgid "&lt;m:replyTo&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:250
+#, no-c-format
+msgid ""
+"Set's the Reply-to: address for the email. You can only have one of these "
+"per email."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:263
+#, no-c-format
+msgid "&lt;m:to&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:265
+#, no-c-format
+msgid ""
+"Add a recipient to the email. Use multiple &lt;m:to&gt; tags for multiple "
+"recipients. This tag can be safely placed inside a repeat tag such as &lt;ui:"
+"repeat&gt;."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:270 Mail.xml:290 Mail.xml:310
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the name of the recipient."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:275 Mail.xml:295 Mail.xml:315
+#, no-c-format
+msgid "<literal>address</literal> &mdash; the email address of the recipient."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:283
+#, no-c-format
+msgid "&lt;m:cc&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:285
+#, no-c-format
+msgid ""
+"Add a cc recipient to the email. Use multiple &lt;m:cc&gt; tags for multiple "
+"ccs. This tag can be safely placed inside a repeat tag such as &lt;ui:"
+"repeat&gt;."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:303
+#, no-c-format
+msgid "&lt;m:bcc&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:305
+#, no-c-format
+msgid ""
+"Add a bcc recipient to the email. Use multiple &lt;m:bcc&gt; tags for "
+"multiple bccs. This tag can be safely placed inside a repeat tag such as &lt;"
+"ui:repeat&gt;."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:323
+#, no-c-format
+msgid "&lt;m:header&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:325
+#, no-c-format
+msgid ""
+"Add a header to the email (e.g. <literal>X-Sent-From: JBoss Seam</literal>"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:330
+#, no-c-format
+msgid ""
+"<literal>name</literal> &mdash; The name of the header to add (e.g. "
+"<literal>X-Sent-From</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:335
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; The value of the header to add (e.g. "
+"<literal>JBoss Seam</literal>)."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:343
+#, no-c-format
+msgid "&lt;m:attachment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:345
+#, no-c-format
+msgid "Add an attachment to the email."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:350
+#, no-c-format
+msgid "<literal>value</literal> &mdash; The file to attach:"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:355
+#, no-c-format
+msgid ""
+"<literal>String</literal> &mdash; A <literal>String</literal> is interpreted "
+"as a path to file within the classpath"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:360
+#, no-c-format
+msgid ""
+"<literal>java.io.File</literal> &mdash; An EL expression can reference a "
+"<literal>File</literal> object"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:365
+#, no-c-format
+msgid ""
+"<literal>java.net.URL</literal> &mdash; An EL expression can reference a "
+"<literal>URL</literal> object"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:370
+#, no-c-format
+msgid ""
+"<literal>java.io.InputStream</literal> &mdash; An EL expression can "
+"reference an <literal>InputStream</literal>. In this case both a "
+"<literal>fileName</literal> and a <literal>contentType</literal> must be "
+"specified."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:375
+#, no-c-format
+msgid ""
+"<literal>byte[]</literal> &mdash; An EL expression can reference an "
+"<literal>byte[]</literal>. In this case both a <literal>fileName</literal> "
+"and a <literal>contentType</literal> must be specified."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:380
+#, no-c-format
+msgid "If the value attribute is ommitted:"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:385
+#, no-c-format
+msgid ""
+"If this tag contains a <literal>&lt;p:document&gt;</literal> tag, the "
+"document described will be generated and attached to the email. A "
+"<literal>fileName</literal> should be specfied."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:390
+#, no-c-format
+msgid ""
+"If this tag contains other JSF tags a HTML document will be generated from "
+"them and attached to the email. A <literal>fileName</literal> should be "
+"specfied."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:397
+#, no-c-format
+msgid ""
+"<literal>fileName</literal> &mdash; Specify the file name to use for the "
+"attached file."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:402
+#, no-c-format
+msgid ""
+"<literal>contentType</literal> &mdash; Specify the MIME type of the attached "
+"file"
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:410
+#, no-c-format
+msgid "&lt;m:subject&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:412
+#, no-c-format
+msgid "Set's the subject for the email."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:418
+#, no-c-format
+msgid "&lt;m:body&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:420
+#, no-c-format
+msgid ""
+"Set's the body for the email. Supports an <literal>alternative</literal> "
+"facet which, if an HTML email is generated can contain alternative text for "
+"a mail reader which doesn't support html."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:425
+#, no-c-format
+msgid ""
+"<literal>type</literal> &mdash; If set to <literal>plain</literal> then a "
+"plain text email will be generated otherwise an HTML email is generated."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Persistence.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Persistence.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Persistence.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,750 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Persistence.xml:10
+#, no-c-format
+msgid "Seam and Object/Relational Mapping"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:11
+#, no-c-format
+msgid ""
+"Seam provides extensive support for the two most popular persistence "
+"architectures for Java: Hibernate3, and the Java Persistence API introduced "
+"with EJB 3.0. Seam's unique state-management architecture allows the most "
+"sophisticated ORM integration of any web application framework."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:15
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:16
+#, no-c-format
+msgid ""
+"Seam grew out of the frustration of the Hibernate team with the "
+"statelessness typical of the previous generation of Java application "
+"architectures. The state management architecture of Seam was originally "
+"designed to solve problems relating to persistence&mdash;in particular "
+"problems associated with <emphasis>optimistic transaction processing</"
+"emphasis>. Scalable online applications always use optimistic transactions. "
+"An atomic (database/JTA) level transaction should not span a user "
+"interaction unless the application is designed to support only a very small "
+"number of concurrent clients. But almost all interesting work involves first "
+"displaying data to a user, and then, slightly later, updating the same data. "
+"So Hibernate was designed to support the idea of a persistence context which "
+"spanned an optimistic transaction."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:19
+#, no-c-format
+msgid ""
+"Unfortunately, the so-called \"stateless\" architectures that preceded Seam "
+"and EJB 3.0 had no construct for representing an optimistic transaction. So, "
+"instead, these architectures provided persistence contexts scoped to the "
+"atomic transaction. Of course, this resulted in many problems for users, and "
+"is the cause of the number one user complaint about Hibernate: the dreaded "
+"<literal>LazyInitializationException</literal>. What we need is a construct "
+"for representing an optimistic transaction in the application tier."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:22
+#, no-c-format
+msgid ""
+"EJB 3.0 recognizes this problem, and introduces the idea of a stateful "
+"component (a stateful session bean) with an <emphasis>extended persistence "
+"context</emphasis> scoped to the lifetime of the component. This is a "
+"partial solution to the problem (and is a useful construct in and of itself) "
+"however there are two problems:"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:27
+#, no-c-format
+msgid ""
+"The lifecycle of the stateful session bean must be managed manually via code "
+"in the web tier (it turns out that this is a subtle problem and much more "
+"difficult in practice than it sounds)."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:32
+#, no-c-format
+msgid ""
+"Propagation of the persistence context between stateful components in the "
+"same optimistic transaction is possible, but tricky."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:37
+#, no-c-format
+msgid ""
+"Seam solves the first problem by providing conversations, and stateful "
+"session bean components scoped to the conversation. (Most conversations "
+"actually represent optimistic transactions in the data layer.) This is "
+"sufficient for many simple applications (such as the Seam booking demo) "
+"where persistence context propagation is not needed. For more complex "
+"applications, with many loosly-interacting components in each conversation, "
+"propagation of the persistence context across components becomes an "
+"important issue. So Seam extends the persistence context management model of "
+"EJB 3.0, to provide conversation-scoped extended persistence contexts."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:43
+#, no-c-format
+msgid "Seam managed transactions"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:44
+#, no-c-format
+msgid ""
+"EJB session beans feature declarative transaction management. The EJB "
+"container is able to start a transaction transparently when the bean is "
+"invoked, and end it when the invocation ends. If we write a session bean "
+"method that acts as a JSF action listener, we can do all the work associated "
+"with that action in one transaction, and be sure that it is committed or "
+"rolled back when we finish processing the action. This is a great feature, "
+"and all that is needed by some Seam applications."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:47
+#, no-c-format
+msgid ""
+"However, there is a problem with this approach. A Seam application may not "
+"perform all data access for a request from a single method call to a session "
+"bean."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:52
+#, no-c-format
+msgid ""
+"The request might require processing by several loosly-coupled components, "
+"each of which is called independently from the web layer. It is common to "
+"see several or even many calls per request from the web layer to EJB "
+"components in Seam."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:57
+#, no-c-format
+msgid "Rendering of the view might require lazy fetching of associations."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:62
+#, no-c-format
+msgid ""
+"The more transactions per request, the more likely we are to encounter "
+"atomicity and isolation problems when our application is processing many "
+"concurrent requests. Certainly, all write operations should occur in the "
+"same transaction!"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:65
+#, no-c-format
+msgid ""
+"Hibernate users developed the <emphasis>\"open session in view\"</emphasis> "
+"pattern to work around this problem. In the Hibernate community, \"open "
+"session in view\" was historically even more important because frameworks "
+"like Spring use transaction-scoped persistence contexts. So rendering the "
+"view would cause <literal>LazyInitializationException</literal>s when "
+"unfetched associations were accessed."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:68
+#, no-c-format
+msgid ""
+"This pattern is usually implemented as a single transaction which spans the "
+"entire request. There are several problems with this implementation, the "
+"most serious being that we can never be sure that a transaction is "
+"successful until we commit it&mdash;but by the time the \"open session in "
+"view\" transaction is committed, the view is fully rendered, and the "
+"rendered response may already have been flushed to the client. How can we "
+"notify the user that their transaction was unsuccessful?"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:71
+#, no-c-format
+msgid ""
+"Seam solves both the transaction isolation problem and the association "
+"fetching problem, while working around the problems with \"open session in "
+"view\". The solution comes in two parts:"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:76
+#, no-c-format
+msgid ""
+"use an extended persistence context that is scoped to the conversation, "
+"instead of to the transaction"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:81
+#, no-c-format
+msgid ""
+"use two transactions per request; the first spans the beginning of the "
+"update model values phase until the end of the invoke application phase; the "
+"second spans the render response phase"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:86
+#, no-c-format
+msgid ""
+"In the next section, we'll tell you how to set up a conversation-scope "
+"persistence context. But first we need to tell you how to enable Seam "
+"transaction management. Note that you can use conversation-scoped "
+"persistence contexts without Seam transaction management, and there are good "
+"reasons to use Seam transaction management even when you're not using Seam-"
+"managed persistence contexts. However, the two facilities were designed to "
+"work together, and work best when used together."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:90
+#, no-c-format
+msgid "Enabling Seam-managed transactions"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:91
+#, no-c-format
+msgid ""
+"To make use of <emphasis>Seam managed transactions</emphasis>, you need to "
+"use <literal>TransactionalSeamPhaseListener</literal> in place of "
+"<literal>SeamPhaseListener</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:94
+#, no-c-format
+msgid ""
+"&lt;lifecycle&gt;\n"
+"     &lt;phase-listener&gt;\n"
+"        org.jboss.seam.jsf.TransactionalSeamPhaseListener\n"
+"    &lt;/phase-listener&gt;\n"
+"&lt;/lifecycle&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:95
+#, no-c-format
+msgid ""
+"Seam transaction management is useful even if you're using EJB 3.0 container-"
+"managed persistence contexts. But it is especially useful if you use Seam "
+"outside a Java EE 5 environment, or in any other case where you would use a "
+"Seam-managed persistence context."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:103
+#, no-c-format
+msgid "Seam-managed persistence contexts"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:104
+#, no-c-format
+msgid ""
+"If you're using Seam outside of a Java EE 5 environment, you can't rely upon "
+"the container to manage the persistence context lifecycle for you. Even if "
+"you are in an EE 5 environment, you might have a complex application with "
+"many loosly coupled components that collaborate together in the scope of a "
+"single conversation, and in this case you might find that propagation of the "
+"persistence context between component is tricky and error-prone."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:107
+#, no-c-format
+msgid ""
+"In either case, you'll need to use a <emphasis>managed persistence context</"
+"emphasis> (for JPA) or a <emphasis>managed session</emphasis> (for "
+"Hibernate) in your components. A Seam-managed persistence context is just a "
+"built-in Seam component that manages an instance of <literal>EntityManager</"
+"literal> or <literal>Session</literal> in the conversation context. You can "
+"inject it with <literal>@In</literal>."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:110
+#, no-c-format
+msgid ""
+"Seam-managed persistence contexts are extremely efficient in a clustered "
+"environment. Seam is able to perform an optimization that EJB 3.0 "
+"specification does not allow containers to use for container-managed "
+"extended persistence contexts. Seam supports transparent failover of "
+"extended persisence contexts, without the need to replicate any persistence "
+"context state between nodes. (We hope to fix this oversight in the next "
+"revision of the EJB spec.)"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:114
+#, no-c-format
+msgid "Using a Seam-managed persistence context with JPA"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:115
+#, no-c-format
+msgid ""
+"Configuring a managed persistence context is easy. In <literal>components."
+"xml</literal>, we can write:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:118
+#, no-c-format
+msgid ""
+"&lt;core:managed-persistence-context name=\"bookingDatabase\" \n"
+"                           auto-create=\"true\"\n"
+"            persistence-unit-jndi-name=\"java:/EntityManagerFactories/"
+"bookingData\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:119
+#, no-c-format
+msgid ""
+"This configuration creates a conversation-scoped Seam component named "
+"<literal>bookingDatabase</literal> that manages the lifecycle of "
+"<literal>EntityManager</literal> instances for the persistence unit "
+"(<literal>EntityManagerFactory</literal> instance) with JNDI name "
+"<literal>java:/EntityManagerFactories/bookingData</literal>."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:122
+#, no-c-format
+msgid ""
+"Of course, you need to make sure that you have bound the "
+"<literal>EntityManagerFactory</literal> into JNDI. In JBoss, you can do this "
+"by adding the following property setting to <literal>persistence.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:125
+#, no-c-format
+msgid ""
+"&lt;property name=\"jboss.entity.manager.factory.jndi.name\" \n"
+"          value=\"java:/EntityManagerFactories/bookingData\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:126
+#, no-c-format
+msgid "Now we can have our <literal>EntityManager</literal> injected using:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:129
+#, no-c-format
+msgid "@In EntityManager bookingDatabase;"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:133
+#, no-c-format
+msgid "Using a Seam-managed Hibernate session"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:134
+#, no-c-format
+msgid ""
+"Seam-managed Hibernate sessions are similar. In <literal>components.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:137
+#, no-c-format
+msgid ""
+"&lt;core:hibernate-session-factory name=\"hibernateSessionFactory\"/&gt;\n"
+"\n"
+"&lt;core:managed-hibernate-session name=\"bookingDatabase\" \n"
+"                         auto-create=\"true\"\n"
+"           session-factory-jndi-name=\"java:/bookingSessionFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:138
+#, no-c-format
+msgid ""
+"Where <literal>java:/bookingSessionFactory</literal> is the name of the "
+"session factory specified in <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:141
+#, no-c-format
+msgid ""
+"&lt;session-factory name=\"java:/bookingSessionFactory\"&gt;\n"
+"    &lt;property name=\"transaction.flush_before_completion\"&gt;true&lt;/"
+"property&gt;\n"
+"    &lt;property name=\"connection.release_mode\"&gt;after_statement&lt;/"
+"property&gt;\n"
+"    &lt;property name=\"transaction.manager_lookup_class\"&gt;\n"
+"        org.hibernate.transaction.JBossTransactionManagerLookup\n"
+"    &lt;/property&gt;\n"
+"    &lt;property name=\"transaction.factory_class\"&gt;\n"
+"        org.hibernate.transaction.JTATransactionFactory\n"
+"    &lt;/property&gt;\n"
+"    &lt;property name=\"connection.datasource\"&gt;java:/"
+"bookingDatasource&lt;/property&gt;\n"
+"    ...\n"
+"&lt;/session-factory&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:142
+#, no-c-format
+msgid ""
+"Note that Seam does not flush the session, so you should always enable "
+"<literal>hibernate.transaction.flush_before_completion</literal> to ensure "
+"that the session is automatically flushed before the JTA transaction commits."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:145
+#, no-c-format
+msgid ""
+"We can now have a managed Hibernate <literal>Session</literal> injected into "
+"our JavaBean components using the following code:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:148
+#, no-c-format
+msgid "@In Session bookingDatabase;"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:152
+#, no-c-format
+msgid "Seam-managed persistence contexts and atomic conversations"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:153
+#, no-c-format
+msgid ""
+"Persistence contexts scoped to the conversation allows you to program "
+"optimistic transactions that span multiple requests to the server without "
+"the need to use the <literal>merge()</literal> operation , without the need "
+"to re-load data at the beginning of each request, and without the need to "
+"wrestle with the <literal>LazyInitializationException</literal> or "
+"<literal>NonUniqueObjectException</literal>."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:156
+#, no-c-format
+msgid ""
+"As with any optimistic transaction management, transaction isolation and "
+"consistency can be achieved via use of optimistic locking. Fortunately, both "
+"Hibernate and EJB 3.0 make it very easy to use optimistic locking, by "
+"providing the <literal>@Version</literal> annotation."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:159
+#, no-c-format
+msgid ""
+"By default, the persistence context is flushed (synchronized with the "
+"database) at the end of each transaction. This is sometimes the desired "
+"behavior. But very often, we would prefer that all changes are held in "
+"memory and only written to the database when the conversation ends "
+"successfully. This allows for truly atomic conversations. As the result of a "
+"truly stupid and shortsighted decision by certain non-JBoss, non-Sun and non-"
+"Sybase members of the EJB 3.0 expert group, there is currently no simple, "
+"usable and portable way to implement atomic conversations using EJB 3.0 "
+"persistence. However, Hibernate provides this feature as a vendor extension "
+"to the <literal>FlushModeType</literal>s defined by the specification, and "
+"it is our expectation that other vendors will soon provide a similar "
+"extension."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:162
+#, no-c-format
+msgid ""
+"Seam lets you specify <literal>FlushModeType.MANUAL</literal> when beginning "
+"a conversation. Currently, this works only when Hibernate is the underlying "
+"persistence provider, but we plan to support other equivalent vendor "
+"extensions."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:165
+#, no-c-format
+msgid ""
+"@In EntityManager em; //a Seam-managed persistence context\n"
+"\n"
+"@Begin(flushMode=MANUAL)\n"
+"public void beginClaimWizard() {\n"
+"    claim = em.find(Claim.class, claimId);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:166
+#, no-c-format
+msgid ""
+"Now, the <literal>claim</literal> object remains managed by the persistence "
+"context for the rest ot the conversation. We can make changes to the claim:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:169
+#, no-c-format
+msgid ""
+"public void addPartyToClaim() {\n"
+"    Party party = ....;\n"
+"    claim.addParty(party);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:170
+#, no-c-format
+msgid ""
+"But these changes will not be flushed to the database until we explicitly "
+"force the flush to occur:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:173
+#, no-c-format
+msgid ""
+"@End\n"
+"public void commitClaim() {\n"
+"    em.flush();\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:179
+#, no-c-format
+msgid "Using the JPA \"delegate\""
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:180
+#, no-c-format
+msgid ""
+"The <literal>EntityManager</literal> interface lets you access a vendor-"
+"specific API via the <literal>getDelegate()</literal> method. Naturally, the "
+"most interesting vendor is Hibernate, and the most powerful delegate "
+"interface is <literal>org.hibernate.Session</literal>. You'd be nuts to use "
+"anything else. Trust me, I'm not biased at all."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:183
+#, no-c-format
+msgid ""
+"But regardless of whether you're using Hibernate (genius!) or something else "
+"(masochist, or just not very bright), you'll almost certainly want to use "
+"the delegate in your Seam components from time to time. One approach would "
+"be the following:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:186
+#, no-c-format
+msgid ""
+"@In EntityManager entityManager;\n"
+"\n"
+"@Create\n"
+"public void init() {\n"
+"    ( (Session) entityManager.getDelegate() ).enableFilter(\"currentVersions"
+"\");\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:187
+#, no-c-format
+msgid ""
+"But typecasts are unquestionably the ugliest syntax in the Java language, so "
+"most people avoid them whenever possible. Here's a different way to get at "
+"the delegate. First, add the following line to <literal>components.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:190
+#, no-c-format
+msgid ""
+"&lt;factory name=\"session\" \n"
+"         scope=\"STATELESS\" \n"
+"         auto-create=\"true\" \n"
+"         value=\"#{entityManager.delegate}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:191
+#, no-c-format
+msgid "Now we can inject the session directly:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:194
+#, no-c-format
+msgid ""
+"@In Session session;\n"
+"\n"
+"@Create\n"
+"public void init() {\n"
+"    session.enableFilter(\"currentVersions\");\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:198
+#, no-c-format
+msgid "Using EL in EJB-QL/HQL"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:199
+#, no-c-format
+msgid ""
+"Seam proxies the <literal>EntityManager</literal> or <literal>Session</"
+"literal> object whenever you use a Seam-managed persistence context or "
+"inject a container managed persistence context using "
+"<literal>@PersistenceContext</literal>. This lets you use EL expressions in "
+"your query strings, safely and efficiently. For example, this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:202
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=#{user.username}\")\n"
+"         .getSingleResult();"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:203
+#, no-c-format
+msgid "is equivalent to:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:206
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getSingleResult();"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:207
+#, no-c-format
+msgid "Of course, you should never, ever write it like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:210
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=\" + user.getUsername"
+"()) //BAD!\n"
+"         .getSingleResult();"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:211
+#, no-c-format
+msgid "(It is inefficient and vulnerable to SQL injection attacks.)"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:217
+#, no-c-format
+msgid "Using Hibernate filters"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:218
+#, no-c-format
+msgid ""
+"The coolest, and most unique, feature of Hibernate is <emphasis>filters</"
+"emphasis>. Filters let you provide a restricted view of the data in the "
+"database. You can find out more about filters in the Hibernate "
+"documentation. But we thought we'd mention an easy way to incorporate "
+"filters into a Seam application, one that works especially well with the "
+"Seam Application Framework."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:221
+#, no-c-format
+msgid ""
+"Seam-managed persistence contexts may have a list of filters defined, which "
+"will be enabled whenever an <literal>EntityManager</literal> or Hibernate "
+"<literal>Session</literal> is first created. (Of course, they may only be "
+"used when Hibernate is the underlying persistence provider.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:224
+#, no-c-format
+msgid ""
+"&lt;core:filter name=\"regionFilter\"&gt;\n"
+"    &lt;core:name&gt;region&lt;/core:name&gt;\n"
+"    &lt;core:parameters&gt;\n"
+"        &lt;key&gt;regionCode&lt;/key&gt;\n"
+"        &lt;value&gt;#{region.code}&lt;/value&gt;\n"
+"    &lt;/core:parameters&gt;\n"
+"&lt;/core:filter&gt;\n"
+"\n"
+"&lt;core:filter name=\"currentFilter\"&gt;\n"
+"    &lt;core:name&gt;current&lt;/core:name&gt;\n"
+"    &lt;core:parameters&gt;\n"
+"        &lt;key&gt;date&lt;/key&gt;\n"
+"        &lt;value&gt;#{currentDate}&lt;/value&gt;\n"
+"    &lt;/core:parameters&gt;\n"
+"&lt;/core:filter&gt;\n"
+"\n"
+"&lt;core:managed-persistence-context name=\"personDatabase\"\n"
+"    persistence-unit-jndi-name=\"java:/EntityManagerFactories/personDatabase"
+"\"&gt;\n"
+"    &lt;core:filters&gt;\n"
+"        &lt;value&gt;#{regionFilter}&lt;/value&gt;\n"
+"        &lt;value&gt;#{currentFilter}&lt;/value&gt;\n"
+"    &lt;/core:filters&gt;\n"
+"&lt;/core:managed-persistence-context&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Remoting.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Remoting.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Remoting.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1458 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Remoting.xml:10
+#, no-c-format
+msgid "Remoting"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:11
+#, no-c-format
+msgid ""
+"Seam provides a convenient method of remotely accessing components from a "
+"web page, using AJAX (Asynchronous Javascript and XML). The framework for "
+"this functionality is provided with almost no up-front development effort - "
+"your components only require simple annotating to become accessible via "
+"AJAX. This chapter describes the steps required to build an AJAX-enabled web "
+"page, then goes on to explain the features of the Seam Remoting framework in "
+"more detail."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:14 Remoting.xml:296
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:15
+#, no-c-format
+msgid ""
+"To use remoting, the Seam Resource servlet must first be configured in your "
+"<literal>web.xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:18
+#, no-c-format
+msgid ""
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"  &lt;/servlet&gt;\n"
+"\n"
+"  &lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"  &lt;/servlet-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:19
+#, no-c-format
+msgid ""
+"The next step is to import the necessary Javascript into your web page. "
+"There are a minimum of two scripts that must be imported. The first one "
+"contains all the client-side framework code that enables remoting "
+"functionality:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:22
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/resource/"
+"remote.js\"&gt;&lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:23
+#, no-c-format
+msgid ""
+"The second script contains the stubs and type definitions for the components "
+"you wish to call. It is generated dynamically based on the local interface "
+"of your components, and includes type definitions for all of the classes "
+"that can be used to call the remotable methods of the interface. The name of "
+"the script reflects the name of your component. For example, if you have a "
+"stateless session bean annotated with <literal>@Name(\"customerAction\")</"
+"literal>, then your script tag should look like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:26
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?customerAction\"&gt;\n"
+"      &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:27
+#, no-c-format
+msgid ""
+"If you wish to access more than one component from the same page, then "
+"include them all as parameters of your script tag:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:30
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" \n"
+"      src=\"seam/resource/remoting/interface.js?customerAction&amp;"
+"accountAction\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:31
+#, no-c-format
+msgid "The \"Seam\" object"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:32
+#, no-c-format
+msgid ""
+"Client-side interaction with your components is all performed via the "
+"<literal>Seam</literal> Javascript object. This object is defined in "
+"<literal>remote.js</literal>, and you'll be using it to make asynchronous "
+"calls against your component. It is split into two areas of functionality; "
+"<literal>Seam.Component</literal> contains methods for working with "
+"components and <literal>Seam.Remoting</literal> contains methods for "
+"executing remote requests. The easiest way to become familiar with this "
+"object is to start with a simple example."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:35
+#, no-c-format
+msgid "A Hello World example"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:36
+#, no-c-format
+msgid ""
+"Let's step through a simple example to see how the <literal>Seam</literal> "
+"object works. First of all, let's create a new Seam component called "
+"<literal>helloAction</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:39
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"  @Name(\"helloAction\")\n"
+"  public class HelloAction implements HelloLocal {\n"
+"    public String sayHello(String name) {\n"
+"      return \"Hello, \" + name;\n"
+"    }\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:40
+#, no-c-format
+msgid ""
+"You also need to create a local interface for our new component - take "
+"special note of the <literal>@WebRemote</literal> annotation, as it's "
+"required to make our method accessible via remoting:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:43
+#, no-c-format
+msgid ""
+"@Local\n"
+"  public interface HelloLocal {\n"
+"    @WebRemote\n"
+"    public String sayHello(String name);\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:44
+#, no-c-format
+msgid ""
+"That's all the server-side code we need to write. Now for our web page - "
+"create a new page and import the following scripts:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:47
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/resource/"
+"remote.js\"&gt;&lt;/script&gt;\n"
+"  &lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?helloAction\"&gt;&lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:48
+#, no-c-format
+msgid ""
+"To make this a fully interactive user experience, let's add a button to our "
+"page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:51
+#, no-c-format
+msgid ""
+"&lt;button onclick=\"javascript:sayHello()\"&gt;Say Hello&lt;/button&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:52
+#, no-c-format
+msgid ""
+"We'll also need to add some more script to make our button actually do "
+"something when it's clicked:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:55
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\"&gt;\n"
+"    //&lt;![CDATA[\n"
+"\n"
+"    function sayHello() {\n"
+"      var name = prompt(\"What is your name?\");\n"
+"      Seam.Component.getInstance(\"helloAction\").sayHello(name, "
+"sayHelloCallback);\n"
+"    }\n"
+"\n"
+"    function sayHelloCallback(result) {\n"
+"      alert(result);\n"
+"    }\n"
+"\n"
+"    // ]]&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:56
+#, no-c-format
+msgid ""
+"We're done! Deploy your application and browse to your page. Click the "
+"button, and enter a name when prompted. A message box will display the hello "
+"message confirming that the call was successful. If you want to save some "
+"time, you'll find the full source code for this Hello World example in "
+"Seam's <literal>/examples/remoting/helloworld</literal> directory."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:59
+#, no-c-format
+msgid ""
+"So what does the code of our script actually do? Let's break it down into "
+"smaller pieces. To start with, you can see from the Javascript code listing "
+"that we have implemented two methods - the first method is responsible for "
+"prompting the user for their name and then making a remote request. Take a "
+"look at the following line:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:62
+#, no-c-format
+msgid ""
+"Seam.Component.getInstance(\"helloAction\").sayHello(name, sayHelloCallback);"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:63
+#, no-c-format
+msgid ""
+"The first section of this line, <literal>Seam.Component.getInstance"
+"(\"helloAction\")</literal> returns a proxy, or \"stub\" for our "
+"<literal>helloAction</literal> component. We can invoke the methods of our "
+"component against this stub, which is exactly what happens with the "
+"remainder of the line: <literal>sayHello(name, sayHelloCallback);</literal>."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:66
+#, no-c-format
+msgid ""
+"What this line of code in its completeness does, is invoke the "
+"<literal>sayHello</literal> method of our component, passing in "
+"<literal>name</literal> as a parameter. The second parameter, "
+"<literal>sayHelloCallback</literal> isn't a parameter of our component's "
+"<literal>sayHello</literal> method, instead it tells the Seam Remoting "
+"framework that once it receives the response to our request, it should pass "
+"it to the <literal>sayHelloCallback</literal> Javascript method. This "
+"callback parameter is entirely optional, so feel free to leave it out if "
+"you're calling a method with a <literal>void</literal> return type or if you "
+"don't care about the result."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:69
+#, no-c-format
+msgid ""
+"The <literal>sayHelloCallback</literal> method, once receiving the response "
+"to our remote request then pops up an alert message displaying the result of "
+"our method call."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:72
+#, no-c-format
+msgid "Seam.Component"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:73
+#, no-c-format
+msgid ""
+"The <literal>Seam.Component</literal> Javascript object provides a number of "
+"client-side methods for working with your Seam components. The two main "
+"methods, <literal>newInstance()</literal> and <literal>getInstance()</"
+"literal> are documented in the following sections however their main "
+"difference is that <literal>newInstance()</literal> will always create a new "
+"instance of a component type, and <literal>getInstance()</literal> will "
+"return a singleton instance."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:76
+#, no-c-format
+msgid "Seam.Component.newInstance()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:77
+#, no-c-format
+msgid ""
+"Use this method to create a new instance of an entity or Javabean component. "
+"The object returned by this method will have the same getter/setter methods "
+"as its server-side counterpart, or alternatively if you wish you can access "
+"its fields directly. Take the following Seam entity component for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:80
+#, no-c-format
+msgid ""
+"@Name(\"customer\")\n"
+"  @Entity\n"
+"  public class Customer implements Serializable\n"
+"  {\n"
+"    private Integer customerId;\n"
+"    private String firstName;\n"
+"    private String lastName;\n"
+"    \n"
+"    @Column public Integer getCustomerId() { \n"
+"      return customerId; \n"
+"    }\n"
+"    \n"
+"    public void setCustomerId(Integer customerId} { \n"
+"      this.customerId = customerId; \n"
+"    }\n"
+"    \n"
+"    @Column public String getFirstName() { \n"
+"      return firstName; \n"
+"    }\n"
+"    \n"
+"    public void setFirstName(String firstName) {\n"
+"      this.firstName = firstName; \n"
+"    }\n"
+"    \n"
+"    @Column public String getLastName() {\n"
+"      return lastName;\n"
+"    }\n"
+"    \n"
+"    public void setLastName(String lastName) {\n"
+"      this.lastName = lastName;\n"
+"    }\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:81
+#, no-c-format
+msgid "To create a client-side Customer you would write the following code:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:84
+#, no-c-format
+msgid "var customer = Seam.Component.newInstance(\"customer\");"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:85
+#, no-c-format
+msgid "Then from here you can set the fields of the customer object:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:88
+#, no-c-format
+msgid ""
+"customer.setFirstName(\"John\");\n"
+"  // Or you can set the fields directly\n"
+"  customer.lastName = \"Smith\";"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:89
+#, no-c-format
+msgid "Seam.Component.getInstance()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:90
+#, no-c-format
+msgid ""
+"The <literal>getInstance()</literal> method is used to get a reference to a "
+"Seam session bean component stub, which can then be used to remotely execute "
+"methods against your component. This method returns a singleton for the "
+"specified component, so calling it twice in a row with the same component "
+"name will return the same instance of the component."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:93
+#, no-c-format
+msgid ""
+"To continue our example from before, if we have created a new "
+"<literal>customer</literal> and we now wish to save it, we would pass it to "
+"the <literal>saveCustomer()</literal> method of our <literal>customerAction</"
+"literal> component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:96
+#, no-c-format
+msgid "Seam.Component.getInstance(\"customerAction\").saveCustomer(customer);"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:97
+#, no-c-format
+msgid "Seam.Component.getComponentName()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:98
+#, no-c-format
+msgid ""
+"Passing an object into this method will return its component name if it is a "
+"component, or <literal>null</literal> if it is not."
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:101
+#, no-c-format
+msgid ""
+"if (Seam.Component.getComponentName(instance) == \"customer\")\n"
+"    alert(\"Customer\");\n"
+"  else if (Seam.Component.getComponentName(instance) == \"staff\")\n"
+"    alert(\"Staff member\");"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:102
+#, no-c-format
+msgid "Seam.Remoting"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:103
+#, no-c-format
+msgid ""
+"Most of the client side functionality for Seam Remoting is contained within "
+"the <literal>Seam.Remoting</literal> object. While you shouldn't need to "
+"directly call most of its methods, there are a couple of important ones "
+"worth mentioning."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:106
+#, no-c-format
+msgid "Seam.Remoting.createType()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:107
+#, no-c-format
+msgid ""
+"If your application contains or uses Javabean classes that aren't Seam "
+"components, you may need to create these types on the client side to pass as "
+"parameters into your component method. Use the <literal>createType()</"
+"literal> method to create an instance of your type. Pass in the fully "
+"qualified Java class name as a parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:110
+#, no-c-format
+msgid "var widget = Seam.Remoting.createType(\"com.acme.widgets.MyWidget\");"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:111
+#, no-c-format
+msgid "Seam.Remoting.getTypeName()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:112
+#, no-c-format
+msgid ""
+"This method is the equivalent of <literal>Seam.Component.getComponentName()</"
+"literal> but for non-component types. It will return the name of the type "
+"for an object instance, or <literal>null</literal> if the type is not known. "
+"The name is the fully qualified name of the type's Java class."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:115
+#, no-c-format
+msgid "Client Interfaces"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:116
+#, no-c-format
+msgid ""
+"In the configuration section above, the interface, or \"stub\" for our "
+"component is imported into our page via <literal>seam/resource/remoting/"
+"interface.js</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:119
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?customerAction\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:120
+#, no-c-format
+msgid ""
+"By including this script in our page, the interface definitions for our "
+"component, plus any other components or types that are required to execute "
+"the methods of our component are generated and made available for the "
+"remoting framework to use."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:123
+#, no-c-format
+msgid ""
+"There are two types of client stub that can be generated, \"executable\" "
+"stubs and \"type\" stubs. Executable stubs are behavioural, and are used to "
+"execute methods against your session bean components, while type stubs "
+"contain state and represent the types that can be passed in as parameters or "
+"returned as a result."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:126
+#, no-c-format
+msgid ""
+"The type of client stub that is generated depends on the type of your Seam "
+"component. If the component is a session bean, then an executable stub will "
+"be generated, otherwise if it's an entity or JavaBean, then a type stub will "
+"be generated. There is one exception to this rule; if your component is a "
+"JavaBean (ie it is not a session bean nor an entity bean) and any of its "
+"methods are annotated with @WebRemote, then an executable stub will be "
+"generated for it instead of a type stub. This allows you to use remoting to "
+"call methods of your JavaBean components in a non-EJB environment where you "
+"don't have access to session beans."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:130
+#, no-c-format
+msgid "The Context"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:131
+#, no-c-format
+msgid ""
+"The Seam Remoting Context contains additional information which is sent and "
+"received as part of a remoting request/response cycle. At this stage it only "
+"contains the conversation ID but may be expanded in the future."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:134
+#, no-c-format
+msgid "Setting and reading the Conversation ID"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:136
+#, no-c-format
+msgid ""
+"If you intend on using remote calls within the scope of a conversation then "
+"you need to be able to read or set the conversation ID in the Seam Remoting "
+"Context. To read the conversation ID after making a remote request call "
+"<literal>Seam.Remoting.getContext().getConversationId()</literal>. To set "
+"the conversation ID before making a request, call <literal>Seam.Remoting."
+"getContext().setConversationId()</literal>."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:139
+#, no-c-format
+msgid ""
+"If the conversation ID hasn't been explicitly set with <literal>Seam."
+"Remoting.getContext().setConversationId()</literal>, then it will be "
+"automatically assigned the first valid conversation ID that is returned by "
+"any remoting call. If you are working with multiple conversations within "
+"your page, then you may need to explicitly set the conversation ID before "
+"each call. If you are working with just a single conversation, then you "
+"don't need to do anything special."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:145
+#, no-c-format
+msgid "Batch Requests"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:146
+#, no-c-format
+msgid ""
+"Seam Remoting allows multiple component calls to be executed within a single "
+"request. It is recommended that this feature is used wherever it is "
+"appropriate to reduce network traffic."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:149
+#, no-c-format
+msgid ""
+"The method <literal>Seam.Remoting.startBatch()</literal> will start a new "
+"batch, and any component calls executed after starting a batch are queued, "
+"rather than being sent immediately. When all the desired component calls "
+"have been added to the batch, the <literal>Seam.Remoting.executeBatch()</"
+"literal> method will send a single request containing all of the queued "
+"calls to the server, where they will be executed in order. After the calls "
+"have been executed, a single response containining all return values will be "
+"returned to the client and the callback functions (if provided) triggered in "
+"the same order as execution."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:152
+#, no-c-format
+msgid ""
+"If you start a new batch via the <literal>startBatch()</literal> method but "
+"then decide you don't want to send it, the <literal>Seam.Remoting.cancelBatch"
+"()</literal> method will discard any calls that were queued and exit the "
+"batch mode."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:155
+#, no-c-format
+msgid ""
+"To see an example of a batch being used, take a look at <literal>/examples/"
+"remoting/chatroom</literal>."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:159
+#, no-c-format
+msgid "Working with Data types"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:160
+#, no-c-format
+msgid "Primitives / Basic Types"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:161
+#, no-c-format
+msgid ""
+"This section describes the support for basic data types. On the server side "
+"these values are generally compatible with either their primitive type or "
+"their corresponding wrapper class."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:164
+#, no-c-format
+msgid "String"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:165
+#, no-c-format
+msgid ""
+"Simply use Javascript String objects when setting String parameter values."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:168
+#, no-c-format
+msgid "Number"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:169
+#, no-c-format
+msgid ""
+"There is support for all number types supported by Java. On the client side, "
+"number values are always serialized as their String representation and then "
+"on the server side they are converted to the correct destination type. "
+"Conversion into either a primitive or wrapper type is supported for "
+"<literal>Byte</literal>, <literal>Double</literal>, <literal>Float</"
+"literal>, <literal>Integer</literal>, <literal>Long</literal> and "
+"<literal>Short</literal> types."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:172
+#, no-c-format
+msgid "Boolean"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:173
+#, no-c-format
+msgid ""
+"Booleans are represented client side by Javascript Boolean values, and "
+"server side by a Java boolean."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:176
+#, no-c-format
+msgid "JavaBeans"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:177
+#, no-c-format
+msgid ""
+"In general these will be either Seam entity or JavaBean components, or some "
+"other non-component class. Use the appropriate method (either <literal>Seam."
+"Component.newInstance()</literal> for Seam components or <literal>Seam."
+"Remoting.createType()</literal> for everything else) to create a new "
+"instance of the object."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:180
+#, no-c-format
+msgid ""
+"It is important to note that only objects that are created by either of "
+"these two methods should be used as parameter values, where the parameter is "
+"not one of the other valid types mentioned anywhere else in this section. In "
+"some situations you may have a component method where the exact parameter "
+"type cannot be determined, such as:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:183
+#, no-c-format
+msgid ""
+"@Name(\"myAction\")\n"
+"  public class MyAction implements MyActionLocal {\n"
+"    public void doSomethingWithObject(Object obj) {\n"
+"      // code\n"
+"    }\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:184
+#, no-c-format
+msgid ""
+"In this case you might want to pass in an instance of your "
+"<literal>myWidget</literal> component, however the interface for "
+"<literal>myAction</literal> won't include <literal>myWidget</literal> as it "
+"is not directly referenced by any of its methods. To get around this, "
+"<literal>MyWidget</literal> needs to be explicitly imported:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:187
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?myAction&amp;myWidget\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:188
+#, no-c-format
+msgid ""
+"This will then allow a <literal>myWidget</literal> object to be created with "
+"<literal>Seam.Component.newInstance(\"myWidget\")</literal>, which can then "
+"be passed to <literal>myAction.doSomethingWithObject()</literal>."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:191
+#, no-c-format
+msgid "Dates and Times"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:192
+#, no-c-format
+msgid ""
+"Date values are serialized into a String representation that is accurate to "
+"the millisecond. On the client side, use a Javascript Date object to work "
+"with date values. On the server side, use any <literal>java.util.Date</"
+"literal> (or descendent, such as <literal>java.sql.Date</literal> or "
+"<literal>java.sql.Timestamp</literal> class."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:195
+#, no-c-format
+msgid "Enums"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:196
+#, no-c-format
+msgid ""
+"On the client side, enums are treated the same as Strings. When setting the "
+"value for an enum parameter, simply use the String representation of the "
+"enum. Take the following component as an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:199
+#, no-c-format
+msgid ""
+"@Name(\"paintAction\")\n"
+"  public class paintAction implements paintLocal {\n"
+"    public enum Color {red, green, blue, yellow, orange, purple};\n"
+"\n"
+"    public void paint(Color color) {\n"
+"      // code\n"
+"    }    \n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:200
+#, no-c-format
+msgid ""
+"To call the <literal>paint()</literal> method with the color <literal>red</"
+"literal>, pass the parameter value as a String literal:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:203
+#, no-c-format
+msgid "Seam.Component.getInstance(\"paintAction\").paint(\"red\");"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:204
+#, no-c-format
+msgid ""
+"The inverse is also true - that is, if a component method returns an enum "
+"parameter (or contains an enum field anywhere in the returned object graph) "
+"then on the client-side it will be represented as a String."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:207
+#, no-c-format
+msgid "Collections"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:208
+#, no-c-format
+msgid "Bags"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:209
+#, no-c-format
+msgid ""
+"Bags cover all collection types including arrays, collections, lists, sets, "
+"(but excluding Maps - see the next section for those), and are implemented "
+"client-side as a Javascript array. When calling a component method that "
+"accepts one of these types as a parameter, your parameter should be a "
+"Javascript array. If a component method returns one of these types, then the "
+"return value will also be a Javascript array. The remoting framework is "
+"clever enough on the server side to convert the bag to an appropriate type "
+"for the component method call."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:212
+#, no-c-format
+msgid "Maps"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:213
+#, no-c-format
+msgid ""
+"As there is no native support for Maps within Javascript, a simple Map "
+"implementation is provided with the Seam Remoting framework. To create a Map "
+"which can be used as a parameter to a remote call, create a new "
+"<literal>Seam.Remoting.Map</literal> object:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:216
+#, no-c-format
+msgid "var map = new Seam.Remoting.Map();"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:217
+#, no-c-format
+msgid ""
+"This Javascript implementation provides basic methods for working with Maps: "
+"<literal>size()</literal>, <literal>isEmpty()</literal>, <literal>keySet()</"
+"literal>, <literal>values()</literal>, <literal>get(key)</literal>, "
+"<literal>put(key, value)</literal>, <literal>remove(key)</literal> and "
+"<literal>contains(key)</literal>. Each of these methods are equivalent to "
+"their Java counterpart. Where the method returns a collection, such as "
+"<literal>keySet()</literal> and <literal>values()</literal>, a Javascript "
+"Array object will be returned that contains the key or value objects "
+"(respectively)."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:220
+#, no-c-format
+msgid "Debugging"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:221
+#, no-c-format
+msgid ""
+"To aid in tracking down bugs, it is possible to enable a debug mode which "
+"will display the contents of all the packets send back and forth between the "
+"client and server in a popup window. To enable debug mode, either execute "
+"the <literal>setDebug()</literal> method in Javascript:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:224
+#, no-c-format
+msgid "Seam.Remoting.setDebug(true);"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:225
+#, no-c-format
+msgid "Or configure it via components.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:228
+#, no-c-format
+msgid "&lt;remoting:remoting debug=\"true\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:229
+#, no-c-format
+msgid ""
+"To turn off debugging, call <literal>setDebug(false)</literal>. If you want "
+"to write your own messages to the debug log, call <literal>Seam.Remoting.log"
+"(message)</literal>."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:233
+#, no-c-format
+msgid "The Loading Message"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:234
+#, no-c-format
+msgid ""
+"The default loading message that appears in the top right corner of the "
+"screen can be modified, its rendering customised or even turned off "
+"completely."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:237
+#, no-c-format
+msgid "Changing the message"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:238
+#, no-c-format
+msgid ""
+"To change the message from the default \"Please Wait...\" to something "
+"different, set the value of <literal>Seam.Remoting.loadingMessage</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:241
+#, no-c-format
+msgid "Seam.Remoting.loadingMessage = \"Loading...\";"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:243
+#, no-c-format
+msgid "Hiding the loading message"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:244
+#, no-c-format
+msgid ""
+"To completely suppress the display of the loading message, override the "
+"implementation of <literal>displayLoadingMessage()</literal> and "
+"<literal>hideLoadingMessage()</literal> with functions that instead do "
+"nothing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:247
+#, no-c-format
+msgid ""
+"// don't display the loading indicator\n"
+"  Seam.Remoting.displayLoadingMessage = function() {};\n"
+"  Seam.Remoting.hideLoadingMessage = function() {};"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:248
+#, no-c-format
+msgid "A Custom Loading Indicator"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:249
+#, no-c-format
+msgid ""
+"It is also possible to override the loading indicator to display an animated "
+"icon, or anything else that you want. To do this override the "
+"<literal>displayLoadingMessage()</literal> and <literal>hideLoadingMessage()"
+"</literal> messages with your own implementation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:252
+#, no-c-format
+msgid ""
+"Seam.Remoting.displayLoadingMessage = function() {\n"
+"    // Write code here to display the indicator\n"
+"  };\n"
+"  \n"
+"  Seam.Remoting.hideLoadingMessage = function() {\n"
+"    // Write code here to hide the indicator\n"
+"  };"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:253
+#, no-c-format
+msgid "Controlling what data is returned"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:254
+#, no-c-format
+msgid ""
+"When a remote method is executed, the result is serialized into an XML "
+"response that is returned to the client. This response is then unmarshaled "
+"by the client into a Javascript object. For complex types (i.e. Javabeans) "
+"that include references to other objects, all of these referenced objects "
+"are also serialized as part of the response. These objects may reference "
+"other objects, which may reference other objects, and so forth. If left "
+"unchecked, this object \"graph\" could potentially be enormous, depending on "
+"what relationships exist between your objects. And as a side issue (besides "
+"the potential verbosity of the response), you might also wish to prevent "
+"sensitive information from being exposed to the client."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:257
+#, no-c-format
+msgid ""
+"Seam Remoting provides a simple means to \"constrain\" the object graph, by "
+"specifying the <literal>exclude</literal> field of the remote method's "
+"<literal>@WebRemote</literal> annotation. This field accepts a String array "
+"containing one or more paths specified using dot notation. When invoking a "
+"remote method, the objects in the result's object graph that match these "
+"paths are excluded from the serialized result packet."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:260
+#, no-c-format
+msgid ""
+"For all our examples, we'll use the following <literal>Widget</literal> "
+"class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:263
+#, no-c-format
+msgid ""
+"@Name(\"widget\")\n"
+"public class Widget\n"
+"{\n"
+"  private String value;\n"
+"  private String secret;\n"
+"  private Widget child;\n"
+"  private Map&lt;String,Widget&gt; widgetMap;\n"
+"  private List&lt;Widget&gt; widgetList;\n"
+"  \n"
+"  // getters and setters for all fields\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:264
+#, no-c-format
+msgid "Constraining normal fields"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:265
+#, no-c-format
+msgid ""
+"If your remote method returns an instance of <literal>Widget</literal>, but "
+"you don't want to expose the <literal>secret</literal> field because it "
+"contains sensitive information, you would constrain it like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:268
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:269
+#, no-c-format
+msgid ""
+"The value \"secret\" refers to the <literal>secret</literal> field of the "
+"returned object. Now, suppose that we don't care about exposing this "
+"particular field to the client. Instead, notice that the <literal>Widget</"
+"literal> value that is returned has a field <literal>child</literal> that is "
+"also a <literal>Widget</literal>. What if we want to hide the "
+"<literal>child</literal>'s <literal>secret</literal> value instead? We can "
+"do this by using dot notation to specify this field's path within the "
+"result's object graph:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:272
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"child.secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:273
+#, no-c-format
+msgid "Constraining Maps and Collections"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:274
+#, no-c-format
+msgid ""
+"The other place that objects can exist within an object graph are within a "
+"<literal>Map</literal> or some kind of collection (<literal>List</literal>, "
+"<literal>Set</literal>, <literal>Array</literal>, etc). Collections are "
+"easy, and are treated like any other field. For example, if our "
+"<literal>Widget</literal> contained a list of other <literal>Widget</"
+"literal>s in its <literal>widgetList</literal> field, to constrain the "
+"<literal>secret</literal> field of the <literal>Widget</literal>s in this "
+"list the annotation would look like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:277
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetList.secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:278
+#, no-c-format
+msgid ""
+"To constrain a <literal>Map</literal>'s key or value, the notation is "
+"slightly different. Appending <literal>[key]</literal> after the "
+"<literal>Map</literal>'s field name will constrain the <literal>Map</"
+"literal>'s key object values, while <literal>[value]</literal> will "
+"constrain the value object values. The following example demonstrates how "
+"the values of the <literal>widgetMap</literal> field have their "
+"<literal>secret</literal> field constrained:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:281
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetMap[value].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:282
+#, no-c-format
+msgid "Constraining objects of a specific type"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:283
+#, no-c-format
+msgid ""
+"There is one last notation that can be used to constrain the fields of a "
+"type of object no matter where in the result's object graph it appears. This "
+"notation uses either the name of the component (if the object is a Seam "
+"component) or the fully qualified class name (only if the object is not a "
+"Seam component) and is expressed using square brackets:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:286
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"[widget].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:287
+#, no-c-format
+msgid "Combining Constraints"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:288
+#, no-c-format
+msgid ""
+"Constraints can also be combined, to filter objects from multiple paths "
+"within the object graph:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:291
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetList.secret\", \"widgetMap[value].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:292
+#, no-c-format
+msgid "JMS Messaging"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:293
+#, no-c-format
+msgid ""
+"Seam Remoting provides experimental support for JMS Messaging. This section "
+"describes the JMS support that is currently implemented, but please note "
+"that this may change in the future. It is currently not recommended that "
+"this feature is used within a production environment."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:297
+#, no-c-format
+msgid ""
+"Before you can subscribe to a JMS topic, you must first configure a list of "
+"the topics that can be subscribed to by Seam Remoting. List the topics under "
+"<literal>org.jboss.seam.remoting.messaging.subscriptionRegistry."
+"allowedTopics</literal> in <literal>seam.properties</literal>, <literal>web."
+"xml</literal> or <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:300 Remoting.xml:333
+#, no-c-format
+msgid "&lt;remoting:remoting poll-timeout=\"5\" poll-interval=\"1\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:301
+#, no-c-format
+msgid "Subscribing to a JMS Topic"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:302
+#, no-c-format
+msgid "The following example demonstrates how to subscribe to a JMS Topic:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:305
+#, no-c-format
+msgid ""
+"function subscriptionCallback(message)\n"
+"  {\n"
+"    if (message instanceof Seam.Remoting.TextMessage)\n"
+"      alert(\"Received message: \" + message.getText());\n"
+"  }        \n"
+"        \n"
+"  Seam.Remoting.subscribe(\"topicName\", subscriptionCallback);"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:306
+#, no-c-format
+msgid ""
+"The <literal>Seam.Remoting.subscribe()</literal> method accepts two "
+"parameters, the first being the name of the JMS Topic to subscribe to, the "
+"second being the callback function to invoke when a message is received."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:309
+#, no-c-format
+msgid ""
+"There are two types of messages supported, Text messages and Object "
+"messages. If you need to test for the type of message that is passed to your "
+"callback function you can use the <literal>instanceof</literal> operator to "
+"test whether the message is a <literal>Seam.Remoting.TextMessage</literal> "
+"or <literal>Seam.Remoting.ObjectMessage</literal>. A <literal>TextMessage</"
+"literal> contains the text value in its <literal>text</literal> field (or "
+"alternatively call <literal>getText()</literal> on it), while an "
+"<literal>ObjectMessage</literal> contains its object value in its "
+"<literal>object</literal> field (or call its <literal>getObject()</literal> "
+"method)."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:312
+#, no-c-format
+msgid "Unsubscribing from a Topic"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:313
+#, no-c-format
+msgid ""
+"To unsubscribe from a topic, call <literal>Seam.Remoting.unsubscribe()</"
+"literal> and pass in the topic name:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:316
+#, no-c-format
+msgid "Seam.Remoting.unsubscribe(\"topicName\");"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:317
+#, no-c-format
+msgid "Tuning the Polling Process"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:318
+#, no-c-format
+msgid ""
+"There are two parameters which you can modify to control how polling occurs. "
+"The first one is <literal>Seam.Remoting.pollInterval</literal>, which "
+"controls how long to wait between subsequent polls for new messages. This "
+"parameter is expressed in seconds, and its default setting is 10."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:321
+#, no-c-format
+msgid ""
+"The second parameter is <literal>Seam.Remoting.pollTimeout</literal>, and is "
+"also expressed as seconds. It controls how long a request to the server "
+"should wait for a new message before timing out and sending an empty "
+"response. Its default is 0 seconds, which means that when the server is "
+"polled, if there are no messages ready for delivery then an empty response "
+"will be immediately returned."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:324
+#, no-c-format
+msgid ""
+"Caution should be used when setting a high <literal>pollTimeout</literal> "
+"value; each request that has to wait for a message means that a server "
+"thread is tied up until a message is received, or until the request times "
+"out. If many such requests are being served simultaneously, it could mean a "
+"large number of threads become tied up because of this reason."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:327
+#, no-c-format
+msgid ""
+"It is recommended that you set these options via components.xml, however "
+"they can be overridden via Javascript if desired. The following example "
+"demonstrates how to configure the polling to occur much more aggressively. "
+"You should set these parameters to suitable values for your application:"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:330
+#, no-c-format
+msgid "Via components.xml:"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:334
+#, no-c-format
+msgid "Via JavaScript:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:337
+#, no-c-format
+msgid ""
+"// Only wait 1 second between receiving a poll response and sending the next "
+"poll request.\n"
+"  Seam.Remoting.pollInterval = 1;\n"
+"  \n"
+"  // Wait up to 5 seconds on the server for new messages\n"
+"  Seam.Remoting.pollTimeout = 5;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Security.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Security.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Security.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1676 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Security.xml:10
+#, no-c-format
+msgid "Security"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:11
+#, no-c-format
+msgid ""
+"The Seam Security API is an optional Seam feature that provides "
+"authentication and authorization features for securing both domain and page "
+"resources within your Seam project."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:14
+#, no-c-format
+msgid "Overview"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:15
+#, no-c-format
+msgid "Seam Security provides two different modes of operation:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:20
+#, no-c-format
+msgid ""
+"<emphasis>simplified mode</emphasis> - this mode supports authentication "
+"services and simple role-based security checks."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:25
+#, no-c-format
+msgid ""
+"<emphasis>advanced mode</emphasis> - this mode supports all the same "
+"features as the simplified mode, plus it offers rule-based security checks "
+"using JBoss Rules."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:30
+#, no-c-format
+msgid "Which mode is right for my application?"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:31
+#, no-c-format
+msgid ""
+"That all depends on the requirements of your application. If you have "
+"minimal security requirements, for example if you only wish to restrict "
+"certain pages and actions to users who are logged in, or who belong to a "
+"certain role, then the simplified mode will probably be sufficient. The "
+"advantages of this is a more simplified configuration, significantly less "
+"libraries to include, and a smaller memory footprint."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:34
+#, no-c-format
+msgid ""
+"If on the other hand, your application requires security checks based on "
+"contextual state or complex business rules, then you will require the "
+"features provided by the advanced mode."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:37
+#, no-c-format
+msgid "Requirements"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:38
+#, no-c-format
+msgid ""
+"If using the advanced mode features of Seam Security, the following jar "
+"files are required to be configured as modules in <literal>application.xml</"
+"literal>. If you are using Seam Security in simplified mode, these are "
+"<emphasis>not</emphasis> required:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:43
+#, no-c-format
+msgid "drools-compiler-3.0.5.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:48
+#, no-c-format
+msgid "drools-core-3.0.5.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:53
+#, no-c-format
+msgid "commons-jci-core-1.0-406301.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:58
+#, no-c-format
+msgid "commons-jci-janino-2.4.3.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:63
+#, no-c-format
+msgid "commons-lang-2.1.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:68
+#, no-c-format
+msgid "janino-2.4.3.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:73
+#, no-c-format
+msgid "stringtemplate-2.3b6.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:78
+#, no-c-format
+msgid "antlr-2.7.6.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:83
+#, no-c-format
+msgid "antlr-3.0ea8.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:88
+#, no-c-format
+msgid ""
+"For web-based security, <literal>jboss-seam-ui.jar</literal> must also be "
+"included in the application's war file. Also, to make use of the security EL "
+"functions, <literal>SeamFaceletViewHandler</literal> must be used. Configure "
+"it in <literal>faces-config.xml</literal> like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:91
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;view-handler&gt;org.jboss.seam.ui.facelet.SeamFaceletViewHandler&lt;/"
+"view-handler&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:92
+#, no-c-format
+msgid "Authentication"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:93
+#, no-c-format
+msgid ""
+"The authentication features provided by Seam Security are built upon JAAS "
+"(Java Authentication and Authorization Service), and as such provide a "
+"robust and highly configurable API for handling user authentication. "
+"However, for less complex authentication requirements Seam offers a much "
+"more simplified method of authentication that hides the complexity of JAAS."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:96
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:97
+#, no-c-format
+msgid ""
+"The simplified authentication method uses a built-in JAAS login module, "
+"<literal>SeamLoginModule</literal>, which delegates authentication to one of "
+"your own Seam components. This login module is already configured inside "
+"Seam as part of a default application policy and as such does not require "
+"any additional configuration files. It allows you to write an authentication "
+"method using the entity classes that are provided by your own application. "
+"Configuring this simplified form of authentication requires the "
+"<literal>identity</literal> component to be configured in "
+"<literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:100
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:security=\"http://jboss.com/products/seam/security\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core http://jboss.com/"
+"products/seam/core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components http://jboss.com/"
+"products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/drools http://jboss.com/"
+"products/seam/drools-1.2.xsd\"\n"
+"                 http://jboss.com/products/seam/security http://jboss.com/"
+"products/seam/security-1.2.xsd\"&gt;                \n"
+"        \n"
+"    &lt;security:identity authenticate-method=\"#{authenticator.authenticate}"
+"\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:101
+#, no-c-format
+msgid ""
+"If you wish to use the advanced security features such as rule-based "
+"permission checks, all you need to do is include the Drools (JBoss Rules) "
+"jars in your classpath, and add some additional configuration, described "
+"later."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:104
+#, no-c-format
+msgid ""
+"The EL expression <literal>#{authenticator.authenticate}</literal> is a "
+"method binding indicating that the <literal>authenticate</literal> method of "
+"the <literal>authenticator</literal> component will be used to authenticate "
+"the user."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:107
+#, no-c-format
+msgid "Writing an authentication method"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:108
+#, no-c-format
+msgid ""
+"The <literal>authenticate-method</literal> property specified for "
+"<literal>identity</literal> in <literal>components.xml</literal> specifies "
+"which method will be used by <literal>SeamLoginModule</literal> to "
+"authenticate users. This method takes no parameters, and is expected to "
+"return a boolean indicating whether authentication is successful or not. The "
+"user's username and password can be obtained from <literal>Identity.instance"
+"().getUsername()</literal> and <literal>Identity.instance().getPassword()</"
+"literal>, respectively. Any roles that the user is a member of should be "
+"assigned using <literal>Identity.instance().addRole()</literal>. Here's a "
+"complete example of an authentication method inside a JavaBean component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:111
+#, no-c-format
+msgid ""
+"@Name(\"authenticator\")\n"
+"public class Authenticator {\n"
+"   @In EntityManager entityManager;\n"
+"   \n"
+"   public boolean authenticate() {\n"
+"      try\n"
+"      {\n"
+"         User user = (User) entityManager.createQuery(\n"
+"            \"from User where username = :username and password = :password"
+"\")\n"
+"            .setParameter(\"username\", Identity.instance().getUsername())\n"
+"            .setParameter(\"password\", Identity.instance().getPassword())\n"
+"            .getSingleResult();\n"
+"\n"
+"         if (user.getRoles() != null)\n"
+"         {\n"
+"            for (UserRole mr : user.getRoles())\n"
+"               Identity.instance().addRole(mr.getName());\n"
+"         }\n"
+"\n"
+"         return true;\n"
+"      }\n"
+"      catch (NoResultException ex)\n"
+"      {\n"
+"         FacesMessages.instance().add(\"Invalid username/password\");\n"
+"         return false;\n"
+"      }\n"
+"      \n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:112
+#, no-c-format
+msgid ""
+"In the above example, both <literal>User</literal> and <literal>UserRole</"
+"literal> are application-specific entity beans. The <literal>roles</literal> "
+"parameter is populated with the roles that the user is a member of, which "
+"should be added to the <literal>Set</literal> as literal string values, e.g. "
+"\"admin\", \"user\". In this case, if the user record is not found and a "
+"<literal>NoResultException</literal> thrown, the authentication method "
+"returns <literal>false</literal> to indicate the authentication failed."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:115
+#, no-c-format
+msgid "Writing a login form"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:116
+#, no-c-format
+msgid ""
+"The <literal>Identity</literal> component provides both <literal>username</"
+"literal> and <literal>password</literal> properties, catering for the most "
+"common authentication scenario. These properties can be bound directly to "
+"the username and password fields on a login form. Once these properties are "
+"set, calling the <literal>identity.login()</literal> method will "
+"authenticate the user using the provided credentials. Here's an example of a "
+"simple login form:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:119
+#, no-c-format
+msgid ""
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"name\" value=\"Username\"/&gt;\n"
+"    &lt;h:inputText id=\"name\" value=\"#{identity.username}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"password\" value=\"Password\"/&gt;\n"
+"    &lt;h:inputSecret id=\"password\" value=\"#{identity.password}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;div&gt;\n"
+"    &lt;h:commandButton value=\"Login\" action=\"#{identity.login}\"/&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:120
+#, no-c-format
+msgid ""
+"Similarly, logging out the user is done by calling <literal>#{identity."
+"logout}</literal>. Calling this action will clear the security state of the "
+"currently authenticated user."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:123
+#, no-c-format
+msgid "Simplified Configuration - Summary"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:124
+#, no-c-format
+msgid ""
+"So to sum up, there are the three easy steps to configure authentication:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:129
+#, no-c-format
+msgid ""
+"Configure an authentication method in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:134
+#, no-c-format
+msgid "Write an authentication method."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:139
+#, no-c-format
+msgid "Write a login form so that the user can authenticate."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:144
+#, no-c-format
+msgid "Handling Security Exceptions"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:145
+#, no-c-format
+msgid ""
+"To prevent users from receiving the default error page in response to a "
+"security error, it's recommended that <literal>pages.xml</literal> is "
+"configured to redirect security errors to a more \"pretty\" page. The two "
+"main types of exceptions thrown by the security API are:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:150
+#, no-c-format
+msgid ""
+"<literal>NotLoggedInException</literal> - This exception is thrown if the "
+"user attempts to access a restricted action or page when they are not logged "
+"in."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:155
+#, no-c-format
+msgid ""
+"<literal>AuthorizationException</literal> - This exception is only thrown if "
+"the user is already logged in, and they have attempted to access a "
+"restricted action or page for which they do not have the necessary "
+"privileges."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:160
+#, no-c-format
+msgid ""
+"In the case of a <literal>NotLoggedInException</literal>, it is recommended "
+"that the user is redirected to either a login or registration page so that "
+"they can log in. For an <literal>AuthorizationException</literal>, it may be "
+"useful to redirect the user to an error page. Here's an example of a "
+"<literal>pages.xml</literal> file that redirects both of these security "
+"exceptions:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:163
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"\n"
+"    ...\n"
+"    \n"
+"    &lt;exception class=\"org.jboss.seam.security.NotLoggedInException"
+"\"&gt;\n"
+"        &lt;redirect view-id=\"/login.xhtml\"&gt;\n"
+"            &lt;message&gt;You must be logged in to perform this action&lt;/"
+"message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"    \n"
+"    &lt;exception class=\"org.jboss.seam.security.AuthorizationException"
+"\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"        &lt;redirect view-id=\"/security_error.xhtml\"&gt;\n"
+"            &lt;message&gt;\n"
+"                You do not have the necessary security privileges to perform "
+"this action.\n"
+"            &lt;/message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"  \n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:164
+#, no-c-format
+msgid ""
+"Most web applications require even more sophisticated handling of login "
+"redirection, so Seam includes some special functionality for handling this "
+"problem."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:167
+#, no-c-format
+msgid "Login Redirection"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:168
+#, no-c-format
+msgid ""
+"You can ask Seam to redirect the user to a login screen when an "
+"unauthenticated user tries to access a particular view (or wildcarded view "
+"id) as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:171
+#, no-c-format
+msgid ""
+"&lt;pages login-view-id=\"/login.xhtml\"&gt;\n"
+"\n"
+"    &lt;page view-id=\"/members/*\" login-required=\"true\"/&gt;\n"
+"    \n"
+"    ...\n"
+"    \n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:172
+#, no-c-format
+msgid ""
+"(This is less of a blunt instrument than the exception handler shown above, "
+"but should probably be used in conjunction with it.)"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:175
+#, no-c-format
+msgid ""
+"After the user logs in, we want to automatically send them back where they "
+"came from, so they can retry the action that required logging in. If you add "
+"the following event listeners to <literal>components.xml</literal>, attempts "
+"to access a restricted view while not logged in will be remembered, so that "
+"upon the user successfully logging in they will be redirected to the "
+"originally requested view, with any page parameters that existed in the "
+"original request."
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:178
+#, no-c-format
+msgid ""
+"&lt;event type=\"org.jboss.seam.notLoggedIn\"&gt;\n"
+"    &lt;action expression=\"#{redirect.captureCurrentView}\"/&gt;\n"
+"&lt;/event&gt;\n"
+"    \n"
+"&lt;event type=\"org.jboss.seam.postAuthenticate\"&gt;\n"
+"    &lt;action expression=\"#{redirect.returnToCapturedView}\"/&gt;\n"
+"&lt;/event&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:179
+#, no-c-format
+msgid ""
+"Note that login redirection is implemented as a conversation-scoped "
+"mechanism, so don't end the conversation in your <literal>authenticate()</"
+"literal> method."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:182
+#, no-c-format
+msgid "Advanced Authentication Features"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:183
+#, no-c-format
+msgid ""
+"This section explores some of the advanced features provided by the security "
+"API for addressing more complex security requirements."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:186
+#, no-c-format
+msgid "Using your container's JAAS configuration"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:187
+#, no-c-format
+msgid ""
+"If you would rather not use the simplified JAAS configuration provided by "
+"the Seam Security API, you may instead delegate to the default system JAAS "
+"configuration by providing a <literal>jaasConfigName</literal> property in "
+"<literal>components.xml</literal>. For example, if you are using JBoss AS "
+"and wish to use the <literal>other</literal> policy (which uses the "
+"<literal>UsersRolesLoginModule</literal> login module provided by JBoss AS), "
+"then the entry in <literal>components.xml</literal> would look like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:190
+#, no-c-format
+msgid ""
+"&lt;security:identity authenticate-method=\"#{authenticator.authenticate}"
+"\" \n"
+"                      jaas-config-name=\"other\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:191
+#, no-c-format
+msgid "Authorization"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:192
+#, no-c-format
+msgid ""
+"There are a number of authorization features provided by the Seam Security "
+"API for securing access to components, component methods, and pages. This "
+"section describes each of these. An important thing to note is that if you "
+"wish to use any of the advanced features (such as rule-based permissions) "
+"then your <literal>components.xml</literal> must be configured to support "
+"this - see the Configuration section above."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:195
+#, no-c-format
+msgid "Core concepts"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:196
+#, no-c-format
+msgid ""
+"Each of the authorization mechanisms provided by the Seam Security API are "
+"built upon the concept of a user being granted roles and/or permissions. A "
+"role is a <emphasis>group</emphasis>, or <emphasis>type</emphasis>, of user "
+"that may have been granted certain privileges for performing one or more "
+"specific actions within an application. A permission on the other hand is a "
+"privilege (sometimes once-off) for performing a single, specific action. It "
+"is entirely possible to build an application using nothing but permissions, "
+"however roles offer a higher level of convenience when granting privileges "
+"to groups of users."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:199
+#, no-c-format
+msgid ""
+"Roles are simple, consisting of only a name such as \"admin\", \"user\", "
+"\"customer\", etc. Permissions consist of both a name and an action, and are "
+"represented within this documentation in the form <literal>name:action</"
+"literal>, for example <literal>customer:delete</literal>, or "
+"<literal>customer:insert</literal>."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:202
+#, no-c-format
+msgid "Securing components"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:203
+#, no-c-format
+msgid ""
+"Let's start by examining the simplest form of authorization, component "
+"security, starting with the <literal>@Restrict</literal> annotation."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:206
+#, no-c-format
+msgid "The @Restrict annotation"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:207
+#, no-c-format
+msgid ""
+"Seam components may be secured either at the method or the class level, "
+"using the <literal>@Restrict</literal> annotation. If both a method and it's "
+"declaring class are annotated with <literal>@Restrict</literal>, the method "
+"restriction will take precedence (and the class restriction will not apply). "
+"If a method invocation fails a security check, then an exception will be "
+"thrown as per the contract for <literal>Identity.checkRestriction()</"
+"literal> (see Inline Restrictions). A <literal>@Restrict</literal> on just "
+"the component class itself is equivalent to adding <literal>@Restrict</"
+"literal> to each of its methods."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:210
+#, no-c-format
+msgid ""
+"An empty <literal>@Restrict</literal> implies a permission check of "
+"<literal>componentName:methodName</literal>. Take for example the following "
+"component method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:213
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class AccountAction {\n"
+"    @Restrict public void delete() {\n"
+"      ...\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:214
+#, no-c-format
+msgid ""
+"In this example, the implied permission required to call the <literal>delete"
+"()</literal> method is <literal>account:delete</literal>. The equivalent of "
+"this would be to write <literal>@Restrict(\"#{s:hasPermission"
+"('account','delete',null)}\")</literal>. Now let's look at another example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:217
+#, no-c-format
+msgid ""
+"@Restrict @Name(\"account\")\n"
+"public class AccountAction {\n"
+"    public void insert() {\n"
+"      ...\n"
+"    }\n"
+"    @Restrict(\"#{s:hasRole('admin')}\") \n"
+"    public void delete() {\n"
+"      ...\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:218
+#, no-c-format
+msgid ""
+"This time, the component class itself is annotated with <literal>@Restrict</"
+"literal>. This means that any methods without an overriding "
+"<literal>@Restrict</literal> annotation require an implicit permission "
+"check. In the case of this example, the <literal>insert()</literal> method "
+"requires a permission of <literal>account:insert</literal>, while the "
+"<literal>delete()</literal> method requires that the user is a member of the "
+"<literal>admin</literal> role."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:221
+#, no-c-format
+msgid ""
+"Before we go any further, let's address the <literal>#{s:hasRole()}</"
+"literal> expression seen in the above example. Both <literal>s:hasRole</"
+"literal> and <literal>s:hasPermission</literal> are EL functions, which "
+"delegate to the correspondingly named methods of the <literal>Identity</"
+"literal> class. These functions can be used within any EL expression "
+"throughout the entirety of the security API."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:224
+#, no-c-format
+msgid ""
+"Being an EL expression, the value of the <literal>@Restrict</literal> "
+"annotation may reference any objects that exist within a Seam context. This "
+"is extremely useful when performing permission checks for a specific object "
+"instance. Look at this example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:227
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class AccountAction {\n"
+"    @In Account selectedAccount;\n"
+"    @Restrict(\"#{s:hasPermission('account','modify',selectedAccount)}\")\n"
+"    public void modify() {\n"
+"        selectedAccount.modify();\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:228
+#, no-c-format
+msgid ""
+"The interesting thing to note from this example is the reference to "
+"<literal>selectedAccount</literal> seen within the <literal>hasPermission()</"
+"literal> function call. The value of this variable will be looked up from "
+"within the Seam context, and passed to the <literal>hasPermission()</"
+"literal> method in <literal>Identity</literal>, which in this case can then "
+"determine if the user has the required permission for modifying the "
+"specified <literal>Account</literal> object."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:231
+#, no-c-format
+msgid "Inline restrictions"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:232
+#, no-c-format
+msgid ""
+"Sometimes it might be desirable to perform a security check in code, without "
+"using the <literal>@Restrict</literal> annotation. In this situation, simply "
+"use <literal>Identity.checkRestriction()</literal> to evaluate a security "
+"expression, like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:235
+#, no-c-format
+msgid ""
+"public void deleteCustomer() {\n"
+"    Identity.instance().checkRestriction(\"#{s:hasPermission"
+"('customer','delete',\n"
+"        selectedCustomer)}\");\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:236
+#, no-c-format
+msgid ""
+"If the expression specified doesn't evaluate to <literal>true</literal>, "
+"either"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:241
+#, no-c-format
+msgid ""
+"if the user is not logged in, a <literal>NotLoggedInException</literal> "
+"exception is thrown or"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:246
+#, no-c-format
+msgid ""
+"if the user is logged in, an <literal>AuthorizationException</literal> "
+"exception is thrown."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:251
+#, no-c-format
+msgid ""
+"It is also possible to call the <literal>hasRole()</literal> and "
+"<literal>hasPermission()</literal> methods directly from Java code:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:254
+#, no-c-format
+msgid ""
+"if (!Identity.instance().hasRole(\"admin\"))\n"
+"     throw new AuthorizationException(\"Must be admin to perform this action"
+"\");\n"
+"\n"
+"if (!Identity.instance().hasPermission(\"customer\", \"create\", null))\n"
+"     throw new AuthorizationException(\"You may not create new customers\");"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:255
+#, no-c-format
+msgid "Security in the user interface"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:256
+#, no-c-format
+msgid ""
+"One indication of a well designed user interface is that the user is not "
+"presented with options for which they don't have the necessary privileges to "
+"use. Seam Security allows conditional rendering of either 1) sections of a "
+"page or 2) individual controls, based upon the privileges of the user, using "
+"the very same EL expressions that are used for component security."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:259
+#, no-c-format
+msgid ""
+"Let's take a look at some examples of interface security. First of all, "
+"let's pretend that we have a login form that should only be rendered if the "
+"user is not already logged in. Using the <literal>identity.isLoggedIn()</"
+"literal> property, we can write this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:262
+#, no-c-format
+msgid ""
+"&lt;h:form class=\"loginForm\" rendered=\"#{not identity.loggedIn}\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:263
+#, no-c-format
+msgid ""
+"If the user isn't logged in, then the login form will be rendered - very "
+"straight forward so far. Now let's pretend there is a menu on the page that "
+"contains some actions which should only be accessible to users in the "
+"<literal>manager</literal> role. Here's one way that these could be written:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:266
+#, no-c-format
+msgid ""
+"&lt;h:outputLink action=\"#{reports.listManagerReports}\" rendered=\"#{s:"
+"hasRole('manager')}\"&gt;\n"
+"    Manager Reports\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:267
+#, no-c-format
+msgid ""
+"This is also quite straight forward. If the user is not a member of the "
+"<literal>manager</literal> role, then the outputLink will not be rendered. "
+"The <literal>rendered</literal> attribute can generally be used on the "
+"control itself, or on a surrounding <literal>&lt;s:div&gt;</literal> or "
+"<literal>&lt;s:span&gt;</literal> control."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:270
+#, no-c-format
+msgid ""
+"Now for something more complex. Let's say you have a <literal>h:dataTable</"
+"literal> control on a page listing records for which you may or may not wish "
+"to render action links depending on the user's privileges. The <literal>s:"
+"hasPermission</literal> EL function allows us to pass in an object parameter "
+"which can be used to determine whether the user has the requested permission "
+"for that object or not. Here's how a dataTable with secured links might look:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:273
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{clients}\" var=\"cl\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Name&lt;/f:facet&gt;\n"
+"        #{cl.name}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;City&lt;/f:facet&gt;\n"
+"        #{cl.city}\n"
+"    &lt;/h:column&gt;   \n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"        &lt;s:link value=\"Modify Client\" action=\"#{clientAction.modify}"
+"\"\n"
+"                rendered=\"#{s:hasPermission('client','modify',cl)\"/&gt;\n"
+"        &lt;s:link value=\"Delete Client\" action=\"#{clientAction.delete}"
+"\"\n"
+"                rendered=\"#{s:hasPermission('client','delete',cl)\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:274
+#, no-c-format
+msgid "Securing pages"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:275
+#, no-c-format
+msgid ""
+"Page security requires that the application is using a <literal>pages.xml</"
+"literal> file, however is extremely simple to configure. Simply include a "
+"<literal>&lt;restrict/&gt;</literal> element within the <literal>page</"
+"literal> elements that you wish to secure. By default, if a value is not "
+"provided for the <literal>restrict</literal> element, an implied permission "
+"of <literal>{viewId}:render</literal> will be checked for whenever accessing "
+"that page. Otherwise the value will be evaluated as a standard security "
+"expression. Here's a couple of examples:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:278
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/settings.xhtml\"&gt;\n"
+"    &lt;restrict/&gt;\n"
+"&lt;/page&gt;\n"
+"        \n"
+"&lt;page view-id=\"/reports.xhtml\"&gt;    \n"
+"    &lt;restrict&gt;#{s:hasRole('admin')}&lt;/restrict&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:279
+#, no-c-format
+msgid ""
+"In the above example, the first page has an implied permission restriction "
+"of <literal>/settings.xhtml:render</literal>, while the second one checks "
+"that the user is a member of the <literal>admin</literal> role."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:282
+#, no-c-format
+msgid "Securing Entities"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:283
+#, no-c-format
+msgid ""
+"Seam security also makes it possible to apply security restrictions to read, "
+"insert, update and delete actions for entities."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:286
+#, no-c-format
+msgid ""
+"To secure all actions for an entity class, add a <literal>@Restrict</"
+"literal> annotation on the class itself:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:289
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"customer\")\n"
+"@Restrict\n"
+"public class Customer {\n"
+"  ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:290
+#, no-c-format
+msgid ""
+"If no expression is specified in the <literal>@Restrict</literal> "
+"annotation, the default security check that is performed is a permission "
+"check of <literal>entityName:action</literal>, where <literal>entityName</"
+"literal> is the name of the entity (or the class name if no @Name is "
+"specified), and the <literal>action</literal> is either <literal>read</"
+"literal>, <literal>insert</literal>, <literal>update</literal> or "
+"<literal>delete</literal>."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:293
+#, no-c-format
+msgid ""
+"It is also possible to only restrict certain actions, by placing a "
+"<literal>@Restrict</literal> annotation on the relevent entity lifecycle "
+"method (annotated as follows):"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:298
+#, no-c-format
+msgid ""
+"<literal>@PostLoad</literal> - Called after an entity instance is loaded "
+"from the database. Use this method to configure a <literal>read</literal> "
+"permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:303
+#, no-c-format
+msgid ""
+"<literal>@PrePersist</literal> - Called before a new instance of the entity "
+"is inserted. Use this method to configure an <literal>insert</literal> "
+"permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:308
+#, no-c-format
+msgid ""
+"<literal>@PreUpdate</literal> - Called before an entity is updated. Use this "
+"method to configure an <literal>update</literal> permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:313
+#, no-c-format
+msgid ""
+"<literal>@PreRemove</literal> - Called before an entity is deleted. Use this "
+"method to configure a <literal>delete</literal> permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:318
+#, no-c-format
+msgid ""
+"Here's an example of how an entity would be configured to perform a security "
+"check for any <literal>insert</literal> operations. Please note that the "
+"method is not required to do anything, the only important thing in regard to "
+"security is how it is annotated:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:321
+#, no-c-format
+msgid ""
+"@PrePersist @Restrict\n"
+"  public void prePersist() {}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:322
+#, no-c-format
+msgid ""
+"And here's an example of an entity permission rule that checks if the "
+"authenticated user is allowed to create a new blog entry (from the seamspace "
+"example):"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:325
+#, no-c-format
+msgid ""
+"rule InsertMemberBlog\n"
+"  no-loop\n"
+"  activation-group \"permissions\"\n"
+"when\n"
+"  c: PermissionCheck(name == \"memberBlog\", action == \"insert\", granted "
+"== false)\n"
+"  Principal(nm : name)\n"
+"  MemberBlog(mbr : member -&gt; (mbr.getUsername().equals(nm)))\n"
+"then\n"
+"  c.grant();\n"
+"  modify(c);\n"
+"end;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:326
+#, no-c-format
+msgid ""
+"Finally, we need to install a listener class that integrates Seam security "
+"with your JPA provider."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:329
+#, no-c-format
+msgid "Entity security with JPA"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:330
+#, no-c-format
+msgid ""
+"Security checks for EJB3 entity beans are performed with an "
+"<literal>EntityListener</literal>. You can install this listener by using "
+"the following <literal>META-INF/orm.xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:333
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;entity-mappings xmlns=\"http://java.sun.com/xml/ns/persistence/orm\"\n"
+"                 xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"                 xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence/"
+"orm \n"
+"                 http://java.sun.com/xml/ns/persistence/orm_1_0.xsd\"\n"
+"                 version=\"1.0\"&gt;\n"
+"                 \n"
+"    &lt;persistence-unit-metadata&gt;\n"
+"        &lt;persistence-unit-defaults&gt;\n"
+"            &lt;entity-listeners&gt;\n"
+"                &lt;entity-listener class=\"org.jboss.seam.security."
+"EntitySecurityListener\"/&gt;\n"
+"            &lt;/entity-listeners&gt;\n"
+"        &lt;/persistence-unit-defaults&gt;\n"
+"    &lt;/persistence-unit-metadata&gt;\n"
+"    \n"
+"&lt;/entity-mappings&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:334
+#, no-c-format
+msgid "Entity security with Hibernate"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:335
+#, no-c-format
+msgid ""
+"If you are using a Hibernate <literal>SessionFactory</literal> configured "
+"via Seam, you don't need to do anything special to use entity security."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:338
+#, no-c-format
+msgid "Writing Security Rules"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:339
+#, no-c-format
+msgid ""
+"Up to this point there has been a lot of mention of permissions, but no "
+"information about how permissions are actually defined or granted. This "
+"section completes the picture, by explaining how permission checks are "
+"processed, and how to implement permission checks for a Seam application."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:342
+#, no-c-format
+msgid "Permissions Overview"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:343
+#, no-c-format
+msgid ""
+"So how does the security API know whether a user has the <literal>customer:"
+"modify</literal> permission for a specific customer? Seam Security provides "
+"quite a novel method for determining user permissions, based on JBoss Rules. "
+"A couple of the advantages of using a rule engine are 1) a centralized "
+"location for the business logic that is behind each user permission, and 2) "
+"speed - JBoss Rules uses very efficient algorithms for evaluating large "
+"numbers of complex rules involving multiple conditions."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:346
+#, no-c-format
+msgid "Configuring a rules file"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:347
+#, no-c-format
+msgid ""
+"Seam Security expects to find a <literal>RuleBase</literal> component called "
+"<literal>securityRules</literal> which it uses to evaluate permission "
+"checks. This is configured in <literal>components.xml</literal> as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:350
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:security=\"http://jboss.com/products/seam/security\"\n"
+"            xmlns:drools=\"http://jboss.com/products/seam/drools\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                     http://jboss.com/products/seam/core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components  \n"
+"                     http://jboss.com/products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/drools \n"
+"                     http://jboss.com/products/seam/drools-1.2.xsd\"\n"
+"                 http://jboss.com/products/seam/security \n"
+"                     http://jboss.com/products/seam/security-1.2.xsd"
+"\"&gt;                 \n"
+"        \n"
+"   &lt;drools:rule-base name=\"securityRules\"&gt;\n"
+"       &lt;drools:rule-files&gt;\n"
+"           &lt;value&gt;/META-INF/security.drl&lt;/value&gt;\n"
+"       &lt;/drools:rule-files&gt;\n"
+"   &lt;/drools:rule-base&gt;    \n"
+"   \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:351
+#, no-c-format
+msgid ""
+"Once the <literal>RuleBase</literal> component is configured, it's time to "
+"write the security rules."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:354
+#, no-c-format
+msgid "Creating a security rules file"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:355
+#, no-c-format
+msgid ""
+"For this step you need to create a file called <literal>security.drl</"
+"literal> in the <literal>/META-INF</literal> directory of your application's "
+"jar file. In actual fact this file can be called anything you want, and "
+"exist in any location as long as it is configured appropriately in "
+"<literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:358
+#, no-c-format
+msgid ""
+"So what should the security rules file contain? At this stage it might be a "
+"good idea to at least skim through the JBoss Rules documentation, however to "
+"get started here's an extremely simple example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:361
+#, no-c-format
+msgid ""
+"package MyApplicationPermissions;\n"
+"\n"
+"import org.jboss.seam.security.PermissionCheck;\n"
+"import org.jboss.seam.security.Role;\n"
+"\n"
+"rule CanUserDeleteCustomers\n"
+"when\n"
+"  c: PermissionCheck(name == \"customer\", action == \"delete\")\n"
+"  Role(name == \"admin\")\n"
+"then\n"
+"  c.grant();\n"
+"end;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:362
+#, no-c-format
+msgid ""
+"Let's break this down. The first thing we see is the package declaration. A "
+"package in JBoss Rules is essentially a collection of rules. The package "
+"name can be anything you want - it doesn't relate to anything else outside "
+"the scope of the rule base."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:365
+#, no-c-format
+msgid ""
+"The next thing we can notice is a couple of import statements for the "
+"<literal>PermissionCheck</literal> and <literal>Role</literal> classes. "
+"These imports inform the rules engine that we'll be referencing these "
+"classes within our rules."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:368
+#, no-c-format
+msgid ""
+"Finally we have the code for the rule. Each rule within a package should be "
+"given a unique name (usually describing the purpose of the rule). In this "
+"case our rule is called <literal>CanUserDeleteCustomers</literal> and will "
+"be used to check whether a user is allowed to delete a customer record."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:371
+#, no-c-format
+msgid ""
+"Looking at the body of the rule definition we can notice two distinct "
+"sections. Rules have what is known as a left hand side (LHS) and a right "
+"hand side (RHS). The LHS consists of the conditional part of the rule, i.e. "
+"a list of conditions which must be satisfied for the rule to fire. The LHS "
+"is represented by the <literal>when</literal> section. The RHS is the "
+"consequence, or action section of the rule that will only be fired if all of "
+"the conditions in the LHS are met. The RHS is represented by the "
+"<literal>then</literal> section. The end of the rule is denoted by the "
+"<literal>end;</literal> line."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:374
+#, no-c-format
+msgid ""
+"If we look at the LHS of the rule, we see two conditions listed there. Let's "
+"examine the first condition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:377
+#, no-c-format
+msgid "c: PermissionCheck(name == \"customer\", action == \"delete\")"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:378
+#, no-c-format
+msgid ""
+"In plain english, this condition is stating that there must exist a "
+"<literal>PermissionCheck</literal> object with a <literal>name</literal> "
+"property equal to \"customer\", and an <literal>action</literal> property "
+"equal to \"delete\" within the working memory. What is the working memory? "
+"It is a session-scoped object that contains the contextual information that "
+"is required by the rules engine to make a decision about a permission check. "
+"Each time the <literal>hasPermission()</literal> method is called, a "
+"temporary <literal>PermissionCheck</literal> object, or <emphasis>Fact</"
+"emphasis>, is asserted into the working memory. This "
+"<literal>PermissionCheck</literal> corresponds exactly to the permission "
+"that is being checked, so for example if you call <literal>hasPermission"
+"(\"account\", \"create\", null)</literal> then a <literal>PermissionCheck</"
+"literal> object with a <literal>name</literal> equal to \"account\" and "
+"<literal>action</literal> equal to \"create\" will be asserted into the "
+"working memory for the duration of the permission check."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:381
+#, no-c-format
+msgid ""
+"So what else is in the working memory? Besides the short-lived temporary "
+"facts asserted during a permission check, there are some longer-lived "
+"objects in the working memory that stay there for the entire duration of a "
+"user being authenticated. These include any <literal>java.security."
+"Principal</literal> objects that are created as part of the authentication "
+"process, plus a <literal>org.jboss.seam.security.Role</literal> object for "
+"each of the roles that the user is a member of. It is also possible to "
+"assert additional long-lived facts into the working memory by calling "
+"<literal>Identity.instance().getSecurityContext().assertObject()</literal>, "
+"passing the object as a parameter."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:384
+#, no-c-format
+msgid ""
+"Getting back to our simple example, we can also notice that the first line "
+"of our LHS is prefixed with <literal>c:</literal>. This is a variable "
+"binding, and is used to refer back to the object that is matched by the "
+"condition. Moving onto the second line of our LHS, we see this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:387
+#, no-c-format
+msgid "Role(name == \"admin\")"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:388
+#, no-c-format
+msgid ""
+"This condition simply states that there must be a <literal>Role</literal> "
+"object with a <literal>name</literal> of \"admin\" within the working "
+"memory. As mentioned, user roles are asserted into the working memory as "
+"long-lived facts. So, putting both conditions together, this rule is "
+"essentially saying \"I will fire if you are checking for the "
+"<literal>customer:delete</literal> permission and the user is a member of "
+"the <literal>admin</literal> role\"."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:391
+#, no-c-format
+msgid ""
+"So what is the consequence of the rule firing? Let's take a look at the RHS "
+"of the rule:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:394
+#, no-c-format
+msgid "c.grant()"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:395
+#, no-c-format
+msgid ""
+"The RHS consists of Java code, and in this case is invoking the "
+"<literal>grant()</literal> method of the <literal>c</literal> object, which "
+"as already mentioned is a variable binding for the <literal>PermissionCheck</"
+"literal> object. Besides the <literal>name</literal> and <literal>action</"
+"literal> properties of the <literal>PermissionCheck</literal> object, there "
+"is also a <literal>granted</literal> property which is initially set to "
+"<literal>false</literal>. Calling <literal>grant()</literal> on a "
+"<literal>PermissionCheck</literal> sets the <literal>granted</literal> "
+"property to <literal>true</literal>, which means that the permission check "
+"was successful, allowing the user to carry out whatever action the "
+"permission check was intended for."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:398
+#, no-c-format
+msgid "SSL Security"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:399
+#, no-c-format
+msgid ""
+"Seam includes basic support for serving sensitive pages via the HTTPS "
+"protocol. This is easily configured by specifying a <literal>scheme</"
+"literal> for the page in <literal>pages.xml</literal>. The following example "
+"shows how the view <literal>/login.xhtml</literal> is configured to use "
+"HTTPS:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:402
+#, no-c-format
+msgid "&lt;page view-id=\"/login.xhtml\" scheme=\"https\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:403
+#, no-c-format
+msgid ""
+"This configuration is automatically extended to both <literal>s:link</"
+"literal> and <literal>s:button</literal> JSF controls, which (when "
+"specifying the <literal>view</literal>) will also render the link using the "
+"correct protocol. Based on the previous example, the following link will use "
+"the HTTPS protocol because <literal>/login.xhtml</literal> is configured to "
+"use it:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:406
+#, no-c-format
+msgid "&lt;s:link view=\"/login.xhtml\" value=\"Login\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:407
+#, no-c-format
+msgid ""
+"Browsing directly to a view when using the <emphasis>incorrect</emphasis> "
+"protocol will cause a redirect to the same view using the <emphasis>correct</"
+"emphasis> protocol. For example, browsing to a page that has <literal>scheme="
+"\"https\"</literal> using HTTP will cause a redirect to the same page using "
+"HTTPS."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:410
+#, no-c-format
+msgid ""
+"It is also possible to configure a default <literal>scheme</literal> for all "
+"pages. This is actually quite important, as you might only wish to use HTTPS "
+"for a few pages, and if no default scheme is specified then the default "
+"behavior is to continue using the current scheme. What this means is that "
+"once you enter a page with HTTPS, then HTTPS will continue to be used even "
+"if you navigate away to other non-HTTPS pages (a bad thing!). So it is "
+"strongly recommended to include a default <literal>scheme</literal>, by "
+"configuring it on the default (<literal>\"*\"</literal>) view:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:413
+#, no-c-format
+msgid "&lt;page view-id=\"*\" scheme=\"http\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:414
+#, no-c-format
+msgid ""
+"Of course, if <emphasis>none</emphasis> of the pages in your application use "
+"HTTPS then it is not required to specify a default scheme."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:417
+#, no-c-format
+msgid "Implementing a Captcha Test"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:418
+#, no-c-format
+msgid ""
+"Though strictly not part of the security API, it might be useful in certain "
+"circumstances (such as new user registrations, posting to a public blog or "
+"forum) to implement a Captcha (<emphasis>C</emphasis>ompletely <emphasis>A</"
+"emphasis>utomated <emphasis>P</emphasis>ublic <emphasis>T</emphasis>uring "
+"test to tell <emphasis>C</emphasis>omputers and <emphasis>H</emphasis>umans "
+"<emphasis>A</emphasis>part) to prevent automated bots from interacting with "
+"your application. Seam provides seamless integration with JCaptcha, an "
+"excellent library for generating Captcha challenges. If you wish to use the "
+"captcha feature in your application you need to include the jcaptcha-* jar "
+"file from the Seam lib directory in your project, and register it in "
+"<literal>application.xml</literal> as a java module."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:421
+#, no-c-format
+msgid "Configuring the Captcha Servlet"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:422
+#, no-c-format
+msgid ""
+"To get up and running, it is necessary to configure the Seam Resource "
+"Servlet, which will provide the Captcha challenge images to your pages. This "
+"requires the following entry in <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:425
+#, no-c-format
+msgid ""
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"    \n"
+"&lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:426
+#, no-c-format
+msgid "Adding a Captcha to a page"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:427
+#, no-c-format
+msgid ""
+"Adding a captcha challenge to a page is extremely easy. Seam provides a page-"
+"scoped component, <literal>captcha</literal>, which provides everything that "
+"is required, including built-in captcha validation. Here's an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:430
+#, no-c-format
+msgid ""
+"&lt;div&gt;\n"
+"    &lt;h:graphicImage value=\"/seam/resource/captcha?#{captcha.id}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"  \n"
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"verifyCaptcha\"&gt;Enter the above letters&lt;/h:"
+"outputLabel&gt;\n"
+"    &lt;h:inputText id=\"verifyCaptcha\" value=\"#{captcha.response}\" "
+"required=\"true\"/&gt;\n"
+"    &lt;div class=\"validationError\"&gt;&lt;h:message for=\"verifyCaptcha\"/"
+"&gt;&lt;/div&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:431
+#, no-c-format
+msgid ""
+"That's all there is to it. The <literal>graphicImage</literal> control "
+"displays the Captcha challenge, and the <literal>inputText</literal> "
+"receives the user's response. The response is automatically validated "
+"against the Captcha when the form is submitted."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Spring.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Spring.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Spring.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,416 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Spring.xml:10
+#, no-c-format
+msgid "Spring Framework integration"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:11
+#, no-c-format
+msgid ""
+"The Spring integration module allows easy migration of Spring-based projects "
+"to Seam and allows Spring applications to take advantage of key Seam "
+"features like conversations and Seam's more sophisticated persistence "
+"context management."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:14
+#, no-c-format
+msgid "Seam's support for Spring provides the ability to:"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:19
+#, no-c-format
+msgid "inject Seam component instances into Spring beans"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:24
+#, no-c-format
+msgid "inject Spring beans into Seam components"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:29
+#, no-c-format
+msgid "turn Spring beans into Seam components"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:34
+#, no-c-format
+msgid "allow Spring beans to live in any Seam context"
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:40
+#, no-c-format
+msgid "Injecting Seam components into Spring beans"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:41
+#, no-c-format
+msgid ""
+"Injecting Seam component instances into Spring beans is accomplished using "
+"the <literal>&lt;seam:instance/&gt;</literal> namespace handler. To enable "
+"the Seam namespace handler, the Seam namespace must be added to the Spring "
+"beans definition file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:44
+#, no-c-format
+msgid ""
+"&lt;beans xmlns=\"http://www.springframework.org/schema/beans\"\n"
+"    xmlns:seam=\"http://jboss.com/products/seam/spring\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://www.springframework.org/schema/beans \n"
+"                        http://www.springframework.org/schema/beans/spring-"
+"beans-2.0.xsd\n"
+"                        http://jboss.com/products/seam/spring \n"
+"                        http://jboss.com/products/seam/spring-1.2.xsd\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:45
+#, no-c-format
+msgid "Now any Seam component may be injected into any Spring bean:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:48
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\"&gt;\n"
+"        &lt;seam:instance name=\"someComponent\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:49
+#, no-c-format
+msgid "An EL expression may be used instead of a component name:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:52
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\"&gt;\n"
+"        &lt;seam:instance name=\"#{someExpression}\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:53
+#, no-c-format
+msgid ""
+"Seam component instances may even be made available for injection into "
+"Spring beans by a Spring bean id."
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:56
+#, no-c-format
+msgid ""
+"&lt;seam:instance name=\"someComponent\" id=\"someSeamComponentInstance\"/"
+"&gt;\n"
+"\n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\" ref=\"someSeamComponentInstance"
+"\"&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:57
+#, no-c-format
+msgid "Now for the caveat!"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:60
+#, no-c-format
+msgid ""
+"Seam was designed from the ground up to support a stateful component model "
+"with multiple contexts. Spring was not. Unlike Seam bijection, Spring "
+"injection does not occur at method invocation time. Instead, injection "
+"happens only when the Spring bean is instantiated. So the instance available "
+"when the bean is instantiated will be the same instance that the bean uses "
+"for the entire life of the bean. For example, if a Seam "
+"<literal>CONVERSATION</literal>-scoped component instance is directly "
+"injected into a singleton Spring bean, that singleton will hold a reference "
+"to the same instance long after the conversation is over! We call this "
+"problem <emphasis>scope impedance</emphasis>. Seam bijection ensures that "
+"scope impedance is maintained naturally as an invocation flows through the "
+"system. In Spring, we need to inject a proxy of the Seam component, and "
+"resolve the reference when the proxy is invoked."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:63
+#, no-c-format
+msgid ""
+"The <literal>&lt;seam:instance/&gt;</literal> tag lets us automatically "
+"proxy the Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:66
+#, no-c-format
+msgid ""
+"&lt;seam:instance id=\"seamManagedEM\" name=\"someManagedEMComponent\" proxy="
+"\"true\"/&gt;\n"
+"        \n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\"&gt;\n"
+"    &lt;property name=\"entityManager\" ref=\"seamManagedEM\"&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:67
+#, no-c-format
+msgid ""
+"This example shows one way to use a Seam-managed persistence context from a "
+"Spring bean. (A more robust way to use Seam-managed persistence contexts as "
+"a replacement for the Spring <literal>OpenEntityManagerInView</literal> "
+"filter will be provided in a future release)"
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:73
+#, no-c-format
+msgid "Injecting Spring beans into Seam components"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:74
+#, no-c-format
+msgid ""
+"It is even easier to inject Spring beans into Seam component instances. "
+"Actually, there are two possible approaches:"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:79
+#, no-c-format
+msgid "inject a Spring bean using an EL expression"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:84
+#, no-c-format
+msgid "make the Spring bean a Seam component"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:89
+#, no-c-format
+msgid ""
+"We'll discuss the second option in the next section. The easiest approach is "
+"to access the Spring beans via EL."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:92
+#, no-c-format
+msgid ""
+"The Spring <literal>DelegatingVariableResolver</literal> is an integration "
+"point Spring provides for integrating Spring with JSF. This "
+"<literal>VariableResolver</literal> makes all Spring beans available in EL "
+"by their bean id. You'll need to add the "
+"<literal>DelegatingVariableResolver</literal> to <literal>faces-config.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:95
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;variable-resolver&gt;\n"
+"        org.springframework.web.jsf.DelegatingVariableResolver\n"
+"    &lt;/variable-resolver&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:96
+#, no-c-format
+msgid "Then you can inject Spring beans using <literal>@In</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:99
+#, no-c-format
+msgid ""
+"@In(\"#{bookingService}\")\n"
+"private BookingService bookingService;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:100
+#, no-c-format
+msgid ""
+"The use of Spring beans in EL is not limited to injection. Spring beans may "
+"be used anywhere that EL expressions are used in Seam: process and pageflow "
+"definitions, working memory assertions, etc..."
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:106
+#, no-c-format
+msgid "Making a Spring bean into a Seam component"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:107
+#, no-c-format
+msgid ""
+"The <literal>&lt;seam:component/&gt;</literal> namespace handler can be used "
+"to make any Spring bean a Seam component. Just place the <literal>&lt;seam:"
+"component/&gt;</literal> tag within the declaration of the bean that you "
+"wish to be a Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:110
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;seam:component/&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:111
+#, no-c-format
+msgid ""
+"By default, <literal>&lt;seam:component/&gt;</literal> will create a "
+"<literal>STATELESS</literal> Seam component with class and name provided in "
+"the bean definition. Occasionally, such as when a <literal>FactoryBean</"
+"literal> is used, the class of the Spring bean may not be the class "
+"appearing in the bean definition. In such cases the <literal>beanClass</"
+"literal> should be explicitly specified. A Seam component name may be "
+"explicitly specified in cases where there is potential for a naming conflict."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:114
+#, no-c-format
+msgid ""
+"The <literal>scope</literal> attribute of <literal>&lt;seam:component/&gt;</"
+"literal> may be used if you wish the Spring bean to be managed in a "
+"particular Seam scope. The Spring bean must be scoped to <literal>prototype</"
+"literal> if the Seam scope specified is anything other than "
+"<literal>STATELESS</literal>. Pre-existing Spring beans usually have a "
+"fundamentally stateless character, so this attribute is not usually needed."
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:120
+#, no-c-format
+msgid "Seam-scoped Spring beans"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:121
+#, no-c-format
+msgid ""
+"The Seam integration package also lets you use Seam's contexts as Spring 2.0 "
+"style custom scopes. This lets you declare any Spring bean in any of Seam's "
+"contexts. However, note once again that Spring's component model was never "
+"architected to support statefulness, so please use this feature with great "
+"care. In particular, clustering of session or conversation scoped Spring "
+"beans is deeply problematic, and care must be taken when injecting a bean or "
+"component from a wider scope into a bean of a narrower scope."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:124
+#, no-c-format
+msgid ""
+"By specifying <literal>&lt;seam:configure-scopes/&gt;</literal> once in a "
+"Spring bean factory configuration, all of the Seam scopes will be available "
+"to Spring beans as custom scopes. To associate a Spring bean with a "
+"particular Seam scope, specify the Seam scope in the <literal>scope</"
+"literal> attribute of the bean definition."
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:127
+#, no-c-format
+msgid ""
+"&lt;!-- Only needs to be specified once per bean factory--&gt;\n"
+"&lt;seam:configure-scopes/&gt;\n"
+"\n"
+"...\n"
+"\n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope=\"seam."
+"CONVERSATION\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:128
+#, no-c-format
+msgid ""
+"The prefix of the scope name may be changed by specifying the "
+"<literal>prefix</literal> attribute in the <literal>configure-scopes</"
+"literal> definition. (The default prefix is <literal>seam.</literal>)"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:131
+#, no-c-format
+msgid ""
+"Seam-scoped Spring beans defined this way can be injected into other Spring "
+"beans without the use of <literal>&lt;seam:instance/&gt;</literal>. However, "
+"care must be taken to ensure scope impedance is maintained. The normal "
+"approach used in Spring is to specify <literal>&lt;aop:scoped-proxy/&gt;</"
+"literal> in the bean definition. However, Seam-scoped Spring beans are "
+"<emphasis>not</emphasis> compatible with <literal>&lt;aop:scoped-proxy/&gt;</"
+"literal>. So if you need to inject a Seam-scoped Spring bean into a "
+"singleton, <literal>&lt;seam:instance/&gt;</literal> must be used:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:134
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope=\"seam."
+"CONVERSATION\"/&gt;\n"
+"\n"
+"...\n"
+"\n"
+"&lt;bean id=\"someSingleton\"&gt;\n"
+"    &lt;property name=\"someSeamScopedSpringBean\"&gt;\n"
+"        &lt;seam:instance name=\"someSpringBean\" proxy=\"true\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Testing.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Testing.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Testing.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,342 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Testing.xml:10
+#, no-c-format
+msgid "Testing Seam applications"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:11
+#, no-c-format
+msgid ""
+"Most Seam applications will need at least two kinds of automated tests: "
+"<emphasis>unit tests</emphasis>, which test a particular Seam component in "
+"isolation, and scripted <emphasis>integration tests</emphasis> which "
+"exercise all Java layers of the application (that is, everything except the "
+"view pages)."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:14
+#, no-c-format
+msgid "Both kinds of tests are very easy to write."
+msgstr ""
+
+#. Tag: title
+#: Testing.xml:18
+#, no-c-format
+msgid "Unit testing Seam components"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:19
+#, no-c-format
+msgid ""
+"All Seam components are POJOs. This is a great place to start if you want "
+"easy unit testing. And since Seam emphasises the use of bijection for inter-"
+"component interactions and access to contextual objects, it's very easy to "
+"test a Seam component outside of its normal runtime environment."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:22
+#, no-c-format
+msgid "Consider the following Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:25
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Scope(EVENT)\n"
+"@Name(\"register\")\n"
+"public class RegisterAction implements Register\n"
+"{\n"
+"   private User user;\n"
+"   private EntityManager em;\n"
+"\n"
+"   @In\n"
+"   public void setUser(User user) {\n"
+"       this.user = user;\n"
+"   }\n"
+"   \n"
+"   @PersistenceContext\n"
+"   public void setBookingDatabase(EntityManager em) {\n"
+"       this.em = em;\n"
+"   }\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = em.createQuery(\"select username from User where "
+"username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getResultList();\n"
+"      if (existing.size()==0)\n"
+"      {\n"
+"         em.persist(user);\n"
+"         return \"success\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:26
+#, no-c-format
+msgid "We could write a TestNG test for this component as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:29
+#, no-c-format
+msgid ""
+"public class RegisterActionTest\n"
+"{\n"
+"\n"
+"    @Test\n"
+"    public testRegisterAction()\n"
+"    {\n"
+"        EntityManager em = getEntityManagerFactory().createEntityManager();\n"
+"        em.getTransaction().begin();\n"
+"        \n"
+"        User gavin = new User();\n"
+"        gavin.setName(\"Gavin King\");\n"
+"        gavin.setUserName(\"1ovthafew\");\n"
+"        gavin.setPassword(\"secret\");\n"
+"        \n"
+"        RegisterAction action = new RegisterAction();\n"
+"        action.setUser(gavin);\n"
+"        action.setBookingDatabase(em);\n"
+"        \n"
+"        assert \"success\".equals( action.register() );\n"
+"        \n"
+"        em.getTransaction().commit();\n"
+"        em.close();\n"
+"    }\n"
+"    \n"
+"    \n"
+"    private EntityManagerFactory emf;\n"
+"    \n"
+"    public EntityManagerFactory getEntityManagerFactory()\n"
+"    {\n"
+"        return emf;\n"
+"    }\n"
+"    \n"
+"    @Configuration(beforeTestClass=true)\n"
+"    public void init() \n"
+"    {\n"
+"        emf = Persistence.createEntityManagerFactory"
+"(\"myResourceLocalEntityManager\");\n"
+"    }\n"
+"    \n"
+"    @Configuration(afterTestClass=true)\n"
+"    public void destroy()\n"
+"    {\n"
+"        emf.close();\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:30
+#, no-c-format
+msgid ""
+"Seam components don't usually depend directly upon container infrastructure, "
+"so most unit testing as as easy as that!"
+msgstr ""
+
+#. Tag: title
+#: Testing.xml:36
+#, no-c-format
+msgid "Integration testing Seam applications"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:37
+#, no-c-format
+msgid ""
+"Integration testing is slightly more difficult. In this case, we can't "
+"eliminate the container infrastructure; indeed, that is part of what is "
+"being tested! At the same time, we don't want to be forced to deploy our "
+"application to an application server to run the automated tests. We need to "
+"be able to reproduce just enough of the container infrastructure inside our "
+"testing environment to be able to exercise the whole application, without "
+"hurting performance too much."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:40
+#, no-c-format
+msgid ""
+"A second problem is emulating user interactions. A third problem is where to "
+"put our assertions. Some test frameworks let us test the whole application "
+"by reproducing user interactions with the web browser. These frameworks have "
+"their place, but they are not appropriate for use at development time."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:43
+#, no-c-format
+msgid ""
+"The approach taken by Seam is to let you write tests that script your "
+"components while running inside a pruned down container environment (Seam, "
+"together with the JBoss Embeddable EJB container). The role of the test "
+"script is basically to reproduce the interaction between the view and the "
+"Seam components. In other words, you get to pretend you are the JSF "
+"implementation!"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:46
+#, no-c-format
+msgid "This approach tests everything except the view."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:49
+#, no-c-format
+msgid "Let's consider a JSP view for the component we unit tested above:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:52
+#, no-c-format
+msgid ""
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Register New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;table border=\"0\"&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Username&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputText value=\"#{user.username}\"/&gt;&lt;/"
+"td&gt;\n"
+"       &lt;/tr&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Real Name&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputText value=\"#{user.name}\"/&gt;&lt;/td&gt;\n"
+"       &lt;/tr&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Password&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputSecret value=\"#{user.password}\"/&gt;&lt;/"
+"td&gt;\n"
+"       &lt;/tr&gt;\n"
+"     &lt;/table&gt;\n"
+"     &lt;h:messages/&gt;\n"
+"     &lt;h:commandButton type=\"submit\" value=\"Register\" action=\"#"
+"{register.register}\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:53
+#, no-c-format
+msgid ""
+"We want to test the registration functionality of our application (the stuff "
+"that happens when the user clicks the Register button). We'll reproduce the "
+"JSF request lifecycle in an automated TestNG test:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:56
+#, no-c-format
+msgid ""
+"public class RegisterTest extends SeamTest\n"
+"{\n"
+"   \n"
+"   @Test\n"
+"   public void testRegister() throws Exception\n"
+"   {\n"
+"            \n"
+"      new FacesRequest() {\n"
+"\n"
+"         @Override\n"
+"         protected void processValidations() throws Exception\n"
+"         {\n"
+"            validateValue(\"#{user.username}\", \"1ovthafew\");\n"
+"            validateValue(\"#{user.name}\", \"Gavin King\");\n"
+"            validateValue(\"#{user.password}\", \"secret\");\n"
+"            assert !isValidationFailure();\n"
+"         }\n"
+"         \n"
+"         @Override\n"
+"         protected void updateModelValues() throws Exception\n"
+"         {\n"
+"            setValue(\"#{user.username}\", \"1ovthafew\");\n"
+"            setValue(\"#{user.name}\", \"Gavin King\");\n"
+"            setValue(\"#{user.password}\", \"secret\");\n"
+"         }\n"
+"\n"
+"         @Override\n"
+"         protected void invokeApplication()\n"
+"         {\n"
+"            assert invokeMethod(\"#{register.register}\").equals(\"success"
+"\");\n"
+"         }\n"
+"\n"
+"         @Override\n"
+"         protected void renderResponse()\n"
+"         {\n"
+"            assert getValue(\"#{user.username}\").equals(\"1ovthafew\");\n"
+"            assert getValue(\"#{user.name}\").equals(\"Gavin King\");\n"
+"            assert getValue(\"#{user.password}\").equals(\"secret\");\n"
+"         }\n"
+"         \n"
+"      }.run();\n"
+"      \n"
+"   }\n"
+"\n"
+"   ...\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:57
+#, no-c-format
+msgid ""
+"Notice that we've extended <literal>SeamTest</literal>, which provides a "
+"Seam environment for our components, and written our test script as an "
+"anonymous class that extends <literal>SeamTest.FacesRequest</literal>, which "
+"provides an emulated JSF request lifecycle. (There is also a "
+"<literal>SeamTest.NonFacesRequest</literal> for testing GET requests.) We've "
+"written our code in methods which are named for the various JSF phases, to "
+"emulate the calls that JSF would make to our components. Then we've thrown "
+"in various assertions."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:60
+#, no-c-format
+msgid ""
+"You'll find plenty of integration tests for the Seam example applications "
+"which demonstrate more complex cases. There are instructions for running "
+"these tests using Ant, or using the TestNG plugin for eclipse:"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Text.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Text.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Text.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,362 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Text.xml:10
+#, no-c-format
+msgid "Seam Text"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:11
+#, no-c-format
+msgid ""
+"Collaboration-oriented websites require a human-friendly markup language for "
+"easy entry of formatted text in forum posts, wiki pages, blogs, comments, "
+"etc. Seam provides the <literal>&lt;s:formattedText/&gt;</literal> control "
+"for display of formatted text that conforms to the <emphasis>Seam Text</"
+"emphasis> language. Seam Text is implemented using an ANTLR-based parser. "
+"You don't need to know anything about ANTLR to use it, however."
+msgstr ""
+
+#. Tag: title
+#: Text.xml:15
+#, no-c-format
+msgid "Basic fomatting"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:16
+#, no-c-format
+msgid "Here is a simple example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:19
+#, no-c-format
+msgid ""
+"It's easy to make *bold text*, /italic text/, |monospace|, \n"
+"~deleted text~, super^scripts^ or _underlines_."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:20
+#, no-c-format
+msgid ""
+"If we display this using <literal>&lt;s:formattedText/&gt;</literal>, we "
+"will get the following HTML produced:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:23
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"It's easy to make &lt;b&gt;bold text&lt;/b&gt;, &lt;i&gt;italic text&lt;/"
+"i&gt;, &lt;tt&gt;monospace&lt;/tt&gt;\n"
+"&lt;del&gt;deleted text&lt;/del&gt;, super&lt;sup&gt;scripts&lt;/sup&gt; or "
+"&lt;u&gt;underlines&lt;/u&gt;.\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:24
+#, no-c-format
+msgid ""
+"We can use a blank line to indicate a new paragraph, and <literal>+</"
+"literal> to indicate a heading:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:27
+#, no-c-format
+msgid ""
+"+This is a big heading\n"
+"You /must/ have some text following a heading!\n"
+" \n"
+"++This is a smaller heading\n"
+"This is the first paragraph. We can split it across multiple \n"
+"lines, but we must end it with a blank line.\n"
+"\n"
+"This is the second paragraph."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:28
+#, no-c-format
+msgid ""
+"(Note that a simple newline is ignored, you need an additional blank line to "
+"wrap text into a new paragraph.) This is the HTML that results:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:31
+#, no-c-format
+msgid ""
+"&lt;h1&gt;This is a big heading&lt;/h1&gt;\n"
+"&lt;p&gt;\n"
+"You &lt;i&gt;must&lt;/i&gt; have some text following a heading!\n"
+"&lt;/p&gt;\n"
+" \n"
+"&lt;h2&gt;This is a smaller heading&lt;/h2&gt;\n"
+"&lt;p&gt;\n"
+"This is the first paragraph. We can split it across multiple \n"
+"lines, but we must end it with a blank line.\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"This is the second paragraph.\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:32
+#, no-c-format
+msgid ""
+"Ordered lists are created using the <literal>#</literal> character. "
+"Unordered lists use the <literal>=</literal> character:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:35
+#, no-c-format
+msgid ""
+"An ordered list:\n"
+"        \n"
+"#first item\n"
+"#second item\n"
+"#and even the /third/ item\n"
+"\n"
+"An unordered list:\n"
+"\n"
+"=an item\n"
+"=another item"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:36
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"An ordered list:\n"
+"&lt;/p&gt;\n"
+" \n"
+"&lt;ol&gt;       \n"
+"&lt;li&gt;first item&lt;/li&gt;\n"
+"&lt;li&gt;second item&lt;/li&gt;\n"
+"&lt;li&gt;and even the &lt;i&gt;third&lt;/i&gt; item&lt;/li&gt;\n"
+"&lt;/ol&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"An unordered list:\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;ul&gt;\n"
+"&lt;li&gt;an item&lt;/li&gt;\n"
+"&lt;li&gt;another item&lt;/li&gt;\n"
+"&lt;/ul&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:37
+#, no-c-format
+msgid "Quoted sections should be surrounded in double quotes:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:40
+#, no-c-format
+msgid ""
+"The other guy said:\n"
+"        \n"
+"\"Nyeah nyeah-nee \n"
+"/nyeah/ nyeah!\"\n"
+"\n"
+"But what do you think he means by \"nyeah-nee\"?"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:41
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"The other guy said:\n"
+"&lt;/p&gt;\n"
+"        \n"
+"&lt;q&gt;Nyeah nyeah-nee\n"
+"&lt;i&gt;nyeah&lt;/i&gt; nyeah!&lt;/q&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"But what do you think he means by &lt;q&gt;nyeah-nee&lt;/q&gt;?\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: title
+#: Text.xml:45
+#, no-c-format
+msgid "Entering code and text with special characters"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:46
+#, no-c-format
+msgid ""
+"Special characters such as <literal>*</literal>, <literal>|</literal> and "
+"<literal>#</literal>, along with HTML characters such as <literal>&lt;</"
+"literal>, <literal>&gt;</literal> and <literal>&amp;</literal> may be "
+"escaped using <literal>&#92;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:49
+#, no-c-format
+msgid ""
+"You can write down equations like 2&#92;*3&#92;=6 and HTML tags\n"
+"like &#92;&lt;body&#92;&gt; using the escape character: &#92;&#92;."
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:50
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"You can write down equations like 2*3=6 and HTML tags\n"
+"like &lt;body&gt; using the escape character: &#92;.\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:51
+#, no-c-format
+msgid "And we can quote code blocks using backticks:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:54
+#, no-c-format
+msgid ""
+"My code doesn't work:\n"
+"\n"
+"`for (int i=0; i&lt;100; i--)\n"
+"{\n"
+"    doSomething();\n"
+"}`\n"
+"\n"
+"Any ideas?"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:55
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"My code doesn't work:\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;pre&gt;for (int i=0; i&lt;100; i--)\n"
+"{\n"
+"    doSomething();\n"
+"}&lt;/pre&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"Any ideas?\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: title
+#: Text.xml:59
+#, no-c-format
+msgid "Links"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:60
+#, no-c-format
+msgid "A link may be created using the following syntax:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:63
+#, no-c-format
+msgid "Go to the Seam website at [=&gt;http://jboss.com/products/seam]."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:64
+#, no-c-format
+msgid "Or, if you want to specify the text of the link:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:67
+#, no-c-format
+msgid "Go to [the Seam website=&gt;http://jboss.com/products/seam]."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:68
+#, no-c-format
+msgid ""
+"For advanced users, it is even possible to customize the Seam Text parser to "
+"understand wikiword links written using this syntax."
+msgstr ""
+
+#. Tag: title
+#: Text.xml:74
+#, no-c-format
+msgid "Entering HTML"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:75
+#, no-c-format
+msgid ""
+"Text may even include a certain limited subset of HTML (don't worry, the "
+"subset is chosen to be safe from cross-site scripting attacks). This is "
+"useful for creating links:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:78
+#, no-c-format
+msgid ""
+"You might want to link to &lt;a href=\"http://jboss.com/products/seam\"&gt;"
+"something\n"
+"cool&lt;/a&gt;, or even include an image: &lt;img src=\"/logo.jpg\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:79
+#, no-c-format
+msgid "And for creating tables:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:82
+#, no-c-format
+msgid ""
+"&lt;table&gt;\n"
+"    &lt;tr&gt;&lt;td&gt;First name:&lt;/td&gt;&lt;td&gt;Gavin&lt;/td&gt;&lt;/"
+"tr&gt;\n"
+"    &lt;tr&gt;&lt;td&gt;Last name:&lt;/td&gt;&lt;td&gt;King&lt;/td&gt;&lt;/"
+"tr&gt;\n"
+"&lt;/table&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:83
+#, no-c-format
+msgid "But you can do much more if you want!"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Tools.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Tools.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Tools.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,769 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Tools.xml:10
+#, no-c-format
+msgid "Seam tools"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:12
+#, no-c-format
+msgid "jBPM designer and viewer"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:13
+#, no-c-format
+msgid ""
+"The jBPM designer and viewer will let you design and view in a nice way your "
+"business processes and your pageflows. This convenient tool is part of JBoss "
+"Eclipse IDE and more details can be found in the jBPM's documentation "
+"(http://docs.jboss.com/jbpm/v3/gpd/)"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:17
+#, no-c-format
+msgid "<title>Business process designer</title>"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:18
+#, no-c-format
+msgid "This tool lets you design your own business process in a graphical way."
+msgstr ""
+
+#. Tag: screeninfo
+#: Tools.xml:21 Tools.xml:37
+#, no-c-format
+msgid "<screeninfo>Business process designer</screeninfo>"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:33
+#, no-c-format
+msgid "Pageflow viewer"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:34
+#, no-c-format
+msgid ""
+"This tool let you design to some extend your pageflows and let you build "
+"graphical views of them so you can easily share and compare ideas on how it "
+"should be designed."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:51
+#, no-c-format
+msgid "CRUD-application generator"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:52
+#, no-c-format
+msgid ""
+"This chapter, will give you a short overview of the support for Seam that is "
+"available in the Hibernate Tools. Hibernate Tools is a set of tools for "
+"working with Hibernate and related technologies, such as JBoss Seam and "
+"EJB3. The tools are available as a set of eclipse plugins and Ant tasks. You "
+"can download the Hibernate Tools from the JBoss Eclipse IDE or Hibernate "
+"Tools websites."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:55
+#, no-c-format
+msgid ""
+"The specific support for Seam that is currently available is generation of a "
+"fully functional Seam based CRUD-application. The CRUD-application can be "
+"generated based on your existing Hibernate mapping files or EJB3 annotated "
+"POJO's or even fully reverse engineered from your existing database schema."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:58
+#, no-c-format
+msgid ""
+"The following sections is focused on the features required to understand for "
+"usage with Seam. The content is derived from the the Hibernate Tools "
+"reference documentation. Thus if you need more detailed information please "
+"refer to the Hibernate Tools documentation."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:62
+#, no-c-format
+msgid "Creating a Hibernate configuration file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:63
+#, no-c-format
+msgid ""
+"To be able to reverse engineer and generate code a hibernate.properties or "
+"hibernate.cfg.xml file is needed. The Hibernate Tools provide a wizard for "
+"generating the hibernate.cfg.xml file if you do not already have such file."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:66
+#, no-c-format
+msgid ""
+"Start the wizard by clicking \"New Wizard\" (Ctrl+N), select the Hibernate/"
+"Hibernate Configuration file (cfg.xml) wizard and press \"Next\". After "
+"selecting the wanted location for the hibernate.cfg.xml file, you will see "
+"the following page:"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:77
+#, no-c-format
+msgid ""
+"Tip: The contents in the combo boxes for the JDBC driver class and JDBC URL "
+"change automatically, depending on the Dialect and actual driver you have "
+"chosen."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:80
+#, no-c-format
+msgid ""
+"Enter your configuration information in this dialog. Details about the "
+"configuration options can be found in Hibernate reference documentation."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:83
+#, no-c-format
+msgid ""
+"Press \"Finish\" to create the configuration file, after optionally creating "
+"a Console onfiguration, the hibernate.cfg.xml will be automatically opened "
+"in an editor. The last option \"Create Console Configuration\" is enabled by "
+"default and when enabled i will automatically use the hibernate.cfg.xml for "
+"the basis of a \"Console Configuration\""
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:89
+#, no-c-format
+msgid "<title>Creating a Hibernate Console configuration</title>"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:90
+#, no-c-format
+msgid ""
+"A Console Configuration describes to the Hibernate plugin which "
+"configuration files should be used to configure hibernate, including which "
+"classpath is needed to load the POJO's, JDBC drivers etc. It is required to "
+"make usage of query prototyping, reverse engineering and code generation. "
+"You can have multiple named console configurations. Normally you would just "
+"need one per project, but more (or less) is definitly possible."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:93
+#, no-c-format
+msgid ""
+"You create a console configuration by running the Console Configuration "
+"wizard, shown in the following screenshot. The same wizard will also be used "
+"if you are coming from the hibernate.cfg.xml wizard and had enabled \"Create "
+"Console Configuration\"."
+msgstr ""
+
+#. Tag: caption
+#: Tools.xml:103
+#, no-c-format
+msgid "<caption>Creating a Hibernate Console configuration</caption>"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:105
+#, no-c-format
+msgid ""
+"The following table describes the relevant settings. The wizard can "
+"automatically detect default values for most of these if you started the "
+"Wizard with the relevant java project selected"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:109
+#, no-c-format
+msgid "Hibernate Console Configuration Parameters"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:117
+#, no-c-format
+msgid "Parameter"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:122 Tools.xml:308 Tools.xml:458
+#, no-c-format
+msgid "Description"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:127
+#, no-c-format
+msgid "Auto detected value"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:136
+#, no-c-format
+msgid "Name"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:141
+#, no-c-format
+msgid "The unique name of the configuration"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:146
+#, no-c-format
+msgid "Name of the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:153
+#, no-c-format
+msgid "Property file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:158
+#, no-c-format
+msgid "Path to a hibernate.properties file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:163
+#, no-c-format
+msgid "First hibernate.properties file found in the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:170
+#, no-c-format
+msgid "Configuration file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:175
+#, no-c-format
+msgid "Path to a hibernate.cfg.xml file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:180
+#, no-c-format
+msgid "First hibernate.cfg.xml file found in the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:187
+#, no-c-format
+msgid "Enable Hibernate ejb3/annotations"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:192
+#, no-c-format
+msgid ""
+"Selecting this option enables usage of annotated classes. hbm.xml files are "
+"of course still possible to use too. This feature requires running the "
+"Eclipse IDE with a JDK 5 runtime, otherwise you will get classloading and/or "
+"version errors."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:197
+#, no-c-format
+msgid "Not enabled"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:204
+#, no-c-format
+msgid "Mapping files"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:209
+#, no-c-format
+msgid ""
+"List of additional mapping files that should be loaded. Note: A hibernate."
+"cfg.xml can also contain mappings. Thus if these a duplicated here, you will "
+"get \"Duplicate mapping\" errors when using the console configuration."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:214
+#, no-c-format
+msgid ""
+"If no hibernate.cfg.xml file is found, all hbm.xml files found in the "
+"selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:221
+#, no-c-format
+msgid "Classpath"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:226
+#, no-c-format
+msgid ""
+"The classpath for loading POJO and JDBC drivers. Do not add Hibernate core "
+"libraries or dependencies, they are already included. If you get "
+"ClassNotFound errors then check this list for possible missing or redundant "
+"directories/jars."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:231
+#, no-c-format
+msgid ""
+"The default build output directory and any JARs with a class implementing "
+"java.sql.Driver in the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:239
+#, no-c-format
+msgid ""
+"Clicking \"Finish\" creates the configuration and shows it in the "
+"\"Hibernate Configurations\" view"
+msgstr ""
+
+#. Tag: caption
+#: Tools.xml:249
+#, no-c-format
+msgid "Console overview"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:254
+#, no-c-format
+msgid "Reverse engineering and code generation"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:255
+#, no-c-format
+msgid ""
+"A very simple \"click-and-generate\" reverse engineering and code generation "
+"facility is available. It is this facility that allows you to generate the "
+"skeleton for a full Seam CRUD application."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:258
+#, no-c-format
+msgid ""
+"To start working with this process, start the \"Hibernate Code Generation\" "
+"which is available in the toolbar via the Hibernate icon or via the \"Run/"
+"Hibernate Code Generation\" menu item."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:262
+#, no-c-format
+msgid "Code Generation Launcher"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:263
+#, no-c-format
+msgid ""
+"When you click on \"Hibernate Code Generation\" the standard Eclipse "
+"launcher dialog will appear. In this dialog you can create, edit and delete "
+"named Hibernate code generation \"launchers\"."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:274
+#, no-c-format
+msgid ""
+"The dialog has the standard tabs \"Refresh\" and \"Common\" that can be used "
+"to configure which directories should be automatically refreshed and various "
+"general settings launchers, such as saving them in a project for sharing the "
+"launcher within a team."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:285
+#, no-c-format
+msgid ""
+"The first time you create a code generation launcher you should give it a "
+"meaningfull name, otherwise the default prefix \"New_Generation\" will be "
+"used."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:288
+#, no-c-format
+msgid ""
+"Note: The \"At least one exporter option must be selected\" is just a "
+"warning stating that for this launch to work you need to select an exporter "
+"on the Exporter tab. When an exporter has been selected the warning will "
+"disappear."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:291
+#, no-c-format
+msgid "On the \"Main\" tab you the following fields:"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:295
+#, no-c-format
+msgid "Code generation \"Main\" tab fields"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:303 Tools.xml:453
+#, no-c-format
+msgid "Field"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:317
+#, no-c-format
+msgid "Console Configuration"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:322
+#, no-c-format
+msgid ""
+"The name of the console configuration which should be used when code "
+"generating."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:329
+#, no-c-format
+msgid "Output directory"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:334
+#, no-c-format
+msgid ""
+"Path to a directory into where all output will be written by default. Be "
+"aware that existing files will be overwritten, so be sure to specify the "
+"correct directory."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:341
+#, no-c-format
+msgid "Reverse engineer from JDBC Connection"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:346
+#, no-c-format
+msgid ""
+"If enabled the tools will reverse engineer the database available via the "
+"connection information in the selected Hibernate Console Configuration and "
+"generate code based on the database schema. If not enabled the code "
+"generation will just be based on the mappings already specified in the "
+"Hibernate Console configuration."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:353
+#, no-c-format
+msgid "Package"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:358
+#, no-c-format
+msgid ""
+"The package name here is used as the default package name for any entities "
+"found when reverse engineering."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:365
+#, no-c-format
+msgid "reveng.xml"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:370
+#, no-c-format
+msgid ""
+"Path to a reveng.xml file. A reveng.xml file allows you to control certain "
+"aspects of the reverse engineering. e.g. how jdbc types are mapped to "
+"hibernate types and especially important which tables are included/excluded "
+"from the process. Clicking \"setup\" allows you to select an existing reveng."
+"xml file or create a new one.."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:377
+#, no-c-format
+msgid "reveng. strategy"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:382
+#, no-c-format
+msgid ""
+"If reveng.xml does not provide enough customization you can provide your own "
+"implementation of an ReverseEngineeringStrategy. The class need to be in the "
+"claspath of the Console Configuration, otherwise you will get class not "
+"found exceptions."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:389
+#, no-c-format
+msgid "Generate basic typed composite ids"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:394
+#, no-c-format
+msgid ""
+"This field should always be enabled when generating the Seam CRUD "
+"application. A table that has a multi-colum primary key a &lt;composite-"
+"id&gt; mapping will always be created. If this option is enabled and there "
+"are matching foreign-keys each key column is still considered a 'basic' "
+"scalar (string, long, etc.) instead of a reference to an entity. If you "
+"disable this option a &lt;key-many-to-one&gt; instead. Note: a &lt;many-to-"
+"one&gt; property is still created, but is simply marked as non-updatable and "
+"non-insertable."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:401
+#, no-c-format
+msgid "Use custom templates"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:406
+#, no-c-format
+msgid ""
+"If enabled, the Template directory will be searched first when looking up "
+"the velocity templates, allowing you to redefine how the individual "
+"templates process the hibernate mapping model."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:413
+#, no-c-format
+msgid "Template directory"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:418
+#, no-c-format
+msgid "A path to a directory with custom velocity templates."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:429
+#, no-c-format
+msgid "Exporters"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:430
+#, no-c-format
+msgid ""
+"The exporters tab is used to specify which type of code that should be "
+"generated. Each selection represents an \"Exporter\" that are responsible "
+"for generating the code, hence the name."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:441
+#, no-c-format
+msgid ""
+"The following table describes in short the various exporters. The most "
+"relevant for Seam is of course the \"JBoss Seam Skeleton app\"."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:445
+#, no-c-format
+msgid "Code generation \"Exporter\" tab fields"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:467
+#, no-c-format
+msgid "Generate domain code"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:472
+#, no-c-format
+msgid ""
+"Generates POJO's for all the persistent classes and components found in the "
+"given Hibernate configuration."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:479
+#, no-c-format
+msgid "JDK 1.5 constructs"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:484
+#, no-c-format
+msgid "When enabled the POJO's will use JDK 1.5 constructs."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:491
+#, no-c-format
+msgid "EJB3/JSR-220 annotations"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:496
+#, no-c-format
+msgid ""
+"When enabled the POJO's will be annotated according to the EJB3/JSR-220 "
+"persistency specification."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:503
+#, no-c-format
+msgid "Generate DAO code"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:508
+#, no-c-format
+msgid "Generates a set of DAO's for each entity found."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:515
+#, no-c-format
+msgid "Generate Mappings"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:520
+#, no-c-format
+msgid "Generate mapping (hbm.xml) files for each entity"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:527
+#, no-c-format
+msgid "Generate hibernate configuration file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:532
+#, no-c-format
+msgid ""
+"Generate a hibernate.cfg.xml file. Used to keep the hibernate.cfg.xml "
+"uptodate with any new found mapping files."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:539
+#, no-c-format
+msgid "Generate schema html-documentation"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:544
+#, no-c-format
+msgid ""
+"Generates set of html pages that documents the database schema and some of "
+"the mappings."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:551
+#, no-c-format
+msgid "Generate JBoss Seam skeleton app (beta)"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:556
+#, no-c-format
+msgid ""
+"Generates a complete JBoss Seam skeleton app. The generation will include "
+"annotated POJO's, Seam controller beans and a JSP for the presentation "
+"layer. See the generated readme.txt for how to use it."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:559
+#, no-c-format
+msgid ""
+"Note: this exporter generates a full application, including a build.xml thus "
+"you will get the best results if you use an output directory which is the "
+"root of your project."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:570
+#, no-c-format
+msgid "Generating and using the code"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:571
+#, no-c-format
+msgid ""
+"When you have finished filling out the settings, simply press \"Run\" to "
+"start the generation of code. This might take a little while if you are "
+"reverse engineering from a database."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:574
+#, no-c-format
+msgid ""
+"When the generation have finished you should now have a complete skeleton "
+"Seam application in the output directory. In the output directory there is a "
+"<literal>readme.txt</literal> file describing the steps needed to deploy and "
+"run the example."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:577
+#, no-c-format
+msgid ""
+"If you want to regenerate/update the skeleton code then simply run the code "
+"generation again by selecting the \"Hibernate Code Generation\" in the "
+"toolbar or \"Run\" menu. Enjoy."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Tutorial.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Tutorial.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Tutorial.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,4041 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Tutorial.xml:10
+#, no-c-format
+msgid "Seam Tutorial"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:12
+#, no-c-format
+msgid "Try the examples"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:13
+#, no-c-format
+msgid ""
+"In this tutorial, we'll assume that you have downloaded JBoss AS 4.0.5 and "
+"installed the EJB 3.0 profile (using the JBoss AS installer). You should "
+"also have a copy of Seam downloaded and extracted to a work directory."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:16
+#, no-c-format
+msgid "The directory structure of each example in Seam follows this pattern:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:21
+#, no-c-format
+msgid ""
+"Web pages, images and stylesheets may be found in <filename>examples/"
+"<replaceable>registration</replaceable>/view</filename>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:26
+#, no-c-format
+msgid ""
+"Resources such as deployment descriptors and data import scripts may be "
+"found in <filename>examples/<replaceable>registration</replaceable>/"
+"resources</filename>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:31
+#, no-c-format
+msgid ""
+"Java source code may be found in <filename>examples/"
+"<replaceable>registration</replaceable>/src</filename>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:36
+#, no-c-format
+msgid ""
+"The Ant build script is <filename>examples/<replaceable>registration</"
+"replaceable>/build.xml</filename>"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:42
+#, no-c-format
+msgid "Running the examples on JBoss AS"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:43
+#, no-c-format
+msgid ""
+"First, make sure you have Ant correctly installed, with <literal>&#36;"
+"ANT_HOME</literal> and <literal>&#36;JAVA_HOME</literal> set correctly. "
+"Next, make sure you set the location of your JBoss AS 4.0.5 installation in "
+"the <literal>build.properties</literal> file in the root folder of your Seam "
+"installation. If you haven't already done so, start JBoss AS now by typing "
+"<literal>bin/run.sh</literal> or <literal>bin/run.bat</literal> in the root "
+"directory of your JBoss installation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:46
+#, no-c-format
+msgid ""
+"By default the examples will deploy to the default configuration of the "
+"server. If the server has been started using an a configuration other than "
+"default then the example <literal>build.xml</literal> file should be "
+"modified to reflect this before building and deploying. Two lines should be "
+"changed in this file:"
+msgstr ""
+
+#. Tag: screen
+#: Tutorial.xml:49
+#, no-c-format
+msgid ""
+"&lt;property name=\"deploy.dir\"           value=\"${jboss.home}/server/"
+"default/deploy\"/&gt;"
+msgstr ""
+
+#. Tag: screen
+#: Tutorial.xml:50
+#, no-c-format
+msgid ""
+"&lt;property name=\"webroot.dir\"         \n"
+"        value=\"${deploy.dir}/jboss-web.deployer/ROOT.war\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:51
+#, no-c-format
+msgid ""
+"Now, build and deploy the example by typing <literal>ant deploy</literal> in "
+"the <filename>examples/<replaceable>registration</replaceable></filename> "
+"directory."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:54
+#, no-c-format
+msgid ""
+"Try it out by accessing <ulink url=\"http://localhost:8080/seam-registration/"
+"\"><literal>http://localhost:8080/seam-registration/</literal></ulink> with "
+"your web browser."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:60
+#, no-c-format
+msgid "Running the examples on Tomcat"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:61
+#, no-c-format
+msgid ""
+"First, make sure you have Ant correctly installed, with <literal>&#36;"
+"ANT_HOME</literal> and <literal>&#36;JAVA_HOME</literal> set correctly. "
+"Next, make sure you set the location of your Tomcat 5.5 installation in the "
+"<literal>build.properties</literal> file in the root folder of your Seam "
+"installation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:64
+#, no-c-format
+msgid ""
+"Now, build and deploy the example by typing <literal>ant deploy.tomcat</"
+"literal> in the <filename>examples/<replaceable>registration</replaceable></"
+"filename> directory."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:67
+#, no-c-format
+msgid "Finally, start Tomcat."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:70
+#, no-c-format
+msgid ""
+"Try it out by accessing <ulink url=\"http://localhost:8080/jboss-seam-"
+"registration/\"><literal>http://localhost:8080/jboss-seam-registration/</"
+"literal></ulink> with your web browser."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:73
+#, no-c-format
+msgid ""
+"When you deploy the example to Tomcat, any EJB3 components will run inside "
+"the JBoss Embeddable EJB3 container, a complete standalone EJB3 container "
+"environment."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:79
+#, no-c-format
+msgid "Running the example tests"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:80
+#, no-c-format
+msgid ""
+"Most of the examples come with a suite of TestNG integration tests. The "
+"easiest way to run the tests is to run <literal>ant testexample</literal> "
+"inside the <filename>examples/<replaceable>registration</replaceable></"
+"filename> directory. It is also possible to run the tests inside your IDE "
+"using the TestNG plugin."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:88
+#, no-c-format
+msgid "Your first Seam application: the registration example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:89
+#, no-c-format
+msgid ""
+"The registration example is a fairly trivial application that lets a new "
+"user store his username, real name and password in the database. The example "
+"isn't intended to show off all of the cool functionality of Seam. However, "
+"it demonstrates the use of an EJB3 session bean as a JSF action listener, "
+"and basic configuration of Seam."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:92
+#, no-c-format
+msgid ""
+"We'll go slowly, since we realize you might not yet be familiar with EJB 3.0."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:95
+#, no-c-format
+msgid ""
+"The start page displays a very basic form with three input fields. Try "
+"filling them in and then submitting the form. This will save a user object "
+"in the database."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:107 Tutorial.xml:424 Tutorial.xml:563 Tutorial.xml:723
+#, no-c-format
+msgid "Understanding the code"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:108
+#, no-c-format
+msgid ""
+"The example is implemented with two JSP pages, one entity bean and one "
+"stateless session bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:119
+#, no-c-format
+msgid "Let's take a look at the code, starting from the \"bottom\"."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:123
+#, no-c-format
+msgid "The entity bean: <literal>User.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:124
+#, no-c-format
+msgid ""
+"We need an EJB entity bean for user data. This class defines "
+"<emphasis>persistence</emphasis> and <emphasis>validation</emphasis> "
+"declaratively, via annotations. It also needs some extra annotations that "
+"define the class as a Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:140
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"user\")\n"
+"@Scope(SESSION)\n"
+"@Table(name=\"users\")\n"
+"public class User implements Serializable\n"
+"{\n"
+"   private static final long serialVersionUID = 1881413500711441951L;\n"
+"   \n"
+"   private String username;\n"
+"   private String password;\n"
+"   private String name;\n"
+"   \n"
+"   public User(String name, String password, String username)\n"
+"   {\n"
+"      this.name = name;\n"
+"      this.password = password;\n"
+"      this.username = username;\n"
+"   }\n"
+"   \n"
+"   public User() {}\n"
+"   \n"
+"   @NotNull @Length(min=5, max=15)\n"
+"   public String getPassword()\n"
+"   {\n"
+"      return password;\n"
+"   }\n"
+"\n"
+"   public void setPassword(String password)\n"
+"   {\n"
+"      this.password = password;\n"
+"   }\n"
+"   \n"
+"   @NotNull\n"
+"   public String getName()\n"
+"   {\n"
+"      return name;\n"
+"   }\n"
+"\n"
+"   public void setName(String name)\n"
+"   {\n"
+"      this.name = name;\n"
+"   }\n"
+"   \n"
+"   @Id @NotNull @Length(min=5, max=15)\n"
+"   public String getUsername()\n"
+"   {\n"
+"      return username;\n"
+"   }\n"
+"\n"
+"   public void setUsername(String username)\n"
+"   {\n"
+"      this.username = username;\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:143
+#, no-c-format
+msgid ""
+"The EJB3 standard <literal>@Entity</literal> annotation indicates that the "
+"<literal>User</literal> class is an entity bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:148
+#, no-c-format
+msgid ""
+"A Seam component needs a <emphasis>component name</emphasis> specified by "
+"the <link linkend=\"name-annotation\"><literal>@Name</literal></link> "
+"annotation. This name must be unique within the Seam application. When JSF "
+"asks Seam to resolve a context variable with a name that is the same as a "
+"Seam component name, and the context variable is currently undefined (null), "
+"Seam will instantiate that component, and bind the new instance to the "
+"context variable. In this case, Seam will instantiate a <literal>User</"
+"literal> the first time JSF encounters a variable named <literal>user</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:153
+#, no-c-format
+msgid ""
+"Whenever Seam instantiates a component, it binds the new instance to a "
+"context variable in the component's <emphasis>default context</emphasis>. "
+"The default context is specified using the <link linkend=\"scope-annotation"
+"\"><literal>@Scope</literal></link> annotation. The <literal>User</literal> "
+"bean is a session scoped component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:158
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Table</literal> annotation indicates that the "
+"<literal>User</literal> class is mapped to the <literal>users</literal> "
+"table."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:163
+#, no-c-format
+msgid ""
+"<literal>name</literal>, <literal>password</literal> and <literal>username</"
+"literal> are the persistent attributes of the entity bean. All of our "
+"persistent attributes define accessor methods. These are needed when this "
+"component is used by JSF in the render response and update model values "
+"phases."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:168
+#, no-c-format
+msgid ""
+"An empty constructor is both required by both the EJB specification and by "
+"Seam."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:173
+#, no-c-format
+msgid ""
+"The <literal>@NotNull</literal> and <literal>@Length</literal> annotations "
+"are part of the Hibernate Validator framework. Seam integrates Hibernate "
+"Validator and lets you use it for data validation (even if you are not using "
+"Hibernate for persistence)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:178
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Id</literal> annotation indicates the primary key "
+"attribute of the entity bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:185
+#, no-c-format
+msgid ""
+"The most important things to notice in this example are the <literal>@Name</"
+"literal> and <literal>@Scope</literal> annotations. These annotations "
+"establish that this class is a Seam component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:188
+#, no-c-format
+msgid ""
+"We'll see below that the properties of our <literal>User</literal> class are "
+"bound to directly to JSF components and are populated by JSF during the "
+"update model values phase. We don't need any tedious glue code to copy data "
+"back and forth between the JSP pages and the entity bean domain model."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:191
+#, no-c-format
+msgid ""
+"However, entity beans shouldn't do transaction management or database "
+"access. So we can't use this component as a JSF action listener. For that we "
+"need a session bean."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:198
+#, no-c-format
+msgid ""
+"The stateless session bean class: <literal>RegisterAction.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:199
+#, no-c-format
+msgid ""
+"Most Seam application use session beans as JSF action listeners (you can use "
+"JavaBeans instead if you like)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:202
+#, no-c-format
+msgid ""
+"We have exactly one JSF action in our application, and one session bean "
+"method attached to it. In this case, we'll use a stateless session bean, "
+"since all the state associated with our action is held by the <literal>User</"
+"literal> bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:205
+#, no-c-format
+msgid "This is the only really interesting code in the example!"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:222
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"register\")\n"
+"public class RegisterAction implements Register\n"
+"{\n"
+"\n"
+"   @In\n"
+"   private User user;\n"
+"   \n"
+"   @PersistenceContext\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @Logger\n"
+"   private Log log;\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = em.createQuery(\n"
+"         \"select username from User where username=#{user.username}\")\n"
+"         .getResultList();\n"
+"         \n"
+"      if (existing.size()==0)\n"
+"      {\n"
+"         em.persist(user);\n"
+"         log.info(\"Registered new user #{user.username}\");\n"
+"         return \"/registered.jsp\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         FacesMessages.instance().add(\"User #{user.username} already exists"
+"\");\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:225
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Stateless</literal> annotation marks this class "
+"as stateless session bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:230
+#, no-c-format
+msgid ""
+"The <link linkend=\"in-annotation\"><literal>@In</literal></link> annotation "
+"marks an attribute of the bean as injected by Seam. In this case, the "
+"attribute is injected from a context variable named <literal>user</literal> "
+"(the instance variable name)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:235
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@PersistenceContext</literal> annotation is used "
+"to inject the EJB3 entity manager."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:240
+#, no-c-format
+msgid ""
+"The Seam <literal>@Logger</literal> annotation is used to inject the "
+"component's <literal>Log</literal> instance."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:245
+#, no-c-format
+msgid ""
+"The action listener method uses the standard EJB3 <literal>EntityManager</"
+"literal> API to interact with the database, and returns the JSF outcome. "
+"Note that, since this is a sesson bean, a transaction is automatically begun "
+"when the <literal>register()</literal> method is called, and committed when "
+"it completes."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:250
+#, no-c-format
+msgid ""
+"Notice that Seam lets you use a JSF EL expression inside EJB-QL. Under the "
+"covers, this results in an ordinary JPA <literal>setParameter()</literal> "
+"call on the standard JPA <literal>Query</literal> object. Nice, huh?"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:255
+#, no-c-format
+msgid ""
+"The <literal>Log</literal> API lets us easily display templated log messages."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:260
+#, no-c-format
+msgid ""
+"JSF action listener methods return a string-valued outcome that determines "
+"what page will be displayed next. A null outcome (or a void action listener "
+"method) redisplays the previous page. In plain JSF, it is normal to always "
+"use a JSF <emphasis>navigation rule</emphasis> to determine the JSF view id "
+"from the outcome. For complex application this indirection is useful and a "
+"good practice. However, for very simple examples like this one, Seam lets "
+"you use the JSF view id as the outcome, eliminating the requirement for a "
+"navigation rule. <emphasis>Note that when you use a view id as an outcome, "
+"Seam always performs a browser redirect.</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:265
+#, no-c-format
+msgid ""
+"Seam provides a number of <emphasis>built-in components</emphasis> to help "
+"solve common problems. The <literal>FacesMessages</literal> component makes "
+"it easy to display templated error or success messages. Built-in Seam "
+"components may be obtained by injection, or by calling an <literal>instance()"
+"</literal> method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:272
+#, no-c-format
+msgid ""
+"Note that we did not explicitly specify a <literal>@Scope</literal> this "
+"time. Each Seam component type has a default scope if not explicitly "
+"specified. For stateless session beans, the default scope is the stateless "
+"context. Actually, <emphasis>all</emphasis> stateless session beans belong "
+"in the stateless context."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:275
+#, no-c-format
+msgid ""
+"Our session bean action listener performs the business and persistence logic "
+"for our mini-application. In more complex applications, we might need to "
+"layer the code and refactor persistence logic into a dedicated data access "
+"component. That's perfectly trivial to do. But notice that Seam does not "
+"force you into any particular strategy for application layering."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:278
+#, no-c-format
+msgid ""
+"Furthermore, notice that our session bean has simultaneous access to context "
+"associated with the web request (the form values in the <literal>User</"
+"literal> object, for example), and state held in transactional resources "
+"(the <literal>EntityManager</literal> object). This is a break from "
+"traditional J2EE architectures. Again, if you are more comfortable with the "
+"traditional J2EE layering, you can certainly implement that in a Seam "
+"application. But for many applications, it's simply not very useful."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:285
+#, no-c-format
+msgid "The session bean local interface: <literal>Register.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:286
+#, no-c-format
+msgid "Naturally, our session bean needs a local interface."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:291
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface Register\n"
+"{\n"
+"   public String register();\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:292
+#, no-c-format
+msgid "That's the end of the Java code. Now onto the deployment descriptors."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:298
+#, no-c-format
+msgid ""
+"The Seam component deployment descriptor: <literal>components.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:299
+#, no-c-format
+msgid ""
+"If you've used many Java frameworks before, you'll be used to having to "
+"declate all your component classes in some kind of XML file that gradually "
+"grows more and more unmanageable as your project matures. You'll be relieved "
+"to know that Seam does not require that application components be "
+"accompanied by XML. Most Seam applications require a very small amount of "
+"XML that does not grow very much as the project gets bigger."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:302
+#, no-c-format
+msgid ""
+"Nevertheless, it is often useful to be able to provide for <emphasis>some</"
+"emphasis> external configuration of <emphasis>some</emphasis> components "
+"(particularly the components built in to Seam). You have a couple of options "
+"here, but the most flexible option is to provide this configuration in a "
+"file called <literal>components.xml</literal>, located in the <literal>WEB-"
+"INF</literal> directory. We'll use the <literal>components.xml</literal> "
+"file to tell Seam how to find our EJB components in JNDI:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:305
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"&gt;\n"
+"     &lt;core:init jndi-pattern=\"@jndiPattern@\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:306
+#, no-c-format
+msgid ""
+"This code configures a property named <literal>jndiPattern</literal> of a "
+"built-in Seam component named <literal>org.jboss.seam.core.init</literal>."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:312
+#, no-c-format
+msgid "The web deployment description: <literal>web.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:313
+#, no-c-format
+msgid ""
+"The presentation layer for our mini-application will be deployed in a WAR. "
+"So we'll need a web deployment descriptor."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:316
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;web-app version=\"2.5\"\n"
+"    xmlns=\"http://java.sun.com/xml/ns/javaee\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n"
+"        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\"&gt;\n"
+"\n"
+"    &lt;!-- Seam --&gt;\n"
+"\n"
+"    &lt;listener&gt;\n"
+"        &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/"
+"listener-class&gt;\n"
+"    &lt;/listener&gt;\n"
+"\n"
+"    &lt;!-- MyFaces --&gt;\n"
+"\n"
+"    &lt;listener&gt;\n"
+"        &lt;listener-class&gt;\n"
+"            org.apache.myfaces.webapp.StartupServletContextListener\n"
+"        &lt;/listener-class&gt;\n"
+"    &lt;/listener&gt;\n"
+"\n"
+"    &lt;context-param&gt;\n"
+"        &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-"
+"name&gt;\n"
+"        &lt;param-value&gt;client&lt;/param-value&gt;\n"
+"    &lt;/context-param&gt;\n"
+"\n"
+"    &lt;servlet&gt;\n"
+"        &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;\n"
+"        &lt;servlet-class&gt;javax.faces.webapp.FacesServlet&lt;/servlet-"
+"class&gt;\n"
+"        &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;\n"
+"    &lt;/servlet&gt;\n"
+"\n"
+"    &lt;!-- Faces Servlet Mapping --&gt;\n"
+"    &lt;servlet-mapping&gt;\n"
+"        &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;\n"
+"        &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;\n"
+"    &lt;/servlet-mapping&gt;\n"
+"\n"
+"&lt;/web-app&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:317
+#, no-c-format
+msgid ""
+"This <literal>web.xml</literal> file configures Seam and MyFaces. The "
+"configuration you see here is pretty much identical in all Seam applications."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:323
+#, no-c-format
+msgid "The JSF configration: <literal>faces-config.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:324
+#, no-c-format
+msgid ""
+"All Seam applications use JSF views as the presentation layer. So we'll need "
+"<literal>faces-config.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:327
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;!DOCTYPE faces-config \n"
+"PUBLIC \"-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN\"\n"
+"                            \"http://java.sun.com/dtd/web-facesconfig_1_0.dtd"
+"\"&gt;\n"
+"&lt;faces-config&gt;\n"
+"\n"
+"    &lt;!-- A phase listener is needed by all Seam applications --&gt;\n"
+"    \n"
+"    &lt;lifecycle&gt;\n"
+"        &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-"
+"listener&gt;\n"
+"    &lt;/lifecycle&gt;\n"
+"\n"
+"&lt;/faces-config&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:328
+#, no-c-format
+msgid ""
+"The <literal>faces-config.xml</literal> file integrates Seam into JSF. Note "
+"that we don't need any JSF managed bean declarations! The managed beans are "
+"the Seam components. In Seam applications, the <literal>faces-config.xml</"
+"literal> is used much less often than in plain JSF."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:331
+#, no-c-format
+msgid ""
+"In fact, once you have all the basic descriptors set up, the <emphasis>only</"
+"emphasis> XML you need to write as you add new functionality to a Seam "
+"application is the navigation rules, and possibly jBPM process definitions. "
+"Seam takes the view that <emphasis>process flow</emphasis> and "
+"<emphasis>configuration data</emphasis> are the only things that truly "
+"belong in XML."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:334
+#, no-c-format
+msgid ""
+"In this simple example, we don't even need a navigation rule, since we "
+"decided to embed the view id in our action code."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:340
+#, no-c-format
+msgid "The EJB deployment descriptor: <literal>ejb-jar.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:341
+#, no-c-format
+msgid ""
+"The <literal>ejb-jar.xml</literal> file integrates Seam with EJB3, by "
+"attaching the <literal>SeamInterceptor</literal> to all session beans in the "
+"archive."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:344
+#, no-c-format
+msgid ""
+"&lt;ejb-jar xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \n"
+"         xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n"
+"         http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd\"\n"
+"         version=\"3.0\"&gt;\n"
+"         \n"
+"   &lt;interceptors&gt;\n"
+"     &lt;interceptor&gt;\n"
+"       &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"     &lt;/interceptor&gt;\n"
+"   &lt;/interceptors&gt;\n"
+"   \n"
+"   &lt;assembly-descriptor&gt;\n"
+"      &lt;interceptor-binding&gt;\n"
+"         &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"         &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"      &lt;/interceptor-binding&gt;\n"
+"   &lt;/assembly-descriptor&gt;\n"
+"   \n"
+"&lt;/ejb-jar&gt;"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:348
+#, no-c-format
+msgid ""
+"The EJB persistence deployment descriptor: <literal>persistence.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:349
+#, no-c-format
+msgid ""
+"The <literal>persistence.xml</literal> file tells the EJB persistence "
+"provider where to find the datasource, and contains some vendor-specific "
+"settings. In this case, enables automatic schema export at startup time."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:352
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;persistence xmlns=\"http://java.sun.com/xml/ns/persistence\" \n"
+"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence \n"
+"             http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd\" \n"
+"             version=\"1.0\"&gt;\n"
+"    &lt;persistence-unit name=\"userDatabase\"&gt;\n"
+"      &lt;provider&gt;org.hibernate.ejb.HibernatePersistence&lt;/"
+"provider&gt;\n"
+"      &lt;jta-data-source&gt;java:/DefaultDS&lt;/jta-data-source&gt;\n"
+"      &lt;properties&gt;\n"
+"         &lt;property name=\"hibernate.hbm2ddl.auto\" value=\"create-drop\"/"
+"&gt;\n"
+"      &lt;/properties&gt;\n"
+"    &lt;/persistence-unit&gt;\n"
+"&lt;/persistence&gt;"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:356
+#, no-c-format
+msgid ""
+"The view: <literal>register.jsp</literal> and <literal>registered.jsp</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:357
+#, no-c-format
+msgid ""
+"The view pages for a Seam application could be implemented using any "
+"technology that supports JSF. In this example we use JSP, since it is "
+"familiar to most developers and since we have minimal requirements here "
+"anyway. (But if you take our advice, you'll use Facelets for your own "
+"applications.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:360
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://jboss.com/products/seam/taglib\" prefix=\"s\" "
+"&#37;&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Register New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;table border=\"0\"&gt;\n"
+"       &lt;s:validateAll&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Username&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputText value=\"#{user.username}\"/&gt;&lt;/"
+"td&gt;\n"
+"         &lt;/tr&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Real Name&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputText value=\"#{user.name}\"/&gt;&lt;/td&gt;\n"
+"         &lt;/tr&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Password&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputSecret value=\"#{user.password}\"/&gt;&lt;/"
+"td&gt;\n"
+"         &lt;/tr&gt;\n"
+"       &lt;/s:validateAll&gt;\n"
+"     &lt;/table&gt;\n"
+"     &lt;h:messages/&gt;\n"
+"     &lt;h:commandButton type=\"submit\" value=\"Register\" action=\"#"
+"{register.register}\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:361
+#, no-c-format
+msgid ""
+"The only thing here that is specific to Seam is the <literal>&lt;s:"
+"validateAll&gt;</literal> tag. This JSF component tells JSF to validate all "
+"the contained input fields against the Hibernate Validator annotations "
+"specified on the entity bean."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:364
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Successfully Registered New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"    Welcome, &lt;h:outputText value=\"#{user.name}\"/&gt;, \n"
+"    you are successfully registered as &lt;h:outputText value=\"#{user."
+"username}\"/&gt;.\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:365
+#, no-c-format
+msgid ""
+"This is a boring old JSP pages using standard JSF components. There is "
+"nothing specific to Seam here."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:371
+#, no-c-format
+msgid "The EAR deployment descriptor: <literal>application.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:372
+#, no-c-format
+msgid ""
+"Finally, since our application is deployed as an EAR, we need a deployment "
+"descriptor there, too."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:375
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;application xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee \n"
+"             http://java.sun.com/xml/ns/javaee/application_5.xsd\"\n"
+"             version=\"5\"&gt;\n"
+"             \n"
+"    &lt;display-name&gt;Seam Registration&lt;/display-name&gt;\n"
+"\n"
+"    &lt;module&gt;\n"
+"        &lt;web&gt;\n"
+"            &lt;web-uri&gt;jboss-seam-registration.war&lt;/web-uri&gt;\n"
+"            &lt;context-root&gt;/seam-registration&lt;/context-root&gt;\n"
+"        &lt;/web&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;ejb&gt;jboss-seam-registration.jar&lt;/ejb&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;jboss-seam.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;el-api.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;el-ri.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    \n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:376
+#, no-c-format
+msgid ""
+"This deployment descriptor links modules in the enterprise archive and binds "
+"the web application to the context root <literal>/seam-registration</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:387 Tutorial.xml:535 Tutorial.xml:698 Tutorial.xml:813
+#, no-c-format
+msgid "How it works"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:388
+#, no-c-format
+msgid ""
+"When the form is submitted, JSF asks Seam to resolve the variable named "
+"<literal>user</literal>. Since there is no value already bound to that name "
+"(in any Seam context), Seam instantiates the <literal>user</literal> "
+"component, and returns the resulting <literal>User</literal> entity bean "
+"instance to JSF after storing it in the Seam session context."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:391
+#, no-c-format
+msgid ""
+"The form input values are now validated against the Hibernate Validator "
+"constraints specified on the <literal>User</literal> entity. If the "
+"constraints are violated, JSF redisplays the page. Otherwise, JSF binds the "
+"form input values to properties of the <literal>User</literal> entity bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:394
+#, no-c-format
+msgid ""
+"Next, JSF asks Seam to resolve the variable named <literal>register</"
+"literal>. Seam finds the <literal>RegisterAction</literal> stateless session "
+"bean in the stateless context and returns it. JSF invokes the "
+"<literal>register()</literal> action listener method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:397
+#, no-c-format
+msgid ""
+"Seam intercepts the method call and injects the <literal>User</literal> "
+"entity from the Seam session context, before continuing the invocation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:400
+#, no-c-format
+msgid ""
+"The <literal>register()</literal> method checks if a user with the entered "
+"username already exists. If so, an error message is queued with the "
+"<literal>FacesMessages</literal> component, and a null outcome is returned, "
+"causing a page redisplay. The <literal>FacesMessages</literal> component "
+"interpolates the JSF expression embedded in the message string and adds a "
+"JSF <literal>FacesMessage</literal> to the view."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:403
+#, no-c-format
+msgid ""
+"If no user with that username exists, the <literal>\"/registered.jsp\"</"
+"literal> outcome triggers a browser redirect to the <literal>registered.jsp</"
+"literal> page. When JSF comes to render the page, it asks Seam to resolve "
+"the variable named <literal>user</literal> and uses property values of the "
+"returned <literal>User</literal> entity from Seam's session scope."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:411
+#, no-c-format
+msgid "Clickable lists in Seam: the messages example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:412
+#, no-c-format
+msgid ""
+"Clickable lists of database search results are such an important part of any "
+"online application that Seam provides special functionality on top of JSF to "
+"make it easier to query data using EJB-QL or HQL and display it as a "
+"clickable list using a JSF <literal>&lt;h:dataTable&gt;</literal>. The "
+"messages example demonstrates this functionality."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:425
+#, no-c-format
+msgid ""
+"The message list example has one entity bean, <literal>Message</literal>, "
+"one session bean, <literal>MessageListBean</literal> and one JSP."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:429
+#, no-c-format
+msgid "The entity bean: <literal>Message.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:430
+#, no-c-format
+msgid ""
+"The <literal>Message</literal> entity defines the title, text, date and time "
+"of a message, and a flag indicating whether the message has been read:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:433
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"message\")\n"
+"@Scope(EVENT)\n"
+"public class Message implements Serializable\n"
+"{\n"
+"   private Long id;\n"
+"   private String title;\n"
+"   private String text;\n"
+"   private boolean read;\n"
+"   private Date datetime;\n"
+"   \n"
+"   @Id @GeneratedValue\n"
+"   public Long getId() {\n"
+"      return id;\n"
+"   }\n"
+"   public void setId(Long id) {\n"
+"      this.id = id;\n"
+"   }\n"
+"   \n"
+"   @NotNull @Length(max=100)\n"
+"   public String getTitle() {\n"
+"      return title;\n"
+"   }\n"
+"   public void setTitle(String title) {\n"
+"      this.title = title;\n"
+"   }\n"
+"   \n"
+"   @NotNull @Lob\n"
+"   public String getText() {\n"
+"      return text;\n"
+"   }\n"
+"   public void setText(String text) {\n"
+"      this.text = text;\n"
+"   }\n"
+"   \n"
+"   @NotNull\n"
+"   public boolean isRead() {\n"
+"      return read;\n"
+"   }\n"
+"   public void setRead(boolean read) {\n"
+"      this.read = read;\n"
+"   }\n"
+"   \n"
+"   @NotNull \n"
+"   @Basic @Temporal(TemporalType.TIMESTAMP)\n"
+"   public Date getDatetime() {\n"
+"      return datetime;\n"
+"   }\n"
+"   public void setDatetime(Date datetime) {\n"
+"      this.datetime = datetime;\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:438
+#, no-c-format
+msgid "The stateful session bean: <literal>MessageManagerBean.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:439
+#, no-c-format
+msgid ""
+"Just like in the previous example, we have a session bean, "
+"<literal>MessageManagerBean</literal>, which defines the action listener "
+"methods for the two buttons on our form. One of the buttons selects a "
+"message from the list, and displays that message. The other button deletes a "
+"message. So far, this is not so different to the previous example."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:442
+#, no-c-format
+msgid ""
+"But <literal>MessageManagerBean</literal> is also responsible for fetching "
+"the list of messages the first time we navigate to the message list page. "
+"There are various ways the user could navigate to the page, and not all of "
+"them are preceded by a JSF action&mdash;the user might have bookmarked the "
+"page, for example. So the job of fetching the message list takes place in a "
+"Seam <emphasis>factory method</emphasis>, instead of in an action listener "
+"method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:445
+#, no-c-format
+msgid ""
+"We want to cache the list of messages in memory between server requests, so "
+"we will make this a stateful session bean."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:459
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Scope(SESSION)\n"
+"@Name(\"messageManager\")\n"
+"public class MessageManagerBean implements Serializable, MessageManager\n"
+"{\n"
+"\n"
+"   @DataModel\n"
+"   private List&lt;Message&gt; messageList;\n"
+"   \n"
+"   @DataModelSelection\n"
+"   @Out(required=false)\n"
+"   private Message message;\n"
+"   \n"
+"   @PersistenceContext(type=EXTENDED)\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @Factory(\"messageList\")\n"
+"   public void findMessages()\n"
+"   {\n"
+"      messageList = em.createQuery(\"from Message msg order by msg.datetime "
+"desc\").getResultList();\n"
+"   }\n"
+"   \n"
+"   public void select()\n"
+"   {\n"
+"      message.setRead(true);\n"
+"   }\n"
+"   \n"
+"   public void delete()\n"
+"   {\n"
+"      messageList.remove(message);\n"
+"      em.remove(message);\n"
+"      message=null;\n"
+"   }\n"
+"   \n"
+"   @Remove @Destroy\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:462
+#, no-c-format
+msgid ""
+"The <literal>@DataModel</literal> annotation exposes an attibute of type "
+"<literal>java.util.List</literal> to the JSF page as an instance of "
+"<literal>javax.faces.model.DataModel</literal>. This allows us to use the "
+"list in a JSF <literal>&lt;h:dataTable&gt;</literal> with clickable links "
+"for each row. In this case, the <literal>DataModel</literal> is made "
+"available in a session context variable named <literal>messageList</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:467
+#, no-c-format
+msgid ""
+"The <literal>@DataModelSelection</literal> annotation tells Seam to inject "
+"the <literal>List</literal> element that corresponded to the clicked link."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:472
+#, no-c-format
+msgid ""
+"The <literal>@Out</literal> annotation then exposes the selected value "
+"directly to the page. So ever time a row of the clickable list is selected, "
+"the <literal>Message</literal> is injected to the attribute of the stateful "
+"bean, and the subsequently <emphasis>outjected</emphasis> to the event "
+"context variable named <literal>message</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:477
+#, no-c-format
+msgid ""
+"This stateful bean has an EJB3 <emphasis>extended persistence context</"
+"emphasis>. The messages retrieved in the query remain in the managed state "
+"as long as the bean exists, so any subsequent method calls to the stateful "
+"bean can update them without needing to make any explicit call to the "
+"<literal>EntityManager</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:482
+#, no-c-format
+msgid ""
+"The first time we navigate to the JSP page, there will be no value in the "
+"<literal>messageList</literal> context variable. The <literal>@Factory</"
+"literal> annotation tells Seam to create an instance of "
+"<literal>MessageManagerBean</literal> and invoke the <literal>findMessages()"
+"</literal> method to initialize the value. We call <literal>findMessages()</"
+"literal> a <emphasis>factory method</emphasis> for <literal>messages</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:487
+#, no-c-format
+msgid ""
+"The <literal>select()</literal> action listener method marks the selected "
+"<literal>Message</literal> as read, and updates it in the database."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:492
+#, no-c-format
+msgid ""
+"The <literal>delete()</literal> action listener method removes the selected "
+"<literal>Message</literal> from the database."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:497
+#, no-c-format
+msgid ""
+"All stateful session bean Seam components <emphasis>must</emphasis> have a "
+"method marked <literal>@Remove @Destroy</literal> to ensure that Seam will "
+"remove the stateful bean when the Seam context ends, and clean up any server-"
+"side state."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:504
+#, no-c-format
+msgid ""
+"Note that this is a session-scoped Seam component. It is associated with the "
+"user login session, and all requests from a login session share the same "
+"instance of the component. (In Seam applications, we usually use session-"
+"scoped components sparingly.)"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:510
+#, no-c-format
+msgid ""
+"The session bean local interface: <literal>MessageManager.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:511
+#, no-c-format
+msgid "All session beans have a business interface, of course."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:514
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface MessageManager\n"
+"{\n"
+"   public void findMessages();\n"
+"   public void select();\n"
+"   public void delete();\n"
+"   public void destroy();\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:515
+#, no-c-format
+msgid "From now on, we won't show local interfaces in our code examples."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:518
+#, no-c-format
+msgid ""
+"Let's skip over <literal>components.xml</literal>, <literal>persistence.xml</"
+"literal>, <literal>web.xml</literal>, <literal>ejb-jar.xml</literal>, "
+"<literal>faces-config.xml</literal> and <literal>application.xml</literal> "
+"since they are much the same as the previous example, and go straight to the "
+"JSP."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:524
+#, no-c-format
+msgid "The view: <literal>messages.jsp</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:525
+#, no-c-format
+msgid ""
+"The JSP page is a straightforward use of the JSF <literal>&lt;h:dataTable&gt;"
+"</literal> component. Again, nothing specific to Seam."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:528
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Messages&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;h2&gt;Message List&lt;/h2&gt;\n"
+"     &lt;h:outputText value=\"No messages to display\" rendered=\"#"
+"{messageList.rowCount==0}\"/&gt;\n"
+"     &lt;h:dataTable var=\"msg\" value=\"#{messageList}\" rendered=\"#"
+"{messageList.rowCount&gt;0}\"&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Read\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:selectBooleanCheckbox value=\"#{msg.read}\" disabled=\"true"
+"\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Title\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:commandLink value=\"#{msg.title}\" action=\"#"
+"{messageManager.select}\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Date/Time\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:outputText value=\"#{msg.datetime}\"&gt;\n"
+"              &lt;f:convertDateTime type=\"both\" dateStyle=\"medium\" "
+"timeStyle=\"short\"/&gt;\n"
+"           &lt;/h:outputText&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;h:commandButton value=\"Delete\" action=\"#{messageManager."
+"delete}\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"     &lt;/h:dataTable&gt;\n"
+"     &lt;h3&gt;&lt;h:outputText value=\"#{message.title}\"/&gt;&lt;/h3&gt;\n"
+"     &lt;div&gt;&lt;h:outputText value=\"#{message.text}\"/&gt;&lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:536
+#, no-c-format
+msgid ""
+"The first time we navigate to the <literal>messages.jsp</literal> page, "
+"whether by a JSF postback (faces request) or a direct browser GET request "
+"(non-faces request), the page will try to resolve the <literal>messageList</"
+"literal> context variable. Since this context variable is not initialized, "
+"Seam will call the factory method <literal>findMessages()</literal>, which "
+"performs a query against the database and results in a <literal>DataModel</"
+"literal> being outjected. This <literal>DataModel</literal> provides the row "
+"data needed for rendering the <literal>&lt;h:dataTable&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:539
+#, no-c-format
+msgid ""
+"When the user clicks the <literal>&lt;h:commandLink&gt;</literal>, JSF calls "
+"the <literal>select()</literal> action listener. Seam intercepts this call "
+"and injects the selected row data into the <literal>message</literal> "
+"attribute of the <literal>messageManager</literal> component. The action "
+"listener fires, marking the selected <literal>Message</literal> as read. At "
+"the end of the call, Seam outjects the selected <literal>Message</literal> "
+"to the context variable named <literal>message</literal>. Next, the EJB "
+"container commits the transaction, and the change to the <literal>Message</"
+"literal> is flushed to the database. Finally, the page is re-rendered, "
+"redisplaying the message list, and displaying the selected message below it."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:542
+#, no-c-format
+msgid ""
+"If the user clicks the <literal>&lt;h:commandButton&gt;</literal>, JSF calls "
+"the <literal>delete()</literal> action listener. Seam intercepts this call "
+"and injects the selected row data into the <literal>message</literal> "
+"attribute of the <literal>messageList</literal> component. The action "
+"listener fires, removing the selected <literal>Message</literal> from the "
+"list, and also calling <literal>remove()</literal> on the "
+"<literal>EntityManager</literal>. At the end of the call, Seam refreshes the "
+"<literal>messageList</literal> context variable and clears the context "
+"variable named <literal>message</literal>. The EJB container commits the "
+"transaction, and deletes the <literal>Message</literal> from the database. "
+"Finally, the page is re-rendered, redisplaying the message list."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:550
+#, no-c-format
+msgid "Seam and jBPM: the todo list example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:551
+#, no-c-format
+msgid ""
+"jBPM provides sophisticated functionality for workflow and task management. "
+"To get a small taste of how jBPM integrates with Seam, we'll show you a "
+"simple \"todo list\" application. Since managing lists of tasks is such core "
+"functionality for jBPM, there is hardly any Java code at all in this example."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:564
+#, no-c-format
+msgid ""
+"The center of this example is the jBPM process definition. There are also "
+"two JSPs and two trivial JavaBeans (There was no reason to use session "
+"beans, since they do not access the database, or have any other "
+"transactional behavior). Let's start with the process definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:575
+#, no-c-format
+msgid ""
+"&lt;process-definition name=\"todo\"&gt;\n"
+"   \n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"todo\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;task-node name=\"todo\"&gt;\n"
+"      &lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"         &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"      &lt;/task&gt;\n"
+"      &lt;transition to=\"done\"/&gt;\n"
+"   &lt;/task-node&gt;\n"
+"   \n"
+"   &lt;end-state name=\"done\"/&gt;\n"
+"   \n"
+"&lt;/process-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:578
+#, no-c-format
+msgid ""
+"The <literal>&lt;start-state&gt;</literal> node represents the logical start "
+"of the process. When the process starts, it immediately transitions to the "
+"<literal>todo</literal> node."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:583
+#, no-c-format
+msgid ""
+"The <literal>&lt;task-node&gt;</literal> node represents a <emphasis>wait "
+"state</emphasis>, where business process execution pauses, waiting for one "
+"or more tasks to be performed."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:588
+#, no-c-format
+msgid ""
+"The <literal>&lt;task&gt;</literal> element defines a task to be performed "
+"by a user. Since there is only one task defined on this node, when it is "
+"complete, execution resumes, and we transition to the end state. The task "
+"gets its description from a Seam component named <literal>todoList</literal> "
+"(one of the JavaBeans)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:593
+#, no-c-format
+msgid ""
+"Tasks need to be assigned to a user or group of users when they are created. "
+"In this case, the task is assigned to the current user, which we get from a "
+"built-in Seam component named <literal>actor</literal>. Any Seam component "
+"may be used to perform task assignment."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:598
+#, no-c-format
+msgid ""
+"The <literal>&lt;end-state&gt;</literal> node defines the logical end of the "
+"business process. When execution reaches this node, the process instance is "
+"destroyed."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:605
+#, no-c-format
+msgid ""
+"If we view this process definition using the process definition editor "
+"provided by JBossIDE, this is what it looks like:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:616
+#, no-c-format
+msgid ""
+"This document defines our <emphasis>business process</emphasis> as a graph "
+"of nodes. This is the most trivial possible business process: there is one "
+"<emphasis>task</emphasis> to be performed, and when that task is complete, "
+"the business process ends."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:619
+#, no-c-format
+msgid ""
+"The first JavaBean handles the login screen <literal>login.jsp</literal>. "
+"Its job is just to initialize the jBPM actor id using the <literal>actor</"
+"literal> component. (In a real application, it would also need to "
+"authenticate the user.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:622
+#, no-c-format
+msgid ""
+"@Name(\"login\")\n"
+"public class Login {\n"
+"   \n"
+"   @In\n"
+"   private Actor actor;\n"
+"   \n"
+"   private String user;\n"
+"\n"
+"   public String getUser() {\n"
+"      return user;\n"
+"   }\n"
+"\n"
+"   public void setUser(String user) {\n"
+"      this.user = user;\n"
+"   }\n"
+"   \n"
+"   public String login()\n"
+"   {\n"
+"      actor.setId(user);\n"
+"      return \"/todo.jsp\";\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:623
+#, no-c-format
+msgid ""
+"Here we see the use of <literal>@In</literal> to inject the built-in "
+"<literal>Actor</literal> component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:626
+#, no-c-format
+msgid "The JSP itself is trivial:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:629
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"&#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"&#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Login&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Login&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    &lt;h:form&gt;\n"
+"      &lt;div&gt;\n"
+"        &lt;h:inputText value=\"#{login.user}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Login\" action=\"#{login.login}\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"    &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:630
+#, no-c-format
+msgid ""
+"The second JavaBean is responsible for starting business process instances, "
+"and ending tasks."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:639
+#, no-c-format
+msgid ""
+"@Name(\"todoList\")\n"
+"public class TodoList {\n"
+"   \n"
+"   private String description;\n"
+"   \n"
+"   public String getDescription()\n"
+"   {\n"
+"      return description;\n"
+"   }\n"
+"\n"
+"   public void setDescription(String description) {\n"
+"      this.description = description;\n"
+"   }\n"
+"   \n"
+"   @CreateProcess(definition=\"todo\")\n"
+"   public void createTodo() {}\n"
+"   \n"
+"   @StartTask @EndTask\n"
+"   public void done() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:642
+#, no-c-format
+msgid ""
+"The description property accepts user input form the JSP page, and exposes "
+"it to the process definition, allowing the task description to be set."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:647
+#, no-c-format
+msgid ""
+"The Seam <literal>@CreateProcess</literal> annotation creates a new jBPM "
+"process instance for the named process definition."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:652
+#, no-c-format
+msgid ""
+"The Seam <literal>@StartTask</literal> annotation starts work on a task. The "
+"<literal>@EndTask</literal> ends the task, and allows the business process "
+"execution to resume."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:659
+#, no-c-format
+msgid ""
+"In a more realistic example, <literal>@StartTask</literal> and "
+"<literal>@EndTask</literal> would not appear on the same method, because "
+"there is usually work to be done using the application in order to complete "
+"the task."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:662
+#, no-c-format
+msgid "Finally, the meat of the application is in <literal>todo.jsp</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:665
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://jboss.com/products/seam/taglib\" prefix=\"s\" "
+"&#37;&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Todo List&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Todo List&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"   &lt;h:form id=\"list\"&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:outputText value=\"There are no todo items.\" rendered=\"#"
+"{empty \n"
+"             taskInstanceList}\"/&gt;\n"
+"         &lt;h:dataTable value=\"#{taskInstanceList}\" var=\"task\" rendered="
+"\"#{not empty taskInstanceList}\"&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Description\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.description}\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Created\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:outputText value=\"#{task.taskMgmtInstance."
+"processInstance.start}\"&gt;\n"
+"                    &lt;f:convertDateTime type=\"date\"/&gt;\n"
+"                &lt;/h:outputText&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Priority\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.priority}\" style=\"width: 30"
+"\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Due Date\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.dueDate}\" style=\"width: 100"
+"\"&gt;\n"
+"                    &lt;f:convertDateTime type=\"date\" dateStyle=\"short\"/"
+"&gt;\n"
+"                &lt;/h:inputText&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;s:button value=\"Done\" action=\"#{todoList.done}\" "
+"taskInstance=\"#{task}\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"         &lt;/h:dataTable&gt;\n"
+"      &lt;/div&gt;\n"
+"      &lt;div&gt;\n"
+"      &lt;h:messages/&gt;\n"
+"      &lt;/div&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:commandButton value=\"Update Items\" action=\"update\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"   &lt;h:form id=\"new\"&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:inputText value=\"#{todoList.description}\"/&gt;\n"
+"         &lt;h:commandButton value=\"Create New Item\" action=\"#{todoList."
+"createTodo}\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:666
+#, no-c-format
+msgid "Let's take this one piece at a time."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:669
+#, no-c-format
+msgid ""
+"The page renders a list of tasks, which it gets from a built-in Seam "
+"component named <literal>taskInstanceList</literal>. The list is defined "
+"inside a JSF form."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:672
+#, no-c-format
+msgid ""
+"&lt;h:form id=\"list\"&gt;\n"
+"   &lt;div&gt;\n"
+"      &lt;h:outputText value=\"There are no todo items.\" rendered=\"#{empty "
+"taskInstanceList}\"/&gt;\n"
+"      &lt;h:dataTable value=\"#{taskInstanceList}\" var=\"task\" rendered=\"#"
+"{not empty taskInstanceList}\"&gt;\n"
+"         ...\n"
+"      &lt;/h:dataTable&gt;\n"
+"   &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:673
+#, no-c-format
+msgid ""
+"Each element of the list is an instance of the jBPM class "
+"<literal>TaskInstance</literal>. The following code simply displays the "
+"interesting properties of each task in the list. For the description, "
+"priority and due date, we use input controls, to allow the user to update "
+"these values."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:676
+#, no-c-format
+msgid ""
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"       &lt;h:outputText value=\"Description\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.description}\"/&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Created\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:outputText value=\"#{task.taskMgmtInstance.processInstance.start}"
+"\"&gt;\n"
+"        &lt;f:convertDateTime type=\"date\"/&gt;\n"
+"    &lt;/h:outputText&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Priority\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.priority}\" style=\"width: 30\"/&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Due Date\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.dueDate}\" style=\"width: 100\"&gt;\n"
+"        &lt;f:convertDateTime type=\"date\" dateStyle=\"short\"/&gt;\n"
+"    &lt;/h:inputText&gt;\n"
+"&lt;/h:column&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:677
+#, no-c-format
+msgid ""
+"This button ends the task by calling the action method annotated "
+"<literal>@StartTask @EndTask</literal>. It passes the task id to Seam as a "
+"request parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:680
+#, no-c-format
+msgid ""
+"&lt;h:column&gt;\n"
+"    &lt;s:button value=\"Done\" action=\"#{todoList.done}\" taskInstance=\"#"
+"{task}\"/&gt;\n"
+"&lt;/h:column&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:681
+#, no-c-format
+msgid ""
+"(Note that this is using a Seam <literal>&lt;s:button&gt;</literal> JSF "
+"control from the <literal>seam-ui.jar</literal> package.)"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:684
+#, no-c-format
+msgid ""
+"This button is used to update the properties of the tasks. When the form is "
+"submitted, Seam and jBPM will make any changes to the tasks persistent. "
+"There is no need for any action listener method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:687
+#, no-c-format
+msgid "&lt;h:commandButton value=\"Update Items\" action=\"update\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:688
+#, no-c-format
+msgid ""
+"A second form on the page is used to create new items, by calling the action "
+"method annotated <literal>@CreateProcess</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:691
+#, no-c-format
+msgid ""
+"&lt;h:form id=\"new\"&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:inputText value=\"#{todoList.description}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Create New Item\" action=\"#{todoList."
+"createTodo}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:692
+#, no-c-format
+msgid ""
+"There are several other files needed for the example, but they are just "
+"standard jBPM and Seam configuration and not very interesting."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:699 Tutorial.xml:814 Tutorial.xml:1157 Tutorial.xml:1178
+#: Tutorial.xml:1191
+#, no-c-format
+msgid "TODO"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:707
+#, no-c-format
+msgid "Seam pageflow: the numberguess example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:708
+#, no-c-format
+msgid ""
+"For Seam applications with relatively freeform (ad hoc) navigation, JSF/Seam "
+"navigation rules are a perfectly good way to define the page flow. For "
+"applications with a more constrained style of navigation, especially for "
+"user interfaces which are more stateful, navigation rules make it difficult "
+"to really understand the flow of the system. To understand the flow, you "
+"need to piece it together from the view pages, the actions and the "
+"navigation rules."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:711
+#, no-c-format
+msgid ""
+"Seam allows you to use a jPDL process definition to define pageflow. The "
+"simple number guessing example shows how this is done."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:724
+#, no-c-format
+msgid ""
+"The example is implemented using one JavaBean, three JSP pages and a jPDL "
+"pageflow definition. Let's begin with the pageflow:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:734
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"numberGuess\"&gt;\n"
+"   \n"
+"   &lt;start-page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"          &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"      &lt;/transition&gt;\n"
+"   &lt;/start-page&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess."
+"correctGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateRemainingGuesses\" expression=\"#{numberGuess."
+"lastGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"lose\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"displayGuess\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"lose\" view-id=\"/lose.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:737
+#, no-c-format
+msgid ""
+"The <literal>&lt;page&gt;</literal> element defines a wait state where the "
+"system displays a particular JSF view and waits for user input. The "
+"<literal>view-id</literal> is the same JSF view id used in plain JSF "
+"navigation rules. The <literal>redirect</literal> attribute tells Seam to "
+"use post-then-redirect when navigating to the page. (This results in "
+"friendly browser URLs.)"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:742
+#, no-c-format
+msgid ""
+"The <literal>&lt;transition&gt;</literal> element names a JSF outcome. The "
+"transition is triggered when a JSF action results in that outcome. Execution "
+"will then proceed to the next node of the pageflow graph, after invocation "
+"of any jBPM transition actions."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:747
+#, no-c-format
+msgid ""
+"A transition <literal>&lt;action&gt;</literal> is just like a JSF action, "
+"except that it occurs when a jBPM transition occurs. The transition action "
+"can invoke any Seam component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:752
+#, no-c-format
+msgid ""
+"A <literal>&lt;decision&gt;</literal> node branches the pageflow, and "
+"determines the next node to execute by evaluating a JSF EL expression."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:759
+#, no-c-format
+msgid "Here is what the pageflow looks like in the JBossIDE pageflow editor:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:770
+#, no-c-format
+msgid ""
+"Now that we have seen the pageflow, it is very, very easy to understand the "
+"rest of the application!"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:773
+#, no-c-format
+msgid ""
+"Here is the main page of the application, <literal>numberGuess.jsp</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:776
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"&#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"&#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Guess a number...&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Guess a number...&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    &lt;h:form&gt;\n"
+"        &lt;h:outputText value=\"Higher!\" rendered=\"#{numberGuess."
+"randomNumber&gt;numberGuess.currentGuess}\" /&gt;\n"
+"        &lt;h:outputText value=\"Lower!\" rendered=\"#{numberGuess."
+"randomNumber&lt;numberGuess.currentGuess}\" /&gt;\n"
+"        &lt;br /&gt;\n"
+"        I'm thinking of a number between &lt;h:outputText value=\"#"
+"{numberGuess.smallest}\" /&gt; and \n"
+"        &lt;h:outputText value=\"#{numberGuess.biggest}\" /&gt;. You have \n"
+"        &lt;h:outputText value=\"#{numberGuess.remainingGuesses}\" /&gt; "
+"guesses.\n"
+"        &lt;br /&gt;\n"
+"        Your guess: \n"
+"        &lt;h:inputText value=\"#{numberGuess.currentGuess}\" id=\"guess\" "
+"required=\"true\"&gt;\n"
+"            &lt;f:validateLongRange\n"
+"                maximum=\"#{numberGuess.biggest}\" \n"
+"                minimum=\"#{numberGuess.smallest}\"/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"        &lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"guess"
+"\" /&gt;\n"
+"        &lt;br/&gt;\n"
+"        &lt;h:message for=\"guess\" style=\"color: red\"/&gt;\n"
+"    &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:777
+#, no-c-format
+msgid ""
+"Notice how the command button names the <literal>guess</literal> transition "
+"instead of calling an action directly."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:780
+#, no-c-format
+msgid "The <literal>win.jsp</literal> page is predictable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:783
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"&#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"&#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;You won!&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;You won!&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    Yes, the answer was &lt;h:outputText value=\"#{numberGuess.currentGuess}"
+"\" /&gt;.\n"
+"    It took you &lt;h:outputText value=\"#{numberGuess.guessCount}\" /&gt; "
+"guesses.\n"
+"    Would you like to &lt;a href=\"numberGuess.seam\"&gt;play again&lt;/"
+"a&gt;?\n"
+"  &lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:784
+#, no-c-format
+msgid ""
+"As is <literal>lose.jsp</literal> (which I can't be bothered copy/pasting). "
+"Finally, the JavaBean Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:792
+#, no-c-format
+msgid ""
+"@Name(\"numberGuess\")\n"
+"@Scope(ScopeType.CONVERSATION)\n"
+"public class NumberGuess {\n"
+"   \n"
+"   private int randomNumber;\n"
+"   private Integer currentGuess;\n"
+"   private int biggest;\n"
+"   private int smallest;\n"
+"   private int guessCount;\n"
+"   private int maxGuesses;\n"
+"   \n"
+"   @Create \n"
+"   @Begin(pageflow=\"numberGuess\")\n"
+"   public void begin()\n"
+"   {\n"
+"      randomNumber = new Random().nextInt(100);\n"
+"      guessCount = 0;\n"
+"      biggest = 100;\n"
+"      smallest = 1;\n"
+"   }\n"
+"   \n"
+"   public void setCurrentGuess(Integer guess)\n"
+"   {\n"
+"      this.currentGuess = guess;\n"
+"   }\n"
+"   \n"
+"   public Integer getCurrentGuess()\n"
+"   {\n"
+"      return currentGuess;\n"
+"   }\n"
+"   \n"
+"   public void guess()\n"
+"   {\n"
+"      if (currentGuess&gt;randomNumber)\n"
+"      {\n"
+"         biggest = currentGuess - 1;\n"
+"      }\n"
+"      if (currentGuess&lt;randomNumber)\n"
+"      {\n"
+"         smallest = currentGuess + 1;\n"
+"      }\n"
+"      guessCount ++;\n"
+"   }\n"
+"   \n"
+"   public boolean isCorrectGuess()\n"
+"   {\n"
+"      return currentGuess==randomNumber;\n"
+"   }\n"
+"   \n"
+"   public int getBiggest()\n"
+"   {\n"
+"      return biggest;\n"
+"   }\n"
+"   \n"
+"   public int getSmallest()\n"
+"   {\n"
+"      return smallest;\n"
+"   }\n"
+"   \n"
+"   public int getGuessCount()\n"
+"   {\n"
+"      return guessCount;\n"
+"   }\n"
+"   \n"
+"   public boolean isLastGuess()\n"
+"   {\n"
+"      return guessCount==maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getRemainingGuesses() {\n"
+"      return maxGuesses-guessCount;\n"
+"   }\n"
+"\n"
+"   public void setMaxGuesses(int maxGuesses) {\n"
+"      this.maxGuesses = maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getMaxGuesses() {\n"
+"      return maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getRandomNumber() {\n"
+"      return randomNumber;\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:795
+#, no-c-format
+msgid ""
+"The first time a JSP page asks for a <literal>numberGuess</literal> "
+"component, Seam will create a new one for it, and the <literal>@Create</"
+"literal> method will be invoked, allowing the component to initialize itself."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:800
+#, no-c-format
+msgid ""
+"The <literal>@Begin</literal> annotation starts a Seam "
+"<emphasis>conversation</emphasis> (much more about that later), and "
+"specifies the pageflow definition to use for the conversation's page flow."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:807
+#, no-c-format
+msgid ""
+"As you can see, this Seam component is pure business logic! It doesn't need "
+"to know anything at all about the user interaction flow. This makes the "
+"component potentially more reuseable."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:822
+#, no-c-format
+msgid "A complete Seam application: the Hotel Booking example"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:824
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:825
+#, no-c-format
+msgid ""
+"The booking application is a complete hotel room reservation system "
+"incorporating the following features:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:830
+#, no-c-format
+msgid "User registration"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:835
+#, no-c-format
+msgid "Login"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:840
+#, no-c-format
+msgid "Logout"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:845
+#, no-c-format
+msgid "Set password"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:850
+#, no-c-format
+msgid "Hotel search"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:855
+#, no-c-format
+msgid "Hotel selection"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:860
+#, no-c-format
+msgid "Room reservation"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:865
+#, no-c-format
+msgid "Reservation confirmation"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:870
+#, no-c-format
+msgid "Existing reservation list"
+msgstr ""
+
+#. Tag: screeninfo
+#: Tutorial.xml:875
+#, no-c-format
+msgid "Booking example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:883
+#, no-c-format
+msgid ""
+"The booking application uses JSF, EJB 3.0 and Seam, together with Facelets "
+"for the view. There is also a port of this application to JSF, Facelets, "
+"Seam, JavaBeans and Hibernate3."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:886
+#, no-c-format
+msgid ""
+"One of the things you'll notice if you play with this application for long "
+"enough is that it is extremely <emphasis>robust</emphasis>. You can play "
+"with back buttons and browser refresh and opening multiple windows and "
+"entering nonsensical data as much as you like and you will find it very "
+"difficult to make the application crash. You might think that we spent weeks "
+"testing and fixing bugs to achive this. Actually, this is not the case. Seam "
+"was designed to make it very straightforward to build robust web "
+"applications and a lot of robustness that you are probably used to having to "
+"code yourself comes naturally and automatically with Seam."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:889
+#, no-c-format
+msgid ""
+"As you browse the sourcecode of the example application, and learn how the "
+"application works, observe how the declarative state management and "
+"integrated validation has been used to achieve this robustness."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:895
+#, no-c-format
+msgid "Overview of the booking example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:896
+#, no-c-format
+msgid ""
+"The project structure is identical to the previous one, to install and "
+"deploy this application, please refer to <xref linkend=\"Seam_Tutorial-"
+"Try_the_examples\"/>. Once you've successfully started the application, you "
+"can access it by pointing your browser to <ulink url=\"http://localhost:8080/"
+"seam-booking/\"><literal>http://localhost:8080/seam-booking/</literal></"
+"ulink>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:899
+#, no-c-format
+msgid ""
+"Just ten classes (plus six session beans local interfaces and 1 annotation "
+"interface) where used to implement this application. Six session bean action "
+"listeners contain all the business logic for the listed features."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:904
+#, no-c-format
+msgid ""
+"<literal>BookingListAction</literal> retrieves existing bookings for the "
+"currently logged in user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:907
+#, no-c-format
+msgid ""
+"<literal>ChangePasswordAction</literal> updates the password of the "
+"currently logged in user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:910
+#, no-c-format
+msgid ""
+"<literal>HotelBookingAction</literal> implements the core functionality of "
+"the application: hotel room searching, selection, booking and booking "
+"confirmation. This functionality is implemented as a <emphasis>conversation</"
+"emphasis>, so this is the most interesting class in the application."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:913
+#, no-c-format
+msgid ""
+"<literal>LoginAction</literal> validates the login details and retrieves the "
+"logged in user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:916
+#, no-c-format
+msgid "<literal>LogoutAction</literal> ends the login session."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:919
+#, no-c-format
+msgid "<literal>RegisterAction</literal> registers a new system user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:922
+#, no-c-format
+msgid "Three entity beans implement the application's persistent domain model."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:927
+#, no-c-format
+msgid "<literal>Hotel</literal> is an entity bean that represent a hotel"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:930
+#, no-c-format
+msgid ""
+"<literal>Booking</literal> is an entity bean that represents an existing "
+"booking"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:933
+#, no-c-format
+msgid ""
+"<literal>User</literal> is an entity bean to represents a user who can make "
+"hotel bookings"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:936
+#, no-c-format
+msgid ""
+"Finally, the <literal>LoggedIn</literal> annotation and the "
+"<literal>LoggedInInterceptor</literal> are used to protect actions that "
+"require a logged in user."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:942
+#, no-c-format
+msgid "Understanding Seam conversations"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:943
+#, no-c-format
+msgid ""
+"We encourage you browse the sourcecode at your pleasure. In this tutorial "
+"we'll concentrate upon one particular piece of functionality: hotel search, "
+"selection, booking and confirmation. From the point of view of the user, "
+"everything from selecting a hotel to confirming a booking is one continuous "
+"unit of work, a <emphasis>conversation</emphasis>. Searching, however, is "
+"<emphasis>not</emphasis> part of the conversation. The user can select "
+"multiple hotels from the same search results page, in different browser tabs."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:946
+#, no-c-format
+msgid ""
+"Most web application architectures have no first class construct to "
+"represent a conversation. This causes enormous problems managing state "
+"associated with the conversation. Usually, Java web applications use a "
+"combination of two techniques: first, some state is thrown into the "
+"<literal>HttpSession</literal>; second, persistable state is flushed to the "
+"database after every request, and reconstructed from the database at the "
+"beginning of each new request."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:949
+#, no-c-format
+msgid ""
+"Since the database is the least scalable tier, this often results in an "
+"utterly unacceptable lack of scalability. Added latency is also a problem, "
+"due to the extra traffic to and from the database on every request. To "
+"reduce this redundant traffic, Java applications often introduce a data "
+"(second-level) cache that keeps commonly accessed data between requests. "
+"This cache is necessarily inefficient, because invalidation is based upon an "
+"LRU policy instead of being based upon when the user has finished working "
+"with the data. Furthermore, because the cache is shared between many "
+"concurrent transactions, we've introduced a whole raft of problem's "
+"associated with keeping the cached state consistent with the database."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:952
+#, no-c-format
+msgid ""
+"Now consider the state held in the <literal>HttpSession</literal>. By very "
+"careful programming, we might be able to control the size of the session "
+"data. This is a lot more difficult than it sounds, since web browsers permit "
+"ad hoc non-linear navigation. But suppose we suddenly discover a system "
+"requirement that says that a user is allowed to have <emphasis>mutiple "
+"concurrent conversations</emphasis>, halfway through the development of the "
+"system (this has happened to me). Developing mechanisms to isolate session "
+"state associated with different concurrent conversations, and incorporating "
+"failsafes to ensure that conversation state is destroyed when the user "
+"aborts one of the conversations by closing a browser window or tab is not "
+"for the faint hearted (I've implemented this stuff twice so far, once for a "
+"client application, once for Seam, but I'm famously psychotic)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:955
+#, no-c-format
+msgid "Now there is a better way."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:958
+#, no-c-format
+msgid ""
+"Seam introduces the <emphasis>conversation context</emphasis> as a first "
+"class construct. You can safely keep conversational state in this context, "
+"and be assured that it will have a well-defined lifecycle. Even better, you "
+"won't need to be continually pushing data back and forth between the "
+"application server and the database, since the conversation context is a "
+"natural cache of data that the user is currently working with."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:961
+#, no-c-format
+msgid ""
+"Usually, the components we keep in the conversation context are stateful "
+"session beans. (We can also keep entity beans and JavaBeans in the "
+"conversation context.) There is an ancient canard in the Java community that "
+"stateful session beans are a scalability killer. This may have been true in "
+"1998 when WebFoobar 1.0 was released. It is no longer true today. "
+"Application servers like JBoss 4.0 have extremely sophisticated mechanisms "
+"for stateful session bean state replication. (For example, the JBoss EJB3 "
+"container performs fine-grained replication, replicating only those bean "
+"attribute values which actually changed.) Note that all the traditional "
+"technical arguments for why stateful beans are inefficient apply equally to "
+"the <literal>HttpSession</literal>, so the practice of shifting state from "
+"business tier stateful session bean components to the web session to try and "
+"improve performance is unbelievably misguided. It is certainly possible to "
+"write unscalable applications using stateful session beans, by using "
+"stateful beans incorrectly, or by using them for the wrong thing. But that "
+"doesn't mean you should <emphasis>never</emphasis> use them. Anyway, Seam "
+"guides you toward a safe usage model. Welcome to 2005."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:964
+#, no-c-format
+msgid "OK, I'll stop ranting now, and get back to the tutorial."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:967
+#, no-c-format
+msgid ""
+"The booking example application shows how stateful components with different "
+"scopes can collaborate together to achieve complex behaviors. The main page "
+"of the booking application allows the user to search for hotels. The search "
+"results are kept in the Seam session scope. When the user navigates to one "
+"of these hotels, a conversation begins, and a conversation scoped component "
+"calls back to the session scoped component to retrieve the selected hotel."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:970
+#, no-c-format
+msgid ""
+"The booking example also demonstrates the use of Ajax4JSF to implement rich "
+"client behavior without the use of handwritten JavaScript."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:973
+#, no-c-format
+msgid ""
+"The search functionality is implemented using a session-scope stateful "
+"session bean, similar to the one we saw in the message list example above."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:983
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"hotelSearch\")\n"
+"@Scope(ScopeType.SESSION)\n"
+"@LoggedIn\n"
+"public class HotelSearchingAction implements HotelSearching\n"
+"{\n"
+"   \n"
+"   @PersistenceContext\n"
+"   private EntityManager em;\n"
+"   \n"
+"   private String searchString;\n"
+"   private int pageSize = 10;\n"
+"   private int page;\n"
+"   \n"
+"   @DataModel\n"
+"   private List&lt;Hotel&gt; hotels;\n"
+"   \n"
+"   public String find()\n"
+"   {\n"
+"      page = 0;\n"
+"      queryHotels();   \n"
+"      return \"main\";\n"
+"   }\n"
+"\n"
+"   public String nextPage()\n"
+"   {\n"
+"      page++;\n"
+"      queryHotels();\n"
+"      return \"main\";\n"
+"   }\n"
+"      \n"
+"   private void queryHotels()\n"
+"   {\n"
+"      String searchPattern = searchString==null ? \"&#37;\" : '&#37;' + \n"
+"          searchString.toLowerCase().replace('*', '&#37;') + '&#37;';\n"
+"      hotels = em.createQuery(\"select h from Hotel h where lower(h.name) "
+"like\n"
+"          :search or lower(h.city) like :search \n"
+"          or lower(h.zip) like :search or lower(h.address) like :search\")\n"
+"            .setParameter(\"search\", searchPattern)\n"
+"            .setMaxResults(pageSize)\n"
+"            .setFirstResult( page * pageSize )\n"
+"            .getResultList();\n"
+"   }\n"
+"   \n"
+"   public boolean isNextPageAvailable()\n"
+"   {\n"
+"      return hotels!=null &amp;&amp; hotels.size()==pageSize;\n"
+"   }\n"
+"   \n"
+"   public int getPageSize() {\n"
+"      return pageSize;\n"
+"   }\n"
+"\n"
+"   public void setPageSize(int pageSize) {\n"
+"      this.pageSize = pageSize;\n"
+"   }\n"
+"\n"
+"   public String getSearchString()\n"
+"   {\n"
+"      return searchString;\n"
+"   }\n"
+"\n"
+"   public void setSearchString(String searchString)\n"
+"   {\n"
+"      this.searchString = searchString;\n"
+"   }\n"
+"   \n"
+"   @Destroy @Remove\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:986
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Stateful</literal> annotation identifies this "
+"class as a stateful session bean. Stateful session beans are scoped to the "
+"conversation context by default."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:991
+#, no-c-format
+msgid ""
+"The <literal>@LoggedIn</literal> annotation applies a custom Seam "
+"interceptor to the component. This works because <literal>@LoggedIn</"
+"literal> is marked with an <literal>@Interceptor</literal> meta-annotation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:996
+#, no-c-format
+msgid ""
+"The <link linkend=\"datamodel-annotation\"><literal>@DataModel</literal></"
+"link> annotation exposes a <literal>List</literal> as a JSF "
+"<literal>ListDataModel</literal>. This makes it easy to implement clickable "
+"lists for search screens. In this case, the list of hotels is exposed to the "
+"page as a <literal>ListDataModel</literal> in the conversation variable "
+"named <literal>hotels</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1001
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Remove</literal> annotation specifies that a "
+"stateful session bean should be removed and its state destroyed after "
+"invocation of the annotated method. In Seam, all stateful session beans "
+"should define a method marked <literal>@Destroy @Remove</literal>. This is "
+"the EJB remove method that will be called when Seam destroys the session "
+"context. Actually, the <link linkend=\"destroy-annotation"
+"\"><literal>@Destroy</literal></link> annotation is of more general "
+"usefulness, since it can be used for any kind of cleanup that should happen "
+"when any Seam context ends. If you don't have an <literal>@Destroy @Remove</"
+"literal> method, state will leak and you will suffer performance problems."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1008
+#, no-c-format
+msgid ""
+"The main page of the application is a Facelets page. Let's look at the "
+"fragment which relates to searching for hotels:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1018
+#, no-c-format
+msgid ""
+"&lt;div class=\"section\"&gt;\n"
+"&lt;h:form&gt;\n"
+"  \n"
+"  &lt;span class=\"errors\"&gt;\n"
+"    &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"  &lt;/span&gt;\n"
+"    \n"
+"  &lt;h1&gt;Search Hotels&lt;/h1&gt;\n"
+"  &lt;fieldset&gt; \n"
+"     &lt;h:inputText value=\"#{hotelSearch.searchString}\" style=\"width: "
+"165px;\"&gt;\n"
+"        &lt;a:support event=\"onkeyup\" actionListener=\"#{hotelSearch.find}"
+"\" \n"
+"                   reRender=\"searchResults\" /&gt;\n"
+"     &lt;/h:inputText&gt;\n"
+"     &amp;#160;\n"
+"     &lt;a:commandButton value=\"Find Hotels\" action=\"#{hotelSearch.find}"
+"\" \n"
+"                      styleClass=\"button\" reRender=\"searchResults\"/&gt;\n"
+"     &amp;#160;\n"
+"     &lt;a:status&gt;\n"
+"        &lt;f:facet name=\"start\"&gt;\n"
+"           &lt;h:graphicImage value=\"/img/spinner.gif\"/&gt;\n"
+"        &lt;/f:facet&gt;\n"
+"     &lt;/a:status&gt;\n"
+"     &lt;br/&gt;\n"
+"     &lt;h:outputLabel for=\"pageSize\"&gt;Maximum results:&lt;/h:"
+"outputLabel&gt;&amp;#160;\n"
+"     &lt;h:selectOneMenu value=\"#{hotelSearch.pageSize}\" id=\"pageSize"
+"\"&gt;\n"
+"        &lt;f:selectItem itemLabel=\"5\" itemValue=\"5\"/&gt;\n"
+"        &lt;f:selectItem itemLabel=\"10\" itemValue=\"10\"/&gt;\n"
+"        &lt;f:selectItem itemLabel=\"20\" itemValue=\"20\"/&gt;\n"
+"     &lt;/h:selectOneMenu&gt;\n"
+"  &lt;/fieldset&gt;\n"
+"    \n"
+"&lt;/h:form&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;a:outputPanel id=\"searchResults\"&gt;\n"
+"  &lt;div class=\"section\"&gt;\n"
+"  &lt;h:outputText value=\"No Hotels Found\" \n"
+"                rendered=\"#{hotels != null and hotels.rowCount==0}\"/&gt;\n"
+"  &lt;h:dataTable value=\"#{hotels}\" var=\"hot\" rendered=\"#{hotels."
+"rowCount&gt;0}\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Name&lt;/f:facet&gt;\n"
+"      #{hot.name}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Address&lt;/f:facet&gt;\n"
+"      #{hot.address}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;City, State&lt;/f:facet&gt;\n"
+"      #{hot.city}, #{hot.state}, #{hot.country}\n"
+"    &lt;/h:column&gt; \n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Zip&lt;/f:facet&gt;\n"
+"      #{hot.zip}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"      &lt;s:link value=\"View Hotel\" action=\"#{hotelBooking.selectHotel"
+"(hot)}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"  &lt;/h:dataTable&gt;\n"
+"  &lt;s:link value=\"More results\" action=\"#{hotelSearch.nextPage}\" \n"
+"          rendered=\"#{hotelSearch.nextPageAvailable}\"/&gt;\n"
+"  &lt;/div&gt;\n"
+"&lt;/a:outputPanel&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1021
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:support&gt;</literal> tag allows a JSF action "
+"event listener to be called by asynchronous <literal>XMLHttpRequest</"
+"literal> when a JavaScript event like <literal>onkeyup</literal> occurs. "
+"Even better, the <literal>reRender</literal> attribute lets us render a "
+"fragment of the JSF page and perform a partial page update when the "
+"asynchronous response is received."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1026
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:status&gt;</literal> tag lets us display a "
+"cheesy annimated image while we wait for asynchronous requests to return."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1031
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:outputPanel&gt;</literal> tag defines a region "
+"of the page which can be re-rendered by an asynchronous request."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1036
+#, no-c-format
+msgid ""
+"The Seam <literal>&lt;s:link&gt;</literal> tag lets us attach a JSF action "
+"listener to an ordinary (non-JavaScript) HTML link. The advantage of this "
+"over the standard JSF <literal>&lt;h:commandLink&gt;</literal> is that it "
+"preserves the operation of \"open in new window\" and \"open in new tab\". "
+"Also notice that we use a method binding with a parameter: <literal>#"
+"{hotelBooking.selectHotel(hot)}</literal>. This is not possible in the "
+"standard Unified EL, but Seam provides an extension to the EL that lets you "
+"use parameters on any method binding expression."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1043
+#, no-c-format
+msgid ""
+"This page displays the search results dynamically as we type, and lets us "
+"choose a hotel and pass it to the <literal>selectHotel()</literal> method of "
+"the <literal>HotelBookingAction</literal>, which is where the "
+"<emphasis>really</emphasis> interesting stuff is going to happen."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1046
+#, no-c-format
+msgid ""
+"Now lets see how the booking example application uses a conversation-scoped "
+"stateful session bean to achieve a natural cache of persistent data related "
+"to the conversation. The following code example is pretty long. But if you "
+"think of it as a list of scripted actions that implement the various steps "
+"of the conversation, it's understandable. Read the class from top to bottom, "
+"as if it were a story."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1057
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"hotelBooking\")\n"
+"@LoggedIn\n"
+"public class HotelBookingAction implements HotelBooking\n"
+"{\n"
+"   \n"
+"   @PersistenceContext(type=EXTENDED)\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @In \n"
+"   private User user;\n"
+"   \n"
+"   @In(required=false) @Out\n"
+"   private Hotel hotel;\n"
+"   \n"
+"   @In(required=false) \n"
+"   @Out(required=false)\n"
+"   private Booking booking;\n"
+"     \n"
+"   @In\n"
+"   private FacesMessages facesMessages;\n"
+"      \n"
+"   @In\n"
+"   private Events events;\n"
+"   \n"
+"   @Logger \n"
+"   private Log log;\n"
+"   \n"
+"   @Begin\n"
+"   public String selectHotel(Hotel selectedHotel)\n"
+"   {\n"
+"      hotel = em.merge(selectedHotel);\n"
+"      return \"hotel\";\n"
+"   }\n"
+"   \n"
+"   public String bookHotel()\n"
+"   {      \n"
+"      booking = new Booking(hotel, user);\n"
+"      Calendar calendar = Calendar.getInstance();\n"
+"      booking.setCheckinDate( calendar.getTime() );\n"
+"      calendar.add(Calendar.DAY_OF_MONTH, 1);\n"
+"      booking.setCheckoutDate( calendar.getTime() );\n"
+"      \n"
+"      return \"book\";\n"
+"   }\n"
+"\n"
+"   public String setBookingDetails()\n"
+"   {\n"
+"      if (booking==null || hotel==null) return \"main\";\n"
+"      if ( !booking.getCheckinDate().before( booking.getCheckoutDate() ) )\n"
+"      {\n"
+"         facesMessages.add(\"Check out date must be later than check in date"
+"\");\n"
+"         return null;\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return \"confirm\";\n"
+"      }\n"
+"   }\n"
+"\n"
+"   @End\n"
+"   public String confirm()\n"
+"   {\n"
+"      if (booking==null || hotel==null) return \"main\";\n"
+"      em.persist(booking);\n"
+"      facesMessages.add\n"
+"          (\"Thank you, #{user.name}, your confimation number for #{hotel."
+"name} is #{booking.id}\");\n"
+"      log.info(\"New booking: #{booking.id} for #{user.username}\");\n"
+"      events.raiseEvent(\"bookingConfirmed\");\n"
+"      return \"confirmed\";\n"
+"   }\n"
+"   \n"
+"   @End\n"
+"   public String cancel()\n"
+"   {\n"
+"      return \"main\";\n"
+"   }\n"
+"   \n"
+"   @Destroy @Remove\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1060
+#, no-c-format
+msgid ""
+"This bean uses an EJB3 <emphasis>extended persistence context</emphasis>, so "
+"that any entity instances remain managed for the whole lifecycle of the "
+"stateful session bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1065
+#, no-c-format
+msgid ""
+"The <link linkend=\"out-annotation\"><literal>@Out</literal></link> "
+"annotation declares that an attribute value is <emphasis>outjected</"
+"emphasis> to a context variable after method invocations. In this case, the "
+"context variable named <literal>hotel</literal> will be set to the value of "
+"the <literal>hotel</literal> instance variable after every action listener "
+"invocation completes."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1070
+#, no-c-format
+msgid ""
+"The <link linkend=\"begin-annotation\"><literal>@Begin</literal></link> "
+"annotation specifies that the annotated method begins a <emphasis>long-"
+"running conversation</emphasis>, so the current conversation context will "
+"not be destroyed at the end of the request. Instead, it will be reassociated "
+"with every request from the current window, and destroyed either by timeout "
+"due to conversation inactivity or invocation of a matching <literal>@End</"
+"literal> method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1075
+#, no-c-format
+msgid ""
+"The <link linkend=\"end-annotation\"><literal>@End</literal></link> "
+"annotation specifies that the annotated method ends the current long-running "
+"conversation, so the current conversation context will be destroyed at the "
+"end of the request."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1080
+#, no-c-format
+msgid ""
+"This EJB remove method will be called when Seam destroys the conversation "
+"context. Don't ever forget to define this method!"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1087
+#, no-c-format
+msgid ""
+"<literal>HotelBookingAction</literal> contains all the action listener "
+"methods that implement selection, booking and booking confirmation, and "
+"holds state related to this work in its instance variables. We think you'll "
+"agree that this code is much cleaner and simpler than getting and setting "
+"<literal>HttpSession</literal> attributes."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1090
+#, no-c-format
+msgid ""
+"Even better, a user can have multiple isolated conversations per login "
+"session. Try it! Log in, run a search, and navigate to different hotel pages "
+"in multiple browser tabs. You'll be able to work on creating two different "
+"hotel reservations at the same time. If you leave any one conversation "
+"inactive for long enough, Seam will eventually time out that conversation "
+"and destroy its state. If, after ending a conversation, you backbutton to a "
+"page of that conversation and try to perform an action, Seam will detect "
+"that the conversation was already ended, and redirect you to the search page."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1096
+#, no-c-format
+msgid "The Seam UI control library"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1097
+#, no-c-format
+msgid ""
+"If you check inside the WAR file for the booking application, you'll find "
+"<literal>seam-ui.jar</literal> in the <literal>WEB-INF/lib</literal> "
+"directory. This package contains a number of JSF custom controls that "
+"integrate with Seam. The booking application uses the <literal>&lt;s:link&gt;"
+"</literal> control for navigation from the search screen to the hotel page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1100
+#, no-c-format
+msgid ""
+"&lt;s:link value=\"View Hotel\" action=\"#{hotelBooking.selectHotel}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1101
+#, no-c-format
+msgid ""
+"The use of <literal>&lt;s:link&gt;</literal> here allows us to attach an "
+"action listener to a HTML link without breaking the browser's \"open in new "
+"window\" feature. The standard JSF <literal>&lt;h:commandLink&gt;</literal> "
+"does not work with \"open in new window\". We'll see later that <literal>&lt;"
+"s:link&gt;</literal> also offers a number of other useful features, "
+"including conversation propagation rules."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1104
+#, no-c-format
+msgid ""
+"The booking application uses some other Seam and Ajax4JSF controls, "
+"especially on the <literal>/book.xhtml</literal> page. We won't get into the "
+"details of those controls here, but if you want to understand this code, "
+"please refer to the chapter covering Seam's functionality for JSF form "
+"validation."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1110
+#, no-c-format
+msgid "The Seam Debug Page"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1111
+#, no-c-format
+msgid ""
+"The WAR also includes <literal>seam-debug.jar</literal>. If this jar is "
+"deployed in <literal>WEB-INF/lib</literal>, along with the Facelets, and if "
+"you set the following Seam property in <literal>web.xml</literal> or "
+"<literal>seam.properties</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1114
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;org.jboss.seam.core.init.debug&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;true&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1115
+#, no-c-format
+msgid ""
+"Then the Seam debug page will be available. This page lets you browse and "
+"inspect the Seam components in any of the Seam contexts associated with your "
+"current login session. Just point your browser at <ulink url=\"http://"
+"localhost:8080/seam-booking/debug.seam\"><literal>http://localhost:8080/seam-"
+"booking/debug.seam</literal></ulink>."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1131
+#, no-c-format
+msgid "A complete application featuring Seam and jBPM: the DVD Store example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1132
+#, no-c-format
+msgid ""
+"The DVD Store demo application shows the practical usage of jBPM for both "
+"task management and pageflow."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1135
+#, no-c-format
+msgid ""
+"The user screens take advantage of a jPDL pageflow to implement searching "
+"and shopping cart functionality."
+msgstr ""
+
+#. Tag: screeninfo
+#: Tutorial.xml:1138 Tutorial.xml:1149 Tutorial.xml:1170
+#, no-c-format
+msgid "DVD Store example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1146
+#, no-c-format
+msgid ""
+"The administration screens take use jBPM to manage the approval and shipping "
+"cycle for orders. The business process may even be changed dynamically, by "
+"selecting a different process definition!"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1160
+#, no-c-format
+msgid "Look in the <literal>dvdstore</literal> directory."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1166
+#, no-c-format
+msgid ""
+"A complete application featuring Seam workspace management: the Issue "
+"Tracker example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1167
+#, no-c-format
+msgid ""
+"The Issue Tracker demo shows off Seam's workspace management functionality: "
+"the conversation switcher, conversation list and breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1181
+#, no-c-format
+msgid "Look in the <literal>issues</literal> directory."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1187
+#, no-c-format
+msgid "An example of Seam with Hibernate: the Hibernate Booking example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1188
+#, no-c-format
+msgid ""
+"The Hibernate Booking demo is a straight port of the Booking demo to an "
+"alternative architecture that uses Hibernate for persistence and JavaBeans "
+"instead of session beans."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1194
+#, no-c-format
+msgid "Look in the <literal>hibernate</literal> directory."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1200
+#, no-c-format
+msgid "A RESTful Seam application: the Blog example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1201
+#, no-c-format
+msgid ""
+"Seam makes it very easy to implement applications which keep state on the "
+"server-side. However, server-side state is not always appropriate, "
+"especially in for functionality that serves up <emphasis>content</emphasis>. "
+"For this kind of problem we often need to let the user bookmark pages and "
+"have a relatively stateless server, so that any page can be accessed at any "
+"time, via the bookmark. The Blog example shows how to a implement RESTful "
+"application using Seam. Every page of the application can be bookmarked, "
+"including the search results page."
+msgstr ""
+
+#. Tag: screeninfo
+#: Tutorial.xml:1204
+#, no-c-format
+msgid "Blog example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1212
+#, no-c-format
+msgid ""
+"The Blog example demonstrates the use of \"pull\"-style MVC, where instead "
+"of using action listener methods to retrieve data and prepare the data for "
+"the view, the view pulls data from components as it is being rendered."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1216
+#, no-c-format
+msgid "Using \"pull\"-style MVC"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1217
+#, no-c-format
+msgid ""
+"This snippet from the <literal>index.xhtml</literal> facelets page displays "
+"a list of recent blog entries:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1220
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{blog.recentBlogEntries}\" var=\"blogEntry\" rows="
+"\"3\"&gt;\n"
+"   &lt;h:column&gt;\n"
+"      &lt;div class=\"blogEntry\"&gt;\n"
+"         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"         &lt;div&gt;\n"
+"            &lt;h:outputText escape=\"false\" \n"
+"                  value=\"#{blogEntry.excerpt==null ? blogEntry.body : "
+"blogEntry.excerpt}\"/&gt;\n"
+"         &lt;/div&gt;\n"
+"         &lt;p&gt;\n"
+"            &lt;h:outputLink value=\"entry.seam\" rendered=\"#{blogEntry."
+"excerpt!=null}\"&gt;\n"
+"               &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/"
+"&gt;\n"
+"               Read more...\n"
+"            &lt;/h:outputLink&gt;\n"
+"         &lt;/p&gt;\n"
+"         &lt;p&gt;\n"
+"            [Posted on \n"
+"            &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"               &lt;f:convertDateTime timeZone=\"#{blog.timeZone}\" locale=\"#"
+"{blog.locale}\" \n"
+"                   type=\"both\"/&gt;\n"
+"            &lt;/h:outputText&gt;]\n"
+"            &amp;#160;\n"
+"            &lt;h:outputLink value=\"entry.seam\"&gt;[Link]\n"
+"               &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/"
+"&gt;\n"
+"            &lt;/h:outputLink&gt;\n"
+"         &lt;/p&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1221
+#, no-c-format
+msgid ""
+"If we navigate to this page from a bookmark, how does the data used by the "
+"<literal>&lt;h:dataTable&gt;</literal> actually get initialized? Well, what "
+"happens is that the <literal>Blog</literal> is retrieved lazily&mdash;"
+"\"pulled\"&mdash;when needed, by a Seam component named <literal>blog</"
+"literal>. This is the opposite flow of control to what is usual in "
+"traditional web action-based frameworks like Struts."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1229
+#, no-c-format
+msgid ""
+"@Name(\"blog\")\n"
+"@Scope(ScopeType.STATELESS)\n"
+"public class BlogService \n"
+"{\n"
+"   \n"
+"   @In\n"
+"   private EntityManager entityManager;\n"
+"  \n"
+"   @Unwrap\n"
+"   public Blog getBlog()\n"
+"   {\n"
+"      return (Blog) entityManager.createQuery(\"from Blog b left join fetch "
+"b.blogEntries\")\n"
+"            .setHint(\"org.hibernate.cacheable\", true)\n"
+"            .getSingleResult();\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1232
+#, no-c-format
+msgid ""
+"This component uses a <emphasis>seam-managed persistence context</emphasis>. "
+"Unlike the other examples we've seen, this persistence context is managed by "
+"Seam, instead of by the EJB3 container. The persistence context spans the "
+"entire web request, allowing us to avoid any exceptions that occur when "
+"accessing unfetched associations in the view."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1237
+#, no-c-format
+msgid ""
+"The <literal>@Unwrap</literal> annotation tells Seam to provide the return "
+"value of the method&mdash;the <literal>Blog</literal>&mdash;instead of the "
+"actual <literal>BlogService</literal> component to clients. This is the Seam "
+"<emphasis>manager component pattern</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1244
+#, no-c-format
+msgid ""
+"This is good so far, but what about bookmarking the result of form "
+"submissions, such as a search results page?"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1250
+#, no-c-format
+msgid "Bookmarkable search results page"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1251
+#, no-c-format
+msgid ""
+"The blog example has a tiny form in the top right of each page that allows "
+"the user to search for blog entries. This is defined in a file, "
+"<literal>menu.xhtml</literal>, included by the facelets template, "
+"<literal>template.xhtml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1254
+#, no-c-format
+msgid ""
+"&lt;div id=\"search\"&gt;\n"
+"   &lt;h:form&gt;\n"
+"      &lt;h:inputText value=\"#{searchAction.searchPattern}\"/&gt;\n"
+"      &lt;h:commandButton value=\"Search\" action=\"/search.xhtml\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1255
+#, no-c-format
+msgid ""
+"To implement a bookmarkable search results page, we need to perform a "
+"browser redirect after processing the search form submission. Because we "
+"used the JSF view id as the action outcome, Seam automatically redirects to "
+"the view id when the form is submitted. Alternatively, we could have defined "
+"a navigation rule like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1258
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"   &lt;navigation-case&gt;\n"
+"      &lt;from-outcome&gt;searchResults&lt;/from-outcome&gt;\n"
+"      &lt;to-view-id&gt;/search.xhtml&lt;/to-view-id&gt;\n"
+"      &lt;redirect/&gt;\n"
+"   &lt;/navigation-case&gt;\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1259
+#, no-c-format
+msgid "Then the form would have looked like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1262
+#, no-c-format
+msgid ""
+"&lt;div id=\"search\"&gt;\n"
+"   &lt;h:form&gt;\n"
+"      &lt;h:inputText value=\"#{searchAction.searchPattern}\"/&gt;\n"
+"      &lt;h:commandButton value=\"Search\" action=\"searchResults\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1263
+#, no-c-format
+msgid ""
+"But when we redirect, we need to include the values submitted with the form "
+"as request parameters, to get a bookmarkable URL like <literal>http://"
+"localhost:8080/seam-blog/search.seam?searchPattern=seam</literal>. JSF does "
+"not provide an easy way to do this, but Seam does. We use a Seam "
+"<emphasis>page parameter</emphasis>, defined in <literal>WEB-INF/pages.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1266
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   &lt;page view-id=\"/search.xhtml\"&gt;\n"
+"      &lt;param name=\"searchPattern\" value=\"#{searchService.searchPattern}"
+"\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1267
+#, no-c-format
+msgid ""
+"This tells Seam to include the value of <literal>#{searchService."
+"searchPattern}</literal> as a request parameter named "
+"<literal>searchPattern</literal> when redirecting to the page, and then re-"
+"apply the value of that parameter to the model before rendering the page."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1270
+#, no-c-format
+msgid "The redirect takes us to the <literal>search.xhtml</literal> page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1273
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{searchResults}\" var=\"blogEntry\"&gt;\n"
+"   &lt;h:column&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:outputLink value=\"entry.seam\"&gt;\n"
+"            &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"            #{blogEntry.title}\n"
+"         &lt;/h:outputLink&gt;\n"
+"         posted on \n"
+"         &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"            &lt;f:convertDateTime timeZone=\"#{blog.timeZone}\" locale=\"#"
+"{blog.locale}\" type=\"both\"/&gt;\n"
+"         &lt;/h:outputText&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1274
+#, no-c-format
+msgid ""
+"Which again uses \"pull\"-style MVC to retrieve the actual search results:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1277
+#, no-c-format
+msgid ""
+"@Name(\"searchService\")\n"
+"public class SearchService \n"
+"{\n"
+"   \n"
+"   @In\n"
+"   private EntityManager entityManager;\n"
+"   \n"
+"   private String searchPattern;\n"
+"   \n"
+"   @Factory(\"searchResults\")\n"
+"   public List&lt;BlogEntry&gt; getSearchResults()\n"
+"   {\n"
+"      if (searchPattern==null)\n"
+"      {\n"
+"         return null;\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return entityManager.createQuery(\"select be from BlogEntry be "
+"where lower(be.title)\n"
+"             like :searchPattern or lower(be.body) like :searchPattern \n"
+"             order by be.date desc\")\n"
+"               .setParameter( \"searchPattern\", getSqlSearchPattern() )\n"
+"               .setMaxResults(100)\n"
+"               .getResultList();\n"
+"      }\n"
+"   }\n"
+"\n"
+"   private String getSqlSearchPattern()\n"
+"   {\n"
+"      return searchPattern==null ? \"\" : '&#37;' + \n"
+"          searchPattern.toLowerCase().replace('*', '&#37;').replace('?', "
+"'_') + '&#37;';\n"
+"   }\n"
+"\n"
+"   public String getSearchPattern()\n"
+"   {\n"
+"      return searchPattern;\n"
+"   }\n"
+"\n"
+"   public void setSearchPattern(String searchPattern)\n"
+"   {\n"
+"      this.searchPattern = searchPattern;\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1282
+#, no-c-format
+msgid "Using \"push\"-style MVC in a RESTful application"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1283
+#, no-c-format
+msgid ""
+"Very occasionally, it makes more sense to use push-style MVC for processing "
+"RESTful pages, and so Seam provides the notion of a <emphasis>page action</"
+"emphasis>. The Blog example uses a page action for the blog entry page, "
+"<literal>entry.xhtml</literal>. Note that this is a little bit contrived, it "
+"would have been easier to use pull-style MVC here as well."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1286
+#, no-c-format
+msgid ""
+"The <literal>entryAction</literal> component works much like an action class "
+"in a traditional push-MVC action-oriented framework like Struts:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1289
+#, no-c-format
+msgid ""
+"@Name(\"entryAction\")\n"
+"@Scope(STATELESS)\n"
+"public class EntryAction\n"
+"{\n"
+"   @In(create=true) \n"
+"   private Blog blog;\n"
+"   \n"
+"   @Out\n"
+"   private BlogEntry blogEntry;\n"
+"   \n"
+"   public void loadBlogEntry(String id) throws EntryNotFoundException\n"
+"   {\n"
+"      blogEntry = blog.getBlogEntry(id);\n"
+"      if (blogEntry==null) throw new EntryNotFoundException(id);\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1290
+#, no-c-format
+msgid "Page actions are also declared in <literal>pages.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1293
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   ...\n"
+"\n"
+"   &lt;page view-id=\"/entry.xhtml\" action=\"#{entryAction.loadBlogEntry"
+"(blogEntry.id)}\"&gt;\n"
+"      &lt;param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"\n"
+"   &lt;page view-id=\"/post.xhtml\" action=\"#{loginAction.challenge}\"/"
+"&gt;\n"
+"\n"
+"   &lt;page view-id=\"*\" action=\"#{blog.hitCount.hit}\"/&gt;\n"
+"\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1294
+#, no-c-format
+msgid ""
+"Notice that the example is using page actions for some other "
+"functionality&mdash;the login challenge, and the pageview counter. Also "
+"notice the use of a parameter in the page action method binding. This is not "
+"a standard feature of JSF EL, but Seam lets you use it, not just for page "
+"actions, but also in JSF method bindings."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1297
+#, no-c-format
+msgid ""
+"When the <literal>entry.xhtml</literal> page is requested, Seam first binds "
+"the page parameter <literal>blogEntryId</literal> to the model, then runs "
+"the page action, which retrieves the needed data&mdash;the "
+"<literal>blogEntry</literal>&mdash;and places it in the Seam event context. "
+"Finally, the following is rendered:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1300
+#, no-c-format
+msgid ""
+"&lt;div class=\"blogEntry\"&gt;\n"
+"   &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"   &lt;div&gt;\n"
+"      &lt;h:outputText escape=\"false\" value=\"#{blogEntry.body}\"/&gt;\n"
+"   &lt;/div&gt;\n"
+"   &lt;p&gt;\n"
+"      [Posted on&amp;#160;\n"
+"      &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"         &lt;f:convertDateTime timezone=\"#{blog.timeZone}\" locale=\"#{blog."
+"locale}\" type=\"both\"/&gt;\n"
+"      &lt;/h:outputText&gt;]\n"
+"   &lt;/p&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1301
+#, no-c-format
+msgid ""
+"If the blog entry is not found in the database, the "
+"<literal>EntryNotFoundException</literal> exception is thrown. We want this "
+"exception to result in a 404 error, not a 505, so we annotate the exception "
+"class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1304
+#, no-c-format
+msgid ""
+"@ApplicationException(rollback=true)\n"
+"@HttpError(errorCode=HttpServletResponse.SC_NOT_FOUND)\n"
+"public class EntryNotFoundException extends Exception\n"
+"{\n"
+"   EntryNotFoundException(String id)\n"
+"   {\n"
+"      super(\"entry not found: \" + id);\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1305
+#, no-c-format
+msgid ""
+"An alternative implementation of the example does not use the parameter in "
+"the method binding:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1308
+#, no-c-format
+msgid ""
+"@Name(\"entryAction\")\n"
+"@Scope(STATELESS)\n"
+"public class EntryAction\n"
+"{\n"
+"   @In(create=true) \n"
+"   private Blog blog;\n"
+"   \n"
+"   @In @Out\n"
+"   private BlogEntry blogEntry;\n"
+"   \n"
+"   public void loadBlogEntry() throws EntryNotFoundException\n"
+"   {\n"
+"      blogEntry = blog.getBlogEntry( blogEntry.getId() );\n"
+"      if (blogEntry==null) throw new EntryNotFoundException(id);\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1309
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   ...\n"
+"\n"
+"   &lt;page view-id=\"/entry.xhtml\" action=\"#{entryAction.loadBlogEntry}"
+"\"&gt;\n"
+"      &lt;param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1310
+#, no-c-format
+msgid "It is a matter of taste which implementation you prefer."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1318
+#, no-c-format
+msgid "Running the Seam examples in JBoss using the JSF 1.2 RI"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1319
+#, no-c-format
+msgid ""
+"JBoss AS 4.0 ships with the Apache MyFaces implementation of JSF 1.1. After "
+"many months of waiting, there is <emphasis>still</emphasis> no "
+"implementation of JSF 1.2 from MyFaces. For this and other reasons, JBoss AS "
+"4.2 will embed the JSF 1.2 Reference Implementation by default. Soon after "
+"the release of 4.2, we will migrate the Seam examples to JSF 1.2."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1322
+#, no-c-format
+msgid ""
+"For those who can't wait, Seam is already compatible with JSF 1.2, and it's "
+"easy to get the Seam examples running with JSF 1.2 in JBoss 4.0.5. Let's "
+"start with the famous booking example:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1327
+#, no-c-format
+msgid ""
+"copy <literal>jsf-api.jar</literal>, <literal>jsf-impl.jar</literal>, "
+"<literal>el-api.jar</literal>, <literal>el-impl.jar</literal> to "
+"<literal>server/default/deploy/tomcat/jbossweb-tomcat55.sar/jsf-libs</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1332
+#, no-c-format
+msgid ""
+"delete <literal>myfaces-api.jar</literal> and <literal>myfaces-impl.jar</"
+"literal> from <literal>server/default/deploy/tomcat/jbossweb-tomcat55.sar/"
+"jsf-libs</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1337
+#, no-c-format
+msgid ""
+"edit <literal>server/default/deploy/tomcat/jbossweb-tomcat55.sar/conf/web."
+"xml</literal>, replacing <literal>myfaces-impl.jar</literal> with "
+"<literal>jsf-impl.jar</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1342
+#, no-c-format
+msgid ""
+"edit <literal>examples/booking/resources/WEB-INF/web.xml</literal>, deleting "
+"the MyFaces listener, uncommenting the RI listener"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1347
+#, no-c-format
+msgid ""
+"edit <literal>examples/booking/resources/WEB-INF/faces-config.xml</literal>, "
+"uncommenting the lines that install the <literal>SeamELResolver</literal> "
+"using the new JSF 1.2 XML schema declaration."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1352
+#, no-c-format
+msgid ""
+"edit <literal>examples/booking/resources/META-INF/application.xml</literal>, "
+"deleting the lines that declare <literal>el-api.jar</literal> and "
+"<literal>el-impl.jar</literal> as Java modules."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1357
+#, no-c-format
+msgid ""
+"Restart JBoss, and type <literal>ant</literal> in the <literal>examples/"
+"booking</literal> directory."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Validation.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Validation.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Validation.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,375 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Validation.xml:10
+#, no-c-format
+msgid "JSF form validation in Seam"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:11
+#, no-c-format
+msgid "In plain JSF, validation is defined in the view:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:14
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Country:\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;my:validateCountry/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Zip code:\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;my:validateZip/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:15
+#, no-c-format
+msgid ""
+"In practice, this approach usually violates DRY, since most \"validation\" "
+"actually enforces constraints that are part of the data model, and exist all "
+"the way down to the database schema definition. Seam provides support for "
+"model-based constraints defined using Hibernate Validator."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:18
+#, no-c-format
+msgid ""
+"Let's start by defining our constraints, on our <literal>Location</literal> "
+"class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:21
+#, no-c-format
+msgid ""
+"public class Location {\n"
+"    private String country;\n"
+"    private String zip;\n"
+"    \n"
+"    @NotNull\n"
+"    @Length(max=30)\n"
+"    public String getCountry() { return country; }\n"
+"    public void setCountry(String c) { country = c; }\n"
+"\n"
+"    @NotNull\n"
+"    @Length(max=6)\n"
+"    @Pattern(\"^&#92;d*&#36;\")\n"
+"    public String getZip() { return zip; }\n"
+"    public void setZip(String z) { zip = z; }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:22
+#, no-c-format
+msgid ""
+"Well, that's a decent first cut, but in practice it might be more elegant to "
+"use custom constraints instead of the ones built into Hibernate Validator:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:25
+#, no-c-format
+msgid ""
+"public class Location {\n"
+"    private String country;\n"
+"    private String zip;\n"
+"    \n"
+"    @NotNull\n"
+"    @Country\n"
+"    public String getCountry() { return country; }\n"
+"    public void setCountry(String c) { country = c; }\n"
+"\n"
+"    @NotNull\n"
+"    @ZipCode\n"
+"    public String getZip() { return zip; }\n"
+"    public void setZip(String z) { zip = z; }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:26
+#, no-c-format
+msgid ""
+"Whichever route we take, we no longer need to specify the type of validation "
+"to be used in the JSF page. Instead, we can use <literal>&lt;s:validate&gt;</"
+"literal> to validate against the constraint defined on the model object."
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:29
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Country:\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;s:validate/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Zip code:\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;s:validate/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:30
+#, no-c-format
+msgid ""
+"<emphasis>Note:</emphasis> specifying <literal>@NotNull</literal> on the "
+"model does <emphasis>not</emphasis> eliminate the requirement for "
+"<literal>required=\"true\"</literal> to appear on the control! This is due "
+"to a limitation of the JSF validation architecture."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:33
+#, no-c-format
+msgid ""
+"This version is not much less verbose than what we started with, so let's "
+"try <literal>&lt;s:validateAll&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:36
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;h:inputText value=\"#{location.country}\" required=\"true\"/"
+"&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/"
+"&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:37
+#, no-c-format
+msgid ""
+"This tag simply adds an <literal>&lt;s:validate&gt;</literal> to every input "
+"in the form. For a large form, it can save a lot of typing!"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:40
+#, no-c-format
+msgid ""
+"Now we need to do something about displaying feedback to the user when "
+"validation fails. Currently we are displaying all messages at the top of the "
+"form. What we would really like to do is display the message next to the "
+"field with the error (this is possible in plain JSF), highlight the field "
+"(this is not possible) and, for good measure, display some image next the "
+"the field (also not possible)."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:43
+#, no-c-format
+msgid "Let's try out <literal>&lt;s:decorate&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:46
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;s:decorate&gt;\n"
+"                &lt;f:facet name=\"beforeInvalidField\"&gt;&lt;h:"
+"graphicImage src=\"img/error.gif\"/&gt;&lt;/f:facet&gt;\n"
+"                &lt;f:facet name=\"afterInvalidField\"&gt;&lt;s:message/&gt;"
+"&lt;/f:facet&gt;\n"
+"                &lt;f:facet name=\"aroundInvalidField\"&gt;&lt;s:span "
+"styleClass=\"error\"/&gt;&lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{location.country}\" required=\"true"
+"\"/&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;s:decorate&gt;\n"
+"                &lt;f:facet name=\"beforeInvalidField\"&gt;&lt;h:"
+"graphicImage src=\"img/error.gif\"/&gt;&lt;/f:facet&gt;\n"
+"                &lt;f:facet name=\"afterInvalidField\"&gt;&lt;s:message/&gt;"
+"&lt;/f:facet&gt;\n"
+"                &lt;f:facet name=\"aroundInvalidField\"&gt;&lt;s:span "
+"styleClass=\"error\"/&gt;&lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/"
+"&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:47
+#, no-c-format
+msgid ""
+"Well, that looks much better to the user, but it is extremely verbose. "
+"Fortunately, the facets of <literal>&lt;s:decorate&gt;</literal> may be "
+"defined on any parent element:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:50
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;f:facet name=\"beforeInvalidField\"&gt;\n"
+"        &lt;h:graphicImage src=\"img/error.gif\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;f:facet name=\"afterInvalidField\"&gt;\n"
+"        &lt;s:message/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;f:facet name=\"aroundInvalidField\"&gt;\n"
+"        &lt;s:span styleClass=\"error\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;s:decorate&gt;\n"
+"                &lt;h:inputText value=\"#{location.country}\" required=\"true"
+"\"/&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;s:decorate&gt;\n"
+"                &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/"
+"&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:51
+#, no-c-format
+msgid ""
+"This approach <emphasis>defines</emphasis> constraints on the model, and "
+"<emphasis>presents</emphasis> constraint violations in the view&mdash;a "
+"significantly better design."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:54
+#, no-c-format
+msgid ""
+"Finally, we can use Ajax4JSF to display validation messages as the user is "
+"typing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:57
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;f:facet name=\"beforeInvalidField\"&gt;\n"
+"        &lt;h:graphicImage src=\"img/error.gif\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;f:facet name=\"afterInvalidField\"&gt;\n"
+"        &lt;s:message/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;f:facet name=\"aroundInvalidField\"&gt;\n"
+"        &lt;s:span styleClass=\"error\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;s:decorate id=\"country\"&gt;\n"
+"                &lt;h:inputText value=\"#{location.country}\" required=\"true"
+"\"&gt;\n"
+"                    &lt;a:support event=\"onblur\" reRender=\"country\"/"
+"&gt;\n"
+"                &lt;/h:inputText&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;s:decorate id=\"zip\"&gt;\n"
+"                &lt;h:inputText value=\"#{location.zip}\" required=\"true"
+"\"&gt;\n"
+"                    &lt;a:support event=\"onblur\" reRender=\"zip\"/&gt;\n"
+"                &lt;/h:inputText&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Xml.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Xml.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/te-IN/Xml.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,933 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Xml.xml:10
+#, no-c-format
+msgid "Configuring Seam components"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:11
+#, no-c-format
+msgid ""
+"The philosophy of minimizing XML-based configuration is extremely strong in "
+"Seam. Nevertheless, there are various reasons why we might want to configure "
+"a Seam component using XML: to isolate deployment-specific information from "
+"the Java code, to enable the creation of re-usable frameworks, to configure "
+"Seam's built-in functionality, etc. Seam provides two basic approaches to "
+"configuring components: configuration via property settings in a properties "
+"file or <literal>web.xml</literal>, and configuration via "
+"<literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:14
+#, no-c-format
+msgid "Configuring components via property settings"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:15
+#, no-c-format
+msgid ""
+"Seam components may be provided with configuration properties either via "
+"servlet context parameters, or via a properties file named <literal>seam."
+"properties</literal> in the root of the classpath."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:18
+#, no-c-format
+msgid ""
+"The configurable Seam component must expose JavaBeans-style property setter "
+"methods for the configurable attributes. If a seam component named "
+"<literal>com.jboss.myapp.settings</literal> has a setter method named "
+"<literal>setLocale()</literal>, we can provide a property named <literal>com."
+"jboss.myapp.settings.locale</literal> in the <literal>seam.properties</"
+"literal> file or as a servlet context parameter, and Seam will set the value "
+"of the <literal>locale</literal> attribute whenever it instantiates the "
+"component."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:21
+#, no-c-format
+msgid ""
+"The same mechanism is used to configure Seam itself. For example, to set the "
+"conversation timeout, we provide a value for <literal>org.jboss.seam.core."
+"manager.conversationTimeout</literal> in <literal>web.xml</literal> or "
+"<literal>seam.properties</literal>. (There is a built-in Seam component "
+"named <literal>org.jboss.seam.core.manager</literal> with a setter method "
+"named <literal>setConversationTimeout()</literal>.)"
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:24
+#, no-c-format
+msgid "Configuring components via components.xml"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:25
+#, no-c-format
+msgid ""
+"The <literal>components.xml</literal> file is a bit more powerful than "
+"property settings. It lets you:"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:30
+#, no-c-format
+msgid ""
+"Configure components that have been installed automatically&mdash;including "
+"both built-in components, and application components that have been "
+"annotated with the <literal>@Name</literal> annotation and picked up by "
+"Seam's deployment scanner."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:35
+#, no-c-format
+msgid ""
+"Install classes with no <literal>@Name</literal> annotation as Seam "
+"components&mdash;this is most useful for certain kinds of infrastructural "
+"components which can be installed multiple times different names (for "
+"example Seam-managed persistence contexts)."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:40
+#, no-c-format
+msgid ""
+"Install components that <emphasis>do</emphasis> have a <literal>@Name</"
+"literal> annotation but are not installed by default because of an "
+"<literal>@Install</literal> annotation that indicates the component should "
+"not be installed."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:45
+#, no-c-format
+msgid "Override the scope of a component."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:50
+#, no-c-format
+msgid ""
+"A <literal>components.xml</literal> file may appear in one of three "
+"different places:"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:55
+#, no-c-format
+msgid "The <literal>WEB-INF</literal> directory of a <literal>war</literal>."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:60
+#, no-c-format
+msgid "The <literal>META-INF</literal> directory of a <literal>jar</literal>."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:65
+#, no-c-format
+msgid ""
+"Any directory of a <literal>jar</literal> that contains classes with an "
+"<literal>@Name</literal> annotation."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:70
+#, no-c-format
+msgid ""
+"Usually, Seam components are installed when the deployment scanner discovers "
+"a class with a <literal>@Name</literal> annotation sitting in an archive "
+"with a <literal>seam.properties</literal> file or a <literal>META-INF/"
+"components.xml</literal> file. (Unless the component has an "
+"<literal>@Install</literal> annotation indicating it should not be installed "
+"by default.) The <literal>components.xml</literal> file lets us handle "
+"special cases where we need to override the annotations."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:73
+#, no-c-format
+msgid ""
+"For example, the following <literal>components.xml</literal> file installs "
+"the JBoss Embeddable EJB3 container:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:76
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"&gt;\n"
+"    &lt;core:ejb/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:77
+#, no-c-format
+msgid "This example does the same thing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:80
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component class=\"org.jboss.seam.core.Ejb\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:81
+#, no-c-format
+msgid ""
+"This one installs and configures two different Seam-managed persistence "
+"contexts:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:84
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"    &lt;core:managed-persistence-context name=\"customerDatabase\"\n"
+"                persistence-unit-jndi-name=\"java:/"
+"customerEntityManagerFactory\"/&gt;\n"
+"        \n"
+"    &lt;core:managed-persistence-context name=\"accountingDatabase\"\n"
+"                persistence-unit-jndi-name=\"java:/"
+"accountingEntityManagerFactory\"/&gt;            \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:85
+#, no-c-format
+msgid "As does this one:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:88
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component name=\"customerDatabase\" \n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"customerEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"    \n"
+"    &lt;component name=\"accountingDatabase\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"accountingEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:89
+#, no-c-format
+msgid ""
+"This example creates a session-scoped Seam-managed persistence context (this "
+"is not recommended in practice):"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:92
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"  &lt;core:managed-persistence-context name=\"productDatabase\" \n"
+"                                   scope=\"session\"\n"
+"              persistence-unit-jndi-name=\"java:/productEntityManagerFactory"
+"\"/&gt;        \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:93
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"            \n"
+"    &lt;component name=\"productDatabase\"\n"
+"              scope=\"session\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"productEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:94
+#, no-c-format
+msgid ""
+"It is common to use the <literal>auto-create</literal> option for "
+"infrastructural objects like persistence contexts, which saves you from "
+"having to explicitly specify <literal>create=true</literal> when you use the "
+"<literal>@In</literal> annotation."
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:97
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"  &lt;core:managed-persistence-context name=\"productDatabase\" \n"
+"                             auto-create=\"true\"\n"
+"              persistence-unit-jndi-name=\"java:/productEntityManagerFactory"
+"\"/&gt;        \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:98
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"            \n"
+"    &lt;component name=\"productDatabase\"\n"
+"        auto-create=\"true\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"productEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:99
+#, no-c-format
+msgid ""
+"The <literal>&lt;factory&gt;</literal> declaration lets you specify a value "
+"or method binding expression that will be evaluated to initialize the value "
+"of a context variable when it is first referenced."
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:102
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"contact\" method=\"#{contactManager.loadContact}\" "
+"scope=\"CONVERSATION\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:103
+#, no-c-format
+msgid ""
+"You can create an \"alias\" (a second name) for a Seam component like so:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:106
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"user\" value=\"#{actor}\" scope=\"STATELESS\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:107
+#, no-c-format
+msgid "You can even create an \"alias\" for a commonly used expression:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:110
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"contact\" value=\"#{contactManager.contact}\" scope="
+"\"STATELESS\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:111
+#, no-c-format
+msgid ""
+"It is especially common to see the use of <literal>auto-create=\"true\"</"
+"literal> with the <literal>&lt;factory&gt;</literal> declaration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:114
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"session\" value=\"#{entityManager.delegate}\" scope="
+"\"STATELESS\" \n"
+"        auto-create=\"true\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:115
+#, no-c-format
+msgid ""
+"Sometimes we want to reuse the same <literal>components.xml</literal> file "
+"with minor changes during both deployment and testing. Seam lets you place "
+"wildcards of the form <literal>@wildcard@</literal> in the "
+"<literal>components.xml</literal> file which can be replaced either by your "
+"Ant build script (at deployment time) or by providing a file named "
+"<literal>components.properties</literal> in the classpath (at development "
+"time). You'll see this approach used in the Seam examples."
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:118
+#, no-c-format
+msgid "Fine-grained configuration files"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:119
+#, no-c-format
+msgid ""
+"If you have a large number of components that need to be configured in XML, "
+"it makes much more sense to split up the information in <literal>components."
+"xml</literal> into many small files. Seam lets you put configuration for a "
+"class named, for example, <literal>com.helloworld.Hello</literal> in a "
+"resource named <literal>com/helloworld/Hello.component.xml</literal>. (You "
+"might be familiar with this pattern, since it is the same one we use in "
+"Hibernate.) The root element of the file may be either a <literal>&lt;"
+"components&gt;</literal> or <literal>&lt;component&gt;</literal> element."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:122
+#, no-c-format
+msgid "The first option lets you define multiple components in the file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:125
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component class=\"com.helloworld.Hello\" name=\"hello\"&gt;\n"
+"        &lt;property name=\"name\"&gt;#{user.name}&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"    &lt;factory name=\"message\" value=\"#{hello.message}\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:126
+#, no-c-format
+msgid ""
+"The second option only lets you define or configure one component, but is "
+"less noisy:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:129
+#, no-c-format
+msgid ""
+"&lt;component name=\"hello\"&gt;\n"
+"    &lt;property name=\"name\"&gt;#{user.name}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:130
+#, no-c-format
+msgid ""
+"In the second option, the class name is implied by the file in which the "
+"component definition appears."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:133
+#, no-c-format
+msgid ""
+"Alternatively, you may put configuration for all classes in the <literal>com."
+"helloworld</literal> package in <literal>com/helloworld/components.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:136
+#, no-c-format
+msgid "Configurable property types"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:137
+#, no-c-format
+msgid ""
+"Properties of string, primitive or primitive wrapper type may be configured "
+"just as you would expect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:140
+#, no-c-format
+msgid "org.jboss.seam.core.manager.conversationTimeout 60000"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:141
+#, no-c-format
+msgid "&lt;core:manager conversation-timeout=\"60000\"/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:142
+#, no-c-format
+msgid ""
+"&lt;component name=\"org.jboss.seam.core.manager\"&gt;\n"
+"    &lt;property name=\"conversationTimeout\"&gt;60000&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:143
+#, no-c-format
+msgid "Arrays, sets and lists of strings or primitives are also supported:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:146
+#, no-c-format
+msgid ""
+"org.jboss.seam.core.jbpm.processDefinitions order.jpdl.xml, return.jpdl.xml, "
+"inventory.jpdl.xml"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:147
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;order.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;return.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:148
+#, no-c-format
+msgid ""
+"&lt;component name=\"org.jboss.seam.core.jbpm\"&gt;\n"
+"    &lt;property name=\"processDefinitions\"&gt;\n"
+"        &lt;value&gt;order.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;return.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:149
+#, no-c-format
+msgid ""
+"Even maps with String-valued keys and string or primitive values are "
+"supported:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:152
+#, no-c-format
+msgid ""
+"&lt;component name=\"issueEditor\"&gt;\n"
+"    &lt;property name=\"issueStatuses\"&gt;\n"
+"        &lt;key&gt;open&lt;/key&gt; &lt;value&gt;open issue&lt;/value&gt;\n"
+"        &lt;key&gt;resolved&lt;/key&gt; &lt;value&gt;issue resolved by "
+"developer&lt;/value&gt;\n"
+"        &lt;key&gt;closed&lt;/key&gt; &lt;value&gt;resolution accepted by "
+"user&lt;/value&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:153
+#, no-c-format
+msgid ""
+"Finally, you may wire together components using a value-binding expression. "
+"Note that this is quite different to injection using <literal>@In</literal>, "
+"since it happens at component instantiation time instead of invocation time. "
+"It is therefore much more similar to the dependency injection facilities "
+"offered by traditional IoC containers like JSF or Spring."
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:156
+#, no-c-format
+msgid ""
+"&lt;drools:managed-working-memory name=\"policyPricingWorkingMemory\" rule-"
+"base=\"#{policyPricingRules}\"/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:157
+#, no-c-format
+msgid ""
+"&lt;component name=\"policyPricingWorkingMemory\"\n"
+"          class=\"org.jboss.seam.drools.ManagedWorkingMemory\"&gt;\n"
+"    &lt;property name=\"ruleBase\"&gt;#{policyPricingRules}&lt;/"
+"property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:158
+#, no-c-format
+msgid "Using XML Namespaces"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:159
+#, no-c-format
+msgid ""
+"Throughout the examples, there have been two competing ways of declaring "
+"components: with and without the use of XML namespaces. The following shows "
+"a typical <literal>components.xml</literal> file without namespaces. It uses "
+"the Seam Components DTD:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:162
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"&gt;\n"
+"&lt;!DOCTYPE components PUBLIC \"-//JBoss/Seam Component Configuration DTD "
+"1.2//EN\"\n"
+"                            \"http://jboss.com/products/seam/components-1.2."
+"dtd\"&gt;\n"
+"&lt;components&gt;\n"
+"\n"
+"    &lt;component class=\"org.jboss.seam.core.init\"&gt;\n"
+"        &lt;property name=\"debug\"&gt;true&lt;/property&gt;\n"
+"        &lt;property name=\"jndiPattern\"&gt;@jndiPattern@&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"    &lt;component name=\"org.jboss.sean.core.ejb\" installed=\"@embeddedEjb@"
+"\" /&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:163
+#, no-c-format
+msgid ""
+"As you can see, this is somewhat verbose. Even worse, the component and "
+"attribute names cannot be validated at development time."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:166
+#, no-c-format
+msgid "The namespaced version looks like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:169
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                http://jboss.com/products/seam/core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components \n"
+"                 http://jboss.com/products/seam/components-1.2.xsd\"&gt;\n"
+"\n"
+"    &lt;core:init debug=\"true\" jndi-pattern=\"@jndiPattern@\"/&gt;\n"
+"\n"
+"    &lt;core:ejb installed=\"@embeddedEjb@\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:170
+#, no-c-format
+msgid ""
+"Even though the schema declarations are verbose, the actual XML content is "
+"lean and easy to understand. The schemas provide detailed information about "
+"each component and the attributes available, allowing XML editors to offer "
+"intelligent autocomplete. The use of namespaced elements makes generating "
+"and maintaining correct <literal>components.xml</literal> files much simpler."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:173
+#, no-c-format
+msgid ""
+"Now, this works great for the built-in Seam components, but what about user "
+"components? There are two options. First, Seam supports mixing the two "
+"models, allowing the use of the generic <literal>&lt;component&gt;</literal> "
+"declarations for user components, along with namespaced declarations for "
+"built-in components. But even better, Seam allows you to quickly declare "
+"namespaces for your own components."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:176
+#, no-c-format
+msgid ""
+"Any Java package can be associated with an XML namespace by annotating the "
+"package with the <literal>@Namespace</literal> annotation. (Package-level "
+"annotations are declared in a file named <literal>package-info.java</"
+"literal> in the package directory.) Here is an example from the seampay demo:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:179
+#, no-c-format
+msgid ""
+"@Namespace(value=\"http://jboss.com/products/seam/examples/seampay\")\n"
+"package org.jboss.seam.example.seampay;\n"
+"\n"
+"import org.jboss.seam.annotations.Namespace;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:180
+#, no-c-format
+msgid ""
+"That is all you need to do to use the namespaced style in "
+"<literal>components.xml</literal>! Now we can write:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:183
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pay=\"http://jboss.com/products/seam/examples/seampay\"\n"
+"            ... &gt;\n"
+"\n"
+"    &lt;pay:payment-home new-instance=\"#{newPayment}\"\n"
+"                      created-message=\"Created a new payment to #"
+"{newPayment.payee}\" /&gt;\n"
+"\n"
+"    &lt;pay:payment name=\"newPayment\"\n"
+"                 payee=\"Somebody\"\n"
+"                 account=\"#{selectedAccount}\"\n"
+"                 payment-date=\"#{currentDatetime}\"\n"
+"                 created-date=\"#{currentDatetime}\" /&gt;\n"
+"     ...\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:184
+#, no-c-format
+msgid "<para>Or:</para>"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:187
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pay=\"http://jboss.com/products/seam/examples/seampay\"\n"
+"            ... &gt;\n"
+"\n"
+"    &lt;pay:payment-home&gt;\n"
+"        &lt;pay:new-instance&gt;\"#{newPayment}\"&lt;/pay:new-instance&gt;\n"
+"        &lt;pay:created-message&gt;Created a new payment to #{newPayment."
+"payee}&lt;/pay:created-message&gt;\n"
+"    &lt;/pay:payment-home&gt;\n"
+"    \n"
+"    &lt;pay:payment name=\"newPayment\"&gt;\n"
+"        &lt;pay:payee&gt;Somebody\"&lt;/pay:payee&gt;\n"
+"        &lt;pay:account&gt;#{selectedAccount}&lt;/pay:account&gt;\n"
+"        &lt;pay:payment-date&gt;#{currentDatetime}&lt;/pay:payment-date&gt;\n"
+"        &lt;pay:created-date&gt;#{currentDatetime}&lt;/pay:created-date&gt;\n"
+"     &lt;/pay:payment&gt;\n"
+"     ...\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:188
+#, no-c-format
+msgid ""
+"These examples illustrate the two usage models of a namespaced element. In "
+"the first declaration, the <literal>&lt;pay:payment-home&gt;</literal> "
+"references the <literal>paymentHome</literal> component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:191
+#, no-c-format
+msgid ""
+"package org.jboss.seam.example.seampay;\n"
+"...\n"
+"@Name(\"paymentHome\")\n"
+"public class PaymentController\n"
+"    extends EntityHome&lt;Payment&gt;\n"
+"{\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:192
+#, no-c-format
+msgid ""
+"The element name is the hyphenated form of the component name. The "
+"attributes of the element are the hyphenated form of the property names."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:195
+#, no-c-format
+msgid ""
+"In the second declaration, the <literal>&lt;pay:payment&gt;</literal> "
+"element refers to the <literal>Payment</literal> class in the <literal>org."
+"jboss.seam.example.seampay</literal> package. In this case <literal>Payment</"
+"literal> is an entity that is being declared as a Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:198
+#, no-c-format
+msgid ""
+"package org.jboss.seam.example.seampay;\n"
+"...\n"
+"@Entity\n"
+"public class Payment\n"
+"    implements Serializable\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:199
+#, no-c-format
+msgid ""
+"If we want validation and autocompletion to work for user-defined "
+"components, we will need a schema. Seam does not yet provide a mechanism to "
+"automatically generate a schema for a set of components, so it is necessary "
+"to generate one manually. The schema definitions for the standard Seam "
+"packages can be used for guidance."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:202
+#, no-c-format
+msgid "The following are the the namespaces used by Seam:"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:207
+#, no-c-format
+msgid ""
+"components &mdash; <literal>http://jboss.com/products/seam/components</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:212
+#, no-c-format
+msgid "core &mdash; <literal>http://jboss.com/products/seam/core</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:217
+#, no-c-format
+msgid "drools &mdash; <literal>http://jboss.com/products/seam/drools</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:222
+#, no-c-format
+msgid ""
+"framework &mdash; <literal>http://jboss.com/products/seam/framework</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:227
+#, no-c-format
+msgid "jms &mdash; <literal>http://jboss.com/products/seam/jms</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:232
+#, no-c-format
+msgid ""
+"remoting &mdash; <literal>http://jboss.com/products/seam/remoting</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:237
+#, no-c-format
+msgid "theme &mdash; <literal>http://jboss.com/products/seam/theme</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:242
+#, no-c-format
+msgid ""
+"security &mdash; <literal>http://jboss.com/products/seam/security</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:247
+#, no-c-format
+msgid "mail &mdash; <literal>http://jboss.com/products/seam/mail</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:252
+#, no-c-format
+msgid "web &mdash; <literal>http://jboss.com/products/seam/web</literal>"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/css/common.css
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/css/common.css	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/css/common.css	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1449 @@
+body, h1, h2, h3, h4, h5, h6, pre, li, div {
+	line-height: 1.29em;
+}
+
+body {
+	background-color: white;
+	margin:0 auto;
+	font-family: "liberation sans", "Myriad ", "Bitstream Vera Sans", "Lucida Grande", "Luxi Sans", "Trebuchet MS", helvetica, verdana, arial, sans-serif;
+	font-size:12px;
+	max-width:55em;
+	color:black;
+}
+
+body.toc_embeded {
+	/*for web hosting system only*/
+	margin-left: 300px;
+}
+
+object.toc {
+	/*for web hosting system only*/
+	border-style:none;
+	position:fixed;
+	width:290px;
+	height:99.99%;
+	top:0;
+	left:0;
+	z-index: 100;
+	border-style:none;
+	border-right:1px solid #999;
+}
+
+/* desktop styles */
+body.desktop {
+	margin-left: 26em;
+}
+
+body.desktop .book > .toc {
+	display:block;
+	width:24em;
+	height:99%;
+	position:fixed;
+	overflow:auto;
+	top:0px;
+	left:0px;
+	padding-left:1em;
+	background-color:#EEEEEE;
+}
+
+.toc {
+	line-height:1.35em;
+}
+
+.toc .chapter, .toc .appendix, .toc .glossary {
+	margin-top:1em;
+}
+
+.toc .part {
+	margin-top:1em;
+	display:block;
+}
+
+span.appendix, span.glossary {
+	display:block;
+	margin-top:0.5em;
+}
+
+div {
+	padding-top:0px;
+}
+
+div.section {
+	padding-top:1em;
+}
+
+p, div.para, div.formalpara {
+	padding-top:0px;
+	margin-top:0.3em;
+	padding-bottom:0px;
+	margin-bottom:1em;
+}
+
+/*Links*/
+a:link {
+	text-decoration:none;
+	border-bottom: 1px dotted ;
+	color:#3366cc;
+}
+
+a:visited {
+	text-decoration:none;
+	border-bottom: 1px dotted ;
+	color:#003366;
+}
+
+div.longdesc-link {
+	float:right;
+	color:#999;
+}
+
+.toc a, .qandaset a {
+	font-weight:normal;
+}
+
+/*headings*/
+h1, h2, h3, h4, h5, h6 {
+	color: #336699;
+	margin-top: 0em;
+	margin-bottom: 0em;
+	background-color: transparent;
+}
+
+h1 {
+	font-size:2.0em;
+}
+
+.titlepage h1.title {
+	font-size: 3.0em;
+	padding-top: 1em;
+	text-align:left;
+}
+
+.book > .titlepage h1.title {
+	text-align:center;
+}
+
+.article > .titlepage h1.title {
+	text-align:center;
+}
+
+.set .titlepage > div > div > h1.title {
+	text-align:center;
+}
+
+.producttitle {
+	margin-top: 0em;
+	margin-bottom: 0em;
+	font-size: 3.0em;
+	font-weight: bold;
+	background: #003d6e url(../images/h1-bg.png) top left repeat-x;
+	color: white;
+	text-align: center;
+	padding: 0.7em;
+}
+
+.titlepage .corpauthor {
+	margin-top: 1em;
+	text-align: center;
+}
+
+.section h1.title {
+	font-size: 1.6em;
+	padding: 0em;
+	color: #336699;
+	text-align: left;
+	background: white;
+}
+
+h2 {
+	font-size:1.6em;
+}
+
+
+h2.subtitle, h3.subtitle {
+	margin-top: 1em;
+	margin-bottom: 1em;
+	font-size: 1.4em;
+	text-align: center;
+}
+
+.preface > div > div > div > h2.title {
+	margin-top: 1em;
+	font-size: 2.0em;
+}
+
+.appendix h2 {
+	margin-top: 1em;
+	font-size: 2.0em;
+}
+
+
+
+h3 {
+	font-size:1.3em;
+	padding-top:0em;
+	padding-bottom:0em;
+}
+h4 {
+	font-size:1.1em;
+	padding-top:0em;
+	padding-bottom:0em;
+}
+
+h5 {
+	font-size:1em;
+}
+
+h6 {
+	font-size:1em;
+}
+
+h5.formalpara {
+	font-size:1em;
+	margin-top:2em;
+	margin-bottom:.8em;
+}
+
+.abstract h6 {
+	margin-top:1em;
+	margin-bottom:.5em;
+	font-size:2em;
+}
+
+/*element rules*/
+hr {
+	border-collapse: collapse;
+	border-style:none;
+	border-top: 1px dotted #ccc;
+	width:100%;
+	margin-top: 3em;
+}
+
+sup {
+	color:#999;
+}
+
+/* web site rules */
+ul.languages, .languages li {
+	display:inline;
+	padding:0em;
+}
+
+.languages li a {
+	padding:0em .5em;
+	text-decoration: none;
+}
+
+.languages li p, .languages li div.para {
+	display:inline;
+}
+
+.languages li a:link, .languages li a:visited {
+	color:#444;
+}
+
+.languages li a:hover, .languages li a:focus, .languages li a:active {
+	color:black;
+}
+
+ul.languages {
+	display:block;
+	background-color:#eee;
+	padding:.5em;
+}
+
+/*supporting stylesheets*/
+
+/*unique to the webpage only*/
+.article ul {
+	padding-left:2em;
+	list-style: disc;
+}
+
+.article li {
+	margin:0em;
+	padding-left:0em;
+}
+
+.books {
+	position:relative;
+}
+
+.versions li {
+	width:100%;
+	clear:both;
+	display:block;
+}
+
+a.version {
+	font-size:2em;
+	text-decoration:none;
+	width:100%;
+	display:block;
+	padding:1em 0em .2em 0em;
+	clear:both;
+}
+
+a.version:before {
+	content:"Version";
+	font-size:smaller;
+}
+
+a.version:visited, a.version:link {
+	color:#666;
+}
+
+a.version:focus, a.version:hover {
+	color:black;
+}
+
+.books {
+	display:block;
+	position:relative;
+	clear:both;
+	width:100%;
+}
+
+.books li {
+	display:block;
+	width:200px;
+	float:left;
+	position:relative;
+	clear: none ;
+}
+
+.books .html {
+	width:170px;
+	display:block;
+}
+
+.books .pdf {
+	position:absolute;
+	left:170px;
+	top:0px;
+	font-size:smaller;
+}
+
+.books .pdf:link, .books .pdf:visited {
+	color:#555;
+}
+
+.books .pdf:hover, .books .pdf:focus {
+	color:#000;
+}
+
+.books li a {
+	text-decoration:none;
+}
+
+.books li a:hover {
+	color:black;
+}
+
+/*products*/
+.products li {
+	display: block;
+	width:300px;
+	float:left;
+}
+
+.products li a {
+	width:300px;
+	padding:.5em 0em;
+}
+
+.products ul {
+	clear:both;
+}
+
+
+/*revision history*/
+.revhistory {
+	display:block;
+}
+
+.revhistory table {
+	background-color:transparent;
+	border-color:#fff;
+	padding:0em;
+	margin: 0;
+	border-collapse:collapse;
+	border-style:none;
+}
+
+.revhistory td {
+	text-align:right;
+	padding:0em;
+	border-top: 1px solid #fff;
+}
+
+
+.revhistory tr td:first-child {
+	text-align:left;
+}
+
+.revhistory tr td p, .revhistory tr td div.para {
+	text-align:left;
+	font-weight:bold;
+	display:block;
+	margin:0em;
+	padding:0em;
+	padding-bottom:0.7em;
+	border-bottom:1px solid #eee;
+}
+
+.revhistory table th {
+	background-color:transparent;
+	color:#336699;
+	font-size:2em;
+	padding: 1em 0em;
+	border-bottom:1px solid #eee;
+}
+
+
+/*credits*/
+.authorgroup div {
+	clear:both;
+	text-align: center;
+}
+
+h3.author {
+	margin: 0em;
+	padding: 0em;
+	padding-top: 1em;
+}
+
+.authorgroup h4 {
+	padding: 0em;
+	margin: 0em;
+	padding-top: 1em;
+	margin-top: 1em;
+}
+
+.author, 
+.editor, 
+.translator, 
+.othercredit,
+.contrib {
+	display: block;
+}
+
+.revhistory .author {
+	display: inline;
+}
+
+.othercredit h3 {
+	padding-top: 1em;
+}
+
+
+.othercredit {
+	margin:0em;
+	padding:0em;
+}
+
+.releaseinfo {
+	clear: both;
+}
+
+.copyright {
+	margin-top: 1em;
+}
+
+/* qanda sets */
+.answer {
+	margin-bottom:1em;
+	border-bottom:1px dotted #ccc;
+}
+
+.qandaset .toc {
+	border-bottom:1px dotted #ccc;
+}
+
+.question {
+	font-weight:bold;
+}
+
+.answer .data, .question .data {
+	padding-left: 2.6em;
+}
+
+.answer label, .question label {
+	float:left;
+	font-weight:bold;
+}
+
+.package {
+	font-style:italic;
+}
+
+/* inline syntax highlighting */
+.perl_Alert {
+	color: #0000ff;
+}
+
+.perl_BaseN {
+	color: #007f00;
+}
+
+.perl_BString {
+	color: #5C3566;
+}
+
+.perl_Char {
+	color: #ff00ff;
+}
+
+.perl_Comment {
+	color: #FF00FF;
+}
+
+
+.perl_DataType {
+	color: #0000ff;
+}
+
+
+.perl_DecVal {
+	color: #00007f;
+}
+
+
+.perl_Error {
+	color: #ff0000;
+}
+
+
+.perl_Float {
+	color: #00007f;
+}
+
+
+.perl_Function {
+	color: #007f00;
+}
+
+
+.perl_IString {
+	color: #5C3566;
+}
+
+
+.perl_Keyword {
+	color: #002F5D;
+}
+
+
+.perl_Operator {
+	color: #ffa500;
+}
+
+
+.perl_Others {
+	color: #b03060;
+}
+
+
+.perl_RegionMarker {
+	color: #96b9ff;
+}
+
+
+.perl_Reserved {
+	color: #9b30ff;
+}
+
+
+.perl_String {
+	color: #5C3566;
+}
+
+
+.perl_Variable {
+	color: #0000ff;
+}
+
+
+.perl_Warning {
+	color: #0000ff;
+}
+
+/*Lists*/
+ul {
+	padding-left:1.6em;
+	list-style-image:url(../images/dot.png);
+	list-style-type: circle;
+}
+
+ul ul {
+	list-style-image:url(../images/dot2.png);
+	list-style-type: circle;
+}
+
+ol {
+	list-style-image:none;
+	list-style-type: decimal;
+}
+
+ol.loweralpha {
+	list-style-type: lower-alpha;
+}
+
+ol.lowerroman {
+	list-style-type: lower-roman;
+}
+
+ol.upperalpha {
+	list-style-type: upper-alpha;
+}
+
+ol.upperroman {
+	list-style-type: upper-roman;
+}
+
+dt {
+	font-weight:bold;
+	margin-bottom:0em;
+	padding-bottom:0em;
+}
+
+dd {
+	margin:0em;
+	margin-left:2em;
+	padding-top:0em;
+	padding-bottom: 1em;
+}
+
+li {
+	padding-top:0px;
+	margin-top:0em;
+	padding-bottom:0px;
+	margin-bottom:0.4em;
+}
+
+li p, li div.para {
+	padding-top:0px;
+	margin-top:0em;
+	padding-bottom:0px;
+	margin-bottom:0.3em;
+}
+
+/*images*/
+img {
+	display:block;
+	margin:2em 0;
+}
+
+.inlinemediaobject, .inlinemediaobject img {
+	display:inline;
+	margin:0em;
+}
+
+.figure img {
+	display:block;
+	margin:0;
+}
+
+.figure .title {
+	margin:0em;
+	margin-bottom:2em;
+	padding:0px;
+}
+
+/*document modes*/
+.confidential {
+	background-color:#900;
+	color:White;
+	padding:.5em .5em;
+	text-transform:uppercase;
+	text-align:center;
+}
+
+.longdesc-link {
+	display:none;
+}
+
+.longdesc {
+	display:none;
+}
+
+.prompt {
+	background-color:#ede7c8;
+	padding:0em .3em;
+}
+
+/*user interface styles*/
+.screen .replaceable {
+	color:#444;
+}
+
+pre, code, .guibutton, .keycap, .guilabel {
+	font-family:"liberation mono", "bitstream vera mono", "dejavu mono", monospace;
+}
+
+.guibutton, .keycap, .guilabel {
+	font-weight:bold;
+	white-space:nowrap;
+}
+
+.example {
+	background-color:#dc9f2e;
+	padding:5px;
+	margin-bottom:10px;
+}
+
+
+/*terminal/console text*/
+.computeroutput, 
+.citetitle, 
+.replaceable, 
+.option {
+	font-family:"liberation mono", "bitstream vera mono", "dejavu mono", monospace;
+}
+
+.replaceable {
+	font-family:"liberation mono", "bitstream vera mono", "dejavu mono", monospace;
+	font-style: italic;
+}
+
+.command, .filename, .keycap, .classname, .literal {
+	font-family:"liberation mono", "bitstream vera mono", "dejavu mono", monospace;
+	font-weight:bold;
+}
+
+pre {
+	font-family:"liberation mono", "bitstream vera mono", "dejavu mono", monospace;
+	display:block;
+	background-color:#eeeeee;
+	margin-bottom: 0.3em;
+	padding:.5em 1em;
+	white-space: pre-wrap; /* css-3 */
+	white-space: -moz-pre-wrap !important; /* Mozilla, since 1999 */
+	white-space: -pre-wrap; /* Opera 4-6 */
+	white-space: -o-pre-wrap; /* Opera 7 */
+	word-wrap: break-word; /* Internet Explorer 5.5+ */
+	font-size: 0.9em;
+}
+
+pre .replaceable, 
+pre .keycap {
+	color:white;
+}
+
+code {
+	white-space: nowrap;
+}
+
+/*Notifications*/
+div.note, div.important, div.warning {
+	padding:1em;
+	padding-bottom:20px;
+	margin-top:.5em;
+	margin-bottom:1.5em;
+	background-repeat:no-repeat;
+	background-position:1em 1em;
+}
+
+div.note pre, div.important pre, div.warning pre {
+	background-color: #333;
+	color: white;
+	margin-left: 4.5em;
+}
+
+
+div.note {
+	background-image:url(../images/note.png);
+	background-color:#8e9f00;
+	color:white;
+}
+
+div.important  {
+	background-color:#d08e13;
+	color:white;
+	background-image:url(../images/important.png);
+}
+
+div.warning {
+	background-color:#9e292b;
+	color:white;
+	background-image:url(../images/warning.png);
+}
+
+
+/* Admonition Headings */
+div.note h2, div.important h2, div.warning h2 {
+	height:32px;
+	font-size:1.3em;
+}
+
+div.note h2, div.important h2, div.warning h2 {
+	color:white;
+}
+
+/* Admonition Inlines */
+div.note .replaceable, div.important .replaceable,  div.warning .replaceable {
+	color:#e3dcc0;
+}
+
+pre .replaceable, tt .replaceable {
+	color:#444;
+}
+
+div.note .guilabel, div.important .guilabel, div.warning .guilabel {
+	color:#e3dcc0;
+}
+
+
+/* Admonition Lists ... really? */
+div.note li, div.warning li, div.important li {
+	padding-left:10px;
+	margin:0em;
+}
+
+div.note ul, div.warning ul, div.important ul {
+	padding-left:40px;
+	margin:0em;
+}
+
+/* Admonition links in verbatim ... *really* */
+div.note pre pre a:visited, div.important pre pre a:visited, 
+ div.warning pre pre a:visited, div.note pre a:link, div.important pre a:link, div.warning pre a:link {
+	color:#0066cc;
+}
+
+/* Admonition links */
+div.note a:visited, div.important a:visited, div.warning a:visited, div.note a:link , div.important a:link , div.warning a:link {
+	color:#f7f2d0;
+}
+
+/*notification icons*/
+div.note h2, div.note p, div.note div.para, div.warning h2, div.warning p, div.warning div.para, div.important h2, .important p, .important div.para {
+	padding:0em;
+	margin:0em;
+	padding-left:56px;
+}
+
+/*Page Title*/
+#title  {
+	display:block;
+	height:45px;
+	padding-bottom:1em;
+	margin:0em;
+}
+
+#title a.left{
+	display:inline;
+	border:none;
+	padding-left:200px;
+}
+
+#title a.left img{
+	border:none;
+	float:left;
+	margin:0em;
+	margin-top:.7em;
+}
+
+#title a.right {
+	padding-bottom:1em;
+}
+
+#title a.right img {
+	border:none;
+	float:right;
+	margin:0em;
+}
+
+/*Table*/
+table {
+	border:1px solid #6c614b;
+	width:100%;
+	border-collapse:collapse;
+}
+
+table.simplelist {
+	border-style: none;
+}
+
+table th {
+	text-align:left;
+	background-color:#6699cc;
+	padding:.3em .5em;
+	color:white;
+}
+
+table td {
+	padding:.15em .5em;
+}
+
+table tr.even td {
+	background-color:#f5f5f5;
+}
+
+table th p:first-child, table td p:first-child, table  li p:first-child,
+table th div.para:first-child, table td div.para:first-child, table  li div.para:first-child {
+	margin-top:0em;
+	padding-top:0em;
+	display:inline;
+}
+
+th, td {
+	border-style:none;
+	vertical-align: top;
+}
+
+table table td {
+	border-bottom:1px dotted #aaa;
+	background-color:white;
+	padding:.6em 0em;
+}
+
+table table {
+	border:1px solid white;
+}
+
+td.remarkval {
+	color:#444;
+}
+
+td.fieldval {
+	font-weight:bold;
+}
+
+.lbname, .lbtype, .lbdescr, .lbdriver, .lbhost {
+	color:white;
+	font-weight:bold;
+	background-color:#999;
+	width:120px;
+}
+
+td.remarkval {
+	width:230px;
+}
+
+td.tname {
+	font-weight:bold;
+}
+
+th.dbfield {
+	width:120px;
+}
+
+th.dbtype {
+	width:70px;
+}
+
+th.dbdefault {
+	width:70px;
+}
+
+th.dbnul {
+	width:70px;
+}
+
+th.dbkey {
+	width:70px;
+}
+
+span.book {
+	margin-top:4em;
+	display:block;
+}
+
+span.chapter {
+	display:block;
+	margin-top:0.5em;
+}
+
+/*Breadcrumbs*/
+#breadcrumbs ul li.first:before {
+	content:" ";
+}
+
+#breadcrumbs {
+	color:#900;
+	padding:3px;
+	margin-bottom:25px;
+}
+
+#breadcrumbs ul {
+	margin-left:0;
+	padding-left:0;
+	display:inline;
+	border:none;
+}
+
+#breadcrumbs ul li {
+	margin-left:0;
+	padding-left:2px;
+	border:none;
+	list-style:none;
+	display:inline;
+}
+
+#breadcrumbs ul li:before {
+	content:"\0020 \0020 \0020 \00BB \0020";
+	color:#333;
+}
+
+/*index*/
+.glossary h3, 
+.index h3 {
+	font-size: 2em;
+	color:#aaa;
+	margin:0em;
+}
+
+.indexdiv {
+	margin-bottom:1em;
+}
+
+.glossary dt, .index dt {
+	color:#444;
+	padding-top:.5em;
+}
+
+.glossary dl dl dt, 
+.index dl dl dt {
+	color:#777;
+	font-weight:normal;
+	padding-top:0em;
+}
+
+.index dl dl dt:before {
+	content:"- ";
+	color:#ccc;
+}
+
+/*changes*/
+.footnote {
+	padding:.2em 1em;
+	background-color:#c8c5ac;
+	font-size: .7em;
+	margin:0em;
+	margin-bottom:.5em;
+	color:#222;
+}
+
+table .footnote {
+	margin:1em .5em;
+}
+
+sup {
+	padding:0em .3em;
+	padding-left:0em;
+}
+
+.footnote {
+	position:relative;
+}
+
+.footnote sup  {
+	color:#e3dcc0;
+	position:absolute;
+	left: .4em;
+}
+
+.footnote sup a:link, 
+.footnote sup a:visited {
+	color:#92917d;
+	text-decoration:none;
+}
+
+.footnote:hover sup a {
+	color:#fff;
+	text-decoration:none;
+}
+
+.footnote p,.footnote div.para {
+	padding-left:5em;
+}
+
+.footnote a:link, 
+.footnote a:visited {
+	color:#00537c;
+}
+
+.footnote a:hover {
+	color:white;
+}
+
+/**/
+div.chapter {
+	margin-top:3em;
+}
+
+div.section {
+	margin-top:1em;
+}
+
+div.note .replaceable, 
+div.important .replaceable, 
+div.warning .replaceable, 
+div.note .keycap, 
+div.important .keycap, 
+div.warning .keycap
+{
+	color:white;
+}
+
+ul li p:last-child, ul li div.para:last-child {
+	margin-bottom:0em;
+	padding-bottom:0em;
+}
+
+/*document navigation*/
+.docnav a, .docnav strong {
+	border:none;
+	text-decoration:none;
+	font-weight:normal;
+}
+
+.docnav {
+	list-style:none;
+	margin:0em;
+	padding:0em;
+	position:relative;
+	width:100%;
+	padding-bottom:2em;
+	padding-top:1em;
+	border-top:1px dotted #ccc;
+}
+
+.docnav li {
+	list-style:none;
+	margin:0em;
+	padding:0em;
+	display:inline;
+	font-size:.8em;
+}
+
+.docnav li:before {
+	content:" ";
+}
+
+.docnav li.previous, .docnav li.next {
+	position:absolute;
+	top:1em;
+}
+
+.docnav li.up, .docnav li.home {
+	margin:0em 1.5em;
+}
+
+.docnav li.previous {
+	left:0px;
+	text-align:left;
+}
+
+.docnav li.next {
+	right:0px;
+	text-align:right;
+}
+
+.docnav li.previous strong, .docnav li.next strong {
+	height:22px;
+	display:block;
+}
+
+.docnav {
+	margin:0 auto;
+	text-align:center;
+}
+
+.docnav li.next a strong {
+	background:  url(../images/stock-go-forward.png) top right no-repeat;
+	padding-top:3px;
+	padding-bottom:4px;
+	padding-right:28px;
+	font-size:1.2em;
+}
+
+.docnav li.previous a strong {
+	background: url(../images/stock-go-back.png) top left no-repeat;
+	padding-top:3px;
+	padding-bottom:4px;
+	padding-left:28px;
+	padding-right:0.5em;
+	font-size:1.2em;
+}
+
+.docnav li.home a strong {
+	background: url(../images/stock-home.png) top left no-repeat;
+	padding:5px;
+	padding-left:28px;
+	font-size:1.2em;
+}
+
+.docnav li.up a strong {
+	background: url(../images/stock-go-up.png) top left no-repeat;
+	padding:5px;
+	padding-left:28px;
+	font-size:1.2em;
+}
+
+.docnav a:link, .docnav a:visited {
+	color:#666;
+}
+
+.docnav a:hover, .docnav a:focus, .docnav a:active {
+	color:black;
+}
+
+.docnav a {
+	max-width: 10em;
+	overflow:hidden;
+}
+
+.docnav a:link strong {
+	text-decoration:none;
+}
+
+.docnav {
+	margin:0 auto;
+	text-align:center;
+}
+
+ul.docnav {
+	margin-bottom: 1em;
+}
+/* Reports */
+.reports ul {
+	list-style:none;
+	margin:0em;
+	padding:0em;
+}
+
+.reports li{
+	margin:0em;
+	padding:0em;
+}
+
+.reports li.odd {
+	background-color: #eeeeee;
+	margin:0em;
+	padding:0em;
+}
+
+.reports dl {
+	display:inline;
+	margin:0em;
+	padding:0em;
+	float:right;
+	margin-right: 17em;
+	margin-top:-1.3em;
+}
+
+.reports dt {
+	display:inline;
+	margin:0em;
+	padding:0em;
+}
+
+.reports dd {
+	display:inline;
+	margin:0em;
+	padding:0em;
+	padding-right:.5em;
+}
+
+.reports h2, .reports h3{
+	display:inline;
+	padding-right:.5em;
+	font-size:10pt;
+	font-weight:normal;
+}
+
+.reports div.progress {
+	display:inline;
+	float:right;
+	width:16em;
+	background:#c00 url(../images/shine.png) top left repeat-x;
+	margin:0em;
+	margin-top:-1.3em;
+	padding:0em;
+	border:none;
+}
+
+/*uniform*/
+body.results, body.reports {
+	max-width:57em ;
+	padding:0em;
+}
+
+/*Progress Bar*/
+div.progress {
+	display:block;
+	float:left;
+	width:16em;
+	background:#c00 url(../images/shine.png) top left repeat-x;
+	height:1em;
+}
+
+div.progress span {
+	height:1em;
+	float:left;
+}
+
+div.progress span.translated {
+	background:#6c3 url(../images/shine.png) top left repeat-x;
+}
+
+div.progress span.fuzzy {
+	background:#ff9f00 url(../images/shine.png) top left repeat-x;
+}
+
+
+/*Results*/
+
+.results ul {
+	list-style:none;
+	margin:0em;
+	padding:0em;
+}
+
+.results li{
+	margin:0em;
+	padding:0em;
+}
+
+.results li.odd {
+	background-color: #eeeeee;
+	margin:0em;
+	padding:0em;
+}
+
+.results dl {
+	display:inline;
+	margin:0em;
+	padding:0em;
+	float:right;
+	margin-right: 17em;
+	margin-top:-1.3em;
+}
+
+.results dt {
+	display:inline;
+	margin:0em;
+	padding:0em;
+}
+
+.results dd {
+	display:inline;
+	margin:0em;
+	padding:0em;
+	padding-right:.5em;
+}
+
+.results h2, .results h3{
+	display:inline;
+	padding-right:.5em;
+	font-size:10pt;
+	font-weight:normal;
+}
+
+.results div.progress {
+	display:inline;
+	float:right;
+	width:16em;
+	background:#c00 url(../images/shine.png) top left repeat-x;
+	margin:0em;
+	margin-top:-1.3em;
+	padding:0em;
+	border:none;
+}
+
+/* Dirty EVIL Mozilla hack for round corners */
+pre {
+	-moz-border-radius:11px;
+	-webkit-border-radius:11px;
+	border-radius: 11px;
+}
+
+.example {
+	-moz-border-radius:15px;
+	-webkit-border-radius:15px;
+	border-radius: 15px;
+}
+
+.term{
+	color:#336699;
+}
+
+.package {
+	font-style: italic;
+}
+
+.edition {
+	color: #336699;
+	background-color: transparent;
+	margin-top: 1em;
+	margin-bottom: 1em;
+	font-size: 1.4em;
+	font-weight: bold;
+	text-align: center;
+}
+
+span.remark {
+	background-color: #ff00ff;
+}
+
+.draft {
+	background-image: url(../images/watermark-draft.png);
+	background-repeat: repeat-y;
+        background-position: center;
+}
+
+.foreignphrase {
+	font-style: inherit;
+}
+
+dt {
+	clear:both;
+}
+
+dt img {
+	border-style: none;
+	max-width: 112px;
+}
+
+dt object {
+	max-width: 112px;
+}
+
+dt .inlinemediaobject, dt object {
+	display: inline;
+	float: left;
+	margin-bottom: 1em;
+	padding-right: 1em;
+	width: 112px;
+}
+
+dl:after {
+	display: block;
+	clear: both;
+	content: "";
+}
+
+.toc dd {
+	padding-bottom: 0em;
+	margin-bottom: 1em;
+	padding-left: 1.3em;
+	margin-left: 0em;
+}
+
+div.toc > dl > dt {
+	padding-bottom: 0em;
+	margin-bottom: 0em;
+	margin-top: 1em;
+}
+
+
+.strikethrough {
+	text-decoration: line-through;
+}
+
+.underline {
+	text-decoration: underline;
+}
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/css/default.css
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/css/default.css	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/css/default.css	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,3 @@
+ at import url("common.css");
+ at import url("overrides.css");
+ at import url("lang.css");

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/css/overrides.css
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/css/overrides.css	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/css/overrides.css	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,56 @@
+a:link {
+	color:#0066cc;
+}
+
+a:visited {
+	color:#6699cc;
+}
+
+h1 {
+	color:#a70000;
+}
+
+.producttitle {
+	background: #800 url(../images/h1-bg.png) top left repeat;
+}
+
+.section h1.title {
+	color:#a70000;
+}
+
+
+h2,h3,h4,h5,h6 {
+	color:#a70000;
+}
+
+table {
+	border:1px solid #aaa;
+}
+
+table th {
+	background-color:#900;
+}
+
+table tr.even td {
+	background-color:#f5f5f5;
+}
+
+#title a {
+	height:54px;
+}
+
+.term{
+	color:#a70000;
+}
+
+.revhistory table th {
+	color:#a70000;
+}
+
+.edition {
+	color: #a70000;
+}
+
+span.remark{
+	background-color: #ffff00;
+}

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/1.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/1.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/1.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/1.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/1.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 17.993,22.013004 L 17.993,10.113004 L 15.239,10.113004 C 14.899001,11.218003 14.286999,11.643004 12.757,11.728004 L 12.757,13.819004 L 14.763,13.819004 L 14.763,22.013004 L 17.993,22.013004"
+     id="text2207"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/10.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/10.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/10.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/10.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/10.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 12.252562,22 L 12.252562,10.1 L 9.4985624,10.1 C 9.1585628,11.204999 8.5465609,11.63 7.0165624,11.715 L 7.0165624,13.806 L 9.0225624,13.806 L 9.0225624,22 L 12.252562,22 M 24.983438,16.033 C 24.983438,12.072004 22.705435,9.913 19.611438,9.913 C 16.517441,9.913 14.205438,12.106004 14.205438,16.067 C 14.205438,20.027996 16.483441,22.187 19.577438,22.187 C 22.671435,22.187 24.983438,19.993996 24.983438,16.033 M 21.600438,16.067 C 21.600438,18.242998 20.886437,19.348 19.611438,19.348 C 18.336439,19.348 17.588438,18.208998 17.588438,16.033 C 17.588438,13.857002 18.302439,12.752 19.577438,12.752 C 20.852437,12.752 21.600438,13.891002 21.600438,16.067"
+     id="text2219"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/11.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/11.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/11.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/11.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/11.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 14.623052,22 L 14.623052,10.1 L 11.869052,10.1 C 11.529053,11.204999 10.917051,11.63 9.3870527,11.715 L 9.3870527,13.806 L 11.393052,13.806 L 11.393052,22 L 14.623052,22 M 21.794928,22 L 21.794928,10.1 L 19.040928,10.1 C 18.700928,11.204999 18.088926,11.63 16.558928,11.715 L 16.558928,13.806 L 18.564928,13.806 L 18.564928,22 L 21.794928,22"
+     id="text2219"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/12.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/12.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/12.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/12.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/12.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 12.677562,22 L 12.677562,10.1 L 9.9235624,10.1 C 9.5835628,11.204999 8.9715609,11.63 7.4415624,11.715 L 7.4415624,13.806 L 9.4475624,13.806 L 9.4475624,22 L 12.677562,22 M 24.558438,22 L 24.558438,19.314 L 18.353438,19.314 C 18.608438,18.600001 19.27144,17.936999 21.651438,16.832 C 23.929436,15.778001 24.473438,14.825998 24.473438,13.262 C 24.473438,11.103002 22.926435,9.913 19.968438,9.913 C 17.92844,9.913 16.381436,10.491001 14.868438,11.46 L 16.381438,13.891 C 17.571437,13.092001 18.727439,12.684 19.917438,12.684 C 20.869437,12.684 21.243438,12.973001 21.243438,13.5 C 21.243438,13.976 21.056437,14.163001 19.798438,14.724 C 16.823441,16.049999 14.936438,17.988004 14.834438,22 L 24.558438,22"
+     id="text2219"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/13.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/13.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/13.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/13.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/13.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 12.550062,22 L 12.550062,10.1 L 9.7960624,10.1 C 9.4560628,11.204999 8.8440609,11.63 7.3140624,11.715 L 7.3140624,13.806 L 9.3200624,13.806 L 9.3200624,22 L 12.550062,22 M 24.685938,18.226 C 24.685938,16.713002 23.716937,15.914 22.611938,15.659 C 23.427937,15.268 24.192938,14.638999 24.192938,13.33 C 24.192938,10.814003 22.288935,9.913 19.432938,9.913 C 17.35894,9.913 15.930937,10.610001 14.825938,11.46 L 16.389938,13.602 C 17.307937,12.939001 18.191939,12.582 19.347938,12.582 C 20.520937,12.582 20.996938,12.922001 20.996938,13.551 C 20.996938,14.332999 20.656937,14.554 19.619938,14.554 L 18.089938,14.554 L 18.089938,17.121 L 19.806938,17.121 C 21.013937,17.121 21.489938,17.427001 21.489938,18.26 C 21.489938,19.075999 20.911937,19.467 19.534938,19.467 C 18.225939,19.467 17.120937,18.973999 16.151938,18.226 L 14.451938,20.368 C 15.726937,21.489999 17.44394,22.187 19.466938,22.187 C 22.696935,22.187 24.685938,20.979997 24.685938,18.226"
+     id="text2219"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/14.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/14.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/14.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/14.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/14.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 12.040062,22 L 12.040062,10.1 L 9.2860624,10.1 C 8.9460628,11.204999 8.3340609,11.63 6.8040624,11.715 L 6.8040624,13.806 L 8.8100624,13.806 L 8.8100624,22 L 12.040062,22 M 25.195938,19.96 L 25.195938,17.172 L 23.665938,17.172 L 23.665938,10.1 L 20.401938,10.1 L 13.992938,17.461 L 13.992938,19.875 L 20.707938,19.875 L 20.707938,22 L 23.665938,22 L 23.665938,19.96 L 25.195938,19.96 M 20.758938,13.432 C 20.724938,13.992999 20.707938,15.302001 20.707938,15.999 L 20.707938,17.172 L 19.823938,17.172 C 19.007939,17.172 18.191937,17.189 17.596938,17.223 C 18.038938,16.798 18.531939,16.253999 19.160938,15.489 L 19.330938,15.285 C 20.112937,14.350001 20.435938,13.925 20.758938,13.432"
+     id="text2219"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/15.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/15.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/15.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/15.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/15.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 12.388562,22 L 12.388562,10.1 L 9.6345624,10.1 C 9.2945628,11.204999 8.6825609,11.63 7.1525624,11.715 L 7.1525624,13.806 L 9.1585624,13.806 L 9.1585624,22 L 12.388562,22 M 24.847438,17.852 C 24.847438,15.200003 23.164435,13.908 20.597438,13.908 C 19.407439,13.908 18.693437,14.112 18.030438,14.435 L 18.132438,12.786 L 24.133438,12.786 L 24.133438,10.1 L 15.463438,10.1 L 15.055438,16.271 L 17.877438,17.223 C 18.472437,16.798 19.067439,16.543 20.070438,16.543 C 21.090437,16.543 21.668438,17.019001 21.668438,17.937 C 21.668438,18.888999 21.107436,19.45 19.577438,19.45 C 18.302439,19.45 16.891437,18.956999 15.752438,18.277 L 14.409438,20.742 C 15.871436,21.625999 17.43544,22.187 19.492438,22.187 C 22.875435,22.187 24.847438,20.622997 24.847438,17.852"
+     id="text2219"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/16.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/16.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/16.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/16.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/16.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 12.405562,22 L 12.405562,10.1 L 9.6515624,10.1 C 9.3115628,11.204999 8.6995609,11.63 7.1695624,11.715 L 7.1695624,13.806 L 9.1755624,13.806 L 9.1755624,22 L 12.405562,22 M 24.830438,17.903 C 24.830438,15.387003 23.096435,14.214 20.631438,14.214 C 19.203439,14.214 18.336437,14.486 17.571438,14.911 C 18.472437,13.534001 20.104441,12.616 23.215438,12.616 L 23.215438,9.913 C 16.415445,9.913 14.341438,14.112003 14.341438,17.257 C 14.341438,20.537997 16.415441,22.187 19.407438,22.187 C 22.773435,22.187 24.830438,20.588997 24.830438,17.903 M 21.651438,18.124 C 21.651438,19.075999 20.818437,19.586 19.577438,19.586 C 18.132439,19.586 17.486438,18.990999 17.486438,18.141 C 17.486438,17.206001 18.183439,16.645 19.645438,16.645 C 20.903437,16.645 21.651438,17.206001 21.651438,18.124"
+     id="text2219"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/17.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/17.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/17.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/17.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/17.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 12.652062,22 L 12.652062,10.1 L 9.8980624,10.1 C 9.5580628,11.204999 8.9460609,11.63 7.4160624,11.715 L 7.4160624,13.806 L 9.4220624,13.806 L 9.4220624,22 L 12.652062,22 M 24.583938,12.48 L 24.583938,10.1 L 14.740938,10.1 L 14.740938,12.786 L 20.656938,12.786 C 18.36194,15.131998 17.239938,17.920004 17.205938,22 L 20.435938,22 C 20.435938,18.141004 21.098941,15.675997 24.583938,12.48"
+     id="text2219"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/18.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/18.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/18.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/18.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/18.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 12.176062,22 L 12.176062,10.1 L 9.4220624,10.1 C 9.0820628,11.204999 8.4700609,11.63 6.9400624,11.715 L 6.9400624,13.806 L 8.9460624,13.806 L 8.9460624,22 L 12.176062,22 M 25.059938,18.294 C 25.059938,16.764002 23.971937,15.948 23.206938,15.642 C 23.954937,15.166 24.549938,14.519999 24.549938,13.449 C 24.549938,11.171002 22.526935,9.913 19.653938,9.913 C 16.780941,9.913 14.723938,11.171002 14.723938,13.449 C 14.723938,14.519999 15.352939,15.251 16.066938,15.676 C 15.301939,15.982 14.213938,16.764002 14.213938,18.294 C 14.213938,20.707998 16.287941,22.187 19.619938,22.187 C 22.951935,22.187 25.059938,20.707998 25.059938,18.294 M 21.387938,13.5 C 21.387938,14.094999 20.945937,14.639 19.653938,14.639 C 18.361939,14.639 17.885938,14.094999 17.885938,13.5 C 17.885938,12.905001 18.327939,12.31 19.619938,12.31 C 20.911937,12.31 21.387938,12.905001 21.387938,13.5 M 21.897938,18.26 C 21.897938,19.075999 21.149936,19.688 19.653938,19.688 C 18.157939,19.688 17.375938,19.0759!
 99 17.375938,18.26 C 17.375938,17.444001 18.106939,16.849 19.619938,16.849 C 21.115936,16.849 21.897938,17.444001 21.897938,18.26"
+     id="text2219"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/19.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/19.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/19.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/19.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/19.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 12.414062,22 L 12.414062,10.1 L 9.6600624,10.1 C 9.3200628,11.204999 8.7080609,11.63 7.1780624,11.715 L 7.1780624,13.806 L 9.1840624,13.806 L 9.1840624,22 L 12.414062,22 M 24.821938,14.843 C 24.821938,11.562003 22.747935,9.913 19.755938,9.913 C 16.389941,9.913 14.332938,11.511003 14.332938,14.197 C 14.332938,16.712997 16.06694,17.886 18.531938,17.886 C 19.959937,17.886 20.826939,17.614 21.591938,17.189 C 20.690939,18.565999 19.058935,19.484 15.947938,19.484 L 15.947938,22.187 C 22.747931,22.187 24.821938,17.987997 24.821938,14.843 M 21.676938,13.959 C 21.676938,14.893999 20.979936,15.455 19.517938,15.455 C 18.259939,15.455 17.511938,14.893999 17.511938,13.976 C 17.511938,13.024001 18.344939,12.514 19.585938,12.514 C 21.030936,12.514 21.676938,13.109001 21.676938,13.959"
+     id="text2219"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/2.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/2.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/2.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/2.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/2.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 20.862,22.013004 L 20.862,19.327004 L 14.657,19.327004 C 14.912,18.613005 15.575003,17.950003 17.955,16.845004 C 20.232998,15.791005 20.777,14.839003 20.777,13.275004 C 20.777,11.116006 19.229997,9.9260043 16.272,9.9260043 C 14.232002,9.9260043 12.684999,10.504005 11.172,11.473004 L 12.685,13.904004 C 13.874999,13.105005 15.031001,12.697004 16.221,12.697004 C 17.172999,12.697004 17.547,12.986005 17.547,13.513004 C 17.547,13.989004 17.359999,14.176005 16.102,14.737004 C 13.127003,16.063003 11.24,18.001008 11.138,22.013004 L 20.862,22.013004"
+     id="text2207"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/20.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/20.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/20.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/20.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/20.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 14.685,22 L 14.685,19.314 L 8.4799999,19.314 C 8.7349997,18.600001 9.3980023,17.936999 11.778,16.832 C 14.055998,15.778001 14.6,14.825998 14.6,13.262 C 14.6,11.103002 13.052997,9.913 10.095,9.913 C 8.055002,9.913 6.5079984,10.491001 4.9949999,11.46 L 6.5079999,13.891 C 7.6979988,13.092001 8.8540011,12.684 10.044,12.684 C 10.995999,12.684 11.37,12.973001 11.37,13.5 C 11.37,13.976 11.182999,14.163001 9.9249999,14.724 C 6.9500029,16.049999 5.0629998,17.988004 4.9609999,22 L 14.685,22 M 27.421719,16.033 C 27.421719,12.072004 25.143716,9.913 22.049719,9.913 C 18.955722,9.913 16.643719,12.106004 16.643719,16.067 C 16.643719,20.027996 18.921722,22.187 22.015719,22.187 C 25.109716,22.187 27.421719,19.993996 27.421719,16.033 M 24.038719,16.067 C 24.038719,18.242998 23.324717,19.348 22.049719,19.348 C 20.77472,19.348 20.026719,18.208998 20.026719,16.033 C 20.026719,13.857002 20.74072,12.752 22.015719,12.752 C 23.290717,12.752 24.038719,13.891002 24.038719,16.067"
+     id="text2219"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/21.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/21.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/21.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/21.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/21.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 16.648141,22 L 16.648141,19.314 L 10.44314,19.314 C 10.69814,18.600001 11.361143,17.936999 13.741141,16.832 C 16.019139,15.778001 16.563141,14.825998 16.563141,13.262 C 16.563141,11.103002 15.016138,9.913 12.058141,9.913 C 10.018143,9.913 8.471139,10.491001 6.9581405,11.46 L 8.4711405,13.891 C 9.661139,13.092001 10.817142,12.684 12.007141,12.684 C 12.95914,12.684 13.333141,12.973001 13.333141,13.5 C 13.333141,13.976 13.14614,14.163001 11.88814,14.724 C 8.9131435,16.049999 7.0261404,17.988004 6.9241405,22 L 16.648141,22 M 23.82586,22 L 23.82586,10.1 L 21.07186,10.1 C 20.73186,11.204999 20.119858,11.63 18.58986,11.715 L 18.58986,13.806 L 20.59586,13.806 L 20.59586,22 L 23.82586,22"
+     id="text2219"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/22.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/22.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/22.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/22.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/22.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 14.685,22 L 14.685,19.314 L 8.4799999,19.314 C 8.7349997,18.600001 9.3980023,17.936999 11.778,16.832 C 14.055998,15.778001 14.6,14.825998 14.6,13.262 C 14.6,11.103002 13.052997,9.913 10.095,9.913 C 8.055002,9.913 6.5079984,10.491001 4.9949999,11.46 L 6.5079999,13.891 C 7.6979988,13.092001 8.8540011,12.684 10.044,12.684 C 10.995999,12.684 11.37,12.973001 11.37,13.5 C 11.37,13.976 11.182999,14.163001 9.9249999,14.724 C 6.9500029,16.049999 5.0629998,17.988004 4.9609999,22 L 14.685,22 M 26.571719,22 L 26.571719,19.314 L 20.366719,19.314 C 20.621718,18.600001 21.284721,17.936999 23.664719,16.832 C 25.942716,15.778001 26.486719,14.825998 26.486719,13.262 C 26.486719,11.103002 24.939716,9.913 21.981719,9.913 C 19.941721,9.913 18.394717,10.491001 16.881719,11.46 L 18.394719,13.891 C 19.584718,13.092001 20.74072,12.684 21.930719,12.684 C 22.882718,12.684 23.256719,12.973001 23.256719,13.5 C 23.256719,13.976 23.069717,14.163001 21.811719,14.724 C 18.836722,16.049999 16.9497!
 19,17.988004 16.847719,22 L 26.571719,22"
+     id="number"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/23.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/23.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/23.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/23.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/23.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 15.32239,22.013004 L 15.32239,19.327004 L 9.1173907,19.327004 C 9.3723904,18.613005 10.035393,17.950003 12.41539,16.845004 C 14.693388,15.791005 15.23739,14.839003 15.23739,13.275004 C 15.23739,11.116006 13.690387,9.9260043 10.73239,9.9260043 C 8.6923927,9.9260043 7.1453891,10.504005 5.6323906,11.473004 L 7.1453906,13.904004 C 8.3353896,13.105005 9.4913919,12.697004 10.68139,12.697004 C 11.633389,12.697004 12.00739,12.986005 12.00739,13.513004 C 12.00739,13.989004 11.820389,14.176005 10.56239,14.737004 C 7.5873937,16.063003 5.7003905,18.001008 5.5983906,22.013004 L 15.32239,22.013004 M 26.401609,18.239004 C 26.401609,16.726006 25.432608,15.927004 24.327609,15.672004 C 25.143608,15.281005 25.908609,14.652003 25.908609,13.343004 C 25.908609,10.827007 24.004606,9.9260043 21.148609,9.9260043 C 19.074611,9.9260043 17.646608,10.623005 16.541609,11.473004 L 18.105609,13.615004 C 19.023608,12.952005 19.90761,12.595004 21.063609,12.595004 C 22.236608,12.595004 22.712609,12!
 .935005 22.712609,13.564004 C 22.712609,14.346004 22.372608,14.567004 21.335609,14.567004 L 19.805609,14.567004 L 19.805609,17.134004 L 21.522609,17.134004 C 22.729608,17.134004 23.205609,17.440005 23.205609,18.273004 C 23.205609,19.089003 22.627608,19.480004 21.250609,19.480004 C 19.94161,19.480004 18.836608,18.987004 17.867609,18.239004 L 16.167609,20.381004 C 17.442608,21.503003 19.159611,22.200004 21.182609,22.200004 C 24.412606,22.200004 26.401609,20.993002 26.401609,18.239004"
+     id="text2207"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/3.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/3.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/3.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/3.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/3.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 21.117,18.239004 C 21.117,16.726006 20.147999,15.927004 19.043,15.672004 C 19.858999,15.281005 20.624,14.652003 20.624,13.343004 C 20.624,10.827007 18.719997,9.9260043 15.864,9.9260043 C 13.790002,9.9260043 12.361999,10.623005 11.257,11.473004 L 12.821,13.615004 C 13.738999,12.952005 14.623001,12.595004 15.779,12.595004 C 16.951999,12.595004 17.428,12.935005 17.428,13.564004 C 17.428,14.346004 17.087999,14.567004 16.051,14.567004 L 14.521,14.567004 L 14.521,17.134004 L 16.238,17.134004 C 17.444999,17.134004 17.921,17.440005 17.921,18.273004 C 17.921,19.089003 17.342999,19.480004 15.966,19.480004 C 14.657002,19.480004 13.551999,18.987004 12.583,18.239004 L 10.883,20.381004 C 12.157999,21.503003 13.875002,22.200004 15.898,22.200004 C 19.127997,22.200004 21.117,20.993002 21.117,18.239004"
+     id="text2207"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/4.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/4.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/4.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/4.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/4.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 20.573772,19.96 L 20.573772,17.172 L 19.043772,17.172 L 19.043772,10.1 L 15.779772,10.1 L 9.3707718,17.461 L 9.3707718,19.875 L 16.085772,19.875 L 16.085772,22 L 19.043772,22 L 19.043772,19.96 L 20.573772,19.96 M 16.136772,13.432 C 16.102772,13.992999 16.085772,15.302001 16.085772,15.999 L 16.085772,17.172 L 15.201772,17.172 C 14.385773,17.172 13.569771,17.189 12.974772,17.223 C 13.416772,16.798 13.909773,16.253999 14.538772,15.489 L 14.708772,15.285 C 15.490771,14.350001 15.813772,13.925 16.136772,13.432"
+     id="text2219"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/5.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/5.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/5.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/5.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/5.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 21.219,17.852 C 21.219,15.200003 19.535997,13.908 16.969,13.908 C 15.779001,13.908 15.064999,14.112 14.402,14.435 L 14.504,12.786 L 20.505,12.786 L 20.505,10.1 L 11.835,10.1 L 11.427,16.271 L 14.249,17.223 C 14.843999,16.798 15.439001,16.543 16.442,16.543 C 17.461999,16.543 18.04,17.019001 18.04,17.937 C 18.04,18.888999 17.478998,19.45 15.949,19.45 C 14.674001,19.45 13.262999,18.956999 12.124,18.277 L 10.781,20.742 C 12.242999,21.625999 13.807002,22.187 15.864,22.187 C 19.246997,22.187 21.219,20.622997 21.219,17.852"
+     id="text2219"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/6.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/6.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/6.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/6.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/6.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 21.2445,17.903 C 21.2445,15.387003 19.510497,14.214 17.0455,14.214 C 15.617501,14.214 14.750499,14.486 13.9855,14.911 C 14.886499,13.534001 16.518503,12.616 19.6295,12.616 L 19.6295,9.913 C 12.829507,9.913 10.7555,14.112003 10.7555,17.257 C 10.7555,20.537997 12.829503,22.187 15.8215,22.187 C 19.187497,22.187 21.2445,20.588997 21.2445,17.903 M 18.0655,18.124 C 18.0655,19.075999 17.232499,19.586 15.9915,19.586 C 14.546501,19.586 13.9005,18.990999 13.9005,18.141 C 13.9005,17.206001 14.597501,16.645 16.0595,16.645 C 17.317499,16.645 18.0655,17.206001 18.0655,18.124"
+     id="text2219"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/7.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/7.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/7.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/7.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/7.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 20.9215,12.48 L 20.9215,10.1 L 11.0785,10.1 L 11.0785,12.786 L 16.9945,12.786 C 14.699502,15.131998 13.5775,17.920004 13.5435,22 L 16.7735,22 C 16.7735,18.141004 17.436503,15.675997 20.9215,12.48"
+     id="text2219"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/8.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/8.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/8.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/8.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/8.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 21.423,18.294 C 21.423,16.764002 20.334999,15.948 19.57,15.642 C 20.317999,15.166 20.913,14.519999 20.913,13.449 C 20.913,11.171002 18.889997,9.913 16.017,9.913 C 13.144003,9.913 11.087,11.171002 11.087,13.449 C 11.087,14.519999 11.716001,15.251 12.43,15.676 C 11.665001,15.982 10.577,16.764002 10.577,18.294 C 10.577,20.707998 12.651003,22.187 15.983,22.187 C 19.314997,22.187 21.423,20.707998 21.423,18.294 M 17.751,13.5 C 17.751,14.094999 17.308999,14.639 16.017,14.639 C 14.725001,14.639 14.249,14.094999 14.249,13.5 C 14.249,12.905001 14.691001,12.31 15.983,12.31 C 17.274999,12.31 17.751,12.905001 17.751,13.5 M 18.261,18.26 C 18.261,19.075999 17.512998,19.688 16.017,19.688 C 14.521001,19.688 13.739,19.075999 13.739,18.26 C 13.739,17.444001 14.470002,16.849 15.983,16.849 C 17.478998,16.849 18.261,17.444001 18.261,18.26"
+     id="text2219"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/9.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/9.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/9.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/9.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/9.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 22.128383,14.843 C 22.128383,11.562003 20.05438,9.913 17.062383,9.913 C 13.696386,9.913 11.639383,11.511003 11.639383,14.197 C 11.639383,16.712997 13.373385,17.886 15.838383,17.886 C 17.266382,17.886 18.133384,17.614 18.898383,17.189 C 17.997384,18.565999 16.36538,19.484 13.254383,19.484 L 13.254383,22.187 C 20.054376,22.187 22.128383,17.987997 22.128383,14.843 M 18.983383,13.959 C 18.983383,14.893999 18.286381,15.455 16.824383,15.455 C 15.566384,15.455 14.818383,14.893999 14.818383,13.976 C 14.818383,13.024001 15.651384,12.514 16.892383,12.514 C 18.337381,12.514 18.983383,13.109001 18.983383,13.959"
+     id="text2219"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/bkgrnd_greydots.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/bkgrnd_greydots.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/bullet_arrowblue.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/bullet_arrowblue.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/documentation.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/documentation.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/dot.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/dot.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/dot2.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/dot2.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/h1-bg.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/h1-bg.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/image_left.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/image_left.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/image_right.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/image_right.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/important.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/important.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/important.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/important.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/important.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="48"
+   height="48"
+   id="svg2">
+  <defs
+     id="defs5" />
+  <path
+     d="M 255.25,-411.29002 L 261.86798,-400.85887 L 273.83367,-397.7882 L 265.95811,-388.27072 L 266.73534,-375.94179 L 255.25,-380.49082 L 243.76466,-375.94179 L 244.54189,-388.27072 L 236.66633,-397.7882 L 248.63202,-400.85887 L 255.25,-411.29002 z "
+     transform="matrix(1.1071323,0,0,1.1071323,-258.4137,459.98052)"
+     style="fill:#2e3436;fill-opacity:1;stroke:#2e3436;stroke-width:4.25880718;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path4450" />
+  <path
+     d="M 255.25,-411.29002 L 261.86798,-400.85887 L 273.83367,-397.7882 L 265.95811,-388.27072 L 266.73534,-375.94179 L 255.25,-380.49082 L 243.76466,-375.94179 L 244.54189,-388.27072 L 236.66633,-397.7882 L 248.63202,-400.85887 L 255.25,-411.29002 z "
+     transform="matrix(1.1071323,0,0,1.1071323,-258.4137,459.98052)"
+     style="fill:#fac521;fill-opacity:1;stroke-width:3.4070456;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path4452" />
+  <path
+     d="M 24.175987,4.476098 L 16.980534,16.087712 L 3.9317841,19.443104 L 16.980534,20.076901 L 24.175987,10.383543 L 31.408721,20.076901 L 44.457471,19.443104 L 31.468862,16.027571 L 24.175987,4.476098 z "
+     style="fill:#feeaab;fill-opacity:1;stroke-width:3.4070456;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path4531" />
+  <path
+     d="M 12.456856,24.055852 C 11.65845,24.299685 14.436112,29.177769 14.436112,32.041127 C 14.436112,37.343117 13.010825,39.831516 15.971742,37.364645 C 18.711008,35.08244 21.184735,34.873512 24.195894,34.873512 C 27.207053,34.873512 29.646656,35.08244 32.38592,37.364645 C 35.346837,39.831516 33.921551,37.343117 33.92155,32.041127 C 33.92155,28.223316 38.868232,20.827013 33.682674,25.591482 C 31.458295,27.635233 27.413886,29.481744 24.195894,29.481744 C 20.977903,29.481744 16.933493,27.635233 14.709113,25.591482 C 13.412724,24.400365 12.722992,23.974574 12.456856,24.055852 z "
+     style="fill:#fcd867;fill-opacity:1;stroke-width:3.4070456;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path2185" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/jboss-logo.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/jboss-logo.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/jboss-logo.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,233 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="139.51801"
+   height="79.202713"
+   id="svg2898"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   sodipodi:docname="jboss-logo.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <metadata
+     id="metadata16">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="" />
+        <dc:title />
+        <dc:date />
+        <dc:creator>
+          <cc:Agent>
+            <dc:title />
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title />
+          </cc:Agent>
+        </dc:rights>
+        <dc:publisher>
+          <cc:Agent>
+            <dc:title />
+          </cc:Agent>
+        </dc:publisher>
+        <dc:identifier />
+        <dc:source />
+        <dc:relation />
+        <dc:language />
+        <dc:subject>
+          <rdf:Bag />
+        </dc:subject>
+        <dc:coverage />
+        <dc:description />
+        <dc:contributor>
+          <cc:Agent>
+            <dc:title />
+          </cc:Agent>
+        </dc:contributor>
+        <cc:license
+           rdf:resource="" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="692"
+     inkscape:window-width="640"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     showgrid="false"
+     inkscape:zoom="1"
+     inkscape:cx="95.81665"
+     inkscape:cy="41.7868"
+     inkscape:window-x="846"
+     inkscape:window-y="127"
+     inkscape:current-layer="svg2898" />
+  <defs
+     id="defs21">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="-50 : 600 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="700 : 600 : 1"
+       inkscape:persp3d-origin="300 : 400 : 1"
+       id="perspective18" />
+    <inkscape:perspective
+       id="perspective2683"
+       inkscape:persp3d-origin="107.759 : 40.782333 : 1"
+       inkscape:vp_z="215.51801 : 61.1735 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 61.1735 : 1"
+       sodipodi:type="inkscape:persp3d" />
+  </defs>
+  <g
+     id="g2622"
+     transform="scale(0.6473613,0.6473613)">
+	<g
+   id="g2624">
+		<path
+   id="path2626"
+   d="M 140.253,110.221 L 143.198,116.112 L 140.706,116.112 L 137.843,110.407 L 134.588,110.407 L 134.588,116.112 L 132.467,116.112 L 132.467,101.693 L 138.79,101.693 C 141.304,101.693 143.425,103.032 143.425,105.999 C 143.425,108.305 142.21,109.727 140.253,110.221 z M 138.79,103.732 L 134.588,103.732 L 134.588,108.367 L 138.79,108.367 C 140.232,108.367 141.241,107.626 141.241,106.06 C 141.241,104.556 140.253,103.732 138.79,103.732 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2628"
+   d="M 155.164,111.458 L 148.016,111.458 C 148.243,113.538 149.417,114.424 150.736,114.424 C 151.642,114.424 152.363,114.095 153.084,113.559 L 154.341,114.918 C 153.394,115.824 152.261,116.339 150.612,116.339 C 148.079,116.339 145.936,114.3 145.936,110.716 C 145.936,107.049 147.873,105.071 150.673,105.071 C 153.742,105.071 155.226,107.563 155.226,110.489 C 155.226,110.879 155.185,111.231 155.164,111.458 z M 150.529,106.987 C 149.107,106.987 148.242,107.975 148.056,109.706 L 153.082,109.706 C 152.98,108.223 152.28,106.987 150.529,106.987 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2630"
+   d="M 164.37,116.112 L 164.37,115.083 C 163.587,115.804 162.681,116.339 161.548,116.339 C 159.22,116.339 157.387,114.651 157.387,110.53 C 157.387,106.822 159.406,105.071 161.651,105.071 C 162.743,105.071 163.773,105.648 164.371,106.307 L 164.371,102.187 L 166.472,101.095 L 166.472,116.112 L 164.37,116.112 z M 164.391,108.45 C 163.917,107.811 162.928,107.028 161.857,107.028 C 160.333,107.028 159.509,108.182 159.509,110.468 C 159.509,113.187 160.374,114.381 161.94,114.381 C 162.949,114.381 163.835,113.701 164.391,113.002 L 164.391,108.45 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2632"
+   d="M 184.266,116.112 L 184.266,109.644 L 177.632,109.644 L 177.632,116.112 L 175.47,116.112 L 175.47,101.693 L 177.632,101.693 L 177.632,107.522 L 184.266,107.522 L 184.266,101.693 L 186.428,101.693 L 186.428,116.112 L 184.266,116.112 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2634"
+   d="M 196.065,116.112 L 196.065,115.042 C 195.324,115.783 194.273,116.339 193.099,116.339 C 191.348,116.339 189.35,115.351 189.35,112.693 C 189.35,110.283 191.204,109.191 193.655,109.191 C 194.665,109.191 195.468,109.335 196.065,109.603 L 196.065,108.799 C 196.065,107.625 195.344,106.966 194.026,106.966 C 192.914,106.966 192.048,107.172 191.204,107.646 L 190.38,106.04 C 191.41,105.401 192.564,105.071 194.088,105.071 C 196.498,105.071 198.147,106.245 198.147,108.697 L 198.147,116.112 L 196.065,116.112 L 196.065,116.112 z M 196.065,111.499 C 195.489,111.21 194.747,111.024 193.593,111.024 C 192.234,111.024 191.368,111.642 191.368,112.631 C 191.368,113.701 192.048,114.423 193.448,114.423 C 194.582,114.423 195.57,113.723 196.064,113.043 L 196.064,111.499 L 196.065,111.499 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2636"
+   d="M 206.363,115.844 C 205.847,116.133 205.127,116.338 204.282,116.338 C 202.778,116.338 201.851,115.412 201.851,113.475 L 201.851,107.234 L 200.306,107.234 L 200.306,105.297 L 201.851,105.297 L 201.851,102.207 L 203.932,101.095 L 203.932,105.297 L 206.61,105.297 L 206.61,107.234 L 203.932,107.234 L 203.932,113.105 C 203.932,114.114 204.261,114.403 205.044,114.403 C 205.6,114.403 206.218,114.197 206.609,113.97 L 206.363,115.844 z"
+   style="fill:#cc0000" />
+
+	</g>
+
+	<g
+   id="g2638">
+		<path
+   id="path2640"
+   d="M 106.389,51.025 C 109.959,49.238 112.389,45.924 112.389,41.844 C 112.389,32.335 103.775,30.289 95.924,30.423 L 74.738,30.423 L 74.617,30.423 L 62.871,30.423 L 62.871,60.785 C 62.871,65.194 61.334,66.721 58.597,66.721 C 55.656,66.721 54.002,65.067 54.002,62.063 L 54.002,57.858 L 42.832,57.858 L 42.832,59.827 C 42.832,69.981 46.724,76.926 58.784,76.926 C 68.621,76.926 73.822,72.57 74.617,63.968 L 74.617,75.972 L 96.496,75.972 C 106.257,75.972 114.233,72.657 114.233,61.811 C 114.233,56.646 111.242,52.435 106.389,51.025 z M 86.487,39.605 L 95.668,39.605 C 98.161,39.605 100.52,40.697 100.52,44.01 C 100.52,47.263 97.714,48.348 95.668,48.348 L 86.487,48.348 L 86.487,39.605 z M 95.989,66.469 L 86.487,66.469 L 86.487,56 L 95.989,56 C 99.565,56 102.373,57.345 102.373,61.355 C 102.373,65.125 99.756,66.469 95.989,66.469 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2642"
+   d="M 90.067,108.399 C 90.067,100.704 83.822,94.452 76.123,94.452 C 68.409,94.452 62.168,100.704 62.168,108.399 C 62.168,116.108 68.409,122.347 76.123,122.347 C 83.822,122.347 90.067,116.108 90.067,108.399 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2644"
+   d="M 53.012,103.999 C 53.012,97.181 47.479,91.65 40.655,91.65 C 33.832,91.65 28.303,97.18 28.303,103.999 C 28.303,110.823 33.831,116.356 40.655,116.356 C 47.479,116.356 53.012,110.823 53.012,103.999 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2646"
+   d="M 25.097,81.68 C 25.097,75.523 20.113,70.529 13.947,70.529 C 7.779,70.529 2.787,75.523 2.787,81.68 C 2.787,87.854 7.779,92.848 13.947,92.848 C 20.112,92.848 25.097,87.854 25.097,81.68 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2648"
+   d="M 19.918,50.615 C 19.918,45.109 15.463,40.659 9.963,40.659 C 4.464,40.659 0,45.108 0,50.615 C 0,56.115 4.464,60.579 9.963,60.579 C 15.463,60.579 19.918,56.114 19.918,50.615 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2650"
+   d="M 33.88,22.719 C 33.88,18.1 30.124,14.353 25.508,14.353 C 20.889,14.353 17.139,18.1 17.139,22.719 C 17.139,27.342 20.889,31.086 25.508,31.086 C 30.124,31.086 33.88,27.342 33.88,22.719 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2652"
+   d="M 57.78,10.364 C 57.78,6.184 54.395,2.793 50.214,2.793 C 46.034,2.793 42.643,6.184 42.643,10.364 C 42.643,14.551 46.035,17.942 50.214,17.942 C 54.396,17.942 57.78,14.551 57.78,10.364 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2654"
+   d="M 82.891,6.377 C 82.891,2.855 80.042,0 76.517,0 C 73.001,0 70.14,2.855 70.14,6.377 C 70.14,9.903 73.001,12.757 76.517,12.757 C 80.042,12.757 82.891,9.903 82.891,6.377 z"
+   style="fill:#cc0000" />
+
+	</g>
+
+	<g
+   id="g2656">
+		<g
+   id="g2658">
+			<path
+   id="path2660"
+   d="M 161.415,62.895 C 156.077,61.543 149.709,61.118 147.172,56.742 C 147.293,57.624 147.376,58.522 147.376,59.448 C 147.376,61.433 147.077,63.315 146.536,65.067 L 155.794,65.067 C 155.794,66.721 156.504,67.933 157.582,68.762 C 158.604,69.532 160.076,69.904 161.604,69.904 C 163.701,69.904 166.706,69.02 166.706,66.4 C 166.706,63.855 163.321,63.336 161.415,62.895 z"
+   style="fill:none" />
+
+			<path
+   id="path2662"
+   d="M 129.896,50.193 C 124.851,50.193 123.318,55.244 123.318,59.448 C 123.318,63.665 124.851,68.635 129.896,68.635 C 134.935,68.635 136.529,63.665 136.529,59.448 C 136.528,55.244 134.935,50.193 129.896,50.193 z"
+   style="fill:none" />
+
+			<path
+   id="path2664"
+   d="M 192.015,62.895 C 185.337,61.204 176.724,60.97 176.338,52.616 L 166.718,52.616 C 166.718,51.22 166.206,50.326 165.322,49.75 C 164.419,49.181 163.215,48.923 161.875,48.923 C 160.094,48.923 156.883,49.111 156.883,51.41 C 156.883,54.542 164.156,55.115 169.13,56.197 C 175.779,57.532 177.529,62.315 177.553,65.066 L 186.395,65.066 C 186.395,66.72 187.105,67.932 188.183,68.761 C 189.206,69.531 190.677,69.903 192.204,69.903 C 194.301,69.903 197.307,69.019 197.307,66.399 C 197.306,63.855 193.922,63.336 192.015,62.895 z"
+   style="fill:none" />
+
+			<path
+   id="path2666"
+   d="M 199.729,56.198 C 194.754,55.116 187.148,54.544 187.148,51.411 C 187.148,49.111 190.027,48.924 191.808,48.924 C 193.147,48.924 194.352,49.182 195.255,49.751 C 196.139,50.327 196.651,51.221 196.651,52.617 L 206.67,52.617 C 206.285,44.011 198.69,41.903 191.431,41.903 C 185.383,41.903 177.526,43.785 176.439,50.443 C 174.954,43.662 168.095,41.903 161.496,41.903 C 154.986,41.903 146.035,44.075 146.035,52.049 C 146.035,52.19 146.056,52.31 146.059,52.447 C 143.534,46.151 137.569,41.903 129.896,41.903 C 121.597,41.903 115.392,46.75 113.294,53.899 C 114.898,56.057 115.742,58.872 115.742,61.811 C 115.742,64.224 115.358,66.36 114.631,68.23 C 117.484,73.503 122.974,76.926 129.896,76.926 C 137.25,76.926 143.019,73.054 145.711,67.207 C 147.125,74.716 154.473,76.926 161.668,76.926 C 167.855,76.926 174.688,74.899 176.847,69.154 C 179.082,75.103 185.737,76.926 192.268,76.926 C 199.73,76.926 208.154,73.995 208.154,65.125 C 208.153,62.383 206.423,57.542 199.729,56.198 z M 129.896,68.63!
 5 C 124.851,68.635 123.318,63.665 123.318,59.448 C 123.318,55.243 124.851,50.193 129.896,50.193 C 134.935,50.193 136.529,55.244 136.529,59.448 C 136.528,63.666 134.935,68.635 129.896,68.635 z M 161.604,69.904 C 160.076,69.904 158.604,69.532 157.582,68.762 C 156.504,67.933 155.794,66.721 155.794,65.067 L 146.536,65.067 C 147.077,63.315 147.376,61.433 147.376,59.448 C 147.376,58.522 147.293,57.624 147.172,56.742 C 149.709,61.117 156.077,61.543 161.415,62.895 C 163.321,63.336 166.706,63.855 166.706,66.4 C 166.706,69.02 163.701,69.904 161.604,69.904 z M 192.203,69.904 C 190.676,69.904 189.205,69.532 188.182,68.762 C 187.104,67.933 186.394,66.721 186.394,65.067 L 177.552,65.067 C 177.529,62.316 175.779,57.533 169.129,56.198 C 164.155,55.116 156.882,54.544 156.882,51.411 C 156.882,49.111 160.093,48.924 161.874,48.924 C 163.214,48.924 164.418,49.182 165.321,49.751 C 166.206,50.327 166.717,51.221 166.717,52.617 L 176.337,52.617 C 176.723,60.971 185.336,61.204 192.014,62.896 C 193.9!
 21,63.337 197.305,63.856 197.305,66.401 C 197.306,69.02 194.3,!
 69.904 1
92.203,69.904 z"
+   style="fill:#60605b" />
+
+		</g>
+
+		<path
+   id="path2668"
+   d="M 209.127,36.16 L 210.092,36.16 L 211.544,38.546 L 212.485,38.546 L 210.914,36.116 C 211.721,36.014 212.334,35.586 212.334,34.607 C 212.334,33.508 211.696,33.034 210.396,33.034 L 208.294,33.034 L 208.294,38.546 L 209.127,38.546 L 209.127,36.16 z M 209.127,35.446 L 209.127,33.735 L 210.27,33.735 C 210.837,33.735 211.47,33.867 211.47,34.55 C 211.47,35.397 210.837,35.446 210.131,35.446 L 209.127,35.446 z"
+   style="fill:#60605b" />
+
+		<path
+   id="path2670"
+   d="M 215.518,35.8 C 215.518,38.78 213.098,41.192 210.119,41.192 C 207.133,41.192 204.713,38.78 204.713,35.8 C 204.713,32.813 207.133,30.395 210.119,30.395 C 213.098,30.396 215.518,32.813 215.518,35.8 z M 210.118,31.356 C 207.654,31.356 205.666,33.338 205.666,35.8 C 205.666,38.251 207.654,40.232 210.118,40.232 C 212.568,40.232 214.556,38.251 214.556,35.8 C 214.557,33.338 212.568,31.356 210.118,31.356 z"
+   style="fill:#60605b" />
+
+	</g>
+
+	<g
+   id="g2672">
+		<path
+   id="path2674"
+   d="M 108.227,116.338 C 107.135,116.338 106.105,115.762 105.508,115.103 L 105.508,116.112 L 103.406,116.112 L 103.406,102.187 L 105.508,101.095 L 105.508,106.327 C 106.29,105.605 107.196,105.07 108.33,105.07 C 110.657,105.07 112.49,106.759 112.49,110.879 C 112.49,114.588 110.472,116.338 108.227,116.338 z M 107.938,107.028 C 106.928,107.028 106.042,107.708 105.487,108.409 L 105.487,112.961 C 105.961,113.6 106.949,114.382 108.02,114.382 C 109.544,114.382 110.369,113.23 110.369,110.943 C 110.369,108.223 109.504,107.028 107.938,107.028 z"
+   style="fill:#60605b" />
+
+		<path
+   id="path2676"
+   d="M 118.915,119.923 L 116.67,119.923 L 118.235,115.906 L 114.259,105.297 L 116.587,105.297 L 118.358,110.592 C 118.687,111.539 119.182,113.146 119.305,113.742 C 119.491,113.104 119.944,111.559 120.273,110.633 L 122.107,105.297 L 124.352,105.297 L 118.915,119.923 z"
+   style="fill:#60605b" />
+
+	</g>
+
+</g>
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/note.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/note.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/note.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/note.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/note.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="48"
+   height="48"
+   id="svg2">
+  <defs
+     id="defs5" />
+  <path
+     d="M 30.27396,4.1232594 L 18.765811,4.1232594 C 11.476786,4.1232594 5.5574109,10.546411 5.5574109,19.960741 C 5.5574109,24.746615 7.0844878,29.075948 9.5403943,32.177328 C 9.4616811,32.681104 9.414455,33.200619 9.414455,33.720144 C 9.414455,39.308917 13.554865,43.591015 18.891751,44.267966 C 17.506371,42.693663 16.656245,40.914707 16.656245,38.616218 C 16.656245,38.01799 16.719219,37.419752 16.82942,36.837262 C 17.459135,36.963202 18.104599,37.026176 18.750063,37.026176 L 30.258211,37.026176 C 37.547237,37.026176 43.466612,29.39081 43.466612,19.960741 C 43.466612,10.530672 37.578724,4.1232594 30.27396,4.1232594 z "
+     style="fill:#2e3436;fill-opacity:1;stroke:#2e3436;stroke-width:4.7150631;stroke-miterlimit:4;stroke-dasharray:none"
+     id="path4317" />
+  <path
+     d="M 30.27396,4.1232594 L 18.765811,4.1232594 C 11.476786,4.1232594 5.5574109,10.546411 5.5574109,19.960741 C 5.5574109,24.746615 7.0844878,29.075948 9.5403943,32.177328 C 9.4616811,32.681104 9.414455,33.200619 9.414455,33.720144 C 9.414455,39.308917 13.554865,43.591015 18.891751,44.267966 C 17.506371,42.693663 16.656245,40.914707 16.656245,38.616218 C 16.656245,38.01799 16.719219,37.419752 16.82942,36.837262 C 17.459135,36.963202 18.104599,37.026176 18.750063,37.026176 L 30.258211,37.026176 C 37.547237,37.026176 43.466612,29.39081 43.466612,19.960741 C 43.466612,10.530672 37.578724,4.1232594 30.27396,4.1232594 z "
+     style="fill:#bfdce8;fill-opacity:1"
+     id="path142" />
+  <path
+     d="M 19.200879,5.5648899 C 12.490241,5.5648899 7.0622987,11.295775 7.0622987,19.690323 C 7.0622987,22.890926 7.8418023,25.879852 9.1910836,28.332288 C 8.6113289,26.599889 8.2852163,24.667826 8.2852163,22.673336 C 8.2852163,14.629768 13.495502,9.1620492 19.925575,9.1620492 L 30.071259,9.1620492 C 36.515213,9.1620492 41.711609,14.616311 41.711609,22.673336 C 41.864688,21.709218 41.983366,20.710908 41.983366,19.690323 C 41.983366,11.281743 36.524624,5.5648899 29.799492,5.5648899 L 19.200879,5.5648899 z "
+     style="fill:#ffffff"
+     id="path2358" />
+  <path
+     d="M 28.241965,33.725087 L 20.792252,33.725087 C 16.073756,33.725087 12.241894,32.944782 12.241894,26.850486 C 12.241894,25.10387 12.368512,23.572125 15.515722,23.567487 L 33.508301,23.540969 C 36.182481,23.537028 36.782127,24.950794 36.782127,26.850486 C 36.782127,32.95497 32.970649,33.725087 28.241965,33.725087 z "
+     style="fill:#d0ecf9;fill-opacity:1"
+     id="path2173" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/redhat-logo.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/redhat-logo.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/redhat-logo.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,243 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="139.51801"
+   height="79.202713"
+   id="svg2898"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   sodipodi:docname="redhat-logo.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <metadata
+     id="metadata16">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="" />
+        <dc:title />
+        <dc:date />
+        <dc:creator>
+          <cc:Agent>
+            <dc:title />
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title />
+          </cc:Agent>
+        </dc:rights>
+        <dc:publisher>
+          <cc:Agent>
+            <dc:title />
+          </cc:Agent>
+        </dc:publisher>
+        <dc:identifier />
+        <dc:source />
+        <dc:relation />
+        <dc:language />
+        <dc:subject>
+          <rdf:Bag />
+        </dc:subject>
+        <dc:coverage />
+        <dc:description />
+        <dc:contributor>
+          <cc:Agent>
+            <dc:title />
+          </cc:Agent>
+        </dc:contributor>
+        <cc:license
+           rdf:resource="" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="692"
+     inkscape:window-width="640"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     showgrid="false"
+     inkscape:zoom="1"
+     inkscape:cx="95.81665"
+     inkscape:cy="121.7868"
+     inkscape:window-x="1091"
+     inkscape:window-y="85"
+     inkscape:current-layer="svg2898" />
+  <defs
+     id="defs21">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="-50 : 600 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="700 : 600 : 1"
+       inkscape:persp3d-origin="300 : 400 : 1"
+       id="perspective18" />
+    <inkscape:perspective
+       id="perspective2683"
+       inkscape:persp3d-origin="107.759 : 40.782333 : 1"
+       inkscape:vp_z="215.51801 : 61.1735 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 61.1735 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective2733"
+       inkscape:persp3d-origin="150 : 46.666667 : 1"
+       inkscape:vp_z="300 : 70 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 70 : 1"
+       sodipodi:type="inkscape:persp3d" />
+  </defs>
+  <g
+     id="g2622"
+     transform="scale(0.6473613,0.6473613)"
+     inkscape:export-filename="/home/rlerch/Source/SVN/publican/trunk/publican-jboss/en-US/images/image_left.png"
+     inkscape:export-xdpi="61.361534"
+     inkscape:export-ydpi="61.361534">
+	<g
+   id="g2624">
+		<path
+   id="path2626"
+   d="M 140.253,110.221 L 143.198,116.112 L 140.706,116.112 L 137.843,110.407 L 134.588,110.407 L 134.588,116.112 L 132.467,116.112 L 132.467,101.693 L 138.79,101.693 C 141.304,101.693 143.425,103.032 143.425,105.999 C 143.425,108.305 142.21,109.727 140.253,110.221 z M 138.79,103.732 L 134.588,103.732 L 134.588,108.367 L 138.79,108.367 C 140.232,108.367 141.241,107.626 141.241,106.06 C 141.241,104.556 140.253,103.732 138.79,103.732 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2628"
+   d="M 155.164,111.458 L 148.016,111.458 C 148.243,113.538 149.417,114.424 150.736,114.424 C 151.642,114.424 152.363,114.095 153.084,113.559 L 154.341,114.918 C 153.394,115.824 152.261,116.339 150.612,116.339 C 148.079,116.339 145.936,114.3 145.936,110.716 C 145.936,107.049 147.873,105.071 150.673,105.071 C 153.742,105.071 155.226,107.563 155.226,110.489 C 155.226,110.879 155.185,111.231 155.164,111.458 z M 150.529,106.987 C 149.107,106.987 148.242,107.975 148.056,109.706 L 153.082,109.706 C 152.98,108.223 152.28,106.987 150.529,106.987 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2630"
+   d="M 164.37,116.112 L 164.37,115.083 C 163.587,115.804 162.681,116.339 161.548,116.339 C 159.22,116.339 157.387,114.651 157.387,110.53 C 157.387,106.822 159.406,105.071 161.651,105.071 C 162.743,105.071 163.773,105.648 164.371,106.307 L 164.371,102.187 L 166.472,101.095 L 166.472,116.112 L 164.37,116.112 z M 164.391,108.45 C 163.917,107.811 162.928,107.028 161.857,107.028 C 160.333,107.028 159.509,108.182 159.509,110.468 C 159.509,113.187 160.374,114.381 161.94,114.381 C 162.949,114.381 163.835,113.701 164.391,113.002 L 164.391,108.45 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2632"
+   d="M 184.266,116.112 L 184.266,109.644 L 177.632,109.644 L 177.632,116.112 L 175.47,116.112 L 175.47,101.693 L 177.632,101.693 L 177.632,107.522 L 184.266,107.522 L 184.266,101.693 L 186.428,101.693 L 186.428,116.112 L 184.266,116.112 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2634"
+   d="M 196.065,116.112 L 196.065,115.042 C 195.324,115.783 194.273,116.339 193.099,116.339 C 191.348,116.339 189.35,115.351 189.35,112.693 C 189.35,110.283 191.204,109.191 193.655,109.191 C 194.665,109.191 195.468,109.335 196.065,109.603 L 196.065,108.799 C 196.065,107.625 195.344,106.966 194.026,106.966 C 192.914,106.966 192.048,107.172 191.204,107.646 L 190.38,106.04 C 191.41,105.401 192.564,105.071 194.088,105.071 C 196.498,105.071 198.147,106.245 198.147,108.697 L 198.147,116.112 L 196.065,116.112 L 196.065,116.112 z M 196.065,111.499 C 195.489,111.21 194.747,111.024 193.593,111.024 C 192.234,111.024 191.368,111.642 191.368,112.631 C 191.368,113.701 192.048,114.423 193.448,114.423 C 194.582,114.423 195.57,113.723 196.064,113.043 L 196.064,111.499 L 196.065,111.499 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2636"
+   d="M 206.363,115.844 C 205.847,116.133 205.127,116.338 204.282,116.338 C 202.778,116.338 201.851,115.412 201.851,113.475 L 201.851,107.234 L 200.306,107.234 L 200.306,105.297 L 201.851,105.297 L 201.851,102.207 L 203.932,101.095 L 203.932,105.297 L 206.61,105.297 L 206.61,107.234 L 203.932,107.234 L 203.932,113.105 C 203.932,114.114 204.261,114.403 205.044,114.403 C 205.6,114.403 206.218,114.197 206.609,113.97 L 206.363,115.844 z"
+   style="fill:#cc0000" />
+
+	</g>
+
+	<g
+   id="g2638">
+		<path
+   id="path2640"
+   d="M 106.389,51.025 C 109.959,49.238 112.389,45.924 112.389,41.844 C 112.389,32.335 103.775,30.289 95.924,30.423 L 74.738,30.423 L 74.617,30.423 L 62.871,30.423 L 62.871,60.785 C 62.871,65.194 61.334,66.721 58.597,66.721 C 55.656,66.721 54.002,65.067 54.002,62.063 L 54.002,57.858 L 42.832,57.858 L 42.832,59.827 C 42.832,69.981 46.724,76.926 58.784,76.926 C 68.621,76.926 73.822,72.57 74.617,63.968 L 74.617,75.972 L 96.496,75.972 C 106.257,75.972 114.233,72.657 114.233,61.811 C 114.233,56.646 111.242,52.435 106.389,51.025 z M 86.487,39.605 L 95.668,39.605 C 98.161,39.605 100.52,40.697 100.52,44.01 C 100.52,47.263 97.714,48.348 95.668,48.348 L 86.487,48.348 L 86.487,39.605 z M 95.989,66.469 L 86.487,66.469 L 86.487,56 L 95.989,56 C 99.565,56 102.373,57.345 102.373,61.355 C 102.373,65.125 99.756,66.469 95.989,66.469 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2642"
+   d="M 90.067,108.399 C 90.067,100.704 83.822,94.452 76.123,94.452 C 68.409,94.452 62.168,100.704 62.168,108.399 C 62.168,116.108 68.409,122.347 76.123,122.347 C 83.822,122.347 90.067,116.108 90.067,108.399 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2644"
+   d="M 53.012,103.999 C 53.012,97.181 47.479,91.65 40.655,91.65 C 33.832,91.65 28.303,97.18 28.303,103.999 C 28.303,110.823 33.831,116.356 40.655,116.356 C 47.479,116.356 53.012,110.823 53.012,103.999 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2646"
+   d="M 25.097,81.68 C 25.097,75.523 20.113,70.529 13.947,70.529 C 7.779,70.529 2.787,75.523 2.787,81.68 C 2.787,87.854 7.779,92.848 13.947,92.848 C 20.112,92.848 25.097,87.854 25.097,81.68 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2648"
+   d="M 19.918,50.615 C 19.918,45.109 15.463,40.659 9.963,40.659 C 4.464,40.659 0,45.108 0,50.615 C 0,56.115 4.464,60.579 9.963,60.579 C 15.463,60.579 19.918,56.114 19.918,50.615 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2650"
+   d="M 33.88,22.719 C 33.88,18.1 30.124,14.353 25.508,14.353 C 20.889,14.353 17.139,18.1 17.139,22.719 C 17.139,27.342 20.889,31.086 25.508,31.086 C 30.124,31.086 33.88,27.342 33.88,22.719 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2652"
+   d="M 57.78,10.364 C 57.78,6.184 54.395,2.793 50.214,2.793 C 46.034,2.793 42.643,6.184 42.643,10.364 C 42.643,14.551 46.035,17.942 50.214,17.942 C 54.396,17.942 57.78,14.551 57.78,10.364 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2654"
+   d="M 82.891,6.377 C 82.891,2.855 80.042,0 76.517,0 C 73.001,0 70.14,2.855 70.14,6.377 C 70.14,9.903 73.001,12.757 76.517,12.757 C 80.042,12.757 82.891,9.903 82.891,6.377 z"
+   style="fill:#cc0000" />
+
+	</g>
+
+	<g
+   id="g2656">
+		<g
+   id="g2658">
+			<path
+   id="path2660"
+   d="M 161.415,62.895 C 156.077,61.543 149.709,61.118 147.172,56.742 C 147.293,57.624 147.376,58.522 147.376,59.448 C 147.376,61.433 147.077,63.315 146.536,65.067 L 155.794,65.067 C 155.794,66.721 156.504,67.933 157.582,68.762 C 158.604,69.532 160.076,69.904 161.604,69.904 C 163.701,69.904 166.706,69.02 166.706,66.4 C 166.706,63.855 163.321,63.336 161.415,62.895 z"
+   style="fill:none" />
+
+			<path
+   id="path2662"
+   d="M 129.896,50.193 C 124.851,50.193 123.318,55.244 123.318,59.448 C 123.318,63.665 124.851,68.635 129.896,68.635 C 134.935,68.635 136.529,63.665 136.529,59.448 C 136.528,55.244 134.935,50.193 129.896,50.193 z"
+   style="fill:none" />
+
+			<path
+   id="path2664"
+   d="M 192.015,62.895 C 185.337,61.204 176.724,60.97 176.338,52.616 L 166.718,52.616 C 166.718,51.22 166.206,50.326 165.322,49.75 C 164.419,49.181 163.215,48.923 161.875,48.923 C 160.094,48.923 156.883,49.111 156.883,51.41 C 156.883,54.542 164.156,55.115 169.13,56.197 C 175.779,57.532 177.529,62.315 177.553,65.066 L 186.395,65.066 C 186.395,66.72 187.105,67.932 188.183,68.761 C 189.206,69.531 190.677,69.903 192.204,69.903 C 194.301,69.903 197.307,69.019 197.307,66.399 C 197.306,63.855 193.922,63.336 192.015,62.895 z"
+   style="fill:none" />
+
+			<path
+   id="path2666"
+   d="M 199.729,56.198 C 194.754,55.116 187.148,54.544 187.148,51.411 C 187.148,49.111 190.027,48.924 191.808,48.924 C 193.147,48.924 194.352,49.182 195.255,49.751 C 196.139,50.327 196.651,51.221 196.651,52.617 L 206.67,52.617 C 206.285,44.011 198.69,41.903 191.431,41.903 C 185.383,41.903 177.526,43.785 176.439,50.443 C 174.954,43.662 168.095,41.903 161.496,41.903 C 154.986,41.903 146.035,44.075 146.035,52.049 C 146.035,52.19 146.056,52.31 146.059,52.447 C 143.534,46.151 137.569,41.903 129.896,41.903 C 121.597,41.903 115.392,46.75 113.294,53.899 C 114.898,56.057 115.742,58.872 115.742,61.811 C 115.742,64.224 115.358,66.36 114.631,68.23 C 117.484,73.503 122.974,76.926 129.896,76.926 C 137.25,76.926 143.019,73.054 145.711,67.207 C 147.125,74.716 154.473,76.926 161.668,76.926 C 167.855,76.926 174.688,74.899 176.847,69.154 C 179.082,75.103 185.737,76.926 192.268,76.926 C 199.73,76.926 208.154,73.995 208.154,65.125 C 208.153,62.383 206.423,57.542 199.729,56.198 z M 129.896,68.63!
 5 C 124.851,68.635 123.318,63.665 123.318,59.448 C 123.318,55.243 124.851,50.193 129.896,50.193 C 134.935,50.193 136.529,55.244 136.529,59.448 C 136.528,63.666 134.935,68.635 129.896,68.635 z M 161.604,69.904 C 160.076,69.904 158.604,69.532 157.582,68.762 C 156.504,67.933 155.794,66.721 155.794,65.067 L 146.536,65.067 C 147.077,63.315 147.376,61.433 147.376,59.448 C 147.376,58.522 147.293,57.624 147.172,56.742 C 149.709,61.117 156.077,61.543 161.415,62.895 C 163.321,63.336 166.706,63.855 166.706,66.4 C 166.706,69.02 163.701,69.904 161.604,69.904 z M 192.203,69.904 C 190.676,69.904 189.205,69.532 188.182,68.762 C 187.104,67.933 186.394,66.721 186.394,65.067 L 177.552,65.067 C 177.529,62.316 175.779,57.533 169.129,56.198 C 164.155,55.116 156.882,54.544 156.882,51.411 C 156.882,49.111 160.093,48.924 161.874,48.924 C 163.214,48.924 164.418,49.182 165.321,49.751 C 166.206,50.327 166.717,51.221 166.717,52.617 L 176.337,52.617 C 176.723,60.971 185.336,61.204 192.014,62.896 C 193.9!
 21,63.337 197.305,63.856 197.305,66.401 C 197.306,69.02 194.3,!
 69.904 1
92.203,69.904 z"
+   style="fill:#60605b" />
+
+		</g>
+
+		<path
+   id="path2668"
+   d="M 209.127,36.16 L 210.092,36.16 L 211.544,38.546 L 212.485,38.546 L 210.914,36.116 C 211.721,36.014 212.334,35.586 212.334,34.607 C 212.334,33.508 211.696,33.034 210.396,33.034 L 208.294,33.034 L 208.294,38.546 L 209.127,38.546 L 209.127,36.16 z M 209.127,35.446 L 209.127,33.735 L 210.27,33.735 C 210.837,33.735 211.47,33.867 211.47,34.55 C 211.47,35.397 210.837,35.446 210.131,35.446 L 209.127,35.446 z"
+   style="fill:#60605b" />
+
+		<path
+   id="path2670"
+   d="M 215.518,35.8 C 215.518,38.78 213.098,41.192 210.119,41.192 C 207.133,41.192 204.713,38.78 204.713,35.8 C 204.713,32.813 207.133,30.395 210.119,30.395 C 213.098,30.396 215.518,32.813 215.518,35.8 z M 210.118,31.356 C 207.654,31.356 205.666,33.338 205.666,35.8 C 205.666,38.251 207.654,40.232 210.118,40.232 C 212.568,40.232 214.556,38.251 214.556,35.8 C 214.557,33.338 212.568,31.356 210.118,31.356 z"
+   style="fill:#60605b" />
+
+	</g>
+
+	<g
+   id="g2672">
+		<path
+   id="path2674"
+   d="M 108.227,116.338 C 107.135,116.338 106.105,115.762 105.508,115.103 L 105.508,116.112 L 103.406,116.112 L 103.406,102.187 L 105.508,101.095 L 105.508,106.327 C 106.29,105.605 107.196,105.07 108.33,105.07 C 110.657,105.07 112.49,106.759 112.49,110.879 C 112.49,114.588 110.472,116.338 108.227,116.338 z M 107.938,107.028 C 106.928,107.028 106.042,107.708 105.487,108.409 L 105.487,112.961 C 105.961,113.6 106.949,114.382 108.02,114.382 C 109.544,114.382 110.369,113.23 110.369,110.943 C 110.369,108.223 109.504,107.028 107.938,107.028 z"
+   style="fill:#60605b" />
+
+		<path
+   id="path2676"
+   d="M 118.915,119.923 L 116.67,119.923 L 118.235,115.906 L 114.259,105.297 L 116.587,105.297 L 118.358,110.592 C 118.687,111.539 119.182,113.146 119.305,113.742 C 119.491,113.104 119.944,111.559 120.273,110.633 L 122.107,105.297 L 124.352,105.297 L 118.915,119.923 z"
+   style="fill:#60605b" />
+
+	</g>
+
+</g>
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/rhlogo.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/rhlogo.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/shade.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/shade.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/shine.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/shine.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/stock-go-back.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/stock-go-back.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/stock-go-forward.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/stock-go-forward.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/stock-go-up.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/stock-go-up.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/stock-home.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/stock-home.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/title_logo.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/title_logo.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/title_logo.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/title_logo.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/title_logo.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,228 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="265"
+   height="151"
+   id="svg2898"
+   sodipodi:version="0.32"
+   inkscape:version="0.46+devel"
+   sodipodi:docname="title_logo.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="/home/rlerch/Source/SVN/publican/trunk/publican-jboss/en-US/images/title_logo.png"
+   inkscape:export-xdpi="20.840239"
+   inkscape:export-ydpi="20.840239">
+  <metadata
+     id="metadata16">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="" />
+        <dc:title />
+        <dc:date />
+        <dc:creator>
+          <cc:Agent>
+            <dc:title />
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title />
+          </cc:Agent>
+        </dc:rights>
+        <dc:publisher>
+          <cc:Agent>
+            <dc:title />
+          </cc:Agent>
+        </dc:publisher>
+        <dc:identifier />
+        <dc:source />
+        <dc:relation />
+        <dc:language />
+        <dc:subject>
+          <rdf:Bag />
+        </dc:subject>
+        <dc:coverage />
+        <dc:description />
+        <dc:contributor>
+          <cc:Agent>
+            <dc:title />
+          </cc:Agent>
+        </dc:contributor>
+        <cc:license
+           rdf:resource="" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="692"
+     inkscape:window-width="640"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     showgrid="false"
+     inkscape:zoom="1"
+     inkscape:cx="170.83251"
+     inkscape:cy="121.7868"
+     inkscape:window-x="1936"
+     inkscape:window-y="174"
+     inkscape:current-layer="svg2898"
+     units="px" />
+  <defs
+     id="defs21">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="-50 : 600 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="700 : 600 : 1"
+       inkscape:persp3d-origin="300 : 400 : 1"
+       id="perspective18" />
+    <inkscape:perspective
+       id="perspective2683"
+       inkscape:persp3d-origin="107.759 : 40.782333 : 1"
+       inkscape:vp_z="215.51801 : 61.1735 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 61.1735 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective2733"
+       inkscape:persp3d-origin="150 : 46.666667 : 1"
+       inkscape:vp_z="300 : 70 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 70 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective2787"
+       inkscape:persp3d-origin="150 : 46.666667 : 1"
+       inkscape:vp_z="300 : 70 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 70 : 1"
+       sodipodi:type="inkscape:persp3d" />
+  </defs>
+  <g
+     id="g2622"
+     transform="scale(1.2286387,1.2286387)"
+     inkscape:export-filename="/home/rlerch/Source/SVN/publican/trunk/publican-jboss/en-US/images/rhlogo.png"
+     inkscape:export-xdpi="61.361534"
+     inkscape:export-ydpi="61.361534">
+    <g
+       id="g2624">
+      <path
+         id="path2626"
+         d="m 140.253,110.221 2.945,5.891 -2.492,0 -2.863,-5.705 -3.255,0 0,5.705 -2.121,0 0,-14.419 6.323,0 c 2.514,0 4.635,1.339 4.635,4.306 0,2.306 -1.215,3.728 -3.172,4.222 z m -1.463,-6.489 -4.202,0 0,4.635 4.202,0 c 1.442,0 2.451,-0.741 2.451,-2.307 0,-1.504 -0.988,-2.328 -2.451,-2.328 z"
+         style="fill:#cc0000" />
+      <path
+         id="path2628"
+         d="m 155.164,111.458 -7.148,0 c 0.227,2.08 1.401,2.966 2.72,2.966 0.906,0 1.627,-0.329 2.348,-0.865 l 1.257,1.359 c -0.947,0.906 -2.08,1.421 -3.729,1.421 -2.533,0 -4.676,-2.039 -4.676,-5.623 0,-3.667 1.937,-5.645 4.737,-5.645 3.069,0 4.553,2.492 4.553,5.418 0,0.39 -0.041,0.742 -0.062,0.969 z m -4.635,-4.471 c -1.422,0 -2.287,0.988 -2.473,2.719 l 5.026,0 c -0.102,-1.483 -0.802,-2.719 -2.553,-2.719 z"
+         style="fill:#cc0000" />
+      <path
+         id="path2630"
+         d="m 164.37,116.112 0,-1.029 c -0.783,0.721 -1.689,1.256 -2.822,1.256 -2.328,0 -4.161,-1.688 -4.161,-5.809 0,-3.708 2.019,-5.459 4.264,-5.459 1.092,0 2.122,0.577 2.72,1.236 l 0,-4.12 2.101,-1.092 0,15.017 -2.102,0 z m 0.021,-7.662 c -0.474,-0.639 -1.463,-1.422 -2.534,-1.422 -1.524,0 -2.348,1.154 -2.348,3.44 0,2.719 0.865,3.913 2.431,3.913 1.009,0 1.895,-0.68 2.451,-1.379 l 0,-4.552 z"
+         style="fill:#cc0000" />
+      <path
+         id="path2632"
+         d="m 184.266,116.112 0,-6.468 -6.634,0 0,6.468 -2.162,0 0,-14.419 2.162,0 0,5.829 6.634,0 0,-5.829 2.162,0 0,14.419 -2.162,0 z"
+         style="fill:#cc0000" />
+      <path
+         id="path2634"
+         d="m 196.065,116.112 0,-1.07 c -0.741,0.741 -1.792,1.297 -2.966,1.297 -1.751,0 -3.749,-0.988 -3.749,-3.646 0,-2.41 1.854,-3.502 4.305,-3.502 1.01,0 1.813,0.144 2.41,0.412 l 0,-0.804 c 0,-1.174 -0.721,-1.833 -2.039,-1.833 -1.112,0 -1.978,0.206 -2.822,0.68 l -0.824,-1.606 c 1.03,-0.639 2.184,-0.969 3.708,-0.969 2.41,0 4.059,1.174 4.059,3.626 l 0,7.415 -2.082,0 0,0 z m 0,-4.613 c -0.576,-0.289 -1.318,-0.475 -2.472,-0.475 -1.359,0 -2.225,0.618 -2.225,1.607 0,1.07 0.68,1.792 2.08,1.792 1.134,0 2.122,-0.7 2.616,-1.38 l 0,-1.544 0.001,0 z"
+         style="fill:#cc0000" />
+      <path
+         id="path2636"
+         d="m 206.363,115.844 c -0.516,0.289 -1.236,0.494 -2.081,0.494 -1.504,0 -2.431,-0.926 -2.431,-2.863 l 0,-6.241 -1.545,0 0,-1.937 1.545,0 0,-3.09 2.081,-1.112 0,4.202 2.678,0 0,1.937 -2.678,0 0,5.871 c 0,1.009 0.329,1.298 1.112,1.298 0.556,0 1.174,-0.206 1.565,-0.433 l -0.246,1.874 z"
+         style="fill:#cc0000" />
+    </g>
+    <g
+       id="g2638">
+      <path
+         id="path2640"
+         d="m 106.389,51.025 c 3.57,-1.787 6,-5.101 6,-9.181 0,-9.509 -8.614,-11.555 -16.465,-11.421 l -21.186,0 -0.121,0 -11.746,0 0,30.362 c 0,4.409 -1.537,5.936 -4.274,5.936 -2.941,0 -4.595,-1.654 -4.595,-4.658 l 0,-4.205 -11.17,0 0,1.969 c 0,10.154 3.892,17.099 15.952,17.099 9.837,0 15.038,-4.356 15.833,-12.958 l 0,12.004 21.879,0 c 9.761,0 17.737,-3.315 17.737,-14.161 0,-5.165 -2.991,-9.376 -7.844,-10.786 z m -19.902,-11.42 9.181,0 c 2.493,0 4.852,1.092 4.852,4.405 0,3.253 -2.806,4.338 -4.852,4.338 l -9.181,0 0,-8.743 z m 9.502,26.864 -9.502,0 0,-10.469 9.502,0 c 3.576,0 6.384,1.345 6.384,5.355 0,3.77 -2.617,5.114 -6.384,5.114 z"
+         style="fill:#cc0000" />
+      <path
+         id="path2642"
+         d="m 90.067,108.399 c 0,-7.695 -6.245,-13.947 -13.944,-13.947 -7.714,0 -13.955,6.252 -13.955,13.947 0,7.709 6.241,13.948 13.955,13.948 7.699,0 13.944,-6.239 13.944,-13.948 z"
+         style="fill:#cc0000" />
+      <path
+         id="path2644"
+         d="m 53.012,103.999 c 0,-6.818 -5.533,-12.349 -12.357,-12.349 -6.823,0 -12.352,5.53 -12.352,12.349 0,6.824 5.528,12.357 12.352,12.357 6.824,0 12.357,-5.533 12.357,-12.357 z"
+         style="fill:#cc0000" />
+      <path
+         id="path2646"
+         d="m 25.097,81.68 c 0,-6.157 -4.984,-11.151 -11.15,-11.151 -6.168,0 -11.16,4.994 -11.16,11.151 0,6.174 4.992,11.168 11.16,11.168 6.165,0 11.15,-4.994 11.15,-11.168 z"
+         style="fill:#cc0000" />
+      <path
+         id="path2648"
+         d="m 19.918,50.615 c 0,-5.506 -4.455,-9.956 -9.955,-9.956 -5.499,0 -9.963,4.449 -9.963,9.956 0,5.5 4.464,9.964 9.963,9.964 5.5,0 9.955,-4.465 9.955,-9.964 z"
+         style="fill:#cc0000" />
+      <path
+         id="path2650"
+         d="m 33.88,22.719 c 0,-4.619 -3.756,-8.366 -8.372,-8.366 -4.619,0 -8.369,3.747 -8.369,8.366 0,4.623 3.75,8.367 8.369,8.367 4.616,0 8.372,-3.744 8.372,-8.367 z"
+         style="fill:#cc0000" />
+      <path
+         id="path2652"
+         d="m 57.78,10.364 c 0,-4.18 -3.385,-7.571 -7.566,-7.571 -4.18,0 -7.571,3.391 -7.571,7.571 0,4.187 3.392,7.578 7.571,7.578 4.182,0 7.566,-3.391 7.566,-7.578 z"
+         style="fill:#cc0000" />
+      <path
+         id="path2654"
+         d="M 82.891,6.377 C 82.891,2.855 80.042,0 76.517,0 73.001,0 70.14,2.855 70.14,6.377 c 0,3.526 2.861,6.38 6.377,6.38 3.525,0 6.374,-2.854 6.374,-6.38 z"
+         style="fill:#cc0000" />
+    </g>
+    <g
+       id="g2656">
+      <g
+         id="g2658">
+        <path
+           id="path2660"
+           d="m 161.415,62.895 c -5.338,-1.352 -11.706,-1.777 -14.243,-6.153 0.121,0.882 0.204,1.78 0.204,2.706 0,1.985 -0.299,3.867 -0.84,5.619 l 9.258,0 c 0,1.654 0.71,2.866 1.788,3.695 1.022,0.77 2.494,1.142 4.022,1.142 2.097,0 5.102,-0.884 5.102,-3.504 0,-2.545 -3.385,-3.064 -5.291,-3.505 z"
+           style="fill:none" />
+        <path
+           id="path2662"
+           d="m 129.896,50.193 c -5.045,0 -6.578,5.051 -6.578,9.255 0,4.217 1.533,9.187 6.578,9.187 5.039,0 6.633,-4.97 6.633,-9.187 -0.001,-4.204 -1.594,-9.255 -6.633,-9.255 z"
+           style="fill:none" />
+        <path
+           id="path2664"
+           d="M 192.015,62.895 C 185.337,61.204 176.724,60.97 176.338,52.616 l -9.62,0 c 0,-1.396 -0.512,-2.29 -1.396,-2.866 -0.903,-0.569 -2.107,-0.827 -3.447,-0.827 -1.781,0 -4.992,0.188 -4.992,2.487 0,3.132 7.273,3.705 12.247,4.787 6.649,1.335 8.399,6.118 8.423,8.869 l 8.842,0 c 0,1.654 0.71,2.866 1.788,3.695 1.023,0.77 2.494,1.142 4.021,1.142 2.097,0 5.103,-0.884 5.103,-3.504 -10e-4,-2.544 -3.385,-3.063 -5.292,-3.504 z"
+           style="fill:none" />
+        <path
+           id="path2666"
+           d="m 199.729,56.198 c -4.975,-1.082 -12.581,-1.654 -12.581,-4.787 0,-2.3 2.879,-2.487 4.66,-2.487 1.339,0 2.544,0.258 3.447,0.827 0.884,0.576 1.396,1.47 1.396,2.866 l 10.019,0 c -0.385,-8.606 -7.98,-10.714 -15.239,-10.714 -6.048,0 -13.905,1.882 -14.992,8.54 -1.485,-6.781 -8.344,-8.54 -14.943,-8.54 -6.51,0 -15.461,2.172 -15.461,10.146 0,0.141 0.021,0.261 0.024,0.398 -2.525,-6.296 -8.49,-10.544 -16.163,-10.544 -8.299,0 -14.504,4.847 -16.602,11.996 1.604,2.158 2.448,4.973 2.448,7.912 0,2.413 -0.384,4.549 -1.111,6.419 2.853,5.273 8.343,8.696 15.265,8.696 7.354,0 13.123,-3.872 15.815,-9.719 1.414,7.509 8.762,9.719 15.957,9.719 6.187,0 13.02,-2.027 15.179,-7.772 2.235,5.949 8.89,7.772 15.421,7.772 7.462,0 15.886,-2.931 15.886,-11.801 -0.001,-2.742 -1.731,-7.583 -8.425,-8.927 z m -69.833,12.437 c -5.045,0 -6.578,-4.97 -6.578,-9.187 0,-4.205 1.533,-9.255 6.578,-9.255 5.039,0 6.633,5.051 6.633,9.255 -0.001,4.218 -1.594,9.187 -6.633,9.187 z m 31.708,1.269 c -1.528,0 -3,-0.!
 372 -4.022,-1.142 -1.078,-0.829 -1.788,-2.041 -1.788,-3.695 l -9.258,0 c 0.541,-1.752 0.84,-3.634 0.84,-5.619 0,-0.926 -0.083,-1.824 -0.204,-2.706 2.537,4.375 8.905,4.801 14.243,6.153 1.906,0.441 5.291,0.96 5.291,3.505 0,2.62 -3.005,3.504 -5.102,3.504 z m 30.599,0 c -1.527,0 -2.998,-0.372 -4.021,-1.142 -1.078,-0.829 -1.788,-2.041 -1.788,-3.695 l -8.842,0 c -0.023,-2.751 -1.773,-7.534 -8.423,-8.869 -4.974,-1.082 -12.247,-1.654 -12.247,-4.787 0,-2.3 3.211,-2.487 4.992,-2.487 1.34,0 2.544,0.258 3.447,0.827 0.885,0.576 1.396,1.47 1.396,2.866 l 9.62,0 c 0.386,8.354 8.999,8.587 15.677,10.279 1.907,0.441 5.291,0.96 5.291,3.505 0.001,2.619 -3.005,3.503 -5.102,3.503 z"
+           style="fill:#60605b" />
+      </g>
+      <path
+         id="path2668"
+         d="m 209.127,36.16 0.965,0 1.452,2.386 0.941,0 -1.571,-2.43 c 0.807,-0.102 1.42,-0.53 1.42,-1.509 0,-1.099 -0.638,-1.573 -1.938,-1.573 l -2.102,0 0,5.512 0.833,0 0,-2.386 z m 0,-0.714 0,-1.711 1.143,0 c 0.567,0 1.2,0.132 1.2,0.815 0,0.847 -0.633,0.896 -1.339,0.896 l -1.004,0 z"
+         style="fill:#60605b" />
+      <path
+         id="path2670"
+         d="m 215.518,35.8 c 0,2.98 -2.42,5.392 -5.399,5.392 -2.986,0 -5.406,-2.412 -5.406,-5.392 0,-2.987 2.42,-5.405 5.406,-5.405 2.979,0.001 5.399,2.418 5.399,5.405 z m -5.4,-4.444 c -2.464,0 -4.452,1.982 -4.452,4.444 0,2.451 1.988,4.432 4.452,4.432 2.45,0 4.438,-1.981 4.438,-4.432 10e-4,-2.462 -1.988,-4.444 -4.438,-4.444 z"
+         style="fill:#60605b" />
+    </g>
+    <g
+       id="g2672">
+      <path
+         id="path2674"
+         d="m 108.227,116.338 c -1.092,0 -2.122,-0.576 -2.719,-1.235 l 0,1.009 -2.102,0 0,-13.925 2.102,-1.092 0,5.232 c 0.782,-0.722 1.688,-1.257 2.822,-1.257 2.327,0 4.16,1.689 4.16,5.809 0,3.709 -2.018,5.459 -4.263,5.459 z m -0.289,-9.31 c -1.01,0 -1.896,0.68 -2.451,1.381 l 0,4.552 c 0.474,0.639 1.462,1.421 2.533,1.421 1.524,0 2.349,-1.152 2.349,-3.439 0,-2.72 -0.865,-3.915 -2.431,-3.915 z"
+         style="fill:#60605b" />
+      <path
+         id="path2676"
+         d="m 118.915,119.923 -2.245,0 1.565,-4.017 -3.976,-10.609 2.328,0 1.771,5.295 c 0.329,0.947 0.824,2.554 0.947,3.15 0.186,-0.638 0.639,-2.183 0.968,-3.109 l 1.834,-5.336 2.245,0 -5.437,14.626 z"
+         style="fill:#60605b" />
+    </g>
+  </g>
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/warning.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/warning.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/warning.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/warning.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/warning.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="48"
+   height="48"
+   id="svg2">
+  <defs
+     id="defs5" />
+  <path
+     d="M 26.553837,7.3026447 C 25.283816,5.0882437 23.199663,5.0882437 21.945919,7.3026447 L 3.9376032,38.711367 C 2.6675727,40.925778 3.7259346,42.749404 6.2822626,42.749404 L 42.217493,42.749404 C 44.77383,42.749404 45.832183,40.925778 44.545876,38.711367 L 26.553837,7.3026447 z "
+     style="fill:#2e3436;fill-opacity:1;stroke:#2e3436;stroke-width:4.7150631;stroke-miterlimit:4;stroke-dasharray:none"
+     id="use2812" />
+  <path
+     d="M 26.553837,7.3026447 C 25.283816,5.0882437 23.199663,5.0882437 21.945919,7.3026447 L 3.9376032,38.711367 C 2.6675727,40.925778 3.7259346,42.749404 6.2822626,42.749404 L 42.217493,42.749404 C 44.77383,42.749404 45.832183,40.925778 44.545876,38.711367 L 26.553837,7.3026447 z "
+     style="fill:#fde8a6;fill-opacity:1;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none"
+     id="path4309" />
+  <path
+     d="M 26.220057,12.491166 C 25.133792,10.597163 23.351196,10.597163 22.278859,12.491166 L 6.8761436,39.355379 C 5.789878,41.249382 6.6951041,42.809153 8.8815542,42.809153 L 39.617353,42.809153 C 41.803812,42.809153 42.709038,41.249382 41.608844,39.355379 L 26.220057,12.491166 z "
+     style="fill:#fac521;fill-opacity:1"
+     id="path2991" />
+  <path
+     d="M 28.470282,37.445157 C 28.470282,38.878008 27.2491,39.952646 25.392902,39.952646 L 25.36034,39.952646 C 23.520438,39.952646 22.282969,38.878008 22.282969,37.445157 C 22.282969,35.947181 23.553,34.921391 25.392902,34.921391 C 27.216538,34.921391 28.437711,35.947181 28.470282,37.445157 z M 28.144632,33.146613 L 29.21927,19.990446 L 21.517696,19.990446 L 22.592334,33.146613 L 28.144632,33.146613 z "
+     style="fill:#fef2cb;fill-opacity:1;stroke:#fef2cb;stroke-width:0.9430126;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
+     id="path4468" />
+  <path
+     d="M 27.089325,36.371084 C 27.089325,37.803935 25.868143,38.878574 24.011955,38.878574 L 23.979392,38.878574 C 22.139481,38.878574 20.902022,37.803935 20.902022,36.371084 C 20.902022,34.873109 22.172043,33.847319 24.011955,33.847319 C 25.835581,33.847319 27.056763,34.873109 27.089325,36.371084 z M 26.763675,32.072531 L 27.838313,18.916364 L 20.136748,18.916364 L 21.211386,32.072531 L 26.763675,32.072531 z "
+     style="fill:#2e3436"
+     id="path4470" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/watermark-draft.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Common_Content/images/watermark-draft.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Feedback.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Feedback.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Feedback.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 1. Feedback</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="index.html" title="Seam Reference Guide CP07" /><link rel="prev" href="index.html" title="Seam Reference Guide CP07" /><link rel="next" href="Seam_Reference_Guide-Introduction_to_JBoss_Seam.html" title="Introduction to JBoss Seam" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Document!
 ation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="index.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Introduction_to_JBoss_Seam.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="chapter" title="Chapter 1. Feedback" lang="en-US"><div class="titlepage"><div><div><h2 class="title" id="Feedback">Chapter 1. Feedback</h2></div></div></div><div class="para">
+		If you spot a typo in this guide, or if you have thought of a way to make this manual better, we would love to hear from you! Submit a report in <a href="http://jira.jboss.com/jira/browse/JBPAPP">JIRA</a> against the Product: JBoss Enterprise Application Platform, Version: <em class="replaceable"><code>&lt;version&gt;</code></em>, Component: <span class="emphasis"><em>Doc</em></span>. If you have a suggestion for improving the documentation, try to be as specific as possible. If you have found an error, include the section number and some of the surrounding text so we can find it easily.
+	</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="index.html"><strong>Prev</strong>Seam Reference Guide CP07</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Introduction_to_JBoss_Seam.html"><strong>Next</strong>Introduction to JBoss Seam</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-A_RESTful_Seam_application_the_Blog_example-Bookmarkable_search_results_page.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-A_RESTful_Seam_application_the_Blog_example-Bookmarkable_search_results_page.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-A_RESTful_Seam_application_the_Blog_example-Bookmarkable_search_results_page.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>2.10.2. Bookmarkable search results page</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Seam_Tutorial-A_RESTful_Seam_application_the_Blog_example.html" title="2.10. A RESTful Seam application: the Blog example" /><link rel="prev" href="Seam_Reference_Guide-Seam_Tutorial-A_RESTful_Seam_application_the_Blog_example.html" title="2.10. A RESTful Seam application: the Blog example" /><link rel="next" href="Seam_Reference_Guide-A_RESTful_Seam_application_the_Blog_example-Using_push_style_MVC_in_a_RESTful_application.html" title="2.10.3. Using !
 &quot;push&quot;-style MVC in a RESTful application" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_Tutorial-A_RESTful_Seam_application_the_Blog_example.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-A_RESTful_Seam_application_the_Blog_example-Using_push_style_MVC_in_a_RESTful_application.html"><strong>Next</strong></a></li></ul><div class="section" title="2.10.2. Bookmarkable search results page"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-A_RESTful_Seam_application_the_Blog_example-Bookmarkable_search_results_page">2.10.2. Bookmarkable search results page</h3></di!
 v></div></div><div class="para">
+				The blog example has a tiny form in the top right of each page that allows the user to search for blog entries. This is defined in a file, <code class="literal">menu.xhtml</code>, included by the facelets template, <code class="literal">template.xhtml</code>:
+			</div><div class="example" id="id2764435"><div class="example-contents"><pre class="programlisting">&lt;div id="search"&gt;
+   &lt;h:form&gt;
+      &lt;h:inputText value="#{searchAction.searchPattern}"/&gt;
+      &lt;h:commandButton value="Search" action="/search.xhtml"/&gt;
+   &lt;/h:form&gt;
+&lt;/div&gt;
+</pre></div><h6>Example 2.18. </h6></div><br class="example-break" /><div class="para">
+				To implement a bookmarkable search results page, we need to perform a browser redirect after processing the search form submission. Because we used the JSF view id as the action outcome, Seam automatically redirects to the view id when the form is submitted. Alternatively, we could have defined a navigation rule like this:
+			</div><div class="example" id="id2764458"><div class="example-contents"><pre class="programlisting">&lt;navigation-rule&gt;
+   &lt;navigation-case&gt;
+      &lt;from-outcome&gt;searchResults&lt;/from-outcome&gt;
+      &lt;to-view-id&gt;/search.xhtml&lt;/to-view-id&gt;
+      &lt;redirect/&gt;
+   &lt;/navigation-case&gt;
+&lt;/navigation-rule&gt;
+</pre></div><h6>Example 2.19. </h6></div><br class="example-break" /><div class="para">
+				Then the form would have looked like this:
+			</div><div class="example" id="id2764476"><div class="example-contents"><pre class="programlisting">&lt;div id="search"&gt;
+   &lt;h:form&gt;
+      &lt;h:inputText value="#{searchAction.searchPattern}"/&gt;
+      &lt;h:commandButton value="Search" action="searchResults"/&gt;
+   &lt;/h:form&gt;
+&lt;/div&gt;
+</pre></div><h6>Example 2.20. </h6></div><br class="example-break" /><div class="para">
+				But when we redirect, we need to include the values submitted with the form as request parameters, to get a bookmarkable URL like <code class="literal">http://localhost:8080/seam-blog/search.seam?searchPattern=seam</code>. JSF does not provide an easy way to do this, but Seam does. We use a Seam <span class="emphasis"><em>page parameter</em></span>, defined in <code class="literal">WEB-INF/pages.xml</code>:
+			</div><div class="example" id="id2764510"><div class="example-contents"><pre class="programlisting">&lt;pages&gt;
+   &lt;page view-id="/search.xhtml"&gt;
+      &lt;param name="searchPattern" value="#{searchService.searchPattern}"/&gt;
+   &lt;/page&gt;
+   ...
+&lt;/pages&gt;
+</pre></div><h6>Example 2.21. </h6></div><br class="example-break" /><div class="para">
+				This tells Seam to include the value of <code class="literal">#{searchService.searchPattern}</code> as a request parameter named <code class="literal">searchPattern</code> when redirecting to the page, and then re-apply the value of that parameter to the model before rendering the page.
+			</div><div class="para">
+				The redirect takes us to the <code class="literal">search.xhtml</code> page:
+			</div><div class="example" id="id2764548"><div class="example-contents"><pre class="programlisting">&lt;h:dataTable value="#{searchResults}" var="blogEntry"&gt;
+   &lt;h:column&gt;
+      &lt;div&gt;
+         &lt;h:outputLink value="entry.seam"&gt;
+            &lt;f:param name="blogEntryId" value="#{blogEntry.id}"/&gt;
+            #{blogEntry.title}
+         &lt;/h:outputLink&gt;
+         posted on 
+         &lt;h:outputText value="#{blogEntry.date}"&gt;
+            &lt;f:convertDateTime timeZone="#{blog.timeZone}" locale="#{blog.locale}" type="both"/&gt;
+         &lt;/h:outputText&gt;
+      &lt;/div&gt;
+   &lt;/h:column&gt;
+&lt;/h:dataTable&gt;
+</pre></div><h6>Example 2.22. </h6></div><br class="example-break" /><div class="para">
+				Which again uses "pull"-style MVC to retrieve the actual search results:
+			</div><div class="example" id="id2764571"><div class="example-contents"><pre class="programlisting">@Name("searchService")
+public class SearchService 
+{
+   
+   @In
+   private EntityManager entityManager;
+   
+   private String searchPattern;
+   
+   @Factory("searchResults")
+   public List&lt;BlogEntry&gt; getSearchResults()
+   {
+      if (searchPattern==null)
+      {
+         return null;
+      }
+      else
+      {
+         return entityManager.createQuery("select be from BlogEntry be where lower(be.title) 
+                               like :searchPattern or lower(be.body) like :searchPattern 
+                               order by be.date desc")
+               .setParameter( "searchPattern", getSqlSearchPattern() )
+               .setMaxResults(100)
+               .getResultList();
+      }
+   }
+
+   private String getSqlSearchPattern()
+   {
+      return searchPattern==null ? "" : '%' + 
+        searchPattern.toLowerCase().replace('*', '%').replace('?', '_') 
+           + '%';
+   }
+
+   public String getSearchPattern()
+   {
+      return searchPattern;
+   }
+
+   public void setSearchPattern(String searchPattern)
+   {
+      this.searchPattern = searchPattern;
+   }
+
+}
+</pre></div><h6>Example 2.23. </h6></div><br class="example-break" /></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_Tutorial-A_RESTful_Seam_application_the_Blog_example.html"><strong>Prev</strong>2.10. A RESTful Seam application: the Blog example</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-A_RESTful_Seam_application_the_Blog_example-Using_push_style_MVC_in_a_RESTful_application.html"><strong>Next</strong>2.10.3. Using "push"-style MVC in a RESTful appli...</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-A_RESTful_Seam_application_the_Blog_example-Using_push_style_MVC_in_a_RESTful_application.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-A_RESTful_Seam_application_the_Blog_example-Using_push_style_MVC_in_a_RESTful_application.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-A_RESTful_Seam_application_the_Blog_example-Using_push_style_MVC_in_a_RESTful_application.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>2.10.3. Using "push"-style MVC in a RESTful application</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Seam_Tutorial-A_RESTful_Seam_application_the_Blog_example.html" title="2.10. A RESTful Seam application: the Blog example" /><link rel="prev" href="Seam_Reference_Guide-A_RESTful_Seam_application_the_Blog_example-Bookmarkable_search_results_page.html" title="2.10.2. Bookmarkable search results page" /><link rel="next" href="Seam_Reference_Guide-The_contextual_component_model.html" title="Chapter 3. The contextual component model" /></h!
 ead><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-A_RESTful_Seam_application_the_Blog_example-Bookmarkable_search_results_page.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-The_contextual_component_model.html"><strong>Next</strong></a></li></ul><div class="section" title="2.10.3. Using &quot;push&quot;-style MVC in a RESTful application"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-A_RESTful_Seam_application_the_Blog_example-Using_push_style_MVC_in_a_RESTful_application">2.10.3. Using "push"-style MVC in a RESTful application</h3></div></div></div><div class="para">
+				Very occasionally, it makes more sense to use push-style MVC for processing RESTful pages, and so Seam provides the notion of a <span class="emphasis"><em>page action</em></span>. The Blog example uses a page action for the blog entry page, <code class="literal">entry.xhtml</code>. Note that this is a little bit contrived, it would have been easier to use pull-style MVC here as well.
+			</div><div class="para">
+				The <code class="literal">entryAction</code> component works much like an action class in a traditional push-MVC action-oriented framework like Struts:
+			</div><div class="example" id="id2764644"><div class="example-contents"><pre class="programlisting">@Name("entryAction")
+ at Scope(STATELESS)
+public class EntryAction
+{
+   @In(create=true) 
+   private Blog blog;
+   
+   @Out
+   private BlogEntry blogEntry;
+   
+   public void loadBlogEntry(String id) throws EntryNotFoundException
+   {
+      blogEntry = blog.getBlogEntry(id);
+      if (blogEntry==null) throw new EntryNotFoundException(id);
+   }
+   
+}
+</pre></div><h6>Example 2.24. </h6></div><br class="example-break" /><div class="para">
+				Page actions are also declared in <code class="literal">pages.xml</code>:
+			</div><div class="example" id="id2764669"><div class="example-contents"><pre class="programlisting">&lt;pages&gt;
+   ...
+
+   &lt;page view-id="/entry.xhtml" action="#{entryAction.loadBlogEntry(blogEntry.id)}"&gt;
+      &lt;param name="blogEntryId" value="#{blogEntry.id}"/&gt;
+   &lt;/page&gt;
+
+   &lt;page view-id="/post.xhtml" action="#{loginAction.challenge}"/&gt;
+
+   &lt;page view-id="*" action="#{blog.hitCount.hit}"/&gt;
+
+&lt;/pages&gt;
+</pre></div><h6>Example 2.25. </h6></div><br class="example-break" /><div class="para">
+				Notice that the example is using page actions for some other functionality—the login challenge, and the pageview counter. Also notice the use of a parameter in the page action method binding. This is not a standard feature of JSF EL, but Seam lets you use it, not just for page actions, but also in JSF method bindings.
+			</div><div class="para">
+				When the <code class="literal">entry.xhtml</code> page is requested, Seam first binds the page parameter <code class="literal">blogEntryId</code> to the model, then runs the page action, which retrieves the needed data—the <code class="literal">blogEntry</code>—and places it in the Seam event context. Finally, the following is rendered:
+			</div><div class="example" id="id2764714"><div class="example-contents"><pre class="programlisting">&lt;div class="blogEntry"&gt;
+   &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;
+   &lt;div&gt;
+      &lt;h:outputText escape="false" value="#{blogEntry.body}"/&gt;
+   &lt;/div&gt;
+   &lt;p&gt;
+      [Posted on 
+      &lt;h:outputText value="#{blogEntry.date}"&gt;
+         &lt;f:convertDateTime timezone="#{blog.timeZone}" locale="#{blog.locale}" type="both"/&gt;
+      &lt;/h:outputText&gt;]
+   &lt;/p&gt;
+&lt;/div&gt;
+</pre></div><h6>Example 2.26. </h6></div><br class="example-break" /><div class="para">
+				If the blog entry is not found in the database, the <code class="literal">EntryNotFoundException</code> exception is thrown. We want this exception to result in a 404 error, not a 505, so we annotate the exception class:
+			</div><div class="example" id="id2764740"><div class="example-contents"><pre class="programlisting">@ApplicationException(rollback=true)
+ at HttpError(errorCode=HttpServletResponse.SC_NOT_FOUND)
+public class EntryNotFoundException extends Exception
+{
+   EntryNotFoundException(String id)
+   {
+      super("entry not found: " + id);
+   }
+}
+</pre></div><h6>Example 2.27. </h6></div><br class="example-break" /><div class="para">
+				An alternative implementation of the example does not use the parameter in the method binding:
+			</div><div class="example" id="id2764761"><div class="example-contents"><pre class="programlisting">@Name("entryAction")
+ at Scope(STATELESS)
+public class EntryAction
+{
+   @In(create=true) 
+   private Blog blog;
+   
+   @In @Out
+   private BlogEntry blogEntry;
+   
+   public void loadBlogEntry() throws EntryNotFoundException
+   {
+      blogEntry = blog.getBlogEntry( blogEntry.getId() );
+      if (blogEntry==null) throw new EntryNotFoundException(id);
+   }
+   
+}
+</pre><pre class="programlisting">&lt;pages&gt;
+   ...
+
+   &lt;page view-id="/entry.xhtml" action="#{entryAction.loadBlogEntry}"&gt;
+      &lt;param name="blogEntryId" value="#{blogEntry.id}"/&gt;
+   &lt;/page&gt;
+   
+   ...
+&lt;/pages&gt;
+</pre></div><h6>Example 2.28. </h6></div><br class="example-break" /><div class="para">
+				It is a matter of personal choice, which implementation you prefer.
+			</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-A_RESTful_Seam_application_the_Blog_example-Bookmarkable_search_results_page.html"><strong>Prev</strong>2.10.2. Bookmarkable search results page</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-The_contextual_component_model.html"><strong>Next</strong>Chapter 3. The contextual component model</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-Overview_of_the_booking_example.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-Overview_of_the_booking_example.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-Overview_of_the_booking_example.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>2.6.2. Overview of the booking example</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Seam_Tutorial-A_complete_Seam_application_the_Hotel_Booking_example.html" title="2.6. A complete Seam application: the Hotel Booking example" /><link rel="prev" href="Seam_Reference_Guide-Seam_Tutorial-A_complete_Seam_application_the_Hotel_Booking_example.html" title="2.6. A complete Seam application: the Hotel Booking example" /><link rel="next" href="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-Understanding_Seam_conversat!
 ions.html" title="2.6.3. Understanding Seam conversations" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_Tutorial-A_complete_Seam_application_the_Hotel_Booking_example.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-Understanding_Seam_conversations.html"><strong>Next</strong></a></li></ul><div class="section" title="2.6.2. Overview of the booking example"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-Overview_of_the_booking_example">2.6.2. Overview of the booki!
 ng example</h3></div></div></div><div class="para">
+				The project structure is identical to the previous one, to install and deploy this application, please refer to <a class="xref" href="Seam_Reference_Guide-Seam_Tutorial.html#Seam_Reference_Guide-Seam_Tutorial-Try_the_examples" title="2.1. Try the examples">Section 2.1, “Try the examples”</a>. Once you have successfully started the application, you can access it by pointing your browser to <a href="http://localhost:8080/seam-booking/"><code class="literal">http://localhost:8080/seam-booking/</code></a>
+			</div><div class="para">
+				Just nine classes (plus six session beans local interfaces) where used to implement this application. Six session bean action listeners contain all the business logic for the listed features.
+			</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+						<code class="literal">BookingListAction</code> retrieves existing bookings for the currently logged in user.
+					</div></li><li class="listitem"><div class="para">
+						<code class="literal">ChangePasswordAction</code> updates the password of the currently logged in user.
+					</div></li><li class="listitem"><div class="para">
+						<code class="literal">HotelBookingAction</code> implements the core functionality of the application: hotel room searching, selection, booking and booking confirmation. This functionality is implemented as a <span class="emphasis"><em>conversation</em></span>, so this is the most interesting class in the application.
+					</div></li><li class="listitem"><div class="para">
+						<code class="literal">RegisterAction</code> registers a new system user.
+					</div></li></ul></div><div class="para">
+				Three entity beans implement the application's persistent domain model.
+			</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+						<code class="literal">Hotel</code> is an entity bean that represents a hotel
+					</div></li><li class="listitem"><div class="para">
+						<code class="literal">Booking</code> is an entity bean that represents an existing booking
+					</div></li><li class="listitem"><div class="para">
+						<code class="literal">User</code> is an entity bean to represents a user who can make hotel bookings
+					</div></li></ul></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_Tutorial-A_complete_Seam_application_the_Hotel_Booking_example.html"><strong>Prev</strong>2.6. A complete Seam application: the Hotel Booki...</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-Understanding_Seam_conversations.html"><strong>Next</strong>2.6.3. Understanding Seam conversations</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-The_Seam_Debug_Page.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-The_Seam_Debug_Page.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-The_Seam_Debug_Page.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>2.6.5. The Seam Debug Page</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Seam_Tutorial-A_complete_Seam_application_the_Hotel_Booking_example.html" title="2.6. A complete Seam application: the Hotel Booking example" /><link rel="prev" href="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-The_Seam_UI_control_library.html" title="2.6.4. The Seam UI control library" /><link rel="next" href="Seam_Reference_Guide-Seam_Tutorial-A_complete_application_featuring_Seam_and_jBPM_the_DVD_Store_example.html" title="2.7. A c!
 omplete application featuring Seam and jBPM: the DVD Store example" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-The_Seam_UI_control_library.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_Tutorial-A_complete_application_featuring_Seam_and_jBPM_the_DVD_Store_example.html"><strong>Next</strong></a></li></ul><div class="section" title="2.6.5. The Seam Debug Page"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-The_Seam_Debug_Page">2.6.5. The Seam Debug Page</h3></d!
 iv></div></div><div class="para">
+				The WAR also includes <code class="literal">seam-debug.jar</code>. If this jar is deployed in <code class="literal">WEB-INF/lib</code>, along with the Facelets, and if you set the following Seam property in <code class="literal">web.xml</code> or <code class="literal">seam.properties</code>:
+			</div><pre class="programlisting">&lt;context-param&gt;
+    &lt;param-name&gt;org.jboss.seam.core.init.debug&lt;/param-name&gt;
+    &lt;param-value&gt;true&lt;/param-value&gt;
+&lt;/context-param&gt;
+</pre><div class="para">
+				Then the Seam debug page will be available. This page lets you browse and inspect the Seam components in any of the Seam contexts associated with your current login session. Just point your browser at <a href="http://localhost:8080/seam-booking/debug.seam"><code class="literal">http://localhost:8080/seam-booking/debug.seam</code></a>.
+			</div><div class="mediaobject" align="center"><img src="images/debug.png" align="middle" width="444" /></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-The_Seam_UI_control_library.html"><strong>Prev</strong>2.6.4. The Seam UI control library</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_Tutorial-A_complete_application_featuring_Seam_and_jBPM_the_DVD_Store_example.html"><strong>Next</strong>2.7. A complete application featuring Seam and jB...</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-The_Seam_UI_control_library.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-The_Seam_UI_control_library.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-The_Seam_UI_control_library.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>2.6.4. The Seam UI control library</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Seam_Tutorial-A_complete_Seam_application_the_Hotel_Booking_example.html" title="2.6. A complete Seam application: the Hotel Booking example" /><link rel="prev" href="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-Understanding_Seam_conversations.html" title="2.6.3. Understanding Seam conversations" /><link rel="next" href="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-The_Seam_Debug_Page.html" title="!
 2.6.5. The Seam Debug Page" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-Understanding_Seam_conversations.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-The_Seam_Debug_Page.html"><strong>Next</strong></a></li></ul><div class="section" title="2.6.4. The Seam UI control library"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-The_Seam_UI_control_library">2.6.4. The Seam UI control library</h3></div></div></div><div!
  class="para">
+				If you check inside the WAR file for the booking application, you will find <code class="literal">seam-ui.jar</code> in the <code class="literal">WEB-INF/lib</code> directory. This package contains a number of JSF custom controls that integrate with Seam. The booking application uses the <code class="literal">&lt;s:link&gt;</code> control for navigation from the search screen to the hotel page:
+			</div><pre class="programlisting">&lt;s:link value="View Hotel" action="#{hotelBooking.selectHotel}"/&gt;
+</pre><div class="para">
+				The use of <code class="literal">&lt;s:link&gt;</code> here allows us to attach an action listener to a HTML link without breaking the browser's "open in new window" feature. The standard JSF <code class="literal">&lt;h:commandLink&gt;</code> does not work with "open in new window". We'll see later that <code class="literal">&lt;s:link&gt;</code> also offers a number of other useful features, including conversation propagation rules.
+			</div><div class="para">
+				The booking application uses some other Seam and Ajax4JSF controls, especially on the <code class="literal">/book.xhtml</code> page. We will not get into the details of those controls here, but if you want to understand this code, please refer to the chapter covering Seam's functionality for JSF form validation.
+			</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-Understanding_Seam_conversations.html"><strong>Prev</strong>2.6.3. Understanding Seam conversations</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-The_Seam_Debug_Page.html"><strong>Next</strong>2.6.5. The Seam Debug Page</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-Understanding_Seam_conversations.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-Understanding_Seam_conversations.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-Understanding_Seam_conversations.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,276 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>2.6.3. Understanding Seam conversations</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Seam_Tutorial-A_complete_Seam_application_the_Hotel_Booking_example.html" title="2.6. A complete Seam application: the Hotel Booking example" /><link rel="prev" href="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-Overview_of_the_booking_example.html" title="2.6.2. Overview of the booking example" /><link rel="next" href="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-The_Seam_UI_control_library.ht!
 ml" title="2.6.4. The Seam UI control library" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-Overview_of_the_booking_example.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-The_Seam_UI_control_library.html"><strong>Next</strong></a></li></ul><div class="section" title="2.6.3. Understanding Seam conversations"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-Understanding_Seam_conversations">2.6.3. Understanding Seam!
  conversations</h3></div></div></div><div class="para">
+				We encourage you browse the sourcecode at your pleasure. In this tutorial we will concentrate upon one particular piece of functionality: hotel search, selection, booking and confirmation. From the point of view of the user, everything from selecting a hotel to confirming a booking is one continuous unit of work, a <span class="emphasis"><em>conversation</em></span>. Searching, however, is <span class="emphasis"><em>not</em></span> part of the conversation. The user can select multiple hotels from the same search results page, in different browser tabs.
+			</div><div class="para">
+				Most web application architectures have no first class construct to represent a conversation. This causes enormous problems managing state associated with the conversation. Usually, Java web applications use a combination of two techniques: first, some state is thrown into the <code class="literal">HttpSession</code>; second, persistable state is flushed to the database after every request, and reconstructed from the database at the beginning of each new request.
+			</div><div class="para">
+				Since the database is the least scalable tier, this often results in an utterly unacceptable lack of scalability. Added latency is also a problem, due to the extra traffic to and from the database on every request. To reduce this redundant traffic, Java applications often introduce a data (second-level) cache that keeps commonly accessed data between requests. This cache is necessarily inefficient, because invalidation is based upon an LRU policy instead of being based upon when the user has finished working with the data. Furthermore, because the cache is shared between many concurrent transactions, we have introduced a whole raft of problem's associated with keeping the cached state consistent with the database.
+			</div><div class="para">
+				Now consider the state held in the <code class="literal">HttpSession</code>. By very careful programming, we might be able to control the size of the session data. This is a lot more difficult than it sounds, since web browsers permit ad hoc non-linear navigation. But suppose we suddenly discover a system requirement that says that a user is allowed to have <span class="emphasis"><em>mutiple concurrent conversations</em></span>, halfway through the development of the system (this has happened to me). Developing mechanisms to isolate session state associated with different concurrent conversations, and incorporating failsafes to ensure that conversation state is destroyed when the user aborts one of the conversations by closing a browser window or tab can be tough. 
+			</div><div class="para">
+				Now there is a better way.
+			</div><div class="para">
+				Seam introduces the <span class="emphasis"><em>conversation context</em></span> as a first class construct. You can safely keep conversational state in this context, and be assured that it will have a well-defined lifecycle. Even better, you will not need to be continually pushing data back and forth between the application server and the database, since the conversation context is a natural cache of data that the user is currently working with.
+			</div><div class="para">
+				Usually, the components we keep in the conversation context are stateful session beans. (We can also keep entity beans and JavaBeans in the conversation context.) There is an ancient canard in the Java community that stateful session beans are a scalability killer. This may have been true in 1998 when WebFoobar 1.0 was released. It is no longer true today. Application servers like JBoss 4.0 have extremely sophisticated mechanisms for stateful session bean state replication. (For example, the JBoss EJB3 container performs fine-grained replication, replicating only those bean attribute values which actually changed.) Note that all the traditional technical arguments for why stateful beans are inefficient apply equally to the <code class="literal">HttpSession</code>, so the practice of shifting state from business tier stateful session bean components to the web session to try and improve performance is unbelievably misguided. It is certainly possible to write unscalable a!
 pplications using stateful session beans, by using stateful beans incorrectly, or by using them for the wrong thing. But that does not mean you should <span class="emphasis"><em>never</em></span> use them. Anyway, Seam guides you toward a safe usage model. 
+			</div><div class="para">
+				The booking example application shows how stateful components with different scopes can collaborate together to achieve complex behaviors. The main page of the booking application allows the user to search for hotels. The search results are kept in the Seam session scope. When the user navigates to one of these hotels, a conversation begins, and a conversation scoped component calls back to the session scoped component to retrieve the selected hotel.
+			</div><div class="para">
+				The booking example also demonstrates the use of Ajax4JSF to implement rich client behavior without the use of handwritten JavaScript.
+			</div><div class="para">
+				The search functionality is implemented using a session-scope stateful session bean, similar to the one we saw in the message list example above.
+			</div><pre class="programlisting">@Stateful
+ at Name("hotelSearch")
+ at Scope(ScopeType.SESSION)
+ at Restrict("#{identity.loggedIn}")
+public class HotelSearchingAction implements HotelSearching
+{
+   
+   @PersistenceContext
+   private EntityManager em;
+   
+   private String searchString;
+   private int pageSize = 10;
+   private int page;
+   
+   @DataModel
+   private List&lt;Hotel&gt; hotels;
+   
+   public String find()
+   {
+      page = 0;
+      queryHotels();   
+      return "main";
+   }
+
+   public String nextPage()
+   {
+      page++;
+      queryHotels();
+      return "main";
+   }
+      
+   private void queryHotels()
+   {
+      String searchPattern = searchString==null ? "%" : '%' + 
+         searchString.toLowerCase().replace('*', '%') + '%';
+      hotels = em.createQuery("select h from Hotel h where lower(h.name) like 
+        :search or lower(h.city) like :search 
+        or lower(h.zip) like :search or lower(h.address) like :search")
+            .setParameter("search", searchPattern)
+            .setMaxResults(pageSize)
+            .setFirstResult( page * pageSize )
+            .getResultList();
+   }
+   
+   public boolean isNextPageAvailable()
+   {
+      return hotels!=null &amp;&amp; hotels.size()==pageSize;
+   }
+   
+   public int getPageSize() {
+      return pageSize;
+   }
+
+   public void setPageSize(int pageSize) {
+      this.pageSize = pageSize;
+   }
+
+   public String getSearchString()
+   {
+      return searchString;
+   }
+
+   public void setSearchString(String searchString)
+   {
+      this.searchString = searchString;
+   }
+   
+   @Destroy @Remove
+   public void destroy() {}
+
+}
+</pre><div class="orderedlist"><ol><li class="listitem"><div class="para">
+						The EJB standard <code class="literal">@Stateful</code> annotation identifies this class as a stateful session bean. Stateful session beans are scoped to the conversation context by default.
+					</div></li><li class="listitem"><div class="para">
+						The <code class="literal">@Restrict</code> annotation applies a security restriction to the component. It restricts access to the component allowing only logged-in users. The security chapter explains more about security in Seam.
+					</div></li><li class="listitem"><div class="para">
+						The <code class="literal">@DataModel</code> annotation exposes a <code class="literal">List</code> as a JSF <code class="literal">ListDataModel</code>. This makes it easy to implement clickable lists for search screens. In this case, the list of hotels is exposed to the page as a <code class="literal">ListDataModel</code> in the conversation variable named <code class="literal">hotels</code>.
+					</div></li><li class="listitem"><div class="para">
+						The EJB standard <code class="literal">@Remove</code> annotation specifies that a stateful session bean should be removed and its state destroyed after invocation of the annotated method. In Seam, all stateful session beans should define a method marked <code class="literal">@Destroy @Remove</code>. This is the EJB remove method that will be called when Seam destroys the session context. Actually, the <code class="literal">@Destroy</code> annotation is of more general usefulness, since it can be used for any kind of cleanup that should happen when any Seam context ends. If you do not have an <code class="literal">@Destroy @Remove</code> method, state will leak and you will suffer performance problems.
+					</div></li></ol></div><div class="para">
+				The main page of the application is a Facelets page. Let us look at the fragment which relates to searching for hotels:
+			</div><pre class="programlisting">&lt;div class="section"&gt;
+&lt;h:form&gt;
+  
+  &lt;span class="errors"&gt;
+    &lt;h:messages globalOnly="true"/&gt;
+  &lt;/span&gt;
+    
+  &lt;h1&gt;Search Hotels&lt;/h1&gt;
+  &lt;fieldset&gt; 
+     &lt;h:inputText value="#{hotelSearch.searchString}" style="width: 165px;"&gt;
+        &lt;a:support event="onkeyup" actionListener="#{hotelSearch.find}" 
+                   reRender="searchResults" /&gt;
+     &lt;/h:inputText&gt;
+      
+     &lt;a:commandButton value="Find Hotels" action="#{hotelSearch.find}" 
+                      styleClass="button" reRender="searchResults"/&gt;
+      
+     &lt;a:status&gt;
+        &lt;f:facet name="start"&gt;
+           &lt;h:graphicImage value="/img/spinner.gif"/&gt;
+        &lt;/f:facet&gt;
+     &lt;/a:status&gt;
+     &lt;br/&gt;
+     &lt;h:outputLabel for="pageSize"&gt;Maximum results:&lt;/h:outputLabel&gt; 
+     &lt;h:selectOneMenu value="#{hotelSearch.pageSize}" id="pageSize"&gt;
+        &lt;f:selectItem itemLabel="5" itemValue="5"/&gt;
+        &lt;f:selectItem itemLabel="10" itemValue="10"/&gt;
+        &lt;f:selectItem itemLabel="20" itemValue="20"/&gt;
+     &lt;/h:selectOneMenu&gt;
+  &lt;/fieldset&gt;
+    
+&lt;/h:form&gt;
+&lt;/div&gt;
+
+&lt;a:outputPanel id="searchResults"&gt;
+  &lt;div class="section"&gt;
+  &lt;h:outputText value="No Hotels Found" 
+                rendered="#{hotels != null and hotels.rowCount==0}"/&gt;
+  &lt;h:dataTable value="#{hotels}" var="hot" rendered="#{hotels.rowCount&gt;0}"&gt;
+    &lt;h:column&gt;
+      &lt;f:facet name="header"&gt;Name&lt;/f:facet&gt;
+      #{hot.name}
+    &lt;/h:column&gt;
+    &lt;h:column&gt;
+      &lt;f:facet name="header"&gt;Address&lt;/f:facet&gt;
+      #{hot.address}
+    &lt;/h:column&gt;
+    &lt;h:column&gt;
+      &lt;f:facet name="header"&gt;City, State&lt;/f:facet&gt;
+      #{hot.city}, #{hot.state}, #{hot.country}
+    &lt;/h:column&gt; 
+    &lt;h:column&gt;
+      &lt;f:facet name="header"&gt;Zip&lt;/f:facet&gt;
+      #{hot.zip}
+    &lt;/h:column&gt;
+    &lt;h:column&gt;
+      &lt;f:facet name="header"&gt;Action&lt;/f:facet&gt;
+      &lt;s:link value="View Hotel" action="#{hotelBooking.selectHotel(hot)}"/&gt;
+    &lt;/h:column&gt;
+  &lt;/h:dataTable&gt;
+  &lt;s:link value="More results" action="#{hotelSearch.nextPage}" 
+          rendered="#{hotelSearch.nextPageAvailable}"/&gt;
+  &lt;/div&gt;
+&lt;/a:outputPanel&gt;
+</pre><div class="orderedlist"><ol><li class="listitem"><div class="para">
+						The Ajax4JSF <code class="literal">&lt;a:support&gt;</code> tag allows a JSF action event listener to be called by asynchronous <code class="literal">XMLHttpRequest</code> when a JavaScript event like <code class="literal">onkeyup</code> occurs. Even better, the <code class="literal">reRender</code> attribute lets us render a fragment of the JSF page and perform a partial page update when the asynchronous response is received.
+					</div></li><li class="listitem"><div class="para">
+						The Ajax4JSF <code class="literal">&lt;a:status&gt;</code> tag lets us display a cheesy annimated image while we wait for asynchronous requests to return.
+					</div></li><li class="listitem"><div class="para">
+						The Ajax4JSF <code class="literal">&lt;a:outputPanel&gt;</code> tag defines a region of the page which can be re-rendered by an asynchronous request.
+					</div></li><li class="listitem"><div class="para">
+						The Seam <code class="literal">&lt;s:link&gt;</code> tag lets us attach a JSF action listener to an ordinary (non-JavaScript) HTML link. The advantage of this over the standard JSF <code class="literal">&lt;h:commandLink&gt;</code> is that it preserves the operation of "open in new window" and "open in new tab". Also notice that we use a method binding with a parameter: <code class="literal">#{hotelBooking.selectHotel(hot)}</code>. This is not possible in the standard Unified EL, but Seam provides an extension to the EL that lets you use parameters on any method binding expression.
+					</div></li></ol></div><div class="para">
+				This page displays the search results dynamically as we type, and lets us choose a hotel and pass it to the <code class="literal">selectHotel()</code> method of the <code class="literal">HotelBookingAction</code>, which is where the <span class="emphasis"><em>really</em></span> interesting stuff is going to happen.
+			</div><div class="para">
+				Now lets see how the booking example application uses a conversation-scoped stateful session bean to achieve a natural cache of persistent data related to the conversation. The following code example is pretty long. But if you think of it as a list of scripted actions that implement the various steps of the conversation, it is understandable. Read the class from top to bottom, as if it were a story.
+			</div><pre class="programlisting">@Stateful
+ at Name("hotelBooking")
+ at Restrict("#{identity.loggedIn}")
+public class HotelBookingAction implements HotelBooking
+{
+   
+   @PersistenceContext(type=EXTENDED)
+   private EntityManager em;
+   
+   @In 
+   private User user;
+   
+   @In(required=false) @Out
+   private Hotel hotel;
+   
+   @In(required=false) 
+   @Out(required=false)
+   private Booking booking;
+     
+   @In
+   private FacesMessages facesMessages;
+      
+   @In
+   private Events events;
+   
+   @Logger 
+   private Log log;
+   
+   @Begin
+   public String selectHotel(Hotel selectedHotel)
+   {
+      hotel = em.merge(selectedHotel);
+      return "hotel";
+   }
+   
+   public String bookHotel()
+   {      
+      booking = new Booking(hotel, user);
+      Calendar calendar = Calendar.getInstance();
+      booking.setCheckinDate( calendar.getTime() );
+      calendar.add(Calendar.DAY_OF_MONTH, 1);
+      booking.setCheckoutDate( calendar.getTime() );
+      
+      return "book";
+   }
+
+   public String setBookingDetails()
+   {
+      if (booking==null || hotel==null) return "main";
+      if ( !booking.getCheckinDate().before( booking.getCheckoutDate() ) )
+      {
+         facesMessages.add("Check out date must be later than check in date");
+         return null;
+      }
+      else
+      {
+         return "confirm";
+      }
+   }
+
+   @End
+   public String confirm()
+   {
+      if (booking==null || hotel==null) return "main";
+      em.persist(booking);
+      facesMessages.add
+       ("Thank you, #{user.name}, your confimation number for #{hotel.name} is #{booking.id}");
+      log.info("New booking: #{booking.id} for #{user.username}");
+      events.raiseEvent("bookingConfirmed");
+      return "confirmed";
+   }
+   
+   @End
+   public String cancel()
+   {
+      return "main";
+   }
+   
+   @Destroy @Remove
+   public void destroy() {}
+
+}
+</pre><div class="orderedlist"><ol><li class="listitem"><div class="para">
+						This bean uses an EJB3 <span class="emphasis"><em>extended persistence context</em></span>, so that any entity instances remain managed for the whole lifecycle of the stateful session bean.
+					</div></li><li class="listitem"><div class="para">
+						The <code class="literal">@Out</code> annotation declares that an attribute value is <span class="emphasis"><em>outjected</em></span> to a context variable after method invocations. In this case, the context variable named <code class="literal">hotel</code> will be set to the value of the <code class="literal">hotel</code> instance variable after every action listener invocation completes.
+					</div></li><li class="listitem"><div class="para">
+						The <code class="literal">@Begin</code> annotation specifies that the annotated method begins a <span class="emphasis"><em>long-running conversation</em></span>, so the current conversation context will not be destroyed at the end of the request. Instead, it will be reassociated with every request from the current window, and destroyed either by timeout due to conversation inactivity or invocation of a matching <code class="literal">@End</code> method.
+					</div></li><li class="listitem"><div class="para">
+						The <code class="literal">@End</code> annotation specifies that the annotated method ends the current long-running conversation, so the current conversation context will be destroyed at the end of the request.
+					</div></li><li class="listitem"><div class="para">
+						This EJB remove method will be called when Seam destroys the conversation context and must always be defined.
+					</div></li></ol></div><div class="para">
+				<code class="literal">HotelBookingAction</code> contains all the action listener methods that implement selection, booking and booking confirmation, and holds state related to this work in its instance variables. We think you will agree that this code is much cleaner and simpler than getting and setting <code class="literal">HttpSession</code> attributes.
+			</div><div class="para">
+				Even better, a user can have multiple isolated conversations per login session. Try it! Log in, run a search, and navigate to different hotel pages in multiple browser tabs. You will be able to work on creating two different hotel reservations at the same time. If you leave any one conversation inactive for long enough, Seam will eventually time out that conversation and destroy its state. If, after ending a conversation, you backbutton to a page of that conversation and try to perform an action, Seam will detect that the conversation was already ended, and redirect you to the search page.
+			</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-Overview_of_the_booking_example.html"><strong>Prev</strong>2.6.2. Overview of the booking example</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-The_Seam_UI_control_library.html"><strong>Next</strong>2.6.4. The Seam UI control library</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Asynchronicity_and_messaging-Messaging_in_Seam.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Asynchronicity_and_messaging-Messaging_in_Seam.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Asynchronicity_and_messaging-Messaging_in_Seam.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>17.2. Messaging in Seam</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Asynchronicity_and_messaging.html" title="Chapter 17. Asynchronicity and messaging" /><link rel="prev" href="Seam_Reference_Guide-Asynchronicity_and_messaging.html" title="Chapter 17. Asynchronicity and messaging" /><link rel="next" href="Seam_Reference_Guide-Messaging_in_Seam-Sending_messages.html" title="17.2.2. Sending messages" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" !
 alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Asynchronicity_and_messaging.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Messaging_in_Seam-Sending_messages.html"><strong>Next</strong></a></li></ul><div class="sect1" title="17.2. Messaging in Seam"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Asynchronicity_and_messaging-Messaging_in_Seam" class="title">Messaging in Seam</h1></div></div></div><div class="para">
+		Seam makes it easy to send and receive JMS messages to and from Seam components.
+	</div><div class="sect2" title="17.2.1. Configuration"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Messaging_in_Seam-Configuration" class="title">Configuration</h1></div></div></div><div class="para">
+		To configure Seam's infrastructure for sending JMS messages, you need to tell Seam about any topics and queues you want to send messages to, and also tell Seam where to find the <code class="literal">QueueConnectionFactory</code> and/or <code class="literal">TopicConnectionFactory</code>.
+	</div><div class="para">
+		Seam defaults to using <code class="literal">UIL2ConnectionFactory</code> which is the usual connection factory for use with JBossMQ. If you are using some other JMS provider, you need to set one or both of <code class="literal">queueConnection.queueConnectionFactoryJndiName</code> and <code class="literal">topicConnection.topicConnectionFactoryJndiName</code> in <code class="literal">seam.properties</code>, <code class="literal">web.xml</code> or <code class="literal">components.xml</code>.
+	</div><div class="para">
+		You also need to list topics and queues in <code class="literal">components.xml</code> to install Seam managed <code class="literal">TopicPublisher</code>s and <code class="literal">QueueSender</code>s:
+	</div><pre class="programlisting">
+&lt;jms:managed-topic-publisher name="stockTickerPublisher" 
+                   auto-create="true  topic-jndi-name="topic/stockTickerTopic"/&gt;
+
+&lt;jms:managed-queue-sender name="paymentQueueSender" auto-create="true" 
+    queue-jndi-name="queue/paymentQueue"/&gt;
+</pre><div class="formalpara"><h5 class="formalpara" id="id2740856">Using JBoss Messaging</h5>
+			For using JBoss Messaging which comes with JBoss Enterprise Application Platform 4.3, you should first set the value of the properties '<code class="literal">queueConnection.queueConnectionFactoryJndiName</code>' and '<code class="literal">topicConnection.topicConnectionFactoryJndiName</code>' to '<code class="literal">ConnectionFactory</code>' which is the default connection factory for JBoss Messaging. Then set the value of the '<code class="literal">connectionProvider</code>' property to '<code class="literal">org.jboss.seam.remoting.messaging.JBossMessagingConnectionProvider</code>' on the class component '<code class="literal">org.jboss.seam.remoting.messaging.SubscriptionRegistry</code>', which creates topic connections for jboss messaging. 
+<pre class="programlisting">
+&lt;component name="org.jboss.seam.jms.topicConnection"&gt;
+	&lt;property name="topicConnectionFactoryJndiName"&gt;
+	ConnectionFactory
+	&lt;/property&gt;
+&lt;/component&gt;
+&lt;component class="org.jboss.seam.remoting.messaging.SubscriptionRegistry" installed="true"&gt;
+	&lt;property name="allowedTopics"&gt;
+	chatroomTopic
+	&lt;/property&gt;
+	&lt;property name="connectionProvider"&gt;
+	org.jboss.seam.remoting.messaging.JBossMessagingConnectionProvider
+	&lt;/property&gt;
+&lt;/component&gt;
+</pre>
+			 You also need to update the topics to use JBoss Messaging as shown in the code fragment below. 
+<pre class="programlisting">
+&lt;server&gt;
+	&lt;mbean code="org.jboss.jms.server.destination.TopicService"
+               name="jboss.messaging.destination:service=Topic,name=chatroomTopic"
+                                            xmbean-dd="xmdesc/Topic-xmbean.xml"&gt;
+		&lt;depends optional-attribute-name="ServerPeer"&gt;
+		jboss.messaging:service=ServerPeer
+		&lt;/depends&gt;
+		&lt;depends&gt;
+		jboss.messaging:service=PostOffice
+		&lt;/depends&gt;
+		&lt;attribute name="SecurityConfig"&gt;
+			&lt;security&gt;
+			  &lt;role name="guest" read="true" write="true"/&gt;
+			  &lt;role name="publisher" read="true" write="true" create="false"/&gt;
+			  &lt;role name="durpublisher" read="true" write="true" create="true"/&gt;
+			&lt;/security&gt;
+		&lt;/attribute&gt;
+	&lt;/mbean&gt;
+&lt;/server&gt;
+</pre>
+		</div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Asynchronicity_and_messaging.html"><strong>Prev</strong>Chapter 17. Asynchronicity and messaging</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Messaging_in_Seam-Sending_messages.html"><strong>Next</strong>17.2.2. Sending messages</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Asynchronicity_and_messaging.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Asynchronicity_and_messaging.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Asynchronicity_and_messaging.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 17. Asynchronicity and messaging</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="index.html" title="Seam Reference Guide CP07" /><link rel="prev" href="Seam_Reference_Guide-Email-Tags.html" title="16.4. Tags" /><link rel="next" href="Seam_Reference_Guide-Asynchronicity_and_messaging-Messaging_in_Seam.html" title="17.2. Messaging in Seam" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="C!
 ommon_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Email-Tags.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Asynchronicity_and_messaging-Messaging_in_Seam.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="chapter" title="Chapter 17. Asynchronicity and messaging" lang="en-US"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Asynchronicity_and_messaging">Chapter 17. Asynchronicity and messaging</h2></div></div></div><div class="toc"><dl><dt><span class="sect1"><a href="Seam_Reference_Guide-Asynchronicity_and_messaging.html#Seam_Reference_Guide-Asynchronicity_and_messaging-Asynchronicity">17.1. Asynchronicity</a></span></dt><dd><dl><dt><span class="sect2"><a href="Seam_Reference_Guide-Asynchronicity_and_messaging.html#Seam_Reference_Guide-Asynchronicity-Asynchronous_method!
 s">17.1.1. Asynchronous methods</a></span></dt><dt><span class!
 ="sect2"
><a href="Seam_Reference_Guide-Asynchronicity_and_messaging.html#Seam_Reference_Guide-Asynchronicity-Asynchronous_events">17.1.2. Asynchronous events</a></span></dt></dl></dd><dt><span class="sect1"><a href="Seam_Reference_Guide-Asynchronicity_and_messaging-Messaging_in_Seam.html">17.2. Messaging in Seam</a></span></dt><dd><dl><dt><span class="sect2"><a href="Seam_Reference_Guide-Asynchronicity_and_messaging-Messaging_in_Seam.html#Seam_Reference_Guide-Messaging_in_Seam-Configuration">17.2.1. Configuration</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Messaging_in_Seam-Sending_messages.html">17.2.2. Sending messages</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Messaging_in_Seam-Receiving_messages_using_a_message_driven_bean.html">17.2.3. Receiving messages using a message-driven bean</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Messaging_in_Seam-Receiving_messages_in_the_client.html">17.2.4. Receiving mess!
 ages in the client</a></span></dt></dl></dd></dl></div><div class="para">
+		Seam makes it very easy to perform work asynchronously from a web request. When most people think of asynchronicity in Java EE, they think of using JMS. This is certainly one way to approach the problem in Seam, and is the right way when you have strict and well-defined quality of service requirements. Seam makes it easy to send and recieve JMS messages using Seam components.
+	</div><div class="para">
+		But for many usecases, JMS is overkill. Seam layers a simple asynchronous method and event facility over the EJB 3.0 timer service.
+	</div><div class="sect1" title="17.1. Asynchronicity"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Asynchronicity_and_messaging-Asynchronicity" class="title">Asynchronicity</h1></div></div></div><div class="para">
+		Asynchronous events and method calls have the same quality of service expectations as the container's EJB timer service. If you are not familiar with the Timer service, do not worry, you do not need to interact with it directly if you want to use asynchronous methods in Seam.
+	</div><div class="para">
+		To use asynchronous methods and events, you need to add the following line to <code class="literal">components.xml</code>:
+	</div><pre class="programlisting">&lt;core:dispatcher/&gt;
+</pre><div class="para">
+		Note that this functionality is not available in environments which do not support EJB 3.0.
+	</div><div class="sect2" title="17.1.1. Asynchronous methods"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Asynchronicity-Asynchronous_methods" class="title">Asynchronous methods</h1></div></div></div><div class="para">
+		In simplest form, an asynchronous call just lets a method call be processed asynchronously (in a different thread) from the caller. We usually use an asynchronous call when we want to return an immediate response to the client, and let some expensive work be processed in the background. This pattern works very well in applications which use AJAX, where the client can automatically poll the server for the result of the work.
+	</div><div class="para">
+		For EJB components, we annotate the local interface to specify that a method is processed asynchronously.
+	</div><pre class="programlisting">@Local
+public interface PaymentHandler
+{
+    @Asynchronous
+    public void processPayment(Payment payment);
+}
+</pre><div class="para">
+		(For JavaBean components we can annotate the component implementation class if we like.)
+	</div><div class="para">
+		The use of asynchronicity is transparent to the bean class:
+	</div><pre class="programlisting">@Stateless
+ at Name("paymentHandler")
+public class PaymentHandlerBean implements PaymentHandler
+{
+    public void processPayment(Payment payment)
+    {
+        //do some work!
+    }
+}
+</pre><div class="para">
+		And also transparent to the client:
+	</div><pre class="programlisting">@Stateful
+ at Name("paymentAction")
+public class CreatePaymentAction
+{
+    @In(create=true) PaymentHandler paymentHandler;
+    @In Bill bill;
+    
+    public String pay()
+    {
+        paymentHandler.processPayment( new Payment(bill) );
+        return "success";
+    }
+}
+</pre><div class="para">
+		The asynchronous method is processed in a completely new event context and does not have access to the session or conversation context state of the caller. However, the business process context <span class="emphasis"><em>is</em></span> propagated.
+	</div><div class="para">
+		Asynchronous method calls may be scheduled for later execution using the <code class="literal">@Duration</code>, <code class="literal">@Expiration</code> and <code class="literal">@IntervalDuration</code> annotations.
+	</div><pre class="programlisting">@Local
+public interface PaymentHandler
+{
+    @Asynchronous
+    public void processScheduledPayment(Payment payment, @Expiration Date date);
+
+    @Asynchronous
+    public void processRecurringPayment(Payment payment, @Expiration Date date, 
+      @IntervalDuration Long interval)'
+}
+</pre><pre class="programlisting">@Stateful
+ at Name("paymentAction")
+public class CreatePaymentAction
+{
+    @In(create=true) PaymentHandler paymentHandler;
+    @In Bill bill;
+    
+    public String schedulePayment()
+    {
+        paymentHandler.processScheduledPayment( new Payment(bill), bill.getDueDate() );
+        return "success";
+    }
+
+    public String scheduleRecurringPayment()
+    {
+        paymentHandler.processRecurringPayment( new Payment(bill), bill.getDueDate(), ONE_MONTH );
+        return "success";
+    }
+}
+</pre><div class="para">
+		Both client and server may access the <code class="literal">Timer</code> object associated with the invocation.
+	</div><pre class="programlisting">@Local
+public interface PaymentHandler
+{
+    @Asynchronous
+    public Timer processScheduledPayment(Payment payment, @Expiration Date date);
+}
+</pre><pre class="programlisting">@Stateless
+ at Name("paymentHandler")
+public class PaymentHandlerBean implements PaymentHandler
+{
+    @In Timer timer;
+    
+    public Timer processScheduledPayment(Payment payment, @Expiration Date date)
+    {
+        //do some work!
+        
+        return timer; //note that return value is completely ignored
+    }
+
+}
+</pre><pre class="programlisting">@Stateful
+ at Name("paymentAction")
+public class CreatePaymentAction
+{
+    @In(create=true) PaymentHandler paymentHandler;
+    @In Bill bill;
+    
+    public String schedulePayment()
+    {
+        Timer timer = paymentHandler.processScheduledPayment( new Payment(bill), bill.getDueDate() );
+        return "success";
+    }
+}
+</pre><div class="para">
+		Asynchronous methods cannot return any other value to the caller.
+	</div></div><div class="sect2" title="17.1.2. Asynchronous events"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Asynchronicity-Asynchronous_events" class="title">Asynchronous events</h1></div></div></div><div class="para">
+		Component-driven events may also be asynchronous. To raise an event for asynchronous processing, simply call the <code class="literal">raiseAsynchronousEvent()</code> methods of the <code class="literal">Events</code> class. To schedule a timed event, call one of the <code class="literal">raiseTimedEvent()</code> methods. Components may observe asynchronous events in the usual way, but remember that only the business process context is propagated to the asynchronous thread.
+	</div></div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Email-Tags.html"><strong>Prev</strong>16.4. Tags</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Asynchronicity_and_messaging-Messaging_in_Seam.html"><strong>Next</strong>17.2. Messaging in Seam</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Authentication-Advanced_Authentication_Features.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Authentication-Advanced_Authentication_Features.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Authentication-Advanced_Authentication_Features.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>12.3.7. Advanced Authentication Features</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Security-Authentication.html" title="12.3. Authentication" /><link rel="prev" href="Seam_Reference_Guide-Authentication-Login_Redirection.html" title="12.3.6. Login Redirection" /><link rel="next" href="Seam_Reference_Guide-Security-Error_Messages.html" title="12.4. Error Messages" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="r!
 ight" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Authentication-Login_Redirection.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Security-Error_Messages.html"><strong>Next</strong></a></li></ul><div class="sect2" title="12.3.7. Advanced Authentication Features"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Authentication-Advanced_Authentication_Features" class="title">Advanced Authentication Features</h1></div></div></div><div class="para">
+		This section explores some of the advanced features provided by the security API for addressing more complex security requirements.
+	</div><div class="sect3" title="12.3.7.1. Using your container's JAAS configuration"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Advanced_Authentication_Features-Using_your_containers_JAAS_configuration" class="title">Using your container's JAAS configuration</h1></div></div></div><div class="para">
+		If you would rather not use the simplified JAAS configuration provided by the Seam Security API, you may instead delegate to the default system JAAS configuration by providing a <code class="literal">jaasConfigName</code> property in <code class="literal">components.xml</code>. For example, if you are using JBoss AS and wish to use the <code class="literal">other</code> policy (which uses the <code class="literal">UsersRolesLoginModule</code> login module provided by JBoss AS), then the entry in <code class="literal">components.xml</code> would look like this:
+	</div><pre class="programlisting">&lt;security:identity authenticate-method="#{authenticator.authenticate}" 
+                      jaas-config-name="other"/&gt;
+</pre></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Authentication-Login_Redirection.html"><strong>Prev</strong>12.3.6. Login Redirection</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Security-Error_Messages.html"><strong>Next</strong>12.4. Error Messages</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Authentication-Handling_Security_Exceptions.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Authentication-Handling_Security_Exceptions.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Authentication-Handling_Security_Exceptions.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>12.3.5. Handling Security Exceptions</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Security-Authentication.html" title="12.3. Authentication" /><link rel="prev" href="Seam_Reference_Guide-Authentication-Simplified_Configuration___Summary.html" title="12.3.4. Simplified Configuration - Summary" /><link rel="next" href="Seam_Reference_Guide-Authentication-Login_Redirection.html" title="12.3.6. Login Redirection" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_le!
 ft.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Authentication-Simplified_Configuration___Summary.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Authentication-Login_Redirection.html"><strong>Next</strong></a></li></ul><div class="sect2" title="12.3.5. Handling Security Exceptions"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Authentication-Handling_Security_Exceptions" class="title">Handling Security Exceptions</h1></div></div></div><div class="para">
+		To prevent users from receiving the default error page in response to a security error, it is recommended that <code class="literal">pages.xml</code> is configured to redirect security errors to a more meaningful page. The two main types of exceptions thrown by the security API are:
+	</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+				<code class="literal">NotLoggedInException</code> - This exception is thrown if the user attempts to access a restricted action or page when they are not logged in.
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">AuthorizationException</code> - This exception is only thrown if the user is already logged in, and they have attempted to access a restricted action or page for which they do not have the necessary privileges.
+			</div></li></ul></div><div class="para">
+		In the case of a <code class="literal">NotLoggedInException</code>, it is recommended that the user is redirected to either a login or registration page so that they can log in. For an <code class="literal">AuthorizationException</code>, it may be useful to redirect the user to an error page. Here is an example of a <code class="literal">pages.xml</code> file that redirects both of these security exceptions:
+	</div><pre class="programlisting">&lt;pages&gt;
+
+    ...
+    
+    &lt;exception class="org.jboss.seam.security.NotLoggedInException"&gt;
+        &lt;redirect view-id="/login.xhtml"&gt;
+            &lt;message&gt;You must be logged in to perform this action&lt;/message&gt;
+        &lt;/redirect&gt;
+    &lt;/exception&gt;
+    
+    &lt;exception class="org.jboss.seam.security.AuthorizationException"&gt;
+        &lt;end-conversation/&gt;
+        &lt;redirect view-id="/security_error.xhtml"&gt;
+            &lt;message&gt;
+                              You do not have the necessary security privileges to perform this action.
+            &lt;/message&gt;
+        &lt;/redirect&gt;
+    &lt;/exception&gt;
+  
+&lt;/pages&gt;
+</pre><div class="para">
+		Most web applications require even more sophisticated handling of login redirection, so Seam includes some special functionality for handling this problem.
+	</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Authentication-Simplified_Configuration___Summary.html"><strong>Prev</strong>12.3.4. Simplified Configuration - Summary</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Authentication-Login_Redirection.html"><strong>Next</strong>12.3.6. Login Redirection</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Authentication-Login_Redirection.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Authentication-Login_Redirection.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Authentication-Login_Redirection.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>12.3.6. Login Redirection</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Security-Authentication.html" title="12.3. Authentication" /><link rel="prev" href="Seam_Reference_Guide-Authentication-Handling_Security_Exceptions.html" title="12.3.5. Handling Security Exceptions" /><link rel="next" href="Seam_Reference_Guide-Authentication-Advanced_Authentication_Features.html" title="12.3.7. Advanced Authentication Features" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/i!
 mage_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Authentication-Handling_Security_Exceptions.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Authentication-Advanced_Authentication_Features.html"><strong>Next</strong></a></li></ul><div class="sect2" title="12.3.6. Login Redirection"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Authentication-Login_Redirection" class="title">Login Redirection</h1></div></div></div><div class="para">
+		You can ask Seam to redirect the user to a login screen when an unauthenticated user tries to access a particular view (or wildcarded view id) as follows:
+	</div><pre class="programlisting">&lt;pages login-view-id="/login.xhtml"&gt;
+
+    &lt;page view-id="/members/*" login-required="true"/&gt;
+    
+    ...
+    
+&lt;/pages&gt;
+</pre><div class="para">
+		(This is less of a blunt instrument than the exception handler shown above, but should probably be used in conjunction with it.)
+	</div><div class="para">
+		After the user logs in, we want to automatically send them back where they came from, so they can retry the action that required logging in. If you add the following event listeners to <code class="literal">components.xml</code>, attempts to access a restricted view while not logged in will be remembered, so that upon the user successfully logging in they will be redirected to the originally requested view, with any page parameters that existed in the original request.
+	</div><pre class="programlisting">&lt;event type="org.jboss.seam.notLoggedIn"&gt;
+    &lt;action expression="#{redirect.captureCurrentView}"/&gt;
+&lt;/event&gt;
+    
+&lt;event type="org.jboss.seam.postAuthenticate"&gt;
+    &lt;action expression="#{redirect.returnToCapturedView}"/&gt;
+&lt;/event&gt;
+</pre><div class="note"><h2>Note</h2><div class="para">
+			Login redirection is implemented as a conversation-scoped mechanism, so do not end the conversation in your <code class="literal">authenticate()</code> method.
+		</div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Authentication-Handling_Security_Exceptions.html"><strong>Prev</strong>12.3.5. Handling Security Exceptions</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Authentication-Advanced_Authentication_Features.html"><strong>Next</strong>12.3.7. Advanced Authentication Features</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Authentication-Simplified_Configuration___Summary.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Authentication-Simplified_Configuration___Summary.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Authentication-Simplified_Configuration___Summary.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>12.3.4. Simplified Configuration - Summary</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Security-Authentication.html" title="12.3. Authentication" /><link rel="prev" href="Seam_Reference_Guide-Authentication-Writing_a_login_form.html" title="12.3.3. Writing a login form" /><link rel="next" href="Seam_Reference_Guide-Authentication-Handling_Security_Exceptions.html" title="12.3.5. Handling Security Exceptions" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_le!
 ft.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Authentication-Writing_a_login_form.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Authentication-Handling_Security_Exceptions.html"><strong>Next</strong></a></li></ul><div class="sect2" title="12.3.4. Simplified Configuration - Summary"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Authentication-Simplified_Configuration___Summary" class="title">Simplified Configuration - Summary</h1></div></div></div><div class="para">
+		So to sum up, there are the three easy steps to configure authentication:
+	</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+				Configure an authentication method in <code class="literal">components.xml</code>.
+			</div></li><li class="listitem"><div class="para">
+				Write an authentication method.
+			</div></li><li class="listitem"><div class="para">
+				Write a login form so that the user can authenticate.
+			</div></li></ul></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Authentication-Writing_a_login_form.html"><strong>Prev</strong>12.3.3. Writing a login form</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Authentication-Handling_Security_Exceptions.html"><strong>Next</strong>12.3.5. Handling Security Exceptions</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Authentication-Writing_a_login_form.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Authentication-Writing_a_login_form.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Authentication-Writing_a_login_form.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>12.3.3. Writing a login form</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Security-Authentication.html" title="12.3. Authentication" /><link rel="prev" href="Seam_Reference_Guide-Authentication-Writing_an_authentication_method.html" title="12.3.2. Writing an authentication method" /><link rel="next" href="Seam_Reference_Guide-Authentication-Simplified_Configuration___Summary.html" title="12.3.4. Simplified Configuration - Summary" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_C!
 ontent/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Authentication-Writing_an_authentication_method.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Authentication-Simplified_Configuration___Summary.html"><strong>Next</strong></a></li></ul><div class="sect2" title="12.3.3. Writing a login form"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Authentication-Writing_a_login_form" class="title">Writing a login form</h1></div></div></div><div class="para">
+		The <code class="literal">Identity</code> component provides both <code class="literal">username</code> and <code class="literal">password</code> properties, catering for the most common authentication scenario. These properties can be bound directly to the username and password fields on a login form. Once these properties are set, calling the <code class="literal">identity.login()</code> method will authenticate the user using the provided credentials. Here is an example of a simple login form:
+	</div><pre class="programlisting">&lt;div&gt;
+    &lt;h:outputLabel for="name" value="Username"/&gt;
+    &lt;h:inputText id="name" value="#{identity.username}"/&gt;
+&lt;/div&gt;
+
+&lt;div&gt;
+    &lt;h:outputLabel for="password" value="Password"/&gt;
+    &lt;h:inputSecret id="password" value="#{identity.password}"/&gt;
+&lt;/div&gt;
+
+&lt;div&gt;
+    &lt;h:commandButton value="Login" action="#{identity.login}"/&gt;
+&lt;/div&gt;
+</pre><div class="para">
+		Similarly, logging out the user is done by calling <code class="literal">#{identity.logout}</code>. Calling this action will clear the security state of the currently authenticated user.
+	</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Authentication-Writing_an_authentication_method.html"><strong>Prev</strong>12.3.2. Writing an authentication method</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Authentication-Simplified_Configuration___Summary.html"><strong>Next</strong>12.3.4. Simplified Configuration - Summary</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Authentication-Writing_an_authentication_method.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Authentication-Writing_an_authentication_method.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Authentication-Writing_an_authentication_method.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>12.3.2. Writing an authentication method</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Security-Authentication.html" title="12.3. Authentication" /><link rel="prev" href="Seam_Reference_Guide-Security-Authentication.html" title="12.3. Authentication" /><link rel="next" href="Seam_Reference_Guide-Authentication-Writing_a_login_form.html" title="12.3.3. Writing a login form" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a cl!
 ass="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Security-Authentication.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Authentication-Writing_a_login_form.html"><strong>Next</strong></a></li></ul><div class="sect2" title="12.3.2. Writing an authentication method"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Authentication-Writing_an_authentication_method" class="title">Writing an authentication method</h1></div></div></div><div class="para">
+		The <code class="literal">authenticate-method</code> property specified for <code class="literal">identity</code> in <code class="literal">components.xml</code> specifies which method will be used by <code class="literal">SeamLoginModule</code> to authenticate users. This method takes no parameters, and is expected to return a boolean indicating whether authentication is successful or not. The user's username and password can be obtained from <code class="literal">Identity.instance().getUsername()</code> and <code class="literal">Identity.instance().getPassword()</code>, respectively. Any roles that the user is a member of should be assigned using <code class="literal">Identity.instance().addRole()</code>. Here is a complete example of an authentication method inside a JavaBean component:
+	</div><pre class="programlisting">@Name("authenticator")
+public class Authenticator {
+   @In EntityManager entityManager;
+   
+   public boolean authenticate() {
+      try
+      {
+         User user = (User) entityManager.createQuery(
+            "from User where username = :username and password = :password")
+            .setParameter("username", Identity.instance().getUsername())
+            .setParameter("password", Identity.instance().getPassword())
+            .getSingleResult();
+
+         if (user.getRoles() != null)
+         {
+            for (UserRole mr : user.getRoles())
+               Identity.instance().addRole(mr.getName());
+         }
+
+         return true;
+      }
+      catch (NoResultException ex)
+      {
+         FacesMessages.instance().add("Invalid username/password");
+         return false;
+      }
+      
+   }
+   
+}
+</pre><div class="para">
+		In the above example, both <code class="literal">User</code> and <code class="literal">UserRole</code> are application-specific entity beans. The <code class="literal">roles</code> parameter is populated with the roles that the user is a member of, which should be added to the <code class="literal">Set</code> as literal string values, for example, <code class="literal">admin</code>, <code class="literal">user</code>. In this case, if the user record is not found and a <code class="literal">NoResultException</code> thrown, the authentication method returns <code class="literal">false</code> to indicate the authentication failed.
+	</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Security-Authentication.html"><strong>Prev</strong>12.3. Authentication</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Authentication-Writing_a_login_form.html"><strong>Next</strong>12.3.3. Writing a login form</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Authorization-Securing_Entities.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Authorization-Securing_Entities.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Authorization-Securing_Entities.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>12.5.5. Securing Entities</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Security-Authorization.html" title="12.5. Authorization" /><link rel="prev" href="Seam_Reference_Guide-Authorization-Securing_pages.html" title="12.5.4. Securing pages" /><link rel="next" href="Seam_Reference_Guide-Securing_Entities-Entity_security_with_Hibernate.html" title="12.5.5.2. Entity security with Hibernate" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Si!
 te" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Authorization-Securing_pages.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Securing_Entities-Entity_security_with_Hibernate.html"><strong>Next</strong></a></li></ul><div class="sect2" title="12.5.5. Securing Entities"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Authorization-Securing_Entities" class="title">Securing Entities</h1></div></div></div><div class="para">
+		Seam security also makes it possible to apply security restrictions to read, insert, update and delete actions for entities.
+	</div><div class="para">
+		To secure all actions for an entity class, add a <code class="literal">@Restrict</code> annotation on the class itself:
+	</div><pre class="programlisting">@Entity
+ at Name("customer")
+ at Restrict
+public class Customer {
+  ...
+}
+</pre><div class="para">
+		If no expression is specified in the <code class="literal">@Restrict</code> annotation, the default security check that is performed is a permission check of <code class="literal">entityName:action</code>, where <code class="literal">entityName</code> is the Seam component name of the entity (or the fully-qualified class name if no @Name is specified), and the <code class="literal">action</code> is either <code class="literal">read</code>, <code class="literal">insert</code>, <code class="literal">update</code> or <code class="literal">delete</code>.
+	</div><div class="para">
+		It is also possible to only restrict certain actions, by placing a <code class="literal">@Restrict</code> annotation on the relevent entity lifecycle method (annotated as follows):
+	</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+				<code class="literal">@PostLoad</code> - Called after an entity instance is loaded from the database. Use this method to configure a <code class="literal">read</code> permission.
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">@PrePersist</code> - Called before a new instance of the entity is inserted. Use this method to configure an <code class="literal">insert</code> permission.
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">@PreUpdate</code> - Called before an entity is updated. Use this method to configure an <code class="literal">update</code> permission.
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">@PreRemove</code> - Called before an entity is deleted. Use this method to configure a <code class="literal">delete</code> permission.
+			</div></li></ul></div><div class="para">
+		Here is an example of how an entity would be configured to perform a security check for any <code class="literal">insert</code> operations. Please note that the method is not required to do anything, the only important thing in regard to security is how it is annotated:
+	</div><pre class="programlisting">
+  @PrePersist @Restrict
+  public void prePersist() {}
+</pre><div class="para">
+		And here is an example of an entity permission rule that checks if the authenticated user is allowed to insert a new <code class="literal">MemberBlog</code> record (from the seamspace example). The entity for which the security check is being made is automatically asserted into the working memory (in this case <code class="literal">MemberBlog</code>):
+	</div><pre class="programlisting">rule InsertMemberBlog
+  no-loop
+  activation-group "permissions"  
+when
+  check: PermissionCheck(name == "memberBlog", action == "insert", granted == false)
+  Principal(principalName : name)
+  MemberBlog(member : member -&gt; (member.getUsername().equals(principalName)))
+then
+  check.grant();
+end;
+</pre><div class="para">
+		This rule will grant the permission <code class="literal">memberBlog:insert</code> if the currently authenticated user (indicated by the <code class="literal">Principal</code> fact) has the same name as the member for which the blog entry is being created. The "<code class="literal">name : name</code>" structure that can be seen in the <code class="literal">Principal</code> fact (and other places) is a variable binding - it binds the <code class="literal">name</code> property of the <code class="literal">Principal</code> to a variable called <code class="literal">name</code>. Variable bindings allow the value to be referred to in other places, such as the following line which compares the member's username to the <code class="literal">Principal</code> name. For more details, please refer to the JBoss Rules documentation.
+	</div><div class="para">
+		Finally, we need to install a listener class that integrates Seam security with your JPA provider.
+	</div><div class="sect3" title="12.5.5.1. Entity security with JPA"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Securing_Entities-Entity_security_with_JPA" class="title">Entity security with JPA</h1></div></div></div><div class="para">
+		Security checks for EJB3 entity beans are performed with an <code class="literal">EntityListener</code>. You can install this listener by using the following <code class="literal">META-INF/orm.xml</code> file:
+	</div><pre class="programlisting">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
+                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+                 xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm 
+                                            http://java.sun.com/xml/ns/persistence/orm_1_0.xsd"
+                 version="1.0"&gt;
+                 
+    &lt;persistence-unit-metadata&gt;
+        &lt;persistence-unit-defaults&gt;
+            &lt;entity-listeners&gt;
+                &lt;entity-listener class="org.jboss.seam.security.EntitySecurityListener"/&gt;
+            &lt;/entity-listeners&gt;
+        &lt;/persistence-unit-defaults&gt;
+    &lt;/persistence-unit-metadata&gt;
+    
+&lt;/entity-mappings&gt;
+</pre></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Authorization-Securing_pages.html"><strong>Prev</strong>12.5.4. Securing pages</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Securing_Entities-Entity_security_with_Hibernate.html"><strong>Next</strong>12.5.5.2. Entity security with Hibernate</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Authorization-Securing_components.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Authorization-Securing_components.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Authorization-Securing_components.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>12.5.2. Securing components</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Security-Authorization.html" title="12.5. Authorization" /><link rel="prev" href="Seam_Reference_Guide-Security-Authorization.html" title="12.5. Authorization" /><link rel="next" href="Seam_Reference_Guide-Securing_components-Inline_restrictions.html" title="12.5.2.2. Inline restrictions" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" !
 href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Security-Authorization.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Securing_components-Inline_restrictions.html"><strong>Next</strong></a></li></ul><div class="sect2" title="12.5.2. Securing components"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Authorization-Securing_components" class="title">Securing components</h1></div></div></div><div class="para">
+		Let us start by examining the simplest form of authorization, component security, starting with the <code class="literal">@Restrict</code> annotation.
+	</div><div class="sect3" title="12.5.2.1. The @Restrict annotation"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Securing_components-The_Restrict_annotation" class="title">The @Restrict annotation</h1></div></div></div><div class="para">
+		Seam components may be secured either at the method or the class level, using the <code class="literal">@Restrict</code> annotation. If both a method and it's declaring class are annotated with <code class="literal">@Restrict</code>, the method restriction will take precedence (and the class restriction will not apply). If a method invocation fails a security check, then an exception will be thrown as per the contract for <code class="literal">Identity.checkRestriction()</code> (see Inline Restrictions). A <code class="literal">@Restrict</code> on just the component class itself is equivalent to adding <code class="literal">@Restrict</code> to each of its methods.
+	</div><div class="para">
+		An empty <code class="literal">@Restrict</code> implies a permission check of <code class="literal">componentName:methodName</code>. Take for example the following component method:
+	</div><pre class="programlisting">@Name("account")
+public class AccountAction {
+    @Restrict public void delete() {
+      ...
+    }
+}
+</pre><div class="para">
+		In this example, the implied permission required to call the <code class="literal">delete()</code> method is <code class="literal">account:delete</code>. The equivalent of this would be to write <code class="literal">@Restrict("#{s:hasPermission('account','delete',null)}")</code>. Now let's look at another example:
+	</div><pre class="programlisting">@Restrict @Name("account")
+public class AccountAction {
+    public void insert() {
+      ...
+    }
+    @Restrict("#{s:hasRole('admin')}") 
+    public void delete() {
+      ...
+    }
+}
+</pre><div class="para">
+		This time, the component class itself is annotated with <code class="literal">@Restrict</code>. This means that any methods without an overriding <code class="literal">@Restrict</code> annotation require an implicit permission check. In the case of this example, the <code class="literal">insert()</code> method requires a permission of <code class="literal">account:insert</code>, while the <code class="literal">delete()</code> method requires that the user is a member of the <code class="literal">admin</code> role.
+	</div><div class="para">
+		Before we go any further, let us address the <code class="literal">#{s:hasRole()}</code> expression seen in the above example. Both <code class="literal">s:hasRole</code> and <code class="literal">s:hasPermission</code> are EL functions, which delegate to the correspondingly named methods of the <code class="literal">Identity</code> class. These functions can be used within any EL expression throughout the entirety of the security API.
+	</div><div class="para">
+		Being an EL expression, the value of the <code class="literal">@Restrict</code> annotation may reference any objects that exist within a Seam context. This is extremely useful when performing permission checks for a specific object instance. Look at this example:
+	</div><pre class="programlisting">@Name("account")
+public class AccountAction {
+    @In Account selectedAccount;
+    @Restrict("#{s:hasPermission('account','modify',selectedAccount)}")
+    public void modify() {
+        selectedAccount.modify();
+    }
+}
+</pre><div class="para">
+		The interesting thing to note from this example is the reference to <code class="literal">selectedAccount</code> seen within the <code class="literal">hasPermission()</code> function call. The value of this variable will be looked up from within the Seam context, and passed to the <code class="literal">hasPermission()</code> method in <code class="literal">Identity</code>, which in this case can then determine if the user has the required permission for modifying the specified <code class="literal">Account</code> object.
+	</div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Security-Authorization.html"><strong>Prev</strong>12.5. Authorization</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Securing_components-Inline_restrictions.html"><strong>Next</strong>12.5.2.2. Inline restrictions</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Authorization-Securing_pages.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Authorization-Securing_pages.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Authorization-Securing_pages.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>12.5.4. Securing pages</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Security-Authorization.html" title="12.5. Authorization" /><link rel="prev" href="Seam_Reference_Guide-Authorization-Security_in_the_user_interface.html" title="12.5.3. Security in the user interface" /><link rel="next" href="Seam_Reference_Guide-Authorization-Securing_Entities.html" title="12.5.5. Securing Entities" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site"!
  /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Authorization-Security_in_the_user_interface.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Authorization-Securing_Entities.html"><strong>Next</strong></a></li></ul><div class="sect2" title="12.5.4. Securing pages"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Authorization-Securing_pages" class="title">Securing pages</h1></div></div></div><div class="para">
+		Page security requires that the application is using a <code class="literal">pages.xml</code> file, however is extremely simple to configure. Simply include a <code class="literal">&lt;restrict/&gt;</code> element within the <code class="literal">page</code> elements that you wish to secure. By default, if a value is not provided for the <code class="literal">restrict</code> element, an implied permission of <code class="literal">{viewId}:render</code> will be checked for whenever accessing that page. Otherwise the value will be evaluated as a standard security expression. Here is a couple of examples:
+	</div><pre class="programlisting">&lt;page view-id="/settings.xhtml"&gt;
+    &lt;restrict/&gt;
+&lt;/page&gt;
+        
+&lt;page view-id="/reports.xhtml"&gt;    
+    &lt;restrict&gt;#{s:hasRole('admin')}&lt;/restrict&gt;
+&lt;/page&gt;
+</pre><div class="para">
+		In the above example, the first page has an implied permission restriction of <code class="literal">/settings.xhtml:render</code>, while the second one checks that the user is a member of the <code class="literal">admin</code> role.
+	</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Authorization-Security_in_the_user_interface.html"><strong>Prev</strong>12.5.3. Security in the user interface</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Authorization-Securing_Entities.html"><strong>Next</strong>12.5.5. Securing Entities</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Authorization-Security_in_the_user_interface.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Authorization-Security_in_the_user_interface.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Authorization-Security_in_the_user_interface.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>12.5.3. Security in the user interface</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Security-Authorization.html" title="12.5. Authorization" /><link rel="prev" href="Seam_Reference_Guide-Securing_components-Inline_restrictions.html" title="12.5.2.2. Inline restrictions" /><link rel="next" href="Seam_Reference_Guide-Authorization-Securing_pages.html" title="12.5.4. Securing pages" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /><!
 /a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Securing_components-Inline_restrictions.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Authorization-Securing_pages.html"><strong>Next</strong></a></li></ul><div class="sect2" title="12.5.3. Security in the user interface"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Authorization-Security_in_the_user_interface" class="title">Security in the user interface</h1></div></div></div><div class="para">
+		One indication of a well designed user interface is that the user is not presented with options for which they do not have the necessary privileges to use. Seam Security allows conditional rendering of either 1) sections of a page or 2) individual controls, based upon the privileges of the user, using the very same EL expressions that are used for component security.
+	</div><div class="para">
+		Let us take a look at some examples of interface security. First of all, let us pretend that we have a login form that should only be rendered if the user is not already logged in. Using the <code class="literal">identity.isLoggedIn()</code> property, we can write this:
+	</div><pre class="programlisting">&lt;h:form class="loginForm" rendered="#{not identity.loggedIn}"&gt;
+</pre><div class="para">
+		If the user is not logged in, then the login form will be rendered - very straight forward so far. Now let us pretend there is a menu on the page that contains some actions which should only be accessible to users in the <code class="literal">manager</code> role. Here is one way that these could be written:
+	</div><pre class="programlisting">&lt;h:outputLink action="#{reports.listManagerReports}" rendered="#{s:hasRole('manager')}"&gt;
+    Manager Reports
+&lt;/h:outputLink&gt;
+</pre><div class="para">
+		This is also quite straight forward. If the user is not a member of the <code class="literal">manager</code> role, then the outputLink will not be rendered. The <code class="literal">rendered</code> attribute can generally be used on the control itself, or on a surrounding <code class="literal">&lt;s:div&gt;</code> or <code class="literal">&lt;s:span&gt;</code> control.
+	</div><div class="para">
+		Now for something more complex. Let us say you have a <code class="literal">h:dataTable</code> control on a page listing records for which you may or may not wish to render action links depending on the user's privileges. The <code class="literal">s:hasPermission</code> EL function allows us to pass in an object parameter which can be used to determine whether the user has the requested permission for that object or not. Here is how a dataTable with secured links might look:
+	</div><pre class="programlisting">&lt;h:dataTable value="#{clients}" var="cl"&gt;
+    &lt;h:column&gt;
+        &lt;f:facet name="header"&gt;Name&lt;/f:facet&gt;
+        #{cl.name}
+    &lt;/h:column&gt;
+    &lt;h:column&gt;
+        &lt;f:facet name="header"&gt;City&lt;/f:facet&gt;
+        #{cl.city}
+    &lt;/h:column&gt;   
+    &lt;h:column&gt;
+        &lt;f:facet name="header"&gt;Action&lt;/f:facet&gt;
+        &lt;s:link value="Modify Client" action="#{clientAction.modify}"
+                rendered="#{s:hasPermission('client','modify',cl)"/&gt;
+        &lt;s:link value="Delete Client" action="#{clientAction.delete}"
+                rendered="#{s:hasPermission('client','delete',cl)"/&gt;
+    &lt;/h:column&gt;
+&lt;/h:dataTable&gt;
+</pre></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Securing_components-Inline_restrictions.html"><strong>Prev</strong>12.5.2.2. Inline restrictions</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Authorization-Securing_pages.html"><strong>Next</strong>12.5.4. Securing pages</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Basic_Text_Elements-panchor.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Basic_Text_Elements-panchor.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Basic_Text_Elements-panchor.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>15.3.6. p:anchor</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-iText_PDF_generation-Basic_Text_Elements.html" title="15.3. Basic Text Elements" /><link rel="prev" href="Seam_Reference_Guide-Basic_Text_Elements-pimage.html" title="15.3.5. p:image" /><link rel="next" href="Seam_Reference_Guide-iText_PDF_generation-Headers_and_Footers.html" title="15.4. Headers and Footers" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a clas!
 s="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Basic_Text_Elements-pimage.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-iText_PDF_generation-Headers_and_Footers.html"><strong>Next</strong></a></li></ul><div class="section" title="15.3.6. p:anchor"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Basic_Text_Elements-panchor">15.3.6. p:anchor</h3></div></div></div><div class="para">
+				<code class="literal">p:anchor</code> defines clickable links from a document. It supports the following attributes:
+			</div><div class="variablelist"><dl><dt><span class="term"><code class="literal">name</code></span></dt><dd><div class="para">
+							The name of an in-document anchor destination.
+						</div></dd><dt><span class="term"><code class="literal">reference</code></span></dt><dd><div class="para">
+							The destination the link refers to. Links to other points in the document should begin with a <code class="code">#</code>. For example, <code class="code">#link1</code> to refer to an anchor postion with a <code class="literal">name</code> of <code class="literal">link1</code>. Links may also be a full URL to point to a resource outside of the document.
+						</div></dd></dl></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Basic_Text_Elements-pimage.html"><strong>Prev</strong>15.3.5. p:image</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-iText_PDF_generation-Headers_and_Footers.html"><strong>Next</strong>15.4. Headers and Footers</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Basic_Text_Elements-pfont.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Basic_Text_Elements-pfont.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Basic_Text_Elements-pfont.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>15.3.3. p:font</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-iText_PDF_generation-Basic_Text_Elements.html" title="15.3. Basic Text Elements" /><link rel="prev" href="Seam_Reference_Guide-Basic_Text_Elements-ptext.html" title="15.3.2. p:text" /><link rel="next" href="Seam_Reference_Guide-Basic_Text_Elements-pnewPage.html" title="15.3.4. p:newPage" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://w!
 ww.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Basic_Text_Elements-ptext.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Basic_Text_Elements-pnewPage.html"><strong>Next</strong></a></li></ul><div class="section" title="15.3.3. p:font"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Basic_Text_Elements-pfont">15.3.3. p:font</h3></div></div></div><div class="para">
+				Font declarations have no direct
+			</div><div class="variablelist"><dl><dt><span class="term"><code class="literal">familyName</code></span></dt><dd><div class="para">
+							The font family. One of: <code class="literal">COURIER</code>, <code class="literal">HELVETICA</code>, <code class="literal">TIMES-ROMAN</code>, <code class="literal">SYMBOL</code> or <code class="literal">ZAPFDINGBATS</code>.
+						</div></dd><dt><span class="term"><code class="literal">size</code></span></dt><dd><div class="para">
+							The point size of the font.
+						</div></dd><dt><span class="term"><code class="literal">style</code></span></dt><dd><div class="para">
+							The font styles. Any combination of : <code class="literal">NORMAL</code>, <code class="literal">BOLD</code>, <code class="literal">ITALIC</code>, <code class="literal">OBLIQUE</code>, <code class="literal">UNDERLINE</code>, <code class="literal">LINE-THROUGH</code>
+						</div></dd></dl></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Basic_Text_Elements-ptext.html"><strong>Prev</strong>15.3.2. p:text</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Basic_Text_Elements-pnewPage.html"><strong>Next</strong>15.3.4. p:newPage</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Basic_Text_Elements-pimage.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Basic_Text_Elements-pimage.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Basic_Text_Elements-pimage.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>15.3.5. p:image</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-iText_PDF_generation-Basic_Text_Elements.html" title="15.3. Basic Text Elements" /><link rel="prev" href="Seam_Reference_Guide-Basic_Text_Elements-pnewPage.html" title="15.3.4. p:newPage" /><link rel="next" href="Seam_Reference_Guide-Basic_Text_Elements-panchor.html" title="15.3.6. p:anchor" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="htt!
 p://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Basic_Text_Elements-pnewPage.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Basic_Text_Elements-panchor.html"><strong>Next</strong></a></li></ul><div class="section" title="15.3.5. p:image"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Basic_Text_Elements-pimage">15.3.5. p:image</h3></div></div></div><div class="para">
+				<code class="literal">p:image</code> inserts an image into the document. Images can be be loaded from the classpath or from the web application context using the <code class="literal">resource</code> attribute.
+			</div><pre class="programlisting">&lt;p:image resource="/jboss.jpg" /&gt;
+</pre><div class="para">
+				Resources can also be dynamically generated by application code. The <code class="literal">imageData</code> attribute can specify a value binding expression whose value is a <code class="literal">java.awt.Image</code> object.
+			</div><pre class="programlisting">&lt;p:image imageData="#{images.chart}" /&gt;
+</pre><div class="variablelist"><dl><dt><span class="term"><code class="literal">resource</code></span></dt><dd><div class="para">
+							The location of the image resource to be included. Resources should be relative to the document root of the web application.
+						</div></dd><dt><span class="term"><code class="literal">imageData</code></span></dt><dd><div class="para">
+							A method expression binding to an application-generated image.
+						</div></dd><dt><span class="term"><code class="literal">rotation</code></span></dt><dd><div class="para">
+							The rotation of the image in degrees.
+						</div></dd><dt><span class="term"><code class="literal">height</code></span></dt><dd><div class="para">
+							The height of the image.
+						</div></dd><dt><span class="term"><code class="literal">width</code></span></dt><dd><div class="para">
+							The width of the image.
+						</div></dd><dt><span class="term"><code class="literal">alignment</code></span></dt><dd><div class="para">
+							The alignment of the image. (see <a class="xref" href="Seam_Reference_Guide-Document_Constants-Alignment_Values.html" title="15.8.2. Alignment Values">Section 15.8.2, “Alignment Values”</a> for possible values)
+						</div></dd><dt><span class="term"><code class="literal">alt</code></span></dt><dd><div class="para">
+							Alternative text representation for the image.
+						</div></dd><dt><span class="term"><code class="literal">indentationLeft</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">indentationRight</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">spacingBefore</code></span></dt><dd><div class="para">
+							The blank space to be inserted before the element.
+						</div></dd><dt><span class="term"><code class="literal">spacingAfter</code></span></dt><dd><div class="para">
+							The blank space to be inserted after the element.
+						</div></dd><dt><span class="term"><code class="literal">widthPercentage</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">initialRotation</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">dpi</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">scalePercent</code></span></dt><dd><div class="para">
+							The scaling factor (as a percentage) to use for the image. This can be expressed as a single percentage value or as two percentage values representing separate x and y scaling percentages.
+						</div></dd><dt><span class="term"><code class="literal">wrap</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">underlying</code></span></dt><dd><div class="para">
+							​
+						</div></dd></dl></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Basic_Text_Elements-pnewPage.html"><strong>Prev</strong>15.3.4. p:newPage</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Basic_Text_Elements-panchor.html"><strong>Next</strong>15.3.6. p:anchor</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Basic_Text_Elements-pnewPage.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Basic_Text_Elements-pnewPage.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Basic_Text_Elements-pnewPage.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>15.3.4. p:newPage</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-iText_PDF_generation-Basic_Text_Elements.html" title="15.3. Basic Text Elements" /><link rel="prev" href="Seam_Reference_Guide-Basic_Text_Elements-pfont.html" title="15.3.3. p:font" /><link rel="next" href="Seam_Reference_Guide-Basic_Text_Elements-pimage.html" title="15.3.5. p:image" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://ww!
 w.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Basic_Text_Elements-pfont.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Basic_Text_Elements-pimage.html"><strong>Next</strong></a></li></ul><div class="section" title="15.3.4. p:newPage"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Basic_Text_Elements-pnewPage">15.3.4. p:newPage</h3></div></div></div><div class="para">
+				<code class="literal">p:newPage</code> inserts a page break.
+			</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Basic_Text_Elements-pfont.html"><strong>Prev</strong>15.3.3. p:font</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Basic_Text_Elements-pimage.html"><strong>Next</strong>15.3.5. p:image</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Basic_Text_Elements-ptext.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Basic_Text_Elements-ptext.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Basic_Text_Elements-ptext.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>15.3.2. p:text</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-iText_PDF_generation-Basic_Text_Elements.html" title="15.3. Basic Text Elements" /><link rel="prev" href="Seam_Reference_Guide-iText_PDF_generation-Basic_Text_Elements.html" title="15.3. Basic Text Elements" /><link rel="next" href="Seam_Reference_Guide-Basic_Text_Elements-pfont.html" title="15.3.3. p:font" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="r!
 ight" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-iText_PDF_generation-Basic_Text_Elements.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Basic_Text_Elements-pfont.html"><strong>Next</strong></a></li></ul><div class="section" title="15.3.2. p:text"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Basic_Text_Elements-ptext">15.3.2. p:text</h3></div></div></div><div class="para">
+				The <code class="literal">text</code> tag allows text fragments to be produced from application data using normal JSF converter mechanisms. It is very similar to the <code class="literal">outputText</code> tag used when rendering HTML documents. Here is an example:
+			</div><pre class="programlisting">
+&lt;p:paragraph&gt;
+    The item costs &lt;p:text value="#{product.price}"&gt;
+        &lt;f:convertNumber type="currency" currencySymbol="$"/&gt;
+    &lt;/p:text&gt;
+&lt;/p:paragraph&gt;
+</pre><div class="variablelist"><dl><dt><span class="term"><code class="literal">value</code></span></dt><dd><div class="para">
+							The value to be displayed. This will typically be a value binding expression.
+						</div></dd></dl></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-iText_PDF_generation-Basic_Text_Elements.html"><strong>Prev</strong>15.3. Basic Text Elements</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Basic_Text_Elements-pfont.html"><strong>Next</strong>15.3.3. p:font</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-CRUD_application_generator-Creating_a_Hibernate_Console_configuration.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-CRUD_application_generator-Creating_a_Hibernate_Console_configuration.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-CRUD_application_generator-Creating_a_Hibernate_Console_configuration.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>27.2.2. Creating a Hibernate Console configuration</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Seam_tools-CRUD_application_generator.html" title="27.2. CRUD-application generator" /><link rel="prev" href="Seam_Reference_Guide-Seam_tools-CRUD_application_generator.html" title="27.2. CRUD-application generator" /><link rel="next" href="Seam_Reference_Guide-CRUD_application_generator-Reverse_engineering_and_code_generation.html" title="27.2.3. Reverse engineering and code generation" /></head><body class=""><p id="title"><a class="left" !
 href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_tools-CRUD_application_generator.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-CRUD_application_generator-Reverse_engineering_and_code_generation.html"><strong>Next</strong></a></li></ul><div class="section" title="27.2.2. Creating a Hibernate Console configuration"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-CRUD_application_generator-Creating_a_Hibernate_Console_configuration">27.2.2. Creating a Hibernate Console configuration</h3></div></div></div><div class="para">
+				A Console Configuration describes to the Hibernate plugin which configuration files should be used to configure hibernate, including which classpath is needed to load the POJO's, JDBC drivers etc. It is required to make usage of query prototyping, reverse engineering and code generation. You can have multiple named console configurations. Normally you would just need one per project, but more (or less) is definitly possible.
+			</div><div class="para">
+				You create a console configuration by running the Console Configuration wizard, shown in the following screenshot. The same wizard will also be used if you are coming from the <code class="filename">hibernate.cfg.xml</code> wizard and had enabled <code class="literal">Create Console Configuration</code>.
+			</div><div class="mediaobject" id="Seam_Reference_Guide-Creating_a_Hibernate_Console_configuration-Creating_a_Hibernate_Console_configuration"><img src="images/consolecfgwizard.png" width="444" /><div class="caption">Creating a Hibernate Console configuration</div></div><div class="para">
+				The following table describes the relevant settings. The wizard can automatically detect default values for most of these if you started the Wizard with the relevant java project selected
+			</div><div class="table" id="Seam_Reference_Guide-Creating_a_Hibernate_Console_configuration-Hibernate_Console_Configuration_Parameters"><div class="table-contents"><table summary="Hibernate Console Configuration Parameters" border="1"><colgroup><col width="20%" /><col width="60%" /><col width="20%" /></colgroup><thead><tr><th align="center">
+								<div class="para">
+									Parameter
+								</div>
+							</th><th align="center">
+								<div class="para">
+									Description
+								</div>
+							</th><th align="center">
+								<div class="para">
+									Auto detected value
+								</div>
+							</th></tr></thead><tbody><tr><td>
+								<div class="para">
+									Name
+								</div>
+							</td><td>
+								<div class="para">
+									The unique name of the configuration
+								</div>
+							</td><td>
+								<div class="para">
+									Name of the selected project
+								</div>
+							</td></tr><tr><td>
+								<div class="para">
+									Property file
+								</div>
+							</td><td>
+								<div class="para">
+									Path to a hibernate.properties file
+								</div>
+							</td><td>
+								<div class="para">
+									First hibernate.properties file found in the selected project
+								</div>
+							</td></tr><tr><td>
+								<div class="para">
+									Configuration file
+								</div>
+							</td><td>
+								<div class="para">
+									Path to a hibernate.cfg.xml file
+								</div>
+							</td><td>
+								<div class="para">
+									First hibernate.cfg.xml file found in the selected project
+								</div>
+							</td></tr><tr><td>
+								<div class="para">
+									Enable Hibernate ejb3/annotations
+								</div>
+							</td><td>
+								<div class="para">
+									Selecting this option enables usage of annotated classes. <code class="filename">hbm.xml</code> files are of course still possible to use too. This feature requires running the Eclipse IDE with a JDK 5 runtime, otherwise you will get classloading and/or version errors.
+								</div>
+							</td><td>
+								<div class="para">
+									Not enabled
+								</div>
+							</td></tr><tr><td>
+								<div class="para">
+									Mapping files
+								</div>
+							</td><td>
+								<div class="para">
+									List of additional mapping files that should be loaded. Since a <code class="filename">hibernate.cfg.xml</code> can also contain mappings, if these a duplicated here, you will get <span class="errorname">Duplicate mapping</span> errors when using the console configuration.
+								</div>
+							</td><td>
+								<div class="para">
+									If no <code class="filename">hibernate.cfg.xml</code> file is found, all hbm.xml files found in the selected project
+								</div>
+							</td></tr><tr><td>
+								<div class="para">
+									Classpath
+								</div>
+							</td><td>
+								<div class="para">
+									The classpath for loading POJO and JDBC drivers. Do not add Hibernate core libraries or dependencies, they are already included. If you get ClassNotFound errors then check this list for possible missing or redundant directories/jars.
+								</div>
+							</td><td>
+								<div class="para">
+									The default build output directory and any JARs with a class implementing java.sql.Driver in the selected project
+								</div>
+							</td></tr></tbody></table></div><h6>Table 27.1. Hibernate Console Configuration Parameters</h6></div><br class="table-break" /><div class="para">
+				Clicking <code class="literal">Finish</code> creates the configuration and shows it in the <code class="literal">Hibernate Configurations</code> view
+			</div><div class="mediaobject" align="center" id="Seam_Reference_Guide-Creating_a_Hibernate_Console_configuration-Console_overview"><img src="images/consoleoutline-before-reveng.png" align="middle" /><div class="caption">Console overview</div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_tools-CRUD_application_generator.html"><strong>Prev</strong>27.2. CRUD-application generator</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-CRUD_application_generator-Reverse_engineering_and_code_generation.html"><strong>Next</strong>27.2.3. Reverse engineering and code generation</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-CRUD_application_generator-Reverse_engineering_and_code_generation.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-CRUD_application_generator-Reverse_engineering_and_code_generation.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-CRUD_application_generator-Reverse_engineering_and_code_generation.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>27.2.3. Reverse engineering and code generation</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Seam_tools-CRUD_application_generator.html" title="27.2. CRUD-application generator" /><link rel="prev" href="Seam_Reference_Guide-CRUD_application_generator-Creating_a_Hibernate_Console_configuration.html" title="27.2.2. Creating a Hibernate Console configuration" /><link rel="next" href="Seam_Reference_Guide-Reverse_engineering_and_code_generation-Exporters.html" title="27.2.3.2. Exporters" /></head><body class=""><p id="title"><a class="left!
 " href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-CRUD_application_generator-Creating_a_Hibernate_Console_configuration.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Reverse_engineering_and_code_generation-Exporters.html"><strong>Next</strong></a></li></ul><div class="section" title="27.2.3. Reverse engineering and code generation"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-CRUD_application_generator-Reverse_engineering_and_code_generation">27.2.3. Reverse engineering and code generation</h3></div></div></div><div class="para">
+				A very simple <span class="emphasis"><em>click-and-generate</em></span> reverse engineering and code generation facility is available. It is this facility that allows you to generate the skeleton for a full Seam CRUD application.
+			</div><div class="para">
+				To start working with this process, start the <code class="literal">Hibernate Code Generation</code> which is available in the toolbar via the Hibernate icon or via the <code class="literal">Run/Hibernate Code Generation</code> menu item.
+			</div><div class="section" title="27.2.3.1. Code Generation Launcher"><div class="titlepage"><div><div><h4 class="title" id="Seam_Reference_Guide-Reverse_engineering_and_code_generation-Code_Generation_Launcher">27.2.3.1. Code Generation Launcher</h4></div></div></div><div class="para">
+					When you click on <code class="literal">Hibernate Code Generation</code> the standard Eclipse launcher dialog will appear. In this dialog you can create, edit and delete named Hibernate code generation <span class="emphasis"><em>launchers</em></span>.
+				</div><div class="mediaobject"><img src="images/codegendropdown.png" /></div><div class="para">
+					The dialog has the standard tabs <code class="literal">Refresh</code> and <code class="literal">Common</code> that can be used to configure which directories should be automatically refreshed and various general settings launchers, such as saving them in a project for sharing the launcher within a team.
+				</div><div class="mediaobject"><img src="images/codegenmaintab.png" width="444" /></div><div class="para">
+					The first time you create a code generation launcher you should give it a meaningfull name, otherwise the default prefix <code class="literal">New_Generation</code> will be used.
+				</div><div class="note"><h2>Note</h2><div class="para">
+						he <code class="literal">At least one exporter option must be selected</code> is just a warning stating that for this launch to work you need to select an exporter on the Exporter tab. When an exporter has been selected the warning will disappear.
+					</div></div><div class="para">
+					On the <code class="literal">Main</code> tab you the following fields:
+				</div><div class="table" id="Seam_Reference_Guide-Code_Generation_Launcher-Code_generation_Main_tab_fields"><div class="table-contents"><table summary="Code generation &quot;Main&quot; tab fields" border="1"><colgroup><col width="25%" /><col width="75%" /></colgroup><thead><tr><th align="center">
+									<div class="para">
+										Field
+									</div>
+								</th><th align="center">
+									<div class="para">
+										Description
+									</div>
+								</th></tr></thead><tbody><tr><td>
+									<div class="para">
+										Console Configuration
+									</div>
+								</td><td>
+									<div class="para">
+										The name of the console configuration which should be used when code generating.
+									</div>
+								</td></tr><tr><td>
+									<div class="para">
+										Output directory
+									</div>
+								</td><td>
+									<div class="para">
+										Path to a directory into where all output will be written by default. Be aware that existing files will be overwritten, so be sure to specify the correct directory.
+									</div>
+								</td></tr><tr><td>
+									<div class="para">
+										Reverse engineer from JDBC Connection
+									</div>
+								</td><td>
+									<div class="para">
+										If enabled the tools will reverse engineer the database available via the connection information in the selected Hibernate Console Configuration and generate code based on the database schema. If not enabled the code generation will just be based on the mappings already specified in the Hibernate Console configuration.
+									</div>
+								</td></tr><tr><td>
+									<div class="para">
+										Package
+									</div>
+								</td><td>
+									<div class="para">
+										The package name here is used as the default package name for any entities found when reverse engineering.
+									</div>
+								</td></tr><tr><td>
+									<div class="para">
+										reveng.xml
+									</div>
+								</td><td>
+									<div class="para">
+										Path to a reveng.xml file. A reveng.xml file allows you to control certain aspects of the reverse engineering. For example, how jdbc types are mapped to hibernate types and especially important which tables are included/excluded from the process. Clicking "setup" allows you to select an existing reveng.xml file or create a new one..
+									</div>
+								</td></tr><tr><td>
+									<div class="para">
+										reveng. strategy
+									</div>
+								</td><td>
+									<div class="para">
+										If <code class="filename">reveng.xml</code> does not provide enough customization you can provide your own implementation of an ReverseEngineeringStrategy. The class need to be in the claspath of the Console Configuration, otherwise you will get class not found exceptions.
+									</div>
+								</td></tr><tr><td>
+									<div class="para">
+										Generate basic typed composite ids
+									</div>
+								</td><td>
+									<div class="para">
+										This field should always be enabled when generating the Seam CRUD application. For a table that has a multi-colum primary key, a &lt;composite-id&gt; mapping will always be created. If this option is enabled and there are matching foreign-keys, each key column is still considered a basic scalar (string, long, etc.) instead of a reference to an entity. If you disable this option, a &lt;key-many-to-one&gt; mapping with be generated instead. Note: a &lt;many-to-one&gt; property is still created, but is simply marked as non-updatable and non-insertable.
+									</div>
+								</td></tr><tr><td>
+									<div class="para">
+										Use custom templates
+									</div>
+								</td><td>
+									<div class="para">
+										If enabled, the Template directory will be searched first when looking up the velocity templates, allowing you to redefine how the individual templates process the hibernate mapping model.
+									</div>
+								</td></tr><tr><td>
+									<div class="para">
+										Template directory
+									</div>
+								</td><td>
+									<div class="para">
+										A path to a directory with custom velocity templates.
+									</div>
+								</td></tr></tbody></table></div><h6>Table 27.2. Code generation "Main" tab fields</h6></div><br class="table-break" /></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-CRUD_application_generator-Creating_a_Hibernate_Console_configuration.html"><strong>Prev</strong>27.2.2. Creating a Hibernate Console configuration</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Reverse_engineering_and_code_generation-Exporters.html"><strong>Next</strong>27.2.3.2. Exporters</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Chapters_and_Sections-ptitle.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Chapters_and_Sections-ptitle.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Chapters_and_Sections-ptitle.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>15.5.2. p:title</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-iText_PDF_generation-Chapters_and_Sections.html" title="15.5. Chapters and Sections" /><link rel="prev" href="Seam_Reference_Guide-iText_PDF_generation-Chapters_and_Sections.html" title="15.5. Chapters and Sections" /><link rel="next" href="Seam_Reference_Guide-iText_PDF_generation-Lists.html" title="15.6. Lists" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a c!
 lass="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-iText_PDF_generation-Chapters_and_Sections.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-iText_PDF_generation-Lists.html"><strong>Next</strong></a></li></ul><div class="section" title="15.5.2. p:title"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Chapters_and_Sections-ptitle">15.5.2. p:title</h3></div></div></div><div class="para">
+				Any chapter or section can contain a <code class="literal">p:title</code>. The title will be displayed next to the chapter/section number. The body of the title may contain raw text or may be a <code class="literal">p:paragraph</code>.
+			</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-iText_PDF_generation-Chapters_and_Sections.html"><strong>Prev</strong>15.5. Chapters and Sections</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-iText_PDF_generation-Lists.html"><strong>Next</strong>15.6. Lists</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Clickable_lists_in_Seam_the_messages_example-How_it_works.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Clickable_lists_in_Seam_the_messages_example-How_it_works.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Clickable_lists_in_Seam_the_messages_example-How_it_works.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>2.3.2. How it works</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Seam_Tutorial-Clickable_lists_in_Seam_the_messages_example.html" title="2.3. Clickable lists in Seam: the messages example" /><link rel="prev" href="Seam_Reference_Guide-Seam_Tutorial-Clickable_lists_in_Seam_the_messages_example.html" title="2.3. Clickable lists in Seam: the messages example" /><link rel="next" href="Seam_Reference_Guide-Seam_Tutorial-Seam_and_jBPM_the_todo_list_example.html" title="2.4. Seam and jBPM: the todo list example" /></head><body class=""><p id=!
 "title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_Tutorial-Clickable_lists_in_Seam_the_messages_example.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_Tutorial-Seam_and_jBPM_the_todo_list_example.html"><strong>Next</strong></a></li></ul><div class="section" title="2.3.2. How it works"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Clickable_lists_in_Seam_the_messages_example-How_it_works">2.3.2. How it works</h3></div></div></div><div class="para">
+				The first time we navigate to the <code class="literal">messages.jsp</code> page, whether by a JSF postback (faces request) or a direct browser GET request (non-faces request), the page will try to resolve the <code class="literal">messageList</code> context variable. Since this context variable is not initialized, Seam will call the factory method <code class="literal">findMessages()</code>, which performs a query against the database and results in a <code class="literal">DataModel</code> being outjected. This <code class="literal">DataModel</code> provides the row data needed for rendering the <code class="literal">&lt;h:dataTable&gt;</code>.
+			</div><div class="para">
+				When the user clicks the <code class="literal">&lt;h:commandLink&gt;</code>, JSF calls the <code class="literal">select()</code> action listener. Seam intercepts this call and injects the selected row data into the <code class="literal">message</code> attribute of the <code class="literal">messageManager</code> component. The action listener fires, marking the selected <code class="literal">Message</code> as read. At the end of the call, Seam outjects the selected <code class="literal">Message</code> to the context variable named <code class="literal">message</code>. Next, the EJB container commits the transaction, and the change to the <code class="literal">Message</code> is flushed to the database. Finally, the page is re-rendered, redisplaying the message list, and displaying the selected message below it.
+			</div><div class="para">
+				If the user clicks the <code class="literal">&lt;h:commandButton&gt;</code>, JSF calls the <code class="literal">delete()</code> action listener. Seam intercepts this call and injects the selected row data into the <code class="literal">message</code> attribute of the <code class="literal">messageList</code> component. The action listener fires, removing the selected <code class="literal">Message</code> from the list, and also calling <code class="literal">remove()</code> on the <code class="literal">EntityManager</code>. At the end of the call, Seam refreshes the <code class="literal">messageList</code> context variable and clears the context variable named <code class="literal">message</code>. The EJB container commits the transaction, and deletes the <code class="literal">Message</code> from the database. Finally, the page is re-rendered, redisplaying the message list.
+			</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_Tutorial-Clickable_lists_in_Seam_the_messages_example.html"><strong>Prev</strong>2.3. Clickable lists in Seam: the messages example</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_Tutorial-Seam_and_jBPM_the_todo_list_example.html"><strong>Next</strong>2.4. Seam and jBPM: the todo list example</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Collections-Maps.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Collections-Maps.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Collections-Maps.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>19.6.5.2. Maps</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Working_with_Data_types-Collections.html" title="19.6.5. Collections" /><link rel="prev" href="Seam_Reference_Guide-Working_with_Data_types-Collections.html" title="19.6.5. Collections" /><link rel="next" href="Seam_Reference_Guide-Remoting-Debugging.html" title="19.7. Debugging" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss!
 .com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Working_with_Data_types-Collections.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Remoting-Debugging.html"><strong>Next</strong></a></li></ul><div class="sect3" title="19.6.5.2. Maps"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Collections-Maps" class="title">Maps</h1></div></div></div><div class="para">
+		As there is no native support for Maps within Javascript, a simple Map implementation is provided with the Seam Remoting framework. To create a Map which can be used as a parameter to a remote call, create a new <code class="literal">Seam.Remoting.Map</code> object:
+	</div><pre class="programlisting">
+  var map = new Seam.Remoting.Map();
+</pre><div class="para">
+		This Javascript implementation provides basic methods for working with Maps: <code class="literal">size()</code>, <code class="literal">isEmpty()</code>, <code class="literal">keySet()</code>, <code class="literal">values()</code>, <code class="literal">get(key)</code>, <code class="literal">put(key, value)</code>, <code class="literal">remove(key)</code> and <code class="literal">contains(key)</code>. Each of these methods are equivalent to their Java counterpart. Where the method returns a collection, such as <code class="literal">keySet()</code> and <code class="literal">values()</code>, a Javascript Array object will be returned that contains the key or value objects (respectively).
+	</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Working_with_Data_types-Collections.html"><strong>Prev</strong>19.6.5. Collections</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Remoting-Debugging.html"><strong>Next</strong>19.7. Debugging</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_SFSB_and_Session_Timeouts_in_JBoss_AS.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_SFSB_and_Session_Timeouts_in_JBoss_AS.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_SFSB_and_Session_Timeouts_in_JBoss_AS.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>21.8. Configuring SFSB and Session Timeouts in JBoss AS</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications.html" title="Chapter 21. Configuring Seam and packaging Seam applications" /><link rel="prev" href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_a_Portal.html" title="21.7. Configuring Seam in a Portal" /><link rel="next" href="Seam_Reference_Guide-Seam_annotations.html" title="Chapter 22. Seam annotations" /></head><body class=""><p id="titl!
 e"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_a_Portal.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_annotations.html"><strong>Next</strong></a></li></ul><div class="sect1" title="21.8. Configuring SFSB and Session Timeouts in JBoss AS"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_SFSB_and_Session_Timeouts_in_JBoss_AS" class="title">Configuring SFSB and Session Timeouts in JBoss AS</h1></div></div></div><div class="para">
+		It is very important that the timeout for Stateful Session Beans is set higher than the timeout for HTTP Sessions, otherwise SFSB's may time out before the user's HTTP session has ended. JBoss Application Server has a default session bean timeout of 30 minutes, which is configured in <code class="literal">server/default/conf/standardjboss.xml</code> (replace <span class="emphasis"><em>default</em></span> with your own configuration).
+	</div><div class="para">
+		The default SFSB timeout can be adjusted by modifying the value of <code class="literal">max-bean-life</code> in the <code class="literal">LRUStatefulContextCachePolicy</code> cache configuration:
+	</div><pre class="programlisting">
+      &lt;container-cache-conf&gt;
+        &lt;cache-policy&gt;org.jboss.ejb.plugins.LRUStatefulContextCachePolicy&lt;/cache-policy&gt;
+        &lt;cache-policy-conf&gt;
+          &lt;min-capacity&gt;50&lt;/min-capacity&gt;
+          &lt;max-capacity&gt;1000000&lt;/max-capacity&gt;
+          &lt;remover-period&gt;1800&lt;/remover-period&gt;
+
+          &lt;!-- SFSB timeout in seconds; 1800 seconds == 30 minutes --&gt;
+          &lt;max-bean-life&gt;1800&lt;/max-bean-life&gt;  
+          
+          &lt;overager-period&gt;300&lt;/overager-period&gt;
+          &lt;max-bean-age&gt;600&lt;/max-bean-age&gt;
+          &lt;resizer-period&gt;400&lt;/resizer-period&gt;
+          &lt;max-cache-miss-period&gt;60&lt;/max-cache-miss-period&gt;
+          &lt;min-cache-miss-period&gt;1&lt;/min-cache-miss-period&gt;
+          &lt;cache-load-factor&gt;0.75&lt;/cache-load-factor&gt;
+        &lt;/cache-policy-conf&gt;
+      &lt;/container-cache-conf&gt;
+</pre><div class="para">
+		The default HTTP session timeout can be modified in <code class="literal">server/default/deploy/jbossweb-tomcat55.sar/conf/web.xml</code> for JBoss 4.0.x, or in <code class="literal">server/default/deploy/jboss-web.deployer/conf/web.xml</code> for JBoss 4.2.x. The following entry in this file controls the default session timeout for all web applications:
+	</div><pre class="programlisting">
+   &lt;session-config&gt;
+      &lt;!-- HTTP Session timeout, in minutes --&gt;
+      &lt;session-timeout&gt;30&lt;/session-timeout&gt;
+   &lt;/session-config&gt;
+</pre><div class="para">
+		To override this value for your own application, simply include this entry in your application's own <code class="literal">web.xml</code>.
+	</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_a_Portal.html"><strong>Prev</strong>21.7. Configuring Seam in a Portal</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_annotations.html"><strong>Next</strong>Chapter 22. Seam annotations</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_J2EE.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_J2EE.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_J2EE.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>21.4. Configuring Seam in J2EE</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications.html" title="Chapter 21. Configuring Seam and packaging Seam applications" /><link rel="prev" href="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container-Packaging.html" title="21.3.3. Packaging" /><link rel="next" href="Seam_Reference_Guide-Configuring_Seam_in_J2EE-Boostrapping_JPA_in_Seam.html" title="21.4.2. Boostrapping JPA in Seam" /></head><body class=""><p id="title"><a!
  class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container-Packaging.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Configuring_Seam_in_J2EE-Boostrapping_JPA_in_Seam.html"><strong>Next</strong></a></li></ul><div class="sect1" title="21.4. Configuring Seam in J2EE"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_J2EE" class="title">Configuring Seam in J2EE</h1></div></div></div><div class="para">
+		Seam is useful even if you are not yet ready to take the plunge into EJB 3.0. In this case you would use Hibernate3 or JPA instead of EJB 3.0 persistence, and plain JavaBeans instead of session beans. You will miss out on some of the nice features of session beans but it will be very easy to migrate to EJB 3.0 when you are ready and, in the meantime, you will be able to take advantage of Seam's unique declarative state management architecture.
+	</div><div class="mediaobject" align="center"><img src="images/hibernate-ee.png" align="middle" /></div><div class="para">
+		Seam JavaBean components do not provide declarative transaction demarcation like session beans do. You <span class="emphasis"><em>could</em></span> manage your transactions manually using the JTA <code class="literal">UserTransaction</code> (you could even implement your own declarative transaction management in a Seam interceptor). But most applications will use Seam managed transactions when using Hibernate with JavaBeans. Follow the instructions in the persistence chapter to install <code class="literal">TransactionalSeamPhaseListener</code>.
+	</div><div class="para">
+		The Seam distribution includes a version of the booking example application that uses Hibernate3 and JavaBeans instead of EJB3, and another version that uses JPA and JavaBeans. These example applications are ready to deploy into any J2EE application server.
+	</div><div class="sect2" title="21.4.1. Boostrapping Hibernate in Seam"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Configuring_Seam_in_J2EE-Boostrapping_Hibernate_in_Seam" class="title">Boostrapping Hibernate in Seam</h1></div></div></div><div class="para">
+		Seam will bootstrap a Hibernate <code class="literal">SessionFactory</code> from your <code class="literal">hibernate.cfg.xml</code> file if you install a built-in component:
+	</div><pre class="programlisting">&lt;core:hibernate-session-factory name="hibernateSessionFactory"/&gt;
+</pre><div class="para">
+		You will also need to configure a <span class="emphasis"><em>managed session</em></span> if you want a Seam managed Hibernate <code class="literal">Session</code> to be available via injection.
+	</div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container-Packaging.html"><strong>Prev</strong>21.3.3. Packaging</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Configuring_Seam_in_J2EE-Boostrapping_JPA_in_Seam.html"><strong>Next</strong>21.4.2. Boostrapping JPA in Seam</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_EE_5.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_EE_5.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_EE_5.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>21.2. Configuring Seam in Java EE 5</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications.html" title="Chapter 21. Configuring Seam and packaging Seam applications" /><link rel="prev" href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications.html" title="Chapter 21. Configuring Seam and packaging Seam applications" /><link rel="next" href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container.h!
 tml" title="21.3. Configuring Seam in Java SE, with the JBoss Embeddable EJB3 container" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container.html"><strong>Next</strong></a></li></ul><div class="sect1" title="21.2. Configuring Seam in Java EE 5"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_EE_5" class="title"!
 >Configuring Seam in Java EE 5</h1></div></div></div><div clas!
 s="media
object" align="center"><img src="images/ee5.png" align="middle" /></div><div class="para">
+		If you are running in a Java EE 5 environment, this is all the configuration required to start using Seam!
+	</div><div class="sect2" title="21.2.1. Packaging"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Configuring_Seam_in_Java_EE_5-Packaging" class="title">Packaging</h1></div></div></div><div class="para">
+		Once you have packaged all this stuff together into an EAR, the archive structure will look something like this:
+	</div><pre class="programlisting">my-application.ear/
+    jboss-seam.jar
+    el-api.jar
+    el-ri.jar
+    META-INF/
+        MANIFEST.MF
+        application.xml
+    my-application.war/
+        META-INF/
+            MANIFEST.MF
+        WEB-INF/
+            web.xml
+            components.xml
+            faces-config.xml
+            lib/
+                jsf-facelets.jar
+                jboss-seam-ui.jar
+        login.jsp
+        register.jsp
+        ...
+    my-application.jar/
+        META-INF/
+            MANIFEST.MF
+            persistence.xml
+        seam.properties
+        org/
+            jboss/
+                myapplication/
+                    User.class
+                    Login.class
+                    LoginBean.class
+                    Register.class
+                    RegisterBean.class
+                    ...
+</pre><div class="para">
+		You must include <code class="literal">jboss-seam.jar</code>, <code class="literal">el-api.jar</code> and <code class="literal">el-ri.jar</code> in the EAR classpath. Make sure you reference all of these jars from <code class="literal">application.xml</code>.
+	</div><div class="para">
+		If you want to use jBPM or Drools, you must include the needed jars in the EAR classpath. Make sure you reference all of the jars from <code class="literal">application.xml</code>.
+	</div><div class="para">
+		If you want to use facelets (our recommendation), you must include <code class="literal">jsf-facelets.jar</code> in the <code class="literal">WEB-INF/lib</code> directory of the WAR.
+	</div><div class="para">
+		If you want to use the Seam tag library (most Seam applications do), you must include <code class="literal">jboss-seam-ui.jar</code> in the <code class="literal">WEB-INF/lib</code> directory of the WAR. If you want to use the PDF or email tag libraries, you need to put <code class="literal">jboss-seam-pdf.jar</code> or <code class="literal">jboss-seam-mail.jar</code> in <code class="literal">WEB-INF/lib</code>.
+	</div><div class="para">
+		If you want to use the Seam debug page (only works for applications using facelets), you must include <code class="literal">jboss-seam-debug.jar</code> in the <code class="literal">WEB-INF/lib</code> directory of the WAR.
+	</div><div class="para">
+		Seam ships with several example applications that are deployable in any Java EE container that supports EJB 3.0.
+	</div><div class="para">
+		I really wish that was all there was to say on the topic of configuration but unfortunately we are only about a third of the way there.  Feel free to skip over the rest of this section and come back to it later.
+	</div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications.html"><strong>Prev</strong>Chapter 21. Configuring Seam and packaging Seam a...</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container.html"><strong>Next</strong>21.3. Configuring Seam in Java SE, with the JBoss...</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>21.3. Configuring Seam in Java SE, with the JBoss Embeddable EJB3 container</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications.html" title="Chapter 21. Configuring Seam and packaging Seam applications" /><link rel="prev" href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_EE_5.html" title="21.2. Configuring Seam in Java EE 5" /><link rel="next" href="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container-Config!
 uring_a_datasource_with_the_Embeddable_EJB3_container.html" title="21.3.2. Configuring a datasource with the Embeddable EJB3 container" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_EE_5.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container-Configuring_a_datasource_with_the_Embeddable_EJB3_container.html"><strong>Next</strong></a></li></ul><div class="sect1" title="21.3. Configuring Seam in Java SE, with the JBoss Embeddable EJB3 container"><div class="titlepage"><div!
 ><div><h1 id="Seam_Reference_Guide-Configuring_Seam_and_packag!
 ing_Seam
_applications-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container" class="title">Configuring Seam in Java SE, with the JBoss Embeddable EJB3 container</h1></div></div></div><div class="para">
+		The JBoss Embeddable EJB3 container lets you run EJB3 components outside the context of the Java EE 5 application server. This is especially, but not only, useful for testing.
+	</div><div class="para">
+		The Seam booking example application includes a TestNG integration test suite that runs on the Embeddable EJB3 container.
+	</div><div class="mediaobject" align="center"><img src="images/testng.png" align="middle" /></div><div class="para">
+		The booking example application may even be deployed to Tomcat.
+	</div><div class="mediaobject" align="center"><img src="images/e-ejb3.png" align="middle" /></div><div class="sect2" title="21.3.1. Installing the Embeddable EJB3 container"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container-Installing_the_Embeddable_EJB3_container" class="title">Installing the Embeddable EJB3 container</h1></div></div></div><div class="para">
+		Seam ships with a build of the Embeddable EJB3 container in the <code class="literal">embedded-ejb</code> directory. To use the Embeddable EJB3 container with Seam, add the <code class="literal">embedded-ejb/conf</code> directory, and all jars in the <code class="literal">lib</code> and <code class="literal">embedded-ejb/lib</code> directories to your classpath. Then, add the following line to <code class="literal">components.xml</code>:
+	</div><pre class="programlisting">&lt;core:ejb /&gt;
+</pre><div class="para">
+		This setting installs the built-in component named <code class="literal">org.jboss.seam.core.ejb</code>. This component is responsible for bootstrapping the EJB container when Seam is started, and shutting it down when the web application is undeployed.
+	</div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_EE_5.html"><strong>Prev</strong>21.2. Configuring Seam in Java EE 5</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container-Configuring_a_datasource_with_the_Embeddable_EJB3_container.html"><strong>Next</strong>21.3.2. Configuring a datasource with the Embedda...</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_SE_with_the_JBoss_Microcontainer.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_SE_with_the_JBoss_Microcontainer.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_SE_with_the_JBoss_Microcontainer.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>21.5. Configuring Seam in Java SE, with the JBoss Microcontainer</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications.html" title="Chapter 21. Configuring Seam and packaging Seam applications" /><link rel="prev" href="Seam_Reference_Guide-Configuring_Seam_in_J2EE-Packaging.html" title="21.4.3. Packaging" /><link rel="next" href="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Microcontainer-Packaging.html" title="21.5.2. Packaging" /></head><body class=""><p id="title"><a class=!
 "left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Configuring_Seam_in_J2EE-Packaging.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Microcontainer-Packaging.html"><strong>Next</strong></a></li></ul><div class="sect1" title="21.5. Configuring Seam in Java SE, with the JBoss Microcontainer"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_SE_with_the_JBoss_Microcontainer" class="title">Configuring Seam in Java SE, with the JBoss Microcontainer</h1></div></div></div><div class="para">
+		The Seam support for Hibernate and JPA requires JTA and a JCA datasource. If you are running in a non-EE environment like Tomcat or TestNG you can run these services, and Hibernate itself, in the JBoss Microcontainer.
+	</div><div class="para">
+		You can even deploy the Hibernate and JPA versions of the booking example in Tomcat.
+	</div><div class="mediaobject" align="center"><img src="images/hibernate-mc.png" align="middle" /></div><div class="para">
+		Seam ships with an example Microcontainer configuration in <code class="literal">microcontainer/conf/jboss-beans.xml</code> that provides all the things you need to run Seam with Hibernate in any non-EE environment. Just add the <code class="literal">microcontainer/conf</code> directory, and all jars in the <code class="literal">lib</code> and <code class="literal">microcontainer/lib</code> directories to your classpath. Refer to the documentation for the JBoss Microcontainer for more information.
+	</div><div class="sect2" title="21.5.1. Using Hibernate and the JBoss Microcontainer"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Microcontainer-Using_Hibernate_and_the_JBoss_Microcontainer" class="title">Using Hibernate and the JBoss Microcontainer</h1></div></div></div><div class="para">
+		The built-in Seam component named <code class="literal">org.jboss.seam.core.microcontainer</code> bootstraps the microcontainer. As before, we probably want to use a Seam managed session.
+	</div><pre class="programlisting">&lt;core:microcontainer/&gt;
+
+&lt;core:managed-hibernate-session name="bookingDatabase" auto-create="true"
+    session-factory-jndi-name="java:/bookingSessionFactory"/&gt;
+</pre><div class="para">
+		Where <code class="literal">java:/bookingSessionFactory</code> is the name of the Hibernate session factory specified in <code class="literal">hibernate.cfg.xml</code>.
+	</div><div class="para">
+		You will need to provide a <code class="literal">jboss-beans.xml</code> file that installs JNDI, JTA, your JCA datasource and Hibernate into the microcontainer:
+	</div><pre class="programlisting">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+
+&lt;deployment xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+            xsi:schemaLocation="urn:jboss:bean-deployer bean-deployer_1_0.xsd"
+            xmlns="urn:jboss:bean-deployer"&gt;
+
+   &lt;bean name="Naming" class="org.jnp.server.SingletonNamingServer"/&gt;
+
+   &lt;bean name="TransactionManagerFactory" 
+      class="org.jboss.seam.microcontainer.TransactionManagerFactory"/&gt;
+   &lt;bean name="TransactionManager" class="java.lang.Object"&gt;
+      &lt;constructor factoryMethod="getTransactionManager"&gt;
+         &lt;factory bean="TransactionManagerFactory"/&gt;
+      &lt;/constructor&gt;
+   &lt;/bean&gt;
+
+   &lt;bean name="bookingDatasourceFactory" class="org.jboss.seam.microcontainer.DataSourceFactory"&gt;
+      &lt;property name="driverClass"&gt;org.hsqldb.jdbcDriver&lt;/property&gt;
+      &lt;property name="connectionUrl"&gt;jdbc:hsqldb:.&lt;/property&gt;
+      &lt;property name="userName"&gt;sa&lt;/property&gt;
+      &lt;property name="jndiName"&gt;java:/hibernateDatasource&lt;/property&gt;
+      &lt;property name="minSize"&gt;0&lt;/property&gt;
+      &lt;property name="maxSize"&gt;10&lt;/property&gt;
+      &lt;property name="blockingTimeout"&gt;1000&lt;/property&gt;
+      &lt;property name="idleTimeout"&gt;100000&lt;/property&gt;
+      &lt;property name="transactionManager"&gt;&lt;inject bean="TransactionManager"/&gt;&lt;/property&gt;
+   &lt;/bean&gt;
+   &lt;bean name="bookingDatasource" class="java.lang.Object"&gt;
+      &lt;constructor factoryMethod="getDataSource"&gt;
+         &lt;factory bean="bookingDatasourceFactory"/&gt;
+      &lt;/constructor&gt;
+   &lt;/bean&gt;
+
+   &lt;bean name="bookingSessionFactoryFactory" 
+      class="org.jboss.seam.microcontainer.HibernateFactory"/&gt;
+   &lt;bean name="bookingSessionFactory" class="java.lang.Object"&gt;
+      &lt;constructor factoryMethod="getSessionFactory"&gt;
+         &lt;factory bean="bookingSessionFactoryFactory"/&gt;
+      &lt;/constructor&gt;
+      &lt;depends&gt;bookingDatasource&lt;/depends&gt;
+   &lt;/bean&gt;
+
+&lt;/deployment&gt;
+</pre></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Configuring_Seam_in_J2EE-Packaging.html"><strong>Prev</strong>21.4.3. Packaging</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Microcontainer-Packaging.html"><strong>Next</strong>21.5.2. Packaging</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_a_Portal.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_a_Portal.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_a_Portal.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>21.7. Configuring Seam in a Portal</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications.html" title="Chapter 21. Configuring Seam and packaging Seam applications" /><link rel="prev" href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_jBPM_in_Seam.html" title="21.6. Configuring jBPM in Seam" /><link rel="next" href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_SFSB_and_Session_Timeouts_in_JBoss_AS.html" title="21.8. Configu!
 ring SFSB and Session Timeouts in JBoss AS" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_jBPM_in_Seam.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_SFSB_and_Session_Timeouts_in_JBoss_AS.html"><strong>Next</strong></a></li></ul><div class="sect1" title="21.7. Configuring Seam in a Portal"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_a_Portal" class="title">Configuring Seam in a Portal</h1></div></!
 div></div><div class="para">
+		To run a Seam application as a portlet, you will need to provide certain portlet metadata (<code class="literal">portlet.xml</code>, etc) in addition to the usual Java EE metadata. See the <code class="literal">examples/portal</code> directory for an example of the booking demo preconfigured to run on JBoss Portal.
+	</div><div class="para">
+		In addition, you will need to use a portlet-specific phase listener instead of <code class="literal">SeamPhaseListener</code> or <code class="literal">TransactionalSeamPhaseListener</code>. The <code class="literal">SeamPortletPhaseListener</code> and <code class="literal">TransactionalSeamPortletPhaseListener</code> are adapted to the portlet lifecycle. I would like to offer my sincerest apologies for the name of that last class. I really could not think of anything better. Sorry.
+	</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_jBPM_in_Seam.html"><strong>Prev</strong>21.6. Configuring jBPM in Seam</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_SFSB_and_Session_Timeouts_in_JBoss_AS.html"><strong>Next</strong>21.8. Configuring SFSB and Session Timeouts in JB...</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_jBPM_in_Seam.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_jBPM_in_Seam.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_jBPM_in_Seam.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>21.6. Configuring jBPM in Seam</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications.html" title="Chapter 21. Configuring Seam and packaging Seam applications" /><link rel="prev" href="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Microcontainer-Packaging.html" title="21.5.2. Packaging" /><link rel="next" href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_a_Portal.html" title="21.7. Configuring Seam in a Portal" /></head><body class=!
 ""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Microcontainer-Packaging.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_a_Portal.html"><strong>Next</strong></a></li></ul><div class="sect1" title="21.6. Configuring jBPM in Seam"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_jBPM_in_Seam" class="title">Configuring jBPM in Seam</h1></div></div></div><div class="para">
+		Seam's jBPM integration is not installed by default, so you will need to enable jBPM by installing a built-in component. You will also need to explicitly list your process and pageflow definitions. In <code class="literal">components.xml</code>:
+	</div><pre class="programlisting">&lt;core:jbpm&gt;
+    &lt;core:pageflow-definitions&gt;
+        &lt;value&gt;createDocument.jpdl.xml&lt;/value&gt;
+        &lt;value&gt;editDocument.jpdl.xml&lt;/value&gt;
+        &lt;value&gt;approveDocument.jpdl.xml&lt;/value&gt;
+    &lt;/core:pageflow-definitions&gt;
+    &lt;core:process-definitions&gt;
+        &lt;value&gt;documentLifecycle.jpdl.xml&lt;/value&gt;
+    &lt;/core:process-definitions&gt;
+&lt;/core:jbpm&gt;
+</pre><div class="para">
+		No further special configuration is needed if you only have pageflows. If you do have business process definitions, you need to provide a jBPM configuration, and a Hibernate configuration for jBPM. The Seam DVD Store demo includes example <code class="literal">jbpm.cfg.xml</code> and <code class="literal">hibernate.cfg.xml</code> files that will work with Seam:
+	</div><pre class="programlisting">&lt;jbpm-configuration&gt;
+
+  &lt;jbpm-context&gt;
+    &lt;service name="persistence"&gt;
+       &lt;factory&gt;
+          &lt;bean class="org.jbpm.persistence.db.DbPersistenceServiceFactory"&gt;
+             &lt;field name="isTransactionEnabled"&gt;&lt;false/&gt;&lt;/field&gt;
+          &lt;/bean&gt;
+       &lt;/factory&gt;
+    &lt;/service&gt;
+    &lt;service name="message" factory="org.jbpm.msg.db.DbMessageServiceFactory" /&gt;
+    &lt;service name="scheduler" factory="org.jbpm.scheduler.db.DbSchedulerServiceFactory" /&gt;
+    &lt;service name="logging" factory="org.jbpm.logging.db.DbLoggingServiceFactory" /&gt;
+    &lt;service name="authentication" 
+       factory="org.jbpm.security.authentication.DefaultAuthenticationServiceFactory" /&gt;
+  &lt;/jbpm-context&gt;
+
+&lt;/jbpm-configuration&gt;
+</pre><div class="para">
+		The most important thing to notice here is that jBPM transaction control is disabled. Seam or EJB3 should control the JTA transactions.
+	</div><div class="sect2" title="21.6.1. Packaging"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Configuring_jBPM_in_Seam-Packaging" class="title">Packaging</h1></div></div></div><div class="para">
+		There is not yet any well-defined packaging format for jBPM configuration and process/pageflow definition files. In the Seam examples we have decided to simply package all these files into the root of the EAR. In future, we will probably design some other standard packaging format. So the EAR looks something like this:
+	</div><pre class="programlisting">my-application.ear/
+    jboss-seam.jar
+    el-api.jar
+    el-ri.jar
+    jbpm-3.1.jar
+    META-INF/
+        MANIFEST.MF
+        application.xml
+    my-application.war/
+        META-INF/
+            MANIFEST.MF
+        WEB-INF/
+            web.xml
+            components.xml
+            faces-config.xml
+            lib/
+                jsf-facelets.jar
+                jboss-seam-ui.jar
+        login.jsp
+        register.jsp
+        ...
+    my-application.jar/
+        META-INF/
+            MANIFEST.MF
+            persistence.xml
+        seam.properties
+        org/
+            jboss/
+                myapplication/
+                    User.class
+                    Login.class
+                    LoginBean.class
+                    Register.class
+                    RegisterBean.class
+                    ...
+    jbpm.cfg.xml
+    hibernate.cfg.xml
+    createDocument.jpdl.xml
+    editDocument.jpdl.xml
+    approveDocument.jpdl.xml
+    documentLifecycle.jpdl.xml
+</pre><div class="para">
+		Remember to add <code class="literal">jbpm-3.1.jar</code> to the manifest of your EJB-JAR and WAR.
+	</div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Microcontainer-Packaging.html"><strong>Prev</strong>21.5.2. Packaging</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_a_Portal.html"><strong>Next</strong>21.7. Configuring Seam in a Portal</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,160 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 21. Configuring Seam and packaging Seam applications</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="index.html" title="Seam Reference Guide CP07" /><link rel="prev" href="Seam_Reference_Guide-Spring_Framework_integration-Spring_Application_Context_as_a_Seam_Component.html" title="20.5. Spring Application Context as a Seam Component" /><link rel="next" href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_EE_5.html" title="21.2. Configuring Seam in Java EE 5" /></head><body class=""><p id="title"><a class!
 ="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Spring_Framework_integration-Spring_Application_Context_as_a_Seam_Component.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_EE_5.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="chapter" title="Chapter 21. Configuring Seam and packaging Seam applications" lang="en-US"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications">Chapter 21. Configuring Seam and packaging Seam applications</h2></div></div></div><div class="toc"><dl><dt><span cla!
 ss="sect1"><a href="Seam_Reference_Guide-Configuring_Seam_and_!
 packagin
g_Seam_applications.html#Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Basic_Seam_configuration">21.1. Basic Seam configuration</a></span></dt><dd><dl><dt><span class="sect2"><a href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications.html#Seam_Reference_Guide-Basic_Seam_configuration-Integrating_Seam_with_JSF_and_your_servlet_container">21.1.1. Integrating Seam with JSF and your servlet container</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications.html#Seam_Reference_Guide-Basic_Seam_configuration-Seam_Resource_Servlet">21.1.2. Seam Resource Servlet</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications.html#Seam_Reference_Guide-Basic_Seam_configuration-Seam_servlet_filters">21.1.3. Seam servlet filters</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Sea!
 m_applications.html#Seam_Reference_Guide-Basic_Seam_configuration-Integrating_Seam_with_your_EJB_container">21.1.4. Integrating Seam with your EJB container</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications.html#Seam_Reference_Guide-Basic_Seam_configuration-Using_facelets">21.1.5. Using facelets</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications.html#Seam_Reference_Guide-Basic_Seam_configuration-Dont_forget">21.1.6. Don't forget!</a></span></dt></dl></dd><dt><span class="sect1"><a href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_EE_5.html">21.2. Configuring Seam in Java EE 5</a></span></dt><dd><dl><dt><span class="sect2"><a href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_EE_5.html#Seam_Reference_Guide-Configuring_Seam_in_Java_EE_5-Packagi!
 ng">21.2.1. Packaging</a></span></dt></dl></dd><dt><span class!
 ="sect1"
><a href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container.html">21.3. Configuring Seam in Java SE, with the JBoss Embeddable EJB3 container</a></span></dt><dd><dl><dt><span class="sect2"><a href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container.html#Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container-Installing_the_Embeddable_EJB3_container">21.3.1. Installing the Embeddable EJB3 container</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container-Configuring_a_datasource_with_the_Embeddable_EJB3_container.html">21.3.2. Configuring a datasource with the Embeddable EJB3 container</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the!
 _JBoss_Embeddable_EJB3_container-Packaging.html">21.3.3. Packaging</a></span></dt></dl></dd><dt><span class="sect1"><a href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_J2EE.html">21.4. Configuring Seam in J2EE</a></span></dt><dd><dl><dt><span class="sect2"><a href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_J2EE.html#Seam_Reference_Guide-Configuring_Seam_in_J2EE-Boostrapping_Hibernate_in_Seam">21.4.1. Boostrapping Hibernate in Seam</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Configuring_Seam_in_J2EE-Boostrapping_JPA_in_Seam.html">21.4.2. Boostrapping JPA in Seam</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Configuring_Seam_in_J2EE-Packaging.html">21.4.3. Packaging</a></span></dt></dl></dd><dt><span class="sect1"><a href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_SE_with_the_JBoss_M!
 icrocontainer.html">21.5. Configuring Seam in Java SE, with th!
 e JBoss 
Microcontainer</a></span></dt><dd><dl><dt><span class="sect2"><a href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_SE_with_the_JBoss_Microcontainer.html#Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Microcontainer-Using_Hibernate_and_the_JBoss_Microcontainer">21.5.1. Using Hibernate and the JBoss Microcontainer</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Microcontainer-Packaging.html">21.5.2. Packaging</a></span></dt></dl></dd><dt><span class="sect1"><a href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_jBPM_in_Seam.html">21.6. Configuring jBPM in Seam</a></span></dt><dd><dl><dt><span class="sect2"><a href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_jBPM_in_Seam.html#Seam_Reference_Guide-Configuring_jBPM_in_Seam-Packaging">21.6.1. Packaging</a></span></dt></dl></dd>!
 <dt><span class="sect1"><a href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_a_Portal.html">21.7. Configuring Seam in a Portal</a></span></dt><dt><span class="sect1"><a href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_SFSB_and_Session_Timeouts_in_JBoss_AS.html">21.8. Configuring SFSB and Session Timeouts in JBoss AS</a></span></dt></dl></div><div class="para">
+		Configuration is a very boring topic and an extremely tedious pastime. Unfortunately, several lines of XML are required to integrate Seam into your JSF implementation and servlet container. There is no need to be too put off by the following sections; you will never need to type any of this stuff yourself, since you can just copy and paste from the example applications.
+	</div><div class="sect1" title="21.1. Basic Seam configuration"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Basic_Seam_configuration" class="title">Basic Seam configuration</h1></div></div></div><div class="para">
+		First, let us look at the basic configuration that is needed whenever we use Seam with JSF.
+	</div><div class="sect2" title="21.1.1. Integrating Seam with JSF and your servlet container"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Basic_Seam_configuration-Integrating_Seam_with_JSF_and_your_servlet_container" class="title">Integrating Seam with JSF and your servlet container</h1></div></div></div><div class="para">
+		Seam requires the following entry in your <code class="literal">web.xml</code> file:
+	</div><pre class="programlisting">&lt;listener&gt;
+    &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/listener-class&gt;
+&lt;/listener&gt;
+</pre><div class="para">
+		This listener is responsible for bootstrapping Seam, and for destroying session and application contexts.
+	</div><div class="para">
+		To integrate with the JSF request lifecycle, we also need a JSF <code class="literal">PhaseListener</code> registered in in the <code class="literal">faces-config.xml</code> file:
+	</div><pre class="programlisting">&lt;lifecycle&gt;
+    &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-listener&gt;
+&lt;/lifecycle&gt;
+</pre><div class="para">
+		The actual listener class here varies depending upon how you want to manage transaction demarcation (more on this below).
+	</div><div class="para">
+		If you are using Sun's JSF 1.2 reference implementation, you should also add this to <code class="literal">faces-config.xml</code>:
+	</div><pre class="programlisting">&lt;application&gt;
+    &lt;el-resolver&gt;org.jboss.seam.jsf.SeamELResolver&lt;/el-resolver&gt;
+&lt;/application&gt;
+</pre><div class="para">
+		(This line should not strictly speaking be necessary, but it works around a minor bug in the RI.)
+	</div><div class="para">
+		Some JSF implementations have a broken implementation of server-side state saving that interferes with Seam's conversation propagation. If you have problems with conversation propagation during form submissions, try switching to client-side state saving. You will need this in <code class="literal">web.xml</code>:
+	</div><pre class="programlisting">&lt;context-param&gt;
+    &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-name&gt;
+    &lt;param-value&gt;client&lt;/param-value&gt;
+&lt;/context-param&gt;
+</pre></div><div class="sect2" title="21.1.2. Seam Resource Servlet"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Basic_Seam_configuration-Seam_Resource_Servlet" class="title">Seam Resource Servlet</h1></div></div></div><div class="para">
+		The Seam Resource Servlet provides resources used by Seam Remoting, captchas (see the security chapter) and some JSF UI controls. Configuring the Seam Resource Servlet requires the following entry in <code class="literal">web.xml</code>:
+	</div><pre class="programlisting">&lt;servlet&gt;
+  &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;
+  &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-class&gt;
+&lt;/servlet&gt;
+    
+&lt;servlet-mapping&gt;
+  &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;
+  &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;
+&lt;/servlet-mapping&gt;
+</pre></div><div class="sect2" title="21.1.3. Seam servlet filters"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Basic_Seam_configuration-Seam_servlet_filters" class="title">Seam servlet filters</h1></div></div></div><div class="para">
+		Seam does not need any servlet filters for basic operation. However, there are several features which depend upon the use of filters. To make things easier for you guys, Seam lets you add and configure servlet filters just like you would configure other built-in Seam components. To take advantage of this feature, we must first install a master filter in <code class="literal">web.xml</code>:
+	</div><pre class="programlisting">&lt;filter&gt;
+    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;
+    &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-class&gt;
+&lt;/filter&gt;
+
+&lt;filter-mapping&gt;
+    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;
+    &lt;url-pattern&gt;/*&lt;/url-pattern&gt;
+&lt;/filter-mapping&gt;
+</pre><div class="para">
+		Adding the master filter enables the following built-in filters.
+	</div><div class="sect3" title="21.1.3.1. Exception handling"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam_servlet_filters-Exception_handling" class="title">Exception handling</h1></div></div></div><div class="para">
+		This filter provides the exception mapping functionality in <code class="literal">pages.xml</code> (almost all applications will need this). It also takes care of rolling back uncommitted transactions when uncaught exceptions occur. (According to the Java EE specification, the web container should do this automatically, but we have found that this behavior cannot be relied upon in all application servers. And it is certainly not required of plain servlet engines like Tomcat.)
+	</div><div class="para">
+		By default, the exception handling filter will process all requests, however this behavior may be adjusted by adding a <code class="literal">&lt;web:exception-filter&gt;</code> entry to <code class="literal">components.xml</code>, as shown in this example:
+	</div><pre class="programlisting">&lt;components xmlns="http://jboss.com/products/seam/components"
+            xmlns:core="http://jboss.com/products/seam/core"
+            xmlns:web="http://jboss.com/products/seam/web"
+            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+            xsi:schemaLocation=
+                "http://jboss.com/products/seam/core 
+                                                      http://jboss.com/products/seam/core-1.2.xsd
+                 http://jboss.com/products/seam/components 
+                                                      http://jboss.com/products/seam/components-1.2.xsd
+                 http://jboss.com/products/seam/web 
+                                                      http://jboss.com/products/seam/web-1.2.xsd"&gt;
+
+    &lt;web:exception-filter url-pattern="*.seam"/&gt;
+
+&lt;/components&gt;
+</pre><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+				<code class="literal">url-pattern</code> — Used to specify which requests are filtered, the default is all requests.
+			</div></li></ul></div></div><div class="sect3" title="21.1.3.2. Conversation propagation with redirects"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam_servlet_filters-Conversation_propagation_with_redirects" class="title">Conversation propagation with redirects</h1></div></div></div><div class="para">
+		This filter allows Seam to propagate the conversation context across browser redirects. It intercepts any browser redirects and adds a request parameter that specifies the Seam conversation identifier.
+	</div><div class="para">
+		The redirect filter will process all requests by default, but this behavior can also be adjusted in <code class="literal">components.xml</code>:
+	</div><pre class="programlisting">&lt;web:redirect-filter url-pattern="*.seam"/&gt;
+</pre><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+				<code class="literal">url-pattern</code> — Used to specify which requests are filtered, the default is all requests.
+			</div></li></ul></div></div><div class="sect3" title="21.1.3.3. Multipart form submissions"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam_servlet_filters-Multipart_form_submissions" class="title">Multipart form submissions</h1></div></div></div><div class="para">
+		This feature is necessary when using the Seam file upload JSF control. It detects multipart form requests and processes them according to the multipart/form-data specification (RFC-2388). To override the default settings, add the following entry to <code class="literal">components.xml</code>:
+	</div><pre class="programlisting">&lt;web:multipart-filter create-temp-files="true" 
+        max-request-size="1000000" 
+        url-pattern="*.seam"/&gt;
+</pre><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+				<code class="literal">create-temp-files</code> — If set to <code class="literal">true</code>, uploaded files are written to a temporary file (instead of held in memory). This may be an important consideration if large file uploads are expected. The default setting is <code class="literal">false</code>.
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">max-request-size</code> — If the size of a file upload request (determined by reading the <code class="literal">Content-Length</code> header in the request) exceeds this value, the request will be aborted. The default setting is 0 (no size limit).
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">url-pattern</code> — Used to specify which requests are filtered, the default is all requests.
+			</div></li></ul></div></div><div class="sect3" title="21.1.3.4. Character encoding"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam_servlet_filters-Character_encoding" class="title">Character encoding</h1></div></div></div><div class="para">
+		Sets the character encoding of submitted form data.
+	</div><div class="para">
+		This filter is not installed by default and requires an entry in <code class="literal">components.xml</code> to enable it:
+	</div><pre class="programlisting">&lt;web:character-encoding-filter encoding="UTF-16" 
+        override-client="true" 
+        url-pattern="*.seam"/&gt;
+</pre><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+				<code class="literal">encoding</code> — The encoding to use.
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">override-client</code> — If this is set to <code class="literal">true</code>, the request encoding will be set to whatever is specified by <code class="literal">encoding</code> no matter whether the request already specifies an encoding or not. If set to <code class="literal">false</code>, the request encoding will only be set if the request does not already specify an encoding. The default setting is <code class="literal">false</code>.
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">url-pattern</code> — Used to specify which requests are filtered, the default is all requests.
+			</div></li></ul></div></div><div class="sect3" title="21.1.3.5. Context management for custom servlets"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam_servlet_filters-Context_management_for_custom_servlets" class="title">Context management for custom servlets</h1></div></div></div><div class="para">
+		Requests sent direct to some servlet other than the JSF servlet are not processed through the JSF lifecycle, so Seam provides a servlet filter that can be applied to any other servlet that needs access to Seam components.
+	</div><div class="para">
+		This filter allows custom servlets to interact with the Seam contexts. It sets up the Seam contexts at the beginning of each request, and tears them down at the end of the request. You should make sure that this filter is <span class="emphasis"><em>never</em></span> applied to the JSF <code class="literal">FacesServlet</code>. Seam uses the phase listener for context management in a JSF request.
+	</div><div class="para">
+		This filter is not installed by default and requires an entry in <code class="literal">components.xml</code> to enable it:
+	</div><pre class="programlisting">&lt;web:context-filter url-pattern="/media/*"/&gt;
+</pre><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+				<code class="literal">url-pattern</code> — Used to specify which requests are filtered, the default is all requests. If the url-pattern is specified for the context filter, then the filter will be enabled (unless explicitly disabled).
+			</div></li></ul></div><div class="para">
+		The context filter expects to find the conversation id of any conversation context in a request parameter named <code class="literal">conversationId</code>. You are responsible for ensuring that it gets sent in the request.
+	</div><div class="para">
+		You are also responsible for ensuring propagation of any new conversation id back to the client. Seam exposes the conversation id as a property of the built in component <code class="literal">conversation</code>.
+	</div></div></div><div class="sect2" title="21.1.4. Integrating Seam with your EJB container"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Basic_Seam_configuration-Integrating_Seam_with_your_EJB_container" class="title">Integrating Seam with your EJB container</h1></div></div></div><div class="para">
+		We need to apply the <code class="literal">SeamInterceptor</code> to our Seam components. The simplest way to do this is to add the following interceptor binding to the <code class="literal">&lt;assembly-descriptor&gt;</code> in <code class="literal">ejb-jar.xml</code>:
+	</div><pre class="programlisting">&lt;interceptor-binding&gt;
+    &lt;ejb-name&gt;*&lt;/ejb-name&gt;
+    &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/interceptor-class&gt;
+&lt;/interceptor-binding&gt;
+</pre><div class="para">
+		Seam needs to know where to go to find session beans in JNDI. One way to do this is specify the <code class="literal">@JndiName</code> annotation on every session bean Seam component. However, this is quite tedious. A better approach is to specify a pattern that Seam can use to calculate the JNDI name from the EJB name. Unfortunately, there is no standard mapping to global JNDI defined in the EJB3 specification, so this mapping is vendor-specific. We usually specify this option in <code class="literal">components.xml</code>.
+	</div><div class="para">
+		For JBoss AS, the following pattern is correct:
+	</div><pre class="programlisting">&lt;core:init jndi-name="myEarName/#{ejbName}/local" /&gt;
+</pre><div class="para">
+		Where <code class="literal">myEarName</code> is the name of the EAR in which the bean is deployed.
+	</div><div class="para">
+		Outside the context of an EAR (when using the JBoss Embeddable EJB3 container), the following pattern is the one to use:
+	</div><pre class="programlisting">&lt;core:init jndi-name="#{ejbName}/local" /&gt;
+</pre><div class="para">
+		You will have to experiment to find the right setting for other application servers.
+	</div><div class="important"><h2>Important</h2><div class="para">
+			Some servers (such as GlassFish) require you to specify JNDI names for all EJB components explicitly. In this case, you can pick your own pattern.
+		</div></div></div><div class="sect2" title="21.1.5. Using facelets"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Basic_Seam_configuration-Using_facelets" class="title">Using facelets</h1></div></div></div><div class="para">
+		If you want follow our advice and use facelets instead of JSP, add the following lines to <code class="literal">faces-config.xml</code>:
+	</div><pre class="programlisting">&lt;application&gt;
+    &lt;view-handler&gt;com.sun.facelets.FaceletViewHandler&lt;/view-handler&gt;
+&lt;/application&gt;
+</pre><div class="para">
+		And the following lines to <code class="literal">web.xml</code>:
+	</div><pre class="programlisting">&lt;context-param&gt;
+    &lt;param-name&gt;javax.faces.DEFAULT_SUFFIX&lt;/param-name&gt;
+    &lt;param-value&gt;.xhtml&lt;/param-value&gt;
+&lt;/context-param&gt;
+</pre></div><div class="sect2" title="21.1.6. Don't forget!"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Basic_Seam_configuration-Dont_forget" class="title">Don't forget!</h1></div></div></div><div class="para">
+		There is one final item you need to know about. You must place a <code class="literal">seam.properties</code>, <code class="literal">META-INF/seam.properties</code> or <code class="literal">META-INF/components.xml</code> file in any archive in which your Seam components are deployed (even an empty properties file will do). At startup, Seam will scan any archives with <code class="literal">seam.properties</code> files for seam components.
+	</div><div class="para">
+		In a web archive (WAR) file, you must place a <code class="literal">seam.properties</code> file in the <code class="literal">WEB-INF/classes</code> directory if you have any Seam components included here.
+	</div><div class="para">
+		This is a workaround for a limitation of the JVM; if we did not use this mechanism, our next best option would be to force you to list every component explicitly in <code class="literal">components.xml</code>. 
+	</div></div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Spring_Framework_integration-Spring_Application_Context_as_a_Seam_Component.html"><strong>Prev</strong>20.5. Spring Application Context as a Seam Compon...</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_EE_5.html"><strong>Next</strong>21.2. Configuring Seam in Java EE 5</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_components-Configurable_property_types.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_components-Configurable_property_types.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_components-Configurable_property_types.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>4.4. Configurable property types</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Configuring_Seam_components.html" title="Chapter 4. Configuring Seam components" /><link rel="prev" href="Seam_Reference_Guide-Configuring_Seam_components-Fine_grained_configuration_files.html" title="4.3. Fine-grained configuration files" /><link rel="next" href="Seam_Reference_Guide-Configuring_Seam_components-Using_XML_Namespaces.html" title="4.5. Using XML Namespaces" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"!
 ><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Configuring_Seam_components-Fine_grained_configuration_files.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Configuring_Seam_components-Using_XML_Namespaces.html"><strong>Next</strong></a></li></ul><div class="sect1" title="4.4. Configurable property types"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Configuring_Seam_components-Configurable_property_types" class="title">Configurable property types</h1></div></div></div><div class="para">
+		Properties of string, primitive or primitive wrapper type may be configured just as you would expect:
+	</div><pre class="programlisting">org.jboss.seam.core.manager.conversationTimeout 60000
+</pre><pre class="programlisting">&lt;core:manager conversation-timeout="60000"/&gt;
+</pre><pre class="programlisting">&lt;component name="org.jboss.seam.core.manager"&gt;
+    &lt;property name="conversationTimeout"&gt;60000&lt;/property&gt;
+&lt;/component&gt;
+</pre><div class="para">
+		Arrays, sets and lists of strings or primitives are also supported:
+	</div><pre class="programlisting">org.jboss.seam.core.jbpm.processDefinitions order.jpdl.xml, return.jpdl.xml, inventory.jpdl.xml
+</pre><pre class="programlisting">&lt;core:jbpm&gt;
+    &lt;core:process-definitions&gt;
+        &lt;value&gt;order.jpdl.xml&lt;/value&gt;
+        &lt;value&gt;return.jpdl.xml&lt;/value&gt;
+        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;
+    &lt;/core:process-definitions&gt;
+&lt;/core:jbpm&gt;
+</pre><pre class="programlisting">&lt;component name="org.jboss.seam.core.jbpm"&gt;
+    &lt;property name="processDefinitions"&gt;
+        &lt;value&gt;order.jpdl.xml&lt;/value&gt;
+        &lt;value&gt;return.jpdl.xml&lt;/value&gt;
+        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;
+    &lt;/property&gt;
+&lt;/component&gt;
+</pre><div class="para">
+		Even maps with String-valued keys and string or primitive values are supported:
+	</div><pre class="programlisting">&lt;component name="issueEditor"&gt;
+    &lt;property name="issueStatuses"&gt;
+        &lt;key&gt;open&lt;/key&gt; &lt;value&gt;open issue&lt;/value&gt;
+        &lt;key&gt;resolved&lt;/key&gt; &lt;value&gt;issue resolved by developer&lt;/value&gt;
+        &lt;key&gt;closed&lt;/key&gt; &lt;value&gt;resolution accepted by user&lt;/value&gt;
+    &lt;/property&gt;
+&lt;/component&gt;
+</pre><div class="para">
+		Finally, you may wire together components using a value-binding expression. Note that this is quite different to injection using <code class="literal">@In</code>, since it happens at component instantiation time instead of invocation time. It is therefore much more similar to the dependency injection facilities offered by traditional IoC containers like JSF or Spring.
+	</div><pre class="programlisting">&lt;drools:managed-working-memory name="policyPricingWorkingMemory" rule-base="#{policyPricingRules}"/&gt;
+</pre><pre class="programlisting">&lt;component name="policyPricingWorkingMemory"
+          class="org.jboss.seam.drools.ManagedWorkingMemory"&gt;
+    &lt;property name="ruleBase"&gt;#{policyPricingRules}&lt;/property&gt;
+&lt;/component&gt;
+</pre></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Configuring_Seam_components-Fine_grained_configuration_files.html"><strong>Prev</strong>4.3. Fine-grained configuration files</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Configuring_Seam_components-Using_XML_Namespaces.html"><strong>Next</strong>4.5. Using XML Namespaces</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_components-Configuring_components_via_components.xml.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_components-Configuring_components_via_components.xml.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_components-Configuring_components_via_components.xml.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>4.2. Configuring components via components.xml</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Configuring_Seam_components.html" title="Chapter 4. Configuring Seam components" /><link rel="prev" href="Seam_Reference_Guide-Configuring_Seam_components.html" title="Chapter 4. Configuring Seam components" /><link rel="next" href="Seam_Reference_Guide-Configuring_Seam_components-Fine_grained_configuration_files.html" title="4.3. Fine-grained configuration files" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.co!
 m/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Configuring_Seam_components.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Configuring_Seam_components-Fine_grained_configuration_files.html"><strong>Next</strong></a></li></ul><div class="sect1" title="4.2. Configuring components via components.xml"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Configuring_Seam_components-Configuring_components_via_components.xml" class="title">Configuring components via components.xml</h1></div></div></div><div class="para">
+		The <code class="literal">components.xml</code> file is a bit more powerful than property settings. It lets you:
+	</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+				Configure components that have been installed automatically—including both built-in components, and application components that have been annotated with the <code class="literal">@Name</code> annotation and picked up by Seam's deployment scanner.
+			</div></li><li class="listitem"><div class="para">
+				Install classes with no <code class="literal">@Name</code> annotation as Seam components—this is most useful for certain kinds of infrastructural components which can be installed multiple times different names (for example Seam-managed persistence contexts).
+			</div></li><li class="listitem"><div class="para">
+				Install components that <span class="emphasis"><em>do</em></span> have a <code class="literal">@Name</code> annotation but are not installed by default because of an <code class="literal">@Install</code> annotation that indicates the component should not be installed.
+			</div></li><li class="listitem"><div class="para">
+				Override the scope of a component.
+			</div></li></ul></div><div class="para">
+		A <code class="literal">components.xml</code> file may appear in one of three different places:
+	</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+				The <code class="literal">WEB-INF</code> directory of a <code class="literal">war</code>.
+			</div></li><li class="listitem"><div class="para">
+				The <code class="literal">META-INF</code> directory of a <code class="literal">jar</code>.
+			</div></li><li class="listitem"><div class="para">
+				Any directory of a <code class="literal">jar</code> that contains classes with an <code class="literal">@Name</code> annotation.
+			</div></li></ul></div><div class="para">
+		Usually, Seam components are installed when the deployment scanner discovers a class with a <code class="literal">@Name</code> annotation sitting in an archive with a <code class="literal">seam.properties</code> file or a <code class="literal">META-INF/components.xml</code> file. (Unless the component has an <code class="literal">@Install</code> annotation indicating it should not be installed by default.) The <code class="literal">components.xml</code> file lets us handle special cases where we need to override the annotations.
+	</div><div class="para">
+		For example, the following <code class="literal">components.xml</code> file installs the JBoss Embeddable EJB3 container:
+	</div><pre class="programlisting">&lt;components xmlns="http://jboss.com/products/seam/components" 
+            xmlns:core="http://jboss.com/products/seam/core"&gt;
+    &lt;core:ejb/&gt;
+&lt;/components&gt;
+</pre><div class="para">
+		This example does the same thing:
+	</div><pre class="programlisting">&lt;components&gt;
+    &lt;component class="org.jboss.seam.core.Ejb"/&gt;
+&lt;/components&gt;
+</pre><div class="para">
+		This one installs and configures two different Seam-managed persistence contexts:
+	</div><pre class="programlisting">&lt;components xmlns="http://jboss.com/products/seam/components" 
+            xmlns:core="http://jboss.com/products/seam/core"
+
+    &lt;core:managed-persistence-context name="customerDatabase"
+                persistence-unit-jndi-name="java:/customerEntityManagerFactory"/&gt;
+        
+    &lt;core:managed-persistence-context name="accountingDatabase"
+                persistence-unit-jndi-name="java:/accountingEntityManagerFactory"/&gt;            
+
+&lt;/components&gt;
+</pre><div class="para">
+		As does this one:
+	</div><pre class="programlisting">&lt;components&gt;
+    &lt;component name="customerDatabase" 
+              class="org.jboss.seam.core.ManagedPersistenceContext"&gt;
+        &lt;property name="persistenceUnitJndiName"&gt;java:/customerEntityManagerFactory&lt;/property&gt;
+    &lt;/component&gt;
+    
+    &lt;component name="accountingDatabase"
+              class="org.jboss.seam.core.ManagedPersistenceContext"&gt;
+        &lt;property name="persistenceUnitJndiName"&gt;java:/accountingEntityManagerFactory&lt;/property&gt;
+    &lt;/component&gt;
+&lt;/components&gt;
+</pre><div class="para">
+		This example creates a session-scoped Seam-managed persistence context (this is not recommended in practice):
+	</div><pre class="programlisting">&lt;components xmlns="http://jboss.com/products/seam/components" 
+            xmlns:core="http://jboss.com/products/seam/core"
+
+  &lt;core:managed-persistence-context name="productDatabase" 
+                                   scope="session"
+              persistence-unit-jndi-name="java:/productEntityManagerFactory"/&gt;        
+
+&lt;/components&gt;
+</pre><pre class="programlisting">&lt;components&gt;
+            
+    &lt;component name="productDatabase"
+              scope="session"
+              class="org.jboss.seam.core.ManagedPersistenceContext"&gt;
+        &lt;property name="persistenceUnitJndiName"&gt;java:/productEntityManagerFactory&lt;/property&gt;
+    &lt;/component&gt;
+
+&lt;/components&gt;
+</pre><div class="para">
+		It is common to use the <code class="literal">auto-create</code> option for infrastructural objects like persistence contexts, which saves you from having to explicitly specify <code class="literal">create=true</code> when you use the <code class="literal">@In</code> annotation.
+	</div><pre class="programlisting">&lt;components xmlns="http://jboss.com/products/seam/components" 
+            xmlns:core="http://jboss.com/products/seam/core"
+
+  &lt;core:managed-persistence-context name="productDatabase" 
+                             auto-create="true"
+              persistence-unit-jndi-name="java:/productEntityManagerFactory"/&gt;        
+
+&lt;/components&gt;
+</pre><pre class="programlisting">&lt;components&gt;
+            
+    &lt;component name="productDatabase"
+        auto-create="true"
+              class="org.jboss.seam.core.ManagedPersistenceContext"&gt;
+        &lt;property name="persistenceUnitJndiName"&gt;java:/productEntityManagerFactory&lt;/property&gt;
+    &lt;/component&gt;
+
+&lt;/components&gt;
+</pre><div class="para">
+		The <code class="literal">&lt;factory&gt;</code> declaration lets you specify a value or method binding expression that will be evaluated to initialize the value of a context variable when it is first referenced.
+	</div><pre class="programlisting">&lt;components&gt;
+
+    &lt;factory name="contact" method="#{contactManager.loadContact}" scope="CONVERSATION"/&gt;
+
+&lt;/components&gt;
+</pre><div class="para">
+		You can create an <span class="emphasis"><em>alias</em></span> (a second name) for a Seam component like so:
+	</div><pre class="programlisting">&lt;components&gt;
+
+    &lt;factory name="user" value="#{actor}" scope="STATELESS"/&gt;
+
+&lt;/components&gt;
+</pre><div class="para">
+		You can even create an <span class="emphasis"><em>alias</em></span> for a commonly used expression:
+	</div><pre class="programlisting">&lt;components&gt;
+
+    &lt;factory name="contact" value="#{contactManager.contact}" scope="STATELESS"/&gt;
+
+&lt;/components&gt;
+</pre><div class="para">
+		It is especially common to see the use of <code class="literal">auto-create="true"</code> with the <code class="literal">&lt;factory&gt;</code> declaration:
+	</div><pre class="programlisting">&lt;components&gt;
+
+    &lt;factory name="session" value="#{entityManager.delegate}" scope="STATELESS" 
+       auto-create="true"/&gt;
+
+&lt;/components&gt;
+</pre><div class="para">
+		Sometimes we want to reuse the same <code class="literal">components.xml</code> file with minor changes during both deployment and testing. Seam lets you place wildcards of the form <code class="literal">@wildcard@</code> in the <code class="literal">components.xml</code> file which can be replaced either by your Ant build script (at deployment time) or by providing a file named <code class="literal">components.properties</code> in the classpath (at development time). You will see this approach used in the Seam examples.
+	</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Configuring_Seam_components.html"><strong>Prev</strong>Chapter 4. Configuring Seam components</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Configuring_Seam_components-Fine_grained_configuration_files.html"><strong>Next</strong>4.3. Fine-grained configuration files</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_components-Fine_grained_configuration_files.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_components-Fine_grained_configuration_files.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_components-Fine_grained_configuration_files.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>4.3. Fine-grained configuration files</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Configuring_Seam_components.html" title="Chapter 4. Configuring Seam components" /><link rel="prev" href="Seam_Reference_Guide-Configuring_Seam_components-Configuring_components_via_components.xml.html" title="4.2. Configuring components via components.xml" /><link rel="next" href="Seam_Reference_Guide-Configuring_Seam_components-Configurable_property_types.html" title="4.4. Configurable property types" /></head><body class=""><p id="title"><a class="le!
 ft" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Configuring_Seam_components-Configuring_components_via_components.xml.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Configuring_Seam_components-Configurable_property_types.html"><strong>Next</strong></a></li></ul><div class="sect1" title="4.3. Fine-grained configuration files"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Configuring_Seam_components-Fine_grained_configuration_files" class="title">Fine-grained configuration files</h1></div></div></div><div class="para">
+		If you have a large number of components that need to be configured in XML, it makes much more sense to split up the information in <code class="literal">components.xml</code> into many small files. Seam lets you put configuration for a class named, for example, <code class="literal">com.helloworld.Hello</code> in a resource named <code class="literal">com/helloworld/Hello.component.xml</code>. (You might be familiar with this pattern, since it is the same one we use in Hibernate.) The root element of the file may be either a <code class="literal">&lt;components&gt;</code> or <code class="literal">&lt;component&gt;</code> element.
+	</div><div class="para">
+		The first option lets you define multiple components in the file:
+	</div><pre class="programlisting">&lt;components&gt;
+    &lt;component class="com.helloworld.Hello" name="hello"&gt;
+        &lt;property name="name"&gt;#{user.name}&lt;/property&gt;
+    &lt;/component&gt;
+    &lt;factory name="message" value="#{hello.message}"/&gt;
+&lt;/components&gt;
+</pre><div class="para">
+		The second option only lets you define or configure one component, but is less noisy:
+	</div><pre class="programlisting">&lt;component name="hello"&gt;
+    &lt;property name="name"&gt;#{user.name}&lt;/property&gt;
+&lt;/component&gt;
+</pre><div class="para">
+		In the second option, the class name is implied by the file in which the component definition appears.
+	</div><div class="para">
+		Alternatively, you may put configuration for all classes in the <code class="literal">com.helloworld</code> package in <code class="literal">com/helloworld/components.xml</code>.
+	</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Configuring_Seam_components-Configuring_components_via_components.xml.html"><strong>Prev</strong>4.2. Configuring components via components.xml</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Configuring_Seam_components-Configurable_property_types.html"><strong>Next</strong>4.4. Configurable property types</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_components-Using_XML_Namespaces.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_components-Using_XML_Namespaces.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_components-Using_XML_Namespaces.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>4.5. Using XML Namespaces</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Configuring_Seam_components.html" title="Chapter 4. Configuring Seam components" /><link rel="prev" href="Seam_Reference_Guide-Configuring_Seam_components-Configurable_property_types.html" title="4.4. Configurable property types" /><link rel="next" href="Seam_Reference_Guide-Events_interceptors_and_exception_handling.html" title="Chapter 5. Events, interceptors and exception handling" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.co!
 m/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Configuring_Seam_components-Configurable_property_types.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Events_interceptors_and_exception_handling.html"><strong>Next</strong></a></li></ul><div class="sect1" title="4.5. Using XML Namespaces"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Configuring_Seam_components-Using_XML_Namespaces" class="title">Using XML Namespaces</h1></div></div></div><div class="para">
+		Throughout the examples, there have been two competing ways of declaring components: with and without the use of XML namespaces. The following shows a typical <code class="literal">components.xml</code> file without namespaces. It uses the Seam Components DTD:
+	</div><pre class="programlisting">&lt;?xml version="1.0" encoding="UTF-8"&gt;
+&lt;!DOCTYPE components PUBLIC "-//JBoss/Seam Component Configuration DTD 1.2//EN"
+                            "http://jboss.com/products/seam/components-1.2.dtd"&gt;
+&lt;components&gt;
+
+    &lt;component class="org.jboss.seam.core.init"&gt;
+        &lt;property name="debug"&gt;true&lt;/property&gt;
+        &lt;property name="jndiPattern"&gt;@jndiPattern@&lt;/property&gt;
+    &lt;/component&gt;
+
+    &lt;component name="org.jboss.sean.core.ejb" installed="@embeddedEjb@" /&gt;
+    
+&lt;/components&gt;
+</pre><div class="para">
+		As you can see, this is somewhat verbose. Even worse, the component and attribute names cannot be validated at development time.
+	</div><div class="para">
+		The namespaced version looks like this:
+	</div><pre class="programlisting">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;components xmlns="http://jboss.com/products/seam/components"
+            xmlns:core="http://jboss.com/products/seam/core"
+            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+            xsi:schemaLocation=
+                "http://jboss.com/products/seam/core 
+                                        http://jboss.com/products/seam/core-1.2.xsd 
+                 http://jboss.com/products/seam/components 
+                                        http://jboss.com/products/seam/components-1.2.xsd"&gt;
+
+    &lt;core:init debug="true" jndi-pattern="@jndiPattern@"/&gt;
+
+    &lt;core:ejb installed="@embeddedEjb@"/&gt;
+
+&lt;/components&gt;
+</pre><div class="para">
+		Even though the schema declarations are verbose, the actual XML content is lean and easy to understand. The schemas provide detailed information about each component and the attributes available, allowing XML editors to offer intelligent autocomplete. The use of namespaced elements makes generating and maintaining correct <code class="literal">components.xml</code> files much simpler.
+	</div><div class="para">
+		Now, this works great for the built-in Seam components, but what about user components? There are two options. First, Seam supports mixing the two models, allowing the use of the generic <code class="literal">&lt;component&gt;</code> declarations for user components, along with namespaced declarations for built-in components. But even better, Seam allows you to quickly declare namespaces for your own components.
+	</div><div class="para">
+		Any Java package can be associated with an XML namespace by annotating the package with the <code class="literal">@Namespace</code> annotation. (Package-level annotations are declared in a file named <code class="literal">package-info.java</code> in the package directory.) Here is an example from the seampay demo:
+	</div><pre class="programlisting">@Namespace(value="http://jboss.com/products/seam/examples/seampay")
+package org.jboss.seam.example.seampay;
+
+import org.jboss.seam.annotations.Namespace;
+</pre><div class="para">
+		That is all you need to do to use the namespaced style in <code class="literal">components.xml</code>! Now we can write:
+	</div><pre class="programlisting">&lt;components xmlns="http://jboss.com/products/seam/components"
+            xmlns:pay="http://jboss.com/products/seam/examples/seampay"
+            ... &gt;
+
+    &lt;pay:payment-home new-instance="#{newPayment}"
+                      created-message="Created a new payment to #{newPayment.payee}" /&gt;
+
+    &lt;pay:payment name="newPayment"
+                 payee="Somebody"
+                 account="#{selectedAccount}"
+                 payment-date="#{currentDatetime}"
+                 created-date="#{currentDatetime}" /&gt;
+     ...
+&lt;/components&gt;
+</pre><div class="para">
+		Or:
+	</div><pre class="programlisting">&lt;components xmlns="http://jboss.com/products/seam/components"
+            xmlns:pay="http://jboss.com/products/seam/examples/seampay"
+            ... &gt;
+
+    &lt;pay:payment-home&gt;
+        &lt;pay:new-instance&gt;"#{newPayment}"&lt;/pay:new-instance&gt;
+        &lt;pay:created-message&gt;Created a new payment to #{newPayment.payee}&lt;/pay:created-message&gt;
+    &lt;/pay:payment-home&gt;
+    
+    &lt;pay:payment name="newPayment"&gt;
+        &lt;pay:payee&gt;Somebody"&lt;/pay:payee&gt;
+        &lt;pay:account&gt;#{selectedAccount}&lt;/pay:account&gt;
+        &lt;pay:payment-date&gt;#{currentDatetime}&lt;/pay:payment-date&gt;
+        &lt;pay:created-date&gt;#{currentDatetime}&lt;/pay:created-date&gt;
+     &lt;/pay:payment&gt;
+     ...
+&lt;/components&gt;
+</pre><div class="para">
+		These examples illustrate the two usage models of a namespaced element. In the first declaration, the <code class="literal">&lt;pay:payment-home&gt;</code> references the <code class="literal">paymentHome</code> component:
+	</div><pre class="programlisting">package org.jboss.seam.example.seampay;
+...
+ at Name("paymentHome")
+public class PaymentController
+    extends EntityHome&lt;Payment&gt;
+{
+    ... 
+}
+</pre><div class="para">
+		The element name is the hyphenated form of the component name. The attributes of the element are the hyphenated form of the property names.
+	</div><div class="para">
+		In the second declaration, the <code class="literal">&lt;pay:payment&gt;</code> element refers to the <code class="literal">Payment</code> class in the <code class="literal">org.jboss.seam.example.seampay</code> package. In this case <code class="literal">Payment</code> is an entity that is being declared as a Seam component:
+	</div><pre class="programlisting">package org.jboss.seam.example.seampay;
+...
+ at Entity
+public class Payment
+    implements Serializable
+{
+    ...
+}
+</pre><div class="para">
+		If we want validation and autocompletion to work for user-defined components, we will need a schema. Seam does not yet provide a mechanism to automatically generate a schema for a set of components, so it is necessary to generate one manually. The schema definitions for the standard Seam packages can be used for guidance.
+	</div><div class="para">
+		The following are the the namespaces used by Seam:
+	</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+				components — <code class="literal">http://jboss.com/products/seam/components</code>
+			</div></li><li class="listitem"><div class="para">
+				core — <code class="literal">http://jboss.com/products/seam/core</code>
+			</div></li><li class="listitem"><div class="para">
+				drools — <code class="literal">http://jboss.com/products/seam/drools</code>
+			</div></li><li class="listitem"><div class="para">
+				framework — <code class="literal">http://jboss.com/products/seam/framework</code>
+			</div></li><li class="listitem"><div class="para">
+				jms — <code class="literal">http://jboss.com/products/seam/jms</code>
+			</div></li><li class="listitem"><div class="para">
+				remoting — <code class="literal">http://jboss.com/products/seam/remoting</code>
+			</div></li><li class="listitem"><div class="para">
+				theme — <code class="literal">http://jboss.com/products/seam/theme</code>
+			</div></li><li class="listitem"><div class="para">
+				security — <code class="literal">http://jboss.com/products/seam/security</code>
+			</div></li><li class="listitem"><div class="para">
+				mail — <code class="literal">http://jboss.com/products/seam/mail</code>
+			</div></li><li class="listitem"><div class="para">
+				web — <code class="literal">http://jboss.com/products/seam/web</code>
+			</div></li></ul></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Configuring_Seam_components-Configurable_property_types.html"><strong>Prev</strong>4.4. Configurable property types</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Events_interceptors_and_exception_handling.html"><strong>Next</strong>Chapter 5. Events, interceptors and exception han...</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_components.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_components.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_components.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 4. Configuring Seam components</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="index.html" title="Seam Reference Guide CP07" /><link rel="prev" href="Seam_Reference_Guide-The_contextual_component_model-Factory_and_manager_components.html" title="3.8. Factory and manager components" /><link rel="next" href="Seam_Reference_Guide-Configuring_Seam_components-Configuring_components_via_components.xml.html" title="4.2. Configuring components via components.xml" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src=!
 "Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-The_contextual_component_model-Factory_and_manager_components.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Configuring_Seam_components-Configuring_components_via_components.xml.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="chapter" title="Chapter 4. Configuring Seam components" lang="en-US"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Configuring_Seam_components">Chapter 4. Configuring Seam components</h2></div></div></div><div class="toc"><dl><dt><span class="sect1"><a href="Seam_Reference_Guide-Configuring_Seam_components.html#Seam_Reference_Guide-Configuring_Seam_components-Configuring_comp!
 onents_via_property_settings">4.1. Configuring components via !
 property
 settings</a></span></dt><dt><span class="sect1"><a href="Seam_Reference_Guide-Configuring_Seam_components-Configuring_components_via_components.xml.html">4.2. Configuring components via components.xml</a></span></dt><dt><span class="sect1"><a href="Seam_Reference_Guide-Configuring_Seam_components-Fine_grained_configuration_files.html">4.3. Fine-grained configuration files</a></span></dt><dt><span class="sect1"><a href="Seam_Reference_Guide-Configuring_Seam_components-Configurable_property_types.html">4.4. Configurable property types</a></span></dt><dt><span class="sect1"><a href="Seam_Reference_Guide-Configuring_Seam_components-Using_XML_Namespaces.html">4.5. Using XML Namespaces</a></span></dt></dl></div><div class="para">
+		The philosophy of minimizing XML-based configuration is extremely strong in Seam. Nevertheless, there are various reasons why we might want to configure a Seam component using XML: to isolate deployment-specific information from the Java code, to enable the creation of re-usable frameworks, to configure Seam's built-in functionality, etc. Seam provides two basic approaches to configuring components: configuration via property settings in a properties file or <code class="literal">web.xml</code>, and configuration via <code class="literal">components.xml</code>.
+	</div><div class="sect1" title="4.1. Configuring components via property settings"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Configuring_Seam_components-Configuring_components_via_property_settings" class="title">Configuring components via property settings</h1></div></div></div><div class="para">
+		Seam components may be provided with configuration properties either via servlet context parameters, or via a properties file named <code class="literal">seam.properties</code> in the root of the classpath.
+	</div><div class="para">
+		The configurable Seam component must expose JavaBeans-style property setter methods for the configurable attributes. If a seam component named <code class="literal">com.jboss.myapp.settings</code> has a setter method named <code class="literal">setLocale()</code>, we can provide a property named <code class="literal">com.jboss.myapp.settings.locale</code> in the <code class="literal">seam.properties</code> file or as a servlet context parameter, and Seam will set the value of the <code class="literal">locale</code> attribute whenever it instantiates the component.
+	</div><div class="para">
+		The same mechanism is used to configure Seam itself. For example, to set the conversation timeout, we provide a value for <code class="literal">org.jboss.seam.core.manager.conversationTimeout</code> in <code class="literal">web.xml</code> or <code class="literal">seam.properties</code>. (There is a built-in Seam component named <code class="literal">org.jboss.seam.core.manager</code> with a setter method named <code class="literal">setConversationTimeout()</code>.)
+	</div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-The_contextual_component_model-Factory_and_manager_components.html"><strong>Prev</strong>3.8. Factory and manager components</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Configuring_Seam_components-Configuring_components_via_components.xml.html"><strong>Next</strong>4.2. Configuring components via components.xml</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_in_J2EE-Boostrapping_JPA_in_Seam.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_in_J2EE-Boostrapping_JPA_in_Seam.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_in_J2EE-Boostrapping_JPA_in_Seam.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>21.4.2. Boostrapping JPA in Seam</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_J2EE.html" title="21.4. Configuring Seam in J2EE" /><link rel="prev" href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_J2EE.html" title="21.4. Configuring Seam in J2EE" /><link rel="next" href="Seam_Reference_Guide-Configuring_Seam_in_J2EE-Packaging.html" title="21.4.3. Packaging" /></head><body class=""><p id="title"><a class="left" href="http:/!
 /www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_J2EE.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Configuring_Seam_in_J2EE-Packaging.html"><strong>Next</strong></a></li></ul><div class="sect2" title="21.4.2. Boostrapping JPA in Seam"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Configuring_Seam_in_J2EE-Boostrapping_JPA_in_Seam" class="title">Boostrapping JPA in Seam</h1></div></div></div><div class="para">
+		Seam will bootstrap a JPA <code class="literal">EntityManagerFactory</code> from your <code class="literal">persistence.xml</code> file if you install this built-in component:
+	</div><pre class="programlisting">&lt;core:entity-manager-factory name="entityManagerFactory"/&gt;
+</pre><div class="para">
+		You will also need to configure a <span class="emphasis"><em>managed persistencece context</em></span> if you want a Seam managed JPA <code class="literal">EntityManager</code> to be available via injection.
+	</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_J2EE.html"><strong>Prev</strong>21.4. Configuring Seam in J2EE</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Configuring_Seam_in_J2EE-Packaging.html"><strong>Next</strong>21.4.3. Packaging</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_in_J2EE-Packaging.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_in_J2EE-Packaging.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_in_J2EE-Packaging.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>21.4.3. Packaging</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_J2EE.html" title="21.4. Configuring Seam in J2EE" /><link rel="prev" href="Seam_Reference_Guide-Configuring_Seam_in_J2EE-Boostrapping_JPA_in_Seam.html" title="21.4.2. Boostrapping JPA in Seam" /><link rel="next" href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_SE_with_the_JBoss_Microcontainer.html" title="21.5. Configuring Seam in Java SE, with the JBoss !
 Microcontainer" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Configuring_Seam_in_J2EE-Boostrapping_JPA_in_Seam.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_SE_with_the_JBoss_Microcontainer.html"><strong>Next</strong></a></li></ul><div class="sect2" title="21.4.3. Packaging"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Configuring_Seam_in_J2EE-Packaging" class="title">Packaging</h1></div></div></div><div class="para">
+		We can package our application as a WAR, in the following structure:
+	</div><pre class="programlisting">my-application.war/
+    META-INF/
+        MANIFEST.MF
+    WEB-INF/
+        web.xml
+        components.xml
+        faces-config.xml
+        lib/
+            jboss-seam.jar
+            jboss-seam-ui.jar
+            el-api.jar
+            el-ri.jar
+            jsf-facelets.jar
+            hibernate3.jar
+            hibernate-annotations.jar
+            ...
+            my-application.jar/
+                META-INF/
+                   MANIFEST.MF
+                seam.properties
+                hibernate.cfg.xml
+                org/
+                    jboss/
+                        myapplication/
+                            User.class
+                            Login.class
+                            Register.class
+                            ...
+    login.jsp
+    register.jsp
+    ...
+</pre><div class="para">
+		If we want to deploy Hibernate in a non-J2EE environment like Tomcat or TestNG, we need to do a little bit more work.
+	</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Configuring_Seam_in_J2EE-Boostrapping_JPA_in_Seam.html"><strong>Prev</strong>21.4.2. Boostrapping JPA in Seam</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_SE_with_the_JBoss_Microcontainer.html"><strong>Next</strong>21.5. Configuring Seam in Java SE, with the JBoss...</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container-Configuring_a_datasource_with_the_Embeddable_EJB3_container.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container-Configuring_a_datasource_with_the_Embeddable_EJB3_container.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container-Configuring_a_datasource_with_the_Embeddable_EJB3_container.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>21.3.2. Configuring a datasource with the Embeddable EJB3 container</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container.html" title="21.3. Configuring Seam in Java SE, with the JBoss Embeddable EJB3 container" /><link rel="prev" href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container.html" title="21.3. Configuring Seam in Java SE, with the !
 JBoss Embeddable EJB3 container" /><link rel="next" href="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container-Packaging.html" title="21.3.3. Packaging" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container-Packaging.html"><strong>Next</strong></a></li></ul><div class="sect2" title="21.3.2. Configuring a datasource with the Embeddable EJB3 con!
 tainer"><div class="titlepage"><div><div><h1 id="Seam_Referenc!
 e_Guide-
Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container-Configuring_a_datasource_with_the_Embeddable_EJB3_container" class="title">Configuring a datasource with the Embeddable EJB3 container</h1></div></div></div><div class="para">
+		You should refer to the Embeddable EJB3 container documentation for more information about configuring the container. You'll probably at least need to set up your own datasource. Embeddable EJB3 is implemented using the JBoss Microcontainer, so it's very easy to add new services to the minimal set of services provided by default. For example, I can add a new datasource by putting this <code class="literal">jboss-beans.xml</code> file in my classpath:
+	</div><pre class="programlisting">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+
+&lt;deployment xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+            xsi:schemaLocation="urn:jboss:bean-deployer bean-deployer_1_0.xsd"
+            xmlns="urn:jboss:bean-deployer"&gt;
+
+   &lt;bean name="bookingDatasourceBootstrap"
+        class="org.jboss.resource.adapter.jdbc.local.LocalTxDataSource"&gt;
+      &lt;property name="driverClass"&gt;org.hsqldb.jdbcDriver&lt;/property&gt;
+      &lt;property name="connectionURL"&gt;jdbc:hsqldb:.&lt;/property&gt;
+      &lt;property name="userName"&gt;sa&lt;/property&gt;
+      &lt;property name="jndiName"&gt;java:/bookingDatasource&lt;/property&gt;
+      &lt;property name="minSize"&gt;0&lt;/property&gt;
+      &lt;property name="maxSize"&gt;10&lt;/property&gt;
+      &lt;property name="blockingTimeout"&gt;1000&lt;/property&gt;
+      &lt;property name="idleTimeout"&gt;100000&lt;/property&gt;
+      &lt;property name="transactionManager"&gt;
+        &lt;inject bean="TransactionManager"/&gt;
+      &lt;/property&gt;
+      &lt;property name="cachedConnectionManager"&gt;
+        &lt;inject bean="CachedConnectionManager"/&gt;
+      &lt;/property&gt;
+      &lt;property name="initialContextProperties"&gt;
+        &lt;inject bean="InitialContextProperties"/&gt;
+      &lt;/property&gt;
+   &lt;/bean&gt;
+
+   &lt;bean name="bookingDatasource" class="java.lang.Object"&gt;
+      &lt;constructor factoryMethod="getDatasource"&gt;
+         &lt;factory bean="bookingDatasourceBootstrap"/&gt;
+      &lt;/constructor&gt;
+   &lt;/bean&gt;
+
+&lt;/deployment&gt;
+</pre></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container.html"><strong>Prev</strong>21.3. Configuring Seam in Java SE, with the JBoss...</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container-Packaging.html"><strong>Next</strong>21.3.3. Packaging</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container-Packaging.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container-Packaging.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container-Packaging.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>21.3.3. Packaging</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container.html" title="21.3. Configuring Seam in Java SE, with the JBoss Embeddable EJB3 container" /><link rel="prev" href="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container-Configuring_a_datasource_with_the_Embeddable_EJB3_container.html" title="21.3.2. Configuring a datasource with the Embeddable EJB3 container" /><link rel="n!
 ext" href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_J2EE.html" title="21.4. Configuring Seam in J2EE" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container-Configuring_a_datasource_with_the_Embeddable_EJB3_container.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_J2EE.html"><strong>Next</strong></a></li></ul><div class="sect2" title="21.3.3. Packaging"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Configuring_S!
 eam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container-Packag!
 ing" cla
ss="title">Packaging</h1></div></div></div><div class="para">
+		The archive structure of a WAR-based deployment on an servlet engine like Tomcat will look something like this:
+	</div><pre class="programlisting">my-application.war/
+    META-INF/
+        MANIFEST.MF
+    WEB-INF/
+        web.xml
+        components.xml
+        faces-config.xml
+        lib/
+            jboss-seam.jar
+            jboss-seam-ui.jar
+            el-api.jar
+            el-ri.jar
+            jsf-facelets.jar
+            myfaces-api.jar
+            myfaces-impl.jar
+            jboss-ejb3.jar
+            jboss-jca.jar
+            jboss-j2ee.jar
+            ...
+            mc-conf.jar/
+                ejb3-interceptors-aop.xml
+                embedded-jboss-beans.xml
+                default.persistence.properties
+                jndi.properties
+                login-config.xml
+                security-beans.xml
+                log4j.xml
+            my-application.jar/
+                META-INF/
+                    MANIFEST.MF
+                    persistence.xml
+                    jboss-beans.xml
+                log4j.xml
+                seam.properties
+                org/
+                    jboss/
+                        myapplication/
+                            User.class
+                            Login.class
+                            LoginBean.class
+                            Register.class
+                            RegisterBean.class
+                            ...
+    login.jsp
+    register.jsp
+    ...
+</pre><div class="para">
+		The <code class="literal">mc-conf.jar</code> just contains the standard JBoss Microcontainer configuration files for Embeddable EJB3. You will not usually need to edit these files yourself.
+	</div><div class="para">
+		Most of the Seam example applications may be deployed to Tomcat by running <code class="literal">ant deploy.tomcat</code>.
+	</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container-Configuring_a_datasource_with_the_Embeddable_EJB3_container.html"><strong>Prev</strong>21.3.2. Configuring a datasource with the Embedda...</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_J2EE.html"><strong>Next</strong>21.4. Configuring Seam in J2EE</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Microcontainer-Packaging.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Microcontainer-Packaging.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Microcontainer-Packaging.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>21.5.2. Packaging</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_SE_with_the_JBoss_Microcontainer.html" title="21.5. Configuring Seam in Java SE, with the JBoss Microcontainer" /><link rel="prev" href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_SE_with_the_JBoss_Microcontainer.html" title="21.5. Configuring Seam in Java SE, with the JBoss Microcontainer" /><link rel="next" href="Seam_Reference_Guide-Configuring_Sea!
 m_and_packaging_Seam_applications-Configuring_jBPM_in_Seam.html" title="21.6. Configuring jBPM in Seam" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_SE_with_the_JBoss_Microcontainer.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_jBPM_in_Seam.html"><strong>Next</strong></a></li></ul><div class="sect2" title="21.5.2. Packaging"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Microcontainer-Packaging" class="title"!
 >Packaging</h1></div></div></div><div class="para">
+		The WAR could have the following structure:
+	</div><pre class="programlisting">my-application.war/
+    META-INF/
+        MANIFEST.MF
+    WEB-INF/
+        web.xml
+        components.xml
+        faces-config.xml
+        lib/
+            jboss-seam.jar
+            jboss-seam-ui.jar
+            el-api.jar
+            el-ri.jar
+            jsf-facelets.jar
+            hibernate3.jar
+            ...
+            jboss-microcontainer.jar
+            jboss-jca.jar
+            ...
+            myfaces-api.jar
+            myfaces-impl.jar
+            mc-conf.jar/
+                jndi.properties
+                log4j.xml
+            my-application.jar/
+                META-INF/
+                    MANIFEST.MF
+                    jboss-beans.xml
+                seam.properties
+                hibernate.cfg.xml
+                log4j.xml
+                org/
+                    jboss/
+                        myapplication/
+                            User.class
+                            Login.class
+                            Register.class
+                            ...
+    login.jsp
+    register.jsp
+    ...
+</pre></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_SE_with_the_JBoss_Microcontainer.html"><strong>Prev</strong>21.5. Configuring Seam in Java SE, with the JBoss...</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_jBPM_in_Seam.html"><strong>Next</strong>21.6. Configuring jBPM in Seam</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Controlling_what_data_is_returned-Combining_Constraints.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Controlling_what_data_is_returned-Combining_Constraints.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Controlling_what_data_is_returned-Combining_Constraints.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>19.9.4. Combining Constraints</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Remoting-Controlling_what_data_is_returned.html" title="19.9. Controlling what data is returned" /><link rel="prev" href="Seam_Reference_Guide-Controlling_what_data_is_returned-Constraining_objects_of_a_specific_type.html" title="19.9.3. Constraining objects of a specific type" /><link rel="next" href="Seam_Reference_Guide-Remoting-JMS_Messaging.html" title="19.10. JMS Messaging" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/d!
 ocs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Controlling_what_data_is_returned-Constraining_objects_of_a_specific_type.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Remoting-JMS_Messaging.html"><strong>Next</strong></a></li></ul><div class="sect2" title="19.9.4. Combining Constraints"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Controlling_what_data_is_returned-Combining_Constraints" class="title">Combining Constraints</h1></div></div></div><div class="para">
+		Constraints can also be combined, to filter objects from multiple paths within the object graph:
+	</div><pre class="programlisting">
+  @WebRemote(exclude = {"widgetList.secret", "widgetMap[value].secret"})
+  public Widget getWidget();
+</pre></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Controlling_what_data_is_returned-Constraining_objects_of_a_specific_type.html"><strong>Prev</strong>19.9.3. Constraining objects of a specific type</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Remoting-JMS_Messaging.html"><strong>Next</strong>19.10. JMS Messaging</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Controlling_what_data_is_returned-Constraining_Maps_and_Collections.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Controlling_what_data_is_returned-Constraining_Maps_and_Collections.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Controlling_what_data_is_returned-Constraining_Maps_and_Collections.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>19.9.2. Constraining Maps and Collections</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Remoting-Controlling_what_data_is_returned.html" title="19.9. Controlling what data is returned" /><link rel="prev" href="Seam_Reference_Guide-Remoting-Controlling_what_data_is_returned.html" title="19.9. Controlling what data is returned" /><link rel="next" href="Seam_Reference_Guide-Controlling_what_data_is_returned-Constraining_objects_of_a_specific_type.html" title="19.9.3. Constraining objects of a specific type" /></head><body class=""><p id="t!
 itle"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Remoting-Controlling_what_data_is_returned.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Controlling_what_data_is_returned-Constraining_objects_of_a_specific_type.html"><strong>Next</strong></a></li></ul><div class="sect2" title="19.9.2. Constraining Maps and Collections"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Controlling_what_data_is_returned-Constraining_Maps_and_Collections" class="title">Constraining Maps and Collections</h1></div></div></div><div class="para">
+		The other place that objects can exist within an object graph are within a <code class="literal">Map</code> or some kind of collection (<code class="literal">List</code>, <code class="literal">Set</code>, <code class="literal">Array</code>, etc). Collections are easy, and are treated like any other field. For example, if our <code class="literal">Widget</code> contained a list of other <code class="literal">Widget</code>s in its <code class="literal">widgetList</code> field, to constrain the <code class="literal">secret</code> field of the <code class="literal">Widget</code>s in this list the annotation would look like this:
+	</div><pre class="programlisting">
+  @WebRemote(exclude = {"widgetList.secret"})
+  public Widget getWidget();
+</pre><div class="para">
+		To constrain a <code class="literal">Map</code>'s key or value, the notation is slightly different. Appending <code class="literal">[key]</code> after the <code class="literal">Map</code>'s field name will constrain the <code class="literal">Map</code>'s key object values, while <code class="literal">[value]</code> will constrain the value object values. The following example demonstrates how the values of the <code class="literal">widgetMap</code> field have their <code class="literal">secret</code> field constrained:
+	</div><pre class="programlisting">
+  @WebRemote(exclude = {"widgetMap[value].secret"})
+  public Widget getWidget();
+</pre></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Remoting-Controlling_what_data_is_returned.html"><strong>Prev</strong>19.9. Controlling what data is returned</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Controlling_what_data_is_returned-Constraining_objects_of_a_specific_type.html"><strong>Next</strong>19.9.3. Constraining objects of a specific type</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Controlling_what_data_is_returned-Constraining_objects_of_a_specific_type.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Controlling_what_data_is_returned-Constraining_objects_of_a_specific_type.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Controlling_what_data_is_returned-Constraining_objects_of_a_specific_type.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>19.9.3. Constraining objects of a specific type</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Remoting-Controlling_what_data_is_returned.html" title="19.9. Controlling what data is returned" /><link rel="prev" href="Seam_Reference_Guide-Controlling_what_data_is_returned-Constraining_Maps_and_Collections.html" title="19.9.2. Constraining Maps and Collections" /><link rel="next" href="Seam_Reference_Guide-Controlling_what_data_is_returned-Combining_Constraints.html" title="19.9.4. Combining Constraints" /></head><body class=""><p id="titl!
 e"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Controlling_what_data_is_returned-Constraining_Maps_and_Collections.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Controlling_what_data_is_returned-Combining_Constraints.html"><strong>Next</strong></a></li></ul><div class="sect2" title="19.9.3. Constraining objects of a specific type"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Controlling_what_data_is_returned-Constraining_objects_of_a_specific_type" class="title">Constraining objects of a specific type</h1></div></div></div><div class="para">
+		There is one last notation that can be used to constrain the fields of a type of object no matter where in the result's object graph it appears. This notation uses either the name of the component (if the object is a Seam component) or the fully qualified class name (only if the object is not a Seam component) and is expressed using square brackets:
+	</div><pre class="programlisting">
+  @WebRemote(exclude = {"[widget].secret"})
+  public Widget getWidget();
+</pre></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Controlling_what_data_is_returned-Constraining_Maps_and_Collections.html"><strong>Prev</strong>19.9.2. Constraining Maps and Collections</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Controlling_what_data_is_returned-Combining_Constraints.html"><strong>Next</strong>19.9.4. Combining Constraints</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Conversations_and_workspace_management-Conversational_components_and_JSF_component_bindings.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Conversations_and_workspace_management-Conversational_components_and_JSF_component_bindings.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Conversations_and_workspace_management-Conversational_components_and_JSF_component_bindings.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>6.8. Conversational components and JSF component bindings</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Conversations_and_workspace_management.html" title="Chapter 6. Conversations and workspace management" /><link rel="prev" href="Seam_Reference_Guide-Workspace_management-Breadcrumbs.html" title="6.7.5. Breadcrumbs" /><link rel="next" href="Seam_Reference_Guide-Pageflows_and_business_processes.html" title="Chapter 7. Pageflows and business processes" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/do!
 cs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Workspace_management-Breadcrumbs.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Pageflows_and_business_processes.html"><strong>Next</strong></a></li></ul><div class="section" title="6.8. Conversational components and JSF component bindings"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Conversations_and_workspace_management-Conversational_components_and_JSF_component_bindings">6.8. Conversational components and JSF component bindings</h2></div></div></div><div class="para">
+			Conversational components have one minor limitation: they cannot be used to hold bindings to JSF components. (We generally prefer not to use this feature of JSF unless absolutely necessary, since it creates a hard dependency from application logic to the view.) On a postback request, component bindings are updated during the Restore View phase, before the Seam conversation context has been restored.
+		</div><div class="para">
+			To work around this use an event scoped component to store the component bindings and inject it into the conversation scoped component that requires it.
+		</div><pre class="programlisting">@Name("grid")
+ at Scope(ScopeType.EVENT)
+public class Grid
+{
+    private HtmlPanelGrid htmlPanelGrid;
+
+    // getters and setters
+    ...
+}
+</pre><pre class="programlisting">@Name("gridEditor")
+ at Scope(ScopeType.CONVERSATION)
+public class GridEditor
+{
+    @In(required=false)
+    private Grid grid;
+    
+    ...
+}
+</pre></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Workspace_management-Breadcrumbs.html"><strong>Prev</strong>6.7.5. Breadcrumbs</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Pageflows_and_business_processes.html"><strong>Next</strong>Chapter 7. Pageflows and business processes</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Conversations_and_workspace_management-Nested_conversations.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Conversations_and_workspace_management-Nested_conversations.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Conversations_and_workspace_management-Nested_conversations.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>6.2. Nested conversations</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Conversations_and_workspace_management.html" title="Chapter 6. Conversations and workspace management" /><link rel="prev" href="Seam_Reference_Guide-Conversations_and_workspace_management.html" title="Chapter 6. Conversations and workspace management" /><link rel="next" href="Seam_Reference_Guide-Conversations_and_workspace_management-Starting_conversations_with_GET_requests.html" title="6.3. Starting conversations with GET requests" /></head><body class=""><p id=!
 "title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Conversations_and_workspace_management.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Conversations_and_workspace_management-Starting_conversations_with_GET_requests.html"><strong>Next</strong></a></li></ul><div class="section" title="6.2. Nested conversations"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Conversations_and_workspace_management-Nested_conversations">6.2. Nested conversations</h2></div></div></div><div class="para">
+			A nested conversation is created by invoking a method marked <code class="literal">@Begin(nested=true)</code> inside the scope of an existing conversation. A nested conversation has its own conversation context, and also has read-only access to the context of the outer conversation. (It can read the outer conversation's context variables, but not write to them.) When an <code class="literal">@End</code> is subsequently encountered, the nested conversation will be destroyed, and the outer conversation will resume, by <span class="emphasis"><em>popping</em></span> the conversation stack. Conversations may be nested to any arbitrary depth.
+		</div><div class="para">
+			Certain user activity (workspace management, or the back button) can cause the outer conversation to be resumed before the inner conversation is ended. In this case it is possible to have multiple concurrent nested conversations belonging to the same outer conversation. If the outer conversation ends before a nested conversation ends, Seam destroys all nested conversation contexts along with the outer context.
+		</div><div class="para">
+			A conversation may be thought of as a <span class="emphasis"><em>continuable state</em></span>. Nested conversations allow the application to capture a consistent continuable state at various points in a user interaction, thus insuring truly correct behavior in the face of backbuttoning and workspace management.
+		</div><div class="para">
+			Usually, if a component exists in a parent conversation of the current nested conversation, the nested conversation will use the same instance. Occasionally, it is useful to have a different instance in each nested conversation, so that the component instance that exists in the parent conversation is invisible to its child conversations. You can achieve this behavior by annotating the component <code class="literal">@PerNestedConversation</code>.
+		</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Conversations_and_workspace_management.html"><strong>Prev</strong>Chapter 6. Conversations and workspace management</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Conversations_and_workspace_management-Starting_conversations_with_GET_requests.html"><strong>Next</strong>6.3. Starting conversations with GET requests</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Conversations_and_workspace_management-Starting_conversations_with_GET_requests.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Conversations_and_workspace_management-Starting_conversations_with_GET_requests.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Conversations_and_workspace_management-Starting_conversations_with_GET_requests.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>6.3. Starting conversations with GET requests</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Conversations_and_workspace_management.html" title="Chapter 6. Conversations and workspace management" /><link rel="prev" href="Seam_Reference_Guide-Conversations_and_workspace_management-Nested_conversations.html" title="6.2. Nested conversations" /><link rel="next" href="Seam_Reference_Guide-Conversations_and_workspace_management-Using_slink_and_sbutton.html" title="6.4. Using &lt;s:link&gt; and &lt;s:button&gt;" /></head><body class=""><p id=!
 "title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Conversations_and_workspace_management-Nested_conversations.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Conversations_and_workspace_management-Using_slink_and_sbutton.html"><strong>Next</strong></a></li></ul><div class="section" title="6.3. Starting conversations with GET requests"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Conversations_and_workspace_management-Starting_conversations_with_GET_requests">6.3. Starting conversations with GET requests</h2></div></div></div><div class="para">
+			JSF does not define any kind of action listener that is triggered when a page is accessed via a non-faces request (for example, a HTTP GET request). This can occur if the user bookmarks the page, or if we navigate to the page via an <code class="literal">&lt;h:outputLink&gt;</code>.
+		</div><div class="para">
+			Sometimes we want to begin a conversation immediately the page is accessed. Since there is no JSF action method, we can't solve the problem in the usual way, by annotating the action with <code class="literal">@Begin</code>.
+		</div><div class="para">
+			A further problem arises if the page needs some state to be fetched into a context variable. We have already seen two ways to solve this problem. If that state is held in a Seam component, we can fetch the state in a <code class="literal">@Create</code> method. If not, we can define a <code class="literal">@Factory</code> method for the context variable.
+		</div><div class="para">
+			If none of these options works for you, Seam lets you define a <span class="emphasis"><em>page action</em></span> in the <code class="literal">pages.xml</code> file.
+		</div><pre class="programlisting">&lt;pages&gt;
+    &lt;page view-id="/messageList.jsp" action="#{messageManager.list}"/&gt;
+    ...
+&lt;/pages&gt;
+</pre><div class="para">
+			This action method is called at the beginning of the render response phase, any time the page is about to be rendered. If a page action returns a non-null outcome, Seam will process any appropriate JSF and Seam navigation rules, possibly resulting in a completely different page being rendered.
+		</div><div class="para">
+			If <span class="emphasis"><em>all</em></span> you want to do before rendering the page is begin a conversation, you could use a built-in action method that does just that:
+		</div><pre class="programlisting">&lt;pages&gt;
+    &lt;page view-id="/messageList.jsp" action="#{conversation.begin}"/&gt;
+    ...
+&lt;/pages&gt;
+</pre><div class="para">
+			Note that you can also call this built-in action from a JSF control, and, similarly, you can use <code class="literal">#{conversation.end}</code> to end conversations.
+		</div><div class="para">
+			If you want more control, to join existing conversations or begin a nested conversion, to begin a pageflow or an atomic conversation, you should use the <code class="literal">&lt;begin-conversation&gt;</code> element.
+		</div><pre class="programlisting">&lt;pages&gt;
+    &lt;page view-id="/messageList.jsp"&gt;
+       &lt;begin-conversation nested="true" pageflow="AddItem"/&gt;
+    &lt;page&gt;
+    ...
+&lt;/pages&gt;
+</pre><div class="para">
+			There is also an <code class="literal">&lt;end-conversation&gt;</code> element.
+		</div><pre class="programlisting">&lt;pages&gt;
+    &lt;page view-id="/home.jsp"&gt;
+       &lt;end-conversation/&gt;
+    &lt;page&gt;
+    ...
+&lt;/pages&gt;
+</pre><div class="para">
+			To solve the first problem, we now have five options:
+		</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+					Annotate the <code class="literal">@Create</code> method with <code class="literal">@Begin</code>
+				</div></li><li class="listitem"><div class="para">
+					Annotate the <code class="literal">@Factory</code> method with <code class="literal">@Begin</code>
+				</div></li><li class="listitem"><div class="para">
+					Annotate the Seam page action method with <code class="literal">@Begin</code>
+				</div></li><li class="listitem"><div class="para">
+					Use <code class="literal">&lt;begin-conversation&gt;</code> in <code class="literal">pages.xml</code>.
+				</div></li><li class="listitem"><div class="para">
+					Use <code class="literal">#{conversation.begin}</code> as the Seam page action method
+				</div></li></ul></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Conversations_and_workspace_management-Nested_conversations.html"><strong>Prev</strong>6.2. Nested conversations</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Conversations_and_workspace_management-Using_slink_and_sbutton.html"><strong>Next</strong>6.4. Using &lt;s:link&gt; and &lt;s:button&gt;</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Conversations_and_workspace_management-Success_messages.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Conversations_and_workspace_management-Success_messages.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Conversations_and_workspace_management-Success_messages.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>6.5. Success messages</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Conversations_and_workspace_management.html" title="Chapter 6. Conversations and workspace management" /><link rel="prev" href="Seam_Reference_Guide-Conversations_and_workspace_management-Using_slink_and_sbutton.html" title="6.4. Using &lt;s:link&gt; and &lt;s:button&gt;" /><link rel="next" href="Seam_Reference_Guide-Conversations_and_workspace_management-Using_an_explicit_conversation_id.html" title="6.6. Using an explicit conversation ID" /></head><body class=""><p i!
 d="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Conversations_and_workspace_management-Using_slink_and_sbutton.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Conversations_and_workspace_management-Using_an_explicit_conversation_id.html"><strong>Next</strong></a></li></ul><div class="section" title="6.5. Success messages"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Conversations_and_workspace_management-Success_messages">6.5. Success messages</h2></div></div></div><div class="para">
+			It is quite common to display a message to the user indicating success or failure of an action. It is convenient to use a JSF <code class="literal">FacesMessage</code> for this. Unfortunately, a successful action often requires a browser redirect, and JSF does not propagate faces messages across redirects. This makes it quite difficult to display success messages in plain JSF.
+		</div><div class="para">
+			The built in conversation-scoped Seam component named <code class="literal">facesMessages</code> solves this problem. (You must have the Seam redirect filter installed.)
+		</div><pre class="programlisting">@Name("editDocumentAction")
+ at Stateless
+public class EditDocumentBean implements EditDocument {
+    @In EntityManager em;
+    @In Document document;
+    @In FacesMessages facesMessages;
+    
+    public String update() {
+        em.merge(document);
+        facesMessages.add("Document updated");
+    }
+}
+</pre><div class="para">
+			Any message added to <code class="literal">facesMessages</code> is used in the very next render response phase for the current conversation. This even works when there is no long-running conversation since Seam preserves even temporary conversation contexts across redirects.
+		</div><div class="para">
+			You can even include JSF EL expressions in a faces message summary:
+		</div><pre class="programlisting">facesMessages.add("Document #{document.title} was updated");
+</pre><div class="para">
+			You may display the messages in the usual way, for example:
+		</div><pre class="programlisting">&lt;h:messages globalOnly="true"/&gt;
+</pre></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Conversations_and_workspace_management-Using_slink_and_sbutton.html"><strong>Prev</strong>6.4. Using &lt;s:link&gt; and &lt;s:button&gt;</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Conversations_and_workspace_management-Using_an_explicit_conversation_id.html"><strong>Next</strong>6.6. Using an explicit conversation ID</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Conversations_and_workspace_management-Using_an_explicit_conversation_id.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Conversations_and_workspace_management-Using_an_explicit_conversation_id.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Conversations_and_workspace_management-Using_an_explicit_conversation_id.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>6.6. Using an explicit conversation ID</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Conversations_and_workspace_management.html" title="Chapter 6. Conversations and workspace management" /><link rel="prev" href="Seam_Reference_Guide-Conversations_and_workspace_management-Success_messages.html" title="6.5. Success messages" /><link rel="next" href="Seam_Reference_Guide-Conversations_and_workspace_management-Workspace_management.html" title="6.7. Workspace management" /></head><body class=""><p id="title"><a class="left" href="http://ww!
 w.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Conversations_and_workspace_management-Success_messages.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Conversations_and_workspace_management-Workspace_management.html"><strong>Next</strong></a></li></ul><div class="section" title="6.6. Using an explicit conversation ID"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Conversations_and_workspace_management-Using_an_explicit_conversation_id">6.6. Using an <span class="emphasis"><em>explicit</em></span> conversation ID</h2></div></div></div><div class="para">
+			Ordinarily, Seam generates a meaningless unique ID for each conversation in each session. You can customize the id value when you begin the conversation.
+		</div><div class="para">
+			This feature can be used to customize the conversation id generation algorithm like so:
+		</div><pre class="programlisting">@Begin(id="#{myConversationIdGenerator.nextId}") 
+public void editHotel() { ... }
+</pre><div class="para">
+			Or it can be used to assign a meaningful conversation id:
+		</div><pre class="programlisting">@Begin(id="hotel#{hotel.id}") 
+public String editHotel() { ... }
+</pre><pre class="programlisting">@Begin(id="hotel#{hotelsDataModel.rowData.id}") 
+public String selectHotel() { ... }
+</pre><pre class="programlisting">@Begin(id="entry#{params['blogId']}")
+public String viewBlogEntry() { ... }
+</pre><pre class="programlisting">@BeginTask(id="task#{taskInstance.id}") 
+public String approveDocument() { ... }
+</pre><div class="para">
+			Clearly, these example result in the same conversation id every time a particular hotel, blog or task is selected. So what happens if a conversation with the same conversation id already exists when the new conversation begins? Well, Seam detects the existing conversation and redirects to that conversation without running the <code class="literal">@Begin</code> method again. This feature helps control the number of workspaces that are created when using workspace management.
+		</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Conversations_and_workspace_management-Success_messages.html"><strong>Prev</strong>6.5. Success messages</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Conversations_and_workspace_management-Workspace_management.html"><strong>Next</strong>6.7. Workspace management</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Conversations_and_workspace_management-Using_slink_and_sbutton.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Conversations_and_workspace_management-Using_slink_and_sbutton.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Conversations_and_workspace_management-Using_slink_and_sbutton.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>6.4. Using &lt;s:link&gt; and &lt;s:button&gt;</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Conversations_and_workspace_management.html" title="Chapter 6. Conversations and workspace management" /><link rel="prev" href="Seam_Reference_Guide-Conversations_and_workspace_management-Starting_conversations_with_GET_requests.html" title="6.3. Starting conversations with GET requests" /><link rel="next" href="Seam_Reference_Guide-Conversations_and_workspace_management-Success_messages.html" title="6.5. Success messages" /></head><body class=!
 ""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Conversations_and_workspace_management-Starting_conversations_with_GET_requests.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Conversations_and_workspace_management-Success_messages.html"><strong>Next</strong></a></li></ul><div class="section" title="6.4. Using &lt;s:link&gt; and &lt;s:button&gt;"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Conversations_and_workspace_management-Using_slink_and_sbutton">6.4. Using <code class="literal">&lt;s:link&gt;</code> and <code class="literal">&lt;s:button&gt;</code></h2></div></div></div><div class="para!
 ">
+			JSF command links always perform a form submission via JavaScript, which breaks the web browser's "open in new window" or "open in new tab" feature. In plain JSF, you need to use an <code class="literal">&lt;h:outputLink&gt;</code> if you need this functionality. But there are two major limitations to <code class="literal">&lt;h:outputLink&gt;</code>.
+		</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+					JSF provides no way to attach an action listener to an <code class="literal">&lt;h:outputLink&gt;</code>.
+				</div></li><li class="listitem"><div class="para">
+					JSF does not propagate the selected row of a <code class="literal">DataModel</code> since there is no actual form submission.
+				</div></li></ul></div><div class="para">
+			Seam provides the notion of a <span class="emphasis"><em>page action</em></span> to help solve the first problem, but this does nothing to help us with the second problem. We <span class="emphasis"><em>could</em></span> work around this by using the RESTful approach of passing a request parameter and requerying for the selected object on the server side. In some cases—such as the Seam blog example application—this is indeed the best approach. The RESTful style supports bookmarking, since it does not require server-side state. In other cases, where we don't care about bookmarks, the use of <code class="literal">@DataModel</code> and <code class="literal">@DataModelSelection</code> is just so convenient and transparent!
+		</div><div class="para">
+			To fill in this missing functionality, and to make conversation propagation even simpler to manage, Seam provides the <code class="literal">&lt;s:link&gt;</code> JSF tag.
+		</div><div class="para">
+			The link may specify just the JSF view id:
+		</div><pre class="programlisting">&lt;s:link view=“/login.xhtml” value=“Login”/&gt;
+</pre><div class="para">
+			Or, it may specify an action method (in which case the action outcome determines the page that results):
+		</div><pre class="programlisting">&lt;s:link action=“#{login.logout}” value=“Logout”/&gt;
+</pre><div class="para">
+			If you specify <span class="emphasis"><em>both</em></span> a JSF view id and an action method, the 'view' will be used <span class="emphasis"><em>unless</em></span> the action method returns a non-null outcome:
+		</div><pre class="programlisting">&lt;s:link view="/loggedOut.xhtml"  action=“#{login.logout}” value=“Logout”/&gt;
+</pre><div class="para">
+			The link automatically propagates the selected row of a <code class="literal">DataModel</code> using inside <code class="literal">&lt;h:dataTable&gt;</code>:
+		</div><pre class="programlisting">&lt;s:link view=“/hotel.xhtml” action=“#{hotelSearch.selectHotel}” value=“#{hotel.name}”/&gt;
+</pre><div class="para">
+			You can leave the scope of an existing conversation:
+		</div><pre class="programlisting">&lt;s:link view=“/main.xhtml” propagation=“none”/&gt;
+</pre><div class="para">
+			You can begin, end, or nest conversations:
+		</div><pre class="programlisting">&lt;s:link action=“#{issueEditor.viewComment}” propagation=“nest”/&gt;
+</pre><div class="para">
+			If the link begins a conversation, you can even specify a pageflow to be used:
+		</div><pre class="programlisting">&lt;s:link action=“#{documentEditor.getDocument}” propagation=“begin” 
+        pageflow=“EditDocument”/&gt;
+</pre><div class="para">
+			The <code class="literal">taskInstance</code> attribute if for use in jBPM task lists:
+		</div><pre class="programlisting">&lt;s:link action=“#{documentApproval.approveOrReject}” taskInstance=“#{task}”/&gt;
+</pre><div class="para">
+			(See the DVD Store demo application for examples of this.)
+		</div><div class="para">
+			Finally, if you need the <span class="emphasis"><em>link</em></span> to be rendered as a button, use <code class="literal">&lt;s:button&gt;</code>:
+		</div><pre class="programlisting">&lt;s:button action=“#{login.logout}” value=“Logout”/&gt;
+</pre></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Conversations_and_workspace_management-Starting_conversations_with_GET_requests.html"><strong>Prev</strong>6.3. Starting conversations with GET requests</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Conversations_and_workspace_management-Success_messages.html"><strong>Next</strong>6.5. Success messages</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Conversations_and_workspace_management-Workspace_management.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Conversations_and_workspace_management-Workspace_management.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Conversations_and_workspace_management-Workspace_management.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>6.7. Workspace management</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Conversations_and_workspace_management.html" title="Chapter 6. Conversations and workspace management" /><link rel="prev" href="Seam_Reference_Guide-Conversations_and_workspace_management-Using_an_explicit_conversation_id.html" title="6.6. Using an explicit conversation ID" /><link rel="next" href="Seam_Reference_Guide-Workspace_management-Workspace_management_and_jPDL_pageflow.html" title="6.7.2. Workspace management and jPDL pageflow" /></head><body class=""><p i!
 d="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Conversations_and_workspace_management-Using_an_explicit_conversation_id.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Workspace_management-Workspace_management_and_jPDL_pageflow.html"><strong>Next</strong></a></li></ul><div class="section" title="6.7. Workspace management"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Conversations_and_workspace_management-Workspace_management">6.7. Workspace management</h2></div></div></div><div class="para">
+			Workspace management is the ability to <span class="emphasis"><em>switch</em></span> conversations in a single window. Seam makes workspace management completely transparent at the level of the Java code. To enable workspace management, all you need to do is:
+		</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+					Provide <span class="emphasis"><em>description</em></span> text for each view ID (when using JSF or Seam navigation rules) or page node (when using jPDL pageflows). This description text is displayed to the user by the workspace switchers.
+				</div></li><li class="listitem"><div class="para">
+					Include one or more of the standard workspace switcher JSP or facelets fragments in your pages. The standard fragments support workspace management via a drop down menu, a list of conversations, or breadcrumbs.
+				</div></li></ul></div><div class="section" title="6.7.1. Workspace management and JSF navigation"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Workspace_management-Workspace_management_and_JSF_navigation">6.7.1. Workspace management and JSF navigation</h3></div></div></div><div class="para">
+				When you use JSF or Seam navigation rules, Seam switches to a conversation by restoring the current <code class="literal">view-id</code> for that conversation. The descriptive text for the workspace is defined in a file called <code class="literal">pages.xml</code> that Seam expects to find in the <code class="literal">WEB-INF</code> directory, right next to <code class="literal">faces-config.xml</code>:
+			</div><pre class="programlisting">&lt;pages&gt;
+    &lt;page view-id="/main.xhtml"&gt;Search hotels: #{hotelBooking.searchString}&lt;/page&gt;
+    &lt;page view-id="/hotel.xhtml"&gt;View hotel: #{hotel.name}&lt;/page&gt;
+    &lt;page view-id="/book.xhtml"&gt;Book hotel: #{hotel.name}&lt;/page&gt;
+    &lt;page view-id="/confirm.xhtml"&gt;Confirm: #{booking.description}&lt;/page&gt;
+&lt;/pages&gt;
+</pre><div class="note"><h2>Note</h2><div class="para">
+					Note that if this file is missing, the Seam application will continue to work perfectly, the only missing functionality will be the ability to switch workspaces.
+				</div></div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Conversations_and_workspace_management-Using_an_explicit_conversation_id.html"><strong>Prev</strong>6.6. Using an explicit conversation ID</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Workspace_management-Workspace_management_and_jPDL_pageflow.html"><strong>Next</strong>6.7.2. Workspace management and jPDL pageflow</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Conversations_and_workspace_management.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Conversations_and_workspace_management.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Conversations_and_workspace_management.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 6. Conversations and workspace management</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="index.html" title="Seam Reference Guide CP07" /><link rel="prev" href="Seam_Reference_Guide-Managing_exceptions-Using_XML_for_exception_handling.html" title="5.3.4. Using XML for exception handling" /><link rel="next" href="Seam_Reference_Guide-Conversations_and_workspace_management-Nested_conversations.html" title="6.2. Nested conversations" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/im!
 age_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Managing_exceptions-Using_XML_for_exception_handling.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Conversations_and_workspace_management-Nested_conversations.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="chapter" title="Chapter 6. Conversations and workspace management" lang="en-US"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Conversations_and_workspace_management">Chapter 6. Conversations and workspace management</h2></div></div></div><div class="toc"><dl><dt><span class="section"><a href="Seam_Reference_Guide-Conversations_and_workspace_management.html#Seam_Reference_Guide-Conversations_and_workspace_management-Sea!
 ms_conversation_model">6.1. Seam's conversation model</a></spa!
 n></dt><
dt><span class="section"><a href="Seam_Reference_Guide-Conversations_and_workspace_management-Nested_conversations.html">6.2. Nested conversations</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Conversations_and_workspace_management-Starting_conversations_with_GET_requests.html">6.3. Starting conversations with GET requests</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Conversations_and_workspace_management-Using_slink_and_sbutton.html">6.4. Using <code class="literal">&lt;s:link&gt;</code> and <code class="literal">&lt;s:button&gt;</code></a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Conversations_and_workspace_management-Success_messages.html">6.5. Success messages</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Conversations_and_workspace_management-Using_an_explicit_conversation_id.html">6.6. Using an <span class="emphasis"><em>explicit</em></span> conversation ID</a></span><!
 /dt><dt><span class="section"><a href="Seam_Reference_Guide-Conversations_and_workspace_management-Workspace_management.html">6.7. Workspace management</a></span></dt><dd><dl><dt><span class="section"><a href="Seam_Reference_Guide-Conversations_and_workspace_management-Workspace_management.html#Seam_Reference_Guide-Workspace_management-Workspace_management_and_JSF_navigation">6.7.1. Workspace management and JSF navigation</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Workspace_management-Workspace_management_and_jPDL_pageflow.html">6.7.2. Workspace management and jPDL pageflow</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Workspace_management-The_conversation_switcher.html">6.7.3. The conversation switcher</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Workspace_management-The_conversation_list.html">6.7.4. The conversation list</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Wo!
 rkspace_management-Breadcrumbs.html">6.7.5. Breadcrumbs</a></s!
 pan></dt
></dl></dd><dt><span class="section"><a href="Seam_Reference_Guide-Conversations_and_workspace_management-Conversational_components_and_JSF_component_bindings.html">6.8. Conversational components and JSF component bindings</a></span></dt></dl></div><div class="para">
+		It is time to understand Seam's conversation model in more detail.
+	</div><div class="section" title="6.1. Seam's conversation model"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Conversations_and_workspace_management-Seams_conversation_model">6.1. Seam's conversation model</h2></div></div></div><div class="para">
+			The examples we have seen so far make use of a very simple conversation model that follows these rules:
+		</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+					There is always a conversation context active during the apply request values, process validations, update model values, invoke application and render response phases of the JSF request lifecycle.
+				</div></li><li class="listitem"><div class="para">
+					At the end of the restore view phase of the JSF request lifecycle, Seam attempts to restore any previous long-running conversation context. If none exists, Seam creates a new temporary conversation context.
+				</div></li><li class="listitem"><div class="para">
+					When an <code class="literal">@Begin</code> method is encountered, the temporary conversation context is promoted to a long running conversation.
+				</div></li><li class="listitem"><div class="para">
+					When an <code class="literal">@End</code> method is encountered, any long-running conversation context is demoted to a temporary conversation.
+				</div></li><li class="listitem"><div class="para">
+					At the end of the render response phase of the JSF request lifecycle, Seam stores the contents of a long running conversation context or destroys the contents of a temporary conversation context.
+				</div></li><li class="listitem"><div class="para">
+					Any faces request (a JSF postback) will propagate the conversation context. By default, non-faces requests (GET requests, for example) do not propagate the conversation context, but see below for more information on this.
+				</div></li><li class="listitem"><div class="para">
+					If the JSF request lifecycle is foreshortened by a redirect, Seam transparently stores and restores the current conversation context—unless the conversation was already ended via <code class="literal">@End(beforeRedirect=true)</code>.
+				</div></li></ul></div><div class="para">
+			Seam transparently propagates the conversation context across JSF postbacks and redirects. If you do not do anything special, a <span class="emphasis"><em>non-faces request</em></span> (a GET request for example) will not propagate the conversation context and will be processed in a new temporary conversation. This is usually - but not always - the desired behavior.
+		</div><div class="para">
+			If you want to propagate a Seam conversation across a non-faces request, you need to explicitly code the Seam <span class="emphasis"><em>conversation id</em></span> as a request parameter:
+		</div><pre class="programlisting">&lt;a href="main.jsf?conversationId=#{conversation.id}"&gt;Continue&lt;/a&gt;
+</pre><div class="para">
+			Or, the more JSF-ish:
+		</div><pre class="programlisting">&lt;h:outputLink value="main.jsf"&gt;
+    &lt;f:param name="conversationId" value="#{conversation.id}"/&gt;
+    &lt;h:outputText value="Continue"/&gt;
+&lt;/h:outputLink&gt;
+</pre><div class="para">
+			If you use the Seam tag library, this is equivalent:
+		</div><pre class="programlisting">&lt;h:outputLink value="main.jsf"&gt;
+    &lt;s:conversationId/&gt;
+    &lt;h:outputText value="Continue"/&gt;
+&lt;/h:outputLink&gt;
+</pre><div class="para">
+			If you wish to disable propagation of the conversation context for a postback, a similar trick is used:
+		</div><pre class="programlisting">&lt;h:commandLink action="main" value="Exit"&gt;
+    &lt;f:param name="conversationPropagation" value="none"/&gt;
+&lt;/h:commandLink&gt;
+</pre><div class="para">
+			If you use the Seam tag library, this is equivalent:
+		</div><pre class="programlisting">&lt;h:commandLink action="main" value="Exit"&gt;
+    &lt;s:conversationPropagation type="none"/&gt;
+&lt;/h:commandLink&gt;
+</pre><div class="para">
+			Note that disabling conversation context propagation is absolutely not the same thing as ending the conversation.
+		</div><div class="para">
+			The <code class="literal">conversationPropagation</code> request parameter, or the <code class="literal">&lt;s:conversationPropagation&gt;</code> tag may even be used to begin and end conversation, or begin a nested conversation.
+		</div><pre class="programlisting">&lt;h:commandLink action="main" value="Exit"&gt;
+    &lt;s:conversationPropagation type="end"/&gt;
+&lt;/h:commandLink&gt;
+</pre><pre class="programlisting">&lt;h:commandLink action="main" value="Select Child"&gt;
+    &lt;s:conversationPropagation type="nested"/&gt;
+&lt;/h:commandLink&gt;
+</pre><pre class="programlisting">&lt;h:commandLink action="main" value="Select Hotel"&gt;
+    &lt;s:conversationPropagation type="begin"/&gt;
+&lt;/h:commandLink&gt;
+</pre><pre class="programlisting">&lt;h:commandLink action="main" value="Select Hotel"&gt;
+    &lt;s:conversationPropagation type="join"/&gt;
+&lt;/h:commandLink&gt;
+</pre><div class="para">
+			This conversation model makes it easy to build applications which behave correctly with respect to multi-window operation. For many applications, this is all that is needed. Some complex applications have either or both of the following additional requirements:
+		</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+					A conversation spans many smaller units of user interaction, which execute serially or even concurrently. The smaller <span class="emphasis"><em>nested conversations</em></span> have their own isolated set of conversation state, and also have access to the state of the outer conversation.
+				</div></li><li class="listitem"><div class="para">
+					The user is able to switch between many conversations within the same browser window. This feature is called <span class="emphasis"><em>workspace management</em></span>.
+				</div></li></ul></div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Managing_exceptions-Using_XML_for_exception_handling.html"><strong>Prev</strong>5.3.4. Using XML for exception handling</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Conversations_and_workspace_management-Nested_conversations.html"><strong>Next</strong>6.2. Nested conversations</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Document_Constants-Alignment_Values.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Document_Constants-Alignment_Values.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Document_Constants-Alignment_Values.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>15.8.2. Alignment Values</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-iText_PDF_generation-Document_Constants.html" title="15.8. Document Constants" /><link rel="prev" href="Seam_Reference_Guide-iText_PDF_generation-Document_Constants.html" title="15.8. Document Constants" /><link rel="next" href="Seam_Reference_Guide-iText_PDF_generation-Configuring_iText.html" title="15.9. Configuring iText" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Pro!
 duct Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-iText_PDF_generation-Document_Constants.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-iText_PDF_generation-Configuring_iText.html"><strong>Next</strong></a></li></ul><div class="section" title="15.8.2. Alignment Values"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Document_Constants-Alignment_Values">15.8.2. Alignment Values</h3></div></div></div><div class="para">
+				Where alignment values are used, the Seam PDF supports the following horizontal alignment values: <code class="literal">left</code>, <code class="literal">right</code>, <code class="literal">center</code>, <code class="literal">justify</code> and <code class="literal">justifyall</code>. The vertical alignment values are <code class="literal">top</code>, <code class="literal">middle</code>, <code class="literal">bottom</code>, and <code class="literal">baseline</code>.
+			</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-iText_PDF_generation-Document_Constants.html"><strong>Prev</strong>15.8. Document Constants</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-iText_PDF_generation-Configuring_iText.html"><strong>Next</strong>15.9. Configuring iText</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Email-Configuration.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Email-Configuration.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Email-Configuration.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>16.3. Configuration</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Email.html" title="Chapter 16. Email" /><link rel="prev" href="Seam_Reference_Guide-Email-Receiving_emails.html" title="16.2. Receiving emails" /><link rel="next" href="Seam_Reference_Guide-Email-Tags.html" title="16.4. Tags" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right!
 .png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Email-Receiving_emails.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Email-Tags.html"><strong>Next</strong></a></li></ul><div class="section" title="16.3. Configuration"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Email-Configuration">16.3. Configuration</h2></div></div></div><div class="para">
+			To include Email support in your application, include <code class="literal">jboss-seam-mail.jar</code> in your WEB-INF/lib directory. If you are using JBoss AS there is no further configuration needed to use Seam's email support. Otherwise you need to make sure you have the JavaMail API, an implementation of the JavaMail API present (the API and impl used in JBoss AS are distributed with seam as <code class="literal">lib/mail.jar</code>), and a copy of the Java Activation Framework (distributed with seam as <code class="literal">lib/activation.jar</code>.
+		</div><div class="para">
+			The Seam Email module requires the use of Facelets as the view technology. Future versions of the library may also support the use of JSP. Additionally, it requires the use of the seam-ui package.
+		</div><div class="para">
+			The <code class="literal">mailSession</code> component uses JavaMail to talk to a 'real' SMTP server.
+		</div><div class="section" title="16.3.1. mailSession"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Configuration-mailSession">16.3.1. <code class="literal">mailSession</code></h3></div></div></div><div class="para">
+				A JavaMail Session may be available via a JNDI lookup if you are working in an JEE environment or you can use a Seam configured Session.
+			</div><div class="para">
+				The mailSession component's properties are described in more detail in the Mail related components section.
+			</div><div class="section" title="16.3.1.1. JNDI lookup in JBoss AS"><div class="titlepage"><div><div><h4 class="title" id="Seam_Reference_Guide-mailSession-JNDI_lookup_in_JBoss_AS">16.3.1.1. JNDI lookup in JBoss AS</h4></div></div></div><div class="para">
+					The JBossAS <code class="literal">deploy/mail-service.xml</code> configures a JavaMail session binding into JNDI. The default service configuration will need altering for your network. <a href="http://wiki.jboss.org/wiki/Wiki.jsp?page=JavaMail">http://wiki.jboss.org/wiki/Wiki.jsp?page=JavaMail</a> describes the service in more detail.
+				</div><pre class="programlisting">&lt;components xmlns="http://jboss.com/products/seam/components"
+        xmlns:core="http://jboss.com/products/seam/core"
+        xmlns:mail="http://jboss.com/products/seam/mail"&gt;
+        
+    &lt;mail:mail-session session-jndi-name="java:/Mail"/&gt;
+    
+&lt;/components&gt;
+</pre><div class="para">
+					Here we tell Seam to get the mail session bound to <code class="literal">java:/Mail</code> from JNDI.
+				</div></div><div class="section" title="16.3.1.2. Seam configured Session"><div class="titlepage"><div><div><h4 class="title" id="Seam_Reference_Guide-mailSession-Seam_configured_Session">16.3.1.2. Seam configured Session</h4></div></div></div><div class="para">
+					A mail session can be configured via <code class="literal">components.xml</code>. Here we tell Seam to use <code class="literal">smtp.example.com</code> as the smtp server,
+				</div><pre class="programlisting">&lt;components xmlns="http://jboss.com/products/seam/components"
+        xmlns:core="http://jboss.com/products/seam/core"
+        xmlns:mail="http://jboss.com/products/seam/mail"&gt;
+        
+    &lt;mail:mail-session host="smtp.example.com"/&gt;
+    
+&lt;/components&gt;
+</pre></div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Email-Receiving_emails.html"><strong>Prev</strong>16.2. Receiving emails</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Email-Tags.html"><strong>Next</strong>16.4. Tags</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Email-Receiving_emails.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Email-Receiving_emails.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Email-Receiving_emails.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>16.2. Receiving emails</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Email.html" title="Chapter 16. Email" /><link rel="prev" href="Seam_Reference_Guide-Email.html" title="Chapter 16. Email" /><link rel="next" href="Seam_Reference_Guide-Email-Configuration.html" title="16.3. Configuration" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right!
 .png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Email.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Email-Configuration.html"><strong>Next</strong></a></li></ul><div class="section" title="16.2. Receiving emails"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Email-Receiving_emails">16.2. Receiving emails</h2></div></div></div><div class="para">
+			If you are using EJB then you can use a MDB (Message Driven Bean) to receive email. Seam comes with an improved version of <code class="literal">mail-ra.rar</code> as distributed in JBoss AS; until the improvements make there way into a released version of JBoss AS, replacing the default <code class="literal">rar</code> with the one distributed with Seam is recommended.
+		</div><div class="para">
+			You can configure it like this:
+		</div><pre class="programlisting">@MessageDriven(activationConfig={
+         @ActivationConfigProperty(propertyName="mailServer", propertyValue="localhost"),
+         @ActivationConfigProperty(propertyName="mailFolder", propertyValue="INBOX"),
+         @ActivationConfigProperty(propertyName="storeProtocol", propertyValue="pop3"),
+         @ActivationConfigProperty(propertyName="userName", propertyValue="seam"),
+         @ActivationConfigProperty(propertyName="password", propertyValue="seam")
+})
+ at ResourceAdapter("mail-ra.rar")
+ at Name("mailListener")
+public class MailListenerMDB implements MailListener {
+
+   @In(create=true)
+   private OrderProcessor orderProcessor;
+
+   public void onMessage(Message message) {
+      // Process the message
+      orderProcessor.process(message.getSubject());
+   }
+   
+}
+</pre><div class="para">
+			Each message received will cause <code class="literal">onMessage(Message message)</code> to be called. Most seam annotations will work inside a MDB but you must not access the persistence context.
+		</div><div class="para">
+			You can find more information on the default <code class="literal">mail-ra.rar</code> at <a href="http://wiki.jboss.org/wiki/Wiki.jsp?page=InboundJavaMail">http://wiki.jboss.org/wiki/Wiki.jsp?page=InboundJavaMail</a>. The version distributed with Seam also includes a <code class="literal">debug</code> property to enable JavaMail debugging, a <code class="literal">flush</code> property (by default true) to disable flushing a <code class="literal">POP3</code> mailbox after successfullying delivering a message to your MDB and a <code class="literal">port</code> property to override the default TCP port.
+		</div><div class="note"><h2>Note</h2><div class="para">
+				The api for this may be altered as changes make there way into the JBoss Enterprise Application Platform.
+			</div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Email.html"><strong>Prev</strong>Chapter 16. Email</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Email-Configuration.html"><strong>Next</strong>16.3. Configuration</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Email-Tags.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Email-Tags.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Email-Tags.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>16.4. Tags</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Email.html" title="Chapter 16. Email" /><link rel="prev" href="Seam_Reference_Guide-Email-Configuration.html" title="16.3. Configuration" /><link rel="next" href="Seam_Reference_Guide-Asynchronicity_and_messaging.html" title="Chapter 17. Asynchronicity and messaging" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src=!
 "Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Email-Configuration.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Asynchronicity_and_messaging.html"><strong>Next</strong></a></li></ul><div class="section" title="16.4. Tags"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Email-Tags">16.4. Tags</h2></div></div></div><div class="para">
+			Emails are generated using tags in the <code class="literal">http://jboss.com/products/seam/mail</code> namespace. Documents should always have the <code class="literal">message</code> tag at the root of the message. The message tag prepares Seam to generate an email.
+		</div><div class="para">
+			The standard templating tags of facelets can be used as normal. Inside the body you can use any JSF tag which does not require access to external resources (stylesheets, javascript).
+		</div><div class="variablelist"><dl><dt><span class="term">&lt;m:message&gt;</span></dt><dd><div class="para">
+						Root tag of a mail message
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">importance</code> — low, normal or high. By default normal, this sets the importance of the mail message.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">precedence</code> — sets the precedence of the message (for example, bulk).
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">requestReadReceipt</code> — by default false, if set, a read receipt will be request will be added, with the read receipt being sent to the <code class="literal">From:</code> address.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">urlBase</code> — If set, the value is prepended to the <code class="literal">requestContextPath</code> allowing you to use components such as <code class="literal">&lt;h:graphicImage&gt;</code> in your emails.
+							</div></li></ul></div></dd><dt><span class="term">&lt;m:from&gt;</span></dt><dd><div class="para">
+						Set's the From: address for the email. You can only have one of these per email.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">name</code> — the name the email should come from.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">address</code> — the email address the email should come from.
+							</div></li></ul></div></dd><dt><span class="term">&lt;m:replyTo&gt;</span></dt><dd><div class="para">
+						Set's the Reply-to: address for the email. You can only have one of these per email.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">address</code> — the email address the email should come from.
+							</div></li></ul></div></dd><dt><span class="term">&lt;m:to&gt;</span></dt><dd><div class="para">
+						Add a recipient to the email. Use multiple &lt;m:to&gt; tags for multiple recipients. This tag can be safely placed inside a repeat tag such as &lt;ui:repeat&gt;.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">name</code> — the name of the recipient.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">address</code> — the email address of the recipient.
+							</div></li></ul></div></dd><dt><span class="term">&lt;m:cc&gt;</span></dt><dd><div class="para">
+						Add a cc recipient to the email. Use multiple &lt;m:cc&gt; tags for multiple ccs. This tag can be safely placed inside a repeat tag such as &lt;ui:repeat&gt;.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">name</code> — the name of the recipient.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">address</code> — the email address of the recipient.
+							</div></li></ul></div></dd><dt><span class="term">&lt;m:bcc&gt;</span></dt><dd><div class="para">
+						Add a bcc recipient to the email. Use multiple &lt;m:bcc&gt; tags for multiple bccs. This tag can be safely placed inside a repeat tag such as &lt;ui:repeat&gt;.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">name</code> — the name of the recipient.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">address</code> — the email address of the recipient.
+							</div></li></ul></div></dd><dt><span class="term">&lt;m:header&gt;</span></dt><dd><div class="para">
+						Add a header to the email (for example, <code class="literal">X-Sent-From: JBoss Seam</code>
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">name</code> — The name of the header to add (e.g. <code class="literal">X-Sent-From</code>).
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">value</code> — The value of the header to add (e.g. <code class="literal">JBoss Seam</code>).
+							</div></li></ul></div></dd><dt><span class="term">&lt;m:attachment&gt;</span></dt><dd><div class="para">
+						Add an attachment to the email.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">value</code> — The file to attach:
+							</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+										<code class="literal">String</code> — A <code class="literal">String</code> is interpreted as a path to file within the classpath
+									</div></li><li class="listitem"><div class="para">
+										<code class="literal">java.io.File</code> — An EL expression can reference a <code class="literal">File</code> object
+									</div></li><li class="listitem"><div class="para">
+										<code class="literal">java.net.URL</code> — An EL expression can reference a <code class="literal">URL</code> object
+									</div></li><li class="listitem"><div class="para">
+										<code class="literal">java.io.InputStream</code> — An EL expression can reference an <code class="literal">InputStream</code>. In this case both a <code class="literal">fileName</code> and a <code class="literal">contentType</code> must be specified.
+									</div></li><li class="listitem"><div class="para">
+										<code class="literal">byte[]</code> — An EL expression can reference an <code class="literal">byte[]</code>. In this case both a <code class="literal">fileName</code> and a <code class="literal">contentType</code> must be specified.
+									</div></li></ul></div><div class="para">
+								If the value attribute is ommitted:
+							</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+										If this tag contains a <code class="literal">&lt;p:document&gt;</code> tag, the document described will be generated and attached to the email. A <code class="literal">fileName</code> should be specfied.
+									</div></li><li class="listitem"><div class="para">
+										If this tag contains other JSF tags a HTML document will be generated from them and attached to the email. A <code class="literal">fileName</code> should be specfied.
+									</div></li></ul></div></li><li class="listitem"><div class="para">
+								<code class="literal">fileName</code> — Specify the file name to use for the attached file.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">contentType</code> — Specify the MIME type of the attached file
+							</div></li></ul></div></dd><dt><span class="term">&lt;m:subject&gt;</span></dt><dd><div class="para">
+						Set's the subject for the email.
+					</div></dd><dt><span class="term">&lt;m:body&gt;</span></dt><dd><div class="para">
+						Set's the body for the email. Supports an <code class="literal">alternative</code> facet which, if an HTML email is generated can contain alternative text for a mail reader which doesn't support html.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">type</code> — If set to <code class="literal">plain</code> then a plain text email will be generated otherwise an HTML email is generated.
+							</div></li></ul></div></dd></dl></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Email-Configuration.html"><strong>Prev</strong>16.3. Configuration</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Asynchronicity_and_messaging.html"><strong>Next</strong>Chapter 17. Asynchronicity and messaging</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Email.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Email.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Email.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,136 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 16. Email</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="index.html" title="Seam Reference Guide CP07" /><link rel="prev" href="Seam_Reference_Guide-iText_PDF_generation-iText_links.html" title="15.10. iText links" /><link rel="next" href="Seam_Reference_Guide-Email-Receiving_emails.html" title="16.2. Receiving emails" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/imag!
 es/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-iText_PDF_generation-iText_links.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Email-Receiving_emails.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="chapter" title="Chapter 16. Email" lang="en-US"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Email">Chapter 16. Email</h2></div></div></div><div class="toc"><dl><dt><span class="section"><a href="Seam_Reference_Guide-Email.html#Seam_Reference_Guide-Email-Creating_a_message">16.1. Creating a message</a></span></dt><dd><dl><dt><span class="section"><a href="Seam_Reference_Guide-Email.html#Seam_Reference_Guide-Creating_a_message-Attachments">16.1.1. Attachments</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Email.html#Seam_Reference_Guide-Creating_a_message-HTMLTe!
 xt_alternative_part">16.1.2. HTML/Text alternative part</a></s!
 pan></dt
><dt><span class="section"><a href="Seam_Reference_Guide-Email.html#Seam_Reference_Guide-Creating_a_message-Multiple_recipients">16.1.3. Multiple recipients</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Email.html#Seam_Reference_Guide-Creating_a_message-Multiple_messages">16.1.4. Multiple messages</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Email.html#Seam_Reference_Guide-Creating_a_message-Templating">16.1.5. Templating</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Email.html#Seam_Reference_Guide-Creating_a_message-Internationalisation">16.1.6. Internationalisation</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Email.html#Seam_Reference_Guide-Creating_a_message-Other_Headers">16.1.7. Other Headers</a></span></dt></dl></dd><dt><span class="section"><a href="Seam_Reference_Guide-Email-Receiving_emails.html">16.2. Receiving emails</a></span></dt><dt><span class="section"><a hre!
 f="Seam_Reference_Guide-Email-Configuration.html">16.3. Configuration</a></span></dt><dd><dl><dt><span class="section"><a href="Seam_Reference_Guide-Email-Configuration.html#Seam_Reference_Guide-Configuration-mailSession">16.3.1. <code class="literal">mailSession</code></a></span></dt></dl></dd><dt><span class="section"><a href="Seam_Reference_Guide-Email-Tags.html">16.4. Tags</a></span></dt></dl></div><div class="para">
+		Seam now includes an optional components for templating and sending emails.
+	</div><div class="para">
+		Email support is provided by <code class="literal">jboss-seam-mail.jar</code>. This JAR contains the mail JSF controls, which are used to construct emails, and the <code class="literal">mailSession</code> manager component.
+	</div><div class="para">
+		The examples/mail project contains an example of the email support in action. It demonstrates proper packaging, and it contains a number of example that demonstrate the key features currently supported.
+	</div><div class="section" title="16.1. Creating a message"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Email-Creating_a_message">16.1. Creating a message</h2></div></div></div><div class="para">
+			You do not need to learn a whole new templating language to use Seam Mail—an email is just facelet!
+		</div><pre class="programlisting">&lt;m:message xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:m="http://jboss.com/products/seam/mail"
+    xmlns:h="http://java.sun.com/jsf/html"&gt;
+  
+    &lt;m:from name="Peter" address="peter at example.com" /&gt;
+    &lt;m:to name="#{person.firstname} #{person.lastname}"&gt;#{person.address}&lt;/m:to&gt;
+    &lt;m:subject&gt;Try out Seam!&lt;/m:subject&gt;
+    
+    &lt;m:body&gt;
+        &lt;p&gt;&lt;h:outputText value="Dear #{person.firstname}" /&gt;,&lt;/p&gt;
+        &lt;p&gt;You can try out Seam by visiting 
+        &lt;a href="http://labs.jboss.com/jbossseam"&gt;http://labs.jboss.com/jbossseam&lt;/a&gt;.&lt;/p&gt;
+        &lt;p&gt;Regards,&lt;/p&gt;
+        &lt;p&gt;Peter&lt;/p&gt;
+    &lt;/m:body&gt;
+    
+&lt;/m:message&gt;
+</pre><div class="para">
+			The <code class="literal">&lt;m:message&gt;</code> tag wraps the whole message, and tells Seam to start rendering an email. Inside the <code class="literal">&lt;m:message&gt;</code> tag we use an <code class="literal">&lt;m:from&gt;</code> tag to set who the message is from, a <code class="literal">&lt;m:to&gt;</code> tag to specify a sender (notice how we use EL as we would in a normal facelet), and a <code class="literal">&lt;m:subject&gt;</code> tag.
+		</div><div class="para">
+			The <code class="literal">&lt;m:body&gt;</code> tag wraps the body of the email. You can use regular HTML tags inside the body as well as JSF components.
+		</div><div class="para">
+			So, now you have your email template, how do you go about sending it? Well, at the end of rendering the <code class="literal">m:message</code> the <code class="literal">mailSession</code> is called to send the email, so all you have to do is ask Seam to render the view:
+		</div><pre class="programlisting">@In(create=true)
+private Renderer renderer;
+   
+public void send() {
+    try {
+       renderer.render("/simple.xhtml");
+       facesMessages.add("Email sent successfully");
+   } 
+   catch (Exception e) {
+       facesMessages.add("Email sending failed: " + e.getMessage());
+   }
+}
+</pre><div class="para">
+			If, for example, you entered an invalid email address, then an exception would be thrown, which is caught and then displayed to the user.
+		</div><div class="section" title="16.1.1. Attachments"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Creating_a_message-Attachments">16.1.1. Attachments</h3></div></div></div><div class="para">
+				Seam makes it easy to attach files to an email. It supports most of the standard java types used when working with files.
+			</div><div class="para">
+				If you wanted to email the <code class="literal">jboss-seam-mail.jar</code>:
+			</div><pre class="programlisting">&lt;m:attachment value="/WEB-INF/lib/jboss-seam-mail.jar"/&gt;
+</pre><div class="para">
+				Seam will load the file from the classpath, and attach it to the email. By default it would be attached as <code class="literal">jboss-seam-mail.jar</code>; if you wanted it to have another name you would just add the <code class="literal">fileName</code> attribute:
+			</div><pre class="programlisting">&lt;m:attachment value="/WEB-INF/lib/jboss-seam-mail.jar" fileName="this-is-so-cool.jar"/&gt;
+</pre><div class="para">
+				You could also attach a <code class="literal">java.io.File</code>, a <code class="literal">java.net.URL</code>:
+			</div><pre class="programlisting">&lt;m:attachment value="#{numbers}"/&gt;
+</pre><div class="para">
+				Or a <code class="literal">byte[]</code> or a <code class="literal">java.io.InputStream</code>:
+			</div><pre class="programlisting">&lt;m:attachment value="#{person.photo}" contentType="image/png"/&gt;
+</pre><div class="para">
+				You will notice that for a <code class="literal">byte[]</code> and a <code class="literal">java.io.InputStream</code> you need to specify the MIME type of the attachment (as that information is not carried as part of the file).
+			</div><div class="para">
+				And it gets even better, you can attach a Seam generated PDF, or any standard JSF view, just by wrapping a <code class="literal">&lt;m:attachment&gt;</code> around the normal tags you would use:
+			</div><pre class="programlisting">&lt;m:attachment fileName="tiny.pdf"&gt;
+    &lt;p:document&gt;                                                      
+        A very tiny PDF                                                                                                
+    &lt;/p:document&gt;
+&lt;/m:attachment&gt;
+</pre><div class="para">
+				If you had a set of files you wanted to attach (for example a set of pictures loaded from a database) you can just use a <code class="literal">&lt;ui:repeat&gt;</code>:
+			</div><pre class="programlisting">&lt;ui:repeat value="#{people}" var="person"&gt;
+    &lt;m:attachment value="#{person.photo}" contentType="image/jpeg"
+    fileName="#{person.firstname}_#{person.lastname}.jpg"/&gt;
+&lt;/ui:repeat&gt;
+</pre></div><div class="section" title="16.1.2. HTML/Text alternative part"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Creating_a_message-HTMLText_alternative_part">16.1.2. HTML/Text alternative part</h3></div></div></div><div class="para">
+				Whilst most mail readers nowadays support HTML, some do not, so you can add a plain text alternative to your email body:
+			</div><pre class="programlisting">&lt;m:body&gt;
+    &lt;f:facet name="alternative"&gt;Sorry, your email reader can't show our fancy email, 
+please go to http://labs.jboss.com/jbossseam to explore Seam.&lt;/f:facet&gt;
+&lt;/m:body&gt;
+</pre></div><div class="section" title="16.1.3. Multiple recipients"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Creating_a_message-Multiple_recipients">16.1.3. Multiple recipients</h3></div></div></div><div class="para">
+				Often you will want to send an email to a group of recipients (for example your users). All of the recipient mail tags can be placed inside a <code class="literal">&lt;ui:repeat&gt;</code>:
+			</div><pre class="programlisting">&lt;ui:repeat value="#{allUsers} var="user"&gt;
+    &lt;m:to name="#{user.firstname} #{user.lastname}" address="#{user.emailAddress}" /&gt;
+&lt;/ui:repeat&gt;
+</pre></div><div class="section" title="16.1.4. Multiple messages"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Creating_a_message-Multiple_messages">16.1.4. Multiple messages</h3></div></div></div><div class="para">
+				Sometimes, however, you need to send a slightly different message to each recipient (e.g. a password reset). The best way to do this is to place the whole message inside a <code class="literal">&lt;ui:repeat&gt;</code>:
+			</div><pre class="programlisting">&lt;ui:repeat value="#{people}" var="p"&gt;
+    &lt;m:message&gt;
+        &lt;m:from name="#{person.firstname} #{person.lastname}"&gt;#{person.address}&lt;/m:from&gt;
+        &lt;m:to name="#{p.firstname}"&gt;#{p.address}&lt;/m:to&gt;
+            ...
+    &lt;/m:message&gt;
+&lt;/ui:repeat&gt;
+</pre></div><div class="section" title="16.1.5. Templating"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Creating_a_message-Templating">16.1.5. Templating</h3></div></div></div><div class="para">
+				The mail templating example shows that facelets templating Just Works with the Seam mail tags.
+			</div><div class="para">
+				Our <code class="literal">template.xhtml</code> contains:
+			</div><pre class="programlisting">&lt;m:message&gt;
+   &lt;m:from name="Seam" address="do-not-reply at jboss.com" /&gt;
+   &lt;m:to name="#{person.firstname} #{person.lastname}"&gt;#{person.address}&lt;/m:to&gt;
+   &lt;m:subject&gt;#{subject}&lt;/m:subject&gt;
+   &lt;m:body&gt;
+       &lt;html&gt;
+           &lt;body&gt;
+               &lt;ui:insert name="body"&gt;This is the default body, specified by the template.
+                                   &lt;/ui:insert&gt;
+           &lt;/body&gt;
+       &lt;/html&gt;
+   &lt;/m:body&gt;
+&lt;/m:message&gt;
+</pre><div class="para">
+				Our <code class="literal">templating.xhtml</code> contains:
+			</div><pre class="programlisting">&lt;ui:param name="subject" value="Templating with Seam Mail"/&gt;
+&lt;ui:define name="body"&gt;
+    &lt;p&gt;This example demonstrates that you can easily use &lt;i&gt;facelets templating&lt;/i&gt; in email!&lt;/p&gt;
+&lt;/ui:define&gt;
+</pre></div><div class="section" title="16.1.6. Internationalisation"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Creating_a_message-Internationalisation">16.1.6. Internationalisation</h3></div></div></div><div class="para">
+				Seam supports sending internationalised messages. By default, the encoding provided by JSF is used, but this can be overridden on the template:
+			</div><pre class="programlisting">&lt;m:message charset="UTF-8"&gt;
+   ...
+&lt;/m:message&gt;
+</pre><div class="para">
+				The body, subject and recipient (and from) name will be encoded. You will need to make sure facelets uses the correct charset for parsing your pages by setting encoding of the template:
+			</div><pre class="programlisting">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+</pre></div><div class="section" title="16.1.7. Other Headers"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Creating_a_message-Other_Headers">16.1.7. Other Headers</h3></div></div></div><div class="para">
+				Sometimes you will want to add other headers to your email. Seam provides support for some (see <a class="xref" href="Seam_Reference_Guide-Email-Tags.html" title="16.4. Tags">Section 16.4, “Tags”</a>). For example, we can set the importance of the email, and ask for a read receipt:
+			</div><pre class="programlisting">&lt;m:message xmlns:m="http://jboss.com/products/seam/mail"
+           importance="low"
+           requestReadReceipt="true"/&gt;
+</pre><div class="para">
+				Otherise you can add any header to the message using the <code class="literal">&lt;m:header&gt;</code> tag:
+			</div><pre class="programlisting">&lt;m:header name="X-Sent-From" value="JBoss Seam"/&gt;
+</pre></div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-iText_PDF_generation-iText_links.html"><strong>Prev</strong>15.10. iText links</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Email-Receiving_emails.html"><strong>Next</strong>16.2. Receiving emails</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Events_interceptors_and_exception_handling-Managing_exceptions.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Events_interceptors_and_exception_handling-Managing_exceptions.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Events_interceptors_and_exception_handling-Managing_exceptions.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>5.3. Managing exceptions</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Events_interceptors_and_exception_handling.html" title="Chapter 5. Events, interceptors and exception handling" /><link rel="prev" href="Seam_Reference_Guide-Events_interceptors_and_exception_handling-Seam_interceptors.html" title="5.2. Seam interceptors" /><link rel="next" href="Seam_Reference_Guide-Managing_exceptions-Enabling_Seam_exception_handling.html" title="5.3.2. Enabling Seam exception handling" /></head><body class=""><p id="title"><a class="left" href="h!
 ttp://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Events_interceptors_and_exception_handling-Seam_interceptors.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Managing_exceptions-Enabling_Seam_exception_handling.html"><strong>Next</strong></a></li></ul><div class="sect1" title="5.3. Managing exceptions"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Events_interceptors_and_exception_handling-Managing_exceptions" class="title">Managing exceptions</h1></div></div></div><div class="para">
+		JSF is surprisingly limited when it comes to exception handling. As a partial workaround for this problem, Seam lets you define how a particular class of exception is to be treated by annotating the exception class, or declaring the exception class in an XML file. This facility is meant to be combined with the EJB 3.0-standard <code class="literal">@ApplicationException</code> annotation which specifies whether the exception should cause a transaction rollback.
+	</div><div class="sect2" title="5.3.1. Exceptions and transactions"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Managing_exceptions-Exceptions_and_transactions" class="title">Exceptions and transactions</h1></div></div></div><div class="para">
+		EJB specifies well-defined rules that let us control whether an exception immediately marks the current transaction for rollback when it is thrown by a business method of the bean: <span class="emphasis"><em>system exceptions</em></span> always cause a transaction rollback, <span class="emphasis"><em>application exceptions</em></span> do not cause a rollback by default, but they do if <code class="literal">@ApplicationException(rollback=true)</code> is specified. (An application exception is any checked exception, or any unchecked exception annotated <code class="literal">@ApplicationException</code>. A system exception is any unchecked exception without an <code class="literal">@ApplicationException</code> annotation.)
+	</div><div class="note"><h2>Note</h2><div class="para">
+			There is a difference between marking a transaction for rollback, and actually rolling it back. The exception rules say that the transaction should be marked rollback only, but it may still be active after the exception is thrown.
+		</div></div><div class="para">
+		Seam applies the EJB 3.0 exception rollback rules also to Seam JavaBean components.
+	</div><div class="para">
+		But these rules only apply in the Seam component layer. What about an exception that is uncaught and propagates out of the Seam component layer, and out of the JSF layer? Well, it is always wrong to leave a dangling transaction open, so Seam rolls back any active transaction when an exception occurs and is uncaught in the Seam component layer.
+	</div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Events_interceptors_and_exception_handling-Seam_interceptors.html"><strong>Prev</strong>5.2. Seam interceptors</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Managing_exceptions-Enabling_Seam_exception_handling.html"><strong>Next</strong>5.3.2. Enabling Seam exception handling</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Events_interceptors_and_exception_handling-Seam_interceptors.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Events_interceptors_and_exception_handling-Seam_interceptors.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Events_interceptors_and_exception_handling-Seam_interceptors.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>5.2. Seam interceptors</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Events_interceptors_and_exception_handling.html" title="Chapter 5. Events, interceptors and exception handling" /><link rel="prev" href="Seam_Reference_Guide-Events_interceptors_and_exception_handling.html" title="Chapter 5. Events, interceptors and exception handling" /><link rel="next" href="Seam_Reference_Guide-Events_interceptors_and_exception_handling-Managing_exceptions.html" title="5.3. Managing exceptions" /></head><body class=""><p id="title"><a class="left"!
  href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Events_interceptors_and_exception_handling.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Events_interceptors_and_exception_handling-Managing_exceptions.html"><strong>Next</strong></a></li></ul><div class="sect1" title="5.2. Seam interceptors"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Events_interceptors_and_exception_handling-Seam_interceptors" class="title">Seam interceptors</h1></div></div></div><div class="para">
+		EJB 3.0 introduced a standard interceptor model for session bean components. To add an interceptor to a bean, you need to write a class with a method annotated <code class="literal">@AroundInvoke</code> and annotate the bean with an <code class="literal">@Interceptors</code> annotation that specifies the name of the interceptor class. For example, the following interceptor checks that the user is logged in before allowing invoking an action listener method:
+	</div><pre class="programlisting">public class LoggedInInterceptor {
+
+   @AroundInvoke
+   public Object checkLoggedIn(InvocationContext invocation) throws Exception {
+   
+      boolean isLoggedIn = Contexts.getSessionContext().get("loggedIn")!=null;
+      if (isLoggedIn) {
+         //the user is already logged in
+         return invocation.proceed();
+      }
+      else {
+         //the user is not logged in, fwd to login page
+         return "login";
+      }
+   }
+
+}
+</pre><div class="para">
+		To apply this interceptor to a session bean which acts as an action listener, we must annotate the session bean <code class="literal">@Interceptors(LoggedInInterceptor.class)</code>. This is a somewhat ugly annotation. Seam builds upon the interceptor framework in EJB3 by allowing you to use <code class="literal">@Interceptors</code> as a meta-annotation. In our example, we would create an <code class="literal">@LoggedIn</code> annotation, as follows:
+	</div><pre class="programlisting">@Target(TYPE)
+ at Retention(RUNTIME)
+ at Interceptors(LoggedInInterceptor.class)
+public @interface LoggedIn {}
+</pre><div class="para">
+		We can now simply annotate our action listener bean with <code class="literal">@LoggedIn</code> to apply the interceptor.
+	</div><pre class="programlisting">@Stateless
+ at Name("changePasswordAction")
+ at LoggedIn
+ at Interceptors(SeamInterceptor.class)
+public class ChangePasswordAction implements ChangePassword { 
+    
+    ...
+    
+    public String changePassword() { ... }
+    
+}
+</pre><div class="para">
+		If interceptor ordering is important (it usually is), you can add <code class="literal">@Interceptor</code> annotations to your interceptor classes to specify a partial order of interceptors.
+	</div><pre class="programlisting">@Interceptor(around={BijectionInterceptor.class,
+                     ValidationInterceptor.class,
+                     ConversationInterceptor.class},
+             within=RemoveInterceptor.class)
+public class LoggedInInterceptor
+{
+    ...
+}
+</pre><div class="para">
+		You can even have a <span class="emphasis"><em>client-side</em></span> interceptor, that runs around any of the built-in functionality of EJB3:
+	</div><pre class="programlisting">@Interceptor(type=CLIENT)
+public class LoggedInInterceptor
+{
+    ...
+}
+</pre><div class="para">
+		EJB interceptors are stateful, with a lifecycle that is the same as the component they intercept. For interceptors which do not need to maintain state, Seam lets you get a performance optimization by specifying <code class="literal">@Interceptor(stateless=true)</code>.
+	</div><div class="para">
+		Much of the functionality of Seam is implemented as a set of built-in Seam interceptors, including the interceptors named in the previous example. You do not have to explicitly specify these interceptors by annotating your components; they exist for all interceptable Seam components.
+	</div><div class="para">
+		You can even use Seam interceptors with JavaBean components, not just EJB3 beans.
+	</div><div class="para">
+		EJB defines interception not only for business methods (using <code class="literal">@AroundInvoke</code>), but also for the lifecycle methods <code class="literal">@PostConstruct</code>, <code class="literal">@PreDestroy</code>, <code class="literal">@PrePassivate</code> and <code class="literal">@PostActive</code>. Seam supports all these lifecycle methods on both component and interceptor not only for EJB3 beans, but also for JavaBean components (except <code class="literal">@PreDestroy</code> which is not meaningful for JavaBean components).
+	</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Events_interceptors_and_exception_handling.html"><strong>Prev</strong>Chapter 5. Events, interceptors and exception han...</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Events_interceptors_and_exception_handling-Managing_exceptions.html"><strong>Next</strong>5.3. Managing exceptions</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Events_interceptors_and_exception_handling.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Events_interceptors_and_exception_handling.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Events_interceptors_and_exception_handling.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,341 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 5. Events, interceptors and exception handling</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="index.html" title="Seam Reference Guide CP07" /><link rel="prev" href="Seam_Reference_Guide-Configuring_Seam_components-Using_XML_Namespaces.html" title="4.5. Using XML Namespaces" /><link rel="next" href="Seam_Reference_Guide-Events_interceptors_and_exception_handling-Seam_interceptors.html" title="5.2. Seam interceptors" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" a!
 lt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Configuring_Seam_components-Using_XML_Namespaces.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Events_interceptors_and_exception_handling-Seam_interceptors.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="chapter" title="Chapter 5. Events, interceptors and exception handling" lang="en-US"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Events_interceptors_and_exception_handling">Chapter 5. Events, interceptors and exception handling</h2></div></div></div><div class="toc"><dl><dt><span class="sect1"><a href="Seam_Reference_Guide-Events_interceptors_and_exception_handling.html#Seam_Reference_Guide-Events_interceptors_and_exception_handling-S!
 eam_events">5.1. Seam events</a></span></dt><dd><dl><dt><span !
 class="s
ect2"><a href="Seam_Reference_Guide-Events_interceptors_and_exception_handling.html#Seam_Reference_Guide-Seam_events-Page_actions">5.1.1. Page actions</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Events_interceptors_and_exception_handling.html#Seam_Reference_Guide-Seam_events-Component_driven_events">5.1.2. Component-driven events</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Events_interceptors_and_exception_handling.html#Seam_Reference_Guide-Seam_events-Contextual_events">5.1.3. Contextual events</a></span></dt></dl></dd><dt><span class="sect1"><a href="Seam_Reference_Guide-Events_interceptors_and_exception_handling-Seam_interceptors.html">5.2. Seam interceptors</a></span></dt><dt><span class="sect1"><a href="Seam_Reference_Guide-Events_interceptors_and_exception_handling-Managing_exceptions.html">5.3. Managing exceptions</a></span></dt><dd><dl><dt><span class="sect2"><a href="Seam_Reference_Guide-Events_interceptors_and_excep!
 tion_handling-Managing_exceptions.html#Seam_Reference_Guide-Managing_exceptions-Exceptions_and_transactions">5.3.1. Exceptions and transactions</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Managing_exceptions-Enabling_Seam_exception_handling.html">5.3.2. Enabling Seam exception handling</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Managing_exceptions-Using_annotations_for_exception_handling.html">5.3.3. Using annotations for exception handling</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Managing_exceptions-Using_XML_for_exception_handling.html">5.3.4. Using XML for exception handling</a></span></dt></dl></dd></dl></div><div class="para">
+		Complementing the contextual component model, there are two further basic concepts that facilitate the extreme loose-coupling that is the distinctive feature of Seam applications. The first is a strong event model where events may be mapped to event listeners via JSF-like method binding expressions. The second is the pervasive use of annotations and interceptors to apply cross-cutting concerns to components which implement business logic.
+	</div><div class="sect1" title="5.1. Seam events"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Events_interceptors_and_exception_handling-Seam_events" class="title">Seam events</h1></div></div></div><div class="para">
+		The Seam component model was developed for use with <span class="emphasis"><em>event-driven applications</em></span>, specifically to enable the development of fine-grained, loosely-coupled components in a fine-grained eventing model. Events in Seam come in several types, most of which we have already seen:
+	</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+				JSF events
+			</div></li><li class="listitem"><div class="para">
+				jBPM transition events
+			</div></li><li class="listitem"><div class="para">
+				Seam page actions
+			</div></li><li class="listitem"><div class="para">
+				Seam component-driven events
+			</div></li><li class="listitem"><div class="para">
+				Seam contextual events
+			</div></li></ul></div><div class="para">
+		All of these various kinds of events are mapped to Seam components via JSF EL method binding expressions. For a JSF event, this is defined in the JSF template:
+	</div><pre class="programlisting">&lt;h:commandButton value="Click me!" action="#{helloWorld.sayHello}"/&gt;
+</pre><div class="para">
+		For a jBPM transition event, it is specified in the jBPM process definition or pageflow definition:
+	</div><pre class="programlisting">&lt;start-page name="hello" view-id="/hello.jsp"&gt;
+    &lt;transition to="hello"&gt;
+        &lt;action expression="#{helloWorld.sayHello}"/&gt;
+    &lt;/transition&gt;
+&lt;/start-page&gt;
+</pre><div class="para">
+		You can find out more information about JSF events and jBPM events elsewhere. Lets concentrate for now upon the two additional kinds of events defined by Seam.
+	</div><div class="sect2" title="5.1.1. Page actions"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam_events-Page_actions" class="title">Page actions</h1></div></div></div><div class="para">
+		A Seam page action is an event that occurs just before we render a page. We declare page actions in <code class="literal">WEB-INF/pages.xml</code>. We can define a page action for either a particular JSF view id:
+	</div><pre class="programlisting">&lt;pages&gt;
+    &lt;page view-id="/hello.jsp" action="#{helloWorld.sayHello}"/&gt;
+&lt;/pages&gt;
+</pre><div class="para">
+		Or we can use a wildcard to specify an action that applies to all view ids that match the pattern:
+	</div><pre class="programlisting">&lt;pages&gt;
+    &lt;page view-id="/hello/*" action="#{helloWorld.sayHello}"/&gt;
+&lt;/pages&gt;
+</pre><div class="para">
+		If multiple wildcarded page actions match the current view-id, Seam will call all the actions, in order of least-specific to most-specific.
+	</div><div class="para">
+		The page action method can return a JSF outcome. If the outcome is non-null, Seam will use the defined navigation rules to navigate to a view.
+	</div><div class="para">
+		Furthermore, the view id mentioned in the <code class="literal">&lt;page&gt;</code> element need not correspond to a real JSP or Facelets page. So, we can reproduce the functionality of a traditional action-oriented framework like Struts or WebWork using page actions.
+	</div><div class="para">
+		This is quite useful if you want to do complex things in response to non-faces requests (for example, HTTP GET requests).
+	</div><div class="sect3" title="5.1.1.1. Page parameters"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Page_actions-Page_parameters" class="title">Page parameters</h1></div></div></div><div class="para">
+		A JSF faces request (a form submission) encapsulates both an <span class="emphasis"><em>action</em></span> (a method binding) and <span class="emphasis"><em>parameters</em></span> (input value bindings). A page action might also require parameters.
+	</div><div class="para">
+		Since GET requests are bookmarkable, page parameters are passed as human-readable request parameters. (Unlike JSF form inputs, which are anything but!)
+	</div><div class="para">
+		Seam lets us provide a value binding that maps a named request parameter to an attribute of a model object.
+	</div><pre class="programlisting">&lt;pages&gt;
+    &lt;page view-id="/hello.jsp" action="#{helloWorld.sayHello}"&gt;
+        &lt;param name="firstName" value="#{person.firstName}"/&gt;
+        &lt;param name="lastName" value="#{person.lastName}"/&gt;
+    &lt;/page&gt;
+&lt;/pages&gt;
+</pre><div class="para">
+		The <code class="literal">&lt;param&gt;</code> declaration is bidirectional, just like a value binding for a JSF input:
+	</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+				When a non-faces (GET) request for the view id occurs, Seam sets the value of the named request parameter onto the model object, after performing appropriate type conversions.
+			</div></li><li class="listitem"><div class="para">
+				Any <code class="literal">&lt;s:link&gt;</code> or <code class="literal">&lt;s:button&gt;</code> transparently includes the request parameter. The value of the parameter is determined by evaluating the value binding during the render phase (when the <code class="literal">&lt;s:link&gt;</code> is rendered).
+			</div></li><li class="listitem"><div class="para">
+				Any navigation rule with a <code class="literal">&lt;redirect/&gt;</code> to the view id transparently includes the request parameter. The value of the parameter is determined by evaluating the value binding at the end of the invoke application phase.
+			</div></li><li class="listitem"><div class="para">
+				The value is transparently propagated with any JSF form submission for the page with the given view-id. (This means that view parameters behave like <code class="literal">PAGE</code>-scoped context variables for faces requests.
+			</div></li></ul></div><div class="para">
+		The essential idea behind all this is that <span class="emphasis"><em>however</em></span> we get from any other page to <code class="literal">/hello.jsp</code> (or from <code class="literal">/hello.jsp</code> back to <code class="literal">/hello.jsp</code>), the value of the model attribute referred to in the value binding is <span class="emphasis"><em>remembered</em></span>, without the need for a conversation (or other server-side state).
+	</div><div class="para">
+		This all sounds pretty complex, however the initial effort is worth it in the end. Page parameters are the most elegant way to propagate state across a non-faces request. They are especially cool for problems like search screens with bookmarkable results pages, where we would like to be able to write our application code to handle both POST and GET requests with the same code. Page parameters eliminate repetitive listing of request parameters in the view definition and make redirects much easier to code.
+	</div><div class="para">
+		You don not need an actual page action method binding to use a page parameter. The following is perfectly valid:
+	</div><pre class="programlisting">&lt;pages&gt;
+    &lt;page view-id="/hello.jsp"&gt;
+        &lt;param name="firstName" value="#{person.firstName}"/&gt;
+        &lt;param name="lastName" value="#{person.lastName}"/&gt;
+    &lt;/page&gt;
+&lt;/pages&gt;
+</pre><div class="para">
+		You can even specify a JSF converter:
+	</div><pre class="programlisting">&lt;pages&gt;
+    &lt;page view-id="/calculator.jsp" action="#{calculator.calculate}"&gt;
+        &lt;param name="x" value="#{calculator.lhs}"/&gt;
+        &lt;param name="y" value="#{calculator.rhs}"/&gt;
+        &lt;param name="op" converterId="com.my.calculator.OperatorConverter" value="#{calculator.op}"/&gt;
+    &lt;/page&gt;
+&lt;/pages&gt;
+</pre><pre class="programlisting">&lt;pages&gt;
+    &lt;page view-id="/calculator.jsp" action="#{calculator.calculate}"&gt;
+        &lt;param name="x" value="#{calculator.lhs}"/&gt;
+        &lt;param name="y" value="#{calculator.rhs}"/&gt;
+        &lt;param name="op" converter="#{operatorConverter}" value="#{calculator.op}"/&gt;
+    &lt;/page&gt;
+&lt;/pages&gt;
+</pre></div><div class="sect3" title="5.1.1.2. Navigation"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Page_actions-Navigation" class="title">Navigation</h1></div></div></div><div class="para">
+		You can use standard JSF navigation rules defined in <code class="literal">faces-config.xml</code> in a Seam application. However, JSF navigation rules have a number of annoying limitations:
+	</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+				It is not possible to specify request parameters to be used when redirecting.
+			</div></li><li class="listitem"><div class="para">
+				It is not possible to begin or end conversations from a rule.
+			</div></li><li class="listitem"><div class="para">
+				Rules work by evaluating the return value of the action method; it is not possible to evaluate an arbitrary EL expression.
+			</div></li></ul></div><div class="para">
+		A further problem is that <span class="emphasis"><em>orchestration</em></span> logic gets scattered between <code class="literal">pages.xml</code> and <code class="literal">faces-config.xml</code>. It is better to unify this logic into <code class="literal">pages.xml</code>.
+	</div><div class="para">
+		This JSF navigation rule:
+	</div><pre class="programlisting">&lt;navigation-rule&gt;
+    &lt;from-view-id&gt;/editDocument.xhtml&lt;/from-view-id&gt;
+    
+    &lt;navigation-case&gt;
+        &lt;from-action&gt;#{documentEditor.update}&lt;/from-action&gt;
+        &lt;from-outcome&gt;success&lt;/from-outcome&gt;
+        &lt;to-view-id&gt;/viewDocument.xhtml&lt;/to-view-id&gt;
+        &lt;redirect/&gt;
+    &lt;/navigation-case&gt;
+    
+&lt;/navigation-rule&gt;
+</pre><div class="para">
+		Can be rewritten as follows:
+	</div><pre class="programlisting">&lt;page view-id="/editDocument.xhtml"&gt;
+    
+    &lt;navigation from-action="#{documentEditor.update}"&gt;
+        &lt;rule if-outcome="success"&gt;
+            &lt;redirect view-id="/viewDocument.xhtml"/&gt;
+        &lt;/rule&gt;
+    &lt;/navigation&gt;
+    
+&lt;/page&gt;
+</pre><div class="para">
+		But it would be even nicer if we did not have to pollute our <code class="literal">DocumentEditor</code> component with string-valued return values (the JSF outcomes). So Seam lets us write:
+	</div><pre class="programlisting">&lt;page view-id="/editDocument.xhtml"&gt;
+    
+    &lt;navigation from-action="#{documentEditor.update}" 
+                   evaluate="#{documentEditor.errors.size}"&gt;
+        &lt;rule if-outcome="0"&gt;
+            &lt;redirect view-id="/viewDocument.xhtml"/&gt;
+        &lt;/rule&gt;
+    &lt;/navigation&gt;
+    
+&lt;/page&gt;
+</pre><div class="para">
+		Or even:
+	</div><pre class="programlisting">&lt;page view-id="/editDocument.xhtml"&gt;
+    
+    &lt;navigation from-action="#{documentEditor.update}"&gt;
+        &lt;rule if="#{documentEditor.errors.empty}"&gt;
+            &lt;redirect view-id="/viewDocument.xhtml"/&gt;
+        &lt;/rule&gt;
+    &lt;/navigation&gt;
+    
+&lt;/page&gt;
+</pre><div class="para">
+		The first form evaluates a value binding to determine the outcome value to be used by the subsequent rules. The second approach ignores the outcome and evaluates a value binding for each possible rule.
+	</div><div class="para">
+		When an update succeeds, we probably want to end the current conversation. We can do that like this:
+	</div><pre class="programlisting">&lt;page view-id="/editDocument.xhtml"&gt;
+    
+    &lt;navigation from-action="#{documentEditor.update}"&gt;
+        &lt;rule if="#{documentEditor.errors.empty}"&gt;
+            &lt;end-conversation/&gt;
+            &lt;redirect view-id="/viewDocument.xhtml"/&gt;
+        &lt;/rule&gt;
+    &lt;/navigation&gt;
+    
+&lt;/page&gt;
+</pre><div class="para">
+		But ending the conversation loses any state associated with the conversation, including the document we are currently interested in! One solution would be to use an immediate render instead of a redirect:
+	</div><pre class="programlisting">&lt;page view-id="/editDocument.xhtml"&gt;
+    
+    &lt;navigation from-action="#{documentEditor.update}"&gt;
+        &lt;rule if="#{documentEditor.errors.empty}"&gt;
+            &lt;end-conversation/&gt;
+            &lt;render view-id="/viewDocument.xhtml"/&gt;
+        &lt;/rule&gt;
+    &lt;/navigation&gt;
+    
+&lt;/page&gt;
+</pre><div class="para">
+		But the correct solution is to pass the document ID as a request parameter:
+	</div><pre class="programlisting">&lt;page view-id="/editDocument.xhtml"&gt;
+    
+    &lt;navigation from-action="#{documentEditor.update}"&gt;
+        &lt;rule if="#{documentEditor.errors.empty}"&gt;
+            &lt;end-conversation/&gt;
+            &lt;redirect view-id="/viewDocument.xhtml"&gt;
+                &lt;param name="documentId" value="#{documentEditor.documentId}"/&gt;
+            &lt;/redirect&gt;
+        &lt;/rule&gt;
+    &lt;/navigation&gt;
+    
+&lt;/page&gt;
+</pre><div class="para">
+		Null outcomes are a special case in JSF. The null outcome is interpreted to mean <span class="emphasis"><em>redisplay the page</em></span>. The following navigation rule matches any non-null outcome, but <span class="emphasis"><em>not</em></span> the null outcome:
+	</div><pre class="programlisting">&lt;page view-id="/editDocument.xhtml"&gt;
+    
+    &lt;navigation from-action="#{documentEditor.update}"&gt;
+        &lt;rule&gt;
+            &lt;render view-id="/viewDocument.xhtml"/&gt;
+        &lt;/rule&gt;
+    &lt;/navigation&gt;
+    
+&lt;/page&gt;
+</pre><div class="para">
+		If you want to perform navigation when a null outcome occurs, use the following form instead:
+	</div><pre class="programlisting">&lt;page view-id="/editDocument.xhtml"&gt;
+    
+    &lt;navigation from-action="#{documentEditor.update}"&gt;
+        &lt;render view-id="/viewDocument.xhtml"/&gt;
+    &lt;/navigation&gt;
+    
+&lt;/page&gt;
+</pre></div><div class="sect3" title="5.1.1.3. Fine-grained files for definition of navigation, page actions and parameters"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Page_actions-Fine_grained_files_for_definition_of_navigation_page_actions_and_parameters" class="title">Fine-grained files for definition of navigation, page actions and parameters</h1></div></div></div><div class="para">
+		If you have a lot of different page actions and page parameters, or even just a lot of navigation rules, you will almost certainly want to split the declarations up over multiple files. You can define actions and parameters for a page with the view id <code class="literal">/calc/calculator.jsp</code> in a resource named <code class="literal">calc/calculator.page.xml</code>. The root element in this case is the <code class="literal">&lt;page&gt;</code> element, and the view id is implied:
+	</div><pre class="programlisting">&lt;page action="#{calculator.calculate}"&gt;
+    &lt;param name="x" value="#{calculator.lhs}"/&gt;
+    &lt;param name="y" value="#{calculator.rhs}"/&gt;
+    &lt;param name="op" converter="#{operatorConverter}" value="#{calculator.op}"/&gt;
+&lt;/page&gt;
+</pre></div></div><div class="sect2" title="5.1.2. Component-driven events"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam_events-Component_driven_events" class="title">Component-driven events</h1></div></div></div><div class="para">
+		Seam components can interact by simply calling each others methods. Stateful components may even implement the observer/observable pattern. But to enable components to interact in a more loosely-coupled fashion than is possible when the components call each others methods directly, Seam provides <span class="emphasis"><em>component-driven events</em></span>.
+	</div><div class="para">
+		We specify event listeners (observers) in <code class="literal">components.xml</code>.
+	</div><pre class="programlisting">&lt;components&gt;
+    &lt;event type="hello"&gt;
+        &lt;action expression="#{helloListener.sayHelloBack}"/&gt;
+        &lt;action expression="#{logger.logHello}"/&gt;
+    &lt;/event&gt;
+&lt;/components&gt;
+</pre><div class="para">
+		Where the <span class="emphasis"><em>event type</em></span> is just an arbitrary string.
+	</div><div class="para">
+		When an event occurs, the actions registered for that event will be called in the order they appear in <code class="literal">components.xml</code>. How does a component raise an event? Seam provides a built-in component for this.
+	</div><pre class="programlisting">@Name("helloWorld")
+public class HelloWorld {
+    public void sayHello() {
+        FacesMessages.instance().add("Hello World!");
+        Events.instance().raiseEvent("hello");
+    }
+}
+</pre><div class="para">
+		Or you can use an annotation.
+	</div><pre class="programlisting">@Name("helloWorld")
+public class HelloWorld {
+    @RaiseEvent("hello")
+    public void sayHello() {
+        FacesMessages.instance().add("Hello World!");
+    }
+}
+</pre><div class="para">
+		Notice that this event producer has no dependency upon event consumers. The event listener may now be implemented with absolutely no dependency upon the producer:
+	</div><pre class="programlisting">@Name("helloListener")
+public class HelloListener {
+    public void sayHelloBack() {
+        FacesMessages.instance().add("Hello to you too!");
+    }
+}
+</pre><div class="para">
+		The method binding defined in <code class="literal">components.xml</code> above takes care of mapping the event to the consumer. If you do not like futzing about in the <code class="literal">components.xml</code> file, you can use an annotation instead:
+	</div><pre class="programlisting">@Name("helloListener")
+public class HelloListener {
+    @Observer("hello")
+    public void sayHelloBack() {
+        FacesMessages.instance().add("Hello to you too!");
+    }
+}
+</pre><div class="para">
+		In terms of event objects, Seam does not require an event object to propagate state between event producer and listener. State is held in the Seam contexts, and is shared between components. However, if you really want to pass an event object, you can:
+	</div><pre class="programlisting">@Name("helloWorld")
+public class HelloWorld {
+    private String name;
+    public void sayHello() {
+        FacesMessages.instance().add("Hello World, my name is #0.", name);
+        Events.instance().raiseEvent("hello", name);
+    }
+}
+</pre><pre class="programlisting">@Name("helloListener")
+public class HelloListener {
+    @Observer("hello")
+    public void sayHelloBack(String name) {
+        FacesMessages.instance().add("Hello #0!", name);
+    }
+}
+</pre></div><div class="sect2" title="5.1.3. Contextual events"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam_events-Contextual_events" class="title">Contextual events</h1></div></div></div><div class="para">
+		Seam defines a number of built-in events that the application can use to perform special kinds of framework integration. The events are:
+	</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+				<code class="literal">org.jboss.seam.validationFailed</code> — called when JSF validation fails
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">org.jboss.seam.noConversation</code> — called when there is no long running conversation and a long running conversation is required
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">org.jboss.seam.preSetVariable.&lt;name&gt;</code> — called when the context variable &lt;name&gt; is set
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">org.jboss.seam.postSetVariable.&lt;name&gt;</code> — called when the context variable &lt;name&gt; is set
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">org.jboss.seam.preRemoveVariable.&lt;name&gt;</code> — called when the context variable &lt;name&gt; is unset
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">org.jboss.seam.postRemoveVariable.&lt;name&gt;</code> — called when the context variable &lt;name&gt; is unset
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">org.jboss.seam.preDestroyContext.&lt;SCOPE&gt;</code> — called before the &lt;SCOPE&gt; context is destroyed
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">org.jboss.seam.postDestroyContext.&lt;SCOPE&gt;</code> — called after the &lt;SCOPE&gt; context is destroyed
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">org.jboss.seam.beginConversation </code>— called whenever a long-running conversation begins
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">org.jboss.seam.endConversation </code>— called whenever a long-running conversation ends
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">org.jboss.seam.beginPageflow.&lt;name&gt; </code>— called when the pageflow &lt;name&gt; begins
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">org.jboss.seam.endPageflow.&lt;name&gt; </code>— called when the pageflow &lt;name&gt; ends
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">org.jboss.seam.createProcess.&lt;name&gt; </code>— called when the process &lt;name&gt; is created
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">org.jboss.seam.endProcess.&lt;name&gt; </code>— called when the process &lt;name&gt; ends
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">org.jboss.seam.initProcess.&lt;name&gt; </code>— called when the process &lt;name&gt; is associated with the conversation
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">org.jboss.seam.initTask.&lt;name&gt; </code>— called when the task &lt;name&gt; is associated with the conversation
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">org.jboss.seam.startTask.&lt;name&gt; </code>— called when the task &lt;name&gt; is started
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">org.jboss.seam.endTask.&lt;name&gt; </code>— called when the task &lt;name&gt; is ended
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">org.jboss.seam.postCreate.&lt;name&gt; </code>— called when the component &lt;name&gt; is created
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">org.jboss.seam.preDestroy.&lt;name&gt; </code>— called when the component &lt;name&gt; is destroyed
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">org.jboss.seam.beforePhase </code>— called before the start of a JSF phase
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">org.jboss.seam.afterPhase </code>— called after the end of a JSF phase
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">org.jboss.seam.postAuthenticate.&lt;name&gt; </code>— called after a user is authenticated
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">org.jboss.seam.preAuthenticate.&lt;name&gt; </code>— called before attempting to authenticate a user
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">org.jboss.seam.notLoggedIn</code> — called there is no authenticated user and authentication is required
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">org.jboss.seam.rememberMe</code> — occurs when Seam security detects the username in a cookie
+			</div></li></ul></div><div class="para">
+		Seam components may observe any of these events in just the same way they observe any other component-driven events.
+	</div></div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Configuring_Seam_components-Using_XML_Namespaces.html"><strong>Prev</strong>4.5. Using XML Namespaces</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Events_interceptors_and_exception_handling-Seam_interceptors.html"><strong>Next</strong>5.2. Seam interceptors</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Expression_language_enhancements-Limitations.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Expression_language_enhancements-Limitations.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Expression_language_enhancements-Limitations.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>25.3. Limitations</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Expression_language_enhancements.html" title="Chapter 25. Expression language enhancements" /><link rel="prev" href="Seam_Reference_Guide-Expression_language_enhancements-Usage.html" title="25.2. Usage" /><link rel="next" href="Seam_Reference_Guide-Limitations-Calling_a_MethodExpression_from_Java_code.html" title="25.3.2. Calling a MethodExpression from Java code" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Conte!
 nt/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Expression_language_enhancements-Usage.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Limitations-Calling_a_MethodExpression_from_Java_code.html"><strong>Next</strong></a></li></ul><div class="section" title="25.3. Limitations"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Expression_language_enhancements-Limitations">25.3. Limitations</h2></div></div></div><div class="para">
+			Please be aware of the following limitations:
+		</div><div class="section" title="25.3.1. Incompatibility with JSP 2.1"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Limitations-Incompatibility_with_JSP_2.1">25.3.1. Incompatibility with JSP 2.1</h3></div></div></div><div class="para">
+				This extension is not currently compatible with JSP 2.1. So if you want to use this extension with JSF 1.2, you will need to use Facelets. The extension works correctly with JSP 2.0.
+			</div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Expression_language_enhancements-Usage.html"><strong>Prev</strong>25.2. Usage</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Limitations-Calling_a_MethodExpression_from_Java_code.html"><strong>Next</strong>25.3.2. Calling a MethodExpression from Java code</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Expression_language_enhancements-Usage.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Expression_language_enhancements-Usage.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Expression_language_enhancements-Usage.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>25.2. Usage</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Expression_language_enhancements.html" title="Chapter 25. Expression language enhancements" /><link rel="prev" href="Seam_Reference_Guide-Expression_language_enhancements.html" title="Chapter 25. Expression language enhancements" /><link rel="next" href="Seam_Reference_Guide-Expression_language_enhancements-Limitations.html" title="25.3. Limitations" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_lef!
 t.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Expression_language_enhancements.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Expression_language_enhancements-Limitations.html"><strong>Next</strong></a></li></ul><div class="section" title="25.2. Usage"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Expression_language_enhancements-Usage">25.2. Usage</h2></div></div></div><div class="para">
+			Parameters are surrounded by parentheses, and separated by commas:
+		</div><pre class="programlisting">&lt;h:commandButton action="#{hotelBooking.bookHotel(hotel, user)}" value="Book Hotel"/&gt;
+</pre><div class="para">
+			The parameters <code class="literal">hotel</code> and <code class="literal">user</code> will be evaluated as value expressions and passed to the <code class="literal">bookHotel()</code> method of the component. This gives you an alternative to the use of <code class="literal">@In</code>.
+		</div><div class="para">
+			Any value expression may be used as a parameter:
+		</div><pre class="programlisting">&lt;h:commandButton action="#{hotelBooking.bookHotel(hotel.id, user.username)}" value="Book Hotel"/&gt;
+</pre><div class="para">
+			You may even pass literal strings using single or double quotes:
+		</div><pre class="programlisting">&lt;h:commandLink action=”#{printer.println( ‘Hello world!’ )}” value=”Hello”/&gt;
+</pre><pre class="programlisting">&lt;h:commandLink action=’#{printer.println( “Hello again” )}’ value=’Hello’/&gt;
+</pre><div class="para">
+			You might even want to use this notation for all your action methods, even when you do not have parameters to pass. This improves readability by making it clear that the expression is a method expression and not a value expression:
+		</div><pre class="programlisting">&lt;s:link value="Cancel" action="#{hotelBooking.cancel()}"/&gt;
+</pre></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Expression_language_enhancements.html"><strong>Prev</strong>Chapter 25. Expression language enhancements</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Expression_language_enhancements-Limitations.html"><strong>Next</strong>25.3. Limitations</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Expression_language_enhancements.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Expression_language_enhancements.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Expression_language_enhancements.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 25. Expression language enhancements</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="index.html" title="Seam Reference Guide CP07" /><link rel="prev" href="Seam_Reference_Guide-Seam_JSF_controls.html" title="Chapter 24. Seam JSF controls" /><link rel="next" href="Seam_Reference_Guide-Expression_language_enhancements-Usage.html" title="25.2. Usage" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com">!
 <img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_JSF_controls.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Expression_language_enhancements-Usage.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="chapter" title="Chapter 25. Expression language enhancements" lang="en-US"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Expression_language_enhancements">Chapter 25. Expression language enhancements</h2></div></div></div><div class="toc"><dl><dt><span class="section"><a href="Seam_Reference_Guide-Expression_language_enhancements.html#Seam_Reference_Guide-Expression_language_enhancements-Configuration">25.1. Configuration</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Expression_language_enhancements-Usage.html">25.2. Usage</a></spa!
 n></dt><dt><span class="section"><a href="Seam_Reference_Guide!
 -Express
ion_language_enhancements-Limitations.html">25.3. Limitations</a></span></dt><dd><dl><dt><span class="section"><a href="Seam_Reference_Guide-Expression_language_enhancements-Limitations.html#Seam_Reference_Guide-Limitations-Incompatibility_with_JSP_2.1">25.3.1. Incompatibility with JSP 2.1</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Limitations-Calling_a_MethodExpression_from_Java_code.html">25.3.2. Calling a <code class="literal">MethodExpression</code> from Java code</a></span></dt></dl></dd></dl></div><div class="para">
+		The standard Unified Expression Language (EL) assumes that any parameters to a method expression will be provided by Java code. This means that a method with parameters cannot be used as a JSF method binding. Seam provides an enhancement to the EL that allows parameters to be included in a method expression itself. This applies to <span class="emphasis"><em>any</em></span> Seam method expression, including any JSF method binding, for example:
+	</div><pre class="programlisting">&lt;s:commandButton action="#{hotelBooking.bookHotel(hotel)}" value="Book Hotel"/&gt;
+</pre><div class="section" title="25.1. Configuration"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Expression_language_enhancements-Configuration">25.1. Configuration</h2></div></div></div><div class="para">
+			To use this feature in Facelets, you will need to declare a special view handler, <code class="literal">SeamFaceletViewHandler</code> in <code class="literal">faces-config.xml</code>.
+		</div><pre class="programlisting">&lt;faces-config&gt;
+    &lt;application&gt;
+        &lt;view-handler&gt;org.jboss.seam.ui.facelet.SeamFaceletViewHandler&lt;/view-handler&gt;
+    &lt;/application&gt;
+&lt;/faces-config&gt;
+</pre></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_JSF_controls.html"><strong>Prev</strong>Chapter 24. Seam JSF controls</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Expression_language_enhancements-Usage.html"><strong>Next</strong>25.2. Usage</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Headers_and_Footers-ppageNumber.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Headers_and_Footers-ppageNumber.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Headers_and_Footers-ppageNumber.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>15.4.2. p:pageNumber</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-iText_PDF_generation-Headers_and_Footers.html" title="15.4. Headers and Footers" /><link rel="prev" href="Seam_Reference_Guide-iText_PDF_generation-Headers_and_Footers.html" title="15.4. Headers and Footers" /><link rel="next" href="Seam_Reference_Guide-iText_PDF_generation-Chapters_and_Sections.html" title="15.5. Chapters and Sections" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" !
 alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-iText_PDF_generation-Headers_and_Footers.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-iText_PDF_generation-Chapters_and_Sections.html"><strong>Next</strong></a></li></ul><div class="section" title="15.4.2. p:pageNumber"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Headers_and_Footers-ppageNumber">15.4.2. p:pageNumber</h3></div></div></div><div class="para">
+				The current page number can be placed inside of a header or footer using the <code class="literal">p:pageNumber</code> tag. The page number tag can only be used in the context of a header or footer and can only be used once.
+			</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-iText_PDF_generation-Headers_and_Footers.html"><strong>Prev</strong>15.4. Headers and Footers</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-iText_PDF_generation-Chapters_and_Sections.html"><strong>Next</strong>15.5. Chapters and Sections</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Implementing_a_Captcha_Test-Adding_a_Captcha_to_a_page.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Implementing_a_Captcha_Test-Adding_a_Captcha_to_a_page.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Implementing_a_Captcha_Test-Adding_a_Captcha_to_a_page.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>12.8.2. Adding a Captcha to a page</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Security-Implementing_a_Captcha_Test.html" title="12.8. Implementing a Captcha Test" /><link rel="prev" href="Seam_Reference_Guide-Security-Implementing_a_Captcha_Test.html" title="12.8. Implementing a Captcha Test" /><link rel="next" href="Seam_Reference_Guide-Internationalization_and_themes.html" title="Chapter 13. Internationalization and themes" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Con!
 tent/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Security-Implementing_a_Captcha_Test.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Internationalization_and_themes.html"><strong>Next</strong></a></li></ul><div class="sect2" title="12.8.2. Adding a Captcha to a page"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Implementing_a_Captcha_Test-Adding_a_Captcha_to_a_page" class="title">Adding a Captcha to a page</h1></div></div></div><div class="para">
+		Adding a captcha challenge to a page is extremely easy. Seam provides a page-scoped component, <code class="literal">captcha</code>, which provides everything that is required, including built-in captcha validation. Here is an example:
+	</div><pre class="programlisting">&lt;div&gt;
+    &lt;h:graphicImage value="/seam/resource/captcha?#{captcha.id}"/&gt;
+&lt;/div&gt;
+  
+&lt;div&gt;
+    &lt;h:outputLabel for="verifyCaptcha"&gt;Enter the above letters&lt;/h:outputLabel&gt;
+    &lt;h:inputText id="verifyCaptcha" value="#{captcha.response}" required="true"/&gt;
+    &lt;div class="validationError"&gt;&lt;h:message for="verifyCaptcha"/&gt;&lt;/div&gt;
+&lt;/div&gt;
+</pre><div class="para">
+		That is all there is to it. The <code class="literal">graphicImage</code> control displays the Captcha challenge, and the <code class="literal">inputText</code> receives the user's response. The response is automatically validated against the Captcha when the form is submitted.
+	</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Security-Implementing_a_Captcha_Test.html"><strong>Prev</strong>12.8. Implementing a Captcha Test</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Internationalization_and_themes.html"><strong>Next</strong>Chapter 13. Internationalization and themes</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Internationalization_and_themes-Labels.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Internationalization_and_themes-Labels.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Internationalization_and_themes-Labels.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>13.2. Labels</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Internationalization_and_themes.html" title="Chapter 13. Internationalization and themes" /><link rel="prev" href="Seam_Reference_Guide-Internationalization_and_themes.html" title="Chapter 13. Internationalization and themes" /><link rel="next" href="Seam_Reference_Guide-Labels-Displaying_labels.html" title="13.2.2. Displaying labels" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Pro!
 duct Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Internationalization_and_themes.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Labels-Displaying_labels.html"><strong>Next</strong></a></li></ul><div class="section" title="13.2. Labels"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Internationalization_and_themes-Labels">13.2. Labels</h2></div></div></div><div class="para">
+			JSF supports internationalization of user interface labels and descriptive text via the use of <code class="literal">&lt;f:loadBundle /&gt;</code>. You can use this approach in Seam applications. Alternatively, you can take advantage of the Seam <code class="literal">messages</code> component to display templated labels with embedded EL expressions.
+		</div><div class="section" title="13.2.1. Defining labels"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Labels-Defining_labels">13.2.1. Defining labels</h3></div></div></div><div class="para">
+				Each login session has an associated instance of <code class="literal">java.util.ResourceBundle</code> (available to the application as a session-scoped component named <code class="literal">org.jboss.seam.core.resourceBundle</code>). You'll need to make your internationalized labels available via this special resource bundle. By default, the resource bundle used by Seam is named <code class="literal">messages</code> and so you'll need to define your labels in files named <code class="literal">messages.properties</code>, <code class="literal">messages_en.properties</code>, <code class="literal">messages_en_AU.properties</code>, etc. These files usually belong in the <code class="literal">WEB-INF/classes</code> directory.
+			</div><div class="para">
+				So, in <code class="literal">messages_en.properties</code>:
+			</div><pre class="programlisting">Hello=Hello
+</pre><div class="para">
+				And in <code class="literal">messages_en_AU.properties</code>:
+			</div><pre class="programlisting">Hello=G'day
+</pre><div class="para">
+				You can select a different name for the resource bundle by setting the Seam configuration property named <code class="literal">org.jboss.seam.core.resourceBundle.bundleNames</code>. You can even specify a list of resource bundle names to be searched (depth first) for messages.
+			</div><pre class="programlisting">&lt;core:resource-bundle&gt;
+    &lt;core:bundle-names&gt;
+        &lt;value&gt;mycompany_messages&lt;/value&gt;
+        &lt;value&gt;standard_messages&lt;/value&gt;       
+    &lt;/core:bundle-names&gt;
+&lt;/core:resource-bundle&gt;
+</pre><div class="para">
+				If you want to define a message just for a particular page, you can specify it in a resource bundle with the same name as the JSF view id, with the leading <code class="literal">/</code> and trailing file extension removed. So we could put our message in <code class="literal">welcome/hello_en.properties</code> if we only needed to display the message on <code class="literal">/welcome/hello.jsp</code>.
+			</div><div class="para">
+				You can even specify an explicit bundle name in <code class="literal">pages.xml</code>:
+			</div><pre class="programlisting">&lt;page view-id="/welcome/hello.jsp" bundle="HelloMessages"/&gt;
+</pre><div class="para">
+				Then we could use messages defined in <code class="literal">HelloMessages.properties</code> on <code class="literal">/welcome/hello.jsp</code>.
+			</div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Internationalization_and_themes.html"><strong>Prev</strong>Chapter 13. Internationalization and themes</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Labels-Displaying_labels.html"><strong>Next</strong>13.2.2. Displaying labels</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Internationalization_and_themes-Persisting_locale_and_theme_preferences_via_cookies.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Internationalization_and_themes-Persisting_locale_and_theme_preferences_via_cookies.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Internationalization_and_themes-Persisting_locale_and_theme_preferences_via_cookies.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>13.5. Persisting locale and theme preferences via cookies</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Internationalization_and_themes.html" title="Chapter 13. Internationalization and themes" /><link rel="prev" href="Seam_Reference_Guide-Internationalization_and_themes-Themes.html" title="13.4. Themes" /><link rel="next" href="Seam_Reference_Guide-Seam_Text.html" title="Chapter 14. Seam Text" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="P!
 roduct Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Internationalization_and_themes-Themes.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_Text.html"><strong>Next</strong></a></li></ul><div class="section" title="13.5. Persisting locale and theme preferences via cookies"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Internationalization_and_themes-Persisting_locale_and_theme_preferences_via_cookies">13.5. Persisting locale and theme preferences via cookies</h2></div></div></div><div class="para">
+			The locale selector, theme selector and timezone selector all support persistence of locale and theme preference to a cookie. Simply set the <code class="literal">cookie-enabled</code> configuration property:
+		</div><pre class="programlisting">&lt;theme:theme-selector cookie-enabled="true"&gt;
+    &lt;theme:available-themes&gt;
+        &lt;value&gt;default&lt;/value&gt;
+        &lt;value&gt;accessible&lt;/value&gt;
+        &lt;value&gt;printable&lt;/value&gt;
+    &lt;/theme:available-themes&gt;
+&lt;/theme:theme-selector&gt;
+
+&lt;core:locale-selector cookie-enabled="true"/&gt;
+</pre></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Internationalization_and_themes-Themes.html"><strong>Prev</strong>13.4. Themes</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_Text.html"><strong>Next</strong>Chapter 14. Seam Text</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Internationalization_and_themes-Themes.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Internationalization_and_themes-Themes.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Internationalization_and_themes-Themes.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>13.4. Themes</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Internationalization_and_themes.html" title="Chapter 13. Internationalization and themes" /><link rel="prev" href="Seam_Reference_Guide-Internationalization_and_themes-Timezones.html" title="13.3. Timezones" /><link rel="next" href="Seam_Reference_Guide-Internationalization_and_themes-Persisting_locale_and_theme_preferences_via_cookies.html" title="13.5. Persisting locale and theme preferences via cookies" /></head><body class=""><p id="title"><a class="left" href="http://www.r!
 edhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Internationalization_and_themes-Timezones.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Internationalization_and_themes-Persisting_locale_and_theme_preferences_via_cookies.html"><strong>Next</strong></a></li></ul><div class="section" title="13.4. Themes"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Internationalization_and_themes-Themes">13.4. Themes</h2></div></div></div><div class="para">
+			Seam applications are also very easily skinnable. The theme API is very similar to the localization API, but of course these two concerns are orthogonal, and some applications support both localization and themes.
+		</div><div class="para">
+			First, configure the set of supported themes:
+		</div><pre class="programlisting">&lt;theme:theme-selector cookie-enabled="true"&gt;
+    &lt;theme:available-themes&gt;
+        &lt;value&gt;default&lt;/value&gt;
+        &lt;value&gt;accessible&lt;/value&gt;
+        &lt;value&gt;printable&lt;/value&gt;
+    &lt;/theme:available-themes&gt;
+&lt;/theme:theme-selector&gt;
+</pre><div class="note"><h2>Note</h2><div class="para">
+				The first theme listed is the default theme.
+			</div></div><div class="para">
+			Themes are defined in a properties file with the same name as the theme. For example, the <code class="literal">default</code> theme is defined as a set of entries in <code class="literal">default.properties</code>. For example, <code class="literal">default.properties</code> might define:
+		</div><pre class="programlisting">css ../screen.css
+template template.xhtml
+</pre><div class="para">
+			Usually the entries in a theme resource bundle will be paths to CSS styles or images and names of facelets templates (unlike localization resource bundles which are usually text).
+		</div><div class="para">
+			Now we can use these entries in our JSP or facelets pages. For example, to theme the stylesheet in a facelets page:
+		</div><pre class="programlisting">&lt;link href="#{theme.css}" rel="stylesheet" type="text/css" /&gt;
+</pre><div class="para">
+			Most powerfully, facelets lets us theme the template used by a <code class="literal">&lt;ui:composition&gt;</code>:
+		</div><pre class="programlisting">&lt;ui:composition xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:ui="http://java.sun.com/jsf/facelets"
+    xmlns:h="http://java.sun.com/jsf/html"
+    xmlns:f="http://java.sun.com/jsf/core"
+    template="#{theme.template}"&gt;
+</pre><div class="para">
+			Just like the locale selector, there is a built-in theme selector to allow the user to freely switch themes:
+		</div><pre class="programlisting">&lt;h:selectOneMenu value="#{themeSelector.theme}"&gt;
+    &lt;f:selectItems value="#{themeSelector.themes}"/&gt;
+&lt;/h:selectOneMenu&gt;
+&lt;h:commandButton action="#{themeSelector.select}" value="Select Theme"/&gt;
+</pre></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Internationalization_and_themes-Timezones.html"><strong>Prev</strong>13.3. Timezones</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Internationalization_and_themes-Persisting_locale_and_theme_preferences_via_cookies.html"><strong>Next</strong>13.5. Persisting locale and theme preferences via...</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Internationalization_and_themes-Timezones.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Internationalization_and_themes-Timezones.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Internationalization_and_themes-Timezones.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>13.3. Timezones</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Internationalization_and_themes.html" title="Chapter 13. Internationalization and themes" /><link rel="prev" href="Seam_Reference_Guide-Labels-Faces_messages.html" title="13.2.3. Faces messages" /><link rel="next" href="Seam_Reference_Guide-Internationalization_and_themes-Themes.html" title="13.4. Themes" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="r!
 ight" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Labels-Faces_messages.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Internationalization_and_themes-Themes.html"><strong>Next</strong></a></li></ul><div class="section" title="13.3. Timezones"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Internationalization_and_themes-Timezones">13.3. Timezones</h2></div></div></div><div class="para">
+			There is also a session-scoped instance of <code class="literal">java.util.Timezone</code>, named <code class="literal">org.jboss.seam.core.timezone</code>, and a Seam component for changing the timezone named <code class="literal">org.jboss.seam.core.timezoneSelector</code>. By default, the timezone is the default timezone of the server. Unfortunately, the JSF specification says that all dates and times should be assumed to be UTC, and displayed as UTC, unless a timezone is explicitly specified using <code class="literal">&lt;f:convertDateTime&gt;</code>. This is an extremely inconvenient default behavior.
+		</div><div class="para">
+			Seam overrides this behavior, and defaults all dates and times to the Seam timezone. In addition, Seam provides the <code class="literal">&lt;s:convertDateTime&gt;</code> tag which always performs conversions in the Seam timezone.
+		</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Labels-Faces_messages.html"><strong>Prev</strong>13.2.3. Faces messages</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Internationalization_and_themes-Themes.html"><strong>Next</strong>13.4. Themes</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Internationalization_and_themes.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Internationalization_and_themes.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Internationalization_and_themes.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 13. Internationalization and themes</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="index.html" title="Seam Reference Guide CP07" /><link rel="prev" href="Seam_Reference_Guide-Implementing_a_Captcha_Test-Adding_a_Captcha_to_a_page.html" title="12.8.2. Adding a Captcha to a page" /><link rel="next" href="Seam_Reference_Guide-Internationalization_and_themes-Labels.html" title="13.2. Labels" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a c!
 lass="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Implementing_a_Captcha_Test-Adding_a_Captcha_to_a_page.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Internationalization_and_themes-Labels.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="chapter" title="Chapter 13. Internationalization and themes" lang="en-US"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Internationalization_and_themes">Chapter 13. Internationalization and themes</h2></div></div></div><div class="toc"><dl><dt><span class="section"><a href="Seam_Reference_Guide-Internationalization_and_themes.html#Seam_Reference_Guide-Internationalization_and_themes-Locales">13.1. Locales</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Inte!
 rnationalization_and_themes-Labels.html">13.2. Labels</a></spa!
 n></dt><
dd><dl><dt><span class="section"><a href="Seam_Reference_Guide-Internationalization_and_themes-Labels.html#Seam_Reference_Guide-Labels-Defining_labels">13.2.1. Defining labels</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Labels-Displaying_labels.html">13.2.2. Displaying labels</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Labels-Faces_messages.html">13.2.3. Faces messages</a></span></dt></dl></dd><dt><span class="section"><a href="Seam_Reference_Guide-Internationalization_and_themes-Timezones.html">13.3. Timezones</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Internationalization_and_themes-Themes.html">13.4. Themes</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Internationalization_and_themes-Persisting_locale_and_theme_preferences_via_cookies.html">13.5. Persisting locale and theme preferences via cookies</a></span></dt></dl></div><div class="para">
+		Seam makes it easy to build internationalized applications by providing several built-in components for handling multi-language UI messages.
+	</div><div class="section" title="13.1. Locales"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Internationalization_and_themes-Locales">13.1. Locales</h2></div></div></div><div class="para">
+			Each user login session has an associated instance of <code class="literal">java.util.Locale</code> (available to the application as a session-scoped component named <code class="literal">locale</code>). Under normal circumstances, you will not need to do any special configuration to set the locale. Seam just delegates to JSF to determine the active locale:
+		</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+					If there is a locale associated with the HTTP request (the browser locale), and that locale is in the list of supported locales from <code class="literal">faces-config.xml</code>, use that locale for the rest of the session.
+				</div></li><li class="listitem"><div class="para">
+					Otherwise, if a default locale was specified in the <code class="literal">faces-config.xml</code>, use that locale for the rest of the session.
+				</div></li><li class="listitem"><div class="para">
+					Otherwise, use the default locale of the server.
+				</div></li></ul></div><div class="para">
+			It is <span class="emphasis"><em>possible</em></span> to set the locale manually via the Seam configuration properties <code class="literal">org.jboss.seam.core.localeSelector.language</code>, <code class="literal">org.jboss.seam.core.localeSelector.country</code> and <code class="literal">org.jboss.seam.core.localeSelector.variant</code>, but we cannot think of any good reason to ever do this.
+		</div><div class="para">
+			It is, however, useful to allow the user to set the locale manually via the application user interface. Seam provides built-in functionality for overriding the locale determined by the algorithm above. All you have to do is add the following fragment to a form in your JSP or Facelets page:
+		</div><pre class="programlisting">&lt;h:selectOneMenu value="#{localeSelector.language}"&gt;
+    &lt;f:selectItem itemLabel="English" itemValue="en"/&gt;
+    &lt;f:selectItem itemLabel="Deutsch" itemValue="de"/&gt;
+    &lt;f:selectItem itemLabel="Francais" itemValue="fr"/&gt;
+&lt;/h:selectOneMenu&gt;
+&lt;h:commandButton action="#{localeSelector.select}" value="#{messages['ChangeLanguage']}"/&gt;
+</pre><div class="para">
+			Or, if you want a list of all supported locales from <code class="literal">faces-config.xml</code>, just use:
+		</div><pre class="programlisting">&lt;h:selectOneMenu value="#{localeSelector.localeString}"&gt;
+    &lt;f:selectItems value="#{localeSelector.supportedLocales}"/&gt;
+&lt;/h:selectOneMenu&gt;
+&lt;h:commandButton action="#{localeSelector.select}" value="#{messages['ChangeLanguage']}"/&gt;
+</pre><div class="para">
+			When this use selects an item from the drop-down, and clicks the button, the Seam and JSF locales will be overridden for the rest of the session.
+		</div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Implementing_a_Captcha_Test-Adding_a_Captcha_to_a_page.html"><strong>Prev</strong>12.8.2. Adding a Captcha to a page</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Internationalization_and_themes-Labels.html"><strong>Next</strong>13.2. Labels</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Introduction_to_JBoss_Seam.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Introduction_to_JBoss_Seam.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Introduction_to_JBoss_Seam.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Introduction to JBoss Seam</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="index.html" title="Seam Reference Guide CP07" /><link rel="prev" href="Feedback.html" title="Chapter 1. Feedback" /><link rel="next" href="Seam_Reference_Guide-Seam_Tutorial.html" title="Chapter 2. Seam Tutorial" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Sit!
 e" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Feedback.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_Tutorial.html"><strong>Next</strong></a></li></ul><div class="preface" title="Introduction to JBoss Seam"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Introduction_to_JBoss_Seam" class="title">Introduction to JBoss Seam</h1></div></div></div><div class="para">
+			Seam is an application framework for Java EE 5. It is inspired by the following principles:
+		</div><div class="variablelist"><dl><dt><span class="term"><span class="emphasis"><em>Integrate JSF with EJB 3.0</em></span></span></dt><dd><div class="para">
+						JSF and EJB 3.0 are two of the best new features of Java EE 5. EJB3 is a brand new component model for server side business and persistence logic. Meanwhile, JSF is a great component model for the presentation tier. Unfortunately, neither component model is able to solve all problems in computing by itself. Indeed, JSF and EJB3 work best when used together. But the Java EE 5 specification provides no standard way to integrate the two component models. Fortunately, the creators of both models anticipated this situation and provided standard extension points to allow extension and integration of other solutions.
+					</div><div class="para">
+						Seam unifies the component models of JSF and EJB3, allowing the developer to concentrate on the business problem.
+					</div></dd><dt><span class="term"><span class="emphasis"><em>Integrated AJAX</em></span></span></dt><dd><div class="para">
+						Seam supports two open source JSF-based AJAX solutions: ICEfaces and Ajax4JSF. These solutions let you add AJAX capability to your user interface without the need to write any JavaScript code.
+					</div><div class="para">
+						Seam also provides a built-in JavaScript remoting layer for EJB3 components. AJAX clients can easily call server-side components and subscribe to JMS topics, without the need for an intermediate action layer.
+					</div><div class="para">
+						Neither of these approaches would work well, were it not for Seam's built-in concurrency and state management, which ensures that many concurrent fine-grained, asynchronous AJAX requests are handled safely and efficiently on the server side.
+					</div></dd><dt><span class="term"><span class="emphasis"><em>Integrate Business Process as a First Class Construct</em></span></span></dt><dd><div class="para">
+						Optionally, Seam integrates transparent business process management via jBPM. This allows for complex workflows to easily be implemented using jBPM and Seam.
+					</div><div class="para">
+						Seam even allows definition of presentation tier conversation flow by the same means.
+					</div><div class="para">
+						JSF provides an incredibly rich event model for the presentation tier. Seam enhances this model by exposing jBPM's business process related events via exactly the same event handling mechanism, providing a uniform event model for Seam's uniform component model.
+					</div></dd><dt><span class="term"><span class="emphasis"><em>The uniform component model</em></span></span></dt><dd><div class="para">
+						Seam provides a uniform component model. A Seam component may be stateful, with the state associated to any one of a number of contexts, ranging from the long-running business process to a single web request.
+					</div><div class="para">
+						There is no distinction between presentation tier components and business logic components in Seam. It is possible to write Seam applications where <span class="emphasis"><em>everything</em></span> is an EJB. EJB 3.0 completely changes the nature of EJB from the point of view of the developer. An EJB is a fine-grained object, no more complex than an annotated JavaBean. Seam even encourages you to use session beans as JSF action listeners.
+					</div><div class="para">
+						Unlike plain Java EE or J2EE components, Seam components may <span class="emphasis"><em>simultaneously</em></span> access state associated with the web request and state held in transactional resources (without the need to propagate web request state manually via method parameters). You might object that the application layering imposed upon you by the old J2EE platform was a Good Thing. Well, nothing stops you creating an equivalent layered architecture using Seam - the difference is that <span class="emphasis"><em>you</em></span> get to architect your own application and decide what the layers are and how they work together.
+					</div></dd><dt><span class="term"><span class="emphasis"><em>Declarative State Management</em></span></span></dt><dd><div class="para">
+						We are all used to the concept of declarative transaction management and J2EE declarative security from EJB 2.x. EJB 3.0 even introduces declarative persistence context management. These are three examples of a broader problem of managing state that is associated with a particular <span class="emphasis"><em>context</em></span>, while ensuring that all needed cleanup occurs when the context ends. Seam takes the concept of declarative state management much further and applies it to <span class="emphasis"><em>application state</em></span>. Traditionally, J2EE applications almost always implement state management manually, by getting and setting servlet session and request attributes. This approach to state management is the source of many bugs and memory leaks when applications fail to clean up session attributes, or when session data associated with different workflows collides in a multi-window application. Seam has the potential to almost entirely eliminate this class!
  of bugs.
+					</div><div class="para">
+						Declarative application state management is made possible by the richness of the <span class="emphasis"><em>context model</em></span> defined by Seam. Seam extends the context model defined by the servlet spec—request, session, application—with two new contexts—conversation and business process—that are more meaningful from the point of view of the business logic.
+					</div></dd><dt><span class="term"><span class="emphasis"><em>Bijection</em></span></span></dt><dd><div class="para">
+						The notion of <span class="emphasis"><em>Inversion of Control</em></span> or <span class="emphasis"><em>dependency injection</em></span> exists in both JSF and EJB3, as well as in numerous simpler containers. Most of these containers emphasize injection of components that implement <span class="emphasis"><em>stateless services</em></span>. Even when injection of stateful components is supported (such as in JSF), it is virtually useless for handling application state because the scope of the stateful component cannot be defined with sufficient flexibility.
+					</div><div class="para">
+						<span class="emphasis"><em>Bijection</em></span> differs from IoC in that it is <span class="emphasis"><em>dynamic</em></span>, <span class="emphasis"><em>contextual</em></span>, and <span class="emphasis"><em>bidirectional</em></span>. You can think of it as a mechanism for aliasing contextual variables (names in the various contexts bound to the current thread) to attributes of the component. Bijection allows auto-assembly of stateful components by the container. It even allows a component to safely and easily manipulate the value of a context variable, just by assigning to an attribute of the component.
+					</div></dd><dt><span class="term"><span class="emphasis"><em>Workspace Management</em></span></span></dt><dd><div class="para">
+						Optionally, Seam applications may take advantage of <span class="emphasis"><em>workspace management</em></span>, allowing users to freely switch between different conversations (workspaces) in a single browser window. Seam provides not only correct multi-window operation, but also multi-window-like operation in a single window!
+					</div></dd><dt><span class="term"><span class="emphasis"><em>Annotated POJOs Everywhere</em></span></span></dt><dd><div class="para">
+						EJB 3.0 embraces annotations and <span class="emphasis"><em>configuration by exception</em></span> as the easiest way to provide information to the container in a declarative form. Unfortunately, JSF is still heavily dependent on verbose XML configuration files. Seam extends the annotations provided by EJB 3.0 with a set of annotations for declarative state management and declarative context demarcation. This lets you eliminate the noisy JSF managed bean declarations and reduce the required XML to just that information which truly belongs in XML (the JSF navigation rules).
+					</div></dd><dt><span class="term"><span class="emphasis"><em>Testability as a Core Feature</em></span></span></dt><dd><div class="para">
+						Seam components, being POJOs, are by nature unit testable. But for complex applications, unit testing alone is insufficient. Integration testing has traditionally been a messy and difficult task for Java web applications. Therefore, Seam provides for testability of Seam applications as a core feature of the framework. You can easily write JUnit or TestNG tests that reproduce a whole interaction with a user, exercising all components of the system apart from the view (the JSP or Facelets page). You can run these tests directly inside your IDE, where Seam will automatically deploy EJB components into the JBoss Embeddable EJB3 container.
+					</div></dd><dt><span class="term"><span class="emphasis"><em>Get started now!</em></span></span></dt><dd><div class="para">
+						Seam works in any application server that supports EJB 3.0. You can even use Seam in a servlet container like Tomcat, or in any J2EE application server, by leveraging the new JBoss Embeddable EJB3 container.
+					</div><div class="para">
+						However, we realize that not everyone is ready to make the switch to EJB 3.0. So, in the interim, you can use Seam as a framework for applications that use JSF for presentation, Hibernate (or plain JDBC) for persistence and JavaBeans for application logic. Then, when you're ready to make the switch to EJB 3.0, migration will be straightforward.
+					</div></dd></dl></div><div class="mediaobject" align="center"><img src="images/architecture.png" align="middle" /></div><div class="para">
+			It turns out that the combination of Seam, JSF and EJB3 is <span class="emphasis"><em>the</em></span> simplest way to write a complex web application in Java. You won't believe how little code is required!
+		</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Feedback.html"><strong>Prev</strong>Chapter 1. Feedback</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_Tutorial.html"><strong>Next</strong>Chapter 2. Seam Tutorial</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-JMS_Messaging-Subscribing_to_a_JMS_Topic.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-JMS_Messaging-Subscribing_to_a_JMS_Topic.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-JMS_Messaging-Subscribing_to_a_JMS_Topic.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>19.10.2. Subscribing to a JMS Topic</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Remoting-JMS_Messaging.html" title="19.10. JMS Messaging" /><link rel="prev" href="Seam_Reference_Guide-Remoting-JMS_Messaging.html" title="19.10. JMS Messaging" /><link rel="next" href="Seam_Reference_Guide-JMS_Messaging-Unsubscribing_from_a_Topic.html" title="19.10.3. Unsubscribing from a Topic" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a>!
 <a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Remoting-JMS_Messaging.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-JMS_Messaging-Unsubscribing_from_a_Topic.html"><strong>Next</strong></a></li></ul><div class="sect2" title="19.10.2. Subscribing to a JMS Topic"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-JMS_Messaging-Subscribing_to_a_JMS_Topic" class="title">Subscribing to a JMS Topic</h1></div></div></div><div class="para">
+		The following example demonstrates how to subscribe to a JMS Topic:
+	</div><pre class="programlisting">
+  function subscriptionCallback(message)
+  {
+    if (message instanceof Seam.Remoting.TextMessage)
+      alert("Received message: " + message.getText());
+  }        
+        
+  Seam.Remoting.subscribe("topicName", subscriptionCallback);
+</pre><div class="para">
+		The <code class="literal">Seam.Remoting.subscribe()</code> method accepts two parameters, the first being the name of the JMS Topic to subscribe to, the second being the callback function to invoke when a message is received.
+	</div><div class="para">
+		There are two types of messages supported, Text messages and Object messages. If you need to test for the type of message that is passed to your callback function you can use the <code class="literal">instanceof</code> operator to test whether the message is a <code class="literal">Seam.Remoting.TextMessage</code> or <code class="literal">Seam.Remoting.ObjectMessage</code>. A <code class="literal">TextMessage</code> contains the text value in its <code class="literal">text</code> field (or alternatively call <code class="literal">getText()</code> on it), while an <code class="literal">ObjectMessage</code> contains its object value in its <code class="literal">object</code> field (or call its <code class="literal">getObject()</code> method).
+	</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Remoting-JMS_Messaging.html"><strong>Prev</strong>19.10. JMS Messaging</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-JMS_Messaging-Unsubscribing_from_a_Topic.html"><strong>Next</strong>19.10.3. Unsubscribing from a Topic</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-JMS_Messaging-Tuning_the_Polling_Process.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-JMS_Messaging-Tuning_the_Polling_Process.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-JMS_Messaging-Tuning_the_Polling_Process.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>19.10.4. Tuning the Polling Process</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Remoting-JMS_Messaging.html" title="19.10. JMS Messaging" /><link rel="prev" href="Seam_Reference_Guide-JMS_Messaging-Unsubscribing_from_a_Topic.html" title="19.10.3. Unsubscribing from a Topic" /><link rel="next" href="Seam_Reference_Guide-Spring_Framework_integration.html" title="Chapter 20. Spring Framework integration" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png!
 " alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-JMS_Messaging-Unsubscribing_from_a_Topic.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Spring_Framework_integration.html"><strong>Next</strong></a></li></ul><div class="sect2" title="19.10.4. Tuning the Polling Process"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-JMS_Messaging-Tuning_the_Polling_Process" class="title">Tuning the Polling Process</h1></div></div></div><div class="para">
+		There are two parameters which you can modify to control how polling occurs. The first one is <code class="literal">Seam.Remoting.pollInterval</code>, which controls how long to wait between subsequent polls for new messages. This parameter is expressed in seconds, and its default setting is 10.
+	</div><div class="para">
+		The second parameter is <code class="literal">Seam.Remoting.pollTimeout</code>, and is also expressed as seconds. It controls how long a request to the server should wait for a new message before timing out and sending an empty response. Its default is 0 seconds, which means that when the server is polled, if there are no messages ready for delivery then an empty response will be immediately returned.
+	</div><div class="para">
+		Caution should be used when setting a high <code class="literal">pollTimeout</code> value; each request that has to wait for a message means that a server thread is tied up until a message is received, or until the request times out. If many such requests are being served simultaneously, it could mean a large number of threads become tied up because of this reason.
+	</div><div class="para">
+		It is recommended that you set these options via components.xml, however they can be overridden via Javascript if desired. The following example demonstrates how to configure the polling to occur much more aggressively. You should set these parameters to suitable values for your application:
+	</div><div class="para">
+		Via components.xml:
+	</div><pre class="programlisting">&lt;remoting:remoting poll-timeout="5" poll-interval="1"/&gt;
+</pre><div class="para">
+		Via JavaScript:
+	</div><pre class="programlisting">
+  // Only wait 1 second between receiving a poll response and sending the next poll request.
+  Seam.Remoting.pollInterval = 1;
+  
+  // Wait up to 5 seconds on the server for new messages
+  Seam.Remoting.pollTimeout = 5;
+</pre></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-JMS_Messaging-Unsubscribing_from_a_Topic.html"><strong>Prev</strong>19.10.3. Unsubscribing from a Topic</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Spring_Framework_integration.html"><strong>Next</strong>Chapter 20. Spring Framework integration</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-JMS_Messaging-Unsubscribing_from_a_Topic.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-JMS_Messaging-Unsubscribing_from_a_Topic.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-JMS_Messaging-Unsubscribing_from_a_Topic.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>19.10.3. Unsubscribing from a Topic</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Remoting-JMS_Messaging.html" title="19.10. JMS Messaging" /><link rel="prev" href="Seam_Reference_Guide-JMS_Messaging-Subscribing_to_a_JMS_Topic.html" title="19.10.2. Subscribing to a JMS Topic" /><link rel="next" href="Seam_Reference_Guide-JMS_Messaging-Tuning_the_Polling_Process.html" title="19.10.4. Tuning the Polling Process" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_le!
 ft.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-JMS_Messaging-Subscribing_to_a_JMS_Topic.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-JMS_Messaging-Tuning_the_Polling_Process.html"><strong>Next</strong></a></li></ul><div class="sect2" title="19.10.3. Unsubscribing from a Topic"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-JMS_Messaging-Unsubscribing_from_a_Topic" class="title">Unsubscribing from a Topic</h1></div></div></div><div class="para">
+		To unsubscribe from a topic, call <code class="literal">Seam.Remoting.unsubscribe()</code> and pass in the topic name:
+	</div><pre class="programlisting">
+  Seam.Remoting.unsubscribe("topicName");
+</pre></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-JMS_Messaging-Subscribing_to_a_JMS_Topic.html"><strong>Prev</strong>19.10.2. Subscribing to a JMS Topic</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-JMS_Messaging-Tuning_the_Polling_Process.html"><strong>Next</strong>19.10.4. Tuning the Polling Process</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-JSF_form_validation_in_Seam.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-JSF_form_validation_in_Seam.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-JSF_form_validation_in_Seam.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,204 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 9. JSF form validation in Seam</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="index.html" title="Seam Reference Guide CP07" /><link rel="prev" href="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_Hibernate_filters.html" title="8.6. Using Hibernate filters" /><link rel="next" href="Seam_Reference_Guide-The_Seam_Application_Framework.html" title="Chapter 10. The Seam Application Framework" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product S!
 ite" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_Hibernate_filters.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-The_Seam_Application_Framework.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="chapter" title="Chapter 9. JSF form validation in Seam" lang="en-US"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-JSF_form_validation_in_Seam">Chapter 9. JSF form validation in Seam</h2></div></div></div><div class="para">
+		In plain JSF, validation is defined in the view:
+	</div><pre class="programlisting">&lt;h:form&gt;
+    &lt;h:messages/&gt;
+
+    &lt;div&gt;
+        Country:
+        &lt;h:inputText value="#{location.country}" required="true"&gt;
+            &lt;my:validateCountry/&gt;
+        &lt;/h:inputText&gt;
+    &lt;/div&gt;
+    
+    &lt;div&gt;
+        Zip code:
+        &lt;h:inputText value="#{location.zip}" required="true"&gt;
+            &lt;my:validateZip/&gt;
+        &lt;/h:inputText&gt;
+    &lt;/div&gt;
+
+    &lt;h:commandButton/&gt;
+&lt;/h:form&gt;
+</pre><div class="para">
+		In practice, this approach usually violates DRY, since most validation actually enforces constraints that are part of the data model, and exist all the way down to the database schema definition. Seam provides support for model-based constraints defined using Hibernate Validator.
+	</div><div class="para">
+		Let us start by defining our constraints, on our <code class="literal">Location</code> class:
+	</div><pre class="programlisting">public class Location {
+    private String country;
+    private String zip;
+    
+    @NotNull
+    @Length(max=30)
+    public String getCountry() { return country; }
+    public void setCountry(String c) { country = c; }
+
+    @NotNull
+    @Length(max=6)
+    @Pattern("^\d*$")
+    public String getZip() { return zip; }
+    public void setZip(String z) { zip = z; }
+}
+</pre><div class="para">
+		Well, that is a decent first cut, but in practice it might be more elegant to use custom constraints instead of the ones built into Hibernate Validator:
+	</div><pre class="programlisting">public class Location {
+    private String country;
+    private String zip;
+    
+    @NotNull
+    @Country
+    public String getCountry() { return country; }
+    public void setCountry(String c) { country = c; }
+
+    @NotNull
+    @ZipCode
+    public String getZip() { return zip; }
+    public void setZip(String z) { zip = z; }
+}
+</pre><div class="para">
+		Whichever route we take, we no longer need to specify the type of validation to be used in the JSF page. Instead, we can use <code class="literal">&lt;s:validate&gt;</code> to validate against the constraint defined on the model object.
+	</div><pre class="programlisting">&lt;h:form&gt;
+    &lt;h:messages/&gt;
+
+    &lt;div&gt;
+        Country:
+        &lt;h:inputText value="#{location.country}" required="true"&gt;
+            &lt;s:validate/&gt;
+        &lt;/h:inputText&gt;
+    &lt;/div&gt;
+    
+    &lt;div&gt;
+        Zip code:
+        &lt;h:inputText value="#{location.zip}" required="true"&gt;
+            &lt;s:validate/&gt;
+        &lt;/h:inputText&gt;
+    &lt;/div&gt;
+    
+    &lt;h:commandButton/&gt;
+
+&lt;/h:form&gt;
+</pre><div class="para">
+		<span class="emphasis"><em>Note:</em></span> specifying <code class="literal">@NotNull</code> on the model does <span class="emphasis"><em>not</em></span> eliminate the requirement for <code class="literal">required="true"</code> to appear on the control! This is due to a limitation of the JSF validation architecture.
+	</div><div class="para">
+		This approach <span class="emphasis"><em>defines</em></span> constraints on the model, and <span class="emphasis"><em>presents</em></span> constraint violations in the view—a significantly better design.
+	</div><div class="para">
+		However, it is not much less verbose than what we started with, so let us try <code class="literal">&lt;s:validateAll&gt;</code>:
+	</div><pre class="programlisting">&lt;h:form&gt;
+    
+    &lt;h:messages/&gt;
+
+    &lt;s:validateAll&gt;
+
+        &lt;div&gt;
+            Country:
+            &lt;h:inputText value="#{location.country}" required="true"/&gt;
+        &lt;/div&gt;
+
+        &lt;div&gt;
+            Zip code:
+            &lt;h:inputText value="#{location.zip}" required="true"/&gt;
+        &lt;/div&gt;
+
+        &lt;h:commandButton/&gt;
+
+    &lt;/s:validateAll&gt;
+
+&lt;/h:form&gt;
+</pre><div class="para">
+		This tag simply adds an <code class="literal">&lt;s:validate&gt;</code> to every input in the form. For a large form, it can save a lot of typing.
+	</div><div class="para">
+		Now we need to do something about displaying feedback to the user when validation fails. Currently we are displaying all messages at the top of the form. What we would really like to do is display the message next to the field with the error (this is possible in plain JSF), highlight the field and label (this is not possible) and, for good measure, display some image next the the field (also not possible). We also want to display a little colored asterisk next to the label for each required form field.
+	</div><div class="para">
+		That is quite a lot of functionality we need for each field of our form. We would not want to have to specify higlighting and the layout of the image, message and input field for every field on the form. So, instead, we will specify the common layout in a facelets template:
+	</div><pre class="programlisting">&lt;ui:composition xmlns="http://www.w3.org/1999/xhtml"
+                xmlns:ui="http://java.sun.com/jsf/facelets"
+                xmlns:h="http://java.sun.com/jsf/html"
+                xmlns:f="http://java.sun.com/jsf/core"
+                xmlns:s="http://jboss.com/products/seam/taglib"&gt;
+                 
+    &lt;div&gt;
+    
+        &lt;s:label styleClass="#{invalid?'error':''}"&gt;
+            &lt;ui:insert name="label"/&gt;
+            &lt;s:span styleClass="required" rendered="#{required}"&gt;*&lt;/s:span&gt;
+        &lt;/s:label&gt;
+        
+        &lt;span class="#{invalid?'error':''}"&gt;
+            &lt;h:graphicImage src="img/error.gif" rendered="#{invalid}"/&gt;
+            &lt;s:validateAll&gt;
+                &lt;ui:insert/&gt;
+            &lt;/s:validateAll&gt;
+        &lt;/span&gt;
+        
+        &lt;s:message styleClass="error"/&gt;
+        
+    &lt;/div&gt;
+    
+&lt;/ui:composition&gt;
+</pre><div class="para">
+		We can include this template for each of our form fields using <code class="literal">&lt;s:decorate&gt;</code>.
+	</div><pre class="programlisting">&lt;h:form&gt;
+
+    &lt;h:messages globalOnly="true"/&gt;
+
+    &lt;s:decorate template="edit.xhtml"&gt;
+        &lt;ui:define name="label"&gt;Country:&lt;/ui:define&gt;
+        &lt;h:inputText value="#{location.country}" required="true"/&gt;
+    &lt;/s:decorate&gt;
+    
+    &lt;s:decorate template="edit.xhtml"&gt;
+        &lt;ui:define name="label"&gt;Zip code:&lt;/ui:define&gt;
+        &lt;h:inputText value="#{location.zip}" required="true"/&gt;
+    &lt;/s:decorate&gt;
+
+    &lt;h:commandButton/&gt;
+
+&lt;/h:form&gt;
+</pre><div class="para">
+		Finally, we can use Ajax4JSF to display validation messages as the user is navigating around the form:
+	</div><pre class="programlisting">&lt;h:form&gt;
+
+    &lt;h:messages globalOnly="true"/&gt;
+
+    &lt;s:decorate id="countryDecoration" template="edit.xhtml"&gt;
+        &lt;ui:define name="label"&gt;Country:&lt;/ui:define&gt;
+        &lt;h:inputText value="#{location.country}" required="true"&gt;
+            &lt;a:support event="onblur" reRender="countryDecoration"/&gt;
+        &lt;/h:inputText&gt;
+    &lt;/s:decorate&gt;
+    
+    &lt;s:decorate id="zipDecoration" template="edit.xhtml"&gt;
+        &lt;ui:define name="label"&gt;Zip code:&lt;/ui:define&gt;
+        &lt;h:inputText value="#{location.zip}" required="true"&gt;
+            &lt;a:support event="onblur" reRender="zipDecoration"/&gt;
+        &lt;/h:inputText&gt;
+    &lt;/s:decorate&gt;
+
+    &lt;h:commandButton/&gt;
+
+&lt;/h:form&gt;
+</pre><div class="para">
+		As a final note, it would be better style to define explicit IDs for important controls on the page, especially if you want to do automated testing for the UI, using some toolkit like Selenium. If you do not provide explicit ids, JSF will generate them, but the generated values will change if you change anything on the page.
+	</div><pre class="programlisting">&lt;h:form id="form"&gt;
+
+    &lt;h:messages globalOnly="true"/&gt;
+
+    &lt;s:decorate id="countryDecoration" template="edit.xhtml"&gt;
+        &lt;ui:define name="label"&gt;Country:&lt;/ui:define&gt;
+        &lt;h:inputText id="country" value="#{location.country}" required="true"&gt;
+            &lt;a:support event="onblur" reRender="countryDecoration"/&gt;
+        &lt;/h:inputText&gt;
+    &lt;/s:decorate&gt;
+    
+    &lt;s:decorate id="zipDecoration" template="edit.xhtml"&gt;
+        &lt;ui:define name="label"&gt;Zip code:&lt;/ui:define&gt;
+        &lt;h:inputText id="zip" value="#{location.zip}" required="true"&gt;
+            &lt;a:support event="onblur" reRender="zipDecoration"/&gt;
+        &lt;/h:inputText&gt;
+    &lt;/s:decorate&gt;
+
+    &lt;h:commandButton/&gt;
+
+&lt;/h:form&gt;
+</pre></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_Hibernate_filters.html"><strong>Prev</strong>8.6. Using Hibernate filters</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-The_Seam_Application_Framework.html"><strong>Next</strong>Chapter 10. The Seam Application Framework</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Labels-Displaying_labels.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Labels-Displaying_labels.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Labels-Displaying_labels.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>13.2.2. Displaying labels</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Internationalization_and_themes-Labels.html" title="13.2. Labels" /><link rel="prev" href="Seam_Reference_Guide-Internationalization_and_themes-Labels.html" title="13.2. Labels" /><link rel="next" href="Seam_Reference_Guide-Labels-Faces_messages.html" title="13.2.3. Faces messages" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="htt!
 p://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Internationalization_and_themes-Labels.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Labels-Faces_messages.html"><strong>Next</strong></a></li></ul><div class="section" title="13.2.2. Displaying labels"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Labels-Displaying_labels">13.2.2. Displaying labels</h3></div></div></div><div class="para">
+				If you define your labels using the Seam resource bundle, you will be able to use them without having to type <code class="literal">&lt;f:loadBundle ... /&gt;</code> on every page. Instead, you can simply type:
+			</div><pre class="programlisting">&lt;h:outputText value="#{messages['Hello']}"/&gt;
+</pre><div class="para">
+				or:
+			</div><pre class="programlisting">&lt;h:outputText value="#{messages.Hello}"/&gt;
+</pre><div class="para">
+				Even better, the messages themselves may contain EL expressions:
+			</div><pre class="programlisting">Hello=Hello, #{user.firstName} #{user.lastName}
+</pre><pre class="programlisting">Hello=G'day, #{user.firstName}
+</pre><div class="para">
+				You can even use the messages in your code:
+			</div><pre class="programlisting">@In private Map&lt;String, String&gt; messages;
+</pre><pre class="programlisting">@In("#{messages['Hello']}") private String helloMessage;
+</pre></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Internationalization_and_themes-Labels.html"><strong>Prev</strong>13.2. Labels</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Labels-Faces_messages.html"><strong>Next</strong>13.2.3. Faces messages</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Labels-Faces_messages.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Labels-Faces_messages.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Labels-Faces_messages.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>13.2.3. Faces messages</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Internationalization_and_themes-Labels.html" title="13.2. Labels" /><link rel="prev" href="Seam_Reference_Guide-Labels-Displaying_labels.html" title="13.2.2. Displaying labels" /><link rel="next" href="Seam_Reference_Guide-Internationalization_and_themes-Timezones.html" title="13.3. Timezones" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" !
 href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Labels-Displaying_labels.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Internationalization_and_themes-Timezones.html"><strong>Next</strong></a></li></ul><div class="section" title="13.2.3. Faces messages"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Labels-Faces_messages">13.2.3. Faces messages</h3></div></div></div><div class="para">
+				The <code class="literal">facesMessages</code> component is a super-convenient way to display success or failure messages to the user. The functionality we just described also works for faces messages:
+			</div><pre class="programlisting">@Name("hello")
+ at Stateless
+public class HelloBean implements Hello {
+    @In FacesMessages facesMessages;
+    
+    public String sayIt() {
+        facesMessages.addFromResourceBundle("Hello");
+    }
+}
+</pre><div class="para">
+				This will display <code class="literal">Hello, Gavin King</code> or <code class="literal">G'day, Gavin</code>, depending upon the user's locale.
+			</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Labels-Displaying_labels.html"><strong>Prev</strong>13.2.2. Displaying labels</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Internationalization_and_themes-Timezones.html"><strong>Next</strong>13.3. Timezones</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Limitations-Calling_a_MethodExpression_from_Java_code.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Limitations-Calling_a_MethodExpression_from_Java_code.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Limitations-Calling_a_MethodExpression_from_Java_code.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>25.3.2. Calling a MethodExpression from Java code</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Expression_language_enhancements-Limitations.html" title="25.3. Limitations" /><link rel="prev" href="Seam_Reference_Guide-Expression_language_enhancements-Limitations.html" title="25.3. Limitations" /><link rel="next" href="Seam_Reference_Guide-Testing_Seam_applications.html" title="Chapter 26. Testing Seam applications" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/i!
 mage_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Expression_language_enhancements-Limitations.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Testing_Seam_applications.html"><strong>Next</strong></a></li></ul><div class="section" title="25.3.2. Calling a MethodExpression from Java code"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Limitations-Calling_a_MethodExpression_from_Java_code">25.3.2. Calling a <code class="literal">MethodExpression</code> from Java code</h3></div></div></div><div class="para">
+				Normally, when a <code class="literal">MethodExpression</code> or <code class="literal">MethodBinding</code> is created, the parameter types are passed in by JSF. In the case of a method binding, JSF assumes that there are no parameters to pass. With this extension, we can’t know the parameter types until after the expression has been evaluated. This has two minor consequences:
+			</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+						When you invoke a <code class="literal">MethodExpression</code> in Java code, parameters you pass may be ignored. Parameters defined in the expression will take precedence.
+					</div></li><li class="listitem"><div class="para">
+						Ordinarily, it is safe to call <code class="literal">methodExpression.getMethodInfo().getParamTypes()</code> at any time. For an expression with parameters, you must first invoke the <code class="literal">MethodExpression</code> before calling <code class="literal">getParamTypes()</code>.
+					</div></li></ul></div><div class="para">
+				Both of these cases are exceedingly rare and only apply when you want to invoke the <code class="literal">MethodExpression</code> by hand in Java code.
+			</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Expression_language_enhancements-Limitations.html"><strong>Prev</strong>25.3. Limitations</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Testing_Seam_applications.html"><strong>Next</strong>Chapter 26. Testing Seam applications</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Lists-plistItem.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Lists-plistItem.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Lists-plistItem.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>15.6.2. p:listItem</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-iText_PDF_generation-Lists.html" title="15.6. Lists" /><link rel="prev" href="Seam_Reference_Guide-iText_PDF_generation-Lists.html" title="15.6. Lists" /><link rel="next" href="Seam_Reference_Guide-iText_PDF_generation-Tables.html" title="15.7. Tables" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_C!
 ontent/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-iText_PDF_generation-Lists.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-iText_PDF_generation-Tables.html"><strong>Next</strong></a></li></ul><div class="section" title="15.6.2. p:listItem"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Lists-plistItem">15.6.2. p:listItem</h3></div></div></div><div class="para">
+				<code class="literal">p:listItem</code> supports the following attributes:
+			</div><div class="variablelist"><dl><dt><span class="term"><code class="literal">alignment</code></span></dt><dd><div class="para">
+							The alignment of the list item. (See <a class="xref" href="Seam_Reference_Guide-Document_Constants-Alignment_Values.html" title="15.8.2. Alignment Values">Section 15.8.2, “Alignment Values”</a> for possible values)
+						</div></dd><dt><span class="term"><code class="literal">indentationLeft</code></span></dt><dd><div class="para">
+							The left indentation amount.
+						</div></dd><dt><span class="term"><code class="literal">indentationRight</code></span></dt><dd><div class="para">
+							The right indentation amount.
+						</div></dd><dt><span class="term"><code class="literal">listSymbol</code></span></dt><dd><div class="para">
+							Overrides the default list symbol for this list item.
+						</div></dd></dl></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-iText_PDF_generation-Lists.html"><strong>Prev</strong>15.6. Lists</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-iText_PDF_generation-Tables.html"><strong>Next</strong>15.7. Tables</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Managing_exceptions-Enabling_Seam_exception_handling.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Managing_exceptions-Enabling_Seam_exception_handling.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Managing_exceptions-Enabling_Seam_exception_handling.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>5.3.2. Enabling Seam exception handling</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Events_interceptors_and_exception_handling-Managing_exceptions.html" title="5.3. Managing exceptions" /><link rel="prev" href="Seam_Reference_Guide-Events_interceptors_and_exception_handling-Managing_exceptions.html" title="5.3. Managing exceptions" /><link rel="next" href="Seam_Reference_Guide-Managing_exceptions-Using_annotations_for_exception_handling.html" title="5.3.3. Using annotations for exception handling" /></head><body class=""><p id="title"!
 ><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Events_interceptors_and_exception_handling-Managing_exceptions.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Managing_exceptions-Using_annotations_for_exception_handling.html"><strong>Next</strong></a></li></ul><div class="sect2" title="5.3.2. Enabling Seam exception handling"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Managing_exceptions-Enabling_Seam_exception_handling" class="title">Enabling Seam exception handling</h1></div></div></div><div class="para">
+		To enable Seam's exception handling, we need to make sure we have the master servlet filter declared in <code class="literal">web.xml</code>:
+	</div><pre class="programlisting">&lt;filter&gt;
+    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;
+    &lt;filter-class&gt;org.jboss.seam.servlet.SeamFilter&lt;/filter-class&gt;
+&lt;/filter&gt;
+
+&lt;filter-mapping&gt;
+    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;
+    &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;
+&lt;/filter-mapping&gt;
+</pre><div class="para">
+		You may also need to disable Facelets development mode in <code class="literal">web.xml</code> and Seam debug mode in <code class="literal">components.xml</code> if you want your exception handlers to fire.
+	</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Events_interceptors_and_exception_handling-Managing_exceptions.html"><strong>Prev</strong>5.3. Managing exceptions</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Managing_exceptions-Using_annotations_for_exception_handling.html"><strong>Next</strong>5.3.3. Using annotations for exception handling</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Managing_exceptions-Using_XML_for_exception_handling.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Managing_exceptions-Using_XML_for_exception_handling.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Managing_exceptions-Using_XML_for_exception_handling.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>5.3.4. Using XML for exception handling</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Events_interceptors_and_exception_handling-Managing_exceptions.html" title="5.3. Managing exceptions" /><link rel="prev" href="Seam_Reference_Guide-Managing_exceptions-Using_annotations_for_exception_handling.html" title="5.3.3. Using annotations for exception handling" /><link rel="next" href="Seam_Reference_Guide-Conversations_and_workspace_management.html" title="Chapter 6. Conversations and workspace management" /></head><body class=""><p id="titl!
 e"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Managing_exceptions-Using_annotations_for_exception_handling.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Conversations_and_workspace_management.html"><strong>Next</strong></a></li></ul><div class="sect2" title="5.3.4. Using XML for exception handling"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Managing_exceptions-Using_XML_for_exception_handling" class="title">Using XML for exception handling</h1></div></div></div><div class="para">
+		Since we cannot add annotations to all the exception classes we are interested in, Seam also lets us specify this functionality in <code class="literal">pages.xml</code>.
+	</div><pre class="programlisting">&lt;pages&gt;
+   
+   &lt;exception class="javax.persistence.EntityNotFoundException"&gt;
+      &lt;http-error error-code="404"/&gt;
+   &lt;/exception&gt;
+   
+   &lt;exception class="javax.persistence.PersistenceException"&gt;
+      &lt;end-conversation/&gt;
+      &lt;redirect view-id="/error.xhtml"&gt;
+          &lt;message&gt;Database access failed&lt;/message&gt;
+      &lt;/redirect&gt;
+   &lt;/exception&gt;
+   
+   &lt;exception&gt;
+      &lt;end-conversation/&gt;
+      &lt;redirect view-id="/error.xhtml"&gt;
+          &lt;message&gt;Unexpected failure&lt;/message&gt;
+      &lt;/redirect&gt;
+   &lt;/exception&gt;
+   
+&lt;/pages&gt;
+</pre><div class="para">
+		The last <code class="literal">&lt;exception&gt;</code> declaration does not specify a class, and is a catch-all for any exception for which handling is not otherwise specified via annotations or in <code class="literal">pages.xml</code>.
+	</div><div class="para">
+		You can also access the handled exception instance through EL, Seam places it in the conversation context, for example, to access the message of the exception:
+	</div><pre class="programlisting">...
+throw new AuthorizationException("You are not allowed to do this!");
+
+&lt;pages&gt;
+
+    &lt;exception class="org.jboss.seam.security.AuthorizationException"&gt;
+        &lt;end-conversation/&gt;
+        &lt;redirect view-id="/error.xhtml"&gt;
+            &lt;message severity="WARN"&gt;#{handledException.message}&lt;/message&gt;
+        &lt;/redirect&gt;
+    &lt;/exception&gt;
+
+&lt;/pages&gt;
+</pre></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Managing_exceptions-Using_annotations_for_exception_handling.html"><strong>Prev</strong>5.3.3. Using annotations for exception handling</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Conversations_and_workspace_management.html"><strong>Next</strong>Chapter 6. Conversations and workspace management</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Managing_exceptions-Using_annotations_for_exception_handling.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Managing_exceptions-Using_annotations_for_exception_handling.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Managing_exceptions-Using_annotations_for_exception_handling.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>5.3.3. Using annotations for exception handling</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Events_interceptors_and_exception_handling-Managing_exceptions.html" title="5.3. Managing exceptions" /><link rel="prev" href="Seam_Reference_Guide-Managing_exceptions-Enabling_Seam_exception_handling.html" title="5.3.2. Enabling Seam exception handling" /><link rel="next" href="Seam_Reference_Guide-Managing_exceptions-Using_XML_for_exception_handling.html" title="5.3.4. Using XML for exception handling" /></head><body class=""><p id="title"><a!
  class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Managing_exceptions-Enabling_Seam_exception_handling.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Managing_exceptions-Using_XML_for_exception_handling.html"><strong>Next</strong></a></li></ul><div class="sect2" title="5.3.3. Using annotations for exception handling"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Managing_exceptions-Using_annotations_for_exception_handling" class="title">Using annotations for exception handling</h1></div></div></div><div class="para">
+		The following exception results in a HTTP 404 error whenever it propagates out of the Seam component layer. It does not roll back the current transaction immediately when thrown, but the transaction will be rolled back if it the exception is not caught by another Seam component.
+	</div><pre class="programlisting">@HttpError(errorCode=404)
+public class ApplicationException extends Exception { ... }
+</pre><div class="para">
+		This exception results in a browser redirect whenever it propagates out of the Seam component layer. It also ends the current conversation. It causes an immediate rollback of the current transaction.
+	</div><pre class="programlisting">@Redirect(viewId="/failure.xhtml", end=true)
+ at ApplicationException(rollback=true)
+public class UnrecoverableApplicationException extends RuntimeException { ... }
+</pre><div class="important"><h2>Important</h2><div class="para">
+			<code class="literal">@Redirect</code> does not work for exceptions which occur during the render phase of the JSF lifecycle.
+		</div></div><div class="para">
+		This exception results in a redirect, along with a message to the user, when it propagates out of the Seam component layer. It also immediately rolls back the current transaction.
+	</div><pre class="programlisting">@Redirect(viewId="/error.xhtml", message="Unexpected error")
+public class SystemException extends RuntimeException { ... }
+</pre></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Managing_exceptions-Enabling_Seam_exception_handling.html"><strong>Prev</strong>5.3.2. Enabling Seam exception handling</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Managing_exceptions-Using_XML_for_exception_handling.html"><strong>Next</strong>5.3.4. Using XML for exception handling</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Messaging_in_Seam-Receiving_messages_in_the_client.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Messaging_in_Seam-Receiving_messages_in_the_client.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Messaging_in_Seam-Receiving_messages_in_the_client.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>17.2.4. Receiving messages in the client</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Asynchronicity_and_messaging-Messaging_in_Seam.html" title="17.2. Messaging in Seam" /><link rel="prev" href="Seam_Reference_Guide-Messaging_in_Seam-Receiving_messages_using_a_message_driven_bean.html" title="17.2.3. Receiving messages using a message-driven bean" /><link rel="next" href="cache.html" title="Chapter 18. Caching" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/imag!
 e_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Messaging_in_Seam-Receiving_messages_using_a_message_driven_bean.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="cache.html"><strong>Next</strong></a></li></ul><div class="sect2" title="17.2.4. Receiving messages in the client"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Messaging_in_Seam-Receiving_messages_in_the_client" class="title">Receiving messages in the client</h1></div></div></div><div class="para">
+		Seam Remoting lets you subscribe to a JMS topic from client-side JavaScript. This is described in the next chapter.
+	</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Messaging_in_Seam-Receiving_messages_using_a_message_driven_bean.html"><strong>Prev</strong>17.2.3. Receiving messages using a message-driven...</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="cache.html"><strong>Next</strong>Chapter 18. Caching</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Messaging_in_Seam-Receiving_messages_using_a_message_driven_bean.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Messaging_in_Seam-Receiving_messages_using_a_message_driven_bean.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Messaging_in_Seam-Receiving_messages_using_a_message_driven_bean.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>17.2.3. Receiving messages using a message-driven bean</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Asynchronicity_and_messaging-Messaging_in_Seam.html" title="17.2. Messaging in Seam" /><link rel="prev" href="Seam_Reference_Guide-Messaging_in_Seam-Sending_messages.html" title="17.2.2. Sending messages" /><link rel="next" href="Seam_Reference_Guide-Messaging_in_Seam-Receiving_messages_in_the_client.html" title="17.2.4. Receiving messages in the client" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/do!
 cs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Messaging_in_Seam-Sending_messages.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Messaging_in_Seam-Receiving_messages_in_the_client.html"><strong>Next</strong></a></li></ul><div class="sect2" title="17.2.3. Receiving messages using a message-driven bean"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Messaging_in_Seam-Receiving_messages_using_a_message_driven_bean" class="title">Receiving messages using a message-driven bean</h1></div></div></div><div class="para">
+		You can process messages using any EJB3 message driven bean. Message-driven beans may even be Seam components, in which case it is possible to inject other event and application scoped Seam components.
+	</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Messaging_in_Seam-Sending_messages.html"><strong>Prev</strong>17.2.2. Sending messages</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Messaging_in_Seam-Receiving_messages_in_the_client.html"><strong>Next</strong>17.2.4. Receiving messages in the client</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Messaging_in_Seam-Sending_messages.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Messaging_in_Seam-Sending_messages.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Messaging_in_Seam-Sending_messages.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>17.2.2. Sending messages</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Asynchronicity_and_messaging-Messaging_in_Seam.html" title="17.2. Messaging in Seam" /><link rel="prev" href="Seam_Reference_Guide-Asynchronicity_and_messaging-Messaging_in_Seam.html" title="17.2. Messaging in Seam" /><link rel="next" href="Seam_Reference_Guide-Messaging_in_Seam-Receiving_messages_using_a_message_driven_bean.html" title="17.2.3. Receiving messages using a message-driven bean" /></head><body class=""><p id="title"><a class="left" href="http://www.redh!
 at.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Asynchronicity_and_messaging-Messaging_in_Seam.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Messaging_in_Seam-Receiving_messages_using_a_message_driven_bean.html"><strong>Next</strong></a></li></ul><div class="sect2" title="17.2.2. Sending messages"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Messaging_in_Seam-Sending_messages" class="title">Sending messages</h1></div></div></div><div class="para">
+		Now, you can inject a JMS <code class="literal">TopicPublisher</code> and <code class="literal">TopicSession</code> into any component:
+	</div><pre class="programlisting">@In 
+private TopicPublisher stockTickerPublisher;   
+ at In 
+private TopicSession topicSession;
+
+public void publish(StockPrice price) {
+      try
+      {
+         topicPublisher.publish( topicSession.createObjectMessage(price) );
+      } 
+      catch (Exception ex)
+      {
+         throw new RuntimeException(ex);
+      } 
+}
+</pre><div class="para">
+		Or, for working with a queue:
+	</div><pre class="programlisting">@In
+private QueueSender paymentQueueSender;   
+ at In
+private QueueSession queueSession;
+
+public void publish(Payment payment) {
+      try
+      {
+         paymentQueueSender.send( queueSession.createObjectMessage(payment) );
+      } 
+      catch (Exception ex)
+      {
+         throw new RuntimeException(ex);
+      } 
+}
+</pre></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Asynchronicity_and_messaging-Messaging_in_Seam.html"><strong>Prev</strong>17.2. Messaging in Seam</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Messaging_in_Seam-Receiving_messages_using_a_message_driven_bean.html"><strong>Next</strong>17.2.3. Receiving messages using a message-driven...</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Pageflows_and_business_processes-Business_process_management_in_Seam.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Pageflows_and_business_processes-Business_process_management_in_Seam.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Pageflows_and_business_processes-Business_process_management_in_Seam.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>7.3. Business process management in Seam</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Pageflows_and_business_processes.html" title="Chapter 7. Pageflows and business processes" /><link rel="prev" href="Seam_Reference_Guide-Using_jPDL_pageflows-Ending_the_flow.html" title="7.2.5. Ending the flow" /><link rel="next" href="Seam_Reference_Guide-Pageflows_and_business_processes-Using_jPDL_business_process_definitions.html" title="7.4. Using jPDL business process definitions" /></head><body class=""><p id="title"><a class="left" href="http:!
 //www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Using_jPDL_pageflows-Ending_the_flow.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Pageflows_and_business_processes-Using_jPDL_business_process_definitions.html"><strong>Next</strong></a></li></ul><div class="section" title="7.3. Business process management in Seam"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Pageflows_and_business_processes-Business_process_management_in_Seam">7.3. Business process management in Seam</h2></div></div></div><div class="para">
+			A business process is a well-defined set of tasks that must be performed by users or software systems according to well-defined rules about <span class="emphasis"><em>who</em></span> can perform a task, and <span class="emphasis"><em>when</em></span> it should be performed. Seam's jBPM integration makes it easy to display lists of tasks to users and let them manage their tasks. Seam also lets the application store state associated with the business process in the <code class="literal">BUSINESS_PROCESS</code> context, and have that state made persistent via jBPM variables.
+		</div><div class="para">
+			A simple business process definition looks much the same as a page flow definition (<span class="emphasis"><em>One Kind of Stuff</em></span>), except that instead of <code class="literal">&lt;page&gt;</code> nodes, we have <code class="literal">&lt;task-node&gt;</code> nodes. In a long-running business process, the wait states are where the system is waiting for some user to log in and perform a task.
+		</div><pre class="programlisting">&lt;process-definition name="todo"&gt;
+   
+   &lt;start-state name="start"&gt;
+      &lt;transition to="todo"/&gt;
+   &lt;/start-state&gt;
+   
+   &lt;task-node name="todo"&gt;
+      &lt;task name="todo" description="#{todoList.description}"&gt;
+         &lt;assignment actor-id="#{actor.id}"/&gt;
+      &lt;/task&gt;
+      &lt;transition to="done"/&gt;
+   &lt;/task-node&gt;
+   
+   &lt;end-state name="done"/&gt;
+   
+&lt;/process-definition&gt;
+</pre><div class="mediaobject" align="center"><img src="images/plugin-jbpm-todo.png" align="middle" width="444" /></div><div class="para">
+			It is perfectly possible that we might have both jPDL business process definitions and jPDL pageflow definitions in the same project. If so, the relationship between the two is that a single <code class="literal">&lt;task&gt;</code> in a business process corresponds to a whole pageflow <code class="literal">&lt;pageflow-definition&gt;</code>
+		</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Using_jPDL_pageflows-Ending_the_flow.html"><strong>Prev</strong>7.2.5. Ending the flow</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Pageflows_and_business_processes-Using_jPDL_business_process_definitions.html"><strong>Next</strong>7.4. Using jPDL business process definitions</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Pageflows_and_business_processes-Using_jPDL_business_process_definitions.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Pageflows_and_business_processes-Using_jPDL_business_process_definitions.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Pageflows_and_business_processes-Using_jPDL_business_process_definitions.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>7.4. Using jPDL business process definitions</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Pageflows_and_business_processes.html" title="Chapter 7. Pageflows and business processes" /><link rel="prev" href="Seam_Reference_Guide-Pageflows_and_business_processes-Business_process_management_in_Seam.html" title="7.3. Business process management in Seam" /><link rel="next" href="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Initializing_actor_ids.html" title="7.4.2. Initializing actor ids" /></head><body class=""><p id="title!
 "><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Pageflows_and_business_processes-Business_process_management_in_Seam.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Initializing_actor_ids.html"><strong>Next</strong></a></li></ul><div class="section" title="7.4. Using jPDL business process definitions"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Pageflows_and_business_processes-Using_jPDL_business_process_definitions">7.4. Using jPDL business process definitions</h2></div></div></div><div class="section" title="7.4.1. Installing process definitions"><div class="titlepa!
 ge"><div><div><h3 class="title" id="Seam_Reference_Guide-Using!
 _jPDL_bu
siness_process_definitions-Installing_process_definitions">7.4.1. Installing process definitions</h3></div></div></div><div class="para">
+				We need to install jBPM, and tell it where to find the business process definitions:
+			</div><pre class="programlisting">&lt;core:jbpm&gt;
+    &lt;core:process-definitions&gt;
+        &lt;value&gt;todo.jpdl.xml&lt;/value&gt;
+    &lt;/core:process-definitions&gt;
+&lt;/core:jbpm&gt;
+</pre></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Pageflows_and_business_processes-Business_process_management_in_Seam.html"><strong>Prev</strong>7.3. Business process management in Seam</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Initializing_actor_ids.html"><strong>Next</strong>7.4.2. Initializing actor ids</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Pageflows_and_business_processes-Using_jPDL_pageflows.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Pageflows_and_business_processes-Using_jPDL_pageflows.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Pageflows_and_business_processes-Using_jPDL_pageflows.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>7.2. Using jPDL pageflows</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Pageflows_and_business_processes.html" title="Chapter 7. Pageflows and business processes" /><link rel="prev" href="Seam_Reference_Guide-Pageflows_and_business_processes.html" title="Chapter 7. Pageflows and business processes" /><link rel="next" href="Seam_Reference_Guide-Using_jPDL_pageflows-Starting_pageflows.html" title="7.2.2. Starting pageflows" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/i!
 mages/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Pageflows_and_business_processes.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Using_jPDL_pageflows-Starting_pageflows.html"><strong>Next</strong></a></li></ul><div class="section" title="7.2. Using jPDL pageflows"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Pageflows_and_business_processes-Using_jPDL_pageflows">7.2. Using jPDL pageflows</h2></div></div></div><div class="section" title="7.2.1. Installing pageflows"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Using_jPDL_pageflows-Installing_pageflows">7.2.1. Installing pageflows</h3></div></div></div><div class="para">
+				We need to install the Seam jBPM-related components, and tell them where to find our pageflow definition. We can specify this Seam configuration in <code class="literal">components.xml</code>.
+			</div><pre class="programlisting">&lt;core:jbpm&gt;
+    &lt;core:pageflow-definitions&gt;
+        &lt;value&gt;pageflow.jpdl.xml&lt;/value&gt;
+    &lt;/core:pageflow-definitions&gt;
+&lt;/core:jbpm&gt;
+</pre><div class="para">
+				The first line installs jBPM, the second points to a jPDL-based pageflow definition.
+			</div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Pageflows_and_business_processes.html"><strong>Prev</strong>Chapter 7. Pageflows and business processes</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Using_jPDL_pageflows-Starting_pageflows.html"><strong>Next</strong>7.2.2. Starting pageflows</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Pageflows_and_business_processes.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Pageflows_and_business_processes.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Pageflows_and_business_processes.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 7. Pageflows and business processes</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="index.html" title="Seam Reference Guide CP07" /><link rel="prev" href="Seam_Reference_Guide-Conversations_and_workspace_management-Conversational_components_and_JSF_component_bindings.html" title="6.8. Conversational components and JSF component bindings" /><link rel="next" href="Seam_Reference_Guide-Pageflows_and_business_processes-Using_jPDL_pageflows.html" title="7.2. Using jPDL pageflows" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat!
 .com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Conversations_and_workspace_management-Conversational_components_and_JSF_component_bindings.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Pageflows_and_business_processes-Using_jPDL_pageflows.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="chapter" title="Chapter 7. Pageflows and business processes" lang="en-US"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Pageflows_and_business_processes">Chapter 7. Pageflows and business processes</h2></div></div></div><div class="toc"><dl><dt><span class="section"><a href="Seam_Reference_Guide-Pageflows_and_business_processes.html#Seam_Refe!
 rence_Guide-Pageflows_and_business_processes-Pageflow_in_Seam"!
 >7.1. Pa
geflow in Seam</a></span></dt><dd><dl><dt><span class="section"><a href="Seam_Reference_Guide-Pageflows_and_business_processes.html#Seam_Reference_Guide-Pageflow_in_Seam-The_two_navigation_models">7.1.1. The two navigation models</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Pageflows_and_business_processes.html#Seam_Reference_Guide-Pageflow_in_Seam-Seam_and_the_back_button">7.1.2. Seam and the back button</a></span></dt></dl></dd><dt><span class="section"><a href="Seam_Reference_Guide-Pageflows_and_business_processes-Using_jPDL_pageflows.html">7.2. Using jPDL pageflows</a></span></dt><dd><dl><dt><span class="section"><a href="Seam_Reference_Guide-Pageflows_and_business_processes-Using_jPDL_pageflows.html#Seam_Reference_Guide-Using_jPDL_pageflows-Installing_pageflows">7.2.1. Installing pageflows</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Using_jPDL_pageflows-Starting_pageflows.html">7.2.2. Starting pageflows</a></span></dt!
 ><dt><span class="section"><a href="Seam_Reference_Guide-Using_jPDL_pageflows-Page_nodes_and_transitions.html">7.2.3. Page nodes and transitions</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Using_jPDL_pageflows-Controlling_the_flow.html">7.2.4. Controlling the flow</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Using_jPDL_pageflows-Ending_the_flow.html">7.2.5. Ending the flow</a></span></dt></dl></dd><dt><span class="section"><a href="Seam_Reference_Guide-Pageflows_and_business_processes-Business_process_management_in_Seam.html">7.3. Business process management in Seam</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Pageflows_and_business_processes-Using_jPDL_business_process_definitions.html">7.4. Using jPDL business process definitions</a></span></dt><dd><dl><dt><span class="section"><a href="Seam_Reference_Guide-Pageflows_and_business_processes-Using_jPDL_business_process_definitions.html#Seam_Refer!
 ence_Guide-Using_jPDL_business_process_definitions-Installing_!
 process_
definitions">7.4.1. Installing process definitions</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Initializing_actor_ids.html">7.4.2. Initializing actor ids</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Initiating_a_business_process.html">7.4.3. Initiating a business process</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Task_assignment.html">7.4.4. Task assignment</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Task_lists.html">7.4.5. Task lists</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Performing_a_task.html">7.4.6. Performing a task</a></span></dt></dl></dd></dl></div><div class="para">
+		JBoss jBPM is a business process management engine for any Java SE or EE environment. jBPM lets you represent a business process or user interaction as a graph of nodes representing wait states, decisions, tasks, web pages, etc. The graph is defined using a simple, very readable, XML dialect called jPDL, and may be edited and visualised graphically using an eclipse plugin. jPDL is an extensible language, and is suitable for a range of problems, from defining web application page flow, to traditional workflow management, all the way up to orchestration of services in a SOA environment.
+	</div><div class="para">
+		Seam applications use jBPM for two different problems:
+	</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+				Defining the pageflow involved in complex user interactions. A jPDL process definition defines the page flow for a single conversation. A Seam conversation is considered to be a relatively short-running interaction with a single user.
+			</div></li><li class="listitem"><div class="para">
+				Defining the overarching business process. The business process may span multiple conversations with multiple users. Its state is persistent in the jBPM database, so it is considered long-running. Coordination of the activities of multiple users is a much more complex problem than scripting an interaction with a single user, so jBPM offers sophisticated facilities for task management and dealing with multiple concurrent paths of execution.
+			</div></li></ul></div><div class="para">
+		<span class="emphasis"><em>Pageflow</em></span>, <span class="emphasis"><em>conversation</em></span> and <span class="emphasis"><em>task</em></span> all refer to a single interaction with a single user and operate at different levels or granularity. A business process spans many tasks. Futhermore, the two applications of jBPM are totally orthogonal. You can use them together or independently or not at all.
+	</div><div class="para">
+		You do not have to know jDPL to use Seam. If you are perfectly happy defining pageflow using JSF or Seam navigation rules, and if your application is more data-driven that process-driven, you probably do not need jBPM. But we are finding that thinking of user interaction in terms of a well-defined graphical representation is helping us build more robust applications.
+	</div><div class="section" title="7.1. Pageflow in Seam"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Pageflows_and_business_processes-Pageflow_in_Seam">7.1. Pageflow in Seam</h2></div></div></div><div class="para">
+			There are two ways to define pageflow in Seam:
+		</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+					Using JSF or Seam navigation rules - the <span class="emphasis"><em>stateless navigation model</em></span>
+				</div></li><li class="listitem"><div class="para">
+					Using jPDL - the <span class="emphasis"><em>stateful navigation model</em></span>
+				</div></li></ul></div><div class="para">
+			Very simple applications will only need the stateless navigation model. Very complex applications will use both models in different places. Each model has its strengths and weaknesses!
+		</div><div class="section" title="7.1.1. The two navigation models"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Pageflow_in_Seam-The_two_navigation_models">7.1.1. The two navigation models</h3></div></div></div><div class="para">
+				The stateless model defines a mapping from a set of named, logical outcomes of an event directly to the resulting page of the view. The navigation rules are entirely oblivious to any state held by the application other than what page was the source of the event. This means that your action listener methods must sometimes make decisions about the page flow, since only they have access to the current state of the application.
+			</div><div class="para">
+				Here is an example page flow definition using JSF navigation rules:
+			</div><pre class="programlisting">&lt;navigation-rule&gt;
+    &lt;from-view-id&gt;/numberGuess.jsp&lt;/from-view-id&gt;
+        
+    &lt;navigation-case&gt;
+        &lt;from-outcome&gt;guess&lt;/from-outcome&gt;
+        &lt;to-view-id&gt;/numberGuess.jsp&lt;/to-view-id&gt;
+        &lt;redirect/&gt;
+    &lt;/navigation-case&gt;
+
+    &lt;navigation-case&gt;
+        &lt;from-outcome&gt;win&lt;/from-outcome&gt;
+        &lt;to-view-id&gt;/win.jsp&lt;/to-view-id&gt;
+        &lt;redirect/&gt;
+    &lt;/navigation-case&gt;
+        
+    &lt;navigation-case&gt;
+        &lt;from-outcome&gt;lose&lt;/from-outcome&gt;
+        &lt;to-view-id&gt;/lose.jsp&lt;/to-view-id&gt;
+        &lt;redirect/&gt;
+    &lt;/navigation-case&gt;
+
+&lt;/navigation-rule&gt;
+</pre><div class="para">
+				Here is the same example page flow definition using Seam navigation rules:
+			</div><pre class="programlisting">&lt;page view-id="/numberGuess.jsp"&gt;
+        
+    &lt;navigation&gt;
+        &lt;rule if-outcome="guess"&gt;
+            &lt;redirect view-id="/numberGuess.jsp"/&gt;
+        &lt;/rule&gt;
+        &lt;rule if-outcome="win"&gt;
+            &lt;redirect view-id="/win.jsp"/&gt;
+        &lt;/rule&gt;
+        &lt;rule if-outcome="lose"&gt;
+            &lt;redirect view-id="/lose.jsp"/&gt;
+        &lt;/rule&gt;
+    &lt;/navigation-case&gt;
+
+&lt;/navigation-rule&gt;
+</pre><div class="para">
+				If you find navigation rules overly verbose, you can return view ids directly from your action listener methods:
+			</div><pre class="programlisting">public String guess() {
+    if (guess==randomNumber) return "/win.jsp";
+    if (++guessCount==maxGuesses) return "/lose.jsp";
+    return null;
+}
+</pre><div class="para">
+				This results in a redirect. You can even specify parameters to be used in the redirect:
+			</div><pre class="programlisting">public String search() {
+    return "/searchResults.jsp?searchPattern=#{searchAction.searchPattern}";
+}
+</pre><div class="para">
+				The stateful model defines a set of transitions between a set of named, logical application states. In this model, it is possible to express the flow of any user interaction entirely in the jPDL pageflow definition, and write action listener methods that are completely unaware of the flow of the interaction.
+			</div><div class="para">
+				Here is an example page flow definition using jPDL:
+			</div><pre class="programlisting">&lt;pageflow-definition name="numberGuess"&gt;
+    
+   &lt;start-page name="displayGuess" view-id="/numberGuess.jsp"&gt;
+      &lt;redirect/&gt;
+      &lt;transition name="guess" to="evaluateGuess"&gt;
+      	&lt;action expression="#{numberGuess.guess}" /&gt;
+      &lt;/transition&gt;
+   &lt;/start-page&gt;
+   
+   &lt;decision name="evaluateGuess" expression="#{numberGuess.correctGuess}"&gt;
+      &lt;transition name="true" to="win"/&gt;
+      &lt;transition name="false" to="evaluateRemainingGuesses"/&gt;
+   &lt;/decision&gt;
+   
+   &lt;decision name="evaluateRemainingGuesses" expression="#{numberGuess.lastGuess}"&gt;
+      &lt;transition name="true" to="lose"/&gt;
+      &lt;transition name="false" to="displayGuess"/&gt;
+   &lt;/decision&gt;
+   
+   &lt;page name="win" view-id="/win.jsp"&gt;
+      &lt;redirect/&gt;
+      &lt;end-conversation /&gt;
+   &lt;/page&gt;
+   
+   &lt;page name="lose" view-id="/lose.jsp"&gt;
+      &lt;redirect/&gt;
+      &lt;end-conversation /&gt;
+   &lt;/page&gt;
+   
+&lt;/pageflow-definition&gt;
+</pre><div class="mediaobject" align="center"><img src="images/plugin-jbpm-numguess.png" align="middle" width="444" /></div><div class="para">
+				There are two things we notice immediately here:
+			</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+						The JSF/Seam navigation rules are <span class="emphasis"><em>much</em></span> simpler. (However, this obscures the fact that the underlying Java code is more complex.)
+					</div></li><li class="listitem"><div class="para">
+						The jPDL makes the user interaction immediately understandable, without us needing to even look at the JSP or Java code.
+					</div></li></ul></div><div class="para">
+				In addition, the stateful model is more <span class="emphasis"><em>constrained</em></span>. For each logical state (each step in the page flow), there are a constrained set of possible transitions to other states. The stateless model is an <span class="emphasis"><em>ad hoc</em></span> model which is suitable to relatively unconstrained, freeform navigation where the user decides where he/she wants to go next, not the application.
+			</div><div class="para">
+				The stateful/stateless navigation distinction is quite similar to the traditional view of modal/modeless interaction. Now, Seam applications are not usually modal in the simple sense of the word - indeed, avoiding application modal behavior is one of the main reasons for having conversations! However, Seam applications can be, and often are, modal at the level of a particular conversation. It is well-known that modal behavior is something to avoid as much as possible; it is very difficult to predict the order in which your users are going to want to do things! However, there is no doubt that the stateful model has its place.
+			</div><div class="para">
+				The biggest contrast between the two models is the back-button behavior.
+			</div></div><div class="section" title="7.1.2. Seam and the back button"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Pageflow_in_Seam-Seam_and_the_back_button">7.1.2. Seam and the back button</h3></div></div></div><div class="para">
+				When JSF or Seam navigation rules are used, Seam lets the user freely navigate via the back, forward and refresh buttons. It is the responsibility of the application to ensure that conversational state remains internally consistent when this occurs. Experience with the combination of web application frameworks like Struts or WebWork - that do not support a conversational model - and stateless component models like EJB stateless session beans or the Spring framework has taught many developers that this is close to impossible to do! However, our experience is that in the context of Seam, where there is a well-defined conversational model, backed by stateful session beans, it is actually quite straightforward. Usually it is as simple as combining the use of <code class="literal">no-conversation-view-id</code> with null checks at the beginning of action listener methods. We consider support for freeform navigation to be almost always desirable.
+			</div><div class="para">
+				In this case, the <code class="literal">no-conversation-view-id</code> declaration goes in <code class="literal">pages.xml</code>. It tells Seam to redirect to a different page if a request originates from a page rendered during a conversation, and that conversation no longer exists:
+			</div><pre class="programlisting">&lt;page view-id="/checkout.xhtml" 
+        no-conversation-view-id="/main.xhtml"/&gt;
+</pre><div class="para">
+				On the other hand, in the stateful model, backbuttoning is interpreted as an undefined transition back to a previous state. Since the stateful model enforces a defined set of transitions from the current state, back buttoning is be default disallowed in the stateful model. Seam transparently detects the use of the back button, and blocks any attempt to perform an action from a previous, <span class="emphasis"><em>stale</em></span> page, and simply redirects the user to the <span class="emphasis"><em>current</em></span> page (and displays a faces message). Whether you consider this a feature or a limitation of the stateful model depends upon your point of view: as an application developer, it is a feature; as a user, it might be frustrating! You can enable backbutton navigation from a particular page node by setting <code class="literal">back="enabled"</code>.
+			</div><pre class="programlisting">&lt;page name="checkout" 
+        view-id="/checkout.xhtml" 
+        back="enabled"&gt;
+    &lt;redirect/&gt;
+    &lt;transition to="checkout"/&gt;
+    &lt;transition name="complete" to="complete"/&gt;
+&lt;/page&gt;
+</pre><div class="para">
+				This allows backbuttoning <span class="emphasis"><em>from</em></span> the <code class="literal">checkout</code> state to <span class="emphasis"><em>any previous state!</em></span>
+			</div><div class="para">
+				Of course, we still need to define what happens if a request originates from a page rendered during a pageflow, and the conversation with the pageflow no longer exists. In this case, the <code class="literal">no-conversation-view-id</code> declaration goes into the pageflow definition:
+			</div><pre class="programlisting">&lt;page name="checkout" 
+        view-id="/checkout.xhtml" 
+        back="enabled" 
+        no-conversation-view-id="/main.xhtml"&gt;
+    &lt;redirect/&gt;
+    &lt;transition to="checkout"/&gt;
+    &lt;transition name="complete" to="complete"/&gt;
+&lt;/page&gt;
+</pre><div class="para">
+				In practice, both navigation models have their place, and you will quickly learn to recognize when to prefer one model over the other.
+			</div></div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Conversations_and_workspace_management-Conversational_components_and_JSF_component_bindings.html"><strong>Prev</strong>6.8. Conversational components and JSF component ...</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Pageflows_and_business_processes-Using_jPDL_pageflows.html"><strong>Next</strong>7.2. Using jPDL pageflows</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Remoting-Batch_Requests.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Remoting-Batch_Requests.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Remoting-Batch_Requests.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>19.5. Batch Requests</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Remoting.html" title="Chapter 19. Remoting" /><link rel="prev" href="Seam_Reference_Guide-Remoting-The_Context.html" title="19.4. The Context" /><link rel="next" href="Seam_Reference_Guide-Remoting-Working_with_Data_types.html" title="19.6. Working with Data types" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><i!
 mg src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Remoting-The_Context.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Remoting-Working_with_Data_types.html"><strong>Next</strong></a></li></ul><div class="sect1" title="19.5. Batch Requests"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Remoting-Batch_Requests" class="title">Batch Requests</h1></div></div></div><div class="para">
+		Seam Remoting allows multiple component calls to be executed within a single request. It is recommended that this feature is used wherever it is appropriate to reduce network traffic.
+	</div><div class="para">
+		The method <code class="literal">Seam.Remoting.startBatch()</code> will start a new batch, and any component calls executed after starting a batch are queued, rather than being sent immediately. When all the desired component calls have been added to the batch, the <code class="literal">Seam.Remoting.executeBatch()</code> method will send a single request containing all of the queued calls to the server, where they will be executed in order. After the calls have been executed, a single response containining all return values will be returned to the client and the callback functions (if provided) triggered in the same order as execution.
+	</div><div class="para">
+		If you start a new batch via the <code class="literal">startBatch()</code> method but then decide you do not want to send it, the <code class="literal">Seam.Remoting.cancelBatch()</code> method will discard any calls that were queued and exit the batch mode.
+	</div><div class="para">
+		To see an example of a batch being used, take a look at <code class="literal">/examples/remoting/chatroom</code>.
+	</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Remoting-The_Context.html"><strong>Prev</strong>19.4. The Context</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Remoting-Working_with_Data_types.html"><strong>Next</strong>19.6. Working with Data types</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Remoting-Client_Interfaces.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Remoting-Client_Interfaces.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Remoting-Client_Interfaces.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>19.3. Client Interfaces</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Remoting.html" title="Chapter 19. Remoting" /><link rel="prev" href="Seam_Reference_Guide-Seam.Remoting-Seam.Remoting.getTypeName.html" title="19.2.3.2. Seam.Remoting.getTypeName()" /><link rel="next" href="Seam_Reference_Guide-Remoting-The_Context.html" title="19.4. The Context" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http:/!
 /www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam.Remoting-Seam.Remoting.getTypeName.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Remoting-The_Context.html"><strong>Next</strong></a></li></ul><div class="sect1" title="19.3. Client Interfaces"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Remoting-Client_Interfaces" class="title">Client Interfaces</h1></div></div></div><div class="para">
+		In the configuration section above, the interface, or "stub" for our component is imported into our page via <code class="literal">seam/resource/remoting/interface.js</code>:
+	</div><pre class="programlisting">
+        
+  &lt;script type="text/javascript" src="seam/resource/remoting/interface.js?customerAction"&gt;
+  &lt;/script&gt;
+</pre><div class="para">
+		By including this script in our page, the interface definitions for our component, plus any other components or types that are required to execute the methods of our component are generated and made available for the remoting framework to use.
+	</div><div class="para">
+		There are two types of client stub that can be generated, "executable" stubs and "type" stubs. Executable stubs are behavioural, and are used to execute methods against your session bean components, while type stubs contain state and represent the types that can be passed in as parameters or returned as a result.
+	</div><div class="para">
+		The type of client stub that is generated depends on the type of your Seam component. If the component is a session bean, then an executable stub will be generated, otherwise if it is an entity or JavaBean, then a type stub will be generated. There is one exception to this rule; if your component is a JavaBean (ie it is not a session bean nor an entity bean) and any of its methods are annotated with @WebRemote, then an executable stub will be generated for it instead of a type stub. This allows you to use remoting to call methods of your JavaBean components in a non-EJB environment where you do not have access to session beans.
+	</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam.Remoting-Seam.Remoting.getTypeName.html"><strong>Prev</strong>19.2.3.2. Seam.Remoting.getTypeName()</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Remoting-The_Context.html"><strong>Next</strong>19.4. The Context</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Remoting-Controlling_what_data_is_returned.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Remoting-Controlling_what_data_is_returned.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Remoting-Controlling_what_data_is_returned.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>19.9. Controlling what data is returned</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Remoting.html" title="Chapter 19. Remoting" /><link rel="prev" href="Seam_Reference_Guide-The_Loading_Message-A_Custom_Loading_Indicator.html" title="19.8.3. A Custom Loading Indicator" /><link rel="next" href="Seam_Reference_Guide-Controlling_what_data_is_returned-Constraining_Maps_and_Collections.html" title="19.9.2. Constraining Maps and Collections" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="C!
 ommon_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-The_Loading_Message-A_Custom_Loading_Indicator.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Controlling_what_data_is_returned-Constraining_Maps_and_Collections.html"><strong>Next</strong></a></li></ul><div class="sect1" title="19.9. Controlling what data is returned"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Remoting-Controlling_what_data_is_returned" class="title">Controlling what data is returned</h1></div></div></div><div class="para">
+		When a remote method is executed, the result is serialized into an XML response that is returned to the client. This response is then unmarshaled by the client into a Javascript object. For complex types (i.e. Javabeans) that include references to other objects, all of these referenced objects are also serialized as part of the response. These objects may reference other objects, which may reference other objects, and so forth. If left unchecked, this object "graph" could potentially be enormous, depending on what relationships exist between your objects. And as a side issue (besides the potential verbosity of the response), you might also wish to prevent sensitive information from being exposed to the client.
+	</div><div class="para">
+		Seam Remoting provides a simple means to "constrain" the object graph, by specifying the <code class="literal">exclude</code> field of the remote method's <code class="literal">@WebRemote</code> annotation. This field accepts a String array containing one or more paths specified using dot notation. When invoking a remote method, the objects in the result's object graph that match these paths are excluded from the serialized result packet.
+	</div><div class="para">
+		For all our examples, we will use the following <code class="literal">Widget</code> class:
+	</div><pre class="programlisting">
+ at Name("widget")
+public class Widget
+{
+  private String value;
+  private String secret;
+  private Widget child;
+  private Map&lt;String,Widget&gt; widgetMap;
+  private List&lt;Widget&gt; widgetList;
+  
+  // getters and setters for all fields
+}
+</pre><div class="sect2" title="19.9.1. Constraining normal fields"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Controlling_what_data_is_returned-Constraining_normal_fields" class="title">Constraining normal fields</h1></div></div></div><div class="para">
+		If your remote method returns an instance of <code class="literal">Widget</code>, but you do not want to expose the <code class="literal">secret</code> field because it contains sensitive information, you would constrain it like this:
+	</div><pre class="programlisting">
+  @WebRemote(exclude = {"secret"})
+  public Widget getWidget();
+</pre><div class="para">
+		The value "secret" refers to the <code class="literal">secret</code> field of the returned object. Now, suppose that we do not care about exposing this particular field to the client. Instead, notice that the <code class="literal">Widget</code> value that is returned has a field <code class="literal">child</code> that is also a <code class="literal">Widget</code>. What if we want to hide the <code class="literal">child</code>'s <code class="literal">secret</code> value instead? We can do this by using dot notation to specify this field's path within the result's object graph:
+	</div><pre class="programlisting">
+  @WebRemote(exclude = {"child.secret"})
+  public Widget getWidget();
+</pre></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-The_Loading_Message-A_Custom_Loading_Indicator.html"><strong>Prev</strong>19.8.3. A Custom Loading Indicator</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Controlling_what_data_is_returned-Constraining_Maps_and_Collections.html"><strong>Next</strong>19.9.2. Constraining Maps and Collections</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Remoting-Debugging.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Remoting-Debugging.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Remoting-Debugging.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>19.7. Debugging</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Remoting.html" title="Chapter 19. Remoting" /><link rel="prev" href="Seam_Reference_Guide-Collections-Maps.html" title="19.6.5.2. Maps" /><link rel="next" href="Seam_Reference_Guide-Remoting-The_Loading_Message.html" title="19.8. The Loading Message" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Conte!
 nt/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Collections-Maps.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Remoting-The_Loading_Message.html"><strong>Next</strong></a></li></ul><div class="sect1" title="19.7. Debugging"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Remoting-Debugging" class="title">Debugging</h1></div></div></div><div class="para">
+		To aid in tracking down bugs, it is possible to enable a debug mode which will display the contents of all the packets send back and forth between the client and server in a popup window. To enable debug mode, either execute the <code class="literal">setDebug()</code> method in Javascript:
+	</div><pre class="programlisting">
+  Seam.Remoting.setDebug(true);
+</pre><div class="para">
+		Or configure it via components.xml:
+	</div><pre class="programlisting">&lt;remoting:remoting debug="true"/&gt;
+</pre><div class="para">
+		To turn off debugging, call <code class="literal">setDebug(false)</code>. If you want to write your own messages to the debug log, call <code class="literal">Seam.Remoting.log(message)</code>.
+	</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Collections-Maps.html"><strong>Prev</strong>19.6.5.2. Maps</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Remoting-The_Loading_Message.html"><strong>Next</strong>19.8. The Loading Message</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Remoting-JMS_Messaging.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Remoting-JMS_Messaging.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Remoting-JMS_Messaging.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>19.10. JMS Messaging</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Remoting.html" title="Chapter 19. Remoting" /><link rel="prev" href="Seam_Reference_Guide-Controlling_what_data_is_returned-Combining_Constraints.html" title="19.9.4. Combining Constraints" /><link rel="next" href="Seam_Reference_Guide-JMS_Messaging-Subscribing_to_a_JMS_Topic.html" title="19.10.2. Subscribing to a JMS Topic" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Produc!
 t Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Controlling_what_data_is_returned-Combining_Constraints.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-JMS_Messaging-Subscribing_to_a_JMS_Topic.html"><strong>Next</strong></a></li></ul><div class="sect1" title="19.10. JMS Messaging"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Remoting-JMS_Messaging" class="title">JMS Messaging</h1></div></div></div><div class="para">
+		Seam Remoting provides experimental support for JMS Messaging. This section describes the JMS support that is currently implemented, but please note that this may change in the future. It is currently not recommended that this feature is used within a production environment.
+	</div><div class="sect2" title="19.10.1. Configuration"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-JMS_Messaging-Configuration" class="title">Configuration</h1></div></div></div><div class="para">
+		Before you can subscribe to a JMS topic, you must first configure a list of the topics that can be subscribed to by Seam Remoting. List the topics under <code class="literal">org.jboss.seam.remoting.messaging.subscriptionRegistry.allowedTopics</code> in <code class="literal">seam.properties</code>, <code class="literal">web.xml</code> or <code class="literal">components.xml</code>.
+	</div><pre class="programlisting">&lt;remoting:remoting poll-timeout="5" poll-interval="1"/&gt;
+</pre></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Controlling_what_data_is_returned-Combining_Constraints.html"><strong>Prev</strong>19.9.4. Combining Constraints</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-JMS_Messaging-Subscribing_to_a_JMS_Topic.html"><strong>Next</strong>19.10.2. Subscribing to a JMS Topic</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Remoting-The_Context.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Remoting-The_Context.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Remoting-The_Context.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>19.4. The Context</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Remoting.html" title="Chapter 19. Remoting" /><link rel="prev" href="Seam_Reference_Guide-Remoting-Client_Interfaces.html" title="19.3. Client Interfaces" /><link rel="next" href="Seam_Reference_Guide-Remoting-Batch_Requests.html" title="19.5. Batch Requests" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="C!
 ommon_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Remoting-Client_Interfaces.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Remoting-Batch_Requests.html"><strong>Next</strong></a></li></ul><div class="sect1" title="19.4. The Context"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Remoting-The_Context" class="title">The Context</h1></div></div></div><div class="para">
+		The Seam Remoting Context contains additional information which is sent and received as part of a remoting request/response cycle. At this stage it only contains the conversation ID but may be expanded in the future.
+	</div><div class="sect2" title="19.4.1. Setting and reading the Conversation ID"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-The_Context-Setting_and_reading_the_Conversation_ID" class="title">Setting and reading the Conversation ID</h1></div></div></div><div class="para">
+		If you intend on using remote calls within the scope of a conversation then you need to be able to read or set the conversation ID in the Seam Remoting Context. To read the conversation ID after making a remote request call <code class="literal">Seam.Remoting.getContext().getConversationId()</code>. To set the conversation ID before making a request, call <code class="literal">Seam.Remoting.getContext().setConversationId()</code>.
+	</div><div class="para">
+		If the conversation ID has not been explicitly set with <code class="literal">Seam.Remoting.getContext().setConversationId()</code>, then it will be automatically assigned the first valid conversation ID that is returned by any remoting call. If you are working with multiple conversations within your page, then you may need to explicitly set the conversation ID before each call. If you are working with just a single conversation, then you do not need to do anything special.
+	</div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Remoting-Client_Interfaces.html"><strong>Prev</strong>19.3. Client Interfaces</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Remoting-Batch_Requests.html"><strong>Next</strong>19.5. Batch Requests</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Remoting-The_Loading_Message.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Remoting-The_Loading_Message.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Remoting-The_Loading_Message.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>19.8. The Loading Message</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Remoting.html" title="Chapter 19. Remoting" /><link rel="prev" href="Seam_Reference_Guide-Remoting-Debugging.html" title="19.7. Debugging" /><link rel="next" href="Seam_Reference_Guide-The_Loading_Message-Hiding_the_loading_message.html" title="19.8.2. Hiding the loading message" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http!
 ://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Remoting-Debugging.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-The_Loading_Message-Hiding_the_loading_message.html"><strong>Next</strong></a></li></ul><div class="sect1" title="19.8. The Loading Message"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Remoting-The_Loading_Message" class="title">The Loading Message</h1></div></div></div><div class="para">
+		The default loading message that appears in the top right corner of the screen can be modified, its rendering customised or even turned off completely.
+	</div><div class="sect2" title="19.8.1. Changing the message"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-The_Loading_Message-Changing_the_message" class="title">Changing the message</h1></div></div></div><div class="para">
+		To change the message from the default "Please Wait..." to something different, set the value of <code class="literal">Seam.Remoting.loadingMessage</code>:
+	</div><pre class="programlisting">
+  Seam.Remoting.loadingMessage = "Loading...";
+</pre></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Remoting-Debugging.html"><strong>Prev</strong>19.7. Debugging</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-The_Loading_Message-Hiding_the_loading_message.html"><strong>Next</strong>19.8.2. Hiding the loading message</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Remoting-The_Seam_object.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Remoting-The_Seam_object.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Remoting-The_Seam_object.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>19.2. The "Seam" object</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Remoting.html" title="Chapter 19. Remoting" /><link rel="prev" href="Seam_Reference_Guide-Remoting.html" title="Chapter 19. Remoting" /><link rel="next" href="Seam_Reference_Guide-The_Seam_object-Seam.Component.html" title="19.2.2. Seam.Component" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common!
 _Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Remoting.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-The_Seam_object-Seam.Component.html"><strong>Next</strong></a></li></ul><div class="sect1" title="19.2. The &quot;Seam&quot; object"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Remoting-The_Seam_object" class="title">The "Seam" object</h1></div></div></div><div class="para">
+		Client-side interaction with your components is all performed via the <code class="literal">Seam</code> Javascript object. This object is defined in <code class="literal">remote.js</code>, and you will be using it to make asynchronous calls against your component. It is split into two areas of functionality; <code class="literal">Seam.Component</code> contains methods for working with components and <code class="literal">Seam.Remoting</code> contains methods for executing remote requests. The easiest way to become familiar with this object is to start with a simple example.
+	</div><div class="sect2" title="19.2.1. A Hello World example"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-The_Seam_object-A_Hello_World_example" class="title">A Hello World example</h1></div></div></div><div class="para">
+		Let us step through a simple example to see how the <code class="literal">Seam</code> object works. First of all, let us create a new Seam component called <code class="literal">helloAction</code>.
+	</div><pre class="programlisting">
+          
+  @Stateless
+  @Name("helloAction")
+  public class HelloAction implements HelloLocal {
+    public String sayHello(String name) {
+      return "Hello, " + name;
+    }
+  }
+</pre><div class="para">
+		You also need to create a local interface for our new component - take special note of the <code class="literal">@WebRemote</code> annotation, as it is required to make our method accessible via remoting:
+	</div><pre class="programlisting">
+          
+  @Local
+  public interface HelloLocal {
+    @WebRemote
+    public String sayHello(String name);
+  }
+</pre><div class="para">
+		That is all the server-side code we need to write. Now for our web page - create a new page and import the following scripts:
+	</div><pre class="programlisting">
+          
+  &lt;script type="text/javascript" src="seam/resource/remoting/resource/remote.js"&gt;&lt;/script&gt;
+  &lt;script type="text/javascript" src="seam/resource/remoting/interface.js?helloAction"&gt;&lt;/script&gt;
+</pre><div class="para">
+		To make this a fully interactive user experience, let us add a button to our page:
+	</div><pre class="programlisting">
+          
+  &lt;button onclick="javascript:sayHello()"&gt;Say Hello&lt;/button&gt;
+</pre><div class="para">
+		We will also need to add some more script to make our button actually do something when it is clicked:
+	</div><pre class="programlisting">
+          
+  &lt;script type="text/javascript"&gt;
+    //&lt;![CDATA[
+
+    function sayHello() {
+      var name = prompt("What is your name?");
+      Seam.Component.getInstance("helloAction").sayHello(name, sayHelloCallback);
+    }
+
+    function sayHelloCallback(result) {
+      alert(result);
+    }
+
+    // ]]&gt;
+  &lt;/script&gt;
+</pre><div class="para">
+		Now deploy your application and browse to your page. Click the button, and enter a name when prompted. A message box will display the hello message confirming that the call was successful. If you want to save some time, you will find the full source code for this Hello World example in Seam's <code class="literal">/examples/remoting/helloworld</code> directory.
+	</div><div class="para">
+		So what does the code of our script actually do? Let us break it down into smaller pieces. To start with, you can see from the Javascript code listing that we have implemented two methods - the first method is responsible for prompting the user for their name and then making a remote request. Take a look at the following line:
+	</div><pre class="programlisting">
+  Seam.Component.getInstance("helloAction").sayHello(name, sayHelloCallback);
+</pre><div class="para">
+		The first section of this line, <code class="literal">Seam.Component.getInstance("helloAction")</code> returns a proxy, or "stub" for our <code class="literal">helloAction</code> component. We can invoke the methods of our component against this stub, which is exactly what happens with the remainder of the line: <code class="literal">sayHello(name, sayHelloCallback);</code>.
+	</div><div class="para">
+		What this line of code in its completeness does, is invoke the <code class="literal">sayHello</code> method of our component, passing in <code class="literal">name</code> as a parameter. The second parameter, <code class="literal">sayHelloCallback</code> is not a parameter of our component's <code class="literal">sayHello</code> method, instead it tells the Seam Remoting framework that once it receives the response to our request, it should pass it to the <code class="literal">sayHelloCallback</code> Javascript method. This callback parameter is entirely optional, so feel free to leave it out if you are calling a method with a <code class="literal">void</code> return type or if you do not care about the result.
+	</div><div class="para">
+		The <code class="literal">sayHelloCallback</code> method, once receiving the response to our remote request then pops up an alert message displaying the result of our method call.
+	</div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Remoting.html"><strong>Prev</strong>Chapter 19. Remoting</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-The_Seam_object-Seam.Component.html"><strong>Next</strong>19.2.2. Seam.Component</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Remoting-Working_with_Data_types.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Remoting-Working_with_Data_types.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Remoting-Working_with_Data_types.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>19.6. Working with Data types</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Remoting.html" title="Chapter 19. Remoting" /><link rel="prev" href="Seam_Reference_Guide-Remoting-Batch_Requests.html" title="19.5. Batch Requests" /><link rel="next" href="Seam_Reference_Guide-Working_with_Data_types-JavaBeans.html" title="19.6.2. JavaBeans" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com!
 "><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Remoting-Batch_Requests.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Working_with_Data_types-JavaBeans.html"><strong>Next</strong></a></li></ul><div class="sect1" title="19.6. Working with Data types"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Remoting-Working_with_Data_types" class="title">Working with Data types</h1></div></div></div><div class="sect2" title="19.6.1. Primitives / Basic Types"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Working_with_Data_types-Primitives__Basic_Types" class="title">Primitives / Basic Types</h1></div></div></div><div class="para">
+		This section describes the support for basic data types. On the server side these values are generally compatible with either their primitive type or their corresponding wrapper class.
+	</div><div class="sect3" title="19.6.1.1. String"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Primitives__Basic_Types-String" class="title">String</h1></div></div></div><div class="para">
+		Simply use Javascript String objects when setting String parameter values.
+	</div></div><div class="sect3" title="19.6.1.2. Number"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Primitives__Basic_Types-Number" class="title">Number</h1></div></div></div><div class="para">
+		There is support for all number types supported by Java. On the client side, number values are always serialized as their String representation and then on the server side they are converted to the correct destination type. Conversion into either a primitive or wrapper type is supported for <code class="literal">Byte</code>, <code class="literal">Double</code>, <code class="literal">Float</code>, <code class="literal">Integer</code>, <code class="literal">Long</code> and <code class="literal">Short</code> types.
+	</div></div><div class="sect3" title="19.6.1.3. Boolean"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Primitives__Basic_Types-Boolean" class="title">Boolean</h1></div></div></div><div class="para">
+		Booleans are represented client side by Javascript Boolean values, and server side by a Java boolean.
+	</div></div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Remoting-Batch_Requests.html"><strong>Prev</strong>19.5. Batch Requests</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Working_with_Data_types-JavaBeans.html"><strong>Next</strong>19.6.2. JavaBeans</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Remoting.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Remoting.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Remoting.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 19. Remoting</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="index.html" title="Seam Reference Guide CP07" /><link rel="prev" href="ch18s02.html" title="18.2. Page fragment caching" /><link rel="next" href="Seam_Reference_Guide-Remoting-The_Seam_object.html" title="19.2. The &quot;Seam&quot; object" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" a!
 lt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="ch18s02.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Remoting-The_Seam_object.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="chapter" title="Chapter 19. Remoting" lang="en-US"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Remoting">Chapter 19. Remoting</h2></div></div></div><div class="toc"><dl><dt><span class="sect1"><a href="Seam_Reference_Guide-Remoting.html#Seam_Reference_Guide-Remoting-Configuration">19.1. Configuration</a></span></dt><dt><span class="sect1"><a href="Seam_Reference_Guide-Remoting-The_Seam_object.html">19.2. The "Seam" object</a></span></dt><dd><dl><dt><span class="sect2"><a href="Seam_Reference_Guide-Remoting-The_Seam_object.html#Seam_Reference_Guide-The_Seam_object-A_Hello_World_example">19.2.1. A Hello World example</a></span></dt><dt><span class="!
 sect2"><a href="Seam_Reference_Guide-The_Seam_object-Seam.Comp!
 onent.ht
ml">19.2.2. Seam.Component</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-The_Seam_object-Seam.Remoting.html">19.2.3. Seam.Remoting</a></span></dt></dl></dd><dt><span class="sect1"><a href="Seam_Reference_Guide-Remoting-Client_Interfaces.html">19.3. Client Interfaces</a></span></dt><dt><span class="sect1"><a href="Seam_Reference_Guide-Remoting-The_Context.html">19.4. The Context</a></span></dt><dd><dl><dt><span class="sect2"><a href="Seam_Reference_Guide-Remoting-The_Context.html#Seam_Reference_Guide-The_Context-Setting_and_reading_the_Conversation_ID">19.4.1. Setting and reading the Conversation ID</a></span></dt></dl></dd><dt><span class="sect1"><a href="Seam_Reference_Guide-Remoting-Batch_Requests.html">19.5. Batch Requests</a></span></dt><dt><span class="sect1"><a href="Seam_Reference_Guide-Remoting-Working_with_Data_types.html">19.6. Working with Data types</a></span></dt><dd><dl><dt><span class="sect2"><a href="Seam_Reference_Guide-Remoting-Workin!
 g_with_Data_types.html#Seam_Reference_Guide-Working_with_Data_types-Primitives__Basic_Types">19.6.1. Primitives / Basic Types</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Working_with_Data_types-JavaBeans.html">19.6.2. JavaBeans</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Working_with_Data_types-Dates_and_Times.html">19.6.3. Dates and Times</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Working_with_Data_types-Enums.html">19.6.4. Enums</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Working_with_Data_types-Collections.html">19.6.5. Collections</a></span></dt></dl></dd><dt><span class="sect1"><a href="Seam_Reference_Guide-Remoting-Debugging.html">19.7. Debugging</a></span></dt><dt><span class="sect1"><a href="Seam_Reference_Guide-Remoting-The_Loading_Message.html">19.8. The Loading Message</a></span></dt><dd><dl><dt><span class="sect2"><a href="Seam_Reference_Guide-Remoting-The_Loadin!
 g_Message.html#Seam_Reference_Guide-The_Loading_Message-Changi!
 ng_the_m
essage">19.8.1. Changing the message</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-The_Loading_Message-Hiding_the_loading_message.html">19.8.2. Hiding the loading message</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-The_Loading_Message-A_Custom_Loading_Indicator.html">19.8.3. A Custom Loading Indicator</a></span></dt></dl></dd><dt><span class="sect1"><a href="Seam_Reference_Guide-Remoting-Controlling_what_data_is_returned.html">19.9. Controlling what data is returned</a></span></dt><dd><dl><dt><span class="sect2"><a href="Seam_Reference_Guide-Remoting-Controlling_what_data_is_returned.html#Seam_Reference_Guide-Controlling_what_data_is_returned-Constraining_normal_fields">19.9.1. Constraining normal fields</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Controlling_what_data_is_returned-Constraining_Maps_and_Collections.html">19.9.2. Constraining Maps and Collections</a></span></dt><dt><span class="sect2"><a !
 href="Seam_Reference_Guide-Controlling_what_data_is_returned-Constraining_objects_of_a_specific_type.html">19.9.3. Constraining objects of a specific type</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Controlling_what_data_is_returned-Combining_Constraints.html">19.9.4. Combining Constraints</a></span></dt></dl></dd><dt><span class="sect1"><a href="Seam_Reference_Guide-Remoting-JMS_Messaging.html">19.10. JMS Messaging</a></span></dt><dd><dl><dt><span class="sect2"><a href="Seam_Reference_Guide-Remoting-JMS_Messaging.html#Seam_Reference_Guide-JMS_Messaging-Configuration">19.10.1. Configuration</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-JMS_Messaging-Subscribing_to_a_JMS_Topic.html">19.10.2. Subscribing to a JMS Topic</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-JMS_Messaging-Unsubscribing_from_a_Topic.html">19.10.3. Unsubscribing from a Topic</a></span></dt><dt><span class="sect2"><a href="Seam_Referenc!
 e_Guide-JMS_Messaging-Tuning_the_Polling_Process.html">19.10.4!
 . Tuning
 the Polling Process</a></span></dt></dl></dd></dl></div><div class="para">
+		Seam provides a convenient method of remotely accessing components from a web page, using AJAX (Asynchronous Javascript and XML). The framework for this functionality is provided with almost no up-front development effort - your components only require simple annotating to become accessible via AJAX. This chapter describes the steps required to build an AJAX-enabled web page, then goes on to explain the features of the Seam Remoting framework in more detail.
+	</div><div class="sect1" title="19.1. Configuration"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Remoting-Configuration" class="title">Configuration</h1></div></div></div><div class="para">
+		To use remoting, the Seam Resource servlet must first be configured in your <code class="literal">web.xml</code> file:
+	</div><pre class="programlisting">
+          
+  &lt;servlet&gt;
+    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;
+    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-class&gt;
+  &lt;/servlet&gt;
+
+  &lt;servlet-mapping&gt;
+    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;
+    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;
+  &lt;/servlet-mapping&gt;
+</pre><div class="para">
+		The next step is to import the necessary Javascript into your web page. There are a minimum of two scripts that must be imported. The first one contains all the client-side framework code that enables remoting functionality:
+	</div><pre class="programlisting">
+          
+  &lt;script type="text/javascript" src="seam/resource/remoting/resource/remote.js"&gt;&lt;/script&gt;
+</pre><div class="para">
+		The second script contains the stubs and type definitions for the components you wish to call. It is generated dynamically based on the local interface of your components, and includes type definitions for all of the classes that can be used to call the remotable methods of the interface. The name of the script reflects the name of your component. For example, if you have a stateless session bean annotated with <code class="literal">@Name("customerAction")</code>, then your script tag should look like this:
+	</div><pre class="programlisting">
+          
+  &lt;script type="text/javascript" src="seam/resource/remoting/interface.js?customerAction"&gt;
+    &lt;/script&gt;
+</pre><div class="para">
+		If you wish to access more than one component from the same page, then include them all as parameters of your script tag:
+	</div><pre class="programlisting">
+          
+  &lt;script type="text/javascript" 
+     src="seam/resource/remoting/interface.js?customerAction&amp;accountAction"&gt;
+  &lt;/script&gt;
+</pre></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="ch18s02.html"><strong>Prev</strong>18.2. Page fragment caching</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Remoting-The_Seam_object.html"><strong>Next</strong>19.2. The "Seam" object</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Reverse_engineering_and_code_generation-Exporters.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Reverse_engineering_and_code_generation-Exporters.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Reverse_engineering_and_code_generation-Exporters.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>27.2.3.2. Exporters</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-CRUD_application_generator-Reverse_engineering_and_code_generation.html" title="27.2.3. Reverse engineering and code generation" /><link rel="prev" href="Seam_Reference_Guide-CRUD_application_generator-Reverse_engineering_and_code_generation.html" title="27.2.3. Reverse engineering and code generation" /><link rel="next" href="Seam_Reference_Guide-Reverse_engineering_and_code_generation-Generating_and_using_the_code.html" title="27.2.3.3. Generating and using the code" />!
 </head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-CRUD_application_generator-Reverse_engineering_and_code_generation.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Reverse_engineering_and_code_generation-Generating_and_using_the_code.html"><strong>Next</strong></a></li></ul><div class="section" title="27.2.3.2. Exporters"><div class="titlepage"><div><div><h4 class="title" id="Seam_Reference_Guide-Reverse_engineering_and_code_generation-Exporters">27.2.3.2. Exporters</h4></div></div></div><div class="para">
+					The exporters tab is used to specify which type of code that should be generated. Each selection represents an <code class="literal">Exporter</code> that is responsible for generating the code, hence the name.
+				</div><div class="mediaobject"><img src="images/codegenselectseam.png" width="444" /></div><div class="para">
+					The following table describes in short the various exporters. The most relevant for Seam is the <code class="literal">JBoss Seam Skeleton</code> application.
+				</div><div class="table" id="Seam_Reference_Guide-Exporters-Code_generation_Exporter_tab_fields"><div class="table-contents"><table summary="Code generation Exporter tab fields" border="1"><colgroup><col width="25%" /><col width="75%" /></colgroup><thead><tr><th align="center">
+									<div class="para">
+										Field
+									</div>
+								</th><th align="center">
+									<div class="para">
+										Description
+									</div>
+								</th></tr></thead><tbody><tr><td>
+									<div class="para">
+										Generate domain code
+									</div>
+								</td><td>
+									<div class="para">
+										Generates POJO's for all the persistent classes and components found in the given Hibernate configuration.
+									</div>
+								</td></tr><tr><td>
+									<div class="para">
+										JDK 1.5 constructs
+									</div>
+								</td><td>
+									<div class="para">
+										When enabled the POJO's will use JDK 1.5 constructs.
+									</div>
+								</td></tr><tr><td>
+									<div class="para">
+										EJB3/JSR-220 annotations
+									</div>
+								</td><td>
+									<div class="para">
+										When enabled the POJO's will be annotated according to the EJB3/JSR-220 persistency specification.
+									</div>
+								</td></tr><tr><td>
+									<div class="para">
+										Generate DAO code
+									</div>
+								</td><td>
+									<div class="para">
+										Generates a set of DAO's for each entity found.
+									</div>
+								</td></tr><tr><td>
+									<div class="para">
+										Generate Mappings
+									</div>
+								</td><td>
+									<div class="para">
+										Generate mapping (hbm.xml) files for each entity
+									</div>
+								</td></tr><tr><td>
+									<div class="para">
+										Generate hibernate configuration file
+									</div>
+								</td><td>
+									<div class="para">
+										Generate a <code class="filename">hibernate.cfg.xml</code> file. Used to keep the hibernate.cfg.xml uptodate with any new found mapping files.
+									</div>
+								</td></tr><tr><td>
+									<div class="para">
+										Generate schema html-documentation
+									</div>
+								</td><td>
+									<div class="para">
+										Generates set of html pages that documents the database schema and some of the mappings.
+									</div>
+								</td></tr><tr><td>
+									<div class="para">
+										Generate JBoss Seam skeleton app (beta)
+									</div>
+								</td><td>
+									<div class="para">
+										Generates a complete JBoss Seam skeleton app. The generation will include annotated POJO's, Seam controller beans and a JSP for the presentation layer. See the generated readme.txt for how to use it.
+									</div>
+									<div class="note"><h2>Note</h2><div class="para">
+											This exporter generates a full application, including a <code class="filename">build.xml</code> thus you will get the best results if you use an output directory which is the root of your project.
+										</div></div>
+								</td></tr></tbody></table></div><h6>Table 27.3. Code generation <code class="literal">Exporter</code> tab fields</h6></div><br class="table-break" /></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-CRUD_application_generator-Reverse_engineering_and_code_generation.html"><strong>Prev</strong>27.2.3. Reverse engineering and code generation</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Reverse_engineering_and_code_generation-Generating_and_using_the_code.html"><strong>Next</strong>27.2.3.3. Generating and using the code</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Reverse_engineering_and_code_generation-Generating_and_using_the_code.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Reverse_engineering_and_code_generation-Generating_and_using_the_code.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Reverse_engineering_and_code_generation-Generating_and_using_the_code.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>27.2.3.3. Generating and using the code</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-CRUD_application_generator-Reverse_engineering_and_code_generation.html" title="27.2.3. Reverse engineering and code generation" /><link rel="prev" href="Seam_Reference_Guide-Reverse_engineering_and_code_generation-Exporters.html" title="27.2.3.2. Exporters" /><link rel="next" href="appe-Publican-Revision_History.html" title="Appendix A. Revision History" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src=!
 "Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Reverse_engineering_and_code_generation-Exporters.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="appe-Publican-Revision_History.html"><strong>Next</strong></a></li></ul><div class="section" title="27.2.3.3. Generating and using the code"><div class="titlepage"><div><div><h4 class="title" id="Seam_Reference_Guide-Reverse_engineering_and_code_generation-Generating_and_using_the_code">27.2.3.3. Generating and using the code</h4></div></div></div><div class="para">
+					When you have finished filling out the settings, simply press <code class="literal">Run</code> to start the generation of code. This might take a little while if you are reverse engineering from a database.
+				</div><div class="para">
+					When the generation have finished you should now have a complete skeleton Seam application in the output directory. In the output directory there is a <code class="filename">readme.txt</code> file describing the steps needed to deploy and run the example.
+				</div><div class="para">
+					If you want to regenerate/update the skeleton code then simply run the code generation again by selecting the <code class="literal">Hibernate Code Generation</code> in the toolbar or <code class="literal">Run</code> menu. Enjoy.
+				</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Reverse_engineering_and_code_generation-Exporters.html"><strong>Prev</strong>27.2.3.2. Exporters</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="appe-Publican-Revision_History.html"><strong>Next</strong>Appendix A. Revision History</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam.Component-Seam.Component.getComponentName.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam.Component-Seam.Component.getComponentName.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam.Component-Seam.Component.getComponentName.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>19.2.2.3. Seam.Component.getComponentName()</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-The_Seam_object-Seam.Component.html" title="19.2.2. Seam.Component" /><link rel="prev" href="Seam_Reference_Guide-Seam.Component-Seam.Component.getInstance.html" title="19.2.2.2. Seam.Component.getInstance()" /><link rel="next" href="Seam_Reference_Guide-The_Seam_object-Seam.Remoting.html" title="19.2.3. Seam.Remoting" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.!
 png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam.Component-Seam.Component.getInstance.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-The_Seam_object-Seam.Remoting.html"><strong>Next</strong></a></li></ul><div class="sect3" title="19.2.2.3. Seam.Component.getComponentName()"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam.Component-Seam.Component.getComponentName" class="title">Seam.Component.getComponentName()</h1></div></div></div><div class="para">
+		Passing an object into this method will return its component name if it is a component, or <code class="literal">null</code> if it is not.
+	</div><pre class="programlisting">
+  if (Seam.Component.getComponentName(instance) == "customer")
+    alert("Customer");
+  else if (Seam.Component.getComponentName(instance) == "staff")
+    alert("Staff member");
+</pre></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam.Component-Seam.Component.getInstance.html"><strong>Prev</strong>19.2.2.2. Seam.Component.getInstance()</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-The_Seam_object-Seam.Remoting.html"><strong>Next</strong>19.2.3. Seam.Remoting</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam.Component-Seam.Component.getInstance.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam.Component-Seam.Component.getInstance.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam.Component-Seam.Component.getInstance.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>19.2.2.2. Seam.Component.getInstance()</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-The_Seam_object-Seam.Component.html" title="19.2.2. Seam.Component" /><link rel="prev" href="Seam_Reference_Guide-The_Seam_object-Seam.Component.html" title="19.2.2. Seam.Component" /><link rel="next" href="Seam_Reference_Guide-Seam.Component-Seam.Component.getComponentName.html" title="19.2.2.3. Seam.Component.getComponentName()" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/imag!
 e_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-The_Seam_object-Seam.Component.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam.Component-Seam.Component.getComponentName.html"><strong>Next</strong></a></li></ul><div class="sect3" title="19.2.2.2. Seam.Component.getInstance()"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam.Component-Seam.Component.getInstance" class="title">Seam.Component.getInstance()</h1></div></div></div><div class="para">
+		The <code class="literal">getInstance()</code> method is used to get a reference to a Seam session bean component stub, which can then be used to remotely execute methods against your component. This method returns a singleton for the specified component, so calling it twice in a row with the same component name will return the same instance of the component.
+	</div><div class="para">
+		To continue our example from before, if we have created a new <code class="literal">customer</code> and we now wish to save it, we would pass it to the <code class="literal">saveCustomer()</code> method of our <code class="literal">customerAction</code> component:
+	</div><pre class="programlisting">
+  Seam.Component.getInstance("customerAction").saveCustomer(customer);
+</pre></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-The_Seam_object-Seam.Component.html"><strong>Prev</strong>19.2.2. Seam.Component</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam.Component-Seam.Component.getComponentName.html"><strong>Next</strong>19.2.2.3. Seam.Component.getComponentName()</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam.Remoting-Seam.Remoting.getTypeName.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam.Remoting-Seam.Remoting.getTypeName.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam.Remoting-Seam.Remoting.getTypeName.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>19.2.3.2. Seam.Remoting.getTypeName()</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-The_Seam_object-Seam.Remoting.html" title="19.2.3. Seam.Remoting" /><link rel="prev" href="Seam_Reference_Guide-The_Seam_object-Seam.Remoting.html" title="19.2.3. Seam.Remoting" /><link rel="next" href="Seam_Reference_Guide-Remoting-Client_Interfaces.html" title="19.3. Client Interfaces" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class!
 ="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-The_Seam_object-Seam.Remoting.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Remoting-Client_Interfaces.html"><strong>Next</strong></a></li></ul><div class="sect3" title="19.2.3.2. Seam.Remoting.getTypeName()"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam.Remoting-Seam.Remoting.getTypeName" class="title">Seam.Remoting.getTypeName()</h1></div></div></div><div class="para">
+		This method is the equivalent of <code class="literal">Seam.Component.getComponentName()</code> but for non-component types. It will return the name of the type for an object instance, or <code class="literal">null</code> if the type is not known. The name is the fully qualified name of the type's Java class.
+	</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-The_Seam_object-Seam.Remoting.html"><strong>Prev</strong>19.2.3. Seam.Remoting</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Remoting-Client_Interfaces.html"><strong>Next</strong>19.3. Client Interfaces</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_JSF_controls.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_JSF_controls.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_JSF_controls.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,837 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 24. Seam JSF controls</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="index.html" title="Seam Reference Guide CP07" /><link rel="prev" href="ch23s11.html" title="23.11. Special components" /><link rel="next" href="Seam_Reference_Guide-Expression_language_enhancements.html" title="Chapter 25. Expression language enhancements" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Conten!
 t/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="ch23s11.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Expression_language_enhancements.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="chapter" title="Chapter 24. Seam JSF controls" lang="en-US"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_JSF_controls">Chapter 24. Seam JSF controls</h2></div></div></div><div class="para">
+		Seam includes a number of JSF controls that are useful for working with Seam. These are intended to complement the built-in JSF controls, and controls from other third-party libraries. We recommend the Ajax4JSF and ADF faces (now Trinidad) tag libraries for use with Seam. We do not recommend the use of the Tomahawk tag library.
+	</div><div class="para">
+		To use these controls, define the "<code class="literal">s</code>" namespace in your page as follows (facelets only):
+	</div><pre class="programlisting">
+&lt;html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:s="http://jboss.com/products/seam/taglib"&gt;
+</pre><div class="para">
+		The ui example demonstrates the use of a number of these tags.
+	</div><div class="table" id="Seam_Reference_Guide-Seam_JSF_controls-Seam_JSF_Control_Reference"><div class="table-contents"><table summary="Seam JSF Control Reference" border="1"><colgroup><col width="25%" /><col width="75%" /></colgroup><tbody><tr><td valign="top">
+						<div class="para">
+							<code class="literal">&lt;s:validate&gt;</code>
+						</div>
+					</td><td valign="top">
+						<div class="para">
+							<span class="emphasis"><em>Description</em></span>
+						</div>
+						<div class="para">
+							A non-visual control, validates a JSF input field against the bound property using Hibernate Validator.
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Attributes</em></span>
+						</div>
+						<div class="para">
+							None.
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Usage</em></span>
+						</div>
+						
+<pre class="programlisting">
+&lt;h:inputText id="userName" required="true" value="#{customer.userName}"&gt;
+  &lt;s:validate /&gt;
+&lt;/h:inputText&gt;
+&lt;h:message for="userName" styleClass="error" /&gt;
+</pre>
+					</td></tr><tr><td valign="top">
+						<div class="para">
+							<code class="literal">&lt;s:validateAll&gt;</code>
+						</div>
+					</td><td valign="top">
+						<div class="para">
+							<span class="emphasis"><em>Description</em></span>
+						</div>
+						<div class="para">
+							A non-visual control, validates all child JSF input fields against their bound properties using Hibernate Validator.
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Attributes</em></span>
+						</div>
+						<div class="para">
+							None.
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Usage</em></span>
+						</div>
+						
+<pre class="programlisting">
+&lt;s:validateAll&gt;
+  &lt;div class="entry"&gt;
+    &lt;h:outputLabel for="username"&gt;Username:&lt;/h:outputLabel&gt;
+    &lt;h:inputText id="username" value="#{user.username}" required="true"/&gt;
+    &lt;h:message for="username" styleClass="error" /&gt;
+  &lt;/div&gt;
+  &lt;div class="entry"&gt;
+    &lt;h:outputLabel for="password"&gt;Password:&lt;/h:outputLabel&gt;
+    &lt;h:inputSecret id="password" value="#{user.password}" required="true"/&gt;
+    &lt;h:message for="password" styleClass="error" /&gt;
+  &lt;/div&gt;
+  &lt;div class="entry"&gt;
+    &lt;h:outputLabel for="verify"&gt;Verify Password:&lt;/h:outputLabel&gt;
+    &lt;h:inputSecret id="verify" value="#{register.verify}" required="true"/&gt;
+    &lt;h:message for="verify" styleClass="error" /&gt;
+  &lt;/div&gt;
+&lt;/s:validateAll&gt;
+</pre>
+					</td></tr><tr><td valign="top">
+						<div class="para">
+							<code class="literal">&lt;s:formattedText&gt;</code>
+						</div>
+					</td><td valign="top">
+						<div class="para">
+							<span class="emphasis"><em>Description</em></span>
+						</div>
+						<div class="para">
+							Outputs <span class="emphasis"><em>Seam Text</em></span>, a rich text markup useful for blogs, wikis and other applications that might use rich text. See the Seam Text chapter for full usage.
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Attributes</em></span>
+						</div>
+						<div class="itemizedlist"><ul><li class="listitem"><div class="para">
+									<code class="literal">value</code> — an EL expression specifying the rich text markup to render.
+								</div></li></ul></div>
+						<div class="para">
+							<span class="emphasis"><em>Usage</em></span>
+						</div>
+						
+<pre class="programlisting">&lt;s:formattedText value="#{blog.text}"/&gt;
+</pre>
+						<div class="para">
+							<span class="emphasis"><em>Example</em></span>
+						</div>
+						<div class="mediaobject" align="center"><img src="images/controls-seamtext.png" align="middle" width="444" /></div>
+					</td></tr><tr><td valign="top">
+						<div class="para">
+							<code class="literal">&lt;s:convertDateTime&gt;</code>
+						</div>
+					</td><td valign="top">
+						<div class="para">
+							<span class="emphasis"><em>Description</em></span>
+						</div>
+						<div class="para">
+							Perform date or time conversions in the Seam timezone.
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Attributes</em></span>
+						</div>
+						<div class="para">
+							None.
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Usage</em></span>
+						</div>
+						
+<pre class="programlisting">
+</pre>
+					</td></tr><tr><td valign="top">
+						<div class="para">
+							<code class="literal">&lt;s:convertEnum&gt;</code>
+						</div>
+					</td><td valign="top">
+						<div class="para">
+							<span class="emphasis"><em>Description</em></span>
+						</div>
+						<div class="para">
+							Assigns an enum converter to the current component. This is primarily useful for radio button and dropdown controls.
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Attributes</em></span>
+						</div>
+						<div class="para">
+							None.
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Usage</em></span>
+						</div>
+						
+<pre class="programlisting">
+</pre>
+					</td></tr><tr><td valign="top">
+						<div class="para">
+							<code class="literal">&lt;s:convertEntity&gt;</code>
+						</div>
+					</td><td valign="top">
+						<div class="para">
+							<span class="emphasis"><em>Description</em></span>
+						</div>
+						<div class="para">
+							Assigns an entity converter to the current component. This is primarily useful for radio button and dropdown controls.
+						</div>
+						<div class="para">
+							The converter works with any entity which has an <code class="literal">@Id</code> annotation - either simple or composite. If your <span class="emphasis"><em>Managed Persistence Context</em></span> is not called <code class="literal">entityManager</code>, then you need to set it in components.xml:
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Attributes</em></span>
+						</div>
+						<div class="para">
+							None.
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Configuration</em></span>
+						</div>
+						
+<pre class="programlisting">
+  &lt;component name="org.jboss.seam.ui.entityConverter"&gt;
+      &lt;property name="entityManager"&gt;#{em}&lt;/property&gt;
+  &lt;/component&gt;
+</pre>
+						<div class="para">
+							<span class="emphasis"><em>Usage</em></span>
+						</div>
+						
+<pre class="programlisting">&lt;h:selectOneMenu value="#{person.continent}" required="true"&gt;
+    &lt;s:selectItems value="#{continents.resultList}" var="continent" label="#{continent.name}" noSelectionLabel="Please Select..."/&gt;
+    &lt;s:convertEntity /&gt;
+&lt;/h:selectOneMenu&gt;
+</pre>
+					</td></tr><tr><td valign="top">
+						<div class="para">
+							<code class="literal">&lt;s:enumItem&gt;</code>
+						</div>
+					</td><td valign="top">
+						<div class="para">
+							<span class="emphasis"><em>Description</em></span>
+						</div>
+						<div class="para">
+							Creates a <code class="literal">SelectItem</code> from an enum value.
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Attributes</em></span>
+						</div>
+						<div class="itemizedlist"><ul><li class="listitem"><div class="para">
+									<code class="literal">enumValue</code> — the string representation of the enum value.
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">label</code> — the label to be used when rendering the <code class="literal">SelectItem</code>.
+								</div></li></ul></div>
+						<div class="para">
+							<span class="emphasis"><em>Usage</em></span>
+						</div>
+						<div class="para">
+							
+<pre class="programlisting">
+</pre>
+						</div>
+					</td></tr><tr><td valign="top">
+						<div class="para">
+							<code class="literal">&lt;s:selectItems&gt;</code>
+						</div>
+					</td><td valign="top">
+						<div class="para">
+							<span class="emphasis"><em>Description</em></span>
+						</div>
+						<div class="para">
+							Creates a <code class="literal">List&lt;SelectItem&gt;</code> from a List, Set, DataModel or Array.
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Attributes</em></span>
+						</div>
+						<div class="itemizedlist"><ul><li class="listitem"><div class="para">
+									<code class="literal">value</code> — an EL expression specifying the data that backs the <code class="literal">List&lt;SelectItem&gt;</code>
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">var</code> — defines the name of the local variable that holds the current object during iteration
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">label</code> — the label to be used when rendering the <code class="literal">SelectItem</code>. Can reference the <code class="literal">var</code> variable
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">disabled</code> — if true the <code class="literal">SelectItem</code> will be rendered disabled. Can reference the <code class="literal">var</code> variable
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">noSelectionLabel</code> — specifies the (optional) label to place at the top of list (if <code class="literal">required="true"</code> is also specified then selecting this value will cause a validation error)
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">hideNoSelectionLabel</code> — if true, the <code class="literal">noSelectionLabel</code> will be hidden when a value is selected
+								</div></li></ul></div>
+						<div class="para">
+							<span class="emphasis"><em>Usage</em></span>
+						</div>
+						<div class="para">
+							
+<pre class="programlisting">
+
+&lt;h:selectOneMenu value="#{person.age}"  converter="#{converters.ageConverter}"&gt;
+    &lt;s:selectItems value="#{ages}" var="age" label="#{age}" /&gt;
+&lt;/h:selectOneMenu&gt;
+</pre>
+						</div>
+					</td></tr><tr><td valign="top">
+						<div class="para">
+							<code class="literal">&lt;s:graphicImage&gt;</code>
+						</div>
+					</td><td valign="top">
+						<div class="para">
+							<span class="emphasis"><em>Description</em></span>
+						</div>
+						<div class="para">
+							An extended <code class="literal">&lt;h:graphicImage&gt;</code> that allows the image to be created in a Seam Component; further transforms can be applied to the image. <span class="emphasis"><em>Facelets only.</em></span>
+						</div>
+						<div class="para">
+							All attributes for <code class="literal">&lt;h:graphicImage&gt;</code> are supported, as well as:
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Attributes</em></span>
+						</div>
+						<div class="itemizedlist"><ul><li class="listitem"><div class="para">
+									<code class="literal">value</code> — image to display. Can be a path <code class="literal">String</code> (loaded from the classpath), a <code class="literal">byte[]</code>, a <code class="literal">java.io.File</code>, a <code class="literal">java.io.InputStream</code> or a <code class="literal">java.net.URL</code>. Currently supported image formats are <code class="literal">image/png</code>, <code class="literal">image/jpeg</code> and <code class="literal">image/gif</code>.
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">fileName</code> — if not specified the served image will have a generated file name. If you want to name your file, you should specify it here. This name should be unique
+								</div></li></ul></div>
+						<div class="para">
+							<span class="emphasis"><em>Transformations</em></span>
+						</div>
+						<div class="para">
+							To apply a transform to the image, you would nest a tag specifying the transform to apply. Seam currently supports these transforms:
+						</div>
+						<div class="variablelist"><dl><dt><span class="term"><code class="literal">&lt;s:transformImageSize&gt;</code></span></dt><dd><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+												<code class="literal">width</code> — new width of the image
+											</div></li><li class="listitem"><div class="para">
+												<code class="literal">height</code> — new height of the image
+											</div></li><li class="listitem"><div class="para">
+												<code class="literal">maintainRatio</code> — if <code class="literal">true</code>, and <span class="emphasis"><em>one</em></span> of <code class="literal">width</code>/<code class="literal">height</code> are specified, the image will be resized with the dimension not specified being calculated to maintain the aspect ratio.
+											</div></li><li class="listitem"><div class="para">
+												<code class="literal">factor</code> — scale the image by the given factor
+											</div></li></ul></div></dd><dt><span class="term"><code class="literal">&lt;s:transformImageBlur&gt;</code></span></dt><dd><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+												<code class="literal">radius</code> — perform a convolution blur with the given radius
+											</div></li></ul></div></dd><dt><span class="term"><code class="literal">&lt;s:transformImageType&gt;</code></span></dt><dd><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+												<code class="literal">contentType</code> — alter the type of the image to either <code class="literal">image/jpeg</code> or <code class="literal">image/png</code>
+											</div></li></ul></div></dd></dl></div>
+						<div class="para">
+							It is easy to create your own transform - create a <code class="literal">UIComponent</code> which <code class="literal">implements</code><code class="literal">org.jboss.seam.ui.graphicImage.ImageTransform</code>. Inside the <code class="literal">applyTransform()</code>method use <code class="literal">image.getBufferedImage()</code> to get the original image and <code class="literal">image.setBufferedImage()</code> to set your transformed image. Transforms are applied in the order specified in the view.
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Usage</em></span>
+						</div>
+						<div class="para">
+							
+<pre class="programlisting">
+</pre>
+						</div>
+					</td></tr><tr><td valign="top">
+						<div class="para">
+							<code class="literal">&lt;s:decorate&gt;</code>
+						</div>
+					</td><td valign="top">
+						<div class="para">
+							<span class="emphasis"><em>Description</em></span>
+						</div>
+						<div class="para">
+							"Decorate" a JSF input field when validation fails or when <code class="literal">required="true"</code> is set.
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Attributes</em></span>
+						</div>
+						<div class="para">
+							None.
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Usage</em></span>
+						</div>
+						<div class="para">
+							
+<pre class="programlisting">
+</pre>
+						</div>
+					</td></tr><tr><td valign="top">
+						<div class="para">
+							<code class="literal">&lt;s:layoutForm&gt;</code>
+						</div>
+					</td><td valign="top">
+						<div class="para">
+							<span class="emphasis"><em>Description</em></span>
+						</div>
+						<div class="para">
+							A layout component for producing a "standard" form layout. Each child component will be treated as a row, and if the child is a <code class="literal">&lt;s:decorate&gt;</code>, additional formatting will be applied: 
+							<div class="itemizedlist"><ul><li class="listitem"><div class="para">
+										Label — if a <code class="literal">label</code> facet is on the <code class="literal">&lt;s:decorate&gt;</code> then it's contents will be used as the label for this field. The labels are rendered right-aligned in a column
+									</div><div class="para">
+										Some further decoration facets are supported - <code class="literal">beforeLabel</code>, <code class="literal">afterLabel</code>, <code class="literal">aroundLabel</code>, <code class="literal">beforeInvalidLabel</code>, <code class="literal">afterInvalidLabel</code> and <code class="literal">aroundInvalidLabel</code>.
+									</div></li><li class="listitem"><div class="para">
+										Other text — if a <code class="literal">belowLabel</code> facet or/and a <code class="literal">belowField</code> facet are present on <code class="literal">&lt;s:decorate&gt;</code> then it's contents will be placed below the label or the field
+									</div></li><li class="listitem"><div class="para">
+										Required — if <code class="literal">required="true"</code> is set on the field, then the <code class="literal">aroundRequiredField</code>, <code class="literal">beforeRequiredField</code>, <code class="literal">afterRequiredField</code>, <code class="literal">aroundRequiredLabel</code>, <code class="literal">beforeRequiredLabel</code> and <code class="literal">afterRequiredLabel</code> will be applied.
+									</div></li></ul></div>
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Attributes</em></span>
+						</div>
+						<div class="para">
+							None.
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Usage</em></span>
+						</div>
+						<div class="para">
+							
+<pre class="programlisting">
+&lt;s:layoutForm&gt;
+   &lt;f:facet name="aroundInvalidField"&gt;
+       &lt;s:span styleClass="error"/&gt;
+   &lt;/f:facet&gt;
+   &lt;f:facet name="afterInvalidField"&gt;
+       &lt;s:message /&gt;
+   &lt;/f:facet&gt;
+   &lt;f:facet name="beforeRequiredLabel"&gt;
+   	&lt;s:span&gt;∗&lt;/s:span&gt;
+   &lt;/f:facet&gt;
+   &lt;f:facet name="aroundLabel"&gt;
+   	&lt;s:span style="text-align:right;" /&gt;
+   &lt;/f:facet&gt;
+   &lt;f:facet name="aroundInvalidLabel"&gt;
+   	&lt;s:span style="text-align:right;" styleClass="error" /&gt;
+   &lt;/f:facet&gt;
+   &lt;s:decorate&gt;
+        &lt;f:facet name="label"&gt;
+		    &lt;h:outputText value="Name" /&gt;
+        &lt;/f:facet&gt;
+        &lt;h:inputText value="#{person.name}" required="true"/&gt;
+        &lt;f:facet name="belowField"&gt;
+            &lt;h:outputText styleClass="help" 
+               value="Enter your name as it appears 
+                  on your passport" /&gt;
+        &lt;/f:facet&gt;
+    &lt;/s:decorate&gt;
+&lt;/s:layoutForm&gt;
+</pre>
+						</div>
+						<div class="mediaobject"><img src="images/layoutForm-example.png" /></div>
+					</td></tr><tr><td valign="top">
+						<div class="para">
+							<code class="literal">&lt;s:message&gt;</code>
+						</div>
+					</td><td valign="top">
+						<div class="para">
+							<span class="emphasis"><em>Description</em></span>
+						</div>
+						<div class="para">
+							"Decorate" a JSF input field with the validation error message.
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Attributes</em></span>
+						</div>
+						<div class="para">
+							None.
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Usage</em></span>
+						</div>
+						<div class="para">
+							
+<pre class="programlisting">
+</pre>
+						</div>
+					</td></tr><tr><td valign="top">
+						<div class="para">
+							<code class="literal">&lt;s:span&gt;</code>
+						</div>
+					</td><td valign="top">
+						<div class="para">
+							<span class="emphasis"><em>Description</em></span>
+						</div>
+						<div class="para">
+							Render a HTML <code class="literal">&lt;span&gt;</code>.
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Attributes</em></span>
+						</div>
+						<div class="para">
+							None.
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Usage</em></span>
+						</div>
+						<div class="para">
+							
+<pre class="programlisting">
+</pre>
+						</div>
+					</td></tr><tr><td valign="top">
+						<div class="para">
+							<code class="literal">&lt;s:div&gt;</code>
+						</div>
+					</td><td valign="top">
+						<div class="para">
+							<span class="emphasis"><em>Description</em></span>
+						</div>
+						<div class="para">
+							Render a HTML <code class="literal">&lt;div&gt;</code>.
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Attributes</em></span>
+						</div>
+						<div class="para">
+							None.
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Usage</em></span>
+						</div>
+						<div class="para">
+							
+<pre class="programlisting">
+</pre>
+						</div>
+					</td></tr><tr><td valign="top">
+						<div class="para">
+							<code class="literal">&lt;s:fragment&gt;</code>
+						</div>
+					</td><td valign="top">
+						<div class="para">
+							<span class="emphasis"><em>Description</em></span>
+						</div>
+						<div class="para">
+							A non-rendering component useful for enabling/disabling rendering of it's children.
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Attributes</em></span>
+						</div>
+						<div class="para">
+							None.
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Usage</em></span>
+						</div>
+						<div class="para">
+							
+<pre class="programlisting">
+</pre>
+						</div>
+					</td></tr><tr><td valign="top">
+						<div class="para">
+							<code class="literal">&lt;s:cache&gt;</code>
+						</div>
+					</td><td valign="top">
+						<div class="para">
+							<span class="emphasis"><em>Description</em></span>
+						</div>
+						<div class="para">
+							Cache the rendered page fragment using JBoss Cache. Note that <code class="literal">&lt;s:cache&gt;</code> actually uses the instance of JBoss Cache managed by the built-in <code class="literal">pojoCache</code> component.
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Attributes</em></span>
+						</div>
+						<div class="itemizedlist"><ul><li class="listitem"><div class="para">
+									<code class="literal">key</code> — the key to cache rendered content, often a value expression. For example, if we were caching a page fragment that displays a document, we might use <code class="literal">key="Document-#{document.id}"</code>.
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">enabled</code> — a value expression that determines if the cache should be used.
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">region</code> — a JBoss Cache node to use (different nodes can have different expiry policies).
+								</div></li></ul></div>
+						<div class="para">
+							<span class="emphasis"><em>Usage</em></span>
+						</div>
+						<div class="para">
+							
+<pre class="programlisting">
+</pre>
+						</div>
+					</td></tr><tr><td valign="top">
+						<div class="para">
+							<code class="literal">&lt;s:link&gt;</code>
+						</div>
+					</td><td valign="top">
+						<div class="para">
+							<span class="emphasis"><em>Description</em></span>
+						</div>
+						<div class="para">
+							A link that supports invocation of an action with control over conversation propagation. <span class="emphasis"><em>Does not submit the form.</em></span>
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Attributes</em></span>
+						</div>
+						<div class="itemizedlist"><ul><li class="listitem"><div class="para">
+									<code class="literal">value</code> — the label.
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">action</code> — a method binding that specified the action listener.
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">view</code> — the JSF view id to link to.
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">fragment</code> — the fragment identifier to link to.
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">disabled</code> — is the link disabled?
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">propagation</code> — determines the conversation propagation style: <code class="literal">begin</code>, <code class="literal">join</code>, <code class="literal">nest</code>, <code class="literal">none</code> or <code class="literal">end</code>.
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">pageflow</code> — a pageflow definition to begin. (This is only useful when <code class="literal">propagation="begin"</code> or <code class="literal">propagation="join"</code>.)
+								</div></li></ul></div>
+						<div class="para">
+							<span class="emphasis"><em>Usage</em></span>
+						</div>
+						<div class="para">
+							
+<pre class="programlisting">
+</pre>
+						</div>
+					</td></tr><tr><td valign="top">
+						<div class="para">
+							<code class="literal">&lt;s:button&gt;</code>
+						</div>
+					</td><td valign="top">
+						<div class="para">
+							<span class="emphasis"><em>Description</em></span>
+						</div>
+						<div class="para">
+							A button that supports invocation of an action with control over conversation propagation. <span class="emphasis"><em>Does not submit the form.</em></span>
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Attributes</em></span>
+						</div>
+						<div class="itemizedlist"><ul><li class="listitem"><div class="para">
+									<code class="literal">value</code> — the label.
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">action</code> — a method binding that specified the action listener.
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">view</code> — the JSF view id to link to.
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">fragment</code> — the fragment identifier to link to.
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">disabled</code> — is the link disabled?
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">propagation</code> — determines the conversation propagation style: <code class="literal">begin</code>, <code class="literal">join</code>, <code class="literal">nest</code>, <code class="literal">none</code> or <code class="literal">end</code>.
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">pageflow</code> — a pageflow definition to begin. (This is only useful when <code class="literal">propagation="begin"</code> or <code class="literal">propagation="join"</code>.)
+								</div></li></ul></div>
+						<div class="para">
+							<span class="emphasis"><em>Usage</em></span>
+						</div>
+						<div class="para">
+							
+<pre class="programlisting">
+</pre>
+						</div>
+					</td></tr><tr><td valign="top">
+						<div class="para">
+							<code class="literal">&lt;s:selectDate&gt;</code>
+						</div>
+					</td><td valign="top">
+						<div class="para">
+							<span class="emphasis"><em>Description</em></span>
+						</div>
+						<div class="para">
+							Displays a dynamic date picker component that selects a date for the specified input field. The body of the <code class="literal">selectDate</code> element should contain HTML elements, such as text or an image, that prompt the user to click to display the date picker. The date picker <span class="emphasis"><em>must</em></span> be styled using CSS. An example CSS file can be found in the Seam booking demo as <code class="literal">date.css</code>, or can be generated using seam-gen. The CSS styles used to control the appearance of the date picker are also described below.
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Attributes</em></span>
+						</div>
+						<div class="itemizedlist"><ul><li class="listitem"><div class="para">
+									<code class="literal">for</code> — The id of the input field that the date picker will insert the selected date into.
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">dateFormat</code> — The date format string. This should match the date format of the input field.
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">startYear</code> — The popup year selector range will start at this year.
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">endYear</code> — The popup year selector range will end at this year.
+								</div></li></ul></div>
+						<div class="para">
+							<span class="emphasis"><em>Usage</em></span>
+						</div>
+						<div class="para">
+							
+<pre class="programlisting">
+  &lt;div class="row"&gt;
+    &lt;h:outputLabel for="dob"&gt;Date of birth&lt;em&gt;*&lt;/em&gt;&lt;/h:outputLabel&gt;
+    &lt;h:inputText id="dob" value="#{user.dob}" required="true"&gt;
+      &lt;s:convertDateTime pattern="MM/dd/yyyy"/&gt;
+    &lt;/h:inputText&gt;
+    &lt;s:selectDate for="dob" startYear="1910" endYear="2007"&gt;&lt;img src="img/datepicker.png"/&gt;&lt;/s:selectDate&gt;
+    &lt;div class="validationError"&gt;&lt;h:message for="dob"/&gt;&lt;/div&gt;
+  &lt;/div&gt;
+</pre>
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Example</em></span>
+						</div>
+						<div class="mediaobject" align="center"><img src="images/controls-selectdate.png" align="middle" /></div>
+						<div class="para">
+							<span class="emphasis"><em>CSS Styling</em></span>
+						</div>
+						<div class="para">
+							The following list describes the CSS class names that are used to control the style of the selectDate control.
+						</div>
+						<div class="itemizedlist"><ul><li class="listitem"><div class="para">
+									<code class="literal">seam-date</code> — This class is applied to the outer <code class="literal">div</code> containing the popup calendar. (1) It is also applied to the <code class="literal">table</code> that controls the inner layout of the calendar. (2)
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">seam-date-header</code> — This class is applied to the calendar header table row (<code class="literal">tr</code>) and header table cells (<code class="literal">td</code>). (3)
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">seam-date-header-prevMonth</code> — This class is applied to the "previous month" table cell, (<code class="literal">td</code>), which when clicked causes the calendar to display the month prior to the one currently displayed. (4)
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">seam-date-header-nextMonth</code> — This class is applied to the "next month" table cell, (<code class="literal">td</code>), which when clicked causes the calendar to display the month following the one currently displayed. (5)
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">seam-date-headerDays</code> — This class is applied to the calendar days header row (<code class="literal">tr</code>), which contains the names of the week days. (6)
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">seam-date-footer</code> — This class is applied to the calendar footer row (<code class="literal">tr</code>), which displays the current date. (7)
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">seam-date-inMonth</code> — This class is applied to the table cell (<code class="literal">td</code>) elements that contain a date within the month currently displayed. (8)
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">seam-date-outMonth</code> — This class is applied to the table cell (<code class="literal">td</code>) elements that contain a date outside of the month currently displayed. (9)
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">seam-date-selected</code> — This class is applied to the table cell (<code class="literal">td</code>) element that contains the currently selected date. (10)
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">seam-date-dayOff-inMonth</code> — This class is applied to the table cell (<code class="literal">td</code>) elements that contain a "day off" date (i.e. weekend days, Saturday and Sunday) within the currently selected month. (11)
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">seam-date-dayOff-outMonth</code> — This class is applied to the table cell (<code class="literal">td</code>) elements that contain a "day off" date (i.e. weekend days, Saturday and Sunday) outside of the currently selected month. (12)
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">seam-date-hover</code> — This class is applied to the table cell (<code class="literal">td</code>) element over which the cursor is hovering. (13)
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">seam-date-monthNames</code> — This class is applied to the <code class="literal">div</code> control that contains the popup month selector. (14)
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">seam-date-monthNameLink</code> — This class is applied to the anchor (<code class="literal">a</code>) controls that contain the popup month names. (15)
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">seam-date-years </code> — This class is applied to the <code class="literal">div</code> control that contains the popup year selector. (16)
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">seam-date-yearLink</code> — This class is applied to the anchor (<code class="literal">a</code>) controls that contain the popup years. (15)
+								</div></li></ul></div>
+						<div class="mediaobject" align="center"><img src="images/controls-selectdatecss.png" align="middle" width="444" /></div>
+					</td></tr><tr><td valign="top">
+						<div class="para">
+							<code class="literal">&lt;s:conversationPropagation&gt;</code>
+						</div>
+					</td><td valign="top">
+						<div class="para">
+							<span class="emphasis"><em>Description</em></span>
+						</div>
+						<div class="para">
+							Customize the conversation propagation for a command link or button (or similar JSF control). <span class="emphasis"><em>Facelets only.</em></span>
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Attributes</em></span>
+						</div>
+						<div class="itemizedlist"><ul><li class="listitem"><div class="para">
+									<code class="literal">propagation</code> — determines the conversation propagation style: <code class="literal">begin</code>, <code class="literal">join</code>, <code class="literal">nest</code>, <code class="literal">none</code> or <code class="literal">end</code>.
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">pageflow</code> — a pageflow definition to begin. (This is only useful when <code class="literal">propagation="begin"</code> or <code class="literal">propagation="join"</code>.)
+								</div></li></ul></div>
+						<div class="para">
+							<span class="emphasis"><em>Usage</em></span>
+						</div>
+						<div class="para">
+							
+<pre class="programlisting">
+</pre>
+						</div>
+					</td></tr><tr><td valign="top">
+						<div class="para">
+							<code class="literal">&lt;s:conversationId&gt;</code>
+						</div>
+					</td><td valign="top">
+						<div class="para">
+							<span class="emphasis"><em>Description</em></span>
+						</div>
+						<div class="para">
+							Add the conversation id to an output link (or similar JSF control). <span class="emphasis"><em>Facelets only.</em></span>
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Attributes</em></span>
+						</div>
+						<div class="para">
+							None.
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Usage</em></span>
+						</div>
+						<div class="para">
+							
+<pre class="programlisting">
+</pre>
+						</div>
+					</td></tr><tr><td valign="top">
+						<div class="para">
+							<code class="literal">&lt;s:taskId&gt;</code>
+						</div>
+					</td><td valign="top">
+						<div class="para">
+							<span class="emphasis"><em>Description</em></span>
+						</div>
+						<div class="para">
+							Add the task id to an output link (or similar JSF control), when the task is available via <code class="literal">#{task}</code>. <span class="emphasis"><em>Facelets only.</em></span>
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Attributes</em></span>
+						</div>
+						<div class="para">
+							None.
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Usage</em></span>
+						</div>
+						<div class="para">
+							
+<pre class="programlisting">
+</pre>
+						</div>
+					</td></tr><tr><td valign="top">
+						<div class="para">
+							<code class="literal">&lt;s:fileUpload&gt;</code>
+						</div>
+					</td><td valign="top">
+						<div class="para">
+							<span class="emphasis"><em>Description</em></span>
+						</div>
+						<div class="para">
+							Renders a file upload control. This control must be used within a form with an encoding type of <code class="literal">multipart/form-data</code>, i.e:
+						</div>
+						
+<pre class="programlisting">
+                       
+        &lt;h:form enctype="multipart/form-data"&gt;
+</pre>
+						<div class="para">
+							For multipart requests, the Seam Multipart servlet filter must also be configured in <code class="literal">web.xml</code>:
+						</div>
+						
+<pre class="programlisting">
+                       
+  &lt;filter&gt;
+    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;
+    &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-class&gt;
+  &lt;/filter&gt;
+
+  &lt;filter-mapping&gt;
+    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;
+    &lt;url-pattern&gt;/*&lt;/url-pattern&gt;
+  &lt;/filter-mapping&gt;
+</pre>
+						<div class="para">
+							<span class="emphasis"><em>Configuration</em></span>
+						</div>
+						<div class="para">
+							The following configuration options for multipart requests may be configured in components.xml:
+						</div>
+						<div class="itemizedlist"><ul><li class="listitem"><div class="para">
+									<code class="literal">createTempFiles</code> — if this option is set to true, uploaded files are streamed to a temporary file instead of in memory.
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">maxRequestSize</code> — the maximum size of a file upload request, in bytes.
+								</div></li></ul></div>
+						<div class="para">
+							Here's an example:
+						</div>
+						
+<pre class="programlisting">
+                       
+  &lt;component class="org.jboss.seam.web.MultipartFilter"&gt;
+      &lt;property name="createTempFiles"&gt;true&lt;/property&gt;
+      &lt;property name="maxRequestSize"&gt;1000000&lt;/property&gt;
+  &lt;/component&gt;
+</pre>
+						<div class="para">
+							<span class="emphasis"><em>Attributes</em></span>
+						</div>
+						<div class="itemizedlist"><ul><li class="listitem"><div class="para">
+									<code class="literal">data</code> — this value binding receives the binary file data. The receiving field should be declared as a <code class="literal">byte[]</code> or <code class="literal">InputStream</code> (required).
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">contentType</code> — this value binding receives the file's content type (optional).
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">fileName</code> — this value binding receives the filename (optional).
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">accept</code> — a comma-separated list of content types to accept, may not be supported by the browser. E.g. <code class="literal">"images/png,images/jpg"</code>, <code class="literal">"images/*"</code>.
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">style</code> — The control's style
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">styleClass</code> — The control's style class
+								</div></li></ul></div>
+						<div class="para">
+							<span class="emphasis"><em>Usage</em></span>
+						</div>
+						<div class="para">
+							
+<pre class="programlisting">
+</pre>
+						</div>
+					</td></tr></tbody></table></div><h6>Table 24.1. Seam JSF Control Reference</h6></div><br class="table-break" /></div><ul class="docnav"><li class="previous"><a accesskey="p" href="ch23s11.html"><strong>Prev</strong>23.11. Special components</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Expression_language_enhancements.html"><strong>Next</strong>Chapter 25. Expression language enhancements</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_Text-Entering_HTML.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_Text-Entering_HTML.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_Text-Entering_HTML.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>14.4. Entering HTML</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Seam_Text.html" title="Chapter 14. Seam Text" /><link rel="prev" href="Seam_Reference_Guide-Seam_Text-Links.html" title="14.3. Links" /><link rel="next" href="Seam_Reference_Guide-iText_PDF_generation.html" title="Chapter 15. iText PDF generation" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Con!
 tent/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_Text-Links.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-iText_PDF_generation.html"><strong>Next</strong></a></li></ul><div class="section" title="14.4. Entering HTML"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_Text-Entering_HTML">14.4. Entering HTML</h2></div></div></div><div class="para">
+			Text may even include a certain limited subset of HTML (the subset is chosen to be safe from cross-site scripting attacks). This is useful for creating links:
+		</div><pre class="programlisting">You might want to link to &lt;a href="http://jboss.com/products/seam"&gt;something
+cool&lt;/a&gt;, or even include an image: &lt;img src="/logo.jpg"/&gt;
+</pre><div class="para">
+			And for creating tables:
+		</div><pre class="programlisting">&lt;table&gt;
+    &lt;tr&gt;&lt;td&gt;First name:&lt;/td&gt;&lt;td&gt;Gavin&lt;/td&gt;&lt;/tr&gt;
+    &lt;tr&gt;&lt;td&gt;Last name:&lt;/td&gt;&lt;td&gt;King&lt;/td&gt;&lt;/tr&gt;
+&lt;/table&gt;
+</pre><div class="para">
+			There is much more that can be achieved if you wish.
+		</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_Text-Links.html"><strong>Prev</strong>14.3. Links</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-iText_PDF_generation.html"><strong>Next</strong>Chapter 15. iText PDF generation</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_Text-Entering_code_and_text_with_special_characters.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_Text-Entering_code_and_text_with_special_characters.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_Text-Entering_code_and_text_with_special_characters.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>14.2. Entering code and text with special characters</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Seam_Text.html" title="Chapter 14. Seam Text" /><link rel="prev" href="Seam_Reference_Guide-Seam_Text.html" title="Chapter 14. Seam Text" /><link rel="next" href="Seam_Reference_Guide-Seam_Text-Links.html" title="14.3. Links" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src=!
 "Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_Text.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_Text-Links.html"><strong>Next</strong></a></li></ul><div class="section" title="14.2. Entering code and text with special characters"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_Text-Entering_code_and_text_with_special_characters">14.2. Entering code and text with special characters</h2></div></div></div><div class="para">
+			Special characters such as <code class="literal">*</code>, <code class="literal">|</code> and <code class="literal">#</code>, along with HTML characters such as <code class="literal">&lt;</code>, <code class="literal">&gt;</code> and <code class="literal">&amp;</code> may be escaped using <code class="literal">\</code>:
+		</div><pre class="programlisting">You can write down equations like 2\*3\=6 and HTML tags
+like \&lt;body\&gt; using the escape character: \\.
+</pre><pre class="programlisting">&lt;p&gt;
+You can write down equations like 2*3=6 and HTML tags
+like &lt;body&gt; using the escape character: \.
+&lt;/p&gt;
+</pre><div class="para">
+			And we can quote code blocks using backticks:
+		</div><pre class="programlisting">My code doesn't work:
+
+`for (int i=0; i&lt;100; i--)
+{
+    doSomething();
+}`
+
+Any ideas?
+</pre><pre class="programlisting">&lt;p&gt;
+My code doesn't work:
+&lt;/p&gt;
+
+&lt;pre&gt;for (int i=0; i&lt;100; i--)
+{
+    doSomething();
+}&lt;/pre&gt;
+
+&lt;p&gt;
+Any ideas?
+&lt;/p&gt;
+</pre></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_Text.html"><strong>Prev</strong>Chapter 14. Seam Text</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_Text-Links.html"><strong>Next</strong>14.3. Links</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_Text-Links.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_Text-Links.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_Text-Links.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>14.3. Links</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Seam_Text.html" title="Chapter 14. Seam Text" /><link rel="prev" href="Seam_Reference_Guide-Seam_Text-Entering_code_and_text_with_special_characters.html" title="14.2. Entering code and text with special characters" /><link rel="next" href="Seam_Reference_Guide-Seam_Text-Entering_HTML.html" title="14.4. Entering HTML" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a!
  class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_Text-Entering_code_and_text_with_special_characters.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_Text-Entering_HTML.html"><strong>Next</strong></a></li></ul><div class="section" title="14.3. Links"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_Text-Links">14.3. Links</h2></div></div></div><div class="para">
+			A link may be created using the following syntax:
+		</div><pre class="programlisting">Go to the Seam website at [=&gt;http://jboss.com/products/seam].
+</pre><div class="para">
+			Or, if you want to specify the text of the link:
+		</div><pre class="programlisting">Go to [the Seam website=&gt;http://jboss.com/products/seam].
+</pre><div class="para">
+			For advanced users, it is even possible to customize the Seam Text parser to understand wikiword links written using this syntax.
+		</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_Text-Entering_code_and_text_with_special_characters.html"><strong>Prev</strong>14.2. Entering code and text with special charact...</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_Text-Entering_HTML.html"><strong>Next</strong>14.4. Entering HTML</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_Text.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_Text.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_Text.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 14. Seam Text</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="index.html" title="Seam Reference Guide CP07" /><link rel="prev" href="Seam_Reference_Guide-Internationalization_and_themes-Persisting_locale_and_theme_preferences_via_cookies.html" title="13.5. Persisting locale and theme preferences via cookies" /><link rel="next" href="Seam_Reference_Guide-Seam_Text-Entering_code_and_text_with_special_characters.html" title="14.2. Entering code and text with special characters" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat!
 .com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Internationalization_and_themes-Persisting_locale_and_theme_preferences_via_cookies.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_Text-Entering_code_and_text_with_special_characters.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="chapter" title="Chapter 14. Seam Text" lang="en-US"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_Text">Chapter 14. Seam Text</h2></div></div></div><div class="toc"><dl><dt><span class="section"><a href="Seam_Reference_Guide-Seam_Text.html#Seam_Reference_Guide-Seam_Text-Basic_fomatting">14.1. Basic fomatting</a></span></dt><dt><span class="se!
 ction"><a href="Seam_Reference_Guide-Seam_Text-Entering_code_a!
 nd_text_
with_special_characters.html">14.2. Entering code and text with special characters</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Seam_Text-Links.html">14.3. Links</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Seam_Text-Entering_HTML.html">14.4. Entering HTML</a></span></dt></dl></div><div class="para">
+		Collaboration-oriented websites require a human-friendly markup language for easy entry of formatted text in forum posts, wiki pages, blogs, comments, etc. Seam provides the <code class="literal">&lt;s:formattedText/&gt;</code> control for display of formatted text that conforms to the <span class="emphasis"><em>Seam Text</em></span> language. Seam Text is implemented using an ANTLR-based parser. You do not need to know anything about ANTLR to use it, however.
+	</div><div class="section" title="14.1. Basic fomatting"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_Text-Basic_fomatting">14.1. Basic fomatting</h2></div></div></div><div class="para">
+			Here is a simple example:
+		</div><pre class="programlisting">It's easy to make *bold text*, /italic text/, |monospace|, 
+~deleted text~, super^scripts^ or _underlines_.
+</pre><div class="para">
+			If we display this using <code class="literal">&lt;s:formattedText/&gt;</code>, we will get the following HTML produced:
+		</div><pre class="programlisting">&lt;p&gt;
+It's easy to make &lt;b&gt;bold text&lt;/b&gt;, &lt;i&gt;italic text&lt;/i&gt;, &lt;tt&gt;monospace&lt;/tt&gt;
+&lt;del&gt;deleted text&lt;/del&gt;, super&lt;sup&gt;scripts&lt;/sup&gt; or &lt;u&gt;underlines&lt;/u&gt;.
+&lt;/p&gt;
+</pre><div class="para">
+			We can use a blank line to indicate a new paragraph, and <code class="literal">+</code> to indicate a heading:
+		</div><pre class="programlisting">+This is a big heading
+You /must/ have some text following a heading!
+ 
+++This is a smaller heading
+This is the first paragraph. We can split it across multiple 
+lines, but we must end it with a blank line.
+
+This is the second paragraph.
+</pre><div class="para">
+			A simple newline is ignored, you need an additional blank line to wrap text into a new paragraph. This is the HTML that results:
+		</div><pre class="programlisting">&lt;h1&gt;This is a big heading&lt;/h1&gt;
+&lt;p&gt;
+You &lt;i&gt;must&lt;/i&gt; have some text following a heading!
+&lt;/p&gt;
+ 
+&lt;h2&gt;This is a smaller heading&lt;/h2&gt;
+&lt;p&gt;
+This is the first paragraph. We can split it across multiple 
+lines, but we must end it with a blank line.
+&lt;/p&gt;
+
+&lt;p&gt;
+This is the second paragraph.
+&lt;/p&gt;
+</pre><div class="para">
+			Ordered lists are created using the <code class="literal">#</code> character. Unordered lists use the <code class="literal">=</code> character:
+		</div><pre class="programlisting">An ordered list:
+        
+#first item
+#second item
+#and even the /third/ item
+
+An unordered list:
+
+=an item
+=another item
+</pre><pre class="programlisting">&lt;p&gt;
+An ordered list:
+&lt;/p&gt;
+ 
+&lt;ol&gt;       
+&lt;li&gt;first item&lt;/li&gt;
+&lt;li&gt;second item&lt;/li&gt;
+&lt;li&gt;and even the &lt;i&gt;third&lt;/i&gt; item&lt;/li&gt;
+&lt;/ol&gt;
+
+&lt;p&gt;
+An unordered list:
+&lt;/p&gt;
+
+&lt;ul&gt;
+&lt;li&gt;an item&lt;/li&gt;
+&lt;li&gt;another item&lt;/li&gt;
+&lt;/ul&gt;
+</pre><div class="para">
+			Quoted sections should be surrounded in double quotes:
+		</div><pre class="programlisting">The other guy said:
+        
+"Nyeah nyeah-nee 
+/nyeah/ nyeah!"
+
+But what do you think he means by "nyeah-nee"?
+</pre><pre class="programlisting">&lt;p&gt;
+The other guy said:
+&lt;/p&gt;
+        
+&lt;q&gt;Nyeah nyeah-nee
+&lt;i&gt;nyeah&lt;/i&gt; nyeah!&lt;/q&gt;
+
+&lt;p&gt;
+But what do you think he means by &lt;q&gt;nyeah-nee&lt;/q&gt;?
+&lt;/p&gt;
+</pre></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Internationalization_and_themes-Persisting_locale_and_theme_preferences_via_cookies.html"><strong>Prev</strong>13.5. Persisting locale and theme preferences via...</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_Text-Entering_code_and_text_with_special_characters.html"><strong>Next</strong>14.2. Entering code and text with special charact...</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_Tutorial-A_RESTful_Seam_application_the_Blog_example.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_Tutorial-A_RESTful_Seam_application_the_Blog_example.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_Tutorial-A_RESTful_Seam_application_the_Blog_example.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>2.10. A RESTful Seam application: the Blog example</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Seam_Tutorial.html" title="Chapter 2. Seam Tutorial" /><link rel="prev" href="Seam_Reference_Guide-Seam_Tutorial-An_example_of_Seam_with_Hibernate_the_Hibernate_Booking_example.html" title="2.9. An example of Seam with Hibernate: the Hibernate Booking example" /><link rel="next" href="Seam_Reference_Guide-A_RESTful_Seam_application_the_Blog_example-Bookmarkable_search_results_page.html" title="2.10.2. Bookmarkable search results page" /></h!
 ead><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_Tutorial-An_example_of_Seam_with_Hibernate_the_Hibernate_Booking_example.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-A_RESTful_Seam_application_the_Blog_example-Bookmarkable_search_results_page.html"><strong>Next</strong></a></li></ul><div class="section" title="2.10. A RESTful Seam application: the Blog example"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_Tutorial-A_RESTful_Seam_application_the_Blog_example">2.10. A RESTful Seam application: the Blog example</h2></div></div></div><div class="para">
+			Seam makes it very easy to implement applications which keep state on the server-side. However, server-side state is not always appropriate, especially in for functionality that serves up <span class="emphasis"><em>content</em></span>. For this kind of problem we often need to let the user bookmark pages and have a relatively stateless server, so that any page can be accessed at any time, via the bookmark. The Blog example shows how to a implement RESTful application using Seam. Every page of the application can be bookmarked, including the search results page.
+		</div><div class="screenshot"><div class="mediaobject" align="center"><img src="images/blog.png" align="middle" width="444" /></div></div><div class="para">
+			The Blog example demonstrates the use of "pull"-style MVC, where instead of using action listener methods to retrieve data and prepare the data for the view, the view pulls data from components as it is being rendered.
+		</div><div class="section" title="2.10.1. Using &quot;pull&quot;-style MVC"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-A_RESTful_Seam_application_the_Blog_example-Using_pull_style_MVC">2.10.1. Using "pull"-style MVC</h3></div></div></div><div class="para">
+				This snippet from the <code class="literal">index.xhtml</code> facelets page displays a list of recent blog entries:
+			</div><div class="example" id="id2764280"><div class="example-contents"><pre class="programlisting">&lt;h:dataTable value="#{blog.recentBlogEntries}" var="blogEntry" rows="3"&gt;
+   &lt;h:column&gt;
+      &lt;div class="blogEntry"&gt;
+         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;
+         &lt;div&gt;
+            &lt;h:outputText escape="false" 
+                  value="#{blogEntry.excerpt==null ? blogEntry.body : blogEntry.excerpt}"/&gt;
+         &lt;/div&gt;
+         &lt;p&gt;
+            &lt;h:outputLink value="entry.seam" rendered="#{blogEntry.excerpt!=null}"&gt;
+               &lt;f:param name="blogEntryId" value="#{blogEntry.id}"/&gt;
+               Read more...
+            &lt;/h:outputLink&gt;
+         &lt;/p&gt;
+         &lt;p&gt;
+            [Posted on 
+            &lt;h:outputText value="#{blogEntry.date}"&gt;
+               &lt;f:convertDateTime timeZone="#{blog.timeZone}" locale="#{blog.locale}" 
+                                     type="both"/&gt;
+            &lt;/h:outputText&gt;]
+             
+            &lt;h:outputLink value="entry.seam"&gt;[Link]
+               &lt;f:param name="blogEntryId" value="#{blogEntry.id}"/&gt;
+            &lt;/h:outputLink&gt;
+         &lt;/p&gt;
+      &lt;/div&gt;
+   &lt;/h:column&gt;
+&lt;/h:dataTable&gt;
+</pre></div><h6>Example 2.16. </h6></div><br class="example-break" /><div class="para">
+				If we navigate to this page from a bookmark, how does the data used by the <code class="literal">&lt;h:dataTable&gt;</code> actually get initialized? Well, what happens is that the <code class="literal">Blog</code> is retrieved lazily—"pulled"—when needed, by a Seam component named <code class="literal">blog</code>. This is the opposite flow of control to what is usual in traditional web action-based frameworks like Struts.
+			</div><div class="example" id="id2764329"><div class="example-contents"><pre class="programlisting">@Name("blog")
+ at Scope(ScopeType.STATELESS)
+public class BlogService 
+{
+   
+   @In
+   private EntityManager entityManager;
+  
+   @Unwrap
+   public Blog getBlog()
+   {
+      return (Blog) entityManager.createQuery("from Blog b left join fetch b.blogEntries")
+            .setHint("org.hibernate.cacheable", true)
+            .getSingleResult();
+   }
+
+}
+</pre><div class="orderedlist"><ol><li class="listitem"><div class="para">
+							This component uses a <span class="emphasis"><em>seam-managed persistence context</em></span>. Unlike the other examples we have seen, this persistence context is managed by Seam, instead of by the EJB3 container. The persistence context spans the entire web request, allowing us to avoid any exceptions that occur when accessing unfetched associations in the view.
+						</div></li><li class="listitem"><div class="para">
+							The <code class="literal">@Unwrap</code> annotation tells Seam to provide the return value of the method—the <code class="literal">Blog</code>—instead of the actual <code class="literal">BlogService</code> component to clients. This is the Seam <span class="emphasis"><em>manager component pattern</em></span>.
+						</div></li></ol></div></div><h6>Example 2.17. </h6></div><br class="example-break" /><div class="para">
+				This is good so far, but what about bookmarking the result of form submissions, such as a search results page?
+			</div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_Tutorial-An_example_of_Seam_with_Hibernate_the_Hibernate_Booking_example.html"><strong>Prev</strong>2.9. An example of Seam with Hibernate: the Hiber...</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-A_RESTful_Seam_application_the_Blog_example-Bookmarkable_search_results_page.html"><strong>Next</strong>2.10.2. Bookmarkable search results page</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_Tutorial-A_complete_Seam_application_the_Hotel_Booking_example.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_Tutorial-A_complete_Seam_application_the_Hotel_Booking_example.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_Tutorial-A_complete_Seam_application_the_Hotel_Booking_example.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>2.6. A complete Seam application: the Hotel Booking example</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Seam_Tutorial.html" title="Chapter 2. Seam Tutorial" /><link rel="prev" href="Seam_Reference_Guide-Seam_Tutorial-Seam_pageflow_the_numberguess_example.html" title="2.5. Seam pageflow: the numberguess example" /><link rel="next" href="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-Overview_of_the_booking_example.html" title="2.6.2. Overview of the booking example" /></head><body class=""><p id="title"><a !
 class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_Tutorial-Seam_pageflow_the_numberguess_example.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-Overview_of_the_booking_example.html"><strong>Next</strong></a></li></ul><div class="section" title="2.6. A complete Seam application: the Hotel Booking example"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_Tutorial-A_complete_Seam_application_the_Hotel_Booking_example">2.6. A complete Seam application: the Hotel Booking example</h2></div></div></div><div class="section" title="2.6.1. Introduction"><div class=!
 "titlepage"><div><div><h3 class="title" id="Seam_Reference_Gui!
 de-A_com
plete_Seam_application_the_Hotel_Booking_example-Introduction">2.6.1. Introduction</h3></div></div></div><div class="para">
+				The booking application is a complete hotel room reservation system incorporating the following features:
+			</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+						User registration
+					</div></li><li class="listitem"><div class="para">
+						Login
+					</div></li><li class="listitem"><div class="para">
+						Logout
+					</div></li><li class="listitem"><div class="para">
+						Set password
+					</div></li><li class="listitem"><div class="para">
+						Hotel search
+					</div></li><li class="listitem"><div class="para">
+						Hotel selection
+					</div></li><li class="listitem"><div class="para">
+						Room reservation
+					</div></li><li class="listitem"><div class="para">
+						Reservation confirmation
+					</div></li><li class="listitem"><div class="para">
+						Existing reservation list
+					</div></li></ul></div><div class="para">
+				<div class="figure" id="Booking_Image"><div class="figure-contents"><div class="mediaobject" align="center"><img src="images/booking.png" align="middle" width="444" alt="Booking Example" /></div></div><h6>Figure 2.1. Booking Example</h6></div><br class="figure-break" />
+			</div><div class="para">
+				The booking application uses JSF, EJB 3.0 and Seam, together with Facelets for the view. There is also a port of this application to JSF, Facelets, Seam, JavaBeans and Hibernate3.
+			</div><div class="para">
+				One of the things you will notice if you play with this application for long enough is that it is extremely <span class="emphasis"><em>robust</em></span>. You can play with back buttons and browser refresh and opening multiple windows and entering nonsensical data as much as you like and you will find it very difficult to make the application crash. You might think that we spent weeks testing and fixing bugs to achive this. Actually, this is not the case. Seam was designed to make it very straightforward to build robust web applications and a lot of robustness that you are probably used to having to code yourself comes naturally and automatically with Seam.
+			</div><div class="para">
+				As you browse the sourcecode of the example application, and learn how the application works, observe how the declarative state management and integrated validation has been used to achieve this robustness.
+			</div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_Tutorial-Seam_pageflow_the_numberguess_example.html"><strong>Prev</strong>2.5. Seam pageflow: the numberguess example</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-Overview_of_the_booking_example.html"><strong>Next</strong>2.6.2. Overview of the booking example</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_Tutorial-A_complete_application_featuring_Seam_and_jBPM_the_DVD_Store_example.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_Tutorial-A_complete_application_featuring_Seam_and_jBPM_the_DVD_Store_example.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_Tutorial-A_complete_application_featuring_Seam_and_jBPM_the_DVD_Store_example.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>2.7. A complete application featuring Seam and jBPM: the DVD Store example</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Seam_Tutorial.html" title="Chapter 2. Seam Tutorial" /><link rel="prev" href="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-The_Seam_Debug_Page.html" title="2.6.5. The Seam Debug Page" /><link rel="next" href="Seam_Reference_Guide-Seam_Tutorial-A_complete_application_featuring_Seam_workspace_management_the_Issue_Tracker_example.html" title="2.8. A complete application featuring Seam works!
 pace management: the Issue Tracker example" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-The_Seam_Debug_Page.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_Tutorial-A_complete_application_featuring_Seam_workspace_management_the_Issue_Tracker_example.html"><strong>Next</strong></a></li></ul><div class="section" title="2.7. A complete application featuring Seam and jBPM: the DVD Store example"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_Tutorial-A_complete_application_featuring_Seam_and_jBPM_the_DVD_Store_exa!
 mple">2.7. A complete application featuring Seam and jBPM: th!
 e DVD St
ore example</h2></div></div></div><div class="para">
+			The DVD Store demo application shows the practical usage of jBPM for both task management and pageflow.
+		</div><div class="para">
+			The user screens take advantage of a jPDL pageflow to implement searching and shopping cart functionality.
+		</div><div class="screenshot"><div class="mediaobject" align="center"><img src="images/dvdsearch.png" align="middle" width="444" /></div></div><div class="para">
+			The administration screens take use jBPM to manage the approval and shipping cycle for orders. The business process may even be changed dynamically, by selecting a different process definition!
+		</div><div class="screenshot"><div class="mediaobject" align="center"><img src="images/dvdtasks.png" align="middle" width="444" /></div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-The_Seam_Debug_Page.html"><strong>Prev</strong>2.6.5. The Seam Debug Page</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_Tutorial-A_complete_application_featuring_Seam_workspace_management_the_Issue_Tracker_example.html"><strong>Next</strong>2.8. A complete application featuring Seam worksp...</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_Tutorial-A_complete_application_featuring_Seam_workspace_management_the_Issue_Tracker_example.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_Tutorial-A_complete_application_featuring_Seam_workspace_management_the_Issue_Tracker_example.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_Tutorial-A_complete_application_featuring_Seam_workspace_management_the_Issue_Tracker_example.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>2.8. A complete application featuring Seam workspace management: the Issue Tracker example</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Seam_Tutorial.html" title="Chapter 2. Seam Tutorial" /><link rel="prev" href="Seam_Reference_Guide-Seam_Tutorial-A_complete_application_featuring_Seam_and_jBPM_the_DVD_Store_example.html" title="2.7. A complete application featuring Seam and jBPM: the DVD Store example" /><link rel="next" href="Seam_Reference_Guide-Seam_Tutorial-An_example_of_Seam_with_Hibernate_the_Hibernate_Booking_example.html" titl!
 e="2.9. An example of Seam with Hibernate: the Hibernate Booking example" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_Tutorial-A_complete_application_featuring_Seam_and_jBPM_the_DVD_Store_example.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_Tutorial-An_example_of_Seam_with_Hibernate_the_Hibernate_Booking_example.html"><strong>Next</strong></a></li></ul><div class="section" title="2.8. A complete application featuring Seam workspace management: the Issue Tracker example"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_Tutorial-A_complete_application_featur!
 ing_Seam_workspace_management_the_Issue_Tracker_example">2.8.Â!
  A compl
ete application featuring Seam workspace management: the Issue Tracker example</h2></div></div></div><div class="para">
+			The Issue Tracker demo shows off Seam's workspace management functionality: the conversation switcher, conversation list and breadcrumbs.
+		</div><div class="para">
+			<div class="note"><h2>Note</h2><div class="para">
+					To log into the Issue Tracker demo you must provide a username and password. You can find this in the <code class="filename">resources/import.sql</code> file or use "gavin" and "foobar" for username and password respectively.
+				</div></div>
+		</div><div class="screenshot"><div class="mediaobject" align="center"><img src="images/issues.png" align="middle" width="444" /></div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_Tutorial-A_complete_application_featuring_Seam_and_jBPM_the_DVD_Store_example.html"><strong>Prev</strong>2.7. A complete application featuring Seam and jB...</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_Tutorial-An_example_of_Seam_with_Hibernate_the_Hibernate_Booking_example.html"><strong>Next</strong>2.9. An example of Seam with Hibernate: the Hiber...</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_Tutorial-An_example_of_Seam_with_Hibernate_the_Hibernate_Booking_example.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_Tutorial-An_example_of_Seam_with_Hibernate_the_Hibernate_Booking_example.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_Tutorial-An_example_of_Seam_with_Hibernate_the_Hibernate_Booking_example.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>2.9. An example of Seam with Hibernate: the Hibernate Booking example</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Seam_Tutorial.html" title="Chapter 2. Seam Tutorial" /><link rel="prev" href="Seam_Reference_Guide-Seam_Tutorial-A_complete_application_featuring_Seam_workspace_management_the_Issue_Tracker_example.html" title="2.8. A complete application featuring Seam workspace management: the Issue Tracker example" /><link rel="next" href="Seam_Reference_Guide-Seam_Tutorial-A_RESTful_Seam_application_the_Blog_example.html" title="2.10.Â!
  A RESTful Seam application: the Blog example" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_Tutorial-A_complete_application_featuring_Seam_workspace_management_the_Issue_Tracker_example.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_Tutorial-A_RESTful_Seam_application_the_Blog_example.html"><strong>Next</strong></a></li></ul><div class="section" title="2.9. An example of Seam with Hibernate: the Hibernate Booking example"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_Tutorial-An_example_of_Seam_with_Hibernate_the_Hibernate_Booking_example">2.9. An example !
 of Seam with Hibernate: the Hibernate Booking example</h2></di!
 v></div>
</div><div class="para">
+			The Hibernate Booking demo is a straight port of the Booking demo to an alternative architecture that uses Hibernate for persistence and JavaBeans instead of session beans.
+		</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_Tutorial-A_complete_application_featuring_Seam_workspace_management_the_Issue_Tracker_example.html"><strong>Prev</strong>2.8. A complete application featuring Seam worksp...</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_Tutorial-A_RESTful_Seam_application_the_Blog_example.html"><strong>Next</strong>2.10. A RESTful Seam application: the Blog example</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_Tutorial-Clickable_lists_in_Seam_the_messages_example.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_Tutorial-Clickable_lists_in_Seam_the_messages_example.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_Tutorial-Clickable_lists_in_Seam_the_messages_example.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,182 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>2.3. Clickable lists in Seam: the messages example</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Seam_Tutorial.html" title="Chapter 2. Seam Tutorial" /><link rel="prev" href="Seam_Reference_Guide-Your_first_Seam_application_the_registration_example-How_it_works.html" title="2.2.2. How it works" /><link rel="next" href="Seam_Reference_Guide-Clickable_lists_in_Seam_the_messages_example-How_it_works.html" title="2.3.2. How it works" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Co!
 ntent/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Your_first_Seam_application_the_registration_example-How_it_works.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Clickable_lists_in_Seam_the_messages_example-How_it_works.html"><strong>Next</strong></a></li></ul><div class="section" title="2.3. Clickable lists in Seam: the messages example"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_Tutorial-Clickable_lists_in_Seam_the_messages_example">2.3. Clickable lists in Seam: the messages example</h2></div></div></div><div class="para">
+			Clickable lists of database search results are such an important part of any online application that Seam provides special functionality on top of JSF to make it easier to query data using EJB-QL or HQL and display it as a clickable list using a JSF <code class="literal">&lt;h:dataTable&gt;</code>. The messages example demonstrates this functionality.
+		</div><div class="mediaobject" align="center"><img src="images/messages.png" align="middle" width="444" /></div><div class="section" title="2.3.1. Understanding the code"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Clickable_lists_in_Seam_the_messages_example-Understanding_the_code">2.3.1. Understanding the code</h3></div></div></div><div class="para">
+				The message list example has one entity bean, <code class="literal">Message</code>, one session bean, <code class="literal">MessageListBean</code> and one JSP.
+			</div><div class="section" title="2.3.1.1. The entity bean: Message.java"><div class="titlepage"><div><div><h4 class="title" id="Seam_Reference_Guide-Understanding_the_code-The_entity_bean_Message.java">2.3.1.1. The entity bean: <code class="literal">Message.java</code></h4></div></div></div><div class="para">
+					The <code class="literal">Message</code> entity defines the title, text, date and time of a message, and a flag indicating whether the message has been read:
+				</div><pre class="programlisting">@Entity
+ at Name("message")
+ at Scope(EVENT)
+public class Message implements Serializable
+{
+   private Long id;
+   private String title;
+   private String text;
+   private boolean read;
+   private Date datetime;
+   
+   @Id @GeneratedValue
+   public Long getId() {
+      return id;
+   }
+   public void setId(Long id) {
+      this.id = id;
+   }
+   
+   @NotNull @Length(max=100)
+   public String getTitle() {
+      return title;
+   }
+   public void setTitle(String title) {
+      this.title = title;
+   }
+   
+   @NotNull @Lob
+   public String getText() {
+      return text;
+   }
+   public void setText(String text) {
+      this.text = text;
+   }
+   
+   @NotNull
+   public boolean isRead() {
+      return read;
+   }
+   public void setRead(boolean read) {
+      this.read = read;
+   }
+   
+   @NotNull 
+   @Basic @Temporal(TemporalType.TIMESTAMP)
+   public Date getDatetime() {
+      return datetime;
+   }
+   public void setDatetime(Date datetime) {
+      this.datetime = datetime;
+   }
+   
+}
+</pre></div><div class="section" title="2.3.1.2. The stateful session bean: MessageManagerBean.java"><div class="titlepage"><div><div><h4 class="title" id="Seam_Reference_Guide-Understanding_the_code-The_stateful_session_bean_MessageManagerBean.java">2.3.1.2. The stateful session bean: <code class="literal">MessageManagerBean.java</code></h4></div></div></div><div class="para">
+					Just like in the previous example, we have a session bean, <code class="literal">MessageManagerBean</code>, which defines the action listener methods for the two buttons on our form. One of the buttons selects a message from the list, and displays that message. The other button deletes a message. So far, this is not so different to the previous example.
+				</div><div class="para">
+					But <code class="literal">MessageManagerBean</code> is also responsible for fetching the list of messages the first time we navigate to the message list page. There are various ways the user could navigate to the page, and not all of them are preceded by a JSF action—the user might have bookmarked the page, for example. So the job of fetching the message list takes place in a Seam <span class="emphasis"><em>factory method</em></span>, instead of in an action listener method.
+				</div><div class="para">
+					We want to cache the list of messages in memory between server requests, so we will make this a stateful session bean.
+				</div><pre class="programlisting">@Stateful
+ at Scope(SESSION)
+ at Name("messageManager")
+public class MessageManagerBean implements Serializable, MessageManager
+{
+
+   @DataModel
+   private List&lt;Message&gt; messageList;
+   
+   @DataModelSelection
+   @Out(required=false)
+   private Message message;
+   
+   @PersistenceContext(type=EXTENDED)
+   private EntityManager em;
+   
+   @Factory("messageList")
+   public void findMessages()
+   {
+      messageList = em.createQuery("from Message msg order by msg.datetime desc").getResultList();
+   }
+   
+   public void select()
+   {
+      message.setRead(true);
+   }
+   
+   public void delete()
+   {
+      messageList.remove(message);
+      em.remove(message);
+      message=null;
+   }
+   
+   @Remove @Destroy
+   public void destroy() {}
+
+}
+</pre><div class="orderedlist"><ol><li class="listitem"><div class="para">
+							The <code class="literal">@DataModel</code> annotation exposes an attibute of type <code class="literal">java.util.List</code> to the JSF page as an instance of <code class="literal">javax.faces.model.DataModel</code>. This allows us to use the list in a JSF <code class="literal">&lt;h:dataTable&gt;</code> with clickable links for each row. In this case, the <code class="literal">DataModel</code> is made available in a session context variable named <code class="literal">messageList</code>.
+						</div></li><li class="listitem"><div class="para">
+							The <code class="literal">@DataModelSelection</code> annotation tells Seam to inject the <code class="literal">List</code> element that corresponded to the clicked link.
+						</div></li><li class="listitem"><div class="para">
+							The <code class="literal">@Out</code> annotation then exposes the selected value directly to the page. So every time a row of the clickable list is selected, the <code class="literal">Message</code> is injected to the attribute of the stateful bean, and the subsequently <span class="emphasis"><em>outjected</em></span> to the event context variable named <code class="literal">message</code>.
+						</div></li><li class="listitem"><div class="para">
+							This stateful bean has an EJB3 <span class="emphasis"><em>extended persistence context</em></span>. The messages retrieved in the query remain in the managed state as long as the bean exists, so any subsequent method calls to the stateful bean can update them without needing to make any explicit call to the <code class="literal">EntityManager</code>.
+						</div></li><li class="listitem"><div class="para">
+							The first time we navigate to the JSP page, there will be no value in the <code class="literal">messageList</code> context variable. The <code class="literal">@Factory</code> annotation tells Seam to create an instance of <code class="literal">MessageManagerBean</code> and invoke the <code class="literal">findMessages()</code> method to initialize the value. We call <code class="literal">findMessages()</code> a <span class="emphasis"><em>factory method</em></span> for <code class="literal">messages</code>.
+						</div></li><li class="listitem"><div class="para">
+							The <code class="literal">select()</code> action listener method marks the selected <code class="literal">Message</code> as read, and updates it in the database.
+						</div></li><li class="listitem"><div class="para">
+							The <code class="literal">delete()</code> action listener method removes the selected <code class="literal">Message</code> from the database.
+						</div></li><li class="listitem"><div class="para">
+							All stateful session bean Seam components <span class="emphasis"><em>must</em></span> have a method marked <code class="literal">@Remove @Destroy</code> to ensure that Seam will remove the stateful bean when the Seam context ends, and clean up any server-side state.
+						</div></li></ol></div><div class="para">
+					Note that this is a session-scoped Seam component. It is associated with the user login session, and all requests from a login session share the same instance of the component. (In Seam applications, we usually use session-scoped components sparingly.)
+				</div></div><div class="section" title="2.3.1.3. The session bean local interface: MessageManager.java"><div class="titlepage"><div><div><h4 class="title" id="Seam_Reference_Guide-Understanding_the_code-The_session_bean_local_interface_MessageManager.java">2.3.1.3. The session bean local interface: <code class="literal">MessageManager.java</code></h4></div></div></div><div class="para">
+					All session beans have a business interface, of course.
+				</div><pre class="programlisting">@Local
+public interface MessageManager
+{
+   public void findMessages();
+   public void select();
+   public void delete();
+   public void destroy();
+}
+</pre><div class="para">
+					From now on, we will not show local interfaces in our code examples.
+				</div><div class="para">
+					Let us skip over <code class="literal">components.xml</code>, <code class="literal">persistence.xml</code>, <code class="literal">web.xml</code>, <code class="literal">ejb-jar.xml</code>, <code class="literal">faces-config.xml</code> and <code class="literal">application.xml</code> since they are much the same as the previous example, and go straight to the JSP.
+				</div></div><div class="section" title="2.3.1.4. The view: messages.jsp"><div class="titlepage"><div><div><h4 class="title" id="Seam_Reference_Guide-Understanding_the_code-The_view_messages.jsp">2.3.1.4. The view: <code class="literal">messages.jsp</code></h4></div></div></div><div class="para">
+					The JSP page is a straightforward use of the JSF <code class="literal">&lt;h:dataTable&gt;</code> component. Again, nothing specific to Seam.
+				</div><div class="example" id="id2761231"><div class="example-contents"><pre class="programlisting">&lt;%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %&gt;
+&lt;%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %&gt;
+&lt;html&gt;
+ &lt;head&gt;
+  &lt;title&gt;Messages&lt;/title&gt;
+ &lt;/head&gt;
+ &lt;body&gt;
+  &lt;f:view&gt;
+   &lt;h:form&gt;
+     &lt;h2&gt;Message List&lt;/h2&gt;
+     &lt;h:outputText value="No messages to display" rendered="#{messageList.rowCount==0}"/&gt;
+     &lt;h:dataTable var="msg" value="#{messageList}" rendered="#{messageList.rowCount&gt;0}"&gt;
+        &lt;h:column&gt;
+           &lt;f:facet name="header"&gt;
+              &lt;h:outputText value="Read"/&gt;
+           &lt;/f:facet&gt;
+           &lt;h:selectBooleanCheckbox value="#{msg.read}" disabled="true"/&gt;
+        &lt;/h:column&gt;
+        &lt;h:column&gt;
+           &lt;f:facet name="header"&gt;
+              &lt;h:outputText value="Title"/&gt;
+           &lt;/f:facet&gt;
+           &lt;h:commandLink value="#{msg.title}" action="#{messageManager.select}"/&gt;
+        &lt;/h:column&gt;
+        &lt;h:column&gt;
+           &lt;f:facet name="header"&gt;
+              &lt;h:outputText value="Date/Time"/&gt;
+           &lt;/f:facet&gt;
+           &lt;h:outputText value="#{msg.datetime}"&gt;
+              &lt;f:convertDateTime type="both" dateStyle="medium" timeStyle="short"/&gt;
+           &lt;/h:outputText&gt;
+        &lt;/h:column&gt;
+        &lt;h:column&gt;
+           &lt;h:commandButton value="Delete" action="#{messageManager.delete}"/&gt;
+        &lt;/h:column&gt;
+     &lt;/h:dataTable&gt;
+     &lt;h3&gt;&lt;h:outputText value="#{message.title}"/&gt;&lt;/h3&gt;
+     &lt;div&gt;&lt;h:outputText value="#{message.text}"/&gt;&lt;/div&gt;
+   &lt;/h:form&gt;
+  &lt;/f:view&gt;
+ &lt;/body&gt;
+&lt;/html&gt;
+</pre></div><h6>Example 2.8. </h6></div><br class="example-break" /></div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Your_first_Seam_application_the_registration_example-How_it_works.html"><strong>Prev</strong>2.2.2. How it works</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Clickable_lists_in_Seam_the_messages_example-How_it_works.html"><strong>Next</strong>2.3.2. How it works</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_Tutorial-Seam_and_jBPM_the_todo_list_example.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_Tutorial-Seam_and_jBPM_the_todo_list_example.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_Tutorial-Seam_and_jBPM_the_todo_list_example.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,243 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>2.4. Seam and jBPM: the todo list example</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Seam_Tutorial.html" title="Chapter 2. Seam Tutorial" /><link rel="prev" href="Seam_Reference_Guide-Clickable_lists_in_Seam_the_messages_example-How_it_works.html" title="2.3.2. How it works" /><link rel="next" href="Seam_Reference_Guide-Seam_Tutorial-Seam_pageflow_the_numberguess_example.html" title="2.5. Seam pageflow: the numberguess example" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_C!
 ontent/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Clickable_lists_in_Seam_the_messages_example-How_it_works.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_Tutorial-Seam_pageflow_the_numberguess_example.html"><strong>Next</strong></a></li></ul><div class="section" title="2.4. Seam and jBPM: the todo list example"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_Tutorial-Seam_and_jBPM_the_todo_list_example">2.4. Seam and jBPM: the todo list example</h2></div></div></div><div class="para">
+			jBPM provides sophisticated functionality for workflow and task management. To get a small taste of how jBPM integrates with Seam, we will show you a simple <span class="emphasis"><em>todo list</em></span> application. Since managing lists of tasks is such core functionality for jBPM, there is hardly any Java code at all in this example.
+		</div><div class="mediaobject" align="center"><img src="images/todo.png" align="middle" width="444" /></div><div class="section" title="2.4.1. Understanding the code"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Seam_and_jBPM_the_todo_list_example-Understanding_the_code">2.4.1. Understanding the code</h3></div></div></div><div class="para">
+				The center of this example is the jBPM process definition. There are also two JSPs and two trivial JavaBeans (There was no reason to use session beans, since they do not access the database, or have any other transactional behavior). Let us start with the process definition:
+			</div><pre class="programlisting">&lt;process-definition name="todo"&gt;
+   
+   &lt;start-state name="start"&gt;
+      &lt;transition to="todo"/&gt;
+   &lt;/start-state&gt;
+   
+   &lt;task-node name="todo"&gt;
+      &lt;task name="todo" description="#{todoList.description}"&gt;
+         &lt;assignment actor-id="#{actor.id}"/&gt;
+      &lt;/task&gt;
+      &lt;transition to="done"/&gt;
+   &lt;/task-node&gt;
+   
+   &lt;end-state name="done"/&gt;
+   
+&lt;/process-definition&gt;
+</pre><div class="orderedlist"><ol><li class="listitem"><div class="para">
+						The <code class="literal">&lt;start-state&gt;</code> node represents the logical start of the process. When the process starts, it immediately transitions to the <code class="literal">todo</code> node.
+					</div></li><li class="listitem"><div class="para">
+						The <code class="literal">&lt;task-node&gt;</code> node represents a <span class="emphasis"><em>wait state</em></span>, where business process execution pauses, waiting for one or more tasks to be performed.
+					</div></li><li class="listitem"><div class="para">
+						The <code class="literal">&lt;task&gt;</code> element defines a task to be performed by a user. Since there is only one task defined on this node, when it is complete, execution resumes, and we transition to the end state. The task gets its description from a Seam component named <code class="literal">todoList</code> (one of the JavaBeans).
+					</div></li><li class="listitem"><div class="para">
+						Tasks need to be assigned to a user or group of users when they are created. In this case, the task is assigned to the current user, which we get from a built-in Seam component named <code class="literal">actor</code>. Any Seam component may be used to perform task assignment.
+					</div></li><li class="listitem"><div class="para">
+						The <code class="literal">&lt;end-state&gt;</code> node defines the logical end of the business process. When execution reaches this node, the process instance is destroyed.
+					</div></li></ol></div><div class="para">
+				If we view this process definition using the process definition editor provided by JBossIDE, this is what it looks like:
+			</div><div class="mediaobject" align="center"><img src="images/todo-process.png" align="middle" /></div><div class="para">
+				This document defines our <span class="emphasis"><em>business process</em></span> as a graph of nodes. This is the most trivial possible business process: there is one <span class="emphasis"><em>task</em></span> to be performed, and when that task is complete, the business process ends.
+			</div><div class="para">
+				The first JavaBean handles the login screen <code class="literal">login.jsp</code>. Its job is just to initialize the jBPM actor id using the <code class="literal">actor</code> component. (In a real application, it would also need to authenticate the user.)
+			</div><div class="example" id="id2837906"><div class="example-contents"><pre class="programlisting">@Name("login")
+public class Login {
+   
+   @In
+   private Actor actor;
+   
+   private String user;
+
+   public String getUser() {
+      return user;
+   }
+
+   public void setUser(String user) {
+      this.user = user;
+   }
+   
+   public String login()
+   {
+      actor.setId(user);
+      return "/todo.jsp";
+   }
+}
+</pre></div><h6>Example 2.9. </h6></div><br class="example-break" /><div class="para">
+				Here we see the use of <code class="literal">@In</code> to inject the built-in <code class="literal">Actor</code> component.
+			</div><div class="para">
+				The JSP itself is trivial:
+			</div><div class="example" id="id2837939"><div class="example-contents"><pre class="programlisting">&lt;%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%&gt;
+&lt;%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;title&gt;Login&lt;/title&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;h1&gt;Login&lt;/h1&gt;
+&lt;f:view&gt;
+    &lt;h:form&gt;
+      &lt;div&gt;
+        &lt;h:inputText value="#{login.user}"/&gt;
+        &lt;h:commandButton value="Login" action="#{login.login}"/&gt;
+      &lt;/div&gt;
+    &lt;/h:form&gt;
+&lt;/f:view&gt;
+&lt;/body&gt;
+&lt;/html&gt;
+</pre></div><h6>Example 2.10. </h6></div><br class="example-break" /><div class="para">
+				The second JavaBean is responsible for starting business process instances, and ending tasks.
+			</div><div class="example" id="id2837961"><div class="example-contents"><pre class="programlisting">@Name("todoList")
+public class TodoList {
+   
+   private String description;
+   
+   public String getDescription()
+   {
+      return description;
+   }
+
+   public void setDescription(String description) {
+      this.description = description;
+   }
+   
+   @CreateProcess(definition="todo")
+   public void createTodo() {}
+   
+   @StartTask @EndTask
+   public void done() {}
+
+}
+</pre><div class="orderedlist"><ol><li class="listitem"><div class="para">
+							The description property accepts user input form the JSP page, and exposes it to the process definition, allowing the task description to be set.
+						</div></li><li class="listitem"><div class="para">
+							The Seam <code class="literal">@CreateProcess</code> annotation creates a new jBPM process instance for the named process definition.
+						</div></li><li class="listitem"><div class="para">
+							The Seam <code class="literal">@StartTask</code> annotation starts work on a task. The <code class="literal">@EndTask</code> ends the task, and allows the business process execution to resume.
+						</div></li></ol></div></div><h6>Example 2.11. </h6></div><br class="example-break" /><div class="para">
+				In a more realistic example, <code class="literal">@StartTask</code> and <code class="literal">@EndTask</code> would not appear on the same method, because there is usually work to be done using the application in order to complete the task.
+			</div><div class="para">
+				Finally, the meat of the application is in <code class="literal">todo.jsp</code>:
+			</div><div class="example" id="id2838056"><div class="example-contents"><pre class="programlisting">&lt;%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %&gt;
+&lt;%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %&gt;
+&lt;%@ taglib uri="http://jboss.com/products/seam/taglib" prefix="s" %&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;title&gt;Todo List&lt;/title&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;h1&gt;Todo List&lt;/h1&gt;
+&lt;f:view&gt;
+   &lt;h:form id="list"&gt;
+      &lt;div&gt;
+         &lt;h:outputText value="There are no todo items." rendered="#{empty 
+                                       taskInstanceList}"/&gt;
+         &lt;h:dataTable value="#{taskInstanceList}" var="task" rendered="#{not empty 
+                                       taskInstanceList}"&gt;
+            &lt;h:column&gt;
+                &lt;f:facet name="header"&gt;
+                    &lt;h:outputText value="Description"/&gt;
+                &lt;/f:facet&gt;
+                &lt;h:inputText value="#{task.description}"/&gt;
+            &lt;/h:column&gt;
+            &lt;h:column&gt;
+                &lt;f:facet name="header"&gt;
+                    &lt;h:outputText value="Created"/&gt;
+                &lt;/f:facet&gt;
+                &lt;h:outputText value="#{task.taskMgmtInstance.processInstance.start}"&gt;
+                    &lt;f:convertDateTime type="date"/&gt;
+                &lt;/h:outputText&gt;
+            &lt;/h:column&gt;
+            &lt;h:column&gt;
+                &lt;f:facet name="header"&gt;
+                    &lt;h:outputText value="Priority"/&gt;
+                &lt;/f:facet&gt;
+                &lt;h:inputText value="#{task.priority}" style="width: 30"/&gt;
+            &lt;/h:column&gt;
+            &lt;h:column&gt;
+                &lt;f:facet name="header"&gt;
+                    &lt;h:outputText value="Due Date"/&gt;
+                &lt;/f:facet&gt;
+                &lt;h:inputText value="#{task.dueDate}" style="width: 100"&gt;
+                    &lt;f:convertDateTime type="date" dateStyle="short"/&gt;
+                &lt;/h:inputText&gt;
+            &lt;/h:column&gt;
+            &lt;h:column&gt;
+                &lt;s:button value="Done" action="#{todoList.done}" taskInstance="#{task}"/&gt;
+            &lt;/h:column&gt;
+         &lt;/h:dataTable&gt;
+      &lt;/div&gt;
+      &lt;div&gt;
+      &lt;h:messages/&gt;
+      &lt;/div&gt;
+      &lt;div&gt;
+         &lt;h:commandButton value="Update Items" action="update"/&gt;
+      &lt;/div&gt;
+   &lt;/h:form&gt;
+   &lt;h:form id="new"&gt;
+      &lt;div&gt;
+         &lt;h:inputText value="#{todoList.description}"/&gt;
+         &lt;h:commandButton value="Create New Item" action="#{todoList.createTodo}"/&gt;
+      &lt;/div&gt;
+   &lt;/h:form&gt;
+&lt;/f:view&gt;
+&lt;/body&gt;
+&lt;/html&gt;
+</pre></div><h6>Example 2.12. </h6></div><br class="example-break" /><div class="para">
+				Let us take this one piece at a time.
+			</div><div class="para">
+				The page renders a list of tasks, which it gets from a built-in Seam component named <code class="literal">taskInstanceList</code>. The list is defined inside a JSF form.
+			</div><pre class="programlisting">&lt;h:form id="list"&gt;
+   &lt;div&gt;
+      &lt;h:outputText value="There are no todo items." rendered="#{empty taskInstanceList}"/&gt;
+      &lt;h:dataTable value="#{taskInstanceList}" var="task" rendered="#{not empty taskInstanceList}"&gt;
+         ...
+      &lt;/h:dataTable&gt;
+   &lt;/div&gt;
+&lt;/h:form&gt;
+</pre><div class="para">
+				Each element of the list is an instance of the jBPM class <code class="literal">TaskInstance</code>. The following code simply displays the interesting properties of each task in the list. For the description, priority and due date, we use input controls, to allow the user to update these values.
+			</div><pre class="programlisting">&lt;h:column&gt;
+    &lt;f:facet name="header"&gt;
+       &lt;h:outputText value="Description"/&gt;
+    &lt;/f:facet&gt;
+    &lt;h:inputText value="#{task.description}"/&gt;
+&lt;/h:column&gt;
+&lt;h:column&gt;
+    &lt;f:facet name="header"&gt;
+        &lt;h:outputText value="Created"/&gt;
+    &lt;/f:facet&gt;
+    &lt;h:outputText value="#{task.taskMgmtInstance.processInstance.start}"&gt;
+        &lt;f:convertDateTime type="date"/&gt;
+    &lt;/h:outputText&gt;
+&lt;/h:column&gt;
+&lt;h:column&gt;
+    &lt;f:facet name="header"&gt;
+        &lt;h:outputText value="Priority"/&gt;
+    &lt;/f:facet&gt;
+    &lt;h:inputText value="#{task.priority}" style="width: 30"/&gt;
+&lt;/h:column&gt;
+&lt;h:column&gt;
+    &lt;f:facet name="header"&gt;
+        &lt;h:outputText value="Due Date"/&gt;
+    &lt;/f:facet&gt;
+    &lt;h:inputText value="#{task.dueDate}" style="width: 100"&gt;
+        &lt;f:convertDateTime type="date" dateStyle="short"/&gt;
+    &lt;/h:inputText&gt;
+&lt;/h:column&gt;
+</pre><div class="para">
+				This button ends the task by calling the action method annotated <code class="literal">@StartTask @EndTask</code>. It passes the task id to Seam as a request parameter:
+			</div><pre class="programlisting">&lt;h:column&gt;
+    &lt;s:button value="Done" action="#{todoList.done}" taskInstance="#{task}"/&gt;
+&lt;/h:column&gt;
+</pre><div class="para">
+				(Note that this is using a Seam <code class="literal">&lt;s:button&gt;</code> JSF control from the <code class="literal">seam-ui.jar</code> package.)
+			</div><div class="para">
+				This button is used to update the properties of the tasks. When the form is submitted, Seam and jBPM will make any changes to the tasks persistent. There is no need for any action listener method:
+			</div><pre class="programlisting">&lt;h:commandButton value="Update Items" action="update"/&gt;
+</pre><div class="para">
+				A second form on the page is used to create new items, by calling the action method annotated <code class="literal">@CreateProcess</code>.
+			</div><pre class="programlisting">&lt;h:form id="new"&gt;
+    &lt;div&gt;
+        &lt;h:inputText value="#{todoList.description}"/&gt;
+        &lt;h:commandButton value="Create New Item" action="#{todoList.createTodo}"/&gt;
+    &lt;/div&gt;
+&lt;/h:form&gt;
+</pre><div class="para">
+				There are several other files needed for the example, but they are just standard jBPM and Seam configuration and not very interesting.
+			</div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Clickable_lists_in_Seam_the_messages_example-How_it_works.html"><strong>Prev</strong>2.3.2. How it works</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_Tutorial-Seam_pageflow_the_numberguess_example.html"><strong>Next</strong>2.5. Seam pageflow: the numberguess example</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_Tutorial-Seam_pageflow_the_numberguess_example.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_Tutorial-Seam_pageflow_the_numberguess_example.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_Tutorial-Seam_pageflow_the_numberguess_example.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,195 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>2.5. Seam pageflow: the numberguess example</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Seam_Tutorial.html" title="Chapter 2. Seam Tutorial" /><link rel="prev" href="Seam_Reference_Guide-Seam_Tutorial-Seam_and_jBPM_the_todo_list_example.html" title="2.4. Seam and jBPM: the todo list example" /><link rel="next" href="Seam_Reference_Guide-Seam_Tutorial-A_complete_Seam_application_the_Hotel_Booking_example.html" title="2.6. A complete Seam application: the Hotel Booking example" /></head><body class=""><p id="title"><a class="left" href!
 ="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_Tutorial-Seam_and_jBPM_the_todo_list_example.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_Tutorial-A_complete_Seam_application_the_Hotel_Booking_example.html"><strong>Next</strong></a></li></ul><div class="section" title="2.5. Seam pageflow: the numberguess example"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_Tutorial-Seam_pageflow_the_numberguess_example">2.5. Seam pageflow: the numberguess example</h2></div></div></div><div class="para">
+			For Seam applications with relatively freeform (ad hoc) navigation, JSF/Seam navigation rules are a perfectly good way to define the page flow. For applications with a more constrained style of navigation, especially for user interfaces which are more stateful, navigation rules make it difficult to really understand the flow of the system. To understand the flow, you need to piece it together from the view pages, the actions and the navigation rules.
+		</div><div class="para">
+			Seam allows you to use a jPDL process definition to define pageflow. The simple number guessing example shows how this is done.
+		</div><div class="mediaobject" align="center"><img src="images/numberguess.png" align="middle" width="444" /></div><div class="section" title="2.5.1. Understanding the code"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Seam_pageflow_the_numberguess_example-Understanding_the_code">2.5.1. Understanding the code</h3></div></div></div><div class="para">
+				The example is implemented using one JavaBean, three JSP pages and a jPDL pageflow definition. Let us begin with the pageflow:
+			</div><pre class="programlisting">&lt;pageflow-definition name="numberGuess"&gt;
+   
+   &lt;start-page name="displayGuess" view-id="/numberGuess.jsp"&gt;
+      &lt;redirect/&gt;
+      &lt;transition name="guess" to="evaluateGuess"&gt;
+          &lt;action expression="#{numberGuess.guess}" /&gt;
+      &lt;/transition&gt;
+   &lt;/start-page&gt;
+   
+   &lt;decision name="evaluateGuess" expression="#{numberGuess.correctGuess}"&gt;
+      &lt;transition name="true" to="win"/&gt;
+      &lt;transition name="false" to="evaluateRemainingGuesses"/&gt;
+   &lt;/decision&gt;
+   
+   &lt;decision name="evaluateRemainingGuesses" expression="#{numberGuess.lastGuess}"&gt;
+      &lt;transition name="true" to="lose"/&gt;
+      &lt;transition name="false" to="displayGuess"/&gt;
+   &lt;/decision&gt;
+   
+   &lt;page name="win" view-id="/win.jsp"&gt;
+      &lt;redirect/&gt;
+      &lt;end-conversation /&gt;
+   &lt;/page&gt;
+   
+   &lt;page name="lose" view-id="/lose.jsp"&gt;
+      &lt;redirect/&gt;
+      &lt;end-conversation /&gt;
+   &lt;/page&gt;
+   
+&lt;/pageflow-definition&gt;
+</pre><div class="orderedlist"><ol><li class="listitem"><div class="para">
+						The <code class="literal">&lt;page&gt;</code> element defines a wait state where the system displays a particular JSF view and waits for user input. The <code class="literal">view-id</code> is the same JSF view id used in plain JSF navigation rules. The <code class="literal">redirect</code> attribute tells Seam to use post-then-redirect when navigating to the page. (This results in friendly browser URLs.)
+					</div></li><li class="listitem"><div class="para">
+						The <code class="literal">&lt;transition&gt;</code> element names a JSF outcome. The transition is triggered when a JSF action results in that outcome. Execution will then proceed to the next node of the pageflow graph, after invocation of any jBPM transition actions.
+					</div></li><li class="listitem"><div class="para">
+						A transition <code class="literal">&lt;action&gt;</code> is just like a JSF action, except that it occurs when a jBPM transition occurs. The transition action can invoke any Seam component.
+					</div></li><li class="listitem"><div class="para">
+						A <code class="literal">&lt;decision&gt;</code> node branches the pageflow, and determines the next node to execute by evaluating a JSF EL expression.
+					</div></li></ol></div><div class="para">
+				Here is what the pageflow looks like in the JBossIDE pageflow editor:
+			</div><div class="mediaobject" align="center"><img src="images/numberguess-pageflow.png" align="middle" width="444" /></div><div class="para">
+				Now that we have seen the pageflow, it is very, very easy to understand the rest of the application!
+			</div><div class="para">
+				Here is the main page of the application, <code class="literal">numberGuess.jsp</code>:
+			</div><div class="example" id="id2839972"><div class="example-contents"><pre class="programlisting">&lt;%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%&gt;
+&lt;%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;title&gt;Guess a number...&lt;/title&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;h1&gt;Guess a number...&lt;/h1&gt;
+&lt;f:view&gt;
+    &lt;h:form&gt;
+        &lt;h:outputText value="Higher!" rendered="#{numberGuess.randomNumber&gt;numberGuess.currentGuess}" /&gt;
+        &lt;h:outputText value="Lower!" rendered="#{numberGuess.randomNumber&lt;numberGuess.currentGuess}" /&gt;
+        &lt;br /&gt;
+        I'm thinking of a number between &lt;h:outputText value="#{numberGuess.smallest}" /&gt; and 
+        &lt;h:outputText value="#{numberGuess.biggest}" /&gt;. You have 
+        &lt;h:outputText value="#{numberGuess.remainingGuesses}" /&gt; guesses.
+        &lt;br /&gt;
+        Your guess: 
+        &lt;h:inputText value="#{numberGuess.currentGuess}" id="guess" required="true"&gt;
+            &lt;f:validateLongRange
+                maximum="#{numberGuess.biggest}" 
+                minimum="#{numberGuess.smallest}"/&gt;
+        &lt;/h:inputText&gt;
+        &lt;h:commandButton type="submit" value="Guess" action="guess" /&gt;
+        &lt;br/&gt;
+        &lt;h:message for="guess" style="color: red"/&gt;
+    &lt;/h:form&gt;
+&lt;/f:view&gt;
+&lt;/body&gt;
+&lt;/html&gt;
+</pre></div><h6>Example 2.13. </h6></div><br class="example-break" /><div class="para">
+				Notice how the command button names the <code class="literal">guess</code> transition instead of calling an action directly.
+			</div><div class="para">
+				The <code class="literal">win.jsp</code> page is predictable:
+			</div><div class="example" id="id2840018"><div class="example-contents"><pre class="programlisting">&lt;%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%&gt;
+&lt;%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;title&gt;You won!&lt;/title&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;h1&gt;You won!&lt;/h1&gt;
+&lt;f:view&gt;
+    Yes, the answer was &lt;h:outputText value="#{numberGuess.currentGuess}" /&gt;.
+    It took you &lt;h:outputText value="#{numberGuess.guessCount}" /&gt; guesses.
+    Would you like to &lt;a href="numberGuess.seam"&gt;play again&lt;/a&gt;?
+  &lt;/f:view&gt;
+&lt;/body&gt;
+&lt;/html&gt;
+</pre></div><h6>Example 2.14. </h6></div><br class="example-break" /><div class="para">
+				As is <code class="literal">lose.jsp</code> (which I can not be bothered copy/pasting). Finally, the JavaBean Seam component:
+			</div><div class="example" id="id2840046"><div class="example-contents"><pre class="programlisting">@Name("numberGuess")
+ at Scope(ScopeType.CONVERSATION)
+public class NumberGuess {
+   
+   private int randomNumber;
+   private Integer currentGuess;
+   private int biggest;
+   private int smallest;
+   private int guessCount;
+   private int maxGuesses;
+   
+   @Create 
+   @Begin(pageflow="numberGuess")
+   public void begin()
+   {
+      randomNumber = new Random().nextInt(100);
+      guessCount = 0;
+      biggest = 100;
+      smallest = 1;
+   }
+   
+   public void setCurrentGuess(Integer guess)
+   {
+      this.currentGuess = guess;
+   }
+   
+   public Integer getCurrentGuess()
+   {
+      return currentGuess;
+   }
+   
+   public void guess()
+   {
+      if (currentGuess&gt;randomNumber)
+      {
+         biggest = currentGuess - 1;
+      }
+      if (currentGuess&lt;randomNumber)
+      {
+         smallest = currentGuess + 1;
+      }
+      guessCount ++;
+   }
+   
+   public boolean isCorrectGuess()
+   {
+      return currentGuess==randomNumber;
+   }
+   
+   public int getBiggest()
+   {
+      return biggest;
+   }
+   
+   public int getSmallest()
+   {
+      return smallest;
+   }
+   
+   public int getGuessCount()
+   {
+      return guessCount;
+   }
+   
+   public boolean isLastGuess()
+   {
+      return guessCount==maxGuesses;
+   }
+
+   public int getRemainingGuesses() {
+      return maxGuesses-guessCount;
+   }
+
+   public void setMaxGuesses(int maxGuesses) {
+      this.maxGuesses = maxGuesses;
+   }
+
+   public int getMaxGuesses() {
+      return maxGuesses;
+   }
+
+   public int getRandomNumber() {
+      return randomNumber;
+   }
+}
+</pre><div class="orderedlist"><ol><li class="listitem"><div class="para">
+							The first time a JSP page asks for a <code class="literal">numberGuess</code> component, Seam will create a new one for it, and the <code class="literal">@Create</code> method will be invoked, allowing the component to initialize itself.
+						</div></li><li class="listitem"><div class="para">
+							The <code class="literal">@Begin</code> annotation starts a Seam <span class="emphasis"><em>conversation</em></span> (much more about that later), and specifies the pageflow definition to use for the conversation's page flow.
+						</div></li></ol></div></div><h6>Example 2.15. </h6></div><br class="example-break" /><div class="para">
+				As you can see, this Seam component is pure business logic! It does not need to know anything at all about the user interaction flow. This makes the component potentially more reuseable.
+			</div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_Tutorial-Seam_and_jBPM_the_todo_list_example.html"><strong>Prev</strong>2.4. Seam and jBPM: the todo list example</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_Tutorial-A_complete_Seam_application_the_Hotel_Booking_example.html"><strong>Next</strong>2.6. A complete Seam application: the Hotel Booki...</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_Tutorial-Your_first_Seam_application_the_registration_example.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_Tutorial-Your_first_Seam_application_the_registration_example.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_Tutorial-Your_first_Seam_application_the_registration_example.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,359 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>2.2. Your first Seam application: the registration example</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Seam_Tutorial.html" title="Chapter 2. Seam Tutorial" /><link rel="prev" href="Seam_Reference_Guide-Seam_Tutorial.html" title="Chapter 2. Seam Tutorial" /><link rel="next" href="Seam_Reference_Guide-Your_first_Seam_application_the_registration_example-How_it_works.html" title="2.2.2. How it works" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" a!
 lt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_Tutorial.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Your_first_Seam_application_the_registration_example-How_it_works.html"><strong>Next</strong></a></li></ul><div class="section" title="2.2. Your first Seam application: the registration example"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_Tutorial-Your_first_Seam_application_the_registration_example">2.2. Your first Seam application: the registration example</h2></div></div></div><div class="para">
+			The registration example is a fairly trivial application that lets a new user store his username, real name and password in the database. The example is not intended to show off all of the cool functionality of Seam. However, it demonstrates the use of an EJB3 session bean as a JSF action listener, and basic configuration of Seam.
+		</div><div class="para">
+			We will go slowly, since we realize you might not yet be familiar with EJB 3.0.
+		</div><div class="para">
+			The start page displays a very basic form with three input fields. Try filling them in and then submitting the form. This will save a user object in the database.
+		</div><div class="mediaobject" align="center"><img src="images/registration.png" align="middle" width="444" /></div><div class="section" title="2.2.1. Understanding the code"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Your_first_Seam_application_the_registration_example-Understanding_the_code">2.2.1. Understanding the code</h3></div></div></div><div class="para">
+				The example is implemented with two JSP pages, one entity bean and one stateless session bean.
+			</div><div class="mediaobject" align="center"><img src="images/register.png" align="middle" /></div><div class="para">
+				Let us take a look at the code, starting from the bottom.
+			</div><div class="section" title="2.2.1.1. The entity bean: User.java"><div class="titlepage"><div><div><h4 class="title" id="Seam_Reference_Guide-Understanding_the_code-The_entity_bean_User.java">2.2.1.1. The entity bean: <code class="literal">User.java</code></h4></div></div></div><div class="para">
+					We need an EJB entity bean for user data. This class defines <span class="emphasis"><em>persistence</em></span> and <span class="emphasis"><em>validation</em></span> declaratively, via annotations. It also needs some extra annotations that define the class as a Seam component.
+				</div><pre class="programlisting">@Entity
+ at Name("user")
+ at Scope(SESSION)
+ at Table(name="users")
+public class User implements Serializable
+{
+   private static final long serialVersionUID = 1881413500711441951L;
+   
+   private String username;
+   private String password;
+   private String name;
+   
+   public User(String name, String password, String username)
+   {
+      this.name = name;
+      this.password = password;
+      this.username = username;
+   }
+   
+   public User() {}
+   
+   @NotNull @Length(min=5, max=15)
+   public String getPassword()
+   {
+      return password;
+   }
+
+   public void setPassword(String password)
+   {
+      this.password = password;
+   }
+   
+   @NotNull
+   public String getName()
+   {
+      return name;
+   }
+
+   public void setName(String name)
+   {
+      this.name = name;
+   }
+   
+   @Id @NotNull @Length(min=5, max=15)
+   public String getUsername()
+   {
+      return username;
+   }
+
+   public void setUsername(String username)
+   {
+      this.username = username;
+   }
+
+}
+</pre><div class="orderedlist"><ol><li class="listitem"><div class="para">
+							The EJB3 standard <code class="literal">@Entity</code> annotation indicates that the <code class="literal">User</code> class is an entity bean.
+						</div></li><li class="listitem"><div class="para">
+							A Seam component needs a <span class="emphasis"><em>component name</em></span> specified by the <code class="literal">@Name</code> annotation. This name must be unique within the Seam application. When JSF asks Seam to resolve a context variable with a name that is the same as a Seam component name, and the context variable is currently undefined (null), Seam will instantiate that component, and bind the new instance to the context variable. In this case, Seam will instantiate a <code class="literal">User</code> the first time JSF encounters a variable named <code class="literal">user</code>.
+						</div></li><li class="listitem"><div class="para">
+							Whenever Seam instantiates a component, it binds the new instance to a context variable in the component's <span class="emphasis"><em>default context</em></span>. The default context is specified using the <code class="literal">@Scope</code> annotation. The <code class="literal">User</code> bean is a session scoped component.
+						</div></li><li class="listitem"><div class="para">
+							The EJB standard <code class="literal">@Table</code> annotation indicates that the <code class="literal">User</code> class is mapped to the <code class="literal">users</code> table.
+						</div></li><li class="listitem"><div class="para">
+							<code class="literal">name</code>, <code class="literal">password</code> and <code class="literal">username</code> are the persistent attributes of the entity bean. All of our persistent attributes define accessor methods. These are needed when this component is used by JSF in the render response and update model values phases.
+						</div></li><li class="listitem"><div class="para">
+							An empty constructor is both required by both the EJB specification and by Seam.
+						</div></li><li class="listitem"><div class="para">
+							The <code class="literal">@NotNull</code> and <code class="literal">@Length</code> annotations are part of the Hibernate Validator framework. Seam integrates Hibernate Validator and lets you use it for data validation (even if you are not using Hibernate for persistence).
+						</div></li><li class="listitem"><div class="para">
+							The EJB standard <code class="literal">@Id</code> annotation indicates the primary key attribute of the entity bean.
+						</div></li></ol></div><div class="para">
+					The most important things to notice in this example are the <code class="literal">@Name</code> and <code class="literal">@Scope</code> annotations. These annotations establish that this class is a Seam component.
+				</div><div class="para">
+					We will see below that the properties of our <code class="literal">User</code> class are bound to directly to JSF components and are populated by JSF during the update model values phase. We do not need any tedious glue code to copy data back and forth between the JSP pages and the entity bean domain model.
+				</div><div class="para">
+					However, entity beans should not do transaction management or database access. So we cannot use this component as a JSF action listener. For that we need a session bean.
+				</div></div><div class="section" title="2.2.1.2. The stateless session bean class: RegisterAction.java"><div class="titlepage"><div><div><h4 class="title" id="Seam_Reference_Guide-Understanding_the_code-The_stateless_session_bean_class_RegisterAction.java">2.2.1.2. The stateless session bean class: <code class="literal">RegisterAction.java</code></h4></div></div></div><div class="para">
+					Most Seam application use session beans as JSF action listeners (you can use JavaBeans instead if you like).
+				</div><div class="para">
+					We have exactly one JSF action in our application, and one session bean method attached to it. In this case, we will use a stateless session bean, since all the state associated with our action is held by the <code class="literal">User</code> bean.
+				</div><div class="para">
+					This is the only really interesting code in the example.
+				</div><pre class="programlisting">@Stateless
+ at Name("register")
+public class RegisterAction implements Register
+{
+
+   @In
+   private User user;
+   
+   @PersistenceContext
+   private EntityManager em;
+   
+   @Logger
+   private Log log;
+   
+   public String register()
+   {
+      List existing = em.createQuery(
+         "select username from User where username=#{user.username}")
+         .getResultList();
+         
+      if (existing.size()==0)
+      {
+         em.persist(user);
+         log.info("Registered new user #{user.username}");
+         return "/registered.jsp";
+      }
+      else
+      {
+         FacesMessages.instance().add("User #{user.username} already exists");
+         return null;
+      }
+   }
+
+}
+</pre><div class="orderedlist"><ol><li class="listitem"><div class="para">
+							The EJB standard <code class="literal">@Stateless</code> annotation marks this class as stateless session bean.
+						</div></li><li class="listitem"><div class="para">
+							The <code class="literal">@In</code> annotation marks an attribute of the bean as injected by Seam. In this case, the attribute is injected from a context variable named <code class="literal">user</code> (the instance variable name).
+						</div></li><li class="listitem"><div class="para">
+							The EJB standard <code class="literal">@PersistenceContext</code> annotation is used to inject the EJB3 entity manager.
+						</div></li><li class="listitem"><div class="para">
+							The Seam <code class="literal">@Logger</code> annotation is used to inject the component's <code class="literal">Log</code> instance.
+						</div></li><li class="listitem"><div class="para">
+							The action listener method uses the standard EJB3 <code class="literal">EntityManager</code> API to interact with the database, and returns the JSF outcome. Note that, since this is a sesson bean, a transaction is automatically begun when the <code class="literal">register()</code> method is called, and committed when it completes.
+						</div></li><li class="listitem"><div class="para">
+							Notice that Seam lets you use a JSF EL expression inside EJB-QL. Under the covers, this results in an ordinary JPA <code class="literal">setParameter()</code> call on the standard JPA <code class="literal">Query</code> object. Nice, huh?
+						</div></li><li class="listitem"><div class="para">
+							The <code class="literal">Log</code> API lets us easily display templated log messages.
+						</div></li><li class="listitem"><div class="para">
+							JSF action listener methods return a string-valued outcome that determines what page will be displayed next. A null outcome (or a void action listener method) redisplays the previous page. In plain JSF, it is normal to always use a JSF <span class="emphasis"><em>navigation rule</em></span> to determine the JSF view id from the outcome. For complex application this indirection is useful and a good practice. However, for very simple examples like this one, Seam lets you use the JSF view id as the outcome, eliminating the requirement for a navigation rule. <span class="emphasis"><em>Note that when you use a view id as an outcome, Seam always performs a browser redirect.</em></span>
+						</div></li><li class="listitem"><div class="para">
+							Seam provides a number of <span class="emphasis"><em>built-in components</em></span> to help solve common problems. The <code class="literal">FacesMessages</code> component makes it easy to display templated error or success messages. Built-in Seam components may be obtained by injection, or by calling an <code class="literal">instance()</code> method.
+						</div></li></ol></div><div class="para">
+					Note that we did not explicitly specify a <code class="literal">@Scope</code> this time. Each Seam component type has a default scope if not explicitly specified. For stateless session beans, the default scope is the stateless context. Actually, <span class="emphasis"><em>all</em></span> stateless session beans belong in the stateless context.
+				</div><div class="para">
+					Our session bean action listener performs the business and persistence logic for our mini-application. In more complex applications, we might need to layer the code and refactor persistence logic into a dedicated data access component. That is perfectly trivial to do. But notice that Seam does not force you into any particular strategy for application layering.
+				</div><div class="para">
+					Furthermore, notice that our session bean has simultaneous access to context associated with the web request (the form values in the <code class="literal">User</code> object, for example), and state held in transactional resources (the <code class="literal">EntityManager</code> object). This is a break from traditional J2EE architectures. Again, if you are more comfortable with the traditional J2EE layering, you can certainly implement that in a Seam application. But for many applications, it is not very useful.
+				</div></div><div class="section" title="2.2.1.3. The session bean local interface: Register.java"><div class="titlepage"><div><div><h4 class="title" id="Seam_Reference_Guide-Understanding_the_code-The_session_bean_local_interface_Register.java">2.2.1.3. The session bean local interface: <code class="literal">Register.java</code></h4></div></div></div><div class="para">
+					Naturally, our session bean needs a local interface.
+				</div><div class="example" id="id2664587"><div class="example-contents"><pre class="programlisting">@Local
+public interface Register
+{
+   public String register();
+}
+</pre></div><h6>Example 2.1. </h6></div><br class="example-break" /><div class="para">
+					That is the end of the Java code. Now onto the deployment descriptors.
+				</div></div><div class="section" title="2.2.1.4. The Seam component deployment descriptor: components.xml"><div class="titlepage"><div><div><h4 class="title" id="Seam_Reference_Guide-Understanding_the_code-The_Seam_component_deployment_descriptor_components.xml">2.2.1.4. The Seam component deployment descriptor: <code class="literal">components.xml</code></h4></div></div></div><div class="para">
+					If you have used many Java frameworks before, you will be used to having to declare all your component classes in some kind of XML file that gradually grows more and more unmanageable as your project matures. You will be relieved to know that Seam does not require that application components be accompanied by XML. Most Seam applications require a very small amount of XML that does not grow very much as the project gets bigger.
+				</div><div class="para">
+					Nevertheless, it is often useful to be able to provide for <span class="emphasis"><em>some</em></span> external configuration of <span class="emphasis"><em>some</em></span> components (particularly the components built in to Seam). You have a couple of options here, but the most flexible option is to provide this configuration in a file called <code class="literal">components.xml</code>, located in the <code class="literal">WEB-INF</code> directory. We will use the <code class="literal">components.xml</code> file to tell Seam how to find our EJB components in JNDI:
+				</div><div class="example" id="id2664662"><div class="example-contents"><pre class="programlisting">&lt;components xmlns="http://jboss.com/products/seam/components"
+            xmlns:core="http://jboss.com/products/seam/core"&gt;
+     &lt;core:init jndi-pattern="@jndiPattern@"/&gt;
+&lt;/components&gt;
+</pre></div><h6>Example 2.2. </h6></div><br class="example-break" /><div class="para">
+					This code configures a property named <code class="literal">jndiPattern</code> of a built-in Seam component named <code class="literal">org.jboss.seam.core.init</code>.
+				</div></div><div class="section" title="2.2.1.5. The web deployment description: web.xml"><div class="titlepage"><div><div><h4 class="title" id="Seam_Reference_Guide-Understanding_the_code-The_web_deployment_description_web.xml">2.2.1.5. The web deployment description: <code class="literal">web.xml</code></h4></div></div></div><div class="para">
+					The presentation layer for our mini-application will be deployed in a WAR. So we will need a web deployment descriptor.
+				</div><div class="example" id="id2664712"><div class="example-contents"><pre class="programlisting">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;web-app version="2.5"
+    xmlns="http://java.sun.com/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
+        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"&gt;
+
+    &lt;!- - Seam - -&gt;
+
+    &lt;listener&gt;
+        &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/listener-class&gt;
+    &lt;/listener&gt;
+    
+     &lt;listener&gt;
+         &lt;listener-class&gt;com.sun.faces.config.ConfigureListener&lt;/listener-class&gt;
+    &lt;/listener&gt;
+
+    &lt;context-param&gt;
+        &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-name&gt;
+        &lt;param-value&gt;client&lt;/param-value&gt;
+    &lt;/context-param&gt;
+
+    &lt;context-param&gt;
+        &lt;param-name&gt;javax.faces.DEFAULT_SUFFIX&lt;/param-name&gt;
+        &lt;param-value&gt;.jspx&lt;/param-value&gt;
+    &lt;/context-param&gt;
+
+        &lt;servlet&gt;
+                &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;
+                &lt;servlet-class&gt;javax.faces.webapp.FacesServlet&lt;/servlet-class&gt;
+                &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;
+        &lt;/servlet&gt;
+
+        
+        &lt;servlet-mapping&gt;
+                &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;
+                &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;
+        &lt;/servlet-mapping&gt;
+
+&lt;/web-app&gt;
+</pre></div><h6>Example 2.3. </h6></div><br class="example-break" /><div class="para">
+					This <code class="literal">web.xml</code> file configures Seam and Glassfish. The configuration you see here is pretty much identical in all Seam applications.
+				</div></div><div class="section" title="2.2.1.6. The JSF configration: faces-config.xml"><div class="titlepage"><div><div><h4 class="title" id="Seam_Reference_Guide-Understanding_the_code-The_JSF_configration_faces_config.xml">2.2.1.6. The JSF configration: <code class="literal">faces-config.xml</code></h4></div></div></div><div class="para">
+					All Seam applications use JSF views as the presentation layer. So we will need <code class="literal">faces-config.xml</code>.
+				</div><div class="example" id="id2841578"><div class="example-contents"><pre class="programlisting">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;!DOCTYPE faces-config 
+PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN"
+                            "http://java.sun.com/dtd/web-facesconfig_1_0.dtd"&gt;
+&lt;faces-config&gt;
+
+    &lt;!- - A phase listener is needed by all Seam applications - -&gt;
+    
+    &lt;lifecycle&gt;
+        &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-listener&gt;
+    &lt;/lifecycle&gt;
+
+&lt;/faces-config&gt;
+</pre></div><h6>Example 2.4. </h6></div><br class="example-break" /><div class="para">
+					The <code class="literal">faces-config.xml</code> file integrates Seam into JSF. Note that we do not need any JSF managed bean declarations; the managed beans are the Seam components. In Seam applications, the <code class="literal">faces-config.xml</code> is used much less often than in plain JSF.
+				</div><div class="para">
+					In fact, once you have all the basic descriptors set up, the <span class="emphasis"><em>only</em></span> XML you need to write as you add new functionality to a Seam application is the navigation rules, and possibly jBPM process definitions. Seam takes the view that <span class="emphasis"><em>process flow</em></span> and <span class="emphasis"><em>configuration data</em></span> are the only things that truly belong in XML.
+				</div><div class="para">
+					In this simple example, we do not even need a navigation rule, since we decided to embed the view id in our action code.
+				</div></div><div class="section" title="2.2.1.7. The EJB deployment descriptor: ejb-jar.xml"><div class="titlepage"><div><div><h4 class="title" id="Seam_Reference_Guide-Understanding_the_code-The_EJB_deployment_descriptor_ejb_jar.xml">2.2.1.7. The EJB deployment descriptor: <code class="literal">ejb-jar.xml</code></h4></div></div></div><div class="para">
+					The <code class="literal">ejb-jar.xml</code> file integrates Seam with EJB3, by attaching the <code class="literal">SeamInterceptor</code> to all session beans in the archive.
+				</div><pre class="programlisting">&lt;ejb-jar xmlns="http://java.sun.com/xml/ns/javaee" 
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
+                           http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"
+         version="3.0"&gt;
+         
+   &lt;interceptors&gt;
+     &lt;interceptor&gt;
+       &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/interceptor-class&gt;
+     &lt;/interceptor&gt;
+   &lt;/interceptors&gt;
+   
+   &lt;assembly-descriptor&gt;
+      &lt;interceptor-binding&gt;
+         &lt;ejb-name&gt;*&lt;/ejb-name&gt;
+         &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/interceptor-class&gt;
+      &lt;/interceptor-binding&gt;
+   &lt;/assembly-descriptor&gt;
+   
+&lt;/ejb-jar&gt;
+</pre></div><div class="section" title="2.2.1.8. The EJB persistence deployment descriptor: persistence.xml"><div class="titlepage"><div><div><h4 class="title" id="Seam_Reference_Guide-Understanding_the_code-The_EJB_persistence_deployment_descriptor_persistence.xml">2.2.1.8. The EJB persistence deployment descriptor: <code class="literal">persistence.xml</code></h4></div></div></div><div class="para">
+					The <code class="literal">persistence.xml</code> file tells the EJB persistence provider where to find the datasource, and contains some vendor-specific settings. In this case, enables automatic schema export at startup time.
+				</div><pre class="programlisting">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;persistence xmlns="http://java.sun.com/xml/ns/persistence" 
+             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
+                           http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" 
+             version="1.0"&gt;
+    &lt;persistence-unit name="userDatabase"&gt;
+      &lt;provider&gt;org.hibernate.ejb.HibernatePersistence&lt;/provider&gt;
+      &lt;jta-data-source&gt;java:/DefaultDS&lt;/jta-data-source&gt;
+      &lt;properties&gt;
+         &lt;property name="hibernate.hbm2ddl.auto" value="create-drop"/&gt;
+      &lt;/properties&gt;
+    &lt;/persistence-unit&gt;
+&lt;/persistence&gt;
+</pre></div><div class="section" title="2.2.1.9. The view: register.jsp and registered.jsp"><div class="titlepage"><div><div><h4 class="title" id="Seam_Reference_Guide-Understanding_the_code-The_view_register.jsp_and_registered.jsp">2.2.1.9. The view: <code class="literal">register.jsp</code> and <code class="literal">registered.jsp</code></h4></div></div></div><div class="para">
+					The view pages for a Seam application could be implemented using any technology that supports JSF. In this example we use JSP, since it is familiar to most developers and since we have minimal requirements here anyway. (But if you take our advice, you will use Facelets for your own applications.)
+				</div><div class="example" id="id2841761"><div class="example-contents"><pre class="programlisting">&lt;%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %&gt;
+&lt;%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %&gt;
+&lt;%@ taglib uri="http://jboss.com/products/seam/taglib" prefix="s" %&gt;
+&lt;html&gt;
+ &lt;head&gt;
+  &lt;title&gt;Register New User&lt;/title&gt;
+ &lt;/head&gt;
+ &lt;body&gt;
+  &lt;f:view&gt;
+   &lt;h:form&gt;
+     &lt;table border="0"&gt;
+       &lt;s:validateAll&gt;
+         &lt;tr&gt;
+           &lt;td&gt;Username&lt;/td&gt;
+           &lt;td&gt;&lt;h:inputText value="#{user.username}"/&gt;&lt;/td&gt;
+         &lt;/tr&gt;
+         &lt;tr&gt;
+           &lt;td&gt;Real Name&lt;/td&gt;
+           &lt;td&gt;&lt;h:inputText value="#{user.name}"/&gt;&lt;/td&gt;
+         &lt;/tr&gt;
+         &lt;tr&gt;
+           &lt;td&gt;Password&lt;/td&gt;
+           &lt;td&gt;&lt;h:inputSecret value="#{user.password}"/&gt;&lt;/td&gt;
+         &lt;/tr&gt;
+       &lt;/s:validateAll&gt;
+     &lt;/table&gt;
+     &lt;h:messages/&gt;
+     &lt;h:commandButton type="submit" value="Register" action="#{register.register}"/&gt;
+   &lt;/h:form&gt;
+  &lt;/f:view&gt;
+ &lt;/body&gt;
+&lt;/html&gt;
+</pre></div><h6>Example 2.5. </h6></div><br class="example-break" /><div class="para">
+					The only thing here that is specific to Seam is the <code class="literal">&lt;s:validateAll&gt;</code> tag. This JSF component tells JSF to validate all the contained input fields against the Hibernate Validator annotations specified on the entity bean.
+				</div><div class="example" id="id2841797"><div class="example-contents"><pre class="programlisting">&lt;%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %&gt;
+&lt;%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %&gt;
+&lt;html&gt;
+ &lt;head&gt;
+  &lt;title&gt;Successfully Registered New User&lt;/title&gt;
+ &lt;/head&gt;
+ &lt;body&gt;
+  &lt;f:view&gt;
+    Welcome, &lt;h:outputText value="#{user.name}"/&gt;, 
+    you are successfully registered as &lt;h:outputText value="#{user.username}"/&gt;.
+  &lt;/f:view&gt;
+ &lt;/body&gt;
+&lt;/html&gt;
+</pre></div><h6>Example 2.6. </h6></div><br class="example-break" /><div class="para">
+					This is a boring old JSP pages using standard JSF components. There is nothing specific to Seam here.
+				</div></div><div class="section" title="2.2.1.10. The EAR deployment descriptor: application.xml"><div class="titlepage"><div><div><h4 class="title" id="Seam_Reference_Guide-Understanding_the_code-The_EAR_deployment_descriptor_application.xml">2.2.1.10. The EAR deployment descriptor: <code class="literal">application.xml</code></h4></div></div></div><div class="para">
+					Finally, since our application is deployed as an EAR, we need a deployment descriptor there, too.
+				</div><div class="example" id="id2841844"><div class="example-contents"><pre class="programlisting">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;application xmlns="http://java.sun.com/xml/ns/javaee" 
+             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+             xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
+                                   http://java.sun.com/xml/ns/javaee/application_5.xsd"
+             version="5"&gt;
+             
+    &lt;display-name&gt;Seam Registration&lt;/display-name&gt;
+
+    &lt;module&gt;
+        &lt;web&gt;
+            &lt;web-uri&gt;jboss-seam-registration.war&lt;/web-uri&gt;
+            &lt;context-root&gt;/seam-registration&lt;/context-root&gt;
+        &lt;/web&gt;
+    &lt;/module&gt;
+    &lt;module&gt;
+        &lt;ejb&gt;jboss-seam-registration.jar&lt;/ejb&gt;
+    &lt;/module&gt;
+    &lt;module&gt;
+        &lt;java&gt;jboss-seam.jar&lt;/java&gt;
+    &lt;/module&gt;
+    &lt;module&gt;
+        &lt;java&gt;el-ri.jar&lt;/java&gt;
+    &lt;/module&gt;
+    
+&lt;/application&gt;
+</pre></div><h6>Example 2.7. </h6></div><br class="example-break" /><div class="para">
+					This deployment descriptor links modules in the enterprise archive and binds the web application to the context root <code class="literal">/seam-registration</code>.
+				</div></div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_Tutorial.html"><strong>Prev</strong>Chapter 2. Seam Tutorial</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Your_first_Seam_application_the_registration_example-How_it_works.html"><strong>Next</strong>2.2.2. How it works</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_Tutorial.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_Tutorial.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_Tutorial.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 2. Seam Tutorial</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="index.html" title="Seam Reference Guide CP07" /><link rel="prev" href="Seam_Reference_Guide-Introduction_to_JBoss_Seam.html" title="Introduction to JBoss Seam" /><link rel="next" href="Seam_Reference_Guide-Seam_Tutorial-Your_first_Seam_application_the_registration_example.html" title="2.2. Your first Seam application: the registration example" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Produc!
 t Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Introduction_to_JBoss_Seam.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_Tutorial-Your_first_Seam_application_the_registration_example.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="chapter" title="Chapter 2. Seam Tutorial" lang="en-US"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_Tutorial">Chapter 2. Seam Tutorial</h2></div></div></div><div class="toc"><dl><dt><span class="section"><a href="Seam_Reference_Guide-Seam_Tutorial.html#Seam_Reference_Guide-Seam_Tutorial-Try_the_examples">2.1. Try the examples</a></span></dt><dd><dl><dt><span class="section"><a href="Seam_Reference_Guide-Seam_Tutorial.html#Seam_Reference_Guide-Try_the_examp!
 les-Running_the_examples_on_JBoss_AS">2.1.1. Running the examp!
 les on J
Boss Enterprise Application Platform</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Seam_Tutorial.html#Seam_Reference_Guide-Try_the_examples-Running_the_examples_on_Tomcat">2.1.2. Running the examples on Tomcat</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Seam_Tutorial.html#Seam_Reference_Guide-Try_the_examples-Running_the_example_tests">2.1.3. Running the example tests</a></span></dt></dl></dd><dt><span class="section"><a href="Seam_Reference_Guide-Seam_Tutorial-Your_first_Seam_application_the_registration_example.html">2.2. Your first Seam application: the registration example</a></span></dt><dd><dl><dt><span class="section"><a href="Seam_Reference_Guide-Seam_Tutorial-Your_first_Seam_application_the_registration_example.html#Seam_Reference_Guide-Your_first_Seam_application_the_registration_example-Understanding_the_code">2.2.1. Understanding the code</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-You!
 r_first_Seam_application_the_registration_example-How_it_works.html">2.2.2. How it works</a></span></dt></dl></dd><dt><span class="section"><a href="Seam_Reference_Guide-Seam_Tutorial-Clickable_lists_in_Seam_the_messages_example.html">2.3. Clickable lists in Seam: the messages example</a></span></dt><dd><dl><dt><span class="section"><a href="Seam_Reference_Guide-Seam_Tutorial-Clickable_lists_in_Seam_the_messages_example.html#Seam_Reference_Guide-Clickable_lists_in_Seam_the_messages_example-Understanding_the_code">2.3.1. Understanding the code</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Clickable_lists_in_Seam_the_messages_example-How_it_works.html">2.3.2. How it works</a></span></dt></dl></dd><dt><span class="section"><a href="Seam_Reference_Guide-Seam_Tutorial-Seam_and_jBPM_the_todo_list_example.html">2.4. Seam and jBPM: the todo list example</a></span></dt><dd><dl><dt><span class="section"><a href="Seam_Reference_Guide-Seam_Tutorial-Seam_and_jBP!
 M_the_todo_list_example.html#Seam_Reference_Guide-Seam_and_jBP!
 M_the_to
do_list_example-Understanding_the_code">2.4.1. Understanding the code</a></span></dt></dl></dd><dt><span class="section"><a href="Seam_Reference_Guide-Seam_Tutorial-Seam_pageflow_the_numberguess_example.html">2.5. Seam pageflow: the numberguess example</a></span></dt><dd><dl><dt><span class="section"><a href="Seam_Reference_Guide-Seam_Tutorial-Seam_pageflow_the_numberguess_example.html#Seam_Reference_Guide-Seam_pageflow_the_numberguess_example-Understanding_the_code">2.5.1. Understanding the code</a></span></dt></dl></dd><dt><span class="section"><a href="Seam_Reference_Guide-Seam_Tutorial-A_complete_Seam_application_the_Hotel_Booking_example.html">2.6. A complete Seam application: the Hotel Booking example</a></span></dt><dd><dl><dt><span class="section"><a href="Seam_Reference_Guide-Seam_Tutorial-A_complete_Seam_application_the_Hotel_Booking_example.html#Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-Introduction">2.6.1. Introduction</a></span><!
 /dt><dt><span class="section"><a href="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-Overview_of_the_booking_example.html">2.6.2. Overview of the booking example</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-Understanding_Seam_conversations.html">2.6.3. Understanding Seam conversations</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-The_Seam_UI_control_library.html">2.6.4. The Seam UI control library</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-The_Seam_Debug_Page.html">2.6.5. The Seam Debug Page</a></span></dt></dl></dd><dt><span class="section"><a href="Seam_Reference_Guide-Seam_Tutorial-A_complete_application_featuring_Seam_and_jBPM_the_DVD_Store_example.html">2.7. A complete application featuring Seam and jBPM!
 : the DVD Store example</a></span></dt><dt><span class="sectio!
 n"><a hr
ef="Seam_Reference_Guide-Seam_Tutorial-A_complete_application_featuring_Seam_workspace_management_the_Issue_Tracker_example.html">2.8. A complete application featuring Seam workspace management: the Issue Tracker example</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Seam_Tutorial-An_example_of_Seam_with_Hibernate_the_Hibernate_Booking_example.html">2.9. An example of Seam with Hibernate: the Hibernate Booking example</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Seam_Tutorial-A_RESTful_Seam_application_the_Blog_example.html">2.10. A RESTful Seam application: the Blog example</a></span></dt><dd><dl><dt><span class="section"><a href="Seam_Reference_Guide-Seam_Tutorial-A_RESTful_Seam_application_the_Blog_example.html#Seam_Reference_Guide-A_RESTful_Seam_application_the_Blog_example-Using_pull_style_MVC">2.10.1. Using "pull"-style MVC</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-A_RESTful_Seam_application!
 _the_Blog_example-Bookmarkable_search_results_page.html">2.10.2. Bookmarkable search results page</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-A_RESTful_Seam_application_the_Blog_example-Using_push_style_MVC_in_a_RESTful_application.html">2.10.3. Using "push"-style MVC in a RESTful application</a></span></dt></dl></dd></dl></div><div class="section" title="2.1. Try the examples"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_Tutorial-Try_the_examples">2.1. Try the examples</h2></div></div></div><div class="para">
+			In this tutorial, we will assume that you are using the JBoss Enterprise Application Platform with Seam.
+		</div><div class="para">
+			The directory structure of each example in Seam follows this pattern:
+		</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+					Web pages, images and stylesheets may be found in <code class="filename">examples/<em class="replaceable"><code>registration</code></em>/view</code>
+				</div></li><li class="listitem"><div class="para">
+					Resources such as deployment descriptors and data import scripts may be found in <code class="filename">examples/<em class="replaceable"><code>registration</code></em>/resources</code>
+				</div></li><li class="listitem"><div class="para">
+					Java source code may be found in <code class="filename">examples/<em class="replaceable"><code>registration</code></em>/src</code>
+				</div></li><li class="listitem"><div class="para">
+					The Ant build script is <code class="filename">examples/<em class="replaceable"><code>registration</code></em>/build.xml</code>
+				</div></li></ul></div><div class="section" title="2.1.1. Running the examples on JBoss Enterprise Application Platform"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Try_the_examples-Running_the_examples_on_JBoss_AS">2.1.1. Running the examples on JBoss Enterprise Application Platform</h3></div></div></div><div class="para">
+				First, make sure you have Ant correctly installed, with <code class="literal">$ANT_HOME</code> and <code class="literal">$JAVA_HOME</code> set correctly. Next, make sure you set the location of your JBoss AS installation in the <code class="literal">build.properties</code> file in the root folder of your Seam installation. If you haven't already done so, start JBoss AS now by typing <code class="literal">bin/run.sh</code> or <code class="literal">bin/run.bat</code> in the root directory of your JBoss installation.
+			</div><div class="para">
+				By default the examples will deploy to the default configuration of the server. These examples should be deployed to the production configuration if they are to be used with JBoss Enterprise Application Platform, and the example <code class="literal">build.xml</code> file should be modified to reflect this before building and deploying. Two lines should be changed in this file:
+			</div><pre class="screen"> &lt;property name="deploy.dir"           value="${jboss.home}/server/production/deploy"/&gt;
+</pre><pre class="screen">   &lt;property name="webroot.dir"         
+	value="${deploy.dir}/jboss-web.deployer/ROOT.war"/&gt;
+</pre><div class="para">
+				Now, build and deploy the example by typing <code class="literal">ant deploy</code> in the <code class="filename">examples/<em class="replaceable"><code>registration</code></em></code> directory.
+			</div><div class="para">
+				Try it out by accessing <a href="http://localhost:8080/seam-registration/"><code class="literal">http://localhost:8080/seam-registration/</code></a> with your web browser.
+			</div></div><div class="section" title="2.1.2. Running the examples on Tomcat"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Try_the_examples-Running_the_examples_on_Tomcat">2.1.2. Running the examples on Tomcat</h3></div></div></div><div class="para">
+				First, make sure you have Ant correctly installed, with <code class="literal">$ANT_HOME</code> and <code class="literal">$JAVA_HOME</code> set correctly. Next, make sure you set the location of your Tomcat installation in the <code class="literal">build.properties</code> file in the root folder of your Seam installation.
+			</div><div class="para">
+				Now, build and deploy the example by typing <code class="literal">ant deploy.tomcat</code> in the <code class="filename">examples/<em class="replaceable"><code>registration</code></em></code> directory.
+			</div><div class="para">
+				Finally, start Tomcat.
+			</div><div class="para">
+				Try it out by accessing <a href="http://localhost:8080/jboss-seam-registration/"><code class="literal">http://localhost:8080/jboss-seam-registration/</code></a> with your web browser.
+			</div><div class="para">
+				When you deploy the example to Tomcat, any EJB3 components will run inside the JBoss Embeddable EJB3 container, a complete standalone EJB3 container environment.
+			</div></div><div class="section" title="2.1.3. Running the example tests"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Try_the_examples-Running_the_example_tests">2.1.3. Running the example tests</h3></div></div></div><div class="para">
+				Most of the examples come with a suite of TestNG integration tests. The easiest way to run the tests is to run <code class="literal">ant testexample</code> inside the <code class="filename">examples/<em class="replaceable"><code>registration</code></em></code> directory. It is also possible to run the tests inside your IDE using the TestNG plugin.
+			</div></div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Introduction_to_JBoss_Seam.html"><strong>Prev</strong>Introduction to JBoss Seam</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_Tutorial-Your_first_Seam_application_the_registration_example.html"><strong>Next</strong>2.2. Your first Seam application: the registratio...</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Seam_managed_persistence_contexts.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Seam_managed_persistence_contexts.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Seam_managed_persistence_contexts.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>8.3. Seam-managed persistence contexts</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping.html" title="Chapter 8. Seam and Object/Relational Mapping" /><link rel="prev" href="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Seam_managed_transactions.html" title="8.2. Seam managed transactions" /><link rel="next" href="Seam_Reference_Guide-Seam_managed_persistence_contexts-Using_a_Seam_managed_Hibernate_session.html" title="8.3.2. Using a Seam-managed Hibernate session" /></head><body class=""><p id="t!
 itle"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Seam_managed_transactions.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_managed_persistence_contexts-Using_a_Seam_managed_Hibernate_session.html"><strong>Next</strong></a></li></ul><div class="section" title="8.3. Seam-managed persistence contexts"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Seam_managed_persistence_contexts">8.3. Seam-managed persistence contexts</h2></div></div></div><div class="para">
+			If you are using Seam outside of a Java EE 5 environment, you cannot rely upon the container to manage the persistence context lifecycle for you. Even if you are in an EE 5 environment, you might have a complex application with many loosly coupled components that collaborate together in the scope of a single conversation, and in this case you might find that propagation of the persistence context between component is tricky and error-prone.
+		</div><div class="para">
+			In either case, you will need to use a <span class="emphasis"><em>managed persistence context</em></span> (for JPA) or a <span class="emphasis"><em>managed session</em></span> (for Hibernate) in your components. A Seam-managed persistence context is just a built-in Seam component that manages an instance of <code class="literal">EntityManager</code> or <code class="literal">Session</code> in the conversation context. You can inject it with <code class="literal">@In</code>.
+		</div><div class="para">
+			Seam-managed persistence contexts are extremely efficient in a clustered environment. Seam is able to perform an optimization that EJB 3.0 specification does not allow containers to use for container-managed extended persistence contexts. Seam supports transparent failover of extended persisence contexts, without the need to replicate any persistence context state between nodes. (We hope to fix this oversight in the next revision of the EJB spec.)
+		</div><div class="section" title="8.3.1. Using a Seam-managed persistence context with JPA"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Seam_managed_persistence_contexts-Using_a_Seam_managed_persistence_context_with_JPA">8.3.1. Using a Seam-managed persistence context with JPA</h3></div></div></div><div class="para">
+				Configuring a managed persistence context is easy. In <code class="literal">components.xml</code>, we can write:
+			</div><pre class="programlisting">&lt;core:managed-persistence-context name="bookingDatabase" 
+                           auto-create="true"
+            persistence-unit-jndi-name="java:/EntityManagerFactories/bookingData"/&gt;
+</pre><div class="para">
+				This configuration creates a conversation-scoped Seam component named <code class="literal">bookingDatabase</code> that manages the lifecycle of <code class="literal">EntityManager</code> instances for the persistence unit (<code class="literal">EntityManagerFactory</code> instance) with JNDI name <code class="literal">java:/EntityManagerFactories/bookingData</code>.
+			</div><div class="para">
+				Of course, you need to make sure that you have bound the <code class="literal">EntityManagerFactory</code> into JNDI. In JBoss, you can do this by adding the following property setting to <code class="literal">persistence.xml</code>.
+			</div><pre class="programlisting">&lt;property name="jboss.entity.manager.factory.jndi.name" 
+          value="java:/EntityManagerFactories/bookingData"/&gt;
+</pre><div class="para">
+				Now we can have our <code class="literal">EntityManager</code> injected using:
+			</div><pre class="programlisting">@In EntityManager bookingDatabase;
+</pre></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Seam_managed_transactions.html"><strong>Prev</strong>8.2. Seam managed transactions</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_managed_persistence_contexts-Using_a_Seam_managed_Hibernate_session.html"><strong>Next</strong>8.3.2. Using a Seam-managed Hibernate session</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Seam_managed_transactions.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Seam_managed_transactions.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Seam_managed_transactions.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>8.2. Seam managed transactions</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping.html" title="Chapter 8. Seam and Object/Relational Mapping" /><link rel="prev" href="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping.html" title="Chapter 8. Seam and Object/Relational Mapping" /><link rel="next" href="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Seam_managed_persistence_contexts.html" title="8.3. Seam-managed persistence contexts" /></head><body class=""><p id="title"><a class="left" href="ht!
 tp://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Seam_managed_persistence_contexts.html"><strong>Next</strong></a></li></ul><div class="section" title="8.2. Seam managed transactions"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Seam_managed_transactions">8.2. Seam managed transactions</h2></div></div></div><div class="para">
+			EJB session beans feature declarative transaction management. The EJB container is able to start a transaction transparently when the bean is invoked, and end it when the invocation ends. If we write a session bean method that acts as a JSF action listener, we can do all the work associated with that action in one transaction, and be sure that it is committed or rolled back when we finish processing the action. This is a great feature, and all that is needed by some Seam applications.
+		</div><div class="para">
+			However, there is a problem with this approach. A Seam application may not perform all data access for a request from a single method call to a session bean.
+		</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+					The request might require processing by several loosly-coupled components, each of which is called independently from the web layer. It is common to see several or even many calls per request from the web layer to EJB components in Seam.
+				</div></li><li class="listitem"><div class="para">
+					Rendering of the view might require lazy fetching of associations.
+				</div></li></ul></div><div class="para">
+			The more transactions per request, the more likely we are to encounter atomicity and isolation problems when our application is processing many concurrent requests. Certainly, all write operations should occur in the same transaction.
+		</div><div class="para">
+			Hibernate users developed the <span class="emphasis"><em>open session in view</em></span> pattern to work around this problem. In the Hibernate community, <span class="emphasis"><em>open session in view</em></span> was historically even more important because frameworks like Spring use transaction-scoped persistence contexts. So rendering the view would cause <code class="literal">LazyInitializationException</code>s when unfetched associations were accessed.
+		</div><div class="para">
+			This pattern is usually implemented as a single transaction which spans the entire request. There are several problems with this implementation, the most serious being that we can never be sure that a transaction is successful until we commit it—but by the time the <span class="emphasis"><em>open session in view</em></span> transaction is committed, the view is fully rendered, and the rendered response may already have been flushed to the client. How can we notify the user that their transaction was unsuccessful?
+		</div><div class="para">
+			Seam solves both the transaction isolation problem and the association fetching problem, while working around the problems with <span class="emphasis"><em>open session in view</em></span>. The solution comes in two parts:
+		</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+					use an extended persistence context that is scoped to the conversation, instead of to the transaction
+				</div></li><li class="listitem"><div class="para">
+					use two transactions per request; the first spans the beginning of the update model values phase until the end of the invoke application phase; the second spans the render response phase
+				</div></li></ul></div><div class="para">
+			In the next section, we will tell you how to set up a conversation-scope persistence context. But first we need to tell you how to enable Seam transaction management. Note that you can use conversation-scoped persistence contexts without Seam transaction management, and there are good reasons to use Seam transaction management even when you are not using Seam-managed persistence contexts. However, the two facilities were designed to work together, and work best when used together.
+		</div><div class="section" title="8.2.1. Enabling Seam-managed transactions"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Seam_managed_transactions-Enabling_Seam_managed_transactions">8.2.1. Enabling Seam-managed transactions</h3></div></div></div><div class="para">
+				To make use of <span class="emphasis"><em>Seam managed transactions</em></span>, you need to use <code class="literal">TransactionalSeamPhaseListener</code> in place of <code class="literal">SeamPhaseListener</code>.
+			</div><pre class="programlisting">&lt;lifecycle&gt;
+     &lt;phase-listener&gt;
+        org.jboss.seam.jsf.TransactionalSeamPhaseListener
+    &lt;/phase-listener&gt;
+&lt;/lifecycle&gt;
+</pre><div class="para">
+				Seam transaction management is useful even if you are using EJB 3.0 container-managed persistence contexts. But it is especially useful if you use Seam outside a Java EE 5 environment, or in any other case where you would use a Seam-managed persistence context.
+			</div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping.html"><strong>Prev</strong>Chapter 8. Seam and Object/Relational Mapping</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Seam_managed_persistence_contexts.html"><strong>Next</strong>8.3. Seam-managed persistence contexts</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_EL_in_EJB_QLHQL.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_EL_in_EJB_QLHQL.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_EL_in_EJB_QLHQL.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>8.5. Using EL in EJB-QL/HQL</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping.html" title="Chapter 8. Seam and Object/Relational Mapping" /><link rel="prev" href="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_the_JPA_delegate.html" title="8.4. Using the JPA &quot;delegate&quot;" /><link rel="next" href="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_Hibernate_filters.html" title="8.6. Using Hibernate filters" /></head><body class=""><p id="title"><a class="left" href="http://ww!
 w.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_the_JPA_delegate.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_Hibernate_filters.html"><strong>Next</strong></a></li></ul><div class="section" title="8.5. Using EL in EJB-QL/HQL"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_EL_in_EJB_QLHQL">8.5. Using EL in EJB-QL/HQL</h2></div></div></div><div class="para">
+			Seam proxies the <code class="literal">EntityManager</code> or <code class="literal">Session</code> object whenever you use a Seam-managed persistence context or inject a container managed persistence context using <code class="literal">@PersistenceContext</code>. This lets you use EL expressions in your query strings, safely and efficiently. For example, this:
+		</div><pre class="programlisting">User user = em.createQuery("from User where username=#{user.username}")
+         .getSingleResult();
+</pre><div class="para">
+			is equivalent to:
+		</div><pre class="programlisting">User user = em.createQuery("from User where username=:username")
+         .setParameter("username", user.getUsername())
+         .getSingleResult();
+</pre><div class="para">
+			Of course, you should never, ever write it like this:
+		</div><pre class="programlisting">User user = em.createQuery("from User where username=" + user.getUsername()) //BAD!
+         .getSingleResult();
+</pre><div class="para">
+			(It is inefficient and vulnerable to SQL injection attacks.)
+		</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_the_JPA_delegate.html"><strong>Prev</strong>8.4. Using the JPA "delegate"</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_Hibernate_filters.html"><strong>Next</strong>8.6. Using Hibernate filters</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_Hibernate_filters.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_Hibernate_filters.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_Hibernate_filters.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>8.6. Using Hibernate filters</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping.html" title="Chapter 8. Seam and Object/Relational Mapping" /><link rel="prev" href="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_EL_in_EJB_QLHQL.html" title="8.5. Using EL in EJB-QL/HQL" /><link rel="next" href="Seam_Reference_Guide-JSF_form_validation_in_Seam.html" title="Chapter 9. JSF form validation in Seam" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Co!
 mmon_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_EL_in_EJB_QLHQL.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-JSF_form_validation_in_Seam.html"><strong>Next</strong></a></li></ul><div class="section" title="8.6. Using Hibernate filters"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_Hibernate_filters">8.6. Using Hibernate filters</h2></div></div></div><div class="para">
+			The most unique feature of Hibernate is <span class="emphasis"><em>filters</em></span>. Filters let you provide a restricted view of the data in the database. You can find out more about filters in the Hibernate documentation. But we thought we would mention an easy way to incorporate filters into a Seam application, one that works especially well with the Seam Application Framework.
+		</div><div class="para">
+			Seam-managed persistence contexts may have a list of filters defined, which will be enabled whenever an <code class="literal">EntityManager</code> or Hibernate <code class="literal">Session</code> is first created. (Of course, they may only be used when Hibernate is the underlying persistence provider.)
+		</div><pre class="programlisting">&lt;core:filter name="regionFilter"&gt;
+    &lt;core:name&gt;region&lt;/core:name&gt;
+    &lt;core:parameters&gt;
+        &lt;key&gt;regionCode&lt;/key&gt;
+        &lt;value&gt;#{region.code}&lt;/value&gt;
+    &lt;/core:parameters&gt;
+&lt;/core:filter&gt;
+
+&lt;core:filter name="currentFilter"&gt;
+    &lt;core:name&gt;current&lt;/core:name&gt;
+    &lt;core:parameters&gt;
+        &lt;key&gt;date&lt;/key&gt;
+        &lt;value&gt;#{currentDate}&lt;/value&gt;
+    &lt;/core:parameters&gt;
+&lt;/core:filter&gt;
+
+&lt;core:managed-persistence-context name="personDatabase"
+    persistence-unit-jndi-name="java:/EntityManagerFactories/personDatabase"&gt;
+    &lt;core:filters&gt;
+        &lt;value&gt;#{regionFilter}&lt;/value&gt;
+        &lt;value&gt;#{currentFilter}&lt;/value&gt;
+    &lt;/core:filters&gt;
+&lt;/core:managed-persistence-context&gt;
+</pre></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_EL_in_EJB_QLHQL.html"><strong>Prev</strong>8.5. Using EL in EJB-QL/HQL</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-JSF_form_validation_in_Seam.html"><strong>Next</strong>Chapter 9. JSF form validation in Seam</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_the_JPA_delegate.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_the_JPA_delegate.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_the_JPA_delegate.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>8.4. Using the JPA "delegate"</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping.html" title="Chapter 8. Seam and Object/Relational Mapping" /><link rel="prev" href="Seam_Reference_Guide-Seam_managed_persistence_contexts-Seam_managed_persistence_contexts_and_atomic_conversations.html" title="8.3.3. Seam-managed persistence contexts and atomic conversations" /><link rel="next" href="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_EL_in_EJB_QLHQL.html" title="8.5. Using EL in EJB-QL/HQL" /></head!
 ><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_managed_persistence_contexts-Seam_managed_persistence_contexts_and_atomic_conversations.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_EL_in_EJB_QLHQL.html"><strong>Next</strong></a></li></ul><div class="section" title="8.4. Using the JPA &quot;delegate&quot;"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_the_JPA_delegate">8.4. Using the JPA "delegate"</h2></div></div></div><div class="para">
+			The <code class="literal">EntityManager</code> interface lets you access a vendor-specific API via the <code class="literal">getDelegate()</code> method. Naturally, the most interesting vendor is Hibernate, and the most powerful delegate interface is <code class="literal">org.hibernate.Session</code>. You'd be nuts to use anything else. Trust me, I'm not biased at all.
+		</div><div class="para">
+			But regardless of whether you are using Hibernate or something else, you will almost certainly want to use the delegate in your Seam components from time to time. One approach would be the following:
+		</div><pre class="programlisting">@In EntityManager entityManager;
+
+ at Create
+public void init() {
+    ( (Session) entityManager.getDelegate() ).enableFilter("currentVersions");
+}
+</pre><div class="para">
+			But typecasts are unquestionably the ugliest syntax in the Java language, so most people avoid them whenever possible. Here is a different way to get at the delegate. First, add the following line to <code class="literal">components.xml</code>:
+		</div><pre class="programlisting">&lt;factory name="session" 
+         scope="STATELESS" 
+         auto-create="true" 
+         value="#{entityManager.delegate}"/&gt;
+</pre><div class="para">
+			Now we can inject the session directly:
+		</div><pre class="programlisting">@In Session session;
+
+ at Create
+public void init() {
+    session.enableFilter("currentVersions");
+}
+</pre></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_managed_persistence_contexts-Seam_managed_persistence_contexts_and_atomic_conversations.html"><strong>Prev</strong>8.3.3. Seam-managed persistence contexts and atom...</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_EL_in_EJB_QLHQL.html"><strong>Next</strong>8.5. Using EL in EJB-QL/HQL</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 8. Seam and Object/Relational Mapping</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="index.html" title="Seam Reference Guide CP07" /><link rel="prev" href="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Performing_a_task.html" title="7.4.6. Performing a task" /><link rel="next" href="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Seam_managed_transactions.html" title="8.2. Seam managed transactions" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.!
 png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Performing_a_task.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Seam_managed_transactions.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="chapter" title="Chapter 8. Seam and Object/Relational Mapping" lang="en-US"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping">Chapter 8. Seam and Object/Relational Mapping</h2></div></div></div><div class="toc"><dl><dt><span class="section"><a href="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping.html#Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Introduction">8.1. Introductio!
 n</a></span></dt><dt><span class="section"><a href="Seam_Refer!
 ence_Gui
de-Seam_and_ObjectRelational_Mapping-Seam_managed_transactions.html">8.2. Seam managed transactions</a></span></dt><dd><dl><dt><span class="section"><a href="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Seam_managed_transactions.html#Seam_Reference_Guide-Seam_managed_transactions-Enabling_Seam_managed_transactions">8.2.1. Enabling Seam-managed transactions</a></span></dt></dl></dd><dt><span class="section"><a href="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Seam_managed_persistence_contexts.html">8.3. Seam-managed persistence contexts</a></span></dt><dd><dl><dt><span class="section"><a href="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Seam_managed_persistence_contexts.html#Seam_Reference_Guide-Seam_managed_persistence_contexts-Using_a_Seam_managed_persistence_context_with_JPA">8.3.1. Using a Seam-managed persistence context with JPA</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Seam_managed_persistence_contexts-Using_!
 a_Seam_managed_Hibernate_session.html">8.3.2. Using a Seam-managed Hibernate session</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Seam_managed_persistence_contexts-Seam_managed_persistence_contexts_and_atomic_conversations.html">8.3.3. Seam-managed persistence contexts and atomic conversations</a></span></dt></dl></dd><dt><span class="section"><a href="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_the_JPA_delegate.html">8.4. Using the JPA "delegate"</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_EL_in_EJB_QLHQL.html">8.5. Using EL in EJB-QL/HQL</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_Hibernate_filters.html">8.6. Using Hibernate filters</a></span></dt></dl></div><div class="para">
+		Seam provides extensive support for the two most popular persistence architectures for Java: Hibernate3, and the Java Persistence API introduced with EJB 3.0. Seam's unique state-management architecture allows the most sophisticated ORM integration of any web application framework.
+	</div><div class="section" title="8.1. Introduction"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Introduction">8.1. Introduction</h2></div></div></div><div class="para">
+			Seam grew out of the frustration of the Hibernate team with the statelessness typical of the previous generation of Java application architectures. The state management architecture of Seam was originally designed to solve problems relating to persistence—in particular problems associated with <span class="emphasis"><em>optimistic transaction processing</em></span>. Scalable online applications always use optimistic transactions. An atomic (database/JTA) level transaction should not span a user interaction unless the application is designed to support only a very small number of concurrent clients. But almost all interesting work involves first displaying data to a user, and then, slightly later, updating the same data. So Hibernate was designed to support the idea of a persistence context which spanned an optimistic transaction.
+		</div><div class="para">
+			Unfortunately, the so-called <span class="emphasis"><em>stateless</em></span> architectures that preceded Seam and EJB 3.0 had no construct for representing an optimistic transaction. So, instead, these architectures provided persistence contexts scoped to the atomic transaction. This resulted in many problems for users, and is the cause of the number one user complaint about Hibernate: the dreaded <code class="literal">LazyInitializationException</code>. What we need is a construct for representing an optimistic transaction in the application tier.
+		</div><div class="para">
+			EJB 3.0 recognizes this problem, and introduces the idea of a stateful component (a stateful session bean) with an <span class="emphasis"><em>extended persistence context</em></span> scoped to the lifetime of the component. This is a partial solution to the problem (and is a useful construct in and of itself) however there are two problems:
+		</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+					The lifecycle of the stateful session bean must be managed manually via code in the web tier (it turns out that this is a subtle problem and much more difficult in practice than it sounds).
+				</div></li><li class="listitem"><div class="para">
+					Propagation of the persistence context between stateful components in the same optimistic transaction is possible, but tricky.
+				</div></li></ul></div><div class="para">
+			Seam solves the first problem by providing conversations, and stateful session bean components scoped to the conversation. (Most conversations actually represent optimistic transactions in the data layer.) This is sufficient for many simple applications (such as the Seam booking demo) where persistence context propagation is not needed. For more complex applications, with many loosly-interacting components in each conversation, propagation of the persistence context across components becomes an important issue. So Seam extends the persistence context management model of EJB 3.0, to provide conversation-scoped extended persistence contexts.
+		</div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Performing_a_task.html"><strong>Prev</strong>7.4.6. Performing a task</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Seam_managed_transactions.html"><strong>Next</strong>8.2. Seam managed transactions</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_annotations-Annotations_for_Seam_Remoting.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_annotations-Annotations_for_Seam_Remoting.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_annotations-Annotations_for_Seam_Remoting.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>22.8. Annotations for Seam Remoting</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Seam_annotations.html" title="Chapter 22. Seam annotations" /><link rel="prev" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_validation.html" title="22.7. Annotations for validation" /><link rel="next" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_Seam_interceptors.html" title="22.9. Annotations for Seam interceptors" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Conten!
 t/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_validation.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_Seam_interceptors.html"><strong>Next</strong></a></li></ul><div class="section" title="22.8. Annotations for Seam Remoting"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_annotations-Annotations_for_Seam_Remoting">22.8. Annotations for Seam Remoting</h2></div></div></div><div class="para">
+			Seam Remoting requires that the local interface of a session bean be annotated with the following annotation:
+		</div><div class="variablelist"><dl><dt><span class="term"><code class="literal">@WebRemote</code></span></dt><dd><pre class="programlisting">@WebRemote(exclude="path.to.exclude")
+</pre><div class="para">
+						Indicates that the annotated method may be called from client-side JavaScript. The <code class="literal">exclude</code> property is optional and allows objects to be excluded from the result's object graph (see the Remoting chapter for more details).
+					</div></dd></dl></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_validation.html"><strong>Prev</strong>22.7. Annotations for validation</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_Seam_interceptors.html"><strong>Next</strong>22.9. Annotations for Seam interceptors</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_annotations-Annotations_for_Seam_interceptors.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_annotations-Annotations_for_Seam_interceptors.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_annotations-Annotations_for_Seam_interceptors.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>22.9. Annotations for Seam interceptors</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Seam_annotations.html" title="Chapter 22. Seam annotations" /><link rel="prev" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_Seam_Remoting.html" title="22.8. Annotations for Seam Remoting" /><link rel="next" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_asynchronicity.html" title="22.10. Annotations for asynchronicity" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_C!
 ontent/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_Seam_Remoting.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_asynchronicity.html"><strong>Next</strong></a></li></ul><div class="section" title="22.9. Annotations for Seam interceptors"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_annotations-Annotations_for_Seam_interceptors">22.9. Annotations for Seam interceptors</h2></div></div></div><div class="para">
+			The following annotations appear on Seam interceptor classes.
+		</div><div class="para">
+			Please refer to the documentation for the EJB 3.0 specification for information about the annotations required for EJB interceptor definition.
+		</div><div class="variablelist"><dl><dt><span class="term"><code class="literal">@Interceptor</code></span></dt><dd><div class="itemizedlist"><ul><li class="listitem"><pre class="programlisting">@Interceptor(stateless=true)
+</pre><div class="para">
+								Specifies that this interceptor is stateless and Seam may optimize replication.
+							</div></li><li class="listitem"><pre class="programlisting">@Interceptor(type=CLIENT)
+</pre><div class="para">
+								Specifies that this interceptor is a "client-side" interceptor that is called before the EJB container.
+							</div></li><li class="listitem"><pre class="programlisting">@Interceptor(around={SomeInterceptor.class, OtherInterceptor.class})
+</pre><div class="para">
+								Specifies that this interceptor is positioned higher in the stack than the given interceptors.
+							</div></li><li class="listitem"><pre class="programlisting">@Interceptor(within={SomeInterceptor.class, OtherInterceptor.class})
+</pre><div class="para">
+								Specifies that this interceptor is positioned deeper in the stack than the given interceptors.
+							</div></li></ul></div></dd></dl></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_Seam_Remoting.html"><strong>Prev</strong>22.8. Annotations for Seam Remoting</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_asynchronicity.html"><strong>Next</strong>22.10. Annotations for asynchronicity</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_annotations-Annotations_for_asynchronicity.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_annotations-Annotations_for_asynchronicity.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_annotations-Annotations_for_asynchronicity.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>22.10. Annotations for asynchronicity</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Seam_annotations.html" title="Chapter 22. Seam annotations" /><link rel="prev" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_Seam_interceptors.html" title="22.9. Annotations for Seam interceptors" /><link rel="next" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_use_with_JSF_dataTable.html" title="22.11. Annotations for use with JSF dataTable" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/do!
 cs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_Seam_interceptors.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_use_with_JSF_dataTable.html"><strong>Next</strong></a></li></ul><div class="section" title="22.10. Annotations for asynchronicity"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_annotations-Annotations_for_asynchronicity">22.10. Annotations for asynchronicity</h2></div></div></div><div class="para">
+			The following annotations are used to declare an asynchronous method, for example:
+		</div><pre class="programlisting">@Asynchronous public void scheduleAlert(Alert alert, @Expiration Date date) { ... }
+</pre><pre class="programlisting">@Asynchronous public Timer scheduleAlerts(Alert alert, @Expiration Date date, 
+ at IntervalDuration long interval) { ... }
+</pre><div class="variablelist"><dl><dt><span class="term"><code class="literal">@Asynchronous</code></span></dt><dd><pre class="programlisting">@Asynchronous
+</pre><div class="para">
+						Specifies that the method call is processed asynchronously.
+					</div></dd><dt><span class="term"><code class="literal">@Duration</code></span></dt><dd><pre class="programlisting">@Duration
+</pre><div class="para">
+						Specifies that a parameter of the asynchronous call is the duration before the call is processed (or first processed for recurring calls).
+					</div></dd><dt><span class="term"><code class="literal">@Expiration</code></span></dt><dd><pre class="programlisting">@Expiration
+</pre><div class="para">
+						Specifies that a parameter of the asynchronous call is the datetime at which the call is processed (or first processed for recurring calls).
+					</div></dd><dt><span class="term"><code class="literal">@IntervalDuration</code></span></dt><dd><pre class="programlisting">@IntervalDuration
+</pre><div class="para">
+						Specifies that an asynchronous method call recurs, and that the annotationed parameter is duration between recurrences.
+					</div></dd></dl></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_Seam_interceptors.html"><strong>Prev</strong>22.9. Annotations for Seam interceptors</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_use_with_JSF_dataTable.html"><strong>Next</strong>22.11. Annotations for use with JSF dataTable</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_annotations-Annotations_for_bijection.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_annotations-Annotations_for_bijection.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_annotations-Annotations_for_bijection.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>22.2. Annotations for bijection</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Seam_annotations.html" title="Chapter 22. Seam annotations" /><link rel="prev" href="Seam_Reference_Guide-Seam_annotations.html" title="Chapter 22. Seam annotations" /><link rel="next" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_component_lifecycle_methods.html" title="22.3. Annotations for component lifecycle methods" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image!
 _left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_annotations.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_component_lifecycle_methods.html"><strong>Next</strong></a></li></ul><div class="section" title="22.2. Annotations for bijection"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_annotations-Annotations_for_bijection">22.2. Annotations for bijection</h2></div></div></div><div class="para">
+			The next two annotations control bijection. These attributes occur on component instance variables or property accessor methods.
+		</div><div class="variablelist"><dl><dt id="in-annotation"><span class="term"><code class="literal">@In</code></span></dt><dd><pre class="programlisting">@In
+</pre><div class="para">
+						Specifies that a component attribute is to be injected from a context variable at the beginning of each component invocation. If the context variable is null, an exception will be thrown.
+					</div><pre class="programlisting">@In(required=false)
+</pre><div class="para">
+						Specifies that a component attribute is to be injected from a context variable at the beginning of each component invocation. The context variable may be null.
+					</div><pre class="programlisting">@In(create=true)
+</pre><div class="para">
+						Specifies that a component attribute is to be injected from a context variable at the beginning of each component invocation. If the context variable is null, an instance of the component is instantiated by Seam.
+					</div><pre class="programlisting">@In(value="contextVariableName")
+</pre><div class="para">
+						Specifies the name of the context variable explicitly, instead of using the annotated instance variable name.
+					</div><pre class="programlisting">@In(value="#{customer.addresses['shipping']}")
+</pre><div class="para">
+						Specifies that a component attribute is to be injected by evaluating a JSF EL expression at the beginning of each component invocation.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">value</code> — specifies the name of the context variable. Default to the name of the component attribute. Alternatively, specifies a JSF EL expression, surrounded by <code class="literal">#{...}</code>.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">create</code> — specifies that Seam should instantiate the component with the same name as the context variable if the context variable is undefined (null) in all contexts. Default to false.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">required</code> — specifies Seam should throw an exception if the context variable is undefined in all contexts.
+							</div></li></ul></div></dd><dt id="out-annotation"><span class="term"><code class="literal">@Out</code></span></dt><dd><pre class="programlisting">@Out
+</pre><div class="para">
+						Specifies that a component attribute that is a Seam component is to be outjected to its context variable at the end of the invocation. If the attribute is null, an exception is thrown.
+					</div><pre class="programlisting">@Out(required=false)
+</pre><div class="para">
+						Specifies that a component attribute that is a Seam component is to be outjected to its context variable at the end of the invocation. The attribute may be null.
+					</div><pre class="programlisting">@Out(scope=ScopeType.SESSION)
+</pre><div class="para">
+						Specifies that a component attribute that is <span class="emphasis"><em>not</em></span> a Seam component type is to be outjected to a specific scope at the end of the invocation.
+					</div><div class="para">
+						Alternatively, if no scope is explicitly specified, the scope of the component with the <code class="literal">@Out</code> attribute is used (or the <code class="literal">EVENT</code> scope if the component is stateless).
+					</div><pre class="programlisting">@Out(value="contextVariableName")
+</pre><div class="para">
+						Specifies the name of the context variable explicitly, instead of using the annotated instance variable name.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">value</code> — specifies the name of the context variable. Default to the name of the component attribute.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">required</code> — specifies Seam should throw an exception if the component attribute is null during outjection.
+							</div></li></ul></div></dd></dl></div><div class="para">
+			Note that it is quite common for these annotations to occur together, for example:
+		</div><pre class="programlisting">@In(create=true) @Out private User currentUser;
+</pre><div class="para">
+			The next annotation supports the <span class="emphasis"><em>manager component</em></span> pattern, where a Seam component that manages the lifecycle of an instance of some other class that is to be injected. It appears on a component getter method.
+		</div><div class="variablelist"><dl><dt><span class="term"><code class="literal">@Unwrap</code></span></dt><dd><pre class="programlisting">@Unwrap
+</pre><div class="para">
+						Specifies that the object returned by the annotated getter method is the thing that is injected instead of the component instance itself.
+					</div></dd></dl></div><div class="para">
+			The next annotation supports the <span class="emphasis"><em>factory component</em></span> pattern, where a Seam component is responsible for initializing the value of a context variable. This is especially useful for initializing any state needed for rendering the response to a non-faces request. It appears on a component method.
+		</div><div class="variablelist"><dl><dt><span class="term"><code class="literal">@Factory</code></span></dt><dd><pre class="programlisting">@Factory("processInstance")
+</pre><div class="para">
+						Specifies that the method of the component is used to initialize the value of the named context variable, when the context variable has no value. This style is used with methods that return <code class="literal">void</code>.
+					</div><pre class="programlisting">@Factory("processInstance", scope=CONVERSATION)
+</pre><div class="para">
+						Specifies that the method returns a value that Seam should use to initialize the value of the named context variable, when the context variable has no value. This style is used with methods that return a value. If no scope is explicitly specified, the scope of the component with the <code class="literal">@Factory</code> method is used (unless the component is stateless, in which case the <code class="literal">EVENT</code> context is used).
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">value</code> — specifies the name of the context variable. If the method is a getter method, default to the JavaBeans property name.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">scope</code> — specifies the scope that Seam should bind the returned value to. Only meaningful for factory methods which return a value.
+							</div></li></ul></div></dd></dl></div><div class="para">
+			This annotation lets you inject a <code class="literal">Log</code>:
+		</div><div class="variablelist"><dl><dt><span class="term"><code class="literal">@Logger</code></span></dt><dd><pre class="programlisting">@Logger("categoryName")
+</pre><div class="para">
+						Specifies that a component field is to be injected with an instance of <code class="literal">org.jboss.seam.log.Log</code>. For entity beans, the field must be declared as static.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">value</code> — specifies the name of the log category. Default to the name of the component class.
+							</div></li></ul></div></dd></dl></div><div class="para">
+			The last annotation lets you inject a request parameter value:
+		</div><div class="variablelist"><dl><dt><span class="term"><code class="literal">@RequestParameter</code></span></dt><dd><pre class="programlisting">@RequestParameter("parameterName")
+</pre><div class="para">
+						Specifies that a component attribute is to be injected with the value of a request parameter. Basic type conversions are performed automatically.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">value</code> — specifies the name of the request parameter. Default to the name of the component attribute.
+							</div></li></ul></div></dd></dl></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_annotations.html"><strong>Prev</strong>Chapter 22. Seam annotations</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_component_lifecycle_methods.html"><strong>Next</strong>22.3. Annotations for component lifecycle methods</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_annotations-Annotations_for_component_lifecycle_methods.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_annotations-Annotations_for_component_lifecycle_methods.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_annotations-Annotations_for_component_lifecycle_methods.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>22.3. Annotations for component lifecycle methods</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Seam_annotations.html" title="Chapter 22. Seam annotations" /><link rel="prev" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_bijection.html" title="22.2. Annotations for bijection" /><link rel="next" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_context_demarcation.html" title="22.4. Annotations for context demarcation" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img sr!
 c="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_bijection.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_context_demarcation.html"><strong>Next</strong></a></li></ul><div class="section" title="22.3. Annotations for component lifecycle methods"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_annotations-Annotations_for_component_lifecycle_methods">22.3. Annotations for component lifecycle methods</h2></div></div></div><div class="para">
+			These annotations allow a component to react to its own lifecycle events. They occur on methods of the component. There may be only one of each per component class.
+		</div><div class="variablelist"><dl><dt><span class="term"><code class="literal">@Create</code></span></dt><dd><pre class="programlisting">@Create
+</pre><div class="para">
+						Specifies that the method should be called when an instance of the component is instantiated by Seam. Note that create methods are only supported for JavaBeans and stateful session beans.
+					</div></dd><dt id="destroy-annotation"><span class="term"><code class="literal">@Destroy</code></span></dt><dd><pre class="programlisting">@Destroy
+</pre><div class="para">
+						Specifies that the method should be called when the context ends and its context variables are destroyed. Note that create methods are only supported for JavaBeans and stateful session beans.
+					</div><div class="para">
+						Note that all stateful session bean components <span class="emphasis"><em>must</em></span> define a method annotated <code class="literal">@Destroy @Remove</code> in order to guarantee destruction of the stateful bean when a context ends.
+					</div><div class="para">
+						Destroy methods should be used only for cleanup. <span class="emphasis"><em>Seam catches, logs and swallows any exception that propagates out of a destroy method.</em></span>
+					</div></dd><dt><span class="term"><code class="literal">@Observer</code></span></dt><dd><pre class="programlisting">@Observer("somethingChanged")
+</pre><div class="para">
+						Specifies that the method should be called when a component-driven event of the specified type occurs.
+					</div><pre class="programlisting">@Observer(value="somethingChanged",create=false)
+</pre><div class="para">
+						Specifies that the method should be called when an event of the specified type occurs but that an instance should not be created if one doesn't exist. If an instance does not exist and create is false, the event will not be observed. The default value for create is true.
+					</div></dd></dl></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_bijection.html"><strong>Prev</strong>22.2. Annotations for bijection</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_context_demarcation.html"><strong>Next</strong>22.4. Annotations for context demarcation</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_annotations-Annotations_for_context_demarcation.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_annotations-Annotations_for_context_demarcation.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_annotations-Annotations_for_context_demarcation.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>22.4. Annotations for context demarcation</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Seam_annotations.html" title="Chapter 22. Seam annotations" /><link rel="prev" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_component_lifecycle_methods.html" title="22.3. Annotations for component lifecycle methods" /><link rel="next" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_transaction_demarcation.html" title="22.5. Annotations for transaction demarcation" /></head><body class=""><p id="title"><a class="left" href=!
 "http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_component_lifecycle_methods.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_transaction_demarcation.html"><strong>Next</strong></a></li></ul><div class="section" title="22.4. Annotations for context demarcation"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_annotations-Annotations_for_context_demarcation">22.4. Annotations for context demarcation</h2></div></div></div><div class="para">
+			These annotations provide declarative conversation demarcation. They appear on methods of Seam components, usually action listener methods.
+		</div><div class="para">
+			Every web request has a conversation context associated with it. Most of these conversations end at the end of the request. If you want a conversation that span multiple requests, you must "promote" the current conversation to a <span class="emphasis"><em>long-running conversation</em></span> by calling a method marked with <code class="literal">@Begin</code>.
+		</div><div class="variablelist"><dl><dt id="begin-annotation"><span class="term"><code class="literal">@Begin</code></span></dt><dd><div class="itemizedlist"><ul><li class="listitem"><pre class="programlisting">@Begin
+</pre><div class="para">
+								Specifies that a long-running conversation begins when this method returns a non-null outcome without exception.
+							</div></li><li class="listitem"><pre class="programlisting">@Begin(ifOutcome={"success", "continue"})
+</pre><div class="para">
+								Specifies that a long-running conversation begins when this action listener method returns with one of the given outcomes.
+							</div></li><li class="listitem"><pre class="programlisting">@Begin(join=true)
+</pre><div class="para">
+								Specifies that if a long-running conversation is already in progress, the conversation context is simply propagated.
+							</div></li><li class="listitem"><pre class="programlisting">@Begin(nested=true)
+</pre><div class="para">
+								Specifies that if a long-running conversation is already in progress, a new <span class="emphasis"><em>nested</em></span> conversation context begins. The nested conversation will end when the next <code class="literal">@End</code> is encountered, and the outer conversation will resume. It is perfectly legal for multiple nested conversations to exist concurrently in the same outer conversation.
+							</div></li><li class="listitem"><pre class="programlisting">@Begin(pageflow="process definition name")
+</pre><div class="para">
+								Specifies a jBPM process definition name that defines the pageflow for this conversation.
+							</div></li><li class="listitem"><pre class="programlisting">@Begin(flushMode=FlushModeType.MANUAL)
+</pre><div class="para">
+								Specify the flush mode of any Seam-managed persistence contexts. <code class="literal">flushMode=FlushModeType.MANUAL</code> supports the use of <span class="emphasis"><em>atomic conversations</em></span> where all write operations are queued in the conversation context until an explicit call to <code class="literal">flush()</code> (which usually occurs at the end of the conversation).
+							</div></li><li class="listitem"><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+										<code class="literal">ifOutcome</code> — specifies the JSF outcome or outcomes that result in a new long-running conversation context.
+									</div></li><li class="listitem"><div class="para">
+										<code class="literal">join</code> — determines the behavior when a long-running conversation is already in progress. If <code class="literal">true</code>, the context is propagated. If <code class="literal">false</code>, an exception is thrown. Default to <code class="literal">false</code>. This setting is ignored when <code class="literal">nested=true</code> is specified
+									</div></li><li class="listitem"><div class="para">
+										<code class="literal">nested</code> — specifies that a nested conversation should be started if a long-running conversation is already in progress.
+									</div></li><li class="listitem"><div class="para">
+										<code class="literal">flushMode</code> — set the flush mode of any Seam-managed Hibernate sessions or JPA persistence contexts that are created during this conversation.
+									</div></li><li class="listitem"><div class="para">
+										<code class="literal">pageflow</code> — a process definition name of a jBPM process definition deployed via <code class="literal">org.jboss.seam.core.jbpm.pageflowDefinitions.</code>
+									</div></li></ul></div></li></ul></div></dd><dt id="end-annotation"><span class="term"><code class="literal">@End</code></span></dt><dd><div class="itemizedlist"><ul><li class="listitem"><pre class="programlisting">@End
+</pre><div class="para">
+								Specifies that a long-running conversation ends when this method returns a non-null outcome without exception.
+							</div></li><li class="listitem"><pre class="programlisting">@End(ifOutcome={"success", "error"}, evenIfException={SomeException.class, OtherException.class})
+</pre><div class="para">
+								Specifies that a long-running conversation ends when this action listener method returns with one of the given outcomes or throws one of the specified classes of exception.
+							</div></li><li class="listitem"><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+										<code class="literal">ifOutcome</code> — specifies the JSF outcome or outcomes that result in the end of the current long-running conversation.
+									</div></li><li class="listitem"><div class="para">
+										<code class="literal">beforeRedirect</code> — by default, the conversation will not actually be destroyed until after any redirect has occurred. Setting <code class="literal">beforeRedirect=true</code> specifies that the conversation should be destroyed at the end of the current request, and that the redirect will be processed in a new temporary conversation context.
+									</div></li></ul></div></li></ul></div></dd><dt><span class="term"><code class="literal">@StartTask</code></span></dt><dd><pre class="programlisting">@StartTask
+</pre><div class="para">
+						"Starts" a jBPM task. Specifies that a long-running conversation begins when this method returns a non-null outcome without exception. This conversation is associated with the jBPM task specified in the named request parameter. Within the context of this conversation, a business process context is also defined, for the business process instance of the task instance.
+					</div><div class="para">
+						The jBPM <code class="literal">TaskInstance</code> will be available in a request context variable named <code class="literal">taskInstance</code>. The jPBM <code class="literal">ProcessInstance</code> will be available in a request context variable named <code class="literal">processInstance</code>. (Of course, these objects are available for injection via <code class="literal">@In</code>.)
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">taskIdParameter</code> — the name of a request parameter which holds the id of the task. Default to <code class="literal">"taskId"</code>, which is also the default used by the Seam <code class="literal">taskList</code> JSF component.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">flushMode</code> — set the flush mode of any Seam-managed Hibernate sessions or JPA persistence contexts that are created during this conversation.
+							</div></li></ul></div></dd><dt><span class="term"><code class="literal">@BeginTask</code></span></dt><dd><pre class="programlisting">@BeginTask
+</pre><div class="para">
+						Resumes work on an incomplete jBPM task. Specifies that a long-running conversation begins when this method returns a non-null outcome without exception. This conversation is associated with the jBPM task specified in the named request parameter. Within the context of this conversation, a business process context is also defined, for the business process instance of the task instance.
+					</div><div class="para">
+						The jBPM <code class="literal">TaskInstance</code> will be available in a request context variable named <code class="literal">taskInstance</code>. The jPBM <code class="literal">ProcessInstance</code> will be available in a request context variable named <code class="literal">processInstance</code>.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">taskIdParameter</code> — the name of a request parameter which holds the id of the task. Default to <code class="literal">"taskId"</code>, which is also the default used by the Seam <code class="literal">taskList</code> JSF component.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">flushMode</code> — set the flush mode of any Seam-managed Hibernate sessions or JPA persistence contexts that are created during this conversation.
+							</div></li></ul></div></dd><dt><span class="term"><code class="literal">@EndTask</code></span></dt><dd><div class="itemizedlist"><ul><li class="listitem"><pre class="programlisting">@EndTask
+</pre><div class="para">
+								"Ends" a jBPM task. Specifies that a long-running conversation ends when this method returns a non-null outcome, and that the current task is complete. Triggers a jBPM transition. The actual transition triggered will be the default transition unless the application has called <code class="literal">Transition.setName()</code> on the built-in component named <code class="literal">transition</code>.
+							</div></li><li class="listitem"><pre class="programlisting">@EndTask(transition="transitionName")
+</pre><div class="para">
+								Triggers the given jBPM transition.
+							</div></li><li class="listitem"><pre class="programlisting">@EndTask(ifOutcome={"success", "continue"})
+</pre><div class="para">
+								Specifies that the task ends when this method returns one of the listed outcomes.
+							</div></li><li class="listitem"><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+										<code class="literal">transition</code> — the name of the jBPM transition to be triggered when ending the task. Defaults to the default transition.
+									</div></li><li class="listitem"><div class="para">
+										<code class="literal">ifOutcome</code> — specifies the JSF outcome or outcomes that result in the end of the task.
+									</div></li><li class="listitem"><div class="para">
+										<code class="literal">beforeRedirect</code> — by default, the conversation will not actually be destroyed until after any redirect has occurred. Setting <code class="literal">beforeRedirect=true</code> specifies that the conversation should be destroyed at the end of the current request, and that the redirect will be processed in a new temporary conversation context.
+									</div></li></ul></div></li></ul></div></dd><dt><span class="term"><code class="literal">@CreateProcess</code></span></dt><dd><pre class="programlisting">@CreateProcess(definition="process definition name")
+</pre><div class="para">
+						Creates a new jBPM process instance when the method returns a non-null outcome without exception. The <code class="literal">ProcessInstance</code> object will be available in a context variable named <code class="literal">processInstance</code>.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">definition</code> — the name of the jBPM process definition deployed via <code class="literal">org.jboss.seam.core.jbpm.processDefinitions</code>.
+							</div></li></ul></div></dd><dt><span class="term"><code class="literal">@ResumeProcess</code></span></dt><dd><pre class="programlisting">@ResumeProcess(processIdParameter="processId")
+</pre><div class="para">
+						Re-enters the scope of an existing jBPM process instance when the method returns a non-null outcome without exception. The <code class="literal">ProcessInstance</code> object will be available in a context variable named <code class="literal">processInstance</code>.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">processIdParameter</code> — the name a request parameter holding the process id. Default to <code class="literal">"processId"</code>.
+							</div></li></ul></div></dd></dl></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_component_lifecycle_methods.html"><strong>Prev</strong>22.3. Annotations for component lifecycle methods</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_transaction_demarcation.html"><strong>Next</strong>22.5. Annotations for transaction demarcation</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_annotations-Annotations_for_exceptions.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_annotations-Annotations_for_exceptions.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_annotations-Annotations_for_exceptions.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>22.6. Annotations for exceptions</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Seam_annotations.html" title="Chapter 22. Seam annotations" /><link rel="prev" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_transaction_demarcation.html" title="22.5. Annotations for transaction demarcation" /><link rel="next" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_validation.html" title="22.7. Annotations for validation" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Comm!
 on_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_transaction_demarcation.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_validation.html"><strong>Next</strong></a></li></ul><div class="section" title="22.6. Annotations for exceptions"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_annotations-Annotations_for_exceptions">22.6. Annotations for exceptions</h2></div></div></div><div class="para">
+			These annotations let you specify how Seam should handle an exception that propagates out of a Seam component.
+		</div><div class="variablelist"><dl><dt><span class="term"><code class="literal">@Redirect</code></span></dt><dd><pre class="programlisting">@Redirect(viewId="error.jsp")
+</pre><div class="para">
+						Specifies that the annotated exception causes a browser redirect to a specified view id.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">viewId</code> — specifies the JSF view id to redirect to.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">message</code> — a message to be displayed, default to the exception message.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">end</code> — specifies that the long-running conversation should end, default to <code class="literal">false</code>.
+							</div></li></ul></div></dd><dt><span class="term"><code class="literal">@HttpError</code></span></dt><dd><pre class="programlisting">@HttpError(errorCode=404)
+</pre><div class="para">
+						Specifies that the annotated exception causes a HTTP error to be sent.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">errorCode</code> — the HTTP error code, default to <code class="literal">500</code>.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">message</code> — a message to be sent with the HTTP error, default to the exception message.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">end</code> — specifies that the long-running conversation should end, default to <code class="literal">false</code>.
+							</div></li></ul></div></dd></dl></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_transaction_demarcation.html"><strong>Prev</strong>22.5. Annotations for transaction demarcation</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_validation.html"><strong>Next</strong>22.7. Annotations for validation</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_annotations-Annotations_for_packaging.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_annotations-Annotations_for_packaging.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_annotations-Annotations_for_packaging.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>22.13. Annotations for packaging</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Seam_annotations.html" title="Chapter 22. Seam annotations" /><link rel="prev" href="Seam_Reference_Guide-Seam_annotations-Meta_annotations_for_databinding.html" title="22.12. Meta-annotations for databinding" /><link rel="next" href="components.html" title="Chapter 23. Built-in Seam components" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a !
 class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_annotations-Meta_annotations_for_databinding.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="components.html"><strong>Next</strong></a></li></ul><div class="section" title="22.13. Annotations for packaging"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_annotations-Annotations_for_packaging">22.13. Annotations for packaging</h2></div></div></div><div class="para">
+			This annotation provides a mechanism for declaring information about a set of components that are packaged together. It can be applied to any Java package.
+		</div><div class="variablelist"><dl><dt><span class="term"><code class="literal">@Namespace</code></span></dt><dd><pre class="programlisting">@Namespace(value="http://jboss.com/products/seam/example/seampay")
+</pre><div class="para">
+						Specifies that components in the current package are associated with the given namespace. The declared namespace can be used as an XML namespace in a <code class="literal">components.xml</code> file to simplify application configuration.
+					</div><pre class="programlisting">@Namespace(value="http://jboss.com/products/seam/core", prefix="org.jboss.seam.core")
+</pre><div class="para">
+						Specifies a namespace to associate with a given package. Additionally, it specifies a component name prefix to be applied to component names specified in the XML file. For example, an XML element named <code class="literal">microcontainer</code> that is associated with this namespace would be understood to actually refere to a component named <code class="literal">org.jboss.seam.core.microcontainer</code>.
+					</div></dd></dl></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_annotations-Meta_annotations_for_databinding.html"><strong>Prev</strong>22.12. Meta-annotations for databinding</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="components.html"><strong>Next</strong>Chapter 23. Built-in Seam components</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_annotations-Annotations_for_transaction_demarcation.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_annotations-Annotations_for_transaction_demarcation.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_annotations-Annotations_for_transaction_demarcation.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>22.5. Annotations for transaction demarcation</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Seam_annotations.html" title="Chapter 22. Seam annotations" /><link rel="prev" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_context_demarcation.html" title="22.4. Annotations for context demarcation" /><link rel="next" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_exceptions.html" title="22.6. Annotations for exceptions" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src=!
 "Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_context_demarcation.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_exceptions.html"><strong>Next</strong></a></li></ul><div class="section" title="22.5. Annotations for transaction demarcation"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_annotations-Annotations_for_transaction_demarcation">22.5. Annotations for transaction demarcation</h2></div></div></div><div class="para">
+			Seam provides an annotation that lets you force a rollback of the JTA transaction for certain action listener outcomes.
+		</div><div class="variablelist"><dl><dt><span class="term"><code class="literal">@Rollback</code></span></dt><dd><pre class="programlisting">@Rollback(ifOutcome={"failure", "not-found"})
+</pre><div class="para">
+						If the outcome of the method matches any of the listed outcomes, or if no outcomes are listed, set the transaction to rollback only when the method completes.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">ifOutcome</code> — the JSF outcomes that cause a transaction rollback (no outcomes is interpreted to mean any outcome).
+							</div></li></ul></div></dd><dt><span class="term"><code class="literal">@Transactional</code></span></dt><dd><pre class="programlisting">@Transactional
+</pre><div class="para">
+						Specifies that a JavaBean component should have a similar transactional behavior to the default behavior of a session bean component. ie. method invocations should take place in a transaction, and if no transaction exists when the method is called, a transaction will be started just for that method. This annotation may be applied at either class or method level.
+					</div></dd></dl></div><div class="para">
+			Seam applications usually use the standard EJB3 annotations for all other transaction demarcation needs.
+		</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_context_demarcation.html"><strong>Prev</strong>22.4. Annotations for context demarcation</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_exceptions.html"><strong>Next</strong>22.6. Annotations for exceptions</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_annotations-Annotations_for_use_with_JSF_dataTable.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_annotations-Annotations_for_use_with_JSF_dataTable.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_annotations-Annotations_for_use_with_JSF_dataTable.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>22.11. Annotations for use with JSF dataTable</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Seam_annotations.html" title="Chapter 22. Seam annotations" /><link rel="prev" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_asynchronicity.html" title="22.10. Annotations for asynchronicity" /><link rel="next" href="Seam_Reference_Guide-Seam_annotations-Meta_annotations_for_databinding.html" title="22.12. Meta-annotations for databinding" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img !
 src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_asynchronicity.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_annotations-Meta_annotations_for_databinding.html"><strong>Next</strong></a></li></ul><div class="section" title="22.11. Annotations for use with JSF dataTable"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_annotations-Annotations_for_use_with_JSF_dataTable">22.11. Annotations for use with JSF <code class="literal">dataTable</code></h2></div></div></div><div class="para">
+			The following annotations make it easy to implement clickable lists backed by a stateful session bean. They appear on attributes.
+		</div><div class="variablelist"><dl><dt id="datamodel-annotation"><span class="term"><code class="literal">@DataModel</code></span></dt><dd><pre class="programlisting">@DataModel("variableName")
+</pre><div class="para">
+						Exposes an attribute of type <code class="literal">List</code>, <code class="literal">Map</code>, <code class="literal">Set</code> or <code class="literal">Object[]</code> as a JSF <code class="literal">DataModel</code> into the scope of the owning component (or the <code class="literal">EVENT</code> scope if the owning component is <code class="literal">STATELESS</code>). In the case of <code class="literal">Map</code>, each row of the <code class="literal">DataModel</code> is a <code class="literal">Map.Entry</code>.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">value</code> — name of the conversation context variable. Default to the attribute name.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">scope</code> — if <code class="literal">scope=ScopeType.PAGE</code> is explicitly specified, the <code class="literal">DataModel</code> will be kept in the <code class="literal">PAGE</code> context.
+							</div></li></ul></div></dd><dt><span class="term"><code class="literal">@DataModelSelection</code></span></dt><dd><pre class="programlisting">@DataModelSelection
+</pre><div class="para">
+						Injects the selected value from the JSF <code class="literal">DataModel</code> (this is the element of the underlying collection, or the map value).
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">value</code> — name of the conversation context variable. Not needed if there is exactly one <code class="literal">@DataModel</code> in the component.
+							</div></li></ul></div></dd><dt><span class="term"><code class="literal">@DataModelSelectionIndex</code></span></dt><dd><pre class="programlisting">@DataModelSelectionIndex
+</pre><div class="para">
+						Exposes the selection index of the JSF <code class="literal">DataModel</code> as an attribute of the component (this is the row number of the underlying collection, or the map key).
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">value</code> — name of the conversation context variable. Not needed if there is exactly one <code class="literal">@DataModel</code> in the component.
+							</div></li></ul></div></dd></dl></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_asynchronicity.html"><strong>Prev</strong>22.10. Annotations for asynchronicity</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_annotations-Meta_annotations_for_databinding.html"><strong>Next</strong>22.12. Meta-annotations for databinding</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_annotations-Annotations_for_validation.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_annotations-Annotations_for_validation.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_annotations-Annotations_for_validation.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>22.7. Annotations for validation</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Seam_annotations.html" title="Chapter 22. Seam annotations" /><link rel="prev" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_exceptions.html" title="22.6. Annotations for exceptions" /><link rel="next" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_Seam_Remoting.html" title="22.8. Annotations for Seam Remoting" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/im!
 age_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_exceptions.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_Seam_Remoting.html"><strong>Next</strong></a></li></ul><div class="section" title="22.7. Annotations for validation"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_annotations-Annotations_for_validation">22.7. Annotations for validation</h2></div></div></div><div class="para">
+			This annotation triggers Hibernate Validator. It appears on a method of a Seam component, almost always an action listener method.
+		</div><div class="para">
+			Please refer to the documentation for the Hibernate Annotations package for information about the annotations defined by the Hibernate Validator framework.
+		</div><div class="para">
+			<span class="emphasis"><em>Note that use of <code class="literal">@IfInvalid</code> is now semi-deprecated and <code class="literal">&lt;s:validateAll&gt;</code> is now preferred.</em></span>
+		</div><div class="variablelist"><dl><dt><span class="term"><code class="literal">@IfInvalid</code></span></dt><dd><pre class="programlisting">@IfInvalid(outcome="invalid", refreshEntities=true)
+</pre><div class="para">
+						Specifies that Hibernate Validator should validate the component before the method is invoked. If the invocation fails, the specified outcome will be returned, and the validation failure messages returned by Hibernate Validator will be added to the <code class="literal">FacesContext</code>. Otherwise, the invocation will proceed.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">outcome</code> — the JSF outcome when validation fails.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">refreshEntities</code> — specifies that any invalid entity in the managed state should be refreshed from the database when validation fails. Default to <code class="literal">false</code>. (Useful with extended persistence contexts.)
+							</div></li></ul></div></dd></dl></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_exceptions.html"><strong>Prev</strong>22.6. Annotations for exceptions</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_Seam_Remoting.html"><strong>Next</strong>22.8. Annotations for Seam Remoting</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_annotations-Meta_annotations_for_databinding.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_annotations-Meta_annotations_for_databinding.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_annotations-Meta_annotations_for_databinding.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>22.12. Meta-annotations for databinding</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Seam_annotations.html" title="Chapter 22. Seam annotations" /><link rel="prev" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_use_with_JSF_dataTable.html" title="22.11. Annotations for use with JSF dataTable" /><link rel="next" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_packaging.html" title="22.13. Annotations for packaging" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src=!
 "Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_use_with_JSF_dataTable.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_packaging.html"><strong>Next</strong></a></li></ul><div class="section" title="22.12. Meta-annotations for databinding"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_annotations-Meta_annotations_for_databinding">22.12. Meta-annotations for databinding</h2></div></div></div><div class="para">
+			These meta-annotations make it possible to implement similar functionality to <code class="literal">@DataModel</code> and <code class="literal">@DataModelSelection</code> for other datastructures apart from lists.
+		</div><div class="variablelist"><dl><dt><span class="term"><code class="literal">@DataBinderClass</code></span></dt><dd><pre class="programlisting">@DataBinderClass(DataModelBinder.class)
+</pre><div class="para">
+						Specifies that an annotation is a databinding annotation.
+					</div></dd><dt><span class="term"><code class="literal">@DataSelectorClass</code></span></dt><dd><pre class="programlisting">@DataSelectorClass(DataModelSelector.class)
+</pre><div class="para">
+						Specifies that an annotation is a dataselection annotation.
+					</div></dd></dl></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_use_with_JSF_dataTable.html"><strong>Prev</strong>22.11. Annotations for use with JSF dataTable</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_packaging.html"><strong>Next</strong>22.13. Annotations for packaging</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_annotations.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_annotations.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_annotations.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 22. Seam annotations</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="index.html" title="Seam Reference Guide CP07" /><link rel="prev" href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_SFSB_and_Session_Timeouts_in_JBoss_AS.html" title="21.8. Configuring SFSB and Session Timeouts in JBoss AS" /><link rel="next" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_bijection.html" title="22.2. Annotations for bijection" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img!
  src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_SFSB_and_Session_Timeouts_in_JBoss_AS.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_bijection.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="chapter" title="Chapter 22. Seam annotations" lang="en-US"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_annotations">Chapter 22. Seam annotations</h2></div></div></div><div class="toc"><dl><dt><span class="section"><a href="Seam_Reference_Guide-Seam_annotations.html#Seam_Reference_Guide-Seam_annotations-Annotations_for_component_definition">22.1. Annotati!
 ons for component definition</a></span></dt><dt><span class="s!
 ection">
<a href="Seam_Reference_Guide-Seam_annotations-Annotations_for_bijection.html">22.2. Annotations for bijection</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Seam_annotations-Annotations_for_component_lifecycle_methods.html">22.3. Annotations for component lifecycle methods</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Seam_annotations-Annotations_for_context_demarcation.html">22.4. Annotations for context demarcation</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Seam_annotations-Annotations_for_transaction_demarcation.html">22.5. Annotations for transaction demarcation</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Seam_annotations-Annotations_for_exceptions.html">22.6. Annotations for exceptions</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Seam_annotations-Annotations_for_validation.html">22.7. Annotations for validation</a></span></dt><dt><span class!
 ="section"><a href="Seam_Reference_Guide-Seam_annotations-Annotations_for_Seam_Remoting.html">22.8. Annotations for Seam Remoting</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Seam_annotations-Annotations_for_Seam_interceptors.html">22.9. Annotations for Seam interceptors</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Seam_annotations-Annotations_for_asynchronicity.html">22.10. Annotations for asynchronicity</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Seam_annotations-Annotations_for_use_with_JSF_dataTable.html">22.11. Annotations for use with JSF <code class="literal">dataTable</code></a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Seam_annotations-Meta_annotations_for_databinding.html">22.12. Meta-annotations for databinding</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Seam_annotations-Annotations_for_packaging.html">22.13. Annotations for packaging!
 </a></span></dt></dl></div><div class="para">
+		When you write a Seam application, you'll use a lot of annotations. Seam lets you use annotations to achieve a declarative style of programming. Most of the annotations you'll use are defined by the EJB 3.0 specification. The annotations for data validation are defined by the Hibernate Validator package. Finally, Seam defines its own set of annotations, which we'll describe in this chapter.
+	</div><div class="para">
+		All of these annotations are defined in the package <code class="literal">org.jboss.seam.annotations</code>.
+	</div><div class="section" title="22.1. Annotations for component definition"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_annotations-Annotations_for_component_definition">22.1. Annotations for component definition</h2></div></div></div><div class="para">
+			The first group of annotations lets you define a Seam component. These annotations appear on the component class.
+		</div><div class="variablelist"><dl><dt id="name-annotation"><span class="term"><code class="literal">@Name</code></span></dt><dd><pre class="programlisting">@Name("componentName")
+</pre><div class="para">
+						Defines the Seam component name for a class. This annotation is required for all Seam components.
+					</div></dd><dt id="scope-annotation"><span class="term"><code class="literal">@Scope</code></span></dt><dd><pre class="programlisting">@Scope(ScopeType.CONVERSATION)
+</pre><div class="para">
+						Defines the default context of the component. The possible values are defined by the <code class="literal">ScopeType</code> enumeration: <code class="literal">EVENT, PAGE, CONVERSATION, SESSION, BUSINESS_PROCESS, APPLICATION, STATELESS</code>.
+					</div><div class="para">
+						When no scope is explicitly specified, the default depends upon the component type. For stateless session beans, the default is <code class="literal">STATELESS</code>. For entity beans and stateful session beans, the default is <code class="literal">CONVERSATION</code>. For JavaBeans, the default is <code class="literal">EVENT</code>.
+					</div></dd><dt><span class="term"><code class="literal">@Role</code></span></dt><dd><pre class="programlisting">@Role(name="roleName", scope=ScopeType.SESSION)
+</pre><div class="para">
+						Allows a Seam component to be bound to multiple contexts variables. The <code class="literal">@Name</code>/<code class="literal">@Scope</code> annotations define a "default role". Each <code class="literal">@Role</code> annotation defines an additional role.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">name</code> — the context variable name.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">scope</code> — the context variable scope. When no scope is explicitly specified, the default depends upon the component type, as above.
+							</div></li></ul></div></dd><dt><span class="term"><code class="literal">@Roles</code></span></dt><dd><pre class="programlisting">@Roles({
+        @Role(name="user", scope=ScopeType.CONVERSATION),
+        @Role(name="currentUser", scope=ScopeType.SESSION)
+    })
+</pre><div class="para">
+						Allows specification of multiple additional roles.
+					</div></dd><dt><span class="term"><code class="literal">@Intercept</code></span></dt><dd><pre class="programlisting">@Intercept(InterceptionType.ALWAYS)
+</pre><div class="para">
+						Determines when Seam interceptors are active. The possible values are defined by the <code class="literal">InterceptionType</code> enumeration: <code class="literal">ALWAYS, AFTER_RESTORE_VIEW, AFTER_UPDATE_MODEL_VALUES, INVOKE_APPLICATION, NEVER</code>.
+					</div><div class="para">
+						When no interception type is explicitly specified, the default depends upon the component type. For entity beans, the default is <code class="literal">NEVER</code>. For session beans, message driven beans and JavaBeans, the default is <code class="literal">ALWAYS</code>.
+					</div></dd><dt><span class="term"><code class="literal">@JndiName</code></span></dt><dd><pre class="programlisting">@JndiName("my/jndi/name")
+</pre><div class="para">
+						Specifies the JNDI name that Seam will use to look up the EJB component. If no JNDI name is explicitly specified, Seam will use the JNDI pattern specified by <code class="literal">org.jboss.seam.core.init.jndiPattern</code>.
+					</div></dd><dt><span class="term"><code class="literal">@Conversational</code></span></dt><dd><pre class="programlisting">@Conversational(ifNotBegunOutcome="error")
+</pre><div class="para">
+						Specifies that a conversation scope component is conversational, meaning that no method of the component can be called unless a long-running conversation started by this component is active (unless the method would begin a new long-running conversation).
+					</div></dd><dt><span class="term"><code class="literal">@Startup</code></span></dt><dd><pre class="programlisting">@Startup(depends={"org.jboss.core.jndi", "org.jboss.core.jta"})
+</pre><div class="para">
+						Specifies that an application scope component is started immediately at initialization time. This is mainly used for certain built-in components that bootstrap critical infrastructure such as JNDI, datasources, etc.
+					</div><pre class="programlisting">@Startup
+</pre><div class="para">
+						Specifies that a session scope component is started immediately at session creation time.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">depends</code> — specifies that the named components must be started first, if they are installed.
+							</div></li></ul></div></dd><dt><span class="term"><code class="literal">@Install</code></span></dt><dd><pre class="programlisting">@Install(false)
+</pre><div class="para">
+						Specifies whether or not a component should be installed by default. The lack of an @Install annotation indicates a component should be installed.
+					</div><pre class="programlisting">@Install(dependencies="org.jboss.seam.core.jbpm")
+</pre><div class="para">
+						Specifies that a component should only be stalled if the components listed as dependencies are also installed.
+					</div><pre class="programlisting">@Install(genericDependencies=ManagedQueueSender.class)
+</pre><div class="para">
+						Specifies that a component should only be installed if a component that is implemented by a certain class is installed. This is useful when the dependency doesn't have a single well-known name.
+					</div><pre class="programlisting">@Install(classDependencies="org.hibernate.Session")
+</pre><div class="para">
+						Specifies that a component should only be installed if the named class is in the classpath.
+					</div><pre class="programlisting">@Install(precedence=BUILT_IN)
+</pre><div class="para">
+						Specifies the precedence of the component. If multiple components with the same name exist, the one with the higher precedence will be installed. The defined precendence values are (in ascending order):
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">BUILT_IN</code> — Precedence of all built-in Seam components
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">FRAMEWORK</code> — Precedence to use for components of frameworks which extend Seam
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">APPLICATION</code> — Predence of application components (the default precedence)
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">DEPLOYMENT</code> — Precedence to use for components which override application components in a particular deployment
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">MOCK</code> — Precedence for mock objects used in testing
+							</div></li></ul></div></dd><dt><span class="term"><code class="literal">@Synchronized</code></span></dt><dd><pre class="programlisting">@Synchronized(timeout=1000)
+</pre><div class="para">
+						Specifies that a component is accessed concurrently by multiple clients, and that Seam should serialize requests. If a request is not able to obtain its lock on the component in the given timeout period, an exception will be raised.
+					</div></dd><dt><span class="term"><code class="literal">@ReadOnly</code></span></dt><dd><pre class="programlisting">@ReadOnly
+</pre><div class="para">
+						Specifies that a JavaBean component or component method does not require state replication at the end of the invocation.
+					</div></dd></dl></div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_SFSB_and_Session_Timeouts_in_JBoss_AS.html"><strong>Prev</strong>21.8. Configuring SFSB and Session Timeouts in JB...</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_bijection.html"><strong>Next</strong>22.2. Annotations for bijection</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_components-Built_in_components.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_components-Built_in_components.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_components-Built_in_components.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>3.2.10. Built-in components</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-The_contextual_component_model-Seam_components.html" title="3.2. Seam components" /><link rel="prev" href="Seam_Reference_Guide-Seam_components-Components_with_multiple_roles.html" title="3.2.9. Components with multiple roles" /><link rel="next" href="Seam_Reference_Guide-The_contextual_component_model-Bijection.html" title="3.3. Bijection" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image!
 _left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_components-Components_with_multiple_roles.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-The_contextual_component_model-Bijection.html"><strong>Next</strong></a></li></ul><div class="sect2" title="3.2.10. Built-in components"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam_components-Built_in_components" class="title">Built-in components</h1></div></div></div><div class="para">
+		Like many good frameworks, Seam eats its own dogfood and is implemented mostly as a set of built-in Seam interceptors (see later) and Seam components. This makes it easy for applications to interact with built-in components at runtime or even customize the basic functionality of Seam by replacing the built-in components with custom implementations. The built-in components are defined in the Seam namespace <code class="literal">org.jboss.seam.core</code> and the Java package of the same name.
+	</div><div class="para">
+		The built-in components may be injected, just like any Seam components, but they also provide convenient static <code class="literal">instance()</code> methods:
+	</div><pre class="programlisting">FacesMessages.instance().add("Welcome back, #{user.name}!");
+</pre><div class="para">
+		Seam was designed to integrate tightly in a Java EE 5 environment. However, we understand that there are many projects which are not running in a full EE environment. We also realize the critical importance of easy unit and integration testing using frameworks such as TestNG and JUnit. So, we have made it easy to run Seam in Java SE environments by allowing you to boostrap certain critical infrastructure normally only found in EE environments by installing built-in Seam components.
+	</div><div class="para">
+		For example, you can run your EJB3 components in Tomcat or an integration test suite just by installing the built-in component <code class="literal">org.jboss.seam.core.ejb</code>, which automatically bootstraps the JBoss Embeddable EJB3 container and deploys your EJB components.
+	</div><div class="para">
+		Or, if you are not quite ready for the Brave New World of EJB 3.0, you can write a Seam application that uses only JavaBean components, together with Hibernate3 for persistence, by installing a built-in component that manages a Hibernate <code class="literal">SessionFactory</code>. When using Hibernate outside of a J2EE environment, you will also probably need a JTA transaction manager and JNDI server, which are available via the built-in component <code class="literal">org.jboss.seam.core.microcontainer</code>. This lets you use the bulletproof JTA/JCA pooling datasource from JBoss application server in an SE environment like Tomcat.
+	</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_components-Components_with_multiple_roles.html"><strong>Prev</strong>3.2.9. Components with multiple roles</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-The_contextual_component_model-Bijection.html"><strong>Next</strong>3.3. Bijection</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_components-Component_names.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_components-Component_names.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_components-Component_names.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>3.2.7. Component names</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-The_contextual_component_model-Seam_components.html" title="3.2. Seam components" /><link rel="prev" href="Seam_Reference_Guide-Seam_components-Interception.html" title="3.2.6. Interception" /><link rel="next" href="Seam_Reference_Guide-Seam_components-Defining_the_component_scope.html" title="3.2.8. Defining the component scope" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="!
 Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_components-Interception.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_components-Defining_the_component_scope.html"><strong>Next</strong></a></li></ul><div class="sect2" title="3.2.7. Component names"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam_components-Component_names" class="title">Component names</h1></div></div></div><div class="para">
+		All seam components need a name. We can assign a name to a component using the <code class="literal">@Name</code> annotation:
+	</div><pre class="programlisting">@Name("loginAction")
+ at Stateless
+public class LoginAction implements Login { 
+    ... 
+}
+</pre><div class="para">
+		This name is the <span class="emphasis"><em>seam component name</em></span> and is not related to any other name defined by the EJB specification. However, seam component names work just like JSF managed bean names and you can think of the two concepts as identical.
+	</div><div class="para">
+		<code class="literal">@Name</code> is not the only way to define a component name, but we always need to specify the name <span class="emphasis"><em>somewhere</em></span>. If we do not, then none of the other Seam annotations will function.
+	</div><div class="para">
+		Just like in JSF, a seam component instance is usually bound to a context variable with the same name as the component name. So, for example, we would access the <code class="literal">LoginAction</code> using <code class="literal">Contexts.getStatelessContext().get("loginAction")</code>. In particular, whenever Seam itself instantiates a component, it binds the new instance to a variable with the component name. However, again like JSF, it is possible for the application to bind a component to some other context variable by programmatic API call. This is only useful if a particular component serves more than one role in the system. For example, the currently logged in <code class="literal">User</code> might be bound to the <code class="literal">currentUser</code> session context variable, while a <code class="literal">User</code> that is the subject of some administration functionality might be bound to the <code class="literal">user</code> conversation context variable.
+	</div><div class="para">
+		For very large applications, and for built-in seam components, qualified names are often used.
+	</div><pre class="programlisting">@Name("com.jboss.myapp.loginAction")
+ at Stateless
+ at Interceptors(SeamInterceptor.class)
+public class LoginAction implements Login { 
+    ... 
+}
+</pre><div class="para">
+		We may use the qualified component name both in Java code and in JSF's expression language:
+	</div><pre class="programlisting">&lt;h:commandButton type="submit" value="Login"
+                 action="#{com.jboss.myapp.loginAction.login}"/&gt;
+</pre><div class="para">
+		Since this is noisy, Seam also provides a means of aliasing a qualified name to a simple name. Add a line like this to the <code class="literal">components.xml</code> file:
+	</div><pre class="programlisting">&lt;factory name="loginAction" scope="STATELESS" value="#{com.jboss.myapp.loginAction}"/&gt;
+</pre><div class="para">
+		All of the built-in Seam components have qualified names, but most of them are aliased to a simple name by the <code class="literal">components.xml</code> file included in the Seam jar.
+	</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_components-Interception.html"><strong>Prev</strong>3.2.6. Interception</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_components-Defining_the_component_scope.html"><strong>Next</strong>3.2.8. Defining the component scope</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_components-Components_with_multiple_roles.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_components-Components_with_multiple_roles.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_components-Components_with_multiple_roles.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>3.2.9. Components with multiple roles</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-The_contextual_component_model-Seam_components.html" title="3.2. Seam components" /><link rel="prev" href="Seam_Reference_Guide-Seam_components-Defining_the_component_scope.html" title="3.2.8. Defining the component scope" /><link rel="next" href="Seam_Reference_Guide-Seam_components-Built_in_components.html" title="3.2.10. Built-in components" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Conten!
 t/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_components-Defining_the_component_scope.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_components-Built_in_components.html"><strong>Next</strong></a></li></ul><div class="sect2" title="3.2.9. Components with multiple roles"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam_components-Components_with_multiple_roles" class="title">Components with multiple roles</h1></div></div></div><div class="para">
+		Some Seam component classes can fulfill more than one role in the system. For example, we often have a <code class="literal">User</code> class which is usually used as a session-scoped component representing the current user but is used in user administration screens as a conversation-scoped component. The <code class="literal">@Role</code> annotation lets us define an additional named role for a component, with a different scope; it lets us bind the same component class to different context variables. (Any Seam component <span class="emphasis"><em>instance</em></span> may be bound to multiple context variables, but this lets us do it at the class level, and take advantage of auto-instantiation.)
+	</div><pre class="programlisting">@Name("user")
+ at Entity
+ at Scope(CONVERSATION)
+ at Role(name="currentUser", scope=SESSION)
+public class User { 
+    ... 
+}
+</pre><div class="para">
+		The <code class="literal">@Roles</code> annotation lets us specify as many additional roles as we like.
+	</div><pre class="programlisting">@Name("user")
+ at Entity
+ at Scope(CONVERSATION)
+ at Roles({@Role(name="currentUser", scope=SESSION)
+        @Role(name="tempUser", scope=EVENT)})
+public class User { 
+    ... 
+}
+</pre></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_components-Defining_the_component_scope.html"><strong>Prev</strong>3.2.8. Defining the component scope</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_components-Built_in_components.html"><strong>Next</strong>3.2.10. Built-in components</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_components-Defining_the_component_scope.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_components-Defining_the_component_scope.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_components-Defining_the_component_scope.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>3.2.8. Defining the component scope</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-The_contextual_component_model-Seam_components.html" title="3.2. Seam components" /><link rel="prev" href="Seam_Reference_Guide-Seam_components-Component_names.html" title="3.2.7. Component names" /><link rel="next" href="Seam_Reference_Guide-Seam_components-Components_with_multiple_roles.html" title="3.2.9. Components with multiple roles" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/image!
 s/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_components-Component_names.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_components-Components_with_multiple_roles.html"><strong>Next</strong></a></li></ul><div class="sect2" title="3.2.8. Defining the component scope"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam_components-Defining_the_component_scope" class="title">Defining the component scope</h1></div></div></div><div class="para">
+		We can override the default scope (context) of a component using the <code class="literal">@Scope</code> annotation. This lets us define what context a component instance is bound to, when it is instantiated by Seam.
+	</div><pre class="programlisting">@Name("user")
+ at Entity
+ at Scope(SESSION)
+public class User { 
+    ... 
+}
+</pre><div class="para">
+		<code class="literal">org.jboss.seam.ScopeType</code> defines an enumeration of possible scopes.
+	</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_components-Component_names.html"><strong>Prev</strong>3.2.7. Component names</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_components-Components_with_multiple_roles.html"><strong>Next</strong>3.2.9. Components with multiple roles</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_components-Entity_beans.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_components-Entity_beans.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_components-Entity_beans.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>3.2.3. Entity beans</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-The_contextual_component_model-Seam_components.html" title="3.2. Seam components" /><link rel="prev" href="Seam_Reference_Guide-Seam_components-Stateful_session_beans.html" title="3.2.2. Stateful session beans" /><link rel="next" href="Seam_Reference_Guide-Seam_components-JavaBeans.html" title="3.2.4. JavaBeans" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><!
 a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_components-Stateful_session_beans.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_components-JavaBeans.html"><strong>Next</strong></a></li></ul><div class="sect2" title="3.2.3. Entity beans"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam_components-Entity_beans" class="title">Entity beans</h1></div></div></div><div class="para">
+		Entity beans may be bound to a context variable and function as a seam component. Because entities have a persistent identity in addition to their contextual identity, entity instances are usually bound explicitly in Java code, rather than being instantiated implicitly by Seam.
+	</div><div class="para">
+		Entity bean components do not support bijection or context demarcation. Nor does invocation of an entity bean trigger validation.
+	</div><div class="para">
+		Entity beans are not usually used as JSF action listeners, but do often function as backing beans that provide properties to JSF components for display or form submission. In particular, it is common to use an entity as a backing bean, together with a stateless session bean action listener to implement create/update/delete type functionality.
+	</div><div class="para">
+		By default, entity beans are bound to the conversation context. They may never be bound to the stateless context.
+	</div><div class="para">
+		Note that it in a clustered environment is somewhat less efficient to bind an entity bean directly to a conversation or session scoped Seam context variable than it would be to hold a reference to the entity bean in a stateful session bean. For this reason, not all Seam applications define entity beans to be Seam components.
+	</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_components-Stateful_session_beans.html"><strong>Prev</strong>3.2.2. Stateful session beans</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_components-JavaBeans.html"><strong>Next</strong>3.2.4. JavaBeans</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_components-Interception.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_components-Interception.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_components-Interception.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>3.2.6. Interception</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-The_contextual_component_model-Seam_components.html" title="3.2. Seam components" /><link rel="prev" href="Seam_Reference_Guide-Seam_components-Message_driven_beans.html" title="3.2.5. Message-driven beans" /><link rel="next" href="Seam_Reference_Guide-Seam_components-Component_names.html" title="3.2.7. Component names" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site"!
  /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_components-Message_driven_beans.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_components-Component_names.html"><strong>Next</strong></a></li></ul><div class="sect2" title="3.2.6. Interception"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam_components-Interception" class="title">Interception</h1></div></div></div><div class="para">
+		In order to perform its magic (bijection, context demarcation, validation, etc), Seam must intercept component invocations. For JavaBeans, Seam is in full control of instantiation of the component, and no special configuration is needed. For entity beans, interception is not required since bijection and context demarcation are not defined. For session beans, we must register an EJB interceptor for the session bean component. We could use an annotation, as follows:
+	</div><pre class="programlisting">@Stateless
+ at Interceptors(SeamInterceptor.class)
+public class LoginAction implements Login { 
+    ... 
+}
+</pre><div class="para">
+		But a much better way is to define the interceptor in <code class="literal">ejb-jar.xml</code>.
+	</div><pre class="programlisting">&lt;interceptors&gt;
+   &lt;interceptor&gt;
+      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/interceptor-class&gt;
+   &lt;/interceptor&gt;
+&lt;/interceptors&gt;
+   
+&lt;assembly-descriptor&gt;
+   &lt;interceptor-binding&gt;
+      &lt;ejb-name&gt;*&lt;/ejb-name&gt;
+      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/interceptor-class&gt;
+   &lt;/interceptor-binding&gt;
+&lt;/assembly-descriptor&gt;
+</pre></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_components-Message_driven_beans.html"><strong>Prev</strong>3.2.5. Message-driven beans</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_components-Component_names.html"><strong>Next</strong>3.2.7. Component names</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_components-JavaBeans.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_components-JavaBeans.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_components-JavaBeans.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>3.2.4. JavaBeans</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-The_contextual_component_model-Seam_components.html" title="3.2. Seam components" /><link rel="prev" href="Seam_Reference_Guide-Seam_components-Entity_beans.html" title="3.2.3. Entity beans" /><link rel="next" href="Seam_Reference_Guide-Seam_components-Message_driven_beans.html" title="3.2.5. Message-driven beans" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a!
  class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_components-Entity_beans.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_components-Message_driven_beans.html"><strong>Next</strong></a></li></ul><div class="sect2" title="3.2.4. JavaBeans"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam_components-JavaBeans" class="title">JavaBeans</h1></div></div></div><div class="para">
+		Javabeans may be used just like a stateless or stateful session bean. However, they do not provide the functionality of a session bean (declarative transaction demarcation, declarative security, efficient clustered state replication, EJB 3.0 persistence, timeout methods, etc).
+	</div><div class="para">
+		In a later chapter, we show you how to use Seam and Hibernate without an EJB container. In this use case, components are JavaBeans instead of session beans. Note, however, that in many application servers it is somewhat less efficient to cluster conversation or session scoped Seam JavaBean components than it is to cluster stateful session bean components.
+	</div><div class="para">
+		By default, JavaBeans are bound to the event context.
+	</div><div class="para">
+		Concurrent requests to session-scoped JavaBeans are always serialized by Seam.
+	</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_components-Entity_beans.html"><strong>Prev</strong>3.2.3. Entity beans</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_components-Message_driven_beans.html"><strong>Next</strong>3.2.5. Message-driven beans</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_components-Message_driven_beans.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_components-Message_driven_beans.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_components-Message_driven_beans.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>3.2.5. Message-driven beans</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-The_contextual_component_model-Seam_components.html" title="3.2. Seam components" /><link rel="prev" href="Seam_Reference_Guide-Seam_components-JavaBeans.html" title="3.2.4. JavaBeans" /><link rel="next" href="Seam_Reference_Guide-Seam_components-Interception.html" title="3.2.6. Interception" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="rig!
 ht" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_components-JavaBeans.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_components-Interception.html"><strong>Next</strong></a></li></ul><div class="sect2" title="3.2.5. Message-driven beans"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam_components-Message_driven_beans" class="title">Message-driven beans</h1></div></div></div><div class="para">
+		Message-driven beans may function as a seam component. However, message-driven beans are called quite differently to other Seam components - instead of invoking them via the context variable, they listen for messages sent to a JMS queue or topic.
+	</div><div class="para">
+		Message-driven beans may not be bound to a Seam context. Nor do they have access to the session or conversation state of their "caller". However, they do support bijection and some other Seam functionality.
+	</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_components-JavaBeans.html"><strong>Prev</strong>3.2.4. JavaBeans</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_components-Interception.html"><strong>Next</strong>3.2.6. Interception</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_components-Stateful_session_beans.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_components-Stateful_session_beans.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_components-Stateful_session_beans.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>3.2.2. Stateful session beans</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-The_contextual_component_model-Seam_components.html" title="3.2. Seam components" /><link rel="prev" href="Seam_Reference_Guide-The_contextual_component_model-Seam_components.html" title="3.2. Seam components" /><link rel="next" href="Seam_Reference_Guide-Seam_components-Entity_beans.html" title="3.2.3. Entity beans" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Produc!
 t Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-The_contextual_component_model-Seam_components.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_components-Entity_beans.html"><strong>Next</strong></a></li></ul><div class="sect2" title="3.2.2. Stateful session beans"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam_components-Stateful_session_beans" class="title">Stateful session beans</h1></div></div></div><div class="para">
+		Stateful session bean components are able to hold state not only across multiple invocations of the bean, but also across multiple requests. Application state that does not belong in the database should usually be held by stateful session beans. This is a major difference between Seam and many other web application frameworks. Instead of sticking information about the current conversation directly in the <code class="literal">HttpSession</code>, you should keep it in instance variables of a stateful session bean that is bound to the conversation context. This allows Seam to manage the lifecycle of this state for you, and ensure that there are no collisions between state relating to different concurrent conversations.
+	</div><div class="para">
+		Stateful session beans are often used as JSF action listener, and as backing beans that provide properties to JSF components for display or form submission.
+	</div><div class="para">
+		By default, stateful session beans are bound to the conversation context. They may never be bound to the page or stateless contexts.
+	</div><div class="para">
+		Concurrent requests to session-scoped stateful session beans are always serialized by Seam.
+	</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-The_contextual_component_model-Seam_components.html"><strong>Prev</strong>3.2. Seam components</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_components-Entity_beans.html"><strong>Next</strong>3.2.3. Entity beans</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_managed_persistence_contexts-Seam_managed_persistence_contexts_and_atomic_conversations.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_managed_persistence_contexts-Seam_managed_persistence_contexts_and_atomic_conversations.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_managed_persistence_contexts-Seam_managed_persistence_contexts_and_atomic_conversations.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>8.3.3. Seam-managed persistence contexts and atomic conversations</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Seam_managed_persistence_contexts.html" title="8.3. Seam-managed persistence contexts" /><link rel="prev" href="Seam_Reference_Guide-Seam_managed_persistence_contexts-Using_a_Seam_managed_Hibernate_session.html" title="8.3.2. Using a Seam-managed Hibernate session" /><link rel="next" href="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_the_JPA_delegate.html" title="8.4. Using the!
  JPA &quot;delegate&quot;" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_managed_persistence_contexts-Using_a_Seam_managed_Hibernate_session.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_the_JPA_delegate.html"><strong>Next</strong></a></li></ul><div class="section" title="8.3.3. Seam-managed persistence contexts and atomic conversations"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Seam_managed_persistence_contexts-Seam_managed_persistence_contexts_and_atomic_conversations">8.3.3. Seam-managed persistence contexts and atomic !
 conversations</h3></div></div></div><div class="para">
+				Persistence contexts scoped to the conversation allows you to program optimistic transactions that span multiple requests to the server without the need to use the <code class="literal">merge()</code> operation , without the need to re-load data at the beginning of each request, and without the need to wrestle with the <code class="literal">LazyInitializationException</code> or <code class="literal">NonUniqueObjectException</code>.
+			</div><div class="para">
+				As with any optimistic transaction management, transaction isolation and consistency can be achieved via use of optimistic locking. Fortunately, both Hibernate and EJB 3.0 make it very easy to use optimistic locking, by providing the <code class="literal">@Version</code> annotation.
+			</div><div class="para">
+				By default, the persistence context is flushed (synchronized with the database) at the end of each transaction. This is sometimes the desired behavior. But very often, we would prefer that all changes are held in memory and only written to the database when the conversation ends successfully. This allows for truly atomic conversations. As the result of a truly stupid and shortsighted decision by certain non-JBoss, non-Sun and non-Sybase members of the EJB 3.0 expert group, there is currently no simple, usable and portable way to implement atomic conversations using EJB 3.0 persistence. However, Hibernate provides this feature as a vendor extension to the <code class="literal">FlushModeType</code>s defined by the specification, and it is our expectation that other vendors will soon provide a similar extension.
+			</div><div class="para">
+				Seam lets you specify <code class="literal">FlushModeType.MANUAL</code> when beginning a conversation. Currently, this works only when Hibernate is the underlying persistence provider, but we plan to support other equivalent vendor extensions.
+			</div><pre class="programlisting">@In EntityManager em; //a Seam-managed persistence context
+
+ at Begin(flushMode=MANUAL)
+public void beginClaimWizard() {
+    claim = em.find(Claim.class, claimId);
+}
+</pre><div class="para">
+				Now, the <code class="literal">claim</code> object remains managed by the persistence context for the rest ot the conversation. We can make changes to the claim:
+			</div><pre class="programlisting">public void addPartyToClaim() {
+    Party party = ....;
+    claim.addParty(party);
+}
+</pre><div class="para">
+				But these changes will not be flushed to the database until we explicitly force the flush to occur:
+			</div><pre class="programlisting">@End
+public void commitClaim() {
+    em.flush();
+}
+</pre></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_managed_persistence_contexts-Using_a_Seam_managed_Hibernate_session.html"><strong>Prev</strong>8.3.2. Using a Seam-managed Hibernate session</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_the_JPA_delegate.html"><strong>Next</strong>8.4. Using the JPA "delegate"</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_managed_persistence_contexts-Using_a_Seam_managed_Hibernate_session.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_managed_persistence_contexts-Using_a_Seam_managed_Hibernate_session.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_managed_persistence_contexts-Using_a_Seam_managed_Hibernate_session.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>8.3.2. Using a Seam-managed Hibernate session</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Seam_managed_persistence_contexts.html" title="8.3. Seam-managed persistence contexts" /><link rel="prev" href="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Seam_managed_persistence_contexts.html" title="8.3. Seam-managed persistence contexts" /><link rel="next" href="Seam_Reference_Guide-Seam_managed_persistence_contexts-Seam_managed_persistence_contexts_and_atomic_conversations.html" title="8.3.3. Sea!
 m-managed persistence contexts and atomic conversations" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Seam_managed_persistence_contexts.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_managed_persistence_contexts-Seam_managed_persistence_contexts_and_atomic_conversations.html"><strong>Next</strong></a></li></ul><div class="section" title="8.3.2. Using a Seam-managed Hibernate session"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Seam_managed_persistence_contexts-Using_a_Seam_managed_Hibernate_session">8.3.2. Using a Seam-managed Hib!
 ernate session</h3></div></div></div><div class="para">
+				Seam-managed Hibernate sessions are similar. In <code class="literal">components.xml</code>:
+			</div><pre class="programlisting">&lt;core:hibernate-session-factory name="hibernateSessionFactory"/&gt;
+
+&lt;core:managed-hibernate-session name="bookingDatabase" 
+                         auto-create="true"
+           session-factory-jndi-name="java:/bookingSessionFactory"/&gt;
+</pre><div class="para">
+				Where <code class="literal">java:/bookingSessionFactory</code> is the name of the session factory specified in <code class="literal">hibernate.cfg.xml</code>.
+			</div><pre class="programlisting">&lt;session-factory name="java:/bookingSessionFactory"&gt;
+    &lt;property name="transaction.flush_before_completion"&gt;true&lt;/property&gt;
+    &lt;property name="connection.release_mode"&gt;after_statement&lt;/property&gt;
+    &lt;property name="transaction.manager_lookup_class"&gt;
+       org.hibernate.transaction.JBossTransactionManagerLookup
+    &lt;/property&gt;
+    &lt;property name="transaction.factory_class"&gt;
+       org.hibernate.transaction.JTATransactionFactory
+    &lt;/property&gt;
+    &lt;property name="connection.datasource"&gt;java:/bookingDatasource&lt;/property&gt;
+    ...
+&lt;/session-factory&gt;
+</pre><div class="important"><h2>Important</h2><div class="para">
+					Seam does not flush the session, so you should always enable <code class="literal">hibernate.transaction.flush_before_completion</code> to ensure that the session is automatically flushed before the JTA transaction commits.
+				</div></div><div class="para">
+				We can now have a managed Hibernate <code class="literal">Session</code> injected into our JavaBean components using the following code:
+			</div><pre class="programlisting">@In Session bookingDatabase;
+</pre></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Seam_managed_persistence_contexts.html"><strong>Prev</strong>8.3. Seam-managed persistence contexts</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_managed_persistence_contexts-Seam_managed_persistence_contexts_and_atomic_conversations.html"><strong>Next</strong>8.3.3. Seam-managed persistence contexts and atom...</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_tools-CRUD_application_generator.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_tools-CRUD_application_generator.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_tools-CRUD_application_generator.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>27.2. CRUD-application generator</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Seam_tools.html" title="Chapter 27. Seam tools" /><link rel="prev" href="Seam_Reference_Guide-Seam_tools.html" title="Chapter 27. Seam tools" /><link rel="next" href="Seam_Reference_Guide-CRUD_application_generator-Creating_a_Hibernate_Console_configuration.html" title="27.2.2. Creating a Hibernate Console configuration" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" al!
 t="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_tools.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-CRUD_application_generator-Creating_a_Hibernate_Console_configuration.html"><strong>Next</strong></a></li></ul><div class="section" title="27.2. CRUD-application generator"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_tools-CRUD_application_generator">27.2. CRUD-application generator</h2></div></div></div><div class="para">
+			This chapter, will give you a short overview of the support for Seam that is available in the Hibernate Tools. Hibernate Tools is a set of tools for working with Hibernate and related technologies, such as JBoss Seam and EJB3. The tools are available as a set of eclipse plugins and Ant tasks. You can download the Hibernate Tools from the JBoss Tools or Hibernate Tools websites.
+		</div><div class="para">
+			The specific support for Seam that is currently available is generation of a fully functional Seam based CRUD-application. The CRUD-application can be generated based on your existing Hibernate mapping files or EJB3 annotated POJO's or even fully reverse engineered from your existing database schema.
+		</div><div class="para">
+			The following sections is focused on the features required to understand for usage with Seam. The content is derived from the the Hibernate Tools reference documentation. Thus if you need more detailed information please refer to the Hibernate Tools documentation.
+		</div><div class="section" title="27.2.1. Creating a Hibernate configuration file"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-CRUD_application_generator-Creating_a_Hibernate_configuration_file">27.2.1. Creating a Hibernate configuration file</h3></div></div></div><div class="para">
+				To be able to reverse engineer and generate code a hibernate.properties or <code class="filename">hibernate.cfg.xml</code> file is needed. The Hibernate Tools provide a wizard for generating the <code class="filename">hibernate.cfg.xml</code> file if you do not already have such file.
+			</div><div class="para">
+				Start the wizard by clicking <code class="literal">New Wizard</code> (Ctrl+N), select the Hibernate/Hibernate Configuration file (cfg.xml) wizard and press <code class="literal">Next</code>. After selecting the wanted location for the <code class="filename">hibernate.cfg.xml</code> file, you will see the following page:
+			</div><div class="mediaobject"><img src="images/hibernatecfgwizard.png" width="177.165354330709" /></div><div class="para">
+				Tip: The contents in the combo boxes for the JDBC driver class and JDBC URL change automatically, depending on the Dialect and actual driver you have chosen.
+			</div><div class="para">
+				Enter your configuration information in this dialog. Details about the configuration options can be found in Hibernate reference documentation.
+			</div><div class="para">
+				Press <code class="literal">Finish</code> to create the configuration file, after optionally creating a Console onfiguration, the <code class="filename">hibernate.cfg.xml</code> will be automatically opened in an editor. The last option <code class="literal">Create Console Configuration</code> is enabled by default and when enabled i will automatically use the <code class="filename">hibernate.cfg.xml</code> for the basis of a <code class="literal">Console Configuration</code>.
+			</div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_tools.html"><strong>Prev</strong>Chapter 27. Seam tools</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-CRUD_application_generator-Creating_a_Hibernate_Console_configuration.html"><strong>Next</strong>27.2.2. Creating a Hibernate Console configuration</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_tools.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_tools.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Seam_tools.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 27. Seam tools</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="index.html" title="Seam Reference Guide CP07" /><link rel="prev" href="Seam_Reference_Guide-Testing_Seam_applications-Integration_testing_Seam_applications.html" title="26.2. Integration testing Seam applications" /><link rel="next" href="Seam_Reference_Guide-Seam_tools-CRUD_application_generator.html" title="27.2. CRUD-application generator" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product !
 Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Testing_Seam_applications-Integration_testing_Seam_applications.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_tools-CRUD_application_generator.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="chapter" title="Chapter 27. Seam tools" lang="en-US"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_tools">Chapter 27. Seam tools</h2></div></div></div><div class="toc"><dl><dt><span class="section"><a href="Seam_Reference_Guide-Seam_tools.html#Seam_Reference_Guide-Seam_tools-jBPM_designer_and_viewer">27.1. jBPM designer and viewer</a></span></dt><dd><dl><dt><span class="section"><a href="Seam_Reference_Guide-Seam_tools.html#Seam_Reference_Guide-jBPM_d!
 esigner_and_viewer-Business_process_designer">27.1.1. Business!
  process
 designer</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Seam_tools.html#Seam_Reference_Guide-jBPM_designer_and_viewer-Pageflow_viewer">27.1.2. Pageflow viewer</a></span></dt></dl></dd><dt><span class="section"><a href="Seam_Reference_Guide-Seam_tools-CRUD_application_generator.html">27.2. CRUD-application generator</a></span></dt><dd><dl><dt><span class="section"><a href="Seam_Reference_Guide-Seam_tools-CRUD_application_generator.html#Seam_Reference_Guide-CRUD_application_generator-Creating_a_Hibernate_configuration_file">27.2.1. Creating a Hibernate configuration file</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-CRUD_application_generator-Creating_a_Hibernate_Console_configuration.html">27.2.2. Creating a Hibernate Console configuration</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-CRUD_application_generator-Reverse_engineering_and_code_generation.html">27.2.3. Reverse engineering and code generatio!
 n</a></span></dt></dl></dd></dl></div><div class="section" title="27.1. jBPM designer and viewer"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_tools-jBPM_designer_and_viewer">27.1. jBPM designer and viewer</h2></div></div></div><div class="para">
+			The jBPM designer and viewer will let you design and view in a nice way your business processes and your pageflows. This convenient tool is part of the JBoss Developer Studio and more details can be found in the jBPM's documentation (http://docs.jboss.com/jbpm/v3/gpd/)
+		</div><div class="section" title="27.1.1. Business process designer"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-jBPM_designer_and_viewer-Business_process_designer">27.1.1. Business process designer</h3></div></div></div><div class="para">
+				This tool lets you design your own business process in a graphical way.
+			</div><div class="screenshot"><div class="mediaobject" align="center"><img src="images/bpmd.png" align="middle" width="444" /></div></div></div><div class="section" title="27.1.2. Pageflow viewer"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-jBPM_designer_and_viewer-Pageflow_viewer">27.1.2. Pageflow viewer</h3></div></div></div><div class="para">
+				This tool will let you design to some extend your pageflows and let you build graphical views of them so you can easily share and compare ideas on how it should be designed.
+			</div><div class="screenshot"><div class="mediaobject" align="center"><img src="images/bpmpfv.png" align="middle" width="444" /></div></div></div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Testing_Seam_applications-Integration_testing_Seam_applications.html"><strong>Prev</strong>26.2. Integration testing Seam applications</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_tools-CRUD_application_generator.html"><strong>Next</strong>27.2. CRUD-application generator</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Securing_Entities-Entity_security_with_Hibernate.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Securing_Entities-Entity_security_with_Hibernate.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Securing_Entities-Entity_security_with_Hibernate.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>12.5.5.2. Entity security with Hibernate</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Authorization-Securing_Entities.html" title="12.5.5. Securing Entities" /><link rel="prev" href="Seam_Reference_Guide-Authorization-Securing_Entities.html" title="12.5.5. Securing Entities" /><link rel="next" href="Seam_Reference_Guide-Security-Writing_Security_Rules.html" title="12.6. Writing Security Rules" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Pro!
 duct Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Authorization-Securing_Entities.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Security-Writing_Security_Rules.html"><strong>Next</strong></a></li></ul><div class="sect3" title="12.5.5.2. Entity security with Hibernate"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Securing_Entities-Entity_security_with_Hibernate" class="title">Entity security with Hibernate</h1></div></div></div><div class="para">
+		If you are using a Hibernate <code class="literal">SessionFactory</code> configured via Seam, you do not need to do anything special to use entity security.
+	</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Authorization-Securing_Entities.html"><strong>Prev</strong>12.5.5. Securing Entities</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Security-Writing_Security_Rules.html"><strong>Next</strong>12.6. Writing Security Rules</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Securing_components-Inline_restrictions.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Securing_components-Inline_restrictions.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Securing_components-Inline_restrictions.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>12.5.2.2. Inline restrictions</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Authorization-Securing_components.html" title="12.5.2. Securing components" /><link rel="prev" href="Seam_Reference_Guide-Authorization-Securing_components.html" title="12.5.2. Securing components" /><link rel="next" href="Seam_Reference_Guide-Authorization-Security_in_the_user_interface.html" title="12.5.3. Security in the user interface" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/imag!
 e_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Authorization-Securing_components.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Authorization-Security_in_the_user_interface.html"><strong>Next</strong></a></li></ul><div class="sect3" title="12.5.2.2. Inline restrictions"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Securing_components-Inline_restrictions" class="title">Inline restrictions</h1></div></div></div><div class="para">
+		Sometimes it might be desirable to perform a security check in code, without using the <code class="literal">@Restrict</code> annotation. In this situation, simply use <code class="literal">Identity.checkRestriction()</code> to evaluate a security expression, like this:
+	</div><pre class="programlisting">public void deleteCustomer() {
+    Identity.instance().checkRestriction("#{s:hasPermission('customer','delete',
+      selectedCustomer)}");
+}
+</pre><div class="para">
+		If the expression specified doesn't evaluate to <code class="literal">true</code>, either
+	</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+				if the user is not logged in, a <code class="literal">NotLoggedInException</code> exception is thrown or
+			</div></li><li class="listitem"><div class="para">
+				if the user is logged in, an <code class="literal">AuthorizationException</code> exception is thrown.
+			</div></li></ul></div><div class="para">
+		It is also possible to call the <code class="literal">hasRole()</code> and <code class="literal">hasPermission()</code> methods directly from Java code:
+	</div><pre class="programlisting">if (!Identity.instance().hasRole("admin"))
+     throw new AuthorizationException("Must be admin to perform this action");
+
+if (!Identity.instance().hasPermission("customer", "create", null))
+     throw new AuthorizationException("You may not create new customers");
+</pre></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Authorization-Securing_components.html"><strong>Prev</strong>12.5.2. Securing components</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Authorization-Security_in_the_user_interface.html"><strong>Next</strong>12.5.3. Security in the user interface</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Security-Authentication.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Security-Authentication.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Security-Authentication.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>12.3. Authentication</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Security.html" title="Chapter 12. Security" /><link rel="prev" href="Seam_Reference_Guide-Security-Requirements.html" title="12.2. Requirements" /><link rel="next" href="Seam_Reference_Guide-Authentication-Writing_an_authentication_method.html" title="12.3.2. Writing an authentication method" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" hr!
 ef="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Security-Requirements.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Authentication-Writing_an_authentication_method.html"><strong>Next</strong></a></li></ul><div class="sect1" title="12.3. Authentication"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Security-Authentication" class="title">Authentication</h1></div></div></div><div class="para">
+		The authentication features provided by Seam Security are built upon JAAS (Java Authentication and Authorization Service), and as such provide a robust and highly configurable API for handling user authentication. However, for less complex authentication requirements Seam offers a much more simplified method of authentication that hides the complexity of JAAS.
+	</div><div class="sect2" title="12.3.1. Configuration"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Authentication-Configuration" class="title">Configuration</h1></div></div></div><div class="para">
+		The simplified authentication method uses a built-in JAAS login module, <code class="literal">SeamLoginModule</code>, which delegates authentication to one of your own Seam components. This login module is already configured inside Seam as part of a default application policy and as such does not require any additional configuration files. It allows you to write an authentication method using the entity classes that are provided by your own application. Configuring this simplified form of authentication requires the <code class="literal">identity</code> component to be configured in <code class="literal">components.xml</code>:
+	</div><pre class="programlisting">&lt;components xmlns="http://jboss.com/products/seam/components"
+            xmlns:core="http://jboss.com/products/seam/core"
+            xmlns:security="http://jboss.com/products/seam/security"
+            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+            xsi:schemaLocation=
+                "http://jboss.com/products/seam/core http://jboss.com/products/seam/core-1.2.xsd 
+                 http://jboss.com/products/seam/components http://jboss.com/products/seam/components-1.2.xsd
+                 http://jboss.com/products/seam/drools http://jboss.com/products/seam/drools-1.2.xsd"
+                 http://jboss.com/products/seam/security http://jboss.com/products/seam/security-1.2.xsd"&gt;                
+        
+    &lt;security:identity authenticate-method="#{authenticator.authenticate}"/&gt;
+    
+&lt;/components&gt;
+</pre><div class="para">
+		If you wish to use the advanced security features such as rule-based permission checks, all you need to do is include the Drools (JBoss Rules) jars in your classpath, and add some additional configuration, described later.
+	</div><div class="para">
+		The EL expression <code class="literal">#{authenticator.authenticate}</code> is a method binding indicating that the <code class="literal">authenticate</code> method of the <code class="literal">authenticator</code> component will be used to authenticate the user.
+	</div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Security-Requirements.html"><strong>Prev</strong>12.2. Requirements</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Authentication-Writing_an_authentication_method.html"><strong>Next</strong>12.3.2. Writing an authentication method</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Security-Authorization.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Security-Authorization.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Security-Authorization.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>12.5. Authorization</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Security.html" title="Chapter 12. Security" /><link rel="prev" href="Seam_Reference_Guide-Security-Error_Messages.html" title="12.4. Error Messages" /><link rel="next" href="Seam_Reference_Guide-Authorization-Securing_components.html" title="12.5.2. Securing components" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com!
 "><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Security-Error_Messages.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Authorization-Securing_components.html"><strong>Next</strong></a></li></ul><div class="sect1" title="12.5. Authorization"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Security-Authorization" class="title">Authorization</h1></div></div></div><div class="para">
+		There are a number of authorization features provided by the Seam Security API for securing access to components, component methods, and pages. This section describes each of these. An important thing to note is that if you wish to use any of the advanced features (such as rule-based permissions) then your <code class="filename">components.xml</code> must be configured to support this - see the Configuration section above.
+	</div><div class="sect2" title="12.5.1. Core concepts"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Authorization-Core_concepts" class="title">Core concepts</h1></div></div></div><div class="para">
+		Each of the authorization mechanisms provided by the Seam Security API are built upon the concept of a user being granted roles and/or permissions. A role is a <span class="emphasis"><em>group</em></span>, or <span class="emphasis"><em>type</em></span>, of user that may have been granted certain privileges for performing one or more specific actions within an application. A permission on the other hand is a privilege (sometimes once-off) for performing a single, specific action. It is entirely possible to build an application using nothing but permissions, however roles offer a higher level of convenience when granting privileges to groups of users.
+	</div><div class="para">
+		Roles are simple, consisting of only a name such as <code class="literal">admin</code>, <code class="literal">user</code>, <code class="literal">customer</code>, etc. Permissions consist of both a name and an action, and are represented within this documentation in the form <code class="literal">name:action</code>, for example <code class="literal">customer:delete</code>, or <code class="literal">customer:insert</code>.
+	</div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Security-Error_Messages.html"><strong>Prev</strong>12.4. Error Messages</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Authorization-Securing_components.html"><strong>Next</strong>12.5.2. Securing components</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Security-Error_Messages.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Security-Error_Messages.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Security-Error_Messages.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>12.4. Error Messages</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Security.html" title="Chapter 12. Security" /><link rel="prev" href="Seam_Reference_Guide-Authentication-Advanced_Authentication_Features.html" title="12.3.7. Advanced Authentication Features" /><link rel="next" href="Seam_Reference_Guide-Security-Authorization.html" title="12.5. Authorization" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" !
 href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Authentication-Advanced_Authentication_Features.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Security-Authorization.html"><strong>Next</strong></a></li></ul><div class="sect1" title="12.4. Error Messages"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Security-Error_Messages" class="title">Error Messages</h1></div></div></div><div class="para">
+		The security API produces a number of default faces messages for various security-related events. The following table lists the message keys that can be used to override these messages by specifying them in a <code class="literal">message.properties</code> resource file.
+	</div><div class="table" id="Seam_Reference_Guide-Error_Messages-Security_Message_Keys"><div class="table-contents"><table summary="Security Message Keys" border="1"><colgroup><col width="25%" /><col width="75%" /></colgroup><tbody><tr><td>
+						<div class="para">
+							<code class="literal">org.jboss.seam.loginSuccessful</code>
+						</div>
+					</td><td>
+						<div class="para">
+							This message is produced when a user successfully logs in via the security API.
+						</div>
+					</td></tr><tr><td>
+						<div class="para">
+							<code class="literal">org.jboss.seam.loginFailed</code>
+						</div>
+					</td><td>
+						<div class="para">
+							This message is produced when the login process fails, either because the user provided an incorrect username or password, or because authentication failed in some other way.
+						</div>
+					</td></tr><tr><td>
+						<div class="para">
+							<code class="literal">org.jboss.seam.NotLoggedIn</code>
+						</div>
+					</td><td>
+						<div class="para">
+							This message is produced when a user attempts to perform an action or access a page that requires a security check, and the user is not currently authenticated.
+						</div>
+					</td></tr></tbody></table></div><h6>Table 12.1. Security Message Keys</h6></div><br class="table-break" /></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Authentication-Advanced_Authentication_Features.html"><strong>Prev</strong>12.3.7. Advanced Authentication Features</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Security-Authorization.html"><strong>Next</strong>12.5. Authorization</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Security-Implementing_a_Captcha_Test.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Security-Implementing_a_Captcha_Test.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Security-Implementing_a_Captcha_Test.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>12.8. Implementing a Captcha Test</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Security.html" title="Chapter 12. Security" /><link rel="prev" href="Seam_Reference_Guide-Security-SSL_Security.html" title="12.7. SSL Security" /><link rel="next" href="Seam_Reference_Guide-Implementing_a_Captcha_Test-Adding_a_Captcha_to_a_page.html" title="12.8.2. Adding a Captcha to a page" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a cl!
 ass="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Security-SSL_Security.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Implementing_a_Captcha_Test-Adding_a_Captcha_to_a_page.html"><strong>Next</strong></a></li></ul><div class="sect1" title="12.8. Implementing a Captcha Test"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Security-Implementing_a_Captcha_Test" class="title">Implementing a Captcha Test</h1></div></div></div><div class="para">
+		Though strictly not part of the security API, it might be useful in certain circumstances (such as new user registrations, posting to a public blog or forum) to implement a Captcha (<span class="emphasis"><em>C</em></span>ompletely <span class="emphasis"><em>A</em></span>utomated <span class="emphasis"><em>P</em></span>ublic <span class="emphasis"><em>T</em></span>uring test to tell <span class="emphasis"><em>C</em></span>omputers and <span class="emphasis"><em>H</em></span>umans <span class="emphasis"><em>A</em></span>part) to prevent automated bots from interacting with your application. Seam provides seamless integration with JCaptcha, an excellent library for generating Captcha challenges. If you wish to use the captcha feature in your application you need to include the jcaptcha-* jar file from the Seam lib directory in your project, and register it in <code class="literal">application.xml</code> as a java module.
+	</div><div class="sect2" title="12.8.1. Configuring the Captcha Servlet"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Implementing_a_Captcha_Test-Configuring_the_Captcha_Servlet" class="title">Configuring the Captcha Servlet</h1></div></div></div><div class="para">
+		To get up and running, it is necessary to configure the Seam Resource Servlet, which will provide the Captcha challenge images to your pages. This requires the following entry in <code class="literal">web.xml</code>:
+	</div><pre class="programlisting">&lt;servlet&gt;
+    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;
+    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-class&gt;
+&lt;/servlet&gt;
+    
+&lt;servlet-mapping&gt;
+    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;
+    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;
+&lt;/servlet-mapping&gt;
+</pre></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Security-SSL_Security.html"><strong>Prev</strong>12.7. SSL Security</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Implementing_a_Captcha_Test-Adding_a_Captcha_to_a_page.html"><strong>Next</strong>12.8.2. Adding a Captcha to a page</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Security-Requirements.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Security-Requirements.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Security-Requirements.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>12.2. Requirements</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Security.html" title="Chapter 12. Security" /><link rel="prev" href="Seam_Reference_Guide-Security.html" title="Chapter 12. Security" /><link rel="next" href="Seam_Reference_Guide-Security-Authentication.html" title="12.3. Authentication" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/image!
 s/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Security.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Security-Authentication.html"><strong>Next</strong></a></li></ul><div class="sect1" title="12.2. Requirements"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Security-Requirements" class="title">Requirements</h1></div></div></div><div class="para">
+		If using the advanced mode features of Seam Security, the following jar files are required to be configured as modules in <code class="literal">application.xml</code>. If you are using Seam Security in simplified mode, these are <span class="emphasis"><em>not</em></span> required:
+	</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+				drools-compiler-3.0.5.jar
+			</div></li><li class="listitem"><div class="para">
+				drools-core-3.0.5.jar
+			</div></li><li class="listitem"><div class="para">
+				commons-jci-core-1.0-406301.jar
+			</div></li><li class="listitem"><div class="para">
+				commons-jci-janino-2.4.3.jar
+			</div></li><li class="listitem"><div class="para">
+				commons-lang-2.1.jar
+			</div></li><li class="listitem"><div class="para">
+				janino-2.4.3.jar
+			</div></li><li class="listitem"><div class="para">
+				stringtemplate-2.3b6.jar
+			</div></li><li class="listitem"><div class="para">
+				antlr-2.7.6.jar
+			</div></li><li class="listitem"><div class="para">
+				antlr-3.0ea8.jar
+			</div></li></ul></div><div class="para">
+		For web-based security, <code class="literal">jboss-seam-ui.jar</code> must also be included in the application's war file. Also, to make use of the security EL functions, <code class="literal">SeamFaceletViewHandler</code> must be used. Configure it in <code class="literal">faces-config.xml</code> like this:
+	</div><pre class="programlisting">&lt;application&gt;
+    &lt;view-handler&gt;org.jboss.seam.ui.facelet.SeamFaceletViewHandler&lt;/view-handler&gt;
+&lt;/application&gt;
+</pre></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Security.html"><strong>Prev</strong>Chapter 12. Security</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Security-Authentication.html"><strong>Next</strong>12.3. Authentication</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Security-SSL_Security.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Security-SSL_Security.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Security-SSL_Security.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>12.7. SSL Security</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Security.html" title="Chapter 12. Security" /><link rel="prev" href="Seam_Reference_Guide-Writing_Security_Rules-Creating_a_security_rules_file.html" title="12.6.3. Creating a security rules file" /><link rel="next" href="Seam_Reference_Guide-Security-Implementing_a_Captcha_Test.html" title="12.8. Implementing a Captcha Test" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product!
  Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Writing_Security_Rules-Creating_a_security_rules_file.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Security-Implementing_a_Captcha_Test.html"><strong>Next</strong></a></li></ul><div class="sect1" title="12.7. SSL Security"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Security-SSL_Security" class="title">SSL Security</h1></div></div></div><div class="para">
+		Seam includes basic support for serving sensitive pages via the HTTPS protocol. This is easily configured by specifying a <code class="literal">scheme</code> for the page in <code class="literal">pages.xml</code>. The following example shows how the view <code class="literal">/login.xhtml</code> is configured to use HTTPS:
+	</div><pre class="programlisting">  &lt;page view-id="/login.xhtml" scheme="https"&gt;
+</pre><div class="para">
+		This configuration is automatically extended to both <code class="literal">s:link</code> and <code class="literal">s:button</code> JSF controls, which (when specifying the <code class="literal">view</code>) will also render the link using the correct protocol. Based on the previous example, the following link will use the HTTPS protocol because <code class="literal">/login.xhtml</code> is configured to use it:
+	</div><pre class="programlisting">  &lt;s:link view="/login.xhtml" value="Login"/&gt;
+</pre><div class="para">
+		Browsing directly to a view when using the <span class="emphasis"><em>incorrect</em></span> protocol will cause a redirect to the same view using the <span class="emphasis"><em>correct</em></span> protocol. For example, browsing to a page that has <code class="literal">scheme="https"</code> using HTTP will cause a redirect to the same page using HTTPS.
+	</div><div class="para">
+		It is also possible to configure a default <code class="literal">scheme</code> for all pages. This is actually quite important, as you might only wish to use HTTPS for a few pages, and if no default scheme is specified then the default behavior is to continue using the current scheme. What this means is that once you enter a page with HTTPS, then HTTPS will continue to be used even if you navigate away to other non-HTTPS pages (a bad thing!). So it is strongly recommended to include a default <code class="literal">scheme</code>, by configuring it on the default (<code class="literal">"*"</code>) view:
+	</div><pre class="programlisting">  &lt;page view-id="*" scheme="http"&gt;
+</pre><div class="para">
+		Of course, if <span class="emphasis"><em>none</em></span> of the pages in your application use HTTPS then it is not required to specify a default scheme.
+	</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Writing_Security_Rules-Creating_a_security_rules_file.html"><strong>Prev</strong>12.6.3. Creating a security rules file</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Security-Implementing_a_Captcha_Test.html"><strong>Next</strong>12.8. Implementing a Captcha Test</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Security-Writing_Security_Rules.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Security-Writing_Security_Rules.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Security-Writing_Security_Rules.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>12.6. Writing Security Rules</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Security.html" title="Chapter 12. Security" /><link rel="prev" href="Seam_Reference_Guide-Securing_Entities-Entity_security_with_Hibernate.html" title="12.5.5.2. Entity security with Hibernate" /><link rel="next" href="Seam_Reference_Guide-Writing_Security_Rules-Configuring_a_rules_file.html" title="12.6.2. Configuring a rules file" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.!
 png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Securing_Entities-Entity_security_with_Hibernate.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Writing_Security_Rules-Configuring_a_rules_file.html"><strong>Next</strong></a></li></ul><div class="sect1" title="12.6. Writing Security Rules"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Security-Writing_Security_Rules" class="title">Writing Security Rules</h1></div></div></div><div class="para">
+		Up to this point there has been a lot of mention of permissions, but no information about how permissions are actually defined or granted. This section completes the picture, by explaining how permission checks are processed, and how to implement permission checks for a Seam application.
+	</div><div class="sect2" title="12.6.1. Permissions Overview"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Writing_Security_Rules-Permissions_Overview" class="title">Permissions Overview</h1></div></div></div><div class="para">
+		So how does the security API know whether a user has the <code class="literal">customer:modify</code> permission for a specific customer? Seam Security provides quite a novel method for determining user permissions, based on JBoss Rules. A couple of the advantages of using a rule engine are 1) a centralized location for the business logic that is behind each user permission, and 2) speed - JBoss Rules uses very efficient algorithms for evaluating large numbers of complex rules involving multiple conditions.
+	</div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Securing_Entities-Entity_security_with_Hibernate.html"><strong>Prev</strong>12.5.5.2. Entity security with Hibernate</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Writing_Security_Rules-Configuring_a_rules_file.html"><strong>Next</strong>12.6.2. Configuring a rules file</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Security.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Security.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Security.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 12. Security</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="index.html" title="Seam Reference Guide CP07" /><link rel="prev" href="ch11s03.html" title="11.3. Using rules from a jBPM process definition" /><link rel="next" href="Seam_Reference_Guide-Security-Requirements.html" title="12.2. Requirements" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png!
 " alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="ch11s03.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Security-Requirements.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="chapter" title="Chapter 12. Security" lang="en-US"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Security">Chapter 12. Security</h2></div></div></div><div class="toc"><dl><dt><span class="sect1"><a href="Seam_Reference_Guide-Security.html#Seam_Reference_Guide-Security-Overview">12.1. Overview</a></span></dt><dd><dl><dt><span class="sect2"><a href="Seam_Reference_Guide-Security.html#Seam_Reference_Guide-Overview-Which_mode_is_right_for_my_application">12.1.1. Which mode is right for my application?</a></span></dt></dl></dd><dt><span class="sect1"><a href="Seam_Reference_Guide-Security-Requirements.html">12.2. Requirements</a></span></dt><dt><span cla!
 ss="sect1"><a href="Seam_Reference_Guide-Security-Authenticati!
 on.html"
>12.3. Authentication</a></span></dt><dd><dl><dt><span class="sect2"><a href="Seam_Reference_Guide-Security-Authentication.html#Seam_Reference_Guide-Authentication-Configuration">12.3.1. Configuration</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Authentication-Writing_an_authentication_method.html">12.3.2. Writing an authentication method</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Authentication-Writing_a_login_form.html">12.3.3. Writing a login form</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Authentication-Simplified_Configuration___Summary.html">12.3.4. Simplified Configuration - Summary</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Authentication-Handling_Security_Exceptions.html">12.3.5. Handling Security Exceptions</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Authentication-Login_Redirection.html">12.3.6. Login Redirection</a></span></dt><dt><span c!
 lass="sect2"><a href="Seam_Reference_Guide-Authentication-Advanced_Authentication_Features.html">12.3.7. Advanced Authentication Features</a></span></dt></dl></dd><dt><span class="sect1"><a href="Seam_Reference_Guide-Security-Error_Messages.html">12.4. Error Messages</a></span></dt><dt><span class="sect1"><a href="Seam_Reference_Guide-Security-Authorization.html">12.5. Authorization</a></span></dt><dd><dl><dt><span class="sect2"><a href="Seam_Reference_Guide-Security-Authorization.html#Seam_Reference_Guide-Authorization-Core_concepts">12.5.1. Core concepts</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Authorization-Securing_components.html">12.5.2. Securing components</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Authorization-Security_in_the_user_interface.html">12.5.3. Security in the user interface</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Authorization-Securing_pages.html">12.5.4. Securing pages</a!
 ></span></dt><dt><span class="sect2"><a href="Seam_Reference_G!
 uide-Aut
horization-Securing_Entities.html">12.5.5. Securing Entities</a></span></dt></dl></dd><dt><span class="sect1"><a href="Seam_Reference_Guide-Security-Writing_Security_Rules.html">12.6. Writing Security Rules</a></span></dt><dd><dl><dt><span class="sect2"><a href="Seam_Reference_Guide-Security-Writing_Security_Rules.html#Seam_Reference_Guide-Writing_Security_Rules-Permissions_Overview">12.6.1. Permissions Overview</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Writing_Security_Rules-Configuring_a_rules_file.html">12.6.2. Configuring a rules file</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Writing_Security_Rules-Creating_a_security_rules_file.html">12.6.3. Creating a security rules file</a></span></dt></dl></dd><dt><span class="sect1"><a href="Seam_Reference_Guide-Security-SSL_Security.html">12.7. SSL Security</a></span></dt><dt><span class="sect1"><a href="Seam_Reference_Guide-Security-Implementing_a_Captcha_Test.html">12.8. Imple!
 menting a Captcha Test</a></span></dt><dd><dl><dt><span class="sect2"><a href="Seam_Reference_Guide-Security-Implementing_a_Captcha_Test.html#Seam_Reference_Guide-Implementing_a_Captcha_Test-Configuring_the_Captcha_Servlet">12.8.1. Configuring the Captcha Servlet</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Implementing_a_Captcha_Test-Adding_a_Captcha_to_a_page.html">12.8.2. Adding a Captcha to a page</a></span></dt></dl></dd></dl></div><div class="para">
+		The Seam Security API is an optional Seam feature that provides authentication and authorization features for securing both domain and page resources within your Seam project.
+	</div><div class="sect1" title="12.1. Overview"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Security-Overview" class="title">Overview</h1></div></div></div><div class="para">
+		Seam Security provides two different modes of operation:
+	</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+				<span class="emphasis"><em>simplified mode</em></span> - this mode supports authentication services and simple role-based security checks.
+			</div></li><li class="listitem"><div class="para">
+				<span class="emphasis"><em>advanced mode</em></span> - this mode supports all the same features as the simplified mode, plus it offers rule-based security checks using JBoss Rules.
+			</div></li></ul></div><div class="sect2" title="12.1.1. Which mode is right for my application?"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Overview-Which_mode_is_right_for_my_application" class="title">Which mode is right for my application?</h1></div></div></div><div class="para">
+		That all depends on the requirements of your application. If you have minimal security requirements, for example if you only wish to restrict certain pages and actions to users who are logged in, or who belong to a certain role, then the simplified mode will probably be sufficient. The advantages of this is a more simplified configuration, significantly less libraries to include, and a smaller memory footprint.
+	</div><div class="para">
+		If on the other hand, your application requires security checks based on contextual state or complex business rules, then you will require the features provided by the advanced mode.
+	</div></div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="ch11s03.html"><strong>Prev</strong>11.3. Using rules from a jBPM process definition</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Security-Requirements.html"><strong>Next</strong>12.2. Requirements</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Spring_Framework_integration-Injecting_Spring_beans_into_Seam_components.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Spring_Framework_integration-Injecting_Spring_beans_into_Seam_components.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Spring_Framework_integration-Injecting_Spring_beans_into_Seam_components.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>20.2. Injecting Spring beans into Seam components</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Spring_Framework_integration.html" title="Chapter 20. Spring Framework integration" /><link rel="prev" href="Seam_Reference_Guide-Spring_Framework_integration.html" title="Chapter 20. Spring Framework integration" /><link rel="next" href="Seam_Reference_Guide-Spring_Framework_integration-Making_a_Spring_bean_into_a_Seam_component.html" title="20.3. Making a Spring bean into a Seam component" /></head><body class=""><p id="title"><a class="l!
 eft" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Spring_Framework_integration.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Spring_Framework_integration-Making_a_Spring_bean_into_a_Seam_component.html"><strong>Next</strong></a></li></ul><div class="section" title="20.2. Injecting Spring beans into Seam components"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Spring_Framework_integration-Injecting_Spring_beans_into_Seam_components">20.2. Injecting Spring beans into Seam components</h2></div></div></div><div class="para">
+			It is even easier to inject Spring beans into Seam component instances. Actually, there are two possible approaches:
+		</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+					inject a Spring bean using an EL expression
+				</div></li><li class="listitem"><div class="para">
+					make the Spring bean a Seam component
+				</div></li></ul></div><div class="para">
+			We will discuss the second option in the next section. The easiest approach is to access the Spring beans via EL.
+		</div><div class="para">
+			The Spring <code class="literal">DelegatingVariableResolver</code> is an integration point Spring provides for integrating Spring with JSF. This <code class="literal">VariableResolver</code> makes all Spring beans available in EL by their bean id. You will need to add the <code class="literal">DelegatingVariableResolver</code> to <code class="literal">faces-config.xml</code>:
+		</div><pre class="programlisting">&lt;application&gt;
+    &lt;variable-resolver&gt;
+        org.springframework.web.jsf.DelegatingVariableResolver
+    &lt;/variable-resolver&gt;
+&lt;/application&gt;
+</pre><div class="para">
+			Then you can inject Spring beans using <code class="literal">@In</code>:
+		</div><pre class="programlisting">@In("#{bookingService}")
+private BookingService bookingService;
+</pre><div class="para">
+			The use of Spring beans in EL is not limited to injection. Spring beans may be used anywhere that EL expressions are used in Seam: process and pageflow definitions, working memory assertions, etc...
+		</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Spring_Framework_integration.html"><strong>Prev</strong>Chapter 20. Spring Framework integration</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Spring_Framework_integration-Making_a_Spring_bean_into_a_Seam_component.html"><strong>Next</strong>20.3. Making a Spring bean into a Seam component</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Spring_Framework_integration-Making_a_Spring_bean_into_a_Seam_component.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Spring_Framework_integration-Making_a_Spring_bean_into_a_Seam_component.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Spring_Framework_integration-Making_a_Spring_bean_into_a_Seam_component.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>20.3. Making a Spring bean into a Seam component</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Spring_Framework_integration.html" title="Chapter 20. Spring Framework integration" /><link rel="prev" href="Seam_Reference_Guide-Spring_Framework_integration-Injecting_Spring_beans_into_Seam_components.html" title="20.2. Injecting Spring beans into Seam components" /><link rel="next" href="Seam_Reference_Guide-Spring_Framework_integration-Seam_scoped_Spring_beans.html" title="20.4. Seam-scoped Spring beans" /></head><body class=""><p id="tit!
 le"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Spring_Framework_integration-Injecting_Spring_beans_into_Seam_components.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Spring_Framework_integration-Seam_scoped_Spring_beans.html"><strong>Next</strong></a></li></ul><div class="section" title="20.3. Making a Spring bean into a Seam component"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Spring_Framework_integration-Making_a_Spring_bean_into_a_Seam_component">20.3. Making a Spring bean into a Seam component</h2></div></div></div><div class="para">
+			The <code class="literal">&lt;seam:component/&gt;</code> namespace handler can be used to make any Spring bean a Seam component. Just place the <code class="literal">&lt;seam:component/&gt;</code> tag within the declaration of the bean that you wish to be a Seam component:
+		</div><pre class="programlisting">&lt;bean id="someSpringBean" class="SomeSpringBeanClass" scope="prototype"&gt;
+    &lt;seam:component/&gt;
+&lt;/bean&gt;
+</pre><div class="para">
+			By default, <code class="literal">&lt;seam:component/&gt;</code> will create a <code class="literal">STATELESS</code> Seam component with class and name provided in the bean definition. Occasionally, such as when a <code class="literal">FactoryBean</code> is used, the class of the Spring bean may not be the class appearing in the bean definition. In such cases the <code class="literal">class</code> should be explicitly specified. A Seam component name may be explicitly specified in cases where there is potential for a naming conflict.
+		</div><div class="para">
+			The <code class="literal">scope</code> attribute of <code class="literal">&lt;seam:component/&gt;</code> may be used if you wish the Spring bean to be managed in a particular Seam scope. The Spring bean must be scoped to <code class="literal">prototype</code> if the Seam scope specified is anything other than <code class="literal">STATELESS</code>. Pre-existing Spring beans usually have a fundamentally stateless character, so this attribute is not usually needed.
+		</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Spring_Framework_integration-Injecting_Spring_beans_into_Seam_components.html"><strong>Prev</strong>20.2. Injecting Spring beans into Seam components</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Spring_Framework_integration-Seam_scoped_Spring_beans.html"><strong>Next</strong>20.4. Seam-scoped Spring beans</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Spring_Framework_integration-Seam_scoped_Spring_beans.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Spring_Framework_integration-Seam_scoped_Spring_beans.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Spring_Framework_integration-Seam_scoped_Spring_beans.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>20.4. Seam-scoped Spring beans</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Spring_Framework_integration.html" title="Chapter 20. Spring Framework integration" /><link rel="prev" href="Seam_Reference_Guide-Spring_Framework_integration-Making_a_Spring_bean_into_a_Seam_component.html" title="20.3. Making a Spring bean into a Seam component" /><link rel="next" href="Seam_Reference_Guide-Spring_Framework_integration-Spring_Application_Context_as_a_Seam_Component.html" title="20.5. Spring Application Context as a Seam Component" /></head><!
 body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Spring_Framework_integration-Making_a_Spring_bean_into_a_Seam_component.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Spring_Framework_integration-Spring_Application_Context_as_a_Seam_Component.html"><strong>Next</strong></a></li></ul><div class="section" title="20.4. Seam-scoped Spring beans"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Spring_Framework_integration-Seam_scoped_Spring_beans">20.4. Seam-scoped Spring beans</h2></div></div></div><div class="para">
+			The Seam integration package also lets you use Seam's contexts as Spring 2.0 style custom scopes. This lets you declare any Spring bean in any of Seam's contexts. However, note once again that Spring's component model was never architected to support statefulness, so please use this feature with great care. In particular, clustering of session or conversation scoped Spring beans is deeply problematic, and care must be taken when injecting a bean or component from a wider scope into a bean of a narrower scope.
+		</div><div class="para">
+			By specifying <code class="literal">&lt;seam:configure-scopes/&gt;</code> once in a Spring bean factory configuration, all of the Seam scopes will be available to Spring beans as custom scopes. To associate a Spring bean with a particular Seam scope, specify the Seam scope in the <code class="literal">scope</code> attribute of the bean definition.
+		</div><pre class="programlisting">&lt;!-- Only needs to be specified once per bean factory--&gt;
+&lt;seam:configure-scopes/&gt;
+
+...
+
+&lt;bean id="someSpringBean" class="SomeSpringBeanClass" scope="seam.CONVERSATION"/&gt;
+</pre><div class="para">
+			The prefix of the scope name may be changed by specifying the <code class="literal">prefix</code> attribute in the <code class="literal">configure-scopes</code> definition. (The default prefix is <code class="literal">seam.</code>)
+		</div><div class="para">
+			Seam-scoped Spring beans defined this way can be injected into other Spring beans without the use of <code class="literal">&lt;seam:instance/&gt;</code>. However, care must be taken to ensure scope impedance is maintained. The normal approach used in Spring is to specify <code class="literal">&lt;aop:scoped-proxy/&gt;</code> in the bean definition. However, Seam-scoped Spring beans are <span class="emphasis"><em>not</em></span> compatible with <code class="literal">&lt;aop:scoped-proxy/&gt;</code>. So if you need to inject a Seam-scoped Spring bean into a singleton, <code class="literal">&lt;seam:instance/&gt;</code> must be used:
+		</div><pre class="programlisting">&lt;bean id="someSpringBean" class="SomeSpringBeanClass" scope="seam.CONVERSATION"/&gt;
+
+...
+
+&lt;bean id="someSingleton"&gt;
+    &lt;property name="someSeamScopedSpringBean"&gt;
+        &lt;seam:instance name="someSpringBean" proxy="true"/&gt;
+    &lt;/property&gt;
+&lt;/bean&gt;
+</pre></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Spring_Framework_integration-Making_a_Spring_bean_into_a_Seam_component.html"><strong>Prev</strong>20.3. Making a Spring bean into a Seam component</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Spring_Framework_integration-Spring_Application_Context_as_a_Seam_Component.html"><strong>Next</strong>20.5. Spring Application Context as a Seam Compon...</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Spring_Framework_integration-Spring_Application_Context_as_a_Seam_Component.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Spring_Framework_integration-Spring_Application_Context_as_a_Seam_Component.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Spring_Framework_integration-Spring_Application_Context_as_a_Seam_Component.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>20.5. Spring Application Context as a Seam Component</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Spring_Framework_integration.html" title="Chapter 20. Spring Framework integration" /><link rel="prev" href="Seam_Reference_Guide-Spring_Framework_integration-Seam_scoped_Spring_beans.html" title="20.4. Seam-scoped Spring beans" /><link rel="next" href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications.html" title="Chapter 21. Configuring Seam and packaging Seam applications" /></head><body class=""><p id="title"><a c!
 lass="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Spring_Framework_integration-Seam_scoped_Spring_beans.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications.html"><strong>Next</strong></a></li></ul><div class="section" title="20.5. Spring Application Context as a Seam Component"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Spring_Framework_integration-Spring_Application_Context_as_a_Seam_Component">20.5. Spring Application Context as a Seam Component</h2></div></div></div><div class="para">
+			Although it is possible to use the Spring <code class="literal">ContextLoaderListener</code> to start your application's Spring ApplicationContext there are a couple of limitations.
+		</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+					the Spring ApplicationContext must be started <span class="emphasis"><em>after</em></span> the <code class="literal">SeamListener</code>
+				</div></li><li class="listitem"><div class="para">
+					it can be tricky starting a Spring ApplicationContext for use in Seam unit and integration tests
+				</div></li></ul></div><div class="para">
+			To overcome these two limitations the Spring integration includes a Seam component that will start a Spring ApplicationContext. To use this Seam component place the <code class="literal">&lt;spring:context-loader/&gt;</code> definition in the <code class="literal">components.xml</code>. Specify your Spring context file location in the <code class="literal">config-locations</code> attribute. If more than one config file is needed you can place them in the nested <code class="literal">&lt;spring:config-locations/&gt;</code> element following standard <code class="literal">components.xml</code> multi value practices.
+		</div><pre class="programlisting">&lt;components xmlns="http://jboss.com/products/seam/components" 
+            xmlns:spring="http://jboss.com/products/seam/spring"
+            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+            xsi:schemaLocation="http://jboss.com/products/seam/components http://jboss.com/products/seam/components-1.2.xsd
+                                http://jboss.com/products/seam/spring http://jboss.com/products/seam/spring-1.2.xsd"&gt;
+
+	&lt;spring:context-loader context-locations="/WEB-INF/applicationContext.xml"/&gt;
+
+&lt;/components&gt;
+</pre></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Spring_Framework_integration-Seam_scoped_Spring_beans.html"><strong>Prev</strong>20.4. Seam-scoped Spring beans</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications.html"><strong>Next</strong>Chapter 21. Configuring Seam and packaging Seam a...</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Spring_Framework_integration.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Spring_Framework_integration.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Spring_Framework_integration.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 20. Spring Framework integration</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="index.html" title="Seam Reference Guide CP07" /><link rel="prev" href="Seam_Reference_Guide-JMS_Messaging-Tuning_the_Polling_Process.html" title="19.10.4. Tuning the Polling Process" /><link rel="next" href="Seam_Reference_Guide-Spring_Framework_integration-Injecting_Spring_beans_into_Seam_components.html" title="20.2. Injecting Spring beans into Seam components" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Conte!
 nt/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-JMS_Messaging-Tuning_the_Polling_Process.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Spring_Framework_integration-Injecting_Spring_beans_into_Seam_components.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="chapter" title="Chapter 20. Spring Framework integration" lang="en-US"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Spring_Framework_integration">Chapter 20. Spring Framework integration</h2></div></div></div><div class="toc"><dl><dt><span class="section"><a href="Seam_Reference_Guide-Spring_Framework_integration.html#Seam_Reference_Guide-Spring_Framework_integration-Injecting_Seam_components_into_Spring_!
 beans">20.1. Injecting Seam components into Spring beans</a></!
 span></d
t><dt><span class="section"><a href="Seam_Reference_Guide-Spring_Framework_integration-Injecting_Spring_beans_into_Seam_components.html">20.2. Injecting Spring beans into Seam components</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Spring_Framework_integration-Making_a_Spring_bean_into_a_Seam_component.html">20.3. Making a Spring bean into a Seam component</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Spring_Framework_integration-Seam_scoped_Spring_beans.html">20.4. Seam-scoped Spring beans</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Spring_Framework_integration-Spring_Application_Context_as_a_Seam_Component.html">20.5. Spring Application Context as a Seam Component</a></span></dt></dl></div><div class="para">
+		The Spring integration module allows easy migration of Spring-based projects to Seam and allows Spring applications to take advantage of key Seam features like conversations and Seam's more sophisticated persistence context management.
+	</div><div class="para">
+		Seam's support for Spring provides the ability to:
+	</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+				inject Seam component instances into Spring beans
+			</div></li><li class="listitem"><div class="para">
+				inject Spring beans into Seam components
+			</div></li><li class="listitem"><div class="para">
+				turn Spring beans into Seam components
+			</div></li><li class="listitem"><div class="para">
+				allow Spring beans to live in any Seam context
+			</div></li><li class="listitem"><div class="para">
+				start a spring WebApplicationContext with a Seam component
+			</div></li></ul></div><div class="section" title="20.1. Injecting Seam components into Spring beans"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Spring_Framework_integration-Injecting_Seam_components_into_Spring_beans">20.1. Injecting Seam components into Spring beans</h2></div></div></div><div class="para">
+			Injecting Seam component instances into Spring beans is accomplished using the <code class="literal">&lt;seam:instance/&gt;</code> namespace handler. To enable the Seam namespace handler, the Seam namespace must be added to the Spring beans definition file:
+		</div><pre class="programlisting">&lt;beans xmlns="http://www.springframework.org/schema/beans"
+    xmlns:seam="http://jboss.com/products/seam/spring-seam"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://www.springframework.org/schema/beans 
+                        http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
+                        http://jboss.com/products/seam/spring-seam 
+                        http://jboss.com/products/seam/spring-seam-1.2.xsd"&gt;
+</pre><div class="para">
+			Now any Seam component may be injected into any Spring bean:
+		</div><pre class="programlisting">&lt;bean id="someSpringBean" class="SomeSpringBeanClass" scope="prototype"&gt;
+    &lt;property name="someProperty"&gt;
+        &lt;seam:instance name="someComponent"/&gt;
+    &lt;/property&gt;
+&lt;/bean&gt;
+</pre><div class="para">
+			An EL expression may be used instead of a component name:
+		</div><pre class="programlisting">&lt;bean id="someSpringBean" class="SomeSpringBeanClass" scope="prototype"&gt;
+    &lt;property name="someProperty"&gt;
+        &lt;seam:instance name="#{someExpression}"/&gt;
+    &lt;/property&gt;
+&lt;/bean&gt;
+</pre><div class="para">
+			Seam component instances may even be made available for injection into Spring beans by a Spring bean id.
+		</div><pre class="programlisting">&lt;seam:instance name="someComponent" id="someSeamComponentInstance"/&gt;
+
+&lt;bean id="someSpringBean" class="SomeSpringBeanClass" scope="prototype"&gt;
+    &lt;property name="someProperty" ref="someSeamComponentInstance"&gt;
+&lt;/bean&gt;
+</pre><div class="para">
+			Now for the caveat!
+		</div><div class="para">
+			Seam was designed from the ground up to support a stateful component model with multiple contexts. Spring was not. Unlike Seam bijection, Spring injection does not occur at method invocation time. Instead, injection happens only when the Spring bean is instantiated. So the instance available when the bean is instantiated will be the same instance that the bean uses for the entire life of the bean. For example, if a Seam <code class="literal">CONVERSATION</code>-scoped component instance is directly injected into a singleton Spring bean, that singleton will hold a reference to the same instance long after the conversation is over! We call this problem <span class="emphasis"><em>scope impedance</em></span>. Seam bijection ensures that scope impedance is maintained naturally as an invocation flows through the system. In Spring, we need to inject a proxy of the Seam component, and resolve the reference when the proxy is invoked.
+		</div><div class="para">
+			The <code class="literal">&lt;seam:instance/&gt;</code> tag lets us automatically proxy the Seam component.
+		</div><pre class="programlisting">&lt;seam:instance id="seamManagedEM" name="someManagedEMComponent" proxy="true"/&gt;
+        
+&lt;bean id="someSpringBean" class="SomeSpringBeanClass"&gt;
+    &lt;property name="entityManager" ref="seamManagedEM"&gt;
+&lt;/bean&gt;
+</pre><div class="para">
+			This example shows one way to use a Seam-managed persistence context from a Spring bean. (A more robust way to use Seam-managed persistence contexts as a replacement for the Spring <code class="literal">OpenEntityManagerInView</code> filter will be provided in a future release)
+		</div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-JMS_Messaging-Tuning_the_Polling_Process.html"><strong>Prev</strong>19.10.4. Tuning the Polling Process</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Spring_Framework_integration-Injecting_Spring_beans_into_Seam_components.html"><strong>Next</strong>20.2. Injecting Spring beans into Seam components</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Tables-pcell.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Tables-pcell.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Tables-pcell.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>15.7.2. p:cell</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-iText_PDF_generation-Tables.html" title="15.7. Tables" /><link rel="prev" href="Seam_Reference_Guide-iText_PDF_generation-Tables.html" title="15.7. Tables" /><link rel="next" href="Seam_Reference_Guide-iText_PDF_generation-Document_Constants.html" title="15.8. Document Constants" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss!
 .com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-iText_PDF_generation-Tables.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-iText_PDF_generation-Document_Constants.html"><strong>Next</strong></a></li></ul><div class="section" title="15.7.2. p:cell"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Tables-pcell">15.7.2. p:cell</h3></div></div></div><div class="para">
+				<code class="literal">p:cell</code> supports the following attributes.
+			</div><div class="variablelist"><dl><dt><span class="term"><code class="literal">colspan</code></span></dt><dd><div class="para">
+							Cells can span more than one column by declaring a <code class="literal">colspan</code> greater than 1. Tables do not have the ability to span across multiple rows.
+						</div></dd><dt><span class="term"><code class="literal">horizontalAlignment</code></span></dt><dd><div class="para">
+							The horizontal alignment of the cell. (see <a class="xref" href="Seam_Reference_Guide-Document_Constants-Alignment_Values.html" title="15.8.2. Alignment Values">Section 15.8.2, “Alignment Values”</a> for possible values)
+						</div></dd><dt><span class="term"><code class="literal">verticalAlignment</code></span></dt><dd><div class="para">
+							The vertical alignment of the cell. (see <a class="xref" href="Seam_Reference_Guide-Document_Constants-Alignment_Values.html" title="15.8.2. Alignment Values">Section 15.8.2, “Alignment Values”</a> for possible values)
+						</div></dd><dt><span class="term"><code class="literal">padding</code></span></dt><dd><div class="para">
+							Padding on a given side can also be specified using <code class="literal">paddingLeft</code>, <code class="literal">paddingRight</code>, <code class="literal">paddingTop</code> and <code class="literal">paddingBottom</code>.
+						</div></dd><dt><span class="term"><code class="literal">useBorderPadding</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">leading</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">multipliedLeading</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">indent</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">verticalAlignment</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">extraParagraphSpace</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">fixedHeight</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">noWrap</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">minimumHeight</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">followingIndent</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">rightIndent</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">spaceCharRatio</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">runDirection</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">arabicOptions</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">useAscender</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">grayFill</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">rotation</code></span></dt><dd><div class="para">
+							​
+						</div></dd></dl></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-iText_PDF_generation-Tables.html"><strong>Prev</strong>15.7. Tables</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-iText_PDF_generation-Document_Constants.html"><strong>Next</strong>15.8. Document Constants</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Testing_Seam_applications-Integration_testing_Seam_applications.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Testing_Seam_applications-Integration_testing_Seam_applications.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Testing_Seam_applications-Integration_testing_Seam_applications.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>26.2. Integration testing Seam applications</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Testing_Seam_applications.html" title="Chapter 26. Testing Seam applications" /><link rel="prev" href="Seam_Reference_Guide-Testing_Seam_applications.html" title="Chapter 26. Testing Seam applications" /><link rel="next" href="Seam_Reference_Guide-Seam_tools.html" title="Chapter 27. Seam tools" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site!
 " /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Testing_Seam_applications.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_tools.html"><strong>Next</strong></a></li></ul><div class="section" title="26.2. Integration testing Seam applications"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Testing_Seam_applications-Integration_testing_Seam_applications">26.2. Integration testing Seam applications</h2></div></div></div><div class="para">
+			Integration testing is slightly more difficult. In this case, we cannot eliminate the container infrastructure; indeed, that is part of what is being tested! At the same time, we do not want to be forced to deploy our application to an application server to run the automated tests. We need to be able to reproduce just enough of the container infrastructure inside our testing environment to be able to exercise the whole application, without hurting performance too much.
+		</div><div class="para">
+			A second problem is emulating user interactions. A third problem is where to put our assertions. Some test frameworks let us test the whole application by reproducing user interactions with the web browser. These frameworks have their place, but they are not appropriate for use at development time.
+		</div><div class="para">
+			The approach taken by Seam is to let you write tests that script your components while running inside a pruned down container environment (Seam, together with the JBoss Embeddable EJB container). The role of the test script is basically to reproduce the interaction between the view and the Seam components. In other words, you get to pretend you are the JSF implementation!
+		</div><div class="para">
+			This approach tests everything except the view.
+		</div><div class="para">
+			Let us consider a JSP view for the component we unit tested above:
+		</div><pre class="programlisting">&lt;html&gt;
+ &lt;head&gt;
+  &lt;title&gt;Register New User&lt;/title&gt;
+ &lt;/head&gt;
+ &lt;body&gt;
+  &lt;f:view&gt;
+   &lt;h:form&gt;
+     &lt;table border="0"&gt;
+       &lt;tr&gt;
+         &lt;td&gt;Username&lt;/td&gt;
+         &lt;td&gt;&lt;h:inputText value="#{user.username}"/&gt;&lt;/td&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+         &lt;td&gt;Real Name&lt;/td&gt;
+         &lt;td&gt;&lt;h:inputText value="#{user.name}"/&gt;&lt;/td&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+         &lt;td&gt;Password&lt;/td&gt;
+         &lt;td&gt;&lt;h:inputSecret value="#{user.password}"/&gt;&lt;/td&gt;
+       &lt;/tr&gt;
+     &lt;/table&gt;
+     &lt;h:messages/&gt;
+     &lt;h:commandButton type="submit" value="Register" action="#{register.register}"/&gt;
+   &lt;/h:form&gt;
+  &lt;/f:view&gt;
+ &lt;/body&gt;
+&lt;/html&gt;
+</pre><div class="para">
+			We want to test the registration functionality of our application (the stuff that happens when the user clicks the Register button). We will reproduce the JSF request lifecycle in an automated TestNG test:
+		</div><pre class="programlisting">public class RegisterTest extends SeamTest
+{
+   
+   @Test
+   public void testRegister() throws Exception
+   {
+            
+      new FacesRequest() {
+
+         @Override
+         protected void processValidations() throws Exception
+         {
+            validateValue("#{user.username}", "1ovthafew");
+            validateValue("#{user.name}", "Gavin King");
+            validateValue("#{user.password}", "secret");
+            assert !isValidationFailure();
+         }
+         
+         @Override
+         protected void updateModelValues() throws Exception
+         {
+            setValue("#{user.username}", "1ovthafew");
+            setValue("#{user.name}", "Gavin King");
+            setValue("#{user.password}", "secret");
+         }
+
+         @Override
+         protected void invokeApplication()
+         {
+            assert invokeMethod("#{register.register}").equals("success");
+         }
+
+         @Override
+         protected void renderResponse()
+         {
+            assert getValue("#{user.username}").equals("1ovthafew");
+            assert getValue("#{user.name}").equals("Gavin King");
+            assert getValue("#{user.password}").equals("secret");
+         }
+         
+      }.run();
+      
+   }
+
+   ...
+   
+}
+</pre><div class="para">
+			Notice that we have extended <code class="literal">SeamTest</code>, which provides a Seam environment for our components, and written our test script as an anonymous class that extends <code class="literal">SeamTest.FacesRequest</code>, which provides an emulated JSF request lifecycle. (There is also a <code class="literal">SeamTest.NonFacesRequest</code> for testing GET requests.) We have written our code in methods which are named for the various JSF phases, to emulate the calls that JSF would make to our components. Then we have thrown in various assertions.
+		</div><div class="para">
+			You will find plenty of integration tests for the Seam example applications which demonstrate more complex cases. There are instructions for running these tests using Ant, or using the TestNG plugin for eclipse:
+		</div><div class="mediaobject" align="center"><img src="images/plugin-testng.png" align="middle" width="444" /></div><div class="section" title="26.2.1. Using mocks in integration tests"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Integration_testing_Seam_applications-Using_mocks_in_integration_tests">26.2.1. Using mocks in integration tests</h3></div></div></div><div class="para">
+				Occasionally, we need to be able to replace the implementation of some Seam component that depends upon resources which are not available in the integration test environment. For example, suppose we have some Seam component which is a facade to some payment processing system:
+			</div><pre class="programlisting">@Name("paymentProcessor")
+public class PaymentProcessor {
+    public boolean processPayment(Payment payment) { .... }
+}
+</pre><div class="para">
+				For integration tests, we can mock out this component as follows:
+			</div><pre class="programlisting">@Name("paymentProcessor")
+ at Install(precedence=MOCK)
+public class MockPaymentProcessor extends PaymentProcessor {
+    public void processPayment(Payment payment) {
+        return true;
+    }
+}
+</pre><div class="para">
+				Since the <code class="literal">MOCK</code> precedence is higher than the default precedence of application components, Seam will install the mock implementation whenever it is in the classpath. When deployed into production, the mock implementation is absent, so the real component will be installed.
+			</div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Testing_Seam_applications.html"><strong>Prev</strong>Chapter 26. Testing Seam applications</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_tools.html"><strong>Next</strong>Chapter 27. Seam tools</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Testing_Seam_applications.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Testing_Seam_applications.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Testing_Seam_applications.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 26. Testing Seam applications</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="index.html" title="Seam Reference Guide CP07" /><link rel="prev" href="Seam_Reference_Guide-Limitations-Calling_a_MethodExpression_from_Java_code.html" title="25.3.2. Calling a MethodExpression from Java code" /><link rel="next" href="Seam_Reference_Guide-Testing_Seam_applications-Integration_testing_Seam_applications.html" title="26.2. Integration testing Seam applications" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Com!
 mon_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Limitations-Calling_a_MethodExpression_from_Java_code.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Testing_Seam_applications-Integration_testing_Seam_applications.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="chapter" title="Chapter 26. Testing Seam applications" lang="en-US"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Testing_Seam_applications">Chapter 26. Testing Seam applications</h2></div></div></div><div class="toc"><dl><dt><span class="section"><a href="Seam_Reference_Guide-Testing_Seam_applications.html#Seam_Reference_Guide-Testing_Seam_applications-Unit_testing_Seam_components">26.1. Unit!
  testing Seam components</a></span></dt><dt><span class="secti!
 on"><a h
ref="Seam_Reference_Guide-Testing_Seam_applications-Integration_testing_Seam_applications.html">26.2. Integration testing Seam applications</a></span></dt><dd><dl><dt><span class="section"><a href="Seam_Reference_Guide-Testing_Seam_applications-Integration_testing_Seam_applications.html#Seam_Reference_Guide-Integration_testing_Seam_applications-Using_mocks_in_integration_tests">26.2.1. Using mocks in integration tests</a></span></dt></dl></dd></dl></div><div class="para">
+		Most Seam applications will need at least two kinds of automated tests: <span class="emphasis"><em>unit tests</em></span>, which test a particular Seam component in isolation, and scripted <span class="emphasis"><em>integration tests</em></span> which exercise all Java layers of the application (that is, everything except the view pages).
+	</div><div class="para">
+		Both kinds of tests are very easy to write.
+	</div><div class="section" title="26.1. Unit testing Seam components"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Testing_Seam_applications-Unit_testing_Seam_components">26.1. Unit testing Seam components</h2></div></div></div><div class="para">
+			All Seam components are POJOs. This is a great place to start if you want easy unit testing. And since Seam emphasises the use of bijection for inter-component interactions and access to contextual objects, it is very easy to test a Seam component outside of its normal runtime environment.
+		</div><div class="para">
+			Consider the following Seam component:
+		</div><pre class="programlisting">@Stateless
+ at Scope(EVENT)
+ at Name("register")
+public class RegisterAction implements Register
+{
+   private User user;
+   private EntityManager em;
+
+   @In
+   public void setUser(User user) {
+       this.user = user;
+   }
+   
+   @PersistenceContext
+   public void setBookingDatabase(EntityManager em) {
+       this.em = em;
+   }
+   
+   public String register()
+   {
+      List existing = em.createQuery("select username from User where username=:username")
+         .setParameter("username", user.getUsername())
+         .getResultList();
+      if (existing.size()==0)
+      {
+         em.persist(user);
+         return "success";
+      }
+      else
+      {
+         return null;
+      }
+   }
+
+}
+</pre><div class="para">
+			We could write a TestNG test for this component as follows:
+		</div><pre class="programlisting">public class RegisterActionTest
+{
+
+    @Test
+    public testRegisterAction()
+    {
+        EntityManager em = getEntityManagerFactory().createEntityManager();
+        em.getTransaction().begin();
+        
+        User gavin = new User();
+        gavin.setName("Gavin King");
+        gavin.setUserName("1ovthafew");
+        gavin.setPassword("secret");
+        
+        RegisterAction action = new RegisterAction();
+        action.setUser(gavin);
+        action.setBookingDatabase(em);
+        
+        assert "success".equals( action.register() );
+        
+        em.getTransaction().commit();
+        em.close();
+    }
+    
+    
+    private EntityManagerFactory emf;
+    
+    public EntityManagerFactory getEntityManagerFactory()
+    {
+        return emf;
+    }
+    
+    @Configuration(beforeTestClass=true)
+    public void init() 
+    {
+        emf = Persistence.createEntityManagerFactory("myResourceLocalEntityManager");
+    }
+    
+    @Configuration(afterTestClass=true)
+    public void destroy()
+    {
+        emf.close();
+    }
+    
+}
+</pre><div class="para">
+			Seam components do not usually depend directly upon container infrastructure, allowing for simplistic unit testing.
+		</div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Limitations-Calling_a_MethodExpression_from_Java_code.html"><strong>Prev</strong>25.3.2. Calling a MethodExpression from Java code</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Testing_Seam_applications-Integration_testing_Seam_applications.html"><strong>Next</strong>26.2. Integration testing Seam applications</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-The_Loading_Message-A_Custom_Loading_Indicator.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-The_Loading_Message-A_Custom_Loading_Indicator.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-The_Loading_Message-A_Custom_Loading_Indicator.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>19.8.3. A Custom Loading Indicator</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Remoting-The_Loading_Message.html" title="19.8. The Loading Message" /><link rel="prev" href="Seam_Reference_Guide-The_Loading_Message-Hiding_the_loading_message.html" title="19.8.2. Hiding the loading message" /><link rel="next" href="Seam_Reference_Guide-Remoting-Controlling_what_data_is_returned.html" title="19.9. Controlling what data is returned" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Co!
 ntent/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-The_Loading_Message-Hiding_the_loading_message.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Remoting-Controlling_what_data_is_returned.html"><strong>Next</strong></a></li></ul><div class="sect2" title="19.8.3. A Custom Loading Indicator"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-The_Loading_Message-A_Custom_Loading_Indicator" class="title">A Custom Loading Indicator</h1></div></div></div><div class="para">
+		It is also possible to override the loading indicator to display an animated icon, or anything else that you want. To do this override the <code class="literal">displayLoadingMessage()</code> and <code class="literal">hideLoadingMessage()</code> messages with your own implementation:
+	</div><pre class="programlisting">
+  Seam.Remoting.displayLoadingMessage = function() {
+    // Write code here to display the indicator
+  };
+  
+  Seam.Remoting.hideLoadingMessage = function() {
+    // Write code here to hide the indicator
+  };
+</pre></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-The_Loading_Message-Hiding_the_loading_message.html"><strong>Prev</strong>19.8.2. Hiding the loading message</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Remoting-Controlling_what_data_is_returned.html"><strong>Next</strong>19.9. Controlling what data is returned</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-The_Loading_Message-Hiding_the_loading_message.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-The_Loading_Message-Hiding_the_loading_message.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-The_Loading_Message-Hiding_the_loading_message.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>19.8.2. Hiding the loading message</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Remoting-The_Loading_Message.html" title="19.8. The Loading Message" /><link rel="prev" href="Seam_Reference_Guide-Remoting-The_Loading_Message.html" title="19.8. The Loading Message" /><link rel="next" href="Seam_Reference_Guide-The_Loading_Message-A_Custom_Loading_Indicator.html" title="19.8.3. A Custom Loading Indicator" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png"!
  alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Remoting-The_Loading_Message.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-The_Loading_Message-A_Custom_Loading_Indicator.html"><strong>Next</strong></a></li></ul><div class="sect2" title="19.8.2. Hiding the loading message"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-The_Loading_Message-Hiding_the_loading_message" class="title">Hiding the loading message</h1></div></div></div><div class="para">
+		To completely suppress the display of the loading message, override the implementation of <code class="literal">displayLoadingMessage()</code> and <code class="literal">hideLoadingMessage()</code> with functions that instead do nothing:
+	</div><pre class="programlisting">
+  // do not display the loading indicator
+  Seam.Remoting.displayLoadingMessage = function() {};
+  Seam.Remoting.hideLoadingMessage = function() {};
+</pre></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Remoting-The_Loading_Message.html"><strong>Prev</strong>19.8. The Loading Message</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-The_Loading_Message-A_Custom_Loading_Indicator.html"><strong>Next</strong>19.8.3. A Custom Loading Indicator</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-The_Seam_Application_Framework-Controller_objects.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-The_Seam_Application_Framework-Controller_objects.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-The_Seam_Application_Framework-Controller_objects.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>10.4. Controller objects</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-The_Seam_Application_Framework.html" title="Chapter 10. The Seam Application Framework" /><link rel="prev" href="Seam_Reference_Guide-The_Seam_Application_Framework-Query_objects.html" title="10.3. Query objects" /><link rel="next" href="drools.html" title="Chapter 11. Seam and JBoss Rules" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right"!
  href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-The_Seam_Application_Framework-Query_objects.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="drools.html"><strong>Next</strong></a></li></ul><div class="section" title="10.4. Controller objects"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-The_Seam_Application_Framework-Controller_objects">10.4. Controller objects</h2></div></div></div><div class="para">
+			A totally optional part of the Seam Application Framework is the class <code class="literal">Controller</code> and its subclasses <code class="literal">EntityController</code><code class="literal">HibernateEntityController</code> and <code class="literal">BusinessProcessController</code>. These classes provide nothing more than some convenience methods for access to commonly used built-in components and methods of built-in components. They help save a few keystrokes (characters can add up!) and provide a great launchpad for new users to explore the rich functionality built in to Seam.
+		</div><div class="para">
+			For example, here is what <code class="literal">RegisterAction</code> from the Seam registration example would look like:
+		</div><pre class="programlisting">@Stateless
+ at Name("register")
+public class RegisterAction extends EntityController implements Register
+{
+
+   @In private User user;
+   
+   public String register()
+   {
+      List existing = createQuery("select u.username from User u where u.username=:username")
+         .setParameter("username", user.getUsername())
+         .getResultList();
+      
+      if ( existing.size()==0 )
+      {
+         persist(user);
+         info("Registered new user #{user.username}");
+         return "/registered.jspx";
+      }
+      else
+      {
+         addFacesMessage("User #{user.username} already exists");
+         return null;
+      }
+   }
+
+}
+</pre></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-The_Seam_Application_Framework-Query_objects.html"><strong>Prev</strong>10.3. Query objects</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="drools.html"><strong>Next</strong>Chapter 11. Seam and JBoss Rules</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-The_Seam_Application_Framework-Home_objects.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-The_Seam_Application_Framework-Home_objects.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-The_Seam_Application_Framework-Home_objects.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,185 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>10.2. Home objects</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-The_Seam_Application_Framework.html" title="Chapter 10. The Seam Application Framework" /><link rel="prev" href="Seam_Reference_Guide-The_Seam_Application_Framework.html" title="Chapter 10. The Seam Application Framework" /><link rel="next" href="Seam_Reference_Guide-The_Seam_Application_Framework-Query_objects.html" title="10.3. Query objects" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_le!
 ft.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-The_Seam_Application_Framework.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-The_Seam_Application_Framework-Query_objects.html"><strong>Next</strong></a></li></ul><div class="section" title="10.2. Home objects"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-The_Seam_Application_Framework-Home_objects">10.2. Home objects</h2></div></div></div><div class="para">
+			A Home object provides persistence operations for a particular entity class. Suppose we have our trusty <code class="literal">Person</code> class:
+		</div><pre class="programlisting">@Entity
+public class Person {
+    @Id private Long id;
+    private String firstName;
+    private String lastName;
+    private Country nationality;
+    
+    //getters and setters...
+}
+</pre><div class="para">
+			We can define a <code class="literal">personHome</code> component either via configuration:
+		</div><pre class="programlisting">&lt;framework:entity-home name="personHome" entity-class="eg.Person" /&gt;
+</pre><div class="para">
+			Or via extension:
+		</div><pre class="programlisting">@Name("personHome")
+public class PersonHome extends EntityHome&lt;Person&gt; {}
+</pre><div class="para">
+			A Home object provides the following operations: <code class="literal">persist()</code>, <code class="literal">remove()</code>, <code class="literal">update()</code> and <code class="literal">getInstance()</code>. Before you can call the <code class="literal">remove()</code>, or <code class="literal">update()</code> operations, you must first set the identifier of the object you are interested in, using the <code class="literal">setId()</code> method.
+		</div><div class="para">
+			We can use a Home directly from a JSF page, for example:
+		</div><pre class="programlisting">&lt;h1&gt;Create Person&lt;/h1&gt;
+&lt;h:form&gt;
+    &lt;div&gt;First name: &lt;h:inputText value="#{personHome.instance.firstName}"/&gt;&lt;/div&gt;
+    &lt;div&gt;Last name: &lt;h:inputText value="#{personHome.instance.lastName}"/&gt;&lt;/div&gt;
+    &lt;div&gt;
+        &lt;h:commandButton value="Create Person" action="#{personHome.persist}"/&gt;
+    &lt;/div&gt;
+&lt;/h:form&gt;
+</pre><div class="para">
+			Usually, it is much nicer to be able to refer to the <code class="literal">Person</code> merely as <code class="literal">person</code>, so let us make that possible by adding a line to <code class="literal">components.xml</code>:
+		</div><pre class="programlisting">&lt;factory name="person" 
+         value="#{personHome.instance}"/&gt;
+
+&lt;framework:entity-home name="personHome" 
+                       entity-class="eg.Person" /&gt;
+</pre><div class="para">
+			(If we are using configuration.) Or by adding a <code class="literal">@Factory</code> method to <code class="literal">PersonHome</code>:
+		</div><pre class="programlisting">@Name("personHome")
+public class PersonHome extends EntityHome&lt;Person&gt; {
+    
+    @Factory("person")
+    public Person initPerson() { return getInstance(); }
+    
+}
+</pre><div class="para">
+			(If we are using extension.) This change simplifies our JSF page to the following:
+		</div><pre class="programlisting">&lt;h1&gt;Create Person&lt;/h1&gt;
+&lt;h:form&gt;
+    &lt;div&gt;First name: &lt;h:inputText value="#{person.firstName}"/&gt;&lt;/div&gt;
+    &lt;div&gt;Last name: &lt;h:inputText value="#{person.lastName}"/&gt;&lt;/div&gt;
+    &lt;div&gt;
+        &lt;h:commandButton value="Create Person" action="#{personHome.persist}"/&gt;
+    &lt;/div&gt;
+&lt;/h:form&gt;
+</pre><div class="para">
+			Well, that lets us create new <code class="literal">Person</code> entries. Now, if we want to be able to display, update and delete pre-existing <code class="literal">Person</code> entries in the database, we need to be able to pass the entry identifier to the <code class="literal">PersonHome</code>. Page parameters are a great way to do that:
+		</div><pre class="programlisting">&lt;pages&gt;
+    &lt;page view-id="/editPerson.jsp"&gt;
+        &lt;param name="personId" value="#{personHome.id}"/&gt;
+    &lt;/page&gt;
+&lt;/pages&gt;
+</pre><div class="para">
+			Now we can add the extra operations to our JSF page:
+		</div><pre class="programlisting">&lt;h1&gt;
+    &lt;h:outputText rendered="#{!personHome.managed}" value="Create Person"/&gt;
+    &lt;h:outputText rendered="#{personHome.managed}" value="Edit Person"/&gt;
+&lt;/h1&gt;
+&lt;h:form&gt;
+    &lt;div&gt;First name: &lt;h:inputText value="#{person.firstName}"/&gt;&lt;/div&gt;
+    &lt;div&gt;Last name: &lt;h:inputText value="#{person.lastName}"/&gt;&lt;/div&gt;
+    &lt;div&gt;
+        &lt;h:commandButton value="Create Person" action="#{personHome.persist}" 
+                             rendered="#{!personHome.managed}"/&gt;
+        &lt;h:commandButton value="Update Person" action="#{personHome.update}" 
+                             rendered="#{personHome.managed}"/&gt;
+        &lt;h:commandButton value="Delete Person" action="#{personHome.remove}" 
+                             rendered="#{personHome.managed}"/&gt;
+    &lt;/div&gt;
+&lt;/h:form&gt;
+</pre><div class="para">
+			When we link to the page with no request parameters, the page will be displayed as a <span class="emphasis"><em>Create Person</em></span> page. When we provide a value for the <code class="literal">personId</code> request parameter, it will be an <span class="emphasis"><em>Edit Person</em></span> page.
+		</div><div class="para">
+			Suppose we need to create <code class="literal">Person</code> entries with their nationality initialized. We can do that easily, via configuration:
+		</div><pre class="programlisting">&lt;factory name="person" 
+         value="#{personHome.instance}"/&gt;
+
+&lt;framework:entity-home name="personHome" 
+                       entity-class="eg.Person" 
+                       new-instance="#{newPerson}"/&gt;
+
+&lt;component name="newPerson" 
+           class="eg.Person"&gt;
+    &lt;property name="nationality"&gt;#{country}&lt;/property&gt;
+&lt;/component&gt;
+</pre><div class="para">
+			Or by extension:
+		</div><pre class="programlisting">@Name("personHome")
+public class PersonHome extends EntityHome&lt;Person&gt; {
+    
+    @In Country country;
+    
+    @Factory("person")
+    public Person initPerson() { return getInstance(); }
+    
+    protected Person createInstance() {
+        return new Person(country);
+    }
+    
+}
+</pre><div class="para">
+			Of course, the <code class="literal">Country</code> could be an object managed by another Home object, for example, <code class="literal">CountryHome</code>.
+		</div><div class="para">
+			To add more sophisticated operations (association management, etc), we can just add methods to <code class="literal">PersonHome</code>.
+		</div><pre class="programlisting">@Name("personHome")
+public class PersonHome extends EntityHome&lt;Person&gt; {
+    
+    @In Country country;
+    
+    @Factory("person")
+    public Person initPerson() { return getInstance(); }
+    
+    protected Person createInstance() {
+        return new Person(country);
+    }
+    
+    public void migrate()
+    {
+        getInstance().setCountry(country);
+        update();
+    }
+    
+}
+</pre><div class="para">
+			The Home object automatically displays faces messages when an operation is successful. To customize these messages we can, again, use configuration:
+		</div><pre class="programlisting">&lt;factory name="person" 
+         value="#{personHome.instance}"/&gt;
+
+&lt;framework:entity-home name="personHome"
+                       entity-class="eg.Person"
+                       new-instance="#{newPerson}"&gt;
+    &lt;framework:created-message&gt;New person #{person.firstName} #{person.lastName} created&lt;/framework:created-message&gt;
+    &lt;framework:deleted-message&gt;Person #{person.firstName} #{person.lastName} deleted&lt;/framework:deleted-message&gt;
+    &lt;framework:updated-message&gt;Person #{person.firstName} #{person.lastName} updated&lt;/framework:updated-message&gt;
+&lt;/framework:entity-home&gt;
+
+&lt;component name="newPerson" 
+           class="eg.Person"&gt;
+    &lt;property name="nationality"&gt;#{country}&lt;/property&gt;
+&lt;/component&gt;
+</pre><div class="para">
+			Or extension:
+		</div><pre class="programlisting">@Name("personHome")
+public class PersonHome extends EntityHome&lt;Person&gt; {
+    
+    @In Country country;
+    
+    @Factory("person")
+    public Person initPerson() { return getInstance(); }
+    
+    protected Person createInstance() {
+        return new Person(country);
+    }
+    
+    protected String getCreatedMessage() { return "New person #{person.firstName} 
+      #{person.lastName} created"; }
+    protected String getUpdatedMessage() { return "Person #{person.firstName} 
+      #{person.lastName} updated"; }
+    protected String getDeletedMessage() { return "Person #{person.firstName} 
+      #{person.lastName} deleted"; }
+    
+}
+</pre><div class="para">
+			But the best way to specify the messages is to put them in a resource bundle known to Seam (the bundle named <code class="literal">messages</code>, by default).
+		</div><pre class="programlisting">Person_created=New person #{person.firstName} #{person.lastName} created
+Person_deleted=Person #{person.firstName} #{person.lastName} deleted
+Person_updated=Person #{person.firstName} #{person.lastName} updated
+</pre><div class="para">
+			This enables internationalization, and keeps your code and configuration clean of presentation concerns.
+		</div><div class="para">
+			The final step is to add validation functionality to the page, using <code class="literal">&lt;s:validateAll&gt;</code> and <code class="literal">&lt;s:decorate&gt;</code>, but I'll leave that for you to figure out.
+		</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-The_Seam_Application_Framework.html"><strong>Prev</strong>Chapter 10. The Seam Application Framework</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-The_Seam_Application_Framework-Query_objects.html"><strong>Next</strong>10.3. Query objects</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-The_Seam_Application_Framework-Query_objects.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-The_Seam_Application_Framework-Query_objects.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-The_Seam_Application_Framework-Query_objects.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>10.3. Query objects</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-The_Seam_Application_Framework.html" title="Chapter 10. The Seam Application Framework" /><link rel="prev" href="Seam_Reference_Guide-The_Seam_Application_Framework-Home_objects.html" title="10.2. Home objects" /><link rel="next" href="Seam_Reference_Guide-The_Seam_Application_Framework-Controller_objects.html" title="10.4. Controller objects" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_lef!
 t.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-The_Seam_Application_Framework-Home_objects.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-The_Seam_Application_Framework-Controller_objects.html"><strong>Next</strong></a></li></ul><div class="section" title="10.3. Query objects"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-The_Seam_Application_Framework-Query_objects">10.3. Query objects</h2></div></div></div><div class="para">
+			If we need a list of all <code class="literal">Person</code> instance in the database, we can use a Query object. For example:
+		</div><pre class="programlisting">&lt;framework:entity-query name="people" 
+                        ejbql="select p from Person p"/&gt;
+</pre><div class="para">
+			We can use it from a JSF page:
+		</div><pre class="programlisting">&lt;h1&gt;List of people&lt;/h1&gt;
+&lt;h:dataTable value="#{people.resultList}" var="person"&gt;
+    &lt;h:column&gt;
+        &lt;s:link view="/editPerson.jsp" value="#{person.firstName} #{person.lastName}"&gt;
+            &lt;f:param name="personId" value="#{person.id}"/&gt;
+        &lt;/s:link&gt;
+    &lt;/h:column&gt;
+&lt;/h:dataTable&gt;
+</pre><div class="para">
+			We probably need to support pagination:
+		</div><pre class="programlisting">&lt;framework:entity-query name="people" 
+                        ejbql="select p from Person p" 
+                        order="lastName" 
+                        max-results="20"/&gt;
+</pre><div class="para">
+			We'll use a page parameter to determine the page to display:
+		</div><pre class="programlisting">&lt;pages&gt;
+    &lt;page view-id="/searchPerson.jsp"&gt;
+        &lt;param name="firstResult" value="#{people.firstResult}"/&gt;
+    &lt;/page&gt;
+&lt;/pages&gt;
+</pre><div class="para">
+			The JSF code for a pagination control is a bit verbose, but manageable:
+		</div><pre class="programlisting">&lt;h1&gt;Search for people&lt;/h1&gt;
+&lt;h:dataTable value="#{people.resultList}" var="person"&gt;
+    &lt;h:column&gt;
+        &lt;s:link view="/editPerson.jsp" value="#{person.firstName} #{person.lastName}"&gt;
+            &lt;f:param name="personId" value="#{person.id}"/&gt;
+        &lt;/s:link&gt;
+    &lt;/h:column&gt;
+&lt;/h:dataTable&gt;
+
+&lt;s:link view="/search.xhtml" rendered="#{people.previousExists}" value="First Page"&gt;
+    &lt;f:param name="firstResult" value="0"/&gt;
+&lt;/s:link&gt;
+
+&lt;s:link view="/search.xhtml" rendered="#{people.previousExists}" value="Previous Page"&gt;
+    &lt;f:param name="firstResult" value="#{people.previousFirstResult}"/&gt;
+&lt;/s:link&gt;
+
+&lt;s:link view="/search.xhtml" rendered="#{people.nextExists}" value="Next Page"&gt;
+    &lt;f:param name="firstResult" value="#{people.nextFirstResult}"/&gt;
+&lt;/s:link&gt;
+
+&lt;s:link view="/search.xhtml" rendered="#{people.nextExists}" value="Last Page"&gt;
+    &lt;f:param name="firstResult" value="#{people.lastFirstResult}"/&gt;
+&lt;/s:link&gt;
+</pre><div class="para">
+			Real search screens let the user enter a bunch of optional search criteria to narrow the list of results returned. The Query object lets you specify optional "restrictions" to support this important usecase:
+		</div><pre class="programlisting">&lt;component name="examplePerson" class="Person"/&gt;
+        
+&lt;framework:entity-query name="people" 
+                        ejbql="select p from Person p" 
+                        order="lastName" 
+                        max-results="20"&gt;
+    &lt;framework:restrictions&gt;
+        &lt;value&gt;lower(firstName) like lower( #{examplePerson.firstName} + '%' )&lt;/value&gt;
+        &lt;value&gt;lower(lastName) like lower( #{examplePerson.lastName} + '%' )&lt;/value&gt;
+    &lt;/framework:restrictions&gt;
+&lt;/framework:entity-query&gt;
+</pre><div class="para">
+			Notice the use of an <code class="code">example</code> object.
+		</div><pre class="programlisting">&lt;h1&gt;Search for people&lt;/h1&gt;
+&lt;h:form&gt;
+    &lt;div&gt;First name: &lt;h:inputText value="#{examplePerson.firstName}"/&gt;&lt;/div&gt;
+    &lt;div&gt;Last name: &lt;h:inputText value="#{examplePerson.lastName}"/&gt;&lt;/div&gt;
+    &lt;div&gt;&lt;h:commandButton value="Search" action="/search.jsp"/&gt;&lt;/div&gt;
+&lt;/h:form&gt;
+
+&lt;h:dataTable value="#{people.resultList}" var="person"&gt;
+    &lt;h:column&gt;
+        &lt;s:link view="/editPerson.jsp" value="#{person.firstName} #{person.lastName}"&gt;
+            &lt;f:param name="personId" value="#{person.id}"/&gt;
+        &lt;/s:link&gt;
+    &lt;/h:column&gt;
+&lt;/h:dataTable&gt;
+</pre><div class="para">
+			The examples in this section have all shown reuse by configuration. However, reuse by extension is equally possible for Query objects.
+		</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-The_Seam_Application_Framework-Home_objects.html"><strong>Prev</strong>10.2. Home objects</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-The_Seam_Application_Framework-Controller_objects.html"><strong>Next</strong>10.4. Controller objects</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-The_Seam_Application_Framework.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-The_Seam_Application_Framework.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-The_Seam_Application_Framework.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 10. The Seam Application Framework</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="index.html" title="Seam Reference Guide CP07" /><link rel="prev" href="Seam_Reference_Guide-JSF_form_validation_in_Seam.html" title="Chapter 9. JSF form validation in Seam" /><link rel="next" href="Seam_Reference_Guide-The_Seam_Application_Framework-Home_objects.html" title="10.2. Home objects" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right"!
  href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-JSF_form_validation_in_Seam.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-The_Seam_Application_Framework-Home_objects.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="chapter" title="Chapter 10. The Seam Application Framework" lang="en-US"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-The_Seam_Application_Framework">Chapter 10. The Seam Application Framework</h2></div></div></div><div class="toc"><dl><dt><span class="section"><a href="Seam_Reference_Guide-The_Seam_Application_Framework.html#Seam_Reference_Guide-The_Seam_Application_Framework-Introduction">10.1. Introduction</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-The_Seam_Application_Framework-Ho!
 me_objects.html">10.2. Home objects</a></span></dt><dt><span c!
 lass="se
ction"><a href="Seam_Reference_Guide-The_Seam_Application_Framework-Query_objects.html">10.3. Query objects</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-The_Seam_Application_Framework-Controller_objects.html">10.4. Controller objects</a></span></dt></dl></div><div class="para">
+		Seam makes it really easy to create applications by writing plain Java classes with annotations, which do not need to extend any special interfaces or superclasses. But we can simplify some common programming tasks even further, by providing a set of pre-built components which can be re-used either by configuration in <code class="literal">components.xml</code> (for very simple cases) or extension.
+	</div><div class="para">
+		The <span class="emphasis"><em>Seam Application Framework</em></span> can reduce the amount of code you need to write when doing basic database access in a web application, using either Hibernate or JPA.
+	</div><div class="para">
+		We should emphasize that the framework is extremely simple, just a handful of simple classes that are easy to understand and extend that Seam then uses when creating your application.
+	</div><div class="section" title="10.1. Introduction"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-The_Seam_Application_Framework-Introduction">10.1. Introduction</h2></div></div></div><div class="para">
+			The components provided by the Seam application framework may be used in one of two different approaches. The first way is to install and configure an instance of the component in <code class="literal">components.xml</code>, just like we have done with other kinds of built-in Seam components. For example, the following fragment from <code class="literal">components.xml</code> installs a component which can perform basic CRUD operations for a <code class="literal">Contact</code> entity:
+		</div><pre class="programlisting">&lt;framework:entity-home name="personHome" 
+                       entity-class="eg.Person" 
+                       entity-manager="#{personDatabase}"&gt;
+    &lt;framework:id&gt;#{param.personId}&lt;/framework:id&gt;
+&lt;/framework:entity-home&gt;
+</pre><div class="para">
+			If you would rather a different method to the above, you can use extension instead:
+		</div><pre class="programlisting">@Stateful
+ at Name("personHome")
+public class PersonHome extends EntityHome&lt;Person&gt; implements LocalPersonHome {
+    @RequestParameter String personId;
+    @In EntityManager personDatabase;
+    
+    public Object getId() { return personId; }
+    public EntityManager getEntityManager() { return personDatabase; }
+    
+}
+</pre><div class="para">
+			The second approach has one huge advantage: you can easily add extra functionality, and override the built-in functionality (the framework classes were carefully designed for extension and customization).
+		</div><div class="para">
+			A second advantage is that your classes may be EJB stateful sessin beans, if you like. (They do not have to be, they can be plain JavaBean components if you prefer.)
+		</div><div class="para">
+			At this time, the Seam Application Framework provides just four built-in components: <code class="literal">EntityHome</code> and <code class="literal">HibernateEntityHome</code> for CRUD, along with <code class="literal">EntityQuery</code> and <code class="literal">HibernateEntityQuery</code> for queries.
+		</div><div class="para">
+			The Home and Query components are written so that they can function with a scope of session, event or conversation. Which scope you use depends upon the state model you wish to use in your application.
+		</div><div class="para">
+			The Seam Application Framework only works with Seam-managed persistence contexts. By default, the components will look for a persistence context named <code class="literal">entityManager</code>.
+		</div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-JSF_form_validation_in_Seam.html"><strong>Prev</strong>Chapter 9. JSF form validation in Seam</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-The_Seam_Application_Framework-Home_objects.html"><strong>Next</strong>10.2. Home objects</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-The_Seam_object-Seam.Component.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-The_Seam_object-Seam.Component.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-The_Seam_object-Seam.Component.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>19.2.2. Seam.Component</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Remoting-The_Seam_object.html" title="19.2. The &quot;Seam&quot; object" /><link rel="prev" href="Seam_Reference_Guide-Remoting-The_Seam_object.html" title="19.2. The &quot;Seam&quot; object" /><link rel="next" href="Seam_Reference_Guide-Seam.Component-Seam.Component.getInstance.html" title="19.2.2.2. Seam.Component.getInstance()" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt=!
 "Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Remoting-The_Seam_object.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam.Component-Seam.Component.getInstance.html"><strong>Next</strong></a></li></ul><div class="sect2" title="19.2.2. Seam.Component"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-The_Seam_object-Seam.Component" class="title">Seam.Component</h1></div></div></div><div class="para">
+		The <code class="literal">Seam.Component</code> Javascript object provides a number of client-side methods for working with your Seam components. The two main methods, <code class="literal">newInstance()</code> and <code class="literal">getInstance()</code> are documented in the following sections however their main difference is that <code class="literal">newInstance()</code> will always create a new instance of a component type, and <code class="literal">getInstance()</code> will return a singleton instance.
+	</div><div class="sect3" title="19.2.2.1. Seam.Component.newInstance()"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam.Component-Seam.Component.newInstance" class="title">Seam.Component.newInstance()</h1></div></div></div><div class="para">
+		Use this method to create a new instance of an entity or Javabean component. The object returned by this method will have the same getter/setter methods as its server-side counterpart, or alternatively if you wish you can access its fields directly. Take the following Seam entity component for example:
+	</div><pre class="programlisting">
+  @Name("customer")
+  @Entity
+  public class Customer implements Serializable
+  {
+    private Integer customerId;
+    private String firstName;
+    private String lastName;
+    
+    @Column public Integer getCustomerId() { 
+      return customerId; 
+    }
+    
+    public void setCustomerId(Integer customerId} { 
+      this.customerId = customerId; 
+    }
+    
+    @Column public String getFirstName() { 
+      return firstName; 
+    }
+    
+    public void setFirstName(String firstName) {
+      this.firstName = firstName; 
+    }
+    
+    @Column public String getLastName() {
+      return lastName;
+    }
+    
+    public void setLastName(String lastName) {
+      this.lastName = lastName;
+    }
+  }
+</pre><div class="para">
+		To create a client-side Customer you would write the following code:
+	</div><pre class="programlisting">
+  var customer = Seam.Component.newInstance("customer");
+</pre><div class="para">
+		Then from here you can set the fields of the customer object:
+	</div><pre class="programlisting">
+  customer.setFirstName("John");
+  // Or you can set the fields directly
+  customer.lastName = "Smith";
+</pre></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Remoting-The_Seam_object.html"><strong>Prev</strong>19.2. The "Seam" object</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam.Component-Seam.Component.getInstance.html"><strong>Next</strong>19.2.2.2. Seam.Component.getInstance()</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-The_Seam_object-Seam.Remoting.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-The_Seam_object-Seam.Remoting.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-The_Seam_object-Seam.Remoting.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>19.2.3. Seam.Remoting</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Remoting-The_Seam_object.html" title="19.2. The &quot;Seam&quot; object" /><link rel="prev" href="Seam_Reference_Guide-Seam.Component-Seam.Component.getComponentName.html" title="19.2.2.3. Seam.Component.getComponentName()" /><link rel="next" href="Seam_Reference_Guide-Seam.Remoting-Seam.Remoting.getTypeName.html" title="19.2.3.2. Seam.Remoting.getTypeName()" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content!
 /images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam.Component-Seam.Component.getComponentName.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam.Remoting-Seam.Remoting.getTypeName.html"><strong>Next</strong></a></li></ul><div class="sect2" title="19.2.3. Seam.Remoting"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-The_Seam_object-Seam.Remoting" class="title">Seam.Remoting</h1></div></div></div><div class="para">
+		Most of the client side functionality for Seam Remoting is contained within the <code class="literal">Seam.Remoting</code> object. While you should not need to directly call most of its methods, there are a couple of important ones worth mentioning.
+	</div><div class="sect3" title="19.2.3.1. Seam.Remoting.createType()"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam.Remoting-Seam.Remoting.createType" class="title">Seam.Remoting.createType()</h1></div></div></div><div class="para">
+		If your application contains or uses Javabean classes that are not Seam components, you may need to create these types on the client side to pass as parameters into your component method. Use the <code class="literal">createType()</code> method to create an instance of your type. Pass in the fully qualified Java class name as a parameter:
+	</div><pre class="programlisting">
+  var widget = Seam.Remoting.createType("com.acme.widgets.MyWidget");
+</pre></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam.Component-Seam.Component.getComponentName.html"><strong>Prev</strong>19.2.2.3. Seam.Component.getComponentName()</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam.Remoting-Seam.Remoting.getTypeName.html"><strong>Next</strong>19.2.3.2. Seam.Remoting.getTypeName()</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-The_contextual_component_model-Bijection.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-The_contextual_component_model-Bijection.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-The_contextual_component_model-Bijection.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>3.3. Bijection</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-The_contextual_component_model.html" title="Chapter 3. The contextual component model" /><link rel="prev" href="Seam_Reference_Guide-Seam_components-Built_in_components.html" title="3.2.10. Built-in components" /><link rel="next" href="Seam_Reference_Guide-The_contextual_component_model-Lifecycle_methods.html" title="3.4. Lifecycle methods" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" a!
 lt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_components-Built_in_components.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-The_contextual_component_model-Lifecycle_methods.html"><strong>Next</strong></a></li></ul><div class="sect1" title="3.3. Bijection"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-The_contextual_component_model-Bijection" class="title">Bijection</h1></div></div></div><div class="para">
+		<span class="emphasis"><em>Dependency injection</em></span> or <span class="emphasis"><em>inversion of control</em></span> is by now a familiar concept to most Java developers. Dependency injection allows a component to obtain a reference to another component by having the container <span class="emphasis"><em>inject</em></span> the other component to a setter method or instance variable. In all dependency injection implementations that we have seen, injection occurs when the component is constructed, and the reference does not subsequently change for the lifetime of the component instance. For stateless components, this is reasonable. From the point of view of a client, all instances of a particular stateless component are interchangeable. On the other hand, Seam emphasizes the use of stateful components. So traditional dependency injection is no longer a very useful construct. Seam introduces the notion of <span class="emphasis"><em>bijection</em></span> as a generalizat!
 ion of injection. In contrast to injection, bijection is:
+	</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+				<span class="emphasis"><em>contextual</em></span> - bijection is used to assemble stateful components from various different contexts (a component from a <span class="emphasis"><em>wider</em></span> context may even have a reference to a component from a <span class="emphasis"><em>narrower</em></span> context)
+			</div></li><li class="listitem"><div class="para">
+				<span class="emphasis"><em>bidirectional</em></span> - values are injected from context variables into attributes of the component being invoked, and also <span class="emphasis"><em>outjected</em></span> from the component attributes back out to the context, allowing the component being invoked to manipulate the values of contextual variables simply by setting its own instance variables
+			</div></li><li class="listitem"><div class="para">
+				<span class="emphasis"><em>dynamic</em></span> - since the value of contextual variables changes over time, and since Seam components are stateful, bijection takes place every time a component is invoked
+			</div></li></ul></div><div class="para">
+		In essence, bijection lets you alias a context variable to a component instance variable, by specifying that the value of the instance variable is injected, outjected, or both. Of course, we use annotations to enable bijection.
+	</div><div class="para">
+		The <code class="literal">@In</code> annotation specifies that a value should be injected, either into an instance variable:
+	</div><pre class="programlisting">@Name("loginAction")
+ at Stateless
+ at Interceptors(SeamInterceptor.class)
+public class LoginAction implements Login { 
+    @In User user;
+    ... 
+}
+</pre><div class="para">
+		or into a setter method:
+	</div><pre class="programlisting">@Name("loginAction")
+ at Stateless
+ at Interceptors(SeamInterceptor.class)
+public class LoginAction implements Login { 
+    User user;
+    
+    @In
+    public void setUser(User user) {
+        this.user=user;
+    }
+    
+    ... 
+}
+</pre><div class="para">
+		By default, Seam will do a priority search of all contexts, using the name of the property or instance variable that is being injected. You may wish to specify the context variable name explicitly, using, for example, <code class="literal">@In("currentUser")</code>.
+	</div><div class="para">
+		If you want Seam to create an instance of the component when there is no existing component instance bound to the named context variable, you should specify <code class="literal">@In(create=true)</code>. If the value is optional (it can be null), specify <code class="literal">@In(required=false)</code>.
+	</div><div class="para">
+		For some components, it can be repetitive to have to specify <code class="literal">@In(create=true)</code> everywhere they are used. In such cases, you can annotate the component <code class="literal">@AutoCreate</code>, and then it will always be created, whenever needed, even without the explicit use of <code class="literal">create=true</code>.
+	</div><div class="para">
+		You can even inject the value of an expression:
+	</div><pre class="programlisting">@Name("loginAction")
+ at Stateless
+ at Interceptors(SeamInterceptor.class)
+public class LoginAction implements Login { 
+    @In("#{user.username}") String username;
+    ... 
+}
+</pre><div class="para">
+		(There is much more information about component lifecycle and injection in the next chapter.)
+	</div><div class="para">
+		The <code class="literal">@Out</code> annotation specifies that an attribute should be outjected, either from an instance variable:
+	</div><pre class="programlisting">@Name("loginAction")
+ at Stateless
+ at Interceptors(SeamInterceptor.class)
+public class LoginAction implements Login { 
+    @Out User user;
+    ... 
+}
+</pre><div class="para">
+		or from a getter method:
+	</div><pre class="programlisting">@Name("loginAction")
+ at Stateless
+ at Interceptors(SeamInterceptor.class)
+public class LoginAction implements Login { 
+    User user;
+    
+    @Out
+    public User getUser() {
+        return user;
+    }
+    
+    ... 
+}
+</pre><div class="para">
+		An attribute may be both injected and outjected:
+	</div><pre class="programlisting">@Name("loginAction")
+ at Stateless
+ at Interceptors(SeamInterceptor.class)
+public class LoginAction implements Login { 
+    @In @Out User user;
+    ... 
+}
+</pre><div class="para">
+		or:
+	</div><pre class="programlisting">@Name("loginAction")
+ at Stateless
+ at Interceptors(SeamInterceptor.class)
+public class LoginAction implements Login { 
+    User user;
+    
+    @In
+    public void setUser(User user) {
+        this.user=user;
+    }
+    
+    @Out
+    public User getUser() {
+        return user;
+    }
+    
+    ... 
+}
+</pre></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_components-Built_in_components.html"><strong>Prev</strong>3.2.10. Built-in components</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-The_contextual_component_model-Lifecycle_methods.html"><strong>Next</strong>3.4. Lifecycle methods</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-The_contextual_component_model-Conditional_installation.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-The_contextual_component_model-Conditional_installation.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-The_contextual_component_model-Conditional_installation.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>3.5. Conditional installation</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-The_contextual_component_model.html" title="Chapter 3. The contextual component model" /><link rel="prev" href="Seam_Reference_Guide-The_contextual_component_model-Lifecycle_methods.html" title="3.4. Lifecycle methods" /><link rel="next" href="Seam_Reference_Guide-The_contextual_component_model-Logging.html" title="3.6. Logging" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png!
 " alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-The_contextual_component_model-Lifecycle_methods.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-The_contextual_component_model-Logging.html"><strong>Next</strong></a></li></ul><div class="sect1" title="3.5. Conditional installation"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-The_contextual_component_model-Conditional_installation" class="title">Conditional installation</h1></div></div></div><div class="para">
+		The <code class="literal">@Install</code> annotation lets you control conditional installation of components that are required in some deployment scenarios and not in others. This is useful if:
+	</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+				You want to mock out some infrastructural component in tests.
+			</div></li><li class="listitem"><div class="para">
+				You want change the implementation of a component in certain deployment scenarios.
+			</div></li><li class="listitem"><div class="para">
+				You want to install some components only if their dependencies are available (useful for framework authors).
+			</div></li></ul></div><div class="para">
+		<code class="literal">@Install</code> works by letting you specify <span class="emphasis"><em>precedence</em></span> and <span class="emphasis"><em>dependencies</em></span>.
+	</div><div class="para">
+		The precedence of a component is a number that Seam uses to decide which component to install when there are multiple classes with the same component name in the classpath. Seam will choose the component with the higher precendence. There are some predefined precedence values (in ascending order):
+	</div><div class="orderedlist"><ol><li class="listitem"><div class="para">
+				<code class="literal">BUILT_IN</code> — the lowest precedece components are the components built in to Seam.
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">FRAMEWORK</code> — components defined by third-party frameworks may override built-in components, but are overridden by application components.
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">APPLICATION</code> — the default precedence. This is appropriate for most application components.
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">DEPLOYMENT</code> — for application components which are deployment-specific.
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">MOCK</code> — for mock objects used in testing.
+			</div></li></ol></div><div class="para">
+		Suppose we have a component named <code class="literal">messageSender</code> that talks to a JMS queue.
+	</div><pre class="programlisting">@Name("messageSender") 
+public class MessageSender {
+    public void sendMessage() {
+        //do something with JMS
+    }
+}
+</pre><div class="para">
+		In our unit tests, we don not have a JMS queue available, so we would like to stub out this method. We will create a <span class="emphasis"><em>mock</em></span> component that exists in the classpath when unit tests are running, but is never deployed with the application:
+	</div><pre class="programlisting">@Name("messageSender") 
+ at Install(precedence=MOCK)
+public class MockMessageSender extends MessageSender {
+    public void sendMessage() {
+        //do nothing!
+    }
+}
+</pre><div class="para">
+		The <code class="literal">precedence</code> helps Seam decide which version to use when it finds both components in the classpath.
+	</div><div class="para">
+		If we are able to control exactly which classes are in the classpath then this will work well, however if you are writing reusable framwork with many dependecies you will not wish to break that framework across numerious jars. You will wish to decide which components to install depending upon what other components are installed, and upon what classes are available in the classpath. The <code class="literal">@Install</code> annotation also controls this functionality. Seam uses this mechanism internally to enable conditional installation of many of the built-in components. However, you probably will not need to use it in your application.
+	</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-The_contextual_component_model-Lifecycle_methods.html"><strong>Prev</strong>3.4. Lifecycle methods</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-The_contextual_component_model-Logging.html"><strong>Next</strong>3.6. Logging</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-The_contextual_component_model-Factory_and_manager_components.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-The_contextual_component_model-Factory_and_manager_components.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-The_contextual_component_model-Factory_and_manager_components.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>3.8. Factory and manager components</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-The_contextual_component_model.html" title="Chapter 3. The contextual component model" /><link rel="prev" href="Seam_Reference_Guide-The_contextual_component_model-The_Mutable_interface_and_ReadOnly.html" title="3.7. The Mutable interface and @ReadOnly" /><link rel="next" href="Seam_Reference_Guide-Configuring_Seam_components.html" title="Chapter 4. Configuring Seam components" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat!
 .com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-The_contextual_component_model-The_Mutable_interface_and_ReadOnly.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Configuring_Seam_components.html"><strong>Next</strong></a></li></ul><div class="sect1" title="3.8. Factory and manager components"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-The_contextual_component_model-Factory_and_manager_components" class="title">Factory and manager components</h1></div></div></div><div class="para">
+		We often need to work with objects that are not Seam components. But we still want to be able to inject them into our components using <code class="literal">@In</code> and use them in value and method binding expressions, etc. Sometimes, we even need to tie them into the Seam context lifecycle (<code class="literal">@Destroy</code>, for example). So the Seam contexts can contain objects which are not Seam components, and Seam provides a couple of nice features that make it easier to work with non-component objects bound to contexts.
+	</div><div class="para">
+		The <span class="emphasis"><em>factory component pattern</em></span> lets a Seam component act as the instantiator for a non-component object. A <span class="emphasis"><em>factory method</em></span> will be called when a context variable is referenced but has no value bound to it. We define factory methods using the <code class="literal">@Factory</code> annotation. The factory method binds a value to the context variable, and determines the scope of the bound value. There are two styles of factory method. The first style returns a value, which is bound to the context by Seam:
+	</div><pre class="programlisting">@Factory(scope=CONVERSATION)
+public List&lt;Customer&gt; getCustomerList() { 
+    return ... ;
+}
+</pre><div class="para">
+		The second style is a method of type <code class="literal">void</code> which binds the value to the context variable itself:
+	</div><pre class="programlisting">@DataModel List&lt;Customer&gt; customerList;
+
+ at Factory("customerList")
+public void initCustomerList() { 
+    customerList = ...  ;
+}
+</pre><div class="para">
+		In both cases, the factory method is called when we reference the <code class="literal">customerList</code> context variable and its value is null, and then has no further part to play in the lifecycle of the value. An even more powerful pattern is the <span class="emphasis"><em>manager component pattern</em></span>. In this case, we have a Seam component that is bound to a context variable, that manages the value of the context variable, while remaining invisible to clients.
+	</div><div class="para">
+		A manager component is any component with an <code class="literal">@Unwrap</code> method. This method returns the value that will be visable to clients, and is called <span class="emphasis"><em>every time</em></span> a context variable is referenced.
+	</div><pre class="programlisting">@Name("customerList")
+ at Scope(CONVERSATION)
+public class CustomerListManager
+{
+    ...
+    
+    @Unwrap
+    public List&lt;Customer&gt; getCustomerList() { 
+        return ... ;
+    }
+}
+</pre><div class="para">
+		This pattern is especially useful if we have some heavyweight object that needs a cleanup operation when the context ends. In this case, the manager component may perform cleanup in the <code class="literal">@Destroy</code> method.
+	</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-The_contextual_component_model-The_Mutable_interface_and_ReadOnly.html"><strong>Prev</strong>3.7. The Mutable interface and @ReadOnly</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Configuring_Seam_components.html"><strong>Next</strong>Chapter 4. Configuring Seam components</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-The_contextual_component_model-Lifecycle_methods.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-The_contextual_component_model-Lifecycle_methods.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-The_contextual_component_model-Lifecycle_methods.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>3.4. Lifecycle methods</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-The_contextual_component_model.html" title="Chapter 3. The contextual component model" /><link rel="prev" href="Seam_Reference_Guide-The_contextual_component_model-Bijection.html" title="3.3. Bijection" /><link rel="next" href="Seam_Reference_Guide-The_contextual_component_model-Conditional_installation.html" title="3.5. Conditional installation" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/ima!
 ge_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-The_contextual_component_model-Bijection.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-The_contextual_component_model-Conditional_installation.html"><strong>Next</strong></a></li></ul><div class="sect1" title="3.4. Lifecycle methods"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-The_contextual_component_model-Lifecycle_methods" class="title">Lifecycle methods</h1></div></div></div><div class="para">
+		Session bean and entity bean Seam components support all the usual EJB 3.0 lifecycle callback (<code class="literal">@PostConstruct</code>, <code class="literal">@PreDestroy</code>, etc). Seam extends all of these callbacks except <code class="literal">@PreDestroy</code> to JavaBean components. But Seam also defines its own component lifecycle callbacks.
+	</div><div class="para">
+		The <code class="literal">@Create</code> method is called every time Seam instantiates a component. Unlike the <code class="literal">@PostConstruct</code> method, this method is called after the component is fully constructed by the EJB container, and has access to all the usual Seam functionality (bijection, etc). Components may define only one <code class="literal">@Create</code> method.
+	</div><div class="para">
+		The <code class="literal">@Destroy</code> method is called when the context that the Seam component is bound to ends. Components may define only one <code class="literal">@Destroy</code> method. Stateful session bean components <span class="emphasis"><em>must</em></span> define a method annotated <code class="literal">@Destroy @Remove</code>.
+	</div><div class="para">
+		Finally, a related annotation is the <code class="literal">@Startup</code> annotation, which may be applied to any application or session scoped component. The <code class="literal">@Startup</code> annotation tells Seam to instantiate the component immediately, when the context begins, instead of waiting until it is first referenced by a client. It is possible to control the order of instantiation of startup components by specifying <code class="literal">@Startup(depends={....})</code>.
+	</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-The_contextual_component_model-Bijection.html"><strong>Prev</strong>3.3. Bijection</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-The_contextual_component_model-Conditional_installation.html"><strong>Next</strong>3.5. Conditional installation</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-The_contextual_component_model-Logging.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-The_contextual_component_model-Logging.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-The_contextual_component_model-Logging.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>3.6. Logging</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-The_contextual_component_model.html" title="Chapter 3. The contextual component model" /><link rel="prev" href="Seam_Reference_Guide-The_contextual_component_model-Conditional_installation.html" title="3.5. Conditional installation" /><link rel="next" href="Seam_Reference_Guide-The_contextual_component_model-The_Mutable_interface_and_ReadOnly.html" title="3.7. The Mutable interface and @ReadOnly" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/!
 docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-The_contextual_component_model-Conditional_installation.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-The_contextual_component_model-The_Mutable_interface_and_ReadOnly.html"><strong>Next</strong></a></li></ul><div class="sect1" title="3.6. Logging"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-The_contextual_component_model-Logging" class="title">Logging</h1></div></div></div><div class="para">
+		Below is the code for a simple log message in Java:
+	</div><pre class="programlisting">private static final Log log = LogFactory.getLog(CreateOrderAction.class);
+        
+public Order createOrder(User user, Product product, int quantity) {
+    if ( log.isDebugEnabled() ) {
+        log.debug("Creating new order for user: " + user.username() + 
+            " product: " + product.name() 
+            + " quantity: " + quantity);
+    }
+    return new Order(user, product, quantity);
+}
+</pre><div class="para">
+		Seam provides a logging API that simplifies this code significantly:
+	</div><pre class="programlisting">@Logger private Log log;
+        
+public Order createOrder(User user, Product product, int quantity) {
+    log.debug("Creating new order for user: #0 product: #1 quantity: #2", user.username(), 
+      product.name(), quantity);
+    return new Order(user, product, quantity);
+}
+</pre><div class="para">
+		It does not matter if you declare the <code class="literal">log</code> variable static or not; it will work either way, except for entity bean components which require the <code class="literal">log</code> variable to be static.
+	</div><div class="note"><h2>Note</h2><div class="para">
+			We do not need the <code class="literal">if ( log.isDebugEnabled() )</code> guard, since string concatenation happens <span class="emphasis"><em>inside</em></span> the <code class="literal">debug()</code> method. Also the log category does not need to be specified explicitly, since Seam knows what component it is injecting the <code class="literal">Log</code> into.
+		</div></div><div class="para">
+		If <code class="literal">User</code> and <code class="literal">Product</code> are Seam components available in the current contexts, it gets even better:
+	</div><pre class="programlisting">@Logger private Log log;
+        
+public Order createOrder(User user, Product product, int quantity) {
+    log.debug("Creating new order for user: #{user.username} product: #{product.name} 
+      quantity: #0", quantity);
+    return new Order(user, product, quantity);
+}
+</pre><div class="para">
+		Seam logging automagically chooses whether to send output to log4j or JDK logging. If log4j is in the classpath, Seam with use it. If it is not, Seam will use JDK logging.
+	</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-The_contextual_component_model-Conditional_installation.html"><strong>Prev</strong>3.5. Conditional installation</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-The_contextual_component_model-The_Mutable_interface_and_ReadOnly.html"><strong>Next</strong>3.7. The Mutable interface and @ReadOnly</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-The_contextual_component_model-Seam_components.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-The_contextual_component_model-Seam_components.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-The_contextual_component_model-Seam_components.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>3.2. Seam components</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-The_contextual_component_model.html" title="Chapter 3. The contextual component model" /><link rel="prev" href="Seam_Reference_Guide-The_contextual_component_model.html" title="Chapter 3. The contextual component model" /><link rel="next" href="Seam_Reference_Guide-Seam_components-Stateful_session_beans.html" title="3.2.2. Stateful session beans" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/imag!
 e_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-The_contextual_component_model.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_components-Stateful_session_beans.html"><strong>Next</strong></a></li></ul><div class="sect1" title="3.2. Seam components"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-The_contextual_component_model-Seam_components" class="title">Seam components</h1></div></div></div><div class="para">
+		Seam components are POJOs (Plain Old Java Objects). In particular, they are JavaBeans or EJB 3.0 enterprise beans. While Seam does not require that components be EJBs and can even be used without an EJB 3.0 compliant container, Seam was designed with EJB 3.0 in mind and includes deep integration with EJB 3.0. Seam supports the following <span class="emphasis"><em>component types</em></span>.
+	</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+				EJB 3.0 stateless session beans
+			</div></li><li class="listitem"><div class="para">
+				EJB 3.0 stateful session beans
+			</div></li><li class="listitem"><div class="para">
+				EJB 3.0 entity beans
+			</div></li><li class="listitem"><div class="para">
+				JavaBeans
+			</div></li><li class="listitem"><div class="para">
+				EJB 3.0 message-driven beans
+			</div></li></ul></div><div class="sect2" title="3.2.1. Stateless session beans"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam_components-Stateless_session_beans" class="title">Stateless session beans</h1></div></div></div><div class="para">
+		Stateless session bean components are not able to hold state across multiple invocations. Therefore, they usually work by operating upon the state of other components in the various Seam contexts. They may be used as JSF action listeners, but cannot provide properties to JSF components for display.
+	</div><div class="para">
+		Stateless session beans always live in the stateless context.
+	</div><div class="para">
+		Stateless session beans are the least interesting kind of Seam component.
+	</div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-The_contextual_component_model.html"><strong>Prev</strong>Chapter 3. The contextual component model</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_components-Stateful_session_beans.html"><strong>Next</strong>3.2.2. Stateful session beans</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-The_contextual_component_model-The_Mutable_interface_and_ReadOnly.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-The_contextual_component_model-The_Mutable_interface_and_ReadOnly.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-The_contextual_component_model-The_Mutable_interface_and_ReadOnly.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>3.7. The Mutable interface and @ReadOnly</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-The_contextual_component_model.html" title="Chapter 3. The contextual component model" /><link rel="prev" href="Seam_Reference_Guide-The_contextual_component_model-Logging.html" title="3.6. Logging" /><link rel="next" href="Seam_Reference_Guide-The_contextual_component_model-Factory_and_manager_components.html" title="3.8. Factory and manager components" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src=!
 "Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-The_contextual_component_model-Logging.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-The_contextual_component_model-Factory_and_manager_components.html"><strong>Next</strong></a></li></ul><div class="sect1" title="3.7. The Mutable interface and @ReadOnly"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-The_contextual_component_model-The_Mutable_interface_and_ReadOnly" class="title">The <code class="literal">Mutable</code> interface and <code class="literal">@ReadOnly</code></h1></div></div></div><div class="para">
+		Many application servers feature an amazingly broken implementation of <code class="literal">HttpSession</code> clustering, where changes to the state of mutable objects bound to the session are only replicated when the application calls <code class="literal">setAttribute()</code> explicitly. This is a source of bugs that can not effectively be tested for at development time, since they will only manifest when failover occurs. Furthermore, the actual replication message contains the entire serialized object graph bound to the session attribute, which is inefficient.
+	</div><div class="para">
+		Of course, EJB stateful session beans must perform automatic dirty checking and replication of mutable state and a sophisticated EJB container can introduce optimizations such as attribute-level replication. Unfortunately, not all Seam users have the good fortune to be working in an environment that supports EJB 3.0. So, for session and conversation scoped JavaBean and entity bean components, Seam provides an extra layer of cluster-safe state management over the top of the web container session clustering.
+	</div><div class="para">
+		For session or conversation scoped JavaBean components, Seam automatically forces replication to occur by calling <code class="literal">setAttribute()</code> once in every request that the component was invoked by the application. Of course, this strategy is inefficient for read-mostly components. You can control this behavior by implementing the <code class="literal">org.jboss.seam.core.Mutable</code> interface, or by extending <code class="literal">org.jboss.seam.core.AbstractMutable</code>, and writing your own dirty-checking logic inside the component. For example,
+	</div><pre class="programlisting">@Name("account")
+public class Account extends AbstractMutable
+{
+    private BigDecimal balance;
+    
+    public void setBalance(BigDecimal balance)
+    {
+        setDirty(this.balance, balance);
+        this.balance = balance;
+    }
+    
+    public BigDecimal getBalance()
+    {
+        return balance;
+    }
+    
+    ...
+    
+}
+</pre><div class="para">
+		Or, you can use the <code class="literal">@ReadOnly</code> annotation to achieve a similar effect:
+	</div><pre class="programlisting">@Name("account")
+public class Account
+{
+    private BigDecimal balance;
+    
+    public void setBalance(BigDecimal balance)
+    {
+        this.balance = balance;
+    }
+    
+    @ReadOnly
+    public BigDecimal getBalance()
+    {
+        return balance;
+    }
+    
+    ...
+    
+}
+</pre><div class="para">
+		For session or conversation scoped entity bean components, Seam automatically forces replication to occur by calling <code class="literal">setAttribute()</code> once in every request, <span class="emphasis"><em>unless the (conversation-scoped) entity is currently associated with a Seam-managed persistence context, in which case no replication is needed</em></span>. This strategy is not necessarily efficient, so session or conversation scope entity beans should be used with care. You can always write a stateful session bean or JavaBean component to <span class="emphasis"><em>manage</em></span> the entity bean instance. For example,
+	</div><pre class="programlisting">@Stateful
+ at Name("account")
+public class AccountManager extends AbstractMutable
+{
+    private Account account; // an entity bean
+    
+    @Unwrap
+    public void getAccount()
+    {
+        return account;
+    }
+    
+    ...
+    
+}
+</pre><div class="note"><h2>Note</h2><div class="para">
+			Note that the <code class="literal">EntityHome</code> class in the Seam Application Framework provides a great example of this pattern.
+		</div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-The_contextual_component_model-Logging.html"><strong>Prev</strong>3.6. Logging</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-The_contextual_component_model-Factory_and_manager_components.html"><strong>Next</strong>3.8. Factory and manager components</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-The_contextual_component_model.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-The_contextual_component_model.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-The_contextual_component_model.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 3. The contextual component model</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="index.html" title="Seam Reference Guide CP07" /><link rel="prev" href="Seam_Reference_Guide-A_RESTful_Seam_application_the_Blog_example-Using_push_style_MVC_in_a_RESTful_application.html" title="2.10.3. Using &quot;push&quot;-style MVC in a RESTful application" /><link rel="next" href="Seam_Reference_Guide-The_contextual_component_model-Seam_components.html" title="3.2. Seam components" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/doc!
 s"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-A_RESTful_Seam_application_the_Blog_example-Using_push_style_MVC_in_a_RESTful_application.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-The_contextual_component_model-Seam_components.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="chapter" title="Chapter 3. The contextual component model" lang="en-US"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-The_contextual_component_model">Chapter 3. The contextual component model</h2></div></div></div><div class="toc"><dl><dt><span class="sect1"><a href="Seam_Reference_Guide-The_contextual_component_model.html#Seam_Reference_Guide-The_contextual_!
 component_model-Seam_contexts">3.1. Seam contexts</a></span></!
 dt><dd><
dl><dt><span class="sect2"><a href="Seam_Reference_Guide-The_contextual_component_model.html#Seam_Reference_Guide-Seam_contexts-Stateless_context">3.1.1. Stateless context</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-The_contextual_component_model.html#Seam_Reference_Guide-Seam_contexts-Event_context">3.1.2. Event context</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-The_contextual_component_model.html#Seam_Reference_Guide-Seam_contexts-Page_context">3.1.3. Page context</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-The_contextual_component_model.html#Seam_Reference_Guide-Seam_contexts-Conversation_context">3.1.4. Conversation context</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-The_contextual_component_model.html#Seam_Reference_Guide-Seam_contexts-Session_context">3.1.5. Session context</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-The_contextual_component_mod!
 el.html#Seam_Reference_Guide-Seam_contexts-Business_process_context">3.1.6. Business process context</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-The_contextual_component_model.html#Seam_Reference_Guide-Seam_contexts-Application_context">3.1.7. Application context</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-The_contextual_component_model.html#Seam_Reference_Guide-Seam_contexts-Context_variables">3.1.8. Context variables</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-The_contextual_component_model.html#Seam_Reference_Guide-Seam_contexts-Context_search_priority">3.1.9. Context search priority</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-The_contextual_component_model.html#Seam_Reference_Guide-Seam_contexts-Concurrency_model">3.1.10. Concurrency model</a></span></dt></dl></dd><dt><span class="sect1"><a href="Seam_Reference_Guide-The_contextual_component_model-Seam_components.html">3.!
 2. Seam components</a></span></dt><dd><dl><dt><span class="sec!
 t2"><a h
ref="Seam_Reference_Guide-The_contextual_component_model-Seam_components.html#Seam_Reference_Guide-Seam_components-Stateless_session_beans">3.2.1. Stateless session beans</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Seam_components-Stateful_session_beans.html">3.2.2. Stateful session beans</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Seam_components-Entity_beans.html">3.2.3. Entity beans</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Seam_components-JavaBeans.html">3.2.4. JavaBeans</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Seam_components-Message_driven_beans.html">3.2.5. Message-driven beans</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Seam_components-Interception.html">3.2.6. Interception</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Seam_components-Component_names.html">3.2.7. Component names</a></span></dt><dt><span class="sect2"!
 ><a href="Seam_Reference_Guide-Seam_components-Defining_the_component_scope.html">3.2.8. Defining the component scope</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Seam_components-Components_with_multiple_roles.html">3.2.9. Components with multiple roles</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Seam_components-Built_in_components.html">3.2.10. Built-in components</a></span></dt></dl></dd><dt><span class="sect1"><a href="Seam_Reference_Guide-The_contextual_component_model-Bijection.html">3.3. Bijection</a></span></dt><dt><span class="sect1"><a href="Seam_Reference_Guide-The_contextual_component_model-Lifecycle_methods.html">3.4. Lifecycle methods</a></span></dt><dt><span class="sect1"><a href="Seam_Reference_Guide-The_contextual_component_model-Conditional_installation.html">3.5. Conditional installation</a></span></dt><dt><span class="sect1"><a href="Seam_Reference_Guide-The_contextual_component_model-Logging.html">3.6. Log!
 ging</a></span></dt><dt><span class="sect1"><a href="Seam_Refe!
 rence_Gu
ide-The_contextual_component_model-The_Mutable_interface_and_ReadOnly.html">3.7. The <code class="literal">Mutable</code> interface and <code class="literal">@ReadOnly</code></a></span></dt><dt><span class="sect1"><a href="Seam_Reference_Guide-The_contextual_component_model-Factory_and_manager_components.html">3.8. Factory and manager components</a></span></dt></dl></div><div class="para">
+		The two core concepts in Seam are the notion of a <span class="emphasis"><em>context</em></span> and the notion of a <span class="emphasis"><em>component</em></span>. Components are stateful objects, usually EJBs, and an instance of a component is associated with a context, and given a name in that context. <span class="emphasis"><em>Bijection</em></span> provides a mechanism for aliasing internal component names (instance variables) to contextual names, allowing component trees to be dynamically assembled, and reassembled by Seam.
+	</div><div class="para">
+		Let us start by describing the contexts built in to Seam.
+	</div><div class="sect1" title="3.1. Seam contexts"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-The_contextual_component_model-Seam_contexts" class="title">Seam contexts</h1></div></div></div><div class="para">
+		Seam contexts are created and destroyed by the framework. The application does not control context demarcation via explicit Java API calls. Context are usually implicit. In some cases, however, contexts are demarcated via annotations.
+	</div><div class="para">
+		The basic Seam contexts are:
+	</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+				Stateless context
+			</div></li><li class="listitem"><div class="para">
+				Event (or request) context
+			</div></li><li class="listitem"><div class="para">
+				Page context
+			</div></li><li class="listitem"><div class="para">
+				Conversation context
+			</div></li><li class="listitem"><div class="para">
+				Session context
+			</div></li><li class="listitem"><div class="para">
+				Business process context
+			</div></li><li class="listitem"><div class="para">
+				Application context
+			</div></li></ul></div><div class="para">
+		You will recognize some of these contexts from servlet and related specifications. However, two of them might be new to you: <span class="emphasis"><em>conversation context</em></span>, and <span class="emphasis"><em>business process context</em></span>. One reason state management in web applications is so fragile and error-prone is that the three built-in contexts (request, session and application) are not especially meaningful from the point of view of the business logic. A user login session, for example, is a fairly arbitrary construct in terms of the actual application work flow. Therefore, most Seam components are scoped to the conversation or business process contexts, since they are the contexts which are most meaningful in terms of the application.
+	</div><div class="para">
+		Let us look at each context in turn.
+	</div><div class="sect2" title="3.1.1. Stateless context"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam_contexts-Stateless_context" class="title">Stateless context</h1></div></div></div><div class="para">
+		Components which are truly stateless (stateless session beans, primarily) always live in the stateless context (this is really a non-context). Stateless components are not very interesting, and are arguably not very object-oriented. Nevertheless, they are important and often useful.
+	</div></div><div class="sect2" title="3.1.2. Event context"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam_contexts-Event_context" class="title">Event context</h1></div></div></div><div class="para">
+		The event context is the "narrowest" stateful context, and is a generalization of the notion of the web request context to cover other kinds of events. Nevertheless, the event context associated with the lifecycle of a JSF request is the most important example of an event context, and the one you will work with most often. Components associated with the event context are destroyed at the end of the request, but their state is available and well-defined for at least the lifecycle of the request.
+	</div><div class="para">
+		When you invoke a Seam component via RMI, or Seam Remoting, the event context is created and destroyed just for the invocation.
+	</div></div><div class="sect2" title="3.1.3. Page context"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam_contexts-Page_context" class="title">Page context</h1></div></div></div><div class="para">
+		The page context allows you to associate state with a particular instance of a rendered page. You can initialize state in your event listener, or while actually rendering the page, and then have access to it from any event that originates from that page. This is especially useful for functionality like clickable lists, where the list is backed by changing data on the server side. The state is actually serialized to the client, so this construct is extremely robust with respect to multi-window operation and the back button.
+	</div></div><div class="sect2" title="3.1.4. Conversation context"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam_contexts-Conversation_context" class="title">Conversation context</h1></div></div></div><div class="para">
+		The conversation context is a truly central concept in Seam. A <span class="emphasis"><em>conversation</em></span> is a unit of work from the point of view of the user. It might span several interactions with the user, several requests, and several database transactions. But to the user, a conversation solves a single problem. For example, <span class="emphasis"><em>book hotel</em></span>, <span class="emphasis"><em>approve contract</em></span>, <span class="emphasis"><em>create order</em></span> are all conversations. You might like to think of a conversation implementing a single <span class="emphasis"><em>use case</em></span> or <span class="emphasis"><em>user story</em></span>, but the relationship is not necessarily quite exact.
+	</div><div class="para">
+		A conversation holds state associated with <span class="emphasis"><em>what the user is doing now, in this window</em></span>. A single user may have multiple conversations in progress at any point in time, usually in multiple windows. The conversation context allows us to ensure that state from the different conversations does not collide and cause bugs.
+	</div><div class="para">
+		Some conversations last for just a single request. Conversations that span multiple requests must be demarcated using annotations provided by Seam.
+	</div><div class="para">
+		Some conversations are also <span class="emphasis"><em>tasks</em></span>. A task is a conversation that is significant in terms of a long-running business process, and has the potential to trigger a business process state transition when it is successfully completed. Seam provides a special set of annotations for task demarcation.
+	</div><div class="para">
+		Conversations may be <span class="emphasis"><em>nested</em></span>, with one conversation taking place "inside" a wider conversation. This is an advanced feature.
+	</div><div class="para">
+		Usually, conversation state is actually held by Seam in the servlet session between requests. Seam implements configurable <span class="emphasis"><em>conversation timeout</em></span>, automatically destroying inactive conversations, and thus ensuring that the state held by a single user login session does not grow without bound if the user abandons conversations.
+	</div><div class="para">
+		Seam serializes processing of concurrent requests that take place in the same long-running conversation context, in the same process.
+	</div><div class="para">
+		Alternatively, Seam may be configured to keep conversational state in the client browser.
+	</div></div><div class="sect2" title="3.1.5. Session context"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam_contexts-Session_context" class="title">Session context</h1></div></div></div><div class="para">
+		A session context holds state associated with the user login session. While there are some cases where it is useful to share state between several conversations, we generally frown on the use of session context for holding components other than global information about the logged in user.
+	</div><div class="para">
+		In a JSR-168 portal environment, the session context represents the portlet session.
+	</div></div><div class="sect2" title="3.1.6. Business process context"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam_contexts-Business_process_context" class="title">Business process context</h1></div></div></div><div class="para">
+		The business process context holds state associated with the long running business process. This state is managed and made persistent by the BPM engine (JBoss jBPM). The business process spans multiple interactions with multiple users, so this state is shared between multiple users, but in a well-defined manner. The current task determines the current business process instance, and the lifecycle of the business process is defined externally using a <span class="emphasis"><em>process definition language</em></span>, so there are no special annotations for business process demarcation.
+	</div></div><div class="sect2" title="3.1.7. Application context"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam_contexts-Application_context" class="title">Application context</h1></div></div></div><div class="para">
+		The application context is the familiar servlet context from the servlet spec. Application context is mainly useful for holding static information such as configuration data, reference data or metamodels. For example, Seam stores its own configuration and metamodel in the application context.
+	</div></div><div class="sect2" title="3.1.8. Context variables"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam_contexts-Context_variables" class="title">Context variables</h1></div></div></div><div class="para">
+		A context defines a namespace, a set of <span class="emphasis"><em>context variables</em></span>. These work much the same as session or request attributes in the servlet spec. You may bind any value you like to a context variable, but usually we bind Seam component instances to context variables.
+	</div><div class="para">
+		So, within a context, a component instance is identified by the context variable name (this is usually, but not always, the same as the component name). You may programatically access a named component instance in a particular scope via the <code class="literal">Contexts</code> class, which provides access to several thread-bound instances of the <code class="literal">Context</code> interface:
+	</div><pre class="programlisting">User user = (User) Contexts.getSessionContext().get("user");
+</pre><div class="para">
+		You may also set or change the value associated with a name:
+	</div><pre class="programlisting">Contexts.getSessionContext().set("user", user);
+</pre><div class="para">
+		Usually, however, we obtain components from a context via injection, and put component instances into a context via outjection.
+	</div></div><div class="sect2" title="3.1.9. Context search priority"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam_contexts-Context_search_priority" class="title">Context search priority</h1></div></div></div><div class="para">
+		Sometimes, as above, component instances are obtained from a particular known scope. Other times, all stateful scopes are searched, in <span class="emphasis"><em>priority order</em></span>. The order is as follows:
+	</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+				Event context
+			</div></li><li class="listitem"><div class="para">
+				Page context
+			</div></li><li class="listitem"><div class="para">
+				Conversation context
+			</div></li><li class="listitem"><div class="para">
+				Session context
+			</div></li><li class="listitem"><div class="para">
+				Business process context
+			</div></li><li class="listitem"><div class="para">
+				Application context
+			</div></li></ul></div><div class="para">
+		You can perform a priority search by calling <code class="literal">Contexts.lookupInStatefulContexts()</code>. Whenever you access a component by name from a JSF page, a priority search occurs.
+	</div></div><div class="sect2" title="3.1.10. Concurrency model"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam_contexts-Concurrency_model" class="title">Concurrency model</h1></div></div></div><div class="para">
+		Neither the servlet nor EJB specifications define any facilities for managing concurrent requests originating from the same client. The servlet container simply lets all threads run concurrently and leaves enforcing threadsafeness to application code. The EJB container allows stateless components to be accessed concurrently, and throws an exception if multiple threads access a stateful session bean.
+	</div><div class="para">
+		This behavior might have been okay in old-style web applications which were based around fine-grained, synchronous requests. But for modern applications which make heavy use of many fine-grained, asynchronous (AJAX) requests, concurrency is a fact of life, and must be supported by the programming model. Seam weaves a concurrency management layer into its context model.
+	</div><div class="para">
+		The Seam session and application contexts are multithreaded. Seam will allow concurrent requests in a context to be processed concurrently. The event and page contexts are by nature single threaded. The business process context is strictly speaking multi-threaded, but in practice concurrency is sufficiently rare that this fact may be disregarded most of the time. Finally, Seam enforces a <span class="emphasis"><em>single thread per conversation per process</em></span> model for the conversation context by serializing concurrent requests in the same long-running conversation context.
+	</div><div class="para">
+		Since the session context is multithreaded, and often contains volatile state, session scope components are always protected by Seam from concurrent access. Seam serializes requests to session scope session beans and JavaBeans by default (and detects and breaks any deadlocks that occur). This is not the default behaviour for application scoped components however, since application scoped components do not usually hold volatile state and because synchronization at the global level is <span class="emphasis"><em>extremely</em></span> expensive. However, you can force a serialized threading model on any session bean or JavaBean component by adding the <code class="literal">@Synchronized</code> annotation.
+	</div><div class="para">
+		This concurrency model means that AJAX clients can safely use volatile session and conversational state, without the need for any special work on the part of the developer.
+	</div></div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-A_RESTful_Seam_application_the_Blog_example-Using_push_style_MVC_in_a_RESTful_application.html"><strong>Prev</strong>2.10.3. Using "push"-style MVC in a RESTful appli...</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-The_contextual_component_model-Seam_components.html"><strong>Next</strong>3.2. Seam components</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Using_jPDL_business_process_definitions-Initializing_actor_ids.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Using_jPDL_business_process_definitions-Initializing_actor_ids.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Using_jPDL_business_process_definitions-Initializing_actor_ids.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>7.4.2. Initializing actor ids</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Pageflows_and_business_processes-Using_jPDL_business_process_definitions.html" title="7.4. Using jPDL business process definitions" /><link rel="prev" href="Seam_Reference_Guide-Pageflows_and_business_processes-Using_jPDL_business_process_definitions.html" title="7.4. Using jPDL business process definitions" /><link rel="next" href="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Initiating_a_business_process.html" title="7.4.3. Initiating a busines!
 s process" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Pageflows_and_business_processes-Using_jPDL_business_process_definitions.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Initiating_a_business_process.html"><strong>Next</strong></a></li></ul><div class="section" title="7.4.2. Initializing actor ids"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Initializing_actor_ids">7.4.2. Initializing actor ids</h3></div></div></div><div class="para">
+				We always need to know what user is currently logged in. jBPM <span class="emphasis"><em>knows</em></span> users by their <span class="emphasis"><em>actor id</em></span> and <span class="emphasis"><em>group actor ids</em></span>. We specify the current actor ids using the built in Seam component named <code class="literal">actor</code>:
+			</div><pre class="programlisting">@In Actor actor;
+
+public String login() {
+    ...
+    actor.setId( user.getUserName() );
+    actor.getGroupActorIds().addAll( user.getGroupNames() );
+    ...
+}
+</pre></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Pageflows_and_business_processes-Using_jPDL_business_process_definitions.html"><strong>Prev</strong>7.4. Using jPDL business process definitions</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Initiating_a_business_process.html"><strong>Next</strong>7.4.3. Initiating a business process</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Using_jPDL_business_process_definitions-Initiating_a_business_process.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Using_jPDL_business_process_definitions-Initiating_a_business_process.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Using_jPDL_business_process_definitions-Initiating_a_business_process.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>7.4.3. Initiating a business process</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Pageflows_and_business_processes-Using_jPDL_business_process_definitions.html" title="7.4. Using jPDL business process definitions" /><link rel="prev" href="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Initializing_actor_ids.html" title="7.4.2. Initializing actor ids" /><link rel="next" href="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Task_assignment.html" title="7.4.4. Task assignment" /></head><body class=""><p id="titl!
 e"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Initializing_actor_ids.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Task_assignment.html"><strong>Next</strong></a></li></ul><div class="section" title="7.4.3. Initiating a business process"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Initiating_a_business_process">7.4.3. Initiating a business process</h3></div></div></div><div class="para">
+				To initiate a business process instance, we use the <code class="literal">@CreateProcess</code> annotation:
+			</div><pre class="programlisting">@CreateProcess(definition="todo")
+public void createTodo() { ... }
+</pre><div class="para">
+				Alternatively we can initiate a business process using pages.xml:
+			</div><pre class="programlisting">&lt;page&gt;
+    &lt;create-process definition="todo" /&gt;
+&lt;/page&gt;
+</pre></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Initializing_actor_ids.html"><strong>Prev</strong>7.4.2. Initializing actor ids</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Task_assignment.html"><strong>Next</strong>7.4.4. Task assignment</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Using_jPDL_business_process_definitions-Performing_a_task.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Using_jPDL_business_process_definitions-Performing_a_task.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Using_jPDL_business_process_definitions-Performing_a_task.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>7.4.6. Performing a task</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Pageflows_and_business_processes-Using_jPDL_business_process_definitions.html" title="7.4. Using jPDL business process definitions" /><link rel="prev" href="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Task_lists.html" title="7.4.5. Task lists" /><link rel="next" href="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping.html" title="Chapter 8. Seam and Object/Relational Mapping" /></head><body class=""><p id="title"><a class="left" href="http://ww!
 w.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Task_lists.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping.html"><strong>Next</strong></a></li></ul><div class="section" title="7.4.6. Performing a task"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Performing_a_task">7.4.6. Performing a task</h3></div></div></div><div class="para">
+				To begin work on a task, we use either <code class="literal">@StartTask</code> or <code class="literal">@BeginTask</code> on the listener method:
+			</div><pre class="programlisting">@StartTask
+public String start() { ... }
+</pre><div class="para">
+				Alternatively we can begin work on a task using <code class="filename">pages.xml</code>:
+			</div><pre class="programlisting">&lt;page&gt;
+    &lt;start-task /&gt;
+&lt;/page&gt;
+</pre><div class="para">
+				These annotations begin a special kind of conversation that has significance in terms of the overarching business process. Work done by this conversation has access to state held in the business process context.
+			</div><div class="para">
+				If we end the conversation using <code class="literal">@EndTask</code>, Seam will signal the completion of the task:
+			</div><pre class="programlisting">@EndTask(transition="completed")
+public String completed() { ... }
+</pre><div class="para">
+				Alternatively we can use pages.xml:
+			</div><pre class="programlisting">&lt;page&gt;
+    &lt;end-task transition="completed" /&gt;
+&lt;/page&gt;
+</pre><div class="para">
+				(Alternatively, we could have used <code class="literal">&lt;end-conversation&gt;</code> as shown above.)
+			</div><div class="para">
+				At this point, jBPM takes over and continues executing the business process definition. (In more complex processes, several tasks might need to be completed before process execution can resume.)
+			</div><div class="para">
+				Please refer to the jBPM documentation for a more thorough overview of the sophisticated features that jBPM provides for managing complex business processes.
+			</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Task_lists.html"><strong>Prev</strong>7.4.5. Task lists</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping.html"><strong>Next</strong>Chapter 8. Seam and Object/Relational Mapping</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Using_jPDL_business_process_definitions-Task_assignment.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Using_jPDL_business_process_definitions-Task_assignment.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Using_jPDL_business_process_definitions-Task_assignment.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>7.4.4. Task assignment</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Pageflows_and_business_processes-Using_jPDL_business_process_definitions.html" title="7.4. Using jPDL business process definitions" /><link rel="prev" href="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Initiating_a_business_process.html" title="7.4.3. Initiating a business process" /><link rel="next" href="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Task_lists.html" title="7.4.5. Task lists" /></head><body class=""><p id="title"><a clas!
 s="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Initiating_a_business_process.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Task_lists.html"><strong>Next</strong></a></li></ul><div class="section" title="7.4.4. Task assignment"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Task_assignment">7.4.4. Task assignment</h3></div></div></div><div class="para">
+				When a process starts, task instances are created. These must be assigned to users or user groups. We can either hardcode our actor ids, or delegate to a Seam component:
+			</div><pre class="programlisting">&lt;task name="todo" description="#{todoList.description}"&gt;
+    &lt;assignment actor-id="#{actor.id}"/&gt;
+&lt;/task&gt;
+</pre><div class="para">
+				In this case, we have simply assigned the task to the current user. We can also assign tasks to a pool:
+			</div><pre class="programlisting">&lt;task name="todo" description="#{todoList.description}"&gt;
+    &lt;assignment pooled-actors="employees"/&gt;
+&lt;/task&gt;
+</pre></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Initiating_a_business_process.html"><strong>Prev</strong>7.4.3. Initiating a business process</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Task_lists.html"><strong>Next</strong>7.4.5. Task lists</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Using_jPDL_business_process_definitions-Task_lists.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Using_jPDL_business_process_definitions-Task_lists.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Using_jPDL_business_process_definitions-Task_lists.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>7.4.5. Task lists</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Pageflows_and_business_processes-Using_jPDL_business_process_definitions.html" title="7.4. Using jPDL business process definitions" /><link rel="prev" href="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Task_assignment.html" title="7.4.4. Task assignment" /><link rel="next" href="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Performing_a_task.html" title="7.4.6. Performing a task" /></head><body class=""><p id="title"><a class="left" href="http!
 ://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Task_assignment.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Performing_a_task.html"><strong>Next</strong></a></li></ul><div class="section" title="7.4.5. Task lists"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Task_lists">7.4.5. Task lists</h3></div></div></div><div class="para">
+				Several built-in Seam components make it easy to display task lists. The <code class="literal">pooledTaskInstanceList</code> is a list of pooled tasks that users may assign to themselves:
+			</div><pre class="programlisting">&lt;h:dataTable value="#{pooledTaskInstanceList}" var="task"&gt;
+    &lt;h:column&gt;
+        &lt;f:facet name="header"&gt;Description&lt;/f:facet&gt;
+        &lt;h:outputText value="#{task.description}"/&gt;
+    &lt;/h:column&gt;
+    &lt;h:column&gt;
+        &lt;s:link action="#{pooledTask.assignToCurrentActor}" value="Assign" taskInstance="#{task}"/&gt;
+    &lt;/h:column&gt;            	
+&lt;/h:dataTable&gt;
+</pre><div class="para">
+				Note that instead of <code class="literal">&lt;s:link&gt;</code> we could have used a plain JSF <code class="literal">&lt;h:commandLink&gt;</code>:
+			</div><pre class="programlisting">&lt;h:commandLink action="#{pooledTask.assignToCurrentActor}"&gt; 
+    &lt;f:param name="taskId" value="#{task.id}"/&gt;
+&lt;/h:commandLink&gt;
+</pre><div class="para">
+				The <code class="literal">pooledTask</code> component is a built-in component that simply assigns the task to the current user.
+			</div><div class="para">
+				The <code class="literal">taskInstanceListForType</code> component includes tasks of a particular type that are assigned to the current user:
+			</div><pre class="programlisting">&lt;h:dataTable value="#{taskInstanceListForType['todo']}" var="task"&gt;
+    &lt;h:column&gt;
+        &lt;f:facet name="header"&gt;Description&lt;/f:facet&gt;
+        &lt;h:outputText value="#{task.description}"/&gt;
+    &lt;/h:column&gt;
+    &lt;h:column&gt;
+        &lt;s:link action="#{todoList.start}" value="Start Work" taskInstance="#{task}"/&gt;
+    &lt;/h:column&gt;            	
+&lt;/h:dataTable&gt;
+</pre></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Task_assignment.html"><strong>Prev</strong>7.4.4. Task assignment</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Performing_a_task.html"><strong>Next</strong>7.4.6. Performing a task</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Using_jPDL_pageflows-Controlling_the_flow.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Using_jPDL_pageflows-Controlling_the_flow.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Using_jPDL_pageflows-Controlling_the_flow.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>7.2.4. Controlling the flow</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Pageflows_and_business_processes-Using_jPDL_pageflows.html" title="7.2. Using jPDL pageflows" /><link rel="prev" href="Seam_Reference_Guide-Using_jPDL_pageflows-Page_nodes_and_transitions.html" title="7.2.3. Page nodes and transitions" /><link rel="next" href="Seam_Reference_Guide-Using_jPDL_pageflows-Ending_the_flow.html" title="7.2.5. Ending the flow" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content!
 /images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Using_jPDL_pageflows-Page_nodes_and_transitions.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Using_jPDL_pageflows-Ending_the_flow.html"><strong>Next</strong></a></li></ul><div class="section" title="7.2.4. Controlling the flow"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Using_jPDL_pageflows-Controlling_the_flow">7.2.4. Controlling the flow</h3></div></div></div><div class="para">
+				Usually, we do not need the more powerful features of jPDL when defining pageflows. We do need the <code class="literal">&lt;decision&gt;</code> node, however:
+			</div><pre class="programlisting">&lt;decision name="evaluateGuess" expression="#{numberGuess.correctGuess}"&gt;
+    &lt;transition name="true" to="win"/&gt;
+    &lt;transition name="false" to="evaluateRemainingGuesses"/&gt;
+&lt;/decision&gt;
+</pre><div class="para">
+				A decision is made by evaluating a JSF EL expression in the Seam contexts.
+			</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Using_jPDL_pageflows-Page_nodes_and_transitions.html"><strong>Prev</strong>7.2.3. Page nodes and transitions</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Using_jPDL_pageflows-Ending_the_flow.html"><strong>Next</strong>7.2.5. Ending the flow</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Using_jPDL_pageflows-Ending_the_flow.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Using_jPDL_pageflows-Ending_the_flow.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Using_jPDL_pageflows-Ending_the_flow.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>7.2.5. Ending the flow</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Pageflows_and_business_processes-Using_jPDL_pageflows.html" title="7.2. Using jPDL pageflows" /><link rel="prev" href="Seam_Reference_Guide-Using_jPDL_pageflows-Controlling_the_flow.html" title="7.2.4. Controlling the flow" /><link rel="next" href="Seam_Reference_Guide-Pageflows_and_business_processes-Business_process_management_in_Seam.html" title="7.3. Business process management in Seam" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.c!
 om/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Using_jPDL_pageflows-Controlling_the_flow.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Pageflows_and_business_processes-Business_process_management_in_Seam.html"><strong>Next</strong></a></li></ul><div class="section" title="7.2.5. Ending the flow"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Using_jPDL_pageflows-Ending_the_flow">7.2.5. Ending the flow</h3></div></div></div><div class="para">
+				We end the conversation using <code class="literal">&lt;end-conversation&gt;</code> or <code class="literal">@End</code>. (In fact, for readability, use of <span class="emphasis"><em>both</em></span> is encouraged.)
+			</div><pre class="programlisting">&lt;page name="win" view-id="/win.jsp"&gt;
+    &lt;redirect/&gt;
+    &lt;end-conversation/&gt;
+&lt;/page&gt;
+</pre><div class="para">
+				Optionally, we can end a task, specify a jBPM <code class="literal">transition</code> name. In this case, Seam will signal the end of the current task in the overarching business process.
+			</div><pre class="programlisting">&lt;page name="win" view-id="/win.jsp"&gt;
+    &lt;redirect/&gt;
+    &lt;end-task transition="success"/&gt;
+&lt;/page&gt;
+</pre></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Using_jPDL_pageflows-Controlling_the_flow.html"><strong>Prev</strong>7.2.4. Controlling the flow</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Pageflows_and_business_processes-Business_process_management_in_Seam.html"><strong>Next</strong>7.3. Business process management in Seam</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Using_jPDL_pageflows-Page_nodes_and_transitions.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Using_jPDL_pageflows-Page_nodes_and_transitions.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Using_jPDL_pageflows-Page_nodes_and_transitions.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>7.2.3. Page nodes and transitions</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Pageflows_and_business_processes-Using_jPDL_pageflows.html" title="7.2. Using jPDL pageflows" /><link rel="prev" href="Seam_Reference_Guide-Using_jPDL_pageflows-Starting_pageflows.html" title="7.2.2. Starting pageflows" /><link rel="next" href="Seam_Reference_Guide-Using_jPDL_pageflows-Controlling_the_flow.html" title="7.2.4. Controlling the flow" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content!
 /images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Using_jPDL_pageflows-Starting_pageflows.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Using_jPDL_pageflows-Controlling_the_flow.html"><strong>Next</strong></a></li></ul><div class="section" title="7.2.3. Page nodes and transitions"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Using_jPDL_pageflows-Page_nodes_and_transitions">7.2.3. Page nodes and transitions</h3></div></div></div><div class="para">
+				Each <code class="literal">&lt;page&gt;</code> node represents a state where the system is waiting for user input:
+			</div><pre class="programlisting">&lt;page name="displayGuess" view-id="/numberGuess.jsp"&gt;
+    &lt;redirect/&gt;
+    &lt;transition name="guess" to="evaluateGuess"&gt;
+        &lt;action expression="#{numberGuess.guess}" /&gt;
+    &lt;/transition&gt;
+&lt;/page&gt;
+</pre><div class="para">
+				The <code class="literal">view-id</code> is the JSF view id. The <code class="literal">&lt;redirect/&gt;</code> element has the same effect as <code class="literal">&lt;redirect/&gt;</code> in a JSF navigation rule: namely, a post-then-redirect behavior, to overcome problems with the browser's refresh button (note that Seam propagates conversation contexts over these browser redirects).
+			</div><div class="para">
+				The transition name is the name of a JSF outcome triggered by clicking a command button or command link in <code class="literal">numberGuess.jsp</code>.
+			</div><pre class="programlisting">&lt;h:commandButton type="submit" value="Guess" action="guess"/&gt;
+</pre><div class="para">
+				When the transition is triggered by clicking this button, jBPM will activate the transition action by calling the <code class="literal">guess()</code> method of the <code class="literal">numberGuess</code> component. Notice that the syntax used for specifying actions in the jPDL is just a familiar JSF EL expression, and that the transition action handler is just a method of a Seam component in the current Seam contexts. So we have exactly the same event model for jBPM events that we already have for JSF events. (The <span class="emphasis"><em>One Kind of Stuff</em></span> principle.)
+			</div><div class="para">
+				In the case of a null outcome (for example, a command button with no <code class="literal">action</code> defined), Seam will signal the transition with no name if one exists, or else simply redisplay the page if all transitions have names. So we could slightly simplify our example pageflow and this button:
+			</div><pre class="programlisting">&lt;h:commandButton type="submit" value="Guess"/&gt;
+</pre><div class="para">
+				Would fire the following un-named transition:
+			</div><pre class="programlisting">&lt;page name="displayGuess" view-id="/numberGuess.jsp"&gt;
+    &lt;redirect/&gt;
+    &lt;transition to="evaluateGuess"&gt;
+        &lt;action expression="#{numberGuess.guess}" /&gt;
+    &lt;/transition&gt;
+&lt;/page&gt;
+</pre><div class="para">
+				It is even possible to have the button call an action method, in which case the action outcome will determine the transition to be taken:
+			</div><pre class="programlisting">&lt;h:commandButton type="submit" value="Guess" action="#{numberGuess.guess}"/&gt;
+</pre><pre class="programlisting">&lt;page name="displayGuess" view-id="/numberGuess.jsp"&gt;
+    &lt;transition name="correctGuess" to="win"/&gt;
+    &lt;transition name="incorrectGuess" to="evaluateGuess"/&gt;
+&lt;/page&gt;
+</pre><div class="para">
+				However, this is considered an inferior style, since it moves responsibility for controlling the flow out of the pageflow definition and back into the other components. It is much better to centralize this concern in the pageflow itself.
+			</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Using_jPDL_pageflows-Starting_pageflows.html"><strong>Prev</strong>7.2.2. Starting pageflows</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Using_jPDL_pageflows-Controlling_the_flow.html"><strong>Next</strong>7.2.4. Controlling the flow</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Using_jPDL_pageflows-Starting_pageflows.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Using_jPDL_pageflows-Starting_pageflows.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Using_jPDL_pageflows-Starting_pageflows.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>7.2.2. Starting pageflows</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Pageflows_and_business_processes-Using_jPDL_pageflows.html" title="7.2. Using jPDL pageflows" /><link rel="prev" href="Seam_Reference_Guide-Pageflows_and_business_processes-Using_jPDL_pageflows.html" title="7.2. Using jPDL pageflows" /><link rel="next" href="Seam_Reference_Guide-Using_jPDL_pageflows-Page_nodes_and_transitions.html" title="7.2.3. Page nodes and transitions" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img s!
 rc="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Pageflows_and_business_processes-Using_jPDL_pageflows.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Using_jPDL_pageflows-Page_nodes_and_transitions.html"><strong>Next</strong></a></li></ul><div class="section" title="7.2.2. Starting pageflows"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Using_jPDL_pageflows-Starting_pageflows">7.2.2. Starting pageflows</h3></div></div></div><div class="para">
+				We <span class="emphasis"><em>start</em></span> a jPDL-based pageflow by specifying the name of the process definition using a <code class="literal">@Begin</code>, <code class="literal">@BeginTask</code> or <code class="literal">@StartTask</code> annotation:
+			</div><pre class="programlisting">@Begin(pageflow="numberguess")
+public void begin() { ... }
+</pre><div class="para">
+				Alternatively we can start a pageflow using pages.xml:
+			</div><pre class="programlisting">&lt;page&gt;
+        &lt;begin-conversation pageflow="numberguess"/&gt;
+    &lt;/page&gt;
+</pre><div class="para">
+				If we are beginning the pageflow during the <code class="literal">RENDER_RESPONSE</code> phase—during a <code class="literal">@Factory</code> or <code class="literal">@Create</code> method, for example—we consider ourselves to be already at the page being rendered, and use a <code class="literal">&lt;start-page&gt;</code> node as the first node in the pageflow, as in the example above.
+			</div><div class="para">
+				But if the pageflow is begun as the result of an action listener invocation, the outcome of the action listener determines which is the first page to be rendered. In this case, we use a <code class="literal">&lt;start-state&gt;</code> as the first node in the pageflow, and declare a transition for each possible outcome:
+			</div><pre class="programlisting">&lt;pageflow-definition name="viewEditDocument"&gt;
+
+    &lt;start-state name="start"&gt;
+        &lt;transition name="documentFound" to="displayDocument"/&gt;
+        &lt;transition name="documentNotFound" to="notFound"/&gt;
+    &lt;/start-state&gt;
+    
+    &lt;page name="displayDocument" view-id="/document.jsp"&gt;
+        &lt;transition name="edit" to="editDocument"/&gt;
+        &lt;transition name="done" to="main"/&gt;
+    &lt;/page&gt;
+    
+    ...
+    
+    &lt;page name="notFound" view-id="/404.jsp"&gt;
+        &lt;end-conversation/&gt;
+    &lt;/page&gt;
+    
+&lt;/pageflow-definition&gt;
+</pre></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Pageflows_and_business_processes-Using_jPDL_pageflows.html"><strong>Prev</strong>7.2. Using jPDL pageflows</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Using_jPDL_pageflows-Page_nodes_and_transitions.html"><strong>Next</strong>7.2.3. Page nodes and transitions</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Working_with_Data_types-Collections.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Working_with_Data_types-Collections.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Working_with_Data_types-Collections.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>19.6.5. Collections</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Remoting-Working_with_Data_types.html" title="19.6. Working with Data types" /><link rel="prev" href="Seam_Reference_Guide-Working_with_Data_types-Enums.html" title="19.6.4. Enums" /><link rel="next" href="Seam_Reference_Guide-Collections-Maps.html" title="19.6.5.2. Maps" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.co!
 m"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Working_with_Data_types-Enums.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Collections-Maps.html"><strong>Next</strong></a></li></ul><div class="sect2" title="19.6.5. Collections"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Working_with_Data_types-Collections" class="title">Collections</h1></div></div></div><div class="sect3" title="19.6.5.1. Bags"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Collections-Bags" class="title">Bags</h1></div></div></div><div class="para">
+		Bags cover all collection types including arrays, collections, lists, sets, (but excluding Maps - see the next section for those), and are implemented client-side as a Javascript array. When calling a component method that accepts one of these types as a parameter, your parameter should be a Javascript array. If a component method returns one of these types, then the return value will also be a Javascript array. The remoting framework is clever enough on the server side to convert the bag to an appropriate type for the component method call.
+	</div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Working_with_Data_types-Enums.html"><strong>Prev</strong>19.6.4. Enums</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Collections-Maps.html"><strong>Next</strong>19.6.5.2. Maps</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Working_with_Data_types-Dates_and_Times.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Working_with_Data_types-Dates_and_Times.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Working_with_Data_types-Dates_and_Times.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>19.6.3. Dates and Times</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Remoting-Working_with_Data_types.html" title="19.6. Working with Data types" /><link rel="prev" href="Seam_Reference_Guide-Working_with_Data_types-JavaBeans.html" title="19.6.2. JavaBeans" /><link rel="next" href="Seam_Reference_Guide-Working_with_Data_types-Enums.html" title="19.6.4. Enums" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" h!
 ref="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Working_with_Data_types-JavaBeans.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Working_with_Data_types-Enums.html"><strong>Next</strong></a></li></ul><div class="sect2" title="19.6.3. Dates and Times"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Working_with_Data_types-Dates_and_Times" class="title">Dates and Times</h1></div></div></div><div class="para">
+		Date values are serialized into a String representation that is accurate to the millisecond. On the client side, use a Javascript Date object to work with date values. On the server side, use any <code class="literal">java.util.Date</code> (or descendent, such as <code class="literal">java.sql.Date</code> or <code class="literal">java.sql.Timestamp</code> class.
+	</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Working_with_Data_types-JavaBeans.html"><strong>Prev</strong>19.6.2. JavaBeans</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Working_with_Data_types-Enums.html"><strong>Next</strong>19.6.4. Enums</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Working_with_Data_types-Enums.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Working_with_Data_types-Enums.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Working_with_Data_types-Enums.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>19.6.4. Enums</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Remoting-Working_with_Data_types.html" title="19.6. Working with Data types" /><link rel="prev" href="Seam_Reference_Guide-Working_with_Data_types-Dates_and_Times.html" title="19.6.3. Dates and Times" /><link rel="next" href="Seam_Reference_Guide-Working_with_Data_types-Collections.html" title="19.6.5. Collections" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a c!
 lass="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Working_with_Data_types-Dates_and_Times.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Working_with_Data_types-Collections.html"><strong>Next</strong></a></li></ul><div class="sect2" title="19.6.4. Enums"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Working_with_Data_types-Enums" class="title">Enums</h1></div></div></div><div class="para">
+		On the client side, enums are treated the same as Strings. When setting the value for an enum parameter, simply use the String representation of the enum. Take the following component as an example:
+	</div><pre class="programlisting">
+  @Name("paintAction")
+  public class paintAction implements paintLocal {
+    public enum Color {red, green, blue, yellow, orange, purple};
+
+    public void paint(Color color) {
+      // code
+    }    
+  }
+</pre><div class="para">
+		To call the <code class="literal">paint()</code> method with the color <code class="literal">red</code>, pass the parameter value as a String literal:
+	</div><pre class="programlisting">
+  Seam.Component.getInstance("paintAction").paint("red");
+</pre><div class="para">
+		The inverse is also true - that is, if a component method returns an enum parameter (or contains an enum field anywhere in the returned object graph) then on the client-side it will be represented as a String.
+	</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Working_with_Data_types-Dates_and_Times.html"><strong>Prev</strong>19.6.3. Dates and Times</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Working_with_Data_types-Collections.html"><strong>Next</strong>19.6.5. Collections</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Working_with_Data_types-JavaBeans.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Working_with_Data_types-JavaBeans.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Working_with_Data_types-JavaBeans.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>19.6.2. JavaBeans</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Remoting-Working_with_Data_types.html" title="19.6. Working with Data types" /><link rel="prev" href="Seam_Reference_Guide-Remoting-Working_with_Data_types.html" title="19.6. Working with Data types" /><link rel="next" href="Seam_Reference_Guide-Working_with_Data_types-Dates_and_Times.html" title="19.6.3. Dates and Times" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site"!
  /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Remoting-Working_with_Data_types.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Working_with_Data_types-Dates_and_Times.html"><strong>Next</strong></a></li></ul><div class="sect2" title="19.6.2. JavaBeans"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Working_with_Data_types-JavaBeans" class="title">JavaBeans</h1></div></div></div><div class="para">
+		In general these will be either Seam entity or JavaBean components, or some other non-component class. Use the appropriate method (either <code class="literal">Seam.Component.newInstance()</code> for Seam components or <code class="literal">Seam.Remoting.createType()</code> for everything else) to create a new instance of the object.
+	</div><div class="para">
+		It is important to note that only objects that are created by either of these two methods should be used as parameter values, where the parameter is not one of the other valid types mentioned anywhere else in this section. In some situations you may have a component method where the exact parameter type cannot be determined, such as:
+	</div><pre class="programlisting">
+  @Name("myAction")
+  public class MyAction implements MyActionLocal {
+    public void doSomethingWithObject(Object obj) {
+      // code
+    }
+  }
+</pre><div class="para">
+		In this case you might want to pass in an instance of your <code class="literal">myWidget</code> component, however the interface for <code class="literal">myAction</code> will not include <code class="literal">myWidget</code> as it is not directly referenced by any of its methods. To get around this, <code class="literal">MyWidget</code> needs to be explicitly imported:
+	</div><pre class="programlisting">
+                  
+  &lt;script type="text/javascript" src="seam/resource/remoting/interface.js?myAction&amp;myWidget"&gt;
+  &lt;/script&gt;
+</pre><div class="para">
+		This will then allow a <code class="literal">myWidget</code> object to be created with <code class="literal">Seam.Component.newInstance("myWidget")</code>, which can then be passed to <code class="literal">myAction.doSomethingWithObject()</code>.
+	</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Remoting-Working_with_Data_types.html"><strong>Prev</strong>19.6. Working with Data types</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Working_with_Data_types-Dates_and_Times.html"><strong>Next</strong>19.6.3. Dates and Times</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Workspace_management-Breadcrumbs.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Workspace_management-Breadcrumbs.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Workspace_management-Breadcrumbs.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>6.7.5. Breadcrumbs</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Conversations_and_workspace_management-Workspace_management.html" title="6.7. Workspace management" /><link rel="prev" href="Seam_Reference_Guide-Workspace_management-The_conversation_list.html" title="6.7.4. The conversation list" /><link rel="next" href="Seam_Reference_Guide-Conversations_and_workspace_management-Conversational_components_and_JSF_component_bindings.html" title="6.8. Conversational components and JSF component bindings" /></head><body class=""><p id="titl!
 e"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Workspace_management-The_conversation_list.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Conversations_and_workspace_management-Conversational_components_and_JSF_component_bindings.html"><strong>Next</strong></a></li></ul><div class="section" title="6.7.5. Breadcrumbs"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Workspace_management-Breadcrumbs">6.7.5. Breadcrumbs</h3></div></div></div><div class="para">
+				Breadcrumbs are useful in applications which use a nested conversation model. The breadcrumbs are a list of links to conversations in the current conversation stack:
+			</div><pre class="programlisting">&lt;t:dataList value="#{conversationStack}" var="entry"&gt;
+    &lt;h:outputText value=" | "/&gt; 
+    &lt;h:commandLink value="#{entry.description}" action="#{entry.select}"/&gt;
+&lt;/t:dataList&gt;
+</pre><div class="mediaobject" align="center"><img src="images/breadcrumbs.png" align="middle" width="444" /></div><div class="para">
+				Please refer to the Seam Issue Tracker demo to see all this functionality in action!
+			</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Workspace_management-The_conversation_list.html"><strong>Prev</strong>6.7.4. The conversation list</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Conversations_and_workspace_management-Conversational_components_and_JSF_component_bindings.html"><strong>Next</strong>6.8. Conversational components and JSF component ...</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Workspace_management-The_conversation_list.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Workspace_management-The_conversation_list.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Workspace_management-The_conversation_list.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>6.7.4. The conversation list</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Conversations_and_workspace_management-Workspace_management.html" title="6.7. Workspace management" /><link rel="prev" href="Seam_Reference_Guide-Workspace_management-The_conversation_switcher.html" title="6.7.3. The conversation switcher" /><link rel="next" href="Seam_Reference_Guide-Workspace_management-Breadcrumbs.html" title="6.7.5. Breadcrumbs" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/im!
 ages/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Workspace_management-The_conversation_switcher.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Workspace_management-Breadcrumbs.html"><strong>Next</strong></a></li></ul><div class="section" title="6.7.4. The conversation list"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Workspace_management-The_conversation_list">6.7.4. The conversation list</h3></div></div></div><div class="para">
+				The conversation list is very similar to the conversation switcher, except that it is displayed as a table:
+			</div><pre class="programlisting">&lt;h:dataTable value="#{conversationList}" var="entry"
+        rendered="#{not empty conversationList}"&gt;
+    &lt;h:column&gt;
+        &lt;f:facet name="header"&gt;Workspace&lt;/f:facet&gt;
+        &lt;h:commandLink action="#{entry.select}" value="#{entry.description}"/&gt;
+        &lt;h:outputText value="[current]" rendered="#{entry.current}"/&gt;
+    &lt;/h:column&gt;
+    &lt;h:column&gt;
+        &lt;f:facet name="header"&gt;Activity&lt;/f:facet&gt;
+        &lt;h:outputText value="#{entry.startDatetime}"&gt;
+            &lt;f:convertDateTime type="time" pattern="hh:mm a"/&gt;
+        &lt;/h:outputText&gt;
+        &lt;h:outputText value=" - "/&gt;
+        &lt;h:outputText value="#{entry.lastDatetime}"&gt;
+            &lt;f:convertDateTime type="time" pattern="hh:mm a"/&gt;
+        &lt;/h:outputText&gt;
+    &lt;/h:column&gt;
+    &lt;h:column&gt;
+        &lt;f:facet name="header"&gt;Action&lt;/f:facet&gt;
+        &lt;h:commandButton action="#{entry.select}" value="#{msg.Switch}"/&gt;
+        &lt;h:commandButton action="#{entry.destroy}" value="#{msg.Destroy}"/&gt;
+    &lt;/h:column&gt;
+&lt;/h:dataTable&gt;
+</pre><div class="para">
+				We imagine that you will want to customize this for your own application.
+			</div><div class="mediaobject" align="center"><img src="images/list.png" align="middle" width="444" /></div><div class="para">
+				The conversation list is nice, but it takes up a lot of space on the page, so you probably do not want to put it on <span class="emphasis"><em>every</em></span> page.
+			</div><div class="para">
+				Notice that the conversation list lets the user destroy workspaces.
+			</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Workspace_management-The_conversation_switcher.html"><strong>Prev</strong>6.7.3. The conversation switcher</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Workspace_management-Breadcrumbs.html"><strong>Next</strong>6.7.5. Breadcrumbs</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Workspace_management-The_conversation_switcher.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Workspace_management-The_conversation_switcher.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Workspace_management-The_conversation_switcher.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>6.7.3. The conversation switcher</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Conversations_and_workspace_management-Workspace_management.html" title="6.7. Workspace management" /><link rel="prev" href="Seam_Reference_Guide-Workspace_management-Workspace_management_and_jPDL_pageflow.html" title="6.7.2. Workspace management and jPDL pageflow" /><link rel="next" href="Seam_Reference_Guide-Workspace_management-The_conversation_list.html" title="6.7.4. The conversation list" /></head><body class=""><p id="title"><a class="left" href="http:!
 //www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Workspace_management-Workspace_management_and_jPDL_pageflow.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Workspace_management-The_conversation_list.html"><strong>Next</strong></a></li></ul><div class="section" title="6.7.3. The conversation switcher"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Workspace_management-The_conversation_switcher">6.7.3. The conversation switcher</h3></div></div></div><div class="para">
+				Include the following fragment in your JSP or facelets page to get a drop-down menu that lets you switch to any current conversation, or to any other page of the application:
+			</div><pre class="programlisting">&lt;h:selectOneMenu value="#{switcher.conversationIdOrOutcome}"&gt;
+    &lt;f:selectItem itemLabel="Find Issues" itemValue="findIssue"/&gt;
+    &lt;f:selectItem itemLabel="Create Issue" itemValue="editIssue"/&gt;
+    &lt;f:selectItems value="#{switcher.selectItems}"/&gt;
+&lt;/h:selectOneMenu&gt;
+&lt;h:commandButton action="#{switcher.select}" value="Switch"/&gt;
+</pre><div class="para">
+				In this example, we have a menu that includes an item for each conversation, together with two additional items that let the user begin a new conversation.
+			</div><div class="mediaobject" align="center"><img src="images/switcher.png" align="middle" /></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Workspace_management-Workspace_management_and_jPDL_pageflow.html"><strong>Prev</strong>6.7.2. Workspace management and jPDL pageflow</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Workspace_management-The_conversation_list.html"><strong>Next</strong>6.7.4. The conversation list</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Workspace_management-Workspace_management_and_jPDL_pageflow.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Workspace_management-Workspace_management_and_jPDL_pageflow.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Workspace_management-Workspace_management_and_jPDL_pageflow.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>6.7.2. Workspace management and jPDL pageflow</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Conversations_and_workspace_management-Workspace_management.html" title="6.7. Workspace management" /><link rel="prev" href="Seam_Reference_Guide-Conversations_and_workspace_management-Workspace_management.html" title="6.7. Workspace management" /><link rel="next" href="Seam_Reference_Guide-Workspace_management-The_conversation_switcher.html" title="6.7.3. The conversation switcher" /></head><body class=""><p id="title"><a class="left" href="http!
 ://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Conversations_and_workspace_management-Workspace_management.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Workspace_management-The_conversation_switcher.html"><strong>Next</strong></a></li></ul><div class="section" title="6.7.2. Workspace management and jPDL pageflow"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Workspace_management-Workspace_management_and_jPDL_pageflow">6.7.2. Workspace management and jPDL pageflow</h3></div></div></div><div class="para">
+				When you use a jPDL pageflow definition, Seam switches to a conversation by restoring the current jBPM process state. This is a more flexible model since it allows the same <code class="literal">view-id</code> to have different descriptions depending upon the current <code class="literal">&lt;page&gt;</code> node. The description text is defined by the <code class="literal">&lt;page&gt;</code> node:
+			</div><pre class="programlisting">&lt;pageflow-definition name="shopping"&gt;
+
+   &lt;start-state name="start"&gt;
+      &lt;transition to="browse"/&gt;
+   &lt;/start-state&gt;
+   
+   &lt;page name="browse" view-id="/browse.xhtml"&gt;
+      &lt;description&gt;DVD Search: #{search.searchPattern}&lt;/description&gt;
+      &lt;transition to="browse"/&gt;
+      &lt;transition name="checkout" to="checkout"/&gt;
+   &lt;/page&gt;
+   
+   &lt;page name="checkout" view-id="/checkout.xhtml"&gt;
+      &lt;description&gt;Purchase: $#{cart.total}&lt;/description&gt;
+      &lt;transition to="checkout"/&gt;
+      &lt;transition name="complete" to="complete"/&gt;
+   &lt;/page&gt;
+   
+   &lt;page name="complete" view-id="/complete.xhtml"&gt;
+      &lt;end-conversation /&gt;
+   &lt;/page&gt;
+   
+&lt;/pageflow-definition&gt;
+</pre></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Conversations_and_workspace_management-Workspace_management.html"><strong>Prev</strong>6.7. Workspace management</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Workspace_management-The_conversation_switcher.html"><strong>Next</strong>6.7.3. The conversation switcher</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Writing_Security_Rules-Configuring_a_rules_file.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Writing_Security_Rules-Configuring_a_rules_file.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Writing_Security_Rules-Configuring_a_rules_file.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>12.6.2. Configuring a rules file</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Security-Writing_Security_Rules.html" title="12.6. Writing Security Rules" /><link rel="prev" href="Seam_Reference_Guide-Security-Writing_Security_Rules.html" title="12.6. Writing Security Rules" /><link rel="next" href="Seam_Reference_Guide-Writing_Security_Rules-Creating_a_security_rules_file.html" title="12.6.3. Creating a security rules file" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/i!
 mages/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Security-Writing_Security_Rules.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Writing_Security_Rules-Creating_a_security_rules_file.html"><strong>Next</strong></a></li></ul><div class="sect2" title="12.6.2. Configuring a rules file"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Writing_Security_Rules-Configuring_a_rules_file" class="title">Configuring a rules file</h1></div></div></div><div class="para">
+		Seam Security expects to find a <code class="literal">RuleBase</code> component called <code class="literal">securityRules</code> which it uses to evaluate permission checks. This is configured in <code class="literal">components.xml</code> as follows:
+	</div><pre class="programlisting">&lt;components xmlns="http://jboss.com/products/seam/components"
+            xmlns:core="http://jboss.com/products/seam/core"
+            xmlns:security="http://jboss.com/products/seam/security"
+            xmlns:drools="http://jboss.com/products/seam/drools"
+            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+            xsi:schemaLocation=
+                "http://jboss.com/products/seam/core 
+                                              http://jboss.com/products/seam/core-1.2.xsd 
+                 http://jboss.com/products/seam/components 
+                                              http://jboss.com/products/seam/components-1.2.xsd
+                 http://jboss.com/products/seam/drools 
+                                              http://jboss.com/products/seam/drools-1.2.xsd"
+                 http://jboss.com/products/seam/security 
+                                              http://jboss.com/products/seam/security-1.2.xsd"&gt;                 
+        
+   &lt;drools:rule-base name="securityRules"&gt;
+       &lt;drools:rule-files&gt;
+           &lt;value&gt;/META-INF/security.drl&lt;/value&gt;
+       &lt;/drools:rule-files&gt;
+   &lt;/drools:rule-base&gt;    
+   
+&lt;/components&gt;
+</pre><div class="para">
+		Once the <code class="literal">RuleBase</code> component is configured, it is time to write the security rules.
+	</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Security-Writing_Security_Rules.html"><strong>Prev</strong>12.6. Writing Security Rules</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Writing_Security_Rules-Creating_a_security_rules_file.html"><strong>Next</strong>12.6.3. Creating a security rules file</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Writing_Security_Rules-Creating_a_security_rules_file.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Writing_Security_Rules-Creating_a_security_rules_file.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Writing_Security_Rules-Creating_a_security_rules_file.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>12.6.3. Creating a security rules file</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Security-Writing_Security_Rules.html" title="12.6. Writing Security Rules" /><link rel="prev" href="Seam_Reference_Guide-Writing_Security_Rules-Configuring_a_rules_file.html" title="12.6.2. Configuring a rules file" /><link rel="next" href="Seam_Reference_Guide-Security-SSL_Security.html" title="12.7. SSL Security" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt=!
 "Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Writing_Security_Rules-Configuring_a_rules_file.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Security-SSL_Security.html"><strong>Next</strong></a></li></ul><div class="sect2" title="12.6.3. Creating a security rules file"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Writing_Security_Rules-Creating_a_security_rules_file" class="title">Creating a security rules file</h1></div></div></div><div class="para">
+		For this step you need to create a file called <code class="literal">security.drl</code> in the <code class="literal">/META-INF</code> directory of your application's jar file. In actual fact this file can be called anything you want, and exist in any location as long as it is configured appropriately in <code class="literal">components.xml</code>.
+	</div><div class="para">
+		So what should the security rules file contain? At this stage it might be a good idea to at least skim through the JBoss Rules documentation, however to get started here is an extremely simple example:
+	</div><pre class="programlisting">package MyApplicationPermissions;
+
+import org.jboss.seam.security.PermissionCheck;
+import org.jboss.seam.security.Role;
+
+rule CanUserDeleteCustomers
+when
+  c: PermissionCheck(name == "customer", action == "delete")
+  Role(name == "admin")
+then
+  c.grant();
+end;
+</pre><div class="para">
+		Let us break this down. The first thing we see is the package declaration. A package in JBoss Rules is essentially a collection of rules. The package name can be anything you want - it does not relate to anything else outside the scope of the rule base.
+	</div><div class="para">
+		The next thing we can notice is a couple of import statements for the <code class="literal">PermissionCheck</code> and <code class="literal">Role</code> classes. These imports inform the rules engine that we will be referencing these classes within our rules.
+	</div><div class="para">
+		Finally we have the code for the rule. Each rule within a package should be given a unique name (usually describing the purpose of the rule). In this case our rule is called <code class="literal">CanUserDeleteCustomers</code> and will be used to check whether a user is allowed to delete a customer record.
+	</div><div class="para">
+		Looking at the body of the rule definition we can notice two distinct sections. Rules have what is known as a left hand side (LHS) and a right hand side (RHS). The LHS consists of the conditional part of the rule, i.e. a list of conditions which must be satisfied for the rule to fire. The LHS is represented by the <code class="literal">when</code> section. The RHS is the consequence, or action section of the rule that will only be fired if all of the conditions in the LHS are met. The RHS is represented by the <code class="literal">then</code> section. The end of the rule is denoted by the <code class="literal">end;</code> line.
+	</div><div class="para">
+		If we look at the LHS of the rule, we see two conditions listed there. Let us examine the first condition:
+	</div><pre class="programlisting">c: PermissionCheck(name == "customer", action == "delete")
+</pre><div class="para">
+		In plain english, this condition is stating that there must exist a <code class="literal">PermissionCheck</code> object with a <code class="literal">name</code> property equal to "customer", and an <code class="literal">action</code> property equal to "delete" within the working memory. What is the working memory? It is a session-scoped object that contains the contextual information that is required by the rules engine to make a decision about a permission check. Each time the <code class="literal">hasPermission()</code> method is called, a temporary <code class="literal">PermissionCheck</code> object, or <span class="emphasis"><em>Fact</em></span>, is asserted into the working memory. This <code class="literal">PermissionCheck</code> corresponds exactly to the permission that is being checked, so for example if you call <code class="literal">hasPermission("account", "create", null)</code> then a <code class="literal">PermissionCheck</code> object with a <code class="lit!
 eral">name</code> equal to "account" and <code class="literal">action</code> equal to "create" will be asserted into the working memory for the duration of the permission check.
+	</div><div class="para">
+		So what else is in the working memory? Besides the short-lived temporary facts asserted during a permission check, there are some longer-lived objects in the working memory that stay there for the entire duration of a user being authenticated. These include any <code class="literal">java.security.Principal</code> objects that are created as part of the authentication process, plus a <code class="literal">org.jboss.seam.security.Role</code> object for each of the roles that the user is a member of. It is also possible to assert additional long-lived facts into the working memory by calling <code class="literal">RuleBasedIdentity.instance().getSecurityContext().assertObject()</code>, passing the object as a parameter.
+	</div><div class="para">
+		Getting back to our simple example, we can also notice that the first line of our LHS is prefixed with <code class="literal">c:</code>. This is a variable binding, and is used to refer back to the object that is matched by the condition. Moving onto the second line of our LHS, we see this:
+	</div><pre class="programlisting">Role(name == "admin")
+</pre><div class="para">
+		This condition simply states that there must be a <code class="literal">Role</code> object with a <code class="literal">name</code> of "admin" within the working memory. As mentioned, user roles are asserted into the working memory as long-lived facts. So, putting both conditions together, this rule is essentially saying "I will fire if you are checking for the <code class="literal">customer:delete</code> permission and the user is a member of the <code class="literal">admin</code> role".
+	</div><div class="para">
+		So what is the consequence of the rule firing? Let us take a look at the RHS of the rule:
+	</div><pre class="programlisting">c.grant()
+</pre><div class="para">
+		The RHS consists of Java code, and in this case is invoking the <code class="literal">grant()</code> method of the <code class="literal">c</code> object, which as already mentioned is a variable binding for the <code class="literal">PermissionCheck</code> object. Besides the <code class="literal">name</code> and <code class="literal">action</code> properties of the <code class="literal">PermissionCheck</code> object, there is also a <code class="literal">granted</code> property which is initially set to <code class="literal">false</code>. Calling <code class="literal">grant()</code> on a <code class="literal">PermissionCheck</code> sets the <code class="literal">granted</code> property to <code class="literal">true</code>, which means that the permission check was successful, allowing the user to carry out whatever action the permission check was intended for.
+	</div><div class="sect3" title="12.6.3.1. Wildcard permission checks"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Creating_a_security_rules_file-Wildcard_permission_checks" class="title">Wildcard permission checks</h1></div></div></div><div class="para">
+		It is possible to implement a wildcard permission check (which allows all actions for a given permission name), by omitting the <code class="literal">action</code> constraint for the <code class="literal">PermissionCheck</code> in your rule, like this:
+	</div><pre class="programlisting">rule CanDoAnythingToCustomersIfYouAreAnAdmin
+when
+  c: PermissionCheck(name == "customer")
+  Role(name == "admin")
+then
+  c.grant();
+end;
+</pre><div class="para">
+		This rule allows users with the <code class="literal">admin</code> role to perform <span class="emphasis"><em>any</em></span> action for any <code class="literal">customer</code> permission check.
+	</div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Writing_Security_Rules-Configuring_a_rules_file.html"><strong>Prev</strong>12.6.2. Configuring a rules file</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Security-SSL_Security.html"><strong>Next</strong>12.7. SSL Security</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Your_first_Seam_application_the_registration_example-How_it_works.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Your_first_Seam_application_the_registration_example-How_it_works.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-Your_first_Seam_application_the_registration_example-How_it_works.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>2.2.2. How it works</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-Seam_Tutorial-Your_first_Seam_application_the_registration_example.html" title="2.2. Your first Seam application: the registration example" /><link rel="prev" href="Seam_Reference_Guide-Seam_Tutorial-Your_first_Seam_application_the_registration_example.html" title="2.2. Your first Seam application: the registration example" /><link rel="next" href="Seam_Reference_Guide-Seam_Tutorial-Clickable_lists_in_Seam_the_messages_example.html" title="2.3. Clickable lists in Seam: th!
 e messages example" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_Tutorial-Your_first_Seam_application_the_registration_example.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_Tutorial-Clickable_lists_in_Seam_the_messages_example.html"><strong>Next</strong></a></li></ul><div class="section" title="2.2.2. How it works"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Your_first_Seam_application_the_registration_example-How_it_works">2.2.2. How it works</h3></div></div></div><div class="para">
+				When the form is submitted, JSF asks Seam to resolve the variable named <code class="literal">user</code>. Since there is no value already bound to that name (in any Seam context), Seam instantiates the <code class="literal">user</code> component, and returns the resulting <code class="literal">User</code> entity bean instance to JSF after storing it in the Seam session context.
+			</div><div class="para">
+				The form input values are now validated against the Hibernate Validator constraints specified on the <code class="literal">User</code> entity. If the constraints are violated, JSF redisplays the page. Otherwise, JSF binds the form input values to properties of the <code class="literal">User</code> entity bean.
+			</div><div class="para">
+				Next, JSF asks Seam to resolve the variable named <code class="literal">register</code>. Seam finds the <code class="literal">RegisterAction</code> stateless session bean in the stateless context and returns it. JSF invokes the <code class="literal">register()</code> action listener method.
+			</div><div class="para">
+				Seam intercepts the method call and injects the <code class="literal">User</code> entity from the Seam session context, before continuing the invocation.
+			</div><div class="para">
+				The <code class="literal">register()</code> method checks if a user with the entered username already exists. If so, an error message is queued with the <code class="literal">FacesMessages</code> component, and a null outcome is returned, causing a page redisplay. The <code class="literal">FacesMessages</code> component interpolates the JSF expression embedded in the message string and adds a JSF <code class="literal">FacesMessage</code> to the view.
+			</div><div class="para">
+				If no user with that username exists, the <code class="literal">"/registered.jsp"</code> outcome triggers a browser redirect to the <code class="literal">registered.jsp</code> page. When JSF comes to render the page, it asks Seam to resolve the variable named <code class="literal">user</code> and uses property values of the returned <code class="literal">User</code> entity from Seam's session scope.
+			</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_Tutorial-Your_first_Seam_application_the_registration_example.html"><strong>Prev</strong>2.2. Your first Seam application: the registratio...</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_Tutorial-Clickable_lists_in_Seam_the_messages_example.html"><strong>Next</strong>2.3. Clickable lists in Seam: the messages example</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-iText_PDF_generation-Basic_Text_Elements.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-iText_PDF_generation-Basic_Text_Elements.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-iText_PDF_generation-Basic_Text_Elements.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>15.3. Basic Text Elements</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-iText_PDF_generation.html" title="Chapter 15. iText PDF generation" /><link rel="prev" href="Seam_Reference_Guide-iText_PDF_generation-Creating_a_document.html" title="15.2. Creating a document" /><link rel="next" href="Seam_Reference_Guide-Basic_Text_Elements-ptext.html" title="15.3.2. p:text" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="ri!
 ght" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-iText_PDF_generation-Creating_a_document.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Basic_Text_Elements-ptext.html"><strong>Next</strong></a></li></ul><div class="section" title="15.3. Basic Text Elements"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-iText_PDF_generation-Basic_Text_Elements">15.3. Basic Text Elements</h2></div></div></div><div class="para">
+			Useful documents will need to contain more than just text; however, the standard UI components are geared towards HTML generation and are not useful for generating PDF content. Instead, Seam provides a special UI components for generating suitable PDF content. Tags like <code class="literal">&lt;p:image&gt;</code> and <code class="literal">&lt;p:paragraph&gt;</code> are the basic foundations of simple documents. Tags like <code class="literal">&lt;p:font&gt;</code> provide style information to all the content surrounging them.
+		</div><pre class="programlisting">
+&lt;p:document xmlns:p="http://jboss.com/products/seam/pdf"&gt; 
+    &lt;p:image alignment="right" wrap="true" resource="/logo.jpg" /&gt;
+    &lt;p:font size="24"&gt;
+        &lt;p:paragraph spacingAfter="50"&gt;My First Document&lt;/p:paragraph&gt;
+    &lt;/p:font&gt;
+
+    &lt;p:paragraph alignment="justify"&gt;
+        This is a simple document.  It isn't very fancy.
+    &lt;/p:paragraph&gt;
+&lt;/p:document&gt;
+</pre><div class="section" title="15.3.1. p:paragraph"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Basic_Text_Elements-pparagraph">15.3.1. p:paragraph</h3></div></div></div><div class="para">
+				Most uses of text should be sectioned into paragraphs so that text fragments can be flowed, formatted and styled in logical groups.
+			</div><div class="variablelist"><dl><dt><span class="term"><code class="literal">firstLineIndent</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">extraParagraphSpace</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">leading</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">multipliedLeading</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">spacingBefore</code></span></dt><dd><div class="para">
+							The blank space to be inserted before the element.
+						</div></dd><dt><span class="term"><code class="literal">spacingAfter</code></span></dt><dd><div class="para">
+							The blank space to be inserted after the element.
+						</div></dd><dt><span class="term"><code class="literal">indentationLeft</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">indentationRight</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">keepTogether</code></span></dt><dd><div class="para">
+							​
+						</div></dd></dl></div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-iText_PDF_generation-Creating_a_document.html"><strong>Prev</strong>15.2. Creating a document</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Basic_Text_Elements-ptext.html"><strong>Next</strong>15.3.2. p:text</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-iText_PDF_generation-Chapters_and_Sections.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-iText_PDF_generation-Chapters_and_Sections.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-iText_PDF_generation-Chapters_and_Sections.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>15.5. Chapters and Sections</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-iText_PDF_generation.html" title="Chapter 15. iText PDF generation" /><link rel="prev" href="Seam_Reference_Guide-Headers_and_Footers-ppageNumber.html" title="15.4.2. p:pageNumber" /><link rel="next" href="Seam_Reference_Guide-Chapters_and_Sections-ptitle.html" title="15.5.2. p:title" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" hre!
 f="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Headers_and_Footers-ppageNumber.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Chapters_and_Sections-ptitle.html"><strong>Next</strong></a></li></ul><div class="section" title="15.5. Chapters and Sections"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-iText_PDF_generation-Chapters_and_Sections">15.5. Chapters and Sections</h2></div></div></div><div class="para">
+			If the generated document follows a book/article structure, the <code class="literal">p:chapter</code> and <code class="literal">p:section</code> tags can be used to provide the necessary structure. Sections can only be used inside of chapters, but they may be nested arbitrarily deep. Most PDF viewers provide easy navigation between chapters and sections in a document.
+		</div><pre class="programlisting">
+&lt;p:document xmlns:p="http://jboss.com/products/seam/pdf"
+            title="Hello"&gt;
+
+   &lt;p:chapter number="1"&gt;
+      &lt;p:title&gt;&lt;p:paragraph&gt;Hello&lt;/p:paragraph&gt;&lt;/p:title&gt;
+      &lt;p:paragraph&gt;Hello #{user.name}!&lt;/p:paragraph&gt;
+   &lt;/p:chapter&gt;
+
+   &lt;p:chapter number="2"&gt;
+      &lt;p:title&gt;&lt;p:paragraph&gt;Goodbye&lt;/p:paragraph&gt;&lt;/p:title&gt;
+      &lt;p:paragraph&gt;Goodbye #{user.name}.&lt;/p:paragraph&gt;
+   &lt;/p:chapter&gt;
+
+&lt;/p:document&gt;
+</pre><div class="section" title="15.5.1. p:chapter and p:section"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Chapters_and_Sections-pchapter_and_psection">15.5.1. p:chapter and p:section</h3></div></div></div><div class="variablelist"><dl><dt><span class="term"><code class="literal">number</code></span></dt><dd><div class="para">
+							The chapter number. Every chapter should be assigned a chapter number.
+						</div></dd><dt><span class="term"><code class="literal">numberDepth</code></span></dt><dd><div class="para">
+							The depth of numbering for section. All sections are numbered relative to their surrounding chapter/sections. The fourth section of of the first section of chapter three would be section 3.1.4, if displayed at the default number depth of three. To omit the chapter number, a number depth of 2 should be used. In that case, the section number would be displayed as 1.4.
+						</div></dd></dl></div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Headers_and_Footers-ppageNumber.html"><strong>Prev</strong>15.4.2. p:pageNumber</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Chapters_and_Sections-ptitle.html"><strong>Next</strong>15.5.2. p:title</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-iText_PDF_generation-Configuring_iText.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-iText_PDF_generation-Configuring_iText.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-iText_PDF_generation-Configuring_iText.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>15.9. Configuring iText</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-iText_PDF_generation.html" title="Chapter 15. iText PDF generation" /><link rel="prev" href="Seam_Reference_Guide-Document_Constants-Alignment_Values.html" title="15.8.2. Alignment Values" /><link rel="next" href="Seam_Reference_Guide-iText_PDF_generation-iText_links.html" title="15.10. iText links" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class=!
 "right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Document_Constants-Alignment_Values.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-iText_PDF_generation-iText_links.html"><strong>Next</strong></a></li></ul><div class="section" title="15.9. Configuring iText"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-iText_PDF_generation-Configuring_iText">15.9. Configuring iText</h2></div></div></div><div class="para">
+			Document generation works out of the box with no additional configuration needed. However, there are a few points of configuration that are needed for more serious applications.
+		</div><div class="para">
+			The default implementation serves PDF documents from a generic URL, <code class="literal">/seam-doc.seam</code>. Many browsers (and users) would prefer to see URLs that contain the actual PDF name like <code class="literal">/myDocument.pdf</code>. This capability requires some configuration. To serve PDF files, all *.pdf resources should be mapped to the Seam Servlet Filter and to the DocumentStoreServlet:
+		</div><pre class="programlisting">
+&lt;filter&gt;
+    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;
+    &lt;filter-class&gt;org.jboss.seam.servlet.SeamServletFilter&lt;/filter-class&gt;
+&lt;/filter&gt;
+
+&lt;filter-mapping&gt;
+    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;
+    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;
+&lt;/filter-mapping&gt;
+
+&lt;servlet&gt;
+    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;
+    &lt;servlet-class&gt;org.jboss.seam.pdf.DocumentStoreServlet&lt;/servlet-class&gt;
+&lt;/servlet&gt;
+
+&lt;servlet-mapping&gt;
+    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;
+    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;
+&lt;/servlet-mapping&gt;
+</pre><div class="para">
+			The <code class="literal">useExtensions</code> option on the document store component completes the functionality by instructing the document store to generate URLs with the correct filename extension for the document type being generated.
+		</div><pre class="programlisting">        
+&lt;components xmlns="http://jboss.com/products/seam/components"
+            xmlns:pdf="http://jboss.com/products/seam/pdf"&gt;
+    &lt;pdf:documentStore useExtensions="true" /&gt;
+&lt;/components&gt;
+</pre><div class="para">
+			Generated documents are stored in conversation scope and will expire when the conversation ends. At that point, references to the document will be invalid. To You can specify a default view to be shown when a document does not exist using the <code class="literal">errorPage</code> property of the documentStore.
+		</div><pre class="programlisting">        
+&lt;pdf:documentStore useExtensions="true" errorPage="/pdfMissing.seam" /&gt;
+</pre></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Document_Constants-Alignment_Values.html"><strong>Prev</strong>15.8.2. Alignment Values</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-iText_PDF_generation-iText_links.html"><strong>Next</strong>15.10. iText links</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-iText_PDF_generation-Creating_a_document.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-iText_PDF_generation-Creating_a_document.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-iText_PDF_generation-Creating_a_document.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>15.2. Creating a document</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-iText_PDF_generation.html" title="Chapter 15. iText PDF generation" /><link rel="prev" href="Seam_Reference_Guide-iText_PDF_generation.html" title="Chapter 15. iText PDF generation" /><link rel="next" href="Seam_Reference_Guide-iText_PDF_generation-Basic_Text_Elements.html" title="15.3. Basic Text Elements" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></!
 a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-iText_PDF_generation.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-iText_PDF_generation-Basic_Text_Elements.html"><strong>Next</strong></a></li></ul><div class="section" title="15.2. Creating a document"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-iText_PDF_generation-Creating_a_document">15.2. Creating a document</h2></div></div></div><div class="para">
+			Documents are generated by facelets documents using tags in the <code class="literal">http://jboss.com/products/seam/pdf</code> namespace. Documents should always have the <code class="literal">document</code> tag at the root of the document. The <code class="literal">document</code> tag prepares Seam to generate a document into the DocumentStore and renders an HTML redirect to that stored content. The following is a a small PDF document consisting only a single line of text:
+		</div><pre class="programlisting">
+&lt;p:document xmlns:p="http://jboss.com/products/seam/pdf"&gt;                                                      
+   The document goes here.                                                                                             
+&lt;/p:document&gt;
+</pre><div class="section" title="15.2.1. p:document"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Creating_a_document-pdocument">15.2.1. p:document</h3></div></div></div><div class="para">
+				The <code class="literal">p:document</code> tag supports the following attributes:
+			</div><div class="variablelist"><dl><dt><span class="term"><code class="literal">type</code></span></dt><dd><div class="para">
+							The type of the document to be produced. Valid values are <code class="literal">PDF</code>, <code class="literal">RTF</code> and <code class="literal">HTML</code> modes. Seam defaults to PDF generation, and many of the features only work correctly when generating PDF documents.
+						</div></dd><dt><span class="term"><code class="literal">pageSize</code></span></dt><dd><div class="para">
+							The size of the page to be generate. The most commonly used values would be <code class="literal">LETTER</code> and <code class="literal">A4</code>. A full list of supported pages sizes can be found in <code class="literal">com.lowagie.text.PageSize</code> class. Alternatively, pageSize can provide the width and height of the page directly. The value <span class="emphasis"><em>612 792</em></span>, for example, is equizalent to the LETTER page size.
+						</div></dd><dt><span class="term"><code class="literal">orientation</code></span></dt><dd><div class="para">
+							The orientation of the page. Valid values are <code class="literal">portrait</code> and <code class="literal">landscape</code>. In landscape mode, the height and width page size values are reversed.
+						</div></dd><dt><span class="term"><code class="literal">margins</code></span></dt><dd><div class="para">
+							The left, right, top and bottom margin values.
+						</div></dd><dt><span class="term"><code class="literal">marginMirroring</code></span></dt><dd><div class="para">
+							Indicates that margin settings should be reversed an alternating pages.
+						</div></dd></dl></div><div class="para">
+				Document metadata is also set as attributes of the document tag. The following metadata fields are supported:
+			</div><div class="variablelist"><dl><dt><span class="term"><code class="literal">title</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">subject</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">keywords</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">author</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">creator</code></span></dt><dd><div class="para">
+							​
+						</div></dd></dl></div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-iText_PDF_generation.html"><strong>Prev</strong>Chapter 15. iText PDF generation</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-iText_PDF_generation-Basic_Text_Elements.html"><strong>Next</strong>15.3. Basic Text Elements</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-iText_PDF_generation-Document_Constants.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-iText_PDF_generation-Document_Constants.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-iText_PDF_generation-Document_Constants.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>15.8. Document Constants</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-iText_PDF_generation.html" title="Chapter 15. iText PDF generation" /><link rel="prev" href="Seam_Reference_Guide-Tables-pcell.html" title="15.7.2. p:cell" /><link rel="next" href="Seam_Reference_Guide-Document_Constants-Alignment_Values.html" title="15.8.2. Alignment Values" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://ww!
 w.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Tables-pcell.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Document_Constants-Alignment_Values.html"><strong>Next</strong></a></li></ul><div class="section" title="15.8. Document Constants"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-iText_PDF_generation-Document_Constants">15.8. Document Constants</h2></div></div></div><div class="para">
+			This section documents some of the constants shared by attributes on multiple tags.
+		</div><div class="section" title="15.8.1. Color Values"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Document_Constants-Color_Values">15.8.1. Color Values</h3></div></div></div><div class="para">
+				Seam documents do not yet support a full color specification. Currently, only named colors are supported. They are: <code class="literal">white</code>, <code class="literal">gray</code>, <code class="literal">lightgray</code>, <code class="literal">darkgray</code>, <code class="literal">black</code>, <code class="literal">red</code>, <code class="literal">pink</code>, <code class="literal">yellow</code>, <code class="literal">green</code>, <code class="literal">magenta</code>, <code class="literal">cyan</code> and <code class="literal">blue</code>.
+			</div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Tables-pcell.html"><strong>Prev</strong>15.7.2. p:cell</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Document_Constants-Alignment_Values.html"><strong>Next</strong>15.8.2. Alignment Values</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-iText_PDF_generation-Headers_and_Footers.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-iText_PDF_generation-Headers_and_Footers.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-iText_PDF_generation-Headers_and_Footers.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>15.4. Headers and Footers</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-iText_PDF_generation.html" title="Chapter 15. iText PDF generation" /><link rel="prev" href="Seam_Reference_Guide-Basic_Text_Elements-panchor.html" title="15.3.6. p:anchor" /><link rel="next" href="Seam_Reference_Guide-Headers_and_Footers-ppageNumber.html" title="15.4.2. p:pageNumber" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href=!
 "http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Basic_Text_Elements-panchor.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Headers_and_Footers-ppageNumber.html"><strong>Next</strong></a></li></ul><div class="section" title="15.4. Headers and Footers"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-iText_PDF_generation-Headers_and_Footers">15.4. Headers and Footers</h2></div></div></div><div class="section" title="15.4.1. p:header and p:footer"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Headers_and_Footers-pheader_and_pfooter">15.4.1. p:header and p:footer</h3></div></div></div><div class="para">
+				The <code class="literal">p:header</code> and <code class="literal">p:footer</code> components provide the ability to place header and footer text on each page of a generated document, with the exception of the first page. Header and footer declarations should appear near the top of a document.
+			</div><div class="variablelist"><dl><dt><span class="term"><code class="literal">alignment</code></span></dt><dd><div class="para">
+							The alignment of the header/footer box section. (see <a class="xref" href="Seam_Reference_Guide-Document_Constants-Alignment_Values.html" title="15.8.2. Alignment Values">Section 15.8.2, “Alignment Values”</a> for alignment values)
+						</div></dd><dt><span class="term"><code class="literal">backgroundColor</code></span></dt><dd><div class="para">
+							The background color of the header/footer box. (see <a class="xref" href="Seam_Reference_Guide-iText_PDF_generation-Document_Constants.html#Seam_Reference_Guide-Document_Constants-Color_Values" title="15.8.1. Color Values">Section 15.8.1, “Color Values”</a> for color values)
+						</div></dd><dt><span class="term"><code class="literal">borderColor</code></span></dt><dd><div class="para">
+							The border color of the header/footer box. Individual border sides can be set using <code class="literal">borderColorLeft</code>, <code class="literal">borderColorRight</code>, <code class="literal">borderColorTop</code> and <code class="literal">borderColorBottom</code>.(see <a class="xref" href="Seam_Reference_Guide-iText_PDF_generation-Document_Constants.html#Seam_Reference_Guide-Document_Constants-Color_Values" title="15.8.1. Color Values">Section 15.8.1, “Color Values”</a> for color values)
+						</div></dd><dt><span class="term"><code class="literal">borderWidth</code></span></dt><dd><div class="para">
+							The width of the border. Inidvidual border sides can be specified using <code class="literal">borderWidthLeft</code>, <code class="literal">borderWidthRight</code>, <code class="literal">borderWidthTop</code> and <code class="literal">borderWidthBottom</code>.
+						</div></dd></dl></div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Basic_Text_Elements-panchor.html"><strong>Prev</strong>15.3.6. p:anchor</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Headers_and_Footers-ppageNumber.html"><strong>Next</strong>15.4.2. p:pageNumber</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-iText_PDF_generation-Lists.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-iText_PDF_generation-Lists.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-iText_PDF_generation-Lists.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>15.6. Lists</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-iText_PDF_generation.html" title="Chapter 15. iText PDF generation" /><link rel="prev" href="Seam_Reference_Guide-Chapters_and_Sections-ptitle.html" title="15.5.2. p:title" /><link rel="next" href="Seam_Reference_Guide-Lists-plistItem.html" title="15.6.2. p:listItem" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src=!
 "Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Chapters_and_Sections-ptitle.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Lists-plistItem.html"><strong>Next</strong></a></li></ul><div class="section" title="15.6. Lists"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-iText_PDF_generation-Lists">15.6. Lists</h2></div></div></div><div class="para">
+			List structures can be displayed using the <code class="literal">p:list</code> and <code class="literal">p:listItem</code> tags. Lists may contain arbitrarily-nested sublists. List items may not be used outside of a list. he following document uses the <code class="literal">ui:repeat</code> tag to to display a list of values retrieved from a Seam component.
+		</div><pre class="programlisting">
+&lt;p:document xmlns:p="http://jboss.com/products/seam/pdf"
+            xmlns:ui="http://java.sun.com/jsf/facelets"
+            title="Hello"&gt;
+   &lt;p:list style="numbered"&gt;
+      &lt;ui:repeat value="#{documents}" var="doc"&gt;
+         &lt;p:listItem&gt;#{doc.name}&lt;/p:listItem&gt;
+      &lt;/ui:repeat&gt;
+   &lt;/p:list&gt;
+&lt;/p:document&gt;
+</pre><div class="section" title="15.6.1. p:list"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Lists-plist">15.6.1. p:list</h3></div></div></div><div class="para">
+				<code class="literal">p:list</code> supports the following attributes:
+			</div><div class="variablelist"><dl><dt><span class="term"><code class="literal">style</code></span></dt><dd><div class="para">
+							The ordering/bulleting style of list. One of: <code class="literal">NUMBERED</code>, <code class="literal">LETTERED</code>, <code class="literal">GREEK</code>, <code class="literal">ROMAN</code>, <code class="literal">ZAPFDINGBATS</code>, <code class="literal">ZAPFDINGBATS_NUMBER</code>. If no style is given, the list items are bulleted.
+						</div></dd><dt><span class="term"><code class="literal">listSymbol</code></span></dt><dd><div class="para">
+							For bulleted lists, specifies the bullet symbol.
+						</div></dd><dt><span class="term"><code class="literal">indent</code></span></dt><dd><div class="para">
+							The indentation level of the list.
+						</div></dd><dt><span class="term"><code class="literal">lowerCase</code></span></dt><dd><div class="para">
+							For list styles using letters, indicates whether the letters should be lower case.
+						</div></dd><dt><span class="term"><code class="literal">charNumber</code></span></dt><dd><div class="para">
+							For ZAPFDINGBATS, indicates the character code of the bullet character.
+						</div></dd><dt><span class="term"><code class="literal">numberType</code></span></dt><dd><div class="para">
+							For ZAPFDINGBATS_NUMBER, indicates the numbering style.
+						</div></dd></dl></div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Chapters_and_Sections-ptitle.html"><strong>Prev</strong>15.5.2. p:title</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Lists-plistItem.html"><strong>Next</strong>15.6.2. p:listItem</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-iText_PDF_generation-Tables.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-iText_PDF_generation-Tables.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-iText_PDF_generation-Tables.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>15.7. Tables</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-iText_PDF_generation.html" title="Chapter 15. iText PDF generation" /><link rel="prev" href="Seam_Reference_Guide-Lists-plistItem.html" title="15.6.2. p:listItem" /><link rel="next" href="Seam_Reference_Guide-Tables-pcell.html" title="15.7.2. p:cell" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/!
 images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Lists-plistItem.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Tables-pcell.html"><strong>Next</strong></a></li></ul><div class="section" title="15.7. Tables"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-iText_PDF_generation-Tables">15.7. Tables</h2></div></div></div><div class="para">
+			Table structures can be created using the <code class="literal">p:table</code> and <code class="literal">p:cell</code> tags. Unlike many table structures, there is no explicit row declaration. If a table has 3 columns, then every 3 cells will automatically form a row. Header and footer rows can be declared, and the headers and footers will be repeated in the event a table structure spans multiple pages.
+		</div><pre class="programlisting">
+&lt;p:document xmlns:p="http://jboss.com/products/seam/pdf"   
+            xmlns:ui="http://java.sun.com/jsf/facelets"
+            title="Hello"&gt;   
+   &lt;p:table columns="3" headerRows="1"&gt;
+      &lt;p:cell&gt;name&lt;/p:cell&gt;
+      &lt;p:cell&gt;owner&lt;/p:cell&gt;
+      &lt;p:cell&gt;size&lt;/p:cell&gt;
+      &lt;ui:repeat value="#{documents}" var="doc"&gt;
+         &lt;p:cell&gt;#{doc.name}&lt;/p:cell&gt;
+         &lt;p:cell&gt;#{doc.user.name}&lt;/p:cell&gt;
+         &lt;p:cell&gt;#{doc.size}&lt;/p:cell&gt;
+      &lt;/ui:repeat&gt;
+   &lt;/p:table&gt;
+&lt;/p:document&gt;
+</pre><div class="section" title="15.7.1. p:table"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Tables-ptable">15.7.1. p:table</h3></div></div></div><div class="para">
+				<code class="literal">p:table</code> supports the following attributes.
+			</div><div class="variablelist"><dl><dt><span class="term"><code class="literal">columns</code></span></dt><dd><div class="para">
+							The number of columns (cells) that make up a table row.
+						</div></dd><dt><span class="term"><code class="literal">widths</code></span></dt><dd><div class="para">
+							The relative widths of each column. There should be one value for each column. For example: widths="2 1 1" would indicate that there are 3 columns and the first column should be twice the size of the second and third column.
+						</div></dd><dt><span class="term"><code class="literal">headerRows</code></span></dt><dd><div class="para">
+							The initial number of rows which are considered to be headers or footer rows and should be repeated if the table spans multiple pages.
+						</div></dd><dt><span class="term"><code class="literal">footerRows</code></span></dt><dd><div class="para">
+							The number of rows that are considered to be footer rows. This value is subtracted from the <code class="literal">headerRows</code> value. If document has 2 rows which make up the header and one row that makes up the footer, <code class="literal">headerRows</code> should be set to 3 and <code class="literal">footerRows</code> should be set to 1
+						</div></dd><dt><span class="term"><code class="literal">widthPercentage</code></span></dt><dd><div class="para">
+							The percentage of the page width that the table spans.
+						</div></dd><dt><span class="term"><code class="literal">horizontalAlignment</code></span></dt><dd><div class="para">
+							The horizontal alignment of the table. (See <a class="xref" href="Seam_Reference_Guide-Document_Constants-Alignment_Values.html" title="15.8.2. Alignment Values">Section 15.8.2, “Alignment Values”</a> for possible values)
+						</div></dd><dt><span class="term"><code class="literal">skipFirstHeader</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">runDirection</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">lockedWidth</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">splitRows</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">spacingBefore</code></span></dt><dd><div class="para">
+							The blank space to be inserted before the element.
+						</div></dd><dt><span class="term"><code class="literal">spacingAfter</code></span></dt><dd><div class="para">
+							The blank space to be inserted after the element.
+						</div></dd><dt><span class="term"><code class="literal">extendLastRow</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">headersInEvent</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">splitLate</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">keepTogether</code></span></dt><dd><div class="para">
+							​
+						</div></dd></dl></div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Lists-plistItem.html"><strong>Prev</strong>15.6.2. p:listItem</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Tables-pcell.html"><strong>Next</strong>15.7.2. p:cell</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-iText_PDF_generation-iText_links.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-iText_PDF_generation-iText_links.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-iText_PDF_generation-iText_links.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>15.10. iText links</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="Seam_Reference_Guide-iText_PDF_generation.html" title="Chapter 15. iText PDF generation" /><link rel="prev" href="Seam_Reference_Guide-iText_PDF_generation-Configuring_iText.html" title="15.9. Configuring iText" /><link rel="next" href="Seam_Reference_Guide-Email.html" title="Chapter 16. Email" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss!
 .com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-iText_PDF_generation-Configuring_iText.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Email.html"><strong>Next</strong></a></li></ul><div class="section" title="15.10. iText links"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-iText_PDF_generation-iText_links">15.10. iText links</h2></div></div></div><div class="para">
+			For further information on iText, see:
+		</div><div class="para">
+			<div class="itemizedlist"><ul><li class="listitem"><div class="para">
+						<a href="http://www.lowagie.com/iText/">iText Home Page</a>
+					</div></li><li class="listitem"><div class="para">
+						<a href="http://www.manning.com/lowagie/">iText in Action</a>
+					</div></li></ul></div>
+		</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-iText_PDF_generation-Configuring_iText.html"><strong>Prev</strong>15.9. Configuring iText</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Email.html"><strong>Next</strong>Chapter 16. Email</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-iText_PDF_generation.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-iText_PDF_generation.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/Seam_Reference_Guide-iText_PDF_generation.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 15. iText PDF generation</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="index.html" title="Seam Reference Guide CP07" /><link rel="prev" href="Seam_Reference_Guide-Seam_Text-Entering_HTML.html" title="14.4. Entering HTML" /><link rel="next" href="Seam_Reference_Guide-iText_PDF_generation-Creating_a_document.html" title="15.2. Creating a document" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><!
 img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_Text-Entering_HTML.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-iText_PDF_generation-Creating_a_document.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="chapter" title="Chapter 15. iText PDF generation" lang="en-US"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-iText_PDF_generation">Chapter 15. iText PDF generation</h2></div></div></div><div class="toc"><dl><dt><span class="section"><a href="Seam_Reference_Guide-iText_PDF_generation.html#Seam_Reference_Guide-iText_PDF_generation-Using_PDF_Support">15.1. Using PDF Support</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-iText_PDF_generation-Creating_a_document.html">15.2. Creating a document</a></span></dt><dd><dl><dt><span clas!
 s="section"><a href="Seam_Reference_Guide-iText_PDF_generation!
 -Creatin
g_a_document.html#Seam_Reference_Guide-Creating_a_document-pdocument">15.2.1. p:document</a></span></dt></dl></dd><dt><span class="section"><a href="Seam_Reference_Guide-iText_PDF_generation-Basic_Text_Elements.html">15.3. Basic Text Elements</a></span></dt><dd><dl><dt><span class="section"><a href="Seam_Reference_Guide-iText_PDF_generation-Basic_Text_Elements.html#Seam_Reference_Guide-Basic_Text_Elements-pparagraph">15.3.1. p:paragraph</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Basic_Text_Elements-ptext.html">15.3.2. p:text</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Basic_Text_Elements-pfont.html">15.3.3. p:font</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Basic_Text_Elements-pnewPage.html">15.3.4. p:newPage</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Basic_Text_Elements-pimage.html">15.3.5. p:image</a></span></dt><dt><span class="section"><a href="Seam_Reference_Gui!
 de-Basic_Text_Elements-panchor.html">15.3.6. p:anchor</a></span></dt></dl></dd><dt><span class="section"><a href="Seam_Reference_Guide-iText_PDF_generation-Headers_and_Footers.html">15.4. Headers and Footers</a></span></dt><dd><dl><dt><span class="section"><a href="Seam_Reference_Guide-iText_PDF_generation-Headers_and_Footers.html#Seam_Reference_Guide-Headers_and_Footers-pheader_and_pfooter">15.4.1. p:header and p:footer</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Headers_and_Footers-ppageNumber.html">15.4.2. p:pageNumber</a></span></dt></dl></dd><dt><span class="section"><a href="Seam_Reference_Guide-iText_PDF_generation-Chapters_and_Sections.html">15.5. Chapters and Sections</a></span></dt><dd><dl><dt><span class="section"><a href="Seam_Reference_Guide-iText_PDF_generation-Chapters_and_Sections.html#Seam_Reference_Guide-Chapters_and_Sections-pchapter_and_psection">15.5.1. p:chapter and p:section</a></span></dt><dt><span class="section"><a href="!
 Seam_Reference_Guide-Chapters_and_Sections-ptitle.html">15.5.2!
 . p:titl
e</a></span></dt></dl></dd><dt><span class="section"><a href="Seam_Reference_Guide-iText_PDF_generation-Lists.html">15.6. Lists</a></span></dt><dd><dl><dt><span class="section"><a href="Seam_Reference_Guide-iText_PDF_generation-Lists.html#Seam_Reference_Guide-Lists-plist">15.6.1. p:list</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Lists-plistItem.html">15.6.2. p:listItem</a></span></dt></dl></dd><dt><span class="section"><a href="Seam_Reference_Guide-iText_PDF_generation-Tables.html">15.7. Tables</a></span></dt><dd><dl><dt><span class="section"><a href="Seam_Reference_Guide-iText_PDF_generation-Tables.html#Seam_Reference_Guide-Tables-ptable">15.7.1. p:table</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Tables-pcell.html">15.7.2. p:cell</a></span></dt></dl></dd><dt><span class="section"><a href="Seam_Reference_Guide-iText_PDF_generation-Document_Constants.html">15.8. Document Constants</a></span></dt><dd><dl><dt><span class="!
 section"><a href="Seam_Reference_Guide-iText_PDF_generation-Document_Constants.html#Seam_Reference_Guide-Document_Constants-Color_Values">15.8.1. Color Values</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Document_Constants-Alignment_Values.html">15.8.2. Alignment Values</a></span></dt></dl></dd><dt><span class="section"><a href="Seam_Reference_Guide-iText_PDF_generation-Configuring_iText.html">15.9. Configuring iText</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-iText_PDF_generation-iText_links.html">15.10. iText links</a></span></dt></dl></div><div class="para">
+		Seam now includes an component set for generating documents using iText. The primary focus of Seam's iText document support is for the generation of PDF doucuments, but Seam also offers basic support for RTF document generation.
+	</div><div class="section" title="15.1. Using PDF Support"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-iText_PDF_generation-Using_PDF_Support">15.1. Using PDF Support</h2></div></div></div><div class="para">
+			iText support is provided by <code class="literal">jboss-seam-pdf.jar</code>. This JAR contains the iText JSF controls, which are used to construct views that can render to PDF, and the DocumentStore component, which serves the rendered documents to the user. To include PDF support in your application, included <code class="literal">jboss-seam-pdf.jar</code> in your <code class="literal">WEB-INF/lib</code> directory along with the iText JAR file. There is no further configuration needed to use Seam's iText support.
+		</div><div class="para">
+			The Seam iText module requires the use of Facelets as the view technology. Future versions of the library may also support the use of JSP. Additionally, it requires the use of the seam-ui package.
+		</div><div class="para">
+			The <code class="literal">examples/itext</code> project contains an example of the PDF support in action. It demonstrates proper deployment packaging, and it contains a number examples that demonstrate the key PDF generation features current supported.
+		</div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_Text-Entering_HTML.html"><strong>Prev</strong>14.4. Entering HTML</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-iText_PDF_generation-Creating_a_document.html"><strong>Next</strong>15.2. Creating a document</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/appe-Publican-Revision_History.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/appe-Publican-Revision_History.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/appe-Publican-Revision_History.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Appendix A. Revision History</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="index.html" title="Seam Reference Guide CP07" /><link rel="prev" href="Seam_Reference_Guide-Reverse_engineering_and_code_generation-Generating_and_using_the_code.html" title="27.2.3.3. Generating and using the code" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation!
  Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Reverse_engineering_and_code_generation-Generating_and_using_the_code.html"><strong>Prev</strong></a></li><li class="next"></li></ul><div xml:lang="en-US" class="appendix" title="Appendix A. Revision History" lang="en-US"><div class="titlepage"><div><div><h1 id="appe-Publican-Revision_History" class="title">Revision History</h1></div></div></div><div class="para">
+		<div class="revhistory"><table border="0" width="100%" summary="Revision history"><tr><th align="left" valign="top" colspan="3"><b>Revision History</b></th></tr><tr><td align="left">Revision 1.0</td><td align="left">Thu Nov 19 2009</td><td align="left"><span class="author"><span class="firstname">Laura</span> <span class="surname">Bailey</span></span></td></tr><tr><td align="left" colspan="3">
+					<table border="0" summary="Simple list" class="simplelist"><tr><td>Initial draft.</td></tr></table>
+				</td></tr></table></div>
+	</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Reverse_engineering_and_code_generation-Generating_and_using_the_code.html"><strong>Prev</strong>27.2.3.3. Generating and using the code</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/cache.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/cache.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/cache.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 18. Caching</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="index.html" title="Seam Reference Guide CP07" /><link rel="prev" href="Seam_Reference_Guide-Messaging_in_Seam-Receiving_messages_in_the_client.html" title="17.2.4. Receiving messages in the client" /><link rel="next" href="ch18s02.html" title="18.2. Page fragment caching" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_C!
 ontent/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Messaging_in_Seam-Receiving_messages_in_the_client.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="ch18s02.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="chapter" title="Chapter 18. Caching" lang="en-US"><div class="titlepage"><div><div><h2 class="title" id="cache">Chapter 18. Caching</h2></div></div></div><div class="toc"><dl><dt><span class="section"><a href="cache.html#id2734450">18.1. Using JBossCache in Seam</a></span></dt><dt><span class="section"><a href="ch18s02.html">18.2. Page fragment caching</a></span></dt></dl></div><div class="para">
+		In almost all enterprise applications, the database is the primary bottleneck, and the least scalable tier of the runtime environment. So anything we can possibly do to share the database <span class="emphasis"><em>less often</em></span> is worth doing.
+	</div><div class="para">
+		This calls for a cache. Well, not just one cache. A well designed Seam application will feature a rich, multi-layered caching strategy that impacts every layer of the application:
+	</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+				The database has its own cache. This is particularly important, but cannot scale like a cache in the application tier.
+			</div></li><li class="listitem"><div class="para">
+				Your ORM solution (Hibernate, or some other JPA implementation) has a second-level cache of data from the database. This is a very powerful capability, but is often misused. In a clustered environment, keeping the data in the cache transactionally consistent across the whole cluster, and with the database, is quite expensive. It makes most sense for data which is shared between many users, and is updated rarely. 
+			</div></li><li class="listitem"><div class="para">
+				The Seam conversation context is a cache of conversational state. Components you put into the conversation context can hold and cache state relating to the current user interaction.
+			</div></li><li class="listitem"><div class="para">
+				In particular, the Seam-managed persistence context (or an extended EJB container-managed persistence context associated with a conversation-scoped stateful session bean) acts as a cache of data that has been read in the current conversation. This cache tends to have a pretty high hitrate. Seam optimizes the replication of Seam-managed persistence contexts in a clustered environment, and there is no requirement for transactional consistency with the database (optimistic locking is sufficient) so you do not need to worry too much about the performance implications of this cache, unless you read thousands of objects into a single persistence context.
+			</div></li><li class="listitem"><div class="para">
+				The application can cache non-transactional state in the Seam application context. State kept in the application context is of course not visible to other nodes in the cluster.
+			</div></li><li class="listitem"><div class="para">
+				The application can cache transactional state using the Seam <code class="literal">pojoCache</code> component, which integrates JBossCache into the Seam environment. This state will be visible to other nodes if you run JBoss cache in a clustered mode.
+			</div></li><li class="listitem"><div class="para">
+				Finally, Seam lets you cache rendered fragments of a JSF page. Unlike the ORM second-level cache, this cache is not automatically invalidated when data changes, so you need to write application code to perform explicit invalidation, or set appropriate expiration policies.
+			</div></li></ul></div><div class="para">
+		For more information about the second-level cache, you will need to refer to the documentation of your ORM solution, since this is an extremely complex topic. In this section we will discuss the use of JBossCache directly, via the <code class="literal">pojoCache</code> component, or as the page fragment cache, via the <code class="literal">&lt;s:cache&gt;</code> control.
+	</div><div class="section" title="18.1. Using JBossCache in Seam"><div class="titlepage"><div><div><h2 class="title" id="id2734450">18.1. Using JBossCache in Seam</h2></div></div></div><div class="para">
+			The built-in <code class="literal">pojoCache</code> component manages an instance of <code class="literal">org.jboss.cache.aop.PojoCache</code>. You can safely put any immutable Java object in the cache, and it will be replicated across the cluster (assuming that replication is enabled). If you want to keep mutable objects in the cache, you will need to run the JBoss Cache bytecode preprocessor to ensure that changes to the objects will be automatically detected and replicated.
+		</div><div class="para">
+			To use <code class="literal">pojoCache</code>, all you need to do is put the JBossCache jars in the classpath, and provide a resource named <code class="literal">treecache.xml</code> with an appropriate cache configuration. JBoss Cache has many scary and confusing configuration settings, so we won't discuss them here. Please refer to the JBoss Cache documentation for more information.
+		</div><div class="para">
+			You can find a sample <code class="literal">treecache.xml</code> in <code class="literal">examples/blog/resources/treecache.xml</code>.
+		</div><div class="para">
+			For an EAR deployment of Seam, we recommend that the JBoss Cache jars and configuration go directly into the EAR. Make sure you place both <code class="literal">jboss-cache.jar</code> and <code class="literal">jgroups.jar</code> in your EAR's lib folder.
+		</div><div class="para">
+			Now you can inject the cache into any Seam component:
+		</div><pre class="programlisting JAVA">@Name("chatroom")
+public class Chatroom {
+    @In PojoCache pojoCache;
+    
+    public void join(String username) {
+      try
+      {
+         Set&lt;String&gt; userList = (Set&lt;String&gt;) pojoCache.get("chatroom", "userList");
+         if (userList==null) 
+         {
+            userList = new HashSet&lt;String&gt;();
+            pojoCache.put("chatroom", "userList", userList);
+         }
+         userList.put(username);
+      }
+      catch (CacheException ce)
+      {
+         throw new RuntimeException(ce);
+      }
+    }
+}
+</pre><div class="para">
+			If you want to have multiple JBoss Cache configurations in your application, use <code class="literal">components.xml</code>:
+		</div><pre class="programlisting JAVA">&lt;core:pojo-cache name="myCache" cfg-resource-name="myown/cache.xml"/&gt;
+</pre></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Messaging_in_Seam-Receiving_messages_in_the_client.html"><strong>Prev</strong>17.2.4. Receiving messages in the client</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="ch18s02.html"><strong>Next</strong>18.2. Page fragment caching</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/ch11s02.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/ch11s02.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/ch11s02.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>11.2. Using rules from a Seam component</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="drools.html" title="Chapter 11. Seam and JBoss Rules" /><link rel="prev" href="drools.html" title="Chapter 11. Seam and JBoss Rules" /><link rel="next" href="ch11s03.html" title="11.3. Using rules from a jBPM process definition" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_ri!
 ght.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="drools.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="ch11s03.html"><strong>Next</strong></a></li></ul><div class="section" title="11.2. Using rules from a Seam component"><div class="titlepage"><div><div><h2 class="title" id="id2807312">11.2. Using rules from a Seam component</h2></div></div></div><div class="para">
+			We can now inject our <code class="literal">WorkingMemory</code> into any Seam component, assert facts, and fire rules:
+		</div><pre class="programlisting JAVA">@In WorkingMemory policyPricingWorkingMemory;
+
+ at In Policy policy;
+ at In Customer customer;
+
+public void pricePolicy() throws FactException
+{
+    policyPricingWorkingMemory.assertObject(policy);
+    policyPricingWorkingMemory.assertObject(customer);
+    policyPricingWorkingMemory.fireAllRules();
+}
+</pre></div><ul class="docnav"><li class="previous"><a accesskey="p" href="drools.html"><strong>Prev</strong>Chapter 11. Seam and JBoss Rules</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="ch11s03.html"><strong>Next</strong>11.3. Using rules from a jBPM process definition</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/ch11s03.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/ch11s03.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/ch11s03.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>11.3. Using rules from a jBPM process definition</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="drools.html" title="Chapter 11. Seam and JBoss Rules" /><link rel="prev" href="ch11s02.html" title="11.2. Using rules from a Seam component" /><link rel="next" href="Seam_Reference_Guide-Security.html" title="Chapter 12. Security" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/imag!
 es/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="ch11s02.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Security.html"><strong>Next</strong></a></li></ul><div class="section" title="11.3. Using rules from a jBPM process definition"><div class="titlepage"><div><div><h2 class="title" id="id2688468">11.3. Using rules from a jBPM process definition</h2></div></div></div><div class="para">
+			You can even allow a rule base to act as a jBPM action handler, decision handler, or assignment handler—in either a pageflow or business process definition.
+		</div><pre class="programlisting XML">&lt;decision name="approval"&gt;
+         
+    &lt;handler class="org.jboss.seam.drools.DroolsDecisionHandler"&gt;
+        &lt;workingMemoryName&gt;orderApprovalRulesWorkingMemory&lt;/workingMemoryName&gt;
+        &lt;assertObjects&gt;
+            &lt;element&gt;#{customer}&lt;/element&gt;
+            &lt;element&gt;#{order}&lt;/element&gt;
+            &lt;element&gt;#{order.lineItems}&lt;/element&gt;
+        &lt;/assertObjects&gt;
+    &lt;/handler&gt;
+    
+    &lt;transition name="approved" to="ship"&gt;
+        &lt;action class="org.jboss.seam.drools.DroolsActionHandler"&gt;
+            &lt;workingMemoryName&gt;shippingRulesWorkingMemory&lt;/workingMemoryName&gt;
+            &lt;assertObjects&gt;
+                &lt;element&gt;#{customer}&lt;/element&gt;
+                &lt;element&gt;#{order}&lt;/element&gt;
+                &lt;element&gt;#{order.lineItems}&lt;/element&gt;
+            &lt;/assertObjects&gt;
+        &lt;/action&gt;
+    &lt;/transition&gt;
+    
+    &lt;transition name="rejected" to="cancelled"/&gt;
+    
+&lt;/decision&gt;
+</pre><div class="para">
+			The <code class="literal">&lt;assertObjects&gt;</code> element specifies EL expressions that return an object or collection of objects to be asserted as facts into the <code class="literal">WorkingMemory</code>.
+		</div><div class="para">
+			There is also support for using Drools for jBPM task assignments:
+		</div><pre class="programlisting XML">&lt;task-node name="review"&gt;
+    &lt;task name="review" description="Review Order"&gt;
+        &lt;assignment handler="org.jboss.seam.drools.DroolsAssignmentHandler"&gt;
+            &lt;workingMemoryName&gt;orderApprovalRulesWorkingMemory&lt;/workingMemoryName&gt;
+            &lt;assertObjects&gt;
+                &lt;element&gt;#{actor}&lt;/element&gt;
+                &lt;element&gt;#{customer}&lt;/element&gt;
+                &lt;element&gt;#{order}&lt;/element&gt;
+                &lt;element&gt;#{order.lineItems}&lt;/element&gt;
+            &lt;/assertObjects&gt;
+        &lt;/assignment&gt;
+    &lt;/task&gt;
+    &lt;transition name="rejected" to="cancelled"/&gt;
+    &lt;transition name="approved" to="approved"/&gt;
+&lt;/task-node&gt;
+</pre><div class="para">
+			Certain objects are available to the rules as Drools globals, namely the jBPM <code class="literal">Assignable</code>, as <code class="literal">assignable</code> and a Seam <code class="literal">Decision</code> object, as <code class="literal">decision</code>. Rules which handle decisions should call <code class="literal">decision.setOutcome("result")</code> to determine the result of the decision. Rules which perform assignments should set the actor id using the <code class="literal">Assignable</code>.
+		</div><pre class="programlisting">package org.jboss.seam.examples.shop
+
+import org.jboss.seam.drools.Decision
+
+global Decision decision
+
+rule "Approve Order For Loyal Customer"
+  when
+    Customer( loyaltyStatus == "GOLD" )
+    Order( totalAmount &lt;= 10000 )
+  then
+    decision.setOutcome("approved");
+end
+</pre><pre class="programlisting">package org.jboss.seam.examples.shop
+
+import org.jbpm.taskmgmt.exe.Assignable
+
+global Assignable assignable
+
+rule "Assign Review For Small Order"
+  when
+    Order( totalAmount &lt;= 100 )
+  then
+    assignable.setPooledActors( new String[] {"reviewers"} );
+end
+</pre></div><ul class="docnav"><li class="previous"><a accesskey="p" href="ch11s02.html"><strong>Prev</strong>11.2. Using rules from a Seam component</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Security.html"><strong>Next</strong>Chapter 12. Security</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/ch18s02.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/ch18s02.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/ch18s02.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>18.2. Page fragment caching</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="cache.html" title="Chapter 18. Caching" /><link rel="prev" href="cache.html" title="Chapter 18. Caching" /><link rel="next" href="Seam_Reference_Guide-Remoting.html" title="Chapter 19. Remoting" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><!
 ul class="docnav"><li class="previous"><a accesskey="p" href="cache.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Remoting.html"><strong>Next</strong></a></li></ul><div class="section" title="18.2. Page fragment caching"><div class="titlepage"><div><div><h2 class="title" id="id2827633">18.2. Page fragment caching</h2></div></div></div><div class="para">
+			The most interesting use of JBoss Cache is the <code class="literal">&lt;s:cache&gt;</code> tag, Seam's solution to the problem of page fragment caching in JSF. <code class="literal">&lt;s:cache&gt;</code> uses <code class="literal">pojoCache</code> internally, so you need to follow the steps listed above before you can use it. 
+		</div><div class="para">
+			<code class="literal">&lt;s:cache&gt;</code> is used for caching some rendered content which changes rarely. For example, the welcome page of our blog displays the recent blog entries:
+		</div><pre class="programlisting XHTML">&lt;s:cache key="recentEntries-#{blog.id}" region="welcomePageFragments"&gt;
+   &lt;h:dataTable value="#{blog.recentEntries}" var="blogEntry"&gt;
+      &lt;h:column&gt;
+         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;
+         &lt;div&gt;
+            &lt;s:formattedText value="#{blogEntry.body}"/&gt;
+         &lt;/div&gt;
+      &lt;/h:column&gt;
+   &lt;/h:dataTable&gt;
+&lt;/s:cache&gt;
+</pre><div class="para">
+			The <code class="literal">key</code> will let you have multiple cached versions of each page fragment. In this case, there is one cached version per blog. The <code class="literal">region</code> determines the JBossCache node that all version will be stored in. Different nodes may have different expiry policies (setup during the previous steps). 
+		</div><div class="para">
+			The issue with the <code class="literal">&lt;s:cache&gt;</code> tag is that it is unable to recognize when the underlying data changes (for example, when the blogger posts a new entry). So you need to evict the cached fragment manually:
+		</div><pre class="programlisting JAVA">public void post() {
+    ...
+    entityManager.persist(blogEntry);
+    pojoCache.remove("welcomePageFragments", "recentEntries-" + blog.getId() );
+}
+</pre><div class="para">
+			Alternatively, if it is not critical that changes are immediately visible to the user, you could set a short expiry time on the JbossCache node.
+		</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="cache.html"><strong>Prev</strong>Chapter 18. Caching</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Remoting.html"><strong>Next</strong>Chapter 19. Remoting</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/ch23s02.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/ch23s02.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/ch23s02.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>23.2. Utility components</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="components.html" title="Chapter 23. Built-in Seam components" /><link rel="prev" href="components.html" title="Chapter 23. Built-in Seam components" /><link rel="next" href="ch23s03.html" title="23.3. Components for internationalization and themes" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/ima!
 ge_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="components.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="ch23s03.html"><strong>Next</strong></a></li></ul><div class="section" title="23.2. Utility components"><div class="titlepage"><div><div><h2 class="title" id="id2803914">23.2. Utility components</h2></div></div></div><div class="para">
+			These components are merely useful.
+		</div><div class="variablelist"><dl><dt><span class="term"><code class="literal">org.jboss.seam.faces.facesMessages</code></span></dt><dd><div class="para">
+						Allows faces success messages to propagate across a browser redirect.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">add(FacesMessage facesMessage)</code> — add a faces message, which will be displayed during the next render response phase that occurs in the current conversation.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">add(String messageTemplate)</code> — add a faces message, rendered from the given message template which may contain EL expressions.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">add(Severity severity, String messageTemplate)</code> — add a faces message, rendered from the given message template which may contain EL expressions.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">addFromResourceBundle(String key)</code> — add a faces message, rendered from a message template defined in the Seam resource bundle which may contain EL expressions.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">addFromResourceBundle(Severity severity, String key)</code> — add a faces message, rendered from a message template defined in the Seam resource bundle which may contain EL expressions.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">clear()</code> — clear all messages.
+							</div></li></ul></div></dd><dt><span class="term"><code class="literal">org.jboss.seam.faces.redirect</code></span></dt><dd><div class="para">
+						A convenient API for performing redirects with parameters (this is especially useful for bookmarkable search results screens).
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">redirect.viewId</code> — the JSF view id to redirect to.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">redirect.conversationPropagationEnabled</code> — determines whether the conversation will propagate across the redirect.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">redirect.parameters</code> — a map of request parameter name to value, to be passed in the redirect request.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">execute()</code> — perform the redirect immediately.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">captureCurrentRequest()</code> — stores the view id and request parameters of the current GET request (in the conversation context), for later use by calling <code class="literal">execute()</code>.
+							</div></li></ul></div></dd><dt><span class="term"><code class="literal">org.jboss.seam.faces.httpError</code></span></dt><dd><div class="para">
+						A convenient API for sending HTTP errors.
+					</div></dd><dt><span class="term"><code class="literal">org.jboss.seam.core.events</code></span></dt><dd><div class="para">
+						An API for raising events that can be observed via <code class="literal">@Observer</code> methods, or method bindings in <code class="literal">components.xml</code>.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">raiseEvent(String type)</code> — raise an event of a particular type and distribute to all observers.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">raiseAsynchronousEvent(String type)</code> — raise an event to be processed asynchronously by the EJB3 timer service.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">raiseTimedEvent(String type, ....)</code> — schedule an event to be processed asynchronously by the EJB3 timer service.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">addListener(String type, String methodBinding)</code> — add an observer for a particular event type.
+							</div></li></ul></div></dd><dt><span class="term"><code class="literal">org.jboss.seam.core.interpolator</code></span></dt><dd><div class="para">
+						An API for interpolating the values of JSF EL expressions in Strings.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">interpolate(String template)</code> — scan the template for JSF EL expressions of the form <code class="literal">#{...}</code> and replace them with their evaluated values.
+							</div></li></ul></div></dd><dt><span class="term"><code class="literal">org.jboss.seam.core.expressions</code></span></dt><dd><div class="para">
+						An API for creating value and method bindings.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">createValueBinding(String expression)</code> — create a value binding object.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">createMethodBinding(String expression)</code> — create a method binding object.
+							</div></li></ul></div></dd><dt><span class="term"><code class="literal">org.jboss.seam.core.pojoCache</code></span></dt><dd><div class="para">
+						Manager component for a JBoss Cache <code class="literal">PojoCache</code> instance.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">pojoCache.cfgResourceName</code> — the name of the configuration file. Default to <code class="literal">treecache.xml</code>.
+							</div></li></ul></div></dd></dl></div><div class="para">
+			All of these components are always installed.
+		</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="components.html"><strong>Prev</strong>Chapter 23. Built-in Seam components</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="ch23s03.html"><strong>Next</strong>23.3. Components for internationalization and the...</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/ch23s03.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/ch23s03.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/ch23s03.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>23.3. Components for internationalization and themes</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="components.html" title="Chapter 23. Built-in Seam components" /><link rel="prev" href="ch23s02.html" title="23.2. Utility components" /><link rel="next" href="ch23s04.html" title="23.4. Components for controlling conversations" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/imag!
 es/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="ch23s02.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="ch23s04.html"><strong>Next</strong></a></li></ul><div class="section" title="23.3. Components for internationalization and themes"><div class="titlepage"><div><div><h2 class="title" id="id2773266">23.3. Components for internationalization and themes</h2></div></div></div><div class="para">
+			The next group of components make it easy to build internationalized user interfaces using Seam.
+		</div><div class="variablelist"><dl><dt><span class="term"><code class="literal">org.jboss.seam.core.locale</code></span></dt><dd><div class="para">
+						The Seam locale.
+					</div></dd><dt><span class="term"><code class="literal">org.jboss.seam.international.timezone</code></span></dt><dd><div class="para">
+						The Seam timezone. The timezone is session scoped.
+					</div></dd><dt><span class="term"><code class="literal">org.jboss.seam.core.resourceBundle</code></span></dt><dd><div class="para">
+						The Seam resource bundle. The resource bundle is stateless. The Seam resource bundle performs a depth-first search for keys in a list of Java resource bundles.
+					</div></dd><dt><span class="term"><code class="literal">org.jboss.seam.core.resourceLoader</code></span></dt><dd><div class="para">
+						The resource loader provides access to application resources and resource bundles.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">resourceLoader.bundleNames</code> — the names of the Java resource bundles to search when the Seam resource bundle is used. Default to <code class="literal">messages</code>.
+							</div></li></ul></div></dd><dt><span class="term"><code class="literal">org.jboss.seam.international.localeSelector</code></span></dt><dd><div class="para">
+						Supports selection of the locale either at configuration time, or by the user at runtime.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">select()</code> — select the specified locale.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">localeSelector.locale</code> — the actual <code class="literal">java.util.Locale</code>.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">localeSelector.localeString</code> — the string representation of the locale.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">localeSelector.language</code> — the language for the specified locale.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">localeSelector.country</code> — the country for the specified locale.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">localeSelector.variant</code> — the variant for the specified locale.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">localeSelector.supportedLocales</code> — a list of <code class="literal">SelectItem</code>s representing the supported locales listed in <code class="literal">jsf-config.xml</code>.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">localeSelector.cookieEnabled</code> — specifies that the locale selection should be persisted via a cookie.
+							</div></li></ul></div></dd><dt><span class="term"><code class="literal">org.jboss.seam.international.timezoneSelector</code></span></dt><dd><div class="para">
+						Supports selection of the timezone either at configuration time, or by the user at runtime.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">select()</code> — select the specified locale.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">timezoneSelector.timezone</code> — the actual <code class="literal">java.util.TimeZone</code>.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">timezoneSelector.timeZoneId</code> — the string representation of the timezone.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">timezoneSelector.cookieEnabled</code> — specifies that the timezone selection should be persisted via a cookie.
+							</div></li></ul></div></dd><dt><span class="term"><code class="literal">org.jboss.seam.international.messages</code></span></dt><dd><div class="para">
+						A map containing internationalized messages rendered from message templates defined in the Seam resource bundle.
+					</div></dd><dt><span class="term"><code class="literal">org.jboss.seam.theme.themeSelector</code></span></dt><dd><div class="para">
+						Supports selection of the theme either at configuration time, or by the user at runtime.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">select()</code> — select the specified theme.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">theme.availableThemes</code> — the list of defined themes.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">themeSelector.theme</code> — the selected theme.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">themeSelector.themes</code> — a list of <code class="literal">SelectItem</code>s representing the defined themes.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">themeSelector.cookieEnabled</code> — specifies that the theme selection should be persisted via a cookie.
+							</div></li></ul></div></dd><dt><span class="term"><code class="literal">org.jboss.seam.theme.theme</code></span></dt><dd><div class="para">
+						A map containing theme entries.
+					</div></dd></dl></div><div class="para">
+			All of these components are always installed.
+		</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="ch23s02.html"><strong>Prev</strong>23.2. Utility components</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="ch23s04.html"><strong>Next</strong>23.4. Components for controlling conversations</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/ch23s04.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/ch23s04.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/ch23s04.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>23.4. Components for controlling conversations</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="components.html" title="Chapter 23. Built-in Seam components" /><link rel="prev" href="ch23s03.html" title="23.3. Components for internationalization and themes" /><link rel="next" href="ch23s05.html" title="23.5. jBPM-related components" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content!
 /images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="ch23s03.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="ch23s05.html"><strong>Next</strong></a></li></ul><div class="section" title="23.4. Components for controlling conversations"><div class="titlepage"><div><div><h2 class="title" id="id2765191">23.4. Components for controlling conversations</h2></div></div></div><div class="para">
+			The next group of components allow control of conversations by the application or user interface.
+		</div><div class="variablelist"><dl><dt><span class="term"><code class="literal">org.jboss.seam.core.conversation</code></span></dt><dd><div class="para">
+						API for application control of attributes of the current Seam conversation.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">getId()</code> — returns the current conversation ID
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">isNested()</code> — is the current conversation a nested conversation?
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">isLongRunning()</code> — is the current conversation a long-running conversation?
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">getId()</code> — returns the current conversation ID
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">getParentId()</code> — returns the conversation ID of the parent conversation
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">getRootId()</code> — returns the conversation ID of the root conversation
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">setTimeout(int timeout)</code> — sets the timeout for the current conversation
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">setViewId(String outcome)</code> — sets the view id to be used when switching back to the current conversation from the conversation switcher, conversation list, or breadcrumbs.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">setDescription(String description)</code> — sets the description of the current conversation to be displayed in the conversation switcher, conversation list, or breadcrumbs.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">redirect()</code> — redirect to the last well-defined view id for this conversation (useful after login challenges).
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">leave()</code> — exit the scope of this conversation, without actually ending the conversation.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">begin()</code> — begin a long-running conversation (equivalent to <code class="literal">@Begin</code>).
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">beginPageflow(String pageflowName)</code> — begin a long-running conversation with a pageflow (equivalent to <code class="literal">@Begin(pageflow="...")</code>).
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">end()</code> — end a long-running conversation (equivalent to <code class="literal">@End</code>).
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">pop()</code> — pop the conversation stack, returning to the parent conversation.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">root()</code> — return to the root conversation of the conversation stack.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">changeFlushMode(FlushModeType flushMode)</code> — change the flush mode of the conversation.
+							</div></li></ul></div></dd><dt><span class="term"><code class="literal">org.jboss.seam.core.conversationList</code></span></dt><dd><div class="para">
+						Manager component for the conversation list.
+					</div></dd><dt><span class="term"><code class="literal">org.jboss.seam.core.conversationStack</code></span></dt><dd><div class="para">
+						Manager component for the conversation stack (breadcrumbs).
+					</div></dd><dt><span class="term"><code class="literal">org.jboss.seam.faces.switcher</code></span></dt><dd><div class="para">
+						The conversation switcher.
+					</div></dd></dl></div><div class="para">
+			All of these components are always installed.
+		</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="ch23s03.html"><strong>Prev</strong>23.3. Components for internationalization and the...</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="ch23s05.html"><strong>Next</strong>23.5. jBPM-related components</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/ch23s05.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/ch23s05.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/ch23s05.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>23.5. jBPM-related components</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="components.html" title="Chapter 23. Built-in Seam components" /><link rel="prev" href="ch23s04.html" title="23.4. Components for controlling conversations" /><link rel="next" href="ch23s06.html" title="23.6. Security-related components" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right!
 .png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="ch23s04.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="ch23s06.html"><strong>Next</strong></a></li></ul><div class="section" title="23.5. jBPM-related components"><div class="titlepage"><div><div><h2 class="title" id="id2765528">23.5. jBPM-related components</h2></div></div></div><div class="para">
+			These components are for use with jBPM.
+		</div><div class="variablelist"><dl><dt><span class="term"><code class="literal">org.jboss.seam.pageflow.pageflow</code></span></dt><dd><div class="para">
+						API control of Seam pageflows.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">isInProcess()</code> — returns <code class="literal">true</code> if there is currently a pageflow in process
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">getProcessInstance()</code> — returns jBPM <code class="literal">ProcessInstance</code> for the current pageflow
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">begin(String pageflowName)</code> — begin a pageflow in the context of the current conversation
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">reposition(String nodeName)</code> — reposition the current pageflow to a particular node
+							</div></li></ul></div></dd><dt><span class="term"><code class="literal">org.jboss.seam.bpm.actor</code></span></dt><dd><div class="para">
+						API for application control of attributes of the jBPM actor associated with the current session.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">setId(String actorId)</code> — sets the jBPM actor id of the current user.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">getGroupActorIds()</code> — returns a <code class="literal">Set</code> to which jBPM actor ids for the current users groups may be added.
+							</div></li></ul></div></dd><dt><span class="term"><code class="literal">org.jboss.seam.bpm.transition</code></span></dt><dd><div class="para">
+						API for application control of the jBPM transition for the current task.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">setName(String transitionName)</code> — sets the jBPM transition name to be used when the current task is ended via <code class="literal">@EndTask</code>.
+							</div></li></ul></div></dd><dt><span class="term"><code class="literal">org.jboss.seam.bpm.businessProcess</code></span></dt><dd><div class="para">
+						API for programmatic control of the association between the conversation and business process.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">businessProcess.taskId</code> — the id of the task associated with the current conversation.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">businessProcess.processId</code> — the id of the process associated with the current conversation.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">businessProcess.hasCurrentTask()</code> — is a task instance associated with the current conversation?
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">businessProcess.hasCurrentProcess()</code> — is a process instance associated with the current conversation.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">createProcess(String name)</code> — create an instance of the named process definition and associate it with the current conversation.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">startTask()</code> — start the task associated with the current conversation.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">endTask(String transitionName)</code> — end the task associated with the current conversation.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">resumeTask(Long id)</code> — associate the task with the given id with the current conversation.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">resumeProcess(Long id)</code> — associate the process with the given id with the current conversation.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">transition(String transitionName)</code> — trigger the transition.
+							</div></li></ul></div></dd><dt><span class="term"><code class="literal">org.jboss.seam.bpm.taskInstance</code></span></dt><dd><div class="para">
+						Manager component for the jBPM <code class="literal">TaskInstance</code>.
+					</div></dd><dt><span class="term"><code class="literal">org.jboss.seam.bpm.processInstance</code></span></dt><dd><div class="para">
+						Manager component for the jBPM <code class="literal">ProcessInstance</code>.
+					</div></dd><dt><span class="term"><code class="literal">org.jboss.seam.bpm.jbpmContext</code></span></dt><dd><div class="para">
+						Manager component for an event-scoped <code class="literal">JbpmContext</code>.
+					</div></dd><dt><span class="term"><code class="literal">org.jboss.seam.bpm.taskInstanceList</code></span></dt><dd><div class="para">
+						Manager component for the jBPM task list.
+					</div></dd><dt><span class="term"><code class="literal">org.jboss.seam.bpm.pooledTaskInstanceList</code></span></dt><dd><div class="para">
+						Manager component for the jBPM pooled task list.
+					</div></dd><dt><span class="term"><code class="literal">org.jboss.seam.bpm.taskInstanceListForType</code></span></dt><dd><div class="para">
+						Manager component for the jBPM task lists.
+					</div></dd><dt><span class="term"><code class="literal">org.jboss.seam.bpm.pooledTask</code></span></dt><dd><div class="para">
+						Action handler for pooled task assignment.
+					</div></dd><dt><span class="term"><code class="literal">org.jboss.seam.bpm.processInstanceFinder</code></span></dt><dd><div class="para">
+						Manager for the process instance task list.
+					</div></dd><dt><span class="term"><code class="literal">org.jboss.seam.bpm.processInstanceList</code></span></dt><dd><div class="para">
+						The process instance task list.
+					</div></dd></dl></div><div class="para">
+			All of these components are installed whenever the component <code class="literal">org.jboss.seam.bpm.jbpm</code> is installed.
+		</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="ch23s04.html"><strong>Prev</strong>23.4. Components for controlling conversations</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="ch23s06.html"><strong>Next</strong>23.6. Security-related components</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/ch23s06.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/ch23s06.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/ch23s06.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>23.6. Security-related components</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="components.html" title="Chapter 23. Built-in Seam components" /><link rel="prev" href="ch23s05.html" title="23.5. jBPM-related components" /><link rel="next" href="ch23s07.html" title="23.7. JMS-related components" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documen!
 tation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="ch23s05.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="ch23s07.html"><strong>Next</strong></a></li></ul><div class="section" title="23.6. Security-related components"><div class="titlepage"><div><div><h2 class="title" id="id2823630">23.6. Security-related components</h2></div></div></div><div class="para">
+			These components relate to web-tier security.
+		</div><div class="variablelist"><dl><dt><span class="term"><code class="literal">org.jboss.seam.web.userPrincipal</code></span></dt><dd><div class="para">
+						Manager component for the current user <code class="literal">Principal</code>.
+					</div></dd><dt><span class="term"><code class="literal">org.jboss.seam.web.isUserInRole</code></span></dt><dd><div class="para">
+						Allows JSF pages to choose to render a control, depending upon the roles available to the current principal. <code class="literal">&lt;h:commandButton value="edit" rendered="#{isUserInRole['admin']}"/&gt;</code>.
+					</div></dd></dl></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="ch23s05.html"><strong>Prev</strong>23.5. jBPM-related components</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="ch23s07.html"><strong>Next</strong>23.7. JMS-related components</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/ch23s07.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/ch23s07.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/ch23s07.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>23.7. JMS-related components</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="components.html" title="Chapter 23. Built-in Seam components" /><link rel="prev" href="ch23s06.html" title="23.6. Security-related components" /><link rel="next" href="components.mail.html" title="23.8. Mail-related components" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt=!
 "Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="ch23s06.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="components.mail.html"><strong>Next</strong></a></li></ul><div class="section" title="23.7. JMS-related components"><div class="titlepage"><div><div><h2 class="title" id="id2823692">23.7. JMS-related components</h2></div></div></div><div class="para">
+			These components are for use with managed <code class="literal">TopicPublisher</code>s and <code class="literal">QueueSender</code>s (see below).
+		</div><div class="variablelist"><dl><dt><span class="term"><code class="literal">org.jboss.seam.jms.queueSession</code></span></dt><dd><div class="para">
+						Manager component for a JMS <code class="literal">QueueSession</code> .
+					</div></dd><dt><span class="term"><code class="literal">org.jboss.seam.jms.topicSession</code></span></dt><dd><div class="para">
+						Manager component for a JMS <code class="literal">TopicSession</code> .
+					</div></dd></dl></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="ch23s06.html"><strong>Prev</strong>23.6. Security-related components</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="components.mail.html"><strong>Next</strong>23.8. Mail-related components</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/ch23s09.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/ch23s09.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/ch23s09.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>23.9. Infrastructural components</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="components.html" title="Chapter 23. Built-in Seam components" /><link rel="prev" href="components.mail.html" title="23.8. Mail-related components" /><link rel="next" href="ch23s10.html" title="23.10. Miscellaneous components" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" al!
 t="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="components.mail.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="ch23s10.html"><strong>Next</strong></a></li></ul><div class="section" title="23.9. Infrastructural components"><div class="titlepage"><div><div><h2 class="title" id="id2823918">23.9. Infrastructural components</h2></div></div></div><div class="para">
+			These components provide critical platform infrastructure. You can install a component which isn't installed by default by setting <code class="literal">install="true"</code> on the component in <code class="literal">components.xml</code>.
+		</div><div class="variablelist"><dl><dt><span class="term"><code class="literal">org.jboss.seam.core.init</code></span></dt><dd><div class="para">
+						Initialization settings for Seam. Always installed.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">org.jboss.seam.core.init.jndiPattern</code> — the JNDI pattern used for looking up session beans
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">org.jboss.seam.core.init.debug</code> — enable Seam debug mode. This should be set to false when in production. You may see errors if the system is placed under any load and debug is enabled.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">org.jboss.seam.core.init.clientSideConversations</code> — if set to <code class="literal">true</code>, Seam will save conversation context variables in the client instead of in the <code class="literal">HttpSession</code>.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">org.jboss.seam.core.init.userTransactionName</code> — the JNDI name to use when looking up the JTA <code class="literal">UserTransaction</code> object.
+							</div></li></ul></div></dd><dt><span class="term"><code class="literal">org.jboss.seam.core.manager</code></span></dt><dd><div class="para">
+						Internal component for Seam page and conversation context management. Always installed.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">org.jboss.seam.core.manager.conversationTimeout</code> — the conversation context timeout in milliseconds.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">org.jboss.seam.core.manager.concurrentRequestTimeout</code> — maximum wait time for a thread attempting to gain a lock on the long-running conversation context.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">org.jboss.seam.core.manager.conversationIdParameter</code> — the request parameter used to propagate the conversation id, default to <code class="literal">conversationId</code>.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">org.jboss.seam.core.manager.conversationIsLongRunningParameter</code> — the request parameter used to propagate information about whether the conversation is long-running, default to <code class="literal">conversationIsLongRunning</code>.
+							</div></li></ul></div></dd><dt><span class="term"><code class="literal">org.jboss.seam.navigation.pages</code></span></dt><dd><div class="para">
+						Internal component for Seam workspace management. Always installed.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">org.jboss.seam.navigation.pages.noConversationViewId</code> — global setting for the view id to redirect to when a conversation entry is not found on the server side.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">org.jboss.seam.navigation.pages.loginViewId</code> — global setting for the view id to redirect to when an unauthenticated user tries to access a protected view.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">org.jboss.seam.navigation.pages.httpPort</code> — global setting for the port to use when the http scheme is requested.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">org.jboss.seam.navigation.pages.httpsPort</code> — global setting for the port to use when the https scheme is requested.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">org.jboss.seam.navigation.pages.resources</code> — a list of resources to search for <code class="literal">pages.xml</code> style resources. Defaults to <code class="literal">WEB-INF/pages.xml</code>.
+							</div></li></ul></div></dd><dt><span class="term"><code class="literal">org.jboss.seam.bpm.jbpm</code></span></dt><dd><div class="para">
+						Bootstraps a <code class="literal">JbpmConfiguration</code>. Install as class <code class="literal">org.jboss.seam.bpm.Jbpm</code>.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">org.jboss.seam.bpm.jbpm.processDefinitions</code> — a list of resource names of jPDL files to be used for orchestration of business processes.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">org.jboss.seam.bpm.jbpm.pageflowDefinitions</code> — a list of resource names of jPDL files to be used for orchestration of conversation page flows.
+							</div></li></ul></div></dd><dt><span class="term"><code class="literal">org.jboss.seam.core.conversationEntries</code></span></dt><dd><div class="para">
+						Internal session-scoped component recording the active long-running conversations between requests.
+					</div></dd><dt><span class="term"><code class="literal">org.jboss.seam.faces.facesPage</code></span></dt><dd><div class="para">
+						Internal page-scoped component recording the conversation context associated with a page.
+					</div></dd><dt><span class="term"><code class="literal">org.jboss.seam.persistence.persistenceContexts</code></span></dt><dd><div class="para">
+						Internal component recording the persistence contexts which were used in the current conversation.
+					</div></dd><dt><span class="term"><code class="literal">org.jboss.seam.jms.queueConnection</code></span></dt><dd><div class="para">
+						Manages a JMS <code class="literal">QueueConnection</code>. Installed whenever managed managed <code class="literal">QueueSender</code> is installed.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">org.jboss.seam.jms.queueConnection.queueConnectionFactoryJndiName</code> — the JNDI name of a JMS <code class="literal">QueueConnectionFactory</code>. Default to <code class="literal">UIL2ConnectionFactory</code>
+							</div></li></ul></div></dd><dt><span class="term"><code class="literal">org.jboss.seam.jms.topicConnection</code></span></dt><dd><div class="para">
+						Manages a JMS <code class="literal">TopicConnection</code>. Installed whenever managed managed <code class="literal">TopicPublisher</code> is installed.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">org.jboss.seam.jms.topicConnection.topicConnectionFactoryJndiName</code> — the JNDI name of a JMS <code class="literal">TopicConnectionFactory</code>. Default to <code class="literal">UIL2ConnectionFactory</code>
+							</div></li></ul></div></dd><dt><span class="term"><code class="literal">org.jboss.seam.persistence.persistenceProvider</code></span></dt><dd><div class="para">
+						Abstraction layer for non-standardized features of JPA provider.
+					</div></dd><dt><span class="term"><code class="literal">org.jboss.seam.core.validators</code></span></dt><dd><div class="para">
+						Caches instances of Hibernate Validator <code class="literal">ClassValidator</code>.
+					</div></dd><dt><span class="term"><code class="literal">org.jboss.seam.faces.validation</code></span></dt><dd><div class="para">
+						Allows the application to determine whether validation failed or was successful.
+					</div></dd><dt><span class="term"><code class="literal">org.jboss.seam.debug.introspector</code></span></dt><dd><div class="para">
+						Support for the Seam Debug Page.
+					</div></dd><dt><span class="term"><code class="literal">org.jboss.seam.debug.contexts</code></span></dt><dd><div class="para">
+						Support for the Seam Debug Page.
+					</div></dd><dt><span class="term"><code class="literal">org.jboss.seam.exception.exceptions</code></span></dt><dd><div class="para">
+						Internal component for exception handling.
+					</div></dd><dt><span class="term"><code class="literal">org.jboss.seam.transaction.transaction</code></span></dt><dd><div class="para">
+						API for controlling transactions and abstracting the underlying transaction management implementation behind a JTA-compatible interface.
+					</div></dd><dt><span class="term"><code class="literal">org.jboss.seam.faces.safeActions</code></span></dt><dd><div class="para">
+						Decides if an action expression in an incoming URL is safe. This is done by checking that the action expression exists in the view.
+					</div></dd></dl></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="components.mail.html"><strong>Prev</strong>23.8. Mail-related components</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="ch23s10.html"><strong>Next</strong>23.10. Miscellaneous components</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/ch23s10.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/ch23s10.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/ch23s10.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>23.10. Miscellaneous components</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="components.html" title="Chapter 23. Built-in Seam components" /><link rel="prev" href="ch23s09.html" title="23.9. Infrastructural components" /><link rel="next" href="ch23s11.html" title="23.11. Special components" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documenta!
 tion Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="ch23s09.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="ch23s11.html"><strong>Next</strong></a></li></ul><div class="section" title="23.10. Miscellaneous components"><div class="titlepage"><div><div><h2 class="title" id="id2698651">23.10. Miscellaneous components</h2></div></div></div><div class="variablelist"><dl><dt><span class="term"><code class="literal">org.jboss.seam.async.dispatcher</code></span></dt><dd><div class="para">
+						Dispatcher stateless session bean for asynchronous methods.
+					</div></dd></dl></div><div class="variablelist"><dl><dt><span class="term"><code class="literal">org.jboss.seam.core.image</code></span></dt><dd><div class="para">
+						Image manipulation and interrogation.
+					</div></dd></dl></div><div class="variablelist"><dl><dt><span class="term"><code class="literal">org.jboss.seam.core.pojoCache</code></span></dt><dd><div class="para">
+						Manager component for a PojoCache instance.
+					</div></dd></dl></div><div class="variablelist"><dl><dt><span class="term"><code class="literal">org.jboss.seam.core.uiComponent</code></span></dt><dd><div class="para">
+						Manages a map of UIComponents keyed by component id.
+					</div></dd></dl></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="ch23s09.html"><strong>Prev</strong>23.9. Infrastructural components</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="ch23s11.html"><strong>Next</strong>23.11. Special components</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/ch23s11.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/ch23s11.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/ch23s11.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>23.11. Special components</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="components.html" title="Chapter 23. Built-in Seam components" /><link rel="prev" href="ch23s10.html" title="23.10. Miscellaneous components" /><link rel="next" href="Seam_Reference_Guide-Seam_JSF_controls.html" title="Chapter 24. Seam JSF controls" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/im!
 age_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="ch23s10.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_JSF_controls.html"><strong>Next</strong></a></li></ul><div class="section" title="23.11. Special components"><div class="titlepage"><div><div><h2 class="title" id="id2698752">23.11. Special components</h2></div></div></div><div class="para">
+			Certain special Seam component classes are installable multiple times under names specified in the Seam configuration. For example, the following lines in <code class="literal">components.xml</code> install and configure two Seam components:
+		</div><pre class="programlisting XML">&lt;component name="bookingDatabase"
+          class="org.jboss.seam.persistence.ManagedPersistenceContext"&gt;
+    &lt;property name="persistenceUnitJndiName"&gt;java:/comp/emf/bookingPersistence&lt;/property&gt;
+&lt;/component&gt;
+
+&lt;component name="userDatabase"
+          class="org.jboss.seam.persistence.ManagedPersistenceContext"&gt;
+    &lt;property name="persistenceUnitJndiName"&gt;java:/comp/emf/userPersistence&lt;/property&gt;
+&lt;/component&gt;
+</pre><div class="para">
+			The Seam component names are <code class="literal">bookingDatabase</code> and <code class="literal">userDatabase</code>.
+		</div><div class="variablelist"><dl><dt><span class="term"><span class="emphasis"><em>&lt;entityManager&gt;</em></span>, </span><span class="term"><code class="literal">org.jboss.seam.persistence.ManagedPersistenceContext</code></span></dt><dd><div class="para">
+						Manager component for a conversation scoped managed <code class="literal">EntityManager</code> with an extended persistence context.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<span class="emphasis"><em>&lt;entityManager&gt;</em></span>.entityManagerFactory — a value binding expression that evaluates to an instance of <code class="literal">EntityManagerFactory</code>.
+							</div><div class="para">
+								<span class="emphasis"><em>&lt;entityManager&gt;</em></span>.persistenceUnitJndiName — the JNDI name of the entity manager factory, default to java:/<span class="emphasis"><em>&lt;managedPersistenceContext&gt;</em></span>.
+							</div></li></ul></div></dd><dt><span class="term"><span class="emphasis"><em>&lt;entityManagerFactory&gt;</em></span>, </span><span class="term"><code class="literal">org.jboss.seam.persistence.EntityManagerFactory</code></span></dt><dd><div class="para">
+						Manages a JPA <code class="literal">EntityManagerFactory</code>. This is most useful when using JPA outside of an EJB 3.0 supporting environment.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">entityManagerFactory.persistenceUnitName</code> — the name of the persistence unit.
+							</div></li></ul></div><div class="para">
+						See the API JavaDoc for further configuration properties.
+					</div></dd><dt><span class="term"><span class="emphasis"><em>&lt;session&gt;</em></span>, </span><span class="term"><code class="literal">org.jboss.seam.persistence.ManagedSession</code></span></dt><dd><div class="para">
+						Manager component for a conversation scoped managed Hibernate <code class="literal">Session</code>.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<span class="emphasis"><em>&lt;session&gt;</em></span>.sessionFactory — a value binding expression that evaluates to an instance of <code class="literal">SessionFactory</code>.
+							</div><div class="para">
+								<span class="emphasis"><em>&lt;session&gt;</em></span>.sessionFactoryJndiName — the JNDI name of the session factory, default to java:/<span class="emphasis"><em>&lt;managedSession&gt;</em></span>.
+							</div></li></ul></div></dd><dt><span class="term"><span class="emphasis"><em>&lt;sessionFactory&gt;</em></span>, </span><span class="term"><code class="literal">org.jboss.seam.persistence.HibernateSessionFactory</code></span></dt><dd><div class="para">
+						Manages a Hibernate <code class="literal">SessionFactory</code>.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">&lt;sessionFactory&gt;.cfgResourceName</code> — the path to the configuration file. Default to <code class="literal">hibernate.cfg.xml</code>.
+							</div></li></ul></div><div class="para">
+						See the API JavaDoc for further configuration properties.
+					</div></dd><dt><span class="term"><span class="emphasis"><em>&lt;managedQueueSender&gt;</em></span>, </span><span class="term"><code class="literal">org.jboss.seam.jms.ManagedQueueSender</code></span></dt><dd><div class="para">
+						Manager component for an event scoped managed JMS <code class="literal">QueueSender</code>.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<span class="emphasis"><em>&lt;managedQueueSender&gt;</em></span>.queueJndiName — the JNDI name of the JMS queue.
+							</div></li></ul></div></dd><dt><span class="term"><span class="emphasis"><em>&lt;managedTopicPublisher&gt;</em></span>, </span><span class="term"><code class="literal">org.jboss.seam.jms.ManagedTopicPublisher</code></span></dt><dd><div class="para">
+						Manager component for an event scoped managed JMS <code class="literal">TopicPublisher</code>.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<span class="emphasis"><em>&lt;managedTopicPublisher&gt;</em></span>.topicJndiName — the JNDI name of the JMS topic.
+							</div></li></ul></div></dd><dt><span class="term"><span class="emphasis"><em>&lt;managedWorkingMemory&gt;</em></span>, </span><span class="term"><code class="literal">org.jboss.seam.drools.ManagedWorkingMemory</code></span></dt><dd><div class="para">
+						Manager component for a conversation scoped managed Drools <code class="literal">WorkingMemory</code>.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<span class="emphasis"><em>&lt;managedWorkingMemory&gt;</em></span>.ruleBase — a value expression that evaluates to an instance of <code class="literal">RuleBase</code>.
+							</div></li></ul></div></dd><dt><span class="term"><span class="emphasis"><em>&lt;ruleBase&gt;</em></span>, </span><span class="term"><code class="literal">org.jboss.seam.drools.RuleBase</code></span></dt><dd><div class="para">
+						Manager component for an application scoped Drools <code class="literal">RuleBase</code>. <span class="emphasis"><em>Note that this is not really intended for production usage, since it does not support dynamic installation of new rules.</em></span>
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<span class="emphasis"><em>&lt;ruleBase&gt;</em></span>.ruleFiles — a list of files containing Drools rules.
+							</div><div class="para">
+								<span class="emphasis"><em>&lt;ruleBase&gt;</em></span>.dslFile — a Drools DSL definition.
+							</div></li></ul></div></dd></dl></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="ch23s10.html"><strong>Prev</strong>23.10. Miscellaneous components</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="Seam_Reference_Guide-Seam_JSF_controls.html"><strong>Next</strong>Chapter 24. Seam JSF controls</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/components.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/components.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/components.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 23. Built-in Seam components</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="index.html" title="Seam Reference Guide CP07" /><link rel="prev" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_packaging.html" title="22.13. Annotations for packaging" /><link rel="next" href="ch23s02.html" title="23.2. Utility components" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Con!
 tent/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_packaging.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="ch23s02.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="chapter" title="Chapter 23. Built-in Seam components" lang="en-US"><div class="titlepage"><div><div><h2 class="title" id="components">Chapter 23. Built-in Seam components</h2></div></div></div><div class="toc"><dl><dt><span class="section"><a href="components.html#id2694846">23.1. Context injection components</a></span></dt><dt><span class="section"><a href="ch23s02.html">23.2. Utility components</a></span></dt><dt><span class="section"><a href="ch23s03.html">23.3. Components for internationalization and themes</a></span></dt><dt><span class="section"><a href="ch23s04.html">23.4. Components for controlling conversations</a></span><!
 /dt><dt><span class="section"><a href="ch23s05.html">23.5. jBP!
 M-relate
d components</a></span></dt><dt><span class="section"><a href="ch23s06.html">23.6. Security-related components</a></span></dt><dt><span class="section"><a href="ch23s07.html">23.7. JMS-related components</a></span></dt><dt><span class="section"><a href="components.mail.html">23.8. Mail-related components</a></span></dt><dt><span class="section"><a href="ch23s09.html">23.9. Infrastructural components</a></span></dt><dt><span class="section"><a href="ch23s10.html">23.10. Miscellaneous components</a></span></dt><dt><span class="section"><a href="ch23s11.html">23.11. Special components</a></span></dt></dl></div><div class="para">
+		This chapter describes Seam's built in components, and their configuration properties. The built in components will be created even if they are not listed in your <code class="literal">components.xml</code> file, but if you need to override default properties or specify more than one component of a certain type, <code class="literal">components.xml</code> is used.
+	</div><div class="para">
+		You can replace any of the built in components with your own implementations simply by specifying the name of one of the built in components on your own class using <code class="literal">@Name</code>.
+	</div><div class="para">
+		Even though all the built in components use a qualified name, most of them are aliased to unqualified names by default. These aliases specify <code class="literal">auto-create="true"</code>, so you do not need to use <code class="literal">create=true</code> when injecting built-in components by their unqualified name.
+	</div><div class="section" title="23.1. Context injection components"><div class="titlepage"><div><div><h2 class="title" id="id2694846">23.1. Context injection components</h2></div></div></div><div class="para">
+			The first set of built in components exist purely to support injection of various contextual objects. For example, the following component instance variable would have the Seam session context object injected:
+		</div><pre class="programlisting JAVA">@In private Context sessionContext;
+</pre><div class="variablelist"><dl><dt><span class="term"><code class="literal">org.jboss.seam.core.contexts</code></span></dt><dd><div class="para">
+						Component that provides access to Seam Context objects, for example <code class="literal">org.jboss.seam.core.contexts.sessionContext['user']</code>.
+					</div></dd><dt><span class="term"><code class="literal">org.jboss.seam.faces.facesContext</code></span></dt><dd><div class="para">
+						Manager component for the <code class="literal">FacesContext</code> context object (not a true Seam context)
+					</div></dd></dl></div><div class="para">
+			All of these components are always installed.
+		</div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-Seam_annotations-Annotations_for_packaging.html"><strong>Prev</strong>22.13. Annotations for packaging</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="ch23s02.html"><strong>Next</strong>23.2. Utility components</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/components.mail.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/components.mail.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/components.mail.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>23.8. Mail-related components</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="components.html" title="Chapter 23. Built-in Seam components" /><link rel="prev" href="ch23s07.html" title="23.7. JMS-related components" /><link rel="next" href="ch23s09.html" title="23.9. Infrastructural components" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Document!
 ation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="ch23s07.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="ch23s09.html"><strong>Next</strong></a></li></ul><div class="section" title="23.8. Mail-related components"><div class="titlepage"><div><div><h2 class="title" id="components.mail">23.8. Mail-related components</h2></div></div></div><div class="para">
+			These components are for use with Seam's Email support
+		</div><div class="variablelist"><dl><dt><span class="term"><code class="literal">org.jboss.seam.mail.mailSession</code></span></dt><dd><div class="para">
+						Manager component for a JavaMail <code class="literal">Session</code>. The session can be either looked up in the JNDI context (by setting the <code class="literal">sessionJndiName</code> property) or it can created from the configuration options in which case the <code class="literal">host</code> is mandatory.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">org.jboss.seam.mail.mailSession.host</code> — the hostname of the SMTP server to use
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">org.jboss.seam.mail.mailSession.port</code> — the port of the SMTP server to use
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">org.jboss.seam.mail.mailSession.username</code> — the username to use to connect to the SMTP server.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">org.jboss.seam.mail.mailSession.password</code> — the password to use to connect to the SMTP server
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">org.jboss.seam.mail.mailSession.debug</code> — enable JavaMail debugging (very verbose)
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">org.jboss.seam.mail.mailSession.ssl</code> — enable SSL connection to SMTP (will default to port 465)
+							</div><div class="para">
+								<code class="literal">org.jboss.seam.mail.mailSession.tls</code> — by default true, enable TLS support in the mail session
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">org.jboss.seam.mail.mailSession.sessionJndiName</code> — name under which a javax.mail.Session is bound to JNDI. If supplied, all other properties will be ignored.
+							</div></li></ul></div></dd></dl></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="ch23s07.html"><strong>Prev</strong>23.7. JMS-related components</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="ch23s09.html"><strong>Next</strong>23.9. Infrastructural components</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/drools.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/drools.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/drools.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 11. Seam and JBoss Rules</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="up" href="index.html" title="Seam Reference Guide CP07" /><link rel="prev" href="Seam_Reference_Guide-The_Seam_Application_Framework-Controller_objects.html" title="10.4. Controller objects" /><link rel="next" href="ch11s02.html" title="11.2. Using rules from a Seam component" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="!
 Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-The_Seam_Application_Framework-Controller_objects.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="ch11s02.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="chapter" title="Chapter 11. Seam and JBoss Rules" lang="en-US"><div class="titlepage"><div><div><h2 class="title" id="drools">Chapter 11. Seam and JBoss Rules</h2></div></div></div><div class="toc"><dl><dt><span class="section"><a href="drools.html#id2694764">11.1. Installing rules</a></span></dt><dt><span class="section"><a href="ch11s02.html">11.2. Using rules from a Seam component</a></span></dt><dt><span class="section"><a href="ch11s03.html">11.3. Using rules from a jBPM process definition</a></span></dt></dl></div><div class="para">
+		Seam makes it easy to call JBoss Rules (Drools) rulebases from Seam components or jBPM process definitions.
+	</div><div class="section" title="11.1. Installing rules"><div class="titlepage"><div><div><h2 class="title" id="id2694764">11.1. Installing rules</h2></div></div></div><div class="para">
+			The first step is to make an instance of <code class="literal">org.drools.RuleBase</code> available in a Seam context variable. For testing purposes, Seam provides a built-in component that compiles a static set of rules from the classpath. You can install this component via <code class="literal">components.xml</code>:
+		</div><pre class="programlisting XML">&lt;drools:rule-base name="policyPricingRules"&gt;
+    &lt;drools:rule-files&gt;
+        &lt;value&gt;policyPricingRules.drl&lt;/value&gt;
+    &lt;/drools:rule-files&gt;
+&lt;/drools:rule-base&gt;
+</pre><div class="para">
+			This component compiles rules from a set of <code class="literal">.drl</code> files and caches an instance of <code class="literal">org.drools.RuleBase</code> in the Seam <code class="literal">APPLICATION</code> context. Note that it is quite likely that you will need to install multiple rule bases in a rule-driven application.
+		</div><div class="para">
+			If you want to use a Drools DSL, you also need to specify the DSL definition:
+		</div><pre class="programlisting XML">&lt;drools:rule-base name="policyPricingRules" dsl-file="policyPricing.dsl"&gt;
+    &lt;drools:rule-files&gt;
+        &lt;value&gt;policyPricingRules.drl&lt;/value&gt;
+    &lt;/drools:rule-files&gt;
+&lt;/drools:rule-base&gt;
+</pre><div class="para">
+			In most rules-driven applications, rules need to be dynamically deployable, so a production application will want to use a Drools RuleAgent to manage the RuleBase. The RuleAgent can connect to a Drools rule server (BRMS) or hot deploy rules packages from a local file repository. The RulesAgent-managed RuleBase is also configurable in <code class="literal">components.xml</code>:
+		</div><pre class="programlisting XML">&lt;drools:rule-agent name="insuranceRules" 
+                    configurationFile="/WEB-INF/deployedrules.properties" /&gt;
+</pre><div class="para">
+			The properties file contains properties specific to the RulesAgent. Here is an example configuration file from the Drools example distribution.
+		</div><pre class="programlisting">newInstance=true
+url=http://localhost:8080/drools-jbrms/org.drools.brms.JBRMS/package/org.acme.insurance/fmeyer
+localCacheDir=/Users/fernandomeyer/projects/jbossrules/drools-examples/drools-examples-brms/cache
+poll=30
+name=insuranceconfig
+</pre><div class="para">
+			It is also possible to configure the options on the component directly, bypassing the configuration file.
+		</div><pre class="programlisting XML">&lt;drools:rule-agent name="insuranceRules"
+   url="http://localhost:8080/drools-jbrms/org.drools.brms.JBRMS/package/org.acme.insurance/fmeyer"
+   local-cache-dir="/Users/fernandomeyer/projects/jbossrules/drools-examples/drools-examples-brms/cache"
+   poll="30"
+   configuration-name="insuranceconfig" /&gt;
+</pre><div class="para">
+			Next, we need to make an instance of <code class="literal">org.drools.WorkingMemory</code> available to each conversation. (Each <code class="literal">WorkingMemory</code> accumulates facts relating to the current conversation.)
+		</div><pre class="programlisting XML">&lt;drools:managed-working-memory name="policyPricingWorkingMemory" auto-create="true" rule-base="#{policyPricingRules}"/&gt;
+</pre><div class="para">
+			Notice that we gave the <code class="literal">policyPricingWorkingMemory</code> a reference back to our rule base via the <code class="literal">ruleBase</code> configuration property.
+		</div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="Seam_Reference_Guide-The_Seam_Application_Framework-Controller_objects.html"><strong>Prev</strong>10.4. Controller objects</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="ch11s02.html"><strong>Next</strong>11.2. Using rules from a Seam component</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/architecture.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/architecture.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/blog.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/blog.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/booking.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/booking.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/bpmd.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/bpmd.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/bpmpfv.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/bpmpfv.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/breadcrumbs.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/breadcrumbs.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/codegendropdown.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/codegendropdown.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/codegenmaintab.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/codegenmaintab.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/codegenselectseam.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/codegenselectseam.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/consolecfgwizard.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/consolecfgwizard.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/consoleoutline-before-reveng.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/consoleoutline-before-reveng.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/controls-seamtext.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/controls-seamtext.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/controls-selectdate.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/controls-selectdate.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/controls-selectdatecss.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/controls-selectdatecss.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/debug.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/debug.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/dvdsearch.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/dvdsearch.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/dvdtasks.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/dvdtasks.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/e-ejb3.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/e-ejb3.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/ee5.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/ee5.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/hibernate-ee.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/hibernate-ee.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/hibernate-mc.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/hibernate-mc.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/hibernatecfgwizard.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/hibernatecfgwizard.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/icon.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/icon.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/icon.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,3936 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:ns="http://ns.adobe.com/AdobeSVGViewerExtensions/3/"
+   xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg3017"
+   sodipodi:version="0.32"
+   inkscape:version="0.44+devel"
+   sodipodi:docname="book.svg"
+   sodipodi:docbase="/home/andy/Desktop">
+  <metadata
+     id="metadata489">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="480"
+     inkscape:window-width="858"
+     inkscape:pageshadow="0"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="1"
+     inkscape:cx="16"
+     inkscape:cy="15.944056"
+     inkscape:window-x="0"
+     inkscape:window-y="33"
+     inkscape:current-layer="svg3017" />
+  <defs
+     id="defs3019">
+    <linearGradient
+       id="linearGradient2381">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop2383" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="stop2385" />
+    </linearGradient>
+    <linearGradient
+       x1="415.73831"
+       y1="11.854"
+       x2="418.13361"
+       y2="18.8104"
+       id="XMLID_1758_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8362,0.5206,-1.1904,0.992,147.62,-30.9374)">
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="0"
+         id="stop3903" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop3905" />
+      <a:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="500.70749"
+       y1="-13.2441"
+       x2="513.46442"
+       y2="-2.1547"
+       id="XMLID_1757_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop3890" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop3892" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="XMLID_1755_">
+      <use
+         id="use3874"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_343_" />
+    </clipPath>
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop3877" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop3879" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop3881" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop3883" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="471.0806"
+       y1="201.07761"
+       x2="481.91711"
+       y2="210.4977"
+       id="XMLID_1754_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#6498c1;stop-opacity:1"
+         offset="0.005618"
+         id="stop3863" />
+      <stop
+         style="stop-color:#79a9cc;stop-opacity:1"
+         offset="0.2332"
+         id="stop3865" />
+      <stop
+         style="stop-color:#a4cde2;stop-opacity:1"
+         offset="0.74049997"
+         id="stop3867" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="1"
+         id="stop3869" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="5.618000e-003" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="0.4438" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="XMLID_1753_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop3851" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop3853" />
+      <a:midPointStop
+         style="stop-color:#B2B2B2"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B2B2B2"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="XMLID_1751_">
+      <use
+         id="use3837"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_338_" />
+    </clipPath>
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop3840" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop3842" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop3844" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop3846" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="468.2915"
+       y1="204.7612"
+       x2="479.39871"
+       y2="214.4166"
+       id="XMLID_1750_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop3830" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop3832" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop3818" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop3820" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="501.0903"
+       y1="-19.2544"
+       x2="531.85413"
+       y2="0.72390002"
+       id="XMLID_1748_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop3803" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop3805" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop3807" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop3809" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="XMLID_2275_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop9947" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop9949" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop9951" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop9953" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="XMLID_2273_">
+      <use
+         id="use9933"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_960_" />
+    </clipPath>
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="XMLID_2274_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop9936" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop9938" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop9940" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop9942" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="478.21341"
+       y1="-131.9297"
+       x2="469.85818"
+       y2="-140.28481"
+       id="XMLID_2272_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.5592,0.829,-0.829,0.5592,101.3357,-104.791)">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop9917" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop9919" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop9921" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop9923" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       style="overflow:visible"
+       id="TriangleInM">
+      <path
+         d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z "
+         transform="scale(-0.4,-0.4)"
+         style="fill:#5c5c4f"
+         id="path3197" />
+    </marker>
+    <linearGradient
+       x1="200.7363"
+       y1="100.4028"
+       x2="211.99519"
+       y2="89.143997"
+       id="XMLID_3298_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#bfbfbf;stop-opacity:1"
+         offset="0"
+         id="stop20103" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop20105" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#BFBFBF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#BFBFBF" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#F2F2F2" />
+    </linearGradient>
+    <linearGradient
+       x1="200.7363"
+       y1="100.4028"
+       x2="211.99519"
+       y2="89.143997"
+       id="linearGradient36592"
+       xlink:href="#XMLID_3298_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="181.2925"
+       y1="110.8481"
+       x2="192.6369"
+       y2="99.5037"
+       id="XMLID_3297_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="stop20096" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop20098" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="181.2925"
+       y1="110.8481"
+       x2="192.6369"
+       y2="99.5037"
+       id="linearGradient36595"
+       xlink:href="#XMLID_3297_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="211.77589"
+       y1="105.7749"
+       x2="212.6619"
+       y2="108.2092"
+       id="XMLID_3296_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#0f6124;stop-opacity:1"
+         offset="0"
+         id="stop20087" />
+      <stop
+         style="stop-color:#219630;stop-opacity:1"
+         offset="1"
+         id="stop20089" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#0F6124" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#0F6124" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#219630" />
+    </linearGradient>
+    <linearGradient
+       x1="211.77589"
+       y1="105.7749"
+       x2="212.6619"
+       y2="108.2092"
+       id="linearGradient36677"
+       xlink:href="#XMLID_3296_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="208.9834"
+       y1="116.8296"
+       x2="200.0811"
+       y2="96.834602"
+       id="XMLID_3295_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop20076" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.5"
+         id="stop20078" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop20080" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="208.9834"
+       y1="116.8296"
+       x2="200.0811"
+       y2="96.834602"
+       id="linearGradient36604"
+       xlink:href="#XMLID_3295_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="195.5264"
+       y1="97.911102"
+       x2="213.5213"
+       y2="115.9061"
+       id="XMLID_3294_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="0"
+         id="stop20069" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop20071" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="195.5264"
+       y1="97.911102"
+       x2="213.5213"
+       y2="115.9061"
+       id="linearGradient36607"
+       xlink:href="#XMLID_3294_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="186.1938"
+       y1="109.1343"
+       x2="206.6881"
+       y2="88.639999"
+       id="XMLID_3293_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop20056" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.16850001"
+         id="stop20058" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.23029999"
+         id="stop20060" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.2809"
+         id="stop20062" />
+      <stop
+         style="stop-color:#c2c2c2;stop-opacity:1"
+         offset="0.5"
+         id="stop20064" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.1685"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.2303"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.2809"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#C2C2C2" />
+    </linearGradient>
+    <linearGradient
+       x1="186.1938"
+       y1="109.1343"
+       x2="206.6881"
+       y2="88.639999"
+       id="linearGradient36610"
+       xlink:href="#XMLID_3293_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="184.8569"
+       y1="112.2676"
+       x2="211.94099"
+       y2="89.541397"
+       id="XMLID_3292_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop20043" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.16850001"
+         id="stop20045" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.23029999"
+         id="stop20047" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.2809"
+         id="stop20049" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop20051" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.1685"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.2303"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.2809"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="184.8569"
+       y1="112.2676"
+       x2="211.94099"
+       y2="89.541397"
+       id="linearGradient36613"
+       xlink:href="#XMLID_3292_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       style="overflow:visible"
+       id="TriangleOutM">
+      <path
+         d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z "
+         transform="scale(0.4,0.4)"
+         style="fill:#5c5c4f;fill-rule:evenodd;stroke-width:1pt;marker-start:none"
+         id="path3238" />
+    </marker>
+    <linearGradient
+       x1="165.3"
+       y1="99.5"
+       x2="165.3"
+       y2="115.9"
+       id="XMLID_3457_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="0"
+         id="stop8309" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8311" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="1"
+         id="stop8313" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#999999" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#999999" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#B2B2B2" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#B2B2B2" />
+    </linearGradient>
+    <linearGradient
+       x1="165.3"
+       y1="99.5"
+       x2="165.3"
+       y2="115.9"
+       id="lg1997"
+       xlink:href="#XMLID_3457_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="175"
+       y1="99.800003"
+       x2="175"
+       y2="112.5"
+       id="XMLID_3456_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="0"
+         id="stop8300" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="0.60000002"
+         id="stop8302" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="1"
+         id="stop8304" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="0.6"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#191919" />
+    </linearGradient>
+    <linearGradient
+       x1="175"
+       y1="99.800003"
+       x2="175"
+       y2="112.5"
+       id="lg2000"
+       xlink:href="#XMLID_3456_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="168.8"
+       y1="107.1"
+       x2="164.5"
+       y2="110"
+       id="XMLID_3455_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="0"
+         id="stop8291" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="0.69999999"
+         id="stop8293" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="1"
+         id="stop8295" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.7"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#191919" />
+    </linearGradient>
+    <linearGradient
+       x1="168.8"
+       y1="107.1"
+       x2="164.5"
+       y2="110"
+       id="lg2003"
+       xlink:href="#XMLID_3455_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       id="lg63694">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop63696" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="stop63698" />
+    </linearGradient>
+    <linearGradient
+       x1="458"
+       y1="483"
+       x2="465.20001"
+       y2="271.39999"
+       id="lg2006"
+       xlink:href="#lg63694"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(6.3e-2,0,0,6.3e-2,-1.3,-9.8)" />
+    <linearGradient
+       x1="176.3"
+       y1="110.1"
+       x2="158.7"
+       y2="105"
+       id="XMLID_3453_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="0"
+         id="stop8271" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="0.2"
+         id="stop8273" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop8275" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.2"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="176.3"
+       y1="110.1"
+       x2="158.7"
+       y2="105"
+       id="lg2009"
+       xlink:href="#XMLID_3453_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="173.60001"
+       y1="118.9"
+       x2="172.8"
+       y2="128.2"
+       id="XMLID_3449_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8232" />
+      <stop
+         style="stop-color:#fff95e;stop-opacity:1"
+         offset="0.60000002"
+         id="stop8234" />
+      <stop
+         style="stop-color:#ecd600;stop-opacity:1"
+         offset="1"
+         id="stop8236" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.6"
+         style="stop-color:#FFF95E" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFF95E" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#ECD600" />
+    </linearGradient>
+    <linearGradient
+       x1="173.60001"
+       y1="118.9"
+       x2="172.8"
+       y2="128.2"
+       id="lg2016"
+       xlink:href="#XMLID_3449_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <radialGradient
+       cx="284.60001"
+       cy="172.60001"
+       r="6.5"
+       fx="284.60001"
+       fy="172.60001"
+       id="XMLID_3448_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4,0,0,1.4,-237.3,-126.8)">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8219" />
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8221" />
+      <stop
+         style="stop-color:#c96b00;stop-opacity:1"
+         offset="0.89999998"
+         id="stop8223" />
+      <stop
+         style="stop-color:#9a5500;stop-opacity:1"
+         offset="1"
+         id="stop8225" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.9"
+         style="stop-color:#C96B00" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#C96B00" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#9A5500" />
+    </radialGradient>
+    <radialGradient
+       cx="284.60001"
+       cy="172.60001"
+       r="6.5"
+       fx="284.60001"
+       fy="172.60001"
+       id="rg2020"
+       xlink:href="#XMLID_3448_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.513992,0,0,2.347576,-689.1621,-378.5717)" />
+    <linearGradient
+       x1="158.10001"
+       y1="123"
+       x2="164.2"
+       y2="126.6"
+       id="XMLID_3447_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecd600;stop-opacity:1"
+         offset="0"
+         id="stop8204" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8206" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop8208" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECD600" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECD600" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="158.10001"
+       y1="123"
+       x2="164.2"
+       y2="126.6"
+       id="lg2026"
+       xlink:href="#XMLID_3447_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <radialGradient
+       cx="280.89999"
+       cy="163.7"
+       r="10.1"
+       fx="280.89999"
+       fy="163.7"
+       id="XMLID_3446_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4,0,0,1.4,-237.3,-126.8)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop8197" />
+      <stop
+         style="stop-color:#fff95e;stop-opacity:1"
+         offset="1"
+         id="stop8199" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#FFFFFF" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#FFF95E" />
+    </radialGradient>
+    <radialGradient
+       cx="280.89999"
+       cy="163.7"
+       r="10.1"
+       fx="280.89999"
+       fy="163.7"
+       id="rg2029"
+       xlink:href="#XMLID_3446_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.7,0,0,1.7,-457.5,-266.8)" />
+    <linearGradient
+       x1="156.5"
+       y1="122.7"
+       x2="180.10001"
+       y2="122.7"
+       id="XMLID_3445_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8184" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.2"
+         id="stop8186" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8188" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.40000001"
+         id="stop8190" />
+      <stop
+         style="stop-color:#d68100;stop-opacity:1"
+         offset="1"
+         id="stop8192" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.2"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.4"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#D68100" />
+    </linearGradient>
+    <linearGradient
+       x1="156.5"
+       y1="122.7"
+       x2="180.10001"
+       y2="122.7"
+       id="lg2032"
+       xlink:href="#XMLID_3445_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="156.39999"
+       y1="115.4"
+       x2="180.10001"
+       y2="115.4"
+       id="XMLID_3444_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8171" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.2"
+         id="stop8173" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8175" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.40000001"
+         id="stop8177" />
+      <stop
+         style="stop-color:#d68100;stop-opacity:1"
+         offset="1"
+         id="stop8179" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.2"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.4"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#D68100" />
+    </linearGradient>
+    <linearGradient
+       x1="156.39999"
+       y1="115.4"
+       x2="180.10001"
+       y2="115.4"
+       id="lg2035"
+       xlink:href="#XMLID_3444_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="379.70001"
+       y1="167.89999"
+       x2="383.89999"
+       y2="172.89999"
+       id="lg4286_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s16159" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.1"
+         id="s16161" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="1"
+         id="s16163" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.1" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#737373"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="379.60001"
+       y1="167.8"
+       x2="383.79999"
+       y2="172"
+       id="lg6416"
+       xlink:href="#lg4286_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.622156,0.623859,-0.623859,2.62182,-882.9706,-673.7921)" />
+    <linearGradient
+       x1="384.20001"
+       y1="169.8"
+       x2="384.79999"
+       y2="170.39999"
+       id="lg4285_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="0"
+         id="s16152" />
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="1"
+         id="s16154" />
+      <ns:midPointStop
+         style="stop-color:#737373"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#737373"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#D9D9D9"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="384.20001"
+       y1="169.8"
+       x2="384.79999"
+       y2="170.39999"
+       id="lg6453"
+       xlink:href="#lg4285_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.6,0.6,-0.6,2.6,-883,-673.8)" />
+    <linearGradient
+       x1="380.5"
+       y1="172.60001"
+       x2="382.79999"
+       y2="173.7"
+       id="lg4284_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
+      <stop
+         style="stop-color:gray;stop-opacity:1"
+         offset="0"
+         id="s16145" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="1"
+         id="s16147" />
+      <ns:midPointStop
+         style="stop-color:#808080"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#808080"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#E5E5E5"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="380.5"
+       y1="172.60001"
+       x2="382.79999"
+       y2="173.7"
+       id="lg6456"
+       xlink:href="#lg4284_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.6,0.6,-0.6,2.6,-883,-673.8)" />
+    <radialGradient
+       cx="347.29999"
+       cy="244.5"
+       r="5.1999998"
+       fx="347.29999"
+       fy="244.5"
+       id="lg4282_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
+      <stop
+         style="stop-color:#333;stop-opacity:1"
+         offset="0"
+         id="s16135" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="s16137" />
+      <ns:midPointStop
+         style="stop-color:#333333"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#333333"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#999999"
+         offset="1" />
+    </radialGradient>
+    <linearGradient
+       x1="310.39999"
+       y1="397.70001"
+       x2="310.89999"
+       y2="399.5"
+       id="lg4280_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="0"
+         id="s16111" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.60000002"
+         id="s16113" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="1"
+         id="s16115" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.6" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="310.39999"
+       y1="397.70001"
+       x2="310.89999"
+       y2="399.5"
+       id="lg6467"
+       xlink:href="#lg4280_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
+    <linearGradient
+       x1="310.89999"
+       y1="395.79999"
+       x2="313.29999"
+       y2="403.10001"
+       id="lg4279_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0"
+         id="s16100" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.40000001"
+         id="s16102" />
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="0.89999998"
+         id="s16104" />
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="1"
+         id="s16106" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.4" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0.9" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="310.89999"
+       y1="395.79999"
+       x2="313.29999"
+       y2="403.10001"
+       id="lg6465"
+       xlink:href="#lg4279_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
+    <linearGradient
+       x1="307.79999"
+       y1="395.20001"
+       x2="313.79999"
+       y2="413.60001"
+       id="lg4278_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0"
+         id="s16091" />
+      <stop
+         style="stop-color:#fcd72f;stop-opacity:1"
+         offset="0.40000001"
+         id="s16093" />
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="1"
+         id="s16095" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FCD72F"
+         offset="0.4" />
+      <ns:midPointStop
+         style="stop-color:#FCD72F"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="306.5"
+       y1="393"
+       x2="309"
+       y2="404"
+       id="lg6400"
+       xlink:href="#lg4278_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
+    <linearGradient
+       x1="352.10001"
+       y1="253.60001"
+       x2="348.5"
+       y2="237.8"
+       id="lg4276_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
+      <stop
+         style="stop-color:#ffff87;stop-opacity:1"
+         offset="0"
+         id="s16077" />
+      <stop
+         style="stop-color:#ffad00;stop-opacity:1"
+         offset="1"
+         id="s16079" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFAD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="335.60001"
+       y1="354.79999"
+       x2="337.89999"
+       y2="354.79999"
+       id="lg4275_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="s16057" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.80000001"
+         id="s16059" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="s16061" />
+      <ns:midPointStop
+         style="stop-color:#D9D9D9"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#D9D9D9"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.8" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="335.60001"
+       y1="354.79999"
+       x2="337.89999"
+       y2="354.79999"
+       id="lg6463"
+       xlink:href="#lg4275_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
+    <linearGradient
+       x1="337.39999"
+       y1="353.10001"
+       x2="339.39999"
+       y2="357.10001"
+       id="lg4274_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s16048" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.1"
+         id="s16050" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s16052" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.1" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="337.39999"
+       y1="353.10001"
+       x2="339.39999"
+       y2="357.10001"
+       id="lg6461"
+       xlink:href="#lg4274_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
+    <linearGradient
+       x1="334.39999"
+       y1="355.5"
+       x2="335.5"
+       y2="356.79999"
+       id="lg4273_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s16041" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s16043" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="5.6e-003" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="334.39999"
+       y1="355.5"
+       x2="335.5"
+       y2="356.79999"
+       id="lg6381"
+       xlink:href="#lg4273_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
+    <linearGradient
+       x1="348.39999"
+       y1="247.39999"
+       x2="354.10001"
+       y2="242"
+       id="lg4271_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0"
+         id="s16025" />
+      <stop
+         style="stop-color:#9e9e9e;stop-opacity:1"
+         offset="0.40000001"
+         id="s16027" />
+      <stop
+         style="stop-color:black;stop-opacity:1"
+         offset="1"
+         id="s16029" />
+      <ns:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#000000"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="351.29999"
+       y1="257.29999"
+       x2="346.29999"
+       y2="235.5"
+       id="lg4270_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ffff87;stop-opacity:1"
+         offset="0"
+         id="s16007" />
+      <stop
+         style="stop-color:#ffad00;stop-opacity:1"
+         offset="1"
+         id="s16009" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFAD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="351.29999"
+       y1="257.29999"
+       x2="346.29999"
+       y2="235.5"
+       id="lg6459"
+       xlink:href="#lg4270_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)" />
+    <linearGradient
+       x1="43.799999"
+       y1="32.5"
+       x2="63.299999"
+       y2="66.400002"
+       id="XMLID_2708_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop75318" />
+      <stop
+         style="stop-color:#fffcea;stop-opacity:1"
+         offset="1"
+         id="stop75320" />
+      <a:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#FFFCEA"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="43.799999"
+       y1="32.5"
+       x2="63.299999"
+       y2="66.400002"
+       id="lg1907"
+       xlink:href="#XMLID_2708_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)" />
+    <linearGradient
+       x1="52.5"
+       y1="40.400002"
+       x2="58.200001"
+       y2="64"
+       id="XMLID_2707_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ffdea0;stop-opacity:1"
+         offset="0"
+         id="stop75305" />
+      <stop
+         style="stop-color:#ffd89e;stop-opacity:1"
+         offset="0.30000001"
+         id="stop75307" />
+      <stop
+         style="stop-color:#ffd79e;stop-opacity:1"
+         offset="0.30000001"
+         id="stop75309" />
+      <stop
+         style="stop-color:#dbaf6d;stop-opacity:1"
+         offset="0.69999999"
+         id="stop75311" />
+      <stop
+         style="stop-color:#6f4c24;stop-opacity:1"
+         offset="1"
+         id="stop75313" />
+      <a:midPointStop
+         style="stop-color:#FFDEA0"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#FFDEA0"
+         offset="0.6" />
+      <a:midPointStop
+         style="stop-color:#FFD79E"
+         offset="0.3" />
+      <a:midPointStop
+         style="stop-color:#FFD79E"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#DBAF6D"
+         offset="0.7" />
+      <a:midPointStop
+         style="stop-color:#DBAF6D"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#6F4C24"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="52.5"
+       y1="40.400002"
+       x2="58.200001"
+       y2="64"
+       id="lg1910"
+       xlink:href="#XMLID_2707_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)" />
+    <linearGradient
+       x1="58"
+       y1="73.199997"
+       x2="44.5"
+       y2="19"
+       id="XMLID_2704_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)">
+      <stop
+         style="stop-color:#d4a96c;stop-opacity:1"
+         offset="0.5"
+         id="stop75284" />
+      <stop
+         style="stop-color:#dcb273;stop-opacity:1"
+         offset="0.60000002"
+         id="stop75286" />
+      <stop
+         style="stop-color:#f0ca87;stop-opacity:1"
+         offset="0.80000001"
+         id="stop75288" />
+      <stop
+         style="stop-color:#ffdc96;stop-opacity:1"
+         offset="0.69999999"
+         id="stop75290" />
+      <stop
+         style="stop-color:#c18a42;stop-opacity:1"
+         offset="1"
+         id="stop75292" />
+      <a:midPointStop
+         style="stop-color:#D4A96C"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#D4A96C"
+         offset="0.6" />
+      <a:midPointStop
+         style="stop-color:#FFDC96"
+         offset="0.7" />
+      <a:midPointStop
+         style="stop-color:#FFDC96"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#C18A42"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="53.700001"
+       y1="32"
+       x2="53.700001"
+       y2="64.599998"
+       id="XMLID_2703_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e5c9b0;stop-opacity:1"
+         offset="0"
+         id="stop75268" />
+      <stop
+         style="stop-color:#e5c9b0;stop-opacity:1"
+         offset="0.40000001"
+         id="stop75270" />
+      <stop
+         style="stop-color:#c0aa94;stop-opacity:1"
+         offset="1"
+         id="stop75272" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0.4" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#C0AA94"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="53.700001"
+       y1="32"
+       x2="53.700001"
+       y2="64.599998"
+       id="lg1916"
+       xlink:href="#XMLID_2703_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)" />
+    <linearGradient
+       x1="224.31"
+       y1="19.450001"
+       x2="214.33"
+       y2="11.46"
+       id="XMLID_419_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#404040;stop-opacity:1"
+         offset="0"
+         id="s1903" />
+      <stop
+         style="stop-color:#6d6d6d;stop-opacity:1"
+         offset="0.33000001"
+         id="s1905" />
+      <stop
+         style="stop-color:#e9e9e9;stop-opacity:1"
+         offset="1"
+         id="s1907" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#404040" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#404040" />
+      <a:midPointStop
+         offset="0.33"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#E9E9E9" />
+    </linearGradient>
+    <linearGradient
+       x1="221.84"
+       y1="32.779999"
+       x2="212.2"
+       y2="20.27"
+       id="lg1988"
+       xlink:href="#XMLID_419_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
+    <linearGradient
+       x1="228.35001"
+       y1="33.279999"
+       x2="215.42999"
+       y2="33.279999"
+       id="lg1900"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s1902" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="s1906" />
+      <a:midPointStop
+         style="stop-color:#575757"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#575757"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#6D6D6D"
+         offset="0.33" />
+      <a:midPointStop
+         style="stop-color:#6D6D6D"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#D3D3D3"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="234.81"
+       y1="33.279999"
+       x2="228.27"
+       y2="33.279999"
+       id="lg1908"
+       xlink:href="#lg1900"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
+    <linearGradient
+       x1="228.35001"
+       y1="33.279999"
+       x2="215.42999"
+       y2="33.279999"
+       id="XMLID_416_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#575757;stop-opacity:1"
+         offset="0"
+         id="s1874" />
+      <stop
+         style="stop-color:#6d6d6d;stop-opacity:1"
+         offset="0.33000001"
+         id="s1876" />
+      <stop
+         style="stop-color:#d3d3d3;stop-opacity:1"
+         offset="1"
+         id="s1878" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#575757" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#575757" />
+      <a:midPointStop
+         offset="0.33"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#D3D3D3" />
+    </linearGradient>
+    <linearGradient
+       x1="228.35001"
+       y1="33.279999"
+       x2="215.42999"
+       y2="33.279999"
+       id="lg1991"
+       xlink:href="#XMLID_416_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
+    <radialGradient
+       cx="603.19"
+       cy="230.77"
+       r="1.67"
+       fx="603.19"
+       fy="230.77"
+       id="x5010_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.1,0,0,1.1,-54.33,-75.4)">
+      <stop
+         style="stop-color:#c9ffc9;stop-opacity:1"
+         offset="0"
+         id="stop29201" />
+      <stop
+         style="stop-color:#23a11f;stop-opacity:1"
+         offset="1"
+         id="stop29203" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#C9FFC9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#C9FFC9" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#23A11F" />
+    </radialGradient>
+    <radialGradient
+       cx="603.19"
+       cy="230.77"
+       r="1.67"
+       fx="603.19"
+       fy="230.77"
+       id="radialGradient5711"
+       xlink:href="#x5010_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.23,0,0,1.23,-709.93,-245.02)" />
+    <linearGradient
+       x1="592.31"
+       y1="162.60001"
+       x2="609.32001"
+       y2="145.59"
+       id="lg5722"
+       xlink:href="#x5003_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="601.48999"
+       y1="170.16"
+       x2="613.84003"
+       y2="170.16"
+       id="x5002_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop29134" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.2"
+         id="stop29136" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="stop29138" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.20"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#999999" />
+    </linearGradient>
+    <linearGradient
+       x1="601.48999"
+       y1="170.16"
+       x2="613.84003"
+       y2="170.16"
+       id="lg5725"
+       xlink:href="#x5002_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.23"
+       id="x5004_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop29157" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop29159" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.23"
+       id="lg5728"
+       xlink:href="#x5004_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="592.31"
+       y1="162.60001"
+       x2="609.32001"
+       y2="145.59"
+       id="x5003_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0"
+         id="stop29143" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="1"
+         id="stop29145" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#E5E5E5" />
+    </linearGradient>
+    <linearGradient
+       x1="592.31"
+       y1="162.60001"
+       x2="609.32001"
+       y2="145.59"
+       id="lg5732"
+       xlink:href="#x5003_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.24001"
+       id="x5000_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop29124" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop29126" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.24001"
+       id="lg5735"
+       xlink:href="#x5000_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="308.54999"
+       y1="149.89999"
+       x2="299.72"
+       y2="148.83"
+       id="XMLID_2433_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d6d6d6;stop-opacity:1"
+         offset="0"
+         id="71615" />
+      <stop
+         style="stop-color:#a5a5a5;stop-opacity:1"
+         offset="1"
+         id="71617" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D6D6D6" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D6D6D6" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#A5A5A5" />
+    </linearGradient>
+    <linearGradient
+       x1="308.54999"
+       y1="149.89999"
+       x2="299.72"
+       y2="148.83"
+       id="lg1952"
+       xlink:href="#XMLID_2433_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
+    <radialGradient
+       cx="307.39999"
+       cy="121"
+       r="23.35"
+       fx="307.39999"
+       fy="121"
+       id="XMLID_2432_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.98,0,0,0.98,2.88,2.75)">
+      <stop
+         style="stop-color:#d2d2d2;stop-opacity:1"
+         offset="0.19"
+         id="71592" />
+      <stop
+         style="stop-color:#cfcfcf;stop-opacity:1"
+         offset="0.44999999"
+         id="71594" />
+      <stop
+         style="stop-color:#c7c7c7;stop-opacity:1"
+         offset="0.60000002"
+         id="71596" />
+      <stop
+         style="stop-color:#b9b9b9;stop-opacity:1"
+         offset="0.74000001"
+         id="71598" />
+      <stop
+         style="stop-color:#a4a4a4;stop-opacity:1"
+         offset="0.86000001"
+         id="71600" />
+      <stop
+         style="stop-color:#8a8a8a;stop-opacity:1"
+         offset="0.95999998"
+         id="71602" />
+      <stop
+         style="stop-color:gray;stop-opacity:1"
+         offset="1"
+         id="71604" />
+      <a:midPointStop
+         offset="0.19"
+         style="stop-color:#D2D2D2" />
+      <a:midPointStop
+         offset="0.8"
+         style="stop-color:#D2D2D2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#808080" />
+    </radialGradient>
+    <radialGradient
+       cx="307.39999"
+       cy="121"
+       r="23.35"
+       fx="307.39999"
+       fy="121"
+       id="radialGradient2331"
+       xlink:href="#XMLID_2432_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-276.62,-121.54)" />
+    <linearGradient
+       x1="294.13"
+       y1="127.07"
+       x2="294.13"
+       y2="142.2"
+       id="XMLID_2430_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b5d8ff;stop-opacity:1"
+         offset="0"
+         id="71582" />
+      <stop
+         style="stop-color:black;stop-opacity:1"
+         offset="1"
+         id="71584" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B5D8FF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B5D8FF" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#000000" />
+    </linearGradient>
+    <linearGradient
+       x1="294.13"
+       y1="127.07"
+       x2="294.13"
+       y2="142.2"
+       id="lg2820"
+       xlink:href="#XMLID_2430_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
+    <linearGradient
+       x1="279.10999"
+       y1="148.03"
+       x2="309.16"
+       y2="148.03"
+       id="XMLID_2429_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e1e1e1;stop-opacity:1"
+         offset="0"
+         id="71564" />
+      <stop
+         style="stop-color:#e1e1e1;stop-opacity:1"
+         offset="0.25"
+         id="71566" />
+      <stop
+         style="stop-color:#a5a5a5;stop-opacity:1"
+         offset="0.44"
+         id="71568" />
+      <stop
+         style="stop-color:#a5a5a5;stop-opacity:1"
+         offset="1"
+         id="71570" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.25"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.44"
+         style="stop-color:#A5A5A5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#A5A5A5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#A5A5A5" />
+    </linearGradient>
+    <linearGradient
+       x1="279.10999"
+       y1="148.03"
+       x2="309.16"
+       y2="148.03"
+       id="lg2818"
+       xlink:href="#XMLID_2429_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
+    <radialGradient
+       cx="622.34302"
+       cy="14.449"
+       r="26.496"
+       fx="622.34302"
+       fy="14.449"
+       id="lg3499_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.851,0,0,0.849,69.297,51.658)">
+      <stop
+         style="stop-color:#23468e;stop-opacity:1"
+         offset="0"
+         id="stop10972" />
+      <stop
+         style="stop-color:#012859;stop-opacity:1"
+         offset="1"
+         id="stop10974" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#23468E" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#23468E" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#012859" />
+    </radialGradient>
+    <radialGradient
+       cx="622.34302"
+       cy="14.449"
+       r="26.496"
+       fx="622.34302"
+       fy="14.449"
+       id="rg5791"
+       xlink:href="#lg3499_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.858,0,0,0.857,-511.7,9.02)" />
+    <linearGradient
+       x1="616.112"
+       y1="76.247002"
+       x2="588.14099"
+       y2="60.742001"
+       id="lg3497_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#01326e;stop-opacity:1"
+         offset="0"
+         id="stop10962" />
+      <stop
+         style="stop-color:#012859;stop-opacity:1"
+         offset="1"
+         id="stop10964" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#01326E" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#01326E" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#012859" />
+    </linearGradient>
+    <linearGradient
+       x1="617.698"
+       y1="82.445999"
+       x2="585.95203"
+       y2="54.848999"
+       id="lg3496_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="stop10950" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop10952" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="617.698"
+       y1="82.445999"
+       x2="585.95203"
+       y2="54.848999"
+       id="lg5794"
+       xlink:href="#lg3496_"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="601.39001"
+       y1="55.341"
+       x2="588.29199"
+       y2="71.515999"
+       id="lg3495_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop10941" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.52200001"
+         id="stop10943" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop10945" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.522"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="601.39001"
+       y1="55.341"
+       x2="588.29199"
+       y2="71.515999"
+       id="lg5771"
+       xlink:href="#lg3495_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.009,0,0,1.009,-581.615,-43.098)" />
+    <linearGradient
+       x1="611.34601"
+       y1="55.279999"
+       x2="590.39001"
+       y2="81.157997"
+       id="lg3494_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop10932" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.52200001"
+         id="stop10934" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop10936" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.522"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="611.34601"
+       y1="55.279999"
+       x2="590.39001"
+       y2="81.157997"
+       id="lg5774"
+       xlink:href="#lg3494_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.009,0,0,1.009,-581.616,-43.098)" />
+    <linearGradient
+       x1="798.72998"
+       y1="69.839996"
+       x2="799.04999"
+       y2="70.709999"
+       id="g3302_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#005e00;stop-opacity:1"
+         offset="0"
+         id="s6504" />
+      <stop
+         style="stop-color:#23a11f;stop-opacity:1"
+         offset="1"
+         id="s6506" />
+      <a:midPointstop
+         style="stop-color:#005E00"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#005E00"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#23A11F"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="798.72998"
+       y1="69.839996"
+       x2="799.04999"
+       y2="70.709999"
+       id="lg5851"
+       xlink:href="#g3302_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
+    <linearGradient
+       x1="779.19"
+       y1="122.73"
+       x2="811.69"
+       y2="149.74001"
+       id="g3301_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,129.19)">
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0"
+         id="s6483" />
+      <stop
+         style="stop-color:#eee;stop-opacity:1"
+         offset="0.17"
+         id="s6485" />
+      <stop
+         style="stop-color:#e3e3e3;stop-opacity:1"
+         offset="0.34"
+         id="s6487" />
+      <stop
+         style="stop-color:#cfcfcf;stop-opacity:1"
+         offset="0.50999999"
+         id="s6489" />
+      <stop
+         style="stop-color:#b4b4b4;stop-opacity:1"
+         offset="0.67000002"
+         id="s6491" />
+      <stop
+         style="stop-color:#919191;stop-opacity:1"
+         offset="0.83999997"
+         id="s6493" />
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="1"
+         id="s6495" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.71" />
+      <a:midPointstop
+         style="stop-color:#666666"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="779.19"
+       y1="122.73"
+       x2="811.69"
+       y2="149.74001"
+       id="lg5855"
+       xlink:href="#g3301_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,-0.316,0,1.263,-926.036,103.123)" />
+    <clipPath
+       id="g3299_">
+      <use
+         id="use6469"
+         x="0"
+         y="0"
+         width="1005.92"
+         height="376.97"
+         xlink:href="#g101_" />
+    </clipPath>
+    <radialGradient
+       cx="1189.9301"
+       cy="100.05"
+       r="40.400002"
+       fx="1189.9301"
+       fy="100.05"
+       id="g3300_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.34,-8.46e-2,0,0.34,394.16,137.13)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s6472" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="s6474" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#000000"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1199.74"
+       cy="97.150002"
+       r="40.400002"
+       fx="1199.74"
+       fy="97.150002"
+       id="rg5860"
+       xlink:href="#g3300_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.409,-0.107,0,0.429,-451.489,113.149)" />
+    <linearGradient
+       x1="796.38"
+       y1="67.580002"
+       x2="781.28003"
+       y2="58.549999"
+       id="g3298_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#4c8bca;stop-opacity:1"
+         offset="0"
+         id="s6462" />
+      <stop
+         style="stop-color:#b7e9ff;stop-opacity:1"
+         offset="1"
+         id="s6464" />
+      <a:midPointstop
+         style="stop-color:#4C8BCA"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#4C8BCA"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B7E9FF"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="800.97998"
+       y1="140.72"
+       x2="777.71997"
+       y2="121.76"
+       id="g3297_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,129.19)">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="s6448" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s6450" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="800.97998"
+       y1="140.72"
+       x2="777.71997"
+       y2="121.76"
+       id="lg5890"
+       xlink:href="#g3297_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,129.19)" />
+    <linearGradient
+       x1="790.03998"
+       y1="-16.33"
+       x2="779.84003"
+       y2="-3.73"
+       id="g3296_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0,70.17)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="s6439" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.51999998"
+         id="s6441" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s6443" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.52" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="790.03998"
+       y1="-16.33"
+       x2="779.84003"
+       y2="-3.73"
+       id="lg5866"
+       xlink:href="#g3296_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,28.6)" />
+    <linearGradient
+       x1="785.84003"
+       y1="72.989998"
+       x2="785.26001"
+       y2="76.279999"
+       id="g3293_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s6412" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="1"
+         id="s6414" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#737373"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="785.84003"
+       y1="72.989998"
+       x2="785.26001"
+       y2="76.279999"
+       id="lg5871"
+       xlink:href="#g3293_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
+    <linearGradient
+       x1="789.37"
+       y1="69.879997"
+       x2="791.03998"
+       y2="77.120003"
+       id="g3292_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="0"
+         id="s6403" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.28"
+         id="s6405" />
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="1"
+         id="s6407" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.28" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#666666"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="789.37"
+       y1="69.879997"
+       x2="791.03998"
+       y2="77.120003"
+       id="lg5874"
+       xlink:href="#g3292_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
+    <linearGradient
+       x1="786.65997"
+       y1="136.12"
+       x2="786.71002"
+       y2="134.33"
+       id="g3290_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,137.29)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="s6380" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="1"
+         id="s6382" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="786.65997"
+       y1="136.12"
+       x2="786.71002"
+       y2="134.33"
+       id="lg5878"
+       xlink:href="#g3290_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,-0.316,0,1.263,-926.036,113.351)" />
+    <radialGradient
+       cx="1458.77"
+       cy="-5.0999999"
+       r="35.130001"
+       fx="1458.77"
+       fy="-5.0999999"
+       id="g3289_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.42,0,0,0.42,167.09,79.84)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s6371" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="s6373" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1458.77"
+       cy="-5.0999999"
+       r="35.130001"
+       fx="1458.77"
+       fy="-5.0999999"
+       id="rg5881"
+       xlink:href="#g3289_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.505,0,0,0.53,-724.957,40.636)" />
+    <radialGradient
+       cx="1612.98"
+       cy="-4.4699998"
+       r="36.580002"
+       fx="1612.98"
+       fy="-4.4699998"
+       id="g3288_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.34,0,0,0.36,238.56,86.87)">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="s6362" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0.63999999"
+         id="s6364" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="1"
+         id="s6366" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.64" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#737373"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1612.98"
+       cy="-4.4699998"
+       r="36.580002"
+       fx="1612.98"
+       fy="-4.4699998"
+       id="rg5884"
+       xlink:href="#g3288_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.408,0,0,0.448,-638.943,49.495)" />
+    <radialGradient
+       cx="1470.5"
+       cy="-10.21"
+       r="33.290001"
+       fx="1470.5"
+       fy="-10.21"
+       id="g3287_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.42,0,0,0.42,167.09,79.84)">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="s6347" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0.38999999"
+         id="s6349" />
+      <stop
+         style="stop-color:#b1b1b1;stop-opacity:1"
+         offset="0.75"
+         id="s6351" />
+      <stop
+         style="stop-color:#aaa;stop-opacity:1"
+         offset="0.88"
+         id="s6353" />
+      <stop
+         style="stop-color:#9e9e9e;stop-opacity:1"
+         offset="0.97000003"
+         id="s6355" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="s6357" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.39" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.87" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1470.5"
+       cy="-10.21"
+       r="33.290001"
+       fx="1470.5"
+       fy="-10.21"
+       id="rg5887"
+       xlink:href="#g3287_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.505,0,0,0.53,-724.957,40.636)" />
+    <pattern
+       patternTransform="matrix(0.592927,0,0,0.592927,78,462)"
+       id="cream-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-365.3146,-513.505)"
+         id="g3047">
+           id=&quot;path2858&quot; /&gt;
+        <path
+   inkscape:label="#path2854"
+   sodipodi:nodetypes="czzzz"
+   style="fill:#e3dcc0"
+   id="path3060"
+   d="M 390.31462,529.50504 C 390.31462,534.47304 386.28262,538.50504 381.31462,538.50504 C 376.34662,538.50504 372.31462,534.47304 372.31462,529.50504 C 372.31462,524.53704 376.34662,520.50504 381.31462,520.50504 C 386.28262,520.50504 390.31462,524.53704 390.31462,529.50504 z " />
+</g>
+    </pattern>
+    <pattern
+       patternTransform="matrix(0.733751,0,0,0.733751,67,367)"
+       id="dark-cream-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-408.0946,-513.505)"
+         id="dark-cream-spot"
+         inkscape:label="#g3043">
+        <path
+           sodipodi:nodetypes="czzzz"
+           style="fill:#c8c5ac"
+           d="M 433.09458,529.50504 C 433.09458,534.47304 429.06258,538.50504 424.09458,538.50504 C 419.12658,538.50504 415.09458,534.47304 415.09458,529.50504 C 415.09458,524.53704 419.12658,520.50504 424.09458,520.50504 C 429.06258,520.50504 433.09458,524.53704 433.09458,529.50504 z "
+           id="path2953" />
+      </g>
+    </pattern>
+    <pattern
+       patternTransform="matrix(0.375,0,0,0.375,379,400)"
+       id="white-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-484.3997,-513.505)"
+         id="white-spot"
+         inkscape:label="#g3035">
+        <path
+           style="opacity:0.25;fill:white"
+           id="path3033"
+           d="M 509.39967,529.50504 C 509.39967,534.47304 505.36767,538.50504 500.39967,538.50504 C 495.43167,538.50504 491.39967,534.47304 491.39967,529.50504 C 491.39967,524.53704 495.43167,520.50504 500.39967,520.50504 C 505.36767,520.50504 509.39967,524.53704 509.39967,529.50504 z "
+           sodipodi:nodetypes="czzzz" />
+      </g>
+    </pattern>
+    <pattern
+       patternTransform="matrix(0.455007,0,0,0.455007,-5e-5,1.9e-5)"
+       id="black-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-448.3997,-513.505)"
+         id="black-spot"
+         inkscape:label="#g3039">
+        <path
+           sodipodi:nodetypes="czzzz"
+           d="M 473.39967,529.50504 C 473.39967,534.47304 469.36767,538.50504 464.39967,538.50504 C 459.43167,538.50504 455.39967,534.47304 455.39967,529.50504 C 455.39967,524.53704 459.43167,520.50504 464.39967,520.50504 C 469.36767,520.50504 473.39967,524.53704 473.39967,529.50504 z "
+           id="path2961"
+           style="opacity:0.25;fill:black" />
+      </g>
+    </pattern>
+    <linearGradient
+       x1="501.0903"
+       y1="-19.2544"
+       x2="531.85413"
+       y2="0.72390002"
+       id="linearGradient17334"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop17336" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop17338" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop17340" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop17342" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.5112"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.6461"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#16336E" />
+    </linearGradient>
+    <linearGradient
+       x1="415.73831"
+       y1="11.854"
+       x2="418.13361"
+       y2="18.8104"
+       id="linearGradient17426"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8362,0.5206,-1.1904,0.992,147.62,-30.9374)">
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="0"
+         id="stop17428" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop17430" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#F2F2F2" />
+    </linearGradient>
+    <linearGradient
+       x1="478.21341"
+       y1="-131.9297"
+       x2="469.85818"
+       y2="-140.28481"
+       id="linearGradient17434"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.5592,0.829,-0.829,0.5592,101.3357,-104.791)">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop17436" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop17438" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop17440" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop17442" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#F3403F" />
+      <a:midPointStop
+         offset="0.4213"
+         style="stop-color:#F3403F" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#A6100C" />
+    </linearGradient>
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17709"
+       xlink:href="#XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)" />
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17711"
+       xlink:href="#XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="linearGradient17713"
+       xlink:href="#XMLID_1753_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17715"
+       xlink:href="#XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="500.70749"
+       y1="-13.2441"
+       x2="513.46442"
+       y2="-2.1547"
+       id="linearGradient17717"
+       xlink:href="#XMLID_1757_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="linearGradient17721"
+       xlink:href="#XMLID_2274_"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="linearGradient17723"
+       xlink:href="#XMLID_2275_"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="500.70749"
+       y1="-13.2441"
+       x2="513.46442"
+       y2="-2.1547"
+       id="linearGradient17416"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop17418" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop17420" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <defs
+       id="defs9929">
+      <path
+         d="M 489.21,209.35 L 485.35,203.63 C 483.63,204.25 473.47,208.93 471.5,210.18 C 470.57,210.77 470.17,211.16 469.72,212.48 C 470.93,212.31 471.72,212.49 473.42,213.04 C 473.26,214.77 473.24,215.74 473.57,218.2 C 474.01,216.88 474.41,216.49 475.34,215.9 C 477.33,214.65 487.49,209.97 489.21,209.35 z "
+         id="XMLID_960_" />
+    </defs>
+    <clipPath
+       id="clipPath17448">
+      <use
+         id="use17450"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_960_" />
+    </clipPath>
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="linearGradient17452"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop17454" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop17456" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop17458" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop17460" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="linearGradient17463"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop17465" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop17467" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop17469" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop17471" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="linearGradient17807"
+       xlink:href="#XMLID_2275_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-177.1654,35.43307)" />
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="linearGradient17810"
+       xlink:href="#XMLID_2274_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-177.1654,35.43307)" />
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17812"
+       xlink:href="#XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)" />
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17814"
+       xlink:href="#XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="linearGradient17816"
+       xlink:href="#XMLID_1753_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17818"
+       xlink:href="#XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17347"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop17349" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop17351" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#96BAD6" />
+    </linearGradient>
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="linearGradient17379"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop17381" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop17383" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#F2F2F2" />
+    </linearGradient>
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17862"
+       xlink:href="#XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,-166.1427,-0.18283)" />
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17864"
+       xlink:href="#XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <defs
+       id="defs3859">
+      <polygon
+         points="465.54,213.52 481.94,217.46 482.74,216.71 487.46,198.05 471.08,194.07 470.26,194.83 465.54,213.52 "
+         id="XMLID_343_" />
+    </defs>
+    <linearGradient
+       x1="471.0806"
+       y1="201.07761"
+       x2="481.91711"
+       y2="210.4977"
+       id="linearGradient17389"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#6498c1;stop-opacity:1"
+         offset="0.005618"
+         id="stop17391" />
+      <stop
+         style="stop-color:#79a9cc;stop-opacity:1"
+         offset="0.2332"
+         id="stop17393" />
+      <stop
+         style="stop-color:#a4cde2;stop-opacity:1"
+         offset="0.74049997"
+         id="stop17395" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="1"
+         id="stop17397" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="5.618000e-003" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="0.4438" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="clipPath17400">
+      <use
+         id="use17402"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_343_" />
+    </clipPath>
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17404"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop17406" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop17408" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop17410" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop17412" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17882"
+       xlink:href="#XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <defs
+       id="defs3826">
+      <polygon
+         points="463.52,216.14 480.56,220.24 481.36,219.5 483.03,202.04 469.05,196.69 468.24,197.45 463.52,216.14 "
+         id="XMLID_338_" />
+    </defs>
+    <linearGradient
+       x1="468.2915"
+       y1="204.7612"
+       x2="479.39871"
+       y2="214.4166"
+       id="linearGradient17357"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop17359" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop17361" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="clipPath17364">
+      <use
+         id="use17366"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_338_" />
+    </clipPath>
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17368"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop17370" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop17372" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop17374" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop17376" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398"
+       id="linearGradient2387"
+       xlink:href="#linearGradient2381"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
+    <linearGradient
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398"
+       id="linearGradient5105"
+       xlink:href="#linearGradient2381"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
+    <linearGradient
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398"
+       id="linearGradient5145"
+       xlink:href="#linearGradient2381"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2381"
+       id="linearGradient2371"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)"
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398" />
+  </defs>
+  <g
+     transform="matrix(0.437808,-0.437808,0.437808,0.437808,-220.8237,43.55311)"
+     id="g5089">
+    <path
+       d="M 8.4382985,-6.28125 C 7.8309069,-6.28125 4.125,-0.33238729 4.125,1.96875 L 4.125,28.6875 C 4.125,29.533884 4.7068159,29.8125 5.28125,29.8125 L 30.84375,29.8125 C 31.476092,29.8125 31.968751,29.319842 31.96875,28.6875 L 31.96875,23.46875 L 32.25,23.46875 C 32.74684,23.46875 33.156249,23.059339 33.15625,22.5625 L 33.15625,-5.375 C 33.15625,-5.8718398 32.74684,-6.28125 32.25,-6.28125 L 8.4382985,-6.28125 z "
+       transform="translate(282.8327,227.1903)"
+       style="fill:#5c5c4f;stroke:black;stroke-width:3.23021388;stroke-miterlimit:4;stroke-dasharray:none"
+       id="path5091" />
+    <rect
+       width="27.85074"
+       height="29.369793"
+       rx="1.1414107"
+       ry="1.1414107"
+       x="286.96509"
+       y="227.63805"
+       style="fill:#032c87"
+       id="rect5093" />
+    <path
+       d="M 288.43262,225.43675 L 313.67442,225.43675 L 313.67442,254.80655 L 287.29827,254.83069 L 288.43262,225.43675 z "
+       style="fill:white"
+       id="rect5095" />
+    <path
+       d="M 302.44536,251.73726 C 303.83227,259.59643 301.75225,263.02091 301.75225,263.02091 C 303.99609,261.41329 305.71651,259.54397 306.65747,257.28491 C 307.62455,259.47755 308.49041,261.71357 310.9319,263.27432 C 310.9319,263.27432 309.33686,256.07392 309.22047,251.73726 L 302.44536,251.73726 z "
+       style="fill:#a70000;fill-opacity:1;stroke-width:2"
+       id="path5097" />
+    <rect
+       width="25.241802"
+       height="29.736675"
+       rx="0.89682275"
+       ry="0.89682275"
+       x="290.73544"
+       y="220.92249"
+       style="fill:#809cc9"
+       id="rect5099" />
+    <path
+       d="M 576.47347,725.93939 L 582.84431,726.35441 L 583.25121,755.8725 C 581.35919,754.55465 576.39694,752.1117 574.98889,754.19149 L 574.98889,727.42397 C 574.98889,726.60151 575.65101,725.93939 576.47347,725.93939 z "
+       transform="matrix(0.499065,-0.866565,0,1,0,0)"
+       style="fill:#4573b3;fill-opacity:1"
+       id="rect5101" />
+    <path
+       d="M 293.2599,221.89363 L 313.99908,221.89363 C 314.45009,221.89363 314.81318,222.25673 314.81318,222.70774 C 315.02865,229.0361 295.44494,244.47124 292.44579,240.30491 L 292.44579,222.70774 C 292.44579,222.25673 292.80889,221.89363 293.2599,221.89363 z "
+       style="opacity:0.65536726;fill:url(#linearGradient2371);fill-opacity:1"
+       id="path5103" />
+  </g>
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/issues.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/issues.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/layoutForm-example.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/layoutForm-example.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/list.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/list.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/messages.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/messages.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/numberguess-pageflow.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/numberguess-pageflow.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/numberguess.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/numberguess.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/plugin-jbpm-numguess.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/plugin-jbpm-numguess.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/plugin-jbpm-todo.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/plugin-jbpm-todo.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/plugin-testng.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/plugin-testng.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/register.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/register.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/registration.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/registration.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/switcher.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/switcher.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/testng.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/testng.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/todo-process.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/todo-process.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/todo.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/images/todo.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/index.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/index.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html/index.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Seam Reference Guide CP07</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><meta name="description" content="This book is a Reference Guide to Seam 1.2 for JBoss Enterprise Application Platform 4.3." /><link rel="home" href="index.html" title="Seam Reference Guide CP07" /><link rel="next" href="Feedback.html" title="Chapter 1. Feedback" /></head><body class=""><p id="title"><a class="left" href="http://www.redhat.com/docs"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="http://www.jboss.com"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="p!
 revious"></li><li class="next"><a accesskey="n" href="Feedback.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="book" title="Seam Reference Guide CP07" lang="en-US"><div class="titlepage"><div><div class="producttitle"><span class="productname">JBoss Enterprise Application Platform</span> <span class="productnumber">4.3</span></div><div><h1 id="id2657200" class="title">Seam Reference Guide CP07</h1></div><div><h2 class="subtitle">for Use with JBoss Enterprise Application Platform 4.3 Cumulative Patch 7</h2></div><p class="edition">Edition 2.0</p><div><h3 class="corpauthor">
+		<span class="inlinemediaobject"><object data="Common_Content/images/redhat-logo.svg" type="image/svg+xml"> </object></span>
+	</h3></div><div><div xml:lang="en-US" class="authorgroup" lang="en-US"><div class="author"><h3 class="author"><span class="firstname">Written By: Gavin King, Christian Bauer, Norman Richards, Shane Bryzak, Pete Muir, Emmanuel Bernard, Max Andersen, Michael Youngstrom, Thomas Heute, Michael Yuan</span></h3></div><div class="othercredit"><h3 class="othercredit"><span class="firstname">Japanese Translation: Fusayuki Minamoto, Takayoshi Kimura, Takayoshi Osawa, Reiko Ohtsuka, Syunpei Shiraishi, Toshiya Kobayashi, Shigeaki Wakizaka, Ken Yamada, Noriko Mizumoto</span></h3></div></div></div><div><p class="copyright">Copyright © 2009 Red Hat, Inc</p></div><hr /><div><div id="id2806586" class="legalnotice"><h1 class="legalnotice">Legal Notice</h1><div class="para">
+		Copyright <span class="trademark"></span>© 2009 Red Hat, Inc. This material may only be distributed subject to the terms and conditions set forth in the Open Publication License, V1.0, (the latest version is presently available at <a href="http://www.opencontent.org/openpub/">http://www.opencontent.org/openpub/</a>).
+	</div><div class="para">
+		Red Hat, Red Hat Enterprise Linux, the Shadowman logo, JBoss, MetaMatrix, Fedora, the Infinity Logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
+	</div><div class="para">
+		<span class="trademark">Linux</span>® is the registered trademark of Linus Torvalds in the United States and other countries.
+	</div><div class="para">
+		All other trademarks are the property of their respective owners.
+	</div><div class="para">
+		<div class="address"><p><br />
+			<span class="street">1801 Varsity Drive</span><br />
+			<span class="city">Raleigh</span>, <span class="state">NC</span> <span class="postcode">27606-2072</span> <span class="country">USA</span><br />
+			<span class="phone">Phone: +1 919 754 3700</span><br />
+			<span class="phone">Phone: 888 733 4281</span><br />
+			<span class="fax">Fax: +1 919 754 3701</span><br />
+			<span class="pob">PO Box 13588</span> <span class="city">Research Triangle Park</span>, <span class="state">NC</span> <span class="postcode">27709</span> <span class="country">USA</span><br />
+		</p></div>
+	</div></div></div><div><div class="abstract" title="Abstract"><h6>Abstract</h6><div class="para">
+This book is a Reference Guide to Seam 1.2 for JBoss Enterprise
+Application Platform 4.3.
+</div></div></div></div><hr /></div><div class="toc"><dl><dt><span class="chapter"><a href="Feedback.html">1. Feedback</a></span></dt><dt><span class="preface"><a href="Seam_Reference_Guide-Introduction_to_JBoss_Seam.html">Introduction to JBoss Seam</a></span></dt><dt><span class="chapter"><a href="Seam_Reference_Guide-Seam_Tutorial.html">2. Seam Tutorial</a></span></dt><dd><dl><dt><span class="section"><a href="Seam_Reference_Guide-Seam_Tutorial.html#Seam_Reference_Guide-Seam_Tutorial-Try_the_examples">2.1. Try the examples</a></span></dt><dd><dl><dt><span class="section"><a href="Seam_Reference_Guide-Seam_Tutorial.html#Seam_Reference_Guide-Try_the_examples-Running_the_examples_on_JBoss_AS">2.1.1. Running the examples on JBoss Enterprise Application Platform</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Seam_Tutorial.html#Seam_Reference_Guide-Try_the_examples-Running_the_examples_on_Tomcat">2.1.2. Running the examples on Tomcat</a></span></dt><dt><!
 span class="section"><a href="Seam_Reference_Guide-Seam_Tutorial.html#Seam_Reference_Guide-Try_the_examples-Running_the_example_tests">2.1.3. Running the example tests</a></span></dt></dl></dd><dt><span class="section"><a href="Seam_Reference_Guide-Seam_Tutorial-Your_first_Seam_application_the_registration_example.html">2.2. Your first Seam application: the registration example</a></span></dt><dd><dl><dt><span class="section"><a href="Seam_Reference_Guide-Seam_Tutorial-Your_first_Seam_application_the_registration_example.html#Seam_Reference_Guide-Your_first_Seam_application_the_registration_example-Understanding_the_code">2.2.1. Understanding the code</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Your_first_Seam_application_the_registration_example-How_it_works.html">2.2.2. How it works</a></span></dt></dl></dd><dt><span class="section"><a href="Seam_Reference_Guide-Seam_Tutorial-Clickable_lists_in_Seam_the_messages_example.html">2.3. Clickable list!
 s in Seam: the messages example</a></span></dt><dd><dl><dt><sp!
 an class
="section"><a href="Seam_Reference_Guide-Seam_Tutorial-Clickable_lists_in_Seam_the_messages_example.html#Seam_Reference_Guide-Clickable_lists_in_Seam_the_messages_example-Understanding_the_code">2.3.1. Understanding the code</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Clickable_lists_in_Seam_the_messages_example-How_it_works.html">2.3.2. How it works</a></span></dt></dl></dd><dt><span class="section"><a href="Seam_Reference_Guide-Seam_Tutorial-Seam_and_jBPM_the_todo_list_example.html">2.4. Seam and jBPM: the todo list example</a></span></dt><dd><dl><dt><span class="section"><a href="Seam_Reference_Guide-Seam_Tutorial-Seam_and_jBPM_the_todo_list_example.html#Seam_Reference_Guide-Seam_and_jBPM_the_todo_list_example-Understanding_the_code">2.4.1. Understanding the code</a></span></dt></dl></dd><dt><span class="section"><a href="Seam_Reference_Guide-Seam_Tutorial-Seam_pageflow_the_numberguess_example.html">2.5. Seam pageflow: the numberguess example</a!
 ></span></dt><dd><dl><dt><span class="section"><a href="Seam_Reference_Guide-Seam_Tutorial-Seam_pageflow_the_numberguess_example.html#Seam_Reference_Guide-Seam_pageflow_the_numberguess_example-Understanding_the_code">2.5.1. Understanding the code</a></span></dt></dl></dd><dt><span class="section"><a href="Seam_Reference_Guide-Seam_Tutorial-A_complete_Seam_application_the_Hotel_Booking_example.html">2.6. A complete Seam application: the Hotel Booking example</a></span></dt><dd><dl><dt><span class="section"><a href="Seam_Reference_Guide-Seam_Tutorial-A_complete_Seam_application_the_Hotel_Booking_example.html#Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-Introduction">2.6.1. Introduction</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-Overview_of_the_booking_example.html">2.6.2. Overview of the booking example</a></span></dt><dt><span class="section"><a href="Seam_Referenc!
 e_Guide-A_complete_Seam_application_the_Hotel_Booking_example-!
 Understa
nding_Seam_conversations.html">2.6.3. Understanding Seam conversations</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-The_Seam_UI_control_library.html">2.6.4. The Seam UI control library</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-The_Seam_Debug_Page.html">2.6.5. The Seam Debug Page</a></span></dt></dl></dd><dt><span class="section"><a href="Seam_Reference_Guide-Seam_Tutorial-A_complete_application_featuring_Seam_and_jBPM_the_DVD_Store_example.html">2.7. A complete application featuring Seam and jBPM: the DVD Store example</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Seam_Tutorial-A_complete_application_featuring_Seam_workspace_management_the_Issue_Tracker_example.html">2.8. A complete application featuring Seam workspace management: the Issue Tracker example</a></span></dt><dt><span class="se!
 ction"><a href="Seam_Reference_Guide-Seam_Tutorial-An_example_of_Seam_with_Hibernate_the_Hibernate_Booking_example.html">2.9. An example of Seam with Hibernate: the Hibernate Booking example</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Seam_Tutorial-A_RESTful_Seam_application_the_Blog_example.html">2.10. A RESTful Seam application: the Blog example</a></span></dt><dd><dl><dt><span class="section"><a href="Seam_Reference_Guide-Seam_Tutorial-A_RESTful_Seam_application_the_Blog_example.html#Seam_Reference_Guide-A_RESTful_Seam_application_the_Blog_example-Using_pull_style_MVC">2.10.1. Using "pull"-style MVC</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-A_RESTful_Seam_application_the_Blog_example-Bookmarkable_search_results_page.html">2.10.2. Bookmarkable search results page</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-A_RESTful_Seam_application_the_Blog_example-Using_push_style_MVC_in_a_RESTful_applica!
 tion.html">2.10.3. Using "push"-style MVC in a RESTful applica!
 tion</a>
</span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="Seam_Reference_Guide-The_contextual_component_model.html">3. The contextual component model</a></span></dt><dd><dl><dt><span class="sect1"><a href="Seam_Reference_Guide-The_contextual_component_model.html#Seam_Reference_Guide-The_contextual_component_model-Seam_contexts">3.1. Seam contexts</a></span></dt><dd><dl><dt><span class="sect2"><a href="Seam_Reference_Guide-The_contextual_component_model.html#Seam_Reference_Guide-Seam_contexts-Stateless_context">3.1.1. Stateless context</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-The_contextual_component_model.html#Seam_Reference_Guide-Seam_contexts-Event_context">3.1.2. Event context</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-The_contextual_component_model.html#Seam_Reference_Guide-Seam_contexts-Page_context">3.1.3. Page context</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-The_contextual_compo!
 nent_model.html#Seam_Reference_Guide-Seam_contexts-Conversation_context">3.1.4. Conversation context</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-The_contextual_component_model.html#Seam_Reference_Guide-Seam_contexts-Session_context">3.1.5. Session context</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-The_contextual_component_model.html#Seam_Reference_Guide-Seam_contexts-Business_process_context">3.1.6. Business process context</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-The_contextual_component_model.html#Seam_Reference_Guide-Seam_contexts-Application_context">3.1.7. Application context</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-The_contextual_component_model.html#Seam_Reference_Guide-Seam_contexts-Context_variables">3.1.8. Context variables</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-The_contextual_component_model.html#Seam_Reference_Guide-Seam_contex!
 ts-Context_search_priority">3.1.9. Context search priority</a>!
 </span><
/dt><dt><span class="sect2"><a href="Seam_Reference_Guide-The_contextual_component_model.html#Seam_Reference_Guide-Seam_contexts-Concurrency_model">3.1.10. Concurrency model</a></span></dt></dl></dd><dt><span class="sect1"><a href="Seam_Reference_Guide-The_contextual_component_model-Seam_components.html">3.2. Seam components</a></span></dt><dd><dl><dt><span class="sect2"><a href="Seam_Reference_Guide-The_contextual_component_model-Seam_components.html#Seam_Reference_Guide-Seam_components-Stateless_session_beans">3.2.1. Stateless session beans</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Seam_components-Stateful_session_beans.html">3.2.2. Stateful session beans</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Seam_components-Entity_beans.html">3.2.3. Entity beans</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Seam_components-JavaBeans.html">3.2.4. JavaBeans</a></span></dt><dt><span class="sect2"><a href="Seam_R!
 eference_Guide-Seam_components-Message_driven_beans.html">3.2.5. Message-driven beans</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Seam_components-Interception.html">3.2.6. Interception</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Seam_components-Component_names.html">3.2.7. Component names</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Seam_components-Defining_the_component_scope.html">3.2.8. Defining the component scope</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Seam_components-Components_with_multiple_roles.html">3.2.9. Components with multiple roles</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Seam_components-Built_in_components.html">3.2.10. Built-in components</a></span></dt></dl></dd><dt><span class="sect1"><a href="Seam_Reference_Guide-The_contextual_component_model-Bijection.html">3.3. Bijection</a></span></dt><dt><span class="sect1"><a href="Seam!
 _Reference_Guide-The_contextual_component_model-Lifecycle_meth!
 ods.html
">3.4. Lifecycle methods</a></span></dt><dt><span class="sect1"><a href="Seam_Reference_Guide-The_contextual_component_model-Conditional_installation.html">3.5. Conditional installation</a></span></dt><dt><span class="sect1"><a href="Seam_Reference_Guide-The_contextual_component_model-Logging.html">3.6. Logging</a></span></dt><dt><span class="sect1"><a href="Seam_Reference_Guide-The_contextual_component_model-The_Mutable_interface_and_ReadOnly.html">3.7. The <code class="literal">Mutable</code> interface and <code class="literal">@ReadOnly</code></a></span></dt><dt><span class="sect1"><a href="Seam_Reference_Guide-The_contextual_component_model-Factory_and_manager_components.html">3.8. Factory and manager components</a></span></dt></dl></dd><dt><span class="chapter"><a href="Seam_Reference_Guide-Configuring_Seam_components.html">4. Configuring Seam components</a></span></dt><dd><dl><dt><span class="sect1"><a href="Seam_Reference_Guide-Configuring_Seam_components.html#Seam_Re!
 ference_Guide-Configuring_Seam_components-Configuring_components_via_property_settings">4.1. Configuring components via property settings</a></span></dt><dt><span class="sect1"><a href="Seam_Reference_Guide-Configuring_Seam_components-Configuring_components_via_components.xml.html">4.2. Configuring components via components.xml</a></span></dt><dt><span class="sect1"><a href="Seam_Reference_Guide-Configuring_Seam_components-Fine_grained_configuration_files.html">4.3. Fine-grained configuration files</a></span></dt><dt><span class="sect1"><a href="Seam_Reference_Guide-Configuring_Seam_components-Configurable_property_types.html">4.4. Configurable property types</a></span></dt><dt><span class="sect1"><a href="Seam_Reference_Guide-Configuring_Seam_components-Using_XML_Namespaces.html">4.5. Using XML Namespaces</a></span></dt></dl></dd><dt><span class="chapter"><a href="Seam_Reference_Guide-Events_interceptors_and_exception_handling.html">5. Events, interceptors and exception ha!
 ndling</a></span></dt><dd><dl><dt><span class="sect1"><a href=!
 "Seam_Re
ference_Guide-Events_interceptors_and_exception_handling.html#Seam_Reference_Guide-Events_interceptors_and_exception_handling-Seam_events">5.1. Seam events</a></span></dt><dd><dl><dt><span class="sect2"><a href="Seam_Reference_Guide-Events_interceptors_and_exception_handling.html#Seam_Reference_Guide-Seam_events-Page_actions">5.1.1. Page actions</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Events_interceptors_and_exception_handling.html#Seam_Reference_Guide-Seam_events-Component_driven_events">5.1.2. Component-driven events</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Events_interceptors_and_exception_handling.html#Seam_Reference_Guide-Seam_events-Contextual_events">5.1.3. Contextual events</a></span></dt></dl></dd><dt><span class="sect1"><a href="Seam_Reference_Guide-Events_interceptors_and_exception_handling-Seam_interceptors.html">5.2. Seam interceptors</a></span></dt><dt><span class="sect1"><a href="Seam_Reference_Guide-Eve!
 nts_interceptors_and_exception_handling-Managing_exceptions.html">5.3. Managing exceptions</a></span></dt><dd><dl><dt><span class="sect2"><a href="Seam_Reference_Guide-Events_interceptors_and_exception_handling-Managing_exceptions.html#Seam_Reference_Guide-Managing_exceptions-Exceptions_and_transactions">5.3.1. Exceptions and transactions</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Managing_exceptions-Enabling_Seam_exception_handling.html">5.3.2. Enabling Seam exception handling</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Managing_exceptions-Using_annotations_for_exception_handling.html">5.3.3. Using annotations for exception handling</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Managing_exceptions-Using_XML_for_exception_handling.html">5.3.4. Using XML for exception handling</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="Seam_Reference_Guide-Conversations_and_workspace_manageme!
 nt.html">6. Conversations and workspace management</a></span><!
 /dt><dd>
<dl><dt><span class="section"><a href="Seam_Reference_Guide-Conversations_and_workspace_management.html#Seam_Reference_Guide-Conversations_and_workspace_management-Seams_conversation_model">6.1. Seam's conversation model</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Conversations_and_workspace_management-Nested_conversations.html">6.2. Nested conversations</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Conversations_and_workspace_management-Starting_conversations_with_GET_requests.html">6.3. Starting conversations with GET requests</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Conversations_and_workspace_management-Using_slink_and_sbutton.html">6.4. Using <code class="literal">&lt;s:link&gt;</code> and <code class="literal">&lt;s:button&gt;</code></a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Conversations_and_workspace_management-Success_messages.html">6.5. Success messages</a!
 ></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Conversations_and_workspace_management-Using_an_explicit_conversation_id.html">6.6. Using an <span class="emphasis"><em>explicit</em></span> conversation ID</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Conversations_and_workspace_management-Workspace_management.html">6.7. Workspace management</a></span></dt><dd><dl><dt><span class="section"><a href="Seam_Reference_Guide-Conversations_and_workspace_management-Workspace_management.html#Seam_Reference_Guide-Workspace_management-Workspace_management_and_JSF_navigation">6.7.1. Workspace management and JSF navigation</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Workspace_management-Workspace_management_and_jPDL_pageflow.html">6.7.2. Workspace management and jPDL pageflow</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Workspace_management-The_conversation_switcher.html">6.7.3. The convers!
 ation switcher</a></span></dt><dt><span class="section"><a hre!
 f="Seam_
Reference_Guide-Workspace_management-The_conversation_list.html">6.7.4. The conversation list</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Workspace_management-Breadcrumbs.html">6.7.5. Breadcrumbs</a></span></dt></dl></dd><dt><span class="section"><a href="Seam_Reference_Guide-Conversations_and_workspace_management-Conversational_components_and_JSF_component_bindings.html">6.8. Conversational components and JSF component bindings</a></span></dt></dl></dd><dt><span class="chapter"><a href="Seam_Reference_Guide-Pageflows_and_business_processes.html">7. Pageflows and business processes</a></span></dt><dd><dl><dt><span class="section"><a href="Seam_Reference_Guide-Pageflows_and_business_processes.html#Seam_Reference_Guide-Pageflows_and_business_processes-Pageflow_in_Seam">7.1. Pageflow in Seam</a></span></dt><dd><dl><dt><span class="section"><a href="Seam_Reference_Guide-Pageflows_and_business_processes.html#Seam_Reference_Guide-Pageflow_in_Seam-The_two!
 _navigation_models">7.1.1. The two navigation models</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Pageflows_and_business_processes.html#Seam_Reference_Guide-Pageflow_in_Seam-Seam_and_the_back_button">7.1.2. Seam and the back button</a></span></dt></dl></dd><dt><span class="section"><a href="Seam_Reference_Guide-Pageflows_and_business_processes-Using_jPDL_pageflows.html">7.2. Using jPDL pageflows</a></span></dt><dd><dl><dt><span class="section"><a href="Seam_Reference_Guide-Pageflows_and_business_processes-Using_jPDL_pageflows.html#Seam_Reference_Guide-Using_jPDL_pageflows-Installing_pageflows">7.2.1. Installing pageflows</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Using_jPDL_pageflows-Starting_pageflows.html">7.2.2. Starting pageflows</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Using_jPDL_pageflows-Page_nodes_and_transitions.html">7.2.3. Page nodes and transitions</a></span></dt><dt><span class=!
 "section"><a href="Seam_Reference_Guide-Using_jPDL_pageflows-C!
 ontrolli
ng_the_flow.html">7.2.4. Controlling the flow</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Using_jPDL_pageflows-Ending_the_flow.html">7.2.5. Ending the flow</a></span></dt></dl></dd><dt><span class="section"><a href="Seam_Reference_Guide-Pageflows_and_business_processes-Business_process_management_in_Seam.html">7.3. Business process management in Seam</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Pageflows_and_business_processes-Using_jPDL_business_process_definitions.html">7.4. Using jPDL business process definitions</a></span></dt><dd><dl><dt><span class="section"><a href="Seam_Reference_Guide-Pageflows_and_business_processes-Using_jPDL_business_process_definitions.html#Seam_Reference_Guide-Using_jPDL_business_process_definitions-Installing_process_definitions">7.4.1. Installing process definitions</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Initializing_ac!
 tor_ids.html">7.4.2. Initializing actor ids</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Initiating_a_business_process.html">7.4.3. Initiating a business process</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Task_assignment.html">7.4.4. Task assignment</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Task_lists.html">7.4.5. Task lists</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Performing_a_task.html">7.4.6. Performing a task</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping.html">8. Seam and Object/Relational Mapping</a></span></dt><dd><dl><dt><span class="section"><a href="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping.html#Seam_Refere!
 nce_Guide-Seam_and_ObjectRelational_Mapping-Introduction">8.1.!
  Introdu
ction</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Seam_managed_transactions.html">8.2. Seam managed transactions</a></span></dt><dd><dl><dt><span class="section"><a href="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Seam_managed_transactions.html#Seam_Reference_Guide-Seam_managed_transactions-Enabling_Seam_managed_transactions">8.2.1. Enabling Seam-managed transactions</a></span></dt></dl></dd><dt><span class="section"><a href="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Seam_managed_persistence_contexts.html">8.3. Seam-managed persistence contexts</a></span></dt><dd><dl><dt><span class="section"><a href="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Seam_managed_persistence_contexts.html#Seam_Reference_Guide-Seam_managed_persistence_contexts-Using_a_Seam_managed_persistence_context_with_JPA">8.3.1. Using a Seam-managed persistence context with JPA</a></span></dt><dt><span class="secti!
 on"><a href="Seam_Reference_Guide-Seam_managed_persistence_contexts-Using_a_Seam_managed_Hibernate_session.html">8.3.2. Using a Seam-managed Hibernate session</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Seam_managed_persistence_contexts-Seam_managed_persistence_contexts_and_atomic_conversations.html">8.3.3. Seam-managed persistence contexts and atomic conversations</a></span></dt></dl></dd><dt><span class="section"><a href="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_the_JPA_delegate.html">8.4. Using the JPA "delegate"</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_EL_in_EJB_QLHQL.html">8.5. Using EL in EJB-QL/HQL</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_Hibernate_filters.html">8.6. Using Hibernate filters</a></span></dt></dl></dd><dt><span class="chapter"><a href="Seam_Reference_Guide-JSF_form_vali!
 dation_in_Seam.html">9. JSF form validation in Seam</a></span>!
 </dt><dt
><span class="chapter"><a href="Seam_Reference_Guide-The_Seam_Application_Framework.html">10. The Seam Application Framework</a></span></dt><dd><dl><dt><span class="section"><a href="Seam_Reference_Guide-The_Seam_Application_Framework.html#Seam_Reference_Guide-The_Seam_Application_Framework-Introduction">10.1. Introduction</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-The_Seam_Application_Framework-Home_objects.html">10.2. Home objects</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-The_Seam_Application_Framework-Query_objects.html">10.3. Query objects</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-The_Seam_Application_Framework-Controller_objects.html">10.4. Controller objects</a></span></dt></dl></dd><dt><span class="chapter"><a href="drools.html">11. Seam and JBoss Rules</a></span></dt><dd><dl><dt><span class="section"><a href="drools.html#id2694764">11.1. Installing rules</a></span></dt><dt><span cla!
 ss="section"><a href="ch11s02.html">11.2. Using rules from a Seam component</a></span></dt><dt><span class="section"><a href="ch11s03.html">11.3. Using rules from a jBPM process definition</a></span></dt></dl></dd><dt><span class="chapter"><a href="Seam_Reference_Guide-Security.html">12. Security</a></span></dt><dd><dl><dt><span class="sect1"><a href="Seam_Reference_Guide-Security.html#Seam_Reference_Guide-Security-Overview">12.1. Overview</a></span></dt><dd><dl><dt><span class="sect2"><a href="Seam_Reference_Guide-Security.html#Seam_Reference_Guide-Overview-Which_mode_is_right_for_my_application">12.1.1. Which mode is right for my application?</a></span></dt></dl></dd><dt><span class="sect1"><a href="Seam_Reference_Guide-Security-Requirements.html">12.2. Requirements</a></span></dt><dt><span class="sect1"><a href="Seam_Reference_Guide-Security-Authentication.html">12.3. Authentication</a></span></dt><dd><dl><dt><span class="sect2"><a href="Seam_Reference_Guide-Security-Aut!
 hentication.html#Seam_Reference_Guide-Authentication-Configura!
 tion">12
.3.1. Configuration</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Authentication-Writing_an_authentication_method.html">12.3.2. Writing an authentication method</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Authentication-Writing_a_login_form.html">12.3.3. Writing a login form</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Authentication-Simplified_Configuration___Summary.html">12.3.4. Simplified Configuration - Summary</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Authentication-Handling_Security_Exceptions.html">12.3.5. Handling Security Exceptions</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Authentication-Login_Redirection.html">12.3.6. Login Redirection</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Authentication-Advanced_Authentication_Features.html">12.3.7. Advanced Authentication Features</a></span></dt></dl></dd><dt><span class="s!
 ect1"><a href="Seam_Reference_Guide-Security-Error_Messages.html">12.4. Error Messages</a></span></dt><dt><span class="sect1"><a href="Seam_Reference_Guide-Security-Authorization.html">12.5. Authorization</a></span></dt><dd><dl><dt><span class="sect2"><a href="Seam_Reference_Guide-Security-Authorization.html#Seam_Reference_Guide-Authorization-Core_concepts">12.5.1. Core concepts</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Authorization-Securing_components.html">12.5.2. Securing components</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Authorization-Security_in_the_user_interface.html">12.5.3. Security in the user interface</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Authorization-Securing_pages.html">12.5.4. Securing pages</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Authorization-Securing_Entities.html">12.5.5. Securing Entities</a></span></dt></dl></dd><dt><span class="sect1"><!
 a href="Seam_Reference_Guide-Security-Writing_Security_Rules.h!
 tml">12.
6. Writing Security Rules</a></span></dt><dd><dl><dt><span class="sect2"><a href="Seam_Reference_Guide-Security-Writing_Security_Rules.html#Seam_Reference_Guide-Writing_Security_Rules-Permissions_Overview">12.6.1. Permissions Overview</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Writing_Security_Rules-Configuring_a_rules_file.html">12.6.2. Configuring a rules file</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Writing_Security_Rules-Creating_a_security_rules_file.html">12.6.3. Creating a security rules file</a></span></dt></dl></dd><dt><span class="sect1"><a href="Seam_Reference_Guide-Security-SSL_Security.html">12.7. SSL Security</a></span></dt><dt><span class="sect1"><a href="Seam_Reference_Guide-Security-Implementing_a_Captcha_Test.html">12.8. Implementing a Captcha Test</a></span></dt><dd><dl><dt><span class="sect2"><a href="Seam_Reference_Guide-Security-Implementing_a_Captcha_Test.html#Seam_Reference_Guide-Implementing_a_Cap!
 tcha_Test-Configuring_the_Captcha_Servlet">12.8.1. Configuring the Captcha Servlet</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Implementing_a_Captcha_Test-Adding_a_Captcha_to_a_page.html">12.8.2. Adding a Captcha to a page</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="Seam_Reference_Guide-Internationalization_and_themes.html">13. Internationalization and themes</a></span></dt><dd><dl><dt><span class="section"><a href="Seam_Reference_Guide-Internationalization_and_themes.html#Seam_Reference_Guide-Internationalization_and_themes-Locales">13.1. Locales</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Internationalization_and_themes-Labels.html">13.2. Labels</a></span></dt><dd><dl><dt><span class="section"><a href="Seam_Reference_Guide-Internationalization_and_themes-Labels.html#Seam_Reference_Guide-Labels-Defining_labels">13.2.1. Defining labels</a></span></dt><dt><span class="section"><a href="Seam_Referen!
 ce_Guide-Labels-Displaying_labels.html">13.2.2. Displaying lab!
 els</a><
/span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Labels-Faces_messages.html">13.2.3. Faces messages</a></span></dt></dl></dd><dt><span class="section"><a href="Seam_Reference_Guide-Internationalization_and_themes-Timezones.html">13.3. Timezones</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Internationalization_and_themes-Themes.html">13.4. Themes</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Internationalization_and_themes-Persisting_locale_and_theme_preferences_via_cookies.html">13.5. Persisting locale and theme preferences via cookies</a></span></dt></dl></dd><dt><span class="chapter"><a href="Seam_Reference_Guide-Seam_Text.html">14. Seam Text</a></span></dt><dd><dl><dt><span class="section"><a href="Seam_Reference_Guide-Seam_Text.html#Seam_Reference_Guide-Seam_Text-Basic_fomatting">14.1. Basic fomatting</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Seam_Text-Entering_code_and_text!
 _with_special_characters.html">14.2. Entering code and text with special characters</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Seam_Text-Links.html">14.3. Links</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Seam_Text-Entering_HTML.html">14.4. Entering HTML</a></span></dt></dl></dd><dt><span class="chapter"><a href="Seam_Reference_Guide-iText_PDF_generation.html">15. iText PDF generation</a></span></dt><dd><dl><dt><span class="section"><a href="Seam_Reference_Guide-iText_PDF_generation.html#Seam_Reference_Guide-iText_PDF_generation-Using_PDF_Support">15.1. Using PDF Support</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-iText_PDF_generation-Creating_a_document.html">15.2. Creating a document</a></span></dt><dd><dl><dt><span class="section"><a href="Seam_Reference_Guide-iText_PDF_generation-Creating_a_document.html#Seam_Reference_Guide-Creating_a_document-pdocument">15.2.1. p:document</a></span></dt>!
 </dl></dd><dt><span class="section"><a href="Seam_Reference_Gu!
 ide-iTex
t_PDF_generation-Basic_Text_Elements.html">15.3. Basic Text Elements</a></span></dt><dd><dl><dt><span class="section"><a href="Seam_Reference_Guide-iText_PDF_generation-Basic_Text_Elements.html#Seam_Reference_Guide-Basic_Text_Elements-pparagraph">15.3.1. p:paragraph</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Basic_Text_Elements-ptext.html">15.3.2. p:text</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Basic_Text_Elements-pfont.html">15.3.3. p:font</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Basic_Text_Elements-pnewPage.html">15.3.4. p:newPage</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Basic_Text_Elements-pimage.html">15.3.5. p:image</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Basic_Text_Elements-panchor.html">15.3.6. p:anchor</a></span></dt></dl></dd><dt><span class="section"><a href="Seam_Reference_Guide-iText_PDF_generation-Headers_and_Footer!
 s.html">15.4. Headers and Footers</a></span></dt><dd><dl><dt><span class="section"><a href="Seam_Reference_Guide-iText_PDF_generation-Headers_and_Footers.html#Seam_Reference_Guide-Headers_and_Footers-pheader_and_pfooter">15.4.1. p:header and p:footer</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Headers_and_Footers-ppageNumber.html">15.4.2. p:pageNumber</a></span></dt></dl></dd><dt><span class="section"><a href="Seam_Reference_Guide-iText_PDF_generation-Chapters_and_Sections.html">15.5. Chapters and Sections</a></span></dt><dd><dl><dt><span class="section"><a href="Seam_Reference_Guide-iText_PDF_generation-Chapters_and_Sections.html#Seam_Reference_Guide-Chapters_and_Sections-pchapter_and_psection">15.5.1. p:chapter and p:section</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Chapters_and_Sections-ptitle.html">15.5.2. p:title</a></span></dt></dl></dd><dt><span class="section"><a href="Seam_Reference_Guide-iText_PDF_generation-!
 Lists.html">15.6. Lists</a></span></dt><dd><dl><dt><span class!
 ="sectio
n"><a href="Seam_Reference_Guide-iText_PDF_generation-Lists.html#Seam_Reference_Guide-Lists-plist">15.6.1. p:list</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Lists-plistItem.html">15.6.2. p:listItem</a></span></dt></dl></dd><dt><span class="section"><a href="Seam_Reference_Guide-iText_PDF_generation-Tables.html">15.7. Tables</a></span></dt><dd><dl><dt><span class="section"><a href="Seam_Reference_Guide-iText_PDF_generation-Tables.html#Seam_Reference_Guide-Tables-ptable">15.7.1. p:table</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Tables-pcell.html">15.7.2. p:cell</a></span></dt></dl></dd><dt><span class="section"><a href="Seam_Reference_Guide-iText_PDF_generation-Document_Constants.html">15.8. Document Constants</a></span></dt><dd><dl><dt><span class="section"><a href="Seam_Reference_Guide-iText_PDF_generation-Document_Constants.html#Seam_Reference_Guide-Document_Constants-Color_Values">15.8.1. Color Values</a></span></dt>!
 <dt><span class="section"><a href="Seam_Reference_Guide-Document_Constants-Alignment_Values.html">15.8.2. Alignment Values</a></span></dt></dl></dd><dt><span class="section"><a href="Seam_Reference_Guide-iText_PDF_generation-Configuring_iText.html">15.9. Configuring iText</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-iText_PDF_generation-iText_links.html">15.10. iText links</a></span></dt></dl></dd><dt><span class="chapter"><a href="Seam_Reference_Guide-Email.html">16. Email</a></span></dt><dd><dl><dt><span class="section"><a href="Seam_Reference_Guide-Email.html#Seam_Reference_Guide-Email-Creating_a_message">16.1. Creating a message</a></span></dt><dd><dl><dt><span class="section"><a href="Seam_Reference_Guide-Email.html#Seam_Reference_Guide-Creating_a_message-Attachments">16.1.1. Attachments</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Email.html#Seam_Reference_Guide-Creating_a_message-HTMLText_alternative_part">16.1.2. H!
 TML/Text alternative part</a></span></dt><dt><span class="sect!
 ion"><a 
href="Seam_Reference_Guide-Email.html#Seam_Reference_Guide-Creating_a_message-Multiple_recipients">16.1.3. Multiple recipients</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Email.html#Seam_Reference_Guide-Creating_a_message-Multiple_messages">16.1.4. Multiple messages</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Email.html#Seam_Reference_Guide-Creating_a_message-Templating">16.1.5. Templating</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Email.html#Seam_Reference_Guide-Creating_a_message-Internationalisation">16.1.6. Internationalisation</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Email.html#Seam_Reference_Guide-Creating_a_message-Other_Headers">16.1.7. Other Headers</a></span></dt></dl></dd><dt><span class="section"><a href="Seam_Reference_Guide-Email-Receiving_emails.html">16.2. Receiving emails</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Email-!
 Configuration.html">16.3. Configuration</a></span></dt><dd><dl><dt><span class="section"><a href="Seam_Reference_Guide-Email-Configuration.html#Seam_Reference_Guide-Configuration-mailSession">16.3.1. <code class="literal">mailSession</code></a></span></dt></dl></dd><dt><span class="section"><a href="Seam_Reference_Guide-Email-Tags.html">16.4. Tags</a></span></dt></dl></dd><dt><span class="chapter"><a href="Seam_Reference_Guide-Asynchronicity_and_messaging.html">17. Asynchronicity and messaging</a></span></dt><dd><dl><dt><span class="sect1"><a href="Seam_Reference_Guide-Asynchronicity_and_messaging.html#Seam_Reference_Guide-Asynchronicity_and_messaging-Asynchronicity">17.1. Asynchronicity</a></span></dt><dd><dl><dt><span class="sect2"><a href="Seam_Reference_Guide-Asynchronicity_and_messaging.html#Seam_Reference_Guide-Asynchronicity-Asynchronous_methods">17.1.1. Asynchronous methods</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Asynchronicity_and_messa!
 ging.html#Seam_Reference_Guide-Asynchronicity-Asynchronous_eve!
 nts">17.
1.2. Asynchronous events</a></span></dt></dl></dd><dt><span class="sect1"><a href="Seam_Reference_Guide-Asynchronicity_and_messaging-Messaging_in_Seam.html">17.2. Messaging in Seam</a></span></dt><dd><dl><dt><span class="sect2"><a href="Seam_Reference_Guide-Asynchronicity_and_messaging-Messaging_in_Seam.html#Seam_Reference_Guide-Messaging_in_Seam-Configuration">17.2.1. Configuration</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Messaging_in_Seam-Sending_messages.html">17.2.2. Sending messages</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Messaging_in_Seam-Receiving_messages_using_a_message_driven_bean.html">17.2.3. Receiving messages using a message-driven bean</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Messaging_in_Seam-Receiving_messages_in_the_client.html">17.2.4. Receiving messages in the client</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="cache.html">18. Caching</a></span></!
 dt><dd><dl><dt><span class="section"><a href="cache.html#id2734450">18.1. Using JBossCache in Seam</a></span></dt><dt><span class="section"><a href="ch18s02.html">18.2. Page fragment caching</a></span></dt></dl></dd><dt><span class="chapter"><a href="Seam_Reference_Guide-Remoting.html">19. Remoting</a></span></dt><dd><dl><dt><span class="sect1"><a href="Seam_Reference_Guide-Remoting.html#Seam_Reference_Guide-Remoting-Configuration">19.1. Configuration</a></span></dt><dt><span class="sect1"><a href="Seam_Reference_Guide-Remoting-The_Seam_object.html">19.2. The "Seam" object</a></span></dt><dd><dl><dt><span class="sect2"><a href="Seam_Reference_Guide-Remoting-The_Seam_object.html#Seam_Reference_Guide-The_Seam_object-A_Hello_World_example">19.2.1. A Hello World example</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-The_Seam_object-Seam.Component.html">19.2.2. Seam.Component</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-The_Seam_obje!
 ct-Seam.Remoting.html">19.2.3. Seam.Remoting</a></span></dt></!
 dl></dd>
<dt><span class="sect1"><a href="Seam_Reference_Guide-Remoting-Client_Interfaces.html">19.3. Client Interfaces</a></span></dt><dt><span class="sect1"><a href="Seam_Reference_Guide-Remoting-The_Context.html">19.4. The Context</a></span></dt><dd><dl><dt><span class="sect2"><a href="Seam_Reference_Guide-Remoting-The_Context.html#Seam_Reference_Guide-The_Context-Setting_and_reading_the_Conversation_ID">19.4.1. Setting and reading the Conversation ID</a></span></dt></dl></dd><dt><span class="sect1"><a href="Seam_Reference_Guide-Remoting-Batch_Requests.html">19.5. Batch Requests</a></span></dt><dt><span class="sect1"><a href="Seam_Reference_Guide-Remoting-Working_with_Data_types.html">19.6. Working with Data types</a></span></dt><dd><dl><dt><span class="sect2"><a href="Seam_Reference_Guide-Remoting-Working_with_Data_types.html#Seam_Reference_Guide-Working_with_Data_types-Primitives__Basic_Types">19.6.1. Primitives / Basic Types</a></span></dt><dt><span class="sect2"><a href="Seam_!
 Reference_Guide-Working_with_Data_types-JavaBeans.html">19.6.2. JavaBeans</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Working_with_Data_types-Dates_and_Times.html">19.6.3. Dates and Times</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Working_with_Data_types-Enums.html">19.6.4. Enums</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Working_with_Data_types-Collections.html">19.6.5. Collections</a></span></dt></dl></dd><dt><span class="sect1"><a href="Seam_Reference_Guide-Remoting-Debugging.html">19.7. Debugging</a></span></dt><dt><span class="sect1"><a href="Seam_Reference_Guide-Remoting-The_Loading_Message.html">19.8. The Loading Message</a></span></dt><dd><dl><dt><span class="sect2"><a href="Seam_Reference_Guide-Remoting-The_Loading_Message.html#Seam_Reference_Guide-The_Loading_Message-Changing_the_message">19.8.1. Changing the message</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-The!
 _Loading_Message-Hiding_the_loading_message.html">19.8.2. Hidi!
 ng the l
oading message</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-The_Loading_Message-A_Custom_Loading_Indicator.html">19.8.3. A Custom Loading Indicator</a></span></dt></dl></dd><dt><span class="sect1"><a href="Seam_Reference_Guide-Remoting-Controlling_what_data_is_returned.html">19.9. Controlling what data is returned</a></span></dt><dd><dl><dt><span class="sect2"><a href="Seam_Reference_Guide-Remoting-Controlling_what_data_is_returned.html#Seam_Reference_Guide-Controlling_what_data_is_returned-Constraining_normal_fields">19.9.1. Constraining normal fields</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Controlling_what_data_is_returned-Constraining_Maps_and_Collections.html">19.9.2. Constraining Maps and Collections</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Controlling_what_data_is_returned-Constraining_objects_of_a_specific_type.html">19.9.3. Constraining objects of a specific type</a></span></dt><dt><span!
  class="sect2"><a href="Seam_Reference_Guide-Controlling_what_data_is_returned-Combining_Constraints.html">19.9.4. Combining Constraints</a></span></dt></dl></dd><dt><span class="sect1"><a href="Seam_Reference_Guide-Remoting-JMS_Messaging.html">19.10. JMS Messaging</a></span></dt><dd><dl><dt><span class="sect2"><a href="Seam_Reference_Guide-Remoting-JMS_Messaging.html#Seam_Reference_Guide-JMS_Messaging-Configuration">19.10.1. Configuration</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-JMS_Messaging-Subscribing_to_a_JMS_Topic.html">19.10.2. Subscribing to a JMS Topic</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-JMS_Messaging-Unsubscribing_from_a_Topic.html">19.10.3. Unsubscribing from a Topic</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-JMS_Messaging-Tuning_the_Polling_Process.html">19.10.4. Tuning the Polling Process</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="Seam_Reference_Gui!
 de-Spring_Framework_integration.html">20. Spring Framework int!
 egration
</a></span></dt><dd><dl><dt><span class="section"><a href="Seam_Reference_Guide-Spring_Framework_integration.html#Seam_Reference_Guide-Spring_Framework_integration-Injecting_Seam_components_into_Spring_beans">20.1. Injecting Seam components into Spring beans</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Spring_Framework_integration-Injecting_Spring_beans_into_Seam_components.html">20.2. Injecting Spring beans into Seam components</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Spring_Framework_integration-Making_a_Spring_bean_into_a_Seam_component.html">20.3. Making a Spring bean into a Seam component</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Spring_Framework_integration-Seam_scoped_Spring_beans.html">20.4. Seam-scoped Spring beans</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Spring_Framework_integration-Spring_Application_Context_as_a_Seam_Component.html">20.5. Spring Appl!
 ication Context as a Seam Component</a></span></dt></dl></dd><dt><span class="chapter"><a href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications.html">21. Configuring Seam and packaging Seam applications</a></span></dt><dd><dl><dt><span class="sect1"><a href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications.html#Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Basic_Seam_configuration">21.1. Basic Seam configuration</a></span></dt><dd><dl><dt><span class="sect2"><a href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications.html#Seam_Reference_Guide-Basic_Seam_configuration-Integrating_Seam_with_JSF_and_your_servlet_container">21.1.1. Integrating Seam with JSF and your servlet container</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications.html#Seam_Reference_Guide-Basic_Seam_configuration-Seam_Resource_Servlet">21.1.2. Seam Resource!
  Servlet</a></span></dt><dt><span class="sect2"><a href="Seam_!
 Referenc
e_Guide-Configuring_Seam_and_packaging_Seam_applications.html#Seam_Reference_Guide-Basic_Seam_configuration-Seam_servlet_filters">21.1.3. Seam servlet filters</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications.html#Seam_Reference_Guide-Basic_Seam_configuration-Integrating_Seam_with_your_EJB_container">21.1.4. Integrating Seam with your EJB container</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications.html#Seam_Reference_Guide-Basic_Seam_configuration-Using_facelets">21.1.5. Using facelets</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications.html#Seam_Reference_Guide-Basic_Seam_configuration-Dont_forget">21.1.6. Don't forget!</a></span></dt></dl></dd><dt><span class="sect1"><a href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_EE_5.!
 html">21.2. Configuring Seam in Java EE 5</a></span></dt><dd><dl><dt><span class="sect2"><a href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_EE_5.html#Seam_Reference_Guide-Configuring_Seam_in_Java_EE_5-Packaging">21.2.1. Packaging</a></span></dt></dl></dd><dt><span class="sect1"><a href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container.html">21.3. Configuring Seam in Java SE, with the JBoss Embeddable EJB3 container</a></span></dt><dd><dl><dt><span class="sect2"><a href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container.html#Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container-Installing_the_Embeddable_EJB3_container">21.3.1. Installing the Embeddable EJB3 container</a></span></dt><dt><span class="sect2"><a hre!
 f="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_J!
 Boss_Emb
eddable_EJB3_container-Configuring_a_datasource_with_the_Embeddable_EJB3_container.html">21.3.2. Configuring a datasource with the Embeddable EJB3 container</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container-Packaging.html">21.3.3. Packaging</a></span></dt></dl></dd><dt><span class="sect1"><a href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_J2EE.html">21.4. Configuring Seam in J2EE</a></span></dt><dd><dl><dt><span class="sect2"><a href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_J2EE.html#Seam_Reference_Guide-Configuring_Seam_in_J2EE-Boostrapping_Hibernate_in_Seam">21.4.1. Boostrapping Hibernate in Seam</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Configuring_Seam_in_J2EE-Boostrapping_JPA_in_Seam.html">21.4.2. Boostrapping JPA in Seam</a></span></dt><dt><span class="sect2">!
 <a href="Seam_Reference_Guide-Configuring_Seam_in_J2EE-Packaging.html">21.4.3. Packaging</a></span></dt></dl></dd><dt><span class="sect1"><a href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_SE_with_the_JBoss_Microcontainer.html">21.5. Configuring Seam in Java SE, with the JBoss Microcontainer</a></span></dt><dd><dl><dt><span class="sect2"><a href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_SE_with_the_JBoss_Microcontainer.html#Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Microcontainer-Using_Hibernate_and_the_JBoss_Microcontainer">21.5.1. Using Hibernate and the JBoss Microcontainer</a></span></dt><dt><span class="sect2"><a href="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Microcontainer-Packaging.html">21.5.2. Packaging</a></span></dt></dl></dd><dt><span class="sect1"><a href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam!
 _applications-Configuring_jBPM_in_Seam.html">21.6. Configuring!
  jBPM in
 Seam</a></span></dt><dd><dl><dt><span class="sect2"><a href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_jBPM_in_Seam.html#Seam_Reference_Guide-Configuring_jBPM_in_Seam-Packaging">21.6.1. Packaging</a></span></dt></dl></dd><dt><span class="sect1"><a href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_a_Portal.html">21.7. Configuring Seam in a Portal</a></span></dt><dt><span class="sect1"><a href="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_SFSB_and_Session_Timeouts_in_JBoss_AS.html">21.8. Configuring SFSB and Session Timeouts in JBoss AS</a></span></dt></dl></dd><dt><span class="chapter"><a href="Seam_Reference_Guide-Seam_annotations.html">22. Seam annotations</a></span></dt><dd><dl><dt><span class="section"><a href="Seam_Reference_Guide-Seam_annotations.html#Seam_Reference_Guide-Seam_annotations-Annotations_for_component_definition">22.1. Annotations for !
 component definition</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Seam_annotations-Annotations_for_bijection.html">22.2. Annotations for bijection</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Seam_annotations-Annotations_for_component_lifecycle_methods.html">22.3. Annotations for component lifecycle methods</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Seam_annotations-Annotations_for_context_demarcation.html">22.4. Annotations for context demarcation</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Seam_annotations-Annotations_for_transaction_demarcation.html">22.5. Annotations for transaction demarcation</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Seam_annotations-Annotations_for_exceptions.html">22.6. Annotations for exceptions</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Seam_annotations-Annotations_for_validation.html">!
 22.7. Annotations for validation</a></span></dt><dt><span clas!
 s="secti
on"><a href="Seam_Reference_Guide-Seam_annotations-Annotations_for_Seam_Remoting.html">22.8. Annotations for Seam Remoting</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Seam_annotations-Annotations_for_Seam_interceptors.html">22.9. Annotations for Seam interceptors</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Seam_annotations-Annotations_for_asynchronicity.html">22.10. Annotations for asynchronicity</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Seam_annotations-Annotations_for_use_with_JSF_dataTable.html">22.11. Annotations for use with JSF <code class="literal">dataTable</code></a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Seam_annotations-Meta_annotations_for_databinding.html">22.12. Meta-annotations for databinding</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Seam_annotations-Annotations_for_packaging.html">22.13. Annotations for packaging</a></sp!
 an></dt></dl></dd><dt><span class="chapter"><a href="components.html">23. Built-in Seam components</a></span></dt><dd><dl><dt><span class="section"><a href="components.html#id2694846">23.1. Context injection components</a></span></dt><dt><span class="section"><a href="ch23s02.html">23.2. Utility components</a></span></dt><dt><span class="section"><a href="ch23s03.html">23.3. Components for internationalization and themes</a></span></dt><dt><span class="section"><a href="ch23s04.html">23.4. Components for controlling conversations</a></span></dt><dt><span class="section"><a href="ch23s05.html">23.5. jBPM-related components</a></span></dt><dt><span class="section"><a href="ch23s06.html">23.6. Security-related components</a></span></dt><dt><span class="section"><a href="ch23s07.html">23.7. JMS-related components</a></span></dt><dt><span class="section"><a href="components.mail.html">23.8. Mail-related components</a></span></dt><dt><span class="section"><a href="ch23s09.html">2!
 3.9. Infrastructural components</a></span></dt><dt><span class!
 ="sectio
n"><a href="ch23s10.html">23.10. Miscellaneous components</a></span></dt><dt><span class="section"><a href="ch23s11.html">23.11. Special components</a></span></dt></dl></dd><dt><span class="chapter"><a href="Seam_Reference_Guide-Seam_JSF_controls.html">24. Seam JSF controls</a></span></dt><dt><span class="chapter"><a href="Seam_Reference_Guide-Expression_language_enhancements.html">25. Expression language enhancements</a></span></dt><dd><dl><dt><span class="section"><a href="Seam_Reference_Guide-Expression_language_enhancements.html#Seam_Reference_Guide-Expression_language_enhancements-Configuration">25.1. Configuration</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Expression_language_enhancements-Usage.html">25.2. Usage</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Expression_language_enhancements-Limitations.html">25.3. Limitations</a></span></dt><dd><dl><dt><span class="section"><a href="Seam_Reference_Guide-Expression_lan!
 guage_enhancements-Limitations.html#Seam_Reference_Guide-Limitations-Incompatibility_with_JSP_2.1">25.3.1. Incompatibility with JSP 2.1</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Limitations-Calling_a_MethodExpression_from_Java_code.html">25.3.2. Calling a <code class="literal">MethodExpression</code> from Java code</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="Seam_Reference_Guide-Testing_Seam_applications.html">26. Testing Seam applications</a></span></dt><dd><dl><dt><span class="section"><a href="Seam_Reference_Guide-Testing_Seam_applications.html#Seam_Reference_Guide-Testing_Seam_applications-Unit_testing_Seam_components">26.1. Unit testing Seam components</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Testing_Seam_applications-Integration_testing_Seam_applications.html">26.2. Integration testing Seam applications</a></span></dt><dd><dl><dt><span class="section"><a href="Seam_Reference_Guide-Tes!
 ting_Seam_applications-Integration_testing_Seam_applications.h!
 tml#Seam
_Reference_Guide-Integration_testing_Seam_applications-Using_mocks_in_integration_tests">26.2.1. Using mocks in integration tests</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="Seam_Reference_Guide-Seam_tools.html">27. Seam tools</a></span></dt><dd><dl><dt><span class="section"><a href="Seam_Reference_Guide-Seam_tools.html#Seam_Reference_Guide-Seam_tools-jBPM_designer_and_viewer">27.1. jBPM designer and viewer</a></span></dt><dd><dl><dt><span class="section"><a href="Seam_Reference_Guide-Seam_tools.html#Seam_Reference_Guide-jBPM_designer_and_viewer-Business_process_designer">27.1.1. Business process designer</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-Seam_tools.html#Seam_Reference_Guide-jBPM_designer_and_viewer-Pageflow_viewer">27.1.2. Pageflow viewer</a></span></dt></dl></dd><dt><span class="section"><a href="Seam_Reference_Guide-Seam_tools-CRUD_application_generator.html">27.2. CRUD-application generator</a></span></dt><dd!
 ><dl><dt><span class="section"><a href="Seam_Reference_Guide-Seam_tools-CRUD_application_generator.html#Seam_Reference_Guide-CRUD_application_generator-Creating_a_Hibernate_configuration_file">27.2.1. Creating a Hibernate configuration file</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-CRUD_application_generator-Creating_a_Hibernate_Console_configuration.html">27.2.2. Creating a Hibernate Console configuration</a></span></dt><dt><span class="section"><a href="Seam_Reference_Guide-CRUD_application_generator-Reverse_engineering_and_code_generation.html">27.2.3. Reverse engineering and code generation</a></span></dt></dl></dd></dl></dd><dt><span class="appendix"><a href="appe-Publican-Revision_History.html">A. Revision History</a></span></dt></dl></div></div><ul class="docnav"><li class="previous"></li><li class="next"><a accesskey="n" href="Feedback.html"><strong>Next</strong>Chapter 1. Feedback</a></li></ul></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/css/common.css
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/css/common.css	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/css/common.css	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1449 @@
+body, h1, h2, h3, h4, h5, h6, pre, li, div {
+	line-height: 1.29em;
+}
+
+body {
+	background-color: white;
+	margin:0 auto;
+	font-family: "liberation sans", "Myriad ", "Bitstream Vera Sans", "Lucida Grande", "Luxi Sans", "Trebuchet MS", helvetica, verdana, arial, sans-serif;
+	font-size:12px;
+	max-width:55em;
+	color:black;
+}
+
+body.toc_embeded {
+	/*for web hosting system only*/
+	margin-left: 300px;
+}
+
+object.toc {
+	/*for web hosting system only*/
+	border-style:none;
+	position:fixed;
+	width:290px;
+	height:99.99%;
+	top:0;
+	left:0;
+	z-index: 100;
+	border-style:none;
+	border-right:1px solid #999;
+}
+
+/* desktop styles */
+body.desktop {
+	margin-left: 26em;
+}
+
+body.desktop .book > .toc {
+	display:block;
+	width:24em;
+	height:99%;
+	position:fixed;
+	overflow:auto;
+	top:0px;
+	left:0px;
+	padding-left:1em;
+	background-color:#EEEEEE;
+}
+
+.toc {
+	line-height:1.35em;
+}
+
+.toc .chapter, .toc .appendix, .toc .glossary {
+	margin-top:1em;
+}
+
+.toc .part {
+	margin-top:1em;
+	display:block;
+}
+
+span.appendix, span.glossary {
+	display:block;
+	margin-top:0.5em;
+}
+
+div {
+	padding-top:0px;
+}
+
+div.section {
+	padding-top:1em;
+}
+
+p, div.para, div.formalpara {
+	padding-top:0px;
+	margin-top:0.3em;
+	padding-bottom:0px;
+	margin-bottom:1em;
+}
+
+/*Links*/
+a:link {
+	text-decoration:none;
+	border-bottom: 1px dotted ;
+	color:#3366cc;
+}
+
+a:visited {
+	text-decoration:none;
+	border-bottom: 1px dotted ;
+	color:#003366;
+}
+
+div.longdesc-link {
+	float:right;
+	color:#999;
+}
+
+.toc a, .qandaset a {
+	font-weight:normal;
+}
+
+/*headings*/
+h1, h2, h3, h4, h5, h6 {
+	color: #336699;
+	margin-top: 0em;
+	margin-bottom: 0em;
+	background-color: transparent;
+}
+
+h1 {
+	font-size:2.0em;
+}
+
+.titlepage h1.title {
+	font-size: 3.0em;
+	padding-top: 1em;
+	text-align:left;
+}
+
+.book > .titlepage h1.title {
+	text-align:center;
+}
+
+.article > .titlepage h1.title {
+	text-align:center;
+}
+
+.set .titlepage > div > div > h1.title {
+	text-align:center;
+}
+
+.producttitle {
+	margin-top: 0em;
+	margin-bottom: 0em;
+	font-size: 3.0em;
+	font-weight: bold;
+	background: #003d6e url(../images/h1-bg.png) top left repeat-x;
+	color: white;
+	text-align: center;
+	padding: 0.7em;
+}
+
+.titlepage .corpauthor {
+	margin-top: 1em;
+	text-align: center;
+}
+
+.section h1.title {
+	font-size: 1.6em;
+	padding: 0em;
+	color: #336699;
+	text-align: left;
+	background: white;
+}
+
+h2 {
+	font-size:1.6em;
+}
+
+
+h2.subtitle, h3.subtitle {
+	margin-top: 1em;
+	margin-bottom: 1em;
+	font-size: 1.4em;
+	text-align: center;
+}
+
+.preface > div > div > div > h2.title {
+	margin-top: 1em;
+	font-size: 2.0em;
+}
+
+.appendix h2 {
+	margin-top: 1em;
+	font-size: 2.0em;
+}
+
+
+
+h3 {
+	font-size:1.3em;
+	padding-top:0em;
+	padding-bottom:0em;
+}
+h4 {
+	font-size:1.1em;
+	padding-top:0em;
+	padding-bottom:0em;
+}
+
+h5 {
+	font-size:1em;
+}
+
+h6 {
+	font-size:1em;
+}
+
+h5.formalpara {
+	font-size:1em;
+	margin-top:2em;
+	margin-bottom:.8em;
+}
+
+.abstract h6 {
+	margin-top:1em;
+	margin-bottom:.5em;
+	font-size:2em;
+}
+
+/*element rules*/
+hr {
+	border-collapse: collapse;
+	border-style:none;
+	border-top: 1px dotted #ccc;
+	width:100%;
+	margin-top: 3em;
+}
+
+sup {
+	color:#999;
+}
+
+/* web site rules */
+ul.languages, .languages li {
+	display:inline;
+	padding:0em;
+}
+
+.languages li a {
+	padding:0em .5em;
+	text-decoration: none;
+}
+
+.languages li p, .languages li div.para {
+	display:inline;
+}
+
+.languages li a:link, .languages li a:visited {
+	color:#444;
+}
+
+.languages li a:hover, .languages li a:focus, .languages li a:active {
+	color:black;
+}
+
+ul.languages {
+	display:block;
+	background-color:#eee;
+	padding:.5em;
+}
+
+/*supporting stylesheets*/
+
+/*unique to the webpage only*/
+.article ul {
+	padding-left:2em;
+	list-style: disc;
+}
+
+.article li {
+	margin:0em;
+	padding-left:0em;
+}
+
+.books {
+	position:relative;
+}
+
+.versions li {
+	width:100%;
+	clear:both;
+	display:block;
+}
+
+a.version {
+	font-size:2em;
+	text-decoration:none;
+	width:100%;
+	display:block;
+	padding:1em 0em .2em 0em;
+	clear:both;
+}
+
+a.version:before {
+	content:"Version";
+	font-size:smaller;
+}
+
+a.version:visited, a.version:link {
+	color:#666;
+}
+
+a.version:focus, a.version:hover {
+	color:black;
+}
+
+.books {
+	display:block;
+	position:relative;
+	clear:both;
+	width:100%;
+}
+
+.books li {
+	display:block;
+	width:200px;
+	float:left;
+	position:relative;
+	clear: none ;
+}
+
+.books .html {
+	width:170px;
+	display:block;
+}
+
+.books .pdf {
+	position:absolute;
+	left:170px;
+	top:0px;
+	font-size:smaller;
+}
+
+.books .pdf:link, .books .pdf:visited {
+	color:#555;
+}
+
+.books .pdf:hover, .books .pdf:focus {
+	color:#000;
+}
+
+.books li a {
+	text-decoration:none;
+}
+
+.books li a:hover {
+	color:black;
+}
+
+/*products*/
+.products li {
+	display: block;
+	width:300px;
+	float:left;
+}
+
+.products li a {
+	width:300px;
+	padding:.5em 0em;
+}
+
+.products ul {
+	clear:both;
+}
+
+
+/*revision history*/
+.revhistory {
+	display:block;
+}
+
+.revhistory table {
+	background-color:transparent;
+	border-color:#fff;
+	padding:0em;
+	margin: 0;
+	border-collapse:collapse;
+	border-style:none;
+}
+
+.revhistory td {
+	text-align:right;
+	padding:0em;
+	border-top: 1px solid #fff;
+}
+
+
+.revhistory tr td:first-child {
+	text-align:left;
+}
+
+.revhistory tr td p, .revhistory tr td div.para {
+	text-align:left;
+	font-weight:bold;
+	display:block;
+	margin:0em;
+	padding:0em;
+	padding-bottom:0.7em;
+	border-bottom:1px solid #eee;
+}
+
+.revhistory table th {
+	background-color:transparent;
+	color:#336699;
+	font-size:2em;
+	padding: 1em 0em;
+	border-bottom:1px solid #eee;
+}
+
+
+/*credits*/
+.authorgroup div {
+	clear:both;
+	text-align: center;
+}
+
+h3.author {
+	margin: 0em;
+	padding: 0em;
+	padding-top: 1em;
+}
+
+.authorgroup h4 {
+	padding: 0em;
+	margin: 0em;
+	padding-top: 1em;
+	margin-top: 1em;
+}
+
+.author, 
+.editor, 
+.translator, 
+.othercredit,
+.contrib {
+	display: block;
+}
+
+.revhistory .author {
+	display: inline;
+}
+
+.othercredit h3 {
+	padding-top: 1em;
+}
+
+
+.othercredit {
+	margin:0em;
+	padding:0em;
+}
+
+.releaseinfo {
+	clear: both;
+}
+
+.copyright {
+	margin-top: 1em;
+}
+
+/* qanda sets */
+.answer {
+	margin-bottom:1em;
+	border-bottom:1px dotted #ccc;
+}
+
+.qandaset .toc {
+	border-bottom:1px dotted #ccc;
+}
+
+.question {
+	font-weight:bold;
+}
+
+.answer .data, .question .data {
+	padding-left: 2.6em;
+}
+
+.answer label, .question label {
+	float:left;
+	font-weight:bold;
+}
+
+.package {
+	font-style:italic;
+}
+
+/* inline syntax highlighting */
+.perl_Alert {
+	color: #0000ff;
+}
+
+.perl_BaseN {
+	color: #007f00;
+}
+
+.perl_BString {
+	color: #5C3566;
+}
+
+.perl_Char {
+	color: #ff00ff;
+}
+
+.perl_Comment {
+	color: #FF00FF;
+}
+
+
+.perl_DataType {
+	color: #0000ff;
+}
+
+
+.perl_DecVal {
+	color: #00007f;
+}
+
+
+.perl_Error {
+	color: #ff0000;
+}
+
+
+.perl_Float {
+	color: #00007f;
+}
+
+
+.perl_Function {
+	color: #007f00;
+}
+
+
+.perl_IString {
+	color: #5C3566;
+}
+
+
+.perl_Keyword {
+	color: #002F5D;
+}
+
+
+.perl_Operator {
+	color: #ffa500;
+}
+
+
+.perl_Others {
+	color: #b03060;
+}
+
+
+.perl_RegionMarker {
+	color: #96b9ff;
+}
+
+
+.perl_Reserved {
+	color: #9b30ff;
+}
+
+
+.perl_String {
+	color: #5C3566;
+}
+
+
+.perl_Variable {
+	color: #0000ff;
+}
+
+
+.perl_Warning {
+	color: #0000ff;
+}
+
+/*Lists*/
+ul {
+	padding-left:1.6em;
+	list-style-image:url(../images/dot.png);
+	list-style-type: circle;
+}
+
+ul ul {
+	list-style-image:url(../images/dot2.png);
+	list-style-type: circle;
+}
+
+ol {
+	list-style-image:none;
+	list-style-type: decimal;
+}
+
+ol.loweralpha {
+	list-style-type: lower-alpha;
+}
+
+ol.lowerroman {
+	list-style-type: lower-roman;
+}
+
+ol.upperalpha {
+	list-style-type: upper-alpha;
+}
+
+ol.upperroman {
+	list-style-type: upper-roman;
+}
+
+dt {
+	font-weight:bold;
+	margin-bottom:0em;
+	padding-bottom:0em;
+}
+
+dd {
+	margin:0em;
+	margin-left:2em;
+	padding-top:0em;
+	padding-bottom: 1em;
+}
+
+li {
+	padding-top:0px;
+	margin-top:0em;
+	padding-bottom:0px;
+	margin-bottom:0.4em;
+}
+
+li p, li div.para {
+	padding-top:0px;
+	margin-top:0em;
+	padding-bottom:0px;
+	margin-bottom:0.3em;
+}
+
+/*images*/
+img {
+	display:block;
+	margin:2em 0;
+}
+
+.inlinemediaobject, .inlinemediaobject img {
+	display:inline;
+	margin:0em;
+}
+
+.figure img {
+	display:block;
+	margin:0;
+}
+
+.figure .title {
+	margin:0em;
+	margin-bottom:2em;
+	padding:0px;
+}
+
+/*document modes*/
+.confidential {
+	background-color:#900;
+	color:White;
+	padding:.5em .5em;
+	text-transform:uppercase;
+	text-align:center;
+}
+
+.longdesc-link {
+	display:none;
+}
+
+.longdesc {
+	display:none;
+}
+
+.prompt {
+	background-color:#ede7c8;
+	padding:0em .3em;
+}
+
+/*user interface styles*/
+.screen .replaceable {
+	color:#444;
+}
+
+pre, code, .guibutton, .keycap, .guilabel {
+	font-family:"liberation mono", "bitstream vera mono", "dejavu mono", monospace;
+}
+
+.guibutton, .keycap, .guilabel {
+	font-weight:bold;
+	white-space:nowrap;
+}
+
+.example {
+	background-color:#dc9f2e;
+	padding:5px;
+	margin-bottom:10px;
+}
+
+
+/*terminal/console text*/
+.computeroutput, 
+.citetitle, 
+.replaceable, 
+.option {
+	font-family:"liberation mono", "bitstream vera mono", "dejavu mono", monospace;
+}
+
+.replaceable {
+	font-family:"liberation mono", "bitstream vera mono", "dejavu mono", monospace;
+	font-style: italic;
+}
+
+.command, .filename, .keycap, .classname, .literal {
+	font-family:"liberation mono", "bitstream vera mono", "dejavu mono", monospace;
+	font-weight:bold;
+}
+
+pre {
+	font-family:"liberation mono", "bitstream vera mono", "dejavu mono", monospace;
+	display:block;
+	background-color:#eeeeee;
+	margin-bottom: 0.3em;
+	padding:.5em 1em;
+	white-space: pre-wrap; /* css-3 */
+	white-space: -moz-pre-wrap !important; /* Mozilla, since 1999 */
+	white-space: -pre-wrap; /* Opera 4-6 */
+	white-space: -o-pre-wrap; /* Opera 7 */
+	word-wrap: break-word; /* Internet Explorer 5.5+ */
+	font-size: 0.9em;
+}
+
+pre .replaceable, 
+pre .keycap {
+	color:white;
+}
+
+code {
+	white-space: nowrap;
+}
+
+/*Notifications*/
+div.note, div.important, div.warning {
+	padding:1em;
+	padding-bottom:20px;
+	margin-top:.5em;
+	margin-bottom:1.5em;
+	background-repeat:no-repeat;
+	background-position:1em 1em;
+}
+
+div.note pre, div.important pre, div.warning pre {
+	background-color: #333;
+	color: white;
+	margin-left: 4.5em;
+}
+
+
+div.note {
+	background-image:url(../images/note.png);
+	background-color:#8e9f00;
+	color:white;
+}
+
+div.important  {
+	background-color:#d08e13;
+	color:white;
+	background-image:url(../images/important.png);
+}
+
+div.warning {
+	background-color:#9e292b;
+	color:white;
+	background-image:url(../images/warning.png);
+}
+
+
+/* Admonition Headings */
+div.note h2, div.important h2, div.warning h2 {
+	height:32px;
+	font-size:1.3em;
+}
+
+div.note h2, div.important h2, div.warning h2 {
+	color:white;
+}
+
+/* Admonition Inlines */
+div.note .replaceable, div.important .replaceable,  div.warning .replaceable {
+	color:#e3dcc0;
+}
+
+pre .replaceable, tt .replaceable {
+	color:#444;
+}
+
+div.note .guilabel, div.important .guilabel, div.warning .guilabel {
+	color:#e3dcc0;
+}
+
+
+/* Admonition Lists ... really? */
+div.note li, div.warning li, div.important li {
+	padding-left:10px;
+	margin:0em;
+}
+
+div.note ul, div.warning ul, div.important ul {
+	padding-left:40px;
+	margin:0em;
+}
+
+/* Admonition links in verbatim ... *really* */
+div.note pre pre a:visited, div.important pre pre a:visited, 
+ div.warning pre pre a:visited, div.note pre a:link, div.important pre a:link, div.warning pre a:link {
+	color:#0066cc;
+}
+
+/* Admonition links */
+div.note a:visited, div.important a:visited, div.warning a:visited, div.note a:link , div.important a:link , div.warning a:link {
+	color:#f7f2d0;
+}
+
+/*notification icons*/
+div.note h2, div.note p, div.note div.para, div.warning h2, div.warning p, div.warning div.para, div.important h2, .important p, .important div.para {
+	padding:0em;
+	margin:0em;
+	padding-left:56px;
+}
+
+/*Page Title*/
+#title  {
+	display:block;
+	height:45px;
+	padding-bottom:1em;
+	margin:0em;
+}
+
+#title a.left{
+	display:inline;
+	border:none;
+	padding-left:200px;
+}
+
+#title a.left img{
+	border:none;
+	float:left;
+	margin:0em;
+	margin-top:.7em;
+}
+
+#title a.right {
+	padding-bottom:1em;
+}
+
+#title a.right img {
+	border:none;
+	float:right;
+	margin:0em;
+}
+
+/*Table*/
+table {
+	border:1px solid #6c614b;
+	width:100%;
+	border-collapse:collapse;
+}
+
+table.simplelist {
+	border-style: none;
+}
+
+table th {
+	text-align:left;
+	background-color:#6699cc;
+	padding:.3em .5em;
+	color:white;
+}
+
+table td {
+	padding:.15em .5em;
+}
+
+table tr.even td {
+	background-color:#f5f5f5;
+}
+
+table th p:first-child, table td p:first-child, table  li p:first-child,
+table th div.para:first-child, table td div.para:first-child, table  li div.para:first-child {
+	margin-top:0em;
+	padding-top:0em;
+	display:inline;
+}
+
+th, td {
+	border-style:none;
+	vertical-align: top;
+}
+
+table table td {
+	border-bottom:1px dotted #aaa;
+	background-color:white;
+	padding:.6em 0em;
+}
+
+table table {
+	border:1px solid white;
+}
+
+td.remarkval {
+	color:#444;
+}
+
+td.fieldval {
+	font-weight:bold;
+}
+
+.lbname, .lbtype, .lbdescr, .lbdriver, .lbhost {
+	color:white;
+	font-weight:bold;
+	background-color:#999;
+	width:120px;
+}
+
+td.remarkval {
+	width:230px;
+}
+
+td.tname {
+	font-weight:bold;
+}
+
+th.dbfield {
+	width:120px;
+}
+
+th.dbtype {
+	width:70px;
+}
+
+th.dbdefault {
+	width:70px;
+}
+
+th.dbnul {
+	width:70px;
+}
+
+th.dbkey {
+	width:70px;
+}
+
+span.book {
+	margin-top:4em;
+	display:block;
+}
+
+span.chapter {
+	display:block;
+	margin-top:0.5em;
+}
+
+/*Breadcrumbs*/
+#breadcrumbs ul li.first:before {
+	content:" ";
+}
+
+#breadcrumbs {
+	color:#900;
+	padding:3px;
+	margin-bottom:25px;
+}
+
+#breadcrumbs ul {
+	margin-left:0;
+	padding-left:0;
+	display:inline;
+	border:none;
+}
+
+#breadcrumbs ul li {
+	margin-left:0;
+	padding-left:2px;
+	border:none;
+	list-style:none;
+	display:inline;
+}
+
+#breadcrumbs ul li:before {
+	content:"\0020 \0020 \0020 \00BB \0020";
+	color:#333;
+}
+
+/*index*/
+.glossary h3, 
+.index h3 {
+	font-size: 2em;
+	color:#aaa;
+	margin:0em;
+}
+
+.indexdiv {
+	margin-bottom:1em;
+}
+
+.glossary dt, .index dt {
+	color:#444;
+	padding-top:.5em;
+}
+
+.glossary dl dl dt, 
+.index dl dl dt {
+	color:#777;
+	font-weight:normal;
+	padding-top:0em;
+}
+
+.index dl dl dt:before {
+	content:"- ";
+	color:#ccc;
+}
+
+/*changes*/
+.footnote {
+	padding:.2em 1em;
+	background-color:#c8c5ac;
+	font-size: .7em;
+	margin:0em;
+	margin-bottom:.5em;
+	color:#222;
+}
+
+table .footnote {
+	margin:1em .5em;
+}
+
+sup {
+	padding:0em .3em;
+	padding-left:0em;
+}
+
+.footnote {
+	position:relative;
+}
+
+.footnote sup  {
+	color:#e3dcc0;
+	position:absolute;
+	left: .4em;
+}
+
+.footnote sup a:link, 
+.footnote sup a:visited {
+	color:#92917d;
+	text-decoration:none;
+}
+
+.footnote:hover sup a {
+	color:#fff;
+	text-decoration:none;
+}
+
+.footnote p,.footnote div.para {
+	padding-left:5em;
+}
+
+.footnote a:link, 
+.footnote a:visited {
+	color:#00537c;
+}
+
+.footnote a:hover {
+	color:white;
+}
+
+/**/
+div.chapter {
+	margin-top:3em;
+}
+
+div.section {
+	margin-top:1em;
+}
+
+div.note .replaceable, 
+div.important .replaceable, 
+div.warning .replaceable, 
+div.note .keycap, 
+div.important .keycap, 
+div.warning .keycap
+{
+	color:white;
+}
+
+ul li p:last-child, ul li div.para:last-child {
+	margin-bottom:0em;
+	padding-bottom:0em;
+}
+
+/*document navigation*/
+.docnav a, .docnav strong {
+	border:none;
+	text-decoration:none;
+	font-weight:normal;
+}
+
+.docnav {
+	list-style:none;
+	margin:0em;
+	padding:0em;
+	position:relative;
+	width:100%;
+	padding-bottom:2em;
+	padding-top:1em;
+	border-top:1px dotted #ccc;
+}
+
+.docnav li {
+	list-style:none;
+	margin:0em;
+	padding:0em;
+	display:inline;
+	font-size:.8em;
+}
+
+.docnav li:before {
+	content:" ";
+}
+
+.docnav li.previous, .docnav li.next {
+	position:absolute;
+	top:1em;
+}
+
+.docnav li.up, .docnav li.home {
+	margin:0em 1.5em;
+}
+
+.docnav li.previous {
+	left:0px;
+	text-align:left;
+}
+
+.docnav li.next {
+	right:0px;
+	text-align:right;
+}
+
+.docnav li.previous strong, .docnav li.next strong {
+	height:22px;
+	display:block;
+}
+
+.docnav {
+	margin:0 auto;
+	text-align:center;
+}
+
+.docnav li.next a strong {
+	background:  url(../images/stock-go-forward.png) top right no-repeat;
+	padding-top:3px;
+	padding-bottom:4px;
+	padding-right:28px;
+	font-size:1.2em;
+}
+
+.docnav li.previous a strong {
+	background: url(../images/stock-go-back.png) top left no-repeat;
+	padding-top:3px;
+	padding-bottom:4px;
+	padding-left:28px;
+	padding-right:0.5em;
+	font-size:1.2em;
+}
+
+.docnav li.home a strong {
+	background: url(../images/stock-home.png) top left no-repeat;
+	padding:5px;
+	padding-left:28px;
+	font-size:1.2em;
+}
+
+.docnav li.up a strong {
+	background: url(../images/stock-go-up.png) top left no-repeat;
+	padding:5px;
+	padding-left:28px;
+	font-size:1.2em;
+}
+
+.docnav a:link, .docnav a:visited {
+	color:#666;
+}
+
+.docnav a:hover, .docnav a:focus, .docnav a:active {
+	color:black;
+}
+
+.docnav a {
+	max-width: 10em;
+	overflow:hidden;
+}
+
+.docnav a:link strong {
+	text-decoration:none;
+}
+
+.docnav {
+	margin:0 auto;
+	text-align:center;
+}
+
+ul.docnav {
+	margin-bottom: 1em;
+}
+/* Reports */
+.reports ul {
+	list-style:none;
+	margin:0em;
+	padding:0em;
+}
+
+.reports li{
+	margin:0em;
+	padding:0em;
+}
+
+.reports li.odd {
+	background-color: #eeeeee;
+	margin:0em;
+	padding:0em;
+}
+
+.reports dl {
+	display:inline;
+	margin:0em;
+	padding:0em;
+	float:right;
+	margin-right: 17em;
+	margin-top:-1.3em;
+}
+
+.reports dt {
+	display:inline;
+	margin:0em;
+	padding:0em;
+}
+
+.reports dd {
+	display:inline;
+	margin:0em;
+	padding:0em;
+	padding-right:.5em;
+}
+
+.reports h2, .reports h3{
+	display:inline;
+	padding-right:.5em;
+	font-size:10pt;
+	font-weight:normal;
+}
+
+.reports div.progress {
+	display:inline;
+	float:right;
+	width:16em;
+	background:#c00 url(../images/shine.png) top left repeat-x;
+	margin:0em;
+	margin-top:-1.3em;
+	padding:0em;
+	border:none;
+}
+
+/*uniform*/
+body.results, body.reports {
+	max-width:57em ;
+	padding:0em;
+}
+
+/*Progress Bar*/
+div.progress {
+	display:block;
+	float:left;
+	width:16em;
+	background:#c00 url(../images/shine.png) top left repeat-x;
+	height:1em;
+}
+
+div.progress span {
+	height:1em;
+	float:left;
+}
+
+div.progress span.translated {
+	background:#6c3 url(../images/shine.png) top left repeat-x;
+}
+
+div.progress span.fuzzy {
+	background:#ff9f00 url(../images/shine.png) top left repeat-x;
+}
+
+
+/*Results*/
+
+.results ul {
+	list-style:none;
+	margin:0em;
+	padding:0em;
+}
+
+.results li{
+	margin:0em;
+	padding:0em;
+}
+
+.results li.odd {
+	background-color: #eeeeee;
+	margin:0em;
+	padding:0em;
+}
+
+.results dl {
+	display:inline;
+	margin:0em;
+	padding:0em;
+	float:right;
+	margin-right: 17em;
+	margin-top:-1.3em;
+}
+
+.results dt {
+	display:inline;
+	margin:0em;
+	padding:0em;
+}
+
+.results dd {
+	display:inline;
+	margin:0em;
+	padding:0em;
+	padding-right:.5em;
+}
+
+.results h2, .results h3{
+	display:inline;
+	padding-right:.5em;
+	font-size:10pt;
+	font-weight:normal;
+}
+
+.results div.progress {
+	display:inline;
+	float:right;
+	width:16em;
+	background:#c00 url(../images/shine.png) top left repeat-x;
+	margin:0em;
+	margin-top:-1.3em;
+	padding:0em;
+	border:none;
+}
+
+/* Dirty EVIL Mozilla hack for round corners */
+pre {
+	-moz-border-radius:11px;
+	-webkit-border-radius:11px;
+	border-radius: 11px;
+}
+
+.example {
+	-moz-border-radius:15px;
+	-webkit-border-radius:15px;
+	border-radius: 15px;
+}
+
+.term{
+	color:#336699;
+}
+
+.package {
+	font-style: italic;
+}
+
+.edition {
+	color: #336699;
+	background-color: transparent;
+	margin-top: 1em;
+	margin-bottom: 1em;
+	font-size: 1.4em;
+	font-weight: bold;
+	text-align: center;
+}
+
+span.remark {
+	background-color: #ff00ff;
+}
+
+.draft {
+	background-image: url(../images/watermark-draft.png);
+	background-repeat: repeat-y;
+        background-position: center;
+}
+
+.foreignphrase {
+	font-style: inherit;
+}
+
+dt {
+	clear:both;
+}
+
+dt img {
+	border-style: none;
+	max-width: 112px;
+}
+
+dt object {
+	max-width: 112px;
+}
+
+dt .inlinemediaobject, dt object {
+	display: inline;
+	float: left;
+	margin-bottom: 1em;
+	padding-right: 1em;
+	width: 112px;
+}
+
+dl:after {
+	display: block;
+	clear: both;
+	content: "";
+}
+
+.toc dd {
+	padding-bottom: 0em;
+	margin-bottom: 1em;
+	padding-left: 1.3em;
+	margin-left: 0em;
+}
+
+div.toc > dl > dt {
+	padding-bottom: 0em;
+	margin-bottom: 0em;
+	margin-top: 1em;
+}
+
+
+.strikethrough {
+	text-decoration: line-through;
+}
+
+.underline {
+	text-decoration: underline;
+}
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/css/default.css
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/css/default.css	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/css/default.css	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,3 @@
+ at import url("common.css");
+ at import url("overrides.css");
+ at import url("lang.css");

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/css/overrides.css
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/css/overrides.css	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/css/overrides.css	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,56 @@
+a:link {
+	color:#0066cc;
+}
+
+a:visited {
+	color:#6699cc;
+}
+
+h1 {
+	color:#a70000;
+}
+
+.producttitle {
+	background: #800 url(../images/h1-bg.png) top left repeat;
+}
+
+.section h1.title {
+	color:#a70000;
+}
+
+
+h2,h3,h4,h5,h6 {
+	color:#a70000;
+}
+
+table {
+	border:1px solid #aaa;
+}
+
+table th {
+	background-color:#900;
+}
+
+table tr.even td {
+	background-color:#f5f5f5;
+}
+
+#title a {
+	height:54px;
+}
+
+.term{
+	color:#a70000;
+}
+
+.revhistory table th {
+	color:#a70000;
+}
+
+.edition {
+	color: #a70000;
+}
+
+span.remark{
+	background-color: #ffff00;
+}

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/1.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/1.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/1.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/1.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/1.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 17.993,22.013004 L 17.993,10.113004 L 15.239,10.113004 C 14.899001,11.218003 14.286999,11.643004 12.757,11.728004 L 12.757,13.819004 L 14.763,13.819004 L 14.763,22.013004 L 17.993,22.013004"
+     id="text2207"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/10.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/10.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/10.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/10.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/10.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 12.252562,22 L 12.252562,10.1 L 9.4985624,10.1 C 9.1585628,11.204999 8.5465609,11.63 7.0165624,11.715 L 7.0165624,13.806 L 9.0225624,13.806 L 9.0225624,22 L 12.252562,22 M 24.983438,16.033 C 24.983438,12.072004 22.705435,9.913 19.611438,9.913 C 16.517441,9.913 14.205438,12.106004 14.205438,16.067 C 14.205438,20.027996 16.483441,22.187 19.577438,22.187 C 22.671435,22.187 24.983438,19.993996 24.983438,16.033 M 21.600438,16.067 C 21.600438,18.242998 20.886437,19.348 19.611438,19.348 C 18.336439,19.348 17.588438,18.208998 17.588438,16.033 C 17.588438,13.857002 18.302439,12.752 19.577438,12.752 C 20.852437,12.752 21.600438,13.891002 21.600438,16.067"
+     id="text2219"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/11.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/11.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/11.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/11.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/11.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 14.623052,22 L 14.623052,10.1 L 11.869052,10.1 C 11.529053,11.204999 10.917051,11.63 9.3870527,11.715 L 9.3870527,13.806 L 11.393052,13.806 L 11.393052,22 L 14.623052,22 M 21.794928,22 L 21.794928,10.1 L 19.040928,10.1 C 18.700928,11.204999 18.088926,11.63 16.558928,11.715 L 16.558928,13.806 L 18.564928,13.806 L 18.564928,22 L 21.794928,22"
+     id="text2219"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/12.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/12.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/12.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/12.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/12.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 12.677562,22 L 12.677562,10.1 L 9.9235624,10.1 C 9.5835628,11.204999 8.9715609,11.63 7.4415624,11.715 L 7.4415624,13.806 L 9.4475624,13.806 L 9.4475624,22 L 12.677562,22 M 24.558438,22 L 24.558438,19.314 L 18.353438,19.314 C 18.608438,18.600001 19.27144,17.936999 21.651438,16.832 C 23.929436,15.778001 24.473438,14.825998 24.473438,13.262 C 24.473438,11.103002 22.926435,9.913 19.968438,9.913 C 17.92844,9.913 16.381436,10.491001 14.868438,11.46 L 16.381438,13.891 C 17.571437,13.092001 18.727439,12.684 19.917438,12.684 C 20.869437,12.684 21.243438,12.973001 21.243438,13.5 C 21.243438,13.976 21.056437,14.163001 19.798438,14.724 C 16.823441,16.049999 14.936438,17.988004 14.834438,22 L 24.558438,22"
+     id="text2219"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/13.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/13.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/13.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/13.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/13.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 12.550062,22 L 12.550062,10.1 L 9.7960624,10.1 C 9.4560628,11.204999 8.8440609,11.63 7.3140624,11.715 L 7.3140624,13.806 L 9.3200624,13.806 L 9.3200624,22 L 12.550062,22 M 24.685938,18.226 C 24.685938,16.713002 23.716937,15.914 22.611938,15.659 C 23.427937,15.268 24.192938,14.638999 24.192938,13.33 C 24.192938,10.814003 22.288935,9.913 19.432938,9.913 C 17.35894,9.913 15.930937,10.610001 14.825938,11.46 L 16.389938,13.602 C 17.307937,12.939001 18.191939,12.582 19.347938,12.582 C 20.520937,12.582 20.996938,12.922001 20.996938,13.551 C 20.996938,14.332999 20.656937,14.554 19.619938,14.554 L 18.089938,14.554 L 18.089938,17.121 L 19.806938,17.121 C 21.013937,17.121 21.489938,17.427001 21.489938,18.26 C 21.489938,19.075999 20.911937,19.467 19.534938,19.467 C 18.225939,19.467 17.120937,18.973999 16.151938,18.226 L 14.451938,20.368 C 15.726937,21.489999 17.44394,22.187 19.466938,22.187 C 22.696935,22.187 24.685938,20.979997 24.685938,18.226"
+     id="text2219"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/14.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/14.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/14.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/14.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/14.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 12.040062,22 L 12.040062,10.1 L 9.2860624,10.1 C 8.9460628,11.204999 8.3340609,11.63 6.8040624,11.715 L 6.8040624,13.806 L 8.8100624,13.806 L 8.8100624,22 L 12.040062,22 M 25.195938,19.96 L 25.195938,17.172 L 23.665938,17.172 L 23.665938,10.1 L 20.401938,10.1 L 13.992938,17.461 L 13.992938,19.875 L 20.707938,19.875 L 20.707938,22 L 23.665938,22 L 23.665938,19.96 L 25.195938,19.96 M 20.758938,13.432 C 20.724938,13.992999 20.707938,15.302001 20.707938,15.999 L 20.707938,17.172 L 19.823938,17.172 C 19.007939,17.172 18.191937,17.189 17.596938,17.223 C 18.038938,16.798 18.531939,16.253999 19.160938,15.489 L 19.330938,15.285 C 20.112937,14.350001 20.435938,13.925 20.758938,13.432"
+     id="text2219"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/15.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/15.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/15.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/15.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/15.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 12.388562,22 L 12.388562,10.1 L 9.6345624,10.1 C 9.2945628,11.204999 8.6825609,11.63 7.1525624,11.715 L 7.1525624,13.806 L 9.1585624,13.806 L 9.1585624,22 L 12.388562,22 M 24.847438,17.852 C 24.847438,15.200003 23.164435,13.908 20.597438,13.908 C 19.407439,13.908 18.693437,14.112 18.030438,14.435 L 18.132438,12.786 L 24.133438,12.786 L 24.133438,10.1 L 15.463438,10.1 L 15.055438,16.271 L 17.877438,17.223 C 18.472437,16.798 19.067439,16.543 20.070438,16.543 C 21.090437,16.543 21.668438,17.019001 21.668438,17.937 C 21.668438,18.888999 21.107436,19.45 19.577438,19.45 C 18.302439,19.45 16.891437,18.956999 15.752438,18.277 L 14.409438,20.742 C 15.871436,21.625999 17.43544,22.187 19.492438,22.187 C 22.875435,22.187 24.847438,20.622997 24.847438,17.852"
+     id="text2219"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/16.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/16.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/16.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/16.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/16.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 12.405562,22 L 12.405562,10.1 L 9.6515624,10.1 C 9.3115628,11.204999 8.6995609,11.63 7.1695624,11.715 L 7.1695624,13.806 L 9.1755624,13.806 L 9.1755624,22 L 12.405562,22 M 24.830438,17.903 C 24.830438,15.387003 23.096435,14.214 20.631438,14.214 C 19.203439,14.214 18.336437,14.486 17.571438,14.911 C 18.472437,13.534001 20.104441,12.616 23.215438,12.616 L 23.215438,9.913 C 16.415445,9.913 14.341438,14.112003 14.341438,17.257 C 14.341438,20.537997 16.415441,22.187 19.407438,22.187 C 22.773435,22.187 24.830438,20.588997 24.830438,17.903 M 21.651438,18.124 C 21.651438,19.075999 20.818437,19.586 19.577438,19.586 C 18.132439,19.586 17.486438,18.990999 17.486438,18.141 C 17.486438,17.206001 18.183439,16.645 19.645438,16.645 C 20.903437,16.645 21.651438,17.206001 21.651438,18.124"
+     id="text2219"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/17.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/17.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/17.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/17.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/17.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 12.652062,22 L 12.652062,10.1 L 9.8980624,10.1 C 9.5580628,11.204999 8.9460609,11.63 7.4160624,11.715 L 7.4160624,13.806 L 9.4220624,13.806 L 9.4220624,22 L 12.652062,22 M 24.583938,12.48 L 24.583938,10.1 L 14.740938,10.1 L 14.740938,12.786 L 20.656938,12.786 C 18.36194,15.131998 17.239938,17.920004 17.205938,22 L 20.435938,22 C 20.435938,18.141004 21.098941,15.675997 24.583938,12.48"
+     id="text2219"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/18.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/18.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/18.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/18.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/18.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 12.176062,22 L 12.176062,10.1 L 9.4220624,10.1 C 9.0820628,11.204999 8.4700609,11.63 6.9400624,11.715 L 6.9400624,13.806 L 8.9460624,13.806 L 8.9460624,22 L 12.176062,22 M 25.059938,18.294 C 25.059938,16.764002 23.971937,15.948 23.206938,15.642 C 23.954937,15.166 24.549938,14.519999 24.549938,13.449 C 24.549938,11.171002 22.526935,9.913 19.653938,9.913 C 16.780941,9.913 14.723938,11.171002 14.723938,13.449 C 14.723938,14.519999 15.352939,15.251 16.066938,15.676 C 15.301939,15.982 14.213938,16.764002 14.213938,18.294 C 14.213938,20.707998 16.287941,22.187 19.619938,22.187 C 22.951935,22.187 25.059938,20.707998 25.059938,18.294 M 21.387938,13.5 C 21.387938,14.094999 20.945937,14.639 19.653938,14.639 C 18.361939,14.639 17.885938,14.094999 17.885938,13.5 C 17.885938,12.905001 18.327939,12.31 19.619938,12.31 C 20.911937,12.31 21.387938,12.905001 21.387938,13.5 M 21.897938,18.26 C 21.897938,19.075999 21.149936,19.688 19.653938,19.688 C 18.157939,19.688 17.375938,19.0759!
 99 17.375938,18.26 C 17.375938,17.444001 18.106939,16.849 19.619938,16.849 C 21.115936,16.849 21.897938,17.444001 21.897938,18.26"
+     id="text2219"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/19.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/19.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/19.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/19.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/19.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 12.414062,22 L 12.414062,10.1 L 9.6600624,10.1 C 9.3200628,11.204999 8.7080609,11.63 7.1780624,11.715 L 7.1780624,13.806 L 9.1840624,13.806 L 9.1840624,22 L 12.414062,22 M 24.821938,14.843 C 24.821938,11.562003 22.747935,9.913 19.755938,9.913 C 16.389941,9.913 14.332938,11.511003 14.332938,14.197 C 14.332938,16.712997 16.06694,17.886 18.531938,17.886 C 19.959937,17.886 20.826939,17.614 21.591938,17.189 C 20.690939,18.565999 19.058935,19.484 15.947938,19.484 L 15.947938,22.187 C 22.747931,22.187 24.821938,17.987997 24.821938,14.843 M 21.676938,13.959 C 21.676938,14.893999 20.979936,15.455 19.517938,15.455 C 18.259939,15.455 17.511938,14.893999 17.511938,13.976 C 17.511938,13.024001 18.344939,12.514 19.585938,12.514 C 21.030936,12.514 21.676938,13.109001 21.676938,13.959"
+     id="text2219"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/2.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/2.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/2.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/2.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/2.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 20.862,22.013004 L 20.862,19.327004 L 14.657,19.327004 C 14.912,18.613005 15.575003,17.950003 17.955,16.845004 C 20.232998,15.791005 20.777,14.839003 20.777,13.275004 C 20.777,11.116006 19.229997,9.9260043 16.272,9.9260043 C 14.232002,9.9260043 12.684999,10.504005 11.172,11.473004 L 12.685,13.904004 C 13.874999,13.105005 15.031001,12.697004 16.221,12.697004 C 17.172999,12.697004 17.547,12.986005 17.547,13.513004 C 17.547,13.989004 17.359999,14.176005 16.102,14.737004 C 13.127003,16.063003 11.24,18.001008 11.138,22.013004 L 20.862,22.013004"
+     id="text2207"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/20.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/20.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/20.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/20.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/20.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 14.685,22 L 14.685,19.314 L 8.4799999,19.314 C 8.7349997,18.600001 9.3980023,17.936999 11.778,16.832 C 14.055998,15.778001 14.6,14.825998 14.6,13.262 C 14.6,11.103002 13.052997,9.913 10.095,9.913 C 8.055002,9.913 6.5079984,10.491001 4.9949999,11.46 L 6.5079999,13.891 C 7.6979988,13.092001 8.8540011,12.684 10.044,12.684 C 10.995999,12.684 11.37,12.973001 11.37,13.5 C 11.37,13.976 11.182999,14.163001 9.9249999,14.724 C 6.9500029,16.049999 5.0629998,17.988004 4.9609999,22 L 14.685,22 M 27.421719,16.033 C 27.421719,12.072004 25.143716,9.913 22.049719,9.913 C 18.955722,9.913 16.643719,12.106004 16.643719,16.067 C 16.643719,20.027996 18.921722,22.187 22.015719,22.187 C 25.109716,22.187 27.421719,19.993996 27.421719,16.033 M 24.038719,16.067 C 24.038719,18.242998 23.324717,19.348 22.049719,19.348 C 20.77472,19.348 20.026719,18.208998 20.026719,16.033 C 20.026719,13.857002 20.74072,12.752 22.015719,12.752 C 23.290717,12.752 24.038719,13.891002 24.038719,16.067"
+     id="text2219"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/21.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/21.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/21.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/21.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/21.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 16.648141,22 L 16.648141,19.314 L 10.44314,19.314 C 10.69814,18.600001 11.361143,17.936999 13.741141,16.832 C 16.019139,15.778001 16.563141,14.825998 16.563141,13.262 C 16.563141,11.103002 15.016138,9.913 12.058141,9.913 C 10.018143,9.913 8.471139,10.491001 6.9581405,11.46 L 8.4711405,13.891 C 9.661139,13.092001 10.817142,12.684 12.007141,12.684 C 12.95914,12.684 13.333141,12.973001 13.333141,13.5 C 13.333141,13.976 13.14614,14.163001 11.88814,14.724 C 8.9131435,16.049999 7.0261404,17.988004 6.9241405,22 L 16.648141,22 M 23.82586,22 L 23.82586,10.1 L 21.07186,10.1 C 20.73186,11.204999 20.119858,11.63 18.58986,11.715 L 18.58986,13.806 L 20.59586,13.806 L 20.59586,22 L 23.82586,22"
+     id="text2219"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/22.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/22.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/22.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/22.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/22.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 14.685,22 L 14.685,19.314 L 8.4799999,19.314 C 8.7349997,18.600001 9.3980023,17.936999 11.778,16.832 C 14.055998,15.778001 14.6,14.825998 14.6,13.262 C 14.6,11.103002 13.052997,9.913 10.095,9.913 C 8.055002,9.913 6.5079984,10.491001 4.9949999,11.46 L 6.5079999,13.891 C 7.6979988,13.092001 8.8540011,12.684 10.044,12.684 C 10.995999,12.684 11.37,12.973001 11.37,13.5 C 11.37,13.976 11.182999,14.163001 9.9249999,14.724 C 6.9500029,16.049999 5.0629998,17.988004 4.9609999,22 L 14.685,22 M 26.571719,22 L 26.571719,19.314 L 20.366719,19.314 C 20.621718,18.600001 21.284721,17.936999 23.664719,16.832 C 25.942716,15.778001 26.486719,14.825998 26.486719,13.262 C 26.486719,11.103002 24.939716,9.913 21.981719,9.913 C 19.941721,9.913 18.394717,10.491001 16.881719,11.46 L 18.394719,13.891 C 19.584718,13.092001 20.74072,12.684 21.930719,12.684 C 22.882718,12.684 23.256719,12.973001 23.256719,13.5 C 23.256719,13.976 23.069717,14.163001 21.811719,14.724 C 18.836722,16.049999 16.9497!
 19,17.988004 16.847719,22 L 26.571719,22"
+     id="number"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/23.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/23.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/23.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/23.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/23.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 15.32239,22.013004 L 15.32239,19.327004 L 9.1173907,19.327004 C 9.3723904,18.613005 10.035393,17.950003 12.41539,16.845004 C 14.693388,15.791005 15.23739,14.839003 15.23739,13.275004 C 15.23739,11.116006 13.690387,9.9260043 10.73239,9.9260043 C 8.6923927,9.9260043 7.1453891,10.504005 5.6323906,11.473004 L 7.1453906,13.904004 C 8.3353896,13.105005 9.4913919,12.697004 10.68139,12.697004 C 11.633389,12.697004 12.00739,12.986005 12.00739,13.513004 C 12.00739,13.989004 11.820389,14.176005 10.56239,14.737004 C 7.5873937,16.063003 5.7003905,18.001008 5.5983906,22.013004 L 15.32239,22.013004 M 26.401609,18.239004 C 26.401609,16.726006 25.432608,15.927004 24.327609,15.672004 C 25.143608,15.281005 25.908609,14.652003 25.908609,13.343004 C 25.908609,10.827007 24.004606,9.9260043 21.148609,9.9260043 C 19.074611,9.9260043 17.646608,10.623005 16.541609,11.473004 L 18.105609,13.615004 C 19.023608,12.952005 19.90761,12.595004 21.063609,12.595004 C 22.236608,12.595004 22.712609,12!
 .935005 22.712609,13.564004 C 22.712609,14.346004 22.372608,14.567004 21.335609,14.567004 L 19.805609,14.567004 L 19.805609,17.134004 L 21.522609,17.134004 C 22.729608,17.134004 23.205609,17.440005 23.205609,18.273004 C 23.205609,19.089003 22.627608,19.480004 21.250609,19.480004 C 19.94161,19.480004 18.836608,18.987004 17.867609,18.239004 L 16.167609,20.381004 C 17.442608,21.503003 19.159611,22.200004 21.182609,22.200004 C 24.412606,22.200004 26.401609,20.993002 26.401609,18.239004"
+     id="text2207"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/3.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/3.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/3.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/3.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/3.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 21.117,18.239004 C 21.117,16.726006 20.147999,15.927004 19.043,15.672004 C 19.858999,15.281005 20.624,14.652003 20.624,13.343004 C 20.624,10.827007 18.719997,9.9260043 15.864,9.9260043 C 13.790002,9.9260043 12.361999,10.623005 11.257,11.473004 L 12.821,13.615004 C 13.738999,12.952005 14.623001,12.595004 15.779,12.595004 C 16.951999,12.595004 17.428,12.935005 17.428,13.564004 C 17.428,14.346004 17.087999,14.567004 16.051,14.567004 L 14.521,14.567004 L 14.521,17.134004 L 16.238,17.134004 C 17.444999,17.134004 17.921,17.440005 17.921,18.273004 C 17.921,19.089003 17.342999,19.480004 15.966,19.480004 C 14.657002,19.480004 13.551999,18.987004 12.583,18.239004 L 10.883,20.381004 C 12.157999,21.503003 13.875002,22.200004 15.898,22.200004 C 19.127997,22.200004 21.117,20.993002 21.117,18.239004"
+     id="text2207"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/4.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/4.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/4.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/4.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/4.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 20.573772,19.96 L 20.573772,17.172 L 19.043772,17.172 L 19.043772,10.1 L 15.779772,10.1 L 9.3707718,17.461 L 9.3707718,19.875 L 16.085772,19.875 L 16.085772,22 L 19.043772,22 L 19.043772,19.96 L 20.573772,19.96 M 16.136772,13.432 C 16.102772,13.992999 16.085772,15.302001 16.085772,15.999 L 16.085772,17.172 L 15.201772,17.172 C 14.385773,17.172 13.569771,17.189 12.974772,17.223 C 13.416772,16.798 13.909773,16.253999 14.538772,15.489 L 14.708772,15.285 C 15.490771,14.350001 15.813772,13.925 16.136772,13.432"
+     id="text2219"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/5.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/5.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/5.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/5.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/5.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 21.219,17.852 C 21.219,15.200003 19.535997,13.908 16.969,13.908 C 15.779001,13.908 15.064999,14.112 14.402,14.435 L 14.504,12.786 L 20.505,12.786 L 20.505,10.1 L 11.835,10.1 L 11.427,16.271 L 14.249,17.223 C 14.843999,16.798 15.439001,16.543 16.442,16.543 C 17.461999,16.543 18.04,17.019001 18.04,17.937 C 18.04,18.888999 17.478998,19.45 15.949,19.45 C 14.674001,19.45 13.262999,18.956999 12.124,18.277 L 10.781,20.742 C 12.242999,21.625999 13.807002,22.187 15.864,22.187 C 19.246997,22.187 21.219,20.622997 21.219,17.852"
+     id="text2219"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/6.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/6.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/6.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/6.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/6.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 21.2445,17.903 C 21.2445,15.387003 19.510497,14.214 17.0455,14.214 C 15.617501,14.214 14.750499,14.486 13.9855,14.911 C 14.886499,13.534001 16.518503,12.616 19.6295,12.616 L 19.6295,9.913 C 12.829507,9.913 10.7555,14.112003 10.7555,17.257 C 10.7555,20.537997 12.829503,22.187 15.8215,22.187 C 19.187497,22.187 21.2445,20.588997 21.2445,17.903 M 18.0655,18.124 C 18.0655,19.075999 17.232499,19.586 15.9915,19.586 C 14.546501,19.586 13.9005,18.990999 13.9005,18.141 C 13.9005,17.206001 14.597501,16.645 16.0595,16.645 C 17.317499,16.645 18.0655,17.206001 18.0655,18.124"
+     id="text2219"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/7.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/7.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/7.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/7.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/7.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 20.9215,12.48 L 20.9215,10.1 L 11.0785,10.1 L 11.0785,12.786 L 16.9945,12.786 C 14.699502,15.131998 13.5775,17.920004 13.5435,22 L 16.7735,22 C 16.7735,18.141004 17.436503,15.675997 20.9215,12.48"
+     id="text2219"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/8.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/8.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/8.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/8.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/8.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 21.423,18.294 C 21.423,16.764002 20.334999,15.948 19.57,15.642 C 20.317999,15.166 20.913,14.519999 20.913,13.449 C 20.913,11.171002 18.889997,9.913 16.017,9.913 C 13.144003,9.913 11.087,11.171002 11.087,13.449 C 11.087,14.519999 11.716001,15.251 12.43,15.676 C 11.665001,15.982 10.577,16.764002 10.577,18.294 C 10.577,20.707998 12.651003,22.187 15.983,22.187 C 19.314997,22.187 21.423,20.707998 21.423,18.294 M 17.751,13.5 C 17.751,14.094999 17.308999,14.639 16.017,14.639 C 14.725001,14.639 14.249,14.094999 14.249,13.5 C 14.249,12.905001 14.691001,12.31 15.983,12.31 C 17.274999,12.31 17.751,12.905001 17.751,13.5 M 18.261,18.26 C 18.261,19.075999 17.512998,19.688 16.017,19.688 C 14.521001,19.688 13.739,19.075999 13.739,18.26 C 13.739,17.444001 14.470002,16.849 15.983,16.849 C 17.478998,16.849 18.261,17.444001 18.261,18.26"
+     id="text2219"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/9.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/9.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/9.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/9.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/9.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 22.128383,14.843 C 22.128383,11.562003 20.05438,9.913 17.062383,9.913 C 13.696386,9.913 11.639383,11.511003 11.639383,14.197 C 11.639383,16.712997 13.373385,17.886 15.838383,17.886 C 17.266382,17.886 18.133384,17.614 18.898383,17.189 C 17.997384,18.565999 16.36538,19.484 13.254383,19.484 L 13.254383,22.187 C 20.054376,22.187 22.128383,17.987997 22.128383,14.843 M 18.983383,13.959 C 18.983383,14.893999 18.286381,15.455 16.824383,15.455 C 15.566384,15.455 14.818383,14.893999 14.818383,13.976 C 14.818383,13.024001 15.651384,12.514 16.892383,12.514 C 18.337381,12.514 18.983383,13.109001 18.983383,13.959"
+     id="text2219"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/bkgrnd_greydots.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/bkgrnd_greydots.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/bullet_arrowblue.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/bullet_arrowblue.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/documentation.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/documentation.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/dot.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/dot.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/dot2.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/dot2.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/h1-bg.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/h1-bg.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/image_left.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/image_left.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/image_right.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/image_right.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/important.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/important.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/important.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/important.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/important.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="48"
+   height="48"
+   id="svg2">
+  <defs
+     id="defs5" />
+  <path
+     d="M 255.25,-411.29002 L 261.86798,-400.85887 L 273.83367,-397.7882 L 265.95811,-388.27072 L 266.73534,-375.94179 L 255.25,-380.49082 L 243.76466,-375.94179 L 244.54189,-388.27072 L 236.66633,-397.7882 L 248.63202,-400.85887 L 255.25,-411.29002 z "
+     transform="matrix(1.1071323,0,0,1.1071323,-258.4137,459.98052)"
+     style="fill:#2e3436;fill-opacity:1;stroke:#2e3436;stroke-width:4.25880718;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path4450" />
+  <path
+     d="M 255.25,-411.29002 L 261.86798,-400.85887 L 273.83367,-397.7882 L 265.95811,-388.27072 L 266.73534,-375.94179 L 255.25,-380.49082 L 243.76466,-375.94179 L 244.54189,-388.27072 L 236.66633,-397.7882 L 248.63202,-400.85887 L 255.25,-411.29002 z "
+     transform="matrix(1.1071323,0,0,1.1071323,-258.4137,459.98052)"
+     style="fill:#fac521;fill-opacity:1;stroke-width:3.4070456;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path4452" />
+  <path
+     d="M 24.175987,4.476098 L 16.980534,16.087712 L 3.9317841,19.443104 L 16.980534,20.076901 L 24.175987,10.383543 L 31.408721,20.076901 L 44.457471,19.443104 L 31.468862,16.027571 L 24.175987,4.476098 z "
+     style="fill:#feeaab;fill-opacity:1;stroke-width:3.4070456;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path4531" />
+  <path
+     d="M 12.456856,24.055852 C 11.65845,24.299685 14.436112,29.177769 14.436112,32.041127 C 14.436112,37.343117 13.010825,39.831516 15.971742,37.364645 C 18.711008,35.08244 21.184735,34.873512 24.195894,34.873512 C 27.207053,34.873512 29.646656,35.08244 32.38592,37.364645 C 35.346837,39.831516 33.921551,37.343117 33.92155,32.041127 C 33.92155,28.223316 38.868232,20.827013 33.682674,25.591482 C 31.458295,27.635233 27.413886,29.481744 24.195894,29.481744 C 20.977903,29.481744 16.933493,27.635233 14.709113,25.591482 C 13.412724,24.400365 12.722992,23.974574 12.456856,24.055852 z "
+     style="fill:#fcd867;fill-opacity:1;stroke-width:3.4070456;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path2185" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/jboss-logo.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/jboss-logo.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/jboss-logo.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,233 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="139.51801"
+   height="79.202713"
+   id="svg2898"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   sodipodi:docname="jboss-logo.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <metadata
+     id="metadata16">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="" />
+        <dc:title />
+        <dc:date />
+        <dc:creator>
+          <cc:Agent>
+            <dc:title />
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title />
+          </cc:Agent>
+        </dc:rights>
+        <dc:publisher>
+          <cc:Agent>
+            <dc:title />
+          </cc:Agent>
+        </dc:publisher>
+        <dc:identifier />
+        <dc:source />
+        <dc:relation />
+        <dc:language />
+        <dc:subject>
+          <rdf:Bag />
+        </dc:subject>
+        <dc:coverage />
+        <dc:description />
+        <dc:contributor>
+          <cc:Agent>
+            <dc:title />
+          </cc:Agent>
+        </dc:contributor>
+        <cc:license
+           rdf:resource="" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="692"
+     inkscape:window-width="640"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     showgrid="false"
+     inkscape:zoom="1"
+     inkscape:cx="95.81665"
+     inkscape:cy="41.7868"
+     inkscape:window-x="846"
+     inkscape:window-y="127"
+     inkscape:current-layer="svg2898" />
+  <defs
+     id="defs21">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="-50 : 600 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="700 : 600 : 1"
+       inkscape:persp3d-origin="300 : 400 : 1"
+       id="perspective18" />
+    <inkscape:perspective
+       id="perspective2683"
+       inkscape:persp3d-origin="107.759 : 40.782333 : 1"
+       inkscape:vp_z="215.51801 : 61.1735 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 61.1735 : 1"
+       sodipodi:type="inkscape:persp3d" />
+  </defs>
+  <g
+     id="g2622"
+     transform="scale(0.6473613,0.6473613)">
+	<g
+   id="g2624">
+		<path
+   id="path2626"
+   d="M 140.253,110.221 L 143.198,116.112 L 140.706,116.112 L 137.843,110.407 L 134.588,110.407 L 134.588,116.112 L 132.467,116.112 L 132.467,101.693 L 138.79,101.693 C 141.304,101.693 143.425,103.032 143.425,105.999 C 143.425,108.305 142.21,109.727 140.253,110.221 z M 138.79,103.732 L 134.588,103.732 L 134.588,108.367 L 138.79,108.367 C 140.232,108.367 141.241,107.626 141.241,106.06 C 141.241,104.556 140.253,103.732 138.79,103.732 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2628"
+   d="M 155.164,111.458 L 148.016,111.458 C 148.243,113.538 149.417,114.424 150.736,114.424 C 151.642,114.424 152.363,114.095 153.084,113.559 L 154.341,114.918 C 153.394,115.824 152.261,116.339 150.612,116.339 C 148.079,116.339 145.936,114.3 145.936,110.716 C 145.936,107.049 147.873,105.071 150.673,105.071 C 153.742,105.071 155.226,107.563 155.226,110.489 C 155.226,110.879 155.185,111.231 155.164,111.458 z M 150.529,106.987 C 149.107,106.987 148.242,107.975 148.056,109.706 L 153.082,109.706 C 152.98,108.223 152.28,106.987 150.529,106.987 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2630"
+   d="M 164.37,116.112 L 164.37,115.083 C 163.587,115.804 162.681,116.339 161.548,116.339 C 159.22,116.339 157.387,114.651 157.387,110.53 C 157.387,106.822 159.406,105.071 161.651,105.071 C 162.743,105.071 163.773,105.648 164.371,106.307 L 164.371,102.187 L 166.472,101.095 L 166.472,116.112 L 164.37,116.112 z M 164.391,108.45 C 163.917,107.811 162.928,107.028 161.857,107.028 C 160.333,107.028 159.509,108.182 159.509,110.468 C 159.509,113.187 160.374,114.381 161.94,114.381 C 162.949,114.381 163.835,113.701 164.391,113.002 L 164.391,108.45 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2632"
+   d="M 184.266,116.112 L 184.266,109.644 L 177.632,109.644 L 177.632,116.112 L 175.47,116.112 L 175.47,101.693 L 177.632,101.693 L 177.632,107.522 L 184.266,107.522 L 184.266,101.693 L 186.428,101.693 L 186.428,116.112 L 184.266,116.112 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2634"
+   d="M 196.065,116.112 L 196.065,115.042 C 195.324,115.783 194.273,116.339 193.099,116.339 C 191.348,116.339 189.35,115.351 189.35,112.693 C 189.35,110.283 191.204,109.191 193.655,109.191 C 194.665,109.191 195.468,109.335 196.065,109.603 L 196.065,108.799 C 196.065,107.625 195.344,106.966 194.026,106.966 C 192.914,106.966 192.048,107.172 191.204,107.646 L 190.38,106.04 C 191.41,105.401 192.564,105.071 194.088,105.071 C 196.498,105.071 198.147,106.245 198.147,108.697 L 198.147,116.112 L 196.065,116.112 L 196.065,116.112 z M 196.065,111.499 C 195.489,111.21 194.747,111.024 193.593,111.024 C 192.234,111.024 191.368,111.642 191.368,112.631 C 191.368,113.701 192.048,114.423 193.448,114.423 C 194.582,114.423 195.57,113.723 196.064,113.043 L 196.064,111.499 L 196.065,111.499 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2636"
+   d="M 206.363,115.844 C 205.847,116.133 205.127,116.338 204.282,116.338 C 202.778,116.338 201.851,115.412 201.851,113.475 L 201.851,107.234 L 200.306,107.234 L 200.306,105.297 L 201.851,105.297 L 201.851,102.207 L 203.932,101.095 L 203.932,105.297 L 206.61,105.297 L 206.61,107.234 L 203.932,107.234 L 203.932,113.105 C 203.932,114.114 204.261,114.403 205.044,114.403 C 205.6,114.403 206.218,114.197 206.609,113.97 L 206.363,115.844 z"
+   style="fill:#cc0000" />
+
+	</g>
+
+	<g
+   id="g2638">
+		<path
+   id="path2640"
+   d="M 106.389,51.025 C 109.959,49.238 112.389,45.924 112.389,41.844 C 112.389,32.335 103.775,30.289 95.924,30.423 L 74.738,30.423 L 74.617,30.423 L 62.871,30.423 L 62.871,60.785 C 62.871,65.194 61.334,66.721 58.597,66.721 C 55.656,66.721 54.002,65.067 54.002,62.063 L 54.002,57.858 L 42.832,57.858 L 42.832,59.827 C 42.832,69.981 46.724,76.926 58.784,76.926 C 68.621,76.926 73.822,72.57 74.617,63.968 L 74.617,75.972 L 96.496,75.972 C 106.257,75.972 114.233,72.657 114.233,61.811 C 114.233,56.646 111.242,52.435 106.389,51.025 z M 86.487,39.605 L 95.668,39.605 C 98.161,39.605 100.52,40.697 100.52,44.01 C 100.52,47.263 97.714,48.348 95.668,48.348 L 86.487,48.348 L 86.487,39.605 z M 95.989,66.469 L 86.487,66.469 L 86.487,56 L 95.989,56 C 99.565,56 102.373,57.345 102.373,61.355 C 102.373,65.125 99.756,66.469 95.989,66.469 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2642"
+   d="M 90.067,108.399 C 90.067,100.704 83.822,94.452 76.123,94.452 C 68.409,94.452 62.168,100.704 62.168,108.399 C 62.168,116.108 68.409,122.347 76.123,122.347 C 83.822,122.347 90.067,116.108 90.067,108.399 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2644"
+   d="M 53.012,103.999 C 53.012,97.181 47.479,91.65 40.655,91.65 C 33.832,91.65 28.303,97.18 28.303,103.999 C 28.303,110.823 33.831,116.356 40.655,116.356 C 47.479,116.356 53.012,110.823 53.012,103.999 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2646"
+   d="M 25.097,81.68 C 25.097,75.523 20.113,70.529 13.947,70.529 C 7.779,70.529 2.787,75.523 2.787,81.68 C 2.787,87.854 7.779,92.848 13.947,92.848 C 20.112,92.848 25.097,87.854 25.097,81.68 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2648"
+   d="M 19.918,50.615 C 19.918,45.109 15.463,40.659 9.963,40.659 C 4.464,40.659 0,45.108 0,50.615 C 0,56.115 4.464,60.579 9.963,60.579 C 15.463,60.579 19.918,56.114 19.918,50.615 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2650"
+   d="M 33.88,22.719 C 33.88,18.1 30.124,14.353 25.508,14.353 C 20.889,14.353 17.139,18.1 17.139,22.719 C 17.139,27.342 20.889,31.086 25.508,31.086 C 30.124,31.086 33.88,27.342 33.88,22.719 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2652"
+   d="M 57.78,10.364 C 57.78,6.184 54.395,2.793 50.214,2.793 C 46.034,2.793 42.643,6.184 42.643,10.364 C 42.643,14.551 46.035,17.942 50.214,17.942 C 54.396,17.942 57.78,14.551 57.78,10.364 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2654"
+   d="M 82.891,6.377 C 82.891,2.855 80.042,0 76.517,0 C 73.001,0 70.14,2.855 70.14,6.377 C 70.14,9.903 73.001,12.757 76.517,12.757 C 80.042,12.757 82.891,9.903 82.891,6.377 z"
+   style="fill:#cc0000" />
+
+	</g>
+
+	<g
+   id="g2656">
+		<g
+   id="g2658">
+			<path
+   id="path2660"
+   d="M 161.415,62.895 C 156.077,61.543 149.709,61.118 147.172,56.742 C 147.293,57.624 147.376,58.522 147.376,59.448 C 147.376,61.433 147.077,63.315 146.536,65.067 L 155.794,65.067 C 155.794,66.721 156.504,67.933 157.582,68.762 C 158.604,69.532 160.076,69.904 161.604,69.904 C 163.701,69.904 166.706,69.02 166.706,66.4 C 166.706,63.855 163.321,63.336 161.415,62.895 z"
+   style="fill:none" />
+
+			<path
+   id="path2662"
+   d="M 129.896,50.193 C 124.851,50.193 123.318,55.244 123.318,59.448 C 123.318,63.665 124.851,68.635 129.896,68.635 C 134.935,68.635 136.529,63.665 136.529,59.448 C 136.528,55.244 134.935,50.193 129.896,50.193 z"
+   style="fill:none" />
+
+			<path
+   id="path2664"
+   d="M 192.015,62.895 C 185.337,61.204 176.724,60.97 176.338,52.616 L 166.718,52.616 C 166.718,51.22 166.206,50.326 165.322,49.75 C 164.419,49.181 163.215,48.923 161.875,48.923 C 160.094,48.923 156.883,49.111 156.883,51.41 C 156.883,54.542 164.156,55.115 169.13,56.197 C 175.779,57.532 177.529,62.315 177.553,65.066 L 186.395,65.066 C 186.395,66.72 187.105,67.932 188.183,68.761 C 189.206,69.531 190.677,69.903 192.204,69.903 C 194.301,69.903 197.307,69.019 197.307,66.399 C 197.306,63.855 193.922,63.336 192.015,62.895 z"
+   style="fill:none" />
+
+			<path
+   id="path2666"
+   d="M 199.729,56.198 C 194.754,55.116 187.148,54.544 187.148,51.411 C 187.148,49.111 190.027,48.924 191.808,48.924 C 193.147,48.924 194.352,49.182 195.255,49.751 C 196.139,50.327 196.651,51.221 196.651,52.617 L 206.67,52.617 C 206.285,44.011 198.69,41.903 191.431,41.903 C 185.383,41.903 177.526,43.785 176.439,50.443 C 174.954,43.662 168.095,41.903 161.496,41.903 C 154.986,41.903 146.035,44.075 146.035,52.049 C 146.035,52.19 146.056,52.31 146.059,52.447 C 143.534,46.151 137.569,41.903 129.896,41.903 C 121.597,41.903 115.392,46.75 113.294,53.899 C 114.898,56.057 115.742,58.872 115.742,61.811 C 115.742,64.224 115.358,66.36 114.631,68.23 C 117.484,73.503 122.974,76.926 129.896,76.926 C 137.25,76.926 143.019,73.054 145.711,67.207 C 147.125,74.716 154.473,76.926 161.668,76.926 C 167.855,76.926 174.688,74.899 176.847,69.154 C 179.082,75.103 185.737,76.926 192.268,76.926 C 199.73,76.926 208.154,73.995 208.154,65.125 C 208.153,62.383 206.423,57.542 199.729,56.198 z M 129.896,68.63!
 5 C 124.851,68.635 123.318,63.665 123.318,59.448 C 123.318,55.243 124.851,50.193 129.896,50.193 C 134.935,50.193 136.529,55.244 136.529,59.448 C 136.528,63.666 134.935,68.635 129.896,68.635 z M 161.604,69.904 C 160.076,69.904 158.604,69.532 157.582,68.762 C 156.504,67.933 155.794,66.721 155.794,65.067 L 146.536,65.067 C 147.077,63.315 147.376,61.433 147.376,59.448 C 147.376,58.522 147.293,57.624 147.172,56.742 C 149.709,61.117 156.077,61.543 161.415,62.895 C 163.321,63.336 166.706,63.855 166.706,66.4 C 166.706,69.02 163.701,69.904 161.604,69.904 z M 192.203,69.904 C 190.676,69.904 189.205,69.532 188.182,68.762 C 187.104,67.933 186.394,66.721 186.394,65.067 L 177.552,65.067 C 177.529,62.316 175.779,57.533 169.129,56.198 C 164.155,55.116 156.882,54.544 156.882,51.411 C 156.882,49.111 160.093,48.924 161.874,48.924 C 163.214,48.924 164.418,49.182 165.321,49.751 C 166.206,50.327 166.717,51.221 166.717,52.617 L 176.337,52.617 C 176.723,60.971 185.336,61.204 192.014,62.896 C 193.9!
 21,63.337 197.305,63.856 197.305,66.401 C 197.306,69.02 194.3,!
 69.904 1
92.203,69.904 z"
+   style="fill:#60605b" />
+
+		</g>
+
+		<path
+   id="path2668"
+   d="M 209.127,36.16 L 210.092,36.16 L 211.544,38.546 L 212.485,38.546 L 210.914,36.116 C 211.721,36.014 212.334,35.586 212.334,34.607 C 212.334,33.508 211.696,33.034 210.396,33.034 L 208.294,33.034 L 208.294,38.546 L 209.127,38.546 L 209.127,36.16 z M 209.127,35.446 L 209.127,33.735 L 210.27,33.735 C 210.837,33.735 211.47,33.867 211.47,34.55 C 211.47,35.397 210.837,35.446 210.131,35.446 L 209.127,35.446 z"
+   style="fill:#60605b" />
+
+		<path
+   id="path2670"
+   d="M 215.518,35.8 C 215.518,38.78 213.098,41.192 210.119,41.192 C 207.133,41.192 204.713,38.78 204.713,35.8 C 204.713,32.813 207.133,30.395 210.119,30.395 C 213.098,30.396 215.518,32.813 215.518,35.8 z M 210.118,31.356 C 207.654,31.356 205.666,33.338 205.666,35.8 C 205.666,38.251 207.654,40.232 210.118,40.232 C 212.568,40.232 214.556,38.251 214.556,35.8 C 214.557,33.338 212.568,31.356 210.118,31.356 z"
+   style="fill:#60605b" />
+
+	</g>
+
+	<g
+   id="g2672">
+		<path
+   id="path2674"
+   d="M 108.227,116.338 C 107.135,116.338 106.105,115.762 105.508,115.103 L 105.508,116.112 L 103.406,116.112 L 103.406,102.187 L 105.508,101.095 L 105.508,106.327 C 106.29,105.605 107.196,105.07 108.33,105.07 C 110.657,105.07 112.49,106.759 112.49,110.879 C 112.49,114.588 110.472,116.338 108.227,116.338 z M 107.938,107.028 C 106.928,107.028 106.042,107.708 105.487,108.409 L 105.487,112.961 C 105.961,113.6 106.949,114.382 108.02,114.382 C 109.544,114.382 110.369,113.23 110.369,110.943 C 110.369,108.223 109.504,107.028 107.938,107.028 z"
+   style="fill:#60605b" />
+
+		<path
+   id="path2676"
+   d="M 118.915,119.923 L 116.67,119.923 L 118.235,115.906 L 114.259,105.297 L 116.587,105.297 L 118.358,110.592 C 118.687,111.539 119.182,113.146 119.305,113.742 C 119.491,113.104 119.944,111.559 120.273,110.633 L 122.107,105.297 L 124.352,105.297 L 118.915,119.923 z"
+   style="fill:#60605b" />
+
+	</g>
+
+</g>
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/note.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/note.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/note.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/note.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/note.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="48"
+   height="48"
+   id="svg2">
+  <defs
+     id="defs5" />
+  <path
+     d="M 30.27396,4.1232594 L 18.765811,4.1232594 C 11.476786,4.1232594 5.5574109,10.546411 5.5574109,19.960741 C 5.5574109,24.746615 7.0844878,29.075948 9.5403943,32.177328 C 9.4616811,32.681104 9.414455,33.200619 9.414455,33.720144 C 9.414455,39.308917 13.554865,43.591015 18.891751,44.267966 C 17.506371,42.693663 16.656245,40.914707 16.656245,38.616218 C 16.656245,38.01799 16.719219,37.419752 16.82942,36.837262 C 17.459135,36.963202 18.104599,37.026176 18.750063,37.026176 L 30.258211,37.026176 C 37.547237,37.026176 43.466612,29.39081 43.466612,19.960741 C 43.466612,10.530672 37.578724,4.1232594 30.27396,4.1232594 z "
+     style="fill:#2e3436;fill-opacity:1;stroke:#2e3436;stroke-width:4.7150631;stroke-miterlimit:4;stroke-dasharray:none"
+     id="path4317" />
+  <path
+     d="M 30.27396,4.1232594 L 18.765811,4.1232594 C 11.476786,4.1232594 5.5574109,10.546411 5.5574109,19.960741 C 5.5574109,24.746615 7.0844878,29.075948 9.5403943,32.177328 C 9.4616811,32.681104 9.414455,33.200619 9.414455,33.720144 C 9.414455,39.308917 13.554865,43.591015 18.891751,44.267966 C 17.506371,42.693663 16.656245,40.914707 16.656245,38.616218 C 16.656245,38.01799 16.719219,37.419752 16.82942,36.837262 C 17.459135,36.963202 18.104599,37.026176 18.750063,37.026176 L 30.258211,37.026176 C 37.547237,37.026176 43.466612,29.39081 43.466612,19.960741 C 43.466612,10.530672 37.578724,4.1232594 30.27396,4.1232594 z "
+     style="fill:#bfdce8;fill-opacity:1"
+     id="path142" />
+  <path
+     d="M 19.200879,5.5648899 C 12.490241,5.5648899 7.0622987,11.295775 7.0622987,19.690323 C 7.0622987,22.890926 7.8418023,25.879852 9.1910836,28.332288 C 8.6113289,26.599889 8.2852163,24.667826 8.2852163,22.673336 C 8.2852163,14.629768 13.495502,9.1620492 19.925575,9.1620492 L 30.071259,9.1620492 C 36.515213,9.1620492 41.711609,14.616311 41.711609,22.673336 C 41.864688,21.709218 41.983366,20.710908 41.983366,19.690323 C 41.983366,11.281743 36.524624,5.5648899 29.799492,5.5648899 L 19.200879,5.5648899 z "
+     style="fill:#ffffff"
+     id="path2358" />
+  <path
+     d="M 28.241965,33.725087 L 20.792252,33.725087 C 16.073756,33.725087 12.241894,32.944782 12.241894,26.850486 C 12.241894,25.10387 12.368512,23.572125 15.515722,23.567487 L 33.508301,23.540969 C 36.182481,23.537028 36.782127,24.950794 36.782127,26.850486 C 36.782127,32.95497 32.970649,33.725087 28.241965,33.725087 z "
+     style="fill:#d0ecf9;fill-opacity:1"
+     id="path2173" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/redhat-logo.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/redhat-logo.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/redhat-logo.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,243 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="139.51801"
+   height="79.202713"
+   id="svg2898"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   sodipodi:docname="redhat-logo.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <metadata
+     id="metadata16">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="" />
+        <dc:title />
+        <dc:date />
+        <dc:creator>
+          <cc:Agent>
+            <dc:title />
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title />
+          </cc:Agent>
+        </dc:rights>
+        <dc:publisher>
+          <cc:Agent>
+            <dc:title />
+          </cc:Agent>
+        </dc:publisher>
+        <dc:identifier />
+        <dc:source />
+        <dc:relation />
+        <dc:language />
+        <dc:subject>
+          <rdf:Bag />
+        </dc:subject>
+        <dc:coverage />
+        <dc:description />
+        <dc:contributor>
+          <cc:Agent>
+            <dc:title />
+          </cc:Agent>
+        </dc:contributor>
+        <cc:license
+           rdf:resource="" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="692"
+     inkscape:window-width="640"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     showgrid="false"
+     inkscape:zoom="1"
+     inkscape:cx="95.81665"
+     inkscape:cy="121.7868"
+     inkscape:window-x="1091"
+     inkscape:window-y="85"
+     inkscape:current-layer="svg2898" />
+  <defs
+     id="defs21">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="-50 : 600 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="700 : 600 : 1"
+       inkscape:persp3d-origin="300 : 400 : 1"
+       id="perspective18" />
+    <inkscape:perspective
+       id="perspective2683"
+       inkscape:persp3d-origin="107.759 : 40.782333 : 1"
+       inkscape:vp_z="215.51801 : 61.1735 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 61.1735 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective2733"
+       inkscape:persp3d-origin="150 : 46.666667 : 1"
+       inkscape:vp_z="300 : 70 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 70 : 1"
+       sodipodi:type="inkscape:persp3d" />
+  </defs>
+  <g
+     id="g2622"
+     transform="scale(0.6473613,0.6473613)"
+     inkscape:export-filename="/home/rlerch/Source/SVN/publican/trunk/publican-jboss/en-US/images/image_left.png"
+     inkscape:export-xdpi="61.361534"
+     inkscape:export-ydpi="61.361534">
+	<g
+   id="g2624">
+		<path
+   id="path2626"
+   d="M 140.253,110.221 L 143.198,116.112 L 140.706,116.112 L 137.843,110.407 L 134.588,110.407 L 134.588,116.112 L 132.467,116.112 L 132.467,101.693 L 138.79,101.693 C 141.304,101.693 143.425,103.032 143.425,105.999 C 143.425,108.305 142.21,109.727 140.253,110.221 z M 138.79,103.732 L 134.588,103.732 L 134.588,108.367 L 138.79,108.367 C 140.232,108.367 141.241,107.626 141.241,106.06 C 141.241,104.556 140.253,103.732 138.79,103.732 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2628"
+   d="M 155.164,111.458 L 148.016,111.458 C 148.243,113.538 149.417,114.424 150.736,114.424 C 151.642,114.424 152.363,114.095 153.084,113.559 L 154.341,114.918 C 153.394,115.824 152.261,116.339 150.612,116.339 C 148.079,116.339 145.936,114.3 145.936,110.716 C 145.936,107.049 147.873,105.071 150.673,105.071 C 153.742,105.071 155.226,107.563 155.226,110.489 C 155.226,110.879 155.185,111.231 155.164,111.458 z M 150.529,106.987 C 149.107,106.987 148.242,107.975 148.056,109.706 L 153.082,109.706 C 152.98,108.223 152.28,106.987 150.529,106.987 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2630"
+   d="M 164.37,116.112 L 164.37,115.083 C 163.587,115.804 162.681,116.339 161.548,116.339 C 159.22,116.339 157.387,114.651 157.387,110.53 C 157.387,106.822 159.406,105.071 161.651,105.071 C 162.743,105.071 163.773,105.648 164.371,106.307 L 164.371,102.187 L 166.472,101.095 L 166.472,116.112 L 164.37,116.112 z M 164.391,108.45 C 163.917,107.811 162.928,107.028 161.857,107.028 C 160.333,107.028 159.509,108.182 159.509,110.468 C 159.509,113.187 160.374,114.381 161.94,114.381 C 162.949,114.381 163.835,113.701 164.391,113.002 L 164.391,108.45 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2632"
+   d="M 184.266,116.112 L 184.266,109.644 L 177.632,109.644 L 177.632,116.112 L 175.47,116.112 L 175.47,101.693 L 177.632,101.693 L 177.632,107.522 L 184.266,107.522 L 184.266,101.693 L 186.428,101.693 L 186.428,116.112 L 184.266,116.112 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2634"
+   d="M 196.065,116.112 L 196.065,115.042 C 195.324,115.783 194.273,116.339 193.099,116.339 C 191.348,116.339 189.35,115.351 189.35,112.693 C 189.35,110.283 191.204,109.191 193.655,109.191 C 194.665,109.191 195.468,109.335 196.065,109.603 L 196.065,108.799 C 196.065,107.625 195.344,106.966 194.026,106.966 C 192.914,106.966 192.048,107.172 191.204,107.646 L 190.38,106.04 C 191.41,105.401 192.564,105.071 194.088,105.071 C 196.498,105.071 198.147,106.245 198.147,108.697 L 198.147,116.112 L 196.065,116.112 L 196.065,116.112 z M 196.065,111.499 C 195.489,111.21 194.747,111.024 193.593,111.024 C 192.234,111.024 191.368,111.642 191.368,112.631 C 191.368,113.701 192.048,114.423 193.448,114.423 C 194.582,114.423 195.57,113.723 196.064,113.043 L 196.064,111.499 L 196.065,111.499 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2636"
+   d="M 206.363,115.844 C 205.847,116.133 205.127,116.338 204.282,116.338 C 202.778,116.338 201.851,115.412 201.851,113.475 L 201.851,107.234 L 200.306,107.234 L 200.306,105.297 L 201.851,105.297 L 201.851,102.207 L 203.932,101.095 L 203.932,105.297 L 206.61,105.297 L 206.61,107.234 L 203.932,107.234 L 203.932,113.105 C 203.932,114.114 204.261,114.403 205.044,114.403 C 205.6,114.403 206.218,114.197 206.609,113.97 L 206.363,115.844 z"
+   style="fill:#cc0000" />
+
+	</g>
+
+	<g
+   id="g2638">
+		<path
+   id="path2640"
+   d="M 106.389,51.025 C 109.959,49.238 112.389,45.924 112.389,41.844 C 112.389,32.335 103.775,30.289 95.924,30.423 L 74.738,30.423 L 74.617,30.423 L 62.871,30.423 L 62.871,60.785 C 62.871,65.194 61.334,66.721 58.597,66.721 C 55.656,66.721 54.002,65.067 54.002,62.063 L 54.002,57.858 L 42.832,57.858 L 42.832,59.827 C 42.832,69.981 46.724,76.926 58.784,76.926 C 68.621,76.926 73.822,72.57 74.617,63.968 L 74.617,75.972 L 96.496,75.972 C 106.257,75.972 114.233,72.657 114.233,61.811 C 114.233,56.646 111.242,52.435 106.389,51.025 z M 86.487,39.605 L 95.668,39.605 C 98.161,39.605 100.52,40.697 100.52,44.01 C 100.52,47.263 97.714,48.348 95.668,48.348 L 86.487,48.348 L 86.487,39.605 z M 95.989,66.469 L 86.487,66.469 L 86.487,56 L 95.989,56 C 99.565,56 102.373,57.345 102.373,61.355 C 102.373,65.125 99.756,66.469 95.989,66.469 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2642"
+   d="M 90.067,108.399 C 90.067,100.704 83.822,94.452 76.123,94.452 C 68.409,94.452 62.168,100.704 62.168,108.399 C 62.168,116.108 68.409,122.347 76.123,122.347 C 83.822,122.347 90.067,116.108 90.067,108.399 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2644"
+   d="M 53.012,103.999 C 53.012,97.181 47.479,91.65 40.655,91.65 C 33.832,91.65 28.303,97.18 28.303,103.999 C 28.303,110.823 33.831,116.356 40.655,116.356 C 47.479,116.356 53.012,110.823 53.012,103.999 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2646"
+   d="M 25.097,81.68 C 25.097,75.523 20.113,70.529 13.947,70.529 C 7.779,70.529 2.787,75.523 2.787,81.68 C 2.787,87.854 7.779,92.848 13.947,92.848 C 20.112,92.848 25.097,87.854 25.097,81.68 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2648"
+   d="M 19.918,50.615 C 19.918,45.109 15.463,40.659 9.963,40.659 C 4.464,40.659 0,45.108 0,50.615 C 0,56.115 4.464,60.579 9.963,60.579 C 15.463,60.579 19.918,56.114 19.918,50.615 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2650"
+   d="M 33.88,22.719 C 33.88,18.1 30.124,14.353 25.508,14.353 C 20.889,14.353 17.139,18.1 17.139,22.719 C 17.139,27.342 20.889,31.086 25.508,31.086 C 30.124,31.086 33.88,27.342 33.88,22.719 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2652"
+   d="M 57.78,10.364 C 57.78,6.184 54.395,2.793 50.214,2.793 C 46.034,2.793 42.643,6.184 42.643,10.364 C 42.643,14.551 46.035,17.942 50.214,17.942 C 54.396,17.942 57.78,14.551 57.78,10.364 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2654"
+   d="M 82.891,6.377 C 82.891,2.855 80.042,0 76.517,0 C 73.001,0 70.14,2.855 70.14,6.377 C 70.14,9.903 73.001,12.757 76.517,12.757 C 80.042,12.757 82.891,9.903 82.891,6.377 z"
+   style="fill:#cc0000" />
+
+	</g>
+
+	<g
+   id="g2656">
+		<g
+   id="g2658">
+			<path
+   id="path2660"
+   d="M 161.415,62.895 C 156.077,61.543 149.709,61.118 147.172,56.742 C 147.293,57.624 147.376,58.522 147.376,59.448 C 147.376,61.433 147.077,63.315 146.536,65.067 L 155.794,65.067 C 155.794,66.721 156.504,67.933 157.582,68.762 C 158.604,69.532 160.076,69.904 161.604,69.904 C 163.701,69.904 166.706,69.02 166.706,66.4 C 166.706,63.855 163.321,63.336 161.415,62.895 z"
+   style="fill:none" />
+
+			<path
+   id="path2662"
+   d="M 129.896,50.193 C 124.851,50.193 123.318,55.244 123.318,59.448 C 123.318,63.665 124.851,68.635 129.896,68.635 C 134.935,68.635 136.529,63.665 136.529,59.448 C 136.528,55.244 134.935,50.193 129.896,50.193 z"
+   style="fill:none" />
+
+			<path
+   id="path2664"
+   d="M 192.015,62.895 C 185.337,61.204 176.724,60.97 176.338,52.616 L 166.718,52.616 C 166.718,51.22 166.206,50.326 165.322,49.75 C 164.419,49.181 163.215,48.923 161.875,48.923 C 160.094,48.923 156.883,49.111 156.883,51.41 C 156.883,54.542 164.156,55.115 169.13,56.197 C 175.779,57.532 177.529,62.315 177.553,65.066 L 186.395,65.066 C 186.395,66.72 187.105,67.932 188.183,68.761 C 189.206,69.531 190.677,69.903 192.204,69.903 C 194.301,69.903 197.307,69.019 197.307,66.399 C 197.306,63.855 193.922,63.336 192.015,62.895 z"
+   style="fill:none" />
+
+			<path
+   id="path2666"
+   d="M 199.729,56.198 C 194.754,55.116 187.148,54.544 187.148,51.411 C 187.148,49.111 190.027,48.924 191.808,48.924 C 193.147,48.924 194.352,49.182 195.255,49.751 C 196.139,50.327 196.651,51.221 196.651,52.617 L 206.67,52.617 C 206.285,44.011 198.69,41.903 191.431,41.903 C 185.383,41.903 177.526,43.785 176.439,50.443 C 174.954,43.662 168.095,41.903 161.496,41.903 C 154.986,41.903 146.035,44.075 146.035,52.049 C 146.035,52.19 146.056,52.31 146.059,52.447 C 143.534,46.151 137.569,41.903 129.896,41.903 C 121.597,41.903 115.392,46.75 113.294,53.899 C 114.898,56.057 115.742,58.872 115.742,61.811 C 115.742,64.224 115.358,66.36 114.631,68.23 C 117.484,73.503 122.974,76.926 129.896,76.926 C 137.25,76.926 143.019,73.054 145.711,67.207 C 147.125,74.716 154.473,76.926 161.668,76.926 C 167.855,76.926 174.688,74.899 176.847,69.154 C 179.082,75.103 185.737,76.926 192.268,76.926 C 199.73,76.926 208.154,73.995 208.154,65.125 C 208.153,62.383 206.423,57.542 199.729,56.198 z M 129.896,68.63!
 5 C 124.851,68.635 123.318,63.665 123.318,59.448 C 123.318,55.243 124.851,50.193 129.896,50.193 C 134.935,50.193 136.529,55.244 136.529,59.448 C 136.528,63.666 134.935,68.635 129.896,68.635 z M 161.604,69.904 C 160.076,69.904 158.604,69.532 157.582,68.762 C 156.504,67.933 155.794,66.721 155.794,65.067 L 146.536,65.067 C 147.077,63.315 147.376,61.433 147.376,59.448 C 147.376,58.522 147.293,57.624 147.172,56.742 C 149.709,61.117 156.077,61.543 161.415,62.895 C 163.321,63.336 166.706,63.855 166.706,66.4 C 166.706,69.02 163.701,69.904 161.604,69.904 z M 192.203,69.904 C 190.676,69.904 189.205,69.532 188.182,68.762 C 187.104,67.933 186.394,66.721 186.394,65.067 L 177.552,65.067 C 177.529,62.316 175.779,57.533 169.129,56.198 C 164.155,55.116 156.882,54.544 156.882,51.411 C 156.882,49.111 160.093,48.924 161.874,48.924 C 163.214,48.924 164.418,49.182 165.321,49.751 C 166.206,50.327 166.717,51.221 166.717,52.617 L 176.337,52.617 C 176.723,60.971 185.336,61.204 192.014,62.896 C 193.9!
 21,63.337 197.305,63.856 197.305,66.401 C 197.306,69.02 194.3,!
 69.904 1
92.203,69.904 z"
+   style="fill:#60605b" />
+
+		</g>
+
+		<path
+   id="path2668"
+   d="M 209.127,36.16 L 210.092,36.16 L 211.544,38.546 L 212.485,38.546 L 210.914,36.116 C 211.721,36.014 212.334,35.586 212.334,34.607 C 212.334,33.508 211.696,33.034 210.396,33.034 L 208.294,33.034 L 208.294,38.546 L 209.127,38.546 L 209.127,36.16 z M 209.127,35.446 L 209.127,33.735 L 210.27,33.735 C 210.837,33.735 211.47,33.867 211.47,34.55 C 211.47,35.397 210.837,35.446 210.131,35.446 L 209.127,35.446 z"
+   style="fill:#60605b" />
+
+		<path
+   id="path2670"
+   d="M 215.518,35.8 C 215.518,38.78 213.098,41.192 210.119,41.192 C 207.133,41.192 204.713,38.78 204.713,35.8 C 204.713,32.813 207.133,30.395 210.119,30.395 C 213.098,30.396 215.518,32.813 215.518,35.8 z M 210.118,31.356 C 207.654,31.356 205.666,33.338 205.666,35.8 C 205.666,38.251 207.654,40.232 210.118,40.232 C 212.568,40.232 214.556,38.251 214.556,35.8 C 214.557,33.338 212.568,31.356 210.118,31.356 z"
+   style="fill:#60605b" />
+
+	</g>
+
+	<g
+   id="g2672">
+		<path
+   id="path2674"
+   d="M 108.227,116.338 C 107.135,116.338 106.105,115.762 105.508,115.103 L 105.508,116.112 L 103.406,116.112 L 103.406,102.187 L 105.508,101.095 L 105.508,106.327 C 106.29,105.605 107.196,105.07 108.33,105.07 C 110.657,105.07 112.49,106.759 112.49,110.879 C 112.49,114.588 110.472,116.338 108.227,116.338 z M 107.938,107.028 C 106.928,107.028 106.042,107.708 105.487,108.409 L 105.487,112.961 C 105.961,113.6 106.949,114.382 108.02,114.382 C 109.544,114.382 110.369,113.23 110.369,110.943 C 110.369,108.223 109.504,107.028 107.938,107.028 z"
+   style="fill:#60605b" />
+
+		<path
+   id="path2676"
+   d="M 118.915,119.923 L 116.67,119.923 L 118.235,115.906 L 114.259,105.297 L 116.587,105.297 L 118.358,110.592 C 118.687,111.539 119.182,113.146 119.305,113.742 C 119.491,113.104 119.944,111.559 120.273,110.633 L 122.107,105.297 L 124.352,105.297 L 118.915,119.923 z"
+   style="fill:#60605b" />
+
+	</g>
+
+</g>
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/rhlogo.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/rhlogo.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/shade.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/shade.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/shine.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/shine.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/stock-go-back.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/stock-go-back.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/stock-go-forward.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/stock-go-forward.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/stock-go-up.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/stock-go-up.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/stock-home.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/stock-home.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/title_logo.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/title_logo.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/title_logo.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/title_logo.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/title_logo.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,228 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="265"
+   height="151"
+   id="svg2898"
+   sodipodi:version="0.32"
+   inkscape:version="0.46+devel"
+   sodipodi:docname="title_logo.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="/home/rlerch/Source/SVN/publican/trunk/publican-jboss/en-US/images/title_logo.png"
+   inkscape:export-xdpi="20.840239"
+   inkscape:export-ydpi="20.840239">
+  <metadata
+     id="metadata16">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="" />
+        <dc:title />
+        <dc:date />
+        <dc:creator>
+          <cc:Agent>
+            <dc:title />
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title />
+          </cc:Agent>
+        </dc:rights>
+        <dc:publisher>
+          <cc:Agent>
+            <dc:title />
+          </cc:Agent>
+        </dc:publisher>
+        <dc:identifier />
+        <dc:source />
+        <dc:relation />
+        <dc:language />
+        <dc:subject>
+          <rdf:Bag />
+        </dc:subject>
+        <dc:coverage />
+        <dc:description />
+        <dc:contributor>
+          <cc:Agent>
+            <dc:title />
+          </cc:Agent>
+        </dc:contributor>
+        <cc:license
+           rdf:resource="" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="692"
+     inkscape:window-width="640"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     showgrid="false"
+     inkscape:zoom="1"
+     inkscape:cx="170.83251"
+     inkscape:cy="121.7868"
+     inkscape:window-x="1936"
+     inkscape:window-y="174"
+     inkscape:current-layer="svg2898"
+     units="px" />
+  <defs
+     id="defs21">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="-50 : 600 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="700 : 600 : 1"
+       inkscape:persp3d-origin="300 : 400 : 1"
+       id="perspective18" />
+    <inkscape:perspective
+       id="perspective2683"
+       inkscape:persp3d-origin="107.759 : 40.782333 : 1"
+       inkscape:vp_z="215.51801 : 61.1735 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 61.1735 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective2733"
+       inkscape:persp3d-origin="150 : 46.666667 : 1"
+       inkscape:vp_z="300 : 70 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 70 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective2787"
+       inkscape:persp3d-origin="150 : 46.666667 : 1"
+       inkscape:vp_z="300 : 70 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 70 : 1"
+       sodipodi:type="inkscape:persp3d" />
+  </defs>
+  <g
+     id="g2622"
+     transform="scale(1.2286387,1.2286387)"
+     inkscape:export-filename="/home/rlerch/Source/SVN/publican/trunk/publican-jboss/en-US/images/rhlogo.png"
+     inkscape:export-xdpi="61.361534"
+     inkscape:export-ydpi="61.361534">
+    <g
+       id="g2624">
+      <path
+         id="path2626"
+         d="m 140.253,110.221 2.945,5.891 -2.492,0 -2.863,-5.705 -3.255,0 0,5.705 -2.121,0 0,-14.419 6.323,0 c 2.514,0 4.635,1.339 4.635,4.306 0,2.306 -1.215,3.728 -3.172,4.222 z m -1.463,-6.489 -4.202,0 0,4.635 4.202,0 c 1.442,0 2.451,-0.741 2.451,-2.307 0,-1.504 -0.988,-2.328 -2.451,-2.328 z"
+         style="fill:#cc0000" />
+      <path
+         id="path2628"
+         d="m 155.164,111.458 -7.148,0 c 0.227,2.08 1.401,2.966 2.72,2.966 0.906,0 1.627,-0.329 2.348,-0.865 l 1.257,1.359 c -0.947,0.906 -2.08,1.421 -3.729,1.421 -2.533,0 -4.676,-2.039 -4.676,-5.623 0,-3.667 1.937,-5.645 4.737,-5.645 3.069,0 4.553,2.492 4.553,5.418 0,0.39 -0.041,0.742 -0.062,0.969 z m -4.635,-4.471 c -1.422,0 -2.287,0.988 -2.473,2.719 l 5.026,0 c -0.102,-1.483 -0.802,-2.719 -2.553,-2.719 z"
+         style="fill:#cc0000" />
+      <path
+         id="path2630"
+         d="m 164.37,116.112 0,-1.029 c -0.783,0.721 -1.689,1.256 -2.822,1.256 -2.328,0 -4.161,-1.688 -4.161,-5.809 0,-3.708 2.019,-5.459 4.264,-5.459 1.092,0 2.122,0.577 2.72,1.236 l 0,-4.12 2.101,-1.092 0,15.017 -2.102,0 z m 0.021,-7.662 c -0.474,-0.639 -1.463,-1.422 -2.534,-1.422 -1.524,0 -2.348,1.154 -2.348,3.44 0,2.719 0.865,3.913 2.431,3.913 1.009,0 1.895,-0.68 2.451,-1.379 l 0,-4.552 z"
+         style="fill:#cc0000" />
+      <path
+         id="path2632"
+         d="m 184.266,116.112 0,-6.468 -6.634,0 0,6.468 -2.162,0 0,-14.419 2.162,0 0,5.829 6.634,0 0,-5.829 2.162,0 0,14.419 -2.162,0 z"
+         style="fill:#cc0000" />
+      <path
+         id="path2634"
+         d="m 196.065,116.112 0,-1.07 c -0.741,0.741 -1.792,1.297 -2.966,1.297 -1.751,0 -3.749,-0.988 -3.749,-3.646 0,-2.41 1.854,-3.502 4.305,-3.502 1.01,0 1.813,0.144 2.41,0.412 l 0,-0.804 c 0,-1.174 -0.721,-1.833 -2.039,-1.833 -1.112,0 -1.978,0.206 -2.822,0.68 l -0.824,-1.606 c 1.03,-0.639 2.184,-0.969 3.708,-0.969 2.41,0 4.059,1.174 4.059,3.626 l 0,7.415 -2.082,0 0,0 z m 0,-4.613 c -0.576,-0.289 -1.318,-0.475 -2.472,-0.475 -1.359,0 -2.225,0.618 -2.225,1.607 0,1.07 0.68,1.792 2.08,1.792 1.134,0 2.122,-0.7 2.616,-1.38 l 0,-1.544 0.001,0 z"
+         style="fill:#cc0000" />
+      <path
+         id="path2636"
+         d="m 206.363,115.844 c -0.516,0.289 -1.236,0.494 -2.081,0.494 -1.504,0 -2.431,-0.926 -2.431,-2.863 l 0,-6.241 -1.545,0 0,-1.937 1.545,0 0,-3.09 2.081,-1.112 0,4.202 2.678,0 0,1.937 -2.678,0 0,5.871 c 0,1.009 0.329,1.298 1.112,1.298 0.556,0 1.174,-0.206 1.565,-0.433 l -0.246,1.874 z"
+         style="fill:#cc0000" />
+    </g>
+    <g
+       id="g2638">
+      <path
+         id="path2640"
+         d="m 106.389,51.025 c 3.57,-1.787 6,-5.101 6,-9.181 0,-9.509 -8.614,-11.555 -16.465,-11.421 l -21.186,0 -0.121,0 -11.746,0 0,30.362 c 0,4.409 -1.537,5.936 -4.274,5.936 -2.941,0 -4.595,-1.654 -4.595,-4.658 l 0,-4.205 -11.17,0 0,1.969 c 0,10.154 3.892,17.099 15.952,17.099 9.837,0 15.038,-4.356 15.833,-12.958 l 0,12.004 21.879,0 c 9.761,0 17.737,-3.315 17.737,-14.161 0,-5.165 -2.991,-9.376 -7.844,-10.786 z m -19.902,-11.42 9.181,0 c 2.493,0 4.852,1.092 4.852,4.405 0,3.253 -2.806,4.338 -4.852,4.338 l -9.181,0 0,-8.743 z m 9.502,26.864 -9.502,0 0,-10.469 9.502,0 c 3.576,0 6.384,1.345 6.384,5.355 0,3.77 -2.617,5.114 -6.384,5.114 z"
+         style="fill:#cc0000" />
+      <path
+         id="path2642"
+         d="m 90.067,108.399 c 0,-7.695 -6.245,-13.947 -13.944,-13.947 -7.714,0 -13.955,6.252 -13.955,13.947 0,7.709 6.241,13.948 13.955,13.948 7.699,0 13.944,-6.239 13.944,-13.948 z"
+         style="fill:#cc0000" />
+      <path
+         id="path2644"
+         d="m 53.012,103.999 c 0,-6.818 -5.533,-12.349 -12.357,-12.349 -6.823,0 -12.352,5.53 -12.352,12.349 0,6.824 5.528,12.357 12.352,12.357 6.824,0 12.357,-5.533 12.357,-12.357 z"
+         style="fill:#cc0000" />
+      <path
+         id="path2646"
+         d="m 25.097,81.68 c 0,-6.157 -4.984,-11.151 -11.15,-11.151 -6.168,0 -11.16,4.994 -11.16,11.151 0,6.174 4.992,11.168 11.16,11.168 6.165,0 11.15,-4.994 11.15,-11.168 z"
+         style="fill:#cc0000" />
+      <path
+         id="path2648"
+         d="m 19.918,50.615 c 0,-5.506 -4.455,-9.956 -9.955,-9.956 -5.499,0 -9.963,4.449 -9.963,9.956 0,5.5 4.464,9.964 9.963,9.964 5.5,0 9.955,-4.465 9.955,-9.964 z"
+         style="fill:#cc0000" />
+      <path
+         id="path2650"
+         d="m 33.88,22.719 c 0,-4.619 -3.756,-8.366 -8.372,-8.366 -4.619,0 -8.369,3.747 -8.369,8.366 0,4.623 3.75,8.367 8.369,8.367 4.616,0 8.372,-3.744 8.372,-8.367 z"
+         style="fill:#cc0000" />
+      <path
+         id="path2652"
+         d="m 57.78,10.364 c 0,-4.18 -3.385,-7.571 -7.566,-7.571 -4.18,0 -7.571,3.391 -7.571,7.571 0,4.187 3.392,7.578 7.571,7.578 4.182,0 7.566,-3.391 7.566,-7.578 z"
+         style="fill:#cc0000" />
+      <path
+         id="path2654"
+         d="M 82.891,6.377 C 82.891,2.855 80.042,0 76.517,0 73.001,0 70.14,2.855 70.14,6.377 c 0,3.526 2.861,6.38 6.377,6.38 3.525,0 6.374,-2.854 6.374,-6.38 z"
+         style="fill:#cc0000" />
+    </g>
+    <g
+       id="g2656">
+      <g
+         id="g2658">
+        <path
+           id="path2660"
+           d="m 161.415,62.895 c -5.338,-1.352 -11.706,-1.777 -14.243,-6.153 0.121,0.882 0.204,1.78 0.204,2.706 0,1.985 -0.299,3.867 -0.84,5.619 l 9.258,0 c 0,1.654 0.71,2.866 1.788,3.695 1.022,0.77 2.494,1.142 4.022,1.142 2.097,0 5.102,-0.884 5.102,-3.504 0,-2.545 -3.385,-3.064 -5.291,-3.505 z"
+           style="fill:none" />
+        <path
+           id="path2662"
+           d="m 129.896,50.193 c -5.045,0 -6.578,5.051 -6.578,9.255 0,4.217 1.533,9.187 6.578,9.187 5.039,0 6.633,-4.97 6.633,-9.187 -0.001,-4.204 -1.594,-9.255 -6.633,-9.255 z"
+           style="fill:none" />
+        <path
+           id="path2664"
+           d="M 192.015,62.895 C 185.337,61.204 176.724,60.97 176.338,52.616 l -9.62,0 c 0,-1.396 -0.512,-2.29 -1.396,-2.866 -0.903,-0.569 -2.107,-0.827 -3.447,-0.827 -1.781,0 -4.992,0.188 -4.992,2.487 0,3.132 7.273,3.705 12.247,4.787 6.649,1.335 8.399,6.118 8.423,8.869 l 8.842,0 c 0,1.654 0.71,2.866 1.788,3.695 1.023,0.77 2.494,1.142 4.021,1.142 2.097,0 5.103,-0.884 5.103,-3.504 -10e-4,-2.544 -3.385,-3.063 -5.292,-3.504 z"
+           style="fill:none" />
+        <path
+           id="path2666"
+           d="m 199.729,56.198 c -4.975,-1.082 -12.581,-1.654 -12.581,-4.787 0,-2.3 2.879,-2.487 4.66,-2.487 1.339,0 2.544,0.258 3.447,0.827 0.884,0.576 1.396,1.47 1.396,2.866 l 10.019,0 c -0.385,-8.606 -7.98,-10.714 -15.239,-10.714 -6.048,0 -13.905,1.882 -14.992,8.54 -1.485,-6.781 -8.344,-8.54 -14.943,-8.54 -6.51,0 -15.461,2.172 -15.461,10.146 0,0.141 0.021,0.261 0.024,0.398 -2.525,-6.296 -8.49,-10.544 -16.163,-10.544 -8.299,0 -14.504,4.847 -16.602,11.996 1.604,2.158 2.448,4.973 2.448,7.912 0,2.413 -0.384,4.549 -1.111,6.419 2.853,5.273 8.343,8.696 15.265,8.696 7.354,0 13.123,-3.872 15.815,-9.719 1.414,7.509 8.762,9.719 15.957,9.719 6.187,0 13.02,-2.027 15.179,-7.772 2.235,5.949 8.89,7.772 15.421,7.772 7.462,0 15.886,-2.931 15.886,-11.801 -0.001,-2.742 -1.731,-7.583 -8.425,-8.927 z m -69.833,12.437 c -5.045,0 -6.578,-4.97 -6.578,-9.187 0,-4.205 1.533,-9.255 6.578,-9.255 5.039,0 6.633,5.051 6.633,9.255 -0.001,4.218 -1.594,9.187 -6.633,9.187 z m 31.708,1.269 c -1.528,0 -3,-0.!
 372 -4.022,-1.142 -1.078,-0.829 -1.788,-2.041 -1.788,-3.695 l -9.258,0 c 0.541,-1.752 0.84,-3.634 0.84,-5.619 0,-0.926 -0.083,-1.824 -0.204,-2.706 2.537,4.375 8.905,4.801 14.243,6.153 1.906,0.441 5.291,0.96 5.291,3.505 0,2.62 -3.005,3.504 -5.102,3.504 z m 30.599,0 c -1.527,0 -2.998,-0.372 -4.021,-1.142 -1.078,-0.829 -1.788,-2.041 -1.788,-3.695 l -8.842,0 c -0.023,-2.751 -1.773,-7.534 -8.423,-8.869 -4.974,-1.082 -12.247,-1.654 -12.247,-4.787 0,-2.3 3.211,-2.487 4.992,-2.487 1.34,0 2.544,0.258 3.447,0.827 0.885,0.576 1.396,1.47 1.396,2.866 l 9.62,0 c 0.386,8.354 8.999,8.587 15.677,10.279 1.907,0.441 5.291,0.96 5.291,3.505 0.001,2.619 -3.005,3.503 -5.102,3.503 z"
+           style="fill:#60605b" />
+      </g>
+      <path
+         id="path2668"
+         d="m 209.127,36.16 0.965,0 1.452,2.386 0.941,0 -1.571,-2.43 c 0.807,-0.102 1.42,-0.53 1.42,-1.509 0,-1.099 -0.638,-1.573 -1.938,-1.573 l -2.102,0 0,5.512 0.833,0 0,-2.386 z m 0,-0.714 0,-1.711 1.143,0 c 0.567,0 1.2,0.132 1.2,0.815 0,0.847 -0.633,0.896 -1.339,0.896 l -1.004,0 z"
+         style="fill:#60605b" />
+      <path
+         id="path2670"
+         d="m 215.518,35.8 c 0,2.98 -2.42,5.392 -5.399,5.392 -2.986,0 -5.406,-2.412 -5.406,-5.392 0,-2.987 2.42,-5.405 5.406,-5.405 2.979,0.001 5.399,2.418 5.399,5.405 z m -5.4,-4.444 c -2.464,0 -4.452,1.982 -4.452,4.444 0,2.451 1.988,4.432 4.452,4.432 2.45,0 4.438,-1.981 4.438,-4.432 10e-4,-2.462 -1.988,-4.444 -4.438,-4.444 z"
+         style="fill:#60605b" />
+    </g>
+    <g
+       id="g2672">
+      <path
+         id="path2674"
+         d="m 108.227,116.338 c -1.092,0 -2.122,-0.576 -2.719,-1.235 l 0,1.009 -2.102,0 0,-13.925 2.102,-1.092 0,5.232 c 0.782,-0.722 1.688,-1.257 2.822,-1.257 2.327,0 4.16,1.689 4.16,5.809 0,3.709 -2.018,5.459 -4.263,5.459 z m -0.289,-9.31 c -1.01,0 -1.896,0.68 -2.451,1.381 l 0,4.552 c 0.474,0.639 1.462,1.421 2.533,1.421 1.524,0 2.349,-1.152 2.349,-3.439 0,-2.72 -0.865,-3.915 -2.431,-3.915 z"
+         style="fill:#60605b" />
+      <path
+         id="path2676"
+         d="m 118.915,119.923 -2.245,0 1.565,-4.017 -3.976,-10.609 2.328,0 1.771,5.295 c 0.329,0.947 0.824,2.554 0.947,3.15 0.186,-0.638 0.639,-2.183 0.968,-3.109 l 1.834,-5.336 2.245,0 -5.437,14.626 z"
+         style="fill:#60605b" />
+    </g>
+  </g>
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/warning.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/warning.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/warning.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/warning.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/warning.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="48"
+   height="48"
+   id="svg2">
+  <defs
+     id="defs5" />
+  <path
+     d="M 26.553837,7.3026447 C 25.283816,5.0882437 23.199663,5.0882437 21.945919,7.3026447 L 3.9376032,38.711367 C 2.6675727,40.925778 3.7259346,42.749404 6.2822626,42.749404 L 42.217493,42.749404 C 44.77383,42.749404 45.832183,40.925778 44.545876,38.711367 L 26.553837,7.3026447 z "
+     style="fill:#2e3436;fill-opacity:1;stroke:#2e3436;stroke-width:4.7150631;stroke-miterlimit:4;stroke-dasharray:none"
+     id="use2812" />
+  <path
+     d="M 26.553837,7.3026447 C 25.283816,5.0882437 23.199663,5.0882437 21.945919,7.3026447 L 3.9376032,38.711367 C 2.6675727,40.925778 3.7259346,42.749404 6.2822626,42.749404 L 42.217493,42.749404 C 44.77383,42.749404 45.832183,40.925778 44.545876,38.711367 L 26.553837,7.3026447 z "
+     style="fill:#fde8a6;fill-opacity:1;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none"
+     id="path4309" />
+  <path
+     d="M 26.220057,12.491166 C 25.133792,10.597163 23.351196,10.597163 22.278859,12.491166 L 6.8761436,39.355379 C 5.789878,41.249382 6.6951041,42.809153 8.8815542,42.809153 L 39.617353,42.809153 C 41.803812,42.809153 42.709038,41.249382 41.608844,39.355379 L 26.220057,12.491166 z "
+     style="fill:#fac521;fill-opacity:1"
+     id="path2991" />
+  <path
+     d="M 28.470282,37.445157 C 28.470282,38.878008 27.2491,39.952646 25.392902,39.952646 L 25.36034,39.952646 C 23.520438,39.952646 22.282969,38.878008 22.282969,37.445157 C 22.282969,35.947181 23.553,34.921391 25.392902,34.921391 C 27.216538,34.921391 28.437711,35.947181 28.470282,37.445157 z M 28.144632,33.146613 L 29.21927,19.990446 L 21.517696,19.990446 L 22.592334,33.146613 L 28.144632,33.146613 z "
+     style="fill:#fef2cb;fill-opacity:1;stroke:#fef2cb;stroke-width:0.9430126;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
+     id="path4468" />
+  <path
+     d="M 27.089325,36.371084 C 27.089325,37.803935 25.868143,38.878574 24.011955,38.878574 L 23.979392,38.878574 C 22.139481,38.878574 20.902022,37.803935 20.902022,36.371084 C 20.902022,34.873109 22.172043,33.847319 24.011955,33.847319 C 25.835581,33.847319 27.056763,34.873109 27.089325,36.371084 z M 26.763675,32.072531 L 27.838313,18.916364 L 20.136748,18.916364 L 21.211386,32.072531 L 26.763675,32.072531 z "
+     style="fill:#2e3436"
+     id="path4470" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/watermark-draft.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/Common_Content/images/watermark-draft.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/architecture.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/architecture.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/blog.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/blog.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/booking.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/booking.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/bpmd.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/bpmd.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/bpmpfv.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/bpmpfv.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/breadcrumbs.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/breadcrumbs.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/codegendropdown.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/codegendropdown.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/codegenmaintab.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/codegenmaintab.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/codegenselectseam.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/codegenselectseam.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/consolecfgwizard.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/consolecfgwizard.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/consoleoutline-before-reveng.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/consoleoutline-before-reveng.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/controls-seamtext.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/controls-seamtext.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/controls-selectdate.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/controls-selectdate.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/controls-selectdatecss.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/controls-selectdatecss.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/debug.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/debug.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/dvdsearch.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/dvdsearch.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/dvdtasks.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/dvdtasks.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/e-ejb3.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/e-ejb3.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/ee5.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/ee5.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/hibernate-ee.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/hibernate-ee.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/hibernate-mc.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/hibernate-mc.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/hibernatecfgwizard.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/hibernatecfgwizard.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/icon.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/icon.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/icon.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,3936 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:ns="http://ns.adobe.com/AdobeSVGViewerExtensions/3/"
+   xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg3017"
+   sodipodi:version="0.32"
+   inkscape:version="0.44+devel"
+   sodipodi:docname="book.svg"
+   sodipodi:docbase="/home/andy/Desktop">
+  <metadata
+     id="metadata489">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="480"
+     inkscape:window-width="858"
+     inkscape:pageshadow="0"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="1"
+     inkscape:cx="16"
+     inkscape:cy="15.944056"
+     inkscape:window-x="0"
+     inkscape:window-y="33"
+     inkscape:current-layer="svg3017" />
+  <defs
+     id="defs3019">
+    <linearGradient
+       id="linearGradient2381">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop2383" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="stop2385" />
+    </linearGradient>
+    <linearGradient
+       x1="415.73831"
+       y1="11.854"
+       x2="418.13361"
+       y2="18.8104"
+       id="XMLID_1758_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8362,0.5206,-1.1904,0.992,147.62,-30.9374)">
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="0"
+         id="stop3903" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop3905" />
+      <a:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="500.70749"
+       y1="-13.2441"
+       x2="513.46442"
+       y2="-2.1547"
+       id="XMLID_1757_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop3890" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop3892" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="XMLID_1755_">
+      <use
+         id="use3874"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_343_" />
+    </clipPath>
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop3877" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop3879" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop3881" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop3883" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="471.0806"
+       y1="201.07761"
+       x2="481.91711"
+       y2="210.4977"
+       id="XMLID_1754_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#6498c1;stop-opacity:1"
+         offset="0.005618"
+         id="stop3863" />
+      <stop
+         style="stop-color:#79a9cc;stop-opacity:1"
+         offset="0.2332"
+         id="stop3865" />
+      <stop
+         style="stop-color:#a4cde2;stop-opacity:1"
+         offset="0.74049997"
+         id="stop3867" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="1"
+         id="stop3869" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="5.618000e-003" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="0.4438" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="XMLID_1753_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop3851" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop3853" />
+      <a:midPointStop
+         style="stop-color:#B2B2B2"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B2B2B2"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="XMLID_1751_">
+      <use
+         id="use3837"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_338_" />
+    </clipPath>
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop3840" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop3842" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop3844" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop3846" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="468.2915"
+       y1="204.7612"
+       x2="479.39871"
+       y2="214.4166"
+       id="XMLID_1750_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop3830" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop3832" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop3818" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop3820" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="501.0903"
+       y1="-19.2544"
+       x2="531.85413"
+       y2="0.72390002"
+       id="XMLID_1748_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop3803" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop3805" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop3807" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop3809" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="XMLID_2275_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop9947" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop9949" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop9951" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop9953" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="XMLID_2273_">
+      <use
+         id="use9933"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_960_" />
+    </clipPath>
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="XMLID_2274_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop9936" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop9938" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop9940" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop9942" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="478.21341"
+       y1="-131.9297"
+       x2="469.85818"
+       y2="-140.28481"
+       id="XMLID_2272_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.5592,0.829,-0.829,0.5592,101.3357,-104.791)">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop9917" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop9919" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop9921" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop9923" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       style="overflow:visible"
+       id="TriangleInM">
+      <path
+         d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z "
+         transform="scale(-0.4,-0.4)"
+         style="fill:#5c5c4f"
+         id="path3197" />
+    </marker>
+    <linearGradient
+       x1="200.7363"
+       y1="100.4028"
+       x2="211.99519"
+       y2="89.143997"
+       id="XMLID_3298_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#bfbfbf;stop-opacity:1"
+         offset="0"
+         id="stop20103" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop20105" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#BFBFBF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#BFBFBF" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#F2F2F2" />
+    </linearGradient>
+    <linearGradient
+       x1="200.7363"
+       y1="100.4028"
+       x2="211.99519"
+       y2="89.143997"
+       id="linearGradient36592"
+       xlink:href="#XMLID_3298_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="181.2925"
+       y1="110.8481"
+       x2="192.6369"
+       y2="99.5037"
+       id="XMLID_3297_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="stop20096" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop20098" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="181.2925"
+       y1="110.8481"
+       x2="192.6369"
+       y2="99.5037"
+       id="linearGradient36595"
+       xlink:href="#XMLID_3297_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="211.77589"
+       y1="105.7749"
+       x2="212.6619"
+       y2="108.2092"
+       id="XMLID_3296_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#0f6124;stop-opacity:1"
+         offset="0"
+         id="stop20087" />
+      <stop
+         style="stop-color:#219630;stop-opacity:1"
+         offset="1"
+         id="stop20089" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#0F6124" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#0F6124" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#219630" />
+    </linearGradient>
+    <linearGradient
+       x1="211.77589"
+       y1="105.7749"
+       x2="212.6619"
+       y2="108.2092"
+       id="linearGradient36677"
+       xlink:href="#XMLID_3296_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="208.9834"
+       y1="116.8296"
+       x2="200.0811"
+       y2="96.834602"
+       id="XMLID_3295_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop20076" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.5"
+         id="stop20078" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop20080" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="208.9834"
+       y1="116.8296"
+       x2="200.0811"
+       y2="96.834602"
+       id="linearGradient36604"
+       xlink:href="#XMLID_3295_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="195.5264"
+       y1="97.911102"
+       x2="213.5213"
+       y2="115.9061"
+       id="XMLID_3294_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="0"
+         id="stop20069" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop20071" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="195.5264"
+       y1="97.911102"
+       x2="213.5213"
+       y2="115.9061"
+       id="linearGradient36607"
+       xlink:href="#XMLID_3294_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="186.1938"
+       y1="109.1343"
+       x2="206.6881"
+       y2="88.639999"
+       id="XMLID_3293_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop20056" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.16850001"
+         id="stop20058" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.23029999"
+         id="stop20060" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.2809"
+         id="stop20062" />
+      <stop
+         style="stop-color:#c2c2c2;stop-opacity:1"
+         offset="0.5"
+         id="stop20064" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.1685"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.2303"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.2809"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#C2C2C2" />
+    </linearGradient>
+    <linearGradient
+       x1="186.1938"
+       y1="109.1343"
+       x2="206.6881"
+       y2="88.639999"
+       id="linearGradient36610"
+       xlink:href="#XMLID_3293_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="184.8569"
+       y1="112.2676"
+       x2="211.94099"
+       y2="89.541397"
+       id="XMLID_3292_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop20043" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.16850001"
+         id="stop20045" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.23029999"
+         id="stop20047" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.2809"
+         id="stop20049" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop20051" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.1685"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.2303"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.2809"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="184.8569"
+       y1="112.2676"
+       x2="211.94099"
+       y2="89.541397"
+       id="linearGradient36613"
+       xlink:href="#XMLID_3292_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       style="overflow:visible"
+       id="TriangleOutM">
+      <path
+         d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z "
+         transform="scale(0.4,0.4)"
+         style="fill:#5c5c4f;fill-rule:evenodd;stroke-width:1pt;marker-start:none"
+         id="path3238" />
+    </marker>
+    <linearGradient
+       x1="165.3"
+       y1="99.5"
+       x2="165.3"
+       y2="115.9"
+       id="XMLID_3457_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="0"
+         id="stop8309" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8311" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="1"
+         id="stop8313" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#999999" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#999999" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#B2B2B2" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#B2B2B2" />
+    </linearGradient>
+    <linearGradient
+       x1="165.3"
+       y1="99.5"
+       x2="165.3"
+       y2="115.9"
+       id="lg1997"
+       xlink:href="#XMLID_3457_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="175"
+       y1="99.800003"
+       x2="175"
+       y2="112.5"
+       id="XMLID_3456_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="0"
+         id="stop8300" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="0.60000002"
+         id="stop8302" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="1"
+         id="stop8304" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="0.6"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#191919" />
+    </linearGradient>
+    <linearGradient
+       x1="175"
+       y1="99.800003"
+       x2="175"
+       y2="112.5"
+       id="lg2000"
+       xlink:href="#XMLID_3456_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="168.8"
+       y1="107.1"
+       x2="164.5"
+       y2="110"
+       id="XMLID_3455_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="0"
+         id="stop8291" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="0.69999999"
+         id="stop8293" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="1"
+         id="stop8295" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.7"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#191919" />
+    </linearGradient>
+    <linearGradient
+       x1="168.8"
+       y1="107.1"
+       x2="164.5"
+       y2="110"
+       id="lg2003"
+       xlink:href="#XMLID_3455_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       id="lg63694">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop63696" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="stop63698" />
+    </linearGradient>
+    <linearGradient
+       x1="458"
+       y1="483"
+       x2="465.20001"
+       y2="271.39999"
+       id="lg2006"
+       xlink:href="#lg63694"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(6.3e-2,0,0,6.3e-2,-1.3,-9.8)" />
+    <linearGradient
+       x1="176.3"
+       y1="110.1"
+       x2="158.7"
+       y2="105"
+       id="XMLID_3453_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="0"
+         id="stop8271" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="0.2"
+         id="stop8273" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop8275" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.2"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="176.3"
+       y1="110.1"
+       x2="158.7"
+       y2="105"
+       id="lg2009"
+       xlink:href="#XMLID_3453_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="173.60001"
+       y1="118.9"
+       x2="172.8"
+       y2="128.2"
+       id="XMLID_3449_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8232" />
+      <stop
+         style="stop-color:#fff95e;stop-opacity:1"
+         offset="0.60000002"
+         id="stop8234" />
+      <stop
+         style="stop-color:#ecd600;stop-opacity:1"
+         offset="1"
+         id="stop8236" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.6"
+         style="stop-color:#FFF95E" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFF95E" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#ECD600" />
+    </linearGradient>
+    <linearGradient
+       x1="173.60001"
+       y1="118.9"
+       x2="172.8"
+       y2="128.2"
+       id="lg2016"
+       xlink:href="#XMLID_3449_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <radialGradient
+       cx="284.60001"
+       cy="172.60001"
+       r="6.5"
+       fx="284.60001"
+       fy="172.60001"
+       id="XMLID_3448_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4,0,0,1.4,-237.3,-126.8)">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8219" />
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8221" />
+      <stop
+         style="stop-color:#c96b00;stop-opacity:1"
+         offset="0.89999998"
+         id="stop8223" />
+      <stop
+         style="stop-color:#9a5500;stop-opacity:1"
+         offset="1"
+         id="stop8225" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.9"
+         style="stop-color:#C96B00" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#C96B00" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#9A5500" />
+    </radialGradient>
+    <radialGradient
+       cx="284.60001"
+       cy="172.60001"
+       r="6.5"
+       fx="284.60001"
+       fy="172.60001"
+       id="rg2020"
+       xlink:href="#XMLID_3448_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.513992,0,0,2.347576,-689.1621,-378.5717)" />
+    <linearGradient
+       x1="158.10001"
+       y1="123"
+       x2="164.2"
+       y2="126.6"
+       id="XMLID_3447_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecd600;stop-opacity:1"
+         offset="0"
+         id="stop8204" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8206" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop8208" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECD600" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECD600" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="158.10001"
+       y1="123"
+       x2="164.2"
+       y2="126.6"
+       id="lg2026"
+       xlink:href="#XMLID_3447_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <radialGradient
+       cx="280.89999"
+       cy="163.7"
+       r="10.1"
+       fx="280.89999"
+       fy="163.7"
+       id="XMLID_3446_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4,0,0,1.4,-237.3,-126.8)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop8197" />
+      <stop
+         style="stop-color:#fff95e;stop-opacity:1"
+         offset="1"
+         id="stop8199" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#FFFFFF" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#FFF95E" />
+    </radialGradient>
+    <radialGradient
+       cx="280.89999"
+       cy="163.7"
+       r="10.1"
+       fx="280.89999"
+       fy="163.7"
+       id="rg2029"
+       xlink:href="#XMLID_3446_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.7,0,0,1.7,-457.5,-266.8)" />
+    <linearGradient
+       x1="156.5"
+       y1="122.7"
+       x2="180.10001"
+       y2="122.7"
+       id="XMLID_3445_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8184" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.2"
+         id="stop8186" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8188" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.40000001"
+         id="stop8190" />
+      <stop
+         style="stop-color:#d68100;stop-opacity:1"
+         offset="1"
+         id="stop8192" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.2"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.4"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#D68100" />
+    </linearGradient>
+    <linearGradient
+       x1="156.5"
+       y1="122.7"
+       x2="180.10001"
+       y2="122.7"
+       id="lg2032"
+       xlink:href="#XMLID_3445_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="156.39999"
+       y1="115.4"
+       x2="180.10001"
+       y2="115.4"
+       id="XMLID_3444_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8171" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.2"
+         id="stop8173" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8175" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.40000001"
+         id="stop8177" />
+      <stop
+         style="stop-color:#d68100;stop-opacity:1"
+         offset="1"
+         id="stop8179" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.2"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.4"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#D68100" />
+    </linearGradient>
+    <linearGradient
+       x1="156.39999"
+       y1="115.4"
+       x2="180.10001"
+       y2="115.4"
+       id="lg2035"
+       xlink:href="#XMLID_3444_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="379.70001"
+       y1="167.89999"
+       x2="383.89999"
+       y2="172.89999"
+       id="lg4286_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s16159" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.1"
+         id="s16161" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="1"
+         id="s16163" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.1" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#737373"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="379.60001"
+       y1="167.8"
+       x2="383.79999"
+       y2="172"
+       id="lg6416"
+       xlink:href="#lg4286_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.622156,0.623859,-0.623859,2.62182,-882.9706,-673.7921)" />
+    <linearGradient
+       x1="384.20001"
+       y1="169.8"
+       x2="384.79999"
+       y2="170.39999"
+       id="lg4285_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="0"
+         id="s16152" />
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="1"
+         id="s16154" />
+      <ns:midPointStop
+         style="stop-color:#737373"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#737373"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#D9D9D9"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="384.20001"
+       y1="169.8"
+       x2="384.79999"
+       y2="170.39999"
+       id="lg6453"
+       xlink:href="#lg4285_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.6,0.6,-0.6,2.6,-883,-673.8)" />
+    <linearGradient
+       x1="380.5"
+       y1="172.60001"
+       x2="382.79999"
+       y2="173.7"
+       id="lg4284_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
+      <stop
+         style="stop-color:gray;stop-opacity:1"
+         offset="0"
+         id="s16145" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="1"
+         id="s16147" />
+      <ns:midPointStop
+         style="stop-color:#808080"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#808080"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#E5E5E5"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="380.5"
+       y1="172.60001"
+       x2="382.79999"
+       y2="173.7"
+       id="lg6456"
+       xlink:href="#lg4284_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.6,0.6,-0.6,2.6,-883,-673.8)" />
+    <radialGradient
+       cx="347.29999"
+       cy="244.5"
+       r="5.1999998"
+       fx="347.29999"
+       fy="244.5"
+       id="lg4282_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
+      <stop
+         style="stop-color:#333;stop-opacity:1"
+         offset="0"
+         id="s16135" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="s16137" />
+      <ns:midPointStop
+         style="stop-color:#333333"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#333333"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#999999"
+         offset="1" />
+    </radialGradient>
+    <linearGradient
+       x1="310.39999"
+       y1="397.70001"
+       x2="310.89999"
+       y2="399.5"
+       id="lg4280_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="0"
+         id="s16111" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.60000002"
+         id="s16113" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="1"
+         id="s16115" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.6" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="310.39999"
+       y1="397.70001"
+       x2="310.89999"
+       y2="399.5"
+       id="lg6467"
+       xlink:href="#lg4280_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
+    <linearGradient
+       x1="310.89999"
+       y1="395.79999"
+       x2="313.29999"
+       y2="403.10001"
+       id="lg4279_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0"
+         id="s16100" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.40000001"
+         id="s16102" />
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="0.89999998"
+         id="s16104" />
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="1"
+         id="s16106" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.4" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0.9" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="310.89999"
+       y1="395.79999"
+       x2="313.29999"
+       y2="403.10001"
+       id="lg6465"
+       xlink:href="#lg4279_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
+    <linearGradient
+       x1="307.79999"
+       y1="395.20001"
+       x2="313.79999"
+       y2="413.60001"
+       id="lg4278_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0"
+         id="s16091" />
+      <stop
+         style="stop-color:#fcd72f;stop-opacity:1"
+         offset="0.40000001"
+         id="s16093" />
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="1"
+         id="s16095" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FCD72F"
+         offset="0.4" />
+      <ns:midPointStop
+         style="stop-color:#FCD72F"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="306.5"
+       y1="393"
+       x2="309"
+       y2="404"
+       id="lg6400"
+       xlink:href="#lg4278_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
+    <linearGradient
+       x1="352.10001"
+       y1="253.60001"
+       x2="348.5"
+       y2="237.8"
+       id="lg4276_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
+      <stop
+         style="stop-color:#ffff87;stop-opacity:1"
+         offset="0"
+         id="s16077" />
+      <stop
+         style="stop-color:#ffad00;stop-opacity:1"
+         offset="1"
+         id="s16079" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFAD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="335.60001"
+       y1="354.79999"
+       x2="337.89999"
+       y2="354.79999"
+       id="lg4275_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="s16057" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.80000001"
+         id="s16059" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="s16061" />
+      <ns:midPointStop
+         style="stop-color:#D9D9D9"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#D9D9D9"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.8" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="335.60001"
+       y1="354.79999"
+       x2="337.89999"
+       y2="354.79999"
+       id="lg6463"
+       xlink:href="#lg4275_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
+    <linearGradient
+       x1="337.39999"
+       y1="353.10001"
+       x2="339.39999"
+       y2="357.10001"
+       id="lg4274_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s16048" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.1"
+         id="s16050" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s16052" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.1" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="337.39999"
+       y1="353.10001"
+       x2="339.39999"
+       y2="357.10001"
+       id="lg6461"
+       xlink:href="#lg4274_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
+    <linearGradient
+       x1="334.39999"
+       y1="355.5"
+       x2="335.5"
+       y2="356.79999"
+       id="lg4273_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s16041" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s16043" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="5.6e-003" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="334.39999"
+       y1="355.5"
+       x2="335.5"
+       y2="356.79999"
+       id="lg6381"
+       xlink:href="#lg4273_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
+    <linearGradient
+       x1="348.39999"
+       y1="247.39999"
+       x2="354.10001"
+       y2="242"
+       id="lg4271_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0"
+         id="s16025" />
+      <stop
+         style="stop-color:#9e9e9e;stop-opacity:1"
+         offset="0.40000001"
+         id="s16027" />
+      <stop
+         style="stop-color:black;stop-opacity:1"
+         offset="1"
+         id="s16029" />
+      <ns:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#000000"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="351.29999"
+       y1="257.29999"
+       x2="346.29999"
+       y2="235.5"
+       id="lg4270_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ffff87;stop-opacity:1"
+         offset="0"
+         id="s16007" />
+      <stop
+         style="stop-color:#ffad00;stop-opacity:1"
+         offset="1"
+         id="s16009" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFAD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="351.29999"
+       y1="257.29999"
+       x2="346.29999"
+       y2="235.5"
+       id="lg6459"
+       xlink:href="#lg4270_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)" />
+    <linearGradient
+       x1="43.799999"
+       y1="32.5"
+       x2="63.299999"
+       y2="66.400002"
+       id="XMLID_2708_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop75318" />
+      <stop
+         style="stop-color:#fffcea;stop-opacity:1"
+         offset="1"
+         id="stop75320" />
+      <a:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#FFFCEA"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="43.799999"
+       y1="32.5"
+       x2="63.299999"
+       y2="66.400002"
+       id="lg1907"
+       xlink:href="#XMLID_2708_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)" />
+    <linearGradient
+       x1="52.5"
+       y1="40.400002"
+       x2="58.200001"
+       y2="64"
+       id="XMLID_2707_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ffdea0;stop-opacity:1"
+         offset="0"
+         id="stop75305" />
+      <stop
+         style="stop-color:#ffd89e;stop-opacity:1"
+         offset="0.30000001"
+         id="stop75307" />
+      <stop
+         style="stop-color:#ffd79e;stop-opacity:1"
+         offset="0.30000001"
+         id="stop75309" />
+      <stop
+         style="stop-color:#dbaf6d;stop-opacity:1"
+         offset="0.69999999"
+         id="stop75311" />
+      <stop
+         style="stop-color:#6f4c24;stop-opacity:1"
+         offset="1"
+         id="stop75313" />
+      <a:midPointStop
+         style="stop-color:#FFDEA0"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#FFDEA0"
+         offset="0.6" />
+      <a:midPointStop
+         style="stop-color:#FFD79E"
+         offset="0.3" />
+      <a:midPointStop
+         style="stop-color:#FFD79E"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#DBAF6D"
+         offset="0.7" />
+      <a:midPointStop
+         style="stop-color:#DBAF6D"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#6F4C24"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="52.5"
+       y1="40.400002"
+       x2="58.200001"
+       y2="64"
+       id="lg1910"
+       xlink:href="#XMLID_2707_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)" />
+    <linearGradient
+       x1="58"
+       y1="73.199997"
+       x2="44.5"
+       y2="19"
+       id="XMLID_2704_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)">
+      <stop
+         style="stop-color:#d4a96c;stop-opacity:1"
+         offset="0.5"
+         id="stop75284" />
+      <stop
+         style="stop-color:#dcb273;stop-opacity:1"
+         offset="0.60000002"
+         id="stop75286" />
+      <stop
+         style="stop-color:#f0ca87;stop-opacity:1"
+         offset="0.80000001"
+         id="stop75288" />
+      <stop
+         style="stop-color:#ffdc96;stop-opacity:1"
+         offset="0.69999999"
+         id="stop75290" />
+      <stop
+         style="stop-color:#c18a42;stop-opacity:1"
+         offset="1"
+         id="stop75292" />
+      <a:midPointStop
+         style="stop-color:#D4A96C"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#D4A96C"
+         offset="0.6" />
+      <a:midPointStop
+         style="stop-color:#FFDC96"
+         offset="0.7" />
+      <a:midPointStop
+         style="stop-color:#FFDC96"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#C18A42"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="53.700001"
+       y1="32"
+       x2="53.700001"
+       y2="64.599998"
+       id="XMLID_2703_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e5c9b0;stop-opacity:1"
+         offset="0"
+         id="stop75268" />
+      <stop
+         style="stop-color:#e5c9b0;stop-opacity:1"
+         offset="0.40000001"
+         id="stop75270" />
+      <stop
+         style="stop-color:#c0aa94;stop-opacity:1"
+         offset="1"
+         id="stop75272" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0.4" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#C0AA94"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="53.700001"
+       y1="32"
+       x2="53.700001"
+       y2="64.599998"
+       id="lg1916"
+       xlink:href="#XMLID_2703_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)" />
+    <linearGradient
+       x1="224.31"
+       y1="19.450001"
+       x2="214.33"
+       y2="11.46"
+       id="XMLID_419_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#404040;stop-opacity:1"
+         offset="0"
+         id="s1903" />
+      <stop
+         style="stop-color:#6d6d6d;stop-opacity:1"
+         offset="0.33000001"
+         id="s1905" />
+      <stop
+         style="stop-color:#e9e9e9;stop-opacity:1"
+         offset="1"
+         id="s1907" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#404040" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#404040" />
+      <a:midPointStop
+         offset="0.33"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#E9E9E9" />
+    </linearGradient>
+    <linearGradient
+       x1="221.84"
+       y1="32.779999"
+       x2="212.2"
+       y2="20.27"
+       id="lg1988"
+       xlink:href="#XMLID_419_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
+    <linearGradient
+       x1="228.35001"
+       y1="33.279999"
+       x2="215.42999"
+       y2="33.279999"
+       id="lg1900"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s1902" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="s1906" />
+      <a:midPointStop
+         style="stop-color:#575757"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#575757"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#6D6D6D"
+         offset="0.33" />
+      <a:midPointStop
+         style="stop-color:#6D6D6D"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#D3D3D3"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="234.81"
+       y1="33.279999"
+       x2="228.27"
+       y2="33.279999"
+       id="lg1908"
+       xlink:href="#lg1900"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
+    <linearGradient
+       x1="228.35001"
+       y1="33.279999"
+       x2="215.42999"
+       y2="33.279999"
+       id="XMLID_416_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#575757;stop-opacity:1"
+         offset="0"
+         id="s1874" />
+      <stop
+         style="stop-color:#6d6d6d;stop-opacity:1"
+         offset="0.33000001"
+         id="s1876" />
+      <stop
+         style="stop-color:#d3d3d3;stop-opacity:1"
+         offset="1"
+         id="s1878" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#575757" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#575757" />
+      <a:midPointStop
+         offset="0.33"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#D3D3D3" />
+    </linearGradient>
+    <linearGradient
+       x1="228.35001"
+       y1="33.279999"
+       x2="215.42999"
+       y2="33.279999"
+       id="lg1991"
+       xlink:href="#XMLID_416_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
+    <radialGradient
+       cx="603.19"
+       cy="230.77"
+       r="1.67"
+       fx="603.19"
+       fy="230.77"
+       id="x5010_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.1,0,0,1.1,-54.33,-75.4)">
+      <stop
+         style="stop-color:#c9ffc9;stop-opacity:1"
+         offset="0"
+         id="stop29201" />
+      <stop
+         style="stop-color:#23a11f;stop-opacity:1"
+         offset="1"
+         id="stop29203" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#C9FFC9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#C9FFC9" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#23A11F" />
+    </radialGradient>
+    <radialGradient
+       cx="603.19"
+       cy="230.77"
+       r="1.67"
+       fx="603.19"
+       fy="230.77"
+       id="radialGradient5711"
+       xlink:href="#x5010_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.23,0,0,1.23,-709.93,-245.02)" />
+    <linearGradient
+       x1="592.31"
+       y1="162.60001"
+       x2="609.32001"
+       y2="145.59"
+       id="lg5722"
+       xlink:href="#x5003_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="601.48999"
+       y1="170.16"
+       x2="613.84003"
+       y2="170.16"
+       id="x5002_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop29134" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.2"
+         id="stop29136" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="stop29138" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.20"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#999999" />
+    </linearGradient>
+    <linearGradient
+       x1="601.48999"
+       y1="170.16"
+       x2="613.84003"
+       y2="170.16"
+       id="lg5725"
+       xlink:href="#x5002_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.23"
+       id="x5004_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop29157" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop29159" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.23"
+       id="lg5728"
+       xlink:href="#x5004_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="592.31"
+       y1="162.60001"
+       x2="609.32001"
+       y2="145.59"
+       id="x5003_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0"
+         id="stop29143" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="1"
+         id="stop29145" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#E5E5E5" />
+    </linearGradient>
+    <linearGradient
+       x1="592.31"
+       y1="162.60001"
+       x2="609.32001"
+       y2="145.59"
+       id="lg5732"
+       xlink:href="#x5003_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.24001"
+       id="x5000_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop29124" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop29126" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.24001"
+       id="lg5735"
+       xlink:href="#x5000_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="308.54999"
+       y1="149.89999"
+       x2="299.72"
+       y2="148.83"
+       id="XMLID_2433_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d6d6d6;stop-opacity:1"
+         offset="0"
+         id="71615" />
+      <stop
+         style="stop-color:#a5a5a5;stop-opacity:1"
+         offset="1"
+         id="71617" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D6D6D6" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D6D6D6" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#A5A5A5" />
+    </linearGradient>
+    <linearGradient
+       x1="308.54999"
+       y1="149.89999"
+       x2="299.72"
+       y2="148.83"
+       id="lg1952"
+       xlink:href="#XMLID_2433_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
+    <radialGradient
+       cx="307.39999"
+       cy="121"
+       r="23.35"
+       fx="307.39999"
+       fy="121"
+       id="XMLID_2432_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.98,0,0,0.98,2.88,2.75)">
+      <stop
+         style="stop-color:#d2d2d2;stop-opacity:1"
+         offset="0.19"
+         id="71592" />
+      <stop
+         style="stop-color:#cfcfcf;stop-opacity:1"
+         offset="0.44999999"
+         id="71594" />
+      <stop
+         style="stop-color:#c7c7c7;stop-opacity:1"
+         offset="0.60000002"
+         id="71596" />
+      <stop
+         style="stop-color:#b9b9b9;stop-opacity:1"
+         offset="0.74000001"
+         id="71598" />
+      <stop
+         style="stop-color:#a4a4a4;stop-opacity:1"
+         offset="0.86000001"
+         id="71600" />
+      <stop
+         style="stop-color:#8a8a8a;stop-opacity:1"
+         offset="0.95999998"
+         id="71602" />
+      <stop
+         style="stop-color:gray;stop-opacity:1"
+         offset="1"
+         id="71604" />
+      <a:midPointStop
+         offset="0.19"
+         style="stop-color:#D2D2D2" />
+      <a:midPointStop
+         offset="0.8"
+         style="stop-color:#D2D2D2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#808080" />
+    </radialGradient>
+    <radialGradient
+       cx="307.39999"
+       cy="121"
+       r="23.35"
+       fx="307.39999"
+       fy="121"
+       id="radialGradient2331"
+       xlink:href="#XMLID_2432_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-276.62,-121.54)" />
+    <linearGradient
+       x1="294.13"
+       y1="127.07"
+       x2="294.13"
+       y2="142.2"
+       id="XMLID_2430_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b5d8ff;stop-opacity:1"
+         offset="0"
+         id="71582" />
+      <stop
+         style="stop-color:black;stop-opacity:1"
+         offset="1"
+         id="71584" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B5D8FF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B5D8FF" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#000000" />
+    </linearGradient>
+    <linearGradient
+       x1="294.13"
+       y1="127.07"
+       x2="294.13"
+       y2="142.2"
+       id="lg2820"
+       xlink:href="#XMLID_2430_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
+    <linearGradient
+       x1="279.10999"
+       y1="148.03"
+       x2="309.16"
+       y2="148.03"
+       id="XMLID_2429_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e1e1e1;stop-opacity:1"
+         offset="0"
+         id="71564" />
+      <stop
+         style="stop-color:#e1e1e1;stop-opacity:1"
+         offset="0.25"
+         id="71566" />
+      <stop
+         style="stop-color:#a5a5a5;stop-opacity:1"
+         offset="0.44"
+         id="71568" />
+      <stop
+         style="stop-color:#a5a5a5;stop-opacity:1"
+         offset="1"
+         id="71570" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.25"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.44"
+         style="stop-color:#A5A5A5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#A5A5A5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#A5A5A5" />
+    </linearGradient>
+    <linearGradient
+       x1="279.10999"
+       y1="148.03"
+       x2="309.16"
+       y2="148.03"
+       id="lg2818"
+       xlink:href="#XMLID_2429_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
+    <radialGradient
+       cx="622.34302"
+       cy="14.449"
+       r="26.496"
+       fx="622.34302"
+       fy="14.449"
+       id="lg3499_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.851,0,0,0.849,69.297,51.658)">
+      <stop
+         style="stop-color:#23468e;stop-opacity:1"
+         offset="0"
+         id="stop10972" />
+      <stop
+         style="stop-color:#012859;stop-opacity:1"
+         offset="1"
+         id="stop10974" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#23468E" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#23468E" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#012859" />
+    </radialGradient>
+    <radialGradient
+       cx="622.34302"
+       cy="14.449"
+       r="26.496"
+       fx="622.34302"
+       fy="14.449"
+       id="rg5791"
+       xlink:href="#lg3499_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.858,0,0,0.857,-511.7,9.02)" />
+    <linearGradient
+       x1="616.112"
+       y1="76.247002"
+       x2="588.14099"
+       y2="60.742001"
+       id="lg3497_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#01326e;stop-opacity:1"
+         offset="0"
+         id="stop10962" />
+      <stop
+         style="stop-color:#012859;stop-opacity:1"
+         offset="1"
+         id="stop10964" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#01326E" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#01326E" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#012859" />
+    </linearGradient>
+    <linearGradient
+       x1="617.698"
+       y1="82.445999"
+       x2="585.95203"
+       y2="54.848999"
+       id="lg3496_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="stop10950" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop10952" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="617.698"
+       y1="82.445999"
+       x2="585.95203"
+       y2="54.848999"
+       id="lg5794"
+       xlink:href="#lg3496_"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="601.39001"
+       y1="55.341"
+       x2="588.29199"
+       y2="71.515999"
+       id="lg3495_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop10941" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.52200001"
+         id="stop10943" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop10945" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.522"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="601.39001"
+       y1="55.341"
+       x2="588.29199"
+       y2="71.515999"
+       id="lg5771"
+       xlink:href="#lg3495_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.009,0,0,1.009,-581.615,-43.098)" />
+    <linearGradient
+       x1="611.34601"
+       y1="55.279999"
+       x2="590.39001"
+       y2="81.157997"
+       id="lg3494_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop10932" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.52200001"
+         id="stop10934" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop10936" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.522"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="611.34601"
+       y1="55.279999"
+       x2="590.39001"
+       y2="81.157997"
+       id="lg5774"
+       xlink:href="#lg3494_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.009,0,0,1.009,-581.616,-43.098)" />
+    <linearGradient
+       x1="798.72998"
+       y1="69.839996"
+       x2="799.04999"
+       y2="70.709999"
+       id="g3302_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#005e00;stop-opacity:1"
+         offset="0"
+         id="s6504" />
+      <stop
+         style="stop-color:#23a11f;stop-opacity:1"
+         offset="1"
+         id="s6506" />
+      <a:midPointstop
+         style="stop-color:#005E00"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#005E00"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#23A11F"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="798.72998"
+       y1="69.839996"
+       x2="799.04999"
+       y2="70.709999"
+       id="lg5851"
+       xlink:href="#g3302_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
+    <linearGradient
+       x1="779.19"
+       y1="122.73"
+       x2="811.69"
+       y2="149.74001"
+       id="g3301_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,129.19)">
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0"
+         id="s6483" />
+      <stop
+         style="stop-color:#eee;stop-opacity:1"
+         offset="0.17"
+         id="s6485" />
+      <stop
+         style="stop-color:#e3e3e3;stop-opacity:1"
+         offset="0.34"
+         id="s6487" />
+      <stop
+         style="stop-color:#cfcfcf;stop-opacity:1"
+         offset="0.50999999"
+         id="s6489" />
+      <stop
+         style="stop-color:#b4b4b4;stop-opacity:1"
+         offset="0.67000002"
+         id="s6491" />
+      <stop
+         style="stop-color:#919191;stop-opacity:1"
+         offset="0.83999997"
+         id="s6493" />
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="1"
+         id="s6495" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.71" />
+      <a:midPointstop
+         style="stop-color:#666666"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="779.19"
+       y1="122.73"
+       x2="811.69"
+       y2="149.74001"
+       id="lg5855"
+       xlink:href="#g3301_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,-0.316,0,1.263,-926.036,103.123)" />
+    <clipPath
+       id="g3299_">
+      <use
+         id="use6469"
+         x="0"
+         y="0"
+         width="1005.92"
+         height="376.97"
+         xlink:href="#g101_" />
+    </clipPath>
+    <radialGradient
+       cx="1189.9301"
+       cy="100.05"
+       r="40.400002"
+       fx="1189.9301"
+       fy="100.05"
+       id="g3300_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.34,-8.46e-2,0,0.34,394.16,137.13)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s6472" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="s6474" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#000000"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1199.74"
+       cy="97.150002"
+       r="40.400002"
+       fx="1199.74"
+       fy="97.150002"
+       id="rg5860"
+       xlink:href="#g3300_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.409,-0.107,0,0.429,-451.489,113.149)" />
+    <linearGradient
+       x1="796.38"
+       y1="67.580002"
+       x2="781.28003"
+       y2="58.549999"
+       id="g3298_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#4c8bca;stop-opacity:1"
+         offset="0"
+         id="s6462" />
+      <stop
+         style="stop-color:#b7e9ff;stop-opacity:1"
+         offset="1"
+         id="s6464" />
+      <a:midPointstop
+         style="stop-color:#4C8BCA"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#4C8BCA"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B7E9FF"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="800.97998"
+       y1="140.72"
+       x2="777.71997"
+       y2="121.76"
+       id="g3297_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,129.19)">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="s6448" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s6450" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="800.97998"
+       y1="140.72"
+       x2="777.71997"
+       y2="121.76"
+       id="lg5890"
+       xlink:href="#g3297_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,129.19)" />
+    <linearGradient
+       x1="790.03998"
+       y1="-16.33"
+       x2="779.84003"
+       y2="-3.73"
+       id="g3296_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0,70.17)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="s6439" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.51999998"
+         id="s6441" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s6443" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.52" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="790.03998"
+       y1="-16.33"
+       x2="779.84003"
+       y2="-3.73"
+       id="lg5866"
+       xlink:href="#g3296_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,28.6)" />
+    <linearGradient
+       x1="785.84003"
+       y1="72.989998"
+       x2="785.26001"
+       y2="76.279999"
+       id="g3293_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s6412" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="1"
+         id="s6414" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#737373"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="785.84003"
+       y1="72.989998"
+       x2="785.26001"
+       y2="76.279999"
+       id="lg5871"
+       xlink:href="#g3293_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
+    <linearGradient
+       x1="789.37"
+       y1="69.879997"
+       x2="791.03998"
+       y2="77.120003"
+       id="g3292_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="0"
+         id="s6403" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.28"
+         id="s6405" />
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="1"
+         id="s6407" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.28" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#666666"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="789.37"
+       y1="69.879997"
+       x2="791.03998"
+       y2="77.120003"
+       id="lg5874"
+       xlink:href="#g3292_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
+    <linearGradient
+       x1="786.65997"
+       y1="136.12"
+       x2="786.71002"
+       y2="134.33"
+       id="g3290_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,137.29)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="s6380" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="1"
+         id="s6382" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="786.65997"
+       y1="136.12"
+       x2="786.71002"
+       y2="134.33"
+       id="lg5878"
+       xlink:href="#g3290_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,-0.316,0,1.263,-926.036,113.351)" />
+    <radialGradient
+       cx="1458.77"
+       cy="-5.0999999"
+       r="35.130001"
+       fx="1458.77"
+       fy="-5.0999999"
+       id="g3289_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.42,0,0,0.42,167.09,79.84)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s6371" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="s6373" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1458.77"
+       cy="-5.0999999"
+       r="35.130001"
+       fx="1458.77"
+       fy="-5.0999999"
+       id="rg5881"
+       xlink:href="#g3289_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.505,0,0,0.53,-724.957,40.636)" />
+    <radialGradient
+       cx="1612.98"
+       cy="-4.4699998"
+       r="36.580002"
+       fx="1612.98"
+       fy="-4.4699998"
+       id="g3288_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.34,0,0,0.36,238.56,86.87)">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="s6362" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0.63999999"
+         id="s6364" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="1"
+         id="s6366" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.64" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#737373"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1612.98"
+       cy="-4.4699998"
+       r="36.580002"
+       fx="1612.98"
+       fy="-4.4699998"
+       id="rg5884"
+       xlink:href="#g3288_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.408,0,0,0.448,-638.943,49.495)" />
+    <radialGradient
+       cx="1470.5"
+       cy="-10.21"
+       r="33.290001"
+       fx="1470.5"
+       fy="-10.21"
+       id="g3287_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.42,0,0,0.42,167.09,79.84)">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="s6347" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0.38999999"
+         id="s6349" />
+      <stop
+         style="stop-color:#b1b1b1;stop-opacity:1"
+         offset="0.75"
+         id="s6351" />
+      <stop
+         style="stop-color:#aaa;stop-opacity:1"
+         offset="0.88"
+         id="s6353" />
+      <stop
+         style="stop-color:#9e9e9e;stop-opacity:1"
+         offset="0.97000003"
+         id="s6355" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="s6357" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.39" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.87" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1470.5"
+       cy="-10.21"
+       r="33.290001"
+       fx="1470.5"
+       fy="-10.21"
+       id="rg5887"
+       xlink:href="#g3287_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.505,0,0,0.53,-724.957,40.636)" />
+    <pattern
+       patternTransform="matrix(0.592927,0,0,0.592927,78,462)"
+       id="cream-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-365.3146,-513.505)"
+         id="g3047">
+           id=&quot;path2858&quot; /&gt;
+        <path
+   inkscape:label="#path2854"
+   sodipodi:nodetypes="czzzz"
+   style="fill:#e3dcc0"
+   id="path3060"
+   d="M 390.31462,529.50504 C 390.31462,534.47304 386.28262,538.50504 381.31462,538.50504 C 376.34662,538.50504 372.31462,534.47304 372.31462,529.50504 C 372.31462,524.53704 376.34662,520.50504 381.31462,520.50504 C 386.28262,520.50504 390.31462,524.53704 390.31462,529.50504 z " />
+</g>
+    </pattern>
+    <pattern
+       patternTransform="matrix(0.733751,0,0,0.733751,67,367)"
+       id="dark-cream-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-408.0946,-513.505)"
+         id="dark-cream-spot"
+         inkscape:label="#g3043">
+        <path
+           sodipodi:nodetypes="czzzz"
+           style="fill:#c8c5ac"
+           d="M 433.09458,529.50504 C 433.09458,534.47304 429.06258,538.50504 424.09458,538.50504 C 419.12658,538.50504 415.09458,534.47304 415.09458,529.50504 C 415.09458,524.53704 419.12658,520.50504 424.09458,520.50504 C 429.06258,520.50504 433.09458,524.53704 433.09458,529.50504 z "
+           id="path2953" />
+      </g>
+    </pattern>
+    <pattern
+       patternTransform="matrix(0.375,0,0,0.375,379,400)"
+       id="white-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-484.3997,-513.505)"
+         id="white-spot"
+         inkscape:label="#g3035">
+        <path
+           style="opacity:0.25;fill:white"
+           id="path3033"
+           d="M 509.39967,529.50504 C 509.39967,534.47304 505.36767,538.50504 500.39967,538.50504 C 495.43167,538.50504 491.39967,534.47304 491.39967,529.50504 C 491.39967,524.53704 495.43167,520.50504 500.39967,520.50504 C 505.36767,520.50504 509.39967,524.53704 509.39967,529.50504 z "
+           sodipodi:nodetypes="czzzz" />
+      </g>
+    </pattern>
+    <pattern
+       patternTransform="matrix(0.455007,0,0,0.455007,-5e-5,1.9e-5)"
+       id="black-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-448.3997,-513.505)"
+         id="black-spot"
+         inkscape:label="#g3039">
+        <path
+           sodipodi:nodetypes="czzzz"
+           d="M 473.39967,529.50504 C 473.39967,534.47304 469.36767,538.50504 464.39967,538.50504 C 459.43167,538.50504 455.39967,534.47304 455.39967,529.50504 C 455.39967,524.53704 459.43167,520.50504 464.39967,520.50504 C 469.36767,520.50504 473.39967,524.53704 473.39967,529.50504 z "
+           id="path2961"
+           style="opacity:0.25;fill:black" />
+      </g>
+    </pattern>
+    <linearGradient
+       x1="501.0903"
+       y1="-19.2544"
+       x2="531.85413"
+       y2="0.72390002"
+       id="linearGradient17334"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop17336" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop17338" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop17340" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop17342" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.5112"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.6461"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#16336E" />
+    </linearGradient>
+    <linearGradient
+       x1="415.73831"
+       y1="11.854"
+       x2="418.13361"
+       y2="18.8104"
+       id="linearGradient17426"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8362,0.5206,-1.1904,0.992,147.62,-30.9374)">
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="0"
+         id="stop17428" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop17430" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#F2F2F2" />
+    </linearGradient>
+    <linearGradient
+       x1="478.21341"
+       y1="-131.9297"
+       x2="469.85818"
+       y2="-140.28481"
+       id="linearGradient17434"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.5592,0.829,-0.829,0.5592,101.3357,-104.791)">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop17436" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop17438" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop17440" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop17442" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#F3403F" />
+      <a:midPointStop
+         offset="0.4213"
+         style="stop-color:#F3403F" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#A6100C" />
+    </linearGradient>
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17709"
+       xlink:href="#XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)" />
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17711"
+       xlink:href="#XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="linearGradient17713"
+       xlink:href="#XMLID_1753_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17715"
+       xlink:href="#XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="500.70749"
+       y1="-13.2441"
+       x2="513.46442"
+       y2="-2.1547"
+       id="linearGradient17717"
+       xlink:href="#XMLID_1757_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="linearGradient17721"
+       xlink:href="#XMLID_2274_"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="linearGradient17723"
+       xlink:href="#XMLID_2275_"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="500.70749"
+       y1="-13.2441"
+       x2="513.46442"
+       y2="-2.1547"
+       id="linearGradient17416"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop17418" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop17420" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <defs
+       id="defs9929">
+      <path
+         d="M 489.21,209.35 L 485.35,203.63 C 483.63,204.25 473.47,208.93 471.5,210.18 C 470.57,210.77 470.17,211.16 469.72,212.48 C 470.93,212.31 471.72,212.49 473.42,213.04 C 473.26,214.77 473.24,215.74 473.57,218.2 C 474.01,216.88 474.41,216.49 475.34,215.9 C 477.33,214.65 487.49,209.97 489.21,209.35 z "
+         id="XMLID_960_" />
+    </defs>
+    <clipPath
+       id="clipPath17448">
+      <use
+         id="use17450"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_960_" />
+    </clipPath>
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="linearGradient17452"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop17454" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop17456" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop17458" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop17460" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="linearGradient17463"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop17465" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop17467" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop17469" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop17471" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="linearGradient17807"
+       xlink:href="#XMLID_2275_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-177.1654,35.43307)" />
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="linearGradient17810"
+       xlink:href="#XMLID_2274_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-177.1654,35.43307)" />
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17812"
+       xlink:href="#XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)" />
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17814"
+       xlink:href="#XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="linearGradient17816"
+       xlink:href="#XMLID_1753_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17818"
+       xlink:href="#XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17347"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop17349" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop17351" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#96BAD6" />
+    </linearGradient>
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="linearGradient17379"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop17381" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop17383" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#F2F2F2" />
+    </linearGradient>
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17862"
+       xlink:href="#XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,-166.1427,-0.18283)" />
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17864"
+       xlink:href="#XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <defs
+       id="defs3859">
+      <polygon
+         points="465.54,213.52 481.94,217.46 482.74,216.71 487.46,198.05 471.08,194.07 470.26,194.83 465.54,213.52 "
+         id="XMLID_343_" />
+    </defs>
+    <linearGradient
+       x1="471.0806"
+       y1="201.07761"
+       x2="481.91711"
+       y2="210.4977"
+       id="linearGradient17389"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#6498c1;stop-opacity:1"
+         offset="0.005618"
+         id="stop17391" />
+      <stop
+         style="stop-color:#79a9cc;stop-opacity:1"
+         offset="0.2332"
+         id="stop17393" />
+      <stop
+         style="stop-color:#a4cde2;stop-opacity:1"
+         offset="0.74049997"
+         id="stop17395" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="1"
+         id="stop17397" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="5.618000e-003" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="0.4438" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="clipPath17400">
+      <use
+         id="use17402"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_343_" />
+    </clipPath>
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17404"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop17406" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop17408" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop17410" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop17412" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17882"
+       xlink:href="#XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <defs
+       id="defs3826">
+      <polygon
+         points="463.52,216.14 480.56,220.24 481.36,219.5 483.03,202.04 469.05,196.69 468.24,197.45 463.52,216.14 "
+         id="XMLID_338_" />
+    </defs>
+    <linearGradient
+       x1="468.2915"
+       y1="204.7612"
+       x2="479.39871"
+       y2="214.4166"
+       id="linearGradient17357"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop17359" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop17361" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="clipPath17364">
+      <use
+         id="use17366"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_338_" />
+    </clipPath>
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17368"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop17370" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop17372" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop17374" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop17376" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398"
+       id="linearGradient2387"
+       xlink:href="#linearGradient2381"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
+    <linearGradient
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398"
+       id="linearGradient5105"
+       xlink:href="#linearGradient2381"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
+    <linearGradient
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398"
+       id="linearGradient5145"
+       xlink:href="#linearGradient2381"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2381"
+       id="linearGradient2371"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)"
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398" />
+  </defs>
+  <g
+     transform="matrix(0.437808,-0.437808,0.437808,0.437808,-220.8237,43.55311)"
+     id="g5089">
+    <path
+       d="M 8.4382985,-6.28125 C 7.8309069,-6.28125 4.125,-0.33238729 4.125,1.96875 L 4.125,28.6875 C 4.125,29.533884 4.7068159,29.8125 5.28125,29.8125 L 30.84375,29.8125 C 31.476092,29.8125 31.968751,29.319842 31.96875,28.6875 L 31.96875,23.46875 L 32.25,23.46875 C 32.74684,23.46875 33.156249,23.059339 33.15625,22.5625 L 33.15625,-5.375 C 33.15625,-5.8718398 32.74684,-6.28125 32.25,-6.28125 L 8.4382985,-6.28125 z "
+       transform="translate(282.8327,227.1903)"
+       style="fill:#5c5c4f;stroke:black;stroke-width:3.23021388;stroke-miterlimit:4;stroke-dasharray:none"
+       id="path5091" />
+    <rect
+       width="27.85074"
+       height="29.369793"
+       rx="1.1414107"
+       ry="1.1414107"
+       x="286.96509"
+       y="227.63805"
+       style="fill:#032c87"
+       id="rect5093" />
+    <path
+       d="M 288.43262,225.43675 L 313.67442,225.43675 L 313.67442,254.80655 L 287.29827,254.83069 L 288.43262,225.43675 z "
+       style="fill:white"
+       id="rect5095" />
+    <path
+       d="M 302.44536,251.73726 C 303.83227,259.59643 301.75225,263.02091 301.75225,263.02091 C 303.99609,261.41329 305.71651,259.54397 306.65747,257.28491 C 307.62455,259.47755 308.49041,261.71357 310.9319,263.27432 C 310.9319,263.27432 309.33686,256.07392 309.22047,251.73726 L 302.44536,251.73726 z "
+       style="fill:#a70000;fill-opacity:1;stroke-width:2"
+       id="path5097" />
+    <rect
+       width="25.241802"
+       height="29.736675"
+       rx="0.89682275"
+       ry="0.89682275"
+       x="290.73544"
+       y="220.92249"
+       style="fill:#809cc9"
+       id="rect5099" />
+    <path
+       d="M 576.47347,725.93939 L 582.84431,726.35441 L 583.25121,755.8725 C 581.35919,754.55465 576.39694,752.1117 574.98889,754.19149 L 574.98889,727.42397 C 574.98889,726.60151 575.65101,725.93939 576.47347,725.93939 z "
+       transform="matrix(0.499065,-0.866565,0,1,0,0)"
+       style="fill:#4573b3;fill-opacity:1"
+       id="rect5101" />
+    <path
+       d="M 293.2599,221.89363 L 313.99908,221.89363 C 314.45009,221.89363 314.81318,222.25673 314.81318,222.70774 C 315.02865,229.0361 295.44494,244.47124 292.44579,240.30491 L 292.44579,222.70774 C 292.44579,222.25673 292.80889,221.89363 293.2599,221.89363 z "
+       style="opacity:0.65536726;fill:url(#linearGradient2371);fill-opacity:1"
+       id="path5103" />
+  </g>
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/issues.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/issues.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/layoutForm-example.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/layoutForm-example.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/list.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/list.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/messages.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/messages.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/numberguess-pageflow.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/numberguess-pageflow.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/numberguess.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/numberguess.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/plugin-jbpm-numguess.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/plugin-jbpm-numguess.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/plugin-jbpm-todo.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/plugin-jbpm-todo.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/plugin-testng.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/plugin-testng.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/register.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/register.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/registration.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/registration.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/switcher.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/switcher.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/testng.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/testng.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/todo-process.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/todo-process.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/todo.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/images/todo.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/index.html
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/index.html	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/html-single/index.html	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,9412 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Seam Reference Guide CP07</title><link rel="stylesheet" href="./Common_Content/css/default.css" type="text/css" /><meta name="generator" content="publican 0.60" /><meta name="package" content="JBoss_Enterprise_Application_Platform-Seam_Reference_Guide_CP07-4.3-en-US-2.0-5" /><meta name="description" content="This book is a Reference Guide to Seam 1.2 for JBoss Enterprise Application Platform 4.3." /></head><body class=""><div xml:lang="en-US" class="book" title="Seam Reference Guide CP07" lang="en-US"><div class="titlepage"><div><div class="producttitle"><span class="productname">JBoss Enterprise Application Platform</span> <span class="productnumber">4.3</span></div><div><h1 id="id4162770" class="title">Seam Reference Guide CP07</h1></div><div><h2 class="subtitle">for Use with JBoss Enterprise Application Platform 4.3 Cumulative Patch 7</h2></div><p !
 class="edition">Edition 2.0</p><div><h3 class="corpauthor">
+		<span class="inlinemediaobject"><object data="Common_Content/images/redhat-logo.svg" type="image/svg+xml"> </object></span>
+	</h3></div><div><div xml:lang="en-US" class="authorgroup" lang="en-US"><div class="author"><h3 class="author"><span class="firstname">Written By: Gavin King, Christian Bauer, Norman Richards, Shane Bryzak, Pete Muir, Emmanuel Bernard, Max Andersen, Michael Youngstrom, Thomas Heute, Michael Yuan</span></h3></div><div class="othercredit"><h3 class="othercredit"><span class="firstname">Japanese Translation: Fusayuki Minamoto, Takayoshi Kimura, Takayoshi Osawa, Reiko Ohtsuka, Syunpei Shiraishi, Toshiya Kobayashi, Shigeaki Wakizaka, Ken Yamada, Noriko Mizumoto</span></h3></div></div></div><div><p class="copyright">Copyright © 2009 Red Hat, Inc</p></div><hr /><div><div id="id2703316" class="legalnotice"><h1 class="legalnotice">Legal Notice</h1><div class="para">
+		Copyright <span class="trademark"></span>© 2009 Red Hat, Inc. This material may only be distributed subject to the terms and conditions set forth in the Open Publication License, V1.0, (the latest version is presently available at <a href="http://www.opencontent.org/openpub/">http://www.opencontent.org/openpub/</a>).
+	</div><div class="para">
+		Red Hat, Red Hat Enterprise Linux, the Shadowman logo, JBoss, MetaMatrix, Fedora, the Infinity Logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
+	</div><div class="para">
+		<span class="trademark">Linux</span>® is the registered trademark of Linus Torvalds in the United States and other countries.
+	</div><div class="para">
+		All other trademarks are the property of their respective owners.
+	</div><div class="para">
+		<div class="address"><p><br />
+			<span class="street">1801 Varsity Drive</span><br />
+			<span class="city">Raleigh</span>, <span class="state">NC</span> <span class="postcode">27606-2072</span> <span class="country">USA</span><br />
+			<span class="phone">Phone: +1 919 754 3700</span><br />
+			<span class="phone">Phone: 888 733 4281</span><br />
+			<span class="fax">Fax: +1 919 754 3701</span><br />
+			<span class="pob">PO Box 13588</span> <span class="city">Research Triangle Park</span>, <span class="state">NC</span> <span class="postcode">27709</span> <span class="country">USA</span><br />
+		</p></div>
+	</div></div></div><div><div class="abstract" title="Abstract"><h6>Abstract</h6><div class="para">
+This book is a Reference Guide to Seam 1.2 for JBoss Enterprise
+Application Platform 4.3.
+</div></div></div></div><hr /></div><div class="toc"><dl><dt><span class="chapter"><a href="#Feedback">1. Feedback</a></span></dt><dt><span class="preface"><a href="#Seam_Reference_Guide-Introduction_to_JBoss_Seam">Introduction to JBoss Seam</a></span></dt><dt><span class="chapter"><a href="#Seam_Reference_Guide-Seam_Tutorial">2. Seam Tutorial</a></span></dt><dd><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_Tutorial-Try_the_examples">2.1. Try the examples</a></span></dt><dd><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Try_the_examples-Running_the_examples_on_JBoss_AS">2.1.1. Running the examples on JBoss Enterprise Application Platform</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Try_the_examples-Running_the_examples_on_Tomcat">2.1.2. Running the examples on Tomcat</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Try_the_examples-Running_the_example_tests">2.1.3. Running the example tests<!
 /a></span></dt></dl></dd><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_Tutorial-Your_first_Seam_application_the_registration_example">2.2. Your first Seam application: the registration example</a></span></dt><dd><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Your_first_Seam_application_the_registration_example-Understanding_the_code">2.2.1. Understanding the code</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Your_first_Seam_application_the_registration_example-How_it_works">2.2.2. How it works</a></span></dt></dl></dd><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_Tutorial-Clickable_lists_in_Seam_the_messages_example">2.3. Clickable lists in Seam: the messages example</a></span></dt><dd><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Clickable_lists_in_Seam_the_messages_example-Understanding_the_code">2.3.1. Understanding the code</a></span></dt><dt><span class="section"><a href="#Seam_Refer!
 ence_Guide-Clickable_lists_in_Seam_the_messages_example-How_it!
 _works">
2.3.2. How it works</a></span></dt></dl></dd><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_Tutorial-Seam_and_jBPM_the_todo_list_example">2.4. Seam and jBPM: the todo list example</a></span></dt><dd><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_and_jBPM_the_todo_list_example-Understanding_the_code">2.4.1. Understanding the code</a></span></dt></dl></dd><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_Tutorial-Seam_pageflow_the_numberguess_example">2.5. Seam pageflow: the numberguess example</a></span></dt><dd><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_pageflow_the_numberguess_example-Understanding_the_code">2.5.1. Understanding the code</a></span></dt></dl></dd><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_Tutorial-A_complete_Seam_application_the_Hotel_Booking_example">2.6. A complete Seam application: the Hotel Booking example</a></span></dt><dd><dl><dt><span class="section"><a href="#Sea!
 m_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-Introduction">2.6.1. Introduction</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-Overview_of_the_booking_example">2.6.2. Overview of the booking example</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-Understanding_Seam_conversations">2.6.3. Understanding Seam conversations</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-The_Seam_UI_control_library">2.6.4. The Seam UI control library</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-The_Seam_Debug_Page">2.6.5. The Seam Debug Page</a></span></dt></dl></dd><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_Tutorial-A_complete_application_f!
 eaturing_Seam_and_jBPM_the_DVD_Store_example">2.7. A complete !
 applicat
ion featuring Seam and jBPM: the DVD Store example</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_Tutorial-A_complete_application_featuring_Seam_workspace_management_the_Issue_Tracker_example">2.8. A complete application featuring Seam workspace management: the Issue Tracker example</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_Tutorial-An_example_of_Seam_with_Hibernate_the_Hibernate_Booking_example">2.9. An example of Seam with Hibernate: the Hibernate Booking example</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_Tutorial-A_RESTful_Seam_application_the_Blog_example">2.10. A RESTful Seam application: the Blog example</a></span></dt><dd><dl><dt><span class="section"><a href="#Seam_Reference_Guide-A_RESTful_Seam_application_the_Blog_example-Using_pull_style_MVC">2.10.1. Using "pull"-style MVC</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-A_RESTful_Seam_applicat!
 ion_the_Blog_example-Bookmarkable_search_results_page">2.10.2. Bookmarkable search results page</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-A_RESTful_Seam_application_the_Blog_example-Using_push_style_MVC_in_a_RESTful_application">2.10.3. Using "push"-style MVC in a RESTful application</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#Seam_Reference_Guide-The_contextual_component_model">3. The contextual component model</a></span></dt><dd><dl><dt><span class="sect1"><a href="#Seam_Reference_Guide-The_contextual_component_model-Seam_contexts">3.1. Seam contexts</a></span></dt><dd><dl><dt><span class="sect2"><a href="#Seam_Reference_Guide-Seam_contexts-Stateless_context">3.1.1. Stateless context</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Seam_contexts-Event_context">3.1.2. Event context</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Seam_contexts-Page_context">3.1.3. Page contex!
 t</a></span></dt><dt><span class="sect2"><a href="#Seam_Refere!
 nce_Guid
e-Seam_contexts-Conversation_context">3.1.4. Conversation context</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Seam_contexts-Session_context">3.1.5. Session context</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Seam_contexts-Business_process_context">3.1.6. Business process context</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Seam_contexts-Application_context">3.1.7. Application context</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Seam_contexts-Context_variables">3.1.8. Context variables</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Seam_contexts-Context_search_priority">3.1.9. Context search priority</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Seam_contexts-Concurrency_model">3.1.10. Concurrency model</a></span></dt></dl></dd><dt><span class="sect1"><a href="#Seam_Reference_Guide-The_contextual_component_model-Seam_components">!
 3.2. Seam components</a></span></dt><dd><dl><dt><span class="sect2"><a href="#Seam_Reference_Guide-Seam_components-Stateless_session_beans">3.2.1. Stateless session beans</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Seam_components-Stateful_session_beans">3.2.2. Stateful session beans</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Seam_components-Entity_beans">3.2.3. Entity beans</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Seam_components-JavaBeans">3.2.4. JavaBeans</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Seam_components-Message_driven_beans">3.2.5. Message-driven beans</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Seam_components-Interception">3.2.6. Interception</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Seam_components-Component_names">3.2.7. Component names</a></span></dt><dt><span class="sect2"><a href="#Seam_Referen!
 ce_Guide-Seam_components-Defining_the_component_scope">3.2.8. !
 Defining
 the component scope</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Seam_components-Components_with_multiple_roles">3.2.9. Components with multiple roles</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Seam_components-Built_in_components">3.2.10. Built-in components</a></span></dt></dl></dd><dt><span class="sect1"><a href="#Seam_Reference_Guide-The_contextual_component_model-Bijection">3.3. Bijection</a></span></dt><dt><span class="sect1"><a href="#Seam_Reference_Guide-The_contextual_component_model-Lifecycle_methods">3.4. Lifecycle methods</a></span></dt><dt><span class="sect1"><a href="#Seam_Reference_Guide-The_contextual_component_model-Conditional_installation">3.5. Conditional installation</a></span></dt><dt><span class="sect1"><a href="#Seam_Reference_Guide-The_contextual_component_model-Logging">3.6. Logging</a></span></dt><dt><span class="sect1"><a href="#Seam_Reference_Guide-The_contextual_component_model-The_Mutable_inte!
 rface_and_ReadOnly">3.7. The <code class="literal">Mutable</code> interface and <code class="literal">@ReadOnly</code></a></span></dt><dt><span class="sect1"><a href="#Seam_Reference_Guide-The_contextual_component_model-Factory_and_manager_components">3.8. Factory and manager components</a></span></dt></dl></dd><dt><span class="chapter"><a href="#Seam_Reference_Guide-Configuring_Seam_components">4. Configuring Seam components</a></span></dt><dd><dl><dt><span class="sect1"><a href="#Seam_Reference_Guide-Configuring_Seam_components-Configuring_components_via_property_settings">4.1. Configuring components via property settings</a></span></dt><dt><span class="sect1"><a href="#Seam_Reference_Guide-Configuring_Seam_components-Configuring_components_via_components.xml">4.2. Configuring components via components.xml</a></span></dt><dt><span class="sect1"><a href="#Seam_Reference_Guide-Configuring_Seam_components-Fine_grained_configuration_files">4.3. Fine-grained configuration file!
 s</a></span></dt><dt><span class="sect1"><a href="#Seam_Refere!
 nce_Guid
e-Configuring_Seam_components-Configurable_property_types">4.4. Configurable property types</a></span></dt><dt><span class="sect1"><a href="#Seam_Reference_Guide-Configuring_Seam_components-Using_XML_Namespaces">4.5. Using XML Namespaces</a></span></dt></dl></dd><dt><span class="chapter"><a href="#Seam_Reference_Guide-Events_interceptors_and_exception_handling">5. Events, interceptors and exception handling</a></span></dt><dd><dl><dt><span class="sect1"><a href="#Seam_Reference_Guide-Events_interceptors_and_exception_handling-Seam_events">5.1. Seam events</a></span></dt><dd><dl><dt><span class="sect2"><a href="#Seam_Reference_Guide-Seam_events-Page_actions">5.1.1. Page actions</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Seam_events-Component_driven_events">5.1.2. Component-driven events</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Seam_events-Contextual_events">5.1.3. Contextual events</a></span></dt></dl></dd><dt><span clas!
 s="sect1"><a href="#Seam_Reference_Guide-Events_interceptors_and_exception_handling-Seam_interceptors">5.2. Seam interceptors</a></span></dt><dt><span class="sect1"><a href="#Seam_Reference_Guide-Events_interceptors_and_exception_handling-Managing_exceptions">5.3. Managing exceptions</a></span></dt><dd><dl><dt><span class="sect2"><a href="#Seam_Reference_Guide-Managing_exceptions-Exceptions_and_transactions">5.3.1. Exceptions and transactions</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Managing_exceptions-Enabling_Seam_exception_handling">5.3.2. Enabling Seam exception handling</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Managing_exceptions-Using_annotations_for_exception_handling">5.3.3. Using annotations for exception handling</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Managing_exceptions-Using_XML_for_exception_handling">5.3.4. Using XML for exception handling</a></span></dt></dl></dd></dl></d!
 d><dt><span class="chapter"><a href="#Seam_Reference_Guide-Con!
 versatio
ns_and_workspace_management">6. Conversations and workspace management</a></span></dt><dd><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Conversations_and_workspace_management-Seams_conversation_model">6.1. Seam's conversation model</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Conversations_and_workspace_management-Nested_conversations">6.2. Nested conversations</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Conversations_and_workspace_management-Starting_conversations_with_GET_requests">6.3. Starting conversations with GET requests</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Conversations_and_workspace_management-Using_slink_and_sbutton">6.4. Using <code class="literal">&lt;s:link&gt;</code> and <code class="literal">&lt;s:button&gt;</code></a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Conversations_and_workspace_management-Success_messages">6.5. Success m!
 essages</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Conversations_and_workspace_management-Using_an_explicit_conversation_id">6.6. Using an <span class="emphasis"><em>explicit</em></span> conversation ID</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Conversations_and_workspace_management-Workspace_management">6.7. Workspace management</a></span></dt><dd><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Workspace_management-Workspace_management_and_JSF_navigation">6.7.1. Workspace management and JSF navigation</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Workspace_management-Workspace_management_and_jPDL_pageflow">6.7.2. Workspace management and jPDL pageflow</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Workspace_management-The_conversation_switcher">6.7.3. The conversation switcher</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Work!
 space_management-The_conversation_list">6.7.4. The conversatio!
 n list</
a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Workspace_management-Breadcrumbs">6.7.5. Breadcrumbs</a></span></dt></dl></dd><dt><span class="section"><a href="#Seam_Reference_Guide-Conversations_and_workspace_management-Conversational_components_and_JSF_component_bindings">6.8. Conversational components and JSF component bindings</a></span></dt></dl></dd><dt><span class="chapter"><a href="#Seam_Reference_Guide-Pageflows_and_business_processes">7. Pageflows and business processes</a></span></dt><dd><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Pageflows_and_business_processes-Pageflow_in_Seam">7.1. Pageflow in Seam</a></span></dt><dd><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Pageflow_in_Seam-The_two_navigation_models">7.1.1. The two navigation models</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Pageflow_in_Seam-Seam_and_the_back_button">7.1.2. Seam and the back button</a></span></dt></dl></d!
 d><dt><span class="section"><a href="#Seam_Reference_Guide-Pageflows_and_business_processes-Using_jPDL_pageflows">7.2. Using jPDL pageflows</a></span></dt><dd><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Using_jPDL_pageflows-Installing_pageflows">7.2.1. Installing pageflows</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Using_jPDL_pageflows-Starting_pageflows">7.2.2. Starting pageflows</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Using_jPDL_pageflows-Page_nodes_and_transitions">7.2.3. Page nodes and transitions</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Using_jPDL_pageflows-Controlling_the_flow">7.2.4. Controlling the flow</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Using_jPDL_pageflows-Ending_the_flow">7.2.5. Ending the flow</a></span></dt></dl></dd><dt><span class="section"><a href="#Seam_Reference_Guide-Pageflows_and_business_processes-Business_pro!
 cess_management_in_Seam">7.3. Business process management in S!
 eam</a><
/span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Pageflows_and_business_processes-Using_jPDL_business_process_definitions">7.4. Using jPDL business process definitions</a></span></dt><dd><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Using_jPDL_business_process_definitions-Installing_process_definitions">7.4.1. Installing process definitions</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Using_jPDL_business_process_definitions-Initializing_actor_ids">7.4.2. Initializing actor ids</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Using_jPDL_business_process_definitions-Initiating_a_business_process">7.4.3. Initiating a business process</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Using_jPDL_business_process_definitions-Task_assignment">7.4.4. Task assignment</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Using_jPDL_business_process_definitions-Ta!
 sk_lists">7.4.5. Task lists</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Using_jPDL_business_process_definitions-Performing_a_task">7.4.6. Performing a task</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping">8. Seam and Object/Relational Mapping</a></span></dt><dd><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Introduction">8.1. Introduction</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Seam_managed_transactions">8.2. Seam managed transactions</a></span></dt><dd><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_managed_transactions-Enabling_Seam_managed_transactions">8.2.1. Enabling Seam-managed transactions</a></span></dt></dl></dd><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Seam_managed_persistence_cont!
 exts">8.3. Seam-managed persistence contexts</a></span></dt><d!
 d><dl><d
t><span class="section"><a href="#Seam_Reference_Guide-Seam_managed_persistence_contexts-Using_a_Seam_managed_persistence_context_with_JPA">8.3.1. Using a Seam-managed persistence context with JPA</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_managed_persistence_contexts-Using_a_Seam_managed_Hibernate_session">8.3.2. Using a Seam-managed Hibernate session</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_managed_persistence_contexts-Seam_managed_persistence_contexts_and_atomic_conversations">8.3.3. Seam-managed persistence contexts and atomic conversations</a></span></dt></dl></dd><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_the_JPA_delegate">8.4. Using the JPA "delegate"</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_EL_in_EJB_QLHQL">8.5. Using EL in EJB-QL/HQL</a></span></dt><dt><span class="section">!
 <a href="#Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_Hibernate_filters">8.6. Using Hibernate filters</a></span></dt></dl></dd><dt><span class="chapter"><a href="#Seam_Reference_Guide-JSF_form_validation_in_Seam">9. JSF form validation in Seam</a></span></dt><dt><span class="chapter"><a href="#Seam_Reference_Guide-The_Seam_Application_Framework">10. The Seam Application Framework</a></span></dt><dd><dl><dt><span class="section"><a href="#Seam_Reference_Guide-The_Seam_Application_Framework-Introduction">10.1. Introduction</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-The_Seam_Application_Framework-Home_objects">10.2. Home objects</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-The_Seam_Application_Framework-Query_objects">10.3. Query objects</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-The_Seam_Application_Framework-Controller_objects">10.4. Controller objects</a></span></dt></dl></!
 dd><dt><span class="chapter"><a href="#drools">11. Seam and JB!
 oss Rule
s</a></span></dt><dd><dl><dt><span class="section"><a href="#id2733639">11.1. Installing rules</a></span></dt><dt><span class="section"><a href="#id2704336">11.2. Using rules from a Seam component</a></span></dt><dt><span class="section"><a href="#id3302947">11.3. Using rules from a jBPM process definition</a></span></dt></dl></dd><dt><span class="chapter"><a href="#Seam_Reference_Guide-Security">12. Security</a></span></dt><dd><dl><dt><span class="sect1"><a href="#Seam_Reference_Guide-Security-Overview">12.1. Overview</a></span></dt><dd><dl><dt><span class="sect2"><a href="#Seam_Reference_Guide-Overview-Which_mode_is_right_for_my_application">12.1.1. Which mode is right for my application?</a></span></dt></dl></dd><dt><span class="sect1"><a href="#Seam_Reference_Guide-Security-Requirements">12.2. Requirements</a></span></dt><dt><span class="sect1"><a href="#Seam_Reference_Guide-Security-Authentication">12.3. Authentication</a></span></dt><dd><dl><dt><span class="sect2"><a h!
 ref="#Seam_Reference_Guide-Authentication-Configuration">12.3.1. Configuration</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Authentication-Writing_an_authentication_method">12.3.2. Writing an authentication method</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Authentication-Writing_a_login_form">12.3.3. Writing a login form</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Authentication-Simplified_Configuration___Summary">12.3.4. Simplified Configuration - Summary</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Authentication-Handling_Security_Exceptions">12.3.5. Handling Security Exceptions</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Authentication-Login_Redirection">12.3.6. Login Redirection</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Authentication-Advanced_Authentication_Features">12.3.7. Advanced Authentication Features</a></sp!
 an></dt></dl></dd><dt><span class="sect1"><a href="#Seam_Refer!
 ence_Gui
de-Security-Error_Messages">12.4. Error Messages</a></span></dt><dt><span class="sect1"><a href="#Seam_Reference_Guide-Security-Authorization">12.5. Authorization</a></span></dt><dd><dl><dt><span class="sect2"><a href="#Seam_Reference_Guide-Authorization-Core_concepts">12.5.1. Core concepts</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Authorization-Securing_components">12.5.2. Securing components</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Authorization-Security_in_the_user_interface">12.5.3. Security in the user interface</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Authorization-Securing_pages">12.5.4. Securing pages</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Authorization-Securing_Entities">12.5.5. Securing Entities</a></span></dt></dl></dd><dt><span class="sect1"><a href="#Seam_Reference_Guide-Security-Writing_Security_Rules">12.6. Writing Security Rules</a></span></dt>!
 <dd><dl><dt><span class="sect2"><a href="#Seam_Reference_Guide-Writing_Security_Rules-Permissions_Overview">12.6.1. Permissions Overview</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Writing_Security_Rules-Configuring_a_rules_file">12.6.2. Configuring a rules file</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Writing_Security_Rules-Creating_a_security_rules_file">12.6.3. Creating a security rules file</a></span></dt></dl></dd><dt><span class="sect1"><a href="#Seam_Reference_Guide-Security-SSL_Security">12.7. SSL Security</a></span></dt><dt><span class="sect1"><a href="#Seam_Reference_Guide-Security-Implementing_a_Captcha_Test">12.8. Implementing a Captcha Test</a></span></dt><dd><dl><dt><span class="sect2"><a href="#Seam_Reference_Guide-Implementing_a_Captcha_Test-Configuring_the_Captcha_Servlet">12.8.1. Configuring the Captcha Servlet</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Implementing_a_Captcha!
 _Test-Adding_a_Captcha_to_a_page">12.8.2. Adding a Captcha to !
 a page</
a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#Seam_Reference_Guide-Internationalization_and_themes">13. Internationalization and themes</a></span></dt><dd><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Internationalization_and_themes-Locales">13.1. Locales</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Internationalization_and_themes-Labels">13.2. Labels</a></span></dt><dd><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Labels-Defining_labels">13.2.1. Defining labels</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Labels-Displaying_labels">13.2.2. Displaying labels</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Labels-Faces_messages">13.2.3. Faces messages</a></span></dt></dl></dd><dt><span class="section"><a href="#Seam_Reference_Guide-Internationalization_and_themes-Timezones">13.3. Timezones</a></span></dt><dt><span class="section"><a href="#Seam_Re!
 ference_Guide-Internationalization_and_themes-Themes">13.4. Themes</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Internationalization_and_themes-Persisting_locale_and_theme_preferences_via_cookies">13.5. Persisting locale and theme preferences via cookies</a></span></dt></dl></dd><dt><span class="chapter"><a href="#Seam_Reference_Guide-Seam_Text">14. Seam Text</a></span></dt><dd><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_Text-Basic_fomatting">14.1. Basic fomatting</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_Text-Entering_code_and_text_with_special_characters">14.2. Entering code and text with special characters</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_Text-Links">14.3. Links</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_Text-Entering_HTML">14.4. Entering HTML</a></span></dt></dl></dd><dt><span class="chapter"><a href="#Seam_Ref!
 erence_Guide-iText_PDF_generation">15. iText PDF generation</a!
 ></span>
</dt><dd><dl><dt><span class="section"><a href="#Seam_Reference_Guide-iText_PDF_generation-Using_PDF_Support">15.1. Using PDF Support</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-iText_PDF_generation-Creating_a_document">15.2. Creating a document</a></span></dt><dd><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Creating_a_document-pdocument">15.2.1. p:document</a></span></dt></dl></dd><dt><span class="section"><a href="#Seam_Reference_Guide-iText_PDF_generation-Basic_Text_Elements">15.3. Basic Text Elements</a></span></dt><dd><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Basic_Text_Elements-pparagraph">15.3.1. p:paragraph</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Basic_Text_Elements-ptext">15.3.2. p:text</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Basic_Text_Elements-pfont">15.3.3. p:font</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Bas!
 ic_Text_Elements-pnewPage">15.3.4. p:newPage</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Basic_Text_Elements-pimage">15.3.5. p:image</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Basic_Text_Elements-panchor">15.3.6. p:anchor</a></span></dt></dl></dd><dt><span class="section"><a href="#Seam_Reference_Guide-iText_PDF_generation-Headers_and_Footers">15.4. Headers and Footers</a></span></dt><dd><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Headers_and_Footers-pheader_and_pfooter">15.4.1. p:header and p:footer</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Headers_and_Footers-ppageNumber">15.4.2. p:pageNumber</a></span></dt></dl></dd><dt><span class="section"><a href="#Seam_Reference_Guide-iText_PDF_generation-Chapters_and_Sections">15.5. Chapters and Sections</a></span></dt><dd><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Chapters_and_Sections-pchapter_and_psection">15.!
 5.1. p:chapter and p:section</a></span></dt><dt><span class="s!
 ection">
<a href="#Seam_Reference_Guide-Chapters_and_Sections-ptitle">15.5.2. p:title</a></span></dt></dl></dd><dt><span class="section"><a href="#Seam_Reference_Guide-iText_PDF_generation-Lists">15.6. Lists</a></span></dt><dd><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Lists-plist">15.6.1. p:list</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Lists-plistItem">15.6.2. p:listItem</a></span></dt></dl></dd><dt><span class="section"><a href="#Seam_Reference_Guide-iText_PDF_generation-Tables">15.7. Tables</a></span></dt><dd><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Tables-ptable">15.7.1. p:table</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Tables-pcell">15.7.2. p:cell</a></span></dt></dl></dd><dt><span class="section"><a href="#Seam_Reference_Guide-iText_PDF_generation-Document_Constants">15.8. Document Constants</a></span></dt><dd><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Document_C!
 onstants-Color_Values">15.8.1. Color Values</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Document_Constants-Alignment_Values">15.8.2. Alignment Values</a></span></dt></dl></dd><dt><span class="section"><a href="#Seam_Reference_Guide-iText_PDF_generation-Configuring_iText">15.9. Configuring iText</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-iText_PDF_generation-iText_links">15.10. iText links</a></span></dt></dl></dd><dt><span class="chapter"><a href="#Seam_Reference_Guide-Email">16. Email</a></span></dt><dd><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Email-Creating_a_message">16.1. Creating a message</a></span></dt><dd><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Creating_a_message-Attachments">16.1.1. Attachments</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Creating_a_message-HTMLText_alternative_part">16.1.2. HTML/Text alternative part</a></span></dt><dt><span!
  class="section"><a href="#Seam_Reference_Guide-Creating_a_mes!
 sage-Mul
tiple_recipients">16.1.3. Multiple recipients</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Creating_a_message-Multiple_messages">16.1.4. Multiple messages</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Creating_a_message-Templating">16.1.5. Templating</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Creating_a_message-Internationalisation">16.1.6. Internationalisation</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Creating_a_message-Other_Headers">16.1.7. Other Headers</a></span></dt></dl></dd><dt><span class="section"><a href="#Seam_Reference_Guide-Email-Receiving_emails">16.2. Receiving emails</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Email-Configuration">16.3. Configuration</a></span></dt><dd><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Configuration-mailSession">16.3.1. <code class="literal">mailSession</code></a></span></dt></!
 dl></dd><dt><span class="section"><a href="#Seam_Reference_Guide-Email-Tags">16.4. Tags</a></span></dt></dl></dd><dt><span class="chapter"><a href="#Seam_Reference_Guide-Asynchronicity_and_messaging">17. Asynchronicity and messaging</a></span></dt><dd><dl><dt><span class="sect1"><a href="#Seam_Reference_Guide-Asynchronicity_and_messaging-Asynchronicity">17.1. Asynchronicity</a></span></dt><dd><dl><dt><span class="sect2"><a href="#Seam_Reference_Guide-Asynchronicity-Asynchronous_methods">17.1.1. Asynchronous methods</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Asynchronicity-Asynchronous_events">17.1.2. Asynchronous events</a></span></dt></dl></dd><dt><span class="sect1"><a href="#Seam_Reference_Guide-Asynchronicity_and_messaging-Messaging_in_Seam">17.2. Messaging in Seam</a></span></dt><dd><dl><dt><span class="sect2"><a href="#Seam_Reference_Guide-Messaging_in_Seam-Configuration">17.2.1. Configuration</a></span></dt><dt><span class="sect2"><a href="!
 #Seam_Reference_Guide-Messaging_in_Seam-Sending_messages">17.2!
 .2. Send
ing messages</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Messaging_in_Seam-Receiving_messages_using_a_message_driven_bean">17.2.3. Receiving messages using a message-driven bean</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Messaging_in_Seam-Receiving_messages_in_the_client">17.2.4. Receiving messages in the client</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#cache">18. Caching</a></span></dt><dd><dl><dt><span class="section"><a href="#id2685440">18.1. Using JBossCache in Seam</a></span></dt><dt><span class="section"><a href="#id2813050">18.2. Page fragment caching</a></span></dt></dl></dd><dt><span class="chapter"><a href="#Seam_Reference_Guide-Remoting">19. Remoting</a></span></dt><dd><dl><dt><span class="sect1"><a href="#Seam_Reference_Guide-Remoting-Configuration">19.1. Configuration</a></span></dt><dt><span class="sect1"><a href="#Seam_Reference_Guide-Remoting-The_Seam_object">19.2. The "Seam" o!
 bject</a></span></dt><dd><dl><dt><span class="sect2"><a href="#Seam_Reference_Guide-The_Seam_object-A_Hello_World_example">19.2.1. A Hello World example</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-The_Seam_object-Seam.Component">19.2.2. Seam.Component</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-The_Seam_object-Seam.Remoting">19.2.3. Seam.Remoting</a></span></dt></dl></dd><dt><span class="sect1"><a href="#Seam_Reference_Guide-Remoting-Client_Interfaces">19.3. Client Interfaces</a></span></dt><dt><span class="sect1"><a href="#Seam_Reference_Guide-Remoting-The_Context">19.4. The Context</a></span></dt><dd><dl><dt><span class="sect2"><a href="#Seam_Reference_Guide-The_Context-Setting_and_reading_the_Conversation_ID">19.4.1. Setting and reading the Conversation ID</a></span></dt></dl></dd><dt><span class="sect1"><a href="#Seam_Reference_Guide-Remoting-Batch_Requests">19.5. Batch Requests</a></span></dt><dt><span class="sect1"><!
 a href="#Seam_Reference_Guide-Remoting-Working_with_Data_types!
 ">19.6. 
Working with Data types</a></span></dt><dd><dl><dt><span class="sect2"><a href="#Seam_Reference_Guide-Working_with_Data_types-Primitives__Basic_Types">19.6.1. Primitives / Basic Types</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Working_with_Data_types-JavaBeans">19.6.2. JavaBeans</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Working_with_Data_types-Dates_and_Times">19.6.3. Dates and Times</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Working_with_Data_types-Enums">19.6.4. Enums</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Working_with_Data_types-Collections">19.6.5. Collections</a></span></dt></dl></dd><dt><span class="sect1"><a href="#Seam_Reference_Guide-Remoting-Debugging">19.7. Debugging</a></span></dt><dt><span class="sect1"><a href="#Seam_Reference_Guide-Remoting-The_Loading_Message">19.8. The Loading Message</a></span></dt><dd><dl><dt><span class="sect2"><a href="#Seam_R!
 eference_Guide-The_Loading_Message-Changing_the_message">19.8.1. Changing the message</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-The_Loading_Message-Hiding_the_loading_message">19.8.2. Hiding the loading message</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-The_Loading_Message-A_Custom_Loading_Indicator">19.8.3. A Custom Loading Indicator</a></span></dt></dl></dd><dt><span class="sect1"><a href="#Seam_Reference_Guide-Remoting-Controlling_what_data_is_returned">19.9. Controlling what data is returned</a></span></dt><dd><dl><dt><span class="sect2"><a href="#Seam_Reference_Guide-Controlling_what_data_is_returned-Constraining_normal_fields">19.9.1. Constraining normal fields</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Controlling_what_data_is_returned-Constraining_Maps_and_Collections">19.9.2. Constraining Maps and Collections</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Contro!
 lling_what_data_is_returned-Constraining_objects_of_a_specific!
 _type">1
9.9.3. Constraining objects of a specific type</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Controlling_what_data_is_returned-Combining_Constraints">19.9.4. Combining Constraints</a></span></dt></dl></dd><dt><span class="sect1"><a href="#Seam_Reference_Guide-Remoting-JMS_Messaging">19.10. JMS Messaging</a></span></dt><dd><dl><dt><span class="sect2"><a href="#Seam_Reference_Guide-JMS_Messaging-Configuration">19.10.1. Configuration</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-JMS_Messaging-Subscribing_to_a_JMS_Topic">19.10.2. Subscribing to a JMS Topic</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-JMS_Messaging-Unsubscribing_from_a_Topic">19.10.3. Unsubscribing from a Topic</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-JMS_Messaging-Tuning_the_Polling_Process">19.10.4. Tuning the Polling Process</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#Seam_Reference_!
 Guide-Spring_Framework_integration">20. Spring Framework integration</a></span></dt><dd><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Spring_Framework_integration-Injecting_Seam_components_into_Spring_beans">20.1. Injecting Seam components into Spring beans</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Spring_Framework_integration-Injecting_Spring_beans_into_Seam_components">20.2. Injecting Spring beans into Seam components</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Spring_Framework_integration-Making_a_Spring_bean_into_a_Seam_component">20.3. Making a Spring bean into a Seam component</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Spring_Framework_integration-Seam_scoped_Spring_beans">20.4. Seam-scoped Spring beans</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Spring_Framework_integration-Spring_Application_Context_as_a_Seam_Component">20.5. Spring Appli!
 cation Context as a Seam Component</a></span></dt></dl></dd><d!
 t><span 
class="chapter"><a href="#Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications">21. Configuring Seam and packaging Seam applications</a></span></dt><dd><dl><dt><span class="sect1"><a href="#Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Basic_Seam_configuration">21.1. Basic Seam configuration</a></span></dt><dd><dl><dt><span class="sect2"><a href="#Seam_Reference_Guide-Basic_Seam_configuration-Integrating_Seam_with_JSF_and_your_servlet_container">21.1.1. Integrating Seam with JSF and your servlet container</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Basic_Seam_configuration-Seam_Resource_Servlet">21.1.2. Seam Resource Servlet</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Basic_Seam_configuration-Seam_servlet_filters">21.1.3. Seam servlet filters</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Basic_Seam_configuration-Integrating_Seam_with_your_EJB_container">21.1.4!
 . Integrating Seam with your EJB container</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Basic_Seam_configuration-Using_facelets">21.1.5. Using facelets</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Basic_Seam_configuration-Dont_forget">21.1.6. Don't forget!</a></span></dt></dl></dd><dt><span class="sect1"><a href="#Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_EE_5">21.2. Configuring Seam in Java EE 5</a></span></dt><dd><dl><dt><span class="sect2"><a href="#Seam_Reference_Guide-Configuring_Seam_in_Java_EE_5-Packaging">21.2.1. Packaging</a></span></dt></dl></dd><dt><span class="sect1"><a href="#Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container">21.3. Configuring Seam in Java SE, with the JBoss Embeddable EJB3 container</a></span></dt><dd><dl><dt><span class="sect2"><a href="#Seam_Reference_G!
 uide-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB!
 3_contai
ner-Installing_the_Embeddable_EJB3_container">21.3.1. Installing the Embeddable EJB3 container</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container-Configuring_a_datasource_with_the_Embeddable_EJB3_container">21.3.2. Configuring a datasource with the Embeddable EJB3 container</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container-Packaging">21.3.3. Packaging</a></span></dt></dl></dd><dt><span class="sect1"><a href="#Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_J2EE">21.4. Configuring Seam in J2EE</a></span></dt><dd><dl><dt><span class="sect2"><a href="#Seam_Reference_Guide-Configuring_Seam_in_J2EE-Boostrapping_Hibernate_in_Seam">21.4.1. Boostrapping Hibernate in Seam</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Configuring_Seam_in_J2EE-Boo!
 strapping_JPA_in_Seam">21.4.2. Boostrapping JPA in Seam</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Configuring_Seam_in_J2EE-Packaging">21.4.3. Packaging</a></span></dt></dl></dd><dt><span class="sect1"><a href="#Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_SE_with_the_JBoss_Microcontainer">21.5. Configuring Seam in Java SE, with the JBoss Microcontainer</a></span></dt><dd><dl><dt><span class="sect2"><a href="#Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Microcontainer-Using_Hibernate_and_the_JBoss_Microcontainer">21.5.1. Using Hibernate and the JBoss Microcontainer</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Microcontainer-Packaging">21.5.2. Packaging</a></span></dt></dl></dd><dt><span class="sect1"><a href="#Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_jBPM_in_Seam">21.6. Co!
 nfiguring jBPM in Seam</a></span></dt><dd><dl><dt><span class=!
 "sect2">
<a href="#Seam_Reference_Guide-Configuring_jBPM_in_Seam-Packaging">21.6.1. Packaging</a></span></dt></dl></dd><dt><span class="sect1"><a href="#Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_a_Portal">21.7. Configuring Seam in a Portal</a></span></dt><dt><span class="sect1"><a href="#Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_SFSB_and_Session_Timeouts_in_JBoss_AS">21.8. Configuring SFSB and Session Timeouts in JBoss AS</a></span></dt></dl></dd><dt><span class="chapter"><a href="#Seam_Reference_Guide-Seam_annotations">22. Seam annotations</a></span></dt><dd><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_annotations-Annotations_for_component_definition">22.1. Annotations for component definition</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_annotations-Annotations_for_bijection">22.2. Annotations for bijection</a></span></dt><dt><span class="secti!
 on"><a href="#Seam_Reference_Guide-Seam_annotations-Annotations_for_component_lifecycle_methods">22.3. Annotations for component lifecycle methods</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_annotations-Annotations_for_context_demarcation">22.4. Annotations for context demarcation</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_annotations-Annotations_for_transaction_demarcation">22.5. Annotations for transaction demarcation</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_annotations-Annotations_for_exceptions">22.6. Annotations for exceptions</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_annotations-Annotations_for_validation">22.7. Annotations for validation</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_annotations-Annotations_for_Seam_Remoting">22.8. Annotations for Seam Remoting</a></span></dt><dt><span class="section">!
 <a href="#Seam_Reference_Guide-Seam_annotations-Annotations_fo!
 r_Seam_i
nterceptors">22.9. Annotations for Seam interceptors</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_annotations-Annotations_for_asynchronicity">22.10. Annotations for asynchronicity</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_annotations-Annotations_for_use_with_JSF_dataTable">22.11. Annotations for use with JSF <code class="literal">dataTable</code></a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_annotations-Meta_annotations_for_databinding">22.12. Meta-annotations for databinding</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_annotations-Annotations_for_packaging">22.13. Annotations for packaging</a></span></dt></dl></dd><dt><span class="chapter"><a href="#components">23. Built-in Seam components</a></span></dt><dd><dl><dt><span class="section"><a href="#id2972363">23.1. Context injection components</a></span></dt><dt><span class="section"><a href="#id2!
 813122">23.2. Utility components</a></span></dt><dt><span class="section"><a href="#id2807948">23.3. Components for internationalization and themes</a></span></dt><dt><span class="section"><a href="#id2738486">23.4. Components for controlling conversations</a></span></dt><dt><span class="section"><a href="#id4167081">23.5. jBPM-related components</a></span></dt><dt><span class="section"><a href="#id2772001">23.6. Security-related components</a></span></dt><dt><span class="section"><a href="#id2772063">23.7. JMS-related components</a></span></dt><dt><span class="section"><a href="#components.mail">23.8. Mail-related components</a></span></dt><dt><span class="section"><a href="#id2772289">23.9. Infrastructural components</a></span></dt><dt><span class="section"><a href="#id2740138">23.10. Miscellaneous components</a></span></dt><dt><span class="section"><a href="#id2740239">23.11. Special components</a></span></dt></dl></dd><dt><span class="chapter"><a href="#Seam_Reference_G!
 uide-Seam_JSF_controls">24. Seam JSF controls</a></span></dt><!
 dt><span
 class="chapter"><a href="#Seam_Reference_Guide-Expression_language_enhancements">25. Expression language enhancements</a></span></dt><dd><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Expression_language_enhancements-Configuration">25.1. Configuration</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Expression_language_enhancements-Usage">25.2. Usage</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Expression_language_enhancements-Limitations">25.3. Limitations</a></span></dt><dd><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Limitations-Incompatibility_with_JSP_2.1">25.3.1. Incompatibility with JSP 2.1</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Limitations-Calling_a_MethodExpression_from_Java_code">25.3.2. Calling a <code class="literal">MethodExpression</code> from Java code</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#Seam_Reference_Guide-Testi!
 ng_Seam_applications">26. Testing Seam applications</a></span></dt><dd><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Testing_Seam_applications-Unit_testing_Seam_components">26.1. Unit testing Seam components</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Testing_Seam_applications-Integration_testing_Seam_applications">26.2. Integration testing Seam applications</a></span></dt><dd><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Integration_testing_Seam_applications-Using_mocks_in_integration_tests">26.2.1. Using mocks in integration tests</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="#Seam_Reference_Guide-Seam_tools">27. Seam tools</a></span></dt><dd><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_tools-jBPM_designer_and_viewer">27.1. jBPM designer and viewer</a></span></dt><dd><dl><dt><span class="section"><a href="#Seam_Reference_Guide-jBPM_designer_and_viewer-Business_process_de!
 signer">27.1.1. Business process designer</a></span></dt><dt><!
 span cla
ss="section"><a href="#Seam_Reference_Guide-jBPM_designer_and_viewer-Pageflow_viewer">27.1.2. Pageflow viewer</a></span></dt></dl></dd><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_tools-CRUD_application_generator">27.2. CRUD-application generator</a></span></dt><dd><dl><dt><span class="section"><a href="#Seam_Reference_Guide-CRUD_application_generator-Creating_a_Hibernate_configuration_file">27.2.1. Creating a Hibernate configuration file</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-CRUD_application_generator-Creating_a_Hibernate_Console_configuration">27.2.2. Creating a Hibernate Console configuration</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-CRUD_application_generator-Reverse_engineering_and_code_generation">27.2.3. Reverse engineering and code generation</a></span></dt></dl></dd></dl></dd><dt><span class="appendix"><a href="#appe-Publican-Revision_History">A. Revision History</a></span></dt></dl></d!
 iv><div xml:lang="en-US" class="chapter" title="Chapter 1. Feedback" lang="en-US"><div class="titlepage"><div><div><h2 class="title" id="Feedback">Chapter 1. Feedback</h2></div></div></div><div class="para">
+		If you spot a typo in this guide, or if you have thought of a way to make this manual better, we would love to hear from you! Submit a report in <a href="http://jira.jboss.com/jira/browse/JBPAPP">JIRA</a> against the Product: JBoss Enterprise Application Platform, Version: <em class="replaceable"><code>&lt;version&gt;</code></em>, Component: <span class="emphasis"><em>Doc</em></span>. If you have a suggestion for improving the documentation, try to be as specific as possible. If you have found an error, include the section number and some of the surrounding text so we can find it easily.
+	</div></div><div class="preface" title="Introduction to JBoss Seam"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Introduction_to_JBoss_Seam" class="title">Introduction to JBoss Seam</h1></div></div></div><div class="para">
+			Seam is an application framework for Java EE 5. It is inspired by the following principles:
+		</div><div class="variablelist"><dl><dt><span class="term"><span class="emphasis"><em>Integrate JSF with EJB 3.0</em></span></span></dt><dd><div class="para">
+						JSF and EJB 3.0 are two of the best new features of Java EE 5. EJB3 is a brand new component model for server side business and persistence logic. Meanwhile, JSF is a great component model for the presentation tier. Unfortunately, neither component model is able to solve all problems in computing by itself. Indeed, JSF and EJB3 work best when used together. But the Java EE 5 specification provides no standard way to integrate the two component models. Fortunately, the creators of both models anticipated this situation and provided standard extension points to allow extension and integration of other solutions.
+					</div><div class="para">
+						Seam unifies the component models of JSF and EJB3, allowing the developer to concentrate on the business problem.
+					</div></dd><dt><span class="term"><span class="emphasis"><em>Integrated AJAX</em></span></span></dt><dd><div class="para">
+						Seam supports two open source JSF-based AJAX solutions: ICEfaces and Ajax4JSF. These solutions let you add AJAX capability to your user interface without the need to write any JavaScript code.
+					</div><div class="para">
+						Seam also provides a built-in JavaScript remoting layer for EJB3 components. AJAX clients can easily call server-side components and subscribe to JMS topics, without the need for an intermediate action layer.
+					</div><div class="para">
+						Neither of these approaches would work well, were it not for Seam's built-in concurrency and state management, which ensures that many concurrent fine-grained, asynchronous AJAX requests are handled safely and efficiently on the server side.
+					</div></dd><dt><span class="term"><span class="emphasis"><em>Integrate Business Process as a First Class Construct</em></span></span></dt><dd><div class="para">
+						Optionally, Seam integrates transparent business process management via jBPM. This allows for complex workflows to easily be implemented using jBPM and Seam.
+					</div><div class="para">
+						Seam even allows definition of presentation tier conversation flow by the same means.
+					</div><div class="para">
+						JSF provides an incredibly rich event model for the presentation tier. Seam enhances this model by exposing jBPM's business process related events via exactly the same event handling mechanism, providing a uniform event model for Seam's uniform component model.
+					</div></dd><dt><span class="term"><span class="emphasis"><em>The uniform component model</em></span></span></dt><dd><div class="para">
+						Seam provides a uniform component model. A Seam component may be stateful, with the state associated to any one of a number of contexts, ranging from the long-running business process to a single web request.
+					</div><div class="para">
+						There is no distinction between presentation tier components and business logic components in Seam. It is possible to write Seam applications where <span class="emphasis"><em>everything</em></span> is an EJB. EJB 3.0 completely changes the nature of EJB from the point of view of the developer. An EJB is a fine-grained object, no more complex than an annotated JavaBean. Seam even encourages you to use session beans as JSF action listeners.
+					</div><div class="para">
+						Unlike plain Java EE or J2EE components, Seam components may <span class="emphasis"><em>simultaneously</em></span> access state associated with the web request and state held in transactional resources (without the need to propagate web request state manually via method parameters). You might object that the application layering imposed upon you by the old J2EE platform was a Good Thing. Well, nothing stops you creating an equivalent layered architecture using Seam - the difference is that <span class="emphasis"><em>you</em></span> get to architect your own application and decide what the layers are and how they work together.
+					</div></dd><dt><span class="term"><span class="emphasis"><em>Declarative State Management</em></span></span></dt><dd><div class="para">
+						We are all used to the concept of declarative transaction management and J2EE declarative security from EJB 2.x. EJB 3.0 even introduces declarative persistence context management. These are three examples of a broader problem of managing state that is associated with a particular <span class="emphasis"><em>context</em></span>, while ensuring that all needed cleanup occurs when the context ends. Seam takes the concept of declarative state management much further and applies it to <span class="emphasis"><em>application state</em></span>. Traditionally, J2EE applications almost always implement state management manually, by getting and setting servlet session and request attributes. This approach to state management is the source of many bugs and memory leaks when applications fail to clean up session attributes, or when session data associated with different workflows collides in a multi-window application. Seam has the potential to almost entirely eliminate this class!
  of bugs.
+					</div><div class="para">
+						Declarative application state management is made possible by the richness of the <span class="emphasis"><em>context model</em></span> defined by Seam. Seam extends the context model defined by the servlet spec—request, session, application—with two new contexts—conversation and business process—that are more meaningful from the point of view of the business logic.
+					</div></dd><dt><span class="term"><span class="emphasis"><em>Bijection</em></span></span></dt><dd><div class="para">
+						The notion of <span class="emphasis"><em>Inversion of Control</em></span> or <span class="emphasis"><em>dependency injection</em></span> exists in both JSF and EJB3, as well as in numerous simpler containers. Most of these containers emphasize injection of components that implement <span class="emphasis"><em>stateless services</em></span>. Even when injection of stateful components is supported (such as in JSF), it is virtually useless for handling application state because the scope of the stateful component cannot be defined with sufficient flexibility.
+					</div><div class="para">
+						<span class="emphasis"><em>Bijection</em></span> differs from IoC in that it is <span class="emphasis"><em>dynamic</em></span>, <span class="emphasis"><em>contextual</em></span>, and <span class="emphasis"><em>bidirectional</em></span>. You can think of it as a mechanism for aliasing contextual variables (names in the various contexts bound to the current thread) to attributes of the component. Bijection allows auto-assembly of stateful components by the container. It even allows a component to safely and easily manipulate the value of a context variable, just by assigning to an attribute of the component.
+					</div></dd><dt><span class="term"><span class="emphasis"><em>Workspace Management</em></span></span></dt><dd><div class="para">
+						Optionally, Seam applications may take advantage of <span class="emphasis"><em>workspace management</em></span>, allowing users to freely switch between different conversations (workspaces) in a single browser window. Seam provides not only correct multi-window operation, but also multi-window-like operation in a single window!
+					</div></dd><dt><span class="term"><span class="emphasis"><em>Annotated POJOs Everywhere</em></span></span></dt><dd><div class="para">
+						EJB 3.0 embraces annotations and <span class="emphasis"><em>configuration by exception</em></span> as the easiest way to provide information to the container in a declarative form. Unfortunately, JSF is still heavily dependent on verbose XML configuration files. Seam extends the annotations provided by EJB 3.0 with a set of annotations for declarative state management and declarative context demarcation. This lets you eliminate the noisy JSF managed bean declarations and reduce the required XML to just that information which truly belongs in XML (the JSF navigation rules).
+					</div></dd><dt><span class="term"><span class="emphasis"><em>Testability as a Core Feature</em></span></span></dt><dd><div class="para">
+						Seam components, being POJOs, are by nature unit testable. But for complex applications, unit testing alone is insufficient. Integration testing has traditionally been a messy and difficult task for Java web applications. Therefore, Seam provides for testability of Seam applications as a core feature of the framework. You can easily write JUnit or TestNG tests that reproduce a whole interaction with a user, exercising all components of the system apart from the view (the JSP or Facelets page). You can run these tests directly inside your IDE, where Seam will automatically deploy EJB components into the JBoss Embeddable EJB3 container.
+					</div></dd><dt><span class="term"><span class="emphasis"><em>Get started now!</em></span></span></dt><dd><div class="para">
+						Seam works in any application server that supports EJB 3.0. You can even use Seam in a servlet container like Tomcat, or in any J2EE application server, by leveraging the new JBoss Embeddable EJB3 container.
+					</div><div class="para">
+						However, we realize that not everyone is ready to make the switch to EJB 3.0. So, in the interim, you can use Seam as a framework for applications that use JSF for presentation, Hibernate (or plain JDBC) for persistence and JavaBeans for application logic. Then, when you're ready to make the switch to EJB 3.0, migration will be straightforward.
+					</div></dd></dl></div><div class="mediaobject" align="center"><img src="images/architecture.png" align="middle" /></div><div class="para">
+			It turns out that the combination of Seam, JSF and EJB3 is <span class="emphasis"><em>the</em></span> simplest way to write a complex web application in Java. You won't believe how little code is required!
+		</div></div><div xml:lang="en-US" class="chapter" title="Chapter 2. Seam Tutorial" lang="en-US"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_Tutorial">Chapter 2. Seam Tutorial</h2></div></div></div><div class="toc"><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_Tutorial-Try_the_examples">2.1. Try the examples</a></span></dt><dd><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Try_the_examples-Running_the_examples_on_JBoss_AS">2.1.1. Running the examples on JBoss Enterprise Application Platform</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Try_the_examples-Running_the_examples_on_Tomcat">2.1.2. Running the examples on Tomcat</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Try_the_examples-Running_the_example_tests">2.1.3. Running the example tests</a></span></dt></dl></dd><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_Tutorial-Your_first_S!
 eam_application_the_registration_example">2.2. Your first Seam application: the registration example</a></span></dt><dd><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Your_first_Seam_application_the_registration_example-Understanding_the_code">2.2.1. Understanding the code</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Your_first_Seam_application_the_registration_example-How_it_works">2.2.2. How it works</a></span></dt></dl></dd><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_Tutorial-Clickable_lists_in_Seam_the_messages_example">2.3. Clickable lists in Seam: the messages example</a></span></dt><dd><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Clickable_lists_in_Seam_the_messages_example-Understanding_the_code">2.3.1. Understanding the code</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Clickable_lists_in_Seam_the_messages_example-How_it_works">2.3.2. How it works</a></span></dt></d!
 l></dd><dt><span class="section"><a href="#Seam_Reference_Guid!
 e-Seam_T
utorial-Seam_and_jBPM_the_todo_list_example">2.4. Seam and jBPM: the todo list example</a></span></dt><dd><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_and_jBPM_the_todo_list_example-Understanding_the_code">2.4.1. Understanding the code</a></span></dt></dl></dd><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_Tutorial-Seam_pageflow_the_numberguess_example">2.5. Seam pageflow: the numberguess example</a></span></dt><dd><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_pageflow_the_numberguess_example-Understanding_the_code">2.5.1. Understanding the code</a></span></dt></dl></dd><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_Tutorial-A_complete_Seam_application_the_Hotel_Booking_example">2.6. A complete Seam application: the Hotel Booking example</a></span></dt><dd><dl><dt><span class="section"><a href="#Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-Introduction">2.6.1. Introduction</a!
 ></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-Overview_of_the_booking_example">2.6.2. Overview of the booking example</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-Understanding_Seam_conversations">2.6.3. Understanding Seam conversations</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-The_Seam_UI_control_library">2.6.4. The Seam UI control library</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-The_Seam_Debug_Page">2.6.5. The Seam Debug Page</a></span></dt></dl></dd><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_Tutorial-A_complete_application_featuring_Seam_and_jBPM_the_DVD_Store_example">2.7. A complete application featuring Seam and jBPM: the DVD S!
 tore example</a></span></dt><dt><span class="section"><a href=!
 "#Seam_R
eference_Guide-Seam_Tutorial-A_complete_application_featuring_Seam_workspace_management_the_Issue_Tracker_example">2.8. A complete application featuring Seam workspace management: the Issue Tracker example</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_Tutorial-An_example_of_Seam_with_Hibernate_the_Hibernate_Booking_example">2.9. An example of Seam with Hibernate: the Hibernate Booking example</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_Tutorial-A_RESTful_Seam_application_the_Blog_example">2.10. A RESTful Seam application: the Blog example</a></span></dt><dd><dl><dt><span class="section"><a href="#Seam_Reference_Guide-A_RESTful_Seam_application_the_Blog_example-Using_pull_style_MVC">2.10.1. Using "pull"-style MVC</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-A_RESTful_Seam_application_the_Blog_example-Bookmarkable_search_results_page">2.10.2. Bookmarkable search results page</a></span></!
 dt><dt><span class="section"><a href="#Seam_Reference_Guide-A_RESTful_Seam_application_the_Blog_example-Using_push_style_MVC_in_a_RESTful_application">2.10.3. Using "push"-style MVC in a RESTful application</a></span></dt></dl></dd></dl></div><div class="section" title="2.1. Try the examples"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_Tutorial-Try_the_examples">2.1. Try the examples</h2></div></div></div><div class="para">
+			In this tutorial, we will assume that you are using the JBoss Enterprise Application Platform with Seam.
+		</div><div class="para">
+			The directory structure of each example in Seam follows this pattern:
+		</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+					Web pages, images and stylesheets may be found in <code class="filename">examples/<em class="replaceable"><code>registration</code></em>/view</code>
+				</div></li><li class="listitem"><div class="para">
+					Resources such as deployment descriptors and data import scripts may be found in <code class="filename">examples/<em class="replaceable"><code>registration</code></em>/resources</code>
+				</div></li><li class="listitem"><div class="para">
+					Java source code may be found in <code class="filename">examples/<em class="replaceable"><code>registration</code></em>/src</code>
+				</div></li><li class="listitem"><div class="para">
+					The Ant build script is <code class="filename">examples/<em class="replaceable"><code>registration</code></em>/build.xml</code>
+				</div></li></ul></div><div class="section" title="2.1.1. Running the examples on JBoss Enterprise Application Platform"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Try_the_examples-Running_the_examples_on_JBoss_AS">2.1.1. Running the examples on JBoss Enterprise Application Platform</h3></div></div></div><div class="para">
+				First, make sure you have Ant correctly installed, with <code class="literal">$ANT_HOME</code> and <code class="literal">$JAVA_HOME</code> set correctly. Next, make sure you set the location of your JBoss AS installation in the <code class="literal">build.properties</code> file in the root folder of your Seam installation. If you haven't already done so, start JBoss AS now by typing <code class="literal">bin/run.sh</code> or <code class="literal">bin/run.bat</code> in the root directory of your JBoss installation.
+			</div><div class="para">
+				By default the examples will deploy to the default configuration of the server. These examples should be deployed to the production configuration if they are to be used with JBoss Enterprise Application Platform, and the example <code class="literal">build.xml</code> file should be modified to reflect this before building and deploying. Two lines should be changed in this file:
+			</div><pre class="screen"> &lt;property name="deploy.dir"           value="${jboss.home}/server/production/deploy"/&gt;
+</pre><pre class="screen">   &lt;property name="webroot.dir"         
+	value="${deploy.dir}/jboss-web.deployer/ROOT.war"/&gt;
+</pre><div class="para">
+				Now, build and deploy the example by typing <code class="literal">ant deploy</code> in the <code class="filename">examples/<em class="replaceable"><code>registration</code></em></code> directory.
+			</div><div class="para">
+				Try it out by accessing <a href="http://localhost:8080/seam-registration/"><code class="literal">http://localhost:8080/seam-registration/</code></a> with your web browser.
+			</div></div><div class="section" title="2.1.2. Running the examples on Tomcat"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Try_the_examples-Running_the_examples_on_Tomcat">2.1.2. Running the examples on Tomcat</h3></div></div></div><div class="para">
+				First, make sure you have Ant correctly installed, with <code class="literal">$ANT_HOME</code> and <code class="literal">$JAVA_HOME</code> set correctly. Next, make sure you set the location of your Tomcat installation in the <code class="literal">build.properties</code> file in the root folder of your Seam installation.
+			</div><div class="para">
+				Now, build and deploy the example by typing <code class="literal">ant deploy.tomcat</code> in the <code class="filename">examples/<em class="replaceable"><code>registration</code></em></code> directory.
+			</div><div class="para">
+				Finally, start Tomcat.
+			</div><div class="para">
+				Try it out by accessing <a href="http://localhost:8080/jboss-seam-registration/"><code class="literal">http://localhost:8080/jboss-seam-registration/</code></a> with your web browser.
+			</div><div class="para">
+				When you deploy the example to Tomcat, any EJB3 components will run inside the JBoss Embeddable EJB3 container, a complete standalone EJB3 container environment.
+			</div></div><div class="section" title="2.1.3. Running the example tests"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Try_the_examples-Running_the_example_tests">2.1.3. Running the example tests</h3></div></div></div><div class="para">
+				Most of the examples come with a suite of TestNG integration tests. The easiest way to run the tests is to run <code class="literal">ant testexample</code> inside the <code class="filename">examples/<em class="replaceable"><code>registration</code></em></code> directory. It is also possible to run the tests inside your IDE using the TestNG plugin.
+			</div></div></div><div class="section" title="2.2. Your first Seam application: the registration example"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_Tutorial-Your_first_Seam_application_the_registration_example">2.2. Your first Seam application: the registration example</h2></div></div></div><div class="para">
+			The registration example is a fairly trivial application that lets a new user store his username, real name and password in the database. The example is not intended to show off all of the cool functionality of Seam. However, it demonstrates the use of an EJB3 session bean as a JSF action listener, and basic configuration of Seam.
+		</div><div class="para">
+			We will go slowly, since we realize you might not yet be familiar with EJB 3.0.
+		</div><div class="para">
+			The start page displays a very basic form with three input fields. Try filling them in and then submitting the form. This will save a user object in the database.
+		</div><div class="mediaobject" align="center"><img src="images/registration.png" align="middle" width="444" /></div><div class="section" title="2.2.1. Understanding the code"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Your_first_Seam_application_the_registration_example-Understanding_the_code">2.2.1. Understanding the code</h3></div></div></div><div class="para">
+				The example is implemented with two JSP pages, one entity bean and one stateless session bean.
+			</div><div class="mediaobject" align="center"><img src="images/register.png" align="middle" /></div><div class="para">
+				Let us take a look at the code, starting from the bottom.
+			</div><div class="section" title="2.2.1.1. The entity bean: User.java"><div class="titlepage"><div><div><h4 class="title" id="Seam_Reference_Guide-Understanding_the_code-The_entity_bean_User.java">2.2.1.1. The entity bean: <code class="literal">User.java</code></h4></div></div></div><div class="para">
+					We need an EJB entity bean for user data. This class defines <span class="emphasis"><em>persistence</em></span> and <span class="emphasis"><em>validation</em></span> declaratively, via annotations. It also needs some extra annotations that define the class as a Seam component.
+				</div><pre class="programlisting">@Entity
+ at Name("user")
+ at Scope(SESSION)
+ at Table(name="users")
+public class User implements Serializable
+{
+   private static final long serialVersionUID = 1881413500711441951L;
+   
+   private String username;
+   private String password;
+   private String name;
+   
+   public User(String name, String password, String username)
+   {
+      this.name = name;
+      this.password = password;
+      this.username = username;
+   }
+   
+   public User() {}
+   
+   @NotNull @Length(min=5, max=15)
+   public String getPassword()
+   {
+      return password;
+   }
+
+   public void setPassword(String password)
+   {
+      this.password = password;
+   }
+   
+   @NotNull
+   public String getName()
+   {
+      return name;
+   }
+
+   public void setName(String name)
+   {
+      this.name = name;
+   }
+   
+   @Id @NotNull @Length(min=5, max=15)
+   public String getUsername()
+   {
+      return username;
+   }
+
+   public void setUsername(String username)
+   {
+      this.username = username;
+   }
+
+}
+</pre><div class="orderedlist"><ol><li class="listitem"><div class="para">
+							The EJB3 standard <code class="literal">@Entity</code> annotation indicates that the <code class="literal">User</code> class is an entity bean.
+						</div></li><li class="listitem"><div class="para">
+							A Seam component needs a <span class="emphasis"><em>component name</em></span> specified by the <code class="literal">@Name</code> annotation. This name must be unique within the Seam application. When JSF asks Seam to resolve a context variable with a name that is the same as a Seam component name, and the context variable is currently undefined (null), Seam will instantiate that component, and bind the new instance to the context variable. In this case, Seam will instantiate a <code class="literal">User</code> the first time JSF encounters a variable named <code class="literal">user</code>.
+						</div></li><li class="listitem"><div class="para">
+							Whenever Seam instantiates a component, it binds the new instance to a context variable in the component's <span class="emphasis"><em>default context</em></span>. The default context is specified using the <code class="literal">@Scope</code> annotation. The <code class="literal">User</code> bean is a session scoped component.
+						</div></li><li class="listitem"><div class="para">
+							The EJB standard <code class="literal">@Table</code> annotation indicates that the <code class="literal">User</code> class is mapped to the <code class="literal">users</code> table.
+						</div></li><li class="listitem"><div class="para">
+							<code class="literal">name</code>, <code class="literal">password</code> and <code class="literal">username</code> are the persistent attributes of the entity bean. All of our persistent attributes define accessor methods. These are needed when this component is used by JSF in the render response and update model values phases.
+						</div></li><li class="listitem"><div class="para">
+							An empty constructor is both required by both the EJB specification and by Seam.
+						</div></li><li class="listitem"><div class="para">
+							The <code class="literal">@NotNull</code> and <code class="literal">@Length</code> annotations are part of the Hibernate Validator framework. Seam integrates Hibernate Validator and lets you use it for data validation (even if you are not using Hibernate for persistence).
+						</div></li><li class="listitem"><div class="para">
+							The EJB standard <code class="literal">@Id</code> annotation indicates the primary key attribute of the entity bean.
+						</div></li></ol></div><div class="para">
+					The most important things to notice in this example are the <code class="literal">@Name</code> and <code class="literal">@Scope</code> annotations. These annotations establish that this class is a Seam component.
+				</div><div class="para">
+					We will see below that the properties of our <code class="literal">User</code> class are bound to directly to JSF components and are populated by JSF during the update model values phase. We do not need any tedious glue code to copy data back and forth between the JSP pages and the entity bean domain model.
+				</div><div class="para">
+					However, entity beans should not do transaction management or database access. So we cannot use this component as a JSF action listener. For that we need a session bean.
+				</div></div><div class="section" title="2.2.1.2. The stateless session bean class: RegisterAction.java"><div class="titlepage"><div><div><h4 class="title" id="Seam_Reference_Guide-Understanding_the_code-The_stateless_session_bean_class_RegisterAction.java">2.2.1.2. The stateless session bean class: <code class="literal">RegisterAction.java</code></h4></div></div></div><div class="para">
+					Most Seam application use session beans as JSF action listeners (you can use JavaBeans instead if you like).
+				</div><div class="para">
+					We have exactly one JSF action in our application, and one session bean method attached to it. In this case, we will use a stateless session bean, since all the state associated with our action is held by the <code class="literal">User</code> bean.
+				</div><div class="para">
+					This is the only really interesting code in the example.
+				</div><pre class="programlisting">@Stateless
+ at Name("register")
+public class RegisterAction implements Register
+{
+
+   @In
+   private User user;
+   
+   @PersistenceContext
+   private EntityManager em;
+   
+   @Logger
+   private Log log;
+   
+   public String register()
+   {
+      List existing = em.createQuery(
+         "select username from User where username=#{user.username}")
+         .getResultList();
+         
+      if (existing.size()==0)
+      {
+         em.persist(user);
+         log.info("Registered new user #{user.username}");
+         return "/registered.jsp";
+      }
+      else
+      {
+         FacesMessages.instance().add("User #{user.username} already exists");
+         return null;
+      }
+   }
+
+}
+</pre><div class="orderedlist"><ol><li class="listitem"><div class="para">
+							The EJB standard <code class="literal">@Stateless</code> annotation marks this class as stateless session bean.
+						</div></li><li class="listitem"><div class="para">
+							The <code class="literal">@In</code> annotation marks an attribute of the bean as injected by Seam. In this case, the attribute is injected from a context variable named <code class="literal">user</code> (the instance variable name).
+						</div></li><li class="listitem"><div class="para">
+							The EJB standard <code class="literal">@PersistenceContext</code> annotation is used to inject the EJB3 entity manager.
+						</div></li><li class="listitem"><div class="para">
+							The Seam <code class="literal">@Logger</code> annotation is used to inject the component's <code class="literal">Log</code> instance.
+						</div></li><li class="listitem"><div class="para">
+							The action listener method uses the standard EJB3 <code class="literal">EntityManager</code> API to interact with the database, and returns the JSF outcome. Note that, since this is a sesson bean, a transaction is automatically begun when the <code class="literal">register()</code> method is called, and committed when it completes.
+						</div></li><li class="listitem"><div class="para">
+							Notice that Seam lets you use a JSF EL expression inside EJB-QL. Under the covers, this results in an ordinary JPA <code class="literal">setParameter()</code> call on the standard JPA <code class="literal">Query</code> object. Nice, huh?
+						</div></li><li class="listitem"><div class="para">
+							The <code class="literal">Log</code> API lets us easily display templated log messages.
+						</div></li><li class="listitem"><div class="para">
+							JSF action listener methods return a string-valued outcome that determines what page will be displayed next. A null outcome (or a void action listener method) redisplays the previous page. In plain JSF, it is normal to always use a JSF <span class="emphasis"><em>navigation rule</em></span> to determine the JSF view id from the outcome. For complex application this indirection is useful and a good practice. However, for very simple examples like this one, Seam lets you use the JSF view id as the outcome, eliminating the requirement for a navigation rule. <span class="emphasis"><em>Note that when you use a view id as an outcome, Seam always performs a browser redirect.</em></span>
+						</div></li><li class="listitem"><div class="para">
+							Seam provides a number of <span class="emphasis"><em>built-in components</em></span> to help solve common problems. The <code class="literal">FacesMessages</code> component makes it easy to display templated error or success messages. Built-in Seam components may be obtained by injection, or by calling an <code class="literal">instance()</code> method.
+						</div></li></ol></div><div class="para">
+					Note that we did not explicitly specify a <code class="literal">@Scope</code> this time. Each Seam component type has a default scope if not explicitly specified. For stateless session beans, the default scope is the stateless context. Actually, <span class="emphasis"><em>all</em></span> stateless session beans belong in the stateless context.
+				</div><div class="para">
+					Our session bean action listener performs the business and persistence logic for our mini-application. In more complex applications, we might need to layer the code and refactor persistence logic into a dedicated data access component. That is perfectly trivial to do. But notice that Seam does not force you into any particular strategy for application layering.
+				</div><div class="para">
+					Furthermore, notice that our session bean has simultaneous access to context associated with the web request (the form values in the <code class="literal">User</code> object, for example), and state held in transactional resources (the <code class="literal">EntityManager</code> object). This is a break from traditional J2EE architectures. Again, if you are more comfortable with the traditional J2EE layering, you can certainly implement that in a Seam application. But for many applications, it is not very useful.
+				</div></div><div class="section" title="2.2.1.3. The session bean local interface: Register.java"><div class="titlepage"><div><div><h4 class="title" id="Seam_Reference_Guide-Understanding_the_code-The_session_bean_local_interface_Register.java">2.2.1.3. The session bean local interface: <code class="literal">Register.java</code></h4></div></div></div><div class="para">
+					Naturally, our session bean needs a local interface.
+				</div><div class="example" id="id2808113"><div class="example-contents"><pre class="programlisting">@Local
+public interface Register
+{
+   public String register();
+}
+</pre></div><h6>Example 2.1. </h6></div><br class="example-break" /><div class="para">
+					That is the end of the Java code. Now onto the deployment descriptors.
+				</div></div><div class="section" title="2.2.1.4. The Seam component deployment descriptor: components.xml"><div class="titlepage"><div><div><h4 class="title" id="Seam_Reference_Guide-Understanding_the_code-The_Seam_component_deployment_descriptor_components.xml">2.2.1.4. The Seam component deployment descriptor: <code class="literal">components.xml</code></h4></div></div></div><div class="para">
+					If you have used many Java frameworks before, you will be used to having to declare all your component classes in some kind of XML file that gradually grows more and more unmanageable as your project matures. You will be relieved to know that Seam does not require that application components be accompanied by XML. Most Seam applications require a very small amount of XML that does not grow very much as the project gets bigger.
+				</div><div class="para">
+					Nevertheless, it is often useful to be able to provide for <span class="emphasis"><em>some</em></span> external configuration of <span class="emphasis"><em>some</em></span> components (particularly the components built in to Seam). You have a couple of options here, but the most flexible option is to provide this configuration in a file called <code class="literal">components.xml</code>, located in the <code class="literal">WEB-INF</code> directory. We will use the <code class="literal">components.xml</code> file to tell Seam how to find our EJB components in JNDI:
+				</div><div class="example" id="id2808188"><div class="example-contents"><pre class="programlisting">&lt;components xmlns="http://jboss.com/products/seam/components"
+            xmlns:core="http://jboss.com/products/seam/core"&gt;
+     &lt;core:init jndi-pattern="@jndiPattern@"/&gt;
+&lt;/components&gt;
+</pre></div><h6>Example 2.2. </h6></div><br class="example-break" /><div class="para">
+					This code configures a property named <code class="literal">jndiPattern</code> of a built-in Seam component named <code class="literal">org.jboss.seam.core.init</code>.
+				</div></div><div class="section" title="2.2.1.5. The web deployment description: web.xml"><div class="titlepage"><div><div><h4 class="title" id="Seam_Reference_Guide-Understanding_the_code-The_web_deployment_description_web.xml">2.2.1.5. The web deployment description: <code class="literal">web.xml</code></h4></div></div></div><div class="para">
+					The presentation layer for our mini-application will be deployed in a WAR. So we will need a web deployment descriptor.
+				</div><div class="example" id="id2808238"><div class="example-contents"><pre class="programlisting">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;web-app version="2.5"
+    xmlns="http://java.sun.com/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
+        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"&gt;
+
+    &lt;!- - Seam - -&gt;
+
+    &lt;listener&gt;
+        &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/listener-class&gt;
+    &lt;/listener&gt;
+    
+     &lt;listener&gt;
+         &lt;listener-class&gt;com.sun.faces.config.ConfigureListener&lt;/listener-class&gt;
+    &lt;/listener&gt;
+
+    &lt;context-param&gt;
+        &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-name&gt;
+        &lt;param-value&gt;client&lt;/param-value&gt;
+    &lt;/context-param&gt;
+
+    &lt;context-param&gt;
+        &lt;param-name&gt;javax.faces.DEFAULT_SUFFIX&lt;/param-name&gt;
+        &lt;param-value&gt;.jspx&lt;/param-value&gt;
+    &lt;/context-param&gt;
+
+        &lt;servlet&gt;
+                &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;
+                &lt;servlet-class&gt;javax.faces.webapp.FacesServlet&lt;/servlet-class&gt;
+                &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;
+        &lt;/servlet&gt;
+
+        
+        &lt;servlet-mapping&gt;
+                &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;
+                &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;
+        &lt;/servlet-mapping&gt;
+
+&lt;/web-app&gt;
+</pre></div><h6>Example 2.3. </h6></div><br class="example-break" /><div class="para">
+					This <code class="literal">web.xml</code> file configures Seam and Glassfish. The configuration you see here is pretty much identical in all Seam applications.
+				</div></div><div class="section" title="2.2.1.6. The JSF configration: faces-config.xml"><div class="titlepage"><div><div><h4 class="title" id="Seam_Reference_Guide-Understanding_the_code-The_JSF_configration_faces_config.xml">2.2.1.6. The JSF configration: <code class="literal">faces-config.xml</code></h4></div></div></div><div class="para">
+					All Seam applications use JSF views as the presentation layer. So we will need <code class="literal">faces-config.xml</code>.
+				</div><div class="example" id="id2685796"><div class="example-contents"><pre class="programlisting">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;!DOCTYPE faces-config 
+PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN"
+                            "http://java.sun.com/dtd/web-facesconfig_1_0.dtd"&gt;
+&lt;faces-config&gt;
+
+    &lt;!- - A phase listener is needed by all Seam applications - -&gt;
+    
+    &lt;lifecycle&gt;
+        &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-listener&gt;
+    &lt;/lifecycle&gt;
+
+&lt;/faces-config&gt;
+</pre></div><h6>Example 2.4. </h6></div><br class="example-break" /><div class="para">
+					The <code class="literal">faces-config.xml</code> file integrates Seam into JSF. Note that we do not need any JSF managed bean declarations; the managed beans are the Seam components. In Seam applications, the <code class="literal">faces-config.xml</code> is used much less often than in plain JSF.
+				</div><div class="para">
+					In fact, once you have all the basic descriptors set up, the <span class="emphasis"><em>only</em></span> XML you need to write as you add new functionality to a Seam application is the navigation rules, and possibly jBPM process definitions. Seam takes the view that <span class="emphasis"><em>process flow</em></span> and <span class="emphasis"><em>configuration data</em></span> are the only things that truly belong in XML.
+				</div><div class="para">
+					In this simple example, we do not even need a navigation rule, since we decided to embed the view id in our action code.
+				</div></div><div class="section" title="2.2.1.7. The EJB deployment descriptor: ejb-jar.xml"><div class="titlepage"><div><div><h4 class="title" id="Seam_Reference_Guide-Understanding_the_code-The_EJB_deployment_descriptor_ejb_jar.xml">2.2.1.7. The EJB deployment descriptor: <code class="literal">ejb-jar.xml</code></h4></div></div></div><div class="para">
+					The <code class="literal">ejb-jar.xml</code> file integrates Seam with EJB3, by attaching the <code class="literal">SeamInterceptor</code> to all session beans in the archive.
+				</div><pre class="programlisting">&lt;ejb-jar xmlns="http://java.sun.com/xml/ns/javaee" 
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
+                           http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"
+         version="3.0"&gt;
+         
+   &lt;interceptors&gt;
+     &lt;interceptor&gt;
+       &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/interceptor-class&gt;
+     &lt;/interceptor&gt;
+   &lt;/interceptors&gt;
+   
+   &lt;assembly-descriptor&gt;
+      &lt;interceptor-binding&gt;
+         &lt;ejb-name&gt;*&lt;/ejb-name&gt;
+         &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/interceptor-class&gt;
+      &lt;/interceptor-binding&gt;
+   &lt;/assembly-descriptor&gt;
+   
+&lt;/ejb-jar&gt;
+</pre></div><div class="section" title="2.2.1.8. The EJB persistence deployment descriptor: persistence.xml"><div class="titlepage"><div><div><h4 class="title" id="Seam_Reference_Guide-Understanding_the_code-The_EJB_persistence_deployment_descriptor_persistence.xml">2.2.1.8. The EJB persistence deployment descriptor: <code class="literal">persistence.xml</code></h4></div></div></div><div class="para">
+					The <code class="literal">persistence.xml</code> file tells the EJB persistence provider where to find the datasource, and contains some vendor-specific settings. In this case, enables automatic schema export at startup time.
+				</div><pre class="programlisting">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;persistence xmlns="http://java.sun.com/xml/ns/persistence" 
+             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
+                           http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" 
+             version="1.0"&gt;
+    &lt;persistence-unit name="userDatabase"&gt;
+      &lt;provider&gt;org.hibernate.ejb.HibernatePersistence&lt;/provider&gt;
+      &lt;jta-data-source&gt;java:/DefaultDS&lt;/jta-data-source&gt;
+      &lt;properties&gt;
+         &lt;property name="hibernate.hbm2ddl.auto" value="create-drop"/&gt;
+      &lt;/properties&gt;
+    &lt;/persistence-unit&gt;
+&lt;/persistence&gt;
+</pre></div><div class="section" title="2.2.1.9. The view: register.jsp and registered.jsp"><div class="titlepage"><div><div><h4 class="title" id="Seam_Reference_Guide-Understanding_the_code-The_view_register.jsp_and_registered.jsp">2.2.1.9. The view: <code class="literal">register.jsp</code> and <code class="literal">registered.jsp</code></h4></div></div></div><div class="para">
+					The view pages for a Seam application could be implemented using any technology that supports JSF. In this example we use JSP, since it is familiar to most developers and since we have minimal requirements here anyway. (But if you take our advice, you will use Facelets for your own applications.)
+				</div><div class="example" id="id2685979"><div class="example-contents"><pre class="programlisting">&lt;%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %&gt;
+&lt;%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %&gt;
+&lt;%@ taglib uri="http://jboss.com/products/seam/taglib" prefix="s" %&gt;
+&lt;html&gt;
+ &lt;head&gt;
+  &lt;title&gt;Register New User&lt;/title&gt;
+ &lt;/head&gt;
+ &lt;body&gt;
+  &lt;f:view&gt;
+   &lt;h:form&gt;
+     &lt;table border="0"&gt;
+       &lt;s:validateAll&gt;
+         &lt;tr&gt;
+           &lt;td&gt;Username&lt;/td&gt;
+           &lt;td&gt;&lt;h:inputText value="#{user.username}"/&gt;&lt;/td&gt;
+         &lt;/tr&gt;
+         &lt;tr&gt;
+           &lt;td&gt;Real Name&lt;/td&gt;
+           &lt;td&gt;&lt;h:inputText value="#{user.name}"/&gt;&lt;/td&gt;
+         &lt;/tr&gt;
+         &lt;tr&gt;
+           &lt;td&gt;Password&lt;/td&gt;
+           &lt;td&gt;&lt;h:inputSecret value="#{user.password}"/&gt;&lt;/td&gt;
+         &lt;/tr&gt;
+       &lt;/s:validateAll&gt;
+     &lt;/table&gt;
+     &lt;h:messages/&gt;
+     &lt;h:commandButton type="submit" value="Register" action="#{register.register}"/&gt;
+   &lt;/h:form&gt;
+  &lt;/f:view&gt;
+ &lt;/body&gt;
+&lt;/html&gt;
+</pre></div><h6>Example 2.5. </h6></div><br class="example-break" /><div class="para">
+					The only thing here that is specific to Seam is the <code class="literal">&lt;s:validateAll&gt;</code> tag. This JSF component tells JSF to validate all the contained input fields against the Hibernate Validator annotations specified on the entity bean.
+				</div><div class="example" id="id2686016"><div class="example-contents"><pre class="programlisting">&lt;%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %&gt;
+&lt;%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %&gt;
+&lt;html&gt;
+ &lt;head&gt;
+  &lt;title&gt;Successfully Registered New User&lt;/title&gt;
+ &lt;/head&gt;
+ &lt;body&gt;
+  &lt;f:view&gt;
+    Welcome, &lt;h:outputText value="#{user.name}"/&gt;, 
+    you are successfully registered as &lt;h:outputText value="#{user.username}"/&gt;.
+  &lt;/f:view&gt;
+ &lt;/body&gt;
+&lt;/html&gt;
+</pre></div><h6>Example 2.6. </h6></div><br class="example-break" /><div class="para">
+					This is a boring old JSP pages using standard JSF components. There is nothing specific to Seam here.
+				</div></div><div class="section" title="2.2.1.10. The EAR deployment descriptor: application.xml"><div class="titlepage"><div><div><h4 class="title" id="Seam_Reference_Guide-Understanding_the_code-The_EAR_deployment_descriptor_application.xml">2.2.1.10. The EAR deployment descriptor: <code class="literal">application.xml</code></h4></div></div></div><div class="para">
+					Finally, since our application is deployed as an EAR, we need a deployment descriptor there, too.
+				</div><div class="example" id="id2686062"><div class="example-contents"><pre class="programlisting">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;application xmlns="http://java.sun.com/xml/ns/javaee" 
+             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+             xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
+                                   http://java.sun.com/xml/ns/javaee/application_5.xsd"
+             version="5"&gt;
+             
+    &lt;display-name&gt;Seam Registration&lt;/display-name&gt;
+
+    &lt;module&gt;
+        &lt;web&gt;
+            &lt;web-uri&gt;jboss-seam-registration.war&lt;/web-uri&gt;
+            &lt;context-root&gt;/seam-registration&lt;/context-root&gt;
+        &lt;/web&gt;
+    &lt;/module&gt;
+    &lt;module&gt;
+        &lt;ejb&gt;jboss-seam-registration.jar&lt;/ejb&gt;
+    &lt;/module&gt;
+    &lt;module&gt;
+        &lt;java&gt;jboss-seam.jar&lt;/java&gt;
+    &lt;/module&gt;
+    &lt;module&gt;
+        &lt;java&gt;el-ri.jar&lt;/java&gt;
+    &lt;/module&gt;
+    
+&lt;/application&gt;
+</pre></div><h6>Example 2.7. </h6></div><br class="example-break" /><div class="para">
+					This deployment descriptor links modules in the enterprise archive and binds the web application to the context root <code class="literal">/seam-registration</code>.
+				</div></div></div><div class="section" title="2.2.2. How it works"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Your_first_Seam_application_the_registration_example-How_it_works">2.2.2. How it works</h3></div></div></div><div class="para">
+				When the form is submitted, JSF asks Seam to resolve the variable named <code class="literal">user</code>. Since there is no value already bound to that name (in any Seam context), Seam instantiates the <code class="literal">user</code> component, and returns the resulting <code class="literal">User</code> entity bean instance to JSF after storing it in the Seam session context.
+			</div><div class="para">
+				The form input values are now validated against the Hibernate Validator constraints specified on the <code class="literal">User</code> entity. If the constraints are violated, JSF redisplays the page. Otherwise, JSF binds the form input values to properties of the <code class="literal">User</code> entity bean.
+			</div><div class="para">
+				Next, JSF asks Seam to resolve the variable named <code class="literal">register</code>. Seam finds the <code class="literal">RegisterAction</code> stateless session bean in the stateless context and returns it. JSF invokes the <code class="literal">register()</code> action listener method.
+			</div><div class="para">
+				Seam intercepts the method call and injects the <code class="literal">User</code> entity from the Seam session context, before continuing the invocation.
+			</div><div class="para">
+				The <code class="literal">register()</code> method checks if a user with the entered username already exists. If so, an error message is queued with the <code class="literal">FacesMessages</code> component, and a null outcome is returned, causing a page redisplay. The <code class="literal">FacesMessages</code> component interpolates the JSF expression embedded in the message string and adds a JSF <code class="literal">FacesMessage</code> to the view.
+			</div><div class="para">
+				If no user with that username exists, the <code class="literal">"/registered.jsp"</code> outcome triggers a browser redirect to the <code class="literal">registered.jsp</code> page. When JSF comes to render the page, it asks Seam to resolve the variable named <code class="literal">user</code> and uses property values of the returned <code class="literal">User</code> entity from Seam's session scope.
+			</div></div></div><div class="section" title="2.3. Clickable lists in Seam: the messages example"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_Tutorial-Clickable_lists_in_Seam_the_messages_example">2.3. Clickable lists in Seam: the messages example</h2></div></div></div><div class="para">
+			Clickable lists of database search results are such an important part of any online application that Seam provides special functionality on top of JSF to make it easier to query data using EJB-QL or HQL and display it as a clickable list using a JSF <code class="literal">&lt;h:dataTable&gt;</code>. The messages example demonstrates this functionality.
+		</div><div class="mediaobject" align="center"><img src="images/messages.png" align="middle" width="444" /></div><div class="section" title="2.3.1. Understanding the code"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Clickable_lists_in_Seam_the_messages_example-Understanding_the_code">2.3.1. Understanding the code</h3></div></div></div><div class="para">
+				The message list example has one entity bean, <code class="literal">Message</code>, one session bean, <code class="literal">MessageListBean</code> and one JSP.
+			</div><div class="section" title="2.3.1.1. The entity bean: Message.java"><div class="titlepage"><div><div><h4 class="title" id="Seam_Reference_Guide-Understanding_the_code-The_entity_bean_Message.java">2.3.1.1. The entity bean: <code class="literal">Message.java</code></h4></div></div></div><div class="para">
+					The <code class="literal">Message</code> entity defines the title, text, date and time of a message, and a flag indicating whether the message has been read:
+				</div><pre class="programlisting">@Entity
+ at Name("message")
+ at Scope(EVENT)
+public class Message implements Serializable
+{
+   private Long id;
+   private String title;
+   private String text;
+   private boolean read;
+   private Date datetime;
+   
+   @Id @GeneratedValue
+   public Long getId() {
+      return id;
+   }
+   public void setId(Long id) {
+      this.id = id;
+   }
+   
+   @NotNull @Length(max=100)
+   public String getTitle() {
+      return title;
+   }
+   public void setTitle(String title) {
+      this.title = title;
+   }
+   
+   @NotNull @Lob
+   public String getText() {
+      return text;
+   }
+   public void setText(String text) {
+      this.text = text;
+   }
+   
+   @NotNull
+   public boolean isRead() {
+      return read;
+   }
+   public void setRead(boolean read) {
+      this.read = read;
+   }
+   
+   @NotNull 
+   @Basic @Temporal(TemporalType.TIMESTAMP)
+   public Date getDatetime() {
+      return datetime;
+   }
+   public void setDatetime(Date datetime) {
+      this.datetime = datetime;
+   }
+   
+}
+</pre></div><div class="section" title="2.3.1.2. The stateful session bean: MessageManagerBean.java"><div class="titlepage"><div><div><h4 class="title" id="Seam_Reference_Guide-Understanding_the_code-The_stateful_session_bean_MessageManagerBean.java">2.3.1.2. The stateful session bean: <code class="literal">MessageManagerBean.java</code></h4></div></div></div><div class="para">
+					Just like in the previous example, we have a session bean, <code class="literal">MessageManagerBean</code>, which defines the action listener methods for the two buttons on our form. One of the buttons selects a message from the list, and displays that message. The other button deletes a message. So far, this is not so different to the previous example.
+				</div><div class="para">
+					But <code class="literal">MessageManagerBean</code> is also responsible for fetching the list of messages the first time we navigate to the message list page. There are various ways the user could navigate to the page, and not all of them are preceded by a JSF action—the user might have bookmarked the page, for example. So the job of fetching the message list takes place in a Seam <span class="emphasis"><em>factory method</em></span>, instead of in an action listener method.
+				</div><div class="para">
+					We want to cache the list of messages in memory between server requests, so we will make this a stateful session bean.
+				</div><pre class="programlisting">@Stateful
+ at Scope(SESSION)
+ at Name("messageManager")
+public class MessageManagerBean implements Serializable, MessageManager
+{
+
+   @DataModel
+   private List&lt;Message&gt; messageList;
+   
+   @DataModelSelection
+   @Out(required=false)
+   private Message message;
+   
+   @PersistenceContext(type=EXTENDED)
+   private EntityManager em;
+   
+   @Factory("messageList")
+   public void findMessages()
+   {
+      messageList = em.createQuery("from Message msg order by msg.datetime desc").getResultList();
+   }
+   
+   public void select()
+   {
+      message.setRead(true);
+   }
+   
+   public void delete()
+   {
+      messageList.remove(message);
+      em.remove(message);
+      message=null;
+   }
+   
+   @Remove @Destroy
+   public void destroy() {}
+
+}
+</pre><div class="orderedlist"><ol><li class="listitem"><div class="para">
+							The <code class="literal">@DataModel</code> annotation exposes an attibute of type <code class="literal">java.util.List</code> to the JSF page as an instance of <code class="literal">javax.faces.model.DataModel</code>. This allows us to use the list in a JSF <code class="literal">&lt;h:dataTable&gt;</code> with clickable links for each row. In this case, the <code class="literal">DataModel</code> is made available in a session context variable named <code class="literal">messageList</code>.
+						</div></li><li class="listitem"><div class="para">
+							The <code class="literal">@DataModelSelection</code> annotation tells Seam to inject the <code class="literal">List</code> element that corresponded to the clicked link.
+						</div></li><li class="listitem"><div class="para">
+							The <code class="literal">@Out</code> annotation then exposes the selected value directly to the page. So every time a row of the clickable list is selected, the <code class="literal">Message</code> is injected to the attribute of the stateful bean, and the subsequently <span class="emphasis"><em>outjected</em></span> to the event context variable named <code class="literal">message</code>.
+						</div></li><li class="listitem"><div class="para">
+							This stateful bean has an EJB3 <span class="emphasis"><em>extended persistence context</em></span>. The messages retrieved in the query remain in the managed state as long as the bean exists, so any subsequent method calls to the stateful bean can update them without needing to make any explicit call to the <code class="literal">EntityManager</code>.
+						</div></li><li class="listitem"><div class="para">
+							The first time we navigate to the JSP page, there will be no value in the <code class="literal">messageList</code> context variable. The <code class="literal">@Factory</code> annotation tells Seam to create an instance of <code class="literal">MessageManagerBean</code> and invoke the <code class="literal">findMessages()</code> method to initialize the value. We call <code class="literal">findMessages()</code> a <span class="emphasis"><em>factory method</em></span> for <code class="literal">messages</code>.
+						</div></li><li class="listitem"><div class="para">
+							The <code class="literal">select()</code> action listener method marks the selected <code class="literal">Message</code> as read, and updates it in the database.
+						</div></li><li class="listitem"><div class="para">
+							The <code class="literal">delete()</code> action listener method removes the selected <code class="literal">Message</code> from the database.
+						</div></li><li class="listitem"><div class="para">
+							All stateful session bean Seam components <span class="emphasis"><em>must</em></span> have a method marked <code class="literal">@Remove @Destroy</code> to ensure that Seam will remove the stateful bean when the Seam context ends, and clean up any server-side state.
+						</div></li></ol></div><div class="para">
+					Note that this is a session-scoped Seam component. It is associated with the user login session, and all requests from a login session share the same instance of the component. (In Seam applications, we usually use session-scoped components sparingly.)
+				</div></div><div class="section" title="2.3.1.3. The session bean local interface: MessageManager.java"><div class="titlepage"><div><div><h4 class="title" id="Seam_Reference_Guide-Understanding_the_code-The_session_bean_local_interface_MessageManager.java">2.3.1.3. The session bean local interface: <code class="literal">MessageManager.java</code></h4></div></div></div><div class="para">
+					All session beans have a business interface, of course.
+				</div><pre class="programlisting">@Local
+public interface MessageManager
+{
+   public void findMessages();
+   public void select();
+   public void delete();
+   public void destroy();
+}
+</pre><div class="para">
+					From now on, we will not show local interfaces in our code examples.
+				</div><div class="para">
+					Let us skip over <code class="literal">components.xml</code>, <code class="literal">persistence.xml</code>, <code class="literal">web.xml</code>, <code class="literal">ejb-jar.xml</code>, <code class="literal">faces-config.xml</code> and <code class="literal">application.xml</code> since they are much the same as the previous example, and go straight to the JSP.
+				</div></div><div class="section" title="2.3.1.4. The view: messages.jsp"><div class="titlepage"><div><div><h4 class="title" id="Seam_Reference_Guide-Understanding_the_code-The_view_messages.jsp">2.3.1.4. The view: <code class="literal">messages.jsp</code></h4></div></div></div><div class="para">
+					The JSP page is a straightforward use of the JSF <code class="literal">&lt;h:dataTable&gt;</code> component. Again, nothing specific to Seam.
+				</div><div class="example" id="id2726958"><div class="example-contents"><pre class="programlisting">&lt;%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %&gt;
+&lt;%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %&gt;
+&lt;html&gt;
+ &lt;head&gt;
+  &lt;title&gt;Messages&lt;/title&gt;
+ &lt;/head&gt;
+ &lt;body&gt;
+  &lt;f:view&gt;
+   &lt;h:form&gt;
+     &lt;h2&gt;Message List&lt;/h2&gt;
+     &lt;h:outputText value="No messages to display" rendered="#{messageList.rowCount==0}"/&gt;
+     &lt;h:dataTable var="msg" value="#{messageList}" rendered="#{messageList.rowCount&gt;0}"&gt;
+        &lt;h:column&gt;
+           &lt;f:facet name="header"&gt;
+              &lt;h:outputText value="Read"/&gt;
+           &lt;/f:facet&gt;
+           &lt;h:selectBooleanCheckbox value="#{msg.read}" disabled="true"/&gt;
+        &lt;/h:column&gt;
+        &lt;h:column&gt;
+           &lt;f:facet name="header"&gt;
+              &lt;h:outputText value="Title"/&gt;
+           &lt;/f:facet&gt;
+           &lt;h:commandLink value="#{msg.title}" action="#{messageManager.select}"/&gt;
+        &lt;/h:column&gt;
+        &lt;h:column&gt;
+           &lt;f:facet name="header"&gt;
+              &lt;h:outputText value="Date/Time"/&gt;
+           &lt;/f:facet&gt;
+           &lt;h:outputText value="#{msg.datetime}"&gt;
+              &lt;f:convertDateTime type="both" dateStyle="medium" timeStyle="short"/&gt;
+           &lt;/h:outputText&gt;
+        &lt;/h:column&gt;
+        &lt;h:column&gt;
+           &lt;h:commandButton value="Delete" action="#{messageManager.delete}"/&gt;
+        &lt;/h:column&gt;
+     &lt;/h:dataTable&gt;
+     &lt;h3&gt;&lt;h:outputText value="#{message.title}"/&gt;&lt;/h3&gt;
+     &lt;div&gt;&lt;h:outputText value="#{message.text}"/&gt;&lt;/div&gt;
+   &lt;/h:form&gt;
+  &lt;/f:view&gt;
+ &lt;/body&gt;
+&lt;/html&gt;
+</pre></div><h6>Example 2.8. </h6></div><br class="example-break" /></div></div><div class="section" title="2.3.2. How it works"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Clickable_lists_in_Seam_the_messages_example-How_it_works">2.3.2. How it works</h3></div></div></div><div class="para">
+				The first time we navigate to the <code class="literal">messages.jsp</code> page, whether by a JSF postback (faces request) or a direct browser GET request (non-faces request), the page will try to resolve the <code class="literal">messageList</code> context variable. Since this context variable is not initialized, Seam will call the factory method <code class="literal">findMessages()</code>, which performs a query against the database and results in a <code class="literal">DataModel</code> being outjected. This <code class="literal">DataModel</code> provides the row data needed for rendering the <code class="literal">&lt;h:dataTable&gt;</code>.
+			</div><div class="para">
+				When the user clicks the <code class="literal">&lt;h:commandLink&gt;</code>, JSF calls the <code class="literal">select()</code> action listener. Seam intercepts this call and injects the selected row data into the <code class="literal">message</code> attribute of the <code class="literal">messageManager</code> component. The action listener fires, marking the selected <code class="literal">Message</code> as read. At the end of the call, Seam outjects the selected <code class="literal">Message</code> to the context variable named <code class="literal">message</code>. Next, the EJB container commits the transaction, and the change to the <code class="literal">Message</code> is flushed to the database. Finally, the page is re-rendered, redisplaying the message list, and displaying the selected message below it.
+			</div><div class="para">
+				If the user clicks the <code class="literal">&lt;h:commandButton&gt;</code>, JSF calls the <code class="literal">delete()</code> action listener. Seam intercepts this call and injects the selected row data into the <code class="literal">message</code> attribute of the <code class="literal">messageList</code> component. The action listener fires, removing the selected <code class="literal">Message</code> from the list, and also calling <code class="literal">remove()</code> on the <code class="literal">EntityManager</code>. At the end of the call, Seam refreshes the <code class="literal">messageList</code> context variable and clears the context variable named <code class="literal">message</code>. The EJB container commits the transaction, and deletes the <code class="literal">Message</code> from the database. Finally, the page is re-rendered, redisplaying the message list.
+			</div></div></div><div class="section" title="2.4. Seam and jBPM: the todo list example"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_Tutorial-Seam_and_jBPM_the_todo_list_example">2.4. Seam and jBPM: the todo list example</h2></div></div></div><div class="para">
+			jBPM provides sophisticated functionality for workflow and task management. To get a small taste of how jBPM integrates with Seam, we will show you a simple <span class="emphasis"><em>todo list</em></span> application. Since managing lists of tasks is such core functionality for jBPM, there is hardly any Java code at all in this example.
+		</div><div class="mediaobject" align="center"><img src="images/todo.png" align="middle" width="444" /></div><div class="section" title="2.4.1. Understanding the code"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Seam_and_jBPM_the_todo_list_example-Understanding_the_code">2.4.1. Understanding the code</h3></div></div></div><div class="para">
+				The center of this example is the jBPM process definition. There are also two JSPs and two trivial JavaBeans (There was no reason to use session beans, since they do not access the database, or have any other transactional behavior). Let us start with the process definition:
+			</div><pre class="programlisting">&lt;process-definition name="todo"&gt;
+   
+   &lt;start-state name="start"&gt;
+      &lt;transition to="todo"/&gt;
+   &lt;/start-state&gt;
+   
+   &lt;task-node name="todo"&gt;
+      &lt;task name="todo" description="#{todoList.description}"&gt;
+         &lt;assignment actor-id="#{actor.id}"/&gt;
+      &lt;/task&gt;
+      &lt;transition to="done"/&gt;
+   &lt;/task-node&gt;
+   
+   &lt;end-state name="done"/&gt;
+   
+&lt;/process-definition&gt;
+</pre><div class="orderedlist"><ol><li class="listitem"><div class="para">
+						The <code class="literal">&lt;start-state&gt;</code> node represents the logical start of the process. When the process starts, it immediately transitions to the <code class="literal">todo</code> node.
+					</div></li><li class="listitem"><div class="para">
+						The <code class="literal">&lt;task-node&gt;</code> node represents a <span class="emphasis"><em>wait state</em></span>, where business process execution pauses, waiting for one or more tasks to be performed.
+					</div></li><li class="listitem"><div class="para">
+						The <code class="literal">&lt;task&gt;</code> element defines a task to be performed by a user. Since there is only one task defined on this node, when it is complete, execution resumes, and we transition to the end state. The task gets its description from a Seam component named <code class="literal">todoList</code> (one of the JavaBeans).
+					</div></li><li class="listitem"><div class="para">
+						Tasks need to be assigned to a user or group of users when they are created. In this case, the task is assigned to the current user, which we get from a built-in Seam component named <code class="literal">actor</code>. Any Seam component may be used to perform task assignment.
+					</div></li><li class="listitem"><div class="para">
+						The <code class="literal">&lt;end-state&gt;</code> node defines the logical end of the business process. When execution reaches this node, the process instance is destroyed.
+					</div></li></ol></div><div class="para">
+				If we view this process definition using the process definition editor provided by JBossIDE, this is what it looks like:
+			</div><div class="mediaobject" align="center"><img src="images/todo-process.png" align="middle" /></div><div class="para">
+				This document defines our <span class="emphasis"><em>business process</em></span> as a graph of nodes. This is the most trivial possible business process: there is one <span class="emphasis"><em>task</em></span> to be performed, and when that task is complete, the business process ends.
+			</div><div class="para">
+				The first JavaBean handles the login screen <code class="literal">login.jsp</code>. Its job is just to initialize the jBPM actor id using the <code class="literal">actor</code> component. (In a real application, it would also need to authenticate the user.)
+			</div><div class="example" id="id2727389"><div class="example-contents"><pre class="programlisting">@Name("login")
+public class Login {
+   
+   @In
+   private Actor actor;
+   
+   private String user;
+
+   public String getUser() {
+      return user;
+   }
+
+   public void setUser(String user) {
+      this.user = user;
+   }
+   
+   public String login()
+   {
+      actor.setId(user);
+      return "/todo.jsp";
+   }
+}
+</pre></div><h6>Example 2.9. </h6></div><br class="example-break" /><div class="para">
+				Here we see the use of <code class="literal">@In</code> to inject the built-in <code class="literal">Actor</code> component.
+			</div><div class="para">
+				The JSP itself is trivial:
+			</div><div class="example" id="id2830537"><div class="example-contents"><pre class="programlisting">&lt;%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%&gt;
+&lt;%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;title&gt;Login&lt;/title&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;h1&gt;Login&lt;/h1&gt;
+&lt;f:view&gt;
+    &lt;h:form&gt;
+      &lt;div&gt;
+        &lt;h:inputText value="#{login.user}"/&gt;
+        &lt;h:commandButton value="Login" action="#{login.login}"/&gt;
+      &lt;/div&gt;
+    &lt;/h:form&gt;
+&lt;/f:view&gt;
+&lt;/body&gt;
+&lt;/html&gt;
+</pre></div><h6>Example 2.10. </h6></div><br class="example-break" /><div class="para">
+				The second JavaBean is responsible for starting business process instances, and ending tasks.
+			</div><div class="example" id="id2830560"><div class="example-contents"><pre class="programlisting">@Name("todoList")
+public class TodoList {
+   
+   private String description;
+   
+   public String getDescription()
+   {
+      return description;
+   }
+
+   public void setDescription(String description) {
+      this.description = description;
+   }
+   
+   @CreateProcess(definition="todo")
+   public void createTodo() {}
+   
+   @StartTask @EndTask
+   public void done() {}
+
+}
+</pre><div class="orderedlist"><ol><li class="listitem"><div class="para">
+							The description property accepts user input form the JSP page, and exposes it to the process definition, allowing the task description to be set.
+						</div></li><li class="listitem"><div class="para">
+							The Seam <code class="literal">@CreateProcess</code> annotation creates a new jBPM process instance for the named process definition.
+						</div></li><li class="listitem"><div class="para">
+							The Seam <code class="literal">@StartTask</code> annotation starts work on a task. The <code class="literal">@EndTask</code> ends the task, and allows the business process execution to resume.
+						</div></li></ol></div></div><h6>Example 2.11. </h6></div><br class="example-break" /><div class="para">
+				In a more realistic example, <code class="literal">@StartTask</code> and <code class="literal">@EndTask</code> would not appear on the same method, because there is usually work to be done using the application in order to complete the task.
+			</div><div class="para">
+				Finally, the meat of the application is in <code class="literal">todo.jsp</code>:
+			</div><div class="example" id="id2830653"><div class="example-contents"><pre class="programlisting">&lt;%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %&gt;
+&lt;%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %&gt;
+&lt;%@ taglib uri="http://jboss.com/products/seam/taglib" prefix="s" %&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;title&gt;Todo List&lt;/title&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;h1&gt;Todo List&lt;/h1&gt;
+&lt;f:view&gt;
+   &lt;h:form id="list"&gt;
+      &lt;div&gt;
+         &lt;h:outputText value="There are no todo items." rendered="#{empty 
+                                       taskInstanceList}"/&gt;
+         &lt;h:dataTable value="#{taskInstanceList}" var="task" rendered="#{not empty 
+                                       taskInstanceList}"&gt;
+            &lt;h:column&gt;
+                &lt;f:facet name="header"&gt;
+                    &lt;h:outputText value="Description"/&gt;
+                &lt;/f:facet&gt;
+                &lt;h:inputText value="#{task.description}"/&gt;
+            &lt;/h:column&gt;
+            &lt;h:column&gt;
+                &lt;f:facet name="header"&gt;
+                    &lt;h:outputText value="Created"/&gt;
+                &lt;/f:facet&gt;
+                &lt;h:outputText value="#{task.taskMgmtInstance.processInstance.start}"&gt;
+                    &lt;f:convertDateTime type="date"/&gt;
+                &lt;/h:outputText&gt;
+            &lt;/h:column&gt;
+            &lt;h:column&gt;
+                &lt;f:facet name="header"&gt;
+                    &lt;h:outputText value="Priority"/&gt;
+                &lt;/f:facet&gt;
+                &lt;h:inputText value="#{task.priority}" style="width: 30"/&gt;
+            &lt;/h:column&gt;
+            &lt;h:column&gt;
+                &lt;f:facet name="header"&gt;
+                    &lt;h:outputText value="Due Date"/&gt;
+                &lt;/f:facet&gt;
+                &lt;h:inputText value="#{task.dueDate}" style="width: 100"&gt;
+                    &lt;f:convertDateTime type="date" dateStyle="short"/&gt;
+                &lt;/h:inputText&gt;
+            &lt;/h:column&gt;
+            &lt;h:column&gt;
+                &lt;s:button value="Done" action="#{todoList.done}" taskInstance="#{task}"/&gt;
+            &lt;/h:column&gt;
+         &lt;/h:dataTable&gt;
+      &lt;/div&gt;
+      &lt;div&gt;
+      &lt;h:messages/&gt;
+      &lt;/div&gt;
+      &lt;div&gt;
+         &lt;h:commandButton value="Update Items" action="update"/&gt;
+      &lt;/div&gt;
+   &lt;/h:form&gt;
+   &lt;h:form id="new"&gt;
+      &lt;div&gt;
+         &lt;h:inputText value="#{todoList.description}"/&gt;
+         &lt;h:commandButton value="Create New Item" action="#{todoList.createTodo}"/&gt;
+      &lt;/div&gt;
+   &lt;/h:form&gt;
+&lt;/f:view&gt;
+&lt;/body&gt;
+&lt;/html&gt;
+</pre></div><h6>Example 2.12. </h6></div><br class="example-break" /><div class="para">
+				Let us take this one piece at a time.
+			</div><div class="para">
+				The page renders a list of tasks, which it gets from a built-in Seam component named <code class="literal">taskInstanceList</code>. The list is defined inside a JSF form.
+			</div><pre class="programlisting">&lt;h:form id="list"&gt;
+   &lt;div&gt;
+      &lt;h:outputText value="There are no todo items." rendered="#{empty taskInstanceList}"/&gt;
+      &lt;h:dataTable value="#{taskInstanceList}" var="task" rendered="#{not empty taskInstanceList}"&gt;
+         ...
+      &lt;/h:dataTable&gt;
+   &lt;/div&gt;
+&lt;/h:form&gt;
+</pre><div class="para">
+				Each element of the list is an instance of the jBPM class <code class="literal">TaskInstance</code>. The following code simply displays the interesting properties of each task in the list. For the description, priority and due date, we use input controls, to allow the user to update these values.
+			</div><pre class="programlisting">&lt;h:column&gt;
+    &lt;f:facet name="header"&gt;
+       &lt;h:outputText value="Description"/&gt;
+    &lt;/f:facet&gt;
+    &lt;h:inputText value="#{task.description}"/&gt;
+&lt;/h:column&gt;
+&lt;h:column&gt;
+    &lt;f:facet name="header"&gt;
+        &lt;h:outputText value="Created"/&gt;
+    &lt;/f:facet&gt;
+    &lt;h:outputText value="#{task.taskMgmtInstance.processInstance.start}"&gt;
+        &lt;f:convertDateTime type="date"/&gt;
+    &lt;/h:outputText&gt;
+&lt;/h:column&gt;
+&lt;h:column&gt;
+    &lt;f:facet name="header"&gt;
+        &lt;h:outputText value="Priority"/&gt;
+    &lt;/f:facet&gt;
+    &lt;h:inputText value="#{task.priority}" style="width: 30"/&gt;
+&lt;/h:column&gt;
+&lt;h:column&gt;
+    &lt;f:facet name="header"&gt;
+        &lt;h:outputText value="Due Date"/&gt;
+    &lt;/f:facet&gt;
+    &lt;h:inputText value="#{task.dueDate}" style="width: 100"&gt;
+        &lt;f:convertDateTime type="date" dateStyle="short"/&gt;
+    &lt;/h:inputText&gt;
+&lt;/h:column&gt;
+</pre><div class="para">
+				This button ends the task by calling the action method annotated <code class="literal">@StartTask @EndTask</code>. It passes the task id to Seam as a request parameter:
+			</div><pre class="programlisting">&lt;h:column&gt;
+    &lt;s:button value="Done" action="#{todoList.done}" taskInstance="#{task}"/&gt;
+&lt;/h:column&gt;
+</pre><div class="para">
+				(Note that this is using a Seam <code class="literal">&lt;s:button&gt;</code> JSF control from the <code class="literal">seam-ui.jar</code> package.)
+			</div><div class="para">
+				This button is used to update the properties of the tasks. When the form is submitted, Seam and jBPM will make any changes to the tasks persistent. There is no need for any action listener method:
+			</div><pre class="programlisting">&lt;h:commandButton value="Update Items" action="update"/&gt;
+</pre><div class="para">
+				A second form on the page is used to create new items, by calling the action method annotated <code class="literal">@CreateProcess</code>.
+			</div><pre class="programlisting">&lt;h:form id="new"&gt;
+    &lt;div&gt;
+        &lt;h:inputText value="#{todoList.description}"/&gt;
+        &lt;h:commandButton value="Create New Item" action="#{todoList.createTodo}"/&gt;
+    &lt;/div&gt;
+&lt;/h:form&gt;
+</pre><div class="para">
+				There are several other files needed for the example, but they are just standard jBPM and Seam configuration and not very interesting.
+			</div></div></div><div class="section" title="2.5. Seam pageflow: the numberguess example"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_Tutorial-Seam_pageflow_the_numberguess_example">2.5. Seam pageflow: the numberguess example</h2></div></div></div><div class="para">
+			For Seam applications with relatively freeform (ad hoc) navigation, JSF/Seam navigation rules are a perfectly good way to define the page flow. For applications with a more constrained style of navigation, especially for user interfaces which are more stateful, navigation rules make it difficult to really understand the flow of the system. To understand the flow, you need to piece it together from the view pages, the actions and the navigation rules.
+		</div><div class="para">
+			Seam allows you to use a jPDL process definition to define pageflow. The simple number guessing example shows how this is done.
+		</div><div class="mediaobject" align="center"><img src="images/numberguess.png" align="middle" width="444" /></div><div class="section" title="2.5.1. Understanding the code"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Seam_pageflow_the_numberguess_example-Understanding_the_code">2.5.1. Understanding the code</h3></div></div></div><div class="para">
+				The example is implemented using one JavaBean, three JSP pages and a jPDL pageflow definition. Let us begin with the pageflow:
+			</div><pre class="programlisting">&lt;pageflow-definition name="numberGuess"&gt;
+   
+   &lt;start-page name="displayGuess" view-id="/numberGuess.jsp"&gt;
+      &lt;redirect/&gt;
+      &lt;transition name="guess" to="evaluateGuess"&gt;
+          &lt;action expression="#{numberGuess.guess}" /&gt;
+      &lt;/transition&gt;
+   &lt;/start-page&gt;
+   
+   &lt;decision name="evaluateGuess" expression="#{numberGuess.correctGuess}"&gt;
+      &lt;transition name="true" to="win"/&gt;
+      &lt;transition name="false" to="evaluateRemainingGuesses"/&gt;
+   &lt;/decision&gt;
+   
+   &lt;decision name="evaluateRemainingGuesses" expression="#{numberGuess.lastGuess}"&gt;
+      &lt;transition name="true" to="lose"/&gt;
+      &lt;transition name="false" to="displayGuess"/&gt;
+   &lt;/decision&gt;
+   
+   &lt;page name="win" view-id="/win.jsp"&gt;
+      &lt;redirect/&gt;
+      &lt;end-conversation /&gt;
+   &lt;/page&gt;
+   
+   &lt;page name="lose" view-id="/lose.jsp"&gt;
+      &lt;redirect/&gt;
+      &lt;end-conversation /&gt;
+   &lt;/page&gt;
+   
+&lt;/pageflow-definition&gt;
+</pre><div class="orderedlist"><ol><li class="listitem"><div class="para">
+						The <code class="literal">&lt;page&gt;</code> element defines a wait state where the system displays a particular JSF view and waits for user input. The <code class="literal">view-id</code> is the same JSF view id used in plain JSF navigation rules. The <code class="literal">redirect</code> attribute tells Seam to use post-then-redirect when navigating to the page. (This results in friendly browser URLs.)
+					</div></li><li class="listitem"><div class="para">
+						The <code class="literal">&lt;transition&gt;</code> element names a JSF outcome. The transition is triggered when a JSF action results in that outcome. Execution will then proceed to the next node of the pageflow graph, after invocation of any jBPM transition actions.
+					</div></li><li class="listitem"><div class="para">
+						A transition <code class="literal">&lt;action&gt;</code> is just like a JSF action, except that it occurs when a jBPM transition occurs. The transition action can invoke any Seam component.
+					</div></li><li class="listitem"><div class="para">
+						A <code class="literal">&lt;decision&gt;</code> node branches the pageflow, and determines the next node to execute by evaluating a JSF EL expression.
+					</div></li></ol></div><div class="para">
+				Here is what the pageflow looks like in the JBossIDE pageflow editor:
+			</div><div class="mediaobject" align="center"><img src="images/numberguess-pageflow.png" align="middle" width="444" /></div><div class="para">
+				Now that we have seen the pageflow, it is very, very easy to understand the rest of the application!
+			</div><div class="para">
+				Here is the main page of the application, <code class="literal">numberGuess.jsp</code>:
+			</div><div class="example" id="id2833242"><div class="example-contents"><pre class="programlisting">&lt;%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%&gt;
+&lt;%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;title&gt;Guess a number...&lt;/title&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;h1&gt;Guess a number...&lt;/h1&gt;
+&lt;f:view&gt;
+    &lt;h:form&gt;
+        &lt;h:outputText value="Higher!" rendered="#{numberGuess.randomNumber&gt;numberGuess.currentGuess}" /&gt;
+        &lt;h:outputText value="Lower!" rendered="#{numberGuess.randomNumber&lt;numberGuess.currentGuess}" /&gt;
+        &lt;br /&gt;
+        I'm thinking of a number between &lt;h:outputText value="#{numberGuess.smallest}" /&gt; and 
+        &lt;h:outputText value="#{numberGuess.biggest}" /&gt;. You have 
+        &lt;h:outputText value="#{numberGuess.remainingGuesses}" /&gt; guesses.
+        &lt;br /&gt;
+        Your guess: 
+        &lt;h:inputText value="#{numberGuess.currentGuess}" id="guess" required="true"&gt;
+            &lt;f:validateLongRange
+                maximum="#{numberGuess.biggest}" 
+                minimum="#{numberGuess.smallest}"/&gt;
+        &lt;/h:inputText&gt;
+        &lt;h:commandButton type="submit" value="Guess" action="guess" /&gt;
+        &lt;br/&gt;
+        &lt;h:message for="guess" style="color: red"/&gt;
+    &lt;/h:form&gt;
+&lt;/f:view&gt;
+&lt;/body&gt;
+&lt;/html&gt;
+</pre></div><h6>Example 2.13. </h6></div><br class="example-break" /><div class="para">
+				Notice how the command button names the <code class="literal">guess</code> transition instead of calling an action directly.
+			</div><div class="para">
+				The <code class="literal">win.jsp</code> page is predictable:
+			</div><div class="example" id="id2833289"><div class="example-contents"><pre class="programlisting">&lt;%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%&gt;
+&lt;%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;title&gt;You won!&lt;/title&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;h1&gt;You won!&lt;/h1&gt;
+&lt;f:view&gt;
+    Yes, the answer was &lt;h:outputText value="#{numberGuess.currentGuess}" /&gt;.
+    It took you &lt;h:outputText value="#{numberGuess.guessCount}" /&gt; guesses.
+    Would you like to &lt;a href="numberGuess.seam"&gt;play again&lt;/a&gt;?
+  &lt;/f:view&gt;
+&lt;/body&gt;
+&lt;/html&gt;
+</pre></div><h6>Example 2.14. </h6></div><br class="example-break" /><div class="para">
+				As is <code class="literal">lose.jsp</code> (which I can not be bothered copy/pasting). Finally, the JavaBean Seam component:
+			</div><div class="example" id="id2833316"><div class="example-contents"><pre class="programlisting">@Name("numberGuess")
+ at Scope(ScopeType.CONVERSATION)
+public class NumberGuess {
+   
+   private int randomNumber;
+   private Integer currentGuess;
+   private int biggest;
+   private int smallest;
+   private int guessCount;
+   private int maxGuesses;
+   
+   @Create 
+   @Begin(pageflow="numberGuess")
+   public void begin()
+   {
+      randomNumber = new Random().nextInt(100);
+      guessCount = 0;
+      biggest = 100;
+      smallest = 1;
+   }
+   
+   public void setCurrentGuess(Integer guess)
+   {
+      this.currentGuess = guess;
+   }
+   
+   public Integer getCurrentGuess()
+   {
+      return currentGuess;
+   }
+   
+   public void guess()
+   {
+      if (currentGuess&gt;randomNumber)
+      {
+         biggest = currentGuess - 1;
+      }
+      if (currentGuess&lt;randomNumber)
+      {
+         smallest = currentGuess + 1;
+      }
+      guessCount ++;
+   }
+   
+   public boolean isCorrectGuess()
+   {
+      return currentGuess==randomNumber;
+   }
+   
+   public int getBiggest()
+   {
+      return biggest;
+   }
+   
+   public int getSmallest()
+   {
+      return smallest;
+   }
+   
+   public int getGuessCount()
+   {
+      return guessCount;
+   }
+   
+   public boolean isLastGuess()
+   {
+      return guessCount==maxGuesses;
+   }
+
+   public int getRemainingGuesses() {
+      return maxGuesses-guessCount;
+   }
+
+   public void setMaxGuesses(int maxGuesses) {
+      this.maxGuesses = maxGuesses;
+   }
+
+   public int getMaxGuesses() {
+      return maxGuesses;
+   }
+
+   public int getRandomNumber() {
+      return randomNumber;
+   }
+}
+</pre><div class="orderedlist"><ol><li class="listitem"><div class="para">
+							The first time a JSP page asks for a <code class="literal">numberGuess</code> component, Seam will create a new one for it, and the <code class="literal">@Create</code> method will be invoked, allowing the component to initialize itself.
+						</div></li><li class="listitem"><div class="para">
+							The <code class="literal">@Begin</code> annotation starts a Seam <span class="emphasis"><em>conversation</em></span> (much more about that later), and specifies the pageflow definition to use for the conversation's page flow.
+						</div></li></ol></div></div><h6>Example 2.15. </h6></div><br class="example-break" /><div class="para">
+				As you can see, this Seam component is pure business logic! It does not need to know anything at all about the user interaction flow. This makes the component potentially more reuseable.
+			</div></div></div><div class="section" title="2.6. A complete Seam application: the Hotel Booking example"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_Tutorial-A_complete_Seam_application_the_Hotel_Booking_example">2.6. A complete Seam application: the Hotel Booking example</h2></div></div></div><div class="section" title="2.6.1. Introduction"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-Introduction">2.6.1. Introduction</h3></div></div></div><div class="para">
+				The booking application is a complete hotel room reservation system incorporating the following features:
+			</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+						User registration
+					</div></li><li class="listitem"><div class="para">
+						Login
+					</div></li><li class="listitem"><div class="para">
+						Logout
+					</div></li><li class="listitem"><div class="para">
+						Set password
+					</div></li><li class="listitem"><div class="para">
+						Hotel search
+					</div></li><li class="listitem"><div class="para">
+						Hotel selection
+					</div></li><li class="listitem"><div class="para">
+						Room reservation
+					</div></li><li class="listitem"><div class="para">
+						Reservation confirmation
+					</div></li><li class="listitem"><div class="para">
+						Existing reservation list
+					</div></li></ul></div><div class="para">
+				<div class="figure" id="Booking_Image"><div class="figure-contents"><div class="mediaobject" align="center"><img src="images/booking.png" align="middle" width="444" alt="Booking Example" /></div></div><h6>Figure 2.1. Booking Example</h6></div><br class="figure-break" />
+			</div><div class="para">
+				The booking application uses JSF, EJB 3.0 and Seam, together with Facelets for the view. There is also a port of this application to JSF, Facelets, Seam, JavaBeans and Hibernate3.
+			</div><div class="para">
+				One of the things you will notice if you play with this application for long enough is that it is extremely <span class="emphasis"><em>robust</em></span>. You can play with back buttons and browser refresh and opening multiple windows and entering nonsensical data as much as you like and you will find it very difficult to make the application crash. You might think that we spent weeks testing and fixing bugs to achive this. Actually, this is not the case. Seam was designed to make it very straightforward to build robust web applications and a lot of robustness that you are probably used to having to code yourself comes naturally and automatically with Seam.
+			</div><div class="para">
+				As you browse the sourcecode of the example application, and learn how the application works, observe how the declarative state management and integrated validation has been used to achieve this robustness.
+			</div></div><div class="section" title="2.6.2. Overview of the booking example"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-Overview_of_the_booking_example">2.6.2. Overview of the booking example</h3></div></div></div><div class="para">
+				The project structure is identical to the previous one, to install and deploy this application, please refer to <a class="xref" href="#Seam_Reference_Guide-Seam_Tutorial-Try_the_examples" title="2.1. Try the examples">Section 2.1, “Try the examples”</a>. Once you have successfully started the application, you can access it by pointing your browser to <a href="http://localhost:8080/seam-booking/"><code class="literal">http://localhost:8080/seam-booking/</code></a>
+			</div><div class="para">
+				Just nine classes (plus six session beans local interfaces) where used to implement this application. Six session bean action listeners contain all the business logic for the listed features.
+			</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+						<code class="literal">BookingListAction</code> retrieves existing bookings for the currently logged in user.
+					</div></li><li class="listitem"><div class="para">
+						<code class="literal">ChangePasswordAction</code> updates the password of the currently logged in user.
+					</div></li><li class="listitem"><div class="para">
+						<code class="literal">HotelBookingAction</code> implements the core functionality of the application: hotel room searching, selection, booking and booking confirmation. This functionality is implemented as a <span class="emphasis"><em>conversation</em></span>, so this is the most interesting class in the application.
+					</div></li><li class="listitem"><div class="para">
+						<code class="literal">RegisterAction</code> registers a new system user.
+					</div></li></ul></div><div class="para">
+				Three entity beans implement the application's persistent domain model.
+			</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+						<code class="literal">Hotel</code> is an entity bean that represents a hotel
+					</div></li><li class="listitem"><div class="para">
+						<code class="literal">Booking</code> is an entity bean that represents an existing booking
+					</div></li><li class="listitem"><div class="para">
+						<code class="literal">User</code> is an entity bean to represents a user who can make hotel bookings
+					</div></li></ul></div></div><div class="section" title="2.6.3. Understanding Seam conversations"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-Understanding_Seam_conversations">2.6.3. Understanding Seam conversations</h3></div></div></div><div class="para">
+				We encourage you browse the sourcecode at your pleasure. In this tutorial we will concentrate upon one particular piece of functionality: hotel search, selection, booking and confirmation. From the point of view of the user, everything from selecting a hotel to confirming a booking is one continuous unit of work, a <span class="emphasis"><em>conversation</em></span>. Searching, however, is <span class="emphasis"><em>not</em></span> part of the conversation. The user can select multiple hotels from the same search results page, in different browser tabs.
+			</div><div class="para">
+				Most web application architectures have no first class construct to represent a conversation. This causes enormous problems managing state associated with the conversation. Usually, Java web applications use a combination of two techniques: first, some state is thrown into the <code class="literal">HttpSession</code>; second, persistable state is flushed to the database after every request, and reconstructed from the database at the beginning of each new request.
+			</div><div class="para">
+				Since the database is the least scalable tier, this often results in an utterly unacceptable lack of scalability. Added latency is also a problem, due to the extra traffic to and from the database on every request. To reduce this redundant traffic, Java applications often introduce a data (second-level) cache that keeps commonly accessed data between requests. This cache is necessarily inefficient, because invalidation is based upon an LRU policy instead of being based upon when the user has finished working with the data. Furthermore, because the cache is shared between many concurrent transactions, we have introduced a whole raft of problem's associated with keeping the cached state consistent with the database.
+			</div><div class="para">
+				Now consider the state held in the <code class="literal">HttpSession</code>. By very careful programming, we might be able to control the size of the session data. This is a lot more difficult than it sounds, since web browsers permit ad hoc non-linear navigation. But suppose we suddenly discover a system requirement that says that a user is allowed to have <span class="emphasis"><em>mutiple concurrent conversations</em></span>, halfway through the development of the system (this has happened to me). Developing mechanisms to isolate session state associated with different concurrent conversations, and incorporating failsafes to ensure that conversation state is destroyed when the user aborts one of the conversations by closing a browser window or tab can be tough. 
+			</div><div class="para">
+				Now there is a better way.
+			</div><div class="para">
+				Seam introduces the <span class="emphasis"><em>conversation context</em></span> as a first class construct. You can safely keep conversational state in this context, and be assured that it will have a well-defined lifecycle. Even better, you will not need to be continually pushing data back and forth between the application server and the database, since the conversation context is a natural cache of data that the user is currently working with.
+			</div><div class="para">
+				Usually, the components we keep in the conversation context are stateful session beans. (We can also keep entity beans and JavaBeans in the conversation context.) There is an ancient canard in the Java community that stateful session beans are a scalability killer. This may have been true in 1998 when WebFoobar 1.0 was released. It is no longer true today. Application servers like JBoss 4.0 have extremely sophisticated mechanisms for stateful session bean state replication. (For example, the JBoss EJB3 container performs fine-grained replication, replicating only those bean attribute values which actually changed.) Note that all the traditional technical arguments for why stateful beans are inefficient apply equally to the <code class="literal">HttpSession</code>, so the practice of shifting state from business tier stateful session bean components to the web session to try and improve performance is unbelievably misguided. It is certainly possible to write unscalable a!
 pplications using stateful session beans, by using stateful beans incorrectly, or by using them for the wrong thing. But that does not mean you should <span class="emphasis"><em>never</em></span> use them. Anyway, Seam guides you toward a safe usage model. 
+			</div><div class="para">
+				The booking example application shows how stateful components with different scopes can collaborate together to achieve complex behaviors. The main page of the booking application allows the user to search for hotels. The search results are kept in the Seam session scope. When the user navigates to one of these hotels, a conversation begins, and a conversation scoped component calls back to the session scoped component to retrieve the selected hotel.
+			</div><div class="para">
+				The booking example also demonstrates the use of Ajax4JSF to implement rich client behavior without the use of handwritten JavaScript.
+			</div><div class="para">
+				The search functionality is implemented using a session-scope stateful session bean, similar to the one we saw in the message list example above.
+			</div><pre class="programlisting">@Stateful
+ at Name("hotelSearch")
+ at Scope(ScopeType.SESSION)
+ at Restrict("#{identity.loggedIn}")
+public class HotelSearchingAction implements HotelSearching
+{
+   
+   @PersistenceContext
+   private EntityManager em;
+   
+   private String searchString;
+   private int pageSize = 10;
+   private int page;
+   
+   @DataModel
+   private List&lt;Hotel&gt; hotels;
+   
+   public String find()
+   {
+      page = 0;
+      queryHotels();   
+      return "main";
+   }
+
+   public String nextPage()
+   {
+      page++;
+      queryHotels();
+      return "main";
+   }
+      
+   private void queryHotels()
+   {
+      String searchPattern = searchString==null ? "%" : '%' + 
+         searchString.toLowerCase().replace('*', '%') + '%';
+      hotels = em.createQuery("select h from Hotel h where lower(h.name) like 
+        :search or lower(h.city) like :search 
+        or lower(h.zip) like :search or lower(h.address) like :search")
+            .setParameter("search", searchPattern)
+            .setMaxResults(pageSize)
+            .setFirstResult( page * pageSize )
+            .getResultList();
+   }
+   
+   public boolean isNextPageAvailable()
+   {
+      return hotels!=null &amp;&amp; hotels.size()==pageSize;
+   }
+   
+   public int getPageSize() {
+      return pageSize;
+   }
+
+   public void setPageSize(int pageSize) {
+      this.pageSize = pageSize;
+   }
+
+   public String getSearchString()
+   {
+      return searchString;
+   }
+
+   public void setSearchString(String searchString)
+   {
+      this.searchString = searchString;
+   }
+   
+   @Destroy @Remove
+   public void destroy() {}
+
+}
+</pre><div class="orderedlist"><ol><li class="listitem"><div class="para">
+						The EJB standard <code class="literal">@Stateful</code> annotation identifies this class as a stateful session bean. Stateful session beans are scoped to the conversation context by default.
+					</div></li><li class="listitem"><div class="para">
+						The <code class="literal">@Restrict</code> annotation applies a security restriction to the component. It restricts access to the component allowing only logged-in users. The security chapter explains more about security in Seam.
+					</div></li><li class="listitem"><div class="para">
+						The <code class="literal">@DataModel</code> annotation exposes a <code class="literal">List</code> as a JSF <code class="literal">ListDataModel</code>. This makes it easy to implement clickable lists for search screens. In this case, the list of hotels is exposed to the page as a <code class="literal">ListDataModel</code> in the conversation variable named <code class="literal">hotels</code>.
+					</div></li><li class="listitem"><div class="para">
+						The EJB standard <code class="literal">@Remove</code> annotation specifies that a stateful session bean should be removed and its state destroyed after invocation of the annotated method. In Seam, all stateful session beans should define a method marked <code class="literal">@Destroy @Remove</code>. This is the EJB remove method that will be called when Seam destroys the session context. Actually, the <code class="literal">@Destroy</code> annotation is of more general usefulness, since it can be used for any kind of cleanup that should happen when any Seam context ends. If you do not have an <code class="literal">@Destroy @Remove</code> method, state will leak and you will suffer performance problems.
+					</div></li></ol></div><div class="para">
+				The main page of the application is a Facelets page. Let us look at the fragment which relates to searching for hotels:
+			</div><pre class="programlisting">&lt;div class="section"&gt;
+&lt;h:form&gt;
+  
+  &lt;span class="errors"&gt;
+    &lt;h:messages globalOnly="true"/&gt;
+  &lt;/span&gt;
+    
+  &lt;h1&gt;Search Hotels&lt;/h1&gt;
+  &lt;fieldset&gt; 
+     &lt;h:inputText value="#{hotelSearch.searchString}" style="width: 165px;"&gt;
+        &lt;a:support event="onkeyup" actionListener="#{hotelSearch.find}" 
+                   reRender="searchResults" /&gt;
+     &lt;/h:inputText&gt;
+      
+     &lt;a:commandButton value="Find Hotels" action="#{hotelSearch.find}" 
+                      styleClass="button" reRender="searchResults"/&gt;
+      
+     &lt;a:status&gt;
+        &lt;f:facet name="start"&gt;
+           &lt;h:graphicImage value="/img/spinner.gif"/&gt;
+        &lt;/f:facet&gt;
+     &lt;/a:status&gt;
+     &lt;br/&gt;
+     &lt;h:outputLabel for="pageSize"&gt;Maximum results:&lt;/h:outputLabel&gt; 
+     &lt;h:selectOneMenu value="#{hotelSearch.pageSize}" id="pageSize"&gt;
+        &lt;f:selectItem itemLabel="5" itemValue="5"/&gt;
+        &lt;f:selectItem itemLabel="10" itemValue="10"/&gt;
+        &lt;f:selectItem itemLabel="20" itemValue="20"/&gt;
+     &lt;/h:selectOneMenu&gt;
+  &lt;/fieldset&gt;
+    
+&lt;/h:form&gt;
+&lt;/div&gt;
+
+&lt;a:outputPanel id="searchResults"&gt;
+  &lt;div class="section"&gt;
+  &lt;h:outputText value="No Hotels Found" 
+                rendered="#{hotels != null and hotels.rowCount==0}"/&gt;
+  &lt;h:dataTable value="#{hotels}" var="hot" rendered="#{hotels.rowCount&gt;0}"&gt;
+    &lt;h:column&gt;
+      &lt;f:facet name="header"&gt;Name&lt;/f:facet&gt;
+      #{hot.name}
+    &lt;/h:column&gt;
+    &lt;h:column&gt;
+      &lt;f:facet name="header"&gt;Address&lt;/f:facet&gt;
+      #{hot.address}
+    &lt;/h:column&gt;
+    &lt;h:column&gt;
+      &lt;f:facet name="header"&gt;City, State&lt;/f:facet&gt;
+      #{hot.city}, #{hot.state}, #{hot.country}
+    &lt;/h:column&gt; 
+    &lt;h:column&gt;
+      &lt;f:facet name="header"&gt;Zip&lt;/f:facet&gt;
+      #{hot.zip}
+    &lt;/h:column&gt;
+    &lt;h:column&gt;
+      &lt;f:facet name="header"&gt;Action&lt;/f:facet&gt;
+      &lt;s:link value="View Hotel" action="#{hotelBooking.selectHotel(hot)}"/&gt;
+    &lt;/h:column&gt;
+  &lt;/h:dataTable&gt;
+  &lt;s:link value="More results" action="#{hotelSearch.nextPage}" 
+          rendered="#{hotelSearch.nextPageAvailable}"/&gt;
+  &lt;/div&gt;
+&lt;/a:outputPanel&gt;
+</pre><div class="orderedlist"><ol><li class="listitem"><div class="para">
+						The Ajax4JSF <code class="literal">&lt;a:support&gt;</code> tag allows a JSF action event listener to be called by asynchronous <code class="literal">XMLHttpRequest</code> when a JavaScript event like <code class="literal">onkeyup</code> occurs. Even better, the <code class="literal">reRender</code> attribute lets us render a fragment of the JSF page and perform a partial page update when the asynchronous response is received.
+					</div></li><li class="listitem"><div class="para">
+						The Ajax4JSF <code class="literal">&lt;a:status&gt;</code> tag lets us display a cheesy annimated image while we wait for asynchronous requests to return.
+					</div></li><li class="listitem"><div class="para">
+						The Ajax4JSF <code class="literal">&lt;a:outputPanel&gt;</code> tag defines a region of the page which can be re-rendered by an asynchronous request.
+					</div></li><li class="listitem"><div class="para">
+						The Seam <code class="literal">&lt;s:link&gt;</code> tag lets us attach a JSF action listener to an ordinary (non-JavaScript) HTML link. The advantage of this over the standard JSF <code class="literal">&lt;h:commandLink&gt;</code> is that it preserves the operation of "open in new window" and "open in new tab". Also notice that we use a method binding with a parameter: <code class="literal">#{hotelBooking.selectHotel(hot)}</code>. This is not possible in the standard Unified EL, but Seam provides an extension to the EL that lets you use parameters on any method binding expression.
+					</div></li></ol></div><div class="para">
+				This page displays the search results dynamically as we type, and lets us choose a hotel and pass it to the <code class="literal">selectHotel()</code> method of the <code class="literal">HotelBookingAction</code>, which is where the <span class="emphasis"><em>really</em></span> interesting stuff is going to happen.
+			</div><div class="para">
+				Now lets see how the booking example application uses a conversation-scoped stateful session bean to achieve a natural cache of persistent data related to the conversation. The following code example is pretty long. But if you think of it as a list of scripted actions that implement the various steps of the conversation, it is understandable. Read the class from top to bottom, as if it were a story.
+			</div><pre class="programlisting">@Stateful
+ at Name("hotelBooking")
+ at Restrict("#{identity.loggedIn}")
+public class HotelBookingAction implements HotelBooking
+{
+   
+   @PersistenceContext(type=EXTENDED)
+   private EntityManager em;
+   
+   @In 
+   private User user;
+   
+   @In(required=false) @Out
+   private Hotel hotel;
+   
+   @In(required=false) 
+   @Out(required=false)
+   private Booking booking;
+     
+   @In
+   private FacesMessages facesMessages;
+      
+   @In
+   private Events events;
+   
+   @Logger 
+   private Log log;
+   
+   @Begin
+   public String selectHotel(Hotel selectedHotel)
+   {
+      hotel = em.merge(selectedHotel);
+      return "hotel";
+   }
+   
+   public String bookHotel()
+   {      
+      booking = new Booking(hotel, user);
+      Calendar calendar = Calendar.getInstance();
+      booking.setCheckinDate( calendar.getTime() );
+      calendar.add(Calendar.DAY_OF_MONTH, 1);
+      booking.setCheckoutDate( calendar.getTime() );
+      
+      return "book";
+   }
+
+   public String setBookingDetails()
+   {
+      if (booking==null || hotel==null) return "main";
+      if ( !booking.getCheckinDate().before( booking.getCheckoutDate() ) )
+      {
+         facesMessages.add("Check out date must be later than check in date");
+         return null;
+      }
+      else
+      {
+         return "confirm";
+      }
+   }
+
+   @End
+   public String confirm()
+   {
+      if (booking==null || hotel==null) return "main";
+      em.persist(booking);
+      facesMessages.add
+       ("Thank you, #{user.name}, your confimation number for #{hotel.name} is #{booking.id}");
+      log.info("New booking: #{booking.id} for #{user.username}");
+      events.raiseEvent("bookingConfirmed");
+      return "confirmed";
+   }
+   
+   @End
+   public String cancel()
+   {
+      return "main";
+   }
+   
+   @Destroy @Remove
+   public void destroy() {}
+
+}
+</pre><div class="orderedlist"><ol><li class="listitem"><div class="para">
+						This bean uses an EJB3 <span class="emphasis"><em>extended persistence context</em></span>, so that any entity instances remain managed for the whole lifecycle of the stateful session bean.
+					</div></li><li class="listitem"><div class="para">
+						The <code class="literal">@Out</code> annotation declares that an attribute value is <span class="emphasis"><em>outjected</em></span> to a context variable after method invocations. In this case, the context variable named <code class="literal">hotel</code> will be set to the value of the <code class="literal">hotel</code> instance variable after every action listener invocation completes.
+					</div></li><li class="listitem"><div class="para">
+						The <code class="literal">@Begin</code> annotation specifies that the annotated method begins a <span class="emphasis"><em>long-running conversation</em></span>, so the current conversation context will not be destroyed at the end of the request. Instead, it will be reassociated with every request from the current window, and destroyed either by timeout due to conversation inactivity or invocation of a matching <code class="literal">@End</code> method.
+					</div></li><li class="listitem"><div class="para">
+						The <code class="literal">@End</code> annotation specifies that the annotated method ends the current long-running conversation, so the current conversation context will be destroyed at the end of the request.
+					</div></li><li class="listitem"><div class="para">
+						This EJB remove method will be called when Seam destroys the conversation context and must always be defined.
+					</div></li></ol></div><div class="para">
+				<code class="literal">HotelBookingAction</code> contains all the action listener methods that implement selection, booking and booking confirmation, and holds state related to this work in its instance variables. We think you will agree that this code is much cleaner and simpler than getting and setting <code class="literal">HttpSession</code> attributes.
+			</div><div class="para">
+				Even better, a user can have multiple isolated conversations per login session. Try it! Log in, run a search, and navigate to different hotel pages in multiple browser tabs. You will be able to work on creating two different hotel reservations at the same time. If you leave any one conversation inactive for long enough, Seam will eventually time out that conversation and destroy its state. If, after ending a conversation, you backbutton to a page of that conversation and try to perform an action, Seam will detect that the conversation was already ended, and redirect you to the search page.
+			</div></div><div class="section" title="2.6.4. The Seam UI control library"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-The_Seam_UI_control_library">2.6.4. The Seam UI control library</h3></div></div></div><div class="para">
+				If you check inside the WAR file for the booking application, you will find <code class="literal">seam-ui.jar</code> in the <code class="literal">WEB-INF/lib</code> directory. This package contains a number of JSF custom controls that integrate with Seam. The booking application uses the <code class="literal">&lt;s:link&gt;</code> control for navigation from the search screen to the hotel page:
+			</div><pre class="programlisting">&lt;s:link value="View Hotel" action="#{hotelBooking.selectHotel}"/&gt;
+</pre><div class="para">
+				The use of <code class="literal">&lt;s:link&gt;</code> here allows us to attach an action listener to a HTML link without breaking the browser's "open in new window" feature. The standard JSF <code class="literal">&lt;h:commandLink&gt;</code> does not work with "open in new window". We'll see later that <code class="literal">&lt;s:link&gt;</code> also offers a number of other useful features, including conversation propagation rules.
+			</div><div class="para">
+				The booking application uses some other Seam and Ajax4JSF controls, especially on the <code class="literal">/book.xhtml</code> page. We will not get into the details of those controls here, but if you want to understand this code, please refer to the chapter covering Seam's functionality for JSF form validation.
+			</div></div><div class="section" title="2.6.5. The Seam Debug Page"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-The_Seam_Debug_Page">2.6.5. The Seam Debug Page</h3></div></div></div><div class="para">
+				The WAR also includes <code class="literal">seam-debug.jar</code>. If this jar is deployed in <code class="literal">WEB-INF/lib</code>, along with the Facelets, and if you set the following Seam property in <code class="literal">web.xml</code> or <code class="literal">seam.properties</code>:
+			</div><pre class="programlisting">&lt;context-param&gt;
+    &lt;param-name&gt;org.jboss.seam.core.init.debug&lt;/param-name&gt;
+    &lt;param-value&gt;true&lt;/param-value&gt;
+&lt;/context-param&gt;
+</pre><div class="para">
+				Then the Seam debug page will be available. This page lets you browse and inspect the Seam components in any of the Seam contexts associated with your current login session. Just point your browser at <a href="http://localhost:8080/seam-booking/debug.seam"><code class="literal">http://localhost:8080/seam-booking/debug.seam</code></a>.
+			</div><div class="mediaobject" align="center"><img src="images/debug.png" align="middle" width="444" /></div></div></div><div class="section" title="2.7. A complete application featuring Seam and jBPM: the DVD Store example"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_Tutorial-A_complete_application_featuring_Seam_and_jBPM_the_DVD_Store_example">2.7. A complete application featuring Seam and jBPM: the DVD Store example</h2></div></div></div><div class="para">
+			The DVD Store demo application shows the practical usage of jBPM for both task management and pageflow.
+		</div><div class="para">
+			The user screens take advantage of a jPDL pageflow to implement searching and shopping cart functionality.
+		</div><div class="screenshot"><div class="mediaobject" align="center"><img src="images/dvdsearch.png" align="middle" width="444" /></div></div><div class="para">
+			The administration screens take use jBPM to manage the approval and shipping cycle for orders. The business process may even be changed dynamically, by selecting a different process definition!
+		</div><div class="screenshot"><div class="mediaobject" align="center"><img src="images/dvdtasks.png" align="middle" width="444" /></div></div></div><div class="section" title="2.8. A complete application featuring Seam workspace management: the Issue Tracker example"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_Tutorial-A_complete_application_featuring_Seam_workspace_management_the_Issue_Tracker_example">2.8. A complete application featuring Seam workspace management: the Issue Tracker example</h2></div></div></div><div class="para">
+			The Issue Tracker demo shows off Seam's workspace management functionality: the conversation switcher, conversation list and breadcrumbs.
+		</div><div class="para">
+			<div class="note"><h2>Note</h2><div class="para">
+					To log into the Issue Tracker demo you must provide a username and password. You can find this in the <code class="filename">resources/import.sql</code> file or use "gavin" and "foobar" for username and password respectively.
+				</div></div>
+		</div><div class="screenshot"><div class="mediaobject" align="center"><img src="images/issues.png" align="middle" width="444" /></div></div></div><div class="section" title="2.9. An example of Seam with Hibernate: the Hibernate Booking example"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_Tutorial-An_example_of_Seam_with_Hibernate_the_Hibernate_Booking_example">2.9. An example of Seam with Hibernate: the Hibernate Booking example</h2></div></div></div><div class="para">
+			The Hibernate Booking demo is a straight port of the Booking demo to an alternative architecture that uses Hibernate for persistence and JavaBeans instead of session beans.
+		</div></div><div class="section" title="2.10. A RESTful Seam application: the Blog example"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_Tutorial-A_RESTful_Seam_application_the_Blog_example">2.10. A RESTful Seam application: the Blog example</h2></div></div></div><div class="para">
+			Seam makes it very easy to implement applications which keep state on the server-side. However, server-side state is not always appropriate, especially in for functionality that serves up <span class="emphasis"><em>content</em></span>. For this kind of problem we often need to let the user bookmark pages and have a relatively stateless server, so that any page can be accessed at any time, via the bookmark. The Blog example shows how to a implement RESTful application using Seam. Every page of the application can be bookmarked, including the search results page.
+		</div><div class="screenshot"><div class="mediaobject" align="center"><img src="images/blog.png" align="middle" width="444" /></div></div><div class="para">
+			The Blog example demonstrates the use of "pull"-style MVC, where instead of using action listener methods to retrieve data and prepare the data for the view, the view pulls data from components as it is being rendered.
+		</div><div class="section" title="2.10.1. Using &quot;pull&quot;-style MVC"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-A_RESTful_Seam_application_the_Blog_example-Using_pull_style_MVC">2.10.1. Using "pull"-style MVC</h3></div></div></div><div class="para">
+				This snippet from the <code class="literal">index.xhtml</code> facelets page displays a list of recent blog entries:
+			</div><div class="example" id="id2805759"><div class="example-contents"><pre class="programlisting">&lt;h:dataTable value="#{blog.recentBlogEntries}" var="blogEntry" rows="3"&gt;
+   &lt;h:column&gt;
+      &lt;div class="blogEntry"&gt;
+         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;
+         &lt;div&gt;
+            &lt;h:outputText escape="false" 
+                  value="#{blogEntry.excerpt==null ? blogEntry.body : blogEntry.excerpt}"/&gt;
+         &lt;/div&gt;
+         &lt;p&gt;
+            &lt;h:outputLink value="entry.seam" rendered="#{blogEntry.excerpt!=null}"&gt;
+               &lt;f:param name="blogEntryId" value="#{blogEntry.id}"/&gt;
+               Read more...
+            &lt;/h:outputLink&gt;
+         &lt;/p&gt;
+         &lt;p&gt;
+            [Posted on 
+            &lt;h:outputText value="#{blogEntry.date}"&gt;
+               &lt;f:convertDateTime timeZone="#{blog.timeZone}" locale="#{blog.locale}" 
+                                     type="both"/&gt;
+            &lt;/h:outputText&gt;]
+             
+            &lt;h:outputLink value="entry.seam"&gt;[Link]
+               &lt;f:param name="blogEntryId" value="#{blogEntry.id}"/&gt;
+            &lt;/h:outputLink&gt;
+         &lt;/p&gt;
+      &lt;/div&gt;
+   &lt;/h:column&gt;
+&lt;/h:dataTable&gt;
+</pre></div><h6>Example 2.16. </h6></div><br class="example-break" /><div class="para">
+				If we navigate to this page from a bookmark, how does the data used by the <code class="literal">&lt;h:dataTable&gt;</code> actually get initialized? Well, what happens is that the <code class="literal">Blog</code> is retrieved lazily—"pulled"—when needed, by a Seam component named <code class="literal">blog</code>. This is the opposite flow of control to what is usual in traditional web action-based frameworks like Struts.
+			</div><div class="example" id="id2805808"><div class="example-contents"><pre class="programlisting">@Name("blog")
+ at Scope(ScopeType.STATELESS)
+public class BlogService 
+{
+   
+   @In
+   private EntityManager entityManager;
+  
+   @Unwrap
+   public Blog getBlog()
+   {
+      return (Blog) entityManager.createQuery("from Blog b left join fetch b.blogEntries")
+            .setHint("org.hibernate.cacheable", true)
+            .getSingleResult();
+   }
+
+}
+</pre><div class="orderedlist"><ol><li class="listitem"><div class="para">
+							This component uses a <span class="emphasis"><em>seam-managed persistence context</em></span>. Unlike the other examples we have seen, this persistence context is managed by Seam, instead of by the EJB3 container. The persistence context spans the entire web request, allowing us to avoid any exceptions that occur when accessing unfetched associations in the view.
+						</div></li><li class="listitem"><div class="para">
+							The <code class="literal">@Unwrap</code> annotation tells Seam to provide the return value of the method—the <code class="literal">Blog</code>—instead of the actual <code class="literal">BlogService</code> component to clients. This is the Seam <span class="emphasis"><em>manager component pattern</em></span>.
+						</div></li></ol></div></div><h6>Example 2.17. </h6></div><br class="example-break" /><div class="para">
+				This is good so far, but what about bookmarking the result of form submissions, such as a search results page?
+			</div></div><div class="section" title="2.10.2. Bookmarkable search results page"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-A_RESTful_Seam_application_the_Blog_example-Bookmarkable_search_results_page">2.10.2. Bookmarkable search results page</h3></div></div></div><div class="para">
+				The blog example has a tiny form in the top right of each page that allows the user to search for blog entries. This is defined in a file, <code class="literal">menu.xhtml</code>, included by the facelets template, <code class="literal">template.xhtml</code>:
+			</div><div class="example" id="id2805914"><div class="example-contents"><pre class="programlisting">&lt;div id="search"&gt;
+   &lt;h:form&gt;
+      &lt;h:inputText value="#{searchAction.searchPattern}"/&gt;
+      &lt;h:commandButton value="Search" action="/search.xhtml"/&gt;
+   &lt;/h:form&gt;
+&lt;/div&gt;
+</pre></div><h6>Example 2.18. </h6></div><br class="example-break" /><div class="para">
+				To implement a bookmarkable search results page, we need to perform a browser redirect after processing the search form submission. Because we used the JSF view id as the action outcome, Seam automatically redirects to the view id when the form is submitted. Alternatively, we could have defined a navigation rule like this:
+			</div><div class="example" id="id2805937"><div class="example-contents"><pre class="programlisting">&lt;navigation-rule&gt;
+   &lt;navigation-case&gt;
+      &lt;from-outcome&gt;searchResults&lt;/from-outcome&gt;
+      &lt;to-view-id&gt;/search.xhtml&lt;/to-view-id&gt;
+      &lt;redirect/&gt;
+   &lt;/navigation-case&gt;
+&lt;/navigation-rule&gt;
+</pre></div><h6>Example 2.19. </h6></div><br class="example-break" /><div class="para">
+				Then the form would have looked like this:
+			</div><div class="example" id="id2805956"><div class="example-contents"><pre class="programlisting">&lt;div id="search"&gt;
+   &lt;h:form&gt;
+      &lt;h:inputText value="#{searchAction.searchPattern}"/&gt;
+      &lt;h:commandButton value="Search" action="searchResults"/&gt;
+   &lt;/h:form&gt;
+&lt;/div&gt;
+</pre></div><h6>Example 2.20. </h6></div><br class="example-break" /><div class="para">
+				But when we redirect, we need to include the values submitted with the form as request parameters, to get a bookmarkable URL like <code class="literal">http://localhost:8080/seam-blog/search.seam?searchPattern=seam</code>. JSF does not provide an easy way to do this, but Seam does. We use a Seam <span class="emphasis"><em>page parameter</em></span>, defined in <code class="literal">WEB-INF/pages.xml</code>:
+			</div><div class="example" id="id2805990"><div class="example-contents"><pre class="programlisting">&lt;pages&gt;
+   &lt;page view-id="/search.xhtml"&gt;
+      &lt;param name="searchPattern" value="#{searchService.searchPattern}"/&gt;
+   &lt;/page&gt;
+   ...
+&lt;/pages&gt;
+</pre></div><h6>Example 2.21. </h6></div><br class="example-break" /><div class="para">
+				This tells Seam to include the value of <code class="literal">#{searchService.searchPattern}</code> as a request parameter named <code class="literal">searchPattern</code> when redirecting to the page, and then re-apply the value of that parameter to the model before rendering the page.
+			</div><div class="para">
+				The redirect takes us to the <code class="literal">search.xhtml</code> page:
+			</div><div class="example" id="id2806027"><div class="example-contents"><pre class="programlisting">&lt;h:dataTable value="#{searchResults}" var="blogEntry"&gt;
+   &lt;h:column&gt;
+      &lt;div&gt;
+         &lt;h:outputLink value="entry.seam"&gt;
+            &lt;f:param name="blogEntryId" value="#{blogEntry.id}"/&gt;
+            #{blogEntry.title}
+         &lt;/h:outputLink&gt;
+         posted on 
+         &lt;h:outputText value="#{blogEntry.date}"&gt;
+            &lt;f:convertDateTime timeZone="#{blog.timeZone}" locale="#{blog.locale}" type="both"/&gt;
+         &lt;/h:outputText&gt;
+      &lt;/div&gt;
+   &lt;/h:column&gt;
+&lt;/h:dataTable&gt;
+</pre></div><h6>Example 2.22. </h6></div><br class="example-break" /><div class="para">
+				Which again uses "pull"-style MVC to retrieve the actual search results:
+			</div><div class="example" id="id2806051"><div class="example-contents"><pre class="programlisting">@Name("searchService")
+public class SearchService 
+{
+   
+   @In
+   private EntityManager entityManager;
+   
+   private String searchPattern;
+   
+   @Factory("searchResults")
+   public List&lt;BlogEntry&gt; getSearchResults()
+   {
+      if (searchPattern==null)
+      {
+         return null;
+      }
+      else
+      {
+         return entityManager.createQuery("select be from BlogEntry be where lower(be.title) 
+                               like :searchPattern or lower(be.body) like :searchPattern 
+                               order by be.date desc")
+               .setParameter( "searchPattern", getSqlSearchPattern() )
+               .setMaxResults(100)
+               .getResultList();
+      }
+   }
+
+   private String getSqlSearchPattern()
+   {
+      return searchPattern==null ? "" : '%' + 
+        searchPattern.toLowerCase().replace('*', '%').replace('?', '_') 
+           + '%';
+   }
+
+   public String getSearchPattern()
+   {
+      return searchPattern;
+   }
+
+   public void setSearchPattern(String searchPattern)
+   {
+      this.searchPattern = searchPattern;
+   }
+
+}
+</pre></div><h6>Example 2.23. </h6></div><br class="example-break" /></div><div class="section" title="2.10.3. Using &quot;push&quot;-style MVC in a RESTful application"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-A_RESTful_Seam_application_the_Blog_example-Using_push_style_MVC_in_a_RESTful_application">2.10.3. Using "push"-style MVC in a RESTful application</h3></div></div></div><div class="para">
+				Very occasionally, it makes more sense to use push-style MVC for processing RESTful pages, and so Seam provides the notion of a <span class="emphasis"><em>page action</em></span>. The Blog example uses a page action for the blog entry page, <code class="literal">entry.xhtml</code>. Note that this is a little bit contrived, it would have been easier to use pull-style MVC here as well.
+			</div><div class="para">
+				The <code class="literal">entryAction</code> component works much like an action class in a traditional push-MVC action-oriented framework like Struts:
+			</div><div class="example" id="id2806124"><div class="example-contents"><pre class="programlisting">@Name("entryAction")
+ at Scope(STATELESS)
+public class EntryAction
+{
+   @In(create=true) 
+   private Blog blog;
+   
+   @Out
+   private BlogEntry blogEntry;
+   
+   public void loadBlogEntry(String id) throws EntryNotFoundException
+   {
+      blogEntry = blog.getBlogEntry(id);
+      if (blogEntry==null) throw new EntryNotFoundException(id);
+   }
+   
+}
+</pre></div><h6>Example 2.24. </h6></div><br class="example-break" /><div class="para">
+				Page actions are also declared in <code class="literal">pages.xml</code>:
+			</div><div class="example" id="id2806149"><div class="example-contents"><pre class="programlisting">&lt;pages&gt;
+   ...
+
+   &lt;page view-id="/entry.xhtml" action="#{entryAction.loadBlogEntry(blogEntry.id)}"&gt;
+      &lt;param name="blogEntryId" value="#{blogEntry.id}"/&gt;
+   &lt;/page&gt;
+
+   &lt;page view-id="/post.xhtml" action="#{loginAction.challenge}"/&gt;
+
+   &lt;page view-id="*" action="#{blog.hitCount.hit}"/&gt;
+
+&lt;/pages&gt;
+</pre></div><h6>Example 2.25. </h6></div><br class="example-break" /><div class="para">
+				Notice that the example is using page actions for some other functionality—the login challenge, and the pageview counter. Also notice the use of a parameter in the page action method binding. This is not a standard feature of JSF EL, but Seam lets you use it, not just for page actions, but also in JSF method bindings.
+			</div><div class="para">
+				When the <code class="literal">entry.xhtml</code> page is requested, Seam first binds the page parameter <code class="literal">blogEntryId</code> to the model, then runs the page action, which retrieves the needed data—the <code class="literal">blogEntry</code>—and places it in the Seam event context. Finally, the following is rendered:
+			</div><div class="example" id="id2806194"><div class="example-contents"><pre class="programlisting">&lt;div class="blogEntry"&gt;
+   &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;
+   &lt;div&gt;
+      &lt;h:outputText escape="false" value="#{blogEntry.body}"/&gt;
+   &lt;/div&gt;
+   &lt;p&gt;
+      [Posted on 
+      &lt;h:outputText value="#{blogEntry.date}"&gt;
+         &lt;f:convertDateTime timezone="#{blog.timeZone}" locale="#{blog.locale}" type="both"/&gt;
+      &lt;/h:outputText&gt;]
+   &lt;/p&gt;
+&lt;/div&gt;
+</pre></div><h6>Example 2.26. </h6></div><br class="example-break" /><div class="para">
+				If the blog entry is not found in the database, the <code class="literal">EntryNotFoundException</code> exception is thrown. We want this exception to result in a 404 error, not a 505, so we annotate the exception class:
+			</div><div class="example" id="id2806220"><div class="example-contents"><pre class="programlisting">@ApplicationException(rollback=true)
+ at HttpError(errorCode=HttpServletResponse.SC_NOT_FOUND)
+public class EntryNotFoundException extends Exception
+{
+   EntryNotFoundException(String id)
+   {
+      super("entry not found: " + id);
+   }
+}
+</pre></div><h6>Example 2.27. </h6></div><br class="example-break" /><div class="para">
+				An alternative implementation of the example does not use the parameter in the method binding:
+			</div><div class="example" id="id2806241"><div class="example-contents"><pre class="programlisting">@Name("entryAction")
+ at Scope(STATELESS)
+public class EntryAction
+{
+   @In(create=true) 
+   private Blog blog;
+   
+   @In @Out
+   private BlogEntry blogEntry;
+   
+   public void loadBlogEntry() throws EntryNotFoundException
+   {
+      blogEntry = blog.getBlogEntry( blogEntry.getId() );
+      if (blogEntry==null) throw new EntryNotFoundException(id);
+   }
+   
+}
+</pre><pre class="programlisting">&lt;pages&gt;
+   ...
+
+   &lt;page view-id="/entry.xhtml" action="#{entryAction.loadBlogEntry}"&gt;
+      &lt;param name="blogEntryId" value="#{blogEntry.id}"/&gt;
+   &lt;/page&gt;
+   
+   ...
+&lt;/pages&gt;
+</pre></div><h6>Example 2.28. </h6></div><br class="example-break" /><div class="para">
+				It is a matter of personal choice, which implementation you prefer.
+			</div></div></div></div><div xml:lang="en-US" class="chapter" title="Chapter 3. The contextual component model" lang="en-US"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-The_contextual_component_model">Chapter 3. The contextual component model</h2></div></div></div><div class="toc"><dl><dt><span class="sect1"><a href="#Seam_Reference_Guide-The_contextual_component_model-Seam_contexts">3.1. Seam contexts</a></span></dt><dd><dl><dt><span class="sect2"><a href="#Seam_Reference_Guide-Seam_contexts-Stateless_context">3.1.1. Stateless context</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Seam_contexts-Event_context">3.1.2. Event context</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Seam_contexts-Page_context">3.1.3. Page context</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Seam_contexts-Conversation_context">3.1.4. Conversation context</a></span></dt><dt><span class="sec!
 t2"><a href="#Seam_Reference_Guide-Seam_contexts-Session_context">3.1.5. Session context</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Seam_contexts-Business_process_context">3.1.6. Business process context</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Seam_contexts-Application_context">3.1.7. Application context</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Seam_contexts-Context_variables">3.1.8. Context variables</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Seam_contexts-Context_search_priority">3.1.9. Context search priority</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Seam_contexts-Concurrency_model">3.1.10. Concurrency model</a></span></dt></dl></dd><dt><span class="sect1"><a href="#Seam_Reference_Guide-The_contextual_component_model-Seam_components">3.2. Seam components</a></span></dt><dd><dl><dt><span class="sect2"><a href="#Seam_Reference_Guide-S!
 eam_components-Stateless_session_beans">3.2.1. Stateless sessi!
 on beans
</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Seam_components-Stateful_session_beans">3.2.2. Stateful session beans</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Seam_components-Entity_beans">3.2.3. Entity beans</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Seam_components-JavaBeans">3.2.4. JavaBeans</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Seam_components-Message_driven_beans">3.2.5. Message-driven beans</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Seam_components-Interception">3.2.6. Interception</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Seam_components-Component_names">3.2.7. Component names</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Seam_components-Defining_the_component_scope">3.2.8. Defining the component scope</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Seam_compo!
 nents-Components_with_multiple_roles">3.2.9. Components with multiple roles</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Seam_components-Built_in_components">3.2.10. Built-in components</a></span></dt></dl></dd><dt><span class="sect1"><a href="#Seam_Reference_Guide-The_contextual_component_model-Bijection">3.3. Bijection</a></span></dt><dt><span class="sect1"><a href="#Seam_Reference_Guide-The_contextual_component_model-Lifecycle_methods">3.4. Lifecycle methods</a></span></dt><dt><span class="sect1"><a href="#Seam_Reference_Guide-The_contextual_component_model-Conditional_installation">3.5. Conditional installation</a></span></dt><dt><span class="sect1"><a href="#Seam_Reference_Guide-The_contextual_component_model-Logging">3.6. Logging</a></span></dt><dt><span class="sect1"><a href="#Seam_Reference_Guide-The_contextual_component_model-The_Mutable_interface_and_ReadOnly">3.7. The <code class="literal">Mutable</code> interface and <code class="literal!
 ">@ReadOnly</code></a></span></dt><dt><span class="sect1"><a h!
 ref="#Se
am_Reference_Guide-The_contextual_component_model-Factory_and_manager_components">3.8. Factory and manager components</a></span></dt></dl></div><div class="para">
+		The two core concepts in Seam are the notion of a <span class="emphasis"><em>context</em></span> and the notion of a <span class="emphasis"><em>component</em></span>. Components are stateful objects, usually EJBs, and an instance of a component is associated with a context, and given a name in that context. <span class="emphasis"><em>Bijection</em></span> provides a mechanism for aliasing internal component names (instance variables) to contextual names, allowing component trees to be dynamically assembled, and reassembled by Seam.
+	</div><div class="para">
+		Let us start by describing the contexts built in to Seam.
+	</div><div class="sect1" title="3.1. Seam contexts"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-The_contextual_component_model-Seam_contexts" class="title">Seam contexts</h1></div></div></div><div class="para">
+		Seam contexts are created and destroyed by the framework. The application does not control context demarcation via explicit Java API calls. Context are usually implicit. In some cases, however, contexts are demarcated via annotations.
+	</div><div class="para">
+		The basic Seam contexts are:
+	</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+				Stateless context
+			</div></li><li class="listitem"><div class="para">
+				Event (or request) context
+			</div></li><li class="listitem"><div class="para">
+				Page context
+			</div></li><li class="listitem"><div class="para">
+				Conversation context
+			</div></li><li class="listitem"><div class="para">
+				Session context
+			</div></li><li class="listitem"><div class="para">
+				Business process context
+			</div></li><li class="listitem"><div class="para">
+				Application context
+			</div></li></ul></div><div class="para">
+		You will recognize some of these contexts from servlet and related specifications. However, two of them might be new to you: <span class="emphasis"><em>conversation context</em></span>, and <span class="emphasis"><em>business process context</em></span>. One reason state management in web applications is so fragile and error-prone is that the three built-in contexts (request, session and application) are not especially meaningful from the point of view of the business logic. A user login session, for example, is a fairly arbitrary construct in terms of the actual application work flow. Therefore, most Seam components are scoped to the conversation or business process contexts, since they are the contexts which are most meaningful in terms of the application.
+	</div><div class="para">
+		Let us look at each context in turn.
+	</div><div class="sect2" title="3.1.1. Stateless context"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam_contexts-Stateless_context" class="title">Stateless context</h1></div></div></div><div class="para">
+		Components which are truly stateless (stateless session beans, primarily) always live in the stateless context (this is really a non-context). Stateless components are not very interesting, and are arguably not very object-oriented. Nevertheless, they are important and often useful.
+	</div></div><div class="sect2" title="3.1.2. Event context"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam_contexts-Event_context" class="title">Event context</h1></div></div></div><div class="para">
+		The event context is the "narrowest" stateful context, and is a generalization of the notion of the web request context to cover other kinds of events. Nevertheless, the event context associated with the lifecycle of a JSF request is the most important example of an event context, and the one you will work with most often. Components associated with the event context are destroyed at the end of the request, but their state is available and well-defined for at least the lifecycle of the request.
+	</div><div class="para">
+		When you invoke a Seam component via RMI, or Seam Remoting, the event context is created and destroyed just for the invocation.
+	</div></div><div class="sect2" title="3.1.3. Page context"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam_contexts-Page_context" class="title">Page context</h1></div></div></div><div class="para">
+		The page context allows you to associate state with a particular instance of a rendered page. You can initialize state in your event listener, or while actually rendering the page, and then have access to it from any event that originates from that page. This is especially useful for functionality like clickable lists, where the list is backed by changing data on the server side. The state is actually serialized to the client, so this construct is extremely robust with respect to multi-window operation and the back button.
+	</div></div><div class="sect2" title="3.1.4. Conversation context"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam_contexts-Conversation_context" class="title">Conversation context</h1></div></div></div><div class="para">
+		The conversation context is a truly central concept in Seam. A <span class="emphasis"><em>conversation</em></span> is a unit of work from the point of view of the user. It might span several interactions with the user, several requests, and several database transactions. But to the user, a conversation solves a single problem. For example, <span class="emphasis"><em>book hotel</em></span>, <span class="emphasis"><em>approve contract</em></span>, <span class="emphasis"><em>create order</em></span> are all conversations. You might like to think of a conversation implementing a single <span class="emphasis"><em>use case</em></span> or <span class="emphasis"><em>user story</em></span>, but the relationship is not necessarily quite exact.
+	</div><div class="para">
+		A conversation holds state associated with <span class="emphasis"><em>what the user is doing now, in this window</em></span>. A single user may have multiple conversations in progress at any point in time, usually in multiple windows. The conversation context allows us to ensure that state from the different conversations does not collide and cause bugs.
+	</div><div class="para">
+		Some conversations last for just a single request. Conversations that span multiple requests must be demarcated using annotations provided by Seam.
+	</div><div class="para">
+		Some conversations are also <span class="emphasis"><em>tasks</em></span>. A task is a conversation that is significant in terms of a long-running business process, and has the potential to trigger a business process state transition when it is successfully completed. Seam provides a special set of annotations for task demarcation.
+	</div><div class="para">
+		Conversations may be <span class="emphasis"><em>nested</em></span>, with one conversation taking place "inside" a wider conversation. This is an advanced feature.
+	</div><div class="para">
+		Usually, conversation state is actually held by Seam in the servlet session between requests. Seam implements configurable <span class="emphasis"><em>conversation timeout</em></span>, automatically destroying inactive conversations, and thus ensuring that the state held by a single user login session does not grow without bound if the user abandons conversations.
+	</div><div class="para">
+		Seam serializes processing of concurrent requests that take place in the same long-running conversation context, in the same process.
+	</div><div class="para">
+		Alternatively, Seam may be configured to keep conversational state in the client browser.
+	</div></div><div class="sect2" title="3.1.5. Session context"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam_contexts-Session_context" class="title">Session context</h1></div></div></div><div class="para">
+		A session context holds state associated with the user login session. While there are some cases where it is useful to share state between several conversations, we generally frown on the use of session context for holding components other than global information about the logged in user.
+	</div><div class="para">
+		In a JSR-168 portal environment, the session context represents the portlet session.
+	</div></div><div class="sect2" title="3.1.6. Business process context"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam_contexts-Business_process_context" class="title">Business process context</h1></div></div></div><div class="para">
+		The business process context holds state associated with the long running business process. This state is managed and made persistent by the BPM engine (JBoss jBPM). The business process spans multiple interactions with multiple users, so this state is shared between multiple users, but in a well-defined manner. The current task determines the current business process instance, and the lifecycle of the business process is defined externally using a <span class="emphasis"><em>process definition language</em></span>, so there are no special annotations for business process demarcation.
+	</div></div><div class="sect2" title="3.1.7. Application context"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam_contexts-Application_context" class="title">Application context</h1></div></div></div><div class="para">
+		The application context is the familiar servlet context from the servlet spec. Application context is mainly useful for holding static information such as configuration data, reference data or metamodels. For example, Seam stores its own configuration and metamodel in the application context.
+	</div></div><div class="sect2" title="3.1.8. Context variables"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam_contexts-Context_variables" class="title">Context variables</h1></div></div></div><div class="para">
+		A context defines a namespace, a set of <span class="emphasis"><em>context variables</em></span>. These work much the same as session or request attributes in the servlet spec. You may bind any value you like to a context variable, but usually we bind Seam component instances to context variables.
+	</div><div class="para">
+		So, within a context, a component instance is identified by the context variable name (this is usually, but not always, the same as the component name). You may programatically access a named component instance in a particular scope via the <code class="literal">Contexts</code> class, which provides access to several thread-bound instances of the <code class="literal">Context</code> interface:
+	</div><pre class="programlisting">User user = (User) Contexts.getSessionContext().get("user");
+</pre><div class="para">
+		You may also set or change the value associated with a name:
+	</div><pre class="programlisting">Contexts.getSessionContext().set("user", user);
+</pre><div class="para">
+		Usually, however, we obtain components from a context via injection, and put component instances into a context via outjection.
+	</div></div><div class="sect2" title="3.1.9. Context search priority"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam_contexts-Context_search_priority" class="title">Context search priority</h1></div></div></div><div class="para">
+		Sometimes, as above, component instances are obtained from a particular known scope. Other times, all stateful scopes are searched, in <span class="emphasis"><em>priority order</em></span>. The order is as follows:
+	</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+				Event context
+			</div></li><li class="listitem"><div class="para">
+				Page context
+			</div></li><li class="listitem"><div class="para">
+				Conversation context
+			</div></li><li class="listitem"><div class="para">
+				Session context
+			</div></li><li class="listitem"><div class="para">
+				Business process context
+			</div></li><li class="listitem"><div class="para">
+				Application context
+			</div></li></ul></div><div class="para">
+		You can perform a priority search by calling <code class="literal">Contexts.lookupInStatefulContexts()</code>. Whenever you access a component by name from a JSF page, a priority search occurs.
+	</div></div><div class="sect2" title="3.1.10. Concurrency model"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam_contexts-Concurrency_model" class="title">Concurrency model</h1></div></div></div><div class="para">
+		Neither the servlet nor EJB specifications define any facilities for managing concurrent requests originating from the same client. The servlet container simply lets all threads run concurrently and leaves enforcing threadsafeness to application code. The EJB container allows stateless components to be accessed concurrently, and throws an exception if multiple threads access a stateful session bean.
+	</div><div class="para">
+		This behavior might have been okay in old-style web applications which were based around fine-grained, synchronous requests. But for modern applications which make heavy use of many fine-grained, asynchronous (AJAX) requests, concurrency is a fact of life, and must be supported by the programming model. Seam weaves a concurrency management layer into its context model.
+	</div><div class="para">
+		The Seam session and application contexts are multithreaded. Seam will allow concurrent requests in a context to be processed concurrently. The event and page contexts are by nature single threaded. The business process context is strictly speaking multi-threaded, but in practice concurrency is sufficiently rare that this fact may be disregarded most of the time. Finally, Seam enforces a <span class="emphasis"><em>single thread per conversation per process</em></span> model for the conversation context by serializing concurrent requests in the same long-running conversation context.
+	</div><div class="para">
+		Since the session context is multithreaded, and often contains volatile state, session scope components are always protected by Seam from concurrent access. Seam serializes requests to session scope session beans and JavaBeans by default (and detects and breaks any deadlocks that occur). This is not the default behaviour for application scoped components however, since application scoped components do not usually hold volatile state and because synchronization at the global level is <span class="emphasis"><em>extremely</em></span> expensive. However, you can force a serialized threading model on any session bean or JavaBean component by adding the <code class="literal">@Synchronized</code> annotation.
+	</div><div class="para">
+		This concurrency model means that AJAX clients can safely use volatile session and conversational state, without the need for any special work on the part of the developer.
+	</div></div></div><div class="sect1" title="3.2. Seam components"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-The_contextual_component_model-Seam_components" class="title">Seam components</h1></div></div></div><div class="para">
+		Seam components are POJOs (Plain Old Java Objects). In particular, they are JavaBeans or EJB 3.0 enterprise beans. While Seam does not require that components be EJBs and can even be used without an EJB 3.0 compliant container, Seam was designed with EJB 3.0 in mind and includes deep integration with EJB 3.0. Seam supports the following <span class="emphasis"><em>component types</em></span>.
+	</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+				EJB 3.0 stateless session beans
+			</div></li><li class="listitem"><div class="para">
+				EJB 3.0 stateful session beans
+			</div></li><li class="listitem"><div class="para">
+				EJB 3.0 entity beans
+			</div></li><li class="listitem"><div class="para">
+				JavaBeans
+			</div></li><li class="listitem"><div class="para">
+				EJB 3.0 message-driven beans
+			</div></li></ul></div><div class="sect2" title="3.2.1. Stateless session beans"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam_components-Stateless_session_beans" class="title">Stateless session beans</h1></div></div></div><div class="para">
+		Stateless session bean components are not able to hold state across multiple invocations. Therefore, they usually work by operating upon the state of other components in the various Seam contexts. They may be used as JSF action listeners, but cannot provide properties to JSF components for display.
+	</div><div class="para">
+		Stateless session beans always live in the stateless context.
+	</div><div class="para">
+		Stateless session beans are the least interesting kind of Seam component.
+	</div></div><div class="sect2" title="3.2.2. Stateful session beans"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam_components-Stateful_session_beans" class="title">Stateful session beans</h1></div></div></div><div class="para">
+		Stateful session bean components are able to hold state not only across multiple invocations of the bean, but also across multiple requests. Application state that does not belong in the database should usually be held by stateful session beans. This is a major difference between Seam and many other web application frameworks. Instead of sticking information about the current conversation directly in the <code class="literal">HttpSession</code>, you should keep it in instance variables of a stateful session bean that is bound to the conversation context. This allows Seam to manage the lifecycle of this state for you, and ensure that there are no collisions between state relating to different concurrent conversations.
+	</div><div class="para">
+		Stateful session beans are often used as JSF action listener, and as backing beans that provide properties to JSF components for display or form submission.
+	</div><div class="para">
+		By default, stateful session beans are bound to the conversation context. They may never be bound to the page or stateless contexts.
+	</div><div class="para">
+		Concurrent requests to session-scoped stateful session beans are always serialized by Seam.
+	</div></div><div class="sect2" title="3.2.3. Entity beans"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam_components-Entity_beans" class="title">Entity beans</h1></div></div></div><div class="para">
+		Entity beans may be bound to a context variable and function as a seam component. Because entities have a persistent identity in addition to their contextual identity, entity instances are usually bound explicitly in Java code, rather than being instantiated implicitly by Seam.
+	</div><div class="para">
+		Entity bean components do not support bijection or context demarcation. Nor does invocation of an entity bean trigger validation.
+	</div><div class="para">
+		Entity beans are not usually used as JSF action listeners, but do often function as backing beans that provide properties to JSF components for display or form submission. In particular, it is common to use an entity as a backing bean, together with a stateless session bean action listener to implement create/update/delete type functionality.
+	</div><div class="para">
+		By default, entity beans are bound to the conversation context. They may never be bound to the stateless context.
+	</div><div class="para">
+		Note that it in a clustered environment is somewhat less efficient to bind an entity bean directly to a conversation or session scoped Seam context variable than it would be to hold a reference to the entity bean in a stateful session bean. For this reason, not all Seam applications define entity beans to be Seam components.
+	</div></div><div class="sect2" title="3.2.4. JavaBeans"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam_components-JavaBeans" class="title">JavaBeans</h1></div></div></div><div class="para">
+		Javabeans may be used just like a stateless or stateful session bean. However, they do not provide the functionality of a session bean (declarative transaction demarcation, declarative security, efficient clustered state replication, EJB 3.0 persistence, timeout methods, etc).
+	</div><div class="para">
+		In a later chapter, we show you how to use Seam and Hibernate without an EJB container. In this use case, components are JavaBeans instead of session beans. Note, however, that in many application servers it is somewhat less efficient to cluster conversation or session scoped Seam JavaBean components than it is to cluster stateful session bean components.
+	</div><div class="para">
+		By default, JavaBeans are bound to the event context.
+	</div><div class="para">
+		Concurrent requests to session-scoped JavaBeans are always serialized by Seam.
+	</div></div><div class="sect2" title="3.2.5. Message-driven beans"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam_components-Message_driven_beans" class="title">Message-driven beans</h1></div></div></div><div class="para">
+		Message-driven beans may function as a seam component. However, message-driven beans are called quite differently to other Seam components - instead of invoking them via the context variable, they listen for messages sent to a JMS queue or topic.
+	</div><div class="para">
+		Message-driven beans may not be bound to a Seam context. Nor do they have access to the session or conversation state of their "caller". However, they do support bijection and some other Seam functionality.
+	</div></div><div class="sect2" title="3.2.6. Interception"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam_components-Interception" class="title">Interception</h1></div></div></div><div class="para">
+		In order to perform its magic (bijection, context demarcation, validation, etc), Seam must intercept component invocations. For JavaBeans, Seam is in full control of instantiation of the component, and no special configuration is needed. For entity beans, interception is not required since bijection and context demarcation are not defined. For session beans, we must register an EJB interceptor for the session bean component. We could use an annotation, as follows:
+	</div><pre class="programlisting">@Stateless
+ at Interceptors(SeamInterceptor.class)
+public class LoginAction implements Login { 
+    ... 
+}
+</pre><div class="para">
+		But a much better way is to define the interceptor in <code class="literal">ejb-jar.xml</code>.
+	</div><pre class="programlisting">&lt;interceptors&gt;
+   &lt;interceptor&gt;
+      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/interceptor-class&gt;
+   &lt;/interceptor&gt;
+&lt;/interceptors&gt;
+   
+&lt;assembly-descriptor&gt;
+   &lt;interceptor-binding&gt;
+      &lt;ejb-name&gt;*&lt;/ejb-name&gt;
+      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/interceptor-class&gt;
+   &lt;/interceptor-binding&gt;
+&lt;/assembly-descriptor&gt;
+</pre></div><div class="sect2" title="3.2.7. Component names"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam_components-Component_names" class="title">Component names</h1></div></div></div><div class="para">
+		All seam components need a name. We can assign a name to a component using the <code class="literal">@Name</code> annotation:
+	</div><pre class="programlisting">@Name("loginAction")
+ at Stateless
+public class LoginAction implements Login { 
+    ... 
+}
+</pre><div class="para">
+		This name is the <span class="emphasis"><em>seam component name</em></span> and is not related to any other name defined by the EJB specification. However, seam component names work just like JSF managed bean names and you can think of the two concepts as identical.
+	</div><div class="para">
+		<code class="literal">@Name</code> is not the only way to define a component name, but we always need to specify the name <span class="emphasis"><em>somewhere</em></span>. If we do not, then none of the other Seam annotations will function.
+	</div><div class="para">
+		Just like in JSF, a seam component instance is usually bound to a context variable with the same name as the component name. So, for example, we would access the <code class="literal">LoginAction</code> using <code class="literal">Contexts.getStatelessContext().get("loginAction")</code>. In particular, whenever Seam itself instantiates a component, it binds the new instance to a variable with the component name. However, again like JSF, it is possible for the application to bind a component to some other context variable by programmatic API call. This is only useful if a particular component serves more than one role in the system. For example, the currently logged in <code class="literal">User</code> might be bound to the <code class="literal">currentUser</code> session context variable, while a <code class="literal">User</code> that is the subject of some administration functionality might be bound to the <code class="literal">user</code> conversation context variable.
+	</div><div class="para">
+		For very large applications, and for built-in seam components, qualified names are often used.
+	</div><pre class="programlisting">@Name("com.jboss.myapp.loginAction")
+ at Stateless
+ at Interceptors(SeamInterceptor.class)
+public class LoginAction implements Login { 
+    ... 
+}
+</pre><div class="para">
+		We may use the qualified component name both in Java code and in JSF's expression language:
+	</div><pre class="programlisting">&lt;h:commandButton type="submit" value="Login"
+                 action="#{com.jboss.myapp.loginAction.login}"/&gt;
+</pre><div class="para">
+		Since this is noisy, Seam also provides a means of aliasing a qualified name to a simple name. Add a line like this to the <code class="literal">components.xml</code> file:
+	</div><pre class="programlisting">&lt;factory name="loginAction" scope="STATELESS" value="#{com.jboss.myapp.loginAction}"/&gt;
+</pre><div class="para">
+		All of the built-in Seam components have qualified names, but most of them are aliased to a simple name by the <code class="literal">components.xml</code> file included in the Seam jar.
+	</div></div><div class="sect2" title="3.2.8. Defining the component scope"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam_components-Defining_the_component_scope" class="title">Defining the component scope</h1></div></div></div><div class="para">
+		We can override the default scope (context) of a component using the <code class="literal">@Scope</code> annotation. This lets us define what context a component instance is bound to, when it is instantiated by Seam.
+	</div><pre class="programlisting">@Name("user")
+ at Entity
+ at Scope(SESSION)
+public class User { 
+    ... 
+}
+</pre><div class="para">
+		<code class="literal">org.jboss.seam.ScopeType</code> defines an enumeration of possible scopes.
+	</div></div><div class="sect2" title="3.2.9. Components with multiple roles"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam_components-Components_with_multiple_roles" class="title">Components with multiple roles</h1></div></div></div><div class="para">
+		Some Seam component classes can fulfill more than one role in the system. For example, we often have a <code class="literal">User</code> class which is usually used as a session-scoped component representing the current user but is used in user administration screens as a conversation-scoped component. The <code class="literal">@Role</code> annotation lets us define an additional named role for a component, with a different scope; it lets us bind the same component class to different context variables. (Any Seam component <span class="emphasis"><em>instance</em></span> may be bound to multiple context variables, but this lets us do it at the class level, and take advantage of auto-instantiation.)
+	</div><pre class="programlisting">@Name("user")
+ at Entity
+ at Scope(CONVERSATION)
+ at Role(name="currentUser", scope=SESSION)
+public class User { 
+    ... 
+}
+</pre><div class="para">
+		The <code class="literal">@Roles</code> annotation lets us specify as many additional roles as we like.
+	</div><pre class="programlisting">@Name("user")
+ at Entity
+ at Scope(CONVERSATION)
+ at Roles({@Role(name="currentUser", scope=SESSION)
+        @Role(name="tempUser", scope=EVENT)})
+public class User { 
+    ... 
+}
+</pre></div><div class="sect2" title="3.2.10. Built-in components"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam_components-Built_in_components" class="title">Built-in components</h1></div></div></div><div class="para">
+		Like many good frameworks, Seam eats its own dogfood and is implemented mostly as a set of built-in Seam interceptors (see later) and Seam components. This makes it easy for applications to interact with built-in components at runtime or even customize the basic functionality of Seam by replacing the built-in components with custom implementations. The built-in components are defined in the Seam namespace <code class="literal">org.jboss.seam.core</code> and the Java package of the same name.
+	</div><div class="para">
+		The built-in components may be injected, just like any Seam components, but they also provide convenient static <code class="literal">instance()</code> methods:
+	</div><pre class="programlisting">FacesMessages.instance().add("Welcome back, #{user.name}!");
+</pre><div class="para">
+		Seam was designed to integrate tightly in a Java EE 5 environment. However, we understand that there are many projects which are not running in a full EE environment. We also realize the critical importance of easy unit and integration testing using frameworks such as TestNG and JUnit. So, we have made it easy to run Seam in Java SE environments by allowing you to boostrap certain critical infrastructure normally only found in EE environments by installing built-in Seam components.
+	</div><div class="para">
+		For example, you can run your EJB3 components in Tomcat or an integration test suite just by installing the built-in component <code class="literal">org.jboss.seam.core.ejb</code>, which automatically bootstraps the JBoss Embeddable EJB3 container and deploys your EJB components.
+	</div><div class="para">
+		Or, if you are not quite ready for the Brave New World of EJB 3.0, you can write a Seam application that uses only JavaBean components, together with Hibernate3 for persistence, by installing a built-in component that manages a Hibernate <code class="literal">SessionFactory</code>. When using Hibernate outside of a J2EE environment, you will also probably need a JTA transaction manager and JNDI server, which are available via the built-in component <code class="literal">org.jboss.seam.core.microcontainer</code>. This lets you use the bulletproof JTA/JCA pooling datasource from JBoss application server in an SE environment like Tomcat.
+	</div></div></div><div class="sect1" title="3.3. Bijection"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-The_contextual_component_model-Bijection" class="title">Bijection</h1></div></div></div><div class="para">
+		<span class="emphasis"><em>Dependency injection</em></span> or <span class="emphasis"><em>inversion of control</em></span> is by now a familiar concept to most Java developers. Dependency injection allows a component to obtain a reference to another component by having the container <span class="emphasis"><em>inject</em></span> the other component to a setter method or instance variable. In all dependency injection implementations that we have seen, injection occurs when the component is constructed, and the reference does not subsequently change for the lifetime of the component instance. For stateless components, this is reasonable. From the point of view of a client, all instances of a particular stateless component are interchangeable. On the other hand, Seam emphasizes the use of stateful components. So traditional dependency injection is no longer a very useful construct. Seam introduces the notion of <span class="emphasis"><em>bijection</em></span> as a generalizat!
 ion of injection. In contrast to injection, bijection is:
+	</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+				<span class="emphasis"><em>contextual</em></span> - bijection is used to assemble stateful components from various different contexts (a component from a <span class="emphasis"><em>wider</em></span> context may even have a reference to a component from a <span class="emphasis"><em>narrower</em></span> context)
+			</div></li><li class="listitem"><div class="para">
+				<span class="emphasis"><em>bidirectional</em></span> - values are injected from context variables into attributes of the component being invoked, and also <span class="emphasis"><em>outjected</em></span> from the component attributes back out to the context, allowing the component being invoked to manipulate the values of contextual variables simply by setting its own instance variables
+			</div></li><li class="listitem"><div class="para">
+				<span class="emphasis"><em>dynamic</em></span> - since the value of contextual variables changes over time, and since Seam components are stateful, bijection takes place every time a component is invoked
+			</div></li></ul></div><div class="para">
+		In essence, bijection lets you alias a context variable to a component instance variable, by specifying that the value of the instance variable is injected, outjected, or both. Of course, we use annotations to enable bijection.
+	</div><div class="para">
+		The <code class="literal">@In</code> annotation specifies that a value should be injected, either into an instance variable:
+	</div><pre class="programlisting">@Name("loginAction")
+ at Stateless
+ at Interceptors(SeamInterceptor.class)
+public class LoginAction implements Login { 
+    @In User user;
+    ... 
+}
+</pre><div class="para">
+		or into a setter method:
+	</div><pre class="programlisting">@Name("loginAction")
+ at Stateless
+ at Interceptors(SeamInterceptor.class)
+public class LoginAction implements Login { 
+    User user;
+    
+    @In
+    public void setUser(User user) {
+        this.user=user;
+    }
+    
+    ... 
+}
+</pre><div class="para">
+		By default, Seam will do a priority search of all contexts, using the name of the property or instance variable that is being injected. You may wish to specify the context variable name explicitly, using, for example, <code class="literal">@In("currentUser")</code>.
+	</div><div class="para">
+		If you want Seam to create an instance of the component when there is no existing component instance bound to the named context variable, you should specify <code class="literal">@In(create=true)</code>. If the value is optional (it can be null), specify <code class="literal">@In(required=false)</code>.
+	</div><div class="para">
+		For some components, it can be repetitive to have to specify <code class="literal">@In(create=true)</code> everywhere they are used. In such cases, you can annotate the component <code class="literal">@AutoCreate</code>, and then it will always be created, whenever needed, even without the explicit use of <code class="literal">create=true</code>.
+	</div><div class="para">
+		You can even inject the value of an expression:
+	</div><pre class="programlisting">@Name("loginAction")
+ at Stateless
+ at Interceptors(SeamInterceptor.class)
+public class LoginAction implements Login { 
+    @In("#{user.username}") String username;
+    ... 
+}
+</pre><div class="para">
+		(There is much more information about component lifecycle and injection in the next chapter.)
+	</div><div class="para">
+		The <code class="literal">@Out</code> annotation specifies that an attribute should be outjected, either from an instance variable:
+	</div><pre class="programlisting">@Name("loginAction")
+ at Stateless
+ at Interceptors(SeamInterceptor.class)
+public class LoginAction implements Login { 
+    @Out User user;
+    ... 
+}
+</pre><div class="para">
+		or from a getter method:
+	</div><pre class="programlisting">@Name("loginAction")
+ at Stateless
+ at Interceptors(SeamInterceptor.class)
+public class LoginAction implements Login { 
+    User user;
+    
+    @Out
+    public User getUser() {
+        return user;
+    }
+    
+    ... 
+}
+</pre><div class="para">
+		An attribute may be both injected and outjected:
+	</div><pre class="programlisting">@Name("loginAction")
+ at Stateless
+ at Interceptors(SeamInterceptor.class)
+public class LoginAction implements Login { 
+    @In @Out User user;
+    ... 
+}
+</pre><div class="para">
+		or:
+	</div><pre class="programlisting">@Name("loginAction")
+ at Stateless
+ at Interceptors(SeamInterceptor.class)
+public class LoginAction implements Login { 
+    User user;
+    
+    @In
+    public void setUser(User user) {
+        this.user=user;
+    }
+    
+    @Out
+    public User getUser() {
+        return user;
+    }
+    
+    ... 
+}
+</pre></div><div class="sect1" title="3.4. Lifecycle methods"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-The_contextual_component_model-Lifecycle_methods" class="title">Lifecycle methods</h1></div></div></div><div class="para">
+		Session bean and entity bean Seam components support all the usual EJB 3.0 lifecycle callback (<code class="literal">@PostConstruct</code>, <code class="literal">@PreDestroy</code>, etc). Seam extends all of these callbacks except <code class="literal">@PreDestroy</code> to JavaBean components. But Seam also defines its own component lifecycle callbacks.
+	</div><div class="para">
+		The <code class="literal">@Create</code> method is called every time Seam instantiates a component. Unlike the <code class="literal">@PostConstruct</code> method, this method is called after the component is fully constructed by the EJB container, and has access to all the usual Seam functionality (bijection, etc). Components may define only one <code class="literal">@Create</code> method.
+	</div><div class="para">
+		The <code class="literal">@Destroy</code> method is called when the context that the Seam component is bound to ends. Components may define only one <code class="literal">@Destroy</code> method. Stateful session bean components <span class="emphasis"><em>must</em></span> define a method annotated <code class="literal">@Destroy @Remove</code>.
+	</div><div class="para">
+		Finally, a related annotation is the <code class="literal">@Startup</code> annotation, which may be applied to any application or session scoped component. The <code class="literal">@Startup</code> annotation tells Seam to instantiate the component immediately, when the context begins, instead of waiting until it is first referenced by a client. It is possible to control the order of instantiation of startup components by specifying <code class="literal">@Startup(depends={....})</code>.
+	</div></div><div class="sect1" title="3.5. Conditional installation"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-The_contextual_component_model-Conditional_installation" class="title">Conditional installation</h1></div></div></div><div class="para">
+		The <code class="literal">@Install</code> annotation lets you control conditional installation of components that are required in some deployment scenarios and not in others. This is useful if:
+	</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+				You want to mock out some infrastructural component in tests.
+			</div></li><li class="listitem"><div class="para">
+				You want change the implementation of a component in certain deployment scenarios.
+			</div></li><li class="listitem"><div class="para">
+				You want to install some components only if their dependencies are available (useful for framework authors).
+			</div></li></ul></div><div class="para">
+		<code class="literal">@Install</code> works by letting you specify <span class="emphasis"><em>precedence</em></span> and <span class="emphasis"><em>dependencies</em></span>.
+	</div><div class="para">
+		The precedence of a component is a number that Seam uses to decide which component to install when there are multiple classes with the same component name in the classpath. Seam will choose the component with the higher precendence. There are some predefined precedence values (in ascending order):
+	</div><div class="orderedlist"><ol><li class="listitem"><div class="para">
+				<code class="literal">BUILT_IN</code> — the lowest precedece components are the components built in to Seam.
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">FRAMEWORK</code> — components defined by third-party frameworks may override built-in components, but are overridden by application components.
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">APPLICATION</code> — the default precedence. This is appropriate for most application components.
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">DEPLOYMENT</code> — for application components which are deployment-specific.
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">MOCK</code> — for mock objects used in testing.
+			</div></li></ol></div><div class="para">
+		Suppose we have a component named <code class="literal">messageSender</code> that talks to a JMS queue.
+	</div><pre class="programlisting">@Name("messageSender") 
+public class MessageSender {
+    public void sendMessage() {
+        //do something with JMS
+    }
+}
+</pre><div class="para">
+		In our unit tests, we don not have a JMS queue available, so we would like to stub out this method. We will create a <span class="emphasis"><em>mock</em></span> component that exists in the classpath when unit tests are running, but is never deployed with the application:
+	</div><pre class="programlisting">@Name("messageSender") 
+ at Install(precedence=MOCK)
+public class MockMessageSender extends MessageSender {
+    public void sendMessage() {
+        //do nothing!
+    }
+}
+</pre><div class="para">
+		The <code class="literal">precedence</code> helps Seam decide which version to use when it finds both components in the classpath.
+	</div><div class="para">
+		If we are able to control exactly which classes are in the classpath then this will work well, however if you are writing reusable framwork with many dependecies you will not wish to break that framework across numerious jars. You will wish to decide which components to install depending upon what other components are installed, and upon what classes are available in the classpath. The <code class="literal">@Install</code> annotation also controls this functionality. Seam uses this mechanism internally to enable conditional installation of many of the built-in components. However, you probably will not need to use it in your application.
+	</div></div><div class="sect1" title="3.6. Logging"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-The_contextual_component_model-Logging" class="title">Logging</h1></div></div></div><div class="para">
+		Below is the code for a simple log message in Java:
+	</div><pre class="programlisting">private static final Log log = LogFactory.getLog(CreateOrderAction.class);
+        
+public Order createOrder(User user, Product product, int quantity) {
+    if ( log.isDebugEnabled() ) {
+        log.debug("Creating new order for user: " + user.username() + 
+            " product: " + product.name() 
+            + " quantity: " + quantity);
+    }
+    return new Order(user, product, quantity);
+}
+</pre><div class="para">
+		Seam provides a logging API that simplifies this code significantly:
+	</div><pre class="programlisting">@Logger private Log log;
+        
+public Order createOrder(User user, Product product, int quantity) {
+    log.debug("Creating new order for user: #0 product: #1 quantity: #2", user.username(), 
+      product.name(), quantity);
+    return new Order(user, product, quantity);
+}
+</pre><div class="para">
+		It does not matter if you declare the <code class="literal">log</code> variable static or not; it will work either way, except for entity bean components which require the <code class="literal">log</code> variable to be static.
+	</div><div class="note"><h2>Note</h2><div class="para">
+			We do not need the <code class="literal">if ( log.isDebugEnabled() )</code> guard, since string concatenation happens <span class="emphasis"><em>inside</em></span> the <code class="literal">debug()</code> method. Also the log category does not need to be specified explicitly, since Seam knows what component it is injecting the <code class="literal">Log</code> into.
+		</div></div><div class="para">
+		If <code class="literal">User</code> and <code class="literal">Product</code> are Seam components available in the current contexts, it gets even better:
+	</div><pre class="programlisting">@Logger private Log log;
+        
+public Order createOrder(User user, Product product, int quantity) {
+    log.debug("Creating new order for user: #{user.username} product: #{product.name} 
+      quantity: #0", quantity);
+    return new Order(user, product, quantity);
+}
+</pre><div class="para">
+		Seam logging automagically chooses whether to send output to log4j or JDK logging. If log4j is in the classpath, Seam with use it. If it is not, Seam will use JDK logging.
+	</div></div><div class="sect1" title="3.7. The Mutable interface and @ReadOnly"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-The_contextual_component_model-The_Mutable_interface_and_ReadOnly" class="title">The <code class="literal">Mutable</code> interface and <code class="literal">@ReadOnly</code></h1></div></div></div><div class="para">
+		Many application servers feature an amazingly broken implementation of <code class="literal">HttpSession</code> clustering, where changes to the state of mutable objects bound to the session are only replicated when the application calls <code class="literal">setAttribute()</code> explicitly. This is a source of bugs that can not effectively be tested for at development time, since they will only manifest when failover occurs. Furthermore, the actual replication message contains the entire serialized object graph bound to the session attribute, which is inefficient.
+	</div><div class="para">
+		Of course, EJB stateful session beans must perform automatic dirty checking and replication of mutable state and a sophisticated EJB container can introduce optimizations such as attribute-level replication. Unfortunately, not all Seam users have the good fortune to be working in an environment that supports EJB 3.0. So, for session and conversation scoped JavaBean and entity bean components, Seam provides an extra layer of cluster-safe state management over the top of the web container session clustering.
+	</div><div class="para">
+		For session or conversation scoped JavaBean components, Seam automatically forces replication to occur by calling <code class="literal">setAttribute()</code> once in every request that the component was invoked by the application. Of course, this strategy is inefficient for read-mostly components. You can control this behavior by implementing the <code class="literal">org.jboss.seam.core.Mutable</code> interface, or by extending <code class="literal">org.jboss.seam.core.AbstractMutable</code>, and writing your own dirty-checking logic inside the component. For example,
+	</div><pre class="programlisting">@Name("account")
+public class Account extends AbstractMutable
+{
+    private BigDecimal balance;
+    
+    public void setBalance(BigDecimal balance)
+    {
+        setDirty(this.balance, balance);
+        this.balance = balance;
+    }
+    
+    public BigDecimal getBalance()
+    {
+        return balance;
+    }
+    
+    ...
+    
+}
+</pre><div class="para">
+		Or, you can use the <code class="literal">@ReadOnly</code> annotation to achieve a similar effect:
+	</div><pre class="programlisting">@Name("account")
+public class Account
+{
+    private BigDecimal balance;
+    
+    public void setBalance(BigDecimal balance)
+    {
+        this.balance = balance;
+    }
+    
+    @ReadOnly
+    public BigDecimal getBalance()
+    {
+        return balance;
+    }
+    
+    ...
+    
+}
+</pre><div class="para">
+		For session or conversation scoped entity bean components, Seam automatically forces replication to occur by calling <code class="literal">setAttribute()</code> once in every request, <span class="emphasis"><em>unless the (conversation-scoped) entity is currently associated with a Seam-managed persistence context, in which case no replication is needed</em></span>. This strategy is not necessarily efficient, so session or conversation scope entity beans should be used with care. You can always write a stateful session bean or JavaBean component to <span class="emphasis"><em>manage</em></span> the entity bean instance. For example,
+	</div><pre class="programlisting">@Stateful
+ at Name("account")
+public class AccountManager extends AbstractMutable
+{
+    private Account account; // an entity bean
+    
+    @Unwrap
+    public void getAccount()
+    {
+        return account;
+    }
+    
+    ...
+    
+}
+</pre><div class="note"><h2>Note</h2><div class="para">
+			Note that the <code class="literal">EntityHome</code> class in the Seam Application Framework provides a great example of this pattern.
+		</div></div></div><div class="sect1" title="3.8. Factory and manager components"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-The_contextual_component_model-Factory_and_manager_components" class="title">Factory and manager components</h1></div></div></div><div class="para">
+		We often need to work with objects that are not Seam components. But we still want to be able to inject them into our components using <code class="literal">@In</code> and use them in value and method binding expressions, etc. Sometimes, we even need to tie them into the Seam context lifecycle (<code class="literal">@Destroy</code>, for example). So the Seam contexts can contain objects which are not Seam components, and Seam provides a couple of nice features that make it easier to work with non-component objects bound to contexts.
+	</div><div class="para">
+		The <span class="emphasis"><em>factory component pattern</em></span> lets a Seam component act as the instantiator for a non-component object. A <span class="emphasis"><em>factory method</em></span> will be called when a context variable is referenced but has no value bound to it. We define factory methods using the <code class="literal">@Factory</code> annotation. The factory method binds a value to the context variable, and determines the scope of the bound value. There are two styles of factory method. The first style returns a value, which is bound to the context by Seam:
+	</div><pre class="programlisting">@Factory(scope=CONVERSATION)
+public List&lt;Customer&gt; getCustomerList() { 
+    return ... ;
+}
+</pre><div class="para">
+		The second style is a method of type <code class="literal">void</code> which binds the value to the context variable itself:
+	</div><pre class="programlisting">@DataModel List&lt;Customer&gt; customerList;
+
+ at Factory("customerList")
+public void initCustomerList() { 
+    customerList = ...  ;
+}
+</pre><div class="para">
+		In both cases, the factory method is called when we reference the <code class="literal">customerList</code> context variable and its value is null, and then has no further part to play in the lifecycle of the value. An even more powerful pattern is the <span class="emphasis"><em>manager component pattern</em></span>. In this case, we have a Seam component that is bound to a context variable, that manages the value of the context variable, while remaining invisible to clients.
+	</div><div class="para">
+		A manager component is any component with an <code class="literal">@Unwrap</code> method. This method returns the value that will be visable to clients, and is called <span class="emphasis"><em>every time</em></span> a context variable is referenced.
+	</div><pre class="programlisting">@Name("customerList")
+ at Scope(CONVERSATION)
+public class CustomerListManager
+{
+    ...
+    
+    @Unwrap
+    public List&lt;Customer&gt; getCustomerList() { 
+        return ... ;
+    }
+}
+</pre><div class="para">
+		This pattern is especially useful if we have some heavyweight object that needs a cleanup operation when the context ends. In this case, the manager component may perform cleanup in the <code class="literal">@Destroy</code> method.
+	</div></div></div><div xml:lang="en-US" class="chapter" title="Chapter 4. Configuring Seam components" lang="en-US"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Configuring_Seam_components">Chapter 4. Configuring Seam components</h2></div></div></div><div class="toc"><dl><dt><span class="sect1"><a href="#Seam_Reference_Guide-Configuring_Seam_components-Configuring_components_via_property_settings">4.1. Configuring components via property settings</a></span></dt><dt><span class="sect1"><a href="#Seam_Reference_Guide-Configuring_Seam_components-Configuring_components_via_components.xml">4.2. Configuring components via components.xml</a></span></dt><dt><span class="sect1"><a href="#Seam_Reference_Guide-Configuring_Seam_components-Fine_grained_configuration_files">4.3. Fine-grained configuration files</a></span></dt><dt><span class="sect1"><a href="#Seam_Reference_Guide-Configuring_Seam_components-Configurable_property_types">4.4. Configurabl!
 e property types</a></span></dt><dt><span class="sect1"><a href="#Seam_Reference_Guide-Configuring_Seam_components-Using_XML_Namespaces">4.5. Using XML Namespaces</a></span></dt></dl></div><div class="para">
+		The philosophy of minimizing XML-based configuration is extremely strong in Seam. Nevertheless, there are various reasons why we might want to configure a Seam component using XML: to isolate deployment-specific information from the Java code, to enable the creation of re-usable frameworks, to configure Seam's built-in functionality, etc. Seam provides two basic approaches to configuring components: configuration via property settings in a properties file or <code class="literal">web.xml</code>, and configuration via <code class="literal">components.xml</code>.
+	</div><div class="sect1" title="4.1. Configuring components via property settings"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Configuring_Seam_components-Configuring_components_via_property_settings" class="title">Configuring components via property settings</h1></div></div></div><div class="para">
+		Seam components may be provided with configuration properties either via servlet context parameters, or via a properties file named <code class="literal">seam.properties</code> in the root of the classpath.
+	</div><div class="para">
+		The configurable Seam component must expose JavaBeans-style property setter methods for the configurable attributes. If a seam component named <code class="literal">com.jboss.myapp.settings</code> has a setter method named <code class="literal">setLocale()</code>, we can provide a property named <code class="literal">com.jboss.myapp.settings.locale</code> in the <code class="literal">seam.properties</code> file or as a servlet context parameter, and Seam will set the value of the <code class="literal">locale</code> attribute whenever it instantiates the component.
+	</div><div class="para">
+		The same mechanism is used to configure Seam itself. For example, to set the conversation timeout, we provide a value for <code class="literal">org.jboss.seam.core.manager.conversationTimeout</code> in <code class="literal">web.xml</code> or <code class="literal">seam.properties</code>. (There is a built-in Seam component named <code class="literal">org.jboss.seam.core.manager</code> with a setter method named <code class="literal">setConversationTimeout()</code>.)
+	</div></div><div class="sect1" title="4.2. Configuring components via components.xml"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Configuring_Seam_components-Configuring_components_via_components.xml" class="title">Configuring components via components.xml</h1></div></div></div><div class="para">
+		The <code class="literal">components.xml</code> file is a bit more powerful than property settings. It lets you:
+	</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+				Configure components that have been installed automatically—including both built-in components, and application components that have been annotated with the <code class="literal">@Name</code> annotation and picked up by Seam's deployment scanner.
+			</div></li><li class="listitem"><div class="para">
+				Install classes with no <code class="literal">@Name</code> annotation as Seam components—this is most useful for certain kinds of infrastructural components which can be installed multiple times different names (for example Seam-managed persistence contexts).
+			</div></li><li class="listitem"><div class="para">
+				Install components that <span class="emphasis"><em>do</em></span> have a <code class="literal">@Name</code> annotation but are not installed by default because of an <code class="literal">@Install</code> annotation that indicates the component should not be installed.
+			</div></li><li class="listitem"><div class="para">
+				Override the scope of a component.
+			</div></li></ul></div><div class="para">
+		A <code class="literal">components.xml</code> file may appear in one of three different places:
+	</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+				The <code class="literal">WEB-INF</code> directory of a <code class="literal">war</code>.
+			</div></li><li class="listitem"><div class="para">
+				The <code class="literal">META-INF</code> directory of a <code class="literal">jar</code>.
+			</div></li><li class="listitem"><div class="para">
+				Any directory of a <code class="literal">jar</code> that contains classes with an <code class="literal">@Name</code> annotation.
+			</div></li></ul></div><div class="para">
+		Usually, Seam components are installed when the deployment scanner discovers a class with a <code class="literal">@Name</code> annotation sitting in an archive with a <code class="literal">seam.properties</code> file or a <code class="literal">META-INF/components.xml</code> file. (Unless the component has an <code class="literal">@Install</code> annotation indicating it should not be installed by default.) The <code class="literal">components.xml</code> file lets us handle special cases where we need to override the annotations.
+	</div><div class="para">
+		For example, the following <code class="literal">components.xml</code> file installs the JBoss Embeddable EJB3 container:
+	</div><pre class="programlisting">&lt;components xmlns="http://jboss.com/products/seam/components" 
+            xmlns:core="http://jboss.com/products/seam/core"&gt;
+    &lt;core:ejb/&gt;
+&lt;/components&gt;
+</pre><div class="para">
+		This example does the same thing:
+	</div><pre class="programlisting">&lt;components&gt;
+    &lt;component class="org.jboss.seam.core.Ejb"/&gt;
+&lt;/components&gt;
+</pre><div class="para">
+		This one installs and configures two different Seam-managed persistence contexts:
+	</div><pre class="programlisting">&lt;components xmlns="http://jboss.com/products/seam/components" 
+            xmlns:core="http://jboss.com/products/seam/core"
+
+    &lt;core:managed-persistence-context name="customerDatabase"
+                persistence-unit-jndi-name="java:/customerEntityManagerFactory"/&gt;
+        
+    &lt;core:managed-persistence-context name="accountingDatabase"
+                persistence-unit-jndi-name="java:/accountingEntityManagerFactory"/&gt;            
+
+&lt;/components&gt;
+</pre><div class="para">
+		As does this one:
+	</div><pre class="programlisting">&lt;components&gt;
+    &lt;component name="customerDatabase" 
+              class="org.jboss.seam.core.ManagedPersistenceContext"&gt;
+        &lt;property name="persistenceUnitJndiName"&gt;java:/customerEntityManagerFactory&lt;/property&gt;
+    &lt;/component&gt;
+    
+    &lt;component name="accountingDatabase"
+              class="org.jboss.seam.core.ManagedPersistenceContext"&gt;
+        &lt;property name="persistenceUnitJndiName"&gt;java:/accountingEntityManagerFactory&lt;/property&gt;
+    &lt;/component&gt;
+&lt;/components&gt;
+</pre><div class="para">
+		This example creates a session-scoped Seam-managed persistence context (this is not recommended in practice):
+	</div><pre class="programlisting">&lt;components xmlns="http://jboss.com/products/seam/components" 
+            xmlns:core="http://jboss.com/products/seam/core"
+
+  &lt;core:managed-persistence-context name="productDatabase" 
+                                   scope="session"
+              persistence-unit-jndi-name="java:/productEntityManagerFactory"/&gt;        
+
+&lt;/components&gt;
+</pre><pre class="programlisting">&lt;components&gt;
+            
+    &lt;component name="productDatabase"
+              scope="session"
+              class="org.jboss.seam.core.ManagedPersistenceContext"&gt;
+        &lt;property name="persistenceUnitJndiName"&gt;java:/productEntityManagerFactory&lt;/property&gt;
+    &lt;/component&gt;
+
+&lt;/components&gt;
+</pre><div class="para">
+		It is common to use the <code class="literal">auto-create</code> option for infrastructural objects like persistence contexts, which saves you from having to explicitly specify <code class="literal">create=true</code> when you use the <code class="literal">@In</code> annotation.
+	</div><pre class="programlisting">&lt;components xmlns="http://jboss.com/products/seam/components" 
+            xmlns:core="http://jboss.com/products/seam/core"
+
+  &lt;core:managed-persistence-context name="productDatabase" 
+                             auto-create="true"
+              persistence-unit-jndi-name="java:/productEntityManagerFactory"/&gt;        
+
+&lt;/components&gt;
+</pre><pre class="programlisting">&lt;components&gt;
+            
+    &lt;component name="productDatabase"
+        auto-create="true"
+              class="org.jboss.seam.core.ManagedPersistenceContext"&gt;
+        &lt;property name="persistenceUnitJndiName"&gt;java:/productEntityManagerFactory&lt;/property&gt;
+    &lt;/component&gt;
+
+&lt;/components&gt;
+</pre><div class="para">
+		The <code class="literal">&lt;factory&gt;</code> declaration lets you specify a value or method binding expression that will be evaluated to initialize the value of a context variable when it is first referenced.
+	</div><pre class="programlisting">&lt;components&gt;
+
+    &lt;factory name="contact" method="#{contactManager.loadContact}" scope="CONVERSATION"/&gt;
+
+&lt;/components&gt;
+</pre><div class="para">
+		You can create an <span class="emphasis"><em>alias</em></span> (a second name) for a Seam component like so:
+	</div><pre class="programlisting">&lt;components&gt;
+
+    &lt;factory name="user" value="#{actor}" scope="STATELESS"/&gt;
+
+&lt;/components&gt;
+</pre><div class="para">
+		You can even create an <span class="emphasis"><em>alias</em></span> for a commonly used expression:
+	</div><pre class="programlisting">&lt;components&gt;
+
+    &lt;factory name="contact" value="#{contactManager.contact}" scope="STATELESS"/&gt;
+
+&lt;/components&gt;
+</pre><div class="para">
+		It is especially common to see the use of <code class="literal">auto-create="true"</code> with the <code class="literal">&lt;factory&gt;</code> declaration:
+	</div><pre class="programlisting">&lt;components&gt;
+
+    &lt;factory name="session" value="#{entityManager.delegate}" scope="STATELESS" 
+       auto-create="true"/&gt;
+
+&lt;/components&gt;
+</pre><div class="para">
+		Sometimes we want to reuse the same <code class="literal">components.xml</code> file with minor changes during both deployment and testing. Seam lets you place wildcards of the form <code class="literal">@wildcard@</code> in the <code class="literal">components.xml</code> file which can be replaced either by your Ant build script (at deployment time) or by providing a file named <code class="literal">components.properties</code> in the classpath (at development time). You will see this approach used in the Seam examples.
+	</div></div><div class="sect1" title="4.3. Fine-grained configuration files"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Configuring_Seam_components-Fine_grained_configuration_files" class="title">Fine-grained configuration files</h1></div></div></div><div class="para">
+		If you have a large number of components that need to be configured in XML, it makes much more sense to split up the information in <code class="literal">components.xml</code> into many small files. Seam lets you put configuration for a class named, for example, <code class="literal">com.helloworld.Hello</code> in a resource named <code class="literal">com/helloworld/Hello.component.xml</code>. (You might be familiar with this pattern, since it is the same one we use in Hibernate.) The root element of the file may be either a <code class="literal">&lt;components&gt;</code> or <code class="literal">&lt;component&gt;</code> element.
+	</div><div class="para">
+		The first option lets you define multiple components in the file:
+	</div><pre class="programlisting">&lt;components&gt;
+    &lt;component class="com.helloworld.Hello" name="hello"&gt;
+        &lt;property name="name"&gt;#{user.name}&lt;/property&gt;
+    &lt;/component&gt;
+    &lt;factory name="message" value="#{hello.message}"/&gt;
+&lt;/components&gt;
+</pre><div class="para">
+		The second option only lets you define or configure one component, but is less noisy:
+	</div><pre class="programlisting">&lt;component name="hello"&gt;
+    &lt;property name="name"&gt;#{user.name}&lt;/property&gt;
+&lt;/component&gt;
+</pre><div class="para">
+		In the second option, the class name is implied by the file in which the component definition appears.
+	</div><div class="para">
+		Alternatively, you may put configuration for all classes in the <code class="literal">com.helloworld</code> package in <code class="literal">com/helloworld/components.xml</code>.
+	</div></div><div class="sect1" title="4.4. Configurable property types"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Configuring_Seam_components-Configurable_property_types" class="title">Configurable property types</h1></div></div></div><div class="para">
+		Properties of string, primitive or primitive wrapper type may be configured just as you would expect:
+	</div><pre class="programlisting">org.jboss.seam.core.manager.conversationTimeout 60000
+</pre><pre class="programlisting">&lt;core:manager conversation-timeout="60000"/&gt;
+</pre><pre class="programlisting">&lt;component name="org.jboss.seam.core.manager"&gt;
+    &lt;property name="conversationTimeout"&gt;60000&lt;/property&gt;
+&lt;/component&gt;
+</pre><div class="para">
+		Arrays, sets and lists of strings or primitives are also supported:
+	</div><pre class="programlisting">org.jboss.seam.core.jbpm.processDefinitions order.jpdl.xml, return.jpdl.xml, inventory.jpdl.xml
+</pre><pre class="programlisting">&lt;core:jbpm&gt;
+    &lt;core:process-definitions&gt;
+        &lt;value&gt;order.jpdl.xml&lt;/value&gt;
+        &lt;value&gt;return.jpdl.xml&lt;/value&gt;
+        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;
+    &lt;/core:process-definitions&gt;
+&lt;/core:jbpm&gt;
+</pre><pre class="programlisting">&lt;component name="org.jboss.seam.core.jbpm"&gt;
+    &lt;property name="processDefinitions"&gt;
+        &lt;value&gt;order.jpdl.xml&lt;/value&gt;
+        &lt;value&gt;return.jpdl.xml&lt;/value&gt;
+        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;
+    &lt;/property&gt;
+&lt;/component&gt;
+</pre><div class="para">
+		Even maps with String-valued keys and string or primitive values are supported:
+	</div><pre class="programlisting">&lt;component name="issueEditor"&gt;
+    &lt;property name="issueStatuses"&gt;
+        &lt;key&gt;open&lt;/key&gt; &lt;value&gt;open issue&lt;/value&gt;
+        &lt;key&gt;resolved&lt;/key&gt; &lt;value&gt;issue resolved by developer&lt;/value&gt;
+        &lt;key&gt;closed&lt;/key&gt; &lt;value&gt;resolution accepted by user&lt;/value&gt;
+    &lt;/property&gt;
+&lt;/component&gt;
+</pre><div class="para">
+		Finally, you may wire together components using a value-binding expression. Note that this is quite different to injection using <code class="literal">@In</code>, since it happens at component instantiation time instead of invocation time. It is therefore much more similar to the dependency injection facilities offered by traditional IoC containers like JSF or Spring.
+	</div><pre class="programlisting">&lt;drools:managed-working-memory name="policyPricingWorkingMemory" rule-base="#{policyPricingRules}"/&gt;
+</pre><pre class="programlisting">&lt;component name="policyPricingWorkingMemory"
+          class="org.jboss.seam.drools.ManagedWorkingMemory"&gt;
+    &lt;property name="ruleBase"&gt;#{policyPricingRules}&lt;/property&gt;
+&lt;/component&gt;
+</pre></div><div class="sect1" title="4.5. Using XML Namespaces"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Configuring_Seam_components-Using_XML_Namespaces" class="title">Using XML Namespaces</h1></div></div></div><div class="para">
+		Throughout the examples, there have been two competing ways of declaring components: with and without the use of XML namespaces. The following shows a typical <code class="literal">components.xml</code> file without namespaces. It uses the Seam Components DTD:
+	</div><pre class="programlisting">&lt;?xml version="1.0" encoding="UTF-8"&gt;
+&lt;!DOCTYPE components PUBLIC "-//JBoss/Seam Component Configuration DTD 1.2//EN"
+                            "http://jboss.com/products/seam/components-1.2.dtd"&gt;
+&lt;components&gt;
+
+    &lt;component class="org.jboss.seam.core.init"&gt;
+        &lt;property name="debug"&gt;true&lt;/property&gt;
+        &lt;property name="jndiPattern"&gt;@jndiPattern@&lt;/property&gt;
+    &lt;/component&gt;
+
+    &lt;component name="org.jboss.sean.core.ejb" installed="@embeddedEjb@" /&gt;
+    
+&lt;/components&gt;
+</pre><div class="para">
+		As you can see, this is somewhat verbose. Even worse, the component and attribute names cannot be validated at development time.
+	</div><div class="para">
+		The namespaced version looks like this:
+	</div><pre class="programlisting">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;components xmlns="http://jboss.com/products/seam/components"
+            xmlns:core="http://jboss.com/products/seam/core"
+            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+            xsi:schemaLocation=
+                "http://jboss.com/products/seam/core 
+                                        http://jboss.com/products/seam/core-1.2.xsd 
+                 http://jboss.com/products/seam/components 
+                                        http://jboss.com/products/seam/components-1.2.xsd"&gt;
+
+    &lt;core:init debug="true" jndi-pattern="@jndiPattern@"/&gt;
+
+    &lt;core:ejb installed="@embeddedEjb@"/&gt;
+
+&lt;/components&gt;
+</pre><div class="para">
+		Even though the schema declarations are verbose, the actual XML content is lean and easy to understand. The schemas provide detailed information about each component and the attributes available, allowing XML editors to offer intelligent autocomplete. The use of namespaced elements makes generating and maintaining correct <code class="literal">components.xml</code> files much simpler.
+	</div><div class="para">
+		Now, this works great for the built-in Seam components, but what about user components? There are two options. First, Seam supports mixing the two models, allowing the use of the generic <code class="literal">&lt;component&gt;</code> declarations for user components, along with namespaced declarations for built-in components. But even better, Seam allows you to quickly declare namespaces for your own components.
+	</div><div class="para">
+		Any Java package can be associated with an XML namespace by annotating the package with the <code class="literal">@Namespace</code> annotation. (Package-level annotations are declared in a file named <code class="literal">package-info.java</code> in the package directory.) Here is an example from the seampay demo:
+	</div><pre class="programlisting">@Namespace(value="http://jboss.com/products/seam/examples/seampay")
+package org.jboss.seam.example.seampay;
+
+import org.jboss.seam.annotations.Namespace;
+</pre><div class="para">
+		That is all you need to do to use the namespaced style in <code class="literal">components.xml</code>! Now we can write:
+	</div><pre class="programlisting">&lt;components xmlns="http://jboss.com/products/seam/components"
+            xmlns:pay="http://jboss.com/products/seam/examples/seampay"
+            ... &gt;
+
+    &lt;pay:payment-home new-instance="#{newPayment}"
+                      created-message="Created a new payment to #{newPayment.payee}" /&gt;
+
+    &lt;pay:payment name="newPayment"
+                 payee="Somebody"
+                 account="#{selectedAccount}"
+                 payment-date="#{currentDatetime}"
+                 created-date="#{currentDatetime}" /&gt;
+     ...
+&lt;/components&gt;
+</pre><div class="para">
+		Or:
+	</div><pre class="programlisting">&lt;components xmlns="http://jboss.com/products/seam/components"
+            xmlns:pay="http://jboss.com/products/seam/examples/seampay"
+            ... &gt;
+
+    &lt;pay:payment-home&gt;
+        &lt;pay:new-instance&gt;"#{newPayment}"&lt;/pay:new-instance&gt;
+        &lt;pay:created-message&gt;Created a new payment to #{newPayment.payee}&lt;/pay:created-message&gt;
+    &lt;/pay:payment-home&gt;
+    
+    &lt;pay:payment name="newPayment"&gt;
+        &lt;pay:payee&gt;Somebody"&lt;/pay:payee&gt;
+        &lt;pay:account&gt;#{selectedAccount}&lt;/pay:account&gt;
+        &lt;pay:payment-date&gt;#{currentDatetime}&lt;/pay:payment-date&gt;
+        &lt;pay:created-date&gt;#{currentDatetime}&lt;/pay:created-date&gt;
+     &lt;/pay:payment&gt;
+     ...
+&lt;/components&gt;
+</pre><div class="para">
+		These examples illustrate the two usage models of a namespaced element. In the first declaration, the <code class="literal">&lt;pay:payment-home&gt;</code> references the <code class="literal">paymentHome</code> component:
+	</div><pre class="programlisting">package org.jboss.seam.example.seampay;
+...
+ at Name("paymentHome")
+public class PaymentController
+    extends EntityHome&lt;Payment&gt;
+{
+    ... 
+}
+</pre><div class="para">
+		The element name is the hyphenated form of the component name. The attributes of the element are the hyphenated form of the property names.
+	</div><div class="para">
+		In the second declaration, the <code class="literal">&lt;pay:payment&gt;</code> element refers to the <code class="literal">Payment</code> class in the <code class="literal">org.jboss.seam.example.seampay</code> package. In this case <code class="literal">Payment</code> is an entity that is being declared as a Seam component:
+	</div><pre class="programlisting">package org.jboss.seam.example.seampay;
+...
+ at Entity
+public class Payment
+    implements Serializable
+{
+    ...
+}
+</pre><div class="para">
+		If we want validation and autocompletion to work for user-defined components, we will need a schema. Seam does not yet provide a mechanism to automatically generate a schema for a set of components, so it is necessary to generate one manually. The schema definitions for the standard Seam packages can be used for guidance.
+	</div><div class="para">
+		The following are the the namespaces used by Seam:
+	</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+				components — <code class="literal">http://jboss.com/products/seam/components</code>
+			</div></li><li class="listitem"><div class="para">
+				core — <code class="literal">http://jboss.com/products/seam/core</code>
+			</div></li><li class="listitem"><div class="para">
+				drools — <code class="literal">http://jboss.com/products/seam/drools</code>
+			</div></li><li class="listitem"><div class="para">
+				framework — <code class="literal">http://jboss.com/products/seam/framework</code>
+			</div></li><li class="listitem"><div class="para">
+				jms — <code class="literal">http://jboss.com/products/seam/jms</code>
+			</div></li><li class="listitem"><div class="para">
+				remoting — <code class="literal">http://jboss.com/products/seam/remoting</code>
+			</div></li><li class="listitem"><div class="para">
+				theme — <code class="literal">http://jboss.com/products/seam/theme</code>
+			</div></li><li class="listitem"><div class="para">
+				security — <code class="literal">http://jboss.com/products/seam/security</code>
+			</div></li><li class="listitem"><div class="para">
+				mail — <code class="literal">http://jboss.com/products/seam/mail</code>
+			</div></li><li class="listitem"><div class="para">
+				web — <code class="literal">http://jboss.com/products/seam/web</code>
+			</div></li></ul></div></div></div><div xml:lang="en-US" class="chapter" title="Chapter 5. Events, interceptors and exception handling" lang="en-US"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Events_interceptors_and_exception_handling">Chapter 5. Events, interceptors and exception handling</h2></div></div></div><div class="toc"><dl><dt><span class="sect1"><a href="#Seam_Reference_Guide-Events_interceptors_and_exception_handling-Seam_events">5.1. Seam events</a></span></dt><dd><dl><dt><span class="sect2"><a href="#Seam_Reference_Guide-Seam_events-Page_actions">5.1.1. Page actions</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Seam_events-Component_driven_events">5.1.2. Component-driven events</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Seam_events-Contextual_events">5.1.3. Contextual events</a></span></dt></dl></dd><dt><span class="sect1"><a href="#Seam_Reference_Guide-Events_interceptors!
 _and_exception_handling-Seam_interceptors">5.2. Seam interceptors</a></span></dt><dt><span class="sect1"><a href="#Seam_Reference_Guide-Events_interceptors_and_exception_handling-Managing_exceptions">5.3. Managing exceptions</a></span></dt><dd><dl><dt><span class="sect2"><a href="#Seam_Reference_Guide-Managing_exceptions-Exceptions_and_transactions">5.3.1. Exceptions and transactions</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Managing_exceptions-Enabling_Seam_exception_handling">5.3.2. Enabling Seam exception handling</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Managing_exceptions-Using_annotations_for_exception_handling">5.3.3. Using annotations for exception handling</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Managing_exceptions-Using_XML_for_exception_handling">5.3.4. Using XML for exception handling</a></span></dt></dl></dd></dl></div><div class="para">
+		Complementing the contextual component model, there are two further basic concepts that facilitate the extreme loose-coupling that is the distinctive feature of Seam applications. The first is a strong event model where events may be mapped to event listeners via JSF-like method binding expressions. The second is the pervasive use of annotations and interceptors to apply cross-cutting concerns to components which implement business logic.
+	</div><div class="sect1" title="5.1. Seam events"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Events_interceptors_and_exception_handling-Seam_events" class="title">Seam events</h1></div></div></div><div class="para">
+		The Seam component model was developed for use with <span class="emphasis"><em>event-driven applications</em></span>, specifically to enable the development of fine-grained, loosely-coupled components in a fine-grained eventing model. Events in Seam come in several types, most of which we have already seen:
+	</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+				JSF events
+			</div></li><li class="listitem"><div class="para">
+				jBPM transition events
+			</div></li><li class="listitem"><div class="para">
+				Seam page actions
+			</div></li><li class="listitem"><div class="para">
+				Seam component-driven events
+			</div></li><li class="listitem"><div class="para">
+				Seam contextual events
+			</div></li></ul></div><div class="para">
+		All of these various kinds of events are mapped to Seam components via JSF EL method binding expressions. For a JSF event, this is defined in the JSF template:
+	</div><pre class="programlisting">&lt;h:commandButton value="Click me!" action="#{helloWorld.sayHello}"/&gt;
+</pre><div class="para">
+		For a jBPM transition event, it is specified in the jBPM process definition or pageflow definition:
+	</div><pre class="programlisting">&lt;start-page name="hello" view-id="/hello.jsp"&gt;
+    &lt;transition to="hello"&gt;
+        &lt;action expression="#{helloWorld.sayHello}"/&gt;
+    &lt;/transition&gt;
+&lt;/start-page&gt;
+</pre><div class="para">
+		You can find out more information about JSF events and jBPM events elsewhere. Lets concentrate for now upon the two additional kinds of events defined by Seam.
+	</div><div class="sect2" title="5.1.1. Page actions"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam_events-Page_actions" class="title">Page actions</h1></div></div></div><div class="para">
+		A Seam page action is an event that occurs just before we render a page. We declare page actions in <code class="literal">WEB-INF/pages.xml</code>. We can define a page action for either a particular JSF view id:
+	</div><pre class="programlisting">&lt;pages&gt;
+    &lt;page view-id="/hello.jsp" action="#{helloWorld.sayHello}"/&gt;
+&lt;/pages&gt;
+</pre><div class="para">
+		Or we can use a wildcard to specify an action that applies to all view ids that match the pattern:
+	</div><pre class="programlisting">&lt;pages&gt;
+    &lt;page view-id="/hello/*" action="#{helloWorld.sayHello}"/&gt;
+&lt;/pages&gt;
+</pre><div class="para">
+		If multiple wildcarded page actions match the current view-id, Seam will call all the actions, in order of least-specific to most-specific.
+	</div><div class="para">
+		The page action method can return a JSF outcome. If the outcome is non-null, Seam will use the defined navigation rules to navigate to a view.
+	</div><div class="para">
+		Furthermore, the view id mentioned in the <code class="literal">&lt;page&gt;</code> element need not correspond to a real JSP or Facelets page. So, we can reproduce the functionality of a traditional action-oriented framework like Struts or WebWork using page actions.
+	</div><div class="para">
+		This is quite useful if you want to do complex things in response to non-faces requests (for example, HTTP GET requests).
+	</div><div class="sect3" title="5.1.1.1. Page parameters"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Page_actions-Page_parameters" class="title">Page parameters</h1></div></div></div><div class="para">
+		A JSF faces request (a form submission) encapsulates both an <span class="emphasis"><em>action</em></span> (a method binding) and <span class="emphasis"><em>parameters</em></span> (input value bindings). A page action might also require parameters.
+	</div><div class="para">
+		Since GET requests are bookmarkable, page parameters are passed as human-readable request parameters. (Unlike JSF form inputs, which are anything but!)
+	</div><div class="para">
+		Seam lets us provide a value binding that maps a named request parameter to an attribute of a model object.
+	</div><pre class="programlisting">&lt;pages&gt;
+    &lt;page view-id="/hello.jsp" action="#{helloWorld.sayHello}"&gt;
+        &lt;param name="firstName" value="#{person.firstName}"/&gt;
+        &lt;param name="lastName" value="#{person.lastName}"/&gt;
+    &lt;/page&gt;
+&lt;/pages&gt;
+</pre><div class="para">
+		The <code class="literal">&lt;param&gt;</code> declaration is bidirectional, just like a value binding for a JSF input:
+	</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+				When a non-faces (GET) request for the view id occurs, Seam sets the value of the named request parameter onto the model object, after performing appropriate type conversions.
+			</div></li><li class="listitem"><div class="para">
+				Any <code class="literal">&lt;s:link&gt;</code> or <code class="literal">&lt;s:button&gt;</code> transparently includes the request parameter. The value of the parameter is determined by evaluating the value binding during the render phase (when the <code class="literal">&lt;s:link&gt;</code> is rendered).
+			</div></li><li class="listitem"><div class="para">
+				Any navigation rule with a <code class="literal">&lt;redirect/&gt;</code> to the view id transparently includes the request parameter. The value of the parameter is determined by evaluating the value binding at the end of the invoke application phase.
+			</div></li><li class="listitem"><div class="para">
+				The value is transparently propagated with any JSF form submission for the page with the given view-id. (This means that view parameters behave like <code class="literal">PAGE</code>-scoped context variables for faces requests.
+			</div></li></ul></div><div class="para">
+		The essential idea behind all this is that <span class="emphasis"><em>however</em></span> we get from any other page to <code class="literal">/hello.jsp</code> (or from <code class="literal">/hello.jsp</code> back to <code class="literal">/hello.jsp</code>), the value of the model attribute referred to in the value binding is <span class="emphasis"><em>remembered</em></span>, without the need for a conversation (or other server-side state).
+	</div><div class="para">
+		This all sounds pretty complex, however the initial effort is worth it in the end. Page parameters are the most elegant way to propagate state across a non-faces request. They are especially cool for problems like search screens with bookmarkable results pages, where we would like to be able to write our application code to handle both POST and GET requests with the same code. Page parameters eliminate repetitive listing of request parameters in the view definition and make redirects much easier to code.
+	</div><div class="para">
+		You don not need an actual page action method binding to use a page parameter. The following is perfectly valid:
+	</div><pre class="programlisting">&lt;pages&gt;
+    &lt;page view-id="/hello.jsp"&gt;
+        &lt;param name="firstName" value="#{person.firstName}"/&gt;
+        &lt;param name="lastName" value="#{person.lastName}"/&gt;
+    &lt;/page&gt;
+&lt;/pages&gt;
+</pre><div class="para">
+		You can even specify a JSF converter:
+	</div><pre class="programlisting">&lt;pages&gt;
+    &lt;page view-id="/calculator.jsp" action="#{calculator.calculate}"&gt;
+        &lt;param name="x" value="#{calculator.lhs}"/&gt;
+        &lt;param name="y" value="#{calculator.rhs}"/&gt;
+        &lt;param name="op" converterId="com.my.calculator.OperatorConverter" value="#{calculator.op}"/&gt;
+    &lt;/page&gt;
+&lt;/pages&gt;
+</pre><pre class="programlisting">&lt;pages&gt;
+    &lt;page view-id="/calculator.jsp" action="#{calculator.calculate}"&gt;
+        &lt;param name="x" value="#{calculator.lhs}"/&gt;
+        &lt;param name="y" value="#{calculator.rhs}"/&gt;
+        &lt;param name="op" converter="#{operatorConverter}" value="#{calculator.op}"/&gt;
+    &lt;/page&gt;
+&lt;/pages&gt;
+</pre></div><div class="sect3" title="5.1.1.2. Navigation"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Page_actions-Navigation" class="title">Navigation</h1></div></div></div><div class="para">
+		You can use standard JSF navigation rules defined in <code class="literal">faces-config.xml</code> in a Seam application. However, JSF navigation rules have a number of annoying limitations:
+	</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+				It is not possible to specify request parameters to be used when redirecting.
+			</div></li><li class="listitem"><div class="para">
+				It is not possible to begin or end conversations from a rule.
+			</div></li><li class="listitem"><div class="para">
+				Rules work by evaluating the return value of the action method; it is not possible to evaluate an arbitrary EL expression.
+			</div></li></ul></div><div class="para">
+		A further problem is that <span class="emphasis"><em>orchestration</em></span> logic gets scattered between <code class="literal">pages.xml</code> and <code class="literal">faces-config.xml</code>. It is better to unify this logic into <code class="literal">pages.xml</code>.
+	</div><div class="para">
+		This JSF navigation rule:
+	</div><pre class="programlisting">&lt;navigation-rule&gt;
+    &lt;from-view-id&gt;/editDocument.xhtml&lt;/from-view-id&gt;
+    
+    &lt;navigation-case&gt;
+        &lt;from-action&gt;#{documentEditor.update}&lt;/from-action&gt;
+        &lt;from-outcome&gt;success&lt;/from-outcome&gt;
+        &lt;to-view-id&gt;/viewDocument.xhtml&lt;/to-view-id&gt;
+        &lt;redirect/&gt;
+    &lt;/navigation-case&gt;
+    
+&lt;/navigation-rule&gt;
+</pre><div class="para">
+		Can be rewritten as follows:
+	</div><pre class="programlisting">&lt;page view-id="/editDocument.xhtml"&gt;
+    
+    &lt;navigation from-action="#{documentEditor.update}"&gt;
+        &lt;rule if-outcome="success"&gt;
+            &lt;redirect view-id="/viewDocument.xhtml"/&gt;
+        &lt;/rule&gt;
+    &lt;/navigation&gt;
+    
+&lt;/page&gt;
+</pre><div class="para">
+		But it would be even nicer if we did not have to pollute our <code class="literal">DocumentEditor</code> component with string-valued return values (the JSF outcomes). So Seam lets us write:
+	</div><pre class="programlisting">&lt;page view-id="/editDocument.xhtml"&gt;
+    
+    &lt;navigation from-action="#{documentEditor.update}" 
+                   evaluate="#{documentEditor.errors.size}"&gt;
+        &lt;rule if-outcome="0"&gt;
+            &lt;redirect view-id="/viewDocument.xhtml"/&gt;
+        &lt;/rule&gt;
+    &lt;/navigation&gt;
+    
+&lt;/page&gt;
+</pre><div class="para">
+		Or even:
+	</div><pre class="programlisting">&lt;page view-id="/editDocument.xhtml"&gt;
+    
+    &lt;navigation from-action="#{documentEditor.update}"&gt;
+        &lt;rule if="#{documentEditor.errors.empty}"&gt;
+            &lt;redirect view-id="/viewDocument.xhtml"/&gt;
+        &lt;/rule&gt;
+    &lt;/navigation&gt;
+    
+&lt;/page&gt;
+</pre><div class="para">
+		The first form evaluates a value binding to determine the outcome value to be used by the subsequent rules. The second approach ignores the outcome and evaluates a value binding for each possible rule.
+	</div><div class="para">
+		When an update succeeds, we probably want to end the current conversation. We can do that like this:
+	</div><pre class="programlisting">&lt;page view-id="/editDocument.xhtml"&gt;
+    
+    &lt;navigation from-action="#{documentEditor.update}"&gt;
+        &lt;rule if="#{documentEditor.errors.empty}"&gt;
+            &lt;end-conversation/&gt;
+            &lt;redirect view-id="/viewDocument.xhtml"/&gt;
+        &lt;/rule&gt;
+    &lt;/navigation&gt;
+    
+&lt;/page&gt;
+</pre><div class="para">
+		But ending the conversation loses any state associated with the conversation, including the document we are currently interested in! One solution would be to use an immediate render instead of a redirect:
+	</div><pre class="programlisting">&lt;page view-id="/editDocument.xhtml"&gt;
+    
+    &lt;navigation from-action="#{documentEditor.update}"&gt;
+        &lt;rule if="#{documentEditor.errors.empty}"&gt;
+            &lt;end-conversation/&gt;
+            &lt;render view-id="/viewDocument.xhtml"/&gt;
+        &lt;/rule&gt;
+    &lt;/navigation&gt;
+    
+&lt;/page&gt;
+</pre><div class="para">
+		But the correct solution is to pass the document ID as a request parameter:
+	</div><pre class="programlisting">&lt;page view-id="/editDocument.xhtml"&gt;
+    
+    &lt;navigation from-action="#{documentEditor.update}"&gt;
+        &lt;rule if="#{documentEditor.errors.empty}"&gt;
+            &lt;end-conversation/&gt;
+            &lt;redirect view-id="/viewDocument.xhtml"&gt;
+                &lt;param name="documentId" value="#{documentEditor.documentId}"/&gt;
+            &lt;/redirect&gt;
+        &lt;/rule&gt;
+    &lt;/navigation&gt;
+    
+&lt;/page&gt;
+</pre><div class="para">
+		Null outcomes are a special case in JSF. The null outcome is interpreted to mean <span class="emphasis"><em>redisplay the page</em></span>. The following navigation rule matches any non-null outcome, but <span class="emphasis"><em>not</em></span> the null outcome:
+	</div><pre class="programlisting">&lt;page view-id="/editDocument.xhtml"&gt;
+    
+    &lt;navigation from-action="#{documentEditor.update}"&gt;
+        &lt;rule&gt;
+            &lt;render view-id="/viewDocument.xhtml"/&gt;
+        &lt;/rule&gt;
+    &lt;/navigation&gt;
+    
+&lt;/page&gt;
+</pre><div class="para">
+		If you want to perform navigation when a null outcome occurs, use the following form instead:
+	</div><pre class="programlisting">&lt;page view-id="/editDocument.xhtml"&gt;
+    
+    &lt;navigation from-action="#{documentEditor.update}"&gt;
+        &lt;render view-id="/viewDocument.xhtml"/&gt;
+    &lt;/navigation&gt;
+    
+&lt;/page&gt;
+</pre></div><div class="sect3" title="5.1.1.3. Fine-grained files for definition of navigation, page actions and parameters"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Page_actions-Fine_grained_files_for_definition_of_navigation_page_actions_and_parameters" class="title">Fine-grained files for definition of navigation, page actions and parameters</h1></div></div></div><div class="para">
+		If you have a lot of different page actions and page parameters, or even just a lot of navigation rules, you will almost certainly want to split the declarations up over multiple files. You can define actions and parameters for a page with the view id <code class="literal">/calc/calculator.jsp</code> in a resource named <code class="literal">calc/calculator.page.xml</code>. The root element in this case is the <code class="literal">&lt;page&gt;</code> element, and the view id is implied:
+	</div><pre class="programlisting">&lt;page action="#{calculator.calculate}"&gt;
+    &lt;param name="x" value="#{calculator.lhs}"/&gt;
+    &lt;param name="y" value="#{calculator.rhs}"/&gt;
+    &lt;param name="op" converter="#{operatorConverter}" value="#{calculator.op}"/&gt;
+&lt;/page&gt;
+</pre></div></div><div class="sect2" title="5.1.2. Component-driven events"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam_events-Component_driven_events" class="title">Component-driven events</h1></div></div></div><div class="para">
+		Seam components can interact by simply calling each others methods. Stateful components may even implement the observer/observable pattern. But to enable components to interact in a more loosely-coupled fashion than is possible when the components call each others methods directly, Seam provides <span class="emphasis"><em>component-driven events</em></span>.
+	</div><div class="para">
+		We specify event listeners (observers) in <code class="literal">components.xml</code>.
+	</div><pre class="programlisting">&lt;components&gt;
+    &lt;event type="hello"&gt;
+        &lt;action expression="#{helloListener.sayHelloBack}"/&gt;
+        &lt;action expression="#{logger.logHello}"/&gt;
+    &lt;/event&gt;
+&lt;/components&gt;
+</pre><div class="para">
+		Where the <span class="emphasis"><em>event type</em></span> is just an arbitrary string.
+	</div><div class="para">
+		When an event occurs, the actions registered for that event will be called in the order they appear in <code class="literal">components.xml</code>. How does a component raise an event? Seam provides a built-in component for this.
+	</div><pre class="programlisting">@Name("helloWorld")
+public class HelloWorld {
+    public void sayHello() {
+        FacesMessages.instance().add("Hello World!");
+        Events.instance().raiseEvent("hello");
+    }
+}
+</pre><div class="para">
+		Or you can use an annotation.
+	</div><pre class="programlisting">@Name("helloWorld")
+public class HelloWorld {
+    @RaiseEvent("hello")
+    public void sayHello() {
+        FacesMessages.instance().add("Hello World!");
+    }
+}
+</pre><div class="para">
+		Notice that this event producer has no dependency upon event consumers. The event listener may now be implemented with absolutely no dependency upon the producer:
+	</div><pre class="programlisting">@Name("helloListener")
+public class HelloListener {
+    public void sayHelloBack() {
+        FacesMessages.instance().add("Hello to you too!");
+    }
+}
+</pre><div class="para">
+		The method binding defined in <code class="literal">components.xml</code> above takes care of mapping the event to the consumer. If you do not like futzing about in the <code class="literal">components.xml</code> file, you can use an annotation instead:
+	</div><pre class="programlisting">@Name("helloListener")
+public class HelloListener {
+    @Observer("hello")
+    public void sayHelloBack() {
+        FacesMessages.instance().add("Hello to you too!");
+    }
+}
+</pre><div class="para">
+		In terms of event objects, Seam does not require an event object to propagate state between event producer and listener. State is held in the Seam contexts, and is shared between components. However, if you really want to pass an event object, you can:
+	</div><pre class="programlisting">@Name("helloWorld")
+public class HelloWorld {
+    private String name;
+    public void sayHello() {
+        FacesMessages.instance().add("Hello World, my name is #0.", name);
+        Events.instance().raiseEvent("hello", name);
+    }
+}
+</pre><pre class="programlisting">@Name("helloListener")
+public class HelloListener {
+    @Observer("hello")
+    public void sayHelloBack(String name) {
+        FacesMessages.instance().add("Hello #0!", name);
+    }
+}
+</pre></div><div class="sect2" title="5.1.3. Contextual events"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam_events-Contextual_events" class="title">Contextual events</h1></div></div></div><div class="para">
+		Seam defines a number of built-in events that the application can use to perform special kinds of framework integration. The events are:
+	</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+				<code class="literal">org.jboss.seam.validationFailed</code> — called when JSF validation fails
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">org.jboss.seam.noConversation</code> — called when there is no long running conversation and a long running conversation is required
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">org.jboss.seam.preSetVariable.&lt;name&gt;</code> — called when the context variable &lt;name&gt; is set
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">org.jboss.seam.postSetVariable.&lt;name&gt;</code> — called when the context variable &lt;name&gt; is set
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">org.jboss.seam.preRemoveVariable.&lt;name&gt;</code> — called when the context variable &lt;name&gt; is unset
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">org.jboss.seam.postRemoveVariable.&lt;name&gt;</code> — called when the context variable &lt;name&gt; is unset
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">org.jboss.seam.preDestroyContext.&lt;SCOPE&gt;</code> — called before the &lt;SCOPE&gt; context is destroyed
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">org.jboss.seam.postDestroyContext.&lt;SCOPE&gt;</code> — called after the &lt;SCOPE&gt; context is destroyed
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">org.jboss.seam.beginConversation </code>— called whenever a long-running conversation begins
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">org.jboss.seam.endConversation </code>— called whenever a long-running conversation ends
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">org.jboss.seam.beginPageflow.&lt;name&gt; </code>— called when the pageflow &lt;name&gt; begins
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">org.jboss.seam.endPageflow.&lt;name&gt; </code>— called when the pageflow &lt;name&gt; ends
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">org.jboss.seam.createProcess.&lt;name&gt; </code>— called when the process &lt;name&gt; is created
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">org.jboss.seam.endProcess.&lt;name&gt; </code>— called when the process &lt;name&gt; ends
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">org.jboss.seam.initProcess.&lt;name&gt; </code>— called when the process &lt;name&gt; is associated with the conversation
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">org.jboss.seam.initTask.&lt;name&gt; </code>— called when the task &lt;name&gt; is associated with the conversation
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">org.jboss.seam.startTask.&lt;name&gt; </code>— called when the task &lt;name&gt; is started
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">org.jboss.seam.endTask.&lt;name&gt; </code>— called when the task &lt;name&gt; is ended
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">org.jboss.seam.postCreate.&lt;name&gt; </code>— called when the component &lt;name&gt; is created
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">org.jboss.seam.preDestroy.&lt;name&gt; </code>— called when the component &lt;name&gt; is destroyed
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">org.jboss.seam.beforePhase </code>— called before the start of a JSF phase
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">org.jboss.seam.afterPhase </code>— called after the end of a JSF phase
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">org.jboss.seam.postAuthenticate.&lt;name&gt; </code>— called after a user is authenticated
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">org.jboss.seam.preAuthenticate.&lt;name&gt; </code>— called before attempting to authenticate a user
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">org.jboss.seam.notLoggedIn</code> — called there is no authenticated user and authentication is required
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">org.jboss.seam.rememberMe</code> — occurs when Seam security detects the username in a cookie
+			</div></li></ul></div><div class="para">
+		Seam components may observe any of these events in just the same way they observe any other component-driven events.
+	</div></div></div><div class="sect1" title="5.2. Seam interceptors"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Events_interceptors_and_exception_handling-Seam_interceptors" class="title">Seam interceptors</h1></div></div></div><div class="para">
+		EJB 3.0 introduced a standard interceptor model for session bean components. To add an interceptor to a bean, you need to write a class with a method annotated <code class="literal">@AroundInvoke</code> and annotate the bean with an <code class="literal">@Interceptors</code> annotation that specifies the name of the interceptor class. For example, the following interceptor checks that the user is logged in before allowing invoking an action listener method:
+	</div><pre class="programlisting">public class LoggedInInterceptor {
+
+   @AroundInvoke
+   public Object checkLoggedIn(InvocationContext invocation) throws Exception {
+   
+      boolean isLoggedIn = Contexts.getSessionContext().get("loggedIn")!=null;
+      if (isLoggedIn) {
+         //the user is already logged in
+         return invocation.proceed();
+      }
+      else {
+         //the user is not logged in, fwd to login page
+         return "login";
+      }
+   }
+
+}
+</pre><div class="para">
+		To apply this interceptor to a session bean which acts as an action listener, we must annotate the session bean <code class="literal">@Interceptors(LoggedInInterceptor.class)</code>. This is a somewhat ugly annotation. Seam builds upon the interceptor framework in EJB3 by allowing you to use <code class="literal">@Interceptors</code> as a meta-annotation. In our example, we would create an <code class="literal">@LoggedIn</code> annotation, as follows:
+	</div><pre class="programlisting">@Target(TYPE)
+ at Retention(RUNTIME)
+ at Interceptors(LoggedInInterceptor.class)
+public @interface LoggedIn {}
+</pre><div class="para">
+		We can now simply annotate our action listener bean with <code class="literal">@LoggedIn</code> to apply the interceptor.
+	</div><pre class="programlisting">@Stateless
+ at Name("changePasswordAction")
+ at LoggedIn
+ at Interceptors(SeamInterceptor.class)
+public class ChangePasswordAction implements ChangePassword { 
+    
+    ...
+    
+    public String changePassword() { ... }
+    
+}
+</pre><div class="para">
+		If interceptor ordering is important (it usually is), you can add <code class="literal">@Interceptor</code> annotations to your interceptor classes to specify a partial order of interceptors.
+	</div><pre class="programlisting">@Interceptor(around={BijectionInterceptor.class,
+                     ValidationInterceptor.class,
+                     ConversationInterceptor.class},
+             within=RemoveInterceptor.class)
+public class LoggedInInterceptor
+{
+    ...
+}
+</pre><div class="para">
+		You can even have a <span class="emphasis"><em>client-side</em></span> interceptor, that runs around any of the built-in functionality of EJB3:
+	</div><pre class="programlisting">@Interceptor(type=CLIENT)
+public class LoggedInInterceptor
+{
+    ...
+}
+</pre><div class="para">
+		EJB interceptors are stateful, with a lifecycle that is the same as the component they intercept. For interceptors which do not need to maintain state, Seam lets you get a performance optimization by specifying <code class="literal">@Interceptor(stateless=true)</code>.
+	</div><div class="para">
+		Much of the functionality of Seam is implemented as a set of built-in Seam interceptors, including the interceptors named in the previous example. You do not have to explicitly specify these interceptors by annotating your components; they exist for all interceptable Seam components.
+	</div><div class="para">
+		You can even use Seam interceptors with JavaBean components, not just EJB3 beans.
+	</div><div class="para">
+		EJB defines interception not only for business methods (using <code class="literal">@AroundInvoke</code>), but also for the lifecycle methods <code class="literal">@PostConstruct</code>, <code class="literal">@PreDestroy</code>, <code class="literal">@PrePassivate</code> and <code class="literal">@PostActive</code>. Seam supports all these lifecycle methods on both component and interceptor not only for EJB3 beans, but also for JavaBean components (except <code class="literal">@PreDestroy</code> which is not meaningful for JavaBean components).
+	</div></div><div class="sect1" title="5.3. Managing exceptions"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Events_interceptors_and_exception_handling-Managing_exceptions" class="title">Managing exceptions</h1></div></div></div><div class="para">
+		JSF is surprisingly limited when it comes to exception handling. As a partial workaround for this problem, Seam lets you define how a particular class of exception is to be treated by annotating the exception class, or declaring the exception class in an XML file. This facility is meant to be combined with the EJB 3.0-standard <code class="literal">@ApplicationException</code> annotation which specifies whether the exception should cause a transaction rollback.
+	</div><div class="sect2" title="5.3.1. Exceptions and transactions"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Managing_exceptions-Exceptions_and_transactions" class="title">Exceptions and transactions</h1></div></div></div><div class="para">
+		EJB specifies well-defined rules that let us control whether an exception immediately marks the current transaction for rollback when it is thrown by a business method of the bean: <span class="emphasis"><em>system exceptions</em></span> always cause a transaction rollback, <span class="emphasis"><em>application exceptions</em></span> do not cause a rollback by default, but they do if <code class="literal">@ApplicationException(rollback=true)</code> is specified. (An application exception is any checked exception, or any unchecked exception annotated <code class="literal">@ApplicationException</code>. A system exception is any unchecked exception without an <code class="literal">@ApplicationException</code> annotation.)
+	</div><div class="note"><h2>Note</h2><div class="para">
+			There is a difference between marking a transaction for rollback, and actually rolling it back. The exception rules say that the transaction should be marked rollback only, but it may still be active after the exception is thrown.
+		</div></div><div class="para">
+		Seam applies the EJB 3.0 exception rollback rules also to Seam JavaBean components.
+	</div><div class="para">
+		But these rules only apply in the Seam component layer. What about an exception that is uncaught and propagates out of the Seam component layer, and out of the JSF layer? Well, it is always wrong to leave a dangling transaction open, so Seam rolls back any active transaction when an exception occurs and is uncaught in the Seam component layer.
+	</div></div><div class="sect2" title="5.3.2. Enabling Seam exception handling"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Managing_exceptions-Enabling_Seam_exception_handling" class="title">Enabling Seam exception handling</h1></div></div></div><div class="para">
+		To enable Seam's exception handling, we need to make sure we have the master servlet filter declared in <code class="literal">web.xml</code>:
+	</div><pre class="programlisting">&lt;filter&gt;
+    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;
+    &lt;filter-class&gt;org.jboss.seam.servlet.SeamFilter&lt;/filter-class&gt;
+&lt;/filter&gt;
+
+&lt;filter-mapping&gt;
+    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;
+    &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;
+&lt;/filter-mapping&gt;
+</pre><div class="para">
+		You may also need to disable Facelets development mode in <code class="literal">web.xml</code> and Seam debug mode in <code class="literal">components.xml</code> if you want your exception handlers to fire.
+	</div></div><div class="sect2" title="5.3.3. Using annotations for exception handling"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Managing_exceptions-Using_annotations_for_exception_handling" class="title">Using annotations for exception handling</h1></div></div></div><div class="para">
+		The following exception results in a HTTP 404 error whenever it propagates out of the Seam component layer. It does not roll back the current transaction immediately when thrown, but the transaction will be rolled back if it the exception is not caught by another Seam component.
+	</div><pre class="programlisting">@HttpError(errorCode=404)
+public class ApplicationException extends Exception { ... }
+</pre><div class="para">
+		This exception results in a browser redirect whenever it propagates out of the Seam component layer. It also ends the current conversation. It causes an immediate rollback of the current transaction.
+	</div><pre class="programlisting">@Redirect(viewId="/failure.xhtml", end=true)
+ at ApplicationException(rollback=true)
+public class UnrecoverableApplicationException extends RuntimeException { ... }
+</pre><div class="important"><h2>Important</h2><div class="para">
+			<code class="literal">@Redirect</code> does not work for exceptions which occur during the render phase of the JSF lifecycle.
+		</div></div><div class="para">
+		This exception results in a redirect, along with a message to the user, when it propagates out of the Seam component layer. It also immediately rolls back the current transaction.
+	</div><pre class="programlisting">@Redirect(viewId="/error.xhtml", message="Unexpected error")
+public class SystemException extends RuntimeException { ... }
+</pre></div><div class="sect2" title="5.3.4. Using XML for exception handling"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Managing_exceptions-Using_XML_for_exception_handling" class="title">Using XML for exception handling</h1></div></div></div><div class="para">
+		Since we cannot add annotations to all the exception classes we are interested in, Seam also lets us specify this functionality in <code class="literal">pages.xml</code>.
+	</div><pre class="programlisting">&lt;pages&gt;
+   
+   &lt;exception class="javax.persistence.EntityNotFoundException"&gt;
+      &lt;http-error error-code="404"/&gt;
+   &lt;/exception&gt;
+   
+   &lt;exception class="javax.persistence.PersistenceException"&gt;
+      &lt;end-conversation/&gt;
+      &lt;redirect view-id="/error.xhtml"&gt;
+          &lt;message&gt;Database access failed&lt;/message&gt;
+      &lt;/redirect&gt;
+   &lt;/exception&gt;
+   
+   &lt;exception&gt;
+      &lt;end-conversation/&gt;
+      &lt;redirect view-id="/error.xhtml"&gt;
+          &lt;message&gt;Unexpected failure&lt;/message&gt;
+      &lt;/redirect&gt;
+   &lt;/exception&gt;
+   
+&lt;/pages&gt;
+</pre><div class="para">
+		The last <code class="literal">&lt;exception&gt;</code> declaration does not specify a class, and is a catch-all for any exception for which handling is not otherwise specified via annotations or in <code class="literal">pages.xml</code>.
+	</div><div class="para">
+		You can also access the handled exception instance through EL, Seam places it in the conversation context, for example, to access the message of the exception:
+	</div><pre class="programlisting">...
+throw new AuthorizationException("You are not allowed to do this!");
+
+&lt;pages&gt;
+
+    &lt;exception class="org.jboss.seam.security.AuthorizationException"&gt;
+        &lt;end-conversation/&gt;
+        &lt;redirect view-id="/error.xhtml"&gt;
+            &lt;message severity="WARN"&gt;#{handledException.message}&lt;/message&gt;
+        &lt;/redirect&gt;
+    &lt;/exception&gt;
+
+&lt;/pages&gt;
+</pre></div></div></div><div xml:lang="en-US" class="chapter" title="Chapter 6. Conversations and workspace management" lang="en-US"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Conversations_and_workspace_management">Chapter 6. Conversations and workspace management</h2></div></div></div><div class="toc"><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Conversations_and_workspace_management-Seams_conversation_model">6.1. Seam's conversation model</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Conversations_and_workspace_management-Nested_conversations">6.2. Nested conversations</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Conversations_and_workspace_management-Starting_conversations_with_GET_requests">6.3. Starting conversations with GET requests</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Conversations_and_workspace_management-Using_slink_and_sbut!
 ton">6.4. Using <code class="literal">&lt;s:link&gt;</code> and <code class="literal">&lt;s:button&gt;</code></a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Conversations_and_workspace_management-Success_messages">6.5. Success messages</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Conversations_and_workspace_management-Using_an_explicit_conversation_id">6.6. Using an <span class="emphasis"><em>explicit</em></span> conversation ID</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Conversations_and_workspace_management-Workspace_management">6.7. Workspace management</a></span></dt><dd><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Workspace_management-Workspace_management_and_JSF_navigation">6.7.1. Workspace management and JSF navigation</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Workspace_management-Workspace_management_and_jPDL_pageflow">6.7.2. Workspace manag!
 ement and jPDL pageflow</a></span></dt><dt><span class="sectio!
 n"><a hr
ef="#Seam_Reference_Guide-Workspace_management-The_conversation_switcher">6.7.3. The conversation switcher</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Workspace_management-The_conversation_list">6.7.4. The conversation list</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Workspace_management-Breadcrumbs">6.7.5. Breadcrumbs</a></span></dt></dl></dd><dt><span class="section"><a href="#Seam_Reference_Guide-Conversations_and_workspace_management-Conversational_components_and_JSF_component_bindings">6.8. Conversational components and JSF component bindings</a></span></dt></dl></div><div class="para">
+		It is time to understand Seam's conversation model in more detail.
+	</div><div class="section" title="6.1. Seam's conversation model"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Conversations_and_workspace_management-Seams_conversation_model">6.1. Seam's conversation model</h2></div></div></div><div class="para">
+			The examples we have seen so far make use of a very simple conversation model that follows these rules:
+		</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+					There is always a conversation context active during the apply request values, process validations, update model values, invoke application and render response phases of the JSF request lifecycle.
+				</div></li><li class="listitem"><div class="para">
+					At the end of the restore view phase of the JSF request lifecycle, Seam attempts to restore any previous long-running conversation context. If none exists, Seam creates a new temporary conversation context.
+				</div></li><li class="listitem"><div class="para">
+					When an <code class="literal">@Begin</code> method is encountered, the temporary conversation context is promoted to a long running conversation.
+				</div></li><li class="listitem"><div class="para">
+					When an <code class="literal">@End</code> method is encountered, any long-running conversation context is demoted to a temporary conversation.
+				</div></li><li class="listitem"><div class="para">
+					At the end of the render response phase of the JSF request lifecycle, Seam stores the contents of a long running conversation context or destroys the contents of a temporary conversation context.
+				</div></li><li class="listitem"><div class="para">
+					Any faces request (a JSF postback) will propagate the conversation context. By default, non-faces requests (GET requests, for example) do not propagate the conversation context, but see below for more information on this.
+				</div></li><li class="listitem"><div class="para">
+					If the JSF request lifecycle is foreshortened by a redirect, Seam transparently stores and restores the current conversation context—unless the conversation was already ended via <code class="literal">@End(beforeRedirect=true)</code>.
+				</div></li></ul></div><div class="para">
+			Seam transparently propagates the conversation context across JSF postbacks and redirects. If you do not do anything special, a <span class="emphasis"><em>non-faces request</em></span> (a GET request for example) will not propagate the conversation context and will be processed in a new temporary conversation. This is usually - but not always - the desired behavior.
+		</div><div class="para">
+			If you want to propagate a Seam conversation across a non-faces request, you need to explicitly code the Seam <span class="emphasis"><em>conversation id</em></span> as a request parameter:
+		</div><pre class="programlisting">&lt;a href="main.jsf?conversationId=#{conversation.id}"&gt;Continue&lt;/a&gt;
+</pre><div class="para">
+			Or, the more JSF-ish:
+		</div><pre class="programlisting">&lt;h:outputLink value="main.jsf"&gt;
+    &lt;f:param name="conversationId" value="#{conversation.id}"/&gt;
+    &lt;h:outputText value="Continue"/&gt;
+&lt;/h:outputLink&gt;
+</pre><div class="para">
+			If you use the Seam tag library, this is equivalent:
+		</div><pre class="programlisting">&lt;h:outputLink value="main.jsf"&gt;
+    &lt;s:conversationId/&gt;
+    &lt;h:outputText value="Continue"/&gt;
+&lt;/h:outputLink&gt;
+</pre><div class="para">
+			If you wish to disable propagation of the conversation context for a postback, a similar trick is used:
+		</div><pre class="programlisting">&lt;h:commandLink action="main" value="Exit"&gt;
+    &lt;f:param name="conversationPropagation" value="none"/&gt;
+&lt;/h:commandLink&gt;
+</pre><div class="para">
+			If you use the Seam tag library, this is equivalent:
+		</div><pre class="programlisting">&lt;h:commandLink action="main" value="Exit"&gt;
+    &lt;s:conversationPropagation type="none"/&gt;
+&lt;/h:commandLink&gt;
+</pre><div class="para">
+			Note that disabling conversation context propagation is absolutely not the same thing as ending the conversation.
+		</div><div class="para">
+			The <code class="literal">conversationPropagation</code> request parameter, or the <code class="literal">&lt;s:conversationPropagation&gt;</code> tag may even be used to begin and end conversation, or begin a nested conversation.
+		</div><pre class="programlisting">&lt;h:commandLink action="main" value="Exit"&gt;
+    &lt;s:conversationPropagation type="end"/&gt;
+&lt;/h:commandLink&gt;
+</pre><pre class="programlisting">&lt;h:commandLink action="main" value="Select Child"&gt;
+    &lt;s:conversationPropagation type="nested"/&gt;
+&lt;/h:commandLink&gt;
+</pre><pre class="programlisting">&lt;h:commandLink action="main" value="Select Hotel"&gt;
+    &lt;s:conversationPropagation type="begin"/&gt;
+&lt;/h:commandLink&gt;
+</pre><pre class="programlisting">&lt;h:commandLink action="main" value="Select Hotel"&gt;
+    &lt;s:conversationPropagation type="join"/&gt;
+&lt;/h:commandLink&gt;
+</pre><div class="para">
+			This conversation model makes it easy to build applications which behave correctly with respect to multi-window operation. For many applications, this is all that is needed. Some complex applications have either or both of the following additional requirements:
+		</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+					A conversation spans many smaller units of user interaction, which execute serially or even concurrently. The smaller <span class="emphasis"><em>nested conversations</em></span> have their own isolated set of conversation state, and also have access to the state of the outer conversation.
+				</div></li><li class="listitem"><div class="para">
+					The user is able to switch between many conversations within the same browser window. This feature is called <span class="emphasis"><em>workspace management</em></span>.
+				</div></li></ul></div></div><div class="section" title="6.2. Nested conversations"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Conversations_and_workspace_management-Nested_conversations">6.2. Nested conversations</h2></div></div></div><div class="para">
+			A nested conversation is created by invoking a method marked <code class="literal">@Begin(nested=true)</code> inside the scope of an existing conversation. A nested conversation has its own conversation context, and also has read-only access to the context of the outer conversation. (It can read the outer conversation's context variables, but not write to them.) When an <code class="literal">@End</code> is subsequently encountered, the nested conversation will be destroyed, and the outer conversation will resume, by <span class="emphasis"><em>popping</em></span> the conversation stack. Conversations may be nested to any arbitrary depth.
+		</div><div class="para">
+			Certain user activity (workspace management, or the back button) can cause the outer conversation to be resumed before the inner conversation is ended. In this case it is possible to have multiple concurrent nested conversations belonging to the same outer conversation. If the outer conversation ends before a nested conversation ends, Seam destroys all nested conversation contexts along with the outer context.
+		</div><div class="para">
+			A conversation may be thought of as a <span class="emphasis"><em>continuable state</em></span>. Nested conversations allow the application to capture a consistent continuable state at various points in a user interaction, thus insuring truly correct behavior in the face of backbuttoning and workspace management.
+		</div><div class="para">
+			Usually, if a component exists in a parent conversation of the current nested conversation, the nested conversation will use the same instance. Occasionally, it is useful to have a different instance in each nested conversation, so that the component instance that exists in the parent conversation is invisible to its child conversations. You can achieve this behavior by annotating the component <code class="literal">@PerNestedConversation</code>.
+		</div></div><div class="section" title="6.3. Starting conversations with GET requests"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Conversations_and_workspace_management-Starting_conversations_with_GET_requests">6.3. Starting conversations with GET requests</h2></div></div></div><div class="para">
+			JSF does not define any kind of action listener that is triggered when a page is accessed via a non-faces request (for example, a HTTP GET request). This can occur if the user bookmarks the page, or if we navigate to the page via an <code class="literal">&lt;h:outputLink&gt;</code>.
+		</div><div class="para">
+			Sometimes we want to begin a conversation immediately the page is accessed. Since there is no JSF action method, we can't solve the problem in the usual way, by annotating the action with <code class="literal">@Begin</code>.
+		</div><div class="para">
+			A further problem arises if the page needs some state to be fetched into a context variable. We have already seen two ways to solve this problem. If that state is held in a Seam component, we can fetch the state in a <code class="literal">@Create</code> method. If not, we can define a <code class="literal">@Factory</code> method for the context variable.
+		</div><div class="para">
+			If none of these options works for you, Seam lets you define a <span class="emphasis"><em>page action</em></span> in the <code class="literal">pages.xml</code> file.
+		</div><pre class="programlisting">&lt;pages&gt;
+    &lt;page view-id="/messageList.jsp" action="#{messageManager.list}"/&gt;
+    ...
+&lt;/pages&gt;
+</pre><div class="para">
+			This action method is called at the beginning of the render response phase, any time the page is about to be rendered. If a page action returns a non-null outcome, Seam will process any appropriate JSF and Seam navigation rules, possibly resulting in a completely different page being rendered.
+		</div><div class="para">
+			If <span class="emphasis"><em>all</em></span> you want to do before rendering the page is begin a conversation, you could use a built-in action method that does just that:
+		</div><pre class="programlisting">&lt;pages&gt;
+    &lt;page view-id="/messageList.jsp" action="#{conversation.begin}"/&gt;
+    ...
+&lt;/pages&gt;
+</pre><div class="para">
+			Note that you can also call this built-in action from a JSF control, and, similarly, you can use <code class="literal">#{conversation.end}</code> to end conversations.
+		</div><div class="para">
+			If you want more control, to join existing conversations or begin a nested conversion, to begin a pageflow or an atomic conversation, you should use the <code class="literal">&lt;begin-conversation&gt;</code> element.
+		</div><pre class="programlisting">&lt;pages&gt;
+    &lt;page view-id="/messageList.jsp"&gt;
+       &lt;begin-conversation nested="true" pageflow="AddItem"/&gt;
+    &lt;page&gt;
+    ...
+&lt;/pages&gt;
+</pre><div class="para">
+			There is also an <code class="literal">&lt;end-conversation&gt;</code> element.
+		</div><pre class="programlisting">&lt;pages&gt;
+    &lt;page view-id="/home.jsp"&gt;
+       &lt;end-conversation/&gt;
+    &lt;page&gt;
+    ...
+&lt;/pages&gt;
+</pre><div class="para">
+			To solve the first problem, we now have five options:
+		</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+					Annotate the <code class="literal">@Create</code> method with <code class="literal">@Begin</code>
+				</div></li><li class="listitem"><div class="para">
+					Annotate the <code class="literal">@Factory</code> method with <code class="literal">@Begin</code>
+				</div></li><li class="listitem"><div class="para">
+					Annotate the Seam page action method with <code class="literal">@Begin</code>
+				</div></li><li class="listitem"><div class="para">
+					Use <code class="literal">&lt;begin-conversation&gt;</code> in <code class="literal">pages.xml</code>.
+				</div></li><li class="listitem"><div class="para">
+					Use <code class="literal">#{conversation.begin}</code> as the Seam page action method
+				</div></li></ul></div></div><div class="section" title="6.4. Using &lt;s:link&gt; and &lt;s:button&gt;"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Conversations_and_workspace_management-Using_slink_and_sbutton">6.4. Using <code class="literal">&lt;s:link&gt;</code> and <code class="literal">&lt;s:button&gt;</code></h2></div></div></div><div class="para">
+			JSF command links always perform a form submission via JavaScript, which breaks the web browser's "open in new window" or "open in new tab" feature. In plain JSF, you need to use an <code class="literal">&lt;h:outputLink&gt;</code> if you need this functionality. But there are two major limitations to <code class="literal">&lt;h:outputLink&gt;</code>.
+		</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+					JSF provides no way to attach an action listener to an <code class="literal">&lt;h:outputLink&gt;</code>.
+				</div></li><li class="listitem"><div class="para">
+					JSF does not propagate the selected row of a <code class="literal">DataModel</code> since there is no actual form submission.
+				</div></li></ul></div><div class="para">
+			Seam provides the notion of a <span class="emphasis"><em>page action</em></span> to help solve the first problem, but this does nothing to help us with the second problem. We <span class="emphasis"><em>could</em></span> work around this by using the RESTful approach of passing a request parameter and requerying for the selected object on the server side. In some cases—such as the Seam blog example application—this is indeed the best approach. The RESTful style supports bookmarking, since it does not require server-side state. In other cases, where we don't care about bookmarks, the use of <code class="literal">@DataModel</code> and <code class="literal">@DataModelSelection</code> is just so convenient and transparent!
+		</div><div class="para">
+			To fill in this missing functionality, and to make conversation propagation even simpler to manage, Seam provides the <code class="literal">&lt;s:link&gt;</code> JSF tag.
+		</div><div class="para">
+			The link may specify just the JSF view id:
+		</div><pre class="programlisting">&lt;s:link view=“/login.xhtml” value=“Login”/&gt;
+</pre><div class="para">
+			Or, it may specify an action method (in which case the action outcome determines the page that results):
+		</div><pre class="programlisting">&lt;s:link action=“#{login.logout}” value=“Logout”/&gt;
+</pre><div class="para">
+			If you specify <span class="emphasis"><em>both</em></span> a JSF view id and an action method, the 'view' will be used <span class="emphasis"><em>unless</em></span> the action method returns a non-null outcome:
+		</div><pre class="programlisting">&lt;s:link view="/loggedOut.xhtml"  action=“#{login.logout}” value=“Logout”/&gt;
+</pre><div class="para">
+			The link automatically propagates the selected row of a <code class="literal">DataModel</code> using inside <code class="literal">&lt;h:dataTable&gt;</code>:
+		</div><pre class="programlisting">&lt;s:link view=“/hotel.xhtml” action=“#{hotelSearch.selectHotel}” value=“#{hotel.name}”/&gt;
+</pre><div class="para">
+			You can leave the scope of an existing conversation:
+		</div><pre class="programlisting">&lt;s:link view=“/main.xhtml” propagation=“none”/&gt;
+</pre><div class="para">
+			You can begin, end, or nest conversations:
+		</div><pre class="programlisting">&lt;s:link action=“#{issueEditor.viewComment}” propagation=“nest”/&gt;
+</pre><div class="para">
+			If the link begins a conversation, you can even specify a pageflow to be used:
+		</div><pre class="programlisting">&lt;s:link action=“#{documentEditor.getDocument}” propagation=“begin” 
+        pageflow=“EditDocument”/&gt;
+</pre><div class="para">
+			The <code class="literal">taskInstance</code> attribute if for use in jBPM task lists:
+		</div><pre class="programlisting">&lt;s:link action=“#{documentApproval.approveOrReject}” taskInstance=“#{task}”/&gt;
+</pre><div class="para">
+			(See the DVD Store demo application for examples of this.)
+		</div><div class="para">
+			Finally, if you need the <span class="emphasis"><em>link</em></span> to be rendered as a button, use <code class="literal">&lt;s:button&gt;</code>:
+		</div><pre class="programlisting">&lt;s:button action=“#{login.logout}” value=“Logout”/&gt;
+</pre></div><div class="section" title="6.5. Success messages"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Conversations_and_workspace_management-Success_messages">6.5. Success messages</h2></div></div></div><div class="para">
+			It is quite common to display a message to the user indicating success or failure of an action. It is convenient to use a JSF <code class="literal">FacesMessage</code> for this. Unfortunately, a successful action often requires a browser redirect, and JSF does not propagate faces messages across redirects. This makes it quite difficult to display success messages in plain JSF.
+		</div><div class="para">
+			The built in conversation-scoped Seam component named <code class="literal">facesMessages</code> solves this problem. (You must have the Seam redirect filter installed.)
+		</div><pre class="programlisting">@Name("editDocumentAction")
+ at Stateless
+public class EditDocumentBean implements EditDocument {
+    @In EntityManager em;
+    @In Document document;
+    @In FacesMessages facesMessages;
+    
+    public String update() {
+        em.merge(document);
+        facesMessages.add("Document updated");
+    }
+}
+</pre><div class="para">
+			Any message added to <code class="literal">facesMessages</code> is used in the very next render response phase for the current conversation. This even works when there is no long-running conversation since Seam preserves even temporary conversation contexts across redirects.
+		</div><div class="para">
+			You can even include JSF EL expressions in a faces message summary:
+		</div><pre class="programlisting">facesMessages.add("Document #{document.title} was updated");
+</pre><div class="para">
+			You may display the messages in the usual way, for example:
+		</div><pre class="programlisting">&lt;h:messages globalOnly="true"/&gt;
+</pre></div><div class="section" title="6.6. Using an explicit conversation ID"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Conversations_and_workspace_management-Using_an_explicit_conversation_id">6.6. Using an <span class="emphasis"><em>explicit</em></span> conversation ID</h2></div></div></div><div class="para">
+			Ordinarily, Seam generates a meaningless unique ID for each conversation in each session. You can customize the id value when you begin the conversation.
+		</div><div class="para">
+			This feature can be used to customize the conversation id generation algorithm like so:
+		</div><pre class="programlisting">@Begin(id="#{myConversationIdGenerator.nextId}") 
+public void editHotel() { ... }
+</pre><div class="para">
+			Or it can be used to assign a meaningful conversation id:
+		</div><pre class="programlisting">@Begin(id="hotel#{hotel.id}") 
+public String editHotel() { ... }
+</pre><pre class="programlisting">@Begin(id="hotel#{hotelsDataModel.rowData.id}") 
+public String selectHotel() { ... }
+</pre><pre class="programlisting">@Begin(id="entry#{params['blogId']}")
+public String viewBlogEntry() { ... }
+</pre><pre class="programlisting">@BeginTask(id="task#{taskInstance.id}") 
+public String approveDocument() { ... }
+</pre><div class="para">
+			Clearly, these example result in the same conversation id every time a particular hotel, blog or task is selected. So what happens if a conversation with the same conversation id already exists when the new conversation begins? Well, Seam detects the existing conversation and redirects to that conversation without running the <code class="literal">@Begin</code> method again. This feature helps control the number of workspaces that are created when using workspace management.
+		</div></div><div class="section" title="6.7. Workspace management"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Conversations_and_workspace_management-Workspace_management">6.7. Workspace management</h2></div></div></div><div class="para">
+			Workspace management is the ability to <span class="emphasis"><em>switch</em></span> conversations in a single window. Seam makes workspace management completely transparent at the level of the Java code. To enable workspace management, all you need to do is:
+		</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+					Provide <span class="emphasis"><em>description</em></span> text for each view ID (when using JSF or Seam navigation rules) or page node (when using jPDL pageflows). This description text is displayed to the user by the workspace switchers.
+				</div></li><li class="listitem"><div class="para">
+					Include one or more of the standard workspace switcher JSP or facelets fragments in your pages. The standard fragments support workspace management via a drop down menu, a list of conversations, or breadcrumbs.
+				</div></li></ul></div><div class="section" title="6.7.1. Workspace management and JSF navigation"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Workspace_management-Workspace_management_and_JSF_navigation">6.7.1. Workspace management and JSF navigation</h3></div></div></div><div class="para">
+				When you use JSF or Seam navigation rules, Seam switches to a conversation by restoring the current <code class="literal">view-id</code> for that conversation. The descriptive text for the workspace is defined in a file called <code class="literal">pages.xml</code> that Seam expects to find in the <code class="literal">WEB-INF</code> directory, right next to <code class="literal">faces-config.xml</code>:
+			</div><pre class="programlisting">&lt;pages&gt;
+    &lt;page view-id="/main.xhtml"&gt;Search hotels: #{hotelBooking.searchString}&lt;/page&gt;
+    &lt;page view-id="/hotel.xhtml"&gt;View hotel: #{hotel.name}&lt;/page&gt;
+    &lt;page view-id="/book.xhtml"&gt;Book hotel: #{hotel.name}&lt;/page&gt;
+    &lt;page view-id="/confirm.xhtml"&gt;Confirm: #{booking.description}&lt;/page&gt;
+&lt;/pages&gt;
+</pre><div class="note"><h2>Note</h2><div class="para">
+					Note that if this file is missing, the Seam application will continue to work perfectly, the only missing functionality will be the ability to switch workspaces.
+				</div></div></div><div class="section" title="6.7.2. Workspace management and jPDL pageflow"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Workspace_management-Workspace_management_and_jPDL_pageflow">6.7.2. Workspace management and jPDL pageflow</h3></div></div></div><div class="para">
+				When you use a jPDL pageflow definition, Seam switches to a conversation by restoring the current jBPM process state. This is a more flexible model since it allows the same <code class="literal">view-id</code> to have different descriptions depending upon the current <code class="literal">&lt;page&gt;</code> node. The description text is defined by the <code class="literal">&lt;page&gt;</code> node:
+			</div><pre class="programlisting">&lt;pageflow-definition name="shopping"&gt;
+
+   &lt;start-state name="start"&gt;
+      &lt;transition to="browse"/&gt;
+   &lt;/start-state&gt;
+   
+   &lt;page name="browse" view-id="/browse.xhtml"&gt;
+      &lt;description&gt;DVD Search: #{search.searchPattern}&lt;/description&gt;
+      &lt;transition to="browse"/&gt;
+      &lt;transition name="checkout" to="checkout"/&gt;
+   &lt;/page&gt;
+   
+   &lt;page name="checkout" view-id="/checkout.xhtml"&gt;
+      &lt;description&gt;Purchase: $#{cart.total}&lt;/description&gt;
+      &lt;transition to="checkout"/&gt;
+      &lt;transition name="complete" to="complete"/&gt;
+   &lt;/page&gt;
+   
+   &lt;page name="complete" view-id="/complete.xhtml"&gt;
+      &lt;end-conversation /&gt;
+   &lt;/page&gt;
+   
+&lt;/pageflow-definition&gt;
+</pre></div><div class="section" title="6.7.3. The conversation switcher"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Workspace_management-The_conversation_switcher">6.7.3. The conversation switcher</h3></div></div></div><div class="para">
+				Include the following fragment in your JSP or facelets page to get a drop-down menu that lets you switch to any current conversation, or to any other page of the application:
+			</div><pre class="programlisting">&lt;h:selectOneMenu value="#{switcher.conversationIdOrOutcome}"&gt;
+    &lt;f:selectItem itemLabel="Find Issues" itemValue="findIssue"/&gt;
+    &lt;f:selectItem itemLabel="Create Issue" itemValue="editIssue"/&gt;
+    &lt;f:selectItems value="#{switcher.selectItems}"/&gt;
+&lt;/h:selectOneMenu&gt;
+&lt;h:commandButton action="#{switcher.select}" value="Switch"/&gt;
+</pre><div class="para">
+				In this example, we have a menu that includes an item for each conversation, together with two additional items that let the user begin a new conversation.
+			</div><div class="mediaobject" align="center"><img src="images/switcher.png" align="middle" /></div></div><div class="section" title="6.7.4. The conversation list"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Workspace_management-The_conversation_list">6.7.4. The conversation list</h3></div></div></div><div class="para">
+				The conversation list is very similar to the conversation switcher, except that it is displayed as a table:
+			</div><pre class="programlisting">&lt;h:dataTable value="#{conversationList}" var="entry"
+        rendered="#{not empty conversationList}"&gt;
+    &lt;h:column&gt;
+        &lt;f:facet name="header"&gt;Workspace&lt;/f:facet&gt;
+        &lt;h:commandLink action="#{entry.select}" value="#{entry.description}"/&gt;
+        &lt;h:outputText value="[current]" rendered="#{entry.current}"/&gt;
+    &lt;/h:column&gt;
+    &lt;h:column&gt;
+        &lt;f:facet name="header"&gt;Activity&lt;/f:facet&gt;
+        &lt;h:outputText value="#{entry.startDatetime}"&gt;
+            &lt;f:convertDateTime type="time" pattern="hh:mm a"/&gt;
+        &lt;/h:outputText&gt;
+        &lt;h:outputText value=" - "/&gt;
+        &lt;h:outputText value="#{entry.lastDatetime}"&gt;
+            &lt;f:convertDateTime type="time" pattern="hh:mm a"/&gt;
+        &lt;/h:outputText&gt;
+    &lt;/h:column&gt;
+    &lt;h:column&gt;
+        &lt;f:facet name="header"&gt;Action&lt;/f:facet&gt;
+        &lt;h:commandButton action="#{entry.select}" value="#{msg.Switch}"/&gt;
+        &lt;h:commandButton action="#{entry.destroy}" value="#{msg.Destroy}"/&gt;
+    &lt;/h:column&gt;
+&lt;/h:dataTable&gt;
+</pre><div class="para">
+				We imagine that you will want to customize this for your own application.
+			</div><div class="mediaobject" align="center"><img src="images/list.png" align="middle" width="444" /></div><div class="para">
+				The conversation list is nice, but it takes up a lot of space on the page, so you probably do not want to put it on <span class="emphasis"><em>every</em></span> page.
+			</div><div class="para">
+				Notice that the conversation list lets the user destroy workspaces.
+			</div></div><div class="section" title="6.7.5. Breadcrumbs"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Workspace_management-Breadcrumbs">6.7.5. Breadcrumbs</h3></div></div></div><div class="para">
+				Breadcrumbs are useful in applications which use a nested conversation model. The breadcrumbs are a list of links to conversations in the current conversation stack:
+			</div><pre class="programlisting">&lt;t:dataList value="#{conversationStack}" var="entry"&gt;
+    &lt;h:outputText value=" | "/&gt; 
+    &lt;h:commandLink value="#{entry.description}" action="#{entry.select}"/&gt;
+&lt;/t:dataList&gt;
+</pre><div class="mediaobject" align="center"><img src="images/breadcrumbs.png" align="middle" width="444" /></div><div class="para">
+				Please refer to the Seam Issue Tracker demo to see all this functionality in action!
+			</div></div></div><div class="section" title="6.8. Conversational components and JSF component bindings"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Conversations_and_workspace_management-Conversational_components_and_JSF_component_bindings">6.8. Conversational components and JSF component bindings</h2></div></div></div><div class="para">
+			Conversational components have one minor limitation: they cannot be used to hold bindings to JSF components. (We generally prefer not to use this feature of JSF unless absolutely necessary, since it creates a hard dependency from application logic to the view.) On a postback request, component bindings are updated during the Restore View phase, before the Seam conversation context has been restored.
+		</div><div class="para">
+			To work around this use an event scoped component to store the component bindings and inject it into the conversation scoped component that requires it.
+		</div><pre class="programlisting">@Name("grid")
+ at Scope(ScopeType.EVENT)
+public class Grid
+{
+    private HtmlPanelGrid htmlPanelGrid;
+
+    // getters and setters
+    ...
+}
+</pre><pre class="programlisting">@Name("gridEditor")
+ at Scope(ScopeType.CONVERSATION)
+public class GridEditor
+{
+    @In(required=false)
+    private Grid grid;
+    
+    ...
+}
+</pre></div></div><div xml:lang="en-US" class="chapter" title="Chapter 7. Pageflows and business processes" lang="en-US"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Pageflows_and_business_processes">Chapter 7. Pageflows and business processes</h2></div></div></div><div class="toc"><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Pageflows_and_business_processes-Pageflow_in_Seam">7.1. Pageflow in Seam</a></span></dt><dd><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Pageflow_in_Seam-The_two_navigation_models">7.1.1. The two navigation models</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Pageflow_in_Seam-Seam_and_the_back_button">7.1.2. Seam and the back button</a></span></dt></dl></dd><dt><span class="section"><a href="#Seam_Reference_Guide-Pageflows_and_business_processes-Using_jPDL_pageflows">7.2. Using jPDL pageflows</a></span></dt><dd><dl><dt><span class="section"><a href="#Seam_Refer!
 ence_Guide-Using_jPDL_pageflows-Installing_pageflows">7.2.1. Installing pageflows</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Using_jPDL_pageflows-Starting_pageflows">7.2.2. Starting pageflows</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Using_jPDL_pageflows-Page_nodes_and_transitions">7.2.3. Page nodes and transitions</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Using_jPDL_pageflows-Controlling_the_flow">7.2.4. Controlling the flow</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Using_jPDL_pageflows-Ending_the_flow">7.2.5. Ending the flow</a></span></dt></dl></dd><dt><span class="section"><a href="#Seam_Reference_Guide-Pageflows_and_business_processes-Business_process_management_in_Seam">7.3. Business process management in Seam</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Pageflows_and_business_processes-Using_jPDL_business_process_definition!
 s">7.4. Using jPDL business process definitions</a></span></dt!
 ><dd><dl
><dt><span class="section"><a href="#Seam_Reference_Guide-Using_jPDL_business_process_definitions-Installing_process_definitions">7.4.1. Installing process definitions</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Using_jPDL_business_process_definitions-Initializing_actor_ids">7.4.2. Initializing actor ids</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Using_jPDL_business_process_definitions-Initiating_a_business_process">7.4.3. Initiating a business process</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Using_jPDL_business_process_definitions-Task_assignment">7.4.4. Task assignment</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Using_jPDL_business_process_definitions-Task_lists">7.4.5. Task lists</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Using_jPDL_business_process_definitions-Performing_a_task">7.4.6. Performing a task</a></span></dt></dl></dd>!
 </dl></div><div class="para">
+		JBoss jBPM is a business process management engine for any Java SE or EE environment. jBPM lets you represent a business process or user interaction as a graph of nodes representing wait states, decisions, tasks, web pages, etc. The graph is defined using a simple, very readable, XML dialect called jPDL, and may be edited and visualised graphically using an eclipse plugin. jPDL is an extensible language, and is suitable for a range of problems, from defining web application page flow, to traditional workflow management, all the way up to orchestration of services in a SOA environment.
+	</div><div class="para">
+		Seam applications use jBPM for two different problems:
+	</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+				Defining the pageflow involved in complex user interactions. A jPDL process definition defines the page flow for a single conversation. A Seam conversation is considered to be a relatively short-running interaction with a single user.
+			</div></li><li class="listitem"><div class="para">
+				Defining the overarching business process. The business process may span multiple conversations with multiple users. Its state is persistent in the jBPM database, so it is considered long-running. Coordination of the activities of multiple users is a much more complex problem than scripting an interaction with a single user, so jBPM offers sophisticated facilities for task management and dealing with multiple concurrent paths of execution.
+			</div></li></ul></div><div class="para">
+		<span class="emphasis"><em>Pageflow</em></span>, <span class="emphasis"><em>conversation</em></span> and <span class="emphasis"><em>task</em></span> all refer to a single interaction with a single user and operate at different levels or granularity. A business process spans many tasks. Futhermore, the two applications of jBPM are totally orthogonal. You can use them together or independently or not at all.
+	</div><div class="para">
+		You do not have to know jDPL to use Seam. If you are perfectly happy defining pageflow using JSF or Seam navigation rules, and if your application is more data-driven that process-driven, you probably do not need jBPM. But we are finding that thinking of user interaction in terms of a well-defined graphical representation is helping us build more robust applications.
+	</div><div class="section" title="7.1. Pageflow in Seam"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Pageflows_and_business_processes-Pageflow_in_Seam">7.1. Pageflow in Seam</h2></div></div></div><div class="para">
+			There are two ways to define pageflow in Seam:
+		</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+					Using JSF or Seam navigation rules - the <span class="emphasis"><em>stateless navigation model</em></span>
+				</div></li><li class="listitem"><div class="para">
+					Using jPDL - the <span class="emphasis"><em>stateful navigation model</em></span>
+				</div></li></ul></div><div class="para">
+			Very simple applications will only need the stateless navigation model. Very complex applications will use both models in different places. Each model has its strengths and weaknesses!
+		</div><div class="section" title="7.1.1. The two navigation models"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Pageflow_in_Seam-The_two_navigation_models">7.1.1. The two navigation models</h3></div></div></div><div class="para">
+				The stateless model defines a mapping from a set of named, logical outcomes of an event directly to the resulting page of the view. The navigation rules are entirely oblivious to any state held by the application other than what page was the source of the event. This means that your action listener methods must sometimes make decisions about the page flow, since only they have access to the current state of the application.
+			</div><div class="para">
+				Here is an example page flow definition using JSF navigation rules:
+			</div><pre class="programlisting">&lt;navigation-rule&gt;
+    &lt;from-view-id&gt;/numberGuess.jsp&lt;/from-view-id&gt;
+        
+    &lt;navigation-case&gt;
+        &lt;from-outcome&gt;guess&lt;/from-outcome&gt;
+        &lt;to-view-id&gt;/numberGuess.jsp&lt;/to-view-id&gt;
+        &lt;redirect/&gt;
+    &lt;/navigation-case&gt;
+
+    &lt;navigation-case&gt;
+        &lt;from-outcome&gt;win&lt;/from-outcome&gt;
+        &lt;to-view-id&gt;/win.jsp&lt;/to-view-id&gt;
+        &lt;redirect/&gt;
+    &lt;/navigation-case&gt;
+        
+    &lt;navigation-case&gt;
+        &lt;from-outcome&gt;lose&lt;/from-outcome&gt;
+        &lt;to-view-id&gt;/lose.jsp&lt;/to-view-id&gt;
+        &lt;redirect/&gt;
+    &lt;/navigation-case&gt;
+
+&lt;/navigation-rule&gt;
+</pre><div class="para">
+				Here is the same example page flow definition using Seam navigation rules:
+			</div><pre class="programlisting">&lt;page view-id="/numberGuess.jsp"&gt;
+        
+    &lt;navigation&gt;
+        &lt;rule if-outcome="guess"&gt;
+            &lt;redirect view-id="/numberGuess.jsp"/&gt;
+        &lt;/rule&gt;
+        &lt;rule if-outcome="win"&gt;
+            &lt;redirect view-id="/win.jsp"/&gt;
+        &lt;/rule&gt;
+        &lt;rule if-outcome="lose"&gt;
+            &lt;redirect view-id="/lose.jsp"/&gt;
+        &lt;/rule&gt;
+    &lt;/navigation-case&gt;
+
+&lt;/navigation-rule&gt;
+</pre><div class="para">
+				If you find navigation rules overly verbose, you can return view ids directly from your action listener methods:
+			</div><pre class="programlisting">public String guess() {
+    if (guess==randomNumber) return "/win.jsp";
+    if (++guessCount==maxGuesses) return "/lose.jsp";
+    return null;
+}
+</pre><div class="para">
+				This results in a redirect. You can even specify parameters to be used in the redirect:
+			</div><pre class="programlisting">public String search() {
+    return "/searchResults.jsp?searchPattern=#{searchAction.searchPattern}";
+}
+</pre><div class="para">
+				The stateful model defines a set of transitions between a set of named, logical application states. In this model, it is possible to express the flow of any user interaction entirely in the jPDL pageflow definition, and write action listener methods that are completely unaware of the flow of the interaction.
+			</div><div class="para">
+				Here is an example page flow definition using jPDL:
+			</div><pre class="programlisting">&lt;pageflow-definition name="numberGuess"&gt;
+    
+   &lt;start-page name="displayGuess" view-id="/numberGuess.jsp"&gt;
+      &lt;redirect/&gt;
+      &lt;transition name="guess" to="evaluateGuess"&gt;
+      	&lt;action expression="#{numberGuess.guess}" /&gt;
+      &lt;/transition&gt;
+   &lt;/start-page&gt;
+   
+   &lt;decision name="evaluateGuess" expression="#{numberGuess.correctGuess}"&gt;
+      &lt;transition name="true" to="win"/&gt;
+      &lt;transition name="false" to="evaluateRemainingGuesses"/&gt;
+   &lt;/decision&gt;
+   
+   &lt;decision name="evaluateRemainingGuesses" expression="#{numberGuess.lastGuess}"&gt;
+      &lt;transition name="true" to="lose"/&gt;
+      &lt;transition name="false" to="displayGuess"/&gt;
+   &lt;/decision&gt;
+   
+   &lt;page name="win" view-id="/win.jsp"&gt;
+      &lt;redirect/&gt;
+      &lt;end-conversation /&gt;
+   &lt;/page&gt;
+   
+   &lt;page name="lose" view-id="/lose.jsp"&gt;
+      &lt;redirect/&gt;
+      &lt;end-conversation /&gt;
+   &lt;/page&gt;
+   
+&lt;/pageflow-definition&gt;
+</pre><div class="mediaobject" align="center"><img src="images/plugin-jbpm-numguess.png" align="middle" width="444" /></div><div class="para">
+				There are two things we notice immediately here:
+			</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+						The JSF/Seam navigation rules are <span class="emphasis"><em>much</em></span> simpler. (However, this obscures the fact that the underlying Java code is more complex.)
+					</div></li><li class="listitem"><div class="para">
+						The jPDL makes the user interaction immediately understandable, without us needing to even look at the JSP or Java code.
+					</div></li></ul></div><div class="para">
+				In addition, the stateful model is more <span class="emphasis"><em>constrained</em></span>. For each logical state (each step in the page flow), there are a constrained set of possible transitions to other states. The stateless model is an <span class="emphasis"><em>ad hoc</em></span> model which is suitable to relatively unconstrained, freeform navigation where the user decides where he/she wants to go next, not the application.
+			</div><div class="para">
+				The stateful/stateless navigation distinction is quite similar to the traditional view of modal/modeless interaction. Now, Seam applications are not usually modal in the simple sense of the word - indeed, avoiding application modal behavior is one of the main reasons for having conversations! However, Seam applications can be, and often are, modal at the level of a particular conversation. It is well-known that modal behavior is something to avoid as much as possible; it is very difficult to predict the order in which your users are going to want to do things! However, there is no doubt that the stateful model has its place.
+			</div><div class="para">
+				The biggest contrast between the two models is the back-button behavior.
+			</div></div><div class="section" title="7.1.2. Seam and the back button"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Pageflow_in_Seam-Seam_and_the_back_button">7.1.2. Seam and the back button</h3></div></div></div><div class="para">
+				When JSF or Seam navigation rules are used, Seam lets the user freely navigate via the back, forward and refresh buttons. It is the responsibility of the application to ensure that conversational state remains internally consistent when this occurs. Experience with the combination of web application frameworks like Struts or WebWork - that do not support a conversational model - and stateless component models like EJB stateless session beans or the Spring framework has taught many developers that this is close to impossible to do! However, our experience is that in the context of Seam, where there is a well-defined conversational model, backed by stateful session beans, it is actually quite straightforward. Usually it is as simple as combining the use of <code class="literal">no-conversation-view-id</code> with null checks at the beginning of action listener methods. We consider support for freeform navigation to be almost always desirable.
+			</div><div class="para">
+				In this case, the <code class="literal">no-conversation-view-id</code> declaration goes in <code class="literal">pages.xml</code>. It tells Seam to redirect to a different page if a request originates from a page rendered during a conversation, and that conversation no longer exists:
+			</div><pre class="programlisting">&lt;page view-id="/checkout.xhtml" 
+        no-conversation-view-id="/main.xhtml"/&gt;
+</pre><div class="para">
+				On the other hand, in the stateful model, backbuttoning is interpreted as an undefined transition back to a previous state. Since the stateful model enforces a defined set of transitions from the current state, back buttoning is be default disallowed in the stateful model. Seam transparently detects the use of the back button, and blocks any attempt to perform an action from a previous, <span class="emphasis"><em>stale</em></span> page, and simply redirects the user to the <span class="emphasis"><em>current</em></span> page (and displays a faces message). Whether you consider this a feature or a limitation of the stateful model depends upon your point of view: as an application developer, it is a feature; as a user, it might be frustrating! You can enable backbutton navigation from a particular page node by setting <code class="literal">back="enabled"</code>.
+			</div><pre class="programlisting">&lt;page name="checkout" 
+        view-id="/checkout.xhtml" 
+        back="enabled"&gt;
+    &lt;redirect/&gt;
+    &lt;transition to="checkout"/&gt;
+    &lt;transition name="complete" to="complete"/&gt;
+&lt;/page&gt;
+</pre><div class="para">
+				This allows backbuttoning <span class="emphasis"><em>from</em></span> the <code class="literal">checkout</code> state to <span class="emphasis"><em>any previous state!</em></span>
+			</div><div class="para">
+				Of course, we still need to define what happens if a request originates from a page rendered during a pageflow, and the conversation with the pageflow no longer exists. In this case, the <code class="literal">no-conversation-view-id</code> declaration goes into the pageflow definition:
+			</div><pre class="programlisting">&lt;page name="checkout" 
+        view-id="/checkout.xhtml" 
+        back="enabled" 
+        no-conversation-view-id="/main.xhtml"&gt;
+    &lt;redirect/&gt;
+    &lt;transition to="checkout"/&gt;
+    &lt;transition name="complete" to="complete"/&gt;
+&lt;/page&gt;
+</pre><div class="para">
+				In practice, both navigation models have their place, and you will quickly learn to recognize when to prefer one model over the other.
+			</div></div></div><div class="section" title="7.2. Using jPDL pageflows"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Pageflows_and_business_processes-Using_jPDL_pageflows">7.2. Using jPDL pageflows</h2></div></div></div><div class="section" title="7.2.1. Installing pageflows"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Using_jPDL_pageflows-Installing_pageflows">7.2.1. Installing pageflows</h3></div></div></div><div class="para">
+				We need to install the Seam jBPM-related components, and tell them where to find our pageflow definition. We can specify this Seam configuration in <code class="literal">components.xml</code>.
+			</div><pre class="programlisting">&lt;core:jbpm&gt;
+    &lt;core:pageflow-definitions&gt;
+        &lt;value&gt;pageflow.jpdl.xml&lt;/value&gt;
+    &lt;/core:pageflow-definitions&gt;
+&lt;/core:jbpm&gt;
+</pre><div class="para">
+				The first line installs jBPM, the second points to a jPDL-based pageflow definition.
+			</div></div><div class="section" title="7.2.2. Starting pageflows"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Using_jPDL_pageflows-Starting_pageflows">7.2.2. Starting pageflows</h3></div></div></div><div class="para">
+				We <span class="emphasis"><em>start</em></span> a jPDL-based pageflow by specifying the name of the process definition using a <code class="literal">@Begin</code>, <code class="literal">@BeginTask</code> or <code class="literal">@StartTask</code> annotation:
+			</div><pre class="programlisting">@Begin(pageflow="numberguess")
+public void begin() { ... }
+</pre><div class="para">
+				Alternatively we can start a pageflow using pages.xml:
+			</div><pre class="programlisting">&lt;page&gt;
+        &lt;begin-conversation pageflow="numberguess"/&gt;
+    &lt;/page&gt;
+</pre><div class="para">
+				If we are beginning the pageflow during the <code class="literal">RENDER_RESPONSE</code> phase—during a <code class="literal">@Factory</code> or <code class="literal">@Create</code> method, for example—we consider ourselves to be already at the page being rendered, and use a <code class="literal">&lt;start-page&gt;</code> node as the first node in the pageflow, as in the example above.
+			</div><div class="para">
+				But if the pageflow is begun as the result of an action listener invocation, the outcome of the action listener determines which is the first page to be rendered. In this case, we use a <code class="literal">&lt;start-state&gt;</code> as the first node in the pageflow, and declare a transition for each possible outcome:
+			</div><pre class="programlisting">&lt;pageflow-definition name="viewEditDocument"&gt;
+
+    &lt;start-state name="start"&gt;
+        &lt;transition name="documentFound" to="displayDocument"/&gt;
+        &lt;transition name="documentNotFound" to="notFound"/&gt;
+    &lt;/start-state&gt;
+    
+    &lt;page name="displayDocument" view-id="/document.jsp"&gt;
+        &lt;transition name="edit" to="editDocument"/&gt;
+        &lt;transition name="done" to="main"/&gt;
+    &lt;/page&gt;
+    
+    ...
+    
+    &lt;page name="notFound" view-id="/404.jsp"&gt;
+        &lt;end-conversation/&gt;
+    &lt;/page&gt;
+    
+&lt;/pageflow-definition&gt;
+</pre></div><div class="section" title="7.2.3. Page nodes and transitions"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Using_jPDL_pageflows-Page_nodes_and_transitions">7.2.3. Page nodes and transitions</h3></div></div></div><div class="para">
+				Each <code class="literal">&lt;page&gt;</code> node represents a state where the system is waiting for user input:
+			</div><pre class="programlisting">&lt;page name="displayGuess" view-id="/numberGuess.jsp"&gt;
+    &lt;redirect/&gt;
+    &lt;transition name="guess" to="evaluateGuess"&gt;
+        &lt;action expression="#{numberGuess.guess}" /&gt;
+    &lt;/transition&gt;
+&lt;/page&gt;
+</pre><div class="para">
+				The <code class="literal">view-id</code> is the JSF view id. The <code class="literal">&lt;redirect/&gt;</code> element has the same effect as <code class="literal">&lt;redirect/&gt;</code> in a JSF navigation rule: namely, a post-then-redirect behavior, to overcome problems with the browser's refresh button (note that Seam propagates conversation contexts over these browser redirects).
+			</div><div class="para">
+				The transition name is the name of a JSF outcome triggered by clicking a command button or command link in <code class="literal">numberGuess.jsp</code>.
+			</div><pre class="programlisting">&lt;h:commandButton type="submit" value="Guess" action="guess"/&gt;
+</pre><div class="para">
+				When the transition is triggered by clicking this button, jBPM will activate the transition action by calling the <code class="literal">guess()</code> method of the <code class="literal">numberGuess</code> component. Notice that the syntax used for specifying actions in the jPDL is just a familiar JSF EL expression, and that the transition action handler is just a method of a Seam component in the current Seam contexts. So we have exactly the same event model for jBPM events that we already have for JSF events. (The <span class="emphasis"><em>One Kind of Stuff</em></span> principle.)
+			</div><div class="para">
+				In the case of a null outcome (for example, a command button with no <code class="literal">action</code> defined), Seam will signal the transition with no name if one exists, or else simply redisplay the page if all transitions have names. So we could slightly simplify our example pageflow and this button:
+			</div><pre class="programlisting">&lt;h:commandButton type="submit" value="Guess"/&gt;
+</pre><div class="para">
+				Would fire the following un-named transition:
+			</div><pre class="programlisting">&lt;page name="displayGuess" view-id="/numberGuess.jsp"&gt;
+    &lt;redirect/&gt;
+    &lt;transition to="evaluateGuess"&gt;
+        &lt;action expression="#{numberGuess.guess}" /&gt;
+    &lt;/transition&gt;
+&lt;/page&gt;
+</pre><div class="para">
+				It is even possible to have the button call an action method, in which case the action outcome will determine the transition to be taken:
+			</div><pre class="programlisting">&lt;h:commandButton type="submit" value="Guess" action="#{numberGuess.guess}"/&gt;
+</pre><pre class="programlisting">&lt;page name="displayGuess" view-id="/numberGuess.jsp"&gt;
+    &lt;transition name="correctGuess" to="win"/&gt;
+    &lt;transition name="incorrectGuess" to="evaluateGuess"/&gt;
+&lt;/page&gt;
+</pre><div class="para">
+				However, this is considered an inferior style, since it moves responsibility for controlling the flow out of the pageflow definition and back into the other components. It is much better to centralize this concern in the pageflow itself.
+			</div></div><div class="section" title="7.2.4. Controlling the flow"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Using_jPDL_pageflows-Controlling_the_flow">7.2.4. Controlling the flow</h3></div></div></div><div class="para">
+				Usually, we do not need the more powerful features of jPDL when defining pageflows. We do need the <code class="literal">&lt;decision&gt;</code> node, however:
+			</div><pre class="programlisting">&lt;decision name="evaluateGuess" expression="#{numberGuess.correctGuess}"&gt;
+    &lt;transition name="true" to="win"/&gt;
+    &lt;transition name="false" to="evaluateRemainingGuesses"/&gt;
+&lt;/decision&gt;
+</pre><div class="para">
+				A decision is made by evaluating a JSF EL expression in the Seam contexts.
+			</div></div><div class="section" title="7.2.5. Ending the flow"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Using_jPDL_pageflows-Ending_the_flow">7.2.5. Ending the flow</h3></div></div></div><div class="para">
+				We end the conversation using <code class="literal">&lt;end-conversation&gt;</code> or <code class="literal">@End</code>. (In fact, for readability, use of <span class="emphasis"><em>both</em></span> is encouraged.)
+			</div><pre class="programlisting">&lt;page name="win" view-id="/win.jsp"&gt;
+    &lt;redirect/&gt;
+    &lt;end-conversation/&gt;
+&lt;/page&gt;
+</pre><div class="para">
+				Optionally, we can end a task, specify a jBPM <code class="literal">transition</code> name. In this case, Seam will signal the end of the current task in the overarching business process.
+			</div><pre class="programlisting">&lt;page name="win" view-id="/win.jsp"&gt;
+    &lt;redirect/&gt;
+    &lt;end-task transition="success"/&gt;
+&lt;/page&gt;
+</pre></div></div><div class="section" title="7.3. Business process management in Seam"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Pageflows_and_business_processes-Business_process_management_in_Seam">7.3. Business process management in Seam</h2></div></div></div><div class="para">
+			A business process is a well-defined set of tasks that must be performed by users or software systems according to well-defined rules about <span class="emphasis"><em>who</em></span> can perform a task, and <span class="emphasis"><em>when</em></span> it should be performed. Seam's jBPM integration makes it easy to display lists of tasks to users and let them manage their tasks. Seam also lets the application store state associated with the business process in the <code class="literal">BUSINESS_PROCESS</code> context, and have that state made persistent via jBPM variables.
+		</div><div class="para">
+			A simple business process definition looks much the same as a page flow definition (<span class="emphasis"><em>One Kind of Stuff</em></span>), except that instead of <code class="literal">&lt;page&gt;</code> nodes, we have <code class="literal">&lt;task-node&gt;</code> nodes. In a long-running business process, the wait states are where the system is waiting for some user to log in and perform a task.
+		</div><pre class="programlisting">&lt;process-definition name="todo"&gt;
+   
+   &lt;start-state name="start"&gt;
+      &lt;transition to="todo"/&gt;
+   &lt;/start-state&gt;
+   
+   &lt;task-node name="todo"&gt;
+      &lt;task name="todo" description="#{todoList.description}"&gt;
+         &lt;assignment actor-id="#{actor.id}"/&gt;
+      &lt;/task&gt;
+      &lt;transition to="done"/&gt;
+   &lt;/task-node&gt;
+   
+   &lt;end-state name="done"/&gt;
+   
+&lt;/process-definition&gt;
+</pre><div class="mediaobject" align="center"><img src="images/plugin-jbpm-todo.png" align="middle" width="444" /></div><div class="para">
+			It is perfectly possible that we might have both jPDL business process definitions and jPDL pageflow definitions in the same project. If so, the relationship between the two is that a single <code class="literal">&lt;task&gt;</code> in a business process corresponds to a whole pageflow <code class="literal">&lt;pageflow-definition&gt;</code>
+		</div></div><div class="section" title="7.4. Using jPDL business process definitions"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Pageflows_and_business_processes-Using_jPDL_business_process_definitions">7.4. Using jPDL business process definitions</h2></div></div></div><div class="section" title="7.4.1. Installing process definitions"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Installing_process_definitions">7.4.1. Installing process definitions</h3></div></div></div><div class="para">
+				We need to install jBPM, and tell it where to find the business process definitions:
+			</div><pre class="programlisting">&lt;core:jbpm&gt;
+    &lt;core:process-definitions&gt;
+        &lt;value&gt;todo.jpdl.xml&lt;/value&gt;
+    &lt;/core:process-definitions&gt;
+&lt;/core:jbpm&gt;
+</pre></div><div class="section" title="7.4.2. Initializing actor ids"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Initializing_actor_ids">7.4.2. Initializing actor ids</h3></div></div></div><div class="para">
+				We always need to know what user is currently logged in. jBPM <span class="emphasis"><em>knows</em></span> users by their <span class="emphasis"><em>actor id</em></span> and <span class="emphasis"><em>group actor ids</em></span>. We specify the current actor ids using the built in Seam component named <code class="literal">actor</code>:
+			</div><pre class="programlisting">@In Actor actor;
+
+public String login() {
+    ...
+    actor.setId( user.getUserName() );
+    actor.getGroupActorIds().addAll( user.getGroupNames() );
+    ...
+}
+</pre></div><div class="section" title="7.4.3. Initiating a business process"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Initiating_a_business_process">7.4.3. Initiating a business process</h3></div></div></div><div class="para">
+				To initiate a business process instance, we use the <code class="literal">@CreateProcess</code> annotation:
+			</div><pre class="programlisting">@CreateProcess(definition="todo")
+public void createTodo() { ... }
+</pre><div class="para">
+				Alternatively we can initiate a business process using pages.xml:
+			</div><pre class="programlisting">&lt;page&gt;
+    &lt;create-process definition="todo" /&gt;
+&lt;/page&gt;
+</pre></div><div class="section" title="7.4.4. Task assignment"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Task_assignment">7.4.4. Task assignment</h3></div></div></div><div class="para">
+				When a process starts, task instances are created. These must be assigned to users or user groups. We can either hardcode our actor ids, or delegate to a Seam component:
+			</div><pre class="programlisting">&lt;task name="todo" description="#{todoList.description}"&gt;
+    &lt;assignment actor-id="#{actor.id}"/&gt;
+&lt;/task&gt;
+</pre><div class="para">
+				In this case, we have simply assigned the task to the current user. We can also assign tasks to a pool:
+			</div><pre class="programlisting">&lt;task name="todo" description="#{todoList.description}"&gt;
+    &lt;assignment pooled-actors="employees"/&gt;
+&lt;/task&gt;
+</pre></div><div class="section" title="7.4.5. Task lists"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Task_lists">7.4.5. Task lists</h3></div></div></div><div class="para">
+				Several built-in Seam components make it easy to display task lists. The <code class="literal">pooledTaskInstanceList</code> is a list of pooled tasks that users may assign to themselves:
+			</div><pre class="programlisting">&lt;h:dataTable value="#{pooledTaskInstanceList}" var="task"&gt;
+    &lt;h:column&gt;
+        &lt;f:facet name="header"&gt;Description&lt;/f:facet&gt;
+        &lt;h:outputText value="#{task.description}"/&gt;
+    &lt;/h:column&gt;
+    &lt;h:column&gt;
+        &lt;s:link action="#{pooledTask.assignToCurrentActor}" value="Assign" taskInstance="#{task}"/&gt;
+    &lt;/h:column&gt;            	
+&lt;/h:dataTable&gt;
+</pre><div class="para">
+				Note that instead of <code class="literal">&lt;s:link&gt;</code> we could have used a plain JSF <code class="literal">&lt;h:commandLink&gt;</code>:
+			</div><pre class="programlisting">&lt;h:commandLink action="#{pooledTask.assignToCurrentActor}"&gt; 
+    &lt;f:param name="taskId" value="#{task.id}"/&gt;
+&lt;/h:commandLink&gt;
+</pre><div class="para">
+				The <code class="literal">pooledTask</code> component is a built-in component that simply assigns the task to the current user.
+			</div><div class="para">
+				The <code class="literal">taskInstanceListForType</code> component includes tasks of a particular type that are assigned to the current user:
+			</div><pre class="programlisting">&lt;h:dataTable value="#{taskInstanceListForType['todo']}" var="task"&gt;
+    &lt;h:column&gt;
+        &lt;f:facet name="header"&gt;Description&lt;/f:facet&gt;
+        &lt;h:outputText value="#{task.description}"/&gt;
+    &lt;/h:column&gt;
+    &lt;h:column&gt;
+        &lt;s:link action="#{todoList.start}" value="Start Work" taskInstance="#{task}"/&gt;
+    &lt;/h:column&gt;            	
+&lt;/h:dataTable&gt;
+</pre></div><div class="section" title="7.4.6. Performing a task"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Performing_a_task">7.4.6. Performing a task</h3></div></div></div><div class="para">
+				To begin work on a task, we use either <code class="literal">@StartTask</code> or <code class="literal">@BeginTask</code> on the listener method:
+			</div><pre class="programlisting">@StartTask
+public String start() { ... }
+</pre><div class="para">
+				Alternatively we can begin work on a task using <code class="filename">pages.xml</code>:
+			</div><pre class="programlisting">&lt;page&gt;
+    &lt;start-task /&gt;
+&lt;/page&gt;
+</pre><div class="para">
+				These annotations begin a special kind of conversation that has significance in terms of the overarching business process. Work done by this conversation has access to state held in the business process context.
+			</div><div class="para">
+				If we end the conversation using <code class="literal">@EndTask</code>, Seam will signal the completion of the task:
+			</div><pre class="programlisting">@EndTask(transition="completed")
+public String completed() { ... }
+</pre><div class="para">
+				Alternatively we can use pages.xml:
+			</div><pre class="programlisting">&lt;page&gt;
+    &lt;end-task transition="completed" /&gt;
+&lt;/page&gt;
+</pre><div class="para">
+				(Alternatively, we could have used <code class="literal">&lt;end-conversation&gt;</code> as shown above.)
+			</div><div class="para">
+				At this point, jBPM takes over and continues executing the business process definition. (In more complex processes, several tasks might need to be completed before process execution can resume.)
+			</div><div class="para">
+				Please refer to the jBPM documentation for a more thorough overview of the sophisticated features that jBPM provides for managing complex business processes.
+			</div></div></div></div><div xml:lang="en-US" class="chapter" title="Chapter 8. Seam and Object/Relational Mapping" lang="en-US"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping">Chapter 8. Seam and Object/Relational Mapping</h2></div></div></div><div class="toc"><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Introduction">8.1. Introduction</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Seam_managed_transactions">8.2. Seam managed transactions</a></span></dt><dd><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_managed_transactions-Enabling_Seam_managed_transactions">8.2.1. Enabling Seam-managed transactions</a></span></dt></dl></dd><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Seam_managed_persistence_contexts">8.3. Seam-managed persistence !
 contexts</a></span></dt><dd><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_managed_persistence_contexts-Using_a_Seam_managed_persistence_context_with_JPA">8.3.1. Using a Seam-managed persistence context with JPA</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_managed_persistence_contexts-Using_a_Seam_managed_Hibernate_session">8.3.2. Using a Seam-managed Hibernate session</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_managed_persistence_contexts-Seam_managed_persistence_contexts_and_atomic_conversations">8.3.3. Seam-managed persistence contexts and atomic conversations</a></span></dt></dl></dd><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_the_JPA_delegate">8.4. Using the JPA "delegate"</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_EL_in_EJB_QLHQL">8.5. Using EL in EJB-QL/HQL</a></s!
 pan></dt><dt><span class="section"><a href="#Seam_Reference_Gu!
 ide-Seam
_and_ObjectRelational_Mapping-Using_Hibernate_filters">8.6. Using Hibernate filters</a></span></dt></dl></div><div class="para">
+		Seam provides extensive support for the two most popular persistence architectures for Java: Hibernate3, and the Java Persistence API introduced with EJB 3.0. Seam's unique state-management architecture allows the most sophisticated ORM integration of any web application framework.
+	</div><div class="section" title="8.1. Introduction"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Introduction">8.1. Introduction</h2></div></div></div><div class="para">
+			Seam grew out of the frustration of the Hibernate team with the statelessness typical of the previous generation of Java application architectures. The state management architecture of Seam was originally designed to solve problems relating to persistence—in particular problems associated with <span class="emphasis"><em>optimistic transaction processing</em></span>. Scalable online applications always use optimistic transactions. An atomic (database/JTA) level transaction should not span a user interaction unless the application is designed to support only a very small number of concurrent clients. But almost all interesting work involves first displaying data to a user, and then, slightly later, updating the same data. So Hibernate was designed to support the idea of a persistence context which spanned an optimistic transaction.
+		</div><div class="para">
+			Unfortunately, the so-called <span class="emphasis"><em>stateless</em></span> architectures that preceded Seam and EJB 3.0 had no construct for representing an optimistic transaction. So, instead, these architectures provided persistence contexts scoped to the atomic transaction. This resulted in many problems for users, and is the cause of the number one user complaint about Hibernate: the dreaded <code class="literal">LazyInitializationException</code>. What we need is a construct for representing an optimistic transaction in the application tier.
+		</div><div class="para">
+			EJB 3.0 recognizes this problem, and introduces the idea of a stateful component (a stateful session bean) with an <span class="emphasis"><em>extended persistence context</em></span> scoped to the lifetime of the component. This is a partial solution to the problem (and is a useful construct in and of itself) however there are two problems:
+		</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+					The lifecycle of the stateful session bean must be managed manually via code in the web tier (it turns out that this is a subtle problem and much more difficult in practice than it sounds).
+				</div></li><li class="listitem"><div class="para">
+					Propagation of the persistence context between stateful components in the same optimistic transaction is possible, but tricky.
+				</div></li></ul></div><div class="para">
+			Seam solves the first problem by providing conversations, and stateful session bean components scoped to the conversation. (Most conversations actually represent optimistic transactions in the data layer.) This is sufficient for many simple applications (such as the Seam booking demo) where persistence context propagation is not needed. For more complex applications, with many loosly-interacting components in each conversation, propagation of the persistence context across components becomes an important issue. So Seam extends the persistence context management model of EJB 3.0, to provide conversation-scoped extended persistence contexts.
+		</div></div><div class="section" title="8.2. Seam managed transactions"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Seam_managed_transactions">8.2. Seam managed transactions</h2></div></div></div><div class="para">
+			EJB session beans feature declarative transaction management. The EJB container is able to start a transaction transparently when the bean is invoked, and end it when the invocation ends. If we write a session bean method that acts as a JSF action listener, we can do all the work associated with that action in one transaction, and be sure that it is committed or rolled back when we finish processing the action. This is a great feature, and all that is needed by some Seam applications.
+		</div><div class="para">
+			However, there is a problem with this approach. A Seam application may not perform all data access for a request from a single method call to a session bean.
+		</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+					The request might require processing by several loosly-coupled components, each of which is called independently from the web layer. It is common to see several or even many calls per request from the web layer to EJB components in Seam.
+				</div></li><li class="listitem"><div class="para">
+					Rendering of the view might require lazy fetching of associations.
+				</div></li></ul></div><div class="para">
+			The more transactions per request, the more likely we are to encounter atomicity and isolation problems when our application is processing many concurrent requests. Certainly, all write operations should occur in the same transaction.
+		</div><div class="para">
+			Hibernate users developed the <span class="emphasis"><em>open session in view</em></span> pattern to work around this problem. In the Hibernate community, <span class="emphasis"><em>open session in view</em></span> was historically even more important because frameworks like Spring use transaction-scoped persistence contexts. So rendering the view would cause <code class="literal">LazyInitializationException</code>s when unfetched associations were accessed.
+		</div><div class="para">
+			This pattern is usually implemented as a single transaction which spans the entire request. There are several problems with this implementation, the most serious being that we can never be sure that a transaction is successful until we commit it—but by the time the <span class="emphasis"><em>open session in view</em></span> transaction is committed, the view is fully rendered, and the rendered response may already have been flushed to the client. How can we notify the user that their transaction was unsuccessful?
+		</div><div class="para">
+			Seam solves both the transaction isolation problem and the association fetching problem, while working around the problems with <span class="emphasis"><em>open session in view</em></span>. The solution comes in two parts:
+		</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+					use an extended persistence context that is scoped to the conversation, instead of to the transaction
+				</div></li><li class="listitem"><div class="para">
+					use two transactions per request; the first spans the beginning of the update model values phase until the end of the invoke application phase; the second spans the render response phase
+				</div></li></ul></div><div class="para">
+			In the next section, we will tell you how to set up a conversation-scope persistence context. But first we need to tell you how to enable Seam transaction management. Note that you can use conversation-scoped persistence contexts without Seam transaction management, and there are good reasons to use Seam transaction management even when you are not using Seam-managed persistence contexts. However, the two facilities were designed to work together, and work best when used together.
+		</div><div class="section" title="8.2.1. Enabling Seam-managed transactions"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Seam_managed_transactions-Enabling_Seam_managed_transactions">8.2.1. Enabling Seam-managed transactions</h3></div></div></div><div class="para">
+				To make use of <span class="emphasis"><em>Seam managed transactions</em></span>, you need to use <code class="literal">TransactionalSeamPhaseListener</code> in place of <code class="literal">SeamPhaseListener</code>.
+			</div><pre class="programlisting">&lt;lifecycle&gt;
+     &lt;phase-listener&gt;
+        org.jboss.seam.jsf.TransactionalSeamPhaseListener
+    &lt;/phase-listener&gt;
+&lt;/lifecycle&gt;
+</pre><div class="para">
+				Seam transaction management is useful even if you are using EJB 3.0 container-managed persistence contexts. But it is especially useful if you use Seam outside a Java EE 5 environment, or in any other case where you would use a Seam-managed persistence context.
+			</div></div></div><div class="section" title="8.3. Seam-managed persistence contexts"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Seam_managed_persistence_contexts">8.3. Seam-managed persistence contexts</h2></div></div></div><div class="para">
+			If you are using Seam outside of a Java EE 5 environment, you cannot rely upon the container to manage the persistence context lifecycle for you. Even if you are in an EE 5 environment, you might have a complex application with many loosly coupled components that collaborate together in the scope of a single conversation, and in this case you might find that propagation of the persistence context between component is tricky and error-prone.
+		</div><div class="para">
+			In either case, you will need to use a <span class="emphasis"><em>managed persistence context</em></span> (for JPA) or a <span class="emphasis"><em>managed session</em></span> (for Hibernate) in your components. A Seam-managed persistence context is just a built-in Seam component that manages an instance of <code class="literal">EntityManager</code> or <code class="literal">Session</code> in the conversation context. You can inject it with <code class="literal">@In</code>.
+		</div><div class="para">
+			Seam-managed persistence contexts are extremely efficient in a clustered environment. Seam is able to perform an optimization that EJB 3.0 specification does not allow containers to use for container-managed extended persistence contexts. Seam supports transparent failover of extended persisence contexts, without the need to replicate any persistence context state between nodes. (We hope to fix this oversight in the next revision of the EJB spec.)
+		</div><div class="section" title="8.3.1. Using a Seam-managed persistence context with JPA"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Seam_managed_persistence_contexts-Using_a_Seam_managed_persistence_context_with_JPA">8.3.1. Using a Seam-managed persistence context with JPA</h3></div></div></div><div class="para">
+				Configuring a managed persistence context is easy. In <code class="literal">components.xml</code>, we can write:
+			</div><pre class="programlisting">&lt;core:managed-persistence-context name="bookingDatabase" 
+                           auto-create="true"
+            persistence-unit-jndi-name="java:/EntityManagerFactories/bookingData"/&gt;
+</pre><div class="para">
+				This configuration creates a conversation-scoped Seam component named <code class="literal">bookingDatabase</code> that manages the lifecycle of <code class="literal">EntityManager</code> instances for the persistence unit (<code class="literal">EntityManagerFactory</code> instance) with JNDI name <code class="literal">java:/EntityManagerFactories/bookingData</code>.
+			</div><div class="para">
+				Of course, you need to make sure that you have bound the <code class="literal">EntityManagerFactory</code> into JNDI. In JBoss, you can do this by adding the following property setting to <code class="literal">persistence.xml</code>.
+			</div><pre class="programlisting">&lt;property name="jboss.entity.manager.factory.jndi.name" 
+          value="java:/EntityManagerFactories/bookingData"/&gt;
+</pre><div class="para">
+				Now we can have our <code class="literal">EntityManager</code> injected using:
+			</div><pre class="programlisting">@In EntityManager bookingDatabase;
+</pre></div><div class="section" title="8.3.2. Using a Seam-managed Hibernate session"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Seam_managed_persistence_contexts-Using_a_Seam_managed_Hibernate_session">8.3.2. Using a Seam-managed Hibernate session</h3></div></div></div><div class="para">
+				Seam-managed Hibernate sessions are similar. In <code class="literal">components.xml</code>:
+			</div><pre class="programlisting">&lt;core:hibernate-session-factory name="hibernateSessionFactory"/&gt;
+
+&lt;core:managed-hibernate-session name="bookingDatabase" 
+                         auto-create="true"
+           session-factory-jndi-name="java:/bookingSessionFactory"/&gt;
+</pre><div class="para">
+				Where <code class="literal">java:/bookingSessionFactory</code> is the name of the session factory specified in <code class="literal">hibernate.cfg.xml</code>.
+			</div><pre class="programlisting">&lt;session-factory name="java:/bookingSessionFactory"&gt;
+    &lt;property name="transaction.flush_before_completion"&gt;true&lt;/property&gt;
+    &lt;property name="connection.release_mode"&gt;after_statement&lt;/property&gt;
+    &lt;property name="transaction.manager_lookup_class"&gt;
+       org.hibernate.transaction.JBossTransactionManagerLookup
+    &lt;/property&gt;
+    &lt;property name="transaction.factory_class"&gt;
+       org.hibernate.transaction.JTATransactionFactory
+    &lt;/property&gt;
+    &lt;property name="connection.datasource"&gt;java:/bookingDatasource&lt;/property&gt;
+    ...
+&lt;/session-factory&gt;
+</pre><div class="important"><h2>Important</h2><div class="para">
+					Seam does not flush the session, so you should always enable <code class="literal">hibernate.transaction.flush_before_completion</code> to ensure that the session is automatically flushed before the JTA transaction commits.
+				</div></div><div class="para">
+				We can now have a managed Hibernate <code class="literal">Session</code> injected into our JavaBean components using the following code:
+			</div><pre class="programlisting">@In Session bookingDatabase;
+</pre></div><div class="section" title="8.3.3. Seam-managed persistence contexts and atomic conversations"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Seam_managed_persistence_contexts-Seam_managed_persistence_contexts_and_atomic_conversations">8.3.3. Seam-managed persistence contexts and atomic conversations</h3></div></div></div><div class="para">
+				Persistence contexts scoped to the conversation allows you to program optimistic transactions that span multiple requests to the server without the need to use the <code class="literal">merge()</code> operation , without the need to re-load data at the beginning of each request, and without the need to wrestle with the <code class="literal">LazyInitializationException</code> or <code class="literal">NonUniqueObjectException</code>.
+			</div><div class="para">
+				As with any optimistic transaction management, transaction isolation and consistency can be achieved via use of optimistic locking. Fortunately, both Hibernate and EJB 3.0 make it very easy to use optimistic locking, by providing the <code class="literal">@Version</code> annotation.
+			</div><div class="para">
+				By default, the persistence context is flushed (synchronized with the database) at the end of each transaction. This is sometimes the desired behavior. But very often, we would prefer that all changes are held in memory and only written to the database when the conversation ends successfully. This allows for truly atomic conversations. As the result of a truly stupid and shortsighted decision by certain non-JBoss, non-Sun and non-Sybase members of the EJB 3.0 expert group, there is currently no simple, usable and portable way to implement atomic conversations using EJB 3.0 persistence. However, Hibernate provides this feature as a vendor extension to the <code class="literal">FlushModeType</code>s defined by the specification, and it is our expectation that other vendors will soon provide a similar extension.
+			</div><div class="para">
+				Seam lets you specify <code class="literal">FlushModeType.MANUAL</code> when beginning a conversation. Currently, this works only when Hibernate is the underlying persistence provider, but we plan to support other equivalent vendor extensions.
+			</div><pre class="programlisting">@In EntityManager em; //a Seam-managed persistence context
+
+ at Begin(flushMode=MANUAL)
+public void beginClaimWizard() {
+    claim = em.find(Claim.class, claimId);
+}
+</pre><div class="para">
+				Now, the <code class="literal">claim</code> object remains managed by the persistence context for the rest ot the conversation. We can make changes to the claim:
+			</div><pre class="programlisting">public void addPartyToClaim() {
+    Party party = ....;
+    claim.addParty(party);
+}
+</pre><div class="para">
+				But these changes will not be flushed to the database until we explicitly force the flush to occur:
+			</div><pre class="programlisting">@End
+public void commitClaim() {
+    em.flush();
+}
+</pre></div></div><div class="section" title="8.4. Using the JPA &quot;delegate&quot;"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_the_JPA_delegate">8.4. Using the JPA "delegate"</h2></div></div></div><div class="para">
+			The <code class="literal">EntityManager</code> interface lets you access a vendor-specific API via the <code class="literal">getDelegate()</code> method. Naturally, the most interesting vendor is Hibernate, and the most powerful delegate interface is <code class="literal">org.hibernate.Session</code>. You'd be nuts to use anything else. Trust me, I'm not biased at all.
+		</div><div class="para">
+			But regardless of whether you are using Hibernate or something else, you will almost certainly want to use the delegate in your Seam components from time to time. One approach would be the following:
+		</div><pre class="programlisting">@In EntityManager entityManager;
+
+ at Create
+public void init() {
+    ( (Session) entityManager.getDelegate() ).enableFilter("currentVersions");
+}
+</pre><div class="para">
+			But typecasts are unquestionably the ugliest syntax in the Java language, so most people avoid them whenever possible. Here is a different way to get at the delegate. First, add the following line to <code class="literal">components.xml</code>:
+		</div><pre class="programlisting">&lt;factory name="session" 
+         scope="STATELESS" 
+         auto-create="true" 
+         value="#{entityManager.delegate}"/&gt;
+</pre><div class="para">
+			Now we can inject the session directly:
+		</div><pre class="programlisting">@In Session session;
+
+ at Create
+public void init() {
+    session.enableFilter("currentVersions");
+}
+</pre></div><div class="section" title="8.5. Using EL in EJB-QL/HQL"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_EL_in_EJB_QLHQL">8.5. Using EL in EJB-QL/HQL</h2></div></div></div><div class="para">
+			Seam proxies the <code class="literal">EntityManager</code> or <code class="literal">Session</code> object whenever you use a Seam-managed persistence context or inject a container managed persistence context using <code class="literal">@PersistenceContext</code>. This lets you use EL expressions in your query strings, safely and efficiently. For example, this:
+		</div><pre class="programlisting">User user = em.createQuery("from User where username=#{user.username}")
+         .getSingleResult();
+</pre><div class="para">
+			is equivalent to:
+		</div><pre class="programlisting">User user = em.createQuery("from User where username=:username")
+         .setParameter("username", user.getUsername())
+         .getSingleResult();
+</pre><div class="para">
+			Of course, you should never, ever write it like this:
+		</div><pre class="programlisting">User user = em.createQuery("from User where username=" + user.getUsername()) //BAD!
+         .getSingleResult();
+</pre><div class="para">
+			(It is inefficient and vulnerable to SQL injection attacks.)
+		</div></div><div class="section" title="8.6. Using Hibernate filters"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_Hibernate_filters">8.6. Using Hibernate filters</h2></div></div></div><div class="para">
+			The most unique feature of Hibernate is <span class="emphasis"><em>filters</em></span>. Filters let you provide a restricted view of the data in the database. You can find out more about filters in the Hibernate documentation. But we thought we would mention an easy way to incorporate filters into a Seam application, one that works especially well with the Seam Application Framework.
+		</div><div class="para">
+			Seam-managed persistence contexts may have a list of filters defined, which will be enabled whenever an <code class="literal">EntityManager</code> or Hibernate <code class="literal">Session</code> is first created. (Of course, they may only be used when Hibernate is the underlying persistence provider.)
+		</div><pre class="programlisting">&lt;core:filter name="regionFilter"&gt;
+    &lt;core:name&gt;region&lt;/core:name&gt;
+    &lt;core:parameters&gt;
+        &lt;key&gt;regionCode&lt;/key&gt;
+        &lt;value&gt;#{region.code}&lt;/value&gt;
+    &lt;/core:parameters&gt;
+&lt;/core:filter&gt;
+
+&lt;core:filter name="currentFilter"&gt;
+    &lt;core:name&gt;current&lt;/core:name&gt;
+    &lt;core:parameters&gt;
+        &lt;key&gt;date&lt;/key&gt;
+        &lt;value&gt;#{currentDate}&lt;/value&gt;
+    &lt;/core:parameters&gt;
+&lt;/core:filter&gt;
+
+&lt;core:managed-persistence-context name="personDatabase"
+    persistence-unit-jndi-name="java:/EntityManagerFactories/personDatabase"&gt;
+    &lt;core:filters&gt;
+        &lt;value&gt;#{regionFilter}&lt;/value&gt;
+        &lt;value&gt;#{currentFilter}&lt;/value&gt;
+    &lt;/core:filters&gt;
+&lt;/core:managed-persistence-context&gt;
+</pre></div></div><div xml:lang="en-US" class="chapter" title="Chapter 9. JSF form validation in Seam" lang="en-US"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-JSF_form_validation_in_Seam">Chapter 9. JSF form validation in Seam</h2></div></div></div><div class="para">
+		In plain JSF, validation is defined in the view:
+	</div><pre class="programlisting">&lt;h:form&gt;
+    &lt;h:messages/&gt;
+
+    &lt;div&gt;
+        Country:
+        &lt;h:inputText value="#{location.country}" required="true"&gt;
+            &lt;my:validateCountry/&gt;
+        &lt;/h:inputText&gt;
+    &lt;/div&gt;
+    
+    &lt;div&gt;
+        Zip code:
+        &lt;h:inputText value="#{location.zip}" required="true"&gt;
+            &lt;my:validateZip/&gt;
+        &lt;/h:inputText&gt;
+    &lt;/div&gt;
+
+    &lt;h:commandButton/&gt;
+&lt;/h:form&gt;
+</pre><div class="para">
+		In practice, this approach usually violates DRY, since most validation actually enforces constraints that are part of the data model, and exist all the way down to the database schema definition. Seam provides support for model-based constraints defined using Hibernate Validator.
+	</div><div class="para">
+		Let us start by defining our constraints, on our <code class="literal">Location</code> class:
+	</div><pre class="programlisting">public class Location {
+    private String country;
+    private String zip;
+    
+    @NotNull
+    @Length(max=30)
+    public String getCountry() { return country; }
+    public void setCountry(String c) { country = c; }
+
+    @NotNull
+    @Length(max=6)
+    @Pattern("^\d*$")
+    public String getZip() { return zip; }
+    public void setZip(String z) { zip = z; }
+}
+</pre><div class="para">
+		Well, that is a decent first cut, but in practice it might be more elegant to use custom constraints instead of the ones built into Hibernate Validator:
+	</div><pre class="programlisting">public class Location {
+    private String country;
+    private String zip;
+    
+    @NotNull
+    @Country
+    public String getCountry() { return country; }
+    public void setCountry(String c) { country = c; }
+
+    @NotNull
+    @ZipCode
+    public String getZip() { return zip; }
+    public void setZip(String z) { zip = z; }
+}
+</pre><div class="para">
+		Whichever route we take, we no longer need to specify the type of validation to be used in the JSF page. Instead, we can use <code class="literal">&lt;s:validate&gt;</code> to validate against the constraint defined on the model object.
+	</div><pre class="programlisting">&lt;h:form&gt;
+    &lt;h:messages/&gt;
+
+    &lt;div&gt;
+        Country:
+        &lt;h:inputText value="#{location.country}" required="true"&gt;
+            &lt;s:validate/&gt;
+        &lt;/h:inputText&gt;
+    &lt;/div&gt;
+    
+    &lt;div&gt;
+        Zip code:
+        &lt;h:inputText value="#{location.zip}" required="true"&gt;
+            &lt;s:validate/&gt;
+        &lt;/h:inputText&gt;
+    &lt;/div&gt;
+    
+    &lt;h:commandButton/&gt;
+
+&lt;/h:form&gt;
+</pre><div class="para">
+		<span class="emphasis"><em>Note:</em></span> specifying <code class="literal">@NotNull</code> on the model does <span class="emphasis"><em>not</em></span> eliminate the requirement for <code class="literal">required="true"</code> to appear on the control! This is due to a limitation of the JSF validation architecture.
+	</div><div class="para">
+		This approach <span class="emphasis"><em>defines</em></span> constraints on the model, and <span class="emphasis"><em>presents</em></span> constraint violations in the view—a significantly better design.
+	</div><div class="para">
+		However, it is not much less verbose than what we started with, so let us try <code class="literal">&lt;s:validateAll&gt;</code>:
+	</div><pre class="programlisting">&lt;h:form&gt;
+    
+    &lt;h:messages/&gt;
+
+    &lt;s:validateAll&gt;
+
+        &lt;div&gt;
+            Country:
+            &lt;h:inputText value="#{location.country}" required="true"/&gt;
+        &lt;/div&gt;
+
+        &lt;div&gt;
+            Zip code:
+            &lt;h:inputText value="#{location.zip}" required="true"/&gt;
+        &lt;/div&gt;
+
+        &lt;h:commandButton/&gt;
+
+    &lt;/s:validateAll&gt;
+
+&lt;/h:form&gt;
+</pre><div class="para">
+		This tag simply adds an <code class="literal">&lt;s:validate&gt;</code> to every input in the form. For a large form, it can save a lot of typing.
+	</div><div class="para">
+		Now we need to do something about displaying feedback to the user when validation fails. Currently we are displaying all messages at the top of the form. What we would really like to do is display the message next to the field with the error (this is possible in plain JSF), highlight the field and label (this is not possible) and, for good measure, display some image next the the field (also not possible). We also want to display a little colored asterisk next to the label for each required form field.
+	</div><div class="para">
+		That is quite a lot of functionality we need for each field of our form. We would not want to have to specify higlighting and the layout of the image, message and input field for every field on the form. So, instead, we will specify the common layout in a facelets template:
+	</div><pre class="programlisting">&lt;ui:composition xmlns="http://www.w3.org/1999/xhtml"
+                xmlns:ui="http://java.sun.com/jsf/facelets"
+                xmlns:h="http://java.sun.com/jsf/html"
+                xmlns:f="http://java.sun.com/jsf/core"
+                xmlns:s="http://jboss.com/products/seam/taglib"&gt;
+                 
+    &lt;div&gt;
+    
+        &lt;s:label styleClass="#{invalid?'error':''}"&gt;
+            &lt;ui:insert name="label"/&gt;
+            &lt;s:span styleClass="required" rendered="#{required}"&gt;*&lt;/s:span&gt;
+        &lt;/s:label&gt;
+        
+        &lt;span class="#{invalid?'error':''}"&gt;
+            &lt;h:graphicImage src="img/error.gif" rendered="#{invalid}"/&gt;
+            &lt;s:validateAll&gt;
+                &lt;ui:insert/&gt;
+            &lt;/s:validateAll&gt;
+        &lt;/span&gt;
+        
+        &lt;s:message styleClass="error"/&gt;
+        
+    &lt;/div&gt;
+    
+&lt;/ui:composition&gt;
+</pre><div class="para">
+		We can include this template for each of our form fields using <code class="literal">&lt;s:decorate&gt;</code>.
+	</div><pre class="programlisting">&lt;h:form&gt;
+
+    &lt;h:messages globalOnly="true"/&gt;
+
+    &lt;s:decorate template="edit.xhtml"&gt;
+        &lt;ui:define name="label"&gt;Country:&lt;/ui:define&gt;
+        &lt;h:inputText value="#{location.country}" required="true"/&gt;
+    &lt;/s:decorate&gt;
+    
+    &lt;s:decorate template="edit.xhtml"&gt;
+        &lt;ui:define name="label"&gt;Zip code:&lt;/ui:define&gt;
+        &lt;h:inputText value="#{location.zip}" required="true"/&gt;
+    &lt;/s:decorate&gt;
+
+    &lt;h:commandButton/&gt;
+
+&lt;/h:form&gt;
+</pre><div class="para">
+		Finally, we can use Ajax4JSF to display validation messages as the user is navigating around the form:
+	</div><pre class="programlisting">&lt;h:form&gt;
+
+    &lt;h:messages globalOnly="true"/&gt;
+
+    &lt;s:decorate id="countryDecoration" template="edit.xhtml"&gt;
+        &lt;ui:define name="label"&gt;Country:&lt;/ui:define&gt;
+        &lt;h:inputText value="#{location.country}" required="true"&gt;
+            &lt;a:support event="onblur" reRender="countryDecoration"/&gt;
+        &lt;/h:inputText&gt;
+    &lt;/s:decorate&gt;
+    
+    &lt;s:decorate id="zipDecoration" template="edit.xhtml"&gt;
+        &lt;ui:define name="label"&gt;Zip code:&lt;/ui:define&gt;
+        &lt;h:inputText value="#{location.zip}" required="true"&gt;
+            &lt;a:support event="onblur" reRender="zipDecoration"/&gt;
+        &lt;/h:inputText&gt;
+    &lt;/s:decorate&gt;
+
+    &lt;h:commandButton/&gt;
+
+&lt;/h:form&gt;
+</pre><div class="para">
+		As a final note, it would be better style to define explicit IDs for important controls on the page, especially if you want to do automated testing for the UI, using some toolkit like Selenium. If you do not provide explicit ids, JSF will generate them, but the generated values will change if you change anything on the page.
+	</div><pre class="programlisting">&lt;h:form id="form"&gt;
+
+    &lt;h:messages globalOnly="true"/&gt;
+
+    &lt;s:decorate id="countryDecoration" template="edit.xhtml"&gt;
+        &lt;ui:define name="label"&gt;Country:&lt;/ui:define&gt;
+        &lt;h:inputText id="country" value="#{location.country}" required="true"&gt;
+            &lt;a:support event="onblur" reRender="countryDecoration"/&gt;
+        &lt;/h:inputText&gt;
+    &lt;/s:decorate&gt;
+    
+    &lt;s:decorate id="zipDecoration" template="edit.xhtml"&gt;
+        &lt;ui:define name="label"&gt;Zip code:&lt;/ui:define&gt;
+        &lt;h:inputText id="zip" value="#{location.zip}" required="true"&gt;
+            &lt;a:support event="onblur" reRender="zipDecoration"/&gt;
+        &lt;/h:inputText&gt;
+    &lt;/s:decorate&gt;
+
+    &lt;h:commandButton/&gt;
+
+&lt;/h:form&gt;
+</pre></div><div xml:lang="en-US" class="chapter" title="Chapter 10. The Seam Application Framework" lang="en-US"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-The_Seam_Application_Framework">Chapter 10. The Seam Application Framework</h2></div></div></div><div class="toc"><dl><dt><span class="section"><a href="#Seam_Reference_Guide-The_Seam_Application_Framework-Introduction">10.1. Introduction</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-The_Seam_Application_Framework-Home_objects">10.2. Home objects</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-The_Seam_Application_Framework-Query_objects">10.3. Query objects</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-The_Seam_Application_Framework-Controller_objects">10.4. Controller objects</a></span></dt></dl></div><div class="para">
+		Seam makes it really easy to create applications by writing plain Java classes with annotations, which do not need to extend any special interfaces or superclasses. But we can simplify some common programming tasks even further, by providing a set of pre-built components which can be re-used either by configuration in <code class="literal">components.xml</code> (for very simple cases) or extension.
+	</div><div class="para">
+		The <span class="emphasis"><em>Seam Application Framework</em></span> can reduce the amount of code you need to write when doing basic database access in a web application, using either Hibernate or JPA.
+	</div><div class="para">
+		We should emphasize that the framework is extremely simple, just a handful of simple classes that are easy to understand and extend that Seam then uses when creating your application.
+	</div><div class="section" title="10.1. Introduction"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-The_Seam_Application_Framework-Introduction">10.1. Introduction</h2></div></div></div><div class="para">
+			The components provided by the Seam application framework may be used in one of two different approaches. The first way is to install and configure an instance of the component in <code class="literal">components.xml</code>, just like we have done with other kinds of built-in Seam components. For example, the following fragment from <code class="literal">components.xml</code> installs a component which can perform basic CRUD operations for a <code class="literal">Contact</code> entity:
+		</div><pre class="programlisting">&lt;framework:entity-home name="personHome" 
+                       entity-class="eg.Person" 
+                       entity-manager="#{personDatabase}"&gt;
+    &lt;framework:id&gt;#{param.personId}&lt;/framework:id&gt;
+&lt;/framework:entity-home&gt;
+</pre><div class="para">
+			If you would rather a different method to the above, you can use extension instead:
+		</div><pre class="programlisting">@Stateful
+ at Name("personHome")
+public class PersonHome extends EntityHome&lt;Person&gt; implements LocalPersonHome {
+    @RequestParameter String personId;
+    @In EntityManager personDatabase;
+    
+    public Object getId() { return personId; }
+    public EntityManager getEntityManager() { return personDatabase; }
+    
+}
+</pre><div class="para">
+			The second approach has one huge advantage: you can easily add extra functionality, and override the built-in functionality (the framework classes were carefully designed for extension and customization).
+		</div><div class="para">
+			A second advantage is that your classes may be EJB stateful sessin beans, if you like. (They do not have to be, they can be plain JavaBean components if you prefer.)
+		</div><div class="para">
+			At this time, the Seam Application Framework provides just four built-in components: <code class="literal">EntityHome</code> and <code class="literal">HibernateEntityHome</code> for CRUD, along with <code class="literal">EntityQuery</code> and <code class="literal">HibernateEntityQuery</code> for queries.
+		</div><div class="para">
+			The Home and Query components are written so that they can function with a scope of session, event or conversation. Which scope you use depends upon the state model you wish to use in your application.
+		</div><div class="para">
+			The Seam Application Framework only works with Seam-managed persistence contexts. By default, the components will look for a persistence context named <code class="literal">entityManager</code>.
+		</div></div><div class="section" title="10.2. Home objects"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-The_Seam_Application_Framework-Home_objects">10.2. Home objects</h2></div></div></div><div class="para">
+			A Home object provides persistence operations for a particular entity class. Suppose we have our trusty <code class="literal">Person</code> class:
+		</div><pre class="programlisting">@Entity
+public class Person {
+    @Id private Long id;
+    private String firstName;
+    private String lastName;
+    private Country nationality;
+    
+    //getters and setters...
+}
+</pre><div class="para">
+			We can define a <code class="literal">personHome</code> component either via configuration:
+		</div><pre class="programlisting">&lt;framework:entity-home name="personHome" entity-class="eg.Person" /&gt;
+</pre><div class="para">
+			Or via extension:
+		</div><pre class="programlisting">@Name("personHome")
+public class PersonHome extends EntityHome&lt;Person&gt; {}
+</pre><div class="para">
+			A Home object provides the following operations: <code class="literal">persist()</code>, <code class="literal">remove()</code>, <code class="literal">update()</code> and <code class="literal">getInstance()</code>. Before you can call the <code class="literal">remove()</code>, or <code class="literal">update()</code> operations, you must first set the identifier of the object you are interested in, using the <code class="literal">setId()</code> method.
+		</div><div class="para">
+			We can use a Home directly from a JSF page, for example:
+		</div><pre class="programlisting">&lt;h1&gt;Create Person&lt;/h1&gt;
+&lt;h:form&gt;
+    &lt;div&gt;First name: &lt;h:inputText value="#{personHome.instance.firstName}"/&gt;&lt;/div&gt;
+    &lt;div&gt;Last name: &lt;h:inputText value="#{personHome.instance.lastName}"/&gt;&lt;/div&gt;
+    &lt;div&gt;
+        &lt;h:commandButton value="Create Person" action="#{personHome.persist}"/&gt;
+    &lt;/div&gt;
+&lt;/h:form&gt;
+</pre><div class="para">
+			Usually, it is much nicer to be able to refer to the <code class="literal">Person</code> merely as <code class="literal">person</code>, so let us make that possible by adding a line to <code class="literal">components.xml</code>:
+		</div><pre class="programlisting">&lt;factory name="person" 
+         value="#{personHome.instance}"/&gt;
+
+&lt;framework:entity-home name="personHome" 
+                       entity-class="eg.Person" /&gt;
+</pre><div class="para">
+			(If we are using configuration.) Or by adding a <code class="literal">@Factory</code> method to <code class="literal">PersonHome</code>:
+		</div><pre class="programlisting">@Name("personHome")
+public class PersonHome extends EntityHome&lt;Person&gt; {
+    
+    @Factory("person")
+    public Person initPerson() { return getInstance(); }
+    
+}
+</pre><div class="para">
+			(If we are using extension.) This change simplifies our JSF page to the following:
+		</div><pre class="programlisting">&lt;h1&gt;Create Person&lt;/h1&gt;
+&lt;h:form&gt;
+    &lt;div&gt;First name: &lt;h:inputText value="#{person.firstName}"/&gt;&lt;/div&gt;
+    &lt;div&gt;Last name: &lt;h:inputText value="#{person.lastName}"/&gt;&lt;/div&gt;
+    &lt;div&gt;
+        &lt;h:commandButton value="Create Person" action="#{personHome.persist}"/&gt;
+    &lt;/div&gt;
+&lt;/h:form&gt;
+</pre><div class="para">
+			Well, that lets us create new <code class="literal">Person</code> entries. Now, if we want to be able to display, update and delete pre-existing <code class="literal">Person</code> entries in the database, we need to be able to pass the entry identifier to the <code class="literal">PersonHome</code>. Page parameters are a great way to do that:
+		</div><pre class="programlisting">&lt;pages&gt;
+    &lt;page view-id="/editPerson.jsp"&gt;
+        &lt;param name="personId" value="#{personHome.id}"/&gt;
+    &lt;/page&gt;
+&lt;/pages&gt;
+</pre><div class="para">
+			Now we can add the extra operations to our JSF page:
+		</div><pre class="programlisting">&lt;h1&gt;
+    &lt;h:outputText rendered="#{!personHome.managed}" value="Create Person"/&gt;
+    &lt;h:outputText rendered="#{personHome.managed}" value="Edit Person"/&gt;
+&lt;/h1&gt;
+&lt;h:form&gt;
+    &lt;div&gt;First name: &lt;h:inputText value="#{person.firstName}"/&gt;&lt;/div&gt;
+    &lt;div&gt;Last name: &lt;h:inputText value="#{person.lastName}"/&gt;&lt;/div&gt;
+    &lt;div&gt;
+        &lt;h:commandButton value="Create Person" action="#{personHome.persist}" 
+                             rendered="#{!personHome.managed}"/&gt;
+        &lt;h:commandButton value="Update Person" action="#{personHome.update}" 
+                             rendered="#{personHome.managed}"/&gt;
+        &lt;h:commandButton value="Delete Person" action="#{personHome.remove}" 
+                             rendered="#{personHome.managed}"/&gt;
+    &lt;/div&gt;
+&lt;/h:form&gt;
+</pre><div class="para">
+			When we link to the page with no request parameters, the page will be displayed as a <span class="emphasis"><em>Create Person</em></span> page. When we provide a value for the <code class="literal">personId</code> request parameter, it will be an <span class="emphasis"><em>Edit Person</em></span> page.
+		</div><div class="para">
+			Suppose we need to create <code class="literal">Person</code> entries with their nationality initialized. We can do that easily, via configuration:
+		</div><pre class="programlisting">&lt;factory name="person" 
+         value="#{personHome.instance}"/&gt;
+
+&lt;framework:entity-home name="personHome" 
+                       entity-class="eg.Person" 
+                       new-instance="#{newPerson}"/&gt;
+
+&lt;component name="newPerson" 
+           class="eg.Person"&gt;
+    &lt;property name="nationality"&gt;#{country}&lt;/property&gt;
+&lt;/component&gt;
+</pre><div class="para">
+			Or by extension:
+		</div><pre class="programlisting">@Name("personHome")
+public class PersonHome extends EntityHome&lt;Person&gt; {
+    
+    @In Country country;
+    
+    @Factory("person")
+    public Person initPerson() { return getInstance(); }
+    
+    protected Person createInstance() {
+        return new Person(country);
+    }
+    
+}
+</pre><div class="para">
+			Of course, the <code class="literal">Country</code> could be an object managed by another Home object, for example, <code class="literal">CountryHome</code>.
+		</div><div class="para">
+			To add more sophisticated operations (association management, etc), we can just add methods to <code class="literal">PersonHome</code>.
+		</div><pre class="programlisting">@Name("personHome")
+public class PersonHome extends EntityHome&lt;Person&gt; {
+    
+    @In Country country;
+    
+    @Factory("person")
+    public Person initPerson() { return getInstance(); }
+    
+    protected Person createInstance() {
+        return new Person(country);
+    }
+    
+    public void migrate()
+    {
+        getInstance().setCountry(country);
+        update();
+    }
+    
+}
+</pre><div class="para">
+			The Home object automatically displays faces messages when an operation is successful. To customize these messages we can, again, use configuration:
+		</div><pre class="programlisting">&lt;factory name="person" 
+         value="#{personHome.instance}"/&gt;
+
+&lt;framework:entity-home name="personHome"
+                       entity-class="eg.Person"
+                       new-instance="#{newPerson}"&gt;
+    &lt;framework:created-message&gt;New person #{person.firstName} #{person.lastName} created&lt;/framework:created-message&gt;
+    &lt;framework:deleted-message&gt;Person #{person.firstName} #{person.lastName} deleted&lt;/framework:deleted-message&gt;
+    &lt;framework:updated-message&gt;Person #{person.firstName} #{person.lastName} updated&lt;/framework:updated-message&gt;
+&lt;/framework:entity-home&gt;
+
+&lt;component name="newPerson" 
+           class="eg.Person"&gt;
+    &lt;property name="nationality"&gt;#{country}&lt;/property&gt;
+&lt;/component&gt;
+</pre><div class="para">
+			Or extension:
+		</div><pre class="programlisting">@Name("personHome")
+public class PersonHome extends EntityHome&lt;Person&gt; {
+    
+    @In Country country;
+    
+    @Factory("person")
+    public Person initPerson() { return getInstance(); }
+    
+    protected Person createInstance() {
+        return new Person(country);
+    }
+    
+    protected String getCreatedMessage() { return "New person #{person.firstName} 
+      #{person.lastName} created"; }
+    protected String getUpdatedMessage() { return "Person #{person.firstName} 
+      #{person.lastName} updated"; }
+    protected String getDeletedMessage() { return "Person #{person.firstName} 
+      #{person.lastName} deleted"; }
+    
+}
+</pre><div class="para">
+			But the best way to specify the messages is to put them in a resource bundle known to Seam (the bundle named <code class="literal">messages</code>, by default).
+		</div><pre class="programlisting">Person_created=New person #{person.firstName} #{person.lastName} created
+Person_deleted=Person #{person.firstName} #{person.lastName} deleted
+Person_updated=Person #{person.firstName} #{person.lastName} updated
+</pre><div class="para">
+			This enables internationalization, and keeps your code and configuration clean of presentation concerns.
+		</div><div class="para">
+			The final step is to add validation functionality to the page, using <code class="literal">&lt;s:validateAll&gt;</code> and <code class="literal">&lt;s:decorate&gt;</code>, but I'll leave that for you to figure out.
+		</div></div><div class="section" title="10.3. Query objects"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-The_Seam_Application_Framework-Query_objects">10.3. Query objects</h2></div></div></div><div class="para">
+			If we need a list of all <code class="literal">Person</code> instance in the database, we can use a Query object. For example:
+		</div><pre class="programlisting">&lt;framework:entity-query name="people" 
+                        ejbql="select p from Person p"/&gt;
+</pre><div class="para">
+			We can use it from a JSF page:
+		</div><pre class="programlisting">&lt;h1&gt;List of people&lt;/h1&gt;
+&lt;h:dataTable value="#{people.resultList}" var="person"&gt;
+    &lt;h:column&gt;
+        &lt;s:link view="/editPerson.jsp" value="#{person.firstName} #{person.lastName}"&gt;
+            &lt;f:param name="personId" value="#{person.id}"/&gt;
+        &lt;/s:link&gt;
+    &lt;/h:column&gt;
+&lt;/h:dataTable&gt;
+</pre><div class="para">
+			We probably need to support pagination:
+		</div><pre class="programlisting">&lt;framework:entity-query name="people" 
+                        ejbql="select p from Person p" 
+                        order="lastName" 
+                        max-results="20"/&gt;
+</pre><div class="para">
+			We'll use a page parameter to determine the page to display:
+		</div><pre class="programlisting">&lt;pages&gt;
+    &lt;page view-id="/searchPerson.jsp"&gt;
+        &lt;param name="firstResult" value="#{people.firstResult}"/&gt;
+    &lt;/page&gt;
+&lt;/pages&gt;
+</pre><div class="para">
+			The JSF code for a pagination control is a bit verbose, but manageable:
+		</div><pre class="programlisting">&lt;h1&gt;Search for people&lt;/h1&gt;
+&lt;h:dataTable value="#{people.resultList}" var="person"&gt;
+    &lt;h:column&gt;
+        &lt;s:link view="/editPerson.jsp" value="#{person.firstName} #{person.lastName}"&gt;
+            &lt;f:param name="personId" value="#{person.id}"/&gt;
+        &lt;/s:link&gt;
+    &lt;/h:column&gt;
+&lt;/h:dataTable&gt;
+
+&lt;s:link view="/search.xhtml" rendered="#{people.previousExists}" value="First Page"&gt;
+    &lt;f:param name="firstResult" value="0"/&gt;
+&lt;/s:link&gt;
+
+&lt;s:link view="/search.xhtml" rendered="#{people.previousExists}" value="Previous Page"&gt;
+    &lt;f:param name="firstResult" value="#{people.previousFirstResult}"/&gt;
+&lt;/s:link&gt;
+
+&lt;s:link view="/search.xhtml" rendered="#{people.nextExists}" value="Next Page"&gt;
+    &lt;f:param name="firstResult" value="#{people.nextFirstResult}"/&gt;
+&lt;/s:link&gt;
+
+&lt;s:link view="/search.xhtml" rendered="#{people.nextExists}" value="Last Page"&gt;
+    &lt;f:param name="firstResult" value="#{people.lastFirstResult}"/&gt;
+&lt;/s:link&gt;
+</pre><div class="para">
+			Real search screens let the user enter a bunch of optional search criteria to narrow the list of results returned. The Query object lets you specify optional "restrictions" to support this important usecase:
+		</div><pre class="programlisting">&lt;component name="examplePerson" class="Person"/&gt;
+        
+&lt;framework:entity-query name="people" 
+                        ejbql="select p from Person p" 
+                        order="lastName" 
+                        max-results="20"&gt;
+    &lt;framework:restrictions&gt;
+        &lt;value&gt;lower(firstName) like lower( #{examplePerson.firstName} + '%' )&lt;/value&gt;
+        &lt;value&gt;lower(lastName) like lower( #{examplePerson.lastName} + '%' )&lt;/value&gt;
+    &lt;/framework:restrictions&gt;
+&lt;/framework:entity-query&gt;
+</pre><div class="para">
+			Notice the use of an <code class="code">example</code> object.
+		</div><pre class="programlisting">&lt;h1&gt;Search for people&lt;/h1&gt;
+&lt;h:form&gt;
+    &lt;div&gt;First name: &lt;h:inputText value="#{examplePerson.firstName}"/&gt;&lt;/div&gt;
+    &lt;div&gt;Last name: &lt;h:inputText value="#{examplePerson.lastName}"/&gt;&lt;/div&gt;
+    &lt;div&gt;&lt;h:commandButton value="Search" action="/search.jsp"/&gt;&lt;/div&gt;
+&lt;/h:form&gt;
+
+&lt;h:dataTable value="#{people.resultList}" var="person"&gt;
+    &lt;h:column&gt;
+        &lt;s:link view="/editPerson.jsp" value="#{person.firstName} #{person.lastName}"&gt;
+            &lt;f:param name="personId" value="#{person.id}"/&gt;
+        &lt;/s:link&gt;
+    &lt;/h:column&gt;
+&lt;/h:dataTable&gt;
+</pre><div class="para">
+			The examples in this section have all shown reuse by configuration. However, reuse by extension is equally possible for Query objects.
+		</div></div><div class="section" title="10.4. Controller objects"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-The_Seam_Application_Framework-Controller_objects">10.4. Controller objects</h2></div></div></div><div class="para">
+			A totally optional part of the Seam Application Framework is the class <code class="literal">Controller</code> and its subclasses <code class="literal">EntityController</code><code class="literal">HibernateEntityController</code> and <code class="literal">BusinessProcessController</code>. These classes provide nothing more than some convenience methods for access to commonly used built-in components and methods of built-in components. They help save a few keystrokes (characters can add up!) and provide a great launchpad for new users to explore the rich functionality built in to Seam.
+		</div><div class="para">
+			For example, here is what <code class="literal">RegisterAction</code> from the Seam registration example would look like:
+		</div><pre class="programlisting">@Stateless
+ at Name("register")
+public class RegisterAction extends EntityController implements Register
+{
+
+   @In private User user;
+   
+   public String register()
+   {
+      List existing = createQuery("select u.username from User u where u.username=:username")
+         .setParameter("username", user.getUsername())
+         .getResultList();
+      
+      if ( existing.size()==0 )
+      {
+         persist(user);
+         info("Registered new user #{user.username}");
+         return "/registered.jspx";
+      }
+      else
+      {
+         addFacesMessage("User #{user.username} already exists");
+         return null;
+      }
+   }
+
+}
+</pre></div></div><div xml:lang="en-US" class="chapter" title="Chapter 11. Seam and JBoss Rules" lang="en-US"><div class="titlepage"><div><div><h2 class="title" id="drools">Chapter 11. Seam and JBoss Rules</h2></div></div></div><div class="toc"><dl><dt><span class="section"><a href="#id2733639">11.1. Installing rules</a></span></dt><dt><span class="section"><a href="#id2704336">11.2. Using rules from a Seam component</a></span></dt><dt><span class="section"><a href="#id3302947">11.3. Using rules from a jBPM process definition</a></span></dt></dl></div><div class="para">
+		Seam makes it easy to call JBoss Rules (Drools) rulebases from Seam components or jBPM process definitions.
+	</div><div class="section" title="11.1. Installing rules"><div class="titlepage"><div><div><h2 class="title" id="id2733639">11.1. Installing rules</h2></div></div></div><div class="para">
+			The first step is to make an instance of <code class="literal">org.drools.RuleBase</code> available in a Seam context variable. For testing purposes, Seam provides a built-in component that compiles a static set of rules from the classpath. You can install this component via <code class="literal">components.xml</code>:
+		</div><pre class="programlisting XML">&lt;drools:rule-base name="policyPricingRules"&gt;
+    &lt;drools:rule-files&gt;
+        &lt;value&gt;policyPricingRules.drl&lt;/value&gt;
+    &lt;/drools:rule-files&gt;
+&lt;/drools:rule-base&gt;
+</pre><div class="para">
+			This component compiles rules from a set of <code class="literal">.drl</code> files and caches an instance of <code class="literal">org.drools.RuleBase</code> in the Seam <code class="literal">APPLICATION</code> context. Note that it is quite likely that you will need to install multiple rule bases in a rule-driven application.
+		</div><div class="para">
+			If you want to use a Drools DSL, you also need to specify the DSL definition:
+		</div><pre class="programlisting XML">&lt;drools:rule-base name="policyPricingRules" dsl-file="policyPricing.dsl"&gt;
+    &lt;drools:rule-files&gt;
+        &lt;value&gt;policyPricingRules.drl&lt;/value&gt;
+    &lt;/drools:rule-files&gt;
+&lt;/drools:rule-base&gt;
+</pre><div class="para">
+			In most rules-driven applications, rules need to be dynamically deployable, so a production application will want to use a Drools RuleAgent to manage the RuleBase. The RuleAgent can connect to a Drools rule server (BRMS) or hot deploy rules packages from a local file repository. The RulesAgent-managed RuleBase is also configurable in <code class="literal">components.xml</code>:
+		</div><pre class="programlisting XML">&lt;drools:rule-agent name="insuranceRules" 
+                    configurationFile="/WEB-INF/deployedrules.properties" /&gt;
+</pre><div class="para">
+			The properties file contains properties specific to the RulesAgent. Here is an example configuration file from the Drools example distribution.
+		</div><pre class="programlisting">newInstance=true
+url=http://localhost:8080/drools-jbrms/org.drools.brms.JBRMS/package/org.acme.insurance/fmeyer
+localCacheDir=/Users/fernandomeyer/projects/jbossrules/drools-examples/drools-examples-brms/cache
+poll=30
+name=insuranceconfig
+</pre><div class="para">
+			It is also possible to configure the options on the component directly, bypassing the configuration file.
+		</div><pre class="programlisting XML">&lt;drools:rule-agent name="insuranceRules"
+   url="http://localhost:8080/drools-jbrms/org.drools.brms.JBRMS/package/org.acme.insurance/fmeyer"
+   local-cache-dir="/Users/fernandomeyer/projects/jbossrules/drools-examples/drools-examples-brms/cache"
+   poll="30"
+   configuration-name="insuranceconfig" /&gt;
+</pre><div class="para">
+			Next, we need to make an instance of <code class="literal">org.drools.WorkingMemory</code> available to each conversation. (Each <code class="literal">WorkingMemory</code> accumulates facts relating to the current conversation.)
+		</div><pre class="programlisting XML">&lt;drools:managed-working-memory name="policyPricingWorkingMemory" auto-create="true" rule-base="#{policyPricingRules}"/&gt;
+</pre><div class="para">
+			Notice that we gave the <code class="literal">policyPricingWorkingMemory</code> a reference back to our rule base via the <code class="literal">ruleBase</code> configuration property.
+		</div></div><div class="section" title="11.2. Using rules from a Seam component"><div class="titlepage"><div><div><h2 class="title" id="id2704336">11.2. Using rules from a Seam component</h2></div></div></div><div class="para">
+			We can now inject our <code class="literal">WorkingMemory</code> into any Seam component, assert facts, and fire rules:
+		</div><pre class="programlisting JAVA">@In WorkingMemory policyPricingWorkingMemory;
+
+ at In Policy policy;
+ at In Customer customer;
+
+public void pricePolicy() throws FactException
+{
+    policyPricingWorkingMemory.assertObject(policy);
+    policyPricingWorkingMemory.assertObject(customer);
+    policyPricingWorkingMemory.fireAllRules();
+}
+</pre></div><div class="section" title="11.3. Using rules from a jBPM process definition"><div class="titlepage"><div><div><h2 class="title" id="id3302947">11.3. Using rules from a jBPM process definition</h2></div></div></div><div class="para">
+			You can even allow a rule base to act as a jBPM action handler, decision handler, or assignment handler—in either a pageflow or business process definition.
+		</div><pre class="programlisting XML">&lt;decision name="approval"&gt;
+         
+    &lt;handler class="org.jboss.seam.drools.DroolsDecisionHandler"&gt;
+        &lt;workingMemoryName&gt;orderApprovalRulesWorkingMemory&lt;/workingMemoryName&gt;
+        &lt;assertObjects&gt;
+            &lt;element&gt;#{customer}&lt;/element&gt;
+            &lt;element&gt;#{order}&lt;/element&gt;
+            &lt;element&gt;#{order.lineItems}&lt;/element&gt;
+        &lt;/assertObjects&gt;
+    &lt;/handler&gt;
+    
+    &lt;transition name="approved" to="ship"&gt;
+        &lt;action class="org.jboss.seam.drools.DroolsActionHandler"&gt;
+            &lt;workingMemoryName&gt;shippingRulesWorkingMemory&lt;/workingMemoryName&gt;
+            &lt;assertObjects&gt;
+                &lt;element&gt;#{customer}&lt;/element&gt;
+                &lt;element&gt;#{order}&lt;/element&gt;
+                &lt;element&gt;#{order.lineItems}&lt;/element&gt;
+            &lt;/assertObjects&gt;
+        &lt;/action&gt;
+    &lt;/transition&gt;
+    
+    &lt;transition name="rejected" to="cancelled"/&gt;
+    
+&lt;/decision&gt;
+</pre><div class="para">
+			The <code class="literal">&lt;assertObjects&gt;</code> element specifies EL expressions that return an object or collection of objects to be asserted as facts into the <code class="literal">WorkingMemory</code>.
+		</div><div class="para">
+			There is also support for using Drools for jBPM task assignments:
+		</div><pre class="programlisting XML">&lt;task-node name="review"&gt;
+    &lt;task name="review" description="Review Order"&gt;
+        &lt;assignment handler="org.jboss.seam.drools.DroolsAssignmentHandler"&gt;
+            &lt;workingMemoryName&gt;orderApprovalRulesWorkingMemory&lt;/workingMemoryName&gt;
+            &lt;assertObjects&gt;
+                &lt;element&gt;#{actor}&lt;/element&gt;
+                &lt;element&gt;#{customer}&lt;/element&gt;
+                &lt;element&gt;#{order}&lt;/element&gt;
+                &lt;element&gt;#{order.lineItems}&lt;/element&gt;
+            &lt;/assertObjects&gt;
+        &lt;/assignment&gt;
+    &lt;/task&gt;
+    &lt;transition name="rejected" to="cancelled"/&gt;
+    &lt;transition name="approved" to="approved"/&gt;
+&lt;/task-node&gt;
+</pre><div class="para">
+			Certain objects are available to the rules as Drools globals, namely the jBPM <code class="literal">Assignable</code>, as <code class="literal">assignable</code> and a Seam <code class="literal">Decision</code> object, as <code class="literal">decision</code>. Rules which handle decisions should call <code class="literal">decision.setOutcome("result")</code> to determine the result of the decision. Rules which perform assignments should set the actor id using the <code class="literal">Assignable</code>.
+		</div><pre class="programlisting">package org.jboss.seam.examples.shop
+
+import org.jboss.seam.drools.Decision
+
+global Decision decision
+
+rule "Approve Order For Loyal Customer"
+  when
+    Customer( loyaltyStatus == "GOLD" )
+    Order( totalAmount &lt;= 10000 )
+  then
+    decision.setOutcome("approved");
+end
+</pre><pre class="programlisting">package org.jboss.seam.examples.shop
+
+import org.jbpm.taskmgmt.exe.Assignable
+
+global Assignable assignable
+
+rule "Assign Review For Small Order"
+  when
+    Order( totalAmount &lt;= 100 )
+  then
+    assignable.setPooledActors( new String[] {"reviewers"} );
+end
+</pre></div></div><div xml:lang="en-US" class="chapter" title="Chapter 12. Security" lang="en-US"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Security">Chapter 12. Security</h2></div></div></div><div class="toc"><dl><dt><span class="sect1"><a href="#Seam_Reference_Guide-Security-Overview">12.1. Overview</a></span></dt><dd><dl><dt><span class="sect2"><a href="#Seam_Reference_Guide-Overview-Which_mode_is_right_for_my_application">12.1.1. Which mode is right for my application?</a></span></dt></dl></dd><dt><span class="sect1"><a href="#Seam_Reference_Guide-Security-Requirements">12.2. Requirements</a></span></dt><dt><span class="sect1"><a href="#Seam_Reference_Guide-Security-Authentication">12.3. Authentication</a></span></dt><dd><dl><dt><span class="sect2"><a href="#Seam_Reference_Guide-Authentication-Configuration">12.3.1. Configuration</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Authentication-Writing_an_authenti!
 cation_method">12.3.2. Writing an authentication method</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Authentication-Writing_a_login_form">12.3.3. Writing a login form</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Authentication-Simplified_Configuration___Summary">12.3.4. Simplified Configuration - Summary</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Authentication-Handling_Security_Exceptions">12.3.5. Handling Security Exceptions</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Authentication-Login_Redirection">12.3.6. Login Redirection</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Authentication-Advanced_Authentication_Features">12.3.7. Advanced Authentication Features</a></span></dt></dl></dd><dt><span class="sect1"><a href="#Seam_Reference_Guide-Security-Error_Messages">12.4. Error Messages</a></span></dt><dt><span class="sect1"><a href="#Seam_Reference_!
 Guide-Security-Authorization">12.5. Authorization</a></span></!
 dt><dd><
dl><dt><span class="sect2"><a href="#Seam_Reference_Guide-Authorization-Core_concepts">12.5.1. Core concepts</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Authorization-Securing_components">12.5.2. Securing components</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Authorization-Security_in_the_user_interface">12.5.3. Security in the user interface</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Authorization-Securing_pages">12.5.4. Securing pages</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Authorization-Securing_Entities">12.5.5. Securing Entities</a></span></dt></dl></dd><dt><span class="sect1"><a href="#Seam_Reference_Guide-Security-Writing_Security_Rules">12.6. Writing Security Rules</a></span></dt><dd><dl><dt><span class="sect2"><a href="#Seam_Reference_Guide-Writing_Security_Rules-Permissions_Overview">12.6.1. Permissions Overview</a></span></dt><dt><span class="sect2"><a href!
 ="#Seam_Reference_Guide-Writing_Security_Rules-Configuring_a_rules_file">12.6.2. Configuring a rules file</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Writing_Security_Rules-Creating_a_security_rules_file">12.6.3. Creating a security rules file</a></span></dt></dl></dd><dt><span class="sect1"><a href="#Seam_Reference_Guide-Security-SSL_Security">12.7. SSL Security</a></span></dt><dt><span class="sect1"><a href="#Seam_Reference_Guide-Security-Implementing_a_Captcha_Test">12.8. Implementing a Captcha Test</a></span></dt><dd><dl><dt><span class="sect2"><a href="#Seam_Reference_Guide-Implementing_a_Captcha_Test-Configuring_the_Captcha_Servlet">12.8.1. Configuring the Captcha Servlet</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Implementing_a_Captcha_Test-Adding_a_Captcha_to_a_page">12.8.2. Adding a Captcha to a page</a></span></dt></dl></dd></dl></div><div class="para">
+		The Seam Security API is an optional Seam feature that provides authentication and authorization features for securing both domain and page resources within your Seam project.
+	</div><div class="sect1" title="12.1. Overview"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Security-Overview" class="title">Overview</h1></div></div></div><div class="para">
+		Seam Security provides two different modes of operation:
+	</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+				<span class="emphasis"><em>simplified mode</em></span> - this mode supports authentication services and simple role-based security checks.
+			</div></li><li class="listitem"><div class="para">
+				<span class="emphasis"><em>advanced mode</em></span> - this mode supports all the same features as the simplified mode, plus it offers rule-based security checks using JBoss Rules.
+			</div></li></ul></div><div class="sect2" title="12.1.1. Which mode is right for my application?"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Overview-Which_mode_is_right_for_my_application" class="title">Which mode is right for my application?</h1></div></div></div><div class="para">
+		That all depends on the requirements of your application. If you have minimal security requirements, for example if you only wish to restrict certain pages and actions to users who are logged in, or who belong to a certain role, then the simplified mode will probably be sufficient. The advantages of this is a more simplified configuration, significantly less libraries to include, and a smaller memory footprint.
+	</div><div class="para">
+		If on the other hand, your application requires security checks based on contextual state or complex business rules, then you will require the features provided by the advanced mode.
+	</div></div></div><div class="sect1" title="12.2. Requirements"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Security-Requirements" class="title">Requirements</h1></div></div></div><div class="para">
+		If using the advanced mode features of Seam Security, the following jar files are required to be configured as modules in <code class="literal">application.xml</code>. If you are using Seam Security in simplified mode, these are <span class="emphasis"><em>not</em></span> required:
+	</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+				drools-compiler-3.0.5.jar
+			</div></li><li class="listitem"><div class="para">
+				drools-core-3.0.5.jar
+			</div></li><li class="listitem"><div class="para">
+				commons-jci-core-1.0-406301.jar
+			</div></li><li class="listitem"><div class="para">
+				commons-jci-janino-2.4.3.jar
+			</div></li><li class="listitem"><div class="para">
+				commons-lang-2.1.jar
+			</div></li><li class="listitem"><div class="para">
+				janino-2.4.3.jar
+			</div></li><li class="listitem"><div class="para">
+				stringtemplate-2.3b6.jar
+			</div></li><li class="listitem"><div class="para">
+				antlr-2.7.6.jar
+			</div></li><li class="listitem"><div class="para">
+				antlr-3.0ea8.jar
+			</div></li></ul></div><div class="para">
+		For web-based security, <code class="literal">jboss-seam-ui.jar</code> must also be included in the application's war file. Also, to make use of the security EL functions, <code class="literal">SeamFaceletViewHandler</code> must be used. Configure it in <code class="literal">faces-config.xml</code> like this:
+	</div><pre class="programlisting">&lt;application&gt;
+    &lt;view-handler&gt;org.jboss.seam.ui.facelet.SeamFaceletViewHandler&lt;/view-handler&gt;
+&lt;/application&gt;
+</pre></div><div class="sect1" title="12.3. Authentication"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Security-Authentication" class="title">Authentication</h1></div></div></div><div class="para">
+		The authentication features provided by Seam Security are built upon JAAS (Java Authentication and Authorization Service), and as such provide a robust and highly configurable API for handling user authentication. However, for less complex authentication requirements Seam offers a much more simplified method of authentication that hides the complexity of JAAS.
+	</div><div class="sect2" title="12.3.1. Configuration"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Authentication-Configuration" class="title">Configuration</h1></div></div></div><div class="para">
+		The simplified authentication method uses a built-in JAAS login module, <code class="literal">SeamLoginModule</code>, which delegates authentication to one of your own Seam components. This login module is already configured inside Seam as part of a default application policy and as such does not require any additional configuration files. It allows you to write an authentication method using the entity classes that are provided by your own application. Configuring this simplified form of authentication requires the <code class="literal">identity</code> component to be configured in <code class="literal">components.xml</code>:
+	</div><pre class="programlisting">&lt;components xmlns="http://jboss.com/products/seam/components"
+            xmlns:core="http://jboss.com/products/seam/core"
+            xmlns:security="http://jboss.com/products/seam/security"
+            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+            xsi:schemaLocation=
+                "http://jboss.com/products/seam/core http://jboss.com/products/seam/core-1.2.xsd 
+                 http://jboss.com/products/seam/components http://jboss.com/products/seam/components-1.2.xsd
+                 http://jboss.com/products/seam/drools http://jboss.com/products/seam/drools-1.2.xsd"
+                 http://jboss.com/products/seam/security http://jboss.com/products/seam/security-1.2.xsd"&gt;                
+        
+    &lt;security:identity authenticate-method="#{authenticator.authenticate}"/&gt;
+    
+&lt;/components&gt;
+</pre><div class="para">
+		If you wish to use the advanced security features such as rule-based permission checks, all you need to do is include the Drools (JBoss Rules) jars in your classpath, and add some additional configuration, described later.
+	</div><div class="para">
+		The EL expression <code class="literal">#{authenticator.authenticate}</code> is a method binding indicating that the <code class="literal">authenticate</code> method of the <code class="literal">authenticator</code> component will be used to authenticate the user.
+	</div></div><div class="sect2" title="12.3.2. Writing an authentication method"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Authentication-Writing_an_authentication_method" class="title">Writing an authentication method</h1></div></div></div><div class="para">
+		The <code class="literal">authenticate-method</code> property specified for <code class="literal">identity</code> in <code class="literal">components.xml</code> specifies which method will be used by <code class="literal">SeamLoginModule</code> to authenticate users. This method takes no parameters, and is expected to return a boolean indicating whether authentication is successful or not. The user's username and password can be obtained from <code class="literal">Identity.instance().getUsername()</code> and <code class="literal">Identity.instance().getPassword()</code>, respectively. Any roles that the user is a member of should be assigned using <code class="literal">Identity.instance().addRole()</code>. Here is a complete example of an authentication method inside a JavaBean component:
+	</div><pre class="programlisting">@Name("authenticator")
+public class Authenticator {
+   @In EntityManager entityManager;
+   
+   public boolean authenticate() {
+      try
+      {
+         User user = (User) entityManager.createQuery(
+            "from User where username = :username and password = :password")
+            .setParameter("username", Identity.instance().getUsername())
+            .setParameter("password", Identity.instance().getPassword())
+            .getSingleResult();
+
+         if (user.getRoles() != null)
+         {
+            for (UserRole mr : user.getRoles())
+               Identity.instance().addRole(mr.getName());
+         }
+
+         return true;
+      }
+      catch (NoResultException ex)
+      {
+         FacesMessages.instance().add("Invalid username/password");
+         return false;
+      }
+      
+   }
+   
+}
+</pre><div class="para">
+		In the above example, both <code class="literal">User</code> and <code class="literal">UserRole</code> are application-specific entity beans. The <code class="literal">roles</code> parameter is populated with the roles that the user is a member of, which should be added to the <code class="literal">Set</code> as literal string values, for example, <code class="literal">admin</code>, <code class="literal">user</code>. In this case, if the user record is not found and a <code class="literal">NoResultException</code> thrown, the authentication method returns <code class="literal">false</code> to indicate the authentication failed.
+	</div></div><div class="sect2" title="12.3.3. Writing a login form"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Authentication-Writing_a_login_form" class="title">Writing a login form</h1></div></div></div><div class="para">
+		The <code class="literal">Identity</code> component provides both <code class="literal">username</code> and <code class="literal">password</code> properties, catering for the most common authentication scenario. These properties can be bound directly to the username and password fields on a login form. Once these properties are set, calling the <code class="literal">identity.login()</code> method will authenticate the user using the provided credentials. Here is an example of a simple login form:
+	</div><pre class="programlisting">&lt;div&gt;
+    &lt;h:outputLabel for="name" value="Username"/&gt;
+    &lt;h:inputText id="name" value="#{identity.username}"/&gt;
+&lt;/div&gt;
+
+&lt;div&gt;
+    &lt;h:outputLabel for="password" value="Password"/&gt;
+    &lt;h:inputSecret id="password" value="#{identity.password}"/&gt;
+&lt;/div&gt;
+
+&lt;div&gt;
+    &lt;h:commandButton value="Login" action="#{identity.login}"/&gt;
+&lt;/div&gt;
+</pre><div class="para">
+		Similarly, logging out the user is done by calling <code class="literal">#{identity.logout}</code>. Calling this action will clear the security state of the currently authenticated user.
+	</div></div><div class="sect2" title="12.3.4. Simplified Configuration - Summary"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Authentication-Simplified_Configuration___Summary" class="title">Simplified Configuration - Summary</h1></div></div></div><div class="para">
+		So to sum up, there are the three easy steps to configure authentication:
+	</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+				Configure an authentication method in <code class="literal">components.xml</code>.
+			</div></li><li class="listitem"><div class="para">
+				Write an authentication method.
+			</div></li><li class="listitem"><div class="para">
+				Write a login form so that the user can authenticate.
+			</div></li></ul></div></div><div class="sect2" title="12.3.5. Handling Security Exceptions"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Authentication-Handling_Security_Exceptions" class="title">Handling Security Exceptions</h1></div></div></div><div class="para">
+		To prevent users from receiving the default error page in response to a security error, it is recommended that <code class="literal">pages.xml</code> is configured to redirect security errors to a more meaningful page. The two main types of exceptions thrown by the security API are:
+	</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+				<code class="literal">NotLoggedInException</code> - This exception is thrown if the user attempts to access a restricted action or page when they are not logged in.
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">AuthorizationException</code> - This exception is only thrown if the user is already logged in, and they have attempted to access a restricted action or page for which they do not have the necessary privileges.
+			</div></li></ul></div><div class="para">
+		In the case of a <code class="literal">NotLoggedInException</code>, it is recommended that the user is redirected to either a login or registration page so that they can log in. For an <code class="literal">AuthorizationException</code>, it may be useful to redirect the user to an error page. Here is an example of a <code class="literal">pages.xml</code> file that redirects both of these security exceptions:
+	</div><pre class="programlisting">&lt;pages&gt;
+
+    ...
+    
+    &lt;exception class="org.jboss.seam.security.NotLoggedInException"&gt;
+        &lt;redirect view-id="/login.xhtml"&gt;
+            &lt;message&gt;You must be logged in to perform this action&lt;/message&gt;
+        &lt;/redirect&gt;
+    &lt;/exception&gt;
+    
+    &lt;exception class="org.jboss.seam.security.AuthorizationException"&gt;
+        &lt;end-conversation/&gt;
+        &lt;redirect view-id="/security_error.xhtml"&gt;
+            &lt;message&gt;
+                              You do not have the necessary security privileges to perform this action.
+            &lt;/message&gt;
+        &lt;/redirect&gt;
+    &lt;/exception&gt;
+  
+&lt;/pages&gt;
+</pre><div class="para">
+		Most web applications require even more sophisticated handling of login redirection, so Seam includes some special functionality for handling this problem.
+	</div></div><div class="sect2" title="12.3.6. Login Redirection"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Authentication-Login_Redirection" class="title">Login Redirection</h1></div></div></div><div class="para">
+		You can ask Seam to redirect the user to a login screen when an unauthenticated user tries to access a particular view (or wildcarded view id) as follows:
+	</div><pre class="programlisting">&lt;pages login-view-id="/login.xhtml"&gt;
+
+    &lt;page view-id="/members/*" login-required="true"/&gt;
+    
+    ...
+    
+&lt;/pages&gt;
+</pre><div class="para">
+		(This is less of a blunt instrument than the exception handler shown above, but should probably be used in conjunction with it.)
+	</div><div class="para">
+		After the user logs in, we want to automatically send them back where they came from, so they can retry the action that required logging in. If you add the following event listeners to <code class="literal">components.xml</code>, attempts to access a restricted view while not logged in will be remembered, so that upon the user successfully logging in they will be redirected to the originally requested view, with any page parameters that existed in the original request.
+	</div><pre class="programlisting">&lt;event type="org.jboss.seam.notLoggedIn"&gt;
+    &lt;action expression="#{redirect.captureCurrentView}"/&gt;
+&lt;/event&gt;
+    
+&lt;event type="org.jboss.seam.postAuthenticate"&gt;
+    &lt;action expression="#{redirect.returnToCapturedView}"/&gt;
+&lt;/event&gt;
+</pre><div class="note"><h2>Note</h2><div class="para">
+			Login redirection is implemented as a conversation-scoped mechanism, so do not end the conversation in your <code class="literal">authenticate()</code> method.
+		</div></div></div><div class="sect2" title="12.3.7. Advanced Authentication Features"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Authentication-Advanced_Authentication_Features" class="title">Advanced Authentication Features</h1></div></div></div><div class="para">
+		This section explores some of the advanced features provided by the security API for addressing more complex security requirements.
+	</div><div class="sect3" title="12.3.7.1. Using your container's JAAS configuration"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Advanced_Authentication_Features-Using_your_containers_JAAS_configuration" class="title">Using your container's JAAS configuration</h1></div></div></div><div class="para">
+		If you would rather not use the simplified JAAS configuration provided by the Seam Security API, you may instead delegate to the default system JAAS configuration by providing a <code class="literal">jaasConfigName</code> property in <code class="literal">components.xml</code>. For example, if you are using JBoss AS and wish to use the <code class="literal">other</code> policy (which uses the <code class="literal">UsersRolesLoginModule</code> login module provided by JBoss AS), then the entry in <code class="literal">components.xml</code> would look like this:
+	</div><pre class="programlisting">&lt;security:identity authenticate-method="#{authenticator.authenticate}" 
+                      jaas-config-name="other"/&gt;
+</pre></div></div></div><div class="sect1" title="12.4. Error Messages"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Security-Error_Messages" class="title">Error Messages</h1></div></div></div><div class="para">
+		The security API produces a number of default faces messages for various security-related events. The following table lists the message keys that can be used to override these messages by specifying them in a <code class="literal">message.properties</code> resource file.
+	</div><div class="table" id="Seam_Reference_Guide-Error_Messages-Security_Message_Keys"><div class="table-contents"><table summary="Security Message Keys" border="1"><colgroup><col width="25%" /><col width="75%" /></colgroup><tbody><tr><td>
+						<div class="para">
+							<code class="literal">org.jboss.seam.loginSuccessful</code>
+						</div>
+					</td><td>
+						<div class="para">
+							This message is produced when a user successfully logs in via the security API.
+						</div>
+					</td></tr><tr><td>
+						<div class="para">
+							<code class="literal">org.jboss.seam.loginFailed</code>
+						</div>
+					</td><td>
+						<div class="para">
+							This message is produced when the login process fails, either because the user provided an incorrect username or password, or because authentication failed in some other way.
+						</div>
+					</td></tr><tr><td>
+						<div class="para">
+							<code class="literal">org.jboss.seam.NotLoggedIn</code>
+						</div>
+					</td><td>
+						<div class="para">
+							This message is produced when a user attempts to perform an action or access a page that requires a security check, and the user is not currently authenticated.
+						</div>
+					</td></tr></tbody></table></div><h6>Table 12.1. Security Message Keys</h6></div><br class="table-break" /></div><div class="sect1" title="12.5. Authorization"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Security-Authorization" class="title">Authorization</h1></div></div></div><div class="para">
+		There are a number of authorization features provided by the Seam Security API for securing access to components, component methods, and pages. This section describes each of these. An important thing to note is that if you wish to use any of the advanced features (such as rule-based permissions) then your <code class="filename">components.xml</code> must be configured to support this - see the Configuration section above.
+	</div><div class="sect2" title="12.5.1. Core concepts"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Authorization-Core_concepts" class="title">Core concepts</h1></div></div></div><div class="para">
+		Each of the authorization mechanisms provided by the Seam Security API are built upon the concept of a user being granted roles and/or permissions. A role is a <span class="emphasis"><em>group</em></span>, or <span class="emphasis"><em>type</em></span>, of user that may have been granted certain privileges for performing one or more specific actions within an application. A permission on the other hand is a privilege (sometimes once-off) for performing a single, specific action. It is entirely possible to build an application using nothing but permissions, however roles offer a higher level of convenience when granting privileges to groups of users.
+	</div><div class="para">
+		Roles are simple, consisting of only a name such as <code class="literal">admin</code>, <code class="literal">user</code>, <code class="literal">customer</code>, etc. Permissions consist of both a name and an action, and are represented within this documentation in the form <code class="literal">name:action</code>, for example <code class="literal">customer:delete</code>, or <code class="literal">customer:insert</code>.
+	</div></div><div class="sect2" title="12.5.2. Securing components"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Authorization-Securing_components" class="title">Securing components</h1></div></div></div><div class="para">
+		Let us start by examining the simplest form of authorization, component security, starting with the <code class="literal">@Restrict</code> annotation.
+	</div><div class="sect3" title="12.5.2.1. The @Restrict annotation"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Securing_components-The_Restrict_annotation" class="title">The @Restrict annotation</h1></div></div></div><div class="para">
+		Seam components may be secured either at the method or the class level, using the <code class="literal">@Restrict</code> annotation. If both a method and it's declaring class are annotated with <code class="literal">@Restrict</code>, the method restriction will take precedence (and the class restriction will not apply). If a method invocation fails a security check, then an exception will be thrown as per the contract for <code class="literal">Identity.checkRestriction()</code> (see Inline Restrictions). A <code class="literal">@Restrict</code> on just the component class itself is equivalent to adding <code class="literal">@Restrict</code> to each of its methods.
+	</div><div class="para">
+		An empty <code class="literal">@Restrict</code> implies a permission check of <code class="literal">componentName:methodName</code>. Take for example the following component method:
+	</div><pre class="programlisting">@Name("account")
+public class AccountAction {
+    @Restrict public void delete() {
+      ...
+    }
+}
+</pre><div class="para">
+		In this example, the implied permission required to call the <code class="literal">delete()</code> method is <code class="literal">account:delete</code>. The equivalent of this would be to write <code class="literal">@Restrict("#{s:hasPermission('account','delete',null)}")</code>. Now let's look at another example:
+	</div><pre class="programlisting">@Restrict @Name("account")
+public class AccountAction {
+    public void insert() {
+      ...
+    }
+    @Restrict("#{s:hasRole('admin')}") 
+    public void delete() {
+      ...
+    }
+}
+</pre><div class="para">
+		This time, the component class itself is annotated with <code class="literal">@Restrict</code>. This means that any methods without an overriding <code class="literal">@Restrict</code> annotation require an implicit permission check. In the case of this example, the <code class="literal">insert()</code> method requires a permission of <code class="literal">account:insert</code>, while the <code class="literal">delete()</code> method requires that the user is a member of the <code class="literal">admin</code> role.
+	</div><div class="para">
+		Before we go any further, let us address the <code class="literal">#{s:hasRole()}</code> expression seen in the above example. Both <code class="literal">s:hasRole</code> and <code class="literal">s:hasPermission</code> are EL functions, which delegate to the correspondingly named methods of the <code class="literal">Identity</code> class. These functions can be used within any EL expression throughout the entirety of the security API.
+	</div><div class="para">
+		Being an EL expression, the value of the <code class="literal">@Restrict</code> annotation may reference any objects that exist within a Seam context. This is extremely useful when performing permission checks for a specific object instance. Look at this example:
+	</div><pre class="programlisting">@Name("account")
+public class AccountAction {
+    @In Account selectedAccount;
+    @Restrict("#{s:hasPermission('account','modify',selectedAccount)}")
+    public void modify() {
+        selectedAccount.modify();
+    }
+}
+</pre><div class="para">
+		The interesting thing to note from this example is the reference to <code class="literal">selectedAccount</code> seen within the <code class="literal">hasPermission()</code> function call. The value of this variable will be looked up from within the Seam context, and passed to the <code class="literal">hasPermission()</code> method in <code class="literal">Identity</code>, which in this case can then determine if the user has the required permission for modifying the specified <code class="literal">Account</code> object.
+	</div></div><div class="sect3" title="12.5.2.2. Inline restrictions"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Securing_components-Inline_restrictions" class="title">Inline restrictions</h1></div></div></div><div class="para">
+		Sometimes it might be desirable to perform a security check in code, without using the <code class="literal">@Restrict</code> annotation. In this situation, simply use <code class="literal">Identity.checkRestriction()</code> to evaluate a security expression, like this:
+	</div><pre class="programlisting">public void deleteCustomer() {
+    Identity.instance().checkRestriction("#{s:hasPermission('customer','delete',
+      selectedCustomer)}");
+}
+</pre><div class="para">
+		If the expression specified doesn't evaluate to <code class="literal">true</code>, either
+	</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+				if the user is not logged in, a <code class="literal">NotLoggedInException</code> exception is thrown or
+			</div></li><li class="listitem"><div class="para">
+				if the user is logged in, an <code class="literal">AuthorizationException</code> exception is thrown.
+			</div></li></ul></div><div class="para">
+		It is also possible to call the <code class="literal">hasRole()</code> and <code class="literal">hasPermission()</code> methods directly from Java code:
+	</div><pre class="programlisting">if (!Identity.instance().hasRole("admin"))
+     throw new AuthorizationException("Must be admin to perform this action");
+
+if (!Identity.instance().hasPermission("customer", "create", null))
+     throw new AuthorizationException("You may not create new customers");
+</pre></div></div><div class="sect2" title="12.5.3. Security in the user interface"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Authorization-Security_in_the_user_interface" class="title">Security in the user interface</h1></div></div></div><div class="para">
+		One indication of a well designed user interface is that the user is not presented with options for which they do not have the necessary privileges to use. Seam Security allows conditional rendering of either 1) sections of a page or 2) individual controls, based upon the privileges of the user, using the very same EL expressions that are used for component security.
+	</div><div class="para">
+		Let us take a look at some examples of interface security. First of all, let us pretend that we have a login form that should only be rendered if the user is not already logged in. Using the <code class="literal">identity.isLoggedIn()</code> property, we can write this:
+	</div><pre class="programlisting">&lt;h:form class="loginForm" rendered="#{not identity.loggedIn}"&gt;
+</pre><div class="para">
+		If the user is not logged in, then the login form will be rendered - very straight forward so far. Now let us pretend there is a menu on the page that contains some actions which should only be accessible to users in the <code class="literal">manager</code> role. Here is one way that these could be written:
+	</div><pre class="programlisting">&lt;h:outputLink action="#{reports.listManagerReports}" rendered="#{s:hasRole('manager')}"&gt;
+    Manager Reports
+&lt;/h:outputLink&gt;
+</pre><div class="para">
+		This is also quite straight forward. If the user is not a member of the <code class="literal">manager</code> role, then the outputLink will not be rendered. The <code class="literal">rendered</code> attribute can generally be used on the control itself, or on a surrounding <code class="literal">&lt;s:div&gt;</code> or <code class="literal">&lt;s:span&gt;</code> control.
+	</div><div class="para">
+		Now for something more complex. Let us say you have a <code class="literal">h:dataTable</code> control on a page listing records for which you may or may not wish to render action links depending on the user's privileges. The <code class="literal">s:hasPermission</code> EL function allows us to pass in an object parameter which can be used to determine whether the user has the requested permission for that object or not. Here is how a dataTable with secured links might look:
+	</div><pre class="programlisting">&lt;h:dataTable value="#{clients}" var="cl"&gt;
+    &lt;h:column&gt;
+        &lt;f:facet name="header"&gt;Name&lt;/f:facet&gt;
+        #{cl.name}
+    &lt;/h:column&gt;
+    &lt;h:column&gt;
+        &lt;f:facet name="header"&gt;City&lt;/f:facet&gt;
+        #{cl.city}
+    &lt;/h:column&gt;   
+    &lt;h:column&gt;
+        &lt;f:facet name="header"&gt;Action&lt;/f:facet&gt;
+        &lt;s:link value="Modify Client" action="#{clientAction.modify}"
+                rendered="#{s:hasPermission('client','modify',cl)"/&gt;
+        &lt;s:link value="Delete Client" action="#{clientAction.delete}"
+                rendered="#{s:hasPermission('client','delete',cl)"/&gt;
+    &lt;/h:column&gt;
+&lt;/h:dataTable&gt;
+</pre></div><div class="sect2" title="12.5.4. Securing pages"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Authorization-Securing_pages" class="title">Securing pages</h1></div></div></div><div class="para">
+		Page security requires that the application is using a <code class="literal">pages.xml</code> file, however is extremely simple to configure. Simply include a <code class="literal">&lt;restrict/&gt;</code> element within the <code class="literal">page</code> elements that you wish to secure. By default, if a value is not provided for the <code class="literal">restrict</code> element, an implied permission of <code class="literal">{viewId}:render</code> will be checked for whenever accessing that page. Otherwise the value will be evaluated as a standard security expression. Here is a couple of examples:
+	</div><pre class="programlisting">&lt;page view-id="/settings.xhtml"&gt;
+    &lt;restrict/&gt;
+&lt;/page&gt;
+        
+&lt;page view-id="/reports.xhtml"&gt;    
+    &lt;restrict&gt;#{s:hasRole('admin')}&lt;/restrict&gt;
+&lt;/page&gt;
+</pre><div class="para">
+		In the above example, the first page has an implied permission restriction of <code class="literal">/settings.xhtml:render</code>, while the second one checks that the user is a member of the <code class="literal">admin</code> role.
+	</div></div><div class="sect2" title="12.5.5. Securing Entities"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Authorization-Securing_Entities" class="title">Securing Entities</h1></div></div></div><div class="para">
+		Seam security also makes it possible to apply security restrictions to read, insert, update and delete actions for entities.
+	</div><div class="para">
+		To secure all actions for an entity class, add a <code class="literal">@Restrict</code> annotation on the class itself:
+	</div><pre class="programlisting">@Entity
+ at Name("customer")
+ at Restrict
+public class Customer {
+  ...
+}
+</pre><div class="para">
+		If no expression is specified in the <code class="literal">@Restrict</code> annotation, the default security check that is performed is a permission check of <code class="literal">entityName:action</code>, where <code class="literal">entityName</code> is the Seam component name of the entity (or the fully-qualified class name if no @Name is specified), and the <code class="literal">action</code> is either <code class="literal">read</code>, <code class="literal">insert</code>, <code class="literal">update</code> or <code class="literal">delete</code>.
+	</div><div class="para">
+		It is also possible to only restrict certain actions, by placing a <code class="literal">@Restrict</code> annotation on the relevent entity lifecycle method (annotated as follows):
+	</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+				<code class="literal">@PostLoad</code> - Called after an entity instance is loaded from the database. Use this method to configure a <code class="literal">read</code> permission.
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">@PrePersist</code> - Called before a new instance of the entity is inserted. Use this method to configure an <code class="literal">insert</code> permission.
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">@PreUpdate</code> - Called before an entity is updated. Use this method to configure an <code class="literal">update</code> permission.
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">@PreRemove</code> - Called before an entity is deleted. Use this method to configure a <code class="literal">delete</code> permission.
+			</div></li></ul></div><div class="para">
+		Here is an example of how an entity would be configured to perform a security check for any <code class="literal">insert</code> operations. Please note that the method is not required to do anything, the only important thing in regard to security is how it is annotated:
+	</div><pre class="programlisting">
+  @PrePersist @Restrict
+  public void prePersist() {}
+</pre><div class="para">
+		And here is an example of an entity permission rule that checks if the authenticated user is allowed to insert a new <code class="literal">MemberBlog</code> record (from the seamspace example). The entity for which the security check is being made is automatically asserted into the working memory (in this case <code class="literal">MemberBlog</code>):
+	</div><pre class="programlisting">rule InsertMemberBlog
+  no-loop
+  activation-group "permissions"  
+when
+  check: PermissionCheck(name == "memberBlog", action == "insert", granted == false)
+  Principal(principalName : name)
+  MemberBlog(member : member -&gt; (member.getUsername().equals(principalName)))
+then
+  check.grant();
+end;
+</pre><div class="para">
+		This rule will grant the permission <code class="literal">memberBlog:insert</code> if the currently authenticated user (indicated by the <code class="literal">Principal</code> fact) has the same name as the member for which the blog entry is being created. The "<code class="literal">name : name</code>" structure that can be seen in the <code class="literal">Principal</code> fact (and other places) is a variable binding - it binds the <code class="literal">name</code> property of the <code class="literal">Principal</code> to a variable called <code class="literal">name</code>. Variable bindings allow the value to be referred to in other places, such as the following line which compares the member's username to the <code class="literal">Principal</code> name. For more details, please refer to the JBoss Rules documentation.
+	</div><div class="para">
+		Finally, we need to install a listener class that integrates Seam security with your JPA provider.
+	</div><div class="sect3" title="12.5.5.1. Entity security with JPA"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Securing_Entities-Entity_security_with_JPA" class="title">Entity security with JPA</h1></div></div></div><div class="para">
+		Security checks for EJB3 entity beans are performed with an <code class="literal">EntityListener</code>. You can install this listener by using the following <code class="literal">META-INF/orm.xml</code> file:
+	</div><pre class="programlisting">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
+                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+                 xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm 
+                                            http://java.sun.com/xml/ns/persistence/orm_1_0.xsd"
+                 version="1.0"&gt;
+                 
+    &lt;persistence-unit-metadata&gt;
+        &lt;persistence-unit-defaults&gt;
+            &lt;entity-listeners&gt;
+                &lt;entity-listener class="org.jboss.seam.security.EntitySecurityListener"/&gt;
+            &lt;/entity-listeners&gt;
+        &lt;/persistence-unit-defaults&gt;
+    &lt;/persistence-unit-metadata&gt;
+    
+&lt;/entity-mappings&gt;
+</pre></div><div class="sect3" title="12.5.5.2. Entity security with Hibernate"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Securing_Entities-Entity_security_with_Hibernate" class="title">Entity security with Hibernate</h1></div></div></div><div class="para">
+		If you are using a Hibernate <code class="literal">SessionFactory</code> configured via Seam, you do not need to do anything special to use entity security.
+	</div></div></div></div><div class="sect1" title="12.6. Writing Security Rules"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Security-Writing_Security_Rules" class="title">Writing Security Rules</h1></div></div></div><div class="para">
+		Up to this point there has been a lot of mention of permissions, but no information about how permissions are actually defined or granted. This section completes the picture, by explaining how permission checks are processed, and how to implement permission checks for a Seam application.
+	</div><div class="sect2" title="12.6.1. Permissions Overview"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Writing_Security_Rules-Permissions_Overview" class="title">Permissions Overview</h1></div></div></div><div class="para">
+		So how does the security API know whether a user has the <code class="literal">customer:modify</code> permission for a specific customer? Seam Security provides quite a novel method for determining user permissions, based on JBoss Rules. A couple of the advantages of using a rule engine are 1) a centralized location for the business logic that is behind each user permission, and 2) speed - JBoss Rules uses very efficient algorithms for evaluating large numbers of complex rules involving multiple conditions.
+	</div></div><div class="sect2" title="12.6.2. Configuring a rules file"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Writing_Security_Rules-Configuring_a_rules_file" class="title">Configuring a rules file</h1></div></div></div><div class="para">
+		Seam Security expects to find a <code class="literal">RuleBase</code> component called <code class="literal">securityRules</code> which it uses to evaluate permission checks. This is configured in <code class="literal">components.xml</code> as follows:
+	</div><pre class="programlisting">&lt;components xmlns="http://jboss.com/products/seam/components"
+            xmlns:core="http://jboss.com/products/seam/core"
+            xmlns:security="http://jboss.com/products/seam/security"
+            xmlns:drools="http://jboss.com/products/seam/drools"
+            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+            xsi:schemaLocation=
+                "http://jboss.com/products/seam/core 
+                                              http://jboss.com/products/seam/core-1.2.xsd 
+                 http://jboss.com/products/seam/components 
+                                              http://jboss.com/products/seam/components-1.2.xsd
+                 http://jboss.com/products/seam/drools 
+                                              http://jboss.com/products/seam/drools-1.2.xsd"
+                 http://jboss.com/products/seam/security 
+                                              http://jboss.com/products/seam/security-1.2.xsd"&gt;                 
+        
+   &lt;drools:rule-base name="securityRules"&gt;
+       &lt;drools:rule-files&gt;
+           &lt;value&gt;/META-INF/security.drl&lt;/value&gt;
+       &lt;/drools:rule-files&gt;
+   &lt;/drools:rule-base&gt;    
+   
+&lt;/components&gt;
+</pre><div class="para">
+		Once the <code class="literal">RuleBase</code> component is configured, it is time to write the security rules.
+	</div></div><div class="sect2" title="12.6.3. Creating a security rules file"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Writing_Security_Rules-Creating_a_security_rules_file" class="title">Creating a security rules file</h1></div></div></div><div class="para">
+		For this step you need to create a file called <code class="literal">security.drl</code> in the <code class="literal">/META-INF</code> directory of your application's jar file. In actual fact this file can be called anything you want, and exist in any location as long as it is configured appropriately in <code class="literal">components.xml</code>.
+	</div><div class="para">
+		So what should the security rules file contain? At this stage it might be a good idea to at least skim through the JBoss Rules documentation, however to get started here is an extremely simple example:
+	</div><pre class="programlisting">package MyApplicationPermissions;
+
+import org.jboss.seam.security.PermissionCheck;
+import org.jboss.seam.security.Role;
+
+rule CanUserDeleteCustomers
+when
+  c: PermissionCheck(name == "customer", action == "delete")
+  Role(name == "admin")
+then
+  c.grant();
+end;
+</pre><div class="para">
+		Let us break this down. The first thing we see is the package declaration. A package in JBoss Rules is essentially a collection of rules. The package name can be anything you want - it does not relate to anything else outside the scope of the rule base.
+	</div><div class="para">
+		The next thing we can notice is a couple of import statements for the <code class="literal">PermissionCheck</code> and <code class="literal">Role</code> classes. These imports inform the rules engine that we will be referencing these classes within our rules.
+	</div><div class="para">
+		Finally we have the code for the rule. Each rule within a package should be given a unique name (usually describing the purpose of the rule). In this case our rule is called <code class="literal">CanUserDeleteCustomers</code> and will be used to check whether a user is allowed to delete a customer record.
+	</div><div class="para">
+		Looking at the body of the rule definition we can notice two distinct sections. Rules have what is known as a left hand side (LHS) and a right hand side (RHS). The LHS consists of the conditional part of the rule, i.e. a list of conditions which must be satisfied for the rule to fire. The LHS is represented by the <code class="literal">when</code> section. The RHS is the consequence, or action section of the rule that will only be fired if all of the conditions in the LHS are met. The RHS is represented by the <code class="literal">then</code> section. The end of the rule is denoted by the <code class="literal">end;</code> line.
+	</div><div class="para">
+		If we look at the LHS of the rule, we see two conditions listed there. Let us examine the first condition:
+	</div><pre class="programlisting">c: PermissionCheck(name == "customer", action == "delete")
+</pre><div class="para">
+		In plain english, this condition is stating that there must exist a <code class="literal">PermissionCheck</code> object with a <code class="literal">name</code> property equal to "customer", and an <code class="literal">action</code> property equal to "delete" within the working memory. What is the working memory? It is a session-scoped object that contains the contextual information that is required by the rules engine to make a decision about a permission check. Each time the <code class="literal">hasPermission()</code> method is called, a temporary <code class="literal">PermissionCheck</code> object, or <span class="emphasis"><em>Fact</em></span>, is asserted into the working memory. This <code class="literal">PermissionCheck</code> corresponds exactly to the permission that is being checked, so for example if you call <code class="literal">hasPermission("account", "create", null)</code> then a <code class="literal">PermissionCheck</code> object with a <code class="lit!
 eral">name</code> equal to "account" and <code class="literal">action</code> equal to "create" will be asserted into the working memory for the duration of the permission check.
+	</div><div class="para">
+		So what else is in the working memory? Besides the short-lived temporary facts asserted during a permission check, there are some longer-lived objects in the working memory that stay there for the entire duration of a user being authenticated. These include any <code class="literal">java.security.Principal</code> objects that are created as part of the authentication process, plus a <code class="literal">org.jboss.seam.security.Role</code> object for each of the roles that the user is a member of. It is also possible to assert additional long-lived facts into the working memory by calling <code class="literal">RuleBasedIdentity.instance().getSecurityContext().assertObject()</code>, passing the object as a parameter.
+	</div><div class="para">
+		Getting back to our simple example, we can also notice that the first line of our LHS is prefixed with <code class="literal">c:</code>. This is a variable binding, and is used to refer back to the object that is matched by the condition. Moving onto the second line of our LHS, we see this:
+	</div><pre class="programlisting">Role(name == "admin")
+</pre><div class="para">
+		This condition simply states that there must be a <code class="literal">Role</code> object with a <code class="literal">name</code> of "admin" within the working memory. As mentioned, user roles are asserted into the working memory as long-lived facts. So, putting both conditions together, this rule is essentially saying "I will fire if you are checking for the <code class="literal">customer:delete</code> permission and the user is a member of the <code class="literal">admin</code> role".
+	</div><div class="para">
+		So what is the consequence of the rule firing? Let us take a look at the RHS of the rule:
+	</div><pre class="programlisting">c.grant()
+</pre><div class="para">
+		The RHS consists of Java code, and in this case is invoking the <code class="literal">grant()</code> method of the <code class="literal">c</code> object, which as already mentioned is a variable binding for the <code class="literal">PermissionCheck</code> object. Besides the <code class="literal">name</code> and <code class="literal">action</code> properties of the <code class="literal">PermissionCheck</code> object, there is also a <code class="literal">granted</code> property which is initially set to <code class="literal">false</code>. Calling <code class="literal">grant()</code> on a <code class="literal">PermissionCheck</code> sets the <code class="literal">granted</code> property to <code class="literal">true</code>, which means that the permission check was successful, allowing the user to carry out whatever action the permission check was intended for.
+	</div><div class="sect3" title="12.6.3.1. Wildcard permission checks"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Creating_a_security_rules_file-Wildcard_permission_checks" class="title">Wildcard permission checks</h1></div></div></div><div class="para">
+		It is possible to implement a wildcard permission check (which allows all actions for a given permission name), by omitting the <code class="literal">action</code> constraint for the <code class="literal">PermissionCheck</code> in your rule, like this:
+	</div><pre class="programlisting">rule CanDoAnythingToCustomersIfYouAreAnAdmin
+when
+  c: PermissionCheck(name == "customer")
+  Role(name == "admin")
+then
+  c.grant();
+end;
+</pre><div class="para">
+		This rule allows users with the <code class="literal">admin</code> role to perform <span class="emphasis"><em>any</em></span> action for any <code class="literal">customer</code> permission check.
+	</div></div></div></div><div class="sect1" title="12.7. SSL Security"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Security-SSL_Security" class="title">SSL Security</h1></div></div></div><div class="para">
+		Seam includes basic support for serving sensitive pages via the HTTPS protocol. This is easily configured by specifying a <code class="literal">scheme</code> for the page in <code class="literal">pages.xml</code>. The following example shows how the view <code class="literal">/login.xhtml</code> is configured to use HTTPS:
+	</div><pre class="programlisting">  &lt;page view-id="/login.xhtml" scheme="https"&gt;
+</pre><div class="para">
+		This configuration is automatically extended to both <code class="literal">s:link</code> and <code class="literal">s:button</code> JSF controls, which (when specifying the <code class="literal">view</code>) will also render the link using the correct protocol. Based on the previous example, the following link will use the HTTPS protocol because <code class="literal">/login.xhtml</code> is configured to use it:
+	</div><pre class="programlisting">  &lt;s:link view="/login.xhtml" value="Login"/&gt;
+</pre><div class="para">
+		Browsing directly to a view when using the <span class="emphasis"><em>incorrect</em></span> protocol will cause a redirect to the same view using the <span class="emphasis"><em>correct</em></span> protocol. For example, browsing to a page that has <code class="literal">scheme="https"</code> using HTTP will cause a redirect to the same page using HTTPS.
+	</div><div class="para">
+		It is also possible to configure a default <code class="literal">scheme</code> for all pages. This is actually quite important, as you might only wish to use HTTPS for a few pages, and if no default scheme is specified then the default behavior is to continue using the current scheme. What this means is that once you enter a page with HTTPS, then HTTPS will continue to be used even if you navigate away to other non-HTTPS pages (a bad thing!). So it is strongly recommended to include a default <code class="literal">scheme</code>, by configuring it on the default (<code class="literal">"*"</code>) view:
+	</div><pre class="programlisting">  &lt;page view-id="*" scheme="http"&gt;
+</pre><div class="para">
+		Of course, if <span class="emphasis"><em>none</em></span> of the pages in your application use HTTPS then it is not required to specify a default scheme.
+	</div></div><div class="sect1" title="12.8. Implementing a Captcha Test"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Security-Implementing_a_Captcha_Test" class="title">Implementing a Captcha Test</h1></div></div></div><div class="para">
+		Though strictly not part of the security API, it might be useful in certain circumstances (such as new user registrations, posting to a public blog or forum) to implement a Captcha (<span class="emphasis"><em>C</em></span>ompletely <span class="emphasis"><em>A</em></span>utomated <span class="emphasis"><em>P</em></span>ublic <span class="emphasis"><em>T</em></span>uring test to tell <span class="emphasis"><em>C</em></span>omputers and <span class="emphasis"><em>H</em></span>umans <span class="emphasis"><em>A</em></span>part) to prevent automated bots from interacting with your application. Seam provides seamless integration with JCaptcha, an excellent library for generating Captcha challenges. If you wish to use the captcha feature in your application you need to include the jcaptcha-* jar file from the Seam lib directory in your project, and register it in <code class="literal">application.xml</code> as a java module.
+	</div><div class="sect2" title="12.8.1. Configuring the Captcha Servlet"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Implementing_a_Captcha_Test-Configuring_the_Captcha_Servlet" class="title">Configuring the Captcha Servlet</h1></div></div></div><div class="para">
+		To get up and running, it is necessary to configure the Seam Resource Servlet, which will provide the Captcha challenge images to your pages. This requires the following entry in <code class="literal">web.xml</code>:
+	</div><pre class="programlisting">&lt;servlet&gt;
+    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;
+    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-class&gt;
+&lt;/servlet&gt;
+    
+&lt;servlet-mapping&gt;
+    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;
+    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;
+&lt;/servlet-mapping&gt;
+</pre></div><div class="sect2" title="12.8.2. Adding a Captcha to a page"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Implementing_a_Captcha_Test-Adding_a_Captcha_to_a_page" class="title">Adding a Captcha to a page</h1></div></div></div><div class="para">
+		Adding a captcha challenge to a page is extremely easy. Seam provides a page-scoped component, <code class="literal">captcha</code>, which provides everything that is required, including built-in captcha validation. Here is an example:
+	</div><pre class="programlisting">&lt;div&gt;
+    &lt;h:graphicImage value="/seam/resource/captcha?#{captcha.id}"/&gt;
+&lt;/div&gt;
+  
+&lt;div&gt;
+    &lt;h:outputLabel for="verifyCaptcha"&gt;Enter the above letters&lt;/h:outputLabel&gt;
+    &lt;h:inputText id="verifyCaptcha" value="#{captcha.response}" required="true"/&gt;
+    &lt;div class="validationError"&gt;&lt;h:message for="verifyCaptcha"/&gt;&lt;/div&gt;
+&lt;/div&gt;
+</pre><div class="para">
+		That is all there is to it. The <code class="literal">graphicImage</code> control displays the Captcha challenge, and the <code class="literal">inputText</code> receives the user's response. The response is automatically validated against the Captcha when the form is submitted.
+	</div></div></div></div><div xml:lang="en-US" class="chapter" title="Chapter 13. Internationalization and themes" lang="en-US"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Internationalization_and_themes">Chapter 13. Internationalization and themes</h2></div></div></div><div class="toc"><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Internationalization_and_themes-Locales">13.1. Locales</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Internationalization_and_themes-Labels">13.2. Labels</a></span></dt><dd><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Labels-Defining_labels">13.2.1. Defining labels</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Labels-Displaying_labels">13.2.2. Displaying labels</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Labels-Faces_messages">13.2.3. Faces messages</a></span></dt></dl></dd><dt><span class="section"><a!
  href="#Seam_Reference_Guide-Internationalization_and_themes-Timezones">13.3. Timezones</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Internationalization_and_themes-Themes">13.4. Themes</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Internationalization_and_themes-Persisting_locale_and_theme_preferences_via_cookies">13.5. Persisting locale and theme preferences via cookies</a></span></dt></dl></div><div class="para">
+		Seam makes it easy to build internationalized applications by providing several built-in components for handling multi-language UI messages.
+	</div><div class="section" title="13.1. Locales"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Internationalization_and_themes-Locales">13.1. Locales</h2></div></div></div><div class="para">
+			Each user login session has an associated instance of <code class="literal">java.util.Locale</code> (available to the application as a session-scoped component named <code class="literal">locale</code>). Under normal circumstances, you will not need to do any special configuration to set the locale. Seam just delegates to JSF to determine the active locale:
+		</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+					If there is a locale associated with the HTTP request (the browser locale), and that locale is in the list of supported locales from <code class="literal">faces-config.xml</code>, use that locale for the rest of the session.
+				</div></li><li class="listitem"><div class="para">
+					Otherwise, if a default locale was specified in the <code class="literal">faces-config.xml</code>, use that locale for the rest of the session.
+				</div></li><li class="listitem"><div class="para">
+					Otherwise, use the default locale of the server.
+				</div></li></ul></div><div class="para">
+			It is <span class="emphasis"><em>possible</em></span> to set the locale manually via the Seam configuration properties <code class="literal">org.jboss.seam.core.localeSelector.language</code>, <code class="literal">org.jboss.seam.core.localeSelector.country</code> and <code class="literal">org.jboss.seam.core.localeSelector.variant</code>, but we cannot think of any good reason to ever do this.
+		</div><div class="para">
+			It is, however, useful to allow the user to set the locale manually via the application user interface. Seam provides built-in functionality for overriding the locale determined by the algorithm above. All you have to do is add the following fragment to a form in your JSP or Facelets page:
+		</div><pre class="programlisting">&lt;h:selectOneMenu value="#{localeSelector.language}"&gt;
+    &lt;f:selectItem itemLabel="English" itemValue="en"/&gt;
+    &lt;f:selectItem itemLabel="Deutsch" itemValue="de"/&gt;
+    &lt;f:selectItem itemLabel="Francais" itemValue="fr"/&gt;
+&lt;/h:selectOneMenu&gt;
+&lt;h:commandButton action="#{localeSelector.select}" value="#{messages['ChangeLanguage']}"/&gt;
+</pre><div class="para">
+			Or, if you want a list of all supported locales from <code class="literal">faces-config.xml</code>, just use:
+		</div><pre class="programlisting">&lt;h:selectOneMenu value="#{localeSelector.localeString}"&gt;
+    &lt;f:selectItems value="#{localeSelector.supportedLocales}"/&gt;
+&lt;/h:selectOneMenu&gt;
+&lt;h:commandButton action="#{localeSelector.select}" value="#{messages['ChangeLanguage']}"/&gt;
+</pre><div class="para">
+			When this use selects an item from the drop-down, and clicks the button, the Seam and JSF locales will be overridden for the rest of the session.
+		</div></div><div class="section" title="13.2. Labels"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Internationalization_and_themes-Labels">13.2. Labels</h2></div></div></div><div class="para">
+			JSF supports internationalization of user interface labels and descriptive text via the use of <code class="literal">&lt;f:loadBundle /&gt;</code>. You can use this approach in Seam applications. Alternatively, you can take advantage of the Seam <code class="literal">messages</code> component to display templated labels with embedded EL expressions.
+		</div><div class="section" title="13.2.1. Defining labels"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Labels-Defining_labels">13.2.1. Defining labels</h3></div></div></div><div class="para">
+				Each login session has an associated instance of <code class="literal">java.util.ResourceBundle</code> (available to the application as a session-scoped component named <code class="literal">org.jboss.seam.core.resourceBundle</code>). You'll need to make your internationalized labels available via this special resource bundle. By default, the resource bundle used by Seam is named <code class="literal">messages</code> and so you'll need to define your labels in files named <code class="literal">messages.properties</code>, <code class="literal">messages_en.properties</code>, <code class="literal">messages_en_AU.properties</code>, etc. These files usually belong in the <code class="literal">WEB-INF/classes</code> directory.
+			</div><div class="para">
+				So, in <code class="literal">messages_en.properties</code>:
+			</div><pre class="programlisting">Hello=Hello
+</pre><div class="para">
+				And in <code class="literal">messages_en_AU.properties</code>:
+			</div><pre class="programlisting">Hello=G'day
+</pre><div class="para">
+				You can select a different name for the resource bundle by setting the Seam configuration property named <code class="literal">org.jboss.seam.core.resourceBundle.bundleNames</code>. You can even specify a list of resource bundle names to be searched (depth first) for messages.
+			</div><pre class="programlisting">&lt;core:resource-bundle&gt;
+    &lt;core:bundle-names&gt;
+        &lt;value&gt;mycompany_messages&lt;/value&gt;
+        &lt;value&gt;standard_messages&lt;/value&gt;       
+    &lt;/core:bundle-names&gt;
+&lt;/core:resource-bundle&gt;
+</pre><div class="para">
+				If you want to define a message just for a particular page, you can specify it in a resource bundle with the same name as the JSF view id, with the leading <code class="literal">/</code> and trailing file extension removed. So we could put our message in <code class="literal">welcome/hello_en.properties</code> if we only needed to display the message on <code class="literal">/welcome/hello.jsp</code>.
+			</div><div class="para">
+				You can even specify an explicit bundle name in <code class="literal">pages.xml</code>:
+			</div><pre class="programlisting">&lt;page view-id="/welcome/hello.jsp" bundle="HelloMessages"/&gt;
+</pre><div class="para">
+				Then we could use messages defined in <code class="literal">HelloMessages.properties</code> on <code class="literal">/welcome/hello.jsp</code>.
+			</div></div><div class="section" title="13.2.2. Displaying labels"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Labels-Displaying_labels">13.2.2. Displaying labels</h3></div></div></div><div class="para">
+				If you define your labels using the Seam resource bundle, you will be able to use them without having to type <code class="literal">&lt;f:loadBundle ... /&gt;</code> on every page. Instead, you can simply type:
+			</div><pre class="programlisting">&lt;h:outputText value="#{messages['Hello']}"/&gt;
+</pre><div class="para">
+				or:
+			</div><pre class="programlisting">&lt;h:outputText value="#{messages.Hello}"/&gt;
+</pre><div class="para">
+				Even better, the messages themselves may contain EL expressions:
+			</div><pre class="programlisting">Hello=Hello, #{user.firstName} #{user.lastName}
+</pre><pre class="programlisting">Hello=G'day, #{user.firstName}
+</pre><div class="para">
+				You can even use the messages in your code:
+			</div><pre class="programlisting">@In private Map&lt;String, String&gt; messages;
+</pre><pre class="programlisting">@In("#{messages['Hello']}") private String helloMessage;
+</pre></div><div class="section" title="13.2.3. Faces messages"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Labels-Faces_messages">13.2.3. Faces messages</h3></div></div></div><div class="para">
+				The <code class="literal">facesMessages</code> component is a super-convenient way to display success or failure messages to the user. The functionality we just described also works for faces messages:
+			</div><pre class="programlisting">@Name("hello")
+ at Stateless
+public class HelloBean implements Hello {
+    @In FacesMessages facesMessages;
+    
+    public String sayIt() {
+        facesMessages.addFromResourceBundle("Hello");
+    }
+}
+</pre><div class="para">
+				This will display <code class="literal">Hello, Gavin King</code> or <code class="literal">G'day, Gavin</code>, depending upon the user's locale.
+			</div></div></div><div class="section" title="13.3. Timezones"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Internationalization_and_themes-Timezones">13.3. Timezones</h2></div></div></div><div class="para">
+			There is also a session-scoped instance of <code class="literal">java.util.Timezone</code>, named <code class="literal">org.jboss.seam.core.timezone</code>, and a Seam component for changing the timezone named <code class="literal">org.jboss.seam.core.timezoneSelector</code>. By default, the timezone is the default timezone of the server. Unfortunately, the JSF specification says that all dates and times should be assumed to be UTC, and displayed as UTC, unless a timezone is explicitly specified using <code class="literal">&lt;f:convertDateTime&gt;</code>. This is an extremely inconvenient default behavior.
+		</div><div class="para">
+			Seam overrides this behavior, and defaults all dates and times to the Seam timezone. In addition, Seam provides the <code class="literal">&lt;s:convertDateTime&gt;</code> tag which always performs conversions in the Seam timezone.
+		</div></div><div class="section" title="13.4. Themes"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Internationalization_and_themes-Themes">13.4. Themes</h2></div></div></div><div class="para">
+			Seam applications are also very easily skinnable. The theme API is very similar to the localization API, but of course these two concerns are orthogonal, and some applications support both localization and themes.
+		</div><div class="para">
+			First, configure the set of supported themes:
+		</div><pre class="programlisting">&lt;theme:theme-selector cookie-enabled="true"&gt;
+    &lt;theme:available-themes&gt;
+        &lt;value&gt;default&lt;/value&gt;
+        &lt;value&gt;accessible&lt;/value&gt;
+        &lt;value&gt;printable&lt;/value&gt;
+    &lt;/theme:available-themes&gt;
+&lt;/theme:theme-selector&gt;
+</pre><div class="note"><h2>Note</h2><div class="para">
+				The first theme listed is the default theme.
+			</div></div><div class="para">
+			Themes are defined in a properties file with the same name as the theme. For example, the <code class="literal">default</code> theme is defined as a set of entries in <code class="literal">default.properties</code>. For example, <code class="literal">default.properties</code> might define:
+		</div><pre class="programlisting">css ../screen.css
+template template.xhtml
+</pre><div class="para">
+			Usually the entries in a theme resource bundle will be paths to CSS styles or images and names of facelets templates (unlike localization resource bundles which are usually text).
+		</div><div class="para">
+			Now we can use these entries in our JSP or facelets pages. For example, to theme the stylesheet in a facelets page:
+		</div><pre class="programlisting">&lt;link href="#{theme.css}" rel="stylesheet" type="text/css" /&gt;
+</pre><div class="para">
+			Most powerfully, facelets lets us theme the template used by a <code class="literal">&lt;ui:composition&gt;</code>:
+		</div><pre class="programlisting">&lt;ui:composition xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:ui="http://java.sun.com/jsf/facelets"
+    xmlns:h="http://java.sun.com/jsf/html"
+    xmlns:f="http://java.sun.com/jsf/core"
+    template="#{theme.template}"&gt;
+</pre><div class="para">
+			Just like the locale selector, there is a built-in theme selector to allow the user to freely switch themes:
+		</div><pre class="programlisting">&lt;h:selectOneMenu value="#{themeSelector.theme}"&gt;
+    &lt;f:selectItems value="#{themeSelector.themes}"/&gt;
+&lt;/h:selectOneMenu&gt;
+&lt;h:commandButton action="#{themeSelector.select}" value="Select Theme"/&gt;
+</pre></div><div class="section" title="13.5. Persisting locale and theme preferences via cookies"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Internationalization_and_themes-Persisting_locale_and_theme_preferences_via_cookies">13.5. Persisting locale and theme preferences via cookies</h2></div></div></div><div class="para">
+			The locale selector, theme selector and timezone selector all support persistence of locale and theme preference to a cookie. Simply set the <code class="literal">cookie-enabled</code> configuration property:
+		</div><pre class="programlisting">&lt;theme:theme-selector cookie-enabled="true"&gt;
+    &lt;theme:available-themes&gt;
+        &lt;value&gt;default&lt;/value&gt;
+        &lt;value&gt;accessible&lt;/value&gt;
+        &lt;value&gt;printable&lt;/value&gt;
+    &lt;/theme:available-themes&gt;
+&lt;/theme:theme-selector&gt;
+
+&lt;core:locale-selector cookie-enabled="true"/&gt;
+</pre></div></div><div xml:lang="en-US" class="chapter" title="Chapter 14. Seam Text" lang="en-US"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_Text">Chapter 14. Seam Text</h2></div></div></div><div class="toc"><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_Text-Basic_fomatting">14.1. Basic fomatting</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_Text-Entering_code_and_text_with_special_characters">14.2. Entering code and text with special characters</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_Text-Links">14.3. Links</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_Text-Entering_HTML">14.4. Entering HTML</a></span></dt></dl></div><div class="para">
+		Collaboration-oriented websites require a human-friendly markup language for easy entry of formatted text in forum posts, wiki pages, blogs, comments, etc. Seam provides the <code class="literal">&lt;s:formattedText/&gt;</code> control for display of formatted text that conforms to the <span class="emphasis"><em>Seam Text</em></span> language. Seam Text is implemented using an ANTLR-based parser. You do not need to know anything about ANTLR to use it, however.
+	</div><div class="section" title="14.1. Basic fomatting"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_Text-Basic_fomatting">14.1. Basic fomatting</h2></div></div></div><div class="para">
+			Here is a simple example:
+		</div><pre class="programlisting">It's easy to make *bold text*, /italic text/, |monospace|, 
+~deleted text~, super^scripts^ or _underlines_.
+</pre><div class="para">
+			If we display this using <code class="literal">&lt;s:formattedText/&gt;</code>, we will get the following HTML produced:
+		</div><pre class="programlisting">&lt;p&gt;
+It's easy to make &lt;b&gt;bold text&lt;/b&gt;, &lt;i&gt;italic text&lt;/i&gt;, &lt;tt&gt;monospace&lt;/tt&gt;
+&lt;del&gt;deleted text&lt;/del&gt;, super&lt;sup&gt;scripts&lt;/sup&gt; or &lt;u&gt;underlines&lt;/u&gt;.
+&lt;/p&gt;
+</pre><div class="para">
+			We can use a blank line to indicate a new paragraph, and <code class="literal">+</code> to indicate a heading:
+		</div><pre class="programlisting">+This is a big heading
+You /must/ have some text following a heading!
+ 
+++This is a smaller heading
+This is the first paragraph. We can split it across multiple 
+lines, but we must end it with a blank line.
+
+This is the second paragraph.
+</pre><div class="para">
+			A simple newline is ignored, you need an additional blank line to wrap text into a new paragraph. This is the HTML that results:
+		</div><pre class="programlisting">&lt;h1&gt;This is a big heading&lt;/h1&gt;
+&lt;p&gt;
+You &lt;i&gt;must&lt;/i&gt; have some text following a heading!
+&lt;/p&gt;
+ 
+&lt;h2&gt;This is a smaller heading&lt;/h2&gt;
+&lt;p&gt;
+This is the first paragraph. We can split it across multiple 
+lines, but we must end it with a blank line.
+&lt;/p&gt;
+
+&lt;p&gt;
+This is the second paragraph.
+&lt;/p&gt;
+</pre><div class="para">
+			Ordered lists are created using the <code class="literal">#</code> character. Unordered lists use the <code class="literal">=</code> character:
+		</div><pre class="programlisting">An ordered list:
+        
+#first item
+#second item
+#and even the /third/ item
+
+An unordered list:
+
+=an item
+=another item
+</pre><pre class="programlisting">&lt;p&gt;
+An ordered list:
+&lt;/p&gt;
+ 
+&lt;ol&gt;       
+&lt;li&gt;first item&lt;/li&gt;
+&lt;li&gt;second item&lt;/li&gt;
+&lt;li&gt;and even the &lt;i&gt;third&lt;/i&gt; item&lt;/li&gt;
+&lt;/ol&gt;
+
+&lt;p&gt;
+An unordered list:
+&lt;/p&gt;
+
+&lt;ul&gt;
+&lt;li&gt;an item&lt;/li&gt;
+&lt;li&gt;another item&lt;/li&gt;
+&lt;/ul&gt;
+</pre><div class="para">
+			Quoted sections should be surrounded in double quotes:
+		</div><pre class="programlisting">The other guy said:
+        
+"Nyeah nyeah-nee 
+/nyeah/ nyeah!"
+
+But what do you think he means by "nyeah-nee"?
+</pre><pre class="programlisting">&lt;p&gt;
+The other guy said:
+&lt;/p&gt;
+        
+&lt;q&gt;Nyeah nyeah-nee
+&lt;i&gt;nyeah&lt;/i&gt; nyeah!&lt;/q&gt;
+
+&lt;p&gt;
+But what do you think he means by &lt;q&gt;nyeah-nee&lt;/q&gt;?
+&lt;/p&gt;
+</pre></div><div class="section" title="14.2. Entering code and text with special characters"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_Text-Entering_code_and_text_with_special_characters">14.2. Entering code and text with special characters</h2></div></div></div><div class="para">
+			Special characters such as <code class="literal">*</code>, <code class="literal">|</code> and <code class="literal">#</code>, along with HTML characters such as <code class="literal">&lt;</code>, <code class="literal">&gt;</code> and <code class="literal">&amp;</code> may be escaped using <code class="literal">\</code>:
+		</div><pre class="programlisting">You can write down equations like 2\*3\=6 and HTML tags
+like \&lt;body\&gt; using the escape character: \\.
+</pre><pre class="programlisting">&lt;p&gt;
+You can write down equations like 2*3=6 and HTML tags
+like &lt;body&gt; using the escape character: \.
+&lt;/p&gt;
+</pre><div class="para">
+			And we can quote code blocks using backticks:
+		</div><pre class="programlisting">My code doesn't work:
+
+`for (int i=0; i&lt;100; i--)
+{
+    doSomething();
+}`
+
+Any ideas?
+</pre><pre class="programlisting">&lt;p&gt;
+My code doesn't work:
+&lt;/p&gt;
+
+&lt;pre&gt;for (int i=0; i&lt;100; i--)
+{
+    doSomething();
+}&lt;/pre&gt;
+
+&lt;p&gt;
+Any ideas?
+&lt;/p&gt;
+</pre></div><div class="section" title="14.3. Links"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_Text-Links">14.3. Links</h2></div></div></div><div class="para">
+			A link may be created using the following syntax:
+		</div><pre class="programlisting">Go to the Seam website at [=&gt;http://jboss.com/products/seam].
+</pre><div class="para">
+			Or, if you want to specify the text of the link:
+		</div><pre class="programlisting">Go to [the Seam website=&gt;http://jboss.com/products/seam].
+</pre><div class="para">
+			For advanced users, it is even possible to customize the Seam Text parser to understand wikiword links written using this syntax.
+		</div></div><div class="section" title="14.4. Entering HTML"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_Text-Entering_HTML">14.4. Entering HTML</h2></div></div></div><div class="para">
+			Text may even include a certain limited subset of HTML (the subset is chosen to be safe from cross-site scripting attacks). This is useful for creating links:
+		</div><pre class="programlisting">You might want to link to &lt;a href="http://jboss.com/products/seam"&gt;something
+cool&lt;/a&gt;, or even include an image: &lt;img src="/logo.jpg"/&gt;
+</pre><div class="para">
+			And for creating tables:
+		</div><pre class="programlisting">&lt;table&gt;
+    &lt;tr&gt;&lt;td&gt;First name:&lt;/td&gt;&lt;td&gt;Gavin&lt;/td&gt;&lt;/tr&gt;
+    &lt;tr&gt;&lt;td&gt;Last name:&lt;/td&gt;&lt;td&gt;King&lt;/td&gt;&lt;/tr&gt;
+&lt;/table&gt;
+</pre><div class="para">
+			There is much more that can be achieved if you wish.
+		</div></div></div><div xml:lang="en-US" class="chapter" title="Chapter 15. iText PDF generation" lang="en-US"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-iText_PDF_generation">Chapter 15. iText PDF generation</h2></div></div></div><div class="toc"><dl><dt><span class="section"><a href="#Seam_Reference_Guide-iText_PDF_generation-Using_PDF_Support">15.1. Using PDF Support</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-iText_PDF_generation-Creating_a_document">15.2. Creating a document</a></span></dt><dd><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Creating_a_document-pdocument">15.2.1. p:document</a></span></dt></dl></dd><dt><span class="section"><a href="#Seam_Reference_Guide-iText_PDF_generation-Basic_Text_Elements">15.3. Basic Text Elements</a></span></dt><dd><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Basic_Text_Elements-pparagraph">15.3.1. p:paragraph</a></span></dt><dt><span !
 class="section"><a href="#Seam_Reference_Guide-Basic_Text_Elements-ptext">15.3.2. p:text</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Basic_Text_Elements-pfont">15.3.3. p:font</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Basic_Text_Elements-pnewPage">15.3.4. p:newPage</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Basic_Text_Elements-pimage">15.3.5. p:image</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Basic_Text_Elements-panchor">15.3.6. p:anchor</a></span></dt></dl></dd><dt><span class="section"><a href="#Seam_Reference_Guide-iText_PDF_generation-Headers_and_Footers">15.4. Headers and Footers</a></span></dt><dd><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Headers_and_Footers-pheader_and_pfooter">15.4.1. p:header and p:footer</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Headers_and_Footers-ppageNumber">15.4.2. p:pageNumber</a><!
 /span></dt></dl></dd><dt><span class="section"><a href="#Seam_!
 Referenc
e_Guide-iText_PDF_generation-Chapters_and_Sections">15.5. Chapters and Sections</a></span></dt><dd><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Chapters_and_Sections-pchapter_and_psection">15.5.1. p:chapter and p:section</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Chapters_and_Sections-ptitle">15.5.2. p:title</a></span></dt></dl></dd><dt><span class="section"><a href="#Seam_Reference_Guide-iText_PDF_generation-Lists">15.6. Lists</a></span></dt><dd><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Lists-plist">15.6.1. p:list</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Lists-plistItem">15.6.2. p:listItem</a></span></dt></dl></dd><dt><span class="section"><a href="#Seam_Reference_Guide-iText_PDF_generation-Tables">15.7. Tables</a></span></dt><dd><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Tables-ptable">15.7.1. p:table</a></span></dt><dt><span class="section"><a href="#Seam_Refer!
 ence_Guide-Tables-pcell">15.7.2. p:cell</a></span></dt></dl></dd><dt><span class="section"><a href="#Seam_Reference_Guide-iText_PDF_generation-Document_Constants">15.8. Document Constants</a></span></dt><dd><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Document_Constants-Color_Values">15.8.1. Color Values</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Document_Constants-Alignment_Values">15.8.2. Alignment Values</a></span></dt></dl></dd><dt><span class="section"><a href="#Seam_Reference_Guide-iText_PDF_generation-Configuring_iText">15.9. Configuring iText</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-iText_PDF_generation-iText_links">15.10. iText links</a></span></dt></dl></div><div class="para">
+		Seam now includes an component set for generating documents using iText. The primary focus of Seam's iText document support is for the generation of PDF doucuments, but Seam also offers basic support for RTF document generation.
+	</div><div class="section" title="15.1. Using PDF Support"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-iText_PDF_generation-Using_PDF_Support">15.1. Using PDF Support</h2></div></div></div><div class="para">
+			iText support is provided by <code class="literal">jboss-seam-pdf.jar</code>. This JAR contains the iText JSF controls, which are used to construct views that can render to PDF, and the DocumentStore component, which serves the rendered documents to the user. To include PDF support in your application, included <code class="literal">jboss-seam-pdf.jar</code> in your <code class="literal">WEB-INF/lib</code> directory along with the iText JAR file. There is no further configuration needed to use Seam's iText support.
+		</div><div class="para">
+			The Seam iText module requires the use of Facelets as the view technology. Future versions of the library may also support the use of JSP. Additionally, it requires the use of the seam-ui package.
+		</div><div class="para">
+			The <code class="literal">examples/itext</code> project contains an example of the PDF support in action. It demonstrates proper deployment packaging, and it contains a number examples that demonstrate the key PDF generation features current supported.
+		</div></div><div class="section" title="15.2. Creating a document"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-iText_PDF_generation-Creating_a_document">15.2. Creating a document</h2></div></div></div><div class="para">
+			Documents are generated by facelets documents using tags in the <code class="literal">http://jboss.com/products/seam/pdf</code> namespace. Documents should always have the <code class="literal">document</code> tag at the root of the document. The <code class="literal">document</code> tag prepares Seam to generate a document into the DocumentStore and renders an HTML redirect to that stored content. The following is a a small PDF document consisting only a single line of text:
+		</div><pre class="programlisting">
+&lt;p:document xmlns:p="http://jboss.com/products/seam/pdf"&gt;                                                      
+   The document goes here.                                                                                             
+&lt;/p:document&gt;
+</pre><div class="section" title="15.2.1. p:document"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Creating_a_document-pdocument">15.2.1. p:document</h3></div></div></div><div class="para">
+				The <code class="literal">p:document</code> tag supports the following attributes:
+			</div><div class="variablelist"><dl><dt><span class="term"><code class="literal">type</code></span></dt><dd><div class="para">
+							The type of the document to be produced. Valid values are <code class="literal">PDF</code>, <code class="literal">RTF</code> and <code class="literal">HTML</code> modes. Seam defaults to PDF generation, and many of the features only work correctly when generating PDF documents.
+						</div></dd><dt><span class="term"><code class="literal">pageSize</code></span></dt><dd><div class="para">
+							The size of the page to be generate. The most commonly used values would be <code class="literal">LETTER</code> and <code class="literal">A4</code>. A full list of supported pages sizes can be found in <code class="literal">com.lowagie.text.PageSize</code> class. Alternatively, pageSize can provide the width and height of the page directly. The value <span class="emphasis"><em>612 792</em></span>, for example, is equizalent to the LETTER page size.
+						</div></dd><dt><span class="term"><code class="literal">orientation</code></span></dt><dd><div class="para">
+							The orientation of the page. Valid values are <code class="literal">portrait</code> and <code class="literal">landscape</code>. In landscape mode, the height and width page size values are reversed.
+						</div></dd><dt><span class="term"><code class="literal">margins</code></span></dt><dd><div class="para">
+							The left, right, top and bottom margin values.
+						</div></dd><dt><span class="term"><code class="literal">marginMirroring</code></span></dt><dd><div class="para">
+							Indicates that margin settings should be reversed an alternating pages.
+						</div></dd></dl></div><div class="para">
+				Document metadata is also set as attributes of the document tag. The following metadata fields are supported:
+			</div><div class="variablelist"><dl><dt><span class="term"><code class="literal">title</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">subject</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">keywords</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">author</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">creator</code></span></dt><dd><div class="para">
+							​
+						</div></dd></dl></div></div></div><div class="section" title="15.3. Basic Text Elements"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-iText_PDF_generation-Basic_Text_Elements">15.3. Basic Text Elements</h2></div></div></div><div class="para">
+			Useful documents will need to contain more than just text; however, the standard UI components are geared towards HTML generation and are not useful for generating PDF content. Instead, Seam provides a special UI components for generating suitable PDF content. Tags like <code class="literal">&lt;p:image&gt;</code> and <code class="literal">&lt;p:paragraph&gt;</code> are the basic foundations of simple documents. Tags like <code class="literal">&lt;p:font&gt;</code> provide style information to all the content surrounging them.
+		</div><pre class="programlisting">
+&lt;p:document xmlns:p="http://jboss.com/products/seam/pdf"&gt; 
+    &lt;p:image alignment="right" wrap="true" resource="/logo.jpg" /&gt;
+    &lt;p:font size="24"&gt;
+        &lt;p:paragraph spacingAfter="50"&gt;My First Document&lt;/p:paragraph&gt;
+    &lt;/p:font&gt;
+
+    &lt;p:paragraph alignment="justify"&gt;
+        This is a simple document.  It isn't very fancy.
+    &lt;/p:paragraph&gt;
+&lt;/p:document&gt;
+</pre><div class="section" title="15.3.1. p:paragraph"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Basic_Text_Elements-pparagraph">15.3.1. p:paragraph</h3></div></div></div><div class="para">
+				Most uses of text should be sectioned into paragraphs so that text fragments can be flowed, formatted and styled in logical groups.
+			</div><div class="variablelist"><dl><dt><span class="term"><code class="literal">firstLineIndent</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">extraParagraphSpace</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">leading</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">multipliedLeading</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">spacingBefore</code></span></dt><dd><div class="para">
+							The blank space to be inserted before the element.
+						</div></dd><dt><span class="term"><code class="literal">spacingAfter</code></span></dt><dd><div class="para">
+							The blank space to be inserted after the element.
+						</div></dd><dt><span class="term"><code class="literal">indentationLeft</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">indentationRight</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">keepTogether</code></span></dt><dd><div class="para">
+							​
+						</div></dd></dl></div></div><div class="section" title="15.3.2. p:text"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Basic_Text_Elements-ptext">15.3.2. p:text</h3></div></div></div><div class="para">
+				The <code class="literal">text</code> tag allows text fragments to be produced from application data using normal JSF converter mechanisms. It is very similar to the <code class="literal">outputText</code> tag used when rendering HTML documents. Here is an example:
+			</div><pre class="programlisting">
+&lt;p:paragraph&gt;
+    The item costs &lt;p:text value="#{product.price}"&gt;
+        &lt;f:convertNumber type="currency" currencySymbol="$"/&gt;
+    &lt;/p:text&gt;
+&lt;/p:paragraph&gt;
+</pre><div class="variablelist"><dl><dt><span class="term"><code class="literal">value</code></span></dt><dd><div class="para">
+							The value to be displayed. This will typically be a value binding expression.
+						</div></dd></dl></div></div><div class="section" title="15.3.3. p:font"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Basic_Text_Elements-pfont">15.3.3. p:font</h3></div></div></div><div class="para">
+				Font declarations have no direct
+			</div><div class="variablelist"><dl><dt><span class="term"><code class="literal">familyName</code></span></dt><dd><div class="para">
+							The font family. One of: <code class="literal">COURIER</code>, <code class="literal">HELVETICA</code>, <code class="literal">TIMES-ROMAN</code>, <code class="literal">SYMBOL</code> or <code class="literal">ZAPFDINGBATS</code>.
+						</div></dd><dt><span class="term"><code class="literal">size</code></span></dt><dd><div class="para">
+							The point size of the font.
+						</div></dd><dt><span class="term"><code class="literal">style</code></span></dt><dd><div class="para">
+							The font styles. Any combination of : <code class="literal">NORMAL</code>, <code class="literal">BOLD</code>, <code class="literal">ITALIC</code>, <code class="literal">OBLIQUE</code>, <code class="literal">UNDERLINE</code>, <code class="literal">LINE-THROUGH</code>
+						</div></dd></dl></div></div><div class="section" title="15.3.4. p:newPage"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Basic_Text_Elements-pnewPage">15.3.4. p:newPage</h3></div></div></div><div class="para">
+				<code class="literal">p:newPage</code> inserts a page break.
+			</div></div><div class="section" title="15.3.5. p:image"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Basic_Text_Elements-pimage">15.3.5. p:image</h3></div></div></div><div class="para">
+				<code class="literal">p:image</code> inserts an image into the document. Images can be be loaded from the classpath or from the web application context using the <code class="literal">resource</code> attribute.
+			</div><pre class="programlisting">&lt;p:image resource="/jboss.jpg" /&gt;
+</pre><div class="para">
+				Resources can also be dynamically generated by application code. The <code class="literal">imageData</code> attribute can specify a value binding expression whose value is a <code class="literal">java.awt.Image</code> object.
+			</div><pre class="programlisting">&lt;p:image imageData="#{images.chart}" /&gt;
+</pre><div class="variablelist"><dl><dt><span class="term"><code class="literal">resource</code></span></dt><dd><div class="para">
+							The location of the image resource to be included. Resources should be relative to the document root of the web application.
+						</div></dd><dt><span class="term"><code class="literal">imageData</code></span></dt><dd><div class="para">
+							A method expression binding to an application-generated image.
+						</div></dd><dt><span class="term"><code class="literal">rotation</code></span></dt><dd><div class="para">
+							The rotation of the image in degrees.
+						</div></dd><dt><span class="term"><code class="literal">height</code></span></dt><dd><div class="para">
+							The height of the image.
+						</div></dd><dt><span class="term"><code class="literal">width</code></span></dt><dd><div class="para">
+							The width of the image.
+						</div></dd><dt><span class="term"><code class="literal">alignment</code></span></dt><dd><div class="para">
+							The alignment of the image. (see <a class="xref" href="#Seam_Reference_Guide-Document_Constants-Alignment_Values" title="15.8.2. Alignment Values">Section 15.8.2, “Alignment Values”</a> for possible values)
+						</div></dd><dt><span class="term"><code class="literal">alt</code></span></dt><dd><div class="para">
+							Alternative text representation for the image.
+						</div></dd><dt><span class="term"><code class="literal">indentationLeft</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">indentationRight</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">spacingBefore</code></span></dt><dd><div class="para">
+							The blank space to be inserted before the element.
+						</div></dd><dt><span class="term"><code class="literal">spacingAfter</code></span></dt><dd><div class="para">
+							The blank space to be inserted after the element.
+						</div></dd><dt><span class="term"><code class="literal">widthPercentage</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">initialRotation</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">dpi</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">scalePercent</code></span></dt><dd><div class="para">
+							The scaling factor (as a percentage) to use for the image. This can be expressed as a single percentage value or as two percentage values representing separate x and y scaling percentages.
+						</div></dd><dt><span class="term"><code class="literal">wrap</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">underlying</code></span></dt><dd><div class="para">
+							​
+						</div></dd></dl></div></div><div class="section" title="15.3.6. p:anchor"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Basic_Text_Elements-panchor">15.3.6. p:anchor</h3></div></div></div><div class="para">
+				<code class="literal">p:anchor</code> defines clickable links from a document. It supports the following attributes:
+			</div><div class="variablelist"><dl><dt><span class="term"><code class="literal">name</code></span></dt><dd><div class="para">
+							The name of an in-document anchor destination.
+						</div></dd><dt><span class="term"><code class="literal">reference</code></span></dt><dd><div class="para">
+							The destination the link refers to. Links to other points in the document should begin with a <code class="code">#</code>. For example, <code class="code">#link1</code> to refer to an anchor postion with a <code class="literal">name</code> of <code class="literal">link1</code>. Links may also be a full URL to point to a resource outside of the document.
+						</div></dd></dl></div></div></div><div class="section" title="15.4. Headers and Footers"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-iText_PDF_generation-Headers_and_Footers">15.4. Headers and Footers</h2></div></div></div><div class="section" title="15.4.1. p:header and p:footer"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Headers_and_Footers-pheader_and_pfooter">15.4.1. p:header and p:footer</h3></div></div></div><div class="para">
+				The <code class="literal">p:header</code> and <code class="literal">p:footer</code> components provide the ability to place header and footer text on each page of a generated document, with the exception of the first page. Header and footer declarations should appear near the top of a document.
+			</div><div class="variablelist"><dl><dt><span class="term"><code class="literal">alignment</code></span></dt><dd><div class="para">
+							The alignment of the header/footer box section. (see <a class="xref" href="#Seam_Reference_Guide-Document_Constants-Alignment_Values" title="15.8.2. Alignment Values">Section 15.8.2, “Alignment Values”</a> for alignment values)
+						</div></dd><dt><span class="term"><code class="literal">backgroundColor</code></span></dt><dd><div class="para">
+							The background color of the header/footer box. (see <a class="xref" href="#Seam_Reference_Guide-Document_Constants-Color_Values" title="15.8.1. Color Values">Section 15.8.1, “Color Values”</a> for color values)
+						</div></dd><dt><span class="term"><code class="literal">borderColor</code></span></dt><dd><div class="para">
+							The border color of the header/footer box. Individual border sides can be set using <code class="literal">borderColorLeft</code>, <code class="literal">borderColorRight</code>, <code class="literal">borderColorTop</code> and <code class="literal">borderColorBottom</code>.(see <a class="xref" href="#Seam_Reference_Guide-Document_Constants-Color_Values" title="15.8.1. Color Values">Section 15.8.1, “Color Values”</a> for color values)
+						</div></dd><dt><span class="term"><code class="literal">borderWidth</code></span></dt><dd><div class="para">
+							The width of the border. Inidvidual border sides can be specified using <code class="literal">borderWidthLeft</code>, <code class="literal">borderWidthRight</code>, <code class="literal">borderWidthTop</code> and <code class="literal">borderWidthBottom</code>.
+						</div></dd></dl></div></div><div class="section" title="15.4.2. p:pageNumber"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Headers_and_Footers-ppageNumber">15.4.2. p:pageNumber</h3></div></div></div><div class="para">
+				The current page number can be placed inside of a header or footer using the <code class="literal">p:pageNumber</code> tag. The page number tag can only be used in the context of a header or footer and can only be used once.
+			</div></div></div><div class="section" title="15.5. Chapters and Sections"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-iText_PDF_generation-Chapters_and_Sections">15.5. Chapters and Sections</h2></div></div></div><div class="para">
+			If the generated document follows a book/article structure, the <code class="literal">p:chapter</code> and <code class="literal">p:section</code> tags can be used to provide the necessary structure. Sections can only be used inside of chapters, but they may be nested arbitrarily deep. Most PDF viewers provide easy navigation between chapters and sections in a document.
+		</div><pre class="programlisting">
+&lt;p:document xmlns:p="http://jboss.com/products/seam/pdf"
+            title="Hello"&gt;
+
+   &lt;p:chapter number="1"&gt;
+      &lt;p:title&gt;&lt;p:paragraph&gt;Hello&lt;/p:paragraph&gt;&lt;/p:title&gt;
+      &lt;p:paragraph&gt;Hello #{user.name}!&lt;/p:paragraph&gt;
+   &lt;/p:chapter&gt;
+
+   &lt;p:chapter number="2"&gt;
+      &lt;p:title&gt;&lt;p:paragraph&gt;Goodbye&lt;/p:paragraph&gt;&lt;/p:title&gt;
+      &lt;p:paragraph&gt;Goodbye #{user.name}.&lt;/p:paragraph&gt;
+   &lt;/p:chapter&gt;
+
+&lt;/p:document&gt;
+</pre><div class="section" title="15.5.1. p:chapter and p:section"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Chapters_and_Sections-pchapter_and_psection">15.5.1. p:chapter and p:section</h3></div></div></div><div class="variablelist"><dl><dt><span class="term"><code class="literal">number</code></span></dt><dd><div class="para">
+							The chapter number. Every chapter should be assigned a chapter number.
+						</div></dd><dt><span class="term"><code class="literal">numberDepth</code></span></dt><dd><div class="para">
+							The depth of numbering for section. All sections are numbered relative to their surrounding chapter/sections. The fourth section of of the first section of chapter three would be section 3.1.4, if displayed at the default number depth of three. To omit the chapter number, a number depth of 2 should be used. In that case, the section number would be displayed as 1.4.
+						</div></dd></dl></div></div><div class="section" title="15.5.2. p:title"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Chapters_and_Sections-ptitle">15.5.2. p:title</h3></div></div></div><div class="para">
+				Any chapter or section can contain a <code class="literal">p:title</code>. The title will be displayed next to the chapter/section number. The body of the title may contain raw text or may be a <code class="literal">p:paragraph</code>.
+			</div></div></div><div class="section" title="15.6. Lists"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-iText_PDF_generation-Lists">15.6. Lists</h2></div></div></div><div class="para">
+			List structures can be displayed using the <code class="literal">p:list</code> and <code class="literal">p:listItem</code> tags. Lists may contain arbitrarily-nested sublists. List items may not be used outside of a list. he following document uses the <code class="literal">ui:repeat</code> tag to to display a list of values retrieved from a Seam component.
+		</div><pre class="programlisting">
+&lt;p:document xmlns:p="http://jboss.com/products/seam/pdf"
+            xmlns:ui="http://java.sun.com/jsf/facelets"
+            title="Hello"&gt;
+   &lt;p:list style="numbered"&gt;
+      &lt;ui:repeat value="#{documents}" var="doc"&gt;
+         &lt;p:listItem&gt;#{doc.name}&lt;/p:listItem&gt;
+      &lt;/ui:repeat&gt;
+   &lt;/p:list&gt;
+&lt;/p:document&gt;
+</pre><div class="section" title="15.6.1. p:list"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Lists-plist">15.6.1. p:list</h3></div></div></div><div class="para">
+				<code class="literal">p:list</code> supports the following attributes:
+			</div><div class="variablelist"><dl><dt><span class="term"><code class="literal">style</code></span></dt><dd><div class="para">
+							The ordering/bulleting style of list. One of: <code class="literal">NUMBERED</code>, <code class="literal">LETTERED</code>, <code class="literal">GREEK</code>, <code class="literal">ROMAN</code>, <code class="literal">ZAPFDINGBATS</code>, <code class="literal">ZAPFDINGBATS_NUMBER</code>. If no style is given, the list items are bulleted.
+						</div></dd><dt><span class="term"><code class="literal">listSymbol</code></span></dt><dd><div class="para">
+							For bulleted lists, specifies the bullet symbol.
+						</div></dd><dt><span class="term"><code class="literal">indent</code></span></dt><dd><div class="para">
+							The indentation level of the list.
+						</div></dd><dt><span class="term"><code class="literal">lowerCase</code></span></dt><dd><div class="para">
+							For list styles using letters, indicates whether the letters should be lower case.
+						</div></dd><dt><span class="term"><code class="literal">charNumber</code></span></dt><dd><div class="para">
+							For ZAPFDINGBATS, indicates the character code of the bullet character.
+						</div></dd><dt><span class="term"><code class="literal">numberType</code></span></dt><dd><div class="para">
+							For ZAPFDINGBATS_NUMBER, indicates the numbering style.
+						</div></dd></dl></div></div><div class="section" title="15.6.2. p:listItem"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Lists-plistItem">15.6.2. p:listItem</h3></div></div></div><div class="para">
+				<code class="literal">p:listItem</code> supports the following attributes:
+			</div><div class="variablelist"><dl><dt><span class="term"><code class="literal">alignment</code></span></dt><dd><div class="para">
+							The alignment of the list item. (See <a class="xref" href="#Seam_Reference_Guide-Document_Constants-Alignment_Values" title="15.8.2. Alignment Values">Section 15.8.2, “Alignment Values”</a> for possible values)
+						</div></dd><dt><span class="term"><code class="literal">indentationLeft</code></span></dt><dd><div class="para">
+							The left indentation amount.
+						</div></dd><dt><span class="term"><code class="literal">indentationRight</code></span></dt><dd><div class="para">
+							The right indentation amount.
+						</div></dd><dt><span class="term"><code class="literal">listSymbol</code></span></dt><dd><div class="para">
+							Overrides the default list symbol for this list item.
+						</div></dd></dl></div></div></div><div class="section" title="15.7. Tables"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-iText_PDF_generation-Tables">15.7. Tables</h2></div></div></div><div class="para">
+			Table structures can be created using the <code class="literal">p:table</code> and <code class="literal">p:cell</code> tags. Unlike many table structures, there is no explicit row declaration. If a table has 3 columns, then every 3 cells will automatically form a row. Header and footer rows can be declared, and the headers and footers will be repeated in the event a table structure spans multiple pages.
+		</div><pre class="programlisting">
+&lt;p:document xmlns:p="http://jboss.com/products/seam/pdf"   
+            xmlns:ui="http://java.sun.com/jsf/facelets"
+            title="Hello"&gt;   
+   &lt;p:table columns="3" headerRows="1"&gt;
+      &lt;p:cell&gt;name&lt;/p:cell&gt;
+      &lt;p:cell&gt;owner&lt;/p:cell&gt;
+      &lt;p:cell&gt;size&lt;/p:cell&gt;
+      &lt;ui:repeat value="#{documents}" var="doc"&gt;
+         &lt;p:cell&gt;#{doc.name}&lt;/p:cell&gt;
+         &lt;p:cell&gt;#{doc.user.name}&lt;/p:cell&gt;
+         &lt;p:cell&gt;#{doc.size}&lt;/p:cell&gt;
+      &lt;/ui:repeat&gt;
+   &lt;/p:table&gt;
+&lt;/p:document&gt;
+</pre><div class="section" title="15.7.1. p:table"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Tables-ptable">15.7.1. p:table</h3></div></div></div><div class="para">
+				<code class="literal">p:table</code> supports the following attributes.
+			</div><div class="variablelist"><dl><dt><span class="term"><code class="literal">columns</code></span></dt><dd><div class="para">
+							The number of columns (cells) that make up a table row.
+						</div></dd><dt><span class="term"><code class="literal">widths</code></span></dt><dd><div class="para">
+							The relative widths of each column. There should be one value for each column. For example: widths="2 1 1" would indicate that there are 3 columns and the first column should be twice the size of the second and third column.
+						</div></dd><dt><span class="term"><code class="literal">headerRows</code></span></dt><dd><div class="para">
+							The initial number of rows which are considered to be headers or footer rows and should be repeated if the table spans multiple pages.
+						</div></dd><dt><span class="term"><code class="literal">footerRows</code></span></dt><dd><div class="para">
+							The number of rows that are considered to be footer rows. This value is subtracted from the <code class="literal">headerRows</code> value. If document has 2 rows which make up the header and one row that makes up the footer, <code class="literal">headerRows</code> should be set to 3 and <code class="literal">footerRows</code> should be set to 1
+						</div></dd><dt><span class="term"><code class="literal">widthPercentage</code></span></dt><dd><div class="para">
+							The percentage of the page width that the table spans.
+						</div></dd><dt><span class="term"><code class="literal">horizontalAlignment</code></span></dt><dd><div class="para">
+							The horizontal alignment of the table. (See <a class="xref" href="#Seam_Reference_Guide-Document_Constants-Alignment_Values" title="15.8.2. Alignment Values">Section 15.8.2, “Alignment Values”</a> for possible values)
+						</div></dd><dt><span class="term"><code class="literal">skipFirstHeader</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">runDirection</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">lockedWidth</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">splitRows</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">spacingBefore</code></span></dt><dd><div class="para">
+							The blank space to be inserted before the element.
+						</div></dd><dt><span class="term"><code class="literal">spacingAfter</code></span></dt><dd><div class="para">
+							The blank space to be inserted after the element.
+						</div></dd><dt><span class="term"><code class="literal">extendLastRow</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">headersInEvent</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">splitLate</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">keepTogether</code></span></dt><dd><div class="para">
+							​
+						</div></dd></dl></div></div><div class="section" title="15.7.2. p:cell"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Tables-pcell">15.7.2. p:cell</h3></div></div></div><div class="para">
+				<code class="literal">p:cell</code> supports the following attributes.
+			</div><div class="variablelist"><dl><dt><span class="term"><code class="literal">colspan</code></span></dt><dd><div class="para">
+							Cells can span more than one column by declaring a <code class="literal">colspan</code> greater than 1. Tables do not have the ability to span across multiple rows.
+						</div></dd><dt><span class="term"><code class="literal">horizontalAlignment</code></span></dt><dd><div class="para">
+							The horizontal alignment of the cell. (see <a class="xref" href="#Seam_Reference_Guide-Document_Constants-Alignment_Values" title="15.8.2. Alignment Values">Section 15.8.2, “Alignment Values”</a> for possible values)
+						</div></dd><dt><span class="term"><code class="literal">verticalAlignment</code></span></dt><dd><div class="para">
+							The vertical alignment of the cell. (see <a class="xref" href="#Seam_Reference_Guide-Document_Constants-Alignment_Values" title="15.8.2. Alignment Values">Section 15.8.2, “Alignment Values”</a> for possible values)
+						</div></dd><dt><span class="term"><code class="literal">padding</code></span></dt><dd><div class="para">
+							Padding on a given side can also be specified using <code class="literal">paddingLeft</code>, <code class="literal">paddingRight</code>, <code class="literal">paddingTop</code> and <code class="literal">paddingBottom</code>.
+						</div></dd><dt><span class="term"><code class="literal">useBorderPadding</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">leading</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">multipliedLeading</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">indent</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">verticalAlignment</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">extraParagraphSpace</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">fixedHeight</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">noWrap</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">minimumHeight</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">followingIndent</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">rightIndent</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">spaceCharRatio</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">runDirection</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">arabicOptions</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">useAscender</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">grayFill</code></span></dt><dd><div class="para">
+							​
+						</div></dd><dt><span class="term"><code class="literal">rotation</code></span></dt><dd><div class="para">
+							​
+						</div></dd></dl></div></div></div><div class="section" title="15.8. Document Constants"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-iText_PDF_generation-Document_Constants">15.8. Document Constants</h2></div></div></div><div class="para">
+			This section documents some of the constants shared by attributes on multiple tags.
+		</div><div class="section" title="15.8.1. Color Values"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Document_Constants-Color_Values">15.8.1. Color Values</h3></div></div></div><div class="para">
+				Seam documents do not yet support a full color specification. Currently, only named colors are supported. They are: <code class="literal">white</code>, <code class="literal">gray</code>, <code class="literal">lightgray</code>, <code class="literal">darkgray</code>, <code class="literal">black</code>, <code class="literal">red</code>, <code class="literal">pink</code>, <code class="literal">yellow</code>, <code class="literal">green</code>, <code class="literal">magenta</code>, <code class="literal">cyan</code> and <code class="literal">blue</code>.
+			</div></div><div class="section" title="15.8.2. Alignment Values"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Document_Constants-Alignment_Values">15.8.2. Alignment Values</h3></div></div></div><div class="para">
+				Where alignment values are used, the Seam PDF supports the following horizontal alignment values: <code class="literal">left</code>, <code class="literal">right</code>, <code class="literal">center</code>, <code class="literal">justify</code> and <code class="literal">justifyall</code>. The vertical alignment values are <code class="literal">top</code>, <code class="literal">middle</code>, <code class="literal">bottom</code>, and <code class="literal">baseline</code>.
+			</div></div></div><div class="section" title="15.9. Configuring iText"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-iText_PDF_generation-Configuring_iText">15.9. Configuring iText</h2></div></div></div><div class="para">
+			Document generation works out of the box with no additional configuration needed. However, there are a few points of configuration that are needed for more serious applications.
+		</div><div class="para">
+			The default implementation serves PDF documents from a generic URL, <code class="literal">/seam-doc.seam</code>. Many browsers (and users) would prefer to see URLs that contain the actual PDF name like <code class="literal">/myDocument.pdf</code>. This capability requires some configuration. To serve PDF files, all *.pdf resources should be mapped to the Seam Servlet Filter and to the DocumentStoreServlet:
+		</div><pre class="programlisting">
+&lt;filter&gt;
+    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;
+    &lt;filter-class&gt;org.jboss.seam.servlet.SeamServletFilter&lt;/filter-class&gt;
+&lt;/filter&gt;
+
+&lt;filter-mapping&gt;
+    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;
+    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;
+&lt;/filter-mapping&gt;
+
+&lt;servlet&gt;
+    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;
+    &lt;servlet-class&gt;org.jboss.seam.pdf.DocumentStoreServlet&lt;/servlet-class&gt;
+&lt;/servlet&gt;
+
+&lt;servlet-mapping&gt;
+    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;
+    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;
+&lt;/servlet-mapping&gt;
+</pre><div class="para">
+			The <code class="literal">useExtensions</code> option on the document store component completes the functionality by instructing the document store to generate URLs with the correct filename extension for the document type being generated.
+		</div><pre class="programlisting">        
+&lt;components xmlns="http://jboss.com/products/seam/components"
+            xmlns:pdf="http://jboss.com/products/seam/pdf"&gt;
+    &lt;pdf:documentStore useExtensions="true" /&gt;
+&lt;/components&gt;
+</pre><div class="para">
+			Generated documents are stored in conversation scope and will expire when the conversation ends. At that point, references to the document will be invalid. To You can specify a default view to be shown when a document does not exist using the <code class="literal">errorPage</code> property of the documentStore.
+		</div><pre class="programlisting">        
+&lt;pdf:documentStore useExtensions="true" errorPage="/pdfMissing.seam" /&gt;
+</pre></div><div class="section" title="15.10. iText links"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-iText_PDF_generation-iText_links">15.10. iText links</h2></div></div></div><div class="para">
+			For further information on iText, see:
+		</div><div class="para">
+			<div class="itemizedlist"><ul><li class="listitem"><div class="para">
+						<a href="http://www.lowagie.com/iText/">iText Home Page</a>
+					</div></li><li class="listitem"><div class="para">
+						<a href="http://www.manning.com/lowagie/">iText in Action</a>
+					</div></li></ul></div>
+		</div></div></div><div xml:lang="en-US" class="chapter" title="Chapter 16. Email" lang="en-US"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Email">Chapter 16. Email</h2></div></div></div><div class="toc"><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Email-Creating_a_message">16.1. Creating a message</a></span></dt><dd><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Creating_a_message-Attachments">16.1.1. Attachments</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Creating_a_message-HTMLText_alternative_part">16.1.2. HTML/Text alternative part</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Creating_a_message-Multiple_recipients">16.1.3. Multiple recipients</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Creating_a_message-Multiple_messages">16.1.4. Multiple messages</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Cr!
 eating_a_message-Templating">16.1.5. Templating</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Creating_a_message-Internationalisation">16.1.6. Internationalisation</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Creating_a_message-Other_Headers">16.1.7. Other Headers</a></span></dt></dl></dd><dt><span class="section"><a href="#Seam_Reference_Guide-Email-Receiving_emails">16.2. Receiving emails</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Email-Configuration">16.3. Configuration</a></span></dt><dd><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Configuration-mailSession">16.3.1. <code class="literal">mailSession</code></a></span></dt></dl></dd><dt><span class="section"><a href="#Seam_Reference_Guide-Email-Tags">16.4. Tags</a></span></dt></dl></div><div class="para">
+		Seam now includes an optional components for templating and sending emails.
+	</div><div class="para">
+		Email support is provided by <code class="literal">jboss-seam-mail.jar</code>. This JAR contains the mail JSF controls, which are used to construct emails, and the <code class="literal">mailSession</code> manager component.
+	</div><div class="para">
+		The examples/mail project contains an example of the email support in action. It demonstrates proper packaging, and it contains a number of example that demonstrate the key features currently supported.
+	</div><div class="section" title="16.1. Creating a message"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Email-Creating_a_message">16.1. Creating a message</h2></div></div></div><div class="para">
+			You do not need to learn a whole new templating language to use Seam Mail—an email is just facelet!
+		</div><pre class="programlisting">&lt;m:message xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:m="http://jboss.com/products/seam/mail"
+    xmlns:h="http://java.sun.com/jsf/html"&gt;
+  
+    &lt;m:from name="Peter" address="peter at example.com" /&gt;
+    &lt;m:to name="#{person.firstname} #{person.lastname}"&gt;#{person.address}&lt;/m:to&gt;
+    &lt;m:subject&gt;Try out Seam!&lt;/m:subject&gt;
+    
+    &lt;m:body&gt;
+        &lt;p&gt;&lt;h:outputText value="Dear #{person.firstname}" /&gt;,&lt;/p&gt;
+        &lt;p&gt;You can try out Seam by visiting 
+        &lt;a href="http://labs.jboss.com/jbossseam"&gt;http://labs.jboss.com/jbossseam&lt;/a&gt;.&lt;/p&gt;
+        &lt;p&gt;Regards,&lt;/p&gt;
+        &lt;p&gt;Peter&lt;/p&gt;
+    &lt;/m:body&gt;
+    
+&lt;/m:message&gt;
+</pre><div class="para">
+			The <code class="literal">&lt;m:message&gt;</code> tag wraps the whole message, and tells Seam to start rendering an email. Inside the <code class="literal">&lt;m:message&gt;</code> tag we use an <code class="literal">&lt;m:from&gt;</code> tag to set who the message is from, a <code class="literal">&lt;m:to&gt;</code> tag to specify a sender (notice how we use EL as we would in a normal facelet), and a <code class="literal">&lt;m:subject&gt;</code> tag.
+		</div><div class="para">
+			The <code class="literal">&lt;m:body&gt;</code> tag wraps the body of the email. You can use regular HTML tags inside the body as well as JSF components.
+		</div><div class="para">
+			So, now you have your email template, how do you go about sending it? Well, at the end of rendering the <code class="literal">m:message</code> the <code class="literal">mailSession</code> is called to send the email, so all you have to do is ask Seam to render the view:
+		</div><pre class="programlisting">@In(create=true)
+private Renderer renderer;
+   
+public void send() {
+    try {
+       renderer.render("/simple.xhtml");
+       facesMessages.add("Email sent successfully");
+   } 
+   catch (Exception e) {
+       facesMessages.add("Email sending failed: " + e.getMessage());
+   }
+}
+</pre><div class="para">
+			If, for example, you entered an invalid email address, then an exception would be thrown, which is caught and then displayed to the user.
+		</div><div class="section" title="16.1.1. Attachments"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Creating_a_message-Attachments">16.1.1. Attachments</h3></div></div></div><div class="para">
+				Seam makes it easy to attach files to an email. It supports most of the standard java types used when working with files.
+			</div><div class="para">
+				If you wanted to email the <code class="literal">jboss-seam-mail.jar</code>:
+			</div><pre class="programlisting">&lt;m:attachment value="/WEB-INF/lib/jboss-seam-mail.jar"/&gt;
+</pre><div class="para">
+				Seam will load the file from the classpath, and attach it to the email. By default it would be attached as <code class="literal">jboss-seam-mail.jar</code>; if you wanted it to have another name you would just add the <code class="literal">fileName</code> attribute:
+			</div><pre class="programlisting">&lt;m:attachment value="/WEB-INF/lib/jboss-seam-mail.jar" fileName="this-is-so-cool.jar"/&gt;
+</pre><div class="para">
+				You could also attach a <code class="literal">java.io.File</code>, a <code class="literal">java.net.URL</code>:
+			</div><pre class="programlisting">&lt;m:attachment value="#{numbers}"/&gt;
+</pre><div class="para">
+				Or a <code class="literal">byte[]</code> or a <code class="literal">java.io.InputStream</code>:
+			</div><pre class="programlisting">&lt;m:attachment value="#{person.photo}" contentType="image/png"/&gt;
+</pre><div class="para">
+				You will notice that for a <code class="literal">byte[]</code> and a <code class="literal">java.io.InputStream</code> you need to specify the MIME type of the attachment (as that information is not carried as part of the file).
+			</div><div class="para">
+				And it gets even better, you can attach a Seam generated PDF, or any standard JSF view, just by wrapping a <code class="literal">&lt;m:attachment&gt;</code> around the normal tags you would use:
+			</div><pre class="programlisting">&lt;m:attachment fileName="tiny.pdf"&gt;
+    &lt;p:document&gt;                                                      
+        A very tiny PDF                                                                                                
+    &lt;/p:document&gt;
+&lt;/m:attachment&gt;
+</pre><div class="para">
+				If you had a set of files you wanted to attach (for example a set of pictures loaded from a database) you can just use a <code class="literal">&lt;ui:repeat&gt;</code>:
+			</div><pre class="programlisting">&lt;ui:repeat value="#{people}" var="person"&gt;
+    &lt;m:attachment value="#{person.photo}" contentType="image/jpeg"
+    fileName="#{person.firstname}_#{person.lastname}.jpg"/&gt;
+&lt;/ui:repeat&gt;
+</pre></div><div class="section" title="16.1.2. HTML/Text alternative part"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Creating_a_message-HTMLText_alternative_part">16.1.2. HTML/Text alternative part</h3></div></div></div><div class="para">
+				Whilst most mail readers nowadays support HTML, some do not, so you can add a plain text alternative to your email body:
+			</div><pre class="programlisting">&lt;m:body&gt;
+    &lt;f:facet name="alternative"&gt;Sorry, your email reader can't show our fancy email, 
+please go to http://labs.jboss.com/jbossseam to explore Seam.&lt;/f:facet&gt;
+&lt;/m:body&gt;
+</pre></div><div class="section" title="16.1.3. Multiple recipients"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Creating_a_message-Multiple_recipients">16.1.3. Multiple recipients</h3></div></div></div><div class="para">
+				Often you will want to send an email to a group of recipients (for example your users). All of the recipient mail tags can be placed inside a <code class="literal">&lt;ui:repeat&gt;</code>:
+			</div><pre class="programlisting">&lt;ui:repeat value="#{allUsers} var="user"&gt;
+    &lt;m:to name="#{user.firstname} #{user.lastname}" address="#{user.emailAddress}" /&gt;
+&lt;/ui:repeat&gt;
+</pre></div><div class="section" title="16.1.4. Multiple messages"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Creating_a_message-Multiple_messages">16.1.4. Multiple messages</h3></div></div></div><div class="para">
+				Sometimes, however, you need to send a slightly different message to each recipient (e.g. a password reset). The best way to do this is to place the whole message inside a <code class="literal">&lt;ui:repeat&gt;</code>:
+			</div><pre class="programlisting">&lt;ui:repeat value="#{people}" var="p"&gt;
+    &lt;m:message&gt;
+        &lt;m:from name="#{person.firstname} #{person.lastname}"&gt;#{person.address}&lt;/m:from&gt;
+        &lt;m:to name="#{p.firstname}"&gt;#{p.address}&lt;/m:to&gt;
+            ...
+    &lt;/m:message&gt;
+&lt;/ui:repeat&gt;
+</pre></div><div class="section" title="16.1.5. Templating"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Creating_a_message-Templating">16.1.5. Templating</h3></div></div></div><div class="para">
+				The mail templating example shows that facelets templating Just Works with the Seam mail tags.
+			</div><div class="para">
+				Our <code class="literal">template.xhtml</code> contains:
+			</div><pre class="programlisting">&lt;m:message&gt;
+   &lt;m:from name="Seam" address="do-not-reply at jboss.com" /&gt;
+   &lt;m:to name="#{person.firstname} #{person.lastname}"&gt;#{person.address}&lt;/m:to&gt;
+   &lt;m:subject&gt;#{subject}&lt;/m:subject&gt;
+   &lt;m:body&gt;
+       &lt;html&gt;
+           &lt;body&gt;
+               &lt;ui:insert name="body"&gt;This is the default body, specified by the template.
+                                   &lt;/ui:insert&gt;
+           &lt;/body&gt;
+       &lt;/html&gt;
+   &lt;/m:body&gt;
+&lt;/m:message&gt;
+</pre><div class="para">
+				Our <code class="literal">templating.xhtml</code> contains:
+			</div><pre class="programlisting">&lt;ui:param name="subject" value="Templating with Seam Mail"/&gt;
+&lt;ui:define name="body"&gt;
+    &lt;p&gt;This example demonstrates that you can easily use &lt;i&gt;facelets templating&lt;/i&gt; in email!&lt;/p&gt;
+&lt;/ui:define&gt;
+</pre></div><div class="section" title="16.1.6. Internationalisation"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Creating_a_message-Internationalisation">16.1.6. Internationalisation</h3></div></div></div><div class="para">
+				Seam supports sending internationalised messages. By default, the encoding provided by JSF is used, but this can be overridden on the template:
+			</div><pre class="programlisting">&lt;m:message charset="UTF-8"&gt;
+   ...
+&lt;/m:message&gt;
+</pre><div class="para">
+				The body, subject and recipient (and from) name will be encoded. You will need to make sure facelets uses the correct charset for parsing your pages by setting encoding of the template:
+			</div><pre class="programlisting">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+</pre></div><div class="section" title="16.1.7. Other Headers"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Creating_a_message-Other_Headers">16.1.7. Other Headers</h3></div></div></div><div class="para">
+				Sometimes you will want to add other headers to your email. Seam provides support for some (see <a class="xref" href="#Seam_Reference_Guide-Email-Tags" title="16.4. Tags">Section 16.4, “Tags”</a>). For example, we can set the importance of the email, and ask for a read receipt:
+			</div><pre class="programlisting">&lt;m:message xmlns:m="http://jboss.com/products/seam/mail"
+           importance="low"
+           requestReadReceipt="true"/&gt;
+</pre><div class="para">
+				Otherise you can add any header to the message using the <code class="literal">&lt;m:header&gt;</code> tag:
+			</div><pre class="programlisting">&lt;m:header name="X-Sent-From" value="JBoss Seam"/&gt;
+</pre></div></div><div class="section" title="16.2. Receiving emails"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Email-Receiving_emails">16.2. Receiving emails</h2></div></div></div><div class="para">
+			If you are using EJB then you can use a MDB (Message Driven Bean) to receive email. Seam comes with an improved version of <code class="literal">mail-ra.rar</code> as distributed in JBoss AS; until the improvements make there way into a released version of JBoss AS, replacing the default <code class="literal">rar</code> with the one distributed with Seam is recommended.
+		</div><div class="para">
+			You can configure it like this:
+		</div><pre class="programlisting">@MessageDriven(activationConfig={
+         @ActivationConfigProperty(propertyName="mailServer", propertyValue="localhost"),
+         @ActivationConfigProperty(propertyName="mailFolder", propertyValue="INBOX"),
+         @ActivationConfigProperty(propertyName="storeProtocol", propertyValue="pop3"),
+         @ActivationConfigProperty(propertyName="userName", propertyValue="seam"),
+         @ActivationConfigProperty(propertyName="password", propertyValue="seam")
+})
+ at ResourceAdapter("mail-ra.rar")
+ at Name("mailListener")
+public class MailListenerMDB implements MailListener {
+
+   @In(create=true)
+   private OrderProcessor orderProcessor;
+
+   public void onMessage(Message message) {
+      // Process the message
+      orderProcessor.process(message.getSubject());
+   }
+   
+}
+</pre><div class="para">
+			Each message received will cause <code class="literal">onMessage(Message message)</code> to be called. Most seam annotations will work inside a MDB but you must not access the persistence context.
+		</div><div class="para">
+			You can find more information on the default <code class="literal">mail-ra.rar</code> at <a href="http://wiki.jboss.org/wiki/Wiki.jsp?page=InboundJavaMail">http://wiki.jboss.org/wiki/Wiki.jsp?page=InboundJavaMail</a>. The version distributed with Seam also includes a <code class="literal">debug</code> property to enable JavaMail debugging, a <code class="literal">flush</code> property (by default true) to disable flushing a <code class="literal">POP3</code> mailbox after successfullying delivering a message to your MDB and a <code class="literal">port</code> property to override the default TCP port.
+		</div><div class="note"><h2>Note</h2><div class="para">
+				The api for this may be altered as changes make there way into the JBoss Enterprise Application Platform.
+			</div></div></div><div class="section" title="16.3. Configuration"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Email-Configuration">16.3. Configuration</h2></div></div></div><div class="para">
+			To include Email support in your application, include <code class="literal">jboss-seam-mail.jar</code> in your WEB-INF/lib directory. If you are using JBoss AS there is no further configuration needed to use Seam's email support. Otherwise you need to make sure you have the JavaMail API, an implementation of the JavaMail API present (the API and impl used in JBoss AS are distributed with seam as <code class="literal">lib/mail.jar</code>), and a copy of the Java Activation Framework (distributed with seam as <code class="literal">lib/activation.jar</code>.
+		</div><div class="para">
+			The Seam Email module requires the use of Facelets as the view technology. Future versions of the library may also support the use of JSP. Additionally, it requires the use of the seam-ui package.
+		</div><div class="para">
+			The <code class="literal">mailSession</code> component uses JavaMail to talk to a 'real' SMTP server.
+		</div><div class="section" title="16.3.1. mailSession"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Configuration-mailSession">16.3.1. <code class="literal">mailSession</code></h3></div></div></div><div class="para">
+				A JavaMail Session may be available via a JNDI lookup if you are working in an JEE environment or you can use a Seam configured Session.
+			</div><div class="para">
+				The mailSession component's properties are described in more detail in the Mail related components section.
+			</div><div class="section" title="16.3.1.1. JNDI lookup in JBoss AS"><div class="titlepage"><div><div><h4 class="title" id="Seam_Reference_Guide-mailSession-JNDI_lookup_in_JBoss_AS">16.3.1.1. JNDI lookup in JBoss AS</h4></div></div></div><div class="para">
+					The JBossAS <code class="literal">deploy/mail-service.xml</code> configures a JavaMail session binding into JNDI. The default service configuration will need altering for your network. <a href="http://wiki.jboss.org/wiki/Wiki.jsp?page=JavaMail">http://wiki.jboss.org/wiki/Wiki.jsp?page=JavaMail</a> describes the service in more detail.
+				</div><pre class="programlisting">&lt;components xmlns="http://jboss.com/products/seam/components"
+        xmlns:core="http://jboss.com/products/seam/core"
+        xmlns:mail="http://jboss.com/products/seam/mail"&gt;
+        
+    &lt;mail:mail-session session-jndi-name="java:/Mail"/&gt;
+    
+&lt;/components&gt;
+</pre><div class="para">
+					Here we tell Seam to get the mail session bound to <code class="literal">java:/Mail</code> from JNDI.
+				</div></div><div class="section" title="16.3.1.2. Seam configured Session"><div class="titlepage"><div><div><h4 class="title" id="Seam_Reference_Guide-mailSession-Seam_configured_Session">16.3.1.2. Seam configured Session</h4></div></div></div><div class="para">
+					A mail session can be configured via <code class="literal">components.xml</code>. Here we tell Seam to use <code class="literal">smtp.example.com</code> as the smtp server,
+				</div><pre class="programlisting">&lt;components xmlns="http://jboss.com/products/seam/components"
+        xmlns:core="http://jboss.com/products/seam/core"
+        xmlns:mail="http://jboss.com/products/seam/mail"&gt;
+        
+    &lt;mail:mail-session host="smtp.example.com"/&gt;
+    
+&lt;/components&gt;
+</pre></div></div></div><div class="section" title="16.4. Tags"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Email-Tags">16.4. Tags</h2></div></div></div><div class="para">
+			Emails are generated using tags in the <code class="literal">http://jboss.com/products/seam/mail</code> namespace. Documents should always have the <code class="literal">message</code> tag at the root of the message. The message tag prepares Seam to generate an email.
+		</div><div class="para">
+			The standard templating tags of facelets can be used as normal. Inside the body you can use any JSF tag which does not require access to external resources (stylesheets, javascript).
+		</div><div class="variablelist"><dl><dt><span class="term">&lt;m:message&gt;</span></dt><dd><div class="para">
+						Root tag of a mail message
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">importance</code> — low, normal or high. By default normal, this sets the importance of the mail message.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">precedence</code> — sets the precedence of the message (for example, bulk).
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">requestReadReceipt</code> — by default false, if set, a read receipt will be request will be added, with the read receipt being sent to the <code class="literal">From:</code> address.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">urlBase</code> — If set, the value is prepended to the <code class="literal">requestContextPath</code> allowing you to use components such as <code class="literal">&lt;h:graphicImage&gt;</code> in your emails.
+							</div></li></ul></div></dd><dt><span class="term">&lt;m:from&gt;</span></dt><dd><div class="para">
+						Set's the From: address for the email. You can only have one of these per email.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">name</code> — the name the email should come from.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">address</code> — the email address the email should come from.
+							</div></li></ul></div></dd><dt><span class="term">&lt;m:replyTo&gt;</span></dt><dd><div class="para">
+						Set's the Reply-to: address for the email. You can only have one of these per email.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">address</code> — the email address the email should come from.
+							</div></li></ul></div></dd><dt><span class="term">&lt;m:to&gt;</span></dt><dd><div class="para">
+						Add a recipient to the email. Use multiple &lt;m:to&gt; tags for multiple recipients. This tag can be safely placed inside a repeat tag such as &lt;ui:repeat&gt;.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">name</code> — the name of the recipient.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">address</code> — the email address of the recipient.
+							</div></li></ul></div></dd><dt><span class="term">&lt;m:cc&gt;</span></dt><dd><div class="para">
+						Add a cc recipient to the email. Use multiple &lt;m:cc&gt; tags for multiple ccs. This tag can be safely placed inside a repeat tag such as &lt;ui:repeat&gt;.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">name</code> — the name of the recipient.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">address</code> — the email address of the recipient.
+							</div></li></ul></div></dd><dt><span class="term">&lt;m:bcc&gt;</span></dt><dd><div class="para">
+						Add a bcc recipient to the email. Use multiple &lt;m:bcc&gt; tags for multiple bccs. This tag can be safely placed inside a repeat tag such as &lt;ui:repeat&gt;.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">name</code> — the name of the recipient.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">address</code> — the email address of the recipient.
+							</div></li></ul></div></dd><dt><span class="term">&lt;m:header&gt;</span></dt><dd><div class="para">
+						Add a header to the email (for example, <code class="literal">X-Sent-From: JBoss Seam</code>
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">name</code> — The name of the header to add (e.g. <code class="literal">X-Sent-From</code>).
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">value</code> — The value of the header to add (e.g. <code class="literal">JBoss Seam</code>).
+							</div></li></ul></div></dd><dt><span class="term">&lt;m:attachment&gt;</span></dt><dd><div class="para">
+						Add an attachment to the email.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">value</code> — The file to attach:
+							</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+										<code class="literal">String</code> — A <code class="literal">String</code> is interpreted as a path to file within the classpath
+									</div></li><li class="listitem"><div class="para">
+										<code class="literal">java.io.File</code> — An EL expression can reference a <code class="literal">File</code> object
+									</div></li><li class="listitem"><div class="para">
+										<code class="literal">java.net.URL</code> — An EL expression can reference a <code class="literal">URL</code> object
+									</div></li><li class="listitem"><div class="para">
+										<code class="literal">java.io.InputStream</code> — An EL expression can reference an <code class="literal">InputStream</code>. In this case both a <code class="literal">fileName</code> and a <code class="literal">contentType</code> must be specified.
+									</div></li><li class="listitem"><div class="para">
+										<code class="literal">byte[]</code> — An EL expression can reference an <code class="literal">byte[]</code>. In this case both a <code class="literal">fileName</code> and a <code class="literal">contentType</code> must be specified.
+									</div></li></ul></div><div class="para">
+								If the value attribute is ommitted:
+							</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+										If this tag contains a <code class="literal">&lt;p:document&gt;</code> tag, the document described will be generated and attached to the email. A <code class="literal">fileName</code> should be specfied.
+									</div></li><li class="listitem"><div class="para">
+										If this tag contains other JSF tags a HTML document will be generated from them and attached to the email. A <code class="literal">fileName</code> should be specfied.
+									</div></li></ul></div></li><li class="listitem"><div class="para">
+								<code class="literal">fileName</code> — Specify the file name to use for the attached file.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">contentType</code> — Specify the MIME type of the attached file
+							</div></li></ul></div></dd><dt><span class="term">&lt;m:subject&gt;</span></dt><dd><div class="para">
+						Set's the subject for the email.
+					</div></dd><dt><span class="term">&lt;m:body&gt;</span></dt><dd><div class="para">
+						Set's the body for the email. Supports an <code class="literal">alternative</code> facet which, if an HTML email is generated can contain alternative text for a mail reader which doesn't support html.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">type</code> — If set to <code class="literal">plain</code> then a plain text email will be generated otherwise an HTML email is generated.
+							</div></li></ul></div></dd></dl></div></div></div><div xml:lang="en-US" class="chapter" title="Chapter 17. Asynchronicity and messaging" lang="en-US"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Asynchronicity_and_messaging">Chapter 17. Asynchronicity and messaging</h2></div></div></div><div class="toc"><dl><dt><span class="sect1"><a href="#Seam_Reference_Guide-Asynchronicity_and_messaging-Asynchronicity">17.1. Asynchronicity</a></span></dt><dd><dl><dt><span class="sect2"><a href="#Seam_Reference_Guide-Asynchronicity-Asynchronous_methods">17.1.1. Asynchronous methods</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Asynchronicity-Asynchronous_events">17.1.2. Asynchronous events</a></span></dt></dl></dd><dt><span class="sect1"><a href="#Seam_Reference_Guide-Asynchronicity_and_messaging-Messaging_in_Seam">17.2. Messaging in Seam</a></span></dt><dd><dl><dt><span class="sect2"><a href="#Seam_Reference_Guide-Messagin!
 g_in_Seam-Configuration">17.2.1. Configuration</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Messaging_in_Seam-Sending_messages">17.2.2. Sending messages</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Messaging_in_Seam-Receiving_messages_using_a_message_driven_bean">17.2.3. Receiving messages using a message-driven bean</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Messaging_in_Seam-Receiving_messages_in_the_client">17.2.4. Receiving messages in the client</a></span></dt></dl></dd></dl></div><div class="para">
+		Seam makes it very easy to perform work asynchronously from a web request. When most people think of asynchronicity in Java EE, they think of using JMS. This is certainly one way to approach the problem in Seam, and is the right way when you have strict and well-defined quality of service requirements. Seam makes it easy to send and recieve JMS messages using Seam components.
+	</div><div class="para">
+		But for many usecases, JMS is overkill. Seam layers a simple asynchronous method and event facility over the EJB 3.0 timer service.
+	</div><div class="sect1" title="17.1. Asynchronicity"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Asynchronicity_and_messaging-Asynchronicity" class="title">Asynchronicity</h1></div></div></div><div class="para">
+		Asynchronous events and method calls have the same quality of service expectations as the container's EJB timer service. If you are not familiar with the Timer service, do not worry, you do not need to interact with it directly if you want to use asynchronous methods in Seam.
+	</div><div class="para">
+		To use asynchronous methods and events, you need to add the following line to <code class="literal">components.xml</code>:
+	</div><pre class="programlisting">&lt;core:dispatcher/&gt;
+</pre><div class="para">
+		Note that this functionality is not available in environments which do not support EJB 3.0.
+	</div><div class="sect2" title="17.1.1. Asynchronous methods"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Asynchronicity-Asynchronous_methods" class="title">Asynchronous methods</h1></div></div></div><div class="para">
+		In simplest form, an asynchronous call just lets a method call be processed asynchronously (in a different thread) from the caller. We usually use an asynchronous call when we want to return an immediate response to the client, and let some expensive work be processed in the background. This pattern works very well in applications which use AJAX, where the client can automatically poll the server for the result of the work.
+	</div><div class="para">
+		For EJB components, we annotate the local interface to specify that a method is processed asynchronously.
+	</div><pre class="programlisting">@Local
+public interface PaymentHandler
+{
+    @Asynchronous
+    public void processPayment(Payment payment);
+}
+</pre><div class="para">
+		(For JavaBean components we can annotate the component implementation class if we like.)
+	</div><div class="para">
+		The use of asynchronicity is transparent to the bean class:
+	</div><pre class="programlisting">@Stateless
+ at Name("paymentHandler")
+public class PaymentHandlerBean implements PaymentHandler
+{
+    public void processPayment(Payment payment)
+    {
+        //do some work!
+    }
+}
+</pre><div class="para">
+		And also transparent to the client:
+	</div><pre class="programlisting">@Stateful
+ at Name("paymentAction")
+public class CreatePaymentAction
+{
+    @In(create=true) PaymentHandler paymentHandler;
+    @In Bill bill;
+    
+    public String pay()
+    {
+        paymentHandler.processPayment( new Payment(bill) );
+        return "success";
+    }
+}
+</pre><div class="para">
+		The asynchronous method is processed in a completely new event context and does not have access to the session or conversation context state of the caller. However, the business process context <span class="emphasis"><em>is</em></span> propagated.
+	</div><div class="para">
+		Asynchronous method calls may be scheduled for later execution using the <code class="literal">@Duration</code>, <code class="literal">@Expiration</code> and <code class="literal">@IntervalDuration</code> annotations.
+	</div><pre class="programlisting">@Local
+public interface PaymentHandler
+{
+    @Asynchronous
+    public void processScheduledPayment(Payment payment, @Expiration Date date);
+
+    @Asynchronous
+    public void processRecurringPayment(Payment payment, @Expiration Date date, 
+      @IntervalDuration Long interval)'
+}
+</pre><pre class="programlisting">@Stateful
+ at Name("paymentAction")
+public class CreatePaymentAction
+{
+    @In(create=true) PaymentHandler paymentHandler;
+    @In Bill bill;
+    
+    public String schedulePayment()
+    {
+        paymentHandler.processScheduledPayment( new Payment(bill), bill.getDueDate() );
+        return "success";
+    }
+
+    public String scheduleRecurringPayment()
+    {
+        paymentHandler.processRecurringPayment( new Payment(bill), bill.getDueDate(), ONE_MONTH );
+        return "success";
+    }
+}
+</pre><div class="para">
+		Both client and server may access the <code class="literal">Timer</code> object associated with the invocation.
+	</div><pre class="programlisting">@Local
+public interface PaymentHandler
+{
+    @Asynchronous
+    public Timer processScheduledPayment(Payment payment, @Expiration Date date);
+}
+</pre><pre class="programlisting">@Stateless
+ at Name("paymentHandler")
+public class PaymentHandlerBean implements PaymentHandler
+{
+    @In Timer timer;
+    
+    public Timer processScheduledPayment(Payment payment, @Expiration Date date)
+    {
+        //do some work!
+        
+        return timer; //note that return value is completely ignored
+    }
+
+}
+</pre><pre class="programlisting">@Stateful
+ at Name("paymentAction")
+public class CreatePaymentAction
+{
+    @In(create=true) PaymentHandler paymentHandler;
+    @In Bill bill;
+    
+    public String schedulePayment()
+    {
+        Timer timer = paymentHandler.processScheduledPayment( new Payment(bill), bill.getDueDate() );
+        return "success";
+    }
+}
+</pre><div class="para">
+		Asynchronous methods cannot return any other value to the caller.
+	</div></div><div class="sect2" title="17.1.2. Asynchronous events"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Asynchronicity-Asynchronous_events" class="title">Asynchronous events</h1></div></div></div><div class="para">
+		Component-driven events may also be asynchronous. To raise an event for asynchronous processing, simply call the <code class="literal">raiseAsynchronousEvent()</code> methods of the <code class="literal">Events</code> class. To schedule a timed event, call one of the <code class="literal">raiseTimedEvent()</code> methods. Components may observe asynchronous events in the usual way, but remember that only the business process context is propagated to the asynchronous thread.
+	</div></div></div><div class="sect1" title="17.2. Messaging in Seam"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Asynchronicity_and_messaging-Messaging_in_Seam" class="title">Messaging in Seam</h1></div></div></div><div class="para">
+		Seam makes it easy to send and receive JMS messages to and from Seam components.
+	</div><div class="sect2" title="17.2.1. Configuration"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Messaging_in_Seam-Configuration" class="title">Configuration</h1></div></div></div><div class="para">
+		To configure Seam's infrastructure for sending JMS messages, you need to tell Seam about any topics and queues you want to send messages to, and also tell Seam where to find the <code class="literal">QueueConnectionFactory</code> and/or <code class="literal">TopicConnectionFactory</code>.
+	</div><div class="para">
+		Seam defaults to using <code class="literal">UIL2ConnectionFactory</code> which is the usual connection factory for use with JBossMQ. If you are using some other JMS provider, you need to set one or both of <code class="literal">queueConnection.queueConnectionFactoryJndiName</code> and <code class="literal">topicConnection.topicConnectionFactoryJndiName</code> in <code class="literal">seam.properties</code>, <code class="literal">web.xml</code> or <code class="literal">components.xml</code>.
+	</div><div class="para">
+		You also need to list topics and queues in <code class="literal">components.xml</code> to install Seam managed <code class="literal">TopicPublisher</code>s and <code class="literal">QueueSender</code>s:
+	</div><pre class="programlisting">
+&lt;jms:managed-topic-publisher name="stockTickerPublisher" 
+                   auto-create="true  topic-jndi-name="topic/stockTickerTopic"/&gt;
+
+&lt;jms:managed-queue-sender name="paymentQueueSender" auto-create="true" 
+    queue-jndi-name="queue/paymentQueue"/&gt;
+</pre><div class="formalpara"><h5 class="formalpara" id="id2652336">Using JBoss Messaging</h5>
+			For using JBoss Messaging which comes with JBoss Enterprise Application Platform 4.3, you should first set the value of the properties '<code class="literal">queueConnection.queueConnectionFactoryJndiName</code>' and '<code class="literal">topicConnection.topicConnectionFactoryJndiName</code>' to '<code class="literal">ConnectionFactory</code>' which is the default connection factory for JBoss Messaging. Then set the value of the '<code class="literal">connectionProvider</code>' property to '<code class="literal">org.jboss.seam.remoting.messaging.JBossMessagingConnectionProvider</code>' on the class component '<code class="literal">org.jboss.seam.remoting.messaging.SubscriptionRegistry</code>', which creates topic connections for jboss messaging. 
+<pre class="programlisting">
+&lt;component name="org.jboss.seam.jms.topicConnection"&gt;
+	&lt;property name="topicConnectionFactoryJndiName"&gt;
+	ConnectionFactory
+	&lt;/property&gt;
+&lt;/component&gt;
+&lt;component class="org.jboss.seam.remoting.messaging.SubscriptionRegistry" installed="true"&gt;
+	&lt;property name="allowedTopics"&gt;
+	chatroomTopic
+	&lt;/property&gt;
+	&lt;property name="connectionProvider"&gt;
+	org.jboss.seam.remoting.messaging.JBossMessagingConnectionProvider
+	&lt;/property&gt;
+&lt;/component&gt;
+</pre>
+			 You also need to update the topics to use JBoss Messaging as shown in the code fragment below. 
+<pre class="programlisting">
+&lt;server&gt;
+	&lt;mbean code="org.jboss.jms.server.destination.TopicService"
+               name="jboss.messaging.destination:service=Topic,name=chatroomTopic"
+                                            xmbean-dd="xmdesc/Topic-xmbean.xml"&gt;
+		&lt;depends optional-attribute-name="ServerPeer"&gt;
+		jboss.messaging:service=ServerPeer
+		&lt;/depends&gt;
+		&lt;depends&gt;
+		jboss.messaging:service=PostOffice
+		&lt;/depends&gt;
+		&lt;attribute name="SecurityConfig"&gt;
+			&lt;security&gt;
+			  &lt;role name="guest" read="true" write="true"/&gt;
+			  &lt;role name="publisher" read="true" write="true" create="false"/&gt;
+			  &lt;role name="durpublisher" read="true" write="true" create="true"/&gt;
+			&lt;/security&gt;
+		&lt;/attribute&gt;
+	&lt;/mbean&gt;
+&lt;/server&gt;
+</pre>
+		</div></div><div class="sect2" title="17.2.2. Sending messages"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Messaging_in_Seam-Sending_messages" class="title">Sending messages</h1></div></div></div><div class="para">
+		Now, you can inject a JMS <code class="literal">TopicPublisher</code> and <code class="literal">TopicSession</code> into any component:
+	</div><pre class="programlisting">@In 
+private TopicPublisher stockTickerPublisher;   
+ at In 
+private TopicSession topicSession;
+
+public void publish(StockPrice price) {
+      try
+      {
+         topicPublisher.publish( topicSession.createObjectMessage(price) );
+      } 
+      catch (Exception ex)
+      {
+         throw new RuntimeException(ex);
+      } 
+}
+</pre><div class="para">
+		Or, for working with a queue:
+	</div><pre class="programlisting">@In
+private QueueSender paymentQueueSender;   
+ at In
+private QueueSession queueSession;
+
+public void publish(Payment payment) {
+      try
+      {
+         paymentQueueSender.send( queueSession.createObjectMessage(payment) );
+      } 
+      catch (Exception ex)
+      {
+         throw new RuntimeException(ex);
+      } 
+}
+</pre></div><div class="sect2" title="17.2.3. Receiving messages using a message-driven bean"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Messaging_in_Seam-Receiving_messages_using_a_message_driven_bean" class="title">Receiving messages using a message-driven bean</h1></div></div></div><div class="para">
+		You can process messages using any EJB3 message driven bean. Message-driven beans may even be Seam components, in which case it is possible to inject other event and application scoped Seam components.
+	</div></div><div class="sect2" title="17.2.4. Receiving messages in the client"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Messaging_in_Seam-Receiving_messages_in_the_client" class="title">Receiving messages in the client</h1></div></div></div><div class="para">
+		Seam Remoting lets you subscribe to a JMS topic from client-side JavaScript. This is described in the next chapter.
+	</div></div></div></div><div xml:lang="en-US" class="chapter" title="Chapter 18. Caching" lang="en-US"><div class="titlepage"><div><div><h2 class="title" id="cache">Chapter 18. Caching</h2></div></div></div><div class="toc"><dl><dt><span class="section"><a href="#id2685440">18.1. Using JBossCache in Seam</a></span></dt><dt><span class="section"><a href="#id2813050">18.2. Page fragment caching</a></span></dt></dl></div><div class="para">
+		In almost all enterprise applications, the database is the primary bottleneck, and the least scalable tier of the runtime environment. So anything we can possibly do to share the database <span class="emphasis"><em>less often</em></span> is worth doing.
+	</div><div class="para">
+		This calls for a cache. Well, not just one cache. A well designed Seam application will feature a rich, multi-layered caching strategy that impacts every layer of the application:
+	</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+				The database has its own cache. This is particularly important, but cannot scale like a cache in the application tier.
+			</div></li><li class="listitem"><div class="para">
+				Your ORM solution (Hibernate, or some other JPA implementation) has a second-level cache of data from the database. This is a very powerful capability, but is often misused. In a clustered environment, keeping the data in the cache transactionally consistent across the whole cluster, and with the database, is quite expensive. It makes most sense for data which is shared between many users, and is updated rarely. 
+			</div></li><li class="listitem"><div class="para">
+				The Seam conversation context is a cache of conversational state. Components you put into the conversation context can hold and cache state relating to the current user interaction.
+			</div></li><li class="listitem"><div class="para">
+				In particular, the Seam-managed persistence context (or an extended EJB container-managed persistence context associated with a conversation-scoped stateful session bean) acts as a cache of data that has been read in the current conversation. This cache tends to have a pretty high hitrate. Seam optimizes the replication of Seam-managed persistence contexts in a clustered environment, and there is no requirement for transactional consistency with the database (optimistic locking is sufficient) so you do not need to worry too much about the performance implications of this cache, unless you read thousands of objects into a single persistence context.
+			</div></li><li class="listitem"><div class="para">
+				The application can cache non-transactional state in the Seam application context. State kept in the application context is of course not visible to other nodes in the cluster.
+			</div></li><li class="listitem"><div class="para">
+				The application can cache transactional state using the Seam <code class="literal">pojoCache</code> component, which integrates JBossCache into the Seam environment. This state will be visible to other nodes if you run JBoss cache in a clustered mode.
+			</div></li><li class="listitem"><div class="para">
+				Finally, Seam lets you cache rendered fragments of a JSF page. Unlike the ORM second-level cache, this cache is not automatically invalidated when data changes, so you need to write application code to perform explicit invalidation, or set appropriate expiration policies.
+			</div></li></ul></div><div class="para">
+		For more information about the second-level cache, you will need to refer to the documentation of your ORM solution, since this is an extremely complex topic. In this section we will discuss the use of JBossCache directly, via the <code class="literal">pojoCache</code> component, or as the page fragment cache, via the <code class="literal">&lt;s:cache&gt;</code> control.
+	</div><div class="section" title="18.1. Using JBossCache in Seam"><div class="titlepage"><div><div><h2 class="title" id="id2685440">18.1. Using JBossCache in Seam</h2></div></div></div><div class="para">
+			The built-in <code class="literal">pojoCache</code> component manages an instance of <code class="literal">org.jboss.cache.aop.PojoCache</code>. You can safely put any immutable Java object in the cache, and it will be replicated across the cluster (assuming that replication is enabled). If you want to keep mutable objects in the cache, you will need to run the JBoss Cache bytecode preprocessor to ensure that changes to the objects will be automatically detected and replicated.
+		</div><div class="para">
+			To use <code class="literal">pojoCache</code>, all you need to do is put the JBossCache jars in the classpath, and provide a resource named <code class="literal">treecache.xml</code> with an appropriate cache configuration. JBoss Cache has many scary and confusing configuration settings, so we won't discuss them here. Please refer to the JBoss Cache documentation for more information.
+		</div><div class="para">
+			You can find a sample <code class="literal">treecache.xml</code> in <code class="literal">examples/blog/resources/treecache.xml</code>.
+		</div><div class="para">
+			For an EAR deployment of Seam, we recommend that the JBoss Cache jars and configuration go directly into the EAR. Make sure you place both <code class="literal">jboss-cache.jar</code> and <code class="literal">jgroups.jar</code> in your EAR's lib folder.
+		</div><div class="para">
+			Now you can inject the cache into any Seam component:
+		</div><pre class="programlisting JAVA">@Name("chatroom")
+public class Chatroom {
+    @In PojoCache pojoCache;
+    
+    public void join(String username) {
+      try
+      {
+         Set&lt;String&gt; userList = (Set&lt;String&gt;) pojoCache.get("chatroom", "userList");
+         if (userList==null) 
+         {
+            userList = new HashSet&lt;String&gt;();
+            pojoCache.put("chatroom", "userList", userList);
+         }
+         userList.put(username);
+      }
+      catch (CacheException ce)
+      {
+         throw new RuntimeException(ce);
+      }
+    }
+}
+</pre><div class="para">
+			If you want to have multiple JBoss Cache configurations in your application, use <code class="literal">components.xml</code>:
+		</div><pre class="programlisting JAVA">&lt;core:pojo-cache name="myCache" cfg-resource-name="myown/cache.xml"/&gt;
+</pre></div><div class="section" title="18.2. Page fragment caching"><div class="titlepage"><div><div><h2 class="title" id="id2813050">18.2. Page fragment caching</h2></div></div></div><div class="para">
+			The most interesting use of JBoss Cache is the <code class="literal">&lt;s:cache&gt;</code> tag, Seam's solution to the problem of page fragment caching in JSF. <code class="literal">&lt;s:cache&gt;</code> uses <code class="literal">pojoCache</code> internally, so you need to follow the steps listed above before you can use it. 
+		</div><div class="para">
+			<code class="literal">&lt;s:cache&gt;</code> is used for caching some rendered content which changes rarely. For example, the welcome page of our blog displays the recent blog entries:
+		</div><pre class="programlisting XHTML">&lt;s:cache key="recentEntries-#{blog.id}" region="welcomePageFragments"&gt;
+   &lt;h:dataTable value="#{blog.recentEntries}" var="blogEntry"&gt;
+      &lt;h:column&gt;
+         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;
+         &lt;div&gt;
+            &lt;s:formattedText value="#{blogEntry.body}"/&gt;
+         &lt;/div&gt;
+      &lt;/h:column&gt;
+   &lt;/h:dataTable&gt;
+&lt;/s:cache&gt;
+</pre><div class="para">
+			The <code class="literal">key</code> will let you have multiple cached versions of each page fragment. In this case, there is one cached version per blog. The <code class="literal">region</code> determines the JBossCache node that all version will be stored in. Different nodes may have different expiry policies (setup during the previous steps). 
+		</div><div class="para">
+			The issue with the <code class="literal">&lt;s:cache&gt;</code> tag is that it is unable to recognize when the underlying data changes (for example, when the blogger posts a new entry). So you need to evict the cached fragment manually:
+		</div><pre class="programlisting JAVA">public void post() {
+    ...
+    entityManager.persist(blogEntry);
+    pojoCache.remove("welcomePageFragments", "recentEntries-" + blog.getId() );
+}
+</pre><div class="para">
+			Alternatively, if it is not critical that changes are immediately visible to the user, you could set a short expiry time on the JbossCache node.
+		</div></div></div><div xml:lang="en-US" class="chapter" title="Chapter 19. Remoting" lang="en-US"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Remoting">Chapter 19. Remoting</h2></div></div></div><div class="toc"><dl><dt><span class="sect1"><a href="#Seam_Reference_Guide-Remoting-Configuration">19.1. Configuration</a></span></dt><dt><span class="sect1"><a href="#Seam_Reference_Guide-Remoting-The_Seam_object">19.2. The "Seam" object</a></span></dt><dd><dl><dt><span class="sect2"><a href="#Seam_Reference_Guide-The_Seam_object-A_Hello_World_example">19.2.1. A Hello World example</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-The_Seam_object-Seam.Component">19.2.2. Seam.Component</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-The_Seam_object-Seam.Remoting">19.2.3. Seam.Remoting</a></span></dt></dl></dd><dt><span class="sect1"><a href="#Seam_Reference_Guide-Remoting-Client_Interfaces">19.3. Client!
  Interfaces</a></span></dt><dt><span class="sect1"><a href="#Seam_Reference_Guide-Remoting-The_Context">19.4. The Context</a></span></dt><dd><dl><dt><span class="sect2"><a href="#Seam_Reference_Guide-The_Context-Setting_and_reading_the_Conversation_ID">19.4.1. Setting and reading the Conversation ID</a></span></dt></dl></dd><dt><span class="sect1"><a href="#Seam_Reference_Guide-Remoting-Batch_Requests">19.5. Batch Requests</a></span></dt><dt><span class="sect1"><a href="#Seam_Reference_Guide-Remoting-Working_with_Data_types">19.6. Working with Data types</a></span></dt><dd><dl><dt><span class="sect2"><a href="#Seam_Reference_Guide-Working_with_Data_types-Primitives__Basic_Types">19.6.1. Primitives / Basic Types</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Working_with_Data_types-JavaBeans">19.6.2. JavaBeans</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Working_with_Data_types-Dates_and_Times">19.6.3. Dates and Times</a></span!
 ></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-W!
 orking_w
ith_Data_types-Enums">19.6.4. Enums</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Working_with_Data_types-Collections">19.6.5. Collections</a></span></dt></dl></dd><dt><span class="sect1"><a href="#Seam_Reference_Guide-Remoting-Debugging">19.7. Debugging</a></span></dt><dt><span class="sect1"><a href="#Seam_Reference_Guide-Remoting-The_Loading_Message">19.8. The Loading Message</a></span></dt><dd><dl><dt><span class="sect2"><a href="#Seam_Reference_Guide-The_Loading_Message-Changing_the_message">19.8.1. Changing the message</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-The_Loading_Message-Hiding_the_loading_message">19.8.2. Hiding the loading message</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-The_Loading_Message-A_Custom_Loading_Indicator">19.8.3. A Custom Loading Indicator</a></span></dt></dl></dd><dt><span class="sect1"><a href="#Seam_Reference_Guide-Remoting-Controlling_what_data_is_returned">19.9.!
  Controlling what data is returned</a></span></dt><dd><dl><dt><span class="sect2"><a href="#Seam_Reference_Guide-Controlling_what_data_is_returned-Constraining_normal_fields">19.9.1. Constraining normal fields</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Controlling_what_data_is_returned-Constraining_Maps_and_Collections">19.9.2. Constraining Maps and Collections</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Controlling_what_data_is_returned-Constraining_objects_of_a_specific_type">19.9.3. Constraining objects of a specific type</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Controlling_what_data_is_returned-Combining_Constraints">19.9.4. Combining Constraints</a></span></dt></dl></dd><dt><span class="sect1"><a href="#Seam_Reference_Guide-Remoting-JMS_Messaging">19.10. JMS Messaging</a></span></dt><dd><dl><dt><span class="sect2"><a href="#Seam_Reference_Guide-JMS_Messaging-Configuration">19.10.1. Config!
 uration</a></span></dt><dt><span class="sect2"><a href="#Seam_!
 Referenc
e_Guide-JMS_Messaging-Subscribing_to_a_JMS_Topic">19.10.2. Subscribing to a JMS Topic</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-JMS_Messaging-Unsubscribing_from_a_Topic">19.10.3. Unsubscribing from a Topic</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-JMS_Messaging-Tuning_the_Polling_Process">19.10.4. Tuning the Polling Process</a></span></dt></dl></dd></dl></div><div class="para">
+		Seam provides a convenient method of remotely accessing components from a web page, using AJAX (Asynchronous Javascript and XML). The framework for this functionality is provided with almost no up-front development effort - your components only require simple annotating to become accessible via AJAX. This chapter describes the steps required to build an AJAX-enabled web page, then goes on to explain the features of the Seam Remoting framework in more detail.
+	</div><div class="sect1" title="19.1. Configuration"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Remoting-Configuration" class="title">Configuration</h1></div></div></div><div class="para">
+		To use remoting, the Seam Resource servlet must first be configured in your <code class="literal">web.xml</code> file:
+	</div><pre class="programlisting">
+          
+  &lt;servlet&gt;
+    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;
+    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-class&gt;
+  &lt;/servlet&gt;
+
+  &lt;servlet-mapping&gt;
+    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;
+    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;
+  &lt;/servlet-mapping&gt;
+</pre><div class="para">
+		The next step is to import the necessary Javascript into your web page. There are a minimum of two scripts that must be imported. The first one contains all the client-side framework code that enables remoting functionality:
+	</div><pre class="programlisting">
+          
+  &lt;script type="text/javascript" src="seam/resource/remoting/resource/remote.js"&gt;&lt;/script&gt;
+</pre><div class="para">
+		The second script contains the stubs and type definitions for the components you wish to call. It is generated dynamically based on the local interface of your components, and includes type definitions for all of the classes that can be used to call the remotable methods of the interface. The name of the script reflects the name of your component. For example, if you have a stateless session bean annotated with <code class="literal">@Name("customerAction")</code>, then your script tag should look like this:
+	</div><pre class="programlisting">
+          
+  &lt;script type="text/javascript" src="seam/resource/remoting/interface.js?customerAction"&gt;
+    &lt;/script&gt;
+</pre><div class="para">
+		If you wish to access more than one component from the same page, then include them all as parameters of your script tag:
+	</div><pre class="programlisting">
+          
+  &lt;script type="text/javascript" 
+     src="seam/resource/remoting/interface.js?customerAction&amp;accountAction"&gt;
+  &lt;/script&gt;
+</pre></div><div class="sect1" title="19.2. The &quot;Seam&quot; object"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Remoting-The_Seam_object" class="title">The "Seam" object</h1></div></div></div><div class="para">
+		Client-side interaction with your components is all performed via the <code class="literal">Seam</code> Javascript object. This object is defined in <code class="literal">remote.js</code>, and you will be using it to make asynchronous calls against your component. It is split into two areas of functionality; <code class="literal">Seam.Component</code> contains methods for working with components and <code class="literal">Seam.Remoting</code> contains methods for executing remote requests. The easiest way to become familiar with this object is to start with a simple example.
+	</div><div class="sect2" title="19.2.1. A Hello World example"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-The_Seam_object-A_Hello_World_example" class="title">A Hello World example</h1></div></div></div><div class="para">
+		Let us step through a simple example to see how the <code class="literal">Seam</code> object works. First of all, let us create a new Seam component called <code class="literal">helloAction</code>.
+	</div><pre class="programlisting">
+          
+  @Stateless
+  @Name("helloAction")
+  public class HelloAction implements HelloLocal {
+    public String sayHello(String name) {
+      return "Hello, " + name;
+    }
+  }
+</pre><div class="para">
+		You also need to create a local interface for our new component - take special note of the <code class="literal">@WebRemote</code> annotation, as it is required to make our method accessible via remoting:
+	</div><pre class="programlisting">
+          
+  @Local
+  public interface HelloLocal {
+    @WebRemote
+    public String sayHello(String name);
+  }
+</pre><div class="para">
+		That is all the server-side code we need to write. Now for our web page - create a new page and import the following scripts:
+	</div><pre class="programlisting">
+          
+  &lt;script type="text/javascript" src="seam/resource/remoting/resource/remote.js"&gt;&lt;/script&gt;
+  &lt;script type="text/javascript" src="seam/resource/remoting/interface.js?helloAction"&gt;&lt;/script&gt;
+</pre><div class="para">
+		To make this a fully interactive user experience, let us add a button to our page:
+	</div><pre class="programlisting">
+          
+  &lt;button onclick="javascript:sayHello()"&gt;Say Hello&lt;/button&gt;
+</pre><div class="para">
+		We will also need to add some more script to make our button actually do something when it is clicked:
+	</div><pre class="programlisting">
+          
+  &lt;script type="text/javascript"&gt;
+    //&lt;![CDATA[
+
+    function sayHello() {
+      var name = prompt("What is your name?");
+      Seam.Component.getInstance("helloAction").sayHello(name, sayHelloCallback);
+    }
+
+    function sayHelloCallback(result) {
+      alert(result);
+    }
+
+    // ]]&gt;
+  &lt;/script&gt;
+</pre><div class="para">
+		Now deploy your application and browse to your page. Click the button, and enter a name when prompted. A message box will display the hello message confirming that the call was successful. If you want to save some time, you will find the full source code for this Hello World example in Seam's <code class="literal">/examples/remoting/helloworld</code> directory.
+	</div><div class="para">
+		So what does the code of our script actually do? Let us break it down into smaller pieces. To start with, you can see from the Javascript code listing that we have implemented two methods - the first method is responsible for prompting the user for their name and then making a remote request. Take a look at the following line:
+	</div><pre class="programlisting">
+  Seam.Component.getInstance("helloAction").sayHello(name, sayHelloCallback);
+</pre><div class="para">
+		The first section of this line, <code class="literal">Seam.Component.getInstance("helloAction")</code> returns a proxy, or "stub" for our <code class="literal">helloAction</code> component. We can invoke the methods of our component against this stub, which is exactly what happens with the remainder of the line: <code class="literal">sayHello(name, sayHelloCallback);</code>.
+	</div><div class="para">
+		What this line of code in its completeness does, is invoke the <code class="literal">sayHello</code> method of our component, passing in <code class="literal">name</code> as a parameter. The second parameter, <code class="literal">sayHelloCallback</code> is not a parameter of our component's <code class="literal">sayHello</code> method, instead it tells the Seam Remoting framework that once it receives the response to our request, it should pass it to the <code class="literal">sayHelloCallback</code> Javascript method. This callback parameter is entirely optional, so feel free to leave it out if you are calling a method with a <code class="literal">void</code> return type or if you do not care about the result.
+	</div><div class="para">
+		The <code class="literal">sayHelloCallback</code> method, once receiving the response to our remote request then pops up an alert message displaying the result of our method call.
+	</div></div><div class="sect2" title="19.2.2. Seam.Component"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-The_Seam_object-Seam.Component" class="title">Seam.Component</h1></div></div></div><div class="para">
+		The <code class="literal">Seam.Component</code> Javascript object provides a number of client-side methods for working with your Seam components. The two main methods, <code class="literal">newInstance()</code> and <code class="literal">getInstance()</code> are documented in the following sections however their main difference is that <code class="literal">newInstance()</code> will always create a new instance of a component type, and <code class="literal">getInstance()</code> will return a singleton instance.
+	</div><div class="sect3" title="19.2.2.1. Seam.Component.newInstance()"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam.Component-Seam.Component.newInstance" class="title">Seam.Component.newInstance()</h1></div></div></div><div class="para">
+		Use this method to create a new instance of an entity or Javabean component. The object returned by this method will have the same getter/setter methods as its server-side counterpart, or alternatively if you wish you can access its fields directly. Take the following Seam entity component for example:
+	</div><pre class="programlisting">
+  @Name("customer")
+  @Entity
+  public class Customer implements Serializable
+  {
+    private Integer customerId;
+    private String firstName;
+    private String lastName;
+    
+    @Column public Integer getCustomerId() { 
+      return customerId; 
+    }
+    
+    public void setCustomerId(Integer customerId} { 
+      this.customerId = customerId; 
+    }
+    
+    @Column public String getFirstName() { 
+      return firstName; 
+    }
+    
+    public void setFirstName(String firstName) {
+      this.firstName = firstName; 
+    }
+    
+    @Column public String getLastName() {
+      return lastName;
+    }
+    
+    public void setLastName(String lastName) {
+      this.lastName = lastName;
+    }
+  }
+</pre><div class="para">
+		To create a client-side Customer you would write the following code:
+	</div><pre class="programlisting">
+  var customer = Seam.Component.newInstance("customer");
+</pre><div class="para">
+		Then from here you can set the fields of the customer object:
+	</div><pre class="programlisting">
+  customer.setFirstName("John");
+  // Or you can set the fields directly
+  customer.lastName = "Smith";
+</pre></div><div class="sect3" title="19.2.2.2. Seam.Component.getInstance()"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam.Component-Seam.Component.getInstance" class="title">Seam.Component.getInstance()</h1></div></div></div><div class="para">
+		The <code class="literal">getInstance()</code> method is used to get a reference to a Seam session bean component stub, which can then be used to remotely execute methods against your component. This method returns a singleton for the specified component, so calling it twice in a row with the same component name will return the same instance of the component.
+	</div><div class="para">
+		To continue our example from before, if we have created a new <code class="literal">customer</code> and we now wish to save it, we would pass it to the <code class="literal">saveCustomer()</code> method of our <code class="literal">customerAction</code> component:
+	</div><pre class="programlisting">
+  Seam.Component.getInstance("customerAction").saveCustomer(customer);
+</pre></div><div class="sect3" title="19.2.2.3. Seam.Component.getComponentName()"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam.Component-Seam.Component.getComponentName" class="title">Seam.Component.getComponentName()</h1></div></div></div><div class="para">
+		Passing an object into this method will return its component name if it is a component, or <code class="literal">null</code> if it is not.
+	</div><pre class="programlisting">
+  if (Seam.Component.getComponentName(instance) == "customer")
+    alert("Customer");
+  else if (Seam.Component.getComponentName(instance) == "staff")
+    alert("Staff member");
+</pre></div></div><div class="sect2" title="19.2.3. Seam.Remoting"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-The_Seam_object-Seam.Remoting" class="title">Seam.Remoting</h1></div></div></div><div class="para">
+		Most of the client side functionality for Seam Remoting is contained within the <code class="literal">Seam.Remoting</code> object. While you should not need to directly call most of its methods, there are a couple of important ones worth mentioning.
+	</div><div class="sect3" title="19.2.3.1. Seam.Remoting.createType()"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam.Remoting-Seam.Remoting.createType" class="title">Seam.Remoting.createType()</h1></div></div></div><div class="para">
+		If your application contains or uses Javabean classes that are not Seam components, you may need to create these types on the client side to pass as parameters into your component method. Use the <code class="literal">createType()</code> method to create an instance of your type. Pass in the fully qualified Java class name as a parameter:
+	</div><pre class="programlisting">
+  var widget = Seam.Remoting.createType("com.acme.widgets.MyWidget");
+</pre></div><div class="sect3" title="19.2.3.2. Seam.Remoting.getTypeName()"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam.Remoting-Seam.Remoting.getTypeName" class="title">Seam.Remoting.getTypeName()</h1></div></div></div><div class="para">
+		This method is the equivalent of <code class="literal">Seam.Component.getComponentName()</code> but for non-component types. It will return the name of the type for an object instance, or <code class="literal">null</code> if the type is not known. The name is the fully qualified name of the type's Java class.
+	</div></div></div></div><div class="sect1" title="19.3. Client Interfaces"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Remoting-Client_Interfaces" class="title">Client Interfaces</h1></div></div></div><div class="para">
+		In the configuration section above, the interface, or "stub" for our component is imported into our page via <code class="literal">seam/resource/remoting/interface.js</code>:
+	</div><pre class="programlisting">
+        
+  &lt;script type="text/javascript" src="seam/resource/remoting/interface.js?customerAction"&gt;
+  &lt;/script&gt;
+</pre><div class="para">
+		By including this script in our page, the interface definitions for our component, plus any other components or types that are required to execute the methods of our component are generated and made available for the remoting framework to use.
+	</div><div class="para">
+		There are two types of client stub that can be generated, "executable" stubs and "type" stubs. Executable stubs are behavioural, and are used to execute methods against your session bean components, while type stubs contain state and represent the types that can be passed in as parameters or returned as a result.
+	</div><div class="para">
+		The type of client stub that is generated depends on the type of your Seam component. If the component is a session bean, then an executable stub will be generated, otherwise if it is an entity or JavaBean, then a type stub will be generated. There is one exception to this rule; if your component is a JavaBean (ie it is not a session bean nor an entity bean) and any of its methods are annotated with @WebRemote, then an executable stub will be generated for it instead of a type stub. This allows you to use remoting to call methods of your JavaBean components in a non-EJB environment where you do not have access to session beans.
+	</div></div><div class="sect1" title="19.4. The Context"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Remoting-The_Context" class="title">The Context</h1></div></div></div><div class="para">
+		The Seam Remoting Context contains additional information which is sent and received as part of a remoting request/response cycle. At this stage it only contains the conversation ID but may be expanded in the future.
+	</div><div class="sect2" title="19.4.1. Setting and reading the Conversation ID"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-The_Context-Setting_and_reading_the_Conversation_ID" class="title">Setting and reading the Conversation ID</h1></div></div></div><div class="para">
+		If you intend on using remote calls within the scope of a conversation then you need to be able to read or set the conversation ID in the Seam Remoting Context. To read the conversation ID after making a remote request call <code class="literal">Seam.Remoting.getContext().getConversationId()</code>. To set the conversation ID before making a request, call <code class="literal">Seam.Remoting.getContext().setConversationId()</code>.
+	</div><div class="para">
+		If the conversation ID has not been explicitly set with <code class="literal">Seam.Remoting.getContext().setConversationId()</code>, then it will be automatically assigned the first valid conversation ID that is returned by any remoting call. If you are working with multiple conversations within your page, then you may need to explicitly set the conversation ID before each call. If you are working with just a single conversation, then you do not need to do anything special.
+	</div></div></div><div class="sect1" title="19.5. Batch Requests"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Remoting-Batch_Requests" class="title">Batch Requests</h1></div></div></div><div class="para">
+		Seam Remoting allows multiple component calls to be executed within a single request. It is recommended that this feature is used wherever it is appropriate to reduce network traffic.
+	</div><div class="para">
+		The method <code class="literal">Seam.Remoting.startBatch()</code> will start a new batch, and any component calls executed after starting a batch are queued, rather than being sent immediately. When all the desired component calls have been added to the batch, the <code class="literal">Seam.Remoting.executeBatch()</code> method will send a single request containing all of the queued calls to the server, where they will be executed in order. After the calls have been executed, a single response containining all return values will be returned to the client and the callback functions (if provided) triggered in the same order as execution.
+	</div><div class="para">
+		If you start a new batch via the <code class="literal">startBatch()</code> method but then decide you do not want to send it, the <code class="literal">Seam.Remoting.cancelBatch()</code> method will discard any calls that were queued and exit the batch mode.
+	</div><div class="para">
+		To see an example of a batch being used, take a look at <code class="literal">/examples/remoting/chatroom</code>.
+	</div></div><div class="sect1" title="19.6. Working with Data types"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Remoting-Working_with_Data_types" class="title">Working with Data types</h1></div></div></div><div class="sect2" title="19.6.1. Primitives / Basic Types"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Working_with_Data_types-Primitives__Basic_Types" class="title">Primitives / Basic Types</h1></div></div></div><div class="para">
+		This section describes the support for basic data types. On the server side these values are generally compatible with either their primitive type or their corresponding wrapper class.
+	</div><div class="sect3" title="19.6.1.1. String"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Primitives__Basic_Types-String" class="title">String</h1></div></div></div><div class="para">
+		Simply use Javascript String objects when setting String parameter values.
+	</div></div><div class="sect3" title="19.6.1.2. Number"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Primitives__Basic_Types-Number" class="title">Number</h1></div></div></div><div class="para">
+		There is support for all number types supported by Java. On the client side, number values are always serialized as their String representation and then on the server side they are converted to the correct destination type. Conversion into either a primitive or wrapper type is supported for <code class="literal">Byte</code>, <code class="literal">Double</code>, <code class="literal">Float</code>, <code class="literal">Integer</code>, <code class="literal">Long</code> and <code class="literal">Short</code> types.
+	</div></div><div class="sect3" title="19.6.1.3. Boolean"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Primitives__Basic_Types-Boolean" class="title">Boolean</h1></div></div></div><div class="para">
+		Booleans are represented client side by Javascript Boolean values, and server side by a Java boolean.
+	</div></div></div><div class="sect2" title="19.6.2. JavaBeans"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Working_with_Data_types-JavaBeans" class="title">JavaBeans</h1></div></div></div><div class="para">
+		In general these will be either Seam entity or JavaBean components, or some other non-component class. Use the appropriate method (either <code class="literal">Seam.Component.newInstance()</code> for Seam components or <code class="literal">Seam.Remoting.createType()</code> for everything else) to create a new instance of the object.
+	</div><div class="para">
+		It is important to note that only objects that are created by either of these two methods should be used as parameter values, where the parameter is not one of the other valid types mentioned anywhere else in this section. In some situations you may have a component method where the exact parameter type cannot be determined, such as:
+	</div><pre class="programlisting">
+  @Name("myAction")
+  public class MyAction implements MyActionLocal {
+    public void doSomethingWithObject(Object obj) {
+      // code
+    }
+  }
+</pre><div class="para">
+		In this case you might want to pass in an instance of your <code class="literal">myWidget</code> component, however the interface for <code class="literal">myAction</code> will not include <code class="literal">myWidget</code> as it is not directly referenced by any of its methods. To get around this, <code class="literal">MyWidget</code> needs to be explicitly imported:
+	</div><pre class="programlisting">
+                  
+  &lt;script type="text/javascript" src="seam/resource/remoting/interface.js?myAction&amp;myWidget"&gt;
+  &lt;/script&gt;
+</pre><div class="para">
+		This will then allow a <code class="literal">myWidget</code> object to be created with <code class="literal">Seam.Component.newInstance("myWidget")</code>, which can then be passed to <code class="literal">myAction.doSomethingWithObject()</code>.
+	</div></div><div class="sect2" title="19.6.3. Dates and Times"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Working_with_Data_types-Dates_and_Times" class="title">Dates and Times</h1></div></div></div><div class="para">
+		Date values are serialized into a String representation that is accurate to the millisecond. On the client side, use a Javascript Date object to work with date values. On the server side, use any <code class="literal">java.util.Date</code> (or descendent, such as <code class="literal">java.sql.Date</code> or <code class="literal">java.sql.Timestamp</code> class.
+	</div></div><div class="sect2" title="19.6.4. Enums"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Working_with_Data_types-Enums" class="title">Enums</h1></div></div></div><div class="para">
+		On the client side, enums are treated the same as Strings. When setting the value for an enum parameter, simply use the String representation of the enum. Take the following component as an example:
+	</div><pre class="programlisting">
+  @Name("paintAction")
+  public class paintAction implements paintLocal {
+    public enum Color {red, green, blue, yellow, orange, purple};
+
+    public void paint(Color color) {
+      // code
+    }    
+  }
+</pre><div class="para">
+		To call the <code class="literal">paint()</code> method with the color <code class="literal">red</code>, pass the parameter value as a String literal:
+	</div><pre class="programlisting">
+  Seam.Component.getInstance("paintAction").paint("red");
+</pre><div class="para">
+		The inverse is also true - that is, if a component method returns an enum parameter (or contains an enum field anywhere in the returned object graph) then on the client-side it will be represented as a String.
+	</div></div><div class="sect2" title="19.6.5. Collections"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Working_with_Data_types-Collections" class="title">Collections</h1></div></div></div><div class="sect3" title="19.6.5.1. Bags"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Collections-Bags" class="title">Bags</h1></div></div></div><div class="para">
+		Bags cover all collection types including arrays, collections, lists, sets, (but excluding Maps - see the next section for those), and are implemented client-side as a Javascript array. When calling a component method that accepts one of these types as a parameter, your parameter should be a Javascript array. If a component method returns one of these types, then the return value will also be a Javascript array. The remoting framework is clever enough on the server side to convert the bag to an appropriate type for the component method call.
+	</div></div><div class="sect3" title="19.6.5.2. Maps"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Collections-Maps" class="title">Maps</h1></div></div></div><div class="para">
+		As there is no native support for Maps within Javascript, a simple Map implementation is provided with the Seam Remoting framework. To create a Map which can be used as a parameter to a remote call, create a new <code class="literal">Seam.Remoting.Map</code> object:
+	</div><pre class="programlisting">
+  var map = new Seam.Remoting.Map();
+</pre><div class="para">
+		This Javascript implementation provides basic methods for working with Maps: <code class="literal">size()</code>, <code class="literal">isEmpty()</code>, <code class="literal">keySet()</code>, <code class="literal">values()</code>, <code class="literal">get(key)</code>, <code class="literal">put(key, value)</code>, <code class="literal">remove(key)</code> and <code class="literal">contains(key)</code>. Each of these methods are equivalent to their Java counterpart. Where the method returns a collection, such as <code class="literal">keySet()</code> and <code class="literal">values()</code>, a Javascript Array object will be returned that contains the key or value objects (respectively).
+	</div></div></div></div><div class="sect1" title="19.7. Debugging"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Remoting-Debugging" class="title">Debugging</h1></div></div></div><div class="para">
+		To aid in tracking down bugs, it is possible to enable a debug mode which will display the contents of all the packets send back and forth between the client and server in a popup window. To enable debug mode, either execute the <code class="literal">setDebug()</code> method in Javascript:
+	</div><pre class="programlisting">
+  Seam.Remoting.setDebug(true);
+</pre><div class="para">
+		Or configure it via components.xml:
+	</div><pre class="programlisting">&lt;remoting:remoting debug="true"/&gt;
+</pre><div class="para">
+		To turn off debugging, call <code class="literal">setDebug(false)</code>. If you want to write your own messages to the debug log, call <code class="literal">Seam.Remoting.log(message)</code>.
+	</div></div><div class="sect1" title="19.8. The Loading Message"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Remoting-The_Loading_Message" class="title">The Loading Message</h1></div></div></div><div class="para">
+		The default loading message that appears in the top right corner of the screen can be modified, its rendering customised or even turned off completely.
+	</div><div class="sect2" title="19.8.1. Changing the message"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-The_Loading_Message-Changing_the_message" class="title">Changing the message</h1></div></div></div><div class="para">
+		To change the message from the default "Please Wait..." to something different, set the value of <code class="literal">Seam.Remoting.loadingMessage</code>:
+	</div><pre class="programlisting">
+  Seam.Remoting.loadingMessage = "Loading...";
+</pre></div><div class="sect2" title="19.8.2. Hiding the loading message"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-The_Loading_Message-Hiding_the_loading_message" class="title">Hiding the loading message</h1></div></div></div><div class="para">
+		To completely suppress the display of the loading message, override the implementation of <code class="literal">displayLoadingMessage()</code> and <code class="literal">hideLoadingMessage()</code> with functions that instead do nothing:
+	</div><pre class="programlisting">
+  // do not display the loading indicator
+  Seam.Remoting.displayLoadingMessage = function() {};
+  Seam.Remoting.hideLoadingMessage = function() {};
+</pre></div><div class="sect2" title="19.8.3. A Custom Loading Indicator"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-The_Loading_Message-A_Custom_Loading_Indicator" class="title">A Custom Loading Indicator</h1></div></div></div><div class="para">
+		It is also possible to override the loading indicator to display an animated icon, or anything else that you want. To do this override the <code class="literal">displayLoadingMessage()</code> and <code class="literal">hideLoadingMessage()</code> messages with your own implementation:
+	</div><pre class="programlisting">
+  Seam.Remoting.displayLoadingMessage = function() {
+    // Write code here to display the indicator
+  };
+  
+  Seam.Remoting.hideLoadingMessage = function() {
+    // Write code here to hide the indicator
+  };
+</pre></div></div><div class="sect1" title="19.9. Controlling what data is returned"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Remoting-Controlling_what_data_is_returned" class="title">Controlling what data is returned</h1></div></div></div><div class="para">
+		When a remote method is executed, the result is serialized into an XML response that is returned to the client. This response is then unmarshaled by the client into a Javascript object. For complex types (i.e. Javabeans) that include references to other objects, all of these referenced objects are also serialized as part of the response. These objects may reference other objects, which may reference other objects, and so forth. If left unchecked, this object "graph" could potentially be enormous, depending on what relationships exist between your objects. And as a side issue (besides the potential verbosity of the response), you might also wish to prevent sensitive information from being exposed to the client.
+	</div><div class="para">
+		Seam Remoting provides a simple means to "constrain" the object graph, by specifying the <code class="literal">exclude</code> field of the remote method's <code class="literal">@WebRemote</code> annotation. This field accepts a String array containing one or more paths specified using dot notation. When invoking a remote method, the objects in the result's object graph that match these paths are excluded from the serialized result packet.
+	</div><div class="para">
+		For all our examples, we will use the following <code class="literal">Widget</code> class:
+	</div><pre class="programlisting">
+ at Name("widget")
+public class Widget
+{
+  private String value;
+  private String secret;
+  private Widget child;
+  private Map&lt;String,Widget&gt; widgetMap;
+  private List&lt;Widget&gt; widgetList;
+  
+  // getters and setters for all fields
+}
+</pre><div class="sect2" title="19.9.1. Constraining normal fields"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Controlling_what_data_is_returned-Constraining_normal_fields" class="title">Constraining normal fields</h1></div></div></div><div class="para">
+		If your remote method returns an instance of <code class="literal">Widget</code>, but you do not want to expose the <code class="literal">secret</code> field because it contains sensitive information, you would constrain it like this:
+	</div><pre class="programlisting">
+  @WebRemote(exclude = {"secret"})
+  public Widget getWidget();
+</pre><div class="para">
+		The value "secret" refers to the <code class="literal">secret</code> field of the returned object. Now, suppose that we do not care about exposing this particular field to the client. Instead, notice that the <code class="literal">Widget</code> value that is returned has a field <code class="literal">child</code> that is also a <code class="literal">Widget</code>. What if we want to hide the <code class="literal">child</code>'s <code class="literal">secret</code> value instead? We can do this by using dot notation to specify this field's path within the result's object graph:
+	</div><pre class="programlisting">
+  @WebRemote(exclude = {"child.secret"})
+  public Widget getWidget();
+</pre></div><div class="sect2" title="19.9.2. Constraining Maps and Collections"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Controlling_what_data_is_returned-Constraining_Maps_and_Collections" class="title">Constraining Maps and Collections</h1></div></div></div><div class="para">
+		The other place that objects can exist within an object graph are within a <code class="literal">Map</code> or some kind of collection (<code class="literal">List</code>, <code class="literal">Set</code>, <code class="literal">Array</code>, etc). Collections are easy, and are treated like any other field. For example, if our <code class="literal">Widget</code> contained a list of other <code class="literal">Widget</code>s in its <code class="literal">widgetList</code> field, to constrain the <code class="literal">secret</code> field of the <code class="literal">Widget</code>s in this list the annotation would look like this:
+	</div><pre class="programlisting">
+  @WebRemote(exclude = {"widgetList.secret"})
+  public Widget getWidget();
+</pre><div class="para">
+		To constrain a <code class="literal">Map</code>'s key or value, the notation is slightly different. Appending <code class="literal">[key]</code> after the <code class="literal">Map</code>'s field name will constrain the <code class="literal">Map</code>'s key object values, while <code class="literal">[value]</code> will constrain the value object values. The following example demonstrates how the values of the <code class="literal">widgetMap</code> field have their <code class="literal">secret</code> field constrained:
+	</div><pre class="programlisting">
+  @WebRemote(exclude = {"widgetMap[value].secret"})
+  public Widget getWidget();
+</pre></div><div class="sect2" title="19.9.3. Constraining objects of a specific type"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Controlling_what_data_is_returned-Constraining_objects_of_a_specific_type" class="title">Constraining objects of a specific type</h1></div></div></div><div class="para">
+		There is one last notation that can be used to constrain the fields of a type of object no matter where in the result's object graph it appears. This notation uses either the name of the component (if the object is a Seam component) or the fully qualified class name (only if the object is not a Seam component) and is expressed using square brackets:
+	</div><pre class="programlisting">
+  @WebRemote(exclude = {"[widget].secret"})
+  public Widget getWidget();
+</pre></div><div class="sect2" title="19.9.4. Combining Constraints"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Controlling_what_data_is_returned-Combining_Constraints" class="title">Combining Constraints</h1></div></div></div><div class="para">
+		Constraints can also be combined, to filter objects from multiple paths within the object graph:
+	</div><pre class="programlisting">
+  @WebRemote(exclude = {"widgetList.secret", "widgetMap[value].secret"})
+  public Widget getWidget();
+</pre></div></div><div class="sect1" title="19.10. JMS Messaging"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Remoting-JMS_Messaging" class="title">JMS Messaging</h1></div></div></div><div class="para">
+		Seam Remoting provides experimental support for JMS Messaging. This section describes the JMS support that is currently implemented, but please note that this may change in the future. It is currently not recommended that this feature is used within a production environment.
+	</div><div class="sect2" title="19.10.1. Configuration"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-JMS_Messaging-Configuration" class="title">Configuration</h1></div></div></div><div class="para">
+		Before you can subscribe to a JMS topic, you must first configure a list of the topics that can be subscribed to by Seam Remoting. List the topics under <code class="literal">org.jboss.seam.remoting.messaging.subscriptionRegistry.allowedTopics</code> in <code class="literal">seam.properties</code>, <code class="literal">web.xml</code> or <code class="literal">components.xml</code>.
+	</div><pre class="programlisting">&lt;remoting:remoting poll-timeout="5" poll-interval="1"/&gt;
+</pre></div><div class="sect2" title="19.10.2. Subscribing to a JMS Topic"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-JMS_Messaging-Subscribing_to_a_JMS_Topic" class="title">Subscribing to a JMS Topic</h1></div></div></div><div class="para">
+		The following example demonstrates how to subscribe to a JMS Topic:
+	</div><pre class="programlisting">
+  function subscriptionCallback(message)
+  {
+    if (message instanceof Seam.Remoting.TextMessage)
+      alert("Received message: " + message.getText());
+  }        
+        
+  Seam.Remoting.subscribe("topicName", subscriptionCallback);
+</pre><div class="para">
+		The <code class="literal">Seam.Remoting.subscribe()</code> method accepts two parameters, the first being the name of the JMS Topic to subscribe to, the second being the callback function to invoke when a message is received.
+	</div><div class="para">
+		There are two types of messages supported, Text messages and Object messages. If you need to test for the type of message that is passed to your callback function you can use the <code class="literal">instanceof</code> operator to test whether the message is a <code class="literal">Seam.Remoting.TextMessage</code> or <code class="literal">Seam.Remoting.ObjectMessage</code>. A <code class="literal">TextMessage</code> contains the text value in its <code class="literal">text</code> field (or alternatively call <code class="literal">getText()</code> on it), while an <code class="literal">ObjectMessage</code> contains its object value in its <code class="literal">object</code> field (or call its <code class="literal">getObject()</code> method).
+	</div></div><div class="sect2" title="19.10.3. Unsubscribing from a Topic"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-JMS_Messaging-Unsubscribing_from_a_Topic" class="title">Unsubscribing from a Topic</h1></div></div></div><div class="para">
+		To unsubscribe from a topic, call <code class="literal">Seam.Remoting.unsubscribe()</code> and pass in the topic name:
+	</div><pre class="programlisting">
+  Seam.Remoting.unsubscribe("topicName");
+</pre></div><div class="sect2" title="19.10.4. Tuning the Polling Process"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-JMS_Messaging-Tuning_the_Polling_Process" class="title">Tuning the Polling Process</h1></div></div></div><div class="para">
+		There are two parameters which you can modify to control how polling occurs. The first one is <code class="literal">Seam.Remoting.pollInterval</code>, which controls how long to wait between subsequent polls for new messages. This parameter is expressed in seconds, and its default setting is 10.
+	</div><div class="para">
+		The second parameter is <code class="literal">Seam.Remoting.pollTimeout</code>, and is also expressed as seconds. It controls how long a request to the server should wait for a new message before timing out and sending an empty response. Its default is 0 seconds, which means that when the server is polled, if there are no messages ready for delivery then an empty response will be immediately returned.
+	</div><div class="para">
+		Caution should be used when setting a high <code class="literal">pollTimeout</code> value; each request that has to wait for a message means that a server thread is tied up until a message is received, or until the request times out. If many such requests are being served simultaneously, it could mean a large number of threads become tied up because of this reason.
+	</div><div class="para">
+		It is recommended that you set these options via components.xml, however they can be overridden via Javascript if desired. The following example demonstrates how to configure the polling to occur much more aggressively. You should set these parameters to suitable values for your application:
+	</div><div class="para">
+		Via components.xml:
+	</div><pre class="programlisting">&lt;remoting:remoting poll-timeout="5" poll-interval="1"/&gt;
+</pre><div class="para">
+		Via JavaScript:
+	</div><pre class="programlisting">
+  // Only wait 1 second between receiving a poll response and sending the next poll request.
+  Seam.Remoting.pollInterval = 1;
+  
+  // Wait up to 5 seconds on the server for new messages
+  Seam.Remoting.pollTimeout = 5;
+</pre></div></div></div><div xml:lang="en-US" class="chapter" title="Chapter 20. Spring Framework integration" lang="en-US"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Spring_Framework_integration">Chapter 20. Spring Framework integration</h2></div></div></div><div class="toc"><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Spring_Framework_integration-Injecting_Seam_components_into_Spring_beans">20.1. Injecting Seam components into Spring beans</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Spring_Framework_integration-Injecting_Spring_beans_into_Seam_components">20.2. Injecting Spring beans into Seam components</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Spring_Framework_integration-Making_a_Spring_bean_into_a_Seam_component">20.3. Making a Spring bean into a Seam component</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Spring_Framework_integratio!
 n-Seam_scoped_Spring_beans">20.4. Seam-scoped Spring beans</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Spring_Framework_integration-Spring_Application_Context_as_a_Seam_Component">20.5. Spring Application Context as a Seam Component</a></span></dt></dl></div><div class="para">
+		The Spring integration module allows easy migration of Spring-based projects to Seam and allows Spring applications to take advantage of key Seam features like conversations and Seam's more sophisticated persistence context management.
+	</div><div class="para">
+		Seam's support for Spring provides the ability to:
+	</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+				inject Seam component instances into Spring beans
+			</div></li><li class="listitem"><div class="para">
+				inject Spring beans into Seam components
+			</div></li><li class="listitem"><div class="para">
+				turn Spring beans into Seam components
+			</div></li><li class="listitem"><div class="para">
+				allow Spring beans to live in any Seam context
+			</div></li><li class="listitem"><div class="para">
+				start a spring WebApplicationContext with a Seam component
+			</div></li></ul></div><div class="section" title="20.1. Injecting Seam components into Spring beans"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Spring_Framework_integration-Injecting_Seam_components_into_Spring_beans">20.1. Injecting Seam components into Spring beans</h2></div></div></div><div class="para">
+			Injecting Seam component instances into Spring beans is accomplished using the <code class="literal">&lt;seam:instance/&gt;</code> namespace handler. To enable the Seam namespace handler, the Seam namespace must be added to the Spring beans definition file:
+		</div><pre class="programlisting">&lt;beans xmlns="http://www.springframework.org/schema/beans"
+    xmlns:seam="http://jboss.com/products/seam/spring-seam"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://www.springframework.org/schema/beans 
+                        http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
+                        http://jboss.com/products/seam/spring-seam 
+                        http://jboss.com/products/seam/spring-seam-1.2.xsd"&gt;
+</pre><div class="para">
+			Now any Seam component may be injected into any Spring bean:
+		</div><pre class="programlisting">&lt;bean id="someSpringBean" class="SomeSpringBeanClass" scope="prototype"&gt;
+    &lt;property name="someProperty"&gt;
+        &lt;seam:instance name="someComponent"/&gt;
+    &lt;/property&gt;
+&lt;/bean&gt;
+</pre><div class="para">
+			An EL expression may be used instead of a component name:
+		</div><pre class="programlisting">&lt;bean id="someSpringBean" class="SomeSpringBeanClass" scope="prototype"&gt;
+    &lt;property name="someProperty"&gt;
+        &lt;seam:instance name="#{someExpression}"/&gt;
+    &lt;/property&gt;
+&lt;/bean&gt;
+</pre><div class="para">
+			Seam component instances may even be made available for injection into Spring beans by a Spring bean id.
+		</div><pre class="programlisting">&lt;seam:instance name="someComponent" id="someSeamComponentInstance"/&gt;
+
+&lt;bean id="someSpringBean" class="SomeSpringBeanClass" scope="prototype"&gt;
+    &lt;property name="someProperty" ref="someSeamComponentInstance"&gt;
+&lt;/bean&gt;
+</pre><div class="para">
+			Now for the caveat!
+		</div><div class="para">
+			Seam was designed from the ground up to support a stateful component model with multiple contexts. Spring was not. Unlike Seam bijection, Spring injection does not occur at method invocation time. Instead, injection happens only when the Spring bean is instantiated. So the instance available when the bean is instantiated will be the same instance that the bean uses for the entire life of the bean. For example, if a Seam <code class="literal">CONVERSATION</code>-scoped component instance is directly injected into a singleton Spring bean, that singleton will hold a reference to the same instance long after the conversation is over! We call this problem <span class="emphasis"><em>scope impedance</em></span>. Seam bijection ensures that scope impedance is maintained naturally as an invocation flows through the system. In Spring, we need to inject a proxy of the Seam component, and resolve the reference when the proxy is invoked.
+		</div><div class="para">
+			The <code class="literal">&lt;seam:instance/&gt;</code> tag lets us automatically proxy the Seam component.
+		</div><pre class="programlisting">&lt;seam:instance id="seamManagedEM" name="someManagedEMComponent" proxy="true"/&gt;
+        
+&lt;bean id="someSpringBean" class="SomeSpringBeanClass"&gt;
+    &lt;property name="entityManager" ref="seamManagedEM"&gt;
+&lt;/bean&gt;
+</pre><div class="para">
+			This example shows one way to use a Seam-managed persistence context from a Spring bean. (A more robust way to use Seam-managed persistence contexts as a replacement for the Spring <code class="literal">OpenEntityManagerInView</code> filter will be provided in a future release)
+		</div></div><div class="section" title="20.2. Injecting Spring beans into Seam components"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Spring_Framework_integration-Injecting_Spring_beans_into_Seam_components">20.2. Injecting Spring beans into Seam components</h2></div></div></div><div class="para">
+			It is even easier to inject Spring beans into Seam component instances. Actually, there are two possible approaches:
+		</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+					inject a Spring bean using an EL expression
+				</div></li><li class="listitem"><div class="para">
+					make the Spring bean a Seam component
+				</div></li></ul></div><div class="para">
+			We will discuss the second option in the next section. The easiest approach is to access the Spring beans via EL.
+		</div><div class="para">
+			The Spring <code class="literal">DelegatingVariableResolver</code> is an integration point Spring provides for integrating Spring with JSF. This <code class="literal">VariableResolver</code> makes all Spring beans available in EL by their bean id. You will need to add the <code class="literal">DelegatingVariableResolver</code> to <code class="literal">faces-config.xml</code>:
+		</div><pre class="programlisting">&lt;application&gt;
+    &lt;variable-resolver&gt;
+        org.springframework.web.jsf.DelegatingVariableResolver
+    &lt;/variable-resolver&gt;
+&lt;/application&gt;
+</pre><div class="para">
+			Then you can inject Spring beans using <code class="literal">@In</code>:
+		</div><pre class="programlisting">@In("#{bookingService}")
+private BookingService bookingService;
+</pre><div class="para">
+			The use of Spring beans in EL is not limited to injection. Spring beans may be used anywhere that EL expressions are used in Seam: process and pageflow definitions, working memory assertions, etc...
+		</div></div><div class="section" title="20.3. Making a Spring bean into a Seam component"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Spring_Framework_integration-Making_a_Spring_bean_into_a_Seam_component">20.3. Making a Spring bean into a Seam component</h2></div></div></div><div class="para">
+			The <code class="literal">&lt;seam:component/&gt;</code> namespace handler can be used to make any Spring bean a Seam component. Just place the <code class="literal">&lt;seam:component/&gt;</code> tag within the declaration of the bean that you wish to be a Seam component:
+		</div><pre class="programlisting">&lt;bean id="someSpringBean" class="SomeSpringBeanClass" scope="prototype"&gt;
+    &lt;seam:component/&gt;
+&lt;/bean&gt;
+</pre><div class="para">
+			By default, <code class="literal">&lt;seam:component/&gt;</code> will create a <code class="literal">STATELESS</code> Seam component with class and name provided in the bean definition. Occasionally, such as when a <code class="literal">FactoryBean</code> is used, the class of the Spring bean may not be the class appearing in the bean definition. In such cases the <code class="literal">class</code> should be explicitly specified. A Seam component name may be explicitly specified in cases where there is potential for a naming conflict.
+		</div><div class="para">
+			The <code class="literal">scope</code> attribute of <code class="literal">&lt;seam:component/&gt;</code> may be used if you wish the Spring bean to be managed in a particular Seam scope. The Spring bean must be scoped to <code class="literal">prototype</code> if the Seam scope specified is anything other than <code class="literal">STATELESS</code>. Pre-existing Spring beans usually have a fundamentally stateless character, so this attribute is not usually needed.
+		</div></div><div class="section" title="20.4. Seam-scoped Spring beans"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Spring_Framework_integration-Seam_scoped_Spring_beans">20.4. Seam-scoped Spring beans</h2></div></div></div><div class="para">
+			The Seam integration package also lets you use Seam's contexts as Spring 2.0 style custom scopes. This lets you declare any Spring bean in any of Seam's contexts. However, note once again that Spring's component model was never architected to support statefulness, so please use this feature with great care. In particular, clustering of session or conversation scoped Spring beans is deeply problematic, and care must be taken when injecting a bean or component from a wider scope into a bean of a narrower scope.
+		</div><div class="para">
+			By specifying <code class="literal">&lt;seam:configure-scopes/&gt;</code> once in a Spring bean factory configuration, all of the Seam scopes will be available to Spring beans as custom scopes. To associate a Spring bean with a particular Seam scope, specify the Seam scope in the <code class="literal">scope</code> attribute of the bean definition.
+		</div><pre class="programlisting">&lt;!-- Only needs to be specified once per bean factory--&gt;
+&lt;seam:configure-scopes/&gt;
+
+...
+
+&lt;bean id="someSpringBean" class="SomeSpringBeanClass" scope="seam.CONVERSATION"/&gt;
+</pre><div class="para">
+			The prefix of the scope name may be changed by specifying the <code class="literal">prefix</code> attribute in the <code class="literal">configure-scopes</code> definition. (The default prefix is <code class="literal">seam.</code>)
+		</div><div class="para">
+			Seam-scoped Spring beans defined this way can be injected into other Spring beans without the use of <code class="literal">&lt;seam:instance/&gt;</code>. However, care must be taken to ensure scope impedance is maintained. The normal approach used in Spring is to specify <code class="literal">&lt;aop:scoped-proxy/&gt;</code> in the bean definition. However, Seam-scoped Spring beans are <span class="emphasis"><em>not</em></span> compatible with <code class="literal">&lt;aop:scoped-proxy/&gt;</code>. So if you need to inject a Seam-scoped Spring bean into a singleton, <code class="literal">&lt;seam:instance/&gt;</code> must be used:
+		</div><pre class="programlisting">&lt;bean id="someSpringBean" class="SomeSpringBeanClass" scope="seam.CONVERSATION"/&gt;
+
+...
+
+&lt;bean id="someSingleton"&gt;
+    &lt;property name="someSeamScopedSpringBean"&gt;
+        &lt;seam:instance name="someSpringBean" proxy="true"/&gt;
+    &lt;/property&gt;
+&lt;/bean&gt;
+</pre></div><div class="section" title="20.5. Spring Application Context as a Seam Component"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Spring_Framework_integration-Spring_Application_Context_as_a_Seam_Component">20.5. Spring Application Context as a Seam Component</h2></div></div></div><div class="para">
+			Although it is possible to use the Spring <code class="literal">ContextLoaderListener</code> to start your application's Spring ApplicationContext there are a couple of limitations.
+		</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+					the Spring ApplicationContext must be started <span class="emphasis"><em>after</em></span> the <code class="literal">SeamListener</code>
+				</div></li><li class="listitem"><div class="para">
+					it can be tricky starting a Spring ApplicationContext for use in Seam unit and integration tests
+				</div></li></ul></div><div class="para">
+			To overcome these two limitations the Spring integration includes a Seam component that will start a Spring ApplicationContext. To use this Seam component place the <code class="literal">&lt;spring:context-loader/&gt;</code> definition in the <code class="literal">components.xml</code>. Specify your Spring context file location in the <code class="literal">config-locations</code> attribute. If more than one config file is needed you can place them in the nested <code class="literal">&lt;spring:config-locations/&gt;</code> element following standard <code class="literal">components.xml</code> multi value practices.
+		</div><pre class="programlisting">&lt;components xmlns="http://jboss.com/products/seam/components" 
+            xmlns:spring="http://jboss.com/products/seam/spring"
+            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+            xsi:schemaLocation="http://jboss.com/products/seam/components http://jboss.com/products/seam/components-1.2.xsd
+                                http://jboss.com/products/seam/spring http://jboss.com/products/seam/spring-1.2.xsd"&gt;
+
+	&lt;spring:context-loader context-locations="/WEB-INF/applicationContext.xml"/&gt;
+
+&lt;/components&gt;
+</pre></div></div><div xml:lang="en-US" class="chapter" title="Chapter 21. Configuring Seam and packaging Seam applications" lang="en-US"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications">Chapter 21. Configuring Seam and packaging Seam applications</h2></div></div></div><div class="toc"><dl><dt><span class="sect1"><a href="#Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Basic_Seam_configuration">21.1. Basic Seam configuration</a></span></dt><dd><dl><dt><span class="sect2"><a href="#Seam_Reference_Guide-Basic_Seam_configuration-Integrating_Seam_with_JSF_and_your_servlet_container">21.1.1. Integrating Seam with JSF and your servlet container</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Basic_Seam_configuration-Seam_Resource_Servlet">21.1.2. Seam Resource Servlet</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Basic_Seam_configur!
 ation-Seam_servlet_filters">21.1.3. Seam servlet filters</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Basic_Seam_configuration-Integrating_Seam_with_your_EJB_container">21.1.4. Integrating Seam with your EJB container</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Basic_Seam_configuration-Using_facelets">21.1.5. Using facelets</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Basic_Seam_configuration-Dont_forget">21.1.6. Don't forget!</a></span></dt></dl></dd><dt><span class="sect1"><a href="#Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_EE_5">21.2. Configuring Seam in Java EE 5</a></span></dt><dd><dl><dt><span class="sect2"><a href="#Seam_Reference_Guide-Configuring_Seam_in_Java_EE_5-Packaging">21.2.1. Packaging</a></span></dt></dl></dd><dt><span class="sect1"><a href="#Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in!
 _Java_SE_with_the_JBoss_Embeddable_EJB3_container">21.3. Confi!
 guring S
eam in Java SE, with the JBoss Embeddable EJB3 container</a></span></dt><dd><dl><dt><span class="sect2"><a href="#Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container-Installing_the_Embeddable_EJB3_container">21.3.1. Installing the Embeddable EJB3 container</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container-Configuring_a_datasource_with_the_Embeddable_EJB3_container">21.3.2. Configuring a datasource with the Embeddable EJB3 container</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container-Packaging">21.3.3. Packaging</a></span></dt></dl></dd><dt><span class="sect1"><a href="#Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_J2EE">21.4. Configuring Seam in J2EE</a></span></dt><dd><dl><dt><span class="sect2"><a href="#Seam_Reference_!
 Guide-Configuring_Seam_in_J2EE-Boostrapping_Hibernate_in_Seam">21.4.1. Boostrapping Hibernate in Seam</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Configuring_Seam_in_J2EE-Boostrapping_JPA_in_Seam">21.4.2. Boostrapping JPA in Seam</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Configuring_Seam_in_J2EE-Packaging">21.4.3. Packaging</a></span></dt></dl></dd><dt><span class="sect1"><a href="#Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_SE_with_the_JBoss_Microcontainer">21.5. Configuring Seam in Java SE, with the JBoss Microcontainer</a></span></dt><dd><dl><dt><span class="sect2"><a href="#Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Microcontainer-Using_Hibernate_and_the_JBoss_Microcontainer">21.5.1. Using Hibernate and the JBoss Microcontainer</a></span></dt><dt><span class="sect2"><a href="#Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Microco!
 ntainer-Packaging">21.5.2. Packaging</a></span></dt></dl></dd>!
 <dt><spa
n class="sect1"><a href="#Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_jBPM_in_Seam">21.6. Configuring jBPM in Seam</a></span></dt><dd><dl><dt><span class="sect2"><a href="#Seam_Reference_Guide-Configuring_jBPM_in_Seam-Packaging">21.6.1. Packaging</a></span></dt></dl></dd><dt><span class="sect1"><a href="#Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_a_Portal">21.7. Configuring Seam in a Portal</a></span></dt><dt><span class="sect1"><a href="#Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_SFSB_and_Session_Timeouts_in_JBoss_AS">21.8. Configuring SFSB and Session Timeouts in JBoss AS</a></span></dt></dl></div><div class="para">
+		Configuration is a very boring topic and an extremely tedious pastime. Unfortunately, several lines of XML are required to integrate Seam into your JSF implementation and servlet container. There is no need to be too put off by the following sections; you will never need to type any of this stuff yourself, since you can just copy and paste from the example applications.
+	</div><div class="sect1" title="21.1. Basic Seam configuration"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Basic_Seam_configuration" class="title">Basic Seam configuration</h1></div></div></div><div class="para">
+		First, let us look at the basic configuration that is needed whenever we use Seam with JSF.
+	</div><div class="sect2" title="21.1.1. Integrating Seam with JSF and your servlet container"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Basic_Seam_configuration-Integrating_Seam_with_JSF_and_your_servlet_container" class="title">Integrating Seam with JSF and your servlet container</h1></div></div></div><div class="para">
+		Seam requires the following entry in your <code class="literal">web.xml</code> file:
+	</div><pre class="programlisting">&lt;listener&gt;
+    &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/listener-class&gt;
+&lt;/listener&gt;
+</pre><div class="para">
+		This listener is responsible for bootstrapping Seam, and for destroying session and application contexts.
+	</div><div class="para">
+		To integrate with the JSF request lifecycle, we also need a JSF <code class="literal">PhaseListener</code> registered in in the <code class="literal">faces-config.xml</code> file:
+	</div><pre class="programlisting">&lt;lifecycle&gt;
+    &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-listener&gt;
+&lt;/lifecycle&gt;
+</pre><div class="para">
+		The actual listener class here varies depending upon how you want to manage transaction demarcation (more on this below).
+	</div><div class="para">
+		If you are using Sun's JSF 1.2 reference implementation, you should also add this to <code class="literal">faces-config.xml</code>:
+	</div><pre class="programlisting">&lt;application&gt;
+    &lt;el-resolver&gt;org.jboss.seam.jsf.SeamELResolver&lt;/el-resolver&gt;
+&lt;/application&gt;
+</pre><div class="para">
+		(This line should not strictly speaking be necessary, but it works around a minor bug in the RI.)
+	</div><div class="para">
+		Some JSF implementations have a broken implementation of server-side state saving that interferes with Seam's conversation propagation. If you have problems with conversation propagation during form submissions, try switching to client-side state saving. You will need this in <code class="literal">web.xml</code>:
+	</div><pre class="programlisting">&lt;context-param&gt;
+    &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-name&gt;
+    &lt;param-value&gt;client&lt;/param-value&gt;
+&lt;/context-param&gt;
+</pre></div><div class="sect2" title="21.1.2. Seam Resource Servlet"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Basic_Seam_configuration-Seam_Resource_Servlet" class="title">Seam Resource Servlet</h1></div></div></div><div class="para">
+		The Seam Resource Servlet provides resources used by Seam Remoting, captchas (see the security chapter) and some JSF UI controls. Configuring the Seam Resource Servlet requires the following entry in <code class="literal">web.xml</code>:
+	</div><pre class="programlisting">&lt;servlet&gt;
+  &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;
+  &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-class&gt;
+&lt;/servlet&gt;
+    
+&lt;servlet-mapping&gt;
+  &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;
+  &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;
+&lt;/servlet-mapping&gt;
+</pre></div><div class="sect2" title="21.1.3. Seam servlet filters"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Basic_Seam_configuration-Seam_servlet_filters" class="title">Seam servlet filters</h1></div></div></div><div class="para">
+		Seam does not need any servlet filters for basic operation. However, there are several features which depend upon the use of filters. To make things easier for you guys, Seam lets you add and configure servlet filters just like you would configure other built-in Seam components. To take advantage of this feature, we must first install a master filter in <code class="literal">web.xml</code>:
+	</div><pre class="programlisting">&lt;filter&gt;
+    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;
+    &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-class&gt;
+&lt;/filter&gt;
+
+&lt;filter-mapping&gt;
+    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;
+    &lt;url-pattern&gt;/*&lt;/url-pattern&gt;
+&lt;/filter-mapping&gt;
+</pre><div class="para">
+		Adding the master filter enables the following built-in filters.
+	</div><div class="sect3" title="21.1.3.1. Exception handling"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam_servlet_filters-Exception_handling" class="title">Exception handling</h1></div></div></div><div class="para">
+		This filter provides the exception mapping functionality in <code class="literal">pages.xml</code> (almost all applications will need this). It also takes care of rolling back uncommitted transactions when uncaught exceptions occur. (According to the Java EE specification, the web container should do this automatically, but we have found that this behavior cannot be relied upon in all application servers. And it is certainly not required of plain servlet engines like Tomcat.)
+	</div><div class="para">
+		By default, the exception handling filter will process all requests, however this behavior may be adjusted by adding a <code class="literal">&lt;web:exception-filter&gt;</code> entry to <code class="literal">components.xml</code>, as shown in this example:
+	</div><pre class="programlisting">&lt;components xmlns="http://jboss.com/products/seam/components"
+            xmlns:core="http://jboss.com/products/seam/core"
+            xmlns:web="http://jboss.com/products/seam/web"
+            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+            xsi:schemaLocation=
+                "http://jboss.com/products/seam/core 
+                                                      http://jboss.com/products/seam/core-1.2.xsd
+                 http://jboss.com/products/seam/components 
+                                                      http://jboss.com/products/seam/components-1.2.xsd
+                 http://jboss.com/products/seam/web 
+                                                      http://jboss.com/products/seam/web-1.2.xsd"&gt;
+
+    &lt;web:exception-filter url-pattern="*.seam"/&gt;
+
+&lt;/components&gt;
+</pre><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+				<code class="literal">url-pattern</code> — Used to specify which requests are filtered, the default is all requests.
+			</div></li></ul></div></div><div class="sect3" title="21.1.3.2. Conversation propagation with redirects"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam_servlet_filters-Conversation_propagation_with_redirects" class="title">Conversation propagation with redirects</h1></div></div></div><div class="para">
+		This filter allows Seam to propagate the conversation context across browser redirects. It intercepts any browser redirects and adds a request parameter that specifies the Seam conversation identifier.
+	</div><div class="para">
+		The redirect filter will process all requests by default, but this behavior can also be adjusted in <code class="literal">components.xml</code>:
+	</div><pre class="programlisting">&lt;web:redirect-filter url-pattern="*.seam"/&gt;
+</pre><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+				<code class="literal">url-pattern</code> — Used to specify which requests are filtered, the default is all requests.
+			</div></li></ul></div></div><div class="sect3" title="21.1.3.3. Multipart form submissions"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam_servlet_filters-Multipart_form_submissions" class="title">Multipart form submissions</h1></div></div></div><div class="para">
+		This feature is necessary when using the Seam file upload JSF control. It detects multipart form requests and processes them according to the multipart/form-data specification (RFC-2388). To override the default settings, add the following entry to <code class="literal">components.xml</code>:
+	</div><pre class="programlisting">&lt;web:multipart-filter create-temp-files="true" 
+        max-request-size="1000000" 
+        url-pattern="*.seam"/&gt;
+</pre><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+				<code class="literal">create-temp-files</code> — If set to <code class="literal">true</code>, uploaded files are written to a temporary file (instead of held in memory). This may be an important consideration if large file uploads are expected. The default setting is <code class="literal">false</code>.
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">max-request-size</code> — If the size of a file upload request (determined by reading the <code class="literal">Content-Length</code> header in the request) exceeds this value, the request will be aborted. The default setting is 0 (no size limit).
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">url-pattern</code> — Used to specify which requests are filtered, the default is all requests.
+			</div></li></ul></div></div><div class="sect3" title="21.1.3.4. Character encoding"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam_servlet_filters-Character_encoding" class="title">Character encoding</h1></div></div></div><div class="para">
+		Sets the character encoding of submitted form data.
+	</div><div class="para">
+		This filter is not installed by default and requires an entry in <code class="literal">components.xml</code> to enable it:
+	</div><pre class="programlisting">&lt;web:character-encoding-filter encoding="UTF-16" 
+        override-client="true" 
+        url-pattern="*.seam"/&gt;
+</pre><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+				<code class="literal">encoding</code> — The encoding to use.
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">override-client</code> — If this is set to <code class="literal">true</code>, the request encoding will be set to whatever is specified by <code class="literal">encoding</code> no matter whether the request already specifies an encoding or not. If set to <code class="literal">false</code>, the request encoding will only be set if the request does not already specify an encoding. The default setting is <code class="literal">false</code>.
+			</div></li><li class="listitem"><div class="para">
+				<code class="literal">url-pattern</code> — Used to specify which requests are filtered, the default is all requests.
+			</div></li></ul></div></div><div class="sect3" title="21.1.3.5. Context management for custom servlets"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Seam_servlet_filters-Context_management_for_custom_servlets" class="title">Context management for custom servlets</h1></div></div></div><div class="para">
+		Requests sent direct to some servlet other than the JSF servlet are not processed through the JSF lifecycle, so Seam provides a servlet filter that can be applied to any other servlet that needs access to Seam components.
+	</div><div class="para">
+		This filter allows custom servlets to interact with the Seam contexts. It sets up the Seam contexts at the beginning of each request, and tears them down at the end of the request. You should make sure that this filter is <span class="emphasis"><em>never</em></span> applied to the JSF <code class="literal">FacesServlet</code>. Seam uses the phase listener for context management in a JSF request.
+	</div><div class="para">
+		This filter is not installed by default and requires an entry in <code class="literal">components.xml</code> to enable it:
+	</div><pre class="programlisting">&lt;web:context-filter url-pattern="/media/*"/&gt;
+</pre><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+				<code class="literal">url-pattern</code> — Used to specify which requests are filtered, the default is all requests. If the url-pattern is specified for the context filter, then the filter will be enabled (unless explicitly disabled).
+			</div></li></ul></div><div class="para">
+		The context filter expects to find the conversation id of any conversation context in a request parameter named <code class="literal">conversationId</code>. You are responsible for ensuring that it gets sent in the request.
+	</div><div class="para">
+		You are also responsible for ensuring propagation of any new conversation id back to the client. Seam exposes the conversation id as a property of the built in component <code class="literal">conversation</code>.
+	</div></div></div><div class="sect2" title="21.1.4. Integrating Seam with your EJB container"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Basic_Seam_configuration-Integrating_Seam_with_your_EJB_container" class="title">Integrating Seam with your EJB container</h1></div></div></div><div class="para">
+		We need to apply the <code class="literal">SeamInterceptor</code> to our Seam components. The simplest way to do this is to add the following interceptor binding to the <code class="literal">&lt;assembly-descriptor&gt;</code> in <code class="literal">ejb-jar.xml</code>:
+	</div><pre class="programlisting">&lt;interceptor-binding&gt;
+    &lt;ejb-name&gt;*&lt;/ejb-name&gt;
+    &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/interceptor-class&gt;
+&lt;/interceptor-binding&gt;
+</pre><div class="para">
+		Seam needs to know where to go to find session beans in JNDI. One way to do this is specify the <code class="literal">@JndiName</code> annotation on every session bean Seam component. However, this is quite tedious. A better approach is to specify a pattern that Seam can use to calculate the JNDI name from the EJB name. Unfortunately, there is no standard mapping to global JNDI defined in the EJB3 specification, so this mapping is vendor-specific. We usually specify this option in <code class="literal">components.xml</code>.
+	</div><div class="para">
+		For JBoss AS, the following pattern is correct:
+	</div><pre class="programlisting">&lt;core:init jndi-name="myEarName/#{ejbName}/local" /&gt;
+</pre><div class="para">
+		Where <code class="literal">myEarName</code> is the name of the EAR in which the bean is deployed.
+	</div><div class="para">
+		Outside the context of an EAR (when using the JBoss Embeddable EJB3 container), the following pattern is the one to use:
+	</div><pre class="programlisting">&lt;core:init jndi-name="#{ejbName}/local" /&gt;
+</pre><div class="para">
+		You will have to experiment to find the right setting for other application servers.
+	</div><div class="important"><h2>Important</h2><div class="para">
+			Some servers (such as GlassFish) require you to specify JNDI names for all EJB components explicitly. In this case, you can pick your own pattern.
+		</div></div></div><div class="sect2" title="21.1.5. Using facelets"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Basic_Seam_configuration-Using_facelets" class="title">Using facelets</h1></div></div></div><div class="para">
+		If you want follow our advice and use facelets instead of JSP, add the following lines to <code class="literal">faces-config.xml</code>:
+	</div><pre class="programlisting">&lt;application&gt;
+    &lt;view-handler&gt;com.sun.facelets.FaceletViewHandler&lt;/view-handler&gt;
+&lt;/application&gt;
+</pre><div class="para">
+		And the following lines to <code class="literal">web.xml</code>:
+	</div><pre class="programlisting">&lt;context-param&gt;
+    &lt;param-name&gt;javax.faces.DEFAULT_SUFFIX&lt;/param-name&gt;
+    &lt;param-value&gt;.xhtml&lt;/param-value&gt;
+&lt;/context-param&gt;
+</pre></div><div class="sect2" title="21.1.6. Don't forget!"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Basic_Seam_configuration-Dont_forget" class="title">Don't forget!</h1></div></div></div><div class="para">
+		There is one final item you need to know about. You must place a <code class="literal">seam.properties</code>, <code class="literal">META-INF/seam.properties</code> or <code class="literal">META-INF/components.xml</code> file in any archive in which your Seam components are deployed (even an empty properties file will do). At startup, Seam will scan any archives with <code class="literal">seam.properties</code> files for seam components.
+	</div><div class="para">
+		In a web archive (WAR) file, you must place a <code class="literal">seam.properties</code> file in the <code class="literal">WEB-INF/classes</code> directory if you have any Seam components included here.
+	</div><div class="para">
+		This is a workaround for a limitation of the JVM; if we did not use this mechanism, our next best option would be to force you to list every component explicitly in <code class="literal">components.xml</code>. 
+	</div></div></div><div class="sect1" title="21.2. Configuring Seam in Java EE 5"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_EE_5" class="title">Configuring Seam in Java EE 5</h1></div></div></div><div class="mediaobject" align="center"><img src="images/ee5.png" align="middle" /></div><div class="para">
+		If you are running in a Java EE 5 environment, this is all the configuration required to start using Seam!
+	</div><div class="sect2" title="21.2.1. Packaging"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Configuring_Seam_in_Java_EE_5-Packaging" class="title">Packaging</h1></div></div></div><div class="para">
+		Once you have packaged all this stuff together into an EAR, the archive structure will look something like this:
+	</div><pre class="programlisting">my-application.ear/
+    jboss-seam.jar
+    el-api.jar
+    el-ri.jar
+    META-INF/
+        MANIFEST.MF
+        application.xml
+    my-application.war/
+        META-INF/
+            MANIFEST.MF
+        WEB-INF/
+            web.xml
+            components.xml
+            faces-config.xml
+            lib/
+                jsf-facelets.jar
+                jboss-seam-ui.jar
+        login.jsp
+        register.jsp
+        ...
+    my-application.jar/
+        META-INF/
+            MANIFEST.MF
+            persistence.xml
+        seam.properties
+        org/
+            jboss/
+                myapplication/
+                    User.class
+                    Login.class
+                    LoginBean.class
+                    Register.class
+                    RegisterBean.class
+                    ...
+</pre><div class="para">
+		You must include <code class="literal">jboss-seam.jar</code>, <code class="literal">el-api.jar</code> and <code class="literal">el-ri.jar</code> in the EAR classpath. Make sure you reference all of these jars from <code class="literal">application.xml</code>.
+	</div><div class="para">
+		If you want to use jBPM or Drools, you must include the needed jars in the EAR classpath. Make sure you reference all of the jars from <code class="literal">application.xml</code>.
+	</div><div class="para">
+		If you want to use facelets (our recommendation), you must include <code class="literal">jsf-facelets.jar</code> in the <code class="literal">WEB-INF/lib</code> directory of the WAR.
+	</div><div class="para">
+		If you want to use the Seam tag library (most Seam applications do), you must include <code class="literal">jboss-seam-ui.jar</code> in the <code class="literal">WEB-INF/lib</code> directory of the WAR. If you want to use the PDF or email tag libraries, you need to put <code class="literal">jboss-seam-pdf.jar</code> or <code class="literal">jboss-seam-mail.jar</code> in <code class="literal">WEB-INF/lib</code>.
+	</div><div class="para">
+		If you want to use the Seam debug page (only works for applications using facelets), you must include <code class="literal">jboss-seam-debug.jar</code> in the <code class="literal">WEB-INF/lib</code> directory of the WAR.
+	</div><div class="para">
+		Seam ships with several example applications that are deployable in any Java EE container that supports EJB 3.0.
+	</div><div class="para">
+		I really wish that was all there was to say on the topic of configuration but unfortunately we are only about a third of the way there.  Feel free to skip over the rest of this section and come back to it later.
+	</div></div></div><div class="sect1" title="21.3. Configuring Seam in Java SE, with the JBoss Embeddable EJB3 container"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container" class="title">Configuring Seam in Java SE, with the JBoss Embeddable EJB3 container</h1></div></div></div><div class="para">
+		The JBoss Embeddable EJB3 container lets you run EJB3 components outside the context of the Java EE 5 application server. This is especially, but not only, useful for testing.
+	</div><div class="para">
+		The Seam booking example application includes a TestNG integration test suite that runs on the Embeddable EJB3 container.
+	</div><div class="mediaobject" align="center"><img src="images/testng.png" align="middle" /></div><div class="para">
+		The booking example application may even be deployed to Tomcat.
+	</div><div class="mediaobject" align="center"><img src="images/e-ejb3.png" align="middle" /></div><div class="sect2" title="21.3.1. Installing the Embeddable EJB3 container"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container-Installing_the_Embeddable_EJB3_container" class="title">Installing the Embeddable EJB3 container</h1></div></div></div><div class="para">
+		Seam ships with a build of the Embeddable EJB3 container in the <code class="literal">embedded-ejb</code> directory. To use the Embeddable EJB3 container with Seam, add the <code class="literal">embedded-ejb/conf</code> directory, and all jars in the <code class="literal">lib</code> and <code class="literal">embedded-ejb/lib</code> directories to your classpath. Then, add the following line to <code class="literal">components.xml</code>:
+	</div><pre class="programlisting">&lt;core:ejb /&gt;
+</pre><div class="para">
+		This setting installs the built-in component named <code class="literal">org.jboss.seam.core.ejb</code>. This component is responsible for bootstrapping the EJB container when Seam is started, and shutting it down when the web application is undeployed.
+	</div></div><div class="sect2" title="21.3.2. Configuring a datasource with the Embeddable EJB3 container"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container-Configuring_a_datasource_with_the_Embeddable_EJB3_container" class="title">Configuring a datasource with the Embeddable EJB3 container</h1></div></div></div><div class="para">
+		You should refer to the Embeddable EJB3 container documentation for more information about configuring the container. You'll probably at least need to set up your own datasource. Embeddable EJB3 is implemented using the JBoss Microcontainer, so it's very easy to add new services to the minimal set of services provided by default. For example, I can add a new datasource by putting this <code class="literal">jboss-beans.xml</code> file in my classpath:
+	</div><pre class="programlisting">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+
+&lt;deployment xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+            xsi:schemaLocation="urn:jboss:bean-deployer bean-deployer_1_0.xsd"
+            xmlns="urn:jboss:bean-deployer"&gt;
+
+   &lt;bean name="bookingDatasourceBootstrap"
+        class="org.jboss.resource.adapter.jdbc.local.LocalTxDataSource"&gt;
+      &lt;property name="driverClass"&gt;org.hsqldb.jdbcDriver&lt;/property&gt;
+      &lt;property name="connectionURL"&gt;jdbc:hsqldb:.&lt;/property&gt;
+      &lt;property name="userName"&gt;sa&lt;/property&gt;
+      &lt;property name="jndiName"&gt;java:/bookingDatasource&lt;/property&gt;
+      &lt;property name="minSize"&gt;0&lt;/property&gt;
+      &lt;property name="maxSize"&gt;10&lt;/property&gt;
+      &lt;property name="blockingTimeout"&gt;1000&lt;/property&gt;
+      &lt;property name="idleTimeout"&gt;100000&lt;/property&gt;
+      &lt;property name="transactionManager"&gt;
+        &lt;inject bean="TransactionManager"/&gt;
+      &lt;/property&gt;
+      &lt;property name="cachedConnectionManager"&gt;
+        &lt;inject bean="CachedConnectionManager"/&gt;
+      &lt;/property&gt;
+      &lt;property name="initialContextProperties"&gt;
+        &lt;inject bean="InitialContextProperties"/&gt;
+      &lt;/property&gt;
+   &lt;/bean&gt;
+
+   &lt;bean name="bookingDatasource" class="java.lang.Object"&gt;
+      &lt;constructor factoryMethod="getDatasource"&gt;
+         &lt;factory bean="bookingDatasourceBootstrap"/&gt;
+      &lt;/constructor&gt;
+   &lt;/bean&gt;
+
+&lt;/deployment&gt;
+</pre></div><div class="sect2" title="21.3.3. Packaging"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container-Packaging" class="title">Packaging</h1></div></div></div><div class="para">
+		The archive structure of a WAR-based deployment on an servlet engine like Tomcat will look something like this:
+	</div><pre class="programlisting">my-application.war/
+    META-INF/
+        MANIFEST.MF
+    WEB-INF/
+        web.xml
+        components.xml
+        faces-config.xml
+        lib/
+            jboss-seam.jar
+            jboss-seam-ui.jar
+            el-api.jar
+            el-ri.jar
+            jsf-facelets.jar
+            myfaces-api.jar
+            myfaces-impl.jar
+            jboss-ejb3.jar
+            jboss-jca.jar
+            jboss-j2ee.jar
+            ...
+            mc-conf.jar/
+                ejb3-interceptors-aop.xml
+                embedded-jboss-beans.xml
+                default.persistence.properties
+                jndi.properties
+                login-config.xml
+                security-beans.xml
+                log4j.xml
+            my-application.jar/
+                META-INF/
+                    MANIFEST.MF
+                    persistence.xml
+                    jboss-beans.xml
+                log4j.xml
+                seam.properties
+                org/
+                    jboss/
+                        myapplication/
+                            User.class
+                            Login.class
+                            LoginBean.class
+                            Register.class
+                            RegisterBean.class
+                            ...
+    login.jsp
+    register.jsp
+    ...
+</pre><div class="para">
+		The <code class="literal">mc-conf.jar</code> just contains the standard JBoss Microcontainer configuration files for Embeddable EJB3. You will not usually need to edit these files yourself.
+	</div><div class="para">
+		Most of the Seam example applications may be deployed to Tomcat by running <code class="literal">ant deploy.tomcat</code>.
+	</div></div></div><div class="sect1" title="21.4. Configuring Seam in J2EE"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_J2EE" class="title">Configuring Seam in J2EE</h1></div></div></div><div class="para">
+		Seam is useful even if you are not yet ready to take the plunge into EJB 3.0. In this case you would use Hibernate3 or JPA instead of EJB 3.0 persistence, and plain JavaBeans instead of session beans. You will miss out on some of the nice features of session beans but it will be very easy to migrate to EJB 3.0 when you are ready and, in the meantime, you will be able to take advantage of Seam's unique declarative state management architecture.
+	</div><div class="mediaobject" align="center"><img src="images/hibernate-ee.png" align="middle" /></div><div class="para">
+		Seam JavaBean components do not provide declarative transaction demarcation like session beans do. You <span class="emphasis"><em>could</em></span> manage your transactions manually using the JTA <code class="literal">UserTransaction</code> (you could even implement your own declarative transaction management in a Seam interceptor). But most applications will use Seam managed transactions when using Hibernate with JavaBeans. Follow the instructions in the persistence chapter to install <code class="literal">TransactionalSeamPhaseListener</code>.
+	</div><div class="para">
+		The Seam distribution includes a version of the booking example application that uses Hibernate3 and JavaBeans instead of EJB3, and another version that uses JPA and JavaBeans. These example applications are ready to deploy into any J2EE application server.
+	</div><div class="sect2" title="21.4.1. Boostrapping Hibernate in Seam"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Configuring_Seam_in_J2EE-Boostrapping_Hibernate_in_Seam" class="title">Boostrapping Hibernate in Seam</h1></div></div></div><div class="para">
+		Seam will bootstrap a Hibernate <code class="literal">SessionFactory</code> from your <code class="literal">hibernate.cfg.xml</code> file if you install a built-in component:
+	</div><pre class="programlisting">&lt;core:hibernate-session-factory name="hibernateSessionFactory"/&gt;
+</pre><div class="para">
+		You will also need to configure a <span class="emphasis"><em>managed session</em></span> if you want a Seam managed Hibernate <code class="literal">Session</code> to be available via injection.
+	</div></div><div class="sect2" title="21.4.2. Boostrapping JPA in Seam"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Configuring_Seam_in_J2EE-Boostrapping_JPA_in_Seam" class="title">Boostrapping JPA in Seam</h1></div></div></div><div class="para">
+		Seam will bootstrap a JPA <code class="literal">EntityManagerFactory</code> from your <code class="literal">persistence.xml</code> file if you install this built-in component:
+	</div><pre class="programlisting">&lt;core:entity-manager-factory name="entityManagerFactory"/&gt;
+</pre><div class="para">
+		You will also need to configure a <span class="emphasis"><em>managed persistencece context</em></span> if you want a Seam managed JPA <code class="literal">EntityManager</code> to be available via injection.
+	</div></div><div class="sect2" title="21.4.3. Packaging"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Configuring_Seam_in_J2EE-Packaging" class="title">Packaging</h1></div></div></div><div class="para">
+		We can package our application as a WAR, in the following structure:
+	</div><pre class="programlisting">my-application.war/
+    META-INF/
+        MANIFEST.MF
+    WEB-INF/
+        web.xml
+        components.xml
+        faces-config.xml
+        lib/
+            jboss-seam.jar
+            jboss-seam-ui.jar
+            el-api.jar
+            el-ri.jar
+            jsf-facelets.jar
+            hibernate3.jar
+            hibernate-annotations.jar
+            ...
+            my-application.jar/
+                META-INF/
+                   MANIFEST.MF
+                seam.properties
+                hibernate.cfg.xml
+                org/
+                    jboss/
+                        myapplication/
+                            User.class
+                            Login.class
+                            Register.class
+                            ...
+    login.jsp
+    register.jsp
+    ...
+</pre><div class="para">
+		If we want to deploy Hibernate in a non-J2EE environment like Tomcat or TestNG, we need to do a little bit more work.
+	</div></div></div><div class="sect1" title="21.5. Configuring Seam in Java SE, with the JBoss Microcontainer"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_SE_with_the_JBoss_Microcontainer" class="title">Configuring Seam in Java SE, with the JBoss Microcontainer</h1></div></div></div><div class="para">
+		The Seam support for Hibernate and JPA requires JTA and a JCA datasource. If you are running in a non-EE environment like Tomcat or TestNG you can run these services, and Hibernate itself, in the JBoss Microcontainer.
+	</div><div class="para">
+		You can even deploy the Hibernate and JPA versions of the booking example in Tomcat.
+	</div><div class="mediaobject" align="center"><img src="images/hibernate-mc.png" align="middle" /></div><div class="para">
+		Seam ships with an example Microcontainer configuration in <code class="literal">microcontainer/conf/jboss-beans.xml</code> that provides all the things you need to run Seam with Hibernate in any non-EE environment. Just add the <code class="literal">microcontainer/conf</code> directory, and all jars in the <code class="literal">lib</code> and <code class="literal">microcontainer/lib</code> directories to your classpath. Refer to the documentation for the JBoss Microcontainer for more information.
+	</div><div class="sect2" title="21.5.1. Using Hibernate and the JBoss Microcontainer"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Microcontainer-Using_Hibernate_and_the_JBoss_Microcontainer" class="title">Using Hibernate and the JBoss Microcontainer</h1></div></div></div><div class="para">
+		The built-in Seam component named <code class="literal">org.jboss.seam.core.microcontainer</code> bootstraps the microcontainer. As before, we probably want to use a Seam managed session.
+	</div><pre class="programlisting">&lt;core:microcontainer/&gt;
+
+&lt;core:managed-hibernate-session name="bookingDatabase" auto-create="true"
+    session-factory-jndi-name="java:/bookingSessionFactory"/&gt;
+</pre><div class="para">
+		Where <code class="literal">java:/bookingSessionFactory</code> is the name of the Hibernate session factory specified in <code class="literal">hibernate.cfg.xml</code>.
+	</div><div class="para">
+		You will need to provide a <code class="literal">jboss-beans.xml</code> file that installs JNDI, JTA, your JCA datasource and Hibernate into the microcontainer:
+	</div><pre class="programlisting">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+
+&lt;deployment xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+            xsi:schemaLocation="urn:jboss:bean-deployer bean-deployer_1_0.xsd"
+            xmlns="urn:jboss:bean-deployer"&gt;
+
+   &lt;bean name="Naming" class="org.jnp.server.SingletonNamingServer"/&gt;
+
+   &lt;bean name="TransactionManagerFactory" 
+      class="org.jboss.seam.microcontainer.TransactionManagerFactory"/&gt;
+   &lt;bean name="TransactionManager" class="java.lang.Object"&gt;
+      &lt;constructor factoryMethod="getTransactionManager"&gt;
+         &lt;factory bean="TransactionManagerFactory"/&gt;
+      &lt;/constructor&gt;
+   &lt;/bean&gt;
+
+   &lt;bean name="bookingDatasourceFactory" class="org.jboss.seam.microcontainer.DataSourceFactory"&gt;
+      &lt;property name="driverClass"&gt;org.hsqldb.jdbcDriver&lt;/property&gt;
+      &lt;property name="connectionUrl"&gt;jdbc:hsqldb:.&lt;/property&gt;
+      &lt;property name="userName"&gt;sa&lt;/property&gt;
+      &lt;property name="jndiName"&gt;java:/hibernateDatasource&lt;/property&gt;
+      &lt;property name="minSize"&gt;0&lt;/property&gt;
+      &lt;property name="maxSize"&gt;10&lt;/property&gt;
+      &lt;property name="blockingTimeout"&gt;1000&lt;/property&gt;
+      &lt;property name="idleTimeout"&gt;100000&lt;/property&gt;
+      &lt;property name="transactionManager"&gt;&lt;inject bean="TransactionManager"/&gt;&lt;/property&gt;
+   &lt;/bean&gt;
+   &lt;bean name="bookingDatasource" class="java.lang.Object"&gt;
+      &lt;constructor factoryMethod="getDataSource"&gt;
+         &lt;factory bean="bookingDatasourceFactory"/&gt;
+      &lt;/constructor&gt;
+   &lt;/bean&gt;
+
+   &lt;bean name="bookingSessionFactoryFactory" 
+      class="org.jboss.seam.microcontainer.HibernateFactory"/&gt;
+   &lt;bean name="bookingSessionFactory" class="java.lang.Object"&gt;
+      &lt;constructor factoryMethod="getSessionFactory"&gt;
+         &lt;factory bean="bookingSessionFactoryFactory"/&gt;
+      &lt;/constructor&gt;
+      &lt;depends&gt;bookingDatasource&lt;/depends&gt;
+   &lt;/bean&gt;
+
+&lt;/deployment&gt;
+</pre></div><div class="sect2" title="21.5.2. Packaging"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Microcontainer-Packaging" class="title">Packaging</h1></div></div></div><div class="para">
+		The WAR could have the following structure:
+	</div><pre class="programlisting">my-application.war/
+    META-INF/
+        MANIFEST.MF
+    WEB-INF/
+        web.xml
+        components.xml
+        faces-config.xml
+        lib/
+            jboss-seam.jar
+            jboss-seam-ui.jar
+            el-api.jar
+            el-ri.jar
+            jsf-facelets.jar
+            hibernate3.jar
+            ...
+            jboss-microcontainer.jar
+            jboss-jca.jar
+            ...
+            myfaces-api.jar
+            myfaces-impl.jar
+            mc-conf.jar/
+                jndi.properties
+                log4j.xml
+            my-application.jar/
+                META-INF/
+                    MANIFEST.MF
+                    jboss-beans.xml
+                seam.properties
+                hibernate.cfg.xml
+                log4j.xml
+                org/
+                    jboss/
+                        myapplication/
+                            User.class
+                            Login.class
+                            Register.class
+                            ...
+    login.jsp
+    register.jsp
+    ...
+</pre></div></div><div class="sect1" title="21.6. Configuring jBPM in Seam"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_jBPM_in_Seam" class="title">Configuring jBPM in Seam</h1></div></div></div><div class="para">
+		Seam's jBPM integration is not installed by default, so you will need to enable jBPM by installing a built-in component. You will also need to explicitly list your process and pageflow definitions. In <code class="literal">components.xml</code>:
+	</div><pre class="programlisting">&lt;core:jbpm&gt;
+    &lt;core:pageflow-definitions&gt;
+        &lt;value&gt;createDocument.jpdl.xml&lt;/value&gt;
+        &lt;value&gt;editDocument.jpdl.xml&lt;/value&gt;
+        &lt;value&gt;approveDocument.jpdl.xml&lt;/value&gt;
+    &lt;/core:pageflow-definitions&gt;
+    &lt;core:process-definitions&gt;
+        &lt;value&gt;documentLifecycle.jpdl.xml&lt;/value&gt;
+    &lt;/core:process-definitions&gt;
+&lt;/core:jbpm&gt;
+</pre><div class="para">
+		No further special configuration is needed if you only have pageflows. If you do have business process definitions, you need to provide a jBPM configuration, and a Hibernate configuration for jBPM. The Seam DVD Store demo includes example <code class="literal">jbpm.cfg.xml</code> and <code class="literal">hibernate.cfg.xml</code> files that will work with Seam:
+	</div><pre class="programlisting">&lt;jbpm-configuration&gt;
+
+  &lt;jbpm-context&gt;
+    &lt;service name="persistence"&gt;
+       &lt;factory&gt;
+          &lt;bean class="org.jbpm.persistence.db.DbPersistenceServiceFactory"&gt;
+             &lt;field name="isTransactionEnabled"&gt;&lt;false/&gt;&lt;/field&gt;
+          &lt;/bean&gt;
+       &lt;/factory&gt;
+    &lt;/service&gt;
+    &lt;service name="message" factory="org.jbpm.msg.db.DbMessageServiceFactory" /&gt;
+    &lt;service name="scheduler" factory="org.jbpm.scheduler.db.DbSchedulerServiceFactory" /&gt;
+    &lt;service name="logging" factory="org.jbpm.logging.db.DbLoggingServiceFactory" /&gt;
+    &lt;service name="authentication" 
+       factory="org.jbpm.security.authentication.DefaultAuthenticationServiceFactory" /&gt;
+  &lt;/jbpm-context&gt;
+
+&lt;/jbpm-configuration&gt;
+</pre><div class="para">
+		The most important thing to notice here is that jBPM transaction control is disabled. Seam or EJB3 should control the JTA transactions.
+	</div><div class="sect2" title="21.6.1. Packaging"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Configuring_jBPM_in_Seam-Packaging" class="title">Packaging</h1></div></div></div><div class="para">
+		There is not yet any well-defined packaging format for jBPM configuration and process/pageflow definition files. In the Seam examples we have decided to simply package all these files into the root of the EAR. In future, we will probably design some other standard packaging format. So the EAR looks something like this:
+	</div><pre class="programlisting">my-application.ear/
+    jboss-seam.jar
+    el-api.jar
+    el-ri.jar
+    jbpm-3.1.jar
+    META-INF/
+        MANIFEST.MF
+        application.xml
+    my-application.war/
+        META-INF/
+            MANIFEST.MF
+        WEB-INF/
+            web.xml
+            components.xml
+            faces-config.xml
+            lib/
+                jsf-facelets.jar
+                jboss-seam-ui.jar
+        login.jsp
+        register.jsp
+        ...
+    my-application.jar/
+        META-INF/
+            MANIFEST.MF
+            persistence.xml
+        seam.properties
+        org/
+            jboss/
+                myapplication/
+                    User.class
+                    Login.class
+                    LoginBean.class
+                    Register.class
+                    RegisterBean.class
+                    ...
+    jbpm.cfg.xml
+    hibernate.cfg.xml
+    createDocument.jpdl.xml
+    editDocument.jpdl.xml
+    approveDocument.jpdl.xml
+    documentLifecycle.jpdl.xml
+</pre><div class="para">
+		Remember to add <code class="literal">jbpm-3.1.jar</code> to the manifest of your EJB-JAR and WAR.
+	</div></div></div><div class="sect1" title="21.7. Configuring Seam in a Portal"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_a_Portal" class="title">Configuring Seam in a Portal</h1></div></div></div><div class="para">
+		To run a Seam application as a portlet, you will need to provide certain portlet metadata (<code class="literal">portlet.xml</code>, etc) in addition to the usual Java EE metadata. See the <code class="literal">examples/portal</code> directory for an example of the booking demo preconfigured to run on JBoss Portal.
+	</div><div class="para">
+		In addition, you will need to use a portlet-specific phase listener instead of <code class="literal">SeamPhaseListener</code> or <code class="literal">TransactionalSeamPhaseListener</code>. The <code class="literal">SeamPortletPhaseListener</code> and <code class="literal">TransactionalSeamPortletPhaseListener</code> are adapted to the portlet lifecycle. I would like to offer my sincerest apologies for the name of that last class. I really could not think of anything better. Sorry.
+	</div></div><div class="sect1" title="21.8. Configuring SFSB and Session Timeouts in JBoss AS"><div class="titlepage"><div><div><h1 id="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_SFSB_and_Session_Timeouts_in_JBoss_AS" class="title">Configuring SFSB and Session Timeouts in JBoss AS</h1></div></div></div><div class="para">
+		It is very important that the timeout for Stateful Session Beans is set higher than the timeout for HTTP Sessions, otherwise SFSB's may time out before the user's HTTP session has ended. JBoss Application Server has a default session bean timeout of 30 minutes, which is configured in <code class="literal">server/default/conf/standardjboss.xml</code> (replace <span class="emphasis"><em>default</em></span> with your own configuration).
+	</div><div class="para">
+		The default SFSB timeout can be adjusted by modifying the value of <code class="literal">max-bean-life</code> in the <code class="literal">LRUStatefulContextCachePolicy</code> cache configuration:
+	</div><pre class="programlisting">
+      &lt;container-cache-conf&gt;
+        &lt;cache-policy&gt;org.jboss.ejb.plugins.LRUStatefulContextCachePolicy&lt;/cache-policy&gt;
+        &lt;cache-policy-conf&gt;
+          &lt;min-capacity&gt;50&lt;/min-capacity&gt;
+          &lt;max-capacity&gt;1000000&lt;/max-capacity&gt;
+          &lt;remover-period&gt;1800&lt;/remover-period&gt;
+
+          &lt;!-- SFSB timeout in seconds; 1800 seconds == 30 minutes --&gt;
+          &lt;max-bean-life&gt;1800&lt;/max-bean-life&gt;  
+          
+          &lt;overager-period&gt;300&lt;/overager-period&gt;
+          &lt;max-bean-age&gt;600&lt;/max-bean-age&gt;
+          &lt;resizer-period&gt;400&lt;/resizer-period&gt;
+          &lt;max-cache-miss-period&gt;60&lt;/max-cache-miss-period&gt;
+          &lt;min-cache-miss-period&gt;1&lt;/min-cache-miss-period&gt;
+          &lt;cache-load-factor&gt;0.75&lt;/cache-load-factor&gt;
+        &lt;/cache-policy-conf&gt;
+      &lt;/container-cache-conf&gt;
+</pre><div class="para">
+		The default HTTP session timeout can be modified in <code class="literal">server/default/deploy/jbossweb-tomcat55.sar/conf/web.xml</code> for JBoss 4.0.x, or in <code class="literal">server/default/deploy/jboss-web.deployer/conf/web.xml</code> for JBoss 4.2.x. The following entry in this file controls the default session timeout for all web applications:
+	</div><pre class="programlisting">
+   &lt;session-config&gt;
+      &lt;!-- HTTP Session timeout, in minutes --&gt;
+      &lt;session-timeout&gt;30&lt;/session-timeout&gt;
+   &lt;/session-config&gt;
+</pre><div class="para">
+		To override this value for your own application, simply include this entry in your application's own <code class="literal">web.xml</code>.
+	</div></div></div><div xml:lang="en-US" class="chapter" title="Chapter 22. Seam annotations" lang="en-US"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_annotations">Chapter 22. Seam annotations</h2></div></div></div><div class="toc"><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_annotations-Annotations_for_component_definition">22.1. Annotations for component definition</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_annotations-Annotations_for_bijection">22.2. Annotations for bijection</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_annotations-Annotations_for_component_lifecycle_methods">22.3. Annotations for component lifecycle methods</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_annotations-Annotations_for_context_demarcation">22.4. Annotations for context demarcation</a></span></dt><dt><span class="section"><a href="#Seam_!
 Reference_Guide-Seam_annotations-Annotations_for_transaction_demarcation">22.5. Annotations for transaction demarcation</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_annotations-Annotations_for_exceptions">22.6. Annotations for exceptions</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_annotations-Annotations_for_validation">22.7. Annotations for validation</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_annotations-Annotations_for_Seam_Remoting">22.8. Annotations for Seam Remoting</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_annotations-Annotations_for_Seam_interceptors">22.9. Annotations for Seam interceptors</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_annotations-Annotations_for_asynchronicity">22.10. Annotations for asynchronicity</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_annotations-!
 Annotations_for_use_with_JSF_dataTable">22.11. Annotations for!
  use wit
h JSF <code class="literal">dataTable</code></a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_annotations-Meta_annotations_for_databinding">22.12. Meta-annotations for databinding</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_annotations-Annotations_for_packaging">22.13. Annotations for packaging</a></span></dt></dl></div><div class="para">
+		When you write a Seam application, you'll use a lot of annotations. Seam lets you use annotations to achieve a declarative style of programming. Most of the annotations you'll use are defined by the EJB 3.0 specification. The annotations for data validation are defined by the Hibernate Validator package. Finally, Seam defines its own set of annotations, which we'll describe in this chapter.
+	</div><div class="para">
+		All of these annotations are defined in the package <code class="literal">org.jboss.seam.annotations</code>.
+	</div><div class="section" title="22.1. Annotations for component definition"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_annotations-Annotations_for_component_definition">22.1. Annotations for component definition</h2></div></div></div><div class="para">
+			The first group of annotations lets you define a Seam component. These annotations appear on the component class.
+		</div><div class="variablelist"><dl><dt id="name-annotation"><span class="term"><code class="literal">@Name</code></span></dt><dd><pre class="programlisting">@Name("componentName")
+</pre><div class="para">
+						Defines the Seam component name for a class. This annotation is required for all Seam components.
+					</div></dd><dt id="scope-annotation"><span class="term"><code class="literal">@Scope</code></span></dt><dd><pre class="programlisting">@Scope(ScopeType.CONVERSATION)
+</pre><div class="para">
+						Defines the default context of the component. The possible values are defined by the <code class="literal">ScopeType</code> enumeration: <code class="literal">EVENT, PAGE, CONVERSATION, SESSION, BUSINESS_PROCESS, APPLICATION, STATELESS</code>.
+					</div><div class="para">
+						When no scope is explicitly specified, the default depends upon the component type. For stateless session beans, the default is <code class="literal">STATELESS</code>. For entity beans and stateful session beans, the default is <code class="literal">CONVERSATION</code>. For JavaBeans, the default is <code class="literal">EVENT</code>.
+					</div></dd><dt><span class="term"><code class="literal">@Role</code></span></dt><dd><pre class="programlisting">@Role(name="roleName", scope=ScopeType.SESSION)
+</pre><div class="para">
+						Allows a Seam component to be bound to multiple contexts variables. The <code class="literal">@Name</code>/<code class="literal">@Scope</code> annotations define a "default role". Each <code class="literal">@Role</code> annotation defines an additional role.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">name</code> — the context variable name.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">scope</code> — the context variable scope. When no scope is explicitly specified, the default depends upon the component type, as above.
+							</div></li></ul></div></dd><dt><span class="term"><code class="literal">@Roles</code></span></dt><dd><pre class="programlisting">@Roles({
+        @Role(name="user", scope=ScopeType.CONVERSATION),
+        @Role(name="currentUser", scope=ScopeType.SESSION)
+    })
+</pre><div class="para">
+						Allows specification of multiple additional roles.
+					</div></dd><dt><span class="term"><code class="literal">@Intercept</code></span></dt><dd><pre class="programlisting">@Intercept(InterceptionType.ALWAYS)
+</pre><div class="para">
+						Determines when Seam interceptors are active. The possible values are defined by the <code class="literal">InterceptionType</code> enumeration: <code class="literal">ALWAYS, AFTER_RESTORE_VIEW, AFTER_UPDATE_MODEL_VALUES, INVOKE_APPLICATION, NEVER</code>.
+					</div><div class="para">
+						When no interception type is explicitly specified, the default depends upon the component type. For entity beans, the default is <code class="literal">NEVER</code>. For session beans, message driven beans and JavaBeans, the default is <code class="literal">ALWAYS</code>.
+					</div></dd><dt><span class="term"><code class="literal">@JndiName</code></span></dt><dd><pre class="programlisting">@JndiName("my/jndi/name")
+</pre><div class="para">
+						Specifies the JNDI name that Seam will use to look up the EJB component. If no JNDI name is explicitly specified, Seam will use the JNDI pattern specified by <code class="literal">org.jboss.seam.core.init.jndiPattern</code>.
+					</div></dd><dt><span class="term"><code class="literal">@Conversational</code></span></dt><dd><pre class="programlisting">@Conversational(ifNotBegunOutcome="error")
+</pre><div class="para">
+						Specifies that a conversation scope component is conversational, meaning that no method of the component can be called unless a long-running conversation started by this component is active (unless the method would begin a new long-running conversation).
+					</div></dd><dt><span class="term"><code class="literal">@Startup</code></span></dt><dd><pre class="programlisting">@Startup(depends={"org.jboss.core.jndi", "org.jboss.core.jta"})
+</pre><div class="para">
+						Specifies that an application scope component is started immediately at initialization time. This is mainly used for certain built-in components that bootstrap critical infrastructure such as JNDI, datasources, etc.
+					</div><pre class="programlisting">@Startup
+</pre><div class="para">
+						Specifies that a session scope component is started immediately at session creation time.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">depends</code> — specifies that the named components must be started first, if they are installed.
+							</div></li></ul></div></dd><dt><span class="term"><code class="literal">@Install</code></span></dt><dd><pre class="programlisting">@Install(false)
+</pre><div class="para">
+						Specifies whether or not a component should be installed by default. The lack of an @Install annotation indicates a component should be installed.
+					</div><pre class="programlisting">@Install(dependencies="org.jboss.seam.core.jbpm")
+</pre><div class="para">
+						Specifies that a component should only be stalled if the components listed as dependencies are also installed.
+					</div><pre class="programlisting">@Install(genericDependencies=ManagedQueueSender.class)
+</pre><div class="para">
+						Specifies that a component should only be installed if a component that is implemented by a certain class is installed. This is useful when the dependency doesn't have a single well-known name.
+					</div><pre class="programlisting">@Install(classDependencies="org.hibernate.Session")
+</pre><div class="para">
+						Specifies that a component should only be installed if the named class is in the classpath.
+					</div><pre class="programlisting">@Install(precedence=BUILT_IN)
+</pre><div class="para">
+						Specifies the precedence of the component. If multiple components with the same name exist, the one with the higher precedence will be installed. The defined precendence values are (in ascending order):
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">BUILT_IN</code> — Precedence of all built-in Seam components
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">FRAMEWORK</code> — Precedence to use for components of frameworks which extend Seam
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">APPLICATION</code> — Predence of application components (the default precedence)
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">DEPLOYMENT</code> — Precedence to use for components which override application components in a particular deployment
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">MOCK</code> — Precedence for mock objects used in testing
+							</div></li></ul></div></dd><dt><span class="term"><code class="literal">@Synchronized</code></span></dt><dd><pre class="programlisting">@Synchronized(timeout=1000)
+</pre><div class="para">
+						Specifies that a component is accessed concurrently by multiple clients, and that Seam should serialize requests. If a request is not able to obtain its lock on the component in the given timeout period, an exception will be raised.
+					</div></dd><dt><span class="term"><code class="literal">@ReadOnly</code></span></dt><dd><pre class="programlisting">@ReadOnly
+</pre><div class="para">
+						Specifies that a JavaBean component or component method does not require state replication at the end of the invocation.
+					</div></dd></dl></div></div><div class="section" title="22.2. Annotations for bijection"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_annotations-Annotations_for_bijection">22.2. Annotations for bijection</h2></div></div></div><div class="para">
+			The next two annotations control bijection. These attributes occur on component instance variables or property accessor methods.
+		</div><div class="variablelist"><dl><dt id="in-annotation"><span class="term"><code class="literal">@In</code></span></dt><dd><pre class="programlisting">@In
+</pre><div class="para">
+						Specifies that a component attribute is to be injected from a context variable at the beginning of each component invocation. If the context variable is null, an exception will be thrown.
+					</div><pre class="programlisting">@In(required=false)
+</pre><div class="para">
+						Specifies that a component attribute is to be injected from a context variable at the beginning of each component invocation. The context variable may be null.
+					</div><pre class="programlisting">@In(create=true)
+</pre><div class="para">
+						Specifies that a component attribute is to be injected from a context variable at the beginning of each component invocation. If the context variable is null, an instance of the component is instantiated by Seam.
+					</div><pre class="programlisting">@In(value="contextVariableName")
+</pre><div class="para">
+						Specifies the name of the context variable explicitly, instead of using the annotated instance variable name.
+					</div><pre class="programlisting">@In(value="#{customer.addresses['shipping']}")
+</pre><div class="para">
+						Specifies that a component attribute is to be injected by evaluating a JSF EL expression at the beginning of each component invocation.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">value</code> — specifies the name of the context variable. Default to the name of the component attribute. Alternatively, specifies a JSF EL expression, surrounded by <code class="literal">#{...}</code>.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">create</code> — specifies that Seam should instantiate the component with the same name as the context variable if the context variable is undefined (null) in all contexts. Default to false.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">required</code> — specifies Seam should throw an exception if the context variable is undefined in all contexts.
+							</div></li></ul></div></dd><dt id="out-annotation"><span class="term"><code class="literal">@Out</code></span></dt><dd><pre class="programlisting">@Out
+</pre><div class="para">
+						Specifies that a component attribute that is a Seam component is to be outjected to its context variable at the end of the invocation. If the attribute is null, an exception is thrown.
+					</div><pre class="programlisting">@Out(required=false)
+</pre><div class="para">
+						Specifies that a component attribute that is a Seam component is to be outjected to its context variable at the end of the invocation. The attribute may be null.
+					</div><pre class="programlisting">@Out(scope=ScopeType.SESSION)
+</pre><div class="para">
+						Specifies that a component attribute that is <span class="emphasis"><em>not</em></span> a Seam component type is to be outjected to a specific scope at the end of the invocation.
+					</div><div class="para">
+						Alternatively, if no scope is explicitly specified, the scope of the component with the <code class="literal">@Out</code> attribute is used (or the <code class="literal">EVENT</code> scope if the component is stateless).
+					</div><pre class="programlisting">@Out(value="contextVariableName")
+</pre><div class="para">
+						Specifies the name of the context variable explicitly, instead of using the annotated instance variable name.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">value</code> — specifies the name of the context variable. Default to the name of the component attribute.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">required</code> — specifies Seam should throw an exception if the component attribute is null during outjection.
+							</div></li></ul></div></dd></dl></div><div class="para">
+			Note that it is quite common for these annotations to occur together, for example:
+		</div><pre class="programlisting">@In(create=true) @Out private User currentUser;
+</pre><div class="para">
+			The next annotation supports the <span class="emphasis"><em>manager component</em></span> pattern, where a Seam component that manages the lifecycle of an instance of some other class that is to be injected. It appears on a component getter method.
+		</div><div class="variablelist"><dl><dt><span class="term"><code class="literal">@Unwrap</code></span></dt><dd><pre class="programlisting">@Unwrap
+</pre><div class="para">
+						Specifies that the object returned by the annotated getter method is the thing that is injected instead of the component instance itself.
+					</div></dd></dl></div><div class="para">
+			The next annotation supports the <span class="emphasis"><em>factory component</em></span> pattern, where a Seam component is responsible for initializing the value of a context variable. This is especially useful for initializing any state needed for rendering the response to a non-faces request. It appears on a component method.
+		</div><div class="variablelist"><dl><dt><span class="term"><code class="literal">@Factory</code></span></dt><dd><pre class="programlisting">@Factory("processInstance")
+</pre><div class="para">
+						Specifies that the method of the component is used to initialize the value of the named context variable, when the context variable has no value. This style is used with methods that return <code class="literal">void</code>.
+					</div><pre class="programlisting">@Factory("processInstance", scope=CONVERSATION)
+</pre><div class="para">
+						Specifies that the method returns a value that Seam should use to initialize the value of the named context variable, when the context variable has no value. This style is used with methods that return a value. If no scope is explicitly specified, the scope of the component with the <code class="literal">@Factory</code> method is used (unless the component is stateless, in which case the <code class="literal">EVENT</code> context is used).
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">value</code> — specifies the name of the context variable. If the method is a getter method, default to the JavaBeans property name.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">scope</code> — specifies the scope that Seam should bind the returned value to. Only meaningful for factory methods which return a value.
+							</div></li></ul></div></dd></dl></div><div class="para">
+			This annotation lets you inject a <code class="literal">Log</code>:
+		</div><div class="variablelist"><dl><dt><span class="term"><code class="literal">@Logger</code></span></dt><dd><pre class="programlisting">@Logger("categoryName")
+</pre><div class="para">
+						Specifies that a component field is to be injected with an instance of <code class="literal">org.jboss.seam.log.Log</code>. For entity beans, the field must be declared as static.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">value</code> — specifies the name of the log category. Default to the name of the component class.
+							</div></li></ul></div></dd></dl></div><div class="para">
+			The last annotation lets you inject a request parameter value:
+		</div><div class="variablelist"><dl><dt><span class="term"><code class="literal">@RequestParameter</code></span></dt><dd><pre class="programlisting">@RequestParameter("parameterName")
+</pre><div class="para">
+						Specifies that a component attribute is to be injected with the value of a request parameter. Basic type conversions are performed automatically.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">value</code> — specifies the name of the request parameter. Default to the name of the component attribute.
+							</div></li></ul></div></dd></dl></div></div><div class="section" title="22.3. Annotations for component lifecycle methods"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_annotations-Annotations_for_component_lifecycle_methods">22.3. Annotations for component lifecycle methods</h2></div></div></div><div class="para">
+			These annotations allow a component to react to its own lifecycle events. They occur on methods of the component. There may be only one of each per component class.
+		</div><div class="variablelist"><dl><dt><span class="term"><code class="literal">@Create</code></span></dt><dd><pre class="programlisting">@Create
+</pre><div class="para">
+						Specifies that the method should be called when an instance of the component is instantiated by Seam. Note that create methods are only supported for JavaBeans and stateful session beans.
+					</div></dd><dt id="destroy-annotation"><span class="term"><code class="literal">@Destroy</code></span></dt><dd><pre class="programlisting">@Destroy
+</pre><div class="para">
+						Specifies that the method should be called when the context ends and its context variables are destroyed. Note that create methods are only supported for JavaBeans and stateful session beans.
+					</div><div class="para">
+						Note that all stateful session bean components <span class="emphasis"><em>must</em></span> define a method annotated <code class="literal">@Destroy @Remove</code> in order to guarantee destruction of the stateful bean when a context ends.
+					</div><div class="para">
+						Destroy methods should be used only for cleanup. <span class="emphasis"><em>Seam catches, logs and swallows any exception that propagates out of a destroy method.</em></span>
+					</div></dd><dt><span class="term"><code class="literal">@Observer</code></span></dt><dd><pre class="programlisting">@Observer("somethingChanged")
+</pre><div class="para">
+						Specifies that the method should be called when a component-driven event of the specified type occurs.
+					</div><pre class="programlisting">@Observer(value="somethingChanged",create=false)
+</pre><div class="para">
+						Specifies that the method should be called when an event of the specified type occurs but that an instance should not be created if one doesn't exist. If an instance does not exist and create is false, the event will not be observed. The default value for create is true.
+					</div></dd></dl></div></div><div class="section" title="22.4. Annotations for context demarcation"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_annotations-Annotations_for_context_demarcation">22.4. Annotations for context demarcation</h2></div></div></div><div class="para">
+			These annotations provide declarative conversation demarcation. They appear on methods of Seam components, usually action listener methods.
+		</div><div class="para">
+			Every web request has a conversation context associated with it. Most of these conversations end at the end of the request. If you want a conversation that span multiple requests, you must "promote" the current conversation to a <span class="emphasis"><em>long-running conversation</em></span> by calling a method marked with <code class="literal">@Begin</code>.
+		</div><div class="variablelist"><dl><dt id="begin-annotation"><span class="term"><code class="literal">@Begin</code></span></dt><dd><div class="itemizedlist"><ul><li class="listitem"><pre class="programlisting">@Begin
+</pre><div class="para">
+								Specifies that a long-running conversation begins when this method returns a non-null outcome without exception.
+							</div></li><li class="listitem"><pre class="programlisting">@Begin(ifOutcome={"success", "continue"})
+</pre><div class="para">
+								Specifies that a long-running conversation begins when this action listener method returns with one of the given outcomes.
+							</div></li><li class="listitem"><pre class="programlisting">@Begin(join=true)
+</pre><div class="para">
+								Specifies that if a long-running conversation is already in progress, the conversation context is simply propagated.
+							</div></li><li class="listitem"><pre class="programlisting">@Begin(nested=true)
+</pre><div class="para">
+								Specifies that if a long-running conversation is already in progress, a new <span class="emphasis"><em>nested</em></span> conversation context begins. The nested conversation will end when the next <code class="literal">@End</code> is encountered, and the outer conversation will resume. It is perfectly legal for multiple nested conversations to exist concurrently in the same outer conversation.
+							</div></li><li class="listitem"><pre class="programlisting">@Begin(pageflow="process definition name")
+</pre><div class="para">
+								Specifies a jBPM process definition name that defines the pageflow for this conversation.
+							</div></li><li class="listitem"><pre class="programlisting">@Begin(flushMode=FlushModeType.MANUAL)
+</pre><div class="para">
+								Specify the flush mode of any Seam-managed persistence contexts. <code class="literal">flushMode=FlushModeType.MANUAL</code> supports the use of <span class="emphasis"><em>atomic conversations</em></span> where all write operations are queued in the conversation context until an explicit call to <code class="literal">flush()</code> (which usually occurs at the end of the conversation).
+							</div></li><li class="listitem"><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+										<code class="literal">ifOutcome</code> — specifies the JSF outcome or outcomes that result in a new long-running conversation context.
+									</div></li><li class="listitem"><div class="para">
+										<code class="literal">join</code> — determines the behavior when a long-running conversation is already in progress. If <code class="literal">true</code>, the context is propagated. If <code class="literal">false</code>, an exception is thrown. Default to <code class="literal">false</code>. This setting is ignored when <code class="literal">nested=true</code> is specified
+									</div></li><li class="listitem"><div class="para">
+										<code class="literal">nested</code> — specifies that a nested conversation should be started if a long-running conversation is already in progress.
+									</div></li><li class="listitem"><div class="para">
+										<code class="literal">flushMode</code> — set the flush mode of any Seam-managed Hibernate sessions or JPA persistence contexts that are created during this conversation.
+									</div></li><li class="listitem"><div class="para">
+										<code class="literal">pageflow</code> — a process definition name of a jBPM process definition deployed via <code class="literal">org.jboss.seam.core.jbpm.pageflowDefinitions.</code>
+									</div></li></ul></div></li></ul></div></dd><dt id="end-annotation"><span class="term"><code class="literal">@End</code></span></dt><dd><div class="itemizedlist"><ul><li class="listitem"><pre class="programlisting">@End
+</pre><div class="para">
+								Specifies that a long-running conversation ends when this method returns a non-null outcome without exception.
+							</div></li><li class="listitem"><pre class="programlisting">@End(ifOutcome={"success", "error"}, evenIfException={SomeException.class, OtherException.class})
+</pre><div class="para">
+								Specifies that a long-running conversation ends when this action listener method returns with one of the given outcomes or throws one of the specified classes of exception.
+							</div></li><li class="listitem"><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+										<code class="literal">ifOutcome</code> — specifies the JSF outcome or outcomes that result in the end of the current long-running conversation.
+									</div></li><li class="listitem"><div class="para">
+										<code class="literal">beforeRedirect</code> — by default, the conversation will not actually be destroyed until after any redirect has occurred. Setting <code class="literal">beforeRedirect=true</code> specifies that the conversation should be destroyed at the end of the current request, and that the redirect will be processed in a new temporary conversation context.
+									</div></li></ul></div></li></ul></div></dd><dt><span class="term"><code class="literal">@StartTask</code></span></dt><dd><pre class="programlisting">@StartTask
+</pre><div class="para">
+						"Starts" a jBPM task. Specifies that a long-running conversation begins when this method returns a non-null outcome without exception. This conversation is associated with the jBPM task specified in the named request parameter. Within the context of this conversation, a business process context is also defined, for the business process instance of the task instance.
+					</div><div class="para">
+						The jBPM <code class="literal">TaskInstance</code> will be available in a request context variable named <code class="literal">taskInstance</code>. The jPBM <code class="literal">ProcessInstance</code> will be available in a request context variable named <code class="literal">processInstance</code>. (Of course, these objects are available for injection via <code class="literal">@In</code>.)
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">taskIdParameter</code> — the name of a request parameter which holds the id of the task. Default to <code class="literal">"taskId"</code>, which is also the default used by the Seam <code class="literal">taskList</code> JSF component.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">flushMode</code> — set the flush mode of any Seam-managed Hibernate sessions or JPA persistence contexts that are created during this conversation.
+							</div></li></ul></div></dd><dt><span class="term"><code class="literal">@BeginTask</code></span></dt><dd><pre class="programlisting">@BeginTask
+</pre><div class="para">
+						Resumes work on an incomplete jBPM task. Specifies that a long-running conversation begins when this method returns a non-null outcome without exception. This conversation is associated with the jBPM task specified in the named request parameter. Within the context of this conversation, a business process context is also defined, for the business process instance of the task instance.
+					</div><div class="para">
+						The jBPM <code class="literal">TaskInstance</code> will be available in a request context variable named <code class="literal">taskInstance</code>. The jPBM <code class="literal">ProcessInstance</code> will be available in a request context variable named <code class="literal">processInstance</code>.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">taskIdParameter</code> — the name of a request parameter which holds the id of the task. Default to <code class="literal">"taskId"</code>, which is also the default used by the Seam <code class="literal">taskList</code> JSF component.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">flushMode</code> — set the flush mode of any Seam-managed Hibernate sessions or JPA persistence contexts that are created during this conversation.
+							</div></li></ul></div></dd><dt><span class="term"><code class="literal">@EndTask</code></span></dt><dd><div class="itemizedlist"><ul><li class="listitem"><pre class="programlisting">@EndTask
+</pre><div class="para">
+								"Ends" a jBPM task. Specifies that a long-running conversation ends when this method returns a non-null outcome, and that the current task is complete. Triggers a jBPM transition. The actual transition triggered will be the default transition unless the application has called <code class="literal">Transition.setName()</code> on the built-in component named <code class="literal">transition</code>.
+							</div></li><li class="listitem"><pre class="programlisting">@EndTask(transition="transitionName")
+</pre><div class="para">
+								Triggers the given jBPM transition.
+							</div></li><li class="listitem"><pre class="programlisting">@EndTask(ifOutcome={"success", "continue"})
+</pre><div class="para">
+								Specifies that the task ends when this method returns one of the listed outcomes.
+							</div></li><li class="listitem"><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+										<code class="literal">transition</code> — the name of the jBPM transition to be triggered when ending the task. Defaults to the default transition.
+									</div></li><li class="listitem"><div class="para">
+										<code class="literal">ifOutcome</code> — specifies the JSF outcome or outcomes that result in the end of the task.
+									</div></li><li class="listitem"><div class="para">
+										<code class="literal">beforeRedirect</code> — by default, the conversation will not actually be destroyed until after any redirect has occurred. Setting <code class="literal">beforeRedirect=true</code> specifies that the conversation should be destroyed at the end of the current request, and that the redirect will be processed in a new temporary conversation context.
+									</div></li></ul></div></li></ul></div></dd><dt><span class="term"><code class="literal">@CreateProcess</code></span></dt><dd><pre class="programlisting">@CreateProcess(definition="process definition name")
+</pre><div class="para">
+						Creates a new jBPM process instance when the method returns a non-null outcome without exception. The <code class="literal">ProcessInstance</code> object will be available in a context variable named <code class="literal">processInstance</code>.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">definition</code> — the name of the jBPM process definition deployed via <code class="literal">org.jboss.seam.core.jbpm.processDefinitions</code>.
+							</div></li></ul></div></dd><dt><span class="term"><code class="literal">@ResumeProcess</code></span></dt><dd><pre class="programlisting">@ResumeProcess(processIdParameter="processId")
+</pre><div class="para">
+						Re-enters the scope of an existing jBPM process instance when the method returns a non-null outcome without exception. The <code class="literal">ProcessInstance</code> object will be available in a context variable named <code class="literal">processInstance</code>.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">processIdParameter</code> — the name a request parameter holding the process id. Default to <code class="literal">"processId"</code>.
+							</div></li></ul></div></dd></dl></div></div><div class="section" title="22.5. Annotations for transaction demarcation"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_annotations-Annotations_for_transaction_demarcation">22.5. Annotations for transaction demarcation</h2></div></div></div><div class="para">
+			Seam provides an annotation that lets you force a rollback of the JTA transaction for certain action listener outcomes.
+		</div><div class="variablelist"><dl><dt><span class="term"><code class="literal">@Rollback</code></span></dt><dd><pre class="programlisting">@Rollback(ifOutcome={"failure", "not-found"})
+</pre><div class="para">
+						If the outcome of the method matches any of the listed outcomes, or if no outcomes are listed, set the transaction to rollback only when the method completes.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">ifOutcome</code> — the JSF outcomes that cause a transaction rollback (no outcomes is interpreted to mean any outcome).
+							</div></li></ul></div></dd><dt><span class="term"><code class="literal">@Transactional</code></span></dt><dd><pre class="programlisting">@Transactional
+</pre><div class="para">
+						Specifies that a JavaBean component should have a similar transactional behavior to the default behavior of a session bean component. ie. method invocations should take place in a transaction, and if no transaction exists when the method is called, a transaction will be started just for that method. This annotation may be applied at either class or method level.
+					</div></dd></dl></div><div class="para">
+			Seam applications usually use the standard EJB3 annotations for all other transaction demarcation needs.
+		</div></div><div class="section" title="22.6. Annotations for exceptions"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_annotations-Annotations_for_exceptions">22.6. Annotations for exceptions</h2></div></div></div><div class="para">
+			These annotations let you specify how Seam should handle an exception that propagates out of a Seam component.
+		</div><div class="variablelist"><dl><dt><span class="term"><code class="literal">@Redirect</code></span></dt><dd><pre class="programlisting">@Redirect(viewId="error.jsp")
+</pre><div class="para">
+						Specifies that the annotated exception causes a browser redirect to a specified view id.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">viewId</code> — specifies the JSF view id to redirect to.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">message</code> — a message to be displayed, default to the exception message.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">end</code> — specifies that the long-running conversation should end, default to <code class="literal">false</code>.
+							</div></li></ul></div></dd><dt><span class="term"><code class="literal">@HttpError</code></span></dt><dd><pre class="programlisting">@HttpError(errorCode=404)
+</pre><div class="para">
+						Specifies that the annotated exception causes a HTTP error to be sent.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">errorCode</code> — the HTTP error code, default to <code class="literal">500</code>.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">message</code> — a message to be sent with the HTTP error, default to the exception message.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">end</code> — specifies that the long-running conversation should end, default to <code class="literal">false</code>.
+							</div></li></ul></div></dd></dl></div></div><div class="section" title="22.7. Annotations for validation"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_annotations-Annotations_for_validation">22.7. Annotations for validation</h2></div></div></div><div class="para">
+			This annotation triggers Hibernate Validator. It appears on a method of a Seam component, almost always an action listener method.
+		</div><div class="para">
+			Please refer to the documentation for the Hibernate Annotations package for information about the annotations defined by the Hibernate Validator framework.
+		</div><div class="para">
+			<span class="emphasis"><em>Note that use of <code class="literal">@IfInvalid</code> is now semi-deprecated and <code class="literal">&lt;s:validateAll&gt;</code> is now preferred.</em></span>
+		</div><div class="variablelist"><dl><dt><span class="term"><code class="literal">@IfInvalid</code></span></dt><dd><pre class="programlisting">@IfInvalid(outcome="invalid", refreshEntities=true)
+</pre><div class="para">
+						Specifies that Hibernate Validator should validate the component before the method is invoked. If the invocation fails, the specified outcome will be returned, and the validation failure messages returned by Hibernate Validator will be added to the <code class="literal">FacesContext</code>. Otherwise, the invocation will proceed.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">outcome</code> — the JSF outcome when validation fails.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">refreshEntities</code> — specifies that any invalid entity in the managed state should be refreshed from the database when validation fails. Default to <code class="literal">false</code>. (Useful with extended persistence contexts.)
+							</div></li></ul></div></dd></dl></div></div><div class="section" title="22.8. Annotations for Seam Remoting"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_annotations-Annotations_for_Seam_Remoting">22.8. Annotations for Seam Remoting</h2></div></div></div><div class="para">
+			Seam Remoting requires that the local interface of a session bean be annotated with the following annotation:
+		</div><div class="variablelist"><dl><dt><span class="term"><code class="literal">@WebRemote</code></span></dt><dd><pre class="programlisting">@WebRemote(exclude="path.to.exclude")
+</pre><div class="para">
+						Indicates that the annotated method may be called from client-side JavaScript. The <code class="literal">exclude</code> property is optional and allows objects to be excluded from the result's object graph (see the Remoting chapter for more details).
+					</div></dd></dl></div></div><div class="section" title="22.9. Annotations for Seam interceptors"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_annotations-Annotations_for_Seam_interceptors">22.9. Annotations for Seam interceptors</h2></div></div></div><div class="para">
+			The following annotations appear on Seam interceptor classes.
+		</div><div class="para">
+			Please refer to the documentation for the EJB 3.0 specification for information about the annotations required for EJB interceptor definition.
+		</div><div class="variablelist"><dl><dt><span class="term"><code class="literal">@Interceptor</code></span></dt><dd><div class="itemizedlist"><ul><li class="listitem"><pre class="programlisting">@Interceptor(stateless=true)
+</pre><div class="para">
+								Specifies that this interceptor is stateless and Seam may optimize replication.
+							</div></li><li class="listitem"><pre class="programlisting">@Interceptor(type=CLIENT)
+</pre><div class="para">
+								Specifies that this interceptor is a "client-side" interceptor that is called before the EJB container.
+							</div></li><li class="listitem"><pre class="programlisting">@Interceptor(around={SomeInterceptor.class, OtherInterceptor.class})
+</pre><div class="para">
+								Specifies that this interceptor is positioned higher in the stack than the given interceptors.
+							</div></li><li class="listitem"><pre class="programlisting">@Interceptor(within={SomeInterceptor.class, OtherInterceptor.class})
+</pre><div class="para">
+								Specifies that this interceptor is positioned deeper in the stack than the given interceptors.
+							</div></li></ul></div></dd></dl></div></div><div class="section" title="22.10. Annotations for asynchronicity"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_annotations-Annotations_for_asynchronicity">22.10. Annotations for asynchronicity</h2></div></div></div><div class="para">
+			The following annotations are used to declare an asynchronous method, for example:
+		</div><pre class="programlisting">@Asynchronous public void scheduleAlert(Alert alert, @Expiration Date date) { ... }
+</pre><pre class="programlisting">@Asynchronous public Timer scheduleAlerts(Alert alert, @Expiration Date date, 
+ at IntervalDuration long interval) { ... }
+</pre><div class="variablelist"><dl><dt><span class="term"><code class="literal">@Asynchronous</code></span></dt><dd><pre class="programlisting">@Asynchronous
+</pre><div class="para">
+						Specifies that the method call is processed asynchronously.
+					</div></dd><dt><span class="term"><code class="literal">@Duration</code></span></dt><dd><pre class="programlisting">@Duration
+</pre><div class="para">
+						Specifies that a parameter of the asynchronous call is the duration before the call is processed (or first processed for recurring calls).
+					</div></dd><dt><span class="term"><code class="literal">@Expiration</code></span></dt><dd><pre class="programlisting">@Expiration
+</pre><div class="para">
+						Specifies that a parameter of the asynchronous call is the datetime at which the call is processed (or first processed for recurring calls).
+					</div></dd><dt><span class="term"><code class="literal">@IntervalDuration</code></span></dt><dd><pre class="programlisting">@IntervalDuration
+</pre><div class="para">
+						Specifies that an asynchronous method call recurs, and that the annotationed parameter is duration between recurrences.
+					</div></dd></dl></div></div><div class="section" title="22.11. Annotations for use with JSF dataTable"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_annotations-Annotations_for_use_with_JSF_dataTable">22.11. Annotations for use with JSF <code class="literal">dataTable</code></h2></div></div></div><div class="para">
+			The following annotations make it easy to implement clickable lists backed by a stateful session bean. They appear on attributes.
+		</div><div class="variablelist"><dl><dt id="datamodel-annotation"><span class="term"><code class="literal">@DataModel</code></span></dt><dd><pre class="programlisting">@DataModel("variableName")
+</pre><div class="para">
+						Exposes an attribute of type <code class="literal">List</code>, <code class="literal">Map</code>, <code class="literal">Set</code> or <code class="literal">Object[]</code> as a JSF <code class="literal">DataModel</code> into the scope of the owning component (or the <code class="literal">EVENT</code> scope if the owning component is <code class="literal">STATELESS</code>). In the case of <code class="literal">Map</code>, each row of the <code class="literal">DataModel</code> is a <code class="literal">Map.Entry</code>.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">value</code> — name of the conversation context variable. Default to the attribute name.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">scope</code> — if <code class="literal">scope=ScopeType.PAGE</code> is explicitly specified, the <code class="literal">DataModel</code> will be kept in the <code class="literal">PAGE</code> context.
+							</div></li></ul></div></dd><dt><span class="term"><code class="literal">@DataModelSelection</code></span></dt><dd><pre class="programlisting">@DataModelSelection
+</pre><div class="para">
+						Injects the selected value from the JSF <code class="literal">DataModel</code> (this is the element of the underlying collection, or the map value).
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">value</code> — name of the conversation context variable. Not needed if there is exactly one <code class="literal">@DataModel</code> in the component.
+							</div></li></ul></div></dd><dt><span class="term"><code class="literal">@DataModelSelectionIndex</code></span></dt><dd><pre class="programlisting">@DataModelSelectionIndex
+</pre><div class="para">
+						Exposes the selection index of the JSF <code class="literal">DataModel</code> as an attribute of the component (this is the row number of the underlying collection, or the map key).
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">value</code> — name of the conversation context variable. Not needed if there is exactly one <code class="literal">@DataModel</code> in the component.
+							</div></li></ul></div></dd></dl></div></div><div class="section" title="22.12. Meta-annotations for databinding"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_annotations-Meta_annotations_for_databinding">22.12. Meta-annotations for databinding</h2></div></div></div><div class="para">
+			These meta-annotations make it possible to implement similar functionality to <code class="literal">@DataModel</code> and <code class="literal">@DataModelSelection</code> for other datastructures apart from lists.
+		</div><div class="variablelist"><dl><dt><span class="term"><code class="literal">@DataBinderClass</code></span></dt><dd><pre class="programlisting">@DataBinderClass(DataModelBinder.class)
+</pre><div class="para">
+						Specifies that an annotation is a databinding annotation.
+					</div></dd><dt><span class="term"><code class="literal">@DataSelectorClass</code></span></dt><dd><pre class="programlisting">@DataSelectorClass(DataModelSelector.class)
+</pre><div class="para">
+						Specifies that an annotation is a dataselection annotation.
+					</div></dd></dl></div></div><div class="section" title="22.13. Annotations for packaging"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_annotations-Annotations_for_packaging">22.13. Annotations for packaging</h2></div></div></div><div class="para">
+			This annotation provides a mechanism for declaring information about a set of components that are packaged together. It can be applied to any Java package.
+		</div><div class="variablelist"><dl><dt><span class="term"><code class="literal">@Namespace</code></span></dt><dd><pre class="programlisting">@Namespace(value="http://jboss.com/products/seam/example/seampay")
+</pre><div class="para">
+						Specifies that components in the current package are associated with the given namespace. The declared namespace can be used as an XML namespace in a <code class="literal">components.xml</code> file to simplify application configuration.
+					</div><pre class="programlisting">@Namespace(value="http://jboss.com/products/seam/core", prefix="org.jboss.seam.core")
+</pre><div class="para">
+						Specifies a namespace to associate with a given package. Additionally, it specifies a component name prefix to be applied to component names specified in the XML file. For example, an XML element named <code class="literal">microcontainer</code> that is associated with this namespace would be understood to actually refere to a component named <code class="literal">org.jboss.seam.core.microcontainer</code>.
+					</div></dd></dl></div></div></div><div xml:lang="en-US" class="chapter" title="Chapter 23. Built-in Seam components" lang="en-US"><div class="titlepage"><div><div><h2 class="title" id="components">Chapter 23. Built-in Seam components</h2></div></div></div><div class="toc"><dl><dt><span class="section"><a href="#id2972363">23.1. Context injection components</a></span></dt><dt><span class="section"><a href="#id2813122">23.2. Utility components</a></span></dt><dt><span class="section"><a href="#id2807948">23.3. Components for internationalization and themes</a></span></dt><dt><span class="section"><a href="#id2738486">23.4. Components for controlling conversations</a></span></dt><dt><span class="section"><a href="#id4167081">23.5. jBPM-related components</a></span></dt><dt><span class="section"><a href="#id2772001">23.6. Security-related components</a></span></dt><dt><span class="section"><a href="#id2772063">23.7. JMS-related components</a></span></dt><dt><span class!
 ="section"><a href="#components.mail">23.8. Mail-related components</a></span></dt><dt><span class="section"><a href="#id2772289">23.9. Infrastructural components</a></span></dt><dt><span class="section"><a href="#id2740138">23.10. Miscellaneous components</a></span></dt><dt><span class="section"><a href="#id2740239">23.11. Special components</a></span></dt></dl></div><div class="para">
+		This chapter describes Seam's built in components, and their configuration properties. The built in components will be created even if they are not listed in your <code class="literal">components.xml</code> file, but if you need to override default properties or specify more than one component of a certain type, <code class="literal">components.xml</code> is used.
+	</div><div class="para">
+		You can replace any of the built in components with your own implementations simply by specifying the name of one of the built in components on your own class using <code class="literal">@Name</code>.
+	</div><div class="para">
+		Even though all the built in components use a qualified name, most of them are aliased to unqualified names by default. These aliases specify <code class="literal">auto-create="true"</code>, so you do not need to use <code class="literal">create=true</code> when injecting built-in components by their unqualified name.
+	</div><div class="section" title="23.1. Context injection components"><div class="titlepage"><div><div><h2 class="title" id="id2972363">23.1. Context injection components</h2></div></div></div><div class="para">
+			The first set of built in components exist purely to support injection of various contextual objects. For example, the following component instance variable would have the Seam session context object injected:
+		</div><pre class="programlisting JAVA">@In private Context sessionContext;
+</pre><div class="variablelist"><dl><dt><span class="term"><code class="literal">org.jboss.seam.core.contexts</code></span></dt><dd><div class="para">
+						Component that provides access to Seam Context objects, for example <code class="literal">org.jboss.seam.core.contexts.sessionContext['user']</code>.
+					</div></dd><dt><span class="term"><code class="literal">org.jboss.seam.faces.facesContext</code></span></dt><dd><div class="para">
+						Manager component for the <code class="literal">FacesContext</code> context object (not a true Seam context)
+					</div></dd></dl></div><div class="para">
+			All of these components are always installed.
+		</div></div><div class="section" title="23.2. Utility components"><div class="titlepage"><div><div><h2 class="title" id="id2813122">23.2. Utility components</h2></div></div></div><div class="para">
+			These components are merely useful.
+		</div><div class="variablelist"><dl><dt><span class="term"><code class="literal">org.jboss.seam.faces.facesMessages</code></span></dt><dd><div class="para">
+						Allows faces success messages to propagate across a browser redirect.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">add(FacesMessage facesMessage)</code> — add a faces message, which will be displayed during the next render response phase that occurs in the current conversation.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">add(String messageTemplate)</code> — add a faces message, rendered from the given message template which may contain EL expressions.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">add(Severity severity, String messageTemplate)</code> — add a faces message, rendered from the given message template which may contain EL expressions.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">addFromResourceBundle(String key)</code> — add a faces message, rendered from a message template defined in the Seam resource bundle which may contain EL expressions.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">addFromResourceBundle(Severity severity, String key)</code> — add a faces message, rendered from a message template defined in the Seam resource bundle which may contain EL expressions.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">clear()</code> — clear all messages.
+							</div></li></ul></div></dd><dt><span class="term"><code class="literal">org.jboss.seam.faces.redirect</code></span></dt><dd><div class="para">
+						A convenient API for performing redirects with parameters (this is especially useful for bookmarkable search results screens).
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">redirect.viewId</code> — the JSF view id to redirect to.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">redirect.conversationPropagationEnabled</code> — determines whether the conversation will propagate across the redirect.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">redirect.parameters</code> — a map of request parameter name to value, to be passed in the redirect request.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">execute()</code> — perform the redirect immediately.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">captureCurrentRequest()</code> — stores the view id and request parameters of the current GET request (in the conversation context), for later use by calling <code class="literal">execute()</code>.
+							</div></li></ul></div></dd><dt><span class="term"><code class="literal">org.jboss.seam.faces.httpError</code></span></dt><dd><div class="para">
+						A convenient API for sending HTTP errors.
+					</div></dd><dt><span class="term"><code class="literal">org.jboss.seam.core.events</code></span></dt><dd><div class="para">
+						An API for raising events that can be observed via <code class="literal">@Observer</code> methods, or method bindings in <code class="literal">components.xml</code>.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">raiseEvent(String type)</code> — raise an event of a particular type and distribute to all observers.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">raiseAsynchronousEvent(String type)</code> — raise an event to be processed asynchronously by the EJB3 timer service.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">raiseTimedEvent(String type, ....)</code> — schedule an event to be processed asynchronously by the EJB3 timer service.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">addListener(String type, String methodBinding)</code> — add an observer for a particular event type.
+							</div></li></ul></div></dd><dt><span class="term"><code class="literal">org.jboss.seam.core.interpolator</code></span></dt><dd><div class="para">
+						An API for interpolating the values of JSF EL expressions in Strings.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">interpolate(String template)</code> — scan the template for JSF EL expressions of the form <code class="literal">#{...}</code> and replace them with their evaluated values.
+							</div></li></ul></div></dd><dt><span class="term"><code class="literal">org.jboss.seam.core.expressions</code></span></dt><dd><div class="para">
+						An API for creating value and method bindings.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">createValueBinding(String expression)</code> — create a value binding object.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">createMethodBinding(String expression)</code> — create a method binding object.
+							</div></li></ul></div></dd><dt><span class="term"><code class="literal">org.jboss.seam.core.pojoCache</code></span></dt><dd><div class="para">
+						Manager component for a JBoss Cache <code class="literal">PojoCache</code> instance.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">pojoCache.cfgResourceName</code> — the name of the configuration file. Default to <code class="literal">treecache.xml</code>.
+							</div></li></ul></div></dd></dl></div><div class="para">
+			All of these components are always installed.
+		</div></div><div class="section" title="23.3. Components for internationalization and themes"><div class="titlepage"><div><div><h2 class="title" id="id2807948">23.3. Components for internationalization and themes</h2></div></div></div><div class="para">
+			The next group of components make it easy to build internationalized user interfaces using Seam.
+		</div><div class="variablelist"><dl><dt><span class="term"><code class="literal">org.jboss.seam.core.locale</code></span></dt><dd><div class="para">
+						The Seam locale.
+					</div></dd><dt><span class="term"><code class="literal">org.jboss.seam.international.timezone</code></span></dt><dd><div class="para">
+						The Seam timezone. The timezone is session scoped.
+					</div></dd><dt><span class="term"><code class="literal">org.jboss.seam.core.resourceBundle</code></span></dt><dd><div class="para">
+						The Seam resource bundle. The resource bundle is stateless. The Seam resource bundle performs a depth-first search for keys in a list of Java resource bundles.
+					</div></dd><dt><span class="term"><code class="literal">org.jboss.seam.core.resourceLoader</code></span></dt><dd><div class="para">
+						The resource loader provides access to application resources and resource bundles.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">resourceLoader.bundleNames</code> — the names of the Java resource bundles to search when the Seam resource bundle is used. Default to <code class="literal">messages</code>.
+							</div></li></ul></div></dd><dt><span class="term"><code class="literal">org.jboss.seam.international.localeSelector</code></span></dt><dd><div class="para">
+						Supports selection of the locale either at configuration time, or by the user at runtime.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">select()</code> — select the specified locale.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">localeSelector.locale</code> — the actual <code class="literal">java.util.Locale</code>.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">localeSelector.localeString</code> — the string representation of the locale.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">localeSelector.language</code> — the language for the specified locale.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">localeSelector.country</code> — the country for the specified locale.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">localeSelector.variant</code> — the variant for the specified locale.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">localeSelector.supportedLocales</code> — a list of <code class="literal">SelectItem</code>s representing the supported locales listed in <code class="literal">jsf-config.xml</code>.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">localeSelector.cookieEnabled</code> — specifies that the locale selection should be persisted via a cookie.
+							</div></li></ul></div></dd><dt><span class="term"><code class="literal">org.jboss.seam.international.timezoneSelector</code></span></dt><dd><div class="para">
+						Supports selection of the timezone either at configuration time, or by the user at runtime.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">select()</code> — select the specified locale.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">timezoneSelector.timezone</code> — the actual <code class="literal">java.util.TimeZone</code>.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">timezoneSelector.timeZoneId</code> — the string representation of the timezone.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">timezoneSelector.cookieEnabled</code> — specifies that the timezone selection should be persisted via a cookie.
+							</div></li></ul></div></dd><dt><span class="term"><code class="literal">org.jboss.seam.international.messages</code></span></dt><dd><div class="para">
+						A map containing internationalized messages rendered from message templates defined in the Seam resource bundle.
+					</div></dd><dt><span class="term"><code class="literal">org.jboss.seam.theme.themeSelector</code></span></dt><dd><div class="para">
+						Supports selection of the theme either at configuration time, or by the user at runtime.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">select()</code> — select the specified theme.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">theme.availableThemes</code> — the list of defined themes.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">themeSelector.theme</code> — the selected theme.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">themeSelector.themes</code> — a list of <code class="literal">SelectItem</code>s representing the defined themes.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">themeSelector.cookieEnabled</code> — specifies that the theme selection should be persisted via a cookie.
+							</div></li></ul></div></dd><dt><span class="term"><code class="literal">org.jboss.seam.theme.theme</code></span></dt><dd><div class="para">
+						A map containing theme entries.
+					</div></dd></dl></div><div class="para">
+			All of these components are always installed.
+		</div></div><div class="section" title="23.4. Components for controlling conversations"><div class="titlepage"><div><div><h2 class="title" id="id2738486">23.4. Components for controlling conversations</h2></div></div></div><div class="para">
+			The next group of components allow control of conversations by the application or user interface.
+		</div><div class="variablelist"><dl><dt><span class="term"><code class="literal">org.jboss.seam.core.conversation</code></span></dt><dd><div class="para">
+						API for application control of attributes of the current Seam conversation.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">getId()</code> — returns the current conversation ID
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">isNested()</code> — is the current conversation a nested conversation?
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">isLongRunning()</code> — is the current conversation a long-running conversation?
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">getId()</code> — returns the current conversation ID
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">getParentId()</code> — returns the conversation ID of the parent conversation
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">getRootId()</code> — returns the conversation ID of the root conversation
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">setTimeout(int timeout)</code> — sets the timeout for the current conversation
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">setViewId(String outcome)</code> — sets the view id to be used when switching back to the current conversation from the conversation switcher, conversation list, or breadcrumbs.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">setDescription(String description)</code> — sets the description of the current conversation to be displayed in the conversation switcher, conversation list, or breadcrumbs.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">redirect()</code> — redirect to the last well-defined view id for this conversation (useful after login challenges).
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">leave()</code> — exit the scope of this conversation, without actually ending the conversation.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">begin()</code> — begin a long-running conversation (equivalent to <code class="literal">@Begin</code>).
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">beginPageflow(String pageflowName)</code> — begin a long-running conversation with a pageflow (equivalent to <code class="literal">@Begin(pageflow="...")</code>).
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">end()</code> — end a long-running conversation (equivalent to <code class="literal">@End</code>).
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">pop()</code> — pop the conversation stack, returning to the parent conversation.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">root()</code> — return to the root conversation of the conversation stack.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">changeFlushMode(FlushModeType flushMode)</code> — change the flush mode of the conversation.
+							</div></li></ul></div></dd><dt><span class="term"><code class="literal">org.jboss.seam.core.conversationList</code></span></dt><dd><div class="para">
+						Manager component for the conversation list.
+					</div></dd><dt><span class="term"><code class="literal">org.jboss.seam.core.conversationStack</code></span></dt><dd><div class="para">
+						Manager component for the conversation stack (breadcrumbs).
+					</div></dd><dt><span class="term"><code class="literal">org.jboss.seam.faces.switcher</code></span></dt><dd><div class="para">
+						The conversation switcher.
+					</div></dd></dl></div><div class="para">
+			All of these components are always installed.
+		</div></div><div class="section" title="23.5. jBPM-related components"><div class="titlepage"><div><div><h2 class="title" id="id4167081">23.5. jBPM-related components</h2></div></div></div><div class="para">
+			These components are for use with jBPM.
+		</div><div class="variablelist"><dl><dt><span class="term"><code class="literal">org.jboss.seam.pageflow.pageflow</code></span></dt><dd><div class="para">
+						API control of Seam pageflows.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">isInProcess()</code> — returns <code class="literal">true</code> if there is currently a pageflow in process
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">getProcessInstance()</code> — returns jBPM <code class="literal">ProcessInstance</code> for the current pageflow
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">begin(String pageflowName)</code> — begin a pageflow in the context of the current conversation
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">reposition(String nodeName)</code> — reposition the current pageflow to a particular node
+							</div></li></ul></div></dd><dt><span class="term"><code class="literal">org.jboss.seam.bpm.actor</code></span></dt><dd><div class="para">
+						API for application control of attributes of the jBPM actor associated with the current session.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">setId(String actorId)</code> — sets the jBPM actor id of the current user.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">getGroupActorIds()</code> — returns a <code class="literal">Set</code> to which jBPM actor ids for the current users groups may be added.
+							</div></li></ul></div></dd><dt><span class="term"><code class="literal">org.jboss.seam.bpm.transition</code></span></dt><dd><div class="para">
+						API for application control of the jBPM transition for the current task.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">setName(String transitionName)</code> — sets the jBPM transition name to be used when the current task is ended via <code class="literal">@EndTask</code>.
+							</div></li></ul></div></dd><dt><span class="term"><code class="literal">org.jboss.seam.bpm.businessProcess</code></span></dt><dd><div class="para">
+						API for programmatic control of the association between the conversation and business process.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">businessProcess.taskId</code> — the id of the task associated with the current conversation.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">businessProcess.processId</code> — the id of the process associated with the current conversation.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">businessProcess.hasCurrentTask()</code> — is a task instance associated with the current conversation?
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">businessProcess.hasCurrentProcess()</code> — is a process instance associated with the current conversation.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">createProcess(String name)</code> — create an instance of the named process definition and associate it with the current conversation.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">startTask()</code> — start the task associated with the current conversation.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">endTask(String transitionName)</code> — end the task associated with the current conversation.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">resumeTask(Long id)</code> — associate the task with the given id with the current conversation.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">resumeProcess(Long id)</code> — associate the process with the given id with the current conversation.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">transition(String transitionName)</code> — trigger the transition.
+							</div></li></ul></div></dd><dt><span class="term"><code class="literal">org.jboss.seam.bpm.taskInstance</code></span></dt><dd><div class="para">
+						Manager component for the jBPM <code class="literal">TaskInstance</code>.
+					</div></dd><dt><span class="term"><code class="literal">org.jboss.seam.bpm.processInstance</code></span></dt><dd><div class="para">
+						Manager component for the jBPM <code class="literal">ProcessInstance</code>.
+					</div></dd><dt><span class="term"><code class="literal">org.jboss.seam.bpm.jbpmContext</code></span></dt><dd><div class="para">
+						Manager component for an event-scoped <code class="literal">JbpmContext</code>.
+					</div></dd><dt><span class="term"><code class="literal">org.jboss.seam.bpm.taskInstanceList</code></span></dt><dd><div class="para">
+						Manager component for the jBPM task list.
+					</div></dd><dt><span class="term"><code class="literal">org.jboss.seam.bpm.pooledTaskInstanceList</code></span></dt><dd><div class="para">
+						Manager component for the jBPM pooled task list.
+					</div></dd><dt><span class="term"><code class="literal">org.jboss.seam.bpm.taskInstanceListForType</code></span></dt><dd><div class="para">
+						Manager component for the jBPM task lists.
+					</div></dd><dt><span class="term"><code class="literal">org.jboss.seam.bpm.pooledTask</code></span></dt><dd><div class="para">
+						Action handler for pooled task assignment.
+					</div></dd><dt><span class="term"><code class="literal">org.jboss.seam.bpm.processInstanceFinder</code></span></dt><dd><div class="para">
+						Manager for the process instance task list.
+					</div></dd><dt><span class="term"><code class="literal">org.jboss.seam.bpm.processInstanceList</code></span></dt><dd><div class="para">
+						The process instance task list.
+					</div></dd></dl></div><div class="para">
+			All of these components are installed whenever the component <code class="literal">org.jboss.seam.bpm.jbpm</code> is installed.
+		</div></div><div class="section" title="23.6. Security-related components"><div class="titlepage"><div><div><h2 class="title" id="id2772001">23.6. Security-related components</h2></div></div></div><div class="para">
+			These components relate to web-tier security.
+		</div><div class="variablelist"><dl><dt><span class="term"><code class="literal">org.jboss.seam.web.userPrincipal</code></span></dt><dd><div class="para">
+						Manager component for the current user <code class="literal">Principal</code>.
+					</div></dd><dt><span class="term"><code class="literal">org.jboss.seam.web.isUserInRole</code></span></dt><dd><div class="para">
+						Allows JSF pages to choose to render a control, depending upon the roles available to the current principal. <code class="literal">&lt;h:commandButton value="edit" rendered="#{isUserInRole['admin']}"/&gt;</code>.
+					</div></dd></dl></div></div><div class="section" title="23.7. JMS-related components"><div class="titlepage"><div><div><h2 class="title" id="id2772063">23.7. JMS-related components</h2></div></div></div><div class="para">
+			These components are for use with managed <code class="literal">TopicPublisher</code>s and <code class="literal">QueueSender</code>s (see below).
+		</div><div class="variablelist"><dl><dt><span class="term"><code class="literal">org.jboss.seam.jms.queueSession</code></span></dt><dd><div class="para">
+						Manager component for a JMS <code class="literal">QueueSession</code> .
+					</div></dd><dt><span class="term"><code class="literal">org.jboss.seam.jms.topicSession</code></span></dt><dd><div class="para">
+						Manager component for a JMS <code class="literal">TopicSession</code> .
+					</div></dd></dl></div></div><div class="section" title="23.8. Mail-related components"><div class="titlepage"><div><div><h2 class="title" id="components.mail">23.8. Mail-related components</h2></div></div></div><div class="para">
+			These components are for use with Seam's Email support
+		</div><div class="variablelist"><dl><dt><span class="term"><code class="literal">org.jboss.seam.mail.mailSession</code></span></dt><dd><div class="para">
+						Manager component for a JavaMail <code class="literal">Session</code>. The session can be either looked up in the JNDI context (by setting the <code class="literal">sessionJndiName</code> property) or it can created from the configuration options in which case the <code class="literal">host</code> is mandatory.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">org.jboss.seam.mail.mailSession.host</code> — the hostname of the SMTP server to use
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">org.jboss.seam.mail.mailSession.port</code> — the port of the SMTP server to use
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">org.jboss.seam.mail.mailSession.username</code> — the username to use to connect to the SMTP server.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">org.jboss.seam.mail.mailSession.password</code> — the password to use to connect to the SMTP server
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">org.jboss.seam.mail.mailSession.debug</code> — enable JavaMail debugging (very verbose)
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">org.jboss.seam.mail.mailSession.ssl</code> — enable SSL connection to SMTP (will default to port 465)
+							</div><div class="para">
+								<code class="literal">org.jboss.seam.mail.mailSession.tls</code> — by default true, enable TLS support in the mail session
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">org.jboss.seam.mail.mailSession.sessionJndiName</code> — name under which a javax.mail.Session is bound to JNDI. If supplied, all other properties will be ignored.
+							</div></li></ul></div></dd></dl></div></div><div class="section" title="23.9. Infrastructural components"><div class="titlepage"><div><div><h2 class="title" id="id2772289">23.9. Infrastructural components</h2></div></div></div><div class="para">
+			These components provide critical platform infrastructure. You can install a component which isn't installed by default by setting <code class="literal">install="true"</code> on the component in <code class="literal">components.xml</code>.
+		</div><div class="variablelist"><dl><dt><span class="term"><code class="literal">org.jboss.seam.core.init</code></span></dt><dd><div class="para">
+						Initialization settings for Seam. Always installed.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">org.jboss.seam.core.init.jndiPattern</code> — the JNDI pattern used for looking up session beans
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">org.jboss.seam.core.init.debug</code> — enable Seam debug mode. This should be set to false when in production. You may see errors if the system is placed under any load and debug is enabled.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">org.jboss.seam.core.init.clientSideConversations</code> — if set to <code class="literal">true</code>, Seam will save conversation context variables in the client instead of in the <code class="literal">HttpSession</code>.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">org.jboss.seam.core.init.userTransactionName</code> — the JNDI name to use when looking up the JTA <code class="literal">UserTransaction</code> object.
+							</div></li></ul></div></dd><dt><span class="term"><code class="literal">org.jboss.seam.core.manager</code></span></dt><dd><div class="para">
+						Internal component for Seam page and conversation context management. Always installed.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">org.jboss.seam.core.manager.conversationTimeout</code> — the conversation context timeout in milliseconds.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">org.jboss.seam.core.manager.concurrentRequestTimeout</code> — maximum wait time for a thread attempting to gain a lock on the long-running conversation context.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">org.jboss.seam.core.manager.conversationIdParameter</code> — the request parameter used to propagate the conversation id, default to <code class="literal">conversationId</code>.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">org.jboss.seam.core.manager.conversationIsLongRunningParameter</code> — the request parameter used to propagate information about whether the conversation is long-running, default to <code class="literal">conversationIsLongRunning</code>.
+							</div></li></ul></div></dd><dt><span class="term"><code class="literal">org.jboss.seam.navigation.pages</code></span></dt><dd><div class="para">
+						Internal component for Seam workspace management. Always installed.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">org.jboss.seam.navigation.pages.noConversationViewId</code> — global setting for the view id to redirect to when a conversation entry is not found on the server side.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">org.jboss.seam.navigation.pages.loginViewId</code> — global setting for the view id to redirect to when an unauthenticated user tries to access a protected view.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">org.jboss.seam.navigation.pages.httpPort</code> — global setting for the port to use when the http scheme is requested.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">org.jboss.seam.navigation.pages.httpsPort</code> — global setting for the port to use when the https scheme is requested.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">org.jboss.seam.navigation.pages.resources</code> — a list of resources to search for <code class="literal">pages.xml</code> style resources. Defaults to <code class="literal">WEB-INF/pages.xml</code>.
+							</div></li></ul></div></dd><dt><span class="term"><code class="literal">org.jboss.seam.bpm.jbpm</code></span></dt><dd><div class="para">
+						Bootstraps a <code class="literal">JbpmConfiguration</code>. Install as class <code class="literal">org.jboss.seam.bpm.Jbpm</code>.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">org.jboss.seam.bpm.jbpm.processDefinitions</code> — a list of resource names of jPDL files to be used for orchestration of business processes.
+							</div></li><li class="listitem"><div class="para">
+								<code class="literal">org.jboss.seam.bpm.jbpm.pageflowDefinitions</code> — a list of resource names of jPDL files to be used for orchestration of conversation page flows.
+							</div></li></ul></div></dd><dt><span class="term"><code class="literal">org.jboss.seam.core.conversationEntries</code></span></dt><dd><div class="para">
+						Internal session-scoped component recording the active long-running conversations between requests.
+					</div></dd><dt><span class="term"><code class="literal">org.jboss.seam.faces.facesPage</code></span></dt><dd><div class="para">
+						Internal page-scoped component recording the conversation context associated with a page.
+					</div></dd><dt><span class="term"><code class="literal">org.jboss.seam.persistence.persistenceContexts</code></span></dt><dd><div class="para">
+						Internal component recording the persistence contexts which were used in the current conversation.
+					</div></dd><dt><span class="term"><code class="literal">org.jboss.seam.jms.queueConnection</code></span></dt><dd><div class="para">
+						Manages a JMS <code class="literal">QueueConnection</code>. Installed whenever managed managed <code class="literal">QueueSender</code> is installed.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">org.jboss.seam.jms.queueConnection.queueConnectionFactoryJndiName</code> — the JNDI name of a JMS <code class="literal">QueueConnectionFactory</code>. Default to <code class="literal">UIL2ConnectionFactory</code>
+							</div></li></ul></div></dd><dt><span class="term"><code class="literal">org.jboss.seam.jms.topicConnection</code></span></dt><dd><div class="para">
+						Manages a JMS <code class="literal">TopicConnection</code>. Installed whenever managed managed <code class="literal">TopicPublisher</code> is installed.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">org.jboss.seam.jms.topicConnection.topicConnectionFactoryJndiName</code> — the JNDI name of a JMS <code class="literal">TopicConnectionFactory</code>. Default to <code class="literal">UIL2ConnectionFactory</code>
+							</div></li></ul></div></dd><dt><span class="term"><code class="literal">org.jboss.seam.persistence.persistenceProvider</code></span></dt><dd><div class="para">
+						Abstraction layer for non-standardized features of JPA provider.
+					</div></dd><dt><span class="term"><code class="literal">org.jboss.seam.core.validators</code></span></dt><dd><div class="para">
+						Caches instances of Hibernate Validator <code class="literal">ClassValidator</code>.
+					</div></dd><dt><span class="term"><code class="literal">org.jboss.seam.faces.validation</code></span></dt><dd><div class="para">
+						Allows the application to determine whether validation failed or was successful.
+					</div></dd><dt><span class="term"><code class="literal">org.jboss.seam.debug.introspector</code></span></dt><dd><div class="para">
+						Support for the Seam Debug Page.
+					</div></dd><dt><span class="term"><code class="literal">org.jboss.seam.debug.contexts</code></span></dt><dd><div class="para">
+						Support for the Seam Debug Page.
+					</div></dd><dt><span class="term"><code class="literal">org.jboss.seam.exception.exceptions</code></span></dt><dd><div class="para">
+						Internal component for exception handling.
+					</div></dd><dt><span class="term"><code class="literal">org.jboss.seam.transaction.transaction</code></span></dt><dd><div class="para">
+						API for controlling transactions and abstracting the underlying transaction management implementation behind a JTA-compatible interface.
+					</div></dd><dt><span class="term"><code class="literal">org.jboss.seam.faces.safeActions</code></span></dt><dd><div class="para">
+						Decides if an action expression in an incoming URL is safe. This is done by checking that the action expression exists in the view.
+					</div></dd></dl></div></div><div class="section" title="23.10. Miscellaneous components"><div class="titlepage"><div><div><h2 class="title" id="id2740138">23.10. Miscellaneous components</h2></div></div></div><div class="variablelist"><dl><dt><span class="term"><code class="literal">org.jboss.seam.async.dispatcher</code></span></dt><dd><div class="para">
+						Dispatcher stateless session bean for asynchronous methods.
+					</div></dd></dl></div><div class="variablelist"><dl><dt><span class="term"><code class="literal">org.jboss.seam.core.image</code></span></dt><dd><div class="para">
+						Image manipulation and interrogation.
+					</div></dd></dl></div><div class="variablelist"><dl><dt><span class="term"><code class="literal">org.jboss.seam.core.pojoCache</code></span></dt><dd><div class="para">
+						Manager component for a PojoCache instance.
+					</div></dd></dl></div><div class="variablelist"><dl><dt><span class="term"><code class="literal">org.jboss.seam.core.uiComponent</code></span></dt><dd><div class="para">
+						Manages a map of UIComponents keyed by component id.
+					</div></dd></dl></div></div><div class="section" title="23.11. Special components"><div class="titlepage"><div><div><h2 class="title" id="id2740239">23.11. Special components</h2></div></div></div><div class="para">
+			Certain special Seam component classes are installable multiple times under names specified in the Seam configuration. For example, the following lines in <code class="literal">components.xml</code> install and configure two Seam components:
+		</div><pre class="programlisting XML">&lt;component name="bookingDatabase"
+          class="org.jboss.seam.persistence.ManagedPersistenceContext"&gt;
+    &lt;property name="persistenceUnitJndiName"&gt;java:/comp/emf/bookingPersistence&lt;/property&gt;
+&lt;/component&gt;
+
+&lt;component name="userDatabase"
+          class="org.jboss.seam.persistence.ManagedPersistenceContext"&gt;
+    &lt;property name="persistenceUnitJndiName"&gt;java:/comp/emf/userPersistence&lt;/property&gt;
+&lt;/component&gt;
+</pre><div class="para">
+			The Seam component names are <code class="literal">bookingDatabase</code> and <code class="literal">userDatabase</code>.
+		</div><div class="variablelist"><dl><dt><span class="term"><span class="emphasis"><em>&lt;entityManager&gt;</em></span>, </span><span class="term"><code class="literal">org.jboss.seam.persistence.ManagedPersistenceContext</code></span></dt><dd><div class="para">
+						Manager component for a conversation scoped managed <code class="literal">EntityManager</code> with an extended persistence context.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<span class="emphasis"><em>&lt;entityManager&gt;</em></span>.entityManagerFactory — a value binding expression that evaluates to an instance of <code class="literal">EntityManagerFactory</code>.
+							</div><div class="para">
+								<span class="emphasis"><em>&lt;entityManager&gt;</em></span>.persistenceUnitJndiName — the JNDI name of the entity manager factory, default to java:/<span class="emphasis"><em>&lt;managedPersistenceContext&gt;</em></span>.
+							</div></li></ul></div></dd><dt><span class="term"><span class="emphasis"><em>&lt;entityManagerFactory&gt;</em></span>, </span><span class="term"><code class="literal">org.jboss.seam.persistence.EntityManagerFactory</code></span></dt><dd><div class="para">
+						Manages a JPA <code class="literal">EntityManagerFactory</code>. This is most useful when using JPA outside of an EJB 3.0 supporting environment.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">entityManagerFactory.persistenceUnitName</code> — the name of the persistence unit.
+							</div></li></ul></div><div class="para">
+						See the API JavaDoc for further configuration properties.
+					</div></dd><dt><span class="term"><span class="emphasis"><em>&lt;session&gt;</em></span>, </span><span class="term"><code class="literal">org.jboss.seam.persistence.ManagedSession</code></span></dt><dd><div class="para">
+						Manager component for a conversation scoped managed Hibernate <code class="literal">Session</code>.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<span class="emphasis"><em>&lt;session&gt;</em></span>.sessionFactory — a value binding expression that evaluates to an instance of <code class="literal">SessionFactory</code>.
+							</div><div class="para">
+								<span class="emphasis"><em>&lt;session&gt;</em></span>.sessionFactoryJndiName — the JNDI name of the session factory, default to java:/<span class="emphasis"><em>&lt;managedSession&gt;</em></span>.
+							</div></li></ul></div></dd><dt><span class="term"><span class="emphasis"><em>&lt;sessionFactory&gt;</em></span>, </span><span class="term"><code class="literal">org.jboss.seam.persistence.HibernateSessionFactory</code></span></dt><dd><div class="para">
+						Manages a Hibernate <code class="literal">SessionFactory</code>.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<code class="literal">&lt;sessionFactory&gt;.cfgResourceName</code> — the path to the configuration file. Default to <code class="literal">hibernate.cfg.xml</code>.
+							</div></li></ul></div><div class="para">
+						See the API JavaDoc for further configuration properties.
+					</div></dd><dt><span class="term"><span class="emphasis"><em>&lt;managedQueueSender&gt;</em></span>, </span><span class="term"><code class="literal">org.jboss.seam.jms.ManagedQueueSender</code></span></dt><dd><div class="para">
+						Manager component for an event scoped managed JMS <code class="literal">QueueSender</code>.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<span class="emphasis"><em>&lt;managedQueueSender&gt;</em></span>.queueJndiName — the JNDI name of the JMS queue.
+							</div></li></ul></div></dd><dt><span class="term"><span class="emphasis"><em>&lt;managedTopicPublisher&gt;</em></span>, </span><span class="term"><code class="literal">org.jboss.seam.jms.ManagedTopicPublisher</code></span></dt><dd><div class="para">
+						Manager component for an event scoped managed JMS <code class="literal">TopicPublisher</code>.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<span class="emphasis"><em>&lt;managedTopicPublisher&gt;</em></span>.topicJndiName — the JNDI name of the JMS topic.
+							</div></li></ul></div></dd><dt><span class="term"><span class="emphasis"><em>&lt;managedWorkingMemory&gt;</em></span>, </span><span class="term"><code class="literal">org.jboss.seam.drools.ManagedWorkingMemory</code></span></dt><dd><div class="para">
+						Manager component for a conversation scoped managed Drools <code class="literal">WorkingMemory</code>.
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<span class="emphasis"><em>&lt;managedWorkingMemory&gt;</em></span>.ruleBase — a value expression that evaluates to an instance of <code class="literal">RuleBase</code>.
+							</div></li></ul></div></dd><dt><span class="term"><span class="emphasis"><em>&lt;ruleBase&gt;</em></span>, </span><span class="term"><code class="literal">org.jboss.seam.drools.RuleBase</code></span></dt><dd><div class="para">
+						Manager component for an application scoped Drools <code class="literal">RuleBase</code>. <span class="emphasis"><em>Note that this is not really intended for production usage, since it does not support dynamic installation of new rules.</em></span>
+					</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+								<span class="emphasis"><em>&lt;ruleBase&gt;</em></span>.ruleFiles — a list of files containing Drools rules.
+							</div><div class="para">
+								<span class="emphasis"><em>&lt;ruleBase&gt;</em></span>.dslFile — a Drools DSL definition.
+							</div></li></ul></div></dd></dl></div></div></div><div xml:lang="en-US" class="chapter" title="Chapter 24. Seam JSF controls" lang="en-US"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_JSF_controls">Chapter 24. Seam JSF controls</h2></div></div></div><div class="para">
+		Seam includes a number of JSF controls that are useful for working with Seam. These are intended to complement the built-in JSF controls, and controls from other third-party libraries. We recommend the Ajax4JSF and ADF faces (now Trinidad) tag libraries for use with Seam. We do not recommend the use of the Tomahawk tag library.
+	</div><div class="para">
+		To use these controls, define the "<code class="literal">s</code>" namespace in your page as follows (facelets only):
+	</div><pre class="programlisting">
+&lt;html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:s="http://jboss.com/products/seam/taglib"&gt;
+</pre><div class="para">
+		The ui example demonstrates the use of a number of these tags.
+	</div><div class="table" id="Seam_Reference_Guide-Seam_JSF_controls-Seam_JSF_Control_Reference"><div class="table-contents"><table summary="Seam JSF Control Reference" border="1"><colgroup><col width="25%" /><col width="75%" /></colgroup><tbody><tr><td valign="top">
+						<div class="para">
+							<code class="literal">&lt;s:validate&gt;</code>
+						</div>
+					</td><td valign="top">
+						<div class="para">
+							<span class="emphasis"><em>Description</em></span>
+						</div>
+						<div class="para">
+							A non-visual control, validates a JSF input field against the bound property using Hibernate Validator.
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Attributes</em></span>
+						</div>
+						<div class="para">
+							None.
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Usage</em></span>
+						</div>
+						
+<pre class="programlisting">
+&lt;h:inputText id="userName" required="true" value="#{customer.userName}"&gt;
+  &lt;s:validate /&gt;
+&lt;/h:inputText&gt;
+&lt;h:message for="userName" styleClass="error" /&gt;
+</pre>
+					</td></tr><tr><td valign="top">
+						<div class="para">
+							<code class="literal">&lt;s:validateAll&gt;</code>
+						</div>
+					</td><td valign="top">
+						<div class="para">
+							<span class="emphasis"><em>Description</em></span>
+						</div>
+						<div class="para">
+							A non-visual control, validates all child JSF input fields against their bound properties using Hibernate Validator.
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Attributes</em></span>
+						</div>
+						<div class="para">
+							None.
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Usage</em></span>
+						</div>
+						
+<pre class="programlisting">
+&lt;s:validateAll&gt;
+  &lt;div class="entry"&gt;
+    &lt;h:outputLabel for="username"&gt;Username:&lt;/h:outputLabel&gt;
+    &lt;h:inputText id="username" value="#{user.username}" required="true"/&gt;
+    &lt;h:message for="username" styleClass="error" /&gt;
+  &lt;/div&gt;
+  &lt;div class="entry"&gt;
+    &lt;h:outputLabel for="password"&gt;Password:&lt;/h:outputLabel&gt;
+    &lt;h:inputSecret id="password" value="#{user.password}" required="true"/&gt;
+    &lt;h:message for="password" styleClass="error" /&gt;
+  &lt;/div&gt;
+  &lt;div class="entry"&gt;
+    &lt;h:outputLabel for="verify"&gt;Verify Password:&lt;/h:outputLabel&gt;
+    &lt;h:inputSecret id="verify" value="#{register.verify}" required="true"/&gt;
+    &lt;h:message for="verify" styleClass="error" /&gt;
+  &lt;/div&gt;
+&lt;/s:validateAll&gt;
+</pre>
+					</td></tr><tr><td valign="top">
+						<div class="para">
+							<code class="literal">&lt;s:formattedText&gt;</code>
+						</div>
+					</td><td valign="top">
+						<div class="para">
+							<span class="emphasis"><em>Description</em></span>
+						</div>
+						<div class="para">
+							Outputs <span class="emphasis"><em>Seam Text</em></span>, a rich text markup useful for blogs, wikis and other applications that might use rich text. See the Seam Text chapter for full usage.
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Attributes</em></span>
+						</div>
+						<div class="itemizedlist"><ul><li class="listitem"><div class="para">
+									<code class="literal">value</code> — an EL expression specifying the rich text markup to render.
+								</div></li></ul></div>
+						<div class="para">
+							<span class="emphasis"><em>Usage</em></span>
+						</div>
+						
+<pre class="programlisting">&lt;s:formattedText value="#{blog.text}"/&gt;
+</pre>
+						<div class="para">
+							<span class="emphasis"><em>Example</em></span>
+						</div>
+						<div class="mediaobject" align="center"><img src="images/controls-seamtext.png" align="middle" width="444" /></div>
+					</td></tr><tr><td valign="top">
+						<div class="para">
+							<code class="literal">&lt;s:convertDateTime&gt;</code>
+						</div>
+					</td><td valign="top">
+						<div class="para">
+							<span class="emphasis"><em>Description</em></span>
+						</div>
+						<div class="para">
+							Perform date or time conversions in the Seam timezone.
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Attributes</em></span>
+						</div>
+						<div class="para">
+							None.
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Usage</em></span>
+						</div>
+						
+<pre class="programlisting">
+</pre>
+					</td></tr><tr><td valign="top">
+						<div class="para">
+							<code class="literal">&lt;s:convertEnum&gt;</code>
+						</div>
+					</td><td valign="top">
+						<div class="para">
+							<span class="emphasis"><em>Description</em></span>
+						</div>
+						<div class="para">
+							Assigns an enum converter to the current component. This is primarily useful for radio button and dropdown controls.
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Attributes</em></span>
+						</div>
+						<div class="para">
+							None.
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Usage</em></span>
+						</div>
+						
+<pre class="programlisting">
+</pre>
+					</td></tr><tr><td valign="top">
+						<div class="para">
+							<code class="literal">&lt;s:convertEntity&gt;</code>
+						</div>
+					</td><td valign="top">
+						<div class="para">
+							<span class="emphasis"><em>Description</em></span>
+						</div>
+						<div class="para">
+							Assigns an entity converter to the current component. This is primarily useful for radio button and dropdown controls.
+						</div>
+						<div class="para">
+							The converter works with any entity which has an <code class="literal">@Id</code> annotation - either simple or composite. If your <span class="emphasis"><em>Managed Persistence Context</em></span> is not called <code class="literal">entityManager</code>, then you need to set it in components.xml:
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Attributes</em></span>
+						</div>
+						<div class="para">
+							None.
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Configuration</em></span>
+						</div>
+						
+<pre class="programlisting">
+  &lt;component name="org.jboss.seam.ui.entityConverter"&gt;
+      &lt;property name="entityManager"&gt;#{em}&lt;/property&gt;
+  &lt;/component&gt;
+</pre>
+						<div class="para">
+							<span class="emphasis"><em>Usage</em></span>
+						</div>
+						
+<pre class="programlisting">&lt;h:selectOneMenu value="#{person.continent}" required="true"&gt;
+    &lt;s:selectItems value="#{continents.resultList}" var="continent" label="#{continent.name}" noSelectionLabel="Please Select..."/&gt;
+    &lt;s:convertEntity /&gt;
+&lt;/h:selectOneMenu&gt;
+</pre>
+					</td></tr><tr><td valign="top">
+						<div class="para">
+							<code class="literal">&lt;s:enumItem&gt;</code>
+						</div>
+					</td><td valign="top">
+						<div class="para">
+							<span class="emphasis"><em>Description</em></span>
+						</div>
+						<div class="para">
+							Creates a <code class="literal">SelectItem</code> from an enum value.
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Attributes</em></span>
+						</div>
+						<div class="itemizedlist"><ul><li class="listitem"><div class="para">
+									<code class="literal">enumValue</code> — the string representation of the enum value.
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">label</code> — the label to be used when rendering the <code class="literal">SelectItem</code>.
+								</div></li></ul></div>
+						<div class="para">
+							<span class="emphasis"><em>Usage</em></span>
+						</div>
+						<div class="para">
+							
+<pre class="programlisting">
+</pre>
+						</div>
+					</td></tr><tr><td valign="top">
+						<div class="para">
+							<code class="literal">&lt;s:selectItems&gt;</code>
+						</div>
+					</td><td valign="top">
+						<div class="para">
+							<span class="emphasis"><em>Description</em></span>
+						</div>
+						<div class="para">
+							Creates a <code class="literal">List&lt;SelectItem&gt;</code> from a List, Set, DataModel or Array.
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Attributes</em></span>
+						</div>
+						<div class="itemizedlist"><ul><li class="listitem"><div class="para">
+									<code class="literal">value</code> — an EL expression specifying the data that backs the <code class="literal">List&lt;SelectItem&gt;</code>
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">var</code> — defines the name of the local variable that holds the current object during iteration
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">label</code> — the label to be used when rendering the <code class="literal">SelectItem</code>. Can reference the <code class="literal">var</code> variable
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">disabled</code> — if true the <code class="literal">SelectItem</code> will be rendered disabled. Can reference the <code class="literal">var</code> variable
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">noSelectionLabel</code> — specifies the (optional) label to place at the top of list (if <code class="literal">required="true"</code> is also specified then selecting this value will cause a validation error)
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">hideNoSelectionLabel</code> — if true, the <code class="literal">noSelectionLabel</code> will be hidden when a value is selected
+								</div></li></ul></div>
+						<div class="para">
+							<span class="emphasis"><em>Usage</em></span>
+						</div>
+						<div class="para">
+							
+<pre class="programlisting">
+
+&lt;h:selectOneMenu value="#{person.age}"  converter="#{converters.ageConverter}"&gt;
+    &lt;s:selectItems value="#{ages}" var="age" label="#{age}" /&gt;
+&lt;/h:selectOneMenu&gt;
+</pre>
+						</div>
+					</td></tr><tr><td valign="top">
+						<div class="para">
+							<code class="literal">&lt;s:graphicImage&gt;</code>
+						</div>
+					</td><td valign="top">
+						<div class="para">
+							<span class="emphasis"><em>Description</em></span>
+						</div>
+						<div class="para">
+							An extended <code class="literal">&lt;h:graphicImage&gt;</code> that allows the image to be created in a Seam Component; further transforms can be applied to the image. <span class="emphasis"><em>Facelets only.</em></span>
+						</div>
+						<div class="para">
+							All attributes for <code class="literal">&lt;h:graphicImage&gt;</code> are supported, as well as:
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Attributes</em></span>
+						</div>
+						<div class="itemizedlist"><ul><li class="listitem"><div class="para">
+									<code class="literal">value</code> — image to display. Can be a path <code class="literal">String</code> (loaded from the classpath), a <code class="literal">byte[]</code>, a <code class="literal">java.io.File</code>, a <code class="literal">java.io.InputStream</code> or a <code class="literal">java.net.URL</code>. Currently supported image formats are <code class="literal">image/png</code>, <code class="literal">image/jpeg</code> and <code class="literal">image/gif</code>.
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">fileName</code> — if not specified the served image will have a generated file name. If you want to name your file, you should specify it here. This name should be unique
+								</div></li></ul></div>
+						<div class="para">
+							<span class="emphasis"><em>Transformations</em></span>
+						</div>
+						<div class="para">
+							To apply a transform to the image, you would nest a tag specifying the transform to apply. Seam currently supports these transforms:
+						</div>
+						<div class="variablelist"><dl><dt><span class="term"><code class="literal">&lt;s:transformImageSize&gt;</code></span></dt><dd><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+												<code class="literal">width</code> — new width of the image
+											</div></li><li class="listitem"><div class="para">
+												<code class="literal">height</code> — new height of the image
+											</div></li><li class="listitem"><div class="para">
+												<code class="literal">maintainRatio</code> — if <code class="literal">true</code>, and <span class="emphasis"><em>one</em></span> of <code class="literal">width</code>/<code class="literal">height</code> are specified, the image will be resized with the dimension not specified being calculated to maintain the aspect ratio.
+											</div></li><li class="listitem"><div class="para">
+												<code class="literal">factor</code> — scale the image by the given factor
+											</div></li></ul></div></dd><dt><span class="term"><code class="literal">&lt;s:transformImageBlur&gt;</code></span></dt><dd><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+												<code class="literal">radius</code> — perform a convolution blur with the given radius
+											</div></li></ul></div></dd><dt><span class="term"><code class="literal">&lt;s:transformImageType&gt;</code></span></dt><dd><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+												<code class="literal">contentType</code> — alter the type of the image to either <code class="literal">image/jpeg</code> or <code class="literal">image/png</code>
+											</div></li></ul></div></dd></dl></div>
+						<div class="para">
+							It is easy to create your own transform - create a <code class="literal">UIComponent</code> which <code class="literal">implements</code><code class="literal">org.jboss.seam.ui.graphicImage.ImageTransform</code>. Inside the <code class="literal">applyTransform()</code>method use <code class="literal">image.getBufferedImage()</code> to get the original image and <code class="literal">image.setBufferedImage()</code> to set your transformed image. Transforms are applied in the order specified in the view.
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Usage</em></span>
+						</div>
+						<div class="para">
+							
+<pre class="programlisting">
+</pre>
+						</div>
+					</td></tr><tr><td valign="top">
+						<div class="para">
+							<code class="literal">&lt;s:decorate&gt;</code>
+						</div>
+					</td><td valign="top">
+						<div class="para">
+							<span class="emphasis"><em>Description</em></span>
+						</div>
+						<div class="para">
+							"Decorate" a JSF input field when validation fails or when <code class="literal">required="true"</code> is set.
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Attributes</em></span>
+						</div>
+						<div class="para">
+							None.
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Usage</em></span>
+						</div>
+						<div class="para">
+							
+<pre class="programlisting">
+</pre>
+						</div>
+					</td></tr><tr><td valign="top">
+						<div class="para">
+							<code class="literal">&lt;s:layoutForm&gt;</code>
+						</div>
+					</td><td valign="top">
+						<div class="para">
+							<span class="emphasis"><em>Description</em></span>
+						</div>
+						<div class="para">
+							A layout component for producing a "standard" form layout. Each child component will be treated as a row, and if the child is a <code class="literal">&lt;s:decorate&gt;</code>, additional formatting will be applied: 
+							<div class="itemizedlist"><ul><li class="listitem"><div class="para">
+										Label — if a <code class="literal">label</code> facet is on the <code class="literal">&lt;s:decorate&gt;</code> then it's contents will be used as the label for this field. The labels are rendered right-aligned in a column
+									</div><div class="para">
+										Some further decoration facets are supported - <code class="literal">beforeLabel</code>, <code class="literal">afterLabel</code>, <code class="literal">aroundLabel</code>, <code class="literal">beforeInvalidLabel</code>, <code class="literal">afterInvalidLabel</code> and <code class="literal">aroundInvalidLabel</code>.
+									</div></li><li class="listitem"><div class="para">
+										Other text — if a <code class="literal">belowLabel</code> facet or/and a <code class="literal">belowField</code> facet are present on <code class="literal">&lt;s:decorate&gt;</code> then it's contents will be placed below the label or the field
+									</div></li><li class="listitem"><div class="para">
+										Required — if <code class="literal">required="true"</code> is set on the field, then the <code class="literal">aroundRequiredField</code>, <code class="literal">beforeRequiredField</code>, <code class="literal">afterRequiredField</code>, <code class="literal">aroundRequiredLabel</code>, <code class="literal">beforeRequiredLabel</code> and <code class="literal">afterRequiredLabel</code> will be applied.
+									</div></li></ul></div>
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Attributes</em></span>
+						</div>
+						<div class="para">
+							None.
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Usage</em></span>
+						</div>
+						<div class="para">
+							
+<pre class="programlisting">
+&lt;s:layoutForm&gt;
+   &lt;f:facet name="aroundInvalidField"&gt;
+       &lt;s:span styleClass="error"/&gt;
+   &lt;/f:facet&gt;
+   &lt;f:facet name="afterInvalidField"&gt;
+       &lt;s:message /&gt;
+   &lt;/f:facet&gt;
+   &lt;f:facet name="beforeRequiredLabel"&gt;
+   	&lt;s:span&gt;∗&lt;/s:span&gt;
+   &lt;/f:facet&gt;
+   &lt;f:facet name="aroundLabel"&gt;
+   	&lt;s:span style="text-align:right;" /&gt;
+   &lt;/f:facet&gt;
+   &lt;f:facet name="aroundInvalidLabel"&gt;
+   	&lt;s:span style="text-align:right;" styleClass="error" /&gt;
+   &lt;/f:facet&gt;
+   &lt;s:decorate&gt;
+        &lt;f:facet name="label"&gt;
+		    &lt;h:outputText value="Name" /&gt;
+        &lt;/f:facet&gt;
+        &lt;h:inputText value="#{person.name}" required="true"/&gt;
+        &lt;f:facet name="belowField"&gt;
+            &lt;h:outputText styleClass="help" 
+               value="Enter your name as it appears 
+                  on your passport" /&gt;
+        &lt;/f:facet&gt;
+    &lt;/s:decorate&gt;
+&lt;/s:layoutForm&gt;
+</pre>
+						</div>
+						<div class="mediaobject"><img src="images/layoutForm-example.png" /></div>
+					</td></tr><tr><td valign="top">
+						<div class="para">
+							<code class="literal">&lt;s:message&gt;</code>
+						</div>
+					</td><td valign="top">
+						<div class="para">
+							<span class="emphasis"><em>Description</em></span>
+						</div>
+						<div class="para">
+							"Decorate" a JSF input field with the validation error message.
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Attributes</em></span>
+						</div>
+						<div class="para">
+							None.
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Usage</em></span>
+						</div>
+						<div class="para">
+							
+<pre class="programlisting">
+</pre>
+						</div>
+					</td></tr><tr><td valign="top">
+						<div class="para">
+							<code class="literal">&lt;s:span&gt;</code>
+						</div>
+					</td><td valign="top">
+						<div class="para">
+							<span class="emphasis"><em>Description</em></span>
+						</div>
+						<div class="para">
+							Render a HTML <code class="literal">&lt;span&gt;</code>.
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Attributes</em></span>
+						</div>
+						<div class="para">
+							None.
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Usage</em></span>
+						</div>
+						<div class="para">
+							
+<pre class="programlisting">
+</pre>
+						</div>
+					</td></tr><tr><td valign="top">
+						<div class="para">
+							<code class="literal">&lt;s:div&gt;</code>
+						</div>
+					</td><td valign="top">
+						<div class="para">
+							<span class="emphasis"><em>Description</em></span>
+						</div>
+						<div class="para">
+							Render a HTML <code class="literal">&lt;div&gt;</code>.
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Attributes</em></span>
+						</div>
+						<div class="para">
+							None.
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Usage</em></span>
+						</div>
+						<div class="para">
+							
+<pre class="programlisting">
+</pre>
+						</div>
+					</td></tr><tr><td valign="top">
+						<div class="para">
+							<code class="literal">&lt;s:fragment&gt;</code>
+						</div>
+					</td><td valign="top">
+						<div class="para">
+							<span class="emphasis"><em>Description</em></span>
+						</div>
+						<div class="para">
+							A non-rendering component useful for enabling/disabling rendering of it's children.
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Attributes</em></span>
+						</div>
+						<div class="para">
+							None.
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Usage</em></span>
+						</div>
+						<div class="para">
+							
+<pre class="programlisting">
+</pre>
+						</div>
+					</td></tr><tr><td valign="top">
+						<div class="para">
+							<code class="literal">&lt;s:cache&gt;</code>
+						</div>
+					</td><td valign="top">
+						<div class="para">
+							<span class="emphasis"><em>Description</em></span>
+						</div>
+						<div class="para">
+							Cache the rendered page fragment using JBoss Cache. Note that <code class="literal">&lt;s:cache&gt;</code> actually uses the instance of JBoss Cache managed by the built-in <code class="literal">pojoCache</code> component.
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Attributes</em></span>
+						</div>
+						<div class="itemizedlist"><ul><li class="listitem"><div class="para">
+									<code class="literal">key</code> — the key to cache rendered content, often a value expression. For example, if we were caching a page fragment that displays a document, we might use <code class="literal">key="Document-#{document.id}"</code>.
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">enabled</code> — a value expression that determines if the cache should be used.
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">region</code> — a JBoss Cache node to use (different nodes can have different expiry policies).
+								</div></li></ul></div>
+						<div class="para">
+							<span class="emphasis"><em>Usage</em></span>
+						</div>
+						<div class="para">
+							
+<pre class="programlisting">
+</pre>
+						</div>
+					</td></tr><tr><td valign="top">
+						<div class="para">
+							<code class="literal">&lt;s:link&gt;</code>
+						</div>
+					</td><td valign="top">
+						<div class="para">
+							<span class="emphasis"><em>Description</em></span>
+						</div>
+						<div class="para">
+							A link that supports invocation of an action with control over conversation propagation. <span class="emphasis"><em>Does not submit the form.</em></span>
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Attributes</em></span>
+						</div>
+						<div class="itemizedlist"><ul><li class="listitem"><div class="para">
+									<code class="literal">value</code> — the label.
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">action</code> — a method binding that specified the action listener.
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">view</code> — the JSF view id to link to.
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">fragment</code> — the fragment identifier to link to.
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">disabled</code> — is the link disabled?
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">propagation</code> — determines the conversation propagation style: <code class="literal">begin</code>, <code class="literal">join</code>, <code class="literal">nest</code>, <code class="literal">none</code> or <code class="literal">end</code>.
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">pageflow</code> — a pageflow definition to begin. (This is only useful when <code class="literal">propagation="begin"</code> or <code class="literal">propagation="join"</code>.)
+								</div></li></ul></div>
+						<div class="para">
+							<span class="emphasis"><em>Usage</em></span>
+						</div>
+						<div class="para">
+							
+<pre class="programlisting">
+</pre>
+						</div>
+					</td></tr><tr><td valign="top">
+						<div class="para">
+							<code class="literal">&lt;s:button&gt;</code>
+						</div>
+					</td><td valign="top">
+						<div class="para">
+							<span class="emphasis"><em>Description</em></span>
+						</div>
+						<div class="para">
+							A button that supports invocation of an action with control over conversation propagation. <span class="emphasis"><em>Does not submit the form.</em></span>
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Attributes</em></span>
+						</div>
+						<div class="itemizedlist"><ul><li class="listitem"><div class="para">
+									<code class="literal">value</code> — the label.
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">action</code> — a method binding that specified the action listener.
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">view</code> — the JSF view id to link to.
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">fragment</code> — the fragment identifier to link to.
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">disabled</code> — is the link disabled?
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">propagation</code> — determines the conversation propagation style: <code class="literal">begin</code>, <code class="literal">join</code>, <code class="literal">nest</code>, <code class="literal">none</code> or <code class="literal">end</code>.
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">pageflow</code> — a pageflow definition to begin. (This is only useful when <code class="literal">propagation="begin"</code> or <code class="literal">propagation="join"</code>.)
+								</div></li></ul></div>
+						<div class="para">
+							<span class="emphasis"><em>Usage</em></span>
+						</div>
+						<div class="para">
+							
+<pre class="programlisting">
+</pre>
+						</div>
+					</td></tr><tr><td valign="top">
+						<div class="para">
+							<code class="literal">&lt;s:selectDate&gt;</code>
+						</div>
+					</td><td valign="top">
+						<div class="para">
+							<span class="emphasis"><em>Description</em></span>
+						</div>
+						<div class="para">
+							Displays a dynamic date picker component that selects a date for the specified input field. The body of the <code class="literal">selectDate</code> element should contain HTML elements, such as text or an image, that prompt the user to click to display the date picker. The date picker <span class="emphasis"><em>must</em></span> be styled using CSS. An example CSS file can be found in the Seam booking demo as <code class="literal">date.css</code>, or can be generated using seam-gen. The CSS styles used to control the appearance of the date picker are also described below.
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Attributes</em></span>
+						</div>
+						<div class="itemizedlist"><ul><li class="listitem"><div class="para">
+									<code class="literal">for</code> — The id of the input field that the date picker will insert the selected date into.
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">dateFormat</code> — The date format string. This should match the date format of the input field.
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">startYear</code> — The popup year selector range will start at this year.
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">endYear</code> — The popup year selector range will end at this year.
+								</div></li></ul></div>
+						<div class="para">
+							<span class="emphasis"><em>Usage</em></span>
+						</div>
+						<div class="para">
+							
+<pre class="programlisting">
+  &lt;div class="row"&gt;
+    &lt;h:outputLabel for="dob"&gt;Date of birth&lt;em&gt;*&lt;/em&gt;&lt;/h:outputLabel&gt;
+    &lt;h:inputText id="dob" value="#{user.dob}" required="true"&gt;
+      &lt;s:convertDateTime pattern="MM/dd/yyyy"/&gt;
+    &lt;/h:inputText&gt;
+    &lt;s:selectDate for="dob" startYear="1910" endYear="2007"&gt;&lt;img src="img/datepicker.png"/&gt;&lt;/s:selectDate&gt;
+    &lt;div class="validationError"&gt;&lt;h:message for="dob"/&gt;&lt;/div&gt;
+  &lt;/div&gt;
+</pre>
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Example</em></span>
+						</div>
+						<div class="mediaobject" align="center"><img src="images/controls-selectdate.png" align="middle" /></div>
+						<div class="para">
+							<span class="emphasis"><em>CSS Styling</em></span>
+						</div>
+						<div class="para">
+							The following list describes the CSS class names that are used to control the style of the selectDate control.
+						</div>
+						<div class="itemizedlist"><ul><li class="listitem"><div class="para">
+									<code class="literal">seam-date</code> — This class is applied to the outer <code class="literal">div</code> containing the popup calendar. (1) It is also applied to the <code class="literal">table</code> that controls the inner layout of the calendar. (2)
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">seam-date-header</code> — This class is applied to the calendar header table row (<code class="literal">tr</code>) and header table cells (<code class="literal">td</code>). (3)
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">seam-date-header-prevMonth</code> — This class is applied to the "previous month" table cell, (<code class="literal">td</code>), which when clicked causes the calendar to display the month prior to the one currently displayed. (4)
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">seam-date-header-nextMonth</code> — This class is applied to the "next month" table cell, (<code class="literal">td</code>), which when clicked causes the calendar to display the month following the one currently displayed. (5)
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">seam-date-headerDays</code> — This class is applied to the calendar days header row (<code class="literal">tr</code>), which contains the names of the week days. (6)
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">seam-date-footer</code> — This class is applied to the calendar footer row (<code class="literal">tr</code>), which displays the current date. (7)
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">seam-date-inMonth</code> — This class is applied to the table cell (<code class="literal">td</code>) elements that contain a date within the month currently displayed. (8)
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">seam-date-outMonth</code> — This class is applied to the table cell (<code class="literal">td</code>) elements that contain a date outside of the month currently displayed. (9)
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">seam-date-selected</code> — This class is applied to the table cell (<code class="literal">td</code>) element that contains the currently selected date. (10)
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">seam-date-dayOff-inMonth</code> — This class is applied to the table cell (<code class="literal">td</code>) elements that contain a "day off" date (i.e. weekend days, Saturday and Sunday) within the currently selected month. (11)
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">seam-date-dayOff-outMonth</code> — This class is applied to the table cell (<code class="literal">td</code>) elements that contain a "day off" date (i.e. weekend days, Saturday and Sunday) outside of the currently selected month. (12)
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">seam-date-hover</code> — This class is applied to the table cell (<code class="literal">td</code>) element over which the cursor is hovering. (13)
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">seam-date-monthNames</code> — This class is applied to the <code class="literal">div</code> control that contains the popup month selector. (14)
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">seam-date-monthNameLink</code> — This class is applied to the anchor (<code class="literal">a</code>) controls that contain the popup month names. (15)
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">seam-date-years </code> — This class is applied to the <code class="literal">div</code> control that contains the popup year selector. (16)
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">seam-date-yearLink</code> — This class is applied to the anchor (<code class="literal">a</code>) controls that contain the popup years. (15)
+								</div></li></ul></div>
+						<div class="mediaobject" align="center"><img src="images/controls-selectdatecss.png" align="middle" width="444" /></div>
+					</td></tr><tr><td valign="top">
+						<div class="para">
+							<code class="literal">&lt;s:conversationPropagation&gt;</code>
+						</div>
+					</td><td valign="top">
+						<div class="para">
+							<span class="emphasis"><em>Description</em></span>
+						</div>
+						<div class="para">
+							Customize the conversation propagation for a command link or button (or similar JSF control). <span class="emphasis"><em>Facelets only.</em></span>
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Attributes</em></span>
+						</div>
+						<div class="itemizedlist"><ul><li class="listitem"><div class="para">
+									<code class="literal">propagation</code> — determines the conversation propagation style: <code class="literal">begin</code>, <code class="literal">join</code>, <code class="literal">nest</code>, <code class="literal">none</code> or <code class="literal">end</code>.
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">pageflow</code> — a pageflow definition to begin. (This is only useful when <code class="literal">propagation="begin"</code> or <code class="literal">propagation="join"</code>.)
+								</div></li></ul></div>
+						<div class="para">
+							<span class="emphasis"><em>Usage</em></span>
+						</div>
+						<div class="para">
+							
+<pre class="programlisting">
+</pre>
+						</div>
+					</td></tr><tr><td valign="top">
+						<div class="para">
+							<code class="literal">&lt;s:conversationId&gt;</code>
+						</div>
+					</td><td valign="top">
+						<div class="para">
+							<span class="emphasis"><em>Description</em></span>
+						</div>
+						<div class="para">
+							Add the conversation id to an output link (or similar JSF control). <span class="emphasis"><em>Facelets only.</em></span>
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Attributes</em></span>
+						</div>
+						<div class="para">
+							None.
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Usage</em></span>
+						</div>
+						<div class="para">
+							
+<pre class="programlisting">
+</pre>
+						</div>
+					</td></tr><tr><td valign="top">
+						<div class="para">
+							<code class="literal">&lt;s:taskId&gt;</code>
+						</div>
+					</td><td valign="top">
+						<div class="para">
+							<span class="emphasis"><em>Description</em></span>
+						</div>
+						<div class="para">
+							Add the task id to an output link (or similar JSF control), when the task is available via <code class="literal">#{task}</code>. <span class="emphasis"><em>Facelets only.</em></span>
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Attributes</em></span>
+						</div>
+						<div class="para">
+							None.
+						</div>
+						<div class="para">
+							<span class="emphasis"><em>Usage</em></span>
+						</div>
+						<div class="para">
+							
+<pre class="programlisting">
+</pre>
+						</div>
+					</td></tr><tr><td valign="top">
+						<div class="para">
+							<code class="literal">&lt;s:fileUpload&gt;</code>
+						</div>
+					</td><td valign="top">
+						<div class="para">
+							<span class="emphasis"><em>Description</em></span>
+						</div>
+						<div class="para">
+							Renders a file upload control. This control must be used within a form with an encoding type of <code class="literal">multipart/form-data</code>, i.e:
+						</div>
+						
+<pre class="programlisting">
+                       
+        &lt;h:form enctype="multipart/form-data"&gt;
+</pre>
+						<div class="para">
+							For multipart requests, the Seam Multipart servlet filter must also be configured in <code class="literal">web.xml</code>:
+						</div>
+						
+<pre class="programlisting">
+                       
+  &lt;filter&gt;
+    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;
+    &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-class&gt;
+  &lt;/filter&gt;
+
+  &lt;filter-mapping&gt;
+    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;
+    &lt;url-pattern&gt;/*&lt;/url-pattern&gt;
+  &lt;/filter-mapping&gt;
+</pre>
+						<div class="para">
+							<span class="emphasis"><em>Configuration</em></span>
+						</div>
+						<div class="para">
+							The following configuration options for multipart requests may be configured in components.xml:
+						</div>
+						<div class="itemizedlist"><ul><li class="listitem"><div class="para">
+									<code class="literal">createTempFiles</code> — if this option is set to true, uploaded files are streamed to a temporary file instead of in memory.
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">maxRequestSize</code> — the maximum size of a file upload request, in bytes.
+								</div></li></ul></div>
+						<div class="para">
+							Here's an example:
+						</div>
+						
+<pre class="programlisting">
+                       
+  &lt;component class="org.jboss.seam.web.MultipartFilter"&gt;
+      &lt;property name="createTempFiles"&gt;true&lt;/property&gt;
+      &lt;property name="maxRequestSize"&gt;1000000&lt;/property&gt;
+  &lt;/component&gt;
+</pre>
+						<div class="para">
+							<span class="emphasis"><em>Attributes</em></span>
+						</div>
+						<div class="itemizedlist"><ul><li class="listitem"><div class="para">
+									<code class="literal">data</code> — this value binding receives the binary file data. The receiving field should be declared as a <code class="literal">byte[]</code> or <code class="literal">InputStream</code> (required).
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">contentType</code> — this value binding receives the file's content type (optional).
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">fileName</code> — this value binding receives the filename (optional).
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">accept</code> — a comma-separated list of content types to accept, may not be supported by the browser. E.g. <code class="literal">"images/png,images/jpg"</code>, <code class="literal">"images/*"</code>.
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">style</code> — The control's style
+								</div></li><li class="listitem"><div class="para">
+									<code class="literal">styleClass</code> — The control's style class
+								</div></li></ul></div>
+						<div class="para">
+							<span class="emphasis"><em>Usage</em></span>
+						</div>
+						<div class="para">
+							
+<pre class="programlisting">
+</pre>
+						</div>
+					</td></tr></tbody></table></div><h6>Table 24.1. Seam JSF Control Reference</h6></div><br class="table-break" /></div><div xml:lang="en-US" class="chapter" title="Chapter 25. Expression language enhancements" lang="en-US"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Expression_language_enhancements">Chapter 25. Expression language enhancements</h2></div></div></div><div class="toc"><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Expression_language_enhancements-Configuration">25.1. Configuration</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Expression_language_enhancements-Usage">25.2. Usage</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Expression_language_enhancements-Limitations">25.3. Limitations</a></span></dt><dd><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Limitations-Incompatibility_with_JSP_2.1">25.3.1. Incompatibility with JSP 2.1</a></span></dt!
 ><dt><span class="section"><a href="#Seam_Reference_Guide-Limitations-Calling_a_MethodExpression_from_Java_code">25.3.2. Calling a <code class="literal">MethodExpression</code> from Java code</a></span></dt></dl></dd></dl></div><div class="para">
+		The standard Unified Expression Language (EL) assumes that any parameters to a method expression will be provided by Java code. This means that a method with parameters cannot be used as a JSF method binding. Seam provides an enhancement to the EL that allows parameters to be included in a method expression itself. This applies to <span class="emphasis"><em>any</em></span> Seam method expression, including any JSF method binding, for example:
+	</div><pre class="programlisting">&lt;s:commandButton action="#{hotelBooking.bookHotel(hotel)}" value="Book Hotel"/&gt;
+</pre><div class="section" title="25.1. Configuration"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Expression_language_enhancements-Configuration">25.1. Configuration</h2></div></div></div><div class="para">
+			To use this feature in Facelets, you will need to declare a special view handler, <code class="literal">SeamFaceletViewHandler</code> in <code class="literal">faces-config.xml</code>.
+		</div><pre class="programlisting">&lt;faces-config&gt;
+    &lt;application&gt;
+        &lt;view-handler&gt;org.jboss.seam.ui.facelet.SeamFaceletViewHandler&lt;/view-handler&gt;
+    &lt;/application&gt;
+&lt;/faces-config&gt;
+</pre></div><div class="section" title="25.2. Usage"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Expression_language_enhancements-Usage">25.2. Usage</h2></div></div></div><div class="para">
+			Parameters are surrounded by parentheses, and separated by commas:
+		</div><pre class="programlisting">&lt;h:commandButton action="#{hotelBooking.bookHotel(hotel, user)}" value="Book Hotel"/&gt;
+</pre><div class="para">
+			The parameters <code class="literal">hotel</code> and <code class="literal">user</code> will be evaluated as value expressions and passed to the <code class="literal">bookHotel()</code> method of the component. This gives you an alternative to the use of <code class="literal">@In</code>.
+		</div><div class="para">
+			Any value expression may be used as a parameter:
+		</div><pre class="programlisting">&lt;h:commandButton action="#{hotelBooking.bookHotel(hotel.id, user.username)}" value="Book Hotel"/&gt;
+</pre><div class="para">
+			You may even pass literal strings using single or double quotes:
+		</div><pre class="programlisting">&lt;h:commandLink action=”#{printer.println( ‘Hello world!’ )}” value=”Hello”/&gt;
+</pre><pre class="programlisting">&lt;h:commandLink action=’#{printer.println( “Hello again” )}’ value=’Hello’/&gt;
+</pre><div class="para">
+			You might even want to use this notation for all your action methods, even when you do not have parameters to pass. This improves readability by making it clear that the expression is a method expression and not a value expression:
+		</div><pre class="programlisting">&lt;s:link value="Cancel" action="#{hotelBooking.cancel()}"/&gt;
+</pre></div><div class="section" title="25.3. Limitations"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Expression_language_enhancements-Limitations">25.3. Limitations</h2></div></div></div><div class="para">
+			Please be aware of the following limitations:
+		</div><div class="section" title="25.3.1. Incompatibility with JSP 2.1"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Limitations-Incompatibility_with_JSP_2.1">25.3.1. Incompatibility with JSP 2.1</h3></div></div></div><div class="para">
+				This extension is not currently compatible with JSP 2.1. So if you want to use this extension with JSF 1.2, you will need to use Facelets. The extension works correctly with JSP 2.0.
+			</div></div><div class="section" title="25.3.2. Calling a MethodExpression from Java code"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Limitations-Calling_a_MethodExpression_from_Java_code">25.3.2. Calling a <code class="literal">MethodExpression</code> from Java code</h3></div></div></div><div class="para">
+				Normally, when a <code class="literal">MethodExpression</code> or <code class="literal">MethodBinding</code> is created, the parameter types are passed in by JSF. In the case of a method binding, JSF assumes that there are no parameters to pass. With this extension, we can’t know the parameter types until after the expression has been evaluated. This has two minor consequences:
+			</div><div class="itemizedlist"><ul><li class="listitem"><div class="para">
+						When you invoke a <code class="literal">MethodExpression</code> in Java code, parameters you pass may be ignored. Parameters defined in the expression will take precedence.
+					</div></li><li class="listitem"><div class="para">
+						Ordinarily, it is safe to call <code class="literal">methodExpression.getMethodInfo().getParamTypes()</code> at any time. For an expression with parameters, you must first invoke the <code class="literal">MethodExpression</code> before calling <code class="literal">getParamTypes()</code>.
+					</div></li></ul></div><div class="para">
+				Both of these cases are exceedingly rare and only apply when you want to invoke the <code class="literal">MethodExpression</code> by hand in Java code.
+			</div></div></div></div><div xml:lang="en-US" class="chapter" title="Chapter 26. Testing Seam applications" lang="en-US"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Testing_Seam_applications">Chapter 26. Testing Seam applications</h2></div></div></div><div class="toc"><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Testing_Seam_applications-Unit_testing_Seam_components">26.1. Unit testing Seam components</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-Testing_Seam_applications-Integration_testing_Seam_applications">26.2. Integration testing Seam applications</a></span></dt><dd><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Integration_testing_Seam_applications-Using_mocks_in_integration_tests">26.2.1. Using mocks in integration tests</a></span></dt></dl></dd></dl></div><div class="para">
+		Most Seam applications will need at least two kinds of automated tests: <span class="emphasis"><em>unit tests</em></span>, which test a particular Seam component in isolation, and scripted <span class="emphasis"><em>integration tests</em></span> which exercise all Java layers of the application (that is, everything except the view pages).
+	</div><div class="para">
+		Both kinds of tests are very easy to write.
+	</div><div class="section" title="26.1. Unit testing Seam components"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Testing_Seam_applications-Unit_testing_Seam_components">26.1. Unit testing Seam components</h2></div></div></div><div class="para">
+			All Seam components are POJOs. This is a great place to start if you want easy unit testing. And since Seam emphasises the use of bijection for inter-component interactions and access to contextual objects, it is very easy to test a Seam component outside of its normal runtime environment.
+		</div><div class="para">
+			Consider the following Seam component:
+		</div><pre class="programlisting">@Stateless
+ at Scope(EVENT)
+ at Name("register")
+public class RegisterAction implements Register
+{
+   private User user;
+   private EntityManager em;
+
+   @In
+   public void setUser(User user) {
+       this.user = user;
+   }
+   
+   @PersistenceContext
+   public void setBookingDatabase(EntityManager em) {
+       this.em = em;
+   }
+   
+   public String register()
+   {
+      List existing = em.createQuery("select username from User where username=:username")
+         .setParameter("username", user.getUsername())
+         .getResultList();
+      if (existing.size()==0)
+      {
+         em.persist(user);
+         return "success";
+      }
+      else
+      {
+         return null;
+      }
+   }
+
+}
+</pre><div class="para">
+			We could write a TestNG test for this component as follows:
+		</div><pre class="programlisting">public class RegisterActionTest
+{
+
+    @Test
+    public testRegisterAction()
+    {
+        EntityManager em = getEntityManagerFactory().createEntityManager();
+        em.getTransaction().begin();
+        
+        User gavin = new User();
+        gavin.setName("Gavin King");
+        gavin.setUserName("1ovthafew");
+        gavin.setPassword("secret");
+        
+        RegisterAction action = new RegisterAction();
+        action.setUser(gavin);
+        action.setBookingDatabase(em);
+        
+        assert "success".equals( action.register() );
+        
+        em.getTransaction().commit();
+        em.close();
+    }
+    
+    
+    private EntityManagerFactory emf;
+    
+    public EntityManagerFactory getEntityManagerFactory()
+    {
+        return emf;
+    }
+    
+    @Configuration(beforeTestClass=true)
+    public void init() 
+    {
+        emf = Persistence.createEntityManagerFactory("myResourceLocalEntityManager");
+    }
+    
+    @Configuration(afterTestClass=true)
+    public void destroy()
+    {
+        emf.close();
+    }
+    
+}
+</pre><div class="para">
+			Seam components do not usually depend directly upon container infrastructure, allowing for simplistic unit testing.
+		</div></div><div class="section" title="26.2. Integration testing Seam applications"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Testing_Seam_applications-Integration_testing_Seam_applications">26.2. Integration testing Seam applications</h2></div></div></div><div class="para">
+			Integration testing is slightly more difficult. In this case, we cannot eliminate the container infrastructure; indeed, that is part of what is being tested! At the same time, we do not want to be forced to deploy our application to an application server to run the automated tests. We need to be able to reproduce just enough of the container infrastructure inside our testing environment to be able to exercise the whole application, without hurting performance too much.
+		</div><div class="para">
+			A second problem is emulating user interactions. A third problem is where to put our assertions. Some test frameworks let us test the whole application by reproducing user interactions with the web browser. These frameworks have their place, but they are not appropriate for use at development time.
+		</div><div class="para">
+			The approach taken by Seam is to let you write tests that script your components while running inside a pruned down container environment (Seam, together with the JBoss Embeddable EJB container). The role of the test script is basically to reproduce the interaction between the view and the Seam components. In other words, you get to pretend you are the JSF implementation!
+		</div><div class="para">
+			This approach tests everything except the view.
+		</div><div class="para">
+			Let us consider a JSP view for the component we unit tested above:
+		</div><pre class="programlisting">&lt;html&gt;
+ &lt;head&gt;
+  &lt;title&gt;Register New User&lt;/title&gt;
+ &lt;/head&gt;
+ &lt;body&gt;
+  &lt;f:view&gt;
+   &lt;h:form&gt;
+     &lt;table border="0"&gt;
+       &lt;tr&gt;
+         &lt;td&gt;Username&lt;/td&gt;
+         &lt;td&gt;&lt;h:inputText value="#{user.username}"/&gt;&lt;/td&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+         &lt;td&gt;Real Name&lt;/td&gt;
+         &lt;td&gt;&lt;h:inputText value="#{user.name}"/&gt;&lt;/td&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+         &lt;td&gt;Password&lt;/td&gt;
+         &lt;td&gt;&lt;h:inputSecret value="#{user.password}"/&gt;&lt;/td&gt;
+       &lt;/tr&gt;
+     &lt;/table&gt;
+     &lt;h:messages/&gt;
+     &lt;h:commandButton type="submit" value="Register" action="#{register.register}"/&gt;
+   &lt;/h:form&gt;
+  &lt;/f:view&gt;
+ &lt;/body&gt;
+&lt;/html&gt;
+</pre><div class="para">
+			We want to test the registration functionality of our application (the stuff that happens when the user clicks the Register button). We will reproduce the JSF request lifecycle in an automated TestNG test:
+		</div><pre class="programlisting">public class RegisterTest extends SeamTest
+{
+   
+   @Test
+   public void testRegister() throws Exception
+   {
+            
+      new FacesRequest() {
+
+         @Override
+         protected void processValidations() throws Exception
+         {
+            validateValue("#{user.username}", "1ovthafew");
+            validateValue("#{user.name}", "Gavin King");
+            validateValue("#{user.password}", "secret");
+            assert !isValidationFailure();
+         }
+         
+         @Override
+         protected void updateModelValues() throws Exception
+         {
+            setValue("#{user.username}", "1ovthafew");
+            setValue("#{user.name}", "Gavin King");
+            setValue("#{user.password}", "secret");
+         }
+
+         @Override
+         protected void invokeApplication()
+         {
+            assert invokeMethod("#{register.register}").equals("success");
+         }
+
+         @Override
+         protected void renderResponse()
+         {
+            assert getValue("#{user.username}").equals("1ovthafew");
+            assert getValue("#{user.name}").equals("Gavin King");
+            assert getValue("#{user.password}").equals("secret");
+         }
+         
+      }.run();
+      
+   }
+
+   ...
+   
+}
+</pre><div class="para">
+			Notice that we have extended <code class="literal">SeamTest</code>, which provides a Seam environment for our components, and written our test script as an anonymous class that extends <code class="literal">SeamTest.FacesRequest</code>, which provides an emulated JSF request lifecycle. (There is also a <code class="literal">SeamTest.NonFacesRequest</code> for testing GET requests.) We have written our code in methods which are named for the various JSF phases, to emulate the calls that JSF would make to our components. Then we have thrown in various assertions.
+		</div><div class="para">
+			You will find plenty of integration tests for the Seam example applications which demonstrate more complex cases. There are instructions for running these tests using Ant, or using the TestNG plugin for eclipse:
+		</div><div class="mediaobject" align="center"><img src="images/plugin-testng.png" align="middle" width="444" /></div><div class="section" title="26.2.1. Using mocks in integration tests"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-Integration_testing_Seam_applications-Using_mocks_in_integration_tests">26.2.1. Using mocks in integration tests</h3></div></div></div><div class="para">
+				Occasionally, we need to be able to replace the implementation of some Seam component that depends upon resources which are not available in the integration test environment. For example, suppose we have some Seam component which is a facade to some payment processing system:
+			</div><pre class="programlisting">@Name("paymentProcessor")
+public class PaymentProcessor {
+    public boolean processPayment(Payment payment) { .... }
+}
+</pre><div class="para">
+				For integration tests, we can mock out this component as follows:
+			</div><pre class="programlisting">@Name("paymentProcessor")
+ at Install(precedence=MOCK)
+public class MockPaymentProcessor extends PaymentProcessor {
+    public void processPayment(Payment payment) {
+        return true;
+    }
+}
+</pre><div class="para">
+				Since the <code class="literal">MOCK</code> precedence is higher than the default precedence of application components, Seam will install the mock implementation whenever it is in the classpath. When deployed into production, the mock implementation is absent, so the real component will be installed.
+			</div></div></div></div><div xml:lang="en-US" class="chapter" title="Chapter 27. Seam tools" lang="en-US"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_tools">Chapter 27. Seam tools</h2></div></div></div><div class="toc"><dl><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_tools-jBPM_designer_and_viewer">27.1. jBPM designer and viewer</a></span></dt><dd><dl><dt><span class="section"><a href="#Seam_Reference_Guide-jBPM_designer_and_viewer-Business_process_designer">27.1.1. Business process designer</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-jBPM_designer_and_viewer-Pageflow_viewer">27.1.2. Pageflow viewer</a></span></dt></dl></dd><dt><span class="section"><a href="#Seam_Reference_Guide-Seam_tools-CRUD_application_generator">27.2. CRUD-application generator</a></span></dt><dd><dl><dt><span class="section"><a href="#Seam_Reference_Guide-CRUD_application_generator-Creating_a_Hibernate_configurat!
 ion_file">27.2.1. Creating a Hibernate configuration file</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-CRUD_application_generator-Creating_a_Hibernate_Console_configuration">27.2.2. Creating a Hibernate Console configuration</a></span></dt><dt><span class="section"><a href="#Seam_Reference_Guide-CRUD_application_generator-Reverse_engineering_and_code_generation">27.2.3. Reverse engineering and code generation</a></span></dt></dl></dd></dl></div><div class="section" title="27.1. jBPM designer and viewer"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_tools-jBPM_designer_and_viewer">27.1. jBPM designer and viewer</h2></div></div></div><div class="para">
+			The jBPM designer and viewer will let you design and view in a nice way your business processes and your pageflows. This convenient tool is part of the JBoss Developer Studio and more details can be found in the jBPM's documentation (http://docs.jboss.com/jbpm/v3/gpd/)
+		</div><div class="section" title="27.1.1. Business process designer"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-jBPM_designer_and_viewer-Business_process_designer">27.1.1. Business process designer</h3></div></div></div><div class="para">
+				This tool lets you design your own business process in a graphical way.
+			</div><div class="screenshot"><div class="mediaobject" align="center"><img src="images/bpmd.png" align="middle" width="444" /></div></div></div><div class="section" title="27.1.2. Pageflow viewer"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-jBPM_designer_and_viewer-Pageflow_viewer">27.1.2. Pageflow viewer</h3></div></div></div><div class="para">
+				This tool will let you design to some extend your pageflows and let you build graphical views of them so you can easily share and compare ideas on how it should be designed.
+			</div><div class="screenshot"><div class="mediaobject" align="center"><img src="images/bpmpfv.png" align="middle" width="444" /></div></div></div></div><div class="section" title="27.2. CRUD-application generator"><div class="titlepage"><div><div><h2 class="title" id="Seam_Reference_Guide-Seam_tools-CRUD_application_generator">27.2. CRUD-application generator</h2></div></div></div><div class="para">
+			This chapter, will give you a short overview of the support for Seam that is available in the Hibernate Tools. Hibernate Tools is a set of tools for working with Hibernate and related technologies, such as JBoss Seam and EJB3. The tools are available as a set of eclipse plugins and Ant tasks. You can download the Hibernate Tools from the JBoss Tools or Hibernate Tools websites.
+		</div><div class="para">
+			The specific support for Seam that is currently available is generation of a fully functional Seam based CRUD-application. The CRUD-application can be generated based on your existing Hibernate mapping files or EJB3 annotated POJO's or even fully reverse engineered from your existing database schema.
+		</div><div class="para">
+			The following sections is focused on the features required to understand for usage with Seam. The content is derived from the the Hibernate Tools reference documentation. Thus if you need more detailed information please refer to the Hibernate Tools documentation.
+		</div><div class="section" title="27.2.1. Creating a Hibernate configuration file"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-CRUD_application_generator-Creating_a_Hibernate_configuration_file">27.2.1. Creating a Hibernate configuration file</h3></div></div></div><div class="para">
+				To be able to reverse engineer and generate code a hibernate.properties or <code class="filename">hibernate.cfg.xml</code> file is needed. The Hibernate Tools provide a wizard for generating the <code class="filename">hibernate.cfg.xml</code> file if you do not already have such file.
+			</div><div class="para">
+				Start the wizard by clicking <code class="literal">New Wizard</code> (Ctrl+N), select the Hibernate/Hibernate Configuration file (cfg.xml) wizard and press <code class="literal">Next</code>. After selecting the wanted location for the <code class="filename">hibernate.cfg.xml</code> file, you will see the following page:
+			</div><div class="mediaobject"><img src="images/hibernatecfgwizard.png" width="177.165354330709" /></div><div class="para">
+				Tip: The contents in the combo boxes for the JDBC driver class and JDBC URL change automatically, depending on the Dialect and actual driver you have chosen.
+			</div><div class="para">
+				Enter your configuration information in this dialog. Details about the configuration options can be found in Hibernate reference documentation.
+			</div><div class="para">
+				Press <code class="literal">Finish</code> to create the configuration file, after optionally creating a Console onfiguration, the <code class="filename">hibernate.cfg.xml</code> will be automatically opened in an editor. The last option <code class="literal">Create Console Configuration</code> is enabled by default and when enabled i will automatically use the <code class="filename">hibernate.cfg.xml</code> for the basis of a <code class="literal">Console Configuration</code>.
+			</div></div><div class="section" title="27.2.2. Creating a Hibernate Console configuration"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-CRUD_application_generator-Creating_a_Hibernate_Console_configuration">27.2.2. Creating a Hibernate Console configuration</h3></div></div></div><div class="para">
+				A Console Configuration describes to the Hibernate plugin which configuration files should be used to configure hibernate, including which classpath is needed to load the POJO's, JDBC drivers etc. It is required to make usage of query prototyping, reverse engineering and code generation. You can have multiple named console configurations. Normally you would just need one per project, but more (or less) is definitly possible.
+			</div><div class="para">
+				You create a console configuration by running the Console Configuration wizard, shown in the following screenshot. The same wizard will also be used if you are coming from the <code class="filename">hibernate.cfg.xml</code> wizard and had enabled <code class="literal">Create Console Configuration</code>.
+			</div><div class="mediaobject" id="Seam_Reference_Guide-Creating_a_Hibernate_Console_configuration-Creating_a_Hibernate_Console_configuration"><img src="images/consolecfgwizard.png" width="444" /><div class="caption">Creating a Hibernate Console configuration</div></div><div class="para">
+				The following table describes the relevant settings. The wizard can automatically detect default values for most of these if you started the Wizard with the relevant java project selected
+			</div><div class="table" id="Seam_Reference_Guide-Creating_a_Hibernate_Console_configuration-Hibernate_Console_Configuration_Parameters"><div class="table-contents"><table summary="Hibernate Console Configuration Parameters" border="1"><colgroup><col width="20%" /><col width="60%" /><col width="20%" /></colgroup><thead><tr><th align="center">
+								<div class="para">
+									Parameter
+								</div>
+							</th><th align="center">
+								<div class="para">
+									Description
+								</div>
+							</th><th align="center">
+								<div class="para">
+									Auto detected value
+								</div>
+							</th></tr></thead><tbody><tr><td>
+								<div class="para">
+									Name
+								</div>
+							</td><td>
+								<div class="para">
+									The unique name of the configuration
+								</div>
+							</td><td>
+								<div class="para">
+									Name of the selected project
+								</div>
+							</td></tr><tr><td>
+								<div class="para">
+									Property file
+								</div>
+							</td><td>
+								<div class="para">
+									Path to a hibernate.properties file
+								</div>
+							</td><td>
+								<div class="para">
+									First hibernate.properties file found in the selected project
+								</div>
+							</td></tr><tr><td>
+								<div class="para">
+									Configuration file
+								</div>
+							</td><td>
+								<div class="para">
+									Path to a hibernate.cfg.xml file
+								</div>
+							</td><td>
+								<div class="para">
+									First hibernate.cfg.xml file found in the selected project
+								</div>
+							</td></tr><tr><td>
+								<div class="para">
+									Enable Hibernate ejb3/annotations
+								</div>
+							</td><td>
+								<div class="para">
+									Selecting this option enables usage of annotated classes. <code class="filename">hbm.xml</code> files are of course still possible to use too. This feature requires running the Eclipse IDE with a JDK 5 runtime, otherwise you will get classloading and/or version errors.
+								</div>
+							</td><td>
+								<div class="para">
+									Not enabled
+								</div>
+							</td></tr><tr><td>
+								<div class="para">
+									Mapping files
+								</div>
+							</td><td>
+								<div class="para">
+									List of additional mapping files that should be loaded. Since a <code class="filename">hibernate.cfg.xml</code> can also contain mappings, if these a duplicated here, you will get <span class="errorname">Duplicate mapping</span> errors when using the console configuration.
+								</div>
+							</td><td>
+								<div class="para">
+									If no <code class="filename">hibernate.cfg.xml</code> file is found, all hbm.xml files found in the selected project
+								</div>
+							</td></tr><tr><td>
+								<div class="para">
+									Classpath
+								</div>
+							</td><td>
+								<div class="para">
+									The classpath for loading POJO and JDBC drivers. Do not add Hibernate core libraries or dependencies, they are already included. If you get ClassNotFound errors then check this list for possible missing or redundant directories/jars.
+								</div>
+							</td><td>
+								<div class="para">
+									The default build output directory and any JARs with a class implementing java.sql.Driver in the selected project
+								</div>
+							</td></tr></tbody></table></div><h6>Table 27.1. Hibernate Console Configuration Parameters</h6></div><br class="table-break" /><div class="para">
+				Clicking <code class="literal">Finish</code> creates the configuration and shows it in the <code class="literal">Hibernate Configurations</code> view
+			</div><div class="mediaobject" align="center" id="Seam_Reference_Guide-Creating_a_Hibernate_Console_configuration-Console_overview"><img src="images/consoleoutline-before-reveng.png" align="middle" /><div class="caption">Console overview</div></div></div><div class="section" title="27.2.3. Reverse engineering and code generation"><div class="titlepage"><div><div><h3 class="title" id="Seam_Reference_Guide-CRUD_application_generator-Reverse_engineering_and_code_generation">27.2.3. Reverse engineering and code generation</h3></div></div></div><div class="para">
+				A very simple <span class="emphasis"><em>click-and-generate</em></span> reverse engineering and code generation facility is available. It is this facility that allows you to generate the skeleton for a full Seam CRUD application.
+			</div><div class="para">
+				To start working with this process, start the <code class="literal">Hibernate Code Generation</code> which is available in the toolbar via the Hibernate icon or via the <code class="literal">Run/Hibernate Code Generation</code> menu item.
+			</div><div class="section" title="27.2.3.1. Code Generation Launcher"><div class="titlepage"><div><div><h4 class="title" id="Seam_Reference_Guide-Reverse_engineering_and_code_generation-Code_Generation_Launcher">27.2.3.1. Code Generation Launcher</h4></div></div></div><div class="para">
+					When you click on <code class="literal">Hibernate Code Generation</code> the standard Eclipse launcher dialog will appear. In this dialog you can create, edit and delete named Hibernate code generation <span class="emphasis"><em>launchers</em></span>.
+				</div><div class="mediaobject"><img src="images/codegendropdown.png" /></div><div class="para">
+					The dialog has the standard tabs <code class="literal">Refresh</code> and <code class="literal">Common</code> that can be used to configure which directories should be automatically refreshed and various general settings launchers, such as saving them in a project for sharing the launcher within a team.
+				</div><div class="mediaobject"><img src="images/codegenmaintab.png" width="444" /></div><div class="para">
+					The first time you create a code generation launcher you should give it a meaningfull name, otherwise the default prefix <code class="literal">New_Generation</code> will be used.
+				</div><div class="note"><h2>Note</h2><div class="para">
+						he <code class="literal">At least one exporter option must be selected</code> is just a warning stating that for this launch to work you need to select an exporter on the Exporter tab. When an exporter has been selected the warning will disappear.
+					</div></div><div class="para">
+					On the <code class="literal">Main</code> tab you the following fields:
+				</div><div class="table" id="Seam_Reference_Guide-Code_Generation_Launcher-Code_generation_Main_tab_fields"><div class="table-contents"><table summary="Code generation &quot;Main&quot; tab fields" border="1"><colgroup><col width="25%" /><col width="75%" /></colgroup><thead><tr><th align="center">
+									<div class="para">
+										Field
+									</div>
+								</th><th align="center">
+									<div class="para">
+										Description
+									</div>
+								</th></tr></thead><tbody><tr><td>
+									<div class="para">
+										Console Configuration
+									</div>
+								</td><td>
+									<div class="para">
+										The name of the console configuration which should be used when code generating.
+									</div>
+								</td></tr><tr><td>
+									<div class="para">
+										Output directory
+									</div>
+								</td><td>
+									<div class="para">
+										Path to a directory into where all output will be written by default. Be aware that existing files will be overwritten, so be sure to specify the correct directory.
+									</div>
+								</td></tr><tr><td>
+									<div class="para">
+										Reverse engineer from JDBC Connection
+									</div>
+								</td><td>
+									<div class="para">
+										If enabled the tools will reverse engineer the database available via the connection information in the selected Hibernate Console Configuration and generate code based on the database schema. If not enabled the code generation will just be based on the mappings already specified in the Hibernate Console configuration.
+									</div>
+								</td></tr><tr><td>
+									<div class="para">
+										Package
+									</div>
+								</td><td>
+									<div class="para">
+										The package name here is used as the default package name for any entities found when reverse engineering.
+									</div>
+								</td></tr><tr><td>
+									<div class="para">
+										reveng.xml
+									</div>
+								</td><td>
+									<div class="para">
+										Path to a reveng.xml file. A reveng.xml file allows you to control certain aspects of the reverse engineering. For example, how jdbc types are mapped to hibernate types and especially important which tables are included/excluded from the process. Clicking "setup" allows you to select an existing reveng.xml file or create a new one..
+									</div>
+								</td></tr><tr><td>
+									<div class="para">
+										reveng. strategy
+									</div>
+								</td><td>
+									<div class="para">
+										If <code class="filename">reveng.xml</code> does not provide enough customization you can provide your own implementation of an ReverseEngineeringStrategy. The class need to be in the claspath of the Console Configuration, otherwise you will get class not found exceptions.
+									</div>
+								</td></tr><tr><td>
+									<div class="para">
+										Generate basic typed composite ids
+									</div>
+								</td><td>
+									<div class="para">
+										This field should always be enabled when generating the Seam CRUD application. For a table that has a multi-colum primary key, a &lt;composite-id&gt; mapping will always be created. If this option is enabled and there are matching foreign-keys, each key column is still considered a basic scalar (string, long, etc.) instead of a reference to an entity. If you disable this option, a &lt;key-many-to-one&gt; mapping with be generated instead. Note: a &lt;many-to-one&gt; property is still created, but is simply marked as non-updatable and non-insertable.
+									</div>
+								</td></tr><tr><td>
+									<div class="para">
+										Use custom templates
+									</div>
+								</td><td>
+									<div class="para">
+										If enabled, the Template directory will be searched first when looking up the velocity templates, allowing you to redefine how the individual templates process the hibernate mapping model.
+									</div>
+								</td></tr><tr><td>
+									<div class="para">
+										Template directory
+									</div>
+								</td><td>
+									<div class="para">
+										A path to a directory with custom velocity templates.
+									</div>
+								</td></tr></tbody></table></div><h6>Table 27.2. Code generation "Main" tab fields</h6></div><br class="table-break" /></div><div class="section" title="27.2.3.2. Exporters"><div class="titlepage"><div><div><h4 class="title" id="Seam_Reference_Guide-Reverse_engineering_and_code_generation-Exporters">27.2.3.2. Exporters</h4></div></div></div><div class="para">
+					The exporters tab is used to specify which type of code that should be generated. Each selection represents an <code class="literal">Exporter</code> that is responsible for generating the code, hence the name.
+				</div><div class="mediaobject"><img src="images/codegenselectseam.png" width="444" /></div><div class="para">
+					The following table describes in short the various exporters. The most relevant for Seam is the <code class="literal">JBoss Seam Skeleton</code> application.
+				</div><div class="table" id="Seam_Reference_Guide-Exporters-Code_generation_Exporter_tab_fields"><div class="table-contents"><table summary="Code generation Exporter tab fields" border="1"><colgroup><col width="25%" /><col width="75%" /></colgroup><thead><tr><th align="center">
+									<div class="para">
+										Field
+									</div>
+								</th><th align="center">
+									<div class="para">
+										Description
+									</div>
+								</th></tr></thead><tbody><tr><td>
+									<div class="para">
+										Generate domain code
+									</div>
+								</td><td>
+									<div class="para">
+										Generates POJO's for all the persistent classes and components found in the given Hibernate configuration.
+									</div>
+								</td></tr><tr><td>
+									<div class="para">
+										JDK 1.5 constructs
+									</div>
+								</td><td>
+									<div class="para">
+										When enabled the POJO's will use JDK 1.5 constructs.
+									</div>
+								</td></tr><tr><td>
+									<div class="para">
+										EJB3/JSR-220 annotations
+									</div>
+								</td><td>
+									<div class="para">
+										When enabled the POJO's will be annotated according to the EJB3/JSR-220 persistency specification.
+									</div>
+								</td></tr><tr><td>
+									<div class="para">
+										Generate DAO code
+									</div>
+								</td><td>
+									<div class="para">
+										Generates a set of DAO's for each entity found.
+									</div>
+								</td></tr><tr><td>
+									<div class="para">
+										Generate Mappings
+									</div>
+								</td><td>
+									<div class="para">
+										Generate mapping (hbm.xml) files for each entity
+									</div>
+								</td></tr><tr><td>
+									<div class="para">
+										Generate hibernate configuration file
+									</div>
+								</td><td>
+									<div class="para">
+										Generate a <code class="filename">hibernate.cfg.xml</code> file. Used to keep the hibernate.cfg.xml uptodate with any new found mapping files.
+									</div>
+								</td></tr><tr><td>
+									<div class="para">
+										Generate schema html-documentation
+									</div>
+								</td><td>
+									<div class="para">
+										Generates set of html pages that documents the database schema and some of the mappings.
+									</div>
+								</td></tr><tr><td>
+									<div class="para">
+										Generate JBoss Seam skeleton app (beta)
+									</div>
+								</td><td>
+									<div class="para">
+										Generates a complete JBoss Seam skeleton app. The generation will include annotated POJO's, Seam controller beans and a JSP for the presentation layer. See the generated readme.txt for how to use it.
+									</div>
+									<div class="note"><h2>Note</h2><div class="para">
+											This exporter generates a full application, including a <code class="filename">build.xml</code> thus you will get the best results if you use an output directory which is the root of your project.
+										</div></div>
+								</td></tr></tbody></table></div><h6>Table 27.3. Code generation <code class="literal">Exporter</code> tab fields</h6></div><br class="table-break" /></div><div class="section" title="27.2.3.3. Generating and using the code"><div class="titlepage"><div><div><h4 class="title" id="Seam_Reference_Guide-Reverse_engineering_and_code_generation-Generating_and_using_the_code">27.2.3.3. Generating and using the code</h4></div></div></div><div class="para">
+					When you have finished filling out the settings, simply press <code class="literal">Run</code> to start the generation of code. This might take a little while if you are reverse engineering from a database.
+				</div><div class="para">
+					When the generation have finished you should now have a complete skeleton Seam application in the output directory. In the output directory there is a <code class="filename">readme.txt</code> file describing the steps needed to deploy and run the example.
+				</div><div class="para">
+					If you want to regenerate/update the skeleton code then simply run the code generation again by selecting the <code class="literal">Hibernate Code Generation</code> in the toolbar or <code class="literal">Run</code> menu. Enjoy.
+				</div></div></div></div></div><div xml:lang="en-US" class="appendix" title="Appendix A. Revision History" lang="en-US"><div class="titlepage"><div><div><h1 id="appe-Publican-Revision_History" class="title">Revision History</h1></div></div></div><div class="para">
+		<div class="revhistory"><table border="0" width="100%" summary="Revision history"><tr><th align="left" valign="top" colspan="3"><b>Revision History</b></th></tr><tr><td align="left">Revision 1.0</td><td align="left">Thu Nov 19 2009</td><td align="left"><span class="author"><span class="firstname">Laura</span> <span class="surname">Bailey</span></span></td></tr><tr><td align="left" colspan="3">
+					<table border="0" summary="Simple list" class="simplelist"><tr><td>Initial draft.</td></tr></table>
+				</td></tr></table></div>
+	</div></div></div></body></html>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/pdf/Seam_Reference_Guide_CP07.pdf
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/pdf/Seam_Reference_Guide_CP07.pdf
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Annotations.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Annotations.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Annotations.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1162 @@
+<?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" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Seam_Reference_Guide_CP07.ent">
+%BOOK_ENTITIES;
+]>
+<chapter id="Seam_Reference_Guide-Seam_annotations" lang="en-US">
+	<title>Seam annotations</title>
+	<para>
+		When you write a Seam application, you'll use a lot of annotations. Seam lets you use annotations to achieve a declarative style of programming. Most of the annotations you'll use are defined by the EJB 3.0 specification. The annotations for data validation are defined by the Hibernate Validator package. Finally, Seam defines its own set of annotations, which we'll describe in this chapter.
+	</para>
+	<para>
+		All of these annotations are defined in the package <literal>org.jboss.seam.annotations</literal>.
+	</para>
+	<section id="Seam_Reference_Guide-Seam_annotations-Annotations_for_component_definition">
+		<title>Annotations for component definition</title>
+		<para>
+			The first group of annotations lets you define a Seam component. These annotations appear on the component class.
+		</para>
+		<variablelist spacing="compact">
+			<varlistentry id="name-annotation">
+				<term><literal>@Name</literal></term>
+				<listitem>
+					
+<programlisting>@Name("componentName")
+</programlisting>
+					<para>
+						Defines the Seam component name for a class. This annotation is required for all Seam components.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry id="scope-annotation">
+				<term><literal>@Scope</literal></term>
+				<listitem>
+					
+<programlisting>@Scope(ScopeType.CONVERSATION)
+</programlisting>
+					<para>
+						Defines the default context of the component. The possible values are defined by the <literal>ScopeType</literal> enumeration: <literal>EVENT, PAGE, CONVERSATION, SESSION, BUSINESS_PROCESS, APPLICATION, STATELESS</literal>.
+					</para>
+					<para>
+						When no scope is explicitly specified, the default depends upon the component type. For stateless session beans, the default is <literal>STATELESS</literal>. For entity beans and stateful session beans, the default is <literal>CONVERSATION</literal>. For JavaBeans, the default is <literal>EVENT</literal>.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@Role</literal></term>
+				<listitem>
+					
+<programlisting>@Role(name="roleName", scope=ScopeType.SESSION)
+</programlisting>
+					<para>
+						Allows a Seam component to be bound to multiple contexts variables. The <literal>@Name</literal>/<literal>@Scope</literal> annotations define a "default role". Each <literal>@Role</literal> annotation defines an additional role.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>name</literal> &mdash; the context variable name.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>scope</literal> &mdash; the context variable scope. When no scope is explicitly specified, the default depends upon the component type, as above.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@Roles</literal></term>
+				<listitem>
+					
+<programlisting>@Roles({
+        @Role(name="user", scope=ScopeType.CONVERSATION),
+        @Role(name="currentUser", scope=ScopeType.SESSION)
+    })
+</programlisting>
+					<para>
+						Allows specification of multiple additional roles.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@Intercept</literal></term>
+				<listitem>
+					
+<programlisting>@Intercept(InterceptionType.ALWAYS)
+</programlisting>
+					<para>
+						Determines when Seam interceptors are active. The possible values are defined by the <literal>InterceptionType</literal> enumeration: <literal>ALWAYS, AFTER_RESTORE_VIEW, AFTER_UPDATE_MODEL_VALUES, INVOKE_APPLICATION, NEVER</literal>.
+					</para>
+					<para>
+						When no interception type is explicitly specified, the default depends upon the component type. For entity beans, the default is <literal>NEVER</literal>. For session beans, message driven beans and JavaBeans, the default is <literal>ALWAYS</literal>.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@JndiName</literal></term>
+				<listitem>
+					
+<programlisting>@JndiName("my/jndi/name")
+</programlisting>
+					<para>
+						Specifies the JNDI name that Seam will use to look up the EJB component. If no JNDI name is explicitly specified, Seam will use the JNDI pattern specified by <literal>org.jboss.seam.core.init.jndiPattern</literal>.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@Conversational</literal></term>
+				<listitem>
+					
+<programlisting>@Conversational(ifNotBegunOutcome="error")
+</programlisting>
+					<para>
+						Specifies that a conversation scope component is conversational, meaning that no method of the component can be called unless a long-running conversation started by this component is active (unless the method would begin a new long-running conversation).
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@Startup</literal></term>
+				<listitem>
+					
+<programlisting>@Startup(depends={"org.jboss.core.jndi", "org.jboss.core.jta"})
+</programlisting>
+					<para>
+						Specifies that an application scope component is started immediately at initialization time. This is mainly used for certain built-in components that bootstrap critical infrastructure such as JNDI, datasources, etc.
+					</para>
+					
+<programlisting>@Startup
+</programlisting>
+					<para>
+						Specifies that a session scope component is started immediately at session creation time.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>depends</literal> &mdash; specifies that the named components must be started first, if they are installed.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@Install</literal></term>
+				<listitem>
+					
+<programlisting>@Install(false)
+</programlisting>
+					<para>
+						Specifies whether or not a component should be installed by default. The lack of an @Install annotation indicates a component should be installed.
+					</para>
+					
+<programlisting>@Install(dependencies="org.jboss.seam.core.jbpm")
+</programlisting>
+					<para>
+						Specifies that a component should only be stalled if the components listed as dependencies are also installed.
+					</para>
+					
+<programlisting>@Install(genericDependencies=ManagedQueueSender.class)
+</programlisting>
+					<para>
+						Specifies that a component should only be installed if a component that is implemented by a certain class is installed. This is useful when the dependency doesn't have a single well-known name.
+					</para>
+					
+<programlisting>@Install(classDependencies="org.hibernate.Session")
+</programlisting>
+					<para>
+						Specifies that a component should only be installed if the named class is in the classpath.
+					</para>
+					
+<programlisting>@Install(precedence=BUILT_IN)
+</programlisting>
+					<para>
+						Specifies the precedence of the component. If multiple components with the same name exist, the one with the higher precedence will be installed. The defined precendence values are (in ascending order):
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>BUILT_IN</literal> &mdash; Precedence of all built-in Seam components
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>FRAMEWORK</literal> &mdash; Precedence to use for components of frameworks which extend Seam
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>APPLICATION</literal> &mdash; Predence of application components (the default precedence)
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>DEPLOYMENT</literal> &mdash; Precedence to use for components which override application components in a particular deployment
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>MOCK</literal> &mdash; Precedence for mock objects used in testing
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@Synchronized</literal></term>
+				<listitem>
+					
+<programlisting>@Synchronized(timeout=1000)
+</programlisting>
+					<para>
+						Specifies that a component is accessed concurrently by multiple clients, and that Seam should serialize requests. If a request is not able to obtain its lock on the component in the given timeout period, an exception will be raised.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@ReadOnly</literal></term>
+				<listitem>
+					
+<programlisting>@ReadOnly
+</programlisting>
+					<para>
+						Specifies that a JavaBean component or component method does not require state replication at the end of the invocation.
+					</para>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_annotations-Annotations_for_bijection">
+		<title>Annotations for bijection</title>
+		<para>
+			The next two annotations control bijection. These attributes occur on component instance variables or property accessor methods.
+		</para>
+		<variablelist spacing="compact">
+			<varlistentry id="in-annotation">
+				<term><literal>@In</literal></term>
+				<listitem>
+					
+<programlisting>@In
+</programlisting>
+					<para>
+						Specifies that a component attribute is to be injected from a context variable at the beginning of each component invocation. If the context variable is null, an exception will be thrown.
+					</para>
+					
+<programlisting>@In(required=false)
+</programlisting>
+					<para>
+						Specifies that a component attribute is to be injected from a context variable at the beginning of each component invocation. The context variable may be null.
+					</para>
+					
+<programlisting>@In(create=true)
+</programlisting>
+					<para>
+						Specifies that a component attribute is to be injected from a context variable at the beginning of each component invocation. If the context variable is null, an instance of the component is instantiated by Seam.
+					</para>
+					
+<programlisting>@In(value="contextVariableName")
+</programlisting>
+					<para>
+						Specifies the name of the context variable explicitly, instead of using the annotated instance variable name.
+					</para>
+					
+<programlisting>@In(value="#{customer.addresses['shipping']}")
+</programlisting>
+					<para>
+						Specifies that a component attribute is to be injected by evaluating a JSF EL expression at the beginning of each component invocation.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>value</literal> &mdash; specifies the name of the context variable. Default to the name of the component attribute. Alternatively, specifies a JSF EL expression, surrounded by <literal>#{...}</literal>.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>create</literal> &mdash; specifies that Seam should instantiate the component with the same name as the context variable if the context variable is undefined (null) in all contexts. Default to false.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>required</literal> &mdash; specifies Seam should throw an exception if the context variable is undefined in all contexts.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry id="out-annotation">
+				<term><literal>@Out</literal></term>
+				<listitem>
+					
+<programlisting>@Out
+</programlisting>
+					<para>
+						Specifies that a component attribute that is a Seam component is to be outjected to its context variable at the end of the invocation. If the attribute is null, an exception is thrown.
+					</para>
+					
+<programlisting>@Out(required=false)
+</programlisting>
+					<para>
+						Specifies that a component attribute that is a Seam component is to be outjected to its context variable at the end of the invocation. The attribute may be null.
+					</para>
+					
+<programlisting>@Out(scope=ScopeType.SESSION)
+</programlisting>
+					<para>
+						Specifies that a component attribute that is <emphasis>not</emphasis> a Seam component type is to be outjected to a specific scope at the end of the invocation.
+					</para>
+					<para>
+						Alternatively, if no scope is explicitly specified, the scope of the component with the <literal>@Out</literal> attribute is used (or the <literal>EVENT</literal> scope if the component is stateless).
+					</para>
+					
+<programlisting>@Out(value="contextVariableName")
+</programlisting>
+					<para>
+						Specifies the name of the context variable explicitly, instead of using the annotated instance variable name.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>value</literal> &mdash; specifies the name of the context variable. Default to the name of the component attribute.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>required</literal> &mdash; specifies Seam should throw an exception if the component attribute is null during outjection.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+		<para>
+			Note that it is quite common for these annotations to occur together, for example:
+		</para>
+		
+<programlisting>@In(create=true) @Out private User currentUser;
+</programlisting>
+		<para>
+			The next annotation supports the <emphasis>manager component</emphasis> pattern, where a Seam component that manages the lifecycle of an instance of some other class that is to be injected. It appears on a component getter method.
+		</para>
+		<variablelist spacing="compact">
+			<varlistentry>
+				<term><literal>@Unwrap</literal></term>
+				<listitem>
+					
+<programlisting>@Unwrap
+</programlisting>
+					<para>
+						Specifies that the object returned by the annotated getter method is the thing that is injected instead of the component instance itself.
+					</para>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+		<para>
+			The next annotation supports the <emphasis>factory component</emphasis> pattern, where a Seam component is responsible for initializing the value of a context variable. This is especially useful for initializing any state needed for rendering the response to a non-faces request. It appears on a component method.
+		</para>
+		<variablelist spacing="compact">
+			<varlistentry>
+				<term><literal>@Factory</literal></term>
+				<listitem>
+					
+<programlisting>@Factory("processInstance")
+</programlisting>
+					<para>
+						Specifies that the method of the component is used to initialize the value of the named context variable, when the context variable has no value. This style is used with methods that return <literal>void</literal>.
+					</para>
+					
+<programlisting>@Factory("processInstance", scope=CONVERSATION)
+</programlisting>
+					<para>
+						Specifies that the method returns a value that Seam should use to initialize the value of the named context variable, when the context variable has no value. This style is used with methods that return a value. If no scope is explicitly specified, the scope of the component with the <literal>@Factory</literal> method is used (unless the component is stateless, in which case the <literal>EVENT</literal> context is used).
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>value</literal> &mdash; specifies the name of the context variable. If the method is a getter method, default to the JavaBeans property name.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>scope</literal> &mdash; specifies the scope that Seam should bind the returned value to. Only meaningful for factory methods which return a value.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+		<para>
+			This annotation lets you inject a <literal>Log</literal>:
+		</para>
+		<variablelist spacing="compact">
+			<varlistentry>
+				<term><literal>@Logger</literal></term>
+				<listitem>
+					
+<programlisting>@Logger("categoryName")
+</programlisting>
+					<para>
+						Specifies that a component field is to be injected with an instance of <literal>org.jboss.seam.log.Log</literal>. For entity beans, the field must be declared as static.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>value</literal> &mdash; specifies the name of the log category. Default to the name of the component class.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+		<para>
+			The last annotation lets you inject a request parameter value:
+		</para>
+		<variablelist spacing="compact">
+			<varlistentry>
+				<term><literal>@RequestParameter</literal></term>
+				<listitem>
+					
+<programlisting>@RequestParameter("parameterName")
+</programlisting>
+					<para>
+						Specifies that a component attribute is to be injected with the value of a request parameter. Basic type conversions are performed automatically.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>value</literal> &mdash; specifies the name of the request parameter. Default to the name of the component attribute.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_annotations-Annotations_for_component_lifecycle_methods">
+		<title>Annotations for component lifecycle methods</title>
+		<para>
+			These annotations allow a component to react to its own lifecycle events. They occur on methods of the component. There may be only one of each per component class.
+		</para>
+		<variablelist spacing="compact">
+			<varlistentry>
+				<term><literal>@Create</literal></term>
+				<listitem>
+					
+<programlisting>@Create
+</programlisting>
+					<para>
+						Specifies that the method should be called when an instance of the component is instantiated by Seam. Note that create methods are only supported for JavaBeans and stateful session beans.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry id="destroy-annotation">
+				<term><literal>@Destroy</literal></term>
+				<listitem>
+					
+<programlisting>@Destroy
+</programlisting>
+					<para>
+						Specifies that the method should be called when the context ends and its context variables are destroyed. Note that create methods are only supported for JavaBeans and stateful session beans.
+					</para>
+					<para>
+						Note that all stateful session bean components <emphasis>must</emphasis> define a method annotated <literal>@Destroy @Remove</literal> in order to guarantee destruction of the stateful bean when a context ends.
+					</para>
+					<para>
+						Destroy methods should be used only for cleanup. <emphasis>Seam catches, logs and swallows any exception that propagates out of a destroy method.</emphasis>
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@Observer</literal></term>
+				<listitem>
+					
+<programlisting>@Observer("somethingChanged")
+</programlisting>
+					<para>
+						Specifies that the method should be called when a component-driven event of the specified type occurs.
+					</para>
+					
+<programlisting>@Observer(value="somethingChanged",create=false)
+</programlisting>
+					<para>
+						Specifies that the method should be called when an event of the specified type occurs but that an instance should not be created if one doesn't exist. If an instance does not exist and create is false, the event will not be observed. The default value for create is true.
+					</para>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_annotations-Annotations_for_context_demarcation">
+		<title>Annotations for context demarcation</title>
+		<para>
+			These annotations provide declarative conversation demarcation. They appear on methods of Seam components, usually action listener methods.
+		</para>
+		<para>
+			Every web request has a conversation context associated with it. Most of these conversations end at the end of the request. If you want a conversation that span multiple requests, you must "promote" the current conversation to a <emphasis>long-running conversation</emphasis> by calling a method marked with <literal>@Begin</literal>.
+		</para>
+		<variablelist spacing="compact">
+			<varlistentry id="begin-annotation">
+				<term><literal>@Begin</literal></term>
+				<listitem>
+					<itemizedlist>
+						<listitem>
+							
+<programlisting>@Begin
+</programlisting>
+							<para>
+								Specifies that a long-running conversation begins when this method returns a non-null outcome without exception.
+							</para>
+						</listitem>
+						<listitem>
+							
+<programlisting>@Begin(ifOutcome={"success", "continue"})
+</programlisting>
+							<para>
+								Specifies that a long-running conversation begins when this action listener method returns with one of the given outcomes.
+							</para>
+						</listitem>
+						<listitem>
+							
+<programlisting>@Begin(join=true)
+</programlisting>
+							<para>
+								Specifies that if a long-running conversation is already in progress, the conversation context is simply propagated.
+							</para>
+						</listitem>
+						<listitem>
+							
+<programlisting>@Begin(nested=true)
+</programlisting>
+							<para>
+								Specifies that if a long-running conversation is already in progress, a new <emphasis>nested</emphasis> conversation context begins. The nested conversation will end when the next <literal>@End</literal> is encountered, and the outer conversation will resume. It is perfectly legal for multiple nested conversations to exist concurrently in the same outer conversation.
+							</para>
+						</listitem>
+						<listitem>
+							
+<programlisting>@Begin(pageflow="process definition name")
+</programlisting>
+							<para>
+								Specifies a jBPM process definition name that defines the pageflow for this conversation.
+							</para>
+						</listitem>
+						<listitem>
+							
+<programlisting>@Begin(flushMode=FlushModeType.MANUAL)
+</programlisting>
+							<para>
+								Specify the flush mode of any Seam-managed persistence contexts. <literal>flushMode=FlushModeType.MANUAL</literal> supports the use of <emphasis>atomic conversations</emphasis> where all write operations are queued in the conversation context until an explicit call to <literal>flush()</literal> (which usually occurs at the end of the conversation).
+							</para>
+						</listitem>
+						<listitem>
+							<itemizedlist>
+								<listitem>
+									<para>
+										<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes that result in a new long-running conversation context.
+									</para>
+								</listitem>
+								<listitem>
+									<para>
+										<literal>join</literal> &mdash; determines the behavior when a long-running conversation is already in progress. If <literal>true</literal>, the context is propagated. If <literal>false</literal>, an exception is thrown. Default to <literal>false</literal>. This setting is ignored when <literal>nested=true</literal> is specified
+									</para>
+								</listitem>
+								<listitem>
+									<para>
+										<literal>nested</literal> &mdash; specifies that a nested conversation should be started if a long-running conversation is already in progress.
+									</para>
+								</listitem>
+								<listitem>
+									<para>
+										<literal>flushMode</literal> &mdash; set the flush mode of any Seam-managed Hibernate sessions or JPA persistence contexts that are created during this conversation.
+									</para>
+								</listitem>
+								<listitem>
+									<para>
+										<literal>pageflow</literal> &mdash; a process definition name of a jBPM process definition deployed via <literal>org.jboss.seam.core.jbpm.pageflowDefinitions.</literal>
+									</para>
+								</listitem>
+							</itemizedlist>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry id="end-annotation">
+				<term><literal>@End</literal></term>
+				<listitem>
+					<itemizedlist>
+						<listitem>
+							
+<programlisting>@End
+</programlisting>
+							<para>
+								Specifies that a long-running conversation ends when this method returns a non-null outcome without exception.
+							</para>
+						</listitem>
+						<listitem>
+							
+<programlisting>@End(ifOutcome={"success", "error"}, evenIfException={SomeException.class, OtherException.class})
+</programlisting>
+							<para>
+								Specifies that a long-running conversation ends when this action listener method returns with one of the given outcomes or throws one of the specified classes of exception.
+							</para>
+						</listitem>
+						<listitem>
+							<itemizedlist>
+								<listitem>
+									<para>
+										<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes that result in the end of the current long-running conversation.
+									</para>
+								</listitem>
+								<listitem>
+									<para>
+										<literal>beforeRedirect</literal> &mdash; by default, the conversation will not actually be destroyed until after any redirect has occurred. Setting <literal>beforeRedirect=true</literal> specifies that the conversation should be destroyed at the end of the current request, and that the redirect will be processed in a new temporary conversation context.
+									</para>
+								</listitem>
+							</itemizedlist>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@StartTask</literal></term>
+				<listitem>
+					
+<programlisting>@StartTask
+</programlisting>
+					<para>
+						"Starts" a jBPM task. Specifies that a long-running conversation begins when this method returns a non-null outcome without exception. This conversation is associated with the jBPM task specified in the named request parameter. Within the context of this conversation, a business process context is also defined, for the business process instance of the task instance.
+					</para>
+					<para>
+						The jBPM <literal>TaskInstance</literal> will be available in a request context variable named <literal>taskInstance</literal>. The jPBM <literal>ProcessInstance</literal> will be available in a request context variable named <literal>processInstance</literal>. (Of course, these objects are available for injection via <literal>@In</literal>.)
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>taskIdParameter</literal> &mdash; the name of a request parameter which holds the id of the task. Default to <literal>"taskId"</literal>, which is also the default used by the Seam <literal>taskList</literal> JSF component.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>flushMode</literal> &mdash; set the flush mode of any Seam-managed Hibernate sessions or JPA persistence contexts that are created during this conversation.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@BeginTask</literal></term>
+				<listitem>
+					
+<programlisting>@BeginTask
+</programlisting>
+					<para>
+						Resumes work on an incomplete jBPM task. Specifies that a long-running conversation begins when this method returns a non-null outcome without exception. This conversation is associated with the jBPM task specified in the named request parameter. Within the context of this conversation, a business process context is also defined, for the business process instance of the task instance.
+					</para>
+					<para>
+						The jBPM <literal>TaskInstance</literal> will be available in a request context variable named <literal>taskInstance</literal>. The jPBM <literal>ProcessInstance</literal> will be available in a request context variable named <literal>processInstance</literal>.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>taskIdParameter</literal> &mdash; the name of a request parameter which holds the id of the task. Default to <literal>"taskId"</literal>, which is also the default used by the Seam <literal>taskList</literal> JSF component.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>flushMode</literal> &mdash; set the flush mode of any Seam-managed Hibernate sessions or JPA persistence contexts that are created during this conversation.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@EndTask</literal></term>
+				<listitem>
+					<itemizedlist>
+						<listitem>
+							
+<programlisting>@EndTask
+</programlisting>
+							<para>
+								"Ends" a jBPM task. Specifies that a long-running conversation ends when this method returns a non-null outcome, and that the current task is complete. Triggers a jBPM transition. The actual transition triggered will be the default transition unless the application has called <literal>Transition.setName()</literal> on the built-in component named <literal>transition</literal>.
+							</para>
+						</listitem>
+						<listitem>
+							
+<programlisting>@EndTask(transition="transitionName")
+</programlisting>
+							<para>
+								Triggers the given jBPM transition.
+							</para>
+						</listitem>
+						<listitem>
+							
+<programlisting>@EndTask(ifOutcome={"success", "continue"})
+</programlisting>
+							<para>
+								Specifies that the task ends when this method returns one of the listed outcomes.
+							</para>
+						</listitem>
+						<listitem>
+							<itemizedlist>
+								<listitem>
+									<para>
+										<literal>transition</literal> &mdash; the name of the jBPM transition to be triggered when ending the task. Defaults to the default transition.
+									</para>
+								</listitem>
+								<listitem>
+									<para>
+										<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes that result in the end of the task.
+									</para>
+								</listitem>
+								<listitem>
+									<para>
+										<literal>beforeRedirect</literal> &mdash; by default, the conversation will not actually be destroyed until after any redirect has occurred. Setting <literal>beforeRedirect=true</literal> specifies that the conversation should be destroyed at the end of the current request, and that the redirect will be processed in a new temporary conversation context.
+									</para>
+								</listitem>
+							</itemizedlist>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@CreateProcess</literal></term>
+				<listitem>
+					
+<programlisting>@CreateProcess(definition="process definition name")
+</programlisting>
+					<para>
+						Creates a new jBPM process instance when the method returns a non-null outcome without exception. The <literal>ProcessInstance</literal> object will be available in a context variable named <literal>processInstance</literal>.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>definition</literal> &mdash; the name of the jBPM process definition deployed via <literal>org.jboss.seam.core.jbpm.processDefinitions</literal>.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@ResumeProcess</literal></term>
+				<listitem>
+					
+<programlisting>@ResumeProcess(processIdParameter="processId")
+</programlisting>
+					<para>
+						Re-enters the scope of an existing jBPM process instance when the method returns a non-null outcome without exception. The <literal>ProcessInstance</literal> object will be available in a context variable named <literal>processInstance</literal>.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>processIdParameter</literal> &mdash; the name a request parameter holding the process id. Default to <literal>"processId"</literal>.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_annotations-Annotations_for_transaction_demarcation">
+		<title>Annotations for transaction demarcation</title>
+		<para>
+			Seam provides an annotation that lets you force a rollback of the JTA transaction for certain action listener outcomes.
+		</para>
+		<variablelist spacing="compact">
+			<varlistentry>
+				<term><literal>@Rollback</literal></term>
+				<listitem>
+					
+<programlisting>@Rollback(ifOutcome={"failure", "not-found"})
+</programlisting>
+					<para>
+						If the outcome of the method matches any of the listed outcomes, or if no outcomes are listed, set the transaction to rollback only when the method completes.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>ifOutcome</literal> &mdash; the JSF outcomes that cause a transaction rollback (no outcomes is interpreted to mean any outcome).
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@Transactional</literal></term>
+				<listitem>
+					
+<programlisting>@Transactional
+</programlisting>
+					<para>
+						Specifies that a JavaBean component should have a similar transactional behavior to the default behavior of a session bean component. ie. method invocations should take place in a transaction, and if no transaction exists when the method is called, a transaction will be started just for that method. This annotation may be applied at either class or method level.
+					</para>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+		<para>
+			Seam applications usually use the standard EJB3 annotations for all other transaction demarcation needs.
+		</para>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_annotations-Annotations_for_exceptions">
+		<title>Annotations for exceptions</title>
+		<para>
+			These annotations let you specify how Seam should handle an exception that propagates out of a Seam component.
+		</para>
+		<variablelist spacing="compact">
+			<varlistentry>
+				<term><literal>@Redirect</literal></term>
+				<listitem>
+					
+<programlisting>@Redirect(viewId="error.jsp")
+</programlisting>
+					<para>
+						Specifies that the annotated exception causes a browser redirect to a specified view id.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>viewId</literal> &mdash; specifies the JSF view id to redirect to.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>message</literal> &mdash; a message to be displayed, default to the exception message.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>end</literal> &mdash; specifies that the long-running conversation should end, default to <literal>false</literal>.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@HttpError</literal></term>
+				<listitem>
+					
+<programlisting>@HttpError(errorCode=404)
+</programlisting>
+					<para>
+						Specifies that the annotated exception causes a HTTP error to be sent.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>errorCode</literal> &mdash; the HTTP error code, default to <literal>500</literal>.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>message</literal> &mdash; a message to be sent with the HTTP error, default to the exception message.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>end</literal> &mdash; specifies that the long-running conversation should end, default to <literal>false</literal>.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_annotations-Annotations_for_validation">
+		<title>Annotations for validation</title>
+		<para>
+			This annotation triggers Hibernate Validator. It appears on a method of a Seam component, almost always an action listener method.
+		</para>
+		<para>
+			Please refer to the documentation for the Hibernate Annotations package for information about the annotations defined by the Hibernate Validator framework.
+		</para>
+		<para>
+			<emphasis>Note that use of <literal>@IfInvalid</literal> is now semi-deprecated and <literal>&lt;s:validateAll&gt;</literal> is now preferred.</emphasis>
+		</para>
+		<variablelist spacing="compact">
+			<varlistentry>
+				<term><literal>@IfInvalid</literal></term>
+				<listitem>
+					
+<programlisting>@IfInvalid(outcome="invalid", refreshEntities=true)
+</programlisting>
+					<para>
+						Specifies that Hibernate Validator should validate the component before the method is invoked. If the invocation fails, the specified outcome will be returned, and the validation failure messages returned by Hibernate Validator will be added to the <literal>FacesContext</literal>. Otherwise, the invocation will proceed.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>outcome</literal> &mdash; the JSF outcome when validation fails.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>refreshEntities</literal> &mdash; specifies that any invalid entity in the managed state should be refreshed from the database when validation fails. Default to <literal>false</literal>. (Useful with extended persistence contexts.)
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_annotations-Annotations_for_Seam_Remoting">
+		<title>Annotations for Seam Remoting</title>
+		<para>
+			Seam Remoting requires that the local interface of a session bean be annotated with the following annotation:
+		</para>
+		<variablelist spacing="compact">
+			<varlistentry>
+				<term><literal>@WebRemote</literal></term>
+				<listitem>
+					
+<programlisting>@WebRemote(exclude="path.to.exclude")
+</programlisting>
+					<para>
+						Indicates that the annotated method may be called from client-side JavaScript. The <literal>exclude</literal> property is optional and allows objects to be excluded from the result's object graph (see the Remoting chapter for more details).
+					</para>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_annotations-Annotations_for_Seam_interceptors">
+		<title>Annotations for Seam interceptors</title>
+		<para>
+			The following annotations appear on Seam interceptor classes.
+		</para>
+		<para>
+			Please refer to the documentation for the EJB 3.0 specification for information about the annotations required for EJB interceptor definition.
+		</para>
+		<variablelist spacing="compact">
+			<varlistentry>
+				<term><literal>@Interceptor</literal></term>
+				<listitem>
+					<itemizedlist>
+						<listitem>
+							
+<programlisting>@Interceptor(stateless=true)
+</programlisting>
+							<para>
+								Specifies that this interceptor is stateless and Seam may optimize replication.
+							</para>
+						</listitem>
+						<listitem>
+							
+<programlisting>@Interceptor(type=CLIENT)
+</programlisting>
+							<para>
+								Specifies that this interceptor is a "client-side" interceptor that is called before the EJB container.
+							</para>
+						</listitem>
+						<listitem>
+							
+<programlisting>@Interceptor(around={SomeInterceptor.class, OtherInterceptor.class})
+</programlisting>
+							<para>
+								Specifies that this interceptor is positioned higher in the stack than the given interceptors.
+							</para>
+						</listitem>
+						<listitem>
+							
+<programlisting>@Interceptor(within={SomeInterceptor.class, OtherInterceptor.class})
+</programlisting>
+							<para>
+								Specifies that this interceptor is positioned deeper in the stack than the given interceptors.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_annotations-Annotations_for_asynchronicity">
+		<title>Annotations for asynchronicity</title>
+		<para>
+			The following annotations are used to declare an asynchronous method, for example:
+		</para>
+		
+<programlisting>@Asynchronous public void scheduleAlert(Alert alert, @Expiration Date date) { ... }
+</programlisting>
+		
+<programlisting>@Asynchronous public Timer scheduleAlerts(Alert alert, @Expiration Date date, 
+ at IntervalDuration long interval) { ... }
+</programlisting>
+		<variablelist spacing="compact">
+			<varlistentry>
+				<term><literal>@Asynchronous</literal></term>
+				<listitem>
+					
+<programlisting>@Asynchronous
+</programlisting>
+					<para>
+						Specifies that the method call is processed asynchronously.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@Duration</literal></term>
+				<listitem>
+					
+<programlisting>@Duration
+</programlisting>
+					<para>
+						Specifies that a parameter of the asynchronous call is the duration before the call is processed (or first processed for recurring calls).
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@Expiration</literal></term>
+				<listitem>
+					
+<programlisting>@Expiration
+</programlisting>
+					<para>
+						Specifies that a parameter of the asynchronous call is the datetime at which the call is processed (or first processed for recurring calls).
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@IntervalDuration</literal></term>
+				<listitem>
+					
+<programlisting>@IntervalDuration
+</programlisting>
+					<para>
+						Specifies that an asynchronous method call recurs, and that the annotationed parameter is duration between recurrences.
+					</para>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_annotations-Annotations_for_use_with_JSF_dataTable">
+		<title>Annotations for use with JSF <literal>dataTable</literal></title>
+		<para>
+			The following annotations make it easy to implement clickable lists backed by a stateful session bean. They appear on attributes.
+		</para>
+		<variablelist spacing="compact">
+			<varlistentry id="datamodel-annotation">
+				<term><literal>@DataModel</literal></term>
+				<listitem>
+					
+<programlisting>@DataModel("variableName")
+</programlisting>
+					<para>
+						Exposes an attribute of type <literal>List</literal>, <literal>Map</literal>, <literal>Set</literal> or <literal>Object[]</literal> as a JSF <literal>DataModel</literal> into the scope of the owning component (or the <literal>EVENT</literal> scope if the owning component is <literal>STATELESS</literal>). In the case of <literal>Map</literal>, each row of the <literal>DataModel</literal> is a <literal>Map.Entry</literal>.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>value</literal> &mdash; name of the conversation context variable. Default to the attribute name.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>scope</literal> &mdash; if <literal>scope=ScopeType.PAGE</literal> is explicitly specified, the <literal>DataModel</literal> will be kept in the <literal>PAGE</literal> context.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@DataModelSelection</literal></term>
+				<listitem>
+					
+<programlisting>@DataModelSelection
+</programlisting>
+					<para>
+						Injects the selected value from the JSF <literal>DataModel</literal> (this is the element of the underlying collection, or the map value).
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>value</literal> &mdash; name of the conversation context variable. Not needed if there is exactly one <literal>@DataModel</literal> in the component.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@DataModelSelectionIndex</literal></term>
+				<listitem>
+					
+<programlisting>@DataModelSelectionIndex
+</programlisting>
+					<para>
+						Exposes the selection index of the JSF <literal>DataModel</literal> as an attribute of the component (this is the row number of the underlying collection, or the map key).
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>value</literal> &mdash; name of the conversation context variable. Not needed if there is exactly one <literal>@DataModel</literal> in the component.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_annotations-Meta_annotations_for_databinding">
+		<title>Meta-annotations for databinding</title>
+		<para>
+			These meta-annotations make it possible to implement similar functionality to <literal>@DataModel</literal> and <literal>@DataModelSelection</literal> for other datastructures apart from lists.
+		</para>
+		<variablelist spacing="compact">
+			<varlistentry>
+				<term><literal>@DataBinderClass</literal></term>
+				<listitem>
+					
+<programlisting>@DataBinderClass(DataModelBinder.class)
+</programlisting>
+					<para>
+						Specifies that an annotation is a databinding annotation.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@DataSelectorClass</literal></term>
+				<listitem>
+					
+<programlisting>@DataSelectorClass(DataModelSelector.class)
+</programlisting>
+					<para>
+						Specifies that an annotation is a dataselection annotation.
+					</para>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_annotations-Annotations_for_packaging">
+		<title>Annotations for packaging</title>
+		<para>
+			This annotation provides a mechanism for declaring information about a set of components that are packaged together. It can be applied to any Java package.
+		</para>
+		<variablelist spacing="compact">
+			<varlistentry>
+				<term><literal>@Namespace</literal></term>
+				<listitem>
+					
+<programlisting>@Namespace(value="http://jboss.com/products/seam/example/seampay")
+</programlisting>
+					<para>
+						Specifies that components in the current package are associated with the given namespace. The declared namespace can be used as an XML namespace in a <literal>components.xml</literal> file to simplify application configuration.
+					</para>
+					
+<programlisting>@Namespace(value="http://jboss.com/products/seam/core", prefix="org.jboss.seam.core")
+</programlisting>
+					<para>
+						Specifies a namespace to associate with a given package. Additionally, it specifies a component name prefix to be applied to component names specified in the XML file. For example, an XML element named <literal>microcontainer</literal> that is associated with this namespace would be understood to actually refere to a component named <literal>org.jboss.seam.core.microcontainer</literal>.
+					</para>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+	</section>
+
+</chapter>
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Author_Group.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Author_Group.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Author_Group.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,91 @@
+<?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" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Seam_Reference_Guide_CP07.ent">
+%BOOK_ENTITIES;
+]>
+<authorgroup lang="en-US">
+	<!-- <author><firstname>Gavin</firstname><surname>King</surname></author>	
+	<author><firstname>Christian</firstname><surname>Bauer</surname></author>	
+        <author><firstname>Norman</firstname><surname>Richards</surname></author>	
+        <author><firstname>Shane</firstname><surname>Bryzak</surname></author>	
+        <author><firstname>Pete</firstname><surname>Muir</surname></author>	
+        <author><firstname>Emmanuel</firstname><surname>Bernard</surname></author>	
+        <author><firstname>Max</firstname><surname>Andersen</surname></author>	
+        <author><firstname>Michael</firstname><surname>Youngstrom</surname></author>	
+        <author><firstname>Thomas</firstname><surname>Heute</surname></author>	
+	<author><firstname>Michael</firstname><surname>Yuan</surname></author>	 -->
+	<author>
+		<firstname>Written By: Gavin King, Christian Bauer, Norman Richards, Shane Bryzak, Pete Muir, Emmanuel Bernard, Max Andersen, Michael Youngstrom, Thomas Heute, Michael Yuan</firstname>
+	</author>
+	<othercredit>
+		<firstname>Japanese Translation: Fusayuki Minamoto, Takayoshi Kimura, Takayoshi Osawa, Reiko Ohtsuka, Syunpei Shiraishi, Toshiya Kobayashi, Shigeaki Wakizaka, Ken Yamada, Noriko Mizumoto</firstname>
+	</othercredit>
+	<!-- 
+  <othercredit>
+	  <firstname>Fusayuki</firstname>
+	  <surname>Minamoto</surname>
+		<contrib>Japanese Translation
+		</contrib>
+  </othercredit>
+  <othercredit>
+	  <firstname>Takayoshi</firstname>
+	  <surname>Kimura</surname>
+	  <contrib>Japanese Translation
+	  </contrib>
+  </othercredit>
+  
+  
+  <othercredit>
+	  <firstname>Takayoshi</firstname>
+	  <surname>Osawa</surname>
+	  <contrib>Japanese Translation
+	  </contrib>
+  </othercredit>
+  
+  
+  <othercredit>
+	  <firstname>Reiko</firstname>
+	  <surname>Ohtsuka</surname>
+	  <contrib>Japanese Translation
+	  </contrib>
+  </othercredit>
+  
+  
+  <othercredit>
+	  <firstname>Syunpei</firstname>
+	  <surname>Shiraishi</surname>
+	  <contrib>Japanese Translation
+	  </contrib>
+  </othercredit>
+  
+  
+  <othercredit>
+	  <firstname>Toshiya</firstname>
+	  <surname>Kobayashi</surname>
+	  <contrib>Japanese Translation
+	  </contrib>
+  </othercredit>
+  
+  <othercredit>
+	  <firstname>Shigeaki</firstname>
+	  <surname>Wakizaka</surname>
+	  <contrib>Japanese Translation
+	  </contrib>
+  </othercredit>
+  
+  <othercredit>
+	  <firstname>Ken</firstname>
+	  <surname>Yamada</surname>
+	  <contrib>Japanese Translation
+	  </contrib>
+  </othercredit>
+  
+  <othercredit>
+	  <firstname>Noriko</firstname>
+	  <surname>Mizumoto</surname>
+	  <contrib>Japanese Translation
+	  </contrib>
+  </othercredit>
+  -->
+</authorgroup>
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Book_Info.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Book_Info.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Book_Info.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,34 @@
+<?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" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Seam_Reference_Guide_CP07.ent">
+%BOOK_ENTITIES;
+]>
+<bookinfo id="Seam_Reference_Guide-Seam___Contextual_Components" lang="en-US">
+	<title>Seam Reference Guide CP07</title>
+	<subtitle>for Use with JBoss Enterprise Application Platform 4.3 Cumulative Patch 7</subtitle>
+	<edition>2.0</edition>
+	<pubsnumber>5</pubsnumber>
+	<productname>JBoss Enterprise Application Platform</productname>
+	<productnumber>4.3</productnumber>
+	<!-- 	<pubdate>Sep, 2007</pubdate>  --><isbn>N/A</isbn>
+	<abstract>
+		<para>
+This book is a Reference Guide to Seam 1.2 for JBoss Enterprise
+Application Platform 4.3.
+</para>
+	</abstract>
+	<corpauthor>
+		<inlinemediaobject>
+			<imageobject>
+				<imagedata fileref="Common_Content/images/redhat-logo.svg" format="SVG" />
+			</imageobject>
+		</inlinemediaobject>
+	</corpauthor>
+	<copyright>
+		<year>&YEAR;</year>
+		<holder>&HOLDER;</holder>
+	</copyright>
+	<xi:include href="Common_Content/Legal_Notice.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Author_Group.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+</bookinfo>
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Cache.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Cache.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Cache.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,146 @@
+<?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" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Seam_Reference_Guide_CP07.ent">
+%BOOK_ENTITIES;
+]>
+<chapter id="cache" lang="en-US">
+	<title>Caching</title>
+	<para>
+		In almost all enterprise applications, the database is the primary bottleneck, and the least scalable tier of the runtime environment. So anything we can possibly do to share the database <emphasis>less often</emphasis> is worth doing.
+	</para>
+	<para>
+		This calls for a cache. Well, not just one cache. A well designed Seam application will feature a rich, multi-layered caching strategy that impacts every layer of the application:
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				The database has its own cache. This is particularly important, but cannot scale like a cache in the application tier.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Your ORM solution (Hibernate, or some other JPA implementation) has a second-level cache of data from the database. This is a very powerful capability, but is often misused. In a clustered environment, keeping the data in the cache transactionally consistent across the whole cluster, and with the database, is quite expensive. It makes most sense for data which is shared between many users, and is updated rarely. <!--  In traditional 
+                stateless architectures, people often try to use the second-level
+                cache for conversational state. This is always bad, and is
+                especially wrong in Seam.  -->
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				The Seam conversation context is a cache of conversational state. Components you put into the conversation context can hold and cache state relating to the current user interaction.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				In particular, the Seam-managed persistence context (or an extended EJB container-managed persistence context associated with a conversation-scoped stateful session bean) acts as a cache of data that has been read in the current conversation. This cache tends to have a pretty high hitrate. Seam optimizes the replication of Seam-managed persistence contexts in a clustered environment, and there is no requirement for transactional consistency with the database (optimistic locking is sufficient) so you do not need to worry too much about the performance implications of this cache, unless you read thousands of objects into a single persistence context.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				The application can cache non-transactional state in the Seam application context. State kept in the application context is of course not visible to other nodes in the cluster.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				The application can cache transactional state using the Seam <literal>pojoCache</literal> component, which integrates JBossCache into the Seam environment. This state will be visible to other nodes if you run JBoss cache in a clustered mode.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Finally, Seam lets you cache rendered fragments of a JSF page. Unlike the ORM second-level cache, this cache is not automatically invalidated when data changes, so you need to write application code to perform explicit invalidation, or set appropriate expiration policies.
+			</para>
+		</listitem>
+	</itemizedlist>
+	<para>
+		For more information about the second-level cache, you will need to refer to the documentation of your ORM solution, since this is an extremely complex topic. In this section we will discuss the use of JBossCache directly, via the <literal>pojoCache</literal> component, or as the page fragment cache, via the <literal>&lt;s:cache&gt;</literal> control.
+	</para>
+	<section>
+		<title>Using JBossCache in Seam</title>
+		<para>
+			The built-in <literal>pojoCache</literal> component manages an instance of <literal>org.jboss.cache.aop.PojoCache</literal>. You can safely put any immutable Java object in the cache, and it will be replicated across the cluster (assuming that replication is enabled). If you want to keep mutable objects in the cache, you will need to run the JBoss Cache bytecode preprocessor to ensure that changes to the objects will be automatically detected and replicated.
+		</para>
+		<para>
+			To use <literal>pojoCache</literal>, all you need to do is put the JBossCache jars in the classpath, and provide a resource named <literal>treecache.xml</literal> with an appropriate cache configuration. JBoss Cache has many scary and confusing configuration settings, so we won't discuss them here. Please refer to the JBoss Cache documentation for more information.
+		</para>
+		<para>
+			You can find a sample <literal>treecache.xml</literal> in <literal>examples/blog/resources/treecache.xml</literal>.
+		</para>
+		<para>
+			For an EAR deployment of Seam, we recommend that the JBoss Cache jars and configuration go directly into the EAR. Make sure you place both <literal>jboss-cache.jar</literal> and <literal>jgroups.jar</literal> in your EAR's lib folder.
+		</para>
+		<para>
+			Now you can inject the cache into any Seam component:
+		</para>
+		
+<programlisting role="JAVA">@Name("chatroom")
+public class Chatroom {
+    @In PojoCache pojoCache;
+    
+    public void join(String username) {
+      try
+      {
+         Set&lt;String&gt; userList = (Set&lt;String&gt;) pojoCache.get("chatroom", "userList");
+         if (userList==null) 
+         {
+            userList = new HashSet&lt;String&gt;();
+            pojoCache.put("chatroom", "userList", userList);
+         }
+         userList.put(username);
+      }
+      catch (CacheException ce)
+      {
+         throw new RuntimeException(ce);
+      }
+    }
+}
+</programlisting>
+		<para>
+			If you want to have multiple JBoss Cache configurations in your application, use <literal>components.xml</literal>:
+		</para>
+		
+<programlisting role="JAVA">&lt;core:pojo-cache name="myCache" cfg-resource-name="myown/cache.xml"/&gt;
+</programlisting>
+	</section>
+	
+	<section>
+		<title>Page fragment caching</title>
+		<para>
+			The most interesting use of JBoss Cache is the <literal>&lt;s:cache&gt;</literal> tag, Seam's solution to the problem of page fragment caching in JSF. <literal>&lt;s:cache&gt;</literal> uses <literal>pojoCache</literal> internally, so you need to follow the steps listed above before you can use it. <!--  (Put the jars 
+            in the EAR, wade through the scary configuration options, etc.)  -->
+		</para>
+		<para>
+			<literal>&lt;s:cache&gt;</literal> is used for caching some rendered content which changes rarely. For example, the welcome page of our blog displays the recent blog entries:
+		</para>
+		
+<programlisting role="XHTML">&lt;s:cache key="recentEntries-#{blog.id}" region="welcomePageFragments"&gt;
+   &lt;h:dataTable value="#{blog.recentEntries}" var="blogEntry"&gt;
+      &lt;h:column&gt;
+         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;
+         &lt;div&gt;
+            &lt;s:formattedText value="#{blogEntry.body}"/&gt;
+         &lt;/div&gt;
+      &lt;/h:column&gt;
+   &lt;/h:dataTable&gt;
+&lt;/s:cache&gt;
+</programlisting>
+		<para>
+			The <literal>key</literal> will let you have multiple cached versions of each page fragment. In this case, there is one cached version per blog. The <literal>region</literal> determines the JBossCache node that all version will be stored in. Different nodes may have different expiry policies (setup during the previous steps). <!-- (That is the 
+            stuff you set up using the aforementioned scary configuration options.)  -->
+		</para>
+		<para>
+			The issue with the <literal>&lt;s:cache&gt;</literal> tag is that it is unable to recognize when the underlying data changes (for example, when the blogger posts a new entry). So you need to evict the cached fragment manually:
+		</para>
+		
+<programlisting role="JAVA">public void post() {
+    ...
+    entityManager.persist(blogEntry);
+    pojoCache.remove("welcomePageFragments", "recentEntries-" + blog.getId() );
+}
+</programlisting>
+		<para>
+			Alternatively, if it is not critical that changes are immediately visible to the user, you could set a short expiry time on the JbossCache node.
+		</para>
+	</section>
+
+</chapter>
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/Conventions.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/Conventions.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/Conventions.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,170 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "../Seam_Reference_Guide_CP07.ent">
+%BOOK_ENTITIES;
+]>
+<section lang="en-US">
+	<title>Document Conventions</title>
+	<para>
+		This manual uses several conventions to highlight certain words and phrases and draw attention to specific pieces of information.
+	</para>
+	<para>
+		In PDF and paper editions, this manual uses typefaces drawn from the <ulink url="https://fedorahosted.org/liberation-fonts/">Liberation Fonts</ulink> set. The Liberation Fonts set is also used in HTML editions if the set is installed on your system. If not, alternative but equivalent typefaces are displayed. Note: Red Hat Enterprise Linux 5 and later includes the Liberation Fonts set by default.
+	</para>
+	<section>
+		<title>Typographic Conventions</title>
+		<para>
+			Four typographic conventions are used to call attention to specific words and phrases. These conventions, and the circumstances they apply to, are as follows.
+		</para>
+		<para>
+			<literal>Mono-spaced Bold</literal>
+		</para>
+		<para>
+			Used to highlight system input, including shell commands, file names and paths. Also used to highlight keycaps and key combinations. For example:
+		</para>
+		<blockquote>
+			<para>
+				To see the contents of the file <filename>my_next_bestselling_novel</filename> in your current working directory, enter the <command>cat my_next_bestselling_novel</command> command at the shell prompt and press <keycap>Enter</keycap> to execute the command.
+			</para>
+		</blockquote>
+		<para>
+			The above includes a file name, a shell command and a keycap, all presented in mono-spaced bold and all distinguishable thanks to context.
+		</para>
+		<para>
+			Key combinations can be distinguished from keycaps by the hyphen connecting each part of a key combination. For example:
+		</para>
+		<blockquote>
+			<para>
+				Press <keycap>Enter</keycap> to execute the command.
+			</para>
+			<para>
+				Press <keycombo><keycap>Ctrl</keycap><keycap>Alt</keycap><keycap>F1</keycap></keycombo> to switch to the first virtual terminal. Press <keycombo><keycap>Ctrl</keycap><keycap>Alt</keycap><keycap>F7</keycap></keycombo> to return to your X-Windows session.
+			</para>
+		</blockquote>
+		<para>
+			The first paragraph highlights the particular keycap to press. The second highlights two key combinations (each a set of three keycaps with each set pressed simultaneously).
+		</para>
+		<para>
+			If source code is discussed, class names, methods, functions, variable names and returned values mentioned within a paragraph will be presented as above, in <literal>mono-spaced bold</literal>. For example:
+		</para>
+		<blockquote>
+			<para>
+				File-related classes include <classname>filesystem</classname> for file systems, <classname>file</classname> for files, and <classname>dir</classname> for directories. Each class has its own associated set of permissions.
+			</para>
+		</blockquote>
+		<para>
+			<application>Proportional Bold</application>
+		</para>
+		<para>
+			This denotes words or phrases encountered on a system, including application names; dialog box text; labeled buttons; check-box and radio button labels; menu titles and sub-menu titles. For example:
+		</para>
+		<blockquote>
+			<para>
+				Choose <guimenu>System &gt; Preferences &gt; Mouse</guimenu> from the main menu bar to launch <application>Mouse Preferences</application>. In the <guilabel>Buttons</guilabel> tab, click the <guilabel>Left-handed mouse</guilabel> check box and click <guibutton>Close</guibutton> to switch the primary mouse button from the left to the right (making the mouse suitable for use in the left hand).
+			</para>
+			<para>
+				To insert a special character into a <application>gedit</application> file, choose <guimenu>Applications &gt; Accessories &gt; Character Map</guimenu> from the main menu bar. Next, choose <guimenu>Search &gt; Find&hellip;</guimenu> from the <application>Character Map</application> menu bar, type the name of the character in the <guilabel>Search</guilabel> field and click <guibutton>Next</guibutton>. The character you sought will be highlighted in the <guilabel>Character Table</guilabel>. Double-click this highlighted character to place it in the <guilabel>Text to copy</guilabel> field and then click the <guibutton>Copy</guibutton> button. Now switch back to your document and choose <guimenu>Edit &gt; Paste</guimenu> from the <application>gedit</application> menu bar.
+			</para>
+		</blockquote>
+		<para>
+			The above text includes application names; system-wide menu names and items; application-specific menu names; and buttons and text found within a GUI interface, all presented in proportional bold and all distinguishable by context.
+		</para>
+		<para>
+			Note the <guimenu>&gt;</guimenu> shorthand used to indicate traversal through a menu and its sub-menus. This avoids difficult-to-follow phrasing such as 'Select <guimenuitem>Mouse</guimenuitem> from the <guimenu>Preferences</guimenu> sub-menu in the <guimenu>System</guimenu> menu of the main menu bar'.
+		</para>
+		<para>
+			<command><replaceable>Mono-spaced Bold Italic</replaceable></command> or <application><replaceable>Proportional Bold Italic</replaceable></application>
+		</para>
+		<para>
+			Whether mono-spaced bold or proportional bold, the addition of italics indicates replaceable or variable text. Italics denotes text you do not input literally or displayed text that changes depending on circumstance. For example:
+		</para>
+		<blockquote>
+			<para>
+				To connect to a remote machine using ssh, type <command>ssh <replaceable>username</replaceable>@<replaceable>domain.name</replaceable></command> at a shell prompt. If the remote machine is <filename>example.com</filename> and your username on that machine is john, type <command>ssh john at example.com</command>.
+			</para>
+			<para>
+				The <command>mount -o remount <replaceable>file-system</replaceable></command> command remounts the named file system. For example, to remount the <filename>/home</filename> file system, the command is <command>mount -o remount /home</command>.
+			</para>
+			<para>
+				To see the version of a currently installed package, use the <command>rpm -q <replaceable>package</replaceable></command> command. It will return a result as follows: <command><replaceable>package-version-release</replaceable></command>.
+			</para>
+		</blockquote>
+		<para>
+			Note the words in bold italics above &mdash; username, domain.name, file-system, package, version and release. Each word is a placeholder, either for text you enter when issuing a command or for text displayed by the system.
+		</para>
+		<para>
+			Aside from standard usage for presenting the title of a work, italics denotes the first use of a new and important term. For example:
+		</para>
+		<blockquote>
+			<para>
+				When the Apache HTTP Server accepts requests, it dispatches child processes or threads to handle them. This group of child processes or threads is known as a <firstterm>server-pool</firstterm>. Under Apache HTTP Server 2.0, the responsibility for creating and maintaining these server-pools has been abstracted to a group of modules called <firstterm>Multi-Processing Modules</firstterm> (<firstterm>MPMs</firstterm>). Unlike other modules, only one module from the MPM group can be loaded by the Apache HTTP Server.
+			</para>
+		</blockquote>
+	</section>
+	
+	<section>
+		<title>Pull-quote Conventions</title>
+		<para>
+			Terminal output and source code listings are set off visually from the surrounding text.
+		</para>
+		<para>
+			Output sent to a terminal is set in <computeroutput>mono-spaced roman</computeroutput> and presented thus:
+		</para>
+		
+<screen>books        Desktop   documentation  drafts  mss    photos   stuff  svn
+books_tests  Desktop1  downloads      images  notes  scripts  svgs
+</screen>
+		<para>
+			Source-code listings are also set in <computeroutput>mono-spaced roman</computeroutput> but add syntax highlighting as follows:
+		</para>
+		
+<programlisting language="Java">package org.jboss.book.jca.ex1;
+
+import javax.naming.InitialContext;
+
+public class ExClient
+{
+   public static void main(String args[]) 
+       throws Exception
+   {
+      InitialContext iniCtx = new InitialContext();
+      Object         ref    = iniCtx.lookup("EchoBean");
+      EchoHome       home   = (EchoHome) ref;
+      Echo           echo   = home.create();
+
+      System.out.println("Created Echo");
+
+      System.out.println("Echo.echo('Hello') = " + echo.echo("Hello"));
+   }
+}
+</programlisting>
+	</section>
+	
+	<section>
+		<title>Notes and Warnings</title>
+		<para>
+			Finally, we use three visual styles to draw attention to information that might otherwise be overlooked.
+		</para>
+		<note>
+			<title>Note</title>
+			<para>
+				Notes are tips, shortcuts or alternative approaches to the task at hand. Ignoring a note should have no negative consequences, but you might miss out on a trick that makes your life easier.
+			</para>
+		</note>
+		<important>
+			<title>Important</title>
+			<para>
+				Important boxes detail things that are easily missed: configuration changes that only apply to the current session, or services that need restarting before an update will apply. Ignoring a box labeled 'Important' won't cause data loss but may cause irritation and frustration.
+			</para>
+		</important>
+		<warning>
+			<title>Warning</title>
+			<para>
+				Warnings should not be ignored. Ignoring warnings will most likely cause data loss.
+			</para>
+		</warning>
+	</section>
+
+</section>
+
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/Feedback.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/Feedback.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/Feedback.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,23 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "../Seam_Reference_Guide_CP07.ent">
+%BOOK_ENTITIES;
+]>
+<section lang="en-US">
+	<title>We Need Feedback!</title>
+	<indexterm>
+		<primary>feedback</primary>
+		<secondary>contact information for this manual</secondary>
+	</indexterm>
+	<para>
+		If you find a typographical error in this manual, or if you have thought of a way to make this manual better, we would love to hear from you! Please submit a report in Bugzilla: <ulink url="http://bugzilla.redhat.com/bugzilla/">http://bugzilla.redhat.com/bugzilla/</ulink> against the product <application>&PRODUCT;.</application>
+	</para>
+	<para>
+		When submitting a bug report, be sure to mention the manual's identifier: <citetitle>&BOOKID;</citetitle>
+	</para>
+	<para>
+		If you have a suggestion for improving the documentation, try to be as specific as possible when describing it. If you have found an error, please include the section number and some of the surrounding text so we can find it easily.
+	</para>
+</section>
+
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/Legal_Notice.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/Legal_Notice.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/Legal_Notice.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,30 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE legalnotice PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "../Seam_Reference_Guide_CP07.ent">
+%BOOK_ENTITIES;
+]>
+<legalnotice lang="en-US">
+	<para>
+		Copyright <trademark class="copyright"></trademark> &YEAR; &HOLDER;. This material may only be distributed subject to the terms and conditions set forth in the Open Publication License, V1.0, (the latest version is presently available at <ulink url="http://www.opencontent.org/openpub/">http://www.opencontent.org/openpub/</ulink>).
+	</para>
+	<para>
+		Red Hat, Red Hat Enterprise Linux, the Shadowman logo, JBoss, MetaMatrix, Fedora, the Infinity Logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
+	</para>
+	<para>
+		<trademark class="registered">Linux</trademark> is the registered trademark of Linus Torvalds in the United States and other countries.
+	</para>
+	<para>
+		All other trademarks are the property of their respective owners.
+	</para>
+	<para>
+		<address>
+			<street>1801 Varsity Drive</street>
+			<city>Raleigh</city>, <state>NC</state> <postcode>27606-2072</postcode> <country>USA</country>
+			<phone>Phone: +1 919 754 3700</phone>
+			<phone>Phone: 888 733 4281</phone>
+			<fax>Fax: +1 919 754 3701</fax>
+			<pob>PO Box 13588</pob> <city>Research Triangle Park</city>, <state>NC</state> <postcode>27709</postcode> <country>USA</country>
+		</address>
+	</para>
+</legalnotice>
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/css/common.css
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/css/common.css	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/css/common.css	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1449 @@
+body, h1, h2, h3, h4, h5, h6, pre, li, div {
+	line-height: 1.29em;
+}
+
+body {
+	background-color: white;
+	margin:0 auto;
+	font-family: "liberation sans", "Myriad ", "Bitstream Vera Sans", "Lucida Grande", "Luxi Sans", "Trebuchet MS", helvetica, verdana, arial, sans-serif;
+	font-size:12px;
+	max-width:55em;
+	color:black;
+}
+
+body.toc_embeded {
+	/*for web hosting system only*/
+	margin-left: 300px;
+}
+
+object.toc {
+	/*for web hosting system only*/
+	border-style:none;
+	position:fixed;
+	width:290px;
+	height:99.99%;
+	top:0;
+	left:0;
+	z-index: 100;
+	border-style:none;
+	border-right:1px solid #999;
+}
+
+/* desktop styles */
+body.desktop {
+	margin-left: 26em;
+}
+
+body.desktop .book > .toc {
+	display:block;
+	width:24em;
+	height:99%;
+	position:fixed;
+	overflow:auto;
+	top:0px;
+	left:0px;
+	padding-left:1em;
+	background-color:#EEEEEE;
+}
+
+.toc {
+	line-height:1.35em;
+}
+
+.toc .chapter, .toc .appendix, .toc .glossary {
+	margin-top:1em;
+}
+
+.toc .part {
+	margin-top:1em;
+	display:block;
+}
+
+span.appendix, span.glossary {
+	display:block;
+	margin-top:0.5em;
+}
+
+div {
+	padding-top:0px;
+}
+
+div.section {
+	padding-top:1em;
+}
+
+p, div.para, div.formalpara {
+	padding-top:0px;
+	margin-top:0.3em;
+	padding-bottom:0px;
+	margin-bottom:1em;
+}
+
+/*Links*/
+a:link {
+	text-decoration:none;
+	border-bottom: 1px dotted ;
+	color:#3366cc;
+}
+
+a:visited {
+	text-decoration:none;
+	border-bottom: 1px dotted ;
+	color:#003366;
+}
+
+div.longdesc-link {
+	float:right;
+	color:#999;
+}
+
+.toc a, .qandaset a {
+	font-weight:normal;
+}
+
+/*headings*/
+h1, h2, h3, h4, h5, h6 {
+	color: #336699;
+	margin-top: 0em;
+	margin-bottom: 0em;
+	background-color: transparent;
+}
+
+h1 {
+	font-size:2.0em;
+}
+
+.titlepage h1.title {
+	font-size: 3.0em;
+	padding-top: 1em;
+	text-align:left;
+}
+
+.book > .titlepage h1.title {
+	text-align:center;
+}
+
+.article > .titlepage h1.title {
+	text-align:center;
+}
+
+.set .titlepage > div > div > h1.title {
+	text-align:center;
+}
+
+.producttitle {
+	margin-top: 0em;
+	margin-bottom: 0em;
+	font-size: 3.0em;
+	font-weight: bold;
+	background: #003d6e url(../images/h1-bg.png) top left repeat-x;
+	color: white;
+	text-align: center;
+	padding: 0.7em;
+}
+
+.titlepage .corpauthor {
+	margin-top: 1em;
+	text-align: center;
+}
+
+.section h1.title {
+	font-size: 1.6em;
+	padding: 0em;
+	color: #336699;
+	text-align: left;
+	background: white;
+}
+
+h2 {
+	font-size:1.6em;
+}
+
+
+h2.subtitle, h3.subtitle {
+	margin-top: 1em;
+	margin-bottom: 1em;
+	font-size: 1.4em;
+	text-align: center;
+}
+
+.preface > div > div > div > h2.title {
+	margin-top: 1em;
+	font-size: 2.0em;
+}
+
+.appendix h2 {
+	margin-top: 1em;
+	font-size: 2.0em;
+}
+
+
+
+h3 {
+	font-size:1.3em;
+	padding-top:0em;
+	padding-bottom:0em;
+}
+h4 {
+	font-size:1.1em;
+	padding-top:0em;
+	padding-bottom:0em;
+}
+
+h5 {
+	font-size:1em;
+}
+
+h6 {
+	font-size:1em;
+}
+
+h5.formalpara {
+	font-size:1em;
+	margin-top:2em;
+	margin-bottom:.8em;
+}
+
+.abstract h6 {
+	margin-top:1em;
+	margin-bottom:.5em;
+	font-size:2em;
+}
+
+/*element rules*/
+hr {
+	border-collapse: collapse;
+	border-style:none;
+	border-top: 1px dotted #ccc;
+	width:100%;
+	margin-top: 3em;
+}
+
+sup {
+	color:#999;
+}
+
+/* web site rules */
+ul.languages, .languages li {
+	display:inline;
+	padding:0em;
+}
+
+.languages li a {
+	padding:0em .5em;
+	text-decoration: none;
+}
+
+.languages li p, .languages li div.para {
+	display:inline;
+}
+
+.languages li a:link, .languages li a:visited {
+	color:#444;
+}
+
+.languages li a:hover, .languages li a:focus, .languages li a:active {
+	color:black;
+}
+
+ul.languages {
+	display:block;
+	background-color:#eee;
+	padding:.5em;
+}
+
+/*supporting stylesheets*/
+
+/*unique to the webpage only*/
+.article ul {
+	padding-left:2em;
+	list-style: disc;
+}
+
+.article li {
+	margin:0em;
+	padding-left:0em;
+}
+
+.books {
+	position:relative;
+}
+
+.versions li {
+	width:100%;
+	clear:both;
+	display:block;
+}
+
+a.version {
+	font-size:2em;
+	text-decoration:none;
+	width:100%;
+	display:block;
+	padding:1em 0em .2em 0em;
+	clear:both;
+}
+
+a.version:before {
+	content:"Version";
+	font-size:smaller;
+}
+
+a.version:visited, a.version:link {
+	color:#666;
+}
+
+a.version:focus, a.version:hover {
+	color:black;
+}
+
+.books {
+	display:block;
+	position:relative;
+	clear:both;
+	width:100%;
+}
+
+.books li {
+	display:block;
+	width:200px;
+	float:left;
+	position:relative;
+	clear: none ;
+}
+
+.books .html {
+	width:170px;
+	display:block;
+}
+
+.books .pdf {
+	position:absolute;
+	left:170px;
+	top:0px;
+	font-size:smaller;
+}
+
+.books .pdf:link, .books .pdf:visited {
+	color:#555;
+}
+
+.books .pdf:hover, .books .pdf:focus {
+	color:#000;
+}
+
+.books li a {
+	text-decoration:none;
+}
+
+.books li a:hover {
+	color:black;
+}
+
+/*products*/
+.products li {
+	display: block;
+	width:300px;
+	float:left;
+}
+
+.products li a {
+	width:300px;
+	padding:.5em 0em;
+}
+
+.products ul {
+	clear:both;
+}
+
+
+/*revision history*/
+.revhistory {
+	display:block;
+}
+
+.revhistory table {
+	background-color:transparent;
+	border-color:#fff;
+	padding:0em;
+	margin: 0;
+	border-collapse:collapse;
+	border-style:none;
+}
+
+.revhistory td {
+	text-align:right;
+	padding:0em;
+	border-top: 1px solid #fff;
+}
+
+
+.revhistory tr td:first-child {
+	text-align:left;
+}
+
+.revhistory tr td p, .revhistory tr td div.para {
+	text-align:left;
+	font-weight:bold;
+	display:block;
+	margin:0em;
+	padding:0em;
+	padding-bottom:0.7em;
+	border-bottom:1px solid #eee;
+}
+
+.revhistory table th {
+	background-color:transparent;
+	color:#336699;
+	font-size:2em;
+	padding: 1em 0em;
+	border-bottom:1px solid #eee;
+}
+
+
+/*credits*/
+.authorgroup div {
+	clear:both;
+	text-align: center;
+}
+
+h3.author {
+	margin: 0em;
+	padding: 0em;
+	padding-top: 1em;
+}
+
+.authorgroup h4 {
+	padding: 0em;
+	margin: 0em;
+	padding-top: 1em;
+	margin-top: 1em;
+}
+
+.author, 
+.editor, 
+.translator, 
+.othercredit,
+.contrib {
+	display: block;
+}
+
+.revhistory .author {
+	display: inline;
+}
+
+.othercredit h3 {
+	padding-top: 1em;
+}
+
+
+.othercredit {
+	margin:0em;
+	padding:0em;
+}
+
+.releaseinfo {
+	clear: both;
+}
+
+.copyright {
+	margin-top: 1em;
+}
+
+/* qanda sets */
+.answer {
+	margin-bottom:1em;
+	border-bottom:1px dotted #ccc;
+}
+
+.qandaset .toc {
+	border-bottom:1px dotted #ccc;
+}
+
+.question {
+	font-weight:bold;
+}
+
+.answer .data, .question .data {
+	padding-left: 2.6em;
+}
+
+.answer label, .question label {
+	float:left;
+	font-weight:bold;
+}
+
+.package {
+	font-style:italic;
+}
+
+/* inline syntax highlighting */
+.perl_Alert {
+	color: #0000ff;
+}
+
+.perl_BaseN {
+	color: #007f00;
+}
+
+.perl_BString {
+	color: #5C3566;
+}
+
+.perl_Char {
+	color: #ff00ff;
+}
+
+.perl_Comment {
+	color: #FF00FF;
+}
+
+
+.perl_DataType {
+	color: #0000ff;
+}
+
+
+.perl_DecVal {
+	color: #00007f;
+}
+
+
+.perl_Error {
+	color: #ff0000;
+}
+
+
+.perl_Float {
+	color: #00007f;
+}
+
+
+.perl_Function {
+	color: #007f00;
+}
+
+
+.perl_IString {
+	color: #5C3566;
+}
+
+
+.perl_Keyword {
+	color: #002F5D;
+}
+
+
+.perl_Operator {
+	color: #ffa500;
+}
+
+
+.perl_Others {
+	color: #b03060;
+}
+
+
+.perl_RegionMarker {
+	color: #96b9ff;
+}
+
+
+.perl_Reserved {
+	color: #9b30ff;
+}
+
+
+.perl_String {
+	color: #5C3566;
+}
+
+
+.perl_Variable {
+	color: #0000ff;
+}
+
+
+.perl_Warning {
+	color: #0000ff;
+}
+
+/*Lists*/
+ul {
+	padding-left:1.6em;
+	list-style-image:url(../images/dot.png);
+	list-style-type: circle;
+}
+
+ul ul {
+	list-style-image:url(../images/dot2.png);
+	list-style-type: circle;
+}
+
+ol {
+	list-style-image:none;
+	list-style-type: decimal;
+}
+
+ol.loweralpha {
+	list-style-type: lower-alpha;
+}
+
+ol.lowerroman {
+	list-style-type: lower-roman;
+}
+
+ol.upperalpha {
+	list-style-type: upper-alpha;
+}
+
+ol.upperroman {
+	list-style-type: upper-roman;
+}
+
+dt {
+	font-weight:bold;
+	margin-bottom:0em;
+	padding-bottom:0em;
+}
+
+dd {
+	margin:0em;
+	margin-left:2em;
+	padding-top:0em;
+	padding-bottom: 1em;
+}
+
+li {
+	padding-top:0px;
+	margin-top:0em;
+	padding-bottom:0px;
+	margin-bottom:0.4em;
+}
+
+li p, li div.para {
+	padding-top:0px;
+	margin-top:0em;
+	padding-bottom:0px;
+	margin-bottom:0.3em;
+}
+
+/*images*/
+img {
+	display:block;
+	margin:2em 0;
+}
+
+.inlinemediaobject, .inlinemediaobject img {
+	display:inline;
+	margin:0em;
+}
+
+.figure img {
+	display:block;
+	margin:0;
+}
+
+.figure .title {
+	margin:0em;
+	margin-bottom:2em;
+	padding:0px;
+}
+
+/*document modes*/
+.confidential {
+	background-color:#900;
+	color:White;
+	padding:.5em .5em;
+	text-transform:uppercase;
+	text-align:center;
+}
+
+.longdesc-link {
+	display:none;
+}
+
+.longdesc {
+	display:none;
+}
+
+.prompt {
+	background-color:#ede7c8;
+	padding:0em .3em;
+}
+
+/*user interface styles*/
+.screen .replaceable {
+	color:#444;
+}
+
+pre, code, .guibutton, .keycap, .guilabel {
+	font-family:"liberation mono", "bitstream vera mono", "dejavu mono", monospace;
+}
+
+.guibutton, .keycap, .guilabel {
+	font-weight:bold;
+	white-space:nowrap;
+}
+
+.example {
+	background-color:#dc9f2e;
+	padding:5px;
+	margin-bottom:10px;
+}
+
+
+/*terminal/console text*/
+.computeroutput, 
+.citetitle, 
+.replaceable, 
+.option {
+	font-family:"liberation mono", "bitstream vera mono", "dejavu mono", monospace;
+}
+
+.replaceable {
+	font-family:"liberation mono", "bitstream vera mono", "dejavu mono", monospace;
+	font-style: italic;
+}
+
+.command, .filename, .keycap, .classname, .literal {
+	font-family:"liberation mono", "bitstream vera mono", "dejavu mono", monospace;
+	font-weight:bold;
+}
+
+pre {
+	font-family:"liberation mono", "bitstream vera mono", "dejavu mono", monospace;
+	display:block;
+	background-color:#eeeeee;
+	margin-bottom: 0.3em;
+	padding:.5em 1em;
+	white-space: pre-wrap; /* css-3 */
+	white-space: -moz-pre-wrap !important; /* Mozilla, since 1999 */
+	white-space: -pre-wrap; /* Opera 4-6 */
+	white-space: -o-pre-wrap; /* Opera 7 */
+	word-wrap: break-word; /* Internet Explorer 5.5+ */
+	font-size: 0.9em;
+}
+
+pre .replaceable, 
+pre .keycap {
+	color:white;
+}
+
+code {
+	white-space: nowrap;
+}
+
+/*Notifications*/
+div.note, div.important, div.warning {
+	padding:1em;
+	padding-bottom:20px;
+	margin-top:.5em;
+	margin-bottom:1.5em;
+	background-repeat:no-repeat;
+	background-position:1em 1em;
+}
+
+div.note pre, div.important pre, div.warning pre {
+	background-color: #333;
+	color: white;
+	margin-left: 4.5em;
+}
+
+
+div.note {
+	background-image:url(../images/note.png);
+	background-color:#8e9f00;
+	color:white;
+}
+
+div.important  {
+	background-color:#d08e13;
+	color:white;
+	background-image:url(../images/important.png);
+}
+
+div.warning {
+	background-color:#9e292b;
+	color:white;
+	background-image:url(../images/warning.png);
+}
+
+
+/* Admonition Headings */
+div.note h2, div.important h2, div.warning h2 {
+	height:32px;
+	font-size:1.3em;
+}
+
+div.note h2, div.important h2, div.warning h2 {
+	color:white;
+}
+
+/* Admonition Inlines */
+div.note .replaceable, div.important .replaceable,  div.warning .replaceable {
+	color:#e3dcc0;
+}
+
+pre .replaceable, tt .replaceable {
+	color:#444;
+}
+
+div.note .guilabel, div.important .guilabel, div.warning .guilabel {
+	color:#e3dcc0;
+}
+
+
+/* Admonition Lists ... really? */
+div.note li, div.warning li, div.important li {
+	padding-left:10px;
+	margin:0em;
+}
+
+div.note ul, div.warning ul, div.important ul {
+	padding-left:40px;
+	margin:0em;
+}
+
+/* Admonition links in verbatim ... *really* */
+div.note pre pre a:visited, div.important pre pre a:visited, 
+ div.warning pre pre a:visited, div.note pre a:link, div.important pre a:link, div.warning pre a:link {
+	color:#0066cc;
+}
+
+/* Admonition links */
+div.note a:visited, div.important a:visited, div.warning a:visited, div.note a:link , div.important a:link , div.warning a:link {
+	color:#f7f2d0;
+}
+
+/*notification icons*/
+div.note h2, div.note p, div.note div.para, div.warning h2, div.warning p, div.warning div.para, div.important h2, .important p, .important div.para {
+	padding:0em;
+	margin:0em;
+	padding-left:56px;
+}
+
+/*Page Title*/
+#title  {
+	display:block;
+	height:45px;
+	padding-bottom:1em;
+	margin:0em;
+}
+
+#title a.left{
+	display:inline;
+	border:none;
+	padding-left:200px;
+}
+
+#title a.left img{
+	border:none;
+	float:left;
+	margin:0em;
+	margin-top:.7em;
+}
+
+#title a.right {
+	padding-bottom:1em;
+}
+
+#title a.right img {
+	border:none;
+	float:right;
+	margin:0em;
+}
+
+/*Table*/
+table {
+	border:1px solid #6c614b;
+	width:100%;
+	border-collapse:collapse;
+}
+
+table.simplelist {
+	border-style: none;
+}
+
+table th {
+	text-align:left;
+	background-color:#6699cc;
+	padding:.3em .5em;
+	color:white;
+}
+
+table td {
+	padding:.15em .5em;
+}
+
+table tr.even td {
+	background-color:#f5f5f5;
+}
+
+table th p:first-child, table td p:first-child, table  li p:first-child,
+table th div.para:first-child, table td div.para:first-child, table  li div.para:first-child {
+	margin-top:0em;
+	padding-top:0em;
+	display:inline;
+}
+
+th, td {
+	border-style:none;
+	vertical-align: top;
+}
+
+table table td {
+	border-bottom:1px dotted #aaa;
+	background-color:white;
+	padding:.6em 0em;
+}
+
+table table {
+	border:1px solid white;
+}
+
+td.remarkval {
+	color:#444;
+}
+
+td.fieldval {
+	font-weight:bold;
+}
+
+.lbname, .lbtype, .lbdescr, .lbdriver, .lbhost {
+	color:white;
+	font-weight:bold;
+	background-color:#999;
+	width:120px;
+}
+
+td.remarkval {
+	width:230px;
+}
+
+td.tname {
+	font-weight:bold;
+}
+
+th.dbfield {
+	width:120px;
+}
+
+th.dbtype {
+	width:70px;
+}
+
+th.dbdefault {
+	width:70px;
+}
+
+th.dbnul {
+	width:70px;
+}
+
+th.dbkey {
+	width:70px;
+}
+
+span.book {
+	margin-top:4em;
+	display:block;
+}
+
+span.chapter {
+	display:block;
+	margin-top:0.5em;
+}
+
+/*Breadcrumbs*/
+#breadcrumbs ul li.first:before {
+	content:" ";
+}
+
+#breadcrumbs {
+	color:#900;
+	padding:3px;
+	margin-bottom:25px;
+}
+
+#breadcrumbs ul {
+	margin-left:0;
+	padding-left:0;
+	display:inline;
+	border:none;
+}
+
+#breadcrumbs ul li {
+	margin-left:0;
+	padding-left:2px;
+	border:none;
+	list-style:none;
+	display:inline;
+}
+
+#breadcrumbs ul li:before {
+	content:"\0020 \0020 \0020 \00BB \0020";
+	color:#333;
+}
+
+/*index*/
+.glossary h3, 
+.index h3 {
+	font-size: 2em;
+	color:#aaa;
+	margin:0em;
+}
+
+.indexdiv {
+	margin-bottom:1em;
+}
+
+.glossary dt, .index dt {
+	color:#444;
+	padding-top:.5em;
+}
+
+.glossary dl dl dt, 
+.index dl dl dt {
+	color:#777;
+	font-weight:normal;
+	padding-top:0em;
+}
+
+.index dl dl dt:before {
+	content:"- ";
+	color:#ccc;
+}
+
+/*changes*/
+.footnote {
+	padding:.2em 1em;
+	background-color:#c8c5ac;
+	font-size: .7em;
+	margin:0em;
+	margin-bottom:.5em;
+	color:#222;
+}
+
+table .footnote {
+	margin:1em .5em;
+}
+
+sup {
+	padding:0em .3em;
+	padding-left:0em;
+}
+
+.footnote {
+	position:relative;
+}
+
+.footnote sup  {
+	color:#e3dcc0;
+	position:absolute;
+	left: .4em;
+}
+
+.footnote sup a:link, 
+.footnote sup a:visited {
+	color:#92917d;
+	text-decoration:none;
+}
+
+.footnote:hover sup a {
+	color:#fff;
+	text-decoration:none;
+}
+
+.footnote p,.footnote div.para {
+	padding-left:5em;
+}
+
+.footnote a:link, 
+.footnote a:visited {
+	color:#00537c;
+}
+
+.footnote a:hover {
+	color:white;
+}
+
+/**/
+div.chapter {
+	margin-top:3em;
+}
+
+div.section {
+	margin-top:1em;
+}
+
+div.note .replaceable, 
+div.important .replaceable, 
+div.warning .replaceable, 
+div.note .keycap, 
+div.important .keycap, 
+div.warning .keycap
+{
+	color:white;
+}
+
+ul li p:last-child, ul li div.para:last-child {
+	margin-bottom:0em;
+	padding-bottom:0em;
+}
+
+/*document navigation*/
+.docnav a, .docnav strong {
+	border:none;
+	text-decoration:none;
+	font-weight:normal;
+}
+
+.docnav {
+	list-style:none;
+	margin:0em;
+	padding:0em;
+	position:relative;
+	width:100%;
+	padding-bottom:2em;
+	padding-top:1em;
+	border-top:1px dotted #ccc;
+}
+
+.docnav li {
+	list-style:none;
+	margin:0em;
+	padding:0em;
+	display:inline;
+	font-size:.8em;
+}
+
+.docnav li:before {
+	content:" ";
+}
+
+.docnav li.previous, .docnav li.next {
+	position:absolute;
+	top:1em;
+}
+
+.docnav li.up, .docnav li.home {
+	margin:0em 1.5em;
+}
+
+.docnav li.previous {
+	left:0px;
+	text-align:left;
+}
+
+.docnav li.next {
+	right:0px;
+	text-align:right;
+}
+
+.docnav li.previous strong, .docnav li.next strong {
+	height:22px;
+	display:block;
+}
+
+.docnav {
+	margin:0 auto;
+	text-align:center;
+}
+
+.docnav li.next a strong {
+	background:  url(../images/stock-go-forward.png) top right no-repeat;
+	padding-top:3px;
+	padding-bottom:4px;
+	padding-right:28px;
+	font-size:1.2em;
+}
+
+.docnav li.previous a strong {
+	background: url(../images/stock-go-back.png) top left no-repeat;
+	padding-top:3px;
+	padding-bottom:4px;
+	padding-left:28px;
+	padding-right:0.5em;
+	font-size:1.2em;
+}
+
+.docnav li.home a strong {
+	background: url(../images/stock-home.png) top left no-repeat;
+	padding:5px;
+	padding-left:28px;
+	font-size:1.2em;
+}
+
+.docnav li.up a strong {
+	background: url(../images/stock-go-up.png) top left no-repeat;
+	padding:5px;
+	padding-left:28px;
+	font-size:1.2em;
+}
+
+.docnav a:link, .docnav a:visited {
+	color:#666;
+}
+
+.docnav a:hover, .docnav a:focus, .docnav a:active {
+	color:black;
+}
+
+.docnav a {
+	max-width: 10em;
+	overflow:hidden;
+}
+
+.docnav a:link strong {
+	text-decoration:none;
+}
+
+.docnav {
+	margin:0 auto;
+	text-align:center;
+}
+
+ul.docnav {
+	margin-bottom: 1em;
+}
+/* Reports */
+.reports ul {
+	list-style:none;
+	margin:0em;
+	padding:0em;
+}
+
+.reports li{
+	margin:0em;
+	padding:0em;
+}
+
+.reports li.odd {
+	background-color: #eeeeee;
+	margin:0em;
+	padding:0em;
+}
+
+.reports dl {
+	display:inline;
+	margin:0em;
+	padding:0em;
+	float:right;
+	margin-right: 17em;
+	margin-top:-1.3em;
+}
+
+.reports dt {
+	display:inline;
+	margin:0em;
+	padding:0em;
+}
+
+.reports dd {
+	display:inline;
+	margin:0em;
+	padding:0em;
+	padding-right:.5em;
+}
+
+.reports h2, .reports h3{
+	display:inline;
+	padding-right:.5em;
+	font-size:10pt;
+	font-weight:normal;
+}
+
+.reports div.progress {
+	display:inline;
+	float:right;
+	width:16em;
+	background:#c00 url(../images/shine.png) top left repeat-x;
+	margin:0em;
+	margin-top:-1.3em;
+	padding:0em;
+	border:none;
+}
+
+/*uniform*/
+body.results, body.reports {
+	max-width:57em ;
+	padding:0em;
+}
+
+/*Progress Bar*/
+div.progress {
+	display:block;
+	float:left;
+	width:16em;
+	background:#c00 url(../images/shine.png) top left repeat-x;
+	height:1em;
+}
+
+div.progress span {
+	height:1em;
+	float:left;
+}
+
+div.progress span.translated {
+	background:#6c3 url(../images/shine.png) top left repeat-x;
+}
+
+div.progress span.fuzzy {
+	background:#ff9f00 url(../images/shine.png) top left repeat-x;
+}
+
+
+/*Results*/
+
+.results ul {
+	list-style:none;
+	margin:0em;
+	padding:0em;
+}
+
+.results li{
+	margin:0em;
+	padding:0em;
+}
+
+.results li.odd {
+	background-color: #eeeeee;
+	margin:0em;
+	padding:0em;
+}
+
+.results dl {
+	display:inline;
+	margin:0em;
+	padding:0em;
+	float:right;
+	margin-right: 17em;
+	margin-top:-1.3em;
+}
+
+.results dt {
+	display:inline;
+	margin:0em;
+	padding:0em;
+}
+
+.results dd {
+	display:inline;
+	margin:0em;
+	padding:0em;
+	padding-right:.5em;
+}
+
+.results h2, .results h3{
+	display:inline;
+	padding-right:.5em;
+	font-size:10pt;
+	font-weight:normal;
+}
+
+.results div.progress {
+	display:inline;
+	float:right;
+	width:16em;
+	background:#c00 url(../images/shine.png) top left repeat-x;
+	margin:0em;
+	margin-top:-1.3em;
+	padding:0em;
+	border:none;
+}
+
+/* Dirty EVIL Mozilla hack for round corners */
+pre {
+	-moz-border-radius:11px;
+	-webkit-border-radius:11px;
+	border-radius: 11px;
+}
+
+.example {
+	-moz-border-radius:15px;
+	-webkit-border-radius:15px;
+	border-radius: 15px;
+}
+
+.term{
+	color:#336699;
+}
+
+.package {
+	font-style: italic;
+}
+
+.edition {
+	color: #336699;
+	background-color: transparent;
+	margin-top: 1em;
+	margin-bottom: 1em;
+	font-size: 1.4em;
+	font-weight: bold;
+	text-align: center;
+}
+
+span.remark {
+	background-color: #ff00ff;
+}
+
+.draft {
+	background-image: url(../images/watermark-draft.png);
+	background-repeat: repeat-y;
+        background-position: center;
+}
+
+.foreignphrase {
+	font-style: inherit;
+}
+
+dt {
+	clear:both;
+}
+
+dt img {
+	border-style: none;
+	max-width: 112px;
+}
+
+dt object {
+	max-width: 112px;
+}
+
+dt .inlinemediaobject, dt object {
+	display: inline;
+	float: left;
+	margin-bottom: 1em;
+	padding-right: 1em;
+	width: 112px;
+}
+
+dl:after {
+	display: block;
+	clear: both;
+	content: "";
+}
+
+.toc dd {
+	padding-bottom: 0em;
+	margin-bottom: 1em;
+	padding-left: 1.3em;
+	margin-left: 0em;
+}
+
+div.toc > dl > dt {
+	padding-bottom: 0em;
+	margin-bottom: 0em;
+	margin-top: 1em;
+}
+
+
+.strikethrough {
+	text-decoration: line-through;
+}
+
+.underline {
+	text-decoration: underline;
+}
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/css/default.css
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/css/default.css	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/css/default.css	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,3 @@
+ at import url("common.css");
+ at import url("overrides.css");
+ at import url("lang.css");

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/css/overrides.css
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/css/overrides.css	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/css/overrides.css	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,56 @@
+a:link {
+	color:#0066cc;
+}
+
+a:visited {
+	color:#6699cc;
+}
+
+h1 {
+	color:#a70000;
+}
+
+.producttitle {
+	background: #800 url(../images/h1-bg.png) top left repeat;
+}
+
+.section h1.title {
+	color:#a70000;
+}
+
+
+h2,h3,h4,h5,h6 {
+	color:#a70000;
+}
+
+table {
+	border:1px solid #aaa;
+}
+
+table th {
+	background-color:#900;
+}
+
+table tr.even td {
+	background-color:#f5f5f5;
+}
+
+#title a {
+	height:54px;
+}
+
+.term{
+	color:#a70000;
+}
+
+.revhistory table th {
+	color:#a70000;
+}
+
+.edition {
+	color: #a70000;
+}
+
+span.remark{
+	background-color: #ffff00;
+}

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/1.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/1.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/1.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/1.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/1.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 17.993,22.013004 L 17.993,10.113004 L 15.239,10.113004 C 14.899001,11.218003 14.286999,11.643004 12.757,11.728004 L 12.757,13.819004 L 14.763,13.819004 L 14.763,22.013004 L 17.993,22.013004"
+     id="text2207"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/10.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/10.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/10.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/10.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/10.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 12.252562,22 L 12.252562,10.1 L 9.4985624,10.1 C 9.1585628,11.204999 8.5465609,11.63 7.0165624,11.715 L 7.0165624,13.806 L 9.0225624,13.806 L 9.0225624,22 L 12.252562,22 M 24.983438,16.033 C 24.983438,12.072004 22.705435,9.913 19.611438,9.913 C 16.517441,9.913 14.205438,12.106004 14.205438,16.067 C 14.205438,20.027996 16.483441,22.187 19.577438,22.187 C 22.671435,22.187 24.983438,19.993996 24.983438,16.033 M 21.600438,16.067 C 21.600438,18.242998 20.886437,19.348 19.611438,19.348 C 18.336439,19.348 17.588438,18.208998 17.588438,16.033 C 17.588438,13.857002 18.302439,12.752 19.577438,12.752 C 20.852437,12.752 21.600438,13.891002 21.600438,16.067"
+     id="text2219"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/11.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/11.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/11.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/11.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/11.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 14.623052,22 L 14.623052,10.1 L 11.869052,10.1 C 11.529053,11.204999 10.917051,11.63 9.3870527,11.715 L 9.3870527,13.806 L 11.393052,13.806 L 11.393052,22 L 14.623052,22 M 21.794928,22 L 21.794928,10.1 L 19.040928,10.1 C 18.700928,11.204999 18.088926,11.63 16.558928,11.715 L 16.558928,13.806 L 18.564928,13.806 L 18.564928,22 L 21.794928,22"
+     id="text2219"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/12.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/12.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/12.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/12.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/12.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 12.677562,22 L 12.677562,10.1 L 9.9235624,10.1 C 9.5835628,11.204999 8.9715609,11.63 7.4415624,11.715 L 7.4415624,13.806 L 9.4475624,13.806 L 9.4475624,22 L 12.677562,22 M 24.558438,22 L 24.558438,19.314 L 18.353438,19.314 C 18.608438,18.600001 19.27144,17.936999 21.651438,16.832 C 23.929436,15.778001 24.473438,14.825998 24.473438,13.262 C 24.473438,11.103002 22.926435,9.913 19.968438,9.913 C 17.92844,9.913 16.381436,10.491001 14.868438,11.46 L 16.381438,13.891 C 17.571437,13.092001 18.727439,12.684 19.917438,12.684 C 20.869437,12.684 21.243438,12.973001 21.243438,13.5 C 21.243438,13.976 21.056437,14.163001 19.798438,14.724 C 16.823441,16.049999 14.936438,17.988004 14.834438,22 L 24.558438,22"
+     id="text2219"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/13.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/13.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/13.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/13.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/13.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 12.550062,22 L 12.550062,10.1 L 9.7960624,10.1 C 9.4560628,11.204999 8.8440609,11.63 7.3140624,11.715 L 7.3140624,13.806 L 9.3200624,13.806 L 9.3200624,22 L 12.550062,22 M 24.685938,18.226 C 24.685938,16.713002 23.716937,15.914 22.611938,15.659 C 23.427937,15.268 24.192938,14.638999 24.192938,13.33 C 24.192938,10.814003 22.288935,9.913 19.432938,9.913 C 17.35894,9.913 15.930937,10.610001 14.825938,11.46 L 16.389938,13.602 C 17.307937,12.939001 18.191939,12.582 19.347938,12.582 C 20.520937,12.582 20.996938,12.922001 20.996938,13.551 C 20.996938,14.332999 20.656937,14.554 19.619938,14.554 L 18.089938,14.554 L 18.089938,17.121 L 19.806938,17.121 C 21.013937,17.121 21.489938,17.427001 21.489938,18.26 C 21.489938,19.075999 20.911937,19.467 19.534938,19.467 C 18.225939,19.467 17.120937,18.973999 16.151938,18.226 L 14.451938,20.368 C 15.726937,21.489999 17.44394,22.187 19.466938,22.187 C 22.696935,22.187 24.685938,20.979997 24.685938,18.226"
+     id="text2219"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/14.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/14.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/14.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/14.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/14.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 12.040062,22 L 12.040062,10.1 L 9.2860624,10.1 C 8.9460628,11.204999 8.3340609,11.63 6.8040624,11.715 L 6.8040624,13.806 L 8.8100624,13.806 L 8.8100624,22 L 12.040062,22 M 25.195938,19.96 L 25.195938,17.172 L 23.665938,17.172 L 23.665938,10.1 L 20.401938,10.1 L 13.992938,17.461 L 13.992938,19.875 L 20.707938,19.875 L 20.707938,22 L 23.665938,22 L 23.665938,19.96 L 25.195938,19.96 M 20.758938,13.432 C 20.724938,13.992999 20.707938,15.302001 20.707938,15.999 L 20.707938,17.172 L 19.823938,17.172 C 19.007939,17.172 18.191937,17.189 17.596938,17.223 C 18.038938,16.798 18.531939,16.253999 19.160938,15.489 L 19.330938,15.285 C 20.112937,14.350001 20.435938,13.925 20.758938,13.432"
+     id="text2219"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/15.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/15.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/15.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/15.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/15.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 12.388562,22 L 12.388562,10.1 L 9.6345624,10.1 C 9.2945628,11.204999 8.6825609,11.63 7.1525624,11.715 L 7.1525624,13.806 L 9.1585624,13.806 L 9.1585624,22 L 12.388562,22 M 24.847438,17.852 C 24.847438,15.200003 23.164435,13.908 20.597438,13.908 C 19.407439,13.908 18.693437,14.112 18.030438,14.435 L 18.132438,12.786 L 24.133438,12.786 L 24.133438,10.1 L 15.463438,10.1 L 15.055438,16.271 L 17.877438,17.223 C 18.472437,16.798 19.067439,16.543 20.070438,16.543 C 21.090437,16.543 21.668438,17.019001 21.668438,17.937 C 21.668438,18.888999 21.107436,19.45 19.577438,19.45 C 18.302439,19.45 16.891437,18.956999 15.752438,18.277 L 14.409438,20.742 C 15.871436,21.625999 17.43544,22.187 19.492438,22.187 C 22.875435,22.187 24.847438,20.622997 24.847438,17.852"
+     id="text2219"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/16.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/16.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/16.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/16.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/16.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 12.405562,22 L 12.405562,10.1 L 9.6515624,10.1 C 9.3115628,11.204999 8.6995609,11.63 7.1695624,11.715 L 7.1695624,13.806 L 9.1755624,13.806 L 9.1755624,22 L 12.405562,22 M 24.830438,17.903 C 24.830438,15.387003 23.096435,14.214 20.631438,14.214 C 19.203439,14.214 18.336437,14.486 17.571438,14.911 C 18.472437,13.534001 20.104441,12.616 23.215438,12.616 L 23.215438,9.913 C 16.415445,9.913 14.341438,14.112003 14.341438,17.257 C 14.341438,20.537997 16.415441,22.187 19.407438,22.187 C 22.773435,22.187 24.830438,20.588997 24.830438,17.903 M 21.651438,18.124 C 21.651438,19.075999 20.818437,19.586 19.577438,19.586 C 18.132439,19.586 17.486438,18.990999 17.486438,18.141 C 17.486438,17.206001 18.183439,16.645 19.645438,16.645 C 20.903437,16.645 21.651438,17.206001 21.651438,18.124"
+     id="text2219"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/17.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/17.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/17.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/17.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/17.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 12.652062,22 L 12.652062,10.1 L 9.8980624,10.1 C 9.5580628,11.204999 8.9460609,11.63 7.4160624,11.715 L 7.4160624,13.806 L 9.4220624,13.806 L 9.4220624,22 L 12.652062,22 M 24.583938,12.48 L 24.583938,10.1 L 14.740938,10.1 L 14.740938,12.786 L 20.656938,12.786 C 18.36194,15.131998 17.239938,17.920004 17.205938,22 L 20.435938,22 C 20.435938,18.141004 21.098941,15.675997 24.583938,12.48"
+     id="text2219"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/18.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/18.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/18.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/18.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/18.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 12.176062,22 L 12.176062,10.1 L 9.4220624,10.1 C 9.0820628,11.204999 8.4700609,11.63 6.9400624,11.715 L 6.9400624,13.806 L 8.9460624,13.806 L 8.9460624,22 L 12.176062,22 M 25.059938,18.294 C 25.059938,16.764002 23.971937,15.948 23.206938,15.642 C 23.954937,15.166 24.549938,14.519999 24.549938,13.449 C 24.549938,11.171002 22.526935,9.913 19.653938,9.913 C 16.780941,9.913 14.723938,11.171002 14.723938,13.449 C 14.723938,14.519999 15.352939,15.251 16.066938,15.676 C 15.301939,15.982 14.213938,16.764002 14.213938,18.294 C 14.213938,20.707998 16.287941,22.187 19.619938,22.187 C 22.951935,22.187 25.059938,20.707998 25.059938,18.294 M 21.387938,13.5 C 21.387938,14.094999 20.945937,14.639 19.653938,14.639 C 18.361939,14.639 17.885938,14.094999 17.885938,13.5 C 17.885938,12.905001 18.327939,12.31 19.619938,12.31 C 20.911937,12.31 21.387938,12.905001 21.387938,13.5 M 21.897938,18.26 C 21.897938,19.075999 21.149936,19.688 19.653938,19.688 C 18.157939,19.688 17.375938,19.0759!
 99 17.375938,18.26 C 17.375938,17.444001 18.106939,16.849 19.619938,16.849 C 21.115936,16.849 21.897938,17.444001 21.897938,18.26"
+     id="text2219"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/19.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/19.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/19.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/19.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/19.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 12.414062,22 L 12.414062,10.1 L 9.6600624,10.1 C 9.3200628,11.204999 8.7080609,11.63 7.1780624,11.715 L 7.1780624,13.806 L 9.1840624,13.806 L 9.1840624,22 L 12.414062,22 M 24.821938,14.843 C 24.821938,11.562003 22.747935,9.913 19.755938,9.913 C 16.389941,9.913 14.332938,11.511003 14.332938,14.197 C 14.332938,16.712997 16.06694,17.886 18.531938,17.886 C 19.959937,17.886 20.826939,17.614 21.591938,17.189 C 20.690939,18.565999 19.058935,19.484 15.947938,19.484 L 15.947938,22.187 C 22.747931,22.187 24.821938,17.987997 24.821938,14.843 M 21.676938,13.959 C 21.676938,14.893999 20.979936,15.455 19.517938,15.455 C 18.259939,15.455 17.511938,14.893999 17.511938,13.976 C 17.511938,13.024001 18.344939,12.514 19.585938,12.514 C 21.030936,12.514 21.676938,13.109001 21.676938,13.959"
+     id="text2219"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/2.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/2.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/2.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/2.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/2.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 20.862,22.013004 L 20.862,19.327004 L 14.657,19.327004 C 14.912,18.613005 15.575003,17.950003 17.955,16.845004 C 20.232998,15.791005 20.777,14.839003 20.777,13.275004 C 20.777,11.116006 19.229997,9.9260043 16.272,9.9260043 C 14.232002,9.9260043 12.684999,10.504005 11.172,11.473004 L 12.685,13.904004 C 13.874999,13.105005 15.031001,12.697004 16.221,12.697004 C 17.172999,12.697004 17.547,12.986005 17.547,13.513004 C 17.547,13.989004 17.359999,14.176005 16.102,14.737004 C 13.127003,16.063003 11.24,18.001008 11.138,22.013004 L 20.862,22.013004"
+     id="text2207"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/20.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/20.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/20.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/20.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/20.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 14.685,22 L 14.685,19.314 L 8.4799999,19.314 C 8.7349997,18.600001 9.3980023,17.936999 11.778,16.832 C 14.055998,15.778001 14.6,14.825998 14.6,13.262 C 14.6,11.103002 13.052997,9.913 10.095,9.913 C 8.055002,9.913 6.5079984,10.491001 4.9949999,11.46 L 6.5079999,13.891 C 7.6979988,13.092001 8.8540011,12.684 10.044,12.684 C 10.995999,12.684 11.37,12.973001 11.37,13.5 C 11.37,13.976 11.182999,14.163001 9.9249999,14.724 C 6.9500029,16.049999 5.0629998,17.988004 4.9609999,22 L 14.685,22 M 27.421719,16.033 C 27.421719,12.072004 25.143716,9.913 22.049719,9.913 C 18.955722,9.913 16.643719,12.106004 16.643719,16.067 C 16.643719,20.027996 18.921722,22.187 22.015719,22.187 C 25.109716,22.187 27.421719,19.993996 27.421719,16.033 M 24.038719,16.067 C 24.038719,18.242998 23.324717,19.348 22.049719,19.348 C 20.77472,19.348 20.026719,18.208998 20.026719,16.033 C 20.026719,13.857002 20.74072,12.752 22.015719,12.752 C 23.290717,12.752 24.038719,13.891002 24.038719,16.067"
+     id="text2219"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/21.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/21.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/21.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/21.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/21.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 16.648141,22 L 16.648141,19.314 L 10.44314,19.314 C 10.69814,18.600001 11.361143,17.936999 13.741141,16.832 C 16.019139,15.778001 16.563141,14.825998 16.563141,13.262 C 16.563141,11.103002 15.016138,9.913 12.058141,9.913 C 10.018143,9.913 8.471139,10.491001 6.9581405,11.46 L 8.4711405,13.891 C 9.661139,13.092001 10.817142,12.684 12.007141,12.684 C 12.95914,12.684 13.333141,12.973001 13.333141,13.5 C 13.333141,13.976 13.14614,14.163001 11.88814,14.724 C 8.9131435,16.049999 7.0261404,17.988004 6.9241405,22 L 16.648141,22 M 23.82586,22 L 23.82586,10.1 L 21.07186,10.1 C 20.73186,11.204999 20.119858,11.63 18.58986,11.715 L 18.58986,13.806 L 20.59586,13.806 L 20.59586,22 L 23.82586,22"
+     id="text2219"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/22.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/22.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/22.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/22.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/22.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 14.685,22 L 14.685,19.314 L 8.4799999,19.314 C 8.7349997,18.600001 9.3980023,17.936999 11.778,16.832 C 14.055998,15.778001 14.6,14.825998 14.6,13.262 C 14.6,11.103002 13.052997,9.913 10.095,9.913 C 8.055002,9.913 6.5079984,10.491001 4.9949999,11.46 L 6.5079999,13.891 C 7.6979988,13.092001 8.8540011,12.684 10.044,12.684 C 10.995999,12.684 11.37,12.973001 11.37,13.5 C 11.37,13.976 11.182999,14.163001 9.9249999,14.724 C 6.9500029,16.049999 5.0629998,17.988004 4.9609999,22 L 14.685,22 M 26.571719,22 L 26.571719,19.314 L 20.366719,19.314 C 20.621718,18.600001 21.284721,17.936999 23.664719,16.832 C 25.942716,15.778001 26.486719,14.825998 26.486719,13.262 C 26.486719,11.103002 24.939716,9.913 21.981719,9.913 C 19.941721,9.913 18.394717,10.491001 16.881719,11.46 L 18.394719,13.891 C 19.584718,13.092001 20.74072,12.684 21.930719,12.684 C 22.882718,12.684 23.256719,12.973001 23.256719,13.5 C 23.256719,13.976 23.069717,14.163001 21.811719,14.724 C 18.836722,16.049999 16.9497!
 19,17.988004 16.847719,22 L 26.571719,22"
+     id="number"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/23.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/23.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/23.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/23.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/23.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 15.32239,22.013004 L 15.32239,19.327004 L 9.1173907,19.327004 C 9.3723904,18.613005 10.035393,17.950003 12.41539,16.845004 C 14.693388,15.791005 15.23739,14.839003 15.23739,13.275004 C 15.23739,11.116006 13.690387,9.9260043 10.73239,9.9260043 C 8.6923927,9.9260043 7.1453891,10.504005 5.6323906,11.473004 L 7.1453906,13.904004 C 8.3353896,13.105005 9.4913919,12.697004 10.68139,12.697004 C 11.633389,12.697004 12.00739,12.986005 12.00739,13.513004 C 12.00739,13.989004 11.820389,14.176005 10.56239,14.737004 C 7.5873937,16.063003 5.7003905,18.001008 5.5983906,22.013004 L 15.32239,22.013004 M 26.401609,18.239004 C 26.401609,16.726006 25.432608,15.927004 24.327609,15.672004 C 25.143608,15.281005 25.908609,14.652003 25.908609,13.343004 C 25.908609,10.827007 24.004606,9.9260043 21.148609,9.9260043 C 19.074611,9.9260043 17.646608,10.623005 16.541609,11.473004 L 18.105609,13.615004 C 19.023608,12.952005 19.90761,12.595004 21.063609,12.595004 C 22.236608,12.595004 22.712609,12!
 .935005 22.712609,13.564004 C 22.712609,14.346004 22.372608,14.567004 21.335609,14.567004 L 19.805609,14.567004 L 19.805609,17.134004 L 21.522609,17.134004 C 22.729608,17.134004 23.205609,17.440005 23.205609,18.273004 C 23.205609,19.089003 22.627608,19.480004 21.250609,19.480004 C 19.94161,19.480004 18.836608,18.987004 17.867609,18.239004 L 16.167609,20.381004 C 17.442608,21.503003 19.159611,22.200004 21.182609,22.200004 C 24.412606,22.200004 26.401609,20.993002 26.401609,18.239004"
+     id="text2207"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/3.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/3.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/3.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/3.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/3.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 21.117,18.239004 C 21.117,16.726006 20.147999,15.927004 19.043,15.672004 C 19.858999,15.281005 20.624,14.652003 20.624,13.343004 C 20.624,10.827007 18.719997,9.9260043 15.864,9.9260043 C 13.790002,9.9260043 12.361999,10.623005 11.257,11.473004 L 12.821,13.615004 C 13.738999,12.952005 14.623001,12.595004 15.779,12.595004 C 16.951999,12.595004 17.428,12.935005 17.428,13.564004 C 17.428,14.346004 17.087999,14.567004 16.051,14.567004 L 14.521,14.567004 L 14.521,17.134004 L 16.238,17.134004 C 17.444999,17.134004 17.921,17.440005 17.921,18.273004 C 17.921,19.089003 17.342999,19.480004 15.966,19.480004 C 14.657002,19.480004 13.551999,18.987004 12.583,18.239004 L 10.883,20.381004 C 12.157999,21.503003 13.875002,22.200004 15.898,22.200004 C 19.127997,22.200004 21.117,20.993002 21.117,18.239004"
+     id="text2207"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/4.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/4.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/4.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/4.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/4.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 20.573772,19.96 L 20.573772,17.172 L 19.043772,17.172 L 19.043772,10.1 L 15.779772,10.1 L 9.3707718,17.461 L 9.3707718,19.875 L 16.085772,19.875 L 16.085772,22 L 19.043772,22 L 19.043772,19.96 L 20.573772,19.96 M 16.136772,13.432 C 16.102772,13.992999 16.085772,15.302001 16.085772,15.999 L 16.085772,17.172 L 15.201772,17.172 C 14.385773,17.172 13.569771,17.189 12.974772,17.223 C 13.416772,16.798 13.909773,16.253999 14.538772,15.489 L 14.708772,15.285 C 15.490771,14.350001 15.813772,13.925 16.136772,13.432"
+     id="text2219"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/5.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/5.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/5.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/5.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/5.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 21.219,17.852 C 21.219,15.200003 19.535997,13.908 16.969,13.908 C 15.779001,13.908 15.064999,14.112 14.402,14.435 L 14.504,12.786 L 20.505,12.786 L 20.505,10.1 L 11.835,10.1 L 11.427,16.271 L 14.249,17.223 C 14.843999,16.798 15.439001,16.543 16.442,16.543 C 17.461999,16.543 18.04,17.019001 18.04,17.937 C 18.04,18.888999 17.478998,19.45 15.949,19.45 C 14.674001,19.45 13.262999,18.956999 12.124,18.277 L 10.781,20.742 C 12.242999,21.625999 13.807002,22.187 15.864,22.187 C 19.246997,22.187 21.219,20.622997 21.219,17.852"
+     id="text2219"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/6.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/6.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/6.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/6.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/6.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 21.2445,17.903 C 21.2445,15.387003 19.510497,14.214 17.0455,14.214 C 15.617501,14.214 14.750499,14.486 13.9855,14.911 C 14.886499,13.534001 16.518503,12.616 19.6295,12.616 L 19.6295,9.913 C 12.829507,9.913 10.7555,14.112003 10.7555,17.257 C 10.7555,20.537997 12.829503,22.187 15.8215,22.187 C 19.187497,22.187 21.2445,20.588997 21.2445,17.903 M 18.0655,18.124 C 18.0655,19.075999 17.232499,19.586 15.9915,19.586 C 14.546501,19.586 13.9005,18.990999 13.9005,18.141 C 13.9005,17.206001 14.597501,16.645 16.0595,16.645 C 17.317499,16.645 18.0655,17.206001 18.0655,18.124"
+     id="text2219"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/7.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/7.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/7.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/7.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/7.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 20.9215,12.48 L 20.9215,10.1 L 11.0785,10.1 L 11.0785,12.786 L 16.9945,12.786 C 14.699502,15.131998 13.5775,17.920004 13.5435,22 L 16.7735,22 C 16.7735,18.141004 17.436503,15.675997 20.9215,12.48"
+     id="text2219"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/8.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/8.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/8.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/8.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/8.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 21.423,18.294 C 21.423,16.764002 20.334999,15.948 19.57,15.642 C 20.317999,15.166 20.913,14.519999 20.913,13.449 C 20.913,11.171002 18.889997,9.913 16.017,9.913 C 13.144003,9.913 11.087,11.171002 11.087,13.449 C 11.087,14.519999 11.716001,15.251 12.43,15.676 C 11.665001,15.982 10.577,16.764002 10.577,18.294 C 10.577,20.707998 12.651003,22.187 15.983,22.187 C 19.314997,22.187 21.423,20.707998 21.423,18.294 M 17.751,13.5 C 17.751,14.094999 17.308999,14.639 16.017,14.639 C 14.725001,14.639 14.249,14.094999 14.249,13.5 C 14.249,12.905001 14.691001,12.31 15.983,12.31 C 17.274999,12.31 17.751,12.905001 17.751,13.5 M 18.261,18.26 C 18.261,19.075999 17.512998,19.688 16.017,19.688 C 14.521001,19.688 13.739,19.075999 13.739,18.26 C 13.739,17.444001 14.470002,16.849 15.983,16.849 C 17.478998,16.849 18.261,17.444001 18.261,18.26"
+     id="text2219"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/9.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/9.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/9.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/9.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/9.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg2">
+  <defs
+     id="defs15" />
+  <circle
+     cx="16"
+     cy="16"
+     r="14"
+     id="circle"
+     style="fill:#aa0000" />
+  <path
+     d="M 22.128383,14.843 C 22.128383,11.562003 20.05438,9.913 17.062383,9.913 C 13.696386,9.913 11.639383,11.511003 11.639383,14.197 C 11.639383,16.712997 13.373385,17.886 15.838383,17.886 C 17.266382,17.886 18.133384,17.614 18.898383,17.189 C 17.997384,18.565999 16.36538,19.484 13.254383,19.484 L 13.254383,22.187 C 20.054376,22.187 22.128383,17.987997 22.128383,14.843 M 18.983383,13.959 C 18.983383,14.893999 18.286381,15.455 16.824383,15.455 C 15.566384,15.455 14.818383,14.893999 14.818383,13.976 C 14.818383,13.024001 15.651384,12.514 16.892383,12.514 C 18.337381,12.514 18.983383,13.109001 18.983383,13.959"
+     id="text2219"
+     style="fill:#ffffff" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/bkgrnd_greydots.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/bkgrnd_greydots.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/bullet_arrowblue.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/bullet_arrowblue.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/documentation.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/documentation.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/dot.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/dot.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/dot2.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/dot2.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/h1-bg.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/h1-bg.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/image_left.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/image_left.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/image_right.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/image_right.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/important.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/important.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/important.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/important.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/important.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="48"
+   height="48"
+   id="svg2">
+  <defs
+     id="defs5" />
+  <path
+     d="M 255.25,-411.29002 L 261.86798,-400.85887 L 273.83367,-397.7882 L 265.95811,-388.27072 L 266.73534,-375.94179 L 255.25,-380.49082 L 243.76466,-375.94179 L 244.54189,-388.27072 L 236.66633,-397.7882 L 248.63202,-400.85887 L 255.25,-411.29002 z "
+     transform="matrix(1.1071323,0,0,1.1071323,-258.4137,459.98052)"
+     style="fill:#2e3436;fill-opacity:1;stroke:#2e3436;stroke-width:4.25880718;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path4450" />
+  <path
+     d="M 255.25,-411.29002 L 261.86798,-400.85887 L 273.83367,-397.7882 L 265.95811,-388.27072 L 266.73534,-375.94179 L 255.25,-380.49082 L 243.76466,-375.94179 L 244.54189,-388.27072 L 236.66633,-397.7882 L 248.63202,-400.85887 L 255.25,-411.29002 z "
+     transform="matrix(1.1071323,0,0,1.1071323,-258.4137,459.98052)"
+     style="fill:#fac521;fill-opacity:1;stroke-width:3.4070456;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path4452" />
+  <path
+     d="M 24.175987,4.476098 L 16.980534,16.087712 L 3.9317841,19.443104 L 16.980534,20.076901 L 24.175987,10.383543 L 31.408721,20.076901 L 44.457471,19.443104 L 31.468862,16.027571 L 24.175987,4.476098 z "
+     style="fill:#feeaab;fill-opacity:1;stroke-width:3.4070456;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path4531" />
+  <path
+     d="M 12.456856,24.055852 C 11.65845,24.299685 14.436112,29.177769 14.436112,32.041127 C 14.436112,37.343117 13.010825,39.831516 15.971742,37.364645 C 18.711008,35.08244 21.184735,34.873512 24.195894,34.873512 C 27.207053,34.873512 29.646656,35.08244 32.38592,37.364645 C 35.346837,39.831516 33.921551,37.343117 33.92155,32.041127 C 33.92155,28.223316 38.868232,20.827013 33.682674,25.591482 C 31.458295,27.635233 27.413886,29.481744 24.195894,29.481744 C 20.977903,29.481744 16.933493,27.635233 14.709113,25.591482 C 13.412724,24.400365 12.722992,23.974574 12.456856,24.055852 z "
+     style="fill:#fcd867;fill-opacity:1;stroke-width:3.4070456;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     id="path2185" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/jboss-logo.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/jboss-logo.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/jboss-logo.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,233 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="139.51801"
+   height="79.202713"
+   id="svg2898"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   sodipodi:docname="jboss-logo.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <metadata
+     id="metadata16">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="" />
+        <dc:title />
+        <dc:date />
+        <dc:creator>
+          <cc:Agent>
+            <dc:title />
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title />
+          </cc:Agent>
+        </dc:rights>
+        <dc:publisher>
+          <cc:Agent>
+            <dc:title />
+          </cc:Agent>
+        </dc:publisher>
+        <dc:identifier />
+        <dc:source />
+        <dc:relation />
+        <dc:language />
+        <dc:subject>
+          <rdf:Bag />
+        </dc:subject>
+        <dc:coverage />
+        <dc:description />
+        <dc:contributor>
+          <cc:Agent>
+            <dc:title />
+          </cc:Agent>
+        </dc:contributor>
+        <cc:license
+           rdf:resource="" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="692"
+     inkscape:window-width="640"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     showgrid="false"
+     inkscape:zoom="1"
+     inkscape:cx="95.81665"
+     inkscape:cy="41.7868"
+     inkscape:window-x="846"
+     inkscape:window-y="127"
+     inkscape:current-layer="svg2898" />
+  <defs
+     id="defs21">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="-50 : 600 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="700 : 600 : 1"
+       inkscape:persp3d-origin="300 : 400 : 1"
+       id="perspective18" />
+    <inkscape:perspective
+       id="perspective2683"
+       inkscape:persp3d-origin="107.759 : 40.782333 : 1"
+       inkscape:vp_z="215.51801 : 61.1735 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 61.1735 : 1"
+       sodipodi:type="inkscape:persp3d" />
+  </defs>
+  <g
+     id="g2622"
+     transform="scale(0.6473613,0.6473613)">
+	<g
+   id="g2624">
+		<path
+   id="path2626"
+   d="M 140.253,110.221 L 143.198,116.112 L 140.706,116.112 L 137.843,110.407 L 134.588,110.407 L 134.588,116.112 L 132.467,116.112 L 132.467,101.693 L 138.79,101.693 C 141.304,101.693 143.425,103.032 143.425,105.999 C 143.425,108.305 142.21,109.727 140.253,110.221 z M 138.79,103.732 L 134.588,103.732 L 134.588,108.367 L 138.79,108.367 C 140.232,108.367 141.241,107.626 141.241,106.06 C 141.241,104.556 140.253,103.732 138.79,103.732 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2628"
+   d="M 155.164,111.458 L 148.016,111.458 C 148.243,113.538 149.417,114.424 150.736,114.424 C 151.642,114.424 152.363,114.095 153.084,113.559 L 154.341,114.918 C 153.394,115.824 152.261,116.339 150.612,116.339 C 148.079,116.339 145.936,114.3 145.936,110.716 C 145.936,107.049 147.873,105.071 150.673,105.071 C 153.742,105.071 155.226,107.563 155.226,110.489 C 155.226,110.879 155.185,111.231 155.164,111.458 z M 150.529,106.987 C 149.107,106.987 148.242,107.975 148.056,109.706 L 153.082,109.706 C 152.98,108.223 152.28,106.987 150.529,106.987 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2630"
+   d="M 164.37,116.112 L 164.37,115.083 C 163.587,115.804 162.681,116.339 161.548,116.339 C 159.22,116.339 157.387,114.651 157.387,110.53 C 157.387,106.822 159.406,105.071 161.651,105.071 C 162.743,105.071 163.773,105.648 164.371,106.307 L 164.371,102.187 L 166.472,101.095 L 166.472,116.112 L 164.37,116.112 z M 164.391,108.45 C 163.917,107.811 162.928,107.028 161.857,107.028 C 160.333,107.028 159.509,108.182 159.509,110.468 C 159.509,113.187 160.374,114.381 161.94,114.381 C 162.949,114.381 163.835,113.701 164.391,113.002 L 164.391,108.45 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2632"
+   d="M 184.266,116.112 L 184.266,109.644 L 177.632,109.644 L 177.632,116.112 L 175.47,116.112 L 175.47,101.693 L 177.632,101.693 L 177.632,107.522 L 184.266,107.522 L 184.266,101.693 L 186.428,101.693 L 186.428,116.112 L 184.266,116.112 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2634"
+   d="M 196.065,116.112 L 196.065,115.042 C 195.324,115.783 194.273,116.339 193.099,116.339 C 191.348,116.339 189.35,115.351 189.35,112.693 C 189.35,110.283 191.204,109.191 193.655,109.191 C 194.665,109.191 195.468,109.335 196.065,109.603 L 196.065,108.799 C 196.065,107.625 195.344,106.966 194.026,106.966 C 192.914,106.966 192.048,107.172 191.204,107.646 L 190.38,106.04 C 191.41,105.401 192.564,105.071 194.088,105.071 C 196.498,105.071 198.147,106.245 198.147,108.697 L 198.147,116.112 L 196.065,116.112 L 196.065,116.112 z M 196.065,111.499 C 195.489,111.21 194.747,111.024 193.593,111.024 C 192.234,111.024 191.368,111.642 191.368,112.631 C 191.368,113.701 192.048,114.423 193.448,114.423 C 194.582,114.423 195.57,113.723 196.064,113.043 L 196.064,111.499 L 196.065,111.499 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2636"
+   d="M 206.363,115.844 C 205.847,116.133 205.127,116.338 204.282,116.338 C 202.778,116.338 201.851,115.412 201.851,113.475 L 201.851,107.234 L 200.306,107.234 L 200.306,105.297 L 201.851,105.297 L 201.851,102.207 L 203.932,101.095 L 203.932,105.297 L 206.61,105.297 L 206.61,107.234 L 203.932,107.234 L 203.932,113.105 C 203.932,114.114 204.261,114.403 205.044,114.403 C 205.6,114.403 206.218,114.197 206.609,113.97 L 206.363,115.844 z"
+   style="fill:#cc0000" />
+
+	</g>
+
+	<g
+   id="g2638">
+		<path
+   id="path2640"
+   d="M 106.389,51.025 C 109.959,49.238 112.389,45.924 112.389,41.844 C 112.389,32.335 103.775,30.289 95.924,30.423 L 74.738,30.423 L 74.617,30.423 L 62.871,30.423 L 62.871,60.785 C 62.871,65.194 61.334,66.721 58.597,66.721 C 55.656,66.721 54.002,65.067 54.002,62.063 L 54.002,57.858 L 42.832,57.858 L 42.832,59.827 C 42.832,69.981 46.724,76.926 58.784,76.926 C 68.621,76.926 73.822,72.57 74.617,63.968 L 74.617,75.972 L 96.496,75.972 C 106.257,75.972 114.233,72.657 114.233,61.811 C 114.233,56.646 111.242,52.435 106.389,51.025 z M 86.487,39.605 L 95.668,39.605 C 98.161,39.605 100.52,40.697 100.52,44.01 C 100.52,47.263 97.714,48.348 95.668,48.348 L 86.487,48.348 L 86.487,39.605 z M 95.989,66.469 L 86.487,66.469 L 86.487,56 L 95.989,56 C 99.565,56 102.373,57.345 102.373,61.355 C 102.373,65.125 99.756,66.469 95.989,66.469 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2642"
+   d="M 90.067,108.399 C 90.067,100.704 83.822,94.452 76.123,94.452 C 68.409,94.452 62.168,100.704 62.168,108.399 C 62.168,116.108 68.409,122.347 76.123,122.347 C 83.822,122.347 90.067,116.108 90.067,108.399 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2644"
+   d="M 53.012,103.999 C 53.012,97.181 47.479,91.65 40.655,91.65 C 33.832,91.65 28.303,97.18 28.303,103.999 C 28.303,110.823 33.831,116.356 40.655,116.356 C 47.479,116.356 53.012,110.823 53.012,103.999 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2646"
+   d="M 25.097,81.68 C 25.097,75.523 20.113,70.529 13.947,70.529 C 7.779,70.529 2.787,75.523 2.787,81.68 C 2.787,87.854 7.779,92.848 13.947,92.848 C 20.112,92.848 25.097,87.854 25.097,81.68 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2648"
+   d="M 19.918,50.615 C 19.918,45.109 15.463,40.659 9.963,40.659 C 4.464,40.659 0,45.108 0,50.615 C 0,56.115 4.464,60.579 9.963,60.579 C 15.463,60.579 19.918,56.114 19.918,50.615 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2650"
+   d="M 33.88,22.719 C 33.88,18.1 30.124,14.353 25.508,14.353 C 20.889,14.353 17.139,18.1 17.139,22.719 C 17.139,27.342 20.889,31.086 25.508,31.086 C 30.124,31.086 33.88,27.342 33.88,22.719 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2652"
+   d="M 57.78,10.364 C 57.78,6.184 54.395,2.793 50.214,2.793 C 46.034,2.793 42.643,6.184 42.643,10.364 C 42.643,14.551 46.035,17.942 50.214,17.942 C 54.396,17.942 57.78,14.551 57.78,10.364 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2654"
+   d="M 82.891,6.377 C 82.891,2.855 80.042,0 76.517,0 C 73.001,0 70.14,2.855 70.14,6.377 C 70.14,9.903 73.001,12.757 76.517,12.757 C 80.042,12.757 82.891,9.903 82.891,6.377 z"
+   style="fill:#cc0000" />
+
+	</g>
+
+	<g
+   id="g2656">
+		<g
+   id="g2658">
+			<path
+   id="path2660"
+   d="M 161.415,62.895 C 156.077,61.543 149.709,61.118 147.172,56.742 C 147.293,57.624 147.376,58.522 147.376,59.448 C 147.376,61.433 147.077,63.315 146.536,65.067 L 155.794,65.067 C 155.794,66.721 156.504,67.933 157.582,68.762 C 158.604,69.532 160.076,69.904 161.604,69.904 C 163.701,69.904 166.706,69.02 166.706,66.4 C 166.706,63.855 163.321,63.336 161.415,62.895 z"
+   style="fill:none" />
+
+			<path
+   id="path2662"
+   d="M 129.896,50.193 C 124.851,50.193 123.318,55.244 123.318,59.448 C 123.318,63.665 124.851,68.635 129.896,68.635 C 134.935,68.635 136.529,63.665 136.529,59.448 C 136.528,55.244 134.935,50.193 129.896,50.193 z"
+   style="fill:none" />
+
+			<path
+   id="path2664"
+   d="M 192.015,62.895 C 185.337,61.204 176.724,60.97 176.338,52.616 L 166.718,52.616 C 166.718,51.22 166.206,50.326 165.322,49.75 C 164.419,49.181 163.215,48.923 161.875,48.923 C 160.094,48.923 156.883,49.111 156.883,51.41 C 156.883,54.542 164.156,55.115 169.13,56.197 C 175.779,57.532 177.529,62.315 177.553,65.066 L 186.395,65.066 C 186.395,66.72 187.105,67.932 188.183,68.761 C 189.206,69.531 190.677,69.903 192.204,69.903 C 194.301,69.903 197.307,69.019 197.307,66.399 C 197.306,63.855 193.922,63.336 192.015,62.895 z"
+   style="fill:none" />
+
+			<path
+   id="path2666"
+   d="M 199.729,56.198 C 194.754,55.116 187.148,54.544 187.148,51.411 C 187.148,49.111 190.027,48.924 191.808,48.924 C 193.147,48.924 194.352,49.182 195.255,49.751 C 196.139,50.327 196.651,51.221 196.651,52.617 L 206.67,52.617 C 206.285,44.011 198.69,41.903 191.431,41.903 C 185.383,41.903 177.526,43.785 176.439,50.443 C 174.954,43.662 168.095,41.903 161.496,41.903 C 154.986,41.903 146.035,44.075 146.035,52.049 C 146.035,52.19 146.056,52.31 146.059,52.447 C 143.534,46.151 137.569,41.903 129.896,41.903 C 121.597,41.903 115.392,46.75 113.294,53.899 C 114.898,56.057 115.742,58.872 115.742,61.811 C 115.742,64.224 115.358,66.36 114.631,68.23 C 117.484,73.503 122.974,76.926 129.896,76.926 C 137.25,76.926 143.019,73.054 145.711,67.207 C 147.125,74.716 154.473,76.926 161.668,76.926 C 167.855,76.926 174.688,74.899 176.847,69.154 C 179.082,75.103 185.737,76.926 192.268,76.926 C 199.73,76.926 208.154,73.995 208.154,65.125 C 208.153,62.383 206.423,57.542 199.729,56.198 z M 129.896,68.63!
 5 C 124.851,68.635 123.318,63.665 123.318,59.448 C 123.318,55.243 124.851,50.193 129.896,50.193 C 134.935,50.193 136.529,55.244 136.529,59.448 C 136.528,63.666 134.935,68.635 129.896,68.635 z M 161.604,69.904 C 160.076,69.904 158.604,69.532 157.582,68.762 C 156.504,67.933 155.794,66.721 155.794,65.067 L 146.536,65.067 C 147.077,63.315 147.376,61.433 147.376,59.448 C 147.376,58.522 147.293,57.624 147.172,56.742 C 149.709,61.117 156.077,61.543 161.415,62.895 C 163.321,63.336 166.706,63.855 166.706,66.4 C 166.706,69.02 163.701,69.904 161.604,69.904 z M 192.203,69.904 C 190.676,69.904 189.205,69.532 188.182,68.762 C 187.104,67.933 186.394,66.721 186.394,65.067 L 177.552,65.067 C 177.529,62.316 175.779,57.533 169.129,56.198 C 164.155,55.116 156.882,54.544 156.882,51.411 C 156.882,49.111 160.093,48.924 161.874,48.924 C 163.214,48.924 164.418,49.182 165.321,49.751 C 166.206,50.327 166.717,51.221 166.717,52.617 L 176.337,52.617 C 176.723,60.971 185.336,61.204 192.014,62.896 C 193.9!
 21,63.337 197.305,63.856 197.305,66.401 C 197.306,69.02 194.3,!
 69.904 1
92.203,69.904 z"
+   style="fill:#60605b" />
+
+		</g>
+
+		<path
+   id="path2668"
+   d="M 209.127,36.16 L 210.092,36.16 L 211.544,38.546 L 212.485,38.546 L 210.914,36.116 C 211.721,36.014 212.334,35.586 212.334,34.607 C 212.334,33.508 211.696,33.034 210.396,33.034 L 208.294,33.034 L 208.294,38.546 L 209.127,38.546 L 209.127,36.16 z M 209.127,35.446 L 209.127,33.735 L 210.27,33.735 C 210.837,33.735 211.47,33.867 211.47,34.55 C 211.47,35.397 210.837,35.446 210.131,35.446 L 209.127,35.446 z"
+   style="fill:#60605b" />
+
+		<path
+   id="path2670"
+   d="M 215.518,35.8 C 215.518,38.78 213.098,41.192 210.119,41.192 C 207.133,41.192 204.713,38.78 204.713,35.8 C 204.713,32.813 207.133,30.395 210.119,30.395 C 213.098,30.396 215.518,32.813 215.518,35.8 z M 210.118,31.356 C 207.654,31.356 205.666,33.338 205.666,35.8 C 205.666,38.251 207.654,40.232 210.118,40.232 C 212.568,40.232 214.556,38.251 214.556,35.8 C 214.557,33.338 212.568,31.356 210.118,31.356 z"
+   style="fill:#60605b" />
+
+	</g>
+
+	<g
+   id="g2672">
+		<path
+   id="path2674"
+   d="M 108.227,116.338 C 107.135,116.338 106.105,115.762 105.508,115.103 L 105.508,116.112 L 103.406,116.112 L 103.406,102.187 L 105.508,101.095 L 105.508,106.327 C 106.29,105.605 107.196,105.07 108.33,105.07 C 110.657,105.07 112.49,106.759 112.49,110.879 C 112.49,114.588 110.472,116.338 108.227,116.338 z M 107.938,107.028 C 106.928,107.028 106.042,107.708 105.487,108.409 L 105.487,112.961 C 105.961,113.6 106.949,114.382 108.02,114.382 C 109.544,114.382 110.369,113.23 110.369,110.943 C 110.369,108.223 109.504,107.028 107.938,107.028 z"
+   style="fill:#60605b" />
+
+		<path
+   id="path2676"
+   d="M 118.915,119.923 L 116.67,119.923 L 118.235,115.906 L 114.259,105.297 L 116.587,105.297 L 118.358,110.592 C 118.687,111.539 119.182,113.146 119.305,113.742 C 119.491,113.104 119.944,111.559 120.273,110.633 L 122.107,105.297 L 124.352,105.297 L 118.915,119.923 z"
+   style="fill:#60605b" />
+
+	</g>
+
+</g>
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/note.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/note.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/note.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/note.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/note.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="48"
+   height="48"
+   id="svg2">
+  <defs
+     id="defs5" />
+  <path
+     d="M 30.27396,4.1232594 L 18.765811,4.1232594 C 11.476786,4.1232594 5.5574109,10.546411 5.5574109,19.960741 C 5.5574109,24.746615 7.0844878,29.075948 9.5403943,32.177328 C 9.4616811,32.681104 9.414455,33.200619 9.414455,33.720144 C 9.414455,39.308917 13.554865,43.591015 18.891751,44.267966 C 17.506371,42.693663 16.656245,40.914707 16.656245,38.616218 C 16.656245,38.01799 16.719219,37.419752 16.82942,36.837262 C 17.459135,36.963202 18.104599,37.026176 18.750063,37.026176 L 30.258211,37.026176 C 37.547237,37.026176 43.466612,29.39081 43.466612,19.960741 C 43.466612,10.530672 37.578724,4.1232594 30.27396,4.1232594 z "
+     style="fill:#2e3436;fill-opacity:1;stroke:#2e3436;stroke-width:4.7150631;stroke-miterlimit:4;stroke-dasharray:none"
+     id="path4317" />
+  <path
+     d="M 30.27396,4.1232594 L 18.765811,4.1232594 C 11.476786,4.1232594 5.5574109,10.546411 5.5574109,19.960741 C 5.5574109,24.746615 7.0844878,29.075948 9.5403943,32.177328 C 9.4616811,32.681104 9.414455,33.200619 9.414455,33.720144 C 9.414455,39.308917 13.554865,43.591015 18.891751,44.267966 C 17.506371,42.693663 16.656245,40.914707 16.656245,38.616218 C 16.656245,38.01799 16.719219,37.419752 16.82942,36.837262 C 17.459135,36.963202 18.104599,37.026176 18.750063,37.026176 L 30.258211,37.026176 C 37.547237,37.026176 43.466612,29.39081 43.466612,19.960741 C 43.466612,10.530672 37.578724,4.1232594 30.27396,4.1232594 z "
+     style="fill:#bfdce8;fill-opacity:1"
+     id="path142" />
+  <path
+     d="M 19.200879,5.5648899 C 12.490241,5.5648899 7.0622987,11.295775 7.0622987,19.690323 C 7.0622987,22.890926 7.8418023,25.879852 9.1910836,28.332288 C 8.6113289,26.599889 8.2852163,24.667826 8.2852163,22.673336 C 8.2852163,14.629768 13.495502,9.1620492 19.925575,9.1620492 L 30.071259,9.1620492 C 36.515213,9.1620492 41.711609,14.616311 41.711609,22.673336 C 41.864688,21.709218 41.983366,20.710908 41.983366,19.690323 C 41.983366,11.281743 36.524624,5.5648899 29.799492,5.5648899 L 19.200879,5.5648899 z "
+     style="fill:#ffffff"
+     id="path2358" />
+  <path
+     d="M 28.241965,33.725087 L 20.792252,33.725087 C 16.073756,33.725087 12.241894,32.944782 12.241894,26.850486 C 12.241894,25.10387 12.368512,23.572125 15.515722,23.567487 L 33.508301,23.540969 C 36.182481,23.537028 36.782127,24.950794 36.782127,26.850486 C 36.782127,32.95497 32.970649,33.725087 28.241965,33.725087 z "
+     style="fill:#d0ecf9;fill-opacity:1"
+     id="path2173" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/redhat-logo.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/redhat-logo.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/redhat-logo.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,243 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="139.51801"
+   height="79.202713"
+   id="svg2898"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   sodipodi:docname="redhat-logo.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <metadata
+     id="metadata16">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="" />
+        <dc:title />
+        <dc:date />
+        <dc:creator>
+          <cc:Agent>
+            <dc:title />
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title />
+          </cc:Agent>
+        </dc:rights>
+        <dc:publisher>
+          <cc:Agent>
+            <dc:title />
+          </cc:Agent>
+        </dc:publisher>
+        <dc:identifier />
+        <dc:source />
+        <dc:relation />
+        <dc:language />
+        <dc:subject>
+          <rdf:Bag />
+        </dc:subject>
+        <dc:coverage />
+        <dc:description />
+        <dc:contributor>
+          <cc:Agent>
+            <dc:title />
+          </cc:Agent>
+        </dc:contributor>
+        <cc:license
+           rdf:resource="" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="692"
+     inkscape:window-width="640"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     showgrid="false"
+     inkscape:zoom="1"
+     inkscape:cx="95.81665"
+     inkscape:cy="121.7868"
+     inkscape:window-x="1091"
+     inkscape:window-y="85"
+     inkscape:current-layer="svg2898" />
+  <defs
+     id="defs21">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="-50 : 600 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="700 : 600 : 1"
+       inkscape:persp3d-origin="300 : 400 : 1"
+       id="perspective18" />
+    <inkscape:perspective
+       id="perspective2683"
+       inkscape:persp3d-origin="107.759 : 40.782333 : 1"
+       inkscape:vp_z="215.51801 : 61.1735 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 61.1735 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective2733"
+       inkscape:persp3d-origin="150 : 46.666667 : 1"
+       inkscape:vp_z="300 : 70 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 70 : 1"
+       sodipodi:type="inkscape:persp3d" />
+  </defs>
+  <g
+     id="g2622"
+     transform="scale(0.6473613,0.6473613)"
+     inkscape:export-filename="/home/rlerch/Source/SVN/publican/trunk/publican-jboss/en-US/images/image_left.png"
+     inkscape:export-xdpi="61.361534"
+     inkscape:export-ydpi="61.361534">
+	<g
+   id="g2624">
+		<path
+   id="path2626"
+   d="M 140.253,110.221 L 143.198,116.112 L 140.706,116.112 L 137.843,110.407 L 134.588,110.407 L 134.588,116.112 L 132.467,116.112 L 132.467,101.693 L 138.79,101.693 C 141.304,101.693 143.425,103.032 143.425,105.999 C 143.425,108.305 142.21,109.727 140.253,110.221 z M 138.79,103.732 L 134.588,103.732 L 134.588,108.367 L 138.79,108.367 C 140.232,108.367 141.241,107.626 141.241,106.06 C 141.241,104.556 140.253,103.732 138.79,103.732 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2628"
+   d="M 155.164,111.458 L 148.016,111.458 C 148.243,113.538 149.417,114.424 150.736,114.424 C 151.642,114.424 152.363,114.095 153.084,113.559 L 154.341,114.918 C 153.394,115.824 152.261,116.339 150.612,116.339 C 148.079,116.339 145.936,114.3 145.936,110.716 C 145.936,107.049 147.873,105.071 150.673,105.071 C 153.742,105.071 155.226,107.563 155.226,110.489 C 155.226,110.879 155.185,111.231 155.164,111.458 z M 150.529,106.987 C 149.107,106.987 148.242,107.975 148.056,109.706 L 153.082,109.706 C 152.98,108.223 152.28,106.987 150.529,106.987 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2630"
+   d="M 164.37,116.112 L 164.37,115.083 C 163.587,115.804 162.681,116.339 161.548,116.339 C 159.22,116.339 157.387,114.651 157.387,110.53 C 157.387,106.822 159.406,105.071 161.651,105.071 C 162.743,105.071 163.773,105.648 164.371,106.307 L 164.371,102.187 L 166.472,101.095 L 166.472,116.112 L 164.37,116.112 z M 164.391,108.45 C 163.917,107.811 162.928,107.028 161.857,107.028 C 160.333,107.028 159.509,108.182 159.509,110.468 C 159.509,113.187 160.374,114.381 161.94,114.381 C 162.949,114.381 163.835,113.701 164.391,113.002 L 164.391,108.45 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2632"
+   d="M 184.266,116.112 L 184.266,109.644 L 177.632,109.644 L 177.632,116.112 L 175.47,116.112 L 175.47,101.693 L 177.632,101.693 L 177.632,107.522 L 184.266,107.522 L 184.266,101.693 L 186.428,101.693 L 186.428,116.112 L 184.266,116.112 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2634"
+   d="M 196.065,116.112 L 196.065,115.042 C 195.324,115.783 194.273,116.339 193.099,116.339 C 191.348,116.339 189.35,115.351 189.35,112.693 C 189.35,110.283 191.204,109.191 193.655,109.191 C 194.665,109.191 195.468,109.335 196.065,109.603 L 196.065,108.799 C 196.065,107.625 195.344,106.966 194.026,106.966 C 192.914,106.966 192.048,107.172 191.204,107.646 L 190.38,106.04 C 191.41,105.401 192.564,105.071 194.088,105.071 C 196.498,105.071 198.147,106.245 198.147,108.697 L 198.147,116.112 L 196.065,116.112 L 196.065,116.112 z M 196.065,111.499 C 195.489,111.21 194.747,111.024 193.593,111.024 C 192.234,111.024 191.368,111.642 191.368,112.631 C 191.368,113.701 192.048,114.423 193.448,114.423 C 194.582,114.423 195.57,113.723 196.064,113.043 L 196.064,111.499 L 196.065,111.499 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2636"
+   d="M 206.363,115.844 C 205.847,116.133 205.127,116.338 204.282,116.338 C 202.778,116.338 201.851,115.412 201.851,113.475 L 201.851,107.234 L 200.306,107.234 L 200.306,105.297 L 201.851,105.297 L 201.851,102.207 L 203.932,101.095 L 203.932,105.297 L 206.61,105.297 L 206.61,107.234 L 203.932,107.234 L 203.932,113.105 C 203.932,114.114 204.261,114.403 205.044,114.403 C 205.6,114.403 206.218,114.197 206.609,113.97 L 206.363,115.844 z"
+   style="fill:#cc0000" />
+
+	</g>
+
+	<g
+   id="g2638">
+		<path
+   id="path2640"
+   d="M 106.389,51.025 C 109.959,49.238 112.389,45.924 112.389,41.844 C 112.389,32.335 103.775,30.289 95.924,30.423 L 74.738,30.423 L 74.617,30.423 L 62.871,30.423 L 62.871,60.785 C 62.871,65.194 61.334,66.721 58.597,66.721 C 55.656,66.721 54.002,65.067 54.002,62.063 L 54.002,57.858 L 42.832,57.858 L 42.832,59.827 C 42.832,69.981 46.724,76.926 58.784,76.926 C 68.621,76.926 73.822,72.57 74.617,63.968 L 74.617,75.972 L 96.496,75.972 C 106.257,75.972 114.233,72.657 114.233,61.811 C 114.233,56.646 111.242,52.435 106.389,51.025 z M 86.487,39.605 L 95.668,39.605 C 98.161,39.605 100.52,40.697 100.52,44.01 C 100.52,47.263 97.714,48.348 95.668,48.348 L 86.487,48.348 L 86.487,39.605 z M 95.989,66.469 L 86.487,66.469 L 86.487,56 L 95.989,56 C 99.565,56 102.373,57.345 102.373,61.355 C 102.373,65.125 99.756,66.469 95.989,66.469 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2642"
+   d="M 90.067,108.399 C 90.067,100.704 83.822,94.452 76.123,94.452 C 68.409,94.452 62.168,100.704 62.168,108.399 C 62.168,116.108 68.409,122.347 76.123,122.347 C 83.822,122.347 90.067,116.108 90.067,108.399 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2644"
+   d="M 53.012,103.999 C 53.012,97.181 47.479,91.65 40.655,91.65 C 33.832,91.65 28.303,97.18 28.303,103.999 C 28.303,110.823 33.831,116.356 40.655,116.356 C 47.479,116.356 53.012,110.823 53.012,103.999 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2646"
+   d="M 25.097,81.68 C 25.097,75.523 20.113,70.529 13.947,70.529 C 7.779,70.529 2.787,75.523 2.787,81.68 C 2.787,87.854 7.779,92.848 13.947,92.848 C 20.112,92.848 25.097,87.854 25.097,81.68 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2648"
+   d="M 19.918,50.615 C 19.918,45.109 15.463,40.659 9.963,40.659 C 4.464,40.659 0,45.108 0,50.615 C 0,56.115 4.464,60.579 9.963,60.579 C 15.463,60.579 19.918,56.114 19.918,50.615 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2650"
+   d="M 33.88,22.719 C 33.88,18.1 30.124,14.353 25.508,14.353 C 20.889,14.353 17.139,18.1 17.139,22.719 C 17.139,27.342 20.889,31.086 25.508,31.086 C 30.124,31.086 33.88,27.342 33.88,22.719 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2652"
+   d="M 57.78,10.364 C 57.78,6.184 54.395,2.793 50.214,2.793 C 46.034,2.793 42.643,6.184 42.643,10.364 C 42.643,14.551 46.035,17.942 50.214,17.942 C 54.396,17.942 57.78,14.551 57.78,10.364 z"
+   style="fill:#cc0000" />
+
+		<path
+   id="path2654"
+   d="M 82.891,6.377 C 82.891,2.855 80.042,0 76.517,0 C 73.001,0 70.14,2.855 70.14,6.377 C 70.14,9.903 73.001,12.757 76.517,12.757 C 80.042,12.757 82.891,9.903 82.891,6.377 z"
+   style="fill:#cc0000" />
+
+	</g>
+
+	<g
+   id="g2656">
+		<g
+   id="g2658">
+			<path
+   id="path2660"
+   d="M 161.415,62.895 C 156.077,61.543 149.709,61.118 147.172,56.742 C 147.293,57.624 147.376,58.522 147.376,59.448 C 147.376,61.433 147.077,63.315 146.536,65.067 L 155.794,65.067 C 155.794,66.721 156.504,67.933 157.582,68.762 C 158.604,69.532 160.076,69.904 161.604,69.904 C 163.701,69.904 166.706,69.02 166.706,66.4 C 166.706,63.855 163.321,63.336 161.415,62.895 z"
+   style="fill:none" />
+
+			<path
+   id="path2662"
+   d="M 129.896,50.193 C 124.851,50.193 123.318,55.244 123.318,59.448 C 123.318,63.665 124.851,68.635 129.896,68.635 C 134.935,68.635 136.529,63.665 136.529,59.448 C 136.528,55.244 134.935,50.193 129.896,50.193 z"
+   style="fill:none" />
+
+			<path
+   id="path2664"
+   d="M 192.015,62.895 C 185.337,61.204 176.724,60.97 176.338,52.616 L 166.718,52.616 C 166.718,51.22 166.206,50.326 165.322,49.75 C 164.419,49.181 163.215,48.923 161.875,48.923 C 160.094,48.923 156.883,49.111 156.883,51.41 C 156.883,54.542 164.156,55.115 169.13,56.197 C 175.779,57.532 177.529,62.315 177.553,65.066 L 186.395,65.066 C 186.395,66.72 187.105,67.932 188.183,68.761 C 189.206,69.531 190.677,69.903 192.204,69.903 C 194.301,69.903 197.307,69.019 197.307,66.399 C 197.306,63.855 193.922,63.336 192.015,62.895 z"
+   style="fill:none" />
+
+			<path
+   id="path2666"
+   d="M 199.729,56.198 C 194.754,55.116 187.148,54.544 187.148,51.411 C 187.148,49.111 190.027,48.924 191.808,48.924 C 193.147,48.924 194.352,49.182 195.255,49.751 C 196.139,50.327 196.651,51.221 196.651,52.617 L 206.67,52.617 C 206.285,44.011 198.69,41.903 191.431,41.903 C 185.383,41.903 177.526,43.785 176.439,50.443 C 174.954,43.662 168.095,41.903 161.496,41.903 C 154.986,41.903 146.035,44.075 146.035,52.049 C 146.035,52.19 146.056,52.31 146.059,52.447 C 143.534,46.151 137.569,41.903 129.896,41.903 C 121.597,41.903 115.392,46.75 113.294,53.899 C 114.898,56.057 115.742,58.872 115.742,61.811 C 115.742,64.224 115.358,66.36 114.631,68.23 C 117.484,73.503 122.974,76.926 129.896,76.926 C 137.25,76.926 143.019,73.054 145.711,67.207 C 147.125,74.716 154.473,76.926 161.668,76.926 C 167.855,76.926 174.688,74.899 176.847,69.154 C 179.082,75.103 185.737,76.926 192.268,76.926 C 199.73,76.926 208.154,73.995 208.154,65.125 C 208.153,62.383 206.423,57.542 199.729,56.198 z M 129.896,68.63!
 5 C 124.851,68.635 123.318,63.665 123.318,59.448 C 123.318,55.243 124.851,50.193 129.896,50.193 C 134.935,50.193 136.529,55.244 136.529,59.448 C 136.528,63.666 134.935,68.635 129.896,68.635 z M 161.604,69.904 C 160.076,69.904 158.604,69.532 157.582,68.762 C 156.504,67.933 155.794,66.721 155.794,65.067 L 146.536,65.067 C 147.077,63.315 147.376,61.433 147.376,59.448 C 147.376,58.522 147.293,57.624 147.172,56.742 C 149.709,61.117 156.077,61.543 161.415,62.895 C 163.321,63.336 166.706,63.855 166.706,66.4 C 166.706,69.02 163.701,69.904 161.604,69.904 z M 192.203,69.904 C 190.676,69.904 189.205,69.532 188.182,68.762 C 187.104,67.933 186.394,66.721 186.394,65.067 L 177.552,65.067 C 177.529,62.316 175.779,57.533 169.129,56.198 C 164.155,55.116 156.882,54.544 156.882,51.411 C 156.882,49.111 160.093,48.924 161.874,48.924 C 163.214,48.924 164.418,49.182 165.321,49.751 C 166.206,50.327 166.717,51.221 166.717,52.617 L 176.337,52.617 C 176.723,60.971 185.336,61.204 192.014,62.896 C 193.9!
 21,63.337 197.305,63.856 197.305,66.401 C 197.306,69.02 194.3,!
 69.904 1
92.203,69.904 z"
+   style="fill:#60605b" />
+
+		</g>
+
+		<path
+   id="path2668"
+   d="M 209.127,36.16 L 210.092,36.16 L 211.544,38.546 L 212.485,38.546 L 210.914,36.116 C 211.721,36.014 212.334,35.586 212.334,34.607 C 212.334,33.508 211.696,33.034 210.396,33.034 L 208.294,33.034 L 208.294,38.546 L 209.127,38.546 L 209.127,36.16 z M 209.127,35.446 L 209.127,33.735 L 210.27,33.735 C 210.837,33.735 211.47,33.867 211.47,34.55 C 211.47,35.397 210.837,35.446 210.131,35.446 L 209.127,35.446 z"
+   style="fill:#60605b" />
+
+		<path
+   id="path2670"
+   d="M 215.518,35.8 C 215.518,38.78 213.098,41.192 210.119,41.192 C 207.133,41.192 204.713,38.78 204.713,35.8 C 204.713,32.813 207.133,30.395 210.119,30.395 C 213.098,30.396 215.518,32.813 215.518,35.8 z M 210.118,31.356 C 207.654,31.356 205.666,33.338 205.666,35.8 C 205.666,38.251 207.654,40.232 210.118,40.232 C 212.568,40.232 214.556,38.251 214.556,35.8 C 214.557,33.338 212.568,31.356 210.118,31.356 z"
+   style="fill:#60605b" />
+
+	</g>
+
+	<g
+   id="g2672">
+		<path
+   id="path2674"
+   d="M 108.227,116.338 C 107.135,116.338 106.105,115.762 105.508,115.103 L 105.508,116.112 L 103.406,116.112 L 103.406,102.187 L 105.508,101.095 L 105.508,106.327 C 106.29,105.605 107.196,105.07 108.33,105.07 C 110.657,105.07 112.49,106.759 112.49,110.879 C 112.49,114.588 110.472,116.338 108.227,116.338 z M 107.938,107.028 C 106.928,107.028 106.042,107.708 105.487,108.409 L 105.487,112.961 C 105.961,113.6 106.949,114.382 108.02,114.382 C 109.544,114.382 110.369,113.23 110.369,110.943 C 110.369,108.223 109.504,107.028 107.938,107.028 z"
+   style="fill:#60605b" />
+
+		<path
+   id="path2676"
+   d="M 118.915,119.923 L 116.67,119.923 L 118.235,115.906 L 114.259,105.297 L 116.587,105.297 L 118.358,110.592 C 118.687,111.539 119.182,113.146 119.305,113.742 C 119.491,113.104 119.944,111.559 120.273,110.633 L 122.107,105.297 L 124.352,105.297 L 118.915,119.923 z"
+   style="fill:#60605b" />
+
+	</g>
+
+</g>
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/rhlogo.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/rhlogo.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/shade.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/shade.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/shine.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/shine.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/stock-go-back.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/stock-go-back.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/stock-go-forward.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/stock-go-forward.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/stock-go-up.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/stock-go-up.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/stock-home.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/stock-home.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/title_logo.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/title_logo.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/title_logo.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/title_logo.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/title_logo.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,228 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="265"
+   height="151"
+   id="svg2898"
+   sodipodi:version="0.32"
+   inkscape:version="0.46+devel"
+   sodipodi:docname="title_logo.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="/home/rlerch/Source/SVN/publican/trunk/publican-jboss/en-US/images/title_logo.png"
+   inkscape:export-xdpi="20.840239"
+   inkscape:export-ydpi="20.840239">
+  <metadata
+     id="metadata16">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="" />
+        <dc:title />
+        <dc:date />
+        <dc:creator>
+          <cc:Agent>
+            <dc:title />
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title />
+          </cc:Agent>
+        </dc:rights>
+        <dc:publisher>
+          <cc:Agent>
+            <dc:title />
+          </cc:Agent>
+        </dc:publisher>
+        <dc:identifier />
+        <dc:source />
+        <dc:relation />
+        <dc:language />
+        <dc:subject>
+          <rdf:Bag />
+        </dc:subject>
+        <dc:coverage />
+        <dc:description />
+        <dc:contributor>
+          <cc:Agent>
+            <dc:title />
+          </cc:Agent>
+        </dc:contributor>
+        <cc:license
+           rdf:resource="" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="692"
+     inkscape:window-width="640"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     showgrid="false"
+     inkscape:zoom="1"
+     inkscape:cx="170.83251"
+     inkscape:cy="121.7868"
+     inkscape:window-x="1936"
+     inkscape:window-y="174"
+     inkscape:current-layer="svg2898"
+     units="px" />
+  <defs
+     id="defs21">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="-50 : 600 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="700 : 600 : 1"
+       inkscape:persp3d-origin="300 : 400 : 1"
+       id="perspective18" />
+    <inkscape:perspective
+       id="perspective2683"
+       inkscape:persp3d-origin="107.759 : 40.782333 : 1"
+       inkscape:vp_z="215.51801 : 61.1735 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 61.1735 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective2733"
+       inkscape:persp3d-origin="150 : 46.666667 : 1"
+       inkscape:vp_z="300 : 70 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 70 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective2787"
+       inkscape:persp3d-origin="150 : 46.666667 : 1"
+       inkscape:vp_z="300 : 70 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 70 : 1"
+       sodipodi:type="inkscape:persp3d" />
+  </defs>
+  <g
+     id="g2622"
+     transform="scale(1.2286387,1.2286387)"
+     inkscape:export-filename="/home/rlerch/Source/SVN/publican/trunk/publican-jboss/en-US/images/rhlogo.png"
+     inkscape:export-xdpi="61.361534"
+     inkscape:export-ydpi="61.361534">
+    <g
+       id="g2624">
+      <path
+         id="path2626"
+         d="m 140.253,110.221 2.945,5.891 -2.492,0 -2.863,-5.705 -3.255,0 0,5.705 -2.121,0 0,-14.419 6.323,0 c 2.514,0 4.635,1.339 4.635,4.306 0,2.306 -1.215,3.728 -3.172,4.222 z m -1.463,-6.489 -4.202,0 0,4.635 4.202,0 c 1.442,0 2.451,-0.741 2.451,-2.307 0,-1.504 -0.988,-2.328 -2.451,-2.328 z"
+         style="fill:#cc0000" />
+      <path
+         id="path2628"
+         d="m 155.164,111.458 -7.148,0 c 0.227,2.08 1.401,2.966 2.72,2.966 0.906,0 1.627,-0.329 2.348,-0.865 l 1.257,1.359 c -0.947,0.906 -2.08,1.421 -3.729,1.421 -2.533,0 -4.676,-2.039 -4.676,-5.623 0,-3.667 1.937,-5.645 4.737,-5.645 3.069,0 4.553,2.492 4.553,5.418 0,0.39 -0.041,0.742 -0.062,0.969 z m -4.635,-4.471 c -1.422,0 -2.287,0.988 -2.473,2.719 l 5.026,0 c -0.102,-1.483 -0.802,-2.719 -2.553,-2.719 z"
+         style="fill:#cc0000" />
+      <path
+         id="path2630"
+         d="m 164.37,116.112 0,-1.029 c -0.783,0.721 -1.689,1.256 -2.822,1.256 -2.328,0 -4.161,-1.688 -4.161,-5.809 0,-3.708 2.019,-5.459 4.264,-5.459 1.092,0 2.122,0.577 2.72,1.236 l 0,-4.12 2.101,-1.092 0,15.017 -2.102,0 z m 0.021,-7.662 c -0.474,-0.639 -1.463,-1.422 -2.534,-1.422 -1.524,0 -2.348,1.154 -2.348,3.44 0,2.719 0.865,3.913 2.431,3.913 1.009,0 1.895,-0.68 2.451,-1.379 l 0,-4.552 z"
+         style="fill:#cc0000" />
+      <path
+         id="path2632"
+         d="m 184.266,116.112 0,-6.468 -6.634,0 0,6.468 -2.162,0 0,-14.419 2.162,0 0,5.829 6.634,0 0,-5.829 2.162,0 0,14.419 -2.162,0 z"
+         style="fill:#cc0000" />
+      <path
+         id="path2634"
+         d="m 196.065,116.112 0,-1.07 c -0.741,0.741 -1.792,1.297 -2.966,1.297 -1.751,0 -3.749,-0.988 -3.749,-3.646 0,-2.41 1.854,-3.502 4.305,-3.502 1.01,0 1.813,0.144 2.41,0.412 l 0,-0.804 c 0,-1.174 -0.721,-1.833 -2.039,-1.833 -1.112,0 -1.978,0.206 -2.822,0.68 l -0.824,-1.606 c 1.03,-0.639 2.184,-0.969 3.708,-0.969 2.41,0 4.059,1.174 4.059,3.626 l 0,7.415 -2.082,0 0,0 z m 0,-4.613 c -0.576,-0.289 -1.318,-0.475 -2.472,-0.475 -1.359,0 -2.225,0.618 -2.225,1.607 0,1.07 0.68,1.792 2.08,1.792 1.134,0 2.122,-0.7 2.616,-1.38 l 0,-1.544 0.001,0 z"
+         style="fill:#cc0000" />
+      <path
+         id="path2636"
+         d="m 206.363,115.844 c -0.516,0.289 -1.236,0.494 -2.081,0.494 -1.504,0 -2.431,-0.926 -2.431,-2.863 l 0,-6.241 -1.545,0 0,-1.937 1.545,0 0,-3.09 2.081,-1.112 0,4.202 2.678,0 0,1.937 -2.678,0 0,5.871 c 0,1.009 0.329,1.298 1.112,1.298 0.556,0 1.174,-0.206 1.565,-0.433 l -0.246,1.874 z"
+         style="fill:#cc0000" />
+    </g>
+    <g
+       id="g2638">
+      <path
+         id="path2640"
+         d="m 106.389,51.025 c 3.57,-1.787 6,-5.101 6,-9.181 0,-9.509 -8.614,-11.555 -16.465,-11.421 l -21.186,0 -0.121,0 -11.746,0 0,30.362 c 0,4.409 -1.537,5.936 -4.274,5.936 -2.941,0 -4.595,-1.654 -4.595,-4.658 l 0,-4.205 -11.17,0 0,1.969 c 0,10.154 3.892,17.099 15.952,17.099 9.837,0 15.038,-4.356 15.833,-12.958 l 0,12.004 21.879,0 c 9.761,0 17.737,-3.315 17.737,-14.161 0,-5.165 -2.991,-9.376 -7.844,-10.786 z m -19.902,-11.42 9.181,0 c 2.493,0 4.852,1.092 4.852,4.405 0,3.253 -2.806,4.338 -4.852,4.338 l -9.181,0 0,-8.743 z m 9.502,26.864 -9.502,0 0,-10.469 9.502,0 c 3.576,0 6.384,1.345 6.384,5.355 0,3.77 -2.617,5.114 -6.384,5.114 z"
+         style="fill:#cc0000" />
+      <path
+         id="path2642"
+         d="m 90.067,108.399 c 0,-7.695 -6.245,-13.947 -13.944,-13.947 -7.714,0 -13.955,6.252 -13.955,13.947 0,7.709 6.241,13.948 13.955,13.948 7.699,0 13.944,-6.239 13.944,-13.948 z"
+         style="fill:#cc0000" />
+      <path
+         id="path2644"
+         d="m 53.012,103.999 c 0,-6.818 -5.533,-12.349 -12.357,-12.349 -6.823,0 -12.352,5.53 -12.352,12.349 0,6.824 5.528,12.357 12.352,12.357 6.824,0 12.357,-5.533 12.357,-12.357 z"
+         style="fill:#cc0000" />
+      <path
+         id="path2646"
+         d="m 25.097,81.68 c 0,-6.157 -4.984,-11.151 -11.15,-11.151 -6.168,0 -11.16,4.994 -11.16,11.151 0,6.174 4.992,11.168 11.16,11.168 6.165,0 11.15,-4.994 11.15,-11.168 z"
+         style="fill:#cc0000" />
+      <path
+         id="path2648"
+         d="m 19.918,50.615 c 0,-5.506 -4.455,-9.956 -9.955,-9.956 -5.499,0 -9.963,4.449 -9.963,9.956 0,5.5 4.464,9.964 9.963,9.964 5.5,0 9.955,-4.465 9.955,-9.964 z"
+         style="fill:#cc0000" />
+      <path
+         id="path2650"
+         d="m 33.88,22.719 c 0,-4.619 -3.756,-8.366 -8.372,-8.366 -4.619,0 -8.369,3.747 -8.369,8.366 0,4.623 3.75,8.367 8.369,8.367 4.616,0 8.372,-3.744 8.372,-8.367 z"
+         style="fill:#cc0000" />
+      <path
+         id="path2652"
+         d="m 57.78,10.364 c 0,-4.18 -3.385,-7.571 -7.566,-7.571 -4.18,0 -7.571,3.391 -7.571,7.571 0,4.187 3.392,7.578 7.571,7.578 4.182,0 7.566,-3.391 7.566,-7.578 z"
+         style="fill:#cc0000" />
+      <path
+         id="path2654"
+         d="M 82.891,6.377 C 82.891,2.855 80.042,0 76.517,0 73.001,0 70.14,2.855 70.14,6.377 c 0,3.526 2.861,6.38 6.377,6.38 3.525,0 6.374,-2.854 6.374,-6.38 z"
+         style="fill:#cc0000" />
+    </g>
+    <g
+       id="g2656">
+      <g
+         id="g2658">
+        <path
+           id="path2660"
+           d="m 161.415,62.895 c -5.338,-1.352 -11.706,-1.777 -14.243,-6.153 0.121,0.882 0.204,1.78 0.204,2.706 0,1.985 -0.299,3.867 -0.84,5.619 l 9.258,0 c 0,1.654 0.71,2.866 1.788,3.695 1.022,0.77 2.494,1.142 4.022,1.142 2.097,0 5.102,-0.884 5.102,-3.504 0,-2.545 -3.385,-3.064 -5.291,-3.505 z"
+           style="fill:none" />
+        <path
+           id="path2662"
+           d="m 129.896,50.193 c -5.045,0 -6.578,5.051 -6.578,9.255 0,4.217 1.533,9.187 6.578,9.187 5.039,0 6.633,-4.97 6.633,-9.187 -0.001,-4.204 -1.594,-9.255 -6.633,-9.255 z"
+           style="fill:none" />
+        <path
+           id="path2664"
+           d="M 192.015,62.895 C 185.337,61.204 176.724,60.97 176.338,52.616 l -9.62,0 c 0,-1.396 -0.512,-2.29 -1.396,-2.866 -0.903,-0.569 -2.107,-0.827 -3.447,-0.827 -1.781,0 -4.992,0.188 -4.992,2.487 0,3.132 7.273,3.705 12.247,4.787 6.649,1.335 8.399,6.118 8.423,8.869 l 8.842,0 c 0,1.654 0.71,2.866 1.788,3.695 1.023,0.77 2.494,1.142 4.021,1.142 2.097,0 5.103,-0.884 5.103,-3.504 -10e-4,-2.544 -3.385,-3.063 -5.292,-3.504 z"
+           style="fill:none" />
+        <path
+           id="path2666"
+           d="m 199.729,56.198 c -4.975,-1.082 -12.581,-1.654 -12.581,-4.787 0,-2.3 2.879,-2.487 4.66,-2.487 1.339,0 2.544,0.258 3.447,0.827 0.884,0.576 1.396,1.47 1.396,2.866 l 10.019,0 c -0.385,-8.606 -7.98,-10.714 -15.239,-10.714 -6.048,0 -13.905,1.882 -14.992,8.54 -1.485,-6.781 -8.344,-8.54 -14.943,-8.54 -6.51,0 -15.461,2.172 -15.461,10.146 0,0.141 0.021,0.261 0.024,0.398 -2.525,-6.296 -8.49,-10.544 -16.163,-10.544 -8.299,0 -14.504,4.847 -16.602,11.996 1.604,2.158 2.448,4.973 2.448,7.912 0,2.413 -0.384,4.549 -1.111,6.419 2.853,5.273 8.343,8.696 15.265,8.696 7.354,0 13.123,-3.872 15.815,-9.719 1.414,7.509 8.762,9.719 15.957,9.719 6.187,0 13.02,-2.027 15.179,-7.772 2.235,5.949 8.89,7.772 15.421,7.772 7.462,0 15.886,-2.931 15.886,-11.801 -0.001,-2.742 -1.731,-7.583 -8.425,-8.927 z m -69.833,12.437 c -5.045,0 -6.578,-4.97 -6.578,-9.187 0,-4.205 1.533,-9.255 6.578,-9.255 5.039,0 6.633,5.051 6.633,9.255 -0.001,4.218 -1.594,9.187 -6.633,9.187 z m 31.708,1.269 c -1.528,0 -3,-0.!
 372 -4.022,-1.142 -1.078,-0.829 -1.788,-2.041 -1.788,-3.695 l -9.258,0 c 0.541,-1.752 0.84,-3.634 0.84,-5.619 0,-0.926 -0.083,-1.824 -0.204,-2.706 2.537,4.375 8.905,4.801 14.243,6.153 1.906,0.441 5.291,0.96 5.291,3.505 0,2.62 -3.005,3.504 -5.102,3.504 z m 30.599,0 c -1.527,0 -2.998,-0.372 -4.021,-1.142 -1.078,-0.829 -1.788,-2.041 -1.788,-3.695 l -8.842,0 c -0.023,-2.751 -1.773,-7.534 -8.423,-8.869 -4.974,-1.082 -12.247,-1.654 -12.247,-4.787 0,-2.3 3.211,-2.487 4.992,-2.487 1.34,0 2.544,0.258 3.447,0.827 0.885,0.576 1.396,1.47 1.396,2.866 l 9.62,0 c 0.386,8.354 8.999,8.587 15.677,10.279 1.907,0.441 5.291,0.96 5.291,3.505 0.001,2.619 -3.005,3.503 -5.102,3.503 z"
+           style="fill:#60605b" />
+      </g>
+      <path
+         id="path2668"
+         d="m 209.127,36.16 0.965,0 1.452,2.386 0.941,0 -1.571,-2.43 c 0.807,-0.102 1.42,-0.53 1.42,-1.509 0,-1.099 -0.638,-1.573 -1.938,-1.573 l -2.102,0 0,5.512 0.833,0 0,-2.386 z m 0,-0.714 0,-1.711 1.143,0 c 0.567,0 1.2,0.132 1.2,0.815 0,0.847 -0.633,0.896 -1.339,0.896 l -1.004,0 z"
+         style="fill:#60605b" />
+      <path
+         id="path2670"
+         d="m 215.518,35.8 c 0,2.98 -2.42,5.392 -5.399,5.392 -2.986,0 -5.406,-2.412 -5.406,-5.392 0,-2.987 2.42,-5.405 5.406,-5.405 2.979,0.001 5.399,2.418 5.399,5.405 z m -5.4,-4.444 c -2.464,0 -4.452,1.982 -4.452,4.444 0,2.451 1.988,4.432 4.452,4.432 2.45,0 4.438,-1.981 4.438,-4.432 10e-4,-2.462 -1.988,-4.444 -4.438,-4.444 z"
+         style="fill:#60605b" />
+    </g>
+    <g
+       id="g2672">
+      <path
+         id="path2674"
+         d="m 108.227,116.338 c -1.092,0 -2.122,-0.576 -2.719,-1.235 l 0,1.009 -2.102,0 0,-13.925 2.102,-1.092 0,5.232 c 0.782,-0.722 1.688,-1.257 2.822,-1.257 2.327,0 4.16,1.689 4.16,5.809 0,3.709 -2.018,5.459 -4.263,5.459 z m -0.289,-9.31 c -1.01,0 -1.896,0.68 -2.451,1.381 l 0,4.552 c 0.474,0.639 1.462,1.421 2.533,1.421 1.524,0 2.349,-1.152 2.349,-3.439 0,-2.72 -0.865,-3.915 -2.431,-3.915 z"
+         style="fill:#60605b" />
+      <path
+         id="path2676"
+         d="m 118.915,119.923 -2.245,0 1.565,-4.017 -3.976,-10.609 2.328,0 1.771,5.295 c 0.329,0.947 0.824,2.554 0.947,3.15 0.186,-0.638 0.639,-2.183 0.968,-3.109 l 1.834,-5.336 2.245,0 -5.437,14.626 z"
+         style="fill:#60605b" />
+    </g>
+  </g>
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/warning.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/warning.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/warning.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/warning.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/warning.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.0"
+   width="48"
+   height="48"
+   id="svg2">
+  <defs
+     id="defs5" />
+  <path
+     d="M 26.553837,7.3026447 C 25.283816,5.0882437 23.199663,5.0882437 21.945919,7.3026447 L 3.9376032,38.711367 C 2.6675727,40.925778 3.7259346,42.749404 6.2822626,42.749404 L 42.217493,42.749404 C 44.77383,42.749404 45.832183,40.925778 44.545876,38.711367 L 26.553837,7.3026447 z "
+     style="fill:#2e3436;fill-opacity:1;stroke:#2e3436;stroke-width:4.7150631;stroke-miterlimit:4;stroke-dasharray:none"
+     id="use2812" />
+  <path
+     d="M 26.553837,7.3026447 C 25.283816,5.0882437 23.199663,5.0882437 21.945919,7.3026447 L 3.9376032,38.711367 C 2.6675727,40.925778 3.7259346,42.749404 6.2822626,42.749404 L 42.217493,42.749404 C 44.77383,42.749404 45.832183,40.925778 44.545876,38.711367 L 26.553837,7.3026447 z "
+     style="fill:#fde8a6;fill-opacity:1;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none"
+     id="path4309" />
+  <path
+     d="M 26.220057,12.491166 C 25.133792,10.597163 23.351196,10.597163 22.278859,12.491166 L 6.8761436,39.355379 C 5.789878,41.249382 6.6951041,42.809153 8.8815542,42.809153 L 39.617353,42.809153 C 41.803812,42.809153 42.709038,41.249382 41.608844,39.355379 L 26.220057,12.491166 z "
+     style="fill:#fac521;fill-opacity:1"
+     id="path2991" />
+  <path
+     d="M 28.470282,37.445157 C 28.470282,38.878008 27.2491,39.952646 25.392902,39.952646 L 25.36034,39.952646 C 23.520438,39.952646 22.282969,38.878008 22.282969,37.445157 C 22.282969,35.947181 23.553,34.921391 25.392902,34.921391 C 27.216538,34.921391 28.437711,35.947181 28.470282,37.445157 z M 28.144632,33.146613 L 29.21927,19.990446 L 21.517696,19.990446 L 22.592334,33.146613 L 28.144632,33.146613 z "
+     style="fill:#fef2cb;fill-opacity:1;stroke:#fef2cb;stroke-width:0.9430126;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
+     id="path4468" />
+  <path
+     d="M 27.089325,36.371084 C 27.089325,37.803935 25.868143,38.878574 24.011955,38.878574 L 23.979392,38.878574 C 22.139481,38.878574 20.902022,37.803935 20.902022,36.371084 C 20.902022,34.873109 22.172043,33.847319 24.011955,33.847319 C 25.835581,33.847319 27.056763,34.873109 27.089325,36.371084 z M 26.763675,32.072531 L 27.838313,18.916364 L 20.136748,18.916364 L 21.211386,32.072531 L 26.763675,32.072531 z "
+     style="fill:#2e3436"
+     id="path4470" />
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/watermark-draft.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Common_Content/images/watermark-draft.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Components.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Components.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Components.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1321 @@
+<?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" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Seam_Reference_Guide_CP07.ent">
+%BOOK_ENTITIES;
+]>
+<chapter id="components" lang="en-US">
+	<title>Built-in Seam components</title>
+	<para>
+		This chapter describes Seam's built in components, and their configuration properties. The built in components will be created even if they are not listed in your <literal>components.xml</literal> file, but if you need to override default properties or specify more than one component of a certain type, <literal>components.xml</literal> is used.
+	</para>
+	<para>
+		You can replace any of the built in components with your own implementations simply by specifying the name of one of the built in components on your own class using <literal>@Name</literal>.
+	</para>
+	<para>
+		Even though all the built in components use a qualified name, most of them are aliased to unqualified names by default. These aliases specify <literal>auto-create="true"</literal>, so you do not need to use <literal>create=true</literal> when injecting built-in components by their unqualified name.
+	</para>
+	<section>
+		<title>Context injection components</title>
+		<para>
+			The first set of built in components exist purely to support injection of various contextual objects. For example, the following component instance variable would have the Seam session context object injected:
+		</para>
+		
+<programlisting role="JAVA">@In private Context sessionContext;
+</programlisting>
+		<variablelist>
+			<varlistentry>
+				<term><literal>org.jboss.seam.core.contexts</literal></term>
+				<listitem>
+					<para>
+						Component that provides access to Seam Context objects, for example <literal>org.jboss.seam.core.contexts.sessionContext['user']</literal>.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>org.jboss.seam.faces.facesContext</literal></term>
+				<listitem>
+					<para>
+						Manager component for the <literal>FacesContext</literal> context object (not a true Seam context)
+					</para>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+		<para>
+			All of these components are always installed.
+		</para>
+	</section>
+	
+	<section>
+		<title>Utility components</title>
+		<para>
+			These components are merely useful.
+		</para>
+		<variablelist>
+			<varlistentry>
+				<term><literal>org.jboss.seam.faces.facesMessages</literal></term>
+				<listitem>
+					<para>
+						Allows faces success messages to propagate across a browser redirect.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>add(FacesMessage facesMessage)</literal> — add a faces message, which will be displayed during the next render response phase that occurs in the current conversation.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>add(String messageTemplate)</literal> — add a faces message, rendered from the given message template which may contain EL expressions.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>add(Severity severity, String messageTemplate)</literal> — add a faces message, rendered from the given message template which may contain EL expressions.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>addFromResourceBundle(String key)</literal> — add a faces message, rendered from a message template defined in the Seam resource bundle which may contain EL expressions.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>addFromResourceBundle(Severity severity, String key)</literal> — add a faces message, rendered from a message template defined in the Seam resource bundle which may contain EL expressions.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>clear()</literal> — clear all messages.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>org.jboss.seam.faces.redirect</literal></term>
+				<listitem>
+					<para>
+						A convenient API for performing redirects with parameters (this is especially useful for bookmarkable search results screens).
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>redirect.viewId</literal> — the JSF view id to redirect to.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>redirect.conversationPropagationEnabled</literal> — determines whether the conversation will propagate across the redirect.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>redirect.parameters</literal> — a map of request parameter name to value, to be passed in the redirect request.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>execute()</literal> — perform the redirect immediately.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>captureCurrentRequest()</literal> — stores the view id and request parameters of the current GET request (in the conversation context), for later use by calling <literal>execute()</literal>.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>org.jboss.seam.faces.httpError</literal></term>
+				<listitem>
+					<para>
+						A convenient API for sending HTTP errors.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>org.jboss.seam.core.events</literal></term>
+				<listitem>
+					<para>
+						An API for raising events that can be observed via <literal>@Observer</literal> methods, or method bindings in <literal>components.xml</literal>.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>raiseEvent(String type)</literal> — raise an event of a particular type and distribute to all observers.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>raiseAsynchronousEvent(String type)</literal> — raise an event to be processed asynchronously by the EJB3 timer service.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>raiseTimedEvent(String type, ....)</literal> — schedule an event to be processed asynchronously by the EJB3 timer service.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>addListener(String type, String methodBinding)</literal> — add an observer for a particular event type.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>org.jboss.seam.core.interpolator</literal></term>
+				<listitem>
+					<para>
+						An API for interpolating the values of JSF EL expressions in Strings.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>interpolate(String template)</literal> — scan the template for JSF EL expressions of the form <literal>#{...}</literal> and replace them with their evaluated values.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>org.jboss.seam.core.expressions</literal></term>
+				<listitem>
+					<para>
+						An API for creating value and method bindings.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>createValueBinding(String expression)</literal> — create a value binding object.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>createMethodBinding(String expression)</literal> — create a method binding object.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>org.jboss.seam.core.pojoCache</literal></term>
+				<listitem>
+					<para>
+						Manager component for a JBoss Cache <literal>PojoCache</literal> instance.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>pojoCache.cfgResourceName</literal> — the name of the configuration file. Default to <literal>treecache.xml</literal>.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+		<para>
+			All of these components are always installed.
+		</para>
+	</section>
+	
+	<section>
+		<title>Components for internationalization and themes</title>
+		<para>
+			The next group of components make it easy to build internationalized user interfaces using Seam.
+		</para>
+		<variablelist>
+			<varlistentry>
+				<term><literal>org.jboss.seam.core.locale</literal></term>
+				<listitem>
+					<para>
+						The Seam locale.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>org.jboss.seam.international.timezone</literal></term>
+				<listitem>
+					<para>
+						The Seam timezone. The timezone is session scoped.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>org.jboss.seam.core.resourceBundle</literal></term>
+				<listitem>
+					<para>
+						The Seam resource bundle. The resource bundle is stateless. The Seam resource bundle performs a depth-first search for keys in a list of Java resource bundles.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>org.jboss.seam.core.resourceLoader</literal></term>
+				<listitem>
+					<para>
+						The resource loader provides access to application resources and resource bundles.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>resourceLoader.bundleNames</literal> — the names of the Java resource bundles to search when the Seam resource bundle is used. Default to <literal>messages</literal>.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>org.jboss.seam.international.localeSelector</literal></term>
+				<listitem>
+					<para>
+						Supports selection of the locale either at configuration time, or by the user at runtime.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>select()</literal> — select the specified locale.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>localeSelector.locale</literal> — the actual <literal>java.util.Locale</literal>.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>localeSelector.localeString</literal> — the string representation of the locale.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>localeSelector.language</literal> — the language for the specified locale.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>localeSelector.country</literal> — the country for the specified locale.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>localeSelector.variant</literal> — the variant for the specified locale.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>localeSelector.supportedLocales</literal> — a list of <literal>SelectItem</literal>s representing the supported locales listed in <literal>jsf-config.xml</literal>.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>localeSelector.cookieEnabled</literal> — specifies that the locale selection should be persisted via a cookie.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>org.jboss.seam.international.timezoneSelector</literal></term>
+				<listitem>
+					<para>
+						Supports selection of the timezone either at configuration time, or by the user at runtime.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>select()</literal> — select the specified locale.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>timezoneSelector.timezone</literal> — the actual <literal>java.util.TimeZone</literal>.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>timezoneSelector.timeZoneId</literal> — the string representation of the timezone.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>timezoneSelector.cookieEnabled</literal> — specifies that the timezone selection should be persisted via a cookie.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>org.jboss.seam.international.messages</literal></term>
+				<listitem>
+					<para>
+						A map containing internationalized messages rendered from message templates defined in the Seam resource bundle.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>org.jboss.seam.theme.themeSelector</literal></term>
+				<listitem>
+					<para>
+						Supports selection of the theme either at configuration time, or by the user at runtime.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>select()</literal> — select the specified theme.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>theme.availableThemes</literal> — the list of defined themes.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>themeSelector.theme</literal> — the selected theme.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>themeSelector.themes</literal> — a list of <literal>SelectItem</literal>s representing the defined themes.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>themeSelector.cookieEnabled</literal> — specifies that the theme selection should be persisted via a cookie.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>org.jboss.seam.theme.theme</literal></term>
+				<listitem>
+					<para>
+						A map containing theme entries.
+					</para>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+		<para>
+			All of these components are always installed.
+		</para>
+	</section>
+	
+	<section>
+		<title>Components for controlling conversations</title>
+		<para>
+			The next group of components allow control of conversations by the application or user interface.
+		</para>
+		<variablelist>
+			<varlistentry>
+				<term><literal>org.jboss.seam.core.conversation</literal></term>
+				<listitem>
+					<para>
+						API for application control of attributes of the current Seam conversation.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>getId()</literal> — returns the current conversation ID
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>isNested()</literal> — is the current conversation a nested conversation?
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>isLongRunning()</literal> — is the current conversation a long-running conversation?
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>getId()</literal> — returns the current conversation ID
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>getParentId()</literal> — returns the conversation ID of the parent conversation
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>getRootId()</literal> — returns the conversation ID of the root conversation
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>setTimeout(int timeout)</literal> — sets the timeout for the current conversation
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>setViewId(String outcome)</literal> — sets the view id to be used when switching back to the current conversation from the conversation switcher, conversation list, or breadcrumbs.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>setDescription(String description)</literal> — sets the description of the current conversation to be displayed in the conversation switcher, conversation list, or breadcrumbs.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>redirect()</literal> — redirect to the last well-defined view id for this conversation (useful after login challenges).
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>leave()</literal> — exit the scope of this conversation, without actually ending the conversation.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>begin()</literal> — begin a long-running conversation (equivalent to <literal>@Begin</literal>).
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>beginPageflow(String pageflowName)</literal> — begin a long-running conversation with a pageflow (equivalent to <literal>@Begin(pageflow="...")</literal>).
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>end()</literal> — end a long-running conversation (equivalent to <literal>@End</literal>).
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>pop()</literal> — pop the conversation stack, returning to the parent conversation.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>root()</literal> — return to the root conversation of the conversation stack.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>changeFlushMode(FlushModeType flushMode)</literal> — change the flush mode of the conversation.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>org.jboss.seam.core.conversationList</literal></term>
+				<listitem>
+					<para>
+						Manager component for the conversation list.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>org.jboss.seam.core.conversationStack</literal></term>
+				<listitem>
+					<para>
+						Manager component for the conversation stack (breadcrumbs).
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>org.jboss.seam.faces.switcher</literal></term>
+				<listitem>
+					<para>
+						The conversation switcher.
+					</para>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+		<para>
+			All of these components are always installed.
+		</para>
+	</section>
+	
+	<section>
+		<title>jBPM-related components</title>
+		<para>
+			These components are for use with jBPM.
+		</para>
+		<variablelist>
+			<varlistentry>
+				<term><literal>org.jboss.seam.pageflow.pageflow</literal></term>
+				<listitem>
+					<para>
+						API control of Seam pageflows.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>isInProcess()</literal> — returns <literal>true</literal> if there is currently a pageflow in process
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>getProcessInstance()</literal> — returns jBPM <literal>ProcessInstance</literal> for the current pageflow
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>begin(String pageflowName)</literal> — begin a pageflow in the context of the current conversation
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>reposition(String nodeName)</literal> — reposition the current pageflow to a particular node
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>org.jboss.seam.bpm.actor</literal></term>
+				<listitem>
+					<para>
+						API for application control of attributes of the jBPM actor associated with the current session.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>setId(String actorId)</literal> — sets the jBPM actor id of the current user.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>getGroupActorIds()</literal> — returns a <literal>Set</literal> to which jBPM actor ids for the current users groups may be added.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>org.jboss.seam.bpm.transition</literal></term>
+				<listitem>
+					<para>
+						API for application control of the jBPM transition for the current task.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>setName(String transitionName)</literal> — sets the jBPM transition name to be used when the current task is ended via <literal>@EndTask</literal>.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>org.jboss.seam.bpm.businessProcess</literal></term>
+				<listitem>
+					<para>
+						API for programmatic control of the association between the conversation and business process.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>businessProcess.taskId</literal> — the id of the task associated with the current conversation.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>businessProcess.processId</literal> — the id of the process associated with the current conversation.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>businessProcess.hasCurrentTask()</literal> — is a task instance associated with the current conversation?
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>businessProcess.hasCurrentProcess()</literal> — is a process instance associated with the current conversation.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>createProcess(String name)</literal> — create an instance of the named process definition and associate it with the current conversation.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>startTask()</literal> — start the task associated with the current conversation.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>endTask(String transitionName)</literal> — end the task associated with the current conversation.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>resumeTask(Long id)</literal> — associate the task with the given id with the current conversation.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>resumeProcess(Long id)</literal> — associate the process with the given id with the current conversation.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>transition(String transitionName)</literal> — trigger the transition.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>org.jboss.seam.bpm.taskInstance</literal></term>
+				<listitem>
+					<para>
+						Manager component for the jBPM <literal>TaskInstance</literal>.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>org.jboss.seam.bpm.processInstance</literal></term>
+				<listitem>
+					<para>
+						Manager component for the jBPM <literal>ProcessInstance</literal>.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>org.jboss.seam.bpm.jbpmContext</literal></term>
+				<listitem>
+					<para>
+						Manager component for an event-scoped <literal>JbpmContext</literal>.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>org.jboss.seam.bpm.taskInstanceList</literal></term>
+				<listitem>
+					<para>
+						Manager component for the jBPM task list.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>org.jboss.seam.bpm.pooledTaskInstanceList</literal></term>
+				<listitem>
+					<para>
+						Manager component for the jBPM pooled task list.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>org.jboss.seam.bpm.taskInstanceListForType</literal></term>
+				<listitem>
+					<para>
+						Manager component for the jBPM task lists.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>org.jboss.seam.bpm.pooledTask</literal></term>
+				<listitem>
+					<para>
+						Action handler for pooled task assignment.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>org.jboss.seam.bpm.processInstanceFinder</literal></term>
+				<listitem>
+					<para>
+						Manager for the process instance task list.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>org.jboss.seam.bpm.processInstanceList</literal></term>
+				<listitem>
+					<para>
+						The process instance task list.
+					</para>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+		<para>
+			All of these components are installed whenever the component <literal>org.jboss.seam.bpm.jbpm</literal> is installed.
+		</para>
+	</section>
+	
+	<section>
+		<title>Security-related components</title>
+		<para>
+			These components relate to web-tier security.
+		</para>
+		<variablelist>
+			<varlistentry>
+				<term><literal>org.jboss.seam.web.userPrincipal</literal></term>
+				<listitem>
+					<para>
+						Manager component for the current user <literal>Principal</literal>.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>org.jboss.seam.web.isUserInRole</literal></term>
+				<listitem>
+					<para>
+						Allows JSF pages to choose to render a control, depending upon the roles available to the current principal. <literal>&lt;h:commandButton value="edit" rendered="#{isUserInRole['admin']}"/&gt;</literal>.
+					</para>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+	</section>
+	
+	<section>
+		<title>JMS-related components</title>
+		<para>
+			These components are for use with managed <literal>TopicPublisher</literal>s and <literal>QueueSender</literal>s (see below).
+		</para>
+		<variablelist>
+			<varlistentry>
+				<term><literal>org.jboss.seam.jms.queueSession</literal></term>
+				<listitem>
+					<para>
+						Manager component for a JMS <literal>QueueSession</literal> .
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>org.jboss.seam.jms.topicSession</literal></term>
+				<listitem>
+					<para>
+						Manager component for a JMS <literal>TopicSession</literal> .
+					</para>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+	</section>
+	
+	<section id="components.mail">
+		<title>Mail-related components</title>
+		<para>
+			These components are for use with Seam's Email support
+		</para>
+		<variablelist>
+			<varlistentry>
+				<term><literal>org.jboss.seam.mail.mailSession</literal></term>
+				<listitem>
+					<para>
+						Manager component for a JavaMail <literal>Session</literal>. The session can be either looked up in the JNDI context (by setting the <literal>sessionJndiName</literal> property) or it can created from the configuration options in which case the <literal>host</literal> is mandatory.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>org.jboss.seam.mail.mailSession.host</literal> — the hostname of the SMTP server to use
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>org.jboss.seam.mail.mailSession.port</literal> — the port of the SMTP server to use
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>org.jboss.seam.mail.mailSession.username</literal> — the username to use to connect to the SMTP server.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>org.jboss.seam.mail.mailSession.password</literal> — the password to use to connect to the SMTP server
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>org.jboss.seam.mail.mailSession.debug</literal> — enable JavaMail debugging (very verbose)
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>org.jboss.seam.mail.mailSession.ssl</literal> — enable SSL connection to SMTP (will default to port 465)
+							</para>
+							<para>
+								<literal>org.jboss.seam.mail.mailSession.tls</literal> — by default true, enable TLS support in the mail session
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>org.jboss.seam.mail.mailSession.sessionJndiName</literal> — name under which a javax.mail.Session is bound to JNDI. If supplied, all other properties will be ignored.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+	</section>
+	
+	<section>
+		<title>Infrastructural components</title>
+		<para>
+			These components provide critical platform infrastructure. You can install a component which isn't installed by default by setting <literal>install="true"</literal> on the component in <literal>components.xml</literal>.
+		</para>
+		<variablelist>
+			<varlistentry>
+				<term><literal>org.jboss.seam.core.init</literal></term>
+				<listitem>
+					<para>
+						Initialization settings for Seam. Always installed.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>org.jboss.seam.core.init.jndiPattern</literal> — the JNDI pattern used for looking up session beans
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>org.jboss.seam.core.init.debug</literal> — enable Seam debug mode. This should be set to false when in production. You may see errors if the system is placed under any load and debug is enabled.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>org.jboss.seam.core.init.clientSideConversations</literal> — if set to <literal>true</literal>, Seam will save conversation context variables in the client instead of in the <literal>HttpSession</literal>.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>org.jboss.seam.core.init.userTransactionName</literal> — the JNDI name to use when looking up the JTA <literal>UserTransaction</literal> object.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>org.jboss.seam.core.manager</literal></term>
+				<listitem>
+					<para>
+						Internal component for Seam page and conversation context management. Always installed.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>org.jboss.seam.core.manager.conversationTimeout</literal> — the conversation context timeout in milliseconds.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>org.jboss.seam.core.manager.concurrentRequestTimeout</literal> — maximum wait time for a thread attempting to gain a lock on the long-running conversation context.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>org.jboss.seam.core.manager.conversationIdParameter</literal> — the request parameter used to propagate the conversation id, default to <literal>conversationId</literal>.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>org.jboss.seam.core.manager.conversationIsLongRunningParameter</literal> — the request parameter used to propagate information about whether the conversation is long-running, default to <literal>conversationIsLongRunning</literal>.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>org.jboss.seam.navigation.pages</literal></term>
+				<listitem>
+					<para>
+						Internal component for Seam workspace management. Always installed.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>org.jboss.seam.navigation.pages.noConversationViewId</literal> — global setting for the view id to redirect to when a conversation entry is not found on the server side.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>org.jboss.seam.navigation.pages.loginViewId</literal> — global setting for the view id to redirect to when an unauthenticated user tries to access a protected view.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>org.jboss.seam.navigation.pages.httpPort</literal> — global setting for the port to use when the http scheme is requested.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>org.jboss.seam.navigation.pages.httpsPort</literal> — global setting for the port to use when the https scheme is requested.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>org.jboss.seam.navigation.pages.resources</literal> — a list of resources to search for <literal>pages.xml</literal> style resources. Defaults to <literal>WEB-INF/pages.xml</literal>.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>org.jboss.seam.bpm.jbpm</literal></term>
+				<listitem>
+					<para>
+						Bootstraps a <literal>JbpmConfiguration</literal>. Install as class <literal>org.jboss.seam.bpm.Jbpm</literal>.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>org.jboss.seam.bpm.jbpm.processDefinitions</literal> — a list of resource names of jPDL files to be used for orchestration of business processes.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>org.jboss.seam.bpm.jbpm.pageflowDefinitions</literal> — a list of resource names of jPDL files to be used for orchestration of conversation page flows.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>org.jboss.seam.core.conversationEntries</literal></term>
+				<listitem>
+					<para>
+						Internal session-scoped component recording the active long-running conversations between requests.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>org.jboss.seam.faces.facesPage</literal></term>
+				<listitem>
+					<para>
+						Internal page-scoped component recording the conversation context associated with a page.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>org.jboss.seam.persistence.persistenceContexts</literal></term>
+				<listitem>
+					<para>
+						Internal component recording the persistence contexts which were used in the current conversation.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>org.jboss.seam.jms.queueConnection</literal></term>
+				<listitem>
+					<para>
+						Manages a JMS <literal>QueueConnection</literal>. Installed whenever managed managed <literal>QueueSender</literal> is installed.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>org.jboss.seam.jms.queueConnection.queueConnectionFactoryJndiName</literal> — the JNDI name of a JMS <literal>QueueConnectionFactory</literal>. Default to <literal>UIL2ConnectionFactory</literal>
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>org.jboss.seam.jms.topicConnection</literal></term>
+				<listitem>
+					<para>
+						Manages a JMS <literal>TopicConnection</literal>. Installed whenever managed managed <literal>TopicPublisher</literal> is installed.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>org.jboss.seam.jms.topicConnection.topicConnectionFactoryJndiName</literal> — the JNDI name of a JMS <literal>TopicConnectionFactory</literal>. Default to <literal>UIL2ConnectionFactory</literal>
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>org.jboss.seam.persistence.persistenceProvider</literal></term>
+				<listitem>
+					<para>
+						Abstraction layer for non-standardized features of JPA provider.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>org.jboss.seam.core.validators</literal></term>
+				<listitem>
+					<para>
+						Caches instances of Hibernate Validator <literal>ClassValidator</literal>.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>org.jboss.seam.faces.validation</literal></term>
+				<listitem>
+					<para>
+						Allows the application to determine whether validation failed or was successful.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>org.jboss.seam.debug.introspector</literal></term>
+				<listitem>
+					<para>
+						Support for the Seam Debug Page.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>org.jboss.seam.debug.contexts</literal></term>
+				<listitem>
+					<para>
+						Support for the Seam Debug Page.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>org.jboss.seam.exception.exceptions</literal></term>
+				<listitem>
+					<para>
+						Internal component for exception handling.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>org.jboss.seam.transaction.transaction</literal></term>
+				<listitem>
+					<para>
+						API for controlling transactions and abstracting the underlying transaction management implementation behind a JTA-compatible interface.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>org.jboss.seam.faces.safeActions</literal></term>
+				<listitem>
+					<para>
+						Decides if an action expression in an incoming URL is safe. This is done by checking that the action expression exists in the view.
+					</para>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+	</section>
+	
+	<section>
+		<title>Miscellaneous components</title>
+		<!--       <para>
+            These components don't fit into 
+        </para>  -->
+		<variablelist>
+			<varlistentry>
+				<term><literal>org.jboss.seam.async.dispatcher</literal></term>
+				<listitem>
+					<para>
+						Dispatcher stateless session bean for asynchronous methods.
+					</para>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+		<variablelist>
+			<varlistentry>
+				<term><literal>org.jboss.seam.core.image</literal></term>
+				<listitem>
+					<para>
+						Image manipulation and interrogation.
+					</para>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+		<variablelist>
+			<varlistentry>
+				<term><literal>org.jboss.seam.core.pojoCache</literal></term>
+				<listitem>
+					<para>
+						Manager component for a PojoCache instance.
+					</para>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+		<variablelist>
+			<varlistentry>
+				<term><literal>org.jboss.seam.core.uiComponent</literal></term>
+				<listitem>
+					<para>
+						Manages a map of UIComponents keyed by component id.
+					</para>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+	</section>
+	
+	<section>
+		<title>Special components</title>
+		<para>
+			Certain special Seam component classes are installable multiple times under names specified in the Seam configuration. For example, the following lines in <literal>components.xml</literal> install and configure two Seam components:
+		</para>
+		
+<programlisting role="XML">&lt;component name="bookingDatabase"
+          class="org.jboss.seam.persistence.ManagedPersistenceContext"&gt;
+    &lt;property name="persistenceUnitJndiName"&gt;java:/comp/emf/bookingPersistence&lt;/property&gt;
+&lt;/component&gt;
+
+&lt;component name="userDatabase"
+          class="org.jboss.seam.persistence.ManagedPersistenceContext"&gt;
+    &lt;property name="persistenceUnitJndiName"&gt;java:/comp/emf/userPersistence&lt;/property&gt;
+&lt;/component&gt;
+</programlisting>
+		<para>
+			The Seam component names are <literal>bookingDatabase</literal> and <literal>userDatabase</literal>.
+		</para>
+		<variablelist>
+			<varlistentry>
+				<term><emphasis>&lt;entityManager&gt;</emphasis></term>
+				<term><literal>org.jboss.seam.persistence.ManagedPersistenceContext</literal></term>
+				<listitem>
+					<para>
+						Manager component for a conversation scoped managed <literal>EntityManager</literal> with an extended persistence context.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<emphasis>&lt;entityManager&gt;</emphasis>.entityManagerFactory — a value binding expression that evaluates to an instance of <literal>EntityManagerFactory</literal>.
+							</para>
+							<para>
+								<emphasis>&lt;entityManager&gt;</emphasis>.persistenceUnitJndiName — the JNDI name of the entity manager factory, default to java:/<emphasis>&lt;managedPersistenceContext&gt;</emphasis>.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><emphasis>&lt;entityManagerFactory&gt;</emphasis></term>
+				<term><literal>org.jboss.seam.persistence.EntityManagerFactory</literal></term>
+				<listitem>
+					<para>
+						Manages a JPA <literal>EntityManagerFactory</literal>. This is most useful when using JPA outside of an EJB 3.0 supporting environment.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>entityManagerFactory.persistenceUnitName</literal> — the name of the persistence unit.
+							</para>
+						</listitem>
+					</itemizedlist>
+					<para>
+						See the API JavaDoc for further configuration properties.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><emphasis>&lt;session&gt;</emphasis></term>
+				<term><literal>org.jboss.seam.persistence.ManagedSession</literal></term>
+				<listitem>
+					<para>
+						Manager component for a conversation scoped managed Hibernate <literal>Session</literal>.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<emphasis>&lt;session&gt;</emphasis>.sessionFactory — a value binding expression that evaluates to an instance of <literal>SessionFactory</literal>.
+							</para>
+							<para>
+								<emphasis>&lt;session&gt;</emphasis>.sessionFactoryJndiName — the JNDI name of the session factory, default to java:/<emphasis>&lt;managedSession&gt;</emphasis>.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><emphasis>&lt;sessionFactory&gt;</emphasis></term>
+				<term><literal>org.jboss.seam.persistence.HibernateSessionFactory</literal></term>
+				<listitem>
+					<para>
+						Manages a Hibernate <literal>SessionFactory</literal>.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>&lt;sessionFactory&gt;.cfgResourceName</literal> — the path to the configuration file. Default to <literal>hibernate.cfg.xml</literal>.
+							</para>
+						</listitem>
+					</itemizedlist>
+					<para>
+						See the API JavaDoc for further configuration properties.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><emphasis>&lt;managedQueueSender&gt;</emphasis></term>
+				<term><literal>org.jboss.seam.jms.ManagedQueueSender</literal></term>
+				<listitem>
+					<para>
+						Manager component for an event scoped managed JMS <literal>QueueSender</literal>.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<emphasis>&lt;managedQueueSender&gt;</emphasis>.queueJndiName — the JNDI name of the JMS queue.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><emphasis>&lt;managedTopicPublisher&gt;</emphasis></term>
+				<term><literal>org.jboss.seam.jms.ManagedTopicPublisher</literal></term>
+				<listitem>
+					<para>
+						Manager component for an event scoped managed JMS <literal>TopicPublisher</literal>.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<emphasis>&lt;managedTopicPublisher&gt;</emphasis>.topicJndiName — the JNDI name of the JMS topic.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><emphasis>&lt;managedWorkingMemory&gt;</emphasis></term>
+				<term><literal>org.jboss.seam.drools.ManagedWorkingMemory</literal></term>
+				<listitem>
+					<para>
+						Manager component for a conversation scoped managed Drools <literal>WorkingMemory</literal>.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<emphasis>&lt;managedWorkingMemory&gt;</emphasis>.ruleBase — a value expression that evaluates to an instance of <literal>RuleBase</literal>.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><emphasis>&lt;ruleBase&gt;</emphasis></term>
+				<term><literal>org.jboss.seam.drools.RuleBase</literal></term>
+				<listitem>
+					<para>
+						Manager component for an application scoped Drools <literal>RuleBase</literal>. <emphasis>Note that this is not really intended for production usage, since it does not support dynamic installation of new rules.</emphasis>
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<emphasis>&lt;ruleBase&gt;</emphasis>.ruleFiles — a list of files containing Drools rules.
+							</para>
+							<para>
+								<emphasis>&lt;ruleBase&gt;</emphasis>.dslFile — a Drools DSL definition.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<!--      <varlistentry>
+                <term><emphasis>&lt;entityHome&gt;</emphasis></term>
+                <term><literal>org.jboss.seam.framework.EntityHome</literal></term>  --><!--     <listitem> 
+			  <para></para>  --><!--  TODO: Document this  --><!--      </listitem>  --><!--      </varlistentry>  --><!--       <varlistentry> 
+                <term><emphasis>&lt;hibernateEntityHome&gt;</emphasis></term>
+		<term><literal>org.jboss.seam.framework.HibernateEntityHome</literal></term>  --><!--     <listitem> 
+			<para></para>  --><!--  TODO: Document this  --><!--   </listitem>  --><!--       </varlistentry>  --><!--      <varlistentry> 
+                <term><emphasis>&lt;entityQuery&gt;</emphasis></term>
+		<term><literal>org.jboss.seam.framework.EntityQuery</literal></term>  --><!--    <listitem> 
+			<para></para>  --><!--  TODO: Document this  --><!--    </listitem>  --><!--         </varlistentry>  --><!--       <varlistentry>
+                <term><emphasis>&lt;hibernateEntityQuery&gt;</emphasis></term>
+		<term><literal>org.jboss.seam.framework.HibernateEntityQuery</literal></term>  --><!--    <listitem>
+			<para></para>  --><!--  TODO: Document this  --><!--    </listitem>  --><!--    </varlistentry>  -->
+		</variablelist>
+	</section>
+
+</chapter>
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Concepts.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Concepts.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Concepts.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,842 @@
+<?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" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Seam_Reference_Guide_CP07.ent">
+%BOOK_ENTITIES;
+]>
+<chapter id="Seam_Reference_Guide-The_contextual_component_model" lang="en-US">
+	<title>The contextual component model</title>
+	<para>
+		The two core concepts in Seam are the notion of a <emphasis>context</emphasis> and the notion of a <emphasis>component</emphasis>. Components are stateful objects, usually EJBs, and an instance of a component is associated with a context, and given a name in that context. <emphasis>Bijection</emphasis> provides a mechanism for aliasing internal component names (instance variables) to contextual names, allowing component trees to be dynamically assembled, and reassembled by Seam.
+	</para>
+	<para>
+		Let us start by describing the contexts built in to Seam.
+	</para>
+	<sect1 id="Seam_Reference_Guide-The_contextual_component_model-Seam_contexts"><title>Seam contexts</title>
+	<para>
+		Seam contexts are created and destroyed by the framework. The application does not control context demarcation via explicit Java API calls. Context are usually implicit. In some cases, however, contexts are demarcated via annotations.
+	</para>
+	<para>
+		The basic Seam contexts are:
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				Stateless context
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Event (or request) context
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Page context
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Conversation context
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Session context
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Business process context
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Application context
+			</para>
+		</listitem>
+	</itemizedlist>
+	<para>
+		You will recognize some of these contexts from servlet and related specifications. However, two of them might be new to you: <emphasis>conversation context</emphasis>, and <emphasis>business process context</emphasis>. One reason state management in web applications is so fragile and error-prone is that the three built-in contexts (request, session and application) are not especially meaningful from the point of view of the business logic. A user login session, for example, is a fairly arbitrary construct in terms of the actual application work flow. Therefore, most Seam components are scoped to the conversation or business process contexts, since they are the contexts which are most meaningful in terms of the application.
+	</para>
+	<para>
+		Let us look at each context in turn.
+	</para>
+	<sect2 id="Seam_Reference_Guide-Seam_contexts-Stateless_context"><title>Stateless context</title>
+	<para>
+		Components which are truly stateless (stateless session beans, primarily) always live in the stateless context (this is really a non-context). Stateless components are not very interesting, and are arguably not very object-oriented. Nevertheless, they are important and often useful.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Seam_contexts-Event_context"><title>Event context</title>
+	<para>
+		The event context is the "narrowest" stateful context, and is a generalization of the notion of the web request context to cover other kinds of events. Nevertheless, the event context associated with the lifecycle of a JSF request is the most important example of an event context, and the one you will work with most often. Components associated with the event context are destroyed at the end of the request, but their state is available and well-defined for at least the lifecycle of the request.
+	</para>
+	<para>
+		When you invoke a Seam component via RMI, or Seam Remoting, the event context is created and destroyed just for the invocation.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Seam_contexts-Page_context"><title>Page context</title>
+	<para>
+		The page context allows you to associate state with a particular instance of a rendered page. You can initialize state in your event listener, or while actually rendering the page, and then have access to it from any event that originates from that page. This is especially useful for functionality like clickable lists, where the list is backed by changing data on the server side. The state is actually serialized to the client, so this construct is extremely robust with respect to multi-window operation and the back button.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Seam_contexts-Conversation_context"><title>Conversation context</title>
+	<para>
+		The conversation context is a truly central concept in Seam. A <emphasis>conversation</emphasis> is a unit of work from the point of view of the user. It might span several interactions with the user, several requests, and several database transactions. But to the user, a conversation solves a single problem. For example, <emphasis>book hotel</emphasis>, <emphasis>approve contract</emphasis>, <emphasis>create order</emphasis> are all conversations. You might like to think of a conversation implementing a single <emphasis>use case</emphasis> or <emphasis>user story</emphasis>, but the relationship is not necessarily quite exact.
+	</para>
+	<para>
+		A conversation holds state associated with <emphasis>what the user is doing now, in this window</emphasis>. A single user may have multiple conversations in progress at any point in time, usually in multiple windows. The conversation context allows us to ensure that state from the different conversations does not collide and cause bugs.
+	</para>
+	<!-- 	<para>
+		It might take you some time to get used to thinking of applications in terms of conversations. But once you get used to it, we think you will love the notion, and never be able to not think in terms of conversations again!
+	</para>  -->
+	<para>
+		Some conversations last for just a single request. Conversations that span multiple requests must be demarcated using annotations provided by Seam.
+	</para>
+	<para>
+		Some conversations are also <emphasis>tasks</emphasis>. A task is a conversation that is significant in terms of a long-running business process, and has the potential to trigger a business process state transition when it is successfully completed. Seam provides a special set of annotations for task demarcation.
+	</para>
+	<para>
+		Conversations may be <emphasis>nested</emphasis>, with one conversation taking place "inside" a wider conversation. This is an advanced feature.
+	</para>
+	<para>
+		Usually, conversation state is actually held by Seam in the servlet session between requests. Seam implements configurable <emphasis>conversation timeout</emphasis>, automatically destroying inactive conversations, and thus ensuring that the state held by a single user login session does not grow without bound if the user abandons conversations.
+	</para>
+	<para>
+		Seam serializes processing of concurrent requests that take place in the same long-running conversation context, in the same process.
+	</para>
+	<para>
+		Alternatively, Seam may be configured to keep conversational state in the client browser.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Seam_contexts-Session_context"><title>Session context</title>
+	<para>
+		A session context holds state associated with the user login session. While there are some cases where it is useful to share state between several conversations, we generally frown on the use of session context for holding components other than global information about the logged in user.
+	</para>
+	<para>
+		In a JSR-168 portal environment, the session context represents the portlet session.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Seam_contexts-Business_process_context"><title>Business process context</title>
+	<para>
+		The business process context holds state associated with the long running business process. This state is managed and made persistent by the BPM engine (JBoss jBPM). The business process spans multiple interactions with multiple users, so this state is shared between multiple users, but in a well-defined manner. The current task determines the current business process instance, and the lifecycle of the business process is defined externally using a <emphasis>process definition language</emphasis>, so there are no special annotations for business process demarcation.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Seam_contexts-Application_context"><title>Application context</title>
+	<para>
+		The application context is the familiar servlet context from the servlet spec. Application context is mainly useful for holding static information such as configuration data, reference data or metamodels. For example, Seam stores its own configuration and metamodel in the application context.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Seam_contexts-Context_variables"><title>Context variables</title>
+	<para>
+		A context defines a namespace, a set of <emphasis>context variables</emphasis>. These work much the same as session or request attributes in the servlet spec. You may bind any value you like to a context variable, but usually we bind Seam component instances to context variables.
+	</para>
+	<para>
+		So, within a context, a component instance is identified by the context variable name (this is usually, but not always, the same as the component name). You may programatically access a named component instance in a particular scope via the <literal>Contexts</literal> class, which provides access to several thread-bound instances of the <literal>Context</literal> interface:
+	</para>
+	
+<programlisting>User user = (User) Contexts.getSessionContext().get("user");
+</programlisting>
+	<para>
+		You may also set or change the value associated with a name:
+	</para>
+	
+<programlisting>Contexts.getSessionContext().set("user", user);
+</programlisting>
+	<para>
+		Usually, however, we obtain components from a context via injection, and put component instances into a context via outjection.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Seam_contexts-Context_search_priority"><title>Context search priority</title>
+	<para>
+		Sometimes, as above, component instances are obtained from a particular known scope. Other times, all stateful scopes are searched, in <emphasis>priority order</emphasis>. The order is as follows:
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				Event context
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Page context
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Conversation context
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Session context
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Business process context
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Application context
+			</para>
+		</listitem>
+	</itemizedlist>
+	<para>
+		You can perform a priority search by calling <literal>Contexts.lookupInStatefulContexts()</literal>. Whenever you access a component by name from a JSF page, a priority search occurs.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Seam_contexts-Concurrency_model"><title>Concurrency model</title>
+	<para>
+		Neither the servlet nor EJB specifications define any facilities for managing concurrent requests originating from the same client. The servlet container simply lets all threads run concurrently and leaves enforcing threadsafeness to application code. The EJB container allows stateless components to be accessed concurrently, and throws an exception if multiple threads access a stateful session bean.
+	</para>
+	<para>
+		This behavior might have been okay in old-style web applications which were based around fine-grained, synchronous requests. But for modern applications which make heavy use of many fine-grained, asynchronous (AJAX) requests, concurrency is a fact of life, and must be supported by the programming model. Seam weaves a concurrency management layer into its context model.
+	</para>
+	<para>
+		The Seam session and application contexts are multithreaded. Seam will allow concurrent requests in a context to be processed concurrently. The event and page contexts are by nature single threaded. The business process context is strictly speaking multi-threaded, but in practice concurrency is sufficiently rare that this fact may be disregarded most of the time. Finally, Seam enforces a <emphasis>single thread per conversation per process</emphasis> model for the conversation context by serializing concurrent requests in the same long-running conversation context.
+	</para>
+	<para>
+		Since the session context is multithreaded, and often contains volatile state, session scope components are always protected by Seam from concurrent access. Seam serializes requests to session scope session beans and JavaBeans by default (and detects and breaks any deadlocks that occur). This is not the default behaviour for application scoped components however, since application scoped components do not usually hold volatile state and because synchronization at the global level is <emphasis>extremely</emphasis> expensive. However, you can force a serialized threading model on any session bean or JavaBean component by adding the <literal>@Synchronized</literal> annotation.
+	</para>
+	<para>
+		This concurrency model means that AJAX clients can safely use volatile session and conversational state, without the need for any special work on the part of the developer.
+	</para>
+	</sect2></sect1><sect1 id="Seam_Reference_Guide-The_contextual_component_model-Seam_components"><title>Seam components</title>
+	<para>
+		Seam components are POJOs (Plain Old Java Objects). In particular, they are JavaBeans or EJB 3.0 enterprise beans. While Seam does not require that components be EJBs and can even be used without an EJB 3.0 compliant container, Seam was designed with EJB 3.0 in mind and includes deep integration with EJB 3.0. Seam supports the following <emphasis>component types</emphasis>.
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				EJB 3.0 stateless session beans
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				EJB 3.0 stateful session beans
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				EJB 3.0 entity beans
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				JavaBeans
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				EJB 3.0 message-driven beans
+			</para>
+		</listitem>
+	</itemizedlist>
+	<sect2 id="Seam_Reference_Guide-Seam_components-Stateless_session_beans"><title>Stateless session beans</title>
+	<para>
+		Stateless session bean components are not able to hold state across multiple invocations. Therefore, they usually work by operating upon the state of other components in the various Seam contexts. They may be used as JSF action listeners, but cannot provide properties to JSF components for display.
+	</para>
+	<para>
+		Stateless session beans always live in the stateless context.
+	</para>
+	<para>
+		Stateless session beans are the least interesting kind of Seam component.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Seam_components-Stateful_session_beans"><title>Stateful session beans</title>
+	<para>
+		Stateful session bean components are able to hold state not only across multiple invocations of the bean, but also across multiple requests. Application state that does not belong in the database should usually be held by stateful session beans. This is a major difference between Seam and many other web application frameworks. Instead of sticking information about the current conversation directly in the <literal>HttpSession</literal>, you should keep it in instance variables of a stateful session bean that is bound to the conversation context. This allows Seam to manage the lifecycle of this state for you, and ensure that there are no collisions between state relating to different concurrent conversations.
+	</para>
+	<para>
+		Stateful session beans are often used as JSF action listener, and as backing beans that provide properties to JSF components for display or form submission.
+	</para>
+	<para>
+		By default, stateful session beans are bound to the conversation context. They may never be bound to the page or stateless contexts.
+	</para>
+	<para>
+		Concurrent requests to session-scoped stateful session beans are always serialized by Seam.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Seam_components-Entity_beans"><title>Entity beans</title>
+	<para>
+		Entity beans may be bound to a context variable and function as a seam component. Because entities have a persistent identity in addition to their contextual identity, entity instances are usually bound explicitly in Java code, rather than being instantiated implicitly by Seam.
+	</para>
+	<para>
+		Entity bean components do not support bijection or context demarcation. Nor does invocation of an entity bean trigger validation.
+	</para>
+	<para>
+		Entity beans are not usually used as JSF action listeners, but do often function as backing beans that provide properties to JSF components for display or form submission. In particular, it is common to use an entity as a backing bean, together with a stateless session bean action listener to implement create/update/delete type functionality.
+	</para>
+	<para>
+		By default, entity beans are bound to the conversation context. They may never be bound to the stateless context.
+	</para>
+	<para>
+		Note that it in a clustered environment is somewhat less efficient to bind an entity bean directly to a conversation or session scoped Seam context variable than it would be to hold a reference to the entity bean in a stateful session bean. For this reason, not all Seam applications define entity beans to be Seam components.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Seam_components-JavaBeans"><title>JavaBeans</title>
+	<para>
+		Javabeans may be used just like a stateless or stateful session bean. However, they do not provide the functionality of a session bean (declarative transaction demarcation, declarative security, efficient clustered state replication, EJB 3.0 persistence, timeout methods, etc).
+	</para>
+	<para>
+		In a later chapter, we show you how to use Seam and Hibernate without an EJB container. In this use case, components are JavaBeans instead of session beans. Note, however, that in many application servers it is somewhat less efficient to cluster conversation or session scoped Seam JavaBean components than it is to cluster stateful session bean components.
+	</para>
+	<para>
+		By default, JavaBeans are bound to the event context.
+	</para>
+	<para>
+		Concurrent requests to session-scoped JavaBeans are always serialized by Seam.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Seam_components-Message_driven_beans"><title>Message-driven beans</title>
+	<para>
+		Message-driven beans may function as a seam component. However, message-driven beans are called quite differently to other Seam components - instead of invoking them via the context variable, they listen for messages sent to a JMS queue or topic.
+	</para>
+	<para>
+		Message-driven beans may not be bound to a Seam context. Nor do they have access to the session or conversation state of their "caller". However, they do support bijection and some other Seam functionality.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Seam_components-Interception"><title>Interception</title>
+	<para>
+		In order to perform its magic (bijection, context demarcation, validation, etc), Seam must intercept component invocations. For JavaBeans, Seam is in full control of instantiation of the component, and no special configuration is needed. For entity beans, interception is not required since bijection and context demarcation are not defined. For session beans, we must register an EJB interceptor for the session bean component. We could use an annotation, as follows:
+	</para>
+	
+<programlisting>@Stateless
+ at Interceptors(SeamInterceptor.class)
+public class LoginAction implements Login { 
+    ... 
+}
+</programlisting>
+	<para>
+		But a much better way is to define the interceptor in <literal>ejb-jar.xml</literal>.
+	</para>
+	
+<programlisting>&lt;interceptors&gt;
+   &lt;interceptor&gt;
+      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/interceptor-class&gt;
+   &lt;/interceptor&gt;
+&lt;/interceptors&gt;
+   
+&lt;assembly-descriptor&gt;
+   &lt;interceptor-binding&gt;
+      &lt;ejb-name&gt;*&lt;/ejb-name&gt;
+      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/interceptor-class&gt;
+   &lt;/interceptor-binding&gt;
+&lt;/assembly-descriptor&gt;
+</programlisting>
+	</sect2><sect2 id="Seam_Reference_Guide-Seam_components-Component_names"><title>Component names</title>
+	<para>
+		All seam components need a name. We can assign a name to a component using the <literal>@Name</literal> annotation:
+	</para>
+	
+<programlisting>@Name("loginAction")
+ at Stateless
+public class LoginAction implements Login { 
+    ... 
+}
+</programlisting>
+	<para>
+		This name is the <emphasis>seam component name</emphasis> and is not related to any other name defined by the EJB specification. However, seam component names work just like JSF managed bean names and you can think of the two concepts as identical.
+	</para>
+	<para>
+		<literal>@Name</literal> is not the only way to define a component name, but we always need to specify the name <emphasis>somewhere</emphasis>. If we do not, then none of the other Seam annotations will function.
+	</para>
+	<para>
+		Just like in JSF, a seam component instance is usually bound to a context variable with the same name as the component name. So, for example, we would access the <literal>LoginAction</literal> using <literal>Contexts.getStatelessContext().get("loginAction")</literal>. In particular, whenever Seam itself instantiates a component, it binds the new instance to a variable with the component name. However, again like JSF, it is possible for the application to bind a component to some other context variable by programmatic API call. This is only useful if a particular component serves more than one role in the system. For example, the currently logged in <literal>User</literal> might be bound to the <literal>currentUser</literal> session context variable, while a <literal>User</literal> that is the subject of some administration functionality might be bound to the <literal>user</literal> conversation context variable.
+	</para>
+	<para>
+		For very large applications, and for built-in seam components, qualified names are often used.
+	</para>
+	
+<programlisting>@Name("com.jboss.myapp.loginAction")
+ at Stateless
+ at Interceptors(SeamInterceptor.class)
+public class LoginAction implements Login { 
+    ... 
+}
+</programlisting>
+	<para>
+		We may use the qualified component name both in Java code and in JSF's expression language:
+	</para>
+	
+<programlisting>&lt;h:commandButton type="submit" value="Login"
+                 action="#{com.jboss.myapp.loginAction.login}"/&gt;
+</programlisting>
+	<para>
+		Since this is noisy, Seam also provides a means of aliasing a qualified name to a simple name. Add a line like this to the <literal>components.xml</literal> file:
+	</para>
+	
+<programlisting>&lt;factory name="loginAction" scope="STATELESS" value="#{com.jboss.myapp.loginAction}"/&gt;
+</programlisting>
+	<para>
+		All of the built-in Seam components have qualified names, but most of them are aliased to a simple name by the <literal>components.xml</literal> file included in the Seam jar.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Seam_components-Defining_the_component_scope"><title>Defining the component scope</title>
+	<para>
+		We can override the default scope (context) of a component using the <literal>@Scope</literal> annotation. This lets us define what context a component instance is bound to, when it is instantiated by Seam.
+	</para>
+	
+<programlisting>@Name("user")
+ at Entity
+ at Scope(SESSION)
+public class User { 
+    ... 
+}
+</programlisting>
+	<para>
+		<literal>org.jboss.seam.ScopeType</literal> defines an enumeration of possible scopes.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Seam_components-Components_with_multiple_roles"><title>Components with multiple roles</title>
+	<para>
+		Some Seam component classes can fulfill more than one role in the system. For example, we often have a <literal>User</literal> class which is usually used as a session-scoped component representing the current user but is used in user administration screens as a conversation-scoped component. The <literal>@Role</literal> annotation lets us define an additional named role for a component, with a different scope; it lets us bind the same component class to different context variables. (Any Seam component <emphasis>instance</emphasis> may be bound to multiple context variables, but this lets us do it at the class level, and take advantage of auto-instantiation.)
+	</para>
+	
+<programlisting>@Name("user")
+ at Entity
+ at Scope(CONVERSATION)
+ at Role(name="currentUser", scope=SESSION)
+public class User { 
+    ... 
+}
+</programlisting>
+	<para>
+		The <literal>@Roles</literal> annotation lets us specify as many additional roles as we like.
+	</para>
+	
+<programlisting>@Name("user")
+ at Entity
+ at Scope(CONVERSATION)
+ at Roles({@Role(name="currentUser", scope=SESSION)
+        @Role(name="tempUser", scope=EVENT)})
+public class User { 
+    ... 
+}
+</programlisting>
+	</sect2><sect2 id="Seam_Reference_Guide-Seam_components-Built_in_components"><title>Built-in components</title>
+	<para>
+		Like many good frameworks, Seam eats its own dogfood and is implemented mostly as a set of built-in Seam interceptors (see later) and Seam components. This makes it easy for applications to interact with built-in components at runtime or even customize the basic functionality of Seam by replacing the built-in components with custom implementations. The built-in components are defined in the Seam namespace <literal>org.jboss.seam.core</literal> and the Java package of the same name.
+	</para>
+	<para>
+		The built-in components may be injected, just like any Seam components, but they also provide convenient static <literal>instance()</literal> methods:
+	</para>
+	
+<programlisting>FacesMessages.instance().add("Welcome back, #{user.name}!");
+</programlisting>
+	<para>
+		Seam was designed to integrate tightly in a Java EE 5 environment. However, we understand that there are many projects which are not running in a full EE environment. We also realize the critical importance of easy unit and integration testing using frameworks such as TestNG and JUnit. So, we have made it easy to run Seam in Java SE environments by allowing you to boostrap certain critical infrastructure normally only found in EE environments by installing built-in Seam components.
+	</para>
+	<para>
+		For example, you can run your EJB3 components in Tomcat or an integration test suite just by installing the built-in component <literal>org.jboss.seam.core.ejb</literal>, which automatically bootstraps the JBoss Embeddable EJB3 container and deploys your EJB components.
+	</para>
+	<para>
+		Or, if you are not quite ready for the Brave New World of EJB 3.0, you can write a Seam application that uses only JavaBean components, together with Hibernate3 for persistence, by installing a built-in component that manages a Hibernate <literal>SessionFactory</literal>. When using Hibernate outside of a J2EE environment, you will also probably need a JTA transaction manager and JNDI server, which are available via the built-in component <literal>org.jboss.seam.core.microcontainer</literal>. This lets you use the bulletproof JTA/JCA pooling datasource from JBoss application server in an SE environment like Tomcat.
+	</para>
+	</sect2></sect1><sect1 id="Seam_Reference_Guide-The_contextual_component_model-Bijection"><title>Bijection</title>
+	<para>
+		<emphasis>Dependency injection</emphasis> or <emphasis>inversion of control</emphasis> is by now a familiar concept to most Java developers. Dependency injection allows a component to obtain a reference to another component by having the container <emphasis>inject</emphasis> the other component to a setter method or instance variable. In all dependency injection implementations that we have seen, injection occurs when the component is constructed, and the reference does not subsequently change for the lifetime of the component instance. For stateless components, this is reasonable. From the point of view of a client, all instances of a particular stateless component are interchangeable. On the other hand, Seam emphasizes the use of stateful components. So traditional dependency injection is no longer a very useful construct. Seam introduces the notion of <emphasis>bijection</emphasis> as a generalization of injection. In contrast to injection, bijection is:
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				<emphasis>contextual</emphasis> - bijection is used to assemble stateful components from various different contexts (a component from a <emphasis>wider</emphasis> context may even have a reference to a component from a <emphasis>narrower</emphasis> context)
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<emphasis>bidirectional</emphasis> - values are injected from context variables into attributes of the component being invoked, and also <emphasis>outjected</emphasis> from the component attributes back out to the context, allowing the component being invoked to manipulate the values of contextual variables simply by setting its own instance variables
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<emphasis>dynamic</emphasis> - since the value of contextual variables changes over time, and since Seam components are stateful, bijection takes place every time a component is invoked
+			</para>
+		</listitem>
+	</itemizedlist>
+	<para>
+		In essence, bijection lets you alias a context variable to a component instance variable, by specifying that the value of the instance variable is injected, outjected, or both. Of course, we use annotations to enable bijection.
+	</para>
+	<para>
+		The <literal>@In</literal> annotation specifies that a value should be injected, either into an instance variable:
+	</para>
+	
+<programlisting>@Name("loginAction")
+ at Stateless
+ at Interceptors(SeamInterceptor.class)
+public class LoginAction implements Login { 
+    @In User user;
+    ... 
+}
+</programlisting>
+	<para>
+		or into a setter method:
+	</para>
+	
+<programlisting>@Name("loginAction")
+ at Stateless
+ at Interceptors(SeamInterceptor.class)
+public class LoginAction implements Login { 
+    User user;
+    
+    @In
+    public void setUser(User user) {
+        this.user=user;
+    }
+    
+    ... 
+}
+</programlisting>
+	<para>
+		By default, Seam will do a priority search of all contexts, using the name of the property or instance variable that is being injected. You may wish to specify the context variable name explicitly, using, for example, <literal>@In("currentUser")</literal>.
+	</para>
+	<para>
+		If you want Seam to create an instance of the component when there is no existing component instance bound to the named context variable, you should specify <literal>@In(create=true)</literal>. If the value is optional (it can be null), specify <literal>@In(required=false)</literal>.
+	</para>
+	<para>
+		For some components, it can be repetitive to have to specify <literal>@In(create=true)</literal> everywhere they are used. In such cases, you can annotate the component <literal>@AutoCreate</literal>, and then it will always be created, whenever needed, even without the explicit use of <literal>create=true</literal>.
+	</para>
+	<para>
+		You can even inject the value of an expression:
+	</para>
+	
+<programlisting>@Name("loginAction")
+ at Stateless
+ at Interceptors(SeamInterceptor.class)
+public class LoginAction implements Login { 
+    @In("#{user.username}") String username;
+    ... 
+}
+</programlisting>
+	<para>
+		(There is much more information about component lifecycle and injection in the next chapter.)
+	</para>
+	<para>
+		The <literal>@Out</literal> annotation specifies that an attribute should be outjected, either from an instance variable:
+	</para>
+	
+<programlisting>@Name("loginAction")
+ at Stateless
+ at Interceptors(SeamInterceptor.class)
+public class LoginAction implements Login { 
+    @Out User user;
+    ... 
+}
+</programlisting>
+	<para>
+		or from a getter method:
+	</para>
+	
+<programlisting>@Name("loginAction")
+ at Stateless
+ at Interceptors(SeamInterceptor.class)
+public class LoginAction implements Login { 
+    User user;
+    
+    @Out
+    public User getUser() {
+        return user;
+    }
+    
+    ... 
+}
+</programlisting>
+	<para>
+		An attribute may be both injected and outjected:
+	</para>
+	
+<programlisting>@Name("loginAction")
+ at Stateless
+ at Interceptors(SeamInterceptor.class)
+public class LoginAction implements Login { 
+    @In @Out User user;
+    ... 
+}
+</programlisting>
+	<para>
+		or:
+	</para>
+	
+<programlisting>@Name("loginAction")
+ at Stateless
+ at Interceptors(SeamInterceptor.class)
+public class LoginAction implements Login { 
+    User user;
+    
+    @In
+    public void setUser(User user) {
+        this.user=user;
+    }
+    
+    @Out
+    public User getUser() {
+        return user;
+    }
+    
+    ... 
+}
+</programlisting>
+	</sect1><sect1 id="Seam_Reference_Guide-The_contextual_component_model-Lifecycle_methods"><title>Lifecycle methods</title>
+	<para>
+		Session bean and entity bean Seam components support all the usual EJB 3.0 lifecycle callback (<literal>@PostConstruct</literal>, <literal>@PreDestroy</literal>, etc). Seam extends all of these callbacks except <literal>@PreDestroy</literal> to JavaBean components. But Seam also defines its own component lifecycle callbacks.
+	</para>
+	<para>
+		The <literal>@Create</literal> method is called every time Seam instantiates a component. Unlike the <literal>@PostConstruct</literal> method, this method is called after the component is fully constructed by the EJB container, and has access to all the usual Seam functionality (bijection, etc). Components may define only one <literal>@Create</literal> method.
+	</para>
+	<para>
+		The <literal>@Destroy</literal> method is called when the context that the Seam component is bound to ends. Components may define only one <literal>@Destroy</literal> method. Stateful session bean components <emphasis>must</emphasis> define a method annotated <literal>@Destroy @Remove</literal>.
+	</para>
+	<para>
+		Finally, a related annotation is the <literal>@Startup</literal> annotation, which may be applied to any application or session scoped component. The <literal>@Startup</literal> annotation tells Seam to instantiate the component immediately, when the context begins, instead of waiting until it is first referenced by a client. It is possible to control the order of instantiation of startup components by specifying <literal>@Startup(depends={....})</literal>.
+	</para>
+	</sect1><sect1 id="Seam_Reference_Guide-The_contextual_component_model-Conditional_installation"><title>Conditional installation</title>
+	<para>
+		The <literal>@Install</literal> annotation lets you control conditional installation of components that are required in some deployment scenarios and not in others. This is useful if:
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				You want to mock out some infrastructural component in tests.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				You want change the implementation of a component in certain deployment scenarios.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				You want to install some components only if their dependencies are available (useful for framework authors).
+			</para>
+		</listitem>
+	</itemizedlist>
+	<para>
+		<literal>@Install</literal> works by letting you specify <emphasis>precedence</emphasis> and <emphasis>dependencies</emphasis>.
+	</para>
+	<para>
+		The precedence of a component is a number that Seam uses to decide which component to install when there are multiple classes with the same component name in the classpath. Seam will choose the component with the higher precendence. There are some predefined precedence values (in ascending order):
+	</para>
+	<orderedlist>
+		<listitem>
+			<para>
+				<literal>BUILT_IN</literal> &mdash; the lowest precedece components are the components built in to Seam.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>FRAMEWORK</literal> &mdash; components defined by third-party frameworks may override built-in components, but are overridden by application components.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>APPLICATION</literal> &mdash; the default precedence. This is appropriate for most application components.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>DEPLOYMENT</literal> &mdash; for application components which are deployment-specific.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>MOCK</literal> &mdash; for mock objects used in testing.
+			</para>
+		</listitem>
+	</orderedlist>
+	<para>
+		Suppose we have a component named <literal>messageSender</literal> that talks to a JMS queue.
+	</para>
+	
+<programlisting>@Name("messageSender") 
+public class MessageSender {
+    public void sendMessage() {
+        //do something with JMS
+    }
+}
+</programlisting>
+	<para>
+		In our unit tests, we don not have a JMS queue available, so we would like to stub out this method. We will create a <emphasis>mock</emphasis> component that exists in the classpath when unit tests are running, but is never deployed with the application:
+	</para>
+	
+<programlisting>@Name("messageSender") 
+ at Install(precedence=MOCK)
+public class MockMessageSender extends MessageSender {
+    public void sendMessage() {
+        //do nothing!
+    }
+}
+</programlisting>
+	<para>
+		The <literal>precedence</literal> helps Seam decide which version to use when it finds both components in the classpath.
+	</para>
+	<para>
+		If we are able to control exactly which classes are in the classpath then this will work well, however if you are writing reusable framwork with many dependecies you will not wish to break that framework across numerious jars. You will wish to decide which components to install depending upon what other components are installed, and upon what classes are available in the classpath. The <literal>@Install</literal> annotation also controls this functionality. Seam uses this mechanism internally to enable conditional installation of many of the built-in components. However, you probably will not need to use it in your application.
+	</para>
+	</sect1><sect1 id="Seam_Reference_Guide-The_contextual_component_model-Logging"><title>Logging</title>
+	<para>
+		Below is the code for a simple log message in Java:
+	</para>
+	
+<programlisting>private static final Log log = LogFactory.getLog(CreateOrderAction.class);
+        
+public Order createOrder(User user, Product product, int quantity) {
+    if ( log.isDebugEnabled() ) {
+        log.debug("Creating new order for user: " + user.username() + 
+            " product: " + product.name() 
+            + " quantity: " + quantity);
+    }
+    return new Order(user, product, quantity);
+}
+</programlisting>
+	<!-- 	<para>
+		It is difficult to imagine how the code for a simple log message could possibly be more verbose. There is more lines of code tied up in logging than in the actual business logic! I remain totally astonished that the Java community has not come up with anything better in 10 years.
+	</para>  -->
+	<para>
+		Seam provides a logging API that simplifies this code significantly:
+	</para>
+	
+<programlisting>@Logger private Log log;
+        
+public Order createOrder(User user, Product product, int quantity) {
+    log.debug("Creating new order for user: #0 product: #1 quantity: #2", user.username(), 
+      product.name(), quantity);
+    return new Order(user, product, quantity);
+}
+</programlisting>
+	<para>
+		It does not matter if you declare the <literal>log</literal> variable static or not; it will work either way, except for entity bean components which require the <literal>log</literal> variable to be static.
+	</para>
+	<note>
+		<para>
+			We do not need the <literal>if ( log.isDebugEnabled() )</literal> guard, since string concatenation happens <emphasis>inside</emphasis> the <literal>debug()</literal> method. Also the log category does not need to be specified explicitly, since Seam knows what component it is injecting the <literal>Log</literal> into.
+		</para>
+	</note>
+	<para>
+		If <literal>User</literal> and <literal>Product</literal> are Seam components available in the current contexts, it gets even better:
+	</para>
+	
+<programlisting>@Logger private Log log;
+        
+public Order createOrder(User user, Product product, int quantity) {
+    log.debug("Creating new order for user: #{user.username} product: #{product.name} 
+      quantity: #0", quantity);
+    return new Order(user, product, quantity);
+}
+</programlisting>
+	<para>
+		Seam logging automagically chooses whether to send output to log4j or JDK logging. If log4j is in the classpath, Seam with use it. If it is not, Seam will use JDK logging.
+	</para>
+	</sect1><sect1 id="Seam_Reference_Guide-The_contextual_component_model-The_Mutable_interface_and_ReadOnly"><title>The <literal>Mutable</literal> interface and <literal>@ReadOnly</literal></title>
+	<para>
+		Many application servers feature an amazingly broken implementation of <literal>HttpSession</literal> clustering, where changes to the state of mutable objects bound to the session are only replicated when the application calls <literal>setAttribute()</literal> explicitly. This is a source of bugs that can not effectively be tested for at development time, since they will only manifest when failover occurs. Furthermore, the actual replication message contains the entire serialized object graph bound to the session attribute, which is inefficient.
+	</para>
+	<para>
+		Of course, EJB stateful session beans must perform automatic dirty checking and replication of mutable state and a sophisticated EJB container can introduce optimizations such as attribute-level replication. Unfortunately, not all Seam users have the good fortune to be working in an environment that supports EJB 3.0. So, for session and conversation scoped JavaBean and entity bean components, Seam provides an extra layer of cluster-safe state management over the top of the web container session clustering.
+	</para>
+	<para>
+		For session or conversation scoped JavaBean components, Seam automatically forces replication to occur by calling <literal>setAttribute()</literal> once in every request that the component was invoked by the application. Of course, this strategy is inefficient for read-mostly components. You can control this behavior by implementing the <literal>org.jboss.seam.core.Mutable</literal> interface, or by extending <literal>org.jboss.seam.core.AbstractMutable</literal>, and writing your own dirty-checking logic inside the component. For example,
+	</para>
+	
+<programlisting>@Name("account")
+public class Account extends AbstractMutable
+{
+    private BigDecimal balance;
+    
+    public void setBalance(BigDecimal balance)
+    {
+        setDirty(this.balance, balance);
+        this.balance = balance;
+    }
+    
+    public BigDecimal getBalance()
+    {
+        return balance;
+    }
+    
+    ...
+    
+}
+</programlisting>
+	<para>
+		Or, you can use the <literal>@ReadOnly</literal> annotation to achieve a similar effect:
+	</para>
+	
+<programlisting>@Name("account")
+public class Account
+{
+    private BigDecimal balance;
+    
+    public void setBalance(BigDecimal balance)
+    {
+        this.balance = balance;
+    }
+    
+    @ReadOnly
+    public BigDecimal getBalance()
+    {
+        return balance;
+    }
+    
+    ...
+    
+}
+</programlisting>
+	<para>
+		For session or conversation scoped entity bean components, Seam automatically forces replication to occur by calling <literal>setAttribute()</literal> once in every request, <emphasis>unless the (conversation-scoped) entity is currently associated with a Seam-managed persistence context, in which case no replication is needed</emphasis>. This strategy is not necessarily efficient, so session or conversation scope entity beans should be used with care. You can always write a stateful session bean or JavaBean component to <emphasis>manage</emphasis> the entity bean instance. For example,
+	</para>
+	
+<programlisting>@Stateful
+ at Name("account")
+public class AccountManager extends AbstractMutable
+{
+    private Account account; // an entity bean
+    
+    @Unwrap
+    public void getAccount()
+    {
+        return account;
+    }
+    
+    ...
+    
+}
+</programlisting>
+	<note>
+		<para>
+			Note that the <literal>EntityHome</literal> class in the Seam Application Framework provides a great example of this pattern.
+		</para>
+	</note>
+	</sect1><sect1 id="Seam_Reference_Guide-The_contextual_component_model-Factory_and_manager_components"><title>Factory and manager components</title>
+	<para>
+		We often need to work with objects that are not Seam components. But we still want to be able to inject them into our components using <literal>@In</literal> and use them in value and method binding expressions, etc. Sometimes, we even need to tie them into the Seam context lifecycle (<literal>@Destroy</literal>, for example). So the Seam contexts can contain objects which are not Seam components, and Seam provides a couple of nice features that make it easier to work with non-component objects bound to contexts.
+	</para>
+	<para>
+		The <emphasis>factory component pattern</emphasis> lets a Seam component act as the instantiator for a non-component object. A <emphasis>factory method</emphasis> will be called when a context variable is referenced but has no value bound to it. We define factory methods using the <literal>@Factory</literal> annotation. The factory method binds a value to the context variable, and determines the scope of the bound value. There are two styles of factory method. The first style returns a value, which is bound to the context by Seam:
+	</para>
+	
+<programlisting>@Factory(scope=CONVERSATION)
+public List&lt;Customer&gt; getCustomerList() { 
+    return ... ;
+}
+</programlisting>
+	<para>
+		The second style is a method of type <literal>void</literal> which binds the value to the context variable itself:
+	</para>
+	
+<programlisting>@DataModel List&lt;Customer&gt; customerList;
+
+ at Factory("customerList")
+public void initCustomerList() { 
+    customerList = ...  ;
+}
+</programlisting>
+	<para>
+		In both cases, the factory method is called when we reference the <literal>customerList</literal> context variable and its value is null, and then has no further part to play in the lifecycle of the value. An even more powerful pattern is the <emphasis>manager component pattern</emphasis>. In this case, we have a Seam component that is bound to a context variable, that manages the value of the context variable, while remaining invisible to clients.
+	</para>
+	<para>
+		A manager component is any component with an <literal>@Unwrap</literal> method. This method returns the value that will be visable to clients, and is called <emphasis>every time</emphasis> a context variable is referenced.
+	</para>
+	
+<programlisting>@Name("customerList")
+ at Scope(CONVERSATION)
+public class CustomerListManager
+{
+    ...
+    
+    @Unwrap
+    public List&lt;Customer&gt; getCustomerList() { 
+        return ... ;
+    }
+}
+</programlisting>
+	<para>
+		This pattern is especially useful if we have some heavyweight object that needs a cleanup operation when the context ends. In this case, the manager component may perform cleanup in the <literal>@Destroy</literal> method.
+	</para>
+	</sect1>
+</chapter>
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Configuration.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Configuration.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Configuration.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,839 @@
+<?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" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Seam_Reference_Guide_CP07.ent">
+%BOOK_ENTITIES;
+]>
+<chapter id="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications" lang="en-US">
+	<title>Configuring Seam and packaging Seam applications</title>
+	<para>
+		Configuration is a very boring topic and an extremely tedious pastime. Unfortunately, several lines of XML are required to integrate Seam into your JSF implementation and servlet container. There is no need to be too put off by the following sections; you will never need to type any of this stuff yourself, since you can just copy and paste from the example applications.
+	</para>
+	<sect1 id="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Basic_Seam_configuration"><title>Basic Seam configuration</title>
+	<para>
+		First, let us look at the basic configuration that is needed whenever we use Seam with JSF.
+	</para>
+	<sect2 id="Seam_Reference_Guide-Basic_Seam_configuration-Integrating_Seam_with_JSF_and_your_servlet_container"><title>Integrating Seam with JSF and your servlet container</title>
+	<para>
+		Seam requires the following entry in your <literal>web.xml</literal> file:
+	</para>
+	
+<programlisting>&lt;listener&gt;
+    &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/listener-class&gt;
+&lt;/listener&gt;
+</programlisting>
+	<para>
+		This listener is responsible for bootstrapping Seam, and for destroying session and application contexts.
+	</para>
+	<para>
+		To integrate with the JSF request lifecycle, we also need a JSF <literal>PhaseListener</literal> registered in in the <literal>faces-config.xml</literal> file:
+	</para>
+	
+<programlisting>&lt;lifecycle&gt;
+    &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-listener&gt;
+&lt;/lifecycle&gt;
+</programlisting>
+	<para>
+		The actual listener class here varies depending upon how you want to manage transaction demarcation (more on this below).
+	</para>
+	<para>
+		If you are using Sun's JSF 1.2 reference implementation, you should also add this to <literal>faces-config.xml</literal>:
+	</para>
+	
+<programlisting>&lt;application&gt;
+    &lt;el-resolver&gt;org.jboss.seam.jsf.SeamELResolver&lt;/el-resolver&gt;
+&lt;/application&gt;
+</programlisting>
+	<para>
+		(This line should not strictly speaking be necessary, but it works around a minor bug in the RI.)
+	</para>
+	<para>
+		Some JSF implementations have a broken implementation of server-side state saving that interferes with Seam's conversation propagation. If you have problems with conversation propagation during form submissions, try switching to client-side state saving. You will need this in <literal>web.xml</literal>:
+	</para>
+	
+<programlisting>&lt;context-param&gt;
+    &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-name&gt;
+    &lt;param-value&gt;client&lt;/param-value&gt;
+&lt;/context-param&gt;
+</programlisting>
+	</sect2><sect2 id="Seam_Reference_Guide-Basic_Seam_configuration-Seam_Resource_Servlet"><title>Seam Resource Servlet</title>
+	<para>
+		The Seam Resource Servlet provides resources used by Seam Remoting, captchas (see the security chapter) and some JSF UI controls. Configuring the Seam Resource Servlet requires the following entry in <literal>web.xml</literal>:
+	</para>
+	
+<programlisting>&lt;servlet&gt;
+  &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;
+  &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-class&gt;
+&lt;/servlet&gt;
+    
+&lt;servlet-mapping&gt;
+  &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;
+  &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;
+&lt;/servlet-mapping&gt;
+</programlisting>
+	</sect2><sect2 id="Seam_Reference_Guide-Basic_Seam_configuration-Seam_servlet_filters"><title>Seam servlet filters</title>
+	<para>
+		Seam does not need any servlet filters for basic operation. However, there are several features which depend upon the use of filters. To make things easier for you guys, Seam lets you add and configure servlet filters just like you would configure other built-in Seam components. To take advantage of this feature, we must first install a master filter in <literal>web.xml</literal>:
+	</para>
+	
+<programlisting>&lt;filter&gt;
+    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;
+    &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-class&gt;
+&lt;/filter&gt;
+
+&lt;filter-mapping&gt;
+    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;
+    &lt;url-pattern&gt;/*&lt;/url-pattern&gt;
+&lt;/filter-mapping&gt;
+</programlisting>
+	<para>
+		Adding the master filter enables the following built-in filters.
+	</para>
+	<sect3 id="Seam_Reference_Guide-Seam_servlet_filters-Exception_handling"><title>Exception handling</title>
+	<para>
+		This filter provides the exception mapping functionality in <literal>pages.xml</literal> (almost all applications will need this). It also takes care of rolling back uncommitted transactions when uncaught exceptions occur. (According to the Java EE specification, the web container should do this automatically, but we have found that this behavior cannot be relied upon in all application servers. And it is certainly not required of plain servlet engines like Tomcat.)
+	</para>
+	<para>
+		By default, the exception handling filter will process all requests, however this behavior may be adjusted by adding a <literal>&lt;web:exception-filter&gt;</literal> entry to <literal>components.xml</literal>, as shown in this example:
+	</para>
+	
+<programlisting>&lt;components xmlns="http://jboss.com/products/seam/components"
+            xmlns:core="http://jboss.com/products/seam/core"
+            xmlns:web="http://jboss.com/products/seam/web"
+            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+            xsi:schemaLocation=
+                "http://jboss.com/products/seam/core 
+                                                      http://jboss.com/products/seam/core-1.2.xsd
+                 http://jboss.com/products/seam/components 
+                                                      http://jboss.com/products/seam/components-1.2.xsd
+                 http://jboss.com/products/seam/web 
+                                                      http://jboss.com/products/seam/web-1.2.xsd"&gt;
+
+    &lt;web:exception-filter url-pattern="*.seam"/&gt;
+
+&lt;/components&gt;
+</programlisting>
+	<itemizedlist>
+		<listitem>
+			<para>
+				<literal>url-pattern</literal> &mdash; Used to specify which requests are filtered, the default is all requests.
+			</para>
+		</listitem>
+	</itemizedlist>
+	</sect3><sect3 id="Seam_Reference_Guide-Seam_servlet_filters-Conversation_propagation_with_redirects"><title>Conversation propagation with redirects</title>
+	<para>
+		This filter allows Seam to propagate the conversation context across browser redirects. It intercepts any browser redirects and adds a request parameter that specifies the Seam conversation identifier.
+	</para>
+	<para>
+		The redirect filter will process all requests by default, but this behavior can also be adjusted in <literal>components.xml</literal>:
+	</para>
+	
+<programlisting>&lt;web:redirect-filter url-pattern="*.seam"/&gt;
+</programlisting>
+	<itemizedlist>
+		<listitem>
+			<para>
+				<literal>url-pattern</literal> &mdash; Used to specify which requests are filtered, the default is all requests.
+			</para>
+		</listitem>
+	</itemizedlist>
+	</sect3><sect3 id="Seam_Reference_Guide-Seam_servlet_filters-Multipart_form_submissions"><title>Multipart form submissions</title>
+	<para>
+		This feature is necessary when using the Seam file upload JSF control. It detects multipart form requests and processes them according to the multipart/form-data specification (RFC-2388). To override the default settings, add the following entry to <literal>components.xml</literal>:
+	</para>
+	
+<programlisting>&lt;web:multipart-filter create-temp-files="true" 
+        max-request-size="1000000" 
+        url-pattern="*.seam"/&gt;
+</programlisting>
+	<itemizedlist>
+		<listitem>
+			<para>
+				<literal>create-temp-files</literal> &mdash; If set to <literal>true</literal>, uploaded files are written to a temporary file (instead of held in memory). This may be an important consideration if large file uploads are expected. The default setting is <literal>false</literal>.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>max-request-size</literal> &mdash; If the size of a file upload request (determined by reading the <literal>Content-Length</literal> header in the request) exceeds this value, the request will be aborted. The default setting is 0 (no size limit).
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>url-pattern</literal> &mdash; Used to specify which requests are filtered, the default is all requests.
+			</para>
+		</listitem>
+	</itemizedlist>
+	</sect3><sect3 id="Seam_Reference_Guide-Seam_servlet_filters-Character_encoding"><title>Character encoding</title>
+	<para>
+		Sets the character encoding of submitted form data.
+	</para>
+	<para>
+		This filter is not installed by default and requires an entry in <literal>components.xml</literal> to enable it:
+	</para>
+	
+<programlisting>&lt;web:character-encoding-filter encoding="UTF-16" 
+        override-client="true" 
+        url-pattern="*.seam"/&gt;
+</programlisting>
+	<itemizedlist>
+		<listitem>
+			<para>
+				<literal>encoding</literal> &mdash; The encoding to use.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>override-client</literal> &mdash; If this is set to <literal>true</literal>, the request encoding will be set to whatever is specified by <literal>encoding</literal> no matter whether the request already specifies an encoding or not. If set to <literal>false</literal>, the request encoding will only be set if the request does not already specify an encoding. The default setting is <literal>false</literal>.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>url-pattern</literal> &mdash; Used to specify which requests are filtered, the default is all requests.
+			</para>
+		</listitem>
+	</itemizedlist>
+	</sect3><sect3 id="Seam_Reference_Guide-Seam_servlet_filters-Context_management_for_custom_servlets"><title>Context management for custom servlets</title>
+	<para>
+		Requests sent direct to some servlet other than the JSF servlet are not processed through the JSF lifecycle, so Seam provides a servlet filter that can be applied to any other servlet that needs access to Seam components.
+	</para>
+	<para>
+		This filter allows custom servlets to interact with the Seam contexts. It sets up the Seam contexts at the beginning of each request, and tears them down at the end of the request. You should make sure that this filter is <emphasis>never</emphasis> applied to the JSF <literal>FacesServlet</literal>. Seam uses the phase listener for context management in a JSF request.
+	</para>
+	<para>
+		This filter is not installed by default and requires an entry in <literal>components.xml</literal> to enable it:
+	</para>
+	
+<programlisting>&lt;web:context-filter url-pattern="/media/*"/&gt;
+</programlisting>
+	<itemizedlist>
+		<listitem>
+			<para>
+				<literal>url-pattern</literal> &mdash; Used to specify which requests are filtered, the default is all requests. If the url-pattern is specified for the context filter, then the filter will be enabled (unless explicitly disabled).
+			</para>
+		</listitem>
+	</itemizedlist>
+	<para>
+		The context filter expects to find the conversation id of any conversation context in a request parameter named <literal>conversationId</literal>. You are responsible for ensuring that it gets sent in the request.
+	</para>
+	<para>
+		You are also responsible for ensuring propagation of any new conversation id back to the client. Seam exposes the conversation id as a property of the built in component <literal>conversation</literal>.
+	</para>
+	</sect3></sect2><sect2 id="Seam_Reference_Guide-Basic_Seam_configuration-Integrating_Seam_with_your_EJB_container"><title>Integrating Seam with your EJB container</title>
+	<para>
+		We need to apply the <literal>SeamInterceptor</literal> to our Seam components. The simplest way to do this is to add the following interceptor binding to the <literal>&lt;assembly-descriptor&gt;</literal> in <literal>ejb-jar.xml</literal>:
+	</para>
+	
+<programlisting>&lt;interceptor-binding&gt;
+    &lt;ejb-name&gt;*&lt;/ejb-name&gt;
+    &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/interceptor-class&gt;
+&lt;/interceptor-binding&gt;
+</programlisting>
+	<para>
+		Seam needs to know where to go to find session beans in JNDI. One way to do this is specify the <literal>@JndiName</literal> annotation on every session bean Seam component. However, this is quite tedious. A better approach is to specify a pattern that Seam can use to calculate the JNDI name from the EJB name. Unfortunately, there is no standard mapping to global JNDI defined in the EJB3 specification, so this mapping is vendor-specific. We usually specify this option in <literal>components.xml</literal>.
+	</para>
+	<para>
+		For JBoss AS, the following pattern is correct:
+	</para>
+	
+<programlisting>&lt;core:init jndi-name="myEarName/#{ejbName}/local" /&gt;
+</programlisting>
+	<para>
+		Where <literal>myEarName</literal> is the name of the EAR in which the bean is deployed.
+	</para>
+	<para>
+		Outside the context of an EAR (when using the JBoss Embeddable EJB3 container), the following pattern is the one to use:
+	</para>
+	
+<programlisting>&lt;core:init jndi-name="#{ejbName}/local" /&gt;
+</programlisting>
+	<para>
+		You will have to experiment to find the right setting for other application servers.
+	</para>
+	<important>
+		<para>
+			Some servers (such as GlassFish) require you to specify JNDI names for all EJB components explicitly. In this case, you can pick your own pattern.
+		</para>
+	</important>
+	</sect2><sect2 id="Seam_Reference_Guide-Basic_Seam_configuration-Using_facelets"><title>Using facelets</title>
+	<para>
+		If you want follow our advice and use facelets instead of JSP, add the following lines to <literal>faces-config.xml</literal>:
+	</para>
+	
+<programlisting>&lt;application&gt;
+    &lt;view-handler&gt;com.sun.facelets.FaceletViewHandler&lt;/view-handler&gt;
+&lt;/application&gt;
+</programlisting>
+	<para>
+		And the following lines to <literal>web.xml</literal>:
+	</para>
+	
+<programlisting>&lt;context-param&gt;
+    &lt;param-name&gt;javax.faces.DEFAULT_SUFFIX&lt;/param-name&gt;
+    &lt;param-value&gt;.xhtml&lt;/param-value&gt;
+&lt;/context-param&gt;
+</programlisting>
+	</sect2><sect2 id="Seam_Reference_Guide-Basic_Seam_configuration-Dont_forget"><title>Don't forget!</title>
+	<para>
+		There is one final item you need to know about. You must place a <literal>seam.properties</literal>, <literal>META-INF/seam.properties</literal> or <literal>META-INF/components.xml</literal> file in any archive in which your Seam components are deployed (even an empty properties file will do). At startup, Seam will scan any archives with <literal>seam.properties</literal> files for seam components.
+	</para>
+	<para>
+		In a web archive (WAR) file, you must place a <literal>seam.properties</literal> file in the <literal>WEB-INF/classes</literal> directory if you have any Seam components included here.
+	</para>
+	<!-- 	<para>
+		That's why all the Seam examples have an empty <literal>seam.properties</literal> file. You cannot just delete this file and expect everything to still work!
+	</para>  -->
+	<para>
+		<!-- You might think this is silly and what kind of idiot framework designers would make an empty file affect the behavior of their software?? Well,  -->This is a workaround for a limitation of the JVM; if we did not use this mechanism, our next best option would be to force you to list every component explicitly in <literal>components.xml</literal>. <!--  just like some other competing frameworks do! I think you'll like our way better.  -->
+	</para>
+	</sect2></sect1><sect1 id="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_EE_5"><title>Configuring Seam in Java EE 5</title>
+	<mediaobject>
+		<imageobject role="fo">
+			<imagedata align="center" fileref="images/ee5.png" format="PNG" />
+		</imageobject>
+		<!-- 	<imageobject role="html">
+			<imagedata align="center" fileref="../shared/images/ee5.png" />
+		</imageobject>  -->
+	</mediaobject>
+	<para>
+		If you are running in a Java EE 5 environment, this is all the configuration required to start using Seam!
+	</para>
+	<sect2 id="Seam_Reference_Guide-Configuring_Seam_in_Java_EE_5-Packaging"><title>Packaging</title>
+	<para>
+		Once you have packaged all this stuff together into an EAR, the archive structure will look something like this:
+	</para>
+	
+<programlisting>my-application.ear/
+    jboss-seam.jar
+    el-api.jar
+    el-ri.jar
+    META-INF/
+        MANIFEST.MF
+        application.xml
+    my-application.war/
+        META-INF/
+            MANIFEST.MF
+        WEB-INF/
+            web.xml
+            components.xml
+            faces-config.xml
+            lib/
+                jsf-facelets.jar
+                jboss-seam-ui.jar
+        login.jsp
+        register.jsp
+        ...
+    my-application.jar/
+        META-INF/
+            MANIFEST.MF
+            persistence.xml
+        seam.properties
+        org/
+            jboss/
+                myapplication/
+                    User.class
+                    Login.class
+                    LoginBean.class
+                    Register.class
+                    RegisterBean.class
+                    ...
+</programlisting>
+	<para>
+		You must include <literal>jboss-seam.jar</literal>, <literal>el-api.jar</literal> and <literal>el-ri.jar</literal> in the EAR classpath. Make sure you reference all of these jars from <literal>application.xml</literal>.
+	</para>
+	<para>
+		If you want to use jBPM or Drools, you must include the needed jars in the EAR classpath. Make sure you reference all of the jars from <literal>application.xml</literal>.
+	</para>
+	<para>
+		If you want to use facelets (our recommendation), you must include <literal>jsf-facelets.jar</literal> in the <literal>WEB-INF/lib</literal> directory of the WAR.
+	</para>
+	<para>
+		If you want to use the Seam tag library (most Seam applications do), you must include <literal>jboss-seam-ui.jar</literal> in the <literal>WEB-INF/lib</literal> directory of the WAR. If you want to use the PDF or email tag libraries, you need to put <literal>jboss-seam-pdf.jar</literal> or <literal>jboss-seam-mail.jar</literal> in <literal>WEB-INF/lib</literal>.
+	</para>
+	<para>
+		If you want to use the Seam debug page (only works for applications using facelets), you must include <literal>jboss-seam-debug.jar</literal> in the <literal>WEB-INF/lib</literal> directory of the WAR.
+	</para>
+	<para>
+		Seam ships with several example applications that are deployable in any Java EE container that supports EJB 3.0.
+	</para>
+	<para>
+		I really wish that was all there was to say on the topic of configuration but unfortunately we are only about a third of the way there. <!-- If you are too overwhelmed by all this tedious configuration stuff,  --> Feel free to skip over the rest of this section and come back to it later.
+	</para>
+	</sect2></sect1><sect1 id="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container"><title>Configuring Seam in Java SE, with the JBoss Embeddable EJB3 container</title>
+	<para>
+		The JBoss Embeddable EJB3 container lets you run EJB3 components outside the context of the Java EE 5 application server. This is especially, but not only, useful for testing.
+	</para>
+	<para>
+		The Seam booking example application includes a TestNG integration test suite that runs on the Embeddable EJB3 container.
+	</para>
+	<mediaobject>
+		<imageobject role="fo">
+			<imagedata align="center" fileref="images/testng.png" format="PNG" />
+		</imageobject>
+		<!-- 	<imageobject role="html">
+			<imagedata align="center" fileref="../shared/images/testng.png" />
+		</imageobject>  -->
+	</mediaobject>
+	<para>
+		The booking example application may even be deployed to Tomcat.
+	</para>
+	<mediaobject>
+		<imageobject role="fo">
+			<imagedata align="center" fileref="images/e-ejb3.png" format="PNG" />
+		</imageobject>
+		<!-- 	<imageobject role="html">
+			<imagedata align="center" fileref="../shared/images/e-ejb3.png" />
+		</imageobject>  -->
+	</mediaobject>
+	<sect2 id="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container-Installing_the_Embeddable_EJB3_container"><title>Installing the Embeddable EJB3 container</title>
+	<para>
+		Seam ships with a build of the Embeddable EJB3 container in the <literal>embedded-ejb</literal> directory. To use the Embeddable EJB3 container with Seam, add the <literal>embedded-ejb/conf</literal> directory, and all jars in the <literal>lib</literal> and <literal>embedded-ejb/lib</literal> directories to your classpath. Then, add the following line to <literal>components.xml</literal>:
+	</para>
+	
+<programlisting>&lt;core:ejb /&gt;
+</programlisting>
+	<para>
+		This setting installs the built-in component named <literal>org.jboss.seam.core.ejb</literal>. This component is responsible for bootstrapping the EJB container when Seam is started, and shutting it down when the web application is undeployed.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container-Configuring_a_datasource_with_the_Embeddable_EJB3_container"><title>Configuring a datasource with the Embeddable EJB3 container</title>
+	<para>
+		You should refer to the Embeddable EJB3 container documentation for more information about configuring the container. You'll probably at least need to set up your own datasource. Embeddable EJB3 is implemented using the JBoss Microcontainer, so it's very easy to add new services to the minimal set of services provided by default. For example, I can add a new datasource by putting this <literal>jboss-beans.xml</literal> file in my classpath:
+	</para>
+	
+<programlisting>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+
+&lt;deployment xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+            xsi:schemaLocation="urn:jboss:bean-deployer bean-deployer_1_0.xsd"
+            xmlns="urn:jboss:bean-deployer"&gt;
+
+   &lt;bean name="bookingDatasourceBootstrap"
+        class="org.jboss.resource.adapter.jdbc.local.LocalTxDataSource"&gt;
+      &lt;property name="driverClass"&gt;org.hsqldb.jdbcDriver&lt;/property&gt;
+      &lt;property name="connectionURL"&gt;jdbc:hsqldb:.&lt;/property&gt;
+      &lt;property name="userName"&gt;sa&lt;/property&gt;
+      &lt;property name="jndiName"&gt;java:/bookingDatasource&lt;/property&gt;
+      &lt;property name="minSize"&gt;0&lt;/property&gt;
+      &lt;property name="maxSize"&gt;10&lt;/property&gt;
+      &lt;property name="blockingTimeout"&gt;1000&lt;/property&gt;
+      &lt;property name="idleTimeout"&gt;100000&lt;/property&gt;
+      &lt;property name="transactionManager"&gt;
+        &lt;inject bean="TransactionManager"/&gt;
+      &lt;/property&gt;
+      &lt;property name="cachedConnectionManager"&gt;
+        &lt;inject bean="CachedConnectionManager"/&gt;
+      &lt;/property&gt;
+      &lt;property name="initialContextProperties"&gt;
+        &lt;inject bean="InitialContextProperties"/&gt;
+      &lt;/property&gt;
+   &lt;/bean&gt;
+
+   &lt;bean name="bookingDatasource" class="java.lang.Object"&gt;
+      &lt;constructor factoryMethod="getDatasource"&gt;
+         &lt;factory bean="bookingDatasourceBootstrap"/&gt;
+      &lt;/constructor&gt;
+   &lt;/bean&gt;
+
+&lt;/deployment&gt;
+</programlisting>
+	</sect2><sect2 id="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container-Packaging"><title>Packaging</title>
+	<para>
+		The archive structure of a WAR-based deployment on an servlet engine like Tomcat will look something like this:
+	</para>
+	
+<programlisting>my-application.war/
+    META-INF/
+        MANIFEST.MF
+    WEB-INF/
+        web.xml
+        components.xml
+        faces-config.xml
+        lib/
+            jboss-seam.jar
+            jboss-seam-ui.jar
+            el-api.jar
+            el-ri.jar
+            jsf-facelets.jar
+            myfaces-api.jar
+            myfaces-impl.jar
+            jboss-ejb3.jar
+            jboss-jca.jar
+            jboss-j2ee.jar
+            ...
+            mc-conf.jar/
+                ejb3-interceptors-aop.xml
+                embedded-jboss-beans.xml
+                default.persistence.properties
+                jndi.properties
+                login-config.xml
+                security-beans.xml
+                log4j.xml
+            my-application.jar/
+                META-INF/
+                    MANIFEST.MF
+                    persistence.xml
+                    jboss-beans.xml
+                log4j.xml
+                seam.properties
+                org/
+                    jboss/
+                        myapplication/
+                            User.class
+                            Login.class
+                            LoginBean.class
+                            Register.class
+                            RegisterBean.class
+                            ...
+    login.jsp
+    register.jsp
+    ...
+</programlisting>
+	<para>
+		The <literal>mc-conf.jar</literal> just contains the standard JBoss Microcontainer configuration files for Embeddable EJB3. You will not usually need to edit these files yourself.
+	</para>
+	<para>
+		Most of the Seam example applications may be deployed to Tomcat by running <literal>ant deploy.tomcat</literal>.
+	</para>
+	</sect2></sect1><sect1 id="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_J2EE"><title>Configuring Seam in J2EE</title>
+	<para>
+		Seam is useful even if you are not yet ready to take the plunge into EJB 3.0. In this case you would use Hibernate3 or JPA instead of EJB 3.0 persistence, and plain JavaBeans instead of session beans. You will miss out on some of the nice features of session beans but it will be very easy to migrate to EJB 3.0 when you are ready and, in the meantime, you will be able to take advantage of Seam's unique declarative state management architecture.
+	</para>
+	<mediaobject>
+		<imageobject role="fo">
+			<imagedata align="center" fileref="images/hibernate-ee.png" format="PNG" />
+		</imageobject>
+		<!-- 	<imageobject role="html">
+			<imagedata align="center" fileref="../shared/images/hibernate-ee.png" />
+		</imageobject>  -->
+	</mediaobject>
+	<para>
+		Seam JavaBean components do not provide declarative transaction demarcation like session beans do. You <emphasis>could</emphasis> manage your transactions manually using the JTA <literal>UserTransaction</literal> (you could even implement your own declarative transaction management in a Seam interceptor). But most applications will use Seam managed transactions when using Hibernate with JavaBeans. Follow the instructions in the persistence chapter to install <literal>TransactionalSeamPhaseListener</literal>.
+	</para>
+	<para>
+		The Seam distribution includes a version of the booking example application that uses Hibernate3 and JavaBeans instead of EJB3, and another version that uses JPA and JavaBeans. These example applications are ready to deploy into any J2EE application server.
+	</para>
+	<sect2 id="Seam_Reference_Guide-Configuring_Seam_in_J2EE-Boostrapping_Hibernate_in_Seam"><title>Boostrapping Hibernate in Seam</title>
+	<para>
+		Seam will bootstrap a Hibernate <literal>SessionFactory</literal> from your <literal>hibernate.cfg.xml</literal> file if you install a built-in component:
+	</para>
+	
+<programlisting>&lt;core:hibernate-session-factory name="hibernateSessionFactory"/&gt;
+</programlisting>
+	<para>
+		You will also need to configure a <emphasis>managed session</emphasis> if you want a Seam managed Hibernate <literal>Session</literal> to be available via injection.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Configuring_Seam_in_J2EE-Boostrapping_JPA_in_Seam"><title>Boostrapping JPA in Seam</title>
+	<para>
+		Seam will bootstrap a JPA <literal>EntityManagerFactory</literal> from your <literal>persistence.xml</literal> file if you install this built-in component:
+	</para>
+	
+<programlisting>&lt;core:entity-manager-factory name="entityManagerFactory"/&gt;
+</programlisting>
+	<para>
+		You will also need to configure a <emphasis>managed persistencece context</emphasis> if you want a Seam managed JPA <literal>EntityManager</literal> to be available via injection.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Configuring_Seam_in_J2EE-Packaging"><title>Packaging</title>
+	<para>
+		We can package our application as a WAR, in the following structure:
+	</para>
+	
+<programlisting>my-application.war/
+    META-INF/
+        MANIFEST.MF
+    WEB-INF/
+        web.xml
+        components.xml
+        faces-config.xml
+        lib/
+            jboss-seam.jar
+            jboss-seam-ui.jar
+            el-api.jar
+            el-ri.jar
+            jsf-facelets.jar
+            hibernate3.jar
+            hibernate-annotations.jar
+            ...
+            my-application.jar/
+                META-INF/
+                   MANIFEST.MF
+                seam.properties
+                hibernate.cfg.xml
+                org/
+                    jboss/
+                        myapplication/
+                            User.class
+                            Login.class
+                            Register.class
+                            ...
+    login.jsp
+    register.jsp
+    ...
+</programlisting>
+	<para>
+		If we want to deploy Hibernate in a non-J2EE environment like Tomcat or TestNG, we need to do a little bit more work.
+	</para>
+	</sect2></sect1><sect1 id="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_SE_with_the_JBoss_Microcontainer"><title>Configuring Seam in Java SE, with the JBoss Microcontainer</title>
+	<para>
+		The Seam support for Hibernate and JPA requires JTA and a JCA datasource. If you are running in a non-EE environment like Tomcat or TestNG you can run these services, and Hibernate itself, in the JBoss Microcontainer.
+	</para>
+	<para>
+		You can even deploy the Hibernate and JPA versions of the booking example in Tomcat.
+	</para>
+	<mediaobject>
+		<imageobject role="fo">
+			<imagedata align="center" fileref="images/hibernate-mc.png" format="PNG" />
+		</imageobject>
+		<!-- 	<imageobject role="html">
+			<imagedata align="center" fileref="../shared/images/hibernate-mc.png" />
+		</imageobject>  -->
+	</mediaobject>
+	<para>
+		Seam ships with an example Microcontainer configuration in <literal>microcontainer/conf/jboss-beans.xml</literal> that provides all the things you need to run Seam with Hibernate in any non-EE environment. Just add the <literal>microcontainer/conf</literal> directory, and all jars in the <literal>lib</literal> and <literal>microcontainer/lib</literal> directories to your classpath. Refer to the documentation for the JBoss Microcontainer for more information.
+	</para>
+	<sect2 id="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Microcontainer-Using_Hibernate_and_the_JBoss_Microcontainer"><title>Using Hibernate and the JBoss Microcontainer</title>
+	<para>
+		The built-in Seam component named <literal>org.jboss.seam.core.microcontainer</literal> bootstraps the microcontainer. As before, we probably want to use a Seam managed session.
+	</para>
+	
+<programlisting>&lt;core:microcontainer/&gt;
+
+&lt;core:managed-hibernate-session name="bookingDatabase" auto-create="true"
+    session-factory-jndi-name="java:/bookingSessionFactory"/&gt;
+</programlisting>
+	<para>
+		Where <literal>java:/bookingSessionFactory</literal> is the name of the Hibernate session factory specified in <literal>hibernate.cfg.xml</literal>.
+	</para>
+	<para>
+		You will need to provide a <literal>jboss-beans.xml</literal> file that installs JNDI, JTA, your JCA datasource and Hibernate into the microcontainer:
+	</para>
+	
+<programlisting>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+
+&lt;deployment xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+            xsi:schemaLocation="urn:jboss:bean-deployer bean-deployer_1_0.xsd"
+            xmlns="urn:jboss:bean-deployer"&gt;
+
+   &lt;bean name="Naming" class="org.jnp.server.SingletonNamingServer"/&gt;
+
+   &lt;bean name="TransactionManagerFactory" 
+      class="org.jboss.seam.microcontainer.TransactionManagerFactory"/&gt;
+   &lt;bean name="TransactionManager" class="java.lang.Object"&gt;
+      &lt;constructor factoryMethod="getTransactionManager"&gt;
+         &lt;factory bean="TransactionManagerFactory"/&gt;
+      &lt;/constructor&gt;
+   &lt;/bean&gt;
+
+   &lt;bean name="bookingDatasourceFactory" class="org.jboss.seam.microcontainer.DataSourceFactory"&gt;
+      &lt;property name="driverClass"&gt;org.hsqldb.jdbcDriver&lt;/property&gt;
+      &lt;property name="connectionUrl"&gt;jdbc:hsqldb:.&lt;/property&gt;
+      &lt;property name="userName"&gt;sa&lt;/property&gt;
+      &lt;property name="jndiName"&gt;java:/hibernateDatasource&lt;/property&gt;
+      &lt;property name="minSize"&gt;0&lt;/property&gt;
+      &lt;property name="maxSize"&gt;10&lt;/property&gt;
+      &lt;property name="blockingTimeout"&gt;1000&lt;/property&gt;
+      &lt;property name="idleTimeout"&gt;100000&lt;/property&gt;
+      &lt;property name="transactionManager"&gt;&lt;inject bean="TransactionManager"/&gt;&lt;/property&gt;
+   &lt;/bean&gt;
+   &lt;bean name="bookingDatasource" class="java.lang.Object"&gt;
+      &lt;constructor factoryMethod="getDataSource"&gt;
+         &lt;factory bean="bookingDatasourceFactory"/&gt;
+      &lt;/constructor&gt;
+   &lt;/bean&gt;
+
+   &lt;bean name="bookingSessionFactoryFactory" 
+      class="org.jboss.seam.microcontainer.HibernateFactory"/&gt;
+   &lt;bean name="bookingSessionFactory" class="java.lang.Object"&gt;
+      &lt;constructor factoryMethod="getSessionFactory"&gt;
+         &lt;factory bean="bookingSessionFactoryFactory"/&gt;
+      &lt;/constructor&gt;
+      &lt;depends&gt;bookingDatasource&lt;/depends&gt;
+   &lt;/bean&gt;
+
+&lt;/deployment&gt;
+</programlisting>
+	</sect2><sect2 id="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Microcontainer-Packaging"><title>Packaging</title>
+	<para>
+		The WAR could have the following structure:
+	</para>
+	
+<programlisting>my-application.war/
+    META-INF/
+        MANIFEST.MF
+    WEB-INF/
+        web.xml
+        components.xml
+        faces-config.xml
+        lib/
+            jboss-seam.jar
+            jboss-seam-ui.jar
+            el-api.jar
+            el-ri.jar
+            jsf-facelets.jar
+            hibernate3.jar
+            ...
+            jboss-microcontainer.jar
+            jboss-jca.jar
+            ...
+            myfaces-api.jar
+            myfaces-impl.jar
+            mc-conf.jar/
+                jndi.properties
+                log4j.xml
+            my-application.jar/
+                META-INF/
+                    MANIFEST.MF
+                    jboss-beans.xml
+                seam.properties
+                hibernate.cfg.xml
+                log4j.xml
+                org/
+                    jboss/
+                        myapplication/
+                            User.class
+                            Login.class
+                            Register.class
+                            ...
+    login.jsp
+    register.jsp
+    ...
+</programlisting>
+	</sect2></sect1><sect1 id="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_jBPM_in_Seam"><title>Configuring jBPM in Seam</title>
+	<para>
+		Seam's jBPM integration is not installed by default, so you will need to enable jBPM by installing a built-in component. You will also need to explicitly list your process and pageflow definitions. In <literal>components.xml</literal>:
+	</para>
+	
+<programlisting>&lt;core:jbpm&gt;
+    &lt;core:pageflow-definitions&gt;
+        &lt;value&gt;createDocument.jpdl.xml&lt;/value&gt;
+        &lt;value&gt;editDocument.jpdl.xml&lt;/value&gt;
+        &lt;value&gt;approveDocument.jpdl.xml&lt;/value&gt;
+    &lt;/core:pageflow-definitions&gt;
+    &lt;core:process-definitions&gt;
+        &lt;value&gt;documentLifecycle.jpdl.xml&lt;/value&gt;
+    &lt;/core:process-definitions&gt;
+&lt;/core:jbpm&gt;
+</programlisting>
+	<para>
+		No further special configuration is needed if you only have pageflows. If you do have business process definitions, you need to provide a jBPM configuration, and a Hibernate configuration for jBPM. The Seam DVD Store demo includes example <literal>jbpm.cfg.xml</literal> and <literal>hibernate.cfg.xml</literal> files that will work with Seam:
+	</para>
+	
+<programlisting>&lt;jbpm-configuration&gt;
+
+  &lt;jbpm-context&gt;
+    &lt;service name="persistence"&gt;
+       &lt;factory&gt;
+          &lt;bean class="org.jbpm.persistence.db.DbPersistenceServiceFactory"&gt;
+             &lt;field name="isTransactionEnabled"&gt;&lt;false/&gt;&lt;/field&gt;
+          &lt;/bean&gt;
+       &lt;/factory&gt;
+    &lt;/service&gt;
+    &lt;service name="message" factory="org.jbpm.msg.db.DbMessageServiceFactory" /&gt;
+    &lt;service name="scheduler" factory="org.jbpm.scheduler.db.DbSchedulerServiceFactory" /&gt;
+    &lt;service name="logging" factory="org.jbpm.logging.db.DbLoggingServiceFactory" /&gt;
+    &lt;service name="authentication" 
+       factory="org.jbpm.security.authentication.DefaultAuthenticationServiceFactory" /&gt;
+  &lt;/jbpm-context&gt;
+
+&lt;/jbpm-configuration&gt;
+</programlisting>
+	<para>
+		The most important thing to notice here is that jBPM transaction control is disabled. Seam or EJB3 should control the JTA transactions.
+	</para>
+	<sect2 id="Seam_Reference_Guide-Configuring_jBPM_in_Seam-Packaging"><title>Packaging</title>
+	<para>
+		There is not yet any well-defined packaging format for jBPM configuration and process/pageflow definition files. In the Seam examples we have decided to simply package all these files into the root of the EAR. In future, we will probably design some other standard packaging format. So the EAR looks something like this:
+	</para>
+	
+<programlisting>my-application.ear/
+    jboss-seam.jar
+    el-api.jar
+    el-ri.jar
+    jbpm-3.1.jar
+    META-INF/
+        MANIFEST.MF
+        application.xml
+    my-application.war/
+        META-INF/
+            MANIFEST.MF
+        WEB-INF/
+            web.xml
+            components.xml
+            faces-config.xml
+            lib/
+                jsf-facelets.jar
+                jboss-seam-ui.jar
+        login.jsp
+        register.jsp
+        ...
+    my-application.jar/
+        META-INF/
+            MANIFEST.MF
+            persistence.xml
+        seam.properties
+        org/
+            jboss/
+                myapplication/
+                    User.class
+                    Login.class
+                    LoginBean.class
+                    Register.class
+                    RegisterBean.class
+                    ...
+    jbpm.cfg.xml
+    hibernate.cfg.xml
+    createDocument.jpdl.xml
+    editDocument.jpdl.xml
+    approveDocument.jpdl.xml
+    documentLifecycle.jpdl.xml
+</programlisting>
+	<para>
+		Remember to add <literal>jbpm-3.1.jar</literal> to the manifest of your EJB-JAR and WAR.
+	</para>
+	</sect2></sect1><sect1 id="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_a_Portal"><title>Configuring Seam in a Portal</title>
+	<para>
+		To run a Seam application as a portlet, you will need to provide certain portlet metadata (<literal>portlet.xml</literal>, etc) in addition to the usual Java EE metadata. See the <literal>examples/portal</literal> directory for an example of the booking demo preconfigured to run on JBoss Portal.
+	</para>
+	<para>
+		In addition, you will need to use a portlet-specific phase listener instead of <literal>SeamPhaseListener</literal> or <literal>TransactionalSeamPhaseListener</literal>. The <literal>SeamPortletPhaseListener</literal> and <literal>TransactionalSeamPortletPhaseListener</literal> are adapted to the portlet lifecycle. I would like to offer my sincerest apologies for the name of that last class. I really could not think of anything better. Sorry.
+	</para>
+	</sect1><sect1 id="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_SFSB_and_Session_Timeouts_in_JBoss_AS"><title>Configuring SFSB and Session Timeouts in JBoss AS</title>
+	<para>
+		It is very important that the timeout for Stateful Session Beans is set higher than the timeout for HTTP Sessions, otherwise SFSB's may time out before the user's HTTP session has ended. JBoss Application Server has a default session bean timeout of 30 minutes, which is configured in <literal>server/default/conf/standardjboss.xml</literal> (replace <emphasis>default</emphasis> with your own configuration).
+	</para>
+	<para>
+		The default SFSB timeout can be adjusted by modifying the value of <literal>max-bean-life</literal> in the <literal>LRUStatefulContextCachePolicy</literal> cache configuration:
+	</para>
+	
+<programlisting>
+      &lt;container-cache-conf&gt;
+        &lt;cache-policy&gt;org.jboss.ejb.plugins.LRUStatefulContextCachePolicy&lt;/cache-policy&gt;
+        &lt;cache-policy-conf&gt;
+          &lt;min-capacity&gt;50&lt;/min-capacity&gt;
+          &lt;max-capacity&gt;1000000&lt;/max-capacity&gt;
+          &lt;remover-period&gt;1800&lt;/remover-period&gt;
+
+          &lt;!-- SFSB timeout in seconds; 1800 seconds == 30 minutes --&gt;
+          &lt;max-bean-life&gt;1800&lt;/max-bean-life&gt;  
+          
+          &lt;overager-period&gt;300&lt;/overager-period&gt;
+          &lt;max-bean-age&gt;600&lt;/max-bean-age&gt;
+          &lt;resizer-period&gt;400&lt;/resizer-period&gt;
+          &lt;max-cache-miss-period&gt;60&lt;/max-cache-miss-period&gt;
+          &lt;min-cache-miss-period&gt;1&lt;/min-cache-miss-period&gt;
+          &lt;cache-load-factor&gt;0.75&lt;/cache-load-factor&gt;
+        &lt;/cache-policy-conf&gt;
+      &lt;/container-cache-conf&gt;
+</programlisting>
+	<para>
+		The default HTTP session timeout can be modified in <literal>server/default/deploy/jbossweb-tomcat55.sar/conf/web.xml</literal> for JBoss 4.0.x, or in <literal>server/default/deploy/jboss-web.deployer/conf/web.xml</literal> for JBoss 4.2.x. The following entry in this file controls the default session timeout for all web applications:
+	</para>
+	
+<programlisting>
+   &lt;session-config&gt;
+      &lt;!-- HTTP Session timeout, in minutes --&gt;
+      &lt;session-timeout&gt;30&lt;/session-timeout&gt;
+   &lt;/session-config&gt;
+</programlisting>
+	<para>
+		To override this value for your own application, simply include this entry in your application's own <literal>web.xml</literal>.
+	</para>
+	</sect1>
+</chapter>
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Controls.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Controls.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Controls.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1214 @@
+<?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" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Seam_Reference_Guide_CP07.ent">
+%BOOK_ENTITIES;
+]>
+<chapter id="Seam_Reference_Guide-Seam_JSF_controls" lang="en-US">
+	<title>Seam JSF controls</title>
+	<para>
+		Seam includes a number of JSF controls that are useful for working with Seam. These are intended to complement the built-in JSF controls, and controls from other third-party libraries. We recommend the Ajax4JSF and ADF faces (now Trinidad) tag libraries for use with Seam. We do not recommend the use of the Tomahawk tag library.
+	</para>
+	<para>
+		To use these controls, define the "<literal>s</literal>" namespace in your page as follows (facelets only):
+	</para>
+	
+<programlisting>
+&lt;html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:s="http://jboss.com/products/seam/taglib"&gt;
+</programlisting>
+	<para>
+		The ui example demonstrates the use of a number of these tags.
+	</para>
+	<table id="Seam_Reference_Guide-Seam_JSF_controls-Seam_JSF_Control_Reference">
+		<title>Seam JSF Control Reference</title>
+		<tgroup cols="2">
+			<colspec colnum="1" colwidth="1*"></colspec>
+			<colspec colnum="2" colwidth="3*"></colspec>
+			<tbody>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:validate&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							A non-visual control, validates a JSF input field against the bound property using Hibernate Validator.
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<para>
+							None.
+						</para>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+						
+<programlisting>
+&lt;h:inputText id="userName" required="true" value="#{customer.userName}"&gt;
+  &lt;s:validate /&gt;
+&lt;/h:inputText&gt;
+&lt;h:message for="userName" styleClass="error" /&gt;
+</programlisting>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:validateAll&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							A non-visual control, validates all child JSF input fields against their bound properties using Hibernate Validator.
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<para>
+							None.
+						</para>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+						
+<programlisting>
+&lt;s:validateAll&gt;
+  &lt;div class="entry"&gt;
+    &lt;h:outputLabel for="username"&gt;Username:&lt;/h:outputLabel&gt;
+    &lt;h:inputText id="username" value="#{user.username}" required="true"/&gt;
+    &lt;h:message for="username" styleClass="error" /&gt;
+  &lt;/div&gt;
+  &lt;div class="entry"&gt;
+    &lt;h:outputLabel for="password"&gt;Password:&lt;/h:outputLabel&gt;
+    &lt;h:inputSecret id="password" value="#{user.password}" required="true"/&gt;
+    &lt;h:message for="password" styleClass="error" /&gt;
+  &lt;/div&gt;
+  &lt;div class="entry"&gt;
+    &lt;h:outputLabel for="verify"&gt;Verify Password:&lt;/h:outputLabel&gt;
+    &lt;h:inputSecret id="verify" value="#{register.verify}" required="true"/&gt;
+    &lt;h:message for="verify" styleClass="error" /&gt;
+  &lt;/div&gt;
+&lt;/s:validateAll&gt;
+</programlisting>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:formattedText&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							Outputs <emphasis>Seam Text</emphasis>, a rich text markup useful for blogs, wikis and other applications that might use rich text. See the Seam Text chapter for full usage.
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<itemizedlist>
+							<listitem>
+								<para>
+									<literal>value</literal> &mdash; an EL expression specifying the rich text markup to render.
+								</para>
+							</listitem>
+						</itemizedlist>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+						
+<programlisting>&lt;s:formattedText value="#{blog.text}"/&gt;
+</programlisting>
+						<para>
+							<emphasis>Example</emphasis>
+						</para>
+						<mediaobject>
+							<imageobject role="fo">
+								<imagedata align="center" fileref="images/controls-seamtext.png" format="PNG" width="444" />
+							</imageobject>
+							<!-- 	<imageobject role="html">
+								<imagedata align="center" fileref="../shared/images/controls-seamtext.png" />
+							</imageobject>  -->
+						</mediaobject>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:convertDateTime&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							Perform date or time conversions in the Seam timezone.
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<para>
+							None.
+						</para>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+						
+<programlisting>
+</programlisting>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:convertEnum&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							Assigns an enum converter to the current component. This is primarily useful for radio button and dropdown controls.
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<para>
+							None.
+						</para>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+						
+<programlisting>
+</programlisting>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:convertEntity&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							Assigns an entity converter to the current component. This is primarily useful for radio button and dropdown controls.
+						</para>
+						<para>
+							The converter works with any entity which has an <literal>@Id</literal> annotation - either simple or composite. If your <emphasis>Managed Persistence Context</emphasis> is not called <literal>entityManager</literal>, then you need to set it in components.xml:
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<para>
+							None.
+						</para>
+						<para>
+							<emphasis>Configuration</emphasis>
+						</para>
+						
+<programlisting>
+  &lt;component name="org.jboss.seam.ui.entityConverter"&gt;
+      &lt;property name="entityManager"&gt;#{em}&lt;/property&gt;
+  &lt;/component&gt;
+</programlisting>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+						
+<programlisting>&lt;h:selectOneMenu value="#{person.continent}" required="true"&gt;
+    &lt;s:selectItems value="#{continents.resultList}" var="continent" label="#{continent.name}" noSelectionLabel="Please Select..."/&gt;
+    &lt;s:convertEntity /&gt;
+&lt;/h:selectOneMenu&gt;
+</programlisting>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:enumItem&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							Creates a <literal>SelectItem</literal> from an enum value.
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<itemizedlist>
+							<listitem>
+								<para>
+									<literal>enumValue</literal> &mdash; the string representation of the enum value.
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>label</literal> &mdash; the label to be used when rendering the <literal>SelectItem</literal>.
+								</para>
+							</listitem>
+						</itemizedlist>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+						<para>
+							
+<programlisting>
+</programlisting>
+						</para>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:selectItems&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							Creates a <literal>List&lt;SelectItem&gt;</literal> from a List, Set, DataModel or Array.
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<itemizedlist>
+							<listitem>
+								<para>
+									<literal>value</literal> &mdash; an EL expression specifying the data that backs the <literal>List&lt;SelectItem&gt;</literal>
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>var</literal> &mdash; defines the name of the local variable that holds the current object during iteration
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>label</literal> &mdash; the label to be used when rendering the <literal>SelectItem</literal>. Can reference the <literal>var</literal> variable
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>disabled</literal> &mdash; if true the <literal>SelectItem</literal> will be rendered disabled. Can reference the <literal>var</literal> variable
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>noSelectionLabel</literal> &mdash; specifies the (optional) label to place at the top of list (if <literal>required="true"</literal> is also specified then selecting this value will cause a validation error)
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>hideNoSelectionLabel</literal> &mdash; if true, the <literal>noSelectionLabel</literal> will be hidden when a value is selected
+								</para>
+							</listitem>
+						</itemizedlist>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+						<para>
+							
+<programlisting>
+
+&lt;h:selectOneMenu value="#{person.age}"  converter="#{converters.ageConverter}"&gt;
+    &lt;s:selectItems value="#{ages}" var="age" label="#{age}" /&gt;
+&lt;/h:selectOneMenu&gt;
+</programlisting>
+						</para>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:graphicImage&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							An extended <literal>&lt;h:graphicImage&gt;</literal> that allows the image to be created in a Seam Component; further transforms can be applied to the image. <emphasis>Facelets only.</emphasis>
+						</para>
+						<para>
+							All attributes for <literal>&lt;h:graphicImage&gt;</literal> are supported, as well as:
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<itemizedlist>
+							<listitem>
+								<para>
+									<literal>value</literal> &mdash; image to display. Can be a path <literal>String</literal> (loaded from the classpath), a <literal>byte[]</literal>, a <literal>java.io.File</literal>, a <literal>java.io.InputStream</literal> or a <literal>java.net.URL</literal>. Currently supported image formats are <literal>image/png</literal>, <literal>image/jpeg</literal> and <literal>image/gif</literal>.
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>fileName</literal> &mdash; if not specified the served image will have a generated file name. If you want to name your file, you should specify it here. This name should be unique
+								</para>
+							</listitem>
+						</itemizedlist>
+						<para>
+							<emphasis>Transformations</emphasis>
+						</para>
+						<para>
+							To apply a transform to the image, you would nest a tag specifying the transform to apply. Seam currently supports these transforms:
+						</para>
+						<variablelist>
+							<varlistentry>
+								<term><literal>&lt;s:transformImageSize&gt;</literal></term>
+								<listitem>
+									<itemizedlist>
+										<listitem>
+											<para>
+												<literal>width</literal> &mdash; new width of the image
+											</para>
+										</listitem>
+										<listitem>
+											<para>
+												<literal>height</literal> &mdash; new height of the image
+											</para>
+										</listitem>
+										<listitem>
+											<para>
+												<literal>maintainRatio</literal> &mdash; if <literal>true</literal>, and <emphasis>one</emphasis> of <literal>width</literal>/<literal>height</literal> are specified, the image will be resized with the dimension not specified being calculated to maintain the aspect ratio.
+											</para>
+										</listitem>
+										<listitem>
+											<para>
+												<literal>factor</literal> &mdash; scale the image by the given factor
+											</para>
+										</listitem>
+									</itemizedlist>
+								</listitem>
+							</varlistentry>
+							<varlistentry>
+								<term><literal>&lt;s:transformImageBlur&gt;</literal></term>
+								<listitem>
+									<itemizedlist>
+										<listitem>
+											<para>
+												<literal>radius</literal> &mdash; perform a convolution blur with the given radius
+											</para>
+										</listitem>
+									</itemizedlist>
+								</listitem>
+							</varlistentry>
+							<varlistentry>
+								<term><literal>&lt;s:transformImageType&gt;</literal></term>
+								<listitem>
+									<itemizedlist>
+										<listitem>
+											<para>
+												<literal>contentType</literal> &mdash; alter the type of the image to either <literal>image/jpeg</literal> or <literal>image/png</literal>
+											</para>
+										</listitem>
+									</itemizedlist>
+								</listitem>
+							</varlistentry>
+						</variablelist>
+						<para>
+							It is easy to create your own transform - create a <literal>UIComponent</literal> which <literal>implements</literal><literal>org.jboss.seam.ui.graphicImage.ImageTransform</literal>. Inside the <literal>applyTransform()</literal>method use <literal>image.getBufferedImage()</literal> to get the original image and <literal>image.setBufferedImage()</literal> to set your transformed image. Transforms are applied in the order specified in the view.
+						</para>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+						<para>
+							
+<programlisting>
+</programlisting>
+						</para>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:decorate&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							"Decorate" a JSF input field when validation fails or when <literal>required="true"</literal> is set.
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<para>
+							None.
+						</para>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+						<para>
+							
+<programlisting>
+</programlisting>
+						</para>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:layoutForm&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							A layout component for producing a "standard" form layout. Each child component will be treated as a row, and if the child is a <literal>&lt;s:decorate&gt;</literal>, additional formatting will be applied: 
+							<itemizedlist>
+								<listitem>
+									<para>
+										Label &mdash; if a <literal>label</literal> facet is on the <literal>&lt;s:decorate&gt;</literal> then it's contents will be used as the label for this field. The labels are rendered right-aligned in a column
+									</para>
+									<para>
+										Some further decoration facets are supported - <literal>beforeLabel</literal>, <literal>afterLabel</literal>, <literal>aroundLabel</literal>, <literal>beforeInvalidLabel</literal>, <literal>afterInvalidLabel</literal> and <literal>aroundInvalidLabel</literal>.
+									</para>
+								</listitem>
+								<listitem>
+									<para>
+										Other text &mdash; if a <literal>belowLabel</literal> facet or/and a <literal>belowField</literal> facet are present on <literal>&lt;s:decorate&gt;</literal> then it's contents will be placed below the label or the field
+									</para>
+								</listitem>
+								<listitem>
+									<para>
+										Required &mdash; if <literal>required="true"</literal> is set on the field, then the <literal>aroundRequiredField</literal>, <literal>beforeRequiredField</literal>, <literal>afterRequiredField</literal>, <literal>aroundRequiredLabel</literal>, <literal>beforeRequiredLabel</literal> and <literal>afterRequiredLabel</literal> will be applied.
+									</para>
+								</listitem>
+							</itemizedlist>
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<para>
+							None.
+						</para>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+						<para>
+							
+<programlisting>
+&lt;s:layoutForm&gt;
+   &lt;f:facet name="aroundInvalidField"&gt;
+       &lt;s:span styleClass="error"/&gt;
+   &lt;/f:facet&gt;
+   &lt;f:facet name="afterInvalidField"&gt;
+       &lt;s:message /&gt;
+   &lt;/f:facet&gt;
+   &lt;f:facet name="beforeRequiredLabel"&gt;
+   	&lt;s:span&gt;&lowast;&lt;/s:span&gt;
+   &lt;/f:facet&gt;
+   &lt;f:facet name="aroundLabel"&gt;
+   	&lt;s:span style="text-align:right;" /&gt;
+   &lt;/f:facet&gt;
+   &lt;f:facet name="aroundInvalidLabel"&gt;
+   	&lt;s:span style="text-align:right;" styleClass="error" /&gt;
+   &lt;/f:facet&gt;
+   &lt;s:decorate&gt;
+        &lt;f:facet name="label"&gt;
+		    &lt;h:outputText value="Name" /&gt;
+        &lt;/f:facet&gt;
+        &lt;h:inputText value="#{person.name}" required="true"/&gt;
+        &lt;f:facet name="belowField"&gt;
+            &lt;h:outputText styleClass="help" 
+               value="Enter your name as it appears 
+                  on your passport" /&gt;
+        &lt;/f:facet&gt;
+    &lt;/s:decorate&gt;
+&lt;/s:layoutForm&gt;
+</programlisting>
+						</para>
+						<mediaobject>
+							<imageobject role="fo">
+								<imagedata fileref="images/layoutForm-example.png" format="PNG" />
+							</imageobject>
+							<!-- 	<imageobject role="html">
+								<imagedata fileref="../shared/images/layoutForm-example.png" />
+							</imageobject>  -->
+						</mediaobject>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:message&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							"Decorate" a JSF input field with the validation error message.
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<para>
+							None.
+						</para>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+						<para>
+							
+<programlisting>
+</programlisting>
+						</para>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:span&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							Render a HTML <literal>&lt;span&gt;</literal>.
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<para>
+							None.
+						</para>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+						<para>
+							
+<programlisting>
+</programlisting>
+						</para>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:div&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							Render a HTML <literal>&lt;div&gt;</literal>.
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<para>
+							None.
+						</para>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+						<para>
+							
+<programlisting>
+</programlisting>
+						</para>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:fragment&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							A non-rendering component useful for enabling/disabling rendering of it's children.
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<para>
+							None.
+						</para>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+						<para>
+							
+<programlisting>
+</programlisting>
+						</para>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:cache&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							Cache the rendered page fragment using JBoss Cache. Note that <literal>&lt;s:cache&gt;</literal> actually uses the instance of JBoss Cache managed by the built-in <literal>pojoCache</literal> component.
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<itemizedlist>
+							<listitem>
+								<para>
+									<literal>key</literal> &mdash; the key to cache rendered content, often a value expression. For example, if we were caching a page fragment that displays a document, we might use <literal>key="Document-#{document.id}"</literal>.
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>enabled</literal> &mdash; a value expression that determines if the cache should be used.
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>region</literal> &mdash; a JBoss Cache node to use (different nodes can have different expiry policies).
+								</para>
+							</listitem>
+						</itemizedlist>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+						<para>
+							
+<programlisting>
+</programlisting>
+						</para>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:link&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							A link that supports invocation of an action with control over conversation propagation. <emphasis>Does not submit the form.</emphasis>
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<itemizedlist>
+							<listitem>
+								<para>
+									<literal>value</literal> &mdash; the label.
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>action</literal> &mdash; a method binding that specified the action listener.
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>view</literal> &mdash; the JSF view id to link to.
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>fragment</literal> &mdash; the fragment identifier to link to.
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>disabled</literal> &mdash; is the link disabled?
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>propagation</literal> &mdash; determines the conversation propagation style: <literal>begin</literal>, <literal>join</literal>, <literal>nest</literal>, <literal>none</literal> or <literal>end</literal>.
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>pageflow</literal> &mdash; a pageflow definition to begin. (This is only useful when <literal>propagation="begin"</literal> or <literal>propagation="join"</literal>.)
+								</para>
+							</listitem>
+						</itemizedlist>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+						<para>
+							
+<programlisting>
+</programlisting>
+						</para>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:button&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							A button that supports invocation of an action with control over conversation propagation. <emphasis>Does not submit the form.</emphasis>
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<itemizedlist>
+							<listitem>
+								<para>
+									<literal>value</literal> &mdash; the label.
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>action</literal> &mdash; a method binding that specified the action listener.
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>view</literal> &mdash; the JSF view id to link to.
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>fragment</literal> &mdash; the fragment identifier to link to.
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>disabled</literal> &mdash; is the link disabled?
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>propagation</literal> &mdash; determines the conversation propagation style: <literal>begin</literal>, <literal>join</literal>, <literal>nest</literal>, <literal>none</literal> or <literal>end</literal>.
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>pageflow</literal> &mdash; a pageflow definition to begin. (This is only useful when <literal>propagation="begin"</literal> or <literal>propagation="join"</literal>.)
+								</para>
+							</listitem>
+						</itemizedlist>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+						<para>
+							
+<programlisting>
+</programlisting>
+						</para>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:selectDate&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							Displays a dynamic date picker component that selects a date for the specified input field. The body of the <literal>selectDate</literal> element should contain HTML elements, such as text or an image, that prompt the user to click to display the date picker. The date picker <emphasis>must</emphasis> be styled using CSS. An example CSS file can be found in the Seam booking demo as <literal>date.css</literal>, or can be generated using seam-gen. The CSS styles used to control the appearance of the date picker are also described below.
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<itemizedlist>
+							<listitem>
+								<para>
+									<literal>for</literal> &mdash; The id of the input field that the date picker will insert the selected date into.
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>dateFormat</literal> &mdash; The date format string. This should match the date format of the input field.
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>startYear</literal> &mdash; The popup year selector range will start at this year.
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>endYear</literal> &mdash; The popup year selector range will end at this year.
+								</para>
+							</listitem>
+						</itemizedlist>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+						<para>
+							
+<programlisting>
+  &lt;div class="row"&gt;
+    &lt;h:outputLabel for="dob"&gt;Date of birth&lt;em&gt;*&lt;/em&gt;&lt;/h:outputLabel&gt;
+    &lt;h:inputText id="dob" value="#{user.dob}" required="true"&gt;
+      &lt;s:convertDateTime pattern="MM/dd/yyyy"/&gt;
+    &lt;/h:inputText&gt;
+    &lt;s:selectDate for="dob" startYear="1910" endYear="2007"&gt;&lt;img src="img/datepicker.png"/&gt;&lt;/s:selectDate&gt;
+    &lt;div class="validationError"&gt;&lt;h:message for="dob"/&gt;&lt;/div&gt;
+  &lt;/div&gt;
+</programlisting>
+						</para>
+						<para>
+							<emphasis>Example</emphasis>
+						</para>
+						<mediaobject>
+							<imageobject role="fo">
+								<imagedata align="center" fileref="images/controls-selectdate.png" format="PNG" />
+							</imageobject>
+							<!-- 	<imageobject role="html">
+								<imagedata align="center" fileref="../shared/images/controls-selectdate.png" />
+							</imageobject>  -->
+						</mediaobject>
+						<para>
+							<emphasis>CSS Styling</emphasis>
+						</para>
+						<para>
+							The following list describes the CSS class names that are used to control the style of the selectDate control.
+						</para>
+						<itemizedlist>
+							<listitem>
+								<para>
+									<literal>seam-date</literal> &mdash; This class is applied to the outer <literal>div</literal> containing the popup calendar. (1) It is also applied to the <literal>table</literal> that controls the inner layout of the calendar. (2)
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>seam-date-header</literal> &mdash; This class is applied to the calendar header table row (<literal>tr</literal>) and header table cells (<literal>td</literal>). (3)
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>seam-date-header-prevMonth</literal> &mdash; This class is applied to the "previous month" table cell, (<literal>td</literal>), which when clicked causes the calendar to display the month prior to the one currently displayed. (4)
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>seam-date-header-nextMonth</literal> &mdash; This class is applied to the "next month" table cell, (<literal>td</literal>), which when clicked causes the calendar to display the month following the one currently displayed. (5)
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>seam-date-headerDays</literal> &mdash; This class is applied to the calendar days header row (<literal>tr</literal>), which contains the names of the week days. (6)
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>seam-date-footer</literal> &mdash; This class is applied to the calendar footer row (<literal>tr</literal>), which displays the current date. (7)
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>seam-date-inMonth</literal> &mdash; This class is applied to the table cell (<literal>td</literal>) elements that contain a date within the month currently displayed. (8)
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>seam-date-outMonth</literal> &mdash; This class is applied to the table cell (<literal>td</literal>) elements that contain a date outside of the month currently displayed. (9)
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>seam-date-selected</literal> &mdash; This class is applied to the table cell (<literal>td</literal>) element that contains the currently selected date. (10)
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>seam-date-dayOff-inMonth</literal> &mdash; This class is applied to the table cell (<literal>td</literal>) elements that contain a "day off" date (i.e. weekend days, Saturday and Sunday) within the currently selected month. (11)
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>seam-date-dayOff-outMonth</literal> &mdash; This class is applied to the table cell (<literal>td</literal>) elements that contain a "day off" date (i.e. weekend days, Saturday and Sunday) outside of the currently selected month. (12)
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>seam-date-hover</literal> &mdash; This class is applied to the table cell (<literal>td</literal>) element over which the cursor is hovering. (13)
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>seam-date-monthNames</literal> &mdash; This class is applied to the <literal>div</literal> control that contains the popup month selector. (14)
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>seam-date-monthNameLink</literal> &mdash; This class is applied to the anchor (<literal>a</literal>) controls that contain the popup month names. (15)
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>seam-date-years </literal> &mdash; This class is applied to the <literal>div</literal> control that contains the popup year selector. (16)
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>seam-date-yearLink</literal> &mdash; This class is applied to the anchor (<literal>a</literal>) controls that contain the popup years. (15)
+								</para>
+							</listitem>
+						</itemizedlist>
+						<mediaobject>
+							<imageobject role="fo">
+								<imagedata align="center" fileref="images/controls-selectdatecss.png" format="PNG" width="444" />
+							</imageobject>
+							<!-- 	<imageobject role="html">
+								<imagedata align="center" fileref="../shared/images/controls-selectdatecss.png" />
+							</imageobject>  -->
+						</mediaobject>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:conversationPropagation&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							Customize the conversation propagation for a command link or button (or similar JSF control). <emphasis>Facelets only.</emphasis>
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<itemizedlist>
+							<listitem>
+								<para>
+									<literal>propagation</literal> &mdash; determines the conversation propagation style: <literal>begin</literal>, <literal>join</literal>, <literal>nest</literal>, <literal>none</literal> or <literal>end</literal>.
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>pageflow</literal> &mdash; a pageflow definition to begin. (This is only useful when <literal>propagation="begin"</literal> or <literal>propagation="join"</literal>.)
+								</para>
+							</listitem>
+						</itemizedlist>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+						<para>
+							
+<programlisting>
+</programlisting>
+						</para>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:conversationId&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							Add the conversation id to an output link (or similar JSF control). <emphasis>Facelets only.</emphasis>
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<para>
+							None.
+						</para>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+						<para>
+							
+<programlisting>
+</programlisting>
+						</para>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:taskId&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							Add the task id to an output link (or similar JSF control), when the task is available via <literal>#{task}</literal>. <emphasis>Facelets only.</emphasis>
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<para>
+							None.
+						</para>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+						<para>
+							
+<programlisting>
+</programlisting>
+						</para>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:fileUpload&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							Renders a file upload control. This control must be used within a form with an encoding type of <literal>multipart/form-data</literal>, i.e:
+						</para>
+						
+<programlisting>
+                       
+        &lt;h:form enctype="multipart/form-data"&gt;
+</programlisting>
+						<para>
+							For multipart requests, the Seam Multipart servlet filter must also be configured in <literal>web.xml</literal>:
+						</para>
+						
+<programlisting>
+                       
+  &lt;filter&gt;
+    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;
+    &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-class&gt;
+  &lt;/filter&gt;
+
+  &lt;filter-mapping&gt;
+    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;
+    &lt;url-pattern&gt;/*&lt;/url-pattern&gt;
+  &lt;/filter-mapping&gt;
+</programlisting>
+						<para>
+							<emphasis>Configuration</emphasis>
+						</para>
+						<para>
+							The following configuration options for multipart requests may be configured in components.xml:
+						</para>
+						<itemizedlist>
+							<listitem>
+								<para>
+									<literal>createTempFiles</literal> &mdash; if this option is set to true, uploaded files are streamed to a temporary file instead of in memory.
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>maxRequestSize</literal> &mdash; the maximum size of a file upload request, in bytes.
+								</para>
+							</listitem>
+						</itemizedlist>
+						<para>
+							Here's an example:
+						</para>
+						
+<programlisting>
+                       
+  &lt;component class="org.jboss.seam.web.MultipartFilter"&gt;
+      &lt;property name="createTempFiles"&gt;true&lt;/property&gt;
+      &lt;property name="maxRequestSize"&gt;1000000&lt;/property&gt;
+  &lt;/component&gt;
+</programlisting>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<itemizedlist>
+							<listitem>
+								<para>
+									<literal>data</literal> &mdash; this value binding receives the binary file data. The receiving field should be declared as a <literal>byte[]</literal> or <literal>InputStream</literal> (required).
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>contentType</literal> &mdash; this value binding receives the file's content type (optional).
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>fileName</literal> &mdash; this value binding receives the filename (optional).
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>accept</literal> &mdash; a comma-separated list of content types to accept, may not be supported by the browser. E.g. <literal>"images/png,images/jpg"</literal>, <literal>"images/*"</literal>.
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>style</literal> &mdash; The control's style
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>styleClass</literal> &mdash; The control's style class
+								</para>
+							</listitem>
+						</itemizedlist>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+						<para>
+							
+<programlisting>
+</programlisting>
+						</para>
+					</entry>
+				</row>
+			</tbody>
+		</tgroup>
+	</table>
+</chapter>
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Conversations.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Conversations.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Conversations.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,634 @@
+<?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" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Seam_Reference_Guide_CP07.ent">
+%BOOK_ENTITIES;
+]>
+<chapter id="Seam_Reference_Guide-Conversations_and_workspace_management" lang="en-US">
+	<title>Conversations and workspace management</title>
+	<para>
+		It is time to understand Seam's conversation model in more detail.
+	</para>
+	<!-- 	<para>
+		Historically, the notion of a Seam <emphasis>conversation</emphasis> came about as a merger of three different ideas:
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				The idea of a <emphasis>workspace</emphasis>, which I encountered in a project for the Victorian government in 2002. In this project I was forced to implement workspace management on top of Struts, an experience I pray never to repeat.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				The idea of an <emphasis>application transaction</emphasis> with optimistic semantics, and the realization that existing frameworks based around a stateless architecture could not provide effective management of extended persistence contexts. (The Hibernate team is truly fed up with copping the blame for <literal>LazyInitializationException</literal>s, which are not really Hibernate's fault, but rather the fault of the extremely limiting persistence context model supported by stateless architectures such as the Spring framework or the traditional <emphasis>stateless session facade</emphasis> (anti)pattern in J2EE.)
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				The idea of a workflow <emphasis>task</emphasis>.
+			</para>
+		</listitem>
+	</itemizedlist>
+	<para>
+		By unifying these ideas and providing deep support in the framework, we have a powerful construct that lets us build richer and more efficient applications with less code than before.
+	</para>  -->
+	<section id="Seam_Reference_Guide-Conversations_and_workspace_management-Seams_conversation_model">
+		<title>Seam's conversation model</title>
+		<para>
+			The examples we have seen so far make use of a very simple conversation model that follows these rules:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					There is always a conversation context active during the apply request values, process validations, update model values, invoke application and render response phases of the JSF request lifecycle.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					At the end of the restore view phase of the JSF request lifecycle, Seam attempts to restore any previous long-running conversation context. If none exists, Seam creates a new temporary conversation context.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					When an <literal>@Begin</literal> method is encountered, the temporary conversation context is promoted to a long running conversation.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					When an <literal>@End</literal> method is encountered, any long-running conversation context is demoted to a temporary conversation.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					At the end of the render response phase of the JSF request lifecycle, Seam stores the contents of a long running conversation context or destroys the contents of a temporary conversation context.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					Any faces request (a JSF postback) will propagate the conversation context. By default, non-faces requests (GET requests, for example) do not propagate the conversation context, but see below for more information on this.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					If the JSF request lifecycle is foreshortened by a redirect, Seam transparently stores and restores the current conversation context&mdash;unless the conversation was already ended via <literal>@End(beforeRedirect=true)</literal>.
+				</para>
+			</listitem>
+		</itemizedlist>
+		<para>
+			Seam transparently propagates the conversation context across JSF postbacks and redirects. If you do not do anything special, a <emphasis>non-faces request</emphasis> (a GET request for example) will not propagate the conversation context and will be processed in a new temporary conversation. This is usually - but not always - the desired behavior.
+		</para>
+		<para>
+			If you want to propagate a Seam conversation across a non-faces request, you need to explicitly code the Seam <emphasis>conversation id</emphasis> as a request parameter:
+		</para>
+		
+<programlisting>&lt;a href="main.jsf?conversationId=#{conversation.id}"&gt;Continue&lt;/a&gt;
+</programlisting>
+		<para>
+			Or, the more JSF-ish:
+		</para>
+		
+<programlisting>&lt;h:outputLink value="main.jsf"&gt;
+    &lt;f:param name="conversationId" value="#{conversation.id}"/&gt;
+    &lt;h:outputText value="Continue"/&gt;
+&lt;/h:outputLink&gt;
+</programlisting>
+		<para>
+			If you use the Seam tag library, this is equivalent:
+		</para>
+		
+<programlisting>&lt;h:outputLink value="main.jsf"&gt;
+    &lt;s:conversationId/&gt;
+    &lt;h:outputText value="Continue"/&gt;
+&lt;/h:outputLink&gt;
+</programlisting>
+		<para>
+			If you wish to disable propagation of the conversation context for a postback, a similar trick is used:
+		</para>
+		
+<programlisting>&lt;h:commandLink action="main" value="Exit"&gt;
+    &lt;f:param name="conversationPropagation" value="none"/&gt;
+&lt;/h:commandLink&gt;
+</programlisting>
+		<para>
+			If you use the Seam tag library, this is equivalent:
+		</para>
+		
+<programlisting>&lt;h:commandLink action="main" value="Exit"&gt;
+    &lt;s:conversationPropagation type="none"/&gt;
+&lt;/h:commandLink&gt;
+</programlisting>
+		<para>
+			Note that disabling conversation context propagation is absolutely not the same thing as ending the conversation.
+		</para>
+		<para>
+			The <literal>conversationPropagation</literal> request parameter, or the <literal>&lt;s:conversationPropagation&gt;</literal> tag may even be used to begin and end conversation, or begin a nested conversation.
+		</para>
+		
+<programlisting>&lt;h:commandLink action="main" value="Exit"&gt;
+    &lt;s:conversationPropagation type="end"/&gt;
+&lt;/h:commandLink&gt;
+</programlisting>
+		
+<programlisting>&lt;h:commandLink action="main" value="Select Child"&gt;
+    &lt;s:conversationPropagation type="nested"/&gt;
+&lt;/h:commandLink&gt;
+</programlisting>
+		
+<programlisting>&lt;h:commandLink action="main" value="Select Hotel"&gt;
+    &lt;s:conversationPropagation type="begin"/&gt;
+&lt;/h:commandLink&gt;
+</programlisting>
+		
+<programlisting>&lt;h:commandLink action="main" value="Select Hotel"&gt;
+    &lt;s:conversationPropagation type="join"/&gt;
+&lt;/h:commandLink&gt;
+</programlisting>
+		<para>
+			This conversation model makes it easy to build applications which behave correctly with respect to multi-window operation. For many applications, this is all that is needed. Some complex applications have either or both of the following additional requirements:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					A conversation spans many smaller units of user interaction, which execute serially or even concurrently. The smaller <emphasis>nested conversations</emphasis> have their own isolated set of conversation state, and also have access to the state of the outer conversation.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					The user is able to switch between many conversations within the same browser window. This feature is called <emphasis>workspace management</emphasis>.
+				</para>
+			</listitem>
+		</itemizedlist>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Conversations_and_workspace_management-Nested_conversations">
+		<title>Nested conversations</title>
+		<para>
+			A nested conversation is created by invoking a method marked <literal>@Begin(nested=true)</literal> inside the scope of an existing conversation. A nested conversation has its own conversation context, and also has read-only access to the context of the outer conversation. (It can read the outer conversation's context variables, but not write to them.) When an <literal>@End</literal> is subsequently encountered, the nested conversation will be destroyed, and the outer conversation will resume, by <emphasis>popping</emphasis> the conversation stack. Conversations may be nested to any arbitrary depth.
+		</para>
+		<para>
+			Certain user activity (workspace management, or the back button) can cause the outer conversation to be resumed before the inner conversation is ended. In this case it is possible to have multiple concurrent nested conversations belonging to the same outer conversation. If the outer conversation ends before a nested conversation ends, Seam destroys all nested conversation contexts along with the outer context.
+		</para>
+		<para>
+			A conversation may be thought of as a <emphasis>continuable state</emphasis>. Nested conversations allow the application to capture a consistent continuable state at various points in a user interaction, thus insuring truly correct behavior in the face of backbuttoning and workspace management.
+		</para>
+		<!--  <para>
+			TODO: an example to show how a nested conversation prevents bad stuff happening when you backbutton.
+		</para>  -->
+		<para>
+			Usually, if a component exists in a parent conversation of the current nested conversation, the nested conversation will use the same instance. Occasionally, it is useful to have a different instance in each nested conversation, so that the component instance that exists in the parent conversation is invisible to its child conversations. You can achieve this behavior by annotating the component <literal>@PerNestedConversation</literal>.
+		</para>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Conversations_and_workspace_management-Starting_conversations_with_GET_requests">
+		<title>Starting conversations with GET requests</title>
+		<para>
+			JSF does not define any kind of action listener that is triggered when a page is accessed via a non-faces request (for example, a HTTP GET request). This can occur if the user bookmarks the page, or if we navigate to the page via an <literal>&lt;h:outputLink&gt;</literal>.
+		</para>
+		<para>
+			Sometimes we want to begin a conversation immediately the page is accessed. Since there is no JSF action method, we can't solve the problem in the usual way, by annotating the action with <literal>@Begin</literal>.
+		</para>
+		<para>
+			A further problem arises if the page needs some state to be fetched into a context variable. We have already seen two ways to solve this problem. If that state is held in a Seam component, we can fetch the state in a <literal>@Create</literal> method. If not, we can define a <literal>@Factory</literal> method for the context variable.
+		</para>
+		<para>
+			If none of these options works for you, Seam lets you define a <emphasis>page action</emphasis> in the <literal>pages.xml</literal> file.
+		</para>
+		
+<programlisting>&lt;pages&gt;
+    &lt;page view-id="/messageList.jsp" action="#{messageManager.list}"/&gt;
+    ...
+&lt;/pages&gt;
+</programlisting>
+		<para>
+			This action method is called at the beginning of the render response phase, any time the page is about to be rendered. If a page action returns a non-null outcome, Seam will process any appropriate JSF and Seam navigation rules, possibly resulting in a completely different page being rendered.
+		</para>
+		<para>
+			If <emphasis>all</emphasis> you want to do before rendering the page is begin a conversation, you could use a built-in action method that does just that:
+		</para>
+		
+<programlisting>&lt;pages&gt;
+    &lt;page view-id="/messageList.jsp" action="#{conversation.begin}"/&gt;
+    ...
+&lt;/pages&gt;
+</programlisting>
+		<para>
+			Note that you can also call this built-in action from a JSF control, and, similarly, you can use <literal>#{conversation.end}</literal> to end conversations.
+		</para>
+		<para>
+			If you want more control, to join existing conversations or begin a nested conversion, to begin a pageflow or an atomic conversation, you should use the <literal>&lt;begin-conversation&gt;</literal> element.
+		</para>
+		
+<programlisting>&lt;pages&gt;
+    &lt;page view-id="/messageList.jsp"&gt;
+       &lt;begin-conversation nested="true" pageflow="AddItem"/&gt;
+    &lt;page&gt;
+    ...
+&lt;/pages&gt;
+</programlisting>
+		<para>
+			There is also an <literal>&lt;end-conversation&gt;</literal> element.
+		</para>
+		
+<programlisting>&lt;pages&gt;
+    &lt;page view-id="/home.jsp"&gt;
+       &lt;end-conversation/&gt;
+    &lt;page&gt;
+    ...
+&lt;/pages&gt;
+</programlisting>
+		<para>
+			To solve the first problem, we now have five options:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					Annotate the <literal>@Create</literal> method with <literal>@Begin</literal>
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					Annotate the <literal>@Factory</literal> method with <literal>@Begin</literal>
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					Annotate the Seam page action method with <literal>@Begin</literal>
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					Use <literal>&lt;begin-conversation&gt;</literal> in <literal>pages.xml</literal>.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					Use <literal>#{conversation.begin}</literal> as the Seam page action method
+				</para>
+			</listitem>
+		</itemizedlist>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Conversations_and_workspace_management-Using_slink_and_sbutton">
+		<title>Using <literal>&lt;s:link&gt;</literal> and <literal>&lt;s:button&gt;</literal></title>
+		<para>
+			JSF command links always perform a form submission via JavaScript, which breaks the web browser's "open in new window" or "open in new tab" feature. In plain JSF, you need to use an <literal>&lt;h:outputLink&gt;</literal> if you need this functionality. But there are two major limitations to <literal>&lt;h:outputLink&gt;</literal>.
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					JSF provides no way to attach an action listener to an <literal>&lt;h:outputLink&gt;</literal>.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					JSF does not propagate the selected row of a <literal>DataModel</literal> since there is no actual form submission.
+				</para>
+			</listitem>
+		</itemizedlist>
+		<para>
+			Seam provides the notion of a <emphasis>page action</emphasis> to help solve the first problem, but this does nothing to help us with the second problem. We <emphasis>could</emphasis> work around this by using the RESTful approach of passing a request parameter and requerying for the selected object on the server side. In some cases&mdash;such as the Seam blog example application&mdash;this is indeed the best approach. The RESTful style supports bookmarking, since it does not require server-side state. In other cases, where we don't care about bookmarks, the use of <literal>@DataModel</literal> and <literal>@DataModelSelection</literal> is just so convenient and transparent!
+		</para>
+		<para>
+			To fill in this missing functionality, and to make conversation propagation even simpler to manage, Seam provides the <literal>&lt;s:link&gt;</literal> JSF tag.
+		</para>
+		<para>
+			The link may specify just the JSF view id:
+		</para>
+		
+<programlisting>&lt;s:link view=“/login.xhtml” value=“Login”/&gt;
+</programlisting>
+		<para>
+			Or, it may specify an action method (in which case the action outcome determines the page that results):
+		</para>
+		
+<programlisting>&lt;s:link action=“#{login.logout}” value=“Logout”/&gt;
+</programlisting>
+		<para>
+			If you specify <emphasis>both</emphasis> a JSF view id and an action method, the 'view' will be used <emphasis>unless</emphasis> the action method returns a non-null outcome:
+		</para>
+		
+<programlisting>&lt;s:link view="/loggedOut.xhtml"  action=“#{login.logout}” value=“Logout”/&gt;
+</programlisting>
+		<para>
+			The link automatically propagates the selected row of a <literal>DataModel</literal> using inside <literal>&lt;h:dataTable&gt;</literal>:
+		</para>
+		
+<programlisting>&lt;s:link view=“/hotel.xhtml” action=“#{hotelSearch.selectHotel}” value=“#{hotel.name}”/&gt;
+</programlisting>
+		<para>
+			You can leave the scope of an existing conversation:
+		</para>
+		
+<programlisting>&lt;s:link view=“/main.xhtml” propagation=“none”/&gt;
+</programlisting>
+		<para>
+			You can begin, end, or nest conversations:
+		</para>
+		
+<programlisting>&lt;s:link action=“#{issueEditor.viewComment}” propagation=“nest”/&gt;
+</programlisting>
+		<para>
+			If the link begins a conversation, you can even specify a pageflow to be used:
+		</para>
+		
+<programlisting>&lt;s:link action=“#{documentEditor.getDocument}” propagation=“begin” 
+        pageflow=“EditDocument”/&gt;
+</programlisting>
+		<para>
+			The <literal>taskInstance</literal> attribute if for use in jBPM task lists:
+		</para>
+		
+<programlisting>&lt;s:link action=“#{documentApproval.approveOrReject}” taskInstance=“#{task}”/&gt;
+</programlisting>
+		<para>
+			(See the DVD Store demo application for examples of this.)
+		</para>
+		<para>
+			Finally, if you need the <emphasis>link</emphasis> to be rendered as a button, use <literal>&lt;s:button&gt;</literal>:
+		</para>
+		
+<programlisting>&lt;s:button action=“#{login.logout}” value=“Logout”/&gt;
+</programlisting>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Conversations_and_workspace_management-Success_messages">
+		<title>Success messages</title>
+		<para>
+			It is quite common to display a message to the user indicating success or failure of an action. It is convenient to use a JSF <literal>FacesMessage</literal> for this. Unfortunately, a successful action often requires a browser redirect, and JSF does not propagate faces messages across redirects. This makes it quite difficult to display success messages in plain JSF.
+		</para>
+		<para>
+			The built in conversation-scoped Seam component named <literal>facesMessages</literal> solves this problem. (You must have the Seam redirect filter installed.)
+		</para>
+		
+<programlisting>@Name("editDocumentAction")
+ at Stateless
+public class EditDocumentBean implements EditDocument {
+    @In EntityManager em;
+    @In Document document;
+    @In FacesMessages facesMessages;
+    
+    public String update() {
+        em.merge(document);
+        facesMessages.add("Document updated");
+    }
+}
+</programlisting>
+		<para>
+			Any message added to <literal>facesMessages</literal> is used in the very next render response phase for the current conversation. This even works when there is no long-running conversation since Seam preserves even temporary conversation contexts across redirects.
+		</para>
+		<para>
+			You can even include JSF EL expressions in a faces message summary:
+		</para>
+		
+<programlisting>facesMessages.add("Document #{document.title} was updated");
+</programlisting>
+		<para>
+			You may display the messages in the usual way, for example:
+		</para>
+		
+<programlisting>&lt;h:messages globalOnly="true"/&gt;
+</programlisting>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Conversations_and_workspace_management-Using_an_explicit_conversation_id">
+		<title>Using an <emphasis>explicit</emphasis> conversation ID</title>
+		<para>
+			Ordinarily, Seam generates a meaningless unique ID for each conversation in each session. You can customize the id value when you begin the conversation.
+		</para>
+		<para>
+			This feature can be used to customize the conversation id generation algorithm like so:
+		</para>
+		
+<programlisting>@Begin(id="#{myConversationIdGenerator.nextId}") 
+public void editHotel() { ... }
+</programlisting>
+		<para>
+			Or it can be used to assign a meaningful conversation id:
+		</para>
+		
+<programlisting>@Begin(id="hotel#{hotel.id}") 
+public String editHotel() { ... }
+</programlisting>
+		
+<programlisting>@Begin(id="hotel#{hotelsDataModel.rowData.id}") 
+public String selectHotel() { ... }
+</programlisting>
+		
+<programlisting>@Begin(id="entry#{params['blogId']}")
+public String viewBlogEntry() { ... }
+</programlisting>
+		
+<programlisting>@BeginTask(id="task#{taskInstance.id}") 
+public String approveDocument() { ... }
+</programlisting>
+		<para>
+			Clearly, these example result in the same conversation id every time a particular hotel, blog or task is selected. So what happens if a conversation with the same conversation id already exists when the new conversation begins? Well, Seam detects the existing conversation and redirects to that conversation without running the <literal>@Begin</literal> method again. This feature helps control the number of workspaces that are created when using workspace management.
+		</para>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Conversations_and_workspace_management-Workspace_management">
+		<title>Workspace management</title>
+		<para>
+			Workspace management is the ability to <emphasis>switch</emphasis> conversations in a single window. Seam makes workspace management completely transparent at the level of the Java code. To enable workspace management, all you need to do is:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					Provide <emphasis>description</emphasis> text for each view ID (when using JSF or Seam navigation rules) or page node (when using jPDL pageflows). This description text is displayed to the user by the workspace switchers.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					Include one or more of the standard workspace switcher JSP or facelets fragments in your pages. The standard fragments support workspace management via a drop down menu, a list of conversations, or breadcrumbs.
+				</para>
+			</listitem>
+		</itemizedlist>
+		<section id="Seam_Reference_Guide-Workspace_management-Workspace_management_and_JSF_navigation">
+			<title>Workspace management and JSF navigation</title>
+			<para>
+				When you use JSF or Seam navigation rules, Seam switches to a conversation by restoring the current <literal>view-id</literal> for that conversation. The descriptive text for the workspace is defined in a file called <literal>pages.xml</literal> that Seam expects to find in the <literal>WEB-INF</literal> directory, right next to <literal>faces-config.xml</literal>:
+			</para>
+			
+<programlisting>&lt;pages&gt;
+    &lt;page view-id="/main.xhtml"&gt;Search hotels: #{hotelBooking.searchString}&lt;/page&gt;
+    &lt;page view-id="/hotel.xhtml"&gt;View hotel: #{hotel.name}&lt;/page&gt;
+    &lt;page view-id="/book.xhtml"&gt;Book hotel: #{hotel.name}&lt;/page&gt;
+    &lt;page view-id="/confirm.xhtml"&gt;Confirm: #{booking.description}&lt;/page&gt;
+&lt;/pages&gt;
+</programlisting>
+			<note>
+				<para>
+					Note that if this file is missing, the Seam application will continue to work perfectly, the only missing functionality will be the ability to switch workspaces.
+				</para>
+			</note>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Workspace_management-Workspace_management_and_jPDL_pageflow">
+			<title>Workspace management and jPDL pageflow</title>
+			<para>
+				When you use a jPDL pageflow definition, Seam switches to a conversation by restoring the current jBPM process state. This is a more flexible model since it allows the same <literal>view-id</literal> to have different descriptions depending upon the current <literal>&lt;page&gt;</literal> node. The description text is defined by the <literal>&lt;page&gt;</literal> node:
+			</para>
+			
+<programlisting>&lt;pageflow-definition name="shopping"&gt;
+
+   &lt;start-state name="start"&gt;
+      &lt;transition to="browse"/&gt;
+   &lt;/start-state&gt;
+   
+   &lt;page name="browse" view-id="/browse.xhtml"&gt;
+      &lt;description&gt;DVD Search: #{search.searchPattern}&lt;/description&gt;
+      &lt;transition to="browse"/&gt;
+      &lt;transition name="checkout" to="checkout"/&gt;
+   &lt;/page&gt;
+   
+   &lt;page name="checkout" view-id="/checkout.xhtml"&gt;
+      &lt;description&gt;Purchase: $#{cart.total}&lt;/description&gt;
+      &lt;transition to="checkout"/&gt;
+      &lt;transition name="complete" to="complete"/&gt;
+   &lt;/page&gt;
+   
+   &lt;page name="complete" view-id="/complete.xhtml"&gt;
+      &lt;end-conversation /&gt;
+   &lt;/page&gt;
+   
+&lt;/pageflow-definition&gt;
+</programlisting>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Workspace_management-The_conversation_switcher">
+			<title>The conversation switcher</title>
+			<para>
+				Include the following fragment in your JSP or facelets page to get a drop-down menu that lets you switch to any current conversation, or to any other page of the application:
+			</para>
+			
+<programlisting>&lt;h:selectOneMenu value="#{switcher.conversationIdOrOutcome}"&gt;
+    &lt;f:selectItem itemLabel="Find Issues" itemValue="findIssue"/&gt;
+    &lt;f:selectItem itemLabel="Create Issue" itemValue="editIssue"/&gt;
+    &lt;f:selectItems value="#{switcher.selectItems}"/&gt;
+&lt;/h:selectOneMenu&gt;
+&lt;h:commandButton action="#{switcher.select}" value="Switch"/&gt;
+</programlisting>
+			<para>
+				In this example, we have a menu that includes an item for each conversation, together with two additional items that let the user begin a new conversation.
+			</para>
+			<mediaobject>
+				<imageobject role="fo">
+					<imagedata align="center" fileref="images/switcher.png" format="PNG" />
+				</imageobject>
+				<!-- 	<imageobject role="html">
+					<imagedata align="center" fileref="../shared/images/switcher.png" />
+				</imageobject>  -->
+			</mediaobject>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Workspace_management-The_conversation_list">
+			<title>The conversation list</title>
+			<para>
+				The conversation list is very similar to the conversation switcher, except that it is displayed as a table:
+			</para>
+			
+<programlisting>&lt;h:dataTable value="#{conversationList}" var="entry"
+        rendered="#{not empty conversationList}"&gt;
+    &lt;h:column&gt;
+        &lt;f:facet name="header"&gt;Workspace&lt;/f:facet&gt;
+        &lt;h:commandLink action="#{entry.select}" value="#{entry.description}"/&gt;
+        &lt;h:outputText value="[current]" rendered="#{entry.current}"/&gt;
+    &lt;/h:column&gt;
+    &lt;h:column&gt;
+        &lt;f:facet name="header"&gt;Activity&lt;/f:facet&gt;
+        &lt;h:outputText value="#{entry.startDatetime}"&gt;
+            &lt;f:convertDateTime type="time" pattern="hh:mm a"/&gt;
+        &lt;/h:outputText&gt;
+        &lt;h:outputText value=" - "/&gt;
+        &lt;h:outputText value="#{entry.lastDatetime}"&gt;
+            &lt;f:convertDateTime type="time" pattern="hh:mm a"/&gt;
+        &lt;/h:outputText&gt;
+    &lt;/h:column&gt;
+    &lt;h:column&gt;
+        &lt;f:facet name="header"&gt;Action&lt;/f:facet&gt;
+        &lt;h:commandButton action="#{entry.select}" value="#{msg.Switch}"/&gt;
+        &lt;h:commandButton action="#{entry.destroy}" value="#{msg.Destroy}"/&gt;
+    &lt;/h:column&gt;
+&lt;/h:dataTable&gt;
+</programlisting>
+			<para>
+				We imagine that you will want to customize this for your own application.
+			</para>
+			<mediaobject>
+				<imageobject role="fo">
+					<imagedata align="center" fileref="images/list.png" format="PNG" width="444" />
+				</imageobject>
+				<!-- 	<imageobject role="html">
+					<imagedata align="center" fileref="../shared/images/list.png" />
+				</imageobject>  -->
+			</mediaobject>
+			<para>
+				The conversation list is nice, but it takes up a lot of space on the page, so you probably do not want to put it on <emphasis>every</emphasis> page.
+			</para>
+			<para>
+				Notice that the conversation list lets the user destroy workspaces.
+			</para>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Workspace_management-Breadcrumbs">
+			<title>Breadcrumbs</title>
+			<para>
+				Breadcrumbs are useful in applications which use a nested conversation model. The breadcrumbs are a list of links to conversations in the current conversation stack:
+			</para>
+			
+<programlisting>&lt;t:dataList value="#{conversationStack}" var="entry"&gt;
+    &lt;h:outputText value=" | "/&gt; 
+    &lt;h:commandLink value="#{entry.description}" action="#{entry.select}"/&gt;
+&lt;/t:dataList&gt;
+</programlisting>
+			<!-- <para>
+				Notice that here we are using the MyFaces <literal>&lt;t:dataList&gt;</literal> component, since JSF amazingly does not provide any standard component for looping.
+			</para> -->
+			<mediaobject>
+				<imageobject role="fo">
+					<imagedata align="center" fileref="images/breadcrumbs.png" format="PNG" width="444" />
+				</imageobject>
+				<!-- 	<imageobject role="html">
+					<imagedata align="center" fileref="../shared/images/breadcrumbs.png" />
+				</imageobject>  -->
+			</mediaobject>
+			<para>
+				Please refer to the Seam Issue Tracker demo to see all this functionality in action!
+			</para>
+		</section>
+
+	</section>
+	
+	<section id="Seam_Reference_Guide-Conversations_and_workspace_management-Conversational_components_and_JSF_component_bindings">
+		<title>Conversational components and JSF component bindings</title>
+		<para>
+			Conversational components have one minor limitation: they cannot be used to hold bindings to JSF components. (We generally prefer not to use this feature of JSF unless absolutely necessary, since it creates a hard dependency from application logic to the view.) On a postback request, component bindings are updated during the Restore View phase, before the Seam conversation context has been restored.
+		</para>
+		<para>
+			To work around this use an event scoped component to store the component bindings and inject it into the conversation scoped component that requires it.
+		</para>
+		
+<programlisting>@Name("grid")
+ at Scope(ScopeType.EVENT)
+public class Grid
+{
+    private HtmlPanelGrid htmlPanelGrid;
+
+    // getters and setters
+    ...
+}
+</programlisting>
+		
+<programlisting>@Name("gridEditor")
+ at Scope(ScopeType.CONVERSATION)
+public class GridEditor
+{
+    @In(required=false)
+    private Grid grid;
+    
+    ...
+}
+</programlisting>
+	</section>
+
+</chapter>
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Drools.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Drools.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Drools.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,184 @@
+<?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" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Seam_Reference_Guide_CP07.ent">
+%BOOK_ENTITIES;
+]>
+<chapter id="drools" lang="en-US">
+	<title>Seam and JBoss Rules</title>
+	<para>
+		Seam makes it easy to call JBoss Rules (Drools) rulebases from Seam components or jBPM process definitions.
+	</para>
+	<section>
+		<title>Installing rules</title>
+		<para>
+			The first step is to make an instance of <literal>org.drools.RuleBase</literal> available in a Seam context variable. For testing purposes, Seam provides a built-in component that compiles a static set of rules from the classpath. You can install this component via <literal>components.xml</literal>:
+		</para>
+		
+<programlisting role="XML">&lt;drools:rule-base name="policyPricingRules"&gt;
+    &lt;drools:rule-files&gt;
+        &lt;value&gt;policyPricingRules.drl&lt;/value&gt;
+    &lt;/drools:rule-files&gt;
+&lt;/drools:rule-base&gt;
+</programlisting>
+		<para>
+			This component compiles rules from a set of <literal>.drl</literal> files and caches an instance of <literal>org.drools.RuleBase</literal> in the Seam <literal>APPLICATION</literal> context. Note that it is quite likely that you will need to install multiple rule bases in a rule-driven application.
+		</para>
+		<para>
+			If you want to use a Drools DSL, you also need to specify the DSL definition:
+		</para>
+		
+<programlisting role="XML">&lt;drools:rule-base name="policyPricingRules" dsl-file="policyPricing.dsl"&gt;
+    &lt;drools:rule-files&gt;
+        &lt;value&gt;policyPricingRules.drl&lt;/value&gt;
+    &lt;/drools:rule-files&gt;
+&lt;/drools:rule-base&gt;
+</programlisting>
+		<para>
+			In most rules-driven applications, rules need to be dynamically deployable, so a production application will want to use a Drools RuleAgent to manage the RuleBase. The RuleAgent can connect to a Drools rule server (BRMS) or hot deploy rules packages from a local file repository. The RulesAgent-managed RuleBase is also configurable in <literal>components.xml</literal>:
+		</para>
+		
+<programlisting role="XML">&lt;drools:rule-agent name="insuranceRules" 
+                    configurationFile="/WEB-INF/deployedrules.properties" /&gt;
+</programlisting>
+		<para>
+			The properties file contains properties specific to the RulesAgent. Here is an example configuration file from the Drools example distribution.
+		</para>
+		
+<programlisting>newInstance=true
+url=http://localhost:8080/drools-jbrms/org.drools.brms.JBRMS/package/org.acme.insurance/fmeyer
+localCacheDir=/Users/fernandomeyer/projects/jbossrules/drools-examples/drools-examples-brms/cache
+poll=30
+name=insuranceconfig
+</programlisting>
+		<para>
+			It is also possible to configure the options on the component directly, bypassing the configuration file.
+		</para>
+		
+<programlisting role="XML">&lt;drools:rule-agent name="insuranceRules"
+   url="http://localhost:8080/drools-jbrms/org.drools.brms.JBRMS/package/org.acme.insurance/fmeyer"
+   local-cache-dir="/Users/fernandomeyer/projects/jbossrules/drools-examples/drools-examples-brms/cache"
+   poll="30"
+   configuration-name="insuranceconfig" /&gt;
+</programlisting>
+		<para>
+			Next, we need to make an instance of <literal>org.drools.WorkingMemory</literal> available to each conversation. (Each <literal>WorkingMemory</literal> accumulates facts relating to the current conversation.)
+		</para>
+		
+<programlisting role="XML">&lt;drools:managed-working-memory name="policyPricingWorkingMemory" auto-create="true" rule-base="#{policyPricingRules}"/&gt;
+</programlisting>
+		<para>
+			Notice that we gave the <literal>policyPricingWorkingMemory</literal> a reference back to our rule base via the <literal>ruleBase</literal> configuration property.
+		</para>
+	</section>
+	
+	<section>
+		<title>Using rules from a Seam component</title>
+		<para>
+			We can now inject our <literal>WorkingMemory</literal> into any Seam component, assert facts, and fire rules:
+		</para>
+		
+<programlisting role="JAVA">@In WorkingMemory policyPricingWorkingMemory;
+
+ at In Policy policy;
+ at In Customer customer;
+
+public void pricePolicy() throws FactException
+{
+    policyPricingWorkingMemory.assertObject(policy);
+    policyPricingWorkingMemory.assertObject(customer);
+    policyPricingWorkingMemory.fireAllRules();
+}
+</programlisting>
+	</section>
+	
+	<section>
+		<title>Using rules from a jBPM process definition</title>
+		<para>
+			You can even allow a rule base to act as a jBPM action handler, decision handler, or assignment handler—in either a pageflow or business process definition.
+		</para>
+		
+<programlisting role="XML">&lt;decision name="approval"&gt;
+         
+    &lt;handler class="org.jboss.seam.drools.DroolsDecisionHandler"&gt;
+        &lt;workingMemoryName&gt;orderApprovalRulesWorkingMemory&lt;/workingMemoryName&gt;
+        &lt;assertObjects&gt;
+            &lt;element&gt;#{customer}&lt;/element&gt;
+            &lt;element&gt;#{order}&lt;/element&gt;
+            &lt;element&gt;#{order.lineItems}&lt;/element&gt;
+        &lt;/assertObjects&gt;
+    &lt;/handler&gt;
+    
+    &lt;transition name="approved" to="ship"&gt;
+        &lt;action class="org.jboss.seam.drools.DroolsActionHandler"&gt;
+            &lt;workingMemoryName&gt;shippingRulesWorkingMemory&lt;/workingMemoryName&gt;
+            &lt;assertObjects&gt;
+                &lt;element&gt;#{customer}&lt;/element&gt;
+                &lt;element&gt;#{order}&lt;/element&gt;
+                &lt;element&gt;#{order.lineItems}&lt;/element&gt;
+            &lt;/assertObjects&gt;
+        &lt;/action&gt;
+    &lt;/transition&gt;
+    
+    &lt;transition name="rejected" to="cancelled"/&gt;
+    
+&lt;/decision&gt;
+</programlisting>
+		<para>
+			The <literal>&lt;assertObjects&gt;</literal> element specifies EL expressions that return an object or collection of objects to be asserted as facts into the <literal>WorkingMemory</literal>.
+		</para>
+		<para>
+			There is also support for using Drools for jBPM task assignments:
+		</para>
+		
+<programlisting role="XML">&lt;task-node name="review"&gt;
+    &lt;task name="review" description="Review Order"&gt;
+        &lt;assignment handler="org.jboss.seam.drools.DroolsAssignmentHandler"&gt;
+            &lt;workingMemoryName&gt;orderApprovalRulesWorkingMemory&lt;/workingMemoryName&gt;
+            &lt;assertObjects&gt;
+                &lt;element&gt;#{actor}&lt;/element&gt;
+                &lt;element&gt;#{customer}&lt;/element&gt;
+                &lt;element&gt;#{order}&lt;/element&gt;
+                &lt;element&gt;#{order.lineItems}&lt;/element&gt;
+            &lt;/assertObjects&gt;
+        &lt;/assignment&gt;
+    &lt;/task&gt;
+    &lt;transition name="rejected" to="cancelled"/&gt;
+    &lt;transition name="approved" to="approved"/&gt;
+&lt;/task-node&gt;
+</programlisting>
+		<para>
+			Certain objects are available to the rules as Drools globals, namely the jBPM <literal>Assignable</literal>, as <literal>assignable</literal> and a Seam <literal>Decision</literal> object, as <literal>decision</literal>. Rules which handle decisions should call <literal>decision.setOutcome("result")</literal> to determine the result of the decision. Rules which perform assignments should set the actor id using the <literal>Assignable</literal>.
+		</para>
+		
+<programlisting>package org.jboss.seam.examples.shop
+
+import org.jboss.seam.drools.Decision
+
+global Decision decision
+
+rule "Approve Order For Loyal Customer"
+  when
+    Customer( loyaltyStatus == "GOLD" )
+    Order( totalAmount &lt;= 10000 )
+  then
+    decision.setOutcome("approved");
+end
+</programlisting>
+		
+<programlisting>package org.jboss.seam.examples.shop
+
+import org.jbpm.taskmgmt.exe.Assignable
+
+global Assignable assignable
+
+rule "Assign Review For Small Order"
+  when
+    Order( totalAmount &lt;= 100 )
+  then
+    assignable.setPooledActors( new String[] {"reviewers"} );
+end
+</programlisting>
+	</section>
+
+</chapter>
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Elenhancements.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Elenhancements.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Elenhancements.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,99 @@
+<?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" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Seam_Reference_Guide_CP07.ent">
+%BOOK_ENTITIES;
+]>
+<chapter id="Seam_Reference_Guide-Expression_language_enhancements" lang="en-US">
+	<title>Expression language enhancements</title>
+	<para>
+		The standard Unified Expression Language (EL) assumes that any parameters to a method expression will be provided by Java code. This means that a method with parameters cannot be used as a JSF method binding. Seam provides an enhancement to the EL that allows parameters to be included in a method expression itself. This applies to <emphasis>any</emphasis> Seam method expression, including any JSF method binding, for example:
+	</para>
+	
+<programlisting>&lt;s:commandButton action="#{hotelBooking.bookHotel(hotel)}" value="Book Hotel"/&gt;
+</programlisting>
+	<section id="Seam_Reference_Guide-Expression_language_enhancements-Configuration">
+		<title>Configuration</title>
+		<para>
+			To use this feature in Facelets, you will need to declare a special view handler, <literal>SeamFaceletViewHandler</literal> in <literal>faces-config.xml</literal>.
+		</para>
+		
+<programlisting>&lt;faces-config&gt;
+    &lt;application&gt;
+        &lt;view-handler&gt;org.jboss.seam.ui.facelet.SeamFaceletViewHandler&lt;/view-handler&gt;
+    &lt;/application&gt;
+&lt;/faces-config&gt;
+</programlisting>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Expression_language_enhancements-Usage">
+		<title>Usage</title>
+		<para>
+			Parameters are surrounded by parentheses, and separated by commas:
+		</para>
+		
+<programlisting>&lt;h:commandButton action="#{hotelBooking.bookHotel(hotel, user)}" value="Book Hotel"/&gt;
+</programlisting>
+		<para>
+			The parameters <literal>hotel</literal> and <literal>user</literal> will be evaluated as value expressions and passed to the <literal>bookHotel()</literal> method of the component. This gives you an alternative to the use of <literal>@In</literal>.
+		</para>
+		<para>
+			Any value expression may be used as a parameter:
+		</para>
+		
+<programlisting>&lt;h:commandButton action="#{hotelBooking.bookHotel(hotel.id, user.username)}" value="Book Hotel"/&gt;
+</programlisting>
+		<para>
+			You may even pass literal strings using single or double quotes:
+		</para>
+		
+<programlisting>&lt;h:commandLink action=”#{printer.println( ‘Hello world!’ )}” value=”Hello”/&gt;
+</programlisting>
+		
+<programlisting>&lt;h:commandLink action=’#{printer.println( “Hello again” )}’ value=’Hello’/&gt;
+</programlisting>
+		<para>
+			You might even want to use this notation for all your action methods, even when you do not have parameters to pass. This improves readability by making it clear that the expression is a method expression and not a value expression:
+		</para>
+		
+<programlisting>&lt;s:link value="Cancel" action="#{hotelBooking.cancel()}"/&gt;
+</programlisting>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Expression_language_enhancements-Limitations">
+		<title>Limitations</title>
+		<para>
+			Please be aware of the following limitations:
+		</para>
+		<section id="Seam_Reference_Guide-Limitations-Incompatibility_with_JSP_2.1">
+			<title>Incompatibility with JSP 2.1</title>
+			<para>
+				This extension is not currently compatible with JSP 2.1. So if you want to use this extension with JSF 1.2, you will need to use Facelets. The extension works correctly with JSP 2.0.
+			</para>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Limitations-Calling_a_MethodExpression_from_Java_code">
+			<title>Calling a <literal>MethodExpression</literal> from Java code</title>
+			<para>
+				Normally, when a <literal>MethodExpression</literal> or <literal>MethodBinding</literal> is created, the parameter types are passed in by JSF. In the case of a method binding, JSF assumes that there are no parameters to pass. With this extension, we can’t know the parameter types until after the expression has been evaluated. This has two minor consequences:
+			</para>
+			<itemizedlist>
+				<listitem>
+					<para>
+						When you invoke a <literal>MethodExpression</literal> in Java code, parameters you pass may be ignored. Parameters defined in the expression will take precedence.
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						Ordinarily, it is safe to call <literal>methodExpression.getMethodInfo().getParamTypes()</literal> at any time. For an expression with parameters, you must first invoke the <literal>MethodExpression</literal> before calling <literal>getParamTypes()</literal>.
+					</para>
+				</listitem>
+			</itemizedlist>
+			<para>
+				Both of these cases are exceedingly rare and only apply when you want to invoke the <literal>MethodExpression</literal> by hand in Java code.
+			</para>
+		</section>
+
+	</section>
+
+</chapter>
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Events.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Events.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Events.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,769 @@
+<?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" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Seam_Reference_Guide_CP07.ent">
+%BOOK_ENTITIES;
+]>
+<chapter id="Seam_Reference_Guide-Events_interceptors_and_exception_handling" lang="en-US">
+	<title>Events, interceptors and exception handling</title>
+	<para>
+		Complementing the contextual component model, there are two further basic concepts that facilitate the extreme loose-coupling that is the distinctive feature of Seam applications. The first is a strong event model where events may be mapped to event listeners via JSF-like method binding expressions. The second is the pervasive use of annotations and interceptors to apply cross-cutting concerns to components which implement business logic.
+	</para>
+	<sect1 id="Seam_Reference_Guide-Events_interceptors_and_exception_handling-Seam_events"><title>Seam events</title>
+	<para>
+		The Seam component model was developed for use with <emphasis>event-driven applications</emphasis>, specifically to enable the development of fine-grained, loosely-coupled components in a fine-grained eventing model. Events in Seam come in several types, most of which we have already seen:
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				JSF events
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				jBPM transition events
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Seam page actions
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Seam component-driven events
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Seam contextual events
+			</para>
+		</listitem>
+	</itemizedlist>
+	<para>
+		All of these various kinds of events are mapped to Seam components via JSF EL method binding expressions. For a JSF event, this is defined in the JSF template:
+	</para>
+	
+<programlisting>&lt;h:commandButton value="Click me!" action="#{helloWorld.sayHello}"/&gt;
+</programlisting>
+	<para>
+		For a jBPM transition event, it is specified in the jBPM process definition or pageflow definition:
+	</para>
+	
+<programlisting>&lt;start-page name="hello" view-id="/hello.jsp"&gt;
+    &lt;transition to="hello"&gt;
+        &lt;action expression="#{helloWorld.sayHello}"/&gt;
+    &lt;/transition&gt;
+&lt;/start-page&gt;
+</programlisting>
+	<para>
+		You can find out more information about JSF events and jBPM events elsewhere. Lets concentrate for now upon the two additional kinds of events defined by Seam.
+	</para>
+	<sect2 id="Seam_Reference_Guide-Seam_events-Page_actions"><title>Page actions</title>
+	<para>
+		A Seam page action is an event that occurs just before we render a page. We declare page actions in <literal>WEB-INF/pages.xml</literal>. We can define a page action for either a particular JSF view id:
+	</para>
+	
+<programlisting>&lt;pages&gt;
+    &lt;page view-id="/hello.jsp" action="#{helloWorld.sayHello}"/&gt;
+&lt;/pages&gt;
+</programlisting>
+	<para>
+		Or we can use a wildcard to specify an action that applies to all view ids that match the pattern:
+	</para>
+	
+<programlisting>&lt;pages&gt;
+    &lt;page view-id="/hello/*" action="#{helloWorld.sayHello}"/&gt;
+&lt;/pages&gt;
+</programlisting>
+	<para>
+		If multiple wildcarded page actions match the current view-id, Seam will call all the actions, in order of least-specific to most-specific.
+	</para>
+	<para>
+		The page action method can return a JSF outcome. If the outcome is non-null, Seam will use the defined navigation rules to navigate to a view.
+	</para>
+	<para>
+		Furthermore, the view id mentioned in the <literal>&lt;page&gt;</literal> element need not correspond to a real JSP or Facelets page. So, we can reproduce the functionality of a traditional action-oriented framework like Struts or WebWork using page actions.
+	</para>
+	<!--  <para>
+		For example:
+	</para>	
+<programlisting>TODO: translate struts action into page action</programlisting>  -->
+	<para>
+		This is quite useful if you want to do complex things in response to non-faces requests (for example, HTTP GET requests).
+	</para>
+	<sect3 id="Seam_Reference_Guide-Page_actions-Page_parameters"><title>Page parameters</title>
+	<para>
+		A JSF faces request (a form submission) encapsulates both an <emphasis>action</emphasis> (a method binding) and <emphasis>parameters</emphasis> (input value bindings). A page action might also require parameters.
+	</para>
+	<para>
+		Since GET requests are bookmarkable, page parameters are passed as human-readable request parameters. (Unlike JSF form inputs, which are anything but!)
+	</para>
+	<para>
+		Seam lets us provide a value binding that maps a named request parameter to an attribute of a model object.
+	</para>
+	
+<programlisting>&lt;pages&gt;
+    &lt;page view-id="/hello.jsp" action="#{helloWorld.sayHello}"&gt;
+        &lt;param name="firstName" value="#{person.firstName}"/&gt;
+        &lt;param name="lastName" value="#{person.lastName}"/&gt;
+    &lt;/page&gt;
+&lt;/pages&gt;
+</programlisting>
+	<para>
+		The <literal>&lt;param&gt;</literal> declaration is bidirectional, just like a value binding for a JSF input:
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				When a non-faces (GET) request for the view id occurs, Seam sets the value of the named request parameter onto the model object, after performing appropriate type conversions.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Any <literal>&lt;s:link&gt;</literal> or <literal>&lt;s:button&gt;</literal> transparently includes the request parameter. The value of the parameter is determined by evaluating the value binding during the render phase (when the <literal>&lt;s:link&gt;</literal> is rendered).
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Any navigation rule with a <literal>&lt;redirect/&gt;</literal> to the view id transparently includes the request parameter. The value of the parameter is determined by evaluating the value binding at the end of the invoke application phase.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				The value is transparently propagated with any JSF form submission for the page with the given view-id. (This means that view parameters behave like <literal>PAGE</literal>-scoped context variables for faces requests.
+			</para>
+		</listitem>
+	</itemizedlist>
+	<para>
+		The essential idea behind all this is that <emphasis>however</emphasis> we get from any other page to <literal>/hello.jsp</literal> (or from <literal>/hello.jsp</literal> back to <literal>/hello.jsp</literal>), the value of the model attribute referred to in the value binding is <emphasis>remembered</emphasis>, without the need for a conversation (or other server-side state).
+	</para>
+	<para>
+		This all sounds pretty complex, however the initial effort is worth it in the end. Page parameters are the most elegant way to propagate state across a non-faces request. They are especially cool for problems like search screens with bookmarkable results pages, where we would like to be able to write our application code to handle both POST and GET requests with the same code. Page parameters eliminate repetitive listing of request parameters in the view definition and make redirects much easier to code.
+	</para>
+	<para>
+		You don not need an actual page action method binding to use a page parameter. The following is perfectly valid:
+	</para>
+	
+<programlisting>&lt;pages&gt;
+    &lt;page view-id="/hello.jsp"&gt;
+        &lt;param name="firstName" value="#{person.firstName}"/&gt;
+        &lt;param name="lastName" value="#{person.lastName}"/&gt;
+    &lt;/page&gt;
+&lt;/pages&gt;
+</programlisting>
+	<para>
+		You can even specify a JSF converter:
+	</para>
+	
+<programlisting>&lt;pages&gt;
+    &lt;page view-id="/calculator.jsp" action="#{calculator.calculate}"&gt;
+        &lt;param name="x" value="#{calculator.lhs}"/&gt;
+        &lt;param name="y" value="#{calculator.rhs}"/&gt;
+        &lt;param name="op" converterId="com.my.calculator.OperatorConverter" value="#{calculator.op}"/&gt;
+    &lt;/page&gt;
+&lt;/pages&gt;
+</programlisting>
+	
+<programlisting>&lt;pages&gt;
+    &lt;page view-id="/calculator.jsp" action="#{calculator.calculate}"&gt;
+        &lt;param name="x" value="#{calculator.lhs}"/&gt;
+        &lt;param name="y" value="#{calculator.rhs}"/&gt;
+        &lt;param name="op" converter="#{operatorConverter}" value="#{calculator.op}"/&gt;
+    &lt;/page&gt;
+&lt;/pages&gt;
+</programlisting>
+	</sect3><sect3 id="Seam_Reference_Guide-Page_actions-Navigation"><title>Navigation</title>
+	<para>
+		You can use standard JSF navigation rules defined in <literal>faces-config.xml</literal> in a Seam application. However, JSF navigation rules have a number of annoying limitations:
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				It is not possible to specify request parameters to be used when redirecting.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				It is not possible to begin or end conversations from a rule.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Rules work by evaluating the return value of the action method; it is not possible to evaluate an arbitrary EL expression.
+			</para>
+		</listitem>
+	</itemizedlist>
+	<para>
+		A further problem is that <emphasis>orchestration</emphasis> logic gets scattered between <literal>pages.xml</literal> and <literal>faces-config.xml</literal>. It is better to unify this logic into <literal>pages.xml</literal>.
+	</para>
+	<para>
+		This JSF navigation rule:
+	</para>
+	
+<programlisting>&lt;navigation-rule&gt;
+    &lt;from-view-id&gt;/editDocument.xhtml&lt;/from-view-id&gt;
+    
+    &lt;navigation-case&gt;
+        &lt;from-action&gt;#{documentEditor.update}&lt;/from-action&gt;
+        &lt;from-outcome&gt;success&lt;/from-outcome&gt;
+        &lt;to-view-id&gt;/viewDocument.xhtml&lt;/to-view-id&gt;
+        &lt;redirect/&gt;
+    &lt;/navigation-case&gt;
+    
+&lt;/navigation-rule&gt;
+</programlisting>
+	<para>
+		Can be rewritten as follows:
+	</para>
+	
+<programlisting>&lt;page view-id="/editDocument.xhtml"&gt;
+    
+    &lt;navigation from-action="#{documentEditor.update}"&gt;
+        &lt;rule if-outcome="success"&gt;
+            &lt;redirect view-id="/viewDocument.xhtml"/&gt;
+        &lt;/rule&gt;
+    &lt;/navigation&gt;
+    
+&lt;/page&gt;
+</programlisting>
+	<para>
+		But it would be even nicer if we did not have to pollute our <literal>DocumentEditor</literal> component with string-valued return values (the JSF outcomes). So Seam lets us write:
+	</para>
+	
+<programlisting>&lt;page view-id="/editDocument.xhtml"&gt;
+    
+    &lt;navigation from-action="#{documentEditor.update}" 
+                   evaluate="#{documentEditor.errors.size}"&gt;
+        &lt;rule if-outcome="0"&gt;
+            &lt;redirect view-id="/viewDocument.xhtml"/&gt;
+        &lt;/rule&gt;
+    &lt;/navigation&gt;
+    
+&lt;/page&gt;
+</programlisting>
+	<para>
+		Or even:
+	</para>
+	
+<programlisting>&lt;page view-id="/editDocument.xhtml"&gt;
+    
+    &lt;navigation from-action="#{documentEditor.update}"&gt;
+        &lt;rule if="#{documentEditor.errors.empty}"&gt;
+            &lt;redirect view-id="/viewDocument.xhtml"/&gt;
+        &lt;/rule&gt;
+    &lt;/navigation&gt;
+    
+&lt;/page&gt;
+</programlisting>
+	<para>
+		The first form evaluates a value binding to determine the outcome value to be used by the subsequent rules. The second approach ignores the outcome and evaluates a value binding for each possible rule.
+	</para>
+	<para>
+		When an update succeeds, we probably want to end the current conversation. We can do that like this:
+	</para>
+	
+<programlisting>&lt;page view-id="/editDocument.xhtml"&gt;
+    
+    &lt;navigation from-action="#{documentEditor.update}"&gt;
+        &lt;rule if="#{documentEditor.errors.empty}"&gt;
+            &lt;end-conversation/&gt;
+            &lt;redirect view-id="/viewDocument.xhtml"/&gt;
+        &lt;/rule&gt;
+    &lt;/navigation&gt;
+    
+&lt;/page&gt;
+</programlisting>
+	<para>
+		But ending the conversation loses any state associated with the conversation, including the document we are currently interested in! One solution would be to use an immediate render instead of a redirect:
+	</para>
+	
+<programlisting>&lt;page view-id="/editDocument.xhtml"&gt;
+    
+    &lt;navigation from-action="#{documentEditor.update}"&gt;
+        &lt;rule if="#{documentEditor.errors.empty}"&gt;
+            &lt;end-conversation/&gt;
+            &lt;render view-id="/viewDocument.xhtml"/&gt;
+        &lt;/rule&gt;
+    &lt;/navigation&gt;
+    
+&lt;/page&gt;
+</programlisting>
+	<para>
+		But the correct solution is to pass the document ID as a request parameter:
+	</para>
+	
+<programlisting>&lt;page view-id="/editDocument.xhtml"&gt;
+    
+    &lt;navigation from-action="#{documentEditor.update}"&gt;
+        &lt;rule if="#{documentEditor.errors.empty}"&gt;
+            &lt;end-conversation/&gt;
+            &lt;redirect view-id="/viewDocument.xhtml"&gt;
+                &lt;param name="documentId" value="#{documentEditor.documentId}"/&gt;
+            &lt;/redirect&gt;
+        &lt;/rule&gt;
+    &lt;/navigation&gt;
+    
+&lt;/page&gt;
+</programlisting>
+	<para>
+		Null outcomes are a special case in JSF. The null outcome is interpreted to mean <emphasis>redisplay the page</emphasis>. The following navigation rule matches any non-null outcome, but <emphasis>not</emphasis> the null outcome:
+	</para>
+	
+<programlisting>&lt;page view-id="/editDocument.xhtml"&gt;
+    
+    &lt;navigation from-action="#{documentEditor.update}"&gt;
+        &lt;rule&gt;
+            &lt;render view-id="/viewDocument.xhtml"/&gt;
+        &lt;/rule&gt;
+    &lt;/navigation&gt;
+    
+&lt;/page&gt;
+</programlisting>
+	<para>
+		If you want to perform navigation when a null outcome occurs, use the following form instead:
+	</para>
+	
+<programlisting>&lt;page view-id="/editDocument.xhtml"&gt;
+    
+    &lt;navigation from-action="#{documentEditor.update}"&gt;
+        &lt;render view-id="/viewDocument.xhtml"/&gt;
+    &lt;/navigation&gt;
+    
+&lt;/page&gt;
+</programlisting>
+	</sect3><sect3 id="Seam_Reference_Guide-Page_actions-Fine_grained_files_for_definition_of_navigation_page_actions_and_parameters"><title>Fine-grained files for definition of navigation, page actions and parameters</title>
+	<para>
+		If you have a lot of different page actions and page parameters, or even just a lot of navigation rules, you will almost certainly want to split the declarations up over multiple files. You can define actions and parameters for a page with the view id <literal>/calc/calculator.jsp</literal> in a resource named <literal>calc/calculator.page.xml</literal>. The root element in this case is the <literal>&lt;page&gt;</literal> element, and the view id is implied:
+	</para>
+	
+<programlisting>&lt;page action="#{calculator.calculate}"&gt;
+    &lt;param name="x" value="#{calculator.lhs}"/&gt;
+    &lt;param name="y" value="#{calculator.rhs}"/&gt;
+    &lt;param name="op" converter="#{operatorConverter}" value="#{calculator.op}"/&gt;
+&lt;/page&gt;
+</programlisting>
+	</sect3></sect2><sect2 id="Seam_Reference_Guide-Seam_events-Component_driven_events"><title>Component-driven events</title>
+	<para>
+		Seam components can interact by simply calling each others methods. Stateful components may even implement the observer/observable pattern. But to enable components to interact in a more loosely-coupled fashion than is possible when the components call each others methods directly, Seam provides <emphasis>component-driven events</emphasis>.
+	</para>
+	<para>
+		We specify event listeners (observers) in <literal>components.xml</literal>.
+	</para>
+	
+<programlisting>&lt;components&gt;
+    &lt;event type="hello"&gt;
+        &lt;action expression="#{helloListener.sayHelloBack}"/&gt;
+        &lt;action expression="#{logger.logHello}"/&gt;
+    &lt;/event&gt;
+&lt;/components&gt;
+</programlisting>
+	<para>
+		Where the <emphasis>event type</emphasis> is just an arbitrary string.
+	</para>
+	<para>
+		When an event occurs, the actions registered for that event will be called in the order they appear in <literal>components.xml</literal>. How does a component raise an event? Seam provides a built-in component for this.
+	</para>
+	
+<programlisting>@Name("helloWorld")
+public class HelloWorld {
+    public void sayHello() {
+        FacesMessages.instance().add("Hello World!");
+        Events.instance().raiseEvent("hello");
+    }
+}
+</programlisting>
+	<para>
+		Or you can use an annotation.
+	</para>
+	
+<programlisting>@Name("helloWorld")
+public class HelloWorld {
+    @RaiseEvent("hello")
+    public void sayHello() {
+        FacesMessages.instance().add("Hello World!");
+    }
+}
+</programlisting>
+	<para>
+		Notice that this event producer has no dependency upon event consumers. The event listener may now be implemented with absolutely no dependency upon the producer:
+	</para>
+	
+<programlisting>@Name("helloListener")
+public class HelloListener {
+    public void sayHelloBack() {
+        FacesMessages.instance().add("Hello to you too!");
+    }
+}
+</programlisting>
+	<para>
+		The method binding defined in <literal>components.xml</literal> above takes care of mapping the event to the consumer. If you do not like futzing about in the <literal>components.xml</literal> file, you can use an annotation instead:
+	</para>
+	
+<programlisting>@Name("helloListener")
+public class HelloListener {
+    @Observer("hello")
+    public void sayHelloBack() {
+        FacesMessages.instance().add("Hello to you too!");
+    }
+}
+</programlisting>
+	<para>
+		In terms of event objects, Seam does not require an event object to propagate state between event producer and listener. State is held in the Seam contexts, and is shared between components. However, if you really want to pass an event object, you can:
+	</para>
+	
+<programlisting>@Name("helloWorld")
+public class HelloWorld {
+    private String name;
+    public void sayHello() {
+        FacesMessages.instance().add("Hello World, my name is #0.", name);
+        Events.instance().raiseEvent("hello", name);
+    }
+}
+</programlisting>
+	
+<programlisting>@Name("helloListener")
+public class HelloListener {
+    @Observer("hello")
+    public void sayHelloBack(String name) {
+        FacesMessages.instance().add("Hello #0!", name);
+    }
+}
+</programlisting>
+	</sect2><sect2 id="Seam_Reference_Guide-Seam_events-Contextual_events"><title>Contextual events</title>
+	<para>
+		Seam defines a number of built-in events that the application can use to perform special kinds of framework integration. The events are:
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.validationFailed</literal> &mdash; called when JSF validation fails
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.noConversation</literal> &mdash; called when there is no long running conversation and a long running conversation is required
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.preSetVariable.&lt;name&gt;</literal> &mdash; called when the context variable &lt;name&gt; is set
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.postSetVariable.&lt;name&gt;</literal> &mdash; called when the context variable &lt;name&gt; is set
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.preRemoveVariable.&lt;name&gt;</literal> &mdash; called when the context variable &lt;name&gt; is unset
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.postRemoveVariable.&lt;name&gt;</literal> &mdash; called when the context variable &lt;name&gt; is unset
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.preDestroyContext.&lt;SCOPE&gt;</literal> &mdash; called before the &lt;SCOPE&gt; context is destroyed
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.postDestroyContext.&lt;SCOPE&gt;</literal> &mdash; called after the &lt;SCOPE&gt; context is destroyed
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.beginConversation </literal>&mdash; called whenever a long-running conversation begins
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.endConversation </literal>&mdash; called whenever a long-running conversation ends
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.beginPageflow.&lt;name&gt; </literal>&mdash; called when the pageflow &lt;name&gt; begins
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.endPageflow.&lt;name&gt; </literal>&mdash; called when the pageflow &lt;name&gt; ends
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.createProcess.&lt;name&gt; </literal>&mdash; called when the process &lt;name&gt; is created
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.endProcess.&lt;name&gt; </literal>&mdash; called when the process &lt;name&gt; ends
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.initProcess.&lt;name&gt; </literal>&mdash; called when the process &lt;name&gt; is associated with the conversation
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.initTask.&lt;name&gt; </literal>&mdash; called when the task &lt;name&gt; is associated with the conversation
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.startTask.&lt;name&gt; </literal>&mdash; called when the task &lt;name&gt; is started
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.endTask.&lt;name&gt; </literal>&mdash; called when the task &lt;name&gt; is ended
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.postCreate.&lt;name&gt; </literal>&mdash; called when the component &lt;name&gt; is created
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.preDestroy.&lt;name&gt; </literal>&mdash; called when the component &lt;name&gt; is destroyed
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.beforePhase </literal>&mdash; called before the start of a JSF phase
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.afterPhase </literal>&mdash; called after the end of a JSF phase
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.postAuthenticate.&lt;name&gt; </literal>&mdash; called after a user is authenticated
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.preAuthenticate.&lt;name&gt; </literal>&mdash; called before attempting to authenticate a user
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.notLoggedIn</literal> &mdash; called there is no authenticated user and authentication is required
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.rememberMe</literal> &mdash; occurs when Seam security detects the username in a cookie
+			</para>
+		</listitem>
+	</itemizedlist>
+	<para>
+		Seam components may observe any of these events in just the same way they observe any other component-driven events.
+	</para>
+	</sect2></sect1><sect1 id="Seam_Reference_Guide-Events_interceptors_and_exception_handling-Seam_interceptors"><title>Seam interceptors</title>
+	<para>
+		EJB 3.0 introduced a standard interceptor model for session bean components. To add an interceptor to a bean, you need to write a class with a method annotated <literal>@AroundInvoke</literal> and annotate the bean with an <literal>@Interceptors</literal> annotation that specifies the name of the interceptor class. For example, the following interceptor checks that the user is logged in before allowing invoking an action listener method:
+	</para>
+	
+<programlisting>public class LoggedInInterceptor {
+
+   @AroundInvoke
+   public Object checkLoggedIn(InvocationContext invocation) throws Exception {
+   
+      boolean isLoggedIn = Contexts.getSessionContext().get("loggedIn")!=null;
+      if (isLoggedIn) {
+         //the user is already logged in
+         return invocation.proceed();
+      }
+      else {
+         //the user is not logged in, fwd to login page
+         return "login";
+      }
+   }
+
+}
+</programlisting>
+	<para>
+		To apply this interceptor to a session bean which acts as an action listener, we must annotate the session bean <literal>@Interceptors(LoggedInInterceptor.class)</literal>. This is a somewhat ugly annotation. Seam builds upon the interceptor framework in EJB3 by allowing you to use <literal>@Interceptors</literal> as a meta-annotation. In our example, we would create an <literal>@LoggedIn</literal> annotation, as follows:
+	</para>
+	
+<programlisting>@Target(TYPE)
+ at Retention(RUNTIME)
+ at Interceptors(LoggedInInterceptor.class)
+public @interface LoggedIn {}
+</programlisting>
+	<para>
+		We can now simply annotate our action listener bean with <literal>@LoggedIn</literal> to apply the interceptor.
+	</para>
+	
+<programlisting>@Stateless
+ at Name("changePasswordAction")
+ at LoggedIn
+ at Interceptors(SeamInterceptor.class)
+public class ChangePasswordAction implements ChangePassword { 
+    
+    ...
+    
+    public String changePassword() { ... }
+    
+}
+</programlisting>
+	<para>
+		If interceptor ordering is important (it usually is), you can add <literal>@Interceptor</literal> annotations to your interceptor classes to specify a partial order of interceptors.
+	</para>
+	
+<programlisting>@Interceptor(around={BijectionInterceptor.class,
+                     ValidationInterceptor.class,
+                     ConversationInterceptor.class},
+             within=RemoveInterceptor.class)
+public class LoggedInInterceptor
+{
+    ...
+}
+</programlisting>
+	<para>
+		You can even have a <emphasis>client-side</emphasis> interceptor, that runs around any of the built-in functionality of EJB3:
+	</para>
+	
+<programlisting>@Interceptor(type=CLIENT)
+public class LoggedInInterceptor
+{
+    ...
+}
+</programlisting>
+	<para>
+		EJB interceptors are stateful, with a lifecycle that is the same as the component they intercept. For interceptors which do not need to maintain state, Seam lets you get a performance optimization by specifying <literal>@Interceptor(stateless=true)</literal>.
+	</para>
+	<para>
+		Much of the functionality of Seam is implemented as a set of built-in Seam interceptors, including the interceptors named in the previous example. You do not have to explicitly specify these interceptors by annotating your components; they exist for all interceptable Seam components.
+	</para>
+	<para>
+		You can even use Seam interceptors with JavaBean components, not just EJB3 beans.
+	</para>
+	<para>
+		EJB defines interception not only for business methods (using <literal>@AroundInvoke</literal>), but also for the lifecycle methods <literal>@PostConstruct</literal>, <literal>@PreDestroy</literal>, <literal>@PrePassivate</literal> and <literal>@PostActive</literal>. Seam supports all these lifecycle methods on both component and interceptor not only for EJB3 beans, but also for JavaBean components (except <literal>@PreDestroy</literal> which is not meaningful for JavaBean components).
+	</para>
+	</sect1><sect1 id="Seam_Reference_Guide-Events_interceptors_and_exception_handling-Managing_exceptions"><title>Managing exceptions</title>
+	<para>
+		JSF is surprisingly limited when it comes to exception handling. As a partial workaround for this problem, Seam lets you define how a particular class of exception is to be treated by annotating the exception class, or declaring the exception class in an XML file. This facility is meant to be combined with the EJB 3.0-standard <literal>@ApplicationException</literal> annotation which specifies whether the exception should cause a transaction rollback.
+	</para>
+	<sect2 id="Seam_Reference_Guide-Managing_exceptions-Exceptions_and_transactions"><title>Exceptions and transactions</title>
+	<para>
+		EJB specifies well-defined rules that let us control whether an exception immediately marks the current transaction for rollback when it is thrown by a business method of the bean: <emphasis>system exceptions</emphasis> always cause a transaction rollback, <emphasis>application exceptions</emphasis> do not cause a rollback by default, but they do if <literal>@ApplicationException(rollback=true)</literal> is specified. (An application exception is any checked exception, or any unchecked exception annotated <literal>@ApplicationException</literal>. A system exception is any unchecked exception without an <literal>@ApplicationException</literal> annotation.)
+	</para>
+	<note>
+		<para>
+			There is a difference between marking a transaction for rollback, and actually rolling it back. The exception rules say that the transaction should be marked rollback only, but it may still be active after the exception is thrown.
+		</para>
+	</note>
+	<para>
+		Seam applies the EJB 3.0 exception rollback rules also to Seam JavaBean components.
+	</para>
+	<para>
+		But these rules only apply in the Seam component layer. What about an exception that is uncaught and propagates out of the Seam component layer, and out of the JSF layer? Well, it is always wrong to leave a dangling transaction open, so Seam rolls back any active transaction when an exception occurs and is uncaught in the Seam component layer.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Managing_exceptions-Enabling_Seam_exception_handling"><title>Enabling Seam exception handling</title>
+	<para>
+		To enable Seam's exception handling, we need to make sure we have the master servlet filter declared in <literal>web.xml</literal>:
+	</para>
+	
+<programlisting>&lt;filter&gt;
+    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;
+    &lt;filter-class&gt;org.jboss.seam.servlet.SeamFilter&lt;/filter-class&gt;
+&lt;/filter&gt;
+
+&lt;filter-mapping&gt;
+    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;
+    &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;
+&lt;/filter-mapping&gt;
+</programlisting>
+	<para>
+		You may also need to disable Facelets development mode in <literal>web.xml</literal> and Seam debug mode in <literal>components.xml</literal> if you want your exception handlers to fire.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Managing_exceptions-Using_annotations_for_exception_handling"><title>Using annotations for exception handling</title>
+	<para>
+		The following exception results in a HTTP 404 error whenever it propagates out of the Seam component layer. It does not roll back the current transaction immediately when thrown, but the transaction will be rolled back if it the exception is not caught by another Seam component.
+	</para>
+	
+<programlisting>@HttpError(errorCode=404)
+public class ApplicationException extends Exception { ... }
+</programlisting>
+	<para>
+		This exception results in a browser redirect whenever it propagates out of the Seam component layer. It also ends the current conversation. It causes an immediate rollback of the current transaction.
+	</para>
+	
+<programlisting>@Redirect(viewId="/failure.xhtml", end=true)
+ at ApplicationException(rollback=true)
+public class UnrecoverableApplicationException extends RuntimeException { ... }
+</programlisting>
+	<important>
+		<para>
+			<literal>@Redirect</literal> does not work for exceptions which occur during the render phase of the JSF lifecycle.
+		</para>
+	</important>
+	<para>
+		This exception results in a redirect, along with a message to the user, when it propagates out of the Seam component layer. It also immediately rolls back the current transaction.
+	</para>
+	
+<programlisting>@Redirect(viewId="/error.xhtml", message="Unexpected error")
+public class SystemException extends RuntimeException { ... }
+</programlisting>
+	</sect2><sect2 id="Seam_Reference_Guide-Managing_exceptions-Using_XML_for_exception_handling"><title>Using XML for exception handling</title>
+	<para>
+		Since we cannot add annotations to all the exception classes we are interested in, Seam also lets us specify this functionality in <literal>pages.xml</literal>.
+	</para>
+	
+<programlisting>&lt;pages&gt;
+   
+   &lt;exception class="javax.persistence.EntityNotFoundException"&gt;
+      &lt;http-error error-code="404"/&gt;
+   &lt;/exception&gt;
+   
+   &lt;exception class="javax.persistence.PersistenceException"&gt;
+      &lt;end-conversation/&gt;
+      &lt;redirect view-id="/error.xhtml"&gt;
+          &lt;message&gt;Database access failed&lt;/message&gt;
+      &lt;/redirect&gt;
+   &lt;/exception&gt;
+   
+   &lt;exception&gt;
+      &lt;end-conversation/&gt;
+      &lt;redirect view-id="/error.xhtml"&gt;
+          &lt;message&gt;Unexpected failure&lt;/message&gt;
+      &lt;/redirect&gt;
+   &lt;/exception&gt;
+   
+&lt;/pages&gt;
+</programlisting>
+	<para>
+		The last <literal>&lt;exception&gt;</literal> declaration does not specify a class, and is a catch-all for any exception for which handling is not otherwise specified via annotations or in <literal>pages.xml</literal>.
+	</para>
+	<para>
+		You can also access the handled exception instance through EL, Seam places it in the conversation context, for example, to access the message of the exception:
+	</para>
+	
+<programlisting>...
+throw new AuthorizationException("You are not allowed to do this!");
+
+&lt;pages&gt;
+
+    &lt;exception class="org.jboss.seam.security.AuthorizationException"&gt;
+        &lt;end-conversation/&gt;
+        &lt;redirect view-id="/error.xhtml"&gt;
+            &lt;message severity="WARN"&gt;#{handledException.message}&lt;/message&gt;
+        &lt;/redirect&gt;
+    &lt;/exception&gt;
+
+&lt;/pages&gt;
+</programlisting>
+	</sect2></sect1>
+</chapter>
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Feedback.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Feedback.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Feedback.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,12 @@
+<?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" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Seam_Reference_Guide_CP07.ent">
+%BOOK_ENTITIES;
+]>
+<chapter id="Feedback" lang="en-US">
+	<title>Feedback</title>
+	<para>
+		If you spot a typo in this guide, or if you have thought of a way to make this manual better, we would love to hear from you! Submit a report in <ulink url="http://jira.jboss.com/jira/browse/JBPAPP">JIRA</ulink> against the Product: JBoss Enterprise Application Platform, Version: <replaceable>&lt;version&gt;</replaceable>, Component: <emphasis>Doc</emphasis>. If you have a suggestion for improving the documentation, try to be as specific as possible. If you have found an error, include the section number and some of the surrounding text so we can find it easily.
+	</para>
+</chapter>
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Framework.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Framework.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Framework.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,450 @@
+<?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" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Seam_Reference_Guide_CP07.ent">
+%BOOK_ENTITIES;
+]>
+<chapter id="Seam_Reference_Guide-The_Seam_Application_Framework" lang="en-US">
+	<title>The Seam Application Framework</title>
+	<para>
+		Seam makes it really easy to create applications by writing plain Java classes with annotations, which do not need to extend any special interfaces or superclasses. But we can simplify some common programming tasks even further, by providing a set of pre-built components which can be re-used either by configuration in <literal>components.xml</literal> (for very simple cases) or extension.
+	</para>
+	<para>
+		The <emphasis>Seam Application Framework</emphasis> can reduce the amount of code you need to write when doing basic database access in a web application, using either Hibernate or JPA.
+	</para>
+	<para>
+		We should emphasize that the framework is extremely simple, just a handful of simple classes that are easy to understand and extend that Seam then uses when creating your application.
+	</para>
+	<section id="Seam_Reference_Guide-The_Seam_Application_Framework-Introduction">
+		<title>Introduction</title>
+		<para>
+			The components provided by the Seam application framework may be used in one of two different approaches. The first way is to install and configure an instance of the component in <literal>components.xml</literal>, just like we have done with other kinds of built-in Seam components. For example, the following fragment from <literal>components.xml</literal> installs a component which can perform basic CRUD operations for a <literal>Contact</literal> entity:
+		</para>
+		
+<programlisting>&lt;framework:entity-home name="personHome" 
+                       entity-class="eg.Person" 
+                       entity-manager="#{personDatabase}"&gt;
+    &lt;framework:id&gt;#{param.personId}&lt;/framework:id&gt;
+&lt;/framework:entity-home&gt;
+</programlisting>
+		<para>
+			If you would rather a different method to the above, you can use extension instead:
+		</para>
+		
+<programlisting>@Stateful
+ at Name("personHome")
+public class PersonHome extends EntityHome&lt;Person&gt; implements LocalPersonHome {
+    @RequestParameter String personId;
+    @In EntityManager personDatabase;
+    
+    public Object getId() { return personId; }
+    public EntityManager getEntityManager() { return personDatabase; }
+    
+}
+</programlisting>
+		<para>
+			The second approach has one huge advantage: you can easily add extra functionality, and override the built-in functionality (the framework classes were carefully designed for extension and customization).
+		</para>
+		<para>
+			A second advantage is that your classes may be EJB stateful sessin beans, if you like. (They do not have to be, they can be plain JavaBean components if you prefer.)
+		</para>
+		<para>
+			At this time, the Seam Application Framework provides just four built-in components: <literal>EntityHome</literal> and <literal>HibernateEntityHome</literal> for CRUD, along with <literal>EntityQuery</literal> and <literal>HibernateEntityQuery</literal> for queries.
+		</para>
+		<para>
+			The Home and Query components are written so that they can function with a scope of session, event or conversation. Which scope you use depends upon the state model you wish to use in your application.
+		</para>
+		<para>
+			The Seam Application Framework only works with Seam-managed persistence contexts. By default, the components will look for a persistence context named <literal>entityManager</literal>.
+		</para>
+	</section>
+	
+	<section id="Seam_Reference_Guide-The_Seam_Application_Framework-Home_objects">
+		<title>Home objects</title>
+		<para>
+			A Home object provides persistence operations for a particular entity class. Suppose we have our trusty <literal>Person</literal> class:
+		</para>
+		
+<programlisting>@Entity
+public class Person {
+    @Id private Long id;
+    private String firstName;
+    private String lastName;
+    private Country nationality;
+    
+    //getters and setters...
+}
+</programlisting>
+		<para>
+			We can define a <literal>personHome</literal> component either via configuration:
+		</para>
+		
+<programlisting>&lt;framework:entity-home name="personHome" entity-class="eg.Person" /&gt;
+</programlisting>
+		<para>
+			Or via extension:
+		</para>
+		
+<programlisting>@Name("personHome")
+public class PersonHome extends EntityHome&lt;Person&gt; {}
+</programlisting>
+		<para>
+			A Home object provides the following operations: <literal>persist()</literal>, <literal>remove()</literal>, <literal>update()</literal> and <literal>getInstance()</literal>. Before you can call the <literal>remove()</literal>, or <literal>update()</literal> operations, you must first set the identifier of the object you are interested in, using the <literal>setId()</literal> method.
+		</para>
+		<para>
+			We can use a Home directly from a JSF page, for example:
+		</para>
+		
+<programlisting>&lt;h1&gt;Create Person&lt;/h1&gt;
+&lt;h:form&gt;
+    &lt;div&gt;First name: &lt;h:inputText value="#{personHome.instance.firstName}"/&gt;&lt;/div&gt;
+    &lt;div&gt;Last name: &lt;h:inputText value="#{personHome.instance.lastName}"/&gt;&lt;/div&gt;
+    &lt;div&gt;
+        &lt;h:commandButton value="Create Person" action="#{personHome.persist}"/&gt;
+    &lt;/div&gt;
+&lt;/h:form&gt;
+</programlisting>
+		<para>
+			Usually, it is much nicer to be able to refer to the <literal>Person</literal> merely as <literal>person</literal>, so let us make that possible by adding a line to <literal>components.xml</literal>:
+		</para>
+		
+<programlisting>&lt;factory name="person" 
+         value="#{personHome.instance}"/&gt;
+
+&lt;framework:entity-home name="personHome" 
+                       entity-class="eg.Person" /&gt;
+</programlisting>
+		<para>
+			(If we are using configuration.) Or by adding a <literal>@Factory</literal> method to <literal>PersonHome</literal>:
+		</para>
+		
+<programlisting>@Name("personHome")
+public class PersonHome extends EntityHome&lt;Person&gt; {
+    
+    @Factory("person")
+    public Person initPerson() { return getInstance(); }
+    
+}
+</programlisting>
+		<para>
+			(If we are using extension.) This change simplifies our JSF page to the following:
+		</para>
+		
+<programlisting>&lt;h1&gt;Create Person&lt;/h1&gt;
+&lt;h:form&gt;
+    &lt;div&gt;First name: &lt;h:inputText value="#{person.firstName}"/&gt;&lt;/div&gt;
+    &lt;div&gt;Last name: &lt;h:inputText value="#{person.lastName}"/&gt;&lt;/div&gt;
+    &lt;div&gt;
+        &lt;h:commandButton value="Create Person" action="#{personHome.persist}"/&gt;
+    &lt;/div&gt;
+&lt;/h:form&gt;
+</programlisting>
+		<para>
+			Well, that lets us create new <literal>Person</literal> entries. Now, if we want to be able to display, update and delete pre-existing <literal>Person</literal> entries in the database, we need to be able to pass the entry identifier to the <literal>PersonHome</literal>. Page parameters are a great way to do that:
+		</para>
+		
+<programlisting>&lt;pages&gt;
+    &lt;page view-id="/editPerson.jsp"&gt;
+        &lt;param name="personId" value="#{personHome.id}"/&gt;
+    &lt;/page&gt;
+&lt;/pages&gt;
+</programlisting>
+		<para>
+			Now we can add the extra operations to our JSF page:
+		</para>
+		
+<programlisting>&lt;h1&gt;
+    &lt;h:outputText rendered="#{!personHome.managed}" value="Create Person"/&gt;
+    &lt;h:outputText rendered="#{personHome.managed}" value="Edit Person"/&gt;
+&lt;/h1&gt;
+&lt;h:form&gt;
+    &lt;div&gt;First name: &lt;h:inputText value="#{person.firstName}"/&gt;&lt;/div&gt;
+    &lt;div&gt;Last name: &lt;h:inputText value="#{person.lastName}"/&gt;&lt;/div&gt;
+    &lt;div&gt;
+        &lt;h:commandButton value="Create Person" action="#{personHome.persist}" 
+                             rendered="#{!personHome.managed}"/&gt;
+        &lt;h:commandButton value="Update Person" action="#{personHome.update}" 
+                             rendered="#{personHome.managed}"/&gt;
+        &lt;h:commandButton value="Delete Person" action="#{personHome.remove}" 
+                             rendered="#{personHome.managed}"/&gt;
+    &lt;/div&gt;
+&lt;/h:form&gt;
+</programlisting>
+		<para>
+			When we link to the page with no request parameters, the page will be displayed as a <emphasis>Create Person</emphasis> page. When we provide a value for the <literal>personId</literal> request parameter, it will be an <emphasis>Edit Person</emphasis> page.
+		</para>
+		<para>
+			Suppose we need to create <literal>Person</literal> entries with their nationality initialized. We can do that easily, via configuration:
+		</para>
+		
+<programlisting>&lt;factory name="person" 
+         value="#{personHome.instance}"/&gt;
+
+&lt;framework:entity-home name="personHome" 
+                       entity-class="eg.Person" 
+                       new-instance="#{newPerson}"/&gt;
+
+&lt;component name="newPerson" 
+           class="eg.Person"&gt;
+    &lt;property name="nationality"&gt;#{country}&lt;/property&gt;
+&lt;/component&gt;
+</programlisting>
+		<para>
+			Or by extension:
+		</para>
+		
+<programlisting>@Name("personHome")
+public class PersonHome extends EntityHome&lt;Person&gt; {
+    
+    @In Country country;
+    
+    @Factory("person")
+    public Person initPerson() { return getInstance(); }
+    
+    protected Person createInstance() {
+        return new Person(country);
+    }
+    
+}
+</programlisting>
+		<para>
+			Of course, the <literal>Country</literal> could be an object managed by another Home object, for example, <literal>CountryHome</literal>.
+		</para>
+		<para>
+			To add more sophisticated operations (association management, etc), we can just add methods to <literal>PersonHome</literal>.
+		</para>
+		
+<programlisting>@Name("personHome")
+public class PersonHome extends EntityHome&lt;Person&gt; {
+    
+    @In Country country;
+    
+    @Factory("person")
+    public Person initPerson() { return getInstance(); }
+    
+    protected Person createInstance() {
+        return new Person(country);
+    }
+    
+    public void migrate()
+    {
+        getInstance().setCountry(country);
+        update();
+    }
+    
+}
+</programlisting>
+		<para>
+			The Home object automatically displays faces messages when an operation is successful. To customize these messages we can, again, use configuration:
+		</para>
+		
+<programlisting>&lt;factory name="person" 
+         value="#{personHome.instance}"/&gt;
+
+&lt;framework:entity-home name="personHome"
+                       entity-class="eg.Person"
+                       new-instance="#{newPerson}"&gt;
+    &lt;framework:created-message&gt;New person #{person.firstName} #{person.lastName} created&lt;/framework:created-message&gt;
+    &lt;framework:deleted-message&gt;Person #{person.firstName} #{person.lastName} deleted&lt;/framework:deleted-message&gt;
+    &lt;framework:updated-message&gt;Person #{person.firstName} #{person.lastName} updated&lt;/framework:updated-message&gt;
+&lt;/framework:entity-home&gt;
+
+&lt;component name="newPerson" 
+           class="eg.Person"&gt;
+    &lt;property name="nationality"&gt;#{country}&lt;/property&gt;
+&lt;/component&gt;
+</programlisting>
+		<para>
+			Or extension:
+		</para>
+		
+<programlisting>@Name("personHome")
+public class PersonHome extends EntityHome&lt;Person&gt; {
+    
+    @In Country country;
+    
+    @Factory("person")
+    public Person initPerson() { return getInstance(); }
+    
+    protected Person createInstance() {
+        return new Person(country);
+    }
+    
+    protected String getCreatedMessage() { return "New person #{person.firstName} 
+      #{person.lastName} created"; }
+    protected String getUpdatedMessage() { return "Person #{person.firstName} 
+      #{person.lastName} updated"; }
+    protected String getDeletedMessage() { return "Person #{person.firstName} 
+      #{person.lastName} deleted"; }
+    
+}
+</programlisting>
+		<para>
+			But the best way to specify the messages is to put them in a resource bundle known to Seam (the bundle named <literal>messages</literal>, by default).
+		</para>
+		
+<programlisting>Person_created=New person #{person.firstName} #{person.lastName} created
+Person_deleted=Person #{person.firstName} #{person.lastName} deleted
+Person_updated=Person #{person.firstName} #{person.lastName} updated
+</programlisting>
+		<para>
+			This enables internationalization, and keeps your code and configuration clean of presentation concerns.
+		</para>
+		<para>
+			The final step is to add validation functionality to the page, using <literal>&lt;s:validateAll&gt;</literal> and <literal>&lt;s:decorate&gt;</literal>, but I'll leave that for you to figure out.
+		</para>
+	</section>
+	
+	<section id="Seam_Reference_Guide-The_Seam_Application_Framework-Query_objects">
+		<title>Query objects</title>
+		<para>
+			If we need a list of all <literal>Person</literal> instance in the database, we can use a Query object. For example:
+		</para>
+		
+<programlisting>&lt;framework:entity-query name="people" 
+                        ejbql="select p from Person p"/&gt;
+</programlisting>
+		<para>
+			We can use it from a JSF page:
+		</para>
+		
+<programlisting>&lt;h1&gt;List of people&lt;/h1&gt;
+&lt;h:dataTable value="#{people.resultList}" var="person"&gt;
+    &lt;h:column&gt;
+        &lt;s:link view="/editPerson.jsp" value="#{person.firstName} #{person.lastName}"&gt;
+            &lt;f:param name="personId" value="#{person.id}"/&gt;
+        &lt;/s:link&gt;
+    &lt;/h:column&gt;
+&lt;/h:dataTable&gt;
+</programlisting>
+		<para>
+			We probably need to support pagination:
+		</para>
+		
+<programlisting>&lt;framework:entity-query name="people" 
+                        ejbql="select p from Person p" 
+                        order="lastName" 
+                        max-results="20"/&gt;
+</programlisting>
+		<para>
+			We'll use a page parameter to determine the page to display:
+		</para>
+		
+<programlisting>&lt;pages&gt;
+    &lt;page view-id="/searchPerson.jsp"&gt;
+        &lt;param name="firstResult" value="#{people.firstResult}"/&gt;
+    &lt;/page&gt;
+&lt;/pages&gt;
+</programlisting>
+		<para>
+			The JSF code for a pagination control is a bit verbose, but manageable:
+		</para>
+		
+<programlisting>&lt;h1&gt;Search for people&lt;/h1&gt;
+&lt;h:dataTable value="#{people.resultList}" var="person"&gt;
+    &lt;h:column&gt;
+        &lt;s:link view="/editPerson.jsp" value="#{person.firstName} #{person.lastName}"&gt;
+            &lt;f:param name="personId" value="#{person.id}"/&gt;
+        &lt;/s:link&gt;
+    &lt;/h:column&gt;
+&lt;/h:dataTable&gt;
+
+&lt;s:link view="/search.xhtml" rendered="#{people.previousExists}" value="First Page"&gt;
+    &lt;f:param name="firstResult" value="0"/&gt;
+&lt;/s:link&gt;
+
+&lt;s:link view="/search.xhtml" rendered="#{people.previousExists}" value="Previous Page"&gt;
+    &lt;f:param name="firstResult" value="#{people.previousFirstResult}"/&gt;
+&lt;/s:link&gt;
+
+&lt;s:link view="/search.xhtml" rendered="#{people.nextExists}" value="Next Page"&gt;
+    &lt;f:param name="firstResult" value="#{people.nextFirstResult}"/&gt;
+&lt;/s:link&gt;
+
+&lt;s:link view="/search.xhtml" rendered="#{people.nextExists}" value="Last Page"&gt;
+    &lt;f:param name="firstResult" value="#{people.lastFirstResult}"/&gt;
+&lt;/s:link&gt;
+</programlisting>
+		<para>
+			Real search screens let the user enter a bunch of optional search criteria to narrow the list of results returned. The Query object lets you specify optional "restrictions" to support this important usecase:
+		</para>
+		
+<programlisting>&lt;component name="examplePerson" class="Person"/&gt;
+        
+&lt;framework:entity-query name="people" 
+                        ejbql="select p from Person p" 
+                        order="lastName" 
+                        max-results="20"&gt;
+    &lt;framework:restrictions&gt;
+        &lt;value&gt;lower(firstName) like lower( #{examplePerson.firstName} + '%' )&lt;/value&gt;
+        &lt;value&gt;lower(lastName) like lower( #{examplePerson.lastName} + '%' )&lt;/value&gt;
+    &lt;/framework:restrictions&gt;
+&lt;/framework:entity-query&gt;
+</programlisting>
+		<para>
+			Notice the use of an <code>example</code> object.
+		</para>
+		
+<programlisting>&lt;h1&gt;Search for people&lt;/h1&gt;
+&lt;h:form&gt;
+    &lt;div&gt;First name: &lt;h:inputText value="#{examplePerson.firstName}"/&gt;&lt;/div&gt;
+    &lt;div&gt;Last name: &lt;h:inputText value="#{examplePerson.lastName}"/&gt;&lt;/div&gt;
+    &lt;div&gt;&lt;h:commandButton value="Search" action="/search.jsp"/&gt;&lt;/div&gt;
+&lt;/h:form&gt;
+
+&lt;h:dataTable value="#{people.resultList}" var="person"&gt;
+    &lt;h:column&gt;
+        &lt;s:link view="/editPerson.jsp" value="#{person.firstName} #{person.lastName}"&gt;
+            &lt;f:param name="personId" value="#{person.id}"/&gt;
+        &lt;/s:link&gt;
+    &lt;/h:column&gt;
+&lt;/h:dataTable&gt;
+</programlisting>
+		<para>
+			The examples in this section have all shown reuse by configuration. However, reuse by extension is equally possible for Query objects.
+		</para>
+	</section>
+	
+	<section id="Seam_Reference_Guide-The_Seam_Application_Framework-Controller_objects">
+		<title>Controller objects</title>
+		<para>
+			A totally optional part of the Seam Application Framework is the class <literal>Controller</literal> and its subclasses <literal>EntityController</literal><literal>HibernateEntityController</literal> and <literal>BusinessProcessController</literal>. These classes provide nothing more than some convenience methods for access to commonly used built-in components and methods of built-in components. They help save a few keystrokes (characters can add up!) and provide a great launchpad for new users to explore the rich functionality built in to Seam.
+		</para>
+		<para>
+			For example, here is what <literal>RegisterAction</literal> from the Seam registration example would look like:
+		</para>
+		
+<programlisting>@Stateless
+ at Name("register")
+public class RegisterAction extends EntityController implements Register
+{
+
+   @In private User user;
+   
+   public String register()
+   {
+      List existing = createQuery("select u.username from User u where u.username=:username")
+         .setParameter("username", user.getUsername())
+         .getResultList();
+      
+      if ( existing.size()==0 )
+      {
+         persist(user);
+         info("Registered new user #{user.username}");
+         return "/registered.jspx";
+      }
+      else
+      {
+         addFacesMessage("User #{user.username} already exists");
+         return null;
+      }
+   }
+
+}
+</programlisting>
+		<!-- 		<para>
+			As you can see, its not an earthshattering improvement...
+		</para>  -->
+	</section>
+
+</chapter>
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Gettingstarted.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Gettingstarted.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Gettingstarted.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,380 @@
+<?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" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Seam_Reference_Guide_CP07.ent">
+%BOOK_ENTITIES;
+]>
+<chapter id="Seam_Reference_Guide-Getting_started_with_Seam_using_seam_gen" lang="en-US">
+	<title>Getting started with Seam, using seam-gen</title>
+	<para>
+		The Seam distribution includes a command line utility that makes it really easy to set up an Eclipse project, generate some simple Seam skeleton code, and reverse engineer an application from a pre-existing database.
+	</para>
+	<para>
+		This is the easy way to get your feet wet with Seam, and gives you some ammunition for next time you find yourself trapped in an elevator with one of those tedious Ruby guys ranting about how great and wonderful his new toy is for building totally trivial applications that put things in databases.
+	</para>
+	<para>
+		In this release, seam-gen works best for people with JBoss AS. You can use the generated project with other J2EE or Java EE 5 application servers by making a few manual changes to the project configuration.
+	</para>
+	<para>
+		You <emphasis>can</emphasis> use seam-gen without Eclipse, but in this tutorial, we want to show you how to use it in conjunction with Eclipse for debugging and integration testing. If you do not want to install Eclipse, you can still follow along with this tutorial; all steps can be peformed from the command line.
+	</para>
+	<para>
+		Seam-gen is basically just a big ugly Ant script wrapped around Hibernate Tools, together with some templates. Which means it is easy to customize if you need to.
+	</para>
+	<section id="Seam_Reference_Guide-Getting_started_with_Seam_using_seam_gen-Before_you_start">
+		<title>Before you start</title>
+		<para>
+			Make sure you have JDK 5 or JDK 6, JBoss AS 4.0.5 and Ant 1.6, along with recent versions of Eclipse, the JBoss IDE plugin for Eclipse and the TestNG plugin for Eclipse correctly installed before starting. Add your JBoss installation to the JBoss Server View in Eclipse. Start JBoss in debug mode. Finally, start a command prompt in the directory where you unzipped the Seam distribution.
+		</para>
+		<para>
+			JBoss has sophisticated support for hot re-deployment of WARs and EARs. Unfortunately, due to bugs in the JVM, repeated redeployment of an EAR, which is common during development and eventually causing the JVM to run out of perm gen space. For this reason, we recommend running JBoss in a JVM with a large perm gen space at development time. If you are running JBoss from JBoss IDE, you can configure this in the server launch configuration, under <emphasis>VM arguments</emphasis>. We suggest the following values:
+		</para>
+		
+<programlisting>-Xms512m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512
+</programlisting>
+		<para>
+			If you do not have so much memory available, the following is our minimum recommendation:
+		</para>
+		
+<programlisting>-Xms256m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=256
+</programlisting>
+		<para>
+			If you are running JBoss from the commandline, you can configure the JVM options in <literal>bin/run.conf</literal>.
+		</para>
+		<!-- 		<para>
+			If you do not want to bother with this stuff now, you do note have to&mdash;come back to it later, when you get your first <literal>OutOfMemoryException</literal>.
+		</para>  -->
+	</section>
+	
+	<section id="Seam_Reference_Guide-Getting_started_with_Seam_using_seam_gen-Setting_up_a_new_Eclipse_project">
+		<title>Setting up a new Eclipse project</title>
+		<para>
+			The first thing we need to do is configure seam-gen for your environment: JBoss Enterprise Application Server installation directory, Eclipse workspace, and database connection. It's easy, just type:
+		</para>
+		
+<programlisting>cd jboss-seam-1.1.x
+seam setup
+</programlisting>
+		<para>
+			And you will be prompted for the needed information:
+		</para>
+		
+<programlisting>C:\Projects\jboss-seam&gt;seam setup
+Buildfile: C:\Projects\jboss-seam\seam-gen\build.xml
+
+setup:
+    [echo] Welcome to seam-gen :-)
+    [input] Enter your Java project workspace [C:/Projects]
+
+    [input] Enter your JBoss home directory [C:/Program Files/jboss-4.0.5.GA]
+
+    [input] Enter the project name [myproject]
+helloworld
+    [input] Is this project deployed as an EAR (with EJB components) or a WAR 
+       (with no EJB support) [ear] (ear,war,)
+
+    [input] Enter the Java package name for your session beans [com.mydomain.helloworld]
+org.jboss.helloworld
+    [input] Enter the Java package name for your entity beans [org.jboss.helloworld]
+
+    [input] Enter the Java package name for your test cases [org.jboss.helloworld.test]
+
+    [input] What kind of database are you using? [hsql] 
+    (hsql,mysql,oracle,postgres,mssql,db2,sybase,)
+mysql
+    [input] Enter the Hibernate dialect for your database [org.hibernate.dialect.MySQLDialect]
+
+    [input] Enter the filesystem path to the JDBC driver jar [lib/hsqldb.jar]
+../../mysql-connector.jar
+    [input] Enter JDBC driver class for your database [com.mysql.jdbc.Driver]
+
+    [input] Enter the JDBC URL for your database [jdbc:mysql:///test]
+
+    [input] Enter database username [sa]
+gavin
+    [input] Enter database password []
+
+    [input] Are you working with tables that already exist in the database? [n] (y,n,)
+y
+    [input] Do you want to drop and recreate the database tables and data in import.sql 
+    each time you deploy? [n] (y,n,)
+n
+[propertyfile] Creating new property file: C:\Projects\jboss-seam\seam-gen\build.properties
+     [echo] Installing JDBC driver jar to JBoss server
+     [echo] Type 'seam new-project' to create the new project
+
+BUILD SUCCESSFUL
+Total time: 1 minute 17 seconds
+C:\Projects\jboss-seam&gt;
+</programlisting>
+		<para>
+			The tool provides sensible defaults, which you can accept by just pressing enter at the prompt.
+		</para>
+		<para>
+			The most important choice you need to make is between EAR deployment and WAR deployment of your project. EAR projects support EJB 3.0 and require Java EE 5. WAR projects do not support EJB 3.0, but may be deployed to a J2EE environment. The packaging of a WAR is also simpler to understand. If you installed JBoss with the ejb3 profile, choose <literal>ear</literal>. Otherwise, choose <literal>war</literal>. We will assume that you have chosen an EAR deployment for the rest of the tutorial, but you can follow exactly the same steps for a WAR deployment.
+		</para>
+		<para>
+			If you are working with an existing data model, make sure you tell seam-gen that the tables already exist in the database.
+		</para>
+		<para>
+			The settings are stored in <literal>seam-gen/build.properties</literal>, but you can also modify them simply by running <literal>seam setup</literal> a second time.
+		</para>
+		<para>
+			Now we can create a new project in our Eclipse workspace directory, by typing:
+		</para>
+		
+<programlisting>seam new-project
+</programlisting>
+		
+<programlisting>C:\Projects\jboss-seam&gt;seam new-project
+Buildfile: C:\Projects\jboss-seam\seam-gen\build.xml
+
+validate-workspace:
+
+validate-project:
+
+copy-lib:
+     [echo] Copying project jars ...
+     [copy] Copying 32 files to C:\Projects\helloworld\lib
+     [copy] Copying 9 files to C:\Projects\helloworld\embedded-ejb
+
+file-copy-wtp:
+
+file-copy:
+     [echo] Copying project resources ...
+     [copy] Copying 12 files to C:\Projects\helloworld\resources
+     [copy] Copying 1 file to C:\Projects\helloworld\resources
+     [copy] Copying 5 files to C:\Projects\helloworld\view
+     [copy] Copying 5 files to C:\Projects\helloworld
+    [mkdir] Created dir: C:\Projects\helloworld\src
+
+new-project:
+     [echo] A new Seam project named 'helloworld' was created in the /Users/gavin/Documents/workspace directory
+     [echo] Type 'seam explode' and go to http://localhost:8080/helloworld
+     [echo] Eclipse Users: Add the project into Eclipse using File &gt; New &gt; Project and select General &gt; Project (not Java Project)
+     [echo] NetBeans Users: Open the project in NetBeans
+
+BUILD SUCCESSFUL
+Total time: 7 seconds
+C:\Projects\jboss-seam&gt;
+</programlisting>
+		<para>
+			This copies the Seam jars, dependent jars and the JDBC driver jar to a new Eclipse project, and generates all needed resources and configuration files, a facelets template file and stylesheet, along with Eclipse metadata and an Ant build script. The Eclipse project will be automatically deployed to an exploded directory structure in JBoss AS as soon as you add the project using <literal>New -&gt; Project... -&gt; General -&gt; Project -&gt; Next</literal>, typing the <literal>Project name</literal> (<literal>helloworld</literal> in this case), and then clicking <literal>Finish</literal>. Do not select <literal>Java Project</literal> from the New Project wizard.
+		</para>
+		<para>
+			If your default JDK in Eclipse is not a Java SE 5 or Java SE 6 JDK, you will need to select a Java SE 5 compliant JDK using <literal>Project -&gt; Properties -&gt; Java Compiler</literal>.
+		</para>
+		<para>
+			Alternatively, you can deploy the project from outside Eclipse by typing <literal>seam explode</literal>.
+		</para>
+		<para>
+			Go to <literal>http://localhost:8080/helloworld</literal> to see a welcome page. This is a facelets page, <literal>view/home.xhtml</literal>, using the template <literal>view/layout/template.xhtml</literal>. You can edit this page, or the template, in eclipse, and see the results <emphasis>immediately</emphasis>, by clicking refresh in your browser.
+		</para>
+		<para>
+			Do not get scared by the XML configuration documents that were generated into the project directory. They are mostly standard Java EE stuff, the stuff you need to create once and then never look at again, and they are 90% the same between all Seam projects. (They are so easy to write that even seam-gen can do it.)
+		</para>
+		<para>
+			The generated project includes three database and persistence configurations. The <literal>jboss-beans.xml</literal>, <literal>persistence-test.xml</literal> and <literal>import-test.sql</literal> files are used when running the TestNG unit tests against HSQLDB. The database schema and the test data in <literal>import-test.sql</literal> is always exported to the database before running tests. The <literal>myproject-dev-ds.xml</literal>, <literal>persistence-dev.xml</literal>and <literal>import-dev.sql</literal> files are for use when deploying the application to your development database. The schema might be exported automatically at deployment, depending upon whether you told seam-gen that you are working with an existing database. The <literal>myproject-prod-ds.xml</literal>, <literal>persistence-prod.xml</literal>and <literal>import-prod.sql</literal> files are for use when deploying the application to your production database. The schema is not exported automatically!
  at deployment.
+		</para>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Getting_started_with_Seam_using_seam_gen-Creating_a_new_action">
+		<title>Creating a new action</title>
+		<para>
+			If you are used to traditional action-style web frameworks, you are probably wondering how you can create a simple webpage with a stateless action method in Java. If you type:
+		</para>
+		
+<programlisting>seam new-action
+</programlisting>
+		<para>
+			Seam will prompt for some information, and generate a new facelets page and Seam component for your project.
+		</para>
+		
+<programlisting>C:\Projects\jboss-seam&gt;seam new-action ping
+Buildfile: C:\Projects\jboss-seam\seam-gen\build.xml
+
+validate-workspace:
+
+validate-project:
+
+action-input:
+    [input] Enter the Seam component name
+ping
+    [input] Enter the local interface name [Ping]
+
+    [input] Enter the bean class name [PingBean]
+
+    [input] Enter the action method name [ping]
+
+    [input] Enter the page name [ping]
+
+
+setup-filters:
+
+new-action:
+     [echo] Creating a new stateless session bean component with an action method
+     [copy] Copying 1 file to C:\Projects\hello\src\com\hello
+     [copy] Copying 1 file to C:\Projects\hello\src\com\hello
+     [copy] Copying 1 file to C:\Projects\hello\src\com\hello\test
+     [copy] Copying 1 file to C:\Projects\hello\src\com\hello\test
+     [copy] Copying 1 file to C:\Projects\hello\view
+     [echo] Type 'seam restart' and go to 
+     http://localhost:8080/helloworld/ping.seam
+
+BUILD SUCCESSFUL
+Total time: 13 seconds
+C:\Projects\jboss-seam&gt;
+</programlisting>
+		<para>
+			Because we have added a new Seam component, we need to restart the exploded directory deployment. You can do this by typing <literal>seam restart</literal>, or by running the <literal>restart</literal> target in the generated project <literal>build.xml</literal> file from inside Eclipse. Another way to force a restart is to edit the file <literal>resources/META-INF/application.xml</literal> in Eclipse. <emphasis>Note that you do not need to restart JBoss each time you change the application.</emphasis>
+		</para>
+		<para>
+			Now go to <literal>http://localhost:8080/helloworld/ping.seam</literal> and click the button. You can see the code behind this action by looking in the project <literal>src</literal> directory. Put a breakpoint in the <literal>ping()</literal> method, and click the button again.
+		</para>
+		<para>
+			Finally, locate the <literal>PingTest.xml</literal> file in the test package and run the integration tests using the TestNG plugin for Eclipse. Alternatively, run the tests using <literal>seam test</literal> or the <literal>test</literal> target of the generated build.
+		</para>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Getting_started_with_Seam_using_seam_gen-Creating_a_form_with_an_action">
+		<title>Creating a form with an action</title>
+		<para>
+			The next step is to create a form. Type:
+		</para>
+		
+<programlisting>seam new-form
+</programlisting>
+		
+<programlisting>C:\Projects\jboss-seam&gt;seam new-form
+Buildfile: C:\Projects\jboss-seam\seam-gen\build.xml
+
+validate-workspace:
+
+validate-project:
+
+action-input:
+    [input] Enter the Seam component name
+hello
+    [input] Enter the local interface name [Hello]
+
+    [input] Enter the bean class name [HelloBean]
+
+    [input] Enter the action method name [hello]
+
+    [input] Enter the page name [hello]
+
+
+setup-filters:
+
+new-form:
+     [echo] Creating a new stateful session bean component with an action method
+     [copy] Copying 1 file to C:\Projects\hello\src\com\hello
+     [copy] Copying 1 file to C:\Projects\hello\src\com\hello
+     [copy] Copying 1 file to C:\Projects\hello\src\com\hello\test
+     [copy] Copying 1 file to C:\Projects\hello\view
+     [copy] Copying 1 file to C:\Projects\hello\src\com\hello\test
+     [echo] Type 'seam restart' and go to http://localhost:8080/hello/hello.seam
+
+BUILD SUCCESSFUL
+Total time: 5 seconds
+C:\Projects\jboss-seam&gt;
+</programlisting>
+		<para>
+			Restart the application again, and go to <literal>http://localhost:8080/helloworld/hello.seam</literal>. Then take a look at the generated code. Run the test. Try adding some new fields to the form and Seam component (remember to restart the deploment each time you change the Java code).
+		</para>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Getting_started_with_Seam_using_seam_gen-Generating_an_application_from_an_existing_database">
+		<title>Generating an application from an existing database</title>
+		<para>
+			Manually create some tables in your database. (If you need to switch to a different database, just run <literal>seam setup</literal> again.) Now type:
+		</para>
+		
+<programlisting>seam generate-entities
+</programlisting>
+		<para>
+			Restart the deployment, and go to <literal>http://localhost:8080/helloworld</literal>. You can browse the database, edit existing objects, and create new objects. If you look at the generated code, you will probably be amazed how simple it is. Seam was designed so that data access code is easy to write by hand, even for people who do not want to cheat by using seam-gen.
+		</para>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Getting_started_with_Seam_using_seam_gen-Deploying_the_application_as_an_EAR">
+		<title>Deploying the application as an EAR</title>
+		<para>
+			Finally, we want to be able to deploy the application using standard Java EE 5 packaging. First, we need to remove the exploded directory by running <literal>seam unexplode</literal>. To deploy the EAR, we can type <literal>seam deploy</literal> at the command prompt, or run the <literal>deploy</literal> target of the generated project build script. You can undeploy using <literal>seam undeploy</literal> or the <literal>undeploy</literal> target.
+		</para>
+		<para>
+			By default, the application will be deployed with the <emphasis>dev profile</emphasis>. The EAR will include the <literal>persistence-dev.xml</literal> and <literal>import-dev.sql</literal> files, and the <literal>myproject-dev-ds.xml</literal> file will be deployed. You can change the profile, and use the <emphasis>prod profile</emphasis>, by typing
+		</para>
+		
+<programlisting>seam -Dprofile=prod deploy
+</programlisting>
+		<para>
+			You can even define new deployment profiles for your application. Just add appropriately named files to your project&mdash;for example, <literal>persistence-staging.xml</literal>, <literal>import-staging.sql</literal> and <literal>myproject-staging-ds.xml</literal>&mdash;and select the name of the profile using <literal>-Dprofile=staging</literal>.
+		</para>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Getting_started_with_Seam_using_seam_gen-Seam_and_incremental_hot_deployment">
+		<title>Seam and incremental hot deployment</title>
+		<para>
+			When you deploy your Seam application as an exploded directory, you will get some support for incremental hot deployment at development time. You need to enable debug mode in both Seam and Facelets, by adding this line to <literal>components.xml</literal>:
+		</para>
+		
+<programlisting>&lt;core:init debug="true"/&gt;
+</programlisting>
+		<para>
+			Now, the following files may be redeployed without requiring a full restart of the web application:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					any facelets page
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					any <literal>pages.xml</literal> file
+				</para>
+			</listitem>
+		</itemizedlist>
+		<para>
+			But if we want to change any Java code, we still need to do a full restart of the application. (In JBoss this may be accomplished by touching the toplevel deployment descriptor: <literal>application.xml</literal> for an EAR deployment, or <literal>web.xml</literal> for a WAR deployment.)
+		</para>
+		<para>
+			But if you really want a fast edit/compile/test cycle, Seam supports incremental redeployment of JavaBean components. To make use of this functionality, you must deploy the JavaBean components into the <literal>WEB-INF/dev</literal> directory, so that they will be loaded by a special Seam classloader, instead of by the WAR or EAR classloader.
+		</para>
+		<para>
+			You need to be aware of the following limitations:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					the components must be JavaBean components, they cannot be EJB3 beans (we are working on fixing this limitation)
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					entities can never be hot-deloyed
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					components deployed via <literal>components.xml</literal> may not be hot-deployed
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					the hot-deployable components will not be visible to any classes deployed outside of <literal>WEB-INF/dev</literal>
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					Seam debug mode must be enabled
+				</para>
+			</listitem>
+		</itemizedlist>
+		<para>
+			If you create a WAR project using seam-gen, incremental hot deployment is available out of the box for classes in the <literal>src/action</literal> source directory. However, seam-gen does not support incremental hot deployment for EAR projects.
+		</para>
+	</section>
+
+</chapter>
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/I18n.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/I18n.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/I18n.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,253 @@
+<?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" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Seam_Reference_Guide_CP07.ent">
+%BOOK_ENTITIES;
+]>
+<chapter id="Seam_Reference_Guide-Internationalization_and_themes" lang="en-US">
+	<title>Internationalization and themes</title>
+	<para>
+		Seam makes it easy to build internationalized applications by providing several built-in components for handling multi-language UI messages.
+	</para>
+	<section id="Seam_Reference_Guide-Internationalization_and_themes-Locales">
+		<title>Locales</title>
+		<para>
+			Each user login session has an associated instance of <literal>java.util.Locale</literal> (available to the application as a session-scoped component named <literal>locale</literal>). Under normal circumstances, you will not need to do any special configuration to set the locale. Seam just delegates to JSF to determine the active locale:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					If there is a locale associated with the HTTP request (the browser locale), and that locale is in the list of supported locales from <literal>faces-config.xml</literal>, use that locale for the rest of the session.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					Otherwise, if a default locale was specified in the <literal>faces-config.xml</literal>, use that locale for the rest of the session.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					Otherwise, use the default locale of the server.
+				</para>
+			</listitem>
+		</itemizedlist>
+		<para>
+			It is <emphasis>possible</emphasis> to set the locale manually via the Seam configuration properties <literal>org.jboss.seam.core.localeSelector.language</literal>, <literal>org.jboss.seam.core.localeSelector.country</literal> and <literal>org.jboss.seam.core.localeSelector.variant</literal>, but we cannot think of any good reason to ever do this.
+		</para>
+		<para>
+			It is, however, useful to allow the user to set the locale manually via the application user interface. Seam provides built-in functionality for overriding the locale determined by the algorithm above. All you have to do is add the following fragment to a form in your JSP or Facelets page:
+		</para>
+		
+<programlisting>&lt;h:selectOneMenu value="#{localeSelector.language}"&gt;
+    &lt;f:selectItem itemLabel="English" itemValue="en"/&gt;
+    &lt;f:selectItem itemLabel="Deutsch" itemValue="de"/&gt;
+    &lt;f:selectItem itemLabel="Francais" itemValue="fr"/&gt;
+&lt;/h:selectOneMenu&gt;
+&lt;h:commandButton action="#{localeSelector.select}" value="#{messages['ChangeLanguage']}"/&gt;
+</programlisting>
+		<para>
+			Or, if you want a list of all supported locales from <literal>faces-config.xml</literal>, just use:
+		</para>
+		
+<programlisting>&lt;h:selectOneMenu value="#{localeSelector.localeString}"&gt;
+    &lt;f:selectItems value="#{localeSelector.supportedLocales}"/&gt;
+&lt;/h:selectOneMenu&gt;
+&lt;h:commandButton action="#{localeSelector.select}" value="#{messages['ChangeLanguage']}"/&gt;
+</programlisting>
+		<para>
+			When this use selects an item from the drop-down, and clicks the button, the Seam and JSF locales will be overridden for the rest of the session.
+		</para>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Internationalization_and_themes-Labels">
+		<title>Labels</title>
+		<para>
+			JSF supports internationalization of user interface labels and descriptive text via the use of <literal>&lt;f:loadBundle /&gt;</literal>. You can use this approach in Seam applications. Alternatively, you can take advantage of the Seam <literal>messages</literal> component to display templated labels with embedded EL expressions.
+		</para>
+		<section id="Seam_Reference_Guide-Labels-Defining_labels">
+			<title>Defining labels</title>
+			<para>
+				Each login session has an associated instance of <literal>java.util.ResourceBundle</literal> (available to the application as a session-scoped component named <literal>org.jboss.seam.core.resourceBundle</literal>). You'll need to make your internationalized labels available via this special resource bundle. By default, the resource bundle used by Seam is named <literal>messages</literal> and so you'll need to define your labels in files named <literal>messages.properties</literal>, <literal>messages_en.properties</literal>, <literal>messages_en_AU.properties</literal>, etc. These files usually belong in the <literal>WEB-INF/classes</literal> directory.
+			</para>
+			<para>
+				So, in <literal>messages_en.properties</literal>:
+			</para>
+			
+<programlisting>Hello=Hello
+</programlisting>
+			<para>
+				And in <literal>messages_en_AU.properties</literal>:
+			</para>
+			
+<programlisting>Hello=G'day
+</programlisting>
+			<para>
+				You can select a different name for the resource bundle by setting the Seam configuration property named <literal>org.jboss.seam.core.resourceBundle.bundleNames</literal>. You can even specify a list of resource bundle names to be searched (depth first) for messages.
+			</para>
+			
+<programlisting>&lt;core:resource-bundle&gt;
+    &lt;core:bundle-names&gt;
+        &lt;value&gt;mycompany_messages&lt;/value&gt;
+        &lt;value&gt;standard_messages&lt;/value&gt;       
+    &lt;/core:bundle-names&gt;
+&lt;/core:resource-bundle&gt;
+</programlisting>
+			<para>
+				If you want to define a message just for a particular page, you can specify it in a resource bundle with the same name as the JSF view id, with the leading <literal>/</literal> and trailing file extension removed. So we could put our message in <literal>welcome/hello_en.properties</literal> if we only needed to display the message on <literal>/welcome/hello.jsp</literal>.
+			</para>
+			<para>
+				You can even specify an explicit bundle name in <literal>pages.xml</literal>:
+			</para>
+			
+<programlisting>&lt;page view-id="/welcome/hello.jsp" bundle="HelloMessages"/&gt;
+</programlisting>
+			<para>
+				Then we could use messages defined in <literal>HelloMessages.properties</literal> on <literal>/welcome/hello.jsp</literal>.
+			</para>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Labels-Displaying_labels">
+			<title>Displaying labels</title>
+			<para>
+				If you define your labels using the Seam resource bundle, you will be able to use them without having to type <literal>&lt;f:loadBundle ... /&gt;</literal> on every page. Instead, you can simply type:
+			</para>
+			
+<programlisting>&lt;h:outputText value="#{messages['Hello']}"/&gt;
+</programlisting>
+			<para>
+				or:
+			</para>
+			
+<programlisting>&lt;h:outputText value="#{messages.Hello}"/&gt;
+</programlisting>
+			<para>
+				Even better, the messages themselves may contain EL expressions:
+			</para>
+			
+<programlisting>Hello=Hello, #{user.firstName} #{user.lastName}
+</programlisting>
+			
+<programlisting>Hello=G'day, #{user.firstName}
+</programlisting>
+			<para>
+				You can even use the messages in your code:
+			</para>
+			
+<programlisting>@In private Map&lt;String, String&gt; messages;
+</programlisting>
+			
+<programlisting>@In("#{messages['Hello']}") private String helloMessage;
+</programlisting>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Labels-Faces_messages">
+			<title>Faces messages</title>
+			<para>
+				The <literal>facesMessages</literal> component is a super-convenient way to display success or failure messages to the user. The functionality we just described also works for faces messages:
+			</para>
+			
+<programlisting>@Name("hello")
+ at Stateless
+public class HelloBean implements Hello {
+    @In FacesMessages facesMessages;
+    
+    public String sayIt() {
+        facesMessages.addFromResourceBundle("Hello");
+    }
+}
+</programlisting>
+			<para>
+				This will display <literal>Hello, Gavin King</literal> or <literal>G'day, Gavin</literal>, depending upon the user's locale.
+			</para>
+		</section>
+
+	</section>
+	
+	<section id="Seam_Reference_Guide-Internationalization_and_themes-Timezones">
+		<title>Timezones</title>
+		<para>
+			There is also a session-scoped instance of <literal>java.util.Timezone</literal>, named <literal>org.jboss.seam.core.timezone</literal>, and a Seam component for changing the timezone named <literal>org.jboss.seam.core.timezoneSelector</literal>. By default, the timezone is the default timezone of the server. Unfortunately, the JSF specification says that all dates and times should be assumed to be UTC, and displayed as UTC, unless a timezone is explicitly specified using <literal>&lt;f:convertDateTime&gt;</literal>. This is an extremely inconvenient default behavior.
+		</para>
+		<para>
+			Seam overrides this behavior, and defaults all dates and times to the Seam timezone. In addition, Seam provides the <literal>&lt;s:convertDateTime&gt;</literal> tag which always performs conversions in the Seam timezone.
+		</para>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Internationalization_and_themes-Themes">
+		<title>Themes</title>
+		<para>
+			Seam applications are also very easily skinnable. The theme API is very similar to the localization API, but of course these two concerns are orthogonal, and some applications support both localization and themes.
+		</para>
+		<para>
+			First, configure the set of supported themes:
+		</para>
+		
+<programlisting>&lt;theme:theme-selector cookie-enabled="true"&gt;
+    &lt;theme:available-themes&gt;
+        &lt;value&gt;default&lt;/value&gt;
+        &lt;value&gt;accessible&lt;/value&gt;
+        &lt;value&gt;printable&lt;/value&gt;
+    &lt;/theme:available-themes&gt;
+&lt;/theme:theme-selector&gt;
+</programlisting>
+		<note>
+			<para>
+				The first theme listed is the default theme.
+			</para>
+		</note>
+		<para>
+			Themes are defined in a properties file with the same name as the theme. For example, the <literal>default</literal> theme is defined as a set of entries in <literal>default.properties</literal>. For example, <literal>default.properties</literal> might define:
+		</para>
+		
+<programlisting>css ../screen.css
+template template.xhtml
+</programlisting>
+		<para>
+			Usually the entries in a theme resource bundle will be paths to CSS styles or images and names of facelets templates (unlike localization resource bundles which are usually text).
+		</para>
+		<para>
+			Now we can use these entries in our JSP or facelets pages. For example, to theme the stylesheet in a facelets page:
+		</para>
+		
+<programlisting>&lt;link href="#{theme.css}" rel="stylesheet" type="text/css" /&gt;
+</programlisting>
+		<para>
+			Most powerfully, facelets lets us theme the template used by a <literal>&lt;ui:composition&gt;</literal>:
+		</para>
+		
+<programlisting>&lt;ui:composition xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:ui="http://java.sun.com/jsf/facelets"
+    xmlns:h="http://java.sun.com/jsf/html"
+    xmlns:f="http://java.sun.com/jsf/core"
+    template="#{theme.template}"&gt;
+</programlisting>
+		<para>
+			Just like the locale selector, there is a built-in theme selector to allow the user to freely switch themes:
+		</para>
+		
+<programlisting>&lt;h:selectOneMenu value="#{themeSelector.theme}"&gt;
+    &lt;f:selectItems value="#{themeSelector.themes}"/&gt;
+&lt;/h:selectOneMenu&gt;
+&lt;h:commandButton action="#{themeSelector.select}" value="Select Theme"/&gt;
+</programlisting>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Internationalization_and_themes-Persisting_locale_and_theme_preferences_via_cookies">
+		<title>Persisting locale and theme preferences via cookies</title>
+		<para>
+			The locale selector, theme selector and timezone selector all support persistence of locale and theme preference to a cookie. Simply set the <literal>cookie-enabled</literal> configuration property:
+		</para>
+		
+<programlisting>&lt;theme:theme-selector cookie-enabled="true"&gt;
+    &lt;theme:available-themes&gt;
+        &lt;value&gt;default&lt;/value&gt;
+        &lt;value&gt;accessible&lt;/value&gt;
+        &lt;value&gt;printable&lt;/value&gt;
+    &lt;/theme:available-themes&gt;
+&lt;/theme:theme-selector&gt;
+
+&lt;core:locale-selector cookie-enabled="true"/&gt;
+</programlisting>
+	</section>
+
+</chapter>
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Itext.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Itext.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Itext.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1128 @@
+<?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" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Seam_Reference_Guide_CP07.ent">
+%BOOK_ENTITIES;
+]>
+<chapter id="Seam_Reference_Guide-iText_PDF_generation" lang="en-US">
+	<title>iText PDF generation</title>
+	<para>
+		Seam now includes an component set for generating documents using iText. The primary focus of Seam's iText document support is for the generation of PDF doucuments, but Seam also offers basic support for RTF document generation.
+	</para>
+	<section id="Seam_Reference_Guide-iText_PDF_generation-Using_PDF_Support">
+		<title>Using PDF Support</title>
+		<para>
+			iText support is provided by <literal>jboss-seam-pdf.jar</literal>. This JAR contains the iText JSF controls, which are used to construct views that can render to PDF, and the DocumentStore component, which serves the rendered documents to the user. To include PDF support in your application, included <literal>jboss-seam-pdf.jar</literal> in your <literal>WEB-INF/lib</literal> directory along with the iText JAR file. There is no further configuration needed to use Seam's iText support.
+		</para>
+		<para>
+			The Seam iText module requires the use of Facelets as the view technology. Future versions of the library may also support the use of JSP. Additionally, it requires the use of the seam-ui package.
+		</para>
+		<para>
+			The <literal>examples/itext</literal> project contains an example of the PDF support in action. It demonstrates proper deployment packaging, and it contains a number examples that demonstrate the key PDF generation features current supported.
+		</para>
+	</section>
+	
+	<section id="Seam_Reference_Guide-iText_PDF_generation-Creating_a_document">
+		<title>Creating a document</title>
+		<para>
+			Documents are generated by facelets documents using tags in the <literal>http://jboss.com/products/seam/pdf</literal> namespace. Documents should always have the <literal>document</literal> tag at the root of the document. The <literal>document</literal> tag prepares Seam to generate a document into the DocumentStore and renders an HTML redirect to that stored content. The following is a a small PDF document consisting only a single line of text:
+		</para>
+		
+<programlisting>
+&lt;p:document xmlns:p="http://jboss.com/products/seam/pdf"&gt;                                                      
+   The document goes here.                                                                                             
+&lt;/p:document&gt;
+</programlisting>
+		<section id="Seam_Reference_Guide-Creating_a_document-pdocument">
+			<title>p:document</title>
+			<para>
+				The <literal>p:document</literal> tag supports the following attributes:
+			</para>
+			<variablelist>
+				<varlistentry>
+					<term><literal>type</literal></term>
+					<listitem>
+						<para>
+							The type of the document to be produced. Valid values are <literal>PDF</literal>, <literal>RTF</literal> and <literal>HTML</literal> modes. Seam defaults to PDF generation, and many of the features only work correctly when generating PDF documents.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>pageSize</literal></term>
+					<listitem>
+						<para>
+							The size of the page to be generate. The most commonly used values would be <literal>LETTER</literal> and <literal>A4</literal>. A full list of supported pages sizes can be found in <literal>com.lowagie.text.PageSize</literal> class. Alternatively, pageSize can provide the width and height of the page directly. The value <emphasis>612 792</emphasis>, for example, is equizalent to the LETTER page size.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>orientation</literal></term>
+					<listitem>
+						<para>
+							The orientation of the page. Valid values are <literal>portrait</literal> and <literal>landscape</literal>. In landscape mode, the height and width page size values are reversed.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>margins</literal></term>
+					<listitem>
+						<para>
+							The left, right, top and bottom margin values.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>marginMirroring</literal></term>
+					<listitem>
+						<para>
+							Indicates that margin settings should be reversed an alternating pages.
+						</para>
+					</listitem>
+				</varlistentry>
+			</variablelist>
+			<para>
+				Document metadata is also set as attributes of the document tag. The following metadata fields are supported:
+			</para>
+			<variablelist>
+				<varlistentry>
+					<term><literal>title</literal></term>
+					<listitem>
+						<para>
+							​
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>subject</literal></term>
+					<listitem>
+						<para>
+							​
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>keywords</literal></term>
+					<listitem>
+						<para>
+							​
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>author</literal></term>
+					<listitem>
+						<para>
+							​
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>creator</literal></term>
+					<listitem>
+						<para>
+							​
+						</para>
+					</listitem>
+				</varlistentry>
+			</variablelist>
+		</section>
+
+	</section>
+	
+	<section id="Seam_Reference_Guide-iText_PDF_generation-Basic_Text_Elements">
+		<title>Basic Text Elements</title>
+		<para>
+			Useful documents will need to contain more than just text; however, the standard UI components are geared towards HTML generation and are not useful for generating PDF content. Instead, Seam provides a special UI components for generating suitable PDF content. Tags like <literal>&lt;p:image&gt;</literal> and <literal>&lt;p:paragraph&gt;</literal> are the basic foundations of simple documents. Tags like <literal>&lt;p:font&gt;</literal> provide style information to all the content surrounging them.
+		</para>
+		
+<programlisting>
+&lt;p:document xmlns:p="http://jboss.com/products/seam/pdf"&gt; 
+    &lt;p:image alignment="right" wrap="true" resource="/logo.jpg" /&gt;
+    &lt;p:font size="24"&gt;
+        &lt;p:paragraph spacingAfter="50"&gt;My First Document&lt;/p:paragraph&gt;
+    &lt;/p:font&gt;
+
+    &lt;p:paragraph alignment="justify"&gt;
+        This is a simple document.  It isn't very fancy.
+    &lt;/p:paragraph&gt;
+&lt;/p:document&gt;
+</programlisting>
+		<section id="Seam_Reference_Guide-Basic_Text_Elements-pparagraph">
+			<title>p:paragraph</title>
+			<para>
+				Most uses of text should be sectioned into paragraphs so that text fragments can be flowed, formatted and styled in logical groups.
+			</para>
+			<variablelist>
+				<varlistentry>
+					<term><literal>firstLineIndent</literal></term>
+					<listitem>
+						<para>
+							​
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>extraParagraphSpace</literal></term>
+					<listitem>
+						<para>
+							​
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>leading</literal></term>
+					<listitem>
+						<para>
+							​
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>multipliedLeading</literal></term>
+					<listitem>
+						<para>
+							​
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>spacingBefore</literal></term>
+					<listitem>
+						<para>
+							The blank space to be inserted before the element.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>spacingAfter</literal></term>
+					<listitem>
+						<para>
+							The blank space to be inserted after the element.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>indentationLeft</literal></term>
+					<listitem>
+						<para>
+							​
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>indentationRight</literal></term>
+					<listitem>
+						<para>
+							​
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>keepTogether</literal></term>
+					<listitem>
+						<para>
+							​
+						</para>
+					</listitem>
+				</varlistentry>
+			</variablelist>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Basic_Text_Elements-ptext">
+			<title>p:text</title>
+			<para>
+				The <literal>text</literal> tag allows text fragments to be produced from application data using normal JSF converter mechanisms. It is very similar to the <literal>outputText</literal> tag used when rendering HTML documents. Here is an example:
+			</para>
+			
+<programlisting>
+&lt;p:paragraph&gt;
+    The item costs &lt;p:text value="#{product.price}"&gt;
+        &lt;f:convertNumber type="currency" currencySymbol="$"/&gt;
+    &lt;/p:text&gt;
+&lt;/p:paragraph&gt;
+</programlisting>
+			<variablelist>
+				<varlistentry>
+					<term><literal>value</literal></term>
+					<listitem>
+						<para>
+							The value to be displayed. This will typically be a value binding expression.
+						</para>
+					</listitem>
+				</varlistentry>
+			</variablelist>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Basic_Text_Elements-pfont">
+			<title>p:font</title>
+			<para>
+				Font declarations have no direct
+			</para>
+			<variablelist>
+				<varlistentry>
+					<term><literal>familyName</literal></term>
+					<listitem>
+						<para>
+							The font family. One of: <literal>COURIER</literal>, <literal>HELVETICA</literal>, <literal>TIMES-ROMAN</literal>, <literal>SYMBOL</literal> or <literal>ZAPFDINGBATS</literal>.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>size</literal></term>
+					<listitem>
+						<para>
+							The point size of the font.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>style</literal></term>
+					<listitem>
+						<para>
+							The font styles. Any combination of : <literal>NORMAL</literal>, <literal>BOLD</literal>, <literal>ITALIC</literal>, <literal>OBLIQUE</literal>, <literal>UNDERLINE</literal>, <literal>LINE-THROUGH</literal>
+						</para>
+					</listitem>
+				</varlistentry>
+			</variablelist>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Basic_Text_Elements-pnewPage">
+			<title>p:newPage</title>
+			<para>
+				<literal>p:newPage</literal> inserts a page break.
+			</para>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Basic_Text_Elements-pimage">
+			<title>p:image</title>
+			<para>
+				<literal>p:image</literal> inserts an image into the document. Images can be be loaded from the classpath or from the web application context using the <literal>resource</literal> attribute.
+			</para>
+			
+<programlisting>&lt;p:image resource="/jboss.jpg" /&gt;
+</programlisting>
+			<para>
+				Resources can also be dynamically generated by application code. The <literal>imageData</literal> attribute can specify a value binding expression whose value is a <literal>java.awt.Image</literal> object.
+			</para>
+			
+<programlisting>&lt;p:image imageData="#{images.chart}" /&gt;
+</programlisting>
+			<variablelist>
+				<varlistentry>
+					<term><literal>resource</literal></term>
+					<listitem>
+						<para>
+							The location of the image resource to be included. Resources should be relative to the document root of the web application.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>imageData</literal></term>
+					<listitem>
+						<para>
+							A method expression binding to an application-generated image.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>rotation</literal></term>
+					<listitem>
+						<para>
+							The rotation of the image in degrees.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>height</literal></term>
+					<listitem>
+						<para>
+							The height of the image.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>width</literal></term>
+					<listitem>
+						<para>
+							The width of the image.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>alignment</literal></term>
+					<listitem>
+						<para>
+							The alignment of the image. (see <xref linkend="Seam_Reference_Guide-Document_Constants-Alignment_Values" /> for possible values)
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>alt</literal></term>
+					<listitem>
+						<para>
+							Alternative text representation for the image.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>indentationLeft</literal></term>
+					<listitem>
+						<para>
+							​
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>indentationRight</literal></term>
+					<listitem>
+						<para>
+							​
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>spacingBefore</literal></term>
+					<listitem>
+						<para>
+							The blank space to be inserted before the element.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>spacingAfter</literal></term>
+					<listitem>
+						<para>
+							The blank space to be inserted after the element.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>widthPercentage</literal></term>
+					<listitem>
+						<para>
+							​
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>initialRotation</literal></term>
+					<listitem>
+						<para>
+							​
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>dpi</literal></term>
+					<listitem>
+						<para>
+							​
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>scalePercent</literal></term>
+					<listitem>
+						<para>
+							The scaling factor (as a percentage) to use for the image. This can be expressed as a single percentage value or as two percentage values representing separate x and y scaling percentages.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>wrap</literal></term>
+					<listitem>
+						<para>
+							​
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>underlying</literal></term>
+					<listitem>
+						<para>
+							​
+						</para>
+					</listitem>
+				</varlistentry>
+			</variablelist>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Basic_Text_Elements-panchor">
+			<title>p:anchor</title>
+			<para>
+				<literal>p:anchor</literal> defines clickable links from a document. It supports the following attributes:
+			</para>
+			<variablelist>
+				<varlistentry>
+					<term><literal>name</literal></term>
+					<listitem>
+						<para>
+							The name of an in-document anchor destination.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>reference</literal></term>
+					<listitem>
+						<para>
+							The destination the link refers to. Links to other points in the document should begin with a <code>#</code>. For example, <code>#link1</code> to refer to an anchor postion with a <literal>name</literal> of <literal>link1</literal>. Links may also be a full URL to point to a resource outside of the document.
+						</para>
+					</listitem>
+				</varlistentry>
+			</variablelist>
+		</section>
+
+	</section>
+	
+	<section id="Seam_Reference_Guide-iText_PDF_generation-Headers_and_Footers">
+		<title>Headers and Footers</title>
+		<section id="Seam_Reference_Guide-Headers_and_Footers-pheader_and_pfooter">
+			<title>p:header and p:footer</title>
+			<para>
+				The <literal>p:header</literal> and <literal>p:footer</literal> components provide the ability to place header and footer text on each page of a generated document, with the exception of the first page. Header and footer declarations should appear near the top of a document.
+			</para>
+			<variablelist>
+				<varlistentry>
+					<term><literal>alignment</literal></term>
+					<listitem>
+						<para>
+							The alignment of the header/footer box section. (see <xref linkend="Seam_Reference_Guide-Document_Constants-Alignment_Values" /> for alignment values)
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>backgroundColor</literal></term>
+					<listitem>
+						<para>
+							The background color of the header/footer box. (see <xref linkend="Seam_Reference_Guide-Document_Constants-Color_Values" /> for color values)
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>borderColor</literal></term>
+					<listitem>
+						<para>
+							The border color of the header/footer box. Individual border sides can be set using <literal>borderColorLeft</literal>, <literal>borderColorRight</literal>, <literal>borderColorTop</literal> and <literal>borderColorBottom</literal>.(see <xref linkend="Seam_Reference_Guide-Document_Constants-Color_Values" /> for color values)
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>borderWidth</literal></term>
+					<listitem>
+						<para>
+							The width of the border. Inidvidual border sides can be specified using <literal>borderWidthLeft</literal>, <literal>borderWidthRight</literal>, <literal>borderWidthTop</literal> and <literal>borderWidthBottom</literal>.
+						</para>
+					</listitem>
+				</varlistentry>
+			</variablelist>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Headers_and_Footers-ppageNumber">
+			<title>p:pageNumber</title>
+			<para>
+				The current page number can be placed inside of a header or footer using the <literal>p:pageNumber</literal> tag. The page number tag can only be used in the context of a header or footer and can only be used once.
+			</para>
+		</section>
+
+	</section>
+	
+	<section id="Seam_Reference_Guide-iText_PDF_generation-Chapters_and_Sections">
+		<title>Chapters and Sections</title>
+		<para>
+			If the generated document follows a book/article structure, the <literal>p:chapter</literal> and <literal>p:section</literal> tags can be used to provide the necessary structure. Sections can only be used inside of chapters, but they may be nested arbitrarily deep. Most PDF viewers provide easy navigation between chapters and sections in a document.
+		</para>
+		
+<programlisting>
+&lt;p:document xmlns:p="http://jboss.com/products/seam/pdf"
+            title="Hello"&gt;
+
+   &lt;p:chapter number="1"&gt;
+      &lt;p:title&gt;&lt;p:paragraph&gt;Hello&lt;/p:paragraph&gt;&lt;/p:title&gt;
+      &lt;p:paragraph&gt;Hello #{user.name}!&lt;/p:paragraph&gt;
+   &lt;/p:chapter&gt;
+
+   &lt;p:chapter number="2"&gt;
+      &lt;p:title&gt;&lt;p:paragraph&gt;Goodbye&lt;/p:paragraph&gt;&lt;/p:title&gt;
+      &lt;p:paragraph&gt;Goodbye #{user.name}.&lt;/p:paragraph&gt;
+   &lt;/p:chapter&gt;
+
+&lt;/p:document&gt;
+</programlisting>
+		<section id="Seam_Reference_Guide-Chapters_and_Sections-pchapter_and_psection">
+			<title>p:chapter and p:section</title>
+			<variablelist>
+				<varlistentry>
+					<term><literal>number</literal></term>
+					<listitem>
+						<para>
+							The chapter number. Every chapter should be assigned a chapter number.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>numberDepth</literal></term>
+					<listitem>
+						<para>
+							The depth of numbering for section. All sections are numbered relative to their surrounding chapter/sections. The fourth section of of the first section of chapter three would be section 3.1.4, if displayed at the default number depth of three. To omit the chapter number, a number depth of 2 should be used. In that case, the section number would be displayed as 1.4.
+						</para>
+					</listitem>
+				</varlistentry>
+			</variablelist>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Chapters_and_Sections-ptitle">
+			<title>p:title</title>
+			<para>
+				Any chapter or section can contain a <literal>p:title</literal>. The title will be displayed next to the chapter/section number. The body of the title may contain raw text or may be a <literal>p:paragraph</literal>.
+			</para>
+		</section>
+
+	</section>
+	
+	<section id="Seam_Reference_Guide-iText_PDF_generation-Lists">
+		<title>Lists</title>
+		<para>
+			List structures can be displayed using the <literal>p:list</literal> and <literal>p:listItem</literal> tags. Lists may contain arbitrarily-nested sublists. List items may not be used outside of a list. he following document uses the <literal>ui:repeat</literal> tag to to display a list of values retrieved from a Seam component.
+		</para>
+		
+<programlisting>
+&lt;p:document xmlns:p="http://jboss.com/products/seam/pdf"
+            xmlns:ui="http://java.sun.com/jsf/facelets"
+            title="Hello"&gt;
+   &lt;p:list style="numbered"&gt;
+      &lt;ui:repeat value="#{documents}" var="doc"&gt;
+         &lt;p:listItem&gt;#{doc.name}&lt;/p:listItem&gt;
+      &lt;/ui:repeat&gt;
+   &lt;/p:list&gt;
+&lt;/p:document&gt;
+</programlisting>
+		<section id="Seam_Reference_Guide-Lists-plist">
+			<title>p:list</title>
+			<para>
+				<literal>p:list</literal> supports the following attributes:
+			</para>
+			<variablelist>
+				<varlistentry>
+					<term><literal>style</literal></term>
+					<listitem>
+						<para>
+							The ordering/bulleting style of list. One of: <literal>NUMBERED</literal>, <literal>LETTERED</literal>, <literal>GREEK</literal>, <literal>ROMAN</literal>, <literal>ZAPFDINGBATS</literal>, <literal>ZAPFDINGBATS_NUMBER</literal>. If no style is given, the list items are bulleted.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>listSymbol</literal></term>
+					<listitem>
+						<para>
+							For bulleted lists, specifies the bullet symbol.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>indent</literal></term>
+					<listitem>
+						<para>
+							The indentation level of the list.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>lowerCase</literal></term>
+					<listitem>
+						<para>
+							For list styles using letters, indicates whether the letters should be lower case.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>charNumber</literal></term>
+					<listitem>
+						<para>
+							For ZAPFDINGBATS, indicates the character code of the bullet character.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>numberType</literal></term>
+					<listitem>
+						<para>
+							For ZAPFDINGBATS_NUMBER, indicates the numbering style.
+						</para>
+					</listitem>
+				</varlistentry>
+			</variablelist>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Lists-plistItem">
+			<title>p:listItem</title>
+			<para>
+				<literal>p:listItem</literal> supports the following attributes:
+			</para>
+			<variablelist>
+				<varlistentry>
+					<term><literal>alignment</literal></term>
+					<listitem>
+						<para>
+							The alignment of the list item. (See <xref linkend="Seam_Reference_Guide-Document_Constants-Alignment_Values" /> for possible values)
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>indentationLeft</literal></term>
+					<listitem>
+						<para>
+							The left indentation amount.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>indentationRight</literal></term>
+					<listitem>
+						<para>
+							The right indentation amount.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>listSymbol</literal></term>
+					<listitem>
+						<para>
+							Overrides the default list symbol for this list item.
+						</para>
+					</listitem>
+				</varlistentry>
+			</variablelist>
+		</section>
+
+	</section>
+	
+	<section id="Seam_Reference_Guide-iText_PDF_generation-Tables">
+		<title>Tables</title>
+		<para>
+			Table structures can be created using the <literal>p:table</literal> and <literal>p:cell</literal> tags. Unlike many table structures, there is no explicit row declaration. If a table has 3 columns, then every 3 cells will automatically form a row. Header and footer rows can be declared, and the headers and footers will be repeated in the event a table structure spans multiple pages.
+		</para>
+		
+<programlisting>
+&lt;p:document xmlns:p="http://jboss.com/products/seam/pdf"   
+            xmlns:ui="http://java.sun.com/jsf/facelets"
+            title="Hello"&gt;   
+   &lt;p:table columns="3" headerRows="1"&gt;
+      &lt;p:cell&gt;name&lt;/p:cell&gt;
+      &lt;p:cell&gt;owner&lt;/p:cell&gt;
+      &lt;p:cell&gt;size&lt;/p:cell&gt;
+      &lt;ui:repeat value="#{documents}" var="doc"&gt;
+         &lt;p:cell&gt;#{doc.name}&lt;/p:cell&gt;
+         &lt;p:cell&gt;#{doc.user.name}&lt;/p:cell&gt;
+         &lt;p:cell&gt;#{doc.size}&lt;/p:cell&gt;
+      &lt;/ui:repeat&gt;
+   &lt;/p:table&gt;
+&lt;/p:document&gt;
+</programlisting>
+		<section id="Seam_Reference_Guide-Tables-ptable">
+			<title>p:table</title>
+			<para>
+				<literal>p:table</literal> supports the following attributes.
+			</para>
+			<variablelist>
+				<varlistentry>
+					<term><literal>columns</literal></term>
+					<listitem>
+						<para>
+							The number of columns (cells) that make up a table row.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>widths</literal></term>
+					<listitem>
+						<para>
+							The relative widths of each column. There should be one value for each column. For example: widths="2 1 1" would indicate that there are 3 columns and the first column should be twice the size of the second and third column.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>headerRows</literal></term>
+					<listitem>
+						<para>
+							The initial number of rows which are considered to be headers or footer rows and should be repeated if the table spans multiple pages.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>footerRows</literal></term>
+					<listitem>
+						<para>
+							The number of rows that are considered to be footer rows. This value is subtracted from the <literal>headerRows</literal> value. If document has 2 rows which make up the header and one row that makes up the footer, <literal>headerRows</literal> should be set to 3 and <literal>footerRows</literal> should be set to 1
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>widthPercentage</literal></term>
+					<listitem>
+						<para>
+							The percentage of the page width that the table spans.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>horizontalAlignment</literal></term>
+					<listitem>
+						<para>
+							The horizontal alignment of the table. (See <xref linkend="Seam_Reference_Guide-Document_Constants-Alignment_Values" /> for possible values)
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>skipFirstHeader</literal></term>
+					<listitem>
+						<para>
+							​
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>runDirection</literal></term>
+					<listitem>
+						<para>
+							​
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>lockedWidth</literal></term>
+					<listitem>
+						<para>
+							​
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>splitRows</literal></term>
+					<listitem>
+						<para>
+							​
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>spacingBefore</literal></term>
+					<listitem>
+						<para>
+							The blank space to be inserted before the element.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>spacingAfter</literal></term>
+					<listitem>
+						<para>
+							The blank space to be inserted after the element.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>extendLastRow</literal></term>
+					<listitem>
+						<para>
+							​
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>headersInEvent</literal></term>
+					<listitem>
+						<para>
+							​
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>splitLate</literal></term>
+					<listitem>
+						<para>
+							​
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>keepTogether</literal></term>
+					<listitem>
+						<para>
+							​
+						</para>
+					</listitem>
+				</varlistentry>
+			</variablelist>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Tables-pcell">
+			<title>p:cell</title>
+			<para>
+				<literal>p:cell</literal> supports the following attributes.
+			</para>
+			<variablelist>
+				<varlistentry>
+					<term><literal>colspan</literal></term>
+					<listitem>
+						<para>
+							Cells can span more than one column by declaring a <literal>colspan</literal> greater than 1. Tables do not have the ability to span across multiple rows.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>horizontalAlignment</literal></term>
+					<listitem>
+						<para>
+							The horizontal alignment of the cell. (see <xref linkend="Seam_Reference_Guide-Document_Constants-Alignment_Values" /> for possible values)
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>verticalAlignment</literal></term>
+					<listitem>
+						<para>
+							The vertical alignment of the cell. (see <xref linkend="Seam_Reference_Guide-Document_Constants-Alignment_Values" /> for possible values)
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>padding</literal></term>
+					<listitem>
+						<para>
+							Padding on a given side can also be specified using <literal>paddingLeft</literal>, <literal>paddingRight</literal>, <literal>paddingTop</literal> and <literal>paddingBottom</literal>.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>useBorderPadding</literal></term>
+					<listitem>
+						<para>
+							​
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>leading</literal></term>
+					<listitem>
+						<para>
+							​
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>multipliedLeading</literal></term>
+					<listitem>
+						<para>
+							​
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>indent</literal></term>
+					<listitem>
+						<para>
+							​
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>verticalAlignment</literal></term>
+					<listitem>
+						<para>
+							​
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>extraParagraphSpace</literal></term>
+					<listitem>
+						<para>
+							​
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>fixedHeight</literal></term>
+					<listitem>
+						<para>
+							​
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>noWrap</literal></term>
+					<listitem>
+						<para>
+							​
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>minimumHeight</literal></term>
+					<listitem>
+						<para>
+							​
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>followingIndent</literal></term>
+					<listitem>
+						<para>
+							​
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>rightIndent</literal></term>
+					<listitem>
+						<para>
+							​
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>spaceCharRatio</literal></term>
+					<listitem>
+						<para>
+							​
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>runDirection</literal></term>
+					<listitem>
+						<para>
+							​
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>arabicOptions</literal></term>
+					<listitem>
+						<para>
+							​
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>useAscender</literal></term>
+					<listitem>
+						<para>
+							​
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>grayFill</literal></term>
+					<listitem>
+						<para>
+							​
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>rotation</literal></term>
+					<listitem>
+						<para>
+							​
+						</para>
+					</listitem>
+				</varlistentry>
+			</variablelist>
+		</section>
+
+	</section>
+	
+	<section id="Seam_Reference_Guide-iText_PDF_generation-Document_Constants">
+		<title>Document Constants</title>
+		<para>
+			This section documents some of the constants shared by attributes on multiple tags.
+		</para>
+		<section id="Seam_Reference_Guide-Document_Constants-Color_Values">
+			<title>Color Values</title>
+			<para>
+				Seam documents do not yet support a full color specification. Currently, only named colors are supported. They are: <literal>white</literal>, <literal>gray</literal>, <literal>lightgray</literal>, <literal>darkgray</literal>, <literal>black</literal>, <literal>red</literal>, <literal>pink</literal>, <literal>yellow</literal>, <literal>green</literal>, <literal>magenta</literal>, <literal>cyan</literal> and <literal>blue</literal>.
+			</para>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Document_Constants-Alignment_Values">
+			<title>Alignment Values</title>
+			<para>
+				Where alignment values are used, the Seam PDF supports the following horizontal alignment values: <literal>left</literal>, <literal>right</literal>, <literal>center</literal>, <literal>justify</literal> and <literal>justifyall</literal>. The vertical alignment values are <literal>top</literal>, <literal>middle</literal>, <literal>bottom</literal>, and <literal>baseline</literal>.
+			</para>
+		</section>
+
+	</section>
+	
+	<section id="Seam_Reference_Guide-iText_PDF_generation-Configuring_iText">
+		<title>Configuring iText</title>
+		<para>
+			Document generation works out of the box with no additional configuration needed. However, there are a few points of configuration that are needed for more serious applications.
+		</para>
+		<para>
+			The default implementation serves PDF documents from a generic URL, <literal>/seam-doc.seam</literal>. Many browsers (and users) would prefer to see URLs that contain the actual PDF name like <literal>/myDocument.pdf</literal>. This capability requires some configuration. To serve PDF files, all *.pdf resources should be mapped to the Seam Servlet Filter and to the DocumentStoreServlet:
+		</para>
+		
+<programlisting>
+&lt;filter&gt;
+    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;
+    &lt;filter-class&gt;org.jboss.seam.servlet.SeamServletFilter&lt;/filter-class&gt;
+&lt;/filter&gt;
+
+&lt;filter-mapping&gt;
+    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;
+    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;
+&lt;/filter-mapping&gt;
+
+&lt;servlet&gt;
+    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;
+    &lt;servlet-class&gt;org.jboss.seam.pdf.DocumentStoreServlet&lt;/servlet-class&gt;
+&lt;/servlet&gt;
+
+&lt;servlet-mapping&gt;
+    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;
+    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;
+&lt;/servlet-mapping&gt;
+</programlisting>
+		<para>
+			The <literal>useExtensions</literal> option on the document store component completes the functionality by instructing the document store to generate URLs with the correct filename extension for the document type being generated.
+		</para>
+		
+<programlisting>        
+&lt;components xmlns="http://jboss.com/products/seam/components"
+            xmlns:pdf="http://jboss.com/products/seam/pdf"&gt;
+    &lt;pdf:documentStore useExtensions="true" /&gt;
+&lt;/components&gt;
+</programlisting>
+		<para>
+			Generated documents are stored in conversation scope and will expire when the conversation ends. At that point, references to the document will be invalid. To You can specify a default view to be shown when a document does not exist using the <literal>errorPage</literal> property of the documentStore.
+		</para>
+		
+<programlisting>        
+&lt;pdf:documentStore useExtensions="true" errorPage="/pdfMissing.seam" /&gt;
+</programlisting>
+	</section>
+	
+	<section id="Seam_Reference_Guide-iText_PDF_generation-iText_links">
+		<title>iText links</title>
+		<para>
+			For further information on iText, see:
+		</para>
+		<para>
+			<itemizedlist>
+				<listitem>
+					<para>
+						<ulink url="http://www.lowagie.com/iText/">iText Home Page</ulink>
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						<ulink url="http://www.manning.com/lowagie/">iText in Action</ulink>
+					</para>
+				</listitem>
+			</itemizedlist>
+		</para>
+	</section>
+
+</chapter>
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Jbpm.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Jbpm.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Jbpm.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,608 @@
+<?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" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Seam_Reference_Guide_CP07.ent">
+%BOOK_ENTITIES;
+]>
+<chapter id="Seam_Reference_Guide-Pageflows_and_business_processes" lang="en-US">
+	<title>Pageflows and business processes</title>
+	<para>
+		JBoss jBPM is a business process management engine for any Java SE or EE environment. jBPM lets you represent a business process or user interaction as a graph of nodes representing wait states, decisions, tasks, web pages, etc. The graph is defined using a simple, very readable, XML dialect called jPDL, and may be edited and visualised graphically using an eclipse plugin. jPDL is an extensible language, and is suitable for a range of problems, from defining web application page flow, to traditional workflow management, all the way up to orchestration of services in a SOA environment.
+	</para>
+	<para>
+		Seam applications use jBPM for two different problems:
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				Defining the pageflow involved in complex user interactions. A jPDL process definition defines the page flow for a single conversation. A Seam conversation is considered to be a relatively short-running interaction with a single user.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Defining the overarching business process. The business process may span multiple conversations with multiple users. Its state is persistent in the jBPM database, so it is considered long-running. Coordination of the activities of multiple users is a much more complex problem than scripting an interaction with a single user, so jBPM offers sophisticated facilities for task management and dealing with multiple concurrent paths of execution.
+			</para>
+		</listitem>
+	</itemizedlist>
+	<para>
+		<emphasis>Pageflow</emphasis>, <emphasis>conversation</emphasis> and <emphasis>task</emphasis> all refer to a single interaction with a single user and operate at different levels or granularity. A business process spans many tasks. Futhermore, the two applications of jBPM are totally orthogonal. You can use them together or independently or not at all.
+	</para>
+	<para>
+		You do not have to know jDPL to use Seam. If you are perfectly happy defining pageflow using JSF or Seam navigation rules, and if your application is more data-driven that process-driven, you probably do not need jBPM. But we are finding that thinking of user interaction in terms of a well-defined graphical representation is helping us build more robust applications.
+	</para>
+	<section id="Seam_Reference_Guide-Pageflows_and_business_processes-Pageflow_in_Seam">
+		<title>Pageflow in Seam</title>
+		<para>
+			There are two ways to define pageflow in Seam:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					Using JSF or Seam navigation rules - the <emphasis>stateless navigation model</emphasis>
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					Using jPDL - the <emphasis>stateful navigation model</emphasis>
+				</para>
+			</listitem>
+		</itemizedlist>
+		<para>
+			Very simple applications will only need the stateless navigation model. Very complex applications will use both models in different places. Each model has its strengths and weaknesses!
+		</para>
+		<section id="Seam_Reference_Guide-Pageflow_in_Seam-The_two_navigation_models">
+			<title>The two navigation models</title>
+			<para>
+				The stateless model defines a mapping from a set of named, logical outcomes of an event directly to the resulting page of the view. The navigation rules are entirely oblivious to any state held by the application other than what page was the source of the event. This means that your action listener methods must sometimes make decisions about the page flow, since only they have access to the current state of the application.
+			</para>
+			<para>
+				Here is an example page flow definition using JSF navigation rules:
+			</para>
+			
+<programlisting>&lt;navigation-rule&gt;
+    &lt;from-view-id&gt;/numberGuess.jsp&lt;/from-view-id&gt;
+        
+    &lt;navigation-case&gt;
+        &lt;from-outcome&gt;guess&lt;/from-outcome&gt;
+        &lt;to-view-id&gt;/numberGuess.jsp&lt;/to-view-id&gt;
+        &lt;redirect/&gt;
+    &lt;/navigation-case&gt;
+
+    &lt;navigation-case&gt;
+        &lt;from-outcome&gt;win&lt;/from-outcome&gt;
+        &lt;to-view-id&gt;/win.jsp&lt;/to-view-id&gt;
+        &lt;redirect/&gt;
+    &lt;/navigation-case&gt;
+        
+    &lt;navigation-case&gt;
+        &lt;from-outcome&gt;lose&lt;/from-outcome&gt;
+        &lt;to-view-id&gt;/lose.jsp&lt;/to-view-id&gt;
+        &lt;redirect/&gt;
+    &lt;/navigation-case&gt;
+
+&lt;/navigation-rule&gt;
+</programlisting>
+			<para>
+				Here is the same example page flow definition using Seam navigation rules:
+			</para>
+			
+<programlisting>&lt;page view-id="/numberGuess.jsp"&gt;
+        
+    &lt;navigation&gt;
+        &lt;rule if-outcome="guess"&gt;
+            &lt;redirect view-id="/numberGuess.jsp"/&gt;
+        &lt;/rule&gt;
+        &lt;rule if-outcome="win"&gt;
+            &lt;redirect view-id="/win.jsp"/&gt;
+        &lt;/rule&gt;
+        &lt;rule if-outcome="lose"&gt;
+            &lt;redirect view-id="/lose.jsp"/&gt;
+        &lt;/rule&gt;
+    &lt;/navigation-case&gt;
+
+&lt;/navigation-rule&gt;
+</programlisting>
+			<para>
+				If you find navigation rules overly verbose, you can return view ids directly from your action listener methods:
+			</para>
+			
+<programlisting>public String guess() {
+    if (guess==randomNumber) return "/win.jsp";
+    if (++guessCount==maxGuesses) return "/lose.jsp";
+    return null;
+}
+</programlisting>
+			<para>
+				This results in a redirect. You can even specify parameters to be used in the redirect:
+			</para>
+			
+<programlisting>public String search() {
+    return "/searchResults.jsp?searchPattern=#{searchAction.searchPattern}";
+}
+</programlisting>
+			<para>
+				The stateful model defines a set of transitions between a set of named, logical application states. In this model, it is possible to express the flow of any user interaction entirely in the jPDL pageflow definition, and write action listener methods that are completely unaware of the flow of the interaction.
+			</para>
+			<para>
+				Here is an example page flow definition using jPDL:
+			</para>
+			
+<programlisting>&lt;pageflow-definition name="numberGuess"&gt;
+    
+   &lt;start-page name="displayGuess" view-id="/numberGuess.jsp"&gt;
+      &lt;redirect/&gt;
+      &lt;transition name="guess" to="evaluateGuess"&gt;
+      	&lt;action expression="#{numberGuess.guess}" /&gt;
+      &lt;/transition&gt;
+   &lt;/start-page&gt;
+   
+   &lt;decision name="evaluateGuess" expression="#{numberGuess.correctGuess}"&gt;
+      &lt;transition name="true" to="win"/&gt;
+      &lt;transition name="false" to="evaluateRemainingGuesses"/&gt;
+   &lt;/decision&gt;
+   
+   &lt;decision name="evaluateRemainingGuesses" expression="#{numberGuess.lastGuess}"&gt;
+      &lt;transition name="true" to="lose"/&gt;
+      &lt;transition name="false" to="displayGuess"/&gt;
+   &lt;/decision&gt;
+   
+   &lt;page name="win" view-id="/win.jsp"&gt;
+      &lt;redirect/&gt;
+      &lt;end-conversation /&gt;
+   &lt;/page&gt;
+   
+   &lt;page name="lose" view-id="/lose.jsp"&gt;
+      &lt;redirect/&gt;
+      &lt;end-conversation /&gt;
+   &lt;/page&gt;
+   
+&lt;/pageflow-definition&gt;
+</programlisting>
+			<mediaobject>
+				<imageobject role="fo">
+					<imagedata align="center" fileref="images/plugin-jbpm-numguess.png" format="PNG" width="444" />
+				</imageobject>
+				<!-- 	<imageobject role="html">
+					<imagedata align="center" fileref="../shared/images/plugin-jbpm-numguess.png" />
+				</imageobject>  -->
+			</mediaobject>
+			<para>
+				There are two things we notice immediately here:
+			</para>
+			<itemizedlist>
+				<listitem>
+					<para>
+						The JSF/Seam navigation rules are <emphasis>much</emphasis> simpler. (However, this obscures the fact that the underlying Java code is more complex.)
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						The jPDL makes the user interaction immediately understandable, without us needing to even look at the JSP or Java code.
+					</para>
+				</listitem>
+			</itemizedlist>
+			<para>
+				In addition, the stateful model is more <emphasis>constrained</emphasis>. For each logical state (each step in the page flow), there are a constrained set of possible transitions to other states. The stateless model is an <emphasis>ad hoc</emphasis> model which is suitable to relatively unconstrained, freeform navigation where the user decides where he/she wants to go next, not the application.
+			</para>
+			<para>
+				The stateful/stateless navigation distinction is quite similar to the traditional view of modal/modeless interaction. Now, Seam applications are not usually modal in the simple sense of the word - indeed, avoiding application modal behavior is one of the main reasons for having conversations! However, Seam applications can be, and often are, modal at the level of a particular conversation. It is well-known that modal behavior is something to avoid as much as possible; it is very difficult to predict the order in which your users are going to want to do things! However, there is no doubt that the stateful model has its place.
+			</para>
+			<para>
+				The biggest contrast between the two models is the back-button behavior.
+			</para>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Pageflow_in_Seam-Seam_and_the_back_button">
+			<title>Seam and the back button</title>
+			<para>
+				When JSF or Seam navigation rules are used, Seam lets the user freely navigate via the back, forward and refresh buttons. It is the responsibility of the application to ensure that conversational state remains internally consistent when this occurs. Experience with the combination of web application frameworks like Struts or WebWork - that do not support a conversational model - and stateless component models like EJB stateless session beans or the Spring framework has taught many developers that this is close to impossible to do! However, our experience is that in the context of Seam, where there is a well-defined conversational model, backed by stateful session beans, it is actually quite straightforward. Usually it is as simple as combining the use of <literal>no-conversation-view-id</literal> with null checks at the beginning of action listener methods. We consider support for freeform navigation to be almost always desirable.
+			</para>
+			<para>
+				In this case, the <literal>no-conversation-view-id</literal> declaration goes in <literal>pages.xml</literal>. It tells Seam to redirect to a different page if a request originates from a page rendered during a conversation, and that conversation no longer exists:
+			</para>
+			
+<programlisting>&lt;page view-id="/checkout.xhtml" 
+        no-conversation-view-id="/main.xhtml"/&gt;
+</programlisting>
+			<para>
+				On the other hand, in the stateful model, backbuttoning is interpreted as an undefined transition back to a previous state. Since the stateful model enforces a defined set of transitions from the current state, back buttoning is be default disallowed in the stateful model. Seam transparently detects the use of the back button, and blocks any attempt to perform an action from a previous, <emphasis>stale</emphasis> page, and simply redirects the user to the <emphasis>current</emphasis> page (and displays a faces message). Whether you consider this a feature or a limitation of the stateful model depends upon your point of view: as an application developer, it is a feature; as a user, it might be frustrating! You can enable backbutton navigation from a particular page node by setting <literal>back="enabled"</literal>.
+			</para>
+			
+<programlisting>&lt;page name="checkout" 
+        view-id="/checkout.xhtml" 
+        back="enabled"&gt;
+    &lt;redirect/&gt;
+    &lt;transition to="checkout"/&gt;
+    &lt;transition name="complete" to="complete"/&gt;
+&lt;/page&gt;
+</programlisting>
+			<para>
+				This allows backbuttoning <emphasis>from</emphasis> the <literal>checkout</literal> state to <emphasis>any previous state!</emphasis>
+			</para>
+			<para>
+				Of course, we still need to define what happens if a request originates from a page rendered during a pageflow, and the conversation with the pageflow no longer exists. In this case, the <literal>no-conversation-view-id</literal> declaration goes into the pageflow definition:
+			</para>
+			
+<programlisting>&lt;page name="checkout" 
+        view-id="/checkout.xhtml" 
+        back="enabled" 
+        no-conversation-view-id="/main.xhtml"&gt;
+    &lt;redirect/&gt;
+    &lt;transition to="checkout"/&gt;
+    &lt;transition name="complete" to="complete"/&gt;
+&lt;/page&gt;
+</programlisting>
+			<para>
+				In practice, both navigation models have their place, and you will quickly learn to recognize when to prefer one model over the other.
+			</para>
+		</section>
+
+	</section>
+	
+	<section id="Seam_Reference_Guide-Pageflows_and_business_processes-Using_jPDL_pageflows">
+		<title>Using jPDL pageflows</title>
+		<section id="Seam_Reference_Guide-Using_jPDL_pageflows-Installing_pageflows">
+			<title>Installing pageflows</title>
+			<para>
+				We need to install the Seam jBPM-related components, and tell them where to find our pageflow definition. We can specify this Seam configuration in <literal>components.xml</literal>.
+			</para>
+			
+<programlisting>&lt;core:jbpm&gt;
+    &lt;core:pageflow-definitions&gt;
+        &lt;value&gt;pageflow.jpdl.xml&lt;/value&gt;
+    &lt;/core:pageflow-definitions&gt;
+&lt;/core:jbpm&gt;
+</programlisting>
+			<para>
+				The first line installs jBPM, the second points to a jPDL-based pageflow definition.
+			</para>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Using_jPDL_pageflows-Starting_pageflows">
+			<title>Starting pageflows</title>
+			<para>
+				We <emphasis>start</emphasis> a jPDL-based pageflow by specifying the name of the process definition using a <literal>@Begin</literal>, <literal>@BeginTask</literal> or <literal>@StartTask</literal> annotation:
+			</para>
+			
+<programlisting>@Begin(pageflow="numberguess")
+public void begin() { ... }
+</programlisting>
+			<para>
+				Alternatively we can start a pageflow using pages.xml:
+			</para>
+			
+<programlisting>&lt;page&gt;
+        &lt;begin-conversation pageflow="numberguess"/&gt;
+    &lt;/page&gt;
+</programlisting>
+			<para>
+				If we are beginning the pageflow during the <literal>RENDER_RESPONSE</literal> phase&mdash;during a <literal>@Factory</literal> or <literal>@Create</literal> method, for example&mdash;we consider ourselves to be already at the page being rendered, and use a <literal>&lt;start-page&gt;</literal> node as the first node in the pageflow, as in the example above.
+			</para>
+			<para>
+				But if the pageflow is begun as the result of an action listener invocation, the outcome of the action listener determines which is the first page to be rendered. In this case, we use a <literal>&lt;start-state&gt;</literal> as the first node in the pageflow, and declare a transition for each possible outcome:
+			</para>
+			
+<programlisting>&lt;pageflow-definition name="viewEditDocument"&gt;
+
+    &lt;start-state name="start"&gt;
+        &lt;transition name="documentFound" to="displayDocument"/&gt;
+        &lt;transition name="documentNotFound" to="notFound"/&gt;
+    &lt;/start-state&gt;
+    
+    &lt;page name="displayDocument" view-id="/document.jsp"&gt;
+        &lt;transition name="edit" to="editDocument"/&gt;
+        &lt;transition name="done" to="main"/&gt;
+    &lt;/page&gt;
+    
+    ...
+    
+    &lt;page name="notFound" view-id="/404.jsp"&gt;
+        &lt;end-conversation/&gt;
+    &lt;/page&gt;
+    
+&lt;/pageflow-definition&gt;
+</programlisting>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Using_jPDL_pageflows-Page_nodes_and_transitions">
+			<title>Page nodes and transitions</title>
+			<para>
+				Each <literal>&lt;page&gt;</literal> node represents a state where the system is waiting for user input:
+			</para>
+			
+<programlisting>&lt;page name="displayGuess" view-id="/numberGuess.jsp"&gt;
+    &lt;redirect/&gt;
+    &lt;transition name="guess" to="evaluateGuess"&gt;
+        &lt;action expression="#{numberGuess.guess}" /&gt;
+    &lt;/transition&gt;
+&lt;/page&gt;
+</programlisting>
+			<para>
+				The <literal>view-id</literal> is the JSF view id. The <literal>&lt;redirect/&gt;</literal> element has the same effect as <literal>&lt;redirect/&gt;</literal> in a JSF navigation rule: namely, a post-then-redirect behavior, to overcome problems with the browser's refresh button (note that Seam propagates conversation contexts over these browser redirects).
+			</para>
+			<para>
+				The transition name is the name of a JSF outcome triggered by clicking a command button or command link in <literal>numberGuess.jsp</literal>.
+			</para>
+			
+<programlisting>&lt;h:commandButton type="submit" value="Guess" action="guess"/&gt;
+</programlisting>
+			<para>
+				When the transition is triggered by clicking this button, jBPM will activate the transition action by calling the <literal>guess()</literal> method of the <literal>numberGuess</literal> component. Notice that the syntax used for specifying actions in the jPDL is just a familiar JSF EL expression, and that the transition action handler is just a method of a Seam component in the current Seam contexts. So we have exactly the same event model for jBPM events that we already have for JSF events. (The <emphasis>One Kind of Stuff</emphasis> principle.)
+			</para>
+			<para>
+				In the case of a null outcome (for example, a command button with no <literal>action</literal> defined), Seam will signal the transition with no name if one exists, or else simply redisplay the page if all transitions have names. So we could slightly simplify our example pageflow and this button:
+			</para>
+			
+<programlisting>&lt;h:commandButton type="submit" value="Guess"/&gt;
+</programlisting>
+			<para>
+				Would fire the following un-named transition:
+			</para>
+			
+<programlisting>&lt;page name="displayGuess" view-id="/numberGuess.jsp"&gt;
+    &lt;redirect/&gt;
+    &lt;transition to="evaluateGuess"&gt;
+        &lt;action expression="#{numberGuess.guess}" /&gt;
+    &lt;/transition&gt;
+&lt;/page&gt;
+</programlisting>
+			<para>
+				It is even possible to have the button call an action method, in which case the action outcome will determine the transition to be taken:
+			</para>
+			
+<programlisting>&lt;h:commandButton type="submit" value="Guess" action="#{numberGuess.guess}"/&gt;
+</programlisting>
+			
+<programlisting>&lt;page name="displayGuess" view-id="/numberGuess.jsp"&gt;
+    &lt;transition name="correctGuess" to="win"/&gt;
+    &lt;transition name="incorrectGuess" to="evaluateGuess"/&gt;
+&lt;/page&gt;
+</programlisting>
+			<para>
+				However, this is considered an inferior style, since it moves responsibility for controlling the flow out of the pageflow definition and back into the other components. It is much better to centralize this concern in the pageflow itself.
+			</para>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Using_jPDL_pageflows-Controlling_the_flow">
+			<title>Controlling the flow</title>
+			<para>
+				Usually, we do not need the more powerful features of jPDL when defining pageflows. We do need the <literal>&lt;decision&gt;</literal> node, however:
+			</para>
+			
+<programlisting>&lt;decision name="evaluateGuess" expression="#{numberGuess.correctGuess}"&gt;
+    &lt;transition name="true" to="win"/&gt;
+    &lt;transition name="false" to="evaluateRemainingGuesses"/&gt;
+&lt;/decision&gt;
+</programlisting>
+			<para>
+				A decision is made by evaluating a JSF EL expression in the Seam contexts.
+			</para>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Using_jPDL_pageflows-Ending_the_flow">
+			<title>Ending the flow</title>
+			<para>
+				We end the conversation using <literal>&lt;end-conversation&gt;</literal> or <literal>@End</literal>. (In fact, for readability, use of <emphasis>both</emphasis> is encouraged.)
+			</para>
+			
+<programlisting>&lt;page name="win" view-id="/win.jsp"&gt;
+    &lt;redirect/&gt;
+    &lt;end-conversation/&gt;
+&lt;/page&gt;
+</programlisting>
+			<para>
+				Optionally, we can end a task, specify a jBPM <literal>transition</literal> name. In this case, Seam will signal the end of the current task in the overarching business process.
+			</para>
+			
+<programlisting>&lt;page name="win" view-id="/win.jsp"&gt;
+    &lt;redirect/&gt;
+    &lt;end-task transition="success"/&gt;
+&lt;/page&gt;
+</programlisting>
+		</section>
+
+	</section>
+	
+	<section id="Seam_Reference_Guide-Pageflows_and_business_processes-Business_process_management_in_Seam">
+		<title>Business process management in Seam</title>
+		<para>
+			A business process is a well-defined set of tasks that must be performed by users or software systems according to well-defined rules about <emphasis>who</emphasis> can perform a task, and <emphasis>when</emphasis> it should be performed. Seam's jBPM integration makes it easy to display lists of tasks to users and let them manage their tasks. Seam also lets the application store state associated with the business process in the <literal>BUSINESS_PROCESS</literal> context, and have that state made persistent via jBPM variables.
+		</para>
+		<para>
+			A simple business process definition looks much the same as a page flow definition (<emphasis>One Kind of Stuff</emphasis>), except that instead of <literal>&lt;page&gt;</literal> nodes, we have <literal>&lt;task-node&gt;</literal> nodes. In a long-running business process, the wait states are where the system is waiting for some user to log in and perform a task.
+		</para>
+		
+<programlisting>&lt;process-definition name="todo"&gt;
+   
+   &lt;start-state name="start"&gt;
+      &lt;transition to="todo"/&gt;
+   &lt;/start-state&gt;
+   
+   &lt;task-node name="todo"&gt;
+      &lt;task name="todo" description="#{todoList.description}"&gt;
+         &lt;assignment actor-id="#{actor.id}"/&gt;
+      &lt;/task&gt;
+      &lt;transition to="done"/&gt;
+   &lt;/task-node&gt;
+   
+   &lt;end-state name="done"/&gt;
+   
+&lt;/process-definition&gt;
+</programlisting>
+		<mediaobject>
+			<imageobject role="fo">
+				<imagedata align="center" fileref="images/plugin-jbpm-todo.png" format="PNG" width="444" />
+			</imageobject>
+			<!-- 	<imageobject role="html">
+			<imagedata align="center" fileref="../shared/images/plugin-jbpm-todo.png" />
+		</imageobject>  -->
+		</mediaobject>
+		<para>
+			It is perfectly possible that we might have both jPDL business process definitions and jPDL pageflow definitions in the same project. If so, the relationship between the two is that a single <literal>&lt;task&gt;</literal> in a business process corresponds to a whole pageflow <literal>&lt;pageflow-definition&gt;</literal>
+		</para>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Pageflows_and_business_processes-Using_jPDL_business_process_definitions">
+		<title>Using jPDL business process definitions</title>
+		<section id="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Installing_process_definitions">
+			<title>Installing process definitions</title>
+			<para>
+				We need to install jBPM, and tell it where to find the business process definitions:
+			</para>
+			
+<programlisting>&lt;core:jbpm&gt;
+    &lt;core:process-definitions&gt;
+        &lt;value&gt;todo.jpdl.xml&lt;/value&gt;
+    &lt;/core:process-definitions&gt;
+&lt;/core:jbpm&gt;
+</programlisting>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Initializing_actor_ids">
+			<title>Initializing actor ids</title>
+			<para>
+				We always need to know what user is currently logged in. jBPM <emphasis>knows</emphasis> users by their <emphasis>actor id</emphasis> and <emphasis>group actor ids</emphasis>. We specify the current actor ids using the built in Seam component named <literal>actor</literal>:
+			</para>
+			
+<programlisting>@In Actor actor;
+
+public String login() {
+    ...
+    actor.setId( user.getUserName() );
+    actor.getGroupActorIds().addAll( user.getGroupNames() );
+    ...
+}
+</programlisting>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Initiating_a_business_process">
+			<title>Initiating a business process</title>
+			<para>
+				To initiate a business process instance, we use the <literal>@CreateProcess</literal> annotation:
+			</para>
+			
+<programlisting>@CreateProcess(definition="todo")
+public void createTodo() { ... }
+</programlisting>
+			<para>
+				Alternatively we can initiate a business process using pages.xml:
+			</para>
+			
+<programlisting>&lt;page&gt;
+    &lt;create-process definition="todo" /&gt;
+&lt;/page&gt;
+</programlisting>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Task_assignment">
+			<title>Task assignment</title>
+			<para>
+				When a process starts, task instances are created. These must be assigned to users or user groups. We can either hardcode our actor ids, or delegate to a Seam component:
+			</para>
+			
+<programlisting>&lt;task name="todo" description="#{todoList.description}"&gt;
+    &lt;assignment actor-id="#{actor.id}"/&gt;
+&lt;/task&gt;
+</programlisting>
+			<para>
+				In this case, we have simply assigned the task to the current user. We can also assign tasks to a pool:
+			</para>
+			
+<programlisting>&lt;task name="todo" description="#{todoList.description}"&gt;
+    &lt;assignment pooled-actors="employees"/&gt;
+&lt;/task&gt;
+</programlisting>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Task_lists">
+			<title>Task lists</title>
+			<para>
+				Several built-in Seam components make it easy to display task lists. The <literal>pooledTaskInstanceList</literal> is a list of pooled tasks that users may assign to themselves:
+			</para>
+			
+<programlisting>&lt;h:dataTable value="#{pooledTaskInstanceList}" var="task"&gt;
+    &lt;h:column&gt;
+        &lt;f:facet name="header"&gt;Description&lt;/f:facet&gt;
+        &lt;h:outputText value="#{task.description}"/&gt;
+    &lt;/h:column&gt;
+    &lt;h:column&gt;
+        &lt;s:link action="#{pooledTask.assignToCurrentActor}" value="Assign" taskInstance="#{task}"/&gt;
+    &lt;/h:column&gt;            	
+&lt;/h:dataTable&gt;
+</programlisting>
+			<para>
+				Note that instead of <literal>&lt;s:link&gt;</literal> we could have used a plain JSF <literal>&lt;h:commandLink&gt;</literal>:
+			</para>
+			
+<programlisting>&lt;h:commandLink action="#{pooledTask.assignToCurrentActor}"&gt; 
+    &lt;f:param name="taskId" value="#{task.id}"/&gt;
+&lt;/h:commandLink&gt;
+</programlisting>
+			<para>
+				The <literal>pooledTask</literal> component is a built-in component that simply assigns the task to the current user.
+			</para>
+			<para>
+				The <literal>taskInstanceListForType</literal> component includes tasks of a particular type that are assigned to the current user:
+			</para>
+			
+<programlisting>&lt;h:dataTable value="#{taskInstanceListForType['todo']}" var="task"&gt;
+    &lt;h:column&gt;
+        &lt;f:facet name="header"&gt;Description&lt;/f:facet&gt;
+        &lt;h:outputText value="#{task.description}"/&gt;
+    &lt;/h:column&gt;
+    &lt;h:column&gt;
+        &lt;s:link action="#{todoList.start}" value="Start Work" taskInstance="#{task}"/&gt;
+    &lt;/h:column&gt;            	
+&lt;/h:dataTable&gt;
+</programlisting>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Performing_a_task">
+			<title>Performing a task</title>
+			<para>
+				To begin work on a task, we use either <literal>@StartTask</literal> or <literal>@BeginTask</literal> on the listener method:
+			</para>
+			
+<programlisting>@StartTask
+public String start() { ... }
+</programlisting>
+			<para>
+				Alternatively we can begin work on a task using <filename>pages.xml</filename>:
+			</para>
+			
+<programlisting>&lt;page&gt;
+    &lt;start-task /&gt;
+&lt;/page&gt;
+</programlisting>
+			<para>
+				These annotations begin a special kind of conversation that has significance in terms of the overarching business process. Work done by this conversation has access to state held in the business process context.
+			</para>
+			<para>
+				If we end the conversation using <literal>@EndTask</literal>, Seam will signal the completion of the task:
+			</para>
+			
+<programlisting>@EndTask(transition="completed")
+public String completed() { ... }
+</programlisting>
+			<para>
+				Alternatively we can use pages.xml:
+			</para>
+			
+<programlisting>&lt;page&gt;
+    &lt;end-task transition="completed" /&gt;
+&lt;/page&gt;
+</programlisting>
+			<para>
+				(Alternatively, we could have used <literal>&lt;end-conversation&gt;</literal> as shown above.)
+			</para>
+			<para>
+				At this point, jBPM takes over and continues executing the business process definition. (In more complex processes, several tasks might need to be completed before process execution can resume.)
+			</para>
+			<para>
+				Please refer to the jBPM documentation for a more thorough overview of the sophisticated features that jBPM provides for managing complex business processes.
+			</para>
+		</section>
+
+	</section>
+
+</chapter>
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Jms.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Jms.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Jms.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,281 @@
+<?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" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Seam_Reference_Guide_CP07.ent">
+%BOOK_ENTITIES;
+]>
+<chapter id="Seam_Reference_Guide-Asynchronicity_and_messaging" lang="en-US">
+	<title>Asynchronicity and messaging</title>
+	<para>
+		Seam makes it very easy to perform work asynchronously from a web request. When most people think of asynchronicity in Java EE, they think of using JMS. This is certainly one way to approach the problem in Seam, and is the right way when you have strict and well-defined quality of service requirements. Seam makes it easy to send and recieve JMS messages using Seam components.
+	</para>
+	<para>
+		But for many usecases, JMS is overkill. Seam layers a simple asynchronous method and event facility over the EJB 3.0 timer service.
+	</para>
+	<sect1 id="Seam_Reference_Guide-Asynchronicity_and_messaging-Asynchronicity"><title>Asynchronicity</title>
+	<para>
+		Asynchronous events and method calls have the same quality of service expectations as the container's EJB timer service. If you are not familiar with the Timer service, do not worry, you do not need to interact with it directly if you want to use asynchronous methods in Seam.
+	</para>
+	<para>
+		To use asynchronous methods and events, you need to add the following line to <literal>components.xml</literal>:
+	</para>
+	
+<programlisting>&lt;core:dispatcher/&gt;
+</programlisting>
+	<para>
+		Note that this functionality is not available in environments which do not support EJB 3.0.
+	</para>
+	<sect2 id="Seam_Reference_Guide-Asynchronicity-Asynchronous_methods"><title>Asynchronous methods</title>
+	<para>
+		In simplest form, an asynchronous call just lets a method call be processed asynchronously (in a different thread) from the caller. We usually use an asynchronous call when we want to return an immediate response to the client, and let some expensive work be processed in the background. This pattern works very well in applications which use AJAX, where the client can automatically poll the server for the result of the work.
+	</para>
+	<para>
+		For EJB components, we annotate the local interface to specify that a method is processed asynchronously.
+	</para>
+	
+<programlisting>@Local
+public interface PaymentHandler
+{
+    @Asynchronous
+    public void processPayment(Payment payment);
+}
+</programlisting>
+	<para>
+		(For JavaBean components we can annotate the component implementation class if we like.)
+	</para>
+	<para>
+		The use of asynchronicity is transparent to the bean class:
+	</para>
+	
+<programlisting>@Stateless
+ at Name("paymentHandler")
+public class PaymentHandlerBean implements PaymentHandler
+{
+    public void processPayment(Payment payment)
+    {
+        //do some work!
+    }
+}
+</programlisting>
+	<para>
+		And also transparent to the client:
+	</para>
+	
+<programlisting>@Stateful
+ at Name("paymentAction")
+public class CreatePaymentAction
+{
+    @In(create=true) PaymentHandler paymentHandler;
+    @In Bill bill;
+    
+    public String pay()
+    {
+        paymentHandler.processPayment( new Payment(bill) );
+        return "success";
+    }
+}
+</programlisting>
+	<para>
+		The asynchronous method is processed in a completely new event context and does not have access to the session or conversation context state of the caller. However, the business process context <emphasis>is</emphasis> propagated.
+	</para>
+	<para>
+		Asynchronous method calls may be scheduled for later execution using the <literal>@Duration</literal>, <literal>@Expiration</literal> and <literal>@IntervalDuration</literal> annotations.
+	</para>
+	
+<programlisting>@Local
+public interface PaymentHandler
+{
+    @Asynchronous
+    public void processScheduledPayment(Payment payment, @Expiration Date date);
+
+    @Asynchronous
+    public void processRecurringPayment(Payment payment, @Expiration Date date, 
+      @IntervalDuration Long interval)'
+}
+</programlisting>
+	
+<programlisting>@Stateful
+ at Name("paymentAction")
+public class CreatePaymentAction
+{
+    @In(create=true) PaymentHandler paymentHandler;
+    @In Bill bill;
+    
+    public String schedulePayment()
+    {
+        paymentHandler.processScheduledPayment( new Payment(bill), bill.getDueDate() );
+        return "success";
+    }
+
+    public String scheduleRecurringPayment()
+    {
+        paymentHandler.processRecurringPayment( new Payment(bill), bill.getDueDate(), ONE_MONTH );
+        return "success";
+    }
+}
+</programlisting>
+	<para>
+		Both client and server may access the <literal>Timer</literal> object associated with the invocation.
+	</para>
+	
+<programlisting>@Local
+public interface PaymentHandler
+{
+    @Asynchronous
+    public Timer processScheduledPayment(Payment payment, @Expiration Date date);
+}
+</programlisting>
+	
+<programlisting>@Stateless
+ at Name("paymentHandler")
+public class PaymentHandlerBean implements PaymentHandler
+{
+    @In Timer timer;
+    
+    public Timer processScheduledPayment(Payment payment, @Expiration Date date)
+    {
+        //do some work!
+        
+        return timer; //note that return value is completely ignored
+    }
+
+}
+</programlisting>
+	
+<programlisting>@Stateful
+ at Name("paymentAction")
+public class CreatePaymentAction
+{
+    @In(create=true) PaymentHandler paymentHandler;
+    @In Bill bill;
+    
+    public String schedulePayment()
+    {
+        Timer timer = paymentHandler.processScheduledPayment( new Payment(bill), bill.getDueDate() );
+        return "success";
+    }
+}
+</programlisting>
+	<para>
+		Asynchronous methods cannot return any other value to the caller.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Asynchronicity-Asynchronous_events"><title>Asynchronous events</title>
+	<para>
+		Component-driven events may also be asynchronous. To raise an event for asynchronous processing, simply call the <literal>raiseAsynchronousEvent()</literal> methods of the <literal>Events</literal> class. To schedule a timed event, call one of the <literal>raiseTimedEvent()</literal> methods. Components may observe asynchronous events in the usual way, but remember that only the business process context is propagated to the asynchronous thread.
+	</para>
+	</sect2></sect1><sect1 id="Seam_Reference_Guide-Asynchronicity_and_messaging-Messaging_in_Seam"><title>Messaging in Seam</title>
+	<para>
+		Seam makes it easy to send and receive JMS messages to and from Seam components.
+	</para>
+	<sect2 id="Seam_Reference_Guide-Messaging_in_Seam-Configuration"><title>Configuration</title>
+	<para>
+		To configure Seam's infrastructure for sending JMS messages, you need to tell Seam about any topics and queues you want to send messages to, and also tell Seam where to find the <literal>QueueConnectionFactory</literal> and/or <literal>TopicConnectionFactory</literal>.
+	</para>
+	<para>
+		Seam defaults to using <literal>UIL2ConnectionFactory</literal> which is the usual connection factory for use with JBossMQ. If you are using some other JMS provider, you need to set one or both of <literal>queueConnection.queueConnectionFactoryJndiName</literal> and <literal>topicConnection.topicConnectionFactoryJndiName</literal> in <literal>seam.properties</literal>, <literal>web.xml</literal> or <literal>components.xml</literal>.
+	</para>
+	<para>
+		You also need to list topics and queues in <literal>components.xml</literal> to install Seam managed <literal>TopicPublisher</literal>s and <literal>QueueSender</literal>s:
+	</para>
+	
+<programlisting>
+&lt;jms:managed-topic-publisher name="stockTickerPublisher" 
+                   auto-create="true  topic-jndi-name="topic/stockTickerTopic"/&gt;
+
+&lt;jms:managed-queue-sender name="paymentQueueSender" auto-create="true" 
+    queue-jndi-name="queue/paymentQueue"/&gt;
+</programlisting>
+	<formalpara>
+		<title>Using JBoss Messaging</title>
+		<para>
+			For using JBoss Messaging which comes with JBoss Enterprise Application Platform 4.3, you should first set the value of the properties '<literal>queueConnection.queueConnectionFactoryJndiName</literal>' and '<literal>topicConnection.topicConnectionFactoryJndiName</literal>' to '<literal>ConnectionFactory</literal>' which is the default connection factory for JBoss Messaging. Then set the value of the '<literal>connectionProvider</literal>' property to '<literal>org.jboss.seam.remoting.messaging.JBossMessagingConnectionProvider</literal>' on the class component '<literal>org.jboss.seam.remoting.messaging.SubscriptionRegistry</literal>', which creates topic connections for jboss messaging. 
+<programlisting>
+&lt;component name="org.jboss.seam.jms.topicConnection"&gt;
+	&lt;property name="topicConnectionFactoryJndiName"&gt;
+	ConnectionFactory
+	&lt;/property&gt;
+&lt;/component&gt;
+&lt;component class="org.jboss.seam.remoting.messaging.SubscriptionRegistry" installed="true"&gt;
+	&lt;property name="allowedTopics"&gt;
+	chatroomTopic
+	&lt;/property&gt;
+	&lt;property name="connectionProvider"&gt;
+	org.jboss.seam.remoting.messaging.JBossMessagingConnectionProvider
+	&lt;/property&gt;
+&lt;/component&gt;
+</programlisting>
+			 You also need to update the topics to use JBoss Messaging as shown in the code fragment below. 
+<programlisting>
+&lt;server&gt;
+	&lt;mbean code="org.jboss.jms.server.destination.TopicService"
+               name="jboss.messaging.destination:service=Topic,name=chatroomTopic"
+                                            xmbean-dd="xmdesc/Topic-xmbean.xml"&gt;
+		&lt;depends optional-attribute-name="ServerPeer"&gt;
+		jboss.messaging:service=ServerPeer
+		&lt;/depends&gt;
+		&lt;depends&gt;
+		jboss.messaging:service=PostOffice
+		&lt;/depends&gt;
+		&lt;attribute name="SecurityConfig"&gt;
+			&lt;security&gt;
+			  &lt;role name="guest" read="true" write="true"/&gt;
+			  &lt;role name="publisher" read="true" write="true" create="false"/&gt;
+			  &lt;role name="durpublisher" read="true" write="true" create="true"/&gt;
+			&lt;/security&gt;
+		&lt;/attribute&gt;
+	&lt;/mbean&gt;
+&lt;/server&gt;
+</programlisting>
+		</para>
+	</formalpara>
+	</sect2><sect2 id="Seam_Reference_Guide-Messaging_in_Seam-Sending_messages"><title>Sending messages</title>
+	<para>
+		Now, you can inject a JMS <literal>TopicPublisher</literal> and <literal>TopicSession</literal> into any component:
+	</para>
+	
+<programlisting>@In 
+private TopicPublisher stockTickerPublisher;   
+ at In 
+private TopicSession topicSession;
+
+public void publish(StockPrice price) {
+      try
+      {
+         topicPublisher.publish( topicSession.createObjectMessage(price) );
+      } 
+      catch (Exception ex)
+      {
+         throw new RuntimeException(ex);
+      } 
+}
+</programlisting>
+	<para>
+		Or, for working with a queue:
+	</para>
+	
+<programlisting>@In
+private QueueSender paymentQueueSender;   
+ at In
+private QueueSession queueSession;
+
+public void publish(Payment payment) {
+      try
+      {
+         paymentQueueSender.send( queueSession.createObjectMessage(payment) );
+      } 
+      catch (Exception ex)
+      {
+         throw new RuntimeException(ex);
+      } 
+}
+</programlisting>
+	</sect2><sect2 id="Seam_Reference_Guide-Messaging_in_Seam-Receiving_messages_using_a_message_driven_bean"><title>Receiving messages using a message-driven bean</title>
+	<para>
+		You can process messages using any EJB3 message driven bean. Message-driven beans may even be Seam components, in which case it is possible to inject other event and application scoped Seam components.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Messaging_in_Seam-Receiving_messages_in_the_client"><title>Receiving messages in the client</title>
+	<para>
+		Seam Remoting lets you subscribe to a JMS topic from client-side JavaScript. This is described in the next chapter.
+	</para>
+	</sect2></sect1>
+</chapter>
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Mail.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Mail.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Mail.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,585 @@
+<?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" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Seam_Reference_Guide_CP07.ent">
+%BOOK_ENTITIES;
+]>
+<chapter id="Seam_Reference_Guide-Email" lang="en-US">
+	<title>Email</title>
+	<para>
+		Seam now includes an optional components for templating and sending emails.
+	</para>
+	<para>
+		Email support is provided by <literal>jboss-seam-mail.jar</literal>. This JAR contains the mail JSF controls, which are used to construct emails, and the <literal>mailSession</literal> manager component.
+	</para>
+	<para>
+		The examples/mail project contains an example of the email support in action. It demonstrates proper packaging, and it contains a number of example that demonstrate the key features currently supported.
+	</para>
+	<section id="Seam_Reference_Guide-Email-Creating_a_message">
+		<title>Creating a message</title>
+		<para>
+			You do not need to learn a whole new templating language to use Seam Mail&mdash;an email is just facelet!
+		</para>
+		
+<programlisting>&lt;m:message xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:m="http://jboss.com/products/seam/mail"
+    xmlns:h="http://java.sun.com/jsf/html"&gt;
+  
+    &lt;m:from name="Peter" address="peter at example.com" /&gt;
+    &lt;m:to name="#{person.firstname} #{person.lastname}"&gt;#{person.address}&lt;/m:to&gt;
+    &lt;m:subject&gt;Try out Seam!&lt;/m:subject&gt;
+    
+    &lt;m:body&gt;
+        &lt;p&gt;&lt;h:outputText value="Dear #{person.firstname}" /&gt;,&lt;/p&gt;
+        &lt;p&gt;You can try out Seam by visiting 
+        &lt;a href="http://labs.jboss.com/jbossseam"&gt;http://labs.jboss.com/jbossseam&lt;/a&gt;.&lt;/p&gt;
+        &lt;p&gt;Regards,&lt;/p&gt;
+        &lt;p&gt;Peter&lt;/p&gt;
+    &lt;/m:body&gt;
+    
+&lt;/m:message&gt;
+</programlisting>
+		<para>
+			The <literal>&lt;m:message&gt;</literal> tag wraps the whole message, and tells Seam to start rendering an email. Inside the <literal>&lt;m:message&gt;</literal> tag we use an <literal>&lt;m:from&gt;</literal> tag to set who the message is from, a <literal>&lt;m:to&gt;</literal> tag to specify a sender (notice how we use EL as we would in a normal facelet), and a <literal>&lt;m:subject&gt;</literal> tag.
+		</para>
+		<para>
+			The <literal>&lt;m:body&gt;</literal> tag wraps the body of the email. You can use regular HTML tags inside the body as well as JSF components.
+		</para>
+		<para>
+			So, now you have your email template, how do you go about sending it? Well, at the end of rendering the <literal>m:message</literal> the <literal>mailSession</literal> is called to send the email, so all you have to do is ask Seam to render the view:
+		</para>
+		
+<programlisting>@In(create=true)
+private Renderer renderer;
+   
+public void send() {
+    try {
+       renderer.render("/simple.xhtml");
+       facesMessages.add("Email sent successfully");
+   } 
+   catch (Exception e) {
+       facesMessages.add("Email sending failed: " + e.getMessage());
+   }
+}
+</programlisting>
+		<para>
+			If, for example, you entered an invalid email address, then an exception would be thrown, which is caught and then displayed to the user.
+		</para>
+		<section id="Seam_Reference_Guide-Creating_a_message-Attachments">
+			<title>Attachments</title>
+			<para>
+				Seam makes it easy to attach files to an email. It supports most of the standard java types used when working with files.
+			</para>
+			<para>
+				If you wanted to email the <literal>jboss-seam-mail.jar</literal>:
+			</para>
+			
+<programlisting>&lt;m:attachment value="/WEB-INF/lib/jboss-seam-mail.jar"/&gt;
+</programlisting>
+			<para>
+				Seam will load the file from the classpath, and attach it to the email. By default it would be attached as <literal>jboss-seam-mail.jar</literal>; if you wanted it to have another name you would just add the <literal>fileName</literal> attribute:
+			</para>
+			
+<programlisting>&lt;m:attachment value="/WEB-INF/lib/jboss-seam-mail.jar" fileName="this-is-so-cool.jar"/&gt;
+</programlisting>
+			<para>
+				You could also attach a <literal>java.io.File</literal>, a <literal>java.net.URL</literal>:
+			</para>
+			
+<programlisting>&lt;m:attachment value="#{numbers}"/&gt;
+</programlisting>
+			<para>
+				Or a <literal>byte[]</literal> or a <literal>java.io.InputStream</literal>:
+			</para>
+			
+<programlisting>&lt;m:attachment value="#{person.photo}" contentType="image/png"/&gt;
+</programlisting>
+			<para>
+				You will notice that for a <literal>byte[]</literal> and a <literal>java.io.InputStream</literal> you need to specify the MIME type of the attachment (as that information is not carried as part of the file).
+			</para>
+			<para>
+				And it gets even better, you can attach a Seam generated PDF, or any standard JSF view, just by wrapping a <literal>&lt;m:attachment&gt;</literal> around the normal tags you would use:
+			</para>
+			
+<programlisting>&lt;m:attachment fileName="tiny.pdf"&gt;
+    &lt;p:document&gt;                                                      
+        A very tiny PDF                                                                                                
+    &lt;/p:document&gt;
+&lt;/m:attachment&gt;
+</programlisting>
+			<para>
+				If you had a set of files you wanted to attach (for example a set of pictures loaded from a database) you can just use a <literal>&lt;ui:repeat&gt;</literal>:
+			</para>
+			
+<programlisting>&lt;ui:repeat value="#{people}" var="person"&gt;
+    &lt;m:attachment value="#{person.photo}" contentType="image/jpeg"
+    fileName="#{person.firstname}_#{person.lastname}.jpg"/&gt;
+&lt;/ui:repeat&gt;
+</programlisting>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Creating_a_message-HTMLText_alternative_part">
+			<title>HTML/Text alternative part</title>
+			<para>
+				Whilst most mail readers nowadays support HTML, some do not, so you can add a plain text alternative to your email body:
+			</para>
+			
+<programlisting>&lt;m:body&gt;
+    &lt;f:facet name="alternative"&gt;Sorry, your email reader can't show our fancy email, 
+please go to http://labs.jboss.com/jbossseam to explore Seam.&lt;/f:facet&gt;
+&lt;/m:body&gt;
+</programlisting>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Creating_a_message-Multiple_recipients">
+			<title>Multiple recipients</title>
+			<para>
+				Often you will want to send an email to a group of recipients (for example your users). All of the recipient mail tags can be placed inside a <literal>&lt;ui:repeat&gt;</literal>:
+			</para>
+			
+<programlisting>&lt;ui:repeat value="#{allUsers} var="user"&gt;
+    &lt;m:to name="#{user.firstname} #{user.lastname}" address="#{user.emailAddress}" /&gt;
+&lt;/ui:repeat&gt;
+</programlisting>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Creating_a_message-Multiple_messages">
+			<title>Multiple messages</title>
+			<para>
+				Sometimes, however, you need to send a slightly different message to each recipient (e.g. a password reset). The best way to do this is to place the whole message inside a <literal>&lt;ui:repeat&gt;</literal>:
+			</para>
+			
+<programlisting>&lt;ui:repeat value="#{people}" var="p"&gt;
+    &lt;m:message&gt;
+        &lt;m:from name="#{person.firstname} #{person.lastname}"&gt;#{person.address}&lt;/m:from&gt;
+        &lt;m:to name="#{p.firstname}"&gt;#{p.address}&lt;/m:to&gt;
+            ...
+    &lt;/m:message&gt;
+&lt;/ui:repeat&gt;
+</programlisting>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Creating_a_message-Templating">
+			<title>Templating</title>
+			<para>
+				The mail templating example shows that facelets templating Just Works with the Seam mail tags.
+			</para>
+			<para>
+				Our <literal>template.xhtml</literal> contains:
+			</para>
+			
+<programlisting>&lt;m:message&gt;
+   &lt;m:from name="Seam" address="do-not-reply at jboss.com" /&gt;
+   &lt;m:to name="#{person.firstname} #{person.lastname}"&gt;#{person.address}&lt;/m:to&gt;
+   &lt;m:subject&gt;#{subject}&lt;/m:subject&gt;
+   &lt;m:body&gt;
+       &lt;html&gt;
+           &lt;body&gt;
+               &lt;ui:insert name="body"&gt;This is the default body, specified by the template.
+                                   &lt;/ui:insert&gt;
+           &lt;/body&gt;
+       &lt;/html&gt;
+   &lt;/m:body&gt;
+&lt;/m:message&gt;
+</programlisting>
+			<para>
+				Our <literal>templating.xhtml</literal> contains:
+			</para>
+			
+<programlisting>&lt;ui:param name="subject" value="Templating with Seam Mail"/&gt;
+&lt;ui:define name="body"&gt;
+    &lt;p&gt;This example demonstrates that you can easily use &lt;i&gt;facelets templating&lt;/i&gt; in email!&lt;/p&gt;
+&lt;/ui:define&gt;
+</programlisting>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Creating_a_message-Internationalisation">
+			<title>Internationalisation</title>
+			<para>
+				Seam supports sending internationalised messages. By default, the encoding provided by JSF is used, but this can be overridden on the template:
+			</para>
+			
+<programlisting>&lt;m:message charset="UTF-8"&gt;
+   ...
+&lt;/m:message&gt;
+</programlisting>
+			<para>
+				The body, subject and recipient (and from) name will be encoded. You will need to make sure facelets uses the correct charset for parsing your pages by setting encoding of the template:
+			</para>
+			
+<programlisting>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+</programlisting>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Creating_a_message-Other_Headers">
+			<title>Other Headers</title>
+			<para>
+				Sometimes you will want to add other headers to your email. Seam provides support for some (see <xref linkend="Seam_Reference_Guide-Email-Tags" />). For example, we can set the importance of the email, and ask for a read receipt:
+			</para>
+			
+<programlisting>&lt;m:message xmlns:m="http://jboss.com/products/seam/mail"
+           importance="low"
+           requestReadReceipt="true"/&gt;
+</programlisting>
+			<para>
+				Otherise you can add any header to the message using the <literal>&lt;m:header&gt;</literal> tag:
+			</para>
+			
+<programlisting>&lt;m:header name="X-Sent-From" value="JBoss Seam"/&gt;
+</programlisting>
+		</section>
+
+	</section>
+	
+	<section id="Seam_Reference_Guide-Email-Receiving_emails">
+		<title>Receiving emails</title>
+		<para>
+			If you are using EJB then you can use a MDB (Message Driven Bean) to receive email. Seam comes with an improved version of <literal>mail-ra.rar</literal> as distributed in JBoss AS; until the improvements make there way into a released version of JBoss AS, replacing the default <literal>rar</literal> with the one distributed with Seam is recommended.
+		</para>
+		<para>
+			You can configure it like this:
+		</para>
+		
+<programlisting>@MessageDriven(activationConfig={
+         @ActivationConfigProperty(propertyName="mailServer", propertyValue="localhost"),
+         @ActivationConfigProperty(propertyName="mailFolder", propertyValue="INBOX"),
+         @ActivationConfigProperty(propertyName="storeProtocol", propertyValue="pop3"),
+         @ActivationConfigProperty(propertyName="userName", propertyValue="seam"),
+         @ActivationConfigProperty(propertyName="password", propertyValue="seam")
+})
+ at ResourceAdapter("mail-ra.rar")
+ at Name("mailListener")
+public class MailListenerMDB implements MailListener {
+
+   @In(create=true)
+   private OrderProcessor orderProcessor;
+
+   public void onMessage(Message message) {
+      // Process the message
+      orderProcessor.process(message.getSubject());
+   }
+   
+}
+</programlisting>
+		<para>
+			Each message received will cause <literal>onMessage(Message message)</literal> to be called. Most seam annotations will work inside a MDB but you must not access the persistence context.
+		</para>
+		<para>
+			You can find more information on the default <literal>mail-ra.rar</literal> at <ulink url="http://wiki.jboss.org/wiki/Wiki.jsp?page=InboundJavaMail">http://wiki.jboss.org/wiki/Wiki.jsp?page=InboundJavaMail</ulink>. The version distributed with Seam also includes a <literal>debug</literal> property to enable JavaMail debugging, a <literal>flush</literal> property (by default true) to disable flushing a <literal>POP3</literal> mailbox after successfullying delivering a message to your MDB and a <literal>port</literal> property to override the default TCP port.
+		</para>
+		<note>
+			<para>
+				The api for this may be altered as changes make there way into the JBoss Enterprise Application Platform.
+			</para>
+		</note>
+		<!-- 		<para>
+			If you are not using the JBoss Enterprise Application Platform you can still use <literal>mail-ra.rar</literal> (included with Seam in the mail directory), or you may find your application server includes a similar adapter.
+		</para>  -->
+	</section>
+	
+	<section id="Seam_Reference_Guide-Email-Configuration">
+		<title>Configuration</title>
+		<para>
+			To include Email support in your application, include <literal>jboss-seam-mail.jar</literal> in your WEB-INF/lib directory. If you are using JBoss AS there is no further configuration needed to use Seam's email support. Otherwise you need to make sure you have the JavaMail API, an implementation of the JavaMail API present (the API and impl used in JBoss AS are distributed with seam as <literal>lib/mail.jar</literal>), and a copy of the Java Activation Framework (distributed with seam as <literal>lib/activation.jar</literal>.
+		</para>
+		<para>
+			The Seam Email module requires the use of Facelets as the view technology. Future versions of the library may also support the use of JSP. Additionally, it requires the use of the seam-ui package.
+		</para>
+		<para>
+			The <literal>mailSession</literal> component uses JavaMail to talk to a 'real' SMTP server.
+		</para>
+		<section id="Seam_Reference_Guide-Configuration-mailSession">
+			<title><literal>mailSession</literal></title>
+			<para>
+				A JavaMail Session may be available via a JNDI lookup if you are working in an JEE environment or you can use a Seam configured Session.
+			</para>
+			<para>
+				The mailSession component's properties are described in more detail in the Mail related components section.
+			</para>
+			<section id="Seam_Reference_Guide-mailSession-JNDI_lookup_in_JBoss_AS">
+				<title>JNDI lookup in JBoss AS</title>
+				<para>
+					The JBossAS <literal>deploy/mail-service.xml</literal> configures a JavaMail session binding into JNDI. The default service configuration will need altering for your network. <ulink url="http://wiki.jboss.org/wiki/Wiki.jsp?page=JavaMail">http://wiki.jboss.org/wiki/Wiki.jsp?page=JavaMail</ulink> describes the service in more detail.
+				</para>
+				
+<programlisting>&lt;components xmlns="http://jboss.com/products/seam/components"
+        xmlns:core="http://jboss.com/products/seam/core"
+        xmlns:mail="http://jboss.com/products/seam/mail"&gt;
+        
+    &lt;mail:mail-session session-jndi-name="java:/Mail"/&gt;
+    
+&lt;/components&gt;
+</programlisting>
+				<para>
+					Here we tell Seam to get the mail session bound to <literal>java:/Mail</literal> from JNDI.
+				</para>
+			</section>
+			
+			<section id="Seam_Reference_Guide-mailSession-Seam_configured_Session">
+				<title>Seam configured Session</title>
+				<para>
+					A mail session can be configured via <literal>components.xml</literal>. Here we tell Seam to use <literal>smtp.example.com</literal> as the smtp server,
+				</para>
+				
+<programlisting>&lt;components xmlns="http://jboss.com/products/seam/components"
+        xmlns:core="http://jboss.com/products/seam/core"
+        xmlns:mail="http://jboss.com/products/seam/mail"&gt;
+        
+    &lt;mail:mail-session host="smtp.example.com"/&gt;
+    
+&lt;/components&gt;
+</programlisting>
+			</section>
+
+		</section>
+
+	</section>
+	
+	<section id="Seam_Reference_Guide-Email-Tags">
+		<title>Tags</title>
+		<para>
+			Emails are generated using tags in the <literal>http://jboss.com/products/seam/mail</literal> namespace. Documents should always have the <literal>message</literal> tag at the root of the message. The message tag prepares Seam to generate an email.
+		</para>
+		<para>
+			The standard templating tags of facelets can be used as normal. Inside the body you can use any JSF tag which does not require access to external resources (stylesheets, javascript).
+		</para>
+		<variablelist>
+			<varlistentry>
+				<term>&lt;m:message&gt;</term>
+				<listitem>
+					<para>
+						Root tag of a mail message
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>importance</literal> &mdash; low, normal or high. By default normal, this sets the importance of the mail message.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>precedence</literal> &mdash; sets the precedence of the message (for example, bulk).
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>requestReadReceipt</literal> &mdash; by default false, if set, a read receipt will be request will be added, with the read receipt being sent to the <literal>From:</literal> address.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>urlBase</literal> &mdash; If set, the value is prepended to the <literal>requestContextPath</literal> allowing you to use components such as <literal>&lt;h:graphicImage&gt;</literal> in your emails.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term>&lt;m:from&gt;</term>
+				<listitem>
+					<para>
+						Set's the From: address for the email. You can only have one of these per email.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>name</literal> &mdash; the name the email should come from.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>address</literal> &mdash; the email address the email should come from.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term>&lt;m:replyTo&gt;</term>
+				<listitem>
+					<para>
+						Set's the Reply-to: address for the email. You can only have one of these per email.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>address</literal> &mdash; the email address the email should come from.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term>&lt;m:to&gt;</term>
+				<listitem>
+					<para>
+						Add a recipient to the email. Use multiple &lt;m:to&gt; tags for multiple recipients. This tag can be safely placed inside a repeat tag such as &lt;ui:repeat&gt;.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>name</literal> &mdash; the name of the recipient.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>address</literal> &mdash; the email address of the recipient.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term>&lt;m:cc&gt;</term>
+				<listitem>
+					<para>
+						Add a cc recipient to the email. Use multiple &lt;m:cc&gt; tags for multiple ccs. This tag can be safely placed inside a repeat tag such as &lt;ui:repeat&gt;.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>name</literal> &mdash; the name of the recipient.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>address</literal> &mdash; the email address of the recipient.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term>&lt;m:bcc&gt;</term>
+				<listitem>
+					<para>
+						Add a bcc recipient to the email. Use multiple &lt;m:bcc&gt; tags for multiple bccs. This tag can be safely placed inside a repeat tag such as &lt;ui:repeat&gt;.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>name</literal> &mdash; the name of the recipient.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>address</literal> &mdash; the email address of the recipient.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term>&lt;m:header&gt;</term>
+				<listitem>
+					<para>
+						Add a header to the email (for example, <literal>X-Sent-From: JBoss Seam</literal>
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>name</literal> &mdash; The name of the header to add (e.g. <literal>X-Sent-From</literal>).
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>value</literal> &mdash; The value of the header to add (e.g. <literal>JBoss Seam</literal>).
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term>&lt;m:attachment&gt;</term>
+				<listitem>
+					<para>
+						Add an attachment to the email.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>value</literal> &mdash; The file to attach:
+							</para>
+							<itemizedlist>
+								<listitem>
+									<para>
+										<literal>String</literal> &mdash; A <literal>String</literal> is interpreted as a path to file within the classpath
+									</para>
+								</listitem>
+								<listitem>
+									<para>
+										<literal>java.io.File</literal> &mdash; An EL expression can reference a <literal>File</literal> object
+									</para>
+								</listitem>
+								<listitem>
+									<para>
+										<literal>java.net.URL</literal> &mdash; An EL expression can reference a <literal>URL</literal> object
+									</para>
+								</listitem>
+								<listitem>
+									<para>
+										<literal>java.io.InputStream</literal> &mdash; An EL expression can reference an <literal>InputStream</literal>. In this case both a <literal>fileName</literal> and a <literal>contentType</literal> must be specified.
+									</para>
+								</listitem>
+								<listitem>
+									<para>
+										<literal>byte[]</literal> &mdash; An EL expression can reference an <literal>byte[]</literal>. In this case both a <literal>fileName</literal> and a <literal>contentType</literal> must be specified.
+									</para>
+								</listitem>
+							</itemizedlist>
+							<para>
+								If the value attribute is ommitted:
+							</para>
+							<itemizedlist>
+								<listitem>
+									<para>
+										If this tag contains a <literal>&lt;p:document&gt;</literal> tag, the document described will be generated and attached to the email. A <literal>fileName</literal> should be specfied.
+									</para>
+								</listitem>
+								<listitem>
+									<para>
+										If this tag contains other JSF tags a HTML document will be generated from them and attached to the email. A <literal>fileName</literal> should be specfied.
+									</para>
+								</listitem>
+							</itemizedlist>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>fileName</literal> &mdash; Specify the file name to use for the attached file.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>contentType</literal> &mdash; Specify the MIME type of the attached file
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term>&lt;m:subject&gt;</term>
+				<listitem>
+					<para>
+						Set's the subject for the email.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term>&lt;m:body&gt;</term>
+				<listitem>
+					<para>
+						Set's the body for the email. Supports an <literal>alternative</literal> facet which, if an HTML email is generated can contain alternative text for a mail reader which doesn't support html.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>type</literal> &mdash; If set to <literal>plain</literal> then a plain text email will be generated otherwise an HTML email is generated.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+	</section>
+
+</chapter>
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Persistence.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Persistence.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Persistence.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,333 @@
+<?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" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Seam_Reference_Guide_CP07.ent">
+%BOOK_ENTITIES;
+]>
+<chapter id="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping" lang="en-US">
+	<title>Seam and Object/Relational Mapping</title>
+	<para>
+		Seam provides extensive support for the two most popular persistence architectures for Java: Hibernate3, and the Java Persistence API introduced with EJB 3.0. Seam's unique state-management architecture allows the most sophisticated ORM integration of any web application framework.
+	</para>
+	<section id="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Introduction">
+		<title>Introduction</title>
+		<para>
+			Seam grew out of the frustration of the Hibernate team with the statelessness typical of the previous generation of Java application architectures. The state management architecture of Seam was originally designed to solve problems relating to persistence&mdash;in particular problems associated with <emphasis>optimistic transaction processing</emphasis>. Scalable online applications always use optimistic transactions. An atomic (database/JTA) level transaction should not span a user interaction unless the application is designed to support only a very small number of concurrent clients. But almost all interesting work involves first displaying data to a user, and then, slightly later, updating the same data. So Hibernate was designed to support the idea of a persistence context which spanned an optimistic transaction.
+		</para>
+		<para>
+			Unfortunately, the so-called <emphasis>stateless</emphasis> architectures that preceded Seam and EJB 3.0 had no construct for representing an optimistic transaction. So, instead, these architectures provided persistence contexts scoped to the atomic transaction. This resulted in many problems for users, and is the cause of the number one user complaint about Hibernate: the dreaded <literal>LazyInitializationException</literal>. What we need is a construct for representing an optimistic transaction in the application tier.
+		</para>
+		<para>
+			EJB 3.0 recognizes this problem, and introduces the idea of a stateful component (a stateful session bean) with an <emphasis>extended persistence context</emphasis> scoped to the lifetime of the component. This is a partial solution to the problem (and is a useful construct in and of itself) however there are two problems:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					The lifecycle of the stateful session bean must be managed manually via code in the web tier (it turns out that this is a subtle problem and much more difficult in practice than it sounds).
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					Propagation of the persistence context between stateful components in the same optimistic transaction is possible, but tricky.
+				</para>
+			</listitem>
+		</itemizedlist>
+		<para>
+			Seam solves the first problem by providing conversations, and stateful session bean components scoped to the conversation. (Most conversations actually represent optimistic transactions in the data layer.) This is sufficient for many simple applications (such as the Seam booking demo) where persistence context propagation is not needed. For more complex applications, with many loosly-interacting components in each conversation, propagation of the persistence context across components becomes an important issue. So Seam extends the persistence context management model of EJB 3.0, to provide conversation-scoped extended persistence contexts.
+		</para>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Seam_managed_transactions">
+		<title>Seam managed transactions</title>
+		<para>
+			EJB session beans feature declarative transaction management. The EJB container is able to start a transaction transparently when the bean is invoked, and end it when the invocation ends. If we write a session bean method that acts as a JSF action listener, we can do all the work associated with that action in one transaction, and be sure that it is committed or rolled back when we finish processing the action. This is a great feature, and all that is needed by some Seam applications.
+		</para>
+		<para>
+			However, there is a problem with this approach. A Seam application may not perform all data access for a request from a single method call to a session bean.
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					The request might require processing by several loosly-coupled components, each of which is called independently from the web layer. It is common to see several or even many calls per request from the web layer to EJB components in Seam.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					Rendering of the view might require lazy fetching of associations.
+				</para>
+			</listitem>
+		</itemizedlist>
+		<para>
+			The more transactions per request, the more likely we are to encounter atomicity and isolation problems when our application is processing many concurrent requests. Certainly, all write operations should occur in the same transaction.
+		</para>
+		<para>
+			Hibernate users developed the <emphasis>open session in view</emphasis> pattern to work around this problem. In the Hibernate community, <emphasis>open session in view</emphasis> was historically even more important because frameworks like Spring use transaction-scoped persistence contexts. So rendering the view would cause <literal>LazyInitializationException</literal>s when unfetched associations were accessed.
+		</para>
+		<para>
+			This pattern is usually implemented as a single transaction which spans the entire request. There are several problems with this implementation, the most serious being that we can never be sure that a transaction is successful until we commit it&mdash;but by the time the <emphasis>open session in view</emphasis> transaction is committed, the view is fully rendered, and the rendered response may already have been flushed to the client. How can we notify the user that their transaction was unsuccessful?
+		</para>
+		<para>
+			Seam solves both the transaction isolation problem and the association fetching problem, while working around the problems with <emphasis>open session in view</emphasis>. The solution comes in two parts:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					use an extended persistence context that is scoped to the conversation, instead of to the transaction
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					use two transactions per request; the first spans the beginning of the update model values phase until the end of the invoke application phase; the second spans the render response phase
+				</para>
+			</listitem>
+		</itemizedlist>
+		<para>
+			In the next section, we will tell you how to set up a conversation-scope persistence context. But first we need to tell you how to enable Seam transaction management. Note that you can use conversation-scoped persistence contexts without Seam transaction management, and there are good reasons to use Seam transaction management even when you are not using Seam-managed persistence contexts. However, the two facilities were designed to work together, and work best when used together.
+		</para>
+		<section id="Seam_Reference_Guide-Seam_managed_transactions-Enabling_Seam_managed_transactions">
+			<title>Enabling Seam-managed transactions</title>
+			<para>
+				To make use of <emphasis>Seam managed transactions</emphasis>, you need to use <literal>TransactionalSeamPhaseListener</literal> in place of <literal>SeamPhaseListener</literal>.
+			</para>
+			
+<programlisting>&lt;lifecycle&gt;
+     &lt;phase-listener&gt;
+        org.jboss.seam.jsf.TransactionalSeamPhaseListener
+    &lt;/phase-listener&gt;
+&lt;/lifecycle&gt;
+</programlisting>
+			<para>
+				Seam transaction management is useful even if you are using EJB 3.0 container-managed persistence contexts. But it is especially useful if you use Seam outside a Java EE 5 environment, or in any other case where you would use a Seam-managed persistence context.
+			</para>
+		</section>
+
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Seam_managed_persistence_contexts">
+		<title>Seam-managed persistence contexts</title>
+		<para>
+			If you are using Seam outside of a Java EE 5 environment, you cannot rely upon the container to manage the persistence context lifecycle for you. Even if you are in an EE 5 environment, you might have a complex application with many loosly coupled components that collaborate together in the scope of a single conversation, and in this case you might find that propagation of the persistence context between component is tricky and error-prone.
+		</para>
+		<para>
+			In either case, you will need to use a <emphasis>managed persistence context</emphasis> (for JPA) or a <emphasis>managed session</emphasis> (for Hibernate) in your components. A Seam-managed persistence context is just a built-in Seam component that manages an instance of <literal>EntityManager</literal> or <literal>Session</literal> in the conversation context. You can inject it with <literal>@In</literal>.
+		</para>
+		<para>
+			Seam-managed persistence contexts are extremely efficient in a clustered environment. Seam is able to perform an optimization that EJB 3.0 specification does not allow containers to use for container-managed extended persistence contexts. Seam supports transparent failover of extended persisence contexts, without the need to replicate any persistence context state between nodes. (We hope to fix this oversight in the next revision of the EJB spec.)
+		</para>
+		<section id="Seam_Reference_Guide-Seam_managed_persistence_contexts-Using_a_Seam_managed_persistence_context_with_JPA">
+			<title>Using a Seam-managed persistence context with JPA</title>
+			<para>
+				Configuring a managed persistence context is easy. In <literal>components.xml</literal>, we can write:
+			</para>
+			
+<programlisting>&lt;core:managed-persistence-context name="bookingDatabase" 
+                           auto-create="true"
+            persistence-unit-jndi-name="java:/EntityManagerFactories/bookingData"/&gt;
+</programlisting>
+			<para>
+				This configuration creates a conversation-scoped Seam component named <literal>bookingDatabase</literal> that manages the lifecycle of <literal>EntityManager</literal> instances for the persistence unit (<literal>EntityManagerFactory</literal> instance) with JNDI name <literal>java:/EntityManagerFactories/bookingData</literal>.
+			</para>
+			<para>
+				Of course, you need to make sure that you have bound the <literal>EntityManagerFactory</literal> into JNDI. In JBoss, you can do this by adding the following property setting to <literal>persistence.xml</literal>.
+			</para>
+			
+<programlisting>&lt;property name="jboss.entity.manager.factory.jndi.name" 
+          value="java:/EntityManagerFactories/bookingData"/&gt;
+</programlisting>
+			<para>
+				Now we can have our <literal>EntityManager</literal> injected using:
+			</para>
+			
+<programlisting>@In EntityManager bookingDatabase;
+</programlisting>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Seam_managed_persistence_contexts-Using_a_Seam_managed_Hibernate_session">
+			<title>Using a Seam-managed Hibernate session</title>
+			<para>
+				Seam-managed Hibernate sessions are similar. In <literal>components.xml</literal>:
+			</para>
+			
+<programlisting>&lt;core:hibernate-session-factory name="hibernateSessionFactory"/&gt;
+
+&lt;core:managed-hibernate-session name="bookingDatabase" 
+                         auto-create="true"
+           session-factory-jndi-name="java:/bookingSessionFactory"/&gt;
+</programlisting>
+			<para>
+				Where <literal>java:/bookingSessionFactory</literal> is the name of the session factory specified in <literal>hibernate.cfg.xml</literal>.
+			</para>
+			
+<programlisting>&lt;session-factory name="java:/bookingSessionFactory"&gt;
+    &lt;property name="transaction.flush_before_completion"&gt;true&lt;/property&gt;
+    &lt;property name="connection.release_mode"&gt;after_statement&lt;/property&gt;
+    &lt;property name="transaction.manager_lookup_class"&gt;
+       org.hibernate.transaction.JBossTransactionManagerLookup
+    &lt;/property&gt;
+    &lt;property name="transaction.factory_class"&gt;
+       org.hibernate.transaction.JTATransactionFactory
+    &lt;/property&gt;
+    &lt;property name="connection.datasource"&gt;java:/bookingDatasource&lt;/property&gt;
+    ...
+&lt;/session-factory&gt;
+</programlisting>
+			<important>
+				<para>
+					Seam does not flush the session, so you should always enable <literal>hibernate.transaction.flush_before_completion</literal> to ensure that the session is automatically flushed before the JTA transaction commits.
+				</para>
+			</important>
+			<para>
+				We can now have a managed Hibernate <literal>Session</literal> injected into our JavaBean components using the following code:
+			</para>
+			
+<programlisting>@In Session bookingDatabase;
+</programlisting>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Seam_managed_persistence_contexts-Seam_managed_persistence_contexts_and_atomic_conversations">
+			<title>Seam-managed persistence contexts and atomic conversations</title>
+			<para>
+				Persistence contexts scoped to the conversation allows you to program optimistic transactions that span multiple requests to the server without the need to use the <literal>merge()</literal> operation , without the need to re-load data at the beginning of each request, and without the need to wrestle with the <literal>LazyInitializationException</literal> or <literal>NonUniqueObjectException</literal>.
+			</para>
+			<para>
+				As with any optimistic transaction management, transaction isolation and consistency can be achieved via use of optimistic locking. Fortunately, both Hibernate and EJB 3.0 make it very easy to use optimistic locking, by providing the <literal>@Version</literal> annotation.
+			</para>
+			<para>
+				By default, the persistence context is flushed (synchronized with the database) at the end of each transaction. This is sometimes the desired behavior. But very often, we would prefer that all changes are held in memory and only written to the database when the conversation ends successfully. This allows for truly atomic conversations. As the result of a truly stupid and shortsighted decision by certain non-JBoss, non-Sun and non-Sybase members of the EJB 3.0 expert group, there is currently no simple, usable and portable way to implement atomic conversations using EJB 3.0 persistence. However, Hibernate provides this feature as a vendor extension to the <literal>FlushModeType</literal>s defined by the specification, and it is our expectation that other vendors will soon provide a similar extension.
+			</para>
+			<para>
+				Seam lets you specify <literal>FlushModeType.MANUAL</literal> when beginning a conversation. Currently, this works only when Hibernate is the underlying persistence provider, but we plan to support other equivalent vendor extensions.
+			</para>
+			
+<programlisting>@In EntityManager em; //a Seam-managed persistence context
+
+ at Begin(flushMode=MANUAL)
+public void beginClaimWizard() {
+    claim = em.find(Claim.class, claimId);
+}
+</programlisting>
+			<para>
+				Now, the <literal>claim</literal> object remains managed by the persistence context for the rest ot the conversation. We can make changes to the claim:
+			</para>
+			
+<programlisting>public void addPartyToClaim() {
+    Party party = ....;
+    claim.addParty(party);
+}
+</programlisting>
+			<para>
+				But these changes will not be flushed to the database until we explicitly force the flush to occur:
+			</para>
+			
+<programlisting>@End
+public void commitClaim() {
+    em.flush();
+}
+</programlisting>
+		</section>
+
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_the_JPA_delegate">
+		<title>Using the JPA "delegate"</title>
+		<para>
+			The <literal>EntityManager</literal> interface lets you access a vendor-specific API via the <literal>getDelegate()</literal> method. Naturally, the most interesting vendor is Hibernate, and the most powerful delegate interface is <literal>org.hibernate.Session</literal>. You'd be nuts to use anything else. Trust me, I'm not biased at all.
+		</para>
+		<para>
+			But regardless of whether you are using Hibernate or something else, you will almost certainly want to use the delegate in your Seam components from time to time. One approach would be the following:
+		</para>
+		
+<programlisting>@In EntityManager entityManager;
+
+ at Create
+public void init() {
+    ( (Session) entityManager.getDelegate() ).enableFilter("currentVersions");
+}
+</programlisting>
+		<para>
+			But typecasts are unquestionably the ugliest syntax in the Java language, so most people avoid them whenever possible. Here is a different way to get at the delegate. First, add the following line to <literal>components.xml</literal>:
+		</para>
+		
+<programlisting>&lt;factory name="session" 
+         scope="STATELESS" 
+         auto-create="true" 
+         value="#{entityManager.delegate}"/&gt;
+</programlisting>
+		<para>
+			Now we can inject the session directly:
+		</para>
+		
+<programlisting>@In Session session;
+
+ at Create
+public void init() {
+    session.enableFilter("currentVersions");
+}
+</programlisting>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_EL_in_EJB_QLHQL">
+		<title>Using EL in EJB-QL/HQL</title>
+		<para>
+			Seam proxies the <literal>EntityManager</literal> or <literal>Session</literal> object whenever you use a Seam-managed persistence context or inject a container managed persistence context using <literal>@PersistenceContext</literal>. This lets you use EL expressions in your query strings, safely and efficiently. For example, this:
+		</para>
+		
+<programlisting>User user = em.createQuery("from User where username=#{user.username}")
+         .getSingleResult();
+</programlisting>
+		<para>
+			is equivalent to:
+		</para>
+		
+<programlisting>User user = em.createQuery("from User where username=:username")
+         .setParameter("username", user.getUsername())
+         .getSingleResult();
+</programlisting>
+		<para>
+			Of course, you should never, ever write it like this:
+		</para>
+		
+<programlisting>User user = em.createQuery("from User where username=" + user.getUsername()) //BAD!
+         .getSingleResult();
+</programlisting>
+		<para>
+			(It is inefficient and vulnerable to SQL injection attacks.)
+		</para>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_Hibernate_filters">
+		<title>Using Hibernate filters</title>
+		<para>
+			The most unique feature of Hibernate is <emphasis>filters</emphasis>. Filters let you provide a restricted view of the data in the database. You can find out more about filters in the Hibernate documentation. But we thought we would mention an easy way to incorporate filters into a Seam application, one that works especially well with the Seam Application Framework.
+		</para>
+		<para>
+			Seam-managed persistence contexts may have a list of filters defined, which will be enabled whenever an <literal>EntityManager</literal> or Hibernate <literal>Session</literal> is first created. (Of course, they may only be used when Hibernate is the underlying persistence provider.)
+		</para>
+		
+<programlisting>&lt;core:filter name="regionFilter"&gt;
+    &lt;core:name&gt;region&lt;/core:name&gt;
+    &lt;core:parameters&gt;
+        &lt;key&gt;regionCode&lt;/key&gt;
+        &lt;value&gt;#{region.code}&lt;/value&gt;
+    &lt;/core:parameters&gt;
+&lt;/core:filter&gt;
+
+&lt;core:filter name="currentFilter"&gt;
+    &lt;core:name&gt;current&lt;/core:name&gt;
+    &lt;core:parameters&gt;
+        &lt;key&gt;date&lt;/key&gt;
+        &lt;value&gt;#{currentDate}&lt;/value&gt;
+    &lt;/core:parameters&gt;
+&lt;/core:filter&gt;
+
+&lt;core:managed-persistence-context name="personDatabase"
+    persistence-unit-jndi-name="java:/EntityManagerFactories/personDatabase"&gt;
+    &lt;core:filters&gt;
+        &lt;value&gt;#{regionFilter}&lt;/value&gt;
+        &lt;value&gt;#{currentFilter}&lt;/value&gt;
+    &lt;/core:filters&gt;
+&lt;/core:managed-persistence-context&gt;
+</programlisting>
+	</section>
+
+</chapter>
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Remoting.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Remoting.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Remoting.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,573 @@
+<?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" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Seam_Reference_Guide_CP07.ent">
+%BOOK_ENTITIES;
+]>
+<chapter id="Seam_Reference_Guide-Remoting" lang="en-US">
+	<title>Remoting</title>
+	<para>
+		Seam provides a convenient method of remotely accessing components from a web page, using AJAX (Asynchronous Javascript and XML). The framework for this functionality is provided with almost no up-front development effort - your components only require simple annotating to become accessible via AJAX. This chapter describes the steps required to build an AJAX-enabled web page, then goes on to explain the features of the Seam Remoting framework in more detail.
+	</para>
+	<sect1 id="Seam_Reference_Guide-Remoting-Configuration"><title>Configuration</title>
+	<para>
+		To use remoting, the Seam Resource servlet must first be configured in your <literal>web.xml</literal> file:
+	</para>
+	
+<programlisting>
+          
+  &lt;servlet&gt;
+    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;
+    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-class&gt;
+  &lt;/servlet&gt;
+
+  &lt;servlet-mapping&gt;
+    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;
+    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;
+  &lt;/servlet-mapping&gt;
+</programlisting>
+	<para>
+		The next step is to import the necessary Javascript into your web page. There are a minimum of two scripts that must be imported. The first one contains all the client-side framework code that enables remoting functionality:
+	</para>
+	
+<programlisting>
+          
+  &lt;script type="text/javascript" src="seam/resource/remoting/resource/remote.js"&gt;&lt;/script&gt;
+</programlisting>
+	<para>
+		The second script contains the stubs and type definitions for the components you wish to call. It is generated dynamically based on the local interface of your components, and includes type definitions for all of the classes that can be used to call the remotable methods of the interface. The name of the script reflects the name of your component. For example, if you have a stateless session bean annotated with <literal>@Name("customerAction")</literal>, then your script tag should look like this:
+	</para>
+	
+<programlisting>
+          
+  &lt;script type="text/javascript" src="seam/resource/remoting/interface.js?customerAction"&gt;
+    &lt;/script&gt;
+</programlisting>
+	<para>
+		If you wish to access more than one component from the same page, then include them all as parameters of your script tag:
+	</para>
+	
+<programlisting>
+          
+  &lt;script type="text/javascript" 
+     src="seam/resource/remoting/interface.js?customerAction&amp;accountAction"&gt;
+  &lt;/script&gt;
+</programlisting>
+	</sect1><sect1 id="Seam_Reference_Guide-Remoting-The_Seam_object"><title>The "Seam" object</title>
+	<para>
+		Client-side interaction with your components is all performed via the <literal>Seam</literal> Javascript object. This object is defined in <literal>remote.js</literal>, and you will be using it to make asynchronous calls against your component. It is split into two areas of functionality; <literal>Seam.Component</literal> contains methods for working with components and <literal>Seam.Remoting</literal> contains methods for executing remote requests. The easiest way to become familiar with this object is to start with a simple example.
+	</para>
+	<sect2 id="Seam_Reference_Guide-The_Seam_object-A_Hello_World_example"><title>A Hello World example</title>
+	<para>
+		Let us step through a simple example to see how the <literal>Seam</literal> object works. First of all, let us create a new Seam component called <literal>helloAction</literal>.
+	</para>
+	
+<programlisting>
+          
+  @Stateless
+  @Name("helloAction")
+  public class HelloAction implements HelloLocal {
+    public String sayHello(String name) {
+      return "Hello, " + name;
+    }
+  }
+</programlisting>
+	<para>
+		You also need to create a local interface for our new component - take special note of the <literal>@WebRemote</literal> annotation, as it is required to make our method accessible via remoting:
+	</para>
+	
+<programlisting>
+          
+  @Local
+  public interface HelloLocal {
+    @WebRemote
+    public String sayHello(String name);
+  }
+</programlisting>
+	<para>
+		That is all the server-side code we need to write. Now for our web page - create a new page and import the following scripts:
+	</para>
+	
+<programlisting>
+          
+  &lt;script type="text/javascript" src="seam/resource/remoting/resource/remote.js"&gt;&lt;/script&gt;
+  &lt;script type="text/javascript" src="seam/resource/remoting/interface.js?helloAction"&gt;&lt;/script&gt;
+</programlisting>
+	<para>
+		To make this a fully interactive user experience, let us add a button to our page:
+	</para>
+	
+<programlisting>
+          
+  &lt;button onclick="javascript:sayHello()"&gt;Say Hello&lt;/button&gt;
+</programlisting>
+	<para>
+		We will also need to add some more script to make our button actually do something when it is clicked:
+	</para>
+	
+<programlisting>
+          
+  &lt;script type="text/javascript"&gt;
+    //&lt;![CDATA[
+
+    function sayHello() {
+      var name = prompt("What is your name?");
+      Seam.Component.getInstance("helloAction").sayHello(name, sayHelloCallback);
+    }
+
+    function sayHelloCallback(result) {
+      alert(result);
+    }
+
+    // ]]&gt;
+  &lt;/script&gt;
+</programlisting>
+	<para>
+		Now deploy your application and browse to your page. Click the button, and enter a name when prompted. A message box will display the hello message confirming that the call was successful. If you want to save some time, you will find the full source code for this Hello World example in Seam's <literal>/examples/remoting/helloworld</literal> directory.
+	</para>
+	<para>
+		So what does the code of our script actually do? Let us break it down into smaller pieces. To start with, you can see from the Javascript code listing that we have implemented two methods - the first method is responsible for prompting the user for their name and then making a remote request. Take a look at the following line:
+	</para>
+	
+<programlisting>
+  Seam.Component.getInstance("helloAction").sayHello(name, sayHelloCallback);
+</programlisting>
+	<para>
+		The first section of this line, <literal>Seam.Component.getInstance("helloAction")</literal> returns a proxy, or "stub" for our <literal>helloAction</literal> component. We can invoke the methods of our component against this stub, which is exactly what happens with the remainder of the line: <literal>sayHello(name, sayHelloCallback);</literal>.
+	</para>
+	<para>
+		What this line of code in its completeness does, is invoke the <literal>sayHello</literal> method of our component, passing in <literal>name</literal> as a parameter. The second parameter, <literal>sayHelloCallback</literal> is not a parameter of our component's <literal>sayHello</literal> method, instead it tells the Seam Remoting framework that once it receives the response to our request, it should pass it to the <literal>sayHelloCallback</literal> Javascript method. This callback parameter is entirely optional, so feel free to leave it out if you are calling a method with a <literal>void</literal> return type or if you do not care about the result.
+	</para>
+	<para>
+		The <literal>sayHelloCallback</literal> method, once receiving the response to our remote request then pops up an alert message displaying the result of our method call.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-The_Seam_object-Seam.Component"><title>Seam.Component</title>
+	<para>
+		The <literal>Seam.Component</literal> Javascript object provides a number of client-side methods for working with your Seam components. The two main methods, <literal>newInstance()</literal> and <literal>getInstance()</literal> are documented in the following sections however their main difference is that <literal>newInstance()</literal> will always create a new instance of a component type, and <literal>getInstance()</literal> will return a singleton instance.
+	</para>
+	<sect3 id="Seam_Reference_Guide-Seam.Component-Seam.Component.newInstance"><title>Seam.Component.newInstance()</title>
+	<para>
+		Use this method to create a new instance of an entity or Javabean component. The object returned by this method will have the same getter/setter methods as its server-side counterpart, or alternatively if you wish you can access its fields directly. Take the following Seam entity component for example:
+	</para>
+	
+<programlisting>
+  @Name("customer")
+  @Entity
+  public class Customer implements Serializable
+  {
+    private Integer customerId;
+    private String firstName;
+    private String lastName;
+    
+    @Column public Integer getCustomerId() { 
+      return customerId; 
+    }
+    
+    public void setCustomerId(Integer customerId} { 
+      this.customerId = customerId; 
+    }
+    
+    @Column public String getFirstName() { 
+      return firstName; 
+    }
+    
+    public void setFirstName(String firstName) {
+      this.firstName = firstName; 
+    }
+    
+    @Column public String getLastName() {
+      return lastName;
+    }
+    
+    public void setLastName(String lastName) {
+      this.lastName = lastName;
+    }
+  }
+</programlisting>
+	<para>
+		To create a client-side Customer you would write the following code:
+	</para>
+	
+<programlisting>
+  var customer = Seam.Component.newInstance("customer");
+</programlisting>
+	<para>
+		Then from here you can set the fields of the customer object:
+	</para>
+	
+<programlisting>
+  customer.setFirstName("John");
+  // Or you can set the fields directly
+  customer.lastName = "Smith";
+</programlisting>
+	</sect3><sect3 id="Seam_Reference_Guide-Seam.Component-Seam.Component.getInstance"><title>Seam.Component.getInstance()</title>
+	<para>
+		The <literal>getInstance()</literal> method is used to get a reference to a Seam session bean component stub, which can then be used to remotely execute methods against your component. This method returns a singleton for the specified component, so calling it twice in a row with the same component name will return the same instance of the component.
+	</para>
+	<para>
+		To continue our example from before, if we have created a new <literal>customer</literal> and we now wish to save it, we would pass it to the <literal>saveCustomer()</literal> method of our <literal>customerAction</literal> component:
+	</para>
+	
+<programlisting>
+  Seam.Component.getInstance("customerAction").saveCustomer(customer);
+</programlisting>
+	</sect3><sect3 id="Seam_Reference_Guide-Seam.Component-Seam.Component.getComponentName"><title>Seam.Component.getComponentName()</title>
+	<para>
+		Passing an object into this method will return its component name if it is a component, or <literal>null</literal> if it is not.
+	</para>
+	
+<programlisting>
+  if (Seam.Component.getComponentName(instance) == "customer")
+    alert("Customer");
+  else if (Seam.Component.getComponentName(instance) == "staff")
+    alert("Staff member");
+</programlisting>
+	</sect3></sect2><sect2 id="Seam_Reference_Guide-The_Seam_object-Seam.Remoting"><title>Seam.Remoting</title>
+	<para>
+		Most of the client side functionality for Seam Remoting is contained within the <literal>Seam.Remoting</literal> object. While you should not need to directly call most of its methods, there are a couple of important ones worth mentioning.
+	</para>
+	<sect3 id="Seam_Reference_Guide-Seam.Remoting-Seam.Remoting.createType"><title>Seam.Remoting.createType()</title>
+	<para>
+		If your application contains or uses Javabean classes that are not Seam components, you may need to create these types on the client side to pass as parameters into your component method. Use the <literal>createType()</literal> method to create an instance of your type. Pass in the fully qualified Java class name as a parameter:
+	</para>
+	
+<programlisting>
+  var widget = Seam.Remoting.createType("com.acme.widgets.MyWidget");
+</programlisting>
+	</sect3><sect3 id="Seam_Reference_Guide-Seam.Remoting-Seam.Remoting.getTypeName"><title>Seam.Remoting.getTypeName()</title>
+	<para>
+		This method is the equivalent of <literal>Seam.Component.getComponentName()</literal> but for non-component types. It will return the name of the type for an object instance, or <literal>null</literal> if the type is not known. The name is the fully qualified name of the type's Java class.
+	</para>
+	</sect3></sect2></sect1><sect1 id="Seam_Reference_Guide-Remoting-Client_Interfaces"><title>Client Interfaces</title>
+	<para>
+		In the configuration section above, the interface, or "stub" for our component is imported into our page via <literal>seam/resource/remoting/interface.js</literal>:
+	</para>
+	
+<programlisting>
+        
+  &lt;script type="text/javascript" src="seam/resource/remoting/interface.js?customerAction"&gt;
+  &lt;/script&gt;
+</programlisting>
+	<para>
+		By including this script in our page, the interface definitions for our component, plus any other components or types that are required to execute the methods of our component are generated and made available for the remoting framework to use.
+	</para>
+	<para>
+		There are two types of client stub that can be generated, "executable" stubs and "type" stubs. Executable stubs are behavioural, and are used to execute methods against your session bean components, while type stubs contain state and represent the types that can be passed in as parameters or returned as a result.
+	</para>
+	<para>
+		The type of client stub that is generated depends on the type of your Seam component. If the component is a session bean, then an executable stub will be generated, otherwise if it is an entity or JavaBean, then a type stub will be generated. There is one exception to this rule; if your component is a JavaBean (ie it is not a session bean nor an entity bean) and any of its methods are annotated with @WebRemote, then an executable stub will be generated for it instead of a type stub. This allows you to use remoting to call methods of your JavaBean components in a non-EJB environment where you do not have access to session beans.
+	</para>
+	</sect1><sect1 id="Seam_Reference_Guide-Remoting-The_Context"><title>The Context</title>
+	<para>
+		The Seam Remoting Context contains additional information which is sent and received as part of a remoting request/response cycle. At this stage it only contains the conversation ID but may be expanded in the future.
+	</para>
+	<sect2 id="Seam_Reference_Guide-The_Context-Setting_and_reading_the_Conversation_ID"><title>Setting and reading the Conversation ID</title>
+	<para>
+		If you intend on using remote calls within the scope of a conversation then you need to be able to read or set the conversation ID in the Seam Remoting Context. To read the conversation ID after making a remote request call <literal>Seam.Remoting.getContext().getConversationId()</literal>. To set the conversation ID before making a request, call <literal>Seam.Remoting.getContext().setConversationId()</literal>.
+	</para>
+	<para>
+		If the conversation ID has not been explicitly set with <literal>Seam.Remoting.getContext().setConversationId()</literal>, then it will be automatically assigned the first valid conversation ID that is returned by any remoting call. If you are working with multiple conversations within your page, then you may need to explicitly set the conversation ID before each call. If you are working with just a single conversation, then you do not need to do anything special.
+	</para>
+	</sect2></sect1><sect1 id="Seam_Reference_Guide-Remoting-Batch_Requests"><title>Batch Requests</title>
+	<para>
+		Seam Remoting allows multiple component calls to be executed within a single request. It is recommended that this feature is used wherever it is appropriate to reduce network traffic.
+	</para>
+	<para>
+		The method <literal>Seam.Remoting.startBatch()</literal> will start a new batch, and any component calls executed after starting a batch are queued, rather than being sent immediately. When all the desired component calls have been added to the batch, the <literal>Seam.Remoting.executeBatch()</literal> method will send a single request containing all of the queued calls to the server, where they will be executed in order. After the calls have been executed, a single response containining all return values will be returned to the client and the callback functions (if provided) triggered in the same order as execution.
+	</para>
+	<para>
+		If you start a new batch via the <literal>startBatch()</literal> method but then decide you do not want to send it, the <literal>Seam.Remoting.cancelBatch()</literal> method will discard any calls that were queued and exit the batch mode.
+	</para>
+	<para>
+		To see an example of a batch being used, take a look at <literal>/examples/remoting/chatroom</literal>.
+	</para>
+	</sect1><sect1 id="Seam_Reference_Guide-Remoting-Working_with_Data_types"><title>Working with Data types</title>
+	<sect2 id="Seam_Reference_Guide-Working_with_Data_types-Primitives__Basic_Types"><title>Primitives / Basic Types</title>
+	<para>
+		This section describes the support for basic data types. On the server side these values are generally compatible with either their primitive type or their corresponding wrapper class.
+	</para>
+	<sect3 id="Seam_Reference_Guide-Primitives__Basic_Types-String"><title>String</title>
+	<para>
+		Simply use Javascript String objects when setting String parameter values.
+	</para>
+	</sect3><sect3 id="Seam_Reference_Guide-Primitives__Basic_Types-Number"><title>Number</title>
+	<para>
+		There is support for all number types supported by Java. On the client side, number values are always serialized as their String representation and then on the server side they are converted to the correct destination type. Conversion into either a primitive or wrapper type is supported for <literal>Byte</literal>, <literal>Double</literal>, <literal>Float</literal>, <literal>Integer</literal>, <literal>Long</literal> and <literal>Short</literal> types.
+	</para>
+	</sect3><sect3 id="Seam_Reference_Guide-Primitives__Basic_Types-Boolean"><title>Boolean</title>
+	<para>
+		Booleans are represented client side by Javascript Boolean values, and server side by a Java boolean.
+	</para>
+	</sect3></sect2><sect2 id="Seam_Reference_Guide-Working_with_Data_types-JavaBeans"><title>JavaBeans</title>
+	<para>
+		In general these will be either Seam entity or JavaBean components, or some other non-component class. Use the appropriate method (either <literal>Seam.Component.newInstance()</literal> for Seam components or <literal>Seam.Remoting.createType()</literal> for everything else) to create a new instance of the object.
+	</para>
+	<para>
+		It is important to note that only objects that are created by either of these two methods should be used as parameter values, where the parameter is not one of the other valid types mentioned anywhere else in this section. In some situations you may have a component method where the exact parameter type cannot be determined, such as:
+	</para>
+	
+<programlisting>
+  @Name("myAction")
+  public class MyAction implements MyActionLocal {
+    public void doSomethingWithObject(Object obj) {
+      // code
+    }
+  }
+</programlisting>
+	<para>
+		In this case you might want to pass in an instance of your <literal>myWidget</literal> component, however the interface for <literal>myAction</literal> will not include <literal>myWidget</literal> as it is not directly referenced by any of its methods. To get around this, <literal>MyWidget</literal> needs to be explicitly imported:
+	</para>
+	
+<programlisting>
+                  
+  &lt;script type="text/javascript" src="seam/resource/remoting/interface.js?myAction&amp;myWidget"&gt;
+  &lt;/script&gt;
+</programlisting>
+	<para>
+		This will then allow a <literal>myWidget</literal> object to be created with <literal>Seam.Component.newInstance("myWidget")</literal>, which can then be passed to <literal>myAction.doSomethingWithObject()</literal>.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Working_with_Data_types-Dates_and_Times"><title>Dates and Times</title>
+	<para>
+		Date values are serialized into a String representation that is accurate to the millisecond. On the client side, use a Javascript Date object to work with date values. On the server side, use any <literal>java.util.Date</literal> (or descendent, such as <literal>java.sql.Date</literal> or <literal>java.sql.Timestamp</literal> class.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Working_with_Data_types-Enums"><title>Enums</title>
+	<para>
+		On the client side, enums are treated the same as Strings. When setting the value for an enum parameter, simply use the String representation of the enum. Take the following component as an example:
+	</para>
+	
+<programlisting>
+  @Name("paintAction")
+  public class paintAction implements paintLocal {
+    public enum Color {red, green, blue, yellow, orange, purple};
+
+    public void paint(Color color) {
+      // code
+    }    
+  }
+</programlisting>
+	<para>
+		To call the <literal>paint()</literal> method with the color <literal>red</literal>, pass the parameter value as a String literal:
+	</para>
+	
+<programlisting>
+  Seam.Component.getInstance("paintAction").paint("red");
+</programlisting>
+	<para>
+		The inverse is also true - that is, if a component method returns an enum parameter (or contains an enum field anywhere in the returned object graph) then on the client-side it will be represented as a String.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Working_with_Data_types-Collections"><title>Collections</title>
+	<sect3 id="Seam_Reference_Guide-Collections-Bags"><title>Bags</title>
+	<para>
+		Bags cover all collection types including arrays, collections, lists, sets, (but excluding Maps - see the next section for those), and are implemented client-side as a Javascript array. When calling a component method that accepts one of these types as a parameter, your parameter should be a Javascript array. If a component method returns one of these types, then the return value will also be a Javascript array. The remoting framework is clever enough on the server side to convert the bag to an appropriate type for the component method call.
+	</para>
+	</sect3><sect3 id="Seam_Reference_Guide-Collections-Maps"><title>Maps</title>
+	<para>
+		As there is no native support for Maps within Javascript, a simple Map implementation is provided with the Seam Remoting framework. To create a Map which can be used as a parameter to a remote call, create a new <literal>Seam.Remoting.Map</literal> object:
+	</para>
+	
+<programlisting>
+  var map = new Seam.Remoting.Map();
+</programlisting>
+	<para>
+		This Javascript implementation provides basic methods for working with Maps: <literal>size()</literal>, <literal>isEmpty()</literal>, <literal>keySet()</literal>, <literal>values()</literal>, <literal>get(key)</literal>, <literal>put(key, value)</literal>, <literal>remove(key)</literal> and <literal>contains(key)</literal>. Each of these methods are equivalent to their Java counterpart. Where the method returns a collection, such as <literal>keySet()</literal> and <literal>values()</literal>, a Javascript Array object will be returned that contains the key or value objects (respectively).
+	</para>
+	</sect3></sect2></sect1><sect1 id="Seam_Reference_Guide-Remoting-Debugging"><title>Debugging</title>
+	<para>
+		To aid in tracking down bugs, it is possible to enable a debug mode which will display the contents of all the packets send back and forth between the client and server in a popup window. To enable debug mode, either execute the <literal>setDebug()</literal> method in Javascript:
+	</para>
+	
+<programlisting>
+  Seam.Remoting.setDebug(true);
+</programlisting>
+	<para>
+		Or configure it via components.xml:
+	</para>
+	
+<programlisting>&lt;remoting:remoting debug="true"/&gt;
+</programlisting>
+	<para>
+		To turn off debugging, call <literal>setDebug(false)</literal>. If you want to write your own messages to the debug log, call <literal>Seam.Remoting.log(message)</literal>.
+	</para>
+	</sect1><sect1 id="Seam_Reference_Guide-Remoting-The_Loading_Message"><title>The Loading Message</title>
+	<para>
+		The default loading message that appears in the top right corner of the screen can be modified, its rendering customised or even turned off completely.
+	</para>
+	<sect2 id="Seam_Reference_Guide-The_Loading_Message-Changing_the_message"><title>Changing the message</title>
+	<para>
+		To change the message from the default "Please Wait..." to something different, set the value of <literal>Seam.Remoting.loadingMessage</literal>:
+	</para>
+	
+<programlisting>
+  Seam.Remoting.loadingMessage = "Loading...";
+</programlisting>
+	</sect2><sect2 id="Seam_Reference_Guide-The_Loading_Message-Hiding_the_loading_message"><title>Hiding the loading message</title>
+	<para>
+		To completely suppress the display of the loading message, override the implementation of <literal>displayLoadingMessage()</literal> and <literal>hideLoadingMessage()</literal> with functions that instead do nothing:
+	</para>
+	
+<programlisting>
+  // do not display the loading indicator
+  Seam.Remoting.displayLoadingMessage = function() {};
+  Seam.Remoting.hideLoadingMessage = function() {};
+</programlisting>
+	</sect2><sect2 id="Seam_Reference_Guide-The_Loading_Message-A_Custom_Loading_Indicator"><title>A Custom Loading Indicator</title>
+	<para>
+		It is also possible to override the loading indicator to display an animated icon, or anything else that you want. To do this override the <literal>displayLoadingMessage()</literal> and <literal>hideLoadingMessage()</literal> messages with your own implementation:
+	</para>
+	
+<programlisting>
+  Seam.Remoting.displayLoadingMessage = function() {
+    // Write code here to display the indicator
+  };
+  
+  Seam.Remoting.hideLoadingMessage = function() {
+    // Write code here to hide the indicator
+  };
+</programlisting>
+	</sect2></sect1><sect1 id="Seam_Reference_Guide-Remoting-Controlling_what_data_is_returned"><title>Controlling what data is returned</title>
+	<para>
+		When a remote method is executed, the result is serialized into an XML response that is returned to the client. This response is then unmarshaled by the client into a Javascript object. For complex types (i.e. Javabeans) that include references to other objects, all of these referenced objects are also serialized as part of the response. These objects may reference other objects, which may reference other objects, and so forth. If left unchecked, this object "graph" could potentially be enormous, depending on what relationships exist between your objects. And as a side issue (besides the potential verbosity of the response), you might also wish to prevent sensitive information from being exposed to the client.
+	</para>
+	<para>
+		Seam Remoting provides a simple means to "constrain" the object graph, by specifying the <literal>exclude</literal> field of the remote method's <literal>@WebRemote</literal> annotation. This field accepts a String array containing one or more paths specified using dot notation. When invoking a remote method, the objects in the result's object graph that match these paths are excluded from the serialized result packet.
+	</para>
+	<para>
+		For all our examples, we will use the following <literal>Widget</literal> class:
+	</para>
+	
+<programlisting>
+ at Name("widget")
+public class Widget
+{
+  private String value;
+  private String secret;
+  private Widget child;
+  private Map&lt;String,Widget&gt; widgetMap;
+  private List&lt;Widget&gt; widgetList;
+  
+  // getters and setters for all fields
+}
+</programlisting>
+	<sect2 id="Seam_Reference_Guide-Controlling_what_data_is_returned-Constraining_normal_fields"><title>Constraining normal fields</title>
+	<para>
+		If your remote method returns an instance of <literal>Widget</literal>, but you do not want to expose the <literal>secret</literal> field because it contains sensitive information, you would constrain it like this:
+	</para>
+	
+<programlisting>
+  @WebRemote(exclude = {"secret"})
+  public Widget getWidget();
+</programlisting>
+	<para>
+		The value "secret" refers to the <literal>secret</literal> field of the returned object. Now, suppose that we do not care about exposing this particular field to the client. Instead, notice that the <literal>Widget</literal> value that is returned has a field <literal>child</literal> that is also a <literal>Widget</literal>. What if we want to hide the <literal>child</literal>'s <literal>secret</literal> value instead? We can do this by using dot notation to specify this field's path within the result's object graph:
+	</para>
+	
+<programlisting>
+  @WebRemote(exclude = {"child.secret"})
+  public Widget getWidget();
+</programlisting>
+	</sect2><sect2 id="Seam_Reference_Guide-Controlling_what_data_is_returned-Constraining_Maps_and_Collections"><title>Constraining Maps and Collections</title>
+	<para>
+		The other place that objects can exist within an object graph are within a <literal>Map</literal> or some kind of collection (<literal>List</literal>, <literal>Set</literal>, <literal>Array</literal>, etc). Collections are easy, and are treated like any other field. For example, if our <literal>Widget</literal> contained a list of other <literal>Widget</literal>s in its <literal>widgetList</literal> field, to constrain the <literal>secret</literal> field of the <literal>Widget</literal>s in this list the annotation would look like this:
+	</para>
+	
+<programlisting>
+  @WebRemote(exclude = {"widgetList.secret"})
+  public Widget getWidget();
+</programlisting>
+	<para>
+		To constrain a <literal>Map</literal>'s key or value, the notation is slightly different. Appending <literal>[key]</literal> after the <literal>Map</literal>'s field name will constrain the <literal>Map</literal>'s key object values, while <literal>[value]</literal> will constrain the value object values. The following example demonstrates how the values of the <literal>widgetMap</literal> field have their <literal>secret</literal> field constrained:
+	</para>
+	
+<programlisting>
+  @WebRemote(exclude = {"widgetMap[value].secret"})
+  public Widget getWidget();
+</programlisting>
+	</sect2><sect2 id="Seam_Reference_Guide-Controlling_what_data_is_returned-Constraining_objects_of_a_specific_type"><title>Constraining objects of a specific type</title>
+	<para>
+		There is one last notation that can be used to constrain the fields of a type of object no matter where in the result's object graph it appears. This notation uses either the name of the component (if the object is a Seam component) or the fully qualified class name (only if the object is not a Seam component) and is expressed using square brackets:
+	</para>
+	
+<programlisting>
+  @WebRemote(exclude = {"[widget].secret"})
+  public Widget getWidget();
+</programlisting>
+	</sect2><sect2 id="Seam_Reference_Guide-Controlling_what_data_is_returned-Combining_Constraints"><title>Combining Constraints</title>
+	<para>
+		Constraints can also be combined, to filter objects from multiple paths within the object graph:
+	</para>
+	
+<programlisting>
+  @WebRemote(exclude = {"widgetList.secret", "widgetMap[value].secret"})
+  public Widget getWidget();
+</programlisting>
+	</sect2></sect1><sect1 id="Seam_Reference_Guide-Remoting-JMS_Messaging"><title>JMS Messaging</title>
+	<para>
+		Seam Remoting provides experimental support for JMS Messaging. This section describes the JMS support that is currently implemented, but please note that this may change in the future. It is currently not recommended that this feature is used within a production environment.
+	</para>
+	<sect2 id="Seam_Reference_Guide-JMS_Messaging-Configuration"><title>Configuration</title>
+	<para>
+		Before you can subscribe to a JMS topic, you must first configure a list of the topics that can be subscribed to by Seam Remoting. List the topics under <literal>org.jboss.seam.remoting.messaging.subscriptionRegistry.allowedTopics</literal> in <literal>seam.properties</literal>, <literal>web.xml</literal> or <literal>components.xml</literal>.
+	</para>
+	
+<programlisting>&lt;remoting:remoting poll-timeout="5" poll-interval="1"/&gt;
+</programlisting>
+	</sect2><sect2 id="Seam_Reference_Guide-JMS_Messaging-Subscribing_to_a_JMS_Topic"><title>Subscribing to a JMS Topic</title>
+	<para>
+		The following example demonstrates how to subscribe to a JMS Topic:
+	</para>
+	
+<programlisting>
+  function subscriptionCallback(message)
+  {
+    if (message instanceof Seam.Remoting.TextMessage)
+      alert("Received message: " + message.getText());
+  }        
+        
+  Seam.Remoting.subscribe("topicName", subscriptionCallback);
+</programlisting>
+	<para>
+		The <literal>Seam.Remoting.subscribe()</literal> method accepts two parameters, the first being the name of the JMS Topic to subscribe to, the second being the callback function to invoke when a message is received.
+	</para>
+	<para>
+		There are two types of messages supported, Text messages and Object messages. If you need to test for the type of message that is passed to your callback function you can use the <literal>instanceof</literal> operator to test whether the message is a <literal>Seam.Remoting.TextMessage</literal> or <literal>Seam.Remoting.ObjectMessage</literal>. A <literal>TextMessage</literal> contains the text value in its <literal>text</literal> field (or alternatively call <literal>getText()</literal> on it), while an <literal>ObjectMessage</literal> contains its object value in its <literal>object</literal> field (or call its <literal>getObject()</literal> method).
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-JMS_Messaging-Unsubscribing_from_a_Topic"><title>Unsubscribing from a Topic</title>
+	<para>
+		To unsubscribe from a topic, call <literal>Seam.Remoting.unsubscribe()</literal> and pass in the topic name:
+	</para>
+	
+<programlisting>
+  Seam.Remoting.unsubscribe("topicName");
+</programlisting>
+	</sect2><sect2 id="Seam_Reference_Guide-JMS_Messaging-Tuning_the_Polling_Process"><title>Tuning the Polling Process</title>
+	<para>
+		There are two parameters which you can modify to control how polling occurs. The first one is <literal>Seam.Remoting.pollInterval</literal>, which controls how long to wait between subsequent polls for new messages. This parameter is expressed in seconds, and its default setting is 10.
+	</para>
+	<para>
+		The second parameter is <literal>Seam.Remoting.pollTimeout</literal>, and is also expressed as seconds. It controls how long a request to the server should wait for a new message before timing out and sending an empty response. Its default is 0 seconds, which means that when the server is polled, if there are no messages ready for delivery then an empty response will be immediately returned.
+	</para>
+	<para>
+		Caution should be used when setting a high <literal>pollTimeout</literal> value; each request that has to wait for a message means that a server thread is tied up until a message is received, or until the request times out. If many such requests are being served simultaneously, it could mean a large number of threads become tied up because of this reason.
+	</para>
+	<para>
+		It is recommended that you set these options via components.xml, however they can be overridden via Javascript if desired. The following example demonstrates how to configure the polling to occur much more aggressively. You should set these parameters to suitable values for your application:
+	</para>
+	<para>
+		Via components.xml:
+	</para>
+	
+<programlisting>&lt;remoting:remoting poll-timeout="5" poll-interval="1"/&gt;
+</programlisting>
+	<para>
+		Via JavaScript:
+	</para>
+	
+<programlisting>
+  // Only wait 1 second between receiving a poll response and sending the next poll request.
+  Seam.Remoting.pollInterval = 1;
+  
+  // Wait up to 5 seconds on the server for new messages
+  Seam.Remoting.pollTimeout = 5;
+</programlisting>
+	</sect2></sect1>
+</chapter>
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Revision_History.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Revision_History.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Revision_History.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,27 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Seam_Reference_Guide_CP07.ent">
+%BOOK_ENTITIES;
+]>
+<appendix id="appe-Publican-Revision_History" lang="en-US">
+	<title>Revision History</title>
+	<simpara>
+		<revhistory>
+			<revision>
+				<revnumber>1.0</revnumber>
+				<date>Thu Nov 19 2009</date>
+				<author>
+					<firstname>Laura</firstname>
+					<surname>Bailey</surname>
+					<email>lbailey at redhat.com</email>
+				</author>
+				<revdescription>
+					<simplelist>
+						<member>Initial draft.</member>
+					</simplelist>
+				</revdescription>
+			</revision>
+		</revhistory>
+	</simpara>
+</appendix>
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Seam_Reference_Guide_CP07.ent
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Seam_Reference_Guide_CP07.ent	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Seam_Reference_Guide_CP07.ent	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2 @@
+<!ENTITY HOLDER "Red Hat, Inc">
+<!ENTITY YEAR "2009">

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Seam_Reference_Guide_CP07.fo
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Seam_Reference_Guide_CP07.fo	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Seam_Reference_Guide_CP07.fo	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,9411 @@
+<?xml version="1.0"?>
+<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" font-size="10pt" text-align="left" line-height="1.3" font-selection-strategy="character-by-character" line-height-shift-adjustment="disregard-shifts" writing-mode="lr-tb" language="en"><fo:layout-master-set><fo:simple-page-master master-name="blank" page-width="210mm" page-height="297mm" margin-top="15mm" margin-bottom="15mm" margin-left="19mm" margin-right="31mm"><fo:region-body display-align="center" margin-bottom="15mm" margin-top="15mm"/><fo:region-before region-name="xsl-region-before-blank" extent="10mm" display-align="before"/><fo:region-after region-name="xsl-region-after-blank" extent="10mm" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="titlepage-first" page-width="210mm" page-height="297mm" margin-top="15mm" margin-bottom="15mm" margin-left="31mm" margin-right="19mm"><fo:region-body margin-bottom="15mm" margin-top=!
 "15mm" column-gap="12pt" column-count="1"/><fo:region-before region-name="xsl-region-before-first" extent="10mm" display-align="before"/><fo:region-after region-name="xsl-region-after-first" extent="10mm" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="titlepage-odd" page-width="210mm" page-height="297mm" margin-top="15mm" margin-bottom="15mm" margin-left="31mm" margin-right="19mm"><fo:region-body margin-bottom="15mm" margin-top="15mm" column-gap="12pt" column-count="1"/><fo:region-before region-name="xsl-region-before-odd" extent="10mm" display-align="before"/><fo:region-after region-name="xsl-region-after-odd" extent="10mm" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="titlepage-even" page-width="210mm" page-height="297mm" margin-top="15mm" margin-bottom="15mm" margin-left="19mm" margin-right="31mm"><fo:region-body margin-bottom="15mm" margin-top="15mm" column-gap="12pt" column-count="1"/><fo:region-b!
 efore region-name="xsl-region-before-even" extent="10mm" displ!
 ay-align
="before"/><fo:region-after region-name="xsl-region-after-even" extent="10mm" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="lot-first" page-width="210mm" page-height="297mm" margin-top="15mm" margin-bottom="15mm" margin-left="31mm" margin-right="19mm"><fo:region-body margin-bottom="15mm" margin-top="15mm" column-gap="12pt" column-count="1"/><fo:region-before region-name="xsl-region-before-first" extent="10mm" display-align="before"/><fo:region-after region-name="xsl-region-after-first" extent="10mm" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="lot-odd" page-width="210mm" page-height="297mm" margin-top="15mm" margin-bottom="15mm" margin-left="31mm" margin-right="19mm"><fo:region-body margin-bottom="15mm" margin-top="15mm" column-gap="12pt" column-count="1"/><fo:region-before region-name="xsl-region-before-odd" extent="10mm" display-align="before"/><fo:region-after region-name="xsl-region-after-odd" ext!
 ent="10mm" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="lot-even" page-width="210mm" page-height="297mm" margin-top="15mm" margin-bottom="15mm" margin-left="19mm" margin-right="31mm"><fo:region-body margin-bottom="15mm" margin-top="15mm" column-gap="12pt" column-count="1"/><fo:region-before region-name="xsl-region-before-even" extent="10mm" display-align="before"/><fo:region-after region-name="xsl-region-after-even" extent="10mm" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="front-first" page-width="210mm" page-height="297mm" margin-top="15mm" margin-bottom="15mm" margin-left="31mm" margin-right="19mm"><fo:region-body margin-bottom="15mm" margin-top="15mm" column-gap="12pt" column-count="1"/><fo:region-before region-name="xsl-region-before-first" extent="10mm" display-align="before"/><fo:region-after region-name="xsl-region-after-first" extent="10mm" display-align="after"/></fo:simple-page-master><fo!
 :simple-page-master master-name="front-odd" page-width="210mm"!
  page-he
ight="297mm" margin-top="15mm" margin-bottom="15mm" margin-left="31mm" margin-right="19mm"><fo:region-body margin-bottom="15mm" margin-top="15mm" column-gap="12pt" column-count="1"/><fo:region-before region-name="xsl-region-before-odd" extent="10mm" display-align="before"/><fo:region-after region-name="xsl-region-after-odd" extent="10mm" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="front-even" page-width="210mm" page-height="297mm" margin-top="15mm" margin-bottom="15mm" margin-left="19mm" margin-right="31mm"><fo:region-body margin-bottom="15mm" margin-top="15mm" column-gap="12pt" column-count="1"/><fo:region-before region-name="xsl-region-before-even" extent="10mm" display-align="before"/><fo:region-after region-name="xsl-region-after-even" extent="10mm" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="body-first" page-width="210mm" page-height="297mm" margin-top="15mm" margin-bottom="15mm" margin-left="!
 31mm" margin-right="19mm"><fo:region-body margin-bottom="15mm" margin-top="15mm" column-gap="12pt" column-count="1"/><fo:region-before region-name="xsl-region-before-first" extent="10mm" display-align="before"/><fo:region-after region-name="xsl-region-after-first" extent="10mm" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="body-odd" page-width="210mm" page-height="297mm" margin-top="15mm" margin-bottom="15mm" margin-left="31mm" margin-right="19mm"><fo:region-body margin-bottom="15mm" margin-top="15mm" column-gap="12pt" column-count="1"/><fo:region-before region-name="xsl-region-before-odd" extent="10mm" display-align="before"/><fo:region-after region-name="xsl-region-after-odd" extent="10mm" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="body-even" page-width="210mm" page-height="297mm" margin-top="15mm" margin-bottom="15mm" margin-left="19mm" margin-right="31mm"><fo:region-body margin-bottom="15mm" ma!
 rgin-top="15mm" column-gap="12pt" column-count="1"/><fo:region!
 -before 
region-name="xsl-region-before-even" extent="10mm" display-align="before"/><fo:region-after region-name="xsl-region-after-even" extent="10mm" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="back-first" page-width="210mm" page-height="297mm" margin-top="15mm" margin-bottom="15mm" margin-left="31mm" margin-right="19mm"><fo:region-body margin-bottom="15mm" margin-top="15mm" column-gap="12pt" column-count="1"/><fo:region-before region-name="xsl-region-before-first" extent="10mm" display-align="before"/><fo:region-after region-name="xsl-region-after-first" extent="10mm" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="back-odd" page-width="210mm" page-height="297mm" margin-top="15mm" margin-bottom="15mm" margin-left="31mm" margin-right="19mm"><fo:region-body margin-bottom="15mm" margin-top="15mm" column-gap="12pt" column-count="1"/><fo:region-before region-name="xsl-region-before-odd" extent="10mm" display-align!
 ="before"/><fo:region-after region-name="xsl-region-after-odd" extent="10mm" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="back-even" page-width="210mm" page-height="297mm" margin-top="15mm" margin-bottom="15mm" margin-left="19mm" margin-right="31mm"><fo:region-body margin-bottom="15mm" margin-top="15mm" column-gap="12pt" column-count="1"/><fo:region-before region-name="xsl-region-before-even" extent="10mm" display-align="before"/><fo:region-after region-name="xsl-region-after-even" extent="10mm" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="index-first" page-width="210mm" page-height="297mm" margin-top="15mm" margin-bottom="15mm" margin-left="31mm" margin-right="19mm"><fo:region-body margin-bottom="15mm" margin-top="15mm" column-gap="12pt" column-count="2"/><fo:region-before region-name="xsl-region-before-first" extent="10mm" display-align="before"/><fo:region-after region-name="xsl-region-after-firs!
 t" extent="10mm" display-align="after"/></fo:simple-page-maste!
 r><fo:si
mple-page-master master-name="index-odd" page-width="210mm" page-height="297mm" margin-top="15mm" margin-bottom="15mm" margin-left="31mm" margin-right="19mm"><fo:region-body margin-bottom="15mm" margin-top="15mm" column-gap="12pt" column-count="2"/><fo:region-before region-name="xsl-region-before-odd" extent="10mm" display-align="before"/><fo:region-after region-name="xsl-region-after-odd" extent="10mm" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="index-even" page-width="210mm" page-height="297mm" margin-top="15mm" margin-bottom="15mm" margin-left="19mm" margin-right="31mm"><fo:region-body margin-bottom="15mm" margin-top="15mm" column-gap="12pt" column-count="2"/><fo:region-before region-name="xsl-region-before-even" extent="10mm" display-align="before"/><fo:region-after region-name="xsl-region-after-even" extent="10mm" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="blank-draft" page-width="210mm" page!
 -height="297mm" margin-top="15mm" margin-bottom="15mm" margin-left="19mm" margin-right="31mm"><fo:region-body margin-bottom="15mm" margin-top="15mm" background-image="url(Common_Content/images/watermark-draft.png)" background-attachment="fixed" background-repeat="no-repeat" background-position-horizontal="center" background-position-vertical="center"/><fo:region-before region-name="xsl-region-before-blank" extent="10mm" display-align="before"/><fo:region-after region-name="xsl-region-after-blank" extent="10mm" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="titlepage-first-draft" page-width="210mm" page-height="297mm" margin-top="15mm" margin-bottom="15mm" margin-left="31mm" margin-right="19mm"><fo:region-body margin-bottom="15mm" margin-top="15mm" column-gap="12pt" column-count="1" background-image="url(Common_Content/images/watermark-draft.png)" background-attachment="fixed" background-repeat="no-repeat" background-position-horizontal="c!
 enter" background-position-vertical="center"/><fo:region-befor!
 e region
-name="xsl-region-before-first" extent="10mm" display-align="before"/><fo:region-after region-name="xsl-region-after-first" extent="10mm" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="titlepage-odd-draft" page-width="210mm" page-height="297mm" margin-top="15mm" margin-bottom="15mm" margin-left="31mm" margin-right="19mm"><fo:region-body margin-bottom="15mm" margin-top="15mm" column-gap="12pt" column-count="1" background-image="url(Common_Content/images/watermark-draft.png)" background-attachment="fixed" background-repeat="no-repeat" background-position-horizontal="center" background-position-vertical="center"/><fo:region-before region-name="xsl-region-before-odd" extent="10mm" display-align="before"/><fo:region-after region-name="xsl-region-after-odd" extent="10mm" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="titlepage-even-draft" page-width="210mm" page-height="297mm" margin-top="15mm" margin-bottom="!
 15mm" margin-left="19mm" margin-right="31mm"><fo:region-body margin-bottom="15mm" margin-top="15mm" column-gap="12pt" column-count="1" background-image="url(Common_Content/images/watermark-draft.png)" background-attachment="fixed" background-repeat="no-repeat" background-position-horizontal="center" background-position-vertical="center"/><fo:region-before region-name="xsl-region-before-even" extent="10mm" display-align="before"/><fo:region-after region-name="xsl-region-after-even" extent="10mm" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="lot-first-draft" page-width="210mm" page-height="297mm" margin-top="15mm" margin-bottom="15mm" margin-left="31mm" margin-right="19mm"><fo:region-body margin-bottom="15mm" margin-top="15mm" column-gap="12pt" column-count="1" background-image="url(Common_Content/images/watermark-draft.png)" background-attachment="fixed" background-repeat="no-repeat" background-position-horizontal="center" background-posi!
 tion-vertical="center"/><fo:region-before region-name="xsl-reg!
 ion-befo
re-first" extent="10mm" display-align="before"/><fo:region-after region-name="xsl-region-after-first" extent="10mm" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="lot-odd-draft" page-width="210mm" page-height="297mm" margin-top="15mm" margin-bottom="15mm" margin-left="31mm" margin-right="19mm"><fo:region-body margin-bottom="15mm" margin-top="15mm" column-gap="12pt" column-count="1" background-image="url(Common_Content/images/watermark-draft.png)" background-attachment="fixed" background-repeat="no-repeat" background-position-horizontal="center" background-position-vertical="center"/><fo:region-before region-name="xsl-region-before-odd" extent="10mm" display-align="before"/><fo:region-after region-name="xsl-region-after-odd" extent="10mm" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="lot-even-draft" page-width="210mm" page-height="297mm" margin-top="15mm" margin-bottom="15mm" margin-left="19mm" margin-ri!
 ght="31mm"><fo:region-body margin-bottom="15mm" margin-top="15mm" column-gap="12pt" column-count="1" background-image="url(Common_Content/images/watermark-draft.png)" background-attachment="fixed" background-repeat="no-repeat" background-position-horizontal="center" background-position-vertical="center"/><fo:region-before region-name="xsl-region-before-even" extent="10mm" display-align="before"/><fo:region-after region-name="xsl-region-after-even" extent="10mm" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="front-first-draft" page-width="210mm" page-height="297mm" margin-top="15mm" margin-bottom="15mm" margin-left="31mm" margin-right="19mm"><fo:region-body margin-bottom="15mm" margin-top="15mm" column-gap="12pt" column-count="1" background-image="url(Common_Content/images/watermark-draft.png)" background-attachment="fixed" background-repeat="no-repeat" background-position-horizontal="center" background-position-vertical="center"/><fo:regi!
 on-before region-name="xsl-region-before-first" extent="10mm" !
 display-
align="before"/><fo:region-after region-name="xsl-region-after-first" extent="10mm" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="front-odd-draft" page-width="210mm" page-height="297mm" margin-top="15mm" margin-bottom="15mm" margin-left="31mm" margin-right="19mm"><fo:region-body margin-bottom="15mm" margin-top="15mm" column-gap="12pt" column-count="1" background-image="url(Common_Content/images/watermark-draft.png)" background-attachment="fixed" background-repeat="no-repeat" background-position-horizontal="center" background-position-vertical="center"/><fo:region-before region-name="xsl-region-before-odd" extent="10mm" display-align="before"/><fo:region-after region-name="xsl-region-after-odd" extent="10mm" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="front-even-draft" page-width="210mm" page-height="297mm" margin-top="15mm" margin-bottom="15mm" margin-left="19mm" margin-right="31mm"><fo:region-body m!
 argin-bottom="15mm" margin-top="15mm" column-gap="12pt" column-count="1" background-image="url(Common_Content/images/watermark-draft.png)" background-attachment="fixed" background-repeat="no-repeat" background-position-horizontal="center" background-position-vertical="center"/><fo:region-before region-name="xsl-region-before-even" extent="10mm" display-align="before"/><fo:region-after region-name="xsl-region-after-even" extent="10mm" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="body-first-draft" page-width="210mm" page-height="297mm" margin-top="15mm" margin-bottom="15mm" margin-left="31mm" margin-right="19mm"><fo:region-body margin-bottom="15mm" margin-top="15mm" column-gap="12pt" column-count="1" background-image="url(Common_Content/images/watermark-draft.png)" background-attachment="fixed" background-repeat="no-repeat" background-position-horizontal="center" background-position-vertical="center"/><fo:region-before region-name="xsl-re!
 gion-before-first" extent="10mm" display-align="before"/><fo:r!
 egion-af
ter region-name="xsl-region-after-first" extent="10mm" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="body-odd-draft" page-width="210mm" page-height="297mm" margin-top="15mm" margin-bottom="15mm" margin-left="31mm" margin-right="19mm"><fo:region-body margin-bottom="15mm" margin-top="15mm" column-gap="12pt" column-count="1" background-image="url(Common_Content/images/watermark-draft.png)" background-attachment="fixed" background-repeat="no-repeat" background-position-horizontal="center" background-position-vertical="center"/><fo:region-before region-name="xsl-region-before-odd" extent="10mm" display-align="before"/><fo:region-after region-name="xsl-region-after-odd" extent="10mm" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="body-even-draft" page-width="210mm" page-height="297mm" margin-top="15mm" margin-bottom="15mm" margin-left="19mm" margin-right="31mm"><fo:region-body margin-bottom="15mm" margin-top=!
 "15mm" column-gap="12pt" column-count="1" background-image="url(Common_Content/images/watermark-draft.png)" background-attachment="fixed" background-repeat="no-repeat" background-position-horizontal="center" background-position-vertical="center"/><fo:region-before region-name="xsl-region-before-even" extent="10mm" display-align="before"/><fo:region-after region-name="xsl-region-after-even" extent="10mm" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="back-first-draft" page-width="210mm" page-height="297mm" margin-top="15mm" margin-bottom="15mm" margin-left="31mm" margin-right="19mm"><fo:region-body margin-bottom="15mm" margin-top="15mm" column-gap="12pt" column-count="1" background-image="url(Common_Content/images/watermark-draft.png)" background-attachment="fixed" background-repeat="no-repeat" background-position-horizontal="center" background-position-vertical="center"/><fo:region-before region-name="xsl-region-before-first" extent="10mm!
 " display-align="before"/><fo:region-after region-name="xsl-re!
 gion-aft
er-first" extent="10mm" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="back-odd-draft" page-width="210mm" page-height="297mm" margin-top="15mm" margin-bottom="15mm" margin-left="31mm" margin-right="19mm"><fo:region-body margin-bottom="15mm" margin-top="15mm" column-gap="12pt" column-count="1" background-image="url(Common_Content/images/watermark-draft.png)" background-attachment="fixed" background-repeat="no-repeat" background-position-horizontal="center" background-position-vertical="center"/><fo:region-before region-name="xsl-region-before-odd" extent="10mm" display-align="before"/><fo:region-after region-name="xsl-region-after-odd" extent="10mm" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="back-even-draft" page-width="210mm" page-height="297mm" margin-top="15mm" margin-bottom="15mm" margin-left="19mm" margin-right="31mm"><fo:region-body margin-bottom="15mm" margin-top="15mm" column-gap="12pt" column!
 -count="1" background-image="url(Common_Content/images/watermark-draft.png)" background-attachment="fixed" background-repeat="no-repeat" background-position-horizontal="center" background-position-vertical="center"/><fo:region-before region-name="xsl-region-before-even" extent="10mm" display-align="before"/><fo:region-after region-name="xsl-region-after-even" extent="10mm" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="index-first-draft" page-width="210mm" page-height="297mm" margin-top="15mm" margin-bottom="15mm" margin-left="31mm" margin-right="19mm"><fo:region-body margin-bottom="15mm" margin-top="15mm" column-gap="12pt" column-count="2" background-image="url(Common_Content/images/watermark-draft.png)" background-attachment="fixed" background-repeat="no-repeat" background-position-horizontal="center" background-position-vertical="center"/><fo:region-before region-name="xsl-region-before-first" extent="10mm" display-align="before"/><fo:!
 region-after region-name="xsl-region-after-first" extent="10mm!
 " displa
y-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="index-odd-draft" page-width="210mm" page-height="297mm" margin-top="15mm" margin-bottom="15mm" margin-left="31mm" margin-right="19mm"><fo:region-body margin-bottom="15mm" margin-top="15mm" column-gap="12pt" column-count="2" background-image="url(Common_Content/images/watermark-draft.png)" background-attachment="fixed" background-repeat="no-repeat" background-position-horizontal="center" background-position-vertical="center"/><fo:region-before region-name="xsl-region-before-odd" extent="10mm" display-align="before"/><fo:region-after region-name="xsl-region-after-odd" extent="10mm" display-align="after"/></fo:simple-page-master><fo:simple-page-master master-name="index-even-draft" page-width="210mm" page-height="297mm" margin-top="15mm" margin-bottom="15mm" margin-left="19mm" margin-right="31mm"><fo:region-body margin-bottom="15mm" margin-top="15mm" column-gap="12pt" column-count="2" background-image=!
 "url(Common_Content/images/watermark-draft.png)" background-attachment="fixed" background-repeat="no-repeat" background-position-horizontal="center" background-position-vertical="center"/><fo:region-before region-name="xsl-region-before-even" extent="10mm" display-align="before"/><fo:region-after region-name="xsl-region-after-even" extent="10mm" display-align="after"/></fo:simple-page-master><fo:page-sequence-master master-name="titlepage"><fo:repeatable-page-master-alternatives><fo:conditional-page-master-reference master-reference="blank" blank-or-not-blank="blank"/><fo:conditional-page-master-reference master-reference="titlepage-first" page-position="first"/><fo:conditional-page-master-reference master-reference="titlepage-odd" odd-or-even="odd"/><fo:conditional-page-master-reference odd-or-even="even" master-reference="titlepage-even"/></fo:repeatable-page-master-alternatives></fo:page-sequence-master><fo:page-sequence-master master-name="lot"><fo:repeatable-page-maste!
 r-alternatives><fo:conditional-page-master-reference master-re!
 ference=
"blank" blank-or-not-blank="blank"/><fo:conditional-page-master-reference master-reference="lot-first" page-position="first"/><fo:conditional-page-master-reference master-reference="lot-odd" odd-or-even="odd"/><fo:conditional-page-master-reference odd-or-even="even" master-reference="lot-even"/></fo:repeatable-page-master-alternatives></fo:page-sequence-master><fo:page-sequence-master master-name="front"><fo:repeatable-page-master-alternatives><fo:conditional-page-master-reference master-reference="blank" blank-or-not-blank="blank"/><fo:conditional-page-master-reference master-reference="front-first" page-position="first"/><fo:conditional-page-master-reference master-reference="front-odd" odd-or-even="odd"/><fo:conditional-page-master-reference odd-or-even="even" master-reference="front-even"/></fo:repeatable-page-master-alternatives></fo:page-sequence-master><fo:page-sequence-master master-name="body"><fo:repeatable-page-master-alternatives><fo:conditional-page-master-refer!
 ence master-reference="blank" blank-or-not-blank="blank"/><fo:conditional-page-master-reference master-reference="body-first" page-position="first"/><fo:conditional-page-master-reference master-reference="body-odd" odd-or-even="odd"/><fo:conditional-page-master-reference odd-or-even="even" master-reference="body-even"/></fo:repeatable-page-master-alternatives></fo:page-sequence-master><fo:page-sequence-master master-name="back"><fo:repeatable-page-master-alternatives><fo:conditional-page-master-reference master-reference="blank" blank-or-not-blank="blank"/><fo:conditional-page-master-reference master-reference="back-first" page-position="first"/><fo:conditional-page-master-reference master-reference="back-odd" odd-or-even="odd"/><fo:conditional-page-master-reference odd-or-even="even" master-reference="back-even"/></fo:repeatable-page-master-alternatives></fo:page-sequence-master><fo:page-sequence-master master-name="index"><fo:repeatable-page-master-alternatives><fo:condit!
 ional-page-master-reference master-reference="blank" blank-or-!
 not-blan
k="blank"/><fo:conditional-page-master-reference master-reference="index-first" page-position="first"/><fo:conditional-page-master-reference master-reference="index-odd" odd-or-even="odd"/><fo:conditional-page-master-reference odd-or-even="even" master-reference="index-even"/></fo:repeatable-page-master-alternatives></fo:page-sequence-master><fo:page-sequence-master master-name="titlepage-draft"><fo:repeatable-page-master-alternatives><fo:conditional-page-master-reference master-reference="blank-draft" blank-or-not-blank="blank"/><fo:conditional-page-master-reference master-reference="titlepage-first-draft" page-position="first"/><fo:conditional-page-master-reference master-reference="titlepage-odd-draft" odd-or-even="odd"/><fo:conditional-page-master-reference odd-or-even="even" master-reference="titlepage-even-draft"/></fo:repeatable-page-master-alternatives></fo:page-sequence-master><fo:page-sequence-master master-name="lot-draft"><fo:repeatable-page-master-alternatives><!
 fo:conditional-page-master-reference master-reference="blank-draft" blank-or-not-blank="blank"/><fo:conditional-page-master-reference master-reference="lot-first-draft" page-position="first"/><fo:conditional-page-master-reference master-reference="lot-odd-draft" odd-or-even="odd"/><fo:conditional-page-master-reference odd-or-even="even" master-reference="lot-even-draft"/></fo:repeatable-page-master-alternatives></fo:page-sequence-master><fo:page-sequence-master master-name="front-draft"><fo:repeatable-page-master-alternatives><fo:conditional-page-master-reference master-reference="blank-draft" blank-or-not-blank="blank"/><fo:conditional-page-master-reference master-reference="front-first-draft" page-position="first"/><fo:conditional-page-master-reference master-reference="front-odd-draft" odd-or-even="odd"/><fo:conditional-page-master-reference odd-or-even="even" master-reference="front-even-draft"/></fo:repeatable-page-master-alternatives></fo:page-sequence-master><fo:page!
 -sequence-master master-name="body-draft"><fo:repeatable-page-!
 master-a
lternatives><fo:conditional-page-master-reference master-reference="blank-draft" blank-or-not-blank="blank"/><fo:conditional-page-master-reference master-reference="body-first-draft" page-position="first"/><fo:conditional-page-master-reference master-reference="body-odd-draft" odd-or-even="odd"/><fo:conditional-page-master-reference odd-or-even="even" master-reference="body-even-draft"/></fo:repeatable-page-master-alternatives></fo:page-sequence-master><fo:page-sequence-master master-name="back-draft"><fo:repeatable-page-master-alternatives><fo:conditional-page-master-reference master-reference="blank-draft" blank-or-not-blank="blank"/><fo:conditional-page-master-reference master-reference="back-first-draft" page-position="first"/><fo:conditional-page-master-reference master-reference="back-odd-draft" odd-or-even="odd"/><fo:conditional-page-master-reference odd-or-even="even" master-reference="back-even-draft"/></fo:repeatable-page-master-alternatives></fo:page-sequence-mast!
 er><fo:page-sequence-master master-name="index-draft"><fo:repeatable-page-master-alternatives><fo:conditional-page-master-reference master-reference="blank-draft" blank-or-not-blank="blank"/><fo:conditional-page-master-reference master-reference="index-first-draft" page-position="first"/><fo:conditional-page-master-reference master-reference="index-odd-draft" odd-or-even="odd"/><fo:conditional-page-master-reference odd-or-even="even" master-reference="index-even-draft"/></fo:repeatable-page-master-alternatives></fo:page-sequence-master></fo:layout-master-set><fo:declarations xmlns:fox="http://xmlgraphics.apache.org/fop/extensions"><x:xmpmeta xmlns:x="adobe:ns:meta/"><rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><rdf:Description xmlns:dc="http://purl.org/dc/elements/1.1/" rdf:about=""><dc:title>Seam Reference Guide CP07 - for Use with JBoss Enterprise Application Platform 4.3 Cumulative Patch 7</dc:title><dc:creator/></rdf:Description><rdf:Description xmln!
 s:pdf="http://ns.adobe.com/pdf/1.3/" rdf:about=""/><rdf:Descri!
 ption xm
lns:xmp="http://ns.adobe.com/xap/1.0/" rdf:about=""><xmp:CreatorTool>DocBook XSL Stylesheets with Apache FOP</xmp:CreatorTool></rdf:Description></rdf:RDF></x:xmpmeta></fo:declarations><fo:bookmark-tree><fo:bookmark internal-destination="id4192237" starting-state="hide"><fo:bookmark-title>Seam Reference Guide CP07</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="toc...id4192237"><fo:bookmark-title>Table of Contents</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Feedback" starting-state="hide"><fo:bookmark-title>Chapter 1. Feedback</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Introduction_to_JBoss_Seam" starting-state="hide"><fo:bookmark-title>Introduction to JBoss Seam</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_Tutorial" starting-state="hide"><fo:bookmark-title>Chapter 2. Seam Tutorial</fo:bookmark-title><fo:bookmark internal-destination="!
 Seam_Reference_Guide-Seam_Tutorial-Try_the_examples" starting-state="hide"><fo:bookmark-title>2.1. Try the examples</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-Try_the_examples-Running_the_examples_on_JBoss_AS" starting-state="hide"><fo:bookmark-title>2.1.1. Running the examples on JBoss Enterprise Application Platform</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Try_the_examples-Running_the_examples_on_Tomcat" starting-state="hide"><fo:bookmark-title>2.1.2. Running the examples on Tomcat</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Try_the_examples-Running_the_example_tests" starting-state="hide"><fo:bookmark-title>2.1.3. Running the example tests</fo:bookmark-title></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_Tutorial-Your_first_Seam_application_the_registration_example" starting-state="hide"><fo:bookmark-ti!
 tle>2.2. Your first Seam application: the registration exampl!
 e</fo:bo
okmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-Your_first_Seam_application_the_registration_example-Understanding_the_code" starting-state="hide"><fo:bookmark-title>2.2.1. Understanding the code</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-Understanding_the_code-The_entity_bean_User.java" starting-state="hide"><fo:bookmark-title>2.2.1.1. The entity bean: User.java</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Understanding_the_code-The_stateless_session_bean_class_RegisterAction.java" starting-state="hide"><fo:bookmark-title>2.2.1.2. The stateless session bean class: RegisterAction.java</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Understanding_the_code-The_session_bean_local_interface_Register.java" starting-state="hide"><fo:bookmark-title>2.2.1.3. The session bean local interface: Register.java</fo:bookmark-title></fo:bookmark><fo:b!
 ookmark internal-destination="Seam_Reference_Guide-Understanding_the_code-The_Seam_component_deployment_descriptor_components.xml" starting-state="hide"><fo:bookmark-title>2.2.1.4. The Seam component deployment descriptor: components.xml</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Understanding_the_code-The_web_deployment_description_web.xml" starting-state="hide"><fo:bookmark-title>2.2.1.5. The web deployment description: web.xml</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Understanding_the_code-The_JSF_configration_faces_config.xml" starting-state="hide"><fo:bookmark-title>2.2.1.6. The JSF configration: faces-config.xml</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Understanding_the_code-The_EJB_deployment_descriptor_ejb_jar.xml" starting-state="hide"><fo:bookmark-title>2.2.1.7. The EJB deployment descriptor: ejb-jar.xml</fo:bookmark-tit!
 le></fo:bookmark><fo:bookmark internal-destination="Seam_Refer!
 ence_Gui
de-Understanding_the_code-The_EJB_persistence_deployment_descriptor_persistence.xml" starting-state="hide"><fo:bookmark-title>2.2.1.8. The EJB persistence deployment descriptor: persistence.xml</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Understanding_the_code-The_view_register.jsp_and_registered.jsp" starting-state="hide"><fo:bookmark-title>2.2.1.9. The view: register.jsp and registered.jsp</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Understanding_the_code-The_EAR_deployment_descriptor_application.xml" starting-state="hide"><fo:bookmark-title>2.2.1.10. The EAR deployment descriptor: application.xml</fo:bookmark-title></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Your_first_Seam_application_the_registration_example-How_it_works" starting-state="hide"><fo:bookmark-title>2.2.2. How it works</fo:bookmark-title></fo:bookmark></fo:bookmark><fo:bookma!
 rk internal-destination="Seam_Reference_Guide-Seam_Tutorial-Clickable_lists_in_Seam_the_messages_example" starting-state="hide"><fo:bookmark-title>2.3. Clickable lists in Seam: the messages example</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-Clickable_lists_in_Seam_the_messages_example-Understanding_the_code" starting-state="hide"><fo:bookmark-title>2.3.1. Understanding the code</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-Understanding_the_code-The_entity_bean_Message.java" starting-state="hide"><fo:bookmark-title>2.3.1.1. The entity bean: Message.java</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Understanding_the_code-The_stateful_session_bean_MessageManagerBean.java" starting-state="hide"><fo:bookmark-title>2.3.1.2. The stateful session bean: MessageManagerBean.java</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Understand!
 ing_the_code-The_session_bean_local_interface_MessageManager.j!
 ava" sta
rting-state="hide"><fo:bookmark-title>2.3.1.3. The session bean local interface: MessageManager.java</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Understanding_the_code-The_view_messages.jsp" starting-state="hide"><fo:bookmark-title>2.3.1.4. The view: messages.jsp</fo:bookmark-title></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Clickable_lists_in_Seam_the_messages_example-How_it_works" starting-state="hide"><fo:bookmark-title>2.3.2. How it works</fo:bookmark-title></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_Tutorial-Seam_and_jBPM_the_todo_list_example" starting-state="hide"><fo:bookmark-title>2.4. Seam and jBPM: the todo list example</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_and_jBPM_the_todo_list_example-Understanding_the_code" starting-state="hide"><fo:bookmark-title>2.4.1. Understanding the code</fo:bookm!
 ark-title></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_Tutorial-Seam_pageflow_the_numberguess_example" starting-state="hide"><fo:bookmark-title>2.5. Seam pageflow: the numberguess example</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_pageflow_the_numberguess_example-Understanding_the_code" starting-state="hide"><fo:bookmark-title>2.5.1. Understanding the code</fo:bookmark-title></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_Tutorial-A_complete_Seam_application_the_Hotel_Booking_example" starting-state="hide"><fo:bookmark-title>2.6. A complete Seam application: the Hotel Booking example</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-Introduction" starting-state="hide"><fo:bookmark-title>2.6.1. Introduction</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination=!
 "Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Bo!
 oking_ex
ample-Overview_of_the_booking_example" starting-state="hide"><fo:bookmark-title>2.6.2. Overview of the booking example</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-Understanding_Seam_conversations" starting-state="hide"><fo:bookmark-title>2.6.3. Understanding Seam conversations</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-The_Seam_UI_control_library" starting-state="hide"><fo:bookmark-title>2.6.4. The Seam UI control library</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-The_Seam_Debug_Page" starting-state="hide"><fo:bookmark-title>2.6.5. The Seam Debug Page</fo:bookmark-title></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_Tutorial-A_complete_!
 application_featuring_Seam_and_jBPM_the_DVD_Store_example" starting-state="hide"><fo:bookmark-title>2.7. A complete application featuring Seam and jBPM: the DVD Store example</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_Tutorial-A_complete_application_featuring_Seam_workspace_management_the_Issue_Tracker_example" starting-state="hide"><fo:bookmark-title>2.8. A complete application featuring Seam workspace management: the Issue Tracker example</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_Tutorial-An_example_of_Seam_with_Hibernate_the_Hibernate_Booking_example" starting-state="hide"><fo:bookmark-title>2.9. An example of Seam with Hibernate: the Hibernate Booking example</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_Tutorial-A_RESTful_Seam_application_the_Blog_example" starting-state="hide"><fo:bookmark-title>2.10. A RESTful Seam!
  application: the Blog example</fo:bookmark-title><fo:bookmark!
  interna
l-destination="Seam_Reference_Guide-A_RESTful_Seam_application_the_Blog_example-Using_pull_style_MVC" starting-state="hide"><fo:bookmark-title>2.10.1. Using "pull"-style MVC</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-A_RESTful_Seam_application_the_Blog_example-Bookmarkable_search_results_page" starting-state="hide"><fo:bookmark-title>2.10.2. Bookmarkable search results page</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-A_RESTful_Seam_application_the_Blog_example-Using_push_style_MVC_in_a_RESTful_application" starting-state="hide"><fo:bookmark-title>2.10.3. Using "push"-style MVC in a RESTful application</fo:bookmark-title></fo:bookmark></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-The_contextual_component_model" starting-state="hide"><fo:bookmark-title>Chapter 3. The contextual component model</fo:bookmark-title><fo:bookmark internal-destination!
 ="Seam_Reference_Guide-The_contextual_component_model-Seam_contexts" starting-state="hide"><fo:bookmark-title>3.1. Seam contexts</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_contexts-Stateless_context" starting-state="hide"><fo:bookmark-title>3.1.1. Stateless context</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_contexts-Event_context" starting-state="hide"><fo:bookmark-title>3.1.2. Event context</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_contexts-Page_context" starting-state="hide"><fo:bookmark-title>3.1.3. Page context</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_contexts-Conversation_context" starting-state="hide"><fo:bookmark-title>3.1.4. Conversation context</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_contexts-Session_context" starting!
 -state="hide"><fo:bookmark-title>3.1.5. Session context</fo:b!
 ookmark-
title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_contexts-Business_process_context" starting-state="hide"><fo:bookmark-title>3.1.6. Business process context</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_contexts-Application_context" starting-state="hide"><fo:bookmark-title>3.1.7. Application context</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_contexts-Context_variables" starting-state="hide"><fo:bookmark-title>3.1.8. Context variables</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_contexts-Context_search_priority" starting-state="hide"><fo:bookmark-title>3.1.9. Context search priority</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_contexts-Concurrency_model" starting-state="hide"><fo:bookmark-title>3.1.10. Concurrency model</fo:bookmark-title></fo:bo!
 okmark></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-The_contextual_component_model-Seam_components" starting-state="hide"><fo:bookmark-title>3.2. Seam components</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_components-Stateless_session_beans" starting-state="hide"><fo:bookmark-title>3.2.1. Stateless session beans</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_components-Stateful_session_beans" starting-state="hide"><fo:bookmark-title>3.2.2. Stateful session beans</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_components-Entity_beans" starting-state="hide"><fo:bookmark-title>3.2.3. Entity beans</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_components-JavaBeans" starting-state="hide"><fo:bookmark-title>3.2.4. JavaBeans</fo:bookmark-title></fo:bookmark><fo:bookmark internal!
 -destination="Seam_Reference_Guide-Seam_components-Message_dri!
 ven_bean
s" starting-state="hide"><fo:bookmark-title>3.2.5. Message-driven beans</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_components-Interception" starting-state="hide"><fo:bookmark-title>3.2.6. Interception</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_components-Component_names" starting-state="hide"><fo:bookmark-title>3.2.7. Component names</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_components-Defining_the_component_scope" starting-state="hide"><fo:bookmark-title>3.2.8. Defining the component scope</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_components-Components_with_multiple_roles" starting-state="hide"><fo:bookmark-title>3.2.9. Components with multiple roles</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_components-Built_in_comp!
 onents" starting-state="hide"><fo:bookmark-title>3.2.10. Built-in components</fo:bookmark-title></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-The_contextual_component_model-Bijection" starting-state="hide"><fo:bookmark-title>3.3. Bijection</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-The_contextual_component_model-Lifecycle_methods" starting-state="hide"><fo:bookmark-title>3.4. Lifecycle methods</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-The_contextual_component_model-Conditional_installation" starting-state="hide"><fo:bookmark-title>3.5. Conditional installation</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-The_contextual_component_model-Logging" starting-state="hide"><fo:bookmark-title>3.6. Logging</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-The_contextua!
 l_component_model-The_Mutable_interface_and_ReadOnly" starting!
 -state="
hide"><fo:bookmark-title>3.7. The Mutable interface and @ReadOnly</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-The_contextual_component_model-Factory_and_manager_components" starting-state="hide"><fo:bookmark-title>3.8. Factory and manager components</fo:bookmark-title></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Configuring_Seam_components" starting-state="hide"><fo:bookmark-title>Chapter 4. Configuring Seam components</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-Configuring_Seam_components-Configuring_components_via_property_settings" starting-state="hide"><fo:bookmark-title>4.1. Configuring components via property settings</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Configuring_Seam_components-Configuring_components_via_components.xml" starting-state="hide"><fo:bookmark-title>4.2. Configuring components via com!
 ponents.xml</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Configuring_Seam_components-Fine_grained_configuration_files" starting-state="hide"><fo:bookmark-title>4.3. Fine-grained configuration files</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Configuring_Seam_components-Configurable_property_types" starting-state="hide"><fo:bookmark-title>4.4. Configurable property types</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Configuring_Seam_components-Using_XML_Namespaces" starting-state="hide"><fo:bookmark-title>4.5. Using XML Namespaces</fo:bookmark-title></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Events_interceptors_and_exception_handling" starting-state="hide"><fo:bookmark-title>Chapter 5. Events, interceptors and exception handling</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Gui!
 de-Events_interceptors_and_exception_handling-Seam_events" sta!
 rting-st
ate="hide"><fo:bookmark-title>5.1. Seam events</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_events-Page_actions" starting-state="hide"><fo:bookmark-title>5.1.1. Page actions</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-Page_actions-Page_parameters" starting-state="hide"><fo:bookmark-title>5.1.1.1. Page parameters</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Page_actions-Navigation" starting-state="hide"><fo:bookmark-title>5.1.1.2. Navigation</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Page_actions-Fine_grained_files_for_definition_of_navigation_page_actions_and_parameters" starting-state="hide"><fo:bookmark-title>5.1.1.3. Fine-grained files for definition of navigation, page actions and parameters</fo:bookmark-title></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_events-Componen!
 t_driven_events" starting-state="hide"><fo:bookmark-title>5.1.2. Component-driven events</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_events-Contextual_events" starting-state="hide"><fo:bookmark-title>5.1.3. Contextual events</fo:bookmark-title></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Events_interceptors_and_exception_handling-Seam_interceptors" starting-state="hide"><fo:bookmark-title>5.2. Seam interceptors</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Events_interceptors_and_exception_handling-Managing_exceptions" starting-state="hide"><fo:bookmark-title>5.3. Managing exceptions</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-Managing_exceptions-Exceptions_and_transactions" starting-state="hide"><fo:bookmark-title>5.3.1. Exceptions and transactions</fo:bookmark-title></fo:bookmark><fo:bookmark internal-desti!
 nation="Seam_Reference_Guide-Managing_exceptions-Enabling_Seam!
 _excepti
on_handling" starting-state="hide"><fo:bookmark-title>5.3.2. Enabling Seam exception handling</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Managing_exceptions-Using_annotations_for_exception_handling" starting-state="hide"><fo:bookmark-title>5.3.3. Using annotations for exception handling</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Managing_exceptions-Using_XML_for_exception_handling" starting-state="hide"><fo:bookmark-title>5.3.4. Using XML for exception handling</fo:bookmark-title></fo:bookmark></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Conversations_and_workspace_management" starting-state="hide"><fo:bookmark-title>Chapter 6. Conversations and workspace management</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-Conversations_and_workspace_management-Seams_conversation_model" starting-state="hide"><fo:bookmark-tit!
 le>6.1. Seam's conversation model</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Conversations_and_workspace_management-Nested_conversations" starting-state="hide"><fo:bookmark-title>6.2. Nested conversations</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Conversations_and_workspace_management-Starting_conversations_with_GET_requests" starting-state="hide"><fo:bookmark-title>6.3. Starting conversations with GET requests</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Conversations_and_workspace_management-Using_slink_and_sbutton" starting-state="hide"><fo:bookmark-title>6.4. Using &lt;s:link&gt; and &lt;s:button&gt;</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Conversations_and_workspace_management-Success_messages" starting-state="hide"><fo:bookmark-title>6.5. Success messages</fo:bookmark-title></fo:b!
 ookmark><fo:bookmark internal-destination="Seam_Reference_Guid!
 e-Conver
sations_and_workspace_management-Using_an_explicit_conversation_id" starting-state="hide"><fo:bookmark-title>6.6. Using an explicit conversation ID</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Conversations_and_workspace_management-Workspace_management" starting-state="hide"><fo:bookmark-title>6.7. Workspace management</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-Workspace_management-Workspace_management_and_JSF_navigation" starting-state="hide"><fo:bookmark-title>6.7.1. Workspace management and JSF navigation</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Workspace_management-Workspace_management_and_jPDL_pageflow" starting-state="hide"><fo:bookmark-title>6.7.2. Workspace management and jPDL pageflow</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Workspace_management-The_conversation_switcher" starting-state="hide"!
 ><fo:bookmark-title>6.7.3. The conversation switcher</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Workspace_management-The_conversation_list" starting-state="hide"><fo:bookmark-title>6.7.4. The conversation list</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Workspace_management-Breadcrumbs" starting-state="hide"><fo:bookmark-title>6.7.5. Breadcrumbs</fo:bookmark-title></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Conversations_and_workspace_management-Conversational_components_and_JSF_component_bindings" starting-state="hide"><fo:bookmark-title>6.8. Conversational components and JSF component bindings</fo:bookmark-title></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Pageflows_and_business_processes" starting-state="hide"><fo:bookmark-title>Chapter 7. Pageflows and business processes</fo:bookmark-title><fo:boo!
 kmark internal-destination="Seam_Reference_Guide-Pageflows_and!
 _busines
s_processes-Pageflow_in_Seam" starting-state="hide"><fo:bookmark-title>7.1. Pageflow in Seam</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-Pageflow_in_Seam-The_two_navigation_models" starting-state="hide"><fo:bookmark-title>7.1.1. The two navigation models</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Pageflow_in_Seam-Seam_and_the_back_button" starting-state="hide"><fo:bookmark-title>7.1.2. Seam and the back button</fo:bookmark-title></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Pageflows_and_business_processes-Using_jPDL_pageflows" starting-state="hide"><fo:bookmark-title>7.2. Using jPDL pageflows</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-Using_jPDL_pageflows-Installing_pageflows" starting-state="hide"><fo:bookmark-title>7.2.1. Installing pageflows</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Referenc!
 e_Guide-Using_jPDL_pageflows-Starting_pageflows" starting-state="hide"><fo:bookmark-title>7.2.2. Starting pageflows</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Using_jPDL_pageflows-Page_nodes_and_transitions" starting-state="hide"><fo:bookmark-title>7.2.3. Page nodes and transitions</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Using_jPDL_pageflows-Controlling_the_flow" starting-state="hide"><fo:bookmark-title>7.2.4. Controlling the flow</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Using_jPDL_pageflows-Ending_the_flow" starting-state="hide"><fo:bookmark-title>7.2.5. Ending the flow</fo:bookmark-title></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Pageflows_and_business_processes-Business_process_management_in_Seam" starting-state="hide"><fo:bookmark-title>7.3. Business process management in Seam</fo:boo!
 kmark-title></fo:bookmark><fo:bookmark internal-destination="S!
 eam_Refe
rence_Guide-Pageflows_and_business_processes-Using_jPDL_business_process_definitions" starting-state="hide"><fo:bookmark-title>7.4. Using jPDL business process definitions</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Installing_process_definitions" starting-state="hide"><fo:bookmark-title>7.4.1. Installing process definitions</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Initializing_actor_ids" starting-state="hide"><fo:bookmark-title>7.4.2. Initializing actor ids</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Initiating_a_business_process" starting-state="hide"><fo:bookmark-title>7.4.3. Initiating a business process</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Using_jPDL_business_process_definiti!
 ons-Task_assignment" starting-state="hide"><fo:bookmark-title>7.4.4. Task assignment</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Task_lists" starting-state="hide"><fo:bookmark-title>7.4.5. Task lists</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Performing_a_task" starting-state="hide"><fo:bookmark-title>7.4.6. Performing a task</fo:bookmark-title></fo:bookmark></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping" starting-state="hide"><fo:bookmark-title>Chapter 8. Seam and Object/Relational Mapping</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Introduction" starting-state="hide"><fo:bookmark-title>8.1. Introduction</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destina!
 tion="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-S!
 eam_mana
ged_transactions" starting-state="hide"><fo:bookmark-title>8.2. Seam managed transactions</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_managed_transactions-Enabling_Seam_managed_transactions" starting-state="hide"><fo:bookmark-title>8.2.1. Enabling Seam-managed transactions</fo:bookmark-title></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Seam_managed_persistence_contexts" starting-state="hide"><fo:bookmark-title>8.3. Seam-managed persistence contexts</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_managed_persistence_contexts-Using_a_Seam_managed_persistence_context_with_JPA" starting-state="hide"><fo:bookmark-title>8.3.1. Using a Seam-managed persistence context with JPA</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_managed_persistence_contexts-Using_a_Seam_managed_Hibernate_session" st!
 arting-state="hide"><fo:bookmark-title>8.3.2. Using a Seam-managed Hibernate session</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_managed_persistence_contexts-Seam_managed_persistence_contexts_and_atomic_conversations" starting-state="hide"><fo:bookmark-title>8.3.3. Seam-managed persistence contexts and atomic conversations</fo:bookmark-title></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_the_JPA_delegate" starting-state="hide"><fo:bookmark-title>8.4. Using the JPA "delegate"</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_EL_in_EJB_QLHQL" starting-state="hide"><fo:bookmark-title>8.5. Using EL in EJB-QL/HQL</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_Hibernate_filters" starting-state!
 ="hide"><fo:bookmark-title>8.6. Using Hibernate filters</fo:b!
 ookmark-
title></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-JSF_form_validation_in_Seam" starting-state="hide"><fo:bookmark-title>Chapter 9. JSF form validation in Seam</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-The_Seam_Application_Framework" starting-state="hide"><fo:bookmark-title>Chapter 10. The Seam Application Framework</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-The_Seam_Application_Framework-Introduction" starting-state="hide"><fo:bookmark-title>10.1. Introduction</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-The_Seam_Application_Framework-Home_objects" starting-state="hide"><fo:bookmark-title>10.2. Home objects</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-The_Seam_Application_Framework-Query_objects" starting-state="hide"><fo:bookmark-title>10.3. Query objects</fo:book!
 mark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-The_Seam_Application_Framework-Controller_objects" starting-state="hide"><fo:bookmark-title>10.4. Controller objects</fo:bookmark-title></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="drools" starting-state="hide"><fo:bookmark-title>Chapter 11. Seam and JBoss Rules</fo:bookmark-title><fo:bookmark internal-destination="id2837364" starting-state="hide"><fo:bookmark-title>11.1. Installing rules</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="id2768374" starting-state="hide"><fo:bookmark-title>11.2. Using rules from a Seam component</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="id2755080" starting-state="hide"><fo:bookmark-title>11.3. Using rules from a jBPM process definition</fo:bookmark-title></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Security" starting-state="hide"><fo:bookmark-title>ChapterÂ!
  12. Security</fo:bookmark-title><fo:bookmark internal-destin!
 ation="S
eam_Reference_Guide-Security-Overview" starting-state="hide"><fo:bookmark-title>12.1. Overview</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-Overview-Which_mode_is_right_for_my_application" starting-state="hide"><fo:bookmark-title>12.1.1. Which mode is right for my application?</fo:bookmark-title></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Security-Requirements" starting-state="hide"><fo:bookmark-title>12.2. Requirements</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Security-Authentication" starting-state="hide"><fo:bookmark-title>12.3. Authentication</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-Authentication-Configuration" starting-state="hide"><fo:bookmark-title>12.3.1. Configuration</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Authentication-Writing_an_authentication_method" starting!
 -state="hide"><fo:bookmark-title>12.3.2. Writing an authentication method</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Authentication-Writing_a_login_form" starting-state="hide"><fo:bookmark-title>12.3.3. Writing a login form</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Authentication-Simplified_Configuration___Summary" starting-state="hide"><fo:bookmark-title>12.3.4. Simplified Configuration - Summary</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Authentication-Handling_Security_Exceptions" starting-state="hide"><fo:bookmark-title>12.3.5. Handling Security Exceptions</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Authentication-Login_Redirection" starting-state="hide"><fo:bookmark-title>12.3.6. Login Redirection</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guid!
 e-Authentication-Advanced_Authentication_Features" starting-st!
 ate="hid
e"><fo:bookmark-title>12.3.7. Advanced Authentication Features</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-Advanced_Authentication_Features-Using_your_containers_JAAS_configuration" starting-state="hide"><fo:bookmark-title>12.3.7.1. Using your container's JAAS configuration</fo:bookmark-title></fo:bookmark></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Security-Error_Messages" starting-state="hide"><fo:bookmark-title>12.4. Error Messages</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Security-Authorization" starting-state="hide"><fo:bookmark-title>12.5. Authorization</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-Authorization-Core_concepts" starting-state="hide"><fo:bookmark-title>12.5.1. Core concepts</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Authorization-Securing_components" starting-!
 state="hide"><fo:bookmark-title>12.5.2. Securing components</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-Securing_components-The_Restrict_annotation" starting-state="hide"><fo:bookmark-title>12.5.2.1. The @Restrict annotation</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Securing_components-Inline_restrictions" starting-state="hide"><fo:bookmark-title>12.5.2.2. Inline restrictions</fo:bookmark-title></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Authorization-Security_in_the_user_interface" starting-state="hide"><fo:bookmark-title>12.5.3. Security in the user interface</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Authorization-Securing_pages" starting-state="hide"><fo:bookmark-title>12.5.4. Securing pages</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Authorization-Securing_En!
 tities" starting-state="hide"><fo:bookmark-title>12.5.5. Secu!
 ring Ent
ities</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-Securing_Entities-Entity_security_with_JPA" starting-state="hide"><fo:bookmark-title>12.5.5.1. Entity security with JPA</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Securing_Entities-Entity_security_with_Hibernate" starting-state="hide"><fo:bookmark-title>12.5.5.2. Entity security with Hibernate</fo:bookmark-title></fo:bookmark></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Security-Writing_Security_Rules" starting-state="hide"><fo:bookmark-title>12.6. Writing Security Rules</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-Writing_Security_Rules-Permissions_Overview" starting-state="hide"><fo:bookmark-title>12.6.1. Permissions Overview</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Writing_Security_Rules-Configuring_a_rules_file" starting-state=!
 "hide"><fo:bookmark-title>12.6.2. Configuring a rules file</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Writing_Security_Rules-Creating_a_security_rules_file" starting-state="hide"><fo:bookmark-title>12.6.3. Creating a security rules file</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-Creating_a_security_rules_file-Wildcard_permission_checks" starting-state="hide"><fo:bookmark-title>12.6.3.1. Wildcard permission checks</fo:bookmark-title></fo:bookmark></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Security-SSL_Security" starting-state="hide"><fo:bookmark-title>12.7. SSL Security</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Security-Implementing_a_Captcha_Test" starting-state="hide"><fo:bookmark-title>12.8. Implementing a Captcha Test</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-Implementin!
 g_a_Captcha_Test-Configuring_the_Captcha_Servlet" starting-sta!
 te="hide
"><fo:bookmark-title>12.8.1. Configuring the Captcha Servlet</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Implementing_a_Captcha_Test-Adding_a_Captcha_to_a_page" starting-state="hide"><fo:bookmark-title>12.8.2. Adding a Captcha to a page</fo:bookmark-title></fo:bookmark></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Internationalization_and_themes" starting-state="hide"><fo:bookmark-title>Chapter 13. Internationalization and themes</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-Internationalization_and_themes-Locales" starting-state="hide"><fo:bookmark-title>13.1. Locales</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Internationalization_and_themes-Labels" starting-state="hide"><fo:bookmark-title>13.2. Labels</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-Labels-Defining_labels" starting-stat!
 e="hide"><fo:bookmark-title>13.2.1. Defining labels</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Labels-Displaying_labels" starting-state="hide"><fo:bookmark-title>13.2.2. Displaying labels</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Labels-Faces_messages" starting-state="hide"><fo:bookmark-title>13.2.3. Faces messages</fo:bookmark-title></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Internationalization_and_themes-Timezones" starting-state="hide"><fo:bookmark-title>13.3. Timezones</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Internationalization_and_themes-Themes" starting-state="hide"><fo:bookmark-title>13.4. Themes</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Internationalization_and_themes-Persisting_locale_and_theme_preferences_via_cookies" starting-stat!
 e="hide"><fo:bookmark-title>13.5. Persisting locale and theme!
  prefere
nces via cookies</fo:bookmark-title></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_Text" starting-state="hide"><fo:bookmark-title>Chapter 14. Seam Text</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_Text-Basic_fomatting" starting-state="hide"><fo:bookmark-title>14.1. Basic fomatting</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_Text-Entering_code_and_text_with_special_characters" starting-state="hide"><fo:bookmark-title>14.2. Entering code and text with special characters</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_Text-Links" starting-state="hide"><fo:bookmark-title>14.3. Links</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_Text-Entering_HTML" starting-state="hide"><fo:bookmark-title>14.4. Entering HTML</fo:bookmark-title></fo:bookmark></fo:bookmark><f!
 o:bookmark internal-destination="Seam_Reference_Guide-iText_PDF_generation" starting-state="hide"><fo:bookmark-title>Chapter 15. iText PDF generation</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-iText_PDF_generation-Using_PDF_Support" starting-state="hide"><fo:bookmark-title>15.1. Using PDF Support</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-iText_PDF_generation-Creating_a_document" starting-state="hide"><fo:bookmark-title>15.2. Creating a document</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-Creating_a_document-pdocument" starting-state="hide"><fo:bookmark-title>15.2.1. p:document</fo:bookmark-title></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-iText_PDF_generation-Basic_Text_Elements" starting-state="hide"><fo:bookmark-title>15.3. Basic Text Elements</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-B!
 asic_Text_Elements-pparagraph" starting-state="hide"><fo:bookm!
 ark-titl
e>15.3.1. p:paragraph</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Basic_Text_Elements-ptext" starting-state="hide"><fo:bookmark-title>15.3.2. p:text</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Basic_Text_Elements-pfont" starting-state="hide"><fo:bookmark-title>15.3.3. p:font</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Basic_Text_Elements-pnewPage" starting-state="hide"><fo:bookmark-title>15.3.4. p:newPage</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Basic_Text_Elements-pimage" starting-state="hide"><fo:bookmark-title>15.3.5. p:image</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Basic_Text_Elements-panchor" starting-state="hide"><fo:bookmark-title>15.3.6. p:anchor</fo:bookmark-title></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="Seam_Re!
 ference_Guide-iText_PDF_generation-Headers_and_Footers" starting-state="hide"><fo:bookmark-title>15.4. Headers and Footers</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-Headers_and_Footers-pheader_and_pfooter" starting-state="hide"><fo:bookmark-title>15.4.1. p:header and p:footer</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Headers_and_Footers-ppageNumber" starting-state="hide"><fo:bookmark-title>15.4.2. p:pageNumber</fo:bookmark-title></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-iText_PDF_generation-Chapters_and_Sections" starting-state="hide"><fo:bookmark-title>15.5. Chapters and Sections</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-Chapters_and_Sections-pchapter_and_psection" starting-state="hide"><fo:bookmark-title>15.5.1. p:chapter and p:section</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Referen!
 ce_Guide-Chapters_and_Sections-ptitle" starting-state="hide"><!
 fo:bookm
ark-title>15.5.2. p:title</fo:bookmark-title></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-iText_PDF_generation-Lists" starting-state="hide"><fo:bookmark-title>15.6. Lists</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-Lists-plist" starting-state="hide"><fo:bookmark-title>15.6.1. p:list</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Lists-plistItem" starting-state="hide"><fo:bookmark-title>15.6.2. p:listItem</fo:bookmark-title></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-iText_PDF_generation-Tables" starting-state="hide"><fo:bookmark-title>15.7. Tables</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-Tables-ptable" starting-state="hide"><fo:bookmark-title>15.7.1. p:table</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Tables-pcell" starting-state="hide"><fo:b!
 ookmark-title>15.7.2. p:cell</fo:bookmark-title></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-iText_PDF_generation-Document_Constants" starting-state="hide"><fo:bookmark-title>15.8. Document Constants</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-Document_Constants-Color_Values" starting-state="hide"><fo:bookmark-title>15.8.1. Color Values</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Document_Constants-Alignment_Values" starting-state="hide"><fo:bookmark-title>15.8.2. Alignment Values</fo:bookmark-title></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-iText_PDF_generation-Configuring_iText" starting-state="hide"><fo:bookmark-title>15.9. Configuring iText</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-iText_PDF_generation-iText_links" starting-state="hide"><fo:bookmark-title>15.10. iT!
 ext links</fo:bookmark-title></fo:bookmark></fo:bookmark><fo:b!
 ookmark 
internal-destination="Seam_Reference_Guide-Email" starting-state="hide"><fo:bookmark-title>Chapter 16. Email</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-Email-Creating_a_message" starting-state="hide"><fo:bookmark-title>16.1. Creating a message</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-Creating_a_message-Attachments" starting-state="hide"><fo:bookmark-title>16.1.1. Attachments</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Creating_a_message-HTMLText_alternative_part" starting-state="hide"><fo:bookmark-title>16.1.2. HTML/Text alternative part</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Creating_a_message-Multiple_recipients" starting-state="hide"><fo:bookmark-title>16.1.3. Multiple recipients</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Creating_a_message-Multiple_messages" sta!
 rting-state="hide"><fo:bookmark-title>16.1.4. Multiple messages</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Creating_a_message-Templating" starting-state="hide"><fo:bookmark-title>16.1.5. Templating</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Creating_a_message-Internationalisation" starting-state="hide"><fo:bookmark-title>16.1.6. Internationalisation</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Creating_a_message-Other_Headers" starting-state="hide"><fo:bookmark-title>16.1.7. Other Headers</fo:bookmark-title></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Email-Receiving_emails" starting-state="hide"><fo:bookmark-title>16.2. Receiving emails</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Email-Configuration" starting-state="hide"><fo:bookmark-title>16.3. Conf!
 iguration</fo:bookmark-title><fo:bookmark internal-destination!
 ="Seam_R
eference_Guide-Configuration-mailSession" starting-state="hide"><fo:bookmark-title>16.3.1. mailSession</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-mailSession-JNDI_lookup_in_JBoss_AS" starting-state="hide"><fo:bookmark-title>16.3.1.1. JNDI lookup in JBoss AS</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-mailSession-Seam_configured_Session" starting-state="hide"><fo:bookmark-title>16.3.1.2. Seam configured Session</fo:bookmark-title></fo:bookmark></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Email-Tags" starting-state="hide"><fo:bookmark-title>16.4. Tags</fo:bookmark-title></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Asynchronicity_and_messaging" starting-state="hide"><fo:bookmark-title>Chapter 17. Asynchronicity and messaging</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-Asynchronicity_and_me!
 ssaging-Asynchronicity" starting-state="hide"><fo:bookmark-title>17.1. Asynchronicity</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-Asynchronicity-Asynchronous_methods" starting-state="hide"><fo:bookmark-title>17.1.1. Asynchronous methods</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Asynchronicity-Asynchronous_events" starting-state="hide"><fo:bookmark-title>17.1.2. Asynchronous events</fo:bookmark-title></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Asynchronicity_and_messaging-Messaging_in_Seam" starting-state="hide"><fo:bookmark-title>17.2. Messaging in Seam</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-Messaging_in_Seam-Configuration" starting-state="hide"><fo:bookmark-title>17.2.1. Configuration</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Messaging_in_Seam-Sending_messages" starting-!
 state="hide"><fo:bookmark-title>17.2.2. Sending messages</fo:!
 bookmark
-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Messaging_in_Seam-Receiving_messages_using_a_message_driven_bean" starting-state="hide"><fo:bookmark-title>17.2.3. Receiving messages using a message-driven bean</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Messaging_in_Seam-Receiving_messages_in_the_client" starting-state="hide"><fo:bookmark-title>17.2.4. Receiving messages in the client</fo:bookmark-title></fo:bookmark></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="cache" starting-state="hide"><fo:bookmark-title>Chapter 18. Caching</fo:bookmark-title><fo:bookmark internal-destination="id2673797" starting-state="hide"><fo:bookmark-title>18.1. Using JBossCache in Seam</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="id3092922" starting-state="hide"><fo:bookmark-title>18.2. Page fragment caching</fo:bookmark-title></fo:bookmark></fo:bookmark><fo:bookmark internal-des!
 tination="Seam_Reference_Guide-Remoting" starting-state="hide"><fo:bookmark-title>Chapter 19. Remoting</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-Remoting-Configuration" starting-state="hide"><fo:bookmark-title>19.1. Configuration</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Remoting-The_Seam_object" starting-state="hide"><fo:bookmark-title>19.2. The "Seam" object</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-The_Seam_object-A_Hello_World_example" starting-state="hide"><fo:bookmark-title>19.2.1. A Hello World example</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-The_Seam_object-Seam.Component" starting-state="hide"><fo:bookmark-title>19.2.2. Seam.Component</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-Seam.Component-Seam.Component.newInstance" starting-state="hide"><fo:bookmark-title>19.2.2.1.Â!
  Seam.Component.newInstance()</fo:bookmark-title></fo:bookmark!
 ><fo:boo
kmark internal-destination="Seam_Reference_Guide-Seam.Component-Seam.Component.getInstance" starting-state="hide"><fo:bookmark-title>19.2.2.2. Seam.Component.getInstance()</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Seam.Component-Seam.Component.getComponentName" starting-state="hide"><fo:bookmark-title>19.2.2.3. Seam.Component.getComponentName()</fo:bookmark-title></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-The_Seam_object-Seam.Remoting" starting-state="hide"><fo:bookmark-title>19.2.3. Seam.Remoting</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-Seam.Remoting-Seam.Remoting.createType" starting-state="hide"><fo:bookmark-title>19.2.3.1. Seam.Remoting.createType()</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Seam.Remoting-Seam.Remoting.getTypeName" starting-state="hide"><fo:bookmark-title>19.2.3.2. Seam.Remoting.getTy!
 peName()</fo:bookmark-title></fo:bookmark></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Remoting-Client_Interfaces" starting-state="hide"><fo:bookmark-title>19.3. Client Interfaces</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Remoting-The_Context" starting-state="hide"><fo:bookmark-title>19.4. The Context</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-The_Context-Setting_and_reading_the_Conversation_ID" starting-state="hide"><fo:bookmark-title>19.4.1. Setting and reading the Conversation ID</fo:bookmark-title></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Remoting-Batch_Requests" starting-state="hide"><fo:bookmark-title>19.5. Batch Requests</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Remoting-Working_with_Data_types" starting-state="hide"><fo:bookmark-title>19.6. Working with Data!
  types</fo:bookmark-title><fo:bookmark internal-destination="S!
 eam_Refe
rence_Guide-Working_with_Data_types-Primitives__Basic_Types" starting-state="hide"><fo:bookmark-title>19.6.1. Primitives / Basic Types</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-Primitives__Basic_Types-String" starting-state="hide"><fo:bookmark-title>19.6.1.1. String</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Primitives__Basic_Types-Number" starting-state="hide"><fo:bookmark-title>19.6.1.2. Number</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Primitives__Basic_Types-Boolean" starting-state="hide"><fo:bookmark-title>19.6.1.3. Boolean</fo:bookmark-title></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Working_with_Data_types-JavaBeans" starting-state="hide"><fo:bookmark-title>19.6.2. JavaBeans</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Working_with_Data_types-Dates_and_Time!
 s" starting-state="hide"><fo:bookmark-title>19.6.3. Dates and Times</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Working_with_Data_types-Enums" starting-state="hide"><fo:bookmark-title>19.6.4. Enums</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Working_with_Data_types-Collections" starting-state="hide"><fo:bookmark-title>19.6.5. Collections</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-Collections-Bags" starting-state="hide"><fo:bookmark-title>19.6.5.1. Bags</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Collections-Maps" starting-state="hide"><fo:bookmark-title>19.6.5.2. Maps</fo:bookmark-title></fo:bookmark></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Remoting-Debugging" starting-state="hide"><fo:bookmark-title>19.7. Debugging</fo:bookmark-title></fo:bookmark><fo:bookmark !
 internal-destination="Seam_Reference_Guide-Remoting-The_Loadin!
 g_Messag
e" starting-state="hide"><fo:bookmark-title>19.8. The Loading Message</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-The_Loading_Message-Changing_the_message" starting-state="hide"><fo:bookmark-title>19.8.1. Changing the message</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-The_Loading_Message-Hiding_the_loading_message" starting-state="hide"><fo:bookmark-title>19.8.2. Hiding the loading message</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-The_Loading_Message-A_Custom_Loading_Indicator" starting-state="hide"><fo:bookmark-title>19.8.3. A Custom Loading Indicator</fo:bookmark-title></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Remoting-Controlling_what_data_is_returned" starting-state="hide"><fo:bookmark-title>19.9. Controlling what data is returned</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guid!
 e-Controlling_what_data_is_returned-Constraining_normal_fields" starting-state="hide"><fo:bookmark-title>19.9.1. Constraining normal fields</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Controlling_what_data_is_returned-Constraining_Maps_and_Collections" starting-state="hide"><fo:bookmark-title>19.9.2. Constraining Maps and Collections</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Controlling_what_data_is_returned-Constraining_objects_of_a_specific_type" starting-state="hide"><fo:bookmark-title>19.9.3. Constraining objects of a specific type</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Controlling_what_data_is_returned-Combining_Constraints" starting-state="hide"><fo:bookmark-title>19.9.4. Combining Constraints</fo:bookmark-title></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Remoting-JMS_Messaging" starti!
 ng-state="hide"><fo:bookmark-title>19.10. JMS Messaging</fo:b!
 ookmark-
title><fo:bookmark internal-destination="Seam_Reference_Guide-JMS_Messaging-Configuration" starting-state="hide"><fo:bookmark-title>19.10.1. Configuration</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-JMS_Messaging-Subscribing_to_a_JMS_Topic" starting-state="hide"><fo:bookmark-title>19.10.2. Subscribing to a JMS Topic</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-JMS_Messaging-Unsubscribing_from_a_Topic" starting-state="hide"><fo:bookmark-title>19.10.3. Unsubscribing from a Topic</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-JMS_Messaging-Tuning_the_Polling_Process" starting-state="hide"><fo:bookmark-title>19.10.4. Tuning the Polling Process</fo:bookmark-title></fo:bookmark></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Spring_Framework_integration" starting-state="hide"><fo:bookmark-title>Chapter 20. Spri!
 ng Framework integration</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-Spring_Framework_integration-Injecting_Seam_components_into_Spring_beans" starting-state="hide"><fo:bookmark-title>20.1. Injecting Seam components into Spring beans</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Spring_Framework_integration-Injecting_Spring_beans_into_Seam_components" starting-state="hide"><fo:bookmark-title>20.2. Injecting Spring beans into Seam components</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Spring_Framework_integration-Making_a_Spring_bean_into_a_Seam_component" starting-state="hide"><fo:bookmark-title>20.3. Making a Spring bean into a Seam component</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Spring_Framework_integration-Seam_scoped_Spring_beans" starting-state="hide"><fo:bookmark-title>20.4. Seam-scoped Spring bea!
 ns</fo:bookmark-title></fo:bookmark><fo:bookmark internal-dest!
 ination=
"Seam_Reference_Guide-Spring_Framework_integration-Spring_Application_Context_as_a_Seam_Component" starting-state="hide"><fo:bookmark-title>20.5. Spring Application Context as a Seam Component</fo:bookmark-title></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications" starting-state="hide"><fo:bookmark-title>Chapter 21. Configuring Seam and packaging Seam applications</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Basic_Seam_configuration" starting-state="hide"><fo:bookmark-title>21.1. Basic Seam configuration</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-Basic_Seam_configuration-Integrating_Seam_with_JSF_and_your_servlet_container" starting-state="hide"><fo:bookmark-title>21.1.1. Integrating Seam with JSF and your servlet container</fo:bookmark-title></fo:bookmark><fo:bookmark internal-des!
 tination="Seam_Reference_Guide-Basic_Seam_configuration-Seam_Resource_Servlet" starting-state="hide"><fo:bookmark-title>21.1.2. Seam Resource Servlet</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Basic_Seam_configuration-Seam_servlet_filters" starting-state="hide"><fo:bookmark-title>21.1.3. Seam servlet filters</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_servlet_filters-Exception_handling" starting-state="hide"><fo:bookmark-title>21.1.3.1. Exception handling</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_servlet_filters-Conversation_propagation_with_redirects" starting-state="hide"><fo:bookmark-title>21.1.3.2. Conversation propagation with redirects</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_servlet_filters-Multipart_form_submissions" starting-state="hide"><fo:bookmark-title>21.1.3.3. Multipart !
 form submissions</fo:bookmark-title></fo:bookmark><fo:bookmark!
  interna
l-destination="Seam_Reference_Guide-Seam_servlet_filters-Character_encoding" starting-state="hide"><fo:bookmark-title>21.1.3.4. Character encoding</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_servlet_filters-Context_management_for_custom_servlets" starting-state="hide"><fo:bookmark-title>21.1.3.5. Context management for custom servlets</fo:bookmark-title></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Basic_Seam_configuration-Integrating_Seam_with_your_EJB_container" starting-state="hide"><fo:bookmark-title>21.1.4. Integrating Seam with your EJB container</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Basic_Seam_configuration-Using_facelets" starting-state="hide"><fo:bookmark-title>21.1.5. Using facelets</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Basic_Seam_configuration-Dont_forget" starting-state="h!
 ide"><fo:bookmark-title>21.1.6. Don't forget!</fo:bookmark-title></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_EE_5" starting-state="hide"><fo:bookmark-title>21.2. Configuring Seam in Java EE 5</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-Configuring_Seam_in_Java_EE_5-Packaging" starting-state="hide"><fo:bookmark-title>21.2.1. Packaging</fo:bookmark-title></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container" starting-state="hide"><fo:bookmark-title>21.3. Configuring Seam in Java SE, with the JBoss Embeddable EJB3 container</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container-Installing_the_Embed!
 dable_EJB3_container" starting-state="hide"><fo:bookmark-title!
 >21.3.1.
 Installing the Embeddable EJB3 container</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container-Configuring_a_datasource_with_the_Embeddable_EJB3_container" starting-state="hide"><fo:bookmark-title>21.3.2. Configuring a datasource with the Embeddable EJB3 container</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container-Packaging" starting-state="hide"><fo:bookmark-title>21.3.3. Packaging</fo:bookmark-title></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_J2EE" starting-state="hide"><fo:bookmark-title>21.4. Configuring Seam in J2EE</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-Configuring_Seam_in_J2EE-Boostrapping_Hibernate_in_Seam" start!
 ing-state="hide"><fo:bookmark-title>21.4.1. Boostrapping Hibernate in Seam</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Configuring_Seam_in_J2EE-Boostrapping_JPA_in_Seam" starting-state="hide"><fo:bookmark-title>21.4.2. Boostrapping JPA in Seam</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Configuring_Seam_in_J2EE-Packaging" starting-state="hide"><fo:bookmark-title>21.4.3. Packaging</fo:bookmark-title></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_SE_with_the_JBoss_Microcontainer" starting-state="hide"><fo:bookmark-title>21.5. Configuring Seam in Java SE, with the JBoss Microcontainer</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Microcontainer-Using_Hibernate_and_the_JBoss_Microcontainer" starting-state=!
 "hide"><fo:bookmark-title>21.5.1. Using Hibernate and the JBo!
 ss Micro
container</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Microcontainer-Packaging" starting-state="hide"><fo:bookmark-title>21.5.2. Packaging</fo:bookmark-title></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_jBPM_in_Seam" starting-state="hide"><fo:bookmark-title>21.6. Configuring jBPM in Seam</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-Configuring_jBPM_in_Seam-Packaging" starting-state="hide"><fo:bookmark-title>21.6.1. Packaging</fo:bookmark-title></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_a_Portal" starting-state="hide"><fo:bookmark-title>21.7. Configuring Seam in a Portal</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Referen!
 ce_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_SFSB_and_Session_Timeouts_in_JBoss_AS" starting-state="hide"><fo:bookmark-title>21.8. Configuring SFSB and Session Timeouts in JBoss AS</fo:bookmark-title></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_annotations" starting-state="hide"><fo:bookmark-title>Chapter 22. Seam annotations</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_annotations-Annotations_for_component_definition" starting-state="hide"><fo:bookmark-title>22.1. Annotations for component definition</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_annotations-Annotations_for_bijection" starting-state="hide"><fo:bookmark-title>22.2. Annotations for bijection</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_annotations-Annotations_for_component_lifecycle_methods" starting-state=!
 "hide"><fo:bookmark-title>22.3. Annotations for component lif!
 ecycle m
ethods</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_annotations-Annotations_for_context_demarcation" starting-state="hide"><fo:bookmark-title>22.4. Annotations for context demarcation</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_annotations-Annotations_for_transaction_demarcation" starting-state="hide"><fo:bookmark-title>22.5. Annotations for transaction demarcation</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_annotations-Annotations_for_exceptions" starting-state="hide"><fo:bookmark-title>22.6. Annotations for exceptions</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_annotations-Annotations_for_validation" starting-state="hide"><fo:bookmark-title>22.7. Annotations for validation</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_annotati!
 ons-Annotations_for_Seam_Remoting" starting-state="hide"><fo:bookmark-title>22.8. Annotations for Seam Remoting</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_annotations-Annotations_for_Seam_interceptors" starting-state="hide"><fo:bookmark-title>22.9. Annotations for Seam interceptors</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_annotations-Annotations_for_asynchronicity" starting-state="hide"><fo:bookmark-title>22.10. Annotations for asynchronicity</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_annotations-Annotations_for_use_with_JSF_dataTable" starting-state="hide"><fo:bookmark-title>22.11. Annotations for use with JSF dataTable</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_annotations-Meta_annotations_for_databinding" starting-state="hide"><fo:bookmark-title>22.12. Meta-annota!
 tions for databinding</fo:bookmark-title></fo:bookmark><fo:boo!
 kmark in
ternal-destination="Seam_Reference_Guide-Seam_annotations-Annotations_for_packaging" starting-state="hide"><fo:bookmark-title>22.13. Annotations for packaging</fo:bookmark-title></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="components" starting-state="hide"><fo:bookmark-title>Chapter 23. Built-in Seam components</fo:bookmark-title><fo:bookmark internal-destination="id2824946" starting-state="hide"><fo:bookmark-title>23.1. Context injection components</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="id3806725" starting-state="hide"><fo:bookmark-title>23.2. Utility components</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="id2707818" starting-state="hide"><fo:bookmark-title>23.3. Components for internationalization and themes</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="id2653066" starting-state="hide"><fo:bookmark-title>23.4. Components for controlling conversations</fo:bookmark-title></fo:b!
 ookmark><fo:bookmark internal-destination="id3774101" starting-state="hide"><fo:bookmark-title>23.5. jBPM-related components</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="id2767160" starting-state="hide"><fo:bookmark-title>23.6. Security-related components</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="id2767223" starting-state="hide"><fo:bookmark-title>23.7. JMS-related components</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="components.mail" starting-state="hide"><fo:bookmark-title>23.8. Mail-related components</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="id2821366" starting-state="hide"><fo:bookmark-title>23.9. Infrastructural components</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="id2793927" starting-state="hide"><fo:bookmark-title>23.10. Miscellaneous components</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="id2794027" starting-state!
 ="hide"><fo:bookmark-title>23.11. Special components</fo:book!
 mark-tit
le></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_JSF_controls" starting-state="hide"><fo:bookmark-title>Chapter 24. Seam JSF controls</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Expression_language_enhancements" starting-state="hide"><fo:bookmark-title>Chapter 25. Expression language enhancements</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-Expression_language_enhancements-Configuration" starting-state="hide"><fo:bookmark-title>25.1. Configuration</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Expression_language_enhancements-Usage" starting-state="hide"><fo:bookmark-title>25.2. Usage</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Expression_language_enhancements-Limitations" starting-state="hide"><fo:bookmark-title>25.3. Limitations</fo:bookmark-title><fo:bookmark inte!
 rnal-destination="Seam_Reference_Guide-Limitations-Incompatibility_with_JSP_2.1" starting-state="hide"><fo:bookmark-title>25.3.1. Incompatibility with JSP 2.1</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Limitations-Calling_a_MethodExpression_from_Java_code" starting-state="hide"><fo:bookmark-title>25.3.2. Calling a MethodExpression from Java code</fo:bookmark-title></fo:bookmark></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Testing_Seam_applications" starting-state="hide"><fo:bookmark-title>Chapter 26. Testing Seam applications</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-Testing_Seam_applications-Unit_testing_Seam_components" starting-state="hide"><fo:bookmark-title>26.1. Unit testing Seam components</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Testing_Seam_applications-Integration_testing_Seam_applications" start!
 ing-state="hide"><fo:bookmark-title>26.2. Integration testing!
  Seam ap
plications</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-Integration_testing_Seam_applications-Using_mocks_in_integration_tests" starting-state="hide"><fo:bookmark-title>26.2.1. Using mocks in integration tests</fo:bookmark-title></fo:bookmark></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_tools" starting-state="hide"><fo:bookmark-title>Chapter 27. Seam tools</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_tools-jBPM_designer_and_viewer" starting-state="hide"><fo:bookmark-title>27.1. jBPM designer and viewer</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-jBPM_designer_and_viewer-Business_process_designer" starting-state="hide"><fo:bookmark-title>27.1.1. Business process designer</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-jBPM_designer_and_viewer-Pageflow_viewer" starting-state="hide"><fo:bookmark!
 -title>27.1.2. Pageflow viewer</fo:bookmark-title></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Seam_tools-CRUD_application_generator" starting-state="hide"><fo:bookmark-title>27.2. CRUD-application generator</fo:bookmark-title><fo:bookmark internal-destination="Seam_Reference_Guide-CRUD_application_generator-Creating_a_Hibernate_configuration_file" starting-state="hide"><fo:bookmark-title>27.2.1. Creating a Hibernate configuration file</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-CRUD_application_generator-Creating_a_Hibernate_Console_configuration" starting-state="hide"><fo:bookmark-title>27.2.2. Creating a Hibernate Console configuration</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-CRUD_application_generator-Reverse_engineering_and_code_generation" starting-state="hide"><fo:bookmark-title>27.2.3. Reverse engineering and code generation</fo:bo!
 okmark-title><fo:bookmark internal-destination="Seam_Reference!
 _Guide-R
everse_engineering_and_code_generation-Code_Generation_Launcher" starting-state="hide"><fo:bookmark-title>27.2.3.1. Code Generation Launcher</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Reverse_engineering_and_code_generation-Exporters" starting-state="hide"><fo:bookmark-title>27.2.3.2. Exporters</fo:bookmark-title></fo:bookmark><fo:bookmark internal-destination="Seam_Reference_Guide-Reverse_engineering_and_code_generation-Generating_and_using_the_code" starting-state="hide"><fo:bookmark-title>27.2.3.3. Generating and using the code</fo:bookmark-title></fo:bookmark></fo:bookmark></fo:bookmark></fo:bookmark><fo:bookmark internal-destination="appe-Publican-Revision_History" starting-state="hide"><fo:bookmark-title>Appendix A. Revision History</fo:bookmark-title></fo:bookmark></fo:bookmark-tree><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="titlepage" language="en!
 " format="1" initial-page-number="1" force-page-count="end-on-even" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"/></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="!
 start" display-align="before" relative-align="baseline"><fo:bl!
 ock/></f
o:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always"><fo:retrieve-marker retrieve-class-name="section.head.marker" retrieve-position="first-including-carryover" retrieve-boundary="page-sequence"/></fo:inline></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column c!
 olumn-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always" font-weight="bold">Seam Reference Guide CP07</fo:inline></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-wi!
 dth="proportional-column-width(1)"/><fo:table-column column-nu!
 mber="2"
 column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-footnote-separator"><fo:block><fo:leader color="black" leader-pattern="rule" leader-length="1in"/></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"/></fo:static-content><fo:static-content flow-name="xsl-region-after-odd"><fo:bloc!
 k font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-con!
 tent flow-name="xsl-region-after-even"><fo:block font-family="!
 Liberati
on Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-regi!
 on-after-blank"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:stati!
 c-content><fo:flow flow-name="xsl-region-body"><fo:block id="i!
 d4192237
"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions"><fo:block><fo:block text-align="center" font-size="34pt" space-before="18.6624pt" font-weight="bold" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" color="#a70000">JBoss Enterprise Application Platform 4.3</fo:block><fo:block text-align="center" font-size="34pt" space-before="18.6624pt" font-weight="bold" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" color="#a70000"><fo:block keep-with-next.within-column="always" hyphenate="false">Seam Reference Guide CP07</fo:block></fo:block><fo:block text-align="center" font-size="14pt" space-before="30pt" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" color="#a70000" font-weight="bold">for Use with JBoss Enterprise Application Platform 4.3 Cumulative Patch 7</fo:block><fo:block font-size="17.28pt" keep-with-next.within-column="always" space-before="2in" font-family="Liberation Sans,sans-!
 serif,Symbol,ZapfDingbats" color="#a70000" font-weight="bold" text-align="center"><fo:block>
+		<fo:external-graphic src="url(Common_Content/images/redhat-logo.svg)" width="auto" height="auto" content-width="auto" content-height="auto" content-type="content-type:image/svg+xml"/>
+	</fo:block></fo:block><fo:block font-size="14pt" space-before="15.552pt" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" color="#a70000" font-weight="bold" text-align="center">Written By: Gavin King, Christian Bauer, Norman Richards, Shane Bryzak, Pete Muir, Emmanuel Bernard, Max Andersen, Michael Youngstrom, Thomas Heute, Michael Yuan</fo:block><fo:block color="black" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" font-weight="bold" font-size="12pt" text-align="center"/></fo:block><fo:block break-after="page"/><fo:block><fo:block font-size="14.4pt" font-weight="bold" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats">JBoss Enterprise Application Platform 4.3 Seam Reference Guide CP07<fo:block padding-bottom="24pt">for Use with JBoss Enterprise Application Platform 4.3 Cumulative Patch 7<fo:block>Edition 2.0</fo:block></fo:block></fo:block><fo:block font-size="10pt"><fo:table table-layout="fixed" width="100%"><fo:table-column column-num!
 ber="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row><fo:table-cell><fo:block>Author</fo:block></fo:table-cell><fo:table-cell><fo:block>Written By: Gavin King, Christian Bauer, Norman Richards, Shane Bryzak, Pete Muir, Emmanuel Bernard, Max Andersen, Michael Youngstrom, Thomas Heute, Michael Yuan</fo:block></fo:table-cell><fo:table-cell><fo:block/></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell><fo:block/></fo:table-cell><fo:table-cell><fo:block>Japanese Translation: Fusayuki Minamoto, Takayoshi Kimura, Takayoshi Osawa, Reiko Ohtsuka, Syunpei Shiraishi, Toshiya Kobayashi, Shigeaki Wakizaka, Ken Yamada, Noriko Mizumoto</fo:block></fo:table-cell><fo:table-cell><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block><fo:block font-size="10pt">Copyright <fo!
 :inline font-family="serif">©</fo:inline> 2009 Red Hat, Inc</!
 fo:block
><fo:block padding-top="12pt" padding-bottom="24pt" font-size="10pt"><fo:block id="id2970487"><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Copyright <fo:inline font-family="serif">©</fo:inline> 2009 Red Hat, Inc. This material may only be distributed subject to the terms and conditions set forth in the Open Publication License, V1.0, (the latest version is presently available at <fo:basic-link external-destination="url(http://www.opencontent.org/openpub/)" font-style="italic" color="#0066cc">http://www.opencontent.org/openpub/</fo:basic-link>).
+	</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Red Hat, Red Hat Enterprise Linux, the Shadowman logo, JBoss, MetaMatrix, Fedora, the Infinity Logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
+	</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Linux<fo:inline font-family="serif">®</fo:inline> is the registered trademark of Linus Torvalds in the United States and other countries.
+	</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		All other trademarks are the property of their respective owners.
+	</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		<fo:block wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true">
+			1801 Varsity Drive
+			Raleigh, NC 27606-2072 USA
+			Phone: +1 919 754 3700
+			Phone: 888 733 4281
+			Fax: +1 919 754 3701
+			PO Box 13588 Research Triangle Park, NC 27709 USA
+		</fo:block>
+	</fo:block></fo:block></fo:block></fo:block><fo:block><fo:block start-indent="0.0in" end-indent="0.0in"><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+This book is a Reference Guide to Seam 1.2 for JBoss Enterprise
+Application Platform 4.3.
+</fo:block></fo:block></fo:block><fo:block break-after="page"/></fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="lot" language="en" format="i" initial-page-number="auto-odd" force-page-count="end-on-even" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row blo!
 ck-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-bo!
 dy><fo:table-row block-progression-dimension.minimum="14pt"><f!
 o:table-
cell text-align="start" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always"><fo:retrieve-marker retrieve-class-name="section.head.marker" retrieve-position="first-including-carryover" retrieve-boundary="page-sequence"/></fo:inline></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-c!
 olumn column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always" font-weight="bold">Seam Reference Guide CP07</fo:inline></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom!
 -style="solid" border-bottom-color="black"><fo:table-column co!
 lumn-num
ber="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-footnote-separator"><fo:block><fo:leader color="black" leader-pattern="rule" leader-length="1in"/></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left=!
 "0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-odd"><fo:block !
 font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" m!
 argin-le
ft="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-even"><fo:blo!
 ck font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:s!
 tatic-content><fo:static-content flow-name="xsl-region-after-b!
 lank"><f
o:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></!
 fo:static-content><fo:flow flow-name="xsl-region-body" start-indent="0pt" end-indent="0pt"><fo:block id="toc...id4192237" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="left" space-before.minimum="6pt" space-before.optimum="6pt" space-before.maximum="8pt" font-weight="bold"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Feedback">1. Feedback</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="use-content" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always" white-space-collapse="false"> </fo:leader> <fo:basic-link internal-destination="Feedba!
 ck" text-align="right"><fo:page-number-citation ref-id="Feedba!
 ck"/></f
o:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="left" space-before.minimum="6pt" space-before.optimum="6pt" space-before.maximum="8pt" font-weight="bold"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Introduction_to_JBoss_Seam">Introduction to JBoss Seam</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="use-content" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always" white-space-collapse="false"> </fo:leader> <fo:basic-link internal-destination="Seam_Reference_Guide-Introduction_to_JBoss_Seam" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Introduction_to_JBoss_Seam"/></fo:basic-link></fo:inline></fo:block><fo:block xm!
 lns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="left" space-before.minimum="6pt" space-before.optimum="6pt" space-before.maximum="8pt" font-weight="bold"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Seam_Tutorial">2. Seam Tutorial</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="use-content" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always" white-space-collapse="false"> </fo:leader> <fo:basic-link internal-destination="Seam_Reference_Guide-Seam_Tutorial" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Seam_Tutorial"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-Seam_Tutorial" margin-left="24pt"><fo:block xmlns="http://w!
 ww.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx!
 .com/XSL
/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Seam_Tutorial-Try_the_examples">2.1. Try the examples</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Seam_Tutorial-Try_the_examples" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Seam_Tutorial-Try_the_examples"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-Seam_Tutorial-Try_the_examples" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" tex!
 t-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Try_the_examples-Running_the_examples_on_JBoss_AS">2.1.1. Running the examples on JBoss Enterprise Application Platform</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Try_the_examples-Running_the_examples_on_JBoss_AS" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Try_the_examples-Running_the_examples_on_JBoss_AS"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link intern!
 al-destination="Seam_Reference_Guide-Try_the_examples-Running_!
 the_exam
ples_on_Tomcat">2.1.2. Running the examples on Tomcat</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Try_the_examples-Running_the_examples_on_Tomcat" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Try_the_examples-Running_the_examples_on_Tomcat"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Try_the_examples-Running_the_example_tests">2.1.3. Running the example tests</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:!
 leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Try_the_examples-Running_the_example_tests" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Try_the_examples-Running_the_example_tests"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Seam_Tutorial-Your_first_Seam_application_the_registration_example">2.2. Your first Seam application: the registration example</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="refere!
 nce-area" keep-with-next.within-line="always"/> <fo:basic-link!
  interna
l-destination="Seam_Reference_Guide-Seam_Tutorial-Your_first_Seam_application_the_registration_example" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Seam_Tutorial-Your_first_Seam_application_the_registration_example"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-Seam_Tutorial-Your_first_Seam_application_the_registration_example" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Your_first_Seam_application_the_registration_example-Understanding_the_code">2.2.1. Understanding the code</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="refe!
 rence-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Your_first_Seam_application_the_registration_example-Understanding_the_code" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Your_first_Seam_application_the_registration_example-Understanding_the_code"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Your_first_Seam_application_the_registration_example-How_it_works">2.2.2. How it works</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link !
 internal-destination="Seam_Reference_Guide-Your_first_Seam_app!
 lication
_the_registration_example-How_it_works" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Your_first_Seam_application_the_registration_example-How_it_works"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Seam_Tutorial-Clickable_lists_in_Seam_the_messages_example">2.3. Clickable lists in Seam: the messages example</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Seam_Tutorial-Clickable_lists_in_Seam_the_messages_example" text-align="right"!
 ><fo:page-number-citation ref-id="Seam_Reference_Guide-Seam_Tutorial-Clickable_lists_in_Seam_the_messages_example"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-Seam_Tutorial-Clickable_lists_in_Seam_the_messages_example" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Clickable_lists_in_Seam_the_messages_example-Understanding_the_code">2.3.1. Understanding the code</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Clickable_lists_in_Seam_the_messages_!
 example-Understanding_the_code" text-align="right"><fo:page-nu!
 mber-cit
ation ref-id="Seam_Reference_Guide-Clickable_lists_in_Seam_the_messages_example-Understanding_the_code"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Clickable_lists_in_Seam_the_messages_example-How_it_works">2.3.2. How it works</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Clickable_lists_in_Seam_the_messages_example-How_it_works" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Clickable_lists_in_Seam_the_messages_example-How_it_works"/></fo:!
 basic-link></fo:inline></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Seam_Tutorial-Seam_and_jBPM_the_todo_list_example">2.4. Seam and jBPM: the todo list example</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Seam_Tutorial-Seam_and_jBPM_the_todo_list_example" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Seam_Tutorial-Seam_and_jBPM_the_todo_list_example"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-Seam_Tutorial-Sea!
 m_and_jBPM_the_todo_list_example" margin-left="24pt"><fo:block!
  xmlns="
http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Seam_and_jBPM_the_todo_list_example-Understanding_the_code">2.4.1. Understanding the code</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Seam_and_jBPM_the_todo_list_example-Understanding_the_code" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Seam_and_jBPM_the_todo_list_example-Understanding_the_code"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensi!
 ons" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Seam_Tutorial-Seam_pageflow_the_numberguess_example">2.5. Seam pageflow: the numberguess example</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Seam_Tutorial-Seam_pageflow_the_numberguess_example" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Seam_Tutorial-Seam_pageflow_the_numberguess_example"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-Seam_Tutorial-Seam_pageflow_the_numberguess_example" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.rende!
 rx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent=!
 "-24pt" 
text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Seam_pageflow_the_numberguess_example-Understanding_the_code">2.5.1. Understanding the code</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Seam_pageflow_the_numberguess_example-Understanding_the_code" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Seam_pageflow_the_numberguess_example-Understanding_the_code"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-li!
 ne="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Seam_Tutorial-A_complete_Seam_application_the_Hotel_Booking_example">2.6. A complete Seam application: the Hotel Booking example</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Seam_Tutorial-A_complete_Seam_application_the_Hotel_Booking_example" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Seam_Tutorial-A_complete_Seam_application_the_Hotel_Booking_example"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-Seam_Tutorial-A_complete_Seam_application_the_Hotel_Booking_example" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-e!
 nd-indent="-24pt" text-align-last="justify" text-align="start"!
 ><fo:inl
ine keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-Introduction">2.6.1. Introduction</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-Introduction" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-Introduction"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_R!
 eference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-Overview_of_the_booking_example">2.6.2. Overview of the booking example</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-Overview_of_the_booking_example" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-Overview_of_the_booking_example"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Referen!
 ce_Guide-A_complete_Seam_application_the_Hotel_Booking_example!
 -Underst
anding_Seam_conversations">2.6.3. Understanding Seam conversations</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-Understanding_Seam_conversations" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-Understanding_Seam_conversations"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-The_Seam_U!
 I_control_library">2.6.4. The Seam UI control library</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-The_Seam_UI_control_library" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-The_Seam_UI_control_library"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-The_Seam_Debug_Page">2.6.5. The !
 Seam Debug Page</fo:basic-link></fo:inline><fo:inline keep-tog!
 ether.wi
thin-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-The_Seam_Debug_Page" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-The_Seam_Debug_Page"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Seam_Tutorial-A_complete_application_featuring_Seam_and_jBPM_the_DVD_Store_example">2.7. A complete application featuring Seam and jBPM: the DVD Store example</fo:basic-link></fo:inline><fo:inline kee!
 p-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Seam_Tutorial-A_complete_application_featuring_Seam_and_jBPM_the_DVD_Store_example" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Seam_Tutorial-A_complete_application_featuring_Seam_and_jBPM_the_DVD_Store_example"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Seam_Tutorial-A_complete_application_featuring_Seam_workspace_management_the_Issue_Tracker_example">2.8. A complete application featuring Seam workspace management: the Issue Trac!
 ker example</fo:basic-link></fo:inline><fo:inline keep-togethe!
 r.within
-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Seam_Tutorial-A_complete_application_featuring_Seam_workspace_management_the_Issue_Tracker_example" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Seam_Tutorial-A_complete_application_featuring_Seam_workspace_management_the_Issue_Tracker_example"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Seam_Tutorial-An_example_of_Seam_with_Hibernate_the_Hibernate_Booking_example">2.9. An example of Seam with Hibernate: the Hibernate Booking example</fo:basic-link><!
 /fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Seam_Tutorial-An_example_of_Seam_with_Hibernate_the_Hibernate_Booking_example" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Seam_Tutorial-An_example_of_Seam_with_Hibernate_the_Hibernate_Booking_example"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Seam_Tutorial-A_RESTful_Seam_application_the_Blog_example">2.10. A RESTful Seam application: the Blog example</fo:basic-link></fo:inline><fo:inline keep-together.wi!
 thin-line="always"> <fo:leader leader-pattern="dots" leader-pa!
 ttern-wi
dth="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Seam_Tutorial-A_RESTful_Seam_application_the_Blog_example" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Seam_Tutorial-A_RESTful_Seam_application_the_Blog_example"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-Seam_Tutorial-A_RESTful_Seam_application_the_Blog_example" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-A_RESTful_Seam_application_the_Blog_example-Using_pull_style_MVC">2.10.1. Using "pull"-style MVC</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader lead!
 er-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-A_RESTful_Seam_application_the_Blog_example-Using_pull_style_MVC" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-A_RESTful_Seam_application_the_Blog_example-Using_pull_style_MVC"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-A_RESTful_Seam_application_the_Blog_example-Bookmarkable_search_results_page">2.10.2. Bookmarkable search results page</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-ali!
 gnment="reference-area" keep-with-next.within-line="always"/> !
 <fo:basi
c-link internal-destination="Seam_Reference_Guide-A_RESTful_Seam_application_the_Blog_example-Bookmarkable_search_results_page" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-A_RESTful_Seam_application_the_Blog_example-Bookmarkable_search_results_page"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-A_RESTful_Seam_application_the_Blog_example-Using_push_style_MVC_in_a_RESTful_application">2.10.3. Using "push"-style MVC in a RESTful application</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-li!
 nk internal-destination="Seam_Reference_Guide-A_RESTful_Seam_application_the_Blog_example-Using_push_style_MVC_in_a_RESTful_application" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-A_RESTful_Seam_application_the_Blog_example-Using_push_style_MVC_in_a_RESTful_application"/></fo:basic-link></fo:inline></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="left" space-before.minimum="6pt" space-before.optimum="6pt" space-before.maximum="8pt" font-weight="bold"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-The_contextual_component_model">3. The contextual component model</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="use-content" leader-pattern-width="3pt" leader-alignme!
 nt="reference-area" keep-with-next.within-line="always" white-!
 space-co
llapse="false"> </fo:leader> <fo:basic-link internal-destination="Seam_Reference_Guide-The_contextual_component_model" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-The_contextual_component_model"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-The_contextual_component_model" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-The_contextual_component_model-Seam_contexts">3.1. Seam contexts</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Refere!
 nce_Guide-The_contextual_component_model-Seam_contexts" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-The_contextual_component_model-Seam_contexts"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-The_contextual_component_model-Seam_contexts" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Seam_contexts-Stateless_context">3.1.1. Stateless context</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Seam_contexts-Stateless_context"!
  text-align="right"><fo:page-number-citation ref-id="Seam_Refe!
 rence_Gu
ide-Seam_contexts-Stateless_context"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Seam_contexts-Event_context">3.1.2. Event context</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Seam_contexts-Event_context" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Seam_contexts-Event_context"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24!
 pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Seam_contexts-Page_context">3.1.3. Page context</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Seam_contexts-Page_context" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Seam_contexts-Page_context"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Seam_contexts-Conve!
 rsation_context">3.1.4. Conversation context</fo:basic-link></!
 fo:inlin
e><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Seam_contexts-Conversation_context" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Seam_contexts-Conversation_context"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Seam_contexts-Session_context">3.1.5. Session context</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> !
 <fo:basic-link internal-destination="Seam_Reference_Guide-Seam_contexts-Session_context" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Seam_contexts-Session_context"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Seam_contexts-Business_process_context">3.1.6. Business process context</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Seam_contexts-Business_process_context" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-S!
 eam_contexts-Business_process_context"/></fo:basic-link></fo:i!
 nline></
fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Seam_contexts-Application_context">3.1.7. Application context</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Seam_contexts-Application_context" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Seam_contexts-Application_context"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-!
 last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Seam_contexts-Context_variables">3.1.8. Context variables</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Seam_contexts-Context_variables" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Seam_contexts-Context_variables"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Seam_contexts-Context_search_priority">3.1.!
 9. Context search priority</fo:basic-link></fo:inline><fo:inli!
 ne keep-
together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Seam_contexts-Context_search_priority" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Seam_contexts-Context_search_priority"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Seam_contexts-Concurrency_model">3.1.10. Concurrency model</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:bas!
 ic-link internal-destination="Seam_Reference_Guide-Seam_contexts-Concurrency_model" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Seam_contexts-Concurrency_model"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-The_contextual_component_model-Seam_components">3.2. Seam components</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-The_contextual_component_model-Seam_components" text-align="right"><fo:page-number-citation ref-id="Seam_Refe!
 rence_Guide-The_contextual_component_model-Seam_components"/><!
 /fo:basi
c-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-The_contextual_component_model-Seam_components" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Seam_components-Stateless_session_beans">3.2.1. Stateless session beans</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Seam_components-Stateless_session_beans" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Seam_components-Stateless_session_beans"/></fo:basic-link></fo:inline></fo:block><fo:blo!
 ck xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Seam_components-Stateful_session_beans">3.2.2. Stateful session beans</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Seam_components-Stateful_session_beans" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Seam_components-Stateful_session_beans"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-ali!
 gn-last="justify" text-align="start"><fo:inline keep-with-next!
 .within-
line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Seam_components-Entity_beans">3.2.3. Entity beans</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Seam_components-Entity_beans" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Seam_components-Entity_beans"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Seam_components-JavaBeans">3.2.4. JavaBeans</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:lea!
 der leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Seam_components-JavaBeans" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Seam_components-JavaBeans"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Seam_components-Message_driven_beans">3.2.5. Message-driven beans</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Sea!
 m_components-Message_driven_beans" text-align="right"><fo:page!
 -number-
citation ref-id="Seam_Reference_Guide-Seam_components-Message_driven_beans"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Seam_components-Interception">3.2.6. Interception</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Seam_components-Interception" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Seam_components-Interception"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.r!
 enderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Seam_components-Component_names">3.2.7. Component names</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Seam_components-Component_names" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Seam_components-Component_names"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link int!
 ernal-destination="Seam_Reference_Guide-Seam_components-Defini!
 ng_the_c
omponent_scope">3.2.8. Defining the component scope</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Seam_components-Defining_the_component_scope" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Seam_components-Defining_the_component_scope"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Seam_components-Components_with_multiple_roles">3.2.9. Components with multiple roles</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo!
 :leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Seam_components-Components_with_multiple_roles" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Seam_components-Components_with_multiple_roles"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Seam_components-Built_in_components">3.2.10. Built-in components</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link i!
 nternal-destination="Seam_Reference_Guide-Seam_components-Buil!
 t_in_com
ponents" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Seam_components-Built_in_components"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-The_contextual_component_model-Bijection">3.3. Bijection</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-The_contextual_component_model-Bijection" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-The_contextual_component_model-Bijection"/></fo:basic-link></fo:inline></fo:bl!
 ock><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-The_contextual_component_model-Lifecycle_methods">3.4. Lifecycle methods</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-The_contextual_component_model-Lifecycle_methods" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-The_contextual_component_model-Lifecycle_methods"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" las!
 t-line-end-indent="-24pt" text-align-last="justify" text-align!
 ="start"
><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-The_contextual_component_model-Conditional_installation">3.5. Conditional installation</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-The_contextual_component_model-Conditional_installation" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-The_contextual_component_model-Conditional_installation"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-!
 The_contextual_component_model-Logging">3.6. Logging</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-The_contextual_component_model-Logging" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-The_contextual_component_model-Logging"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-The_contextual_component_model-The_Mutable_interface_and_ReadOnly">3.7. The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Mutable</fo:inline> interfa!
 ce and <fo:inline font-weight="bold" font-family="Liberation M!
 ono,mono
space">@ReadOnly</fo:inline></fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-The_contextual_component_model-The_Mutable_interface_and_ReadOnly" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-The_contextual_component_model-The_Mutable_interface_and_ReadOnly"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-The_contextual_component_model-Factory_and_manager_components">3.8. Factory and manager components</fo:basic-link></fo:inline><fo:inline keep-to!
 gether.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-The_contextual_component_model-Factory_and_manager_components" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-The_contextual_component_model-Factory_and_manager_components"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="left" space-before.minimum="6pt" space-before.optimum="6pt" space-before.maximum="8pt" font-weight="bold"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Configuring_Seam_components">4. Configuring Seam components</fo:basic-link></fo:inline><fo:inline keep-together.wit!
 hin-line="always"> <fo:leader leader-pattern="use-content" lea!
 der-patt
ern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always" white-space-collapse="false"> </fo:leader> <fo:basic-link internal-destination="Seam_Reference_Guide-Configuring_Seam_components" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Configuring_Seam_components"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-Configuring_Seam_components" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Configuring_Seam_components-Configuring_components_via_property_settings">4.1. Configuring components via property settings</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dot!
 s" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Configuring_Seam_components-Configuring_components_via_property_settings" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Configuring_Seam_components-Configuring_components_via_property_settings"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Configuring_Seam_components-Configuring_components_via_components.xml">4.2. Configuring components via components.xml</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-ali!
 gnment="reference-area" keep-with-next.within-line="always"/> !
 <fo:basi
c-link internal-destination="Seam_Reference_Guide-Configuring_Seam_components-Configuring_components_via_components.xml" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Configuring_Seam_components-Configuring_components_via_components.xml"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Configuring_Seam_components-Fine_grained_configuration_files">4.3. Fine-grained configuration files</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Configuring_Sea!
 m_components-Fine_grained_configuration_files" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Configuring_Seam_components-Fine_grained_configuration_files"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Configuring_Seam_components-Configurable_property_types">4.4. Configurable property types</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Configuring_Seam_components-Configurable_property_types" text-align="right"><fo:page-number-citation ref-id!
 ="Seam_Reference_Guide-Configuring_Seam_components-Configurabl!
 e_proper
ty_types"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Configuring_Seam_components-Using_XML_Namespaces">4.5. Using XML Namespaces</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Configuring_Seam_components-Using_XML_Namespaces" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Configuring_Seam_components-Using_XML_Namespaces"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="h!
 ttp://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="left" space-before.minimum="6pt" space-before.optimum="6pt" space-before.maximum="8pt" font-weight="bold"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Events_interceptors_and_exception_handling">5. Events, interceptors and exception handling</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="use-content" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always" white-space-collapse="false"> </fo:leader> <fo:basic-link internal-destination="Seam_Reference_Guide-Events_interceptors_and_exception_handling" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Events_interceptors_and_exception_handling"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-!
 Events_interceptors_and_exception_handling" margin-left="24pt"!
 ><fo:blo
ck xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Events_interceptors_and_exception_handling-Seam_events">5.1. Seam events</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Events_interceptors_and_exception_handling-Seam_events" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Events_interceptors_and_exception_handling-Seam_events"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-Events_interceptors_and_exception_handling-Seam_events" margin-left="24pt"><fo:b!
 lock xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Seam_events-Page_actions">5.1.1. Page actions</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Seam_events-Page_actions" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Seam_events-Page_actions"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline ke!
 ep-with-next.within-line="always"><fo:basic-link internal-dest!
 ination=
"Seam_Reference_Guide-Seam_events-Component_driven_events">5.1.2. Component-driven events</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Seam_events-Component_driven_events" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Seam_events-Component_driven_events"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Seam_events-Contextual_events">5.1.3. Contextual events</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader le!
 ader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Seam_events-Contextual_events" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Seam_events-Contextual_events"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Events_interceptors_and_exception_handling-Seam_interceptors">5.2. Seam interceptors</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-desti!
 nation="Seam_Reference_Guide-Events_interceptors_and_exception!
 _handlin
g-Seam_interceptors" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Events_interceptors_and_exception_handling-Seam_interceptors"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Events_interceptors_and_exception_handling-Managing_exceptions">5.3. Managing exceptions</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Events_interceptors_and_exception_handling-Managing_exceptions" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guid!
 e-Events_interceptors_and_exception_handling-Managing_exceptions"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-Events_interceptors_and_exception_handling-Managing_exceptions" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Managing_exceptions-Exceptions_and_transactions">5.3.1. Exceptions and transactions</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Managing_exceptions-Exceptions_and_transactions" text-align="right"><fo:page-number-citation ref-!
 id="Seam_Reference_Guide-Managing_exceptions-Exceptions_and_tr!
 ansactio
ns"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Managing_exceptions-Enabling_Seam_exception_handling">5.3.2. Enabling Seam exception handling</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Managing_exceptions-Enabling_Seam_exception_handling" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Managing_exceptions-Enabling_Seam_exception_handling"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xm!
 lns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Managing_exceptions-Using_annotations_for_exception_handling">5.3.3. Using annotations for exception handling</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Managing_exceptions-Using_annotations_for_exception_handling" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Managing_exceptions-Using_annotations_for_exception_handling"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-li!
 ne-end-indent="-24pt" text-align-last="justify" text-align="st!
 art"><fo
:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Managing_exceptions-Using_XML_for_exception_handling">5.3.4. Using XML for exception handling</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Managing_exceptions-Using_XML_for_exception_handling" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Managing_exceptions-Using_XML_for_exception_handling"/></fo:basic-link></fo:inline></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="left" space-before.minimum="6pt" space-before.optimum="6pt" space-before.maximum="8pt" font-w!
 eight="bold"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Conversations_and_workspace_management">6. Conversations and workspace management</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="use-content" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always" white-space-collapse="false"> </fo:leader> <fo:basic-link internal-destination="Seam_Reference_Guide-Conversations_and_workspace_management" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Conversations_and_workspace_management"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-Conversations_and_workspace_management" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="ju!
 stify" text-align="start"><fo:inline keep-with-next.within-lin!
 e="alway
s"><fo:basic-link internal-destination="Seam_Reference_Guide-Conversations_and_workspace_management-Seams_conversation_model">6.1. Seam's conversation model</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Conversations_and_workspace_management-Seams_conversation_model" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Conversations_and_workspace_management-Seams_conversation_model"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Conversations_and_wo!
 rkspace_management-Nested_conversations">6.2. Nested conversations</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Conversations_and_workspace_management-Nested_conversations" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Conversations_and_workspace_management-Nested_conversations"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Conversations_and_workspace_management-Starting_conversations_with_GET_requests">6.3. Starting conversations with GET!
  requests</fo:basic-link></fo:inline><fo:inline keep-together.!
 within-l
ine="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Conversations_and_workspace_management-Starting_conversations_with_GET_requests" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Conversations_and_workspace_management-Starting_conversations_with_GET_requests"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Conversations_and_workspace_management-Using_slink_and_sbutton">6.4. Using <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;s:link&gt;</fo:inline> and <fo:inline font-weight="bold"!
  font-family="Liberation Mono,monospace">&lt;s:button&gt;</fo:inline></fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Conversations_and_workspace_management-Using_slink_and_sbutton" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Conversations_and_workspace_management-Using_slink_and_sbutton"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Conversations_and_workspace_management-Success_messages">6.5. Success messages</fo:basic-link></fo:inline><f!
 o:inline keep-together.within-line="always"> <fo:leader leader!
 -pattern
="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Conversations_and_workspace_management-Success_messages" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Conversations_and_workspace_management-Success_messages"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Conversations_and_workspace_management-Using_an_explicit_conversation_id">6.6. Using an <fo:inline font-style="italic">explicit</fo:inline> conversation ID</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" le!
 ader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Conversations_and_workspace_management-Using_an_explicit_conversation_id" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Conversations_and_workspace_management-Using_an_explicit_conversation_id"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Conversations_and_workspace_management-Workspace_management">6.7. Workspace management</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <!
 fo:basic-link internal-destination="Seam_Reference_Guide-Conve!
 rsations
_and_workspace_management-Workspace_management" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Conversations_and_workspace_management-Workspace_management"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-Conversations_and_workspace_management-Workspace_management" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Workspace_management-Workspace_management_and_JSF_navigation">6.7.1. Workspace management and JSF navigation</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link int!
 ernal-destination="Seam_Reference_Guide-Workspace_management-Workspace_management_and_JSF_navigation" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Workspace_management-Workspace_management_and_JSF_navigation"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Workspace_management-Workspace_management_and_jPDL_pageflow">6.7.2. Workspace management and jPDL pageflow</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Workspace_management-Workspace_mana!
 gement_and_jPDL_pageflow" text-align="right"><fo:page-number-c!
 itation 
ref-id="Seam_Reference_Guide-Workspace_management-Workspace_management_and_jPDL_pageflow"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Workspace_management-The_conversation_switcher">6.7.3. The conversation switcher</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Workspace_management-The_conversation_switcher" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Workspace_management-The_conversation_switcher"/></fo:basic-link></fo:inline></fo:block>!
 <fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Workspace_management-The_conversation_list">6.7.4. The conversation list</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Workspace_management-The_conversation_list" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Workspace_management-The_conversation_list"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-inden!
 t="-24pt" text-align-last="justify" text-align="start"><fo:inl!
 ine keep
-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Workspace_management-Breadcrumbs">6.7.5. Breadcrumbs</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Workspace_management-Breadcrumbs" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Workspace_management-Breadcrumbs"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Conversations_and_workspace_management-Conversational_components_and_JSF_component_bi!
 ndings">6.8. Conversational components and JSF component bindings</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Conversations_and_workspace_management-Conversational_components_and_JSF_component_bindings" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Conversations_and_workspace_management-Conversational_components_and_JSF_component_bindings"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="left" space-before.minimum="6pt" space-before.optimum="6pt" space-before.maximum="8pt" font-weight="bold"><fo:inline keep-with-next.within-line="always"><f!
 o:basic-link internal-destination="Seam_Reference_Guide-Pagefl!
 ows_and_
business_processes">7. Pageflows and business processes</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="use-content" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always" white-space-collapse="false"> </fo:leader> <fo:basic-link internal-destination="Seam_Reference_Guide-Pageflows_and_business_processes" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Pageflows_and_business_processes"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-Pageflows_and_business_processes" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Pageflows_and_business_processes!
 -Pageflow_in_Seam">7.1. Pageflow in Seam</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Pageflows_and_business_processes-Pageflow_in_Seam" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Pageflows_and_business_processes-Pageflow_in_Seam"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-Pageflows_and_business_processes-Pageflow_in_Seam" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Pageflow_in_Seam-The_two_navigation_models">!
 7.1.1. The two navigation models</fo:basic-link></fo:inline><f!
 o:inline
 keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Pageflow_in_Seam-The_two_navigation_models" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Pageflow_in_Seam-The_two_navigation_models"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Pageflow_in_Seam-Seam_and_the_back_button">7.1.2. Seam and the back button</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-nex!
 t.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Pageflow_in_Seam-Seam_and_the_back_button" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Pageflow_in_Seam-Seam_and_the_back_button"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Pageflows_and_business_processes-Using_jPDL_pageflows">7.2. Using jPDL pageflows</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Pageflows_and_business_processes-Using_jPDL_p!
 ageflows" text-align="right"><fo:page-number-citation ref-id="!
 Seam_Ref
erence_Guide-Pageflows_and_business_processes-Using_jPDL_pageflows"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-Pageflows_and_business_processes-Using_jPDL_pageflows" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Using_jPDL_pageflows-Installing_pageflows">7.2.1. Installing pageflows</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Using_jPDL_pageflows-Installing_pageflows" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Us!
 ing_jPDL_pageflows-Installing_pageflows"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Using_jPDL_pageflows-Starting_pageflows">7.2.2. Starting pageflows</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Using_jPDL_pageflows-Starting_pageflows" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Using_jPDL_pageflows-Starting_pageflows"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://!
 www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-en!
 d-indent
="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Using_jPDL_pageflows-Page_nodes_and_transitions">7.2.3. Page nodes and transitions</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Using_jPDL_pageflows-Page_nodes_and_transitions" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Using_jPDL_pageflows-Page_nodes_and_transitions"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-d!
 estination="Seam_Reference_Guide-Using_jPDL_pageflows-Controlling_the_flow">7.2.4. Controlling the flow</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Using_jPDL_pageflows-Controlling_the_flow" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Using_jPDL_pageflows-Controlling_the_flow"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Using_jPDL_pageflows-Ending_the_flow">7.2.5. Ending the flow</fo:basic-link></fo:inline><fo:inline keep-together.wit!
 hin-line="always"> <fo:leader leader-pattern="dots" leader-pat!
 tern-wid
th="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Using_jPDL_pageflows-Ending_the_flow" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Using_jPDL_pageflows-Ending_the_flow"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Pageflows_and_business_processes-Business_process_management_in_Seam">7.3. Business process management in Seam</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-dest!
 ination="Seam_Reference_Guide-Pageflows_and_business_processes-Business_process_management_in_Seam" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Pageflows_and_business_processes-Business_process_management_in_Seam"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Pageflows_and_business_processes-Using_jPDL_business_process_definitions">7.4. Using jPDL business process definitions</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Pageflows_and_bus!
 iness_processes-Using_jPDL_business_process_definitions" text-!
 align="r
ight"><fo:page-number-citation ref-id="Seam_Reference_Guide-Pageflows_and_business_processes-Using_jPDL_business_process_definitions"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-Pageflows_and_business_processes-Using_jPDL_business_process_definitions" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Installing_process_definitions">7.4.1. Installing process definitions</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_!
 Guide-Using_jPDL_business_process_definitions-Installing_process_definitions" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Installing_process_definitions"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Initializing_actor_ids">7.4.2. Initializing actor ids</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Initializing_actor_ids!
 " text-align="right"><fo:page-number-citation ref-id="Seam_Ref!
 erence_G
uide-Using_jPDL_business_process_definitions-Initializing_actor_ids"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Initiating_a_business_process">7.4.3. Initiating a business process</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Initiating_a_business_process" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Initiating_a_busine!
 ss_process"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Task_assignment">7.4.4. Task assignment</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Task_assignment" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Task_assignment"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" x!
 mlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24!
 pt" last
-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Task_lists">7.4.5. Task lists</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Task_lists" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Task_lists"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link i!
 nternal-destination="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Performing_a_task">7.4.6. Performing a task</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Performing_a_task" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Performing_a_task"/></fo:basic-link></fo:inline></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="left" space-before.minimum="6pt" space-before.optimum="6pt" space-before.maximum="8pt" font-weight="bold"><fo:inline keep-with-next.within-line="always"!
 ><fo:basic-link internal-destination="Seam_Reference_Guide-Sea!
 m_and_Ob
jectRelational_Mapping">8. Seam and Object/Relational Mapping</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="use-content" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always" white-space-collapse="false"> </fo:leader> <fo:basic-link internal-destination="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Seam_and_ObjectRelation!
 al_Mapping-Introduction">8.1. Introduction</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Introduction" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Introduction"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Seam_managed_transactions">8.2. Seam managed transactions</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <!
 fo:leader leader-pattern="dots" leader-pattern-width="3pt" lea!
 der-alig
nment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Seam_managed_transactions" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Seam_managed_transactions"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Seam_managed_transactions" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Seam_managed_transactions-Enabling_Seam_managed_transactions">8.2.1. Enabling Seam-managed transactions</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-patte!
 rn="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Seam_managed_transactions-Enabling_Seam_managed_transactions" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Seam_managed_transactions-Enabling_Seam_managed_transactions"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Seam_managed_persistence_contexts">8.3. Seam-managed persistence contexts</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="referenc!
 e-area" keep-with-next.within-line="always"/> <fo:basic-link i!
 nternal-
destination="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Seam_managed_persistence_contexts" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Seam_managed_persistence_contexts"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Seam_managed_persistence_contexts" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Seam_managed_persistence_contexts-Using_a_Seam_managed_persistence_context_with_JPA">8.3.1. Using a Seam-managed persistence context with JPA</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-patter!
 n-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Seam_managed_persistence_contexts-Using_a_Seam_managed_persistence_context_with_JPA" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Seam_managed_persistence_contexts-Using_a_Seam_managed_persistence_context_with_JPA"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Seam_managed_persistence_contexts-Using_a_Seam_managed_Hibernate_session">8.3.2. Using a Seam-managed Hibernate session</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" le!
 ader-alignment="reference-area" keep-with-next.within-line="al!
 ways"/> 
<fo:basic-link internal-destination="Seam_Reference_Guide-Seam_managed_persistence_contexts-Using_a_Seam_managed_Hibernate_session" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Seam_managed_persistence_contexts-Using_a_Seam_managed_Hibernate_session"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Seam_managed_persistence_contexts-Seam_managed_persistence_contexts_and_atomic_conversations">8.3.3. Seam-managed persistence contexts and atomic conversations</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/>!
  <fo:basic-link internal-destination="Seam_Reference_Guide-Seam_managed_persistence_contexts-Seam_managed_persistence_contexts_and_atomic_conversations" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Seam_managed_persistence_contexts-Seam_managed_persistence_contexts_and_atomic_conversations"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_the_JPA_delegate">8.4. Using the JPA "delegate"</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link int!
 ernal-destination="Seam_Reference_Guide-Seam_and_ObjectRelatio!
 nal_Mapp
ing-Using_the_JPA_delegate" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_the_JPA_delegate"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_EL_in_EJB_QLHQL">8.5. Using EL in EJB-QL/HQL</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_EL_in_EJB_QLHQL" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Seam_a!
 nd_ObjectRelational_Mapping-Using_EL_in_EJB_QLHQL"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_Hibernate_filters">8.6. Using Hibernate filters</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_Hibernate_filters" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_Hibernate_filters"/></fo:basic-link></fo:inline></fo:block></fo:bloc!
 k><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" x!
 mlns:rx=
"http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="left" space-before.minimum="6pt" space-before.optimum="6pt" space-before.maximum="8pt" font-weight="bold"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-JSF_form_validation_in_Seam">9. JSF form validation in Seam</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="use-content" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always" white-space-collapse="false"> </fo:leader> <fo:basic-link internal-destination="Seam_Reference_Guide-JSF_form_validation_in_Seam" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-JSF_form_validation_in_Seam"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" e!
 nd-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="left" space-before.minimum="6pt" space-before.optimum="6pt" space-before.maximum="8pt" font-weight="bold"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-The_Seam_Application_Framework">10. The Seam Application Framework</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="use-content" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always" white-space-collapse="false"> </fo:leader> <fo:basic-link internal-destination="Seam_Reference_Guide-The_Seam_Application_Framework" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-The_Seam_Application_Framework"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-The_Seam_Application_Framework" margin-left="24pt"><fo:block xmlns="http://www.w3.org/T!
 R/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Ex!
 tensions
" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-The_Seam_Application_Framework-Introduction">10.1. Introduction</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-The_Seam_Application_Framework-Introduction" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-The_Seam_Application_Framework-Introduction"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-li!
 nk internal-destination="Seam_Reference_Guide-The_Seam_Application_Framework-Home_objects">10.2. Home objects</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-The_Seam_Application_Framework-Home_objects" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-The_Seam_Application_Framework-Home_objects"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-The_Seam_Application_Framework-Query_objects">10.3. Query objects</fo:basic-link></fo:inline><fo:inline ke!
 ep-together.within-line="always"> <fo:leader leader-pattern="d!
 ots" lea
der-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-The_Seam_Application_Framework-Query_objects" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-The_Seam_Application_Framework-Query_objects"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-The_Seam_Application_Framework-Controller_objects">10.4. Controller objects</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_R!
 eference_Guide-The_Seam_Application_Framework-Controller_objects" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-The_Seam_Application_Framework-Controller_objects"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="left" space-before.minimum="6pt" space-before.optimum="6pt" space-before.maximum="8pt" font-weight="bold"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="drools">11. Seam and JBoss Rules</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="use-content" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always" white-space-collapse="false"> </fo:leader> <fo:basic-link internal-destination="drools" text-align="right"><fo:page-num!
 ber-citation ref-id="drools"/></fo:basic-link></fo:inline></fo!
 :block><
fo:block id="toc.id4192237.drools" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="id2837364">11.1. Installing rules</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="id2837364" text-align="right"><fo:page-number-citation ref-id="id2837364"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-lin!
 k internal-destination="id2768374">11.2. Using rules from a Seam component</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="id2768374" text-align="right"><fo:page-number-citation ref-id="id2768374"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="id2755080">11.3. Using rules from a jBPM process definition</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:ba!
 sic-link internal-destination="id2755080" text-align="right"><!
 fo:page-
number-citation ref-id="id2755080"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="left" space-before.minimum="6pt" space-before.optimum="6pt" space-before.maximum="8pt" font-weight="bold"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Security">12. Security</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="use-content" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always" white-space-collapse="false"> </fo:leader> <fo:basic-link internal-destination="Seam_Reference_Guide-Security" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Security"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Se!
 am_Reference_Guide-Security" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Security-Overview">12.1. Overview</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Security-Overview" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Security-Overview"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-Security-Overview" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Ext!
 ensions" end-indent="24pt" last-line-end-indent="-24pt" text-a!
 lign-las
t="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Overview-Which_mode_is_right_for_my_application">12.1.1. Which mode is right for my application?</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Overview-Which_mode_is_right_for_my_application" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Overview-Which_mode_is_right_for_my_application"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal!
 -destination="Seam_Reference_Guide-Security-Requirements">12.2. Requirements</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Security-Requirements" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Security-Requirements"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Security-Authentication">12.3. Authentication</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" lea!
 der-alignment="reference-area" keep-with-next.within-line="alw!
 ays"/> <
fo:basic-link internal-destination="Seam_Reference_Guide-Security-Authentication" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Security-Authentication"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-Security-Authentication" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Authentication-Configuration">12.3.1. Configuration</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Authentication-Configuration" text-align="right"><fo:pa!
 ge-number-citation ref-id="Seam_Reference_Guide-Authentication-Configuration"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Authentication-Writing_an_authentication_method">12.3.2. Writing an authentication method</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Authentication-Writing_an_authentication_method" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Authentication-Writing_an_authentication_method"/></fo:basic-link></fo:inline></fo:block>!
 <fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xml!
 ns:rx="h
ttp://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Authentication-Writing_a_login_form">12.3.3. Writing a login form</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Authentication-Writing_a_login_form" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Authentication-Writing_a_login_form"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line!
 ="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Authentication-Simplified_Configuration___Summary">12.3.4. Simplified Configuration - Summary</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Authentication-Simplified_Configuration___Summary" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Authentication-Simplified_Configuration___Summary"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Authentication-Handling_Security_Exception!
 s">12.3.5. Handling Security Exceptions</fo:basic-link></fo:in!
 line><fo
:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Authentication-Handling_Security_Exceptions" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Authentication-Handling_Security_Exceptions"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Authentication-Login_Redirection">12.3.6. Login Redirection</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.with!
 in-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Authentication-Login_Redirection" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Authentication-Login_Redirection"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Authentication-Advanced_Authentication_Features">12.3.7. Advanced Authentication Features</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Authentication-Advanced_Authentication_Features" text-align="right"><fo!
 :page-number-citation ref-id="Seam_Reference_Guide-Authenticat!
 ion-Adva
nced_Authentication_Features"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Security-Error_Messages">12.4. Error Messages</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Security-Error_Messages" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Security-Error_Messages"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last!
 -line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Security-Authorization">12.5. Authorization</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Security-Authorization" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Security-Authorization"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-Security-Authorization" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:b!
 asic-link internal-destination="Seam_Reference_Guide-Authoriza!
 tion-Cor
e_concepts">12.5.1. Core concepts</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Authorization-Core_concepts" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Authorization-Core_concepts"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Authorization-Securing_components">12.5.2. Securing components</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="!
 reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Authorization-Securing_components" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Authorization-Securing_components"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Authorization-Security_in_the_user_interface">12.5.3. Security in the user interface</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Authorization-Security_in_the_user_inte!
 rface" text-align="right"><fo:page-number-citation ref-id="Sea!
 m_Refere
nce_Guide-Authorization-Security_in_the_user_interface"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Authorization-Securing_pages">12.5.4. Securing pages</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Authorization-Securing_pages" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Authorization-Securing_pages"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Ex!
 tensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Authorization-Securing_Entities">12.5.5. Securing Entities</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Authorization-Securing_Entities" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Authorization-Securing_Entities"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link intern!
 al-destination="Seam_Reference_Guide-Security-Writing_Security!
 _Rules">
12.6. Writing Security Rules</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Security-Writing_Security_Rules" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Security-Writing_Security_Rules"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-Security-Writing_Security_Rules" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Writing_Security_Rules-Permissions_Overview">12.6.1. Permissions Overview</fo:basic-link></fo:inline><fo:inline!
  keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Writing_Security_Rules-Permissions_Overview" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Writing_Security_Rules-Permissions_Overview"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Writing_Security_Rules-Configuring_a_rules_file">12.6.2. Configuring a rules file</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" kee!
 p-with-next.within-line="always"/> <fo:basic-link internal-des!
 tination
="Seam_Reference_Guide-Writing_Security_Rules-Configuring_a_rules_file" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Writing_Security_Rules-Configuring_a_rules_file"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Writing_Security_Rules-Creating_a_security_rules_file">12.6.3. Creating a security rules file</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Writing_Security_Rules-Creating_a_security_rules_file" text-align="right"><fo:page-number-ci!
 tation ref-id="Seam_Reference_Guide-Writing_Security_Rules-Creating_a_security_rules_file"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Security-SSL_Security">12.7. SSL Security</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Security-SSL_Security" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Security-SSL_Security"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://!
 www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-en!
 d-indent
="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Security-Implementing_a_Captcha_Test">12.8. Implementing a Captcha Test</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Security-Implementing_a_Captcha_Test" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Security-Implementing_a_Captcha_Test"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-Security-Implementing_a_Captcha_Test" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"!
 ><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Implementing_a_Captcha_Test-Configuring_the_Captcha_Servlet">12.8.1. Configuring the Captcha Servlet</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Implementing_a_Captcha_Test-Configuring_the_Captcha_Servlet" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Implementing_a_Captcha_Test-Configuring_the_Captcha_Servlet"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination!
 ="Seam_Reference_Guide-Implementing_a_Captcha_Test-Adding_a_Ca!
 ptcha_to
_a_page">12.8.2. Adding a Captcha to a page</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Implementing_a_Captcha_Test-Adding_a_Captcha_to_a_page" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Implementing_a_Captcha_Test-Adding_a_Captcha_to_a_page"/></fo:basic-link></fo:inline></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="left" space-before.minimum="6pt" space-before.optimum="6pt" space-before.maximum="8pt" font-weight="bold"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Internationalization_and_theme!
 s">13. Internationalization and themes</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="use-content" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always" white-space-collapse="false"> </fo:leader> <fo:basic-link internal-destination="Seam_Reference_Guide-Internationalization_and_themes" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Internationalization_and_themes"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-Internationalization_and_themes" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Internationalization_and_themes-Locales">13.1. Loca!
 les</fo:basic-link></fo:inline><fo:inline keep-together.within!
 -line="a
lways"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Internationalization_and_themes-Locales" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Internationalization_and_themes-Locales"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Internationalization_and_themes-Labels">13.2. Labels</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destinat!
 ion="Seam_Reference_Guide-Internationalization_and_themes-Labels" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Internationalization_and_themes-Labels"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-Internationalization_and_themes-Labels" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Labels-Defining_labels">13.2.1. Defining labels</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Labels-Defining_labels" text-align="right"><!
 fo:page-number-citation ref-id="Seam_Reference_Guide-Labels-De!
 fining_l
abels"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Labels-Displaying_labels">13.2.2. Displaying labels</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Labels-Displaying_labels" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Labels-Displaying_labels"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" t!
 ext-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Labels-Faces_messages">13.2.3. Faces messages</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Labels-Faces_messages" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Labels-Faces_messages"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Internationalization_and_themes-Timezones">13.3. Timez!
 ones</fo:basic-link></fo:inline><fo:inline keep-together.withi!
 n-line="
always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Internationalization_and_themes-Timezones" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Internationalization_and_themes-Timezones"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Internationalization_and_themes-Themes">13.4. Themes</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-des!
 tination="Seam_Reference_Guide-Internationalization_and_themes-Themes" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Internationalization_and_themes-Themes"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Internationalization_and_themes-Persisting_locale_and_theme_preferences_via_cookies">13.5. Persisting locale and theme preferences via cookies</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Internationalization_and_themes-Persisting_locale_an!
 d_theme_preferences_via_cookies" text-align="right"><fo:page-n!
 umber-ci
tation ref-id="Seam_Reference_Guide-Internationalization_and_themes-Persisting_locale_and_theme_preferences_via_cookies"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="left" space-before.minimum="6pt" space-before.optimum="6pt" space-before.maximum="8pt" font-weight="bold"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Seam_Text">14. Seam Text</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="use-content" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always" white-space-collapse="false"> </fo:leader> <fo:basic-link internal-destination="Seam_Reference_Guide-Seam_Text" text-align="right"><fo:page-number-citation ref-id="Seam_Referen!
 ce_Guide-Seam_Text"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-Seam_Text" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Seam_Text-Basic_fomatting">14.1. Basic fomatting</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Seam_Text-Basic_fomatting" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Seam_Text-Basic_fomatting"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns!
 :rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" !
 last-lin
e-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Seam_Text-Entering_code_and_text_with_special_characters">14.2. Entering code and text with special characters</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Seam_Text-Entering_code_and_text_with_special_characters" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Seam_Text-Entering_code_and_text_with_special_characters"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline kee!
 p-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Seam_Text-Links">14.3. Links</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Seam_Text-Links" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Seam_Text-Links"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Seam_Text-Entering_HTML">14.4. Entering HTML</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" !
 leader-pattern-width="3pt" leader-alignment="reference-area" k!
 eep-with
-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Seam_Text-Entering_HTML" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Seam_Text-Entering_HTML"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="left" space-before.minimum="6pt" space-before.optimum="6pt" space-before.maximum="8pt" font-weight="bold"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-iText_PDF_generation">15. iText PDF generation</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="use-content" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always" white-space-collapse="false"> </fo:leader> <fo:basic-link interna!
 l-destination="Seam_Reference_Guide-iText_PDF_generation" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-iText_PDF_generation"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-iText_PDF_generation" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-iText_PDF_generation-Using_PDF_Support">15.1. Using PDF Support</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-iText_PDF_generation-Using_PDF_Support" text-align="right"><fo:page-numb!
 er-citation ref-id="Seam_Reference_Guide-iText_PDF_generation-!
 Using_PD
F_Support"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-iText_PDF_generation-Creating_a_document">15.2. Creating a document</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-iText_PDF_generation-Creating_a_document" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-iText_PDF_generation-Creating_a_document"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-iText_PDF_generation-Creating_a_document" margin-left="!
 24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Creating_a_document-pdocument">15.2.1. p:document</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Creating_a_document-pdocument" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Creating_a_document-pdocument"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justi!
 fy" text-align="start"><fo:inline keep-with-next.within-line="!
 always">
<fo:basic-link internal-destination="Seam_Reference_Guide-iText_PDF_generation-Basic_Text_Elements">15.3. Basic Text Elements</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-iText_PDF_generation-Basic_Text_Elements" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-iText_PDF_generation-Basic_Text_Elements"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-iText_PDF_generation-Basic_Text_Elements" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Ref!
 erence_Guide-Basic_Text_Elements-pparagraph">15.3.1. p:paragraph</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Basic_Text_Elements-pparagraph" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Basic_Text_Elements-pparagraph"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Basic_Text_Elements-ptext">15.3.2. p:text</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" l!
 eader-alignment="reference-area" keep-with-next.within-line="a!
 lways"/>
 <fo:basic-link internal-destination="Seam_Reference_Guide-Basic_Text_Elements-ptext" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Basic_Text_Elements-ptext"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Basic_Text_Elements-pfont">15.3.3. p:font</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Basic_Text_Elements-pfont" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Basic_Text_Elements-pfont"/></fo:basic-link></fo:inl!
 ine></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Basic_Text_Elements-pnewPage">15.3.4. p:newPage</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Basic_Text_Elements-pnewPage" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Basic_Text_Elements-pnewPage"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" te!
 xt-align="start"><fo:inline keep-with-next.within-line="always!
 "><fo:ba
sic-link internal-destination="Seam_Reference_Guide-Basic_Text_Elements-pimage">15.3.5. p:image</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Basic_Text_Elements-pimage" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Basic_Text_Elements-pimage"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Basic_Text_Elements-panchor">15.3.6. p:anchor</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" le!
 ader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Basic_Text_Elements-panchor" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Basic_Text_Elements-panchor"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-iText_PDF_generation-Headers_and_Footers">15.4. Headers and Footers</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-iText_PDF_gene!
 ration-Headers_and_Footers" text-align="right"><fo:page-number!
 -citatio
n ref-id="Seam_Reference_Guide-iText_PDF_generation-Headers_and_Footers"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-iText_PDF_generation-Headers_and_Footers" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Headers_and_Footers-pheader_and_pfooter">15.4.1. p:header and p:footer</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Headers_and_Footers-pheader_and_pfooter" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Headers_and_!
 Footers-pheader_and_pfooter"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Headers_and_Footers-ppageNumber">15.4.2. p:pageNumber</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Headers_and_Footers-ppageNumber" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Headers_and_Footers-ppageNumber"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions!
 " end-indent="24pt" last-line-end-indent="-24pt" text-align-la!
 st="just
ify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-iText_PDF_generation-Chapters_and_Sections">15.5. Chapters and Sections</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-iText_PDF_generation-Chapters_and_Sections" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-iText_PDF_generation-Chapters_and_Sections"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-iText_PDF_generation-Chapters_and_Sections" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline !
 keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Chapters_and_Sections-pchapter_and_psection">15.5.1. p:chapter and p:section</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Chapters_and_Sections-pchapter_and_psection" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Chapters_and_Sections-pchapter_and_psection"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Chapters_and_Sections-ptitle">15.5.2. p:title!
 </fo:basic-link></fo:inline><fo:inline keep-together.within-li!
 ne="alwa
ys"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Chapters_and_Sections-ptitle" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Chapters_and_Sections-ptitle"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-iText_PDF_generation-Lists">15.6. Lists</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-i!
 Text_PDF_generation-Lists" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-iText_PDF_generation-Lists"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-iText_PDF_generation-Lists" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Lists-plist">15.6.1. p:list</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Lists-plist" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Lists-plist"/></fo:basic-link></fo:inline!
 ></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/trans!
 itional"
 xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Lists-plistItem">15.6.2. p:listItem</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Lists-plistItem" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Lists-plistItem"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="!
 Seam_Reference_Guide-iText_PDF_generation-Tables">15.7. Tables</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-iText_PDF_generation-Tables" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-iText_PDF_generation-Tables"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-iText_PDF_generation-Tables" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Tables-ptable">15.7.1. p:table</fo:basic-link></fo:inline><fo:inline keep-together.withi!
 n-line="always"> <fo:leader leader-pattern="dots" leader-patte!
 rn-width
="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Tables-ptable" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Tables-ptable"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Tables-pcell">15.7.2. p:cell</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Tables-pcell" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Tables-pcell"/></fo:basi!
 c-link></fo:inline></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-iText_PDF_generation-Document_Constants">15.8. Document Constants</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-iText_PDF_generation-Document_Constants" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-iText_PDF_generation-Document_Constants"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-iText_PDF_generation-Document_Constants" margin-left="24pt"><fo:bloc!
 k xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="h!
 ttp://ww
w.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Document_Constants-Color_Values">15.8.1. Color Values</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Document_Constants-Color_Values" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Document_Constants-Color_Values"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link int!
 ernal-destination="Seam_Reference_Guide-Document_Constants-Alignment_Values">15.8.2. Alignment Values</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Document_Constants-Alignment_Values" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Document_Constants-Alignment_Values"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-iText_PDF_generation-Configuring_iText">15.9. Configuring iText</fo:basic-link></fo:inline><fo:inline keep-together.wit!
 hin-line="always"> <fo:leader leader-pattern="dots" leader-pat!
 tern-wid
th="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-iText_PDF_generation-Configuring_iText" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-iText_PDF_generation-Configuring_iText"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-iText_PDF_generation-iText_links">15.10. iText links</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-iText_PDF_generation-iText_links" t!
 ext-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-iText_PDF_generation-iText_links"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="left" space-before.minimum="6pt" space-before.optimum="6pt" space-before.maximum="8pt" font-weight="bold"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Email">16. Email</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="use-content" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always" white-space-collapse="false"> </fo:leader> <fo:basic-link internal-destination="Seam_Reference_Guide-Email" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Email"/></fo:basi!
 c-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam!
 _Referen
ce_Guide-Email" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Email-Creating_a_message">16.1. Creating a message</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Email-Creating_a_message" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Email-Creating_a_message"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-Email-Creating_a_message" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http:/!
 /www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Creating_a_message-Attachments">16.1.1. Attachments</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Creating_a_message-Attachments" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Creating_a_message-Attachments"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link int!
 ernal-destination="Seam_Reference_Guide-Creating_a_message-HTM!
 LText_al
ternative_part">16.1.2. HTML/Text alternative part</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Creating_a_message-HTMLText_alternative_part" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Creating_a_message-HTMLText_alternative_part"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Creating_a_message-Multiple_recipients">16.1.3. Multiple recipients</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-patt!
 ern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Creating_a_message-Multiple_recipients" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Creating_a_message-Multiple_recipients"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Creating_a_message-Multiple_messages">16.1.4. Multiple messages</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_!
 Guide-Creating_a_message-Multiple_messages" text-align="right"!
 ><fo:pag
e-number-citation ref-id="Seam_Reference_Guide-Creating_a_message-Multiple_messages"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Creating_a_message-Templating">16.1.5. Templating</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Creating_a_message-Templating" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Creating_a_message-Templating"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="h!
 ttp://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Creating_a_message-Internationalisation">16.1.6. Internationalisation</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Creating_a_message-Internationalisation" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Creating_a_message-Internationalisation"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-nex!
 t.within-line="always"><fo:basic-link internal-destination="Se!
 am_Refer
ence_Guide-Creating_a_message-Other_Headers">16.1.7. Other Headers</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Creating_a_message-Other_Headers" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Creating_a_message-Other_Headers"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Email-Receiving_emails">16.2. Receiving emails</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-!
 pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Email-Receiving_emails" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Email-Receiving_emails"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Email-Configuration">16.3. Configuration</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Email-Configuration" text-align="right"><fo:page-number-citation re!
 f-id="Seam_Reference_Guide-Email-Configuration"/></fo:basic-li!
 nk></fo:
inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-Email-Configuration" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Configuration-mailSession">16.3.1. <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">mailSession</fo:inline></fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Configuration-mailSession" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Configuration-mailSession"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:bl!
 ock xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Email-Tags">16.4. Tags</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Email-Tags" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Email-Tags"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="left" space-before.minimum="6pt" space-before.optimum="6pt" s!
 pace-before.maximum="8pt" font-weight="bold"><fo:inline keep-w!
 ith-next
.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Asynchronicity_and_messaging">17. Asynchronicity and messaging</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="use-content" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always" white-space-collapse="false"> </fo:leader> <fo:basic-link internal-destination="Seam_Reference_Guide-Asynchronicity_and_messaging" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Asynchronicity_and_messaging"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-Asynchronicity_and_messaging" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link !
 internal-destination="Seam_Reference_Guide-Asynchronicity_and_messaging-Asynchronicity">17.1. Asynchronicity</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Asynchronicity_and_messaging-Asynchronicity" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Asynchronicity_and_messaging-Asynchronicity"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-Asynchronicity_and_messaging-Asynchronicity" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_!
 Guide-Asynchronicity-Asynchronous_methods">17.1.1. Asynchronou!
 s method
s</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Asynchronicity-Asynchronous_methods" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Asynchronicity-Asynchronous_methods"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Asynchronicity-Asynchronous_events">17.1.2. Asynchronous events</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area"!
  keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Asynchronicity-Asynchronous_events" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Asynchronicity-Asynchronous_events"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Asynchronicity_and_messaging-Messaging_in_Seam">17.2. Messaging in Seam</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Asynchronicity_and_messaging-Messaging_in_Seam" text-a!
 lign="right"><fo:page-number-citation ref-id="Seam_Reference_G!
 uide-Asy
nchronicity_and_messaging-Messaging_in_Seam"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-Asynchronicity_and_messaging-Messaging_in_Seam" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Messaging_in_Seam-Configuration">17.2.1. Configuration</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Messaging_in_Seam-Configuration" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Messaging_in_Seam-Configuration"/></fo:basic-link></fo:inl!
 ine></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Messaging_in_Seam-Sending_messages">17.2.2. Sending messages</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Messaging_in_Seam-Sending_messages" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Messaging_in_Seam-Sending_messages"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" tex!
 t-align-last="justify" text-align="start"><fo:inline keep-with!
 -next.wi
thin-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Messaging_in_Seam-Receiving_messages_using_a_message_driven_bean">17.2.3. Receiving messages using a message-driven bean</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Messaging_in_Seam-Receiving_messages_using_a_message_driven_bean" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Messaging_in_Seam-Receiving_messages_using_a_message_driven_bean"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination!
 ="Seam_Reference_Guide-Messaging_in_Seam-Receiving_messages_in_the_client">17.2.4. Receiving messages in the client</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Messaging_in_Seam-Receiving_messages_in_the_client" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Messaging_in_Seam-Receiving_messages_in_the_client"/></fo:basic-link></fo:inline></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="left" space-before.minimum="6pt" space-before.optimum="6pt" space-before.maximum="8pt" font-weight="bold"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal!
 -destination="cache">18. Caching</fo:basic-link></fo:inline><f!
 o:inline
 keep-together.within-line="always"> <fo:leader leader-pattern="use-content" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always" white-space-collapse="false"> </fo:leader> <fo:basic-link internal-destination="cache" text-align="right"><fo:page-number-citation ref-id="cache"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.cache" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="id2673797">18.1. Using JBossCache in Seam</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="id267!
 3797" text-align="right"><fo:page-number-citation ref-id="id2673797"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="id3092922">18.2. Page fragment caching</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="id3092922" text-align="right"><fo:page-number-citation ref-id="id3092922"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-al!
 ign="left" space-before.minimum="6pt" space-before.optimum="6p!
 t" space
-before.maximum="8pt" font-weight="bold"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Remoting">19. Remoting</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="use-content" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always" white-space-collapse="false"> </fo:leader> <fo:basic-link internal-destination="Seam_Reference_Guide-Remoting" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Remoting"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-Remoting" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Referen!
 ce_Guide-Remoting-Configuration">19.1. Configuration</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Remoting-Configuration" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Remoting-Configuration"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Remoting-The_Seam_object">19.2. The "Seam" object</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="ref!
 erence-area" keep-with-next.within-line="always"/> <fo:basic-l!
 ink inte
rnal-destination="Seam_Reference_Guide-Remoting-The_Seam_object" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Remoting-The_Seam_object"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-Remoting-The_Seam_object" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-The_Seam_object-A_Hello_World_example">19.2.1. A Hello World example</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-The_Seam_object-A_Hello_World_example" text-align="ri!
 ght"><fo:page-number-citation ref-id="Seam_Reference_Guide-The_Seam_object-A_Hello_World_example"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-The_Seam_object-Seam.Component">19.2.2. Seam.Component</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-The_Seam_object-Seam.Component" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-The_Seam_object-Seam.Component"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/tran!
 sitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end!
 -indent=
"24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-The_Seam_object-Seam.Remoting">19.2.3. Seam.Remoting</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-The_Seam_object-Seam.Remoting" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-The_Seam_object-Seam.Remoting"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_G!
 uide-Remoting-Client_Interfaces">19.3. Client Interfaces</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Remoting-Client_Interfaces" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Remoting-Client_Interfaces"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Remoting-The_Context">19.4. The Context</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="r!
 eference-area" keep-with-next.within-line="always"/> <fo:basic!
 -link in
ternal-destination="Seam_Reference_Guide-Remoting-The_Context" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Remoting-The_Context"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-Remoting-The_Context" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-The_Context-Setting_and_reading_the_Conversation_ID">19.4.1. Setting and reading the Conversation ID</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-The_Context-Setting_and_reading!
 _the_Conversation_ID" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-The_Context-Setting_and_reading_the_Conversation_ID"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Remoting-Batch_Requests">19.5. Batch Requests</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Remoting-Batch_Requests" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Remoting-Batch_Requests"/></fo:basic-link></fo:inline></fo:block><fo:block x!
 mlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http!
 ://www.r
enderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Remoting-Working_with_Data_types">19.6. Working with Data types</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Remoting-Working_with_Data_types" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Remoting-Working_with_Data_types"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-Remoting-Working_with_Data_types" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt"!
  text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Working_with_Data_types-Primitives__Basic_Types">19.6.1. Primitives / Basic Types</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Working_with_Data_types-Primitives__Basic_Types" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Working_with_Data_types-Primitives__Basic_Types"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destinati!
 on="Seam_Reference_Guide-Working_with_Data_types-JavaBeans">19!
 .6.2. Ja
vaBeans</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Working_with_Data_types-JavaBeans" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Working_with_Data_types-JavaBeans"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Working_with_Data_types-Dates_and_Times">19.6.3. Dates and Times</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-ar!
 ea" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Working_with_Data_types-Dates_and_Times" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Working_with_Data_types-Dates_and_Times"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Working_with_Data_types-Enums">19.6.4. Enums</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Working_with_Data_types-Enums" text-align="right"><fo:page-number-citation ref-!
 id="Seam_Reference_Guide-Working_with_Data_types-Enums"/></fo:!
 basic-li
nk></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Working_with_Data_types-Collections">19.6.5. Collections</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Working_with_Data_types-Collections" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Working_with_Data_types-Collections"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end!
 -indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Remoting-Debugging">19.7. Debugging</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Remoting-Debugging" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Remoting-Debugging"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Remoting-The_Loading_Message">19.8. The Loading Message</fo:basi!
 c-link></fo:inline><fo:inline keep-together.within-line="alway!
 s"> <fo:
leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Remoting-The_Loading_Message" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Remoting-The_Loading_Message"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-Remoting-The_Loading_Message" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-The_Loading_Message-Changing_the_message">19.8.1. Changing the message</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="refe!
 rence-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-The_Loading_Message-Changing_the_message" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-The_Loading_Message-Changing_the_message"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-The_Loading_Message-Hiding_the_loading_message">19.8.2. Hiding the loading message</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-The_Loading_Message-Hiding_the_!
 loading_message" text-align="right"><fo:page-number-citation r!
 ef-id="S
eam_Reference_Guide-The_Loading_Message-Hiding_the_loading_message"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-The_Loading_Message-A_Custom_Loading_Indicator">19.8.3. A Custom Loading Indicator</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-The_Loading_Message-A_Custom_Loading_Indicator" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-The_Loading_Message-A_Custom_Loading_Indicator"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block!
  xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Remoting-Controlling_what_data_is_returned">19.9. Controlling what data is returned</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Remoting-Controlling_what_data_is_returned" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Remoting-Controlling_what_data_is_returned"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-Remoting-Controlling_what_data_is_returned" margin-left="24pt"><fo:block xmlns="http://www.w3.!
 org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/X!
 SL/Exten
sions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Controlling_what_data_is_returned-Constraining_normal_fields">19.9.1. Constraining normal fields</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Controlling_what_data_is_returned-Constraining_normal_fields" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Controlling_what_data_is_returned-Constraining_normal_fields"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-a!
 lign="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Controlling_what_data_is_returned-Constraining_Maps_and_Collections">19.9.2. Constraining Maps and Collections</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Controlling_what_data_is_returned-Constraining_Maps_and_Collections" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Controlling_what_data_is_returned-Constraining_Maps_and_Collections"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="alway!
 s"><fo:basic-link internal-destination="Seam_Reference_Guide-C!
 ontrolli
ng_what_data_is_returned-Constraining_objects_of_a_specific_type">19.9.3. Constraining objects of a specific type</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Controlling_what_data_is_returned-Constraining_objects_of_a_specific_type" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Controlling_what_data_is_returned-Constraining_objects_of_a_specific_type"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Controlling_what_data_is_returned-Combining!
 _Constraints">19.9.4. Combining Constraints</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Controlling_what_data_is_returned-Combining_Constraints" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Controlling_what_data_is_returned-Combining_Constraints"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Remoting-JMS_Messaging">19.10. JMS Messaging</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-!
 pattern="dots" leader-pattern-width="3pt" leader-alignment="re!
 ference-
area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Remoting-JMS_Messaging" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Remoting-JMS_Messaging"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-Remoting-JMS_Messaging" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-JMS_Messaging-Configuration">19.10.1. Configuration</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-JMS_Messaging!
 -Configuration" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-JMS_Messaging-Configuration"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-JMS_Messaging-Subscribing_to_a_JMS_Topic">19.10.2. Subscribing to a JMS Topic</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-JMS_Messaging-Subscribing_to_a_JMS_Topic" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-JMS_Messaging-Subscribing_to_a_JMS_Topic"/></fo:basic-link></fo:inli!
 ne></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/tra!
 nsitiona
l" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-JMS_Messaging-Unsubscribing_from_a_Topic">19.10.3. Unsubscribing from a Topic</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-JMS_Messaging-Unsubscribing_from_a_Topic" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-JMS_Messaging-Unsubscribing_from_a_Topic"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><!
 fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-JMS_Messaging-Tuning_the_Polling_Process">19.10.4. Tuning the Polling Process</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-JMS_Messaging-Tuning_the_Polling_Process" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-JMS_Messaging-Tuning_the_Polling_Process"/></fo:basic-link></fo:inline></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="left" space-before.minimum="6pt" space-before.optimum="6pt" space-before.maximum="8pt" font-weight="bold"><fo:inline keep-with-nex!
 t.within-line="always"><fo:basic-link internal-destination="Se!
 am_Refer
ence_Guide-Spring_Framework_integration">20. Spring Framework integration</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="use-content" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always" white-space-collapse="false"> </fo:leader> <fo:basic-link internal-destination="Seam_Reference_Guide-Spring_Framework_integration" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Spring_Framework_integration"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-Spring_Framework_integration" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Spring_Framework_integrati!
 on-Injecting_Seam_components_into_Spring_beans">20.1. Injecting Seam components into Spring beans</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Spring_Framework_integration-Injecting_Seam_components_into_Spring_beans" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Spring_Framework_integration-Injecting_Seam_components_into_Spring_beans"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Spring_Framework_integration-Injecting_Spring_beans_into_Sea!
 m_components">20.2. Injecting Spring beans into Seam component!
 s</fo:ba
sic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Spring_Framework_integration-Injecting_Spring_beans_into_Seam_components" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Spring_Framework_integration-Injecting_Spring_beans_into_Seam_components"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Spring_Framework_integration-Making_a_Spring_bean_into_a_Seam_component">20.3. Making a Spring bean into a Seam component</fo:basic-link></fo:inline><fo:inline keep-!
 together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Spring_Framework_integration-Making_a_Spring_bean_into_a_Seam_component" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Spring_Framework_integration-Making_a_Spring_bean_into_a_Seam_component"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Spring_Framework_integration-Seam_scoped_Spring_beans">20.4. Seam-scoped Spring beans</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pat!
 tern-width="3pt" leader-alignment="reference-area" keep-with-n!
 ext.with
in-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Spring_Framework_integration-Seam_scoped_Spring_beans" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Spring_Framework_integration-Seam_scoped_Spring_beans"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Spring_Framework_integration-Spring_Application_Context_as_a_Seam_Component">20.5. Spring Application Context as a Seam Component</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Refere!
 nce_Guide-Spring_Framework_integration-Spring_Application_Context_as_a_Seam_Component" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Spring_Framework_integration-Spring_Application_Context_as_a_Seam_Component"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="left" space-before.minimum="6pt" space-before.optimum="6pt" space-before.maximum="8pt" font-weight="bold"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications">21. Configuring Seam and packaging Seam applications</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="use-content" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.wit!
 hin-line="always" white-space-collapse="false"> </fo:leader> !
 <fo:basi
c-link internal-destination="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Basic_Seam_configuration">21.1. Basic Seam configuration</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="a!
 lways"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Basic_Seam_configuration" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Basic_Seam_configuration"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Basic_Seam_configuration" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Basic_Seam_configuration-Integrating_Seam_with_JSF_and_your_servlet_container">21.1.1. Integrating Seam with JSF and your servlet container</fo:basic-link></fo:inline><fo:inline keep-together.within-line="alway!
 s"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt!
 " leader
-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Basic_Seam_configuration-Integrating_Seam_with_JSF_and_your_servlet_container" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Basic_Seam_configuration-Integrating_Seam_with_JSF_and_your_servlet_container"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Basic_Seam_configuration-Seam_Resource_Servlet">21.1.2. Seam Resource Servlet</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:b!
 asic-link internal-destination="Seam_Reference_Guide-Basic_Seam_configuration-Seam_Resource_Servlet" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Basic_Seam_configuration-Seam_Resource_Servlet"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Basic_Seam_configuration-Seam_servlet_filters">21.1.3. Seam servlet filters</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Basic_Seam_configuration-Seam_servlet_filters" text-align="right"><fo:page-number!
 -citation ref-id="Seam_Reference_Guide-Basic_Seam_configuratio!
 n-Seam_s
ervlet_filters"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Basic_Seam_configuration-Integrating_Seam_with_your_EJB_container">21.1.4. Integrating Seam with your EJB container</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Basic_Seam_configuration-Integrating_Seam_with_your_EJB_container" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Basic_Seam_configuration-Integrating_Seam_with_your_EJB_container"/></fo:basic-link></fo:inline></fo:block><!
 fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Basic_Seam_configuration-Using_facelets">21.1.5. Using facelets</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Basic_Seam_configuration-Using_facelets" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Basic_Seam_configuration-Using_facelets"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-a!
 lign-last="justify" text-align="start"><fo:inline keep-with-ne!
 xt.withi
n-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Basic_Seam_configuration-Dont_forget">21.1.6. Don't forget!</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Basic_Seam_configuration-Dont_forget" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Basic_Seam_configuration-Dont_forget"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_EE_5">21.2. !
 Configuring Seam in Java EE 5</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_EE_5" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_EE_5"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_EE_5" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-de!
 stination="Seam_Reference_Guide-Configuring_Seam_in_Java_EE_5-!
 Packagin
g">21.2.1. Packaging</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Configuring_Seam_in_Java_EE_5-Packaging" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Configuring_Seam_in_Java_EE_5-Packaging"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container">21.3. Configuring Seam in Java SE, with the JBoss Embeddable EJB3 containe!
 r</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" tex!
 t-align="start"><fo:inline keep-with-next.within-line="always"!
 ><fo:bas
ic-link internal-destination="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container-Installing_the_Embeddable_EJB3_container">21.3.1. Installing the Embeddable EJB3 container</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container-Installing_the_Embeddable_EJB3_container" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container-Installing_the_Embeddable_EJB3_container"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify!
 " text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container-Configuring_a_datasource_with_the_Embeddable_EJB3_container">21.3.2. Configuring a datasource with the Embeddable EJB3 container</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container-Configuring_a_datasource_with_the_Embeddable_EJB3_container" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container-Configuring_a_datasource_with_the_Embeddable_EJB3_container"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www!
 .w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.c!
 om/XSL/E
xtensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container-Packaging">21.3.3. Packaging</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container-Packaging" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container-Packaging"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line!
 -end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_J2EE">21.4. Configuring Seam in J2EE</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_J2EE" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_J2EE"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_J2EE" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtm!
 l1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensio!
 ns" end-
indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Configuring_Seam_in_J2EE-Boostrapping_Hibernate_in_Seam">21.4.1. Boostrapping Hibernate in Seam</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Configuring_Seam_in_J2EE-Boostrapping_Hibernate_in_Seam" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Configuring_Seam_in_J2EE-Boostrapping_Hibernate_in_Seam"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inlin!
 e keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Configuring_Seam_in_J2EE-Boostrapping_JPA_in_Seam">21.4.2. Boostrapping JPA in Seam</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Configuring_Seam_in_J2EE-Boostrapping_JPA_in_Seam" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Configuring_Seam_in_J2EE-Boostrapping_JPA_in_Seam"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Configuring_Seam_in_J2EE!
 -Packaging">21.4.3. Packaging</fo:basic-link></fo:inline><fo:i!
 nline ke
ep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Configuring_Seam_in_J2EE-Packaging" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Configuring_Seam_in_J2EE-Packaging"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_SE_with_the_JBoss_Microcontainer">21.5. Configuring Seam in Java SE, with the JBoss Microcontainer</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader!
 -pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_SE_with_the_JBoss_Microcontainer" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_SE_with_the_JBoss_Microcontainer"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_SE_with_the_JBoss_Microcontainer" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Confi!
 guring_Seam_in_Java_SE_with_the_JBoss_Microcontainer-Using_Hib!
 ernate_a
nd_the_JBoss_Microcontainer">21.5.1. Using Hibernate and the JBoss Microcontainer</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Microcontainer-Using_Hibernate_and_the_JBoss_Microcontainer" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Microcontainer-Using_Hibernate_and_the_JBoss_Microcontainer"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Configuring_Seam_!
 in_Java_SE_with_the_JBoss_Microcontainer-Packaging">21.5.2. Packaging</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Microcontainer-Packaging" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Microcontainer-Packaging"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_jBPM_in_Seam">21.6. Config!
 uring jBPM in Seam</fo:basic-link></fo:inline><fo:inline keep-!
 together
.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_jBPM_in_Seam" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_jBPM_in_Seam"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_jBPM_in_Seam" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Configuring_jBPM_in_Seam-Packaging">21.6.1. Packaging</fo:basic-l!
 ink></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Configuring_jBPM_in_Seam-Packaging" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Configuring_jBPM_in_Seam-Packaging"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_a_Portal">21.7. Configuring Seam in a Portal</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-patter!
 n-width="3pt" leader-alignment="reference-area" keep-with-next!
 .within-
line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_a_Portal" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_a_Portal"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_SFSB_and_Session_Timeouts_in_JBoss_AS">21.8. Configuring SFSB and Session Timeouts in JBoss AS</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.!
 within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_SFSB_and_Session_Timeouts_in_JBoss_AS" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_SFSB_and_Session_Timeouts_in_JBoss_AS"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="left" space-before.minimum="6pt" space-before.optimum="6pt" space-before.maximum="8pt" font-weight="bold"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Seam_annotations">22. Seam annotations</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="use-content" leader-pattern-width="3pt"!
  leader-alignment="reference-area" keep-with-next.within-line=!
 "always"
 white-space-collapse="false"> </fo:leader> <fo:basic-link internal-destination="Seam_Reference_Guide-Seam_annotations" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Seam_annotations"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-Seam_annotations" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Seam_annotations-Annotations_for_component_definition">22.1. Annotations for component definition</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_!
 Reference_Guide-Seam_annotations-Annotations_for_component_definition" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Seam_annotations-Annotations_for_component_definition"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Seam_annotations-Annotations_for_bijection">22.2. Annotations for bijection</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Seam_annotations-Annotations_for_bijection" text-align="right"><fo:page-number-citation ref-id="Seam_Ref!
 erence_Guide-Seam_annotations-Annotations_for_bijection"/></fo!
 :basic-l
ink></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Seam_annotations-Annotations_for_component_lifecycle_methods">22.3. Annotations for component lifecycle methods</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Seam_annotations-Annotations_for_component_lifecycle_methods" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Seam_annotations-Annotations_for_component_lifecycle_methods"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1!
 /transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Seam_annotations-Annotations_for_context_demarcation">22.4. Annotations for context demarcation</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Seam_annotations-Annotations_for_context_demarcation" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Seam_annotations-Annotations_for_context_demarcation"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent!
 ="-24pt" text-align-last="justify" text-align="start"><fo:inli!
 ne keep-
with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Seam_annotations-Annotations_for_transaction_demarcation">22.5. Annotations for transaction demarcation</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Seam_annotations-Annotations_for_transaction_demarcation" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Seam_annotations-Annotations_for_transaction_demarcation"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guid!
 e-Seam_annotations-Annotations_for_exceptions">22.6. Annotations for exceptions</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Seam_annotations-Annotations_for_exceptions" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Seam_annotations-Annotations_for_exceptions"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Seam_annotations-Annotations_for_validation">22.7. Annotations for validation</fo:basic-link></fo:inline><fo:inline keep-together.within!
 -line="always"> <fo:leader leader-pattern="dots" leader-patter!
 n-width=
"3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Seam_annotations-Annotations_for_validation" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Seam_annotations-Annotations_for_validation"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Seam_annotations-Annotations_for_Seam_Remoting">22.8. Annotations for Seam Remoting</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Gui!
 de-Seam_annotations-Annotations_for_Seam_Remoting" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Seam_annotations-Annotations_for_Seam_Remoting"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Seam_annotations-Annotations_for_Seam_interceptors">22.9. Annotations for Seam interceptors</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Seam_annotations-Annotations_for_Seam_interceptors" text-align="right"><fo:page-number-citation ref-id="Seam_Refere!
 nce_Guide-Seam_annotations-Annotations_for_Seam_interceptors"/!
 ></fo:ba
sic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Seam_annotations-Annotations_for_asynchronicity">22.10. Annotations for asynchronicity</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Seam_annotations-Annotations_for_asynchronicity" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Seam_annotations-Annotations_for_asynchronicity"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.co!
 m/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Seam_annotations-Annotations_for_use_with_JSF_dataTable">22.11. Annotations for use with JSF <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">dataTable</fo:inline></fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Seam_annotations-Annotations_for_use_with_JSF_dataTable" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Seam_annotations-Annotations_for_use_with_JSF_dataTable"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/E!
 xtensions" end-indent="24pt" last-line-end-indent="-24pt" text!
 -align-l
ast="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Seam_annotations-Meta_annotations_for_databinding">22.12. Meta-annotations for databinding</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Seam_annotations-Meta_annotations_for_databinding" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Seam_annotations-Meta_annotations_for_databinding"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destinatio!
 n="Seam_Reference_Guide-Seam_annotations-Annotations_for_packaging">22.13. Annotations for packaging</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Seam_annotations-Annotations_for_packaging" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Seam_annotations-Annotations_for_packaging"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="left" space-before.minimum="6pt" space-before.optimum="6pt" space-before.maximum="8pt" font-weight="bold"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="components">23. Built-in Sea!
 m components</fo:basic-link></fo:inline><fo:inline keep-togeth!
 er.withi
n-line="always"> <fo:leader leader-pattern="use-content" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always" white-space-collapse="false"> </fo:leader> <fo:basic-link internal-destination="components" text-align="right"><fo:page-number-citation ref-id="components"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.components" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="id2824946">23.1. Context injection components</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="id2824!
 946" text-align="right"><fo:page-number-citation ref-id="id2824946"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="id3806725">23.2. Utility components</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="id3806725" text-align="right"><fo:page-number-citation ref-id="id3806725"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo!
 :inline keep-with-next.within-line="always"><fo:basic-link int!
 ernal-de
stination="id2707818">23.3. Components for internationalization and themes</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="id2707818" text-align="right"><fo:page-number-citation ref-id="id2707818"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="id2653066">23.4. Components for controlling conversations</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic!
 -link internal-destination="id2653066" text-align="right"><fo:page-number-citation ref-id="id2653066"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="id3774101">23.5. jBPM-related components</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="id3774101" text-align="right"><fo:page-number-citation ref-id="id3774101"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-alig!
 n-last="justify" text-align="start"><fo:inline keep-with-next.!
 within-l
ine="always"><fo:basic-link internal-destination="id2767160">23.6. Security-related components</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="id2767160" text-align="right"><fo:page-number-citation ref-id="id2767160"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="id2767223">23.7. JMS-related components</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:bas!
 ic-link internal-destination="id2767223" text-align="right"><fo:page-number-citation ref-id="id2767223"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="components.mail">23.8. Mail-related components</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="components.mail" text-align="right"><fo:page-number-citation ref-id="components.mail"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-inde!
 nt="-24pt" text-align-last="justify" text-align="start"><fo:in!
 line kee
p-with-next.within-line="always"><fo:basic-link internal-destination="id2821366">23.9. Infrastructural components</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="id2821366" text-align="right"><fo:page-number-citation ref-id="id2821366"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="id2793927">23.10. Miscellaneous components</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-l!
 ine="always"/> <fo:basic-link internal-destination="id2793927" text-align="right"><fo:page-number-citation ref-id="id2793927"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="id2794027">23.11. Special components</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="id2794027" text-align="right"><fo:page-number-citation ref-id="id2794027"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-li!
 ne-end-indent="-24pt" text-align-last="justify" text-align="le!
 ft" spac
e-before.minimum="6pt" space-before.optimum="6pt" space-before.maximum="8pt" font-weight="bold"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Seam_JSF_controls">24. Seam JSF controls</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="use-content" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always" white-space-collapse="false"> </fo:leader> <fo:basic-link internal-destination="Seam_Reference_Guide-Seam_JSF_controls" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Seam_JSF_controls"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="left" space-before.minimum="6pt" space-before.optimum="6pt" space-before.maximum="8pt" fon!
 t-weight="bold"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Expression_language_enhancements">25. Expression language enhancements</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="use-content" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always" white-space-collapse="false"> </fo:leader> <fo:basic-link internal-destination="Seam_Reference_Guide-Expression_language_enhancements" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Expression_language_enhancements"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-Expression_language_enhancements" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start">!
 <fo:inline keep-with-next.within-line="always"><fo:basic-link !
 internal
-destination="Seam_Reference_Guide-Expression_language_enhancements-Configuration">25.1. Configuration</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Expression_language_enhancements-Configuration" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Expression_language_enhancements-Configuration"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Expression_language_enhancements-Usage">25.2. Usage</fo:basic-link></fo:inline><fo:inline keep-together.with!
 in-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Expression_language_enhancements-Usage" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Expression_language_enhancements-Usage"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Expression_language_enhancements-Limitations">25.3. Limitations</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-li!
 nk internal-destination="Seam_Reference_Guide-Expression_langu!
 age_enha
ncements-Limitations" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Expression_language_enhancements-Limitations"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-Expression_language_enhancements-Limitations" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Limitations-Incompatibility_with_JSP_2.1">25.3.1. Incompatibility with JSP 2.1</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Limitations-Incompatibility_with_JSP_2.1" text!
 -align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Limitations-Incompatibility_with_JSP_2.1"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Limitations-Calling_a_MethodExpression_from_Java_code">25.3.2. Calling a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">MethodExpression</fo:inline> from Java code</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Limitations-Calling_a_MethodExpression_from_Java_code" text-align="right"><fo:pag!
 e-number-citation ref-id="Seam_Reference_Guide-Limitations-Cal!
 ling_a_M
ethodExpression_from_Java_code"/></fo:basic-link></fo:inline></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="left" space-before.minimum="6pt" space-before.optimum="6pt" space-before.maximum="8pt" font-weight="bold"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Testing_Seam_applications">26. Testing Seam applications</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="use-content" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always" white-space-collapse="false"> </fo:leader> <fo:basic-link internal-destination="Seam_Reference_Guide-Testing_Seam_applications" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Testing_Seam_applicat!
 ions"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-Testing_Seam_applications" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Testing_Seam_applications-Unit_testing_Seam_components">26.1. Unit testing Seam components</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Testing_Seam_applications-Unit_testing_Seam_components" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Testing_Seam_applications-Unit_testing_Seam_components"/><!
 /fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://!
 www.w3.o
rg/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Testing_Seam_applications-Integration_testing_Seam_applications">26.2. Integration testing Seam applications</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Testing_Seam_applications-Integration_testing_Seam_applications" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Testing_Seam_applications-Integration_testing_Seam_applications"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-Testing_Seam_applications-Integration_testing_Seam_!
 applications" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Integration_testing_Seam_applications-Using_mocks_in_integration_tests">26.2.1. Using mocks in integration tests</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Integration_testing_Seam_applications-Using_mocks_in_integration_tests" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Integration_testing_Seam_applications-Using_mocks_in_integration_tests"/></fo:basic-link></fo:inline></fo:block></fo:block></fo:!
 block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitiona!
 l" xmlns
:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="left" space-before.minimum="6pt" space-before.optimum="6pt" space-before.maximum="8pt" font-weight="bold"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Seam_tools">27. Seam tools</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="use-content" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always" white-space-collapse="false"> </fo:leader> <fo:basic-link internal-destination="Seam_Reference_Guide-Seam_tools" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Seam_tools"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-Seam_tools" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/!
 XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Seam_tools-jBPM_designer_and_viewer">27.1. jBPM designer and viewer</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Seam_tools-jBPM_designer_and_viewer" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Seam_tools-jBPM_designer_and_viewer"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-Seam_tools-jBPM_designer_and_viewer" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24!
 pt" text-align-last="justify" text-align="start"><fo:inline ke!
 ep-with-
next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-jBPM_designer_and_viewer-Business_process_designer">27.1.1. Business process designer</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-jBPM_designer_and_viewer-Business_process_designer" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-jBPM_designer_and_viewer-Business_process_designer"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-jBPM_designer_and_viewer-Pageflow!
 _viewer">27.1.2. Pageflow viewer</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-jBPM_designer_and_viewer-Pageflow_viewer" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-jBPM_designer_and_viewer-Pageflow_viewer"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-Seam_tools-CRUD_application_generator">27.2. CRUD-application generator</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots"!
  leader-pattern-width="3pt" leader-alignment="reference-area" !
 keep-wit
h-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-Seam_tools-CRUD_application_generator" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-Seam_tools-CRUD_application_generator"/></fo:basic-link></fo:inline></fo:block><fo:block id="toc.id4192237.Seam_Reference_Guide-Seam_tools-CRUD_application_generator" margin-left="24pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-CRUD_application_generator-Creating_a_Hibernate_configuration_file">27.2.1. Creating a Hibernate configuration file</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next!
 .within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-CRUD_application_generator-Creating_a_Hibernate_configuration_file" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-CRUD_application_generator-Creating_a_Hibernate_configuration_file"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-CRUD_application_generator-Creating_a_Hibernate_Console_configuration">27.2.2. Creating a Hibernate Console configuration</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-!
 destination="Seam_Reference_Guide-CRUD_application_generator-C!
 reating_
a_Hibernate_Console_configuration" text-align="right"><fo:page-number-citation ref-id="Seam_Reference_Guide-CRUD_application_generator-Creating_a_Hibernate_Console_configuration"/></fo:basic-link></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="start"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="Seam_Reference_Guide-CRUD_application_generator-Reverse_engineering_and_code_generation">27.2.3. Reverse engineering and code generation</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Seam_Reference_Guide-CRUD_application_generator-Reverse_engineering_and_code_generation" text-align="right!
 "><fo:page-number-citation ref-id="Seam_Reference_Guide-CRUD_application_generator-Reverse_engineering_and_code_generation"/></fo:basic-link></fo:inline></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" end-indent="24pt" last-line-end-indent="-24pt" text-align-last="justify" text-align="left" space-before.minimum="6pt" space-before.optimum="6pt" space-before.maximum="8pt" font-weight="bold"><fo:inline keep-with-next.within-line="always"><fo:basic-link internal-destination="appe-Publican-Revision_History">A. Revision History</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="use-content" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always" white-space-collapse="false"> </fo:leader> <fo:basic-link internal-destination="appe-Publican-Revision_History" text-align="right"><fo:page-number-citation!
  ref-id="appe-Publican-Revision_History"/></fo:basic-link></fo!
 :inline>
</fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="body" language="en" format="1" initial-page-number="1" force-page-count="end-on-even" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="sta!
 rt" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always" font-weight="bold">Chapter 1.</fo:inline></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-co!
 lumn-width(1)"/><fo:table-body><fo:table-row block-progression!
 -dimensi
on.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always"><fo:retrieve-marker retrieve-class-name="section.head.marker" retrieve-position="first-including-carryover" retrieve-boundary="page-sequence"/></fo:inline></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-c!
 olumn-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always" font-weight="bold">Chapter 1. Feedback</fo:inline></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-wid!
 th="0.5pt" border-bottom-style="solid" border-bottom-color="bl!
 ack"><fo
:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-footnote-separator"><fo:block><fo:leader color="black" leader-pattern="rule" leader-length="1in"/></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block font-family="Liberation Sans,sans-serif,Symbol,Za!
 pfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-regi!
 on-after-odd"><fo:block font-family="Liberation Sans,sans-seri!
 f,Symbol
,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-re!
 gion-after-even"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo!
 :table></fo:block></fo:static-content><fo:static-content flow-!
 name="xs
l-region-after-blank"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body>!
 </fo:table></fo:block></fo:static-content><fo:flow flow-name="xsl-region-body" start-indent="0pt" end-indent="0pt"><fo:block id="Feedback"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats"><fo:block margin-left="0pc"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" color="#a70000" background-color="white" font-size="24pt" font-weight="bold" text-align="left" padding-left="1em" padding-right="1em">Feedback</fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		If you spot a typo in this guide, or if you have thought of a way to make this manual better, we would love to hear from you! Submit a report in <fo:basic-link external-destination="url(http://jira.jboss.com/jira/browse/JBPAPP)" font-style="italic" color="#0066cc">JIRA</fo:basic-link><fo:footnote><fo:inline font-size="66.66%" font-weight="normal" font-style="normal" margin-left="0.25em" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" baseline-shift="super">1</fo:inline><fo:footnote-body padding-top="48pt" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" font-size="8pt" color="black" font-weight="normal" font-style="normal" text-align="left" start-indent="0pt" text-indent="0pt" hyphenate="true" wrap-option="wrap" linefeed-treatment="treat-as-space"><fo:block><fo:inline font-size="66.66%" font-weight="normal" font-style="normal" margin-left="0.25em" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" baseline-shift="super">1</fo:inline> <fo!
 :basic-link external-destination="url(http://jira.jboss.com/jira/browse/JBPAPP)">http://jira.jboss.com/jira/browse/JBPAPP</fo:basic-link></fo:block></fo:footnote-body></fo:footnote> against the Product: JBoss Enterprise Application Platform, Version: <fo:inline font-style="italic" font-family="Liberation Mono,monospace">&lt;version&gt;</fo:inline>, Component: <fo:inline font-style="italic">Doc</fo:inline>. If you have a suggestion for improving the documentation, try to be as specific as possible. If you have found an error, include the section number and some of the surrounding text so we can find it easily.
+	</fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="front" language="en" format="i" initial-page-number="auto-odd" force-page-count="end-on-even" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="star!
 t" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-c!
 ell text-align="start" display-align="before" relative-align="!
 baseline
"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always"><fo:retrieve-marker retrieve-class-name="section.head.marker" retrieve-position="first-including-carryover" retrieve-boundary="page-sequence"/></fo:inline></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><f!
 o:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always" font-weight="bold">Introduction to JBoss Seam</fo:inline></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-num!
 ber="1" column-width="proportional-column-width(1)"/><fo:table!
 -column 
column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-footnote-separator"><fo:block><fo:leader color="black" leader-pattern="rule" leader-length="1in"/></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.!
 5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-odd"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-le!
 ft="0pc"><fo:table table-layout="fixed" width="100%" border-to!
 p-width=
"0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-even"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin!
 -left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-blank"><f!
 o:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDin!
 gbats" m
argin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:flow flow-name="xsl-region-body" start-indent="0!
 pt" end-indent="0pt"><fo:block id="Seam_Reference_Guide-Introduction_to_JBoss_Seam"><fo:block><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" color="#a70000" font-size="24pt" font-weight="bold">Introduction to JBoss Seam</fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Seam is an application framework for Java EE 5. It is inspired by the following principles:
+		</fo:block><fo:block id="id3874053" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3919614" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-style="italic">Integrate JSF with EJB 3.0</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						JSF and EJB 3.0 are two of the best new features of Java EE 5. EJB3 is a brand new component model for server side business and persistence logic. Meanwhile, JSF is a great component model for the presentation tier. Unfortunately, neither component model is able to solve all problems in computing by itself. Indeed, JSF and EJB3 work best when used together. But the Java EE 5 specification provides no standard way to integrate the two component models. Fortunately, the creators of both models anticipated this situation and provided standard extension points to allow extension and integration of other solutions.
+					</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						Seam unifies the component models of JSF and EJB3, allowing the developer to concentrate on the business problem.
+					</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3609033" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-style="italic">Integrated AJAX</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						Seam supports two open source JSF-based AJAX solutions: ICEfaces and Ajax4JSF. These solutions let you add AJAX capability to your user interface without the need to write any JavaScript code.
+					</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						Seam also provides a built-in JavaScript remoting layer for EJB3 components. AJAX clients can easily call server-side components and subscribe to JMS topics, without the need for an intermediate action layer.
+					</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						Neither of these approaches would work well, were it not for Seam's built-in concurrency and state management, which ensures that many concurrent fine-grained, asynchronous AJAX requests are handled safely and efficiently on the server side.
+					</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3886478" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-style="italic">Integrate Business Process as a First Class Construct</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						Optionally, Seam integrates transparent business process management via jBPM. This allows for complex workflows to easily be implemented using jBPM and Seam.
+					</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						Seam even allows definition of presentation tier conversation flow by the same means.
+					</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						JSF provides an incredibly rich event model for the presentation tier. Seam enhances this model by exposing jBPM's business process related events via exactly the same event handling mechanism, providing a uniform event model for Seam's uniform component model.
+					</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3939927" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-style="italic">The uniform component model</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						Seam provides a uniform component model. A Seam component may be stateful, with the state associated to any one of a number of contexts, ranging from the long-running business process to a single web request.
+					</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						There is no distinction between presentation tier components and business logic components in Seam. It is possible to write Seam applications where <fo:inline font-style="italic">everything</fo:inline> is an EJB. EJB 3.0 completely changes the nature of EJB from the point of view of the developer. An EJB is a fine-grained object, no more complex than an annotated JavaBean. Seam even encourages you to use session beans as JSF action listeners.
+					</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						Unlike plain Java EE or J2EE components, Seam components may <fo:inline font-style="italic">simultaneously</fo:inline> access state associated with the web request and state held in transactional resources (without the need to propagate web request state manually via method parameters). You might object that the application layering imposed upon you by the old J2EE platform was a Good Thing. Well, nothing stops you creating an equivalent layered architecture using Seam - the difference is that <fo:inline font-style="italic">you</fo:inline> get to architect your own application and decide what the layers are and how they work together.
+					</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3357386" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-style="italic">Declarative State Management</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						We are all used to the concept of declarative transaction management and J2EE declarative security from EJB 2.x. EJB 3.0 even introduces declarative persistence context management. These are three examples of a broader problem of managing state that is associated with a particular <fo:inline font-style="italic">context</fo:inline>, while ensuring that all needed cleanup occurs when the context ends. Seam takes the concept of declarative state management much further and applies it to <fo:inline font-style="italic">application state</fo:inline>. Traditionally, J2EE applications almost always implement state management manually, by getting and setting servlet session and request attributes. This approach to state management is the source of many bugs and memory leaks when applications fail to clean up session attributes, or when session data associated with different workflows collides in a multi-window application. Seam has the potential to almost entirely eliminate th!
 is class of bugs.
+					</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						Declarative application state management is made possible by the richness of the <fo:inline font-style="italic">context model</fo:inline> defined by Seam. Seam extends the context model defined by the servlet spec—request, session, application—with two new contexts—conversation and business process—that are more meaningful from the point of view of the business logic.
+					</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3357437" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-style="italic">Bijection</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						The notion of <fo:inline font-style="italic">Inversion of Control</fo:inline> or <fo:inline font-style="italic">dependency injection</fo:inline> exists in both JSF and EJB3, as well as in numerous simpler containers. Most of these containers emphasize injection of components that implement <fo:inline font-style="italic">stateless services</fo:inline>. Even when injection of stateful components is supported (such as in JSF), it is virtually useless for handling application state because the scope of the stateful component cannot be defined with sufficient flexibility.
+					</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						<fo:inline font-style="italic">Bijection</fo:inline> differs from IoC in that it is <fo:inline font-style="italic">dynamic</fo:inline>, <fo:inline font-style="italic">contextual</fo:inline>, and <fo:inline font-style="italic">bidirectional</fo:inline>. You can think of it as a mechanism for aliasing contextual variables (names in the various contexts bound to the current thread) to attributes of the component. Bijection allows auto-assembly of stateful components by the container. It even allows a component to safely and easily manipulate the value of a context variable, just by assigning to an attribute of the component.
+					</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3879472" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-style="italic">Workspace Management</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						Optionally, Seam applications may take advantage of <fo:inline font-style="italic">workspace management</fo:inline>, allowing users to freely switch between different conversations (workspaces) in a single browser window. Seam provides not only correct multi-window operation, but also multi-window-like operation in a single window!
+					</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3879497" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-style="italic">Annotated POJOs Everywhere</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						EJB 3.0 embraces annotations and <fo:inline font-style="italic">configuration by exception</fo:inline> as the easiest way to provide information to the container in a declarative form. Unfortunately, JSF is still heavily dependent on verbose XML configuration files. Seam extends the annotations provided by EJB 3.0 with a set of annotations for declarative state management and declarative context demarcation. This lets you eliminate the noisy JSF managed bean declarations and reduce the required XML to just that information which truly belongs in XML (the JSF navigation rules).
+					</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3838738" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-style="italic">Testability as a Core Feature</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						Seam components, being POJOs, are by nature unit testable. But for complex applications, unit testing alone is insufficient. Integration testing has traditionally been a messy and difficult task for Java web applications. Therefore, Seam provides for testability of Seam applications as a core feature of the framework. You can easily write JUnit or TestNG tests that reproduce a whole interaction with a user, exercising all components of the system apart from the view (the JSP or Facelets page). You can run these tests directly inside your IDE, where Seam will automatically deploy EJB components into the JBoss Embeddable EJB3 container.
+					</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3926278" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-style="italic">Get started now!</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						Seam works in any application server that supports EJB 3.0. You can even use Seam in a servlet container like Tomcat, or in any J2EE application server, by leveraging the new JBoss Embeddable EJB3 container.
+					</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						However, we realize that not everyone is ready to make the switch to EJB 3.0. So, in the interim, you can use Seam as a framework for applications that use JSF for presentation, Hibernate (or plain JDBC) for persistence and JavaBeans for application logic. Then, when you're ready to make the switch to EJB 3.0, migration will be straightforward.
+					</fo:block></fo:block></fo:block><fo:block id="id3838787" text-align="center"><fo:external-graphic xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" src="url(images/architecture.png)" width="auto" height="auto" content-width="auto" content-height="auto" content-type="content-type:image/png" text-align="center"/></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			It turns out that the combination of Seam, JSF and EJB3 is <fo:inline font-style="italic">the</fo:inline> simplest way to write a complex web application in Java. You won't believe how little code is required!
+		</fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="body" language="en" format="1" initial-page-number="auto-odd" force-page-count="end-on-even" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="star!
 t" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always" font-weight="bold">Chapter 2.</fo:inline></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-col!
 umn-width(1)"/><fo:table-body><fo:table-row block-progression-!
 dimensio
n.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always"><fo:retrieve-marker retrieve-class-name="section.head.marker" retrieve-position="first-including-carryover" retrieve-boundary="page-sequence"/></fo:inline></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-co!
 lumn-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always" font-weight="bold">Chapter 2. Seam Tutorial</fo:inline></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom!
 -width="0.5pt" border-bottom-style="solid" border-bottom-color!
 ="black"
><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-footnote-separator"><fo:block><fo:leader color="black" leader-pattern="rule" leader-length="1in"/></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block font-family="Liberation Sans,sans-serif,Symbo!
 l,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-!
 region-after-odd"><fo:block font-family="Liberation Sans,sans-!
 serif,Sy
mbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xs!
 l-region-after-even"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body>!
 </fo:table></fo:block></fo:static-content><fo:static-content f!
 low-name
="xsl-region-after-blank"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-b!
 ody></fo:table></fo:block></fo:static-content><fo:flow flow-name="xsl-region-body" start-indent="0pt" end-indent="0pt"><fo:block id="Seam_Reference_Guide-Seam_Tutorial"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats"><fo:block margin-left="0pc"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" color="#a70000" background-color="white" font-size="24pt" font-weight="bold" text-align="left" padding-left="1em" padding-right="1em">Seam Tutorial</fo:block></fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Seam_Tutorial-Try_the_examples"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2!
 .0em" space-before.maximum="2.2em" space-after.minimum="0.1em"!
  space-a
fter.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Try the examples</fo:marker><fo:block color="#a70000" font-size="16pt">2.1. Try the examples</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			In this tutorial, we will assume that you are using the JBoss Enterprise Application Platform with Seam.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The directory structure of each example in Seam follows this pattern:
+		</fo:block><fo:list-block id="id3149949" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3608712" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+					Web pages, images and stylesheets may be found in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">examples/<fo:inline font-style="italic" font-family="Liberation Mono,monospace">registration</fo:inline>/view</fo:inline>
+				</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3937323" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+					Resources such as deployment descriptors and data import scripts may be found in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">examples/<fo:inline font-style="italic" font-family="Liberation Mono,monospace">registration</fo:inline>/resources</fo:inline>
+				</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3507917" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+					Java source code may be found in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">examples/<fo:inline font-style="italic" font-family="Liberation Mono,monospace">registration</fo:inline>/src</fo:inline>
+				</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2681077" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+					The Ant build script is <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">examples/<fo:inline font-style="italic" font-family="Liberation Mono,monospace">registration</fo:inline>/build.xml</fo:inline>
+				</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block id="Seam_Reference_Guide-Try_the_examples-Running_the_examples_on_JBoss_AS"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Running the examples on JBoss Enterprise Application Platform</fo:marker><fo:block color="#a70000" font-size="14pt">2.1.1. Running the examples on JBoss Enterprise Application Platform</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xml!
 ns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				First, make sure you have Ant correctly installed, with <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">$ANT_HOME</fo:inline> and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">$JAVA_HOME</fo:inline> set correctly. Next, make sure you set the location of your JBoss AS installation in the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">build.properties</fo:inline> file in the root folder of your Seam installation. If you haven't already done so, start JBoss AS now by typing <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">bin/run.sh</fo:inline> or <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">bin/run.bat</fo:inline> in the root directory of your JBoss installation.
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				By default the examples will deploy to the default configuration of the server. These examples should be deployed to the production configuration if they are to be used with JBoss Enterprise Application Platform, and the example <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">build.xml</fo:inline> file should be modified to reflect this before building and deploying. Two lines should be changed in this file:
+			</fo:block><fo:block id="id3881619" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt"> &lt;property name="deploy.dir"           value="${jboss.home}/server/production/deploy"/&gt;
+</fo:block><fo:block id="id3797348" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">   &lt;property name="webroot.dir"         
+	value="${deploy.dir}/jboss-web.deployer/ROOT.war"/&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Now, build and deploy the example by typing <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">ant deploy</fo:inline> in the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">examples/<fo:inline font-style="italic" font-family="Liberation Mono,monospace">registration</fo:inline></fo:inline> directory.
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Try it out by accessing <fo:basic-link external-destination="url(http://localhost:8080/seam-registration/)" font-style="italic" color="#0066cc"><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">http://localhost:8080/seam-registration/</fo:inline></fo:basic-link> with your web browser.
+			</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Try_the_examples-Running_the_examples_on_Tomcat"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Running the examples on Tomcat</fo:marker><fo:block color="#a70000" font-size="14pt">2.1.2. Running the examples on Tomcat</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum=!
 "0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				First, make sure you have Ant correctly installed, with <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">$ANT_HOME</fo:inline> and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">$JAVA_HOME</fo:inline> set correctly. Next, make sure you set the location of your Tomcat installation in the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">build.properties</fo:inline> file in the root folder of your Seam installation.
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Now, build and deploy the example by typing <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">ant deploy.tomcat</fo:inline> in the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">examples/<fo:inline font-style="italic" font-family="Liberation Mono,monospace">registration</fo:inline></fo:inline> directory.
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Finally, start Tomcat.
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Try it out by accessing <fo:basic-link external-destination="url(http://localhost:8080/jboss-seam-registration/)" font-style="italic" color="#0066cc"><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">http://localhost:8080/jboss-seam-registration/</fo:inline></fo:basic-link> with your web browser.
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				When you deploy the example to Tomcat, any EJB3 components will run inside the JBoss Embeddable EJB3 container, a complete standalone EJB3 container environment.
+			</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Try_the_examples-Running_the_example_tests"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Running the example tests</fo:marker><fo:block color="#a70000" font-size="14pt">2.1.3. Running the example tests</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-b!
 efore.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Most of the examples come with a suite of TestNG integration tests. The easiest way to run the tests is to run <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">ant testexample</fo:inline> inside the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">examples/<fo:inline font-style="italic" font-family="Liberation Mono,monospace">registration</fo:inline></fo:inline> directory. It is also possible to run the tests inside your IDE using the TestNG plugin.
+			</fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Seam_Tutorial-Your_first_Seam_application_the_registration_example"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Your first Seam application: the registration example</fo:marker><fo:block color="#a70000" font-size="16pt">2.2. Your first Seam application: the registration example</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transition!
 al" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The registration example is a fairly trivial application that lets a new user store his username, real name and password in the database. The example is not intended to show off all of the cool functionality of Seam. However, it demonstrates the use of an EJB3 session bean as a JSF action listener, and basic configuration of Seam.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			We will go slowly, since we realize you might not yet be familiar with EJB 3.0.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The start page displays a very basic form with three input fields. Try filling them in and then submitting the form. This will save a user object in the database.
+		</fo:block><fo:block id="id3666555" text-align="center"><fo:external-graphic xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" src="url(images/registration.png)" width="444px" height="auto" content-width="scale-to-fit" content-height="scale-to-fit" content-type="content-type:image/png" text-align="center"/></fo:block><fo:block id="Seam_Reference_Guide-Your_first_Seam_application_the_registration_example-Understanding_the_code"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0p!
 c"><fo:marker marker-class-name="section.head.marker">Understanding the code</fo:marker><fo:block color="#a70000" font-size="14pt">2.2.1. Understanding the code</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				The example is implemented with two JSP pages, one entity bean and one stateless session bean.
+			</fo:block><fo:block id="id3059371" text-align="center"><fo:external-graphic xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" src="url(images/register.png)" width="auto" height="auto" content-width="auto" content-height="auto" content-type="content-type:image/png" text-align="center"/></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Let us take a look at the code, starting from the bottom.
+			</fo:block><fo:block id="Seam_Reference_Guide-Understanding_the_code-The_entity_bean_User.java"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:block color="#a70000" font-size="13pt">2.2.1.1. The entity bean: <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">User.java</fo:inline></fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.op!
 timum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+					We need an EJB entity bean for user data. This class defines <fo:inline font-style="italic">persistence</fo:inline> and <fo:inline font-style="italic">validation</fo:inline> declaratively, via annotations. It also needs some extra annotations that define the class as a Seam component.
+				</fo:block><fo:block id="id3059443" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Entity
+ at Name("user")
+ at Scope(SESSION)
+ at Table(name="users")
+public class User implements Serializable
+{
+   private static final long serialVersionUID = 1881413500711441951L;
+   
+   private String username;
+   private String password;
+   private String name;
+   
+   public User(String name, String password, String username)
+   {
+      this.name = name;
+      this.password = password;
+      this.username = username;
+   }
+   
+   public User() {}
+   
+   @NotNull @Length(min=5, max=15)
+   public String getPassword()
+   {
+      return password;
+   }
+
+   public void setPassword(String password)
+   {
+      this.password = password;
+   }
+   
+   @NotNull
+   public String getName()
+   {
+      return name;
+   }
+
+   public void setName(String name)
+   {
+      this.name = name;
+   }
+   
+   @Id @NotNull @Length(min=5, max=15)
+   public String getUsername()
+   {
+      return username;
+   }
+
+   public void setUsername(String username)
+   {
+      this.username = username;
+   }
+
+}
+</fo:block><fo:list-block id="id2646029" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-distance-between-starts="1.2em" provisional-label-separation="0.2em"><fo:list-item id="id2646032" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>1.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block margin-left="6pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							The EJB3 standard <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Entity</fo:inline> annotation indicates that the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">User</fo:inline> class is an entity bean.
+						</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2646048" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>2.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block margin-left="6pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							A Seam component needs a <fo:inline font-style="italic">component name</fo:inline> specified by the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Name</fo:inline> annotation. This name must be unique within the Seam application. When JSF asks Seam to resolve a context variable with a name that is the same as a Seam component name, and the context variable is currently undefined (null), Seam will instantiate that component, and bind the new instance to the context variable. In this case, Seam will instantiate a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">User</fo:inline> the first time JSF encounters a variable named <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">user</fo:inline>.
+						</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2646079" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>3.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block margin-left="6pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							Whenever Seam instantiates a component, it binds the new instance to a context variable in the component's <fo:inline font-style="italic">default context</fo:inline>. The default context is specified using the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Scope</fo:inline> annotation. The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">User</fo:inline> bean is a session scoped component.
+						</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2646101" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>4.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block margin-left="6pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							The EJB standard <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Table</fo:inline> annotation indicates that the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">User</fo:inline> class is mapped to the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">users</fo:inline> table.
+						</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2646121" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>5.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block margin-left="6pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">name</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">password</fo:inline> and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">username</fo:inline> are the persistent attributes of the entity bean. All of our persistent attributes define accessor methods. These are needed when this component is used by JSF in the render response and update model values phases.
+						</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2646145" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>6.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block margin-left="6pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							An empty constructor is both required by both the EJB specification and by Seam.
+						</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3936679" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>7.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block margin-left="6pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@NotNull</fo:inline> and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Length</fo:inline> annotations are part of the Hibernate Validator framework. Seam integrates Hibernate Validator and lets you use it for data validation (even if you are not using Hibernate for persistence).
+						</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3936698" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>8.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block margin-left="6pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							The EJB standard <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Id</fo:inline> annotation indicates the primary key attribute of the entity bean.
+						</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+					The most important things to notice in this example are the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Name</fo:inline> and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Scope</fo:inline> annotations. These annotations establish that this class is a Seam component.
+				</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+					We will see below that the properties of our <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">User</fo:inline> class are bound to directly to JSF components and are populated by JSF during the update model values phase. We do not need any tedious glue code to copy data back and forth between the JSP pages and the entity bean domain model.
+				</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+					However, entity beans should not do transaction management or database access. So we cannot use this component as a JSF action listener. For that we need a session bean.
+				</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Understanding_the_code-The_stateless_session_bean_class_RegisterAction.java"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:block color="#a70000" font-size="13pt">2.2.1.2. The stateless session bean class: <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">RegisterAction.java</fo:inline></fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.render!
 x.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+					Most Seam application use session beans as JSF action listeners (you can use JavaBeans instead if you like).
+				</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+					We have exactly one JSF action in our application, and one session bean method attached to it. In this case, we will use a stateless session bean, since all the state associated with our action is held by the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">User</fo:inline> bean.
+				</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+					This is the only really interesting code in the example.
+				</fo:block><fo:block id="id3936806" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Stateless
+ at Name("register")
+public class RegisterAction implements Register
+{
+
+   @In
+   private User user;
+   
+   @PersistenceContext
+   private EntityManager em;
+   
+   @Logger
+   private Log log;
+   
+   public String register()
+   {
+      List existing = em.createQuery(
+         "select username from User where username=#{user.username}")
+         .getResultList();
+         
+      if (existing.size()==0)
+      {
+         em.persist(user);
+         log.info("Registered new user #{user.username}");
+         return "/registered.jsp";
+      }
+      else
+      {
+         FacesMessages.instance().add("User #{user.username} already exists");
+         return null;
+      }
+   }
+
+}
+</fo:block><fo:list-block id="id3936821" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-distance-between-starts="1.2em" provisional-label-separation="0.2em"><fo:list-item id="id3936824" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>1.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block margin-left="6pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							The EJB standard <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Stateless</fo:inline> annotation marks this class as stateless session bean.
+						</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3722643" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>2.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block margin-left="6pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@In</fo:inline> annotation marks an attribute of the bean as injected by Seam. In this case, the attribute is injected from a context variable named <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">user</fo:inline> (the instance variable name).
+						</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3722661" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>3.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block margin-left="6pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							The EJB standard <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@PersistenceContext</fo:inline> annotation is used to inject the EJB3 entity manager.
+						</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3722674" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>4.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block margin-left="6pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							The Seam <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Logger</fo:inline> annotation is used to inject the component's <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Log</fo:inline> instance.
+						</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3722691" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>5.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block margin-left="6pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							The action listener method uses the standard EJB3 <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">EntityManager</fo:inline> API to interact with the database, and returns the JSF outcome. Note that, since this is a sesson bean, a transaction is automatically begun when the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">register()</fo:inline> method is called, and committed when it completes.
+						</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3722711" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>6.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block margin-left="6pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							Notice that Seam lets you use a JSF EL expression inside EJB-QL. Under the covers, this results in an ordinary JPA <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">setParameter()</fo:inline> call on the standard JPA <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Query</fo:inline> object. Nice, huh?
+						</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3722729" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>7.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block margin-left="6pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Log</fo:inline> API lets us easily display templated log messages.
+						</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3722742" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>8.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block margin-left="6pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							JSF action listener methods return a string-valued outcome that determines what page will be displayed next. A null outcome (or a void action listener method) redisplays the previous page. In plain JSF, it is normal to always use a JSF <fo:inline font-style="italic">navigation rule</fo:inline> to determine the JSF view id from the outcome. For complex application this indirection is useful and a good practice. However, for very simple examples like this one, Seam lets you use the JSF view id as the outcome, eliminating the requirement for a navigation rule. <fo:inline font-style="italic">Note that when you use a view id as an outcome, Seam always performs a browser redirect.</fo:inline>
+						</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3722767" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>9.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block margin-left="6pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							Seam provides a number of <fo:inline font-style="italic">built-in components</fo:inline> to help solve common problems. The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">FacesMessages</fo:inline> component makes it easy to display templated error or success messages. Built-in Seam components may be obtained by injection, or by calling an <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">instance()</fo:inline> method.
+						</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+					Note that we did not explicitly specify a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Scope</fo:inline> this time. Each Seam component type has a default scope if not explicitly specified. For stateless session beans, the default scope is the stateless context. Actually, <fo:inline font-style="italic">all</fo:inline> stateless session beans belong in the stateless context.
+				</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+					Our session bean action listener performs the business and persistence logic for our mini-application. In more complex applications, we might need to layer the code and refactor persistence logic into a dedicated data access component. That is perfectly trivial to do. But notice that Seam does not force you into any particular strategy for application layering.
+				</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+					Furthermore, notice that our session bean has simultaneous access to context associated with the web request (the form values in the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">User</fo:inline> object, for example), and state held in transactional resources (the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">EntityManager</fo:inline> object). This is a break from traditional J2EE architectures. Again, if you are more comfortable with the traditional J2EE layering, you can certainly implement that in a Seam application. But for many applications, it is not very useful.
+				</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Understanding_the_code-The_session_bean_local_interface_Register.java"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:block color="#a70000" font-size="13pt">2.2.1.3. The session bean local interface: <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Register.java</fo:inline></fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Ex!
 tensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+					Naturally, our session bean needs a local interface.
+				</fo:block><fo:block><fo:block id="id3504824" background-color="#eeeeee" keep-together.within-column="" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em"><fo:block id="id3504830" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Local
+public interface Register
+{
+   public String register();
+}
+</fo:block><fo:block font-weight="normal" font-size="10pt" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" color="#a70000" background-color="white" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-previous.within-column="always">Example 2.1. </fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+					That is the end of the Java code. Now onto the deployment descriptors.
+				</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Understanding_the_code-The_Seam_component_deployment_descriptor_components.xml"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:block color="#a70000" font-size="13pt">2.2.1.4. The Seam component deployment descriptor: <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">components.xml</fo:inline></fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.!
 renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+					If you have used many Java frameworks before, you will be used to having to declare all your component classes in some kind of XML file that gradually grows more and more unmanageable as your project matures. You will be relieved to know that Seam does not require that application components be accompanied by XML. Most Seam applications require a very small amount of XML that does not grow very much as the project gets bigger.
+				</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+					Nevertheless, it is often useful to be able to provide for <fo:inline font-style="italic">some</fo:inline> external configuration of <fo:inline font-style="italic">some</fo:inline> components (particularly the components built in to Seam). You have a couple of options here, but the most flexible option is to provide this configuration in a file called <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">components.xml</fo:inline>, located in the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">WEB-INF</fo:inline> directory. We will use the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">components.xml</fo:inline> file to tell Seam how to find our EJB components in JNDI:
+				</fo:block><fo:block><fo:block id="id3504900" background-color="#eeeeee" keep-together.within-column="" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em"><fo:block id="id3504905" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;components xmlns="http://jboss.com/products/seam/components"
+            xmlns:core="http://jboss.com/products/seam/core"&gt;
+     &lt;core:init jndi-pattern="@jndiPattern@"/&gt;
+&lt;/components&gt;
+</fo:block><fo:block font-weight="normal" font-size="10pt" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" color="#a70000" background-color="white" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-previous.within-column="always">Example 2.2. </fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+					This code configures a property named <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">jndiPattern</fo:inline> of a built-in Seam component named <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.core.init</fo:inline>.
+				</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Understanding_the_code-The_web_deployment_description_web.xml"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:block color="#a70000" font-size="13pt">2.2.1.5. The web deployment description: <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">web.xml</fo:inline></fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-!
 before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+					The presentation layer for our mini-application will be deployed in a WAR. So we will need a web deployment descriptor.
+				</fo:block><fo:block><fo:block id="id3504949" background-color="#eeeeee" keep-together.within-column="" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em"><fo:block id="id3504955" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;web-app version="2.5"
+    xmlns="http://java.sun.com/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
+        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"&gt;
+
+    &lt;!- - Seam - -&gt;
+
+    &lt;listener&gt;
+        &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/listener-class&gt;
+    &lt;/listener&gt;
+    
+     &lt;listener&gt;
+         &lt;listener-class&gt;com.sun.faces.config.ConfigureListener&lt;/listener-class&gt;
+    &lt;/listener&gt;
+
+    &lt;context-param&gt;
+        &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-name&gt;
+        &lt;param-value&gt;client&lt;/param-value&gt;
+    &lt;/context-param&gt;
+
+    &lt;context-param&gt;
+        &lt;param-name&gt;javax.faces.DEFAULT_SUFFIX&lt;/param-name&gt;
+        &lt;param-value&gt;.jspx&lt;/param-value&gt;
+    &lt;/context-param&gt;
+
+        &lt;servlet&gt;
+                &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;
+                &lt;servlet-class&gt;javax.faces.webapp.FacesServlet&lt;/servlet-class&gt;
+                &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;
+        &lt;/servlet&gt;
+
+        
+        &lt;servlet-mapping&gt;
+                &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;
+                &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;
+        &lt;/servlet-mapping&gt;
+
+&lt;/web-app&gt;
+</fo:block><fo:block font-weight="normal" font-size="10pt" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" color="#a70000" background-color="white" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-previous.within-column="always">Example 2.3. </fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+					This <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">web.xml</fo:inline> file configures Seam and Glassfish. The configuration you see here is pretty much identical in all Seam applications.
+				</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Understanding_the_code-The_JSF_configration_faces_config.xml"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:block color="#a70000" font-size="13pt">2.2.1.6. The JSF configration: <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">faces-config.xml</fo:inline></fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-be!
 fore.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+					All Seam applications use JSF views as the presentation layer. So we will need <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">faces-config.xml</fo:inline>.
+				</fo:block><fo:block><fo:block id="id2822652" background-color="#eeeeee" keep-together.within-column="" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em"><fo:block id="id2822658" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;!DOCTYPE faces-config 
+PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN"
+                            "http://java.sun.com/dtd/web-facesconfig_1_0.dtd"&gt;
+&lt;faces-config&gt;
+
+    &lt;!- - A phase listener is needed by all Seam applications - -&gt;
+    
+    &lt;lifecycle&gt;
+        &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-listener&gt;
+    &lt;/lifecycle&gt;
+
+&lt;/faces-config&gt;
+</fo:block><fo:block font-weight="normal" font-size="10pt" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" color="#a70000" background-color="white" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-previous.within-column="always">Example 2.4. </fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+					The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">faces-config.xml</fo:inline> file integrates Seam into JSF. Note that we do not need any JSF managed bean declarations; the managed beans are the Seam components. In Seam applications, the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">faces-config.xml</fo:inline> is used much less often than in plain JSF.
+				</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+					In fact, once you have all the basic descriptors set up, the <fo:inline font-style="italic">only</fo:inline> XML you need to write as you add new functionality to a Seam application is the navigation rules, and possibly jBPM process definitions. Seam takes the view that <fo:inline font-style="italic">process flow</fo:inline> and <fo:inline font-style="italic">configuration data</fo:inline> are the only things that truly belong in XML.
+				</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+					In this simple example, we do not even need a navigation rule, since we decided to embed the view id in our action code.
+				</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Understanding_the_code-The_EJB_deployment_descriptor_ejb_jar.xml"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:block color="#a70000" font-size="13pt">2.2.1.7. The EJB deployment descriptor: <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">ejb-jar.xml</fo:inline></fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" !
 space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+					The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">ejb-jar.xml</fo:inline> file integrates Seam with EJB3, by attaching the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">SeamInterceptor</fo:inline> to all session beans in the archive.
+				</fo:block><fo:block id="id2822743" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;ejb-jar xmlns="http://java.sun.com/xml/ns/javaee" 
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
+                           http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"
+         version="3.0"&gt;
+         
+   &lt;interceptors&gt;
+     &lt;interceptor&gt;
+       &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/interceptor-class&gt;
+     &lt;/interceptor&gt;
+   &lt;/interceptors&gt;
+   
+   &lt;assembly-descriptor&gt;
+      &lt;interceptor-binding&gt;
+         &lt;ejb-name&gt;*&lt;/ejb-name&gt;
+         &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/interceptor-class&gt;
+      &lt;/interceptor-binding&gt;
+   &lt;/assembly-descriptor&gt;
+   
+&lt;/ejb-jar&gt;
+</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Understanding_the_code-The_EJB_persistence_deployment_descriptor_persistence.xml"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:block color="#a70000" font-size="13pt">2.2.1.8. The EJB persistence deployment descriptor: <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">persistence.xml</fo:inline></fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.!
 renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+					The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">persistence.xml</fo:inline> file tells the EJB persistence provider where to find the datasource, and contains some vendor-specific settings. In this case, enables automatic schema export at startup time.
+				</fo:block><fo:block id="id2822788" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;persistence xmlns="http://java.sun.com/xml/ns/persistence" 
+             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
+                           http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" 
+             version="1.0"&gt;
+    &lt;persistence-unit name="userDatabase"&gt;
+      &lt;provider&gt;org.hibernate.ejb.HibernatePersistence&lt;/provider&gt;
+      &lt;jta-data-source&gt;java:/DefaultDS&lt;/jta-data-source&gt;
+      &lt;properties&gt;
+         &lt;property name="hibernate.hbm2ddl.auto" value="create-drop"/&gt;
+      &lt;/properties&gt;
+    &lt;/persistence-unit&gt;
+&lt;/persistence&gt;
+</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Understanding_the_code-The_view_register.jsp_and_registered.jsp"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:block color="#a70000" font-size="13pt">2.2.1.9. The view: <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">register.jsp</fo:inline> and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">registered.jsp</fo:inline></fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.o!
 rg/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+					The view pages for a Seam application could be implemented using any technology that supports JSF. In this example we use JSP, since it is familiar to most developers and since we have minimal requirements here anyway. (But if you take our advice, you will use Facelets for your own applications.)
+				</fo:block><fo:block><fo:block id="id4180139" background-color="#eeeeee" keep-together.within-column="" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em"><fo:block id="id4180144" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %&gt;
+&lt;%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %&gt;
+&lt;%@ taglib uri="http://jboss.com/products/seam/taglib" prefix="s" %&gt;
+&lt;html&gt;
+ &lt;head&gt;
+  &lt;title&gt;Register New User&lt;/title&gt;
+ &lt;/head&gt;
+ &lt;body&gt;
+  &lt;f:view&gt;
+   &lt;h:form&gt;
+     &lt;table border="0"&gt;
+       &lt;s:validateAll&gt;
+         &lt;tr&gt;
+           &lt;td&gt;Username&lt;/td&gt;
+           &lt;td&gt;&lt;h:inputText value="#{user.username}"/&gt;&lt;/td&gt;
+         &lt;/tr&gt;
+         &lt;tr&gt;
+           &lt;td&gt;Real Name&lt;/td&gt;
+           &lt;td&gt;&lt;h:inputText value="#{user.name}"/&gt;&lt;/td&gt;
+         &lt;/tr&gt;
+         &lt;tr&gt;
+           &lt;td&gt;Password&lt;/td&gt;
+           &lt;td&gt;&lt;h:inputSecret value="#{user.password}"/&gt;&lt;/td&gt;
+         &lt;/tr&gt;
+       &lt;/s:validateAll&gt;
+     &lt;/table&gt;
+     &lt;h:messages/&gt;
+     &lt;h:commandButton type="submit" value="Register" action="#{register.register}"/&gt;
+   &lt;/h:form&gt;
+  &lt;/f:view&gt;
+ &lt;/body&gt;
+&lt;/html&gt;
+</fo:block><fo:block font-weight="normal" font-size="10pt" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" color="#a70000" background-color="white" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-previous.within-column="always">Example 2.5. </fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+					The only thing here that is specific to Seam is the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;s:validateAll&gt;</fo:inline> tag. This JSF component tells JSF to validate all the contained input fields against the Hibernate Validator annotations specified on the entity bean.
+				</fo:block><fo:block><fo:block id="id4180175" background-color="#eeeeee" keep-together.within-column="" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em"><fo:block id="id4180180" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %&gt;
+&lt;%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %&gt;
+&lt;html&gt;
+ &lt;head&gt;
+  &lt;title&gt;Successfully Registered New User&lt;/title&gt;
+ &lt;/head&gt;
+ &lt;body&gt;
+  &lt;f:view&gt;
+    Welcome, &lt;h:outputText value="#{user.name}"/&gt;, 
+    you are successfully registered as &lt;h:outputText value="#{user.username}"/&gt;.
+  &lt;/f:view&gt;
+ &lt;/body&gt;
+&lt;/html&gt;
+</fo:block><fo:block font-weight="normal" font-size="10pt" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" color="#a70000" background-color="white" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-previous.within-column="always">Example 2.6. </fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+					This is a boring old JSP pages using standard JSF components. There is nothing specific to Seam here.
+				</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Understanding_the_code-The_EAR_deployment_descriptor_application.xml"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:block color="#a70000" font-size="13pt">2.2.1.10. The EAR deployment descriptor: <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">application.xml</fo:inline></fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Ext!
 ensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+					Finally, since our application is deployed as an EAR, we need a deployment descriptor there, too.
+				</fo:block><fo:block><fo:block id="id4180222" background-color="#eeeeee" keep-together.within-column="" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em"><fo:block id="id4180227" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;application xmlns="http://java.sun.com/xml/ns/javaee" 
+             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+             xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
+                                   http://java.sun.com/xml/ns/javaee/application_5.xsd"
+             version="5"&gt;
+             
+    &lt;display-name&gt;Seam Registration&lt;/display-name&gt;
+
+    &lt;module&gt;
+        &lt;web&gt;
+            &lt;web-uri&gt;jboss-seam-registration.war&lt;/web-uri&gt;
+            &lt;context-root&gt;/seam-registration&lt;/context-root&gt;
+        &lt;/web&gt;
+    &lt;/module&gt;
+    &lt;module&gt;
+        &lt;ejb&gt;jboss-seam-registration.jar&lt;/ejb&gt;
+    &lt;/module&gt;
+    &lt;module&gt;
+        &lt;java&gt;jboss-seam.jar&lt;/java&gt;
+    &lt;/module&gt;
+    &lt;module&gt;
+        &lt;java&gt;el-ri.jar&lt;/java&gt;
+    &lt;/module&gt;
+    
+&lt;/application&gt;
+</fo:block><fo:block font-weight="normal" font-size="10pt" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" color="#a70000" background-color="white" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-previous.within-column="always">Example 2.7. </fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+					This deployment descriptor links modules in the enterprise archive and binds the web application to the context root <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">/seam-registration</fo:inline>.
+				</fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Your_first_Seam_application_the_registration_example-How_it_works"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">How it works</fo:marker><fo:block color="#a70000" font-size="14pt">2.2.2. How it works</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em!
 " space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				When the form is submitted, JSF asks Seam to resolve the variable named <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">user</fo:inline>. Since there is no value already bound to that name (in any Seam context), Seam instantiates the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">user</fo:inline> component, and returns the resulting <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">User</fo:inline> entity bean instance to JSF after storing it in the Seam session context.
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				The form input values are now validated against the Hibernate Validator constraints specified on the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">User</fo:inline> entity. If the constraints are violated, JSF redisplays the page. Otherwise, JSF binds the form input values to properties of the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">User</fo:inline> entity bean.
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Next, JSF asks Seam to resolve the variable named <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">register</fo:inline>. Seam finds the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">RegisterAction</fo:inline> stateless session bean in the stateless context and returns it. JSF invokes the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">register()</fo:inline> action listener method.
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Seam intercepts the method call and injects the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">User</fo:inline> entity from the Seam session context, before continuing the invocation.
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">register()</fo:inline> method checks if a user with the entered username already exists. If so, an error message is queued with the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">FacesMessages</fo:inline> component, and a null outcome is returned, causing a page redisplay. The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">FacesMessages</fo:inline> component interpolates the JSF expression embedded in the message string and adds a JSF <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">FacesMessage</fo:inline> to the view.
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				If no user with that username exists, the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">"/registered.jsp"</fo:inline> outcome triggers a browser redirect to the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">registered.jsp</fo:inline> page. When JSF comes to render the page, it asks Seam to resolve the variable named <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">user</fo:inline> and uses property values of the returned <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">User</fo:inline> entity from Seam's session scope.
+			</fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Seam_Tutorial-Clickable_lists_in_Seam_the_messages_example"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Clickable lists in Seam: the messages example</fo:marker><fo:block color="#a70000" font-size="16pt">2.3. Clickable lists in Seam: the messages example</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www!
 .renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Clickable lists of database search results are such an important part of any online application that Seam provides special functionality on top of JSF to make it easier to query data using EJB-QL or HQL and display it as a clickable list using a JSF <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;h:dataTable&gt;</fo:inline>. The messages example demonstrates this functionality.
+		</fo:block><fo:block id="id3790742" text-align="center"><fo:external-graphic xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" src="url(images/messages.png)" width="444px" height="auto" content-width="scale-to-fit" content-height="scale-to-fit" content-type="content-type:image/png" text-align="center"/></fo:block><fo:block id="Seam_Reference_Guide-Clickable_lists_in_Seam_the_messages_example-Understanding_the_code"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marke!
 r marker-class-name="section.head.marker">Understanding the code</fo:marker><fo:block color="#a70000" font-size="14pt">2.3.1. Understanding the code</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				The message list example has one entity bean, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Message</fo:inline>, one session bean, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">MessageListBean</fo:inline> and one JSP.
+			</fo:block><fo:block id="Seam_Reference_Guide-Understanding_the_code-The_entity_bean_Message.java"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:block color="#a70000" font-size="13pt">2.3.1.1. The entity bean: <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Message.java</fo:inline></fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-bef!
 ore.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+					The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Message</fo:inline> entity defines the title, text, date and time of a message, and a flag indicating whether the message has been read:
+				</fo:block><fo:block id="id3668424" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Entity
+ at Name("message")
+ at Scope(EVENT)
+public class Message implements Serializable
+{
+   private Long id;
+   private String title;
+   private String text;
+   private boolean read;
+   private Date datetime;
+   
+   @Id @GeneratedValue
+   public Long getId() {
+      return id;
+   }
+   public void setId(Long id) {
+      this.id = id;
+   }
+   
+   @NotNull @Length(max=100)
+   public String getTitle() {
+      return title;
+   }
+   public void setTitle(String title) {
+      this.title = title;
+   }
+   
+   @NotNull @Lob
+   public String getText() {
+      return text;
+   }
+   public void setText(String text) {
+      this.text = text;
+   }
+   
+   @NotNull
+   public boolean isRead() {
+      return read;
+   }
+   public void setRead(boolean read) {
+      this.read = read;
+   }
+   
+   @NotNull 
+   @Basic @Temporal(TemporalType.TIMESTAMP)
+   public Date getDatetime() {
+      return datetime;
+   }
+   public void setDatetime(Date datetime) {
+      this.datetime = datetime;
+   }
+   
+}
+</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Understanding_the_code-The_stateful_session_bean_MessageManagerBean.java"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:block color="#a70000" font-size="13pt">2.3.1.2. The stateful session bean: <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">MessageManagerBean.java</fo:inline></fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/!
 Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+					Just like in the previous example, we have a session bean, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">MessageManagerBean</fo:inline>, which defines the action listener methods for the two buttons on our form. One of the buttons selects a message from the list, and displays that message. The other button deletes a message. So far, this is not so different to the previous example.
+				</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+					But <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">MessageManagerBean</fo:inline> is also responsible for fetching the list of messages the first time we navigate to the message list page. There are various ways the user could navigate to the page, and not all of them are preceded by a JSF action—the user might have bookmarked the page, for example. So the job of fetching the message list takes place in a Seam <fo:inline font-style="italic">factory method</fo:inline>, instead of in an action listener method.
+				</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+					We want to cache the list of messages in memory between server requests, so we will make this a stateful session bean.
+				</fo:block><fo:block id="id3668514" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Stateful
+ at Scope(SESSION)
+ at Name("messageManager")
+public class MessageManagerBean implements Serializable, MessageManager
+{
+
+   @DataModel
+   private List&lt;Message&gt; messageList;
+   
+   @DataModelSelection
+   @Out(required=false)
+   private Message message;
+   
+   @PersistenceContext(type=EXTENDED)
+   private EntityManager em;
+   
+   @Factory("messageList")
+   public void findMessages()
+   {
+      messageList = em.createQuery("from Message msg order by msg.datetime desc").getResultList();
+   }
+   
+   public void select()
+   {
+      message.setRead(true);
+   }
+   
+   public void delete()
+   {
+      messageList.remove(message);
+      em.remove(message);
+      message=null;
+   }
+   
+   @Remove @Destroy
+   public void destroy() {}
+
+}
+</fo:block><fo:list-block id="id3668530" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-distance-between-starts="1.2em" provisional-label-separation="0.2em"><fo:list-item id="id3668533" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>1.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block margin-left="6pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@DataModel</fo:inline> annotation exposes an attibute of type <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">java.util.List</fo:inline> to the JSF page as an instance of <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">javax.faces.model.DataModel</fo:inline>. This allows us to use the list in a JSF <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;h:dataTable&gt;</fo:inline> with clickable links for each row. In this case, the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">DataModel</fo:inline> is made available in a session context variable named <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">messageList</fo:inline>.
+						</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3668568" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>2.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block margin-left="6pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@DataModelSelection</fo:inline> annotation tells Seam to inject the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">List</fo:inline> element that corresponded to the clicked link.
+						</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3668585" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>3.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block margin-left="6pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Out</fo:inline> annotation then exposes the selected value directly to the page. So every time a row of the clickable list is selected, the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Message</fo:inline> is injected to the attribute of the stateful bean, and the subsequently <fo:inline font-style="italic">outjected</fo:inline> to the event context variable named <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">message</fo:inline>.
+						</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2769927" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>4.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block margin-left="6pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							This stateful bean has an EJB3 <fo:inline font-style="italic">extended persistence context</fo:inline>. The messages retrieved in the query remain in the managed state as long as the bean exists, so any subsequent method calls to the stateful bean can update them without needing to make any explicit call to the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">EntityManager</fo:inline>.
+						</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2769947" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>5.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block margin-left="6pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							The first time we navigate to the JSP page, there will be no value in the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">messageList</fo:inline> context variable. The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Factory</fo:inline> annotation tells Seam to create an instance of <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">MessageManagerBean</fo:inline> and invoke the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">findMessages()</fo:inline> method to initialize the value. We call <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">findMessages()</fo:inline> a <fo:inline font-style="italic">factory method</fo:inline> for <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">messages</fo:inline>.
+						</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2769986" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>6.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block margin-left="6pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">select()</fo:inline> action listener method marks the selected <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Message</fo:inline> as read, and updates it in the database.
+						</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2770003" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>7.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block margin-left="6pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">delete()</fo:inline> action listener method removes the selected <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Message</fo:inline> from the database.
+						</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2770020" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>8.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block margin-left="6pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							All stateful session bean Seam components <fo:inline font-style="italic">must</fo:inline> have a method marked <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Remove @Destroy</fo:inline> to ensure that Seam will remove the stateful bean when the Seam context ends, and clean up any server-side state.
+						</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+					Note that this is a session-scoped Seam component. It is associated with the user login session, and all requests from a login session share the same instance of the component. (In Seam applications, we usually use session-scoped components sparingly.)
+				</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Understanding_the_code-The_session_bean_local_interface_MessageManager.java"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:block color="#a70000" font-size="13pt">2.3.1.3. The session bean local interface: <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">MessageManager.java</fo:inline></fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.render!
 x.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+					All session beans have a business interface, of course.
+				</fo:block><fo:block id="id2770075" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Local
+public interface MessageManager
+{
+   public void findMessages();
+   public void select();
+   public void delete();
+   public void destroy();
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+					From now on, we will not show local interfaces in our code examples.
+				</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+					Let us skip over <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">components.xml</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">persistence.xml</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">web.xml</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">ejb-jar.xml</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">faces-config.xml</fo:inline> and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">application.xml</fo:inline> since they are much the same as the previous example, and go straight to the JSP.
+				</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Understanding_the_code-The_view_messages.jsp"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:block color="#a70000" font-size="13pt">2.3.1.4. The view: <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">messages.jsp</fo:inline></fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-befor!
 e.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+					The JSP page is a straightforward use of the JSF <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;h:dataTable&gt;</fo:inline> component. Again, nothing specific to Seam.
+				</fo:block><fo:block><fo:block id="id4181737" background-color="#eeeeee" keep-together.within-column="" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em"><fo:block id="id4181742" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %&gt;
+&lt;%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %&gt;
+&lt;html&gt;
+ &lt;head&gt;
+  &lt;title&gt;Messages&lt;/title&gt;
+ &lt;/head&gt;
+ &lt;body&gt;
+  &lt;f:view&gt;
+   &lt;h:form&gt;
+     &lt;h2&gt;Message List&lt;/h2&gt;
+     &lt;h:outputText value="No messages to display" rendered="#{messageList.rowCount==0}"/&gt;
+     &lt;h:dataTable var="msg" value="#{messageList}" rendered="#{messageList.rowCount&gt;0}"&gt;
+        &lt;h:column&gt;
+           &lt;f:facet name="header"&gt;
+              &lt;h:outputText value="Read"/&gt;
+           &lt;/f:facet&gt;
+           &lt;h:selectBooleanCheckbox value="#{msg.read}" disabled="true"/&gt;
+        &lt;/h:column&gt;
+        &lt;h:column&gt;
+           &lt;f:facet name="header"&gt;
+              &lt;h:outputText value="Title"/&gt;
+           &lt;/f:facet&gt;
+           &lt;h:commandLink value="#{msg.title}" action="#{messageManager.select}"/&gt;
+        &lt;/h:column&gt;
+        &lt;h:column&gt;
+           &lt;f:facet name="header"&gt;
+              &lt;h:outputText value="Date/Time"/&gt;
+           &lt;/f:facet&gt;
+           &lt;h:outputText value="#{msg.datetime}"&gt;
+              &lt;f:convertDateTime type="both" dateStyle="medium" timeStyle="short"/&gt;
+           &lt;/h:outputText&gt;
+        &lt;/h:column&gt;
+        &lt;h:column&gt;
+           &lt;h:commandButton value="Delete" action="#{messageManager.delete}"/&gt;
+        &lt;/h:column&gt;
+     &lt;/h:dataTable&gt;
+     &lt;h3&gt;&lt;h:outputText value="#{message.title}"/&gt;&lt;/h3&gt;
+     &lt;div&gt;&lt;h:outputText value="#{message.text}"/&gt;&lt;/div&gt;
+   &lt;/h:form&gt;
+  &lt;/f:view&gt;
+ &lt;/body&gt;
+&lt;/html&gt;
+</fo:block><fo:block font-weight="normal" font-size="10pt" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" color="#a70000" background-color="white" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-previous.within-column="always">Example 2.8. </fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Clickable_lists_in_Seam_the_messages_example-How_it_works"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" st!
 art-indent="0pc"><fo:marker marker-class-name="section.head.marker">How it works</fo:marker><fo:block color="#a70000" font-size="14pt">2.3.2. How it works</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				The first time we navigate to the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">messages.jsp</fo:inline> page, whether by a JSF postback (faces request) or a direct browser GET request (non-faces request), the page will try to resolve the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">messageList</fo:inline> context variable. Since this context variable is not initialized, Seam will call the factory method <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">findMessages()</fo:inline>, which performs a query against the database and results in a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">DataModel</fo:inline> being outjected. This <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">DataModel</fo:inline> provides the row data needed for rendering the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;h:dataTable&gt;</fo:inline>.
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				When the user clicks the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;h:commandLink&gt;</fo:inline>, JSF calls the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">select()</fo:inline> action listener. Seam intercepts this call and injects the selected row data into the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">message</fo:inline> attribute of the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">messageManager</fo:inline> component. The action listener fires, marking the selected <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Message</fo:inline> as read. At the end of the call, Seam outjects the selected <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Message</fo:inline> to the context variable named <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">message</fo:inline>. Next, the EJB container commits the tra!
 nsaction, and the change to the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Message</fo:inline> is flushed to the database. Finally, the page is re-rendered, redisplaying the message list, and displaying the selected message below it.
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				If the user clicks the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;h:commandButton&gt;</fo:inline>, JSF calls the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">delete()</fo:inline> action listener. Seam intercepts this call and injects the selected row data into the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">message</fo:inline> attribute of the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">messageList</fo:inline> component. The action listener fires, removing the selected <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Message</fo:inline> from the list, and also calling <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">remove()</fo:inline> on the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">EntityManager</fo:inline>. At the end of the call, Seam refreshes the <fo:inline font-weight="bold" font-family=!
 "Liberation Mono,monospace">messageList</fo:inline> context variable and clears the context variable named <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">message</fo:inline>. The EJB container commits the transaction, and deletes the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Message</fo:inline> from the database. Finally, the page is re-rendered, redisplaying the message list.
+			</fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Seam_Tutorial-Seam_and_jBPM_the_todo_list_example"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Seam and jBPM: the todo list example</fo:marker><fo:block color="#a70000" font-size="16pt">2.4. Seam and jBPM: the todo list example</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions!
 " space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			jBPM provides sophisticated functionality for workflow and task management. To get a small taste of how jBPM integrates with Seam, we will show you a simple <fo:inline font-style="italic">todo list</fo:inline> application. Since managing lists of tasks is such core functionality for jBPM, there is hardly any Java code at all in this example.
+		</fo:block><fo:block id="id3403658" text-align="center"><fo:external-graphic xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" src="url(images/todo.png)" width="444px" height="auto" content-width="scale-to-fit" content-height="scale-to-fit" content-type="content-type:image/png" text-align="center"/></fo:block><fo:block id="Seam_Reference_Guide-Seam_and_jBPM_the_todo_list_example-Understanding_the_code"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-clas!
 s-name="section.head.marker">Understanding the code</fo:marker><fo:block color="#a70000" font-size="14pt">2.4.1. Understanding the code</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				The center of this example is the jBPM process definition. There are also two JSPs and two trivial JavaBeans (There was no reason to use session beans, since they do not access the database, or have any other transactional behavior). Let us start with the process definition:
+			</fo:block><fo:block id="id3403717" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;process-definition name="todo"&gt;
+   
+   &lt;start-state name="start"&gt;
+      &lt;transition to="todo"/&gt;
+   &lt;/start-state&gt;
+   
+   &lt;task-node name="todo"&gt;
+      &lt;task name="todo" description="#{todoList.description}"&gt;
+         &lt;assignment actor-id="#{actor.id}"/&gt;
+      &lt;/task&gt;
+      &lt;transition to="done"/&gt;
+   &lt;/task-node&gt;
+   
+   &lt;end-state name="done"/&gt;
+   
+&lt;/process-definition&gt;
+</fo:block><fo:list-block id="id3403727" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-distance-between-starts="1.2em" provisional-label-separation="0.2em"><fo:list-item id="id3403730" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>1.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block margin-left="6pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;start-state&gt;</fo:inline> node represents the logical start of the process. When the process starts, it immediately transitions to the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">todo</fo:inline> node.
+					</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3403748" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>2.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block margin-left="6pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;task-node&gt;</fo:inline> node represents a <fo:inline font-style="italic">wait state</fo:inline>, where business process execution pauses, waiting for one or more tasks to be performed.
+					</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3403765" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>3.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block margin-left="6pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;task&gt;</fo:inline> element defines a task to be performed by a user. Since there is only one task defined on this node, when it is complete, execution resumes, and we transition to the end state. The task gets its description from a Seam component named <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">todoList</fo:inline> (one of the JavaBeans).
+					</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3403786" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>4.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block margin-left="6pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						Tasks need to be assigned to a user or group of users when they are created. In this case, the task is assigned to the current user, which we get from a built-in Seam component named <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">actor</fo:inline>. Any Seam component may be used to perform task assignment.
+					</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3388475" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>5.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block margin-left="6pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;end-state&gt;</fo:inline> node defines the logical end of the business process. When execution reaches this node, the process instance is destroyed.
+					</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				If we view this process definition using the process definition editor provided by JBossIDE, this is what it looks like:
+			</fo:block><fo:block id="id3388501" text-align="center"><fo:external-graphic xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" src="url(images/todo-process.png)" width="auto" height="auto" content-width="auto" content-height="auto" content-type="content-type:image/png" text-align="center"/></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				This document defines our <fo:inline font-style="italic">business process</fo:inline> as a graph of nodes. This is the most trivial possible business process: there is one <fo:inline font-style="italic">task</fo:inline> to be performed, and when that task is complete, the business process ends.
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				The first JavaBean handles the login screen <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">login.jsp</fo:inline>. Its job is just to initialize the jBPM actor id using the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">actor</fo:inline> component. (In a real application, it would also need to authenticate the user.)
+			</fo:block><fo:block><fo:block id="id3388556" background-color="#eeeeee" keep-together.within-column="" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em"><fo:block id="id3388561" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Name("login")
+public class Login {
+   
+   @In
+   private Actor actor;
+   
+   private String user;
+
+   public String getUser() {
+      return user;
+   }
+
+   public void setUser(String user) {
+      this.user = user;
+   }
+   
+   public String login()
+   {
+      actor.setId(user);
+      return "/todo.jsp";
+   }
+}
+</fo:block><fo:block font-weight="normal" font-size="10pt" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" color="#a70000" background-color="white" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-previous.within-column="always">Example 2.9. </fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Here we see the use of <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@In</fo:inline> to inject the built-in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Actor</fo:inline> component.
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				The JSP itself is trivial:
+			</fo:block><fo:block><fo:block id="id3388588" background-color="#eeeeee" keep-together.within-column="" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em"><fo:block id="id3388594" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%&gt;
+&lt;%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;title&gt;Login&lt;/title&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;h1&gt;Login&lt;/h1&gt;
+&lt;f:view&gt;
+    &lt;h:form&gt;
+      &lt;div&gt;
+        &lt;h:inputText value="#{login.user}"/&gt;
+        &lt;h:commandButton value="Login" action="#{login.login}"/&gt;
+      &lt;/div&gt;
+    &lt;/h:form&gt;
+&lt;/f:view&gt;
+&lt;/body&gt;
+&lt;/html&gt;
+</fo:block><fo:block font-weight="normal" font-size="10pt" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" color="#a70000" background-color="white" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-previous.within-column="always">Example 2.10. </fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				The second JavaBean is responsible for starting business process instances, and ending tasks.
+			</fo:block><fo:block><fo:block id="id3388611" background-color="#eeeeee" keep-together.within-column="" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em"><fo:block id="id3388622" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Name("todoList")
+public class TodoList {
+   
+   private String description;
+   
+   public String getDescription()
+   {
+      return description;
+   }
+
+   public void setDescription(String description) {
+      this.description = description;
+   }
+   
+   @CreateProcess(definition="todo")
+   public void createTodo() {}
+   
+   @StartTask @EndTask
+   public void done() {}
+
+}
+</fo:block><fo:list-block id="id3388633" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-distance-between-starts="1.2em" provisional-label-separation="0.2em"><fo:list-item id="id3388635" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>1.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block margin-left="6pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							The description property accepts user input form the JSP page, and exposes it to the process definition, allowing the task description to be set.
+						</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3388646" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>2.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block margin-left="6pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							The Seam <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@CreateProcess</fo:inline> annotation creates a new jBPM process instance for the named process definition.
+						</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3307725" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>3.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block margin-left="6pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							The Seam <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@StartTask</fo:inline> annotation starts work on a task. The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@EndTask</fo:inline> ends the task, and allows the business process execution to resume.
+						</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block font-weight="normal" font-size="10pt" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" color="#a70000" background-color="white" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-previous.within-column="always">Example 2.11. </fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				In a more realistic example, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@StartTask</fo:inline> and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@EndTask</fo:inline> would not appear on the same method, because there is usually work to be done using the application in order to complete the task.
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Finally, the meat of the application is in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">todo.jsp</fo:inline>:
+			</fo:block><fo:block><fo:block id="id3307770" background-color="#eeeeee" keep-together.within-column="" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em"><fo:block id="id3307776" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %&gt;
+&lt;%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %&gt;
+&lt;%@ taglib uri="http://jboss.com/products/seam/taglib" prefix="s" %&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;title&gt;Todo List&lt;/title&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;h1&gt;Todo List&lt;/h1&gt;
+&lt;f:view&gt;
+   &lt;h:form id="list"&gt;
+      &lt;div&gt;
+         &lt;h:outputText value="There are no todo items." rendered="#{empty 
+                                       taskInstanceList}"/&gt;
+         &lt;h:dataTable value="#{taskInstanceList}" var="task" rendered="#{not empty 
+                                       taskInstanceList}"&gt;
+            &lt;h:column&gt;
+                &lt;f:facet name="header"&gt;
+                    &lt;h:outputText value="Description"/&gt;
+                &lt;/f:facet&gt;
+                &lt;h:inputText value="#{task.description}"/&gt;
+            &lt;/h:column&gt;
+            &lt;h:column&gt;
+                &lt;f:facet name="header"&gt;
+                    &lt;h:outputText value="Created"/&gt;
+                &lt;/f:facet&gt;
+                &lt;h:outputText value="#{task.taskMgmtInstance.processInstance.start}"&gt;
+                    &lt;f:convertDateTime type="date"/&gt;
+                &lt;/h:outputText&gt;
+            &lt;/h:column&gt;
+            &lt;h:column&gt;
+                &lt;f:facet name="header"&gt;
+                    &lt;h:outputText value="Priority"/&gt;
+                &lt;/f:facet&gt;
+                &lt;h:inputText value="#{task.priority}" style="width: 30"/&gt;
+            &lt;/h:column&gt;
+            &lt;h:column&gt;
+                &lt;f:facet name="header"&gt;
+                    &lt;h:outputText value="Due Date"/&gt;
+                &lt;/f:facet&gt;
+                &lt;h:inputText value="#{task.dueDate}" style="width: 100"&gt;
+                    &lt;f:convertDateTime type="date" dateStyle="short"/&gt;
+                &lt;/h:inputText&gt;
+            &lt;/h:column&gt;
+            &lt;h:column&gt;
+                &lt;s:button value="Done" action="#{todoList.done}" taskInstance="#{task}"/&gt;
+            &lt;/h:column&gt;
+         &lt;/h:dataTable&gt;
+      &lt;/div&gt;
+      &lt;div&gt;
+      &lt;h:messages/&gt;
+      &lt;/div&gt;
+      &lt;div&gt;
+         &lt;h:commandButton value="Update Items" action="update"/&gt;
+      &lt;/div&gt;
+   &lt;/h:form&gt;
+   &lt;h:form id="new"&gt;
+      &lt;div&gt;
+         &lt;h:inputText value="#{todoList.description}"/&gt;
+         &lt;h:commandButton value="Create New Item" action="#{todoList.createTodo}"/&gt;
+      &lt;/div&gt;
+   &lt;/h:form&gt;
+&lt;/f:view&gt;
+&lt;/body&gt;
+&lt;/html&gt;
+</fo:block><fo:block font-weight="normal" font-size="10pt" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" color="#a70000" background-color="white" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-previous.within-column="always">Example 2.12. </fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Let us take this one piece at a time.
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				The page renders a list of tasks, which it gets from a built-in Seam component named <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">taskInstanceList</fo:inline>. The list is defined inside a JSF form.
+			</fo:block><fo:block id="id3307834" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;h:form id="list"&gt;
+   &lt;div&gt;
+      &lt;h:outputText value="There are no todo items." rendered="#{empty taskInstanceList}"/&gt;
+      &lt;h:dataTable value="#{taskInstanceList}" var="task" rendered="#{not empty taskInstanceList}"&gt;
+         ...
+      &lt;/h:dataTable&gt;
+   &lt;/div&gt;
+&lt;/h:form&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Each element of the list is an instance of the jBPM class <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">TaskInstance</fo:inline>. The following code simply displays the interesting properties of each task in the list. For the description, priority and due date, we use input controls, to allow the user to update these values.
+			</fo:block><fo:block id="id3307855" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;h:column&gt;
+    &lt;f:facet name="header"&gt;
+       &lt;h:outputText value="Description"/&gt;
+    &lt;/f:facet&gt;
+    &lt;h:inputText value="#{task.description}"/&gt;
+&lt;/h:column&gt;
+&lt;h:column&gt;
+    &lt;f:facet name="header"&gt;
+        &lt;h:outputText value="Created"/&gt;
+    &lt;/f:facet&gt;
+    &lt;h:outputText value="#{task.taskMgmtInstance.processInstance.start}"&gt;
+        &lt;f:convertDateTime type="date"/&gt;
+    &lt;/h:outputText&gt;
+&lt;/h:column&gt;
+&lt;h:column&gt;
+    &lt;f:facet name="header"&gt;
+        &lt;h:outputText value="Priority"/&gt;
+    &lt;/f:facet&gt;
+    &lt;h:inputText value="#{task.priority}" style="width: 30"/&gt;
+&lt;/h:column&gt;
+&lt;h:column&gt;
+    &lt;f:facet name="header"&gt;
+        &lt;h:outputText value="Due Date"/&gt;
+    &lt;/f:facet&gt;
+    &lt;h:inputText value="#{task.dueDate}" style="width: 100"&gt;
+        &lt;f:convertDateTime type="date" dateStyle="short"/&gt;
+    &lt;/h:inputText&gt;
+&lt;/h:column&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				This button ends the task by calling the action method annotated <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@StartTask @EndTask</fo:inline>. It passes the task id to Seam as a request parameter:
+			</fo:block><fo:block id="id3307882" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;h:column&gt;
+    &lt;s:button value="Done" action="#{todoList.done}" taskInstance="#{task}"/&gt;
+&lt;/h:column&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				(Note that this is using a Seam <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;s:button&gt;</fo:inline> JSF control from the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">seam-ui.jar</fo:inline> package.)
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				This button is used to update the properties of the tasks. When the form is submitted, Seam and jBPM will make any changes to the tasks persistent. There is no need for any action listener method:
+			</fo:block><fo:block id="id3307908" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;h:commandButton value="Update Items" action="update"/&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				A second form on the page is used to create new items, by calling the action method annotated <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@CreateProcess</fo:inline>.
+			</fo:block><fo:block id="id3435509" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;h:form id="new"&gt;
+    &lt;div&gt;
+        &lt;h:inputText value="#{todoList.description}"/&gt;
+        &lt;h:commandButton value="Create New Item" action="#{todoList.createTodo}"/&gt;
+    &lt;/div&gt;
+&lt;/h:form&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				There are several other files needed for the example, but they are just standard jBPM and Seam configuration and not very interesting.
+			</fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Seam_Tutorial-Seam_pageflow_the_numberguess_example"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Seam pageflow: the numberguess example</fo:marker><fo:block color="#a70000" font-size="16pt">2.5. Seam pageflow: the numberguess example</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Exte!
 nsions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			For Seam applications with relatively freeform (ad hoc) navigation, JSF/Seam navigation rules are a perfectly good way to define the page flow. For applications with a more constrained style of navigation, especially for user interfaces which are more stateful, navigation rules make it difficult to really understand the flow of the system. To understand the flow, you need to piece it together from the view pages, the actions and the navigation rules.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Seam allows you to use a jPDL process definition to define pageflow. The simple number guessing example shows how this is done.
+		</fo:block><fo:block id="id3435556" text-align="center"><fo:external-graphic xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" src="url(images/numberguess.png)" width="444px" height="auto" content-width="scale-to-fit" content-height="scale-to-fit" content-type="content-type:image/png" text-align="center"/></fo:block><fo:block id="Seam_Reference_Guide-Seam_pageflow_the_numberguess_example-Understanding_the_code"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker ma!
 rker-class-name="section.head.marker">Understanding the code</fo:marker><fo:block color="#a70000" font-size="14pt">2.5.1. Understanding the code</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				The example is implemented using one JavaBean, three JSP pages and a jPDL pageflow definition. Let us begin with the pageflow:
+			</fo:block><fo:block id="id3435611" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;pageflow-definition name="numberGuess"&gt;
+   
+   &lt;start-page name="displayGuess" view-id="/numberGuess.jsp"&gt;
+      &lt;redirect/&gt;
+      &lt;transition name="guess" to="evaluateGuess"&gt;
+          &lt;action expression="#{numberGuess.guess}" /&gt;
+      &lt;/transition&gt;
+   &lt;/start-page&gt;
+   
+   &lt;decision name="evaluateGuess" expression="#{numberGuess.correctGuess}"&gt;
+      &lt;transition name="true" to="win"/&gt;
+      &lt;transition name="false" to="evaluateRemainingGuesses"/&gt;
+   &lt;/decision&gt;
+   
+   &lt;decision name="evaluateRemainingGuesses" expression="#{numberGuess.lastGuess}"&gt;
+      &lt;transition name="true" to="lose"/&gt;
+      &lt;transition name="false" to="displayGuess"/&gt;
+   &lt;/decision&gt;
+   
+   &lt;page name="win" view-id="/win.jsp"&gt;
+      &lt;redirect/&gt;
+      &lt;end-conversation /&gt;
+   &lt;/page&gt;
+   
+   &lt;page name="lose" view-id="/lose.jsp"&gt;
+      &lt;redirect/&gt;
+      &lt;end-conversation /&gt;
+   &lt;/page&gt;
+   
+&lt;/pageflow-definition&gt;
+</fo:block><fo:list-block id="id3435630" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-distance-between-starts="1.2em" provisional-label-separation="0.2em"><fo:list-item id="id3435633" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>1.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block margin-left="6pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;page&gt;</fo:inline> element defines a wait state where the system displays a particular JSF view and waits for user input. The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">view-id</fo:inline> is the same JSF view id used in plain JSF navigation rules. The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">redirect</fo:inline> attribute tells Seam to use post-then-redirect when navigating to the page. (This results in friendly browser URLs.)
+					</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3435657" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>2.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block margin-left="6pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;transition&gt;</fo:inline> element names a JSF outcome. The transition is triggered when a JSF action results in that outcome. Execution will then proceed to the next node of the pageflow graph, after invocation of any jBPM transition actions.
+					</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3435673" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>3.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block margin-left="6pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						A transition <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;action&gt;</fo:inline> is just like a JSF action, except that it occurs when a jBPM transition occurs. The transition action can invoke any Seam component.
+					</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3435687" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>4.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block margin-left="6pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						A <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;decision&gt;</fo:inline> node branches the pageflow, and determines the next node to execute by evaluating a JSF EL expression.
+					</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Here is what the pageflow looks like in the JBossIDE pageflow editor:
+			</fo:block><fo:block id="id2658732" text-align="center"><fo:external-graphic xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" src="url(images/numberguess-pageflow.png)" width="444px" height="auto" content-width="scale-to-fit" content-height="scale-to-fit" content-type="content-type:image/png" text-align="center"/></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Now that we have seen the pageflow, it is very, very easy to understand the rest of the application!
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Here is the main page of the application, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">numberGuess.jsp</fo:inline>:
+			</fo:block><fo:block><fo:block id="id2658775" background-color="#eeeeee" keep-together.within-column="" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em"><fo:block id="id2658780" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%&gt;
+&lt;%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;title&gt;Guess a number...&lt;/title&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;h1&gt;Guess a number...&lt;/h1&gt;
+&lt;f:view&gt;
+    &lt;h:form&gt;
+        &lt;h:outputText value="Higher!" rendered="#{numberGuess.randomNumber&gt;numberGuess.currentGuess}" /&gt;
+        &lt;h:outputText value="Lower!" rendered="#{numberGuess.randomNumber&lt;numberGuess.currentGuess}" /&gt;
+        &lt;br /&gt;
+        I'm thinking of a number between &lt;h:outputText value="#{numberGuess.smallest}" /&gt; and 
+        &lt;h:outputText value="#{numberGuess.biggest}" /&gt;. You have 
+        &lt;h:outputText value="#{numberGuess.remainingGuesses}" /&gt; guesses.
+        &lt;br /&gt;
+        Your guess: 
+        &lt;h:inputText value="#{numberGuess.currentGuess}" id="guess" required="true"&gt;
+            &lt;f:validateLongRange
+                maximum="#{numberGuess.biggest}" 
+                minimum="#{numberGuess.smallest}"/&gt;
+        &lt;/h:inputText&gt;
+        &lt;h:commandButton type="submit" value="Guess" action="guess" /&gt;
+        &lt;br/&gt;
+        &lt;h:message for="guess" style="color: red"/&gt;
+    &lt;/h:form&gt;
+&lt;/f:view&gt;
+&lt;/body&gt;
+&lt;/html&gt;
+</fo:block><fo:block font-weight="normal" font-size="10pt" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" color="#a70000" background-color="white" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-previous.within-column="always">Example 2.13. </fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Notice how the command button names the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">guess</fo:inline> transition instead of calling an action directly.
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">win.jsp</fo:inline> page is predictable:
+			</fo:block><fo:block><fo:block id="id2658822" background-color="#eeeeee" keep-together.within-column="" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em"><fo:block id="id2658827" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%&gt;
+&lt;%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;title&gt;You won!&lt;/title&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;h1&gt;You won!&lt;/h1&gt;
+&lt;f:view&gt;
+    Yes, the answer was &lt;h:outputText value="#{numberGuess.currentGuess}" /&gt;.
+    It took you &lt;h:outputText value="#{numberGuess.guessCount}" /&gt; guesses.
+    Would you like to &lt;a href="numberGuess.seam"&gt;play again&lt;/a&gt;?
+  &lt;/f:view&gt;
+&lt;/body&gt;
+&lt;/html&gt;
+</fo:block><fo:block font-weight="normal" font-size="10pt" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" color="#a70000" background-color="white" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-previous.within-column="always">Example 2.14. </fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				As is <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">lose.jsp</fo:inline> (which I can not be bothered copy/pasting). Finally, the JavaBean Seam component:
+			</fo:block><fo:block><fo:block id="id2658849" background-color="#eeeeee" keep-together.within-column="" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em"><fo:block id="id2658859" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Name("numberGuess")
+ at Scope(ScopeType.CONVERSATION)
+public class NumberGuess {
+   
+   private int randomNumber;
+   private Integer currentGuess;
+   private int biggest;
+   private int smallest;
+   private int guessCount;
+   private int maxGuesses;
+   
+   @Create 
+   @Begin(pageflow="numberGuess")
+   public void begin()
+   {
+      randomNumber = new Random().nextInt(100);
+      guessCount = 0;
+      biggest = 100;
+      smallest = 1;
+   }
+   
+   public void setCurrentGuess(Integer guess)
+   {
+      this.currentGuess = guess;
+   }
+   
+   public Integer getCurrentGuess()
+   {
+      return currentGuess;
+   }
+   
+   public void guess()
+   {
+      if (currentGuess&gt;randomNumber)
+      {
+         biggest = currentGuess - 1;
+      }
+      if (currentGuess&lt;randomNumber)
+      {
+         smallest = currentGuess + 1;
+      }
+      guessCount ++;
+   }
+   
+   public boolean isCorrectGuess()
+   {
+      return currentGuess==randomNumber;
+   }
+   
+   public int getBiggest()
+   {
+      return biggest;
+   }
+   
+   public int getSmallest()
+   {
+      return smallest;
+   }
+   
+   public int getGuessCount()
+   {
+      return guessCount;
+   }
+   
+   public boolean isLastGuess()
+   {
+      return guessCount==maxGuesses;
+   }
+
+   public int getRemainingGuesses() {
+      return maxGuesses-guessCount;
+   }
+
+   public void setMaxGuesses(int maxGuesses) {
+      this.maxGuesses = maxGuesses;
+   }
+
+   public int getMaxGuesses() {
+      return maxGuesses;
+   }
+
+   public int getRandomNumber() {
+      return randomNumber;
+   }
+}
+</fo:block><fo:list-block id="id2658889" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-distance-between-starts="1.2em" provisional-label-separation="0.2em"><fo:list-item id="id2658891" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>1.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block margin-left="6pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							The first time a JSP page asks for a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">numberGuess</fo:inline> component, Seam will create a new one for it, and the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Create</fo:inline> method will be invoked, allowing the component to initialize itself.
+						</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2658910" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>2.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block margin-left="6pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Begin</fo:inline> annotation starts a Seam <fo:inline font-style="italic">conversation</fo:inline> (much more about that later), and specifies the pageflow definition to use for the conversation's page flow.
+						</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block font-weight="normal" font-size="10pt" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" color="#a70000" background-color="white" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-previous.within-column="always">Example 2.15. </fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				As you can see, this Seam component is pure business logic! It does not need to know anything at all about the user interaction flow. This makes the component potentially more reuseable.
+			</fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Seam_Tutorial-A_complete_Seam_application_the_Hotel_Booking_example"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">A complete Seam application: the Hotel Booking example</fo:marker><fo:block color="#a70000" font-size="16pt">2.6. A complete Seam application: the Hotel Booking example</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-A_complete_Seam_a!
 pplication_the_Hotel_Booking_example-Introduction"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Introduction</fo:marker><fo:block color="#a70000" font-size="14pt">2.6.1. Introduction</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" sp!
 ace-after.minimum="0.8em" space-after.maximum="1.2em">
+				The booking application is a complete hotel room reservation system incorporating the following features:
+			</fo:block><fo:list-block id="id2818114" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id2818117" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						User registration
+					</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2818125" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						Login
+					</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2818133" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						Logout
+					</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2818141" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						Set password
+					</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2818149" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						Hotel search
+					</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2818157" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						Hotel selection
+					</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2818165" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						Room reservation
+					</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2818174" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						Reservation confirmation
+					</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2818181" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						Existing reservation list
+					</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" keep-together.within-column="always">
+				<fo:block id="Booking_Image" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always"><fo:block id="id2818204" text-align="center"><fo:external-graphic src="url(images/booking.png)" width="444px" height="auto" content-width="scale-to-fit" content-height="scale-to-fit" content-type="content-type:image/png" text-align="center"/></fo:block><fo:block font-weight="normal" font-size="10pt" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" color="#a70000" background-color="white" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-previous.within-column="always">Figure 2.1. Booking Example</fo:block></fo:block>
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				The booking application uses JSF, EJB 3.0 and Seam, together with Facelets for the view. There is also a port of this application to JSF, Facelets, Seam, JavaBeans and Hibernate3.
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				One of the things you will notice if you play with this application for long enough is that it is extremely <fo:inline font-style="italic">robust</fo:inline>. You can play with back buttons and browser refresh and opening multiple windows and entering nonsensical data as much as you like and you will find it very difficult to make the application crash. You might think that we spent weeks testing and fixing bugs to achive this. Actually, this is not the case. Seam was designed to make it very straightforward to build robust web applications and a lot of robustness that you are probably used to having to code yourself comes naturally and automatically with Seam.
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				As you browse the sourcecode of the example application, and learn how the application works, observe how the declarative state management and integrated validation has been used to achieve this robustness.
+			</fo:block></fo:block><fo:block id="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-Overview_of_the_booking_example"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Overview of the booking example</fo:marker><fo:block color="#a70000" font-size="14pt">2.6.2. Overview of the booking example</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.c!
 om/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				The project structure is identical to the previous one, to install and deploy this application, please refer to <fo:basic-link internal-destination="Seam_Reference_Guide-Seam_Tutorial-Try_the_examples"><fo:inline font-style="italic" color="#0066cc">Section 2.1, “Try the examples”</fo:inline></fo:basic-link>. Once you have successfully started the application, you can access it by pointing your browser to <fo:basic-link external-destination="url(http://localhost:8080/seam-booking/)" font-style="italic" color="#0066cc"><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">http://localhost:8080/seam-booking/</fo:inline></fo:basic-link>
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Just nine classes (plus six session beans local interfaces) where used to implement this application. Six session bean action listeners contain all the business logic for the listed features.
+			</fo:block><fo:list-block id="id3790914" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3790917" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">BookingListAction</fo:inline> retrieves existing bookings for the currently logged in user.
+					</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3790930" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">ChangePasswordAction</fo:inline> updates the password of the currently logged in user.
+					</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3790943" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">HotelBookingAction</fo:inline> implements the core functionality of the application: hotel room searching, selection, booking and booking confirmation. This functionality is implemented as a <fo:inline font-style="italic">conversation</fo:inline>, so this is the most interesting class in the application.
+					</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3790963" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">RegisterAction</fo:inline> registers a new system user.
+					</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Three entity beans implement the application's persistent domain model.
+			</fo:block><fo:list-block id="id3790982" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3790984" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Hotel</fo:inline> is an entity bean that represents a hotel
+					</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3790997" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Booking</fo:inline> is an entity bean that represents an existing booking
+					</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3791010" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">User</fo:inline> is an entity bean to represents a user who can make hotel bookings
+					</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block id="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-Understanding_Seam_conversations"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Understanding Seam conversations</fo:marker><fo:block color="#a70000" font-size="14pt">2.6.3. Understanding Seam conversations</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http:!
 //www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				We encourage you browse the sourcecode at your pleasure. In this tutorial we will concentrate upon one particular piece of functionality: hotel search, selection, booking and confirmation. From the point of view of the user, everything from selecting a hotel to confirming a booking is one continuous unit of work, a <fo:inline font-style="italic">conversation</fo:inline>. Searching, however, is <fo:inline font-style="italic">not</fo:inline> part of the conversation. The user can select multiple hotels from the same search results page, in different browser tabs.
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Most web application architectures have no first class construct to represent a conversation. This causes enormous problems managing state associated with the conversation. Usually, Java web applications use a combination of two techniques: first, some state is thrown into the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">HttpSession</fo:inline>; second, persistable state is flushed to the database after every request, and reconstructed from the database at the beginning of each new request.
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Since the database is the least scalable tier, this often results in an utterly unacceptable lack of scalability. Added latency is also a problem, due to the extra traffic to and from the database on every request. To reduce this redundant traffic, Java applications often introduce a data (second-level) cache that keeps commonly accessed data between requests. This cache is necessarily inefficient, because invalidation is based upon an LRU policy instead of being based upon when the user has finished working with the data. Furthermore, because the cache is shared between many concurrent transactions, we have introduced a whole raft of problem's associated with keeping the cached state consistent with the database.
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Now consider the state held in the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">HttpSession</fo:inline>. By very careful programming, we might be able to control the size of the session data. This is a lot more difficult than it sounds, since web browsers permit ad hoc non-linear navigation. But suppose we suddenly discover a system requirement that says that a user is allowed to have <fo:inline font-style="italic">mutiple concurrent conversations</fo:inline>, halfway through the development of the system (this has happened to me). Developing mechanisms to isolate session state associated with different concurrent conversations, and incorporating failsafes to ensure that conversation state is destroyed when the user aborts one of the conversations by closing a browser window or tab can be tough. 
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Now there is a better way.
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Seam introduces the <fo:inline font-style="italic">conversation context</fo:inline> as a first class construct. You can safely keep conversational state in this context, and be assured that it will have a well-defined lifecycle. Even better, you will not need to be continually pushing data back and forth between the application server and the database, since the conversation context is a natural cache of data that the user is currently working with.
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Usually, the components we keep in the conversation context are stateful session beans. (We can also keep entity beans and JavaBeans in the conversation context.) There is an ancient canard in the Java community that stateful session beans are a scalability killer. This may have been true in 1998 when WebFoobar 1.0 was released. It is no longer true today. Application servers like JBoss 4.0 have extremely sophisticated mechanisms for stateful session bean state replication. (For example, the JBoss EJB3 container performs fine-grained replication, replicating only those bean attribute values which actually changed.) Note that all the traditional technical arguments for why stateful beans are inefficient apply equally to the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">HttpSession</fo:inline>, so the practice of shifting state from business tier stateful session bean components to the web session to try and improve performance is unbelievably misg!
 uided. It is certainly possible to write unscalable applications using stateful session beans, by using stateful beans incorrectly, or by using them for the wrong thing. But that does not mean you should <fo:inline font-style="italic">never</fo:inline> use them. Anyway, Seam guides you toward a safe usage model. 
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				The booking example application shows how stateful components with different scopes can collaborate together to achieve complex behaviors. The main page of the booking application allows the user to search for hotels. The search results are kept in the Seam session scope. When the user navigates to one of these hotels, a conversation begins, and a conversation scoped component calls back to the session scoped component to retrieve the selected hotel.
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				The booking example also demonstrates the use of Ajax4JSF to implement rich client behavior without the use of handwritten JavaScript.
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				The search functionality is implemented using a session-scope stateful session bean, similar to the one we saw in the message list example above.
+			</fo:block><fo:block id="id3932895" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Stateful
+ at Name("hotelSearch")
+ at Scope(ScopeType.SESSION)
+ at Restrict("#{identity.loggedIn}")
+public class HotelSearchingAction implements HotelSearching
+{
+   
+   @PersistenceContext
+   private EntityManager em;
+   
+   private String searchString;
+   private int pageSize = 10;
+   private int page;
+   
+   @DataModel
+   private List&lt;Hotel&gt; hotels;
+   
+   public String find()
+   {
+      page = 0;
+      queryHotels();   
+      return "main";
+   }
+
+   public String nextPage()
+   {
+      page++;
+      queryHotels();
+      return "main";
+   }
+      
+   private void queryHotels()
+   {
+      String searchPattern = searchString==null ? "%" : '%' + 
+         searchString.toLowerCase().replace('*', '%') + '%';
+      hotels = em.createQuery("select h from Hotel h where lower(h.name) like 
+        :search or lower(h.city) like :search 
+        or lower(h.zip) like :search or lower(h.address) like :search")
+            .setParameter("search", searchPattern)
+            .setMaxResults(pageSize)
+            .setFirstResult( page * pageSize )
+            .getResultList();
+   }
+   
+   public boolean isNextPageAvailable()
+   {
+      return hotels!=null &amp;&amp; hotels.size()==pageSize;
+   }
+   
+   public int getPageSize() {
+      return pageSize;
+   }
+
+   public void setPageSize(int pageSize) {
+      this.pageSize = pageSize;
+   }
+
+   public String getSearchString()
+   {
+      return searchString;
+   }
+
+   public void setSearchString(String searchString)
+   {
+      this.searchString = searchString;
+   }
+   
+   @Destroy @Remove
+   public void destroy() {}
+
+}
+</fo:block><fo:list-block id="id3932925" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-distance-between-starts="1.2em" provisional-label-separation="0.2em"><fo:list-item id="id3932928" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>1.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block margin-left="6pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						The EJB standard <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Stateful</fo:inline> annotation identifies this class as a stateful session bean. Stateful session beans are scoped to the conversation context by default.
+					</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3503703" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>2.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block margin-left="6pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Restrict</fo:inline> annotation applies a security restriction to the component. It restricts access to the component allowing only logged-in users. The security chapter explains more about security in Seam.
+					</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3503718" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>3.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block margin-left="6pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@DataModel</fo:inline> annotation exposes a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">List</fo:inline> as a JSF <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">ListDataModel</fo:inline>. This makes it easy to implement clickable lists for search screens. In this case, the list of hotels is exposed to the page as a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">ListDataModel</fo:inline> in the conversation variable named <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">hotels</fo:inline>.
+					</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3503748" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>4.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block margin-left="6pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						The EJB standard <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Remove</fo:inline> annotation specifies that a stateful session bean should be removed and its state destroyed after invocation of the annotated method. In Seam, all stateful session beans should define a method marked <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Destroy @Remove</fo:inline>. This is the EJB remove method that will be called when Seam destroys the session context. Actually, the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Destroy</fo:inline> annotation is of more general usefulness, since it can be used for any kind of cleanup that should happen when any Seam context ends. If you do not have an <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Destroy @Remove</fo:inline> method, state will leak and you will suffer performance problems.
+					</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				The main page of the application is a Facelets page. Let us look at the fragment which relates to searching for hotels:
+			</fo:block><fo:block id="id3503800" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;div class="section"&gt;
+&lt;h:form&gt;
+  
+  &lt;span class="errors"&gt;
+    &lt;h:messages globalOnly="true"/&gt;
+  &lt;/span&gt;
+    
+  &lt;h1&gt;Search Hotels&lt;/h1&gt;
+  &lt;fieldset&gt; 
+     &lt;h:inputText value="#{hotelSearch.searchString}" style="width: 165px;"&gt;
+        &lt;a:support event="onkeyup" actionListener="#{hotelSearch.find}" 
+                   reRender="searchResults" /&gt;
+     &lt;/h:inputText&gt;
+      
+     &lt;a:commandButton value="Find Hotels" action="#{hotelSearch.find}" 
+                      styleClass="button" reRender="searchResults"/&gt;
+      
+     &lt;a:status&gt;
+        &lt;f:facet name="start"&gt;
+           &lt;h:graphicImage value="/img/spinner.gif"/&gt;
+        &lt;/f:facet&gt;
+     &lt;/a:status&gt;
+     &lt;br/&gt;
+     &lt;h:outputLabel for="pageSize"&gt;Maximum results:&lt;/h:outputLabel&gt; 
+     &lt;h:selectOneMenu value="#{hotelSearch.pageSize}" id="pageSize"&gt;
+        &lt;f:selectItem itemLabel="5" itemValue="5"/&gt;
+        &lt;f:selectItem itemLabel="10" itemValue="10"/&gt;
+        &lt;f:selectItem itemLabel="20" itemValue="20"/&gt;
+     &lt;/h:selectOneMenu&gt;
+  &lt;/fieldset&gt;
+    
+&lt;/h:form&gt;
+&lt;/div&gt;
+
+&lt;a:outputPanel id="searchResults"&gt;
+  &lt;div class="section"&gt;
+  &lt;h:outputText value="No Hotels Found" 
+                rendered="#{hotels != null and hotels.rowCount==0}"/&gt;
+  &lt;h:dataTable value="#{hotels}" var="hot" rendered="#{hotels.rowCount&gt;0}"&gt;
+    &lt;h:column&gt;
+      &lt;f:facet name="header"&gt;Name&lt;/f:facet&gt;
+      #{hot.name}
+    &lt;/h:column&gt;
+    &lt;h:column&gt;
+      &lt;f:facet name="header"&gt;Address&lt;/f:facet&gt;
+      #{hot.address}
+    &lt;/h:column&gt;
+    &lt;h:column&gt;
+      &lt;f:facet name="header"&gt;City, State&lt;/f:facet&gt;
+      #{hot.city}, #{hot.state}, #{hot.country}
+    &lt;/h:column&gt; 
+    &lt;h:column&gt;
+      &lt;f:facet name="header"&gt;Zip&lt;/f:facet&gt;
+      #{hot.zip}
+    &lt;/h:column&gt;
+    &lt;h:column&gt;
+      &lt;f:facet name="header"&gt;Action&lt;/f:facet&gt;
+      &lt;s:link value="View Hotel" action="#{hotelBooking.selectHotel(hot)}"/&gt;
+    &lt;/h:column&gt;
+  &lt;/h:dataTable&gt;
+  &lt;s:link value="More results" action="#{hotelSearch.nextPage}" 
+          rendered="#{hotelSearch.nextPageAvailable}"/&gt;
+  &lt;/div&gt;
+&lt;/a:outputPanel&gt;
+</fo:block><fo:list-block id="id3503838" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-distance-between-starts="1.2em" provisional-label-separation="0.2em"><fo:list-item id="id3503840" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>1.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block margin-left="6pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						The Ajax4JSF <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;a:support&gt;</fo:inline> tag allows a JSF action event listener to be called by asynchronous <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">XMLHttpRequest</fo:inline> when a JavaScript event like <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">onkeyup</fo:inline> occurs. Even better, the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">reRender</fo:inline> attribute lets us render a fragment of the JSF page and perform a partial page update when the asynchronous response is received.
+					</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3503867" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>2.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block margin-left="6pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						The Ajax4JSF <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;a:status&gt;</fo:inline> tag lets us display a cheesy annimated image while we wait for asynchronous requests to return.
+					</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3503881" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>3.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block margin-left="6pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						The Ajax4JSF <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;a:outputPanel&gt;</fo:inline> tag defines a region of the page which can be re-rendered by an asynchronous request.
+					</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2650811" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>4.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block margin-left="6pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						The Seam <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;s:link&gt;</fo:inline> tag lets us attach a JSF action listener to an ordinary (non-JavaScript) HTML link. The advantage of this over the standard JSF <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;h:commandLink&gt;</fo:inline> is that it preserves the operation of "open in new window" and "open in new tab". Also notice that we use a method binding with a parameter: <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">#{hotelBooking.selectHotel(hot)}</fo:inline>. This is not possible in the standard Unified EL, but Seam provides an extension to the EL that lets you use parameters on any method binding expression.
+					</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				This page displays the search results dynamically as we type, and lets us choose a hotel and pass it to the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">selectHotel()</fo:inline> method of the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">HotelBookingAction</fo:inline>, which is where the <fo:inline font-style="italic">really</fo:inline> interesting stuff is going to happen.
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Now lets see how the booking example application uses a conversation-scoped stateful session bean to achieve a natural cache of persistent data related to the conversation. The following code example is pretty long. But if you think of it as a list of scripted actions that implement the various steps of the conversation, it is understandable. Read the class from top to bottom, as if it were a story.
+			</fo:block><fo:block id="id2650882" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Stateful
+ at Name("hotelBooking")
+ at Restrict("#{identity.loggedIn}")
+public class HotelBookingAction implements HotelBooking
+{
+   
+   @PersistenceContext(type=EXTENDED)
+   private EntityManager em;
+   
+   @In 
+   private User user;
+   
+   @In(required=false) @Out
+   private Hotel hotel;
+   
+   @In(required=false) 
+   @Out(required=false)
+   private Booking booking;
+     
+   @In
+   private FacesMessages facesMessages;
+      
+   @In
+   private Events events;
+   
+   @Logger 
+   private Log log;
+   
+   @Begin
+   public String selectHotel(Hotel selectedHotel)
+   {
+      hotel = em.merge(selectedHotel);
+      return "hotel";
+   }
+   
+   public String bookHotel()
+   {      
+      booking = new Booking(hotel, user);
+      Calendar calendar = Calendar.getInstance();
+      booking.setCheckinDate( calendar.getTime() );
+      calendar.add(Calendar.DAY_OF_MONTH, 1);
+      booking.setCheckoutDate( calendar.getTime() );
+      
+      return "book";
+   }
+
+   public String setBookingDetails()
+   {
+      if (booking==null || hotel==null) return "main";
+      if ( !booking.getCheckinDate().before( booking.getCheckoutDate() ) )
+      {
+         facesMessages.add("Check out date must be later than check in date");
+         return null;
+      }
+      else
+      {
+         return "confirm";
+      }
+   }
+
+   @End
+   public String confirm()
+   {
+      if (booking==null || hotel==null) return "main";
+      em.persist(booking);
+      facesMessages.add
+       ("Thank you, #{user.name}, your confimation number for #{hotel.name} is #{booking.id}");
+      log.info("New booking: #{booking.id} for #{user.username}");
+      events.raiseEvent("bookingConfirmed");
+      return "confirmed";
+   }
+   
+   @End
+   public String cancel()
+   {
+      return "main";
+   }
+   
+   @Destroy @Remove
+   public void destroy() {}
+
+}
+</fo:block><fo:list-block id="id2650916" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-distance-between-starts="1.2em" provisional-label-separation="0.2em"><fo:list-item id="id2650919" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>1.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block margin-left="6pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						This bean uses an EJB3 <fo:inline font-style="italic">extended persistence context</fo:inline>, so that any entity instances remain managed for the whole lifecycle of the stateful session bean.
+					</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2650933" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>2.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block margin-left="6pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Out</fo:inline> annotation declares that an attribute value is <fo:inline font-style="italic">outjected</fo:inline> to a context variable after method invocations. In this case, the context variable named <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">hotel</fo:inline> will be set to the value of the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">hotel</fo:inline> instance variable after every action listener invocation completes.
+					</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2650960" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>3.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block margin-left="6pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Begin</fo:inline> annotation specifies that the annotated method begins a <fo:inline font-style="italic">long-running conversation</fo:inline>, so the current conversation context will not be destroyed at the end of the request. Instead, it will be reassociated with every request from the current window, and destroyed either by timeout due to conversation inactivity or invocation of a matching <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@End</fo:inline> method.
+					</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2650985" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>4.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block margin-left="6pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@End</fo:inline> annotation specifies that the annotated method ends the current long-running conversation, so the current conversation context will be destroyed at the end of the request.
+					</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2651000" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>5.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block margin-left="6pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						This EJB remove method will be called when Seam destroys the conversation context and must always be defined.
+					</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">HotelBookingAction</fo:inline> contains all the action listener methods that implement selection, booking and booking confirmation, and holds state related to this work in its instance variables. We think you will agree that this code is much cleaner and simpler than getting and setting <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">HttpSession</fo:inline> attributes.
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Even better, a user can have multiple isolated conversations per login session. Try it! Log in, run a search, and navigate to different hotel pages in multiple browser tabs. You will be able to work on creating two different hotel reservations at the same time. If you leave any one conversation inactive for long enough, Seam will eventually time out that conversation and destroy its state. If, after ending a conversation, you backbutton to a page of that conversation and try to perform an action, Seam will detect that the conversation was already ended, and redirect you to the search page.
+			</fo:block></fo:block><fo:block id="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-The_Seam_UI_control_library"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">The Seam UI control library</fo:marker><fo:block color="#a70000" font-size="14pt">2.6.4. The Seam UI control library</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Exten!
 sions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				If you check inside the WAR file for the booking application, you will find <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">seam-ui.jar</fo:inline> in the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">WEB-INF/lib</fo:inline> directory. This package contains a number of JSF custom controls that integrate with Seam. The booking application uses the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;s:link&gt;</fo:inline> control for navigation from the search screen to the hotel page:
+			</fo:block><fo:block id="id3298297" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;s:link value="View Hotel" action="#{hotelBooking.selectHotel}"/&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				The use of <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;s:link&gt;</fo:inline> here allows us to attach an action listener to a HTML link without breaking the browser's "open in new window" feature. The standard JSF <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;h:commandLink&gt;</fo:inline> does not work with "open in new window". We'll see later that <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;s:link&gt;</fo:inline> also offers a number of other useful features, including conversation propagation rules.
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				The booking application uses some other Seam and Ajax4JSF controls, especially on the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">/book.xhtml</fo:inline> page. We will not get into the details of those controls here, but if you want to understand this code, please refer to the chapter covering Seam's functionality for JSF form validation.
+			</fo:block></fo:block><fo:block id="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-The_Seam_Debug_Page"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">The Seam Debug Page</fo:marker><fo:block color="#a70000" font-size="14pt">2.6.5. The Seam Debug Page</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.mini!
 mum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				The WAR also includes <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">seam-debug.jar</fo:inline>. If this jar is deployed in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">WEB-INF/lib</fo:inline>, along with the Facelets, and if you set the following Seam property in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">web.xml</fo:inline> or <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">seam.properties</fo:inline>:
+			</fo:block><fo:block id="id3298372" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;context-param&gt;
+    &lt;param-name&gt;org.jboss.seam.core.init.debug&lt;/param-name&gt;
+    &lt;param-value&gt;true&lt;/param-value&gt;
+&lt;/context-param&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Then the Seam debug page will be available. This page lets you browse and inspect the Seam components in any of the Seam contexts associated with your current login session. Just point your browser at <fo:basic-link external-destination="url(http://localhost:8080/seam-booking/debug.seam)" font-style="italic" color="#0066cc"><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">http://localhost:8080/seam-booking/debug.seam</fo:inline></fo:basic-link>.
+			</fo:block><fo:block id="id3298395" text-align="center"><fo:external-graphic xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" src="url(images/debug.png)" width="444px" height="auto" content-width="scale-to-fit" content-height="scale-to-fit" content-type="content-type:image/png" text-align="center"/></fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Seam_Tutorial-A_complete_application_featuring_Seam_and_jBPM_the_DVD_Store_example"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align=!
 "left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">A complete application featuring Seam and jBPM: the DVD Store example</fo:marker><fo:block color="#a70000" font-size="16pt">2.7. A complete application featuring Seam and jBPM: the DVD Store example</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The DVD Store demo application shows the practical usage of jBPM for both task management and pageflow.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The user screens take advantage of a jPDL pageflow to implement searching and shopping cart functionality.
+		</fo:block><fo:block><fo:block id="id3117817" text-align="center"><fo:external-graphic xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" src="url(images/dvdsearch.png)" width="444px" height="auto" content-width="scale-to-fit" content-height="scale-to-fit" content-type="content-type:image/png" text-align="center"/></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The administration screens take use jBPM to manage the approval and shipping cycle for orders. The business process may even be changed dynamically, by selecting a different process definition!
+		</fo:block><fo:block><fo:block id="id3117859" text-align="center"><fo:external-graphic xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" src="url(images/dvdtasks.png)" width="444px" height="auto" content-width="scale-to-fit" content-height="scale-to-fit" content-type="content-type:image/png" text-align="center"/></fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Seam_Tutorial-A_complete_application_featuring_Seam_workspace_management_the_Issue_Tracker_example"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after!
 .maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">A complete application featuring Seam workspace management: the Issue Tracker example</fo:marker><fo:block color="#a70000" font-size="16pt">2.8. A complete application featuring Seam workspace management: the Issue Tracker example</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The Issue Tracker demo shows off Seam's workspace management functionality: the conversation switcher, conversation list and breadcrumbs.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			<fo:block id="id3117919" color="white" background-color="#8e9f00" space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1em" padding-bottom="12pt" padding-top="12pt" margin-left="0pc"><fo:list-block provisional-distance-between-starts="36pt + 18pt" provisional-label-separation="18pt"><fo:list-item><fo:list-item-label end-indent="label-end()"><fo:block><fo:external-graphic width="auto" height="auto" content-width="36pt" src="url(Common_Content/images/note.svg)"/></fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block font-size="13pt" color="white" font-weight="bold" hyphenate="true" keep-with-next.within-column="always">Note</fo:block><fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+					To log into the Issue Tracker demo you must provide a username and password. You can find this in the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">resources/import.sql</fo:inline> file or use "gavin" and "foobar" for username and password respectively.
+				</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block>
+		</fo:block><fo:block><fo:block id="id3117940" text-align="center"><fo:external-graphic xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" src="url(images/issues.png)" width="444px" height="auto" content-width="scale-to-fit" content-height="scale-to-fit" content-type="content-type:image/png" text-align="center"/></fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Seam_Tutorial-An_example_of_Seam_with_Hibernate_the_Hibernate_Booking_example"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-a!
 lign="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">An example of Seam with Hibernate: the Hibernate Booking example</fo:marker><fo:block color="#a70000" font-size="16pt">2.9. An example of Seam with Hibernate: the Hibernate Booking example</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The Hibernate Booking demo is a straight port of the Booking demo to an alternative architecture that uses Hibernate for persistence and JavaBeans instead of session beans.
+		</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Seam_Tutorial-A_RESTful_Seam_application_the_Blog_example"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">A RESTful Seam application: the Blog example</fo:marker><fo:block color="#a70000" font-size="16pt">2.10. A RESTful Seam application: the Blog example</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/X!
 SL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Seam makes it very easy to implement applications which keep state on the server-side. However, server-side state is not always appropriate, especially in for functionality that serves up <fo:inline font-style="italic">content</fo:inline>. For this kind of problem we often need to let the user bookmark pages and have a relatively stateless server, so that any page can be accessed at any time, via the bookmark. The Blog example shows how to a implement RESTful application using Seam. Every page of the application can be bookmarked, including the search results page.
+		</fo:block><fo:block><fo:block id="id3044354" text-align="center"><fo:external-graphic xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" src="url(images/blog.png)" width="444px" height="auto" content-width="scale-to-fit" content-height="scale-to-fit" content-type="content-type:image/png" text-align="center"/></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The Blog example demonstrates the use of "pull"-style MVC, where instead of using action listener methods to retrieve data and prepare the data for the view, the view pulls data from components as it is being rendered.
+		</fo:block><fo:block id="Seam_Reference_Guide-A_RESTful_Seam_application_the_Blog_example-Using_pull_style_MVC"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Using "pull"-style MVC</fo:marker><fo:block color="#a70000" font-size="14pt">2.10.1. Using "pull"-style MVC</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" sp!
 ace-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				This snippet from the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">index.xhtml</fo:inline> facelets page displays a list of recent blog entries:
+			</fo:block><fo:block><fo:block id="id3044413" background-color="#eeeeee" keep-together.within-column="" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em"><fo:block id="id3044419" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;h:dataTable value="#{blog.recentBlogEntries}" var="blogEntry" rows="3"&gt;
+   &lt;h:column&gt;
+      &lt;div class="blogEntry"&gt;
+         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;
+         &lt;div&gt;
+            &lt;h:outputText escape="false" 
+                  value="#{blogEntry.excerpt==null ? blogEntry.body : blogEntry.excerpt}"/&gt;
+         &lt;/div&gt;
+         &lt;p&gt;
+            &lt;h:outputLink value="entry.seam" rendered="#{blogEntry.excerpt!=null}"&gt;
+               &lt;f:param name="blogEntryId" value="#{blogEntry.id}"/&gt;
+               Read more...
+            &lt;/h:outputLink&gt;
+         &lt;/p&gt;
+         &lt;p&gt;
+            [Posted on 
+            &lt;h:outputText value="#{blogEntry.date}"&gt;
+               &lt;f:convertDateTime timeZone="#{blog.timeZone}" locale="#{blog.locale}" 
+                                     type="both"/&gt;
+            &lt;/h:outputText&gt;]
+             
+            &lt;h:outputLink value="entry.seam"&gt;[Link]
+               &lt;f:param name="blogEntryId" value="#{blogEntry.id}"/&gt;
+            &lt;/h:outputLink&gt;
+         &lt;/p&gt;
+      &lt;/div&gt;
+   &lt;/h:column&gt;
+&lt;/h:dataTable&gt;
+</fo:block><fo:block font-weight="normal" font-size="10pt" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" color="#a70000" background-color="white" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-previous.within-column="always">Example 2.16. </fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				If we navigate to this page from a bookmark, how does the data used by the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;h:dataTable&gt;</fo:inline> actually get initialized? Well, what happens is that the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Blog</fo:inline> is retrieved lazily—"pulled"—when needed, by a Seam component named <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">blog</fo:inline>. This is the opposite flow of control to what is usual in traditional web action-based frameworks like Struts.
+			</fo:block><fo:block><fo:block id="id3044462" background-color="#eeeeee" keep-together.within-column="" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em"><fo:block id="id3044472" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Name("blog")
+ at Scope(ScopeType.STATELESS)
+public class BlogService 
+{
+   
+   @In
+   private EntityManager entityManager;
+  
+   @Unwrap
+   public Blog getBlog()
+   {
+      return (Blog) entityManager.createQuery("from Blog b left join fetch b.blogEntries")
+            .setHint("org.hibernate.cacheable", true)
+            .getSingleResult();
+   }
+
+}
+</fo:block><fo:list-block id="id3044482" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-distance-between-starts="1.2em" provisional-label-separation="0.2em"><fo:list-item id="id3044485" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>1.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block margin-left="6pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							This component uses a <fo:inline font-style="italic">seam-managed persistence context</fo:inline>. Unlike the other examples we have seen, this persistence context is managed by Seam, instead of by the EJB3 container. The persistence context spans the entire web request, allowing us to avoid any exceptions that occur when accessing unfetched associations in the view.
+						</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id4177560" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>2.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block margin-left="6pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Unwrap</fo:inline> annotation tells Seam to provide the return value of the method—the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Blog</fo:inline>—instead of the actual <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">BlogService</fo:inline> component to clients. This is the Seam <fo:inline font-style="italic">manager component pattern</fo:inline>.
+						</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block font-weight="normal" font-size="10pt" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" color="#a70000" background-color="white" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-previous.within-column="always">Example 2.17. </fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				This is good so far, but what about bookmarking the result of form submissions, such as a search results page?
+			</fo:block></fo:block><fo:block id="Seam_Reference_Guide-A_RESTful_Seam_application_the_Blog_example-Bookmarkable_search_results_page"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Bookmarkable search results page</fo:marker><fo:block color="#a70000" font-size="14pt">2.10.2. Bookmarkable search results page</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL!
 /Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				The blog example has a tiny form in the top right of each page that allows the user to search for blog entries. This is defined in a file, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">menu.xhtml</fo:inline>, included by the facelets template, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">template.xhtml</fo:inline>:
+			</fo:block><fo:block><fo:block id="id4177626" background-color="#eeeeee" keep-together.within-column="" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em"><fo:block id="id4177631" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;div id="search"&gt;
+   &lt;h:form&gt;
+      &lt;h:inputText value="#{searchAction.searchPattern}"/&gt;
+      &lt;h:commandButton value="Search" action="/search.xhtml"/&gt;
+   &lt;/h:form&gt;
+&lt;/div&gt;
+</fo:block><fo:block font-weight="normal" font-size="10pt" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" color="#a70000" background-color="white" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-previous.within-column="always">Example 2.18. </fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				To implement a bookmarkable search results page, we need to perform a browser redirect after processing the search form submission. Because we used the JSF view id as the action outcome, Seam automatically redirects to the view id when the form is submitted. Alternatively, we could have defined a navigation rule like this:
+			</fo:block><fo:block><fo:block id="id4177649" background-color="#eeeeee" keep-together.within-column="" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em"><fo:block id="id4177654" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;navigation-rule&gt;
+   &lt;navigation-case&gt;
+      &lt;from-outcome&gt;searchResults&lt;/from-outcome&gt;
+      &lt;to-view-id&gt;/search.xhtml&lt;/to-view-id&gt;
+      &lt;redirect/&gt;
+   &lt;/navigation-case&gt;
+&lt;/navigation-rule&gt;
+</fo:block><fo:block font-weight="normal" font-size="10pt" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" color="#a70000" background-color="white" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-previous.within-column="always">Example 2.19. </fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Then the form would have looked like this:
+			</fo:block><fo:block><fo:block id="id4177668" background-color="#eeeeee" keep-together.within-column="" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em"><fo:block id="id4177673" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;div id="search"&gt;
+   &lt;h:form&gt;
+      &lt;h:inputText value="#{searchAction.searchPattern}"/&gt;
+      &lt;h:commandButton value="Search" action="searchResults"/&gt;
+   &lt;/h:form&gt;
+&lt;/div&gt;
+</fo:block><fo:block font-weight="normal" font-size="10pt" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" color="#a70000" background-color="white" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-previous.within-column="always">Example 2.20. </fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				But when we redirect, we need to include the values submitted with the form as request parameters, to get a bookmarkable URL like <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">http://localhost:8080/seam-blog/search.seam?searchPattern=seam</fo:inline>. JSF does not provide an easy way to do this, but Seam does. We use a Seam <fo:inline font-style="italic">page parameter</fo:inline>, defined in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">WEB-INF/pages.xml</fo:inline>:
+			</fo:block><fo:block><fo:block id="id4177702" background-color="#eeeeee" keep-together.within-column="" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em"><fo:block id="id4177707" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;pages&gt;
+   &lt;page view-id="/search.xhtml"&gt;
+      &lt;param name="searchPattern" value="#{searchService.searchPattern}"/&gt;
+   &lt;/page&gt;
+   ...
+&lt;/pages&gt;
+</fo:block><fo:block font-weight="normal" font-size="10pt" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" color="#a70000" background-color="white" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-previous.within-column="always">Example 2.21. </fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				This tells Seam to include the value of <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">#{searchService.searchPattern}</fo:inline> as a request parameter named <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">searchPattern</fo:inline> when redirecting to the page, and then re-apply the value of that parameter to the model before rendering the page.
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				The redirect takes us to the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">search.xhtml</fo:inline> page:
+			</fo:block><fo:block><fo:block id="id4177739" background-color="#eeeeee" keep-together.within-column="" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em"><fo:block id="id4177744" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;h:dataTable value="#{searchResults}" var="blogEntry"&gt;
+   &lt;h:column&gt;
+      &lt;div&gt;
+         &lt;h:outputLink value="entry.seam"&gt;
+            &lt;f:param name="blogEntryId" value="#{blogEntry.id}"/&gt;
+            #{blogEntry.title}
+         &lt;/h:outputLink&gt;
+         posted on 
+         &lt;h:outputText value="#{blogEntry.date}"&gt;
+            &lt;f:convertDateTime timeZone="#{blog.timeZone}" locale="#{blog.locale}" type="both"/&gt;
+         &lt;/h:outputText&gt;
+      &lt;/div&gt;
+   &lt;/h:column&gt;
+&lt;/h:dataTable&gt;
+</fo:block><fo:block font-weight="normal" font-size="10pt" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" color="#a70000" background-color="white" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-previous.within-column="always">Example 2.22. </fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Which again uses "pull"-style MVC to retrieve the actual search results:
+			</fo:block><fo:block><fo:block id="id3903603" background-color="#eeeeee" keep-together.within-column="" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em"><fo:block id="id3903608" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Name("searchService")
+public class SearchService 
+{
+   
+   @In
+   private EntityManager entityManager;
+   
+   private String searchPattern;
+   
+   @Factory("searchResults")
+   public List&lt;BlogEntry&gt; getSearchResults()
+   {
+      if (searchPattern==null)
+      {
+         return null;
+      }
+      else
+      {
+         return entityManager.createQuery("select be from BlogEntry be where lower(be.title) 
+                               like :searchPattern or lower(be.body) like :searchPattern 
+                               order by be.date desc")
+               .setParameter( "searchPattern", getSqlSearchPattern() )
+               .setMaxResults(100)
+               .getResultList();
+      }
+   }
+
+   private String getSqlSearchPattern()
+   {
+      return searchPattern==null ? "" : '%' + 
+        searchPattern.toLowerCase().replace('*', '%').replace('?', '_') 
+           + '%';
+   }
+
+   public String getSearchPattern()
+   {
+      return searchPattern;
+   }
+
+   public void setSearchPattern(String searchPattern)
+   {
+      this.searchPattern = searchPattern;
+   }
+
+}
+</fo:block><fo:block font-weight="normal" font-size="10pt" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" color="#a70000" background-color="white" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-previous.within-column="always">Example 2.23. </fo:block></fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-A_RESTful_Seam_application_the_Blog_example-Using_push_style_MVC_in_a_RESTful_application"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em!
 " text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Using "push"-style MVC in a RESTful application</fo:marker><fo:block color="#a70000" font-size="14pt">2.10.3. Using "push"-style MVC in a RESTful application</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Very occasionally, it makes more sense to use push-style MVC for processing RESTful pages, and so Seam provides the notion of a <fo:inline font-style="italic">page action</fo:inline>. The Blog example uses a page action for the blog entry page, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">entry.xhtml</fo:inline>. Note that this is a little bit contrived, it would have been easier to use pull-style MVC here as well.
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">entryAction</fo:inline> component works much like an action class in a traditional push-MVC action-oriented framework like Struts:
+			</fo:block><fo:block><fo:block id="id3903675" background-color="#eeeeee" keep-together.within-column="" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em"><fo:block id="id3903681" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Name("entryAction")
+ at Scope(STATELESS)
+public class EntryAction
+{
+   @In(create=true) 
+   private Blog blog;
+   
+   @Out
+   private BlogEntry blogEntry;
+   
+   public void loadBlogEntry(String id) throws EntryNotFoundException
+   {
+      blogEntry = blog.getBlogEntry(id);
+      if (blogEntry==null) throw new EntryNotFoundException(id);
+   }
+   
+}
+</fo:block><fo:block font-weight="normal" font-size="10pt" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" color="#a70000" background-color="white" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-previous.within-column="always">Example 2.24. </fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Page actions are also declared in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">pages.xml</fo:inline>:
+			</fo:block><fo:block><fo:block id="id3903700" background-color="#eeeeee" keep-together.within-column="" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em"><fo:block id="id3903706" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;pages&gt;
+   ...
+
+   &lt;page view-id="/entry.xhtml" action="#{entryAction.loadBlogEntry(blogEntry.id)}"&gt;
+      &lt;param name="blogEntryId" value="#{blogEntry.id}"/&gt;
+   &lt;/page&gt;
+
+   &lt;page view-id="/post.xhtml" action="#{loginAction.challenge}"/&gt;
+
+   &lt;page view-id="*" action="#{blog.hitCount.hit}"/&gt;
+
+&lt;/pages&gt;
+</fo:block><fo:block font-weight="normal" font-size="10pt" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" color="#a70000" background-color="white" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-previous.within-column="always">Example 2.25. </fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Notice that the example is using page actions for some other functionality—the login challenge, and the pageview counter. Also notice the use of a parameter in the page action method binding. This is not a standard feature of JSF EL, but Seam lets you use it, not just for page actions, but also in JSF method bindings.
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				When the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">entry.xhtml</fo:inline> page is requested, Seam first binds the page parameter <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">blogEntryId</fo:inline> to the model, then runs the page action, which retrieves the needed data—the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">blogEntry</fo:inline>—and places it in the Seam event context. Finally, the following is rendered:
+			</fo:block><fo:block><fo:block id="id3903745" background-color="#eeeeee" keep-together.within-column="" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em"><fo:block id="id3903750" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;div class="blogEntry"&gt;
+   &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;
+   &lt;div&gt;
+      &lt;h:outputText escape="false" value="#{blogEntry.body}"/&gt;
+   &lt;/div&gt;
+   &lt;p&gt;
+      [Posted on 
+      &lt;h:outputText value="#{blogEntry.date}"&gt;
+         &lt;f:convertDateTime timezone="#{blog.timeZone}" locale="#{blog.locale}" type="both"/&gt;
+      &lt;/h:outputText&gt;]
+   &lt;/p&gt;
+&lt;/div&gt;
+</fo:block><fo:block font-weight="normal" font-size="10pt" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" color="#a70000" background-color="white" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-previous.within-column="always">Example 2.26. </fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				If the blog entry is not found in the database, the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">EntryNotFoundException</fo:inline> exception is thrown. We want this exception to result in a 404 error, not a 505, so we annotate the exception class:
+			</fo:block><fo:block><fo:block id="id3903772" background-color="#eeeeee" keep-together.within-column="" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em"><fo:block id="id3903777" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@ApplicationException(rollback=true)
+ at HttpError(errorCode=HttpServletResponse.SC_NOT_FOUND)
+public class EntryNotFoundException extends Exception
+{
+   EntryNotFoundException(String id)
+   {
+      super("entry not found: " + id);
+   }
+}
+</fo:block><fo:block font-weight="normal" font-size="10pt" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" color="#a70000" background-color="white" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-previous.within-column="always">Example 2.27. </fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				An alternative implementation of the example does not use the parameter in the method binding:
+			</fo:block><fo:block><fo:block id="id3903792" background-color="#eeeeee" keep-together.within-column="" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em"><fo:block id="id3903797" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Name("entryAction")
+ at Scope(STATELESS)
+public class EntryAction
+{
+   @In(create=true) 
+   private Blog blog;
+   
+   @In @Out
+   private BlogEntry blogEntry;
+   
+   public void loadBlogEntry() throws EntryNotFoundException
+   {
+      blogEntry = blog.getBlogEntry( blogEntry.getId() );
+      if (blogEntry==null) throw new EntryNotFoundException(id);
+   }
+   
+}
+</fo:block><fo:block id="id3324522" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;pages&gt;
+   ...
+
+   &lt;page view-id="/entry.xhtml" action="#{entryAction.loadBlogEntry}"&gt;
+      &lt;param name="blogEntryId" value="#{blogEntry.id}"/&gt;
+   &lt;/page&gt;
+   
+   ...
+&lt;/pages&gt;
+</fo:block><fo:block font-weight="normal" font-size="10pt" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" color="#a70000" background-color="white" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-previous.within-column="always">Example 2.28. </fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				It is a matter of personal choice, which implementation you prefer.
+			</fo:block></fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="body" language="en" format="1" initial-page-number="auto-odd" force-page-count="end-on-even" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:tabl!
 e-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always" font-weight="bold">Chapter 3.</fo:inline></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-!
 width="proportional-column-width(1)"/><fo:table-body><fo:table!
 -row blo
ck-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always"><fo:retrieve-marker retrieve-class-name="section.head.marker" retrieve-position="first-including-carryover" retrieve-boundary="page-sequence"/></fo:inline></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column!
 -width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always" font-weight="bold">Chapter 3. The contextual component model</fo:inline></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-l!
 ayout="fixed" width="100%" border-bottom-width="0.5pt" border-!
 bottom-s
tyle="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-footnote-separator"><fo:block><fo:leader color="black" leader-pattern="rule" leader-length="1in"/></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block font-!
 family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-co!
 ntent><fo:static-content flow-name="xsl-region-after-odd"><fo:!
 block fo
nt-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-!
 content><fo:static-content flow-name="xsl-region-after-even"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:ta!
 ble-cell></fo:table-row></fo:table-body></fo:table></fo:block>!
 </fo:sta
tic-content><fo:static-content flow-name="xsl-region-after-blank"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></f!
 o:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:flow flow-name="xsl-region-body" start-indent="0pt" end-indent="0pt"><fo:block id="Seam_Reference_Guide-The_contextual_component_model"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats"><fo:block margin-left="0pc"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" color="#a70000" background-color="white" font-size="24pt" font-weight="bold" text-align="left" padding-left="1em" padding-right="1em">The contextual component model</fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The two core concepts in Seam are the notion of a <fo:inline font-style="italic">context</fo:inline> and the notion of a <fo:inline font-style="italic">component</fo:inline>. Components are stateful objects, usually EJBs, and an instance of a component is associated with a context, and given a name in that context. <fo:inline font-style="italic">Bijection</fo:inline> provides a mechanism for aliasing internal component names (instance variables) to contextual names, allowing component trees to be dynamically assembled, and reassembled by Seam.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Let us start by describing the contexts built in to Seam.
+	</fo:block><fo:block id="Seam_Reference_Guide-The_contextual_component_model-Seam_contexts"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Seam contexts</fo:marker><fo:block color="#a70000" font-size="16pt">3.1. Seam contexts</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.ma!
 ximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Seam contexts are created and destroyed by the framework. The application does not control context demarcation via explicit Java API calls. Context are usually implicit. In some cases, however, contexts are demarcated via annotations.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The basic Seam contexts are:
+	</fo:block><fo:list-block id="id2824934" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3146838" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				Stateless context
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id4178255" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				Event (or request) context
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3939438" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				Page context
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2640919" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				Conversation context
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2792922" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				Session context
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3917340" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				Business process context
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3856117" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				Application context
+			</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		You will recognize some of these contexts from servlet and related specifications. However, two of them might be new to you: <fo:inline font-style="italic">conversation context</fo:inline>, and <fo:inline font-style="italic">business process context</fo:inline>. One reason state management in web applications is so fragile and error-prone is that the three built-in contexts (request, session and application) are not especially meaningful from the point of view of the business logic. A user login session, for example, is a fairly arbitrary construct in terms of the actual application work flow. Therefore, most Seam components are scoped to the conversation or business process contexts, since they are the contexts which are most meaningful in terms of the application.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Let us look at each context in turn.
+	</fo:block><fo:block id="Seam_Reference_Guide-Seam_contexts-Stateless_context"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Stateless context</fo:marker><fo:block color="#a70000" font-size="14pt">3.1.1. Stateless context</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maxim!
 um="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Components which are truly stateless (stateless session beans, primarily) always live in the stateless context (this is really a non-context). Stateless components are not very interesting, and are arguably not very object-oriented. Nevertheless, they are important and often useful.
+	</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Seam_contexts-Event_context"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Event context</fo:marker><fo:block color="#a70000" font-size="14pt">3.1.2. Event context</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximu!
 m="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The event context is the "narrowest" stateful context, and is a generalization of the notion of the web request context to cover other kinds of events. Nevertheless, the event context associated with the lifecycle of a JSF request is the most important example of an event context, and the one you will work with most often. Components associated with the event context are destroyed at the end of the request, but their state is available and well-defined for at least the lifecycle of the request.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		When you invoke a Seam component via RMI, or Seam Remoting, the event context is created and destroyed just for the invocation.
+	</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Seam_contexts-Page_context"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Page context</fo:marker><fo:block color="#a70000" font-size="14pt">3.1.3. Page context</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="!
 0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The page context allows you to associate state with a particular instance of a rendered page. You can initialize state in your event listener, or while actually rendering the page, and then have access to it from any event that originates from that page. This is especially useful for functionality like clickable lists, where the list is backed by changing data on the server side. The state is actually serialized to the client, so this construct is extremely robust with respect to multi-window operation and the back button.
+	</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Seam_contexts-Conversation_context"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Conversation context</fo:marker><fo:block color="#a70000" font-size="14pt">3.1.4. Conversation context</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em!
 " space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The conversation context is a truly central concept in Seam. A <fo:inline font-style="italic">conversation</fo:inline> is a unit of work from the point of view of the user. It might span several interactions with the user, several requests, and several database transactions. But to the user, a conversation solves a single problem. For example, <fo:inline font-style="italic">book hotel</fo:inline>, <fo:inline font-style="italic">approve contract</fo:inline>, <fo:inline font-style="italic">create order</fo:inline> are all conversations. You might like to think of a conversation implementing a single <fo:inline font-style="italic">use case</fo:inline> or <fo:inline font-style="italic">user story</fo:inline>, but the relationship is not necessarily quite exact.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		A conversation holds state associated with <fo:inline font-style="italic">what the user is doing now, in this window</fo:inline>. A single user may have multiple conversations in progress at any point in time, usually in multiple windows. The conversation context allows us to ensure that state from the different conversations does not collide and cause bugs.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Some conversations last for just a single request. Conversations that span multiple requests must be demarcated using annotations provided by Seam.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Some conversations are also <fo:inline font-style="italic">tasks</fo:inline>. A task is a conversation that is significant in terms of a long-running business process, and has the potential to trigger a business process state transition when it is successfully completed. Seam provides a special set of annotations for task demarcation.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Conversations may be <fo:inline font-style="italic">nested</fo:inline>, with one conversation taking place "inside" a wider conversation. This is an advanced feature.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Usually, conversation state is actually held by Seam in the servlet session between requests. Seam implements configurable <fo:inline font-style="italic">conversation timeout</fo:inline>, automatically destroying inactive conversations, and thus ensuring that the state held by a single user login session does not grow without bound if the user abandons conversations.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Seam serializes processing of concurrent requests that take place in the same long-running conversation context, in the same process.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Alternatively, Seam may be configured to keep conversational state in the client browser.
+	</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Seam_contexts-Session_context"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Session context</fo:marker><fo:block color="#a70000" font-size="14pt">3.1.5. Session context</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.!
 maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		A session context holds state associated with the user login session. While there are some cases where it is useful to share state between several conversations, we generally frown on the use of session context for holding components other than global information about the logged in user.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		In a JSR-168 portal environment, the session context represents the portlet session.
+	</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Seam_contexts-Business_process_context"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Business process context</fo:marker><fo:block color="#a70000" font-size="14pt">3.1.6. Business process context</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.op!
 timum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The business process context holds state associated with the long running business process. This state is managed and made persistent by the BPM engine (JBoss jBPM). The business process spans multiple interactions with multiple users, so this state is shared between multiple users, but in a well-defined manner. The current task determines the current business process instance, and the lifecycle of the business process is defined externally using a <fo:inline font-style="italic">process definition language</fo:inline>, so there are no special annotations for business process demarcation.
+	</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Seam_contexts-Application_context"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Application context</fo:marker><fo:block color="#a70000" font-size="14pt">3.1.7. Application context</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" s!
 pace-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The application context is the familiar servlet context from the servlet spec. Application context is mainly useful for holding static information such as configuration data, reference data or metamodels. For example, Seam stores its own configuration and metamodel in the application context.
+	</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Seam_contexts-Context_variables"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Context variables</fo:marker><fo:block color="#a70000" font-size="14pt">3.1.8. Context variables</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-b!
 efore.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		A context defines a namespace, a set of <fo:inline font-style="italic">context variables</fo:inline>. These work much the same as session or request attributes in the servlet spec. You may bind any value you like to a context variable, but usually we bind Seam component instances to context variables.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		So, within a context, a component instance is identified by the context variable name (this is usually, but not always, the same as the component name). You may programatically access a named component instance in a particular scope via the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Contexts</fo:inline> class, which provides access to several thread-bound instances of the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Context</fo:inline> interface:
+	</fo:block><fo:block id="id3789168" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">User user = (User) Contexts.getSessionContext().get("user");
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		You may also set or change the value associated with a name:
+	</fo:block><fo:block id="id3787898" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">Contexts.getSessionContext().set("user", user);
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Usually, however, we obtain components from a context via injection, and put component instances into a context via outjection.
+	</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Seam_contexts-Context_search_priority"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Context search priority</fo:marker><fo:block color="#a70000" font-size="14pt">3.1.9. Context search priority</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optim!
 um="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Sometimes, as above, component instances are obtained from a particular known scope. Other times, all stateful scopes are searched, in <fo:inline font-style="italic">priority order</fo:inline>. The order is as follows:
+	</fo:block><fo:list-block id="id4178639" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id2755501" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				Event context
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3579934" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				Page context
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3934932" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				Conversation context
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3342091" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				Session context
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3402705" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				Business process context
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3775148" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				Application context
+			</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		You can perform a priority search by calling <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Contexts.lookupInStatefulContexts()</fo:inline>. Whenever you access a component by name from a JSF page, a priority search occurs.
+	</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Seam_contexts-Concurrency_model"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Concurrency model</fo:marker><fo:block color="#a70000" font-size="14pt">3.1.10. Concurrency model</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-!
 before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Neither the servlet nor EJB specifications define any facilities for managing concurrent requests originating from the same client. The servlet container simply lets all threads run concurrently and leaves enforcing threadsafeness to application code. The EJB container allows stateless components to be accessed concurrently, and throws an exception if multiple threads access a stateful session bean.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		This behavior might have been okay in old-style web applications which were based around fine-grained, synchronous requests. But for modern applications which make heavy use of many fine-grained, asynchronous (AJAX) requests, concurrency is a fact of life, and must be supported by the programming model. Seam weaves a concurrency management layer into its context model.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The Seam session and application contexts are multithreaded. Seam will allow concurrent requests in a context to be processed concurrently. The event and page contexts are by nature single threaded. The business process context is strictly speaking multi-threaded, but in practice concurrency is sufficiently rare that this fact may be disregarded most of the time. Finally, Seam enforces a <fo:inline font-style="italic">single thread per conversation per process</fo:inline> model for the conversation context by serializing concurrent requests in the same long-running conversation context.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Since the session context is multithreaded, and often contains volatile state, session scope components are always protected by Seam from concurrent access. Seam serializes requests to session scope session beans and JavaBeans by default (and detects and breaks any deadlocks that occur). This is not the default behaviour for application scoped components however, since application scoped components do not usually hold volatile state and because synchronization at the global level is <fo:inline font-style="italic">extremely</fo:inline> expensive. However, you can force a serialized threading model on any session bean or JavaBean component by adding the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Synchronized</fo:inline> annotation.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		This concurrency model means that AJAX clients can safely use volatile session and conversational state, without the need for any special work on the part of the developer.
+	</fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-The_contextual_component_model-Seam_components"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Seam components</fo:marker><fo:block color="#a70000" font-size="16pt">3.2. Seam components</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.opt!
 imum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Seam components are POJOs (Plain Old Java Objects). In particular, they are JavaBeans or EJB 3.0 enterprise beans. While Seam does not require that components be EJBs and can even be used without an EJB 3.0 compliant container, Seam was designed with EJB 3.0 in mind and includes deep integration with EJB 3.0. Seam supports the following <fo:inline font-style="italic">component types</fo:inline>.
+	</fo:block><fo:list-block id="id2642781" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id4192578" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				EJB 3.0 stateless session beans
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2791304" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				EJB 3.0 stateful session beans
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2849418" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				EJB 3.0 entity beans
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3716308" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				JavaBeans
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3482453" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				EJB 3.0 message-driven beans
+			</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block id="Seam_Reference_Guide-Seam_components-Stateless_session_beans"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Stateless session beans</fo:marker><fo:block color="#a70000" font-size="14pt">3.2.1. Stateless session beans</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Exte!
 nsions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Stateless session bean components are not able to hold state across multiple invocations. Therefore, they usually work by operating upon the state of other components in the various Seam contexts. They may be used as JSF action listeners, but cannot provide properties to JSF components for display.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Stateless session beans always live in the stateless context.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Stateless session beans are the least interesting kind of Seam component.
+	</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Seam_components-Stateful_session_beans"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Stateful session beans</fo:marker><fo:block color="#a70000" font-size="14pt">3.2.2. Stateful session beans</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimu!
 m="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Stateful session bean components are able to hold state not only across multiple invocations of the bean, but also across multiple requests. Application state that does not belong in the database should usually be held by stateful session beans. This is a major difference between Seam and many other web application frameworks. Instead of sticking information about the current conversation directly in the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">HttpSession</fo:inline>, you should keep it in instance variables of a stateful session bean that is bound to the conversation context. This allows Seam to manage the lifecycle of this state for you, and ensure that there are no collisions between state relating to different concurrent conversations.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Stateful session beans are often used as JSF action listener, and as backing beans that provide properties to JSF components for display or form submission.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		By default, stateful session beans are bound to the conversation context. They may never be bound to the page or stateless contexts.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Concurrent requests to session-scoped stateful session beans are always serialized by Seam.
+	</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Seam_components-Entity_beans"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Entity beans</fo:marker><fo:block color="#a70000" font-size="14pt">3.2.3. Entity beans</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum!
 ="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Entity beans may be bound to a context variable and function as a seam component. Because entities have a persistent identity in addition to their contextual identity, entity instances are usually bound explicitly in Java code, rather than being instantiated implicitly by Seam.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Entity bean components do not support bijection or context demarcation. Nor does invocation of an entity bean trigger validation.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Entity beans are not usually used as JSF action listeners, but do often function as backing beans that provide properties to JSF components for display or form submission. In particular, it is common to use an entity as a backing bean, together with a stateless session bean action listener to implement create/update/delete type functionality.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		By default, entity beans are bound to the conversation context. They may never be bound to the stateless context.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Note that it in a clustered environment is somewhat less efficient to bind an entity bean directly to a conversation or session scoped Seam context variable than it would be to hold a reference to the entity bean in a stateful session bean. For this reason, not all Seam applications define entity beans to be Seam components.
+	</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Seam_components-JavaBeans"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">JavaBeans</fo:marker><fo:block color="#a70000" font-size="14pt">3.2.4. JavaBeans</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" !
 space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Javabeans may be used just like a stateless or stateful session bean. However, they do not provide the functionality of a session bean (declarative transaction demarcation, declarative security, efficient clustered state replication, EJB 3.0 persistence, timeout methods, etc).
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		In a later chapter, we show you how to use Seam and Hibernate without an EJB container. In this use case, components are JavaBeans instead of session beans. Note, however, that in many application servers it is somewhat less efficient to cluster conversation or session scoped Seam JavaBean components than it is to cluster stateful session bean components.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		By default, JavaBeans are bound to the event context.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Concurrent requests to session-scoped JavaBeans are always serialized by Seam.
+	</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Seam_components-Message_driven_beans"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Message-driven beans</fo:marker><fo:block color="#a70000" font-size="14pt">3.2.5. Message-driven beans</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1!
 em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Message-driven beans may function as a seam component. However, message-driven beans are called quite differently to other Seam components - instead of invoking them via the context variable, they listen for messages sent to a JMS queue or topic.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Message-driven beans may not be bound to a Seam context. Nor do they have access to the session or conversation state of their "caller". However, they do support bijection and some other Seam functionality.
+	</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Seam_components-Interception"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Interception</fo:marker><fo:block color="#a70000" font-size="14pt">3.2.6. Interception</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum!
 ="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		In order to perform its magic (bijection, context demarcation, validation, etc), Seam must intercept component invocations. For JavaBeans, Seam is in full control of instantiation of the component, and no special configuration is needed. For entity beans, interception is not required since bijection and context demarcation are not defined. For session beans, we must register an EJB interceptor for the session bean component. We could use an annotation, as follows:
+	</fo:block><fo:block id="id3891764" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Stateless
+ at Interceptors(SeamInterceptor.class)
+public class LoginAction implements Login { 
+    ... 
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		But a much better way is to define the interceptor in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">ejb-jar.xml</fo:inline>.
+	</fo:block><fo:block id="id3716320" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;interceptors&gt;
+   &lt;interceptor&gt;
+      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/interceptor-class&gt;
+   &lt;/interceptor&gt;
+&lt;/interceptors&gt;
+   
+&lt;assembly-descriptor&gt;
+   &lt;interceptor-binding&gt;
+      &lt;ejb-name&gt;*&lt;/ejb-name&gt;
+      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/interceptor-class&gt;
+   &lt;/interceptor-binding&gt;
+&lt;/assembly-descriptor&gt;
+</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Seam_components-Component_names"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Component names</fo:marker><fo:block color="#a70000" font-size="14pt">3.2.7. Component names</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before!
 .maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		All seam components need a name. We can assign a name to a component using the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Name</fo:inline> annotation:
+	</fo:block><fo:block id="id3449692" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Name("loginAction")
+ at Stateless
+public class LoginAction implements Login { 
+    ... 
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		This name is the <fo:inline font-style="italic">seam component name</fo:inline> and is not related to any other name defined by the EJB specification. However, seam component names work just like JSF managed bean names and you can think of the two concepts as identical.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Name</fo:inline> is not the only way to define a component name, but we always need to specify the name <fo:inline font-style="italic">somewhere</fo:inline>. If we do not, then none of the other Seam annotations will function.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Just like in JSF, a seam component instance is usually bound to a context variable with the same name as the component name. So, for example, we would access the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">LoginAction</fo:inline> using <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Contexts.getStatelessContext().get("loginAction")</fo:inline>. In particular, whenever Seam itself instantiates a component, it binds the new instance to a variable with the component name. However, again like JSF, it is possible for the application to bind a component to some other context variable by programmatic API call. This is only useful if a particular component serves more than one role in the system. For example, the currently logged in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">User</fo:inline> might be bound to the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">currentUser</fo:inline> !
 session context variable, while a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">User</fo:inline> that is the subject of some administration functionality might be bound to the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">user</fo:inline> conversation context variable.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		For very large applications, and for built-in seam components, qualified names are often used.
+	</fo:block><fo:block id="id3323837" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Name("com.jboss.myapp.loginAction")
+ at Stateless
+ at Interceptors(SeamInterceptor.class)
+public class LoginAction implements Login { 
+    ... 
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		We may use the qualified component name both in Java code and in JSF's expression language:
+	</fo:block><fo:block id="id3849203" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;h:commandButton type="submit" value="Login"
+                 action="#{com.jboss.myapp.loginAction.login}"/&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Since this is noisy, Seam also provides a means of aliasing a qualified name to a simple name. Add a line like this to the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">components.xml</fo:inline> file:
+	</fo:block><fo:block id="id3849217" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;factory name="loginAction" scope="STATELESS" value="#{com.jboss.myapp.loginAction}"/&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		All of the built-in Seam components have qualified names, but most of them are aliased to a simple name by the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">components.xml</fo:inline> file included in the Seam jar.
+	</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Seam_components-Defining_the_component_scope"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Defining the component scope</fo:marker><fo:block color="#a70000" font-size="14pt">3.2.8. Defining the component scope</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" s!
 pace-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		We can override the default scope (context) of a component using the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Scope</fo:inline> annotation. This lets us define what context a component instance is bound to, when it is instantiated by Seam.
+	</fo:block><fo:block id="id2837303" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Name("user")
+ at Entity
+ at Scope(SESSION)
+public class User { 
+    ... 
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.ScopeType</fo:inline> defines an enumeration of possible scopes.
+	</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Seam_components-Components_with_multiple_roles"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Components with multiple roles</fo:marker><fo:block color="#a70000" font-size="14pt">3.2.9. Components with multiple roles</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.!
 1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Some Seam component classes can fulfill more than one role in the system. For example, we often have a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">User</fo:inline> class which is usually used as a session-scoped component representing the current user but is used in user administration screens as a conversation-scoped component. The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Role</fo:inline> annotation lets us define an additional named role for a component, with a different scope; it lets us bind the same component class to different context variables. (Any Seam component <fo:inline font-style="italic">instance</fo:inline> may be bound to multiple context variables, but this lets us do it at the class level, and take advantage of auto-instantiation.)
+	</fo:block><fo:block id="id3712936" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Name("user")
+ at Entity
+ at Scope(CONVERSATION)
+ at Role(name="currentUser", scope=SESSION)
+public class User { 
+    ... 
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Roles</fo:inline> annotation lets us specify as many additional roles as we like.
+	</fo:block><fo:block id="id3725009" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Name("user")
+ at Entity
+ at Scope(CONVERSATION)
+ at Roles({@Role(name="currentUser", scope=SESSION)
+        @Role(name="tempUser", scope=EVENT)})
+public class User { 
+    ... 
+}
+</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Seam_components-Built_in_components"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Built-in components</fo:marker><fo:block color="#a70000" font-size="14pt">3.2.10. Built-in components</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em"!
  space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Like many good frameworks, Seam eats its own dogfood and is implemented mostly as a set of built-in Seam interceptors (see later) and Seam components. This makes it easy for applications to interact with built-in components at runtime or even customize the basic functionality of Seam by replacing the built-in components with custom implementations. The built-in components are defined in the Seam namespace <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.core</fo:inline> and the Java package of the same name.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The built-in components may be injected, just like any Seam components, but they also provide convenient static <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">instance()</fo:inline> methods:
+	</fo:block><fo:block id="id3435844" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">FacesMessages.instance().add("Welcome back, #{user.name}!");
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Seam was designed to integrate tightly in a Java EE 5 environment. However, we understand that there are many projects which are not running in a full EE environment. We also realize the critical importance of easy unit and integration testing using frameworks such as TestNG and JUnit. So, we have made it easy to run Seam in Java SE environments by allowing you to boostrap certain critical infrastructure normally only found in EE environments by installing built-in Seam components.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		For example, you can run your EJB3 components in Tomcat or an integration test suite just by installing the built-in component <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.core.ejb</fo:inline>, which automatically bootstraps the JBoss Embeddable EJB3 container and deploys your EJB components.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Or, if you are not quite ready for the Brave New World of EJB 3.0, you can write a Seam application that uses only JavaBean components, together with Hibernate3 for persistence, by installing a built-in component that manages a Hibernate <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">SessionFactory</fo:inline>. When using Hibernate outside of a J2EE environment, you will also probably need a JTA transaction manager and JNDI server, which are available via the built-in component <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.core.microcontainer</fo:inline>. This lets you use the bulletproof JTA/JCA pooling datasource from JBoss application server in an SE environment like Tomcat.
+	</fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-The_contextual_component_model-Bijection"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Bijection</fo:marker><fo:block color="#a70000" font-size="16pt">3.3. Bijection</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space!
 -before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		<fo:inline font-style="italic">Dependency injection</fo:inline> or <fo:inline font-style="italic">inversion of control</fo:inline> is by now a familiar concept to most Java developers. Dependency injection allows a component to obtain a reference to another component by having the container <fo:inline font-style="italic">inject</fo:inline> the other component to a setter method or instance variable. In all dependency injection implementations that we have seen, injection occurs when the component is constructed, and the reference does not subsequently change for the lifetime of the component instance. For stateless components, this is reasonable. From the point of view of a client, all instances of a particular stateless component are interchangeable. On the other hand, Seam emphasizes the use of stateful components. So traditional dependency injection is no longer a very useful construct. Seam introduces the notion of <fo:inline font-style="italic">bijection</fo:inline> !
 as a generalization of injection. In contrast to injection, bijection is:
+	</fo:block><fo:list-block id="id3921158" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3059814" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				<fo:inline font-style="italic">contextual</fo:inline> - bijection is used to assemble stateful components from various different contexts (a component from a <fo:inline font-style="italic">wider</fo:inline> context may even have a reference to a component from a <fo:inline font-style="italic">narrower</fo:inline> context)
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3881706" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				<fo:inline font-style="italic">bidirectional</fo:inline> - values are injected from context variables into attributes of the component being invoked, and also <fo:inline font-style="italic">outjected</fo:inline> from the component attributes back out to the context, allowing the component being invoked to manipulate the values of contextual variables simply by setting its own instance variables
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3435951" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				<fo:inline font-style="italic">dynamic</fo:inline> - since the value of contextual variables changes over time, and since Seam components are stateful, bijection takes place every time a component is invoked
+			</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		In essence, bijection lets you alias a context variable to a component instance variable, by specifying that the value of the instance variable is injected, outjected, or both. Of course, we use annotations to enable bijection.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@In</fo:inline> annotation specifies that a value should be injected, either into an instance variable:
+	</fo:block><fo:block id="id3435984" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Name("loginAction")
+ at Stateless
+ at Interceptors(SeamInterceptor.class)
+public class LoginAction implements Login { 
+    @In User user;
+    ... 
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		or into a setter method:
+	</fo:block><fo:block id="id3435995" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Name("loginAction")
+ at Stateless
+ at Interceptors(SeamInterceptor.class)
+public class LoginAction implements Login { 
+    User user;
+    
+    @In
+    public void setUser(User user) {
+        this.user=user;
+    }
+    
+    ... 
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		By default, Seam will do a priority search of all contexts, using the name of the property or instance variable that is being injected. You may wish to specify the context variable name explicitly, using, for example, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@In("currentUser")</fo:inline>.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		If you want Seam to create an instance of the component when there is no existing component instance bound to the named context variable, you should specify <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@In(create=true)</fo:inline>. If the value is optional (it can be null), specify <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@In(required=false)</fo:inline>.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		For some components, it can be repetitive to have to specify <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@In(create=true)</fo:inline> everywhere they are used. In such cases, you can annotate the component <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@AutoCreate</fo:inline>, and then it will always be created, whenever needed, even without the explicit use of <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">create=true</fo:inline>.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		You can even inject the value of an expression:
+	</fo:block><fo:block id="id3856620" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Name("loginAction")
+ at Stateless
+ at Interceptors(SeamInterceptor.class)
+public class LoginAction implements Login { 
+    @In("#{user.username}") String username;
+    ... 
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		(There is much more information about component lifecycle and injection in the next chapter.)
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Out</fo:inline> annotation specifies that an attribute should be outjected, either from an instance variable:
+	</fo:block><fo:block id="id3856642" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Name("loginAction")
+ at Stateless
+ at Interceptors(SeamInterceptor.class)
+public class LoginAction implements Login { 
+    @Out User user;
+    ... 
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		or from a getter method:
+	</fo:block><fo:block id="id3856652" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Name("loginAction")
+ at Stateless
+ at Interceptors(SeamInterceptor.class)
+public class LoginAction implements Login { 
+    User user;
+    
+    @Out
+    public User getUser() {
+        return user;
+    }
+    
+    ... 
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		An attribute may be both injected and outjected:
+	</fo:block><fo:block id="id3856665" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Name("loginAction")
+ at Stateless
+ at Interceptors(SeamInterceptor.class)
+public class LoginAction implements Login { 
+    @In @Out User user;
+    ... 
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		or:
+	</fo:block><fo:block id="id3856675" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Name("loginAction")
+ at Stateless
+ at Interceptors(SeamInterceptor.class)
+public class LoginAction implements Login { 
+    User user;
+    
+    @In
+    public void setUser(User user) {
+        this.user=user;
+    }
+    
+    @Out
+    public User getUser() {
+        return user;
+    }
+    
+    ... 
+}
+</fo:block></fo:block><fo:block id="Seam_Reference_Guide-The_contextual_component_model-Lifecycle_methods"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Lifecycle methods</fo:marker><fo:block color="#a70000" font-size="16pt">3.4. Lifecycle methods</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="!
 0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Session bean and entity bean Seam components support all the usual EJB 3.0 lifecycle callback (<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@PostConstruct</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@PreDestroy</fo:inline>, etc). Seam extends all of these callbacks except <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@PreDestroy</fo:inline> to JavaBean components. But Seam also defines its own component lifecycle callbacks.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Create</fo:inline> method is called every time Seam instantiates a component. Unlike the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@PostConstruct</fo:inline> method, this method is called after the component is fully constructed by the EJB container, and has access to all the usual Seam functionality (bijection, etc). Components may define only one <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Create</fo:inline> method.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Destroy</fo:inline> method is called when the context that the Seam component is bound to ends. Components may define only one <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Destroy</fo:inline> method. Stateful session bean components <fo:inline font-style="italic">must</fo:inline> define a method annotated <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Destroy @Remove</fo:inline>.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Finally, a related annotation is the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Startup</fo:inline> annotation, which may be applied to any application or session scoped component. The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Startup</fo:inline> annotation tells Seam to instantiate the component immediately, when the context begins, instead of waiting until it is first referenced by a client. It is possible to control the order of instantiation of startup components by specifying <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Startup(depends={....})</fo:inline>.
+	</fo:block></fo:block><fo:block id="Seam_Reference_Guide-The_contextual_component_model-Conditional_installation"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Conditional installation</fo:marker><fo:block color="#a70000" font-size="16pt">3.5. Conditional installation</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" !
 space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Install</fo:inline> annotation lets you control conditional installation of components that are required in some deployment scenarios and not in others. This is useful if:
+	</fo:block><fo:list-block id="id3842090" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3842092" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				You want to mock out some infrastructural component in tests.
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3842101" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				You want change the implementation of a component in certain deployment scenarios.
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3842111" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				You want to install some components only if their dependencies are available (useful for framework authors).
+			</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Install</fo:inline> works by letting you specify <fo:inline font-style="italic">precedence</fo:inline> and <fo:inline font-style="italic">dependencies</fo:inline>.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The precedence of a component is a number that Seam uses to decide which component to install when there are multiple classes with the same component name in the classpath. Seam will choose the component with the higher precendence. There are some predefined precedence values (in ascending order):
+	</fo:block><fo:list-block id="id3842147" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-distance-between-starts="1.2em" provisional-label-separation="0.2em"><fo:list-item id="id3842150" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>1.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block margin-left="6pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">BUILT_IN</fo:inline> — the lowest precedece components are the components built in to Seam.
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3842163" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>2.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block margin-left="6pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">FRAMEWORK</fo:inline> — components defined by third-party frameworks may override built-in components, but are overridden by application components.
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3842177" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>3.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block margin-left="6pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">APPLICATION</fo:inline> — the default precedence. This is appropriate for most application components.
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3842191" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>4.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block margin-left="6pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">DEPLOYMENT</fo:inline> — for application components which are deployment-specific.
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3842204" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>5.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block margin-left="6pt"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">MOCK</fo:inline> — for mock objects used in testing.
+			</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Suppose we have a component named <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">messageSender</fo:inline> that talks to a JMS queue.
+	</fo:block><fo:block id="id3562088" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Name("messageSender") 
+public class MessageSender {
+    public void sendMessage() {
+        //do something with JMS
+    }
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		In our unit tests, we don not have a JMS queue available, so we would like to stub out this method. We will create a <fo:inline font-style="italic">mock</fo:inline> component that exists in the classpath when unit tests are running, but is never deployed with the application:
+	</fo:block><fo:block id="id3562106" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Name("messageSender") 
+ at Install(precedence=MOCK)
+public class MockMessageSender extends MessageSender {
+    public void sendMessage() {
+        //do nothing!
+    }
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">precedence</fo:inline> helps Seam decide which version to use when it finds both components in the classpath.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		If we are able to control exactly which classes are in the classpath then this will work well, however if you are writing reusable framwork with many dependecies you will not wish to break that framework across numerious jars. You will wish to decide which components to install depending upon what other components are installed, and upon what classes are available in the classpath. The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Install</fo:inline> annotation also controls this functionality. Seam uses this mechanism internally to enable conditional installation of many of the built-in components. However, you probably will not need to use it in your application.
+	</fo:block></fo:block><fo:block id="Seam_Reference_Guide-The_contextual_component_model-Logging"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Logging</fo:marker><fo:block color="#a70000" font-size="16pt">3.6. Logging</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="!
 0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Below is the code for a simple log message in Java:
+	</fo:block><fo:block id="id3562156" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">private static final Log log = LogFactory.getLog(CreateOrderAction.class);
+        
+public Order createOrder(User user, Product product, int quantity) {
+    if ( log.isDebugEnabled() ) {
+        log.debug("Creating new order for user: " + user.username() + 
+            " product: " + product.name() 
+            + " quantity: " + quantity);
+    }
+    return new Order(user, product, quantity);
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Seam provides a logging API that simplifies this code significantly:
+	</fo:block><fo:block id="id3562179" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Logger private Log log;
+        
+public Order createOrder(User user, Product product, int quantity) {
+    log.debug("Creating new order for user: #0 product: #1 quantity: #2", user.username(), 
+      product.name(), quantity);
+    return new Order(user, product, quantity);
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		It does not matter if you declare the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">log</fo:inline> variable static or not; it will work either way, except for entity bean components which require the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">log</fo:inline> variable to be static.
+	</fo:block><fo:block id="id3562201" color="white" background-color="#8e9f00" space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1em" padding-bottom="12pt" padding-top="12pt" margin-left="0pc"><fo:list-block provisional-distance-between-starts="36pt + 18pt" provisional-label-separation="18pt"><fo:list-item><fo:list-item-label end-indent="label-end()"><fo:block><fo:external-graphic width="auto" height="auto" content-width="36pt" src="url(Common_Content/images/note.svg)"/></fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block font-size="13pt" color="white" font-weight="bold" hyphenate="true" keep-with-next.within-column="always">Note</fo:block><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximu!
 m="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			We do not need the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">if ( log.isDebugEnabled() )</fo:inline> guard, since string concatenation happens <fo:inline font-style="italic">inside</fo:inline> the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">debug()</fo:inline> method. Also the log category does not need to be specified explicitly, since Seam knows what component it is injecting the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Log</fo:inline> into.
+		</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		If <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">User</fo:inline> and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Product</fo:inline> are Seam components available in the current contexts, it gets even better:
+	</fo:block><fo:block id="id3562240" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Logger private Log log;
+        
+public Order createOrder(User user, Product product, int quantity) {
+    log.debug("Creating new order for user: #{user.username} product: #{product.name} 
+      quantity: #0", quantity);
+    return new Order(user, product, quantity);
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Seam logging automagically chooses whether to send output to log4j or JDK logging. If log4j is in the classpath, Seam with use it. If it is not, Seam will use JDK logging.
+	</fo:block></fo:block><fo:block id="Seam_Reference_Guide-The_contextual_component_model-The_Mutable_interface_and_ReadOnly"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Mutable</fo:inline> interface and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@ReadOnly</fo:inline></fo:marker><fo:block color="#a70000" font-size="16pt">3.7. The <fo:inline font-weight="bold" font-fam!
 ily="Liberation Mono,monospace">Mutable</fo:inline> interface and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@ReadOnly</fo:inline></fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Many application servers feature an amazingly broken implementation of <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">HttpSession</fo:inline> clustering, where changes to the state of mutable objects bound to the session are only replicated when the application calls <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">setAttribute()</fo:inline> explicitly. This is a source of bugs that can not effectively be tested for at development time, since they will only manifest when failover occurs. Furthermore, the actual replication message contains the entire serialized object graph bound to the session attribute, which is inefficient.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Of course, EJB stateful session beans must perform automatic dirty checking and replication of mutable state and a sophisticated EJB container can introduce optimizations such as attribute-level replication. Unfortunately, not all Seam users have the good fortune to be working in an environment that supports EJB 3.0. So, for session and conversation scoped JavaBean and entity bean components, Seam provides an extra layer of cluster-safe state management over the top of the web container session clustering.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		For session or conversation scoped JavaBean components, Seam automatically forces replication to occur by calling <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">setAttribute()</fo:inline> once in every request that the component was invoked by the application. Of course, this strategy is inefficient for read-mostly components. You can control this behavior by implementing the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.core.Mutable</fo:inline> interface, or by extending <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.core.AbstractMutable</fo:inline>, and writing your own dirty-checking logic inside the component. For example,
+	</fo:block><fo:block id="id3800925" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Name("account")
+public class Account extends AbstractMutable
+{
+    private BigDecimal balance;
+    
+    public void setBalance(BigDecimal balance)
+    {
+        setDirty(this.balance, balance);
+        this.balance = balance;
+    }
+    
+    public BigDecimal getBalance()
+    {
+        return balance;
+    }
+    
+    ...
+    
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Or, you can use the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@ReadOnly</fo:inline> annotation to achieve a similar effect:
+	</fo:block><fo:block id="id3800942" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Name("account")
+public class Account
+{
+    private BigDecimal balance;
+    
+    public void setBalance(BigDecimal balance)
+    {
+        this.balance = balance;
+    }
+    
+    @ReadOnly
+    public BigDecimal getBalance()
+    {
+        return balance;
+    }
+    
+    ...
+    
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		For session or conversation scoped entity bean components, Seam automatically forces replication to occur by calling <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">setAttribute()</fo:inline> once in every request, <fo:inline font-style="italic">unless the (conversation-scoped) entity is currently associated with a Seam-managed persistence context, in which case no replication is needed</fo:inline>. This strategy is not necessarily efficient, so session or conversation scope entity beans should be used with care. You can always write a stateful session bean or JavaBean component to <fo:inline font-style="italic">manage</fo:inline> the entity bean instance. For example,
+	</fo:block><fo:block id="id3800974" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Stateful
+ at Name("account")
+public class AccountManager extends AbstractMutable
+{
+    private Account account; // an entity bean
+    
+    @Unwrap
+    public void getAccount()
+    {
+        return account;
+    }
+    
+    ...
+    
+}
+</fo:block><fo:block id="id3800982" color="white" background-color="#8e9f00" space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1em" padding-bottom="12pt" padding-top="12pt" margin-left="0pc"><fo:list-block provisional-distance-between-starts="36pt + 18pt" provisional-label-separation="18pt"><fo:list-item><fo:list-item-label end-indent="label-end()"><fo:block><fo:external-graphic width="auto" height="auto" content-width="36pt" src="url(Common_Content/images/note.svg)"/></fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block font-size="13pt" color="white" font-weight="bold" hyphenate="true" keep-with-next.within-column="always">Note</fo:block><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum!
 ="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Note that the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">EntityHome</fo:inline> class in the Seam Application Framework provides a great example of this pattern.
+		</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-The_contextual_component_model-Factory_and_manager_components"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Factory and manager components</fo:marker><fo:block color="#a70000" font-size="16pt">3.8. Factory and manager components</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/!
 transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		We often need to work with objects that are not Seam components. But we still want to be able to inject them into our components using <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@In</fo:inline> and use them in value and method binding expressions, etc. Sometimes, we even need to tie them into the Seam context lifecycle (<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Destroy</fo:inline>, for example). So the Seam contexts can contain objects which are not Seam components, and Seam provides a couple of nice features that make it easier to work with non-component objects bound to contexts.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The <fo:inline font-style="italic">factory component pattern</fo:inline> lets a Seam component act as the instantiator for a non-component object. A <fo:inline font-style="italic">factory method</fo:inline> will be called when a context variable is referenced but has no value bound to it. We define factory methods using the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Factory</fo:inline> annotation. The factory method binds a value to the context variable, and determines the scope of the bound value. There are two styles of factory method. The first style returns a value, which is bound to the context by Seam:
+	</fo:block><fo:block id="id2766004" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Factory(scope=CONVERSATION)
+public List&lt;Customer&gt; getCustomerList() { 
+    return ... ;
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The second style is a method of type <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">void</fo:inline> which binds the value to the context variable itself:
+	</fo:block><fo:block id="id2766018" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@DataModel List&lt;Customer&gt; customerList;
+
+ at Factory("customerList")
+public void initCustomerList() { 
+    customerList = ...  ;
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		In both cases, the factory method is called when we reference the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">customerList</fo:inline> context variable and its value is null, and then has no further part to play in the lifecycle of the value. An even more powerful pattern is the <fo:inline font-style="italic">manager component pattern</fo:inline>. In this case, we have a Seam component that is bound to a context variable, that manages the value of the context variable, while remaining invisible to clients.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		A manager component is any component with an <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Unwrap</fo:inline> method. This method returns the value that will be visable to clients, and is called <fo:inline font-style="italic">every time</fo:inline> a context variable is referenced.
+	</fo:block><fo:block id="id2766057" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Name("customerList")
+ at Scope(CONVERSATION)
+public class CustomerListManager
+{
+    ...
+    
+    @Unwrap
+    public List&lt;Customer&gt; getCustomerList() { 
+        return ... ;
+    }
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		This pattern is especially useful if we have some heavyweight object that needs a cleanup operation when the context ends. In this case, the manager component may perform cleanup in the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Destroy</fo:inline> method.
+	</fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="body" language="en" format="1" initial-page-number="auto-odd" force-page-count="end-on-even" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-a!
 lign="start" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always" font-weight="bold">Chapter 4.</fo:inline></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="propor!
 tional-column-width(1)"/><fo:table-body><fo:table-row block-pr!
 ogressio
n-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always"><fo:retrieve-marker retrieve-class-name="section.head.marker" retrieve-position="first-including-carryover" retrieve-boundary="page-sequence"/></fo:inline></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="propo!
 rtional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always" font-weight="bold">Chapter 4. Configuring Seam components</fo:inline></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" wi!
 dth="100%" border-bottom-width="0.5pt" border-bottom-style="so!
 lid" bor
der-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-footnote-separator"><fo:block><fo:leader color="black" leader-pattern="rule" leader-length="1in"/></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block font-family="Liberati!
 on Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static!
 -content flow-name="xsl-region-after-odd"><fo:block font-famil!
 y="Liber
ation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:stat!
 ic-content flow-name="xsl-region-after-even"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:ta!
 ble-row></fo:table-body></fo:table></fo:block></fo:static-cont!
 ent><fo:
static-content flow-name="xsl-region-after-blank"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></f!
 o:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:flow flow-name="xsl-region-body" start-indent="0pt" end-indent="0pt"><fo:block id="Seam_Reference_Guide-Configuring_Seam_components"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats"><fo:block margin-left="0pc"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" color="#a70000" background-color="white" font-size="24pt" font-weight="bold" text-align="left" padding-left="1em" padding-right="1em">Configuring Seam components</fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The philosophy of minimizing XML-based configuration is extremely strong in Seam. Nevertheless, there are various reasons why we might want to configure a Seam component using XML: to isolate deployment-specific information from the Java code, to enable the creation of re-usable frameworks, to configure Seam's built-in functionality, etc. Seam provides two basic approaches to configuring components: configuration via property settings in a properties file or <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">web.xml</fo:inline>, and configuration via <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">components.xml</fo:inline>.
+	</fo:block><fo:block id="Seam_Reference_Guide-Configuring_Seam_components-Configuring_components_via_property_settings"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Configuring components via property settings</fo:marker><fo:block color="#a70000" font-size="16pt">4.1. Configuring components via property settings</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com!
 /XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Seam components may be provided with configuration properties either via servlet context parameters, or via a properties file named <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">seam.properties</fo:inline> in the root of the classpath.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The configurable Seam component must expose JavaBeans-style property setter methods for the configurable attributes. If a seam component named <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">com.jboss.myapp.settings</fo:inline> has a setter method named <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">setLocale()</fo:inline>, we can provide a property named <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">com.jboss.myapp.settings.locale</fo:inline> in the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">seam.properties</fo:inline> file or as a servlet context parameter, and Seam will set the value of the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">locale</fo:inline> attribute whenever it instantiates the component.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The same mechanism is used to configure Seam itself. For example, to set the conversation timeout, we provide a value for <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.core.manager.conversationTimeout</fo:inline> in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">web.xml</fo:inline> or <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">seam.properties</fo:inline>. (There is a built-in Seam component named <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.core.manager</fo:inline> with a setter method named <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">setConversationTimeout()</fo:inline>.)
+	</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Configuring_Seam_components-Configuring_components_via_components.xml"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Configuring components via components.xml</fo:marker><fo:block color="#a70000" font-size="16pt">4.2. Configuring components via components.xml</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.c!
 om/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">components.xml</fo:inline> file is a bit more powerful than property settings. It lets you:
+	</fo:block><fo:list-block id="id3910614" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3370484" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				Configure components that have been installed automatically—including both built-in components, and application components that have been annotated with the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Name</fo:inline> annotation and picked up by Seam's deployment scanner.
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3850949" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				Install classes with no <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Name</fo:inline> annotation as Seam components—this is most useful for certain kinds of infrastructural components which can be installed multiple times different names (for example Seam-managed persistence contexts).
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3533335" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				Install components that <fo:inline font-style="italic">do</fo:inline> have a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Name</fo:inline> annotation but are not installed by default because of an <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Install</fo:inline> annotation that indicates the component should not be installed.
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3533475" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				Override the scope of a component.
+			</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		A <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">components.xml</fo:inline> file may appear in one of three different places:
+	</fo:block><fo:list-block id="id3797192" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id2664036" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">WEB-INF</fo:inline> directory of a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">war</fo:inline>.
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3655963" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">META-INF</fo:inline> directory of a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">jar</fo:inline>.
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3756432" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				Any directory of a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">jar</fo:inline> that contains classes with an <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Name</fo:inline> annotation.
+			</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Usually, Seam components are installed when the deployment scanner discovers a class with a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Name</fo:inline> annotation sitting in an archive with a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">seam.properties</fo:inline> file or a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">META-INF/components.xml</fo:inline> file. (Unless the component has an <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Install</fo:inline> annotation indicating it should not be installed by default.) The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">components.xml</fo:inline> file lets us handle special cases where we need to override the annotations.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		For example, the following <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">components.xml</fo:inline> file installs the JBoss Embeddable EJB3 container:
+	</fo:block><fo:block id="id3908299" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;components xmlns="http://jboss.com/products/seam/components" 
+            xmlns:core="http://jboss.com/products/seam/core"&gt;
+    &lt;core:ejb/&gt;
+&lt;/components&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		This example does the same thing:
+	</fo:block><fo:block id="id2838205" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;components&gt;
+    &lt;component class="org.jboss.seam.core.Ejb"/&gt;
+&lt;/components&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		This one installs and configures two different Seam-managed persistence contexts:
+	</fo:block><fo:block id="id3504586" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;components xmlns="http://jboss.com/products/seam/components" 
+            xmlns:core="http://jboss.com/products/seam/core"
+
+    &lt;core:managed-persistence-context name="customerDatabase"
+                persistence-unit-jndi-name="java:/customerEntityManagerFactory"/&gt;
+        
+    &lt;core:managed-persistence-context name="accountingDatabase"
+                persistence-unit-jndi-name="java:/accountingEntityManagerFactory"/&gt;            
+
+&lt;/components&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		As does this one:
+	</fo:block><fo:block id="id3301328" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;components&gt;
+    &lt;component name="customerDatabase" 
+              class="org.jboss.seam.core.ManagedPersistenceContext"&gt;
+        &lt;property name="persistenceUnitJndiName"&gt;java:/customerEntityManagerFactory&lt;/property&gt;
+    &lt;/component&gt;
+    
+    &lt;component name="accountingDatabase"
+              class="org.jboss.seam.core.ManagedPersistenceContext"&gt;
+        &lt;property name="persistenceUnitJndiName"&gt;java:/accountingEntityManagerFactory&lt;/property&gt;
+    &lt;/component&gt;
+&lt;/components&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		This example creates a session-scoped Seam-managed persistence context (this is not recommended in practice):
+	</fo:block><fo:block id="id3450082" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;components xmlns="http://jboss.com/products/seam/components" 
+            xmlns:core="http://jboss.com/products/seam/core"
+
+  &lt;core:managed-persistence-context name="productDatabase" 
+                                   scope="session"
+              persistence-unit-jndi-name="java:/productEntityManagerFactory"/&gt;        
+
+&lt;/components&gt;
+</fo:block><fo:block id="id3450080" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;components&gt;
+            
+    &lt;component name="productDatabase"
+              scope="session"
+              class="org.jboss.seam.core.ManagedPersistenceContext"&gt;
+        &lt;property name="persistenceUnitJndiName"&gt;java:/productEntityManagerFactory&lt;/property&gt;
+    &lt;/component&gt;
+
+&lt;/components&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		It is common to use the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">auto-create</fo:inline> option for infrastructural objects like persistence contexts, which saves you from having to explicitly specify <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">create=true</fo:inline> when you use the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@In</fo:inline> annotation.
+	</fo:block><fo:block id="id3403832" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;components xmlns="http://jboss.com/products/seam/components" 
+            xmlns:core="http://jboss.com/products/seam/core"
+
+  &lt;core:managed-persistence-context name="productDatabase" 
+                             auto-create="true"
+              persistence-unit-jndi-name="java:/productEntityManagerFactory"/&gt;        
+
+&lt;/components&gt;
+</fo:block><fo:block id="id3934663" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;components&gt;
+            
+    &lt;component name="productDatabase"
+        auto-create="true"
+              class="org.jboss.seam.core.ManagedPersistenceContext"&gt;
+        &lt;property name="persistenceUnitJndiName"&gt;java:/productEntityManagerFactory&lt;/property&gt;
+    &lt;/component&gt;
+
+&lt;/components&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;factory&gt;</fo:inline> declaration lets you specify a value or method binding expression that will be evaluated to initialize the value of a context variable when it is first referenced.
+	</fo:block><fo:block id="id3891823" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;components&gt;
+
+    &lt;factory name="contact" method="#{contactManager.loadContact}" scope="CONVERSATION"/&gt;
+
+&lt;/components&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		You can create an <fo:inline font-style="italic">alias</fo:inline> (a second name) for a Seam component like so:
+	</fo:block><fo:block id="id2731799" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;components&gt;
+
+    &lt;factory name="user" value="#{actor}" scope="STATELESS"/&gt;
+
+&lt;/components&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		You can even create an <fo:inline font-style="italic">alias</fo:inline> for a commonly used expression:
+	</fo:block><fo:block id="id3732700" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;components&gt;
+
+    &lt;factory name="contact" value="#{contactManager.contact}" scope="STATELESS"/&gt;
+
+&lt;/components&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		It is especially common to see the use of <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">auto-create="true"</fo:inline> with the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;factory&gt;</fo:inline> declaration:
+	</fo:block><fo:block id="id3715612" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;components&gt;
+
+    &lt;factory name="session" value="#{entityManager.delegate}" scope="STATELESS" 
+       auto-create="true"/&gt;
+
+&lt;/components&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Sometimes we want to reuse the same <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">components.xml</fo:inline> file with minor changes during both deployment and testing. Seam lets you place wildcards of the form <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@wildcard@</fo:inline> in the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">components.xml</fo:inline> file which can be replaced either by your Ant build script (at deployment time) or by providing a file named <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">components.properties</fo:inline> in the classpath (at development time). You will see this approach used in the Seam examples.
+	</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Configuring_Seam_components-Fine_grained_configuration_files"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Fine-grained configuration files</fo:marker><fo:block color="#a70000" font-size="16pt">4.3. Fine-grained configuration files</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-be!
 fore.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		If you have a large number of components that need to be configured in XML, it makes much more sense to split up the information in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">components.xml</fo:inline> into many small files. Seam lets you put configuration for a class named, for example, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">com.helloworld.Hello</fo:inline> in a resource named <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">com/helloworld/Hello.component.xml</fo:inline>. (You might be familiar with this pattern, since it is the same one we use in Hibernate.) The root element of the file may be either a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;components&gt;</fo:inline> or <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;component&gt;</fo:inline> element.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The first option lets you define multiple components in the file:
+	</fo:block><fo:block id="id3922326" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;components&gt;
+    &lt;component class="com.helloworld.Hello" name="hello"&gt;
+        &lt;property name="name"&gt;#{user.name}&lt;/property&gt;
+    &lt;/component&gt;
+    &lt;factory name="message" value="#{hello.message}"/&gt;
+&lt;/components&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The second option only lets you define or configure one component, but is less noisy:
+	</fo:block><fo:block id="id3734886" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;component name="hello"&gt;
+    &lt;property name="name"&gt;#{user.name}&lt;/property&gt;
+&lt;/component&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		In the second option, the class name is implied by the file in which the component definition appears.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Alternatively, you may put configuration for all classes in the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">com.helloworld</fo:inline> package in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">com/helloworld/components.xml</fo:inline>.
+	</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Configuring_Seam_components-Configurable_property_types"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Configurable property types</fo:marker><fo:block color="#a70000" font-size="16pt">4.4. Configurable property types</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0!
 .1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Properties of string, primitive or primitive wrapper type may be configured just as you would expect:
+	</fo:block><fo:block id="id3684787" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">org.jboss.seam.core.manager.conversationTimeout 60000
+</fo:block><fo:block id="id3929387" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;core:manager conversation-timeout="60000"/&gt;
+</fo:block><fo:block id="id3722396" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;component name="org.jboss.seam.core.manager"&gt;
+    &lt;property name="conversationTimeout"&gt;60000&lt;/property&gt;
+&lt;/component&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Arrays, sets and lists of strings or primitives are also supported:
+	</fo:block><fo:block id="id3507697" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">org.jboss.seam.core.jbpm.processDefinitions order.jpdl.xml, return.jpdl.xml, inventory.jpdl.xml
+</fo:block><fo:block id="id3910594" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;core:jbpm&gt;
+    &lt;core:process-definitions&gt;
+        &lt;value&gt;order.jpdl.xml&lt;/value&gt;
+        &lt;value&gt;return.jpdl.xml&lt;/value&gt;
+        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;
+    &lt;/core:process-definitions&gt;
+&lt;/core:jbpm&gt;
+</fo:block><fo:block id="id3904890" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;component name="org.jboss.seam.core.jbpm"&gt;
+    &lt;property name="processDefinitions"&gt;
+        &lt;value&gt;order.jpdl.xml&lt;/value&gt;
+        &lt;value&gt;return.jpdl.xml&lt;/value&gt;
+        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;
+    &lt;/property&gt;
+&lt;/component&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Even maps with String-valued keys and string or primitive values are supported:
+	</fo:block><fo:block id="id2755743" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;component name="issueEditor"&gt;
+    &lt;property name="issueStatuses"&gt;
+        &lt;key&gt;open&lt;/key&gt; &lt;value&gt;open issue&lt;/value&gt;
+        &lt;key&gt;resolved&lt;/key&gt; &lt;value&gt;issue resolved by developer&lt;/value&gt;
+        &lt;key&gt;closed&lt;/key&gt; &lt;value&gt;resolution accepted by user&lt;/value&gt;
+    &lt;/property&gt;
+&lt;/component&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Finally, you may wire together components using a value-binding expression. Note that this is quite different to injection using <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@In</fo:inline>, since it happens at component instantiation time instead of invocation time. It is therefore much more similar to the dependency injection facilities offered by traditional IoC containers like JSF or Spring.
+	</fo:block><fo:block id="id3937981" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;drools:managed-working-memory name="policyPricingWorkingMemory" rule-base="#{policyPricingRules}"/&gt;
+</fo:block><fo:block id="id3149430" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;component name="policyPricingWorkingMemory"
+          class="org.jboss.seam.drools.ManagedWorkingMemory"&gt;
+    &lt;property name="ruleBase"&gt;#{policyPricingRules}&lt;/property&gt;
+&lt;/component&gt;
+</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Configuring_Seam_components-Using_XML_Namespaces"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Using XML Namespaces</fo:marker><fo:block color="#a70000" font-size="16pt">4.5. Using XML Namespaces</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.opt!
 imum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Throughout the examples, there have been two competing ways of declaring components: with and without the use of XML namespaces. The following shows a typical <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">components.xml</fo:inline> file without namespaces. It uses the Seam Components DTD:
+	</fo:block><fo:block id="id3341921" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;?xml version="1.0" encoding="UTF-8"&gt;
+&lt;!DOCTYPE components PUBLIC "-//JBoss/Seam Component Configuration DTD 1.2//EN"
+                            "http://jboss.com/products/seam/components-1.2.dtd"&gt;
+&lt;components&gt;
+
+    &lt;component class="org.jboss.seam.core.init"&gt;
+        &lt;property name="debug"&gt;true&lt;/property&gt;
+        &lt;property name="jndiPattern"&gt;@jndiPattern@&lt;/property&gt;
+    &lt;/component&gt;
+
+    &lt;component name="org.jboss.sean.core.ejb" installed="@embeddedEjb@" /&gt;
+    
+&lt;/components&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		As you can see, this is somewhat verbose. Even worse, the component and attribute names cannot be validated at development time.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The namespaced version looks like this:
+	</fo:block><fo:block id="id4182218" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;components xmlns="http://jboss.com/products/seam/components"
+            xmlns:core="http://jboss.com/products/seam/core"
+            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+            xsi:schemaLocation=
+                "http://jboss.com/products/seam/core 
+                                        http://jboss.com/products/seam/core-1.2.xsd 
+                 http://jboss.com/products/seam/components 
+                                        http://jboss.com/products/seam/components-1.2.xsd"&gt;
+
+    &lt;core:init debug="true" jndi-pattern="@jndiPattern@"/&gt;
+
+    &lt;core:ejb installed="@embeddedEjb@"/&gt;
+
+&lt;/components&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Even though the schema declarations are verbose, the actual XML content is lean and easy to understand. The schemas provide detailed information about each component and the attributes available, allowing XML editors to offer intelligent autocomplete. The use of namespaced elements makes generating and maintaining correct <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">components.xml</fo:inline> files much simpler.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Now, this works great for the built-in Seam components, but what about user components? There are two options. First, Seam supports mixing the two models, allowing the use of the generic <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;component&gt;</fo:inline> declarations for user components, along with namespaced declarations for built-in components. But even better, Seam allows you to quickly declare namespaces for your own components.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Any Java package can be associated with an XML namespace by annotating the package with the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Namespace</fo:inline> annotation. (Package-level annotations are declared in a file named <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">package-info.java</fo:inline> in the package directory.) Here is an example from the seampay demo:
+	</fo:block><fo:block id="id3133656" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Namespace(value="http://jboss.com/products/seam/examples/seampay")
+package org.jboss.seam.example.seampay;
+
+import org.jboss.seam.annotations.Namespace;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		That is all you need to do to use the namespaced style in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">components.xml</fo:inline>! Now we can write:
+	</fo:block><fo:block id="id3310086" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;components xmlns="http://jboss.com/products/seam/components"
+            xmlns:pay="http://jboss.com/products/seam/examples/seampay"
+            ... &gt;
+
+    &lt;pay:payment-home new-instance="#{newPayment}"
+                      created-message="Created a new payment to #{newPayment.payee}" /&gt;
+
+    &lt;pay:payment name="newPayment"
+                 payee="Somebody"
+                 account="#{selectedAccount}"
+                 payment-date="#{currentDatetime}"
+                 created-date="#{currentDatetime}" /&gt;
+     ...
+&lt;/components&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Or:
+	</fo:block><fo:block id="id3756412" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;components xmlns="http://jboss.com/products/seam/components"
+            xmlns:pay="http://jboss.com/products/seam/examples/seampay"
+            ... &gt;
+
+    &lt;pay:payment-home&gt;
+        &lt;pay:new-instance&gt;"#{newPayment}"&lt;/pay:new-instance&gt;
+        &lt;pay:created-message&gt;Created a new payment to #{newPayment.payee}&lt;/pay:created-message&gt;
+    &lt;/pay:payment-home&gt;
+    
+    &lt;pay:payment name="newPayment"&gt;
+        &lt;pay:payee&gt;Somebody"&lt;/pay:payee&gt;
+        &lt;pay:account&gt;#{selectedAccount}&lt;/pay:account&gt;
+        &lt;pay:payment-date&gt;#{currentDatetime}&lt;/pay:payment-date&gt;
+        &lt;pay:created-date&gt;#{currentDatetime}&lt;/pay:created-date&gt;
+     &lt;/pay:payment&gt;
+     ...
+&lt;/components&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		These examples illustrate the two usage models of a namespaced element. In the first declaration, the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;pay:payment-home&gt;</fo:inline> references the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">paymentHome</fo:inline> component:
+	</fo:block><fo:block id="id2677111" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">package org.jboss.seam.example.seampay;
+...
+ at Name("paymentHome")
+public class PaymentController
+    extends EntityHome&lt;Payment&gt;
+{
+    ... 
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The element name is the hyphenated form of the component name. The attributes of the element are the hyphenated form of the property names.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		In the second declaration, the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;pay:payment&gt;</fo:inline> element refers to the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Payment</fo:inline> class in the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.example.seampay</fo:inline> package. In this case <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Payment</fo:inline> is an entity that is being declared as a Seam component:
+	</fo:block><fo:block id="id3888066" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">package org.jboss.seam.example.seampay;
+...
+ at Entity
+public class Payment
+    implements Serializable
+{
+    ...
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		If we want validation and autocompletion to work for user-defined components, we will need a schema. Seam does not yet provide a mechanism to automatically generate a schema for a set of components, so it is necessary to generate one manually. The schema definitions for the standard Seam packages can be used for guidance.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The following are the the namespaces used by Seam:
+	</fo:block><fo:list-block id="id3734734" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id4162596" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				components — <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">http://jboss.com/products/seam/components</fo:inline>
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3713080" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				core — <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">http://jboss.com/products/seam/core</fo:inline>
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3092932" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				drools — <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">http://jboss.com/products/seam/drools</fo:inline>
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3643133" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				framework — <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">http://jboss.com/products/seam/framework</fo:inline>
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3825706" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				jms — <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">http://jboss.com/products/seam/jms</fo:inline>
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3740820" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				remoting — <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">http://jboss.com/products/seam/remoting</fo:inline>
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3891509" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				theme — <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">http://jboss.com/products/seam/theme</fo:inline>
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id4166461" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				security — <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">http://jboss.com/products/seam/security</fo:inline>
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3789210" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				mail — <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">http://jboss.com/products/seam/mail</fo:inline>
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3684695" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				web — <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">http://jboss.com/products/seam/web</fo:inline>
+			</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="body" language="en" format="1" initial-page-number="auto-odd" force-page-count="end-on-even" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row !
 block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always" font-weight="bold">Chapter 5.</fo:inline></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-wi!
 dth(0)"/><fo:table-column column-number="3" column-width="prop!
 ortional
-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always"><fo:retrieve-marker retrieve-class-name="section.head.marker" retrieve-position="first-including-carryover" retrieve-boundary="page-sequence"/></fo:inline></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-colo!
 r="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always" font-weight="bold">Chapter 5. Events, interceptors and exception handling</fo:inline></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,san!
 s-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table!
 -layout=
"fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-footnote-separator"><fo:block><fo:leader color="black" leader-pattern="rule" leader-length="1in"/></fo:block></fo:static-content><fo:s!
 tatic-content flow-name="xsl-region-after-first"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell></f!
 o:table-row></fo:table-body></fo:table></fo:block></fo:static-!
 content>
<fo:static-content flow-name="xsl-region-after-odd"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><!
 /fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-even"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" r!
 elative-align="baseline"><fo:block><fo:block/></fo:block></fo:!
 table-ce
ll></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-blank"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="afte!
 r" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:flow flow-name="xsl-region-body" start-indent="0pt" end-indent="0pt"><fo:block id="Seam_Reference_Guide-Events_interceptors_and_exception_handling"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats"><fo:block margin-left="0pc"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" color="#a70000" background-color="white" font-size="24pt" font-weight="bold" text-align="left" padding-left="1em" padding-right="1em">Events, interceptors and exception handling</fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-aft!
 er.maximum="1.2em">
+		Complementing the contextual component model, there are two further basic concepts that facilitate the extreme loose-coupling that is the distinctive feature of Seam applications. The first is a strong event model where events may be mapped to event listeners via JSF-like method binding expressions. The second is the pervasive use of annotations and interceptors to apply cross-cutting concerns to components which implement business logic.
+	</fo:block><fo:block id="Seam_Reference_Guide-Events_interceptors_and_exception_handling-Seam_events"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Seam events</fo:marker><fo:block color="#a70000" font-size="16pt">5.1. Seam events</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-bef!
 ore.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The Seam component model was developed for use with <fo:inline font-style="italic">event-driven applications</fo:inline>, specifically to enable the development of fine-grained, loosely-coupled components in a fine-grained eventing model. Events in Seam come in several types, most of which we have already seen:
+	</fo:block><fo:list-block id="id3373038" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id4179399" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				JSF events
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3450094" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				jBPM transition events
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3735043" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				Seam page actions
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3324295" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				Seam component-driven events
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3929398" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				Seam contextual events
+			</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		All of these various kinds of events are mapped to Seam components via JSF EL method binding expressions. For a JSF event, this is defined in the JSF template:
+	</fo:block><fo:block id="id3939442" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;h:commandButton value="Click me!" action="#{helloWorld.sayHello}"/&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		For a jBPM transition event, it is specified in the jBPM process definition or pageflow definition:
+	</fo:block><fo:block id="id3922003" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;start-page name="hello" view-id="/hello.jsp"&gt;
+    &lt;transition to="hello"&gt;
+        &lt;action expression="#{helloWorld.sayHello}"/&gt;
+    &lt;/transition&gt;
+&lt;/start-page&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		You can find out more information about JSF events and jBPM events elsewhere. Lets concentrate for now upon the two additional kinds of events defined by Seam.
+	</fo:block><fo:block id="Seam_Reference_Guide-Seam_events-Page_actions"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Page actions</fo:marker><fo:block color="#a70000" font-size="14pt">5.1.1. Page actions</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-!
 after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		A Seam page action is an event that occurs just before we render a page. We declare page actions in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">WEB-INF/pages.xml</fo:inline>. We can define a page action for either a particular JSF view id:
+	</fo:block><fo:block id="id4178595" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;pages&gt;
+    &lt;page view-id="/hello.jsp" action="#{helloWorld.sayHello}"/&gt;
+&lt;/pages&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Or we can use a wildcard to specify an action that applies to all view ids that match the pattern:
+	</fo:block><fo:block id="id3174244" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;pages&gt;
+    &lt;page view-id="/hello/*" action="#{helloWorld.sayHello}"/&gt;
+&lt;/pages&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		If multiple wildcarded page actions match the current view-id, Seam will call all the actions, in order of least-specific to most-specific.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The page action method can return a JSF outcome. If the outcome is non-null, Seam will use the defined navigation rules to navigate to a view.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Furthermore, the view id mentioned in the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;page&gt;</fo:inline> element need not correspond to a real JSP or Facelets page. So, we can reproduce the functionality of a traditional action-oriented framework like Struts or WebWork using page actions.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		This is quite useful if you want to do complex things in response to non-faces requests (for example, HTTP GET requests).
+	</fo:block><fo:block id="Seam_Reference_Guide-Page_actions-Page_parameters"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:block color="#a70000" font-size="13pt">5.1.1.1. Page parameters</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximu!
 m="1.2em">
+		A JSF faces request (a form submission) encapsulates both an <fo:inline font-style="italic">action</fo:inline> (a method binding) and <fo:inline font-style="italic">parameters</fo:inline> (input value bindings). A page action might also require parameters.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Since GET requests are bookmarkable, page parameters are passed as human-readable request parameters. (Unlike JSF form inputs, which are anything but!)
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Seam lets us provide a value binding that maps a named request parameter to an attribute of a model object.
+	</fo:block><fo:block id="id3357777" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;pages&gt;
+    &lt;page view-id="/hello.jsp" action="#{helloWorld.sayHello}"&gt;
+        &lt;param name="firstName" value="#{person.firstName}"/&gt;
+        &lt;param name="lastName" value="#{person.lastName}"/&gt;
+    &lt;/page&gt;
+&lt;/pages&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;param&gt;</fo:inline> declaration is bidirectional, just like a value binding for a JSF input:
+	</fo:block><fo:list-block id="id3933793" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3722463" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				When a non-faces (GET) request for the view id occurs, Seam sets the value of the named request parameter onto the model object, after performing appropriate type conversions.
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2768132" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				Any <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;s:link&gt;</fo:inline> or <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;s:button&gt;</fo:inline> transparently includes the request parameter. The value of the parameter is determined by evaluating the value binding during the render phase (when the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;s:link&gt;</fo:inline> is rendered).
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3917467" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				Any navigation rule with a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;redirect/&gt;</fo:inline> to the view id transparently includes the request parameter. The value of the parameter is determined by evaluating the value binding at the end of the invoke application phase.
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3848930" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				The value is transparently propagated with any JSF form submission for the page with the given view-id. (This means that view parameters behave like <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">PAGE</fo:inline>-scoped context variables for faces requests.
+			</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The essential idea behind all this is that <fo:inline font-style="italic">however</fo:inline> we get from any other page to <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">/hello.jsp</fo:inline> (or from <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">/hello.jsp</fo:inline> back to <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">/hello.jsp</fo:inline>), the value of the model attribute referred to in the value binding is <fo:inline font-style="italic">remembered</fo:inline>, without the need for a conversation (or other server-side state).
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		This all sounds pretty complex, however the initial effort is worth it in the end. Page parameters are the most elegant way to propagate state across a non-faces request. They are especially cool for problems like search screens with bookmarkable results pages, where we would like to be able to write our application code to handle both POST and GET requests with the same code. Page parameters eliminate repetitive listing of request parameters in the view definition and make redirects much easier to code.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		You don not need an actual page action method binding to use a page parameter. The following is perfectly valid:
+	</fo:block><fo:block id="id3147181" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;pages&gt;
+    &lt;page view-id="/hello.jsp"&gt;
+        &lt;param name="firstName" value="#{person.firstName}"/&gt;
+        &lt;param name="lastName" value="#{person.lastName}"/&gt;
+    &lt;/page&gt;
+&lt;/pages&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		You can even specify a JSF converter:
+	</fo:block><fo:block id="id3906492" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;pages&gt;
+    &lt;page view-id="/calculator.jsp" action="#{calculator.calculate}"&gt;
+        &lt;param name="x" value="#{calculator.lhs}"/&gt;
+        &lt;param name="y" value="#{calculator.rhs}"/&gt;
+        &lt;param name="op" converterId="com.my.calculator.OperatorConverter" value="#{calculator.op}"/&gt;
+    &lt;/page&gt;
+&lt;/pages&gt;
+</fo:block><fo:block id="id3904842" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;pages&gt;
+    &lt;page view-id="/calculator.jsp" action="#{calculator.calculate}"&gt;
+        &lt;param name="x" value="#{calculator.lhs}"/&gt;
+        &lt;param name="y" value="#{calculator.rhs}"/&gt;
+        &lt;param name="op" converter="#{operatorConverter}" value="#{calculator.op}"/&gt;
+    &lt;/page&gt;
+&lt;/pages&gt;
+</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Page_actions-Navigation"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:block color="#a70000" font-size="13pt">5.1.1.2. Navigation</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximu!
 m="1.2em">
+		You can use standard JSF navigation rules defined in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">faces-config.xml</fo:inline> in a Seam application. However, JSF navigation rules have a number of annoying limitations:
+	</fo:block><fo:list-block id="id3659204" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id2851224" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				It is not possible to specify request parameters to be used when redirecting.
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3920535" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				It is not possible to begin or end conversations from a rule.
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2735726" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				Rules work by evaluating the return value of the action method; it is not possible to evaluate an arbitrary EL expression.
+			</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		A further problem is that <fo:inline font-style="italic">orchestration</fo:inline> logic gets scattered between <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">pages.xml</fo:inline> and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">faces-config.xml</fo:inline>. It is better to unify this logic into <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">pages.xml</fo:inline>.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		This JSF navigation rule:
+	</fo:block><fo:block id="id3656094" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;navigation-rule&gt;
+    &lt;from-view-id&gt;/editDocument.xhtml&lt;/from-view-id&gt;
+    
+    &lt;navigation-case&gt;
+        &lt;from-action&gt;#{documentEditor.update}&lt;/from-action&gt;
+        &lt;from-outcome&gt;success&lt;/from-outcome&gt;
+        &lt;to-view-id&gt;/viewDocument.xhtml&lt;/to-view-id&gt;
+        &lt;redirect/&gt;
+    &lt;/navigation-case&gt;
+    
+&lt;/navigation-rule&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Can be rewritten as follows:
+	</fo:block><fo:block id="id3146976" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;page view-id="/editDocument.xhtml"&gt;
+    
+    &lt;navigation from-action="#{documentEditor.update}"&gt;
+        &lt;rule if-outcome="success"&gt;
+            &lt;redirect view-id="/viewDocument.xhtml"/&gt;
+        &lt;/rule&gt;
+    &lt;/navigation&gt;
+    
+&lt;/page&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		But it would be even nicer if we did not have to pollute our <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">DocumentEditor</fo:inline> component with string-valued return values (the JSF outcomes). So Seam lets us write:
+	</fo:block><fo:block id="id3774993" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;page view-id="/editDocument.xhtml"&gt;
+    
+    &lt;navigation from-action="#{documentEditor.update}" 
+                   evaluate="#{documentEditor.errors.size}"&gt;
+        &lt;rule if-outcome="0"&gt;
+            &lt;redirect view-id="/viewDocument.xhtml"/&gt;
+        &lt;/rule&gt;
+    &lt;/navigation&gt;
+    
+&lt;/page&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Or even:
+	</fo:block><fo:block id="id3756709" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;page view-id="/editDocument.xhtml"&gt;
+    
+    &lt;navigation from-action="#{documentEditor.update}"&gt;
+        &lt;rule if="#{documentEditor.errors.empty}"&gt;
+            &lt;redirect view-id="/viewDocument.xhtml"/&gt;
+        &lt;/rule&gt;
+    &lt;/navigation&gt;
+    
+&lt;/page&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The first form evaluates a value binding to determine the outcome value to be used by the subsequent rules. The second approach ignores the outcome and evaluates a value binding for each possible rule.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		When an update succeeds, we probably want to end the current conversation. We can do that like this:
+	</fo:block><fo:block id="id3907899" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;page view-id="/editDocument.xhtml"&gt;
+    
+    &lt;navigation from-action="#{documentEditor.update}"&gt;
+        &lt;rule if="#{documentEditor.errors.empty}"&gt;
+            &lt;end-conversation/&gt;
+            &lt;redirect view-id="/viewDocument.xhtml"/&gt;
+        &lt;/rule&gt;
+    &lt;/navigation&gt;
+    
+&lt;/page&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		But ending the conversation loses any state associated with the conversation, including the document we are currently interested in! One solution would be to use an immediate render instead of a redirect:
+	</fo:block><fo:block id="id3797872" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;page view-id="/editDocument.xhtml"&gt;
+    
+    &lt;navigation from-action="#{documentEditor.update}"&gt;
+        &lt;rule if="#{documentEditor.errors.empty}"&gt;
+            &lt;end-conversation/&gt;
+            &lt;render view-id="/viewDocument.xhtml"/&gt;
+        &lt;/rule&gt;
+    &lt;/navigation&gt;
+    
+&lt;/page&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		But the correct solution is to pass the document ID as a request parameter:
+	</fo:block><fo:block id="id2659048" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;page view-id="/editDocument.xhtml"&gt;
+    
+    &lt;navigation from-action="#{documentEditor.update}"&gt;
+        &lt;rule if="#{documentEditor.errors.empty}"&gt;
+            &lt;end-conversation/&gt;
+            &lt;redirect view-id="/viewDocument.xhtml"&gt;
+                &lt;param name="documentId" value="#{documentEditor.documentId}"/&gt;
+            &lt;/redirect&gt;
+        &lt;/rule&gt;
+    &lt;/navigation&gt;
+    
+&lt;/page&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Null outcomes are a special case in JSF. The null outcome is interpreted to mean <fo:inline font-style="italic">redisplay the page</fo:inline>. The following navigation rule matches any non-null outcome, but <fo:inline font-style="italic">not</fo:inline> the null outcome:
+	</fo:block><fo:block id="id3310186" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;page view-id="/editDocument.xhtml"&gt;
+    
+    &lt;navigation from-action="#{documentEditor.update}"&gt;
+        &lt;rule&gt;
+            &lt;render view-id="/viewDocument.xhtml"/&gt;
+        &lt;/rule&gt;
+    &lt;/navigation&gt;
+    
+&lt;/page&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		If you want to perform navigation when a null outcome occurs, use the following form instead:
+	</fo:block><fo:block id="id3909726" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;page view-id="/editDocument.xhtml"&gt;
+    
+    &lt;navigation from-action="#{documentEditor.update}"&gt;
+        &lt;render view-id="/viewDocument.xhtml"/&gt;
+    &lt;/navigation&gt;
+    
+&lt;/page&gt;
+</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Page_actions-Fine_grained_files_for_definition_of_navigation_page_actions_and_parameters"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:block color="#a70000" font-size="13pt">5.1.1.3. Fine-grained files for definition of navigation, page actions and parameters</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em"!
  space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		If you have a lot of different page actions and page parameters, or even just a lot of navigation rules, you will almost certainly want to split the declarations up over multiple files. You can define actions and parameters for a page with the view id <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">/calc/calculator.jsp</fo:inline> in a resource named <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">calc/calculator.page.xml</fo:inline>. The root element in this case is the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;page&gt;</fo:inline> element, and the view id is implied:
+	</fo:block><fo:block id="id4179098" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;page action="#{calculator.calculate}"&gt;
+    &lt;param name="x" value="#{calculator.lhs}"/&gt;
+    &lt;param name="y" value="#{calculator.rhs}"/&gt;
+    &lt;param name="op" converter="#{operatorConverter}" value="#{calculator.op}"/&gt;
+&lt;/page&gt;
+</fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Seam_events-Component_driven_events"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Component-driven events</fo:marker><fo:block color="#a70000" font-size="14pt">5.1.2. Component-driven events</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-befo!
 re.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Seam components can interact by simply calling each others methods. Stateful components may even implement the observer/observable pattern. But to enable components to interact in a more loosely-coupled fashion than is possible when the components call each others methods directly, Seam provides <fo:inline font-style="italic">component-driven events</fo:inline>.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		We specify event listeners (observers) in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">components.xml</fo:inline>.
+	</fo:block><fo:block id="id3939666" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;components&gt;
+    &lt;event type="hello"&gt;
+        &lt;action expression="#{helloListener.sayHelloBack}"/&gt;
+        &lt;action expression="#{logger.logHello}"/&gt;
+    &lt;/event&gt;
+&lt;/components&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Where the <fo:inline font-style="italic">event type</fo:inline> is just an arbitrary string.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		When an event occurs, the actions registered for that event will be called in the order they appear in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">components.xml</fo:inline>. How does a component raise an event? Seam provides a built-in component for this.
+	</fo:block><fo:block id="id3889257" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Name("helloWorld")
+public class HelloWorld {
+    public void sayHello() {
+        FacesMessages.instance().add("Hello World!");
+        Events.instance().raiseEvent("hello");
+    }
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Or you can use an annotation.
+	</fo:block><fo:block id="id2657580" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Name("helloWorld")
+public class HelloWorld {
+    @RaiseEvent("hello")
+    public void sayHello() {
+        FacesMessages.instance().add("Hello World!");
+    }
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Notice that this event producer has no dependency upon event consumers. The event listener may now be implemented with absolutely no dependency upon the producer:
+	</fo:block><fo:block id="id4166493" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Name("helloListener")
+public class HelloListener {
+    public void sayHelloBack() {
+        FacesMessages.instance().add("Hello to you too!");
+    }
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The method binding defined in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">components.xml</fo:inline> above takes care of mapping the event to the consumer. If you do not like futzing about in the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">components.xml</fo:inline> file, you can use an annotation instead:
+	</fo:block><fo:block id="id3482392" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Name("helloListener")
+public class HelloListener {
+    @Observer("hello")
+    public void sayHelloBack() {
+        FacesMessages.instance().add("Hello to you too!");
+    }
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		In terms of event objects, Seam does not require an event object to propagate state between event producer and listener. State is held in the Seam contexts, and is shared between components. However, if you really want to pass an event object, you can:
+	</fo:block><fo:block id="id3507866" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Name("helloWorld")
+public class HelloWorld {
+    private String name;
+    public void sayHello() {
+        FacesMessages.instance().add("Hello World, my name is #0.", name);
+        Events.instance().raiseEvent("hello", name);
+    }
+}
+</fo:block><fo:block id="id3533379" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Name("helloListener")
+public class HelloListener {
+    @Observer("hello")
+    public void sayHelloBack(String name) {
+        FacesMessages.instance().add("Hello #0!", name);
+    }
+}
+</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Seam_events-Contextual_events"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Contextual events</fo:marker><fo:block color="#a70000" font-size="14pt">5.1.3. Contextual events</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-befo!
 re.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Seam defines a number of built-in events that the application can use to perform special kinds of framework integration. The events are:
+	</fo:block><fo:list-block id="id2668944" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3448351" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.validationFailed</fo:inline> — called when JSF validation fails
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3432407" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.noConversation</fo:inline> — called when there is no long running conversation and a long running conversation is required
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3324272" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.preSetVariable.&lt;name&gt;</fo:inline> — called when the context variable &lt;name&gt; is set
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3466790" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.postSetVariable.&lt;name&gt;</fo:inline> — called when the context variable &lt;name&gt; is set
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3881152" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.preRemoveVariable.&lt;name&gt;</fo:inline> — called when the context variable &lt;name&gt; is unset
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3665912" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.postRemoveVariable.&lt;name&gt;</fo:inline> — called when the context variable &lt;name&gt; is unset
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2682121" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.preDestroyContext.&lt;SCOPE&gt;</fo:inline> — called before the &lt;SCOPE&gt; context is destroyed
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3743770" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.postDestroyContext.&lt;SCOPE&gt;</fo:inline> — called after the &lt;SCOPE&gt; context is destroyed
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3930454" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.beginConversation </fo:inline>— called whenever a long-running conversation begins
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3666228" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.endConversation </fo:inline>— called whenever a long-running conversation ends
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3579951" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.beginPageflow.&lt;name&gt; </fo:inline>— called when the pageflow &lt;name&gt; begins
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3715706" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.endPageflow.&lt;name&gt; </fo:inline>— called when the pageflow &lt;name&gt; ends
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3149402" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.createProcess.&lt;name&gt; </fo:inline>— called when the process &lt;name&gt; is created
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3891750" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.endProcess.&lt;name&gt; </fo:inline>— called when the process &lt;name&gt; ends
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3053002" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.initProcess.&lt;name&gt; </fo:inline>— called when the process &lt;name&gt; is associated with the conversation
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3756311" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.initTask.&lt;name&gt; </fo:inline>— called when the task &lt;name&gt; is associated with the conversation
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3856080" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.startTask.&lt;name&gt; </fo:inline>— called when the task &lt;name&gt; is started
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2735729" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.endTask.&lt;name&gt; </fo:inline>— called when the task &lt;name&gt; is ended
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3891451" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.postCreate.&lt;name&gt; </fo:inline>— called when the component &lt;name&gt; is created
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3914191" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.preDestroy.&lt;name&gt; </fo:inline>— called when the component &lt;name&gt; is destroyed
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3533401" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.beforePhase </fo:inline>— called before the start of a JSF phase
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3910630" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.afterPhase </fo:inline>— called after the end of a JSF phase
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id4166582" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.postAuthenticate.&lt;name&gt; </fo:inline>— called after a user is authenticated
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2837068" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.preAuthenticate.&lt;name&gt; </fo:inline>— called before attempting to authenticate a user
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3934679" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.notLoggedIn</fo:inline> — called there is no authenticated user and authentication is required
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3149905" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.rememberMe</fo:inline> — occurs when Seam security detects the username in a cookie
+			</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Seam components may observe any of these events in just the same way they observe any other component-driven events.
+	</fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Events_interceptors_and_exception_handling-Seam_interceptors"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Seam interceptors</fo:marker><fo:block color="#a70000" font-size="16pt">5.2. Seam interceptors</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em!
 " space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		EJB 3.0 introduced a standard interceptor model for session bean components. To add an interceptor to a bean, you need to write a class with a method annotated <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@AroundInvoke</fo:inline> and annotate the bean with an <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Interceptors</fo:inline> annotation that specifies the name of the interceptor class. For example, the following interceptor checks that the user is logged in before allowing invoking an action listener method:
+	</fo:block><fo:block id="id2804097" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">public class LoggedInInterceptor {
+
+   @AroundInvoke
+   public Object checkLoggedIn(InvocationContext invocation) throws Exception {
+   
+      boolean isLoggedIn = Contexts.getSessionContext().get("loggedIn")!=null;
+      if (isLoggedIn) {
+         //the user is already logged in
+         return invocation.proceed();
+      }
+      else {
+         //the user is not logged in, fwd to login page
+         return "login";
+      }
+   }
+
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		To apply this interceptor to a session bean which acts as an action listener, we must annotate the session bean <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Interceptors(LoggedInInterceptor.class)</fo:inline>. This is a somewhat ugly annotation. Seam builds upon the interceptor framework in EJB3 by allowing you to use <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Interceptors</fo:inline> as a meta-annotation. In our example, we would create an <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@LoggedIn</fo:inline> annotation, as follows:
+	</fo:block><fo:block id="id3403810" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Target(TYPE)
+ at Retention(RUNTIME)
+ at Interceptors(LoggedInInterceptor.class)
+public @interface LoggedIn {}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		We can now simply annotate our action listener bean with <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@LoggedIn</fo:inline> to apply the interceptor.
+	</fo:block><fo:block id="id3668952" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Stateless
+ at Name("changePasswordAction")
+ at LoggedIn
+ at Interceptors(SeamInterceptor.class)
+public class ChangePasswordAction implements ChangePassword { 
+    
+    ...
+    
+    public String changePassword() { ... }
+    
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		If interceptor ordering is important (it usually is), you can add <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Interceptor</fo:inline> annotations to your interceptor classes to specify a partial order of interceptors.
+	</fo:block><fo:block id="id3930288" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Interceptor(around={BijectionInterceptor.class,
+                     ValidationInterceptor.class,
+                     ConversationInterceptor.class},
+             within=RemoveInterceptor.class)
+public class LoggedInInterceptor
+{
+    ...
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		You can even have a <fo:inline font-style="italic">client-side</fo:inline> interceptor, that runs around any of the built-in functionality of EJB3:
+	</fo:block><fo:block id="id2965935" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Interceptor(type=CLIENT)
+public class LoggedInInterceptor
+{
+    ...
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		EJB interceptors are stateful, with a lifecycle that is the same as the component they intercept. For interceptors which do not need to maintain state, Seam lets you get a performance optimization by specifying <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Interceptor(stateless=true)</fo:inline>.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Much of the functionality of Seam is implemented as a set of built-in Seam interceptors, including the interceptors named in the previous example. You do not have to explicitly specify these interceptors by annotating your components; they exist for all interceptable Seam components.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		You can even use Seam interceptors with JavaBean components, not just EJB3 beans.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		EJB defines interception not only for business methods (using <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@AroundInvoke</fo:inline>), but also for the lifecycle methods <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@PostConstruct</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@PreDestroy</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@PrePassivate</fo:inline> and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@PostActive</fo:inline>. Seam supports all these lifecycle methods on both component and interceptor not only for EJB3 beans, but also for JavaBean components (except <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@PreDestroy</fo:inline> which is not meaningful for JavaBean components).
+	</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Events_interceptors_and_exception_handling-Managing_exceptions"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Managing exceptions</fo:marker><fo:block color="#a70000" font-size="16pt">5.3. Managing exceptions</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" spa!
 ce-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		JSF is surprisingly limited when it comes to exception handling. As a partial workaround for this problem, Seam lets you define how a particular class of exception is to be treated by annotating the exception class, or declaring the exception class in an XML file. This facility is meant to be combined with the EJB 3.0-standard <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@ApplicationException</fo:inline> annotation which specifies whether the exception should cause a transaction rollback.
+	</fo:block><fo:block id="Seam_Reference_Guide-Managing_exceptions-Exceptions_and_transactions"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Exceptions and transactions</fo:marker><fo:block color="#a70000" font-size="14pt">5.3.1. Exceptions and transactions</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-befor!
 e.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		EJB specifies well-defined rules that let us control whether an exception immediately marks the current transaction for rollback when it is thrown by a business method of the bean: <fo:inline font-style="italic">system exceptions</fo:inline> always cause a transaction rollback, <fo:inline font-style="italic">application exceptions</fo:inline> do not cause a rollback by default, but they do if <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@ApplicationException(rollback=true)</fo:inline> is specified. (An application exception is any checked exception, or any unchecked exception annotated <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@ApplicationException</fo:inline>. A system exception is any unchecked exception without an <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@ApplicationException</fo:inline> annotation.)
+	</fo:block><fo:block id="id3917455" color="white" background-color="#8e9f00" space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1em" padding-bottom="12pt" padding-top="12pt" margin-left="0pc"><fo:list-block provisional-distance-between-starts="36pt + 18pt" provisional-label-separation="18pt"><fo:list-item><fo:list-item-label end-indent="label-end()"><fo:block><fo:external-graphic width="auto" height="auto" content-width="36pt" src="url(Common_Content/images/note.svg)"/></fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block font-size="13pt" color="white" font-weight="bold" hyphenate="true" keep-with-next.within-column="always">Note</fo:block><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximu!
 m="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			There is a difference between marking a transaction for rollback, and actually rolling it back. The exception rules say that the transaction should be marked rollback only, but it may still be active after the exception is thrown.
+		</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Seam applies the EJB 3.0 exception rollback rules also to Seam JavaBean components.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		But these rules only apply in the Seam component layer. What about an exception that is uncaught and propagates out of the Seam component layer, and out of the JSF layer? Well, it is always wrong to leave a dangling transaction open, so Seam rolls back any active transaction when an exception occurs and is uncaught in the Seam component layer.
+	</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Managing_exceptions-Enabling_Seam_exception_handling"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Enabling Seam exception handling</fo:marker><fo:block color="#a70000" font-size="14pt">5.3.2. Enabling Seam exception handling</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.m!
 inimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		To enable Seam's exception handling, we need to make sure we have the master servlet filter declared in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">web.xml</fo:inline>:
+	</fo:block><fo:block id="id3848964" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;filter&gt;
+    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;
+    &lt;filter-class&gt;org.jboss.seam.servlet.SeamFilter&lt;/filter-class&gt;
+&lt;/filter&gt;
+
+&lt;filter-mapping&gt;
+    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;
+    &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;
+&lt;/filter-mapping&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		You may also need to disable Facelets development mode in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">web.xml</fo:inline> and Seam debug mode in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">components.xml</fo:inline> if you want your exception handlers to fire.
+	</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Managing_exceptions-Using_annotations_for_exception_handling"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Using annotations for exception handling</fo:marker><fo:block color="#a70000" font-size="14pt">5.3.3. Using annotations for exception handling</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Ex!
 tensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The following exception results in a HTTP 404 error whenever it propagates out of the Seam component layer. It does not roll back the current transaction immediately when thrown, but the transaction will be rolled back if it the exception is not caught by another Seam component.
+	</fo:block><fo:block id="id3451240" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@HttpError(errorCode=404)
+public class ApplicationException extends Exception { ... }
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		This exception results in a browser redirect whenever it propagates out of the Seam component layer. It also ends the current conversation. It causes an immediate rollback of the current transaction.
+	</fo:block><fo:block id="id3451251" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Redirect(viewId="/failure.xhtml", end=true)
+ at ApplicationException(rollback=true)
+public class UnrecoverableApplicationException extends RuntimeException { ... }
+</fo:block><fo:block id="id3451258" color="white" background-color="#d08e13" space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1em" padding-bottom="12pt" padding-top="12pt" margin-left="0pc"><fo:list-block provisional-distance-between-starts="36pt + 18pt" provisional-label-separation="18pt"><fo:list-item><fo:list-item-label end-indent="label-end()"><fo:block><fo:external-graphic width="auto" height="auto" content-width="36pt" src="url(Common_Content/images/important.svg)"/></fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block font-size="13pt" color="white" font-weight="bold" hyphenate="true" keep-with-next.within-column="always">Important</fo:block><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-befo!
 re.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Redirect</fo:inline> does not work for exceptions which occur during the render phase of the JSF lifecycle.
+		</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		This exception results in a redirect, along with a message to the user, when it propagates out of the Seam component layer. It also immediately rolls back the current transaction.
+	</fo:block><fo:block id="id3451277" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Redirect(viewId="/error.xhtml", message="Unexpected error")
+public class SystemException extends RuntimeException { ... }
+</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Managing_exceptions-Using_XML_for_exception_handling"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Using XML for exception handling</fo:marker><fo:block color="#a70000" font-size="14pt">5.3.4. Using XML for exception handling</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.mi!
 nimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Since we cannot add annotations to all the exception classes we are interested in, Seam also lets us specify this functionality in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">pages.xml</fo:inline>.
+	</fo:block><fo:block id="id3935803" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;pages&gt;
+   
+   &lt;exception class="javax.persistence.EntityNotFoundException"&gt;
+      &lt;http-error error-code="404"/&gt;
+   &lt;/exception&gt;
+   
+   &lt;exception class="javax.persistence.PersistenceException"&gt;
+      &lt;end-conversation/&gt;
+      &lt;redirect view-id="/error.xhtml"&gt;
+          &lt;message&gt;Database access failed&lt;/message&gt;
+      &lt;/redirect&gt;
+   &lt;/exception&gt;
+   
+   &lt;exception&gt;
+      &lt;end-conversation/&gt;
+      &lt;redirect view-id="/error.xhtml"&gt;
+          &lt;message&gt;Unexpected failure&lt;/message&gt;
+      &lt;/redirect&gt;
+   &lt;/exception&gt;
+   
+&lt;/pages&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The last <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;exception&gt;</fo:inline> declaration does not specify a class, and is a catch-all for any exception for which handling is not otherwise specified via annotations or in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">pages.xml</fo:inline>.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		You can also access the handled exception instance through EL, Seam places it in the conversation context, for example, to access the message of the exception:
+	</fo:block><fo:block id="id3934969" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">...
+throw new AuthorizationException("You are not allowed to do this!");
+
+&lt;pages&gt;
+
+    &lt;exception class="org.jboss.seam.security.AuthorizationException"&gt;
+        &lt;end-conversation/&gt;
+        &lt;redirect view-id="/error.xhtml"&gt;
+            &lt;message severity="WARN"&gt;#{handledException.message}&lt;/message&gt;
+        &lt;/redirect&gt;
+    &lt;/exception&gt;
+
+&lt;/pages&gt;
+</fo:block></fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="body" language="en" format="1" initial-page-number="auto-odd" force-page-count="end-on-even" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-c!
 ell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always" font-weight="bold">Chapter 6.</fo:inline></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-wid!
 th="proportional-column-width(1)"/><fo:table-body><fo:table-ro!
 w block-
progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always"><fo:retrieve-marker retrieve-class-name="section.head.marker" retrieve-position="first-including-carryover" retrieve-boundary="page-sequence"/></fo:inline></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-wi!
 dth="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always" font-weight="bold">Chapter 6. Conversations and workspace management</fo:inline></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table ta!
 ble-layout="fixed" width="100%" border-bottom-width="0.5pt" bo!
 rder-bot
tom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-footnote-separator"><fo:block><fo:leader color="black" leader-pattern="rule" leader-length="1in"/></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block !
 font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:stat!
 ic-content><fo:static-content flow-name="xsl-region-after-odd"!
 ><fo:blo
ck font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:st!
 atic-content><fo:static-content flow-name="xsl-region-after-even"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></!
 fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:b!
 lock></f
o:static-content><fo:static-content flow-name="xsl-region-after-blank"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:bloc!
 k></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:flow flow-name="xsl-region-body" start-indent="0pt" end-indent="0pt"><fo:block id="Seam_Reference_Guide-Conversations_and_workspace_management"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats"><fo:block margin-left="0pc"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" color="#a70000" background-color="white" font-size="24pt" font-weight="bold" text-align="left" padding-left="1em" padding-right="1em">Conversations and workspace management</fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		It is time to understand Seam's conversation model in more detail.
+	</fo:block><fo:block id="Seam_Reference_Guide-Conversations_and_workspace_management-Seams_conversation_model"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Seam's conversation model</fo:marker><fo:block color="#a70000" font-size="16pt">6.1. Seam's conversation model</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" s!
 pace-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The examples we have seen so far make use of a very simple conversation model that follows these rules:
+		</fo:block><fo:list-block id="id3327039" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3740769" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+					There is always a conversation context active during the apply request values, process validations, update model values, invoke application and render response phases of the JSF request lifecycle.
+				</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2668908" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+					At the end of the restore view phase of the JSF request lifecycle, Seam attempts to restore any previous long-running conversation context. If none exists, Seam creates a new temporary conversation context.
+				</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id4178795" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+					When an <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Begin</fo:inline> method is encountered, the temporary conversation context is promoted to a long running conversation.
+				</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3911923" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+					When an <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@End</fo:inline> method is encountered, any long-running conversation context is demoted to a temporary conversation.
+				</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3910644" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+					At the end of the render response phase of the JSF request lifecycle, Seam stores the contents of a long running conversation context or destroys the contents of a temporary conversation context.
+				</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3891671" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+					Any faces request (a JSF postback) will propagate the conversation context. By default, non-faces requests (GET requests, for example) do not propagate the conversation context, but see below for more information on this.
+				</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3449783" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+					If the JSF request lifecycle is foreshortened by a redirect, Seam transparently stores and restores the current conversation context—unless the conversation was already ended via <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@End(beforeRedirect=true)</fo:inline>.
+				</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Seam transparently propagates the conversation context across JSF postbacks and redirects. If you do not do anything special, a <fo:inline font-style="italic">non-faces request</fo:inline> (a GET request for example) will not propagate the conversation context and will be processed in a new temporary conversation. This is usually - but not always - the desired behavior.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			If you want to propagate a Seam conversation across a non-faces request, you need to explicitly code the Seam <fo:inline font-style="italic">conversation id</fo:inline> as a request parameter:
+		</fo:block><fo:block id="id3713480" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;a href="main.jsf?conversationId=#{conversation.id}"&gt;Continue&lt;/a&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Or, the more JSF-ish:
+		</fo:block><fo:block id="id3324600" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;h:outputLink value="main.jsf"&gt;
+    &lt;f:param name="conversationId" value="#{conversation.id}"/&gt;
+    &lt;h:outputText value="Continue"/&gt;
+&lt;/h:outputLink&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			If you use the Seam tag library, this is equivalent:
+		</fo:block><fo:block id="id3887811" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;h:outputLink value="main.jsf"&gt;
+    &lt;s:conversationId/&gt;
+    &lt;h:outputText value="Continue"/&gt;
+&lt;/h:outputLink&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			If you wish to disable propagation of the conversation context for a postback, a similar trick is used:
+		</fo:block><fo:block id="id3608606" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;h:commandLink action="main" value="Exit"&gt;
+    &lt;f:param name="conversationPropagation" value="none"/&gt;
+&lt;/h:commandLink&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			If you use the Seam tag library, this is equivalent:
+		</fo:block><fo:block id="id2769177" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;h:commandLink action="main" value="Exit"&gt;
+    &lt;s:conversationPropagation type="none"/&gt;
+&lt;/h:commandLink&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Note that disabling conversation context propagation is absolutely not the same thing as ending the conversation.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">conversationPropagation</fo:inline> request parameter, or the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;s:conversationPropagation&gt;</fo:inline> tag may even be used to begin and end conversation, or begin a nested conversation.
+		</fo:block><fo:block id="id3608600" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;h:commandLink action="main" value="Exit"&gt;
+    &lt;s:conversationPropagation type="end"/&gt;
+&lt;/h:commandLink&gt;
+</fo:block><fo:block id="id2640455" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;h:commandLink action="main" value="Select Child"&gt;
+    &lt;s:conversationPropagation type="nested"/&gt;
+&lt;/h:commandLink&gt;
+</fo:block><fo:block id="id3656724" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;h:commandLink action="main" value="Select Hotel"&gt;
+    &lt;s:conversationPropagation type="begin"/&gt;
+&lt;/h:commandLink&gt;
+</fo:block><fo:block id="id3507320" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;h:commandLink action="main" value="Select Hotel"&gt;
+    &lt;s:conversationPropagation type="join"/&gt;
+&lt;/h:commandLink&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			This conversation model makes it easy to build applications which behave correctly with respect to multi-window operation. For many applications, this is all that is needed. Some complex applications have either or both of the following additional requirements:
+		</fo:block><fo:list-block id="id3608805" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3666279" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+					A conversation spans many smaller units of user interaction, which execute serially or even concurrently. The smaller <fo:inline font-style="italic">nested conversations</fo:inline> have their own isolated set of conversation state, and also have access to the state of the outer conversation.
+				</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3904621" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+					The user is able to switch between many conversations within the same browser window. This feature is called <fo:inline font-style="italic">workspace management</fo:inline>.
+				</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block id="Seam_Reference_Guide-Conversations_and_workspace_management-Nested_conversations"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Nested conversations</fo:marker><fo:block color="#a70000" font-size="16pt">6.2. Nested conversations</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://!
 www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			A nested conversation is created by invoking a method marked <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Begin(nested=true)</fo:inline> inside the scope of an existing conversation. A nested conversation has its own conversation context, and also has read-only access to the context of the outer conversation. (It can read the outer conversation's context variables, but not write to them.) When an <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@End</fo:inline> is subsequently encountered, the nested conversation will be destroyed, and the outer conversation will resume, by <fo:inline font-style="italic">popping</fo:inline> the conversation stack. Conversations may be nested to any arbitrary depth.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Certain user activity (workspace management, or the back button) can cause the outer conversation to be resumed before the inner conversation is ended. In this case it is possible to have multiple concurrent nested conversations belonging to the same outer conversation. If the outer conversation ends before a nested conversation ends, Seam destroys all nested conversation contexts along with the outer context.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			A conversation may be thought of as a <fo:inline font-style="italic">continuable state</fo:inline>. Nested conversations allow the application to capture a consistent continuable state at various points in a user interaction, thus insuring truly correct behavior in the face of backbuttoning and workspace management.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Usually, if a component exists in a parent conversation of the current nested conversation, the nested conversation will use the same instance. Occasionally, it is useful to have a different instance in each nested conversation, so that the component instance that exists in the parent conversation is invisible to its child conversations. You can achieve this behavior by annotating the component <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@PerNestedConversation</fo:inline>.
+		</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Conversations_and_workspace_management-Starting_conversations_with_GET_requests"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Starting conversations with GET requests</fo:marker><fo:block color="#a70000" font-size="16pt">6.3. Starting conversations with GET requests</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.!
 renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			JSF does not define any kind of action listener that is triggered when a page is accessed via a non-faces request (for example, a HTTP GET request). This can occur if the user bookmarks the page, or if we navigate to the page via an <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;h:outputLink&gt;</fo:inline>.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Sometimes we want to begin a conversation immediately the page is accessed. Since there is no JSF action method, we can't solve the problem in the usual way, by annotating the action with <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Begin</fo:inline>.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			A further problem arises if the page needs some state to be fetched into a context variable. We have already seen two ways to solve this problem. If that state is held in a Seam component, we can fetch the state in a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Create</fo:inline> method. If not, we can define a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Factory</fo:inline> method for the context variable.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			If none of these options works for you, Seam lets you define a <fo:inline font-style="italic">page action</fo:inline> in the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">pages.xml</fo:inline> file.
+		</fo:block><fo:block id="id3918522" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;pages&gt;
+    &lt;page view-id="/messageList.jsp" action="#{messageManager.list}"/&gt;
+    ...
+&lt;/pages&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			This action method is called at the beginning of the render response phase, any time the page is about to be rendered. If a page action returns a non-null outcome, Seam will process any appropriate JSF and Seam navigation rules, possibly resulting in a completely different page being rendered.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			If <fo:inline font-style="italic">all</fo:inline> you want to do before rendering the page is begin a conversation, you could use a built-in action method that does just that:
+		</fo:block><fo:block id="id3913492" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;pages&gt;
+    &lt;page view-id="/messageList.jsp" action="#{conversation.begin}"/&gt;
+    ...
+&lt;/pages&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Note that you can also call this built-in action from a JSF control, and, similarly, you can use <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">#{conversation.end}</fo:inline> to end conversations.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			If you want more control, to join existing conversations or begin a nested conversion, to begin a pageflow or an atomic conversation, you should use the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;begin-conversation&gt;</fo:inline> element.
+		</fo:block><fo:block id="id3807574" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;pages&gt;
+    &lt;page view-id="/messageList.jsp"&gt;
+       &lt;begin-conversation nested="true" pageflow="AddItem"/&gt;
+    &lt;page&gt;
+    ...
+&lt;/pages&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			There is also an <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;end-conversation&gt;</fo:inline> element.
+		</fo:block><fo:block id="id3873107" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;pages&gt;
+    &lt;page view-id="/home.jsp"&gt;
+       &lt;end-conversation/&gt;
+    &lt;page&gt;
+    ...
+&lt;/pages&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			To solve the first problem, we now have five options:
+		</fo:block><fo:list-block id="id3841812" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3890289" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+					Annotate the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Create</fo:inline> method with <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Begin</fo:inline>
+				</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2821081" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+					Annotate the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Factory</fo:inline> method with <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Begin</fo:inline>
+				</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3326795" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+					Annotate the Seam page action method with <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Begin</fo:inline>
+				</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2755476" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+					Use <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;begin-conversation&gt;</fo:inline> in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">pages.xml</fo:inline>.
+				</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id4192531" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+					Use <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">#{conversation.begin}</fo:inline> as the Seam page action method
+				</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block id="Seam_Reference_Guide-Conversations_and_workspace_management-Using_slink_and_sbutton"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Using <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;s:link&gt;</fo:inline> and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;s:button&gt;</fo:inline></fo:marker><fo:block color="#a7000!
 0" font-size="16pt">6.4. Using <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;s:link&gt;</fo:inline> and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;s:button&gt;</fo:inline></fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			JSF command links always perform a form submission via JavaScript, which breaks the web browser's "open in new window" or "open in new tab" feature. In plain JSF, you need to use an <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;h:outputLink&gt;</fo:inline> if you need this functionality. But there are two major limitations to <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;h:outputLink&gt;</fo:inline>.
+		</fo:block><fo:list-block id="id3640310" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3577659" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+					JSF provides no way to attach an action listener to an <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;h:outputLink&gt;</fo:inline>.
+				</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id4166156" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+					JSF does not propagate the selected row of a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">DataModel</fo:inline> since there is no actual form submission.
+				</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Seam provides the notion of a <fo:inline font-style="italic">page action</fo:inline> to help solve the first problem, but this does nothing to help us with the second problem. We <fo:inline font-style="italic">could</fo:inline> work around this by using the RESTful approach of passing a request parameter and requerying for the selected object on the server side. In some cases—such as the Seam blog example application—this is indeed the best approach. The RESTful style supports bookmarking, since it does not require server-side state. In other cases, where we don't care about bookmarks, the use of <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@DataModel</fo:inline> and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@DataModelSelection</fo:inline> is just so convenient and transparent!
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			To fill in this missing functionality, and to make conversation propagation even simpler to manage, Seam provides the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;s:link&gt;</fo:inline> JSF tag.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The link may specify just the JSF view id:
+		</fo:block><fo:block id="id3326810" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;s:link view=“/login.xhtml” value=“Login”/&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Or, it may specify an action method (in which case the action outcome determines the page that results):
+		</fo:block><fo:block id="id3800393" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;s:link action=“#{login.logout}” value=“Logout”/&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			If you specify <fo:inline font-style="italic">both</fo:inline> a JSF view id and an action method, the 'view' will be used <fo:inline font-style="italic">unless</fo:inline> the action method returns a non-null outcome:
+		</fo:block><fo:block id="id3889203" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;s:link view="/loggedOut.xhtml"  action=“#{login.logout}” value=“Logout”/&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The link automatically propagates the selected row of a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">DataModel</fo:inline> using inside <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;h:dataTable&gt;</fo:inline>:
+		</fo:block><fo:block id="id3756465" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;s:link view=“/hotel.xhtml” action=“#{hotelSearch.selectHotel}” value=“#{hotel.name}”/&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			You can leave the scope of an existing conversation:
+		</fo:block><fo:block id="id3904709" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;s:link view=“/main.xhtml” propagation=“none”/&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			You can begin, end, or nest conversations:
+		</fo:block><fo:block id="id3307698" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;s:link action=“#{issueEditor.viewComment}” propagation=“nest”/&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			If the link begins a conversation, you can even specify a pageflow to be used:
+		</fo:block><fo:block id="id3911011" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;s:link action=“#{documentEditor.getDocument}” propagation=“begin” 
+        pageflow=“EditDocument”/&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">taskInstance</fo:inline> attribute if for use in jBPM task lists:
+		</fo:block><fo:block id="id2849110" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;s:link action=“#{documentApproval.approveOrReject}” taskInstance=“#{task}”/&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			(See the DVD Store demo application for examples of this.)
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Finally, if you need the <fo:inline font-style="italic">link</fo:inline> to be rendered as a button, use <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;s:button&gt;</fo:inline>:
+		</fo:block><fo:block id="id3887826" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;s:button action=“#{login.logout}” value=“Logout”/&gt;
+</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Conversations_and_workspace_management-Success_messages"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Success messages</fo:marker><fo:block color="#a70000" font-size="16pt">6.5. Success messages</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.opti!
 mum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			It is quite common to display a message to the user indicating success or failure of an action. It is convenient to use a JSF <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">FacesMessage</fo:inline> for this. Unfortunately, a successful action often requires a browser redirect, and JSF does not propagate faces messages across redirects. This makes it quite difficult to display success messages in plain JSF.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The built in conversation-scoped Seam component named <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">facesMessages</fo:inline> solves this problem. (You must have the Seam redirect filter installed.)
+		</fo:block><fo:block id="id4179570" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Name("editDocumentAction")
+ at Stateless
+public class EditDocumentBean implements EditDocument {
+    @In EntityManager em;
+    @In Document document;
+    @In FacesMessages facesMessages;
+    
+    public String update() {
+        em.merge(document);
+        facesMessages.add("Document updated");
+    }
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Any message added to <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">facesMessages</fo:inline> is used in the very next render response phase for the current conversation. This even works when there is no long-running conversation since Seam preserves even temporary conversation contexts across redirects.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			You can even include JSF EL expressions in a faces message summary:
+		</fo:block><fo:block id="id3324307" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">facesMessages.add("Document #{document.title} was updated");
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			You may display the messages in the usual way, for example:
+		</fo:block><fo:block id="id3939392" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;h:messages globalOnly="true"/&gt;
+</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Conversations_and_workspace_management-Using_an_explicit_conversation_id"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Using an <fo:inline font-style="italic">explicit</fo:inline> conversation ID</fo:marker><fo:block color="#a70000" font-size="16pt">6.6. Using an <fo:inline font-style="italic">explicit</fo:inline> conversation ID</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="!
 http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Ordinarily, Seam generates a meaningless unique ID for each conversation in each session. You can customize the id value when you begin the conversation.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			This feature can be used to customize the conversation id generation algorithm like so:
+		</fo:block><fo:block id="id3324311" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Begin(id="#{myConversationIdGenerator.nextId}") 
+public void editHotel() { ... }
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Or it can be used to assign a meaningful conversation id:
+		</fo:block><fo:block id="id3370398" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Begin(id="hotel#{hotel.id}") 
+public String editHotel() { ... }
+</fo:block><fo:block id="id4178232" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Begin(id="hotel#{hotelsDataModel.rowData.id}") 
+public String selectHotel() { ... }
+</fo:block><fo:block id="id3881186" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Begin(id="entry#{params['blogId']}")
+public String viewBlogEntry() { ... }
+</fo:block><fo:block id="id3561197" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@BeginTask(id="task#{taskInstance.id}") 
+public String approveDocument() { ... }
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Clearly, these example result in the same conversation id every time a particular hotel, blog or task is selected. So what happens if a conversation with the same conversation id already exists when the new conversation begins? Well, Seam detects the existing conversation and redirects to that conversation without running the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Begin</fo:inline> method again. This feature helps control the number of workspaces that are created when using workspace management.
+		</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Conversations_and_workspace_management-Workspace_management"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Workspace management</fo:marker><fo:block color="#a70000" font-size="16pt">6.7. Workspace management</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" spa!
 ce-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Workspace management is the ability to <fo:inline font-style="italic">switch</fo:inline> conversations in a single window. Seam makes workspace management completely transparent at the level of the Java code. To enable workspace management, all you need to do is:
+		</fo:block><fo:list-block id="id2651091" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3839257" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+					Provide <fo:inline font-style="italic">description</fo:inline> text for each view ID (when using JSF or Seam navigation rules) or page node (when using jPDL pageflows). This description text is displayed to the user by the workspace switchers.
+				</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3624606" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+					Include one or more of the standard workspace switcher JSP or facelets fragments in your pages. The standard fragments support workspace management via a drop down menu, a list of conversations, or breadcrumbs.
+				</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block id="Seam_Reference_Guide-Workspace_management-Workspace_management_and_JSF_navigation"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Workspace management and JSF navigation</fo:marker><fo:block color="#a70000" font-size="14pt">6.7.1. Workspace management and JSF navigation</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/t!
 ransitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				When you use JSF or Seam navigation rules, Seam switches to a conversation by restoring the current <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">view-id</fo:inline> for that conversation. The descriptive text for the workspace is defined in a file called <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">pages.xml</fo:inline> that Seam expects to find in the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">WEB-INF</fo:inline> directory, right next to <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">faces-config.xml</fo:inline>:
+			</fo:block><fo:block id="id2651046" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;pages&gt;
+    &lt;page view-id="/main.xhtml"&gt;Search hotels: #{hotelBooking.searchString}&lt;/page&gt;
+    &lt;page view-id="/hotel.xhtml"&gt;View hotel: #{hotel.name}&lt;/page&gt;
+    &lt;page view-id="/book.xhtml"&gt;Book hotel: #{hotel.name}&lt;/page&gt;
+    &lt;page view-id="/confirm.xhtml"&gt;Confirm: #{booking.description}&lt;/page&gt;
+&lt;/pages&gt;
+</fo:block><fo:block id="id3734866" color="white" background-color="#8e9f00" space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1em" padding-bottom="12pt" padding-top="12pt" margin-left="0pc"><fo:list-block provisional-distance-between-starts="36pt + 18pt" provisional-label-separation="18pt"><fo:list-item><fo:list-item-label end-indent="label-end()"><fo:block><fo:external-graphic width="auto" height="auto" content-width="36pt" src="url(Common_Content/images/note.svg)"/></fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block font-size="13pt" color="white" font-weight="bold" hyphenate="true" keep-with-next.within-column="always">Note</fo:block><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum!
 ="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+					Note that if this file is missing, the Seam application will continue to work perfectly, the only missing functionality will be the ability to switch workspaces.
+				</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Workspace_management-Workspace_management_and_jPDL_pageflow"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Workspace management and jPDL pageflow</fo:marker><fo:block color="#a70000" font-size="14pt">6.7.2. Workspace management and jPDL pageflow</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www!
 .w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				When you use a jPDL pageflow definition, Seam switches to a conversation by restoring the current jBPM process state. This is a more flexible model since it allows the same <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">view-id</fo:inline> to have different descriptions depending upon the current <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;page&gt;</fo:inline> node. The description text is defined by the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;page&gt;</fo:inline> node:
+			</fo:block><fo:block id="id3914108" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;pageflow-definition name="shopping"&gt;
+
+   &lt;start-state name="start"&gt;
+      &lt;transition to="browse"/&gt;
+   &lt;/start-state&gt;
+   
+   &lt;page name="browse" view-id="/browse.xhtml"&gt;
+      &lt;description&gt;DVD Search: #{search.searchPattern}&lt;/description&gt;
+      &lt;transition to="browse"/&gt;
+      &lt;transition name="checkout" to="checkout"/&gt;
+   &lt;/page&gt;
+   
+   &lt;page name="checkout" view-id="/checkout.xhtml"&gt;
+      &lt;description&gt;Purchase: $#{cart.total}&lt;/description&gt;
+      &lt;transition to="checkout"/&gt;
+      &lt;transition name="complete" to="complete"/&gt;
+   &lt;/page&gt;
+   
+   &lt;page name="complete" view-id="/complete.xhtml"&gt;
+      &lt;end-conversation /&gt;
+   &lt;/page&gt;
+   
+&lt;/pageflow-definition&gt;
+</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Workspace_management-The_conversation_switcher"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">The conversation switcher</fo:marker><fo:block color="#a70000" font-size="14pt">6.7.3. The conversation switcher</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-!
 before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Include the following fragment in your JSP or facelets page to get a drop-down menu that lets you switch to any current conversation, or to any other page of the application:
+			</fo:block><fo:block id="id2755629" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;h:selectOneMenu value="#{switcher.conversationIdOrOutcome}"&gt;
+    &lt;f:selectItem itemLabel="Find Issues" itemValue="findIssue"/&gt;
+    &lt;f:selectItem itemLabel="Create Issue" itemValue="editIssue"/&gt;
+    &lt;f:selectItems value="#{switcher.selectItems}"/&gt;
+&lt;/h:selectOneMenu&gt;
+&lt;h:commandButton action="#{switcher.select}" value="Switch"/&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				In this example, we have a menu that includes an item for each conversation, together with two additional items that let the user begin a new conversation.
+			</fo:block><fo:block id="id3891690" text-align="center"><fo:external-graphic xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" src="url(images/switcher.png)" width="auto" height="auto" content-width="auto" content-height="auto" content-type="content-type:image/png" text-align="center"/></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Workspace_management-The_conversation_list"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.h!
 ead.marker">The conversation list</fo:marker><fo:block color="#a70000" font-size="14pt">6.7.4. The conversation list</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				The conversation list is very similar to the conversation switcher, except that it is displayed as a table:
+			</fo:block><fo:block id="id3533235" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;h:dataTable value="#{conversationList}" var="entry"
+        rendered="#{not empty conversationList}"&gt;
+    &lt;h:column&gt;
+        &lt;f:facet name="header"&gt;Workspace&lt;/f:facet&gt;
+        &lt;h:commandLink action="#{entry.select}" value="#{entry.description}"/&gt;
+        &lt;h:outputText value="[current]" rendered="#{entry.current}"/&gt;
+    &lt;/h:column&gt;
+    &lt;h:column&gt;
+        &lt;f:facet name="header"&gt;Activity&lt;/f:facet&gt;
+        &lt;h:outputText value="#{entry.startDatetime}"&gt;
+            &lt;f:convertDateTime type="time" pattern="hh:mm a"/&gt;
+        &lt;/h:outputText&gt;
+        &lt;h:outputText value=" - "/&gt;
+        &lt;h:outputText value="#{entry.lastDatetime}"&gt;
+            &lt;f:convertDateTime type="time" pattern="hh:mm a"/&gt;
+        &lt;/h:outputText&gt;
+    &lt;/h:column&gt;
+    &lt;h:column&gt;
+        &lt;f:facet name="header"&gt;Action&lt;/f:facet&gt;
+        &lt;h:commandButton action="#{entry.select}" value="#{msg.Switch}"/&gt;
+        &lt;h:commandButton action="#{entry.destroy}" value="#{msg.Destroy}"/&gt;
+    &lt;/h:column&gt;
+&lt;/h:dataTable&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				We imagine that you will want to customize this for your own application.
+			</fo:block><fo:block id="id3479772" text-align="center"><fo:external-graphic xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" src="url(images/list.png)" width="444px" height="auto" content-width="scale-to-fit" content-height="scale-to-fit" content-type="content-type:image/png" text-align="center"/></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				The conversation list is nice, but it takes up a lot of space on the page, so you probably do not want to put it on <fo:inline font-style="italic">every</fo:inline> page.
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Notice that the conversation list lets the user destroy workspaces.
+			</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Workspace_management-Breadcrumbs"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Breadcrumbs</fo:marker><fo:block color="#a70000" font-size="14pt">6.7.5. Breadcrumbs</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.max!
 imum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Breadcrumbs are useful in applications which use a nested conversation model. The breadcrumbs are a list of links to conversations in the current conversation stack:
+			</fo:block><fo:block id="id3919779" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;t:dataList value="#{conversationStack}" var="entry"&gt;
+    &lt;h:outputText value=" | "/&gt; 
+    &lt;h:commandLink value="#{entry.description}" action="#{entry.select}"/&gt;
+&lt;/t:dataList&gt;
+</fo:block><fo:block id="id3923694" text-align="center"><fo:external-graphic xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" src="url(images/breadcrumbs.png)" width="444px" height="auto" content-width="scale-to-fit" content-height="scale-to-fit" content-type="content-type:image/png" text-align="center"/></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Please refer to the Seam Issue Tracker demo to see all this functionality in action!
+			</fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Conversations_and_workspace_management-Conversational_components_and_JSF_component_bindings"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Conversational components and JSF component bindings</fo:marker><fo:block color="#a70000" font-size="16pt">6.8. Conversational components and JSF component bindings</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.o!
 rg/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Conversational components have one minor limitation: they cannot be used to hold bindings to JSF components. (We generally prefer not to use this feature of JSF unless absolutely necessary, since it creates a hard dependency from application logic to the view.) On a postback request, component bindings are updated during the Restore View phase, before the Seam conversation context has been restored.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			To work around this use an event scoped component to store the component bindings and inject it into the conversation scoped component that requires it.
+		</fo:block><fo:block id="id2681121" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Name("grid")
+ at Scope(ScopeType.EVENT)
+public class Grid
+{
+    private HtmlPanelGrid htmlPanelGrid;
+
+    // getters and setters
+    ...
+}
+</fo:block><fo:block id="id4178552" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Name("gridEditor")
+ at Scope(ScopeType.CONVERSATION)
+public class GridEditor
+{
+    @In(required=false)
+    private Grid grid;
+    
+    ...
+}
+</fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="body" language="en" format="1" initial-page-number="auto-odd" force-page-count="end-on-even" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-al!
 ign="start" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always" font-weight="bold">Chapter 7.</fo:inline></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proport!
 ional-column-width(1)"/><fo:table-body><fo:table-row block-pro!
 gression
-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always"><fo:retrieve-marker retrieve-class-name="section.head.marker" retrieve-position="first-including-carryover" retrieve-boundary="page-sequence"/></fo:inline></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="propor!
 tional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always" font-weight="bold">Chapter 7. Pageflows and business processes</fo:inline></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed!
 " width="100%" border-bottom-width="0.5pt" border-bottom-style!
 ="solid"
 border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-footnote-separator"><fo:block><fo:leader color="black" leader-pattern="rule" leader-length="1in"/></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block font-family="Libe!
 ration Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:st!
 atic-content flow-name="xsl-region-after-odd"><fo:block font-f!
 amily="L
iberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:!
 static-content flow-name="xsl-region-after-even"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></f!
 o:table-row></fo:table-body></fo:table></fo:block></fo:static-!
 content>
<fo:static-content flow-name="xsl-region-after-blank"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell!
 ></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:flow flow-name="xsl-region-body" start-indent="0pt" end-indent="0pt"><fo:block id="Seam_Reference_Guide-Pageflows_and_business_processes"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats"><fo:block margin-left="0pc"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" color="#a70000" background-color="white" font-size="24pt" font-weight="bold" text-align="left" padding-left="1em" padding-right="1em">Pageflows and business processes</fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		JBoss jBPM is a business process management engine for any Java SE or EE environment. jBPM lets you represent a business process or user interaction as a graph of nodes representing wait states, decisions, tasks, web pages, etc. The graph is defined using a simple, very readable, XML dialect called jPDL, and may be edited and visualised graphically using an eclipse plugin. jPDL is an extensible language, and is suitable for a range of problems, from defining web application page flow, to traditional workflow management, all the way up to orchestration of services in a SOA environment.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Seam applications use jBPM for two different problems:
+	</fo:block><fo:list-block id="id2848918" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id2640929" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				Defining the pageflow involved in complex user interactions. A jPDL process definition defines the page flow for a single conversation. A Seam conversation is considered to be a relatively short-running interaction with a single user.
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3922206" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				Defining the overarching business process. The business process may span multiple conversations with multiple users. Its state is persistent in the jBPM database, so it is considered long-running. Coordination of the activities of multiple users is a much more complex problem than scripting an interaction with a single user, so jBPM offers sophisticated facilities for task management and dealing with multiple concurrent paths of execution.
+			</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		<fo:inline font-style="italic">Pageflow</fo:inline>, <fo:inline font-style="italic">conversation</fo:inline> and <fo:inline font-style="italic">task</fo:inline> all refer to a single interaction with a single user and operate at different levels or granularity. A business process spans many tasks. Futhermore, the two applications of jBPM are totally orthogonal. You can use them together or independently or not at all.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		You do not have to know jDPL to use Seam. If you are perfectly happy defining pageflow using JSF or Seam navigation rules, and if your application is more data-driven that process-driven, you probably do not need jBPM. But we are finding that thinking of user interaction in terms of a well-defined graphical representation is helping us build more robust applications.
+	</fo:block><fo:block id="Seam_Reference_Guide-Pageflows_and_business_processes-Pageflow_in_Seam"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Pageflow in Seam</fo:marker><fo:block color="#a70000" font-size="16pt">7.1. Pageflow in Seam</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" spac!
 e-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			There are two ways to define pageflow in Seam:
+		</fo:block><fo:list-block id="id3807553" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3918606" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+					Using JSF or Seam navigation rules - the <fo:inline font-style="italic">stateless navigation model</fo:inline>
+				</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3643156" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+					Using jPDL - the <fo:inline font-style="italic">stateful navigation model</fo:inline>
+				</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Very simple applications will only need the stateless navigation model. Very complex applications will use both models in different places. Each model has its strengths and weaknesses!
+		</fo:block><fo:block id="Seam_Reference_Guide-Pageflow_in_Seam-The_two_navigation_models"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">The two navigation models</fo:marker><fo:block color="#a70000" font-size="14pt">7.1.1. The two navigation models</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimu!
 m="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				The stateless model defines a mapping from a set of named, logical outcomes of an event directly to the resulting page of the view. The navigation rules are entirely oblivious to any state held by the application other than what page was the source of the event. This means that your action listener methods must sometimes make decisions about the page flow, since only they have access to the current state of the application.
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Here is an example page flow definition using JSF navigation rules:
+			</fo:block><fo:block id="id3910669" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;navigation-rule&gt;
+    &lt;from-view-id&gt;/numberGuess.jsp&lt;/from-view-id&gt;
+        
+    &lt;navigation-case&gt;
+        &lt;from-outcome&gt;guess&lt;/from-outcome&gt;
+        &lt;to-view-id&gt;/numberGuess.jsp&lt;/to-view-id&gt;
+        &lt;redirect/&gt;
+    &lt;/navigation-case&gt;
+
+    &lt;navigation-case&gt;
+        &lt;from-outcome&gt;win&lt;/from-outcome&gt;
+        &lt;to-view-id&gt;/win.jsp&lt;/to-view-id&gt;
+        &lt;redirect/&gt;
+    &lt;/navigation-case&gt;
+        
+    &lt;navigation-case&gt;
+        &lt;from-outcome&gt;lose&lt;/from-outcome&gt;
+        &lt;to-view-id&gt;/lose.jsp&lt;/to-view-id&gt;
+        &lt;redirect/&gt;
+    &lt;/navigation-case&gt;
+
+&lt;/navigation-rule&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Here is the same example page flow definition using Seam navigation rules:
+			</fo:block><fo:block id="id3665838" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;page view-id="/numberGuess.jsp"&gt;
+        
+    &lt;navigation&gt;
+        &lt;rule if-outcome="guess"&gt;
+            &lt;redirect view-id="/numberGuess.jsp"/&gt;
+        &lt;/rule&gt;
+        &lt;rule if-outcome="win"&gt;
+            &lt;redirect view-id="/win.jsp"/&gt;
+        &lt;/rule&gt;
+        &lt;rule if-outcome="lose"&gt;
+            &lt;redirect view-id="/lose.jsp"/&gt;
+        &lt;/rule&gt;
+    &lt;/navigation-case&gt;
+
+&lt;/navigation-rule&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				If you find navigation rules overly verbose, you can return view ids directly from your action listener methods:
+			</fo:block><fo:block id="id3935794" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">public String guess() {
+    if (guess==randomNumber) return "/win.jsp";
+    if (++guessCount==maxGuesses) return "/lose.jsp";
+    return null;
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				This results in a redirect. You can even specify parameters to be used in the redirect:
+			</fo:block><fo:block id="id3307504" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">public String search() {
+    return "/searchResults.jsp?searchPattern=#{searchAction.searchPattern}";
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				The stateful model defines a set of transitions between a set of named, logical application states. In this model, it is possible to express the flow of any user interaction entirely in the jPDL pageflow definition, and write action listener methods that are completely unaware of the flow of the interaction.
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Here is an example page flow definition using jPDL:
+			</fo:block><fo:block id="id3807011" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;pageflow-definition name="numberGuess"&gt;
+    
+   &lt;start-page name="displayGuess" view-id="/numberGuess.jsp"&gt;
+      &lt;redirect/&gt;
+      &lt;transition name="guess" to="evaluateGuess"&gt;
+      	&lt;action expression="#{numberGuess.guess}" /&gt;
+      &lt;/transition&gt;
+   &lt;/start-page&gt;
+   
+   &lt;decision name="evaluateGuess" expression="#{numberGuess.correctGuess}"&gt;
+      &lt;transition name="true" to="win"/&gt;
+      &lt;transition name="false" to="evaluateRemainingGuesses"/&gt;
+   &lt;/decision&gt;
+   
+   &lt;decision name="evaluateRemainingGuesses" expression="#{numberGuess.lastGuess}"&gt;
+      &lt;transition name="true" to="lose"/&gt;
+      &lt;transition name="false" to="displayGuess"/&gt;
+   &lt;/decision&gt;
+   
+   &lt;page name="win" view-id="/win.jsp"&gt;
+      &lt;redirect/&gt;
+      &lt;end-conversation /&gt;
+   &lt;/page&gt;
+   
+   &lt;page name="lose" view-id="/lose.jsp"&gt;
+      &lt;redirect/&gt;
+      &lt;end-conversation /&gt;
+   &lt;/page&gt;
+   
+&lt;/pageflow-definition&gt;
+</fo:block><fo:block id="id3058828" text-align="center"><fo:external-graphic xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" src="url(images/plugin-jbpm-numguess.png)" width="444px" height="auto" content-width="scale-to-fit" content-height="scale-to-fit" content-type="content-type:image/png" text-align="center"/></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				There are two things we notice immediately here:
+			</fo:block><fo:list-block id="id2757178" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id2715893" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						The JSF/Seam navigation rules are <fo:inline font-style="italic">much</fo:inline> simpler. (However, this obscures the fact that the underlying Java code is more complex.)
+					</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3935845" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						The jPDL makes the user interaction immediately understandable, without us needing to even look at the JSP or Java code.
+					</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				In addition, the stateful model is more <fo:inline font-style="italic">constrained</fo:inline>. For each logical state (each step in the page flow), there are a constrained set of possible transitions to other states. The stateless model is an <fo:inline font-style="italic">ad hoc</fo:inline> model which is suitable to relatively unconstrained, freeform navigation where the user decides where he/she wants to go next, not the application.
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				The stateful/stateless navigation distinction is quite similar to the traditional view of modal/modeless interaction. Now, Seam applications are not usually modal in the simple sense of the word - indeed, avoiding application modal behavior is one of the main reasons for having conversations! However, Seam applications can be, and often are, modal at the level of a particular conversation. It is well-known that modal behavior is something to avoid as much as possible; it is very difficult to predict the order in which your users are going to want to do things! However, there is no doubt that the stateful model has its place.
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				The biggest contrast between the two models is the back-button behavior.
+			</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Pageflow_in_Seam-Seam_and_the_back_button"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Seam and the back button</fo:marker><fo:block color="#a70000" font-size="14pt">7.1.2. Seam and the back button</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-befo!
 re.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				When JSF or Seam navigation rules are used, Seam lets the user freely navigate via the back, forward and refresh buttons. It is the responsibility of the application to ensure that conversational state remains internally consistent when this occurs. Experience with the combination of web application frameworks like Struts or WebWork - that do not support a conversational model - and stateless component models like EJB stateless session beans or the Spring framework has taught many developers that this is close to impossible to do! However, our experience is that in the context of Seam, where there is a well-defined conversational model, backed by stateful session beans, it is actually quite straightforward. Usually it is as simple as combining the use of <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">no-conversation-view-id</fo:inline> with null checks at the beginning of action listener methods. We consider support for freeform navigation to be a!
 lmost always desirable.
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				In this case, the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">no-conversation-view-id</fo:inline> declaration goes in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">pages.xml</fo:inline>. It tells Seam to redirect to a different page if a request originates from a page rendered during a conversation, and that conversation no longer exists:
+			</fo:block><fo:block id="id3403873" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;page view-id="/checkout.xhtml" 
+        no-conversation-view-id="/main.xhtml"/&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				On the other hand, in the stateful model, backbuttoning is interpreted as an undefined transition back to a previous state. Since the stateful model enforces a defined set of transitions from the current state, back buttoning is be default disallowed in the stateful model. Seam transparently detects the use of the back button, and blocks any attempt to perform an action from a previous, <fo:inline font-style="italic">stale</fo:inline> page, and simply redirects the user to the <fo:inline font-style="italic">current</fo:inline> page (and displays a faces message). Whether you consider this a feature or a limitation of the stateful model depends upon your point of view: as an application developer, it is a feature; as a user, it might be frustrating! You can enable backbutton navigation from a particular page node by setting <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">back="enabled"</fo:inline>.
+			</fo:block><fo:block id="id3799424" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;page name="checkout" 
+        view-id="/checkout.xhtml" 
+        back="enabled"&gt;
+    &lt;redirect/&gt;
+    &lt;transition to="checkout"/&gt;
+    &lt;transition name="complete" to="complete"/&gt;
+&lt;/page&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				This allows backbuttoning <fo:inline font-style="italic">from</fo:inline> the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">checkout</fo:inline> state to <fo:inline font-style="italic">any previous state!</fo:inline>
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Of course, we still need to define what happens if a request originates from a page rendered during a pageflow, and the conversation with the pageflow no longer exists. In this case, the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">no-conversation-view-id</fo:inline> declaration goes into the pageflow definition:
+			</fo:block><fo:block id="id3052997" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;page name="checkout" 
+        view-id="/checkout.xhtml" 
+        back="enabled" 
+        no-conversation-view-id="/main.xhtml"&gt;
+    &lt;redirect/&gt;
+    &lt;transition to="checkout"/&gt;
+    &lt;transition name="complete" to="complete"/&gt;
+&lt;/page&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				In practice, both navigation models have their place, and you will quickly learn to recognize when to prefer one model over the other.
+			</fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Pageflows_and_business_processes-Using_jPDL_pageflows"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Using jPDL pageflows</fo:marker><fo:block color="#a70000" font-size="16pt">7.2. Using jPDL pageflows</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Using_jPDL_pageflows-Installing_pageflows"><fo:block><fo:block><fo:block margin-left="0pc" font-fam!
 ily="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Installing pageflows</fo:marker><fo:block color="#a70000" font-size="14pt">7.2.1. Installing pageflows</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				We need to install the Seam jBPM-related components, and tell them where to find our pageflow definition. We can specify this Seam configuration in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">components.xml</fo:inline>.
+			</fo:block><fo:block id="id3797134" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;core:jbpm&gt;
+    &lt;core:pageflow-definitions&gt;
+        &lt;value&gt;pageflow.jpdl.xml&lt;/value&gt;
+    &lt;/core:pageflow-definitions&gt;
+&lt;/core:jbpm&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				The first line installs jBPM, the second points to a jPDL-based pageflow definition.
+			</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Using_jPDL_pageflows-Starting_pageflows"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Starting pageflows</fo:marker><fo:block color="#a70000" font-size="14pt">7.2.2. Starting pageflows</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.!
 1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				We <fo:inline font-style="italic">start</fo:inline> a jPDL-based pageflow by specifying the name of the process definition using a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Begin</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@BeginTask</fo:inline> or <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@StartTask</fo:inline> annotation:
+			</fo:block><fo:block id="id3759555" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Begin(pageflow="numberguess")
+public void begin() { ... }
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Alternatively we can start a pageflow using pages.xml:
+			</fo:block><fo:block id="id3918434" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;page&gt;
+        &lt;begin-conversation pageflow="numberguess"/&gt;
+    &lt;/page&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				If we are beginning the pageflow during the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">RENDER_RESPONSE</fo:inline> phase—during a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Factory</fo:inline> or <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Create</fo:inline> method, for example—we consider ourselves to be already at the page being rendered, and use a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;start-page&gt;</fo:inline> node as the first node in the pageflow, as in the example above.
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				But if the pageflow is begun as the result of an action listener invocation, the outcome of the action listener determines which is the first page to be rendered. In this case, we use a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;start-state&gt;</fo:inline> as the first node in the pageflow, and declare a transition for each possible outcome:
+			</fo:block><fo:block id="id3324074" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;pageflow-definition name="viewEditDocument"&gt;
+
+    &lt;start-state name="start"&gt;
+        &lt;transition name="documentFound" to="displayDocument"/&gt;
+        &lt;transition name="documentNotFound" to="notFound"/&gt;
+    &lt;/start-state&gt;
+    
+    &lt;page name="displayDocument" view-id="/document.jsp"&gt;
+        &lt;transition name="edit" to="editDocument"/&gt;
+        &lt;transition name="done" to="main"/&gt;
+    &lt;/page&gt;
+    
+    ...
+    
+    &lt;page name="notFound" view-id="/404.jsp"&gt;
+        &lt;end-conversation/&gt;
+    &lt;/page&gt;
+    
+&lt;/pageflow-definition&gt;
+</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Using_jPDL_pageflows-Page_nodes_and_transitions"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Page nodes and transitions</fo:marker><fo:block color="#a70000" font-size="14pt">7.2.3. Page nodes and transitions</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" spa!
 ce-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Each <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;page&gt;</fo:inline> node represents a state where the system is waiting for user input:
+			</fo:block><fo:block id="id3788906" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;page name="displayGuess" view-id="/numberGuess.jsp"&gt;
+    &lt;redirect/&gt;
+    &lt;transition name="guess" to="evaluateGuess"&gt;
+        &lt;action expression="#{numberGuess.guess}" /&gt;
+    &lt;/transition&gt;
+&lt;/page&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">view-id</fo:inline> is the JSF view id. The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;redirect/&gt;</fo:inline> element has the same effect as <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;redirect/&gt;</fo:inline> in a JSF navigation rule: namely, a post-then-redirect behavior, to overcome problems with the browser's refresh button (note that Seam propagates conversation contexts over these browser redirects).
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				The transition name is the name of a JSF outcome triggered by clicking a command button or command link in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">numberGuess.jsp</fo:inline>.
+			</fo:block><fo:block id="id3576923" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;h:commandButton type="submit" value="Guess" action="guess"/&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				When the transition is triggered by clicking this button, jBPM will activate the transition action by calling the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">guess()</fo:inline> method of the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">numberGuess</fo:inline> component. Notice that the syntax used for specifying actions in the jPDL is just a familiar JSF EL expression, and that the transition action handler is just a method of a Seam component in the current Seam contexts. So we have exactly the same event model for jBPM events that we already have for JSF events. (The <fo:inline font-style="italic">One Kind of Stuff</fo:inline> principle.)
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				In the case of a null outcome (for example, a command button with no <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">action</fo:inline> defined), Seam will signal the transition with no name if one exists, or else simply redisplay the page if all transitions have names. So we could slightly simplify our example pageflow and this button:
+			</fo:block><fo:block id="id3684812" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;h:commandButton type="submit" value="Guess"/&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Would fire the following un-named transition:
+			</fo:block><fo:block id="id3725338" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;page name="displayGuess" view-id="/numberGuess.jsp"&gt;
+    &lt;redirect/&gt;
+    &lt;transition to="evaluateGuess"&gt;
+        &lt;action expression="#{numberGuess.guess}" /&gt;
+    &lt;/transition&gt;
+&lt;/page&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				It is even possible to have the button call an action method, in which case the action outcome will determine the transition to be taken:
+			</fo:block><fo:block id="id3920634" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;h:commandButton type="submit" value="Guess" action="#{numberGuess.guess}"/&gt;
+</fo:block><fo:block id="id3199332" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;page name="displayGuess" view-id="/numberGuess.jsp"&gt;
+    &lt;transition name="correctGuess" to="win"/&gt;
+    &lt;transition name="incorrectGuess" to="evaluateGuess"/&gt;
+&lt;/page&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				However, this is considered an inferior style, since it moves responsibility for controlling the flow out of the pageflow definition and back into the other components. It is much better to centralize this concern in the pageflow itself.
+			</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Using_jPDL_pageflows-Controlling_the_flow"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Controlling the flow</fo:marker><fo:block color="#a70000" font-size="14pt">7.2.4. Controlling the flow</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optim!
 um="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Usually, we do not need the more powerful features of jPDL when defining pageflows. We do need the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;decision&gt;</fo:inline> node, however:
+			</fo:block><fo:block id="id3432730" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;decision name="evaluateGuess" expression="#{numberGuess.correctGuess}"&gt;
+    &lt;transition name="true" to="win"/&gt;
+    &lt;transition name="false" to="evaluateRemainingGuesses"/&gt;
+&lt;/decision&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				A decision is made by evaluating a JSF EL expression in the Seam contexts.
+			</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Using_jPDL_pageflows-Ending_the_flow"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Ending the flow</fo:marker><fo:block color="#a70000" font-size="14pt">7.2.5. Ending the flow</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" spac!
 e-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				We end the conversation using <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;end-conversation&gt;</fo:inline> or <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@End</fo:inline>. (In fact, for readability, use of <fo:inline font-style="italic">both</fo:inline> is encouraged.)
+			</fo:block><fo:block id="id2849502" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;page name="win" view-id="/win.jsp"&gt;
+    &lt;redirect/&gt;
+    &lt;end-conversation/&gt;
+&lt;/page&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Optionally, we can end a task, specify a jBPM <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">transition</fo:inline> name. In this case, Seam will signal the end of the current task in the overarching business process.
+			</fo:block><fo:block id="id3058929" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;page name="win" view-id="/win.jsp"&gt;
+    &lt;redirect/&gt;
+    &lt;end-task transition="success"/&gt;
+&lt;/page&gt;
+</fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Pageflows_and_business_processes-Business_process_management_in_Seam"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Business process management in Seam</fo:marker><fo:block color="#a70000" font-size="16pt">7.3. Business process management in Seam</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/!
 XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			A business process is a well-defined set of tasks that must be performed by users or software systems according to well-defined rules about <fo:inline font-style="italic">who</fo:inline> can perform a task, and <fo:inline font-style="italic">when</fo:inline> it should be performed. Seam's jBPM integration makes it easy to display lists of tasks to users and let them manage their tasks. Seam also lets the application store state associated with the business process in the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">BUSINESS_PROCESS</fo:inline> context, and have that state made persistent via jBPM variables.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			A simple business process definition looks much the same as a page flow definition (<fo:inline font-style="italic">One Kind of Stuff</fo:inline>), except that instead of <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;page&gt;</fo:inline> nodes, we have <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;task-node&gt;</fo:inline> nodes. In a long-running business process, the wait states are where the system is waiting for some user to log in and perform a task.
+		</fo:block><fo:block id="id3299108" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;process-definition name="todo"&gt;
+   
+   &lt;start-state name="start"&gt;
+      &lt;transition to="todo"/&gt;
+   &lt;/start-state&gt;
+   
+   &lt;task-node name="todo"&gt;
+      &lt;task name="todo" description="#{todoList.description}"&gt;
+         &lt;assignment actor-id="#{actor.id}"/&gt;
+      &lt;/task&gt;
+      &lt;transition to="done"/&gt;
+   &lt;/task-node&gt;
+   
+   &lt;end-state name="done"/&gt;
+   
+&lt;/process-definition&gt;
+</fo:block><fo:block id="id4191813" text-align="center"><fo:external-graphic xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" src="url(images/plugin-jbpm-todo.png)" width="444px" height="auto" content-width="scale-to-fit" content-height="scale-to-fit" content-type="content-type:image/png" text-align="center"/></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			It is perfectly possible that we might have both jPDL business process definitions and jPDL pageflow definitions in the same project. If so, the relationship between the two is that a single <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;task&gt;</fo:inline> in a business process corresponds to a whole pageflow <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;pageflow-definition&gt;</fo:inline>
+		</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Pageflows_and_business_processes-Using_jPDL_business_process_definitions"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Using jPDL business process definitions</fo:marker><fo:block color="#a70000" font-size="16pt">7.4. Using jPDL business process definitions</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Installing_pro!
 cess_definitions"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Installing process definitions</fo:marker><fo:block color="#a70000" font-size="14pt">7.4.1. Installing process definitions</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em"!
  space-after.minimum="0.8em" space-after.maximum="1.2em">
+				We need to install jBPM, and tell it where to find the business process definitions:
+			</fo:block><fo:block id="id3307533" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;core:jbpm&gt;
+    &lt;core:process-definitions&gt;
+        &lt;value&gt;todo.jpdl.xml&lt;/value&gt;
+    &lt;/core:process-definitions&gt;
+&lt;/core:jbpm&gt;
+</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Initializing_actor_ids"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Initializing actor ids</fo:marker><fo:block color="#a70000" font-size="14pt">7.4.2. Initializing actor ids</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1!
 em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				We always need to know what user is currently logged in. jBPM <fo:inline font-style="italic">knows</fo:inline> users by their <fo:inline font-style="italic">actor id</fo:inline> and <fo:inline font-style="italic">group actor ids</fo:inline>. We specify the current actor ids using the built in Seam component named <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">actor</fo:inline>:
+			</fo:block><fo:block id="id3466867" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@In Actor actor;
+
+public String login() {
+    ...
+    actor.setId( user.getUserName() );
+    actor.getGroupActorIds().addAll( user.getGroupNames() );
+    ...
+}
+</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Initiating_a_business_process"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Initiating a business process</fo:marker><fo:block color="#a70000" font-size="14pt">7.4.3. Initiating a business process</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" spac!
 e-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				To initiate a business process instance, we use the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@CreateProcess</fo:inline> annotation:
+			</fo:block><fo:block id="id3890407" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@CreateProcess(definition="todo")
+public void createTodo() { ... }
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Alternatively we can initiate a business process using pages.xml:
+			</fo:block><fo:block id="id3881107" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;page&gt;
+    &lt;create-process definition="todo" /&gt;
+&lt;/page&gt;
+</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Task_assignment"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Task assignment</fo:marker><fo:block color="#a70000" font-size="14pt">7.4.4. Task assignment</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.opti!
 mum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				When a process starts, task instances are created. These must be assigned to users or user groups. We can either hardcode our actor ids, or delegate to a Seam component:
+			</fo:block><fo:block id="id3052964" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;task name="todo" description="#{todoList.description}"&gt;
+    &lt;assignment actor-id="#{actor.id}"/&gt;
+&lt;/task&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				In this case, we have simply assigned the task to the current user. We can also assign tasks to a pool:
+			</fo:block><fo:block id="id3533252" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;task name="todo" description="#{todoList.description}"&gt;
+    &lt;assignment pooled-actors="employees"/&gt;
+&lt;/task&gt;
+</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Task_lists"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Task lists</fo:marker><fo:block color="#a70000" font-size="14pt">7.4.5. Task lists</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" spa!
 ce-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Several built-in Seam components make it easy to display task lists. The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">pooledTaskInstanceList</fo:inline> is a list of pooled tasks that users may assign to themselves:
+			</fo:block><fo:block id="id3797140" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;h:dataTable value="#{pooledTaskInstanceList}" var="task"&gt;
+    &lt;h:column&gt;
+        &lt;f:facet name="header"&gt;Description&lt;/f:facet&gt;
+        &lt;h:outputText value="#{task.description}"/&gt;
+    &lt;/h:column&gt;
+    &lt;h:column&gt;
+        &lt;s:link action="#{pooledTask.assignToCurrentActor}" value="Assign" taskInstance="#{task}"/&gt;
+    &lt;/h:column&gt;            	
+&lt;/h:dataTable&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Note that instead of <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;s:link&gt;</fo:inline> we could have used a plain JSF <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;h:commandLink&gt;</fo:inline>:
+			</fo:block><fo:block id="id3403981" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;h:commandLink action="#{pooledTask.assignToCurrentActor}"&gt; 
+    &lt;f:param name="taskId" value="#{task.id}"/&gt;
+&lt;/h:commandLink&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">pooledTask</fo:inline> component is a built-in component that simply assigns the task to the current user.
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">taskInstanceListForType</fo:inline> component includes tasks of a particular type that are assigned to the current user:
+			</fo:block><fo:block id="id3577763" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;h:dataTable value="#{taskInstanceListForType['todo']}" var="task"&gt;
+    &lt;h:column&gt;
+        &lt;f:facet name="header"&gt;Description&lt;/f:facet&gt;
+        &lt;h:outputText value="#{task.description}"/&gt;
+    &lt;/h:column&gt;
+    &lt;h:column&gt;
+        &lt;s:link action="#{todoList.start}" value="Start Work" taskInstance="#{task}"/&gt;
+    &lt;/h:column&gt;            	
+&lt;/h:dataTable&gt;
+</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Performing_a_task"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Performing a task</fo:marker><fo:block color="#a70000" font-size="14pt">7.4.6. Performing a task</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-befor!
 e.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				To begin work on a task, we use either <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@StartTask</fo:inline> or <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@BeginTask</fo:inline> on the listener method:
+			</fo:block><fo:block id="id3093119" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@StartTask
+public String start() { ... }
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Alternatively we can begin work on a task using <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">pages.xml</fo:inline>:
+			</fo:block><fo:block id="id3909442" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;page&gt;
+    &lt;start-task /&gt;
+&lt;/page&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				These annotations begin a special kind of conversation that has significance in terms of the overarching business process. Work done by this conversation has access to state held in the business process context.
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				If we end the conversation using <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@EndTask</fo:inline>, Seam will signal the completion of the task:
+			</fo:block><fo:block id="id3322758" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@EndTask(transition="completed")
+public String completed() { ... }
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Alternatively we can use pages.xml:
+			</fo:block><fo:block id="id3507507" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;page&gt;
+    &lt;end-task transition="completed" /&gt;
+&lt;/page&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				(Alternatively, we could have used <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;end-conversation&gt;</fo:inline> as shown above.)
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				At this point, jBPM takes over and continues executing the business process definition. (In more complex processes, several tasks might need to be completed before process execution can resume.)
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Please refer to the jBPM documentation for a more thorough overview of the sophisticated features that jBPM provides for managing complex business processes.
+			</fo:block></fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="body" language="en" format="1" initial-page-number="auto-odd" force-page-count="end-on-even" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:tabl!
 e-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always" font-weight="bold">Chapter 8.</fo:inline></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-!
 width="proportional-column-width(1)"/><fo:table-body><fo:table!
 -row blo
ck-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always"><fo:retrieve-marker retrieve-class-name="section.head.marker" retrieve-position="first-including-carryover" retrieve-boundary="page-sequence"/></fo:inline></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column!
 -width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always" font-weight="bold">Chapter 8. Seam and Object/Relational Mapping</fo:inline></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table tab!
 le-layout="fixed" width="100%" border-bottom-width="0.5pt" bor!
 der-bott
om-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-footnote-separator"><fo:block><fo:leader color="black" leader-pattern="rule" leader-length="1in"/></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block f!
 ont-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:stati!
 c-content><fo:static-content flow-name="xsl-region-after-odd">!
 <fo:bloc
k font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:sta!
 tic-content><fo:static-content flow-name="xsl-region-after-even"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></f!
 o:table-cell></fo:table-row></fo:table-body></fo:table></fo:bl!
 ock></fo
:static-content><fo:static-content flow-name="xsl-region-after-blank"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block!
 ></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:flow flow-name="xsl-region-body" start-indent="0pt" end-indent="0pt"><fo:block id="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats"><fo:block margin-left="0pc"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" color="#a70000" background-color="white" font-size="24pt" font-weight="bold" text-align="left" padding-left="1em" padding-right="1em">Seam and Object/Relational Mapping</fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Seam provides extensive support for the two most popular persistence architectures for Java: Hibernate3, and the Java Persistence API introduced with EJB 3.0. Seam's unique state-management architecture allows the most sophisticated ORM integration of any web application framework.
+	</fo:block><fo:block id="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Introduction"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Introduction</fo:marker><fo:block color="#a70000" font-size="16pt">8.1. Introduction</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.ma!
 ximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Seam grew out of the frustration of the Hibernate team with the statelessness typical of the previous generation of Java application architectures. The state management architecture of Seam was originally designed to solve problems relating to persistence—in particular problems associated with <fo:inline font-style="italic">optimistic transaction processing</fo:inline>. Scalable online applications always use optimistic transactions. An atomic (database/JTA) level transaction should not span a user interaction unless the application is designed to support only a very small number of concurrent clients. But almost all interesting work involves first displaying data to a user, and then, slightly later, updating the same data. So Hibernate was designed to support the idea of a persistence context which spanned an optimistic transaction.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Unfortunately, the so-called <fo:inline font-style="italic">stateless</fo:inline> architectures that preceded Seam and EJB 3.0 had no construct for representing an optimistic transaction. So, instead, these architectures provided persistence contexts scoped to the atomic transaction. This resulted in many problems for users, and is the cause of the number one user complaint about Hibernate: the dreaded <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">LazyInitializationException</fo:inline>. What we need is a construct for representing an optimistic transaction in the application tier.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			EJB 3.0 recognizes this problem, and introduces the idea of a stateful component (a stateful session bean) with an <fo:inline font-style="italic">extended persistence context</fo:inline> scoped to the lifetime of the component. This is a partial solution to the problem (and is a useful construct in and of itself) however there are two problems:
+		</fo:block><fo:list-block id="id3887990" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3850533" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+					The lifecycle of the stateful session bean must be managed manually via code in the web tier (it turns out that this is a subtle problem and much more difficult in practice than it sounds).
+				</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3887986" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+					Propagation of the persistence context between stateful components in the same optimistic transaction is possible, but tricky.
+				</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Seam solves the first problem by providing conversations, and stateful session bean components scoped to the conversation. (Most conversations actually represent optimistic transactions in the data layer.) This is sufficient for many simple applications (such as the Seam booking demo) where persistence context propagation is not needed. For more complex applications, with many loosly-interacting components in each conversation, propagation of the persistence context across components becomes an important issue. So Seam extends the persistence context management model of EJB 3.0, to provide conversation-scoped extended persistence contexts.
+		</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Seam_managed_transactions"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Seam managed transactions</fo:marker><fo:block color="#a70000" font-size="16pt">8.2. Seam managed transactions</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="!
 0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			EJB session beans feature declarative transaction management. The EJB container is able to start a transaction transparently when the bean is invoked, and end it when the invocation ends. If we write a session bean method that acts as a JSF action listener, we can do all the work associated with that action in one transaction, and be sure that it is committed or rolled back when we finish processing the action. This is a great feature, and all that is needed by some Seam applications.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			However, there is a problem with this approach. A Seam application may not perform all data access for a request from a single method call to a session bean.
+		</fo:block><fo:list-block id="id3716106" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id2755525" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+					The request might require processing by several loosly-coupled components, each of which is called independently from the web layer. It is common to see several or even many calls per request from the web layer to EJB components in Seam.
+				</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3640066" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+					Rendering of the view might require lazy fetching of associations.
+				</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The more transactions per request, the more likely we are to encounter atomicity and isolation problems when our application is processing many concurrent requests. Certainly, all write operations should occur in the same transaction.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Hibernate users developed the <fo:inline font-style="italic">open session in view</fo:inline> pattern to work around this problem. In the Hibernate community, <fo:inline font-style="italic">open session in view</fo:inline> was historically even more important because frameworks like Spring use transaction-scoped persistence contexts. So rendering the view would cause <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">LazyInitializationException</fo:inline>s when unfetched associations were accessed.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			This pattern is usually implemented as a single transaction which spans the entire request. There are several problems with this implementation, the most serious being that we can never be sure that a transaction is successful until we commit it—but by the time the <fo:inline font-style="italic">open session in view</fo:inline> transaction is committed, the view is fully rendered, and the rendered response may already have been flushed to the client. How can we notify the user that their transaction was unsuccessful?
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Seam solves both the transaction isolation problem and the association fetching problem, while working around the problems with <fo:inline font-style="italic">open session in view</fo:inline>. The solution comes in two parts:
+		</fo:block><fo:list-block id="id2657693" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id2794205" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+					use an extended persistence context that is scoped to the conversation, instead of to the transaction
+				</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3149351" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+					use two transactions per request; the first spans the beginning of the update model values phase until the end of the invoke application phase; the second spans the render response phase
+				</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			In the next section, we will tell you how to set up a conversation-scope persistence context. But first we need to tell you how to enable Seam transaction management. Note that you can use conversation-scoped persistence contexts without Seam transaction management, and there are good reasons to use Seam transaction management even when you are not using Seam-managed persistence contexts. However, the two facilities were designed to work together, and work best when used together.
+		</fo:block><fo:block id="Seam_Reference_Guide-Seam_managed_transactions-Enabling_Seam_managed_transactions"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Enabling Seam-managed transactions</fo:marker><fo:block color="#a70000" font-size="14pt">8.2.1. Enabling Seam-managed transactions</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before!
 .minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				To make use of <fo:inline font-style="italic">Seam managed transactions</fo:inline>, you need to use <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">TransactionalSeamPhaseListener</fo:inline> in place of <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">SeamPhaseListener</fo:inline>.
+			</fo:block><fo:block id="id3301398" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;lifecycle&gt;
+     &lt;phase-listener&gt;
+        org.jboss.seam.jsf.TransactionalSeamPhaseListener
+    &lt;/phase-listener&gt;
+&lt;/lifecycle&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Seam transaction management is useful even if you are using EJB 3.0 container-managed persistence contexts. But it is especially useful if you use Seam outside a Java EE 5 environment, or in any other case where you would use a Seam-managed persistence context.
+			</fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Seam_managed_persistence_contexts"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Seam-managed persistence contexts</fo:marker><fo:block color="#a70000" font-size="16pt">8.3. Seam-managed persistence contexts</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XS!
 L/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			If you are using Seam outside of a Java EE 5 environment, you cannot rely upon the container to manage the persistence context lifecycle for you. Even if you are in an EE 5 environment, you might have a complex application with many loosly coupled components that collaborate together in the scope of a single conversation, and in this case you might find that propagation of the persistence context between component is tricky and error-prone.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			In either case, you will need to use a <fo:inline font-style="italic">managed persistence context</fo:inline> (for JPA) or a <fo:inline font-style="italic">managed session</fo:inline> (for Hibernate) in your components. A Seam-managed persistence context is just a built-in Seam component that manages an instance of <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">EntityManager</fo:inline> or <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Session</fo:inline> in the conversation context. You can inject it with <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@In</fo:inline>.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Seam-managed persistence contexts are extremely efficient in a clustered environment. Seam is able to perform an optimization that EJB 3.0 specification does not allow containers to use for container-managed extended persistence contexts. Seam supports transparent failover of extended persisence contexts, without the need to replicate any persistence context state between nodes. (We hope to fix this oversight in the next revision of the EJB spec.)
+		</fo:block><fo:block id="Seam_Reference_Guide-Seam_managed_persistence_contexts-Using_a_Seam_managed_persistence_context_with_JPA"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Using a Seam-managed persistence context with JPA</fo:marker><fo:block color="#a70000" font-size="14pt">8.3.1. Using a Seam-managed persistence context with JPA</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx!
 ="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Configuring a managed persistence context is easy. In <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">components.xml</fo:inline>, we can write:
+			</fo:block><fo:block id="id3921700" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;core:managed-persistence-context name="bookingDatabase" 
+                           auto-create="true"
+            persistence-unit-jndi-name="java:/EntityManagerFactories/bookingData"/&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				This configuration creates a conversation-scoped Seam component named <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">bookingDatabase</fo:inline> that manages the lifecycle of <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">EntityManager</fo:inline> instances for the persistence unit (<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">EntityManagerFactory</fo:inline> instance) with JNDI name <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">java:/EntityManagerFactories/bookingData</fo:inline>.
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Of course, you need to make sure that you have bound the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">EntityManagerFactory</fo:inline> into JNDI. In JBoss, you can do this by adding the following property setting to <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">persistence.xml</fo:inline>.
+			</fo:block><fo:block id="id4162553" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;property name="jboss.entity.manager.factory.jndi.name" 
+          value="java:/EntityManagerFactories/bookingData"/&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Now we can have our <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">EntityManager</fo:inline> injected using:
+			</fo:block><fo:block id="id2660901" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@In EntityManager bookingDatabase;
+</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Seam_managed_persistence_contexts-Using_a_Seam_managed_Hibernate_session"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Using a Seam-managed Hibernate session</fo:marker><fo:block color="#a70000" font-size="14pt">8.3.2. Using a Seam-managed Hibernate session</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com!
 /XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Seam-managed Hibernate sessions are similar. In <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">components.xml</fo:inline>:
+			</fo:block><fo:block id="id2792490" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;core:hibernate-session-factory name="hibernateSessionFactory"/&gt;
+
+&lt;core:managed-hibernate-session name="bookingDatabase" 
+                         auto-create="true"
+           session-factory-jndi-name="java:/bookingSessionFactory"/&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Where <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">java:/bookingSessionFactory</fo:inline> is the name of the session factory specified in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">hibernate.cfg.xml</fo:inline>.
+			</fo:block><fo:block id="id3724993" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;session-factory name="java:/bookingSessionFactory"&gt;
+    &lt;property name="transaction.flush_before_completion"&gt;true&lt;/property&gt;
+    &lt;property name="connection.release_mode"&gt;after_statement&lt;/property&gt;
+    &lt;property name="transaction.manager_lookup_class"&gt;
+       org.hibernate.transaction.JBossTransactionManagerLookup
+    &lt;/property&gt;
+    &lt;property name="transaction.factory_class"&gt;
+       org.hibernate.transaction.JTATransactionFactory
+    &lt;/property&gt;
+    &lt;property name="connection.datasource"&gt;java:/bookingDatasource&lt;/property&gt;
+    ...
+&lt;/session-factory&gt;
+</fo:block><fo:block id="id3659135" color="white" background-color="#d08e13" space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1em" padding-bottom="12pt" padding-top="12pt" margin-left="0pc"><fo:list-block provisional-distance-between-starts="36pt + 18pt" provisional-label-separation="18pt"><fo:list-item><fo:list-item-label end-indent="label-end()"><fo:block><fo:external-graphic width="auto" height="auto" content-width="36pt" src="url(Common_Content/images/important.svg)"/></fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block font-size="13pt" color="white" font-weight="bold" hyphenate="true" keep-with-next.within-column="always">Important</fo:block><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-befo!
 re.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+					Seam does not flush the session, so you should always enable <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">hibernate.transaction.flush_before_completion</fo:inline> to ensure that the session is automatically flushed before the JTA transaction commits.
+				</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				We can now have a managed Hibernate <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Session</fo:inline> injected into our JavaBean components using the following code:
+			</fo:block><fo:block id="id2657344" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@In Session bookingDatabase;
+</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Seam_managed_persistence_contexts-Seam_managed_persistence_contexts_and_atomic_conversations"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Seam-managed persistence contexts and atomic conversations</fo:marker><fo:block color="#a70000" font-size="14pt">8.3.3. Seam-managed persistence contexts and atomic conversations</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.!
 org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Persistence contexts scoped to the conversation allows you to program optimistic transactions that span multiple requests to the server without the need to use the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">merge()</fo:inline> operation , without the need to re-load data at the beginning of each request, and without the need to wrestle with the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">LazyInitializationException</fo:inline> or <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">NonUniqueObjectException</fo:inline>.
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				As with any optimistic transaction management, transaction isolation and consistency can be achieved via use of optimistic locking. Fortunately, both Hibernate and EJB 3.0 make it very easy to use optimistic locking, by providing the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Version</fo:inline> annotation.
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				By default, the persistence context is flushed (synchronized with the database) at the end of each transaction. This is sometimes the desired behavior. But very often, we would prefer that all changes are held in memory and only written to the database when the conversation ends successfully. This allows for truly atomic conversations. As the result of a truly stupid and shortsighted decision by certain non-JBoss, non-Sun and non-Sybase members of the EJB 3.0 expert group, there is currently no simple, usable and portable way to implement atomic conversations using EJB 3.0 persistence. However, Hibernate provides this feature as a vendor extension to the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">FlushModeType</fo:inline>s defined by the specification, and it is our expectation that other vendors will soon provide a similar extension.
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Seam lets you specify <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">FlushModeType.MANUAL</fo:inline> when beginning a conversation. Currently, this works only when Hibernate is the underlying persistence provider, but we plan to support other equivalent vendor extensions.
+			</fo:block><fo:block id="id3924653" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@In EntityManager em; //a Seam-managed persistence context
+
+ at Begin(flushMode=MANUAL)
+public void beginClaimWizard() {
+    claim = em.find(Claim.class, claimId);
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Now, the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">claim</fo:inline> object remains managed by the persistence context for the rest ot the conversation. We can make changes to the claim:
+			</fo:block><fo:block id="id3310251" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">public void addPartyToClaim() {
+    Party party = ....;
+    claim.addParty(party);
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				But these changes will not be flushed to the database until we explicitly force the flush to occur:
+			</fo:block><fo:block id="id3149894" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@End
+public void commitClaim() {
+    em.flush();
+}
+</fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_the_JPA_delegate"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Using the JPA "delegate"</fo:marker><fo:block color="#a70000" font-size="16pt">8.4. Using the JPA "delegate"</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minim!
 um="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">EntityManager</fo:inline> interface lets you access a vendor-specific API via the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">getDelegate()</fo:inline> method. Naturally, the most interesting vendor is Hibernate, and the most powerful delegate interface is <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.hibernate.Session</fo:inline>. You'd be nuts to use anything else. Trust me, I'm not biased at all.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			But regardless of whether you are using Hibernate or something else, you will almost certainly want to use the delegate in your Seam components from time to time. One approach would be the following:
+		</fo:block><fo:block id="id3775127" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@In EntityManager entityManager;
+
+ at Create
+public void init() {
+    ( (Session) entityManager.getDelegate() ).enableFilter("currentVersions");
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			But typecasts are unquestionably the ugliest syntax in the Java language, so most people avoid them whenever possible. Here is a different way to get at the delegate. First, add the following line to <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">components.xml</fo:inline>:
+		</fo:block><fo:block id="id2681208" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;factory name="session" 
+         scope="STATELESS" 
+         auto-create="true" 
+         value="#{entityManager.delegate}"/&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Now we can inject the session directly:
+		</fo:block><fo:block id="id3914593" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@In Session session;
+
+ at Create
+public void init() {
+    session.enableFilter("currentVersions");
+}
+</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_EL_in_EJB_QLHQL"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Using EL in EJB-QL/HQL</fo:marker><fo:block color="#a70000" font-size="16pt">8.5. Using EL in EJB-QL/HQL</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space!
 -before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Seam proxies the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">EntityManager</fo:inline> or <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Session</fo:inline> object whenever you use a Seam-managed persistence context or inject a container managed persistence context using <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@PersistenceContext</fo:inline>. This lets you use EL expressions in your query strings, safely and efficiently. For example, this:
+		</fo:block><fo:block id="id3856942" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">User user = em.createQuery("from User where username=#{user.username}")
+         .getSingleResult();
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			is equivalent to:
+		</fo:block><fo:block id="id3725290" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">User user = em.createQuery("from User where username=:username")
+         .setParameter("username", user.getUsername())
+         .getSingleResult();
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Of course, you should never, ever write it like this:
+		</fo:block><fo:block id="id3149735" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">User user = em.createQuery("from User where username=" + user.getUsername()) //BAD!
+         .getSingleResult();
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			(It is inefficient and vulnerable to SQL injection attacks.)
+		</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_Hibernate_filters"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Using Hibernate filters</fo:marker><fo:block color="#a70000" font-size="16pt">8.6. Using Hibernate filters</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em"!
  space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The most unique feature of Hibernate is <fo:inline font-style="italic">filters</fo:inline>. Filters let you provide a restricted view of the data in the database. You can find out more about filters in the Hibernate documentation. But we thought we would mention an easy way to incorporate filters into a Seam application, one that works especially well with the Seam Application Framework.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Seam-managed persistence contexts may have a list of filters defined, which will be enabled whenever an <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">EntityManager</fo:inline> or Hibernate <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Session</fo:inline> is first created. (Of course, they may only be used when Hibernate is the underlying persistence provider.)
+		</fo:block><fo:block id="id3326744" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;core:filter name="regionFilter"&gt;
+    &lt;core:name&gt;region&lt;/core:name&gt;
+    &lt;core:parameters&gt;
+        &lt;key&gt;regionCode&lt;/key&gt;
+        &lt;value&gt;#{region.code}&lt;/value&gt;
+    &lt;/core:parameters&gt;
+&lt;/core:filter&gt;
+
+&lt;core:filter name="currentFilter"&gt;
+    &lt;core:name&gt;current&lt;/core:name&gt;
+    &lt;core:parameters&gt;
+        &lt;key&gt;date&lt;/key&gt;
+        &lt;value&gt;#{currentDate}&lt;/value&gt;
+    &lt;/core:parameters&gt;
+&lt;/core:filter&gt;
+
+&lt;core:managed-persistence-context name="personDatabase"
+    persistence-unit-jndi-name="java:/EntityManagerFactories/personDatabase"&gt;
+    &lt;core:filters&gt;
+        &lt;value&gt;#{regionFilter}&lt;/value&gt;
+        &lt;value&gt;#{currentFilter}&lt;/value&gt;
+    &lt;/core:filters&gt;
+&lt;/core:managed-persistence-context&gt;
+</fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="body" language="en" format="1" initial-page-number="auto-odd" force-page-count="end-on-even" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-al!
 ign="start" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always" font-weight="bold">Chapter 9.</fo:inline></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proport!
 ional-column-width(1)"/><fo:table-body><fo:table-row block-pro!
 gression
-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always"><fo:retrieve-marker retrieve-class-name="section.head.marker" retrieve-position="first-including-carryover" retrieve-boundary="page-sequence"/></fo:inline></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="propor!
 tional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always" font-weight="bold">Chapter 9. JSF form validation in Seam</fo:inline></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" wid!
 th="100%" border-bottom-width="0.5pt" border-bottom-style="sol!
 id" bord
er-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-footnote-separator"><fo:block><fo:leader color="black" leader-pattern="rule" leader-length="1in"/></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block font-family="Liberatio!
 n Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-!
 content flow-name="xsl-region-after-odd"><fo:block font-family!
 ="Libera
tion Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:stati!
 c-content flow-name="xsl-region-after-even"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:tab!
 le-row></fo:table-body></fo:table></fo:block></fo:static-conte!
 nt><fo:s
tatic-content flow-name="xsl-region-after-blank"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo!
 :table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:flow flow-name="xsl-region-body" start-indent="0pt" end-indent="0pt"><fo:block id="Seam_Reference_Guide-JSF_form_validation_in_Seam"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats"><fo:block margin-left="0pc"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" color="#a70000" background-color="white" font-size="24pt" font-weight="bold" text-align="left" padding-left="1em" padding-right="1em">JSF form validation in Seam</fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		In plain JSF, validation is defined in the view:
+	</fo:block><fo:block id="id3849007" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;h:form&gt;
+    &lt;h:messages/&gt;
+
+    &lt;div&gt;
+        Country:
+        &lt;h:inputText value="#{location.country}" required="true"&gt;
+            &lt;my:validateCountry/&gt;
+        &lt;/h:inputText&gt;
+    &lt;/div&gt;
+    
+    &lt;div&gt;
+        Zip code:
+        &lt;h:inputText value="#{location.zip}" required="true"&gt;
+            &lt;my:validateZip/&gt;
+        &lt;/h:inputText&gt;
+    &lt;/div&gt;
+
+    &lt;h:commandButton/&gt;
+&lt;/h:form&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		In practice, this approach usually violates DRY, since most validation actually enforces constraints that are part of the data model, and exist all the way down to the database schema definition. Seam provides support for model-based constraints defined using Hibernate Validator.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Let us start by defining our constraints, on our <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Location</fo:inline> class:
+	</fo:block><fo:block id="id3059115" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">public class Location {
+    private String country;
+    private String zip;
+    
+    @NotNull
+    @Length(max=30)
+    public String getCountry() { return country; }
+    public void setCountry(String c) { country = c; }
+
+    @NotNull
+    @Length(max=6)
+    @Pattern("^\d*$")
+    public String getZip() { return zip; }
+    public void setZip(String z) { zip = z; }
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Well, that is a decent first cut, but in practice it might be more elegant to use custom constraints instead of the ones built into Hibernate Validator:
+	</fo:block><fo:block id="id3488841" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">public class Location {
+    private String country;
+    private String zip;
+    
+    @NotNull
+    @Country
+    public String getCountry() { return country; }
+    public void setCountry(String c) { country = c; }
+
+    @NotNull
+    @ZipCode
+    public String getZip() { return zip; }
+    public void setZip(String z) { zip = z; }
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Whichever route we take, we no longer need to specify the type of validation to be used in the JSF page. Instead, we can use <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;s:validate&gt;</fo:inline> to validate against the constraint defined on the model object.
+	</fo:block><fo:block id="id3341933" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;h:form&gt;
+    &lt;h:messages/&gt;
+
+    &lt;div&gt;
+        Country:
+        &lt;h:inputText value="#{location.country}" required="true"&gt;
+            &lt;s:validate/&gt;
+        &lt;/h:inputText&gt;
+    &lt;/div&gt;
+    
+    &lt;div&gt;
+        Zip code:
+        &lt;h:inputText value="#{location.zip}" required="true"&gt;
+            &lt;s:validate/&gt;
+        &lt;/h:inputText&gt;
+    &lt;/div&gt;
+    
+    &lt;h:commandButton/&gt;
+
+&lt;/h:form&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		<fo:inline font-style="italic">Note:</fo:inline> specifying <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@NotNull</fo:inline> on the model does <fo:inline font-style="italic">not</fo:inline> eliminate the requirement for <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">required="true"</fo:inline> to appear on the control! This is due to a limitation of the JSF validation architecture.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		This approach <fo:inline font-style="italic">defines</fo:inline> constraints on the model, and <fo:inline font-style="italic">presents</fo:inline> constraint violations in the view—a significantly better design.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		However, it is not much less verbose than what we started with, so let us try <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;s:validateAll&gt;</fo:inline>:
+	</fo:block><fo:block id="id2663977" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;h:form&gt;
+    
+    &lt;h:messages/&gt;
+
+    &lt;s:validateAll&gt;
+
+        &lt;div&gt;
+            Country:
+            &lt;h:inputText value="#{location.country}" required="true"/&gt;
+        &lt;/div&gt;
+
+        &lt;div&gt;
+            Zip code:
+            &lt;h:inputText value="#{location.zip}" required="true"/&gt;
+        &lt;/div&gt;
+
+        &lt;h:commandButton/&gt;
+
+    &lt;/s:validateAll&gt;
+
+&lt;/h:form&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		This tag simply adds an <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;s:validate&gt;</fo:inline> to every input in the form. For a large form, it can save a lot of typing.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Now we need to do something about displaying feedback to the user when validation fails. Currently we are displaying all messages at the top of the form. What we would really like to do is display the message next to the field with the error (this is possible in plain JSF), highlight the field and label (this is not possible) and, for good measure, display some image next the the field (also not possible). We also want to display a little colored asterisk next to the label for each required form field.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		That is quite a lot of functionality we need for each field of our form. We would not want to have to specify higlighting and the layout of the image, message and input field for every field on the form. So, instead, we will specify the common layout in a facelets template:
+	</fo:block><fo:block id="id3146909" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;ui:composition xmlns="http://www.w3.org/1999/xhtml"
+                xmlns:ui="http://java.sun.com/jsf/facelets"
+                xmlns:h="http://java.sun.com/jsf/html"
+                xmlns:f="http://java.sun.com/jsf/core"
+                xmlns:s="http://jboss.com/products/seam/taglib"&gt;
+                 
+    &lt;div&gt;
+    
+        &lt;s:label styleClass="#{invalid?'error':''}"&gt;
+            &lt;ui:insert name="label"/&gt;
+            &lt;s:span styleClass="required" rendered="#{required}"&gt;*&lt;/s:span&gt;
+        &lt;/s:label&gt;
+        
+        &lt;span class="#{invalid?'error':''}"&gt;
+            &lt;h:graphicImage src="img/error.gif" rendered="#{invalid}"/&gt;
+            &lt;s:validateAll&gt;
+                &lt;ui:insert/&gt;
+            &lt;/s:validateAll&gt;
+        &lt;/span&gt;
+        
+        &lt;s:message styleClass="error"/&gt;
+        
+    &lt;/div&gt;
+    
+&lt;/ui:composition&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		We can include this template for each of our form fields using <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;s:decorate&gt;</fo:inline>.
+	</fo:block><fo:block id="id4180007" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;h:form&gt;
+
+    &lt;h:messages globalOnly="true"/&gt;
+
+    &lt;s:decorate template="edit.xhtml"&gt;
+        &lt;ui:define name="label"&gt;Country:&lt;/ui:define&gt;
+        &lt;h:inputText value="#{location.country}" required="true"/&gt;
+    &lt;/s:decorate&gt;
+    
+    &lt;s:decorate template="edit.xhtml"&gt;
+        &lt;ui:define name="label"&gt;Zip code:&lt;/ui:define&gt;
+        &lt;h:inputText value="#{location.zip}" required="true"/&gt;
+    &lt;/s:decorate&gt;
+
+    &lt;h:commandButton/&gt;
+
+&lt;/h:form&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Finally, we can use Ajax4JSF to display validation messages as the user is navigating around the form:
+	</fo:block><fo:block id="id3208960" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;h:form&gt;
+
+    &lt;h:messages globalOnly="true"/&gt;
+
+    &lt;s:decorate id="countryDecoration" template="edit.xhtml"&gt;
+        &lt;ui:define name="label"&gt;Country:&lt;/ui:define&gt;
+        &lt;h:inputText value="#{location.country}" required="true"&gt;
+            &lt;a:support event="onblur" reRender="countryDecoration"/&gt;
+        &lt;/h:inputText&gt;
+    &lt;/s:decorate&gt;
+    
+    &lt;s:decorate id="zipDecoration" template="edit.xhtml"&gt;
+        &lt;ui:define name="label"&gt;Zip code:&lt;/ui:define&gt;
+        &lt;h:inputText value="#{location.zip}" required="true"&gt;
+            &lt;a:support event="onblur" reRender="zipDecoration"/&gt;
+        &lt;/h:inputText&gt;
+    &lt;/s:decorate&gt;
+
+    &lt;h:commandButton/&gt;
+
+&lt;/h:form&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		As a final note, it would be better style to define explicit IDs for important controls on the page, especially if you want to do automated testing for the UI, using some toolkit like Selenium. If you do not provide explicit ids, JSF will generate them, but the generated values will change if you change anything on the page.
+	</fo:block><fo:block id="id2716792" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;h:form id="form"&gt;
+
+    &lt;h:messages globalOnly="true"/&gt;
+
+    &lt;s:decorate id="countryDecoration" template="edit.xhtml"&gt;
+        &lt;ui:define name="label"&gt;Country:&lt;/ui:define&gt;
+        &lt;h:inputText id="country" value="#{location.country}" required="true"&gt;
+            &lt;a:support event="onblur" reRender="countryDecoration"/&gt;
+        &lt;/h:inputText&gt;
+    &lt;/s:decorate&gt;
+    
+    &lt;s:decorate id="zipDecoration" template="edit.xhtml"&gt;
+        &lt;ui:define name="label"&gt;Zip code:&lt;/ui:define&gt;
+        &lt;h:inputText id="zip" value="#{location.zip}" required="true"&gt;
+            &lt;a:support event="onblur" reRender="zipDecoration"/&gt;
+        &lt;/h:inputText&gt;
+    &lt;/s:decorate&gt;
+
+    &lt;h:commandButton/&gt;
+
+&lt;/h:form&gt;
+</fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="body" language="en" format="1" initial-page-number="auto-odd" force-page-count="end-on-even" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start"!
  display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always" font-weight="bold">Chapter 10.</fo:inline></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-colu!
 mn-width(1)"/><fo:table-body><fo:table-row block-progression-d!
 imension
.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always"><fo:retrieve-marker retrieve-class-name="section.head.marker" retrieve-position="first-including-carryover" retrieve-boundary="page-sequence"/></fo:inline></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-col!
 umn-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always" font-weight="bold">Chapter 10. The Seam Application Framework</fo:inline></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="10!
 0%" border-bottom-width="0.5pt" border-bottom-style="solid" bo!
 rder-bot
tom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-footnote-separator"><fo:block><fo:leader color="black" leader-pattern="rule" leader-length="1in"/></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block font-family="Liberation Sans!
 ,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-conten!
 t flow-name="xsl-region-after-odd"><fo:block font-family="Libe!
 ration S
ans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-cont!
 ent flow-name="xsl-region-after-even"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row!
 ></fo:table-body></fo:table></fo:block></fo:static-content><fo!
 :static-
content flow-name="xsl-region-after-blank"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table!
 -row></fo:table-body></fo:table></fo:block></fo:static-content><fo:flow flow-name="xsl-region-body" start-indent="0pt" end-indent="0pt"><fo:block id="Seam_Reference_Guide-The_Seam_Application_Framework"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats"><fo:block margin-left="0pc"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" color="#a70000" background-color="white" font-size="24pt" font-weight="bold" text-align="left" padding-left="1em" padding-right="1em">The Seam Application Framework</fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Seam makes it really easy to create applications by writing plain Java classes with annotations, which do not need to extend any special interfaces or superclasses. But we can simplify some common programming tasks even further, by providing a set of pre-built components which can be re-used either by configuration in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">components.xml</fo:inline> (for very simple cases) or extension.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The <fo:inline font-style="italic">Seam Application Framework</fo:inline> can reduce the amount of code you need to write when doing basic database access in a web application, using either Hibernate or JPA.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		We should emphasize that the framework is extremely simple, just a handful of simple classes that are easy to understand and extend that Seam then uses when creating your application.
+	</fo:block><fo:block id="Seam_Reference_Guide-The_Seam_Application_Framework-Introduction"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Introduction</fo:marker><fo:block color="#a70000" font-size="16pt">10.1. Introduction</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maxi!
 mum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The components provided by the Seam application framework may be used in one of two different approaches. The first way is to install and configure an instance of the component in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">components.xml</fo:inline>, just like we have done with other kinds of built-in Seam components. For example, the following fragment from <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">components.xml</fo:inline> installs a component which can perform basic CRUD operations for a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Contact</fo:inline> entity:
+		</fo:block><fo:block id="id2664032" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;framework:entity-home name="personHome" 
+                       entity-class="eg.Person" 
+                       entity-manager="#{personDatabase}"&gt;
+    &lt;framework:id&gt;#{param.personId}&lt;/framework:id&gt;
+&lt;/framework:entity-home&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			If you would rather a different method to the above, you can use extension instead:
+		</fo:block><fo:block id="id3059036" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Stateful
+ at Name("personHome")
+public class PersonHome extends EntityHome&lt;Person&gt; implements LocalPersonHome {
+    @RequestParameter String personId;
+    @In EntityManager personDatabase;
+    
+    public Object getId() { return personId; }
+    public EntityManager getEntityManager() { return personDatabase; }
+    
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The second approach has one huge advantage: you can easily add extra functionality, and override the built-in functionality (the framework classes were carefully designed for extension and customization).
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			A second advantage is that your classes may be EJB stateful sessin beans, if you like. (They do not have to be, they can be plain JavaBean components if you prefer.)
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			At this time, the Seam Application Framework provides just four built-in components: <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">EntityHome</fo:inline> and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">HibernateEntityHome</fo:inline> for CRUD, along with <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">EntityQuery</fo:inline> and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">HibernateEntityQuery</fo:inline> for queries.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The Home and Query components are written so that they can function with a scope of session, event or conversation. Which scope you use depends upon the state model you wish to use in your application.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The Seam Application Framework only works with Seam-managed persistence contexts. By default, the components will look for a persistence context named <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">entityManager</fo:inline>.
+		</fo:block></fo:block><fo:block id="Seam_Reference_Guide-The_Seam_Application_Framework-Home_objects"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Home objects</fo:marker><fo:block color="#a70000" font-size="16pt">10.2. Home objects</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space!
 -before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			A Home object provides persistence operations for a particular entity class. Suppose we have our trusty <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Person</fo:inline> class:
+		</fo:block><fo:block id="id2756264" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Entity
+public class Person {
+    @Id private Long id;
+    private String firstName;
+    private String lastName;
+    private Country nationality;
+    
+    //getters and setters...
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			We can define a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">personHome</fo:inline> component either via configuration:
+		</fo:block><fo:block id="id3743793" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;framework:entity-home name="personHome" entity-class="eg.Person" /&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Or via extension:
+		</fo:block><fo:block id="id4162465" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Name("personHome")
+public class PersonHome extends EntityHome&lt;Person&gt; {}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			A Home object provides the following operations: <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">persist()</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">remove()</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">update()</fo:inline> and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">getInstance()</fo:inline>. Before you can call the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">remove()</fo:inline>, or <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">update()</fo:inline> operations, you must first set the identifier of the object you are interested in, using the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">setId()</fo:inline> method.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			We can use a Home directly from a JSF page, for example:
+		</fo:block><fo:block id="id4178572" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;h1&gt;Create Person&lt;/h1&gt;
+&lt;h:form&gt;
+    &lt;div&gt;First name: &lt;h:inputText value="#{personHome.instance.firstName}"/&gt;&lt;/div&gt;
+    &lt;div&gt;Last name: &lt;h:inputText value="#{personHome.instance.lastName}"/&gt;&lt;/div&gt;
+    &lt;div&gt;
+        &lt;h:commandButton value="Create Person" action="#{personHome.persist}"/&gt;
+    &lt;/div&gt;
+&lt;/h:form&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Usually, it is much nicer to be able to refer to the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Person</fo:inline> merely as <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">person</fo:inline>, so let us make that possible by adding a line to <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">components.xml</fo:inline>:
+		</fo:block><fo:block id="id2837054" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;factory name="person" 
+         value="#{personHome.instance}"/&gt;
+
+&lt;framework:entity-home name="personHome" 
+                       entity-class="eg.Person" /&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			(If we are using configuration.) Or by adding a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Factory</fo:inline> method to <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">PersonHome</fo:inline>:
+		</fo:block><fo:block id="id3416812" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Name("personHome")
+public class PersonHome extends EntityHome&lt;Person&gt; {
+    
+    @Factory("person")
+    public Person initPerson() { return getInstance(); }
+    
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			(If we are using extension.) This change simplifies our JSF page to the following:
+		</fo:block><fo:block id="id3787821" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;h1&gt;Create Person&lt;/h1&gt;
+&lt;h:form&gt;
+    &lt;div&gt;First name: &lt;h:inputText value="#{person.firstName}"/&gt;&lt;/div&gt;
+    &lt;div&gt;Last name: &lt;h:inputText value="#{person.lastName}"/&gt;&lt;/div&gt;
+    &lt;div&gt;
+        &lt;h:commandButton value="Create Person" action="#{personHome.persist}"/&gt;
+    &lt;/div&gt;
+&lt;/h:form&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Well, that lets us create new <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Person</fo:inline> entries. Now, if we want to be able to display, update and delete pre-existing <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Person</fo:inline> entries in the database, we need to be able to pass the entry identifier to the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">PersonHome</fo:inline>. Page parameters are a great way to do that:
+		</fo:block><fo:block id="id3725253" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;pages&gt;
+    &lt;page view-id="/editPerson.jsp"&gt;
+        &lt;param name="personId" value="#{personHome.id}"/&gt;
+    &lt;/page&gt;
+&lt;/pages&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Now we can add the extra operations to our JSF page:
+		</fo:block><fo:block id="id4181422" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;h1&gt;
+    &lt;h:outputText rendered="#{!personHome.managed}" value="Create Person"/&gt;
+    &lt;h:outputText rendered="#{personHome.managed}" value="Edit Person"/&gt;
+&lt;/h1&gt;
+&lt;h:form&gt;
+    &lt;div&gt;First name: &lt;h:inputText value="#{person.firstName}"/&gt;&lt;/div&gt;
+    &lt;div&gt;Last name: &lt;h:inputText value="#{person.lastName}"/&gt;&lt;/div&gt;
+    &lt;div&gt;
+        &lt;h:commandButton value="Create Person" action="#{personHome.persist}" 
+                             rendered="#{!personHome.managed}"/&gt;
+        &lt;h:commandButton value="Update Person" action="#{personHome.update}" 
+                             rendered="#{personHome.managed}"/&gt;
+        &lt;h:commandButton value="Delete Person" action="#{personHome.remove}" 
+                             rendered="#{personHome.managed}"/&gt;
+    &lt;/div&gt;
+&lt;/h:form&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			When we link to the page with no request parameters, the page will be displayed as a <fo:inline font-style="italic">Create Person</fo:inline> page. When we provide a value for the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">personId</fo:inline> request parameter, it will be an <fo:inline font-style="italic">Edit Person</fo:inline> page.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Suppose we need to create <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Person</fo:inline> entries with their nationality initialized. We can do that easily, via configuration:
+		</fo:block><fo:block id="id2794156" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;factory name="person" 
+         value="#{personHome.instance}"/&gt;
+
+&lt;framework:entity-home name="personHome" 
+                       entity-class="eg.Person" 
+                       new-instance="#{newPerson}"/&gt;
+
+&lt;component name="newPerson" 
+           class="eg.Person"&gt;
+    &lt;property name="nationality"&gt;#{country}&lt;/property&gt;
+&lt;/component&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Or by extension:
+		</fo:block><fo:block id="id3917332" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Name("personHome")
+public class PersonHome extends EntityHome&lt;Person&gt; {
+    
+    @In Country country;
+    
+    @Factory("person")
+    public Person initPerson() { return getInstance(); }
+    
+    protected Person createInstance() {
+        return new Person(country);
+    }
+    
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Of course, the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Country</fo:inline> could be an object managed by another Home object, for example, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">CountryHome</fo:inline>.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			To add more sophisticated operations (association management, etc), we can just add methods to <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">PersonHome</fo:inline>.
+		</fo:block><fo:block id="id3929066" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Name("personHome")
+public class PersonHome extends EntityHome&lt;Person&gt; {
+    
+    @In Country country;
+    
+    @Factory("person")
+    public Person initPerson() { return getInstance(); }
+    
+    protected Person createInstance() {
+        return new Person(country);
+    }
+    
+    public void migrate()
+    {
+        getInstance().setCountry(country);
+        update();
+    }
+    
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The Home object automatically displays faces messages when an operation is successful. To customize these messages we can, again, use configuration:
+		</fo:block><fo:block id="id2703079" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;factory name="person" 
+         value="#{personHome.instance}"/&gt;
+
+&lt;framework:entity-home name="personHome"
+                       entity-class="eg.Person"
+                       new-instance="#{newPerson}"&gt;
+    &lt;framework:created-message&gt;New person #{person.firstName} #{person.lastName} created&lt;/framework:created-message&gt;
+    &lt;framework:deleted-message&gt;Person #{person.firstName} #{person.lastName} deleted&lt;/framework:deleted-message&gt;
+    &lt;framework:updated-message&gt;Person #{person.firstName} #{person.lastName} updated&lt;/framework:updated-message&gt;
+&lt;/framework:entity-home&gt;
+
+&lt;component name="newPerson" 
+           class="eg.Person"&gt;
+    &lt;property name="nationality"&gt;#{country}&lt;/property&gt;
+&lt;/component&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Or extension:
+		</fo:block><fo:block id="id2633918" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Name("personHome")
+public class PersonHome extends EntityHome&lt;Person&gt; {
+    
+    @In Country country;
+    
+    @Factory("person")
+    public Person initPerson() { return getInstance(); }
+    
+    protected Person createInstance() {
+        return new Person(country);
+    }
+    
+    protected String getCreatedMessage() { return "New person #{person.firstName} 
+      #{person.lastName} created"; }
+    protected String getUpdatedMessage() { return "Person #{person.firstName} 
+      #{person.lastName} updated"; }
+    protected String getDeletedMessage() { return "Person #{person.firstName} 
+      #{person.lastName} deleted"; }
+    
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			But the best way to specify the messages is to put them in a resource bundle known to Seam (the bundle named <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">messages</fo:inline>, by default).
+		</fo:block><fo:block id="id3915060" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">Person_created=New person #{person.firstName} #{person.lastName} created
+Person_deleted=Person #{person.firstName} #{person.lastName} deleted
+Person_updated=Person #{person.firstName} #{person.lastName} updated
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			This enables internationalization, and keeps your code and configuration clean of presentation concerns.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The final step is to add validation functionality to the page, using <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;s:validateAll&gt;</fo:inline> and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;s:decorate&gt;</fo:inline>, but I'll leave that for you to figure out.
+		</fo:block></fo:block><fo:block id="Seam_Reference_Guide-The_Seam_Application_Framework-Query_objects"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Query objects</fo:marker><fo:block color="#a70000" font-size="16pt">10.3. Query objects</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" sp!
 ace-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			If we need a list of all <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Person</fo:inline> instance in the database, we can use a Query object. For example:
+		</fo:block><fo:block id="id2791138" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;framework:entity-query name="people" 
+                        ejbql="select p from Person p"/&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			We can use it from a JSF page:
+		</fo:block><fo:block id="id2750146" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;h1&gt;List of people&lt;/h1&gt;
+&lt;h:dataTable value="#{people.resultList}" var="person"&gt;
+    &lt;h:column&gt;
+        &lt;s:link view="/editPerson.jsp" value="#{person.firstName} #{person.lastName}"&gt;
+            &lt;f:param name="personId" value="#{person.id}"/&gt;
+        &lt;/s:link&gt;
+    &lt;/h:column&gt;
+&lt;/h:dataTable&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			We probably need to support pagination:
+		</fo:block><fo:block id="id2768259" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;framework:entity-query name="people" 
+                        ejbql="select p from Person p" 
+                        order="lastName" 
+                        max-results="20"/&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			We'll use a page parameter to determine the page to display:
+		</fo:block><fo:block id="id3890188" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;pages&gt;
+    &lt;page view-id="/searchPerson.jsp"&gt;
+        &lt;param name="firstResult" value="#{people.firstResult}"/&gt;
+    &lt;/page&gt;
+&lt;/pages&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The JSF code for a pagination control is a bit verbose, but manageable:
+		</fo:block><fo:block id="id3725072" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;h1&gt;Search for people&lt;/h1&gt;
+&lt;h:dataTable value="#{people.resultList}" var="person"&gt;
+    &lt;h:column&gt;
+        &lt;s:link view="/editPerson.jsp" value="#{person.firstName} #{person.lastName}"&gt;
+            &lt;f:param name="personId" value="#{person.id}"/&gt;
+        &lt;/s:link&gt;
+    &lt;/h:column&gt;
+&lt;/h:dataTable&gt;
+
+&lt;s:link view="/search.xhtml" rendered="#{people.previousExists}" value="First Page"&gt;
+    &lt;f:param name="firstResult" value="0"/&gt;
+&lt;/s:link&gt;
+
+&lt;s:link view="/search.xhtml" rendered="#{people.previousExists}" value="Previous Page"&gt;
+    &lt;f:param name="firstResult" value="#{people.previousFirstResult}"/&gt;
+&lt;/s:link&gt;
+
+&lt;s:link view="/search.xhtml" rendered="#{people.nextExists}" value="Next Page"&gt;
+    &lt;f:param name="firstResult" value="#{people.nextFirstResult}"/&gt;
+&lt;/s:link&gt;
+
+&lt;s:link view="/search.xhtml" rendered="#{people.nextExists}" value="Last Page"&gt;
+    &lt;f:param name="firstResult" value="#{people.lastFirstResult}"/&gt;
+&lt;/s:link&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Real search screens let the user enter a bunch of optional search criteria to narrow the list of results returned. The Query object lets you specify optional "restrictions" to support this important usecase:
+		</fo:block><fo:block id="id3799477" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;component name="examplePerson" class="Person"/&gt;
+        
+&lt;framework:entity-query name="people" 
+                        ejbql="select p from Person p" 
+                        order="lastName" 
+                        max-results="20"&gt;
+    &lt;framework:restrictions&gt;
+        &lt;value&gt;lower(firstName) like lower( #{examplePerson.firstName} + '%' )&lt;/value&gt;
+        &lt;value&gt;lower(lastName) like lower( #{examplePerson.lastName} + '%' )&lt;/value&gt;
+    &lt;/framework:restrictions&gt;
+&lt;/framework:entity-query&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Notice the use of an <fo:inline font-family="Liberation Mono,monospace">example</fo:inline> object.
+		</fo:block><fo:block id="id3324621" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;h1&gt;Search for people&lt;/h1&gt;
+&lt;h:form&gt;
+    &lt;div&gt;First name: &lt;h:inputText value="#{examplePerson.firstName}"/&gt;&lt;/div&gt;
+    &lt;div&gt;Last name: &lt;h:inputText value="#{examplePerson.lastName}"/&gt;&lt;/div&gt;
+    &lt;div&gt;&lt;h:commandButton value="Search" action="/search.jsp"/&gt;&lt;/div&gt;
+&lt;/h:form&gt;
+
+&lt;h:dataTable value="#{people.resultList}" var="person"&gt;
+    &lt;h:column&gt;
+        &lt;s:link view="/editPerson.jsp" value="#{person.firstName} #{person.lastName}"&gt;
+            &lt;f:param name="personId" value="#{person.id}"/&gt;
+        &lt;/s:link&gt;
+    &lt;/h:column&gt;
+&lt;/h:dataTable&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The examples in this section have all shown reuse by configuration. However, reuse by extension is equally possible for Query objects.
+		</fo:block></fo:block><fo:block id="Seam_Reference_Guide-The_Seam_Application_Framework-Controller_objects"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Controller objects</fo:marker><fo:block color="#a70000" font-size="16pt">10.4. Controller objects</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.opt!
 imum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			A totally optional part of the Seam Application Framework is the class <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Controller</fo:inline> and its subclasses <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">EntityController</fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">HibernateEntityController</fo:inline> and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">BusinessProcessController</fo:inline>. These classes provide nothing more than some convenience methods for access to commonly used built-in components and methods of built-in components. They help save a few keystrokes (characters can add up!) and provide a great launchpad for new users to explore the rich functionality built in to Seam.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			For example, here is what <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">RegisterAction</fo:inline> from the Seam registration example would look like:
+		</fo:block><fo:block id="id2677164" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Stateless
+ at Name("register")
+public class RegisterAction extends EntityController implements Register
+{
+
+   @In private User user;
+   
+   public String register()
+   {
+      List existing = createQuery("select u.username from User u where u.username=:username")
+         .setParameter("username", user.getUsername())
+         .getResultList();
+      
+      if ( existing.size()==0 )
+      {
+         persist(user);
+         info("Registered new user #{user.username}");
+         return "/registered.jspx";
+      }
+      else
+      {
+         addFacesMessage("User #{user.username} already exists");
+         return null;
+      }
+   }
+
+}
+</fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="body" language="en" format="1" initial-page-number="auto-odd" force-page-count="end-on-even" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-al!
 ign="start" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always" font-weight="bold">Chapter 11.</fo:inline></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="propor!
 tional-column-width(1)"/><fo:table-body><fo:table-row block-pr!
 ogressio
n-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always"><fo:retrieve-marker retrieve-class-name="section.head.marker" retrieve-position="first-including-carryover" retrieve-boundary="page-sequence"/></fo:inline></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="propo!
 rtional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always" font-weight="bold">Chapter 11. Seam and JBoss Rules</fo:inline></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="1!
 00%" border-bottom-width="0.5pt" border-bottom-style="solid" b!
 order-bo
ttom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-footnote-separator"><fo:block><fo:leader color="black" leader-pattern="rule" leader-length="1in"/></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block font-family="Liberation San!
 s,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-conte!
 nt flow-name="xsl-region-after-odd"><fo:block font-family="Lib!
 eration 
Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-con!
 tent flow-name="xsl-region-after-even"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-ro!
 w></fo:table-body></fo:table></fo:block></fo:static-content><f!
 o:static
-content flow-name="xsl-region-after-blank"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:tabl!
 e-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:flow flow-name="xsl-region-body" start-indent="0pt" end-indent="0pt"><fo:block id="drools"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats"><fo:block margin-left="0pc"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" color="#a70000" background-color="white" font-size="24pt" font-weight="bold" text-align="left" padding-left="1em" padding-right="1em">Seam and JBoss Rules</fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Seam makes it easy to call JBoss Rules (Drools) rulebases from Seam components or jBPM process definitions.
+	</fo:block><fo:block id="id2837364"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Installing rules</fo:marker><fo:block color="#a70000" font-size="16pt">11.1. Installing rules</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-aft!
 er.minimum="0.8em" space-after.maximum="1.2em">
+			The first step is to make an instance of <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.drools.RuleBase</fo:inline> available in a Seam context variable. For testing purposes, Seam provides a built-in component that compiles a static set of rules from the classpath. You can install this component via <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">components.xml</fo:inline>:
+		</fo:block><fo:block id="id3716088" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;drools:rule-base name="policyPricingRules"&gt;
+    &lt;drools:rule-files&gt;
+        &lt;value&gt;policyPricingRules.drl&lt;/value&gt;
+    &lt;/drools:rule-files&gt;
+&lt;/drools:rule-base&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			This component compiles rules from a set of <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">.drl</fo:inline> files and caches an instance of <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.drools.RuleBase</fo:inline> in the Seam <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">APPLICATION</fo:inline> context. Note that it is quite likely that you will need to install multiple rule bases in a rule-driven application.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			If you want to use a Drools DSL, you also need to specify the DSL definition:
+		</fo:block><fo:block id="id3878444" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;drools:rule-base name="policyPricingRules" dsl-file="policyPricing.dsl"&gt;
+    &lt;drools:rule-files&gt;
+        &lt;value&gt;policyPricingRules.drl&lt;/value&gt;
+    &lt;/drools:rule-files&gt;
+&lt;/drools:rule-base&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			In most rules-driven applications, rules need to be dynamically deployable, so a production application will want to use a Drools RuleAgent to manage the RuleBase. The RuleAgent can connect to a Drools rule server (BRMS) or hot deploy rules packages from a local file repository. The RulesAgent-managed RuleBase is also configurable in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">components.xml</fo:inline>:
+		</fo:block><fo:block id="id3935389" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;drools:rule-agent name="insuranceRules" 
+                    configurationFile="/WEB-INF/deployedrules.properties" /&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The properties file contains properties specific to the RulesAgent. Here is an example configuration file from the Drools example distribution.
+		</fo:block><fo:block id="id4181457" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">newInstance=true
+url=http://localhost:8080/drools-jbrms/org.drools.brms.JBRMS/package/org.acme.insurance/fmeyer
+localCacheDir=/Users/fernandomeyer/projects/jbossrules/drools-examples/drools-examples-brms/cache
+poll=30
+name=insuranceconfig
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			It is also possible to configure the options on the component directly, bypassing the configuration file.
+		</fo:block><fo:block id="id3310164" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;drools:rule-agent name="insuranceRules"
+   url="http://localhost:8080/drools-jbrms/org.drools.brms.JBRMS/package/org.acme.insurance/fmeyer"
+   local-cache-dir="/Users/fernandomeyer/projects/jbossrules/drools-examples/drools-examples-brms/cache"
+   poll="30"
+   configuration-name="insuranceconfig" /&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Next, we need to make an instance of <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.drools.WorkingMemory</fo:inline> available to each conversation. (Each <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">WorkingMemory</fo:inline> accumulates facts relating to the current conversation.)
+		</fo:block><fo:block id="id3914800" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;drools:managed-working-memory name="policyPricingWorkingMemory" auto-create="true" rule-base="#{policyPricingRules}"/&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Notice that we gave the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">policyPricingWorkingMemory</fo:inline> a reference back to our rule base via the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">ruleBase</fo:inline> configuration property.
+		</fo:block></fo:block><fo:block id="id2768374"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Using rules from a Seam component</fo:marker><fo:block color="#a70000" font-size="16pt">11.2. Using rules from a Seam component</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maxim!
 um="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			We can now inject our <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">WorkingMemory</fo:inline> into any Seam component, assert facts, and fire rules:
+		</fo:block><fo:block id="id3797378" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@In WorkingMemory policyPricingWorkingMemory;
+
+ at In Policy policy;
+ at In Customer customer;
+
+public void pricePolicy() throws FactException
+{
+    policyPricingWorkingMemory.assertObject(policy);
+    policyPricingWorkingMemory.assertObject(customer);
+    policyPricingWorkingMemory.fireAllRules();
+}
+</fo:block></fo:block><fo:block id="id2755080"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Using rules from a jBPM process definition</fo:marker><fo:block color="#a70000" font-size="16pt">11.3. Using rules from a jBPM process definition</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" sp!
 ace-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			You can even allow a rule base to act as a jBPM action handler, decision handler, or assignment handler—in either a pageflow or business process definition.
+		</fo:block><fo:block id="id3856770" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;decision name="approval"&gt;
+         
+    &lt;handler class="org.jboss.seam.drools.DroolsDecisionHandler"&gt;
+        &lt;workingMemoryName&gt;orderApprovalRulesWorkingMemory&lt;/workingMemoryName&gt;
+        &lt;assertObjects&gt;
+            &lt;element&gt;#{customer}&lt;/element&gt;
+            &lt;element&gt;#{order}&lt;/element&gt;
+            &lt;element&gt;#{order.lineItems}&lt;/element&gt;
+        &lt;/assertObjects&gt;
+    &lt;/handler&gt;
+    
+    &lt;transition name="approved" to="ship"&gt;
+        &lt;action class="org.jboss.seam.drools.DroolsActionHandler"&gt;
+            &lt;workingMemoryName&gt;shippingRulesWorkingMemory&lt;/workingMemoryName&gt;
+            &lt;assertObjects&gt;
+                &lt;element&gt;#{customer}&lt;/element&gt;
+                &lt;element&gt;#{order}&lt;/element&gt;
+                &lt;element&gt;#{order.lineItems}&lt;/element&gt;
+            &lt;/assertObjects&gt;
+        &lt;/action&gt;
+    &lt;/transition&gt;
+    
+    &lt;transition name="rejected" to="cancelled"/&gt;
+    
+&lt;/decision&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;assertObjects&gt;</fo:inline> element specifies EL expressions that return an object or collection of objects to be asserted as facts into the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">WorkingMemory</fo:inline>.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			There is also support for using Drools for jBPM task assignments:
+		</fo:block><fo:block id="id2677248" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;task-node name="review"&gt;
+    &lt;task name="review" description="Review Order"&gt;
+        &lt;assignment handler="org.jboss.seam.drools.DroolsAssignmentHandler"&gt;
+            &lt;workingMemoryName&gt;orderApprovalRulesWorkingMemory&lt;/workingMemoryName&gt;
+            &lt;assertObjects&gt;
+                &lt;element&gt;#{actor}&lt;/element&gt;
+                &lt;element&gt;#{customer}&lt;/element&gt;
+                &lt;element&gt;#{order}&lt;/element&gt;
+                &lt;element&gt;#{order.lineItems}&lt;/element&gt;
+            &lt;/assertObjects&gt;
+        &lt;/assignment&gt;
+    &lt;/task&gt;
+    &lt;transition name="rejected" to="cancelled"/&gt;
+    &lt;transition name="approved" to="approved"/&gt;
+&lt;/task-node&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Certain objects are available to the rules as Drools globals, namely the jBPM <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Assignable</fo:inline>, as <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">assignable</fo:inline> and a Seam <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Decision</fo:inline> object, as <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">decision</fo:inline>. Rules which handle decisions should call <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">decision.setOutcome("result")</fo:inline> to determine the result of the decision. Rules which perform assignments should set the actor id using the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Assignable</fo:inline>.
+		</fo:block><fo:block id="id3916136" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">package org.jboss.seam.examples.shop
+
+import org.jboss.seam.drools.Decision
+
+global Decision decision
+
+rule "Approve Order For Loyal Customer"
+  when
+    Customer( loyaltyStatus == "GOLD" )
+    Order( totalAmount &lt;= 10000 )
+  then
+    decision.setOutcome("approved");
+end
+</fo:block><fo:block id="id3668993" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">package org.jboss.seam.examples.shop
+
+import org.jbpm.taskmgmt.exe.Assignable
+
+global Assignable assignable
+
+rule "Assign Review For Small Order"
+  when
+    Order( totalAmount &lt;= 100 )
+  then
+    assignable.setPooledActors( new String[] {"reviewers"} );
+end
+</fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="body" language="en" format="1" initial-page-number="auto-odd" force-page-count="end-on-even" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-al!
 ign="start" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always" font-weight="bold">Chapter 12.</fo:inline></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="propor!
 tional-column-width(1)"/><fo:table-body><fo:table-row block-pr!
 ogressio
n-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always"><fo:retrieve-marker retrieve-class-name="section.head.marker" retrieve-position="first-including-carryover" retrieve-boundary="page-sequence"/></fo:inline></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="propo!
 rtional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always" font-weight="bold">Chapter 12. Security</fo:inline></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-!
 bottom-width="0.5pt" border-bottom-style="solid" border-bottom!
 -color="
black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-footnote-separator"><fo:block><fo:leader color="black" leader-pattern="rule" leader-length="1in"/></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block font-family="Liberation Sans,sans-serif!
 ,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name!
 ="xsl-region-after-odd"><fo:block font-family="Liberation Sans!
 ,sans-se
rif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-na!
 me="xsl-region-after-even"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table!
 -body></fo:table></fo:block></fo:static-content><fo:static-con!
 tent flo
w-name="xsl-region-after-blank"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:t!
 able-body></fo:table></fo:block></fo:static-content><fo:flow flow-name="xsl-region-body" start-indent="0pt" end-indent="0pt"><fo:block id="Seam_Reference_Guide-Security"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats"><fo:block margin-left="0pc"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" color="#a70000" background-color="white" font-size="24pt" font-weight="bold" text-align="left" padding-left="1em" padding-right="1em">Security</fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The Seam Security API is an optional Seam feature that provides authentication and authorization features for securing both domain and page resources within your Seam project.
+	</fo:block><fo:block id="Seam_Reference_Guide-Security-Overview"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Overview</fo:marker><fo:block color="#a70000" font-size="16pt">12.1. Overview</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1!
 em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Seam Security provides two different modes of operation:
+	</fo:block><fo:list-block id="id2659154" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id4173530" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				<fo:inline font-style="italic">simplified mode</fo:inline> - this mode supports authentication services and simple role-based security checks.
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2769207" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				<fo:inline font-style="italic">advanced mode</fo:inline> - this mode supports all the same features as the simplified mode, plus it offers rule-based security checks using JBoss Rules.
+			</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block id="Seam_Reference_Guide-Overview-Which_mode_is_right_for_my_application"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Which mode is right for my application?</fo:marker><fo:block color="#a70000" font-size="14pt">12.1.1. Which mode is right for my application?</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" !
 xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		That all depends on the requirements of your application. If you have minimal security requirements, for example if you only wish to restrict certain pages and actions to users who are logged in, or who belong to a certain role, then the simplified mode will probably be sufficient. The advantages of this is a more simplified configuration, significantly less libraries to include, and a smaller memory footprint.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		If on the other hand, your application requires security checks based on contextual state or complex business rules, then you will require the features provided by the advanced mode.
+	</fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Security-Requirements"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Requirements</fo:marker><fo:block color="#a70000" font-size="16pt">12.2. Requirements</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maxi!
 mum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		If using the advanced mode features of Seam Security, the following jar files are required to be configured as modules in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">application.xml</fo:inline>. If you are using Seam Security in simplified mode, these are <fo:inline font-style="italic">not</fo:inline> required:
+	</fo:block><fo:list-block id="id3757230" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3888097" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				drools-compiler-3.0.5.jar
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3935177" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				drools-core-3.0.5.jar
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3931578" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				commons-jci-core-1.0-406301.jar
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3799977" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				commons-jci-janino-2.4.3.jar
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3466861" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				commons-lang-2.1.jar
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3910478" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				janino-2.4.3.jar
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3799462" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				stringtemplate-2.3b6.jar
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id4181416" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				antlr-2.7.6.jar
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3715661" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				antlr-3.0ea8.jar
+			</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		For web-based security, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">jboss-seam-ui.jar</fo:inline> must also be included in the application's war file. Also, to make use of the security EL functions, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">SeamFaceletViewHandler</fo:inline> must be used. Configure it in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">faces-config.xml</fo:inline> like this:
+	</fo:block><fo:block id="id3577934" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;application&gt;
+    &lt;view-handler&gt;org.jboss.seam.ui.facelet.SeamFaceletViewHandler&lt;/view-handler&gt;
+&lt;/application&gt;
+</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Security-Authentication"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Authentication</fo:marker><fo:block color="#a70000" font-size="16pt">12.3. Authentication</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0!
 .1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The authentication features provided by Seam Security are built upon JAAS (Java Authentication and Authorization Service), and as such provide a robust and highly configurable API for handling user authentication. However, for less complex authentication requirements Seam offers a much more simplified method of authentication that hides the complexity of JAAS.
+	</fo:block><fo:block id="Seam_Reference_Guide-Authentication-Configuration"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Configuration</fo:marker><fo:block color="#a70000" font-size="14pt">12.3.1. Configuration</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em"!
  space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The simplified authentication method uses a built-in JAAS login module, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">SeamLoginModule</fo:inline>, which delegates authentication to one of your own Seam components. This login module is already configured inside Seam as part of a default application policy and as such does not require any additional configuration files. It allows you to write an authentication method using the entity classes that are provided by your own application. Configuring this simplified form of authentication requires the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">identity</fo:inline> component to be configured in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">components.xml</fo:inline>:
+	</fo:block><fo:block id="id3624583" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;components xmlns="http://jboss.com/products/seam/components"
+            xmlns:core="http://jboss.com/products/seam/core"
+            xmlns:security="http://jboss.com/products/seam/security"
+            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+            xsi:schemaLocation=
+                "http://jboss.com/products/seam/core http://jboss.com/products/seam/core-1.2.xsd 
+                 http://jboss.com/products/seam/components http://jboss.com/products/seam/components-1.2.xsd
+                 http://jboss.com/products/seam/drools http://jboss.com/products/seam/drools-1.2.xsd"
+                 http://jboss.com/products/seam/security http://jboss.com/products/seam/security-1.2.xsd"&gt;                
+        
+    &lt;security:identity authenticate-method="#{authenticator.authenticate}"/&gt;
+    
+&lt;/components&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		If you wish to use the advanced security features such as rule-based permission checks, all you need to do is include the Drools (JBoss Rules) jars in your classpath, and add some additional configuration, described later.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The EL expression <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">#{authenticator.authenticate}</fo:inline> is a method binding indicating that the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">authenticate</fo:inline> method of the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">authenticator</fo:inline> component will be used to authenticate the user.
+	</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Authentication-Writing_an_authentication_method"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Writing an authentication method</fo:marker><fo:block color="#a70000" font-size="14pt">12.3.2. Writing an authentication method</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minim!
 um="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">authenticate-method</fo:inline> property specified for <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">identity</fo:inline> in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">components.xml</fo:inline> specifies which method will be used by <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">SeamLoginModule</fo:inline> to authenticate users. This method takes no parameters, and is expected to return a boolean indicating whether authentication is successful or not. The user's username and password can be obtained from <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Identity.instance().getUsername()</fo:inline> and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Identity.instance().getPassword()</fo:inline>, respectively. Any roles that the user is a member of should be assigned using <fo:inline f!
 ont-weight="bold" font-family="Liberation Mono,monospace">Identity.instance().addRole()</fo:inline>. Here is a complete example of an authentication method inside a JavaBean component:
+	</fo:block><fo:block id="id3388340" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Name("authenticator")
+public class Authenticator {
+   @In EntityManager entityManager;
+   
+   public boolean authenticate() {
+      try
+      {
+         User user = (User) entityManager.createQuery(
+            "from User where username = :username and password = :password")
+            .setParameter("username", Identity.instance().getUsername())
+            .setParameter("password", Identity.instance().getPassword())
+            .getSingleResult();
+
+         if (user.getRoles() != null)
+         {
+            for (UserRole mr : user.getRoles())
+               Identity.instance().addRole(mr.getName());
+         }
+
+         return true;
+      }
+      catch (NoResultException ex)
+      {
+         FacesMessages.instance().add("Invalid username/password");
+         return false;
+      }
+      
+   }
+   
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		In the above example, both <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">User</fo:inline> and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">UserRole</fo:inline> are application-specific entity beans. The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">roles</fo:inline> parameter is populated with the roles that the user is a member of, which should be added to the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Set</fo:inline> as literal string values, for example, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">admin</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">user</fo:inline>. In this case, if the user record is not found and a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">NoResultException</fo:inline> thrown, the authentication method returns <fo:inline font-weight="bold" font-family="Liberation!
  Mono,monospace">false</fo:inline> to indicate the authentication failed.
+	</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Authentication-Writing_a_login_form"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Writing a login form</fo:marker><fo:block color="#a70000" font-size="14pt">12.3.3. Writing a login form</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1!
 em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Identity</fo:inline> component provides both <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">username</fo:inline> and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">password</fo:inline> properties, catering for the most common authentication scenario. These properties can be bound directly to the username and password fields on a login form. Once these properties are set, calling the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">identity.login()</fo:inline> method will authenticate the user using the provided credentials. Here is an example of a simple login form:
+	</fo:block><fo:block id="id3940253" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;div&gt;
+    &lt;h:outputLabel for="name" value="Username"/&gt;
+    &lt;h:inputText id="name" value="#{identity.username}"/&gt;
+&lt;/div&gt;
+
+&lt;div&gt;
+    &lt;h:outputLabel for="password" value="Password"/&gt;
+    &lt;h:inputSecret id="password" value="#{identity.password}"/&gt;
+&lt;/div&gt;
+
+&lt;div&gt;
+    &lt;h:commandButton value="Login" action="#{identity.login}"/&gt;
+&lt;/div&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Similarly, logging out the user is done by calling <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">#{identity.logout}</fo:inline>. Calling this action will clear the security state of the currently authenticated user.
+	</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Authentication-Simplified_Configuration___Summary"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Simplified Configuration - Summary</fo:marker><fo:block color="#a70000" font-size="14pt">12.3.4. Simplified Configuration - Summary</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before!
 .minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		So to sum up, there are the three easy steps to configure authentication:
+	</fo:block><fo:list-block id="id3449835" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3449982" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				Configure an authentication method in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">components.xml</fo:inline>.
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2755638" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				Write an authentication method.
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3743741" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				Write a login form so that the user can authenticate.
+			</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block id="Seam_Reference_Guide-Authentication-Handling_Security_Exceptions"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Handling Security Exceptions</fo:marker><fo:block color="#a70000" font-size="14pt">12.3.5. Handling Security Exceptions</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http:!
 //www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		To prevent users from receiving the default error page in response to a security error, it is recommended that <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">pages.xml</fo:inline> is configured to redirect security errors to a more meaningful page. The two main types of exceptions thrown by the security API are:
+	</fo:block><fo:list-block id="id3878447" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3715784" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">NotLoggedInException</fo:inline> - This exception is thrown if the user attempts to access a restricted action or page when they are not logged in.
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3940284" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">AuthorizationException</fo:inline> - This exception is only thrown if the user is already logged in, and they have attempted to access a restricted action or page for which they do not have the necessary privileges.
+			</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		In the case of a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">NotLoggedInException</fo:inline>, it is recommended that the user is redirected to either a login or registration page so that they can log in. For an <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">AuthorizationException</fo:inline>, it may be useful to redirect the user to an error page. Here is an example of a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">pages.xml</fo:inline> file that redirects both of these security exceptions:
+	</fo:block><fo:block id="id3850396" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;pages&gt;
+
+    ...
+    
+    &lt;exception class="org.jboss.seam.security.NotLoggedInException"&gt;
+        &lt;redirect view-id="/login.xhtml"&gt;
+            &lt;message&gt;You must be logged in to perform this action&lt;/message&gt;
+        &lt;/redirect&gt;
+    &lt;/exception&gt;
+    
+    &lt;exception class="org.jboss.seam.security.AuthorizationException"&gt;
+        &lt;end-conversation/&gt;
+        &lt;redirect view-id="/security_error.xhtml"&gt;
+            &lt;message&gt;
+                              You do not have the necessary security privileges to perform this action.
+            &lt;/message&gt;
+        &lt;/redirect&gt;
+    &lt;/exception&gt;
+  
+&lt;/pages&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Most web applications require even more sophisticated handling of login redirection, so Seam includes some special functionality for handling this problem.
+	</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Authentication-Login_Redirection"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Login Redirection</fo:marker><fo:block color="#a70000" font-size="14pt">12.3.6. Login Redirection</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space!
 -before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		You can ask Seam to redirect the user to a login screen when an unauthenticated user tries to access a particular view (or wildcarded view id) as follows:
+	</fo:block><fo:block id="id3850431" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;pages login-view-id="/login.xhtml"&gt;
+
+    &lt;page view-id="/members/*" login-required="true"/&gt;
+    
+    ...
+    
+&lt;/pages&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		(This is less of a blunt instrument than the exception handler shown above, but should probably be used in conjunction with it.)
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		After the user logs in, we want to automatically send them back where they came from, so they can retry the action that required logging in. If you add the following event listeners to <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">components.xml</fo:inline>, attempts to access a restricted view while not logged in will be remembered, so that upon the user successfully logging in they will be redirected to the originally requested view, with any page parameters that existed in the original request.
+	</fo:block><fo:block id="id3850458" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;event type="org.jboss.seam.notLoggedIn"&gt;
+    &lt;action expression="#{redirect.captureCurrentView}"/&gt;
+&lt;/event&gt;
+    
+&lt;event type="org.jboss.seam.postAuthenticate"&gt;
+    &lt;action expression="#{redirect.returnToCapturedView}"/&gt;
+&lt;/event&gt;
+</fo:block><fo:block id="id3850466" color="white" background-color="#8e9f00" space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1em" padding-bottom="12pt" padding-top="12pt" margin-left="0pc"><fo:list-block provisional-distance-between-starts="36pt + 18pt" provisional-label-separation="18pt"><fo:list-item><fo:list-item-label end-indent="label-end()"><fo:block><fo:external-graphic width="auto" height="auto" content-width="36pt" src="url(Common_Content/images/note.svg)"/></fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block font-size="13pt" color="white" font-weight="bold" hyphenate="true" keep-with-next.within-column="always">Note</fo:block><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum!
 ="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Login redirection is implemented as a conversation-scoped mechanism, so do not end the conversation in your <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">authenticate()</fo:inline> method.
+		</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Authentication-Advanced_Authentication_Features"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Advanced Authentication Features</fo:marker><fo:block color="#a70000" font-size="14pt">12.3.7. Advanced Authentication Features</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transit!
 ional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		This section explores some of the advanced features provided by the security API for addressing more complex security requirements.
+	</fo:block><fo:block id="Seam_Reference_Guide-Advanced_Authentication_Features-Using_your_containers_JAAS_configuration"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:block color="#a70000" font-size="13pt">12.3.7.1. Using your container's JAAS configuration</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" !
 space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		If you would rather not use the simplified JAAS configuration provided by the Seam Security API, you may instead delegate to the default system JAAS configuration by providing a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">jaasConfigName</fo:inline> property in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">components.xml</fo:inline>. For example, if you are using JBoss AS and wish to use the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">other</fo:inline> policy (which uses the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">UsersRolesLoginModule</fo:inline> login module provided by JBoss AS), then the entry in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">components.xml</fo:inline> would look like this:
+	</fo:block><fo:block id="id4180619" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;security:identity authenticate-method="#{authenticator.authenticate}" 
+                      jaas-config-name="other"/&gt;
+</fo:block></fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Security-Error_Messages"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Error Messages</fo:marker><fo:block color="#a70000" font-size="16pt">12.4. Error Messages</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" s!
 pace-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The security API produces a number of default faces messages for various security-related events. The following table lists the message keys that can be used to override these messages by specifying them in a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">message.properties</fo:inline> resource file.
+	</fo:block><fo:block id="Seam_Reference_Guide-Error_Messages-Security_Message_Keys" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto"><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.3pt" border-end-width="0.3pt" border-top-width="0.3pt" border-bottom-width="0.3pt" border-start-color="#dc9f2e" border-end-color="#dc9f2e" border-top-color="#dc9f2e" border-bottom-color="#dc9f2e" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="25%"/><fo:table-column column-number="2" column-width="75%"/><fo:table-body xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-left="4pt" padding-r!
 ight="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" border-end-width="0.15pt" border-end-style="solid" border-end-color="#dc9f2e"><fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.loginSuccessful</fo:inline>
+						</fo:block>
+					</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e"><fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							This message is produced when a user successfully logs in via the security API.
+						</fo:block>
+					</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" border-end-width="0.15pt" border-end-style="solid" border-end-color="#dc9f2e"><fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.loginFailed</fo:inline>
+						</fo:block>
+					</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e"><fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							This message is produced when the login process fails, either because the user provided an incorrect username or password, or because authentication failed in some other way.
+						</fo:block>
+					</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-end-width="0.15pt" border-end-style="solid" border-end-color="#dc9f2e"><fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.NotLoggedIn</fo:inline>
+						</fo:block>
+					</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt"><fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							This message is produced when a user attempts to perform an action or access a page that requires a security check, and the user is not currently authenticated.
+						</fo:block>
+					</fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table><fo:block font-weight="normal" font-size="10pt" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" color="#a70000" background-color="white" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-previous.within-column="always">Table 12.1. Security Message Keys</fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Security-Authorization"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0!
 .1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Authorization</fo:marker><fo:block color="#a70000" font-size="16pt">12.5. Authorization</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		There are a number of authorization features provided by the Seam Security API for securing access to components, component methods, and pages. This section describes each of these. An important thing to note is that if you wish to use any of the advanced features (such as rule-based permissions) then your <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">components.xml</fo:inline> must be configured to support this - see the Configuration section above.
+	</fo:block><fo:block id="Seam_Reference_Guide-Authorization-Core_concepts"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Core concepts</fo:marker><fo:block color="#a70000" font-size="14pt">12.5.1. Core concepts</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" !
 space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Each of the authorization mechanisms provided by the Seam Security API are built upon the concept of a user being granted roles and/or permissions. A role is a <fo:inline font-style="italic">group</fo:inline>, or <fo:inline font-style="italic">type</fo:inline>, of user that may have been granted certain privileges for performing one or more specific actions within an application. A permission on the other hand is a privilege (sometimes once-off) for performing a single, specific action. It is entirely possible to build an application using nothing but permissions, however roles offer a higher level of convenience when granting privileges to groups of users.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Roles are simple, consisting of only a name such as <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">admin</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">user</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">customer</fo:inline>, etc. Permissions consist of both a name and an action, and are represented within this documentation in the form <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">name:action</fo:inline>, for example <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">customer:delete</fo:inline>, or <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">customer:insert</fo:inline>.
+	</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Authorization-Securing_components"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Securing components</fo:marker><fo:block color="#a70000" font-size="14pt">12.5.2. Securing components</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" !
 space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Let us start by examining the simplest form of authorization, component security, starting with the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Restrict</fo:inline> annotation.
+	</fo:block><fo:block id="Seam_Reference_Guide-Securing_components-The_Restrict_annotation"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:block color="#a70000" font-size="13pt">12.5.2.1. The @Restrict annotation</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="!
 0.8em" space-after.maximum="1.2em">
+		Seam components may be secured either at the method or the class level, using the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Restrict</fo:inline> annotation. If both a method and it's declaring class are annotated with <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Restrict</fo:inline>, the method restriction will take precedence (and the class restriction will not apply). If a method invocation fails a security check, then an exception will be thrown as per the contract for <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Identity.checkRestriction()</fo:inline> (see Inline Restrictions). A <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Restrict</fo:inline> on just the component class itself is equivalent to adding <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Restrict</fo:inline> to each of its methods.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		An empty <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Restrict</fo:inline> implies a permission check of <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">componentName:methodName</fo:inline>. Take for example the following component method:
+	</fo:block><fo:block id="id2659478" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Name("account")
+public class AccountAction {
+    @Restrict public void delete() {
+      ...
+    }
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		In this example, the implied permission required to call the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">delete()</fo:inline> method is <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">account:delete</fo:inline>. The equivalent of this would be to write <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Restrict("#{s:hasPermission('account','delete',null)}")</fo:inline>. Now let's look at another example:
+	</fo:block><fo:block id="id2659502" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Restrict @Name("account")
+public class AccountAction {
+    public void insert() {
+      ...
+    }
+    @Restrict("#{s:hasRole('admin')}") 
+    public void delete() {
+      ...
+    }
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		This time, the component class itself is annotated with <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Restrict</fo:inline>. This means that any methods without an overriding <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Restrict</fo:inline> annotation require an implicit permission check. In the case of this example, the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">insert()</fo:inline> method requires a permission of <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">account:insert</fo:inline>, while the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">delete()</fo:inline> method requires that the user is a member of the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">admin</fo:inline> role.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Before we go any further, let us address the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">#{s:hasRole()}</fo:inline> expression seen in the above example. Both <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">s:hasRole</fo:inline> and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">s:hasPermission</fo:inline> are EL functions, which delegate to the correspondingly named methods of the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Identity</fo:inline> class. These functions can be used within any EL expression throughout the entirety of the security API.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Being an EL expression, the value of the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Restrict</fo:inline> annotation may reference any objects that exist within a Seam context. This is extremely useful when performing permission checks for a specific object instance. Look at this example:
+	</fo:block><fo:block id="id3322875" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Name("account")
+public class AccountAction {
+    @In Account selectedAccount;
+    @Restrict("#{s:hasPermission('account','modify',selectedAccount)}")
+    public void modify() {
+        selectedAccount.modify();
+    }
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The interesting thing to note from this example is the reference to <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">selectedAccount</fo:inline> seen within the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">hasPermission()</fo:inline> function call. The value of this variable will be looked up from within the Seam context, and passed to the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">hasPermission()</fo:inline> method in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Identity</fo:inline>, which in this case can then determine if the user has the required permission for modifying the specified <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Account</fo:inline> object.
+	</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Securing_components-Inline_restrictions"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:block color="#a70000" font-size="13pt">12.5.2.2. Inline restrictions</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum!
 ="0.8em" space-after.maximum="1.2em">
+		Sometimes it might be desirable to perform a security check in code, without using the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Restrict</fo:inline> annotation. In this situation, simply use <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Identity.checkRestriction()</fo:inline> to evaluate a security expression, like this:
+	</fo:block><fo:block id="id3322938" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">public void deleteCustomer() {
+    Identity.instance().checkRestriction("#{s:hasPermission('customer','delete',
+      selectedCustomer)}");
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		If the expression specified doesn't evaluate to <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">true</fo:inline>, either
+	</fo:block><fo:list-block id="id3322953" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3322956" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				if the user is not logged in, a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">NotLoggedInException</fo:inline> exception is thrown or
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3322968" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				if the user is logged in, an <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">AuthorizationException</fo:inline> exception is thrown.
+			</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		It is also possible to call the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">hasRole()</fo:inline> and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">hasPermission()</fo:inline> methods directly from Java code:
+	</fo:block><fo:block id="id3322992" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">if (!Identity.instance().hasRole("admin"))
+     throw new AuthorizationException("Must be admin to perform this action");
+
+if (!Identity.instance().hasPermission("customer", "create", null))
+     throw new AuthorizationException("You may not create new customers");
+</fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Authorization-Security_in_the_user_interface"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Security in the user interface</fo:marker><fo:block color="#a70000" font-size="14pt">12.5.3. Security in the user interface</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.mi!
 nimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		One indication of a well designed user interface is that the user is not presented with options for which they do not have the necessary privileges to use. Seam Security allows conditional rendering of either 1) sections of a page or 2) individual controls, based upon the privileges of the user, using the very same EL expressions that are used for component security.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Let us take a look at some examples of interface security. First of all, let us pretend that we have a login form that should only be rendered if the user is not already logged in. Using the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">identity.isLoggedIn()</fo:inline> property, we can write this:
+	</fo:block><fo:block id="id3323032" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;h:form class="loginForm" rendered="#{not identity.loggedIn}"&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		If the user is not logged in, then the login form will be rendered - very straight forward so far. Now let us pretend there is a menu on the page that contains some actions which should only be accessible to users in the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">manager</fo:inline> role. Here is one way that these could be written:
+	</fo:block><fo:block id="id3323048" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;h:outputLink action="#{reports.listManagerReports}" rendered="#{s:hasRole('manager')}"&gt;
+    Manager Reports
+&lt;/h:outputLink&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		This is also quite straight forward. If the user is not a member of the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">manager</fo:inline> role, then the outputLink will not be rendered. The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">rendered</fo:inline> attribute can generally be used on the control itself, or on a surrounding <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;s:div&gt;</fo:inline> or <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;s:span&gt;</fo:inline> control.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Now for something more complex. Let us say you have a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">h:dataTable</fo:inline> control on a page listing records for which you may or may not wish to render action links depending on the user's privileges. The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">s:hasPermission</fo:inline> EL function allows us to pass in an object parameter which can be used to determine whether the user has the requested permission for that object or not. Here is how a dataTable with secured links might look:
+	</fo:block><fo:block id="id3180975" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;h:dataTable value="#{clients}" var="cl"&gt;
+    &lt;h:column&gt;
+        &lt;f:facet name="header"&gt;Name&lt;/f:facet&gt;
+        #{cl.name}
+    &lt;/h:column&gt;
+    &lt;h:column&gt;
+        &lt;f:facet name="header"&gt;City&lt;/f:facet&gt;
+        #{cl.city}
+    &lt;/h:column&gt;   
+    &lt;h:column&gt;
+        &lt;f:facet name="header"&gt;Action&lt;/f:facet&gt;
+        &lt;s:link value="Modify Client" action="#{clientAction.modify}"
+                rendered="#{s:hasPermission('client','modify',cl)"/&gt;
+        &lt;s:link value="Delete Client" action="#{clientAction.delete}"
+                rendered="#{s:hasPermission('client','delete',cl)"/&gt;
+    &lt;/h:column&gt;
+&lt;/h:dataTable&gt;
+</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Authorization-Securing_pages"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Securing pages</fo:marker><fo:block color="#a70000" font-size="14pt">12.5.4. Securing pages</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.max!
 imum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Page security requires that the application is using a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">pages.xml</fo:inline> file, however is extremely simple to configure. Simply include a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;restrict/&gt;</fo:inline> element within the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">page</fo:inline> elements that you wish to secure. By default, if a value is not provided for the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">restrict</fo:inline> element, an implied permission of <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">{viewId}:render</fo:inline> will be checked for whenever accessing that page. Otherwise the value will be evaluated as a standard security expression. Here is a couple of examples:
+	</fo:block><fo:block id="id3181030" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;page view-id="/settings.xhtml"&gt;
+    &lt;restrict/&gt;
+&lt;/page&gt;
+        
+&lt;page view-id="/reports.xhtml"&gt;    
+    &lt;restrict&gt;#{s:hasRole('admin')}&lt;/restrict&gt;
+&lt;/page&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		In the above example, the first page has an implied permission restriction of <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">/settings.xhtml:render</fo:inline>, while the second one checks that the user is a member of the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">admin</fo:inline> role.
+	</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Authorization-Securing_Entities"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Securing Entities</fo:marker><fo:block color="#a70000" font-size="14pt">12.5.5. Securing Entities</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-!
 before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Seam security also makes it possible to apply security restrictions to read, insert, update and delete actions for entities.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		To secure all actions for an entity class, add a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Restrict</fo:inline> annotation on the class itself:
+	</fo:block><fo:block id="id3181075" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Entity
+ at Name("customer")
+ at Restrict
+public class Customer {
+  ...
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		If no expression is specified in the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Restrict</fo:inline> annotation, the default security check that is performed is a permission check of <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">entityName:action</fo:inline>, where <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">entityName</fo:inline> is the Seam component name of the entity (or the fully-qualified class name if no @Name is specified), and the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">action</fo:inline> is either <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">read</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">insert</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">update</fo:inline> or <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">delete</fo:inline>.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		It is also possible to only restrict certain actions, by placing a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Restrict</fo:inline> annotation on the relevent entity lifecycle method (annotated as follows):
+	</fo:block><fo:list-block id="id3181130" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3181133" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@PostLoad</fo:inline> - Called after an entity instance is loaded from the database. Use this method to configure a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">read</fo:inline> permission.
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3181150" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@PrePersist</fo:inline> - Called before a new instance of the entity is inserted. Use this method to configure an <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">insert</fo:inline> permission.
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3181168" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@PreUpdate</fo:inline> - Called before an entity is updated. Use this method to configure an <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">update</fo:inline> permission.
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3181185" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@PreRemove</fo:inline> - Called before an entity is deleted. Use this method to configure a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">delete</fo:inline> permission.
+			</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Here is an example of how an entity would be configured to perform a security check for any <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">insert</fo:inline> operations. Please note that the method is not required to do anything, the only important thing in regard to security is how it is annotated:
+	</fo:block><fo:block id="id3725442" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+  @PrePersist @Restrict
+  public void prePersist() {}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		And here is an example of an entity permission rule that checks if the authenticated user is allowed to insert a new <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">MemberBlog</fo:inline> record (from the seamspace example). The entity for which the security check is being made is automatically asserted into the working memory (in this case <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">MemberBlog</fo:inline>):
+	</fo:block><fo:block id="id3725463" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">rule InsertMemberBlog
+  no-loop
+  activation-group "permissions"  
+when
+  check: PermissionCheck(name == "memberBlog", action == "insert", granted == false)
+  Principal(principalName : name)
+  MemberBlog(member : member -&gt; (member.getUsername().equals(principalName)))
+then
+  check.grant();
+end;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		This rule will grant the permission <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">memberBlog:insert</fo:inline> if the currently authenticated user (indicated by the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Principal</fo:inline> fact) has the same name as the member for which the blog entry is being created. The "<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">name : name</fo:inline>" structure that can be seen in the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Principal</fo:inline> fact (and other places) is a variable binding - it binds the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">name</fo:inline> property of the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Principal</fo:inline> to a variable called <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">name</fo:inline>. Variable bindings allow the valu!
 e to be referred to in other places, such as the following line which compares the member's username to the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Principal</fo:inline> name. For more details, please refer to the JBoss Rules documentation.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Finally, we need to install a listener class that integrates Seam security with your JPA provider.
+	</fo:block><fo:block id="Seam_Reference_Guide-Securing_Entities-Entity_security_with_JPA"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:block color="#a70000" font-size="13pt">12.5.5.1. Entity security with JPA</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0!
 .8em" space-after.maximum="1.2em">
+		Security checks for EJB3 entity beans are performed with an <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">EntityListener</fo:inline>. You can install this listener by using the following <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">META-INF/orm.xml</fo:inline> file:
+	</fo:block><fo:block id="id3725546" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
+                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+                 xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm 
+                                            http://java.sun.com/xml/ns/persistence/orm_1_0.xsd"
+                 version="1.0"&gt;
+                 
+    &lt;persistence-unit-metadata&gt;
+        &lt;persistence-unit-defaults&gt;
+            &lt;entity-listeners&gt;
+                &lt;entity-listener class="org.jboss.seam.security.EntitySecurityListener"/&gt;
+            &lt;/entity-listeners&gt;
+        &lt;/persistence-unit-defaults&gt;
+    &lt;/persistence-unit-metadata&gt;
+    
+&lt;/entity-mappings&gt;
+</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Securing_Entities-Entity_security_with_Hibernate"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:block color="#a70000" font-size="13pt">12.5.5.2. Entity security with Hibernate</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" !
 space-after.minimum="0.8em" space-after.maximum="1.2em">
+		If you are using a Hibernate <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">SessionFactory</fo:inline> configured via Seam, you do not need to do anything special to use entity security.
+	</fo:block></fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Security-Writing_Security_Rules"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Writing Security Rules</fo:marker><fo:block color="#a70000" font-size="16pt">12.6. Writing Security Rules</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space!
 -before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Up to this point there has been a lot of mention of permissions, but no information about how permissions are actually defined or granted. This section completes the picture, by explaining how permission checks are processed, and how to implement permission checks for a Seam application.
+	</fo:block><fo:block id="Seam_Reference_Guide-Writing_Security_Rules-Permissions_Overview"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Permissions Overview</fo:marker><fo:block color="#a70000" font-size="14pt">12.6.1. Permissions Overview</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em"!
  space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		So how does the security API know whether a user has the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">customer:modify</fo:inline> permission for a specific customer? Seam Security provides quite a novel method for determining user permissions, based on JBoss Rules. A couple of the advantages of using a rule engine are 1) a centralized location for the business logic that is behind each user permission, and 2) speed - JBoss Rules uses very efficient algorithms for evaluating large numbers of complex rules involving multiple conditions.
+	</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Writing_Security_Rules-Configuring_a_rules_file"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Configuring a rules file</fo:marker><fo:block color="#a70000" font-size="14pt">12.6.2. Configuring a rules file</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space!
 -before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Seam Security expects to find a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">RuleBase</fo:inline> component called <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">securityRules</fo:inline> which it uses to evaluate permission checks. This is configured in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">components.xml</fo:inline> as follows:
+	</fo:block><fo:block id="id3725658" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;components xmlns="http://jboss.com/products/seam/components"
+            xmlns:core="http://jboss.com/products/seam/core"
+            xmlns:security="http://jboss.com/products/seam/security"
+            xmlns:drools="http://jboss.com/products/seam/drools"
+            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+            xsi:schemaLocation=
+                "http://jboss.com/products/seam/core 
+                                              http://jboss.com/products/seam/core-1.2.xsd 
+                 http://jboss.com/products/seam/components 
+                                              http://jboss.com/products/seam/components-1.2.xsd
+                 http://jboss.com/products/seam/drools 
+                                              http://jboss.com/products/seam/drools-1.2.xsd"
+                 http://jboss.com/products/seam/security 
+                                              http://jboss.com/products/seam/security-1.2.xsd"&gt;                 
+        
+   &lt;drools:rule-base name="securityRules"&gt;
+       &lt;drools:rule-files&gt;
+           &lt;value&gt;/META-INF/security.drl&lt;/value&gt;
+       &lt;/drools:rule-files&gt;
+   &lt;/drools:rule-base&gt;    
+   
+&lt;/components&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Once the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">RuleBase</fo:inline> component is configured, it is time to write the security rules.
+	</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Writing_Security_Rules-Creating_a_security_rules_file"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Creating a security rules file</fo:marker><fo:block color="#a70000" font-size="14pt">12.6.3. Creating a security rules file</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.min!
 imum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		For this step you need to create a file called <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">security.drl</fo:inline> in the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">/META-INF</fo:inline> directory of your application's jar file. In actual fact this file can be called anything you want, and exist in any location as long as it is configured appropriately in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">components.xml</fo:inline>.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		So what should the security rules file contain? At this stage it might be a good idea to at least skim through the JBoss Rules documentation, however to get started here is an extremely simple example:
+	</fo:block><fo:block id="id2656671" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">package MyApplicationPermissions;
+
+import org.jboss.seam.security.PermissionCheck;
+import org.jboss.seam.security.Role;
+
+rule CanUserDeleteCustomers
+when
+  c: PermissionCheck(name == "customer", action == "delete")
+  Role(name == "admin")
+then
+  c.grant();
+end;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Let us break this down. The first thing we see is the package declaration. A package in JBoss Rules is essentially a collection of rules. The package name can be anything you want - it does not relate to anything else outside the scope of the rule base.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The next thing we can notice is a couple of import statements for the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">PermissionCheck</fo:inline> and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Role</fo:inline> classes. These imports inform the rules engine that we will be referencing these classes within our rules.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Finally we have the code for the rule. Each rule within a package should be given a unique name (usually describing the purpose of the rule). In this case our rule is called <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">CanUserDeleteCustomers</fo:inline> and will be used to check whether a user is allowed to delete a customer record.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Looking at the body of the rule definition we can notice two distinct sections. Rules have what is known as a left hand side (LHS) and a right hand side (RHS). The LHS consists of the conditional part of the rule, i.e. a list of conditions which must be satisfied for the rule to fire. The LHS is represented by the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">when</fo:inline> section. The RHS is the consequence, or action section of the rule that will only be fired if all of the conditions in the LHS are met. The RHS is represented by the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">then</fo:inline> section. The end of the rule is denoted by the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">end;</fo:inline> line.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		If we look at the LHS of the rule, we see two conditions listed there. Let us examine the first condition:
+	</fo:block><fo:block id="id2656745" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">c: PermissionCheck(name == "customer", action == "delete")
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		In plain english, this condition is stating that there must exist a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">PermissionCheck</fo:inline> object with a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">name</fo:inline> property equal to "customer", and an <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">action</fo:inline> property equal to "delete" within the working memory. What is the working memory? It is a session-scoped object that contains the contextual information that is required by the rules engine to make a decision about a permission check. Each time the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">hasPermission()</fo:inline> method is called, a temporary <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">PermissionCheck</fo:inline> object, or <fo:inline font-style="italic">Fact</fo:inline>, is asserted into the working memory. This <fo:inline font-!
 weight="bold" font-family="Liberation Mono,monospace">PermissionCheck</fo:inline> corresponds exactly to the permission that is being checked, so for example if you call <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">hasPermission("account", "create", null)</fo:inline> then a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">PermissionCheck</fo:inline> object with a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">name</fo:inline> equal to "account" and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">action</fo:inline> equal to "create" will be asserted into the working memory for the duration of the permission check.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		So what else is in the working memory? Besides the short-lived temporary facts asserted during a permission check, there are some longer-lived objects in the working memory that stay there for the entire duration of a user being authenticated. These include any <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">java.security.Principal</fo:inline> objects that are created as part of the authentication process, plus a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.security.Role</fo:inline> object for each of the roles that the user is a member of. It is also possible to assert additional long-lived facts into the working memory by calling <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">RuleBasedIdentity.instance().getSecurityContext().assertObject()</fo:inline>, passing the object as a parameter.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Getting back to our simple example, we can also notice that the first line of our LHS is prefixed with <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">c:</fo:inline>. This is a variable binding, and is used to refer back to the object that is matched by the condition. Moving onto the second line of our LHS, we see this:
+	</fo:block><fo:block id="id3492291" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">Role(name == "admin")
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		This condition simply states that there must be a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Role</fo:inline> object with a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">name</fo:inline> of "admin" within the working memory. As mentioned, user roles are asserted into the working memory as long-lived facts. So, putting both conditions together, this rule is essentially saying "I will fire if you are checking for the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">customer:delete</fo:inline> permission and the user is a member of the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">admin</fo:inline> role".
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		So what is the consequence of the rule firing? Let us take a look at the RHS of the rule:
+	</fo:block><fo:block id="id3492326" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">c.grant()
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The RHS consists of Java code, and in this case is invoking the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">grant()</fo:inline> method of the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">c</fo:inline> object, which as already mentioned is a variable binding for the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">PermissionCheck</fo:inline> object. Besides the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">name</fo:inline> and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">action</fo:inline> properties of the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">PermissionCheck</fo:inline> object, there is also a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">granted</fo:inline> property which is initially set to <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">false</fo:inline>. Calling <fo:inlin!
 e font-weight="bold" font-family="Liberation Mono,monospace">grant()</fo:inline> on a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">PermissionCheck</fo:inline> sets the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">granted</fo:inline> property to <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">true</fo:inline>, which means that the permission check was successful, allowing the user to carry out whatever action the permission check was intended for.
+	</fo:block><fo:block id="Seam_Reference_Guide-Creating_a_security_rules_file-Wildcard_permission_checks"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:block color="#a70000" font-size="13pt">12.6.3.1. Wildcard permission checks</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space!
 -after.minimum="0.8em" space-after.maximum="1.2em">
+		It is possible to implement a wildcard permission check (which allows all actions for a given permission name), by omitting the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">action</fo:inline> constraint for the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">PermissionCheck</fo:inline> in your rule, like this:
+	</fo:block><fo:block id="id3492413" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">rule CanDoAnythingToCustomersIfYouAreAnAdmin
+when
+  c: PermissionCheck(name == "customer")
+  Role(name == "admin")
+then
+  c.grant();
+end;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		This rule allows users with the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">admin</fo:inline> role to perform <fo:inline font-style="italic">any</fo:inline> action for any <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">customer</fo:inline> permission check.
+	</fo:block></fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Security-SSL_Security"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">SSL Security</fo:marker><fo:block color="#a70000" font-size="16pt">12.7. SSL Security</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-!
 before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Seam includes basic support for serving sensitive pages via the HTTPS protocol. This is easily configured by specifying a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">scheme</fo:inline> for the page in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">pages.xml</fo:inline>. The following example shows how the view <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">/login.xhtml</fo:inline> is configured to use HTTPS:
+	</fo:block><fo:block id="id3492463" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">  &lt;page view-id="/login.xhtml" scheme="https"&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		This configuration is automatically extended to both <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">s:link</fo:inline> and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">s:button</fo:inline> JSF controls, which (when specifying the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">view</fo:inline>) will also render the link using the correct protocol. Based on the previous example, the following link will use the HTTPS protocol because <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">/login.xhtml</fo:inline> is configured to use it:
+	</fo:block><fo:block id="id3492492" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">  &lt;s:link view="/login.xhtml" value="Login"/&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Browsing directly to a view when using the <fo:inline font-style="italic">incorrect</fo:inline> protocol will cause a redirect to the same view using the <fo:inline font-style="italic">correct</fo:inline> protocol. For example, browsing to a page that has <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">scheme="https"</fo:inline> using HTTP will cause a redirect to the same page using HTTPS.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		It is also possible to configure a default <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">scheme</fo:inline> for all pages. This is actually quite important, as you might only wish to use HTTPS for a few pages, and if no default scheme is specified then the default behavior is to continue using the current scheme. What this means is that once you enter a page with HTTPS, then HTTPS will continue to be used even if you navigate away to other non-HTTPS pages (a bad thing!). So it is strongly recommended to include a default <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">scheme</fo:inline>, by configuring it on the default (<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">"*"</fo:inline>) view:
+	</fo:block><fo:block id="id3841573" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">  &lt;page view-id="*" scheme="http"&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Of course, if <fo:inline font-style="italic">none</fo:inline> of the pages in your application use HTTPS then it is not required to specify a default scheme.
+	</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Security-Implementing_a_Captcha_Test"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Implementing a Captcha Test</fo:marker><fo:block color="#a70000" font-size="16pt">12.8. Implementing a Captcha Test</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before!
 .optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Though strictly not part of the security API, it might be useful in certain circumstances (such as new user registrations, posting to a public blog or forum) to implement a Captcha (<fo:inline font-style="italic">C</fo:inline>ompletely <fo:inline font-style="italic">A</fo:inline>utomated <fo:inline font-style="italic">P</fo:inline>ublic <fo:inline font-style="italic">T</fo:inline>uring test to tell <fo:inline font-style="italic">C</fo:inline>omputers and <fo:inline font-style="italic">H</fo:inline>umans <fo:inline font-style="italic">A</fo:inline>part) to prevent automated bots from interacting with your application. Seam provides seamless integration with JCaptcha, an excellent library for generating Captcha challenges. If you wish to use the captcha feature in your application you need to include the jcaptcha-* jar file from the Seam lib directory in your project, and register it in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">application.xml</f!
 o:inline> as a java module.
+	</fo:block><fo:block id="Seam_Reference_Guide-Implementing_a_Captcha_Test-Configuring_the_Captcha_Servlet"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Configuring the Captcha Servlet</fo:marker><fo:block color="#a70000" font-size="14pt">12.8.1. Configuring the Captcha Servlet</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimu!
 m="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		To get up and running, it is necessary to configure the Seam Resource Servlet, which will provide the Captcha challenge images to your pages. This requires the following entry in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">web.xml</fo:inline>:
+	</fo:block><fo:block id="id3841660" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;servlet&gt;
+    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;
+    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-class&gt;
+&lt;/servlet&gt;
+    
+&lt;servlet-mapping&gt;
+    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;
+    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;
+&lt;/servlet-mapping&gt;
+</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Implementing_a_Captcha_Test-Adding_a_Captcha_to_a_page"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Adding a Captcha to a page</fo:marker><fo:block color="#a70000" font-size="14pt">12.8.2. Adding a Captcha to a page</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.!
 1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Adding a captcha challenge to a page is extremely easy. Seam provides a page-scoped component, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">captcha</fo:inline>, which provides everything that is required, including built-in captcha validation. Here is an example:
+	</fo:block><fo:block id="id3841690" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;div&gt;
+    &lt;h:graphicImage value="/seam/resource/captcha?#{captcha.id}"/&gt;
+&lt;/div&gt;
+  
+&lt;div&gt;
+    &lt;h:outputLabel for="verifyCaptcha"&gt;Enter the above letters&lt;/h:outputLabel&gt;
+    &lt;h:inputText id="verifyCaptcha" value="#{captcha.response}" required="true"/&gt;
+    &lt;div class="validationError"&gt;&lt;h:message for="verifyCaptcha"/&gt;&lt;/div&gt;
+&lt;/div&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		That is all there is to it. The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">graphicImage</fo:inline> control displays the Captcha challenge, and the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">inputText</fo:inline> receives the user's response. The response is automatically validated against the Captcha when the form is submitted.
+	</fo:block></fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="body" language="en" format="1" initial-page-number="auto-odd" force-page-count="end-on-even" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-!
 cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always" font-weight="bold">Chapter 13.</fo:inline></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-w!
 idth="proportional-column-width(1)"/><fo:table-body><fo:table-!
 row bloc
k-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always"><fo:retrieve-marker retrieve-class-name="section.head.marker" retrieve-position="first-including-carryover" retrieve-boundary="page-sequence"/></fo:inline></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-!
 width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always" font-weight="bold">Chapter 13. Internationalization and themes</fo:inline></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-!
 layout="fixed" width="100%" border-bottom-width="0.5pt" border!
 -bottom-
style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-footnote-separator"><fo:block><fo:leader color="black" leader-pattern="rule" leader-length="1in"/></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block font!
 -family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-c!
 ontent><fo:static-content flow-name="xsl-region-after-odd"><fo!
 :block f
ont-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static!
 -content><fo:static-content flow-name="xsl-region-after-even"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:t!
 able-cell></fo:table-row></fo:table-body></fo:table></fo:block!
 ></fo:st
atic-content><fo:static-content flow-name="xsl-region-after-blank"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></!
 fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:flow flow-name="xsl-region-body" start-indent="0pt" end-indent="0pt"><fo:block id="Seam_Reference_Guide-Internationalization_and_themes"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats"><fo:block margin-left="0pc"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" color="#a70000" background-color="white" font-size="24pt" font-weight="bold" text-align="left" padding-left="1em" padding-right="1em">Internationalization and themes</fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Seam makes it easy to build internationalized applications by providing several built-in components for handling multi-language UI messages.
+	</fo:block><fo:block id="Seam_Reference_Guide-Internationalization_and_themes-Locales"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Locales</fo:marker><fo:block color="#a70000" font-size="16pt">13.1. Locales</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" sp!
 ace-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Each user login session has an associated instance of <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">java.util.Locale</fo:inline> (available to the application as a session-scoped component named <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">locale</fo:inline>). Under normal circumstances, you will not need to do any special configuration to set the locale. Seam just delegates to JSF to determine the active locale:
+		</fo:block><fo:list-block id="id3577937" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3656734" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+					If there is a locale associated with the HTTP request (the browser locale), and that locale is in the list of supported locales from <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">faces-config.xml</fo:inline>, use that locale for the rest of the session.
+				</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2682023" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+					Otherwise, if a default locale was specified in the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">faces-config.xml</fo:inline>, use that locale for the rest of the session.
+				</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3915834" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+					Otherwise, use the default locale of the server.
+				</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			It is <fo:inline font-style="italic">possible</fo:inline> to set the locale manually via the Seam configuration properties <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.core.localeSelector.language</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.core.localeSelector.country</fo:inline> and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.core.localeSelector.variant</fo:inline>, but we cannot think of any good reason to ever do this.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			It is, however, useful to allow the user to set the locale manually via the application user interface. Seam provides built-in functionality for overriding the locale determined by the algorithm above. All you have to do is add the following fragment to a form in your JSP or Facelets page:
+		</fo:block><fo:block id="id3910793" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;h:selectOneMenu value="#{localeSelector.language}"&gt;
+    &lt;f:selectItem itemLabel="English" itemValue="en"/&gt;
+    &lt;f:selectItem itemLabel="Deutsch" itemValue="de"/&gt;
+    &lt;f:selectItem itemLabel="Francais" itemValue="fr"/&gt;
+&lt;/h:selectOneMenu&gt;
+&lt;h:commandButton action="#{localeSelector.select}" value="#{messages['ChangeLanguage']}"/&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Or, if you want a list of all supported locales from <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">faces-config.xml</fo:inline>, just use:
+		</fo:block><fo:block id="id3904148" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;h:selectOneMenu value="#{localeSelector.localeString}"&gt;
+    &lt;f:selectItems value="#{localeSelector.supportedLocales}"/&gt;
+&lt;/h:selectOneMenu&gt;
+&lt;h:commandButton action="#{localeSelector.select}" value="#{messages['ChangeLanguage']}"/&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			When this use selects an item from the drop-down, and clicks the button, the Seam and JSF locales will be overridden for the rest of the session.
+		</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Internationalization_and_themes-Labels"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Labels</fo:marker><fo:block color="#a70000" font-size="16pt">13.2. Labels</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="!
 0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			JSF supports internationalization of user interface labels and descriptive text via the use of <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;f:loadBundle /&gt;</fo:inline>. You can use this approach in Seam applications. Alternatively, you can take advantage of the Seam <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">messages</fo:inline> component to display templated labels with embedded EL expressions.
+		</fo:block><fo:block id="Seam_Reference_Guide-Labels-Defining_labels"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Defining labels</fo:marker><fo:block color="#a70000" font-size="14pt">13.2.1. Defining labels</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" !
 space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Each login session has an associated instance of <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">java.util.ResourceBundle</fo:inline> (available to the application as a session-scoped component named <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.core.resourceBundle</fo:inline>). You'll need to make your internationalized labels available via this special resource bundle. By default, the resource bundle used by Seam is named <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">messages</fo:inline> and so you'll need to define your labels in files named <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">messages.properties</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">messages_en.properties</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">messages_en_AU.properties</fo:inline>, etc. These files usually belon!
 g in the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">WEB-INF/classes</fo:inline> directory.
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				So, in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">messages_en.properties</fo:inline>:
+			</fo:block><fo:block id="id3935324" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">Hello=Hello
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				And in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">messages_en_AU.properties</fo:inline>:
+			</fo:block><fo:block id="id4182130" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">Hello=G'day
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				You can select a different name for the resource bundle by setting the Seam configuration property named <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.core.resourceBundle.bundleNames</fo:inline>. You can even specify a list of resource bundle names to be searched (depth first) for messages.
+			</fo:block><fo:block id="id3322702" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;core:resource-bundle&gt;
+    &lt;core:bundle-names&gt;
+        &lt;value&gt;mycompany_messages&lt;/value&gt;
+        &lt;value&gt;standard_messages&lt;/value&gt;       
+    &lt;/core:bundle-names&gt;
+&lt;/core:resource-bundle&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				If you want to define a message just for a particular page, you can specify it in a resource bundle with the same name as the JSF view id, with the leading <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">/</fo:inline> and trailing file extension removed. So we could put our message in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">welcome/hello_en.properties</fo:inline> if we only needed to display the message on <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">/welcome/hello.jsp</fo:inline>.
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				You can even specify an explicit bundle name in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">pages.xml</fo:inline>:
+			</fo:block><fo:block id="id3935334" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;page view-id="/welcome/hello.jsp" bundle="HelloMessages"/&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Then we could use messages defined in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">HelloMessages.properties</fo:inline> on <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">/welcome/hello.jsp</fo:inline>.
+			</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Labels-Displaying_labels"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Displaying labels</fo:marker><fo:block color="#a70000" font-size="14pt">13.2.2. Displaying labels</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-befor!
 e.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				If you define your labels using the Seam resource bundle, you will be able to use them without having to type <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;f:loadBundle ... /&gt;</fo:inline> on every page. Instead, you can simply type:
+			</fo:block><fo:block id="id3756754" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;h:outputText value="#{messages['Hello']}"/&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				or:
+			</fo:block><fo:block id="id3577523" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;h:outputText value="#{messages.Hello}"/&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Even better, the messages themselves may contain EL expressions:
+			</fo:block><fo:block id="id3092858" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">Hello=Hello, #{user.firstName} #{user.lastName}
+</fo:block><fo:block id="id3842007" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">Hello=G'day, #{user.firstName}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				You can even use the messages in your code:
+			</fo:block><fo:block id="id3722412" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@In private Map&lt;String, String&gt; messages;
+</fo:block><fo:block id="id4172666" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@In("#{messages['Hello']}") private String helloMessage;
+</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Labels-Faces_messages"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Faces messages</fo:marker><fo:block color="#a70000" font-size="14pt">13.2.3. Faces messages</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0!
 .1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">facesMessages</fo:inline> component is a super-convenient way to display success or failure messages to the user. The functionality we just described also works for faces messages:
+			</fo:block><fo:block id="id3800629" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Name("hello")
+ at Stateless
+public class HelloBean implements Hello {
+    @In FacesMessages facesMessages;
+    
+    public String sayIt() {
+        facesMessages.addFromResourceBundle("Hello");
+    }
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				This will display <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Hello, Gavin King</fo:inline> or <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">G'day, Gavin</fo:inline>, depending upon the user's locale.
+			</fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Internationalization_and_themes-Timezones"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Timezones</fo:marker><fo:block color="#a70000" font-size="16pt">13.3. Timezones</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" s!
 pace-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			There is also a session-scoped instance of <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">java.util.Timezone</fo:inline>, named <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.core.timezone</fo:inline>, and a Seam component for changing the timezone named <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.core.timezoneSelector</fo:inline>. By default, the timezone is the default timezone of the server. Unfortunately, the JSF specification says that all dates and times should be assumed to be UTC, and displayed as UTC, unless a timezone is explicitly specified using <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;f:convertDateTime&gt;</fo:inline>. This is an extremely inconvenient default behavior.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Seam overrides this behavior, and defaults all dates and times to the Seam timezone. In addition, Seam provides the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;s:convertDateTime&gt;</fo:inline> tag which always performs conversions in the Seam timezone.
+		</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Internationalization_and_themes-Themes"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Themes</fo:marker><fo:block color="#a70000" font-size="16pt">13.4. Themes</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="!
 0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Seam applications are also very easily skinnable. The theme API is very similar to the localization API, but of course these two concerns are orthogonal, and some applications support both localization and themes.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			First, configure the set of supported themes:
+		</fo:block><fo:block id="id3789093" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;theme:theme-selector cookie-enabled="true"&gt;
+    &lt;theme:available-themes&gt;
+        &lt;value&gt;default&lt;/value&gt;
+        &lt;value&gt;accessible&lt;/value&gt;
+        &lt;value&gt;printable&lt;/value&gt;
+    &lt;/theme:available-themes&gt;
+&lt;/theme:theme-selector&gt;
+</fo:block><fo:block id="id4182142" color="white" background-color="#8e9f00" space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1em" padding-bottom="12pt" padding-top="12pt" margin-left="0pc"><fo:list-block provisional-distance-between-starts="36pt + 18pt" provisional-label-separation="18pt"><fo:list-item><fo:list-item-label end-indent="label-end()"><fo:block><fo:external-graphic width="auto" height="auto" content-width="36pt" src="url(Common_Content/images/note.svg)"/></fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block font-size="13pt" color="white" font-weight="bold" hyphenate="true" keep-with-next.within-column="always">Note</fo:block><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum!
 ="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				The first theme listed is the default theme.
+			</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Themes are defined in a properties file with the same name as the theme. For example, the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">default</fo:inline> theme is defined as a set of entries in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">default.properties</fo:inline>. For example, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">default.properties</fo:inline> might define:
+		</fo:block><fo:block id="id3561396" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">css ../screen.css
+template template.xhtml
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Usually the entries in a theme resource bundle will be paths to CSS styles or images and names of facelets templates (unlike localization resource bundles which are usually text).
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Now we can use these entries in our JSP or facelets pages. For example, to theme the stylesheet in a facelets page:
+		</fo:block><fo:block id="id3491591" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;link href="#{theme.css}" rel="stylesheet" type="text/css" /&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Most powerfully, facelets lets us theme the template used by a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;ui:composition&gt;</fo:inline>:
+		</fo:block><fo:block id="id3357238" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;ui:composition xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:ui="http://java.sun.com/jsf/facelets"
+    xmlns:h="http://java.sun.com/jsf/html"
+    xmlns:f="http://java.sun.com/jsf/core"
+    template="#{theme.template}"&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Just like the locale selector, there is a built-in theme selector to allow the user to freely switch themes:
+		</fo:block><fo:block id="id3665887" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;h:selectOneMenu value="#{themeSelector.theme}"&gt;
+    &lt;f:selectItems value="#{themeSelector.themes}"/&gt;
+&lt;/h:selectOneMenu&gt;
+&lt;h:commandButton action="#{themeSelector.select}" value="Select Theme"/&gt;
+</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Internationalization_and_themes-Persisting_locale_and_theme_preferences_via_cookies"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Persisting locale and theme preferences via cookies</fo:marker><fo:block color="#a70000" font-size="16pt">13.5. Persisting locale and theme preferences via cookies</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transition!
 al" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The locale selector, theme selector and timezone selector all support persistence of locale and theme preference to a cookie. Simply set the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">cookie-enabled</fo:inline> configuration property:
+		</fo:block><fo:block id="id3797917" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;theme:theme-selector cookie-enabled="true"&gt;
+    &lt;theme:available-themes&gt;
+        &lt;value&gt;default&lt;/value&gt;
+        &lt;value&gt;accessible&lt;/value&gt;
+        &lt;value&gt;printable&lt;/value&gt;
+    &lt;/theme:available-themes&gt;
+&lt;/theme:theme-selector&gt;
+
+&lt;core:locale-selector cookie-enabled="true"/&gt;
+</fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="body" language="en" format="1" initial-page-number="auto-odd" force-page-count="end-on-even" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-al!
 ign="start" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always" font-weight="bold">Chapter 14.</fo:inline></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="propor!
 tional-column-width(1)"/><fo:table-body><fo:table-row block-pr!
 ogressio
n-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always"><fo:retrieve-marker retrieve-class-name="section.head.marker" retrieve-position="first-including-carryover" retrieve-boundary="page-sequence"/></fo:inline></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="propo!
 rtional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always" font-weight="bold">Chapter 14. Seam Text</fo:inline></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border!
 -bottom-width="0.5pt" border-bottom-style="solid" border-botto!
 m-color=
"black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-footnote-separator"><fo:block><fo:leader color="black" leader-pattern="rule" leader-length="1in"/></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block font-family="Liberation Sans,sans-seri!
 f,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-nam!
 e="xsl-region-after-odd"><fo:block font-family="Liberation San!
 s,sans-s
erif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-n!
 ame="xsl-region-after-even"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:tabl!
 e-body></fo:table></fo:block></fo:static-content><fo:static-co!
 ntent fl
ow-name="xsl-region-after-blank"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:!
 table-body></fo:table></fo:block></fo:static-content><fo:flow flow-name="xsl-region-body" start-indent="0pt" end-indent="0pt"><fo:block id="Seam_Reference_Guide-Seam_Text"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats"><fo:block margin-left="0pc"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" color="#a70000" background-color="white" font-size="24pt" font-weight="bold" text-align="left" padding-left="1em" padding-right="1em">Seam Text</fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Collaboration-oriented websites require a human-friendly markup language for easy entry of formatted text in forum posts, wiki pages, blogs, comments, etc. Seam provides the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;s:formattedText/&gt;</fo:inline> control for display of formatted text that conforms to the <fo:inline font-style="italic">Seam Text</fo:inline> language. Seam Text is implemented using an ANTLR-based parser. You do not need to know anything about ANTLR to use it, however.
+	</fo:block><fo:block id="Seam_Reference_Guide-Seam_Text-Basic_fomatting"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Basic fomatting</fo:marker><fo:block color="#a70000" font-size="16pt">14.1. Basic fomatting</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" !
 space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Here is a simple example:
+		</fo:block><fo:block id="id2965979" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">It's easy to make *bold text*, /italic text/, |monospace|, 
+~deleted text~, super^scripts^ or _underlines_.
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			If we display this using <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;s:formattedText/&gt;</fo:inline>, we will get the following HTML produced:
+		</fo:block><fo:block id="id3942008" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;p&gt;
+It's easy to make &lt;b&gt;bold text&lt;/b&gt;, &lt;i&gt;italic text&lt;/i&gt;, &lt;tt&gt;monospace&lt;/tt&gt;
+&lt;del&gt;deleted text&lt;/del&gt;, super&lt;sup&gt;scripts&lt;/sup&gt; or &lt;u&gt;underlines&lt;/u&gt;.
+&lt;/p&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			We can use a blank line to indicate a new paragraph, and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">+</fo:inline> to indicate a heading:
+		</fo:block><fo:block id="id2717028" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">+This is a big heading
+You /must/ have some text following a heading!
+ 
+++This is a smaller heading
+This is the first paragraph. We can split it across multiple 
+lines, but we must end it with a blank line.
+
+This is the second paragraph.
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			A simple newline is ignored, you need an additional blank line to wrap text into a new paragraph. This is the HTML that results:
+		</fo:block><fo:block id="id4191762" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;h1&gt;This is a big heading&lt;/h1&gt;
+&lt;p&gt;
+You &lt;i&gt;must&lt;/i&gt; have some text following a heading!
+&lt;/p&gt;
+ 
+&lt;h2&gt;This is a smaller heading&lt;/h2&gt;
+&lt;p&gt;
+This is the first paragraph. We can split it across multiple 
+lines, but we must end it with a blank line.
+&lt;/p&gt;
+
+&lt;p&gt;
+This is the second paragraph.
+&lt;/p&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Ordered lists are created using the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">#</fo:inline> character. Unordered lists use the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">=</fo:inline> character:
+		</fo:block><fo:block id="id3903547" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">An ordered list:
+        
+#first item
+#second item
+#and even the /third/ item
+
+An unordered list:
+
+=an item
+=another item
+</fo:block><fo:block id="id3725263" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;p&gt;
+An ordered list:
+&lt;/p&gt;
+ 
+&lt;ol&gt;       
+&lt;li&gt;first item&lt;/li&gt;
+&lt;li&gt;second item&lt;/li&gt;
+&lt;li&gt;and even the &lt;i&gt;third&lt;/i&gt; item&lt;/li&gt;
+&lt;/ol&gt;
+
+&lt;p&gt;
+An unordered list:
+&lt;/p&gt;
+
+&lt;ul&gt;
+&lt;li&gt;an item&lt;/li&gt;
+&lt;li&gt;another item&lt;/li&gt;
+&lt;/ul&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Quoted sections should be surrounded in double quotes:
+		</fo:block><fo:block id="id3324328" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">The other guy said:
+        
+"Nyeah nyeah-nee 
+/nyeah/ nyeah!"
+
+But what do you think he means by "nyeah-nee"?
+</fo:block><fo:block id="id2659042" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;p&gt;
+The other guy said:
+&lt;/p&gt;
+        
+&lt;q&gt;Nyeah nyeah-nee
+&lt;i&gt;nyeah&lt;/i&gt; nyeah!&lt;/q&gt;
+
+&lt;p&gt;
+But what do you think he means by &lt;q&gt;nyeah-nee&lt;/q&gt;?
+&lt;/p&gt;
+</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Seam_Text-Entering_code_and_text_with_special_characters"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Entering code and text with special characters</fo:marker><fo:block color="#a70000" font-size="16pt">14.2. Entering code and text with special characters</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/!
 XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Special characters such as <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">*</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">|</fo:inline> and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">#</fo:inline>, along with HTML characters such as <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&gt;</fo:inline> and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&amp;</fo:inline> may be escaped using <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">\</fo:inline>:
+		</fo:block><fo:block id="id3931970" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">You can write down equations like 2\*3\=6 and HTML tags
+like \&lt;body\&gt; using the escape character: \\.
+</fo:block><fo:block id="id2792442" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;p&gt;
+You can write down equations like 2*3=6 and HTML tags
+like &lt;body&gt; using the escape character: \.
+&lt;/p&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			And we can quote code blocks using backticks:
+		</fo:block><fo:block id="id2803933" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">My code doesn't work:
+
+`for (int i=0; i&lt;100; i--)
+{
+    doSomething();
+}`
+
+Any ideas?
+</fo:block><fo:block id="id3716349" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;p&gt;
+My code doesn't work:
+&lt;/p&gt;
+
+&lt;pre&gt;for (int i=0; i&lt;100; i--)
+{
+    doSomething();
+}&lt;/pre&gt;
+
+&lt;p&gt;
+Any ideas?
+&lt;/p&gt;
+</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Seam_Text-Links"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Links</fo:marker><fo:block color="#a70000" font-size="16pt">14.3. Links</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum=!
 "1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			A link may be created using the following syntax:
+		</fo:block><fo:block id="id3941881" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">Go to the Seam website at [=&gt;http://jboss.com/products/seam].
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Or, if you want to specify the text of the link:
+		</fo:block><fo:block id="id3608821" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">Go to [the Seam website=&gt;http://jboss.com/products/seam].
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			For advanced users, it is even possible to customize the Seam Text parser to understand wikiword links written using this syntax.
+		</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Seam_Text-Entering_HTML"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Entering HTML</fo:marker><fo:block color="#a70000" font-size="16pt">14.4. Entering HTML</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0!
 .1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Text may even include a certain limited subset of HTML (the subset is chosen to be safe from cross-site scripting attacks). This is useful for creating links:
+		</fo:block><fo:block id="id3939587" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">You might want to link to &lt;a href="http://jboss.com/products/seam"&gt;something
+cool&lt;/a&gt;, or even include an image: &lt;img src="/logo.jpg"/&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			And for creating tables:
+		</fo:block><fo:block id="id3921767" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;table&gt;
+    &lt;tr&gt;&lt;td&gt;First name:&lt;/td&gt;&lt;td&gt;Gavin&lt;/td&gt;&lt;/tr&gt;
+    &lt;tr&gt;&lt;td&gt;Last name:&lt;/td&gt;&lt;td&gt;King&lt;/td&gt;&lt;/tr&gt;
+&lt;/table&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			There is much more that can be achieved if you wish.
+		</fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="body" language="en" format="1" initial-page-number="auto-odd" force-page-count="end-on-even" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-!
 align="start" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always" font-weight="bold">Chapter 15.</fo:inline></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="prop!
 ortional-column-width(1)"/><fo:table-body><fo:table-row block-!
 progress
ion-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always"><fo:retrieve-marker retrieve-class-name="section.head.marker" retrieve-position="first-including-carryover" retrieve-boundary="page-sequence"/></fo:inline></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="pro!
 portional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always" font-weight="bold">Chapter 15. iText PDF generation</fo:inline></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width=!
 "100%" border-bottom-width="0.5pt" border-bottom-style="solid"!
  border-
bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-footnote-separator"><fo:block><fo:leader color="black" leader-pattern="rule" leader-length="1in"/></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block font-family="Liberation S!
 ans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-con!
 tent flow-name="xsl-region-after-odd"><fo:block font-family="L!
 iberatio
n Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-c!
 ontent flow-name="xsl-region-after-even"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-!
 row></fo:table-body></fo:table></fo:block></fo:static-content>!
 <fo:stat
ic-content flow-name="xsl-region-after-blank"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:ta!
 ble-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:flow flow-name="xsl-region-body" start-indent="0pt" end-indent="0pt"><fo:block id="Seam_Reference_Guide-iText_PDF_generation"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats"><fo:block margin-left="0pc"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" color="#a70000" background-color="white" font-size="24pt" font-weight="bold" text-align="left" padding-left="1em" padding-right="1em">iText PDF generation</fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Seam now includes an component set for generating documents using iText. The primary focus of Seam's iText document support is for the generation of PDF doucuments, but Seam also offers basic support for RTF document generation.
+	</fo:block><fo:block id="Seam_Reference_Guide-iText_PDF_generation-Using_PDF_Support"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Using PDF Support</fo:marker><fo:block color="#a70000" font-size="16pt">15.1. Using PDF Support</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before!
 .maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			iText support is provided by <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">jboss-seam-pdf.jar</fo:inline>. This JAR contains the iText JSF controls, which are used to construct views that can render to PDF, and the DocumentStore component, which serves the rendered documents to the user. To include PDF support in your application, included <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">jboss-seam-pdf.jar</fo:inline> in your <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">WEB-INF/lib</fo:inline> directory along with the iText JAR file. There is no further configuration needed to use Seam's iText support.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The Seam iText module requires the use of Facelets as the view technology. Future versions of the library may also support the use of JSP. Additionally, it requires the use of the seam-ui package.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">examples/itext</fo:inline> project contains an example of the PDF support in action. It demonstrates proper deployment packaging, and it contains a number examples that demonstrate the key PDF generation features current supported.
+		</fo:block></fo:block><fo:block id="Seam_Reference_Guide-iText_PDF_generation-Creating_a_document"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Creating a document</fo:marker><fo:block color="#a70000" font-size="16pt">15.2. Creating a document</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0!
 .1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Documents are generated by facelets documents using tags in the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">http://jboss.com/products/seam/pdf</fo:inline> namespace. Documents should always have the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">document</fo:inline> tag at the root of the document. The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">document</fo:inline> tag prepares Seam to generate a document into the DocumentStore and renders an HTML redirect to that stored content. The following is a a small PDF document consisting only a single line of text:
+		</fo:block><fo:block id="id3372997" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+&lt;p:document xmlns:p="http://jboss.com/products/seam/pdf"&gt;                                                      
+   The document goes here.                                                                                             
+&lt;/p:document&gt;
+</fo:block><fo:block id="Seam_Reference_Guide-Creating_a_document-pdocument"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">p:document</fo:marker><fo:block color="#a70000" font-size="14pt">15.2.1. p:document</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space!
 -after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">p:document</fo:inline> tag supports the following attributes:
+			</fo:block><fo:block id="id3931428" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2716899" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">type</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1e!
 m">
+							The type of the document to be produced. Valid values are <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">PDF</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">RTF</fo:inline> and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">HTML</fo:inline> modes. Seam defaults to PDF generation, and many of the features only work correctly when generating PDF documents.
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3797209" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">pageSize</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							The size of the page to be generate. The most commonly used values would be <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">LETTER</fo:inline> and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">A4</fo:inline>. A full list of supported pages sizes can be found in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">com.lowagie.text.PageSize</fo:inline> class. Alternatively, pageSize can provide the width and height of the page directly. The value <fo:inline font-style="italic">612 792</fo:inline>, for example, is equizalent to the LETTER page size.
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3448090" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">orientation</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							The orientation of the page. Valid values are <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">portrait</fo:inline> and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">landscape</fo:inline>. In landscape mode, the height and width page size values are reversed.
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3807874" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">margins</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							The left, right, top and bottom margin values.
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3937328" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">marginMirroring</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							Indicates that margin settings should be reversed an alternating pages.
+						</fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Document metadata is also set as attributes of the document tag. The following metadata fields are supported:
+			</fo:block><fo:block id="id3825565" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3341966" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">title</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1!
 em">
+							​
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3052986" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">subject</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							​
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3921185" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">keywords</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							​
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3716010" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">author</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							​
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3417260" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">creator</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							​
+						</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-iText_PDF_generation-Basic_Text_Elements"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Basic Text Elements</fo:marker><fo:block color="#a70000" font-size="16pt">15.3. Basic Text Elements</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.mi!
 nimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Useful documents will need to contain more than just text; however, the standard UI components are geared towards HTML generation and are not useful for generating PDF content. Instead, Seam provides a special UI components for generating suitable PDF content. Tags like <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;p:image&gt;</fo:inline> and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;p:paragraph&gt;</fo:inline> are the basic foundations of simple documents. Tags like <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;p:font&gt;</fo:inline> provide style information to all the content surrounging them.
+		</fo:block><fo:block id="id3725885" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+&lt;p:document xmlns:p="http://jboss.com/products/seam/pdf"&gt; 
+    &lt;p:image alignment="right" wrap="true" resource="/logo.jpg" /&gt;
+    &lt;p:font size="24"&gt;
+        &lt;p:paragraph spacingAfter="50"&gt;My First Document&lt;/p:paragraph&gt;
+    &lt;/p:font&gt;
+
+    &lt;p:paragraph alignment="justify"&gt;
+        This is a simple document.  It isn't very fancy.
+    &lt;/p:paragraph&gt;
+&lt;/p:document&gt;
+</fo:block><fo:block id="Seam_Reference_Guide-Basic_Text_Elements-pparagraph"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">p:paragraph</fo:marker><fo:block color="#a70000" font-size="14pt">15.3.1. p:paragraph</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" sp!
 ace-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Most uses of text should be sectioned into paragraphs so that text fragments can be flowed, formatted and styled in logical groups.
+			</fo:block><fo:block id="id3725912" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3725915" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">firstLineIndent</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.!
 maximum="1em">
+							​
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2803714" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">extraParagraphSpace</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							​
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2803732" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">leading</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							​
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2803749" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">multipliedLeading</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							​
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2803767" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">spacingBefore</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							The blank space to be inserted before the element.
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2803785" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">spacingAfter</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							The blank space to be inserted after the element.
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2803804" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">indentationLeft</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							​
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2803822" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">indentationRight</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							​
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3564394" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">keepTogether</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							​
+						</fo:block></fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Basic_Text_Elements-ptext"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">p:text</fo:marker><fo:block color="#a70000" font-size="14pt">15.3.2. p:text</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-b!
 efore.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">text</fo:inline> tag allows text fragments to be produced from application data using normal JSF converter mechanisms. It is very similar to the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">outputText</fo:inline> tag used when rendering HTML documents. Here is an example:
+			</fo:block><fo:block id="id3564441" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+&lt;p:paragraph&gt;
+    The item costs &lt;p:text value="#{product.price}"&gt;
+        &lt;f:convertNumber type="currency" currencySymbol="$"/&gt;
+    &lt;/p:text&gt;
+&lt;/p:paragraph&gt;
+</fo:block><fo:block id="id3564448" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3564450" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">value</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							The value to be displayed. This will typically be a value binding expression.
+						</fo:block></fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Basic_Text_Elements-pfont"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">p:font</fo:marker><fo:block color="#a70000" font-size="14pt">15.3.3. p:font</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-b!
 efore.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Font declarations have no direct
+			</fo:block><fo:block id="id3564487" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3564490" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">familyName</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maxim!
 um="1em">
+							The font family. One of: <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">COURIER</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">HELVETICA</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">TIMES-ROMAN</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">SYMBOL</fo:inline> or <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">ZAPFDINGBATS</fo:inline>.
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3564528" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">size</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							The point size of the font.
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3564545" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">style</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							The font styles. Any combination of : <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">NORMAL</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">BOLD</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">ITALIC</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">OBLIQUE</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">UNDERLINE</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">LINE-THROUGH</fo:inline>
+						</fo:block></fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Basic_Text_Elements-pnewPage"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">p:newPage</fo:marker><fo:block color="#a70000" font-size="14pt">15.3.4. p:newPage</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em!
 " space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">p:newPage</fo:inline> inserts a page break.
+			</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Basic_Text_Elements-pimage"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">p:image</fo:marker><fo:block color="#a70000" font-size="14pt">15.3.5. p:image</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" !
 space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">p:image</fo:inline> inserts an image into the document. Images can be be loaded from the classpath or from the web application context using the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">resource</fo:inline> attribute.
+			</fo:block><fo:block id="id3838920" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;p:image resource="/jboss.jpg" /&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Resources can also be dynamically generated by application code. The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">imageData</fo:inline> attribute can specify a value binding expression whose value is a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">java.awt.Image</fo:inline> object.
+			</fo:block><fo:block id="id3838938" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;p:image imageData="#{images.chart}" /&gt;
+</fo:block><fo:block id="id3838943" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3838946" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">resource</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1!
 em">
+							The location of the image resource to be included. Resources should be relative to the document root of the web application.
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3838965" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">imageData</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							A method expression binding to an application-generated image.
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3838984" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">rotation</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							The rotation of the image in degrees.
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3839002" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">height</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							The height of the image.
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3839020" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">width</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							The width of the image.
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3839038" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">alignment</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							The alignment of the image. (see <fo:basic-link internal-destination="Seam_Reference_Guide-Document_Constants-Alignment_Values"><fo:inline font-style="italic" color="#0066cc">Section 15.8.2, “Alignment Values”</fo:inline></fo:basic-link> for possible values)
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3839061" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">alt</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							Alternative text representation for the image.
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3839080" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">indentationLeft</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							​
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3416898" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">indentationRight</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							​
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3416916" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">spacingBefore</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							The blank space to be inserted before the element.
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3416935" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">spacingAfter</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							The blank space to be inserted after the element.
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3416953" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">widthPercentage</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							​
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3416971" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">initialRotation</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							​
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3416989" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">dpi</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							​
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3417006" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">scalePercent</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							The scaling factor (as a percentage) to use for the image. This can be expressed as a single percentage value or as two percentage values representing separate x and y scaling percentages.
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3417027" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">wrap</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							​
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3417045" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">underlying</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							​
+						</fo:block></fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Basic_Text_Elements-panchor"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">p:anchor</fo:marker><fo:block color="#a70000" font-size="14pt">15.3.6. p:anchor</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" s!
 pace-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">p:anchor</fo:inline> defines clickable links from a document. It supports the following attributes:
+			</fo:block><fo:block id="id3417087" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3417090" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">name</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1e!
 m">
+							The name of an in-document anchor destination.
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3417108" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">reference</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							The destination the link refers to. Links to other points in the document should begin with a <fo:inline font-family="Liberation Mono,monospace">#</fo:inline>. For example, <fo:inline font-family="Liberation Mono,monospace">#link1</fo:inline> to refer to an anchor postion with a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">name</fo:inline> of <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">link1</fo:inline>. Links may also be a full URL to point to a resource outside of the document.
+						</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-iText_PDF_generation-Headers_and_Footers"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Headers and Footers</fo:marker><fo:block color="#a70000" font-size="16pt">15.4. Headers and Footers</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Headers_and_Footers-pheader_and_pfooter"><fo:block><fo:block><fo:block margin-left="0pc"!
  font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">p:header and p:footer</fo:marker><fo:block color="#a70000" font-size="14pt">15.4.1. p:header and p:footer</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">p:header</fo:inline> and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">p:footer</fo:inline> components provide the ability to place header and footer text on each page of a generated document, with the exception of the first page. Header and footer declarations should appear near the top of a document.
+			</fo:block><fo:block id="id3905600" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3905603" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">alignment</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximu!
 m="1em">
+							The alignment of the header/footer box section. (see <fo:basic-link internal-destination="Seam_Reference_Guide-Document_Constants-Alignment_Values"><fo:inline font-style="italic" color="#0066cc">Section 15.8.2, “Alignment Values”</fo:inline></fo:basic-link> for alignment values)
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3905626" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">backgroundColor</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							The background color of the header/footer box. (see <fo:basic-link internal-destination="Seam_Reference_Guide-Document_Constants-Color_Values"><fo:inline font-style="italic" color="#0066cc">Section 15.8.1, “Color Values”</fo:inline></fo:basic-link> for color values)
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3905650" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">borderColor</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							The border color of the header/footer box. Individual border sides can be set using <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">borderColorLeft</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">borderColorRight</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">borderColorTop</fo:inline> and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">borderColorBottom</fo:inline>.(see <fo:basic-link internal-destination="Seam_Reference_Guide-Document_Constants-Color_Values"><fo:inline font-style="italic" color="#0066cc">Section 15.8.1, “Color Values”</fo:inline></fo:basic-link> for color values)
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3905691" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">borderWidth</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							The width of the border. Inidvidual border sides can be specified using <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">borderWidthLeft</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">borderWidthRight</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">borderWidthTop</fo:inline> and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">borderWidthBottom</fo:inline>.
+						</fo:block></fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Headers_and_Footers-ppageNumber"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">p:pageNumber</fo:marker><fo:block color="#a70000" font-size="14pt">15.4.2. p:pageNumber</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optim!
 um="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				The current page number can be placed inside of a header or footer using the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">p:pageNumber</fo:inline> tag. The page number tag can only be used in the context of a header or footer and can only be used once.
+			</fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-iText_PDF_generation-Chapters_and_Sections"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Chapters and Sections</fo:marker><fo:block color="#a70000" font-size="16pt">15.5. Chapters and Sections</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space!
 -before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			If the generated document follows a book/article structure, the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">p:chapter</fo:inline> and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">p:section</fo:inline> tags can be used to provide the necessary structure. Sections can only be used inside of chapters, but they may be nested arbitrarily deep. Most PDF viewers provide easy navigation between chapters and sections in a document.
+		</fo:block><fo:block id="id3905786" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+&lt;p:document xmlns:p="http://jboss.com/products/seam/pdf"
+            title="Hello"&gt;
+
+   &lt;p:chapter number="1"&gt;
+      &lt;p:title&gt;&lt;p:paragraph&gt;Hello&lt;/p:paragraph&gt;&lt;/p:title&gt;
+      &lt;p:paragraph&gt;Hello #{user.name}!&lt;/p:paragraph&gt;
+   &lt;/p:chapter&gt;
+
+   &lt;p:chapter number="2"&gt;
+      &lt;p:title&gt;&lt;p:paragraph&gt;Goodbye&lt;/p:paragraph&gt;&lt;/p:title&gt;
+      &lt;p:paragraph&gt;Goodbye #{user.name}.&lt;/p:paragraph&gt;
+   &lt;/p:chapter&gt;
+
+&lt;/p:document&gt;
+</fo:block><fo:block id="Seam_Reference_Guide-Chapters_and_Sections-pchapter_and_psection"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">p:chapter and p:section</fo:marker><fo:block color="#a70000" font-size="14pt">15.5.1. p:chapter and p:section</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="id3488924" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1!
 em" space-after.maximum="1em"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3488926" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">number</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							The chapter number. Every chapter should be assigned a chapter number.
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3488945" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">numberDepth</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							The depth of numbering for section. All sections are numbered relative to their surrounding chapter/sections. The fourth section of of the first section of chapter three would be section 3.1.4, if displayed at the default number depth of three. To omit the chapter number, a number depth of 2 should be used. In that case, the section number would be displayed as 1.4.
+						</fo:block></fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Chapters_and_Sections-ptitle"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">p:title</fo:marker><fo:block color="#a70000" font-size="14pt">15.5.2. p:title</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" sp!
 ace-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Any chapter or section can contain a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">p:title</fo:inline>. The title will be displayed next to the chapter/section number. The body of the title may contain raw text or may be a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">p:paragraph</fo:inline>.
+			</fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-iText_PDF_generation-Lists"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Lists</fo:marker><fo:block color="#a70000" font-size="16pt">15.6. Lists</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.!
 1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			List structures can be displayed using the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">p:list</fo:inline> and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">p:listItem</fo:inline> tags. Lists may contain arbitrarily-nested sublists. List items may not be used outside of a list. he following document uses the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">ui:repeat</fo:inline> tag to to display a list of values retrieved from a Seam component.
+		</fo:block><fo:block id="id3489032" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+&lt;p:document xmlns:p="http://jboss.com/products/seam/pdf"
+            xmlns:ui="http://java.sun.com/jsf/facelets"
+            title="Hello"&gt;
+   &lt;p:list style="numbered"&gt;
+      &lt;ui:repeat value="#{documents}" var="doc"&gt;
+         &lt;p:listItem&gt;#{doc.name}&lt;/p:listItem&gt;
+      &lt;/ui:repeat&gt;
+   &lt;/p:list&gt;
+&lt;/p:document&gt;
+</fo:block><fo:block id="Seam_Reference_Guide-Lists-plist"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">p:list</fo:marker><fo:block color="#a70000" font-size="14pt">15.6.1. p:list</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space!
 -after.minimum="0.8em" space-after.maximum="1.2em">
+				<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">p:list</fo:inline> supports the following attributes:
+			</fo:block><fo:block id="id3489059" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3489061" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">style</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1!
 em">
+							The ordering/bulleting style of list. One of: <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">NUMBERED</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">LETTERED</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">GREEK</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">ROMAN</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">ZAPFDINGBATS</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">ZAPFDINGBATS_NUMBER</fo:inline>. If no style is given, the list items are bulleted.
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3489105" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">listSymbol</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							For bulleted lists, specifies the bullet symbol.
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3489122" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">indent</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							The indentation level of the list.
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3489140" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">lowerCase</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							For list styles using letters, indicates whether the letters should be lower case.
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3489159" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">charNumber</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							For ZAPFDINGBATS, indicates the character code of the bullet character.
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2681304" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">numberType</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							For ZAPFDINGBATS_NUMBER, indicates the numbering style.
+						</fo:block></fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Lists-plistItem"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">p:listItem</fo:marker><fo:block color="#a70000" font-size="14pt">15.6.2. p:listItem</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-bef!
 ore.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">p:listItem</fo:inline> supports the following attributes:
+			</fo:block><fo:block id="id2681344" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2681347" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">alignment</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximu!
 m="1em">
+							The alignment of the list item. (See <fo:basic-link internal-destination="Seam_Reference_Guide-Document_Constants-Alignment_Values"><fo:inline font-style="italic" color="#0066cc">Section 15.8.2, “Alignment Values”</fo:inline></fo:basic-link> for possible values)
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2681371" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">indentationLeft</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							The left indentation amount.
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2681389" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">indentationRight</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							The right indentation amount.
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2681408" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">listSymbol</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							Overrides the default list symbol for this list item.
+						</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-iText_PDF_generation-Tables"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Tables</fo:marker><fo:block color="#a70000" font-size="16pt">15.7. Tables</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1!
 em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Table structures can be created using the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">p:table</fo:inline> and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">p:cell</fo:inline> tags. Unlike many table structures, there is no explicit row declaration. If a table has 3 columns, then every 3 cells will automatically form a row. Header and footer rows can be declared, and the headers and footers will be repeated in the event a table structure spans multiple pages.
+		</fo:block><fo:block id="id2681459" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+&lt;p:document xmlns:p="http://jboss.com/products/seam/pdf"   
+            xmlns:ui="http://java.sun.com/jsf/facelets"
+            title="Hello"&gt;   
+   &lt;p:table columns="3" headerRows="1"&gt;
+      &lt;p:cell&gt;name&lt;/p:cell&gt;
+      &lt;p:cell&gt;owner&lt;/p:cell&gt;
+      &lt;p:cell&gt;size&lt;/p:cell&gt;
+      &lt;ui:repeat value="#{documents}" var="doc"&gt;
+         &lt;p:cell&gt;#{doc.name}&lt;/p:cell&gt;
+         &lt;p:cell&gt;#{doc.user.name}&lt;/p:cell&gt;
+         &lt;p:cell&gt;#{doc.size}&lt;/p:cell&gt;
+      &lt;/ui:repeat&gt;
+   &lt;/p:table&gt;
+&lt;/p:document&gt;
+</fo:block><fo:block id="Seam_Reference_Guide-Tables-ptable"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">p:table</fo:marker><fo:block color="#a70000" font-size="14pt">15.7.1. p:table</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" s!
 pace-after.minimum="0.8em" space-after.maximum="1.2em">
+				<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">p:table</fo:inline> supports the following attributes.
+			</fo:block><fo:block id="id2681489" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2681492" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">columns</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum=!
 "1em">
+							The number of columns (cells) that make up a table row.
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2681510" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">widths</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							The relative widths of each column. There should be one value for each column. For example: widths="2 1 1" would indicate that there are 3 columns and the first column should be twice the size of the second and third column.
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2681531" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">headerRows</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							The initial number of rows which are considered to be headers or footer rows and should be repeated if the table spans multiple pages.
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2681551" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">footerRows</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							The number of rows that are considered to be footer rows. This value is subtracted from the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">headerRows</fo:inline> value. If document has 2 rows which make up the header and one row that makes up the footer, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">headerRows</fo:inline> should be set to 3 and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">footerRows</fo:inline> should be set to 1
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3592220" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">widthPercentage</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							The percentage of the page width that the table spans.
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3592239" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">horizontalAlignment</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							The horizontal alignment of the table. (See <fo:basic-link internal-destination="Seam_Reference_Guide-Document_Constants-Alignment_Values"><fo:inline font-style="italic" color="#0066cc">Section 15.8.2, “Alignment Values”</fo:inline></fo:basic-link> for possible values)
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3592263" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">skipFirstHeader</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							​
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3592281" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">runDirection</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							​
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3592298" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">lockedWidth</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							​
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3592316" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">splitRows</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							​
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3592334" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">spacingBefore</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							The blank space to be inserted before the element.
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3592352" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">spacingAfter</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							The blank space to be inserted after the element.
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3592371" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">extendLastRow</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							​
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3592388" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">headersInEvent</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							​
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3592406" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">splitLate</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							​
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3592424" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">keepTogether</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							​
+						</fo:block></fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Tables-pcell"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">p:cell</fo:marker><fo:block color="#a70000" font-size="14pt">15.7.2. p:cell</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum!
 ="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">p:cell</fo:inline> supports the following attributes.
+			</fo:block><fo:block id="id3684427" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3684430" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">colspan</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum=!
 "1em">
+							Cells can span more than one column by declaring a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">colspan</fo:inline> greater than 1. Tables do not have the ability to span across multiple rows.
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3684453" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">horizontalAlignment</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							The horizontal alignment of the cell. (see <fo:basic-link internal-destination="Seam_Reference_Guide-Document_Constants-Alignment_Values"><fo:inline font-style="italic" color="#0066cc">Section 15.8.2, “Alignment Values”</fo:inline></fo:basic-link> for possible values)
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3684477" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">verticalAlignment</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							The vertical alignment of the cell. (see <fo:basic-link internal-destination="Seam_Reference_Guide-Document_Constants-Alignment_Values"><fo:inline font-style="italic" color="#0066cc">Section 15.8.2, “Alignment Values”</fo:inline></fo:basic-link> for possible values)
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3684501" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">padding</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							Padding on a given side can also be specified using <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">paddingLeft</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">paddingRight</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">paddingTop</fo:inline> and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">paddingBottom</fo:inline>.
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3684536" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">useBorderPadding</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							​
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3684554" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">leading</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							​
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3684571" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">multipliedLeading</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							​
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3684589" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">indent</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							​
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3684606" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">verticalAlignment</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							​
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3684624" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">extraParagraphSpace</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							​
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3684642" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">fixedHeight</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							​
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3684660" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">noWrap</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							​
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3684677" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">minimumHeight</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							​
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2755121" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">followingIndent</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							​
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2755138" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">rightIndent</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							​
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2755156" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">spaceCharRatio</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							​
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2755174" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">runDirection</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							​
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2755191" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">arabicOptions</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							​
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2755209" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">useAscender</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							​
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2755227" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">grayFill</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							​
+						</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2755244" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">rotation</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+							​
+						</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-iText_PDF_generation-Document_Constants"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Document Constants</fo:marker><fo:block color="#a70000" font-size="16pt">15.8. Document Constants</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minim!
 um="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			This section documents some of the constants shared by attributes on multiple tags.
+		</fo:block><fo:block id="Seam_Reference_Guide-Document_Constants-Color_Values"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Color Values</fo:marker><fo:block color="#a70000" font-size="14pt">15.8.1. Color Values</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1e!
 m" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Seam documents do not yet support a full color specification. Currently, only named colors are supported. They are: <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">white</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">gray</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">lightgray</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">darkgray</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">black</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">red</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">pink</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">yellow</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">green</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,mono!
 space">magenta</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">cyan</fo:inline> and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">blue</fo:inline>.
+			</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Document_Constants-Alignment_Values"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Alignment Values</fo:marker><fo:block color="#a70000" font-size="14pt">15.8.2. Alignment Values</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" sp!
 ace-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Where alignment values are used, the Seam PDF supports the following horizontal alignment values: <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">left</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">right</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">center</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">justify</fo:inline> and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">justifyall</fo:inline>. The vertical alignment values are <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">top</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">middle</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">bottom</fo:inline>, and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">baseline</fo:inline>.
+			</fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-iText_PDF_generation-Configuring_iText"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Configuring iText</fo:marker><fo:block color="#a70000" font-size="16pt">15.9. Configuring iText</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.opti!
 mum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Document generation works out of the box with no additional configuration needed. However, there are a few points of configuration that are needed for more serious applications.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The default implementation serves PDF documents from a generic URL, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">/seam-doc.seam</fo:inline>. Many browsers (and users) would prefer to see URLs that contain the actual PDF name like <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">/myDocument.pdf</fo:inline>. This capability requires some configuration. To serve PDF files, all *.pdf resources should be mapped to the Seam Servlet Filter and to the DocumentStoreServlet:
+		</fo:block><fo:block id="id2660337" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+&lt;filter&gt;
+    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;
+    &lt;filter-class&gt;org.jboss.seam.servlet.SeamServletFilter&lt;/filter-class&gt;
+&lt;/filter&gt;
+
+&lt;filter-mapping&gt;
+    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;
+    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;
+&lt;/filter-mapping&gt;
+
+&lt;servlet&gt;
+    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;
+    &lt;servlet-class&gt;org.jboss.seam.pdf.DocumentStoreServlet&lt;/servlet-class&gt;
+&lt;/servlet&gt;
+
+&lt;servlet-mapping&gt;
+    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;
+    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;
+&lt;/servlet-mapping&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">useExtensions</fo:inline> option on the document store component completes the functionality by instructing the document store to generate URLs with the correct filename extension for the document type being generated.
+		</fo:block><fo:block id="id2660360" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">        
+&lt;components xmlns="http://jboss.com/products/seam/components"
+            xmlns:pdf="http://jboss.com/products/seam/pdf"&gt;
+    &lt;pdf:documentStore useExtensions="true" /&gt;
+&lt;/components&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Generated documents are stored in conversation scope and will expire when the conversation ends. At that point, references to the document will be invalid. To You can specify a default view to be shown when a document does not exist using the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">errorPage</fo:inline> property of the documentStore.
+		</fo:block><fo:block id="id2660379" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">        
+&lt;pdf:documentStore useExtensions="true" errorPage="/pdfMissing.seam" /&gt;
+</fo:block></fo:block><fo:block id="Seam_Reference_Guide-iText_PDF_generation-iText_links"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">iText links</fo:marker><fo:block color="#a70000" font-size="16pt">15.10. iText links</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximu!
 m="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			For further information on iText, see:
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			<fo:list-block id="id2660405" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id2660408" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						<fo:basic-link external-destination="url(http://www.lowagie.com/iText/)" font-style="italic" color="#0066cc">iText Home Page</fo:basic-link><fo:footnote><fo:inline font-size="66.66%" font-weight="normal" font-style="normal" margin-left="0.25em" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" baseline-shift="super">1</fo:inline><fo:footnote-body padding-top="48pt" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" font-size="8pt" color="black" font-weight="normal" font-style="normal" text-align="left" start-indent="0pt" text-indent="0pt" hyphenate="true" wrap-option="wrap" linefeed-treatment="treat-as-space"><fo:block><fo:inline font-size="66.66%" font-weight="normal" font-style="normal" margin-left="0.25em" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" baseline-shift="super">1</fo:inline> <fo:basic-link external-destination="url(http://www.lowagie.com/iText/)">http://www.lowagie.com/iText/</fo:basic-link></fo:block></fo:footnote-b!
 ody></fo:footnote>
+					</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2660422" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						<fo:basic-link external-destination="url(http://www.manning.com/lowagie/)" font-style="italic" color="#0066cc">iText in Action</fo:basic-link><fo:footnote><fo:inline font-size="66.66%" font-weight="normal" font-style="normal" margin-left="0.25em" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" baseline-shift="super">2</fo:inline><fo:footnote-body padding-top="48pt" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" font-size="8pt" color="black" font-weight="normal" font-style="normal" text-align="left" start-indent="0pt" text-indent="0pt" hyphenate="true" wrap-option="wrap" linefeed-treatment="treat-as-space"><fo:block><fo:inline font-size="66.66%" font-weight="normal" font-style="normal" margin-left="0.25em" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" baseline-shift="super">2</fo:inline> <fo:basic-link external-destination="url(http://www.manning.com/lowagie/)">http://www.manning.com/lowagie/</fo:basic-link></fo:block></fo:foot!
 note-body></fo:footnote>
+					</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block>
+		</fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="body" language="en" format="1" initial-page-number="auto-odd" force-page-count="end-on-even" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-!
 align="start" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always" font-weight="bold">Chapter 16.</fo:inline></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="prop!
 ortional-column-width(1)"/><fo:table-body><fo:table-row block-!
 progress
ion-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always"><fo:retrieve-marker retrieve-class-name="section.head.marker" retrieve-position="first-including-carryover" retrieve-boundary="page-sequence"/></fo:inline></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="pro!
 portional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always" font-weight="bold">Chapter 16. Email</fo:inline></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-b!
 ottom-width="0.5pt" border-bottom-style="solid" border-bottom-!
 color="b
lack"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-footnote-separator"><fo:block><fo:leader color="black" leader-pattern="rule" leader-length="1in"/></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block font-family="Liberation Sans,sans-serif,!
 Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name=!
 "xsl-region-after-odd"><fo:block font-family="Liberation Sans,!
 sans-ser
if,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-nam!
 e="xsl-region-after-even"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-!
 body></fo:table></fo:block></fo:static-content><fo:static-cont!
 ent flow
-name="xsl-region-after-blank"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:ta!
 ble-body></fo:table></fo:block></fo:static-content><fo:flow flow-name="xsl-region-body" start-indent="0pt" end-indent="0pt"><fo:block id="Seam_Reference_Guide-Email"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats"><fo:block margin-left="0pc"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" color="#a70000" background-color="white" font-size="24pt" font-weight="bold" text-align="left" padding-left="1em" padding-right="1em">Email</fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Seam now includes an optional components for templating and sending emails.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Email support is provided by <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">jboss-seam-mail.jar</fo:inline>. This JAR contains the mail JSF controls, which are used to construct emails, and the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">mailSession</fo:inline> manager component.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The examples/mail project contains an example of the email support in action. It demonstrates proper packaging, and it contains a number of example that demonstrate the key features currently supported.
+	</fo:block><fo:block id="Seam_Reference_Guide-Email-Creating_a_message"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Creating a message</fo:marker><fo:block color="#a70000" font-size="16pt">16.1. Creating a message</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.!
 1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			You do not need to learn a whole new templating language to use Seam Mail—an email is just facelet!
+		</fo:block><fo:block id="id2677089" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;m:message xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:m="http://jboss.com/products/seam/mail"
+    xmlns:h="http://java.sun.com/jsf/html"&gt;
+  
+    &lt;m:from name="Peter" address="peter at example.com" /&gt;
+    &lt;m:to name="#{person.firstname} #{person.lastname}"&gt;#{person.address}&lt;/m:to&gt;
+    &lt;m:subject&gt;Try out Seam!&lt;/m:subject&gt;
+    
+    &lt;m:body&gt;
+        &lt;p&gt;&lt;h:outputText value="Dear #{person.firstname}" /&gt;,&lt;/p&gt;
+        &lt;p&gt;You can try out Seam by visiting 
+        &lt;a href="http://labs.jboss.com/jbossseam"&gt;http://labs.jboss.com/jbossseam&lt;/a&gt;.&lt;/p&gt;
+        &lt;p&gt;Regards,&lt;/p&gt;
+        &lt;p&gt;Peter&lt;/p&gt;
+    &lt;/m:body&gt;
+    
+&lt;/m:message&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;m:message&gt;</fo:inline> tag wraps the whole message, and tells Seam to start rendering an email. Inside the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;m:message&gt;</fo:inline> tag we use an <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;m:from&gt;</fo:inline> tag to set who the message is from, a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;m:to&gt;</fo:inline> tag to specify a sender (notice how we use EL as we would in a normal facelet), and a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;m:subject&gt;</fo:inline> tag.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;m:body&gt;</fo:inline> tag wraps the body of the email. You can use regular HTML tags inside the body as well as JSF components.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			So, now you have your email template, how do you go about sending it? Well, at the end of rendering the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">m:message</fo:inline> the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">mailSession</fo:inline> is called to send the email, so all you have to do is ask Seam to render the view:
+		</fo:block><fo:block id="id2849003" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@In(create=true)
+private Renderer renderer;
+   
+public void send() {
+    try {
+       renderer.render("/simple.xhtml");
+       facesMessages.add("Email sent successfully");
+   } 
+   catch (Exception e) {
+       facesMessages.add("Email sending failed: " + e.getMessage());
+   }
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			If, for example, you entered an invalid email address, then an exception would be thrown, which is caught and then displayed to the user.
+		</fo:block><fo:block id="Seam_Reference_Guide-Creating_a_message-Attachments"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Attachments</fo:marker><fo:block color="#a70000" font-size="14pt">16.1.1. Attachments</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" !
 space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Seam makes it easy to attach files to an email. It supports most of the standard java types used when working with files.
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				If you wanted to email the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">jboss-seam-mail.jar</fo:inline>:
+			</fo:block><fo:block id="id4191727" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;m:attachment value="/WEB-INF/lib/jboss-seam-mail.jar"/&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Seam will load the file from the classpath, and attach it to the email. By default it would be attached as <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">jboss-seam-mail.jar</fo:inline>; if you wanted it to have another name you would just add the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">fileName</fo:inline> attribute:
+			</fo:block><fo:block id="id2848788" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;m:attachment value="/WEB-INF/lib/jboss-seam-mail.jar" fileName="this-is-so-cool.jar"/&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				You could also attach a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">java.io.File</fo:inline>, a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">java.net.URL</fo:inline>:
+			</fo:block><fo:block id="id2659245" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;m:attachment value="#{numbers}"/&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Or a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">byte[]</fo:inline> or a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">java.io.InputStream</fo:inline>:
+			</fo:block><fo:block id="id3941888" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;m:attachment value="#{person.photo}" contentType="image/png"/&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				You will notice that for a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">byte[]</fo:inline> and a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">java.io.InputStream</fo:inline> you need to specify the MIME type of the attachment (as that information is not carried as part of the file).
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				And it gets even better, you can attach a Seam generated PDF, or any standard JSF view, just by wrapping a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;m:attachment&gt;</fo:inline> around the normal tags you would use:
+			</fo:block><fo:block id="id3932014" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;m:attachment fileName="tiny.pdf"&gt;
+    &lt;p:document&gt;                                                      
+        A very tiny PDF                                                                                                
+    &lt;/p:document&gt;
+&lt;/m:attachment&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				If you had a set of files you wanted to attach (for example a set of pictures loaded from a database) you can just use a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;ui:repeat&gt;</fo:inline>:
+			</fo:block><fo:block id="id2681127" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;ui:repeat value="#{people}" var="person"&gt;
+    &lt;m:attachment value="#{person.photo}" contentType="image/jpeg"
+    fileName="#{person.firstname}_#{person.lastname}.jpg"/&gt;
+&lt;/ui:repeat&gt;
+</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Creating_a_message-HTMLText_alternative_part"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">HTML/Text alternative part</fo:marker><fo:block color="#a70000" font-size="14pt">16.1.2. HTML/Text alternative part</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space!
 -before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Whilst most mail readers nowadays support HTML, some do not, so you can add a plain text alternative to your email body:
+			</fo:block><fo:block id="id3797892" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;m:body&gt;
+    &lt;f:facet name="alternative"&gt;Sorry, your email reader can't show our fancy email, 
+please go to http://labs.jboss.com/jbossseam to explore Seam.&lt;/f:facet&gt;
+&lt;/m:body&gt;
+</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Creating_a_message-Multiple_recipients"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Multiple recipients</fo:marker><fo:block color="#a70000" font-size="14pt">16.1.3. Multiple recipients</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1!
 em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Often you will want to send an email to a group of recipients (for example your users). All of the recipient mail tags can be placed inside a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;ui:repeat&gt;</fo:inline>:
+			</fo:block><fo:block id="id3659283" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;ui:repeat value="#{allUsers} var="user"&gt;
+    &lt;m:to name="#{user.firstname} #{user.lastname}" address="#{user.emailAddress}" /&gt;
+&lt;/ui:repeat&gt;
+</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Creating_a_message-Multiple_messages"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Multiple messages</fo:marker><fo:block color="#a70000" font-size="14pt">16.1.4. Multiple messages</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" sp!
 ace-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Sometimes, however, you need to send a slightly different message to each recipient (e.g. a password reset). The best way to do this is to place the whole message inside a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;ui:repeat&gt;</fo:inline>:
+			</fo:block><fo:block id="id3807868" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;ui:repeat value="#{people}" var="p"&gt;
+    &lt;m:message&gt;
+        &lt;m:from name="#{person.firstname} #{person.lastname}"&gt;#{person.address}&lt;/m:from&gt;
+        &lt;m:to name="#{p.firstname}"&gt;#{p.address}&lt;/m:to&gt;
+            ...
+    &lt;/m:message&gt;
+&lt;/ui:repeat&gt;
+</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Creating_a_message-Templating"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Templating</fo:marker><fo:block color="#a70000" font-size="14pt">16.1.5. Templating</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0!
 .1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				The mail templating example shows that facelets templating Just Works with the Seam mail tags.
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Our <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">template.xhtml</fo:inline> contains:
+			</fo:block><fo:block id="id3878600" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;m:message&gt;
+   &lt;m:from name="Seam" address="do-not-reply at jboss.com" /&gt;
+   &lt;m:to name="#{person.firstname} #{person.lastname}"&gt;#{person.address}&lt;/m:to&gt;
+   &lt;m:subject&gt;#{subject}&lt;/m:subject&gt;
+   &lt;m:body&gt;
+       &lt;html&gt;
+           &lt;body&gt;
+               &lt;ui:insert name="body"&gt;This is the default body, specified by the template.
+                                   &lt;/ui:insert&gt;
+           &lt;/body&gt;
+       &lt;/html&gt;
+   &lt;/m:body&gt;
+&lt;/m:message&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Our <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">templating.xhtml</fo:inline> contains:
+			</fo:block><fo:block id="id3873165" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;ui:param name="subject" value="Templating with Seam Mail"/&gt;
+&lt;ui:define name="body"&gt;
+    &lt;p&gt;This example demonstrates that you can easily use &lt;i&gt;facelets templating&lt;/i&gt; in email!&lt;/p&gt;
+&lt;/ui:define&gt;
+</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Creating_a_message-Internationalisation"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Internationalisation</fo:marker><fo:block color="#a70000" font-size="14pt">16.1.6. Internationalisation</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="!
 0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Seam supports sending internationalised messages. By default, the encoding provided by JSF is used, but this can be overridden on the template:
+			</fo:block><fo:block id="id2717034" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;m:message charset="UTF-8"&gt;
+   ...
+&lt;/m:message&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				The body, subject and recipient (and from) name will be encoded. You will need to make sure facelets uses the correct charset for parsing your pages by setting encoding of the template:
+			</fo:block><fo:block id="id3856928" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Creating_a_message-Other_Headers"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Other Headers</fo:marker><fo:block color="#a70000" font-size="14pt">16.1.7. Other Headers</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.m!
 aximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Sometimes you will want to add other headers to your email. Seam provides support for some (see <fo:basic-link internal-destination="Seam_Reference_Guide-Email-Tags"><fo:inline font-style="italic" color="#0066cc">Section 16.4, “Tags”</fo:inline></fo:basic-link>). For example, we can set the importance of the email, and ask for a read receipt:
+			</fo:block><fo:block id="id3577513" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;m:message xmlns:m="http://jboss.com/products/seam/mail"
+           importance="low"
+           requestReadReceipt="true"/&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Otherise you can add any header to the message using the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;m:header&gt;</fo:inline> tag:
+			</fo:block><fo:block id="id3743797" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;m:header name="X-Sent-From" value="JBoss Seam"/&gt;
+</fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Email-Receiving_emails"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Receiving emails</fo:marker><fo:block color="#a70000" font-size="16pt">16.2. Receiving emails</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-bef!
 ore.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			If you are using EJB then you can use a MDB (Message Driven Bean) to receive email. Seam comes with an improved version of <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">mail-ra.rar</fo:inline> as distributed in JBoss AS; until the improvements make there way into a released version of JBoss AS, replacing the default <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">rar</fo:inline> with the one distributed with Seam is recommended.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			You can configure it like this:
+		</fo:block><fo:block id="id2703124" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@MessageDriven(activationConfig={
+         @ActivationConfigProperty(propertyName="mailServer", propertyValue="localhost"),
+         @ActivationConfigProperty(propertyName="mailFolder", propertyValue="INBOX"),
+         @ActivationConfigProperty(propertyName="storeProtocol", propertyValue="pop3"),
+         @ActivationConfigProperty(propertyName="userName", propertyValue="seam"),
+         @ActivationConfigProperty(propertyName="password", propertyValue="seam")
+})
+ at ResourceAdapter("mail-ra.rar")
+ at Name("mailListener")
+public class MailListenerMDB implements MailListener {
+
+   @In(create=true)
+   private OrderProcessor orderProcessor;
+
+   public void onMessage(Message message) {
+      // Process the message
+      orderProcessor.process(message.getSubject());
+   }
+   
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Each message received will cause <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">onMessage(Message message)</fo:inline> to be called. Most seam annotations will work inside a MDB but you must not access the persistence context.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			You can find more information on the default <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">mail-ra.rar</fo:inline> at <fo:basic-link external-destination="url(http://wiki.jboss.org/wiki/Wiki.jsp?page=InboundJavaMail)" font-style="italic" color="#0066cc">http://wiki.jboss.org/wiki/Wiki.jsp?page=InboundJavaMail</fo:basic-link>. The version distributed with Seam also includes a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">debug</fo:inline> property to enable JavaMail debugging, a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">flush</fo:inline> property (by default true) to disable flushing a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">POP3</fo:inline> mailbox after successfullying delivering a message to your MDB and a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">port</fo:inline> property to override the default TCP port.
+		</fo:block><fo:block id="id3373083" color="white" background-color="#8e9f00" space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1em" padding-bottom="12pt" padding-top="12pt" margin-left="0pc"><fo:list-block provisional-distance-between-starts="36pt + 18pt" provisional-label-separation="18pt"><fo:list-item><fo:list-item-label end-indent="label-end()"><fo:block><fo:external-graphic width="auto" height="auto" content-width="36pt" src="url(Common_Content/images/note.svg)"/></fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block font-size="13pt" color="white" font-weight="bold" hyphenate="true" keep-with-next.within-column="always">Note</fo:block><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maxim!
 um="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				The api for this may be altered as changes make there way into the JBoss Enterprise Application Platform.
+			</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Email-Configuration"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Configuration</fo:marker><fo:block color="#a70000" font-size="16pt">16.3. Configuration</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-befor!
 e.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			To include Email support in your application, include <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">jboss-seam-mail.jar</fo:inline> in your WEB-INF/lib directory. If you are using JBoss AS there is no further configuration needed to use Seam's email support. Otherwise you need to make sure you have the JavaMail API, an implementation of the JavaMail API present (the API and impl used in JBoss AS are distributed with seam as <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">lib/mail.jar</fo:inline>), and a copy of the Java Activation Framework (distributed with seam as <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">lib/activation.jar</fo:inline>.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The Seam Email module requires the use of Facelets as the view technology. Future versions of the library may also support the use of JSP. Additionally, it requires the use of the seam-ui package.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">mailSession</fo:inline> component uses JavaMail to talk to a 'real' SMTP server.
+		</fo:block><fo:block id="Seam_Reference_Guide-Configuration-mailSession"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker"><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">mailSession</fo:inline></fo:marker><fo:block color="#a70000" font-size="14pt">16.3.1. <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">mailSession</fo:inline></fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/T!
 R/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				A JavaMail Session may be available via a JNDI lookup if you are working in an JEE environment or you can use a Seam configured Session.
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				The mailSession component's properties are described in more detail in the Mail related components section.
+			</fo:block><fo:block id="Seam_Reference_Guide-mailSession-JNDI_lookup_in_JBoss_AS"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:block color="#a70000" font-size="13pt">16.3.1.1. JNDI lookup in JBoss AS</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" !
 space-after.maximum="1.2em">
+					The JBossAS <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">deploy/mail-service.xml</fo:inline> configures a JavaMail session binding into JNDI. The default service configuration will need altering for your network. <fo:basic-link external-destination="url(http://wiki.jboss.org/wiki/Wiki.jsp?page=JavaMail)" font-style="italic" color="#0066cc">http://wiki.jboss.org/wiki/Wiki.jsp?page=JavaMail</fo:basic-link> describes the service in more detail.
+				</fo:block><fo:block id="id3669132" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;components xmlns="http://jboss.com/products/seam/components"
+        xmlns:core="http://jboss.com/products/seam/core"
+        xmlns:mail="http://jboss.com/products/seam/mail"&gt;
+        
+    &lt;mail:mail-session session-jndi-name="java:/Mail"/&gt;
+    
+&lt;/components&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+					Here we tell Seam to get the mail session bound to <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">java:/Mail</fo:inline> from JNDI.
+				</fo:block></fo:block><fo:block id="Seam_Reference_Guide-mailSession-Seam_configured_Session"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:block color="#a70000" font-size="13pt">16.3.1.2. Seam configured Session</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.mini!
 mum="0.8em" space-after.maximum="1.2em">
+					A mail session can be configured via <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">components.xml</fo:inline>. Here we tell Seam to use <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">smtp.example.com</fo:inline> as the smtp server,
+				</fo:block><fo:block id="id3491647" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;components xmlns="http://jboss.com/products/seam/components"
+        xmlns:core="http://jboss.com/products/seam/core"
+        xmlns:mail="http://jboss.com/products/seam/mail"&gt;
+        
+    &lt;mail:mail-session host="smtp.example.com"/&gt;
+    
+&lt;/components&gt;
+</fo:block></fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Email-Tags"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Tags</fo:marker><fo:block color="#a70000" font-size="16pt">16.4. Tags</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space!
 -after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Emails are generated using tags in the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">http://jboss.com/products/seam/mail</fo:inline> namespace. Documents should always have the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">message</fo:inline> tag at the root of the message. The message tag prepares Seam to generate an email.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The standard templating tags of facelets can be used as normal. Inside the body you can use any JSF tag which does not require access to external resources (stylesheets, javascript).
+		</fo:block><fo:block id="id3850112" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3917320" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline>&lt;m:message&gt;</fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						Root tag of a mail message
+					</fo:block><fo:list-block id="id3299116" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id2755691" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">importance</fo:inline> — low, normal or high. By default normal, this sets the importance of the mail message.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3849012" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">precedence</fo:inline> — sets the precedence of the message (for example, bulk).
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3507878" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">requestReadReceipt</fo:inline> — by default false, if set, a read receipt will be request will be added, with the read receipt being sent to the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">From:</fo:inline> address.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3301869" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">urlBase</fo:inline> — If set, the value is prepended to the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">requestContextPath</fo:inline> allowing you to use components such as <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;h:graphicImage&gt;</fo:inline> in your emails.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3735052" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline>&lt;m:from&gt;</fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						Set's the From: address for the email. You can only have one of these per email.
+					</fo:block><fo:list-block id="id4166532" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3488885" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">name</fo:inline> — the name the email should come from.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3919773" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">address</fo:inline> — the email address the email should come from.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3307572" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline>&lt;m:replyTo&gt;</fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						Set's the Reply-to: address for the email. You can only have one of these per email.
+					</fo:block><fo:list-block id="id3839178" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3403576" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">address</fo:inline> — the email address the email should come from.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3146818" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline>&lt;m:to&gt;</fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						Add a recipient to the email. Use multiple &lt;m:to&gt; tags for multiple recipients. This tag can be safely placed inside a repeat tag such as &lt;ui:repeat&gt;.
+					</fo:block><fo:list-block id="id3789034" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3789206" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">name</fo:inline> — the name of the recipient.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3579885" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">address</fo:inline> — the email address of the recipient.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3914951" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline>&lt;m:cc&gt;</fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						Add a cc recipient to the email. Use multiple &lt;m:cc&gt; tags for multiple ccs. This tag can be safely placed inside a repeat tag such as &lt;ui:repeat&gt;.
+					</fo:block><fo:list-block id="id3734786" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3799612" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">name</fo:inline> — the name of the recipient.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3890087" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">address</fo:inline> — the email address of the recipient.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3403579" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline>&lt;m:bcc&gt;</fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						Add a bcc recipient to the email. Use multiple &lt;m:bcc&gt; tags for multiple bccs. This tag can be safely placed inside a repeat tag such as &lt;ui:repeat&gt;.
+					</fo:block><fo:list-block id="id3149510" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3906480" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">name</fo:inline> — the name of the recipient.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3887969" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">address</fo:inline> — the email address of the recipient.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3916094" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline>&lt;m:header&gt;</fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						Add a header to the email (for example, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">X-Sent-From: JBoss Seam</fo:inline>
+					</fo:block><fo:list-block id="id3856323" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3507684" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">name</fo:inline> — The name of the header to add (e.g. <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">X-Sent-From</fo:inline>).
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3757396" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">value</fo:inline> — The value of the header to add (e.g. <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">JBoss Seam</fo:inline>).
+							</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3146851" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline>&lt;m:attachment&gt;</fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						Add an attachment to the email.
+					</fo:block><fo:list-block id="id3933998" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3926400" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">value</fo:inline> — The file to attach:
+							</fo:block><fo:list-block id="id2970524" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3873074" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+										<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">String</fo:inline> — A <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">String</fo:inline> is interpreted as a path to file within the classpath
+									</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3915786" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+										<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">java.io.File</fo:inline> — An EL expression can reference a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">File</fo:inline> object
+									</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3668958" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+										<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">java.net.URL</fo:inline> — An EL expression can reference a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">URL</fo:inline> object
+									</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3799465" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+										<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">java.io.InputStream</fo:inline> — An EL expression can reference an <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">InputStream</fo:inline>. In this case both a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">fileName</fo:inline> and a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">contentType</fo:inline> must be specified.
+									</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3725679" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+										<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">byte[]</fo:inline> — An EL expression can reference an <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">byte[]</fo:inline>. In this case both a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">fileName</fo:inline> and a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">contentType</fo:inline> must be specified.
+									</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+								If the value attribute is ommitted:
+							</fo:block><fo:list-block id="id3725709" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3725712" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+										If this tag contains a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;p:document&gt;</fo:inline> tag, the document described will be generated and attached to the email. A <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">fileName</fo:inline> should be specfied.
+									</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3725729" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+										If this tag contains other JSF tags a HTML document will be generated from them and attached to the email. A <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">fileName</fo:inline> should be specfied.
+									</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3725745" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">fileName</fo:inline> — Specify the file name to use for the attached file.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3725758" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">contentType</fo:inline> — Specify the MIME type of the attached file
+							</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3725775" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline>&lt;m:subject&gt;</fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						Set's the subject for the email.
+					</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3725790" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline>&lt;m:body&gt;</fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						Set's the body for the email. Supports an <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">alternative</fo:inline> facet which, if an HTML email is generated can contain alternative text for a mail reader which doesn't support html.
+					</fo:block><fo:list-block id="id3725811" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3725813" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">type</fo:inline> — If set to <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">plain</fo:inline> then a plain text email will be generated otherwise an HTML email is generated.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block></fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="body" language="en" format="1" initial-page-number="auto-odd" force-page-count="end-on-even" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo!
 :table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always" font-weight="bold">Chapter 17.</fo:inline></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-wi!
 dth="proportional-column-width(0)"/><fo:table-column column-nu!
 mber="3"
 column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always"><fo:retrieve-marker retrieve-class-name="section.head.marker" retrieve-position="first-including-carryover" retrieve-boundary="page-sequence"/></fo:inline></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style!
 ="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always" font-weight="bold">Chapter 17. Asynchronicity and messaging</fo:inline></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block wrap-option="no-wrap" font-family="Libera!
 tion Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><f!
 o:table 
table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-footnote-separator"><fo:block><fo:leader color="black" leader-pattern="rule" leader-length="1in"/></fo:block></fo:static-!
 content><fo:static-content flow-name="xsl-region-after-first"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:t!
 able-cell></fo:table-row></fo:table-body></fo:table></fo:block!
 ></fo:st
atic-content><fo:static-content flow-name="xsl-region-after-odd"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo!
 :table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-even"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-al!
 ign="after" relative-align="baseline"><fo:block><fo:block/></f!
 o:block>
</fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-blank"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" displa!
 y-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:flow flow-name="xsl-region-body" start-indent="0pt" end-indent="0pt"><fo:block id="Seam_Reference_Guide-Asynchronicity_and_messaging"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats"><fo:block margin-left="0pc"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" color="#a70000" background-color="white" font-size="24pt" font-weight="bold" text-align="left" padding-left="1em" padding-right="1em">Asynchronicity and messaging</fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2e!
 m">
+		Seam makes it very easy to perform work asynchronously from a web request. When most people think of asynchronicity in Java EE, they think of using JMS. This is certainly one way to approach the problem in Seam, and is the right way when you have strict and well-defined quality of service requirements. Seam makes it easy to send and recieve JMS messages using Seam components.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		But for many usecases, JMS is overkill. Seam layers a simple asynchronous method and event facility over the EJB 3.0 timer service.
+	</fo:block><fo:block id="Seam_Reference_Guide-Asynchronicity_and_messaging-Asynchronicity"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Asynchronicity</fo:marker><fo:block color="#a70000" font-size="16pt">17.1. Asynchronicity</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.!
 maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Asynchronous events and method calls have the same quality of service expectations as the container's EJB timer service. If you are not familiar with the Timer service, do not worry, you do not need to interact with it directly if you want to use asynchronous methods in Seam.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		To use asynchronous methods and events, you need to add the following line to <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">components.xml</fo:inline>:
+	</fo:block><fo:block id="id2704108" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;core:dispatcher/&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Note that this functionality is not available in environments which do not support EJB 3.0.
+	</fo:block><fo:block id="Seam_Reference_Guide-Asynchronicity-Asynchronous_methods"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Asynchronous methods</fo:marker><fo:block color="#a70000" font-size="14pt">17.1.1. Asynchronous methods</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-b!
 efore.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		In simplest form, an asynchronous call just lets a method call be processed asynchronously (in a different thread) from the caller. We usually use an asynchronous call when we want to return an immediate response to the client, and let some expensive work be processed in the background. This pattern works very well in applications which use AJAX, where the client can automatically poll the server for the result of the work.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		For EJB components, we annotate the local interface to specify that a method is processed asynchronously.
+	</fo:block><fo:block id="id3890202" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Local
+public interface PaymentHandler
+{
+    @Asynchronous
+    public void processPayment(Payment payment);
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		(For JavaBean components we can annotate the component implementation class if we like.)
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The use of asynchronicity is transparent to the bean class:
+	</fo:block><fo:block id="id3308034" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Stateless
+ at Name("paymentHandler")
+public class PaymentHandlerBean implements PaymentHandler
+{
+    public void processPayment(Payment payment)
+    {
+        //do some work!
+    }
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		And also transparent to the client:
+	</fo:block><fo:block id="id4179135" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Stateful
+ at Name("paymentAction")
+public class CreatePaymentAction
+{
+    @In(create=true) PaymentHandler paymentHandler;
+    @In Bill bill;
+    
+    public String pay()
+    {
+        paymentHandler.processPayment( new Payment(bill) );
+        return "success";
+    }
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The asynchronous method is processed in a completely new event context and does not have access to the session or conversation context state of the caller. However, the business process context <fo:inline font-style="italic">is</fo:inline> propagated.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Asynchronous method calls may be scheduled for later execution using the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Duration</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Expiration</fo:inline> and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@IntervalDuration</fo:inline> annotations.
+	</fo:block><fo:block id="id3713222" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Local
+public interface PaymentHandler
+{
+    @Asynchronous
+    public void processScheduledPayment(Payment payment, @Expiration Date date);
+
+    @Asynchronous
+    public void processRecurringPayment(Payment payment, @Expiration Date date, 
+      @IntervalDuration Long interval)'
+}
+</fo:block><fo:block id="id3941865" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Stateful
+ at Name("paymentAction")
+public class CreatePaymentAction
+{
+    @In(create=true) PaymentHandler paymentHandler;
+    @In Bill bill;
+    
+    public String schedulePayment()
+    {
+        paymentHandler.processScheduledPayment( new Payment(bill), bill.getDueDate() );
+        return "success";
+    }
+
+    public String scheduleRecurringPayment()
+    {
+        paymentHandler.processRecurringPayment( new Payment(bill), bill.getDueDate(), ONE_MONTH );
+        return "success";
+    }
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Both client and server may access the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Timer</fo:inline> object associated with the invocation.
+	</fo:block><fo:block id="id3807366" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Local
+public interface PaymentHandler
+{
+    @Asynchronous
+    public Timer processScheduledPayment(Payment payment, @Expiration Date date);
+}
+</fo:block><fo:block id="id3789009" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Stateless
+ at Name("paymentHandler")
+public class PaymentHandlerBean implements PaymentHandler
+{
+    @In Timer timer;
+    
+    public Timer processScheduledPayment(Payment payment, @Expiration Date date)
+    {
+        //do some work!
+        
+        return timer; //note that return value is completely ignored
+    }
+
+}
+</fo:block><fo:block id="id3419729" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Stateful
+ at Name("paymentAction")
+public class CreatePaymentAction
+{
+    @In(create=true) PaymentHandler paymentHandler;
+    @In Bill bill;
+    
+    public String schedulePayment()
+    {
+        Timer timer = paymentHandler.processScheduledPayment( new Payment(bill), bill.getDueDate() );
+        return "success";
+    }
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Asynchronous methods cannot return any other value to the caller.
+	</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Asynchronicity-Asynchronous_events"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Asynchronous events</fo:marker><fo:block color="#a70000" font-size="14pt">17.1.2. Asynchronous events</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em"!
  space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Component-driven events may also be asynchronous. To raise an event for asynchronous processing, simply call the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">raiseAsynchronousEvent()</fo:inline> methods of the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Events</fo:inline> class. To schedule a timed event, call one of the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">raiseTimedEvent()</fo:inline> methods. Components may observe asynchronous events in the usual way, but remember that only the business process context is propagated to the asynchronous thread.
+	</fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Asynchronicity_and_messaging-Messaging_in_Seam"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Messaging in Seam</fo:marker><fo:block color="#a70000" font-size="16pt">17.2. Messaging in Seam</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-befor!
 e.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Seam makes it easy to send and receive JMS messages to and from Seam components.
+	</fo:block><fo:block id="Seam_Reference_Guide-Messaging_in_Seam-Configuration"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Configuration</fo:marker><fo:block color="#a70000" font-size="14pt">17.2.1. Configuration</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1!
 em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		To configure Seam's infrastructure for sending JMS messages, you need to tell Seam about any topics and queues you want to send messages to, and also tell Seam where to find the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">QueueConnectionFactory</fo:inline> and/or <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">TopicConnectionFactory</fo:inline>.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Seam defaults to using <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">UIL2ConnectionFactory</fo:inline> which is the usual connection factory for use with JBossMQ. If you are using some other JMS provider, you need to set one or both of <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">queueConnection.queueConnectionFactoryJndiName</fo:inline> and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">topicConnection.topicConnectionFactoryJndiName</fo:inline> in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">seam.properties</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">web.xml</fo:inline> or <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">components.xml</fo:inline>.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		You also need to list topics and queues in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">components.xml</fo:inline> to install Seam managed <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">TopicPublisher</fo:inline>s and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">QueueSender</fo:inline>s:
+	</fo:block><fo:block id="id2824907" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+&lt;jms:managed-topic-publisher name="stockTickerPublisher" 
+                   auto-create="true  topic-jndi-name="topic/stockTickerTopic"/&gt;
+
+&lt;jms:managed-queue-sender name="paymentQueueSender" auto-create="true" 
+    queue-jndi-name="queue/paymentQueue"/&gt;
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc" color="#a70000" font-size="11pt">Using JBoss Messaging</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			For using JBoss Messaging which comes with JBoss Enterprise Application Platform 4.3, you should first set the value of the properties '<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">queueConnection.queueConnectionFactoryJndiName</fo:inline>' and '<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">topicConnection.topicConnectionFactoryJndiName</fo:inline>' to '<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">ConnectionFactory</fo:inline>' which is the default connection factory for JBoss Messaging. Then set the value of the '<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">connectionProvider</fo:inline>' property to '<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.remoting.messaging.JBossMessagingConnectionProvider</fo:inline>' on the class component '<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.remoting.messagin!
 g.SubscriptionRegistry</fo:inline>', which creates topic connections for jboss messaging. 
+<fo:block id="id3941860" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+&lt;component name="org.jboss.seam.jms.topicConnection"&gt;
+	&lt;property name="topicConnectionFactoryJndiName"&gt;
+	ConnectionFactory
+	&lt;/property&gt;
+&lt;/component&gt;
+&lt;component class="org.jboss.seam.remoting.messaging.SubscriptionRegistry" installed="true"&gt;
+	&lt;property name="allowedTopics"&gt;
+	chatroomTopic
+	&lt;/property&gt;
+	&lt;property name="connectionProvider"&gt;
+	org.jboss.seam.remoting.messaging.JBossMessagingConnectionProvider
+	&lt;/property&gt;
+&lt;/component&gt;
+</fo:block>
+			 You also need to update the topics to use JBoss Messaging as shown in the code fragment below. 
+<fo:block id="id3299102" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+&lt;server&gt;
+	&lt;mbean code="org.jboss.jms.server.destination.TopicService"
+               name="jboss.messaging.destination:service=Topic,name=chatroomTopic"
+                                            xmbean-dd="xmdesc/Topic-xmbean.xml"&gt;
+		&lt;depends optional-attribute-name="ServerPeer"&gt;
+		jboss.messaging:service=ServerPeer
+		&lt;/depends&gt;
+		&lt;depends&gt;
+		jboss.messaging:service=PostOffice
+		&lt;/depends&gt;
+		&lt;attribute name="SecurityConfig"&gt;
+			&lt;security&gt;
+			  &lt;role name="guest" read="true" write="true"/&gt;
+			  &lt;role name="publisher" read="true" write="true" create="false"/&gt;
+			  &lt;role name="durpublisher" read="true" write="true" create="true"/&gt;
+			&lt;/security&gt;
+		&lt;/attribute&gt;
+	&lt;/mbean&gt;
+&lt;/server&gt;
+</fo:block>
+		</fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Messaging_in_Seam-Sending_messages"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Sending messages</fo:marker><fo:block color="#a70000" font-size="14pt">17.2.2. Sending messages</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="!
 0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Now, you can inject a JMS <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">TopicPublisher</fo:inline> and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">TopicSession</fo:inline> into any component:
+	</fo:block><fo:block id="id2769864" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@In 
+private TopicPublisher stockTickerPublisher;   
+ at In 
+private TopicSession topicSession;
+
+public void publish(StockPrice price) {
+      try
+      {
+         topicPublisher.publish( topicSession.createObjectMessage(price) );
+      } 
+      catch (Exception ex)
+      {
+         throw new RuntimeException(ex);
+      } 
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Or, for working with a queue:
+	</fo:block><fo:block id="id2704104" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@In
+private QueueSender paymentQueueSender;   
+ at In
+private QueueSession queueSession;
+
+public void publish(Payment payment) {
+      try
+      {
+         paymentQueueSender.send( queueSession.createObjectMessage(payment) );
+      } 
+      catch (Exception ex)
+      {
+         throw new RuntimeException(ex);
+      } 
+}
+</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Messaging_in_Seam-Receiving_messages_using_a_message_driven_bean"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Receiving messages using a message-driven bean</fo:marker><fo:block color="#a70000" font-size="14pt">17.2.3. Receiving messages using a message-driven bean</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.re!
 nderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		You can process messages using any EJB3 message driven bean. Message-driven beans may even be Seam components, in which case it is possible to inject other event and application scoped Seam components.
+	</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Messaging_in_Seam-Receiving_messages_in_the_client"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Receiving messages in the client</fo:marker><fo:block color="#a70000" font-size="14pt">17.2.4. Receiving messages in the client</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.mi!
 nimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Seam Remoting lets you subscribe to a JMS topic from client-side JavaScript. This is described in the next chapter.
+	</fo:block></fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="body" language="en" format="1" initial-page-number="auto-odd" force-page-count="end-on-even" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-!
 cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always" font-weight="bold">Chapter 18.</fo:inline></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-w!
 idth="proportional-column-width(1)"/><fo:table-body><fo:table-!
 row bloc
k-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always"><fo:retrieve-marker retrieve-class-name="section.head.marker" retrieve-position="first-including-carryover" retrieve-boundary="page-sequence"/></fo:inline></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-!
 width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always" font-weight="bold">Chapter 18. Caching</fo:inline></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="10!
 0%" border-bottom-width="0.5pt" border-bottom-style="solid" bo!
 rder-bot
tom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-footnote-separator"><fo:block><fo:leader color="black" leader-pattern="rule" leader-length="1in"/></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block font-family="Liberation Sans!
 ,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-conten!
 t flow-name="xsl-region-after-odd"><fo:block font-family="Libe!
 ration S
ans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-cont!
 ent flow-name="xsl-region-after-even"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row!
 ></fo:table-body></fo:table></fo:block></fo:static-content><fo!
 :static-
content flow-name="xsl-region-after-blank"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table!
 -row></fo:table-body></fo:table></fo:block></fo:static-content><fo:flow flow-name="xsl-region-body" start-indent="0pt" end-indent="0pt"><fo:block id="cache"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats"><fo:block margin-left="0pc"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" color="#a70000" background-color="white" font-size="24pt" font-weight="bold" text-align="left" padding-left="1em" padding-right="1em">Caching</fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		In almost all enterprise applications, the database is the primary bottleneck, and the least scalable tier of the runtime environment. So anything we can possibly do to share the database <fo:inline font-style="italic">less often</fo:inline> is worth doing.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		This calls for a cache. Well, not just one cache. A well designed Seam application will feature a rich, multi-layered caching strategy that impacts every layer of the application:
+	</fo:block><fo:list-block id="id2716989" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3388343" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				The database has its own cache. This is particularly important, but cannot scale like a cache in the application tier.
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3743687" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				Your ORM solution (Hibernate, or some other JPA implementation) has a second-level cache of data from the database. This is a very powerful capability, but is often misused. In a clustered environment, keeping the data in the cache transactionally consistent across the whole cluster, and with the database, is quite expensive. It makes most sense for data which is shared between many users, and is updated rarely. 
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3357098" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				The Seam conversation context is a cache of conversational state. Components you put into the conversation context can hold and cache state relating to the current user interaction.
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2849486" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				In particular, the Seam-managed persistence context (or an extended EJB container-managed persistence context associated with a conversation-scoped stateful session bean) acts as a cache of data that has been read in the current conversation. This cache tends to have a pretty high hitrate. Seam optimizes the replication of Seam-managed persistence contexts in a clustered environment, and there is no requirement for transactional consistency with the database (optimistic locking is sufficient) so you do not need to worry too much about the performance implications of this cache, unless you read thousands of objects into a single persistence context.
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3774983" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				The application can cache non-transactional state in the Seam application context. State kept in the application context is of course not visible to other nodes in the cluster.
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2650761" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				The application can cache transactional state using the Seam <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">pojoCache</fo:inline> component, which integrates JBossCache into the Seam environment. This state will be visible to other nodes if you run JBoss cache in a clustered mode.
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3419745" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				Finally, Seam lets you cache rendered fragments of a JSF page. Unlike the ORM second-level cache, this cache is not automatically invalidated when data changes, so you need to write application code to perform explicit invalidation, or set appropriate expiration policies.
+			</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		For more information about the second-level cache, you will need to refer to the documentation of your ORM solution, since this is an extremely complex topic. In this section we will discuss the use of JBossCache directly, via the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">pojoCache</fo:inline> component, or as the page fragment cache, via the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;s:cache&gt;</fo:inline> control.
+	</fo:block><fo:block id="id2673797"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Using JBossCache in Seam</fo:marker><fo:block color="#a70000" font-size="16pt">18.1. Using JBossCache in Seam</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum!
 ="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The built-in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">pojoCache</fo:inline> component manages an instance of <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.cache.aop.PojoCache</fo:inline>. You can safely put any immutable Java object in the cache, and it will be replicated across the cluster (assuming that replication is enabled). If you want to keep mutable objects in the cache, you will need to run the JBoss Cache bytecode preprocessor to ensure that changes to the objects will be automatically detected and replicated.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			To use <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">pojoCache</fo:inline>, all you need to do is put the JBossCache jars in the classpath, and provide a resource named <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">treecache.xml</fo:inline> with an appropriate cache configuration. JBoss Cache has many scary and confusing configuration settings, so we won't discuss them here. Please refer to the JBoss Cache documentation for more information.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			You can find a sample <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">treecache.xml</fo:inline> in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">examples/blog/resources/treecache.xml</fo:inline>.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			For an EAR deployment of Seam, we recommend that the JBoss Cache jars and configuration go directly into the EAR. Make sure you place both <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">jboss-cache.jar</fo:inline> and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">jgroups.jar</fo:inline> in your EAR's lib folder.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Now you can inject the cache into any Seam component:
+		</fo:block><fo:block id="id3684878" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Name("chatroom")
+public class Chatroom {
+    @In PojoCache pojoCache;
+    
+    public void join(String username) {
+      try
+      {
+         Set&lt;String&gt; userList = (Set&lt;String&gt;) pojoCache.get("chatroom", "userList");
+         if (userList==null) 
+         {
+            userList = new HashSet&lt;String&gt;();
+            pojoCache.put("chatroom", "userList", userList);
+         }
+         userList.put(username);
+      }
+      catch (CacheException ce)
+      {
+         throw new RuntimeException(ce);
+      }
+    }
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			If you want to have multiple JBoss Cache configurations in your application, use <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">components.xml</fo:inline>:
+		</fo:block><fo:block id="id3684810" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;core:pojo-cache name="myCache" cfg-resource-name="myown/cache.xml"/&gt;
+</fo:block></fo:block><fo:block id="id3092922"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Page fragment caching</fo:marker><fo:block color="#a70000" font-size="16pt">18.2. Page fragment caching</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.opt!
 imum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The most interesting use of JBoss Cache is the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;s:cache&gt;</fo:inline> tag, Seam's solution to the problem of page fragment caching in JSF. <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;s:cache&gt;</fo:inline> uses <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">pojoCache</fo:inline> internally, so you need to follow the steps listed above before you can use it. 
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;s:cache&gt;</fo:inline> is used for caching some rendered content which changes rarely. For example, the welcome page of our blog displays the recent blog entries:
+		</fo:block><fo:block id="id3608797" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;s:cache key="recentEntries-#{blog.id}" region="welcomePageFragments"&gt;
+   &lt;h:dataTable value="#{blog.recentEntries}" var="blogEntry"&gt;
+      &lt;h:column&gt;
+         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;
+         &lt;div&gt;
+            &lt;s:formattedText value="#{blogEntry.body}"/&gt;
+         &lt;/div&gt;
+      &lt;/h:column&gt;
+   &lt;/h:dataTable&gt;
+&lt;/s:cache&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">key</fo:inline> will let you have multiple cached versions of each page fragment. In this case, there is one cached version per blog. The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">region</fo:inline> determines the JBossCache node that all version will be stored in. Different nodes may have different expiry policies (setup during the previous steps). 
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The issue with the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;s:cache&gt;</fo:inline> tag is that it is unable to recognize when the underlying data changes (for example, when the blogger posts a new entry). So you need to evict the cached fragment manually:
+		</fo:block><fo:block id="id2803660" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">public void post() {
+    ...
+    entityManager.persist(blogEntry);
+    pojoCache.remove("welcomePageFragments", "recentEntries-" + blog.getId() );
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Alternatively, if it is not critical that changes are immediately visible to the user, you could set a short expiry time on the JbossCache node.
+		</fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="body" language="en" format="1" initial-page-number="auto-odd" force-page-count="end-on-even" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-!
 align="start" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always" font-weight="bold">Chapter 19.</fo:inline></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="prop!
 ortional-column-width(1)"/><fo:table-body><fo:table-row block-!
 progress
ion-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always"><fo:retrieve-marker retrieve-class-name="section.head.marker" retrieve-position="first-including-carryover" retrieve-boundary="page-sequence"/></fo:inline></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="pro!
 portional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always" font-weight="bold">Chapter 19. Remoting</fo:inline></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" borde!
 r-bottom-width="0.5pt" border-bottom-style="solid" border-bott!
 om-color
="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-footnote-separator"><fo:block><fo:leader color="black" leader-pattern="rule" leader-length="1in"/></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block font-family="Liberation Sans,sans-ser!
 if,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-na!
 me="xsl-region-after-odd"><fo:block font-family="Liberation Sa!
 ns,sans-
serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-!
 name="xsl-region-after-even"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:tab!
 le-body></fo:table></fo:block></fo:static-content><fo:static-c!
 ontent f
low-name="xsl-region-after-blank"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo!
 :table-body></fo:table></fo:block></fo:static-content><fo:flow flow-name="xsl-region-body" start-indent="0pt" end-indent="0pt"><fo:block id="Seam_Reference_Guide-Remoting"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats"><fo:block margin-left="0pc"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" color="#a70000" background-color="white" font-size="24pt" font-weight="bold" text-align="left" padding-left="1em" padding-right="1em">Remoting</fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Seam provides a convenient method of remotely accessing components from a web page, using AJAX (Asynchronous Javascript and XML). The framework for this functionality is provided with almost no up-front development effort - your components only require simple annotating to become accessible via AJAX. This chapter describes the steps required to build an AJAX-enabled web page, then goes on to explain the features of the Seam Remoting framework in more detail.
+	</fo:block><fo:block id="Seam_Reference_Guide-Remoting-Configuration"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Configuration</fo:marker><fo:block color="#a70000" font-size="16pt">19.1. Configuration</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-a!
 fter.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		To use remoting, the Seam Resource servlet must first be configured in your <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">web.xml</fo:inline> file:
+	</fo:block><fo:block id="id2732050" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+          
+  &lt;servlet&gt;
+    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;
+    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-class&gt;
+  &lt;/servlet&gt;
+
+  &lt;servlet-mapping&gt;
+    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;
+    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;
+  &lt;/servlet-mapping&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The next step is to import the necessary Javascript into your web page. There are a minimum of two scripts that must be imported. The first one contains all the client-side framework code that enables remoting functionality:
+	</fo:block><fo:block id="id3450053" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+          
+  &lt;script type="text/javascript" src="seam/resource/remoting/resource/remote.js"&gt;&lt;/script&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The second script contains the stubs and type definitions for the components you wish to call. It is generated dynamically based on the local interface of your components, and includes type definitions for all of the classes that can be used to call the remotable methods of the interface. The name of the script reflects the name of your component. For example, if you have a stateless session bean annotated with <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Name("customerAction")</fo:inline>, then your script tag should look like this:
+	</fo:block><fo:block id="id3403960" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+          
+  &lt;script type="text/javascript" src="seam/resource/remoting/interface.js?customerAction"&gt;
+    &lt;/script&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		If you wish to access more than one component from the same page, then include them all as parameters of your script tag:
+	</fo:block><fo:block id="id3757171" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+          
+  &lt;script type="text/javascript" 
+     src="seam/resource/remoting/interface.js?customerAction&amp;accountAction"&gt;
+  &lt;/script&gt;
+</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Remoting-The_Seam_object"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">The "Seam" object</fo:marker><fo:block color="#a70000" font-size="16pt">19.2. The "Seam" object</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.max!
 imum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Client-side interaction with your components is all performed via the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Seam</fo:inline> Javascript object. This object is defined in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">remote.js</fo:inline>, and you will be using it to make asynchronous calls against your component. It is split into two areas of functionality; <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Seam.Component</fo:inline> contains methods for working with components and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Seam.Remoting</fo:inline> contains methods for executing remote requests. The easiest way to become familiar with this object is to start with a simple example.
+	</fo:block><fo:block id="Seam_Reference_Guide-The_Seam_object-A_Hello_World_example"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">A Hello World example</fo:marker><fo:block color="#a70000" font-size="14pt">19.2.1. A Hello World example</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" spa!
 ce-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Let us step through a simple example to see how the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Seam</fo:inline> object works. First of all, let us create a new Seam component called <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">helloAction</fo:inline>.
+	</fo:block><fo:block id="id3800509" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+          
+  @Stateless
+  @Name("helloAction")
+  public class HelloAction implements HelloLocal {
+    public String sayHello(String name) {
+      return "Hello, " + name;
+    }
+  }
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		You also need to create a local interface for our new component - take special note of the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@WebRemote</fo:inline> annotation, as it is required to make our method accessible via remoting:
+	</fo:block><fo:block id="id3208955" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+          
+  @Local
+  public interface HelloLocal {
+    @WebRemote
+    public String sayHello(String name);
+  }
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		That is all the server-side code we need to write. Now for our web page - create a new page and import the following scripts:
+	</fo:block><fo:block id="id3432740" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+          
+  &lt;script type="text/javascript" src="seam/resource/remoting/resource/remote.js"&gt;&lt;/script&gt;
+  &lt;script type="text/javascript" src="seam/resource/remoting/interface.js?helloAction"&gt;&lt;/script&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		To make this a fully interactive user experience, let us add a button to our page:
+	</fo:block><fo:block id="id3062257" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+          
+  &lt;button onclick="javascript:sayHello()"&gt;Say Hello&lt;/button&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		We will also need to add some more script to make our button actually do something when it is clicked:
+	</fo:block><fo:block id="id3669100" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+          
+  &lt;script type="text/javascript"&gt;
+    //&lt;![CDATA[
+
+    function sayHello() {
+      var name = prompt("What is your name?");
+      Seam.Component.getInstance("helloAction").sayHello(name, sayHelloCallback);
+    }
+
+    function sayHelloCallback(result) {
+      alert(result);
+    }
+
+    // ]]&gt;
+  &lt;/script&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Now deploy your application and browse to your page. Click the button, and enter a name when prompted. A message box will display the hello message confirming that the call was successful. If you want to save some time, you will find the full source code for this Hello World example in Seam's <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">/examples/remoting/helloworld</fo:inline> directory.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		So what does the code of our script actually do? Let us break it down into smaller pieces. To start with, you can see from the Javascript code listing that we have implemented two methods - the first method is responsible for prompting the user for their name and then making a remote request. Take a look at the following line:
+	</fo:block><fo:block id="id3890348" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+  Seam.Component.getInstance("helloAction").sayHello(name, sayHelloCallback);
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The first section of this line, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Seam.Component.getInstance("helloAction")</fo:inline> returns a proxy, or "stub" for our <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">helloAction</fo:inline> component. We can invoke the methods of our component against this stub, which is exactly what happens with the remainder of the line: <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">sayHello(name, sayHelloCallback);</fo:inline>.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		What this line of code in its completeness does, is invoke the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">sayHello</fo:inline> method of our component, passing in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">name</fo:inline> as a parameter. The second parameter, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">sayHelloCallback</fo:inline> is not a parameter of our component's <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">sayHello</fo:inline> method, instead it tells the Seam Remoting framework that once it receives the response to our request, it should pass it to the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">sayHelloCallback</fo:inline> Javascript method. This callback parameter is entirely optional, so feel free to leave it out if you are calling a method with a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">void</fo:inline>!
  return type or if you do not care about the result.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">sayHelloCallback</fo:inline> method, once receiving the response to our remote request then pops up an alert message displaying the result of our method call.
+	</fo:block></fo:block><fo:block id="Seam_Reference_Guide-The_Seam_object-Seam.Component"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Seam.Component</fo:marker><fo:block color="#a70000" font-size="14pt">19.2.2. Seam.Component</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.!
 maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Seam.Component</fo:inline> Javascript object provides a number of client-side methods for working with your Seam components. The two main methods, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">newInstance()</fo:inline> and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">getInstance()</fo:inline> are documented in the following sections however their main difference is that <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">newInstance()</fo:inline> will always create a new instance of a component type, and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">getInstance()</fo:inline> will return a singleton instance.
+	</fo:block><fo:block id="Seam_Reference_Guide-Seam.Component-Seam.Component.newInstance"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:block color="#a70000" font-size="13pt">19.2.2.1. Seam.Component.newInstance()</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum!
 ="0.8em" space-after.maximum="1.2em">
+		Use this method to create a new instance of an entity or Javabean component. The object returned by this method will have the same getter/setter methods as its server-side counterpart, or alternatively if you wish you can access its fields directly. Take the following Seam entity component for example:
+	</fo:block><fo:block id="id4172740" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+  @Name("customer")
+  @Entity
+  public class Customer implements Serializable
+  {
+    private Integer customerId;
+    private String firstName;
+    private String lastName;
+    
+    @Column public Integer getCustomerId() { 
+      return customerId; 
+    }
+    
+    public void setCustomerId(Integer customerId} { 
+      this.customerId = customerId; 
+    }
+    
+    @Column public String getFirstName() { 
+      return firstName; 
+    }
+    
+    public void setFirstName(String firstName) {
+      this.firstName = firstName; 
+    }
+    
+    @Column public String getLastName() {
+      return lastName;
+    }
+    
+    public void setLastName(String lastName) {
+      this.lastName = lastName;
+    }
+  }
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		To create a client-side Customer you would write the following code:
+	</fo:block><fo:block id="id2660588" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+  var customer = Seam.Component.newInstance("customer");
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Then from here you can set the fields of the customer object:
+	</fo:block><fo:block id="id2732041" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+  customer.setFirstName("John");
+  // Or you can set the fields directly
+  customer.lastName = "Smith";
+</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Seam.Component-Seam.Component.getInstance"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:block color="#a70000" font-size="13pt">19.2.2.2. Seam.Component.getInstance()</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-aft!
 er.minimum="0.8em" space-after.maximum="1.2em">
+		The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">getInstance()</fo:inline> method is used to get a reference to a Seam session bean component stub, which can then be used to remotely execute methods against your component. This method returns a singleton for the specified component, so calling it twice in a row with the same component name will return the same instance of the component.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		To continue our example from before, if we have created a new <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">customer</fo:inline> and we now wish to save it, we would pass it to the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">saveCustomer()</fo:inline> method of our <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">customerAction</fo:inline> component:
+	</fo:block><fo:block id="id3928273" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+  Seam.Component.getInstance("customerAction").saveCustomer(customer);
+</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Seam.Component-Seam.Component.getComponentName"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:block color="#a70000" font-size="13pt">19.2.2.3. Seam.Component.getComponentName()</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em"!
  space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Passing an object into this method will return its component name if it is a component, or <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">null</fo:inline> if it is not.
+	</fo:block><fo:block id="id3147440" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+  if (Seam.Component.getComponentName(instance) == "customer")
+    alert("Customer");
+  else if (Seam.Component.getComponentName(instance) == "staff")
+    alert("Staff member");
+</fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-The_Seam_object-Seam.Remoting"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Seam.Remoting</fo:marker><fo:block color="#a70000" font-size="14pt">19.2.3. Seam.Remoting</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-!
 before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Most of the client side functionality for Seam Remoting is contained within the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Seam.Remoting</fo:inline> object. While you should not need to directly call most of its methods, there are a couple of important ones worth mentioning.
+	</fo:block><fo:block id="Seam_Reference_Guide-Seam.Remoting-Seam.Remoting.createType"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:block color="#a70000" font-size="13pt">19.2.3.1. Seam.Remoting.createType()</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8!
 em" space-after.maximum="1.2em">
+		If your application contains or uses Javabean classes that are not Seam components, you may need to create these types on the client side to pass as parameters into your component method. Use the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">createType()</fo:inline> method to create an instance of your type. Pass in the fully qualified Java class name as a parameter:
+	</fo:block><fo:block id="id3147196" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+  var widget = Seam.Remoting.createType("com.acme.widgets.MyWidget");
+</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Seam.Remoting-Seam.Remoting.getTypeName"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:block color="#a70000" font-size="13pt">19.2.3.2. Seam.Remoting.getTypeName()</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.!
 minimum="0.8em" space-after.maximum="1.2em">
+		This method is the equivalent of <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Seam.Component.getComponentName()</fo:inline> but for non-component types. It will return the name of the type for an object instance, or <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">null</fo:inline> if the type is not known. The name is the fully qualified name of the type's Java class.
+	</fo:block></fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Remoting-Client_Interfaces"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Client Interfaces</fo:marker><fo:block color="#a70000" font-size="16pt">19.3. Client Interfaces</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum!
 ="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		In the configuration section above, the interface, or "stub" for our component is imported into our page via <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">seam/resource/remoting/interface.js</fo:inline>:
+	</fo:block><fo:block id="id4178675" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+        
+  &lt;script type="text/javascript" src="seam/resource/remoting/interface.js?customerAction"&gt;
+  &lt;/script&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		By including this script in our page, the interface definitions for our component, plus any other components or types that are required to execute the methods of our component are generated and made available for the remoting framework to use.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		There are two types of client stub that can be generated, "executable" stubs and "type" stubs. Executable stubs are behavioural, and are used to execute methods against your session bean components, while type stubs contain state and represent the types that can be passed in as parameters or returned as a result.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The type of client stub that is generated depends on the type of your Seam component. If the component is a session bean, then an executable stub will be generated, otherwise if it is an entity or JavaBean, then a type stub will be generated. There is one exception to this rule; if your component is a JavaBean (ie it is not a session bean nor an entity bean) and any of its methods are annotated with @WebRemote, then an executable stub will be generated for it instead of a type stub. This allows you to use remoting to call methods of your JavaBean components in a non-EJB environment where you do not have access to session beans.
+	</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Remoting-The_Context"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">The Context</fo:marker><fo:block color="#a70000" font-size="16pt">19.4. The Context</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" sp!
 ace-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The Seam Remoting Context contains additional information which is sent and received as part of a remoting request/response cycle. At this stage it only contains the conversation ID but may be expanded in the future.
+	</fo:block><fo:block id="Seam_Reference_Guide-The_Context-Setting_and_reading_the_Conversation_ID"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Setting and reading the Conversation ID</fo:marker><fo:block color="#a70000" font-size="14pt">19.4.1. Setting and reading the Conversation ID</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-befor!
 e.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		If you intend on using remote calls within the scope of a conversation then you need to be able to read or set the conversation ID in the Seam Remoting Context. To read the conversation ID after making a remote request call <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Seam.Remoting.getContext().getConversationId()</fo:inline>. To set the conversation ID before making a request, call <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Seam.Remoting.getContext().setConversationId()</fo:inline>.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		If the conversation ID has not been explicitly set with <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Seam.Remoting.getContext().setConversationId()</fo:inline>, then it will be automatically assigned the first valid conversation ID that is returned by any remoting call. If you are working with multiple conversations within your page, then you may need to explicitly set the conversation ID before each call. If you are working with just a single conversation, then you do not need to do anything special.
+	</fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Remoting-Batch_Requests"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Batch Requests</fo:marker><fo:block color="#a70000" font-size="16pt">19.5. Batch Requests</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-befor!
 e.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Seam Remoting allows multiple component calls to be executed within a single request. It is recommended that this feature is used wherever it is appropriate to reduce network traffic.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The method <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Seam.Remoting.startBatch()</fo:inline> will start a new batch, and any component calls executed after starting a batch are queued, rather than being sent immediately. When all the desired component calls have been added to the batch, the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Seam.Remoting.executeBatch()</fo:inline> method will send a single request containing all of the queued calls to the server, where they will be executed in order. After the calls have been executed, a single response containining all return values will be returned to the client and the callback functions (if provided) triggered in the same order as execution.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		If you start a new batch via the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">startBatch()</fo:inline> method but then decide you do not want to send it, the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Seam.Remoting.cancelBatch()</fo:inline> method will discard any calls that were queued and exit the batch mode.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		To see an example of a batch being used, take a look at <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">/examples/remoting/chatroom</fo:inline>.
+	</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Remoting-Working_with_Data_types"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Working with Data types</fo:marker><fo:block color="#a70000" font-size="16pt">19.6. Working with Data types</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Working_with_Data_types-Primitives__Basic_Types"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,!
 sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Primitives / Basic Types</fo:marker><fo:block color="#a70000" font-size="14pt">19.6.1. Primitives / Basic Types</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		This section describes the support for basic data types. On the server side these values are generally compatible with either their primitive type or their corresponding wrapper class.
+	</fo:block><fo:block id="Seam_Reference_Guide-Primitives__Basic_Types-String"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:block color="#a70000" font-size="13pt">19.6.1.1. String</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2!
 em">
+		Simply use Javascript String objects when setting String parameter values.
+	</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Primitives__Basic_Types-Number"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:block color="#a70000" font-size="13pt">19.6.1.2. Number</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.m!
 aximum="1.2em">
+		There is support for all number types supported by Java. On the client side, number values are always serialized as their String representation and then on the server side they are converted to the correct destination type. Conversion into either a primitive or wrapper type is supported for <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Byte</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Double</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Float</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Integer</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Long</fo:inline> and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Short</fo:inline> types.
+	</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Primitives__Basic_Types-Boolean"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:block color="#a70000" font-size="13pt">19.6.1.3. Boolean</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after!
 .maximum="1.2em">
+		Booleans are represented client side by Javascript Boolean values, and server side by a Java boolean.
+	</fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Working_with_Data_types-JavaBeans"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">JavaBeans</fo:marker><fo:block color="#a70000" font-size="14pt">19.6.2. JavaBeans</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-bef!
 ore.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		In general these will be either Seam entity or JavaBean components, or some other non-component class. Use the appropriate method (either <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Seam.Component.newInstance()</fo:inline> for Seam components or <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Seam.Remoting.createType()</fo:inline> for everything else) to create a new instance of the object.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		It is important to note that only objects that are created by either of these two methods should be used as parameter values, where the parameter is not one of the other valid types mentioned anywhere else in this section. In some situations you may have a component method where the exact parameter type cannot be determined, such as:
+	</fo:block><fo:block id="id3890040" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+  @Name("myAction")
+  public class MyAction implements MyActionLocal {
+    public void doSomethingWithObject(Object obj) {
+      // code
+    }
+  }
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		In this case you might want to pass in an instance of your <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">myWidget</fo:inline> component, however the interface for <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">myAction</fo:inline> will not include <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">myWidget</fo:inline> as it is not directly referenced by any of its methods. To get around this, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">MyWidget</fo:inline> needs to be explicitly imported:
+	</fo:block><fo:block id="id3757155" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+                  
+  &lt;script type="text/javascript" src="seam/resource/remoting/interface.js?myAction&amp;myWidget"&gt;
+  &lt;/script&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		This will then allow a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">myWidget</fo:inline> object to be created with <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Seam.Component.newInstance("myWidget")</fo:inline>, which can then be passed to <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">myAction.doSomethingWithObject()</fo:inline>.
+	</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Working_with_Data_types-Dates_and_Times"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Dates and Times</fo:marker><fo:block color="#a70000" font-size="14pt">19.6.3. Dates and Times</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" sp!
 ace-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Date values are serialized into a String representation that is accurate to the millisecond. On the client side, use a Javascript Date object to work with date values. On the server side, use any <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">java.util.Date</fo:inline> (or descendent, such as <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">java.sql.Date</fo:inline> or <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">java.sql.Timestamp</fo:inline> class.
+	</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Working_with_Data_types-Enums"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Enums</fo:marker><fo:block color="#a70000" font-size="14pt">19.6.4. Enums</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" spa!
 ce-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		On the client side, enums are treated the same as Strings. When setting the value for an enum parameter, simply use the String representation of the enum. Take the following component as an example:
+	</fo:block><fo:block id="id3659175" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+  @Name("paintAction")
+  public class paintAction implements paintLocal {
+    public enum Color {red, green, blue, yellow, orange, purple};
+
+    public void paint(Color color) {
+      // code
+    }    
+  }
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		To call the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">paint()</fo:inline> method with the color <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">red</fo:inline>, pass the parameter value as a String literal:
+	</fo:block><fo:block id="id3092892" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+  Seam.Component.getInstance("paintAction").paint("red");
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The inverse is also true - that is, if a component method returns an enum parameter (or contains an enum field anywhere in the returned object graph) then on the client-side it will be represented as a String.
+	</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Working_with_Data_types-Collections"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Collections</fo:marker><fo:block color="#a70000" font-size="14pt">19.6.5. Collections</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Collections-Bags"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.with!
 in-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:block color="#a70000" font-size="13pt">19.6.5.1. Bags</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Bags cover all collection types including arrays, collections, lists, sets, (but excluding Maps - see the next section for those), and are implemented client-side as a Javascript array. When calling a component method that accepts one of these types as a parameter, your parameter should be a Javascript array. If a component method returns one of these types, then the return value will also be a Javascript array. The remoting framework is clever enough on the server side to convert the bag to an appropriate type for the component method call.
+	</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Collections-Maps"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:block color="#a70000" font-size="13pt">19.6.5.2. Maps</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		As there is no native support for Maps within Javascript, a simple Map implementation is provided with the Seam Remoting framework. To create a Map which can be used as a parameter to a remote call, create a new <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Seam.Remoting.Map</fo:inline> object:
+	</fo:block><fo:block id="id3665797" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+  var map = new Seam.Remoting.Map();
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		This Javascript implementation provides basic methods for working with Maps: <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">size()</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">isEmpty()</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">keySet()</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">values()</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">get(key)</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">put(key, value)</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">remove(key)</fo:inline> and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">contains(key)</fo:inline>. Each of these methods are equivalent to their Java counterpart. Where the method returns a collection, such as <fo:inline font-weight="bold" font-family="Li!
 beration Mono,monospace">keySet()</fo:inline> and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">values()</fo:inline>, a Javascript Array object will be returned that contains the key or value objects (respectively).
+	</fo:block></fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Remoting-Debugging"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Debugging</fo:marker><fo:block color="#a70000" font-size="16pt">19.7. Debugging</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.ma!
 ximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		To aid in tracking down bugs, it is possible to enable a debug mode which will display the contents of all the packets send back and forth between the client and server in a popup window. To enable debug mode, either execute the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">setDebug()</fo:inline> method in Javascript:
+	</fo:block><fo:block id="id3668637" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+  Seam.Remoting.setDebug(true);
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Or configure it via components.xml:
+	</fo:block><fo:block id="id3668645" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;remoting:remoting debug="true"/&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		To turn off debugging, call <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">setDebug(false)</fo:inline>. If you want to write your own messages to the debug log, call <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Seam.Remoting.log(message)</fo:inline>.
+	</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Remoting-The_Loading_Message"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">The Loading Message</fo:marker><fo:block color="#a70000" font-size="16pt">19.8. The Loading Message</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-b!
 efore.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The default loading message that appears in the top right corner of the screen can be modified, its rendering customised or even turned off completely.
+	</fo:block><fo:block id="Seam_Reference_Guide-The_Loading_Message-Changing_the_message"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Changing the message</fo:marker><fo:block color="#a70000" font-size="14pt">19.8.1. Changing the message</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" sp!
 ace-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		To change the message from the default "Please Wait..." to something different, set the value of <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Seam.Remoting.loadingMessage</fo:inline>:
+	</fo:block><fo:block id="id3668698" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+  Seam.Remoting.loadingMessage = "Loading...";
+</fo:block></fo:block><fo:block id="Seam_Reference_Guide-The_Loading_Message-Hiding_the_loading_message"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Hiding the loading message</fo:marker><fo:block color="#a70000" font-size="14pt">19.8.2. Hiding the loading message</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" spa!
 ce-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		To completely suppress the display of the loading message, override the implementation of <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">displayLoadingMessage()</fo:inline> and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">hideLoadingMessage()</fo:inline> with functions that instead do nothing:
+	</fo:block><fo:block id="id3668727" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+  // do not display the loading indicator
+  Seam.Remoting.displayLoadingMessage = function() {};
+  Seam.Remoting.hideLoadingMessage = function() {};
+</fo:block></fo:block><fo:block id="Seam_Reference_Guide-The_Loading_Message-A_Custom_Loading_Indicator"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">A Custom Loading Indicator</fo:marker><fo:block color="#a70000" font-size="14pt">19.8.3. A Custom Loading Indicator</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" spa!
 ce-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		It is also possible to override the loading indicator to display an animated icon, or anything else that you want. To do this override the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">displayLoadingMessage()</fo:inline> and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">hideLoadingMessage()</fo:inline> messages with your own implementation:
+	</fo:block><fo:block id="id3668759" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+  Seam.Remoting.displayLoadingMessage = function() {
+    // Write code here to display the indicator
+  };
+  
+  Seam.Remoting.hideLoadingMessage = function() {
+    // Write code here to hide the indicator
+  };
+</fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Remoting-Controlling_what_data_is_returned"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Controlling what data is returned</fo:marker><fo:block color="#a70000" font-size="16pt">19.9. Controlling what data is returned</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.!
 minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		When a remote method is executed, the result is serialized into an XML response that is returned to the client. This response is then unmarshaled by the client into a Javascript object. For complex types (i.e. Javabeans) that include references to other objects, all of these referenced objects are also serialized as part of the response. These objects may reference other objects, which may reference other objects, and so forth. If left unchecked, this object "graph" could potentially be enormous, depending on what relationships exist between your objects. And as a side issue (besides the potential verbosity of the response), you might also wish to prevent sensitive information from being exposed to the client.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Seam Remoting provides a simple means to "constrain" the object graph, by specifying the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">exclude</fo:inline> field of the remote method's <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@WebRemote</fo:inline> annotation. This field accepts a String array containing one or more paths specified using dot notation. When invoking a remote method, the objects in the result's object graph that match these paths are excluded from the serialized result packet.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		For all our examples, we will use the following <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Widget</fo:inline> class:
+	</fo:block><fo:block id="id3935247" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+ at Name("widget")
+public class Widget
+{
+  private String value;
+  private String secret;
+  private Widget child;
+  private Map&lt;String,Widget&gt; widgetMap;
+  private List&lt;Widget&gt; widgetList;
+  
+  // getters and setters for all fields
+}
+</fo:block><fo:block id="Seam_Reference_Guide-Controlling_what_data_is_returned-Constraining_normal_fields"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Constraining normal fields</fo:marker><fo:block color="#a70000" font-size="14pt">19.9.1. Constraining normal fields</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" !
 space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		If your remote method returns an instance of <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Widget</fo:inline>, but you do not want to expose the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">secret</fo:inline> field because it contains sensitive information, you would constrain it like this:
+	</fo:block><fo:block id="id2730978" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+  @WebRemote(exclude = {"secret"})
+  public Widget getWidget();
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The value "secret" refers to the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">secret</fo:inline> field of the returned object. Now, suppose that we do not care about exposing this particular field to the client. Instead, notice that the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Widget</fo:inline> value that is returned has a field <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">child</fo:inline> that is also a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Widget</fo:inline>. What if we want to hide the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">child</fo:inline>'s <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">secret</fo:inline> value instead? We can do this by using dot notation to specify this field's path within the result's object graph:
+	</fo:block><fo:block id="id2837310" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+  @WebRemote(exclude = {"child.secret"})
+  public Widget getWidget();
+</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Controlling_what_data_is_returned-Constraining_Maps_and_Collections"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Constraining Maps and Collections</fo:marker><fo:block color="#a70000" font-size="14pt">19.9.2. Constraining Maps and Collections</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extension!
 s" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The other place that objects can exist within an object graph are within a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Map</fo:inline> or some kind of collection (<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">List</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Set</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Array</fo:inline>, etc). Collections are easy, and are treated like any other field. For example, if our <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Widget</fo:inline> contained a list of other <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Widget</fo:inline>s in its <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">widgetList</fo:inline> field, to constrain the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">secret</fo:inline> field of the <fo:inline font-!
 weight="bold" font-family="Liberation Mono,monospace">Widget</fo:inline>s in this list the annotation would look like this:
+	</fo:block><fo:block id="id3906011" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+  @WebRemote(exclude = {"widgetList.secret"})
+  public Widget getWidget();
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		To constrain a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Map</fo:inline>'s key or value, the notation is slightly different. Appending <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">[key]</fo:inline> after the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Map</fo:inline>'s field name will constrain the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Map</fo:inline>'s key object values, while <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">[value]</fo:inline> will constrain the value object values. The following example demonstrates how the values of the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">widgetMap</fo:inline> field have their <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">secret</fo:inline> field constrained:
+	</fo:block><fo:block id="id3906050" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+  @WebRemote(exclude = {"widgetMap[value].secret"})
+  public Widget getWidget();
+</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Controlling_what_data_is_returned-Constraining_objects_of_a_specific_type"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Constraining objects of a specific type</fo:marker><fo:block color="#a70000" font-size="14pt">19.9.3. Constraining objects of a specific type</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx!
 .com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		There is one last notation that can be used to constrain the fields of a type of object no matter where in the result's object graph it appears. This notation uses either the name of the component (if the object is a Seam component) or the fully qualified class name (only if the object is not a Seam component) and is expressed using square brackets:
+	</fo:block><fo:block id="id3906077" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+  @WebRemote(exclude = {"[widget].secret"})
+  public Widget getWidget();
+</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Controlling_what_data_is_returned-Combining_Constraints"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Combining Constraints</fo:marker><fo:block color="#a70000" font-size="14pt">19.9.4. Combining Constraints</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" spac!
 e-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Constraints can also be combined, to filter objects from multiple paths within the object graph:
+	</fo:block><fo:block id="id3906100" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+  @WebRemote(exclude = {"widgetList.secret", "widgetMap[value].secret"})
+  public Widget getWidget();
+</fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Remoting-JMS_Messaging"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">JMS Messaging</fo:marker><fo:block color="#a70000" font-size="16pt">19.10. JMS Messaging</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.m!
 aximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Seam Remoting provides experimental support for JMS Messaging. This section describes the JMS support that is currently implemented, but please note that this may change in the future. It is currently not recommended that this feature is used within a production environment.
+	</fo:block><fo:block id="Seam_Reference_Guide-JMS_Messaging-Configuration"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Configuration</fo:marker><fo:block color="#a70000" font-size="14pt">19.10.1. Configuration</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em"!
  space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Before you can subscribe to a JMS topic, you must first configure a list of the topics that can be subscribed to by Seam Remoting. List the topics under <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.remoting.messaging.subscriptionRegistry.allowedTopics</fo:inline> in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">seam.properties</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">web.xml</fo:inline> or <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">components.xml</fo:inline>.
+	</fo:block><fo:block id="id3906158" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;remoting:remoting poll-timeout="5" poll-interval="1"/&gt;
+</fo:block></fo:block><fo:block id="Seam_Reference_Guide-JMS_Messaging-Subscribing_to_a_JMS_Topic"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Subscribing to a JMS Topic</fo:marker><fo:block color="#a70000" font-size="14pt">19.10.2. Subscribing to a JMS Topic</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-be!
 fore.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The following example demonstrates how to subscribe to a JMS Topic:
+	</fo:block><fo:block id="id3906179" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+  function subscriptionCallback(message)
+  {
+    if (message instanceof Seam.Remoting.TextMessage)
+      alert("Received message: " + message.getText());
+  }        
+        
+  Seam.Remoting.subscribe("topicName", subscriptionCallback);
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Seam.Remoting.subscribe()</fo:inline> method accepts two parameters, the first being the name of the JMS Topic to subscribe to, the second being the callback function to invoke when a message is received.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		There are two types of messages supported, Text messages and Object messages. If you need to test for the type of message that is passed to your callback function you can use the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">instanceof</fo:inline> operator to test whether the message is a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Seam.Remoting.TextMessage</fo:inline> or <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Seam.Remoting.ObjectMessage</fo:inline>. A <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">TextMessage</fo:inline> contains the text value in its <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">text</fo:inline> field (or alternatively call <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">getText()</fo:inline> on it), while an <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">ObjectMessage</fo:inline> co!
 ntains its object value in its <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">object</fo:inline> field (or call its <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">getObject()</fo:inline> method).
+	</fo:block></fo:block><fo:block id="Seam_Reference_Guide-JMS_Messaging-Unsubscribing_from_a_Topic"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Unsubscribing from a Topic</fo:marker><fo:block color="#a70000" font-size="14pt">19.10.3. Unsubscribing from a Topic</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-b!
 efore.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		To unsubscribe from a topic, call <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Seam.Remoting.unsubscribe()</fo:inline> and pass in the topic name:
+	</fo:block><fo:block id="id2807991" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+  Seam.Remoting.unsubscribe("topicName");
+</fo:block></fo:block><fo:block id="Seam_Reference_Guide-JMS_Messaging-Tuning_the_Polling_Process"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Tuning the Polling Process</fo:marker><fo:block color="#a70000" font-size="14pt">19.10.4. Tuning the Polling Process</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-be!
 fore.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		There are two parameters which you can modify to control how polling occurs. The first one is <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Seam.Remoting.pollInterval</fo:inline>, which controls how long to wait between subsequent polls for new messages. This parameter is expressed in seconds, and its default setting is 10.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The second parameter is <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Seam.Remoting.pollTimeout</fo:inline>, and is also expressed as seconds. It controls how long a request to the server should wait for a new message before timing out and sending an empty response. Its default is 0 seconds, which means that when the server is polled, if there are no messages ready for delivery then an empty response will be immediately returned.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Caution should be used when setting a high <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">pollTimeout</fo:inline> value; each request that has to wait for a message means that a server thread is tied up until a message is received, or until the request times out. If many such requests are being served simultaneously, it could mean a large number of threads become tied up because of this reason.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		It is recommended that you set these options via components.xml, however they can be overridden via Javascript if desired. The following example demonstrates how to configure the polling to occur much more aggressively. You should set these parameters to suitable values for your application:
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Via components.xml:
+	</fo:block><fo:block id="id2808057" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;remoting:remoting poll-timeout="5" poll-interval="1"/&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Via JavaScript:
+	</fo:block><fo:block id="id2808066" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+  // Only wait 1 second between receiving a poll response and sending the next poll request.
+  Seam.Remoting.pollInterval = 1;
+  
+  // Wait up to 5 seconds on the server for new messages
+  Seam.Remoting.pollTimeout = 5;
+</fo:block></fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="body" language="en" format="1" initial-page-number="auto-odd" force-page-count="end-on-even" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-c!
 ell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always" font-weight="bold">Chapter 20.</fo:inline></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-wi!
 dth="proportional-column-width(1)"/><fo:table-body><fo:table-r!
 ow block
-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always"><fo:retrieve-marker retrieve-class-name="section.head.marker" retrieve-position="first-including-carryover" retrieve-boundary="page-sequence"/></fo:inline></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-w!
 idth="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always" font-weight="bold">Chapter 20. Spring Framework integration</fo:inline></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layo!
 ut="fixed" width="100%" border-bottom-width="0.5pt" border-bot!
 tom-styl
e="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-footnote-separator"><fo:block><fo:leader color="black" leader-pattern="rule" leader-length="1in"/></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block font-fam!
 ily="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-conte!
 nt><fo:static-content flow-name="xsl-region-after-odd"><fo:blo!
 ck font-
family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-con!
 tent><fo:static-content flow-name="xsl-region-after-even"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table!
 -cell></fo:table-row></fo:table-body></fo:table></fo:block></f!
 o:static
-content><fo:static-content flow-name="xsl-region-after-blank"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:t!
 able-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:flow flow-name="xsl-region-body" start-indent="0pt" end-indent="0pt"><fo:block id="Seam_Reference_Guide-Spring_Framework_integration"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats"><fo:block margin-left="0pc"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" color="#a70000" background-color="white" font-size="24pt" font-weight="bold" text-align="left" padding-left="1em" padding-right="1em">Spring Framework integration</fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The Spring integration module allows easy migration of Spring-based projects to Seam and allows Spring applications to take advantage of key Seam features like conversations and Seam's more sophisticated persistence context management.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Seam's support for Spring provides the ability to:
+	</fo:block><fo:list-block id="id2837146" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id2755426" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				inject Seam component instances into Spring beans
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3326989" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				inject Spring beans into Seam components
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2821125" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				turn Spring beans into Seam components
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2769562" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				allow Spring beans to live in any Seam context
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3287003" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				start a spring WebApplicationContext with a Seam component
+			</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block id="Seam_Reference_Guide-Spring_Framework_integration-Injecting_Seam_components_into_Spring_beans"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Injecting Seam components into Spring beans</fo:marker><fo:block color="#a70000" font-size="16pt">20.1. Injecting Seam components into Spring beans</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.!
 w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Injecting Seam component instances into Spring beans is accomplished using the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;seam:instance/&gt;</fo:inline> namespace handler. To enable the Seam namespace handler, the Seam namespace must be added to the Spring beans definition file:
+		</fo:block><fo:block id="id3909565" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;beans xmlns="http://www.springframework.org/schema/beans"
+    xmlns:seam="http://jboss.com/products/seam/spring-seam"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://www.springframework.org/schema/beans 
+                        http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
+                        http://jboss.com/products/seam/spring-seam 
+                        http://jboss.com/products/seam/spring-seam-1.2.xsd"&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Now any Seam component may be injected into any Spring bean:
+		</fo:block><fo:block id="id3881105" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;bean id="someSpringBean" class="SomeSpringBeanClass" scope="prototype"&gt;
+    &lt;property name="someProperty"&gt;
+        &lt;seam:instance name="someComponent"/&gt;
+    &lt;/property&gt;
+&lt;/bean&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			An EL expression may be used instead of a component name:
+		</fo:block><fo:block id="id3722436" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;bean id="someSpringBean" class="SomeSpringBeanClass" scope="prototype"&gt;
+    &lt;property name="someProperty"&gt;
+        &lt;seam:instance name="#{someExpression}"/&gt;
+    &lt;/property&gt;
+&lt;/bean&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Seam component instances may even be made available for injection into Spring beans by a Spring bean id.
+		</fo:block><fo:block id="id2731053" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;seam:instance name="someComponent" id="someSeamComponentInstance"/&gt;
+
+&lt;bean id="someSpringBean" class="SomeSpringBeanClass" scope="prototype"&gt;
+    &lt;property name="someProperty" ref="someSeamComponentInstance"&gt;
+&lt;/bean&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Now for the caveat!
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Seam was designed from the ground up to support a stateful component model with multiple contexts. Spring was not. Unlike Seam bijection, Spring injection does not occur at method invocation time. Instead, injection happens only when the Spring bean is instantiated. So the instance available when the bean is instantiated will be the same instance that the bean uses for the entire life of the bean. For example, if a Seam <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">CONVERSATION</fo:inline>-scoped component instance is directly injected into a singleton Spring bean, that singleton will hold a reference to the same instance long after the conversation is over! We call this problem <fo:inline font-style="italic">scope impedance</fo:inline>. Seam bijection ensures that scope impedance is maintained naturally as an invocation flows through the system. In Spring, we need to inject a proxy of the Seam component, and resolve the reference when the proxy i!
 s invoked.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;seam:instance/&gt;</fo:inline> tag lets us automatically proxy the Seam component.
+		</fo:block><fo:block id="id3759436" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;seam:instance id="seamManagedEM" name="someManagedEMComponent" proxy="true"/&gt;
+        
+&lt;bean id="someSpringBean" class="SomeSpringBeanClass"&gt;
+    &lt;property name="entityManager" ref="seamManagedEM"&gt;
+&lt;/bean&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			This example shows one way to use a Seam-managed persistence context from a Spring bean. (A more robust way to use Seam-managed persistence contexts as a replacement for the Spring <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">OpenEntityManagerInView</fo:inline> filter will be provided in a future release)
+		</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Spring_Framework_integration-Injecting_Spring_beans_into_Seam_components"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Injecting Spring beans into Seam components</fo:marker><fo:block color="#a70000" font-size="16pt">20.2. Injecting Spring beans into Seam components</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.!
 renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			It is even easier to inject Spring beans into Seam component instances. Actually, there are two possible approaches:
+		</fo:block><fo:list-block id="id3722518" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3341913" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+					inject a Spring bean using an EL expression
+				</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3301637" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+					make the Spring bean a Seam component
+				</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			We will discuss the second option in the next section. The easiest approach is to access the Spring beans via EL.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The Spring <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">DelegatingVariableResolver</fo:inline> is an integration point Spring provides for integrating Spring with JSF. This <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">VariableResolver</fo:inline> makes all Spring beans available in EL by their bean id. You will need to add the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">DelegatingVariableResolver</fo:inline> to <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">faces-config.xml</fo:inline>:
+		</fo:block><fo:block id="id3873102" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;application&gt;
+    &lt;variable-resolver&gt;
+        org.springframework.web.jsf.DelegatingVariableResolver
+    &lt;/variable-resolver&gt;
+&lt;/application&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Then you can inject Spring beans using <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@In</fo:inline>:
+		</fo:block><fo:block id="id2708912" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@In("#{bookingService}")
+private BookingService bookingService;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The use of Spring beans in EL is not limited to injection. Spring beans may be used anywhere that EL expressions are used in Seam: process and pageflow definitions, working memory assertions, etc...
+		</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Spring_Framework_integration-Making_a_Spring_bean_into_a_Seam_component"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Making a Spring bean into a Seam component</fo:marker><fo:block color="#a70000" font-size="16pt">20.3. Making a Spring bean into a Seam component</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.ren!
 derx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;seam:component/&gt;</fo:inline> namespace handler can be used to make any Spring bean a Seam component. Just place the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;seam:component/&gt;</fo:inline> tag within the declaration of the bean that you wish to be a Seam component:
+		</fo:block><fo:block id="id3941693" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;bean id="someSpringBean" class="SomeSpringBeanClass" scope="prototype"&gt;
+    &lt;seam:component/&gt;
+&lt;/bean&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			By default, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;seam:component/&gt;</fo:inline> will create a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">STATELESS</fo:inline> Seam component with class and name provided in the bean definition. Occasionally, such as when a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">FactoryBean</fo:inline> is used, the class of the Spring bean may not be the class appearing in the bean definition. In such cases the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">class</fo:inline> should be explicitly specified. A Seam component name may be explicitly specified in cases where there is potential for a naming conflict.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">scope</fo:inline> attribute of <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;seam:component/&gt;</fo:inline> may be used if you wish the Spring bean to be managed in a particular Seam scope. The Spring bean must be scoped to <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">prototype</fo:inline> if the Seam scope specified is anything other than <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">STATELESS</fo:inline>. Pre-existing Spring beans usually have a fundamentally stateless character, so this attribute is not usually needed.
+		</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Spring_Framework_integration-Seam_scoped_Spring_beans"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Seam-scoped Spring beans</fo:marker><fo:block color="#a70000" font-size="16pt">20.4. Seam-scoped Spring beans</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" !
 space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The Seam integration package also lets you use Seam's contexts as Spring 2.0 style custom scopes. This lets you declare any Spring bean in any of Seam's contexts. However, note once again that Spring's component model was never architected to support statefulness, so please use this feature with great care. In particular, clustering of session or conversation scoped Spring beans is deeply problematic, and care must be taken when injecting a bean or component from a wider scope into a bean of a narrower scope.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			By specifying <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;seam:configure-scopes/&gt;</fo:inline> once in a Spring bean factory configuration, all of the Seam scopes will be available to Spring beans as custom scopes. To associate a Spring bean with a particular Seam scope, specify the Seam scope in the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">scope</fo:inline> attribute of the bean definition.
+		</fo:block><fo:block id="id3757052" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;!-- Only needs to be specified once per bean factory--&gt;
+&lt;seam:configure-scopes/&gt;
+
+...
+
+&lt;bean id="someSpringBean" class="SomeSpringBeanClass" scope="seam.CONVERSATION"/&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The prefix of the scope name may be changed by specifying the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">prefix</fo:inline> attribute in the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">configure-scopes</fo:inline> definition. (The default prefix is <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">seam.</fo:inline>)
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Seam-scoped Spring beans defined this way can be injected into other Spring beans without the use of <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;seam:instance/&gt;</fo:inline>. However, care must be taken to ensure scope impedance is maintained. The normal approach used in Spring is to specify <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;aop:scoped-proxy/&gt;</fo:inline> in the bean definition. However, Seam-scoped Spring beans are <fo:inline font-style="italic">not</fo:inline> compatible with <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;aop:scoped-proxy/&gt;</fo:inline>. So if you need to inject a Seam-scoped Spring bean into a singleton, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;seam:instance/&gt;</fo:inline> must be used:
+		</fo:block><fo:block id="id3307516" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;bean id="someSpringBean" class="SomeSpringBeanClass" scope="seam.CONVERSATION"/&gt;
+
+...
+
+&lt;bean id="someSingleton"&gt;
+    &lt;property name="someSeamScopedSpringBean"&gt;
+        &lt;seam:instance name="someSpringBean" proxy="true"/&gt;
+    &lt;/property&gt;
+&lt;/bean&gt;
+</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Spring_Framework_integration-Spring_Application_Context_as_a_Seam_Component"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Spring Application Context as a Seam Component</fo:marker><fo:block color="#a70000" font-size="16pt">20.5. Spring Application Context as a Seam Component</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http!
 ://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Although it is possible to use the Spring <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">ContextLoaderListener</fo:inline> to start your application's Spring ApplicationContext there are a couple of limitations.
+		</fo:block><fo:list-block id="id3666485" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3756614" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+					the Spring ApplicationContext must be started <fo:inline font-style="italic">after</fo:inline> the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">SeamListener</fo:inline>
+				</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id4181677" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+					it can be tricky starting a Spring ApplicationContext for use in Seam unit and integration tests
+				</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			To overcome these two limitations the Spring integration includes a Seam component that will start a Spring ApplicationContext. To use this Seam component place the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;spring:context-loader/&gt;</fo:inline> definition in the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">components.xml</fo:inline>. Specify your Spring context file location in the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">config-locations</fo:inline> attribute. If more than one config file is needed you can place them in the nested <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;spring:config-locations/&gt;</fo:inline> element following standard <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">components.xml</fo:inline> multi value practices.
+		</fo:block><fo:block id="id3926494" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;components xmlns="http://jboss.com/products/seam/components" 
+            xmlns:spring="http://jboss.com/products/seam/spring"
+            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+            xsi:schemaLocation="http://jboss.com/products/seam/components http://jboss.com/products/seam/components-1.2.xsd
+                                http://jboss.com/products/seam/spring http://jboss.com/products/seam/spring-1.2.xsd"&gt;
+
+	&lt;spring:context-loader context-locations="/WEB-INF/applicationContext.xml"/&gt;
+
+&lt;/components&gt;
+</fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="body" language="en" format="1" initial-page-number="auto-odd" force-page-count="end-on-even" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-al!
 ign="start" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always" font-weight="bold">Chapter 21.</fo:inline></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="propor!
 tional-column-width(1)"/><fo:table-body><fo:table-row block-pr!
 ogressio
n-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always"><fo:retrieve-marker retrieve-class-name="section.head.marker" retrieve-position="first-including-carryover" retrieve-boundary="page-sequence"/></fo:inline></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="propo!
 rtional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always" font-weight="bold">Chapter 21. Configuring Seam and packaging Seam applications</fo:inline></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table t!
 able-layout="fixed" width="100%" border-bottom-width="0.5pt" b!
 order-bo
ttom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-footnote-separator"><fo:block><fo:leader color="black" leader-pattern="rule" leader-length="1in"/></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block!
  font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:sta!
 tic-content><fo:static-content flow-name="xsl-region-after-odd!
 "><fo:bl
ock font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:s!
 tatic-content><fo:static-content flow-name="xsl-region-after-even"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block><!
 /fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:!
 block></
fo:static-content><fo:static-content flow-name="xsl-region-after-blank"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:blo!
 ck></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:flow flow-name="xsl-region-body" start-indent="0pt" end-indent="0pt"><fo:block id="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats"><fo:block margin-left="0pc"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" color="#a70000" background-color="white" font-size="24pt" font-weight="bold" text-align="left" padding-left="1em" padding-right="1em">Configuring Seam and packaging Seam applications</fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Configuration is a very boring topic and an extremely tedious pastime. Unfortunately, several lines of XML are required to integrate Seam into your JSF implementation and servlet container. There is no need to be too put off by the following sections; you will never need to type any of this stuff yourself, since you can just copy and paste from the example applications.
+	</fo:block><fo:block id="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Basic_Seam_configuration"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Basic Seam configuration</fo:marker><fo:block color="#a70000" font-size="16pt">21.1. Basic Seam configuration</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum=!
 "0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		First, let us look at the basic configuration that is needed whenever we use Seam with JSF.
+	</fo:block><fo:block id="Seam_Reference_Guide-Basic_Seam_configuration-Integrating_Seam_with_JSF_and_your_servlet_container"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Integrating Seam with JSF and your servlet container</fo:marker><fo:block color="#a70000" font-size="14pt">21.1.1. Integrating Seam with JSF and your servlet container</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx!
 ="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Seam requires the following entry in your <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">web.xml</fo:inline> file:
+	</fo:block><fo:block id="id3093097" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;listener&gt;
+    &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/listener-class&gt;
+&lt;/listener&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		This listener is responsible for bootstrapping Seam, and for destroying session and application contexts.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		To integrate with the JSF request lifecycle, we also need a JSF <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">PhaseListener</fo:inline> registered in in the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">faces-config.xml</fo:inline> file:
+	</fo:block><fo:block id="id3797166" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;lifecycle&gt;
+    &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-listener&gt;
+&lt;/lifecycle&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The actual listener class here varies depending upon how you want to manage transaction demarcation (more on this below).
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		If you are using Sun's JSF 1.2 reference implementation, you should also add this to <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">faces-config.xml</fo:inline>:
+	</fo:block><fo:block id="id3938017" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;application&gt;
+    &lt;el-resolver&gt;org.jboss.seam.jsf.SeamELResolver&lt;/el-resolver&gt;
+&lt;/application&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		(This line should not strictly speaking be necessary, but it works around a minor bug in the RI.)
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Some JSF implementations have a broken implementation of server-side state saving that interferes with Seam's conversation propagation. If you have problems with conversation propagation during form submissions, try switching to client-side state saving. You will need this in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">web.xml</fo:inline>:
+	</fo:block><fo:block id="id3507574" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;context-param&gt;
+    &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-name&gt;
+    &lt;param-value&gt;client&lt;/param-value&gt;
+&lt;/context-param&gt;
+</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Basic_Seam_configuration-Seam_Resource_Servlet"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Seam Resource Servlet</fo:marker><fo:block color="#a70000" font-size="14pt">21.1.2. Seam Resource Servlet</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.!
 optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The Seam Resource Servlet provides resources used by Seam Remoting, captchas (see the security chapter) and some JSF UI controls. Configuring the Seam Resource Servlet requires the following entry in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">web.xml</fo:inline>:
+	</fo:block><fo:block id="id3713176" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;servlet&gt;
+  &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;
+  &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-class&gt;
+&lt;/servlet&gt;
+    
+&lt;servlet-mapping&gt;
+  &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;
+  &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;
+&lt;/servlet-mapping&gt;
+</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Basic_Seam_configuration-Seam_servlet_filters"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Seam servlet filters</fo:marker><fo:block color="#a70000" font-size="14pt">21.1.3. Seam servlet filters</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.opt!
 imum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Seam does not need any servlet filters for basic operation. However, there are several features which depend upon the use of filters. To make things easier for you guys, Seam lets you add and configure servlet filters just like you would configure other built-in Seam components. To take advantage of this feature, we must first install a master filter in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">web.xml</fo:inline>:
+	</fo:block><fo:block id="id2755052" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;filter&gt;
+    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;
+    &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-class&gt;
+&lt;/filter&gt;
+
+&lt;filter-mapping&gt;
+    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;
+    &lt;url-pattern&gt;/*&lt;/url-pattern&gt;
+&lt;/filter-mapping&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Adding the master filter enables the following built-in filters.
+	</fo:block><fo:block id="Seam_Reference_Guide-Seam_servlet_filters-Exception_handling"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:block color="#a70000" font-size="13pt">21.1.3.1. Exception handling</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" spa!
 ce-after.maximum="1.2em">
+		This filter provides the exception mapping functionality in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">pages.xml</fo:inline> (almost all applications will need this). It also takes care of rolling back uncommitted transactions when uncaught exceptions occur. (According to the Java EE specification, the web container should do this automatically, but we have found that this behavior cannot be relied upon in all application servers. And it is certainly not required of plain servlet engines like Tomcat.)
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		By default, the exception handling filter will process all requests, however this behavior may be adjusted by adding a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;web:exception-filter&gt;</fo:inline> entry to <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">components.xml</fo:inline>, as shown in this example:
+	</fo:block><fo:block id="id3656076" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;components xmlns="http://jboss.com/products/seam/components"
+            xmlns:core="http://jboss.com/products/seam/core"
+            xmlns:web="http://jboss.com/products/seam/web"
+            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+            xsi:schemaLocation=
+                "http://jboss.com/products/seam/core 
+                                                      http://jboss.com/products/seam/core-1.2.xsd
+                 http://jboss.com/products/seam/components 
+                                                      http://jboss.com/products/seam/components-1.2.xsd
+                 http://jboss.com/products/seam/web 
+                                                      http://jboss.com/products/seam/web-1.2.xsd"&gt;
+
+    &lt;web:exception-filter url-pattern="*.seam"/&gt;
+
+&lt;/components&gt;
+</fo:block><fo:list-block id="id2791240" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id2718736" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">url-pattern</fo:inline> — Used to specify which requests are filtered, the default is all requests.
+			</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block id="Seam_Reference_Guide-Seam_servlet_filters-Conversation_propagation_with_redirects"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:block color="#a70000" font-size="13pt">21.1.3.2. Conversation propagation with redirects</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em!
 " space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		This filter allows Seam to propagate the conversation context across browser redirects. It intercepts any browser redirects and adds a request parameter that specifies the Seam conversation identifier.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The redirect filter will process all requests by default, but this behavior can also be adjusted in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">components.xml</fo:inline>:
+	</fo:block><fo:block id="id3825609" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;web:redirect-filter url-pattern="*.seam"/&gt;
+</fo:block><fo:list-block id="id3825674" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3933832" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">url-pattern</fo:inline> — Used to specify which requests are filtered, the default is all requests.
+			</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block id="Seam_Reference_Guide-Seam_servlet_filters-Multipart_form_submissions"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:block color="#a70000" font-size="13pt">21.1.3.3. Multipart form submissions</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.!
 1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		This feature is necessary when using the Seam file upload JSF control. It detects multipart form requests and processes them according to the multipart/form-data specification (RFC-2388). To override the default settings, add the following entry to <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">components.xml</fo:inline>:
+	</fo:block><fo:block id="id3931784" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;web:multipart-filter create-temp-files="true" 
+        max-request-size="1000000" 
+        url-pattern="*.seam"/&gt;
+</fo:block><fo:list-block id="id2755092" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3856043" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">create-temp-files</fo:inline> — If set to <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">true</fo:inline>, uploaded files are written to a temporary file (instead of held in memory). This may be an important consideration if large file uploads are expected. The default setting is <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">false</fo:inline>.
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2702891" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">max-request-size</fo:inline> — If the size of a file upload request (determined by reading the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Content-Length</fo:inline> header in the request) exceeds this value, the request will be aborted. The default setting is 0 (no size limit).
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3480042" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">url-pattern</fo:inline> — Used to specify which requests are filtered, the default is all requests.
+			</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block id="Seam_Reference_Guide-Seam_servlet_filters-Character_encoding"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:block color="#a70000" font-size="13pt">21.1.3.4. Character encoding</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-befor!
 e.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Sets the character encoding of submitted form data.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		This filter is not installed by default and requires an entry in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">components.xml</fo:inline> to enable it:
+	</fo:block><fo:block id="id2824972" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;web:character-encoding-filter encoding="UTF-16" 
+        override-client="true" 
+        url-pattern="*.seam"/&gt;
+</fo:block><fo:list-block id="id3595569" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3656446" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">encoding</fo:inline> — The encoding to use.
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3775032" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">override-client</fo:inline> — If this is set to <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">true</fo:inline>, the request encoding will be set to whatever is specified by <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">encoding</fo:inline> no matter whether the request already specifies an encoding or not. If set to <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">false</fo:inline>, the request encoding will only be set if the request does not already specify an encoding. The default setting is <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">false</fo:inline>.
+			</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3403970" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">url-pattern</fo:inline> — Used to specify which requests are filtered, the default is all requests.
+			</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block id="Seam_Reference_Guide-Seam_servlet_filters-Context_management_for_custom_servlets"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:block color="#a70000" font-size="13pt">21.1.3.5. Context management for custom servlets</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" !
 space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Requests sent direct to some servlet other than the JSF servlet are not processed through the JSF lifecycle, so Seam provides a servlet filter that can be applied to any other servlet that needs access to Seam components.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		This filter allows custom servlets to interact with the Seam contexts. It sets up the Seam contexts at the beginning of each request, and tears them down at the end of the request. You should make sure that this filter is <fo:inline font-style="italic">never</fo:inline> applied to the JSF <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">FacesServlet</fo:inline>. Seam uses the phase listener for context management in a JSF request.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		This filter is not installed by default and requires an entry in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">components.xml</fo:inline> to enable it:
+	</fo:block><fo:block id="id3322833" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;web:context-filter url-pattern="/media/*"/&gt;
+</fo:block><fo:list-block id="id3668820" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id2657729" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+				<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">url-pattern</fo:inline> — Used to specify which requests are filtered, the default is all requests. If the url-pattern is specified for the context filter, then the filter will be enabled (unless explicitly disabled).
+			</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The context filter expects to find the conversation id of any conversation context in a request parameter named <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">conversationId</fo:inline>. You are responsible for ensuring that it gets sent in the request.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		You are also responsible for ensuring propagation of any new conversation id back to the client. Seam exposes the conversation id as a property of the built in component <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">conversation</fo:inline>.
+	</fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Basic_Seam_configuration-Integrating_Seam_with_your_EJB_container"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Integrating Seam with your EJB container</fo:marker><fo:block color="#a70000" font-size="14pt">21.1.4. Integrating Seam with your EJB container</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.r!
 enderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		We need to apply the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">SeamInterceptor</fo:inline> to our Seam components. The simplest way to do this is to add the following interceptor binding to the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;assembly-descriptor&gt;</fo:inline> in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">ejb-jar.xml</fo:inline>:
+	</fo:block><fo:block id="id4178499" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;interceptor-binding&gt;
+    &lt;ejb-name&gt;*&lt;/ejb-name&gt;
+    &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/interceptor-class&gt;
+&lt;/interceptor-binding&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Seam needs to know where to go to find session beans in JNDI. One way to do this is specify the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@JndiName</fo:inline> annotation on every session bean Seam component. However, this is quite tedious. A better approach is to specify a pattern that Seam can use to calculate the JNDI name from the EJB name. Unfortunately, there is no standard mapping to global JNDI defined in the EJB3 specification, so this mapping is vendor-specific. We usually specify this option in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">components.xml</fo:inline>.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		For JBoss AS, the following pattern is correct:
+	</fo:block><fo:block id="id3917360" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;core:init jndi-name="myEarName/#{ejbName}/local" /&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Where <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">myEarName</fo:inline> is the name of the EAR in which the bean is deployed.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Outside the context of an EAR (when using the JBoss Embeddable EJB3 container), the following pattern is the one to use:
+	</fo:block><fo:block id="id2704128" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;core:init jndi-name="#{ejbName}/local" /&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		You will have to experiment to find the right setting for other application servers.
+	</fo:block><fo:block id="id3920246" color="white" background-color="#d08e13" space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1em" padding-bottom="12pt" padding-top="12pt" margin-left="0pc"><fo:list-block provisional-distance-between-starts="36pt + 18pt" provisional-label-separation="18pt"><fo:list-item><fo:list-item-label end-indent="label-end()"><fo:block><fo:external-graphic width="auto" height="auto" content-width="36pt" src="url(Common_Content/images/important.svg)"/></fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block font-size="13pt" color="white" font-weight="bold" hyphenate="true" keep-with-next.within-column="always">Important</fo:block><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-bef!
 ore.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Some servers (such as GlassFish) require you to specify JNDI names for all EJB components explicitly. In this case, you can pick your own pattern.
+		</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Basic_Seam_configuration-Using_facelets"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Using facelets</fo:marker><fo:block color="#a70000" font-size="14pt">21.1.5. Using facelets</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/!
 Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		If you want follow our advice and use facelets instead of JSP, add the following lines to <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">faces-config.xml</fo:inline>:
+	</fo:block><fo:block id="id3507439" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;application&gt;
+    &lt;view-handler&gt;com.sun.facelets.FaceletViewHandler&lt;/view-handler&gt;
+&lt;/application&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		And the following lines to <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">web.xml</fo:inline>:
+	</fo:block><fo:block id="id3886073" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;context-param&gt;
+    &lt;param-name&gt;javax.faces.DEFAULT_SUFFIX&lt;/param-name&gt;
+    &lt;param-value&gt;.xhtml&lt;/param-value&gt;
+&lt;/context-param&gt;
+</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Basic_Seam_configuration-Dont_forget"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Don't forget!</fo:marker><fo:block color="#a70000" font-size="14pt">21.1.6. Don't forget!</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-befo!
 re.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		There is one final item you need to know about. You must place a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">seam.properties</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">META-INF/seam.properties</fo:inline> or <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">META-INF/components.xml</fo:inline> file in any archive in which your Seam components are deployed (even an empty properties file will do). At startup, Seam will scan any archives with <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">seam.properties</fo:inline> files for seam components.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		In a web archive (WAR) file, you must place a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">seam.properties</fo:inline> file in the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">WEB-INF/classes</fo:inline> directory if you have any Seam components included here.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		This is a workaround for a limitation of the JVM; if we did not use this mechanism, our next best option would be to force you to list every component explicitly in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">components.xml</fo:inline>. 
+	</fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_EE_5"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Configuring Seam in Java EE 5</fo:marker><fo:block color="#a70000" font-size="16pt">21.2. Configuring Seam in Java EE 5</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="id3357751" text-align="center"><fo:external-graphic xmlns="http://www.w3.org/T!
 R/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" src="url(images/ee5.png)" width="auto" height="auto" content-width="auto" content-height="auto" content-type="content-type:image/png" text-align="center"/></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		If you are running in a Java EE 5 environment, this is all the configuration required to start using Seam!
+	</fo:block><fo:block id="Seam_Reference_Guide-Configuring_Seam_in_Java_EE_5-Packaging"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Packaging</fo:marker><fo:block color="#a70000" font-size="14pt">21.2.1. Packaging</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1!
 em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Once you have packaged all this stuff together into an EAR, the archive structure will look something like this:
+	</fo:block><fo:block id="id4182451" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">my-application.ear/
+    jboss-seam.jar
+    el-api.jar
+    el-ri.jar
+    META-INF/
+        MANIFEST.MF
+        application.xml
+    my-application.war/
+        META-INF/
+            MANIFEST.MF
+        WEB-INF/
+            web.xml
+            components.xml
+            faces-config.xml
+            lib/
+                jsf-facelets.jar
+                jboss-seam-ui.jar
+        login.jsp
+        register.jsp
+        ...
+    my-application.jar/
+        META-INF/
+            MANIFEST.MF
+            persistence.xml
+        seam.properties
+        org/
+            jboss/
+                myapplication/
+                    User.class
+                    Login.class
+                    LoginBean.class
+                    Register.class
+                    RegisterBean.class
+                    ...
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		You must include <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">jboss-seam.jar</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">el-api.jar</fo:inline> and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">el-ri.jar</fo:inline> in the EAR classpath. Make sure you reference all of these jars from <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">application.xml</fo:inline>.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		If you want to use jBPM or Drools, you must include the needed jars in the EAR classpath. Make sure you reference all of the jars from <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">application.xml</fo:inline>.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		If you want to use facelets (our recommendation), you must include <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">jsf-facelets.jar</fo:inline> in the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">WEB-INF/lib</fo:inline> directory of the WAR.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		If you want to use the Seam tag library (most Seam applications do), you must include <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">jboss-seam-ui.jar</fo:inline> in the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">WEB-INF/lib</fo:inline> directory of the WAR. If you want to use the PDF or email tag libraries, you need to put <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">jboss-seam-pdf.jar</fo:inline> or <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">jboss-seam-mail.jar</fo:inline> in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">WEB-INF/lib</fo:inline>.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		If you want to use the Seam debug page (only works for applications using facelets), you must include <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">jboss-seam-debug.jar</fo:inline> in the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">WEB-INF/lib</fo:inline> directory of the WAR.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Seam ships with several example applications that are deployable in any Java EE container that supports EJB 3.0.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		I really wish that was all there was to say on the topic of configuration but unfortunately we are only about a third of the way there.  Feel free to skip over the rest of this section and come back to it later.
+	</fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Configuring Seam in Java SE, with the JBoss Embeddable EJB3 container</fo:marker><fo:block color="#a70000" font-size="16pt">21.3. Configuring Seam in Java SE, with the JBoss Embeddable EJB3 container</fo:block></fo:block></fo:block></fo:b!
 lock></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The JBoss Embeddable EJB3 container lets you run EJB3 components outside the context of the Java EE 5 application server. This is especially, but not only, useful for testing.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The Seam booking example application includes a TestNG integration test suite that runs on the Embeddable EJB3 container.
+	</fo:block><fo:block id="id3886217" text-align="center"><fo:external-graphic xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" src="url(images/testng.png)" width="auto" height="auto" content-width="auto" content-height="auto" content-type="content-type:image/png" text-align="center"/></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The booking example application may even be deployed to Tomcat.
+	</fo:block><fo:block id="id3800673" text-align="center"><fo:external-graphic xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" src="url(images/e-ejb3.png)" width="auto" height="auto" content-width="auto" content-height="auto" content-type="content-type:image/png" text-align="center"/></fo:block><fo:block id="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container-Installing_the_Embeddable_EJB3_container"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-!
 indent="0pc"><fo:marker marker-class-name="section.head.marker">Installing the Embeddable EJB3 container</fo:marker><fo:block color="#a70000" font-size="14pt">21.3.1. Installing the Embeddable EJB3 container</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Seam ships with a build of the Embeddable EJB3 container in the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">embedded-ejb</fo:inline> directory. To use the Embeddable EJB3 container with Seam, add the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">embedded-ejb/conf</fo:inline> directory, and all jars in the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">lib</fo:inline> and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">embedded-ejb/lib</fo:inline> directories to your classpath. Then, add the following line to <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">components.xml</fo:inline>:
+	</fo:block><fo:block id="id2792447" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;core:ejb /&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		This setting installs the built-in component named <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.core.ejb</fo:inline>. This component is responsible for bootstrapping the EJB container when Seam is started, and shutting it down when the web application is undeployed.
+	</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container-Configuring_a_datasource_with_the_Embeddable_EJB3_container"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Configuring a datasource with the Embeddable EJB3 container</fo:marker><fo:block color="#a70000" font-size="14pt">21.3.2. Configuring a datasource with the Embeddable EJB3 container</fo:block></fo:block></fo:block></fo:block></fo:block></!
 fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		You should refer to the Embeddable EJB3 container documentation for more information about configuring the container. You'll probably at least need to set up your own datasource. Embeddable EJB3 is implemented using the JBoss Microcontainer, so it's very easy to add new services to the minimal set of services provided by default. For example, I can add a new datasource by putting this <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">jboss-beans.xml</fo:inline> file in my classpath:
+	</fo:block><fo:block id="id2808115" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+
+&lt;deployment xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+            xsi:schemaLocation="urn:jboss:bean-deployer bean-deployer_1_0.xsd"
+            xmlns="urn:jboss:bean-deployer"&gt;
+
+   &lt;bean name="bookingDatasourceBootstrap"
+        class="org.jboss.resource.adapter.jdbc.local.LocalTxDataSource"&gt;
+      &lt;property name="driverClass"&gt;org.hsqldb.jdbcDriver&lt;/property&gt;
+      &lt;property name="connectionURL"&gt;jdbc:hsqldb:.&lt;/property&gt;
+      &lt;property name="userName"&gt;sa&lt;/property&gt;
+      &lt;property name="jndiName"&gt;java:/bookingDatasource&lt;/property&gt;
+      &lt;property name="minSize"&gt;0&lt;/property&gt;
+      &lt;property name="maxSize"&gt;10&lt;/property&gt;
+      &lt;property name="blockingTimeout"&gt;1000&lt;/property&gt;
+      &lt;property name="idleTimeout"&gt;100000&lt;/property&gt;
+      &lt;property name="transactionManager"&gt;
+        &lt;inject bean="TransactionManager"/&gt;
+      &lt;/property&gt;
+      &lt;property name="cachedConnectionManager"&gt;
+        &lt;inject bean="CachedConnectionManager"/&gt;
+      &lt;/property&gt;
+      &lt;property name="initialContextProperties"&gt;
+        &lt;inject bean="InitialContextProperties"/&gt;
+      &lt;/property&gt;
+   &lt;/bean&gt;
+
+   &lt;bean name="bookingDatasource" class="java.lang.Object"&gt;
+      &lt;constructor factoryMethod="getDatasource"&gt;
+         &lt;factory bean="bookingDatasourceBootstrap"/&gt;
+      &lt;/constructor&gt;
+   &lt;/bean&gt;
+
+&lt;/deployment&gt;
+</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container-Packaging"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Packaging</fo:marker><fo:block color="#a70000" font-size="14pt">21.3.3. Packaging</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space!
 -before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The archive structure of a WAR-based deployment on an servlet engine like Tomcat will look something like this:
+	</fo:block><fo:block id="id2808161" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">my-application.war/
+    META-INF/
+        MANIFEST.MF
+    WEB-INF/
+        web.xml
+        components.xml
+        faces-config.xml
+        lib/
+            jboss-seam.jar
+            jboss-seam-ui.jar
+            el-api.jar
+            el-ri.jar
+            jsf-facelets.jar
+            myfaces-api.jar
+            myfaces-impl.jar
+            jboss-ejb3.jar
+            jboss-jca.jar
+            jboss-j2ee.jar
+            ...
+            mc-conf.jar/
+                ejb3-interceptors-aop.xml
+                embedded-jboss-beans.xml
+                default.persistence.properties
+                jndi.properties
+                login-config.xml
+                security-beans.xml
+                log4j.xml
+            my-application.jar/
+                META-INF/
+                    MANIFEST.MF
+                    persistence.xml
+                    jboss-beans.xml
+                log4j.xml
+                seam.properties
+                org/
+                    jboss/
+                        myapplication/
+                            User.class
+                            Login.class
+                            LoginBean.class
+                            Register.class
+                            RegisterBean.class
+                            ...
+    login.jsp
+    register.jsp
+    ...
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">mc-conf.jar</fo:inline> just contains the standard JBoss Microcontainer configuration files for Embeddable EJB3. You will not usually need to edit these files yourself.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Most of the Seam example applications may be deployed to Tomcat by running <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">ant deploy.tomcat</fo:inline>.
+	</fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_J2EE"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Configuring Seam in J2EE</fo:marker><fo:block color="#a70000" font-size="16pt">21.4. Configuring Seam in J2EE</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions"!
  space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Seam is useful even if you are not yet ready to take the plunge into EJB 3.0. In this case you would use Hibernate3 or JPA instead of EJB 3.0 persistence, and plain JavaBeans instead of session beans. You will miss out on some of the nice features of session beans but it will be very easy to migrate to EJB 3.0 when you are ready and, in the meantime, you will be able to take advantage of Seam's unique declarative state management architecture.
+	</fo:block><fo:block id="id2808230" text-align="center"><fo:external-graphic xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" src="url(images/hibernate-ee.png)" width="auto" height="auto" content-width="auto" content-height="auto" content-type="content-type:image/png" text-align="center"/></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Seam JavaBean components do not provide declarative transaction demarcation like session beans do. You <fo:inline font-style="italic">could</fo:inline> manage your transactions manually using the JTA <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">UserTransaction</fo:inline> (you could even implement your own declarative transaction management in a Seam interceptor). But most applications will use Seam managed transactions when using Hibernate with JavaBeans. Follow the instructions in the persistence chapter to install <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">TransactionalSeamPhaseListener</fo:inline>.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The Seam distribution includes a version of the booking example application that uses Hibernate3 and JavaBeans instead of EJB3, and another version that uses JPA and JavaBeans. These example applications are ready to deploy into any J2EE application server.
+	</fo:block><fo:block id="Seam_Reference_Guide-Configuring_Seam_in_J2EE-Boostrapping_Hibernate_in_Seam"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Boostrapping Hibernate in Seam</fo:marker><fo:block color="#a70000" font-size="14pt">21.4.1. Boostrapping Hibernate in Seam</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1!
 em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Seam will bootstrap a Hibernate <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">SessionFactory</fo:inline> from your <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">hibernate.cfg.xml</fo:inline> file if you install a built-in component:
+	</fo:block><fo:block id="id3881309" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;core:hibernate-session-factory name="hibernateSessionFactory"/&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		You will also need to configure a <fo:inline font-style="italic">managed session</fo:inline> if you want a Seam managed Hibernate <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Session</fo:inline> to be available via injection.
+	</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Configuring_Seam_in_J2EE-Boostrapping_JPA_in_Seam"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Boostrapping JPA in Seam</fo:marker><fo:block color="#a70000" font-size="14pt">21.4.2. Boostrapping JPA in Seam</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" spa!
 ce-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Seam will bootstrap a JPA <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">EntityManagerFactory</fo:inline> from your <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">persistence.xml</fo:inline> file if you install this built-in component:
+	</fo:block><fo:block id="id3881351" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;core:entity-manager-factory name="entityManagerFactory"/&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		You will also need to configure a <fo:inline font-style="italic">managed persistencece context</fo:inline> if you want a Seam managed JPA <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">EntityManager</fo:inline> to be available via injection.
+	</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Configuring_Seam_in_J2EE-Packaging"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Packaging</fo:marker><fo:block color="#a70000" font-size="14pt">21.4.3. Packaging</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximu!
 m="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		We can package our application as a WAR, in the following structure:
+	</fo:block><fo:block id="id3881383" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">my-application.war/
+    META-INF/
+        MANIFEST.MF
+    WEB-INF/
+        web.xml
+        components.xml
+        faces-config.xml
+        lib/
+            jboss-seam.jar
+            jboss-seam-ui.jar
+            el-api.jar
+            el-ri.jar
+            jsf-facelets.jar
+            hibernate3.jar
+            hibernate-annotations.jar
+            ...
+            my-application.jar/
+                META-INF/
+                   MANIFEST.MF
+                seam.properties
+                hibernate.cfg.xml
+                org/
+                    jboss/
+                        myapplication/
+                            User.class
+                            Login.class
+                            Register.class
+                            ...
+    login.jsp
+    register.jsp
+    ...
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		If we want to deploy Hibernate in a non-J2EE environment like Tomcat or TestNG, we need to do a little bit more work.
+	</fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_SE_with_the_JBoss_Microcontainer"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Configuring Seam in Java SE, with the JBoss Microcontainer</fo:marker><fo:block color="#a70000" font-size="16pt">21.5. Configuring Seam in Java SE, with the JBoss Microcontainer</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:bl!
 ock xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The Seam support for Hibernate and JPA requires JTA and a JCA datasource. If you are running in a non-EE environment like Tomcat or TestNG you can run these services, and Hibernate itself, in the JBoss Microcontainer.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		You can even deploy the Hibernate and JPA versions of the booking example in Tomcat.
+	</fo:block><fo:block id="id3881435" text-align="center"><fo:external-graphic xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" src="url(images/hibernate-mc.png)" width="auto" height="auto" content-width="auto" content-height="auto" content-type="content-type:image/png" text-align="center"/></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Seam ships with an example Microcontainer configuration in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">microcontainer/conf/jboss-beans.xml</fo:inline> that provides all the things you need to run Seam with Hibernate in any non-EE environment. Just add the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">microcontainer/conf</fo:inline> directory, and all jars in the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">lib</fo:inline> and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">microcontainer/lib</fo:inline> directories to your classpath. Refer to the documentation for the JBoss Microcontainer for more information.
+	</fo:block><fo:block id="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Microcontainer-Using_Hibernate_and_the_JBoss_Microcontainer"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Using Hibernate and the JBoss Microcontainer</fo:marker><fo:block color="#a70000" font-size="14pt">21.5.1. Using Hibernate and the JBoss Microcontainer</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional"!
  xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The built-in Seam component named <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.core.microcontainer</fo:inline> bootstraps the microcontainer. As before, we probably want to use a Seam managed session.
+	</fo:block><fo:block id="id3532295" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;core:microcontainer/&gt;
+
+&lt;core:managed-hibernate-session name="bookingDatabase" auto-create="true"
+    session-factory-jndi-name="java:/bookingSessionFactory"/&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Where <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">java:/bookingSessionFactory</fo:inline> is the name of the Hibernate session factory specified in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">hibernate.cfg.xml</fo:inline>.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		You will need to provide a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">jboss-beans.xml</fo:inline> file that installs JNDI, JTA, your JCA datasource and Hibernate into the microcontainer:
+	</fo:block><fo:block id="id3532324" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+
+&lt;deployment xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+            xsi:schemaLocation="urn:jboss:bean-deployer bean-deployer_1_0.xsd"
+            xmlns="urn:jboss:bean-deployer"&gt;
+
+   &lt;bean name="Naming" class="org.jnp.server.SingletonNamingServer"/&gt;
+
+   &lt;bean name="TransactionManagerFactory" 
+      class="org.jboss.seam.microcontainer.TransactionManagerFactory"/&gt;
+   &lt;bean name="TransactionManager" class="java.lang.Object"&gt;
+      &lt;constructor factoryMethod="getTransactionManager"&gt;
+         &lt;factory bean="TransactionManagerFactory"/&gt;
+      &lt;/constructor&gt;
+   &lt;/bean&gt;
+
+   &lt;bean name="bookingDatasourceFactory" class="org.jboss.seam.microcontainer.DataSourceFactory"&gt;
+      &lt;property name="driverClass"&gt;org.hsqldb.jdbcDriver&lt;/property&gt;
+      &lt;property name="connectionUrl"&gt;jdbc:hsqldb:.&lt;/property&gt;
+      &lt;property name="userName"&gt;sa&lt;/property&gt;
+      &lt;property name="jndiName"&gt;java:/hibernateDatasource&lt;/property&gt;
+      &lt;property name="minSize"&gt;0&lt;/property&gt;
+      &lt;property name="maxSize"&gt;10&lt;/property&gt;
+      &lt;property name="blockingTimeout"&gt;1000&lt;/property&gt;
+      &lt;property name="idleTimeout"&gt;100000&lt;/property&gt;
+      &lt;property name="transactionManager"&gt;&lt;inject bean="TransactionManager"/&gt;&lt;/property&gt;
+   &lt;/bean&gt;
+   &lt;bean name="bookingDatasource" class="java.lang.Object"&gt;
+      &lt;constructor factoryMethod="getDataSource"&gt;
+         &lt;factory bean="bookingDatasourceFactory"/&gt;
+      &lt;/constructor&gt;
+   &lt;/bean&gt;
+
+   &lt;bean name="bookingSessionFactoryFactory" 
+      class="org.jboss.seam.microcontainer.HibernateFactory"/&gt;
+   &lt;bean name="bookingSessionFactory" class="java.lang.Object"&gt;
+      &lt;constructor factoryMethod="getSessionFactory"&gt;
+         &lt;factory bean="bookingSessionFactoryFactory"/&gt;
+      &lt;/constructor&gt;
+      &lt;depends&gt;bookingDatasource&lt;/depends&gt;
+   &lt;/bean&gt;
+
+&lt;/deployment&gt;
+</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Microcontainer-Packaging"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Packaging</fo:marker><fo:block color="#a70000" font-size="14pt">21.5.2. Packaging</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.opt!
 imum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The WAR could have the following structure:
+	</fo:block><fo:block id="id3532374" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">my-application.war/
+    META-INF/
+        MANIFEST.MF
+    WEB-INF/
+        web.xml
+        components.xml
+        faces-config.xml
+        lib/
+            jboss-seam.jar
+            jboss-seam-ui.jar
+            el-api.jar
+            el-ri.jar
+            jsf-facelets.jar
+            hibernate3.jar
+            ...
+            jboss-microcontainer.jar
+            jboss-jca.jar
+            ...
+            myfaces-api.jar
+            myfaces-impl.jar
+            mc-conf.jar/
+                jndi.properties
+                log4j.xml
+            my-application.jar/
+                META-INF/
+                    MANIFEST.MF
+                    jboss-beans.xml
+                seam.properties
+                hibernate.cfg.xml
+                log4j.xml
+                org/
+                    jboss/
+                        myapplication/
+                            User.class
+                            Login.class
+                            Register.class
+                            ...
+    login.jsp
+    register.jsp
+    ...
+</fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_jBPM_in_Seam"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Configuring jBPM in Seam</fo:marker><fo:block color="#a70000" font-size="16pt">21.6. Configuring jBPM in Seam</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" !
 space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Seam's jBPM integration is not installed by default, so you will need to enable jBPM by installing a built-in component. You will also need to explicitly list your process and pageflow definitions. In <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">components.xml</fo:inline>:
+	</fo:block><fo:block id="id3532419" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;core:jbpm&gt;
+    &lt;core:pageflow-definitions&gt;
+        &lt;value&gt;createDocument.jpdl.xml&lt;/value&gt;
+        &lt;value&gt;editDocument.jpdl.xml&lt;/value&gt;
+        &lt;value&gt;approveDocument.jpdl.xml&lt;/value&gt;
+    &lt;/core:pageflow-definitions&gt;
+    &lt;core:process-definitions&gt;
+        &lt;value&gt;documentLifecycle.jpdl.xml&lt;/value&gt;
+    &lt;/core:process-definitions&gt;
+&lt;/core:jbpm&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		No further special configuration is needed if you only have pageflows. If you do have business process definitions, you need to provide a jBPM configuration, and a Hibernate configuration for jBPM. The Seam DVD Store demo includes example <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">jbpm.cfg.xml</fo:inline> and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">hibernate.cfg.xml</fo:inline> files that will work with Seam:
+	</fo:block><fo:block id="id3532445" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;jbpm-configuration&gt;
+
+  &lt;jbpm-context&gt;
+    &lt;service name="persistence"&gt;
+       &lt;factory&gt;
+          &lt;bean class="org.jbpm.persistence.db.DbPersistenceServiceFactory"&gt;
+             &lt;field name="isTransactionEnabled"&gt;&lt;false/&gt;&lt;/field&gt;
+          &lt;/bean&gt;
+       &lt;/factory&gt;
+    &lt;/service&gt;
+    &lt;service name="message" factory="org.jbpm.msg.db.DbMessageServiceFactory" /&gt;
+    &lt;service name="scheduler" factory="org.jbpm.scheduler.db.DbSchedulerServiceFactory" /&gt;
+    &lt;service name="logging" factory="org.jbpm.logging.db.DbLoggingServiceFactory" /&gt;
+    &lt;service name="authentication" 
+       factory="org.jbpm.security.authentication.DefaultAuthenticationServiceFactory" /&gt;
+  &lt;/jbpm-context&gt;
+
+&lt;/jbpm-configuration&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The most important thing to notice here is that jBPM transaction control is disabled. Seam or EJB3 should control the JTA transactions.
+	</fo:block><fo:block id="Seam_Reference_Guide-Configuring_jBPM_in_Seam-Packaging"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Packaging</fo:marker><fo:block color="#a70000" font-size="14pt">21.6.1. Packaging</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" s!
 pace-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		There is not yet any well-defined packaging format for jBPM configuration and process/pageflow definition files. In the Seam examples we have decided to simply package all these files into the root of the EAR. In future, we will probably design some other standard packaging format. So the EAR looks something like this:
+	</fo:block><fo:block id="id3532487" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">my-application.ear/
+    jboss-seam.jar
+    el-api.jar
+    el-ri.jar
+    jbpm-3.1.jar
+    META-INF/
+        MANIFEST.MF
+        application.xml
+    my-application.war/
+        META-INF/
+            MANIFEST.MF
+        WEB-INF/
+            web.xml
+            components.xml
+            faces-config.xml
+            lib/
+                jsf-facelets.jar
+                jboss-seam-ui.jar
+        login.jsp
+        register.jsp
+        ...
+    my-application.jar/
+        META-INF/
+            MANIFEST.MF
+            persistence.xml
+        seam.properties
+        org/
+            jboss/
+                myapplication/
+                    User.class
+                    Login.class
+                    LoginBean.class
+                    Register.class
+                    RegisterBean.class
+                    ...
+    jbpm.cfg.xml
+    hibernate.cfg.xml
+    createDocument.jpdl.xml
+    editDocument.jpdl.xml
+    approveDocument.jpdl.xml
+    documentLifecycle.jpdl.xml
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Remember to add <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">jbpm-3.1.jar</fo:inline> to the manifest of your EJB-JAR and WAR.
+	</fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_a_Portal"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Configuring Seam in a Portal</fo:marker><fo:block color="#a70000" font-size="16pt">21.7. Configuring Seam in a Portal</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL!
 /Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		To run a Seam application as a portlet, you will need to provide certain portlet metadata (<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">portlet.xml</fo:inline>, etc) in addition to the usual Java EE metadata. See the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">examples/portal</fo:inline> directory for an example of the booking demo preconfigured to run on JBoss Portal.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		In addition, you will need to use a portlet-specific phase listener instead of <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">SeamPhaseListener</fo:inline> or <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">TransactionalSeamPhaseListener</fo:inline>. The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">SeamPortletPhaseListener</fo:inline> and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">TransactionalSeamPortletPhaseListener</fo:inline> are adapted to the portlet lifecycle. I would like to offer my sincerest apologies for the name of that last class. I really could not think of anything better. Sorry.
+	</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_SFSB_and_Session_Timeouts_in_JBoss_AS"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Configuring SFSB and Session Timeouts in JBoss AS</fo:marker><fo:block color="#a70000" font-size="16pt">21.8. Configuring SFSB and Session Timeouts in JBoss AS</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml!
 1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		It is very important that the timeout for Stateful Session Beans is set higher than the timeout for HTTP Sessions, otherwise SFSB's may time out before the user's HTTP session has ended. JBoss Application Server has a default session bean timeout of 30 minutes, which is configured in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">server/default/conf/standardjboss.xml</fo:inline> (replace <fo:inline font-style="italic">default</fo:inline> with your own configuration).
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The default SFSB timeout can be adjusted by modifying the value of <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">max-bean-life</fo:inline> in the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">LRUStatefulContextCachePolicy</fo:inline> cache configuration:
+	</fo:block><fo:block id="id2708516" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+      &lt;container-cache-conf&gt;
+        &lt;cache-policy&gt;org.jboss.ejb.plugins.LRUStatefulContextCachePolicy&lt;/cache-policy&gt;
+        &lt;cache-policy-conf&gt;
+          &lt;min-capacity&gt;50&lt;/min-capacity&gt;
+          &lt;max-capacity&gt;1000000&lt;/max-capacity&gt;
+          &lt;remover-period&gt;1800&lt;/remover-period&gt;
+
+          &lt;!-- SFSB timeout in seconds; 1800 seconds == 30 minutes --&gt;
+          &lt;max-bean-life&gt;1800&lt;/max-bean-life&gt;  
+          
+          &lt;overager-period&gt;300&lt;/overager-period&gt;
+          &lt;max-bean-age&gt;600&lt;/max-bean-age&gt;
+          &lt;resizer-period&gt;400&lt;/resizer-period&gt;
+          &lt;max-cache-miss-period&gt;60&lt;/max-cache-miss-period&gt;
+          &lt;min-cache-miss-period&gt;1&lt;/min-cache-miss-period&gt;
+          &lt;cache-load-factor&gt;0.75&lt;/cache-load-factor&gt;
+        &lt;/cache-policy-conf&gt;
+      &lt;/container-cache-conf&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The default HTTP session timeout can be modified in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">server/default/deploy/jbossweb-tomcat55.sar/conf/web.xml</fo:inline> for JBoss 4.0.x, or in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">server/default/deploy/jboss-web.deployer/conf/web.xml</fo:inline> for JBoss 4.2.x. The following entry in this file controls the default session timeout for all web applications:
+	</fo:block><fo:block id="id2708549" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+   &lt;session-config&gt;
+      &lt;!-- HTTP Session timeout, in minutes --&gt;
+      &lt;session-timeout&gt;30&lt;/session-timeout&gt;
+   &lt;/session-config&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		To override this value for your own application, simply include this entry in your application's own <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">web.xml</fo:inline>.
+	</fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="body" language="en" format="1" initial-page-number="auto-odd" force-page-count="end-on-even" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-a!
 lign="start" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always" font-weight="bold">Chapter 22.</fo:inline></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="propo!
 rtional-column-width(1)"/><fo:table-body><fo:table-row block-p!
 rogressi
on-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always"><fo:retrieve-marker retrieve-class-name="section.head.marker" retrieve-position="first-including-carryover" retrieve-boundary="page-sequence"/></fo:inline></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="prop!
 ortional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always" font-weight="bold">Chapter 22. Seam annotations</fo:inline></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%!
 " border-bottom-width="0.5pt" border-bottom-style="solid" bord!
 er-botto
m-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-footnote-separator"><fo:block><fo:leader color="black" leader-pattern="rule" leader-length="1in"/></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block font-family="Liberation Sans,s!
 ans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content !
 flow-name="xsl-region-after-odd"><fo:block font-family="Libera!
 tion San
s,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-conten!
 t flow-name="xsl-region-after-even"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row><!
 /fo:table-body></fo:table></fo:block></fo:static-content><fo:s!
 tatic-co
ntent flow-name="xsl-region-after-blank"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-r!
 ow></fo:table-body></fo:table></fo:block></fo:static-content><fo:flow flow-name="xsl-region-body" start-indent="0pt" end-indent="0pt"><fo:block id="Seam_Reference_Guide-Seam_annotations"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats"><fo:block margin-left="0pc"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" color="#a70000" background-color="white" font-size="24pt" font-weight="bold" text-align="left" padding-left="1em" padding-right="1em">Seam annotations</fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		When you write a Seam application, you'll use a lot of annotations. Seam lets you use annotations to achieve a declarative style of programming. Most of the annotations you'll use are defined by the EJB 3.0 specification. The annotations for data validation are defined by the Hibernate Validator package. Finally, Seam defines its own set of annotations, which we'll describe in this chapter.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		All of these annotations are defined in the package <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.annotations</fo:inline>.
+	</fo:block><fo:block id="Seam_Reference_Guide-Seam_annotations-Annotations_for_component_definition"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Annotations for component definition</fo:marker><fo:block color="#a70000" font-size="16pt">22.1. Annotations for component definition</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.mini!
 mum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The first group of annotations lets you define a Seam component. These annotations appear on the component class.
+		</fo:block><fo:block id="id3416655" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="name-annotation" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Name</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block id="id3373063" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum=!
 "1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Name("componentName")
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						Defines the Seam component name for a class. This annotation is required for all Seam components.
+					</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="scope-annotation" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Scope</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block id="id3909548" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linef!
 eed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Scope(ScopeType.CONVERSATION)
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						Defines the default context of the component. The possible values are defined by the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">ScopeType</fo:inline> enumeration: <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">EVENT, PAGE, CONVERSATION, SESSION, BUSINESS_PROCESS, APPLICATION, STATELESS</fo:inline>.
+					</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						When no scope is explicitly specified, the default depends upon the component type. For stateless session beans, the default is <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">STATELESS</fo:inline>. For entity beans and stateful session beans, the default is <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">CONVERSATION</fo:inline>. For JavaBeans, the default is <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">EVENT</fo:inline>.
+					</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2769551" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Role</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block id="id4162515" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-trea!
 tment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Role(name="roleName", scope=ScopeType.SESSION)
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						Allows a Seam component to be bound to multiple contexts variables. The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Name</fo:inline>/<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Scope</fo:inline> annotations define a "default role". Each <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Role</fo:inline> annotation defines an additional role.
+					</fo:block><fo:list-block id="id2640467" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3577576" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">name</fo:inline> — the context variable name.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3904543" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">scope</fo:inline> — the context variable scope. When no scope is explicitly specified, the default depends upon the component type, as above.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2791322" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Roles</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block id="id3301466" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-spac!
 e-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Roles({
+        @Role(name="user", scope=ScopeType.CONVERSATION),
+        @Role(name="currentUser", scope=ScopeType.SESSION)
+    })
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						Allows specification of multiple additional roles.
+					</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2750202" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Intercept</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block id="id3659129" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed!
 -treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Intercept(InterceptionType.ALWAYS)
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						Determines when Seam interceptors are active. The possible values are defined by the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">InterceptionType</fo:inline> enumeration: <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">ALWAYS, AFTER_RESTORE_VIEW, AFTER_UPDATE_MODEL_VALUES, INVOKE_APPLICATION, NEVER</fo:inline>.
+					</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						When no interception type is explicitly specified, the default depends upon the component type. For entity beans, the default is <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">NEVER</fo:inline>. For session beans, message driven beans and JavaBeans, the default is <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">ALWAYS</fo:inline>.
+					</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3643157" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@JndiName</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block id="id2659310" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-!
 treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@JndiName("my/jndi/name")
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						Specifies the JNDI name that Seam will use to look up the EJB component. If no JNDI name is explicitly specified, Seam will use the JNDI pattern specified by <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.core.init.jndiPattern</fo:inline>.
+					</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id4182330" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Conversational</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block id="id3146824" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" lin!
 efeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Conversational(ifNotBegunOutcome="error")
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						Specifies that a conversation scope component is conversational, meaning that no method of the component can be called unless a long-running conversation started by this component is active (unless the method would begin a new long-running conversation).
+					</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3789024" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Startup</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block id="id3516840" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-t!
 reatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Startup(depends={"org.jboss.core.jndi", "org.jboss.core.jta"})
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						Specifies that an application scope component is started immediately at initialization time. This is mainly used for certain built-in components that bootstrap critical infrastructure such as JNDI, datasources, etc.
+					</fo:block><fo:block id="id2708650" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Startup
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						Specifies that a session scope component is started immediately at session creation time.
+					</fo:block><fo:list-block id="id2822579" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id2822582" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">depends</fo:inline> — specifies that the named components must be started first, if they are installed.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2787795" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Install</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block id="id2787805" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-sp!
 ace-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Install(false)
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						Specifies whether or not a component should be installed by default. The lack of an @Install annotation indicates a component should be installed.
+					</fo:block><fo:block id="id2787816" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Install(dependencies="org.jboss.seam.core.jbpm")
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						Specifies that a component should only be stalled if the components listed as dependencies are also installed.
+					</fo:block><fo:block id="id2787826" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Install(genericDependencies=ManagedQueueSender.class)
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						Specifies that a component should only be installed if a component that is implemented by a certain class is installed. This is useful when the dependency doesn't have a single well-known name.
+					</fo:block><fo:block id="id2787838" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Install(classDependencies="org.hibernate.Session")
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						Specifies that a component should only be installed if the named class is in the classpath.
+					</fo:block><fo:block id="id2787848" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Install(precedence=BUILT_IN)
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						Specifies the precedence of the component. If multiple components with the same name exist, the one with the higher precedence will be installed. The defined precendence values are (in ascending order):
+					</fo:block><fo:list-block id="id2787860" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id2787863" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">BUILT_IN</fo:inline> — Precedence of all built-in Seam components
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2787875" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">FRAMEWORK</fo:inline> — Precedence to use for components of frameworks which extend Seam
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2787889" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">APPLICATION</fo:inline> — Predence of application components (the default precedence)
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2787902" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">DEPLOYMENT</fo:inline> — Precedence to use for components which override application components in a particular deployment
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2787915" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">MOCK</fo:inline> — Precedence for mock objects used in testing
+							</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3941508" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Synchronized</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block id="id3941519" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" whi!
 te-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Synchronized(timeout=1000)
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						Specifies that a component is accessed concurrently by multiple clients, and that Seam should serialize requests. If a request is not able to obtain its lock on the component in the given timeout period, an exception will be raised.
+					</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3941533" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@ReadOnly</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block id="id3941544" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-!
 treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@ReadOnly
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						Specifies that a JavaBean component or component method does not require state replication at the end of the invocation.
+					</fo:block></fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Seam_annotations-Annotations_for_bijection"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Annotations for bijection</fo:marker><fo:block color="#a70000" font-size="16pt">22.2. Annotations for bijection</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.!
 minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The next two annotations control bijection. These attributes occur on component instance variables or property accessor methods.
+		</fo:block><fo:block id="id3941578" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="in-annotation" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@In</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block id="id3941596" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2!
 em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@In
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						Specifies that a component attribute is to be injected from a context variable at the beginning of each component invocation. If the context variable is null, an exception will be thrown.
+					</fo:block><fo:block id="id3941607" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@In(required=false)
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						Specifies that a component attribute is to be injected from a context variable at the beginning of each component invocation. The context variable may be null.
+					</fo:block><fo:block id="id3941618" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@In(create=true)
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						Specifies that a component attribute is to be injected from a context variable at the beginning of each component invocation. If the context variable is null, an instance of the component is instantiated by Seam.
+					</fo:block><fo:block id="id3941630" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@In(value="contextVariableName")
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						Specifies the name of the context variable explicitly, instead of using the annotated instance variable name.
+					</fo:block><fo:block id="id3941640" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@In(value="#{customer.addresses['shipping']}")
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						Specifies that a component attribute is to be injected by evaluating a JSF EL expression at the beginning of each component invocation.
+					</fo:block><fo:list-block id="id2792120" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id2792123" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">value</fo:inline> — specifies the name of the context variable. Default to the name of the component attribute. Alternatively, specifies a JSF EL expression, surrounded by <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">#{...}</fo:inline>.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2792141" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">create</fo:inline> — specifies that Seam should instantiate the component with the same name as the context variable if the context variable is undefined (null) in all contexts. Default to false.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2792156" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">required</fo:inline> — specifies Seam should throw an exception if the context variable is undefined in all contexts.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="out-annotation" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Out</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block id="id2792189" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-s!
 pace-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Out
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						Specifies that a component attribute that is a Seam component is to be outjected to its context variable at the end of the invocation. If the attribute is null, an exception is thrown.
+					</fo:block><fo:block id="id2792200" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Out(required=false)
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						Specifies that a component attribute that is a Seam component is to be outjected to its context variable at the end of the invocation. The attribute may be null.
+					</fo:block><fo:block id="id2792210" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Out(scope=ScopeType.SESSION)
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						Specifies that a component attribute that is <fo:inline font-style="italic">not</fo:inline> a Seam component type is to be outjected to a specific scope at the end of the invocation.
+					</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						Alternatively, if no scope is explicitly specified, the scope of the component with the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Out</fo:inline> attribute is used (or the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">EVENT</fo:inline> scope if the component is stateless).
+					</fo:block><fo:block id="id2792238" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Out(value="contextVariableName")
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						Specifies the name of the context variable explicitly, instead of using the annotated instance variable name.
+					</fo:block><fo:list-block id="id2792248" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id2792251" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">value</fo:inline> — specifies the name of the context variable. Default to the name of the component attribute.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2792264" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">required</fo:inline> — specifies Seam should throw an exception if the component attribute is null during outjection.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Note that it is quite common for these annotations to occur together, for example:
+		</fo:block><fo:block id="id2792289" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@In(create=true) @Out private User currentUser;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The next annotation supports the <fo:inline font-style="italic">manager component</fo:inline> pattern, where a Seam component that manages the lifecycle of an instance of some other class that is to be injected. It appears on a component getter method.
+		</fo:block><fo:block id="id2792305" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2792310" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Unwrap</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block id="id2792321" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2!
 em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Unwrap
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						Specifies that the object returned by the annotated getter method is the thing that is injected instead of the component instance itself.
+					</fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The next annotation supports the <fo:inline font-style="italic">factory component</fo:inline> pattern, where a Seam component is responsible for initializing the value of a context variable. This is especially useful for initializing any state needed for rendering the response to a non-faces request. It appears on a component method.
+		</fo:block><fo:block id="id2792348" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2792353" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Factory</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block id="id2792364" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.!
 2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Factory("processInstance")
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						Specifies that the method of the component is used to initialize the value of the named context variable, when the context variable has no value. This style is used with methods that return <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">void</fo:inline>.
+					</fo:block><fo:block id="id2792379" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Factory("processInstance", scope=CONVERSATION)
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						Specifies that the method returns a value that Seam should use to initialize the value of the named context variable, when the context variable has no value. This style is used with methods that return a value. If no scope is explicitly specified, the scope of the component with the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Factory</fo:inline> method is used (unless the component is stateless, in which case the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">EVENT</fo:inline> context is used).
+					</fo:block><fo:list-block id="id2706071" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id2706074" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">value</fo:inline> — specifies the name of the context variable. If the method is a getter method, default to the JavaBeans property name.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2706088" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">scope</fo:inline> — specifies the scope that Seam should bind the returned value to. Only meaningful for factory methods which return a value.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			This annotation lets you inject a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Log</fo:inline>:
+		</fo:block><fo:block id="id2706116" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2706121" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Logger</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block id="id2706132" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2!
 em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Logger("categoryName")
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						Specifies that a component field is to be injected with an instance of <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.log.Log</fo:inline>. For entity beans, the field must be declared as static.
+					</fo:block><fo:list-block id="id2706145" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id2706147" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">value</fo:inline> — specifies the name of the log category. Default to the name of the component class.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The last annotation lets you inject a request parameter value:
+		</fo:block><fo:block id="id2706171" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2706177" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@RequestParameter</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block id="id2706188" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.ma!
 ximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@RequestParameter("parameterName")
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						Specifies that a component attribute is to be injected with the value of a request parameter. Basic type conversions are performed automatically.
+					</fo:block><fo:list-block id="id2706198" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id2706201" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">value</fo:inline> — specifies the name of the request parameter. Default to the name of the component attribute.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Seam_annotations-Annotations_for_component_lifecycle_methods"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Annotations for component lifecycle methods</fo:marker><fo:block color="#a70000" font-size="16pt">22.3. Annotations for component lifecycle methods</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo!
 :block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			These annotations allow a component to react to its own lifecycle events. They occur on methods of the component. There may be only one of each per component class.
+		</fo:block><fo:block id="id2706242" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2706247" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Create</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block id="id2706258" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2!
 em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Create
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						Specifies that the method should be called when an instance of the component is instantiated by Seam. Note that create methods are only supported for JavaBeans and stateful session beans.
+					</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="destroy-annotation" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Destroy</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block id="id2706286" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" l!
 inefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Destroy
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						Specifies that the method should be called when the context ends and its context variables are destroyed. Note that create methods are only supported for JavaBeans and stateful session beans.
+					</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						Note that all stateful session bean components <fo:inline font-style="italic">must</fo:inline> define a method annotated <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Destroy @Remove</fo:inline> in order to guarantee destruction of the stateful bean when a context ends.
+					</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						Destroy methods should be used only for cleanup. <fo:inline font-style="italic">Seam catches, logs and swallows any exception that propagates out of a destroy method.</fo:inline>
+					</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2706324" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Observer</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block id="id2706335" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-!
 treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Observer("somethingChanged")
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						Specifies that the method should be called when a component-driven event of the specified type occurs.
+					</fo:block><fo:block id="id2706345" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Observer(value="somethingChanged",create=false)
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						Specifies that the method should be called when an event of the specified type occurs but that an instance should not be created if one doesn't exist. If an instance does not exist and create is false, the event will not be observed. The default value for create is true.
+					</fo:block></fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Seam_annotations-Annotations_for_context_demarcation"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Annotations for context demarcation</fo:marker><fo:block color="#a70000" font-size="16pt">22.4. Annotations for context demarcation</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com!
 /XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			These annotations provide declarative conversation demarcation. They appear on methods of Seam components, usually action listener methods.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Every web request has a conversation context associated with it. Most of these conversations end at the end of the request. If you want a conversation that span multiple requests, you must "promote" the current conversation to a <fo:inline font-style="italic">long-running conversation</fo:inline> by calling a method marked with <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Begin</fo:inline>.
+		</fo:block><fo:block id="id3889609" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="begin-annotation" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Begin</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-block id="id3889629" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3889631" space-before.optimum="0.!
 1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block id="id3889634" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Begin
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+								Specifies that a long-running conversation begins when this method returns a non-null outcome without exception.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3889646" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block id="id3889648" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Begin(ifOutcome={"success", "continue"})
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+								Specifies that a long-running conversation begins when this action listener method returns with one of the given outcomes.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3889660" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block id="id3889663" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Begin(join=true)
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+								Specifies that if a long-running conversation is already in progress, the conversation context is simply propagated.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3889675" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block id="id3889677" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Begin(nested=true)
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+								Specifies that if a long-running conversation is already in progress, a new <fo:inline font-style="italic">nested</fo:inline> conversation context begins. The nested conversation will end when the next <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@End</fo:inline> is encountered, and the outer conversation will resume. It is perfectly legal for multiple nested conversations to exist concurrently in the same outer conversation.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3889700" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block id="id3889703" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Begin(pageflow="process definition name")
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+								Specifies a jBPM process definition name that defines the pageflow for this conversation.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3889714" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block id="id3889717" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Begin(flushMode=FlushModeType.MANUAL)
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+								Specify the flush mode of any Seam-managed persistence contexts. <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">flushMode=FlushModeType.MANUAL</fo:inline> supports the use of <fo:inline font-style="italic">atomic conversations</fo:inline> where all write operations are queued in the conversation context until an explicit call to <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">flush()</fo:inline> (which usually occurs at the end of the conversation).
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3889742" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:list-block id="id3889744" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3889747" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-af!
 ter.minimum="1em" space-after.maximum="1em">
+										<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">ifOutcome</fo:inline> — specifies the JSF outcome or outcomes that result in a new long-running conversation context.
+									</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3889761" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+										<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">join</fo:inline> — determines the behavior when a long-running conversation is already in progress. If <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">true</fo:inline>, the context is propagated. If <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">false</fo:inline>, an exception is thrown. Default to <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">false</fo:inline>. This setting is ignored when <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">nested=true</fo:inline> is specified
+									</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3889790" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+										<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">nested</fo:inline> — specifies that a nested conversation should be started if a long-running conversation is already in progress.
+									</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3889804" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+										<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">flushMode</fo:inline> — set the flush mode of any Seam-managed Hibernate sessions or JPA persistence contexts that are created during this conversation.
+									</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3889818" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+										<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">pageflow</fo:inline> — a process definition name of a jBPM process definition deployed via <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.core.jbpm.pageflowDefinitions.</fo:inline>
+									</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="end-annotation" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@End</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-block id="id3889857" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3889860" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maxim!
 um="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block id="id3889862" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@End
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+								Specifies that a long-running conversation ends when this method returns a non-null outcome without exception.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3889874" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block id="id3889876" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@End(ifOutcome={"success", "error"}, evenIfException={SomeExcept!
 ion.class, OtherException.class})
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+								Specifies that a long-running conversation ends when this action listener method returns with one of the given outcomes or throws one of the specified classes of exception.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3889890" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:list-block id="id3889893" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3480073" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-af!
 ter.minimum="1em" space-after.maximum="1em">
+										<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">ifOutcome</fo:inline> — specifies the JSF outcome or outcomes that result in the end of the current long-running conversation.
+									</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3480087" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+										<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">beforeRedirect</fo:inline> — by default, the conversation will not actually be destroyed until after any redirect has occurred. Setting <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">beforeRedirect=true</fo:inline> specifies that the conversation should be destroyed at the end of the current request, and that the redirect will be processed in a new temporary conversation context.
+									</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3480115" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@StartTask</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block id="id3480126" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.o!
 ptimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@StartTask
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						"Starts" a jBPM task. Specifies that a long-running conversation begins when this method returns a non-null outcome without exception. This conversation is associated with the jBPM task specified in the named request parameter. Within the context of this conversation, a business process context is also defined, for the business process instance of the task instance.
+					</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						The jBPM <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">TaskInstance</fo:inline> will be available in a request context variable named <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">taskInstance</fo:inline>. The jPBM <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">ProcessInstance</fo:inline> will be available in a request context variable named <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">processInstance</fo:inline>. (Of course, these objects are available for injection via <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@In</fo:inline>.)
+					</fo:block><fo:list-block id="id3480167" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3480170" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">taskIdParameter</fo:inline> — the name of a request parameter which holds the id of the task. Default to <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">"taskId"</fo:inline>, which is also the default used by the Seam <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">taskList</fo:inline> JSF component.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3480191" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">flushMode</fo:inline> — set the flush mode of any Seam-managed Hibernate sessions or JPA persistence contexts that are created during this conversation.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3480209" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@BeginTask</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block id="id3480220" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-!
 space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@BeginTask
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						Resumes work on an incomplete jBPM task. Specifies that a long-running conversation begins when this method returns a non-null outcome without exception. This conversation is associated with the jBPM task specified in the named request parameter. Within the context of this conversation, a business process context is also defined, for the business process instance of the task instance.
+					</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						The jBPM <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">TaskInstance</fo:inline> will be available in a request context variable named <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">taskInstance</fo:inline>. The jPBM <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">ProcessInstance</fo:inline> will be available in a request context variable named <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">processInstance</fo:inline>.
+					</fo:block><fo:list-block id="id3480257" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3480260" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">taskIdParameter</fo:inline> — the name of a request parameter which holds the id of the task. Default to <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">"taskId"</fo:inline>, which is also the default used by the Seam <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">taskList</fo:inline> JSF component.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3480281" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">flushMode</fo:inline> — set the flush mode of any Seam-managed Hibernate sessions or JPA persistence contexts that are created during this conversation.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3480300" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@EndTask</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-block id="id3480310" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3480313" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" sp!
 ace-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block id="id3480316" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@EndTask
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+								"Ends" a jBPM task. Specifies that a long-running conversation ends when this method returns a non-null outcome, and that the current task is complete. Triggers a jBPM transition. The actual transition triggered will be the default transition unless the application has called <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Transition.setName()</fo:inline> on the built-in component named <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">transition</fo:inline>.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3480337" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block id="id3480340" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@EndTask(transition="transitionName")
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+								Triggers the given jBPM transition.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3480351" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block id="id3480354" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@EndTask(ifOutcome={"success", "continue"})
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+								Specifies that the task ends when this method returns one of the listed outcomes.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3480365" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:list-block id="id3480368" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3480371" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-af!
 ter.minimum="1em" space-after.maximum="1em">
+										<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">transition</fo:inline> — the name of the jBPM transition to be triggered when ending the task. Defaults to the default transition.
+									</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3480384" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+										<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">ifOutcome</fo:inline> — specifies the JSF outcome or outcomes that result in the end of the task.
+									</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2668487" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+										<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">beforeRedirect</fo:inline> — by default, the conversation will not actually be destroyed until after any redirect has occurred. Setting <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">beforeRedirect=true</fo:inline> specifies that the conversation should be destroyed at the end of the current request, and that the redirect will be processed in a new temporary conversation context.
+									</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2668514" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@CreateProcess</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block id="id2668525" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-aft!
 er.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@CreateProcess(definition="process definition name")
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						Creates a new jBPM process instance when the method returns a non-null outcome without exception. The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">ProcessInstance</fo:inline> object will be available in a context variable named <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">processInstance</fo:inline>.
+					</fo:block><fo:list-block id="id2668545" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id2668548" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">definition</fo:inline> — the name of the jBPM process definition deployed via <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.core.jbpm.processDefinitions</fo:inline>.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2668569" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@ResumeProcess</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block id="id2668580" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" wh!
 ite-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@ResumeProcess(processIdParameter="processId")
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						Re-enters the scope of an existing jBPM process instance when the method returns a non-null outcome without exception. The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">ProcessInstance</fo:inline> object will be available in a context variable named <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">processInstance</fo:inline>.
+					</fo:block><fo:list-block id="id2668600" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id2668602" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">processIdParameter</fo:inline> — the name a request parameter holding the process id. Default to <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">"processId"</fo:inline>.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Seam_annotations-Annotations_for_transaction_demarcation"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Annotations for transaction demarcation</fo:marker><fo:block color="#a70000" font-size="16pt">22.5. Annotations for transaction demarcation</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns!
 ="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Seam provides an annotation that lets you force a rollback of the JTA transaction for certain action listener outcomes.
+		</fo:block><fo:block id="id2668646" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2668652" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Rollback</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block id="id2668662" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1!
 .2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Rollback(ifOutcome={"failure", "not-found"})
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						If the outcome of the method matches any of the listed outcomes, or if no outcomes are listed, set the transaction to rollback only when the method completes.
+					</fo:block><fo:list-block id="id2668674" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id2668677" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">ifOutcome</fo:inline> — the JSF outcomes that cause a transaction rollback (no outcomes is interpreted to mean any outcome).
+							</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2668694" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Transactional</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block id="id2668705" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" wh!
 ite-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Transactional
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						Specifies that a JavaBean component should have a similar transactional behavior to the default behavior of a session bean component. ie. method invocations should take place in a transaction, and if no transaction exists when the method is called, a transaction will be started just for that method. This annotation may be applied at either class or method level.
+					</fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Seam applications usually use the standard EJB3 annotations for all other transaction demarcation needs.
+		</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Seam_annotations-Annotations_for_exceptions"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Annotations for exceptions</fo:marker><fo:block color="#a70000" font-size="16pt">22.6. Annotations for exceptions</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-!
 before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			These annotations let you specify how Seam should handle an exception that propagates out of a Seam component.
+		</fo:block><fo:block id="id2668750" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2668756" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Redirect</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block id="id2668766" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1!
 .2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Redirect(viewId="error.jsp")
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						Specifies that the annotated exception causes a browser redirect to a specified view id.
+					</fo:block><fo:list-block id="id2668776" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id2668779" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">viewId</fo:inline> — specifies the JSF view id to redirect to.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2668791" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">message</fo:inline> — a message to be displayed, default to the exception message.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3491710" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">end</fo:inline> — specifies that the long-running conversation should end, default to <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">false</fo:inline>.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3491731" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@HttpError</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block id="id3491742" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-!
 space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@HttpError(errorCode=404)
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						Specifies that the annotated exception causes a HTTP error to be sent.
+					</fo:block><fo:list-block id="id3491751" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3491754" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">errorCode</fo:inline> — the HTTP error code, default to <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">500</fo:inline>.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3491770" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">message</fo:inline> — a message to be sent with the HTTP error, default to the exception message.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3491784" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">end</fo:inline> — specifies that the long-running conversation should end, default to <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">false</fo:inline>.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Seam_annotations-Annotations_for_validation"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Annotations for validation</fo:marker><fo:block color="#a70000" font-size="16pt">22.7. Annotations for validation</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitio!
 nal" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			This annotation triggers Hibernate Validator. It appears on a method of a Seam component, almost always an action listener method.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Please refer to the documentation for the Hibernate Annotations package for information about the annotations defined by the Hibernate Validator framework.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			<fo:inline font-style="italic">Note that use of <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@IfInvalid</fo:inline> is now semi-deprecated and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;s:validateAll&gt;</fo:inline> is now preferred.</fo:inline>
+		</fo:block><fo:block id="id3491848" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3491854" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@IfInvalid</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block id="id3491865" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="!
 1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@IfInvalid(outcome="invalid", refreshEntities=true)
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						Specifies that Hibernate Validator should validate the component before the method is invoked. If the invocation fails, the specified outcome will be returned, and the validation failure messages returned by Hibernate Validator will be added to the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">FacesContext</fo:inline>. Otherwise, the invocation will proceed.
+					</fo:block><fo:list-block id="id3491882" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3491885" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">outcome</fo:inline> — the JSF outcome when validation fails.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3491898" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">refreshEntities</fo:inline> — specifies that any invalid entity in the managed state should be refreshed from the database when validation fails. Default to <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">false</fo:inline>. (Useful with extended persistence contexts.)
+							</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Seam_annotations-Annotations_for_Seam_Remoting"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Annotations for Seam Remoting</fo:marker><fo:block color="#a70000" font-size="16pt">22.8. Annotations for Seam Remoting</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/!
 transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Seam Remoting requires that the local interface of a session bean be annotated with the following annotation:
+		</fo:block><fo:block id="id3491942" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3491947" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@WebRemote</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block id="id3491958" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="!
 1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@WebRemote(exclude="path.to.exclude")
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						Indicates that the annotated method may be called from client-side JavaScript. The <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">exclude</fo:inline> property is optional and allows objects to be excluded from the result's object graph (see the Remoting chapter for more details).
+					</fo:block></fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Seam_annotations-Annotations_for_Seam_interceptors"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Annotations for Seam interceptors</fo:marker><fo:block color="#a70000" font-size="16pt">22.9. Annotations for Seam interceptors</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/E!
 xtensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The following annotations appear on Seam interceptor classes.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Please refer to the documentation for the EJB 3.0 specification for information about the annotations required for EJB interceptor definition.
+		</fo:block><fo:block id="id3492004" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3492009" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Interceptor</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-block id="id3492020" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3492023" space-before.optimum="0.1!
 em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block id="id3492025" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Interceptor(stateless=true)
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+								Specifies that this interceptor is stateless and Seam may optimize replication.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3298507" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block id="id3298510" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Interceptor(type=CLIENT)
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+								Specifies that this interceptor is a "client-side" interceptor that is called before the EJB container.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3298521" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block id="id3298524" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Interceptor(around={SomeInterceptor.class, OtherInterceptor.cla!
 ss})
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+								Specifies that this interceptor is positioned higher in the stack than the given interceptors.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3298536" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block id="id3298538" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Interceptor(within={SomeInterceptor.class, OtherInterceptor.cla!
 ss})
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+								Specifies that this interceptor is positioned deeper in the stack than the given interceptors.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Seam_annotations-Annotations_for_asynchronicity"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Annotations for asynchronicity</fo:marker><fo:block color="#a70000" font-size="16pt">22.10. Annotations for asynchronicity</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xht!
 ml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The following annotations are used to declare an asynchronous method, for example:
+		</fo:block><fo:block id="id3298575" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Asynchronous public void scheduleAlert(Alert alert, @Expiration Date date) { ... }
+</fo:block><fo:block id="id3298581" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Asynchronous public Timer scheduleAlerts(Alert alert, @Expiration Date date, 
+ at IntervalDuration long interval) { ... }
+</fo:block><fo:block id="id3298587" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3298592" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Asynchronous</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block id="id3298603" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum=!
 "1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Asynchronous
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						Specifies that the method call is processed asynchronously.
+					</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3298615" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Duration</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block id="id3298626" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-!
 treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Duration
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						Specifies that a parameter of the asynchronous call is the duration before the call is processed (or first processed for recurring calls).
+					</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3298639" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Expiration</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block id="id3298650" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefee!
 d-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Expiration
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						Specifies that a parameter of the asynchronous call is the datetime at which the call is processed (or first processed for recurring calls).
+					</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3298663" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@IntervalDuration</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block id="id3298674" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" l!
 inefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@IntervalDuration
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						Specifies that an asynchronous method call recurs, and that the annotationed parameter is duration between recurrences.
+					</fo:block></fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Seam_annotations-Annotations_for_use_with_JSF_dataTable"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Annotations for use with JSF <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">dataTable</fo:inline></fo:marker><fo:block color="#a70000" font-size="16pt">22.11. Annotations for use with JSF <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">data!
 Table</fo:inline></fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The following annotations make it easy to implement clickable lists backed by a stateful session bean. They appear on attributes.
+		</fo:block><fo:block id="id3298712" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="datamodel-annotation" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@DataModel</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block id="id3298730" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-befor!
 e.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@DataModel("variableName")
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						Exposes an attribute of type <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">List</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Map</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Set</fo:inline> or <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Object[]</fo:inline> as a JSF <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">DataModel</fo:inline> into the scope of the owning component (or the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">EVENT</fo:inline> scope if the owning component is <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">STATELESS</fo:inline>). In the case of <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Map</fo:inline>, each row of the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">DataModel</fo:inline> is a <fo:inline font-weig!
 ht="bold" font-family="Liberation Mono,monospace">Map.Entry</fo:inline>.
+					</fo:block><fo:list-block id="id3298779" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3298782" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">value</fo:inline> — name of the conversation context variable. Default to the attribute name.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3298796" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">scope</fo:inline> — if <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">scope=ScopeType.PAGE</fo:inline> is explicitly specified, the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">DataModel</fo:inline> will be kept in the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">PAGE</fo:inline> context.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3298823" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@DataModelSelection</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block id="id3656810" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="tru!
 e" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@DataModelSelection
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						Injects the selected value from the JSF <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">DataModel</fo:inline> (this is the element of the underlying collection, or the map value).
+					</fo:block><fo:list-block id="id3656824" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3656827" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">value</fo:inline> — name of the conversation context variable. Not needed if there is exactly one <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@DataModel</fo:inline> in the component.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3656848" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@DataModelSelectionIndex</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block id="id3656858" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate!
 ="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@DataModelSelectionIndex
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						Exposes the selection index of the JSF <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">DataModel</fo:inline> as an attribute of the component (this is the row number of the underlying collection, or the map key).
+					</fo:block><fo:list-block id="id3656873" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3656875" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">value</fo:inline> — name of the conversation context variable. Not needed if there is exactly one <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@DataModel</fo:inline> in the component.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Seam_annotations-Meta_annotations_for_databinding"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Meta-annotations for databinding</fo:marker><fo:block color="#a70000" font-size="16pt">22.12. Meta-annotations for databinding</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/!
 TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			These meta-annotations make it possible to implement similar functionality to <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@DataModel</fo:inline> and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@DataModelSelection</fo:inline> for other datastructures apart from lists.
+		</fo:block><fo:block id="id3656926" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3656931" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@DataBinderClass</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block id="id3656942" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.max!
 imum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@DataBinderClass(DataModelBinder.class)
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						Specifies that an annotation is a databinding annotation.
+					</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3656954" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@DataSelectorClass</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block id="id3656965" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" !
 linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@DataSelectorClass(DataModelSelector.class)
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						Specifies that an annotation is a dataselection annotation.
+					</fo:block></fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Seam_annotations-Annotations_for_packaging"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Annotations for packaging</fo:marker><fo:block color="#a70000" font-size="16pt">22.13. Annotations for packaging</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before!
 .minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			This annotation provides a mechanism for declaring information about a set of components that are packaged together. It can be applied to any Java package.
+		</fo:block><fo:block id="id3656999" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3657005" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Namespace</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block id="id3657015" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="!
 1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Namespace(value="http://jboss.com/products/seam/example/seampay")
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						Specifies that components in the current package are associated with the given namespace. The declared namespace can be used as an XML namespace in a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">components.xml</fo:inline> file to simplify application configuration.
+					</fo:block><fo:block id="id3657031" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Namespace(value="http://jboss.com/products/seam/core", prefix="org.jboss.seam.core")
+</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						Specifies a namespace to associate with a given package. Additionally, it specifies a component name prefix to be applied to component names specified in the XML file. For example, an XML element named <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">microcontainer</fo:inline> that is associated with this namespace would be understood to actually refere to a component named <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.core.microcontainer</fo:inline>.
+					</fo:block></fo:block></fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="body" language="en" format="1" initial-page-number="auto-odd" force-page-count="end-on-even" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="1!
 4pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always" font-weight="bold">Chapter 23.</fo:inline></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-numb!
 er="3" column-width="proportional-column-width(1)"/><fo:table-!
 body><fo
:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always"><fo:retrieve-marker retrieve-class-name="section.head.marker" retrieve-position="first-including-carryover" retrieve-boundary="page-sequence"/></fo:inline></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-num!
 ber="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always" font-weight="bold">Chapter 23. Built-in Seam components</fo:inline></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:tabl!
 e table-layout="fixed" width="100%" border-bottom-width="0.5pt!
 " border
-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-footnote-separator"><fo:block><fo:leader color="black" leader-pattern="rule" leader-length="1in"/></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:bl!
 ock font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:!
 static-content><fo:static-content flow-name="xsl-region-after-!
 odd"><fo
:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></f!
 o:static-content><fo:static-content flow-name="xsl-region-after-even"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:bloc!
 k></fo:table-cell></fo:table-row></fo:table-body></fo:table></!
 fo:block
></fo:static-content><fo:static-content flow-name="xsl-region-after-blank"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:!
 block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:flow flow-name="xsl-region-body" start-indent="0pt" end-indent="0pt"><fo:block id="components"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats"><fo:block margin-left="0pc"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" color="#a70000" background-color="white" font-size="24pt" font-weight="bold" text-align="left" padding-left="1em" padding-right="1em">Built-in Seam components</fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		This chapter describes Seam's built in components, and their configuration properties. The built in components will be created even if they are not listed in your <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">components.xml</fo:inline> file, but if you need to override default properties or specify more than one component of a certain type, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">components.xml</fo:inline> is used.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		You can replace any of the built in components with your own implementations simply by specifying the name of one of the built in components on your own class using <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Name</fo:inline>.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Even though all the built in components use a qualified name, most of them are aliased to unqualified names by default. These aliases specify <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">auto-create="true"</fo:inline>, so you do not need to use <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">create=true</fo:inline> when injecting built-in components by their unqualified name.
+	</fo:block><fo:block id="id2824946"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Context injection components</fo:marker><fo:block color="#a70000" font-size="16pt">23.1. Context injection components</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after!
 .optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The first set of built in components exist purely to support injection of various contextual objects. For example, the following component instance variable would have the Seam session context object injected:
+		</fo:block><fo:block id="id2642821" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@In private Context sessionContext;
+</fo:block><fo:block id="id4179619" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2717285" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.core.contexts</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" sp!
 ace-after.maximum="1em">
+						Component that provides access to Seam Context objects, for example <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.core.contexts.sessionContext['user']</fo:inline>.
+					</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3658908" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.faces.facesContext</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						Manager component for the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">FacesContext</fo:inline> context object (not a true Seam context)
+					</fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			All of these components are always installed.
+		</fo:block></fo:block><fo:block id="id3806725"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Utility components</fo:marker><fo:block color="#a70000" font-size="16pt">23.2. Utility components</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum!
 ="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			These components are merely useful.
+		</fo:block><fo:block id="id3491589" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3666431" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.faces.facesMessages</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum=!
 "1em" space-after.maximum="1em">
+						Allows faces success messages to propagate across a browser redirect.
+					</fo:block><fo:list-block id="id3432717" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3491551" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">add(FacesMessage facesMessage)</fo:inline> — add a faces message, which will be displayed during the next render response phase that occurs in the current conversation.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3684142" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">add(String messageTemplate)</fo:inline> — add a faces message, rendered from the given message template which may contain EL expressions.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3507794" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">add(Severity severity, String messageTemplate)</fo:inline> — add a faces message, rendered from the given message template which may contain EL expressions.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2708591" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">addFromResourceBundle(String key)</fo:inline> — add a faces message, rendered from a message template defined in the Seam resource bundle which may contain EL expressions.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3059558" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">addFromResourceBundle(Severity severity, String key)</fo:inline> — add a faces message, rendered from a message template defined in the Seam resource bundle which may contain EL expressions.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3741294" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">clear()</fo:inline> — clear all messages.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2970489" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.faces.redirect</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						A convenient API for performing redirects with parameters (this is especially useful for bookmarkable search results screens).
+					</fo:block><fo:list-block id="id3913493" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3402684" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">redirect.viewId</fo:inline> — the JSF view id to redirect to.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3841981" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">redirect.conversationPropagationEnabled</fo:inline> — determines whether the conversation will propagate across the redirect.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2837175" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">redirect.parameters</fo:inline> — a map of request parameter name to value, to be passed in the redirect request.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3920117" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">execute()</fo:inline> — perform the redirect immediately.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3799999" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">captureCurrentRequest()</fo:inline> — stores the view id and request parameters of the current GET request (in the conversation context), for later use by calling <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">execute()</fo:inline>.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3516767" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.faces.httpError</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						A convenient API for sending HTTP errors.
+					</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3516785" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.core.events</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						An API for raising events that can be observed via <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Observer</fo:inline> methods, or method bindings in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">components.xml</fo:inline>.
+					</fo:block><fo:list-block id="id3489321" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3489324" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">raiseEvent(String type)</fo:inline> — raise an event of a particular type and distribute to all observers.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3489337" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">raiseAsynchronousEvent(String type)</fo:inline> — raise an event to be processed asynchronously by the EJB3 timer service.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3489350" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">raiseTimedEvent(String type, ....)</fo:inline> — schedule an event to be processed asynchronously by the EJB3 timer service.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3489363" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">addListener(String type, String methodBinding)</fo:inline> — add an observer for a particular event type.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3489379" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.core.interpolator</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						An API for interpolating the values of JSF EL expressions in Strings.
+					</fo:block><fo:list-block id="id3489395" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3489398" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">interpolate(String template)</fo:inline> — scan the template for JSF EL expressions of the form <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">#{...}</fo:inline> and replace them with their evaluated values.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3489419" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.core.expressions</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						An API for creating value and method bindings.
+					</fo:block><fo:list-block id="id3489434" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3489437" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">createValueBinding(String expression)</fo:inline> — create a value binding object.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2707753" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">createMethodBinding(String expression)</fo:inline> — create a method binding object.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2707768" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.core.pojoCache</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						Manager component for a JBoss Cache <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">PojoCache</fo:inline> instance.
+					</fo:block><fo:list-block id="id2707787" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id2707789" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">pojoCache.cfgResourceName</fo:inline> — the name of the configuration file. Default to <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">treecache.xml</fo:inline>.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			All of these components are always installed.
+		</fo:block></fo:block><fo:block id="id2707818"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Components for internationalization and themes</fo:marker><fo:block color="#a70000" font-size="16pt">23.3. Components for internationalization and themes</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum=!
 "0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The next group of components make it easy to build internationalized user interfaces using Seam.
+		</fo:block><fo:block id="id2707830" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2707832" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.core.locale</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" sp!
 ace-after.maximum="1em">
+						The Seam locale.
+					</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2707849" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.international.timezone</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						The Seam timezone. The timezone is session scoped.
+					</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2707867" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.core.resourceBundle</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						The Seam resource bundle. The resource bundle is stateless. The Seam resource bundle performs a depth-first search for keys in a list of Java resource bundles.
+					</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2707887" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.core.resourceLoader</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						The resource loader provides access to application resources and resource bundles.
+					</fo:block><fo:list-block id="id2707903" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3561494" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">resourceLoader.bundleNames</fo:inline> — the names of the Java resource bundles to search when the Seam resource bundle is used. Default to <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">messages</fo:inline>.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3561516" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.international.localeSelector</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						Supports selection of the locale either at configuration time, or by the user at runtime.
+					</fo:block><fo:list-block id="id3561532" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3561535" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">select()</fo:inline> — select the specified locale.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3561546" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">localeSelector.locale</fo:inline> — the actual <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">java.util.Locale</fo:inline>.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3561562" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">localeSelector.localeString</fo:inline> — the string representation of the locale.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3561575" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">localeSelector.language</fo:inline> — the language for the specified locale.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3561586" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">localeSelector.country</fo:inline> — the country for the specified locale.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3561599" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">localeSelector.variant</fo:inline> — the variant for the specified locale.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3561611" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">localeSelector.supportedLocales</fo:inline> — a list of <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">SelectItem</fo:inline>s representing the supported locales listed in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">jsf-config.xml</fo:inline>.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3561632" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">localeSelector.cookieEnabled</fo:inline> — specifies that the locale selection should be persisted via a cookie.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3561649" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.international.timezoneSelector</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						Supports selection of the timezone either at configuration time, or by the user at runtime.
+					</fo:block><fo:list-block id="id3561666" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3561669" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">select()</fo:inline> — select the specified locale.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3561680" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">timezoneSelector.timezone</fo:inline> — the actual <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">java.util.TimeZone</fo:inline>.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3561696" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">timezoneSelector.timeZoneId</fo:inline> — the string representation of the timezone.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3561709" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">timezoneSelector.cookieEnabled</fo:inline> — specifies that the timezone selection should be persisted via a cookie.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3561726" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.international.messages</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						A map containing internationalized messages rendered from message templates defined in the Seam resource bundle.
+					</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3561745" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.theme.themeSelector</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						Supports selection of the theme either at configuration time, or by the user at runtime.
+					</fo:block><fo:list-block id="id3561761" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3561764" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">select()</fo:inline> — select the specified theme.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2652983" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">theme.availableThemes</fo:inline> — the list of defined themes.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2652995" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">themeSelector.theme</fo:inline> — the selected theme.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2653007" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">themeSelector.themes</fo:inline> — a list of <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">SelectItem</fo:inline>s representing the defined themes.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2653023" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">themeSelector.cookieEnabled</fo:inline> — specifies that the theme selection should be persisted via a cookie.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2653040" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.theme.theme</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						A map containing theme entries.
+					</fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			All of these components are always installed.
+		</fo:block></fo:block><fo:block id="id2653066"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Components for controlling conversations</fo:marker><fo:block color="#a70000" font-size="16pt">23.4. Components for controlling conversations</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" spac!
 e-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The next group of components allow control of conversations by the application or user interface.
+		</fo:block><fo:block id="id2653078" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2653081" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.core.conversation</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1!
 em" space-after.maximum="1em">
+						API for application control of attributes of the current Seam conversation.
+					</fo:block><fo:list-block id="id2653097" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id2653100" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">getId()</fo:inline> — returns the current conversation ID
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2653113" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">isNested()</fo:inline> — is the current conversation a nested conversation?
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2653126" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">isLongRunning()</fo:inline> — is the current conversation a long-running conversation?
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2653139" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">getId()</fo:inline> — returns the current conversation ID
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2653151" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">getParentId()</fo:inline> — returns the conversation ID of the parent conversation
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2653164" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">getRootId()</fo:inline> — returns the conversation ID of the root conversation
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2653177" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">setTimeout(int timeout)</fo:inline> — sets the timeout for the current conversation
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2653190" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">setViewId(String outcome)</fo:inline> — sets the view id to be used when switching back to the current conversation from the conversation switcher, conversation list, or breadcrumbs.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2653204" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">setDescription(String description)</fo:inline> — sets the description of the current conversation to be displayed in the conversation switcher, conversation list, or breadcrumbs.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2653218" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">redirect()</fo:inline> — redirect to the last well-defined view id for this conversation (useful after login challenges).
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2653232" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">leave()</fo:inline> — exit the scope of this conversation, without actually ending the conversation.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2653245" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">begin()</fo:inline> — begin a long-running conversation (equivalent to <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Begin</fo:inline>).
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2653262" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">beginPageflow(String pageflowName)</fo:inline> — begin a long-running conversation with a pageflow (equivalent to <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Begin(pageflow="...")</fo:inline>).
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2653278" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">end()</fo:inline> — end a long-running conversation (equivalent to <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@End</fo:inline>).
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2653295" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">pop()</fo:inline> — pop the conversation stack, returning to the parent conversation.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2653308" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">root()</fo:inline> — return to the root conversation of the conversation stack.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3774021" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">changeFlushMode(FlushModeType flushMode)</fo:inline> — change the flush mode of the conversation.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3774038" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.core.conversationList</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						Manager component for the conversation list.
+					</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3774057" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.core.conversationStack</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						Manager component for the conversation stack (breadcrumbs).
+					</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3774076" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.faces.switcher</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						The conversation switcher.
+					</fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			All of these components are always installed.
+		</fo:block></fo:block><fo:block id="id3774101"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">jBPM-related components</fo:marker><fo:block color="#a70000" font-size="16pt">23.5. jBPM-related components</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-aft!
 er.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			These components are for use with jBPM.
+		</fo:block><fo:block id="id3774112" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3774115" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.pageflow.pageflow</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1!
 em" space-after.maximum="1em">
+						API control of Seam pageflows.
+					</fo:block><fo:list-block id="id3774130" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3774133" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">isInProcess()</fo:inline> — returns <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">true</fo:inline> if there is currently a pageflow in process
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3774150" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">getProcessInstance()</fo:inline> — returns jBPM <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">ProcessInstance</fo:inline> for the current pageflow
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3774166" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">begin(String pageflowName)</fo:inline> — begin a pageflow in the context of the current conversation
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3774178" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">reposition(String nodeName)</fo:inline> — reposition the current pageflow to a particular node
+							</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3774195" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.bpm.actor</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						API for application control of attributes of the jBPM actor associated with the current session.
+					</fo:block><fo:list-block id="id3774211" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3774214" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">setId(String actorId)</fo:inline> — sets the jBPM actor id of the current user.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3774227" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">getGroupActorIds()</fo:inline> — returns a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Set</fo:inline> to which jBPM actor ids for the current users groups may be added.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3774248" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.bpm.transition</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						API for application control of the jBPM transition for the current task.
+					</fo:block><fo:list-block id="id3774264" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3774267" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">setName(String transitionName)</fo:inline> — sets the jBPM transition name to be used when the current task is ended via <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@EndTask</fo:inline>.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3774288" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.bpm.businessProcess</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						API for programmatic control of the association between the conversation and business process.
+					</fo:block><fo:list-block id="id3774304" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3774307" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">businessProcess.taskId</fo:inline> — the id of the task associated with the current conversation.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3774319" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">businessProcess.processId</fo:inline> — the id of the process associated with the current conversation.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3774332" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">businessProcess.hasCurrentTask()</fo:inline> — is a task instance associated with the current conversation?
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3774345" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">businessProcess.hasCurrentProcess()</fo:inline> — is a process instance associated with the current conversation.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2766890" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">createProcess(String name)</fo:inline> — create an instance of the named process definition and associate it with the current conversation.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2766904" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">startTask()</fo:inline> — start the task associated with the current conversation.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2766917" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">endTask(String transitionName)</fo:inline> — end the task associated with the current conversation.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2766930" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">resumeTask(Long id)</fo:inline> — associate the task with the given id with the current conversation.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2766943" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">resumeProcess(Long id)</fo:inline> — associate the process with the given id with the current conversation.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2766956" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">transition(String transitionName)</fo:inline> — trigger the transition.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2766972" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.bpm.taskInstance</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						Manager component for the jBPM <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">TaskInstance</fo:inline>.
+					</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2766994" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.bpm.processInstance</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						Manager component for the jBPM <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">ProcessInstance</fo:inline>.
+					</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2767016" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.bpm.jbpmContext</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						Manager component for an event-scoped <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">JbpmContext</fo:inline>.
+					</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2767038" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.bpm.taskInstanceList</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						Manager component for the jBPM task list.
+					</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2767056" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.bpm.pooledTaskInstanceList</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						Manager component for the jBPM pooled task list.
+					</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2767075" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.bpm.taskInstanceListForType</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						Manager component for the jBPM task lists.
+					</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2767093" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.bpm.pooledTask</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						Action handler for pooled task assignment.
+					</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2767111" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.bpm.processInstanceFinder</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						Manager for the process instance task list.
+					</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2767130" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.bpm.processInstanceList</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						The process instance task list.
+					</fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			All of these components are installed whenever the component <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.bpm.jbpm</fo:inline> is installed.
+		</fo:block></fo:block><fo:block id="id2767160"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Security-related components</fo:marker><fo:block color="#a70000" font-size="16pt">23.6. Security-related components</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" s!
 pace-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			These components relate to web-tier security.
+		</fo:block><fo:block id="id2767172" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2767174" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.web.userPrincipal</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1!
 em" space-after.maximum="1em">
+						Manager component for the current user <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Principal</fo:inline>.
+					</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2767196" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.web.isUserInRole</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						Allows JSF pages to choose to render a control, depending upon the roles available to the current principal. <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;h:commandButton value="edit" rendered="#{isUserInRole['admin']}"/&gt;</fo:inline>.
+					</fo:block></fo:block></fo:block></fo:block><fo:block id="id2767223"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">JMS-related components</fo:marker><fo:block color="#a70000" font-size="16pt">23.7. JMS-related components</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.ma!
 ximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			These components are for use with managed <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">TopicPublisher</fo:inline>s and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">QueueSender</fo:inline>s (see below).
+		</fo:block><fo:block id="id2821159" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2821162" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.jms.queueSession</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1e!
 m" space-after.maximum="1em">
+						Manager component for a JMS <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">QueueSession</fo:inline> .
+					</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2821183" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.jms.topicSession</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						Manager component for a JMS <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">TopicSession</fo:inline> .
+					</fo:block></fo:block></fo:block></fo:block><fo:block id="components.mail"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Mail-related components</fo:marker><fo:block color="#a70000" font-size="16pt">23.8. Mail-related components</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-b!
 efore.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			These components are for use with Seam's Email support
+		</fo:block><fo:block id="id2821222" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2821224" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.mail.mailSession</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1e!
 m" space-after.maximum="1em">
+						Manager component for a JavaMail <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Session</fo:inline>. The session can be either looked up in the JNDI context (by setting the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">sessionJndiName</fo:inline> property) or it can created from the configuration options in which case the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">host</fo:inline> is mandatory.
+					</fo:block><fo:list-block id="id2821253" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id2821256" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.mail.mailSession.host</fo:inline> — the hostname of the SMTP server to use
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2821269" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.mail.mailSession.port</fo:inline> — the port of the SMTP server to use
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2821282" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.mail.mailSession.username</fo:inline> — the username to use to connect to the SMTP server.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2821296" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.mail.mailSession.password</fo:inline> — the password to use to connect to the SMTP server
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2821309" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.mail.mailSession.debug</fo:inline> — enable JavaMail debugging (very verbose)
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2821323" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.mail.mailSession.ssl</fo:inline> — enable SSL connection to SMTP (will default to port 465)
+							</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.mail.mailSession.tls</fo:inline> — by default true, enable TLS support in the mail session
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2821344" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.mail.mailSession.sessionJndiName</fo:inline> — name under which a javax.mail.Session is bound to JNDI. If supplied, all other properties will be ignored.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block></fo:block></fo:block><fo:block id="id2821366"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Infrastructural components</fo:marker><fo:block color="#a70000" font-size="16pt">23.9. Infrastructural components</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" s!
 pace-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			These components provide critical platform infrastructure. You can install a component which isn't installed by default by setting <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">install="true"</fo:inline> on the component in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">components.xml</fo:inline>.
+		</fo:block><fo:block id="id2821386" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2821389" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.core.init</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" spac!
 e-after.maximum="1em">
+						Initialization settings for Seam. Always installed.
+					</fo:block><fo:list-block id="id2821404" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id2821407" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.core.init.jndiPattern</fo:inline> — the JNDI pattern used for looking up session beans
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2821421" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.core.init.debug</fo:inline> — enable Seam debug mode. This should be set to false when in production. You may see errors if the system is placed under any load and debug is enabled.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2821435" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.core.init.clientSideConversations</fo:inline> — if set to <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">true</fo:inline>, Seam will save conversation context variables in the client instead of in the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">HttpSession</fo:inline>.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2821457" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.core.init.userTransactionName</fo:inline> — the JNDI name to use when looking up the JTA <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">UserTransaction</fo:inline> object.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2821479" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.core.manager</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						Internal component for Seam page and conversation context management. Always installed.
+					</fo:block><fo:list-block id="id2821495" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id2821498" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.core.manager.conversationTimeout</fo:inline> — the conversation context timeout in milliseconds.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2825054" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.core.manager.concurrentRequestTimeout</fo:inline> — maximum wait time for a thread attempting to gain a lock on the long-running conversation context.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2825069" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.core.manager.conversationIdParameter</fo:inline> — the request parameter used to propagate the conversation id, default to <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">conversationId</fo:inline>.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2825087" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.core.manager.conversationIsLongRunningParameter</fo:inline> — the request parameter used to propagate information about whether the conversation is long-running, default to <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">conversationIsLongRunning</fo:inline>.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2825109" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.navigation.pages</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						Internal component for Seam workspace management. Always installed.
+					</fo:block><fo:list-block id="id2825125" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id2825128" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.navigation.pages.noConversationViewId</fo:inline> — global setting for the view id to redirect to when a conversation entry is not found on the server side.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2825143" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.navigation.pages.loginViewId</fo:inline> — global setting for the view id to redirect to when an unauthenticated user tries to access a protected view.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2825156" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.navigation.pages.httpPort</fo:inline> — global setting for the port to use when the http scheme is requested.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2825170" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.navigation.pages.httpsPort</fo:inline> — global setting for the port to use when the https scheme is requested.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2825184" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.navigation.pages.resources</fo:inline> — a list of resources to search for <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">pages.xml</fo:inline> style resources. Defaults to <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">WEB-INF/pages.xml</fo:inline>.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2825209" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.bpm.jbpm</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						Bootstraps a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">JbpmConfiguration</fo:inline>. Install as class <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.bpm.Jbpm</fo:inline>.
+					</fo:block><fo:list-block id="id2825231" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id2825234" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.bpm.jbpm.processDefinitions</fo:inline> — a list of resource names of jPDL files to be used for orchestration of business processes.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2825248" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.bpm.jbpm.pageflowDefinitions</fo:inline> — a list of resource names of jPDL files to be used for orchestration of conversation page flows.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2825266" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.core.conversationEntries</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						Internal session-scoped component recording the active long-running conversations between requests.
+					</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2825286" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.faces.facesPage</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						Internal page-scoped component recording the conversation context associated with a page.
+					</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2825305" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.persistence.persistenceContexts</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						Internal component recording the persistence contexts which were used in the current conversation.
+					</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2825324" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.jms.queueConnection</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						Manages a JMS <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">QueueConnection</fo:inline>. Installed whenever managed managed <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">QueueSender</fo:inline> is installed.
+					</fo:block><fo:list-block id="id2825347" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id2825350" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.jms.queueConnection.queueConnectionFactoryJndiName</fo:inline> — the JNDI name of a JMS <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">QueueConnectionFactory</fo:inline>. Default to <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">UIL2ConnectionFactory</fo:inline>
+							</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2825374" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.jms.topicConnection</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						Manages a JMS <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">TopicConnection</fo:inline>. Installed whenever managed managed <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">TopicPublisher</fo:inline> is installed.
+					</fo:block><fo:list-block id="id2825397" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id2825400" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.jms.topicConnection.topicConnectionFactoryJndiName</fo:inline> — the JNDI name of a JMS <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">TopicConnectionFactory</fo:inline>. Default to <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">UIL2ConnectionFactory</fo:inline>
+							</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2793771" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.persistence.persistenceProvider</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						Abstraction layer for non-standardized features of JPA provider.
+					</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2793790" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.core.validators</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						Caches instances of Hibernate Validator <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">ClassValidator</fo:inline>.
+					</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2793812" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.faces.validation</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						Allows the application to determine whether validation failed or was successful.
+					</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2793831" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.debug.introspector</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						Support for the Seam Debug Page.
+					</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2793849" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.debug.contexts</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						Support for the Seam Debug Page.
+					</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2793866" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.exception.exceptions</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						Internal component for exception handling.
+					</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2793884" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.transaction.transaction</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						API for controlling transactions and abstracting the underlying transaction management implementation behind a JTA-compatible interface.
+					</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2793905" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.faces.safeActions</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						Decides if an action expression in an incoming URL is safe. This is done by checking that the action expression exists in the view.
+					</fo:block></fo:block></fo:block></fo:block><fo:block id="id2793927"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Miscellaneous components</fo:marker><fo:block color="#a70000" font-size="16pt">23.10. Miscellaneous components</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="id2793937" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.!
 maximum="1em"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2793940" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.async.dispatcher</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						Dispatcher stateless session bean for asynchronous methods.
+					</fo:block></fo:block></fo:block><fo:block id="id2793960" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2793962" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.core.image</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" spac!
 e-after.minimum="1em" space-after.maximum="1em">
+						Image manipulation and interrogation.
+					</fo:block></fo:block></fo:block><fo:block id="id2793982" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2793984" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.core.pojoCache</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" !
 space-after.minimum="1em" space-after.maximum="1em">
+						Manager component for a PojoCache instance.
+					</fo:block></fo:block></fo:block><fo:block id="id2794004" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2794007" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.core.uiComponent</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em!
 " space-after.minimum="1em" space-after.maximum="1em">
+						Manages a map of UIComponents keyed by component id.
+					</fo:block></fo:block></fo:block></fo:block><fo:block id="id2794027"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Special components</fo:marker><fo:block color="#a70000" font-size="16pt">23.11. Special components</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="!
 0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Certain special Seam component classes are installable multiple times under names specified in the Seam configuration. For example, the following lines in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">components.xml</fo:inline> install and configure two Seam components:
+		</fo:block><fo:block id="id2794046" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;component name="bookingDatabase"
+          class="org.jboss.seam.persistence.ManagedPersistenceContext"&gt;
+    &lt;property name="persistenceUnitJndiName"&gt;java:/comp/emf/bookingPersistence&lt;/property&gt;
+&lt;/component&gt;
+
+&lt;component name="userDatabase"
+          class="org.jboss.seam.persistence.ManagedPersistenceContext"&gt;
+    &lt;property name="persistenceUnitJndiName"&gt;java:/comp/emf/userPersistence&lt;/property&gt;
+&lt;/component&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The Seam component names are <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">bookingDatabase</fo:inline> and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">userDatabase</fo:inline>.
+		</fo:block><fo:block id="id2794071" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id2794074" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-style="italic">&lt;entityManager&gt;</fo:inline></fo:inline><fo:inline>, </fo:inline><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.persistence.ManagedPersistenceContext</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block spa!
 ce-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						Manager component for a conversation scoped managed <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">EntityManager</fo:inline> with an extended persistence context.
+					</fo:block><fo:list-block id="id2794100" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id2794103" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-style="italic">&lt;entityManager&gt;</fo:inline>.entityManagerFactory — a value binding expression that evaluates to an instance of <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">EntityManagerFactory</fo:inline>.
+							</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+								<fo:inline font-style="italic">&lt;entityManager&gt;</fo:inline>.persistenceUnitJndiName — the JNDI name of the entity manager factory, default to java:/<fo:inline font-style="italic">&lt;managedPersistenceContext&gt;</fo:inline>.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3043920" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-style="italic">&lt;entityManagerFactory&gt;</fo:inline></fo:inline><fo:inline>, </fo:inline><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.persistence.EntityManagerFactory</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" !
 space-after.minimum="1em" space-after.maximum="1em">
+						Manages a JPA <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">EntityManagerFactory</fo:inline>. This is most useful when using JPA outside of an EJB 3.0 supporting environment.
+					</fo:block><fo:list-block id="id3043945" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3043948" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">entityManagerFactory.persistenceUnitName</fo:inline> — the name of the persistence unit.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						See the API JavaDoc for further configuration properties.
+					</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3043970" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-style="italic">&lt;session&gt;</fo:inline></fo:inline><fo:inline>, </fo:inline><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.persistence.ManagedSession</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						Manager component for a conversation scoped managed Hibernate <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Session</fo:inline>.
+					</fo:block><fo:list-block id="id3043996" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3043998" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-style="italic">&lt;session&gt;</fo:inline>.sessionFactory — a value binding expression that evaluates to an instance of <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">SessionFactory</fo:inline>.
+							</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+								<fo:inline font-style="italic">&lt;session&gt;</fo:inline>.sessionFactoryJndiName — the JNDI name of the session factory, default to java:/<fo:inline font-style="italic">&lt;managedSession&gt;</fo:inline>.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3044033" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-style="italic">&lt;sessionFactory&gt;</fo:inline></fo:inline><fo:inline>, </fo:inline><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.persistence.HibernateSessionFactory</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" spa!
 ce-after.minimum="1em" space-after.maximum="1em">
+						Manages a Hibernate <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">SessionFactory</fo:inline>.
+					</fo:block><fo:list-block id="id3044058" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3044061" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;sessionFactory&gt;.cfgResourceName</fo:inline> — the path to the configuration file. Default to <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">hibernate.cfg.xml</fo:inline>.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						See the API JavaDoc for further configuration properties.
+					</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3044086" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-style="italic">&lt;managedQueueSender&gt;</fo:inline></fo:inline><fo:inline>, </fo:inline><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.jms.ManagedQueueSender</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						Manager component for an event scoped managed JMS <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">QueueSender</fo:inline>.
+					</fo:block><fo:list-block id="id3044112" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3044114" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-style="italic">&lt;managedQueueSender&gt;</fo:inline>.queueJndiName — the JNDI name of the JMS queue.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3044131" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-style="italic">&lt;managedTopicPublisher&gt;</fo:inline></fo:inline><fo:inline>, </fo:inline><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.jms.ManagedTopicPublisher</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-!
 after.minimum="1em" space-after.maximum="1em">
+						Manager component for an event scoped managed JMS <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">TopicPublisher</fo:inline>.
+					</fo:block><fo:list-block id="id3044156" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3044159" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-style="italic">&lt;managedTopicPublisher&gt;</fo:inline>.topicJndiName — the JNDI name of the JMS topic.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3044176" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-style="italic">&lt;managedWorkingMemory&gt;</fo:inline></fo:inline><fo:inline>, </fo:inline><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.drools.ManagedWorkingMemory</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space!
 -after.minimum="1em" space-after.maximum="1em">
+						Manager component for a conversation scoped managed Drools <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">WorkingMemory</fo:inline>.
+					</fo:block><fo:list-block id="id3044201" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3044204" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-style="italic">&lt;managedWorkingMemory&gt;</fo:inline>.ruleBase — a value expression that evaluates to an instance of <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">RuleBase</fo:inline>.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" id="id3044225" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-style="italic">&lt;ruleBase&gt;</fo:inline></fo:inline><fo:inline>, </fo:inline><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.drools.RuleBase</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" spa!
 ce-after.maximum="1em">
+						Manager component for an application scoped Drools <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">RuleBase</fo:inline>. <fo:inline font-style="italic">Note that this is not really intended for production usage, since it does not support dynamic installation of new rules.</fo:inline>
+					</fo:block><fo:list-block id="id3044255" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3044258" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+								<fo:inline font-style="italic">&lt;ruleBase&gt;</fo:inline>.ruleFiles — a list of files containing Drools rules.
+							</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+								<fo:inline font-style="italic">&lt;ruleBase&gt;</fo:inline>.dslFile — a Drools DSL definition.
+							</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block></fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="body" language="en" format="1" initial-page-number="auto-odd" force-page-count="end-on-even" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo!
 :table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always" font-weight="bold">Chapter 24.</fo:inline></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-wi!
 dth="proportional-column-width(0)"/><fo:table-column column-nu!
 mber="3"
 column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always"><fo:retrieve-marker retrieve-class-name="section.head.marker" retrieve-position="first-including-carryover" retrieve-boundary="page-sequence"/></fo:inline></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style!
 ="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always" font-weight="bold">Chapter 24. Seam JSF controls</fo:inline></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,s!
 ans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table tab!
 le-layou
t="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-footnote-separator"><fo:block><fo:leader color="black" leader-pattern="rule" leader-length="1in"/></fo:block></fo:static-content><fo!
 :static-content flow-name="xsl-region-after-first"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><!
 /fo:table-row></fo:table-body></fo:table></fo:block></fo:stati!
 c-conten
t><fo:static-content flow-name="xsl-region-after-odd"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell!
 ></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-even"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after"!
  relative-align="baseline"><fo:block><fo:block/></fo:block></f!
 o:table-
cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-blank"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="af!
 ter" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:flow flow-name="xsl-region-body" start-indent="0pt" end-indent="0pt"><fo:block id="Seam_Reference_Guide-Seam_JSF_controls"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats"><fo:block margin-left="0pc"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" color="#a70000" background-color="white" font-size="24pt" font-weight="bold" text-align="left" padding-left="1em" padding-right="1em">Seam JSF controls</fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Seam includes a number of JSF controls that are useful for working with Seam. These are intended to complement the built-in JSF controls, and controls from other third-party libraries. We recommend the Ajax4JSF and ADF faces (now Trinidad) tag libraries for use with Seam. We do not recommend the use of the Tomahawk tag library.
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		To use these controls, define the "<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">s</fo:inline>" namespace in your page as follows (facelets only):
+	</fo:block><fo:block id="id3643014" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+&lt;html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:s="http://jboss.com/products/seam/taglib"&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The ui example demonstrates the use of a number of these tags.
+	</fo:block><fo:block id="Seam_Reference_Guide-Seam_JSF_controls-Seam_JSF_Control_Reference" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto"><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.3pt" border-end-width="0.3pt" border-top-width="0.3pt" border-bottom-width="0.3pt" border-start-color="#dc9f2e" border-end-color="#dc9f2e" border-top-color="#dc9f2e" border-bottom-color="#dc9f2e" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="25%"/><fo:table-column column-number="2" column-width="75%"/><fo:table-body xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-left="4pt" p!
 adding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" border-end-width="0.15pt" border-end-style="solid" border-end-color="#dc9f2e" display-align="before"><fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;s:validate&gt;</fo:inline>
+						</fo:block>
+					</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" display-align="before"><fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Description</fo:inline>
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							A non-visual control, validates a JSF input field against the bound property using Hibernate Validator.
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Attributes</fo:inline>
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							None.
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Usage</fo:inline>
+						</fo:block>
+						
+<fo:block id="id2649498" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+&lt;h:inputText id="userName" required="true" value="#{customer.userName}"&gt;
+  &lt;s:validate /&gt;
+&lt;/h:inputText&gt;
+&lt;h:message for="userName" styleClass="error" /&gt;
+</fo:block>
+					</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" border-end-width="0.15pt" border-end-style="solid" border-end-color="#dc9f2e" display-align="before"><fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;s:validateAll&gt;</fo:inline>
+						</fo:block>
+					</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" display-align="before"><fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Description</fo:inline>
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							A non-visual control, validates all child JSF input fields against their bound properties using Hibernate Validator.
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Attributes</fo:inline>
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							None.
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Usage</fo:inline>
+						</fo:block>
+						
+<fo:block id="id2708681" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+&lt;s:validateAll&gt;
+  &lt;div class="entry"&gt;
+    &lt;h:outputLabel for="username"&gt;Username:&lt;/h:outputLabel&gt;
+    &lt;h:inputText id="username" value="#{user.username}" required="true"/&gt;
+    &lt;h:message for="username" styleClass="error" /&gt;
+  &lt;/div&gt;
+  &lt;div class="entry"&gt;
+    &lt;h:outputLabel for="password"&gt;Password:&lt;/h:outputLabel&gt;
+    &lt;h:inputSecret id="password" value="#{user.password}" required="true"/&gt;
+    &lt;h:message for="password" styleClass="error" /&gt;
+  &lt;/div&gt;
+  &lt;div class="entry"&gt;
+    &lt;h:outputLabel for="verify"&gt;Verify Password:&lt;/h:outputLabel&gt;
+    &lt;h:inputSecret id="verify" value="#{register.verify}" required="true"/&gt;
+    &lt;h:message for="verify" styleClass="error" /&gt;
+  &lt;/div&gt;
+&lt;/s:validateAll&gt;
+</fo:block>
+					</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" border-end-width="0.15pt" border-end-style="solid" border-end-color="#dc9f2e" display-align="before"><fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;s:formattedText&gt;</fo:inline>
+						</fo:block>
+					</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" display-align="before"><fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Description</fo:inline>
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							Outputs <fo:inline font-style="italic">Seam Text</fo:inline>, a rich text markup useful for blogs, wikis and other applications that might use rich text. See the Seam Text chapter for full usage.
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Attributes</fo:inline>
+						</fo:block>
+						<fo:list-block id="id3937951" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3147315" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+									<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">value</fo:inline> — an EL expression specifying the rich text markup to render.
+								</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Usage</fo:inline>
+						</fo:block>
+						
+<fo:block id="id3451352" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;s:formattedText value="#{blog.text}"/&gt;
+</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Example</fo:inline>
+						</fo:block>
+						<fo:block id="id3577960" text-align="center"><fo:external-graphic xmlns="http://www.w3.org/TR/xhtml1/transitional" src="url(images/controls-seamtext.png)" width="444px" height="auto" content-width="scale-to-fit" content-height="scale-to-fit" content-type="content-type:image/png" text-align="center"/></fo:block>
+					</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" border-end-width="0.15pt" border-end-style="solid" border-end-color="#dc9f2e" display-align="before"><fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;s:convertDateTime&gt;</fo:inline>
+						</fo:block>
+					</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" display-align="before"><fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Description</fo:inline>
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							Perform date or time conversions in the Seam timezone.
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Attributes</fo:inline>
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							None.
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Usage</fo:inline>
+						</fo:block>
+						
+<fo:block id="id3489498" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+</fo:block>
+					</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" border-end-width="0.15pt" border-end-style="solid" border-end-color="#dc9f2e" display-align="before"><fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;s:convertEnum&gt;</fo:inline>
+						</fo:block>
+					</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" display-align="before"><fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Description</fo:inline>
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							Assigns an enum converter to the current component. This is primarily useful for radio button and dropdown controls.
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Attributes</fo:inline>
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							None.
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Usage</fo:inline>
+						</fo:block>
+						
+<fo:block id="id3489561" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+</fo:block>
+					</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" border-end-width="0.15pt" border-end-style="solid" border-end-color="#dc9f2e" display-align="before"><fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;s:convertEntity&gt;</fo:inline>
+						</fo:block>
+					</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" display-align="before"><fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Description</fo:inline>
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							Assigns an entity converter to the current component. This is primarily useful for radio button and dropdown controls.
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							The converter works with any entity which has an <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@Id</fo:inline> annotation - either simple or composite. If your <fo:inline font-style="italic">Managed Persistence Context</fo:inline> is not called <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">entityManager</fo:inline>, then you need to set it in components.xml:
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Attributes</fo:inline>
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							None.
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Configuration</fo:inline>
+						</fo:block>
+						
+<fo:block id="id2822371" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+  &lt;component name="org.jboss.seam.ui.entityConverter"&gt;
+      &lt;property name="entityManager"&gt;#{em}&lt;/property&gt;
+  &lt;/component&gt;
+</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Usage</fo:inline>
+						</fo:block>
+						
+<fo:block id="id2822385" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;h:selectOneMenu value="#{person.continent}" required="true"&gt;
+    &lt;s:selectItems value="#{continents.resultList}" var="continent" label="#{continent.name}" noSelectionLabel="Please Select..."/&gt;
+    &lt;s:convertEntity /&gt;
+&lt;/h:selectOneMenu&gt;
+</fo:block>
+					</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" border-end-width="0.15pt" border-end-style="solid" border-end-color="#dc9f2e" display-align="before"><fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;s:enumItem&gt;</fo:inline>
+						</fo:block>
+					</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" display-align="before"><fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Description</fo:inline>
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							Creates a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">SelectItem</fo:inline> from an enum value.
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Attributes</fo:inline>
+						</fo:block>
+						<fo:list-block id="id2822442" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id2822445" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+									<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">enumValue</fo:inline> — the string representation of the enum value.
+								</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2822458" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+									<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">label</fo:inline> — the label to be used when rendering the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">SelectItem</fo:inline>.
+								</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Usage</fo:inline>
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							
+<fo:block id="id3302199" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+</fo:block>
+						</fo:block>
+					</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" border-end-width="0.15pt" border-end-style="solid" border-end-color="#dc9f2e" display-align="before"><fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;s:selectItems&gt;</fo:inline>
+						</fo:block>
+					</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" display-align="before"><fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Description</fo:inline>
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							Creates a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">List&lt;SelectItem&gt;</fo:inline> from a List, Set, DataModel or Array.
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Attributes</fo:inline>
+						</fo:block>
+						<fo:list-block id="id3302255" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3302257" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+									<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">value</fo:inline> — an EL expression specifying the data that backs the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">List&lt;SelectItem&gt;</fo:inline>
+								</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3302274" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+									<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">var</fo:inline> — defines the name of the local variable that holds the current object during iteration
+								</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3302288" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+									<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">label</fo:inline> — the label to be used when rendering the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">SelectItem</fo:inline>. Can reference the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">var</fo:inline> variable
+								</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3302308" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+									<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">disabled</fo:inline> — if true the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">SelectItem</fo:inline> will be rendered disabled. Can reference the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">var</fo:inline> variable
+								</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3302329" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+									<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">noSelectionLabel</fo:inline> — specifies the (optional) label to place at the top of list (if <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">required="true"</fo:inline> is also specified then selecting this value will cause a validation error)
+								</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3302348" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+									<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">hideNoSelectionLabel</fo:inline> — if true, the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">noSelectionLabel</fo:inline> will be hidden when a value is selected
+								</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Usage</fo:inline>
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							
+<fo:block id="id3302377" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+
+&lt;h:selectOneMenu value="#{person.age}"  converter="#{converters.ageConverter}"&gt;
+    &lt;s:selectItems value="#{ages}" var="age" label="#{age}" /&gt;
+&lt;/h:selectOneMenu&gt;
+</fo:block>
+						</fo:block>
+					</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" border-end-width="0.15pt" border-end-style="solid" border-end-color="#dc9f2e" display-align="before"><fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;s:graphicImage&gt;</fo:inline>
+						</fo:block>
+					</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" display-align="before"><fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Description</fo:inline>
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							An extended <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;h:graphicImage&gt;</fo:inline> that allows the image to be created in a Seam Component; further transforms can be applied to the image. <fo:inline font-style="italic">Facelets only.</fo:inline>
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							All attributes for <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;h:graphicImage&gt;</fo:inline> are supported, as well as:
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Attributes</fo:inline>
+						</fo:block>
+						<fo:list-block id="id3302447" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3302450" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+									<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">value</fo:inline> — image to display. Can be a path <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">String</fo:inline> (loaded from the classpath), a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">byte[]</fo:inline>, a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">java.io.File</fo:inline>, a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">java.io.InputStream</fo:inline> or a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">java.net.URL</fo:inline>. Currently supported image formats are <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">image/png</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">image/jpeg</fo:inline> and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">image/gif</fo:inline>.
+								</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3640459" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+									<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">fileName</fo:inline> — if not specified the served image will have a generated file name. If you want to name your file, you should specify it here. This name should be unique
+								</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Transformations</fo:inline>
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							To apply a transform to the image, you would nest a tag specifying the transform to apply. Seam currently supports these transforms:
+						</fo:block>
+						<fo:block id="id3640490" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" id="id3640493" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;s:transformImageSize&gt;</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-block id="id3640503" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3640506" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" s!
 pace-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+												<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">width</fo:inline> — new width of the image
+											</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3640519" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+												<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">height</fo:inline> — new height of the image
+											</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3640532" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+												<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">maintainRatio</fo:inline> — if <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">true</fo:inline>, and <fo:inline font-style="italic">one</fo:inline> of <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">width</fo:inline>/<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">height</fo:inline> are specified, the image will be resized with the dimension not specified being calculated to maintain the aspect ratio.
+											</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3640562" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+												<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">factor</fo:inline> — scale the image by the given factor
+											</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" id="id3640579" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;s:transformImageBlur&gt;</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-block id="id3640590" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3640592" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:b!
 lock>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+												<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">radius</fo:inline> — perform a convolution blur with the given radius
+											</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" id="id3640610" keep-together.within-column="always" keep-with-next.within-column="always"><fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;s:transformImageType&gt;</fo:inline></fo:inline></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" margin-left="0.25in" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-block id="id3640620" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3640623" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:b!
 lock>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+												<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">contentType</fo:inline> — alter the type of the image to either <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">image/jpeg</fo:inline> or <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">image/png</fo:inline>
+											</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block></fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							It is easy to create your own transform - create a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">UIComponent</fo:inline> which <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">implements</fo:inline><fo:inline font-weight="bold" font-family="Liberation Mono,monospace">org.jboss.seam.ui.graphicImage.ImageTransform</fo:inline>. Inside the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">applyTransform()</fo:inline>method use <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">image.getBufferedImage()</fo:inline> to get the original image and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">image.setBufferedImage()</fo:inline> to set your transformed image. Transforms are applied in the order specified in the view.
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Usage</fo:inline>
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							
+<fo:block id="id3640688" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+</fo:block>
+						</fo:block>
+					</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" border-end-width="0.15pt" border-end-style="solid" border-end-color="#dc9f2e" display-align="before"><fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;s:decorate&gt;</fo:inline>
+						</fo:block>
+					</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" display-align="before"><fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Description</fo:inline>
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							"Decorate" a JSF input field when validation fails or when <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">required="true"</fo:inline> is set.
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Attributes</fo:inline>
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							None.
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Usage</fo:inline>
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							
+<fo:block id="id2668970" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+</fo:block>
+						</fo:block>
+					</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" border-end-width="0.15pt" border-end-style="solid" border-end-color="#dc9f2e" display-align="before"><fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;s:layoutForm&gt;</fo:inline>
+						</fo:block>
+					</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" display-align="before"><fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Description</fo:inline>
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							A layout component for producing a "standard" form layout. Each child component will be treated as a row, and if the child is a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;s:decorate&gt;</fo:inline>, additional formatting will be applied: 
+							<fo:list-block id="id2669019" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id2669021" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+										Label — if a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">label</fo:inline> facet is on the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;s:decorate&gt;</fo:inline> then it's contents will be used as the label for this field. The labels are rendered right-aligned in a column
+									</fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+										Some further decoration facets are supported - <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">beforeLabel</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">afterLabel</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">aroundLabel</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">beforeInvalidLabel</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">afterInvalidLabel</fo:inline> and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">aroundInvalidLabel</fo:inline>.
+									</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2669068" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+										Other text — if a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">belowLabel</fo:inline> facet or/and a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">belowField</fo:inline> facet are present on <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;s:decorate&gt;</fo:inline> then it's contents will be placed below the label or the field
+									</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2669089" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+										Required — if <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">required="true"</fo:inline> is set on the field, then the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">aroundRequiredField</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">beforeRequiredField</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">afterRequiredField</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">aroundRequiredLabel</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">beforeRequiredLabel</fo:inline> and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">afterRequiredLabel</fo:inline> will be applied.
+									</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block>
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Attributes</fo:inline>
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							None.
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Usage</fo:inline>
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							
+<fo:block id="id2669150" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+&lt;s:layoutForm&gt;
+   &lt;f:facet name="aroundInvalidField"&gt;
+       &lt;s:span styleClass="error"/&gt;
+   &lt;/f:facet&gt;
+   &lt;f:facet name="afterInvalidField"&gt;
+       &lt;s:message /&gt;
+   &lt;/f:facet&gt;
+   &lt;f:facet name="beforeRequiredLabel"&gt;
+   	&lt;s:span&gt;∗&lt;/s:span&gt;
+   &lt;/f:facet&gt;
+   &lt;f:facet name="aroundLabel"&gt;
+   	&lt;s:span style="text-align:right;" /&gt;
+   &lt;/f:facet&gt;
+   &lt;f:facet name="aroundInvalidLabel"&gt;
+   	&lt;s:span style="text-align:right;" styleClass="error" /&gt;
+   &lt;/f:facet&gt;
+   &lt;s:decorate&gt;
+        &lt;f:facet name="label"&gt;
+		    &lt;h:outputText value="Name" /&gt;
+        &lt;/f:facet&gt;
+        &lt;h:inputText value="#{person.name}" required="true"/&gt;
+        &lt;f:facet name="belowField"&gt;
+            &lt;h:outputText styleClass="help" 
+               value="Enter your name as it appears 
+                  on your passport" /&gt;
+        &lt;/f:facet&gt;
+    &lt;/s:decorate&gt;
+&lt;/s:layoutForm&gt;
+</fo:block>
+						</fo:block>
+						<fo:block id="id2669170"><fo:external-graphic xmlns="http://www.w3.org/TR/xhtml1/transitional" src="url(images/layoutForm-example.png)" width="auto" height="auto" content-width="auto" content-height="auto" content-type="content-type:image/png"/></fo:block>
+					</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" border-end-width="0.15pt" border-end-style="solid" border-end-color="#dc9f2e" display-align="before"><fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;s:message&gt;</fo:inline>
+						</fo:block>
+					</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" display-align="before"><fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Description</fo:inline>
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							"Decorate" a JSF input field with the validation error message.
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Attributes</fo:inline>
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							None.
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Usage</fo:inline>
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							
+<fo:block id="id2669253" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+</fo:block>
+						</fo:block>
+					</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" border-end-width="0.15pt" border-end-style="solid" border-end-color="#dc9f2e" display-align="before"><fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;s:span&gt;</fo:inline>
+						</fo:block>
+					</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" display-align="before"><fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Description</fo:inline>
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							Render a HTML <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;span&gt;</fo:inline>.
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Attributes</fo:inline>
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							None.
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Usage</fo:inline>
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							
+<fo:block id="id2720713" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+</fo:block>
+						</fo:block>
+					</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" border-end-width="0.15pt" border-end-style="solid" border-end-color="#dc9f2e" display-align="before"><fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;s:div&gt;</fo:inline>
+						</fo:block>
+					</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" display-align="before"><fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Description</fo:inline>
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							Render a HTML <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;div&gt;</fo:inline>.
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Attributes</fo:inline>
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							None.
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Usage</fo:inline>
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							
+<fo:block id="id2720781" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+</fo:block>
+						</fo:block>
+					</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" border-end-width="0.15pt" border-end-style="solid" border-end-color="#dc9f2e" display-align="before"><fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;s:fragment&gt;</fo:inline>
+						</fo:block>
+					</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" display-align="before"><fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Description</fo:inline>
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							A non-rendering component useful for enabling/disabling rendering of it's children.
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Attributes</fo:inline>
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							None.
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Usage</fo:inline>
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							
+<fo:block id="id2720848" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+</fo:block>
+						</fo:block>
+					</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" border-end-width="0.15pt" border-end-style="solid" border-end-color="#dc9f2e" display-align="before"><fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;s:cache&gt;</fo:inline>
+						</fo:block>
+					</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" display-align="before"><fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Description</fo:inline>
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							Cache the rendered page fragment using JBoss Cache. Note that <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;s:cache&gt;</fo:inline> actually uses the instance of JBoss Cache managed by the built-in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">pojoCache</fo:inline> component.
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Attributes</fo:inline>
+						</fo:block>
+						<fo:list-block id="id2720908" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id2720911" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+									<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">key</fo:inline> — the key to cache rendered content, often a value expression. For example, if we were caching a page fragment that displays a document, we might use <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">key="Document-#{document.id}"</fo:inline>.
+								</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2720929" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+									<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">enabled</fo:inline> — a value expression that determines if the cache should be used.
+								</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2720943" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+									<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">region</fo:inline> — a JBoss Cache node to use (different nodes can have different expiry policies).
+								</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Usage</fo:inline>
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							
+<fo:block id="id2720968" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+</fo:block>
+						</fo:block>
+					</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" border-end-width="0.15pt" border-end-style="solid" border-end-color="#dc9f2e" display-align="before"><fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;s:link&gt;</fo:inline>
+						</fo:block>
+					</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" display-align="before"><fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Description</fo:inline>
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							A link that supports invocation of an action with control over conversation propagation. <fo:inline font-style="italic">Does not submit the form.</fo:inline>
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Attributes</fo:inline>
+						</fo:block>
+						<fo:list-block id="id2721024" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id2721027" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+									<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">value</fo:inline> — the label.
+								</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2721038" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+									<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">action</fo:inline> — a method binding that specified the action listener.
+								</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2721051" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+									<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">view</fo:inline> — the JSF view id to link to.
+								</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2721064" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+									<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">fragment</fo:inline> — the fragment identifier to link to.
+								</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2721076" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+									<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">disabled</fo:inline> — is the link disabled?
+								</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2792513" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+									<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">propagation</fo:inline> — determines the conversation propagation style: <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">begin</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">join</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">nest</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">none</fo:inline> or <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">end</fo:inline>.
+								</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2792546" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+									<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">pageflow</fo:inline> — a pageflow definition to begin. (This is only useful when <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">propagation="begin"</fo:inline> or <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">propagation="join"</fo:inline>.)
+								</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Usage</fo:inline>
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							
+<fo:block id="id2792579" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+</fo:block>
+						</fo:block>
+					</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" border-end-width="0.15pt" border-end-style="solid" border-end-color="#dc9f2e" display-align="before"><fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;s:button&gt;</fo:inline>
+						</fo:block>
+					</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" display-align="before"><fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Description</fo:inline>
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							A button that supports invocation of an action with control over conversation propagation. <fo:inline font-style="italic">Does not submit the form.</fo:inline>
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Attributes</fo:inline>
+						</fo:block>
+						<fo:list-block id="id2792635" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id2792638" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+									<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">value</fo:inline> — the label.
+								</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2792650" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+									<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">action</fo:inline> — a method binding that specified the action listener.
+								</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2792663" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+									<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">view</fo:inline> — the JSF view id to link to.
+								</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2792675" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+									<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">fragment</fo:inline> — the fragment identifier to link to.
+								</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2792688" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+									<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">disabled</fo:inline> — is the link disabled?
+								</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2792700" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+									<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">propagation</fo:inline> — determines the conversation propagation style: <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">begin</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">join</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">nest</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">none</fo:inline> or <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">end</fo:inline>.
+								</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2792732" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+									<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">pageflow</fo:inline> — a pageflow definition to begin. (This is only useful when <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">propagation="begin"</fo:inline> or <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">propagation="join"</fo:inline>.)
+								</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Usage</fo:inline>
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							
+<fo:block id="id2792766" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+</fo:block>
+						</fo:block>
+					</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" border-end-width="0.15pt" border-end-style="solid" border-end-color="#dc9f2e" display-align="before"><fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;s:selectDate&gt;</fo:inline>
+						</fo:block>
+					</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" display-align="before"><fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Description</fo:inline>
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							Displays a dynamic date picker component that selects a date for the specified input field. The body of the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">selectDate</fo:inline> element should contain HTML elements, such as text or an image, that prompt the user to click to display the date picker. The date picker <fo:inline font-style="italic">must</fo:inline> be styled using CSS. An example CSS file can be found in the Seam booking demo as <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">date.css</fo:inline>, or can be generated using seam-gen. The CSS styles used to control the appearance of the date picker are also described below.
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Attributes</fo:inline>
+						</fo:block>
+						<fo:list-block id="id2792836" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id2792838" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+									<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">for</fo:inline> — The id of the input field that the date picker will insert the selected date into.
+								</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2792852" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+									<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">dateFormat</fo:inline> — The date format string. This should match the date format of the input field.
+								</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2792865" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+									<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">startYear</fo:inline> — The popup year selector range will start at this year.
+								</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2792878" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+									<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">endYear</fo:inline> — The popup year selector range will end at this year.
+								</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Usage</fo:inline>
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							
+<fo:block id="id3757693" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+  &lt;div class="row"&gt;
+    &lt;h:outputLabel for="dob"&gt;Date of birth&lt;em&gt;*&lt;/em&gt;&lt;/h:outputLabel&gt;
+    &lt;h:inputText id="dob" value="#{user.dob}" required="true"&gt;
+      &lt;s:convertDateTime pattern="MM/dd/yyyy"/&gt;
+    &lt;/h:inputText&gt;
+    &lt;s:selectDate for="dob" startYear="1910" endYear="2007"&gt;&lt;img src="img/datepicker.png"/&gt;&lt;/s:selectDate&gt;
+    &lt;div class="validationError"&gt;&lt;h:message for="dob"/&gt;&lt;/div&gt;
+  &lt;/div&gt;
+</fo:block>
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Example</fo:inline>
+						</fo:block>
+						<fo:block id="id3757713" text-align="center"><fo:external-graphic xmlns="http://www.w3.org/TR/xhtml1/transitional" src="url(images/controls-selectdate.png)" width="auto" height="auto" content-width="auto" content-height="auto" content-type="content-type:image/png" text-align="center"/></fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">CSS Styling</fo:inline>
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							The following list describes the CSS class names that are used to control the style of the selectDate control.
+						</fo:block>
+						<fo:list-block id="id3757752" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3757755" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+									<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">seam-date</fo:inline> — This class is applied to the outer <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">div</fo:inline> containing the popup calendar. (1) It is also applied to the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">table</fo:inline> that controls the inner layout of the calendar. (2)
+								</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3757778" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+									<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">seam-date-header</fo:inline> — This class is applied to the calendar header table row (<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">tr</fo:inline>) and header table cells (<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">td</fo:inline>). (3)
+								</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3757798" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+									<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">seam-date-header-prevMonth</fo:inline> — This class is applied to the "previous month" table cell, (<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">td</fo:inline>), which when clicked causes the calendar to display the month prior to the one currently displayed. (4)
+								</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3757817" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+									<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">seam-date-header-nextMonth</fo:inline> — This class is applied to the "next month" table cell, (<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">td</fo:inline>), which when clicked causes the calendar to display the month following the one currently displayed. (5)
+								</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3757835" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+									<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">seam-date-headerDays</fo:inline> — This class is applied to the calendar days header row (<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">tr</fo:inline>), which contains the names of the week days. (6)
+								</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3757853" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+									<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">seam-date-footer</fo:inline> — This class is applied to the calendar footer row (<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">tr</fo:inline>), which displays the current date. (7)
+								</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3757870" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+									<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">seam-date-inMonth</fo:inline> — This class is applied to the table cell (<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">td</fo:inline>) elements that contain a date within the month currently displayed. (8)
+								</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3757888" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+									<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">seam-date-outMonth</fo:inline> — This class is applied to the table cell (<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">td</fo:inline>) elements that contain a date outside of the month currently displayed. (9)
+								</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3757906" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+									<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">seam-date-selected</fo:inline> — This class is applied to the table cell (<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">td</fo:inline>) element that contains the currently selected date. (10)
+								</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3757924" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+									<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">seam-date-dayOff-inMonth</fo:inline> — This class is applied to the table cell (<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">td</fo:inline>) elements that contain a "day off" date (i.e. weekend days, Saturday and Sunday) within the currently selected month. (11)
+								</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3757943" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+									<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">seam-date-dayOff-outMonth</fo:inline> — This class is applied to the table cell (<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">td</fo:inline>) elements that contain a "day off" date (i.e. weekend days, Saturday and Sunday) outside of the currently selected month. (12)
+								</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3757961" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+									<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">seam-date-hover</fo:inline> — This class is applied to the table cell (<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">td</fo:inline>) element over which the cursor is hovering. (13)
+								</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3757979" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+									<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">seam-date-monthNames</fo:inline> — This class is applied to the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">div</fo:inline> control that contains the popup month selector. (14)
+								</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3757995" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+									<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">seam-date-monthNameLink</fo:inline> — This class is applied to the anchor (<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">a</fo:inline>) controls that contain the popup month names. (15)
+								</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3758012" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+									<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">seam-date-years </fo:inline> — This class is applied to the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">div</fo:inline> control that contains the popup year selector. (16)
+								</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id3758029" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+									<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">seam-date-yearLink</fo:inline> — This class is applied to the anchor (<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">a</fo:inline>) controls that contain the popup years. (15)
+								</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block>
+						<fo:block id="id3758048" text-align="center"><fo:external-graphic xmlns="http://www.w3.org/TR/xhtml1/transitional" src="url(images/controls-selectdatecss.png)" width="444px" height="auto" content-width="scale-to-fit" content-height="scale-to-fit" content-type="content-type:image/png" text-align="center"/></fo:block>
+					</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" border-end-width="0.15pt" border-end-style="solid" border-end-color="#dc9f2e" display-align="before"><fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;s:conversationPropagation&gt;</fo:inline>
+						</fo:block>
+					</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" display-align="before"><fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Description</fo:inline>
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							Customize the conversation propagation for a command link or button (or similar JSF control). <fo:inline font-style="italic">Facelets only.</fo:inline>
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Attributes</fo:inline>
+						</fo:block>
+						<fo:list-block id="id2709021" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id2709024" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+									<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">propagation</fo:inline> — determines the conversation propagation style: <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">begin</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">join</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">nest</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">none</fo:inline> or <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">end</fo:inline>.
+								</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2709057" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+									<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">pageflow</fo:inline> — a pageflow definition to begin. (This is only useful when <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">propagation="begin"</fo:inline> or <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">propagation="join"</fo:inline>.)
+								</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Usage</fo:inline>
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							
+<fo:block id="id2709090" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+</fo:block>
+						</fo:block>
+					</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" border-end-width="0.15pt" border-end-style="solid" border-end-color="#dc9f2e" display-align="before"><fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;s:conversationId&gt;</fo:inline>
+						</fo:block>
+					</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" display-align="before"><fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Description</fo:inline>
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							Add the conversation id to an output link (or similar JSF control). <fo:inline font-style="italic">Facelets only.</fo:inline>
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Attributes</fo:inline>
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							None.
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Usage</fo:inline>
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							
+<fo:block id="id2709161" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+</fo:block>
+						</fo:block>
+					</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" border-end-width="0.15pt" border-end-style="solid" border-end-color="#dc9f2e" display-align="before"><fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;s:taskId&gt;</fo:inline>
+						</fo:block>
+					</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" display-align="before"><fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Description</fo:inline>
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							Add the task id to an output link (or similar JSF control), when the task is available via <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">#{task}</fo:inline>. <fo:inline font-style="italic">Facelets only.</fo:inline>
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Attributes</fo:inline>
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							None.
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Usage</fo:inline>
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							
+<fo:block id="id2709235" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+</fo:block>
+						</fo:block>
+					</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-end-width="0.15pt" border-end-style="solid" border-end-color="#dc9f2e" display-align="before"><fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">&lt;s:fileUpload&gt;</fo:inline>
+						</fo:block>
+					</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" display-align="before"><fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Description</fo:inline>
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							Renders a file upload control. This control must be used within a form with an encoding type of <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">multipart/form-data</fo:inline>, i.e:
+						</fo:block>
+						
+<fo:block id="id2709284" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+                       
+        &lt;h:form enctype="multipart/form-data"&gt;
+</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							For multipart requests, the Seam Multipart servlet filter must also be configured in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">web.xml</fo:inline>:
+						</fo:block>
+						
+<fo:block id="id2709298" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+                       
+  &lt;filter&gt;
+    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;
+    &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-class&gt;
+  &lt;/filter&gt;
+
+  &lt;filter-mapping&gt;
+    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;
+    &lt;url-pattern&gt;/*&lt;/url-pattern&gt;
+  &lt;/filter-mapping&gt;
+</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Configuration</fo:inline>
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							The following configuration options for multipart requests may be configured in components.xml:
+						</fo:block>
+						<fo:list-block id="id2709321" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id2709324" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+									<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">createTempFiles</fo:inline> — if this option is set to true, uploaded files are streamed to a temporary file instead of in memory.
+								</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2740924" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+									<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">maxRequestSize</fo:inline> — the maximum size of a file upload request, in bytes.
+								</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							Here's an example:
+						</fo:block>
+						
+<fo:block id="id2740942" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+                       
+  &lt;component class="org.jboss.seam.web.MultipartFilter"&gt;
+      &lt;property name="createTempFiles"&gt;true&lt;/property&gt;
+      &lt;property name="maxRequestSize"&gt;1000000&lt;/property&gt;
+  &lt;/component&gt;
+</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Attributes</fo:inline>
+						</fo:block>
+						<fo:list-block id="id2740957" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id2740960" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+									<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">data</fo:inline> — this value binding receives the binary file data. The receiving field should be declared as a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">byte[]</fo:inline> or <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">InputStream</fo:inline> (required).
+								</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2740981" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+									<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">contentType</fo:inline> — this value binding receives the file's content type (optional).
+								</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2740995" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+									<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">fileName</fo:inline> — this value binding receives the filename (optional).
+								</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2741008" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+									<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">accept</fo:inline> — a comma-separated list of content types to accept, may not be supported by the browser. E.g. <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">"images/png,images/jpg"</fo:inline>, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">"images/*"</fo:inline>.
+								</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2741029" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+									<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">style</fo:inline> — The control's style
+								</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2741040" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+									<fo:inline font-weight="bold" font-family="Liberation Mono,monospace">styleClass</fo:inline> — The control's style class
+								</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							<fo:inline font-style="italic">Usage</fo:inline>
+						</fo:block>
+						<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+							
+<fo:block id="id2741065" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">
+</fo:block>
+						</fo:block>
+					</fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table><fo:block font-weight="normal" font-size="10pt" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" color="#a70000" background-color="white" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-previous.within-column="always">Table 24.1. Seam JSF Control Reference</fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="body" language="en" format="1" initial-page-number="auto-odd" force-page-count="end-on-even" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixe!
 d" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always" font-weight="bold">Chapter 25.</fo:inline></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block wrap-optio!
 n="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,Zap!
 fDingbat
s" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always"><fo:retrieve-marker retrieve-class-name="section.head.marker" retrieve-position="first-including-carryover" retrieve-boundary="page-sequence"/></fo:inline></fo:block></!
 fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always" font-weight="bold">Chapter 25. Expression language enhancements</fo:inline></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="bef!
 ore" relative-align="baseline"><fo:block/></fo:table-cell><fo:!
 table-ce
ll text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:ta!
 ble-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-footnote-separator"><fo:block><fo:leader color="black" leader-pattern="rule" leader-length="1in"/></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" rel!
 ative-align="baseline"><fo:block><fo:block/></fo:block></fo:ta!
 ble-cell
><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-odd"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" r!
 elative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-even"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimensio!
 n.minimum="14pt"><fo:table-cell text-align="start" display-ali!
 gn="afte
r" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-blank"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dime!
 nsion.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:flow flow-name="xsl-region-body" start-indent="0pt" end-indent="0pt"><fo:block id="Seam_Reference_Guide-Expression_language_enhancements"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats"><fo:block margin-left="0pc"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" color="#a70000" background-color="white" font-size="24pt" font-weight="bold" text-align="left" padding-left="1em" padding-right="!
 1em">Expression language enhancements</fo:block></fo:block></f!
 o:block>
</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		The standard Unified Expression Language (EL) assumes that any parameters to a method expression will be provided by Java code. This means that a method with parameters cannot be used as a JSF method binding. Seam provides an enhancement to the EL that allows parameters to be included in a method expression itself. This applies to <fo:inline font-style="italic">any</fo:inline> Seam method expression, including any JSF method binding, for example:
+	</fo:block><fo:block id="id3059160" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;s:commandButton action="#{hotelBooking.bookHotel(hotel)}" value="Book Hotel"/&gt;
+</fo:block><fo:block id="Seam_Reference_Guide-Expression_language_enhancements-Configuration"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Configuration</fo:marker><fo:block color="#a70000" font-size="16pt">25.1. Configuration</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.!
 maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			To use this feature in Facelets, you will need to declare a special view handler, <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">SeamFaceletViewHandler</fo:inline> in <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">faces-config.xml</fo:inline>.
+		</fo:block><fo:block id="id3149370" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;faces-config&gt;
+    &lt;application&gt;
+        &lt;view-handler&gt;org.jboss.seam.ui.facelet.SeamFaceletViewHandler&lt;/view-handler&gt;
+    &lt;/application&gt;
+&lt;/faces-config&gt;
+</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Expression_language_enhancements-Usage"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Usage</fo:marker><fo:block color="#a70000" font-size="16pt">25.2. Usage</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1e!
 m" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Parameters are surrounded by parentheses, and separated by commas:
+		</fo:block><fo:block id="id3507538" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;h:commandButton action="#{hotelBooking.bookHotel(hotel, user)}" value="Book Hotel"/&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The parameters <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">hotel</fo:inline> and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">user</fo:inline> will be evaluated as value expressions and passed to the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">bookHotel()</fo:inline> method of the component. This gives you an alternative to the use of <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">@In</fo:inline>.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Any value expression may be used as a parameter:
+		</fo:block><fo:block id="id2704151" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;h:commandButton action="#{hotelBooking.bookHotel(hotel.id, user.username)}" value="Book Hotel"/&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			You may even pass literal strings using single or double quotes:
+		</fo:block><fo:block id="id3713183" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;h:commandLink action=”#{printer.println( ‘Hello world!’ )}” value=”Hello”/&gt;
+</fo:block><fo:block id="id3937700" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;h:commandLink action=’#{printer.println( “Hello again” )}’ value=’Hello’/&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			You might even want to use this notation for all your action methods, even when you do not have parameters to pass. This improves readability by making it clear that the expression is a method expression and not a value expression:
+		</fo:block><fo:block id="id2715608" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;s:link value="Cancel" action="#{hotelBooking.cancel()}"/&gt;
+</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Expression_language_enhancements-Limitations"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Limitations</fo:marker><fo:block color="#a70000" font-size="16pt">25.3. Limitations</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-be!
 fore.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Please be aware of the following limitations:
+		</fo:block><fo:block id="Seam_Reference_Guide-Limitations-Incompatibility_with_JSP_2.1"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Incompatibility with JSP 2.1</fo:marker><fo:block color="#a70000" font-size="14pt">25.3.1. Incompatibility with JSP 2.1</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.o!
 ptimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				This extension is not currently compatible with JSP 2.1. So if you want to use this extension with JSF 1.2, you will need to use Facelets. The extension works correctly with JSP 2.0.
+			</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Limitations-Calling_a_MethodExpression_from_Java_code"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Calling a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">MethodExpression</fo:inline> from Java code</fo:marker><fo:block color="#a70000" font-size="14pt">25.3.2. Calling a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">MethodExpression</fo:inline> from Java code</!
 fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Normally, when a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">MethodExpression</fo:inline> or <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">MethodBinding</fo:inline> is created, the parameter types are passed in by JSF. In the case of a method binding, JSF assumes that there are no parameters to pass. With this extension, we can’t know the parameter types until after the expression has been evaluated. This has two minor consequences:
+			</fo:block><fo:list-block id="id2792415" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em"><fo:list-item id="id3324631" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						When you invoke a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">MethodExpression</fo:inline> in Java code, parameters you pass may be ignored. Parameters defined in the expression will take precedence.
+					</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item id="id2769328" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.optimum="0.1em" space-before.minimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="1em" space-after.maximum="1em">
+						Ordinarily, it is safe to call <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">methodExpression.getMethodInfo().getParamTypes()</fo:inline> at any time. For an expression with parameters, you must first invoke the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">MethodExpression</fo:inline> before calling <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">getParamTypes()</fo:inline>.
+					</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Both of these cases are exceedingly rare and only apply when you want to invoke the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">MethodExpression</fo:inline> by hand in Java code.
+			</fo:block></fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="body" language="en" format="1" initial-page-number="auto-odd" force-page-count="end-on-even" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:tabl!
 e-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always" font-weight="bold">Chapter 26.</fo:inline></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column!
 -width="proportional-column-width(1)"/><fo:table-body><fo:tabl!
 e-row bl
ock-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always"><fo:retrieve-marker retrieve-class-name="section.head.marker" retrieve-position="first-including-carryover" retrieve-boundary="page-sequence"/></fo:inline></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" colum!
 n-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always" font-weight="bold">Chapter 26. Testing Seam applications</fo:inline></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layo!
 ut="fixed" width="100%" border-bottom-width="0.5pt" border-bot!
 tom-styl
e="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-footnote-separator"><fo:block><fo:leader color="black" leader-pattern="rule" leader-length="1in"/></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block font-fam!
 ily="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-conte!
 nt><fo:static-content flow-name="xsl-region-after-odd"><fo:blo!
 ck font-
family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-con!
 tent><fo:static-content flow-name="xsl-region-after-even"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table!
 -cell></fo:table-row></fo:table-body></fo:table></fo:block></f!
 o:static
-content><fo:static-content flow-name="xsl-region-after-blank"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:t!
 able-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:flow flow-name="xsl-region-body" start-indent="0pt" end-indent="0pt"><fo:block id="Seam_Reference_Guide-Testing_Seam_applications"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats"><fo:block margin-left="0pc"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" color="#a70000" background-color="white" font-size="24pt" font-weight="bold" text-align="left" padding-left="1em" padding-right="1em">Testing Seam applications</fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Most Seam applications will need at least two kinds of automated tests: <fo:inline font-style="italic">unit tests</fo:inline>, which test a particular Seam component in isolation, and scripted <fo:inline font-style="italic">integration tests</fo:inline> which exercise all Java layers of the application (that is, everything except the view pages).
+	</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		Both kinds of tests are very easy to write.
+	</fo:block><fo:block id="Seam_Reference_Guide-Testing_Seam_applications-Unit_testing_Seam_components"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Unit testing Seam components</fo:marker><fo:block color="#a70000" font-size="16pt">26.1. Unit testing Seam components</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" spa!
 ce-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			All Seam components are POJOs. This is a great place to start if you want easy unit testing. And since Seam emphasises the use of bijection for inter-component interactions and access to contextual objects, it is very easy to test a Seam component outside of its normal runtime environment.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Consider the following Seam component:
+		</fo:block><fo:block id="id3479618" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Stateless
+ at Scope(EVENT)
+ at Name("register")
+public class RegisterAction implements Register
+{
+   private User user;
+   private EntityManager em;
+
+   @In
+   public void setUser(User user) {
+       this.user = user;
+   }
+   
+   @PersistenceContext
+   public void setBookingDatabase(EntityManager em) {
+       this.em = em;
+   }
+   
+   public String register()
+   {
+      List existing = em.createQuery("select username from User where username=:username")
+         .setParameter("username", user.getUsername())
+         .getResultList();
+      if (existing.size()==0)
+      {
+         em.persist(user);
+         return "success";
+      }
+      else
+      {
+         return null;
+      }
+   }
+
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			We could write a TestNG test for this component as follows:
+		</fo:block><fo:block id="id2708863" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">public class RegisterActionTest
+{
+
+    @Test
+    public testRegisterAction()
+    {
+        EntityManager em = getEntityManagerFactory().createEntityManager();
+        em.getTransaction().begin();
+        
+        User gavin = new User();
+        gavin.setName("Gavin King");
+        gavin.setUserName("1ovthafew");
+        gavin.setPassword("secret");
+        
+        RegisterAction action = new RegisterAction();
+        action.setUser(gavin);
+        action.setBookingDatabase(em);
+        
+        assert "success".equals( action.register() );
+        
+        em.getTransaction().commit();
+        em.close();
+    }
+    
+    
+    private EntityManagerFactory emf;
+    
+    public EntityManagerFactory getEntityManagerFactory()
+    {
+        return emf;
+    }
+    
+    @Configuration(beforeTestClass=true)
+    public void init() 
+    {
+        emf = Persistence.createEntityManagerFactory("myResourceLocalEntityManager");
+    }
+    
+    @Configuration(afterTestClass=true)
+    public void destroy()
+    {
+        emf.close();
+    }
+    
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Seam components do not usually depend directly upon container infrastructure, allowing for simplistic unit testing.
+		</fo:block></fo:block><fo:block id="Seam_Reference_Guide-Testing_Seam_applications-Integration_testing_Seam_applications"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Integration testing Seam applications</fo:marker><fo:block color="#a70000" font-size="16pt">26.2. Integration testing Seam applications</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Exten!
 sions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Integration testing is slightly more difficult. In this case, we cannot eliminate the container infrastructure; indeed, that is part of what is being tested! At the same time, we do not want to be forced to deploy our application to an application server to run the automated tests. We need to be able to reproduce just enough of the container infrastructure inside our testing environment to be able to exercise the whole application, without hurting performance too much.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			A second problem is emulating user interactions. A third problem is where to put our assertions. Some test frameworks let us test the whole application by reproducing user interactions with the web browser. These frameworks have their place, but they are not appropriate for use at development time.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The approach taken by Seam is to let you write tests that script your components while running inside a pruned down container environment (Seam, together with the JBoss Embeddable EJB container). The role of the test script is basically to reproduce the interaction between the view and the Seam components. In other words, you get to pretend you are the JSF implementation!
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			This approach tests everything except the view.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Let us consider a JSP view for the component we unit tested above:
+		</fo:block><fo:block id="id2741305" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">&lt;html&gt;
+ &lt;head&gt;
+  &lt;title&gt;Register New User&lt;/title&gt;
+ &lt;/head&gt;
+ &lt;body&gt;
+  &lt;f:view&gt;
+   &lt;h:form&gt;
+     &lt;table border="0"&gt;
+       &lt;tr&gt;
+         &lt;td&gt;Username&lt;/td&gt;
+         &lt;td&gt;&lt;h:inputText value="#{user.username}"/&gt;&lt;/td&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+         &lt;td&gt;Real Name&lt;/td&gt;
+         &lt;td&gt;&lt;h:inputText value="#{user.name}"/&gt;&lt;/td&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+         &lt;td&gt;Password&lt;/td&gt;
+         &lt;td&gt;&lt;h:inputSecret value="#{user.password}"/&gt;&lt;/td&gt;
+       &lt;/tr&gt;
+     &lt;/table&gt;
+     &lt;h:messages/&gt;
+     &lt;h:commandButton type="submit" value="Register" action="#{register.register}"/&gt;
+   &lt;/h:form&gt;
+  &lt;/f:view&gt;
+ &lt;/body&gt;
+&lt;/html&gt;
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			We want to test the registration functionality of our application (the stuff that happens when the user clicks the Register button). We will reproduce the JSF request lifecycle in an automated TestNG test:
+		</fo:block><fo:block id="id3146917" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">public class RegisterTest extends SeamTest
+{
+   
+   @Test
+   public void testRegister() throws Exception
+   {
+            
+      new FacesRequest() {
+
+         @Override
+         protected void processValidations() throws Exception
+         {
+            validateValue("#{user.username}", "1ovthafew");
+            validateValue("#{user.name}", "Gavin King");
+            validateValue("#{user.password}", "secret");
+            assert !isValidationFailure();
+         }
+         
+         @Override
+         protected void updateModelValues() throws Exception
+         {
+            setValue("#{user.username}", "1ovthafew");
+            setValue("#{user.name}", "Gavin King");
+            setValue("#{user.password}", "secret");
+         }
+
+         @Override
+         protected void invokeApplication()
+         {
+            assert invokeMethod("#{register.register}").equals("success");
+         }
+
+         @Override
+         protected void renderResponse()
+         {
+            assert getValue("#{user.username}").equals("1ovthafew");
+            assert getValue("#{user.name}").equals("Gavin King");
+            assert getValue("#{user.password}").equals("secret");
+         }
+         
+      }.run();
+      
+   }
+
+   ...
+   
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			Notice that we have extended <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">SeamTest</fo:inline>, which provides a Seam environment for our components, and written our test script as an anonymous class that extends <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">SeamTest.FacesRequest</fo:inline>, which provides an emulated JSF request lifecycle. (There is also a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">SeamTest.NonFacesRequest</fo:inline> for testing GET requests.) We have written our code in methods which are named for the various JSF phases, to emulate the calls that JSF would make to our components. Then we have thrown in various assertions.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			You will find plenty of integration tests for the Seam example applications which demonstrate more complex cases. There are instructions for running these tests using Ant, or using the TestNG plugin for eclipse:
+		</fo:block><fo:block id="id3757059" text-align="center"><fo:external-graphic xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" src="url(images/plugin-testng.png)" width="444px" height="auto" content-width="scale-to-fit" content-height="scale-to-fit" content-type="content-type:image/png" text-align="center"/></fo:block><fo:block id="Seam_Reference_Guide-Integration_testing_Seam_applications-Using_mocks_in_integration_tests"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><!
 fo:marker marker-class-name="section.head.marker">Using mocks in integration tests</fo:marker><fo:block color="#a70000" font-size="14pt">26.2.1. Using mocks in integration tests</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Occasionally, we need to be able to replace the implementation of some Seam component that depends upon resources which are not available in the integration test environment. For example, suppose we have some Seam component which is a facade to some payment processing system:
+			</fo:block><fo:block id="id3507732" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Name("paymentProcessor")
+public class PaymentProcessor {
+    public boolean processPayment(Payment payment) { .... }
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				For integration tests, we can mock out this component as follows:
+			</fo:block><fo:block id="id3807864" text-align="start" wrap-option="wrap" hyphenation-character="\" space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="true" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" font-family="Liberation Mono,monospace" background-color="#eeeeee" color="black" padding-top="6pt" padding-bottom="6pt" margin-left="0pc" font-size="8pt">@Name("paymentProcessor")
+ at Install(precedence=MOCK)
+public class MockPaymentProcessor extends PaymentProcessor {
+    public void processPayment(Payment payment) {
+        return true;
+    }
+}
+</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Since the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">MOCK</fo:inline> precedence is higher than the default precedence of application components, Seam will install the mock implementation whenever it is in the classpath. When deployed into production, the mock implementation is absent, so the real component will be installed.
+			</fo:block></fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="body" language="en" format="1" initial-page-number="auto-odd" force-page-count="end-on-even" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:tabl!
 e-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always" font-weight="bold">Chapter 27.</fo:inline></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column!
 -width="proportional-column-width(1)"/><fo:table-body><fo:tabl!
 e-row bl
ock-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always"><fo:retrieve-marker retrieve-class-name="section.head.marker" retrieve-position="first-including-carryover" retrieve-boundary="page-sequence"/></fo:inline></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" colum!
 n-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always" font-weight="bold">Chapter 27. Seam tools</fo:inline></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" widt!
 h="100%" border-bottom-width="0.5pt" border-bottom-style="soli!
 d" borde
r-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-footnote-separator"><fo:block><fo:leader color="black" leader-pattern="rule" leader-length="1in"/></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block font-family="Liberation!
  Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-c!
 ontent flow-name="xsl-region-after-odd"><fo:block font-family=!
 "Liberat
ion Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static!
 -content flow-name="xsl-region-after-even"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:tabl!
 e-row></fo:table-body></fo:table></fo:block></fo:static-conten!
 t><fo:st
atic-content flow-name="xsl-region-after-blank"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:!
 table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:flow flow-name="xsl-region-body" start-indent="0pt" end-indent="0pt"><fo:block id="Seam_Reference_Guide-Seam_tools"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats"><fo:block margin-left="0pc"><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" color="#a70000" background-color="white" font-size="24pt" font-weight="bold" text-align="left" padding-left="1em" padding-right="1em">Seam tools</fo:block></fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Seam_tools-jBPM_designer_and_viewer"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" sp!
 ace-before.optimum="2.0em" space-before.maximum="2.2em" space-!
 after.mi
nimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">jBPM designer and viewer</fo:marker><fo:block color="#a70000" font-size="16pt">27.1. jBPM designer and viewer</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The jBPM designer and viewer will let you design and view in a nice way your business processes and your pageflows. This convenient tool is part of the JBoss Developer Studio and more details can be found in the jBPM's documentation (http://docs.jboss.com/jbpm/v3/gpd/)
+		</fo:block><fo:block id="Seam_Reference_Guide-jBPM_designer_and_viewer-Business_process_designer"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Business process designer</fo:marker><fo:block color="#a70000" font-size="14pt">27.1.1. Business process designer</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-befo!
 re.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				This tool lets you design your own business process in a graphical way.
+			</fo:block><fo:block><fo:block id="id3448744" text-align="center"><fo:external-graphic xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" src="url(images/bpmd.png)" width="444px" height="auto" content-width="scale-to-fit" content-height="scale-to-fit" content-type="content-type:image/png" text-align="center"/></fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-jBPM_designer_and_viewer-Pageflow_viewer"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:mar!
 ker marker-class-name="section.head.marker">Pageflow viewer</fo:marker><fo:block color="#a70000" font-size="14pt">27.1.2. Pageflow viewer</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				This tool will let you design to some extend your pageflows and let you build graphical views of them so you can easily share and compare ideas on how it should be designed.
+			</fo:block><fo:block><fo:block id="id2681722" text-align="center"><fo:external-graphic xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" src="url(images/bpmpfv.png)" width="444px" height="auto" content-width="scale-to-fit" content-height="scale-to-fit" content-type="content-type:image/png" text-align="center"/></fo:block></fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Seam_tools-CRUD_application_generator"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0p!
 c"><fo:marker marker-class-name="section.head.marker">CRUD-application generator</fo:marker><fo:block color="#a70000" font-size="16pt">27.2. CRUD-application generator</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			This chapter, will give you a short overview of the support for Seam that is available in the Hibernate Tools. Hibernate Tools is a set of tools for working with Hibernate and related technologies, such as JBoss Seam and EJB3. The tools are available as a set of eclipse plugins and Ant tasks. You can download the Hibernate Tools from the JBoss Tools or Hibernate Tools websites.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The specific support for Seam that is currently available is generation of a fully functional Seam based CRUD-application. The CRUD-application can be generated based on your existing Hibernate mapping files or EJB3 annotated POJO's or even fully reverse engineered from your existing database schema.
+		</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+			The following sections is focused on the features required to understand for usage with Seam. The content is derived from the the Hibernate Tools reference documentation. Thus if you need more detailed information please refer to the Hibernate Tools documentation.
+		</fo:block><fo:block id="Seam_Reference_Guide-CRUD_application_generator-Creating_a_Hibernate_configuration_file"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Creating a Hibernate configuration file</fo:marker><fo:block color="#a70000" font-size="14pt">27.2.1. Creating a Hibernate configuration file</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensi!
 ons" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				To be able to reverse engineer and generate code a hibernate.properties or <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">hibernate.cfg.xml</fo:inline> file is needed. The Hibernate Tools provide a wizard for generating the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">hibernate.cfg.xml</fo:inline> file if you do not already have such file.
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Start the wizard by clicking <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">New Wizard</fo:inline> (Ctrl+N), select the Hibernate/Hibernate Configuration file (cfg.xml) wizard and press <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Next</fo:inline>. After selecting the wanted location for the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">hibernate.cfg.xml</fo:inline> file, you will see the following page:
+			</fo:block><fo:block id="id3904484"><fo:external-graphic xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" src="url(images/hibernatecfgwizard.png)" width="444px" height="auto" content-width="5cm" content-height="auto" content-type="content-type:image/png"/></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Tip: The contents in the combo boxes for the JDBC driver class and JDBC URL change automatically, depending on the Dialect and actual driver you have chosen.
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Enter your configuration information in this dialog. Details about the configuration options can be found in Hibernate reference documentation.
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Press <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Finish</fo:inline> to create the configuration file, after optionally creating a Console onfiguration, the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">hibernate.cfg.xml</fo:inline> will be automatically opened in an editor. The last option <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Create Console Configuration</fo:inline> is enabled by default and when enabled i will automatically use the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">hibernate.cfg.xml</fo:inline> for the basis of a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Console Configuration</fo:inline>.
+			</fo:block></fo:block><fo:block id="Seam_Reference_Guide-CRUD_application_generator-Creating_a_Hibernate_Console_configuration"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Creating a Hibernate Console configuration</fo:marker><fo:block color="#a70000" font-size="14pt">27.2.2. Creating a Hibernate Console configuration</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.re!
 nderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				A Console Configuration describes to the Hibernate plugin which configuration files should be used to configure hibernate, including which classpath is needed to load the POJO's, JDBC drivers etc. It is required to make usage of query prototyping, reverse engineering and code generation. You can have multiple named console configurations. Normally you would just need one per project, but more (or less) is definitly possible.
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				You create a console configuration by running the Console Configuration wizard, shown in the following screenshot. The same wizard will also be used if you are coming from the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">hibernate.cfg.xml</fo:inline> wizard and had enabled <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Create Console Configuration</fo:inline>.
+			</fo:block><fo:block id="Seam_Reference_Guide-Creating_a_Hibernate_Console_configuration-Creating_a_Hibernate_Console_configuration"><fo:external-graphic xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" src="url(images/consolecfgwizard.png)" width="444px" height="auto" content-width="scale-to-fit" content-height="scale-to-fit" content-type="content-type:image/png"/><fo:block>Creating a Hibernate Console configuration</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				The following table describes the relevant settings. The wizard can automatically detect default values for most of these if you started the Wizard with the relevant java project selected
+			</fo:block><fo:block id="Seam_Reference_Guide-Creating_a_Hibernate_Console_configuration-Hibernate_Console_Configuration_Parameters" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto"><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.3pt" border-end-width="0.3pt" border-top-width="0.3pt" border-bottom-width="0.3pt" border-start-color="#dc9f2e" border-end-color="#dc9f2e" border-top-color="#dc9f2e" border-bottom-color="#dc9f2e" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="20%"/><fo:table-column column-number="2" column-width="60%"/><fo:table-column column-number="3" column-width="20%"/><fo:table-header xmlns:rx="http://www.renderx.com/X!
 SL/Extensions" start-indent="0pt" end-indent="0pt"><fo:table-row background-color="#a70000"><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" border-end-width="0.15pt" border-end-style="solid" border-end-color="#dc9f2e" text-align="center"><fo:block font-weight="bold" background-color="#a70000" color="white">
+								<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+									Parameter
+								</fo:block>
+							</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" border-end-width="0.15pt" border-end-style="solid" border-end-color="#dc9f2e" text-align="center"><fo:block font-weight="bold" background-color="#a70000" color="white">
+								<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+									Description
+								</fo:block>
+							</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" text-align="center"><fo:block font-weight="bold" background-color="#a70000" color="white">
+								<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+									Auto detected value
+								</fo:block>
+							</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" border-end-width="0.15pt" border-end-style="solid" border-end-color="#dc9f2e"><fo:block>
+								<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+									Name
+								</fo:block>
+							</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" border-end-width="0.15pt" border-end-style="solid" border-end-color="#dc9f2e"><fo:block>
+								<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+									The unique name of the configuration
+								</fo:block>
+							</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e"><fo:block>
+								<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+									Name of the selected project
+								</fo:block>
+							</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" border-end-width="0.15pt" border-end-style="solid" border-end-color="#dc9f2e"><fo:block>
+								<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+									Property file
+								</fo:block>
+							</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" border-end-width="0.15pt" border-end-style="solid" border-end-color="#dc9f2e"><fo:block>
+								<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+									Path to a hibernate.properties file
+								</fo:block>
+							</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e"><fo:block>
+								<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+									First hibernate.properties file found in the selected project
+								</fo:block>
+							</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" border-end-width="0.15pt" border-end-style="solid" border-end-color="#dc9f2e"><fo:block>
+								<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+									Configuration file
+								</fo:block>
+							</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" border-end-width="0.15pt" border-end-style="solid" border-end-color="#dc9f2e"><fo:block>
+								<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+									Path to a hibernate.cfg.xml file
+								</fo:block>
+							</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e"><fo:block>
+								<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+									First hibernate.cfg.xml file found in the selected project
+								</fo:block>
+							</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" border-end-width="0.15pt" border-end-style="solid" border-end-color="#dc9f2e"><fo:block>
+								<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+									Enable Hibernate ejb3/annotations
+								</fo:block>
+							</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" border-end-width="0.15pt" border-end-style="solid" border-end-color="#dc9f2e"><fo:block>
+								<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+									Selecting this option enables usage of annotated classes. <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">hbm.xml</fo:inline> files are of course still possible to use too. This feature requires running the Eclipse IDE with a JDK 5 runtime, otherwise you will get classloading and/or version errors.
+								</fo:block>
+							</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e"><fo:block>
+								<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+									Not enabled
+								</fo:block>
+							</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" border-end-width="0.15pt" border-end-style="solid" border-end-color="#dc9f2e"><fo:block>
+								<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+									Mapping files
+								</fo:block>
+							</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" border-end-width="0.15pt" border-end-style="solid" border-end-color="#dc9f2e"><fo:block>
+								<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+									List of additional mapping files that should be loaded. Since a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">hibernate.cfg.xml</fo:inline> can also contain mappings, if these a duplicated here, you will get Duplicate mapping errors when using the console configuration.
+								</fo:block>
+							</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e"><fo:block>
+								<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+									If no <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">hibernate.cfg.xml</fo:inline> file is found, all hbm.xml files found in the selected project
+								</fo:block>
+							</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-end-width="0.15pt" border-end-style="solid" border-end-color="#dc9f2e"><fo:block>
+								<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+									Classpath
+								</fo:block>
+							</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-end-width="0.15pt" border-end-style="solid" border-end-color="#dc9f2e"><fo:block>
+								<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+									The classpath for loading POJO and JDBC drivers. Do not add Hibernate core libraries or dependencies, they are already included. If you get ClassNotFound errors then check this list for possible missing or redundant directories/jars.
+								</fo:block>
+							</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt"><fo:block>
+								<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+									The default build output directory and any JARs with a class implementing java.sql.Driver in the selected project
+								</fo:block>
+							</fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table><fo:block font-weight="normal" font-size="10pt" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" color="#a70000" background-color="white" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-previous.within-column="always">Table 27.1. Hibernate Console Configuration Parameters</fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				Clicking <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Finish</fo:inline> creates the configuration and shows it in the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Hibernate Configurations</fo:inline> view
+			</fo:block><fo:block id="Seam_Reference_Guide-Creating_a_Hibernate_Console_configuration-Console_overview" text-align="center"><fo:external-graphic xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" src="url(images/consoleoutline-before-reveng.png)" width="auto" height="auto" content-width="auto" content-height="auto" content-type="content-type:image/png" text-align="center"/><fo:block>Console overview</fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-CRUD_application_generator-Reverse_engineering_and_code_generation"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-af!
 ter.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:marker marker-class-name="section.head.marker">Reverse engineering and code generation</fo:marker><fo:block color="#a70000" font-size="14pt">27.2.3. Reverse engineering and code generation</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				A very simple <fo:inline font-style="italic">click-and-generate</fo:inline> reverse engineering and code generation facility is available. It is this facility that allows you to generate the skeleton for a full Seam CRUD application.
+			</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+				To start working with this process, start the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Hibernate Code Generation</fo:inline> which is available in the toolbar via the Hibernate icon or via the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Run/Hibernate Code Generation</fo:inline> menu item.
+			</fo:block><fo:block id="Seam_Reference_Guide-Reverse_engineering_and_code_generation-Code_Generation_Launcher"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:block color="#a70000" font-size="13pt">27.2.3.1. Code Generation Launcher</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em!
 " space-after.minimum="0.8em" space-after.maximum="1.2em">
+					When you click on <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Hibernate Code Generation</fo:inline> the standard Eclipse launcher dialog will appear. In this dialog you can create, edit and delete named Hibernate code generation <fo:inline font-style="italic">launchers</fo:inline>.
+				</fo:block><fo:block id="id2790329"><fo:external-graphic xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" src="url(images/codegendropdown.png)" width="auto" height="auto" content-width="auto" content-height="auto" content-type="content-type:image/png"/></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+					The dialog has the standard tabs <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Refresh</fo:inline> and <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Common</fo:inline> that can be used to configure which directories should be automatically refreshed and various general settings launchers, such as saving them in a project for sharing the launcher within a team.
+				</fo:block><fo:block id="id3432930"><fo:external-graphic xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" src="url(images/codegenmaintab.png)" width="444px" height="auto" content-width="scale-to-fit" content-height="scale-to-fit" content-type="content-type:image/png"/></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+					The first time you create a code generation launcher you should give it a meaningfull name, otherwise the default prefix <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">New_Generation</fo:inline> will be used.
+				</fo:block><fo:block id="id3891693" color="white" background-color="#8e9f00" space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1em" padding-bottom="12pt" padding-top="12pt" margin-left="0pc"><fo:list-block provisional-distance-between-starts="36pt + 18pt" provisional-label-separation="18pt"><fo:list-item><fo:list-item-label end-indent="label-end()"><fo:block><fo:external-graphic width="auto" height="auto" content-width="36pt" src="url(Common_Content/images/note.svg)"/></fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block font-size="13pt" color="white" font-weight="bold" hyphenate="true" keep-with-next.within-column="always">Note</fo:block><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.max!
 imum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+						he <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">At least one exporter option must be selected</fo:inline> is just a warning stating that for this launch to work you need to select an exporter on the Exporter tab. When an exporter has been selected the warning will disappear.
+					</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+					On the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Main</fo:inline> tab you the following fields:
+				</fo:block><fo:block id="Seam_Reference_Guide-Code_Generation_Launcher-Code_generation_Main_tab_fields" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto"><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.3pt" border-end-width="0.3pt" border-top-width="0.3pt" border-bottom-width="0.3pt" border-start-color="#dc9f2e" border-end-color="#dc9f2e" border-top-color="#dc9f2e" border-bottom-color="#dc9f2e" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="25%"/><fo:table-column column-number="2" column-width="75%"/><fo:table-header xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt" end-indent="0pt"><fo:table-row background-color="!
 #a70000"><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" border-end-width="0.15pt" border-end-style="solid" border-end-color="#dc9f2e" text-align="center"><fo:block font-weight="bold" background-color="#a70000" color="white">
+									<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+										Field
+									</fo:block>
+								</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" text-align="center"><fo:block font-weight="bold" background-color="#a70000" color="white">
+									<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+										Description
+									</fo:block>
+								</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" border-end-width="0.15pt" border-end-style="solid" border-end-color="#dc9f2e"><fo:block>
+									<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+										Console Configuration
+									</fo:block>
+								</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e"><fo:block>
+									<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+										The name of the console configuration which should be used when code generating.
+									</fo:block>
+								</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" border-end-width="0.15pt" border-end-style="solid" border-end-color="#dc9f2e"><fo:block>
+									<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+										Output directory
+									</fo:block>
+								</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e"><fo:block>
+									<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+										Path to a directory into where all output will be written by default. Be aware that existing files will be overwritten, so be sure to specify the correct directory.
+									</fo:block>
+								</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" border-end-width="0.15pt" border-end-style="solid" border-end-color="#dc9f2e"><fo:block>
+									<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+										Reverse engineer from JDBC Connection
+									</fo:block>
+								</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e"><fo:block>
+									<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+										If enabled the tools will reverse engineer the database available via the connection information in the selected Hibernate Console Configuration and generate code based on the database schema. If not enabled the code generation will just be based on the mappings already specified in the Hibernate Console configuration.
+									</fo:block>
+								</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" border-end-width="0.15pt" border-end-style="solid" border-end-color="#dc9f2e"><fo:block>
+									<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+										Package
+									</fo:block>
+								</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e"><fo:block>
+									<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+										The package name here is used as the default package name for any entities found when reverse engineering.
+									</fo:block>
+								</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" border-end-width="0.15pt" border-end-style="solid" border-end-color="#dc9f2e"><fo:block>
+									<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+										reveng.xml
+									</fo:block>
+								</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e"><fo:block>
+									<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+										Path to a reveng.xml file. A reveng.xml file allows you to control certain aspects of the reverse engineering. For example, how jdbc types are mapped to hibernate types and especially important which tables are included/excluded from the process. Clicking "setup" allows you to select an existing reveng.xml file or create a new one..
+									</fo:block>
+								</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" border-end-width="0.15pt" border-end-style="solid" border-end-color="#dc9f2e"><fo:block>
+									<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+										reveng. strategy
+									</fo:block>
+								</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e"><fo:block>
+									<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+										If <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">reveng.xml</fo:inline> does not provide enough customization you can provide your own implementation of an ReverseEngineeringStrategy. The class need to be in the claspath of the Console Configuration, otherwise you will get class not found exceptions.
+									</fo:block>
+								</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" border-end-width="0.15pt" border-end-style="solid" border-end-color="#dc9f2e"><fo:block>
+									<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+										Generate basic typed composite ids
+									</fo:block>
+								</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e"><fo:block>
+									<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+										This field should always be enabled when generating the Seam CRUD application. For a table that has a multi-colum primary key, a &lt;composite-id&gt; mapping will always be created. If this option is enabled and there are matching foreign-keys, each key column is still considered a basic scalar (string, long, etc.) instead of a reference to an entity. If you disable this option, a &lt;key-many-to-one&gt; mapping with be generated instead. Note: a &lt;many-to-one&gt; property is still created, but is simply marked as non-updatable and non-insertable.
+									</fo:block>
+								</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" border-end-width="0.15pt" border-end-style="solid" border-end-color="#dc9f2e"><fo:block>
+									<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+										Use custom templates
+									</fo:block>
+								</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e"><fo:block>
+									<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+										If enabled, the Template directory will be searched first when looking up the velocity templates, allowing you to redefine how the individual templates process the hibernate mapping model.
+									</fo:block>
+								</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-end-width="0.15pt" border-end-style="solid" border-end-color="#dc9f2e"><fo:block>
+									<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+										Template directory
+									</fo:block>
+								</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt"><fo:block>
+									<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+										A path to a directory with custom velocity templates.
+									</fo:block>
+								</fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table><fo:block font-weight="normal" font-size="10pt" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" color="#a70000" background-color="white" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-previous.within-column="always">Table 27.2. Code generation "Main" tab fields</fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Reverse_engineering_and_code_generation-Exporters"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-af!
 ter.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:block color="#a70000" font-size="13pt">27.2.3.2. Exporters</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+					The exporters tab is used to specify which type of code that should be generated. Each selection represents an <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Exporter</fo:inline> that is responsible for generating the code, hence the name.
+				</fo:block><fo:block id="id3516473"><fo:external-graphic xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" src="url(images/codegenselectseam.png)" width="444px" height="auto" content-width="scale-to-fit" content-height="scale-to-fit" content-type="content-type:image/png"/></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+					The following table describes in short the various exporters. The most relevant for Seam is the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">JBoss Seam Skeleton</fo:inline> application.
+				</fo:block><fo:block id="Seam_Reference_Guide-Exporters-Code_generation_Exporter_tab_fields" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto"><fo:table border-before-width.conditionality="retain" border-collapse="collapse" border-start-style="solid" border-end-style="solid" border-top-style="solid" border-bottom-style="solid" border-start-width="0.3pt" border-end-width="0.3pt" border-top-width="0.3pt" border-bottom-width="0.3pt" border-start-color="#dc9f2e" border-end-color="#dc9f2e" border-top-color="#dc9f2e" border-bottom-color="#dc9f2e" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="25%"/><fo:table-column column-number="2" column-width="75%"/><fo:table-header xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt" end-indent="0pt"><fo:table-row background-color="#a70000"><f!
 o:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" border-end-width="0.15pt" border-end-style="solid" border-end-color="#dc9f2e" text-align="center"><fo:block font-weight="bold" background-color="#a70000" color="white">
+									<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+										Field
+									</fo:block>
+								</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" text-align="center"><fo:block font-weight="bold" background-color="#a70000" color="white">
+									<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+										Description
+									</fo:block>
+								</fo:block></fo:table-cell></fo:table-row></fo:table-header><fo:table-body xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" border-end-width="0.15pt" border-end-style="solid" border-end-color="#dc9f2e"><fo:block>
+									<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+										Generate domain code
+									</fo:block>
+								</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e"><fo:block>
+									<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+										Generates POJO's for all the persistent classes and components found in the given Hibernate configuration.
+									</fo:block>
+								</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" border-end-width="0.15pt" border-end-style="solid" border-end-color="#dc9f2e"><fo:block>
+									<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+										JDK 1.5 constructs
+									</fo:block>
+								</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e"><fo:block>
+									<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+										When enabled the POJO's will use JDK 1.5 constructs.
+									</fo:block>
+								</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" border-end-width="0.15pt" border-end-style="solid" border-end-color="#dc9f2e"><fo:block>
+									<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+										EJB3/JSR-220 annotations
+									</fo:block>
+								</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e"><fo:block>
+									<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+										When enabled the POJO's will be annotated according to the EJB3/JSR-220 persistency specification.
+									</fo:block>
+								</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" border-end-width="0.15pt" border-end-style="solid" border-end-color="#dc9f2e"><fo:block>
+									<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+										Generate DAO code
+									</fo:block>
+								</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e"><fo:block>
+									<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+										Generates a set of DAO's for each entity found.
+									</fo:block>
+								</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" border-end-width="0.15pt" border-end-style="solid" border-end-color="#dc9f2e"><fo:block>
+									<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+										Generate Mappings
+									</fo:block>
+								</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e"><fo:block>
+									<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+										Generate mapping (hbm.xml) files for each entity
+									</fo:block>
+								</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" border-end-width="0.15pt" border-end-style="solid" border-end-color="#dc9f2e"><fo:block>
+									<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+										Generate hibernate configuration file
+									</fo:block>
+								</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e"><fo:block>
+									<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+										Generate a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">hibernate.cfg.xml</fo:inline> file. Used to keep the hibernate.cfg.xml uptodate with any new found mapping files.
+									</fo:block>
+								</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e" border-end-width="0.15pt" border-end-style="solid" border-end-color="#dc9f2e"><fo:block>
+									<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+										Generate schema html-documentation
+									</fo:block>
+								</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-bottom-width="0.15pt" border-bottom-style="solid" border-bottom-color="#dc9f2e"><fo:block>
+									<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+										Generates set of html pages that documents the database schema and some of the mappings.
+									</fo:block>
+								</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt" border-end-width="0.15pt" border-end-style="solid" border-end-color="#dc9f2e"><fo:block>
+									<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+										Generate JBoss Seam skeleton app (beta)
+									</fo:block>
+								</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt"><fo:block>
+									<fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+										Generates a complete JBoss Seam skeleton app. The generation will include annotated POJO's, Seam controller beans and a JSP for the presentation layer. See the generated readme.txt for how to use it.
+									</fo:block>
+									<fo:block id="id3577240" color="white" background-color="#8e9f00" space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1em" padding-bottom="12pt" padding-top="12pt" margin-left="0pc"><fo:list-block provisional-distance-between-starts="36pt + 18pt" provisional-label-separation="18pt"><fo:list-item><fo:list-item-label end-indent="label-end()"><fo:block><fo:external-graphic width="auto" height="auto" content-width="36pt" src="url(Common_Content/images/note.svg)"/></fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block font-size="13pt" color="white" font-weight="bold" hyphenate="true" keep-with-next.within-column="always">Note</fo:block><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.mini!
 mum="0.8em" space-after.maximum="1.2em">
+											This exporter generates a full application, including a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">build.xml</fo:inline> thus you will get the best results if you use an output directory which is the root of your project.
+										</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block>
+								</fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table><fo:block font-weight="normal" font-size="10pt" space-before.optimum="0.1pt" space-before.minimum="0.1pt" space-before.maximum="0.1pt" color="#a70000" background-color="white" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-previous.within-column="always">Table 27.3. Code generation <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Exporter</fo:inline> tab fields</fo:block></fo:block></fo:block><fo:block id="Seam_Reference_Guide-Reverse_engineering_and_code_generation-Generating_and_using_the_code"><fo:block><fo:block><fo:block margin-left="0pc" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" keep-together.within-column="always"><fo:block keep-with-next.within-column="always"><fo:block font-family="Liberation Sans,sans-serif" font-weight="bold" keep-with-next.within-column="always" space-before.minimu!
 m="1.8em" space-before.optimum="2.0em" space-before.maximum="2.2em" space-after.minimum="0.1em" space-after.optimum="0.1em" space-after.maximum="0.1em" text-align="left" start-indent="0pc"><fo:block color="#a70000" font-size="13pt">27.2.3.3. Generating and using the code</fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+					When you have finished filling out the settings, simply press <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Run</fo:inline> to start the generation of code. This might take a little while if you are reverse engineering from a database.
+				</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+					When the generation have finished you should now have a complete skeleton Seam application in the output directory. In the output directory there is a <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">readme.txt</fo:inline> file describing the steps needed to deploy and run the example.
+				</fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+					If you want to regenerate/update the skeleton code then simply run the code generation again by selecting the <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Hibernate Code Generation</fo:inline> in the toolbar or <fo:inline font-weight="bold" font-family="Liberation Mono,monospace">Run</fo:inline> menu. Enjoy.
+				</fo:block></fo:block></fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="back" language="en" format="1" initial-page-number="auto-odd" force-page-count="end-on-even" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14!
 pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-odd"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-d!
 imension.minimum="14pt"><fo:table-cell text-align="start" disp!
 lay-alig
n="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always"><fo:retrieve-marker retrieve-class-name="section.head.marker" retrieve-position="first-including-carryover" retrieve-boundary="page-sequence"/></fo:inline></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-even"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width!
 ="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block><fo:inline keep-together.within-line="always" font-weight="bold">Appendix A. Revision History</fo:inline></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-before-blank"><fo:block wrap-option="no-wrap" font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-co!
 lor="black"><fo:table-column column-number="1" column-width="p!
 roportio
nal-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(0)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="center" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell><fo:table-cell text-align="right" display-align="before" relative-align="baseline"><fo:block/></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-footnote-separator"><fo:block><fo:leader color="black" leader-pattern="rule" leader-length="1in"/></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-first"><fo:block font-family="Liberation Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="f!
 ixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-odd"><fo:block font-family="Liberation Sans,sa!
 ns-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table tabl!
 e-layout
="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-content flow-name="xsl-region-after-even"><fo:block font-family="Liberation Sans!
 ,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:static-conten!
 t flow-name="xsl-region-after-blank"><fo:block font-family="Li!
 beration
 Sans,sans-serif,Symbol,ZapfDingbats" margin-left="0pc"><fo:table table-layout="fixed" width="100%" border-top-width="0.5pt" border-top-style="solid" border-top-color="black"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(1)"/><fo:table-column column-number="3" column-width="proportional-column-width(1)"/><fo:table-body><fo:table-row block-progression-dimension.minimum="14pt"><fo:table-cell text-align="start" display-align="after" relative-align="baseline"><fo:block><fo:block><fo:page-number/></fo:block></fo:block></fo:table-cell><fo:table-cell text-align="center" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell><fo:table-cell text-align="end" display-align="after" relative-align="baseline"><fo:block><fo:block/></fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:static-content><fo:flow flow!
 -name="xsl-region-body" start-indent="0pt" end-indent="0pt"><fo:block id="appe-Publican-Revision_History"><fo:block><fo:block><fo:block xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" color="#a70000" background-color="white" font-size="24pt" font-weight="bold" text-align="left" padding-left="1em" padding-right="1em">Appendix A. Revision History</fo:block></fo:block></fo:block></fo:block><fo:block space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em">
+		<fo:table xmlns="http://www.w3.org/TR/xhtml1/transitional" xmlns:rx="http://www.renderx.com/XSL/Extensions" table-layout="fixed"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-column column-number="2" column-width="proportional-column-width(2)"/><fo:table-column column-number="3" column-width="proportional-column-width(3)"/><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt"><fo:block>Revision 1.0</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt"><fo:block>Thu Nov 19 2009</fo:block></fo:table-cell><fo:table-cell padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt"><fo:block>Laura Bailey <fo:inline font-family="Liberation !
 Mono,monospace"><fo:inline keep-together.within-line="always" hyphenate="false"><fo:basic-link external-destination="mailto:lbailey at redhat.com" font-style="italic" color="#0066cc">lbailey at redhat.com</fo:basic-link></fo:inline></fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell number-columns-spanned="3" padding-left="4pt" padding-right="4pt" padding-top="2pt" padding-bottom="2pt" padding-start="2pt" padding-end="2pt"><fo:block>
+					<fo:table id="id3713125" space-before.minimum="0.1em" space-before.optimum="0.1em" space-before.maximum="0.1em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" table-layout="fixed" width="100%"><fo:table-column column-number="1" column-width="proportional-column-width(1)"/><fo:table-body start-indent="0pt" end-indent="0pt"><fo:table-row><fo:table-cell><fo:block>Initial draft.</fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table>
+				</fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table>
+	</fo:block></fo:flow></fo:page-sequence></fo:root>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Seam_Reference_Guide_CP07.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Seam_Reference_Guide_CP07.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Seam_Reference_Guide_CP07.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,164 @@
+<?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" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Seam_Reference_Guide_CP07.ent">
+%BOOK_ENTITIES;
+]>
+<book lang="en-US">
+	<xi:include href="Book_Info.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Feedback.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<toc></toc>
+	<preface id="Seam_Reference_Guide-Introduction_to_JBoss_Seam">
+		<title>Introduction to JBoss Seam</title>
+		<para>
+			Seam is an application framework for Java EE 5. It is inspired by the following principles:
+		</para>
+		<variablelist>
+			<varlistentry>
+				<term><emphasis>Integrate JSF with EJB 3.0</emphasis></term>
+				<listitem>
+					<para>
+						JSF and EJB 3.0 are two of the best new features of Java EE 5. EJB3 is a brand new component model for server side business and persistence logic. Meanwhile, JSF is a great component model for the presentation tier. Unfortunately, neither component model is able to solve all problems in computing by itself. Indeed, JSF and EJB3 work best when used together. But the Java EE 5 specification provides no standard way to integrate the two component models. Fortunately, the creators of both models anticipated this situation and provided standard extension points to allow extension and integration of other solutions.
+					</para>
+					<para>
+						Seam unifies the component models of JSF and EJB3, allowing the developer to concentrate on the business problem.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><emphasis>Integrated AJAX</emphasis></term>
+				<listitem>
+					<para>
+						Seam supports two open source JSF-based AJAX solutions: ICEfaces and Ajax4JSF. These solutions let you add AJAX capability to your user interface without the need to write any JavaScript code.
+					</para>
+					<para>
+						Seam also provides a built-in JavaScript remoting layer for EJB3 components. AJAX clients can easily call server-side components and subscribe to JMS topics, without the need for an intermediate action layer.
+					</para>
+					<para>
+						Neither of these approaches would work well, were it not for Seam's built-in concurrency and state management, which ensures that many concurrent fine-grained, asynchronous AJAX requests are handled safely and efficiently on the server side.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><emphasis>Integrate Business Process as a First Class Construct</emphasis></term>
+				<listitem>
+					<para>
+						Optionally, Seam integrates transparent business process management via jBPM. This allows for complex workflows to easily be implemented using jBPM and Seam.
+					</para>
+					<para>
+						Seam even allows definition of presentation tier conversation flow by the same means.
+					</para>
+					<para>
+						JSF provides an incredibly rich event model for the presentation tier. Seam enhances this model by exposing jBPM's business process related events via exactly the same event handling mechanism, providing a uniform event model for Seam's uniform component model.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><emphasis>The uniform component model</emphasis></term>
+				<listitem>
+					<para>
+						Seam provides a uniform component model. A Seam component may be stateful, with the state associated to any one of a number of contexts, ranging from the long-running business process to a single web request.
+					</para>
+					<para>
+						There is no distinction between presentation tier components and business logic components in Seam. It is possible to write Seam applications where <emphasis>everything</emphasis> is an EJB. EJB 3.0 completely changes the nature of EJB from the point of view of the developer. An EJB is a fine-grained object, no more complex than an annotated JavaBean. Seam even encourages you to use session beans as JSF action listeners.
+					</para>
+					<para>
+						Unlike plain Java EE or J2EE components, Seam components may <emphasis>simultaneously</emphasis> access state associated with the web request and state held in transactional resources (without the need to propagate web request state manually via method parameters). You might object that the application layering imposed upon you by the old J2EE platform was a Good Thing. Well, nothing stops you creating an equivalent layered architecture using Seam - the difference is that <emphasis>you</emphasis> get to architect your own application and decide what the layers are and how they work together.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><emphasis>Declarative State Management</emphasis></term>
+				<listitem>
+					<para>
+						We are all used to the concept of declarative transaction management and J2EE declarative security from EJB 2.x. EJB 3.0 even introduces declarative persistence context management. These are three examples of a broader problem of managing state that is associated with a particular <emphasis>context</emphasis>, while ensuring that all needed cleanup occurs when the context ends. Seam takes the concept of declarative state management much further and applies it to <emphasis>application state</emphasis>. Traditionally, J2EE applications almost always implement state management manually, by getting and setting servlet session and request attributes. This approach to state management is the source of many bugs and memory leaks when applications fail to clean up session attributes, or when session data associated with different workflows collides in a multi-window application. Seam has the potential to almost entirely eliminate this class of bugs.
+					</para>
+					<para>
+						Declarative application state management is made possible by the richness of the <emphasis>context model</emphasis> defined by Seam. Seam extends the context model defined by the servlet spec&mdash;request, session, application&mdash;with two new contexts&mdash;conversation and business process&mdash;that are more meaningful from the point of view of the business logic.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><emphasis>Bijection</emphasis></term>
+				<listitem>
+					<para>
+						The notion of <emphasis>Inversion of Control</emphasis> or <emphasis>dependency injection</emphasis> exists in both JSF and EJB3, as well as in numerous simpler containers. Most of these containers emphasize injection of components that implement <emphasis>stateless services</emphasis>. Even when injection of stateful components is supported (such as in JSF), it is virtually useless for handling application state because the scope of the stateful component cannot be defined with sufficient flexibility.
+					</para>
+					<para>
+						<emphasis>Bijection</emphasis> differs from IoC in that it is <emphasis>dynamic</emphasis>, <emphasis>contextual</emphasis>, and <emphasis>bidirectional</emphasis>. You can think of it as a mechanism for aliasing contextual variables (names in the various contexts bound to the current thread) to attributes of the component. Bijection allows auto-assembly of stateful components by the container. It even allows a component to safely and easily manipulate the value of a context variable, just by assigning to an attribute of the component.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><emphasis>Workspace Management</emphasis></term>
+				<listitem>
+					<para>
+						Optionally, Seam applications may take advantage of <emphasis>workspace management</emphasis>, allowing users to freely switch between different conversations (workspaces) in a single browser window. Seam provides not only correct multi-window operation, but also multi-window-like operation in a single window!
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><emphasis>Annotated POJOs Everywhere</emphasis></term>
+				<listitem>
+					<para>
+						EJB 3.0 embraces annotations and <emphasis>configuration by exception</emphasis> as the easiest way to provide information to the container in a declarative form. Unfortunately, JSF is still heavily dependent on verbose XML configuration files. Seam extends the annotations provided by EJB 3.0 with a set of annotations for declarative state management and declarative context demarcation. This lets you eliminate the noisy JSF managed bean declarations and reduce the required XML to just that information which truly belongs in XML (the JSF navigation rules).
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><emphasis>Testability as a Core Feature</emphasis></term>
+				<listitem>
+					<para>
+						Seam components, being POJOs, are by nature unit testable. But for complex applications, unit testing alone is insufficient. Integration testing has traditionally been a messy and difficult task for Java web applications. Therefore, Seam provides for testability of Seam applications as a core feature of the framework. You can easily write JUnit or TestNG tests that reproduce a whole interaction with a user, exercising all components of the system apart from the view (the JSP or Facelets page). You can run these tests directly inside your IDE, where Seam will automatically deploy EJB components into the JBoss Embeddable EJB3 container.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><emphasis>Get started now!</emphasis></term>
+				<listitem>
+					<para>
+						Seam works in any application server that supports EJB 3.0. You can even use Seam in a servlet container like Tomcat, or in any J2EE application server, by leveraging the new JBoss Embeddable EJB3 container.
+					</para>
+					<para>
+						However, we realize that not everyone is ready to make the switch to EJB 3.0. So, in the interim, you can use Seam as a framework for applications that use JSF for presentation, Hibernate (or plain JDBC) for persistence and JavaBeans for application logic. Then, when you're ready to make the switch to EJB 3.0, migration will be straightforward.
+					</para>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+		<mediaobject>
+			<imageobject role="fo">
+				<imagedata align="center" fileref="images/architecture.png" format="PNG" />
+			</imageobject>
+		</mediaobject>
+		<para>
+			It turns out that the combination of Seam, JSF and EJB3 is <emphasis>the</emphasis> simplest way to write a complex web application in Java. You won't believe how little code is required!
+		</para>
+	</preface>
+	<xi:include href="Tutorial.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<!--  Seam-gen is not included with the JBEAP 4.2 platform, so we're removing this chapter  --><!--  <xi:include href="Gettingstarted.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />  --><xi:include href="Concepts.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Xml.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Events.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Conversations.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Jbpm.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Persistence.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Validation.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Framework.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Drools.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Security.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="I18n.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Text.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Itext.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Mail.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Jms.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Cache.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Remoting.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Spring.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Configuration.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Annotations.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Components.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Controls.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Elenhancements.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Testing.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Tools.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Revision_History.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+</book>
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Security.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Security.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Security.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,783 @@
+<?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" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Seam_Reference_Guide_CP07.ent">
+%BOOK_ENTITIES;
+]>
+<chapter id="Seam_Reference_Guide-Security" lang="en-US">
+	<title>Security</title>
+	<para>
+		The Seam Security API is an optional Seam feature that provides authentication and authorization features for securing both domain and page resources within your Seam project.
+	</para>
+	<sect1 id="Seam_Reference_Guide-Security-Overview"><title>Overview</title>
+	<para>
+		Seam Security provides two different modes of operation:
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				<emphasis>simplified mode</emphasis> - this mode supports authentication services and simple role-based security checks.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<emphasis>advanced mode</emphasis> - this mode supports all the same features as the simplified mode, plus it offers rule-based security checks using JBoss Rules.
+			</para>
+		</listitem>
+	</itemizedlist>
+	<sect2 id="Seam_Reference_Guide-Overview-Which_mode_is_right_for_my_application"><title>Which mode is right for my application?</title>
+	<para>
+		That all depends on the requirements of your application. If you have minimal security requirements, for example if you only wish to restrict certain pages and actions to users who are logged in, or who belong to a certain role, then the simplified mode will probably be sufficient. The advantages of this is a more simplified configuration, significantly less libraries to include, and a smaller memory footprint.
+	</para>
+	<para>
+		If on the other hand, your application requires security checks based on contextual state or complex business rules, then you will require the features provided by the advanced mode.
+	</para>
+	</sect2></sect1><sect1 id="Seam_Reference_Guide-Security-Requirements"><title>Requirements</title>
+	<para>
+		If using the advanced mode features of Seam Security, the following jar files are required to be configured as modules in <literal>application.xml</literal>. If you are using Seam Security in simplified mode, these are <emphasis>not</emphasis> required:
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				drools-compiler-3.0.5.jar
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				drools-core-3.0.5.jar
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				commons-jci-core-1.0-406301.jar
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				commons-jci-janino-2.4.3.jar
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				commons-lang-2.1.jar
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				janino-2.4.3.jar
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				stringtemplate-2.3b6.jar
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				antlr-2.7.6.jar
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				antlr-3.0ea8.jar
+			</para>
+		</listitem>
+	</itemizedlist>
+	<para>
+		For web-based security, <literal>jboss-seam-ui.jar</literal> must also be included in the application's war file. Also, to make use of the security EL functions, <literal>SeamFaceletViewHandler</literal> must be used. Configure it in <literal>faces-config.xml</literal> like this:
+	</para>
+	
+<programlisting>&lt;application&gt;
+    &lt;view-handler&gt;org.jboss.seam.ui.facelet.SeamFaceletViewHandler&lt;/view-handler&gt;
+&lt;/application&gt;
+</programlisting>
+	</sect1><sect1 id="Seam_Reference_Guide-Security-Authentication"><title>Authentication</title>
+	<para>
+		The authentication features provided by Seam Security are built upon JAAS (Java Authentication and Authorization Service), and as such provide a robust and highly configurable API for handling user authentication. However, for less complex authentication requirements Seam offers a much more simplified method of authentication that hides the complexity of JAAS.
+	</para>
+	<sect2 id="Seam_Reference_Guide-Authentication-Configuration"><title>Configuration</title>
+	<para>
+		The simplified authentication method uses a built-in JAAS login module, <literal>SeamLoginModule</literal>, which delegates authentication to one of your own Seam components. This login module is already configured inside Seam as part of a default application policy and as such does not require any additional configuration files. It allows you to write an authentication method using the entity classes that are provided by your own application. Configuring this simplified form of authentication requires the <literal>identity</literal> component to be configured in <literal>components.xml</literal>:
+	</para>
+	
+<programlisting>&lt;components xmlns="http://jboss.com/products/seam/components"
+            xmlns:core="http://jboss.com/products/seam/core"
+            xmlns:security="http://jboss.com/products/seam/security"
+            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+            xsi:schemaLocation=
+                "http://jboss.com/products/seam/core http://jboss.com/products/seam/core-1.2.xsd 
+                 http://jboss.com/products/seam/components http://jboss.com/products/seam/components-1.2.xsd
+                 http://jboss.com/products/seam/drools http://jboss.com/products/seam/drools-1.2.xsd"
+                 http://jboss.com/products/seam/security http://jboss.com/products/seam/security-1.2.xsd"&gt;                
+        
+    &lt;security:identity authenticate-method="#{authenticator.authenticate}"/&gt;
+    
+&lt;/components&gt;
+</programlisting>
+	<para>
+		If you wish to use the advanced security features such as rule-based permission checks, all you need to do is include the Drools (JBoss Rules) jars in your classpath, and add some additional configuration, described later.
+	</para>
+	<para>
+		The EL expression <literal>#{authenticator.authenticate}</literal> is a method binding indicating that the <literal>authenticate</literal> method of the <literal>authenticator</literal> component will be used to authenticate the user.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Authentication-Writing_an_authentication_method"><title>Writing an authentication method</title>
+	<para>
+		The <literal>authenticate-method</literal> property specified for <literal>identity</literal> in <literal>components.xml</literal> specifies which method will be used by <literal>SeamLoginModule</literal> to authenticate users. This method takes no parameters, and is expected to return a boolean indicating whether authentication is successful or not. The user's username and password can be obtained from <literal>Identity.instance().getUsername()</literal> and <literal>Identity.instance().getPassword()</literal>, respectively. Any roles that the user is a member of should be assigned using <literal>Identity.instance().addRole()</literal>. Here is a complete example of an authentication method inside a JavaBean component:
+	</para>
+	
+<programlisting>@Name("authenticator")
+public class Authenticator {
+   @In EntityManager entityManager;
+   
+   public boolean authenticate() {
+      try
+      {
+         User user = (User) entityManager.createQuery(
+            "from User where username = :username and password = :password")
+            .setParameter("username", Identity.instance().getUsername())
+            .setParameter("password", Identity.instance().getPassword())
+            .getSingleResult();
+
+         if (user.getRoles() != null)
+         {
+            for (UserRole mr : user.getRoles())
+               Identity.instance().addRole(mr.getName());
+         }
+
+         return true;
+      }
+      catch (NoResultException ex)
+      {
+         FacesMessages.instance().add("Invalid username/password");
+         return false;
+      }
+      
+   }
+   
+}
+</programlisting>
+	<para>
+		In the above example, both <literal>User</literal> and <literal>UserRole</literal> are application-specific entity beans. The <literal>roles</literal> parameter is populated with the roles that the user is a member of, which should be added to the <literal>Set</literal> as literal string values, for example, <literal>admin</literal>, <literal>user</literal>. In this case, if the user record is not found and a <literal>NoResultException</literal> thrown, the authentication method returns <literal>false</literal> to indicate the authentication failed.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Authentication-Writing_a_login_form"><title>Writing a login form</title>
+	<para>
+		The <literal>Identity</literal> component provides both <literal>username</literal> and <literal>password</literal> properties, catering for the most common authentication scenario. These properties can be bound directly to the username and password fields on a login form. Once these properties are set, calling the <literal>identity.login()</literal> method will authenticate the user using the provided credentials. Here is an example of a simple login form:
+	</para>
+	
+<programlisting>&lt;div&gt;
+    &lt;h:outputLabel for="name" value="Username"/&gt;
+    &lt;h:inputText id="name" value="#{identity.username}"/&gt;
+&lt;/div&gt;
+
+&lt;div&gt;
+    &lt;h:outputLabel for="password" value="Password"/&gt;
+    &lt;h:inputSecret id="password" value="#{identity.password}"/&gt;
+&lt;/div&gt;
+
+&lt;div&gt;
+    &lt;h:commandButton value="Login" action="#{identity.login}"/&gt;
+&lt;/div&gt;
+</programlisting>
+	<para>
+		Similarly, logging out the user is done by calling <literal>#{identity.logout}</literal>. Calling this action will clear the security state of the currently authenticated user.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Authentication-Simplified_Configuration___Summary"><title>Simplified Configuration - Summary</title>
+	<para>
+		So to sum up, there are the three easy steps to configure authentication:
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				Configure an authentication method in <literal>components.xml</literal>.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Write an authentication method.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Write a login form so that the user can authenticate.
+			</para>
+		</listitem>
+	</itemizedlist>
+	</sect2><sect2 id="Seam_Reference_Guide-Authentication-Handling_Security_Exceptions"><title>Handling Security Exceptions</title>
+	<para>
+		To prevent users from receiving the default error page in response to a security error, it is recommended that <literal>pages.xml</literal> is configured to redirect security errors to a more meaningful page. The two main types of exceptions thrown by the security API are:
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				<literal>NotLoggedInException</literal> - This exception is thrown if the user attempts to access a restricted action or page when they are not logged in.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>AuthorizationException</literal> - This exception is only thrown if the user is already logged in, and they have attempted to access a restricted action or page for which they do not have the necessary privileges.
+			</para>
+		</listitem>
+	</itemizedlist>
+	<para>
+		In the case of a <literal>NotLoggedInException</literal>, it is recommended that the user is redirected to either a login or registration page so that they can log in. For an <literal>AuthorizationException</literal>, it may be useful to redirect the user to an error page. Here is an example of a <literal>pages.xml</literal> file that redirects both of these security exceptions:
+	</para>
+	
+<programlisting>&lt;pages&gt;
+
+    ...
+    
+    &lt;exception class="org.jboss.seam.security.NotLoggedInException"&gt;
+        &lt;redirect view-id="/login.xhtml"&gt;
+            &lt;message&gt;You must be logged in to perform this action&lt;/message&gt;
+        &lt;/redirect&gt;
+    &lt;/exception&gt;
+    
+    &lt;exception class="org.jboss.seam.security.AuthorizationException"&gt;
+        &lt;end-conversation/&gt;
+        &lt;redirect view-id="/security_error.xhtml"&gt;
+            &lt;message&gt;
+                              You do not have the necessary security privileges to perform this action.
+            &lt;/message&gt;
+        &lt;/redirect&gt;
+    &lt;/exception&gt;
+  
+&lt;/pages&gt;
+</programlisting>
+	<para>
+		Most web applications require even more sophisticated handling of login redirection, so Seam includes some special functionality for handling this problem.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Authentication-Login_Redirection"><title>Login Redirection</title>
+	<para>
+		You can ask Seam to redirect the user to a login screen when an unauthenticated user tries to access a particular view (or wildcarded view id) as follows:
+	</para>
+	
+<programlisting>&lt;pages login-view-id="/login.xhtml"&gt;
+
+    &lt;page view-id="/members/*" login-required="true"/&gt;
+    
+    ...
+    
+&lt;/pages&gt;
+</programlisting>
+	<para>
+		(This is less of a blunt instrument than the exception handler shown above, but should probably be used in conjunction with it.)
+	</para>
+	<para>
+		After the user logs in, we want to automatically send them back where they came from, so they can retry the action that required logging in. If you add the following event listeners to <literal>components.xml</literal>, attempts to access a restricted view while not logged in will be remembered, so that upon the user successfully logging in they will be redirected to the originally requested view, with any page parameters that existed in the original request.
+	</para>
+	
+<programlisting>&lt;event type="org.jboss.seam.notLoggedIn"&gt;
+    &lt;action expression="#{redirect.captureCurrentView}"/&gt;
+&lt;/event&gt;
+    
+&lt;event type="org.jboss.seam.postAuthenticate"&gt;
+    &lt;action expression="#{redirect.returnToCapturedView}"/&gt;
+&lt;/event&gt;
+</programlisting>
+	<note>
+		<para>
+			Login redirection is implemented as a conversation-scoped mechanism, so do not end the conversation in your <literal>authenticate()</literal> method.
+		</para>
+	</note>
+	</sect2><sect2 id="Seam_Reference_Guide-Authentication-Advanced_Authentication_Features"><title>Advanced Authentication Features</title>
+	<para>
+		This section explores some of the advanced features provided by the security API for addressing more complex security requirements.
+	</para>
+	<sect3 id="Seam_Reference_Guide-Advanced_Authentication_Features-Using_your_containers_JAAS_configuration"><title>Using your container's JAAS configuration</title>
+	<para>
+		If you would rather not use the simplified JAAS configuration provided by the Seam Security API, you may instead delegate to the default system JAAS configuration by providing a <literal>jaasConfigName</literal> property in <literal>components.xml</literal>. For example, if you are using JBoss AS and wish to use the <literal>other</literal> policy (which uses the <literal>UsersRolesLoginModule</literal> login module provided by JBoss AS), then the entry in <literal>components.xml</literal> would look like this:
+	</para>
+	
+<programlisting>&lt;security:identity authenticate-method="#{authenticator.authenticate}" 
+                      jaas-config-name="other"/&gt;
+</programlisting>
+	</sect3></sect2></sect1><sect1 id="Seam_Reference_Guide-Security-Error_Messages"><title>Error Messages</title>
+	<para>
+		The security API produces a number of default faces messages for various security-related events. The following table lists the message keys that can be used to override these messages by specifying them in a <literal>message.properties</literal> resource file.
+	</para>
+	<table id="Seam_Reference_Guide-Error_Messages-Security_Message_Keys">
+		<title>Security Message Keys</title>
+		<tgroup cols="2">
+			<colspec colnum="1" colwidth="1*"></colspec>
+			<colspec colnum="2" colwidth="3*"></colspec>
+			<tbody>
+				<row>
+					<entry>
+						<para>
+							<literal>org.jboss.seam.loginSuccessful</literal>
+						</para>
+					</entry>
+					<entry>
+						<para>
+							This message is produced when a user successfully logs in via the security API.
+						</para>
+					</entry>
+				</row>
+				<row>
+					<entry>
+						<para>
+							<literal>org.jboss.seam.loginFailed</literal>
+						</para>
+					</entry>
+					<entry>
+						<para>
+							This message is produced when the login process fails, either because the user provided an incorrect username or password, or because authentication failed in some other way.
+						</para>
+					</entry>
+				</row>
+				<row>
+					<entry>
+						<para>
+							<literal>org.jboss.seam.NotLoggedIn</literal>
+						</para>
+					</entry>
+					<entry>
+						<para>
+							This message is produced when a user attempts to perform an action or access a page that requires a security check, and the user is not currently authenticated.
+						</para>
+					</entry>
+				</row>
+			</tbody>
+		</tgroup>
+	</table>
+	</sect1><sect1 id="Seam_Reference_Guide-Security-Authorization"><title>Authorization</title>
+	<para>
+		There are a number of authorization features provided by the Seam Security API for securing access to components, component methods, and pages. This section describes each of these. An important thing to note is that if you wish to use any of the advanced features (such as rule-based permissions) then your <filename>components.xml</filename> must be configured to support this - see the Configuration section above.
+	</para>
+	<sect2 id="Seam_Reference_Guide-Authorization-Core_concepts"><title>Core concepts</title>
+	<para>
+		Each of the authorization mechanisms provided by the Seam Security API are built upon the concept of a user being granted roles and/or permissions. A role is a <emphasis>group</emphasis>, or <emphasis>type</emphasis>, of user that may have been granted certain privileges for performing one or more specific actions within an application. A permission on the other hand is a privilege (sometimes once-off) for performing a single, specific action. It is entirely possible to build an application using nothing but permissions, however roles offer a higher level of convenience when granting privileges to groups of users.
+	</para>
+	<para>
+		Roles are simple, consisting of only a name such as <literal>admin</literal>, <literal>user</literal>, <literal>customer</literal>, etc. Permissions consist of both a name and an action, and are represented within this documentation in the form <literal>name:action</literal>, for example <literal>customer:delete</literal>, or <literal>customer:insert</literal>.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Authorization-Securing_components"><title>Securing components</title>
+	<para>
+		Let us start by examining the simplest form of authorization, component security, starting with the <literal>@Restrict</literal> annotation.
+	</para>
+	<sect3 id="Seam_Reference_Guide-Securing_components-The_Restrict_annotation"><title>The @Restrict annotation</title>
+	<para>
+		Seam components may be secured either at the method or the class level, using the <literal>@Restrict</literal> annotation. If both a method and it's declaring class are annotated with <literal>@Restrict</literal>, the method restriction will take precedence (and the class restriction will not apply). If a method invocation fails a security check, then an exception will be thrown as per the contract for <literal>Identity.checkRestriction()</literal> (see Inline Restrictions). A <literal>@Restrict</literal> on just the component class itself is equivalent to adding <literal>@Restrict</literal> to each of its methods.
+	</para>
+	<para>
+		An empty <literal>@Restrict</literal> implies a permission check of <literal>componentName:methodName</literal>. Take for example the following component method:
+	</para>
+	
+<programlisting>@Name("account")
+public class AccountAction {
+    @Restrict public void delete() {
+      ...
+    }
+}
+</programlisting>
+	<para>
+		In this example, the implied permission required to call the <literal>delete()</literal> method is <literal>account:delete</literal>. The equivalent of this would be to write <literal>@Restrict("#{s:hasPermission('account','delete',null)}")</literal>. Now let's look at another example:
+	</para>
+	
+<programlisting>@Restrict @Name("account")
+public class AccountAction {
+    public void insert() {
+      ...
+    }
+    @Restrict("#{s:hasRole('admin')}") 
+    public void delete() {
+      ...
+    }
+}
+</programlisting>
+	<para>
+		This time, the component class itself is annotated with <literal>@Restrict</literal>. This means that any methods without an overriding <literal>@Restrict</literal> annotation require an implicit permission check. In the case of this example, the <literal>insert()</literal> method requires a permission of <literal>account:insert</literal>, while the <literal>delete()</literal> method requires that the user is a member of the <literal>admin</literal> role.
+	</para>
+	<para>
+		Before we go any further, let us address the <literal>#{s:hasRole()}</literal> expression seen in the above example. Both <literal>s:hasRole</literal> and <literal>s:hasPermission</literal> are EL functions, which delegate to the correspondingly named methods of the <literal>Identity</literal> class. These functions can be used within any EL expression throughout the entirety of the security API.
+	</para>
+	<para>
+		Being an EL expression, the value of the <literal>@Restrict</literal> annotation may reference any objects that exist within a Seam context. This is extremely useful when performing permission checks for a specific object instance. Look at this example:
+	</para>
+	
+<programlisting>@Name("account")
+public class AccountAction {
+    @In Account selectedAccount;
+    @Restrict("#{s:hasPermission('account','modify',selectedAccount)}")
+    public void modify() {
+        selectedAccount.modify();
+    }
+}
+</programlisting>
+	<para>
+		The interesting thing to note from this example is the reference to <literal>selectedAccount</literal> seen within the <literal>hasPermission()</literal> function call. The value of this variable will be looked up from within the Seam context, and passed to the <literal>hasPermission()</literal> method in <literal>Identity</literal>, which in this case can then determine if the user has the required permission for modifying the specified <literal>Account</literal> object.
+	</para>
+	</sect3><sect3 id="Seam_Reference_Guide-Securing_components-Inline_restrictions"><title>Inline restrictions</title>
+	<para>
+		Sometimes it might be desirable to perform a security check in code, without using the <literal>@Restrict</literal> annotation. In this situation, simply use <literal>Identity.checkRestriction()</literal> to evaluate a security expression, like this:
+	</para>
+	
+<programlisting>public void deleteCustomer() {
+    Identity.instance().checkRestriction("#{s:hasPermission('customer','delete',
+      selectedCustomer)}");
+}
+</programlisting>
+	<para>
+		If the expression specified doesn't evaluate to <literal>true</literal>, either
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				if the user is not logged in, a <literal>NotLoggedInException</literal> exception is thrown or
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				if the user is logged in, an <literal>AuthorizationException</literal> exception is thrown.
+			</para>
+		</listitem>
+	</itemizedlist>
+	<para>
+		It is also possible to call the <literal>hasRole()</literal> and <literal>hasPermission()</literal> methods directly from Java code:
+	</para>
+	
+<programlisting>if (!Identity.instance().hasRole("admin"))
+     throw new AuthorizationException("Must be admin to perform this action");
+
+if (!Identity.instance().hasPermission("customer", "create", null))
+     throw new AuthorizationException("You may not create new customers");
+</programlisting>
+	</sect3></sect2><sect2 id="Seam_Reference_Guide-Authorization-Security_in_the_user_interface"><title>Security in the user interface</title>
+	<para>
+		One indication of a well designed user interface is that the user is not presented with options for which they do not have the necessary privileges to use. Seam Security allows conditional rendering of either 1) sections of a page or 2) individual controls, based upon the privileges of the user, using the very same EL expressions that are used for component security.
+	</para>
+	<para>
+		Let us take a look at some examples of interface security. First of all, let us pretend that we have a login form that should only be rendered if the user is not already logged in. Using the <literal>identity.isLoggedIn()</literal> property, we can write this:
+	</para>
+	
+<programlisting>&lt;h:form class="loginForm" rendered="#{not identity.loggedIn}"&gt;
+</programlisting>
+	<para>
+		If the user is not logged in, then the login form will be rendered - very straight forward so far. Now let us pretend there is a menu on the page that contains some actions which should only be accessible to users in the <literal>manager</literal> role. Here is one way that these could be written:
+	</para>
+	
+<programlisting>&lt;h:outputLink action="#{reports.listManagerReports}" rendered="#{s:hasRole('manager')}"&gt;
+    Manager Reports
+&lt;/h:outputLink&gt;
+</programlisting>
+	<para>
+		This is also quite straight forward. If the user is not a member of the <literal>manager</literal> role, then the outputLink will not be rendered. The <literal>rendered</literal> attribute can generally be used on the control itself, or on a surrounding <literal>&lt;s:div&gt;</literal> or <literal>&lt;s:span&gt;</literal> control.
+	</para>
+	<para>
+		Now for something more complex. Let us say you have a <literal>h:dataTable</literal> control on a page listing records for which you may or may not wish to render action links depending on the user's privileges. The <literal>s:hasPermission</literal> EL function allows us to pass in an object parameter which can be used to determine whether the user has the requested permission for that object or not. Here is how a dataTable with secured links might look:
+	</para>
+	
+<programlisting>&lt;h:dataTable value="#{clients}" var="cl"&gt;
+    &lt;h:column&gt;
+        &lt;f:facet name="header"&gt;Name&lt;/f:facet&gt;
+        #{cl.name}
+    &lt;/h:column&gt;
+    &lt;h:column&gt;
+        &lt;f:facet name="header"&gt;City&lt;/f:facet&gt;
+        #{cl.city}
+    &lt;/h:column&gt;   
+    &lt;h:column&gt;
+        &lt;f:facet name="header"&gt;Action&lt;/f:facet&gt;
+        &lt;s:link value="Modify Client" action="#{clientAction.modify}"
+                rendered="#{s:hasPermission('client','modify',cl)"/&gt;
+        &lt;s:link value="Delete Client" action="#{clientAction.delete}"
+                rendered="#{s:hasPermission('client','delete',cl)"/&gt;
+    &lt;/h:column&gt;
+&lt;/h:dataTable&gt;
+</programlisting>
+	</sect2><sect2 id="Seam_Reference_Guide-Authorization-Securing_pages"><title>Securing pages</title>
+	<para>
+		Page security requires that the application is using a <literal>pages.xml</literal> file, however is extremely simple to configure. Simply include a <literal>&lt;restrict/&gt;</literal> element within the <literal>page</literal> elements that you wish to secure. By default, if a value is not provided for the <literal>restrict</literal> element, an implied permission of <literal>{viewId}:render</literal> will be checked for whenever accessing that page. Otherwise the value will be evaluated as a standard security expression. Here is a couple of examples:
+	</para>
+	
+<programlisting>&lt;page view-id="/settings.xhtml"&gt;
+    &lt;restrict/&gt;
+&lt;/page&gt;
+        
+&lt;page view-id="/reports.xhtml"&gt;    
+    &lt;restrict&gt;#{s:hasRole('admin')}&lt;/restrict&gt;
+&lt;/page&gt;
+</programlisting>
+	<para>
+		In the above example, the first page has an implied permission restriction of <literal>/settings.xhtml:render</literal>, while the second one checks that the user is a member of the <literal>admin</literal> role.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Authorization-Securing_Entities"><title>Securing Entities</title>
+	<para>
+		Seam security also makes it possible to apply security restrictions to read, insert, update and delete actions for entities.
+	</para>
+	<para>
+		To secure all actions for an entity class, add a <literal>@Restrict</literal> annotation on the class itself:
+	</para>
+	
+<programlisting>@Entity
+ at Name("customer")
+ at Restrict
+public class Customer {
+  ...
+}
+</programlisting>
+	<para>
+		If no expression is specified in the <literal>@Restrict</literal> annotation, the default security check that is performed is a permission check of <literal>entityName:action</literal>, where <literal>entityName</literal> is the Seam component name of the entity (or the fully-qualified class name if no @Name is specified), and the <literal>action</literal> is either <literal>read</literal>, <literal>insert</literal>, <literal>update</literal> or <literal>delete</literal>.
+	</para>
+	<para>
+		It is also possible to only restrict certain actions, by placing a <literal>@Restrict</literal> annotation on the relevent entity lifecycle method (annotated as follows):
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				<literal>@PostLoad</literal> - Called after an entity instance is loaded from the database. Use this method to configure a <literal>read</literal> permission.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>@PrePersist</literal> - Called before a new instance of the entity is inserted. Use this method to configure an <literal>insert</literal> permission.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>@PreUpdate</literal> - Called before an entity is updated. Use this method to configure an <literal>update</literal> permission.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>@PreRemove</literal> - Called before an entity is deleted. Use this method to configure a <literal>delete</literal> permission.
+			</para>
+		</listitem>
+	</itemizedlist>
+	<para>
+		Here is an example of how an entity would be configured to perform a security check for any <literal>insert</literal> operations. Please note that the method is not required to do anything, the only important thing in regard to security is how it is annotated:
+	</para>
+	
+<programlisting>
+  @PrePersist @Restrict
+  public void prePersist() {}
+</programlisting>
+	<para>
+		And here is an example of an entity permission rule that checks if the authenticated user is allowed to insert a new <literal>MemberBlog</literal> record (from the seamspace example). The entity for which the security check is being made is automatically asserted into the working memory (in this case <literal>MemberBlog</literal>):
+	</para>
+	
+<programlisting>rule InsertMemberBlog
+  no-loop
+  activation-group "permissions"  
+when
+  check: PermissionCheck(name == "memberBlog", action == "insert", granted == false)
+  Principal(principalName : name)
+  MemberBlog(member : member -&gt; (member.getUsername().equals(principalName)))
+then
+  check.grant();
+end;
+</programlisting>
+	<para>
+		This rule will grant the permission <literal>memberBlog:insert</literal> if the currently authenticated user (indicated by the <literal>Principal</literal> fact) has the same name as the member for which the blog entry is being created. The "<literal>name : name</literal>" structure that can be seen in the <literal>Principal</literal> fact (and other places) is a variable binding - it binds the <literal>name</literal> property of the <literal>Principal</literal> to a variable called <literal>name</literal>. Variable bindings allow the value to be referred to in other places, such as the following line which compares the member's username to the <literal>Principal</literal> name. For more details, please refer to the JBoss Rules documentation.
+	</para>
+	<para>
+		Finally, we need to install a listener class that integrates Seam security with your JPA provider.
+	</para>
+	<sect3 id="Seam_Reference_Guide-Securing_Entities-Entity_security_with_JPA"><title>Entity security with JPA</title>
+	<para>
+		Security checks for EJB3 entity beans are performed with an <literal>EntityListener</literal>. You can install this listener by using the following <literal>META-INF/orm.xml</literal> file:
+	</para>
+	
+<programlisting>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
+                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+                 xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm 
+                                            http://java.sun.com/xml/ns/persistence/orm_1_0.xsd"
+                 version="1.0"&gt;
+                 
+    &lt;persistence-unit-metadata&gt;
+        &lt;persistence-unit-defaults&gt;
+            &lt;entity-listeners&gt;
+                &lt;entity-listener class="org.jboss.seam.security.EntitySecurityListener"/&gt;
+            &lt;/entity-listeners&gt;
+        &lt;/persistence-unit-defaults&gt;
+    &lt;/persistence-unit-metadata&gt;
+    
+&lt;/entity-mappings&gt;
+</programlisting>
+	</sect3><sect3 id="Seam_Reference_Guide-Securing_Entities-Entity_security_with_Hibernate"><title>Entity security with Hibernate</title>
+	<para>
+		If you are using a Hibernate <literal>SessionFactory</literal> configured via Seam, you do not need to do anything special to use entity security.
+	</para>
+	</sect3></sect2></sect1><sect1 id="Seam_Reference_Guide-Security-Writing_Security_Rules"><title>Writing Security Rules</title>
+	<para>
+		Up to this point there has been a lot of mention of permissions, but no information about how permissions are actually defined or granted. This section completes the picture, by explaining how permission checks are processed, and how to implement permission checks for a Seam application.
+	</para>
+	<sect2 id="Seam_Reference_Guide-Writing_Security_Rules-Permissions_Overview"><title>Permissions Overview</title>
+	<para>
+		So how does the security API know whether a user has the <literal>customer:modify</literal> permission for a specific customer? Seam Security provides quite a novel method for determining user permissions, based on JBoss Rules. A couple of the advantages of using a rule engine are 1) a centralized location for the business logic that is behind each user permission, and 2) speed - JBoss Rules uses very efficient algorithms for evaluating large numbers of complex rules involving multiple conditions.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Writing_Security_Rules-Configuring_a_rules_file"><title>Configuring a rules file</title>
+	<para>
+		Seam Security expects to find a <literal>RuleBase</literal> component called <literal>securityRules</literal> which it uses to evaluate permission checks. This is configured in <literal>components.xml</literal> as follows:
+	</para>
+	
+<programlisting>&lt;components xmlns="http://jboss.com/products/seam/components"
+            xmlns:core="http://jboss.com/products/seam/core"
+            xmlns:security="http://jboss.com/products/seam/security"
+            xmlns:drools="http://jboss.com/products/seam/drools"
+            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+            xsi:schemaLocation=
+                "http://jboss.com/products/seam/core 
+                                              http://jboss.com/products/seam/core-1.2.xsd 
+                 http://jboss.com/products/seam/components 
+                                              http://jboss.com/products/seam/components-1.2.xsd
+                 http://jboss.com/products/seam/drools 
+                                              http://jboss.com/products/seam/drools-1.2.xsd"
+                 http://jboss.com/products/seam/security 
+                                              http://jboss.com/products/seam/security-1.2.xsd"&gt;                 
+        
+   &lt;drools:rule-base name="securityRules"&gt;
+       &lt;drools:rule-files&gt;
+           &lt;value&gt;/META-INF/security.drl&lt;/value&gt;
+       &lt;/drools:rule-files&gt;
+   &lt;/drools:rule-base&gt;    
+   
+&lt;/components&gt;
+</programlisting>
+	<para>
+		Once the <literal>RuleBase</literal> component is configured, it is time to write the security rules.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Writing_Security_Rules-Creating_a_security_rules_file"><title>Creating a security rules file</title>
+	<para>
+		For this step you need to create a file called <literal>security.drl</literal> in the <literal>/META-INF</literal> directory of your application's jar file. In actual fact this file can be called anything you want, and exist in any location as long as it is configured appropriately in <literal>components.xml</literal>.
+	</para>
+	<para>
+		So what should the security rules file contain? At this stage it might be a good idea to at least skim through the JBoss Rules documentation, however to get started here is an extremely simple example:
+	</para>
+	
+<programlisting>package MyApplicationPermissions;
+
+import org.jboss.seam.security.PermissionCheck;
+import org.jboss.seam.security.Role;
+
+rule CanUserDeleteCustomers
+when
+  c: PermissionCheck(name == "customer", action == "delete")
+  Role(name == "admin")
+then
+  c.grant();
+end;
+</programlisting>
+	<para>
+		Let us break this down. The first thing we see is the package declaration. A package in JBoss Rules is essentially a collection of rules. The package name can be anything you want - it does not relate to anything else outside the scope of the rule base.
+	</para>
+	<para>
+		The next thing we can notice is a couple of import statements for the <literal>PermissionCheck</literal> and <literal>Role</literal> classes. These imports inform the rules engine that we will be referencing these classes within our rules.
+	</para>
+	<para>
+		Finally we have the code for the rule. Each rule within a package should be given a unique name (usually describing the purpose of the rule). In this case our rule is called <literal>CanUserDeleteCustomers</literal> and will be used to check whether a user is allowed to delete a customer record.
+	</para>
+	<para>
+		Looking at the body of the rule definition we can notice two distinct sections. Rules have what is known as a left hand side (LHS) and a right hand side (RHS). The LHS consists of the conditional part of the rule, i.e. a list of conditions which must be satisfied for the rule to fire. The LHS is represented by the <literal>when</literal> section. The RHS is the consequence, or action section of the rule that will only be fired if all of the conditions in the LHS are met. The RHS is represented by the <literal>then</literal> section. The end of the rule is denoted by the <literal>end;</literal> line.
+	</para>
+	<para>
+		If we look at the LHS of the rule, we see two conditions listed there. Let us examine the first condition:
+	</para>
+	
+<programlisting>c: PermissionCheck(name == "customer", action == "delete")
+</programlisting>
+	<para>
+		In plain english, this condition is stating that there must exist a <literal>PermissionCheck</literal> object with a <literal>name</literal> property equal to "customer", and an <literal>action</literal> property equal to "delete" within the working memory. What is the working memory? It is a session-scoped object that contains the contextual information that is required by the rules engine to make a decision about a permission check. Each time the <literal>hasPermission()</literal> method is called, a temporary <literal>PermissionCheck</literal> object, or <emphasis>Fact</emphasis>, is asserted into the working memory. This <literal>PermissionCheck</literal> corresponds exactly to the permission that is being checked, so for example if you call <literal>hasPermission("account", "create", null)</literal> then a <literal>PermissionCheck</literal> object with a <literal>name</literal> equal to "account" and <literal>action</literal> equal to "create" will be asserted into t!
 he working memory for the duration of the permission check.
+	</para>
+	<para>
+		So what else is in the working memory? Besides the short-lived temporary facts asserted during a permission check, there are some longer-lived objects in the working memory that stay there for the entire duration of a user being authenticated. These include any <literal>java.security.Principal</literal> objects that are created as part of the authentication process, plus a <literal>org.jboss.seam.security.Role</literal> object for each of the roles that the user is a member of. It is also possible to assert additional long-lived facts into the working memory by calling <literal>RuleBasedIdentity.instance().getSecurityContext().assertObject()</literal>, passing the object as a parameter.
+	</para>
+	<para>
+		Getting back to our simple example, we can also notice that the first line of our LHS is prefixed with <literal>c:</literal>. This is a variable binding, and is used to refer back to the object that is matched by the condition. Moving onto the second line of our LHS, we see this:
+	</para>
+	
+<programlisting>Role(name == "admin")
+</programlisting>
+	<para>
+		This condition simply states that there must be a <literal>Role</literal> object with a <literal>name</literal> of "admin" within the working memory. As mentioned, user roles are asserted into the working memory as long-lived facts. So, putting both conditions together, this rule is essentially saying "I will fire if you are checking for the <literal>customer:delete</literal> permission and the user is a member of the <literal>admin</literal> role".
+	</para>
+	<para>
+		So what is the consequence of the rule firing? Let us take a look at the RHS of the rule:
+	</para>
+	
+<programlisting>c.grant()
+</programlisting>
+	<para>
+		The RHS consists of Java code, and in this case is invoking the <literal>grant()</literal> method of the <literal>c</literal> object, which as already mentioned is a variable binding for the <literal>PermissionCheck</literal> object. Besides the <literal>name</literal> and <literal>action</literal> properties of the <literal>PermissionCheck</literal> object, there is also a <literal>granted</literal> property which is initially set to <literal>false</literal>. Calling <literal>grant()</literal> on a <literal>PermissionCheck</literal> sets the <literal>granted</literal> property to <literal>true</literal>, which means that the permission check was successful, allowing the user to carry out whatever action the permission check was intended for.
+	</para>
+	<sect3 id="Seam_Reference_Guide-Creating_a_security_rules_file-Wildcard_permission_checks"><title>Wildcard permission checks</title>
+	<para>
+		It is possible to implement a wildcard permission check (which allows all actions for a given permission name), by omitting the <literal>action</literal> constraint for the <literal>PermissionCheck</literal> in your rule, like this:
+	</para>
+	
+<programlisting>rule CanDoAnythingToCustomersIfYouAreAnAdmin
+when
+  c: PermissionCheck(name == "customer")
+  Role(name == "admin")
+then
+  c.grant();
+end;
+</programlisting>
+	<para>
+		This rule allows users with the <literal>admin</literal> role to perform <emphasis>any</emphasis> action for any <literal>customer</literal> permission check.
+	</para>
+	</sect3></sect2></sect1><sect1 id="Seam_Reference_Guide-Security-SSL_Security"><title>SSL Security</title>
+	<para>
+		Seam includes basic support for serving sensitive pages via the HTTPS protocol. This is easily configured by specifying a <literal>scheme</literal> for the page in <literal>pages.xml</literal>. The following example shows how the view <literal>/login.xhtml</literal> is configured to use HTTPS:
+	</para>
+	
+<programlisting>  &lt;page view-id="/login.xhtml" scheme="https"&gt;
+</programlisting>
+	<para>
+		This configuration is automatically extended to both <literal>s:link</literal> and <literal>s:button</literal> JSF controls, which (when specifying the <literal>view</literal>) will also render the link using the correct protocol. Based on the previous example, the following link will use the HTTPS protocol because <literal>/login.xhtml</literal> is configured to use it:
+	</para>
+	
+<programlisting>  &lt;s:link view="/login.xhtml" value="Login"/&gt;
+</programlisting>
+	<para>
+		Browsing directly to a view when using the <emphasis>incorrect</emphasis> protocol will cause a redirect to the same view using the <emphasis>correct</emphasis> protocol. For example, browsing to a page that has <literal>scheme="https"</literal> using HTTP will cause a redirect to the same page using HTTPS.
+	</para>
+	<para>
+		It is also possible to configure a default <literal>scheme</literal> for all pages. This is actually quite important, as you might only wish to use HTTPS for a few pages, and if no default scheme is specified then the default behavior is to continue using the current scheme. What this means is that once you enter a page with HTTPS, then HTTPS will continue to be used even if you navigate away to other non-HTTPS pages (a bad thing!). So it is strongly recommended to include a default <literal>scheme</literal>, by configuring it on the default (<literal>"*"</literal>) view:
+	</para>
+	
+<programlisting>  &lt;page view-id="*" scheme="http"&gt;
+</programlisting>
+	<para>
+		Of course, if <emphasis>none</emphasis> of the pages in your application use HTTPS then it is not required to specify a default scheme.
+	</para>
+	</sect1><sect1 id="Seam_Reference_Guide-Security-Implementing_a_Captcha_Test"><title>Implementing a Captcha Test</title>
+	<para>
+		Though strictly not part of the security API, it might be useful in certain circumstances (such as new user registrations, posting to a public blog or forum) to implement a Captcha (<emphasis>C</emphasis>ompletely <emphasis>A</emphasis>utomated <emphasis>P</emphasis>ublic <emphasis>T</emphasis>uring test to tell <emphasis>C</emphasis>omputers and <emphasis>H</emphasis>umans <emphasis>A</emphasis>part) to prevent automated bots from interacting with your application. Seam provides seamless integration with JCaptcha, an excellent library for generating Captcha challenges. If you wish to use the captcha feature in your application you need to include the jcaptcha-* jar file from the Seam lib directory in your project, and register it in <literal>application.xml</literal> as a java module.
+	</para>
+	<sect2 id="Seam_Reference_Guide-Implementing_a_Captcha_Test-Configuring_the_Captcha_Servlet"><title>Configuring the Captcha Servlet</title>
+	<para>
+		To get up and running, it is necessary to configure the Seam Resource Servlet, which will provide the Captcha challenge images to your pages. This requires the following entry in <literal>web.xml</literal>:
+	</para>
+	
+<programlisting>&lt;servlet&gt;
+    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;
+    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-class&gt;
+&lt;/servlet&gt;
+    
+&lt;servlet-mapping&gt;
+    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;
+    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;
+&lt;/servlet-mapping&gt;
+</programlisting>
+	</sect2><sect2 id="Seam_Reference_Guide-Implementing_a_Captcha_Test-Adding_a_Captcha_to_a_page"><title>Adding a Captcha to a page</title>
+	<para>
+		Adding a captcha challenge to a page is extremely easy. Seam provides a page-scoped component, <literal>captcha</literal>, which provides everything that is required, including built-in captcha validation. Here is an example:
+	</para>
+	
+<programlisting>&lt;div&gt;
+    &lt;h:graphicImage value="/seam/resource/captcha?#{captcha.id}"/&gt;
+&lt;/div&gt;
+  
+&lt;div&gt;
+    &lt;h:outputLabel for="verifyCaptcha"&gt;Enter the above letters&lt;/h:outputLabel&gt;
+    &lt;h:inputText id="verifyCaptcha" value="#{captcha.response}" required="true"/&gt;
+    &lt;div class="validationError"&gt;&lt;h:message for="verifyCaptcha"/&gt;&lt;/div&gt;
+&lt;/div&gt;
+</programlisting>
+	<para>
+		That is all there is to it. The <literal>graphicImage</literal> control displays the Captcha challenge, and the <literal>inputText</literal> receives the user's response. The response is automatically validated against the Captcha when the form is submitted.
+	</para>
+	</sect2></sect1>
+</chapter>
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Spring.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Spring.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Spring.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,235 @@
+<?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" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Seam_Reference_Guide_CP07.ent">
+%BOOK_ENTITIES;
+]>
+<chapter id="Seam_Reference_Guide-Spring_Framework_integration" lang="en-US">
+	<title>Spring Framework integration</title>
+	<para>
+		The Spring integration module allows easy migration of Spring-based projects to Seam and allows Spring applications to take advantage of key Seam features like conversations and Seam's more sophisticated persistence context management.
+	</para>
+	<para>
+		Seam's support for Spring provides the ability to:
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				inject Seam component instances into Spring beans
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				inject Spring beans into Seam components
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				turn Spring beans into Seam components
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				allow Spring beans to live in any Seam context
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				start a spring WebApplicationContext with a Seam component
+			</para>
+		</listitem>
+	</itemizedlist>
+	<section id="Seam_Reference_Guide-Spring_Framework_integration-Injecting_Seam_components_into_Spring_beans">
+		<title>Injecting Seam components into Spring beans</title>
+		<para>
+			Injecting Seam component instances into Spring beans is accomplished using the <literal>&lt;seam:instance/&gt;</literal> namespace handler. To enable the Seam namespace handler, the Seam namespace must be added to the Spring beans definition file:
+		</para>
+		
+<programlisting>&lt;beans xmlns="http://www.springframework.org/schema/beans"
+    xmlns:seam="http://jboss.com/products/seam/spring-seam"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://www.springframework.org/schema/beans 
+                        http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
+                        http://jboss.com/products/seam/spring-seam 
+                        http://jboss.com/products/seam/spring-seam-1.2.xsd"&gt;
+</programlisting>
+		<para>
+			Now any Seam component may be injected into any Spring bean:
+		</para>
+		
+<programlisting>&lt;bean id="someSpringBean" class="SomeSpringBeanClass" scope="prototype"&gt;
+    &lt;property name="someProperty"&gt;
+        &lt;seam:instance name="someComponent"/&gt;
+    &lt;/property&gt;
+&lt;/bean&gt;
+</programlisting>
+		<para>
+			An EL expression may be used instead of a component name:
+		</para>
+		
+<programlisting>&lt;bean id="someSpringBean" class="SomeSpringBeanClass" scope="prototype"&gt;
+    &lt;property name="someProperty"&gt;
+        &lt;seam:instance name="#{someExpression}"/&gt;
+    &lt;/property&gt;
+&lt;/bean&gt;
+</programlisting>
+		<para>
+			Seam component instances may even be made available for injection into Spring beans by a Spring bean id.
+		</para>
+		
+<programlisting>&lt;seam:instance name="someComponent" id="someSeamComponentInstance"/&gt;
+
+&lt;bean id="someSpringBean" class="SomeSpringBeanClass" scope="prototype"&gt;
+    &lt;property name="someProperty" ref="someSeamComponentInstance"&gt;
+&lt;/bean&gt;
+</programlisting>
+		<para>
+			Now for the caveat!
+		</para>
+		<para>
+			Seam was designed from the ground up to support a stateful component model with multiple contexts. Spring was not. Unlike Seam bijection, Spring injection does not occur at method invocation time. Instead, injection happens only when the Spring bean is instantiated. So the instance available when the bean is instantiated will be the same instance that the bean uses for the entire life of the bean. For example, if a Seam <literal>CONVERSATION</literal>-scoped component instance is directly injected into a singleton Spring bean, that singleton will hold a reference to the same instance long after the conversation is over! We call this problem <emphasis>scope impedance</emphasis>. Seam bijection ensures that scope impedance is maintained naturally as an invocation flows through the system. In Spring, we need to inject a proxy of the Seam component, and resolve the reference when the proxy is invoked.
+		</para>
+		<para>
+			The <literal>&lt;seam:instance/&gt;</literal> tag lets us automatically proxy the Seam component.
+		</para>
+		
+<programlisting>&lt;seam:instance id="seamManagedEM" name="someManagedEMComponent" proxy="true"/&gt;
+        
+&lt;bean id="someSpringBean" class="SomeSpringBeanClass"&gt;
+    &lt;property name="entityManager" ref="seamManagedEM"&gt;
+&lt;/bean&gt;
+</programlisting>
+		<para>
+			This example shows one way to use a Seam-managed persistence context from a Spring bean. (A more robust way to use Seam-managed persistence contexts as a replacement for the Spring <literal>OpenEntityManagerInView</literal> filter will be provided in a future release)
+		</para>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Spring_Framework_integration-Injecting_Spring_beans_into_Seam_components">
+		<title>Injecting Spring beans into Seam components</title>
+		<para>
+			It is even easier to inject Spring beans into Seam component instances. Actually, there are two possible approaches:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					inject a Spring bean using an EL expression
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					make the Spring bean a Seam component
+				</para>
+			</listitem>
+		</itemizedlist>
+		<para>
+			We will discuss the second option in the next section. The easiest approach is to access the Spring beans via EL.
+		</para>
+		<para>
+			The Spring <literal>DelegatingVariableResolver</literal> is an integration point Spring provides for integrating Spring with JSF. This <literal>VariableResolver</literal> makes all Spring beans available in EL by their bean id. You will need to add the <literal>DelegatingVariableResolver</literal> to <literal>faces-config.xml</literal>:
+		</para>
+		
+<programlisting>&lt;application&gt;
+    &lt;variable-resolver&gt;
+        org.springframework.web.jsf.DelegatingVariableResolver
+    &lt;/variable-resolver&gt;
+&lt;/application&gt;
+</programlisting>
+		<para>
+			Then you can inject Spring beans using <literal>@In</literal>:
+		</para>
+		
+<programlisting>@In("#{bookingService}")
+private BookingService bookingService;
+</programlisting>
+		<para>
+			The use of Spring beans in EL is not limited to injection. Spring beans may be used anywhere that EL expressions are used in Seam: process and pageflow definitions, working memory assertions, etc...
+		</para>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Spring_Framework_integration-Making_a_Spring_bean_into_a_Seam_component">
+		<title>Making a Spring bean into a Seam component</title>
+		<para>
+			The <literal>&lt;seam:component/&gt;</literal> namespace handler can be used to make any Spring bean a Seam component. Just place the <literal>&lt;seam:component/&gt;</literal> tag within the declaration of the bean that you wish to be a Seam component:
+		</para>
+		
+<programlisting>&lt;bean id="someSpringBean" class="SomeSpringBeanClass" scope="prototype"&gt;
+    &lt;seam:component/&gt;
+&lt;/bean&gt;
+</programlisting>
+		<para>
+			By default, <literal>&lt;seam:component/&gt;</literal> will create a <literal>STATELESS</literal> Seam component with class and name provided in the bean definition. Occasionally, such as when a <literal>FactoryBean</literal> is used, the class of the Spring bean may not be the class appearing in the bean definition. In such cases the <literal>class</literal> should be explicitly specified. A Seam component name may be explicitly specified in cases where there is potential for a naming conflict.
+		</para>
+		<para>
+			The <literal>scope</literal> attribute of <literal>&lt;seam:component/&gt;</literal> may be used if you wish the Spring bean to be managed in a particular Seam scope. The Spring bean must be scoped to <literal>prototype</literal> if the Seam scope specified is anything other than <literal>STATELESS</literal>. Pre-existing Spring beans usually have a fundamentally stateless character, so this attribute is not usually needed.
+		</para>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Spring_Framework_integration-Seam_scoped_Spring_beans">
+		<title>Seam-scoped Spring beans</title>
+		<para>
+			The Seam integration package also lets you use Seam's contexts as Spring 2.0 style custom scopes. This lets you declare any Spring bean in any of Seam's contexts. However, note once again that Spring's component model was never architected to support statefulness, so please use this feature with great care. In particular, clustering of session or conversation scoped Spring beans is deeply problematic, and care must be taken when injecting a bean or component from a wider scope into a bean of a narrower scope.
+		</para>
+		<para>
+			By specifying <literal>&lt;seam:configure-scopes/&gt;</literal> once in a Spring bean factory configuration, all of the Seam scopes will be available to Spring beans as custom scopes. To associate a Spring bean with a particular Seam scope, specify the Seam scope in the <literal>scope</literal> attribute of the bean definition.
+		</para>
+		
+<programlisting>&lt;!-- Only needs to be specified once per bean factory--&gt;
+&lt;seam:configure-scopes/&gt;
+
+...
+
+&lt;bean id="someSpringBean" class="SomeSpringBeanClass" scope="seam.CONVERSATION"/&gt;
+</programlisting>
+		<para>
+			The prefix of the scope name may be changed by specifying the <literal>prefix</literal> attribute in the <literal>configure-scopes</literal> definition. (The default prefix is <literal>seam.</literal>)
+		</para>
+		<para>
+			Seam-scoped Spring beans defined this way can be injected into other Spring beans without the use of <literal>&lt;seam:instance/&gt;</literal>. However, care must be taken to ensure scope impedance is maintained. The normal approach used in Spring is to specify <literal>&lt;aop:scoped-proxy/&gt;</literal> in the bean definition. However, Seam-scoped Spring beans are <emphasis>not</emphasis> compatible with <literal>&lt;aop:scoped-proxy/&gt;</literal>. So if you need to inject a Seam-scoped Spring bean into a singleton, <literal>&lt;seam:instance/&gt;</literal> must be used:
+		</para>
+		
+<programlisting>&lt;bean id="someSpringBean" class="SomeSpringBeanClass" scope="seam.CONVERSATION"/&gt;
+
+...
+
+&lt;bean id="someSingleton"&gt;
+    &lt;property name="someSeamScopedSpringBean"&gt;
+        &lt;seam:instance name="someSpringBean" proxy="true"/&gt;
+    &lt;/property&gt;
+&lt;/bean&gt;
+</programlisting>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Spring_Framework_integration-Spring_Application_Context_as_a_Seam_Component">
+		<title>Spring Application Context as a Seam Component</title>
+		<para>
+			Although it is possible to use the Spring <literal>ContextLoaderListener</literal> to start your application's Spring ApplicationContext there are a couple of limitations.
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					the Spring ApplicationContext must be started <emphasis>after</emphasis> the <literal>SeamListener</literal>
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					it can be tricky starting a Spring ApplicationContext for use in Seam unit and integration tests
+				</para>
+			</listitem>
+		</itemizedlist>
+		<para>
+			To overcome these two limitations the Spring integration includes a Seam component that will start a Spring ApplicationContext. To use this Seam component place the <literal>&lt;spring:context-loader/&gt;</literal> definition in the <literal>components.xml</literal>. Specify your Spring context file location in the <literal>config-locations</literal> attribute. If more than one config file is needed you can place them in the nested <literal>&lt;spring:config-locations/&gt;</literal> element following standard <literal>components.xml</literal> multi value practices.
+		</para>
+		
+<programlisting>&lt;components xmlns="http://jboss.com/products/seam/components" 
+            xmlns:spring="http://jboss.com/products/seam/spring"
+            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+            xsi:schemaLocation="http://jboss.com/products/seam/components http://jboss.com/products/seam/components-1.2.xsd
+                                http://jboss.com/products/seam/spring http://jboss.com/products/seam/spring-1.2.xsd"&gt;
+
+	&lt;spring:context-loader context-locations="/WEB-INF/applicationContext.xml"/&gt;
+
+&lt;/components&gt;
+</programlisting>
+	</section>
+
+</chapter>
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Testing.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Testing.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Testing.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,257 @@
+<?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" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Seam_Reference_Guide_CP07.ent">
+%BOOK_ENTITIES;
+]>
+<chapter id="Seam_Reference_Guide-Testing_Seam_applications" lang="en-US">
+	<title>Testing Seam applications</title>
+	<para>
+		Most Seam applications will need at least two kinds of automated tests: <emphasis>unit tests</emphasis>, which test a particular Seam component in isolation, and scripted <emphasis>integration tests</emphasis> which exercise all Java layers of the application (that is, everything except the view pages).
+	</para>
+	<para>
+		Both kinds of tests are very easy to write.
+	</para>
+	<section id="Seam_Reference_Guide-Testing_Seam_applications-Unit_testing_Seam_components">
+		<title>Unit testing Seam components</title>
+		<para>
+			All Seam components are POJOs. This is a great place to start if you want easy unit testing. And since Seam emphasises the use of bijection for inter-component interactions and access to contextual objects, it is very easy to test a Seam component outside of its normal runtime environment.
+		</para>
+		<para>
+			Consider the following Seam component:
+		</para>
+		
+<programlisting>@Stateless
+ at Scope(EVENT)
+ at Name("register")
+public class RegisterAction implements Register
+{
+   private User user;
+   private EntityManager em;
+
+   @In
+   public void setUser(User user) {
+       this.user = user;
+   }
+   
+   @PersistenceContext
+   public void setBookingDatabase(EntityManager em) {
+       this.em = em;
+   }
+   
+   public String register()
+   {
+      List existing = em.createQuery("select username from User where username=:username")
+         .setParameter("username", user.getUsername())
+         .getResultList();
+      if (existing.size()==0)
+      {
+         em.persist(user);
+         return "success";
+      }
+      else
+      {
+         return null;
+      }
+   }
+
+}
+</programlisting>
+		<para>
+			We could write a TestNG test for this component as follows:
+		</para>
+		
+<programlisting>public class RegisterActionTest
+{
+
+    @Test
+    public testRegisterAction()
+    {
+        EntityManager em = getEntityManagerFactory().createEntityManager();
+        em.getTransaction().begin();
+        
+        User gavin = new User();
+        gavin.setName("Gavin King");
+        gavin.setUserName("1ovthafew");
+        gavin.setPassword("secret");
+        
+        RegisterAction action = new RegisterAction();
+        action.setUser(gavin);
+        action.setBookingDatabase(em);
+        
+        assert "success".equals( action.register() );
+        
+        em.getTransaction().commit();
+        em.close();
+    }
+    
+    
+    private EntityManagerFactory emf;
+    
+    public EntityManagerFactory getEntityManagerFactory()
+    {
+        return emf;
+    }
+    
+    @Configuration(beforeTestClass=true)
+    public void init() 
+    {
+        emf = Persistence.createEntityManagerFactory("myResourceLocalEntityManager");
+    }
+    
+    @Configuration(afterTestClass=true)
+    public void destroy()
+    {
+        emf.close();
+    }
+    
+}
+</programlisting>
+		<para>
+			Seam components do not usually depend directly upon container infrastructure, allowing for simplistic unit testing.
+		</para>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Testing_Seam_applications-Integration_testing_Seam_applications">
+		<title>Integration testing Seam applications</title>
+		<para>
+			Integration testing is slightly more difficult. In this case, we cannot eliminate the container infrastructure; indeed, that is part of what is being tested! At the same time, we do not want to be forced to deploy our application to an application server to run the automated tests. We need to be able to reproduce just enough of the container infrastructure inside our testing environment to be able to exercise the whole application, without hurting performance too much.
+		</para>
+		<para>
+			A second problem is emulating user interactions. A third problem is where to put our assertions. Some test frameworks let us test the whole application by reproducing user interactions with the web browser. These frameworks have their place, but they are not appropriate for use at development time.
+		</para>
+		<para>
+			The approach taken by Seam is to let you write tests that script your components while running inside a pruned down container environment (Seam, together with the JBoss Embeddable EJB container). The role of the test script is basically to reproduce the interaction between the view and the Seam components. In other words, you get to pretend you are the JSF implementation!
+		</para>
+		<para>
+			This approach tests everything except the view.
+		</para>
+		<para>
+			Let us consider a JSP view for the component we unit tested above:
+		</para>
+		
+<programlisting>&lt;html&gt;
+ &lt;head&gt;
+  &lt;title&gt;Register New User&lt;/title&gt;
+ &lt;/head&gt;
+ &lt;body&gt;
+  &lt;f:view&gt;
+   &lt;h:form&gt;
+     &lt;table border="0"&gt;
+       &lt;tr&gt;
+         &lt;td&gt;Username&lt;/td&gt;
+         &lt;td&gt;&lt;h:inputText value="#{user.username}"/&gt;&lt;/td&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+         &lt;td&gt;Real Name&lt;/td&gt;
+         &lt;td&gt;&lt;h:inputText value="#{user.name}"/&gt;&lt;/td&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+         &lt;td&gt;Password&lt;/td&gt;
+         &lt;td&gt;&lt;h:inputSecret value="#{user.password}"/&gt;&lt;/td&gt;
+       &lt;/tr&gt;
+     &lt;/table&gt;
+     &lt;h:messages/&gt;
+     &lt;h:commandButton type="submit" value="Register" action="#{register.register}"/&gt;
+   &lt;/h:form&gt;
+  &lt;/f:view&gt;
+ &lt;/body&gt;
+&lt;/html&gt;
+</programlisting>
+		<para>
+			We want to test the registration functionality of our application (the stuff that happens when the user clicks the Register button). We will reproduce the JSF request lifecycle in an automated TestNG test:
+		</para>
+		
+<programlisting>public class RegisterTest extends SeamTest
+{
+   
+   @Test
+   public void testRegister() throws Exception
+   {
+            
+      new FacesRequest() {
+
+         @Override
+         protected void processValidations() throws Exception
+         {
+            validateValue("#{user.username}", "1ovthafew");
+            validateValue("#{user.name}", "Gavin King");
+            validateValue("#{user.password}", "secret");
+            assert !isValidationFailure();
+         }
+         
+         @Override
+         protected void updateModelValues() throws Exception
+         {
+            setValue("#{user.username}", "1ovthafew");
+            setValue("#{user.name}", "Gavin King");
+            setValue("#{user.password}", "secret");
+         }
+
+         @Override
+         protected void invokeApplication()
+         {
+            assert invokeMethod("#{register.register}").equals("success");
+         }
+
+         @Override
+         protected void renderResponse()
+         {
+            assert getValue("#{user.username}").equals("1ovthafew");
+            assert getValue("#{user.name}").equals("Gavin King");
+            assert getValue("#{user.password}").equals("secret");
+         }
+         
+      }.run();
+      
+   }
+
+   ...
+   
+}
+</programlisting>
+		<para>
+			Notice that we have extended <literal>SeamTest</literal>, which provides a Seam environment for our components, and written our test script as an anonymous class that extends <literal>SeamTest.FacesRequest</literal>, which provides an emulated JSF request lifecycle. (There is also a <literal>SeamTest.NonFacesRequest</literal> for testing GET requests.) We have written our code in methods which are named for the various JSF phases, to emulate the calls that JSF would make to our components. Then we have thrown in various assertions.
+		</para>
+		<para>
+			You will find plenty of integration tests for the Seam example applications which demonstrate more complex cases. There are instructions for running these tests using Ant, or using the TestNG plugin for eclipse:
+		</para>
+		<mediaobject>
+			<imageobject role="fo">
+				<imagedata align="center" fileref="images/plugin-testng.png" format="PNG" width="444" />
+			</imageobject>
+			<!-- 	<imageobject role="html">
+				<imagedata align="center" fileref="../shared/images/plugin-testng.png" />
+			</imageobject>  -->
+		</mediaobject>
+		<section id="Seam_Reference_Guide-Integration_testing_Seam_applications-Using_mocks_in_integration_tests">
+			<title>Using mocks in integration tests</title>
+			<para>
+				Occasionally, we need to be able to replace the implementation of some Seam component that depends upon resources which are not available in the integration test environment. For example, suppose we have some Seam component which is a facade to some payment processing system:
+			</para>
+			
+<programlisting>@Name("paymentProcessor")
+public class PaymentProcessor {
+    public boolean processPayment(Payment payment) { .... }
+}
+</programlisting>
+			<para>
+				For integration tests, we can mock out this component as follows:
+			</para>
+			
+<programlisting>@Name("paymentProcessor")
+ at Install(precedence=MOCK)
+public class MockPaymentProcessor extends PaymentProcessor {
+    public void processPayment(Payment payment) {
+        return true;
+    }
+}
+</programlisting>
+			<para>
+				Since the <literal>MOCK</literal> precedence is higher than the default precedence of application components, Seam will install the mock implementation whenever it is in the classpath. When deployed into production, the mock implementation is absent, so the real component will be installed.
+			</para>
+		</section>
+
+	</section>
+
+</chapter>
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Text.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Text.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Text.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,208 @@
+<?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" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Seam_Reference_Guide_CP07.ent">
+%BOOK_ENTITIES;
+]>
+<chapter id="Seam_Reference_Guide-Seam_Text" lang="en-US">
+	<title>Seam Text</title>
+	<para>
+		Collaboration-oriented websites require a human-friendly markup language for easy entry of formatted text in forum posts, wiki pages, blogs, comments, etc. Seam provides the <literal>&lt;s:formattedText/&gt;</literal> control for display of formatted text that conforms to the <emphasis>Seam Text</emphasis> language. Seam Text is implemented using an ANTLR-based parser. You do not need to know anything about ANTLR to use it, however.
+	</para>
+	<section id="Seam_Reference_Guide-Seam_Text-Basic_fomatting">
+		<title>Basic fomatting</title>
+		<para>
+			Here is a simple example:
+		</para>
+		
+<programlisting>It's easy to make *bold text*, /italic text/, |monospace|, 
+~deleted text~, super^scripts^ or _underlines_.
+</programlisting>
+		<para>
+			If we display this using <literal>&lt;s:formattedText/&gt;</literal>, we will get the following HTML produced:
+		</para>
+		
+<programlisting>&lt;p&gt;
+It's easy to make &lt;b&gt;bold text&lt;/b&gt;, &lt;i&gt;italic text&lt;/i&gt;, &lt;tt&gt;monospace&lt;/tt&gt;
+&lt;del&gt;deleted text&lt;/del&gt;, super&lt;sup&gt;scripts&lt;/sup&gt; or &lt;u&gt;underlines&lt;/u&gt;.
+&lt;/p&gt;
+</programlisting>
+		<para>
+			We can use a blank line to indicate a new paragraph, and <literal>+</literal> to indicate a heading:
+		</para>
+		
+<programlisting>+This is a big heading
+You /must/ have some text following a heading!
+ 
+++This is a smaller heading
+This is the first paragraph. We can split it across multiple 
+lines, but we must end it with a blank line.
+
+This is the second paragraph.
+</programlisting>
+		<para>
+			A simple newline is ignored, you need an additional blank line to wrap text into a new paragraph. This is the HTML that results:
+		</para>
+		
+<programlisting>&lt;h1&gt;This is a big heading&lt;/h1&gt;
+&lt;p&gt;
+You &lt;i&gt;must&lt;/i&gt; have some text following a heading!
+&lt;/p&gt;
+ 
+&lt;h2&gt;This is a smaller heading&lt;/h2&gt;
+&lt;p&gt;
+This is the first paragraph. We can split it across multiple 
+lines, but we must end it with a blank line.
+&lt;/p&gt;
+
+&lt;p&gt;
+This is the second paragraph.
+&lt;/p&gt;
+</programlisting>
+		<para>
+			Ordered lists are created using the <literal>#</literal> character. Unordered lists use the <literal>=</literal> character:
+		</para>
+		
+<programlisting>An ordered list:
+        
+#first item
+#second item
+#and even the /third/ item
+
+An unordered list:
+
+=an item
+=another item
+</programlisting>
+		
+<programlisting>&lt;p&gt;
+An ordered list:
+&lt;/p&gt;
+ 
+&lt;ol&gt;       
+&lt;li&gt;first item&lt;/li&gt;
+&lt;li&gt;second item&lt;/li&gt;
+&lt;li&gt;and even the &lt;i&gt;third&lt;/i&gt; item&lt;/li&gt;
+&lt;/ol&gt;
+
+&lt;p&gt;
+An unordered list:
+&lt;/p&gt;
+
+&lt;ul&gt;
+&lt;li&gt;an item&lt;/li&gt;
+&lt;li&gt;another item&lt;/li&gt;
+&lt;/ul&gt;
+</programlisting>
+		<para>
+			Quoted sections should be surrounded in double quotes:
+		</para>
+		
+<programlisting>The other guy said:
+        
+"Nyeah nyeah-nee 
+/nyeah/ nyeah!"
+
+But what do you think he means by "nyeah-nee"?
+</programlisting>
+		
+<programlisting>&lt;p&gt;
+The other guy said:
+&lt;/p&gt;
+        
+&lt;q&gt;Nyeah nyeah-nee
+&lt;i&gt;nyeah&lt;/i&gt; nyeah!&lt;/q&gt;
+
+&lt;p&gt;
+But what do you think he means by &lt;q&gt;nyeah-nee&lt;/q&gt;?
+&lt;/p&gt;
+</programlisting>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_Text-Entering_code_and_text_with_special_characters">
+		<title>Entering code and text with special characters</title>
+		<para>
+			Special characters such as <literal>*</literal>, <literal>|</literal> and <literal>#</literal>, along with HTML characters such as <literal>&lt;</literal>, <literal>&gt;</literal> and <literal>&amp;</literal> may be escaped using <literal>\</literal>:
+		</para>
+		
+<programlisting>You can write down equations like 2\*3\=6 and HTML tags
+like \&lt;body\&gt; using the escape character: \\.
+</programlisting>
+		
+<programlisting>&lt;p&gt;
+You can write down equations like 2*3=6 and HTML tags
+like &lt;body&gt; using the escape character: \.
+&lt;/p&gt;
+</programlisting>
+		<para>
+			And we can quote code blocks using backticks:
+		</para>
+		
+<programlisting>My code doesn't work:
+
+`for (int i=0; i&lt;100; i--)
+{
+    doSomething();
+}`
+
+Any ideas?
+</programlisting>
+		
+<programlisting>&lt;p&gt;
+My code doesn't work:
+&lt;/p&gt;
+
+&lt;pre&gt;for (int i=0; i&lt;100; i--)
+{
+    doSomething();
+}&lt;/pre&gt;
+
+&lt;p&gt;
+Any ideas?
+&lt;/p&gt;
+</programlisting>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_Text-Links">
+		<title>Links</title>
+		<para>
+			A link may be created using the following syntax:
+		</para>
+		
+<programlisting>Go to the Seam website at [=&gt;http://jboss.com/products/seam].
+</programlisting>
+		<para>
+			Or, if you want to specify the text of the link:
+		</para>
+		
+<programlisting>Go to [the Seam website=&gt;http://jboss.com/products/seam].
+</programlisting>
+		<para>
+			For advanced users, it is even possible to customize the Seam Text parser to understand wikiword links written using this syntax.
+		</para>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_Text-Entering_HTML">
+		<title>Entering HTML</title>
+		<para>
+			Text may even include a certain limited subset of HTML (the subset is chosen to be safe from cross-site scripting attacks). This is useful for creating links:
+		</para>
+		
+<programlisting>You might want to link to &lt;a href="http://jboss.com/products/seam"&gt;something
+cool&lt;/a&gt;, or even include an image: &lt;img src="/logo.jpg"/&gt;
+</programlisting>
+		<para>
+			And for creating tables:
+		</para>
+		
+<programlisting>&lt;table&gt;
+    &lt;tr&gt;&lt;td&gt;First name:&lt;/td&gt;&lt;td&gt;Gavin&lt;/td&gt;&lt;/tr&gt;
+    &lt;tr&gt;&lt;td&gt;Last name:&lt;/td&gt;&lt;td&gt;King&lt;/td&gt;&lt;/tr&gt;
+&lt;/table&gt;
+</programlisting>
+		<para>
+			There is much more that can be achieved if you wish.
+		</para>
+	</section>
+
+</chapter>
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Tools.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Tools.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Tools.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,588 @@
+<?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" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Seam_Reference_Guide_CP07.ent">
+%BOOK_ENTITIES;
+]>
+<chapter id="Seam_Reference_Guide-Seam_tools" lang="en-US">
+	<title>Seam tools</title>
+	<section id="Seam_Reference_Guide-Seam_tools-jBPM_designer_and_viewer">
+		<title>jBPM designer and viewer</title>
+		<para>
+			The jBPM designer and viewer will let you design and view in a nice way your business processes and your pageflows. This convenient tool is part of the JBoss Developer Studio and more details can be found in the jBPM's documentation (http://docs.jboss.com/jbpm/v3/gpd/)
+		</para>
+		<section id="Seam_Reference_Guide-jBPM_designer_and_viewer-Business_process_designer">
+			<title>Business process designer</title>
+			<para>
+				This tool lets you design your own business process in a graphical way.
+			</para>
+			<screenshot><screeninfo>Business process designer</screeninfo>
+			<mediaobject>
+				<imageobject role="fo">
+					<imagedata align="center" fileref="images/bpmd.png" format="PNG" width="444" />
+				</imageobject>
+				<!-- 	<imageobject role="html">
+					<imagedata align="center" fileref="../shared/images/bpmd.png" />
+				</imageobject>  -->
+			</mediaobject>
+			</screenshot>
+		</section>
+		
+		<section id="Seam_Reference_Guide-jBPM_designer_and_viewer-Pageflow_viewer">
+			<title>Pageflow viewer</title>
+			<para>
+				This tool will let you design to some extend your pageflows and let you build graphical views of them so you can easily share and compare ideas on how it should be designed.
+			</para>
+			<screenshot><screeninfo>Business process designer</screeninfo>
+			<mediaobject>
+				<imageobject role="fo">
+					<imagedata align="center" fileref="images/bpmpfv.png" format="PNG" width="444" />
+				</imageobject>
+				<!-- 	<imageobject role="html">
+					<imagedata align="center" fileref="../shared/images/bpmpfv.png" />
+				</imageobject>  -->
+			</mediaobject>
+			</screenshot>
+		</section>
+
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_tools-CRUD_application_generator">
+		<title>CRUD-application generator</title>
+		<para>
+			This chapter, will give you a short overview of the support for Seam that is available in the Hibernate Tools. Hibernate Tools is a set of tools for working with Hibernate and related technologies, such as JBoss Seam and EJB3. The tools are available as a set of eclipse plugins and Ant tasks. You can download the Hibernate Tools from the JBoss Tools or Hibernate Tools websites.
+		</para>
+		<para>
+			The specific support for Seam that is currently available is generation of a fully functional Seam based CRUD-application. The CRUD-application can be generated based on your existing Hibernate mapping files or EJB3 annotated POJO's or even fully reverse engineered from your existing database schema.
+		</para>
+		<para>
+			The following sections is focused on the features required to understand for usage with Seam. The content is derived from the the Hibernate Tools reference documentation. Thus if you need more detailed information please refer to the Hibernate Tools documentation.
+		</para>
+		<section id="Seam_Reference_Guide-CRUD_application_generator-Creating_a_Hibernate_configuration_file">
+			<title>Creating a Hibernate configuration file</title>
+			<para>
+				To be able to reverse engineer and generate code a hibernate.properties or <filename>hibernate.cfg.xml</filename> file is needed. The Hibernate Tools provide a wizard for generating the <filename>hibernate.cfg.xml</filename> file if you do not already have such file.
+			</para>
+			<para>
+				Start the wizard by clicking <literal>New Wizard</literal> (Ctrl+N), select the Hibernate/Hibernate Configuration file (cfg.xml) wizard and press <literal>Next</literal>. After selecting the wanted location for the <filename>hibernate.cfg.xml</filename> file, you will see the following page:
+			</para>
+			<mediaobject>
+				<imageobject role="fo">
+					<imagedata contentwidth="5cm" fileref="images/hibernatecfgwizard.png" format="PNG" width="444" />
+				</imageobject>
+				<!-- 	<imageobject role="html">
+					<imagedata align="center" fileref="../shared/images/hibernatecfgwizard.png"  />
+				</imageobject>  -->
+			</mediaobject>
+			<para>
+				Tip: The contents in the combo boxes for the JDBC driver class and JDBC URL change automatically, depending on the Dialect and actual driver you have chosen.
+			</para>
+			<para>
+				Enter your configuration information in this dialog. Details about the configuration options can be found in Hibernate reference documentation.
+			</para>
+			<para>
+				Press <literal>Finish</literal> to create the configuration file, after optionally creating a Console onfiguration, the <filename>hibernate.cfg.xml</filename> will be automatically opened in an editor. The last option <literal>Create Console Configuration</literal> is enabled by default and when enabled i will automatically use the <filename>hibernate.cfg.xml</filename> for the basis of a <literal>Console Configuration</literal>.
+			</para>
+		</section>
+		
+		<section id="Seam_Reference_Guide-CRUD_application_generator-Creating_a_Hibernate_Console_configuration">
+			<title>Creating a Hibernate Console configuration</title>
+			<para>
+				A Console Configuration describes to the Hibernate plugin which configuration files should be used to configure hibernate, including which classpath is needed to load the POJO's, JDBC drivers etc. It is required to make usage of query prototyping, reverse engineering and code generation. You can have multiple named console configurations. Normally you would just need one per project, but more (or less) is definitly possible.
+			</para>
+			<para>
+				You create a console configuration by running the Console Configuration wizard, shown in the following screenshot. The same wizard will also be used if you are coming from the <filename>hibernate.cfg.xml</filename> wizard and had enabled <literal>Create Console Configuration</literal>.
+			</para>
+			<mediaobject id="Seam_Reference_Guide-Creating_a_Hibernate_Console_configuration-Creating_a_Hibernate_Console_configuration">
+				<imageobject role="fo">
+					<imagedata fileref="images/consolecfgwizard.png" format="PNG" width="444" />
+				</imageobject>
+				<!-- 	<imageobject role="html">
+					<imagedata align="center" fileref="../shared/images/consolecfgwizard.png"  />
+				</imageobject>  --><caption>Creating a Hibernate Console configuration</caption>
+			</mediaobject>
+			<para>
+				The following table describes the relevant settings. The wizard can automatically detect default values for most of these if you started the Wizard with the relevant java project selected
+			</para>
+			<table id="Seam_Reference_Guide-Creating_a_Hibernate_Console_configuration-Hibernate_Console_Configuration_Parameters">
+				<title>Hibernate Console Configuration Parameters</title>
+				<tgroup cols="3">
+					<colspec colnum="1" colwidth="1*"></colspec>
+					<colspec colnum="2" colwidth="3*"></colspec>
+					<colspec colnum="3" colwidth="1*"></colspec>
+					<thead>
+						<row>
+							<entry align="center">
+								<para>
+									Parameter
+								</para>
+							</entry>
+							<entry align="center">
+								<para>
+									Description
+								</para>
+							</entry>
+							<entry align="center">
+								<para>
+									Auto detected value
+								</para>
+							</entry>
+						</row>
+					</thead>
+					<tbody>
+						<row>
+							<entry>
+								<para>
+									Name
+								</para>
+							</entry>
+							<entry>
+								<para>
+									The unique name of the configuration
+								</para>
+							</entry>
+							<entry>
+								<para>
+									Name of the selected project
+								</para>
+							</entry>
+						</row>
+						<row>
+							<entry>
+								<para>
+									Property file
+								</para>
+							</entry>
+							<entry>
+								<para>
+									Path to a hibernate.properties file
+								</para>
+							</entry>
+							<entry>
+								<para>
+									First hibernate.properties file found in the selected project
+								</para>
+							</entry>
+						</row>
+						<row>
+							<entry>
+								<para>
+									Configuration file
+								</para>
+							</entry>
+							<entry>
+								<para>
+									Path to a hibernate.cfg.xml file
+								</para>
+							</entry>
+							<entry>
+								<para>
+									First hibernate.cfg.xml file found in the selected project
+								</para>
+							</entry>
+						</row>
+						<row>
+							<entry>
+								<para>
+									Enable Hibernate ejb3/annotations
+								</para>
+							</entry>
+							<entry>
+								<para>
+									Selecting this option enables usage of annotated classes. <filename>hbm.xml</filename> files are of course still possible to use too. This feature requires running the Eclipse IDE with a JDK 5 runtime, otherwise you will get classloading and/or version errors.
+								</para>
+							</entry>
+							<entry>
+								<para>
+									Not enabled
+								</para>
+							</entry>
+						</row>
+						<row>
+							<entry>
+								<para>
+									Mapping files
+								</para>
+							</entry>
+							<entry>
+								<para>
+									List of additional mapping files that should be loaded. Since a <filename>hibernate.cfg.xml</filename> can also contain mappings, if these a duplicated here, you will get <errorname>Duplicate mapping</errorname> errors when using the console configuration.
+								</para>
+							</entry>
+							<entry>
+								<para>
+									If no <filename>hibernate.cfg.xml</filename> file is found, all hbm.xml files found in the selected project
+								</para>
+							</entry>
+						</row>
+						<row>
+							<entry>
+								<para>
+									Classpath
+								</para>
+							</entry>
+							<entry>
+								<para>
+									The classpath for loading POJO and JDBC drivers. Do not add Hibernate core libraries or dependencies, they are already included. If you get ClassNotFound errors then check this list for possible missing or redundant directories/jars.
+								</para>
+							</entry>
+							<entry>
+								<para>
+									The default build output directory and any JARs with a class implementing java.sql.Driver in the selected project
+								</para>
+							</entry>
+						</row>
+					</tbody>
+				</tgroup>
+			</table>
+			<para>
+				Clicking <literal>Finish</literal> creates the configuration and shows it in the <literal>Hibernate Configurations</literal> view
+			</para>
+			<mediaobject id="Seam_Reference_Guide-Creating_a_Hibernate_Console_configuration-Console_overview">
+				<imageobject role="fo">
+					<imagedata align="center" fileref="images/consoleoutline-before-reveng.png" format="PNG" />
+				</imageobject>
+				<!-- 	<imageobject role="html">
+					<imagedata align="center" fileref="../shared/images/consoleoutline-before-reveng.png"  />
+				</imageobject>  --><caption>Console overview</caption>
+			</mediaobject>
+		</section>
+		
+		<section id="Seam_Reference_Guide-CRUD_application_generator-Reverse_engineering_and_code_generation">
+			<title>Reverse engineering and code generation</title>
+			<para>
+				A very simple <emphasis>click-and-generate</emphasis> reverse engineering and code generation facility is available. It is this facility that allows you to generate the skeleton for a full Seam CRUD application.
+			</para>
+			<para>
+				To start working with this process, start the <literal>Hibernate Code Generation</literal> which is available in the toolbar via the Hibernate icon or via the <literal>Run/Hibernate Code Generation</literal> menu item.
+			</para>
+			<section id="Seam_Reference_Guide-Reverse_engineering_and_code_generation-Code_Generation_Launcher">
+				<title>Code Generation Launcher</title>
+				<para>
+					When you click on <literal>Hibernate Code Generation</literal> the standard Eclipse launcher dialog will appear. In this dialog you can create, edit and delete named Hibernate code generation <emphasis>launchers</emphasis>.
+				</para>
+				<mediaobject>
+					<imageobject role="fo">
+						<imagedata fileref="images/codegendropdown.png" format="PNG" />
+					</imageobject>
+					<!-- 	<imageobject role="html">
+						<imagedata align="center" fileref="../shared/images/codegendropdown.png"  />
+					</imageobject>  -->
+				</mediaobject>
+				<para>
+					The dialog has the standard tabs <literal>Refresh</literal> and <literal>Common</literal> that can be used to configure which directories should be automatically refreshed and various general settings launchers, such as saving them in a project for sharing the launcher within a team.
+				</para>
+				<mediaobject>
+					<imageobject role="fo">
+						<imagedata fileref="images/codegenmaintab.png" format="PNG" width="444" />
+					</imageobject>
+					<!-- 	<imageobject role="html">
+						<imagedata align="center" fileref="../shared/images/codegenmaintab.png"  />
+					</imageobject>  -->
+				</mediaobject>
+				<para>
+					The first time you create a code generation launcher you should give it a meaningfull name, otherwise the default prefix <literal>New_Generation</literal> will be used.
+				</para>
+				<note>
+					<para>
+						he <literal>At least one exporter option must be selected</literal> is just a warning stating that for this launch to work you need to select an exporter on the Exporter tab. When an exporter has been selected the warning will disappear.
+					</para>
+				</note>
+				<para>
+					On the <literal>Main</literal> tab you the following fields:
+				</para>
+				<table id="Seam_Reference_Guide-Code_Generation_Launcher-Code_generation_Main_tab_fields">
+					<title>Code generation "Main" tab fields</title>
+					<tgroup cols="2">
+						<colspec colnum="1" colwidth="1*"></colspec>
+						<colspec colnum="2" colwidth="3*"></colspec>
+						<colspec colnum="3" colwidth="0.5*"></colspec>
+						<thead>
+							<row>
+								<entry align="center">
+									<para>
+										Field
+									</para>
+								</entry>
+								<entry align="center">
+									<para>
+										Description
+									</para>
+								</entry>
+							</row>
+						</thead>
+						<tbody>
+							<row>
+								<entry>
+									<para>
+										Console Configuration
+									</para>
+								</entry>
+								<entry>
+									<para>
+										The name of the console configuration which should be used when code generating.
+									</para>
+								</entry>
+							</row>
+							<row>
+								<entry>
+									<para>
+										Output directory
+									</para>
+								</entry>
+								<entry>
+									<para>
+										Path to a directory into where all output will be written by default. Be aware that existing files will be overwritten, so be sure to specify the correct directory.
+									</para>
+								</entry>
+							</row>
+							<row>
+								<entry>
+									<para>
+										Reverse engineer from JDBC Connection
+									</para>
+								</entry>
+								<entry>
+									<para>
+										If enabled the tools will reverse engineer the database available via the connection information in the selected Hibernate Console Configuration and generate code based on the database schema. If not enabled the code generation will just be based on the mappings already specified in the Hibernate Console configuration.
+									</para>
+								</entry>
+							</row>
+							<row>
+								<entry>
+									<para>
+										Package
+									</para>
+								</entry>
+								<entry>
+									<para>
+										The package name here is used as the default package name for any entities found when reverse engineering.
+									</para>
+								</entry>
+							</row>
+							<row>
+								<entry>
+									<para>
+										reveng.xml
+									</para>
+								</entry>
+								<entry>
+									<para>
+										Path to a reveng.xml file. A reveng.xml file allows you to control certain aspects of the reverse engineering. For example, how jdbc types are mapped to hibernate types and especially important which tables are included/excluded from the process. Clicking "setup" allows you to select an existing reveng.xml file or create a new one..
+									</para>
+								</entry>
+							</row>
+							<row>
+								<entry>
+									<para>
+										reveng. strategy
+									</para>
+								</entry>
+								<entry>
+									<para>
+										If <filename>reveng.xml</filename> does not provide enough customization you can provide your own implementation of an ReverseEngineeringStrategy. The class need to be in the claspath of the Console Configuration, otherwise you will get class not found exceptions.
+									</para>
+								</entry>
+							</row>
+							<row>
+								<entry>
+									<para>
+										Generate basic typed composite ids
+									</para>
+								</entry>
+								<entry>
+									<para>
+										This field should always be enabled when generating the Seam CRUD application. For a table that has a multi-colum primary key, a &lt;composite-id&gt; mapping will always be created. If this option is enabled and there are matching foreign-keys, each key column is still considered a basic scalar (string, long, etc.) instead of a reference to an entity. If you disable this option, a &lt;key-many-to-one&gt; mapping with be generated instead. Note: a &lt;many-to-one&gt; property is still created, but is simply marked as non-updatable and non-insertable.
+									</para>
+								</entry>
+							</row>
+							<row>
+								<entry>
+									<para>
+										Use custom templates
+									</para>
+								</entry>
+								<entry>
+									<para>
+										If enabled, the Template directory will be searched first when looking up the velocity templates, allowing you to redefine how the individual templates process the hibernate mapping model.
+									</para>
+								</entry>
+							</row>
+							<row>
+								<entry>
+									<para>
+										Template directory
+									</para>
+								</entry>
+								<entry>
+									<para>
+										A path to a directory with custom velocity templates.
+									</para>
+								</entry>
+							</row>
+						</tbody>
+					</tgroup>
+				</table>
+			</section>
+			
+			<section id="Seam_Reference_Guide-Reverse_engineering_and_code_generation-Exporters">
+				<title>Exporters</title>
+				<para>
+					The exporters tab is used to specify which type of code that should be generated. Each selection represents an <literal>Exporter</literal> that is responsible for generating the code, hence the name.
+				</para>
+				<mediaobject>
+					<imageobject role="fo">
+						<imagedata fileref="images/codegenselectseam.png" format="PNG" width="444" />
+					</imageobject>
+					<!-- 	<imageobject role="html">
+						<imagedata align="center" fileref="../shared/images/codegenselectseam.png"  />
+					</imageobject>  -->
+				</mediaobject>
+				<para>
+					The following table describes in short the various exporters. The most relevant for Seam is the <literal>JBoss Seam Skeleton</literal> application.
+				</para>
+				<table id="Seam_Reference_Guide-Exporters-Code_generation_Exporter_tab_fields">
+					<title>Code generation <literal>Exporter</literal> tab fields</title>
+					<tgroup cols="2">
+						<colspec colnum="1" colwidth="1*"></colspec>
+						<colspec colnum="2" colwidth="3*"></colspec>
+						<colspec colnum="3" colwidth="0.5*"></colspec>
+						<thead>
+							<row>
+								<entry align="center">
+									<para>
+										Field
+									</para>
+								</entry>
+								<entry align="center">
+									<para>
+										Description
+									</para>
+								</entry>
+							</row>
+						</thead>
+						<tbody>
+							<row>
+								<entry>
+									<para>
+										Generate domain code
+									</para>
+								</entry>
+								<entry>
+									<para>
+										Generates POJO's for all the persistent classes and components found in the given Hibernate configuration.
+									</para>
+								</entry>
+							</row>
+							<row>
+								<entry>
+									<para>
+										JDK 1.5 constructs
+									</para>
+								</entry>
+								<entry>
+									<para>
+										When enabled the POJO's will use JDK 1.5 constructs.
+									</para>
+								</entry>
+							</row>
+							<row>
+								<entry>
+									<para>
+										EJB3/JSR-220 annotations
+									</para>
+								</entry>
+								<entry>
+									<para>
+										When enabled the POJO's will be annotated according to the EJB3/JSR-220 persistency specification.
+									</para>
+								</entry>
+							</row>
+							<row>
+								<entry>
+									<para>
+										Generate DAO code
+									</para>
+								</entry>
+								<entry>
+									<para>
+										Generates a set of DAO's for each entity found.
+									</para>
+								</entry>
+							</row>
+							<row>
+								<entry>
+									<para>
+										Generate Mappings
+									</para>
+								</entry>
+								<entry>
+									<para>
+										Generate mapping (hbm.xml) files for each entity
+									</para>
+								</entry>
+							</row>
+							<row>
+								<entry>
+									<para>
+										Generate hibernate configuration file
+									</para>
+								</entry>
+								<entry>
+									<para>
+										Generate a <filename>hibernate.cfg.xml</filename> file. Used to keep the hibernate.cfg.xml uptodate with any new found mapping files.
+									</para>
+								</entry>
+							</row>
+							<row>
+								<entry>
+									<para>
+										Generate schema html-documentation
+									</para>
+								</entry>
+								<entry>
+									<para>
+										Generates set of html pages that documents the database schema and some of the mappings.
+									</para>
+								</entry>
+							</row>
+							<row>
+								<entry>
+									<para>
+										Generate JBoss Seam skeleton app (beta)
+									</para>
+								</entry>
+								<entry>
+									<para>
+										Generates a complete JBoss Seam skeleton app. The generation will include annotated POJO's, Seam controller beans and a JSP for the presentation layer. See the generated readme.txt for how to use it.
+									</para>
+									<note>
+										<para>
+											This exporter generates a full application, including a <filename>build.xml</filename> thus you will get the best results if you use an output directory which is the root of your project.
+										</para>
+									</note>
+								</entry>
+							</row>
+						</tbody>
+					</tgroup>
+				</table>
+			</section>
+			
+			<section id="Seam_Reference_Guide-Reverse_engineering_and_code_generation-Generating_and_using_the_code">
+				<title>Generating and using the code</title>
+				<para>
+					When you have finished filling out the settings, simply press <literal>Run</literal> to start the generation of code. This might take a little while if you are reverse engineering from a database.
+				</para>
+				<para>
+					When the generation have finished you should now have a complete skeleton Seam application in the output directory. In the output directory there is a <filename>readme.txt</filename> file describing the steps needed to deploy and run the example.
+				</para>
+				<para>
+					If you want to regenerate/update the skeleton code then simply run the code generation again by selecting the <literal>Hibernate Code Generation</literal> in the toolbar or <literal>Run</literal> menu. Enjoy.
+				</para>
+			</section>
+
+		</section>
+
+	</section>
+
+</chapter>
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Tutorial.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Tutorial.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Tutorial.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2651 @@
+<?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" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Seam_Reference_Guide_CP07.ent">
+%BOOK_ENTITIES;
+]>
+<chapter id="Seam_Reference_Guide-Seam_Tutorial" lang="en-US">
+	<title>Seam Tutorial</title>
+	<section id="Seam_Reference_Guide-Seam_Tutorial-Try_the_examples">
+		<title>Try the examples</title>
+		<para>
+			In this tutorial, we will assume that you are using the JBoss Enterprise Application Platform with Seam.
+		</para>
+		<para>
+			The directory structure of each example in Seam follows this pattern:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					Web pages, images and stylesheets may be found in <filename>examples/<replaceable>registration</replaceable>/view</filename>
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					Resources such as deployment descriptors and data import scripts may be found in <filename>examples/<replaceable>registration</replaceable>/resources</filename>
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					Java source code may be found in <filename>examples/<replaceable>registration</replaceable>/src</filename>
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					The Ant build script is <filename>examples/<replaceable>registration</replaceable>/build.xml</filename>
+				</para>
+			</listitem>
+		</itemizedlist>
+		<section id="Seam_Reference_Guide-Try_the_examples-Running_the_examples_on_JBoss_AS">
+			<title>Running the examples on JBoss Enterprise Application Platform</title>
+			<para>
+				First, make sure you have Ant correctly installed, with <literal>$ANT_HOME</literal> and <literal>$JAVA_HOME</literal> set correctly. Next, make sure you set the location of your JBoss AS installation in the <literal>build.properties</literal> file in the root folder of your Seam installation. If you haven't already done so, start JBoss AS now by typing <literal>bin/run.sh</literal> or <literal>bin/run.bat</literal> in the root directory of your JBoss installation.
+			</para>
+			<para>
+				By default the examples will deploy to the default configuration of the server. These examples should be deployed to the production configuration if they are to be used with JBoss Enterprise Application Platform, and the example <literal>build.xml</literal> file should be modified to reflect this before building and deploying. Two lines should be changed in this file:
+			</para>
+			
+<screen> &lt;property name="deploy.dir"           value="${jboss.home}/server/production/deploy"/&gt;
+</screen>
+			
+<screen>   &lt;property name="webroot.dir"         
+	value="${deploy.dir}/jboss-web.deployer/ROOT.war"/&gt;
+</screen>
+			<para>
+				Now, build and deploy the example by typing <literal>ant deploy</literal> in the <filename>examples/<replaceable>registration</replaceable></filename> directory.
+			</para>
+			<para>
+				Try it out by accessing <ulink url="http://localhost:8080/seam-registration/"><literal>http://localhost:8080/seam-registration/</literal></ulink> with your web browser.
+			</para>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Try_the_examples-Running_the_examples_on_Tomcat">
+			<title>Running the examples on Tomcat</title>
+			<para>
+				First, make sure you have Ant correctly installed, with <literal>$ANT_HOME</literal> and <literal>$JAVA_HOME</literal> set correctly. Next, make sure you set the location of your Tomcat installation in the <literal>build.properties</literal> file in the root folder of your Seam installation.
+			</para>
+			<para>
+				Now, build and deploy the example by typing <literal>ant deploy.tomcat</literal> in the <filename>examples/<replaceable>registration</replaceable></filename> directory.
+			</para>
+			<para>
+				Finally, start Tomcat.
+			</para>
+			<para>
+				Try it out by accessing <ulink url="http://localhost:8080/jboss-seam-registration/"><literal>http://localhost:8080/jboss-seam-registration/</literal></ulink> with your web browser.
+			</para>
+			<para>
+				When you deploy the example to Tomcat, any EJB3 components will run inside the JBoss Embeddable EJB3 container, a complete standalone EJB3 container environment.
+			</para>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Try_the_examples-Running_the_example_tests">
+			<title>Running the example tests</title>
+			<para>
+				Most of the examples come with a suite of TestNG integration tests. The easiest way to run the tests is to run <literal>ant testexample</literal> inside the <filename>examples/<replaceable>registration</replaceable></filename> directory. It is also possible to run the tests inside your IDE using the TestNG plugin.
+			</para>
+		</section>
+
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_Tutorial-Your_first_Seam_application_the_registration_example">
+		<title>Your first Seam application: the registration example</title>
+		<para>
+			The registration example is a fairly trivial application that lets a new user store his username, real name and password in the database. The example is not intended to show off all of the cool functionality of Seam. However, it demonstrates the use of an EJB3 session bean as a JSF action listener, and basic configuration of Seam.
+		</para>
+		<para>
+			We will go slowly, since we realize you might not yet be familiar with EJB 3.0.
+		</para>
+		<para>
+			The start page displays a very basic form with three input fields. Try filling them in and then submitting the form. This will save a user object in the database.
+		</para>
+		<mediaobject>
+			<imageobject role="fo">
+				<imagedata align="center" fileref="images/registration.png" format="PNG" width="444" />
+			</imageobject>
+			<!-- 	<imageobject role="html">
+				<imagedata align="center" fileref="../shared/images/registration.png" />
+			</imageobject>  -->
+		</mediaobject>
+		<section id="Seam_Reference_Guide-Your_first_Seam_application_the_registration_example-Understanding_the_code">
+			<title>Understanding the code</title>
+			<para>
+				The example is implemented with two JSP pages, one entity bean and one stateless session bean.
+			</para>
+			<mediaobject>
+				<imageobject role="fo">
+					<imagedata align="center" fileref="images/register.png" format="PNG" />
+				</imageobject>
+				<!-- 	<imageobject role="html">
+					<imagedata align="center" fileref="../shared/images/register.png" />
+				</imageobject>  -->
+			</mediaobject>
+			<para>
+				Let us take a look at the code, starting from the bottom.
+			</para>
+			<section id="Seam_Reference_Guide-Understanding_the_code-The_entity_bean_User.java">
+				<title>The entity bean: <literal>User.java</literal></title>
+				<para>
+					We need an EJB entity bean for user data. This class defines <emphasis>persistence</emphasis> and <emphasis>validation</emphasis> declaratively, via annotations. It also needs some extra annotations that define the class as a Seam component.
+				</para>
+				<!-- 	<example><title></title>  --><!-- 		<programlistingco>
+					<areaspec>
+						<area coords="1" id="registration-entity-annotation" />
+						<area coords="2" id="registration-name-annotation" />
+						<area coords="3" id="registration-scope-annotation" />
+						<area coords="4" id="registration-table-annotation" />
+						<area coords="9" id="registration-attributes" />
+						<area coords="20" id="registration-empty-constructor" />
+						<area coords="22" id="registration-notnull" />
+						<area coords="44" id="registration-id-annotation" />
+					</areaspec>  -->
+<programlisting>@Entity
+ at Name("user")
+ at Scope(SESSION)
+ at Table(name="users")
+public class User implements Serializable
+{
+   private static final long serialVersionUID = 1881413500711441951L;
+   
+   private String username;
+   private String password;
+   private String name;
+   
+   public User(String name, String password, String username)
+   {
+      this.name = name;
+      this.password = password;
+      this.username = username;
+   }
+   
+   public User() {}
+   
+   @NotNull @Length(min=5, max=15)
+   public String getPassword()
+   {
+      return password;
+   }
+
+   public void setPassword(String password)
+   {
+      this.password = password;
+   }
+   
+   @NotNull
+   public String getName()
+   {
+      return name;
+   }
+
+   public void setName(String name)
+   {
+      this.name = name;
+   }
+   
+   @Id @NotNull @Length(min=5, max=15)
+   public String getUsername()
+   {
+      return username;
+   }
+
+   public void setUsername(String username)
+   {
+      this.username = username;
+   }
+
+}
+</programlisting>
+				<orderedlist>
+					<listitem>
+						<para>
+							The EJB3 standard <literal>@Entity</literal> annotation indicates that the <literal>User</literal> class is an entity bean.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							A Seam component needs a <emphasis>component name</emphasis> specified by the <literal>@Name</literal> annotation. This name must be unique within the Seam application. When JSF asks Seam to resolve a context variable with a name that is the same as a Seam component name, and the context variable is currently undefined (null), Seam will instantiate that component, and bind the new instance to the context variable. In this case, Seam will instantiate a <literal>User</literal> the first time JSF encounters a variable named <literal>user</literal>.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							Whenever Seam instantiates a component, it binds the new instance to a context variable in the component's <emphasis>default context</emphasis>. The default context is specified using the <literal>@Scope</literal> annotation. The <literal>User</literal> bean is a session scoped component.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							The EJB standard <literal>@Table</literal> annotation indicates that the <literal>User</literal> class is mapped to the <literal>users</literal> table.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							<literal>name</literal>, <literal>password</literal> and <literal>username</literal> are the persistent attributes of the entity bean. All of our persistent attributes define accessor methods. These are needed when this component is used by JSF in the render response and update model values phases.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							An empty constructor is both required by both the EJB specification and by Seam.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							The <literal>@NotNull</literal> and <literal>@Length</literal> annotations are part of the Hibernate Validator framework. Seam integrates Hibernate Validator and lets you use it for data validation (even if you are not using Hibernate for persistence).
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							The EJB standard <literal>@Id</literal> annotation indicates the primary key attribute of the entity bean.
+						</para>
+					</listitem>
+				</orderedlist>
+				<!-- 	</programlistingco>  -->
+				<para>
+					The most important things to notice in this example are the <literal>@Name</literal> and <literal>@Scope</literal> annotations. These annotations establish that this class is a Seam component.
+				</para>
+				<para>
+					We will see below that the properties of our <literal>User</literal> class are bound to directly to JSF components and are populated by JSF during the update model values phase. We do not need any tedious glue code to copy data back and forth between the JSP pages and the entity bean domain model.
+				</para>
+				<para>
+					However, entity beans should not do transaction management or database access. So we cannot use this component as a JSF action listener. For that we need a session bean.
+				</para>
+				<!-- 	</example>  -->
+			</section>
+			
+			<section id="Seam_Reference_Guide-Understanding_the_code-The_stateless_session_bean_class_RegisterAction.java">
+				<title>The stateless session bean class: <literal>RegisterAction.java</literal></title>
+				<para>
+					Most Seam application use session beans as JSF action listeners (you can use JavaBeans instead if you like).
+				</para>
+				<para>
+					We have exactly one JSF action in our application, and one session bean method attached to it. In this case, we will use a stateless session bean, since all the state associated with our action is held by the <literal>User</literal> bean.
+				</para>
+				<para>
+					This is the only really interesting code in the example.
+				</para>
+				<!-- 	<example><title></title>  --><!-- 	<programlistingco>
+					<areaspec>
+						<area coords="1" id="registration-stateless-annotation" />
+						<area coords="6" id="registration-in-annotation" />
+						<area coords="9" id="registration-persistencecontext-annotation" />
+						<area coords="12" id="registration-logger-annotation" />
+						<area coords="15" id="registration-action-listener" />
+						<area coords="18" id="registration-query" />
+						<area coords="24" id="registration-log" />
+						<area coords="25" id="registration-outcome" />
+						<area coords="29" id="registration-builtin" />
+					</areaspec>  -->
+<programlisting>@Stateless
+ at Name("register")
+public class RegisterAction implements Register
+{
+
+   @In
+   private User user;
+   
+   @PersistenceContext
+   private EntityManager em;
+   
+   @Logger
+   private Log log;
+   
+   public String register()
+   {
+      List existing = em.createQuery(
+         "select username from User where username=#{user.username}")
+         .getResultList();
+         
+      if (existing.size()==0)
+      {
+         em.persist(user);
+         log.info("Registered new user #{user.username}");
+         return "/registered.jsp";
+      }
+      else
+      {
+         FacesMessages.instance().add("User #{user.username} already exists");
+         return null;
+      }
+   }
+
+}
+</programlisting>
+				<orderedlist>
+					<listitem>
+						<para>
+							The EJB standard <literal>@Stateless</literal> annotation marks this class as stateless session bean.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							The <literal>@In</literal> annotation marks an attribute of the bean as injected by Seam. In this case, the attribute is injected from a context variable named <literal>user</literal> (the instance variable name).
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							The EJB standard <literal>@PersistenceContext</literal> annotation is used to inject the EJB3 entity manager.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							The Seam <literal>@Logger</literal> annotation is used to inject the component's <literal>Log</literal> instance.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							The action listener method uses the standard EJB3 <literal>EntityManager</literal> API to interact with the database, and returns the JSF outcome. Note that, since this is a sesson bean, a transaction is automatically begun when the <literal>register()</literal> method is called, and committed when it completes.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							Notice that Seam lets you use a JSF EL expression inside EJB-QL. Under the covers, this results in an ordinary JPA <literal>setParameter()</literal> call on the standard JPA <literal>Query</literal> object. Nice, huh?
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							The <literal>Log</literal> API lets us easily display templated log messages.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							JSF action listener methods return a string-valued outcome that determines what page will be displayed next. A null outcome (or a void action listener method) redisplays the previous page. In plain JSF, it is normal to always use a JSF <emphasis>navigation rule</emphasis> to determine the JSF view id from the outcome. For complex application this indirection is useful and a good practice. However, for very simple examples like this one, Seam lets you use the JSF view id as the outcome, eliminating the requirement for a navigation rule. <emphasis>Note that when you use a view id as an outcome, Seam always performs a browser redirect.</emphasis>
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							Seam provides a number of <emphasis>built-in components</emphasis> to help solve common problems. The <literal>FacesMessages</literal> component makes it easy to display templated error or success messages. Built-in Seam components may be obtained by injection, or by calling an <literal>instance()</literal> method.
+						</para>
+					</listitem>
+				</orderedlist>
+				<!-- 	</programlistingco>  -->
+				<para>
+					Note that we did not explicitly specify a <literal>@Scope</literal> this time. Each Seam component type has a default scope if not explicitly specified. For stateless session beans, the default scope is the stateless context. Actually, <emphasis>all</emphasis> stateless session beans belong in the stateless context.
+				</para>
+				<para>
+					Our session bean action listener performs the business and persistence logic for our mini-application. In more complex applications, we might need to layer the code and refactor persistence logic into a dedicated data access component. That is perfectly trivial to do. But notice that Seam does not force you into any particular strategy for application layering.
+				</para>
+				<para>
+					Furthermore, notice that our session bean has simultaneous access to context associated with the web request (the form values in the <literal>User</literal> object, for example), and state held in transactional resources (the <literal>EntityManager</literal> object). This is a break from traditional J2EE architectures. Again, if you are more comfortable with the traditional J2EE layering, you can certainly implement that in a Seam application. But for many applications, it is not very useful.
+				</para>
+				<!-- 	</example>  -->
+			</section>
+			
+			<section id="Seam_Reference_Guide-Understanding_the_code-The_session_bean_local_interface_Register.java">
+				<title>The session bean local interface: <literal>Register.java</literal></title>
+				<para>
+					Naturally, our session bean needs a local interface.
+				</para>
+				<example>
+					<title></title>
+					
+<programlisting>@Local
+public interface Register
+{
+   public String register();
+}
+</programlisting>
+				</example>
+				<para>
+					That is the end of the Java code. Now onto the deployment descriptors.
+				</para>
+			</section>
+			
+			<section id="Seam_Reference_Guide-Understanding_the_code-The_Seam_component_deployment_descriptor_components.xml">
+				<title>The Seam component deployment descriptor: <literal>components.xml</literal></title>
+				<para>
+					If you have used many Java frameworks before, you will be used to having to declare all your component classes in some kind of XML file that gradually grows more and more unmanageable as your project matures. You will be relieved to know that Seam does not require that application components be accompanied by XML. Most Seam applications require a very small amount of XML that does not grow very much as the project gets bigger.
+				</para>
+				<para>
+					Nevertheless, it is often useful to be able to provide for <emphasis>some</emphasis> external configuration of <emphasis>some</emphasis> components (particularly the components built in to Seam). You have a couple of options here, but the most flexible option is to provide this configuration in a file called <literal>components.xml</literal>, located in the <literal>WEB-INF</literal> directory. We will use the <literal>components.xml</literal> file to tell Seam how to find our EJB components in JNDI:
+				</para>
+				<example>
+					<title></title>
+					
+<programlisting>&lt;components xmlns="http://jboss.com/products/seam/components"
+            xmlns:core="http://jboss.com/products/seam/core"&gt;
+     &lt;core:init jndi-pattern="@jndiPattern@"/&gt;
+&lt;/components&gt;
+</programlisting>
+				</example>
+				<para>
+					This code configures a property named <literal>jndiPattern</literal> of a built-in Seam component named <literal>org.jboss.seam.core.init</literal>.
+				</para>
+			</section>
+			
+			<section id="Seam_Reference_Guide-Understanding_the_code-The_web_deployment_description_web.xml">
+				<title>The web deployment description: <literal>web.xml</literal></title>
+				<para>
+					The presentation layer for our mini-application will be deployed in a WAR. So we will need a web deployment descriptor.
+				</para>
+				<example>
+					<title></title>
+					
+<programlisting>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;web-app version="2.5"
+    xmlns="http://java.sun.com/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
+        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"&gt;
+
+    &lt;!- - Seam - -&gt;
+
+    &lt;listener&gt;
+        &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/listener-class&gt;
+    &lt;/listener&gt;
+    
+     &lt;listener&gt;
+         &lt;listener-class&gt;com.sun.faces.config.ConfigureListener&lt;/listener-class&gt;
+    &lt;/listener&gt;
+
+    &lt;context-param&gt;
+        &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-name&gt;
+        &lt;param-value&gt;client&lt;/param-value&gt;
+    &lt;/context-param&gt;
+
+    &lt;context-param&gt;
+        &lt;param-name&gt;javax.faces.DEFAULT_SUFFIX&lt;/param-name&gt;
+        &lt;param-value&gt;.jspx&lt;/param-value&gt;
+    &lt;/context-param&gt;
+
+        &lt;servlet&gt;
+                &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;
+                &lt;servlet-class&gt;javax.faces.webapp.FacesServlet&lt;/servlet-class&gt;
+                &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;
+        &lt;/servlet&gt;
+
+        <!--  Faces Servlet Mapping  -->
+        &lt;servlet-mapping&gt;
+                &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;
+                &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;
+        &lt;/servlet-mapping&gt;
+
+&lt;/web-app&gt;
+</programlisting>
+				</example>
+				<para>
+					This <literal>web.xml</literal> file configures Seam and Glassfish. The configuration you see here is pretty much identical in all Seam applications.
+				</para>
+			</section>
+			
+			<section id="Seam_Reference_Guide-Understanding_the_code-The_JSF_configration_faces_config.xml">
+				<title>The JSF configration: <literal>faces-config.xml</literal></title>
+				<para>
+					All Seam applications use JSF views as the presentation layer. So we will need <literal>faces-config.xml</literal>.
+				</para>
+				<example>
+					<title></title>
+					
+<programlisting>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;!DOCTYPE faces-config 
+PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN"
+                            "http://java.sun.com/dtd/web-facesconfig_1_0.dtd"&gt;
+&lt;faces-config&gt;
+
+    &lt;!- - A phase listener is needed by all Seam applications - -&gt;
+    
+    &lt;lifecycle&gt;
+        &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-listener&gt;
+    &lt;/lifecycle&gt;
+
+&lt;/faces-config&gt;
+</programlisting>
+				</example>
+				<para>
+					The <literal>faces-config.xml</literal> file integrates Seam into JSF. Note that we do not need any JSF managed bean declarations; the managed beans are the Seam components. In Seam applications, the <literal>faces-config.xml</literal> is used much less often than in plain JSF.
+				</para>
+				<para>
+					In fact, once you have all the basic descriptors set up, the <emphasis>only</emphasis> XML you need to write as you add new functionality to a Seam application is the navigation rules, and possibly jBPM process definitions. Seam takes the view that <emphasis>process flow</emphasis> and <emphasis>configuration data</emphasis> are the only things that truly belong in XML.
+				</para>
+				<para>
+					In this simple example, we do not even need a navigation rule, since we decided to embed the view id in our action code.
+				</para>
+			</section>
+			
+			<section id="Seam_Reference_Guide-Understanding_the_code-The_EJB_deployment_descriptor_ejb_jar.xml">
+				<title>The EJB deployment descriptor: <literal>ejb-jar.xml</literal></title>
+				<para>
+					The <literal>ejb-jar.xml</literal> file integrates Seam with EJB3, by attaching the <literal>SeamInterceptor</literal> to all session beans in the archive.
+				</para>
+				
+<programlisting>&lt;ejb-jar xmlns="http://java.sun.com/xml/ns/javaee" 
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
+                           http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"
+         version="3.0"&gt;
+         
+   &lt;interceptors&gt;
+     &lt;interceptor&gt;
+       &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/interceptor-class&gt;
+     &lt;/interceptor&gt;
+   &lt;/interceptors&gt;
+   
+   &lt;assembly-descriptor&gt;
+      &lt;interceptor-binding&gt;
+         &lt;ejb-name&gt;*&lt;/ejb-name&gt;
+         &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/interceptor-class&gt;
+      &lt;/interceptor-binding&gt;
+   &lt;/assembly-descriptor&gt;
+   
+&lt;/ejb-jar&gt;
+</programlisting>
+			</section>
+			
+			<section id="Seam_Reference_Guide-Understanding_the_code-The_EJB_persistence_deployment_descriptor_persistence.xml">
+				<title>The EJB persistence deployment descriptor: <literal>persistence.xml</literal></title>
+				<para>
+					The <literal>persistence.xml</literal> file tells the EJB persistence provider where to find the datasource, and contains some vendor-specific settings. In this case, enables automatic schema export at startup time.
+				</para>
+				
+<programlisting>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;persistence xmlns="http://java.sun.com/xml/ns/persistence" 
+             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
+                           http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" 
+             version="1.0"&gt;
+    &lt;persistence-unit name="userDatabase"&gt;
+      &lt;provider&gt;org.hibernate.ejb.HibernatePersistence&lt;/provider&gt;
+      &lt;jta-data-source&gt;java:/DefaultDS&lt;/jta-data-source&gt;
+      &lt;properties&gt;
+         &lt;property name="hibernate.hbm2ddl.auto" value="create-drop"/&gt;
+      &lt;/properties&gt;
+    &lt;/persistence-unit&gt;
+&lt;/persistence&gt;
+</programlisting>
+			</section>
+			
+			<section id="Seam_Reference_Guide-Understanding_the_code-The_view_register.jsp_and_registered.jsp">
+				<title>The view: <literal>register.jsp</literal> and <literal>registered.jsp</literal></title>
+				<para>
+					The view pages for a Seam application could be implemented using any technology that supports JSF. In this example we use JSP, since it is familiar to most developers and since we have minimal requirements here anyway. (But if you take our advice, you will use Facelets for your own applications.)
+				</para>
+				<example>
+					<title></title>
+					
+<programlisting>&lt;%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %&gt;
+&lt;%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %&gt;
+&lt;%@ taglib uri="http://jboss.com/products/seam/taglib" prefix="s" %&gt;
+&lt;html&gt;
+ &lt;head&gt;
+  &lt;title&gt;Register New User&lt;/title&gt;
+ &lt;/head&gt;
+ &lt;body&gt;
+  &lt;f:view&gt;
+   &lt;h:form&gt;
+     &lt;table border="0"&gt;
+       &lt;s:validateAll&gt;
+         &lt;tr&gt;
+           &lt;td&gt;Username&lt;/td&gt;
+           &lt;td&gt;&lt;h:inputText value="#{user.username}"/&gt;&lt;/td&gt;
+         &lt;/tr&gt;
+         &lt;tr&gt;
+           &lt;td&gt;Real Name&lt;/td&gt;
+           &lt;td&gt;&lt;h:inputText value="#{user.name}"/&gt;&lt;/td&gt;
+         &lt;/tr&gt;
+         &lt;tr&gt;
+           &lt;td&gt;Password&lt;/td&gt;
+           &lt;td&gt;&lt;h:inputSecret value="#{user.password}"/&gt;&lt;/td&gt;
+         &lt;/tr&gt;
+       &lt;/s:validateAll&gt;
+     &lt;/table&gt;
+     &lt;h:messages/&gt;
+     &lt;h:commandButton type="submit" value="Register" action="#{register.register}"/&gt;
+   &lt;/h:form&gt;
+  &lt;/f:view&gt;
+ &lt;/body&gt;
+&lt;/html&gt;
+</programlisting>
+				</example>
+				<para>
+					The only thing here that is specific to Seam is the <literal>&lt;s:validateAll&gt;</literal> tag. This JSF component tells JSF to validate all the contained input fields against the Hibernate Validator annotations specified on the entity bean.
+				</para>
+				<example>
+					<title></title>
+					
+<programlisting>&lt;%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %&gt;
+&lt;%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %&gt;
+&lt;html&gt;
+ &lt;head&gt;
+  &lt;title&gt;Successfully Registered New User&lt;/title&gt;
+ &lt;/head&gt;
+ &lt;body&gt;
+  &lt;f:view&gt;
+    Welcome, &lt;h:outputText value="#{user.name}"/&gt;, 
+    you are successfully registered as &lt;h:outputText value="#{user.username}"/&gt;.
+  &lt;/f:view&gt;
+ &lt;/body&gt;
+&lt;/html&gt;
+</programlisting>
+				</example>
+				<para>
+					This is a boring old JSP pages using standard JSF components. There is nothing specific to Seam here.
+				</para>
+			</section>
+			
+			<section id="Seam_Reference_Guide-Understanding_the_code-The_EAR_deployment_descriptor_application.xml">
+				<title>The EAR deployment descriptor: <literal>application.xml</literal></title>
+				<para>
+					Finally, since our application is deployed as an EAR, we need a deployment descriptor there, too.
+				</para>
+				<example>
+					<title></title>
+					
+<programlisting>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;application xmlns="http://java.sun.com/xml/ns/javaee" 
+             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+             xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
+                                   http://java.sun.com/xml/ns/javaee/application_5.xsd"
+             version="5"&gt;
+             
+    &lt;display-name&gt;Seam Registration&lt;/display-name&gt;
+
+    &lt;module&gt;
+        &lt;web&gt;
+            &lt;web-uri&gt;jboss-seam-registration.war&lt;/web-uri&gt;
+            &lt;context-root&gt;/seam-registration&lt;/context-root&gt;
+        &lt;/web&gt;
+    &lt;/module&gt;
+    &lt;module&gt;
+        &lt;ejb&gt;jboss-seam-registration.jar&lt;/ejb&gt;
+    &lt;/module&gt;
+    &lt;module&gt;
+        &lt;java&gt;jboss-seam.jar&lt;/java&gt;
+    &lt;/module&gt;
+    &lt;module&gt;
+        &lt;java&gt;el-ri.jar&lt;/java&gt;
+    &lt;/module&gt;
+    
+&lt;/application&gt;
+</programlisting>
+				</example>
+				<para>
+					This deployment descriptor links modules in the enterprise archive and binds the web application to the context root <literal>/seam-registration</literal>.
+				</para>
+				<!-- <para>
+				We've now seen <emphasis>all</emphasis> the files in the entire application!
+			</para> -->
+			</section>
+
+		</section>
+		
+		<section id="Seam_Reference_Guide-Your_first_Seam_application_the_registration_example-How_it_works">
+			<title>How it works</title>
+			<para>
+				When the form is submitted, JSF asks Seam to resolve the variable named <literal>user</literal>. Since there is no value already bound to that name (in any Seam context), Seam instantiates the <literal>user</literal> component, and returns the resulting <literal>User</literal> entity bean instance to JSF after storing it in the Seam session context.
+			</para>
+			<para>
+				The form input values are now validated against the Hibernate Validator constraints specified on the <literal>User</literal> entity. If the constraints are violated, JSF redisplays the page. Otherwise, JSF binds the form input values to properties of the <literal>User</literal> entity bean.
+			</para>
+			<para>
+				Next, JSF asks Seam to resolve the variable named <literal>register</literal>. Seam finds the <literal>RegisterAction</literal> stateless session bean in the stateless context and returns it. JSF invokes the <literal>register()</literal> action listener method.
+			</para>
+			<para>
+				Seam intercepts the method call and injects the <literal>User</literal> entity from the Seam session context, before continuing the invocation.
+			</para>
+			<para>
+				The <literal>register()</literal> method checks if a user with the entered username already exists. If so, an error message is queued with the <literal>FacesMessages</literal> component, and a null outcome is returned, causing a page redisplay. The <literal>FacesMessages</literal> component interpolates the JSF expression embedded in the message string and adds a JSF <literal>FacesMessage</literal> to the view.
+			</para>
+			<para>
+				If no user with that username exists, the <literal>"/registered.jsp"</literal> outcome triggers a browser redirect to the <literal>registered.jsp</literal> page. When JSF comes to render the page, it asks Seam to resolve the variable named <literal>user</literal> and uses property values of the returned <literal>User</literal> entity from Seam's session scope.
+			</para>
+		</section>
+
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_Tutorial-Clickable_lists_in_Seam_the_messages_example">
+		<title>Clickable lists in Seam: the messages example</title>
+		<para>
+			Clickable lists of database search results are such an important part of any online application that Seam provides special functionality on top of JSF to make it easier to query data using EJB-QL or HQL and display it as a clickable list using a JSF <literal>&lt;h:dataTable&gt;</literal>. The messages example demonstrates this functionality.
+		</para>
+		<mediaobject>
+			<imageobject role="fo">
+				<imagedata align="center" fileref="images/messages.png" format="PNG" width="444" />
+			</imageobject>
+			<!-- 	<imageobject role="html">
+				<imagedata align="center" fileref="../shared/images/messages.png" />
+			</imageobject>  -->
+		</mediaobject>
+		<section id="Seam_Reference_Guide-Clickable_lists_in_Seam_the_messages_example-Understanding_the_code">
+			<title>Understanding the code</title>
+			<para>
+				The message list example has one entity bean, <literal>Message</literal>, one session bean, <literal>MessageListBean</literal> and one JSP.
+			</para>
+			<section id="Seam_Reference_Guide-Understanding_the_code-The_entity_bean_Message.java">
+				<title>The entity bean: <literal>Message.java</literal></title>
+				<para>
+					The <literal>Message</literal> entity defines the title, text, date and time of a message, and a flag indicating whether the message has been read:
+				</para>
+				<!-- 	<example><title></title>  -->
+<programlisting>@Entity
+ at Name("message")
+ at Scope(EVENT)
+public class Message implements Serializable
+{
+   private Long id;
+   private String title;
+   private String text;
+   private boolean read;
+   private Date datetime;
+   
+   @Id @GeneratedValue
+   public Long getId() {
+      return id;
+   }
+   public void setId(Long id) {
+      this.id = id;
+   }
+   
+   @NotNull @Length(max=100)
+   public String getTitle() {
+      return title;
+   }
+   public void setTitle(String title) {
+      this.title = title;
+   }
+   
+   @NotNull @Lob
+   public String getText() {
+      return text;
+   }
+   public void setText(String text) {
+      this.text = text;
+   }
+   
+   @NotNull
+   public boolean isRead() {
+      return read;
+   }
+   public void setRead(boolean read) {
+      this.read = read;
+   }
+   
+   @NotNull 
+   @Basic @Temporal(TemporalType.TIMESTAMP)
+   public Date getDatetime() {
+      return datetime;
+   }
+   public void setDatetime(Date datetime) {
+      this.datetime = datetime;
+   }
+   
+}
+</programlisting>
+				<!-- 		</example>  -->
+			</section>
+			
+			<section id="Seam_Reference_Guide-Understanding_the_code-The_stateful_session_bean_MessageManagerBean.java">
+				<title>The stateful session bean: <literal>MessageManagerBean.java</literal></title>
+				<para>
+					Just like in the previous example, we have a session bean, <literal>MessageManagerBean</literal>, which defines the action listener methods for the two buttons on our form. One of the buttons selects a message from the list, and displays that message. The other button deletes a message. So far, this is not so different to the previous example.
+				</para>
+				<para>
+					But <literal>MessageManagerBean</literal> is also responsible for fetching the list of messages the first time we navigate to the message list page. There are various ways the user could navigate to the page, and not all of them are preceded by a JSF action&mdash;the user might have bookmarked the page, for example. So the job of fetching the message list takes place in a Seam <emphasis>factory method</emphasis>, instead of in an action listener method.
+				</para>
+				<para>
+					We want to cache the list of messages in memory between server requests, so we will make this a stateful session bean.
+				</para>
+				<!-- 	<example><title></title>  --><!-- 	<programlistingco>
+					<areaspec>
+						<area coords="7" id="messages-datamodel" />
+						<area coords="10" id="messages-datamodelselection" />
+						<area coords="11" id="messages-out" />
+						<area coords="14" id="messages-persistencecontext" />
+						<area coords="17" id="messages-factory" />
+						<area coords="23" id="messages-select" />
+						<area coords="28" id="messages-delete" />
+						<area coords="35" id="messages-remove" />
+					</areaspec>  -->
+<programlisting>@Stateful
+ at Scope(SESSION)
+ at Name("messageManager")
+public class MessageManagerBean implements Serializable, MessageManager
+{
+
+   @DataModel
+   private List&lt;Message&gt; messageList;
+   
+   @DataModelSelection
+   @Out(required=false)
+   private Message message;
+   
+   @PersistenceContext(type=EXTENDED)
+   private EntityManager em;
+   
+   @Factory("messageList")
+   public void findMessages()
+   {
+      messageList = em.createQuery("from Message msg order by msg.datetime desc").getResultList();
+   }
+   
+   public void select()
+   {
+      message.setRead(true);
+   }
+   
+   public void delete()
+   {
+      messageList.remove(message);
+      em.remove(message);
+      message=null;
+   }
+   
+   @Remove @Destroy
+   public void destroy() {}
+
+}
+</programlisting>
+				<orderedlist>
+					<listitem>
+						<para>
+							The <literal>@DataModel</literal> annotation exposes an attibute of type <literal>java.util.List</literal> to the JSF page as an instance of <literal>javax.faces.model.DataModel</literal>. This allows us to use the list in a JSF <literal>&lt;h:dataTable&gt;</literal> with clickable links for each row. In this case, the <literal>DataModel</literal> is made available in a session context variable named <literal>messageList</literal>.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							The <literal>@DataModelSelection</literal> annotation tells Seam to inject the <literal>List</literal> element that corresponded to the clicked link.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							The <literal>@Out</literal> annotation then exposes the selected value directly to the page. So every time a row of the clickable list is selected, the <literal>Message</literal> is injected to the attribute of the stateful bean, and the subsequently <emphasis>outjected</emphasis> to the event context variable named <literal>message</literal>.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							This stateful bean has an EJB3 <emphasis>extended persistence context</emphasis>. The messages retrieved in the query remain in the managed state as long as the bean exists, so any subsequent method calls to the stateful bean can update them without needing to make any explicit call to the <literal>EntityManager</literal>.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							The first time we navigate to the JSP page, there will be no value in the <literal>messageList</literal> context variable. The <literal>@Factory</literal> annotation tells Seam to create an instance of <literal>MessageManagerBean</literal> and invoke the <literal>findMessages()</literal> method to initialize the value. We call <literal>findMessages()</literal> a <emphasis>factory method</emphasis> for <literal>messages</literal>.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							The <literal>select()</literal> action listener method marks the selected <literal>Message</literal> as read, and updates it in the database.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							The <literal>delete()</literal> action listener method removes the selected <literal>Message</literal> from the database.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							All stateful session bean Seam components <emphasis>must</emphasis> have a method marked <literal>@Remove @Destroy</literal> to ensure that Seam will remove the stateful bean when the Seam context ends, and clean up any server-side state.
+						</para>
+					</listitem>
+				</orderedlist>
+				<!-- 	</programlistingco>  --><!-- 	</example>  -->
+				<para>
+					Note that this is a session-scoped Seam component. It is associated with the user login session, and all requests from a login session share the same instance of the component. (In Seam applications, we usually use session-scoped components sparingly.)
+				</para>
+			</section>
+			
+			<section id="Seam_Reference_Guide-Understanding_the_code-The_session_bean_local_interface_MessageManager.java">
+				<title>The session bean local interface: <literal>MessageManager.java</literal></title>
+				<para>
+					All session beans have a business interface, of course.
+				</para>
+				
+<programlisting>@Local
+public interface MessageManager
+{
+   public void findMessages();
+   public void select();
+   public void delete();
+   public void destroy();
+}
+</programlisting>
+				<para>
+					From now on, we will not show local interfaces in our code examples.
+				</para>
+				<para>
+					Let us skip over <literal>components.xml</literal>, <literal>persistence.xml</literal>, <literal>web.xml</literal>, <literal>ejb-jar.xml</literal>, <literal>faces-config.xml</literal> and <literal>application.xml</literal> since they are much the same as the previous example, and go straight to the JSP.
+				</para>
+			</section>
+			
+			<section id="Seam_Reference_Guide-Understanding_the_code-The_view_messages.jsp">
+				<title>The view: <literal>messages.jsp</literal></title>
+				<para>
+					The JSP page is a straightforward use of the JSF <literal>&lt;h:dataTable&gt;</literal> component. Again, nothing specific to Seam.
+				</para>
+				<example>
+					<title></title>
+					
+<programlisting>&lt;%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %&gt;
+&lt;%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %&gt;
+&lt;html&gt;
+ &lt;head&gt;
+  &lt;title&gt;Messages&lt;/title&gt;
+ &lt;/head&gt;
+ &lt;body&gt;
+  &lt;f:view&gt;
+   &lt;h:form&gt;
+     &lt;h2&gt;Message List&lt;/h2&gt;
+     &lt;h:outputText value="No messages to display" rendered="#{messageList.rowCount==0}"/&gt;
+     &lt;h:dataTable var="msg" value="#{messageList}" rendered="#{messageList.rowCount&gt;0}"&gt;
+        &lt;h:column&gt;
+           &lt;f:facet name="header"&gt;
+              &lt;h:outputText value="Read"/&gt;
+           &lt;/f:facet&gt;
+           &lt;h:selectBooleanCheckbox value="#{msg.read}" disabled="true"/&gt;
+        &lt;/h:column&gt;
+        &lt;h:column&gt;
+           &lt;f:facet name="header"&gt;
+              &lt;h:outputText value="Title"/&gt;
+           &lt;/f:facet&gt;
+           &lt;h:commandLink value="#{msg.title}" action="#{messageManager.select}"/&gt;
+        &lt;/h:column&gt;
+        &lt;h:column&gt;
+           &lt;f:facet name="header"&gt;
+              &lt;h:outputText value="Date/Time"/&gt;
+           &lt;/f:facet&gt;
+           &lt;h:outputText value="#{msg.datetime}"&gt;
+              &lt;f:convertDateTime type="both" dateStyle="medium" timeStyle="short"/&gt;
+           &lt;/h:outputText&gt;
+        &lt;/h:column&gt;
+        &lt;h:column&gt;
+           &lt;h:commandButton value="Delete" action="#{messageManager.delete}"/&gt;
+        &lt;/h:column&gt;
+     &lt;/h:dataTable&gt;
+     &lt;h3&gt;&lt;h:outputText value="#{message.title}"/&gt;&lt;/h3&gt;
+     &lt;div&gt;&lt;h:outputText value="#{message.text}"/&gt;&lt;/div&gt;
+   &lt;/h:form&gt;
+  &lt;/f:view&gt;
+ &lt;/body&gt;
+&lt;/html&gt;
+</programlisting>
+				</example>
+			</section>
+
+		</section>
+		
+		<section id="Seam_Reference_Guide-Clickable_lists_in_Seam_the_messages_example-How_it_works">
+			<title>How it works</title>
+			<para>
+				The first time we navigate to the <literal>messages.jsp</literal> page, whether by a JSF postback (faces request) or a direct browser GET request (non-faces request), the page will try to resolve the <literal>messageList</literal> context variable. Since this context variable is not initialized, Seam will call the factory method <literal>findMessages()</literal>, which performs a query against the database and results in a <literal>DataModel</literal> being outjected. This <literal>DataModel</literal> provides the row data needed for rendering the <literal>&lt;h:dataTable&gt;</literal>.
+			</para>
+			<para>
+				When the user clicks the <literal>&lt;h:commandLink&gt;</literal>, JSF calls the <literal>select()</literal> action listener. Seam intercepts this call and injects the selected row data into the <literal>message</literal> attribute of the <literal>messageManager</literal> component. The action listener fires, marking the selected <literal>Message</literal> as read. At the end of the call, Seam outjects the selected <literal>Message</literal> to the context variable named <literal>message</literal>. Next, the EJB container commits the transaction, and the change to the <literal>Message</literal> is flushed to the database. Finally, the page is re-rendered, redisplaying the message list, and displaying the selected message below it.
+			</para>
+			<para>
+				If the user clicks the <literal>&lt;h:commandButton&gt;</literal>, JSF calls the <literal>delete()</literal> action listener. Seam intercepts this call and injects the selected row data into the <literal>message</literal> attribute of the <literal>messageList</literal> component. The action listener fires, removing the selected <literal>Message</literal> from the list, and also calling <literal>remove()</literal> on the <literal>EntityManager</literal>. At the end of the call, Seam refreshes the <literal>messageList</literal> context variable and clears the context variable named <literal>message</literal>. The EJB container commits the transaction, and deletes the <literal>Message</literal> from the database. Finally, the page is re-rendered, redisplaying the message list.
+			</para>
+		</section>
+
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_Tutorial-Seam_and_jBPM_the_todo_list_example">
+		<title>Seam and jBPM: the todo list example</title>
+		<para>
+			jBPM provides sophisticated functionality for workflow and task management. To get a small taste of how jBPM integrates with Seam, we will show you a simple <emphasis>todo list</emphasis> application. Since managing lists of tasks is such core functionality for jBPM, there is hardly any Java code at all in this example.
+		</para>
+		<mediaobject>
+			<imageobject role="fo">
+				<imagedata align="center" fileref="images/todo.png" format="PNG" width="444" />
+			</imageobject>
+			<!-- 	<imageobject role="html">
+				<imagedata align="center" fileref="../shared/images/todo.png" />
+			</imageobject>  -->
+		</mediaobject>
+		<section id="Seam_Reference_Guide-Seam_and_jBPM_the_todo_list_example-Understanding_the_code">
+			<title>Understanding the code</title>
+			<para>
+				The center of this example is the jBPM process definition. There are also two JSPs and two trivial JavaBeans (There was no reason to use session beans, since they do not access the database, or have any other transactional behavior). Let us start with the process definition:
+			</para>
+			<!-- 	<example><title></title>  --><!-- 	<programlistingco>
+				<areaspec>
+					<area coords="3" id="todo-startstate" />
+					<area coords="7" id="todo-tasknode" />
+					<area coords="8" id="todo-task" />
+					<area coords="9" id="todo-assignment" />
+					<area coords="14" id="todo-endstate" />
+				</areaspec>  -->
+<programlisting>&lt;process-definition name="todo"&gt;
+   
+   &lt;start-state name="start"&gt;
+      &lt;transition to="todo"/&gt;
+   &lt;/start-state&gt;
+   
+   &lt;task-node name="todo"&gt;
+      &lt;task name="todo" description="#{todoList.description}"&gt;
+         &lt;assignment actor-id="#{actor.id}"/&gt;
+      &lt;/task&gt;
+      &lt;transition to="done"/&gt;
+   &lt;/task-node&gt;
+   
+   &lt;end-state name="done"/&gt;
+   
+&lt;/process-definition&gt;
+</programlisting>
+			<orderedlist>
+				<listitem>
+					<para>
+						The <literal>&lt;start-state&gt;</literal> node represents the logical start of the process. When the process starts, it immediately transitions to the <literal>todo</literal> node.
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						The <literal>&lt;task-node&gt;</literal> node represents a <emphasis>wait state</emphasis>, where business process execution pauses, waiting for one or more tasks to be performed.
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						The <literal>&lt;task&gt;</literal> element defines a task to be performed by a user. Since there is only one task defined on this node, when it is complete, execution resumes, and we transition to the end state. The task gets its description from a Seam component named <literal>todoList</literal> (one of the JavaBeans).
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						Tasks need to be assigned to a user or group of users when they are created. In this case, the task is assigned to the current user, which we get from a built-in Seam component named <literal>actor</literal>. Any Seam component may be used to perform task assignment.
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						The <literal>&lt;end-state&gt;</literal> node defines the logical end of the business process. When execution reaches this node, the process instance is destroyed.
+					</para>
+				</listitem>
+			</orderedlist>
+			<!-- 	</programlistingco>  --><!-- 	</example> -->
+			<para>
+				If we view this process definition using the process definition editor provided by JBossIDE, this is what it looks like:
+			</para>
+			<mediaobject>
+				<imageobject role="fo">
+					<imagedata align="center" fileref="images/todo-process.png" format="PNG" />
+				</imageobject>
+				<!-- 	<imageobject role="html">
+					<imagedata align="center" fileref="../shared/images/todo-process.png" />
+				</imageobject>  -->
+			</mediaobject>
+			<para>
+				This document defines our <emphasis>business process</emphasis> as a graph of nodes. This is the most trivial possible business process: there is one <emphasis>task</emphasis> to be performed, and when that task is complete, the business process ends.
+			</para>
+			<para>
+				The first JavaBean handles the login screen <literal>login.jsp</literal>. Its job is just to initialize the jBPM actor id using the <literal>actor</literal> component. (In a real application, it would also need to authenticate the user.)
+			</para>
+			<example>
+				<title></title>
+				
+<programlisting>@Name("login")
+public class Login {
+   
+   @In
+   private Actor actor;
+   
+   private String user;
+
+   public String getUser() {
+      return user;
+   }
+
+   public void setUser(String user) {
+      this.user = user;
+   }
+   
+   public String login()
+   {
+      actor.setId(user);
+      return "/todo.jsp";
+   }
+}
+</programlisting>
+			</example>
+			<para>
+				Here we see the use of <literal>@In</literal> to inject the built-in <literal>Actor</literal> component.
+			</para>
+			<para>
+				The JSP itself is trivial:
+			</para>
+			<example>
+				<title></title>
+				
+<programlisting>&lt;%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%&gt;
+&lt;%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;title&gt;Login&lt;/title&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;h1&gt;Login&lt;/h1&gt;
+&lt;f:view&gt;
+    &lt;h:form&gt;
+      &lt;div&gt;
+        &lt;h:inputText value="#{login.user}"/&gt;
+        &lt;h:commandButton value="Login" action="#{login.login}"/&gt;
+      &lt;/div&gt;
+    &lt;/h:form&gt;
+&lt;/f:view&gt;
+&lt;/body&gt;
+&lt;/html&gt;
+</programlisting>
+			</example>
+			<para>
+				The second JavaBean is responsible for starting business process instances, and ending tasks.
+			</para>
+			<example>
+				<title></title>
+				<!-- 	<programlistingco>
+				<areaspec>
+					<area coords="6" id="todo-description" />
+					<area coords="15" id="todo-createprocess-annotation" />
+					<area coords="18" id="todo-task-annotations" />
+				</areaspec>  -->
+<programlisting>@Name("todoList")
+public class TodoList {
+   
+   private String description;
+   
+   public String getDescription()
+   {
+      return description;
+   }
+
+   public void setDescription(String description) {
+      this.description = description;
+   }
+   
+   @CreateProcess(definition="todo")
+   public void createTodo() {}
+   
+   @StartTask @EndTask
+   public void done() {}
+
+}
+</programlisting>
+				<orderedlist>
+					<listitem>
+						<para>
+							The description property accepts user input form the JSP page, and exposes it to the process definition, allowing the task description to be set.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							The Seam <literal>@CreateProcess</literal> annotation creates a new jBPM process instance for the named process definition.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							The Seam <literal>@StartTask</literal> annotation starts work on a task. The <literal>@EndTask</literal> ends the task, and allows the business process execution to resume.
+						</para>
+					</listitem>
+				</orderedlist>
+				<!-- 	</programlistingco>  -->
+			</example>
+			<para>
+				In a more realistic example, <literal>@StartTask</literal> and <literal>@EndTask</literal> would not appear on the same method, because there is usually work to be done using the application in order to complete the task.
+			</para>
+			<para>
+				Finally, the meat of the application is in <literal>todo.jsp</literal>:
+			</para>
+			<example>
+				<title></title>
+				
+<programlisting>&lt;%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %&gt;
+&lt;%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %&gt;
+&lt;%@ taglib uri="http://jboss.com/products/seam/taglib" prefix="s" %&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;title&gt;Todo List&lt;/title&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;h1&gt;Todo List&lt;/h1&gt;
+&lt;f:view&gt;
+   &lt;h:form id="list"&gt;
+      &lt;div&gt;
+         &lt;h:outputText value="There are no todo items." rendered="#{empty 
+                                       taskInstanceList}"/&gt;
+         &lt;h:dataTable value="#{taskInstanceList}" var="task" rendered="#{not empty 
+                                       taskInstanceList}"&gt;
+            &lt;h:column&gt;
+                &lt;f:facet name="header"&gt;
+                    &lt;h:outputText value="Description"/&gt;
+                &lt;/f:facet&gt;
+                &lt;h:inputText value="#{task.description}"/&gt;
+            &lt;/h:column&gt;
+            &lt;h:column&gt;
+                &lt;f:facet name="header"&gt;
+                    &lt;h:outputText value="Created"/&gt;
+                &lt;/f:facet&gt;
+                &lt;h:outputText value="#{task.taskMgmtInstance.processInstance.start}"&gt;
+                    &lt;f:convertDateTime type="date"/&gt;
+                &lt;/h:outputText&gt;
+            &lt;/h:column&gt;
+            &lt;h:column&gt;
+                &lt;f:facet name="header"&gt;
+                    &lt;h:outputText value="Priority"/&gt;
+                &lt;/f:facet&gt;
+                &lt;h:inputText value="#{task.priority}" style="width: 30"/&gt;
+            &lt;/h:column&gt;
+            &lt;h:column&gt;
+                &lt;f:facet name="header"&gt;
+                    &lt;h:outputText value="Due Date"/&gt;
+                &lt;/f:facet&gt;
+                &lt;h:inputText value="#{task.dueDate}" style="width: 100"&gt;
+                    &lt;f:convertDateTime type="date" dateStyle="short"/&gt;
+                &lt;/h:inputText&gt;
+            &lt;/h:column&gt;
+            &lt;h:column&gt;
+                &lt;s:button value="Done" action="#{todoList.done}" taskInstance="#{task}"/&gt;
+            &lt;/h:column&gt;
+         &lt;/h:dataTable&gt;
+      &lt;/div&gt;
+      &lt;div&gt;
+      &lt;h:messages/&gt;
+      &lt;/div&gt;
+      &lt;div&gt;
+         &lt;h:commandButton value="Update Items" action="update"/&gt;
+      &lt;/div&gt;
+   &lt;/h:form&gt;
+   &lt;h:form id="new"&gt;
+      &lt;div&gt;
+         &lt;h:inputText value="#{todoList.description}"/&gt;
+         &lt;h:commandButton value="Create New Item" action="#{todoList.createTodo}"/&gt;
+      &lt;/div&gt;
+   &lt;/h:form&gt;
+&lt;/f:view&gt;
+&lt;/body&gt;
+&lt;/html&gt;
+</programlisting>
+			</example>
+			<para>
+				Let us take this one piece at a time.
+			</para>
+			<para>
+				The page renders a list of tasks, which it gets from a built-in Seam component named <literal>taskInstanceList</literal>. The list is defined inside a JSF form.
+			</para>
+			
+<programlisting>&lt;h:form id="list"&gt;
+   &lt;div&gt;
+      &lt;h:outputText value="There are no todo items." rendered="#{empty taskInstanceList}"/&gt;
+      &lt;h:dataTable value="#{taskInstanceList}" var="task" rendered="#{not empty taskInstanceList}"&gt;
+         ...
+      &lt;/h:dataTable&gt;
+   &lt;/div&gt;
+&lt;/h:form&gt;
+</programlisting>
+			<para>
+				Each element of the list is an instance of the jBPM class <literal>TaskInstance</literal>. The following code simply displays the interesting properties of each task in the list. For the description, priority and due date, we use input controls, to allow the user to update these values.
+			</para>
+			
+<programlisting>&lt;h:column&gt;
+    &lt;f:facet name="header"&gt;
+       &lt;h:outputText value="Description"/&gt;
+    &lt;/f:facet&gt;
+    &lt;h:inputText value="#{task.description}"/&gt;
+&lt;/h:column&gt;
+&lt;h:column&gt;
+    &lt;f:facet name="header"&gt;
+        &lt;h:outputText value="Created"/&gt;
+    &lt;/f:facet&gt;
+    &lt;h:outputText value="#{task.taskMgmtInstance.processInstance.start}"&gt;
+        &lt;f:convertDateTime type="date"/&gt;
+    &lt;/h:outputText&gt;
+&lt;/h:column&gt;
+&lt;h:column&gt;
+    &lt;f:facet name="header"&gt;
+        &lt;h:outputText value="Priority"/&gt;
+    &lt;/f:facet&gt;
+    &lt;h:inputText value="#{task.priority}" style="width: 30"/&gt;
+&lt;/h:column&gt;
+&lt;h:column&gt;
+    &lt;f:facet name="header"&gt;
+        &lt;h:outputText value="Due Date"/&gt;
+    &lt;/f:facet&gt;
+    &lt;h:inputText value="#{task.dueDate}" style="width: 100"&gt;
+        &lt;f:convertDateTime type="date" dateStyle="short"/&gt;
+    &lt;/h:inputText&gt;
+&lt;/h:column&gt;
+</programlisting>
+			<para>
+				This button ends the task by calling the action method annotated <literal>@StartTask @EndTask</literal>. It passes the task id to Seam as a request parameter:
+			</para>
+			
+<programlisting>&lt;h:column&gt;
+    &lt;s:button value="Done" action="#{todoList.done}" taskInstance="#{task}"/&gt;
+&lt;/h:column&gt;
+</programlisting>
+			<para>
+				(Note that this is using a Seam <literal>&lt;s:button&gt;</literal> JSF control from the <literal>seam-ui.jar</literal> package.)
+			</para>
+			<para>
+				This button is used to update the properties of the tasks. When the form is submitted, Seam and jBPM will make any changes to the tasks persistent. There is no need for any action listener method:
+			</para>
+			
+<programlisting>&lt;h:commandButton value="Update Items" action="update"/&gt;
+</programlisting>
+			<para>
+				A second form on the page is used to create new items, by calling the action method annotated <literal>@CreateProcess</literal>.
+			</para>
+			
+<programlisting>&lt;h:form id="new"&gt;
+    &lt;div&gt;
+        &lt;h:inputText value="#{todoList.description}"/&gt;
+        &lt;h:commandButton value="Create New Item" action="#{todoList.createTodo}"/&gt;
+    &lt;/div&gt;
+&lt;/h:form&gt;
+</programlisting>
+			<para>
+				There are several other files needed for the example, but they are just standard jBPM and Seam configuration and not very interesting.
+			</para>
+		</section>
+
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_Tutorial-Seam_pageflow_the_numberguess_example">
+		<title>Seam pageflow: the numberguess example</title>
+		<para>
+			For Seam applications with relatively freeform (ad hoc) navigation, JSF/Seam navigation rules are a perfectly good way to define the page flow. For applications with a more constrained style of navigation, especially for user interfaces which are more stateful, navigation rules make it difficult to really understand the flow of the system. To understand the flow, you need to piece it together from the view pages, the actions and the navigation rules.
+		</para>
+		<para>
+			Seam allows you to use a jPDL process definition to define pageflow. The simple number guessing example shows how this is done.
+		</para>
+		<mediaobject>
+			<imageobject role="fo">
+				<imagedata align="center" fileref="images/numberguess.png" format="PNG" width="444" />
+			</imageobject>
+			<!-- 	<imageobject role="html">
+				<imagedata align="center" fileref="../shared/images/numberguess.png" />
+			</imageobject>  -->
+		</mediaobject>
+		<section id="Seam_Reference_Guide-Seam_pageflow_the_numberguess_example-Understanding_the_code">
+			<title>Understanding the code</title>
+			<para>
+				The example is implemented using one JavaBean, three JSP pages and a jPDL pageflow definition. Let us begin with the pageflow:
+			</para>
+			<!-- 	<example><title></title>  --><!-- 	<programlistingco>
+				<areaspec>
+					<area coords="7" id="numberguess-page" />
+					<area coords="8" id="numberguess-transition" />
+					<area coords="9" id="numberguess-action" />
+					<area coords="13" id="numberguess-decision" />
+				</areaspec>  -->
+<programlisting>&lt;pageflow-definition name="numberGuess"&gt;
+   
+   &lt;start-page name="displayGuess" view-id="/numberGuess.jsp"&gt;
+      &lt;redirect/&gt;
+      &lt;transition name="guess" to="evaluateGuess"&gt;
+          &lt;action expression="#{numberGuess.guess}" /&gt;
+      &lt;/transition&gt;
+   &lt;/start-page&gt;
+   
+   &lt;decision name="evaluateGuess" expression="#{numberGuess.correctGuess}"&gt;
+      &lt;transition name="true" to="win"/&gt;
+      &lt;transition name="false" to="evaluateRemainingGuesses"/&gt;
+   &lt;/decision&gt;
+   
+   &lt;decision name="evaluateRemainingGuesses" expression="#{numberGuess.lastGuess}"&gt;
+      &lt;transition name="true" to="lose"/&gt;
+      &lt;transition name="false" to="displayGuess"/&gt;
+   &lt;/decision&gt;
+   
+   &lt;page name="win" view-id="/win.jsp"&gt;
+      &lt;redirect/&gt;
+      &lt;end-conversation /&gt;
+   &lt;/page&gt;
+   
+   &lt;page name="lose" view-id="/lose.jsp"&gt;
+      &lt;redirect/&gt;
+      &lt;end-conversation /&gt;
+   &lt;/page&gt;
+   
+&lt;/pageflow-definition&gt;
+</programlisting>
+			<orderedlist>
+				<listitem>
+					<para>
+						The <literal>&lt;page&gt;</literal> element defines a wait state where the system displays a particular JSF view and waits for user input. The <literal>view-id</literal> is the same JSF view id used in plain JSF navigation rules. The <literal>redirect</literal> attribute tells Seam to use post-then-redirect when navigating to the page. (This results in friendly browser URLs.)
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						The <literal>&lt;transition&gt;</literal> element names a JSF outcome. The transition is triggered when a JSF action results in that outcome. Execution will then proceed to the next node of the pageflow graph, after invocation of any jBPM transition actions.
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						A transition <literal>&lt;action&gt;</literal> is just like a JSF action, except that it occurs when a jBPM transition occurs. The transition action can invoke any Seam component.
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						A <literal>&lt;decision&gt;</literal> node branches the pageflow, and determines the next node to execute by evaluating a JSF EL expression.
+					</para>
+				</listitem>
+			</orderedlist>
+			<!-- 	</programlistingco>  --><!-- 	</example> -->
+			<para>
+				Here is what the pageflow looks like in the JBossIDE pageflow editor:
+			</para>
+			<mediaobject>
+				<imageobject role="fo">
+					<imagedata align="center" fileref="images/numberguess-pageflow.png" format="PNG" width="444" />
+				</imageobject>
+				<!-- 	<imageobject role="html">
+					<imagedata align="center" fileref="../shared/images/numberguess-pageflow.png" />
+				</imageobject>  -->
+			</mediaobject>
+			<para>
+				Now that we have seen the pageflow, it is very, very easy to understand the rest of the application!
+			</para>
+			<para>
+				Here is the main page of the application, <literal>numberGuess.jsp</literal>:
+			</para>
+			<example>
+				<title></title>
+				
+<programlisting>&lt;%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%&gt;
+&lt;%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;title&gt;Guess a number...&lt;/title&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;h1&gt;Guess a number...&lt;/h1&gt;
+&lt;f:view&gt;
+    &lt;h:form&gt;
+        &lt;h:outputText value="Higher!" rendered="#{numberGuess.randomNumber&gt;numberGuess.currentGuess}" /&gt;
+        &lt;h:outputText value="Lower!" rendered="#{numberGuess.randomNumber&lt;numberGuess.currentGuess}" /&gt;
+        &lt;br /&gt;
+        I'm thinking of a number between &lt;h:outputText value="#{numberGuess.smallest}" /&gt; and 
+        &lt;h:outputText value="#{numberGuess.biggest}" /&gt;. You have 
+        &lt;h:outputText value="#{numberGuess.remainingGuesses}" /&gt; guesses.
+        &lt;br /&gt;
+        Your guess: 
+        &lt;h:inputText value="#{numberGuess.currentGuess}" id="guess" required="true"&gt;
+            &lt;f:validateLongRange
+                maximum="#{numberGuess.biggest}" 
+                minimum="#{numberGuess.smallest}"/&gt;
+        &lt;/h:inputText&gt;
+        &lt;h:commandButton type="submit" value="Guess" action="guess" /&gt;
+        &lt;br/&gt;
+        &lt;h:message for="guess" style="color: red"/&gt;
+    &lt;/h:form&gt;
+&lt;/f:view&gt;
+&lt;/body&gt;
+&lt;/html&gt;
+</programlisting>
+			</example>
+			<para>
+				Notice how the command button names the <literal>guess</literal> transition instead of calling an action directly.
+			</para>
+			<para>
+				The <literal>win.jsp</literal> page is predictable:
+			</para>
+			<example>
+				<title></title>
+				
+<programlisting>&lt;%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%&gt;
+&lt;%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;title&gt;You won!&lt;/title&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;h1&gt;You won!&lt;/h1&gt;
+&lt;f:view&gt;
+    Yes, the answer was &lt;h:outputText value="#{numberGuess.currentGuess}" /&gt;.
+    It took you &lt;h:outputText value="#{numberGuess.guessCount}" /&gt; guesses.
+    Would you like to &lt;a href="numberGuess.seam"&gt;play again&lt;/a&gt;?
+  &lt;/f:view&gt;
+&lt;/body&gt;
+&lt;/html&gt;
+</programlisting>
+			</example>
+			<para>
+				As is <literal>lose.jsp</literal> (which I can not be bothered copy/pasting). Finally, the JavaBean Seam component:
+			</para>
+			<example>
+				<title></title>
+				<!-- 	<programlistingco>
+				<areaspec>
+					<area coords="12" id="numberguess-create" />
+					<area coords="13" id="numberguess-begin" />
+				</areaspec>  -->
+<programlisting>@Name("numberGuess")
+ at Scope(ScopeType.CONVERSATION)
+public class NumberGuess {
+   
+   private int randomNumber;
+   private Integer currentGuess;
+   private int biggest;
+   private int smallest;
+   private int guessCount;
+   private int maxGuesses;
+   
+   @Create 
+   @Begin(pageflow="numberGuess")
+   public void begin()
+   {
+      randomNumber = new Random().nextInt(100);
+      guessCount = 0;
+      biggest = 100;
+      smallest = 1;
+   }
+   
+   public void setCurrentGuess(Integer guess)
+   {
+      this.currentGuess = guess;
+   }
+   
+   public Integer getCurrentGuess()
+   {
+      return currentGuess;
+   }
+   
+   public void guess()
+   {
+      if (currentGuess&gt;randomNumber)
+      {
+         biggest = currentGuess - 1;
+      }
+      if (currentGuess&lt;randomNumber)
+      {
+         smallest = currentGuess + 1;
+      }
+      guessCount ++;
+   }
+   
+   public boolean isCorrectGuess()
+   {
+      return currentGuess==randomNumber;
+   }
+   
+   public int getBiggest()
+   {
+      return biggest;
+   }
+   
+   public int getSmallest()
+   {
+      return smallest;
+   }
+   
+   public int getGuessCount()
+   {
+      return guessCount;
+   }
+   
+   public boolean isLastGuess()
+   {
+      return guessCount==maxGuesses;
+   }
+
+   public int getRemainingGuesses() {
+      return maxGuesses-guessCount;
+   }
+
+   public void setMaxGuesses(int maxGuesses) {
+      this.maxGuesses = maxGuesses;
+   }
+
+   public int getMaxGuesses() {
+      return maxGuesses;
+   }
+
+   public int getRandomNumber() {
+      return randomNumber;
+   }
+}
+</programlisting>
+				<orderedlist>
+					<listitem>
+						<para>
+							The first time a JSP page asks for a <literal>numberGuess</literal> component, Seam will create a new one for it, and the <literal>@Create</literal> method will be invoked, allowing the component to initialize itself.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							The <literal>@Begin</literal> annotation starts a Seam <emphasis>conversation</emphasis> (much more about that later), and specifies the pageflow definition to use for the conversation's page flow.
+						</para>
+					</listitem>
+				</orderedlist>
+				<!-- 	</programlistingco>  -->
+			</example>
+			<para>
+				As you can see, this Seam component is pure business logic! It does not need to know anything at all about the user interaction flow. This makes the component potentially more reuseable.
+			</para>
+		</section>
+		
+		<!--   <section id="Seam_Reference_Guide-Seam_pageflow_the_numberguess_example-How_it_works">
+			<title>How it works</title>
+			<para>
+				TODO
+			</para>
+		</section>  -->
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_Tutorial-A_complete_Seam_application_the_Hotel_Booking_example">
+		<title>A complete Seam application: the Hotel Booking example</title>
+		<section id="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-Introduction">
+			<title>Introduction</title>
+			<para>
+				The booking application is a complete hotel room reservation system incorporating the following features:
+			</para>
+			<itemizedlist>
+				<listitem>
+					<para>
+						User registration
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						Login
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						Logout
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						Set password
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						Hotel search
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						Hotel selection
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						Room reservation
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						Reservation confirmation
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						Existing reservation list
+					</para>
+				</listitem>
+			</itemizedlist>
+			<para>
+				<figure id="Booking_Image">
+					<title>Booking Example</title>
+					<mediaobject>
+						<imageobject>
+							<imagedata align="center" fileref="images/booking.png" format="PNG" width="444" />
+						</imageobject>
+					</mediaobject>
+				</figure>
+			</para>
+			<para>
+				The booking application uses JSF, EJB 3.0 and Seam, together with Facelets for the view. There is also a port of this application to JSF, Facelets, Seam, JavaBeans and Hibernate3.
+			</para>
+			<para>
+				One of the things you will notice if you play with this application for long enough is that it is extremely <emphasis>robust</emphasis>. You can play with back buttons and browser refresh and opening multiple windows and entering nonsensical data as much as you like and you will find it very difficult to make the application crash. You might think that we spent weeks testing and fixing bugs to achive this. Actually, this is not the case. Seam was designed to make it very straightforward to build robust web applications and a lot of robustness that you are probably used to having to code yourself comes naturally and automatically with Seam.
+			</para>
+			<para>
+				As you browse the sourcecode of the example application, and learn how the application works, observe how the declarative state management and integrated validation has been used to achieve this robustness.
+			</para>
+		</section>
+		
+		<section id="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-Overview_of_the_booking_example">
+			<title>Overview of the booking example</title>
+			<para>
+				The project structure is identical to the previous one, to install and deploy this application, please refer to <xref linkend="Seam_Reference_Guide-Seam_Tutorial-Try_the_examples" />. Once you have successfully started the application, you can access it by pointing your browser to <ulink url="http://localhost:8080/seam-booking/"><literal>http://localhost:8080/seam-booking/</literal></ulink>
+			</para>
+			<para>
+				Just nine classes (plus six session beans local interfaces) where used to implement this application. Six session bean action listeners contain all the business logic for the listed features.
+			</para>
+			<itemizedlist>
+				<listitem>
+					<para>
+						<literal>BookingListAction</literal> retrieves existing bookings for the currently logged in user.
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						<literal>ChangePasswordAction</literal> updates the password of the currently logged in user.
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						<literal>HotelBookingAction</literal> implements the core functionality of the application: hotel room searching, selection, booking and booking confirmation. This functionality is implemented as a <emphasis>conversation</emphasis>, so this is the most interesting class in the application.
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						<literal>RegisterAction</literal> registers a new system user.
+					</para>
+				</listitem>
+			</itemizedlist>
+			<para>
+				Three entity beans implement the application's persistent domain model.
+			</para>
+			<itemizedlist>
+				<listitem>
+					<para>
+						<literal>Hotel</literal> is an entity bean that represents a hotel
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						<literal>Booking</literal> is an entity bean that represents an existing booking
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						<literal>User</literal> is an entity bean to represents a user who can make hotel bookings
+					</para>
+				</listitem>
+			</itemizedlist>
+		</section>
+		
+		<section id="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-Understanding_Seam_conversations">
+			<title>Understanding Seam conversations</title>
+			<para>
+				We encourage you browse the sourcecode at your pleasure. In this tutorial we will concentrate upon one particular piece of functionality: hotel search, selection, booking and confirmation. From the point of view of the user, everything from selecting a hotel to confirming a booking is one continuous unit of work, a <emphasis>conversation</emphasis>. Searching, however, is <emphasis>not</emphasis> part of the conversation. The user can select multiple hotels from the same search results page, in different browser tabs.
+			</para>
+			<para>
+				Most web application architectures have no first class construct to represent a conversation. This causes enormous problems managing state associated with the conversation. Usually, Java web applications use a combination of two techniques: first, some state is thrown into the <literal>HttpSession</literal>; second, persistable state is flushed to the database after every request, and reconstructed from the database at the beginning of each new request.
+			</para>
+			<para>
+				Since the database is the least scalable tier, this often results in an utterly unacceptable lack of scalability. Added latency is also a problem, due to the extra traffic to and from the database on every request. To reduce this redundant traffic, Java applications often introduce a data (second-level) cache that keeps commonly accessed data between requests. This cache is necessarily inefficient, because invalidation is based upon an LRU policy instead of being based upon when the user has finished working with the data. Furthermore, because the cache is shared between many concurrent transactions, we have introduced a whole raft of problem's associated with keeping the cached state consistent with the database.
+			</para>
+			<para>
+				Now consider the state held in the <literal>HttpSession</literal>. By very careful programming, we might be able to control the size of the session data. This is a lot more difficult than it sounds, since web browsers permit ad hoc non-linear navigation. But suppose we suddenly discover a system requirement that says that a user is allowed to have <emphasis>mutiple concurrent conversations</emphasis>, halfway through the development of the system (this has happened to me). Developing mechanisms to isolate session state associated with different concurrent conversations, and incorporating failsafes to ensure that conversation state is destroyed when the user aborts one of the conversations by closing a browser window or tab can be tough. <!--  (I've implemented this stuff twice so far, once for a client application, once for Seam, but I'm famously psychotic).  -->
+			</para>
+			<para>
+				Now there is a better way.
+			</para>
+			<para>
+				Seam introduces the <emphasis>conversation context</emphasis> as a first class construct. You can safely keep conversational state in this context, and be assured that it will have a well-defined lifecycle. Even better, you will not need to be continually pushing data back and forth between the application server and the database, since the conversation context is a natural cache of data that the user is currently working with.
+			</para>
+			<para>
+				Usually, the components we keep in the conversation context are stateful session beans. (We can also keep entity beans and JavaBeans in the conversation context.) There is an ancient canard in the Java community that stateful session beans are a scalability killer. This may have been true in 1998 when WebFoobar 1.0 was released. It is no longer true today. Application servers like JBoss 4.0 have extremely sophisticated mechanisms for stateful session bean state replication. (For example, the JBoss EJB3 container performs fine-grained replication, replicating only those bean attribute values which actually changed.) Note that all the traditional technical arguments for why stateful beans are inefficient apply equally to the <literal>HttpSession</literal>, so the practice of shifting state from business tier stateful session bean components to the web session to try and improve performance is unbelievably misguided. It is certainly possible to write unscalable application!
 s using stateful session beans, by using stateful beans incorrectly, or by using them for the wrong thing. But that does not mean you should <emphasis>never</emphasis> use them. Anyway, Seam guides you toward a safe usage model. <!-- Welcome to 2005.  -->
+			</para>
+			<!-- 	<para>
+				OK, I'll stop ranting now, and get back to the tutorial.
+			</para>  -->
+			<para>
+				The booking example application shows how stateful components with different scopes can collaborate together to achieve complex behaviors. The main page of the booking application allows the user to search for hotels. The search results are kept in the Seam session scope. When the user navigates to one of these hotels, a conversation begins, and a conversation scoped component calls back to the session scoped component to retrieve the selected hotel.
+			</para>
+			<para>
+				The booking example also demonstrates the use of Ajax4JSF to implement rich client behavior without the use of handwritten JavaScript.
+			</para>
+			<para>
+				The search functionality is implemented using a session-scope stateful session bean, similar to the one we saw in the message list example above.
+			</para>
+			<!-- 	<example><title></title>  --><!-- 	<programlistingco>
+				<areaspec>
+					<area coords="1" id="booking-stateful-annotation" />
+					<area coords="4" id="booking-restrict-annotation" />
+					<area coords="16" id="booking-datamodel-annotation" />
+					<area coords="66" id="booking-destroy-annotation" />
+				</areaspec>  -->
+<programlisting>@Stateful
+ at Name("hotelSearch")
+ at Scope(ScopeType.SESSION)
+ at Restrict("#{identity.loggedIn}")
+public class HotelSearchingAction implements HotelSearching
+{
+   
+   @PersistenceContext
+   private EntityManager em;
+   
+   private String searchString;
+   private int pageSize = 10;
+   private int page;
+   
+   @DataModel
+   private List&lt;Hotel&gt; hotels;
+   
+   public String find()
+   {
+      page = 0;
+      queryHotels();   
+      return "main";
+   }
+
+   public String nextPage()
+   {
+      page++;
+      queryHotels();
+      return "main";
+   }
+      
+   private void queryHotels()
+   {
+      String searchPattern = searchString==null ? "%" : '%' + 
+         searchString.toLowerCase().replace('*', '%') + '%';
+      hotels = em.createQuery("select h from Hotel h where lower(h.name) like 
+        :search or lower(h.city) like :search 
+        or lower(h.zip) like :search or lower(h.address) like :search")
+            .setParameter("search", searchPattern)
+            .setMaxResults(pageSize)
+            .setFirstResult( page * pageSize )
+            .getResultList();
+   }
+   
+   public boolean isNextPageAvailable()
+   {
+      return hotels!=null &amp;&amp; hotels.size()==pageSize;
+   }
+   
+   public int getPageSize() {
+      return pageSize;
+   }
+
+   public void setPageSize(int pageSize) {
+      this.pageSize = pageSize;
+   }
+
+   public String getSearchString()
+   {
+      return searchString;
+   }
+
+   public void setSearchString(String searchString)
+   {
+      this.searchString = searchString;
+   }
+   
+   @Destroy @Remove
+   public void destroy() {}
+
+}
+</programlisting>
+			<orderedlist>
+				<listitem>
+					<para>
+						The EJB standard <literal>@Stateful</literal> annotation identifies this class as a stateful session bean. Stateful session beans are scoped to the conversation context by default.
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						The <literal>@Restrict</literal> annotation applies a security restriction to the component. It restricts access to the component allowing only logged-in users. The security chapter explains more about security in Seam.
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						The <literal>@DataModel</literal> annotation exposes a <literal>List</literal> as a JSF <literal>ListDataModel</literal>. This makes it easy to implement clickable lists for search screens. In this case, the list of hotels is exposed to the page as a <literal>ListDataModel</literal> in the conversation variable named <literal>hotels</literal>.
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						The EJB standard <literal>@Remove</literal> annotation specifies that a stateful session bean should be removed and its state destroyed after invocation of the annotated method. In Seam, all stateful session beans should define a method marked <literal>@Destroy @Remove</literal>. This is the EJB remove method that will be called when Seam destroys the session context. Actually, the <literal>@Destroy</literal> annotation is of more general usefulness, since it can be used for any kind of cleanup that should happen when any Seam context ends. If you do not have an <literal>@Destroy @Remove</literal> method, state will leak and you will suffer performance problems.
+					</para>
+				</listitem>
+			</orderedlist>
+			<!-- 	</programlistingco>  --><!-- 	</example> -->
+			<para>
+				The main page of the application is a Facelets page. Let us look at the fragment which relates to searching for hotels:
+			</para>
+			<!-- 	<example><title></title> --><!-- 	<programlistingco>
+				<areaspec>
+					<area coords="11" id="booking-support-element" />
+					<area coords="18" id="booking-status-element" />
+					<area coords="35" id="booking-outputpanel-element" />
+					<area coords="58" id="booking-link-element" />
+				</areaspec>  -->
+<programlisting>&lt;div class="section"&gt;
+&lt;h:form&gt;
+  
+  &lt;span class="errors"&gt;
+    &lt;h:messages globalOnly="true"/&gt;
+  &lt;/span&gt;
+    
+  &lt;h1&gt;Search Hotels&lt;/h1&gt;
+  &lt;fieldset&gt; 
+     &lt;h:inputText value="#{hotelSearch.searchString}" style="width: 165px;"&gt;
+        &lt;a:support event="onkeyup" actionListener="#{hotelSearch.find}" 
+                   reRender="searchResults" /&gt;
+     &lt;/h:inputText&gt;
+      
+     &lt;a:commandButton value="Find Hotels" action="#{hotelSearch.find}" 
+                      styleClass="button" reRender="searchResults"/&gt;
+      
+     &lt;a:status&gt;
+        &lt;f:facet name="start"&gt;
+           &lt;h:graphicImage value="/img/spinner.gif"/&gt;
+        &lt;/f:facet&gt;
+     &lt;/a:status&gt;
+     &lt;br/&gt;
+     &lt;h:outputLabel for="pageSize"&gt;Maximum results:&lt;/h:outputLabel&gt; 
+     &lt;h:selectOneMenu value="#{hotelSearch.pageSize}" id="pageSize"&gt;
+        &lt;f:selectItem itemLabel="5" itemValue="5"/&gt;
+        &lt;f:selectItem itemLabel="10" itemValue="10"/&gt;
+        &lt;f:selectItem itemLabel="20" itemValue="20"/&gt;
+     &lt;/h:selectOneMenu&gt;
+  &lt;/fieldset&gt;
+    
+&lt;/h:form&gt;
+&lt;/div&gt;
+
+&lt;a:outputPanel id="searchResults"&gt;
+  &lt;div class="section"&gt;
+  &lt;h:outputText value="No Hotels Found" 
+                rendered="#{hotels != null and hotels.rowCount==0}"/&gt;
+  &lt;h:dataTable value="#{hotels}" var="hot" rendered="#{hotels.rowCount&gt;0}"&gt;
+    &lt;h:column&gt;
+      &lt;f:facet name="header"&gt;Name&lt;/f:facet&gt;
+      #{hot.name}
+    &lt;/h:column&gt;
+    &lt;h:column&gt;
+      &lt;f:facet name="header"&gt;Address&lt;/f:facet&gt;
+      #{hot.address}
+    &lt;/h:column&gt;
+    &lt;h:column&gt;
+      &lt;f:facet name="header"&gt;City, State&lt;/f:facet&gt;
+      #{hot.city}, #{hot.state}, #{hot.country}
+    &lt;/h:column&gt; 
+    &lt;h:column&gt;
+      &lt;f:facet name="header"&gt;Zip&lt;/f:facet&gt;
+      #{hot.zip}
+    &lt;/h:column&gt;
+    &lt;h:column&gt;
+      &lt;f:facet name="header"&gt;Action&lt;/f:facet&gt;
+      &lt;s:link value="View Hotel" action="#{hotelBooking.selectHotel(hot)}"/&gt;
+    &lt;/h:column&gt;
+  &lt;/h:dataTable&gt;
+  &lt;s:link value="More results" action="#{hotelSearch.nextPage}" 
+          rendered="#{hotelSearch.nextPageAvailable}"/&gt;
+  &lt;/div&gt;
+&lt;/a:outputPanel&gt;
+</programlisting>
+			<orderedlist>
+				<listitem>
+					<para>
+						The Ajax4JSF <literal>&lt;a:support&gt;</literal> tag allows a JSF action event listener to be called by asynchronous <literal>XMLHttpRequest</literal> when a JavaScript event like <literal>onkeyup</literal> occurs. Even better, the <literal>reRender</literal> attribute lets us render a fragment of the JSF page and perform a partial page update when the asynchronous response is received.
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						The Ajax4JSF <literal>&lt;a:status&gt;</literal> tag lets us display a cheesy annimated image while we wait for asynchronous requests to return.
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						The Ajax4JSF <literal>&lt;a:outputPanel&gt;</literal> tag defines a region of the page which can be re-rendered by an asynchronous request.
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						The Seam <literal>&lt;s:link&gt;</literal> tag lets us attach a JSF action listener to an ordinary (non-JavaScript) HTML link. The advantage of this over the standard JSF <literal>&lt;h:commandLink&gt;</literal> is that it preserves the operation of "open in new window" and "open in new tab". Also notice that we use a method binding with a parameter: <literal>#{hotelBooking.selectHotel(hot)}</literal>. This is not possible in the standard Unified EL, but Seam provides an extension to the EL that lets you use parameters on any method binding expression.
+					</para>
+				</listitem>
+			</orderedlist>
+			<!-- 	</programlistingco>  --><!-- 	</example> -->
+			<para>
+				This page displays the search results dynamically as we type, and lets us choose a hotel and pass it to the <literal>selectHotel()</literal> method of the <literal>HotelBookingAction</literal>, which is where the <emphasis>really</emphasis> interesting stuff is going to happen.
+			</para>
+			<para>
+				Now lets see how the booking example application uses a conversation-scoped stateful session bean to achieve a natural cache of persistent data related to the conversation. The following code example is pretty long. But if you think of it as a list of scripted actions that implement the various steps of the conversation, it is understandable. Read the class from top to bottom, as if it were a story.
+			</para>
+			<!-- 		<example><title></title>  --><!-- 	<programlistingco>
+				<areaspec>
+					<area coords="7" id="booking-extendedpersistencecontext-annotation" />
+					<area coords="10" id="booking-out-annotation" />
+					<area coords="29" id="booking-begin-annotation" />
+					<area coords="61" id="booking-end-annotation" />
+					<area coords="78" id="booking-dest-annotation" />
+				</areaspec>  -->
+<programlisting>@Stateful
+ at Name("hotelBooking")
+ at Restrict("#{identity.loggedIn}")
+public class HotelBookingAction implements HotelBooking
+{
+   
+   @PersistenceContext(type=EXTENDED)
+   private EntityManager em;
+   
+   @In 
+   private User user;
+   
+   @In(required=false) @Out
+   private Hotel hotel;
+   
+   @In(required=false) 
+   @Out(required=false)
+   private Booking booking;
+     
+   @In
+   private FacesMessages facesMessages;
+      
+   @In
+   private Events events;
+   
+   @Logger 
+   private Log log;
+   
+   @Begin
+   public String selectHotel(Hotel selectedHotel)
+   {
+      hotel = em.merge(selectedHotel);
+      return "hotel";
+   }
+   
+   public String bookHotel()
+   {      
+      booking = new Booking(hotel, user);
+      Calendar calendar = Calendar.getInstance();
+      booking.setCheckinDate( calendar.getTime() );
+      calendar.add(Calendar.DAY_OF_MONTH, 1);
+      booking.setCheckoutDate( calendar.getTime() );
+      
+      return "book";
+   }
+
+   public String setBookingDetails()
+   {
+      if (booking==null || hotel==null) return "main";
+      if ( !booking.getCheckinDate().before( booking.getCheckoutDate() ) )
+      {
+         facesMessages.add("Check out date must be later than check in date");
+         return null;
+      }
+      else
+      {
+         return "confirm";
+      }
+   }
+
+   @End
+   public String confirm()
+   {
+      if (booking==null || hotel==null) return "main";
+      em.persist(booking);
+      facesMessages.add
+       ("Thank you, #{user.name}, your confimation number for #{hotel.name} is #{booking.id}");
+      log.info("New booking: #{booking.id} for #{user.username}");
+      events.raiseEvent("bookingConfirmed");
+      return "confirmed";
+   }
+   
+   @End
+   public String cancel()
+   {
+      return "main";
+   }
+   
+   @Destroy @Remove
+   public void destroy() {}
+
+}
+</programlisting>
+			<orderedlist>
+				<listitem>
+					<para>
+						This bean uses an EJB3 <emphasis>extended persistence context</emphasis>, so that any entity instances remain managed for the whole lifecycle of the stateful session bean.
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						The <literal>@Out</literal> annotation declares that an attribute value is <emphasis>outjected</emphasis> to a context variable after method invocations. In this case, the context variable named <literal>hotel</literal> will be set to the value of the <literal>hotel</literal> instance variable after every action listener invocation completes.
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						The <literal>@Begin</literal> annotation specifies that the annotated method begins a <emphasis>long-running conversation</emphasis>, so the current conversation context will not be destroyed at the end of the request. Instead, it will be reassociated with every request from the current window, and destroyed either by timeout due to conversation inactivity or invocation of a matching <literal>@End</literal> method.
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						The <literal>@End</literal> annotation specifies that the annotated method ends the current long-running conversation, so the current conversation context will be destroyed at the end of the request.
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						This EJB remove method will be called when Seam destroys the conversation context and must always be defined.
+					</para>
+				</listitem>
+			</orderedlist>
+			<!-- 	</programlistingco>  --><!-- 	</example> -->
+			<para>
+				<literal>HotelBookingAction</literal> contains all the action listener methods that implement selection, booking and booking confirmation, and holds state related to this work in its instance variables. We think you will agree that this code is much cleaner and simpler than getting and setting <literal>HttpSession</literal> attributes.
+			</para>
+			<para>
+				Even better, a user can have multiple isolated conversations per login session. Try it! Log in, run a search, and navigate to different hotel pages in multiple browser tabs. You will be able to work on creating two different hotel reservations at the same time. If you leave any one conversation inactive for long enough, Seam will eventually time out that conversation and destroy its state. If, after ending a conversation, you backbutton to a page of that conversation and try to perform an action, Seam will detect that the conversation was already ended, and redirect you to the search page.
+			</para>
+		</section>
+		
+		<section id="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-The_Seam_UI_control_library">
+			<title>The Seam UI control library</title>
+			<para>
+				If you check inside the WAR file for the booking application, you will find <literal>seam-ui.jar</literal> in the <literal>WEB-INF/lib</literal> directory. This package contains a number of JSF custom controls that integrate with Seam. The booking application uses the <literal>&lt;s:link&gt;</literal> control for navigation from the search screen to the hotel page:
+			</para>
+			
+<programlisting>&lt;s:link value="View Hotel" action="#{hotelBooking.selectHotel}"/&gt;
+</programlisting>
+			<para>
+				The use of <literal>&lt;s:link&gt;</literal> here allows us to attach an action listener to a HTML link without breaking the browser's "open in new window" feature. The standard JSF <literal>&lt;h:commandLink&gt;</literal> does not work with "open in new window". We'll see later that <literal>&lt;s:link&gt;</literal> also offers a number of other useful features, including conversation propagation rules.
+			</para>
+			<para>
+				The booking application uses some other Seam and Ajax4JSF controls, especially on the <literal>/book.xhtml</literal> page. We will not get into the details of those controls here, but if you want to understand this code, please refer to the chapter covering Seam's functionality for JSF form validation.
+			</para>
+		</section>
+		
+		<section id="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-The_Seam_Debug_Page">
+			<title>The Seam Debug Page</title>
+			<para>
+				The WAR also includes <literal>seam-debug.jar</literal>. If this jar is deployed in <literal>WEB-INF/lib</literal>, along with the Facelets, and if you set the following Seam property in <literal>web.xml</literal> or <literal>seam.properties</literal>:
+			</para>
+			
+<programlisting>&lt;context-param&gt;
+    &lt;param-name&gt;org.jboss.seam.core.init.debug&lt;/param-name&gt;
+    &lt;param-value&gt;true&lt;/param-value&gt;
+&lt;/context-param&gt;
+</programlisting>
+			<para>
+				Then the Seam debug page will be available. This page lets you browse and inspect the Seam components in any of the Seam contexts associated with your current login session. Just point your browser at <ulink url="http://localhost:8080/seam-booking/debug.seam"><literal>http://localhost:8080/seam-booking/debug.seam</literal></ulink>.
+			</para>
+			<mediaobject>
+				<imageobject role="fo">
+					<imagedata align="center" fileref="images/debug.png" format="PNG" width="444" />
+				</imageobject>
+				<!-- 	<imageobject role="html">
+					<imagedata align="center" fileref="../shared/images/debug.png" />
+				</imageobject>  -->
+			</mediaobject>
+		</section>
+
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_Tutorial-A_complete_application_featuring_Seam_and_jBPM_the_DVD_Store_example">
+		<title>A complete application featuring Seam and jBPM: the DVD Store example</title>
+		<para>
+			The DVD Store demo application shows the practical usage of jBPM for both task management and pageflow.
+		</para>
+		<para>
+			The user screens take advantage of a jPDL pageflow to implement searching and shopping cart functionality.
+		</para>
+		<screenshot><screeninfo>DVD Store example</screeninfo>
+		<mediaobject>
+			<imageobject role="fo">
+				<imagedata align="center" fileref="images/dvdsearch.png" format="PNG" width="444" />
+			</imageobject>
+			<!-- 	<imageobject role="html">
+				<imagedata align="center" fileref="../shared/images/dvdsearch.png" />
+			</imageobject>  -->
+		</mediaobject>
+		</screenshot>
+		<para>
+			The administration screens take use jBPM to manage the approval and shipping cycle for orders. The business process may even be changed dynamically, by selecting a different process definition!
+		</para>
+		<screenshot><screeninfo>DVD Store example</screeninfo>
+		<mediaobject>
+			<imageobject role="fo">
+				<imagedata align="center" fileref="images/dvdtasks.png" format="PNG" width="444" />
+			</imageobject>
+			<!-- 	<imageobject role="html">
+				<imagedata align="center" fileref="../shared/images/dvdtasks.png" />
+			</imageobject>  -->
+		</mediaobject>
+		</screenshot><!--   <para>
+			TODO
+		</para>
+		<para>
+			Look in the <literal>dvdstore</literal> directory.
+		</para>  -->
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_Tutorial-A_complete_application_featuring_Seam_workspace_management_the_Issue_Tracker_example">
+		<title>A complete application featuring Seam workspace management: the Issue Tracker example</title>
+		<para>
+			The Issue Tracker demo shows off Seam's workspace management functionality: the conversation switcher, conversation list and breadcrumbs.
+		</para>
+		<para>
+			<note>
+				<para>
+					To log into the Issue Tracker demo you must provide a username and password. You can find this in the <filename>resources/import.sql</filename> file or use "gavin" and "foobar" for username and password respectively.
+				</para>
+			</note>
+		</para>
+		<screenshot><screeninfo>DVD Store example</screeninfo>
+		<mediaobject>
+			<imageobject role="fo">
+				<imagedata align="center" fileref="images/issues.png" format="PNG" width="444" />
+			</imageobject>
+			<!-- 	<imageobject role="html">
+				<imagedata align="center" fileref="../shared/images/issues.png" />
+			</imageobject>  -->
+		</mediaobject>
+		</screenshot><!--  <para>
+			TODO
+		</para>  --><!--  <para>
+			Look in the <literal>issues</literal> directory.
+		</para>  -->
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_Tutorial-An_example_of_Seam_with_Hibernate_the_Hibernate_Booking_example">
+		<title>An example of Seam with Hibernate: the Hibernate Booking example</title>
+		<para>
+			The Hibernate Booking demo is a straight port of the Booking demo to an alternative architecture that uses Hibernate for persistence and JavaBeans instead of session beans.
+		</para>
+		<!--   <para>
+			TODO
+		</para>
+		<para>
+			Look in the <literal>hibernate</literal> directory.
+		</para>  -->
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_Tutorial-A_RESTful_Seam_application_the_Blog_example">
+		<title>A RESTful Seam application: the Blog example</title>
+		<para>
+			Seam makes it very easy to implement applications which keep state on the server-side. However, server-side state is not always appropriate, especially in for functionality that serves up <emphasis>content</emphasis>. For this kind of problem we often need to let the user bookmark pages and have a relatively stateless server, so that any page can be accessed at any time, via the bookmark. The Blog example shows how to a implement RESTful application using Seam. Every page of the application can be bookmarked, including the search results page.
+		</para>
+		<screenshot><screeninfo>Blog example</screeninfo>
+		<mediaobject>
+			<imageobject role="fo">
+				<imagedata align="center" fileref="images/blog.png" format="PNG" width="444" />
+			</imageobject>
+			<!-- 	<imageobject role="html">
+				<imagedata align="center" fileref="../shared/images/blog.png" />
+			</imageobject>  -->
+		</mediaobject>
+		</screenshot>
+		<para>
+			The Blog example demonstrates the use of "pull"-style MVC, where instead of using action listener methods to retrieve data and prepare the data for the view, the view pulls data from components as it is being rendered.
+		</para>
+		<section id="Seam_Reference_Guide-A_RESTful_Seam_application_the_Blog_example-Using_pull_style_MVC">
+			<title>Using "pull"-style MVC</title>
+			<para>
+				This snippet from the <literal>index.xhtml</literal> facelets page displays a list of recent blog entries:
+			</para>
+			<example>
+				<title></title>
+				
+<programlisting>&lt;h:dataTable value="#{blog.recentBlogEntries}" var="blogEntry" rows="3"&gt;
+   &lt;h:column&gt;
+      &lt;div class="blogEntry"&gt;
+         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;
+         &lt;div&gt;
+            &lt;h:outputText escape="false" 
+                  value="#{blogEntry.excerpt==null ? blogEntry.body : blogEntry.excerpt}"/&gt;
+         &lt;/div&gt;
+         &lt;p&gt;
+            &lt;h:outputLink value="entry.seam" rendered="#{blogEntry.excerpt!=null}"&gt;
+               &lt;f:param name="blogEntryId" value="#{blogEntry.id}"/&gt;
+               Read more...
+            &lt;/h:outputLink&gt;
+         &lt;/p&gt;
+         &lt;p&gt;
+            [Posted on 
+            &lt;h:outputText value="#{blogEntry.date}"&gt;
+               &lt;f:convertDateTime timeZone="#{blog.timeZone}" locale="#{blog.locale}" 
+                                     type="both"/&gt;
+            &lt;/h:outputText&gt;]
+             
+            &lt;h:outputLink value="entry.seam"&gt;[Link]
+               &lt;f:param name="blogEntryId" value="#{blogEntry.id}"/&gt;
+            &lt;/h:outputLink&gt;
+         &lt;/p&gt;
+      &lt;/div&gt;
+   &lt;/h:column&gt;
+&lt;/h:dataTable&gt;
+</programlisting>
+			</example>
+			<para>
+				If we navigate to this page from a bookmark, how does the data used by the <literal>&lt;h:dataTable&gt;</literal> actually get initialized? Well, what happens is that the <literal>Blog</literal> is retrieved lazily&mdash;"pulled"&mdash;when needed, by a Seam component named <literal>blog</literal>. This is the opposite flow of control to what is usual in traditional web action-based frameworks like Struts.
+			</para>
+			<example>
+				<title></title>
+				<!-- 	<programlistingco>
+				<areaspec>
+					<area coords="6" id="blog-seampc" />
+					<area coords="9" id="blog-unwrap" />
+				</areaspec>  -->
+<programlisting>@Name("blog")
+ at Scope(ScopeType.STATELESS)
+public class BlogService 
+{
+   
+   @In
+   private EntityManager entityManager;
+  
+   @Unwrap
+   public Blog getBlog()
+   {
+      return (Blog) entityManager.createQuery("from Blog b left join fetch b.blogEntries")
+            .setHint("org.hibernate.cacheable", true)
+            .getSingleResult();
+   }
+
+}
+</programlisting>
+				<orderedlist>
+					<listitem>
+						<para>
+							This component uses a <emphasis>seam-managed persistence context</emphasis>. Unlike the other examples we have seen, this persistence context is managed by Seam, instead of by the EJB3 container. The persistence context spans the entire web request, allowing us to avoid any exceptions that occur when accessing unfetched associations in the view.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							The <literal>@Unwrap</literal> annotation tells Seam to provide the return value of the method&mdash;the <literal>Blog</literal>&mdash;instead of the actual <literal>BlogService</literal> component to clients. This is the Seam <emphasis>manager component pattern</emphasis>.
+						</para>
+					</listitem>
+				</orderedlist>
+				<!-- 	</programlistingco>  -->
+			</example>
+			<para>
+				This is good so far, but what about bookmarking the result of form submissions, such as a search results page?
+			</para>
+		</section>
+		
+		<section id="Seam_Reference_Guide-A_RESTful_Seam_application_the_Blog_example-Bookmarkable_search_results_page">
+			<title>Bookmarkable search results page</title>
+			<para>
+				The blog example has a tiny form in the top right of each page that allows the user to search for blog entries. This is defined in a file, <literal>menu.xhtml</literal>, included by the facelets template, <literal>template.xhtml</literal>:
+			</para>
+			<example>
+				<title></title>
+				
+<programlisting>&lt;div id="search"&gt;
+   &lt;h:form&gt;
+      &lt;h:inputText value="#{searchAction.searchPattern}"/&gt;
+      &lt;h:commandButton value="Search" action="/search.xhtml"/&gt;
+   &lt;/h:form&gt;
+&lt;/div&gt;
+</programlisting>
+			</example>
+			<para>
+				To implement a bookmarkable search results page, we need to perform a browser redirect after processing the search form submission. Because we used the JSF view id as the action outcome, Seam automatically redirects to the view id when the form is submitted. Alternatively, we could have defined a navigation rule like this:
+			</para>
+			<example>
+				<title></title>
+				
+<programlisting>&lt;navigation-rule&gt;
+   &lt;navigation-case&gt;
+      &lt;from-outcome&gt;searchResults&lt;/from-outcome&gt;
+      &lt;to-view-id&gt;/search.xhtml&lt;/to-view-id&gt;
+      &lt;redirect/&gt;
+   &lt;/navigation-case&gt;
+&lt;/navigation-rule&gt;
+</programlisting>
+			</example>
+			<para>
+				Then the form would have looked like this:
+			</para>
+			<example>
+				<title></title>
+				
+<programlisting>&lt;div id="search"&gt;
+   &lt;h:form&gt;
+      &lt;h:inputText value="#{searchAction.searchPattern}"/&gt;
+      &lt;h:commandButton value="Search" action="searchResults"/&gt;
+   &lt;/h:form&gt;
+&lt;/div&gt;
+</programlisting>
+			</example>
+			<para>
+				But when we redirect, we need to include the values submitted with the form as request parameters, to get a bookmarkable URL like <literal>http://localhost:8080/seam-blog/search.seam?searchPattern=seam</literal>. JSF does not provide an easy way to do this, but Seam does. We use a Seam <emphasis>page parameter</emphasis>, defined in <literal>WEB-INF/pages.xml</literal>:
+			</para>
+			<example>
+				<title></title>
+				
+<programlisting>&lt;pages&gt;
+   &lt;page view-id="/search.xhtml"&gt;
+      &lt;param name="searchPattern" value="#{searchService.searchPattern}"/&gt;
+   &lt;/page&gt;
+   ...
+&lt;/pages&gt;
+</programlisting>
+			</example>
+			<para>
+				This tells Seam to include the value of <literal>#{searchService.searchPattern}</literal> as a request parameter named <literal>searchPattern</literal> when redirecting to the page, and then re-apply the value of that parameter to the model before rendering the page.
+			</para>
+			<para>
+				The redirect takes us to the <literal>search.xhtml</literal> page:
+			</para>
+			<example>
+				<title></title>
+				
+<programlisting>&lt;h:dataTable value="#{searchResults}" var="blogEntry"&gt;
+   &lt;h:column&gt;
+      &lt;div&gt;
+         &lt;h:outputLink value="entry.seam"&gt;
+            &lt;f:param name="blogEntryId" value="#{blogEntry.id}"/&gt;
+            #{blogEntry.title}
+         &lt;/h:outputLink&gt;
+         posted on 
+         &lt;h:outputText value="#{blogEntry.date}"&gt;
+            &lt;f:convertDateTime timeZone="#{blog.timeZone}" locale="#{blog.locale}" type="both"/&gt;
+         &lt;/h:outputText&gt;
+      &lt;/div&gt;
+   &lt;/h:column&gt;
+&lt;/h:dataTable&gt;
+</programlisting>
+			</example>
+			<para>
+				Which again uses "pull"-style MVC to retrieve the actual search results:
+			</para>
+			<example>
+				<title></title>
+				
+<programlisting>@Name("searchService")
+public class SearchService 
+{
+   
+   @In
+   private EntityManager entityManager;
+   
+   private String searchPattern;
+   
+   @Factory("searchResults")
+   public List&lt;BlogEntry&gt; getSearchResults()
+   {
+      if (searchPattern==null)
+      {
+         return null;
+      }
+      else
+      {
+         return entityManager.createQuery("select be from BlogEntry be where lower(be.title) 
+                               like :searchPattern or lower(be.body) like :searchPattern 
+                               order by be.date desc")
+               .setParameter( "searchPattern", getSqlSearchPattern() )
+               .setMaxResults(100)
+               .getResultList();
+      }
+   }
+
+   private String getSqlSearchPattern()
+   {
+      return searchPattern==null ? "" : '%' + 
+        searchPattern.toLowerCase().replace('*', '%').replace('?', '_') 
+           + '%';
+   }
+
+   public String getSearchPattern()
+   {
+      return searchPattern;
+   }
+
+   public void setSearchPattern(String searchPattern)
+   {
+      this.searchPattern = searchPattern;
+   }
+
+}
+</programlisting>
+			</example>
+		</section>
+		
+		<section id="Seam_Reference_Guide-A_RESTful_Seam_application_the_Blog_example-Using_push_style_MVC_in_a_RESTful_application">
+			<title>Using "push"-style MVC in a RESTful application</title>
+			<para>
+				Very occasionally, it makes more sense to use push-style MVC for processing RESTful pages, and so Seam provides the notion of a <emphasis>page action</emphasis>. The Blog example uses a page action for the blog entry page, <literal>entry.xhtml</literal>. Note that this is a little bit contrived, it would have been easier to use pull-style MVC here as well.
+			</para>
+			<para>
+				The <literal>entryAction</literal> component works much like an action class in a traditional push-MVC action-oriented framework like Struts:
+			</para>
+			<example>
+				<title></title>
+				
+<programlisting>@Name("entryAction")
+ at Scope(STATELESS)
+public class EntryAction
+{
+   @In(create=true) 
+   private Blog blog;
+   
+   @Out
+   private BlogEntry blogEntry;
+   
+   public void loadBlogEntry(String id) throws EntryNotFoundException
+   {
+      blogEntry = blog.getBlogEntry(id);
+      if (blogEntry==null) throw new EntryNotFoundException(id);
+   }
+   
+}
+</programlisting>
+			</example>
+			<para>
+				Page actions are also declared in <literal>pages.xml</literal>:
+			</para>
+			<example>
+				<title></title>
+				
+<programlisting>&lt;pages&gt;
+   ...
+
+   &lt;page view-id="/entry.xhtml" action="#{entryAction.loadBlogEntry(blogEntry.id)}"&gt;
+      &lt;param name="blogEntryId" value="#{blogEntry.id}"/&gt;
+   &lt;/page&gt;
+
+   &lt;page view-id="/post.xhtml" action="#{loginAction.challenge}"/&gt;
+
+   &lt;page view-id="*" action="#{blog.hitCount.hit}"/&gt;
+
+&lt;/pages&gt;
+</programlisting>
+			</example>
+			<para>
+				Notice that the example is using page actions for some other functionality&mdash;the login challenge, and the pageview counter. Also notice the use of a parameter in the page action method binding. This is not a standard feature of JSF EL, but Seam lets you use it, not just for page actions, but also in JSF method bindings.
+			</para>
+			<para>
+				When the <literal>entry.xhtml</literal> page is requested, Seam first binds the page parameter <literal>blogEntryId</literal> to the model, then runs the page action, which retrieves the needed data&mdash;the <literal>blogEntry</literal>&mdash;and places it in the Seam event context. Finally, the following is rendered:
+			</para>
+			<example>
+				<title></title>
+				
+<programlisting>&lt;div class="blogEntry"&gt;
+   &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;
+   &lt;div&gt;
+      &lt;h:outputText escape="false" value="#{blogEntry.body}"/&gt;
+   &lt;/div&gt;
+   &lt;p&gt;
+      [Posted on 
+      &lt;h:outputText value="#{blogEntry.date}"&gt;
+         &lt;f:convertDateTime timezone="#{blog.timeZone}" locale="#{blog.locale}" type="both"/&gt;
+      &lt;/h:outputText&gt;]
+   &lt;/p&gt;
+&lt;/div&gt;
+</programlisting>
+			</example>
+			<para>
+				If the blog entry is not found in the database, the <literal>EntryNotFoundException</literal> exception is thrown. We want this exception to result in a 404 error, not a 505, so we annotate the exception class:
+			</para>
+			<example>
+				<title></title>
+				
+<programlisting>@ApplicationException(rollback=true)
+ at HttpError(errorCode=HttpServletResponse.SC_NOT_FOUND)
+public class EntryNotFoundException extends Exception
+{
+   EntryNotFoundException(String id)
+   {
+      super("entry not found: " + id);
+   }
+}
+</programlisting>
+			</example>
+			<para>
+				An alternative implementation of the example does not use the parameter in the method binding:
+			</para>
+			<example>
+				<title></title>
+				
+<programlisting>@Name("entryAction")
+ at Scope(STATELESS)
+public class EntryAction
+{
+   @In(create=true) 
+   private Blog blog;
+   
+   @In @Out
+   private BlogEntry blogEntry;
+   
+   public void loadBlogEntry() throws EntryNotFoundException
+   {
+      blogEntry = blog.getBlogEntry( blogEntry.getId() );
+      if (blogEntry==null) throw new EntryNotFoundException(id);
+   }
+   
+}
+</programlisting>
+				
+<programlisting>&lt;pages&gt;
+   ...
+
+   &lt;page view-id="/entry.xhtml" action="#{entryAction.loadBlogEntry}"&gt;
+      &lt;param name="blogEntryId" value="#{blogEntry.id}"/&gt;
+   &lt;/page&gt;
+   
+   ...
+&lt;/pages&gt;
+</programlisting>
+			</example>
+			<para>
+				It is a matter of personal choice, which implementation you prefer.
+			</para>
+		</section>
+
+	</section>
+	
+	<!-- 
+	<section id="Seam_Reference_Guide-Seam_Tutorial-Running_the_Seam_examples_in_JBoss_using_the_JSF_1.2_RI">
+		<title>Running the Seam examples in JBoss using the JSF 1.2 RI</title>
+		<para>
+			JBoss AS 4.0 ships with the Apache MyFaces implementation of JSF 1.1. After many months of waiting, there is <emphasis>still</emphasis> no implementation of JSF 1.2 from MyFaces. For this and other reasons, JBoss AS 4.2 will embed the JSF 1.2 Reference Implementation by default. Soon after the release of 4.2, we will migrate the Seam examples to JSF 1.2.
+		</para>
+		<para>
+			For those who can't wait, Seam is already compatible with JSF 1.2, and it's easy to get the Seam examples running with JSF 1.2 in JBoss 4.0.5. Let's start with the famous booking example:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					copy <literal>jsf-api.jar</literal>, <literal>jsf-impl.jar</literal>, <literal>el-api.jar</literal>, <literal>el-ri.jar</literal> to <literal>server/default/deploy/tomcat/jbossweb-tomcat55.sar/jsf-libs</literal>.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					delete <literal>myfaces-api.jar</literal> and <literal>myfaces-impl.jar</literal> from <literal>server/default/deploy/tomcat/jbossweb-tomcat55.sar/jsf-libs</literal>.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					edit <literal>server/default/deploy/tomcat/jbossweb-tomcat55.sar/conf/web.xml</literal>, replacing <literal>myfaces-impl.jar</literal> with <literal>jsf-impl.jar</literal>.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					edit <literal>examples/booking/resources/WEB-INF/web.xml</literal>, deleting the MyFaces listener, uncommenting the RI listener
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					edit <literal>examples/booking/resources/WEB-INF/faces-config.xml</literal>, uncommenting the lines that install the <literal>SeamELResolver</literal> using the new JSF 1.2 XML schema declaration.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					edit <literal>examples/booking/resources/META-INF/application.xml</literal>, deleting the lines that declare <literal>el-api.jar</literal> and <literal>el-impl.jar</literal> as Java modules.
+				</para>
+			</listitem>
+		</itemizedlist>
+		<para>
+			Restart JBoss, and type <literal>ant</literal> in the <literal>examples/booking</literal> directory.
+		</para>
+	</section>
+	 -->
+</chapter>
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Validation.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Validation.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Validation.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,242 @@
+<?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" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Seam_Reference_Guide_CP07.ent">
+%BOOK_ENTITIES;
+]>
+<chapter id="Seam_Reference_Guide-JSF_form_validation_in_Seam" lang="en-US">
+	<title>JSF form validation in Seam</title>
+	<para>
+		In plain JSF, validation is defined in the view:
+	</para>
+	
+<programlisting>&lt;h:form&gt;
+    &lt;h:messages/&gt;
+
+    &lt;div&gt;
+        Country:
+        &lt;h:inputText value="#{location.country}" required="true"&gt;
+            &lt;my:validateCountry/&gt;
+        &lt;/h:inputText&gt;
+    &lt;/div&gt;
+    
+    &lt;div&gt;
+        Zip code:
+        &lt;h:inputText value="#{location.zip}" required="true"&gt;
+            &lt;my:validateZip/&gt;
+        &lt;/h:inputText&gt;
+    &lt;/div&gt;
+
+    &lt;h:commandButton/&gt;
+&lt;/h:form&gt;
+</programlisting>
+	<para>
+		In practice, this approach usually violates DRY, since most validation actually enforces constraints that are part of the data model, and exist all the way down to the database schema definition. Seam provides support for model-based constraints defined using Hibernate Validator.
+	</para>
+	<para>
+		Let us start by defining our constraints, on our <literal>Location</literal> class:
+	</para>
+	
+<programlisting>public class Location {
+    private String country;
+    private String zip;
+    
+    @NotNull
+    @Length(max=30)
+    public String getCountry() { return country; }
+    public void setCountry(String c) { country = c; }
+
+    @NotNull
+    @Length(max=6)
+    @Pattern("^\d*$")
+    public String getZip() { return zip; }
+    public void setZip(String z) { zip = z; }
+}
+</programlisting>
+	<para>
+		Well, that is a decent first cut, but in practice it might be more elegant to use custom constraints instead of the ones built into Hibernate Validator:
+	</para>
+	
+<programlisting>public class Location {
+    private String country;
+    private String zip;
+    
+    @NotNull
+    @Country
+    public String getCountry() { return country; }
+    public void setCountry(String c) { country = c; }
+
+    @NotNull
+    @ZipCode
+    public String getZip() { return zip; }
+    public void setZip(String z) { zip = z; }
+}
+</programlisting>
+	<para>
+		Whichever route we take, we no longer need to specify the type of validation to be used in the JSF page. Instead, we can use <literal>&lt;s:validate&gt;</literal> to validate against the constraint defined on the model object.
+	</para>
+	
+<programlisting>&lt;h:form&gt;
+    &lt;h:messages/&gt;
+
+    &lt;div&gt;
+        Country:
+        &lt;h:inputText value="#{location.country}" required="true"&gt;
+            &lt;s:validate/&gt;
+        &lt;/h:inputText&gt;
+    &lt;/div&gt;
+    
+    &lt;div&gt;
+        Zip code:
+        &lt;h:inputText value="#{location.zip}" required="true"&gt;
+            &lt;s:validate/&gt;
+        &lt;/h:inputText&gt;
+    &lt;/div&gt;
+    
+    &lt;h:commandButton/&gt;
+
+&lt;/h:form&gt;
+</programlisting>
+	<para>
+		<emphasis>Note:</emphasis> specifying <literal>@NotNull</literal> on the model does <emphasis>not</emphasis> eliminate the requirement for <literal>required="true"</literal> to appear on the control! This is due to a limitation of the JSF validation architecture.
+	</para>
+	<para>
+		This approach <emphasis>defines</emphasis> constraints on the model, and <emphasis>presents</emphasis> constraint violations in the view&mdash;a significantly better design.
+	</para>
+	<para>
+		However, it is not much less verbose than what we started with, so let us try <literal>&lt;s:validateAll&gt;</literal>:
+	</para>
+	
+<programlisting>&lt;h:form&gt;
+    
+    &lt;h:messages/&gt;
+
+    &lt;s:validateAll&gt;
+
+        &lt;div&gt;
+            Country:
+            &lt;h:inputText value="#{location.country}" required="true"/&gt;
+        &lt;/div&gt;
+
+        &lt;div&gt;
+            Zip code:
+            &lt;h:inputText value="#{location.zip}" required="true"/&gt;
+        &lt;/div&gt;
+
+        &lt;h:commandButton/&gt;
+
+    &lt;/s:validateAll&gt;
+
+&lt;/h:form&gt;
+</programlisting>
+	<para>
+		This tag simply adds an <literal>&lt;s:validate&gt;</literal> to every input in the form. For a large form, it can save a lot of typing.
+	</para>
+	<para>
+		Now we need to do something about displaying feedback to the user when validation fails. Currently we are displaying all messages at the top of the form. What we would really like to do is display the message next to the field with the error (this is possible in plain JSF), highlight the field and label (this is not possible) and, for good measure, display some image next the the field (also not possible). We also want to display a little colored asterisk next to the label for each required form field.
+	</para>
+	<para>
+		That is quite a lot of functionality we need for each field of our form. We would not want to have to specify higlighting and the layout of the image, message and input field for every field on the form. So, instead, we will specify the common layout in a facelets template:
+	</para>
+	
+<programlisting>&lt;ui:composition xmlns="http://www.w3.org/1999/xhtml"
+                xmlns:ui="http://java.sun.com/jsf/facelets"
+                xmlns:h="http://java.sun.com/jsf/html"
+                xmlns:f="http://java.sun.com/jsf/core"
+                xmlns:s="http://jboss.com/products/seam/taglib"&gt;
+                 
+    &lt;div&gt;
+    
+        &lt;s:label styleClass="#{invalid?'error':''}"&gt;
+            &lt;ui:insert name="label"/&gt;
+            &lt;s:span styleClass="required" rendered="#{required}"&gt;*&lt;/s:span&gt;
+        &lt;/s:label&gt;
+        
+        &lt;span class="#{invalid?'error':''}"&gt;
+            &lt;h:graphicImage src="img/error.gif" rendered="#{invalid}"/&gt;
+            &lt;s:validateAll&gt;
+                &lt;ui:insert/&gt;
+            &lt;/s:validateAll&gt;
+        &lt;/span&gt;
+        
+        &lt;s:message styleClass="error"/&gt;
+        
+    &lt;/div&gt;
+    
+&lt;/ui:composition&gt;
+</programlisting>
+	<para>
+		We can include this template for each of our form fields using <literal>&lt;s:decorate&gt;</literal>.
+	</para>
+	
+<programlisting>&lt;h:form&gt;
+
+    &lt;h:messages globalOnly="true"/&gt;
+
+    &lt;s:decorate template="edit.xhtml"&gt;
+        &lt;ui:define name="label"&gt;Country:&lt;/ui:define&gt;
+        &lt;h:inputText value="#{location.country}" required="true"/&gt;
+    &lt;/s:decorate&gt;
+    
+    &lt;s:decorate template="edit.xhtml"&gt;
+        &lt;ui:define name="label"&gt;Zip code:&lt;/ui:define&gt;
+        &lt;h:inputText value="#{location.zip}" required="true"/&gt;
+    &lt;/s:decorate&gt;
+
+    &lt;h:commandButton/&gt;
+
+&lt;/h:form&gt;
+</programlisting>
+	<para>
+		Finally, we can use Ajax4JSF to display validation messages as the user is navigating around the form:
+	</para>
+	
+<programlisting>&lt;h:form&gt;
+
+    &lt;h:messages globalOnly="true"/&gt;
+
+    &lt;s:decorate id="countryDecoration" template="edit.xhtml"&gt;
+        &lt;ui:define name="label"&gt;Country:&lt;/ui:define&gt;
+        &lt;h:inputText value="#{location.country}" required="true"&gt;
+            &lt;a:support event="onblur" reRender="countryDecoration"/&gt;
+        &lt;/h:inputText&gt;
+    &lt;/s:decorate&gt;
+    
+    &lt;s:decorate id="zipDecoration" template="edit.xhtml"&gt;
+        &lt;ui:define name="label"&gt;Zip code:&lt;/ui:define&gt;
+        &lt;h:inputText value="#{location.zip}" required="true"&gt;
+            &lt;a:support event="onblur" reRender="zipDecoration"/&gt;
+        &lt;/h:inputText&gt;
+    &lt;/s:decorate&gt;
+
+    &lt;h:commandButton/&gt;
+
+&lt;/h:form&gt;
+</programlisting>
+	<para>
+		As a final note, it would be better style to define explicit IDs for important controls on the page, especially if you want to do automated testing for the UI, using some toolkit like Selenium. If you do not provide explicit ids, JSF will generate them, but the generated values will change if you change anything on the page.
+	</para>
+	
+<programlisting>&lt;h:form id="form"&gt;
+
+    &lt;h:messages globalOnly="true"/&gt;
+
+    &lt;s:decorate id="countryDecoration" template="edit.xhtml"&gt;
+        &lt;ui:define name="label"&gt;Country:&lt;/ui:define&gt;
+        &lt;h:inputText id="country" value="#{location.country}" required="true"&gt;
+            &lt;a:support event="onblur" reRender="countryDecoration"/&gt;
+        &lt;/h:inputText&gt;
+    &lt;/s:decorate&gt;
+    
+    &lt;s:decorate id="zipDecoration" template="edit.xhtml"&gt;
+        &lt;ui:define name="label"&gt;Zip code:&lt;/ui:define&gt;
+        &lt;h:inputText id="zip" value="#{location.zip}" required="true"&gt;
+            &lt;a:support event="onblur" reRender="zipDecoration"/&gt;
+        &lt;/h:inputText&gt;
+    &lt;/s:decorate&gt;
+
+    &lt;h:commandButton/&gt;
+
+&lt;/h:form&gt;
+</programlisting>
+</chapter>
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Xml.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Xml.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/Xml.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,489 @@
+<?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" [
+<!ENTITY % BOOK_ENTITIES SYSTEM "Seam_Reference_Guide_CP07.ent">
+%BOOK_ENTITIES;
+]>
+<chapter id="Seam_Reference_Guide-Configuring_Seam_components" lang="en-US">
+	<title>Configuring Seam components</title>
+	<para>
+		The philosophy of minimizing XML-based configuration is extremely strong in Seam. Nevertheless, there are various reasons why we might want to configure a Seam component using XML: to isolate deployment-specific information from the Java code, to enable the creation of re-usable frameworks, to configure Seam's built-in functionality, etc. Seam provides two basic approaches to configuring components: configuration via property settings in a properties file or <literal>web.xml</literal>, and configuration via <literal>components.xml</literal>.
+	</para>
+	<sect1 id="Seam_Reference_Guide-Configuring_Seam_components-Configuring_components_via_property_settings"><title>Configuring components via property settings</title>
+	<para>
+		Seam components may be provided with configuration properties either via servlet context parameters, or via a properties file named <literal>seam.properties</literal> in the root of the classpath.
+	</para>
+	<para>
+		The configurable Seam component must expose JavaBeans-style property setter methods for the configurable attributes. If a seam component named <literal>com.jboss.myapp.settings</literal> has a setter method named <literal>setLocale()</literal>, we can provide a property named <literal>com.jboss.myapp.settings.locale</literal> in the <literal>seam.properties</literal> file or as a servlet context parameter, and Seam will set the value of the <literal>locale</literal> attribute whenever it instantiates the component.
+	</para>
+	<para>
+		The same mechanism is used to configure Seam itself. For example, to set the conversation timeout, we provide a value for <literal>org.jboss.seam.core.manager.conversationTimeout</literal> in <literal>web.xml</literal> or <literal>seam.properties</literal>. (There is a built-in Seam component named <literal>org.jboss.seam.core.manager</literal> with a setter method named <literal>setConversationTimeout()</literal>.)
+	</para>
+	</sect1><sect1 id="Seam_Reference_Guide-Configuring_Seam_components-Configuring_components_via_components.xml"><title>Configuring components via components.xml</title>
+	<para>
+		The <literal>components.xml</literal> file is a bit more powerful than property settings. It lets you:
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				Configure components that have been installed automatically&mdash;including both built-in components, and application components that have been annotated with the <literal>@Name</literal> annotation and picked up by Seam's deployment scanner.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Install classes with no <literal>@Name</literal> annotation as Seam components&mdash;this is most useful for certain kinds of infrastructural components which can be installed multiple times different names (for example Seam-managed persistence contexts).
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Install components that <emphasis>do</emphasis> have a <literal>@Name</literal> annotation but are not installed by default because of an <literal>@Install</literal> annotation that indicates the component should not be installed.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Override the scope of a component.
+			</para>
+		</listitem>
+	</itemizedlist>
+	<para>
+		A <literal>components.xml</literal> file may appear in one of three different places:
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				The <literal>WEB-INF</literal> directory of a <literal>war</literal>.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				The <literal>META-INF</literal> directory of a <literal>jar</literal>.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Any directory of a <literal>jar</literal> that contains classes with an <literal>@Name</literal> annotation.
+			</para>
+		</listitem>
+	</itemizedlist>
+	<para>
+		Usually, Seam components are installed when the deployment scanner discovers a class with a <literal>@Name</literal> annotation sitting in an archive with a <literal>seam.properties</literal> file or a <literal>META-INF/components.xml</literal> file. (Unless the component has an <literal>@Install</literal> annotation indicating it should not be installed by default.) The <literal>components.xml</literal> file lets us handle special cases where we need to override the annotations.
+	</para>
+	<para>
+		For example, the following <literal>components.xml</literal> file installs the JBoss Embeddable EJB3 container:
+	</para>
+	
+<programlisting>&lt;components xmlns="http://jboss.com/products/seam/components" 
+            xmlns:core="http://jboss.com/products/seam/core"&gt;
+    &lt;core:ejb/&gt;
+&lt;/components&gt;
+</programlisting>
+	<para>
+		This example does the same thing:
+	</para>
+	
+<programlisting>&lt;components&gt;
+    &lt;component class="org.jboss.seam.core.Ejb"/&gt;
+&lt;/components&gt;
+</programlisting>
+	<para>
+		This one installs and configures two different Seam-managed persistence contexts:
+	</para>
+	
+<programlisting>&lt;components xmlns="http://jboss.com/products/seam/components" 
+            xmlns:core="http://jboss.com/products/seam/core"
+
+    &lt;core:managed-persistence-context name="customerDatabase"
+                persistence-unit-jndi-name="java:/customerEntityManagerFactory"/&gt;
+        
+    &lt;core:managed-persistence-context name="accountingDatabase"
+                persistence-unit-jndi-name="java:/accountingEntityManagerFactory"/&gt;            
+
+&lt;/components&gt;
+</programlisting>
+	<para>
+		As does this one:
+	</para>
+	
+<programlisting>&lt;components&gt;
+    &lt;component name="customerDatabase" 
+              class="org.jboss.seam.core.ManagedPersistenceContext"&gt;
+        &lt;property name="persistenceUnitJndiName"&gt;java:/customerEntityManagerFactory&lt;/property&gt;
+    &lt;/component&gt;
+    
+    &lt;component name="accountingDatabase"
+              class="org.jboss.seam.core.ManagedPersistenceContext"&gt;
+        &lt;property name="persistenceUnitJndiName"&gt;java:/accountingEntityManagerFactory&lt;/property&gt;
+    &lt;/component&gt;
+&lt;/components&gt;
+</programlisting>
+	<para>
+		This example creates a session-scoped Seam-managed persistence context (this is not recommended in practice):
+	</para>
+	
+<programlisting>&lt;components xmlns="http://jboss.com/products/seam/components" 
+            xmlns:core="http://jboss.com/products/seam/core"
+
+  &lt;core:managed-persistence-context name="productDatabase" 
+                                   scope="session"
+              persistence-unit-jndi-name="java:/productEntityManagerFactory"/&gt;        
+
+&lt;/components&gt;
+</programlisting>
+	
+<programlisting>&lt;components&gt;
+            
+    &lt;component name="productDatabase"
+              scope="session"
+              class="org.jboss.seam.core.ManagedPersistenceContext"&gt;
+        &lt;property name="persistenceUnitJndiName"&gt;java:/productEntityManagerFactory&lt;/property&gt;
+    &lt;/component&gt;
+
+&lt;/components&gt;
+</programlisting>
+	<para>
+		It is common to use the <literal>auto-create</literal> option for infrastructural objects like persistence contexts, which saves you from having to explicitly specify <literal>create=true</literal> when you use the <literal>@In</literal> annotation.
+	</para>
+	
+<programlisting>&lt;components xmlns="http://jboss.com/products/seam/components" 
+            xmlns:core="http://jboss.com/products/seam/core"
+
+  &lt;core:managed-persistence-context name="productDatabase" 
+                             auto-create="true"
+              persistence-unit-jndi-name="java:/productEntityManagerFactory"/&gt;        
+
+&lt;/components&gt;
+</programlisting>
+	
+<programlisting>&lt;components&gt;
+            
+    &lt;component name="productDatabase"
+        auto-create="true"
+              class="org.jboss.seam.core.ManagedPersistenceContext"&gt;
+        &lt;property name="persistenceUnitJndiName"&gt;java:/productEntityManagerFactory&lt;/property&gt;
+    &lt;/component&gt;
+
+&lt;/components&gt;
+</programlisting>
+	<para>
+		The <literal>&lt;factory&gt;</literal> declaration lets you specify a value or method binding expression that will be evaluated to initialize the value of a context variable when it is first referenced.
+	</para>
+	
+<programlisting>&lt;components&gt;
+
+    &lt;factory name="contact" method="#{contactManager.loadContact}" scope="CONVERSATION"/&gt;
+
+&lt;/components&gt;
+</programlisting>
+	<para>
+		You can create an <emphasis>alias</emphasis> (a second name) for a Seam component like so:
+	</para>
+	
+<programlisting>&lt;components&gt;
+
+    &lt;factory name="user" value="#{actor}" scope="STATELESS"/&gt;
+
+&lt;/components&gt;
+</programlisting>
+	<para>
+		You can even create an <emphasis>alias</emphasis> for a commonly used expression:
+	</para>
+	
+<programlisting>&lt;components&gt;
+
+    &lt;factory name="contact" value="#{contactManager.contact}" scope="STATELESS"/&gt;
+
+&lt;/components&gt;
+</programlisting>
+	<para>
+		It is especially common to see the use of <literal>auto-create="true"</literal> with the <literal>&lt;factory&gt;</literal> declaration:
+	</para>
+	
+<programlisting>&lt;components&gt;
+
+    &lt;factory name="session" value="#{entityManager.delegate}" scope="STATELESS" 
+       auto-create="true"/&gt;
+
+&lt;/components&gt;
+</programlisting>
+	<para>
+		Sometimes we want to reuse the same <literal>components.xml</literal> file with minor changes during both deployment and testing. Seam lets you place wildcards of the form <literal>@wildcard@</literal> in the <literal>components.xml</literal> file which can be replaced either by your Ant build script (at deployment time) or by providing a file named <literal>components.properties</literal> in the classpath (at development time). You will see this approach used in the Seam examples.
+	</para>
+	</sect1><sect1 id="Seam_Reference_Guide-Configuring_Seam_components-Fine_grained_configuration_files"><title>Fine-grained configuration files</title>
+	<para>
+		If you have a large number of components that need to be configured in XML, it makes much more sense to split up the information in <literal>components.xml</literal> into many small files. Seam lets you put configuration for a class named, for example, <literal>com.helloworld.Hello</literal> in a resource named <literal>com/helloworld/Hello.component.xml</literal>. (You might be familiar with this pattern, since it is the same one we use in Hibernate.) The root element of the file may be either a <literal>&lt;components&gt;</literal> or <literal>&lt;component&gt;</literal> element.
+	</para>
+	<para>
+		The first option lets you define multiple components in the file:
+	</para>
+	
+<programlisting>&lt;components&gt;
+    &lt;component class="com.helloworld.Hello" name="hello"&gt;
+        &lt;property name="name"&gt;#{user.name}&lt;/property&gt;
+    &lt;/component&gt;
+    &lt;factory name="message" value="#{hello.message}"/&gt;
+&lt;/components&gt;
+</programlisting>
+	<para>
+		The second option only lets you define or configure one component, but is less noisy:
+	</para>
+	
+<programlisting>&lt;component name="hello"&gt;
+    &lt;property name="name"&gt;#{user.name}&lt;/property&gt;
+&lt;/component&gt;
+</programlisting>
+	<para>
+		In the second option, the class name is implied by the file in which the component definition appears.
+	</para>
+	<para>
+		Alternatively, you may put configuration for all classes in the <literal>com.helloworld</literal> package in <literal>com/helloworld/components.xml</literal>.
+	</para>
+	</sect1><sect1 id="Seam_Reference_Guide-Configuring_Seam_components-Configurable_property_types"><title>Configurable property types</title>
+	<para>
+		Properties of string, primitive or primitive wrapper type may be configured just as you would expect:
+	</para>
+	
+<programlisting>org.jboss.seam.core.manager.conversationTimeout 60000
+</programlisting>
+	
+<programlisting>&lt;core:manager conversation-timeout="60000"/&gt;
+</programlisting>
+	
+<programlisting>&lt;component name="org.jboss.seam.core.manager"&gt;
+    &lt;property name="conversationTimeout"&gt;60000&lt;/property&gt;
+&lt;/component&gt;
+</programlisting>
+	<para>
+		Arrays, sets and lists of strings or primitives are also supported:
+	</para>
+	
+<programlisting>org.jboss.seam.core.jbpm.processDefinitions order.jpdl.xml, return.jpdl.xml, inventory.jpdl.xml
+</programlisting>
+	
+<programlisting>&lt;core:jbpm&gt;
+    &lt;core:process-definitions&gt;
+        &lt;value&gt;order.jpdl.xml&lt;/value&gt;
+        &lt;value&gt;return.jpdl.xml&lt;/value&gt;
+        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;
+    &lt;/core:process-definitions&gt;
+&lt;/core:jbpm&gt;
+</programlisting>
+	
+<programlisting>&lt;component name="org.jboss.seam.core.jbpm"&gt;
+    &lt;property name="processDefinitions"&gt;
+        &lt;value&gt;order.jpdl.xml&lt;/value&gt;
+        &lt;value&gt;return.jpdl.xml&lt;/value&gt;
+        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;
+    &lt;/property&gt;
+&lt;/component&gt;
+</programlisting>
+	<para>
+		Even maps with String-valued keys and string or primitive values are supported:
+	</para>
+	
+<programlisting>&lt;component name="issueEditor"&gt;
+    &lt;property name="issueStatuses"&gt;
+        &lt;key&gt;open&lt;/key&gt; &lt;value&gt;open issue&lt;/value&gt;
+        &lt;key&gt;resolved&lt;/key&gt; &lt;value&gt;issue resolved by developer&lt;/value&gt;
+        &lt;key&gt;closed&lt;/key&gt; &lt;value&gt;resolution accepted by user&lt;/value&gt;
+    &lt;/property&gt;
+&lt;/component&gt;
+</programlisting>
+	<para>
+		Finally, you may wire together components using a value-binding expression. Note that this is quite different to injection using <literal>@In</literal>, since it happens at component instantiation time instead of invocation time. It is therefore much more similar to the dependency injection facilities offered by traditional IoC containers like JSF or Spring.
+	</para>
+	
+<programlisting>&lt;drools:managed-working-memory name="policyPricingWorkingMemory" rule-base="#{policyPricingRules}"/&gt;
+</programlisting>
+	
+<programlisting>&lt;component name="policyPricingWorkingMemory"
+          class="org.jboss.seam.drools.ManagedWorkingMemory"&gt;
+    &lt;property name="ruleBase"&gt;#{policyPricingRules}&lt;/property&gt;
+&lt;/component&gt;
+</programlisting>
+	</sect1><sect1 id="Seam_Reference_Guide-Configuring_Seam_components-Using_XML_Namespaces"><title>Using XML Namespaces</title>
+	<para>
+		Throughout the examples, there have been two competing ways of declaring components: with and without the use of XML namespaces. The following shows a typical <literal>components.xml</literal> file without namespaces. It uses the Seam Components DTD:
+	</para>
+	
+<programlisting>&lt;?xml version="1.0" encoding="UTF-8"&gt;
+&lt;!DOCTYPE components PUBLIC "-//JBoss/Seam Component Configuration DTD 1.2//EN"
+                            "http://jboss.com/products/seam/components-1.2.dtd"&gt;
+&lt;components&gt;
+
+    &lt;component class="org.jboss.seam.core.init"&gt;
+        &lt;property name="debug"&gt;true&lt;/property&gt;
+        &lt;property name="jndiPattern"&gt;@jndiPattern@&lt;/property&gt;
+    &lt;/component&gt;
+
+    &lt;component name="org.jboss.sean.core.ejb" installed="@embeddedEjb@" /&gt;
+    
+&lt;/components&gt;
+</programlisting>
+	<para>
+		As you can see, this is somewhat verbose. Even worse, the component and attribute names cannot be validated at development time.
+	</para>
+	<para>
+		The namespaced version looks like this:
+	</para>
+	
+<programlisting>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;components xmlns="http://jboss.com/products/seam/components"
+            xmlns:core="http://jboss.com/products/seam/core"
+            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+            xsi:schemaLocation=
+                "http://jboss.com/products/seam/core 
+                                        http://jboss.com/products/seam/core-1.2.xsd 
+                 http://jboss.com/products/seam/components 
+                                        http://jboss.com/products/seam/components-1.2.xsd"&gt;
+
+    &lt;core:init debug="true" jndi-pattern="@jndiPattern@"/&gt;
+
+    &lt;core:ejb installed="@embeddedEjb@"/&gt;
+
+&lt;/components&gt;
+</programlisting>
+	<para>
+		Even though the schema declarations are verbose, the actual XML content is lean and easy to understand. The schemas provide detailed information about each component and the attributes available, allowing XML editors to offer intelligent autocomplete. The use of namespaced elements makes generating and maintaining correct <literal>components.xml</literal> files much simpler.
+	</para>
+	<para>
+		Now, this works great for the built-in Seam components, but what about user components? There are two options. First, Seam supports mixing the two models, allowing the use of the generic <literal>&lt;component&gt;</literal> declarations for user components, along with namespaced declarations for built-in components. But even better, Seam allows you to quickly declare namespaces for your own components.
+	</para>
+	<para>
+		Any Java package can be associated with an XML namespace by annotating the package with the <literal>@Namespace</literal> annotation. (Package-level annotations are declared in a file named <literal>package-info.java</literal> in the package directory.) Here is an example from the seampay demo:
+	</para>
+	
+<programlisting>@Namespace(value="http://jboss.com/products/seam/examples/seampay")
+package org.jboss.seam.example.seampay;
+
+import org.jboss.seam.annotations.Namespace;
+</programlisting>
+	<para>
+		That is all you need to do to use the namespaced style in <literal>components.xml</literal>! Now we can write:
+	</para>
+	
+<programlisting>&lt;components xmlns="http://jboss.com/products/seam/components"
+            xmlns:pay="http://jboss.com/products/seam/examples/seampay"
+            ... &gt;
+
+    &lt;pay:payment-home new-instance="#{newPayment}"
+                      created-message="Created a new payment to #{newPayment.payee}" /&gt;
+
+    &lt;pay:payment name="newPayment"
+                 payee="Somebody"
+                 account="#{selectedAccount}"
+                 payment-date="#{currentDatetime}"
+                 created-date="#{currentDatetime}" /&gt;
+     ...
+&lt;/components&gt;
+</programlisting>
+	<para>
+		Or:
+	</para>
+	
+<programlisting>&lt;components xmlns="http://jboss.com/products/seam/components"
+            xmlns:pay="http://jboss.com/products/seam/examples/seampay"
+            ... &gt;
+
+    &lt;pay:payment-home&gt;
+        &lt;pay:new-instance&gt;"#{newPayment}"&lt;/pay:new-instance&gt;
+        &lt;pay:created-message&gt;Created a new payment to #{newPayment.payee}&lt;/pay:created-message&gt;
+    &lt;/pay:payment-home&gt;
+    
+    &lt;pay:payment name="newPayment"&gt;
+        &lt;pay:payee&gt;Somebody"&lt;/pay:payee&gt;
+        &lt;pay:account&gt;#{selectedAccount}&lt;/pay:account&gt;
+        &lt;pay:payment-date&gt;#{currentDatetime}&lt;/pay:payment-date&gt;
+        &lt;pay:created-date&gt;#{currentDatetime}&lt;/pay:created-date&gt;
+     &lt;/pay:payment&gt;
+     ...
+&lt;/components&gt;
+</programlisting>
+	<para>
+		These examples illustrate the two usage models of a namespaced element. In the first declaration, the <literal>&lt;pay:payment-home&gt;</literal> references the <literal>paymentHome</literal> component:
+	</para>
+	
+<programlisting>package org.jboss.seam.example.seampay;
+...
+ at Name("paymentHome")
+public class PaymentController
+    extends EntityHome&lt;Payment&gt;
+{
+    ... 
+}
+</programlisting>
+	<para>
+		The element name is the hyphenated form of the component name. The attributes of the element are the hyphenated form of the property names.
+	</para>
+	<para>
+		In the second declaration, the <literal>&lt;pay:payment&gt;</literal> element refers to the <literal>Payment</literal> class in the <literal>org.jboss.seam.example.seampay</literal> package. In this case <literal>Payment</literal> is an entity that is being declared as a Seam component:
+	</para>
+	
+<programlisting>package org.jboss.seam.example.seampay;
+...
+ at Entity
+public class Payment
+    implements Serializable
+{
+    ...
+}
+</programlisting>
+	<para>
+		If we want validation and autocompletion to work for user-defined components, we will need a schema. Seam does not yet provide a mechanism to automatically generate a schema for a set of components, so it is necessary to generate one manually. The schema definitions for the standard Seam packages can be used for guidance.
+	</para>
+	<para>
+		The following are the the namespaces used by Seam:
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				components &mdash; <literal>http://jboss.com/products/seam/components</literal>
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				core &mdash; <literal>http://jboss.com/products/seam/core</literal>
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				drools &mdash; <literal>http://jboss.com/products/seam/drools</literal>
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				framework &mdash; <literal>http://jboss.com/products/seam/framework</literal>
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				jms &mdash; <literal>http://jboss.com/products/seam/jms</literal>
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				remoting &mdash; <literal>http://jboss.com/products/seam/remoting</literal>
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				theme &mdash; <literal>http://jboss.com/products/seam/theme</literal>
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				security &mdash; <literal>http://jboss.com/products/seam/security</literal>
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				mail &mdash; <literal>http://jboss.com/products/seam/mail</literal>
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				web &mdash; <literal>http://jboss.com/products/seam/web</literal>
+			</para>
+		</listitem>
+	</itemizedlist>
+	</sect1>
+</chapter>
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/architecture.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/architecture.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/blog.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/blog.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/booking.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/booking.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/bpmd.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/bpmd.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/bpmpfv.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/bpmpfv.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/breadcrumbs.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/breadcrumbs.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/codegendropdown.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/codegendropdown.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/codegenmaintab.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/codegenmaintab.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/codegenselectseam.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/codegenselectseam.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/consolecfgwizard.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/consolecfgwizard.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/consoleoutline-before-reveng.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/consoleoutline-before-reveng.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/controls-seamtext.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/controls-seamtext.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/controls-selectdate.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/controls-selectdate.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/controls-selectdatecss.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/controls-selectdatecss.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/debug.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/debug.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/dvdsearch.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/dvdsearch.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/dvdtasks.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/dvdtasks.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/e-ejb3.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/e-ejb3.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/ee5.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/ee5.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/hibernate-ee.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/hibernate-ee.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/hibernate-mc.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/hibernate-mc.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/hibernatecfgwizard.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/hibernatecfgwizard.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/icon.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/icon.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/icon.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,3936 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:ns="http://ns.adobe.com/AdobeSVGViewerExtensions/3/"
+   xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg3017"
+   sodipodi:version="0.32"
+   inkscape:version="0.44+devel"
+   sodipodi:docname="book.svg"
+   sodipodi:docbase="/home/andy/Desktop">
+  <metadata
+     id="metadata489">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="480"
+     inkscape:window-width="858"
+     inkscape:pageshadow="0"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="1"
+     inkscape:cx="16"
+     inkscape:cy="15.944056"
+     inkscape:window-x="0"
+     inkscape:window-y="33"
+     inkscape:current-layer="svg3017" />
+  <defs
+     id="defs3019">
+    <linearGradient
+       id="linearGradient2381">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop2383" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="stop2385" />
+    </linearGradient>
+    <linearGradient
+       x1="415.73831"
+       y1="11.854"
+       x2="418.13361"
+       y2="18.8104"
+       id="XMLID_1758_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8362,0.5206,-1.1904,0.992,147.62,-30.9374)">
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="0"
+         id="stop3903" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop3905" />
+      <a:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="500.70749"
+       y1="-13.2441"
+       x2="513.46442"
+       y2="-2.1547"
+       id="XMLID_1757_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop3890" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop3892" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="XMLID_1755_">
+      <use
+         id="use3874"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_343_" />
+    </clipPath>
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop3877" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop3879" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop3881" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop3883" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="471.0806"
+       y1="201.07761"
+       x2="481.91711"
+       y2="210.4977"
+       id="XMLID_1754_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#6498c1;stop-opacity:1"
+         offset="0.005618"
+         id="stop3863" />
+      <stop
+         style="stop-color:#79a9cc;stop-opacity:1"
+         offset="0.2332"
+         id="stop3865" />
+      <stop
+         style="stop-color:#a4cde2;stop-opacity:1"
+         offset="0.74049997"
+         id="stop3867" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="1"
+         id="stop3869" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="5.618000e-003" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="0.4438" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="XMLID_1753_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop3851" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop3853" />
+      <a:midPointStop
+         style="stop-color:#B2B2B2"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B2B2B2"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="XMLID_1751_">
+      <use
+         id="use3837"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_338_" />
+    </clipPath>
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop3840" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop3842" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop3844" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop3846" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="468.2915"
+       y1="204.7612"
+       x2="479.39871"
+       y2="214.4166"
+       id="XMLID_1750_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop3830" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop3832" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop3818" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop3820" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="501.0903"
+       y1="-19.2544"
+       x2="531.85413"
+       y2="0.72390002"
+       id="XMLID_1748_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop3803" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop3805" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop3807" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop3809" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="XMLID_2275_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop9947" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop9949" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop9951" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop9953" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="XMLID_2273_">
+      <use
+         id="use9933"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_960_" />
+    </clipPath>
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="XMLID_2274_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop9936" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop9938" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop9940" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop9942" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="478.21341"
+       y1="-131.9297"
+       x2="469.85818"
+       y2="-140.28481"
+       id="XMLID_2272_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.5592,0.829,-0.829,0.5592,101.3357,-104.791)">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop9917" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop9919" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop9921" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop9923" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       style="overflow:visible"
+       id="TriangleInM">
+      <path
+         d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z "
+         transform="scale(-0.4,-0.4)"
+         style="fill:#5c5c4f"
+         id="path3197" />
+    </marker>
+    <linearGradient
+       x1="200.7363"
+       y1="100.4028"
+       x2="211.99519"
+       y2="89.143997"
+       id="XMLID_3298_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#bfbfbf;stop-opacity:1"
+         offset="0"
+         id="stop20103" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop20105" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#BFBFBF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#BFBFBF" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#F2F2F2" />
+    </linearGradient>
+    <linearGradient
+       x1="200.7363"
+       y1="100.4028"
+       x2="211.99519"
+       y2="89.143997"
+       id="linearGradient36592"
+       xlink:href="#XMLID_3298_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="181.2925"
+       y1="110.8481"
+       x2="192.6369"
+       y2="99.5037"
+       id="XMLID_3297_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="stop20096" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop20098" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="181.2925"
+       y1="110.8481"
+       x2="192.6369"
+       y2="99.5037"
+       id="linearGradient36595"
+       xlink:href="#XMLID_3297_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="211.77589"
+       y1="105.7749"
+       x2="212.6619"
+       y2="108.2092"
+       id="XMLID_3296_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#0f6124;stop-opacity:1"
+         offset="0"
+         id="stop20087" />
+      <stop
+         style="stop-color:#219630;stop-opacity:1"
+         offset="1"
+         id="stop20089" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#0F6124" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#0F6124" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#219630" />
+    </linearGradient>
+    <linearGradient
+       x1="211.77589"
+       y1="105.7749"
+       x2="212.6619"
+       y2="108.2092"
+       id="linearGradient36677"
+       xlink:href="#XMLID_3296_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="208.9834"
+       y1="116.8296"
+       x2="200.0811"
+       y2="96.834602"
+       id="XMLID_3295_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop20076" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.5"
+         id="stop20078" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop20080" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="208.9834"
+       y1="116.8296"
+       x2="200.0811"
+       y2="96.834602"
+       id="linearGradient36604"
+       xlink:href="#XMLID_3295_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="195.5264"
+       y1="97.911102"
+       x2="213.5213"
+       y2="115.9061"
+       id="XMLID_3294_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="0"
+         id="stop20069" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop20071" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="195.5264"
+       y1="97.911102"
+       x2="213.5213"
+       y2="115.9061"
+       id="linearGradient36607"
+       xlink:href="#XMLID_3294_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="186.1938"
+       y1="109.1343"
+       x2="206.6881"
+       y2="88.639999"
+       id="XMLID_3293_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop20056" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.16850001"
+         id="stop20058" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.23029999"
+         id="stop20060" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.2809"
+         id="stop20062" />
+      <stop
+         style="stop-color:#c2c2c2;stop-opacity:1"
+         offset="0.5"
+         id="stop20064" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.1685"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.2303"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.2809"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#C2C2C2" />
+    </linearGradient>
+    <linearGradient
+       x1="186.1938"
+       y1="109.1343"
+       x2="206.6881"
+       y2="88.639999"
+       id="linearGradient36610"
+       xlink:href="#XMLID_3293_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="184.8569"
+       y1="112.2676"
+       x2="211.94099"
+       y2="89.541397"
+       id="XMLID_3292_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop20043" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.16850001"
+         id="stop20045" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.23029999"
+         id="stop20047" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.2809"
+         id="stop20049" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop20051" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.1685"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.2303"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.2809"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="184.8569"
+       y1="112.2676"
+       x2="211.94099"
+       y2="89.541397"
+       id="linearGradient36613"
+       xlink:href="#XMLID_3292_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       style="overflow:visible"
+       id="TriangleOutM">
+      <path
+         d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z "
+         transform="scale(0.4,0.4)"
+         style="fill:#5c5c4f;fill-rule:evenodd;stroke-width:1pt;marker-start:none"
+         id="path3238" />
+    </marker>
+    <linearGradient
+       x1="165.3"
+       y1="99.5"
+       x2="165.3"
+       y2="115.9"
+       id="XMLID_3457_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="0"
+         id="stop8309" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8311" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="1"
+         id="stop8313" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#999999" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#999999" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#B2B2B2" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#B2B2B2" />
+    </linearGradient>
+    <linearGradient
+       x1="165.3"
+       y1="99.5"
+       x2="165.3"
+       y2="115.9"
+       id="lg1997"
+       xlink:href="#XMLID_3457_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="175"
+       y1="99.800003"
+       x2="175"
+       y2="112.5"
+       id="XMLID_3456_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="0"
+         id="stop8300" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="0.60000002"
+         id="stop8302" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="1"
+         id="stop8304" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="0.6"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#191919" />
+    </linearGradient>
+    <linearGradient
+       x1="175"
+       y1="99.800003"
+       x2="175"
+       y2="112.5"
+       id="lg2000"
+       xlink:href="#XMLID_3456_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="168.8"
+       y1="107.1"
+       x2="164.5"
+       y2="110"
+       id="XMLID_3455_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="0"
+         id="stop8291" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="0.69999999"
+         id="stop8293" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="1"
+         id="stop8295" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.7"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#191919" />
+    </linearGradient>
+    <linearGradient
+       x1="168.8"
+       y1="107.1"
+       x2="164.5"
+       y2="110"
+       id="lg2003"
+       xlink:href="#XMLID_3455_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       id="lg63694">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop63696" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="stop63698" />
+    </linearGradient>
+    <linearGradient
+       x1="458"
+       y1="483"
+       x2="465.20001"
+       y2="271.39999"
+       id="lg2006"
+       xlink:href="#lg63694"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(6.3e-2,0,0,6.3e-2,-1.3,-9.8)" />
+    <linearGradient
+       x1="176.3"
+       y1="110.1"
+       x2="158.7"
+       y2="105"
+       id="XMLID_3453_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="0"
+         id="stop8271" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="0.2"
+         id="stop8273" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop8275" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.2"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="176.3"
+       y1="110.1"
+       x2="158.7"
+       y2="105"
+       id="lg2009"
+       xlink:href="#XMLID_3453_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="173.60001"
+       y1="118.9"
+       x2="172.8"
+       y2="128.2"
+       id="XMLID_3449_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8232" />
+      <stop
+         style="stop-color:#fff95e;stop-opacity:1"
+         offset="0.60000002"
+         id="stop8234" />
+      <stop
+         style="stop-color:#ecd600;stop-opacity:1"
+         offset="1"
+         id="stop8236" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.6"
+         style="stop-color:#FFF95E" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFF95E" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#ECD600" />
+    </linearGradient>
+    <linearGradient
+       x1="173.60001"
+       y1="118.9"
+       x2="172.8"
+       y2="128.2"
+       id="lg2016"
+       xlink:href="#XMLID_3449_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <radialGradient
+       cx="284.60001"
+       cy="172.60001"
+       r="6.5"
+       fx="284.60001"
+       fy="172.60001"
+       id="XMLID_3448_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4,0,0,1.4,-237.3,-126.8)">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8219" />
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8221" />
+      <stop
+         style="stop-color:#c96b00;stop-opacity:1"
+         offset="0.89999998"
+         id="stop8223" />
+      <stop
+         style="stop-color:#9a5500;stop-opacity:1"
+         offset="1"
+         id="stop8225" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.9"
+         style="stop-color:#C96B00" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#C96B00" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#9A5500" />
+    </radialGradient>
+    <radialGradient
+       cx="284.60001"
+       cy="172.60001"
+       r="6.5"
+       fx="284.60001"
+       fy="172.60001"
+       id="rg2020"
+       xlink:href="#XMLID_3448_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.513992,0,0,2.347576,-689.1621,-378.5717)" />
+    <linearGradient
+       x1="158.10001"
+       y1="123"
+       x2="164.2"
+       y2="126.6"
+       id="XMLID_3447_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecd600;stop-opacity:1"
+         offset="0"
+         id="stop8204" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8206" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop8208" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECD600" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECD600" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="158.10001"
+       y1="123"
+       x2="164.2"
+       y2="126.6"
+       id="lg2026"
+       xlink:href="#XMLID_3447_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <radialGradient
+       cx="280.89999"
+       cy="163.7"
+       r="10.1"
+       fx="280.89999"
+       fy="163.7"
+       id="XMLID_3446_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4,0,0,1.4,-237.3,-126.8)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop8197" />
+      <stop
+         style="stop-color:#fff95e;stop-opacity:1"
+         offset="1"
+         id="stop8199" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#FFFFFF" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#FFF95E" />
+    </radialGradient>
+    <radialGradient
+       cx="280.89999"
+       cy="163.7"
+       r="10.1"
+       fx="280.89999"
+       fy="163.7"
+       id="rg2029"
+       xlink:href="#XMLID_3446_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.7,0,0,1.7,-457.5,-266.8)" />
+    <linearGradient
+       x1="156.5"
+       y1="122.7"
+       x2="180.10001"
+       y2="122.7"
+       id="XMLID_3445_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8184" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.2"
+         id="stop8186" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8188" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.40000001"
+         id="stop8190" />
+      <stop
+         style="stop-color:#d68100;stop-opacity:1"
+         offset="1"
+         id="stop8192" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.2"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.4"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#D68100" />
+    </linearGradient>
+    <linearGradient
+       x1="156.5"
+       y1="122.7"
+       x2="180.10001"
+       y2="122.7"
+       id="lg2032"
+       xlink:href="#XMLID_3445_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="156.39999"
+       y1="115.4"
+       x2="180.10001"
+       y2="115.4"
+       id="XMLID_3444_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8171" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.2"
+         id="stop8173" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8175" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.40000001"
+         id="stop8177" />
+      <stop
+         style="stop-color:#d68100;stop-opacity:1"
+         offset="1"
+         id="stop8179" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.2"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.4"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#D68100" />
+    </linearGradient>
+    <linearGradient
+       x1="156.39999"
+       y1="115.4"
+       x2="180.10001"
+       y2="115.4"
+       id="lg2035"
+       xlink:href="#XMLID_3444_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="379.70001"
+       y1="167.89999"
+       x2="383.89999"
+       y2="172.89999"
+       id="lg4286_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s16159" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.1"
+         id="s16161" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="1"
+         id="s16163" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.1" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#737373"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="379.60001"
+       y1="167.8"
+       x2="383.79999"
+       y2="172"
+       id="lg6416"
+       xlink:href="#lg4286_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.622156,0.623859,-0.623859,2.62182,-882.9706,-673.7921)" />
+    <linearGradient
+       x1="384.20001"
+       y1="169.8"
+       x2="384.79999"
+       y2="170.39999"
+       id="lg4285_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="0"
+         id="s16152" />
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="1"
+         id="s16154" />
+      <ns:midPointStop
+         style="stop-color:#737373"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#737373"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#D9D9D9"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="384.20001"
+       y1="169.8"
+       x2="384.79999"
+       y2="170.39999"
+       id="lg6453"
+       xlink:href="#lg4285_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.6,0.6,-0.6,2.6,-883,-673.8)" />
+    <linearGradient
+       x1="380.5"
+       y1="172.60001"
+       x2="382.79999"
+       y2="173.7"
+       id="lg4284_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
+      <stop
+         style="stop-color:gray;stop-opacity:1"
+         offset="0"
+         id="s16145" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="1"
+         id="s16147" />
+      <ns:midPointStop
+         style="stop-color:#808080"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#808080"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#E5E5E5"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="380.5"
+       y1="172.60001"
+       x2="382.79999"
+       y2="173.7"
+       id="lg6456"
+       xlink:href="#lg4284_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.6,0.6,-0.6,2.6,-883,-673.8)" />
+    <radialGradient
+       cx="347.29999"
+       cy="244.5"
+       r="5.1999998"
+       fx="347.29999"
+       fy="244.5"
+       id="lg4282_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
+      <stop
+         style="stop-color:#333;stop-opacity:1"
+         offset="0"
+         id="s16135" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="s16137" />
+      <ns:midPointStop
+         style="stop-color:#333333"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#333333"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#999999"
+         offset="1" />
+    </radialGradient>
+    <linearGradient
+       x1="310.39999"
+       y1="397.70001"
+       x2="310.89999"
+       y2="399.5"
+       id="lg4280_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="0"
+         id="s16111" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.60000002"
+         id="s16113" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="1"
+         id="s16115" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.6" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="310.39999"
+       y1="397.70001"
+       x2="310.89999"
+       y2="399.5"
+       id="lg6467"
+       xlink:href="#lg4280_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
+    <linearGradient
+       x1="310.89999"
+       y1="395.79999"
+       x2="313.29999"
+       y2="403.10001"
+       id="lg4279_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0"
+         id="s16100" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.40000001"
+         id="s16102" />
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="0.89999998"
+         id="s16104" />
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="1"
+         id="s16106" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.4" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0.9" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="310.89999"
+       y1="395.79999"
+       x2="313.29999"
+       y2="403.10001"
+       id="lg6465"
+       xlink:href="#lg4279_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
+    <linearGradient
+       x1="307.79999"
+       y1="395.20001"
+       x2="313.79999"
+       y2="413.60001"
+       id="lg4278_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0"
+         id="s16091" />
+      <stop
+         style="stop-color:#fcd72f;stop-opacity:1"
+         offset="0.40000001"
+         id="s16093" />
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="1"
+         id="s16095" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FCD72F"
+         offset="0.4" />
+      <ns:midPointStop
+         style="stop-color:#FCD72F"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="306.5"
+       y1="393"
+       x2="309"
+       y2="404"
+       id="lg6400"
+       xlink:href="#lg4278_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
+    <linearGradient
+       x1="352.10001"
+       y1="253.60001"
+       x2="348.5"
+       y2="237.8"
+       id="lg4276_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
+      <stop
+         style="stop-color:#ffff87;stop-opacity:1"
+         offset="0"
+         id="s16077" />
+      <stop
+         style="stop-color:#ffad00;stop-opacity:1"
+         offset="1"
+         id="s16079" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFAD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="335.60001"
+       y1="354.79999"
+       x2="337.89999"
+       y2="354.79999"
+       id="lg4275_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="s16057" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.80000001"
+         id="s16059" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="s16061" />
+      <ns:midPointStop
+         style="stop-color:#D9D9D9"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#D9D9D9"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.8" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="335.60001"
+       y1="354.79999"
+       x2="337.89999"
+       y2="354.79999"
+       id="lg6463"
+       xlink:href="#lg4275_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
+    <linearGradient
+       x1="337.39999"
+       y1="353.10001"
+       x2="339.39999"
+       y2="357.10001"
+       id="lg4274_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s16048" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.1"
+         id="s16050" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s16052" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.1" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="337.39999"
+       y1="353.10001"
+       x2="339.39999"
+       y2="357.10001"
+       id="lg6461"
+       xlink:href="#lg4274_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
+    <linearGradient
+       x1="334.39999"
+       y1="355.5"
+       x2="335.5"
+       y2="356.79999"
+       id="lg4273_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s16041" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s16043" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="5.6e-003" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="334.39999"
+       y1="355.5"
+       x2="335.5"
+       y2="356.79999"
+       id="lg6381"
+       xlink:href="#lg4273_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
+    <linearGradient
+       x1="348.39999"
+       y1="247.39999"
+       x2="354.10001"
+       y2="242"
+       id="lg4271_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0"
+         id="s16025" />
+      <stop
+         style="stop-color:#9e9e9e;stop-opacity:1"
+         offset="0.40000001"
+         id="s16027" />
+      <stop
+         style="stop-color:black;stop-opacity:1"
+         offset="1"
+         id="s16029" />
+      <ns:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#000000"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="351.29999"
+       y1="257.29999"
+       x2="346.29999"
+       y2="235.5"
+       id="lg4270_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ffff87;stop-opacity:1"
+         offset="0"
+         id="s16007" />
+      <stop
+         style="stop-color:#ffad00;stop-opacity:1"
+         offset="1"
+         id="s16009" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFAD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="351.29999"
+       y1="257.29999"
+       x2="346.29999"
+       y2="235.5"
+       id="lg6459"
+       xlink:href="#lg4270_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)" />
+    <linearGradient
+       x1="43.799999"
+       y1="32.5"
+       x2="63.299999"
+       y2="66.400002"
+       id="XMLID_2708_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop75318" />
+      <stop
+         style="stop-color:#fffcea;stop-opacity:1"
+         offset="1"
+         id="stop75320" />
+      <a:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#FFFCEA"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="43.799999"
+       y1="32.5"
+       x2="63.299999"
+       y2="66.400002"
+       id="lg1907"
+       xlink:href="#XMLID_2708_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)" />
+    <linearGradient
+       x1="52.5"
+       y1="40.400002"
+       x2="58.200001"
+       y2="64"
+       id="XMLID_2707_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ffdea0;stop-opacity:1"
+         offset="0"
+         id="stop75305" />
+      <stop
+         style="stop-color:#ffd89e;stop-opacity:1"
+         offset="0.30000001"
+         id="stop75307" />
+      <stop
+         style="stop-color:#ffd79e;stop-opacity:1"
+         offset="0.30000001"
+         id="stop75309" />
+      <stop
+         style="stop-color:#dbaf6d;stop-opacity:1"
+         offset="0.69999999"
+         id="stop75311" />
+      <stop
+         style="stop-color:#6f4c24;stop-opacity:1"
+         offset="1"
+         id="stop75313" />
+      <a:midPointStop
+         style="stop-color:#FFDEA0"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#FFDEA0"
+         offset="0.6" />
+      <a:midPointStop
+         style="stop-color:#FFD79E"
+         offset="0.3" />
+      <a:midPointStop
+         style="stop-color:#FFD79E"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#DBAF6D"
+         offset="0.7" />
+      <a:midPointStop
+         style="stop-color:#DBAF6D"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#6F4C24"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="52.5"
+       y1="40.400002"
+       x2="58.200001"
+       y2="64"
+       id="lg1910"
+       xlink:href="#XMLID_2707_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)" />
+    <linearGradient
+       x1="58"
+       y1="73.199997"
+       x2="44.5"
+       y2="19"
+       id="XMLID_2704_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)">
+      <stop
+         style="stop-color:#d4a96c;stop-opacity:1"
+         offset="0.5"
+         id="stop75284" />
+      <stop
+         style="stop-color:#dcb273;stop-opacity:1"
+         offset="0.60000002"
+         id="stop75286" />
+      <stop
+         style="stop-color:#f0ca87;stop-opacity:1"
+         offset="0.80000001"
+         id="stop75288" />
+      <stop
+         style="stop-color:#ffdc96;stop-opacity:1"
+         offset="0.69999999"
+         id="stop75290" />
+      <stop
+         style="stop-color:#c18a42;stop-opacity:1"
+         offset="1"
+         id="stop75292" />
+      <a:midPointStop
+         style="stop-color:#D4A96C"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#D4A96C"
+         offset="0.6" />
+      <a:midPointStop
+         style="stop-color:#FFDC96"
+         offset="0.7" />
+      <a:midPointStop
+         style="stop-color:#FFDC96"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#C18A42"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="53.700001"
+       y1="32"
+       x2="53.700001"
+       y2="64.599998"
+       id="XMLID_2703_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e5c9b0;stop-opacity:1"
+         offset="0"
+         id="stop75268" />
+      <stop
+         style="stop-color:#e5c9b0;stop-opacity:1"
+         offset="0.40000001"
+         id="stop75270" />
+      <stop
+         style="stop-color:#c0aa94;stop-opacity:1"
+         offset="1"
+         id="stop75272" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0.4" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#C0AA94"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="53.700001"
+       y1="32"
+       x2="53.700001"
+       y2="64.599998"
+       id="lg1916"
+       xlink:href="#XMLID_2703_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)" />
+    <linearGradient
+       x1="224.31"
+       y1="19.450001"
+       x2="214.33"
+       y2="11.46"
+       id="XMLID_419_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#404040;stop-opacity:1"
+         offset="0"
+         id="s1903" />
+      <stop
+         style="stop-color:#6d6d6d;stop-opacity:1"
+         offset="0.33000001"
+         id="s1905" />
+      <stop
+         style="stop-color:#e9e9e9;stop-opacity:1"
+         offset="1"
+         id="s1907" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#404040" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#404040" />
+      <a:midPointStop
+         offset="0.33"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#E9E9E9" />
+    </linearGradient>
+    <linearGradient
+       x1="221.84"
+       y1="32.779999"
+       x2="212.2"
+       y2="20.27"
+       id="lg1988"
+       xlink:href="#XMLID_419_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
+    <linearGradient
+       x1="228.35001"
+       y1="33.279999"
+       x2="215.42999"
+       y2="33.279999"
+       id="lg1900"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s1902" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="s1906" />
+      <a:midPointStop
+         style="stop-color:#575757"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#575757"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#6D6D6D"
+         offset="0.33" />
+      <a:midPointStop
+         style="stop-color:#6D6D6D"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#D3D3D3"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="234.81"
+       y1="33.279999"
+       x2="228.27"
+       y2="33.279999"
+       id="lg1908"
+       xlink:href="#lg1900"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
+    <linearGradient
+       x1="228.35001"
+       y1="33.279999"
+       x2="215.42999"
+       y2="33.279999"
+       id="XMLID_416_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#575757;stop-opacity:1"
+         offset="0"
+         id="s1874" />
+      <stop
+         style="stop-color:#6d6d6d;stop-opacity:1"
+         offset="0.33000001"
+         id="s1876" />
+      <stop
+         style="stop-color:#d3d3d3;stop-opacity:1"
+         offset="1"
+         id="s1878" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#575757" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#575757" />
+      <a:midPointStop
+         offset="0.33"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#D3D3D3" />
+    </linearGradient>
+    <linearGradient
+       x1="228.35001"
+       y1="33.279999"
+       x2="215.42999"
+       y2="33.279999"
+       id="lg1991"
+       xlink:href="#XMLID_416_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
+    <radialGradient
+       cx="603.19"
+       cy="230.77"
+       r="1.67"
+       fx="603.19"
+       fy="230.77"
+       id="x5010_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.1,0,0,1.1,-54.33,-75.4)">
+      <stop
+         style="stop-color:#c9ffc9;stop-opacity:1"
+         offset="0"
+         id="stop29201" />
+      <stop
+         style="stop-color:#23a11f;stop-opacity:1"
+         offset="1"
+         id="stop29203" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#C9FFC9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#C9FFC9" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#23A11F" />
+    </radialGradient>
+    <radialGradient
+       cx="603.19"
+       cy="230.77"
+       r="1.67"
+       fx="603.19"
+       fy="230.77"
+       id="radialGradient5711"
+       xlink:href="#x5010_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.23,0,0,1.23,-709.93,-245.02)" />
+    <linearGradient
+       x1="592.31"
+       y1="162.60001"
+       x2="609.32001"
+       y2="145.59"
+       id="lg5722"
+       xlink:href="#x5003_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="601.48999"
+       y1="170.16"
+       x2="613.84003"
+       y2="170.16"
+       id="x5002_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop29134" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.2"
+         id="stop29136" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="stop29138" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.20"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#999999" />
+    </linearGradient>
+    <linearGradient
+       x1="601.48999"
+       y1="170.16"
+       x2="613.84003"
+       y2="170.16"
+       id="lg5725"
+       xlink:href="#x5002_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.23"
+       id="x5004_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop29157" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop29159" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.23"
+       id="lg5728"
+       xlink:href="#x5004_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="592.31"
+       y1="162.60001"
+       x2="609.32001"
+       y2="145.59"
+       id="x5003_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0"
+         id="stop29143" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="1"
+         id="stop29145" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#E5E5E5" />
+    </linearGradient>
+    <linearGradient
+       x1="592.31"
+       y1="162.60001"
+       x2="609.32001"
+       y2="145.59"
+       id="lg5732"
+       xlink:href="#x5003_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.24001"
+       id="x5000_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop29124" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop29126" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.24001"
+       id="lg5735"
+       xlink:href="#x5000_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="308.54999"
+       y1="149.89999"
+       x2="299.72"
+       y2="148.83"
+       id="XMLID_2433_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d6d6d6;stop-opacity:1"
+         offset="0"
+         id="71615" />
+      <stop
+         style="stop-color:#a5a5a5;stop-opacity:1"
+         offset="1"
+         id="71617" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D6D6D6" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D6D6D6" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#A5A5A5" />
+    </linearGradient>
+    <linearGradient
+       x1="308.54999"
+       y1="149.89999"
+       x2="299.72"
+       y2="148.83"
+       id="lg1952"
+       xlink:href="#XMLID_2433_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
+    <radialGradient
+       cx="307.39999"
+       cy="121"
+       r="23.35"
+       fx="307.39999"
+       fy="121"
+       id="XMLID_2432_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.98,0,0,0.98,2.88,2.75)">
+      <stop
+         style="stop-color:#d2d2d2;stop-opacity:1"
+         offset="0.19"
+         id="71592" />
+      <stop
+         style="stop-color:#cfcfcf;stop-opacity:1"
+         offset="0.44999999"
+         id="71594" />
+      <stop
+         style="stop-color:#c7c7c7;stop-opacity:1"
+         offset="0.60000002"
+         id="71596" />
+      <stop
+         style="stop-color:#b9b9b9;stop-opacity:1"
+         offset="0.74000001"
+         id="71598" />
+      <stop
+         style="stop-color:#a4a4a4;stop-opacity:1"
+         offset="0.86000001"
+         id="71600" />
+      <stop
+         style="stop-color:#8a8a8a;stop-opacity:1"
+         offset="0.95999998"
+         id="71602" />
+      <stop
+         style="stop-color:gray;stop-opacity:1"
+         offset="1"
+         id="71604" />
+      <a:midPointStop
+         offset="0.19"
+         style="stop-color:#D2D2D2" />
+      <a:midPointStop
+         offset="0.8"
+         style="stop-color:#D2D2D2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#808080" />
+    </radialGradient>
+    <radialGradient
+       cx="307.39999"
+       cy="121"
+       r="23.35"
+       fx="307.39999"
+       fy="121"
+       id="radialGradient2331"
+       xlink:href="#XMLID_2432_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-276.62,-121.54)" />
+    <linearGradient
+       x1="294.13"
+       y1="127.07"
+       x2="294.13"
+       y2="142.2"
+       id="XMLID_2430_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b5d8ff;stop-opacity:1"
+         offset="0"
+         id="71582" />
+      <stop
+         style="stop-color:black;stop-opacity:1"
+         offset="1"
+         id="71584" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B5D8FF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B5D8FF" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#000000" />
+    </linearGradient>
+    <linearGradient
+       x1="294.13"
+       y1="127.07"
+       x2="294.13"
+       y2="142.2"
+       id="lg2820"
+       xlink:href="#XMLID_2430_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
+    <linearGradient
+       x1="279.10999"
+       y1="148.03"
+       x2="309.16"
+       y2="148.03"
+       id="XMLID_2429_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e1e1e1;stop-opacity:1"
+         offset="0"
+         id="71564" />
+      <stop
+         style="stop-color:#e1e1e1;stop-opacity:1"
+         offset="0.25"
+         id="71566" />
+      <stop
+         style="stop-color:#a5a5a5;stop-opacity:1"
+         offset="0.44"
+         id="71568" />
+      <stop
+         style="stop-color:#a5a5a5;stop-opacity:1"
+         offset="1"
+         id="71570" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.25"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.44"
+         style="stop-color:#A5A5A5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#A5A5A5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#A5A5A5" />
+    </linearGradient>
+    <linearGradient
+       x1="279.10999"
+       y1="148.03"
+       x2="309.16"
+       y2="148.03"
+       id="lg2818"
+       xlink:href="#XMLID_2429_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
+    <radialGradient
+       cx="622.34302"
+       cy="14.449"
+       r="26.496"
+       fx="622.34302"
+       fy="14.449"
+       id="lg3499_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.851,0,0,0.849,69.297,51.658)">
+      <stop
+         style="stop-color:#23468e;stop-opacity:1"
+         offset="0"
+         id="stop10972" />
+      <stop
+         style="stop-color:#012859;stop-opacity:1"
+         offset="1"
+         id="stop10974" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#23468E" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#23468E" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#012859" />
+    </radialGradient>
+    <radialGradient
+       cx="622.34302"
+       cy="14.449"
+       r="26.496"
+       fx="622.34302"
+       fy="14.449"
+       id="rg5791"
+       xlink:href="#lg3499_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.858,0,0,0.857,-511.7,9.02)" />
+    <linearGradient
+       x1="616.112"
+       y1="76.247002"
+       x2="588.14099"
+       y2="60.742001"
+       id="lg3497_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#01326e;stop-opacity:1"
+         offset="0"
+         id="stop10962" />
+      <stop
+         style="stop-color:#012859;stop-opacity:1"
+         offset="1"
+         id="stop10964" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#01326E" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#01326E" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#012859" />
+    </linearGradient>
+    <linearGradient
+       x1="617.698"
+       y1="82.445999"
+       x2="585.95203"
+       y2="54.848999"
+       id="lg3496_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="stop10950" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop10952" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="617.698"
+       y1="82.445999"
+       x2="585.95203"
+       y2="54.848999"
+       id="lg5794"
+       xlink:href="#lg3496_"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="601.39001"
+       y1="55.341"
+       x2="588.29199"
+       y2="71.515999"
+       id="lg3495_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop10941" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.52200001"
+         id="stop10943" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop10945" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.522"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="601.39001"
+       y1="55.341"
+       x2="588.29199"
+       y2="71.515999"
+       id="lg5771"
+       xlink:href="#lg3495_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.009,0,0,1.009,-581.615,-43.098)" />
+    <linearGradient
+       x1="611.34601"
+       y1="55.279999"
+       x2="590.39001"
+       y2="81.157997"
+       id="lg3494_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop10932" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.52200001"
+         id="stop10934" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop10936" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.522"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="611.34601"
+       y1="55.279999"
+       x2="590.39001"
+       y2="81.157997"
+       id="lg5774"
+       xlink:href="#lg3494_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.009,0,0,1.009,-581.616,-43.098)" />
+    <linearGradient
+       x1="798.72998"
+       y1="69.839996"
+       x2="799.04999"
+       y2="70.709999"
+       id="g3302_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#005e00;stop-opacity:1"
+         offset="0"
+         id="s6504" />
+      <stop
+         style="stop-color:#23a11f;stop-opacity:1"
+         offset="1"
+         id="s6506" />
+      <a:midPointstop
+         style="stop-color:#005E00"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#005E00"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#23A11F"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="798.72998"
+       y1="69.839996"
+       x2="799.04999"
+       y2="70.709999"
+       id="lg5851"
+       xlink:href="#g3302_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
+    <linearGradient
+       x1="779.19"
+       y1="122.73"
+       x2="811.69"
+       y2="149.74001"
+       id="g3301_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,129.19)">
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0"
+         id="s6483" />
+      <stop
+         style="stop-color:#eee;stop-opacity:1"
+         offset="0.17"
+         id="s6485" />
+      <stop
+         style="stop-color:#e3e3e3;stop-opacity:1"
+         offset="0.34"
+         id="s6487" />
+      <stop
+         style="stop-color:#cfcfcf;stop-opacity:1"
+         offset="0.50999999"
+         id="s6489" />
+      <stop
+         style="stop-color:#b4b4b4;stop-opacity:1"
+         offset="0.67000002"
+         id="s6491" />
+      <stop
+         style="stop-color:#919191;stop-opacity:1"
+         offset="0.83999997"
+         id="s6493" />
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="1"
+         id="s6495" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.71" />
+      <a:midPointstop
+         style="stop-color:#666666"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="779.19"
+       y1="122.73"
+       x2="811.69"
+       y2="149.74001"
+       id="lg5855"
+       xlink:href="#g3301_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,-0.316,0,1.263,-926.036,103.123)" />
+    <clipPath
+       id="g3299_">
+      <use
+         id="use6469"
+         x="0"
+         y="0"
+         width="1005.92"
+         height="376.97"
+         xlink:href="#g101_" />
+    </clipPath>
+    <radialGradient
+       cx="1189.9301"
+       cy="100.05"
+       r="40.400002"
+       fx="1189.9301"
+       fy="100.05"
+       id="g3300_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.34,-8.46e-2,0,0.34,394.16,137.13)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s6472" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="s6474" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#000000"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1199.74"
+       cy="97.150002"
+       r="40.400002"
+       fx="1199.74"
+       fy="97.150002"
+       id="rg5860"
+       xlink:href="#g3300_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.409,-0.107,0,0.429,-451.489,113.149)" />
+    <linearGradient
+       x1="796.38"
+       y1="67.580002"
+       x2="781.28003"
+       y2="58.549999"
+       id="g3298_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#4c8bca;stop-opacity:1"
+         offset="0"
+         id="s6462" />
+      <stop
+         style="stop-color:#b7e9ff;stop-opacity:1"
+         offset="1"
+         id="s6464" />
+      <a:midPointstop
+         style="stop-color:#4C8BCA"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#4C8BCA"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B7E9FF"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="800.97998"
+       y1="140.72"
+       x2="777.71997"
+       y2="121.76"
+       id="g3297_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,129.19)">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="s6448" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s6450" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="800.97998"
+       y1="140.72"
+       x2="777.71997"
+       y2="121.76"
+       id="lg5890"
+       xlink:href="#g3297_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,129.19)" />
+    <linearGradient
+       x1="790.03998"
+       y1="-16.33"
+       x2="779.84003"
+       y2="-3.73"
+       id="g3296_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0,70.17)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="s6439" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.51999998"
+         id="s6441" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s6443" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.52" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="790.03998"
+       y1="-16.33"
+       x2="779.84003"
+       y2="-3.73"
+       id="lg5866"
+       xlink:href="#g3296_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,28.6)" />
+    <linearGradient
+       x1="785.84003"
+       y1="72.989998"
+       x2="785.26001"
+       y2="76.279999"
+       id="g3293_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s6412" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="1"
+         id="s6414" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#737373"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="785.84003"
+       y1="72.989998"
+       x2="785.26001"
+       y2="76.279999"
+       id="lg5871"
+       xlink:href="#g3293_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
+    <linearGradient
+       x1="789.37"
+       y1="69.879997"
+       x2="791.03998"
+       y2="77.120003"
+       id="g3292_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="0"
+         id="s6403" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.28"
+         id="s6405" />
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="1"
+         id="s6407" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.28" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#666666"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="789.37"
+       y1="69.879997"
+       x2="791.03998"
+       y2="77.120003"
+       id="lg5874"
+       xlink:href="#g3292_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
+    <linearGradient
+       x1="786.65997"
+       y1="136.12"
+       x2="786.71002"
+       y2="134.33"
+       id="g3290_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,137.29)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="s6380" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="1"
+         id="s6382" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="786.65997"
+       y1="136.12"
+       x2="786.71002"
+       y2="134.33"
+       id="lg5878"
+       xlink:href="#g3290_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,-0.316,0,1.263,-926.036,113.351)" />
+    <radialGradient
+       cx="1458.77"
+       cy="-5.0999999"
+       r="35.130001"
+       fx="1458.77"
+       fy="-5.0999999"
+       id="g3289_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.42,0,0,0.42,167.09,79.84)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s6371" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="s6373" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1458.77"
+       cy="-5.0999999"
+       r="35.130001"
+       fx="1458.77"
+       fy="-5.0999999"
+       id="rg5881"
+       xlink:href="#g3289_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.505,0,0,0.53,-724.957,40.636)" />
+    <radialGradient
+       cx="1612.98"
+       cy="-4.4699998"
+       r="36.580002"
+       fx="1612.98"
+       fy="-4.4699998"
+       id="g3288_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.34,0,0,0.36,238.56,86.87)">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="s6362" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0.63999999"
+         id="s6364" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="1"
+         id="s6366" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.64" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#737373"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1612.98"
+       cy="-4.4699998"
+       r="36.580002"
+       fx="1612.98"
+       fy="-4.4699998"
+       id="rg5884"
+       xlink:href="#g3288_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.408,0,0,0.448,-638.943,49.495)" />
+    <radialGradient
+       cx="1470.5"
+       cy="-10.21"
+       r="33.290001"
+       fx="1470.5"
+       fy="-10.21"
+       id="g3287_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.42,0,0,0.42,167.09,79.84)">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="s6347" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0.38999999"
+         id="s6349" />
+      <stop
+         style="stop-color:#b1b1b1;stop-opacity:1"
+         offset="0.75"
+         id="s6351" />
+      <stop
+         style="stop-color:#aaa;stop-opacity:1"
+         offset="0.88"
+         id="s6353" />
+      <stop
+         style="stop-color:#9e9e9e;stop-opacity:1"
+         offset="0.97000003"
+         id="s6355" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="s6357" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.39" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.87" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1470.5"
+       cy="-10.21"
+       r="33.290001"
+       fx="1470.5"
+       fy="-10.21"
+       id="rg5887"
+       xlink:href="#g3287_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.505,0,0,0.53,-724.957,40.636)" />
+    <pattern
+       patternTransform="matrix(0.592927,0,0,0.592927,78,462)"
+       id="cream-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-365.3146,-513.505)"
+         id="g3047">
+           id=&quot;path2858&quot; /&gt;
+        <path
+   inkscape:label="#path2854"
+   sodipodi:nodetypes="czzzz"
+   style="fill:#e3dcc0"
+   id="path3060"
+   d="M 390.31462,529.50504 C 390.31462,534.47304 386.28262,538.50504 381.31462,538.50504 C 376.34662,538.50504 372.31462,534.47304 372.31462,529.50504 C 372.31462,524.53704 376.34662,520.50504 381.31462,520.50504 C 386.28262,520.50504 390.31462,524.53704 390.31462,529.50504 z " />
+</g>
+    </pattern>
+    <pattern
+       patternTransform="matrix(0.733751,0,0,0.733751,67,367)"
+       id="dark-cream-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-408.0946,-513.505)"
+         id="dark-cream-spot"
+         inkscape:label="#g3043">
+        <path
+           sodipodi:nodetypes="czzzz"
+           style="fill:#c8c5ac"
+           d="M 433.09458,529.50504 C 433.09458,534.47304 429.06258,538.50504 424.09458,538.50504 C 419.12658,538.50504 415.09458,534.47304 415.09458,529.50504 C 415.09458,524.53704 419.12658,520.50504 424.09458,520.50504 C 429.06258,520.50504 433.09458,524.53704 433.09458,529.50504 z "
+           id="path2953" />
+      </g>
+    </pattern>
+    <pattern
+       patternTransform="matrix(0.375,0,0,0.375,379,400)"
+       id="white-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-484.3997,-513.505)"
+         id="white-spot"
+         inkscape:label="#g3035">
+        <path
+           style="opacity:0.25;fill:white"
+           id="path3033"
+           d="M 509.39967,529.50504 C 509.39967,534.47304 505.36767,538.50504 500.39967,538.50504 C 495.43167,538.50504 491.39967,534.47304 491.39967,529.50504 C 491.39967,524.53704 495.43167,520.50504 500.39967,520.50504 C 505.36767,520.50504 509.39967,524.53704 509.39967,529.50504 z "
+           sodipodi:nodetypes="czzzz" />
+      </g>
+    </pattern>
+    <pattern
+       patternTransform="matrix(0.455007,0,0,0.455007,-5e-5,1.9e-5)"
+       id="black-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-448.3997,-513.505)"
+         id="black-spot"
+         inkscape:label="#g3039">
+        <path
+           sodipodi:nodetypes="czzzz"
+           d="M 473.39967,529.50504 C 473.39967,534.47304 469.36767,538.50504 464.39967,538.50504 C 459.43167,538.50504 455.39967,534.47304 455.39967,529.50504 C 455.39967,524.53704 459.43167,520.50504 464.39967,520.50504 C 469.36767,520.50504 473.39967,524.53704 473.39967,529.50504 z "
+           id="path2961"
+           style="opacity:0.25;fill:black" />
+      </g>
+    </pattern>
+    <linearGradient
+       x1="501.0903"
+       y1="-19.2544"
+       x2="531.85413"
+       y2="0.72390002"
+       id="linearGradient17334"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop17336" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop17338" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop17340" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop17342" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.5112"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.6461"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#16336E" />
+    </linearGradient>
+    <linearGradient
+       x1="415.73831"
+       y1="11.854"
+       x2="418.13361"
+       y2="18.8104"
+       id="linearGradient17426"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8362,0.5206,-1.1904,0.992,147.62,-30.9374)">
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="0"
+         id="stop17428" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop17430" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#F2F2F2" />
+    </linearGradient>
+    <linearGradient
+       x1="478.21341"
+       y1="-131.9297"
+       x2="469.85818"
+       y2="-140.28481"
+       id="linearGradient17434"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.5592,0.829,-0.829,0.5592,101.3357,-104.791)">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop17436" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop17438" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop17440" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop17442" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#F3403F" />
+      <a:midPointStop
+         offset="0.4213"
+         style="stop-color:#F3403F" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#A6100C" />
+    </linearGradient>
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17709"
+       xlink:href="#XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)" />
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17711"
+       xlink:href="#XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="linearGradient17713"
+       xlink:href="#XMLID_1753_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17715"
+       xlink:href="#XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="500.70749"
+       y1="-13.2441"
+       x2="513.46442"
+       y2="-2.1547"
+       id="linearGradient17717"
+       xlink:href="#XMLID_1757_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="linearGradient17721"
+       xlink:href="#XMLID_2274_"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="linearGradient17723"
+       xlink:href="#XMLID_2275_"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="500.70749"
+       y1="-13.2441"
+       x2="513.46442"
+       y2="-2.1547"
+       id="linearGradient17416"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop17418" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop17420" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <defs
+       id="defs9929">
+      <path
+         d="M 489.21,209.35 L 485.35,203.63 C 483.63,204.25 473.47,208.93 471.5,210.18 C 470.57,210.77 470.17,211.16 469.72,212.48 C 470.93,212.31 471.72,212.49 473.42,213.04 C 473.26,214.77 473.24,215.74 473.57,218.2 C 474.01,216.88 474.41,216.49 475.34,215.9 C 477.33,214.65 487.49,209.97 489.21,209.35 z "
+         id="XMLID_960_" />
+    </defs>
+    <clipPath
+       id="clipPath17448">
+      <use
+         id="use17450"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_960_" />
+    </clipPath>
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="linearGradient17452"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop17454" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop17456" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop17458" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop17460" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="linearGradient17463"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop17465" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop17467" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop17469" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop17471" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="linearGradient17807"
+       xlink:href="#XMLID_2275_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-177.1654,35.43307)" />
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="linearGradient17810"
+       xlink:href="#XMLID_2274_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-177.1654,35.43307)" />
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17812"
+       xlink:href="#XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)" />
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17814"
+       xlink:href="#XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="linearGradient17816"
+       xlink:href="#XMLID_1753_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17818"
+       xlink:href="#XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17347"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop17349" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop17351" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#96BAD6" />
+    </linearGradient>
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="linearGradient17379"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop17381" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop17383" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#F2F2F2" />
+    </linearGradient>
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17862"
+       xlink:href="#XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,-166.1427,-0.18283)" />
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17864"
+       xlink:href="#XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <defs
+       id="defs3859">
+      <polygon
+         points="465.54,213.52 481.94,217.46 482.74,216.71 487.46,198.05 471.08,194.07 470.26,194.83 465.54,213.52 "
+         id="XMLID_343_" />
+    </defs>
+    <linearGradient
+       x1="471.0806"
+       y1="201.07761"
+       x2="481.91711"
+       y2="210.4977"
+       id="linearGradient17389"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#6498c1;stop-opacity:1"
+         offset="0.005618"
+         id="stop17391" />
+      <stop
+         style="stop-color:#79a9cc;stop-opacity:1"
+         offset="0.2332"
+         id="stop17393" />
+      <stop
+         style="stop-color:#a4cde2;stop-opacity:1"
+         offset="0.74049997"
+         id="stop17395" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="1"
+         id="stop17397" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="5.618000e-003" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="0.4438" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="clipPath17400">
+      <use
+         id="use17402"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_343_" />
+    </clipPath>
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17404"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop17406" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop17408" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop17410" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop17412" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17882"
+       xlink:href="#XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <defs
+       id="defs3826">
+      <polygon
+         points="463.52,216.14 480.56,220.24 481.36,219.5 483.03,202.04 469.05,196.69 468.24,197.45 463.52,216.14 "
+         id="XMLID_338_" />
+    </defs>
+    <linearGradient
+       x1="468.2915"
+       y1="204.7612"
+       x2="479.39871"
+       y2="214.4166"
+       id="linearGradient17357"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop17359" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop17361" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="clipPath17364">
+      <use
+         id="use17366"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_338_" />
+    </clipPath>
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17368"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop17370" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop17372" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop17374" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop17376" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398"
+       id="linearGradient2387"
+       xlink:href="#linearGradient2381"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
+    <linearGradient
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398"
+       id="linearGradient5105"
+       xlink:href="#linearGradient2381"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
+    <linearGradient
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398"
+       id="linearGradient5145"
+       xlink:href="#linearGradient2381"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2381"
+       id="linearGradient2371"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)"
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398" />
+  </defs>
+  <g
+     transform="matrix(0.437808,-0.437808,0.437808,0.437808,-220.8237,43.55311)"
+     id="g5089">
+    <path
+       d="M 8.4382985,-6.28125 C 7.8309069,-6.28125 4.125,-0.33238729 4.125,1.96875 L 4.125,28.6875 C 4.125,29.533884 4.7068159,29.8125 5.28125,29.8125 L 30.84375,29.8125 C 31.476092,29.8125 31.968751,29.319842 31.96875,28.6875 L 31.96875,23.46875 L 32.25,23.46875 C 32.74684,23.46875 33.156249,23.059339 33.15625,22.5625 L 33.15625,-5.375 C 33.15625,-5.8718398 32.74684,-6.28125 32.25,-6.28125 L 8.4382985,-6.28125 z "
+       transform="translate(282.8327,227.1903)"
+       style="fill:#5c5c4f;stroke:black;stroke-width:3.23021388;stroke-miterlimit:4;stroke-dasharray:none"
+       id="path5091" />
+    <rect
+       width="27.85074"
+       height="29.369793"
+       rx="1.1414107"
+       ry="1.1414107"
+       x="286.96509"
+       y="227.63805"
+       style="fill:#032c87"
+       id="rect5093" />
+    <path
+       d="M 288.43262,225.43675 L 313.67442,225.43675 L 313.67442,254.80655 L 287.29827,254.83069 L 288.43262,225.43675 z "
+       style="fill:white"
+       id="rect5095" />
+    <path
+       d="M 302.44536,251.73726 C 303.83227,259.59643 301.75225,263.02091 301.75225,263.02091 C 303.99609,261.41329 305.71651,259.54397 306.65747,257.28491 C 307.62455,259.47755 308.49041,261.71357 310.9319,263.27432 C 310.9319,263.27432 309.33686,256.07392 309.22047,251.73726 L 302.44536,251.73726 z "
+       style="fill:#a70000;fill-opacity:1;stroke-width:2"
+       id="path5097" />
+    <rect
+       width="25.241802"
+       height="29.736675"
+       rx="0.89682275"
+       ry="0.89682275"
+       x="290.73544"
+       y="220.92249"
+       style="fill:#809cc9"
+       id="rect5099" />
+    <path
+       d="M 576.47347,725.93939 L 582.84431,726.35441 L 583.25121,755.8725 C 581.35919,754.55465 576.39694,752.1117 574.98889,754.19149 L 574.98889,727.42397 C 574.98889,726.60151 575.65101,725.93939 576.47347,725.93939 z "
+       transform="matrix(0.499065,-0.866565,0,1,0,0)"
+       style="fill:#4573b3;fill-opacity:1"
+       id="rect5101" />
+    <path
+       d="M 293.2599,221.89363 L 313.99908,221.89363 C 314.45009,221.89363 314.81318,222.25673 314.81318,222.70774 C 315.02865,229.0361 295.44494,244.47124 292.44579,240.30491 L 292.44579,222.70774 C 292.44579,222.25673 292.80889,221.89363 293.2599,221.89363 z "
+       style="opacity:0.65536726;fill:url(#linearGradient2371);fill-opacity:1"
+       id="path5103" />
+  </g>
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/issues.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/issues.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/layoutForm-example.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/layoutForm-example.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/list.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/list.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/messages.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/messages.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/numberguess-pageflow.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/numberguess-pageflow.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/numberguess.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/numberguess.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/plugin-jbpm-numguess.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/plugin-jbpm-numguess.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/plugin-jbpm-todo.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/plugin-jbpm-todo.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/plugin-testng.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/plugin-testng.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/register.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/register.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/registration.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/registration.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/switcher.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/switcher.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/testng.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/testng.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/todo-process.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/todo-process.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/todo.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml/images/todo.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Annotations.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Annotations.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Annotations.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1023 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Seam_Reference_Guide-Seam_annotations">
+	<title>Seam annotations</title>
+	<para>
+		When you write a Seam application, you&#39;ll use a lot of annotations. Seam lets you use annotations to achieve a declarative style of programming. Most of the annotations you&#39;ll use are defined by the EJB 3.0 specification. The annotations for data validation are defined by the Hibernate Validator package. Finally, Seam defines its own set of annotations, which we&#39;ll describe in this chapter.
+	</para>
+	<para>
+		All of these annotations are defined in the package <literal>org.jboss.seam.annotations</literal>.
+	</para>
+	<section id="Seam_Reference_Guide-Seam_annotations-Annotations_for_component_definition">
+		<title>Annotations for component definition</title>
+		<para>
+			The first group of annotations lets you define a Seam component. These annotations appear on the component class.
+		</para>
+		<variablelist spacing="compact">
+			<varlistentry id="name-annotation">
+				<term><literal>@Name</literal></term>
+				<listitem>
+<programlisting>@Name("componentName")</programlisting>
+					<para>
+						Defines the Seam component name for a class. This annotation is required for all Seam components.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry id="scope-annotation">
+				<term><literal>@Scope</literal></term>
+				<listitem>
+<programlisting>@Scope(ScopeType.CONVERSATION)</programlisting>
+					<para>
+						Defines the default context of the component. The possible values are defined by the <literal>ScopeType</literal> enumeration: <literal>EVENT, PAGE, CONVERSATION, SESSION, BUSINESS_PROCESS, APPLICATION, STATELESS</literal>.
+					</para>
+					<para>
+						When no scope is explicitly specified, the default depends upon the component type. For stateless session beans, the default is <literal>STATELESS</literal>. For entity beans and stateful session beans, the default is <literal>CONVERSATION</literal>. For JavaBeans, the default is <literal>EVENT</literal>.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@Role</literal></term>
+				<listitem>
+<programlisting>@Role(name="roleName", scope=ScopeType.SESSION)</programlisting>
+					<para>
+						Allows a Seam component to be bound to multiple contexts variables. The <literal>@Name</literal>/<literal>@Scope</literal> annotations define a "default role". Each <literal>@Role</literal> annotation defines an additional role.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>name</literal> &mdash; the context variable name.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>scope</literal> &mdash; the context variable scope. When no scope is explicitly specified, the default depends upon the component type, as above.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@Roles</literal></term>
+				<listitem>
+<programlisting>@Roles({
+        @Role(name="user", scope=ScopeType.CONVERSATION),
+        @Role(name="currentUser", scope=ScopeType.SESSION)
+    })
+</programlisting>
+					<para>
+						Allows specification of multiple additional roles.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@Intercept</literal></term>
+				<listitem>
+<programlisting>@Intercept(InterceptionType.ALWAYS)</programlisting>
+					<para>
+						Determines when Seam interceptors are active. The possible values are defined by the <literal>InterceptionType</literal> enumeration: <literal>ALWAYS, AFTER_RESTORE_VIEW, AFTER_UPDATE_MODEL_VALUES, INVOKE_APPLICATION, NEVER</literal>.
+					</para>
+					<para>
+						When no interception type is explicitly specified, the default depends upon the component type. For entity beans, the default is <literal>NEVER</literal>. For session beans, message driven beans and JavaBeans, the default is <literal>ALWAYS</literal>.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@JndiName</literal></term>
+				<listitem>
+<programlisting>@JndiName("my/jndi/name")</programlisting>
+					<para>
+						Specifies the JNDI name that Seam will use to look up the EJB component. If no JNDI name is explicitly specified, Seam will use the JNDI pattern specified by <literal>org.jboss.seam.core.init.jndiPattern</literal>.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@Conversational</literal></term>
+				<listitem>
+<programlisting>@Conversational(ifNotBegunOutcome="error")</programlisting>
+					<para>
+						Specifies that a conversation scope component is conversational, meaning that no method of the component can be called unless a long-running conversation started by this component is active (unless the method would begin a new long-running conversation).
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@Startup</literal></term>
+				<listitem>
+<programlisting>@Startup(depends={"org.jboss.core.jndi", "org.jboss.core.jta"})</programlisting>
+					<para>
+						Specifies that an application scope component is started immediately at initialization time. This is mainly used for certain built-in components that bootstrap critical infrastructure such as JNDI, datasources, etc.
+					</para>
+<programlisting>@Startup</programlisting>
+					<para>
+						Specifies that a session scope component is started immediately at session creation time.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>depends</literal> &mdash; specifies that the named components must be started first, if they are installed.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@Install</literal></term>
+				<listitem>
+<programlisting>@Install(false)</programlisting>
+					<para>
+						Specifies whether or not a component should be installed by default. The lack of an @Install annotation indicates a component should be installed.
+					</para>
+<programlisting>@Install(dependencies="org.jboss.seam.core.jbpm")</programlisting>
+					<para>
+						Specifies that a component should only be stalled if the components listed as dependencies are also installed.
+					</para>
+<programlisting>@Install(genericDependencies=ManagedQueueSender.class)</programlisting>
+					<para>
+						Specifies that a component should only be installed if a component that is implemented by a certain class is installed. This is useful when the dependency doesn&#39;t have a single well-known name.
+					</para>
+<programlisting>@Install(classDependencies="org.hibernate.Session")</programlisting>
+					<para>
+						Specifies that a component should only be installed if the named class is in the classpath.
+					</para>
+<programlisting>@Install(precedence=BUILT_IN)</programlisting>
+					<para>
+						Specifies the precedence of the component. If multiple components with the same name exist, the one with the higher precedence will be installed. The defined precendence values are (in ascending order):
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>BUILT_IN</literal> &mdash; Precedence of all built-in Seam components
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>FRAMEWORK</literal> &mdash; Precedence to use for components of frameworks which extend Seam
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>APPLICATION</literal> &mdash; Predence of application components (the default precedence)
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>DEPLOYMENT</literal> &mdash; Precedence to use for components which override application components in a particular deployment
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>MOCK</literal> &mdash; Precedence for mock objects used in testing
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@Synchronized</literal></term>
+				<listitem>
+<programlisting>@Synchronized(timeout=1000)</programlisting>
+					<para>
+						Specifies that a component is accessed concurrently by multiple clients, and that Seam should serialize requests. If a request is not able to obtain its lock on the component in the given timeout period, an exception will be raised.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@ReadOnly</literal></term>
+				<listitem>
+<programlisting>@ReadOnly</programlisting>
+					<para>
+						Specifies that a JavaBean component or component method does not require state replication at the end of the invocation.
+					</para>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_annotations-Annotations_for_bijection">
+		<title>Annotations for bijection</title>
+		<para>
+			The next two annotations control bijection. These attributes occur on component instance variables or property accessor methods.
+		</para>
+		<variablelist spacing="compact">
+			<varlistentry id="in-annotation">
+				<term><literal>@In</literal></term>
+				<listitem>
+<programlisting>@In</programlisting>
+					<para>
+						Specifies that a component attribute is to be injected from a context variable at the beginning of each component invocation. If the context variable is null, an exception will be thrown.
+					</para>
+<programlisting>@In(required=false)</programlisting>
+					<para>
+						Specifies that a component attribute is to be injected from a context variable at the beginning of each component invocation. The context variable may be null.
+					</para>
+<programlisting>@In(create=true)</programlisting>
+					<para>
+						Specifies that a component attribute is to be injected from a context variable at the beginning of each component invocation. If the context variable is null, an instance of the component is instantiated by Seam.
+					</para>
+<programlisting>@In(value="contextVariableName")</programlisting>
+					<para>
+						Specifies the name of the context variable explicitly, instead of using the annotated instance variable name.
+					</para>
+<programlisting>@In(value="#{customer.addresses[&#39;shipping&#39;]}")</programlisting>
+					<para>
+						Specifies that a component attribute is to be injected by evaluating a JSF EL expression at the beginning of each component invocation.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>value</literal> &mdash; specifies the name of the context variable. Default to the name of the component attribute. Alternatively, specifies a JSF EL expression, surrounded by <literal>#{...}</literal>.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>create</literal> &mdash; specifies that Seam should instantiate the component with the same name as the context variable if the context variable is undefined (null) in all contexts. Default to false.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>required</literal> &mdash; specifies Seam should throw an exception if the context variable is undefined in all contexts.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry id="out-annotation">
+				<term><literal>@Out</literal></term>
+				<listitem>
+<programlisting>@Out</programlisting>
+					<para>
+						Specifies that a component attribute that is a Seam component is to be outjected to its context variable at the end of the invocation. If the attribute is null, an exception is thrown.
+					</para>
+<programlisting>@Out(required=false)</programlisting>
+					<para>
+						Specifies that a component attribute that is a Seam component is to be outjected to its context variable at the end of the invocation. The attribute may be null.
+					</para>
+<programlisting>@Out(scope=ScopeType.SESSION)</programlisting>
+					<para>
+						Specifies that a component attribute that is <emphasis>not</emphasis> a Seam component type is to be outjected to a specific scope at the end of the invocation.
+					</para>
+					<para>
+						Alternatively, if no scope is explicitly specified, the scope of the component with the <literal>@Out</literal> attribute is used (or the <literal>EVENT</literal> scope if the component is stateless).
+					</para>
+<programlisting>@Out(value="contextVariableName")</programlisting>
+					<para>
+						Specifies the name of the context variable explicitly, instead of using the annotated instance variable name.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>value</literal> &mdash; specifies the name of the context variable. Default to the name of the component attribute.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>required</literal> &mdash; specifies Seam should throw an exception if the component attribute is null during outjection.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+		<para>
+			Note that it is quite common for these annotations to occur together, for example:
+		</para>
+<programlisting>@In(create=true) @Out private User currentUser;</programlisting>
+		<para>
+			The next annotation supports the <emphasis>manager component</emphasis> pattern, where a Seam component that manages the lifecycle of an instance of some other class that is to be injected. It appears on a component getter method.
+		</para>
+		<variablelist spacing="compact">
+			<varlistentry>
+				<term><literal>@Unwrap</literal></term>
+				<listitem>
+<programlisting>@Unwrap</programlisting>
+					<para>
+						Specifies that the object returned by the annotated getter method is the thing that is injected instead of the component instance itself.
+					</para>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+		<para>
+			The next annotation supports the <emphasis>factory component</emphasis> pattern, where a Seam component is responsible for initializing the value of a context variable. This is especially useful for initializing any state needed for rendering the response to a non-faces request. It appears on a component method.
+		</para>
+		<variablelist spacing="compact">
+			<varlistentry>
+				<term><literal>@Factory</literal></term>
+				<listitem>
+<programlisting>@Factory("processInstance")</programlisting>
+					<para>
+						Specifies that the method of the component is used to initialize the value of the named context variable, when the context variable has no value. This style is used with methods that return <literal>void</literal>.
+					</para>
+<programlisting>@Factory("processInstance", scope=CONVERSATION)</programlisting>
+					<para>
+						Specifies that the method returns a value that Seam should use to initialize the value of the named context variable, when the context variable has no value. This style is used with methods that return a value. If no scope is explicitly specified, the scope of the component with the <literal>@Factory</literal> method is used (unless the component is stateless, in which case the <literal>EVENT</literal> context is used).
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>value</literal> &mdash; specifies the name of the context variable. If the method is a getter method, default to the JavaBeans property name.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>scope</literal> &mdash; specifies the scope that Seam should bind the returned value to. Only meaningful for factory methods which return a value.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+		<para>
+			This annotation lets you inject a <literal>Log</literal>:
+		</para>
+		<variablelist spacing="compact">
+			<varlistentry>
+				<term><literal>@Logger</literal></term>
+				<listitem>
+<programlisting>@Logger("categoryName")</programlisting>
+					<para>
+						Specifies that a component field is to be injected with an instance of <literal>org.jboss.seam.log.Log</literal>. For entity beans, the field must be declared as static.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>value</literal> &mdash; specifies the name of the log category. Default to the name of the component class.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+		<para>
+			The last annotation lets you inject a request parameter value:
+		</para>
+		<variablelist spacing="compact">
+			<varlistentry>
+				<term><literal>@RequestParameter</literal></term>
+				<listitem>
+<programlisting>@RequestParameter("parameterName")</programlisting>
+					<para>
+						Specifies that a component attribute is to be injected with the value of a request parameter. Basic type conversions are performed automatically.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>value</literal> &mdash; specifies the name of the request parameter. Default to the name of the component attribute.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_annotations-Annotations_for_component_lifecycle_methods">
+		<title>Annotations for component lifecycle methods</title>
+		<para>
+			These annotations allow a component to react to its own lifecycle events. They occur on methods of the component. There may be only one of each per component class.
+		</para>
+		<variablelist spacing="compact">
+			<varlistentry>
+				<term><literal>@Create</literal></term>
+				<listitem>
+<programlisting>@Create</programlisting>
+					<para>
+						Specifies that the method should be called when an instance of the component is instantiated by Seam. Note that create methods are only supported for JavaBeans and stateful session beans.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry id="destroy-annotation">
+				<term><literal>@Destroy</literal></term>
+				<listitem>
+<programlisting>@Destroy</programlisting>
+					<para>
+						Specifies that the method should be called when the context ends and its context variables are destroyed. Note that create methods are only supported for JavaBeans and stateful session beans.
+					</para>
+					<para>
+						Note that all stateful session bean components <emphasis>must</emphasis> define a method annotated <literal>@Destroy @Remove</literal> in order to guarantee destruction of the stateful bean when a context ends.
+					</para>
+					<para>
+						Destroy methods should be used only for cleanup. <emphasis>Seam catches, logs and swallows any exception that propagates out of a destroy method.</emphasis>
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@Observer</literal></term>
+				<listitem>
+<programlisting>@Observer("somethingChanged")</programlisting>
+					<para>
+						Specifies that the method should be called when a component-driven event of the specified type occurs.
+					</para>
+<programlisting>@Observer(value="somethingChanged",create=false)</programlisting>
+					<para>
+						Specifies that the method should be called when an event of the specified type occurs but that an instance should not be created if one doesn&#39;t exist. If an instance does not exist and create is false, the event will not be observed. The default value for create is true.
+					</para>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_annotations-Annotations_for_context_demarcation">
+		<title>Annotations for context demarcation</title>
+		<para>
+			These annotations provide declarative conversation demarcation. They appear on methods of Seam components, usually action listener methods.
+		</para>
+		<para>
+			Every web request has a conversation context associated with it. Most of these conversations end at the end of the request. If you want a conversation that span multiple requests, you must "promote" the current conversation to a <emphasis>long-running conversation</emphasis> by calling a method marked with <literal>@Begin</literal>.
+		</para>
+		<variablelist spacing="compact">
+			<varlistentry id="begin-annotation">
+				<term><literal>@Begin</literal></term>
+				<listitem>
+				<itemizedlist>
+				<listitem>
+<programlisting>@Begin</programlisting>
+					<para>
+						Specifies that a long-running conversation begins when this method returns a non-null outcome without exception.
+					</para>
+				</listitem>
+				<listitem>
+<programlisting>@Begin(ifOutcome={"success", "continue"})</programlisting>
+					<para>
+						Specifies that a long-running conversation begins when this action listener method returns with one of the given outcomes.
+					</para>
+				</listitem>
+				<listitem>
+<programlisting>@Begin(join=true)</programlisting>
+					<para>
+						Specifies that if a long-running conversation is already in progress, the conversation context is simply propagated.
+					</para>
+				</listitem>
+				<listitem>
+<programlisting>@Begin(nested=true)</programlisting>
+					<para>
+						Specifies that if a long-running conversation is already in progress, a new <emphasis>nested</emphasis> conversation context begins. The nested conversation will end when the next <literal>@End</literal> is encountered, and the outer conversation will resume. It is perfectly legal for multiple nested conversations to exist concurrently in the same outer conversation.
+					</para>
+				</listitem>
+				<listitem>
+<programlisting>@Begin(pageflow="process definition name")</programlisting>
+					<para>
+						Specifies a jBPM process definition name that defines the pageflow for this conversation.
+					</para>
+				</listitem>
+				<listitem>
+<programlisting>@Begin(flushMode=FlushModeType.MANUAL)</programlisting>
+					<para>
+						Specify the flush mode of any Seam-managed persistence contexts. <literal>flushMode=FlushModeType.MANUAL</literal> supports the use of <emphasis>atomic conversations</emphasis> where all write operations are queued in the conversation context until an explicit call to <literal>flush()</literal> (which usually occurs at the end of the conversation).
+					</para>
+				</listitem>
+				<listitem>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes that result in a new long-running conversation context.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>join</literal> &mdash; determines the behavior when a long-running conversation is already in progress. If <literal>true</literal>, the context is propagated. If <literal>false</literal>, an exception is thrown. Default to <literal>false</literal>. This setting is ignored when <literal>nested=true</literal> is specified
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>nested</literal> &mdash; specifies that a nested conversation should be started if a long-running conversation is already in progress.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>flushMode</literal> &mdash; set the flush mode of any Seam-managed Hibernate sessions or JPA persistence contexts that are created during this conversation.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>pageflow</literal> &mdash; a process definition name of a jBPM process definition deployed via <literal>org.jboss.seam.core.jbpm.pageflowDefinitions.</literal>
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+				</itemizedlist>
+			        </listitem>
+			</varlistentry>
+			<varlistentry id="end-annotation">
+				<term><literal>@End</literal></term>
+
+				<listitem>
+				<itemizedlist>
+				<listitem>
+
+<programlisting>@End</programlisting>
+					<para>
+						Specifies that a long-running conversation ends when this method returns a non-null outcome without exception.
+					</para>
+				</listitem>
+				<listitem>
+<programlisting>@End(ifOutcome={"success", "error"}, evenIfException={SomeException.class, OtherException.class})</programlisting>
+					<para>
+						Specifies that a long-running conversation ends when this action listener method returns with one of the given outcomes or throws one of the specified classes of exception.
+					</para>
+				</listitem>
+				<listitem>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes that result in the end of the current long-running conversation.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>beforeRedirect</literal> &mdash; by default, the conversation will not actually be destroyed until after any redirect has occurred. Setting <literal>beforeRedirect=true</literal> specifies that the conversation should be destroyed at the end of the current request, and that the redirect will be processed in a new temporary conversation context.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+				</itemizedlist>
+				</listitem>
+
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@StartTask</literal></term>
+				<listitem>
+<programlisting>@StartTask</programlisting>
+					<para>
+						"Starts" a jBPM task. Specifies that a long-running conversation begins when this method returns a non-null outcome without exception. This conversation is associated with the jBPM task specified in the named request parameter. Within the context of this conversation, a business process context is also defined, for the business process instance of the task instance.
+					</para>
+					<para>
+						The jBPM <literal>TaskInstance</literal> will be available in a request context variable named <literal>taskInstance</literal>. The jPBM <literal>ProcessInstance</literal> will be available in a request context variable named <literal>processInstance</literal>. (Of course, these objects are available for injection via <literal>@In</literal>.)
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>taskIdParameter</literal> &mdash; the name of a request parameter which holds the id of the task. Default to <literal>"taskId"</literal>, which is also the default used by the Seam <literal>taskList</literal> JSF component.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>flushMode</literal> &mdash; set the flush mode of any Seam-managed Hibernate sessions or JPA persistence contexts that are created during this conversation.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@BeginTask</literal></term>
+				<listitem>
+<programlisting>@BeginTask</programlisting>
+					<para>
+						Resumes work on an incomplete jBPM task. Specifies that a long-running conversation begins when this method returns a non-null outcome without exception. This conversation is associated with the jBPM task specified in the named request parameter. Within the context of this conversation, a business process context is also defined, for the business process instance of the task instance.
+					</para>
+					<para>
+						The jBPM <literal>TaskInstance</literal> will be available in a request context variable named <literal>taskInstance</literal>. The jPBM <literal>ProcessInstance</literal> will be available in a request context variable named <literal>processInstance</literal>.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>taskIdParameter</literal> &mdash; the name of a request parameter which holds the id of the task. Default to <literal>"taskId"</literal>, which is also the default used by the Seam <literal>taskList</literal> JSF component.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>flushMode</literal> &mdash; set the flush mode of any Seam-managed Hibernate sessions or JPA persistence contexts that are created during this conversation.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@EndTask</literal></term>
+				<listitem>
+				<itemizedlist>
+				<listitem>
+
+<programlisting>@EndTask</programlisting>
+					<para>
+						"Ends" a jBPM task. Specifies that a long-running conversation ends when this method returns a non-null outcome, and that the current task is complete. Triggers a jBPM transition. The actual transition triggered will be the default transition unless the application has called <literal>Transition.setName()</literal> on the built-in component named <literal>transition</literal>.
+					</para>
+				</listitem>
+				<listitem>
+<programlisting>@EndTask(transition="transitionName")</programlisting>
+					<para>
+						Triggers the given jBPM transition.
+					</para>
+				</listitem>
+				<listitem>
+<programlisting>@EndTask(ifOutcome={"success", "continue"})</programlisting>
+					<para>
+						Specifies that the task ends when this method returns one of the listed outcomes.
+					</para>
+				</listitem>
+				<listitem>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>transition</literal> &mdash; the name of the jBPM transition to be triggered when ending the task. Defaults to the default transition.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes that result in the end of the task.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>beforeRedirect</literal> &mdash; by default, the conversation will not actually be destroyed until after any redirect has occurred. Setting <literal>beforeRedirect=true</literal> specifies that the conversation should be destroyed at the end of the current request, and that the redirect will be processed in a new temporary conversation context.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+				</itemizedlist>
+				</listitem>
+
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@CreateProcess</literal></term>
+				<listitem>
+<programlisting>@CreateProcess(definition="process definition name")</programlisting>
+					<para>
+						Creates a new jBPM process instance when the method returns a non-null outcome without exception. The <literal>ProcessInstance</literal> object will be available in a context variable named <literal>processInstance</literal>.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>definition</literal> &mdash; the name of the jBPM process definition deployed via <literal>org.jboss.seam.core.jbpm.processDefinitions</literal>.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@ResumeProcess</literal></term>
+				<listitem>
+<programlisting>@ResumeProcess(processIdParameter="processId")</programlisting>
+					<para>
+						Re-enters the scope of an existing jBPM process instance when the method returns a non-null outcome without exception. The <literal>ProcessInstance</literal> object will be available in a context variable named <literal>processInstance</literal>.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>processIdParameter</literal> &mdash; the name a request parameter holding the process id. Default to <literal>"processId"</literal>.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_annotations-Annotations_for_transaction_demarcation">
+		<title>Annotations for transaction demarcation</title>
+		<para>
+			Seam provides an annotation that lets you force a rollback of the JTA transaction for certain action listener outcomes.
+		</para>
+		<variablelist spacing="compact">
+			<varlistentry>
+				<term><literal>@Rollback</literal></term>
+				<listitem>
+<programlisting>@Rollback(ifOutcome={"failure", "not-found"})</programlisting>
+					<para>
+						If the outcome of the method matches any of the listed outcomes, or if no outcomes are listed, set the transaction to rollback only when the method completes.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>ifOutcome</literal> &mdash; the JSF outcomes that cause a transaction rollback (no outcomes is interpreted to mean any outcome).
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@Transactional</literal></term>
+				<listitem>
+<programlisting>@Transactional</programlisting>
+					<para>
+						Specifies that a JavaBean component should have a similar transactional behavior to the default behavior of a session bean component. ie. method invocations should take place in a transaction, and if no transaction exists when the method is called, a transaction will be started just for that method. This annotation may be applied at either class or method level.
+					</para>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+		<para>
+			Seam applications usually use the standard EJB3 annotations for all other transaction demarcation needs.
+		</para>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_annotations-Annotations_for_exceptions">
+		<title>Annotations for exceptions</title>
+		<para>
+			These annotations let you specify how Seam should handle an exception that propagates out of a Seam component.
+		</para>
+		<variablelist spacing="compact">
+			<varlistentry>
+				<term><literal>@Redirect</literal></term>
+				<listitem>
+<programlisting>@Redirect(viewId="error.jsp")</programlisting>
+					<para>
+						Specifies that the annotated exception causes a browser redirect to a specified view id.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>viewId</literal> &mdash; specifies the JSF view id to redirect to.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>message</literal> &mdash; a message to be displayed, default to the exception message.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>end</literal> &mdash; specifies that the long-running conversation should end, default to <literal>false</literal>.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@HttpError</literal></term>
+				<listitem>
+<programlisting>@HttpError(errorCode=404)</programlisting>
+					<para>
+						Specifies that the annotated exception causes a HTTP error to be sent.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>errorCode</literal> &mdash; the HTTP error code, default to <literal>500</literal>.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>message</literal> &mdash; a message to be sent with the HTTP error, default to the exception message.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>end</literal> &mdash; specifies that the long-running conversation should end, default to <literal>false</literal>.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_annotations-Annotations_for_validation">
+		<title>Annotations for validation</title>
+		<para>
+			This annotation triggers Hibernate Validator. It appears on a method of a Seam component, almost always an action listener method.
+		</para>
+		<para>
+			Please refer to the documentation for the Hibernate Annotations package for information about the annotations defined by the Hibernate Validator framework.
+		</para>
+		<para>
+			<emphasis>Note that use of <literal>@IfInvalid</literal> is now semi-deprecated and <literal>&lt;s:validateAll&gt;</literal> is now preferred.</emphasis>
+		</para>
+		<variablelist spacing="compact">
+			<varlistentry>
+				<term><literal>@IfInvalid</literal></term>
+				<listitem>
+<programlisting>@IfInvalid(outcome="invalid", refreshEntities=true)</programlisting>
+					<para>
+						Specifies that Hibernate Validator should validate the component before the method is invoked. If the invocation fails, the specified outcome will be returned, and the validation failure messages returned by Hibernate Validator will be added to the <literal>FacesContext</literal>. Otherwise, the invocation will proceed.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>outcome</literal> &mdash; the JSF outcome when validation fails.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>refreshEntities</literal> &mdash; specifies that any invalid entity in the managed state should be refreshed from the database when validation fails. Default to <literal>false</literal>. (Useful with extended persistence contexts.)
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_annotations-Annotations_for_Seam_Remoting">
+		<title>Annotations for Seam Remoting</title>
+		<para>
+			Seam Remoting requires that the local interface of a session bean be annotated with the following annotation:
+		</para>
+		<variablelist spacing="compact">
+			<varlistentry>
+				<term><literal>@WebRemote</literal></term>
+				<listitem>
+<programlisting>@WebRemote(exclude="path.to.exclude")</programlisting>
+					<para>
+						Indicates that the annotated method may be called from client-side JavaScript. The <literal>exclude</literal> property is optional and allows objects to be excluded from the result&#39;s object graph (see the Remoting chapter for more details).
+					</para>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_annotations-Annotations_for_Seam_interceptors">
+		<title>Annotations for Seam interceptors</title>
+		<para>
+			The following annotations appear on Seam interceptor classes.
+		</para>
+		<para>
+			Please refer to the documentation for the EJB 3.0 specification for information about the annotations required for EJB interceptor definition.
+		</para>
+		<variablelist spacing="compact">
+			<varlistentry>
+				<term><literal>@Interceptor</literal></term>
+				<listitem>
+				<itemizedlist>
+				<listitem>
+
+<programlisting>@Interceptor(stateless=true)</programlisting>
+					<para>
+						Specifies that this interceptor is stateless and Seam may optimize replication.
+					</para>
+				</listitem>
+				<listitem>
+<programlisting>@Interceptor(type=CLIENT)</programlisting>
+					<para>
+						Specifies that this interceptor is a "client-side" interceptor that is called before the EJB container.
+					</para>
+				</listitem>
+				<listitem>
+<programlisting>@Interceptor(around={SomeInterceptor.class, OtherInterceptor.class})</programlisting>
+					<para>
+						Specifies that this interceptor is positioned higher in the stack than the given interceptors.
+					</para>
+				</listitem>
+				<listitem>
+<programlisting>@Interceptor(within={SomeInterceptor.class, OtherInterceptor.class})</programlisting>
+					<para>
+						Specifies that this interceptor is positioned deeper in the stack than the given interceptors.
+					</para>
+				</listitem>
+				</itemizedlist>
+				</listitem>
+
+			</varlistentry>
+		</variablelist>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_annotations-Annotations_for_asynchronicity">
+		<title>Annotations for asynchronicity</title>
+		<para>
+			The following annotations are used to declare an asynchronous method, for example:
+		</para>
+<programlisting>@Asynchronous public void scheduleAlert(Alert alert, @Expiration Date date) { ... }</programlisting>
+<programlisting>@Asynchronous public Timer scheduleAlerts(Alert alert, @Expiration Date date, 
+ at IntervalDuration long interval) { ... }</programlisting>
+		<variablelist spacing="compact">
+			<varlistentry>
+				<term><literal>@Asynchronous</literal></term>
+				<listitem>
+<programlisting>@Asynchronous</programlisting>
+					<para>
+						Specifies that the method call is processed asynchronously.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@Duration</literal></term>
+				<listitem>
+<programlisting>@Duration</programlisting>
+					<para>
+						Specifies that a parameter of the asynchronous call is the duration before the call is processed (or first processed for recurring calls).
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@Expiration</literal></term>
+				<listitem>
+<programlisting>@Expiration</programlisting>
+					<para>
+						Specifies that a parameter of the asynchronous call is the datetime at which the call is processed (or first processed for recurring calls).
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@IntervalDuration</literal></term>
+				<listitem>
+<programlisting>@IntervalDuration</programlisting>
+					<para>
+						Specifies that an asynchronous method call recurs, and that the annotationed parameter is duration between recurrences.
+					</para>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_annotations-Annotations_for_use_with_JSF_dataTable">
+		<title>Annotations for use with JSF <literal>dataTable</literal></title>
+		<para>
+			The following annotations make it easy to implement clickable lists backed by a stateful session bean. They appear on attributes.
+		</para>
+		<variablelist spacing="compact">
+			<varlistentry id="datamodel-annotation">
+				<term><literal>@DataModel</literal></term>
+				<listitem>
+<programlisting>@DataModel("variableName")</programlisting>
+					<para>
+						Exposes an attribute of type <literal>List</literal>, <literal>Map</literal>, <literal>Set</literal> or <literal>Object[]</literal> as a JSF <literal>DataModel</literal> into the scope of the owning component (or the <literal>EVENT</literal> scope if the owning component is <literal>STATELESS</literal>). In the case of <literal>Map</literal>, each row of the <literal>DataModel</literal> is a <literal>Map.Entry</literal>.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>value</literal> &mdash; name of the conversation context variable. Default to the attribute name.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>scope</literal> &mdash; if <literal>scope=ScopeType.PAGE</literal> is explicitly specified, the <literal>DataModel</literal> will be kept in the <literal>PAGE</literal> context.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@DataModelSelection</literal></term>
+				<listitem>
+<programlisting>@DataModelSelection</programlisting>
+					<para>
+						Injects the selected value from the JSF <literal>DataModel</literal> (this is the element of the underlying collection, or the map value).
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>value</literal> &mdash; name of the conversation context variable. Not needed if there is exactly one <literal>@DataModel</literal> in the component.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@DataModelSelectionIndex</literal></term>
+				<listitem>
+<programlisting>@DataModelSelectionIndex</programlisting>
+					<para>
+						Exposes the selection index of the JSF <literal>DataModel</literal> as an attribute of the component (this is the row number of the underlying collection, or the map key).
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>value</literal> &mdash; name of the conversation context variable. Not needed if there is exactly one <literal>@DataModel</literal> in the component.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_annotations-Meta_annotations_for_databinding">
+		<title>Meta-annotations for databinding</title>
+		<para>
+			These meta-annotations make it possible to implement similar functionality to <literal>@DataModel</literal> and <literal>@DataModelSelection</literal> for other datastructures apart from lists.
+		</para>
+		<variablelist spacing="compact">
+			<varlistentry>
+				<term><literal>@DataBinderClass</literal></term>
+				<listitem>
+<programlisting>@DataBinderClass(DataModelBinder.class)</programlisting>
+					<para>
+						Specifies that an annotation is a databinding annotation.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><literal>@DataSelectorClass</literal></term>
+				<listitem>
+<programlisting>@DataSelectorClass(DataModelSelector.class)</programlisting>
+					<para>
+						Specifies that an annotation is a dataselection annotation.
+					</para>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_annotations-Annotations_for_packaging">
+		<title>Annotations for packaging</title>
+		<para>
+			This annotation provides a mechanism for declaring information about a set of components that are packaged together. It can be applied to any Java package.
+		</para>
+		<variablelist spacing="compact">
+			<varlistentry>
+				<term><literal>@Namespace</literal></term>
+				<listitem>
+<programlisting>@Namespace(value="http://jboss.com/products/seam/example/seampay")</programlisting>
+					<para>
+						Specifies that components in the current package are associated with the given namespace. The declared namespace can be used as an XML namespace in a <literal>components.xml</literal> file to simplify application configuration.
+					</para>
+<programlisting>@Namespace(value="http://jboss.com/products/seam/core", prefix="org.jboss.seam.core")</programlisting>
+					<para>
+						Specifies a namespace to associate with a given package. Additionally, it specifies a component name prefix to be applied to component names specified in the XML file. For example, an XML element named <literal>microcontainer</literal> that is associated with this namespace would be understood to actually refere to a component named <literal>org.jboss.seam.core.microcontainer</literal>.
+					</para>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+	</section>
+
+</chapter>
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Author_Group.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Author_Group.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Author_Group.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,93 @@
+<?xml version='1.0'?>
+<!DOCTYPE authorgroup PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+<authorgroup>
+        <!--<author><firstname>Gavin</firstname><surname>King</surname></author>	
+	<author><firstname>Christian</firstname><surname>Bauer</surname></author>	
+        <author><firstname>Norman</firstname><surname>Richards</surname></author>	
+        <author><firstname>Shane</firstname><surname>Bryzak</surname></author>	
+        <author><firstname>Pete</firstname><surname>Muir</surname></author>	
+        <author><firstname>Emmanuel</firstname><surname>Bernard</surname></author>	
+        <author><firstname>Max</firstname><surname>Andersen</surname></author>	
+        <author><firstname>Michael</firstname><surname>Youngstrom</surname></author>	
+        <author><firstname>Thomas</firstname><surname>Heute</surname></author>	
+	<author><firstname>Michael</firstname><surname>Yuan</surname></author>	-->
+
+        <author><firstname>Written By: Gavin King, Christian Bauer, Norman Richards, Shane Bryzak, Pete Muir, Emmanuel Bernard, Max Andersen, Michael Youngstrom, Thomas Heute, Michael Yuan</firstname></author>	
+	
+	<othercredit>
+		<firstname>Japanese Translation: Fusayuki Minamoto, Takayoshi Kimura, Takayoshi Osawa, Reiko Ohtsuka, Syunpei Shiraishi, Toshiya Kobayashi, Shigeaki Wakizaka, Ken Yamada, Noriko Mizumoto</firstname>
+  </othercredit>
+	
+	
+	
+	
+	
+	<!--
+  <othercredit>
+	  <firstname>Fusayuki</firstname>
+	  <surname>Minamoto</surname>
+		<contrib>Japanese Translation
+		</contrib>
+  </othercredit>
+  <othercredit>
+	  <firstname>Takayoshi</firstname>
+	  <surname>Kimura</surname>
+	  <contrib>Japanese Translation
+	  </contrib>
+  </othercredit>
+  
+  
+  <othercredit>
+	  <firstname>Takayoshi</firstname>
+	  <surname>Osawa</surname>
+	  <contrib>Japanese Translation
+	  </contrib>
+  </othercredit>
+  
+  
+  <othercredit>
+	  <firstname>Reiko</firstname>
+	  <surname>Ohtsuka</surname>
+	  <contrib>Japanese Translation
+	  </contrib>
+  </othercredit>
+  
+  
+  <othercredit>
+	  <firstname>Syunpei</firstname>
+	  <surname>Shiraishi</surname>
+	  <contrib>Japanese Translation
+	  </contrib>
+  </othercredit>
+  
+  
+  <othercredit>
+	  <firstname>Toshiya</firstname>
+	  <surname>Kobayashi</surname>
+	  <contrib>Japanese Translation
+	  </contrib>
+  </othercredit>
+  
+  <othercredit>
+	  <firstname>Shigeaki</firstname>
+	  <surname>Wakizaka</surname>
+	  <contrib>Japanese Translation
+	  </contrib>
+  </othercredit>
+  
+  <othercredit>
+	  <firstname>Ken</firstname>
+	  <surname>Yamada</surname>
+	  <contrib>Japanese Translation
+	  </contrib>
+  </othercredit>
+  
+  <othercredit>
+	  <firstname>Noriko</firstname>
+	  <surname>Mizumoto</surname>
+	  <contrib>Japanese Translation
+	  </contrib>
+  </othercredit>
+ -->
+</authorgroup>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Book_Info.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Book_Info.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Book_Info.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,31 @@
+<?xml version='1.0'?>
+<!DOCTYPE bookinfo PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
+]>
+<bookinfo id="Seam_Reference_Guide-Seam___Contextual_Components">
+	<title>Seam Reference Guide CP07</title>
+	<subtitle>for Use with JBoss Enterprise Application Platform 4.3 Cumulative Patch 7</subtitle>
+	<edition>2.0</edition>
+	<pubsnumber>5</pubsnumber>
+	<productname>JBoss Enterprise Application Platform</productname>
+	<productnumber>4.3</productnumber>
+<!--	<pubdate>Sep, 2007</pubdate> -->
+	<isbn>N/A</isbn>
+	<abstract><para>This book is a Reference Guide to Seam 1.2 for JBoss Enterprise Application Platform 4.3.</para>
+	</abstract>
+	<corpauthor>
+	  <inlinemediaobject>
+		<imageobject>
+			 <imagedata fileref="Common_Content/images/redhat-logo.svg" />
+		 </imageobject>
+	  </inlinemediaobject>
+	</corpauthor>
+	<copyright>
+		<year>&YEAR;</year>
+		<holder>&HOLDER;</holder>
+	</copyright>
+	<xi:include href="Common_Content/Legal_Notice.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Author_Group.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+</bookinfo>
+
+
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Cache.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Cache.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Cache.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,221 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
+
+<chapter id="cache">
+    <title>Caching</title>
+    
+    <para>
+        In almost all enterprise applications, the database is the primary 
+        bottleneck, and the least scalable tier of the runtime environment. So anything we can possibly do to share the database <emphasis>less 
+        often</emphasis> is worth doing.
+    </para>
+    
+    <para>
+        This calls for a cache. Well, not just one cache. A well designed Seam
+        application will feature a rich, multi-layered caching strategy that
+        impacts every layer of the application:
+    </para>
+    
+    <itemizedlist>
+        <listitem>
+            <para>
+                The database has its own cache. This is 
+                particularly important, but cannot scale like a cache in the
+                application tier.
+            </para>
+        </listitem>
+        <listitem>
+            <para>
+                Your ORM solution (Hibernate, or some other JPA implementation)
+                has a second-level cache of data from the database. This is
+                a very powerful capability, but is often misused. In a clustered
+                environment, keeping the data in the cache transactionally
+                consistent across the whole cluster, and with the database,
+                is quite expensive. It makes most sense for data which is shared
+                between many users, and is updated rarely. <!-- In traditional 
+                stateless architectures, people often try to use the second-level
+                cache for conversational state. This is always bad, and is
+                especially wrong in Seam. -->
+            </para>
+        </listitem>
+        <listitem>
+            <para>
+                The Seam conversation context is a cache of conversational state.
+                Components you put into the conversation context can hold and cache
+                state relating to the current user interaction.
+            </para>
+        </listitem>
+        <listitem>
+            <para>
+                In particular, the
+                Seam-managed persistence context (or an extended EJB container-managed
+                persistence context associated with a conversation-scoped stateful
+                session bean) acts as a cache of data that has been read in the
+                current conversation. This cache tends to have a pretty high
+                hitrate. Seam optimizes the replication of Seam-managed persistence 
+                contexts in a clustered environment, and there is no requirement for 
+                transactional consistency with the database (optimistic locking is 
+                sufficient) so you do not need to worry too much about the performance 
+                implications of this cache, unless you read thousands of objects into
+                a single persistence context.
+            </para>
+        </listitem>
+       <listitem>
+            <para>
+                The application can cache non-transactional state in the Seam
+                application context. State kept in the application context is
+                of course not visible to other nodes in the cluster.
+            </para>
+        </listitem>
+       <listitem>
+            <para>
+                The application can cache transactional state using the Seam
+                <literal>pojoCache</literal> component, which integrates
+                JBossCache into the Seam environment. This state will be visible
+                to other nodes if you run JBoss cache in a clustered mode.
+            </para>
+        </listitem>
+       <listitem>
+            <para>
+                Finally, Seam lets you cache rendered fragments of a JSF page. Unlike  
+                the ORM second-level cache, this cache is not automatically invalidated 
+                when data changes, so you need to write application code to perform
+                explicit invalidation, or set appropriate expiration policies.
+            </para>
+        </listitem>
+    </itemizedlist>
+    
+    <para>
+        For more information about the second-level cache, you will need to refer to
+        the documentation of your ORM solution, since this is an extremely complex
+        topic. In this section we will discuss the use of JBossCache directly, via
+        the <literal>pojoCache</literal> component, or as the page fragment cache,
+        via the <literal>&lt;s:cache&gt;</literal> control.
+    </para>
+    
+    <section>
+        <title>Using JBossCache in Seam</title>
+        
+        <para>
+            The built-in <literal>pojoCache</literal> component manages an instance
+            of <literal>org.jboss.cache.aop.PojoCache</literal>. You can safely put 
+            any immutable Java object in the cache, and it will be replicated across
+            the cluster (assuming that replication is enabled). If you want to
+            keep mutable objects in the cache, you will need to run the JBoss Cache
+            bytecode preprocessor to ensure that changes to the objects will be
+            automatically detected and replicated.
+        </para>
+        
+        <para>
+            To use <literal>pojoCache</literal>, all you need to do is put the
+            JBossCache jars in the classpath, and provide a resource named
+            <literal>treecache.xml</literal> with an appropriate cache configuration.
+            JBoss Cache has many scary and confusing configuration settings, so
+            we won't discuss them here. Please refer to the JBoss Cache documentation
+            for more information.
+        </para>
+        
+        <para>
+            You can find a sample <literal>treecache.xml</literal> in
+            <literal>examples/blog/resources/treecache.xml</literal>.
+        </para>
+             
+        
+        <para>
+            For an EAR deployment of Seam, we recommend that the JBoss Cache jars and
+            configuration go directly into the EAR. Make sure you place both
+            <literal>jboss-cache.jar</literal> and <literal>jgroups.jar</literal>
+            in your EAR's lib folder.
+        </para>
+        
+        <para>
+            Now you can inject the cache into any Seam component:
+        </para>
+        
+        <programlisting role="JAVA"><![CDATA[@Name("chatroom")
+public class Chatroom {
+    @In PojoCache pojoCache;
+    
+    public void join(String username) {
+      try
+      {
+         Set<String> userList = (Set<String>) pojoCache.get("chatroom", "userList");
+         if (userList==null) 
+         {
+            userList = new HashSet<String>();
+            pojoCache.put("chatroom", "userList", userList);
+         }
+         userList.put(username);
+      }
+      catch (CacheException ce)
+      {
+         throw new RuntimeException(ce);
+      }
+    }
+}]]></programlisting>
+
+        <para>
+            If you want to have multiple JBoss Cache configurations in your application,
+            use <literal>components.xml</literal>:
+        </para>
+        
+        <programlisting role="JAVA"><![CDATA[<core:pojo-cache name="myCache" cfg-resource-name="myown/cache.xml"/>]]></programlisting>
+        
+    </section>
+    
+    <section>
+        <title>Page fragment caching</title>
+        
+        <para>
+            The most interesting use of JBoss Cache is the <literal>&lt;s:cache&gt;</literal>
+            tag, Seam's solution to the problem of page fragment caching in JSF.
+            <literal>&lt;s:cache&gt;</literal> uses <literal>pojoCache</literal> internally,
+            so you need to follow the steps listed above before you can use it. <!-- (Put the jars 
+            in the EAR, wade through the scary configuration options, etc.) -->
+        </para>
+        
+        <para>
+            <literal>&lt;s:cache&gt;</literal> is used for caching some rendered content which
+            changes rarely. For example, the welcome page of our blog displays the recent
+            blog entries:
+        </para>
+        
+        <programlisting role="XHTML"><![CDATA[<s:cache key="recentEntries-#{blog.id}" region="welcomePageFragments">
+   <h:dataTable value="#{blog.recentEntries}" var="blogEntry">
+      <h:column>
+         <h3>#{blogEntry.title}</h3>
+         <div>
+            <s:formattedText value="#{blogEntry.body}"/>
+         </div>
+      </h:column>
+   </h:dataTable>
+</s:cache>]]></programlisting>
+
+        <para>
+            The <literal>key</literal> will let you have multiple cached versions of each page
+            fragment. In this case, there is one cached version per blog. The 
+            <literal>region</literal> determines the JBossCache node that all version will
+	    be stored in. Different nodes may have different expiry policies (setup during the previous steps).  <!--(That is the 
+            stuff you set up using the aforementioned scary configuration options.) -->
+        </para>
+        
+        <para>
+            The issue with the <literal>&lt;s:cache&gt;</literal> tag is that it 
+            is unable to recognize when the underlying data changes (for example, when the 
+            blogger posts a new entry). So you need to evict the cached fragment manually:
+        </para>
+        
+        <programlisting role="JAVA"><![CDATA[public void post() {
+    ...
+    entityManager.persist(blogEntry);
+    pojoCache.remove("welcomePageFragments", "recentEntries-" + blog.getId() );
+}]]></programlisting>
+        
+        <para>
+            Alternatively, if it is not critical that changes are immediately visible to the
+            user, you could set a short expiry time on the JbossCache node.
+        </para>
+        
+    </section>
+    
+</chapter>
\ No newline at end of file


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Cache.xml
___________________________________________________________________
Name: svn:executable
   + *

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Components.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Components.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Components.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1559 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
+
+<chapter id="components">
+    <title>Built-in Seam components</title>
+    <para>
+        This chapter describes Seam's built in components, and their
+        configuration properties. The built in components will be created even if they
+        are not listed in your <literal>components.xml</literal> file, but if you need to
+        override default properties or specify more than one component of a certain type,
+        <literal>components.xml</literal> is used.
+    </para>
+    
+    <para>
+       You can replace any of the built in components with
+        your own implementations simply by specifying the name of one 
+        of the built in components on your own class using 
+        <literal>@Name</literal>.
+    </para>
+    
+    <para>
+        Even though all the built in components use a
+        qualified name, most of them are aliased to unqualified names by
+        default. These aliases specify <literal>auto-create="true"</literal>,
+        so you do not need to use <literal>create=true</literal> when
+        injecting built-in components by their unqualified name.
+    </para>
+    
+    <section>
+        <title>Context injection components</title>
+        <para>
+            The first set of built in components exist purely to support
+            injection of various contextual objects. For example, the
+            following component instance variable would have the Seam
+            session context object injected:
+        </para>
+        
+        <programlisting role="JAVA"><![CDATA[@In private Context sessionContext;]]></programlisting>
+    
+    	<variablelist >
+            <varlistentry>
+                <term><literal>org.jboss.seam.core.contexts</literal></term>
+                <listitem>
+                    <para>
+                        Component that provides access to Seam Context objects, for
+                        example <literal>org.jboss.seam.core.contexts.sessionContext['user']</literal>.
+                    </para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.faces.facesContext</literal></term>
+                <listitem>
+                    <para>
+                        Manager component for the <literal>FacesContext</literal> context 
+                        object (not a true Seam context)
+                    </para>
+                </listitem>
+            </varlistentry>
+        </variablelist>
+        
+        <para>
+            All of these components are always installed.
+        </para>
+
+    </section>
+    
+    <section>
+        <title>Utility components</title>
+        <para>
+            These components are merely useful.
+        </para>
+        
+         <variablelist>
+            <varlistentry>
+                <term><literal>org.jboss.seam.faces.facesMessages</literal></term>
+                <listitem>
+                    <para>
+                        Allows faces success messages to propagate across a browser redirect.
+                    </para>
+                    <itemizedlist>
+                        <listitem>
+                        <para>
+                            <literal>add(FacesMessage facesMessage)</literal> &#8212; add 
+                            a faces message, which will be displayed during the next render
+                            response phase that occurs in the current conversation.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>add(String messageTemplate)</literal> &#8212; add 
+                            a faces message, rendered from the given message template
+                            which may contain EL expressions.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>add(Severity severity, String messageTemplate)</literal> &#8212; 
+                            add a faces message, rendered from the given message template
+                            which may contain EL expressions.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>addFromResourceBundle(String key)</literal> &#8212; 
+                            add a faces message, rendered from a message template defined
+                            in the Seam resource bundle which may contain EL expressions.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>addFromResourceBundle(Severity severity, String key)</literal> &#8212; 
+                            add a faces message, rendered from a message template defined
+                            in the Seam resource bundle which may contain EL expressions.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>clear()</literal> &#8212; clear all messages.
+                        </para>
+                        </listitem>
+                    </itemizedlist>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.faces.redirect</literal></term>
+                <listitem>
+                    <para>
+                        A convenient API for performing redirects with parameters (this
+                        is especially useful for bookmarkable search results screens).
+                    </para>
+                    <itemizedlist>
+                        <listitem>
+                        <para>
+                            <literal>redirect.viewId</literal> &#8212; the JSF view id
+                            to redirect to.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>redirect.conversationPropagationEnabled</literal> &#8212; 
+                            determines whether the conversation will propagate across the 
+                            redirect.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>redirect.parameters</literal> &#8212; a map of
+                            request parameter name to value, to be passed in the redirect
+                            request.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>execute()</literal> &#8212; perform the redirect
+                            immediately.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>captureCurrentRequest()</literal> &#8212; stores 
+                            the view id and request parameters of the current GET 
+                            request (in the conversation context), for later use
+                            by calling <literal>execute()</literal>.
+                        </para>
+                        </listitem>
+                    </itemizedlist>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.faces.httpError</literal></term>
+                <listitem>
+                    <para>
+                        A convenient API for sending HTTP errors.
+                    </para>
+                </listitem>
+             </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.core.events</literal></term>
+                <listitem>
+                    <para>
+                        An API for raising events that can be observed via
+                        <literal>@Observer</literal> methods, or method
+                        bindings in <literal>components.xml</literal>.
+                    </para>
+                    <itemizedlist>
+                        <listitem>
+                        <para>
+                            <literal>raiseEvent(String type)</literal> &#8212; raise
+                            an event of a particular type and distribute to all
+                            observers.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>raiseAsynchronousEvent(String type)</literal> &#8212; 
+                            raise an event to be processed asynchronously by the EJB3
+                            timer service.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>raiseTimedEvent(String type, ....)</literal> &#8212; 
+                            schedule an event to be processed asynchronously by the EJB3
+                            timer service.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>addListener(String type, String methodBinding)</literal> 
+                            &#8212; add an observer for a particular event type.
+                        </para>
+                        </listitem>
+                    </itemizedlist>
+                </listitem>
+             </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.core.interpolator</literal></term>
+                <listitem>
+                    <para>
+                        An API for interpolating the values of JSF EL expressions in
+                        Strings.
+                    </para>
+                    <itemizedlist>
+                        <listitem>
+                        <para>
+                            <literal>interpolate(String template)</literal> &#8212; scan
+                            the template for JSF EL expressions of the form <literal>#{...}</literal>
+                            and replace them with their evaluated values.
+                        </para>
+                        </listitem>
+                    </itemizedlist>
+                </listitem>
+             </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.core.expressions</literal></term>
+                <listitem>
+                    <para>
+                        An API for creating value and method bindings.
+                    </para>
+                    <itemizedlist>
+                        <listitem>
+                        <para>
+                            <literal>createValueBinding(String expression)</literal> &#8212; create
+                            a value binding object.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>createMethodBinding(String expression)</literal> &#8212; create
+                            a method binding object.
+                        </para>
+                        </listitem>
+                    </itemizedlist>
+                </listitem>
+             </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.core.pojoCache</literal></term>
+                <listitem>
+                    <para>
+                        Manager component for a JBoss Cache <literal>PojoCache</literal> 
+                        instance.
+                    </para>
+                    <itemizedlist>
+                        <listitem>
+                        <para>
+                            <literal>pojoCache.cfgResourceName</literal> &#8212; the name of 
+                            the configuration file. Default to <literal>treecache.xml</literal>.
+                        </para>
+                        </listitem>
+                    </itemizedlist>
+                </listitem>
+            </varlistentry>
+        </variablelist>
+        
+        <para>
+            All of these components are always installed.
+        </para>
+    </section>
+    
+    <section>
+        <title>Components for internationalization and themes</title>
+        <para>
+            The next group of components make it easy to build internationalized user interfaces
+            using Seam.
+        </para>
+        
+    	<variablelist>
+            <varlistentry>
+                <term><literal>org.jboss.seam.core.locale</literal></term>
+                <listitem>
+                    <para>
+                        The Seam locale.
+                    </para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.international.timezone</literal></term>
+                <listitem>
+                    <para>
+                        The Seam timezone. The timezone is session scoped.
+                    </para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.core.resourceBundle</literal></term>
+                <listitem>
+                    <para>
+                        The Seam resource bundle. The resource bundle is stateless. The Seam
+                        resource bundle performs a depth-first search for keys in a list of Java
+                        resource bundles.
+                    </para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.core.resourceLoader</literal></term>
+                <listitem>
+                    <para>
+                        The resource loader provides access to application resources and resource bundles.
+                    </para>
+                    <itemizedlist>
+                        <listitem>
+                        <para>
+                            <literal>resourceLoader.bundleNames</literal> &#8212; the names of 
+                            the Java resource bundles to search when the Seam resource bundle is
+                            used. Default to <literal>messages</literal>.
+                        </para>
+                        </listitem>
+                    </itemizedlist>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.international.localeSelector</literal></term>
+                <listitem>
+                    <para>
+                        Supports selection of the locale either at configuration time, 
+                        or by the user at runtime.
+                    </para>
+                    <itemizedlist>
+                        <listitem>
+                        <para>
+                            <literal>select()</literal> &#8212; select the specified locale.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>localeSelector.locale</literal> &#8212; the actual
+                            <literal>java.util.Locale</literal>.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>localeSelector.localeString</literal> &#8212; the 
+                            string representation of the locale.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>localeSelector.language</literal> &#8212; the language for
+                            the specified locale.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>localeSelector.country</literal> &#8212; the country for
+                            the specified locale.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>localeSelector.variant</literal> &#8212; the variant for
+                            the specified locale.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>localeSelector.supportedLocales</literal> &#8212; a list
+                            of <literal>SelectItem</literal>s representing the supported locales 
+                            listed in <literal>jsf-config.xml</literal>.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>localeSelector.cookieEnabled</literal> &#8212; specifies
+                            that the locale selection should be persisted via a cookie.
+                        </para>
+                        </listitem>
+                    </itemizedlist>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.international.timezoneSelector</literal></term>
+                <listitem>
+                    <para>
+                        Supports selection of the timezone either at configuration time, 
+                        or by the user at runtime.
+                    </para>
+                    <itemizedlist>
+                        <listitem>
+                        <para>
+                            <literal>select()</literal> &#8212; select the specified locale.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>timezoneSelector.timezone</literal> &#8212; the actual
+                            <literal>java.util.TimeZone</literal>.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>timezoneSelector.timeZoneId</literal> &#8212; the 
+                            string representation of the timezone.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>timezoneSelector.cookieEnabled</literal> &#8212; specifies
+                            that the timezone selection should be persisted via a cookie.
+                        </para>
+                        </listitem>
+                    </itemizedlist>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.international.messages</literal></term>
+                <listitem>
+                    <para>
+                        A map containing internationalized messages rendered from message
+                        templates defined in the Seam resource bundle.
+                    </para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.theme.themeSelector</literal></term>
+                <listitem>
+                    <para>
+                        Supports selection of the theme either at configuration time, 
+                        or by the user at runtime.
+                    </para>
+                    <itemizedlist>
+                        <listitem>
+                        <para>
+                            <literal>select()</literal> &#8212; select the specified theme.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>theme.availableThemes</literal> &#8212; the list of
+                            defined themes.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>themeSelector.theme</literal> &#8212; the selected
+                            theme.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>themeSelector.themes</literal> &#8212; a list
+                            of <literal>SelectItem</literal>s representing the defined
+                            themes.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>themeSelector.cookieEnabled</literal> &#8212; specifies
+                            that the theme selection should be persisted via a cookie.
+                        </para>
+                        </listitem>
+                    </itemizedlist>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.theme.theme</literal></term>
+                <listitem>
+                    <para>
+                        A map containing theme entries.
+                    </para>
+                </listitem>
+            </varlistentry>
+         </variablelist>
+         
+        
+        <para>
+            All of these components are always installed.
+        </para>
+    </section>
+    
+    <section>
+        <title>Components for controlling conversations</title>
+        <para>
+            The next group of components allow control of conversations by the application or 
+            user interface.
+        </para>
+        
+    	<variablelist>
+            <varlistentry>
+                <term><literal>org.jboss.seam.core.conversation</literal></term>
+                <listitem>
+                    <para>
+                        API for application control of attributes of the current Seam conversation.
+                    </para>
+                    <itemizedlist>
+                        <listitem>
+                        <para>
+                            <literal>getId()</literal> &#8212; returns the current conversation ID
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>isNested()</literal> &#8212; is the current conversation a
+                            nested conversation?
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>isLongRunning()</literal> &#8212; is the current conversation a
+                            long-running conversation?
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>getId()</literal> &#8212; returns the current conversation ID
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>getParentId()</literal> &#8212; returns the conversation ID
+                            of the parent conversation
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>getRootId()</literal> &#8212; returns the conversation ID
+                            of the root conversation
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>setTimeout(int timeout)</literal> &#8212; sets the timeout
+                            for the current conversation
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>setViewId(String outcome)</literal> &#8212; sets the view id
+                            to be used when switching back to the current conversation from the 
+                            conversation switcher, conversation list, or breadcrumbs.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>setDescription(String description)</literal> &#8212; sets the 
+                            description of the current conversation to be displayed in the 
+                            conversation switcher, conversation list, or breadcrumbs.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>redirect()</literal> &#8212; redirect to the last well-defined
+                            view id for this conversation (useful after login challenges).
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>leave()</literal> &#8212; exit the scope of this conversation,
+                            without actually ending the conversation.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>begin()</literal> &#8212; begin a long-running conversation
+                            (equivalent to <literal>@Begin</literal>).
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>beginPageflow(String pageflowName)</literal> &#8212; begin a 
+                            long-running conversation with a pageflow (equivalent to 
+                            <literal>@Begin(pageflow="...")</literal>).
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>end()</literal> &#8212; end a long-running conversation
+                            (equivalent to <literal>@End</literal>).
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>pop()</literal> &#8212; pop the conversation stack, returning
+                            to the parent conversation.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>root()</literal> &#8212; return to the root conversation of 
+                            the conversation stack.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>changeFlushMode(FlushModeType flushMode)</literal> &#8212; change 
+                            the flush mode of the conversation.
+                        </para>
+                        </listitem>
+                    </itemizedlist>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.core.conversationList</literal></term>
+                <listitem>
+                    <para>
+                        Manager component for the conversation list.
+                    </para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.core.conversationStack</literal></term>
+                <listitem>
+                    <para>
+                        Manager component for the conversation stack (breadcrumbs).
+                    </para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.faces.switcher</literal></term>
+                <listitem>
+                    <para>
+                        The conversation switcher.
+                    </para>
+                </listitem>
+            </varlistentry>
+        </variablelist>
+        
+        <para>
+            All of these components are always installed.
+        </para>
+
+    </section>
+    
+    <section>
+        <title>jBPM-related components</title>
+        <para>
+            These components are for use with jBPM.
+        </para>
+        
+        <variablelist>
+            <varlistentry>
+                <term><literal>org.jboss.seam.pageflow.pageflow</literal></term>
+                <listitem>
+                    <para>
+                        API control of Seam pageflows.
+                    </para>
+                    <itemizedlist>
+                        <listitem>
+                        <para>
+                            <literal>isInProcess()</literal> &#8212; returns <literal>true</literal>
+                            if there is currently a pageflow in process
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>getProcessInstance()</literal> &#8212; returns jBPM
+                            <literal>ProcessInstance</literal> for the current pageflow
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>begin(String pageflowName)</literal> &#8212; begin a pageflow
+                            in the context of the current conversation
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>reposition(String nodeName)</literal> &#8212; reposition the
+                            current pageflow to a particular node
+                        </para>
+                        </listitem>
+                    </itemizedlist>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.bpm.actor</literal></term>
+                <listitem>
+                    <para>
+                        API for application control of attributes of the jBPM actor associated
+                        with the current session.
+                    </para>
+                    <itemizedlist>
+                        <listitem>
+                        <para>
+                            <literal>setId(String actorId)</literal> &#8212; sets the jBPM
+                            actor id of the current user.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>getGroupActorIds()</literal> &#8212; returns a 
+                            <literal>Set</literal> to which jBPM actor ids for the
+                            current users groups may be added.
+                        </para>
+                        </listitem>
+                    </itemizedlist>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.bpm.transition</literal></term>
+                <listitem>
+                    <para>
+                        API for application control of the jBPM transition for the current
+                        task.
+                    </para>
+                    <itemizedlist>
+                        <listitem>
+                        <para>
+                            <literal>setName(String transitionName)</literal> &#8212; sets the 
+                            jBPM transition name to be used when the current task is ended
+                            via <literal>@EndTask</literal>.
+                        </para>
+                        </listitem>
+                    </itemizedlist>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.bpm.businessProcess</literal></term>
+                <listitem>
+                    <para>
+                        API for programmatic control of the association between the
+                        conversation and business process.
+                    </para>
+                    <itemizedlist>
+                        <listitem>
+                        <para>
+                            <literal>businessProcess.taskId</literal> &#8212; the id of the task 
+                            associated with the current conversation.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>businessProcess.processId</literal> &#8212; the id of the process
+                            associated with the current conversation.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>businessProcess.hasCurrentTask()</literal> &#8212; is a task
+                            instance associated with the current conversation?
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>businessProcess.hasCurrentProcess()</literal> &#8212; is a process
+                            instance associated with the current conversation.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>createProcess(String name)</literal> &#8212; create an
+                            instance of the named process definition and associate it with
+                            the current conversation.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>startTask()</literal> &#8212; start the task 
+                            associated with the current conversation.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>endTask(String transitionName)</literal> &#8212; end the task 
+                            associated with the current conversation.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>resumeTask(Long id)</literal> &#8212; associate the task with
+                            the given id with the current conversation.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>resumeProcess(Long id)</literal> &#8212; associate the process 
+                            with the given id with the current conversation.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>transition(String transitionName)</literal> &#8212; trigger
+                            the transition.
+                        </para>
+                        </listitem>
+                    </itemizedlist>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.bpm.taskInstance</literal></term>
+                <listitem>
+                    <para>
+                        Manager component for the jBPM <literal>TaskInstance</literal>.
+                    </para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.bpm.processInstance</literal></term>
+                <listitem>
+                    <para>
+                        Manager component for the jBPM <literal>ProcessInstance</literal>.
+                    </para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.bpm.jbpmContext</literal></term>
+                <listitem>
+                    <para>
+                        Manager component for an event-scoped <literal>JbpmContext</literal>.
+                    </para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.bpm.taskInstanceList</literal></term>
+                <listitem>
+                    <para>
+                        Manager component for the jBPM task list.
+                    </para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.bpm.pooledTaskInstanceList</literal></term>
+                <listitem>
+                    <para>
+                        Manager component for the jBPM pooled task list.
+                    </para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.bpm.taskInstanceListForType</literal></term>
+                <listitem>
+                    <para>
+                        Manager component for the jBPM task lists.
+                    </para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.bpm.pooledTask</literal></term>
+                <listitem>
+                    <para>
+                        Action handler for pooled task assignment.
+                    </para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.bpm.processInstanceFinder</literal></term>
+                <listitem>
+                    <para>
+                        Manager for the process instance task list.
+                    </para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.bpm.processInstanceList</literal></term>
+                <listitem>
+                    <para>
+                         The process instance task list.
+                    </para>
+                </listitem>
+            </varlistentry>
+        </variablelist>
+        
+        <para>
+            All of these components are installed whenever the component
+            <literal>org.jboss.seam.bpm.jbpm</literal> is installed.
+        </para>
+        
+    </section>
+    
+    <section>
+        <title>Security-related components</title>
+        <para>
+            These components relate to web-tier security.
+        </para>
+        
+        <variablelist>
+            <varlistentry>
+                <term><literal>org.jboss.seam.web.userPrincipal</literal></term>
+                <listitem>
+                    <para>
+                        Manager component for the current user <literal>Principal</literal>.
+                    </para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.web.isUserInRole</literal></term>
+                <listitem>
+                    <para>
+                        Allows JSF pages to choose to render a control, depending upon
+                        the roles available to the current principal.
+                        <literal>&lt;h:commandButton value="edit" rendered="#{isUserInRole['admin']}"/&gt;</literal>.
+                    </para>
+                </listitem>
+            </varlistentry>
+        </variablelist>
+    </section>
+    
+    <section>
+        <title>JMS-related components</title>
+        <para>
+            These components are for use with managed <literal>TopicPublisher</literal>s
+            and <literal>QueueSender</literal>s (see below).
+        </para>
+        
+        <variablelist>
+            <varlistentry>
+                <term><literal>org.jboss.seam.jms.queueSession</literal></term>
+                <listitem>
+                    <para>
+                        Manager component for a JMS <literal>QueueSession</literal> .
+                    </para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.jms.topicSession</literal></term>
+                <listitem>
+                    <para>
+                        Manager component for a JMS <literal>TopicSession</literal> .
+                    </para>
+                </listitem>
+            </varlistentry>
+        </variablelist>
+    </section>     
+    
+    <section id="components.mail">
+        <title>Mail-related components</title>
+        <para>
+            These components are for use with Seam's Email support 
+        </para>
+        
+        <variablelist>
+            <varlistentry>
+                <term><literal>org.jboss.seam.mail.mailSession</literal></term>
+                <listitem>
+                    <para>
+                        Manager component for a JavaMail <literal>Session</literal>. The
+                        session can be either looked up in the JNDI context (by setting the
+                        <literal>sessionJndiName</literal> property) or it can created from the
+                        configuration options in which case the <literal>host</literal> is
+                        mandatory. 
+                    </para>
+                     <itemizedlist>
+                        <listitem>
+                        <para>
+                            <literal>org.jboss.seam.mail.mailSession.host</literal> &#8212; the hostname of the SMTP server to use
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>org.jboss.seam.mail.mailSession.port</literal> &#8212; the port of the SMTP server to use
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>org.jboss.seam.mail.mailSession.username</literal> &#8212;  the username to use to connect to the SMTP server.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>org.jboss.seam.mail.mailSession.password</literal> &#8212; the password to use to connect to the SMTP server
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>org.jboss.seam.mail.mailSession.debug</literal> &#8212; enable JavaMail debugging (very verbose)
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>org.jboss.seam.mail.mailSession.ssl</literal> &#8212; enable SSL connection to SMTP (will default to port 465)
+                        </para>
+                         <para>
+                            <literal>org.jboss.seam.mail.mailSession.tls</literal> &#8212; by default true, enable TLS support in the mail session
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>org.jboss.seam.mail.mailSession.sessionJndiName</literal> &#8212; name under which a javax.mail.Session is bound to JNDI.
+                            If supplied, all other properties will be ignored.
+                        </para>
+                        </listitem>
+                    </itemizedlist>
+                </listitem>
+            </varlistentry>
+        </variablelist>
+    </section>
+    
+    <section>
+        <title>Infrastructural components</title>
+        <para>
+            These components provide critical platform infrastructure. You can install a component
+            which isn't installed by default by setting <literal>install="true"</literal> on the 
+            component in <literal>components.xml</literal>.
+        </para>
+        
+    	<variablelist>
+            <varlistentry>
+                <term><literal>org.jboss.seam.core.init</literal></term>
+                <listitem>
+                    <para>
+                        Initialization settings for Seam. Always installed.
+                    </para>
+                    <itemizedlist>
+                        <listitem>
+                        <para>
+                            <literal>org.jboss.seam.core.init.jndiPattern</literal> &#8212; the JNDI
+                            pattern used for looking up session beans
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>org.jboss.seam.core.init.debug</literal> &#8212; enable Seam
+                            debug mode. This should be set to false when in production. You may see
+                            errors if the system is placed under any load and debug is enabled.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>org.jboss.seam.core.init.clientSideConversations</literal> &#8212; 
+                            if set to <literal>true</literal>, Seam will save conversation context
+                            variables in the client instead of in the <literal>HttpSession</literal>.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>org.jboss.seam.core.init.userTransactionName</literal> &#8212; the JNDI
+                            name to use when looking up the JTA <literal>UserTransaction</literal> object.
+                        </para>
+                        </listitem>
+                    </itemizedlist>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.core.manager</literal></term>
+                <listitem>
+                    <para>
+                        Internal component for Seam page and conversation context management. 
+                        Always installed.
+                    </para>
+                    <itemizedlist>
+                        <listitem>
+                        <para>
+                            <literal>org.jboss.seam.core.manager.conversationTimeout</literal> &#8212; 
+                            the conversation context timeout in milliseconds.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>org.jboss.seam.core.manager.concurrentRequestTimeout</literal> &#8212; 
+                            maximum wait time for a thread attempting to gain a lock on the long-running 
+                            conversation context.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>org.jboss.seam.core.manager.conversationIdParameter</literal> &#8212; 
+                            the request parameter used to propagate the conversation id, default
+                            to <literal>conversationId</literal>.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>org.jboss.seam.core.manager.conversationIsLongRunningParameter</literal> &#8212; 
+                            the request parameter used to propagate information about whether the conversation
+                            is long-running, default to <literal>conversationIsLongRunning</literal>.
+                        </para>
+                        </listitem>
+                    </itemizedlist>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.navigation.pages</literal></term>
+                <listitem>
+                    <para>
+                        Internal component for Seam workspace management. Always installed.
+                    </para>
+                    <itemizedlist>
+                        <listitem>
+                        <para>
+                            <literal>org.jboss.seam.navigation.pages.noConversationViewId</literal> 
+                            &#8212; global setting for the view id to redirect to when a 
+                            conversation entry is not found on the server side.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>org.jboss.seam.navigation.pages.loginViewId</literal> 
+                            &#8212; global setting for the view id to redirect to when an 
+                            unauthenticated user tries to access a protected view.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>org.jboss.seam.navigation.pages.httpPort</literal> 
+                            &#8212; global setting for the port to use when the http scheme 
+                            is requested.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>org.jboss.seam.navigation.pages.httpsPort</literal> 
+                            &#8212; global setting for the port to use when the https scheme 
+                            is requested.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>org.jboss.seam.navigation.pages.resources</literal> 
+                            &#8212; a list of resources to search for <literal>pages.xml</literal>
+                            style resources.  Defaults to <literal>WEB-INF/pages.xml</literal>.
+                        </para>
+                        </listitem>
+                    </itemizedlist>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.bpm.jbpm</literal></term>
+                <listitem>
+                    <para>
+                        Bootstraps a <literal>JbpmConfiguration</literal>. Install as class 
+                        <literal>org.jboss.seam.bpm.Jbpm</literal>. 
+                    </para>
+                    <itemizedlist>
+                        <listitem>
+                        <para>
+                            <literal>org.jboss.seam.bpm.jbpm.processDefinitions</literal> &#8212; 
+                            a list of resource names of jPDL files to be used for orchestration
+                            of business processes.
+                        </para>
+                        </listitem>
+                        <listitem>
+                        <para>
+                            <literal>org.jboss.seam.bpm.jbpm.pageflowDefinitions</literal> &#8212; 
+                            a list of resource names of jPDL files to be used for orchestration
+                            of conversation page flows.
+                        </para>
+                        </listitem>
+                    </itemizedlist>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.core.conversationEntries</literal></term>
+                <listitem>
+                    <para>
+                        Internal session-scoped component recording the active long-running conversations
+                        between requests.
+                    </para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.faces.facesPage</literal></term>
+                <listitem>
+                    <para>
+                        Internal page-scoped component recording the conversation context associated
+                        with a page.
+                    </para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.persistence.persistenceContexts</literal></term>
+                <listitem>
+                    <para>
+                        Internal component recording the persistence contexts which were used in
+                        the current conversation.
+                    </para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.jms.queueConnection</literal></term>
+                <listitem>
+                    <para>
+                        Manages a JMS <literal>QueueConnection</literal>. Installed whenever
+                        managed managed <literal>QueueSender</literal> is installed.
+                    </para>
+                    <itemizedlist>
+                        <listitem>
+                        <para>
+                            <literal>org.jboss.seam.jms.queueConnection.queueConnectionFactoryJndiName</literal> 
+                            &#8212; the JNDI name of a JMS <literal>QueueConnectionFactory</literal>. Default
+                            to <literal>UIL2ConnectionFactory</literal>
+                        </para>
+                        </listitem>
+                    </itemizedlist>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.jms.topicConnection</literal></term>
+                <listitem>
+                    <para>
+                        Manages a JMS <literal>TopicConnection</literal>. Installed whenever
+                        managed managed <literal>TopicPublisher</literal> is installed.
+                    </para>
+                    <itemizedlist>
+                        <listitem>
+                        <para>
+                            <literal>org.jboss.seam.jms.topicConnection.topicConnectionFactoryJndiName</literal> 
+                            &#8212; the JNDI name of a JMS <literal>TopicConnectionFactory</literal>. Default
+                            to <literal>UIL2ConnectionFactory</literal>
+                        </para>
+                        </listitem>
+                    </itemizedlist>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.persistence.persistenceProvider</literal></term>
+                <listitem>
+                    <para>
+                        Abstraction layer for non-standardized features of JPA provider.
+                    </para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.core.validators</literal></term>
+                <listitem>
+                    <para>
+                        Caches instances of Hibernate Validator <literal>ClassValidator</literal>.
+                    </para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.faces.validation</literal></term>
+                <listitem>
+                    <para>
+                        Allows the application to determine whether validation
+                        failed or was successful.
+                    </para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.debug.introspector</literal></term>
+                <listitem>
+                    <para>
+                        Support for the Seam Debug Page.
+                    </para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.debug.contexts</literal></term>
+                <listitem>
+                    <para>
+                        Support for the Seam Debug Page.
+                    </para>
+                </listitem>
+            </varlistentry>    	    
+            <varlistentry>
+                <term><literal>org.jboss.seam.exception.exceptions</literal></term>
+                <listitem>
+                    <para>
+                        Internal component for exception handling.
+                    </para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><literal>org.jboss.seam.transaction.transaction</literal></term>
+                <listitem>
+                    <para>
+                         API for controlling transactions and abstracting the underlying
+                         transaction management implementation behind a JTA-compatible
+                         interface.
+                    </para>
+                </listitem>
+            </varlistentry>
+             <varlistentry>
+                <term><literal>org.jboss.seam.faces.safeActions</literal></term>
+                <listitem>
+                    <para>
+                        Decides if an action expression in an incoming URL is safe.  This 
+                        is done by checking that the action expression exists in the view.
+                    </para>
+                </listitem>
+             </varlistentry>
+    	</variablelist>
+   </section>
+
+     <section>
+        <title>Miscellaneous components</title>
+  <!--      <para>
+            These components don't fit into 
+        </para> -->
+        
+        <variablelist>
+            <varlistentry>
+                <term><literal>org.jboss.seam.async.dispatcher</literal></term>
+                <listitem>
+                    <para>
+                        Dispatcher stateless session bean for asynchronous methods.
+                    </para>
+                </listitem>
+            </varlistentry>
+        </variablelist>
+         
+        <variablelist>
+            <varlistentry>
+                <term><literal>org.jboss.seam.core.image</literal></term>
+                <listitem>
+                    <para>
+                         Image manipulation and interrogation.
+                    </para>
+                </listitem>
+            </varlistentry>
+        </variablelist>
+         
+        <variablelist>
+            <varlistentry>
+                <term><literal>org.jboss.seam.core.pojoCache</literal></term>
+                <listitem>
+                    <para>
+                        Manager component for a PojoCache instance.
+                    </para>
+                </listitem>
+            </varlistentry>
+        </variablelist>
+         
+        <variablelist>
+            <varlistentry>
+                <term><literal>org.jboss.seam.core.uiComponent</literal></term>
+                <listitem>
+                    <para>
+                        Manages a map of UIComponents keyed by component id.
+                    </para>
+                </listitem>
+            </varlistentry>
+         </variablelist>
+         
+         
+         
+    </section>
+    
+    <section>
+        <title>Special components</title>
+        <para>
+            Certain special Seam component classes are installable multiple times under names
+            specified in the Seam configuration. For example, the following lines in 
+            <literal>components.xml</literal> install and configure two Seam components:
+        </para>
+        
+        <programlisting role="XML"><![CDATA[<component name="bookingDatabase"
+          class="org.jboss.seam.persistence.ManagedPersistenceContext">
+    <property name="persistenceUnitJndiName">java:/comp/emf/bookingPersistence</property>
+</component>
+
+<component name="userDatabase"
+          class="org.jboss.seam.persistence.ManagedPersistenceContext">
+    <property name="persistenceUnitJndiName">java:/comp/emf/userPersistence</property>
+</component>]]></programlisting>
+        
+        <para>
+            The Seam component names are <literal>bookingDatabase</literal> and 
+            <literal>userDatabase</literal>.
+        </para>
+        
+    	<variablelist>
+            <varlistentry>
+                <term><emphasis>&lt;entityManager&gt;</emphasis></term>
+                <term><literal>org.jboss.seam.persistence.ManagedPersistenceContext</literal></term>
+                <listitem>
+                    <para>
+                        Manager component for a conversation scoped managed <literal>EntityManager</literal>
+                        with an extended persistence context.
+                    </para>
+                    <itemizedlist>
+                        <listitem>
+                        <para>
+                           <emphasis>&lt;entityManager&gt;</emphasis>.entityManagerFactory 
+                            &#8212; a value binding expression that evaluates to an instance of 
+                            <literal>EntityManagerFactory</literal>.
+                        </para>
+                        <para>
+                           <emphasis>&lt;entityManager&gt;</emphasis>.persistenceUnitJndiName 
+                            &#8212; the JNDI name of the entity manager factory, default to 
+                            java:/<emphasis>&lt;managedPersistenceContext&gt;</emphasis>.
+                        </para>
+                        </listitem>
+                    </itemizedlist>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><emphasis>&lt;entityManagerFactory&gt;</emphasis></term>
+                <term><literal>org.jboss.seam.persistence.EntityManagerFactory</literal></term>
+                <listitem>
+                    <para>
+                        Manages a JPA <literal>EntityManagerFactory</literal>. This is most useful
+                        when using JPA outside of an EJB 3.0 supporting environment.
+                    </para>
+                    <itemizedlist>
+                        <listitem>
+                        <para>
+                            <literal>entityManagerFactory.persistenceUnitName</literal> &#8212; 
+                            the name of the persistence unit.
+                        </para>
+                        </listitem>
+                    </itemizedlist>
+                    <para>
+                        See the API JavaDoc for further configuration properties.
+                    </para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><emphasis>&lt;session&gt;</emphasis></term>
+                <term><literal>org.jboss.seam.persistence.ManagedSession</literal></term>
+                <listitem>
+                    <para>
+                        Manager component for a conversation scoped managed Hibernate <literal>Session</literal>.
+                    </para>
+                    <itemizedlist>
+                        <listitem>
+                        <para>
+                           <emphasis>&lt;session&gt;</emphasis>.sessionFactory 
+                            &#8212; a value binding expression that evaluates to an instance of 
+                            <literal>SessionFactory</literal>.
+                        </para>
+                        <para>
+                           <emphasis>&lt;session&gt;</emphasis>.sessionFactoryJndiName 
+                            &#8212; the JNDI name of the session factory, default to 
+                            java:/<emphasis>&lt;managedSession&gt;</emphasis>.
+                        </para>
+                        </listitem>
+                    </itemizedlist>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><emphasis>&lt;sessionFactory&gt;</emphasis></term>
+                <term><literal>org.jboss.seam.persistence.HibernateSessionFactory</literal></term>
+                <listitem>
+                    <para>
+                        Manages a Hibernate <literal>SessionFactory</literal>.  
+                    </para>
+                    <itemizedlist>
+                        <listitem>
+                        <para>
+                            <literal>&lt;sessionFactory&gt;.cfgResourceName</literal> &#8212; 
+                            the path to the configuration file. Default to <literal>hibernate.cfg.xml</literal>.
+                        </para>
+                        </listitem>
+                    </itemizedlist>
+                    <para>
+                        See the API JavaDoc for further configuration properties.
+                    </para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><emphasis>&lt;managedQueueSender&gt;</emphasis></term>
+                <term><literal>org.jboss.seam.jms.ManagedQueueSender</literal></term>
+                <listitem>
+                    <para>
+                        Manager component for an event scoped managed JMS <literal>QueueSender</literal>.
+                    </para>
+                    <itemizedlist>
+                        <listitem>
+                        <para>
+                           <emphasis>&lt;managedQueueSender&gt;</emphasis>.queueJndiName 
+                            &#8212; the JNDI name of the JMS queue.
+                        </para>
+                        </listitem>
+                    </itemizedlist>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><emphasis>&lt;managedTopicPublisher&gt;</emphasis></term>
+                <term><literal>org.jboss.seam.jms.ManagedTopicPublisher</literal></term>
+                <listitem>
+                    <para>
+                        Manager component for an event scoped managed JMS <literal>TopicPublisher</literal>.
+                    </para>
+                    <itemizedlist>
+                        <listitem>
+                        <para>
+                           <emphasis>&lt;managedTopicPublisher&gt;</emphasis>.topicJndiName 
+                            &#8212; the JNDI name of the JMS topic.
+                        </para>
+                        </listitem>
+                    </itemizedlist>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><emphasis>&lt;managedWorkingMemory&gt;</emphasis></term>
+                <term><literal>org.jboss.seam.drools.ManagedWorkingMemory</literal></term>
+                <listitem>
+                    <para>
+                        Manager component for a conversation scoped managed Drools <literal>WorkingMemory</literal>.
+                    </para>
+                    <itemizedlist>
+                        <listitem>
+                        <para>
+                           <emphasis>&lt;managedWorkingMemory&gt;</emphasis>.ruleBase 
+                            &#8212; a value expression that evaluates to an instance of <literal>RuleBase</literal>.
+                        </para>
+                        </listitem>
+                    </itemizedlist>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term><emphasis>&lt;ruleBase&gt;</emphasis></term>
+                <term><literal>org.jboss.seam.drools.RuleBase</literal></term>
+                <listitem>
+                    <para>
+                        Manager component for an application scoped Drools <literal>RuleBase</literal>.
+                        <emphasis>Note that this is not really intended for production usage, since
+                        it does not support dynamic installation of new rules.</emphasis>
+                    </para>
+                    <itemizedlist>
+                        <listitem>
+                        <para>
+                           <emphasis>&lt;ruleBase&gt;</emphasis>.ruleFiles 
+                            &#8212; a list of files containing Drools rules.
+                        </para>
+                        <para>
+                           <emphasis>&lt;ruleBase&gt;</emphasis>.dslFile 
+                            &#8212; a Drools DSL definition.
+                        </para>
+                        </listitem>
+                    </itemizedlist>
+                </listitem>
+            </varlistentry>
+       <!--     <varlistentry>
+                <term><emphasis>&lt;entityHome&gt;</emphasis></term>
+                <term><literal>org.jboss.seam.framework.EntityHome</literal></term> -->
+              <!--    <listitem> 
+			  <para></para> -->
+                     <!-- TODO: Document this -->
+             <!--     </listitem> -->
+     <!--     </varlistentry> -->
+<!--      <varlistentry> 
+                <term><emphasis>&lt;hibernateEntityHome&gt;</emphasis></term>
+		<term><literal>org.jboss.seam.framework.HibernateEntityHome</literal></term> -->
+		<!--    <listitem> 
+			<para></para> -->
+                  <!-- TODO: Document this -->
+		  <!--  </listitem> -->
+	  <!--      </varlistentry> -->
+	    <!--     <varlistentry> 
+                <term><emphasis>&lt;entityQuery&gt;</emphasis></term>
+		<term><literal>org.jboss.seam.framework.EntityQuery</literal></term> -->
+		<!--   <listitem> 
+			<para></para> -->
+                  <!-- TODO: Document this -->
+		  <!--   </listitem> -->
+	  <!--        </varlistentry> -->
+	    <!--      <varlistentry>
+                <term><emphasis>&lt;hibernateEntityQuery&gt;</emphasis></term>
+		<term><literal>org.jboss.seam.framework.HibernateEntityQuery</literal></term> -->
+		<!--   <listitem>
+			<para></para> -->
+                  <!-- TODO: Document this -->
+		  <!--   </listitem> -->
+	  <!--   </varlistentry> -->
+        </variablelist>
+    </section>
+    
+</chapter>


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Components.xml
___________________________________________________________________
Name: svn:executable
   + *

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Concepts.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Concepts.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Concepts.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,807 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Seam_Reference_Guide-The_contextual_component_model">
+	<title>The contextual component model</title>
+	<para>
+		The two core concepts in Seam are the notion of a <emphasis>context</emphasis> and the notion of a <emphasis>component</emphasis>. Components are stateful objects, usually EJBs, and an instance of a component is associated with a context, and given a name in that context. <emphasis>Bijection</emphasis> provides a mechanism for aliasing internal component names (instance variables) to contextual names, allowing component trees to be dynamically assembled, and reassembled by Seam.
+	</para>
+	<para>
+		Let us start by describing the contexts built in to Seam.
+	</para>
+	<sect1 id="Seam_Reference_Guide-The_contextual_component_model-Seam_contexts"><title>Seam contexts</title>
+	<para>
+		Seam contexts are created and destroyed by the framework. The application does not control context demarcation via explicit Java API calls. Context are usually implicit. In some cases, however, contexts are demarcated via annotations.
+	</para>
+	<para>
+		The basic Seam contexts are:
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				Stateless context
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Event (or request) context
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Page context
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Conversation context
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Session context
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Business process context
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Application context
+			</para>
+		</listitem>
+	</itemizedlist>
+	<para>
+		You will recognize some of these contexts from servlet and related specifications. However, two of them might be new to you: <emphasis>conversation context</emphasis>, and <emphasis>business process context</emphasis>. One reason state management in web applications is so fragile and error-prone is that the three built-in contexts (request, session and application) are not especially meaningful from the point of view of the business logic. A user login session, for example, is a fairly arbitrary construct in terms of the actual application work flow. Therefore, most Seam components are scoped to the conversation or business process contexts, since they are the contexts which are most meaningful in terms of the application.
+	</para>
+	<para>
+		Let us look at each context in turn.
+	</para>
+	<sect2 id="Seam_Reference_Guide-Seam_contexts-Stateless_context"><title>Stateless context</title>
+	<para>
+		Components which are truly stateless (stateless session beans, primarily) always live in the stateless context (this is really a non-context). Stateless components are not very interesting, and are arguably not very object-oriented. Nevertheless, they are important and often useful.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Seam_contexts-Event_context"><title>Event context</title>
+	<para>
+		The event context is the "narrowest" stateful context, and is a generalization of the notion of the web request context to cover other kinds of events. Nevertheless, the event context associated with the lifecycle of a JSF request is the most important example of an event context, and the one you will work with most often. Components associated with the event context are destroyed at the end of the request, but their state is available and well-defined for at least the lifecycle of the request.
+	</para>
+	<para>
+		When you invoke a Seam component via RMI, or Seam Remoting, the event context is created and destroyed just for the invocation.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Seam_contexts-Page_context"><title>Page context</title>
+	<para>
+		The page context allows you to associate state with a particular instance of a rendered page. You can initialize state in your event listener, or while actually rendering the page, and then have access to it from any event that originates from that page. This is especially useful for functionality like clickable lists, where the list is backed by changing data on the server side. The state is actually serialized to the client, so this construct is extremely robust with respect to multi-window operation and the back button.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Seam_contexts-Conversation_context"><title>Conversation context</title>
+	<para>
+		The conversation context is a truly central concept in Seam. A <emphasis>conversation</emphasis> is a unit of work from the point of view of the user. It might span several interactions with the user, several requests, and several database transactions. But to the user, a conversation solves a single problem. For example, <emphasis>book hotel</emphasis>, <emphasis>approve contract</emphasis>, <emphasis>create order</emphasis> are all conversations. You might like to think of a conversation implementing a single <emphasis>use case</emphasis> or <emphasis>user story</emphasis>, but the relationship is not necessarily quite exact.
+	</para>
+	<para>
+		A conversation holds state associated with <emphasis>what the user is doing now, in this window</emphasis>. A single user may have multiple conversations in progress at any point in time, usually in multiple windows. The conversation context allows us to ensure that state from the different conversations does not collide and cause bugs.
+	</para>
+<!--	<para>
+		It might take you some time to get used to thinking of applications in terms of conversations. But once you get used to it, we think you will love the notion, and never be able to not think in terms of conversations again!
+	</para> -->
+	<para>
+		Some conversations last for just a single request. Conversations that span multiple requests must be demarcated using annotations provided by Seam.
+	</para>
+	<para>
+		Some conversations are also <emphasis>tasks</emphasis>. A task is a conversation that is significant in terms of a long-running business process, and has the potential to trigger a business process state transition when it is successfully completed. Seam provides a special set of annotations for task demarcation.
+	</para>
+	<para>
+		Conversations may be <emphasis>nested</emphasis>, with one conversation taking place "inside" a wider conversation. This is an advanced feature.
+	</para>
+	<para>
+		Usually, conversation state is actually held by Seam in the servlet session between requests. Seam implements configurable <emphasis>conversation timeout</emphasis>, automatically destroying inactive conversations, and thus ensuring that the state held by a single user login session does not grow without bound if the user abandons conversations.
+	</para>
+	<para>
+		Seam serializes processing of concurrent requests that take place in the same long-running conversation context, in the same process.
+	</para>
+	<para>
+		Alternatively, Seam may be configured to keep conversational state in the client browser.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Seam_contexts-Session_context"><title>Session context</title>
+	<para>
+		A session context holds state associated with the user login session. While there are some cases where it is useful to share state between several conversations, we generally frown on the use of session context for holding components other than global information about the logged in user.
+	</para>
+	<para>
+		In a JSR-168 portal environment, the session context represents the portlet session.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Seam_contexts-Business_process_context"><title>Business process context</title>
+	<para>
+		The business process context holds state associated with the long running business process. This state is managed and made persistent by the BPM engine (JBoss jBPM). The business process spans multiple interactions with multiple users, so this state is shared between multiple users, but in a well-defined manner. The current task determines the current business process instance, and the lifecycle of the business process is defined externally using a <emphasis>process definition language</emphasis>, so there are no special annotations for business process demarcation.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Seam_contexts-Application_context"><title>Application context</title>
+	<para>
+		The application context is the familiar servlet context from the servlet spec. Application context is mainly useful for holding static information such as configuration data, reference data or metamodels. For example, Seam stores its own configuration and metamodel in the application context.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Seam_contexts-Context_variables"><title>Context variables</title>
+	<para>
+		A context defines a namespace, a set of <emphasis>context variables</emphasis>. These work much the same as session or request attributes in the servlet spec. You may bind any value you like to a context variable, but usually we bind Seam component instances to context variables.
+	</para>
+	<para>
+		So, within a context, a component instance is identified by the context variable name (this is usually, but not always, the same as the component name). You may programatically access a named component instance in a particular scope via the <literal>Contexts</literal> class, which provides access to several thread-bound instances of the <literal>Context</literal> interface:
+	</para>
+<programlisting>User user = (User) Contexts.getSessionContext().get("user");</programlisting>
+	<para>
+		You may also set or change the value associated with a name:
+	</para>
+<programlisting>Contexts.getSessionContext().set("user", user);</programlisting>
+	<para>
+		Usually, however, we obtain components from a context via injection, and put component instances into a context via outjection.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Seam_contexts-Context_search_priority"><title>Context search priority</title>
+	<para>
+		Sometimes, as above, component instances are obtained from a particular known scope. Other times, all stateful scopes are searched, in <emphasis>priority order</emphasis>. The order is as follows:
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				Event context
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Page context
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Conversation context
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Session context
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Business process context
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Application context
+			</para>
+		</listitem>
+	</itemizedlist>
+	<para>
+		You can perform a priority search by calling <literal>Contexts.lookupInStatefulContexts()</literal>. Whenever you access a component by name from a JSF page, a priority search occurs.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Seam_contexts-Concurrency_model"><title>Concurrency model</title>
+	<para>
+		Neither the servlet nor EJB specifications define any facilities for managing concurrent requests originating from the same client. The servlet container simply lets all threads run concurrently and leaves enforcing threadsafeness to application code. The EJB container allows stateless components to be accessed concurrently, and throws an exception if multiple threads access a stateful session bean.
+	</para>
+	<para>
+		This behavior might have been okay in old-style web applications which were based around fine-grained, synchronous requests. But for modern applications which make heavy use of many fine-grained, asynchronous (AJAX) requests, concurrency is a fact of life, and must be supported by the programming model. Seam weaves a concurrency management layer into its context model.
+	</para>
+	<para>
+		The Seam session and application contexts are multithreaded. Seam will allow concurrent requests in a context to be processed concurrently. The event and page contexts are by nature single threaded. The business process context is strictly speaking multi-threaded, but in practice concurrency is sufficiently rare that this fact may be disregarded most of the time. Finally, Seam enforces a <emphasis>single thread per conversation per process</emphasis> model for the conversation context by serializing concurrent requests in the same long-running conversation context.
+	</para>
+	<para>
+		Since the session context is multithreaded, and often contains volatile state, session scope components are always protected by Seam from concurrent access. Seam serializes requests to session scope session beans and JavaBeans by default (and detects and breaks any deadlocks that occur). This is not the default behaviour for application scoped components however, since application scoped components do not usually hold volatile state and because synchronization at the global level is <emphasis>extremely</emphasis> expensive. However, you can force a serialized threading model on any session bean or JavaBean component by adding the <literal>@Synchronized</literal> annotation.
+	</para>
+	<para>
+		This concurrency model means that AJAX clients can safely use volatile session and conversational state, without the need for any special work on the part of the developer.
+	</para>
+	</sect2></sect1><sect1 id="Seam_Reference_Guide-The_contextual_component_model-Seam_components"><title>Seam components</title>
+	<para>
+		Seam components are POJOs (Plain Old Java Objects). In particular, they are JavaBeans or EJB 3.0 enterprise beans. While Seam does not require that components be EJBs and can even be used without an EJB 3.0 compliant container, Seam was designed with EJB 3.0 in mind and includes deep integration with EJB 3.0. Seam supports the following <emphasis>component types</emphasis>.
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				EJB 3.0 stateless session beans
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				EJB 3.0 stateful session beans
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				EJB 3.0 entity beans
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				JavaBeans
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				EJB 3.0 message-driven beans
+			</para>
+		</listitem>
+	</itemizedlist>
+	<sect2 id="Seam_Reference_Guide-Seam_components-Stateless_session_beans"><title>Stateless session beans</title>
+	<para>
+		Stateless session bean components are not able to hold state across multiple invocations. Therefore, they usually work by operating upon the state of other components in the various Seam contexts. They may be used as JSF action listeners, but cannot provide properties to JSF components for display.
+	</para>
+	<para>
+		Stateless session beans always live in the stateless context.
+	</para>
+	<para>
+		Stateless session beans are the least interesting kind of Seam component.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Seam_components-Stateful_session_beans"><title>Stateful session beans</title>
+	<para>
+		Stateful session bean components are able to hold state not only across multiple invocations of the bean, but also across multiple requests. Application state that does not belong in the database should usually be held by stateful session beans. This is a major difference between Seam and many other web application frameworks. Instead of sticking information about the current conversation directly in the <literal>HttpSession</literal>, you should keep it in instance variables of a stateful session bean that is bound to the conversation context. This allows Seam to manage the lifecycle of this state for you, and ensure that there are no collisions between state relating to different concurrent conversations.
+	</para>
+	<para>
+		Stateful session beans are often used as JSF action listener, and as backing beans that provide properties to JSF components for display or form submission.
+	</para>
+	<para>
+		By default, stateful session beans are bound to the conversation context. They may never be bound to the page or stateless contexts.
+	</para>
+	<para>
+		Concurrent requests to session-scoped stateful session beans are always serialized by Seam.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Seam_components-Entity_beans"><title>Entity beans</title>
+	<para>
+		Entity beans may be bound to a context variable and function as a seam component. Because entities have a persistent identity in addition to their contextual identity, entity instances are usually bound explicitly in Java code, rather than being instantiated implicitly by Seam.
+	</para>
+	<para>
+		Entity bean components do not support bijection or context demarcation. Nor does invocation of an entity bean trigger validation.
+	</para>
+	<para>
+		Entity beans are not usually used as JSF action listeners, but do often function as backing beans that provide properties to JSF components for display or form submission. In particular, it is common to use an entity as a backing bean, together with a stateless session bean action listener to implement create/update/delete type functionality.
+	</para>
+	<para>
+		By default, entity beans are bound to the conversation context. They may never be bound to the stateless context.
+	</para>
+	<para>
+		Note that it in a clustered environment is somewhat less efficient to bind an entity bean directly to a conversation or session scoped Seam context variable than it would be to hold a reference to the entity bean in a stateful session bean. For this reason, not all Seam applications define entity beans to be Seam components.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Seam_components-JavaBeans"><title>JavaBeans</title>
+	<para>
+		Javabeans may be used just like a stateless or stateful session bean. However, they do not provide the functionality of a session bean (declarative transaction demarcation, declarative security, efficient clustered state replication, EJB 3.0 persistence, timeout methods, etc).
+	</para>
+	<para>
+		In a later chapter, we show you how to use Seam and Hibernate without an EJB container. In this use case, components are JavaBeans instead of session beans. Note, however, that in many application servers it is somewhat less efficient to cluster conversation or session scoped Seam JavaBean components than it is to cluster stateful session bean components.
+	</para>
+	<para>
+		By default, JavaBeans are bound to the event context.
+	</para>
+	<para>
+		Concurrent requests to session-scoped JavaBeans are always serialized by Seam.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Seam_components-Message_driven_beans"><title>Message-driven beans</title>
+	<para>
+		Message-driven beans may function as a seam component. However, message-driven beans are called quite differently to other Seam components - instead of invoking them via the context variable, they listen for messages sent to a JMS queue or topic.
+	</para>
+	<para>
+		Message-driven beans may not be bound to a Seam context. Nor do they have access to the session or conversation state of their "caller". However, they do support bijection and some other Seam functionality.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Seam_components-Interception"><title>Interception</title>
+	<para>
+		In order to perform its magic (bijection, context demarcation, validation, etc), Seam must intercept component invocations. For JavaBeans, Seam is in full control of instantiation of the component, and no special configuration is needed. For entity beans, interception is not required since bijection and context demarcation are not defined. For session beans, we must register an EJB interceptor for the session bean component. We could use an annotation, as follows:
+	</para>
+<programlisting>@Stateless
+ at Interceptors(SeamInterceptor.class)
+public class LoginAction implements Login { 
+    ... 
+}
+</programlisting>
+	<para>
+		But a much better way is to define the interceptor in <literal>ejb-jar.xml</literal>.
+	</para>
+<programlisting>&lt;interceptors&gt;
+   &lt;interceptor&gt;
+      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/interceptor-class&gt;
+   &lt;/interceptor&gt;
+&lt;/interceptors&gt;
+   
+&lt;assembly-descriptor&gt;
+   &lt;interceptor-binding&gt;
+      &lt;ejb-name&gt;*&lt;/ejb-name&gt;
+      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/interceptor-class&gt;
+   &lt;/interceptor-binding&gt;
+&lt;/assembly-descriptor&gt;
+</programlisting>
+	</sect2><sect2 id="Seam_Reference_Guide-Seam_components-Component_names"><title>Component names</title>
+	<para>
+		All seam components need a name. We can assign a name to a component using the <literal>@Name</literal> annotation:
+	</para>
+<programlisting>@Name("loginAction")
+ at Stateless
+public class LoginAction implements Login { 
+    ... 
+}
+</programlisting>
+	<para>
+		This name is the <emphasis>seam component name</emphasis> and is not related to any other name defined by the EJB specification. However, seam component names work just like JSF managed bean names and you can think of the two concepts as identical.
+	</para>
+	<para>
+		<literal>@Name</literal> is not the only way to define a component name, but we always need to specify the name <emphasis>somewhere</emphasis>. If we do not, then none of the other Seam annotations will function.
+	</para>
+	<para>
+		Just like in JSF, a seam component instance is usually bound to a context variable with the same name as the component name. So, for example, we would access the <literal>LoginAction</literal> using <literal>Contexts.getStatelessContext().get("loginAction")</literal>. In particular, whenever Seam itself instantiates a component, it binds the new instance to a variable with the component name. However, again like JSF, it is possible for the application to bind a component to some other context variable by programmatic API call. This is only useful if a particular component serves more than one role in the system. For example, the currently logged in <literal>User</literal> might be bound to the <literal>currentUser</literal> session context variable, while a <literal>User</literal> that is the subject of some administration functionality might be bound to the <literal>user</literal> conversation context variable.
+	</para>
+	<para>
+		For very large applications, and for built-in seam components, qualified names are often used.
+	</para>
+<programlisting>@Name("com.jboss.myapp.loginAction")
+ at Stateless
+ at Interceptors(SeamInterceptor.class)
+public class LoginAction implements Login { 
+    ... 
+}
+</programlisting>
+	<para>
+		We may use the qualified component name both in Java code and in JSF&#39;s expression language:
+	</para>
+<programlisting>&lt;h:commandButton type="submit" value="Login"
+                 action="#{com.jboss.myapp.loginAction.login}"/&gt;
+</programlisting>
+	<para>
+		Since this is noisy, Seam also provides a means of aliasing a qualified name to a simple name. Add a line like this to the <literal>components.xml</literal> file:
+	</para>
+<programlisting>&lt;factory name="loginAction" scope="STATELESS" value="#{com.jboss.myapp.loginAction}"/&gt;</programlisting>
+	<para>
+		All of the built-in Seam components have qualified names, but most of them are aliased to a simple name by the <literal>components.xml</literal> file included in the Seam jar.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Seam_components-Defining_the_component_scope"><title>Defining the component scope</title>
+	<para>
+		We can override the default scope (context) of a component using the <literal>@Scope</literal> annotation. This lets us define what context a component instance is bound to, when it is instantiated by Seam.
+	</para>
+<programlisting>@Name("user")
+ at Entity
+ at Scope(SESSION)
+public class User { 
+    ... 
+}
+</programlisting>
+	<para>
+		<literal>org.jboss.seam.ScopeType</literal> defines an enumeration of possible scopes.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Seam_components-Components_with_multiple_roles"><title>Components with multiple roles</title>
+	<para>
+		Some Seam component classes can fulfill more than one role in the system. For example, we often have a <literal>User</literal> class which is usually used as a session-scoped component representing the current user but is used in user administration screens as a conversation-scoped component. The <literal>@Role</literal> annotation lets us define an additional named role for a component, with a different scope; it lets us bind the same component class to different context variables. (Any Seam component <emphasis>instance</emphasis> may be bound to multiple context variables, but this lets us do it at the class level, and take advantage of auto-instantiation.)
+	</para>
+<programlisting>@Name("user")
+ at Entity
+ at Scope(CONVERSATION)
+ at Role(name="currentUser", scope=SESSION)
+public class User { 
+    ... 
+}
+</programlisting>
+	<para>
+		The <literal>@Roles</literal> annotation lets us specify as many additional roles as we like.
+	</para>
+<programlisting>@Name("user")
+ at Entity
+ at Scope(CONVERSATION)
+ at Roles({@Role(name="currentUser", scope=SESSION)
+        @Role(name="tempUser", scope=EVENT)})
+public class User { 
+    ... 
+}
+</programlisting>
+	</sect2><sect2 id="Seam_Reference_Guide-Seam_components-Built_in_components"><title>Built-in components</title>
+	<para>
+		Like many good frameworks, Seam eats its own dogfood and is implemented mostly as a set of built-in Seam interceptors (see later) and Seam components. This makes it easy for applications to interact with built-in components at runtime or even customize the basic functionality of Seam by replacing the built-in components with custom implementations. The built-in components are defined in the Seam namespace <literal>org.jboss.seam.core</literal> and the Java package of the same name.
+	</para>
+	<para>
+		The built-in components may be injected, just like any Seam components, but they also provide convenient static <literal>instance()</literal> methods:
+	</para>
+<programlisting>FacesMessages.instance().add("Welcome back, #{user.name}!");</programlisting>
+	<para>
+		Seam was designed to integrate tightly in a Java EE 5 environment. However, we understand that there are many projects which are not running in a full EE environment. We also realize the critical importance of easy unit and integration testing using frameworks such as TestNG and JUnit. So, we have made it easy to run Seam in Java SE environments by allowing you to boostrap certain critical infrastructure normally only found in EE environments by installing built-in Seam components.
+	</para>
+	<para>
+		For example, you can run your EJB3 components in Tomcat or an integration test suite just by installing the built-in component <literal>org.jboss.seam.core.ejb</literal>, which automatically bootstraps the JBoss Embeddable EJB3 container and deploys your EJB components.
+	</para>
+	<para>
+		Or, if you are not quite ready for the Brave New World of EJB 3.0, you can write a Seam application that uses only JavaBean components, together with Hibernate3 for persistence, by installing a built-in component that manages a Hibernate <literal>SessionFactory</literal>. When using Hibernate outside of a J2EE environment, you will also probably need a JTA transaction manager and JNDI server, which are available via the built-in component <literal>org.jboss.seam.core.microcontainer</literal>. This lets you use the bulletproof JTA/JCA pooling datasource from JBoss application server in an SE environment like Tomcat.
+	</para>
+	</sect2></sect1><sect1 id="Seam_Reference_Guide-The_contextual_component_model-Bijection"><title>Bijection</title>
+	<para>
+		<emphasis>Dependency injection</emphasis> or <emphasis>inversion of control</emphasis> is by now a familiar concept to most Java developers. Dependency injection allows a component to obtain a reference to another component by having the container <emphasis>inject</emphasis> the other component to a setter method or instance variable. In all dependency injection implementations that we have seen, injection occurs when the component is constructed, and the reference does not subsequently change for the lifetime of the component instance. For stateless components, this is reasonable. From the point of view of a client, all instances of a particular stateless component are interchangeable. On the other hand, Seam emphasizes the use of stateful components. So traditional dependency injection is no longer a very useful construct. Seam introduces the notion of <emphasis>bijection</emphasis> as a generalization of injection. In contrast to injection, bijection is:
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				<emphasis>contextual</emphasis> - bijection is used to assemble stateful components from various different contexts (a component from a <emphasis>wider</emphasis> context may even have a reference to a component from a <emphasis>narrower</emphasis> context)
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<emphasis>bidirectional</emphasis> - values are injected from context variables into attributes of the component being invoked, and also <emphasis>outjected</emphasis> from the component attributes back out to the context, allowing the component being invoked to manipulate the values of contextual variables simply by setting its own instance variables
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<emphasis>dynamic</emphasis> - since the value of contextual variables changes over time, and since Seam components are stateful, bijection takes place every time a component is invoked
+			</para>
+		</listitem>
+	</itemizedlist>
+	<para>
+		In essence, bijection lets you alias a context variable to a component instance variable, by specifying that the value of the instance variable is injected, outjected, or both. Of course, we use annotations to enable bijection.
+	</para>
+	<para>
+		The <literal>@In</literal> annotation specifies that a value should be injected, either into an instance variable:
+	</para>
+<programlisting>@Name("loginAction")
+ at Stateless
+ at Interceptors(SeamInterceptor.class)
+public class LoginAction implements Login { 
+    @In User user;
+    ... 
+}
+</programlisting>
+	<para>
+		or into a setter method:
+	</para>
+<programlisting>@Name("loginAction")
+ at Stateless
+ at Interceptors(SeamInterceptor.class)
+public class LoginAction implements Login { 
+    User user;
+    
+    @In
+    public void setUser(User user) {
+        this.user=user;
+    }
+    
+    ... 
+}
+</programlisting>
+	<para>
+		By default, Seam will do a priority search of all contexts, using the name of the property or instance variable that is being injected. You may wish to specify the context variable name explicitly, using, for example, <literal>@In("currentUser")</literal>.
+	</para>
+	<para>
+		If you want Seam to create an instance of the component when there is no existing component instance bound to the named context variable, you should specify <literal>@In(create=true)</literal>. If the value is optional (it can be null), specify <literal>@In(required=false)</literal>.
+	</para>
+	<para>
+		For some components, it can be repetitive to have to specify <literal>@In(create=true)</literal> everywhere they are used. In such cases, you can annotate the component <literal>@AutoCreate</literal>, and then it will always be created, whenever needed, even without the explicit use of <literal>create=true</literal>.
+	</para>
+	<para>
+		You can even inject the value of an expression:
+	</para>
+<programlisting>@Name("loginAction")
+ at Stateless
+ at Interceptors(SeamInterceptor.class)
+public class LoginAction implements Login { 
+    @In("#{user.username}") String username;
+    ... 
+}
+</programlisting>
+	<para>
+		(There is much more information about component lifecycle and injection in the next chapter.)
+	</para>
+	<para>
+		The <literal>@Out</literal> annotation specifies that an attribute should be outjected, either from an instance variable:
+	</para>
+<programlisting>@Name("loginAction")
+ at Stateless
+ at Interceptors(SeamInterceptor.class)
+public class LoginAction implements Login { 
+    @Out User user;
+    ... 
+}
+</programlisting>
+	<para>
+		or from a getter method:
+	</para>
+<programlisting>@Name("loginAction")
+ at Stateless
+ at Interceptors(SeamInterceptor.class)
+public class LoginAction implements Login { 
+    User user;
+    
+    @Out
+    public User getUser() {
+        return user;
+    }
+    
+    ... 
+}
+</programlisting>
+	<para>
+		An attribute may be both injected and outjected:
+	</para>
+<programlisting>@Name("loginAction")
+ at Stateless
+ at Interceptors(SeamInterceptor.class)
+public class LoginAction implements Login { 
+    @In @Out User user;
+    ... 
+}
+</programlisting>
+	<para>
+		or:
+	</para>
+<programlisting>@Name("loginAction")
+ at Stateless
+ at Interceptors(SeamInterceptor.class)
+public class LoginAction implements Login { 
+    User user;
+    
+    @In
+    public void setUser(User user) {
+        this.user=user;
+    }
+    
+    @Out
+    public User getUser() {
+        return user;
+    }
+    
+    ... 
+}
+</programlisting>
+	</sect1><sect1 id="Seam_Reference_Guide-The_contextual_component_model-Lifecycle_methods"><title>Lifecycle methods</title>
+	<para>
+		Session bean and entity bean Seam components support all the usual EJB 3.0 lifecycle callback (<literal>@PostConstruct</literal>, <literal>@PreDestroy</literal>, etc). Seam extends all of these callbacks except <literal>@PreDestroy</literal> to JavaBean components. But Seam also defines its own component lifecycle callbacks.
+	</para>
+	<para>
+		The <literal>@Create</literal> method is called every time Seam instantiates a component. Unlike the <literal>@PostConstruct</literal> method, this method is called after the component is fully constructed by the EJB container, and has access to all the usual Seam functionality (bijection, etc). Components may define only one <literal>@Create</literal> method.
+	</para>
+	<para>
+		The <literal>@Destroy</literal> method is called when the context that the Seam component is bound to ends. Components may define only one <literal>@Destroy</literal> method. Stateful session bean components <emphasis>must</emphasis> define a method annotated <literal>@Destroy @Remove</literal>.
+	</para>
+	<para>
+		Finally, a related annotation is the <literal>@Startup</literal> annotation, which may be applied to any application or session scoped component. The <literal>@Startup</literal> annotation tells Seam to instantiate the component immediately, when the context begins, instead of waiting until it is first referenced by a client. It is possible to control the order of instantiation of startup components by specifying <literal>@Startup(depends={....})</literal>.
+	</para>
+	</sect1><sect1 id="Seam_Reference_Guide-The_contextual_component_model-Conditional_installation"><title>Conditional installation</title>
+	<para>
+		The <literal>@Install</literal> annotation lets you control conditional installation of components that are required in some deployment scenarios and not in others. This is useful if:
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				You want to mock out some infrastructural component in tests.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				You want change the implementation of a component in certain deployment scenarios.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				You want to install some components only if their dependencies are available (useful for framework authors).
+			</para>
+		</listitem>
+	</itemizedlist>
+	<para>
+		<literal>@Install</literal> works by letting you specify <emphasis>precedence</emphasis> and <emphasis>dependencies</emphasis>.
+	</para>
+	<para>
+		The precedence of a component is a number that Seam uses to decide which component to install when there are multiple classes with the same component name in the classpath. Seam will choose the component with the higher precendence. There are some predefined precedence values (in ascending order):
+	</para>
+	<orderedlist>
+		<listitem>
+			<para>
+				<literal>BUILT_IN</literal> &mdash; the lowest precedece components are the components built in to Seam.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>FRAMEWORK</literal> &mdash; components defined by third-party frameworks may override built-in components, but are overridden by application components.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>APPLICATION</literal> &mdash; the default precedence. This is appropriate for most application components.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>DEPLOYMENT</literal> &mdash; for application components which are deployment-specific.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>MOCK</literal> &mdash; for mock objects used in testing.
+			</para>
+		</listitem>
+	</orderedlist>
+	<para>
+		Suppose we have a component named <literal>messageSender</literal> that talks to a JMS queue.
+	</para>
+<programlisting>@Name("messageSender") 
+public class MessageSender {
+    public void sendMessage() {
+        //do something with JMS
+    }
+}
+</programlisting>
+	<para>
+		In our unit tests, we don not have a JMS queue available, so we would like to stub out this method. We will create a <emphasis>mock</emphasis> component that exists in the classpath when unit tests are running, but is never deployed with the application:
+	</para>
+<programlisting>@Name("messageSender") 
+ at Install(precedence=MOCK)
+public class MockMessageSender extends MessageSender {
+    public void sendMessage() {
+        //do nothing!
+    }
+}
+</programlisting>
+	<para>
+		The <literal>precedence</literal> helps Seam decide which version to use when it finds both components in the classpath.
+	</para>
+	<para>
+		If we are able to control exactly which classes are in the classpath then this will work well, however if you are writing reusable framwork with many dependecies you will not wish to break that framework across numerious jars. You will wish to decide which components to install depending upon what other components are installed, and upon what classes are available in the classpath. The <literal>@Install</literal> annotation also controls this functionality. Seam uses this mechanism internally to enable conditional installation of many of the built-in components. However, you probably will not need to use it in your application.
+	</para>
+	</sect1><sect1 id="Seam_Reference_Guide-The_contextual_component_model-Logging"><title>Logging</title>
+	<para>
+		Below is the code for a simple log message in Java:
+	</para>
+<programlisting>private static final Log log = LogFactory.getLog(CreateOrderAction.class);
+        
+public Order createOrder(User user, Product product, int quantity) {
+    if ( log.isDebugEnabled() ) {
+        log.debug("Creating new order for user: " + user.username() + 
+            " product: " + product.name() 
+            + " quantity: " + quantity);
+    }
+    return new Order(user, product, quantity);
+}
+</programlisting>
+<!--	<para>
+		It is difficult to imagine how the code for a simple log message could possibly be more verbose. There is more lines of code tied up in logging than in the actual business logic! I remain totally astonished that the Java community has not come up with anything better in 10 years.
+	</para> -->
+	<para>
+		Seam provides a logging API that simplifies this code significantly:
+	</para>
+<programlisting>@Logger private Log log;
+        
+public Order createOrder(User user, Product product, int quantity) {
+    log.debug("Creating new order for user: #0 product: #1 quantity: #2", user.username(), 
+      product.name(), quantity);
+    return new Order(user, product, quantity);
+}
+</programlisting>
+	<para>
+		It does not matter if you declare the <literal>log</literal> variable static or not; it will work either way, except for entity bean components which require the <literal>log</literal> variable to be static.
+	</para>
+	<note>
+	<para>
+		We do not need the <literal>if ( log.isDebugEnabled() )</literal> guard, since string concatenation happens <emphasis>inside</emphasis> the <literal>debug()</literal> method. Also the log category does not need to be specified explicitly, since Seam knows what component it is injecting the <literal>Log</literal> into.
+	</para>
+</note>
+	<para>
+		If <literal>User</literal> and <literal>Product</literal> are Seam components available in the current contexts, it gets even better:
+	</para>
+<programlisting>@Logger private Log log;
+        
+public Order createOrder(User user, Product product, int quantity) {
+    log.debug("Creating new order for user: #{user.username} product: #{product.name} 
+      quantity: #0", quantity);
+    return new Order(user, product, quantity);
+}
+</programlisting>
+	<para>
+		Seam logging automagically chooses whether to send output to log4j or JDK logging. If log4j is in the classpath, Seam with use it. If it is not, Seam will use JDK logging.
+	</para>
+	</sect1><sect1 id="Seam_Reference_Guide-The_contextual_component_model-The_Mutable_interface_and_ReadOnly"><title>The <literal>Mutable</literal> interface and <literal>@ReadOnly</literal></title>
+	<para>
+		Many application servers feature an amazingly broken implementation of <literal>HttpSession</literal> clustering, where changes to the state of mutable objects bound to the session are only replicated when the application calls <literal>setAttribute()</literal> explicitly. This is a source of bugs that can not effectively be tested for at development time, since they will only manifest when failover occurs. Furthermore, the actual replication message contains the entire serialized object graph bound to the session attribute, which is inefficient.
+	</para>
+	<para>
+		Of course, EJB stateful session beans must perform automatic dirty checking and replication of mutable state and a sophisticated EJB container can introduce optimizations such as attribute-level replication. Unfortunately, not all Seam users have the good fortune to be working in an environment that supports EJB 3.0. So, for session and conversation scoped JavaBean and entity bean components, Seam provides an extra layer of cluster-safe state management over the top of the web container session clustering.
+	</para>
+	<para>
+		For session or conversation scoped JavaBean components, Seam automatically forces replication to occur by calling <literal>setAttribute()</literal> once in every request that the component was invoked by the application. Of course, this strategy is inefficient for read-mostly components. You can control this behavior by implementing the <literal>org.jboss.seam.core.Mutable</literal> interface, or by extending <literal>org.jboss.seam.core.AbstractMutable</literal>, and writing your own dirty-checking logic inside the component. For example,
+	</para>
+<programlisting>@Name("account")
+public class Account extends AbstractMutable
+{
+    private BigDecimal balance;
+    
+    public void setBalance(BigDecimal balance)
+    {
+        setDirty(this.balance, balance);
+        this.balance = balance;
+    }
+    
+    public BigDecimal getBalance()
+    {
+        return balance;
+    }
+    
+    ...
+    
+}
+</programlisting>
+	<para>
+		Or, you can use the <literal>@ReadOnly</literal> annotation to achieve a similar effect:
+	</para>
+<programlisting>@Name("account")
+public class Account
+{
+    private BigDecimal balance;
+    
+    public void setBalance(BigDecimal balance)
+    {
+        this.balance = balance;
+    }
+    
+    @ReadOnly
+    public BigDecimal getBalance()
+    {
+        return balance;
+    }
+    
+    ...
+    
+}
+</programlisting>
+	<para>
+		For session or conversation scoped entity bean components, Seam automatically forces replication to occur by calling <literal>setAttribute()</literal> once in every request, <emphasis>unless the (conversation-scoped) entity is currently associated with a Seam-managed persistence context, in which case no replication is needed</emphasis>. This strategy is not necessarily efficient, so session or conversation scope entity beans should be used with care. You can always write a stateful session bean or JavaBean component to <emphasis>manage</emphasis> the entity bean instance. For example,
+	</para>
+<programlisting>@Stateful
+ at Name("account")
+public class AccountManager extends AbstractMutable
+{
+    private Account account; // an entity bean
+    
+    @Unwrap
+    public void getAccount()
+    {
+        return account;
+    }
+    
+    ...
+    
+}
+</programlisting>
+<note>
+	<para>
+		Note that the <literal>EntityHome</literal> class in the Seam Application Framework provides a great example of this pattern.
+	</para>
+</note>
+	</sect1><sect1 id="Seam_Reference_Guide-The_contextual_component_model-Factory_and_manager_components"><title>Factory and manager components</title>
+	<para>
+		We often need to work with objects that are not Seam components. But we still want to be able to inject them into our components using <literal>@In</literal> and use them in value and method binding expressions, etc. Sometimes, we even need to tie them into the Seam context lifecycle (<literal>@Destroy</literal>, for example). So the Seam contexts can contain objects which are not Seam components, and Seam provides a couple of nice features that make it easier to work with non-component objects bound to contexts.
+	</para>
+	<para>
+		The <emphasis>factory component pattern</emphasis> lets a Seam component act as the instantiator for a non-component object. A <emphasis>factory method</emphasis> will be called when a context variable is referenced but has no value bound to it. We define factory methods using the <literal>@Factory</literal> annotation. The factory method binds a value to the context variable, and determines the scope of the bound value. There are two styles of factory method. The first style returns a value, which is bound to the context by Seam:
+	</para>
+<programlisting>@Factory(scope=CONVERSATION)
+public List&lt;Customer&gt; getCustomerList() { 
+    return ... ;
+} 
+</programlisting>
+	<para>
+		The second style is a method of type <literal>void</literal> which binds the value to the context variable itself:
+	</para>
+<programlisting>@DataModel List&lt;Customer&gt; customerList;
+
+ at Factory("customerList")
+public void initCustomerList() { 
+    customerList = ...  ;
+} 
+</programlisting>
+	<para>
+		In both cases, the factory method is called when we reference the <literal>customerList</literal> context variable and its value is null, and then has no further part to play in the lifecycle of the value. An even more powerful pattern is the <emphasis>manager component pattern</emphasis>. In this case, we have a Seam component that is bound to a context variable, that manages the value of the context variable, while remaining invisible to clients.
+	</para>
+	<para>
+		A manager component is any component with an <literal>@Unwrap</literal> method. This method returns the value that will be visable to clients, and is called <emphasis>every time</emphasis> a context variable is referenced.
+	</para>
+<programlisting>@Name("customerList")
+ at Scope(CONVERSATION)
+public class CustomerListManager
+{
+    ...
+    
+    @Unwrap
+    public List&lt;Customer&gt; getCustomerList() { 
+        return ... ;
+    }
+}
+</programlisting>
+	<para>
+		This pattern is especially useful if we have some heavyweight object that needs a cleanup operation when the context ends. In this case, the manager component may perform cleanup in the <literal>@Destroy</literal> method.
+	</para>
+	</sect1>
+</chapter>
+


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Concepts.xml
___________________________________________________________________
Name: svn:executable
   + *

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Configuration.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Configuration.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Configuration.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,802 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications">
+	<title>Configuring Seam and packaging Seam applications</title>
+	<para>
+		Configuration is a very boring topic and an extremely tedious pastime. Unfortunately, several lines of XML are required to integrate Seam into your JSF implementation and servlet container. There is no need to be too put off by the following sections; you will never need to type any of this stuff yourself, since you can just copy and paste from the example applications.
+	</para>
+	<sect1 id="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Basic_Seam_configuration"><title>Basic Seam configuration</title>
+	<para>
+		First, let us look at the basic configuration that is needed whenever we use Seam with JSF.
+	</para>
+	<sect2 id="Seam_Reference_Guide-Basic_Seam_configuration-Integrating_Seam_with_JSF_and_your_servlet_container"><title>Integrating Seam with JSF and your servlet container</title>
+	<para>
+		Seam requires the following entry in your <literal>web.xml</literal> file:
+	</para>
+<programlisting>&lt;listener&gt;
+    &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/listener-class&gt;
+&lt;/listener&gt;
+</programlisting>
+	<para>
+		This listener is responsible for bootstrapping Seam, and for destroying session and application contexts.
+	</para>
+	<para>
+		To integrate with the JSF request lifecycle, we also need a JSF <literal>PhaseListener</literal> registered in in the <literal>faces-config.xml</literal> file:
+	</para>
+<programlisting>&lt;lifecycle&gt;
+    &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-listener&gt;
+&lt;/lifecycle&gt;
+</programlisting>
+	<para>
+		The actual listener class here varies depending upon how you want to manage transaction demarcation (more on this below).
+	</para>
+	<para>
+		If you are using Sun&#39;s JSF 1.2 reference implementation, you should also add this to <literal>faces-config.xml</literal>:
+	</para>
+<programlisting>&lt;application&gt;
+    &lt;el-resolver&gt;org.jboss.seam.jsf.SeamELResolver&lt;/el-resolver&gt;
+&lt;/application&gt;
+</programlisting>
+	<para>
+		(This line should not strictly speaking be necessary, but it works around a minor bug in the RI.)
+	</para>
+	<para>
+		Some JSF implementations have a broken implementation of server-side state saving that interferes with Seam&#39;s conversation propagation. If you have problems with conversation propagation during form submissions, try switching to client-side state saving. You will need this in <literal>web.xml</literal>:
+	</para>
+<programlisting>&lt;context-param&gt;
+    &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-name&gt;
+    &lt;param-value&gt;client&lt;/param-value&gt;
+&lt;/context-param&gt;
+</programlisting>
+	</sect2><sect2 id="Seam_Reference_Guide-Basic_Seam_configuration-Seam_Resource_Servlet"><title>Seam Resource Servlet</title>
+	<para>
+		The Seam Resource Servlet provides resources used by Seam Remoting, captchas (see the security chapter) and some JSF UI controls. Configuring the Seam Resource Servlet requires the following entry in <literal>web.xml</literal>:
+	</para>
+<programlisting>&lt;servlet&gt;
+  &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;
+  &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-class&gt;
+&lt;/servlet&gt;
+    
+&lt;servlet-mapping&gt;
+  &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;
+  &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;
+&lt;/servlet-mapping&gt;
+</programlisting>
+	</sect2><sect2 id="Seam_Reference_Guide-Basic_Seam_configuration-Seam_servlet_filters"><title>Seam servlet filters</title>
+	<para>
+		Seam does not need any servlet filters for basic operation. However, there are several features which depend upon the use of filters. To make things easier for you guys, Seam lets you add and configure servlet filters just like you would configure other built-in Seam components. To take advantage of this feature, we must first install a master filter in <literal>web.xml</literal>:
+	</para>
+<programlisting>&lt;filter&gt;
+    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;
+    &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-class&gt;
+&lt;/filter&gt;
+
+&lt;filter-mapping&gt;
+    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;
+    &lt;url-pattern&gt;/*&lt;/url-pattern&gt;
+&lt;/filter-mapping&gt;
+</programlisting>
+	<para>
+		Adding the master filter enables the following built-in filters.
+	</para>
+	<sect3 id="Seam_Reference_Guide-Seam_servlet_filters-Exception_handling"><title>Exception handling</title>
+	<para>
+		This filter provides the exception mapping functionality in <literal>pages.xml</literal> (almost all applications will need this). It also takes care of rolling back uncommitted transactions when uncaught exceptions occur. (According to the Java EE specification, the web container should do this automatically, but we have found that this behavior cannot be relied upon in all application servers. And it is certainly not required of plain servlet engines like Tomcat.)
+	</para>
+	<para>
+		By default, the exception handling filter will process all requests, however this behavior may be adjusted by adding a <literal>&lt;web:exception-filter&gt;</literal> entry to <literal>components.xml</literal>, as shown in this example:
+	</para>
+<programlisting>&lt;components xmlns="http://jboss.com/products/seam/components"
+            xmlns:core="http://jboss.com/products/seam/core"
+            xmlns:web="http://jboss.com/products/seam/web"
+            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+            xsi:schemaLocation=
+                "http://jboss.com/products/seam/core 
+                                                      http://jboss.com/products/seam/core-1.2.xsd
+                 http://jboss.com/products/seam/components 
+                                                      http://jboss.com/products/seam/components-1.2.xsd
+                 http://jboss.com/products/seam/web 
+                                                      http://jboss.com/products/seam/web-1.2.xsd"&gt;
+
+    &lt;web:exception-filter url-pattern="*.seam"/&gt;
+
+&lt;/components&gt;
+</programlisting>
+	<itemizedlist>
+		<listitem>
+			<para>
+				<literal>url-pattern</literal> &mdash; Used to specify which requests are filtered, the default is all requests.
+			</para>
+		</listitem>
+	</itemizedlist>
+	</sect3><sect3 id="Seam_Reference_Guide-Seam_servlet_filters-Conversation_propagation_with_redirects"><title>Conversation propagation with redirects</title>
+	<para>
+		This filter allows Seam to propagate the conversation context across browser redirects. It intercepts any browser redirects and adds a request parameter that specifies the Seam conversation identifier.
+	</para>
+	<para>
+		The redirect filter will process all requests by default, but this behavior can also be adjusted in <literal>components.xml</literal>:
+	</para>
+<programlisting>&lt;web:redirect-filter url-pattern="*.seam"/&gt;</programlisting>
+	<itemizedlist>
+		<listitem>
+			<para>
+				<literal>url-pattern</literal> &mdash; Used to specify which requests are filtered, the default is all requests.
+			</para>
+		</listitem>
+	</itemizedlist>
+	</sect3><sect3 id="Seam_Reference_Guide-Seam_servlet_filters-Multipart_form_submissions"><title>Multipart form submissions</title>
+	<para>
+		This feature is necessary when using the Seam file upload JSF control. It detects multipart form requests and processes them according to the multipart/form-data specification (RFC-2388). To override the default settings, add the following entry to <literal>components.xml</literal>:
+	</para>
+<programlisting>&lt;web:multipart-filter create-temp-files="true" 
+        max-request-size="1000000" 
+        url-pattern="*.seam"/&gt;
+</programlisting>
+	<itemizedlist>
+		<listitem>
+			<para>
+				<literal>create-temp-files</literal> &mdash; If set to <literal>true</literal>, uploaded files are written to a temporary file (instead of held in memory). This may be an important consideration if large file uploads are expected. The default setting is <literal>false</literal>.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>max-request-size</literal> &mdash; If the size of a file upload request (determined by reading the <literal>Content-Length</literal> header in the request) exceeds this value, the request will be aborted. The default setting is 0 (no size limit).
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>url-pattern</literal> &mdash; Used to specify which requests are filtered, the default is all requests.
+			</para>
+		</listitem>
+	</itemizedlist>
+	</sect3><sect3 id="Seam_Reference_Guide-Seam_servlet_filters-Character_encoding"><title>Character encoding</title>
+	<para>
+		Sets the character encoding of submitted form data.
+	</para>
+	<para>
+		This filter is not installed by default and requires an entry in <literal>components.xml</literal> to enable it:
+	</para>
+<programlisting>&lt;web:character-encoding-filter encoding="UTF-16" 
+        override-client="true" 
+        url-pattern="*.seam"/&gt;
+</programlisting>
+	<itemizedlist>
+		<listitem>
+			<para>
+				<literal>encoding</literal> &mdash; The encoding to use.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>override-client</literal> &mdash; If this is set to <literal>true</literal>, the request encoding will be set to whatever is specified by <literal>encoding</literal> no matter whether the request already specifies an encoding or not. If set to <literal>false</literal>, the request encoding will only be set if the request does not already specify an encoding. The default setting is <literal>false</literal>.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>url-pattern</literal> &mdash; Used to specify which requests are filtered, the default is all requests.
+			</para>
+		</listitem>
+	</itemizedlist>
+	</sect3><sect3 id="Seam_Reference_Guide-Seam_servlet_filters-Context_management_for_custom_servlets"><title>Context management for custom servlets</title>
+	<para>
+		Requests sent direct to some servlet other than the JSF servlet are not processed through the JSF lifecycle, so Seam provides a servlet filter that can be applied to any other servlet that needs access to Seam components.
+	</para>
+	<para>
+		This filter allows custom servlets to interact with the Seam contexts. It sets up the Seam contexts at the beginning of each request, and tears them down at the end of the request. You should make sure that this filter is <emphasis>never</emphasis> applied to the JSF <literal>FacesServlet</literal>. Seam uses the phase listener for context management in a JSF request.
+	</para>
+	<para>
+		This filter is not installed by default and requires an entry in <literal>components.xml</literal> to enable it:
+	</para>
+<programlisting>&lt;web:context-filter url-pattern="/media/*"/&gt;</programlisting>
+	<itemizedlist>
+		<listitem>
+			<para>
+				<literal>url-pattern</literal> &mdash; Used to specify which requests are filtered, the default is all requests. If the url-pattern is specified for the context filter, then the filter will be enabled (unless explicitly disabled).
+			</para>
+		</listitem>
+	</itemizedlist>
+	<para>
+		The context filter expects to find the conversation id of any conversation context in a request parameter named <literal>conversationId</literal>. You are responsible for ensuring that it gets sent in the request.
+	</para>
+	<para>
+		You are also responsible for ensuring propagation of any new conversation id back to the client. Seam exposes the conversation id as a property of the built in component <literal>conversation</literal>.
+	</para>
+	</sect3></sect2><sect2 id="Seam_Reference_Guide-Basic_Seam_configuration-Integrating_Seam_with_your_EJB_container"><title>Integrating Seam with your EJB container</title>
+	<para>
+		We need to apply the <literal>SeamInterceptor</literal> to our Seam components. The simplest way to do this is to add the following interceptor binding to the <literal>&lt;assembly-descriptor&gt;</literal> in <literal>ejb-jar.xml</literal>:
+	</para>
+<programlisting>&lt;interceptor-binding&gt;
+    &lt;ejb-name&gt;*&lt;/ejb-name&gt;
+    &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/interceptor-class&gt;
+&lt;/interceptor-binding&gt;
+</programlisting>
+	<para>
+		Seam needs to know where to go to find session beans in JNDI. One way to do this is specify the <literal>@JndiName</literal> annotation on every session bean Seam component. However, this is quite tedious. A better approach is to specify a pattern that Seam can use to calculate the JNDI name from the EJB name. Unfortunately, there is no standard mapping to global JNDI defined in the EJB3 specification, so this mapping is vendor-specific. We usually specify this option in <literal>components.xml</literal>.
+	</para>
+	<para>
+		For JBoss AS, the following pattern is correct:
+	</para>
+<programlisting>&lt;core:init jndi-name="myEarName/#{ejbName}/local" /&gt;</programlisting>
+	<para>
+		Where <literal>myEarName</literal> is the name of the EAR in which the bean is deployed.
+	</para>
+	<para>
+		Outside the context of an EAR (when using the JBoss Embeddable EJB3 container), the following pattern is the one to use:
+	</para>
+<programlisting>&lt;core:init jndi-name="#{ejbName}/local" /&gt;</programlisting>
+	<para>
+		You will have to experiment to find the right setting for other application servers.</para> 
+	<important>
+	<para>
+	Some servers (such as GlassFish) require you to specify JNDI names for all EJB components explicitly. In this case, you can pick your own pattern.
+	</para>
+</important>
+	</sect2><sect2 id="Seam_Reference_Guide-Basic_Seam_configuration-Using_facelets"><title>Using facelets</title>
+	<para>
+		If you want follow our advice and use facelets instead of JSP, add the following lines to <literal>faces-config.xml</literal>:
+	</para>
+<programlisting>&lt;application&gt;
+    &lt;view-handler&gt;com.sun.facelets.FaceletViewHandler&lt;/view-handler&gt;
+&lt;/application&gt;
+</programlisting>
+	<para>
+		And the following lines to <literal>web.xml</literal>:
+	</para>
+<programlisting>&lt;context-param&gt;
+    &lt;param-name&gt;javax.faces.DEFAULT_SUFFIX&lt;/param-name&gt;
+    &lt;param-value&gt;.xhtml&lt;/param-value&gt;
+&lt;/context-param&gt;
+</programlisting>
+	</sect2><sect2 id="Seam_Reference_Guide-Basic_Seam_configuration-Dont_forget"><title>Don&#39;t forget!</title>
+	<para>
+		There is one final item you need to know about. You must place a <literal>seam.properties</literal>, <literal>META-INF/seam.properties</literal> or <literal>META-INF/components.xml</literal> file in any archive in which your Seam components are deployed (even an empty properties file will do). At startup, Seam will scan any archives with <literal>seam.properties</literal> files for seam components.
+	</para>
+	<para>
+		In a web archive (WAR) file, you must place a <literal>seam.properties</literal> file in the <literal>WEB-INF/classes</literal> directory if you have any Seam components included here.
+	</para>
+<!--	<para>
+		That&#39;s why all the Seam examples have an empty <literal>seam.properties</literal> file. You cannot just delete this file and expect everything to still work!
+	</para> -->
+	<para>
+		<!--You might think this is silly and what kind of idiot framework designers would make an empty file affect the behavior of their software?? Well, -->This is a workaround for a limitation of the JVM; if we did not use this mechanism, our next best option would be to force you to list every component explicitly in <literal>components.xml</literal>. <!-- just like some other competing frameworks do! I think you&#39;ll like our way better. -->
+	</para>
+	</sect2></sect1><sect1 id="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_EE_5"><title>Configuring Seam in Java EE 5</title>
+	<mediaobject>
+		<imageobject role="fo">
+			<imagedata align="center" fileref="images/ee5.png" />
+		</imageobject>
+	<!--	<imageobject role="html">
+			<imagedata align="center" fileref="../shared/images/ee5.png" />
+		</imageobject> -->
+	</mediaobject>
+	<para>
+		If you are running in a Java EE 5 environment, this is all the configuration required to start using Seam!
+	</para>
+	<sect2 id="Seam_Reference_Guide-Configuring_Seam_in_Java_EE_5-Packaging"><title>Packaging</title>
+	<para>
+		Once you have packaged all this stuff together into an EAR, the archive structure will look something like this:
+	</para>
+<programlisting>my-application.ear/
+    jboss-seam.jar
+    el-api.jar
+    el-ri.jar
+    META-INF/
+        MANIFEST.MF
+        application.xml
+    my-application.war/
+        META-INF/
+            MANIFEST.MF
+        WEB-INF/
+            web.xml
+            components.xml
+            faces-config.xml
+            lib/
+                jsf-facelets.jar
+                jboss-seam-ui.jar
+        login.jsp
+        register.jsp
+        ...
+    my-application.jar/
+        META-INF/
+            MANIFEST.MF
+            persistence.xml
+        seam.properties
+        org/
+            jboss/
+                myapplication/
+                    User.class
+                    Login.class
+                    LoginBean.class
+                    Register.class
+                    RegisterBean.class
+                    ...
+</programlisting>
+	<para>
+		You must include <literal>jboss-seam.jar</literal>, <literal>el-api.jar</literal> and <literal>el-ri.jar</literal> in the EAR classpath. Make sure you reference all of these jars from <literal>application.xml</literal>.
+	</para>
+	<para>
+		If you want to use jBPM or Drools, you must include the needed jars in the EAR classpath. Make sure you reference all of the jars from <literal>application.xml</literal>.
+	</para>
+	<para>
+		If you want to use facelets (our recommendation), you must include <literal>jsf-facelets.jar</literal> in the <literal>WEB-INF/lib</literal> directory of the WAR.
+	</para>
+	<para>
+		If you want to use the Seam tag library (most Seam applications do), you must include <literal>jboss-seam-ui.jar</literal> in the <literal>WEB-INF/lib</literal> directory of the WAR. If you want to use the PDF or email tag libraries, you need to put <literal>jboss-seam-pdf.jar</literal> or <literal>jboss-seam-mail.jar</literal> in <literal>WEB-INF/lib</literal>.
+	</para>
+	<para>
+		If you want to use the Seam debug page (only works for applications using facelets), you must include <literal>jboss-seam-debug.jar</literal> in the <literal>WEB-INF/lib</literal> directory of the WAR.
+	</para>
+	<para>
+		Seam ships with several example applications that are deployable in any Java EE container that supports EJB 3.0.
+	</para>
+	<para>
+		I really wish that was all there was to say on the topic of configuration but unfortunately we are only about a third of the way there. <!--If you are too overwhelmed by all this tedious configuration stuff, --> Feel free to skip over the rest of this section and come back to it later.
+	</para>
+	</sect2>
+	</sect1><sect1 id="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container"><title>Configuring Seam in Java SE, with the JBoss Embeddable EJB3 container</title>
+	<para>
+		The JBoss Embeddable EJB3 container lets you run EJB3 components outside the context of the Java EE 5 application server. This is especially, but not only, useful for testing.
+	</para>
+	<para>
+		The Seam booking example application includes a TestNG integration test suite that runs on the Embeddable EJB3 container.
+	</para>
+	<mediaobject>
+		<imageobject role="fo">
+			<imagedata align="center" fileref="images/testng.png" />
+		</imageobject>
+	<!--	<imageobject role="html">
+			<imagedata align="center" fileref="../shared/images/testng.png" />
+		</imageobject> -->
+	</mediaobject> 
+	<para>
+		The booking example application may even be deployed to Tomcat.
+	</para>
+	<mediaobject>
+		<imageobject role="fo">
+			<imagedata align="center" fileref="images/e-ejb3.png" />
+		</imageobject>
+	<!--	<imageobject role="html">
+			<imagedata align="center" fileref="../shared/images/e-ejb3.png" />
+		</imageobject> -->
+	</mediaobject>
+	<sect2 id="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container-Installing_the_Embeddable_EJB3_container"><title>Installing the Embeddable EJB3 container</title>
+	<para>
+		Seam ships with a build of the Embeddable EJB3 container in the <literal>embedded-ejb</literal> directory. To use the Embeddable EJB3 container with Seam, add the <literal>embedded-ejb/conf</literal> directory, and all jars in the <literal>lib</literal> and <literal>embedded-ejb/lib</literal> directories to your classpath. Then, add the following line to <literal>components.xml</literal>:
+	</para>
+<programlisting>&lt;core:ejb /&gt;</programlisting>
+	<para>
+		This setting installs the built-in component named <literal>org.jboss.seam.core.ejb</literal>. This component is responsible for bootstrapping the EJB container when Seam is started, and shutting it down when the web application is undeployed.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container-Configuring_a_datasource_with_the_Embeddable_EJB3_container"><title>Configuring a datasource with the Embeddable EJB3 container</title>
+	<para>
+		You should refer to the Embeddable EJB3 container documentation for more information about configuring the container. You&#39;ll probably at least need to set up your own datasource. Embeddable EJB3 is implemented using the JBoss Microcontainer, so it&#39;s very easy to add new services to the minimal set of services provided by default. For example, I can add a new datasource by putting this <literal>jboss-beans.xml</literal> file in my classpath:
+	</para>
+<programlisting>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+
+&lt;deployment xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+            xsi:schemaLocation="urn:jboss:bean-deployer bean-deployer_1_0.xsd"
+            xmlns="urn:jboss:bean-deployer"&gt;
+
+   &lt;bean name="bookingDatasourceBootstrap"
+        class="org.jboss.resource.adapter.jdbc.local.LocalTxDataSource"&gt;
+      &lt;property name="driverClass"&gt;org.hsqldb.jdbcDriver&lt;/property&gt;
+      &lt;property name="connectionURL"&gt;jdbc:hsqldb:.&lt;/property&gt;
+      &lt;property name="userName"&gt;sa&lt;/property&gt;
+      &lt;property name="jndiName"&gt;java:/bookingDatasource&lt;/property&gt;
+      &lt;property name="minSize"&gt;0&lt;/property&gt;
+      &lt;property name="maxSize"&gt;10&lt;/property&gt;
+      &lt;property name="blockingTimeout"&gt;1000&lt;/property&gt;
+      &lt;property name="idleTimeout"&gt;100000&lt;/property&gt;
+      &lt;property name="transactionManager"&gt;
+        &lt;inject bean="TransactionManager"/&gt;
+      &lt;/property&gt;
+      &lt;property name="cachedConnectionManager"&gt;
+        &lt;inject bean="CachedConnectionManager"/&gt;
+      &lt;/property&gt;
+      &lt;property name="initialContextProperties"&gt;
+        &lt;inject bean="InitialContextProperties"/&gt;
+      &lt;/property&gt;
+   &lt;/bean&gt;
+
+   &lt;bean name="bookingDatasource" class="java.lang.Object"&gt;
+      &lt;constructor factoryMethod="getDatasource"&gt;
+         &lt;factory bean="bookingDatasourceBootstrap"/&gt;
+      &lt;/constructor&gt;
+   &lt;/bean&gt;
+
+&lt;/deployment&gt;
+</programlisting>
+	</sect2><sect2 id="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Embeddable_EJB3_container-Packaging"><title>Packaging</title>
+	<para>
+		The archive structure of a WAR-based deployment on an servlet engine like Tomcat will look something like this:
+	</para>
+<programlisting>my-application.war/
+    META-INF/
+        MANIFEST.MF
+    WEB-INF/
+        web.xml
+        components.xml
+        faces-config.xml
+        lib/
+            jboss-seam.jar
+            jboss-seam-ui.jar
+            el-api.jar
+            el-ri.jar
+            jsf-facelets.jar
+            myfaces-api.jar
+            myfaces-impl.jar
+            jboss-ejb3.jar
+            jboss-jca.jar
+            jboss-j2ee.jar
+            ...
+            mc-conf.jar/
+                ejb3-interceptors-aop.xml
+                embedded-jboss-beans.xml
+                default.persistence.properties
+                jndi.properties
+                login-config.xml
+                security-beans.xml
+                log4j.xml
+            my-application.jar/
+                META-INF/
+                    MANIFEST.MF
+                    persistence.xml
+                    jboss-beans.xml
+                log4j.xml
+                seam.properties
+                org/
+                    jboss/
+                        myapplication/
+                            User.class
+                            Login.class
+                            LoginBean.class
+                            Register.class
+                            RegisterBean.class
+                            ...
+    login.jsp
+    register.jsp
+    ...
+</programlisting>
+	<para>
+		The <literal>mc-conf.jar</literal> just contains the standard JBoss Microcontainer configuration files for Embeddable EJB3. You will not usually need to edit these files yourself.
+	</para>
+	<para>
+		Most of the Seam example applications may be deployed to Tomcat by running <literal>ant deploy.tomcat</literal>.
+	</para>
+	</sect2></sect1><sect1 id="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_J2EE"><title>Configuring Seam in J2EE</title>
+	<para>
+		Seam is useful even if you are not yet ready to take the plunge into EJB 3.0. In this case you would use Hibernate3 or JPA instead of EJB 3.0 persistence, and plain JavaBeans instead of session beans. You will miss out on some of the nice features of session beans but it will be very easy to migrate to EJB 3.0 when you are ready and, in the meantime, you will be able to take advantage of Seam&#39;s unique declarative state management architecture.
+	</para>
+	<mediaobject>
+		<imageobject role="fo">
+			<imagedata align="center" fileref="images/hibernate-ee.png" />
+		</imageobject>
+	<!--	<imageobject role="html">
+			<imagedata align="center" fileref="../shared/images/hibernate-ee.png" />
+		</imageobject> -->
+	</mediaobject>
+	<para>
+		Seam JavaBean components do not provide declarative transaction demarcation like session beans do. You <emphasis>could</emphasis> manage your transactions manually using the JTA <literal>UserTransaction</literal> (you could even implement your own declarative transaction management in a Seam interceptor). But most applications will use Seam managed transactions when using Hibernate with JavaBeans. Follow the instructions in the persistence chapter to install <literal>TransactionalSeamPhaseListener</literal>.
+	</para>
+	<para>
+		The Seam distribution includes a version of the booking example application that uses Hibernate3 and JavaBeans instead of EJB3, and another version that uses JPA and JavaBeans. These example applications are ready to deploy into any J2EE application server.
+	</para>
+	<sect2 id="Seam_Reference_Guide-Configuring_Seam_in_J2EE-Boostrapping_Hibernate_in_Seam"><title>Boostrapping Hibernate in Seam</title>
+	<para>
+		Seam will bootstrap a Hibernate <literal>SessionFactory</literal> from your <literal>hibernate.cfg.xml</literal> file if you install a built-in component:
+	</para>
+<programlisting>&lt;core:hibernate-session-factory name="hibernateSessionFactory"/&gt;</programlisting>
+	<para>
+		You will also need to configure a <emphasis>managed session</emphasis> if you want a Seam managed Hibernate <literal>Session</literal> to be available via injection.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Configuring_Seam_in_J2EE-Boostrapping_JPA_in_Seam"><title>Boostrapping JPA in Seam</title>
+	<para>
+		Seam will bootstrap a JPA <literal>EntityManagerFactory</literal> from your <literal>persistence.xml</literal> file if you install this built-in component:
+	</para>
+<programlisting>&lt;core:entity-manager-factory name="entityManagerFactory"/&gt;</programlisting>
+	<para>
+		You will also need to configure a <emphasis>managed persistencece context</emphasis> if you want a Seam managed JPA <literal>EntityManager</literal> to be available via injection.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Configuring_Seam_in_J2EE-Packaging"><title>Packaging</title>
+	<para>
+		We can package our application as a WAR, in the following structure:
+	</para>
+<programlisting>my-application.war/
+    META-INF/
+        MANIFEST.MF
+    WEB-INF/
+        web.xml
+        components.xml
+        faces-config.xml
+        lib/
+            jboss-seam.jar
+            jboss-seam-ui.jar
+            el-api.jar
+            el-ri.jar
+            jsf-facelets.jar
+            hibernate3.jar
+            hibernate-annotations.jar
+            ...
+            my-application.jar/
+                META-INF/
+                   MANIFEST.MF
+                seam.properties
+                hibernate.cfg.xml
+                org/
+                    jboss/
+                        myapplication/
+                            User.class
+                            Login.class
+                            Register.class
+                            ...
+    login.jsp
+    register.jsp
+    ...
+</programlisting>
+<para>
+		If we want to deploy Hibernate in a non-J2EE environment like Tomcat or TestNG, we need to do a little bit more work.
+	</para>
+	</sect2>
+	</sect1><sect1 id="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_Java_SE_with_the_JBoss_Microcontainer"><title>Configuring Seam in Java SE, with the JBoss Microcontainer</title>
+	<para>
+		The Seam support for Hibernate and JPA requires JTA and a JCA datasource. If you are running in a non-EE environment like Tomcat or TestNG you can run these services, and Hibernate itself, in the JBoss Microcontainer.
+	</para>
+	<para>
+		You can even deploy the Hibernate and JPA versions of the booking example in Tomcat.
+	</para>
+	<mediaobject>
+		<imageobject role="fo">
+			<imagedata align="center" fileref="images/hibernate-mc.png" />
+		</imageobject>
+	<!--	<imageobject role="html">
+			<imagedata align="center" fileref="../shared/images/hibernate-mc.png" />
+		</imageobject> -->
+	</mediaobject>
+	<para>
+		Seam ships with an example Microcontainer configuration in <literal>microcontainer/conf/jboss-beans.xml</literal> that provides all the things you need to run Seam with Hibernate in any non-EE environment. Just add the <literal>microcontainer/conf</literal> directory, and all jars in the <literal>lib</literal> and <literal>microcontainer/lib</literal> directories to your classpath. Refer to the documentation for the JBoss Microcontainer for more information.
+	</para>
+	<sect2 id="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Microcontainer-Using_Hibernate_and_the_JBoss_Microcontainer"><title>Using Hibernate and the JBoss Microcontainer</title>
+	<para>
+		The built-in Seam component named <literal>org.jboss.seam.core.microcontainer</literal> bootstraps the microcontainer. As before, we probably want to use a Seam managed session.
+	</para>
+<programlisting>&lt;core:microcontainer/&gt;
+
+&lt;core:managed-hibernate-session name="bookingDatabase" auto-create="true"
+    session-factory-jndi-name="java:/bookingSessionFactory"/&gt;
+</programlisting>
+	<para>
+		Where <literal>java:/bookingSessionFactory</literal> is the name of the Hibernate session factory specified in <literal>hibernate.cfg.xml</literal>.
+	</para>
+	<para>
+		You will need to provide a <literal>jboss-beans.xml</literal> file that installs JNDI, JTA, your JCA datasource and Hibernate into the microcontainer:
+	</para>
+<programlisting>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+
+&lt;deployment xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+            xsi:schemaLocation="urn:jboss:bean-deployer bean-deployer_1_0.xsd"
+            xmlns="urn:jboss:bean-deployer"&gt;
+
+   &lt;bean name="Naming" class="org.jnp.server.SingletonNamingServer"/&gt;
+
+   &lt;bean name="TransactionManagerFactory" 
+      class="org.jboss.seam.microcontainer.TransactionManagerFactory"/&gt;
+   &lt;bean name="TransactionManager" class="java.lang.Object"&gt;
+      &lt;constructor factoryMethod="getTransactionManager"&gt;
+         &lt;factory bean="TransactionManagerFactory"/&gt;
+      &lt;/constructor&gt;
+   &lt;/bean&gt;
+
+   &lt;bean name="bookingDatasourceFactory" class="org.jboss.seam.microcontainer.DataSourceFactory"&gt;
+      &lt;property name="driverClass"&gt;org.hsqldb.jdbcDriver&lt;/property&gt;
+      &lt;property name="connectionUrl"&gt;jdbc:hsqldb:.&lt;/property&gt;
+      &lt;property name="userName"&gt;sa&lt;/property&gt;
+      &lt;property name="jndiName"&gt;java:/hibernateDatasource&lt;/property&gt;
+      &lt;property name="minSize"&gt;0&lt;/property&gt;
+      &lt;property name="maxSize"&gt;10&lt;/property&gt;
+      &lt;property name="blockingTimeout"&gt;1000&lt;/property&gt;
+      &lt;property name="idleTimeout"&gt;100000&lt;/property&gt;
+      &lt;property name="transactionManager"&gt;&lt;inject bean="TransactionManager"/&gt;&lt;/property&gt;
+   &lt;/bean&gt;
+   &lt;bean name="bookingDatasource" class="java.lang.Object"&gt;
+      &lt;constructor factoryMethod="getDataSource"&gt;
+         &lt;factory bean="bookingDatasourceFactory"/&gt;
+      &lt;/constructor&gt;
+   &lt;/bean&gt;
+
+   &lt;bean name="bookingSessionFactoryFactory" 
+      class="org.jboss.seam.microcontainer.HibernateFactory"/&gt;
+   &lt;bean name="bookingSessionFactory" class="java.lang.Object"&gt;
+      &lt;constructor factoryMethod="getSessionFactory"&gt;
+         &lt;factory bean="bookingSessionFactoryFactory"/&gt;
+      &lt;/constructor&gt;
+      &lt;depends&gt;bookingDatasource&lt;/depends&gt;
+   &lt;/bean&gt;
+
+&lt;/deployment&gt;
+</programlisting>
+	</sect2><sect2 id="Seam_Reference_Guide-Configuring_Seam_in_Java_SE_with_the_JBoss_Microcontainer-Packaging"><title>Packaging</title>
+	<para>
+		The WAR could have the following structure:
+	</para>
+<programlisting>my-application.war/
+    META-INF/
+        MANIFEST.MF
+    WEB-INF/
+        web.xml
+        components.xml
+        faces-config.xml
+        lib/
+            jboss-seam.jar
+            jboss-seam-ui.jar
+            el-api.jar
+            el-ri.jar
+            jsf-facelets.jar
+            hibernate3.jar
+            ...
+            jboss-microcontainer.jar
+            jboss-jca.jar
+            ...
+            myfaces-api.jar
+            myfaces-impl.jar
+            mc-conf.jar/
+                jndi.properties
+                log4j.xml
+            my-application.jar/
+                META-INF/
+                    MANIFEST.MF
+                    jboss-beans.xml
+                seam.properties
+                hibernate.cfg.xml
+                log4j.xml
+                org/
+                    jboss/
+                        myapplication/
+                            User.class
+                            Login.class
+                            Register.class
+                            ...
+    login.jsp
+    register.jsp
+    ...
+</programlisting>
+	</sect2></sect1><sect1 id="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_jBPM_in_Seam"><title>Configuring jBPM in Seam</title>
+	<para>
+		Seam&#39;s jBPM integration is not installed by default, so you will need to enable jBPM by installing a built-in component. You will also need to explicitly list your process and pageflow definitions. In <literal>components.xml</literal>:
+	</para>
+<programlisting>&lt;core:jbpm&gt;
+    &lt;core:pageflow-definitions&gt;
+        &lt;value&gt;createDocument.jpdl.xml&lt;/value&gt;
+        &lt;value&gt;editDocument.jpdl.xml&lt;/value&gt;
+        &lt;value&gt;approveDocument.jpdl.xml&lt;/value&gt;
+    &lt;/core:pageflow-definitions&gt;
+    &lt;core:process-definitions&gt;
+        &lt;value&gt;documentLifecycle.jpdl.xml&lt;/value&gt;
+    &lt;/core:process-definitions&gt;
+&lt;/core:jbpm&gt;
+</programlisting>
+	<para>
+		No further special configuration is needed if you only have pageflows. If you do have business process definitions, you need to provide a jBPM configuration, and a Hibernate configuration for jBPM. The Seam DVD Store demo includes example <literal>jbpm.cfg.xml</literal> and <literal>hibernate.cfg.xml</literal> files that will work with Seam:
+	</para>
+<programlisting>&lt;jbpm-configuration&gt;
+
+  &lt;jbpm-context&gt;
+    &lt;service name="persistence"&gt;
+       &lt;factory&gt;
+          &lt;bean class="org.jbpm.persistence.db.DbPersistenceServiceFactory"&gt;
+             &lt;field name="isTransactionEnabled"&gt;&lt;false/&gt;&lt;/field&gt;
+          &lt;/bean&gt;
+       &lt;/factory&gt;
+    &lt;/service&gt;
+    &lt;service name="message" factory="org.jbpm.msg.db.DbMessageServiceFactory" /&gt;
+    &lt;service name="scheduler" factory="org.jbpm.scheduler.db.DbSchedulerServiceFactory" /&gt;
+    &lt;service name="logging" factory="org.jbpm.logging.db.DbLoggingServiceFactory" /&gt;
+    &lt;service name="authentication" 
+       factory="org.jbpm.security.authentication.DefaultAuthenticationServiceFactory" /&gt;
+  &lt;/jbpm-context&gt;
+
+&lt;/jbpm-configuration&gt;
+</programlisting>
+	<para>
+		The most important thing to notice here is that jBPM transaction control is disabled. Seam or EJB3 should control the JTA transactions.
+	</para>
+	<sect2 id="Seam_Reference_Guide-Configuring_jBPM_in_Seam-Packaging"><title>Packaging</title>
+	<para>
+		There is not yet any well-defined packaging format for jBPM configuration and process/pageflow definition files. In the Seam examples we have decided to simply package all these files into the root of the EAR. In future, we will probably design some other standard packaging format. So the EAR looks something like this:
+	</para>
+<programlisting>my-application.ear/
+    jboss-seam.jar
+    el-api.jar
+    el-ri.jar
+    jbpm-3.1.jar
+    META-INF/
+        MANIFEST.MF
+        application.xml
+    my-application.war/
+        META-INF/
+            MANIFEST.MF
+        WEB-INF/
+            web.xml
+            components.xml
+            faces-config.xml
+            lib/
+                jsf-facelets.jar
+                jboss-seam-ui.jar
+        login.jsp
+        register.jsp
+        ...
+    my-application.jar/
+        META-INF/
+            MANIFEST.MF
+            persistence.xml
+        seam.properties
+        org/
+            jboss/
+                myapplication/
+                    User.class
+                    Login.class
+                    LoginBean.class
+                    Register.class
+                    RegisterBean.class
+                    ...
+    jbpm.cfg.xml
+    hibernate.cfg.xml
+    createDocument.jpdl.xml
+    editDocument.jpdl.xml
+    approveDocument.jpdl.xml
+    documentLifecycle.jpdl.xml
+</programlisting>
+	<para>
+		Remember to add <literal>jbpm-3.1.jar</literal> to the manifest of your EJB-JAR and WAR.
+	</para>
+	</sect2></sect1><sect1 id="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_Seam_in_a_Portal"><title>Configuring Seam in a Portal</title>
+	<para>
+		To run a Seam application as a portlet, you will need to provide certain portlet metadata (<literal>portlet.xml</literal>, etc) in addition to the usual Java EE metadata. See the <literal>examples/portal</literal> directory for an example of the booking demo preconfigured to run on JBoss Portal.
+	</para>
+	<para>
+		In addition, you will need to use a portlet-specific phase listener instead of <literal>SeamPhaseListener</literal> or <literal>TransactionalSeamPhaseListener</literal>. The <literal>SeamPortletPhaseListener</literal> and <literal>TransactionalSeamPortletPhaseListener</literal> are adapted to the portlet lifecycle. I would like to offer my sincerest apologies for the name of that last class. I really could not think of anything better. Sorry.
+	</para>
+	</sect1><sect1 id="Seam_Reference_Guide-Configuring_Seam_and_packaging_Seam_applications-Configuring_SFSB_and_Session_Timeouts_in_JBoss_AS"><title>Configuring SFSB and Session Timeouts in JBoss AS</title>
+	<para>
+		It is very important that the timeout for Stateful Session Beans is set higher than the timeout for HTTP Sessions, otherwise SFSB&#39;s may time out before the user&#39;s HTTP session has ended. JBoss Application Server has a default session bean timeout of 30 minutes, which is configured in <literal>server/default/conf/standardjboss.xml</literal> (replace <emphasis>default</emphasis> with your own configuration).
+	</para>
+	<para>
+		The default SFSB timeout can be adjusted by modifying the value of <literal>max-bean-life</literal> in the <literal>LRUStatefulContextCachePolicy</literal> cache configuration:
+	</para>
+<programlisting>
+      &lt;container-cache-conf&gt;
+        &lt;cache-policy&gt;org.jboss.ejb.plugins.LRUStatefulContextCachePolicy&lt;/cache-policy&gt;
+        &lt;cache-policy-conf&gt;
+          &lt;min-capacity&gt;50&lt;/min-capacity&gt;
+          &lt;max-capacity&gt;1000000&lt;/max-capacity&gt;
+          &lt;remover-period&gt;1800&lt;/remover-period&gt;
+
+          &lt;!-- SFSB timeout in seconds; 1800 seconds == 30 minutes --&gt;
+          &lt;max-bean-life&gt;1800&lt;/max-bean-life&gt;  
+          
+          &lt;overager-period&gt;300&lt;/overager-period&gt;
+          &lt;max-bean-age&gt;600&lt;/max-bean-age&gt;
+          &lt;resizer-period&gt;400&lt;/resizer-period&gt;
+          &lt;max-cache-miss-period&gt;60&lt;/max-cache-miss-period&gt;
+          &lt;min-cache-miss-period&gt;1&lt;/min-cache-miss-period&gt;
+          &lt;cache-load-factor&gt;0.75&lt;/cache-load-factor&gt;
+        &lt;/cache-policy-conf&gt;
+      &lt;/container-cache-conf&gt;
+</programlisting>
+	<para>
+		The default HTTP session timeout can be modified in <literal>server/default/deploy/jbossweb-tomcat55.sar/conf/web.xml</literal> for JBoss 4.0.x, or in <literal>server/default/deploy/jboss-web.deployer/conf/web.xml</literal> for JBoss 4.2.x. The following entry in this file controls the default session timeout for all web applications:
+	</para>
+<programlisting>
+   &lt;session-config&gt;
+      &lt;!-- HTTP Session timeout, in minutes --&gt;
+      &lt;session-timeout&gt;30&lt;/session-timeout&gt;
+   &lt;/session-config&gt;        
+        
+</programlisting>
+	<para>
+		To override this value for your own application, simply include this entry in your application&#39;s own <literal>web.xml</literal>.
+	</para>
+	</sect1>
+</chapter>
+


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Configuration.xml
___________________________________________________________________
Name: svn:executable
   + *

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Controls.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Controls.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Controls.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1175 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Seam_Reference_Guide-Seam_JSF_controls">
+	<title>Seam JSF controls</title>
+	<para>
+		Seam includes a number of JSF controls that are useful for working with Seam. These are intended to complement the built-in JSF controls, and controls from other third-party libraries. We recommend the Ajax4JSF and ADF faces (now Trinidad) tag libraries for use with Seam. We do not recommend the use of the Tomahawk tag library.
+	</para>
+	<para>
+		To use these controls, define the "<literal>s</literal>" namespace in your page as follows (facelets only):
+	</para>
+<programlisting>
+&lt;html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:s="http://jboss.com/products/seam/taglib"&gt;
+  
+</programlisting>
+	<para>
+		The ui example demonstrates the use of a number of these tags.
+	</para>
+	<table id="Seam_Reference_Guide-Seam_JSF_controls-Seam_JSF_Control_Reference">
+		<title>Seam JSF Control Reference</title>
+		<tgroup cols="2">
+			<colspec colnum="1" colwidth="1*"></colspec>
+			<colspec colnum="2" colwidth="3*"></colspec>
+			<tbody>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:validate&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							A non-visual control, validates a JSF input field against the bound property using Hibernate Validator.
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<para>
+							None.
+						</para>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+<programlisting>
+&lt;h:inputText id="userName" required="true" value="#{customer.userName}"&gt;
+  &lt;s:validate /&gt;
+&lt;/h:inputText&gt;
+&lt;h:message for="userName" styleClass="error" /&gt;
+</programlisting>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:validateAll&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							A non-visual control, validates all child JSF input fields against their bound properties using Hibernate Validator.
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<para>
+							None.
+						</para>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+<programlisting>
+&lt;s:validateAll&gt;
+  &lt;div class="entry"&gt;
+    &lt;h:outputLabel for="username"&gt;Username:&lt;/h:outputLabel&gt;
+    &lt;h:inputText id="username" value="#{user.username}" required="true"/&gt;
+    &lt;h:message for="username" styleClass="error" /&gt;
+  &lt;/div&gt;
+  &lt;div class="entry"&gt;
+    &lt;h:outputLabel for="password"&gt;Password:&lt;/h:outputLabel&gt;
+    &lt;h:inputSecret id="password" value="#{user.password}" required="true"/&gt;
+    &lt;h:message for="password" styleClass="error" /&gt;
+  &lt;/div&gt;
+  &lt;div class="entry"&gt;
+    &lt;h:outputLabel for="verify"&gt;Verify Password:&lt;/h:outputLabel&gt;
+    &lt;h:inputSecret id="verify" value="#{register.verify}" required="true"/&gt;
+    &lt;h:message for="verify" styleClass="error" /&gt;
+  &lt;/div&gt;
+&lt;/s:validateAll&gt;
+</programlisting>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:formattedText&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							Outputs <emphasis>Seam Text</emphasis>, a rich text markup useful for blogs, wikis and other applications that might use rich text. See the Seam Text chapter for full usage.
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<itemizedlist>
+							<listitem>
+								<para>
+									<literal>value</literal> &mdash; an EL expression specifying the rich text markup to render.
+								</para>
+							</listitem>
+						</itemizedlist>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+<programlisting>&lt;s:formattedText value="#{blog.text}"/&gt;
+</programlisting>
+						<para>
+							<emphasis>Example</emphasis>
+						</para>
+						<mediaobject>
+							<imageobject role="fo">
+								<imagedata align="center" fileref="images/controls-seamtext.png" />
+							</imageobject>
+						<!--	<imageobject role="html">
+								<imagedata align="center" fileref="../shared/images/controls-seamtext.png" />
+							</imageobject> -->
+						</mediaobject>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:convertDateTime&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							Perform date or time conversions in the Seam timezone.
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<para>
+							None.
+						</para>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+<programlisting></programlisting>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:convertEnum&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							Assigns an enum converter to the current component. This is primarily useful for radio button and dropdown controls.
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<para>
+							None.
+						</para>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+<programlisting></programlisting>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:convertEntity&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							Assigns an entity converter to the current component. This is primarily useful for radio button and dropdown controls.
+						</para>
+						<para>
+							The converter works with any entity which has an <literal>@Id</literal> annotation - either simple or composite. If your <emphasis>Managed Persistence Context</emphasis> is not called <literal>entityManager</literal>, then you need to set it in components.xml:
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<para>
+							None.
+						</para>
+						<para>
+							<emphasis>Configuration</emphasis>
+						</para>
+<programlisting>
+  &lt;component name="org.jboss.seam.ui.entityConverter"&gt;
+      &lt;property name="entityManager"&gt;#{em}&lt;/property&gt;
+  &lt;/component&gt;
+</programlisting>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+<programlisting>&lt;h:selectOneMenu value="#{person.continent}" required="true"&gt;
+    &lt;s:selectItems value="#{continents.resultList}" var="continent" label="#{continent.name}" noSelectionLabel="Please Select..."/&gt;
+    &lt;s:convertEntity /&gt;
+&lt;/h:selectOneMenu&gt;
+</programlisting>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:enumItem&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							Creates a <literal>SelectItem</literal> from an enum value.
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<itemizedlist>
+							<listitem>
+								<para>
+									<literal>enumValue</literal> &mdash; the string representation of the enum value.
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>label</literal> &mdash; the label to be used when rendering the <literal>SelectItem</literal>.
+								</para>
+							</listitem>
+						</itemizedlist>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+						<para>
+<programlisting></programlisting>
+						</para>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:selectItems&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							Creates a <literal>List&lt;SelectItem&gt;</literal> from a List, Set, DataModel or Array.
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<itemizedlist>
+							<listitem>
+								<para>
+									<literal>value</literal> &mdash; an EL expression specifying the data that backs the <literal>List&lt;SelectItem&gt;</literal>
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>var</literal> &mdash; defines the name of the local variable that holds the current object during iteration
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>label</literal> &mdash; the label to be used when rendering the <literal>SelectItem</literal>. Can reference the <literal>var</literal> variable
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>disabled</literal> &mdash; if true the <literal>SelectItem</literal> will be rendered disabled. Can reference the <literal>var</literal> variable
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>noSelectionLabel</literal> &mdash; specifies the (optional) label to place at the top of list (if <literal>required="true"</literal> is also specified then selecting this value will cause a validation error)
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>hideNoSelectionLabel</literal> &mdash; if true, the <literal>noSelectionLabel</literal> will be hidden when a value is selected
+								</para>
+							</listitem>
+						</itemizedlist>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+						<para>
+<programlisting>
+
+&lt;h:selectOneMenu value="#{person.age}"  converter="#{converters.ageConverter}"&gt;
+    &lt;s:selectItems value="#{ages}" var="age" label="#{age}" /&gt;
+&lt;/h:selectOneMenu&gt;
+</programlisting>
+						</para>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:graphicImage&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							An extended <literal>&lt;h:graphicImage&gt;</literal> that allows the image to be created in a Seam Component; further transforms can be applied to the image. <emphasis>Facelets only.</emphasis>
+						</para>
+						<para>
+							All attributes for <literal>&lt;h:graphicImage&gt;</literal> are supported, as well as:
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<itemizedlist>
+							<listitem>
+								<para>
+									<literal>value</literal> &mdash; image to display. Can be a path <literal>String</literal> (loaded from the classpath), a <literal>byte[]</literal>, a <literal>java.io.File</literal>, a <literal>java.io.InputStream</literal> or a <literal>java.net.URL</literal>. Currently supported image formats are <literal>image/png</literal>, <literal>image/jpeg</literal> and <literal>image/gif</literal>.
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>fileName</literal> &mdash; if not specified the served image will have a generated file name. If you want to name your file, you should specify it here. This name should be unique
+								</para>
+							</listitem>
+						</itemizedlist>
+						<para>
+							<emphasis>Transformations</emphasis>
+						</para>
+						<para>
+							To apply a transform to the image, you would nest a tag specifying the transform to apply. Seam currently supports these transforms:
+						</para>
+						<variablelist>
+							<varlistentry>
+								<term><literal>&lt;s:transformImageSize&gt;</literal></term>
+								<listitem>
+									<itemizedlist>
+										<listitem>
+											<para>
+												<literal>width</literal> &mdash; new width of the image
+											</para>
+										</listitem>
+										<listitem>
+											<para>
+												<literal>height</literal> &mdash; new height of the image
+											</para>
+										</listitem>
+										<listitem>
+											<para>
+												<literal>maintainRatio</literal> &mdash; if <literal>true</literal>, and <emphasis>one</emphasis> of <literal>width</literal>/<literal>height</literal> are specified, the image will be resized with the dimension not specified being calculated to maintain the aspect ratio.
+											</para>
+										</listitem>
+										<listitem>
+											<para>
+												<literal>factor</literal> &mdash; scale the image by the given factor
+											</para>
+										</listitem>
+									</itemizedlist>
+								</listitem>
+							</varlistentry>
+							<varlistentry>
+								<term><literal>&lt;s:transformImageBlur&gt;</literal></term>
+								<listitem>
+									<itemizedlist>
+										<listitem>
+											<para>
+												<literal>radius</literal> &mdash; perform a convolution blur with the given radius
+											</para>
+										</listitem>
+									</itemizedlist>
+								</listitem>
+							</varlistentry>
+							<varlistentry>
+								<term><literal>&lt;s:transformImageType&gt;</literal></term>
+								<listitem>
+									<itemizedlist>
+										<listitem>
+											<para>
+												<literal>contentType</literal> &mdash; alter the type of the image to either <literal>image/jpeg</literal> or <literal>image/png</literal>
+											</para>
+										</listitem>
+									</itemizedlist>
+								</listitem>
+							</varlistentry>
+						</variablelist>
+						<para>
+							It is easy to create your own transform - create a <literal>UIComponent</literal> which <literal>implements</literal><literal>org.jboss.seam.ui.graphicImage.ImageTransform</literal>. Inside the <literal>applyTransform()</literal>method use <literal>image.getBufferedImage()</literal> to get the original image and <literal>image.setBufferedImage()</literal> to set your transformed image. Transforms are applied in the order specified in the view.
+						</para>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+						<para>
+<programlisting></programlisting>
+						</para>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:decorate&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							"Decorate" a JSF input field when validation fails or when <literal>required="true"</literal> is set.
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<para>
+							None.
+						</para>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+						<para>
+<programlisting></programlisting>
+						</para>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:layoutForm&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							A layout component for producing a "standard" form layout. Each child component will be treated as a row, and if the child is a <literal>&lt;s:decorate&gt;</literal>, additional formatting will be applied: <itemizedlist>
+								<listitem>
+									<para>
+										Label &mdash; if a <literal>label</literal> facet is on the <literal>&lt;s:decorate&gt;</literal> then it&#39;s contents will be used as the label for this field. The labels are rendered right-aligned in a column
+									</para>
+									<para>
+										Some further decoration facets are supported - <literal>beforeLabel</literal>, <literal>afterLabel</literal>, <literal>aroundLabel</literal>, <literal>beforeInvalidLabel</literal>, <literal>afterInvalidLabel</literal> and <literal>aroundInvalidLabel</literal>.
+									</para>
+								</listitem>
+								<listitem>
+									<para>
+										Other text &mdash; if a <literal>belowLabel</literal> facet or/and a <literal>belowField</literal> facet are present on <literal>&lt;s:decorate&gt;</literal> then it&#39;s contents will be placed below the label or the field
+									</para>
+								</listitem>
+								<listitem>
+									<para>
+										Required &mdash; if <literal>required="true"</literal> is set on the field, then the <literal>aroundRequiredField</literal>, <literal>beforeRequiredField</literal>, <literal>afterRequiredField</literal>, <literal>aroundRequiredLabel</literal>, <literal>beforeRequiredLabel</literal> and <literal>afterRequiredLabel</literal> will be applied.
+									</para>
+								</listitem>
+							</itemizedlist>
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<para>
+							None.
+						</para>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+						<para>
+<programlisting>
+&lt;s:layoutForm&gt;
+   &lt;f:facet name="aroundInvalidField"&gt;
+       &lt;s:span styleClass="error"/&gt;
+   &lt;/f:facet&gt;
+   &lt;f:facet name="afterInvalidField"&gt;
+       &lt;s:message /&gt;
+   &lt;/f:facet&gt;
+   &lt;f:facet name="beforeRequiredLabel"&gt;
+   	&lt;s:span&gt;&lowast;&lt;/s:span&gt;
+   &lt;/f:facet&gt;
+   &lt;f:facet name="aroundLabel"&gt;
+   	&lt;s:span style="text-align:right;" /&gt;
+   &lt;/f:facet&gt;
+   &lt;f:facet name="aroundInvalidLabel"&gt;
+   	&lt;s:span style="text-align:right;" styleClass="error" /&gt;
+   &lt;/f:facet&gt;
+   &lt;s:decorate&gt;
+        &lt;f:facet name="label"&gt;
+		    &lt;h:outputText value="Name" /&gt;
+        &lt;/f:facet&gt;
+        &lt;h:inputText value="#{person.name}" required="true"/&gt;
+        &lt;f:facet name="belowField"&gt;
+            &lt;h:outputText styleClass="help" 
+               value="Enter your name as it appears 
+                  on your passport" /&gt;
+        &lt;/f:facet&gt;
+    &lt;/s:decorate&gt;
+&lt;/s:layoutForm&gt;
+</programlisting>
+						</para>
+						<mediaobject>
+							<imageobject role="fo">
+								<imagedata fileref="images/layoutForm-example.png" />
+							</imageobject>
+						<!--	<imageobject role="html">
+								<imagedata fileref="../shared/images/layoutForm-example.png" />
+							</imageobject> -->
+						</mediaobject>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:message&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							"Decorate" a JSF input field with the validation error message.
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<para>
+							None.
+						</para>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+						<para>
+<programlisting></programlisting>
+						</para>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:span&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							Render a HTML <literal>&lt;span&gt;</literal>.
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<para>
+							None.
+						</para>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+						<para>
+<programlisting></programlisting>
+						</para>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:div&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							Render a HTML <literal>&lt;div&gt;</literal>.
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<para>
+							None.
+						</para>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+						<para>
+<programlisting></programlisting>
+						</para>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:fragment&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							A non-rendering component useful for enabling/disabling rendering of it's children.
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<para>
+							None.
+						</para>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+						<para>
+<programlisting></programlisting>
+						</para>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:cache&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							Cache the rendered page fragment using JBoss Cache. Note that <literal>&lt;s:cache&gt;</literal> actually uses the instance of JBoss Cache managed by the built-in <literal>pojoCache</literal> component.
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<itemizedlist>
+							<listitem>
+								<para>
+									<literal>key</literal> &mdash; the key to cache rendered content, often a value expression. For example, if we were caching a page fragment that displays a document, we might use <literal>key="Document-#{document.id}"</literal>.
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>enabled</literal> &mdash; a value expression that determines if the cache should be used.
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>region</literal> &mdash; a JBoss Cache node to use (different nodes can have different expiry policies).
+								</para>
+							</listitem>
+						</itemizedlist>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+						<para>
+<programlisting></programlisting>
+						</para>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:link&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							A link that supports invocation of an action with control over conversation propagation. <emphasis>Does not submit the form.</emphasis>
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<itemizedlist>
+							<listitem>
+								<para>
+									<literal>value</literal> &mdash; the label.
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>action</literal> &mdash; a method binding that specified the action listener.
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>view</literal> &mdash; the JSF view id to link to.
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>fragment</literal> &mdash; the fragment identifier to link to.
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>disabled</literal> &mdash; is the link disabled?
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>propagation</literal> &mdash; determines the conversation propagation style: <literal>begin</literal>, <literal>join</literal>, <literal>nest</literal>, <literal>none</literal> or <literal>end</literal>.
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>pageflow</literal> &mdash; a pageflow definition to begin. (This is only useful when <literal>propagation="begin"</literal> or <literal>propagation="join"</literal>.)
+								</para>
+							</listitem>
+						</itemizedlist>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+						<para>
+<programlisting></programlisting>
+						</para>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:button&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							A button that supports invocation of an action with control over conversation propagation. <emphasis>Does not submit the form.</emphasis>
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<itemizedlist>
+							<listitem>
+								<para>
+									<literal>value</literal> &mdash; the label.
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>action</literal> &mdash; a method binding that specified the action listener.
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>view</literal> &mdash; the JSF view id to link to.
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>fragment</literal> &mdash; the fragment identifier to link to.
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>disabled</literal> &mdash; is the link disabled?
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>propagation</literal> &mdash; determines the conversation propagation style: <literal>begin</literal>, <literal>join</literal>, <literal>nest</literal>, <literal>none</literal> or <literal>end</literal>.
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>pageflow</literal> &mdash; a pageflow definition to begin. (This is only useful when <literal>propagation="begin"</literal> or <literal>propagation="join"</literal>.)
+								</para>
+							</listitem>
+						</itemizedlist>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+						<para>
+<programlisting></programlisting>
+						</para>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:selectDate&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							Displays a dynamic date picker component that selects a date for the specified input field. The body of the <literal>selectDate</literal> element should contain HTML elements, such as text or an image, that prompt the user to click to display the date picker. The date picker <emphasis>must</emphasis> be styled using CSS. An example CSS file can be found in the Seam booking demo as <literal>date.css</literal>, or can be generated using seam-gen. The CSS styles used to control the appearance of the date picker are also described below.
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<itemizedlist>
+							<listitem>
+								<para>
+									<literal>for</literal> &mdash; The id of the input field that the date picker will insert the selected date into.
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>dateFormat</literal> &mdash; The date format string. This should match the date format of the input field.
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>startYear</literal> &mdash; The popup year selector range will start at this year.
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>endYear</literal> &mdash; The popup year selector range will end at this year.
+								</para>
+							</listitem>
+						</itemizedlist>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+						<para>
+<programlisting>
+  &lt;div class="row"&gt;
+    &lt;h:outputLabel for="dob"&gt;Date of birth&lt;em&gt;*&lt;/em&gt;&lt;/h:outputLabel&gt;
+    &lt;h:inputText id="dob" value="#{user.dob}" required="true"&gt;
+      &lt;s:convertDateTime pattern="MM/dd/yyyy"/&gt;
+    &lt;/h:inputText&gt;
+    &lt;s:selectDate for="dob" startYear="1910" endYear="2007"&gt;&lt;img src="img/datepicker.png"/&gt;&lt;/s:selectDate&gt;
+    &lt;div class="validationError"&gt;&lt;h:message for="dob"/&gt;&lt;/div&gt;
+  &lt;/div&gt;           
+</programlisting>
+						</para>
+						<para>
+							<emphasis>Example</emphasis>
+						</para>
+						<mediaobject>
+							<imageobject role="fo">
+								<imagedata align="center" fileref="images/controls-selectdate.png" />
+							</imageobject>
+						<!--	<imageobject role="html">
+								<imagedata align="center" fileref="../shared/images/controls-selectdate.png" />
+							</imageobject> -->
+						</mediaobject>
+						<para>
+							<emphasis>CSS Styling</emphasis>
+						</para>
+						<para>
+							The following list describes the CSS class names that are used to control the style of the selectDate control.
+						</para>
+						<itemizedlist>
+							<listitem>
+								<para>
+									<literal>seam-date</literal> &mdash; This class is applied to the outer <literal>div</literal> containing the popup calendar. (1) It is also applied to the <literal>table</literal> that controls the inner layout of the calendar. (2)
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>seam-date-header</literal> &mdash; This class is applied to the calendar header table row (<literal>tr</literal>) and header table cells (<literal>td</literal>). (3)
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>seam-date-header-prevMonth</literal> &mdash; This class is applied to the "previous month" table cell, (<literal>td</literal>), which when clicked causes the calendar to display the month prior to the one currently displayed. (4)
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>seam-date-header-nextMonth</literal> &mdash; This class is applied to the "next month" table cell, (<literal>td</literal>), which when clicked causes the calendar to display the month following the one currently displayed. (5)
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>seam-date-headerDays</literal> &mdash; This class is applied to the calendar days header row (<literal>tr</literal>), which contains the names of the week days. (6)
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>seam-date-footer</literal> &mdash; This class is applied to the calendar footer row (<literal>tr</literal>), which displays the current date. (7)
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>seam-date-inMonth</literal> &mdash; This class is applied to the table cell (<literal>td</literal>) elements that contain a date within the month currently displayed. (8)
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>seam-date-outMonth</literal> &mdash; This class is applied to the table cell (<literal>td</literal>) elements that contain a date outside of the month currently displayed. (9)
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>seam-date-selected</literal> &mdash; This class is applied to the table cell (<literal>td</literal>) element that contains the currently selected date. (10)
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>seam-date-dayOff-inMonth</literal> &mdash; This class is applied to the table cell (<literal>td</literal>) elements that contain a "day off" date (i.e. weekend days, Saturday and Sunday) within the currently selected month. (11)
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>seam-date-dayOff-outMonth</literal> &mdash; This class is applied to the table cell (<literal>td</literal>) elements that contain a "day off" date (i.e. weekend days, Saturday and Sunday) outside of the currently selected month. (12)
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>seam-date-hover</literal> &mdash; This class is applied to the table cell (<literal>td</literal>) element over which the cursor is hovering. (13)
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>seam-date-monthNames</literal> &mdash; This class is applied to the <literal>div</literal> control that contains the popup month selector. (14)
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>seam-date-monthNameLink</literal> &mdash; This class is applied to the anchor (<literal>a</literal>) controls that contain the popup month names. (15)
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>seam-date-years </literal> &mdash; This class is applied to the <literal>div</literal> control that contains the popup year selector. (16)
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>seam-date-yearLink</literal> &mdash; This class is applied to the anchor (<literal>a</literal>) controls that contain the popup years. (15)
+								</para>
+							</listitem>
+						</itemizedlist>
+						<mediaobject>
+							<imageobject role="fo">
+								<imagedata align="center" fileref="images/controls-selectdatecss.png" />
+							</imageobject>
+						<!--	<imageobject role="html">
+								<imagedata align="center" fileref="../shared/images/controls-selectdatecss.png" />
+							</imageobject> -->
+						</mediaobject>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:conversationPropagation&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							Customize the conversation propagation for a command link or button (or similar JSF control). <emphasis>Facelets only.</emphasis>
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<itemizedlist>
+							<listitem>
+								<para>
+									<literal>propagation</literal> &mdash; determines the conversation propagation style: <literal>begin</literal>, <literal>join</literal>, <literal>nest</literal>, <literal>none</literal> or <literal>end</literal>.
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>pageflow</literal> &mdash; a pageflow definition to begin. (This is only useful when <literal>propagation="begin"</literal> or <literal>propagation="join"</literal>.)
+								</para>
+							</listitem>
+						</itemizedlist>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+						<para>
+<programlisting></programlisting>
+						</para>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:conversationId&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							Add the conversation id to an output link (or similar JSF control). <emphasis>Facelets only.</emphasis>
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<para>
+							None.
+						</para>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+						<para>
+<programlisting></programlisting>
+						</para>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:taskId&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							Add the task id to an output link (or similar JSF control), when the task is available via <literal>#{task}</literal>. <emphasis>Facelets only.</emphasis>
+						</para>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<para>
+							None.
+						</para>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+						<para>
+<programlisting></programlisting>
+						</para>
+					</entry>
+				</row>
+				<row>
+					<entry valign="top">
+						<para>
+							<literal>&lt;s:fileUpload&gt;</literal>
+						</para>
+					</entry>
+					<entry valign="top">
+						<para>
+							<emphasis>Description</emphasis>
+						</para>
+						<para>
+							Renders a file upload control. This control must be used within a form with an encoding type of <literal>multipart/form-data</literal>, i.e:
+						</para>
+<programlisting>
+                       
+        &lt;h:form enctype="multipart/form-data"&gt;
+                       
+                     
+</programlisting>
+						<para>
+							For multipart requests, the Seam Multipart servlet filter must also be configured in <literal>web.xml</literal>:
+						</para>
+<programlisting>
+                       
+  &lt;filter&gt;
+    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;
+    &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-class&gt;
+  &lt;/filter&gt;
+
+  &lt;filter-mapping&gt;
+    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;
+    &lt;url-pattern&gt;/*&lt;/url-pattern&gt;
+  &lt;/filter-mapping&gt;
+                       
+                     
+</programlisting>
+						<para>
+							<emphasis>Configuration</emphasis>
+						</para>
+						<para>
+							The following configuration options for multipart requests may be configured in components.xml:
+						</para>
+						<itemizedlist>
+							<listitem>
+								<para>
+									<literal>createTempFiles</literal> &mdash; if this option is set to true, uploaded files are streamed to a temporary file instead of in memory.
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>maxRequestSize</literal> &mdash; the maximum size of a file upload request, in bytes.
+								</para>
+							</listitem>
+						</itemizedlist>
+						<para>
+							Here&#39;s an example:
+						</para>
+<programlisting>
+                       
+  &lt;component class="org.jboss.seam.web.MultipartFilter"&gt;
+      &lt;property name="createTempFiles"&gt;true&lt;/property&gt;
+      &lt;property name="maxRequestSize"&gt;1000000&lt;/property&gt;
+  &lt;/component&gt;
+                       
+                     
+</programlisting>
+						<para>
+							<emphasis>Attributes</emphasis>
+						</para>
+						<itemizedlist>
+							<listitem>
+								<para>
+									<literal>data</literal> &mdash; this value binding receives the binary file data. The receiving field should be declared as a <literal>byte[]</literal> or <literal>InputStream</literal> (required).
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>contentType</literal> &mdash; this value binding receives the file&#39;s content type (optional).
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>fileName</literal> &mdash; this value binding receives the filename (optional).
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>accept</literal> &mdash; a comma-separated list of content types to accept, may not be supported by the browser. E.g. <literal>"images/png,images/jpg"</literal>, <literal>"images/*"</literal>.
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>style</literal> &mdash; The control&#39;s style
+								</para>
+							</listitem>
+							<listitem>
+								<para>
+									<literal>styleClass</literal> &mdash; The control&#39;s style class
+								</para>
+							</listitem>
+						</itemizedlist>
+						<para>
+							<emphasis>Usage</emphasis>
+						</para>
+						<para>
+<programlisting></programlisting>
+						</para>
+					</entry>
+				</row>
+			</tbody>
+		</tgroup>
+	</table>
+</chapter>
+


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Controls.xml
___________________________________________________________________
Name: svn:executable
   + *

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Conversations.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Conversations.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Conversations.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,585 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Seam_Reference_Guide-Conversations_and_workspace_management">
+	<title>Conversations and workspace management</title>
+	<para>
+		It is time to understand Seam&#39;s conversation model in more detail.
+	</para>
+<!--	<para>
+		Historically, the notion of a Seam <emphasis>conversation</emphasis> came about as a merger of three different ideas:
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				The idea of a <emphasis>workspace</emphasis>, which I encountered in a project for the Victorian government in 2002. In this project I was forced to implement workspace management on top of Struts, an experience I pray never to repeat.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				The idea of an <emphasis>application transaction</emphasis> with optimistic semantics, and the realization that existing frameworks based around a stateless architecture could not provide effective management of extended persistence contexts. (The Hibernate team is truly fed up with copping the blame for <literal>LazyInitializationException</literal>s, which are not really Hibernate&#39;s fault, but rather the fault of the extremely limiting persistence context model supported by stateless architectures such as the Spring framework or the traditional <emphasis>stateless session facade</emphasis> (anti)pattern in J2EE.)
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				The idea of a workflow <emphasis>task</emphasis>.
+			</para>
+		</listitem>
+	</itemizedlist>
+	<para>
+		By unifying these ideas and providing deep support in the framework, we have a powerful construct that lets us build richer and more efficient applications with less code than before.
+	</para> -->
+	<section id="Seam_Reference_Guide-Conversations_and_workspace_management-Seams_conversation_model">
+		<title>Seam&#39;s conversation model</title>
+		<para>
+			The examples we have seen so far make use of a very simple conversation model that follows these rules:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					There is always a conversation context active during the apply request values, process validations, update model values, invoke application and render response phases of the JSF request lifecycle.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					At the end of the restore view phase of the JSF request lifecycle, Seam attempts to restore any previous long-running conversation context. If none exists, Seam creates a new temporary conversation context.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					When an <literal>@Begin</literal> method is encountered, the temporary conversation context is promoted to a long running conversation.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					When an <literal>@End</literal> method is encountered, any long-running conversation context is demoted to a temporary conversation.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					At the end of the render response phase of the JSF request lifecycle, Seam stores the contents of a long running conversation context or destroys the contents of a temporary conversation context.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					Any faces request (a JSF postback) will propagate the conversation context. By default, non-faces requests (GET requests, for example) do not propagate the conversation context, but see below for more information on this.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					If the JSF request lifecycle is foreshortened by a redirect, Seam transparently stores and restores the current conversation context&mdash;unless the conversation was already ended via <literal>@End(beforeRedirect=true)</literal>.
+				</para>
+			</listitem>
+		</itemizedlist>
+		<para>
+			Seam transparently propagates the conversation context across JSF postbacks and redirects. If you do not do anything special, a <emphasis>non-faces request</emphasis> (a GET request for example) will not propagate the conversation context and will be processed in a new temporary conversation. This is usually - but not always - the desired behavior.
+		</para>
+		<para>
+			If you want to propagate a Seam conversation across a non-faces request, you need to explicitly code the Seam <emphasis>conversation id</emphasis> as a request parameter:
+		</para>
+<programlisting>&lt;a href="main.jsf?conversationId=#{conversation.id}"&gt;Continue&lt;/a&gt;</programlisting>
+		<para>
+			Or, the more JSF-ish:
+		</para>
+<programlisting>&lt;h:outputLink value="main.jsf"&gt;
+    &lt;f:param name="conversationId" value="#{conversation.id}"/&gt;
+    &lt;h:outputText value="Continue"/&gt;
+&lt;/h:outputLink&gt;
+</programlisting>
+		<para>
+			If you use the Seam tag library, this is equivalent:
+		</para>
+<programlisting>&lt;h:outputLink value="main.jsf"&gt;
+    &lt;s:conversationId/&gt;
+    &lt;h:outputText value="Continue"/&gt;
+&lt;/h:outputLink&gt;
+</programlisting>
+		<para>
+			If you wish to disable propagation of the conversation context for a postback, a similar trick is used:
+		</para>
+<programlisting>&lt;h:commandLink action="main" value="Exit"&gt;
+    &lt;f:param name="conversationPropagation" value="none"/&gt;
+&lt;/h:commandLink&gt;
+</programlisting>
+		<para>
+			If you use the Seam tag library, this is equivalent:
+		</para>
+<programlisting>&lt;h:commandLink action="main" value="Exit"&gt;
+    &lt;s:conversationPropagation type="none"/&gt;
+&lt;/h:commandLink&gt;
+</programlisting>
+		<para>
+			Note that disabling conversation context propagation is absolutely not the same thing as ending the conversation.
+		</para>
+		<para>
+			The <literal>conversationPropagation</literal> request parameter, or the <literal>&lt;s:conversationPropagation&gt;</literal> tag may even be used to begin and end conversation, or begin a nested conversation.
+		</para>
+<programlisting>&lt;h:commandLink action="main" value="Exit"&gt;
+    &lt;s:conversationPropagation type="end"/&gt;
+&lt;/h:commandLink&gt;
+</programlisting>
+<programlisting>&lt;h:commandLink action="main" value="Select Child"&gt;
+    &lt;s:conversationPropagation type="nested"/&gt;
+&lt;/h:commandLink&gt;
+</programlisting>
+<programlisting>&lt;h:commandLink action="main" value="Select Hotel"&gt;
+    &lt;s:conversationPropagation type="begin"/&gt;
+&lt;/h:commandLink&gt;
+</programlisting>
+<programlisting>&lt;h:commandLink action="main" value="Select Hotel"&gt;
+    &lt;s:conversationPropagation type="join"/&gt;
+&lt;/h:commandLink&gt;
+</programlisting>
+		<para>
+			This conversation model makes it easy to build applications which behave correctly with respect to multi-window operation. For many applications, this is all that is needed. Some complex applications have either or both of the following additional requirements:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					A conversation spans many smaller units of user interaction, which execute serially or even concurrently. The smaller <emphasis>nested conversations</emphasis> have their own isolated set of conversation state, and also have access to the state of the outer conversation.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					The user is able to switch between many conversations within the same browser window. This feature is called <emphasis>workspace management</emphasis>.
+				</para>
+			</listitem>
+		</itemizedlist>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Conversations_and_workspace_management-Nested_conversations">
+		<title>Nested conversations</title>
+		<para>
+			A nested conversation is created by invoking a method marked <literal>@Begin(nested=true)</literal> inside the scope of an existing conversation. A nested conversation has its own conversation context, and also has read-only access to the context of the outer conversation. (It can read the outer conversation&#39;s context variables, but not write to them.) When an <literal>@End</literal> is subsequently encountered, the nested conversation will be destroyed, and the outer conversation will resume, by <emphasis>popping</emphasis> the conversation stack. Conversations may be nested to any arbitrary depth.
+		</para>
+		<para>
+			Certain user activity (workspace management, or the back button) can cause the outer conversation to be resumed before the inner conversation is ended. In this case it is possible to have multiple concurrent nested conversations belonging to the same outer conversation. If the outer conversation ends before a nested conversation ends, Seam destroys all nested conversation contexts along with the outer context.
+		</para>
+		<para>
+			A conversation may be thought of as a <emphasis>continuable state</emphasis>. Nested conversations allow the application to capture a consistent continuable state at various points in a user interaction, thus insuring truly correct behavior in the face of backbuttoning and workspace management.
+		</para>
+	   <!-- <para>
+			TODO: an example to show how a nested conversation prevents bad stuff happening when you backbutton.
+		</para> -->
+		<para> 
+			Usually, if a component exists in a parent conversation of the current nested conversation, the nested conversation will use the same instance. Occasionally, it is useful to have a different instance in each nested conversation, so that the component instance that exists in the parent conversation is invisible to its child conversations. You can achieve this behavior by annotating the component <literal>@PerNestedConversation</literal>.
+		</para>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Conversations_and_workspace_management-Starting_conversations_with_GET_requests">
+		<title>Starting conversations with GET requests</title>
+		<para>
+			JSF does not define any kind of action listener that is triggered when a page is accessed via a non-faces request (for example, a HTTP GET request). This can occur if the user bookmarks the page, or if we navigate to the page via an <literal>&lt;h:outputLink&gt;</literal>.
+		</para>
+		<para>
+			Sometimes we want to begin a conversation immediately the page is accessed. Since there is no JSF action method, we can&#39;t solve the problem in the usual way, by annotating the action with <literal>@Begin</literal>.
+		</para>
+		<para>
+			A further problem arises if the page needs some state to be fetched into a context variable. We have already seen two ways to solve this problem. If that state is held in a Seam component, we can fetch the state in a <literal>@Create</literal> method. If not, we can define a <literal>@Factory</literal> method for the context variable.
+		</para>
+		<para>
+			If none of these options works for you, Seam lets you define a <emphasis>page action</emphasis> in the <literal>pages.xml</literal> file.
+		</para>
+<programlisting>&lt;pages&gt;
+    &lt;page view-id="/messageList.jsp" action="#{messageManager.list}"/&gt;
+    ...
+&lt;/pages&gt;
+</programlisting>
+		<para>
+			This action method is called at the beginning of the render response phase, any time the page is about to be rendered. If a page action returns a non-null outcome, Seam will process any appropriate JSF and Seam navigation rules, possibly resulting in a completely different page being rendered.
+		</para>
+		<para>
+			If <emphasis>all</emphasis> you want to do before rendering the page is begin a conversation, you could use a built-in action method that does just that:
+		</para>
+<programlisting>&lt;pages&gt;
+    &lt;page view-id="/messageList.jsp" action="#{conversation.begin}"/&gt;
+    ...
+&lt;/pages&gt;
+</programlisting>
+		<para>
+			Note that you can also call this built-in action from a JSF control, and, similarly, you can use <literal>#{conversation.end}</literal> to end conversations.
+		</para>
+		<para>
+			If you want more control, to join existing conversations or begin a nested conversion, to begin a pageflow or an atomic conversation, you should use the <literal>&lt;begin-conversation&gt;</literal> element.
+		</para>
+<programlisting>&lt;pages&gt;
+    &lt;page view-id="/messageList.jsp"&gt;
+       &lt;begin-conversation nested="true" pageflow="AddItem"/&gt;
+    &lt;page&gt;
+    ...
+&lt;/pages&gt;
+</programlisting>
+		<para>
+			There is also an <literal>&lt;end-conversation&gt;</literal> element.
+		</para>
+<programlisting>&lt;pages&gt;
+    &lt;page view-id="/home.jsp"&gt;
+       &lt;end-conversation/&gt;
+    &lt;page&gt;
+    ...
+&lt;/pages&gt;
+</programlisting>
+		<para>
+			To solve the first problem, we now have five options:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					Annotate the <literal>@Create</literal> method with <literal>@Begin</literal>
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					Annotate the <literal>@Factory</literal> method with <literal>@Begin</literal>
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					Annotate the Seam page action method with <literal>@Begin</literal>
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					Use <literal>&lt;begin-conversation&gt;</literal> in <literal>pages.xml</literal>.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					Use <literal>#{conversation.begin}</literal> as the Seam page action method
+				</para>
+			</listitem>
+		</itemizedlist>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Conversations_and_workspace_management-Using_slink_and_sbutton">
+		<title>Using <literal>&lt;s:link&gt;</literal> and <literal>&lt;s:button&gt;</literal></title>
+		<para>
+			JSF command links always perform a form submission via JavaScript, which breaks the web browser&#39;s "open in new window" or "open in new tab" feature. In plain JSF, you need to use an <literal>&lt;h:outputLink&gt;</literal> if you need this functionality. But there are two major limitations to <literal>&lt;h:outputLink&gt;</literal>.
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					JSF provides no way to attach an action listener to an <literal>&lt;h:outputLink&gt;</literal>.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					JSF does not propagate the selected row of a <literal>DataModel</literal> since there is no actual form submission.
+				</para>
+			</listitem>
+		</itemizedlist>
+		<para>
+			Seam provides the notion of a <emphasis>page action</emphasis> to help solve the first problem, but this does nothing to help us with the second problem. We <emphasis>could</emphasis> work around this by using the RESTful approach of passing a request parameter and requerying for the selected object on the server side. In some cases&mdash;such as the Seam blog example application&mdash;this is indeed the best approach. The RESTful style supports bookmarking, since it does not require server-side state. In other cases, where we don&#39;t care about bookmarks, the use of <literal>@DataModel</literal> and <literal>@DataModelSelection</literal> is just so convenient and transparent!
+		</para>
+		<para>
+			To fill in this missing functionality, and to make conversation propagation even simpler to manage, Seam provides the <literal>&lt;s:link&gt;</literal> JSF tag.
+		</para>
+		<para>
+			The link may specify just the JSF view id:
+		</para>
+<programlisting>&lt;s:link view=“/login.xhtml” value=“Login”/&gt;</programlisting>
+		<para>
+			Or, it may specify an action method (in which case the action outcome determines the page that results):
+		</para>
+<programlisting>&lt;s:link action=“#{login.logout}” value=“Logout”/&gt;</programlisting>
+		<para>
+			If you specify <emphasis>both</emphasis> a JSF view id and an action method, the &#39;view&#39; will be used <emphasis>unless</emphasis> the action method returns a non-null outcome:
+		</para>
+<programlisting>&lt;s:link view="/loggedOut.xhtml"  action=“#{login.logout}” value=“Logout”/&gt;</programlisting>
+		<para>
+			The link automatically propagates the selected row of a <literal>DataModel</literal> using inside <literal>&lt;h:dataTable&gt;</literal>:
+		</para>
+<programlisting>&lt;s:link view=“/hotel.xhtml” action=“#{hotelSearch.selectHotel}” value=“#{hotel.name}”/&gt;</programlisting>
+		<para>
+			You can leave the scope of an existing conversation:
+		</para>
+<programlisting>&lt;s:link view=“/main.xhtml” propagation=“none”/&gt;</programlisting>
+		<para>
+			You can begin, end, or nest conversations:
+		</para>
+<programlisting>&lt;s:link action=“#{issueEditor.viewComment}” propagation=“nest”/&gt;</programlisting>
+		<para>
+			If the link begins a conversation, you can even specify a pageflow to be used:
+		</para>
+<programlisting>&lt;s:link action=“#{documentEditor.getDocument}” propagation=“begin” 
+        pageflow=“EditDocument”/&gt;
+</programlisting>
+		<para>
+			The <literal>taskInstance</literal> attribute if for use in jBPM task lists:
+		</para>
+<programlisting>&lt;s:link action=“#{documentApproval.approveOrReject}” taskInstance=“#{task}”/&gt;</programlisting>
+		<para>
+			(See the DVD Store demo application for examples of this.)
+		</para>
+		<para>
+			Finally, if you need the <emphasis>link</emphasis> to be rendered as a button, use <literal>&lt;s:button&gt;</literal>:
+		</para>
+<programlisting>&lt;s:button action=“#{login.logout}” value=“Logout”/&gt;</programlisting>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Conversations_and_workspace_management-Success_messages">
+		<title>Success messages</title>
+		<para>
+			It is quite common to display a message to the user indicating success or failure of an action. It is convenient to use a JSF <literal>FacesMessage</literal> for this. Unfortunately, a successful action often requires a browser redirect, and JSF does not propagate faces messages across redirects. This makes it quite difficult to display success messages in plain JSF.
+		</para>
+		<para>
+			The built in conversation-scoped Seam component named <literal>facesMessages</literal> solves this problem. (You must have the Seam redirect filter installed.)
+		</para>
+<programlisting>@Name("editDocumentAction")
+ at Stateless
+public class EditDocumentBean implements EditDocument {
+    @In EntityManager em;
+    @In Document document;
+    @In FacesMessages facesMessages;
+    
+    public String update() {
+        em.merge(document);
+        facesMessages.add("Document updated");
+    }
+}
+</programlisting>
+		<para>
+			Any message added to <literal>facesMessages</literal> is used in the very next render response phase for the current conversation. This even works when there is no long-running conversation since Seam preserves even temporary conversation contexts across redirects.
+		</para>
+		<para>
+			You can even include JSF EL expressions in a faces message summary:
+		</para>
+<programlisting>facesMessages.add("Document #{document.title} was updated");</programlisting>
+		<para>
+			You may display the messages in the usual way, for example:
+		</para>
+<programlisting>&lt;h:messages globalOnly="true"/&gt;</programlisting>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Conversations_and_workspace_management-Using_an_explicit_conversation_id">
+		<title>Using an <emphasis>explicit</emphasis> conversation ID</title>
+		<para>
+			Ordinarily, Seam generates a meaningless unique ID for each conversation in each session. You can customize the id value when you begin the conversation.
+		</para>
+		<para>
+			This feature can be used to customize the conversation id generation algorithm like so:
+		</para>
+<programlisting>@Begin(id="#{myConversationIdGenerator.nextId}") 
+public void editHotel() { ... }
+</programlisting>
+		<para>
+			Or it can be used to assign a meaningful conversation id:
+		</para>
+<programlisting>@Begin(id="hotel#{hotel.id}") 
+public String editHotel() { ... }
+</programlisting>
+<programlisting>@Begin(id="hotel#{hotelsDataModel.rowData.id}") 
+public String selectHotel() { ... }
+</programlisting>
+<programlisting>@Begin(id="entry#{params[&#39;blogId&#39;]}")
+public String viewBlogEntry() { ... }
+</programlisting>
+<programlisting>@BeginTask(id="task#{taskInstance.id}") 
+public String approveDocument() { ... }
+</programlisting>
+		<para>
+			Clearly, these example result in the same conversation id every time a particular hotel, blog or task is selected. So what happens if a conversation with the same conversation id already exists when the new conversation begins? Well, Seam detects the existing conversation and redirects to that conversation without running the <literal>@Begin</literal> method again. This feature helps control the number of workspaces that are created when using workspace management.
+		</para>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Conversations_and_workspace_management-Workspace_management">
+		<title>Workspace management</title>
+		<para>
+			Workspace management is the ability to <emphasis>switch</emphasis> conversations in a single window. Seam makes workspace management completely transparent at the level of the Java code. To enable workspace management, all you need to do is:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					Provide <emphasis>description</emphasis> text for each view ID (when using JSF or Seam navigation rules) or page node (when using jPDL pageflows). This description text is displayed to the user by the workspace switchers.
+				</para>
+			</listitem>
+			<listitem>
+				<para>Include one or more of the standard workspace switcher JSP or facelets fragments in your pages. The standard fragments support workspace management via a drop down menu, a list of conversations, or breadcrumbs.
+				</para>
+			</listitem>
+		</itemizedlist>
+		<section id="Seam_Reference_Guide-Workspace_management-Workspace_management_and_JSF_navigation">
+			<title>Workspace management and JSF navigation</title>
+			<para>
+				When you use JSF or Seam navigation rules, Seam switches to a conversation by restoring the current <literal>view-id</literal> for that conversation. The descriptive text for the workspace is defined in a file called <literal>pages.xml</literal> that Seam expects to find in the <literal>WEB-INF</literal> directory, right next to <literal>faces-config.xml</literal>:
+			</para>
+<programlisting>&lt;pages&gt;
+    &lt;page view-id="/main.xhtml"&gt;Search hotels: #{hotelBooking.searchString}&lt;/page&gt;
+    &lt;page view-id="/hotel.xhtml"&gt;View hotel: #{hotel.name}&lt;/page&gt;
+    &lt;page view-id="/book.xhtml"&gt;Book hotel: #{hotel.name}&lt;/page&gt;
+    &lt;page view-id="/confirm.xhtml"&gt;Confirm: #{booking.description}&lt;/page&gt;
+&lt;/pages&gt;
+</programlisting>
+<note>
+			<para>
+				Note that if this file is missing, the Seam application will continue to work perfectly, the only missing functionality will be the ability to switch workspaces.
+			</para>
+		</note>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Workspace_management-Workspace_management_and_jPDL_pageflow">
+			<title>Workspace management and jPDL pageflow</title>
+			<para>
+				When you use a jPDL pageflow definition, Seam switches to a conversation by restoring the current jBPM process state. This is a more flexible model since it allows the same <literal>view-id</literal> to have different descriptions depending upon the current <literal>&lt;page&gt;</literal> node. The description text is defined by the <literal>&lt;page&gt;</literal> node:
+			</para>
+<programlisting>&lt;pageflow-definition name="shopping"&gt;
+
+   &lt;start-state name="start"&gt;
+      &lt;transition to="browse"/&gt;
+   &lt;/start-state&gt;
+   
+   &lt;page name="browse" view-id="/browse.xhtml"&gt;
+      &lt;description&gt;DVD Search: #{search.searchPattern}&lt;/description&gt;
+      &lt;transition to="browse"/&gt;
+      &lt;transition name="checkout" to="checkout"/&gt;
+   &lt;/page&gt;
+   
+   &lt;page name="checkout" view-id="/checkout.xhtml"&gt;
+      &lt;description&gt;Purchase: $#{cart.total}&lt;/description&gt;
+      &lt;transition to="checkout"/&gt;
+      &lt;transition name="complete" to="complete"/&gt;
+   &lt;/page&gt;
+   
+   &lt;page name="complete" view-id="/complete.xhtml"&gt;
+      &lt;end-conversation /&gt;
+   &lt;/page&gt;
+   
+&lt;/pageflow-definition&gt;
+</programlisting>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Workspace_management-The_conversation_switcher">
+			<title>The conversation switcher</title>
+			<para>
+				Include the following fragment in your JSP or facelets page to get a drop-down menu that lets you switch to any current conversation, or to any other page of the application:
+			</para>
+<programlisting>&lt;h:selectOneMenu value="#{switcher.conversationIdOrOutcome}"&gt;
+    &lt;f:selectItem itemLabel="Find Issues" itemValue="findIssue"/&gt;
+    &lt;f:selectItem itemLabel="Create Issue" itemValue="editIssue"/&gt;
+    &lt;f:selectItems value="#{switcher.selectItems}"/&gt;
+&lt;/h:selectOneMenu&gt;
+&lt;h:commandButton action="#{switcher.select}" value="Switch"/&gt;
+</programlisting>
+			<para>
+				In this example, we have a menu that includes an item for each conversation, together with two additional items that let the user begin a new conversation.
+			</para>
+			<mediaobject>
+				<imageobject role="fo">
+					<imagedata align="center" fileref="images/switcher.png" />
+				</imageobject>
+			<!--	<imageobject role="html">
+					<imagedata align="center" fileref="../shared/images/switcher.png" />
+				</imageobject> -->
+			</mediaobject>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Workspace_management-The_conversation_list">
+			<title>The conversation list</title>
+			<para>
+				The conversation list is very similar to the conversation switcher, except that it is displayed as a table:
+			</para>
+<programlisting>&lt;h:dataTable value="#{conversationList}" var="entry"
+        rendered="#{not empty conversationList}"&gt;
+    &lt;h:column&gt;
+        &lt;f:facet name="header"&gt;Workspace&lt;/f:facet&gt;
+        &lt;h:commandLink action="#{entry.select}" value="#{entry.description}"/&gt;
+        &lt;h:outputText value="[current]" rendered="#{entry.current}"/&gt;
+    &lt;/h:column&gt;
+    &lt;h:column&gt;
+        &lt;f:facet name="header"&gt;Activity&lt;/f:facet&gt;
+        &lt;h:outputText value="#{entry.startDatetime}"&gt;
+            &lt;f:convertDateTime type="time" pattern="hh:mm a"/&gt;
+        &lt;/h:outputText&gt;
+        &lt;h:outputText value=" - "/&gt;
+        &lt;h:outputText value="#{entry.lastDatetime}"&gt;
+            &lt;f:convertDateTime type="time" pattern="hh:mm a"/&gt;
+        &lt;/h:outputText&gt;
+    &lt;/h:column&gt;
+    &lt;h:column&gt;
+        &lt;f:facet name="header"&gt;Action&lt;/f:facet&gt;
+        &lt;h:commandButton action="#{entry.select}" value="#{msg.Switch}"/&gt;
+        &lt;h:commandButton action="#{entry.destroy}" value="#{msg.Destroy}"/&gt;
+    &lt;/h:column&gt;
+&lt;/h:dataTable&gt;
+</programlisting>
+			<para>
+				We imagine that you will want to customize this for your own application.
+			</para>
+			<mediaobject>
+				<imageobject role="fo">
+					<imagedata align="center" fileref="images/list.png" />
+				</imageobject>
+			<!--	<imageobject role="html">
+					<imagedata align="center" fileref="../shared/images/list.png" />
+				</imageobject> -->
+			</mediaobject>
+			<para>
+				The conversation list is nice, but it takes up a lot of space on the page, so you probably do not want to put it on <emphasis>every</emphasis> page.
+			</para>
+			<para>
+				Notice that the conversation list lets the user destroy workspaces.
+			</para>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Workspace_management-Breadcrumbs">
+			<title>Breadcrumbs</title>
+			<para>
+				Breadcrumbs are useful in applications which use a nested conversation model. The breadcrumbs are a list of links to conversations in the current conversation stack:
+			</para>
+<programlisting>&lt;t:dataList value="#{conversationStack}" var="entry"&gt;
+    &lt;h:outputText value=" | "/&gt; 
+    &lt;h:commandLink value="#{entry.description}" action="#{entry.select}"/&gt;
+&lt;/t:dataList&gt;
+</programlisting>
+			<!--<para>
+				Notice that here we are using the MyFaces <literal>&lt;t:dataList&gt;</literal> component, since JSF amazingly does not provide any standard component for looping.
+			</para>-->
+			<mediaobject>
+				<imageobject role="fo">
+					<imagedata align="center" fileref="images/breadcrumbs.png" />
+				</imageobject>
+			<!--	<imageobject role="html">
+					<imagedata align="center" fileref="../shared/images/breadcrumbs.png" />
+				</imageobject> -->
+			</mediaobject>
+
+		<para>
+			Please refer to the Seam Issue Tracker demo to see all this functionality in action!
+		</para>
+		</section>
+
+	</section>
+	
+	<section id="Seam_Reference_Guide-Conversations_and_workspace_management-Conversational_components_and_JSF_component_bindings">
+		<title>Conversational components and JSF component bindings</title>
+		<para>
+			Conversational components have one minor limitation: they cannot be used to hold bindings to JSF components. (We generally prefer not to use this feature of JSF unless absolutely necessary, since it creates a hard dependency from application logic to the view.) On a postback request, component bindings are updated during the Restore View phase, before the Seam conversation context has been restored.
+		</para>
+		<para>
+			To work around this use an event scoped component to store the component bindings and inject it into the conversation scoped component that requires it.
+		</para>
+<programlisting>@Name("grid")
+ at Scope(ScopeType.EVENT)
+public class Grid
+{
+    private HtmlPanelGrid htmlPanelGrid;
+
+    // getters and setters
+    ...
+}
+</programlisting>
+<programlisting>@Name("gridEditor")
+ at Scope(ScopeType.CONVERSATION)
+public class GridEditor
+{
+    @In(required=false)
+    private Grid grid;
+    
+    ...
+}
+</programlisting>
+	</section>
+
+</chapter>
+


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Conversations.xml
___________________________________________________________________
Name: svn:executable
   + *

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Drools.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Drools.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Drools.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,213 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
+
+<chapter id="drools">
+    <title>Seam and JBoss Rules</title>
+    
+    <para>
+        Seam makes it easy to call JBoss Rules (Drools) rulebases from Seam
+        components or jBPM process definitions.
+    </para>
+    
+    <section>
+        <title>Installing rules</title>
+        
+        <para>
+            The first step is to make an instance of <literal>org.drools.RuleBase</literal>
+            available in a Seam context variable. For testing purposes, Seam provides a built-in component
+            that compiles a static set of rules from the classpath. You can install
+            this component via <literal>components.xml</literal>:
+        </para>
+
+        <programlisting role="XML"><![CDATA[<drools:rule-base name="policyPricingRules">
+    <drools:rule-files>
+        <value>policyPricingRules.drl</value>
+    </drools:rule-files>
+</drools:rule-base>]]></programlisting>
+
+         <para>
+             This component compiles rules from a set of <literal>.drl</literal>
+             files and caches an instance of <literal>org.drools.RuleBase</literal>
+             in the Seam <literal>APPLICATION</literal> context. Note that it is 
+             quite likely that you will need to install multiple rule bases in a 
+             rule-driven application.
+         </para>
+         
+         <para>
+             If you want to use a Drools DSL, you also need to specify the DSL
+             definition:
+         </para>
+         
+        <programlisting role="XML"><![CDATA[<drools:rule-base name="policyPricingRules" dsl-file="policyPricing.dsl">
+    <drools:rule-files>
+        <value>policyPricingRules.drl</value>
+    </drools:rule-files>
+</drools:rule-base>]]></programlisting>
+
+        <para>
+        In most rules-driven applications,
+            rules need to be dynamically deployable, so a production application will want to use a
+            Drools RuleAgent to manage the RuleBase.  The RuleAgent can connect to a Drools rule server (BRMS) 
+            or hot deploy rules packages from a local file repository.  The RulesAgent-managed RuleBase is
+            also configurable in <literal>components.xml</literal>:
+        </para>
+        
+                <programlisting role="XML"><![CDATA[<drools:rule-agent name="insuranceRules" 
+                    configurationFile="/WEB-INF/deployedrules.properties" />]]></programlisting>
+        
+        <para>The properties file contains properties specific to the RulesAgent. Here is an example configuration file from the
+        Drools example distribution.</para>
+        
+                <programlisting>newInstance=true
+url=http://localhost:8080/drools-jbrms/org.drools.brms.JBRMS/package/org.acme.insurance/fmeyer
+localCacheDir=/Users/fernandomeyer/projects/jbossrules/drools-examples/drools-examples-brms/cache
+poll=30
+name=insuranceconfig</programlisting>
+        
+        
+        <para>It is also possible to configure the options on the component directly, bypassing the configuration file.</para>
+
+       <programlisting role="XML"><![CDATA[<drools:rule-agent name="insuranceRules"
+   url="http://localhost:8080/drools-jbrms/org.drools.brms.JBRMS/package/org.acme.insurance/fmeyer"
+   local-cache-dir="/Users/fernandomeyer/projects/jbossrules/drools-examples/drools-examples-brms/cache"
+   poll="30"
+   configuration-name="insuranceconfig" />]]></programlisting>
+        
+         <para>
+             Next, we need to make an instance of <literal>org.drools.WorkingMemory</literal>
+             available to each conversation. (Each <literal>WorkingMemory</literal>
+             accumulates facts relating to the current conversation.)
+         </para>
+        
+         <programlisting role="XML"><![CDATA[<drools:managed-working-memory name="policyPricingWorkingMemory" auto-create="true" rule-base="#{policyPricingRules}"/>]]></programlisting>
+
+         <para>
+             Notice that we gave the <literal>policyPricingWorkingMemory</literal> a
+             reference back to our rule base via the <literal>ruleBase</literal>
+             configuration property.
+         </para>
+         
+     </section>
+     
+     <section>
+         <title>Using rules from a Seam component</title>
+         
+         <para>
+             We can now inject our <literal>WorkingMemory</literal> into any Seam component,
+             assert facts, and fire rules:
+         </para>
+         
+         <programlisting role="JAVA"><![CDATA[@In WorkingMemory policyPricingWorkingMemory;
+
+ at In Policy policy;
+ at In Customer customer;
+
+public void pricePolicy() throws FactException
+{
+    policyPricingWorkingMemory.assertObject(policy);
+    policyPricingWorkingMemory.assertObject(customer);
+    policyPricingWorkingMemory.fireAllRules();
+}]]></programlisting>
+     
+     </section>
+     
+     <section>
+         <title>Using rules from a jBPM process definition</title>
+         
+         <para>
+             You can even allow a rule base to act as a jBPM action handler, decision
+             handler, or assignment handler&#8212;in either a pageflow or business
+             process definition.
+         </para>
+         
+         <programlisting role="XML"><![CDATA[<decision name="approval">
+         
+    <handler class="org.jboss.seam.drools.DroolsDecisionHandler">
+        <workingMemoryName>orderApprovalRulesWorkingMemory</workingMemoryName>
+        <assertObjects>
+            <element>#{customer}</element>
+            <element>#{order}</element>
+            <element>#{order.lineItems}</element>
+        </assertObjects>
+    </handler>
+    
+    <transition name="approved" to="ship">
+        <action class="org.jboss.seam.drools.DroolsActionHandler">
+            <workingMemoryName>shippingRulesWorkingMemory</workingMemoryName>
+            <assertObjects>
+                <element>#{customer}</element>
+                <element>#{order}</element>
+                <element>#{order.lineItems}</element>
+            </assertObjects>
+        </action>
+    </transition>
+    
+    <transition name="rejected" to="cancelled"/>
+    
+</decision>]]></programlisting>
+
+         <para>
+             The <literal>&lt;assertObjects&gt;</literal> element specifies EL expressions that
+             return an object or collection of objects to be asserted as facts into the 
+             <literal>WorkingMemory</literal>.
+         </para>
+         
+         <para>
+             There is also support for using Drools for jBPM task assignments:
+         </para>
+         
+         <programlisting role="XML"><![CDATA[<task-node name="review">
+    <task name="review" description="Review Order">
+        <assignment handler="org.jboss.seam.drools.DroolsAssignmentHandler">
+            <workingMemoryName>orderApprovalRulesWorkingMemory</workingMemoryName>
+            <assertObjects>
+                <element>#{actor}</element>
+                <element>#{customer}</element>
+                <element>#{order}</element>
+                <element>#{order.lineItems}</element>
+            </assertObjects>
+        </assignment>
+    </task>
+    <transition name="rejected" to="cancelled"/>
+    <transition name="approved" to="approved"/>
+</task-node>]]></programlisting>
+
+         <para>
+             Certain objects are available to the rules as Drools globals, namely
+             the jBPM <literal>Assignable</literal>, as <literal>assignable</literal>
+             and a Seam <literal>Decision</literal> object, as <literal>decision</literal>.
+             Rules which handle decisions should call <literal>decision.setOutcome("result")</literal>
+             to determine the result of the decision. Rules which perform assignments should
+             set the actor id using the <literal>Assignable</literal>.
+         </para>
+         
+         <programlisting><![CDATA[package org.jboss.seam.examples.shop
+
+import org.jboss.seam.drools.Decision
+
+global Decision decision
+
+rule "Approve Order For Loyal Customer"
+  when
+    Customer( loyaltyStatus == "GOLD" )
+    Order( totalAmount <= 10000 )
+  then
+    decision.setOutcome("approved");
+end]]></programlisting>
+
+         <programlisting><![CDATA[package org.jboss.seam.examples.shop
+
+import org.jbpm.taskmgmt.exe.Assignable
+
+global Assignable assignable
+
+rule "Assign Review For Small Order"
+  when
+    Order( totalAmount <= 100 )
+  then
+    assignable.setPooledActors( new String[] {"reviewers"} );
+end]]></programlisting>
+
+     </section>
+     
+</chapter>


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Drools.xml
___________________________________________________________________
Name: svn:executable
   + *

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Elenhancements.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Elenhancements.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Elenhancements.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,85 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Seam_Reference_Guide-Expression_language_enhancements">
+	<title>Expression language enhancements</title>
+	<para>
+		The standard Unified Expression Language (EL) assumes that any parameters to a method expression will be provided by Java code. This means that a method with parameters cannot be used as a JSF method binding. Seam provides an enhancement to the EL that allows parameters to be included in a method expression itself. This applies to <emphasis>any</emphasis> Seam method expression, including any JSF method binding, for example:
+	</para>
+<programlisting>&lt;s:commandButton action="#{hotelBooking.bookHotel(hotel)}" value="Book Hotel"/&gt;</programlisting>
+	<section id="Seam_Reference_Guide-Expression_language_enhancements-Configuration">
+		<title>Configuration</title>
+		<para>
+			To use this feature in Facelets, you will need to declare a special view handler, <literal>SeamFaceletViewHandler</literal> in <literal>faces-config.xml</literal>.
+		</para>
+<programlisting>&lt;faces-config&gt;
+    &lt;application&gt;
+        &lt;view-handler&gt;org.jboss.seam.ui.facelet.SeamFaceletViewHandler&lt;/view-handler&gt;
+    &lt;/application&gt;
+&lt;/faces-config&gt;
+</programlisting>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Expression_language_enhancements-Usage">
+		<title>Usage</title>
+		<para>
+			Parameters are surrounded by parentheses, and separated by commas:
+		</para>
+<programlisting>&lt;h:commandButton action="#{hotelBooking.bookHotel(hotel, user)}" value="Book Hotel"/&gt;</programlisting>
+		<para>
+			The parameters <literal>hotel</literal> and <literal>user</literal> will be evaluated as value expressions and passed to the <literal>bookHotel()</literal> method of the component. This gives you an alternative to the use of <literal>@In</literal>.
+		</para>
+		<para>
+			Any value expression may be used as a parameter:
+		</para>
+<programlisting>&lt;h:commandButton action="#{hotelBooking.bookHotel(hotel.id, user.username)}" value="Book Hotel"/&gt;</programlisting>
+		<para>
+			You may even pass literal strings using single or double quotes:
+		</para>
+<programlisting>&lt;h:commandLink action=”#{printer.println( ‘Hello world!’ )}” value=”Hello”/&gt;</programlisting>
+<programlisting>&lt;h:commandLink action=’#{printer.println( “Hello again” )}’ value=’Hello’/&gt;</programlisting>
+		<para>
+			You might even want to use this notation for all your action methods, even when you do not have parameters to pass. This improves readability by making it clear that the expression is a method expression and not a value expression:
+		</para>
+<programlisting>&lt;s:link value="Cancel" action="#{hotelBooking.cancel()}"/&gt;</programlisting>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Expression_language_enhancements-Limitations">
+		<title>Limitations</title>
+		<para>
+			Please be aware of the following limitations:
+		</para>
+		<section id="Seam_Reference_Guide-Limitations-Incompatibility_with_JSP_2.1">
+			<title>Incompatibility with JSP 2.1</title>
+			<para>
+				This extension is not currently compatible with JSP 2.1. So if you want to use this extension with JSF 1.2, you will need to use Facelets. The extension works correctly with JSP 2.0.
+			</para>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Limitations-Calling_a_MethodExpression_from_Java_code">
+			<title>Calling a <literal>MethodExpression</literal> from Java code</title>
+			<para>
+				Normally, when a <literal>MethodExpression</literal> or <literal>MethodBinding</literal> is created, the parameter types are passed in by JSF. In the case of a method binding, JSF assumes that there are no parameters to pass. With this extension, we can’t know the parameter types until after the expression has been evaluated. This has two minor consequences:
+			</para>
+			<itemizedlist>
+				<listitem>
+					<para>
+						When you invoke a <literal>MethodExpression</literal> in Java code, parameters you pass may be ignored. Parameters defined in the expression will take precedence.
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						Ordinarily, it is safe to call <literal>methodExpression.getMethodInfo().getParamTypes()</literal> at any time. For an expression with parameters, you must first invoke the <literal>MethodExpression</literal> before calling <literal>getParamTypes()</literal>.
+					</para>
+				</listitem>
+			</itemizedlist>
+			<para>
+				Both of these cases are exceedingly rare and only apply when you want to invoke the <literal>MethodExpression</literal> by hand in Java code.
+			</para>
+		</section>
+
+	</section>
+
+</chapter>
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Events.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Events.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Events.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,732 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Seam_Reference_Guide-Events_interceptors_and_exception_handling">
+	<title>Events, interceptors and exception handling</title>
+	<para>
+		Complementing the contextual component model, there are two further basic concepts that facilitate the extreme loose-coupling that is the distinctive feature of Seam applications. The first is a strong event model where events may be mapped to event listeners via JSF-like method binding expressions. The second is the pervasive use of annotations and interceptors to apply cross-cutting concerns to components which implement business logic.
+	</para>
+	<sect1 id="Seam_Reference_Guide-Events_interceptors_and_exception_handling-Seam_events"><title>Seam events</title>
+	<para>
+		The Seam component model was developed for use with <emphasis>event-driven applications</emphasis>, specifically to enable the development of fine-grained, loosely-coupled components in a fine-grained eventing model. Events in Seam come in several types, most of which we have already seen:
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				JSF events
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				jBPM transition events
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Seam page actions
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Seam component-driven events
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Seam contextual events
+			</para>
+		</listitem>
+	</itemizedlist>
+	<para>
+		All of these various kinds of events are mapped to Seam components via JSF EL method binding expressions. For a JSF event, this is defined in the JSF template:
+	</para>
+<programlisting>&lt;h:commandButton value="Click me!" action="#{helloWorld.sayHello}"/&gt;</programlisting>
+	<para>
+		For a jBPM transition event, it is specified in the jBPM process definition or pageflow definition:
+	</para>
+<programlisting>&lt;start-page name="hello" view-id="/hello.jsp"&gt;
+    &lt;transition to="hello"&gt;
+        &lt;action expression="#{helloWorld.sayHello}"/&gt;
+    &lt;/transition&gt;
+&lt;/start-page&gt;
+</programlisting>
+	<para>
+		You can find out more information about JSF events and jBPM events elsewhere. Lets concentrate for now upon the two additional kinds of events defined by Seam.
+	</para>
+	<sect2 id="Seam_Reference_Guide-Seam_events-Page_actions"><title>Page actions</title>
+	<para>
+		A Seam page action is an event that occurs just before we render a page. We declare page actions in <literal>WEB-INF/pages.xml</literal>. We can define a page action for either a particular JSF view id:
+	</para>
+<programlisting>&lt;pages&gt;
+    &lt;page view-id="/hello.jsp" action="#{helloWorld.sayHello}"/&gt;
+&lt;/pages&gt;
+</programlisting>
+	<para>
+		Or we can use a wildcard to specify an action that applies to all view ids that match the pattern:
+	</para>
+<programlisting>&lt;pages&gt;
+    &lt;page view-id="/hello/*" action="#{helloWorld.sayHello}"/&gt;
+&lt;/pages&gt;
+</programlisting>
+	<para>
+		If multiple wildcarded page actions match the current view-id, Seam will call all the actions, in order of least-specific to most-specific.
+	</para>
+	<para>
+		The page action method can return a JSF outcome. If the outcome is non-null, Seam will use the defined navigation rules to navigate to a view.
+	</para>
+	<para>
+		Furthermore, the view id mentioned in the <literal>&lt;page&gt;</literal> element need not correspond to a real JSP or Facelets page. So, we can reproduce the functionality of a traditional action-oriented framework like Struts or WebWork using page actions. 
+	</para>
+
+	<!-- <para>
+		For example:
+	</para>	
+<programlisting>TODO: translate struts action into page action</programlisting> -->
+	<para>
+		This is quite useful if you want to do complex things in response to non-faces requests (for example, HTTP GET requests).
+	</para>
+	<sect3 id="Seam_Reference_Guide-Page_actions-Page_parameters"><title>Page parameters</title>
+	<para>
+		A JSF faces request (a form submission) encapsulates both an <emphasis>action</emphasis> (a method binding) and <emphasis>parameters</emphasis> (input value bindings). A page action might also require parameters.
+	</para>
+	<para>
+		Since GET requests are bookmarkable, page parameters are passed as human-readable request parameters. (Unlike JSF form inputs, which are anything but!)
+	</para>
+	<para>
+		Seam lets us provide a value binding that maps a named request parameter to an attribute of a model object.
+	</para>
+<programlisting>&lt;pages&gt;
+    &lt;page view-id="/hello.jsp" action="#{helloWorld.sayHello}"&gt;
+        &lt;param name="firstName" value="#{person.firstName}"/&gt;
+        &lt;param name="lastName" value="#{person.lastName}"/&gt;
+    &lt;/page&gt;
+&lt;/pages&gt;
+</programlisting>
+	<para>
+		The <literal>&lt;param&gt;</literal> declaration is bidirectional, just like a value binding for a JSF input:
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				When a non-faces (GET) request for the view id occurs, Seam sets the value of the named request parameter onto the model object, after performing appropriate type conversions.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Any <literal>&lt;s:link&gt;</literal> or <literal>&lt;s:button&gt;</literal> transparently includes the request parameter. The value of the parameter is determined by evaluating the value binding during the render phase (when the <literal>&lt;s:link&gt;</literal> is rendered).
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Any navigation rule with a <literal>&lt;redirect/&gt;</literal> to the view id transparently includes the request parameter. The value of the parameter is determined by evaluating the value binding at the end of the invoke application phase.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				The value is transparently propagated with any JSF form submission for the page with the given view-id. (This means that view parameters behave like <literal>PAGE</literal>-scoped context variables for faces requests.
+			</para>
+		</listitem>
+	</itemizedlist>
+	<para>
+		The essential idea behind all this is that <emphasis>however</emphasis> we get from any other page to <literal>/hello.jsp</literal> (or from <literal>/hello.jsp</literal> back to <literal>/hello.jsp</literal>), the value of the model attribute referred to in the value binding is <emphasis>remembered</emphasis>, without the need for a conversation (or other server-side state).
+	</para>
+	<para>
+		This all sounds pretty complex, however the initial effort is worth it in the end. Page parameters are the most elegant way to propagate state across a non-faces request. They are especially cool for problems like search screens with bookmarkable results pages, where we would like to be able to write our application code to handle both POST and GET requests with the same code. Page parameters eliminate repetitive listing of request parameters in the view definition and make redirects much easier to code.
+	</para>
+	<para>
+		You don not need an actual page action method binding to use a page parameter. The following is perfectly valid:
+	</para>
+<programlisting>&lt;pages&gt;
+    &lt;page view-id="/hello.jsp"&gt;
+        &lt;param name="firstName" value="#{person.firstName}"/&gt;
+        &lt;param name="lastName" value="#{person.lastName}"/&gt;
+    &lt;/page&gt;
+&lt;/pages&gt;
+</programlisting>
+	<para>
+		You can even specify a JSF converter:
+	</para>
+<programlisting>&lt;pages&gt;
+    &lt;page view-id="/calculator.jsp" action="#{calculator.calculate}"&gt;
+        &lt;param name="x" value="#{calculator.lhs}"/&gt;
+        &lt;param name="y" value="#{calculator.rhs}"/&gt;
+        &lt;param name="op" converterId="com.my.calculator.OperatorConverter" value="#{calculator.op}"/&gt;
+    &lt;/page&gt;
+&lt;/pages&gt;
+</programlisting>
+<programlisting>&lt;pages&gt;
+    &lt;page view-id="/calculator.jsp" action="#{calculator.calculate}"&gt;
+        &lt;param name="x" value="#{calculator.lhs}"/&gt;
+        &lt;param name="y" value="#{calculator.rhs}"/&gt;
+        &lt;param name="op" converter="#{operatorConverter}" value="#{calculator.op}"/&gt;
+    &lt;/page&gt;
+&lt;/pages&gt;
+</programlisting>
+	</sect3><sect3 id="Seam_Reference_Guide-Page_actions-Navigation"><title>Navigation</title>
+	<para>
+		You can use standard JSF navigation rules defined in <literal>faces-config.xml</literal> in a Seam application. However, JSF navigation rules have a number of annoying limitations:
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				It is not possible to specify request parameters to be used when redirecting.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				It is not possible to begin or end conversations from a rule.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Rules work by evaluating the return value of the action method; it is not possible to evaluate an arbitrary EL expression.
+			</para>
+		</listitem>
+	</itemizedlist>
+	<para>
+		A further problem is that <emphasis>orchestration</emphasis> logic gets scattered between <literal>pages.xml</literal> and <literal>faces-config.xml</literal>. It is better to unify this logic into <literal>pages.xml</literal>.
+	</para>
+	<para>
+		This JSF navigation rule:
+	</para>
+<programlisting>&lt;navigation-rule&gt;
+    &lt;from-view-id&gt;/editDocument.xhtml&lt;/from-view-id&gt;
+    
+    &lt;navigation-case&gt;
+        &lt;from-action&gt;#{documentEditor.update}&lt;/from-action&gt;
+        &lt;from-outcome&gt;success&lt;/from-outcome&gt;
+        &lt;to-view-id&gt;/viewDocument.xhtml&lt;/to-view-id&gt;
+        &lt;redirect/&gt;
+    &lt;/navigation-case&gt;
+    
+&lt;/navigation-rule&gt;
+</programlisting>
+	<para>
+		Can be rewritten as follows:
+	</para>
+<programlisting>&lt;page view-id="/editDocument.xhtml"&gt;
+    
+    &lt;navigation from-action="#{documentEditor.update}"&gt;
+        &lt;rule if-outcome="success"&gt;
+            &lt;redirect view-id="/viewDocument.xhtml"/&gt;
+        &lt;/rule&gt;
+    &lt;/navigation&gt;
+    
+&lt;/page&gt;
+</programlisting>
+	<para>
+		But it would be even nicer if we did not have to pollute our <literal>DocumentEditor</literal> component with string-valued return values (the JSF outcomes). So Seam lets us write:
+	</para>
+<programlisting>&lt;page view-id="/editDocument.xhtml"&gt;
+    
+    &lt;navigation from-action="#{documentEditor.update}" 
+                   evaluate="#{documentEditor.errors.size}"&gt;
+        &lt;rule if-outcome="0"&gt;
+            &lt;redirect view-id="/viewDocument.xhtml"/&gt;
+        &lt;/rule&gt;
+    &lt;/navigation&gt;
+    
+&lt;/page&gt;
+</programlisting>
+	<para>
+		Or even:
+	</para>
+<programlisting>&lt;page view-id="/editDocument.xhtml"&gt;
+    
+    &lt;navigation from-action="#{documentEditor.update}"&gt;
+        &lt;rule if="#{documentEditor.errors.empty}"&gt;
+            &lt;redirect view-id="/viewDocument.xhtml"/&gt;
+        &lt;/rule&gt;
+    &lt;/navigation&gt;
+    
+&lt;/page&gt;
+</programlisting>
+	<para>
+		The first form evaluates a value binding to determine the outcome value to be used by the subsequent rules. The second approach ignores the outcome and evaluates a value binding for each possible rule.
+	</para>
+	<para>
+		When an update succeeds, we probably want to end the current conversation. We can do that like this:
+	</para>
+<programlisting>&lt;page view-id="/editDocument.xhtml"&gt;
+    
+    &lt;navigation from-action="#{documentEditor.update}"&gt;
+        &lt;rule if="#{documentEditor.errors.empty}"&gt;
+            &lt;end-conversation/&gt;
+            &lt;redirect view-id="/viewDocument.xhtml"/&gt;
+        &lt;/rule&gt;
+    &lt;/navigation&gt;
+    
+&lt;/page&gt;
+</programlisting>
+	<para>
+		But ending the conversation loses any state associated with the conversation, including the document we are currently interested in! One solution would be to use an immediate render instead of a redirect:
+	</para>
+<programlisting>&lt;page view-id="/editDocument.xhtml"&gt;
+    
+    &lt;navigation from-action="#{documentEditor.update}"&gt;
+        &lt;rule if="#{documentEditor.errors.empty}"&gt;
+            &lt;end-conversation/&gt;
+            &lt;render view-id="/viewDocument.xhtml"/&gt;
+        &lt;/rule&gt;
+    &lt;/navigation&gt;
+    
+&lt;/page&gt;
+</programlisting>
+	<para>
+		But the correct solution is to pass the document ID as a request parameter:
+	</para>
+<programlisting>&lt;page view-id="/editDocument.xhtml"&gt;
+    
+    &lt;navigation from-action="#{documentEditor.update}"&gt;
+        &lt;rule if="#{documentEditor.errors.empty}"&gt;
+            &lt;end-conversation/&gt;
+            &lt;redirect view-id="/viewDocument.xhtml"&gt;
+                &lt;param name="documentId" value="#{documentEditor.documentId}"/&gt;
+            &lt;/redirect&gt;
+        &lt;/rule&gt;
+    &lt;/navigation&gt;
+    
+&lt;/page&gt;
+</programlisting>
+	<para>
+		Null outcomes are a special case in JSF. The null outcome is interpreted to mean <emphasis>redisplay the page</emphasis>. The following navigation rule matches any non-null outcome, but <emphasis>not</emphasis> the null outcome:
+	</para>
+<programlisting>&lt;page view-id="/editDocument.xhtml"&gt;
+    
+    &lt;navigation from-action="#{documentEditor.update}"&gt;
+        &lt;rule&gt;
+            &lt;render view-id="/viewDocument.xhtml"/&gt;
+        &lt;/rule&gt;
+    &lt;/navigation&gt;
+    
+&lt;/page&gt;
+</programlisting>
+	<para>
+		If you want to perform navigation when a null outcome occurs, use the following form instead:
+	</para>
+<programlisting>&lt;page view-id="/editDocument.xhtml"&gt;
+    
+    &lt;navigation from-action="#{documentEditor.update}"&gt;
+        &lt;render view-id="/viewDocument.xhtml"/&gt;
+    &lt;/navigation&gt;
+    
+&lt;/page&gt;
+</programlisting>
+	</sect3><sect3 id="Seam_Reference_Guide-Page_actions-Fine_grained_files_for_definition_of_navigation_page_actions_and_parameters"><title>Fine-grained files for definition of navigation, page actions and parameters</title>
+	<para>
+		If you have a lot of different page actions and page parameters, or even just a lot of navigation rules, you will almost certainly want to split the declarations up over multiple files. You can define actions and parameters for a page with the view id <literal>/calc/calculator.jsp</literal> in a resource named <literal>calc/calculator.page.xml</literal>. The root element in this case is the <literal>&lt;page&gt;</literal> element, and the view id is implied:
+	</para>
+<programlisting>&lt;page action="#{calculator.calculate}"&gt;
+    &lt;param name="x" value="#{calculator.lhs}"/&gt;
+    &lt;param name="y" value="#{calculator.rhs}"/&gt;
+    &lt;param name="op" converter="#{operatorConverter}" value="#{calculator.op}"/&gt;
+&lt;/page&gt;
+</programlisting>
+	</sect3></sect2><sect2 id="Seam_Reference_Guide-Seam_events-Component_driven_events"><title>Component-driven events</title>
+	<para>
+		Seam components can interact by simply calling each others methods. Stateful components may even implement the observer/observable pattern. But to enable components to interact in a more loosely-coupled fashion than is possible when the components call each others methods directly, Seam provides <emphasis>component-driven events</emphasis>.
+	</para>
+	<para>
+		We specify event listeners (observers) in <literal>components.xml</literal>.
+	</para>
+<programlisting>&lt;components&gt;
+    &lt;event type="hello"&gt;
+        &lt;action expression="#{helloListener.sayHelloBack}"/&gt;
+        &lt;action expression="#{logger.logHello}"/&gt;
+    &lt;/event&gt;
+&lt;/components&gt;
+</programlisting>
+	<para>
+		Where the <emphasis>event type</emphasis> is just an arbitrary string.
+	</para>
+	<para>
+		When an event occurs, the actions registered for that event will be called in the order they appear in <literal>components.xml</literal>. How does a component raise an event? Seam provides a built-in component for this.
+	</para>
+<programlisting>@Name("helloWorld")
+public class HelloWorld {
+    public void sayHello() {
+        FacesMessages.instance().add("Hello World!");
+        Events.instance().raiseEvent("hello");
+    }
+}
+</programlisting>
+	<para>
+		Or you can use an annotation.
+	</para>
+<programlisting>@Name("helloWorld")
+public class HelloWorld {
+    @RaiseEvent("hello")
+    public void sayHello() {
+        FacesMessages.instance().add("Hello World!");
+    }
+}
+</programlisting>
+	<para>
+		Notice that this event producer has no dependency upon event consumers. The event listener may now be implemented with absolutely no dependency upon the producer:
+	</para>
+<programlisting>@Name("helloListener")
+public class HelloListener {
+    public void sayHelloBack() {
+        FacesMessages.instance().add("Hello to you too!");
+    }
+}
+</programlisting>
+	<para>
+		The method binding defined in <literal>components.xml</literal> above takes care of mapping the event to the consumer. If you do not like futzing about in the <literal>components.xml</literal> file, you can use an annotation instead:
+	</para>
+<programlisting>@Name("helloListener")
+public class HelloListener {
+    @Observer("hello")
+    public void sayHelloBack() {
+        FacesMessages.instance().add("Hello to you too!");
+    }
+}
+</programlisting>
+	<para>
+		In terms of event objects, Seam does not require an event object to propagate state between event producer and listener. State is held in the Seam contexts, and is shared between components. However, if you really want to pass an event object, you can:
+	</para>
+<programlisting>@Name("helloWorld")
+public class HelloWorld {
+    private String name;
+    public void sayHello() {
+        FacesMessages.instance().add("Hello World, my name is #0.", name);
+        Events.instance().raiseEvent("hello", name);
+    }
+}
+</programlisting>
+<programlisting>@Name("helloListener")
+public class HelloListener {
+    @Observer("hello")
+    public void sayHelloBack(String name) {
+        FacesMessages.instance().add("Hello #0!", name);
+    }
+}
+</programlisting>
+	</sect2><sect2 id="Seam_Reference_Guide-Seam_events-Contextual_events"><title>Contextual events</title>
+	<para>
+		Seam defines a number of built-in events that the application can use to perform special kinds of framework integration. The events are:
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.validationFailed</literal> &mdash; called when JSF validation fails
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.noConversation</literal> &mdash; called when there is no long running conversation and a long running conversation is required
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.preSetVariable.&lt;name&gt;</literal> &mdash; called when the context variable &lt;name&gt; is set
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.postSetVariable.&lt;name&gt;</literal> &mdash; called when the context variable &lt;name&gt; is set
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.preRemoveVariable.&lt;name&gt;</literal> &mdash; called when the context variable &lt;name&gt; is unset
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.postRemoveVariable.&lt;name&gt;</literal> &mdash; called when the context variable &lt;name&gt; is unset
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.preDestroyContext.&lt;SCOPE&gt;</literal> &mdash; called before the &lt;SCOPE&gt; context is destroyed
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.postDestroyContext.&lt;SCOPE&gt;</literal> &mdash; called after the &lt;SCOPE&gt; context is destroyed
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.beginConversation </literal>&mdash; called whenever a long-running conversation begins
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.endConversation </literal>&mdash; called whenever a long-running conversation ends
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.beginPageflow.&lt;name&gt; </literal>&mdash; called when the pageflow &lt;name&gt; begins
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.endPageflow.&lt;name&gt; </literal>&mdash; called when the pageflow &lt;name&gt; ends
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.createProcess.&lt;name&gt; </literal>&mdash; called when the process &lt;name&gt; is created
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.endProcess.&lt;name&gt; </literal>&mdash; called when the process &lt;name&gt; ends
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.initProcess.&lt;name&gt; </literal>&mdash; called when the process &lt;name&gt; is associated with the conversation
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.initTask.&lt;name&gt; </literal>&mdash; called when the task &lt;name&gt; is associated with the conversation
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.startTask.&lt;name&gt; </literal>&mdash; called when the task &lt;name&gt; is started
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.endTask.&lt;name&gt; </literal>&mdash; called when the task &lt;name&gt; is ended
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.postCreate.&lt;name&gt; </literal>&mdash; called when the component &lt;name&gt; is created
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.preDestroy.&lt;name&gt; </literal>&mdash; called when the component &lt;name&gt; is destroyed
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.beforePhase </literal>&mdash; called before the start of a JSF phase
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.afterPhase </literal>&mdash; called after the end of a JSF phase
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.postAuthenticate.&lt;name&gt; </literal>&mdash; called after a user is authenticated
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.preAuthenticate.&lt;name&gt; </literal>&mdash; called before attempting to authenticate a user
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.notLoggedIn</literal> &mdash; called there is no authenticated user and authentication is required
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>org.jboss.seam.rememberMe</literal> &mdash; occurs when Seam security detects the username in a cookie
+			</para>
+		</listitem>
+	</itemizedlist>
+	<para>
+		Seam components may observe any of these events in just the same way they observe any other component-driven events.
+	</para>
+	</sect2></sect1><sect1 id="Seam_Reference_Guide-Events_interceptors_and_exception_handling-Seam_interceptors"><title>Seam interceptors</title>
+	<para>
+		EJB 3.0 introduced a standard interceptor model for session bean components. To add an interceptor to a bean, you need to write a class with a method annotated <literal>@AroundInvoke</literal> and annotate the bean with an <literal>@Interceptors</literal> annotation that specifies the name of the interceptor class. For example, the following interceptor checks that the user is logged in before allowing invoking an action listener method:
+	</para>
+<programlisting>public class LoggedInInterceptor {
+
+   @AroundInvoke
+   public Object checkLoggedIn(InvocationContext invocation) throws Exception {
+   
+      boolean isLoggedIn = Contexts.getSessionContext().get("loggedIn")!=null;
+      if (isLoggedIn) {
+         //the user is already logged in
+         return invocation.proceed();
+      }
+      else {
+         //the user is not logged in, fwd to login page
+         return "login";
+      }
+   }
+
+}
+</programlisting>
+	<para>
+		To apply this interceptor to a session bean which acts as an action listener, we must annotate the session bean <literal>@Interceptors(LoggedInInterceptor.class)</literal>. This is a somewhat ugly annotation. Seam builds upon the interceptor framework in EJB3 by allowing you to use <literal>@Interceptors</literal> as a meta-annotation. In our example, we would create an <literal>@LoggedIn</literal> annotation, as follows:
+	</para>
+<programlisting>@Target(TYPE)
+ at Retention(RUNTIME)
+ at Interceptors(LoggedInInterceptor.class)
+public @interface LoggedIn {}
+</programlisting>
+	<para>
+		We can now simply annotate our action listener bean with <literal>@LoggedIn</literal> to apply the interceptor.
+	</para>
+<programlisting>@Stateless
+ at Name("changePasswordAction")
+ at LoggedIn
+ at Interceptors(SeamInterceptor.class)
+public class ChangePasswordAction implements ChangePassword { 
+    
+    ...
+    
+    public String changePassword() { ... }
+    
+}
+</programlisting>
+	<para>
+		If interceptor ordering is important (it usually is), you can add <literal>@Interceptor</literal> annotations to your interceptor classes to specify a partial order of interceptors.
+	</para>
+<programlisting>@Interceptor(around={BijectionInterceptor.class,
+                     ValidationInterceptor.class,
+                     ConversationInterceptor.class},
+             within=RemoveInterceptor.class)
+public class LoggedInInterceptor
+{
+    ...
+}
+</programlisting>
+	<para>
+		You can even have a <emphasis>client-side</emphasis> interceptor, that runs around any of the built-in functionality of EJB3:
+	</para>
+<programlisting>@Interceptor(type=CLIENT)
+public class LoggedInInterceptor
+{
+    ...
+}
+</programlisting>
+	<para>
+		EJB interceptors are stateful, with a lifecycle that is the same as the component they intercept. For interceptors which do not need to maintain state, Seam lets you get a performance optimization by specifying <literal>@Interceptor(stateless=true)</literal>.
+	</para>
+	<para>
+		Much of the functionality of Seam is implemented as a set of built-in Seam interceptors, including the interceptors named in the previous example. You do not have to explicitly specify these interceptors by annotating your components; they exist for all interceptable Seam components.
+	</para>
+	<para>
+		You can even use Seam interceptors with JavaBean components, not just EJB3 beans.
+	</para>
+	<para>
+		EJB defines interception not only for business methods (using <literal>@AroundInvoke</literal>), but also for the lifecycle methods <literal>@PostConstruct</literal>, <literal>@PreDestroy</literal>, <literal>@PrePassivate</literal> and <literal>@PostActive</literal>. Seam supports all these lifecycle methods on both component and interceptor not only for EJB3 beans, but also for JavaBean components (except <literal>@PreDestroy</literal> which is not meaningful for JavaBean components).
+	</para>
+	</sect1><sect1 id="Seam_Reference_Guide-Events_interceptors_and_exception_handling-Managing_exceptions"><title>Managing exceptions</title>
+	<para>
+		JSF is surprisingly limited when it comes to exception handling. As a partial workaround for this problem, Seam lets you define how a particular class of exception is to be treated by annotating the exception class, or declaring the exception class in an XML file. This facility is meant to be combined with the EJB 3.0-standard <literal>@ApplicationException</literal> annotation which specifies whether the exception should cause a transaction rollback.
+	</para>
+	<sect2 id="Seam_Reference_Guide-Managing_exceptions-Exceptions_and_transactions"><title>Exceptions and transactions</title>
+	<para>
+		EJB specifies well-defined rules that let us control whether an exception immediately marks the current transaction for rollback when it is thrown by a business method of the bean: <emphasis>system exceptions</emphasis> always cause a transaction rollback, <emphasis>application exceptions</emphasis> do not cause a rollback by default, but they do if <literal>@ApplicationException(rollback=true)</literal> is specified. (An application exception is any checked exception, or any unchecked exception annotated <literal>@ApplicationException</literal>. A system exception is any unchecked exception without an <literal>@ApplicationException</literal> annotation.)
+	</para>
+<note>
+	<para>
+		There is a difference between marking a transaction for rollback, and actually rolling it back. The exception rules say that the transaction should be marked rollback only, but it may still be active after the exception is thrown.
+	</para>
+</note>
+	<para>
+		Seam applies the EJB 3.0 exception rollback rules also to Seam JavaBean components.
+	</para>
+	<para>
+		But these rules only apply in the Seam component layer. What about an exception that is uncaught and propagates out of the Seam component layer, and out of the JSF layer? Well, it is always wrong to leave a dangling transaction open, so Seam rolls back any active transaction when an exception occurs and is uncaught in the Seam component layer.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Managing_exceptions-Enabling_Seam_exception_handling"><title>Enabling Seam exception handling</title>
+	<para>
+		To enable Seam&#39;s exception handling, we need to make sure we have the master servlet filter declared in <literal>web.xml</literal>:
+	</para>
+<programlisting>&lt;filter&gt;
+    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;
+    &lt;filter-class&gt;org.jboss.seam.servlet.SeamFilter&lt;/filter-class&gt;
+&lt;/filter&gt;
+
+&lt;filter-mapping&gt;
+    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;
+    &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;
+&lt;/filter-mapping&gt;
+</programlisting>
+	<para>
+		You may also need to disable Facelets development mode in <literal>web.xml</literal> and Seam debug mode in <literal>components.xml</literal> if you want your exception handlers to fire.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Managing_exceptions-Using_annotations_for_exception_handling"><title>Using annotations for exception handling</title>
+	<para>
+		The following exception results in a HTTP 404 error whenever it propagates out of the Seam component layer. It does not roll back the current transaction immediately when thrown, but the transaction will be rolled back if it the exception is not caught by another Seam component.
+	</para>
+<programlisting>@HttpError(errorCode=404)
+public class ApplicationException extends Exception { ... }
+</programlisting>
+	<para>
+		This exception results in a browser redirect whenever it propagates out of the Seam component layer. It also ends the current conversation. It causes an immediate rollback of the current transaction.
+	</para>
+<programlisting>@Redirect(viewId="/failure.xhtml", end=true)
+ at ApplicationException(rollback=true)
+public class UnrecoverableApplicationException extends RuntimeException { ... }
+</programlisting>
+<important>
+	<para>
+		<literal>@Redirect</literal> does not work for exceptions which occur during the render phase of the JSF lifecycle.
+	</para>
+</important>
+	<para>
+		This exception results in a redirect, along with a message to the user, when it propagates out of the Seam component layer. It also immediately rolls back the current transaction.
+	</para>
+<programlisting>@Redirect(viewId="/error.xhtml", message="Unexpected error")
+public class SystemException extends RuntimeException { ... }
+</programlisting>
+	</sect2><sect2 id="Seam_Reference_Guide-Managing_exceptions-Using_XML_for_exception_handling"><title>Using XML for exception handling</title>
+	<para>
+		Since we cannot add annotations to all the exception classes we are interested in, Seam also lets us specify this functionality in <literal>pages.xml</literal>.
+	</para>
+<programlisting>&lt;pages&gt;
+   
+   &lt;exception class="javax.persistence.EntityNotFoundException"&gt;
+      &lt;http-error error-code="404"/&gt;
+   &lt;/exception&gt;
+   
+   &lt;exception class="javax.persistence.PersistenceException"&gt;
+      &lt;end-conversation/&gt;
+      &lt;redirect view-id="/error.xhtml"&gt;
+          &lt;message&gt;Database access failed&lt;/message&gt;
+      &lt;/redirect&gt;
+   &lt;/exception&gt;
+   
+   &lt;exception&gt;
+      &lt;end-conversation/&gt;
+      &lt;redirect view-id="/error.xhtml"&gt;
+          &lt;message&gt;Unexpected failure&lt;/message&gt;
+      &lt;/redirect&gt;
+   &lt;/exception&gt;
+   
+&lt;/pages&gt;
+</programlisting>
+	<para>
+		The last <literal>&lt;exception&gt;</literal> declaration does not specify a class, and is a catch-all for any exception for which handling is not otherwise specified via annotations or in <literal>pages.xml</literal>.
+	</para>
+	<para>
+		You can also access the handled exception instance through EL, Seam places it in the conversation context, for example, to access the message of the exception:
+	</para>
+<programlisting>...
+throw new AuthorizationException("You are not allowed to do this!");
+
+&lt;pages&gt;
+
+    &lt;exception class="org.jboss.seam.security.AuthorizationException"&gt;
+        &lt;end-conversation/&gt;
+        &lt;redirect view-id="/error.xhtml"&gt;
+            &lt;message severity="WARN"&gt;#{handledException.message}&lt;/message&gt;
+        &lt;/redirect&gt;
+    &lt;/exception&gt;
+
+&lt;/pages&gt;
+</programlisting>
+	</sect2></sect1>
+</chapter>
+


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Events.xml
___________________________________________________________________
Name: svn:executable
   + *

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Feedback.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Feedback.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Feedback.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,11 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
+]>
+
+<chapter id="Feedback">
+	<title>Feedback</title>
+	<para>
+			If you spot a typo in this guide, or if you have thought of a way to make this manual better, we would love to hear from you! Submit a report in <ulink url="http://jira.jboss.com/jira/browse/JBPAPP">JIRA</ulink> against the Product: JBoss Enterprise Application Platform, Version: <replaceable>&lt;version&gt;</replaceable>, Component: <emphasis>Doc</emphasis>. If you have a suggestion for improving the documentation, try to be as specific as possible. If you have found an error, include the section number and some of the surrounding text so we can find it easily.
+	</para>
+</chapter>
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Framework.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Framework.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Framework.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,423 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Seam_Reference_Guide-The_Seam_Application_Framework">
+	<title>The Seam Application Framework</title>
+	<para>
+		Seam makes it really easy to create applications by writing plain Java classes with annotations, which do not need to extend any special interfaces or superclasses. But we can simplify some common programming tasks even further, by providing a set of pre-built components which can be re-used either by configuration in <literal>components.xml</literal> (for very simple cases) or extension.
+	</para>
+	<para>
+		The <emphasis>Seam Application Framework</emphasis> can reduce the amount of code you need to write when doing basic database access in a web application, using either Hibernate or JPA.
+	</para>
+	<para>
+		We should emphasize that the framework is extremely simple, just a handful of simple classes that are easy to understand and extend that Seam then uses when creating your application.
+	</para>
+	<section id="Seam_Reference_Guide-The_Seam_Application_Framework-Introduction">
+		<title>Introduction</title>
+		<para>
+			The components provided by the Seam application framework may be used in one of two different approaches. The first way is to install and configure an instance of the component in <literal>components.xml</literal>, just like we have done with other kinds of built-in Seam components. For example, the following fragment from <literal>components.xml</literal> installs a component which can perform basic CRUD operations for a <literal>Contact</literal> entity:
+		</para>
+<programlisting>&lt;framework:entity-home name="personHome" 
+                       entity-class="eg.Person" 
+                       entity-manager="#{personDatabase}"&gt;
+    &lt;framework:id&gt;#{param.personId}&lt;/framework:id&gt;
+&lt;/framework:entity-home&gt;
+</programlisting>
+		<para>
+			If you would rather a different method to the above, you can use extension instead:
+		</para>
+<programlisting>@Stateful
+ at Name("personHome")
+public class PersonHome extends EntityHome&lt;Person&gt; implements LocalPersonHome {
+    @RequestParameter String personId;
+    @In EntityManager personDatabase;
+    
+    public Object getId() { return personId; }
+    public EntityManager getEntityManager() { return personDatabase; }
+    
+}
+</programlisting>
+		<para>
+			The second approach has one huge advantage: you can easily add extra functionality, and override the built-in functionality (the framework classes were carefully designed for extension and customization).
+		</para>
+		<para>
+			A second advantage is that your classes may be EJB stateful sessin beans, if you like. (They do not have to be, they can be plain JavaBean components if you prefer.)
+		</para>
+		<para>
+			At this time, the Seam Application Framework provides just four built-in components: <literal>EntityHome</literal> and <literal>HibernateEntityHome</literal> for CRUD, along with <literal>EntityQuery</literal> and <literal>HibernateEntityQuery</literal> for queries.
+		</para>
+		<para>
+			The Home and Query components are written so that they can function with a scope of session, event or conversation. Which scope you use depends upon the state model you wish to use in your application.
+		</para>
+		<para>
+			The Seam Application Framework only works with Seam-managed persistence contexts. By default, the components will look for a persistence context named <literal>entityManager</literal>.
+		</para>
+	</section>
+	
+	<section id="Seam_Reference_Guide-The_Seam_Application_Framework-Home_objects">
+		<title>Home objects</title>
+		<para>
+			A Home object provides persistence operations for a particular entity class. Suppose we have our trusty <literal>Person</literal> class:
+		</para>
+<programlisting>@Entity
+public class Person {
+    @Id private Long id;
+    private String firstName;
+    private String lastName;
+    private Country nationality;
+    
+    //getters and setters...
+}
+</programlisting>
+		<para>
+			We can define a <literal>personHome</literal> component either via configuration:
+		</para>
+<programlisting>&lt;framework:entity-home name="personHome" entity-class="eg.Person" /&gt;</programlisting>
+		<para>
+			Or via extension:
+		</para>
+<programlisting>@Name("personHome")
+public class PersonHome extends EntityHome&lt;Person&gt; {}
+</programlisting>
+		<para>
+			A Home object provides the following operations: <literal>persist()</literal>, <literal>remove()</literal>, <literal>update()</literal> and <literal>getInstance()</literal>. Before you can call the <literal>remove()</literal>, or <literal>update()</literal> operations, you must first set the identifier of the object you are interested in, using the <literal>setId()</literal> method.
+		</para>
+		<para>
+			We can use a Home directly from a JSF page, for example:
+		</para>
+<programlisting>&lt;h1&gt;Create Person&lt;/h1&gt;
+&lt;h:form&gt;
+    &lt;div&gt;First name: &lt;h:inputText value="#{personHome.instance.firstName}"/&gt;&lt;/div&gt;
+    &lt;div&gt;Last name: &lt;h:inputText value="#{personHome.instance.lastName}"/&gt;&lt;/div&gt;
+    &lt;div&gt;
+        &lt;h:commandButton value="Create Person" action="#{personHome.persist}"/&gt;
+    &lt;/div&gt;
+&lt;/h:form&gt;
+</programlisting>
+		<para>
+			Usually, it is much nicer to be able to refer to the <literal>Person</literal> merely as <literal>person</literal>, so let us make that possible by adding a line to <literal>components.xml</literal>:
+		</para>
+<programlisting>&lt;factory name="person" 
+         value="#{personHome.instance}"/&gt;
+
+&lt;framework:entity-home name="personHome" 
+                       entity-class="eg.Person" /&gt;
+</programlisting>
+		<para>
+			(If we are using configuration.) Or by adding a <literal>@Factory</literal> method to <literal>PersonHome</literal>:
+		</para>
+<programlisting>@Name("personHome")
+public class PersonHome extends EntityHome&lt;Person&gt; {
+    
+    @Factory("person")
+    public Person initPerson() { return getInstance(); }
+    
+}
+</programlisting>
+		<para>
+			(If we are using extension.) This change simplifies our JSF page to the following:
+		</para>
+<programlisting>&lt;h1&gt;Create Person&lt;/h1&gt;
+&lt;h:form&gt;
+    &lt;div&gt;First name: &lt;h:inputText value="#{person.firstName}"/&gt;&lt;/div&gt;
+    &lt;div&gt;Last name: &lt;h:inputText value="#{person.lastName}"/&gt;&lt;/div&gt;
+    &lt;div&gt;
+        &lt;h:commandButton value="Create Person" action="#{personHome.persist}"/&gt;
+    &lt;/div&gt;
+&lt;/h:form&gt;
+</programlisting>
+		<para>
+			Well, that lets us create new <literal>Person</literal> entries. Now, if we want to be able to display, update and delete pre-existing <literal>Person</literal> entries in the database, we need to be able to pass the entry identifier to the <literal>PersonHome</literal>. Page parameters are a great way to do that:
+		</para>
+<programlisting>&lt;pages&gt;
+    &lt;page view-id="/editPerson.jsp"&gt;
+        &lt;param name="personId" value="#{personHome.id}"/&gt;
+    &lt;/page&gt;
+&lt;/pages&gt;
+</programlisting>
+		<para>
+			Now we can add the extra operations to our JSF page:
+		</para>
+<programlisting>&lt;h1&gt;
+    &lt;h:outputText rendered="#{!personHome.managed}" value="Create Person"/&gt;
+    &lt;h:outputText rendered="#{personHome.managed}" value="Edit Person"/&gt;
+&lt;/h1&gt;
+&lt;h:form&gt;
+    &lt;div&gt;First name: &lt;h:inputText value="#{person.firstName}"/&gt;&lt;/div&gt;
+    &lt;div&gt;Last name: &lt;h:inputText value="#{person.lastName}"/&gt;&lt;/div&gt;
+    &lt;div&gt;
+        &lt;h:commandButton value="Create Person" action="#{personHome.persist}" 
+                             rendered="#{!personHome.managed}"/&gt;
+        &lt;h:commandButton value="Update Person" action="#{personHome.update}" 
+                             rendered="#{personHome.managed}"/&gt;
+        &lt;h:commandButton value="Delete Person" action="#{personHome.remove}" 
+                             rendered="#{personHome.managed}"/&gt;
+    &lt;/div&gt;
+&lt;/h:form&gt;
+</programlisting>
+		<para>
+			When we link to the page with no request parameters, the page will be displayed as a <emphasis>Create Person</emphasis> page. When we provide a value for the <literal>personId</literal> request parameter, it will be an <emphasis>Edit Person</emphasis> page.
+		</para>
+		<para>
+			Suppose we need to create <literal>Person</literal> entries with their nationality initialized. We can do that easily, via configuration:
+		</para>
+<programlisting>&lt;factory name="person" 
+         value="#{personHome.instance}"/&gt;
+
+&lt;framework:entity-home name="personHome" 
+                       entity-class="eg.Person" 
+                       new-instance="#{newPerson}"/&gt;
+
+&lt;component name="newPerson" 
+           class="eg.Person"&gt;
+    &lt;property name="nationality"&gt;#{country}&lt;/property&gt;
+&lt;/component&gt;
+</programlisting>
+		<para>
+			Or by extension:
+		</para>
+<programlisting>@Name("personHome")
+public class PersonHome extends EntityHome&lt;Person&gt; {
+    
+    @In Country country;
+    
+    @Factory("person")
+    public Person initPerson() { return getInstance(); }
+    
+    protected Person createInstance() {
+        return new Person(country);
+    }
+    
+}
+</programlisting>
+		<para>
+			Of course, the <literal>Country</literal> could be an object managed by another Home object, for example, <literal>CountryHome</literal>.
+		</para>
+		<para>
+			To add more sophisticated operations (association management, etc), we can just add methods to <literal>PersonHome</literal>.
+		</para>
+<programlisting>@Name("personHome")
+public class PersonHome extends EntityHome&lt;Person&gt; {
+    
+    @In Country country;
+    
+    @Factory("person")
+    public Person initPerson() { return getInstance(); }
+    
+    protected Person createInstance() {
+        return new Person(country);
+    }
+    
+    public void migrate()
+    {
+        getInstance().setCountry(country);
+        update();
+    }
+    
+}
+</programlisting>
+		<para>
+			The Home object automatically displays faces messages when an operation is successful. To customize these messages we can, again, use configuration:
+		</para>
+<programlisting>&lt;factory name="person" 
+         value="#{personHome.instance}"/&gt;
+
+&lt;framework:entity-home name="personHome"
+                       entity-class="eg.Person"
+                       new-instance="#{newPerson}"&gt;
+    &lt;framework:created-message&gt;New person #{person.firstName} #{person.lastName} created&lt;/framework:created-message&gt;
+    &lt;framework:deleted-message&gt;Person #{person.firstName} #{person.lastName} deleted&lt;/framework:deleted-message&gt;
+    &lt;framework:updated-message&gt;Person #{person.firstName} #{person.lastName} updated&lt;/framework:updated-message&gt;
+&lt;/framework:entity-home&gt;
+
+&lt;component name="newPerson" 
+           class="eg.Person"&gt;
+    &lt;property name="nationality"&gt;#{country}&lt;/property&gt;
+&lt;/component&gt;
+</programlisting>
+		<para>
+			Or extension:
+		</para>
+<programlisting>@Name("personHome")
+public class PersonHome extends EntityHome&lt;Person&gt; {
+    
+    @In Country country;
+    
+    @Factory("person")
+    public Person initPerson() { return getInstance(); }
+    
+    protected Person createInstance() {
+        return new Person(country);
+    }
+    
+    protected String getCreatedMessage() { return "New person #{person.firstName} 
+      #{person.lastName} created"; }
+    protected String getUpdatedMessage() { return "Person #{person.firstName} 
+      #{person.lastName} updated"; }
+    protected String getDeletedMessage() { return "Person #{person.firstName} 
+      #{person.lastName} deleted"; }
+    
+}
+</programlisting>
+		<para>
+			But the best way to specify the messages is to put them in a resource bundle known to Seam (the bundle named <literal>messages</literal>, by default).
+		</para>
+<programlisting>Person_created=New person #{person.firstName} #{person.lastName} created
+Person_deleted=Person #{person.firstName} #{person.lastName} deleted
+Person_updated=Person #{person.firstName} #{person.lastName} updated
+</programlisting>
+		<para>
+			This enables internationalization, and keeps your code and configuration clean of presentation concerns.
+		</para>
+		<para>
+			The final step is to add validation functionality to the page, using <literal>&lt;s:validateAll&gt;</literal> and <literal>&lt;s:decorate&gt;</literal>, but I&#39;ll leave that for you to figure out.
+		</para>
+	</section>
+	
+	<section id="Seam_Reference_Guide-The_Seam_Application_Framework-Query_objects">
+		<title>Query objects</title>
+		<para>
+			If we need a list of all <literal>Person</literal> instance in the database, we can use a Query object. For example:
+		</para>
+<programlisting>&lt;framework:entity-query name="people" 
+                        ejbql="select p from Person p"/&gt;
+</programlisting>
+		<para>
+			We can use it from a JSF page:
+		</para>
+<programlisting>&lt;h1&gt;List of people&lt;/h1&gt;
+&lt;h:dataTable value="#{people.resultList}" var="person"&gt;
+    &lt;h:column&gt;
+        &lt;s:link view="/editPerson.jsp" value="#{person.firstName} #{person.lastName}"&gt;
+            &lt;f:param name="personId" value="#{person.id}"/&gt;
+        &lt;/s:link&gt;
+    &lt;/h:column&gt;
+&lt;/h:dataTable&gt;
+</programlisting>
+		<para>
+			We probably need to support pagination:
+		</para>
+<programlisting>&lt;framework:entity-query name="people" 
+                        ejbql="select p from Person p" 
+                        order="lastName" 
+                        max-results="20"/&gt;
+</programlisting>
+		<para>
+			We&#39;ll use a page parameter to determine the page to display:
+		</para>
+<programlisting>&lt;pages&gt;
+    &lt;page view-id="/searchPerson.jsp"&gt;
+        &lt;param name="firstResult" value="#{people.firstResult}"/&gt;
+    &lt;/page&gt;
+&lt;/pages&gt;
+</programlisting>
+		<para>
+			The JSF code for a pagination control is a bit verbose, but manageable:
+		</para>
+<programlisting>&lt;h1&gt;Search for people&lt;/h1&gt;
+&lt;h:dataTable value="#{people.resultList}" var="person"&gt;
+    &lt;h:column&gt;
+        &lt;s:link view="/editPerson.jsp" value="#{person.firstName} #{person.lastName}"&gt;
+            &lt;f:param name="personId" value="#{person.id}"/&gt;
+        &lt;/s:link&gt;
+    &lt;/h:column&gt;
+&lt;/h:dataTable&gt;
+
+&lt;s:link view="/search.xhtml" rendered="#{people.previousExists}" value="First Page"&gt;
+    &lt;f:param name="firstResult" value="0"/&gt;
+&lt;/s:link&gt;
+
+&lt;s:link view="/search.xhtml" rendered="#{people.previousExists}" value="Previous Page"&gt;
+    &lt;f:param name="firstResult" value="#{people.previousFirstResult}"/&gt;
+&lt;/s:link&gt;
+
+&lt;s:link view="/search.xhtml" rendered="#{people.nextExists}" value="Next Page"&gt;
+    &lt;f:param name="firstResult" value="#{people.nextFirstResult}"/&gt;
+&lt;/s:link&gt;
+
+&lt;s:link view="/search.xhtml" rendered="#{people.nextExists}" value="Last Page"&gt;
+    &lt;f:param name="firstResult" value="#{people.lastFirstResult}"/&gt;
+&lt;/s:link&gt;
+</programlisting>
+		<para>
+			Real search screens let the user enter a bunch of optional search criteria to narrow the list of results returned. The Query object lets you specify optional "restrictions" to support this important usecase:
+		</para>
+<programlisting>&lt;component name="examplePerson" class="Person"/&gt;
+        
+&lt;framework:entity-query name="people" 
+                        ejbql="select p from Person p" 
+                        order="lastName" 
+                        max-results="20"&gt;
+    &lt;framework:restrictions&gt;
+        &lt;value&gt;lower(firstName) like lower( #{examplePerson.firstName} + &#39;%&#39; )&lt;/value&gt;
+        &lt;value&gt;lower(lastName) like lower( #{examplePerson.lastName} + &#39;%&#39; )&lt;/value&gt;
+    &lt;/framework:restrictions&gt;
+&lt;/framework:entity-query&gt;
+</programlisting>
+		<para>
+			Notice the use of an <code>example</code> object.
+		</para>
+<programlisting>&lt;h1&gt;Search for people&lt;/h1&gt;
+&lt;h:form&gt;
+    &lt;div&gt;First name: &lt;h:inputText value="#{examplePerson.firstName}"/&gt;&lt;/div&gt;
+    &lt;div&gt;Last name: &lt;h:inputText value="#{examplePerson.lastName}"/&gt;&lt;/div&gt;
+    &lt;div&gt;&lt;h:commandButton value="Search" action="/search.jsp"/&gt;&lt;/div&gt;
+&lt;/h:form&gt;
+
+&lt;h:dataTable value="#{people.resultList}" var="person"&gt;
+    &lt;h:column&gt;
+        &lt;s:link view="/editPerson.jsp" value="#{person.firstName} #{person.lastName}"&gt;
+            &lt;f:param name="personId" value="#{person.id}"/&gt;
+        &lt;/s:link&gt;
+    &lt;/h:column&gt;
+&lt;/h:dataTable&gt;
+</programlisting>
+		<para>
+			The examples in this section have all shown reuse by configuration. However, reuse by extension is equally possible for Query objects.
+		</para>
+	</section>
+	
+	<section id="Seam_Reference_Guide-The_Seam_Application_Framework-Controller_objects">
+		<title>Controller objects</title>
+		<para>
+			A totally optional part of the Seam Application Framework is the class <literal>Controller</literal> and its subclasses <literal>EntityController</literal><literal>HibernateEntityController</literal> and <literal>BusinessProcessController</literal>. These classes provide nothing more than some convenience methods for access to commonly used built-in components and methods of built-in components. They help save a few keystrokes (characters can add up!) and provide a great launchpad for new users to explore the rich functionality built in to Seam.
+		</para>
+		<para>
+			For example, here is what <literal>RegisterAction</literal> from the Seam registration example would look like:
+		</para>
+<programlisting>@Stateless
+ at Name("register")
+public class RegisterAction extends EntityController implements Register
+{
+
+   @In private User user;
+   
+   public String register()
+   {
+      List existing = createQuery("select u.username from User u where u.username=:username")
+         .setParameter("username", user.getUsername())
+         .getResultList();
+      
+      if ( existing.size()==0 )
+      {
+         persist(user);
+         info("Registered new user #{user.username}");
+         return "/registered.jspx";
+      }
+      else
+      {
+         addFacesMessage("User #{user.username} already exists");
+         return null;
+      }
+   }
+
+}
+</programlisting>
+<!--		<para>
+			As you can see, its not an earthshattering improvement...
+		</para> -->
+	</section>
+
+</chapter>
+


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Framework.xml
___________________________________________________________________
Name: svn:executable
   + *

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Gettingstarted.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Gettingstarted.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Gettingstarted.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,358 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Seam_Reference_Guide-Getting_started_with_Seam_using_seam_gen">
+	<title>Getting started with Seam, using seam-gen</title>
+	<para>
+		The Seam distribution includes a command line utility that makes it really easy to set up an Eclipse project, generate some simple Seam skeleton code, and reverse engineer an application from a pre-existing database.
+	</para>
+	<para>
+		This is the easy way to get your feet wet with Seam, and gives you some ammunition for next time you find yourself trapped in an elevator with one of those tedious Ruby guys ranting about how great and wonderful his new toy is for building totally trivial applications that put things in databases.
+	</para>
+	<para>
+		In this release, seam-gen works best for people with JBoss AS. You can use the generated project with other J2EE or Java EE 5 application servers by making a few manual changes to the project configuration.
+	</para>
+	<para>
+		You <emphasis>can</emphasis> use seam-gen without Eclipse, but in this tutorial, we want to show you how to use it in conjunction with Eclipse for debugging and integration testing. If you do not want to install Eclipse, you can still follow along with this tutorial; all steps can be peformed from the command line.
+	</para>
+	<para>
+		Seam-gen is basically just a big ugly Ant script wrapped around Hibernate Tools, together with some templates. Which means it is easy to customize if you need to.
+	</para>
+	<section id="Seam_Reference_Guide-Getting_started_with_Seam_using_seam_gen-Before_you_start">
+		<title>Before you start</title>
+		<para>
+			Make sure you have JDK 5 or JDK 6, JBoss AS 4.0.5 and Ant 1.6, along with recent versions of Eclipse, the JBoss IDE plugin for Eclipse and the TestNG plugin for Eclipse correctly installed before starting. Add your JBoss installation to the JBoss Server View in Eclipse. Start JBoss in debug mode. Finally, start a command prompt in the directory where you unzipped the Seam distribution.
+		</para>
+		<para>
+			JBoss has sophisticated support for hot re-deployment of WARs and EARs. Unfortunately, due to bugs in the JVM, repeated redeployment of an EAR, which is common during development and eventually causing the JVM to run out of perm gen space. For this reason, we recommend running JBoss in a JVM with a large perm gen space at development time. If you are running JBoss from JBoss IDE, you can configure this in the server launch configuration, under <emphasis>VM arguments</emphasis>. We suggest the following values:
+		</para>
+<programlisting>-Xms512m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512</programlisting>
+		<para>
+			If you do not have so much memory available, the following is our minimum recommendation:
+		</para>
+<programlisting>-Xms256m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=256</programlisting>
+		<para>
+			If you are running JBoss from the commandline, you can configure the JVM options in <literal>bin/run.conf</literal>.
+		</para>
+<!--		<para>
+			If you do not want to bother with this stuff now, you do note have to&mdash;come back to it later, when you get your first <literal>OutOfMemoryException</literal>.
+		</para> -->
+	</section>
+	
+	<section id="Seam_Reference_Guide-Getting_started_with_Seam_using_seam_gen-Setting_up_a_new_Eclipse_project">
+		<title>Setting up a new Eclipse project</title>
+		<para>
+			The first thing we need to do is configure seam-gen for your environment: JBoss Enterprise Application Server installation directory, Eclipse workspace, and database connection. It&#39;s easy, just type:
+		</para>
+<programlisting>cd jboss-seam-1.1.x
+seam setup
+</programlisting>
+		<para>
+			And you will be prompted for the needed information:
+		</para>
+<programlisting>C:\Projects\jboss-seam&gt;seam setup
+Buildfile: C:\Projects\jboss-seam\seam-gen\build.xml
+
+setup:
+    [echo] Welcome to seam-gen :-)
+    [input] Enter your Java project workspace [C:/Projects]
+
+    [input] Enter your JBoss home directory [C:/Program Files/jboss-4.0.5.GA]
+
+    [input] Enter the project name [myproject]
+helloworld
+    [input] Is this project deployed as an EAR (with EJB components) or a WAR 
+       (with no EJB support) [ear] (ear,war,)
+
+    [input] Enter the Java package name for your session beans [com.mydomain.helloworld]
+org.jboss.helloworld
+    [input] Enter the Java package name for your entity beans [org.jboss.helloworld]
+
+    [input] Enter the Java package name for your test cases [org.jboss.helloworld.test]
+
+    [input] What kind of database are you using? [hsql] 
+    (hsql,mysql,oracle,postgres,mssql,db2,sybase,)
+mysql
+    [input] Enter the Hibernate dialect for your database [org.hibernate.dialect.MySQLDialect]
+
+    [input] Enter the filesystem path to the JDBC driver jar [lib/hsqldb.jar]
+../../mysql-connector.jar
+    [input] Enter JDBC driver class for your database [com.mysql.jdbc.Driver]
+
+    [input] Enter the JDBC URL for your database [jdbc:mysql:///test]
+
+    [input] Enter database username [sa]
+gavin
+    [input] Enter database password []
+
+    [input] Are you working with tables that already exist in the database? [n] (y,n,)
+y
+    [input] Do you want to drop and recreate the database tables and data in import.sql 
+    each time you deploy? [n] (y,n,)
+n
+[propertyfile] Creating new property file: C:\Projects\jboss-seam\seam-gen\build.properties
+     [echo] Installing JDBC driver jar to JBoss server
+     [echo] Type &#39;seam new-project&#39; to create the new project
+
+BUILD SUCCESSFUL
+Total time: 1 minute 17 seconds
+C:\Projects\jboss-seam&gt;
+</programlisting>
+		<para>
+			The tool provides sensible defaults, which you can accept by just pressing enter at the prompt.
+		</para>
+		<para>
+			The most important choice you need to make is between EAR deployment and WAR deployment of your project. EAR projects support EJB 3.0 and require Java EE 5. WAR projects do not support EJB 3.0, but may be deployed to a J2EE environment. The packaging of a WAR is also simpler to understand. If you installed JBoss with the ejb3 profile, choose <literal>ear</literal>. Otherwise, choose <literal>war</literal>. We will assume that you have chosen an EAR deployment for the rest of the tutorial, but you can follow exactly the same steps for a WAR deployment.
+		</para>
+		<para>
+			If you are working with an existing data model, make sure you tell seam-gen that the tables already exist in the database.
+		</para>
+		<para>
+			The settings are stored in <literal>seam-gen/build.properties</literal>, but you can also modify them simply by running <literal>seam setup</literal> a second time.
+		</para>
+		<para>
+			Now we can create a new project in our Eclipse workspace directory, by typing:
+		</para>
+<programlisting>seam new-project</programlisting>
+<programlisting>C:\Projects\jboss-seam&gt;seam new-project
+Buildfile: C:\Projects\jboss-seam\seam-gen\build.xml
+
+validate-workspace:
+
+validate-project:
+
+copy-lib:
+     [echo] Copying project jars ...
+     [copy] Copying 32 files to C:\Projects\helloworld\lib
+     [copy] Copying 9 files to C:\Projects\helloworld\embedded-ejb
+
+file-copy-wtp:
+
+file-copy:
+     [echo] Copying project resources ...
+     [copy] Copying 12 files to C:\Projects\helloworld\resources
+     [copy] Copying 1 file to C:\Projects\helloworld\resources
+     [copy] Copying 5 files to C:\Projects\helloworld\view
+     [copy] Copying 5 files to C:\Projects\helloworld
+    [mkdir] Created dir: C:\Projects\helloworld\src
+
+new-project:
+     [echo] A new Seam project named &#39;helloworld&#39; was created in the /Users/gavin/Documents/workspace directory
+     [echo] Type &#39;seam explode&#39; and go to http://localhost:8080/helloworld
+     [echo] Eclipse Users: Add the project into Eclipse using File &gt; New &gt; Project and select General &gt; Project (not Java Project)
+     [echo] NetBeans Users: Open the project in NetBeans
+
+BUILD SUCCESSFUL
+Total time: 7 seconds
+C:\Projects\jboss-seam&gt;
+</programlisting>
+		<para>
+			This copies the Seam jars, dependent jars and the JDBC driver jar to a new Eclipse project, and generates all needed resources and configuration files, a facelets template file and stylesheet, along with Eclipse metadata and an Ant build script. The Eclipse project will be automatically deployed to an exploded directory structure in JBoss AS as soon as you add the project using <literal>New -&gt; Project... -&gt; General -&gt; Project -&gt; Next</literal>, typing the <literal>Project name</literal> (<literal>helloworld</literal> in this case), and then clicking <literal>Finish</literal>. Do not select <literal>Java Project</literal> from the New Project wizard.
+		</para>
+		<para>
+			If your default JDK in Eclipse is not a Java SE 5 or Java SE 6 JDK, you will need to select a Java SE 5 compliant JDK using <literal>Project -&gt; Properties -&gt; Java Compiler</literal>.
+		</para>
+		<para>
+			Alternatively, you can deploy the project from outside Eclipse by typing <literal>seam explode</literal>.
+		</para>
+		<para>
+			Go to <literal>http://localhost:8080/helloworld</literal> to see a welcome page. This is a facelets page, <literal>view/home.xhtml</literal>, using the template <literal>view/layout/template.xhtml</literal>. You can edit this page, or the template, in eclipse, and see the results <emphasis>immediately</emphasis>, by clicking refresh in your browser.
+		</para>
+		<para>
+			Do not get scared by the XML configuration documents that were generated into the project directory. They are mostly standard Java EE stuff, the stuff you need to create once and then never look at again, and they are 90% the same between all Seam projects. (They are so easy to write that even seam-gen can do it.)
+		</para>
+		<para>
+			The generated project includes three database and persistence configurations. The <literal>jboss-beans.xml</literal>, <literal>persistence-test.xml</literal> and <literal>import-test.sql</literal> files are used when running the TestNG unit tests against HSQLDB. The database schema and the test data in <literal>import-test.sql</literal> is always exported to the database before running tests. The <literal>myproject-dev-ds.xml</literal>, <literal>persistence-dev.xml</literal>and <literal>import-dev.sql</literal> files are for use when deploying the application to your development database. The schema might be exported automatically at deployment, depending upon whether you told seam-gen that you are working with an existing database. The <literal>myproject-prod-ds.xml</literal>, <literal>persistence-prod.xml</literal>and <literal>import-prod.sql</literal> files are for use when deploying the application to your production database. The schema is not exported automatically!
  at deployment.
+		</para>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Getting_started_with_Seam_using_seam_gen-Creating_a_new_action">
+		<title>Creating a new action</title>
+		<para>
+			If you are used to traditional action-style web frameworks, you are probably wondering how you can create a simple webpage with a stateless action method in Java. If you type:
+		</para>
+<programlisting>seam new-action</programlisting>
+		<para>
+			Seam will prompt for some information, and generate a new facelets page and Seam component for your project.
+		</para>
+<programlisting>C:\Projects\jboss-seam&gt;seam new-action ping
+Buildfile: C:\Projects\jboss-seam\seam-gen\build.xml
+
+validate-workspace:
+
+validate-project:
+
+action-input:
+    [input] Enter the Seam component name
+ping
+    [input] Enter the local interface name [Ping]
+
+    [input] Enter the bean class name [PingBean]
+
+    [input] Enter the action method name [ping]
+
+    [input] Enter the page name [ping]
+
+
+setup-filters:
+
+new-action:
+     [echo] Creating a new stateless session bean component with an action method
+     [copy] Copying 1 file to C:\Projects\hello\src\com\hello
+     [copy] Copying 1 file to C:\Projects\hello\src\com\hello
+     [copy] Copying 1 file to C:\Projects\hello\src\com\hello\test
+     [copy] Copying 1 file to C:\Projects\hello\src\com\hello\test
+     [copy] Copying 1 file to C:\Projects\hello\view
+     [echo] Type &#39;seam restart&#39; and go to 
+     http://localhost:8080/helloworld/ping.seam
+
+BUILD SUCCESSFUL
+Total time: 13 seconds
+C:\Projects\jboss-seam&gt;
+</programlisting>
+		<para>
+			Because we have added a new Seam component, we need to restart the exploded directory deployment. You can do this by typing <literal>seam restart</literal>, or by running the <literal>restart</literal> target in the generated project <literal>build.xml</literal> file from inside Eclipse. Another way to force a restart is to edit the file <literal>resources/META-INF/application.xml</literal> in Eclipse. <emphasis>Note that you do not need to restart JBoss each time you change the application.</emphasis>
+		</para>
+		<para>
+			Now go to <literal>http://localhost:8080/helloworld/ping.seam</literal> and click the button. You can see the code behind this action by looking in the project <literal>src</literal> directory. Put a breakpoint in the <literal>ping()</literal> method, and click the button again.
+		</para>
+		<para>
+			Finally, locate the <literal>PingTest.xml</literal> file in the test package and run the integration tests using the TestNG plugin for Eclipse. Alternatively, run the tests using <literal>seam test</literal> or the <literal>test</literal> target of the generated build.
+		</para>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Getting_started_with_Seam_using_seam_gen-Creating_a_form_with_an_action">
+		<title>Creating a form with an action</title>
+		<para>
+			The next step is to create a form. Type:
+		</para>
+<programlisting>seam new-form</programlisting>
+<programlisting>C:\Projects\jboss-seam&gt;seam new-form
+Buildfile: C:\Projects\jboss-seam\seam-gen\build.xml
+
+validate-workspace:
+
+validate-project:
+
+action-input:
+    [input] Enter the Seam component name
+hello
+    [input] Enter the local interface name [Hello]
+
+    [input] Enter the bean class name [HelloBean]
+
+    [input] Enter the action method name [hello]
+
+    [input] Enter the page name [hello]
+
+
+setup-filters:
+
+new-form:
+     [echo] Creating a new stateful session bean component with an action method
+     [copy] Copying 1 file to C:\Projects\hello\src\com\hello
+     [copy] Copying 1 file to C:\Projects\hello\src\com\hello
+     [copy] Copying 1 file to C:\Projects\hello\src\com\hello\test
+     [copy] Copying 1 file to C:\Projects\hello\view
+     [copy] Copying 1 file to C:\Projects\hello\src\com\hello\test
+     [echo] Type &#39;seam restart&#39; and go to http://localhost:8080/hello/hello.seam
+
+BUILD SUCCESSFUL
+Total time: 5 seconds
+C:\Projects\jboss-seam&gt;
+</programlisting>
+		<para>
+			Restart the application again, and go to <literal>http://localhost:8080/helloworld/hello.seam</literal>. Then take a look at the generated code. Run the test. Try adding some new fields to the form and Seam component (remember to restart the deploment each time you change the Java code).
+		</para>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Getting_started_with_Seam_using_seam_gen-Generating_an_application_from_an_existing_database">
+		<title>Generating an application from an existing database</title>
+		<para>
+			Manually create some tables in your database. (If you need to switch to a different database, just run <literal>seam setup</literal> again.) Now type:
+		</para>
+<programlisting>seam generate-entities</programlisting>
+		<para>
+			Restart the deployment, and go to <literal>http://localhost:8080/helloworld</literal>. You can browse the database, edit existing objects, and create new objects. If you look at the generated code, you will probably be amazed how simple it is. Seam was designed so that data access code is easy to write by hand, even for people who do not want to cheat by using seam-gen.
+		</para>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Getting_started_with_Seam_using_seam_gen-Deploying_the_application_as_an_EAR">
+		<title>Deploying the application as an EAR</title>
+		<para>
+			Finally, we want to be able to deploy the application using standard Java EE 5 packaging. First, we need to remove the exploded directory by running <literal>seam unexplode</literal>. To deploy the EAR, we can type <literal>seam deploy</literal> at the command prompt, or run the <literal>deploy</literal> target of the generated project build script. You can undeploy using <literal>seam undeploy</literal> or the <literal>undeploy</literal> target.
+		</para>
+		<para>
+			By default, the application will be deployed with the <emphasis>dev profile</emphasis>. The EAR will include the <literal>persistence-dev.xml</literal> and <literal>import-dev.sql</literal> files, and the <literal>myproject-dev-ds.xml</literal> file will be deployed. You can change the profile, and use the <emphasis>prod profile</emphasis>, by typing
+		</para>
+<programlisting>seam -Dprofile=prod deploy</programlisting>
+		<para>
+			You can even define new deployment profiles for your application. Just add appropriately named files to your project&mdash;for example, <literal>persistence-staging.xml</literal>, <literal>import-staging.sql</literal> and <literal>myproject-staging-ds.xml</literal>&mdash;and select the name of the profile using <literal>-Dprofile=staging</literal>.
+		</para>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Getting_started_with_Seam_using_seam_gen-Seam_and_incremental_hot_deployment">
+		<title>Seam and incremental hot deployment</title>
+		<para>
+			When you deploy your Seam application as an exploded directory, you will get some support for incremental hot deployment at development time. You need to enable debug mode in both Seam and Facelets, by adding this line to <literal>components.xml</literal>:
+		</para>
+<programlisting>&lt;core:init debug="true"/&gt;</programlisting>
+		<para>
+			Now, the following files may be redeployed without requiring a full restart of the web application:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					any facelets page
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					any <literal>pages.xml</literal> file
+				</para>
+			</listitem>
+		</itemizedlist>
+		<para>
+			But if we want to change any Java code, we still need to do a full restart of the application. (In JBoss this may be accomplished by touching the toplevel deployment descriptor: <literal>application.xml</literal> for an EAR deployment, or <literal>web.xml</literal> for a WAR deployment.)
+		</para>
+		<para>
+			But if you really want a fast edit/compile/test cycle, Seam supports incremental redeployment of JavaBean components. To make use of this functionality, you must deploy the JavaBean components into the <literal>WEB-INF/dev</literal> directory, so that they will be loaded by a special Seam classloader, instead of by the WAR or EAR classloader.
+		</para>
+		<para>
+			You need to be aware of the following limitations:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					the components must be JavaBean components, they cannot be EJB3 beans (we are working on fixing this limitation)
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					entities can never be hot-deloyed
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					components deployed via <literal>components.xml</literal> may not be hot-deployed
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					the hot-deployable components will not be visible to any classes deployed outside of <literal>WEB-INF/dev</literal>
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					Seam debug mode must be enabled
+				</para>
+			</listitem>
+		</itemizedlist>
+		<para>
+			If you create a WAR project using seam-gen, incremental hot deployment is available out of the box for classes in the <literal>src/action</literal> source directory. However, seam-gen does not support incremental hot deployment for EAR projects.
+		</para>
+	</section>
+
+</chapter>
+


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Gettingstarted.xml
___________________________________________________________________
Name: svn:executable
   + *

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/I18n.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/I18n.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/I18n.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,217 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Seam_Reference_Guide-Internationalization_and_themes">
+	<title>Internationalization and themes</title>
+	<para>
+		Seam makes it easy to build internationalized applications by providing several built-in components for handling multi-language UI messages.
+	</para>
+	<section id="Seam_Reference_Guide-Internationalization_and_themes-Locales">
+		<title>Locales</title>
+		<para>
+			Each user login session has an associated instance of <literal>java.util.Locale</literal> (available to the application as a session-scoped component named <literal>locale</literal>). Under normal circumstances, you will not need to do any special configuration to set the locale. Seam just delegates to JSF to determine the active locale:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>If there is a locale associated with the HTTP request (the browser locale), and that locale is in the list of supported locales from <literal>faces-config.xml</literal>, use that locale for the rest of the session.</para>
+			</listitem>
+			<listitem>
+				<para>Otherwise, if a default locale was specified in the <literal>faces-config.xml</literal>, use that locale for the rest of the session.</para>
+			</listitem>
+			<listitem>
+				<para>Otherwise, use the default locale of the server.</para>
+			</listitem>
+		</itemizedlist>
+		<para>
+			It is <emphasis>possible</emphasis> to set the locale manually via the Seam configuration properties <literal>org.jboss.seam.core.localeSelector.language</literal>, <literal>org.jboss.seam.core.localeSelector.country</literal> and <literal>org.jboss.seam.core.localeSelector.variant</literal>, but we cannot think of any good reason to ever do this.
+		</para>
+		<para>
+			It is, however, useful to allow the user to set the locale manually via the application user interface. Seam provides built-in functionality for overriding the locale determined by the algorithm above. All you have to do is add the following fragment to a form in your JSP or Facelets page:
+		</para>
+<programlisting>&lt;h:selectOneMenu value="#{localeSelector.language}"&gt;
+    &lt;f:selectItem itemLabel="English" itemValue="en"/&gt;
+    &lt;f:selectItem itemLabel="Deutsch" itemValue="de"/&gt;
+    &lt;f:selectItem itemLabel="Francais" itemValue="fr"/&gt;
+&lt;/h:selectOneMenu&gt;
+&lt;h:commandButton action="#{localeSelector.select}" value="#{messages[&#39;ChangeLanguage&#39;]}"/&gt;
+</programlisting>
+		<para>
+			Or, if you want a list of all supported locales from <literal>faces-config.xml</literal>, just use:
+		</para>
+<programlisting>&lt;h:selectOneMenu value="#{localeSelector.localeString}"&gt;
+    &lt;f:selectItems value="#{localeSelector.supportedLocales}"/&gt;
+&lt;/h:selectOneMenu&gt;
+&lt;h:commandButton action="#{localeSelector.select}" value="#{messages[&#39;ChangeLanguage&#39;]}"/&gt;
+</programlisting>
+		<para>
+			When this use selects an item from the drop-down, and clicks the button, the Seam and JSF locales will be overridden for the rest of the session.
+		</para>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Internationalization_and_themes-Labels">
+		<title>Labels</title>
+		<para>
+			JSF supports internationalization of user interface labels and descriptive text via the use of <literal>&lt;f:loadBundle /&gt;</literal>. You can use this approach in Seam applications. Alternatively, you can take advantage of the Seam <literal>messages</literal> component to display templated labels with embedded EL expressions.
+		</para>
+		<section id="Seam_Reference_Guide-Labels-Defining_labels">
+			<title>Defining labels</title>
+			<para>
+				Each login session has an associated instance of <literal>java.util.ResourceBundle</literal> (available to the application as a session-scoped component named <literal>org.jboss.seam.core.resourceBundle</literal>). You&#39;ll need to make your internationalized labels available via this special resource bundle. By default, the resource bundle used by Seam is named <literal>messages</literal> and so you&#39;ll need to define your labels in files named <literal>messages.properties</literal>, <literal>messages_en.properties</literal>, <literal>messages_en_AU.properties</literal>, etc. These files usually belong in the <literal>WEB-INF/classes</literal> directory.
+			</para>
+			<para>
+				So, in <literal>messages_en.properties</literal>:
+			</para>
+<programlisting>Hello=Hello</programlisting>
+			<para>
+				And in <literal>messages_en_AU.properties</literal>:
+			</para>
+<programlisting>Hello=G&#39;day</programlisting>
+			<para>
+				You can select a different name for the resource bundle by setting the Seam configuration property named <literal>org.jboss.seam.core.resourceBundle.bundleNames</literal>. You can even specify a list of resource bundle names to be searched (depth first) for messages.
+			</para>
+<programlisting>&lt;core:resource-bundle&gt;
+    &lt;core:bundle-names&gt;
+        &lt;value&gt;mycompany_messages&lt;/value&gt;
+        &lt;value&gt;standard_messages&lt;/value&gt;       
+    &lt;/core:bundle-names&gt;
+&lt;/core:resource-bundle&gt;
+</programlisting>
+			<para>
+				If you want to define a message just for a particular page, you can specify it in a resource bundle with the same name as the JSF view id, with the leading <literal>/</literal> and trailing file extension removed. So we could put our message in <literal>welcome/hello_en.properties</literal> if we only needed to display the message on <literal>/welcome/hello.jsp</literal>.
+			</para>
+			<para>
+				You can even specify an explicit bundle name in <literal>pages.xml</literal>:
+			</para>
+<programlisting>&lt;page view-id="/welcome/hello.jsp" bundle="HelloMessages"/&gt;</programlisting>
+			<para>
+				Then we could use messages defined in <literal>HelloMessages.properties</literal> on <literal>/welcome/hello.jsp</literal>.
+			</para>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Labels-Displaying_labels">
+			<title>Displaying labels</title>
+			<para>
+				If you define your labels using the Seam resource bundle, you will be able to use them without having to type <literal>&lt;f:loadBundle ... /&gt;</literal> on every page. Instead, you can simply type:
+			</para>
+<programlisting>&lt;h:outputText value="#{messages[&#39;Hello&#39;]}"/&gt;</programlisting>
+			<para>
+				or:
+			</para>
+<programlisting>&lt;h:outputText value="#{messages.Hello}"/&gt;</programlisting>
+			<para>
+				Even better, the messages themselves may contain EL expressions:
+			</para>
+<programlisting>Hello=Hello, #{user.firstName} #{user.lastName}</programlisting>
+<programlisting>Hello=G&#39;day, #{user.firstName}</programlisting>
+			<para>
+				You can even use the messages in your code:
+			</para>
+<programlisting>@In private Map&lt;String, String&gt; messages;</programlisting>
+<programlisting>@In("#{messages[&#39;Hello&#39;]}") private String helloMessage;</programlisting>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Labels-Faces_messages">
+			<title>Faces messages</title>
+			<para>
+				The <literal>facesMessages</literal> component is a super-convenient way to display success or failure messages to the user. The functionality we just described also works for faces messages:
+			</para>
+<programlisting>@Name("hello")
+ at Stateless
+public class HelloBean implements Hello {
+    @In FacesMessages facesMessages;
+    
+    public String sayIt() {
+        facesMessages.addFromResourceBundle("Hello");
+    }
+}
+</programlisting>
+			<para>
+				This will display <literal>Hello, Gavin King</literal> or <literal>G&#39;day, Gavin</literal>, depending upon the user&#39;s locale.
+			</para>
+		</section>
+
+	</section>
+	
+	<section id="Seam_Reference_Guide-Internationalization_and_themes-Timezones">
+		<title>Timezones</title>
+		<para>
+			There is also a session-scoped instance of <literal>java.util.Timezone</literal>, named <literal>org.jboss.seam.core.timezone</literal>, and a Seam component for changing the timezone named <literal>org.jboss.seam.core.timezoneSelector</literal>. By default, the timezone is the default timezone of the server. Unfortunately, the JSF specification says that all dates and times should be assumed to be UTC, and displayed as UTC, unless a timezone is explicitly specified using <literal>&lt;f:convertDateTime&gt;</literal>. This is an extremely inconvenient default behavior.
+		</para>
+		<para>
+			Seam overrides this behavior, and defaults all dates and times to the Seam timezone. In addition, Seam provides the <literal>&lt;s:convertDateTime&gt;</literal> tag which always performs conversions in the Seam timezone.
+		</para>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Internationalization_and_themes-Themes">
+		<title>Themes</title>
+		<para>
+			Seam applications are also very easily skinnable. The theme API is very similar to the localization API, but of course these two concerns are orthogonal, and some applications support both localization and themes.
+		</para>
+		<para>
+			First, configure the set of supported themes:
+		</para>
+<programlisting>&lt;theme:theme-selector cookie-enabled="true"&gt;
+    &lt;theme:available-themes&gt;
+        &lt;value&gt;default&lt;/value&gt;
+        &lt;value&gt;accessible&lt;/value&gt;
+        &lt;value&gt;printable&lt;/value&gt;
+    &lt;/theme:available-themes&gt;
+&lt;/theme:theme-selector&gt;
+</programlisting>
+<note>
+		<para>
+			The first theme listed is the default theme.
+		</para>
+	</note>
+		<para>
+			Themes are defined in a properties file with the same name as the theme. For example, the <literal>default</literal> theme is defined as a set of entries in <literal>default.properties</literal>. For example, <literal>default.properties</literal> might define:
+		</para>
+<programlisting>css ../screen.css
+template template.xhtml
+</programlisting>
+		<para>
+			Usually the entries in a theme resource bundle will be paths to CSS styles or images and names of facelets templates (unlike localization resource bundles which are usually text).
+		</para>
+		<para>
+			Now we can use these entries in our JSP or facelets pages. For example, to theme the stylesheet in a facelets page:
+		</para>
+<programlisting>&lt;link href="#{theme.css}" rel="stylesheet" type="text/css" /&gt;</programlisting>
+		<para>
+			Most powerfully, facelets lets us theme the template used by a <literal>&lt;ui:composition&gt;</literal>:
+		</para>
+<programlisting>&lt;ui:composition xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:ui="http://java.sun.com/jsf/facelets"
+    xmlns:h="http://java.sun.com/jsf/html"
+    xmlns:f="http://java.sun.com/jsf/core"
+    template="#{theme.template}"&gt;
+</programlisting>
+		<para>
+			Just like the locale selector, there is a built-in theme selector to allow the user to freely switch themes:
+		</para>
+<programlisting>&lt;h:selectOneMenu value="#{themeSelector.theme}"&gt;
+    &lt;f:selectItems value="#{themeSelector.themes}"/&gt;
+&lt;/h:selectOneMenu&gt;
+&lt;h:commandButton action="#{themeSelector.select}" value="Select Theme"/&gt;
+</programlisting>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Internationalization_and_themes-Persisting_locale_and_theme_preferences_via_cookies">
+		<title>Persisting locale and theme preferences via cookies</title>
+		<para>
+			The locale selector, theme selector and timezone selector all support persistence of locale and theme preference to a cookie. Simply set the <literal>cookie-enabled</literal> configuration property:
+		</para>
+<programlisting>&lt;theme:theme-selector cookie-enabled="true"&gt;
+    &lt;theme:available-themes&gt;
+        &lt;value&gt;default&lt;/value&gt;
+        &lt;value&gt;accessible&lt;/value&gt;
+        &lt;value&gt;printable&lt;/value&gt;
+    &lt;/theme:available-themes&gt;
+&lt;/theme:theme-selector&gt;
+
+&lt;core:locale-selector cookie-enabled="true"/&gt;
+</programlisting>
+	</section>
+
+</chapter>
+


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/I18n.xml
___________________________________________________________________
Name: svn:executable
   + *

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Itext.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Itext.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Itext.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1076 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Seam_Reference_Guide-iText_PDF_generation">
+	<title>iText PDF generation</title>
+	<para>
+		Seam now includes an component set for generating documents using iText. The primary focus of Seam&#39;s iText document support is for the generation of PDF doucuments, but Seam also offers basic support for RTF document generation.
+	</para>
+	<section id="Seam_Reference_Guide-iText_PDF_generation-Using_PDF_Support">
+		<title>Using PDF Support</title>
+		<para>
+			iText support is provided by <literal>jboss-seam-pdf.jar</literal>. This JAR contains the iText JSF controls, which are used to construct views that can render to PDF, and the DocumentStore component, which serves the rendered documents to the user. To include PDF support in your application, included <literal>jboss-seam-pdf.jar</literal> in your <literal>WEB-INF/lib</literal> directory along with the iText JAR file. There is no further configuration needed to use Seam&#39;s iText support.
+		</para>
+		<para>
+			The Seam iText module requires the use of Facelets as the view technology. Future versions of the library may also support the use of JSP. Additionally, it requires the use of the seam-ui package.
+		</para>
+		<para>
+			The <literal>examples/itext</literal> project contains an example of the PDF support in action. It demonstrates proper deployment packaging, and it contains a number examples that demonstrate the key PDF generation features current supported.
+		</para>
+	</section>
+	
+	<section id="Seam_Reference_Guide-iText_PDF_generation-Creating_a_document">
+		<title>Creating a document</title>
+		<para>
+			Documents are generated by facelets documents using tags in the <literal>http://jboss.com/products/seam/pdf</literal> namespace. Documents should always have the <literal>document</literal> tag at the root of the document. The <literal>document</literal> tag prepares Seam to generate a document into the DocumentStore and renders an HTML redirect to that stored content. The following is a a small PDF document consisting only a single line of text:
+		</para>
+<programlisting>
+&lt;p:document xmlns:p="http://jboss.com/products/seam/pdf"&gt;                                                      
+   The document goes here.                                                                                             
+&lt;/p:document&gt;
+        
+</programlisting>
+		<section id="Seam_Reference_Guide-Creating_a_document-pdocument">
+			<title>p:document</title>
+			<para>
+				The <literal>p:document</literal> tag supports the following attributes:
+			</para>
+			<variablelist>
+				<varlistentry>
+					<term><literal>type</literal></term>
+					<listitem>
+						<para>
+							The type of the document to be produced. Valid values are <literal>PDF</literal>, <literal>RTF</literal> and <literal>HTML</literal> modes. Seam defaults to PDF generation, and many of the features only work correctly when generating PDF documents.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>pageSize</literal></term>
+					<listitem>
+						<para>
+							The size of the page to be generate. The most commonly used values would be <literal>LETTER</literal> and <literal>A4</literal>. A full list of supported pages sizes can be found in <literal>com.lowagie.text.PageSize</literal> class. Alternatively, pageSize can provide the width and height of the page directly. The value <emphasis>612 792</emphasis>, for example, is equizalent to the LETTER page size.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>orientation</literal></term>
+					<listitem>
+						<para>
+							The orientation of the page. Valid values are <literal>portrait</literal> and <literal>landscape</literal>. In landscape mode, the height and width page size values are reversed.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>margins</literal></term>
+					<listitem>
+						<para>
+							The left, right, top and bottom margin values.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>marginMirroring</literal></term>
+					<listitem>
+						<para>
+							Indicates that margin settings should be reversed an alternating pages.
+						</para>
+					</listitem>
+				</varlistentry>
+			</variablelist>
+			<para>
+				Document metadata is also set as attributes of the document tag. The following metadata fields are supported:
+			</para>
+			<variablelist>
+				<varlistentry>
+					<term><literal>title</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>subject</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>keywords</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>author</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>creator</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+			</variablelist>
+		</section>
+
+	</section>
+	
+	<section id="Seam_Reference_Guide-iText_PDF_generation-Basic_Text_Elements">
+		<title>Basic Text Elements</title>
+		<para>
+			Useful documents will need to contain more than just text; however, the standard UI components are geared towards HTML generation and are not useful for generating PDF content. Instead, Seam provides a special UI components for generating suitable PDF content. Tags like <literal>&lt;p:image&gt;</literal> and <literal>&lt;p:paragraph&gt;</literal> are the basic foundations of simple documents. Tags like <literal>&lt;p:font&gt;</literal> provide style information to all the content surrounging them.
+		</para>
+<programlisting>
+&lt;p:document xmlns:p="http://jboss.com/products/seam/pdf"&gt; 
+    &lt;p:image alignment="right" wrap="true" resource="/logo.jpg" /&gt;
+    &lt;p:font size="24"&gt;
+        &lt;p:paragraph spacingAfter="50"&gt;My First Document&lt;/p:paragraph&gt;
+    &lt;/p:font&gt;
+
+    &lt;p:paragraph alignment="justify"&gt;
+        This is a simple document.  It isn&#39;t very fancy.
+    &lt;/p:paragraph&gt;
+&lt;/p:document&gt;
+        
+</programlisting>
+		<section id="Seam_Reference_Guide-Basic_Text_Elements-pparagraph">
+			<title>p:paragraph</title>
+			<para>
+				Most uses of text should be sectioned into paragraphs so that text fragments can be flowed, formatted and styled in logical groups.
+			</para>
+			<variablelist>
+				<varlistentry>
+					<term><literal>firstLineIndent</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>extraParagraphSpace</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>leading</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>multipliedLeading</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>spacingBefore</literal></term>
+					<listitem>
+						<para>
+							The blank space to be inserted before the element.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>spacingAfter</literal></term>
+					<listitem>
+						<para>
+							The blank space to be inserted after the element.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>indentationLeft</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>indentationRight</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>keepTogether</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+			</variablelist>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Basic_Text_Elements-ptext">
+			<title>p:text</title>
+			<para>
+				The <literal>text</literal> tag allows text fragments to be produced from application data using normal JSF converter mechanisms. It is very similar to the <literal>outputText</literal> tag used when rendering HTML documents. Here is an example:
+			</para>
+<programlisting>
+&lt;p:paragraph&gt;
+    The item costs &lt;p:text value="#{product.price}"&gt;
+        &lt;f:convertNumber type="currency" currencySymbol="$"/&gt;
+    &lt;/p:text&gt;
+&lt;/p:paragraph&gt;
+            
+</programlisting>
+			<variablelist>
+				<varlistentry>
+					<term><literal>value</literal></term>
+					<listitem>
+						<para>
+							The value to be displayed. This will typically be a value binding expression.
+						</para>
+					</listitem>
+				</varlistentry>
+			</variablelist>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Basic_Text_Elements-pfont">
+			<title>p:font</title>
+			<para>
+				Font declarations have no direct
+			</para>
+			<variablelist>
+				<varlistentry>
+					<term><literal>familyName</literal></term>
+					<listitem>
+						<para>
+							The font family. One of: <literal>COURIER</literal>, <literal>HELVETICA</literal>, <literal>TIMES-ROMAN</literal>, <literal>SYMBOL</literal> or <literal>ZAPFDINGBATS</literal>.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>size</literal></term>
+					<listitem>
+						<para>
+							The point size of the font.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>style</literal></term>
+					<listitem>
+						<para>
+							The font styles. Any combination of : <literal>NORMAL</literal>, <literal>BOLD</literal>, <literal>ITALIC</literal>, <literal>OBLIQUE</literal>, <literal>UNDERLINE</literal>, <literal>LINE-THROUGH</literal>
+						</para>
+					</listitem>
+				</varlistentry>
+			</variablelist>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Basic_Text_Elements-pnewPage">
+			<title>p:newPage</title>
+			<para>
+				<literal>p:newPage</literal> inserts a page break.
+			</para>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Basic_Text_Elements-pimage">
+			<title>p:image</title>
+			<para>
+				<literal>p:image</literal> inserts an image into the document. Images can be be loaded from the classpath or from the web application context using the <literal>resource</literal> attribute.
+			</para>
+<programlisting>&lt;p:image resource="/jboss.jpg" /&gt;</programlisting>
+			<para>
+				Resources can also be dynamically generated by application code. The <literal>imageData</literal> attribute can specify a value binding expression whose value is a <literal>java.awt.Image</literal> object.
+			</para>
+<programlisting>&lt;p:image imageData="#{images.chart}" /&gt;</programlisting>
+			<variablelist>
+				<varlistentry>
+					<term><literal>resource</literal></term>
+					<listitem>
+						<para>
+							The location of the image resource to be included. Resources should be relative to the document root of the web application.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>imageData</literal></term>
+					<listitem>
+						<para>
+							A method expression binding to an application-generated image.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>rotation</literal></term>
+					<listitem>
+						<para>
+							The rotation of the image in degrees.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>height</literal></term>
+					<listitem>
+						<para>
+							The height of the image.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>width</literal></term>
+					<listitem>
+						<para>
+							The width of the image.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>alignment</literal></term>
+					<listitem>
+						<para>
+							The alignment of the image. (see <xref linkend="Seam_Reference_Guide-Document_Constants-Alignment_Values" /> for possible values)
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>alt</literal></term>
+					<listitem>
+						<para>
+							Alternative text representation for the image.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>indentationLeft</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>indentationRight</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>spacingBefore</literal></term>
+					<listitem>
+						<para>
+							The blank space to be inserted before the element.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>spacingAfter</literal></term>
+					<listitem>
+						<para>
+							The blank space to be inserted after the element.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>widthPercentage</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>initialRotation</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>dpi</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>scalePercent</literal></term>
+					<listitem>
+						<para>
+							The scaling factor (as a percentage) to use for the image. This can be expressed as a single percentage value or as two percentage values representing separate x and y scaling percentages.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>wrap</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>underlying</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+			</variablelist>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Basic_Text_Elements-panchor">
+			<title>p:anchor</title>
+			<para>
+				<literal>p:anchor</literal> defines clickable links from a document. It supports the following attributes:
+			</para>
+			<variablelist>
+				<varlistentry>
+					<term><literal>name</literal></term>
+					<listitem>
+						<para>
+							The name of an in-document anchor destination.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>reference</literal></term>
+					<listitem>
+						<para>
+							The destination the link refers to. Links to other points in the document should begin with a <code>#</code>. For example, <code>#link1</code> to refer to an anchor postion with a <literal>name</literal> of <literal>link1</literal>. Links may also be a full URL to point to a resource outside of the document.
+						</para>
+					</listitem>
+				</varlistentry>
+			</variablelist>
+		</section>
+
+	</section>
+	
+	<section id="Seam_Reference_Guide-iText_PDF_generation-Headers_and_Footers">
+		<title>Headers and Footers</title>
+		<section id="Seam_Reference_Guide-Headers_and_Footers-pheader_and_pfooter">
+			<title>p:header and p:footer</title>
+			<para>
+				The <literal>p:header</literal> and <literal>p:footer</literal> components provide the ability to place header and footer text on each page of a generated document, with the exception of the first page. Header and footer declarations should appear near the top of a document.
+			</para>
+			<variablelist>
+				<varlistentry>
+					<term><literal>alignment</literal></term>
+					<listitem>
+						<para>
+							The alignment of the header/footer box section. (see <xref linkend="Seam_Reference_Guide-Document_Constants-Alignment_Values" /> for alignment values)
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>backgroundColor</literal></term>
+					<listitem>
+						<para>
+							The background color of the header/footer box. (see <xref linkend="Seam_Reference_Guide-Document_Constants-Color_Values" /> for color values)
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>borderColor</literal></term>
+					<listitem>
+						<para>
+							The border color of the header/footer box. Individual border sides can be set using <literal>borderColorLeft</literal>, <literal>borderColorRight</literal>, <literal>borderColorTop</literal> and <literal>borderColorBottom</literal>.(see <xref linkend="Seam_Reference_Guide-Document_Constants-Color_Values" /> for color values)
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>borderWidth</literal></term>
+					<listitem>
+						<para>
+							The width of the border. Inidvidual border sides can be specified using <literal>borderWidthLeft</literal>, <literal>borderWidthRight</literal>, <literal>borderWidthTop</literal> and <literal>borderWidthBottom</literal>.
+						</para>
+					</listitem>
+				</varlistentry>
+			</variablelist>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Headers_and_Footers-ppageNumber">
+			<title>p:pageNumber</title>
+			<para>
+				The current page number can be placed inside of a header or footer using the <literal>p:pageNumber</literal> tag. The page number tag can only be used in the context of a header or footer and can only be used once.
+			</para>
+		</section>
+
+	</section>
+	
+	<section id="Seam_Reference_Guide-iText_PDF_generation-Chapters_and_Sections">
+		<title>Chapters and Sections</title>
+		<para>
+			If the generated document follows a book/article structure, the <literal>p:chapter</literal> and <literal>p:section</literal> tags can be used to provide the necessary structure. Sections can only be used inside of chapters, but they may be nested arbitrarily deep. Most PDF viewers provide easy navigation between chapters and sections in a document.
+		</para>
+<programlisting>
+&lt;p:document xmlns:p="http://jboss.com/products/seam/pdf"
+            title="Hello"&gt;
+
+   &lt;p:chapter number="1"&gt;
+      &lt;p:title&gt;&lt;p:paragraph&gt;Hello&lt;/p:paragraph&gt;&lt;/p:title&gt;
+      &lt;p:paragraph&gt;Hello #{user.name}!&lt;/p:paragraph&gt;
+   &lt;/p:chapter&gt;
+
+   &lt;p:chapter number="2"&gt;
+      &lt;p:title&gt;&lt;p:paragraph&gt;Goodbye&lt;/p:paragraph&gt;&lt;/p:title&gt;
+      &lt;p:paragraph&gt;Goodbye #{user.name}.&lt;/p:paragraph&gt;
+   &lt;/p:chapter&gt;
+
+&lt;/p:document&gt;    
+        
+</programlisting>
+		<section id="Seam_Reference_Guide-Chapters_and_Sections-pchapter_and_psection">
+			<title>p:chapter and p:section</title>
+			<variablelist>
+				<varlistentry>
+					<term><literal>number</literal></term>
+					<listitem>
+						<para>
+							The chapter number. Every chapter should be assigned a chapter number.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>numberDepth</literal></term>
+					<listitem>
+						<para>
+							The depth of numbering for section. All sections are numbered relative to their surrounding chapter/sections. The fourth section of of the first section of chapter three would be section 3.1.4, if displayed at the default number depth of three. To omit the chapter number, a number depth of 2 should be used. In that case, the section number would be displayed as 1.4.
+						</para>
+					</listitem>
+				</varlistentry>
+			</variablelist>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Chapters_and_Sections-ptitle">
+			<title>p:title</title>
+			<para>
+				Any chapter or section can contain a <literal>p:title</literal>. The title will be displayed next to the chapter/section number. The body of the title may contain raw text or may be a <literal>p:paragraph</literal>.
+			</para>
+		</section>
+
+	</section>
+	
+	<section id="Seam_Reference_Guide-iText_PDF_generation-Lists">
+		<title>Lists</title>
+		<para>
+			List structures can be displayed using the <literal>p:list</literal> and <literal>p:listItem</literal> tags. Lists may contain arbitrarily-nested sublists. List items may not be used outside of a list. he following document uses the <literal>ui:repeat</literal> tag to to display a list of values retrieved from a Seam component.
+		</para>
+<programlisting>
+&lt;p:document xmlns:p="http://jboss.com/products/seam/pdf"
+            xmlns:ui="http://java.sun.com/jsf/facelets"
+            title="Hello"&gt;
+   &lt;p:list style="numbered"&gt;
+      &lt;ui:repeat value="#{documents}" var="doc"&gt;
+         &lt;p:listItem&gt;#{doc.name}&lt;/p:listItem&gt;
+      &lt;/ui:repeat&gt;
+   &lt;/p:list&gt;
+&lt;/p:document&gt;                
+        
+</programlisting>
+		<section id="Seam_Reference_Guide-Lists-plist">
+			<title>p:list</title>
+			<para>
+				<literal>p:list</literal> supports the following attributes:
+			</para>
+			<variablelist>
+				<varlistentry>
+					<term><literal>style</literal></term>
+					<listitem>
+						<para>
+							The ordering/bulleting style of list. One of: <literal>NUMBERED</literal>, <literal>LETTERED</literal>, <literal>GREEK</literal>, <literal>ROMAN</literal>, <literal>ZAPFDINGBATS</literal>, <literal>ZAPFDINGBATS_NUMBER</literal>. If no style is given, the list items are bulleted.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>listSymbol</literal></term>
+					<listitem>
+						<para>
+							For bulleted lists, specifies the bullet symbol.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>indent</literal></term>
+					<listitem>
+						<para>
+							The indentation level of the list.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>lowerCase</literal></term>
+					<listitem>
+						<para>
+							For list styles using letters, indicates whether the letters should be lower case.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>charNumber</literal></term>
+					<listitem>
+						<para>
+							For ZAPFDINGBATS, indicates the character code of the bullet character.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>numberType</literal></term>
+					<listitem>
+						<para>
+							For ZAPFDINGBATS_NUMBER, indicates the numbering style.
+						</para>
+					</listitem>
+				</varlistentry>
+			</variablelist>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Lists-plistItem">
+			<title>p:listItem</title>
+			<para>
+				<literal>p:listItem</literal> supports the following attributes:
+			</para>
+			<variablelist>
+				<varlistentry>
+					<term><literal>alignment</literal></term>
+					<listitem>
+						<para>
+							The alignment of the list item. (See <xref linkend="Seam_Reference_Guide-Document_Constants-Alignment_Values" /> for possible values)
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>indentationLeft</literal></term>
+					<listitem>
+						<para>
+							The left indentation amount.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>indentationRight</literal></term>
+					<listitem>
+						<para>
+							The right indentation amount.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>listSymbol</literal></term>
+					<listitem>
+						<para>
+							Overrides the default list symbol for this list item.
+						</para>
+					</listitem>
+				</varlistentry>
+			</variablelist>
+		</section>
+
+	</section>
+	
+	<section id="Seam_Reference_Guide-iText_PDF_generation-Tables">
+		<title>Tables</title>
+		<para>
+			Table structures can be created using the <literal>p:table</literal> and <literal>p:cell</literal> tags. Unlike many table structures, there is no explicit row declaration. If a table has 3 columns, then every 3 cells will automatically form a row. Header and footer rows can be declared, and the headers and footers will be repeated in the event a table structure spans multiple pages.
+		</para>
+<programlisting>
+&lt;p:document xmlns:p="http://jboss.com/products/seam/pdf"   
+            xmlns:ui="http://java.sun.com/jsf/facelets"
+            title="Hello"&gt;   
+   &lt;p:table columns="3" headerRows="1"&gt;
+      &lt;p:cell&gt;name&lt;/p:cell&gt;
+      &lt;p:cell&gt;owner&lt;/p:cell&gt;
+      &lt;p:cell&gt;size&lt;/p:cell&gt;
+      &lt;ui:repeat value="#{documents}" var="doc"&gt;
+         &lt;p:cell&gt;#{doc.name}&lt;/p:cell&gt;
+         &lt;p:cell&gt;#{doc.user.name}&lt;/p:cell&gt;
+         &lt;p:cell&gt;#{doc.size}&lt;/p:cell&gt;
+      &lt;/ui:repeat&gt;
+   &lt;/p:table&gt;
+&lt;/p:document&gt;            
+        
+</programlisting>
+		<section id="Seam_Reference_Guide-Tables-ptable">
+			<title>p:table</title>
+			<para>
+				<literal>p:table</literal> supports the following attributes.
+			</para>
+			<variablelist>
+				<varlistentry>
+					<term><literal>columns</literal></term>
+					<listitem>
+						<para>
+							The number of columns (cells) that make up a table row.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>widths</literal></term>
+					<listitem>
+						<para>
+							The relative widths of each column. There should be one value for each column. For example: widths="2 1 1" would indicate that there are 3 columns and the first column should be twice the size of the second and third column.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>headerRows</literal></term>
+					<listitem>
+						<para>
+							The initial number of rows which are considered to be headers or footer rows and should be repeated if the table spans multiple pages.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>footerRows</literal></term>
+					<listitem>
+						<para>
+							The number of rows that are considered to be footer rows. This value is subtracted from the <literal>headerRows</literal> value. If document has 2 rows which make up the header and one row that makes up the footer, <literal>headerRows</literal> should be set to 3 and <literal>footerRows</literal> should be set to 1
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>widthPercentage</literal></term>
+					<listitem>
+						<para>
+							The percentage of the page width that the table spans.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>horizontalAlignment</literal></term>
+					<listitem>
+						<para>
+							The horizontal alignment of the table. (See <xref linkend="Seam_Reference_Guide-Document_Constants-Alignment_Values" /> for possible values)
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>skipFirstHeader</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>runDirection</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>lockedWidth</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>splitRows</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>spacingBefore</literal></term>
+					<listitem>
+						<para>
+							The blank space to be inserted before the element.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>spacingAfter</literal></term>
+					<listitem>
+						<para>
+							The blank space to be inserted after the element.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>extendLastRow</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>headersInEvent</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>splitLate</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>keepTogether</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+			</variablelist>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Tables-pcell">
+			<title>p:cell</title>
+			<para>
+				<literal>p:cell</literal> supports the following attributes.
+			</para>
+			<variablelist>
+				<varlistentry>
+					<term><literal>colspan</literal></term>
+					<listitem>
+						<para>
+							Cells can span more than one column by declaring a <literal>colspan</literal> greater than 1. Tables do not have the ability to span across multiple rows.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>horizontalAlignment</literal></term>
+					<listitem>
+						<para>
+							The horizontal alignment of the cell. (see <xref linkend="Seam_Reference_Guide-Document_Constants-Alignment_Values" /> for possible values)
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>verticalAlignment</literal></term>
+					<listitem>
+						<para>
+							The vertical alignment of the cell. (see <xref linkend="Seam_Reference_Guide-Document_Constants-Alignment_Values" /> for possible values)
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>padding</literal></term>
+					<listitem>
+						<para>
+							Padding on a given side can also be specified using <literal>paddingLeft</literal>, <literal>paddingRight</literal>, <literal>paddingTop</literal> and <literal>paddingBottom</literal>.
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>useBorderPadding</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>leading</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>multipliedLeading</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>indent</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>verticalAlignment</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>extraParagraphSpace</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>fixedHeight</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>noWrap</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>minimumHeight</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>followingIndent</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>rightIndent</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>spaceCharRatio</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>runDirection</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>arabicOptions</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>useAscender</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>grayFill</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+				<varlistentry>
+					<term><literal>rotation</literal></term>
+					<listitem>
+						<para>&#x200B;
+						</para>
+					</listitem>
+				</varlistentry>
+			</variablelist>
+		</section>
+
+	</section>
+	
+	<section id="Seam_Reference_Guide-iText_PDF_generation-Document_Constants">
+		<title>Document Constants</title>
+		<para>
+			This section documents some of the constants shared by attributes on multiple tags.
+		</para>
+		<section id="Seam_Reference_Guide-Document_Constants-Color_Values">
+			<title>Color Values</title>
+			<para>
+				Seam documents do not yet support a full color specification. Currently, only named colors are supported. They are: <literal>white</literal>, <literal>gray</literal>, <literal>lightgray</literal>, <literal>darkgray</literal>, <literal>black</literal>, <literal>red</literal>, <literal>pink</literal>, <literal>yellow</literal>, <literal>green</literal>, <literal>magenta</literal>, <literal>cyan</literal> and <literal>blue</literal>.
+			</para>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Document_Constants-Alignment_Values">
+			<title>Alignment Values</title>
+			<para>
+				Where alignment values are used, the Seam PDF supports the following horizontal alignment values: <literal>left</literal>, <literal>right</literal>, <literal>center</literal>, <literal>justify</literal> and <literal>justifyall</literal>. The vertical alignment values are <literal>top</literal>, <literal>middle</literal>, <literal>bottom</literal>, and <literal>baseline</literal>.
+			</para>
+		</section>
+
+	</section>
+	
+	<section id="Seam_Reference_Guide-iText_PDF_generation-Configuring_iText">
+		<title>Configuring iText</title>
+		<para>
+			Document generation works out of the box with no additional configuration needed. However, there are a few points of configuration that are needed for more serious applications.
+		</para>
+		<para>
+			The default implementation serves PDF documents from a generic URL, <literal>/seam-doc.seam</literal>. Many browsers (and users) would prefer to see URLs that contain the actual PDF name like <literal>/myDocument.pdf</literal>. This capability requires some configuration. To serve PDF files, all *.pdf resources should be mapped to the Seam Servlet Filter and to the DocumentStoreServlet:
+		</para>
+<programlisting>
+&lt;filter&gt;
+    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;
+    &lt;filter-class&gt;org.jboss.seam.servlet.SeamServletFilter&lt;/filter-class&gt;
+&lt;/filter&gt;
+
+&lt;filter-mapping&gt;
+    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;
+    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;
+&lt;/filter-mapping&gt;
+
+&lt;servlet&gt;
+    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;
+    &lt;servlet-class&gt;org.jboss.seam.pdf.DocumentStoreServlet&lt;/servlet-class&gt;
+&lt;/servlet&gt;
+
+&lt;servlet-mapping&gt;
+    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;
+    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;
+&lt;/servlet-mapping&gt;
+</programlisting>
+		<para>
+			The <literal>useExtensions</literal> option on the document store component completes the functionality by instructing the document store to generate URLs with the correct filename extension for the document type being generated.
+		</para>
+<programlisting>        
+&lt;components xmlns="http://jboss.com/products/seam/components"
+            xmlns:pdf="http://jboss.com/products/seam/pdf"&gt;
+    &lt;pdf:documentStore useExtensions="true" /&gt;
+&lt;/components&gt;
+</programlisting>
+		<para>
+			Generated documents are stored in conversation scope and will expire when the conversation ends. At that point, references to the document will be invalid. To You can specify a default view to be shown when a document does not exist using the <literal>errorPage</literal> property of the documentStore.
+		</para>
+<programlisting>        
+&lt;pdf:documentStore useExtensions="true" errorPage="/pdfMissing.seam" /&gt;
+</programlisting>
+	</section>
+	
+	<section id="Seam_Reference_Guide-iText_PDF_generation-iText_links">
+		<title>iText links</title>
+		<para>
+			For further information on iText, see:
+		</para>
+		<para>
+			<itemizedlist>
+				<listitem>
+					<para>
+						<ulink url="http://www.lowagie.com/iText/">iText Home Page</ulink>
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						<ulink url="http://www.manning.com/lowagie/">iText in Action</ulink>
+					</para>
+				</listitem>
+			</itemizedlist>
+		</para>
+	</section>
+
+</chapter>
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Jbpm.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Jbpm.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Jbpm.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,572 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Seam_Reference_Guide-Pageflows_and_business_processes">
+	<title>Pageflows and business processes</title>
+	<para>
+		JBoss jBPM is a business process management engine for any Java SE or EE environment. jBPM lets you represent a business process or user interaction as a graph of nodes representing wait states, decisions, tasks, web pages, etc. The graph is defined using a simple, very readable, XML dialect called jPDL, and may be edited and visualised graphically using an eclipse plugin. jPDL is an extensible language, and is suitable for a range of problems, from defining web application page flow, to traditional workflow management, all the way up to orchestration of services in a SOA environment.
+	</para>
+	<para>
+		Seam applications use jBPM for two different problems:
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				Defining the pageflow involved in complex user interactions. A jPDL process definition defines the page flow for a single conversation. A Seam conversation is considered to be a relatively short-running interaction with a single user.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Defining the overarching business process. The business process may span multiple conversations with multiple users. Its state is persistent in the jBPM database, so it is considered long-running. Coordination of the activities of multiple users is a much more complex problem than scripting an interaction with a single user, so jBPM offers sophisticated facilities for task management and dealing with multiple concurrent paths of execution.
+			</para>
+		</listitem>
+	</itemizedlist>
+	<para>
+		 <emphasis>Pageflow</emphasis>, <emphasis>conversation</emphasis> and <emphasis>task</emphasis> all refer to a single interaction with a single user and operate at different levels or granularity. A business process spans many tasks. Futhermore, the two applications of jBPM are totally orthogonal. You can use them together or independently or not at all.
+	</para>
+	<para>
+		You do not have to know jDPL to use Seam. If you are perfectly happy defining pageflow using JSF or Seam navigation rules, and if your application is more data-driven that process-driven, you probably do not need jBPM. But we are finding that thinking of user interaction in terms of a well-defined graphical representation is helping us build more robust applications.
+	</para>
+	<section id="Seam_Reference_Guide-Pageflows_and_business_processes-Pageflow_in_Seam">
+		<title>Pageflow in Seam</title>
+		<para>
+			There are two ways to define pageflow in Seam:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					Using JSF or Seam navigation rules - the <emphasis>stateless navigation model</emphasis>
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					Using jPDL - the <emphasis>stateful navigation model</emphasis>
+				</para>
+			</listitem>
+		</itemizedlist>
+		<para>
+			Very simple applications will only need the stateless navigation model. Very complex applications will use both models in different places. Each model has its strengths and weaknesses!
+		</para>
+		<section id="Seam_Reference_Guide-Pageflow_in_Seam-The_two_navigation_models">
+			<title>The two navigation models</title>
+			<para>
+				The stateless model defines a mapping from a set of named, logical outcomes of an event directly to the resulting page of the view. The navigation rules are entirely oblivious to any state held by the application other than what page was the source of the event. This means that your action listener methods must sometimes make decisions about the page flow, since only they have access to the current state of the application.
+			</para>
+			<para>
+				Here is an example page flow definition using JSF navigation rules:
+			</para>
+<programlisting>&lt;navigation-rule&gt;
+    &lt;from-view-id&gt;/numberGuess.jsp&lt;/from-view-id&gt;
+        
+    &lt;navigation-case&gt;
+        &lt;from-outcome&gt;guess&lt;/from-outcome&gt;
+        &lt;to-view-id&gt;/numberGuess.jsp&lt;/to-view-id&gt;
+        &lt;redirect/&gt;
+    &lt;/navigation-case&gt;
+
+    &lt;navigation-case&gt;
+        &lt;from-outcome&gt;win&lt;/from-outcome&gt;
+        &lt;to-view-id&gt;/win.jsp&lt;/to-view-id&gt;
+        &lt;redirect/&gt;
+    &lt;/navigation-case&gt;
+        
+    &lt;navigation-case&gt;
+        &lt;from-outcome&gt;lose&lt;/from-outcome&gt;
+        &lt;to-view-id&gt;/lose.jsp&lt;/to-view-id&gt;
+        &lt;redirect/&gt;
+    &lt;/navigation-case&gt;
+
+&lt;/navigation-rule&gt;
+</programlisting>
+			<para>
+				Here is the same example page flow definition using Seam navigation rules:
+			</para>
+<programlisting>&lt;page view-id="/numberGuess.jsp"&gt;
+        
+    &lt;navigation&gt;
+        &lt;rule if-outcome="guess"&gt;
+            &lt;redirect view-id="/numberGuess.jsp"/&gt;
+        &lt;/rule&gt;
+        &lt;rule if-outcome="win"&gt;
+            &lt;redirect view-id="/win.jsp"/&gt;
+        &lt;/rule&gt;
+        &lt;rule if-outcome="lose"&gt;
+            &lt;redirect view-id="/lose.jsp"/&gt;
+        &lt;/rule&gt;
+    &lt;/navigation-case&gt;
+
+&lt;/navigation-rule&gt;
+</programlisting>
+			<para>
+				If you find navigation rules overly verbose, you can return view ids directly from your action listener methods:
+			</para>
+<programlisting>public String guess() {
+    if (guess==randomNumber) return "/win.jsp";
+    if (++guessCount==maxGuesses) return "/lose.jsp";
+    return null;
+}
+</programlisting>
+			<para>
+				This results in a redirect. You can even specify parameters to be used in the redirect:
+			</para>
+<programlisting>public String search() {
+    return "/searchResults.jsp?searchPattern=#{searchAction.searchPattern}";
+}
+</programlisting>
+			<para>
+				The stateful model defines a set of transitions between a set of named, logical application states. In this model, it is possible to express the flow of any user interaction entirely in the jPDL pageflow definition, and write action listener methods that are completely unaware of the flow of the interaction.
+			</para>
+			<para>
+				Here is an example page flow definition using jPDL:
+			</para>
+<programlisting>&lt;pageflow-definition name="numberGuess"&gt;
+    
+   &lt;start-page name="displayGuess" view-id="/numberGuess.jsp"&gt;
+      &lt;redirect/&gt;
+      &lt;transition name="guess" to="evaluateGuess"&gt;
+      	&lt;action expression="#{numberGuess.guess}" /&gt;
+      &lt;/transition&gt;
+   &lt;/start-page&gt;
+   
+   &lt;decision name="evaluateGuess" expression="#{numberGuess.correctGuess}"&gt;
+      &lt;transition name="true" to="win"/&gt;
+      &lt;transition name="false" to="evaluateRemainingGuesses"/&gt;
+   &lt;/decision&gt;
+   
+   &lt;decision name="evaluateRemainingGuesses" expression="#{numberGuess.lastGuess}"&gt;
+      &lt;transition name="true" to="lose"/&gt;
+      &lt;transition name="false" to="displayGuess"/&gt;
+   &lt;/decision&gt;
+   
+   &lt;page name="win" view-id="/win.jsp"&gt;
+      &lt;redirect/&gt;
+      &lt;end-conversation /&gt;
+   &lt;/page&gt;
+   
+   &lt;page name="lose" view-id="/lose.jsp"&gt;
+      &lt;redirect/&gt;
+      &lt;end-conversation /&gt;
+   &lt;/page&gt;
+   
+&lt;/pageflow-definition&gt;
+</programlisting>
+			<mediaobject>
+				<imageobject role="fo">
+					<imagedata align="center" fileref="images/plugin-jbpm-numguess.png" />
+				</imageobject>
+			<!--	<imageobject role="html">
+					<imagedata align="center" fileref="../shared/images/plugin-jbpm-numguess.png" />
+				</imageobject> -->
+			</mediaobject>
+			<para>
+				There are two things we notice immediately here:
+			</para>
+			<itemizedlist>
+				<listitem>
+					<para>
+						The JSF/Seam navigation rules are <emphasis>much</emphasis> simpler. (However, this obscures the fact that the underlying Java code is more complex.)
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						The jPDL makes the user interaction immediately understandable, without us needing to even look at the JSP or Java code.
+					</para>
+				</listitem>
+			</itemizedlist>
+			<para>
+				In addition, the stateful model is more <emphasis>constrained</emphasis>. For each logical state (each step in the page flow), there are a constrained set of possible transitions to other states. The stateless model is an <emphasis>ad hoc</emphasis> model which is suitable to relatively unconstrained, freeform navigation where the user decides where he/she wants to go next, not the application.
+			</para>
+			<para>
+				The stateful/stateless navigation distinction is quite similar to the traditional view of modal/modeless interaction. Now, Seam applications are not usually modal in the simple sense of the word - indeed, avoiding application modal behavior is one of the main reasons for having conversations! However, Seam applications can be, and often are, modal at the level of a particular conversation. It is well-known that modal behavior is something to avoid as much as possible; it is very difficult to predict the order in which your users are going to want to do things! However, there is no doubt that the stateful model has its place.
+			</para>
+			<para>
+				The biggest contrast between the two models is the back-button behavior.
+			</para>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Pageflow_in_Seam-Seam_and_the_back_button">
+			<title>Seam and the back button</title>
+			<para>
+				When JSF or Seam navigation rules are used, Seam lets the user freely navigate via the back, forward and refresh buttons. It is the responsibility of the application to ensure that conversational state remains internally consistent when this occurs. Experience with the combination of web application frameworks like Struts or WebWork - that do not support a conversational model - and stateless component models like EJB stateless session beans or the Spring framework has taught many developers that this is close to impossible to do! However, our experience is that in the context of Seam, where there is a well-defined conversational model, backed by stateful session beans, it is actually quite straightforward. Usually it is as simple as combining the use of <literal>no-conversation-view-id</literal> with null checks at the beginning of action listener methods. We consider support for freeform navigation to be almost always desirable.
+			</para>
+			<para>
+				In this case, the <literal>no-conversation-view-id</literal> declaration goes in <literal>pages.xml</literal>. It tells Seam to redirect to a different page if a request originates from a page rendered during a conversation, and that conversation no longer exists:
+			</para>
+<programlisting>&lt;page view-id="/checkout.xhtml" 
+        no-conversation-view-id="/main.xhtml"/&gt;
+</programlisting>
+			<para>
+				On the other hand, in the stateful model, backbuttoning is interpreted as an undefined transition back to a previous state. Since the stateful model enforces a defined set of transitions from the current state, back buttoning is be default disallowed in the stateful model. Seam transparently detects the use of the back button, and blocks any attempt to perform an action from a previous, <emphasis>stale</emphasis> page, and simply redirects the user to the <emphasis>current</emphasis> page (and displays a faces message). Whether you consider this a feature or a limitation of the stateful model depends upon your point of view: as an application developer, it is a feature; as a user, it might be frustrating! You can enable backbutton navigation from a particular page node by setting <literal>back="enabled"</literal>.
+			</para>
+<programlisting>&lt;page name="checkout" 
+        view-id="/checkout.xhtml" 
+        back="enabled"&gt;
+    &lt;redirect/&gt;
+    &lt;transition to="checkout"/&gt;
+    &lt;transition name="complete" to="complete"/&gt;
+&lt;/page&gt;
+</programlisting>
+			<para>
+				This allows backbuttoning <emphasis>from</emphasis> the <literal>checkout</literal> state to <emphasis>any previous state!</emphasis>
+			</para>
+			<para>
+				Of course, we still need to define what happens if a request originates from a page rendered during a pageflow, and the conversation with the pageflow no longer exists. In this case, the <literal>no-conversation-view-id</literal> declaration goes into the pageflow definition:
+			</para>
+<programlisting>&lt;page name="checkout" 
+        view-id="/checkout.xhtml" 
+        back="enabled" 
+        no-conversation-view-id="/main.xhtml"&gt;
+    &lt;redirect/&gt;
+    &lt;transition to="checkout"/&gt;
+    &lt;transition name="complete" to="complete"/&gt;
+&lt;/page&gt;
+</programlisting>
+		
+		<para>
+			In practice, both navigation models have their place, and you will quickly learn to recognize when to prefer one model over the other.
+		</para>
+		</section>
+
+	</section>
+	
+	<section id="Seam_Reference_Guide-Pageflows_and_business_processes-Using_jPDL_pageflows">
+		<title>Using jPDL pageflows</title>
+		<section id="Seam_Reference_Guide-Using_jPDL_pageflows-Installing_pageflows">
+			<title>Installing pageflows</title>
+			<para>
+				We need to install the Seam jBPM-related components, and tell them where to find our pageflow definition. We can specify this Seam configuration in <literal>components.xml</literal>.
+			</para>
+<programlisting>&lt;core:jbpm&gt;
+    &lt;core:pageflow-definitions&gt;
+        &lt;value&gt;pageflow.jpdl.xml&lt;/value&gt;
+    &lt;/core:pageflow-definitions&gt;
+&lt;/core:jbpm&gt;
+</programlisting>
+			<para>
+				The first line installs jBPM, the second points to a jPDL-based pageflow definition.
+			</para>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Using_jPDL_pageflows-Starting_pageflows">
+			<title>Starting pageflows</title>
+			<para>
+				We <emphasis>start</emphasis> a jPDL-based pageflow by specifying the name of the process definition using a <literal>@Begin</literal>, <literal>@BeginTask</literal> or <literal>@StartTask</literal> annotation:
+			</para>
+<programlisting>@Begin(pageflow="numberguess")
+public void begin() { ... }
+</programlisting>
+			<para>
+				Alternatively we can start a pageflow using pages.xml:
+			</para>
+<programlisting>&lt;page&gt;
+        &lt;begin-conversation pageflow="numberguess"/&gt;
+    &lt;/page&gt;
+</programlisting>
+			<para>
+				If we are beginning the pageflow during the <literal>RENDER_RESPONSE</literal> phase&mdash;during a <literal>@Factory</literal> or <literal>@Create</literal> method, for example&mdash;we consider ourselves to be already at the page being rendered, and use a <literal>&lt;start-page&gt;</literal> node as the first node in the pageflow, as in the example above.
+			</para>
+			<para>
+				But if the pageflow is begun as the result of an action listener invocation, the outcome of the action listener determines which is the first page to be rendered. In this case, we use a <literal>&lt;start-state&gt;</literal> as the first node in the pageflow, and declare a transition for each possible outcome:
+			</para>
+<programlisting>&lt;pageflow-definition name="viewEditDocument"&gt;
+
+    &lt;start-state name="start"&gt;
+        &lt;transition name="documentFound" to="displayDocument"/&gt;
+        &lt;transition name="documentNotFound" to="notFound"/&gt;
+    &lt;/start-state&gt;
+    
+    &lt;page name="displayDocument" view-id="/document.jsp"&gt;
+        &lt;transition name="edit" to="editDocument"/&gt;
+        &lt;transition name="done" to="main"/&gt;
+    &lt;/page&gt;
+    
+    ...
+    
+    &lt;page name="notFound" view-id="/404.jsp"&gt;
+        &lt;end-conversation/&gt;
+    &lt;/page&gt;
+    
+&lt;/pageflow-definition&gt;
+</programlisting>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Using_jPDL_pageflows-Page_nodes_and_transitions">
+			<title>Page nodes and transitions</title>
+			<para>
+				Each <literal>&lt;page&gt;</literal> node represents a state where the system is waiting for user input:
+			</para>
+<programlisting>&lt;page name="displayGuess" view-id="/numberGuess.jsp"&gt;
+    &lt;redirect/&gt;
+    &lt;transition name="guess" to="evaluateGuess"&gt;
+        &lt;action expression="#{numberGuess.guess}" /&gt;
+    &lt;/transition&gt;
+&lt;/page&gt;
+</programlisting>
+			<para>
+				The <literal>view-id</literal> is the JSF view id. The <literal>&lt;redirect/&gt;</literal> element has the same effect as <literal>&lt;redirect/&gt;</literal> in a JSF navigation rule: namely, a post-then-redirect behavior, to overcome problems with the browser&#39;s refresh button (note that Seam propagates conversation contexts over these browser redirects).
+			</para>
+			<para>
+				The transition name is the name of a JSF outcome triggered by clicking a command button or command link in <literal>numberGuess.jsp</literal>.
+			</para>
+<programlisting>&lt;h:commandButton type="submit" value="Guess" action="guess"/&gt;</programlisting>
+			<para>
+				When the transition is triggered by clicking this button, jBPM will activate the transition action by calling the <literal>guess()</literal> method of the <literal>numberGuess</literal> component. Notice that the syntax used for specifying actions in the jPDL is just a familiar JSF EL expression, and that the transition action handler is just a method of a Seam component in the current Seam contexts. So we have exactly the same event model for jBPM events that we already have for JSF events. (The <emphasis>One Kind of Stuff</emphasis> principle.)
+			</para>
+			<para>
+				In the case of a null outcome (for example, a command button with no <literal>action</literal> defined), Seam will signal the transition with no name if one exists, or else simply redisplay the page if all transitions have names. So we could slightly simplify our example pageflow and this button:
+			</para>
+<programlisting>&lt;h:commandButton type="submit" value="Guess"/&gt;</programlisting>
+			<para>
+				Would fire the following un-named transition:
+			</para>
+<programlisting>&lt;page name="displayGuess" view-id="/numberGuess.jsp"&gt;
+    &lt;redirect/&gt;
+    &lt;transition to="evaluateGuess"&gt;
+        &lt;action expression="#{numberGuess.guess}" /&gt;
+    &lt;/transition&gt;
+&lt;/page&gt;
+</programlisting>
+			<para>
+				It is even possible to have the button call an action method, in which case the action outcome will determine the transition to be taken:
+			</para>
+<programlisting>&lt;h:commandButton type="submit" value="Guess" action="#{numberGuess.guess}"/&gt;</programlisting>
+<programlisting>&lt;page name="displayGuess" view-id="/numberGuess.jsp"&gt;
+    &lt;transition name="correctGuess" to="win"/&gt;
+    &lt;transition name="incorrectGuess" to="evaluateGuess"/&gt;
+&lt;/page&gt;
+</programlisting>
+			<para>
+				However, this is considered an inferior style, since it moves responsibility for controlling the flow out of the pageflow definition and back into the other components. It is much better to centralize this concern in the pageflow itself.
+			</para>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Using_jPDL_pageflows-Controlling_the_flow">
+			<title>Controlling the flow</title>
+			<para>
+				Usually, we do not need the more powerful features of jPDL when defining pageflows. We do need the <literal>&lt;decision&gt;</literal> node, however:
+			</para>
+<programlisting>&lt;decision name="evaluateGuess" expression="#{numberGuess.correctGuess}"&gt;
+    &lt;transition name="true" to="win"/&gt;
+    &lt;transition name="false" to="evaluateRemainingGuesses"/&gt;
+&lt;/decision&gt;
+</programlisting>
+			<para>
+				A decision is made by evaluating a JSF EL expression in the Seam contexts.
+			</para>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Using_jPDL_pageflows-Ending_the_flow">
+			<title>Ending the flow</title>
+			<para>
+				We end the conversation using <literal>&lt;end-conversation&gt;</literal> or <literal>@End</literal>. (In fact, for readability, use of <emphasis>both</emphasis> is encouraged.)
+			</para>
+<programlisting>&lt;page name="win" view-id="/win.jsp"&gt;
+    &lt;redirect/&gt;
+    &lt;end-conversation/&gt;
+&lt;/page&gt;
+</programlisting>
+			<para>
+				Optionally, we can end a task, specify a jBPM <literal>transition</literal> name. In this case, Seam will signal the end of the current task in the overarching business process.
+			</para>
+<programlisting>&lt;page name="win" view-id="/win.jsp"&gt;
+    &lt;redirect/&gt;
+    &lt;end-task transition="success"/&gt;
+&lt;/page&gt;
+</programlisting>
+		</section>
+
+	</section>
+	
+	<section id="Seam_Reference_Guide-Pageflows_and_business_processes-Business_process_management_in_Seam">
+		<title>Business process management in Seam</title>
+		<para>
+			A business process is a well-defined set of tasks that must be performed by users or software systems according to well-defined rules about <emphasis>who</emphasis> can perform a task, and <emphasis>when</emphasis> it should be performed. Seam&#39;s jBPM integration makes it easy to display lists of tasks to users and let them manage their tasks. Seam also lets the application store state associated with the business process in the <literal>BUSINESS_PROCESS</literal> context, and have that state made persistent via jBPM variables.
+		</para>
+		<para>
+			A simple business process definition looks much the same as a page flow definition (<emphasis>One Kind of Stuff</emphasis>), except that instead of <literal>&lt;page&gt;</literal> nodes, we have <literal>&lt;task-node&gt;</literal> nodes. In a long-running business process, the wait states are where the system is waiting for some user to log in and perform a task.
+		</para>
+<programlisting>&lt;process-definition name="todo"&gt;
+   
+   &lt;start-state name="start"&gt;
+      &lt;transition to="todo"/&gt;
+   &lt;/start-state&gt;
+   
+   &lt;task-node name="todo"&gt;
+      &lt;task name="todo" description="#{todoList.description}"&gt;
+         &lt;assignment actor-id="#{actor.id}"/&gt;
+      &lt;/task&gt;
+      &lt;transition to="done"/&gt;
+   &lt;/task-node&gt;
+   
+   &lt;end-state name="done"/&gt;
+   
+&lt;/process-definition&gt;
+</programlisting>
+
+	
+	<mediaobject>
+		<imageobject role="fo">
+			<imagedata align="center" fileref="images/plugin-jbpm-todo.png" />
+		</imageobject>
+	<!--	<imageobject role="html">
+			<imagedata align="center" fileref="../shared/images/plugin-jbpm-todo.png" />
+		</imageobject> -->
+	</mediaobject>
+	<para>
+		It is perfectly possible that we might have both jPDL business process definitions and jPDL pageflow definitions in the same project. If so, the relationship between the two is that a single <literal>&lt;task&gt;</literal> in a business process corresponds to a whole pageflow <literal>&lt;pageflow-definition&gt;</literal>
+	</para>
+	</section>
+	<section id="Seam_Reference_Guide-Pageflows_and_business_processes-Using_jPDL_business_process_definitions">
+		<title>Using jPDL business process definitions</title>
+		<section id="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Installing_process_definitions">
+			<title>Installing process definitions</title>
+			<para>
+				We need to install jBPM, and tell it where to find the business process definitions:
+			</para>
+<programlisting>&lt;core:jbpm&gt;
+    &lt;core:process-definitions&gt;
+        &lt;value&gt;todo.jpdl.xml&lt;/value&gt;
+    &lt;/core:process-definitions&gt;
+&lt;/core:jbpm&gt;
+</programlisting>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Initializing_actor_ids">
+			<title>Initializing actor ids</title>
+			<para>
+				We always need to know what user is currently logged in. jBPM <emphasis>knows</emphasis> users by their <emphasis>actor id</emphasis> and <emphasis>group actor ids</emphasis>. We specify the current actor ids using the built in Seam component named <literal>actor</literal>:
+			</para>
+<programlisting>@In Actor actor;
+
+public String login() {
+    ...
+    actor.setId( user.getUserName() );
+    actor.getGroupActorIds().addAll( user.getGroupNames() );
+    ...
+}
+</programlisting>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Initiating_a_business_process">
+			<title>Initiating a business process</title>
+			<para>
+				To initiate a business process instance, we use the <literal>@CreateProcess</literal> annotation:
+			</para>
+<programlisting>@CreateProcess(definition="todo")
+public void createTodo() { ... }
+</programlisting>
+			<para>
+				Alternatively we can initiate a business process using pages.xml:
+			</para>
+<programlisting>&lt;page&gt;
+    &lt;create-process definition="todo" /&gt;
+&lt;/page&gt;
+</programlisting>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Task_assignment">
+			<title>Task assignment</title>
+			<para>
+				When a process starts, task instances are created. These must be assigned to users or user groups. We can either hardcode our actor ids, or delegate to a Seam component:
+			</para>
+<programlisting>&lt;task name="todo" description="#{todoList.description}"&gt;
+    &lt;assignment actor-id="#{actor.id}"/&gt;
+&lt;/task&gt;
+</programlisting>
+			<para>
+				In this case, we have simply assigned the task to the current user. We can also assign tasks to a pool:
+			</para>
+<programlisting>&lt;task name="todo" description="#{todoList.description}"&gt;
+    &lt;assignment pooled-actors="employees"/&gt;
+&lt;/task&gt;
+</programlisting>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Task_lists">
+			<title>Task lists</title>
+			<para>
+				Several built-in Seam components make it easy to display task lists. The <literal>pooledTaskInstanceList</literal> is a list of pooled tasks that users may assign to themselves:
+			</para>
+<programlisting>&lt;h:dataTable value="#{pooledTaskInstanceList}" var="task"&gt;
+    &lt;h:column&gt;
+        &lt;f:facet name="header"&gt;Description&lt;/f:facet&gt;
+        &lt;h:outputText value="#{task.description}"/&gt;
+    &lt;/h:column&gt;
+    &lt;h:column&gt;
+        &lt;s:link action="#{pooledTask.assignToCurrentActor}" value="Assign" taskInstance="#{task}"/&gt;
+    &lt;/h:column&gt;            	
+&lt;/h:dataTable&gt;
+</programlisting>
+			<para>
+				Note that instead of <literal>&lt;s:link&gt;</literal> we could have used a plain JSF <literal>&lt;h:commandLink&gt;</literal>:
+			</para>
+<programlisting>&lt;h:commandLink action="#{pooledTask.assignToCurrentActor}"&gt; 
+    &lt;f:param name="taskId" value="#{task.id}"/&gt;
+&lt;/h:commandLink&gt;
+</programlisting>
+			<para>
+				The <literal>pooledTask</literal> component is a built-in component that simply assigns the task to the current user.
+			</para>
+			<para>
+				The <literal>taskInstanceListForType</literal> component includes tasks of a particular type that are assigned to the current user:
+			</para>
+<programlisting>&lt;h:dataTable value="#{taskInstanceListForType[&#39;todo&#39;]}" var="task"&gt;
+    &lt;h:column&gt;
+        &lt;f:facet name="header"&gt;Description&lt;/f:facet&gt;
+        &lt;h:outputText value="#{task.description}"/&gt;
+    &lt;/h:column&gt;
+    &lt;h:column&gt;
+        &lt;s:link action="#{todoList.start}" value="Start Work" taskInstance="#{task}"/&gt;
+    &lt;/h:column&gt;            	
+&lt;/h:dataTable&gt;
+</programlisting>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Using_jPDL_business_process_definitions-Performing_a_task">
+			<title>Performing a task</title>
+			<para>
+				To begin work on a task, we use either <literal>@StartTask</literal> or <literal>@BeginTask</literal> on the listener method:
+			</para>
+<programlisting>@StartTask
+public String start() { ... }
+</programlisting>
+			<para>
+				Alternatively we can begin work on a task using <filename>pages.xml</filename>:
+			</para>
+<programlisting>&lt;page&gt;
+    &lt;start-task /&gt;
+&lt;/page&gt;
+</programlisting>
+			<para>
+				These annotations begin a special kind of conversation that has significance in terms of the overarching business process. Work done by this conversation has access to state held in the business process context.
+			</para>
+			<para>
+				If we end the conversation using <literal>@EndTask</literal>, Seam will signal the completion of the task:
+			</para>
+<programlisting>@EndTask(transition="completed")
+public String completed() { ... }
+</programlisting>
+			<para>
+				Alternatively we can use pages.xml:
+			</para>
+<programlisting>&lt;page&gt;
+    &lt;end-task transition="completed" /&gt;
+&lt;/page&gt;
+</programlisting>
+			<para>
+				(Alternatively, we could have used <literal>&lt;end-conversation&gt;</literal> as shown above.)
+			</para>
+			<para>
+				At this point, jBPM takes over and continues executing the business process definition. (In more complex processes, several tasks might need to be completed before process execution can resume.)
+			</para>
+		
+		<para>
+			Please refer to the jBPM documentation for a more thorough overview of the sophisticated features that jBPM provides for managing complex business processes.
+		</para>
+		</section>
+
+	</section>
+
+</chapter>
+


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Jbpm.xml
___________________________________________________________________
Name: svn:executable
   + *

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Jms.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Jms.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Jms.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,269 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Seam_Reference_Guide-Asynchronicity_and_messaging">
+	<title>Asynchronicity and messaging</title>
+	<para>
+		Seam makes it very easy to perform work asynchronously from a web request. When most people think of asynchronicity in Java EE, they think of using JMS. This is certainly one way to approach the problem in Seam, and is the right way when you have strict and well-defined quality of service requirements. Seam makes it easy to send and recieve JMS messages using Seam components.
+	</para>
+	<para>
+		But for many usecases, JMS is overkill. Seam layers a simple asynchronous method and event facility over the EJB 3.0 timer service.
+	</para>
+	<sect1 id="Seam_Reference_Guide-Asynchronicity_and_messaging-Asynchronicity"><title>Asynchronicity</title>
+	<para>
+		Asynchronous events and method calls have the same quality of service expectations as the container&#39;s EJB timer service. If you are not familiar with the Timer service, do not worry, you do not need to interact with it directly if you want to use asynchronous methods in Seam.
+	</para>
+	<para>
+		To use asynchronous methods and events, you need to add the following line to <literal>components.xml</literal>:
+	</para>
+<programlisting>&lt;core:dispatcher/&gt;</programlisting>
+	<para>
+		Note that this functionality is not available in environments which do not support EJB 3.0.
+	</para>
+	<sect2 id="Seam_Reference_Guide-Asynchronicity-Asynchronous_methods"><title>Asynchronous methods</title>
+	<para>
+		In simplest form, an asynchronous call just lets a method call be processed asynchronously (in a different thread) from the caller. We usually use an asynchronous call when we want to return an immediate response to the client, and let some expensive work be processed in the background. This pattern works very well in applications which use AJAX, where the client can automatically poll the server for the result of the work.
+	</para>
+	<para>
+		For EJB components, we annotate the local interface to specify that a method is processed asynchronously.
+	</para>
+<programlisting>@Local
+public interface PaymentHandler
+{
+    @Asynchronous
+    public void processPayment(Payment payment);
+}
+</programlisting>
+	<para>
+		(For JavaBean components we can annotate the component implementation class if we like.)
+	</para>
+	<para>
+		The use of asynchronicity is transparent to the bean class:
+	</para>
+<programlisting>@Stateless
+ at Name("paymentHandler")
+public class PaymentHandlerBean implements PaymentHandler
+{
+    public void processPayment(Payment payment)
+    {
+        //do some work!
+    }
+}
+</programlisting>
+	<para>
+		And also transparent to the client:
+	</para>
+<programlisting>@Stateful
+ at Name("paymentAction")
+public class CreatePaymentAction
+{
+    @In(create=true) PaymentHandler paymentHandler;
+    @In Bill bill;
+    
+    public String pay()
+    {
+        paymentHandler.processPayment( new Payment(bill) );
+        return "success";
+    }
+}
+</programlisting>
+	<para>
+		The asynchronous method is processed in a completely new event context and does not have access to the session or conversation context state of the caller. However, the business process context <emphasis>is</emphasis> propagated.
+	</para>
+	<para>
+		Asynchronous method calls may be scheduled for later execution using the <literal>@Duration</literal>, <literal>@Expiration</literal> and <literal>@IntervalDuration</literal> annotations.
+	</para>
+<programlisting>@Local
+public interface PaymentHandler
+{
+    @Asynchronous
+    public void processScheduledPayment(Payment payment, @Expiration Date date);
+
+    @Asynchronous
+    public void processRecurringPayment(Payment payment, @Expiration Date date, 
+      @IntervalDuration Long interval)&#39;
+}
+</programlisting>
+<programlisting>@Stateful
+ at Name("paymentAction")
+public class CreatePaymentAction
+{
+    @In(create=true) PaymentHandler paymentHandler;
+    @In Bill bill;
+    
+    public String schedulePayment()
+    {
+        paymentHandler.processScheduledPayment( new Payment(bill), bill.getDueDate() );
+        return "success";
+    }
+
+    public String scheduleRecurringPayment()
+    {
+        paymentHandler.processRecurringPayment( new Payment(bill), bill.getDueDate(), ONE_MONTH );
+        return "success";
+    }
+}
+</programlisting>
+	<para>
+		Both client and server may access the <literal>Timer</literal> object associated with the invocation.
+	</para>
+<programlisting>@Local
+public interface PaymentHandler
+{
+    @Asynchronous
+    public Timer processScheduledPayment(Payment payment, @Expiration Date date);
+}
+</programlisting>
+<programlisting>@Stateless
+ at Name("paymentHandler")
+public class PaymentHandlerBean implements PaymentHandler
+{
+    @In Timer timer;
+    
+    public Timer processScheduledPayment(Payment payment, @Expiration Date date)
+    {
+        //do some work!
+        
+        return timer; //note that return value is completely ignored
+    }
+
+}
+</programlisting>
+<programlisting>@Stateful
+ at Name("paymentAction")
+public class CreatePaymentAction
+{
+    @In(create=true) PaymentHandler paymentHandler;
+    @In Bill bill;
+    
+    public String schedulePayment()
+    {
+        Timer timer = paymentHandler.processScheduledPayment( new Payment(bill), bill.getDueDate() );
+        return "success";
+    }
+}
+</programlisting>
+	<para>
+		Asynchronous methods cannot return any other value to the caller.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Asynchronicity-Asynchronous_events"><title>Asynchronous events</title>
+	<para>
+		Component-driven events may also be asynchronous. To raise an event for asynchronous processing, simply call the <literal>raiseAsynchronousEvent()</literal> methods of the <literal>Events</literal> class. To schedule a timed event, call one of the <literal>raiseTimedEvent()</literal> methods. Components may observe asynchronous events in the usual way, but remember that only the business process context is propagated to the asynchronous thread.
+	</para>
+	</sect2></sect1><sect1 id="Seam_Reference_Guide-Asynchronicity_and_messaging-Messaging_in_Seam"><title>Messaging in Seam</title>
+	<para>
+		Seam makes it easy to send and receive JMS messages to and from Seam components.
+	</para>
+	<sect2 id="Seam_Reference_Guide-Messaging_in_Seam-Configuration"><title>Configuration</title>
+	<para>
+		To configure Seam&#39;s infrastructure for sending JMS messages, you need to tell Seam about any topics and queues you want to send messages to, and also tell Seam where to find the <literal>QueueConnectionFactory</literal> and/or <literal>TopicConnectionFactory</literal>.
+	</para>
+	<para>
+		Seam defaults to using <literal>UIL2ConnectionFactory</literal> which is the usual connection factory for use with JBossMQ. If you are using some other JMS provider, you need to set one or both of <literal>queueConnection.queueConnectionFactoryJndiName</literal> and <literal>topicConnection.topicConnectionFactoryJndiName</literal> in <literal>seam.properties</literal>, <literal>web.xml</literal> or <literal>components.xml</literal>.
+	</para>
+	<para>
+		You also need to list topics and queues in <literal>components.xml</literal> to install Seam managed <literal>TopicPublisher</literal>s and <literal>QueueSender</literal>s:
+	</para>
+<programlisting>
+&lt;jms:managed-topic-publisher name="stockTickerPublisher" 
+                   auto-create="true  topic-jndi-name="topic/stockTickerTopic"/&gt;
+
+&lt;jms:managed-queue-sender name="paymentQueueSender" auto-create="true" 
+    queue-jndi-name="queue/paymentQueue"/&gt;
+</programlisting>
+
+<formalpara>
+	<title>Using JBoss Messaging</title>
+	<para>
+		For using JBoss Messaging which comes with JBoss Enterprise Application Platform 4.3, you should first set the value of the properties '<literal>queueConnection.queueConnectionFactoryJndiName</literal>' and '<literal>topicConnection.topicConnectionFactoryJndiName</literal>' to '<literal>ConnectionFactory</literal>' which is the default connection factory for JBoss Messaging. Then set the value of the '<literal>connectionProvider</literal>' property to '<literal>org.jboss.seam.remoting.messaging.JBossMessagingConnectionProvider</literal>' on the class component '<literal>org.jboss.seam.remoting.messaging.SubscriptionRegistry</literal>', which creates topic connections for jboss messaging.
+		<programlisting>
+&lt;component name="org.jboss.seam.jms.topicConnection"&gt;
+	&lt;property name="topicConnectionFactoryJndiName"&gt;
+	ConnectionFactory
+	&lt;/property&gt;
+&lt;/component&gt;
+&lt;component class="org.jboss.seam.remoting.messaging.SubscriptionRegistry" installed="true"&gt;
+	&lt;property name="allowedTopics"&gt;
+	chatroomTopic
+	&lt;/property&gt;
+	&lt;property name="connectionProvider"&gt;
+	org.jboss.seam.remoting.messaging.JBossMessagingConnectionProvider
+	&lt;/property&gt;
+&lt;/component&gt;
+</programlisting>
+You also need to update the topics to use JBoss Messaging as shown in the code fragment below.
+<programlisting>
+&lt;server&gt;
+	&lt;mbean code="org.jboss.jms.server.destination.TopicService"
+               name="jboss.messaging.destination:service=Topic,name=chatroomTopic"
+                                            xmbean-dd="xmdesc/Topic-xmbean.xml"&gt;
+		&lt;depends optional-attribute-name="ServerPeer"&gt;
+		jboss.messaging:service=ServerPeer
+		&lt;/depends&gt;
+		&lt;depends&gt;
+		jboss.messaging:service=PostOffice
+		&lt;/depends&gt;
+		&lt;attribute name="SecurityConfig"&gt;
+			&lt;security&gt;
+			  &lt;role name="guest" read="true" write="true"/&gt;
+			  &lt;role name="publisher" read="true" write="true" create="false"/&gt;
+			  &lt;role name="durpublisher" read="true" write="true" create="true"/&gt;
+			&lt;/security&gt;
+		&lt;/attribute&gt;
+	&lt;/mbean&gt;
+&lt;/server&gt;
+</programlisting>
+	</para>
+</formalpara>
+
+	</sect2><sect2 id="Seam_Reference_Guide-Messaging_in_Seam-Sending_messages"><title>Sending messages</title>
+	<para>
+		Now, you can inject a JMS <literal>TopicPublisher</literal> and <literal>TopicSession</literal> into any component:
+	</para>
+<programlisting>@In 
+private TopicPublisher stockTickerPublisher;   
+ at In 
+private TopicSession topicSession;
+
+public void publish(StockPrice price) {
+      try
+      {
+         topicPublisher.publish( topicSession.createObjectMessage(price) );
+      } 
+      catch (Exception ex)
+      {
+         throw new RuntimeException(ex);
+      } 
+}
+</programlisting>
+	<para>
+		Or, for working with a queue:
+	</para>
+<programlisting>@In
+private QueueSender paymentQueueSender;   
+ at In
+private QueueSession queueSession;
+
+public void publish(Payment payment) {
+      try
+      {
+         paymentQueueSender.send( queueSession.createObjectMessage(payment) );
+      } 
+      catch (Exception ex)
+      {
+         throw new RuntimeException(ex);
+      } 
+}
+</programlisting>
+	</sect2><sect2 id="Seam_Reference_Guide-Messaging_in_Seam-Receiving_messages_using_a_message_driven_bean"><title>Receiving messages using a message-driven bean</title>
+	<para>
+		You can process messages using any EJB3 message driven bean. Message-driven beans may even be Seam components, in which case it is possible to inject other event and application scoped Seam components.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Messaging_in_Seam-Receiving_messages_in_the_client"><title>Receiving messages in the client</title>
+	<para>
+		Seam Remoting lets you subscribe to a JMS topic from client-side JavaScript. This is described in the next chapter.
+	</para>
+	</sect2></sect1>
+</chapter>
+


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Jms.xml
___________________________________________________________________
Name: svn:executable
   + *

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Mail.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Mail.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Mail.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,557 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Seam_Reference_Guide-Email">
+	<title>Email</title>
+	<para>
+		Seam now includes an optional components for templating and sending emails.
+	</para>
+	<para>
+		Email support is provided by <literal>jboss-seam-mail.jar</literal>. This JAR contains the mail JSF controls, which are used to construct emails, and the <literal>mailSession</literal> manager component.
+	</para>
+	<para>
+		The examples/mail project contains an example of the email support in action. It demonstrates proper packaging, and it contains a number of example that demonstrate the key features currently supported.
+	</para>
+	<section id="Seam_Reference_Guide-Email-Creating_a_message">
+		<title>Creating a message</title>
+		<para>
+			You do not need to learn a whole new templating language to use Seam Mail&mdash;an email is just facelet!
+		</para>
+<programlisting>&lt;m:message xmlns="http://www.w3.org/1999/xhtml"
+    xmlns:m="http://jboss.com/products/seam/mail"
+    xmlns:h="http://java.sun.com/jsf/html"&gt;
+  
+    &lt;m:from name="Peter" address="peter at example.com" /&gt;
+    &lt;m:to name="#{person.firstname} #{person.lastname}"&gt;#{person.address}&lt;/m:to&gt;
+    &lt;m:subject&gt;Try out Seam!&lt;/m:subject&gt;
+    
+    &lt;m:body&gt;
+        &lt;p&gt;&lt;h:outputText value="Dear #{person.firstname}" /&gt;,&lt;/p&gt;
+        &lt;p&gt;You can try out Seam by visiting 
+        &lt;a href="http://labs.jboss.com/jbossseam"&gt;http://labs.jboss.com/jbossseam&lt;/a&gt;.&lt;/p&gt;
+        &lt;p&gt;Regards,&lt;/p&gt;
+        &lt;p&gt;Peter&lt;/p&gt;
+    &lt;/m:body&gt;
+    
+&lt;/m:message&gt;
+</programlisting>
+		<para>
+			The <literal>&lt;m:message&gt;</literal> tag wraps the whole message, and tells Seam to start rendering an email. Inside the <literal>&lt;m:message&gt;</literal> tag we use an <literal>&lt;m:from&gt;</literal> tag to set who the message is from, a <literal>&lt;m:to&gt;</literal> tag to specify a sender (notice how we use EL as we would in a normal facelet), and a <literal>&lt;m:subject&gt;</literal> tag.
+		</para>
+		<para>
+			The <literal>&lt;m:body&gt;</literal> tag wraps the body of the email. You can use regular HTML tags inside the body as well as JSF components.
+		</para>
+		<para>
+			So, now you have your email template, how do you go about sending it? Well, at the end of rendering the <literal>m:message</literal> the <literal>mailSession</literal> is called to send the email, so all you have to do is ask Seam to render the view:
+		</para>
+<programlisting>@In(create=true)
+private Renderer renderer;
+   
+public void send() {
+    try {
+       renderer.render("/simple.xhtml");
+       facesMessages.add("Email sent successfully");
+   } 
+   catch (Exception e) {
+       facesMessages.add("Email sending failed: " + e.getMessage());
+   }
+}
+</programlisting>
+		<para>
+			If, for example, you entered an invalid email address, then an exception would be thrown, which is caught and then displayed to the user.
+		</para>
+		<section id="Seam_Reference_Guide-Creating_a_message-Attachments">
+			<title>Attachments</title>
+			<para>
+				Seam makes it easy to attach files to an email. It supports most of the standard java types used when working with files.
+			</para>
+			<para>
+				If you wanted to email the <literal>jboss-seam-mail.jar</literal>:
+			</para>
+<programlisting>&lt;m:attachment value="/WEB-INF/lib/jboss-seam-mail.jar"/&gt;</programlisting>
+			<para>
+				Seam will load the file from the classpath, and attach it to the email. By default it would be attached as <literal>jboss-seam-mail.jar</literal>; if you wanted it to have another name you would just add the <literal>fileName</literal> attribute:
+			</para>
+<programlisting>&lt;m:attachment value="/WEB-INF/lib/jboss-seam-mail.jar" fileName="this-is-so-cool.jar"/&gt;</programlisting>
+			<para>
+				You could also attach a <literal>java.io.File</literal>, a <literal>java.net.URL</literal>:
+			</para>
+<programlisting>&lt;m:attachment value="#{numbers}"/&gt;</programlisting>
+			<para>
+				Or a <literal>byte[]</literal> or a <literal>java.io.InputStream</literal>:
+			</para>
+<programlisting>&lt;m:attachment value="#{person.photo}" contentType="image/png"/&gt;</programlisting>
+			<para>
+				You will notice that for a <literal>byte[]</literal> and a <literal>java.io.InputStream</literal> you need to specify the MIME type of the attachment (as that information is not carried as part of the file).
+			</para>
+			<para>
+				And it gets even better, you can attach a Seam generated PDF, or any standard JSF view, just by wrapping a <literal>&lt;m:attachment&gt;</literal> around the normal tags you would use:
+			</para>
+<programlisting>&lt;m:attachment fileName="tiny.pdf"&gt;
+    &lt;p:document&gt;                                                      
+        A very tiny PDF                                                                                                
+    &lt;/p:document&gt;
+&lt;/m:attachment&gt;
+</programlisting>
+			<para>
+				If you had a set of files you wanted to attach (for example a set of pictures loaded from a database) you can just use a <literal>&lt;ui:repeat&gt;</literal>:
+			</para>
+<programlisting>&lt;ui:repeat value="#{people}" var="person"&gt;
+    &lt;m:attachment value="#{person.photo}" contentType="image/jpeg"
+    fileName="#{person.firstname}_#{person.lastname}.jpg"/&gt;
+&lt;/ui:repeat&gt;
+</programlisting>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Creating_a_message-HTMLText_alternative_part">
+			<title>HTML/Text alternative part</title>
+			<para>
+				Whilst most mail readers nowadays support HTML, some do not, so you can add a plain text alternative to your email body:
+			</para>
+<programlisting>&lt;m:body&gt;
+    &lt;f:facet name="alternative"&gt;Sorry, your email reader can&#39;t show our fancy email, 
+please go to http://labs.jboss.com/jbossseam to explore Seam.&lt;/f:facet&gt;
+&lt;/m:body&gt;
+</programlisting>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Creating_a_message-Multiple_recipients">
+			<title>Multiple recipients</title>
+			<para>
+				Often you will want to send an email to a group of recipients (for example your users). All of the recipient mail tags can be placed inside a <literal>&lt;ui:repeat&gt;</literal>:
+			</para>
+<programlisting>&lt;ui:repeat value="#{allUsers} var="user"&gt;
+    &lt;m:to name="#{user.firstname} #{user.lastname}" address="#{user.emailAddress}" /&gt;
+&lt;/ui:repeat&gt;
+</programlisting>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Creating_a_message-Multiple_messages">
+			<title>Multiple messages</title>
+			<para>
+				Sometimes, however, you need to send a slightly different message to each recipient (e.g. a password reset). The best way to do this is to place the whole message inside a <literal>&lt;ui:repeat&gt;</literal>:
+			</para>
+<programlisting>&lt;ui:repeat value="#{people}" var="p"&gt;
+    &lt;m:message&gt;
+        &lt;m:from name="#{person.firstname} #{person.lastname}"&gt;#{person.address}&lt;/m:from&gt;
+        &lt;m:to name="#{p.firstname}"&gt;#{p.address}&lt;/m:to&gt;
+            ...
+    &lt;/m:message&gt;
+&lt;/ui:repeat&gt;
+</programlisting>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Creating_a_message-Templating">
+			<title>Templating</title>
+			<para>
+				The mail templating example shows that facelets templating Just Works with the Seam mail tags.
+			</para>
+			<para>
+				Our <literal>template.xhtml</literal> contains:
+			</para>
+<programlisting>&lt;m:message&gt;
+   &lt;m:from name="Seam" address="do-not-reply at jboss.com" /&gt;
+   &lt;m:to name="#{person.firstname} #{person.lastname}"&gt;#{person.address}&lt;/m:to&gt;
+   &lt;m:subject&gt;#{subject}&lt;/m:subject&gt;
+   &lt;m:body&gt;
+       &lt;html&gt;
+           &lt;body&gt;
+               &lt;ui:insert name="body"&gt;This is the default body, specified by the template.
+                                   &lt;/ui:insert&gt;
+           &lt;/body&gt;
+       &lt;/html&gt;
+   &lt;/m:body&gt;
+&lt;/m:message&gt;
+</programlisting>
+			<para>
+				Our <literal>templating.xhtml</literal> contains:
+			</para>
+<programlisting>&lt;ui:param name="subject" value="Templating with Seam Mail"/&gt;
+&lt;ui:define name="body"&gt;
+    &lt;p&gt;This example demonstrates that you can easily use &lt;i&gt;facelets templating&lt;/i&gt; in email!&lt;/p&gt;
+&lt;/ui:define&gt;
+</programlisting>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Creating_a_message-Internationalisation">
+			<title>Internationalisation</title>
+			<para>
+				Seam supports sending internationalised messages. By default, the encoding provided by JSF is used, but this can be overridden on the template:
+			</para>
+<programlisting>&lt;m:message charset="UTF-8"&gt;
+   ...
+&lt;/m:message&gt;
+</programlisting>
+			<para>
+				The body, subject and recipient (and from) name will be encoded. You will need to make sure facelets uses the correct charset for parsing your pages by setting encoding of the template:
+			</para>
+<programlisting>&lt;?xml version="1.0" encoding="UTF-8"?&gt;</programlisting>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Creating_a_message-Other_Headers">
+			<title>Other Headers</title>
+			<para>
+				Sometimes you will want to add other headers to your email. Seam provides support for some (see <xref linkend="Seam_Reference_Guide-Email-Tags" />). For example, we can set the importance of the email, and ask for a read receipt:
+			</para>
+<programlisting>&lt;m:message xmlns:m="http://jboss.com/products/seam/mail"
+           importance="low"
+           requestReadReceipt="true"/&gt;
+</programlisting>
+			<para>
+				Otherise you can add any header to the message using the <literal>&lt;m:header&gt;</literal> tag:
+			</para>
+<programlisting>&lt;m:header name="X-Sent-From" value="JBoss Seam"/&gt;</programlisting>
+		</section>
+
+	</section>
+	
+	<section id="Seam_Reference_Guide-Email-Receiving_emails">
+		<title>Receiving emails</title>
+		<para>
+			If you are using EJB then you can use a MDB (Message Driven Bean) to receive email. Seam comes with an improved version of <literal>mail-ra.rar</literal> as distributed in JBoss AS; until the improvements make there way into a released version of JBoss AS, replacing the default <literal>rar</literal> with the one distributed with Seam is recommended.
+		</para>
+		<para>
+			You can configure it like this:
+		</para>
+<programlisting>@MessageDriven(activationConfig={
+         @ActivationConfigProperty(propertyName="mailServer", propertyValue="localhost"),
+         @ActivationConfigProperty(propertyName="mailFolder", propertyValue="INBOX"),
+         @ActivationConfigProperty(propertyName="storeProtocol", propertyValue="pop3"),
+         @ActivationConfigProperty(propertyName="userName", propertyValue="seam"),
+         @ActivationConfigProperty(propertyName="password", propertyValue="seam")
+})
+ at ResourceAdapter("mail-ra.rar")
+ at Name("mailListener")
+public class MailListenerMDB implements MailListener {
+
+   @In(create=true)
+   private OrderProcessor orderProcessor;
+
+   public void onMessage(Message message) {
+      // Process the message
+      orderProcessor.process(message.getSubject());
+   }
+   
+}
+</programlisting>
+		<para>
+			Each message received will cause <literal>onMessage(Message message)</literal> to be called. Most seam annotations will work inside a MDB but you must not access the persistence context.
+		</para>
+		<para>
+			You can find more information on the default <literal>mail-ra.rar</literal> at <ulink url="http://wiki.jboss.org/wiki/Wiki.jsp?page=InboundJavaMail">http://wiki.jboss.org/wiki/Wiki.jsp?page=InboundJavaMail</ulink>. The version distributed with Seam also includes a <literal>debug</literal> property to enable JavaMail debugging, a <literal>flush</literal> property (by default true) to disable flushing a <literal>POP3</literal> mailbox after successfullying delivering a message to your MDB and a <literal>port</literal> property to override the default TCP port. </para>
+		<note>
+		<para>
+		The api for this may be altered as changes make there way into the JBoss Enterprise Application Platform.
+		</para>
+	</note>
+<!--		<para>
+			If you are not using the JBoss Enterprise Application Platform you can still use <literal>mail-ra.rar</literal> (included with Seam in the mail directory), or you may find your application server includes a similar adapter.
+		</para> -->
+	</section>
+	
+	<section id="Seam_Reference_Guide-Email-Configuration">
+		<title>Configuration</title>
+		<para>
+			To include Email support in your application, include <literal>jboss-seam-mail.jar</literal> in your WEB-INF/lib directory. If you are using JBoss AS there is no further configuration needed to use Seam&#39;s email support. Otherwise you need to make sure you have the JavaMail API, an implementation of the JavaMail API present (the API and impl used in JBoss AS are distributed with seam as <literal>lib/mail.jar</literal>), and a copy of the Java Activation Framework (distributed with seam as <literal>lib/activation.jar</literal>.
+		</para>
+		<para>
+			The Seam Email module requires the use of Facelets as the view technology. Future versions of the library may also support the use of JSP. Additionally, it requires the use of the seam-ui package.
+		</para>
+		<para>
+			The <literal>mailSession</literal> component uses JavaMail to talk to a &#39;real&#39; SMTP server.
+		</para>
+		<section id="Seam_Reference_Guide-Configuration-mailSession">
+			<title><literal>mailSession</literal></title>
+			<para>
+				A JavaMail Session may be available via a JNDI lookup if you are working in an JEE environment or you can use a Seam configured Session.
+			</para>
+			<para>
+				The mailSession component&#39;s properties are described in more detail in the Mail related components section.
+			</para>
+			<section id="Seam_Reference_Guide-mailSession-JNDI_lookup_in_JBoss_AS">
+				<title>JNDI lookup in JBoss AS</title>
+				<para>
+					The JBossAS <literal>deploy/mail-service.xml</literal> configures a JavaMail session binding into JNDI. The default service configuration will need altering for your network. <ulink url="http://wiki.jboss.org/wiki/Wiki.jsp?page=JavaMail">http://wiki.jboss.org/wiki/Wiki.jsp?page=JavaMail</ulink> describes the service in more detail.
+				</para>
+<programlisting>&lt;components xmlns="http://jboss.com/products/seam/components"
+        xmlns:core="http://jboss.com/products/seam/core"
+        xmlns:mail="http://jboss.com/products/seam/mail"&gt;
+        
+    &lt;mail:mail-session session-jndi-name="java:/Mail"/&gt;
+    
+&lt;/components&gt;
+</programlisting>
+				<para>
+					Here we tell Seam to get the mail session bound to <literal>java:/Mail</literal> from JNDI.
+				</para>
+			</section>
+			
+			<section id="Seam_Reference_Guide-mailSession-Seam_configured_Session">
+				<title>Seam configured Session</title>
+				<para>
+					A mail session can be configured via <literal>components.xml</literal>. Here we tell Seam to use <literal>smtp.example.com</literal> as the smtp server,
+				</para>
+<programlisting>&lt;components xmlns="http://jboss.com/products/seam/components"
+        xmlns:core="http://jboss.com/products/seam/core"
+        xmlns:mail="http://jboss.com/products/seam/mail"&gt;
+        
+    &lt;mail:mail-session host="smtp.example.com"/&gt;
+    
+&lt;/components&gt;
+</programlisting>
+			</section>
+
+		</section>
+
+	</section>
+	
+	<section id="Seam_Reference_Guide-Email-Tags">
+		<title>Tags</title>
+		<para>
+			Emails are generated using tags in the <literal>http://jboss.com/products/seam/mail</literal> namespace. Documents should always have the <literal>message</literal> tag at the root of the message. The message tag prepares Seam to generate an email.
+		</para>
+		<para>
+			The standard templating tags of facelets can be used as normal. Inside the body you can use any JSF tag which does not require access to external resources (stylesheets, javascript).
+		</para>
+		<variablelist>
+			<varlistentry>
+				<term>&lt;m:message&gt;</term>
+				<listitem>
+					<para>
+						Root tag of a mail message
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>importance</literal> &mdash; low, normal or high. By default normal, this sets the importance of the mail message.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>precedence</literal> &mdash; sets the precedence of the message (for example, bulk).
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>requestReadReceipt</literal> &mdash; by default false, if set, a read receipt will be request will be added, with the read receipt being sent to the <literal>From:</literal> address.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>urlBase</literal> &mdash; If set, the value is prepended to the <literal>requestContextPath</literal> allowing you to use components such as <literal>&lt;h:graphicImage&gt;</literal> in your emails.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term>&lt;m:from&gt;</term>
+				<listitem>
+					<para>
+						Set&#39;s the From: address for the email. You can only have one of these per email.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>name</literal> &mdash; the name the email should come from.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>address</literal> &mdash; the email address the email should come from.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term>&lt;m:replyTo&gt;</term>
+				<listitem>
+					<para>
+						Set&#39;s the Reply-to: address for the email. You can only have one of these per email.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>address</literal> &mdash; the email address the email should come from.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term>&lt;m:to&gt;</term>
+				<listitem>
+					<para>
+						Add a recipient to the email. Use multiple &lt;m:to&gt; tags for multiple recipients. This tag can be safely placed inside a repeat tag such as &lt;ui:repeat&gt;.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>name</literal> &mdash; the name of the recipient.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>address</literal> &mdash; the email address of the recipient.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term>&lt;m:cc&gt;</term>
+				<listitem>
+					<para>
+						Add a cc recipient to the email. Use multiple &lt;m:cc&gt; tags for multiple ccs. This tag can be safely placed inside a repeat tag such as &lt;ui:repeat&gt;.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>name</literal> &mdash; the name of the recipient.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>address</literal> &mdash; the email address of the recipient.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term>&lt;m:bcc&gt;</term>
+				<listitem>
+					<para>
+						Add a bcc recipient to the email. Use multiple &lt;m:bcc&gt; tags for multiple bccs. This tag can be safely placed inside a repeat tag such as &lt;ui:repeat&gt;.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>name</literal> &mdash; the name of the recipient.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>address</literal> &mdash; the email address of the recipient.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term>&lt;m:header&gt;</term>
+				<listitem>
+					<para>
+						Add a header to the email (for example, <literal>X-Sent-From: JBoss Seam</literal>
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>name</literal> &mdash; The name of the header to add (e.g. <literal>X-Sent-From</literal>).
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>value</literal> &mdash; The value of the header to add (e.g. <literal>JBoss Seam</literal>).
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term>&lt;m:attachment&gt;</term>
+				<listitem>
+					<para>
+						Add an attachment to the email.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>value</literal> &mdash; The file to attach:
+							</para>
+							<itemizedlist>
+								<listitem>
+									<para>
+										<literal>String</literal> &mdash; A <literal>String</literal> is interpreted as a path to file within the classpath
+									</para>
+								</listitem>
+								<listitem>
+									<para>
+										<literal>java.io.File</literal> &mdash; An EL expression can reference a <literal>File</literal> object
+									</para>
+								</listitem>
+								<listitem>
+									<para>
+										<literal>java.net.URL</literal> &mdash; An EL expression can reference a <literal>URL</literal> object
+									</para>
+								</listitem>
+								<listitem>
+									<para>
+										<literal>java.io.InputStream</literal> &mdash; An EL expression can reference an <literal>InputStream</literal>. In this case both a <literal>fileName</literal> and a <literal>contentType</literal> must be specified.
+									</para>
+								</listitem>
+								<listitem>
+									<para>
+										<literal>byte[]</literal> &mdash; An EL expression can reference an <literal>byte[]</literal>. In this case both a <literal>fileName</literal> and a <literal>contentType</literal> must be specified.
+									</para>
+								</listitem>
+							</itemizedlist>
+							<para>
+								If the value attribute is ommitted:
+							</para>
+							<itemizedlist>
+								<listitem>
+									<para>
+										If this tag contains a <literal>&lt;p:document&gt;</literal> tag, the document described will be generated and attached to the email. A <literal>fileName</literal> should be specfied.
+									</para>
+								</listitem>
+								<listitem>
+									<para>
+										If this tag contains other JSF tags a HTML document will be generated from them and attached to the email. A <literal>fileName</literal> should be specfied.
+									</para>
+								</listitem>
+							</itemizedlist>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>fileName</literal> &mdash; Specify the file name to use for the attached file.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>contentType</literal> &mdash; Specify the MIME type of the attached file
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term>&lt;m:subject&gt;</term>
+				<listitem>
+					<para>
+						Set&#39;s the subject for the email.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term>&lt;m:body&gt;</term>
+				<listitem>
+					<para>
+						Set&#39;s the body for the email. Supports an <literal>alternative</literal> facet which, if an HTML email is generated can contain alternative text for a mail reader which doesn&#39;t support html.
+					</para>
+					<itemizedlist>
+						<listitem>
+							<para>
+								<literal>type</literal> &mdash; If set to <literal>plain</literal> then a plain text email will be generated otherwise an HTML email is generated.
+							</para>
+						</listitem>
+					</itemizedlist>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+	</section>
+
+</chapter>
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Persistence.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Persistence.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Persistence.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,313 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping">
+	<title>Seam and Object/Relational Mapping</title>
+	<para>
+		Seam provides extensive support for the two most popular persistence architectures for Java: Hibernate3, and the Java Persistence API introduced with EJB 3.0. Seam&#39;s unique state-management architecture allows the most sophisticated ORM integration of any web application framework.
+	</para>
+	<section id="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Introduction">
+		<title>Introduction</title>
+		<para>
+			Seam grew out of the frustration of the Hibernate team with the statelessness typical of the previous generation of Java application architectures. The state management architecture of Seam was originally designed to solve problems relating to persistence&mdash;in particular problems associated with <emphasis>optimistic transaction processing</emphasis>. Scalable online applications always use optimistic transactions. An atomic (database/JTA) level transaction should not span a user interaction unless the application is designed to support only a very small number of concurrent clients. But almost all interesting work involves first displaying data to a user, and then, slightly later, updating the same data. So Hibernate was designed to support the idea of a persistence context which spanned an optimistic transaction.
+		</para>
+		<para>
+			Unfortunately, the so-called <emphasis>stateless</emphasis> architectures that preceded Seam and EJB 3.0 had no construct for representing an optimistic transaction. So, instead, these architectures provided persistence contexts scoped to the atomic transaction. This resulted in many problems for users, and is the cause of the number one user complaint about Hibernate: the dreaded <literal>LazyInitializationException</literal>. What we need is a construct for representing an optimistic transaction in the application tier.
+		</para>
+		<para>
+			EJB 3.0 recognizes this problem, and introduces the idea of a stateful component (a stateful session bean) with an <emphasis>extended persistence context</emphasis> scoped to the lifetime of the component. This is a partial solution to the problem (and is a useful construct in and of itself) however there are two problems:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					The lifecycle of the stateful session bean must be managed manually via code in the web tier (it turns out that this is a subtle problem and much more difficult in practice than it sounds).
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					Propagation of the persistence context between stateful components in the same optimistic transaction is possible, but tricky.
+				</para>
+			</listitem>
+		</itemizedlist>
+		<para>
+			Seam solves the first problem by providing conversations, and stateful session bean components scoped to the conversation. (Most conversations actually represent optimistic transactions in the data layer.) This is sufficient for many simple applications (such as the Seam booking demo) where persistence context propagation is not needed. For more complex applications, with many loosly-interacting components in each conversation, propagation of the persistence context across components becomes an important issue. So Seam extends the persistence context management model of EJB 3.0, to provide conversation-scoped extended persistence contexts.
+		</para>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Seam_managed_transactions">
+		<title>Seam managed transactions</title>
+		<para>
+			EJB session beans feature declarative transaction management. The EJB container is able to start a transaction transparently when the bean is invoked, and end it when the invocation ends. If we write a session bean method that acts as a JSF action listener, we can do all the work associated with that action in one transaction, and be sure that it is committed or rolled back when we finish processing the action. This is a great feature, and all that is needed by some Seam applications.
+		</para>
+		<para>
+			However, there is a problem with this approach. A Seam application may not perform all data access for a request from a single method call to a session bean.
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					The request might require processing by several loosly-coupled components, each of which is called independently from the web layer. It is common to see several or even many calls per request from the web layer to EJB components in Seam.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					Rendering of the view might require lazy fetching of associations.
+				</para>
+			</listitem>
+		</itemizedlist>
+		<para>
+			The more transactions per request, the more likely we are to encounter atomicity and isolation problems when our application is processing many concurrent requests. Certainly, all write operations should occur in the same transaction.
+		</para>
+		<para>
+			Hibernate users developed the <emphasis>open session in view</emphasis> pattern to work around this problem. In the Hibernate community, <emphasis>open session in view</emphasis> was historically even more important because frameworks like Spring use transaction-scoped persistence contexts. So rendering the view would cause <literal>LazyInitializationException</literal>s when unfetched associations were accessed.
+		</para>
+		<para>
+			This pattern is usually implemented as a single transaction which spans the entire request. There are several problems with this implementation, the most serious being that we can never be sure that a transaction is successful until we commit it&mdash;but by the time the <emphasis>open session in view</emphasis> transaction is committed, the view is fully rendered, and the rendered response may already have been flushed to the client. How can we notify the user that their transaction was unsuccessful?
+		</para>
+		<para>
+			Seam solves both the transaction isolation problem and the association fetching problem, while working around the problems with <emphasis>open session in view</emphasis>. The solution comes in two parts:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					use an extended persistence context that is scoped to the conversation, instead of to the transaction
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					use two transactions per request; the first spans the beginning of the update model values phase until the end of the invoke application phase; the second spans the render response phase
+				</para>
+			</listitem>
+		</itemizedlist>
+		<para>
+			In the next section, we will tell you how to set up a conversation-scope persistence context. But first we need to tell you how to enable Seam transaction management. Note that you can use conversation-scoped persistence contexts without Seam transaction management, and there are good reasons to use Seam transaction management even when you are not using Seam-managed persistence contexts. However, the two facilities were designed to work together, and work best when used together.
+		</para>
+		<section id="Seam_Reference_Guide-Seam_managed_transactions-Enabling_Seam_managed_transactions">
+			<title>Enabling Seam-managed transactions</title>
+			<para>
+				To make use of <emphasis>Seam managed transactions</emphasis>, you need to use <literal>TransactionalSeamPhaseListener</literal> in place of <literal>SeamPhaseListener</literal>.
+			</para>
+<programlisting>&lt;lifecycle&gt;
+     &lt;phase-listener&gt;
+        org.jboss.seam.jsf.TransactionalSeamPhaseListener
+    &lt;/phase-listener&gt;
+&lt;/lifecycle&gt;
+</programlisting>
+			<para>
+				Seam transaction management is useful even if you are using EJB 3.0 container-managed persistence contexts. But it is especially useful if you use Seam outside a Java EE 5 environment, or in any other case where you would use a Seam-managed persistence context.
+			</para>
+		</section>
+
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Seam_managed_persistence_contexts">
+		<title>Seam-managed persistence contexts</title>
+		<para>
+			If you are using Seam outside of a Java EE 5 environment, you cannot rely upon the container to manage the persistence context lifecycle for you. Even if you are in an EE 5 environment, you might have a complex application with many loosly coupled components that collaborate together in the scope of a single conversation, and in this case you might find that propagation of the persistence context between component is tricky and error-prone.
+		</para>
+		<para>
+			In either case, you will need to use a <emphasis>managed persistence context</emphasis> (for JPA) or a <emphasis>managed session</emphasis> (for Hibernate) in your components. A Seam-managed persistence context is just a built-in Seam component that manages an instance of <literal>EntityManager</literal> or <literal>Session</literal> in the conversation context. You can inject it with <literal>@In</literal>.
+		</para>
+		<para>
+			Seam-managed persistence contexts are extremely efficient in a clustered environment. Seam is able to perform an optimization that EJB 3.0 specification does not allow containers to use for container-managed extended persistence contexts. Seam supports transparent failover of extended persisence contexts, without the need to replicate any persistence context state between nodes. (We hope to fix this oversight in the next revision of the EJB spec.)
+		</para>
+		<section id="Seam_Reference_Guide-Seam_managed_persistence_contexts-Using_a_Seam_managed_persistence_context_with_JPA">
+			<title>Using a Seam-managed persistence context with JPA</title>
+			<para>
+				Configuring a managed persistence context is easy. In <literal>components.xml</literal>, we can write:
+			</para>
+<programlisting>&lt;core:managed-persistence-context name="bookingDatabase" 
+                           auto-create="true"
+            persistence-unit-jndi-name="java:/EntityManagerFactories/bookingData"/&gt;
+</programlisting>
+			<para>
+				This configuration creates a conversation-scoped Seam component named <literal>bookingDatabase</literal> that manages the lifecycle of <literal>EntityManager</literal> instances for the persistence unit (<literal>EntityManagerFactory</literal> instance) with JNDI name <literal>java:/EntityManagerFactories/bookingData</literal>.
+			</para>
+			<para>
+				Of course, you need to make sure that you have bound the <literal>EntityManagerFactory</literal> into JNDI. In JBoss, you can do this by adding the following property setting to <literal>persistence.xml</literal>.
+			</para>
+<programlisting>&lt;property name="jboss.entity.manager.factory.jndi.name" 
+          value="java:/EntityManagerFactories/bookingData"/&gt;
+</programlisting>
+			<para>
+				Now we can have our <literal>EntityManager</literal> injected using:
+			</para>
+<programlisting>@In EntityManager bookingDatabase;</programlisting>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Seam_managed_persistence_contexts-Using_a_Seam_managed_Hibernate_session">
+			<title>Using a Seam-managed Hibernate session</title>
+			<para>
+				Seam-managed Hibernate sessions are similar. In <literal>components.xml</literal>:
+			</para>
+<programlisting>&lt;core:hibernate-session-factory name="hibernateSessionFactory"/&gt;
+
+&lt;core:managed-hibernate-session name="bookingDatabase" 
+                         auto-create="true"
+           session-factory-jndi-name="java:/bookingSessionFactory"/&gt;
+</programlisting>
+			<para>
+				Where <literal>java:/bookingSessionFactory</literal> is the name of the session factory specified in <literal>hibernate.cfg.xml</literal>.
+			</para>
+<programlisting>&lt;session-factory name="java:/bookingSessionFactory"&gt;
+    &lt;property name="transaction.flush_before_completion"&gt;true&lt;/property&gt;
+    &lt;property name="connection.release_mode"&gt;after_statement&lt;/property&gt;
+    &lt;property name="transaction.manager_lookup_class"&gt;
+       org.hibernate.transaction.JBossTransactionManagerLookup
+    &lt;/property&gt;
+    &lt;property name="transaction.factory_class"&gt;
+       org.hibernate.transaction.JTATransactionFactory
+    &lt;/property&gt;
+    &lt;property name="connection.datasource"&gt;java:/bookingDatasource&lt;/property&gt;
+    ...
+&lt;/session-factory&gt;
+</programlisting>
+<important>
+			<para>
+				Seam does not flush the session, so you should always enable <literal>hibernate.transaction.flush_before_completion</literal> to ensure that the session is automatically flushed before the JTA transaction commits.
+			</para>
+		</important>
+			<para>
+				We can now have a managed Hibernate <literal>Session</literal> injected into our JavaBean components using the following code:
+			</para>
+<programlisting>@In Session bookingDatabase;</programlisting>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Seam_managed_persistence_contexts-Seam_managed_persistence_contexts_and_atomic_conversations">
+			<title>Seam-managed persistence contexts and atomic conversations</title>
+			<para>
+				Persistence contexts scoped to the conversation allows you to program optimistic transactions that span multiple requests to the server without the need to use the <literal>merge()</literal> operation , without the need to re-load data at the beginning of each request, and without the need to wrestle with the <literal>LazyInitializationException</literal> or <literal>NonUniqueObjectException</literal>.
+			</para>
+			<para>
+				As with any optimistic transaction management, transaction isolation and consistency can be achieved via use of optimistic locking. Fortunately, both Hibernate and EJB 3.0 make it very easy to use optimistic locking, by providing the <literal>@Version</literal> annotation.
+			</para>
+			<para>
+				By default, the persistence context is flushed (synchronized with the database) at the end of each transaction. This is sometimes the desired behavior. But very often, we would prefer that all changes are held in memory and only written to the database when the conversation ends successfully. This allows for truly atomic conversations. As the result of a truly stupid and shortsighted decision by certain non-JBoss, non-Sun and non-Sybase members of the EJB 3.0 expert group, there is currently no simple, usable and portable way to implement atomic conversations using EJB 3.0 persistence. However, Hibernate provides this feature as a vendor extension to the <literal>FlushModeType</literal>s defined by the specification, and it is our expectation that other vendors will soon provide a similar extension.
+			</para>
+			<para>
+				Seam lets you specify <literal>FlushModeType.MANUAL</literal> when beginning a conversation. Currently, this works only when Hibernate is the underlying persistence provider, but we plan to support other equivalent vendor extensions.
+			</para>
+<programlisting>@In EntityManager em; //a Seam-managed persistence context
+
+ at Begin(flushMode=MANUAL)
+public void beginClaimWizard() {
+    claim = em.find(Claim.class, claimId);
+}
+</programlisting>
+			<para>
+				Now, the <literal>claim</literal> object remains managed by the persistence context for the rest ot the conversation. We can make changes to the claim:
+			</para>
+<programlisting>public void addPartyToClaim() {
+    Party party = ....;
+    claim.addParty(party);
+}
+</programlisting>
+			<para>
+				But these changes will not be flushed to the database until we explicitly force the flush to occur:
+			</para>
+<programlisting>@End
+public void commitClaim() {
+    em.flush();
+}
+</programlisting>
+		</section>
+
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_the_JPA_delegate">
+		<title>Using the JPA "delegate"</title>
+		<para>
+			The <literal>EntityManager</literal> interface lets you access a vendor-specific API via the <literal>getDelegate()</literal> method. Naturally, the most interesting vendor is Hibernate, and the most powerful delegate interface is <literal>org.hibernate.Session</literal>. You&#39;d be nuts to use anything else. Trust me, I&#39;m not biased at all.
+		</para>
+		<para>
+			But regardless of whether you are using Hibernate or something else, you will almost certainly want to use the delegate in your Seam components from time to time. One approach would be the following:
+		</para>
+<programlisting>@In EntityManager entityManager;
+
+ at Create
+public void init() {
+    ( (Session) entityManager.getDelegate() ).enableFilter("currentVersions");
+}
+</programlisting>
+		<para>
+			But typecasts are unquestionably the ugliest syntax in the Java language, so most people avoid them whenever possible. Here is a different way to get at the delegate. First, add the following line to <literal>components.xml</literal>:
+		</para>
+<programlisting>&lt;factory name="session" 
+         scope="STATELESS" 
+         auto-create="true" 
+         value="#{entityManager.delegate}"/&gt;
+</programlisting>
+		<para>
+			Now we can inject the session directly:
+		</para>
+<programlisting>@In Session session;
+
+ at Create
+public void init() {
+    session.enableFilter("currentVersions");
+}
+</programlisting>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_EL_in_EJB_QLHQL">
+		<title>Using EL in EJB-QL/HQL</title>
+		<para>
+			Seam proxies the <literal>EntityManager</literal> or <literal>Session</literal> object whenever you use a Seam-managed persistence context or inject a container managed persistence context using <literal>@PersistenceContext</literal>. This lets you use EL expressions in your query strings, safely and efficiently. For example, this:
+		</para>
+<programlisting>User user = em.createQuery("from User where username=#{user.username}")
+         .getSingleResult();
+</programlisting>
+		<para>
+			is equivalent to:
+		</para>
+<programlisting>User user = em.createQuery("from User where username=:username")
+         .setParameter("username", user.getUsername())
+         .getSingleResult();
+</programlisting>
+		<para>
+			Of course, you should never, ever write it like this:
+		</para>
+<programlisting>User user = em.createQuery("from User where username=" + user.getUsername()) //BAD!
+         .getSingleResult();
+</programlisting>
+		<para>
+			(It is inefficient and vulnerable to SQL injection attacks.)
+		</para>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_and_ObjectRelational_Mapping-Using_Hibernate_filters">
+		<title>Using Hibernate filters</title>
+		<para>
+			The most unique feature of Hibernate is <emphasis>filters</emphasis>. Filters let you provide a restricted view of the data in the database. You can find out more about filters in the Hibernate documentation. But we thought we would mention an easy way to incorporate filters into a Seam application, one that works especially well with the Seam Application Framework.
+		</para>
+		<para>
+			Seam-managed persistence contexts may have a list of filters defined, which will be enabled whenever an <literal>EntityManager</literal> or Hibernate <literal>Session</literal> is first created. (Of course, they may only be used when Hibernate is the underlying persistence provider.)
+		</para>
+<programlisting>&lt;core:filter name="regionFilter"&gt;
+    &lt;core:name&gt;region&lt;/core:name&gt;
+    &lt;core:parameters&gt;
+        &lt;key&gt;regionCode&lt;/key&gt;
+        &lt;value&gt;#{region.code}&lt;/value&gt;
+    &lt;/core:parameters&gt;
+&lt;/core:filter&gt;
+
+&lt;core:filter name="currentFilter"&gt;
+    &lt;core:name&gt;current&lt;/core:name&gt;
+    &lt;core:parameters&gt;
+        &lt;key&gt;date&lt;/key&gt;
+        &lt;value&gt;#{currentDate}&lt;/value&gt;
+    &lt;/core:parameters&gt;
+&lt;/core:filter&gt;
+
+&lt;core:managed-persistence-context name="personDatabase"
+    persistence-unit-jndi-name="java:/EntityManagerFactories/personDatabase"&gt;
+    &lt;core:filters&gt;
+        &lt;value&gt;#{regionFilter}&lt;/value&gt;
+        &lt;value&gt;#{currentFilter}&lt;/value&gt;
+    &lt;/core:filters&gt;
+&lt;/core:managed-persistence-context&gt;
+</programlisting>
+	</section>
+
+</chapter>
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Remoting.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Remoting.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Remoting.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,578 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Seam_Reference_Guide-Remoting">
+	<title>Remoting</title>
+	<para>
+		Seam provides a convenient method of remotely accessing components from a web page, using AJAX (Asynchronous Javascript and XML). The framework for this functionality is provided with almost no up-front development effort - your components only require simple annotating to become accessible via AJAX. This chapter describes the steps required to build an AJAX-enabled web page, then goes on to explain the features of the Seam Remoting framework in more detail.
+	</para>
+	<sect1 id="Seam_Reference_Guide-Remoting-Configuration"><title>Configuration</title>
+	<para>
+		To use remoting, the Seam Resource servlet must first be configured in your <literal>web.xml</literal> file:
+	</para>
+<programlisting>
+          
+  &lt;servlet&gt;
+    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;
+    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-class&gt;
+  &lt;/servlet&gt;
+
+  &lt;servlet-mapping&gt;
+    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;
+    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;
+  &lt;/servlet-mapping&gt;
+        
+        
+</programlisting>
+	<para>
+		The next step is to import the necessary Javascript into your web page. There are a minimum of two scripts that must be imported. The first one contains all the client-side framework code that enables remoting functionality:
+	</para>
+<programlisting>
+          
+  &lt;script type="text/javascript" src="seam/resource/remoting/resource/remote.js"&gt;&lt;/script&gt;
+            
+        
+</programlisting>
+	<para>
+		The second script contains the stubs and type definitions for the components you wish to call. It is generated dynamically based on the local interface of your components, and includes type definitions for all of the classes that can be used to call the remotable methods of the interface. The name of the script reflects the name of your component. For example, if you have a stateless session bean annotated with <literal>@Name("customerAction")</literal>, then your script tag should look like this:
+	</para>
+<programlisting>
+          
+  &lt;script type="text/javascript" src="seam/resource/remoting/interface.js?customerAction"&gt;
+    &lt;/script&gt;
+        
+        
+</programlisting>
+	<para>
+		If you wish to access more than one component from the same page, then include them all as parameters of your script tag:
+	</para>
+<programlisting>
+          
+  &lt;script type="text/javascript" 
+     src="seam/resource/remoting/interface.js?customerAction&amp;accountAction"&gt;
+  &lt;/script&gt;
+        
+        
+</programlisting>
+	</sect1><sect1 id="Seam_Reference_Guide-Remoting-The_Seam_object"><title>The "Seam" object</title>
+	<para>
+		Client-side interaction with your components is all performed via the <literal>Seam</literal> Javascript object. This object is defined in <literal>remote.js</literal>, and you will be using it to make asynchronous calls against your component. It is split into two areas of functionality; <literal>Seam.Component</literal> contains methods for working with components and <literal>Seam.Remoting</literal> contains methods for executing remote requests. The easiest way to become familiar with this object is to start with a simple example.
+	</para>
+	<sect2 id="Seam_Reference_Guide-The_Seam_object-A_Hello_World_example"><title>A Hello World example</title>
+	<para>
+		Let us step through a simple example to see how the <literal>Seam</literal> object works. First of all, let us create a new Seam component called <literal>helloAction</literal>.
+	</para>
+<programlisting>
+          
+  @Stateless
+  @Name("helloAction")
+  public class HelloAction implements HelloLocal {
+    public String sayHello(String name) {
+      return "Hello, " + name;
+    }
+  }
+          
+        
+</programlisting>
+	<para>
+		You also need to create a local interface for our new component - take special note of the <literal>@WebRemote</literal> annotation, as it is required to make our method accessible via remoting:
+	</para>
+<programlisting>
+          
+  @Local
+  public interface HelloLocal {
+    @WebRemote
+    public String sayHello(String name);
+  }
+          
+        
+</programlisting>
+	<para>
+		That is all the server-side code we need to write. Now for our web page - create a new page and import the following scripts:
+	</para>
+<programlisting>
+          
+  &lt;script type="text/javascript" src="seam/resource/remoting/resource/remote.js"&gt;&lt;/script&gt;
+  &lt;script type="text/javascript" src="seam/resource/remoting/interface.js?helloAction"&gt;&lt;/script&gt;
+          
+        
+</programlisting>
+	<para>
+		To make this a fully interactive user experience, let us add a button to our page:
+	</para>
+<programlisting>
+          
+  &lt;button onclick="javascript:sayHello()"&gt;Say Hello&lt;/button&gt;
+          
+        
+</programlisting>
+	<para>
+		We will also need to add some more script to make our button actually do something when it is clicked:
+	</para>
+<programlisting>
+          
+  &lt;script type="text/javascript"&gt;
+    //&lt;![CDATA[
+
+    function sayHello() {
+      var name = prompt("What is your name?");
+      Seam.Component.getInstance("helloAction").sayHello(name, sayHelloCallback);
+    }
+
+    function sayHelloCallback(result) {
+      alert(result);
+    }
+
+    // ]]&gt;
+  &lt;/script&gt;
+          
+        
+</programlisting>
+	<para>
+		Now deploy your application and browse to your page. Click the button, and enter a name when prompted. A message box will display the hello message confirming that the call was successful. If you want to save some time, you will find the full source code for this Hello World example in Seam&#39;s <literal>/examples/remoting/helloworld</literal> directory.
+	</para>
+	<para>
+		So what does the code of our script actually do? Let us break it down into smaller pieces. To start with, you can see from the Javascript code listing that we have implemented two methods - the first method is responsible for prompting the user for their name and then making a remote request. Take a look at the following line:
+	</para>
+<programlisting>
+  Seam.Component.getInstance("helloAction").sayHello(name, sayHelloCallback);
+        
+</programlisting>
+	<para>
+		The first section of this line, <literal>Seam.Component.getInstance("helloAction")</literal> returns a proxy, or "stub" for our <literal>helloAction</literal> component. We can invoke the methods of our component against this stub, which is exactly what happens with the remainder of the line: <literal>sayHello(name, sayHelloCallback);</literal>.
+	</para>
+	<para>
+		What this line of code in its completeness does, is invoke the <literal>sayHello</literal> method of our component, passing in <literal>name</literal> as a parameter. The second parameter, <literal>sayHelloCallback</literal> is not a parameter of our component&#39;s <literal>sayHello</literal> method, instead it tells the Seam Remoting framework that once it receives the response to our request, it should pass it to the <literal>sayHelloCallback</literal> Javascript method. This callback parameter is entirely optional, so feel free to leave it out if you are calling a method with a <literal>void</literal> return type or if you do not care about the result.
+	</para>
+	<para>
+		The <literal>sayHelloCallback</literal> method, once receiving the response to our remote request then pops up an alert message displaying the result of our method call.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-The_Seam_object-Seam.Component"><title>Seam.Component</title>
+	<para>
+		The <literal>Seam.Component</literal> Javascript object provides a number of client-side methods for working with your Seam components. The two main methods, <literal>newInstance()</literal> and <literal>getInstance()</literal> are documented in the following sections however their main difference is that <literal>newInstance()</literal> will always create a new instance of a component type, and <literal>getInstance()</literal> will return a singleton instance.
+	</para>
+	<sect3 id="Seam_Reference_Guide-Seam.Component-Seam.Component.newInstance"><title>Seam.Component.newInstance()</title>
+	<para>
+		Use this method to create a new instance of an entity or Javabean component. The object returned by this method will have the same getter/setter methods as its server-side counterpart, or alternatively if you wish you can access its fields directly. Take the following Seam entity component for example:
+	</para>
+<programlisting>
+  @Name("customer")
+  @Entity
+  public class Customer implements Serializable
+  {
+    private Integer customerId;
+    private String firstName;
+    private String lastName;
+    
+    @Column public Integer getCustomerId() { 
+      return customerId; 
+    }
+    
+    public void setCustomerId(Integer customerId} { 
+      this.customerId = customerId; 
+    }
+    
+    @Column public String getFirstName() { 
+      return firstName; 
+    }
+    
+    public void setFirstName(String firstName) {
+      this.firstName = firstName; 
+    }
+    
+    @Column public String getLastName() {
+      return lastName;
+    }
+    
+    public void setLastName(String lastName) {
+      this.lastName = lastName;
+    }
+  }
+          
+</programlisting>
+	<para>
+		To create a client-side Customer you would write the following code:
+	</para>
+<programlisting>
+  var customer = Seam.Component.newInstance("customer");
+          
+</programlisting>
+	<para>
+		Then from here you can set the fields of the customer object:
+	</para>
+<programlisting>
+  customer.setFirstName("John");
+  // Or you can set the fields directly
+  customer.lastName = "Smith";
+          
+</programlisting>
+	</sect3><sect3 id="Seam_Reference_Guide-Seam.Component-Seam.Component.getInstance"><title>Seam.Component.getInstance()</title>
+	<para>
+		The <literal>getInstance()</literal> method is used to get a reference to a Seam session bean component stub, which can then be used to remotely execute methods against your component. This method returns a singleton for the specified component, so calling it twice in a row with the same component name will return the same instance of the component.
+	</para>
+	<para>
+		To continue our example from before, if we have created a new <literal>customer</literal> and we now wish to save it, we would pass it to the <literal>saveCustomer()</literal> method of our <literal>customerAction</literal> component:
+	</para>
+<programlisting>
+  Seam.Component.getInstance("customerAction").saveCustomer(customer);          
+          
+</programlisting>
+	</sect3><sect3 id="Seam_Reference_Guide-Seam.Component-Seam.Component.getComponentName"><title>Seam.Component.getComponentName()</title>
+	<para>
+		Passing an object into this method will return its component name if it is a component, or <literal>null</literal> if it is not.
+	</para>
+<programlisting>
+  if (Seam.Component.getComponentName(instance) == "customer")
+    alert("Customer");
+  else if (Seam.Component.getComponentName(instance) == "staff")
+    alert("Staff member");          
+          
+</programlisting>
+	</sect3></sect2><sect2 id="Seam_Reference_Guide-The_Seam_object-Seam.Remoting"><title>Seam.Remoting</title>
+	<para>
+		Most of the client side functionality for Seam Remoting is contained within the <literal>Seam.Remoting</literal> object. While you should not need to directly call most of its methods, there are a couple of important ones worth mentioning.
+	</para>
+	<sect3 id="Seam_Reference_Guide-Seam.Remoting-Seam.Remoting.createType"><title>Seam.Remoting.createType()</title>
+	<para>
+		If your application contains or uses Javabean classes that are not Seam components, you may need to create these types on the client side to pass as parameters into your component method. Use the <literal>createType()</literal> method to create an instance of your type. Pass in the fully qualified Java class name as a parameter:
+	</para>
+<programlisting>
+  var widget = Seam.Remoting.createType("com.acme.widgets.MyWidget");          
+          
+</programlisting>
+	</sect3><sect3 id="Seam_Reference_Guide-Seam.Remoting-Seam.Remoting.getTypeName"><title>Seam.Remoting.getTypeName()</title>
+	<para>
+		This method is the equivalent of <literal>Seam.Component.getComponentName()</literal> but for non-component types. It will return the name of the type for an object instance, or <literal>null</literal> if the type is not known. The name is the fully qualified name of the type&#39;s Java class.
+	</para>
+	</sect3></sect2></sect1><sect1 id="Seam_Reference_Guide-Remoting-Client_Interfaces"><title>Client Interfaces</title>
+	<para>
+		In the configuration section above, the interface, or "stub" for our component is imported into our page via <literal>seam/resource/remoting/interface.js</literal>:
+	</para>
+<programlisting>
+        
+  &lt;script type="text/javascript" src="seam/resource/remoting/interface.js?customerAction"&gt;
+  &lt;/script&gt;
+        
+      
+</programlisting>
+	<para>
+		By including this script in our page, the interface definitions for our component, plus any other components or types that are required to execute the methods of our component are generated and made available for the remoting framework to use.
+	</para>
+	<para>
+		There are two types of client stub that can be generated, "executable" stubs and "type" stubs. Executable stubs are behavioural, and are used to execute methods against your session bean components, while type stubs contain state and represent the types that can be passed in as parameters or returned as a result.
+	</para>
+	<para>
+		The type of client stub that is generated depends on the type of your Seam component. If the component is a session bean, then an executable stub will be generated, otherwise if it is an entity or JavaBean, then a type stub will be generated. There is one exception to this rule; if your component is a JavaBean (ie it is not a session bean nor an entity bean) and any of its methods are annotated with @WebRemote, then an executable stub will be generated for it instead of a type stub. This allows you to use remoting to call methods of your JavaBean components in a non-EJB environment where you do not have access to session beans.
+	</para>
+	</sect1><sect1 id="Seam_Reference_Guide-Remoting-The_Context"><title>The Context</title>
+	<para>
+		The Seam Remoting Context contains additional information which is sent and received as part of a remoting request/response cycle. At this stage it only contains the conversation ID but may be expanded in the future.
+	</para>
+	<sect2 id="Seam_Reference_Guide-The_Context-Setting_and_reading_the_Conversation_ID"><title>Setting and reading the Conversation ID</title>
+	<para>
+		If you intend on using remote calls within the scope of a conversation then you need to be able to read or set the conversation ID in the Seam Remoting Context. To read the conversation ID after making a remote request call <literal>Seam.Remoting.getContext().getConversationId()</literal>. To set the conversation ID before making a request, call <literal>Seam.Remoting.getContext().setConversationId()</literal>.
+	</para>
+	<para>
+		If the conversation ID has not been explicitly set with <literal>Seam.Remoting.getContext().setConversationId()</literal>, then it will be automatically assigned the first valid conversation ID that is returned by any remoting call. If you are working with multiple conversations within your page, then you may need to explicitly set the conversation ID before each call. If you are working with just a single conversation, then you do not need to do anything special.
+	</para>
+	</sect2>
+	</sect1><sect1 id="Seam_Reference_Guide-Remoting-Batch_Requests"><title>Batch Requests</title>
+	<para>
+		Seam Remoting allows multiple component calls to be executed within a single request. It is recommended that this feature is used wherever it is appropriate to reduce network traffic.
+	</para>
+	<para>
+		The method <literal>Seam.Remoting.startBatch()</literal> will start a new batch, and any component calls executed after starting a batch are queued, rather than being sent immediately. When all the desired component calls have been added to the batch, the <literal>Seam.Remoting.executeBatch()</literal> method will send a single request containing all of the queued calls to the server, where they will be executed in order. After the calls have been executed, a single response containining all return values will be returned to the client and the callback functions (if provided) triggered in the same order as execution.
+	</para>
+	<para>
+		If you start a new batch via the <literal>startBatch()</literal> method but then decide you do not want to send it, the <literal>Seam.Remoting.cancelBatch()</literal> method will discard any calls that were queued and exit the batch mode.
+	</para>
+	<para>
+		To see an example of a batch being used, take a look at <literal>/examples/remoting/chatroom</literal>.
+	</para>
+	</sect1><sect1 id="Seam_Reference_Guide-Remoting-Working_with_Data_types"><title>Working with Data types</title>
+	<sect2 id="Seam_Reference_Guide-Working_with_Data_types-Primitives__Basic_Types"><title>Primitives / Basic Types</title>
+	<para>
+		This section describes the support for basic data types. On the server side these values are generally compatible with either their primitive type or their corresponding wrapper class.
+	</para>
+	<sect3 id="Seam_Reference_Guide-Primitives__Basic_Types-String"><title>String</title>
+	<para>
+		Simply use Javascript String objects when setting String parameter values.
+	</para>
+	</sect3><sect3 id="Seam_Reference_Guide-Primitives__Basic_Types-Number"><title>Number</title>
+	<para>
+		There is support for all number types supported by Java. On the client side, number values are always serialized as their String representation and then on the server side they are converted to the correct destination type. Conversion into either a primitive or wrapper type is supported for <literal>Byte</literal>, <literal>Double</literal>, <literal>Float</literal>, <literal>Integer</literal>, <literal>Long</literal> and <literal>Short</literal> types.
+	</para>
+	</sect3><sect3 id="Seam_Reference_Guide-Primitives__Basic_Types-Boolean"><title>Boolean</title>
+	<para>
+		Booleans are represented client side by Javascript Boolean values, and server side by a Java boolean.
+	</para>
+	</sect3></sect2><sect2 id="Seam_Reference_Guide-Working_with_Data_types-JavaBeans"><title>JavaBeans</title>
+	<para>
+		In general these will be either Seam entity or JavaBean components, or some other non-component class. Use the appropriate method (either <literal>Seam.Component.newInstance()</literal> for Seam components or <literal>Seam.Remoting.createType()</literal> for everything else) to create a new instance of the object.
+	</para>
+	<para>
+		It is important to note that only objects that are created by either of these two methods should be used as parameter values, where the parameter is not one of the other valid types mentioned anywhere else in this section. In some situations you may have a component method where the exact parameter type cannot be determined, such as:
+	</para>
+<programlisting>
+  @Name("myAction")
+  public class MyAction implements MyActionLocal {
+    public void doSomethingWithObject(Object obj) {
+      // code
+    }
+  }
+        
+</programlisting>
+	<para>
+		In this case you might want to pass in an instance of your <literal>myWidget</literal> component, however the interface for <literal>myAction</literal> will not include <literal>myWidget</literal> as it is not directly referenced by any of its methods. To get around this, <literal>MyWidget</literal> needs to be explicitly imported:
+	</para>
+<programlisting>
+                  
+  &lt;script type="text/javascript" src="seam/resource/remoting/interface.js?myAction&amp;myWidget"&gt;
+  &lt;/script&gt;
+          
+        
+</programlisting>
+	<para>
+		This will then allow a <literal>myWidget</literal> object to be created with <literal>Seam.Component.newInstance("myWidget")</literal>, which can then be passed to <literal>myAction.doSomethingWithObject()</literal>.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Working_with_Data_types-Dates_and_Times"><title>Dates and Times</title>
+	<para>
+		Date values are serialized into a String representation that is accurate to the millisecond. On the client side, use a Javascript Date object to work with date values. On the server side, use any <literal>java.util.Date</literal> (or descendent, such as <literal>java.sql.Date</literal> or <literal>java.sql.Timestamp</literal> class.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Working_with_Data_types-Enums"><title>Enums</title>
+	<para>
+		On the client side, enums are treated the same as Strings. When setting the value for an enum parameter, simply use the String representation of the enum. Take the following component as an example:
+	</para>
+<programlisting>
+  @Name("paintAction")
+  public class paintAction implements paintLocal {
+    public enum Color {red, green, blue, yellow, orange, purple};
+
+    public void paint(Color color) {
+      // code
+    }    
+  }            
+        
+</programlisting>
+	<para>
+		To call the <literal>paint()</literal> method with the color <literal>red</literal>, pass the parameter value as a String literal:
+	</para>
+<programlisting>
+  Seam.Component.getInstance("paintAction").paint("red");
+        
+</programlisting>
+	<para>
+		The inverse is also true - that is, if a component method returns an enum parameter (or contains an enum field anywhere in the returned object graph) then on the client-side it will be represented as a String.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Working_with_Data_types-Collections"><title>Collections</title>
+	<sect3 id="Seam_Reference_Guide-Collections-Bags"><title>Bags</title>
+	<para>
+		Bags cover all collection types including arrays, collections, lists, sets, (but excluding Maps - see the next section for those), and are implemented client-side as a Javascript array. When calling a component method that accepts one of these types as a parameter, your parameter should be a Javascript array. If a component method returns one of these types, then the return value will also be a Javascript array. The remoting framework is clever enough on the server side to convert the bag to an appropriate type for the component method call.
+	</para>
+	</sect3><sect3 id="Seam_Reference_Guide-Collections-Maps"><title>Maps</title>
+	<para>
+		As there is no native support for Maps within Javascript, a simple Map implementation is provided with the Seam Remoting framework. To create a Map which can be used as a parameter to a remote call, create a new <literal>Seam.Remoting.Map</literal> object:
+	</para>
+<programlisting>
+  var map = new Seam.Remoting.Map();          
+          
+</programlisting>
+	<para>
+		This Javascript implementation provides basic methods for working with Maps: <literal>size()</literal>, <literal>isEmpty()</literal>, <literal>keySet()</literal>, <literal>values()</literal>, <literal>get(key)</literal>, <literal>put(key, value)</literal>, <literal>remove(key)</literal> and <literal>contains(key)</literal>. Each of these methods are equivalent to their Java counterpart. Where the method returns a collection, such as <literal>keySet()</literal> and <literal>values()</literal>, a Javascript Array object will be returned that contains the key or value objects (respectively).
+	</para>
+	</sect3></sect2></sect1><sect1 id="Seam_Reference_Guide-Remoting-Debugging"><title>Debugging</title>
+	<para>
+		To aid in tracking down bugs, it is possible to enable a debug mode which will display the contents of all the packets send back and forth between the client and server in a popup window. To enable debug mode, either execute the <literal>setDebug()</literal> method in Javascript:
+	</para>
+<programlisting>
+  Seam.Remoting.setDebug(true);      
+      
+</programlisting>
+	<para>
+		Or configure it via components.xml:
+	</para>
+<programlisting>&lt;remoting:remoting debug="true"/&gt;</programlisting>
+	<para>
+		To turn off debugging, call <literal>setDebug(false)</literal>. If you want to write your own messages to the debug log, call <literal>Seam.Remoting.log(message)</literal>.
+	</para>
+	</sect1><sect1 id="Seam_Reference_Guide-Remoting-The_Loading_Message"><title>The Loading Message</title>
+	<para>
+		The default loading message that appears in the top right corner of the screen can be modified, its rendering customised or even turned off completely.
+	</para>
+	<sect2 id="Seam_Reference_Guide-The_Loading_Message-Changing_the_message"><title>Changing the message</title>
+	<para>
+		To change the message from the default "Please Wait..." to something different, set the value of <literal>Seam.Remoting.loadingMessage</literal>:
+	</para>
+<programlisting>
+  Seam.Remoting.loadingMessage = "Loading...";        
+        
+</programlisting>
+	</sect2><sect2 id="Seam_Reference_Guide-The_Loading_Message-Hiding_the_loading_message"><title>Hiding the loading message</title>
+	<para>
+		To completely suppress the display of the loading message, override the implementation of <literal>displayLoadingMessage()</literal> and <literal>hideLoadingMessage()</literal> with functions that instead do nothing:
+	</para>
+<programlisting>
+  // do not display the loading indicator
+  Seam.Remoting.displayLoadingMessage = function() {};
+  Seam.Remoting.hideLoadingMessage = function() {};        
+        
+</programlisting>
+	</sect2><sect2 id="Seam_Reference_Guide-The_Loading_Message-A_Custom_Loading_Indicator"><title>A Custom Loading Indicator</title>
+	<para>
+		It is also possible to override the loading indicator to display an animated icon, or anything else that you want. To do this override the <literal>displayLoadingMessage()</literal> and <literal>hideLoadingMessage()</literal> messages with your own implementation:
+	</para>
+<programlisting>
+  Seam.Remoting.displayLoadingMessage = function() {
+    // Write code here to display the indicator
+  };
+  
+  Seam.Remoting.hideLoadingMessage = function() {
+    // Write code here to hide the indicator
+  };
+        
+</programlisting>
+	</sect2></sect1><sect1 id="Seam_Reference_Guide-Remoting-Controlling_what_data_is_returned"><title>Controlling what data is returned</title>
+	<para>
+		When a remote method is executed, the result is serialized into an XML response that is returned to the client. This response is then unmarshaled by the client into a Javascript object. For complex types (i.e. Javabeans) that include references to other objects, all of these referenced objects are also serialized as part of the response. These objects may reference other objects, which may reference other objects, and so forth. If left unchecked, this object "graph" could potentially be enormous, depending on what relationships exist between your objects. And as a side issue (besides the potential verbosity of the response), you might also wish to prevent sensitive information from being exposed to the client.
+	</para>
+	<para>
+		Seam Remoting provides a simple means to "constrain" the object graph, by specifying the <literal>exclude</literal> field of the remote method&#39;s <literal>@WebRemote</literal> annotation. This field accepts a String array containing one or more paths specified using dot notation. When invoking a remote method, the objects in the result&#39;s object graph that match these paths are excluded from the serialized result packet.
+	</para>
+	<para>
+		For all our examples, we will use the following <literal>Widget</literal> class:
+	</para>
+<programlisting>
+ at Name("widget")
+public class Widget
+{
+  private String value;
+  private String secret;
+  private Widget child;
+  private Map&lt;String,Widget&gt; widgetMap;
+  private List&lt;Widget&gt; widgetList;
+  
+  // getters and setters for all fields
+}
+      
+</programlisting>
+	<sect2 id="Seam_Reference_Guide-Controlling_what_data_is_returned-Constraining_normal_fields"><title>Constraining normal fields</title>
+	<para>
+		If your remote method returns an instance of <literal>Widget</literal>, but you do not want to expose the <literal>secret</literal> field because it contains sensitive information, you would constrain it like this:
+	</para>
+<programlisting>
+  @WebRemote(exclude = {"secret"})
+  public Widget getWidget();      
+        
+</programlisting>
+	<para>
+		The value "secret" refers to the <literal>secret</literal> field of the returned object. Now, suppose that we do not care about exposing this particular field to the client. Instead, notice that the <literal>Widget</literal> value that is returned has a field <literal>child</literal> that is also a <literal>Widget</literal>. What if we want to hide the <literal>child</literal>&#39;s <literal>secret</literal> value instead? We can do this by using dot notation to specify this field&#39;s path within the result&#39;s object graph:
+	</para>
+<programlisting>
+  @WebRemote(exclude = {"child.secret"})
+  public Widget getWidget();      
+        
+</programlisting>
+	</sect2><sect2 id="Seam_Reference_Guide-Controlling_what_data_is_returned-Constraining_Maps_and_Collections"><title>Constraining Maps and Collections</title>
+	<para>
+		The other place that objects can exist within an object graph are within a <literal>Map</literal> or some kind of collection (<literal>List</literal>, <literal>Set</literal>, <literal>Array</literal>, etc). Collections are easy, and are treated like any other field. For example, if our <literal>Widget</literal> contained a list of other <literal>Widget</literal>s in its <literal>widgetList</literal> field, to constrain the <literal>secret</literal> field of the <literal>Widget</literal>s in this list the annotation would look like this:
+	</para>
+<programlisting>
+  @WebRemote(exclude = {"widgetList.secret"})
+  public Widget getWidget();      
+        
+</programlisting>
+	<para>
+		To constrain a <literal>Map</literal>&#39;s key or value, the notation is slightly different. Appending <literal>[key]</literal> after the <literal>Map</literal>&#39;s field name will constrain the <literal>Map</literal>&#39;s key object values, while <literal>[value]</literal> will constrain the value object values. The following example demonstrates how the values of the <literal>widgetMap</literal> field have their <literal>secret</literal> field constrained:
+	</para>
+<programlisting>
+  @WebRemote(exclude = {"widgetMap[value].secret"})
+  public Widget getWidget();      
+        
+</programlisting>
+	</sect2><sect2 id="Seam_Reference_Guide-Controlling_what_data_is_returned-Constraining_objects_of_a_specific_type"><title>Constraining objects of a specific type</title>
+	<para>
+		There is one last notation that can be used to constrain the fields of a type of object no matter where in the result&#39;s object graph it appears. This notation uses either the name of the component (if the object is a Seam component) or the fully qualified class name (only if the object is not a Seam component) and is expressed using square brackets:
+	</para>
+<programlisting>
+  @WebRemote(exclude = {"[widget].secret"})
+  public Widget getWidget();      
+        
+</programlisting>
+	</sect2><sect2 id="Seam_Reference_Guide-Controlling_what_data_is_returned-Combining_Constraints"><title>Combining Constraints</title>
+	<para>
+		Constraints can also be combined, to filter objects from multiple paths within the object graph:
+	</para>
+<programlisting>
+  @WebRemote(exclude = {"widgetList.secret", "widgetMap[value].secret"})
+  public Widget getWidget();      
+        
+</programlisting>
+	</sect2></sect1><sect1 id="Seam_Reference_Guide-Remoting-JMS_Messaging"><title>JMS Messaging</title>
+	<para>
+		Seam Remoting provides experimental support for JMS Messaging. This section describes the JMS support that is currently implemented, but please note that this may change in the future. It is currently not recommended that this feature is used within a production environment.
+	</para>
+	<sect2 id="Seam_Reference_Guide-JMS_Messaging-Configuration"><title>Configuration</title>
+	<para>
+		Before you can subscribe to a JMS topic, you must first configure a list of the topics that can be subscribed to by Seam Remoting. List the topics under <literal>org.jboss.seam.remoting.messaging.subscriptionRegistry.allowedTopics</literal> in <literal>seam.properties</literal>, <literal>web.xml</literal> or <literal>components.xml</literal>.
+	</para>
+<programlisting>&lt;remoting:remoting poll-timeout="5" poll-interval="1"/&gt;</programlisting>
+	</sect2><sect2 id="Seam_Reference_Guide-JMS_Messaging-Subscribing_to_a_JMS_Topic"><title>Subscribing to a JMS Topic</title>
+	<para>
+		The following example demonstrates how to subscribe to a JMS Topic:
+	</para>
+<programlisting>
+  function subscriptionCallback(message)
+  {
+    if (message instanceof Seam.Remoting.TextMessage)
+      alert("Received message: " + message.getText());
+  }        
+        
+  Seam.Remoting.subscribe("topicName", subscriptionCallback);
+        
+</programlisting>
+	<para>
+		The <literal>Seam.Remoting.subscribe()</literal> method accepts two parameters, the first being the name of the JMS Topic to subscribe to, the second being the callback function to invoke when a message is received.
+	</para>
+	<para>
+		There are two types of messages supported, Text messages and Object messages. If you need to test for the type of message that is passed to your callback function you can use the <literal>instanceof</literal> operator to test whether the message is a <literal>Seam.Remoting.TextMessage</literal> or <literal>Seam.Remoting.ObjectMessage</literal>. A <literal>TextMessage</literal> contains the text value in its <literal>text</literal> field (or alternatively call <literal>getText()</literal> on it), while an <literal>ObjectMessage</literal> contains its object value in its <literal>object</literal> field (or call its <literal>getObject()</literal> method).
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-JMS_Messaging-Unsubscribing_from_a_Topic"><title>Unsubscribing from a Topic</title>
+	<para>
+		To unsubscribe from a topic, call <literal>Seam.Remoting.unsubscribe()</literal> and pass in the topic name:
+	</para>
+<programlisting>
+  Seam.Remoting.unsubscribe("topicName");        
+        
+</programlisting>
+	</sect2><sect2 id="Seam_Reference_Guide-JMS_Messaging-Tuning_the_Polling_Process"><title>Tuning the Polling Process</title>
+	<para>
+		There are two parameters which you can modify to control how polling occurs. The first one is <literal>Seam.Remoting.pollInterval</literal>, which controls how long to wait between subsequent polls for new messages. This parameter is expressed in seconds, and its default setting is 10.
+	</para>
+	<para>
+		The second parameter is <literal>Seam.Remoting.pollTimeout</literal>, and is also expressed as seconds. It controls how long a request to the server should wait for a new message before timing out and sending an empty response. Its default is 0 seconds, which means that when the server is polled, if there are no messages ready for delivery then an empty response will be immediately returned.
+	</para>
+	<para>
+		Caution should be used when setting a high <literal>pollTimeout</literal> value; each request that has to wait for a message means that a server thread is tied up until a message is received, or until the request times out. If many such requests are being served simultaneously, it could mean a large number of threads become tied up because of this reason.
+	</para>
+	<para>
+		It is recommended that you set these options via components.xml, however they can be overridden via Javascript if desired. The following example demonstrates how to configure the polling to occur much more aggressively. You should set these parameters to suitable values for your application:
+	</para>
+	<para>
+		Via components.xml:
+	</para>
+<programlisting>&lt;remoting:remoting poll-timeout="5" poll-interval="1"/&gt;</programlisting>
+	<para>
+		Via JavaScript:
+	</para>
+<programlisting>
+  // Only wait 1 second between receiving a poll response and sending the next poll request.
+  Seam.Remoting.pollInterval = 1;
+  
+  // Wait up to 5 seconds on the server for new messages
+  Seam.Remoting.pollTimeout = 5;   
+        
+</programlisting>
+	</sect2></sect1>
+</chapter>
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Revision_History.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Revision_History.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Revision_History.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,26 @@
+<?xml version='1.0'?>
+<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<appendix id="appe-Publican-Revision_History">
+	<title>Revision History</title>
+	<simpara>
+		<revhistory>
+			<revision>
+				<revnumber>1.0</revnumber>
+				<date>Thu Nov 19 2009</date>
+				<author>
+					<firstname>Laura</firstname>
+					<surname>Bailey</surname>
+					<email>lbailey at redhat.com</email>
+				</author>
+				<revdescription>
+					<simplelist>
+						<member>Initial draft.</member>
+					</simplelist>
+				</revdescription>
+			</revision>
+		</revhistory>
+	</simpara>
+</appendix>
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Seam_Reference_Guide_CP07.ent
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Seam_Reference_Guide_CP07.ent	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Seam_Reference_Guide_CP07.ent	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2 @@
+<!ENTITY HOLDER "Red Hat, Inc">
+<!ENTITY YEAR "2009">

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Seam_Reference_Guide_CP07.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Seam_Reference_Guide_CP07.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Seam_Reference_Guide_CP07.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,165 @@
+<?xml version='1.0'?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<book>
+	<xi:include href="Book_Info.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Feedback.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<toc></toc><preface id="Seam_Reference_Guide-Introduction_to_JBoss_Seam">
+		<title>Introduction to JBoss Seam</title>
+		<para>
+			Seam is an application framework for Java EE 5. It is inspired by the following principles:
+		</para>
+		<variablelist>
+			<varlistentry>
+				<term><emphasis>Integrate JSF with EJB 3.0</emphasis></term>
+				<listitem>
+					<para>
+						JSF and EJB 3.0 are two of the best new features of Java EE 5. EJB3 is a brand new component model for server side business and persistence logic. Meanwhile, JSF is a great component model for the presentation tier. Unfortunately, neither component model is able to solve all problems in computing by itself. Indeed, JSF and EJB3 work best when used together. But the Java EE 5 specification provides no standard way to integrate the two component models. Fortunately, the creators of both models anticipated this situation and provided standard extension points to allow extension and integration of other solutions.
+					</para>
+					<para>
+						Seam unifies the component models of JSF and EJB3, allowing the developer to concentrate on the business problem.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><emphasis>Integrated AJAX</emphasis></term>
+				<listitem>
+					<para>
+						Seam supports two open source JSF-based AJAX solutions: ICEfaces and Ajax4JSF. These solutions let you add AJAX capability to your user interface without the need to write any JavaScript code.
+					</para>
+					<para>
+						Seam also provides a built-in JavaScript remoting layer for EJB3 components. AJAX clients can easily call server-side components and subscribe to JMS topics, without the need for an intermediate action layer.
+					</para>
+					<para>
+						Neither of these approaches would work well, were it not for Seam's built-in concurrency and state management, which ensures that many concurrent fine-grained, asynchronous AJAX requests are handled safely and efficiently on the server side.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><emphasis>Integrate Business Process as a First Class Construct</emphasis></term>
+				<listitem>
+					<para>
+						Optionally, Seam integrates transparent business process management via jBPM. This allows for complex workflows to easily be implemented using jBPM and Seam.
+					</para>
+					<para>
+						Seam even allows definition of presentation tier conversation flow by the same means.
+					</para>
+					<para>
+						JSF provides an incredibly rich event model for the presentation tier. Seam enhances this model by exposing jBPM's business process related events via exactly the same event handling mechanism, providing a uniform event model for Seam's uniform component model.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><emphasis>The uniform component model</emphasis></term>
+				<listitem>
+					<para>
+						Seam provides a uniform component model. A Seam component may be stateful, with the state associated to any one of a number of contexts, ranging from the long-running business process to a single web request.
+					</para>
+					<para>
+						There is no distinction between presentation tier components and business logic components in Seam. It is possible to write Seam applications where <emphasis>everything</emphasis> is an EJB. EJB 3.0 completely changes the nature of EJB from the point of view of the developer. An EJB is a fine-grained object, no more complex than an annotated JavaBean. Seam even encourages you to use session beans as JSF action listeners.
+					</para>
+					<para>
+						Unlike plain Java EE or J2EE components, Seam components may <emphasis>simultaneously</emphasis> access state associated with the web request and state held in transactional resources (without the need to propagate web request state manually via method parameters). You might object that the application layering imposed upon you by the old J2EE platform was a Good Thing. Well, nothing stops you creating an equivalent layered architecture using Seam - the difference is that <emphasis>you</emphasis> get to architect your own application and decide what the layers are and how they work together.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><emphasis>Declarative State Management</emphasis></term>
+				<listitem>
+					<para>
+						We are all used to the concept of declarative transaction management and J2EE declarative security from EJB 2.x. EJB 3.0 even introduces declarative persistence context management. These are three examples of a broader problem of managing state that is associated with a particular <emphasis>context</emphasis>, while ensuring that all needed cleanup occurs when the context ends. Seam takes the concept of declarative state management much further and applies it to <emphasis>application state</emphasis>. Traditionally, J2EE applications almost always implement state management manually, by getting and setting servlet session and request attributes. This approach to state management is the source of many bugs and memory leaks when applications fail to clean up session attributes, or when session data associated with different workflows collides in a multi-window application. Seam has the potential to almost entirely eliminate this class of bugs.
+					</para>
+					<para>
+						Declarative application state management is made possible by the richness of the <emphasis>context model</emphasis> defined by Seam. Seam extends the context model defined by the servlet spec&mdash;request, session, application&mdash;with two new contexts&mdash;conversation and business process&mdash;that are more meaningful from the point of view of the business logic.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><emphasis>Bijection</emphasis></term>
+				<listitem>
+					<para>
+						The notion of <emphasis>Inversion of Control</emphasis> or <emphasis>dependency injection</emphasis> exists in both JSF and EJB3, as well as in numerous simpler containers. Most of these containers emphasize injection of components that implement <emphasis>stateless services</emphasis>. Even when injection of stateful components is supported (such as in JSF), it is virtually useless for handling application state because the scope of the stateful component cannot be defined with sufficient flexibility.
+					</para>
+					<para>
+						<emphasis>Bijection</emphasis> differs from IoC in that it is <emphasis>dynamic</emphasis>, <emphasis>contextual</emphasis>, and <emphasis>bidirectional</emphasis>. You can think of it as a mechanism for aliasing contextual variables (names in the various contexts bound to the current thread) to attributes of the component. Bijection allows auto-assembly of stateful components by the container. It even allows a component to safely and easily manipulate the value of a context variable, just by assigning to an attribute of the component.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><emphasis>Workspace Management</emphasis></term>
+				<listitem>
+					<para>
+						Optionally, Seam applications may take advantage of <emphasis>workspace management</emphasis>, allowing users to freely switch between different conversations (workspaces) in a single browser window. Seam provides not only correct multi-window operation, but also multi-window-like operation in a single window!
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><emphasis>Annotated POJOs Everywhere</emphasis></term>
+				<listitem>
+					<para>
+						EJB 3.0 embraces annotations and <emphasis>configuration by exception</emphasis> as the easiest way to provide information to the container in a declarative form. Unfortunately, JSF is still heavily dependent on verbose XML configuration files. Seam extends the annotations provided by EJB 3.0 with a set of annotations for declarative state management and declarative context demarcation. This lets you eliminate the noisy JSF managed bean declarations and reduce the required XML to just that information which truly belongs in XML (the JSF navigation rules).
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><emphasis>Testability as a Core Feature</emphasis></term>
+				<listitem>
+					<para>
+						Seam components, being POJOs, are by nature unit testable. But for complex applications, unit testing alone is insufficient. Integration testing has traditionally been a messy and difficult task for Java web applications. Therefore, Seam provides for testability of Seam applications as a core feature of the framework. You can easily write JUnit or TestNG tests that reproduce a whole interaction with a user, exercising all components of the system apart from the view (the JSP or Facelets page). You can run these tests directly inside your IDE, where Seam will automatically deploy EJB components into the JBoss Embeddable EJB3 container.
+					</para>
+				</listitem>
+			</varlistentry>
+			<varlistentry>
+				<term><emphasis>Get started now!</emphasis></term>
+				<listitem>
+					<para>
+						Seam works in any application server that supports EJB 3.0. You can even use Seam in a servlet container like Tomcat, or in any J2EE application server, by leveraging the new JBoss Embeddable EJB3 container.
+					</para>
+					<para>
+						However, we realize that not everyone is ready to make the switch to EJB 3.0. So, in the interim, you can use Seam as a framework for applications that use JSF for presentation, Hibernate (or plain JDBC) for persistence and JavaBeans for application logic. Then, when you&#39;re ready to make the switch to EJB 3.0, migration will be straightforward.
+					</para>
+				</listitem>
+			</varlistentry>
+		</variablelist>
+		<mediaobject>
+			<imageobject role="fo">
+				<imagedata align="center" fileref="images/architecture.png" />
+			</imageobject>
+		</mediaobject>
+		<para>
+			It turns out that the combination of Seam, JSF and EJB3 is <emphasis>the</emphasis> simplest way to write a complex web application in Java. You won&#39;t believe how little code is required!
+		</para>
+	</preface>
+	<xi:include href="Tutorial.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<!-- Seam-gen is not included with the JBEAP 4.2 platform, so we're removing this chapter -->
+	<!-- <xi:include href="Gettingstarted.xml" xmlns:xi="http://www.w3.org/2001/XInclude" /> -->
+	<xi:include href="Concepts.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Xml.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Events.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Conversations.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Jbpm.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Persistence.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Validation.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Framework.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Drools.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Security.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="I18n.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Text.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Itext.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Mail.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Jms.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Cache.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Remoting.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Spring.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Configuration.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Annotations.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Components.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Controls.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Elenhancements.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Testing.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+	<xi:include href="Tools.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Revision_History.xml"/>
+
+</book>
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Security.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Security.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Security.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,745 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Seam_Reference_Guide-Security">
+	<title>Security</title>
+	<para>
+		The Seam Security API is an optional Seam feature that provides authentication and authorization features for securing both domain and page resources within your Seam project.
+	</para>
+	<sect1 id="Seam_Reference_Guide-Security-Overview"><title>Overview</title>
+	<para>
+		Seam Security provides two different modes of operation:
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				<emphasis>simplified mode</emphasis> - this mode supports authentication services and simple role-based security checks.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<emphasis>advanced mode</emphasis> - this mode supports all the same features as the simplified mode, plus it offers rule-based security checks using JBoss Rules.
+			</para>
+		</listitem>
+	</itemizedlist>
+	<sect2 id="Seam_Reference_Guide-Overview-Which_mode_is_right_for_my_application"><title>Which mode is right for my application?</title>
+	<para>
+		That all depends on the requirements of your application. If you have minimal security requirements, for example if you only wish to restrict certain pages and actions to users who are logged in, or who belong to a certain role, then the simplified mode will probably be sufficient. The advantages of this is a more simplified configuration, significantly less libraries to include, and a smaller memory footprint.
+	</para>
+	<para>
+		If on the other hand, your application requires security checks based on contextual state or complex business rules, then you will require the features provided by the advanced mode.
+	</para>
+	</sect2></sect1><sect1 id="Seam_Reference_Guide-Security-Requirements"><title>Requirements</title>
+	<para>
+		If using the advanced mode features of Seam Security, the following jar files are required to be configured as modules in <literal>application.xml</literal>. If you are using Seam Security in simplified mode, these are <emphasis>not</emphasis> required:
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				drools-compiler-3.0.5.jar
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				drools-core-3.0.5.jar
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				commons-jci-core-1.0-406301.jar
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				commons-jci-janino-2.4.3.jar
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				commons-lang-2.1.jar
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				janino-2.4.3.jar
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				stringtemplate-2.3b6.jar
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				antlr-2.7.6.jar
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				antlr-3.0ea8.jar
+			</para>
+		</listitem>
+	</itemizedlist>
+	<para>
+		For web-based security, <literal>jboss-seam-ui.jar</literal> must also be included in the application&#39;s war file. Also, to make use of the security EL functions, <literal>SeamFaceletViewHandler</literal> must be used. Configure it in <literal>faces-config.xml</literal> like this:
+	</para>
+<programlisting>&lt;application&gt;
+    &lt;view-handler&gt;org.jboss.seam.ui.facelet.SeamFaceletViewHandler&lt;/view-handler&gt;
+&lt;/application&gt;
+</programlisting>
+	</sect1><sect1 id="Seam_Reference_Guide-Security-Authentication"><title>Authentication</title>
+	<para>
+		The authentication features provided by Seam Security are built upon JAAS (Java Authentication and Authorization Service), and as such provide a robust and highly configurable API for handling user authentication. However, for less complex authentication requirements Seam offers a much more simplified method of authentication that hides the complexity of JAAS.
+	</para>
+	<sect2 id="Seam_Reference_Guide-Authentication-Configuration"><title>Configuration</title>
+	<para>
+		The simplified authentication method uses a built-in JAAS login module, <literal>SeamLoginModule</literal>, which delegates authentication to one of your own Seam components. This login module is already configured inside Seam as part of a default application policy and as such does not require any additional configuration files. It allows you to write an authentication method using the entity classes that are provided by your own application. Configuring this simplified form of authentication requires the <literal>identity</literal> component to be configured in <literal>components.xml</literal>:
+	</para>
+<programlisting>&lt;components xmlns="http://jboss.com/products/seam/components"
+            xmlns:core="http://jboss.com/products/seam/core"
+            xmlns:security="http://jboss.com/products/seam/security"
+            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+            xsi:schemaLocation=
+                "http://jboss.com/products/seam/core http://jboss.com/products/seam/core-1.2.xsd 
+                 http://jboss.com/products/seam/components http://jboss.com/products/seam/components-1.2.xsd
+                 http://jboss.com/products/seam/drools http://jboss.com/products/seam/drools-1.2.xsd"
+                 http://jboss.com/products/seam/security http://jboss.com/products/seam/security-1.2.xsd"&gt;                
+        
+    &lt;security:identity authenticate-method="#{authenticator.authenticate}"/&gt;
+    
+&lt;/components&gt;
+</programlisting>
+	<para>
+		If you wish to use the advanced security features such as rule-based permission checks, all you need to do is include the Drools (JBoss Rules) jars in your classpath, and add some additional configuration, described later.
+	</para>
+	<para>
+		The EL expression <literal>#{authenticator.authenticate}</literal> is a method binding indicating that the <literal>authenticate</literal> method of the <literal>authenticator</literal> component will be used to authenticate the user.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Authentication-Writing_an_authentication_method"><title>Writing an authentication method</title>
+	<para>
+		The <literal>authenticate-method</literal> property specified for <literal>identity</literal> in <literal>components.xml</literal> specifies which method will be used by <literal>SeamLoginModule</literal> to authenticate users. This method takes no parameters, and is expected to return a boolean indicating whether authentication is successful or not. The user&#39;s username and password can be obtained from <literal>Identity.instance().getUsername()</literal> and <literal>Identity.instance().getPassword()</literal>, respectively. Any roles that the user is a member of should be assigned using <literal>Identity.instance().addRole()</literal>. Here is a complete example of an authentication method inside a JavaBean component:
+	</para>
+<programlisting>@Name("authenticator")
+public class Authenticator {
+   @In EntityManager entityManager;
+   
+   public boolean authenticate() {
+      try
+      {
+         User user = (User) entityManager.createQuery(
+            "from User where username = :username and password = :password")
+            .setParameter("username", Identity.instance().getUsername())
+            .setParameter("password", Identity.instance().getPassword())
+            .getSingleResult();
+
+         if (user.getRoles() != null)
+         {
+            for (UserRole mr : user.getRoles())
+               Identity.instance().addRole(mr.getName());
+         }
+
+         return true;
+      }
+      catch (NoResultException ex)
+      {
+         FacesMessages.instance().add("Invalid username/password");
+         return false;
+      }
+      
+   }
+   
+}
+</programlisting>
+	<para>
+		In the above example, both <literal>User</literal> and <literal>UserRole</literal> are application-specific entity beans. The <literal>roles</literal> parameter is populated with the roles that the user is a member of, which should be added to the <literal>Set</literal> as literal string values, for example, <literal>admin</literal>, <literal>user</literal>. In this case, if the user record is not found and a <literal>NoResultException</literal> thrown, the authentication method returns <literal>false</literal> to indicate the authentication failed.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Authentication-Writing_a_login_form"><title>Writing a login form</title>
+	<para>
+		The <literal>Identity</literal> component provides both <literal>username</literal> and <literal>password</literal> properties, catering for the most common authentication scenario. These properties can be bound directly to the username and password fields on a login form. Once these properties are set, calling the <literal>identity.login()</literal> method will authenticate the user using the provided credentials. Here is an example of a simple login form:
+	</para>
+<programlisting>&lt;div&gt;
+    &lt;h:outputLabel for="name" value="Username"/&gt;
+    &lt;h:inputText id="name" value="#{identity.username}"/&gt;
+&lt;/div&gt;
+
+&lt;div&gt;
+    &lt;h:outputLabel for="password" value="Password"/&gt;
+    &lt;h:inputSecret id="password" value="#{identity.password}"/&gt;
+&lt;/div&gt;
+
+&lt;div&gt;
+    &lt;h:commandButton value="Login" action="#{identity.login}"/&gt;
+&lt;/div&gt;
+</programlisting>
+	<para>
+		Similarly, logging out the user is done by calling <literal>#{identity.logout}</literal>. Calling this action will clear the security state of the currently authenticated user.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Authentication-Simplified_Configuration___Summary"><title>Simplified Configuration - Summary</title>
+	<para>
+		So to sum up, there are the three easy steps to configure authentication:
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				Configure an authentication method in <literal>components.xml</literal>.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Write an authentication method.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Write a login form so that the user can authenticate.
+			</para>
+		</listitem>
+	</itemizedlist>
+	</sect2><sect2 id="Seam_Reference_Guide-Authentication-Handling_Security_Exceptions"><title>Handling Security Exceptions</title>
+	<para>
+		To prevent users from receiving the default error page in response to a security error, it is recommended that <literal>pages.xml</literal> is configured to redirect security errors to a more meaningful page. The two main types of exceptions thrown by the security API are:
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				<literal>NotLoggedInException</literal> - This exception is thrown if the user attempts to access a restricted action or page when they are not logged in.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>AuthorizationException</literal> - This exception is only thrown if the user is already logged in, and they have attempted to access a restricted action or page for which they do not have the necessary privileges.
+			</para>
+		</listitem>
+	</itemizedlist>
+	<para>
+		In the case of a <literal>NotLoggedInException</literal>, it is recommended that the user is redirected to either a login or registration page so that they can log in. For an <literal>AuthorizationException</literal>, it may be useful to redirect the user to an error page. Here is an example of a <literal>pages.xml</literal> file that redirects both of these security exceptions:
+	</para>
+<programlisting>&lt;pages&gt;
+
+    ...
+    
+    &lt;exception class="org.jboss.seam.security.NotLoggedInException"&gt;
+        &lt;redirect view-id="/login.xhtml"&gt;
+            &lt;message&gt;You must be logged in to perform this action&lt;/message&gt;
+        &lt;/redirect&gt;
+    &lt;/exception&gt;
+    
+    &lt;exception class="org.jboss.seam.security.AuthorizationException"&gt;
+        &lt;end-conversation/&gt;
+        &lt;redirect view-id="/security_error.xhtml"&gt;
+            &lt;message&gt;
+                              You do not have the necessary security privileges to perform this action.
+            &lt;/message&gt;
+        &lt;/redirect&gt;
+    &lt;/exception&gt;
+  
+&lt;/pages&gt;
+</programlisting>
+	<para>
+		Most web applications require even more sophisticated handling of login redirection, so Seam includes some special functionality for handling this problem.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Authentication-Login_Redirection"><title>Login Redirection</title>
+	<para>
+		You can ask Seam to redirect the user to a login screen when an unauthenticated user tries to access a particular view (or wildcarded view id) as follows:
+	</para>
+<programlisting>&lt;pages login-view-id="/login.xhtml"&gt;
+
+    &lt;page view-id="/members/*" login-required="true"/&gt;
+    
+    ...
+    
+&lt;/pages&gt;
+</programlisting>
+	<para>
+		(This is less of a blunt instrument than the exception handler shown above, but should probably be used in conjunction with it.)
+	</para>
+	<para>
+		After the user logs in, we want to automatically send them back where they came from, so they can retry the action that required logging in. If you add the following event listeners to <literal>components.xml</literal>, attempts to access a restricted view while not logged in will be remembered, so that upon the user successfully logging in they will be redirected to the originally requested view, with any page parameters that existed in the original request.
+	</para>
+<programlisting>&lt;event type="org.jboss.seam.notLoggedIn"&gt;
+    &lt;action expression="#{redirect.captureCurrentView}"/&gt;
+&lt;/event&gt;
+    
+&lt;event type="org.jboss.seam.postAuthenticate"&gt;
+    &lt;action expression="#{redirect.returnToCapturedView}"/&gt;
+&lt;/event&gt;
+</programlisting>
+<note>
+	<para>
+		Login redirection is implemented as a conversation-scoped mechanism, so do not end the conversation in your <literal>authenticate()</literal> method.
+	</para>
+</note>
+	</sect2><sect2 id="Seam_Reference_Guide-Authentication-Advanced_Authentication_Features"><title>Advanced Authentication Features</title>
+	<para>
+		This section explores some of the advanced features provided by the security API for addressing more complex security requirements.
+	</para>
+	<sect3 id="Seam_Reference_Guide-Advanced_Authentication_Features-Using_your_containers_JAAS_configuration"><title>Using your container&#39;s JAAS configuration</title>
+	<para>
+		If you would rather not use the simplified JAAS configuration provided by the Seam Security API, you may instead delegate to the default system JAAS configuration by providing a <literal>jaasConfigName</literal> property in <literal>components.xml</literal>. For example, if you are using JBoss AS and wish to use the <literal>other</literal> policy (which uses the <literal>UsersRolesLoginModule</literal> login module provided by JBoss AS), then the entry in <literal>components.xml</literal> would look like this:
+	</para>
+<programlisting>&lt;security:identity authenticate-method="#{authenticator.authenticate}" 
+                      jaas-config-name="other"/&gt;
+</programlisting>
+	</sect3></sect2></sect1><sect1 id="Seam_Reference_Guide-Security-Error_Messages"><title>Error Messages</title>
+	<para>
+		The security API produces a number of default faces messages for various security-related events. The following table lists the message keys that can be used to override these messages by specifying them in a <literal>message.properties</literal> resource file.
+	</para>
+	<table id="Seam_Reference_Guide-Error_Messages-Security_Message_Keys">
+		<title>Security Message Keys</title>
+		<tgroup cols="2">
+			<colspec colnum="1" colwidth="1*"></colspec>
+			<colspec colnum="2" colwidth="3*"></colspec>
+			<tbody>
+				<row>
+					<entry>
+						<para>
+							<literal>org.jboss.seam.loginSuccessful</literal>
+						</para>
+					</entry>
+					<entry>
+						<para>
+							This message is produced when a user successfully logs in via the security API.
+						</para>
+					</entry>
+				</row>
+				<row>
+					<entry>
+						<para>
+							<literal>org.jboss.seam.loginFailed</literal>
+						</para>
+					</entry>
+					<entry>
+						<para>
+							This message is produced when the login process fails, either because the user provided an incorrect username or password, or because authentication failed in some other way.
+						</para>
+					</entry>
+				</row>
+				<row>
+					<entry>
+						<para>
+							<literal>org.jboss.seam.NotLoggedIn</literal>
+						</para>
+					</entry>
+					<entry>
+						<para>
+							This message is produced when a user attempts to perform an action or access a page that requires a security check, and the user is not currently authenticated.
+						</para>
+					</entry>
+				</row>
+			</tbody>
+		</tgroup>
+	</table>
+	</sect1><sect1 id="Seam_Reference_Guide-Security-Authorization"><title>Authorization</title>
+	<para>
+		There are a number of authorization features provided by the Seam Security API for securing access to components, component methods, and pages. This section describes each of these. An important thing to note is that if you wish to use any of the advanced features (such as rule-based permissions) then your <filename>components.xml</filename> must be configured to support this - see the Configuration section above.
+	</para>
+	<sect2 id="Seam_Reference_Guide-Authorization-Core_concepts"><title>Core concepts</title>
+	<para>
+		Each of the authorization mechanisms provided by the Seam Security API are built upon the concept of a user being granted roles and/or permissions. A role is a <emphasis>group</emphasis>, or <emphasis>type</emphasis>, of user that may have been granted certain privileges for performing one or more specific actions within an application. A permission on the other hand is a privilege (sometimes once-off) for performing a single, specific action. It is entirely possible to build an application using nothing but permissions, however roles offer a higher level of convenience when granting privileges to groups of users.
+	</para>
+	<para>
+		Roles are simple, consisting of only a name such as <literal>admin</literal>, <literal>user</literal>, <literal>customer</literal>, etc. Permissions consist of both a name and an action, and are represented within this documentation in the form <literal>name:action</literal>, for example <literal>customer:delete</literal>, or <literal>customer:insert</literal>.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Authorization-Securing_components"><title>Securing components</title>
+	<para>
+		Let us start by examining the simplest form of authorization, component security, starting with the <literal>@Restrict</literal> annotation.
+	</para>
+	<sect3 id="Seam_Reference_Guide-Securing_components-The_Restrict_annotation"><title>The @Restrict annotation</title>
+	<para>
+		Seam components may be secured either at the method or the class level, using the <literal>@Restrict</literal> annotation. If both a method and it&#39;s declaring class are annotated with <literal>@Restrict</literal>, the method restriction will take precedence (and the class restriction will not apply). If a method invocation fails a security check, then an exception will be thrown as per the contract for <literal>Identity.checkRestriction()</literal> (see Inline Restrictions). A <literal>@Restrict</literal> on just the component class itself is equivalent to adding <literal>@Restrict</literal> to each of its methods.
+	</para>
+	<para>
+		An empty <literal>@Restrict</literal> implies a permission check of <literal>componentName:methodName</literal>. Take for example the following component method:
+	</para>
+<programlisting>@Name("account")
+public class AccountAction {
+    @Restrict public void delete() {
+      ...
+    }
+}
+</programlisting>
+	<para>
+		In this example, the implied permission required to call the <literal>delete()</literal> method is <literal>account:delete</literal>. The equivalent of this would be to write <literal>@Restrict("#{s:hasPermission(&#39;account&#39;,&#39;delete&#39;,null)}")</literal>. Now let&#39;s look at another example:
+	</para>
+<programlisting>@Restrict @Name("account")
+public class AccountAction {
+    public void insert() {
+      ...
+    }
+    @Restrict("#{s:hasRole(&#39;admin&#39;)}") 
+    public void delete() {
+      ...
+    }
+}
+</programlisting>
+	<para>
+		This time, the component class itself is annotated with <literal>@Restrict</literal>. This means that any methods without an overriding <literal>@Restrict</literal> annotation require an implicit permission check. In the case of this example, the <literal>insert()</literal> method requires a permission of <literal>account:insert</literal>, while the <literal>delete()</literal> method requires that the user is a member of the <literal>admin</literal> role.
+	</para>
+	<para>
+		Before we go any further, let us address the <literal>#{s:hasRole()}</literal> expression seen in the above example. Both <literal>s:hasRole</literal> and <literal>s:hasPermission</literal> are EL functions, which delegate to the correspondingly named methods of the <literal>Identity</literal> class. These functions can be used within any EL expression throughout the entirety of the security API.
+	</para>
+	<para>
+		Being an EL expression, the value of the <literal>@Restrict</literal> annotation may reference any objects that exist within a Seam context. This is extremely useful when performing permission checks for a specific object instance. Look at this example:
+	</para>
+<programlisting>@Name("account")
+public class AccountAction {
+    @In Account selectedAccount;
+    @Restrict("#{s:hasPermission(&#39;account&#39;,&#39;modify&#39;,selectedAccount)}")
+    public void modify() {
+        selectedAccount.modify();
+    }
+}
+</programlisting>
+	<para>
+		The interesting thing to note from this example is the reference to <literal>selectedAccount</literal> seen within the <literal>hasPermission()</literal> function call. The value of this variable will be looked up from within the Seam context, and passed to the <literal>hasPermission()</literal> method in <literal>Identity</literal>, which in this case can then determine if the user has the required permission for modifying the specified <literal>Account</literal> object.
+	</para>
+	</sect3><sect3 id="Seam_Reference_Guide-Securing_components-Inline_restrictions"><title>Inline restrictions</title>
+	<para>
+		Sometimes it might be desirable to perform a security check in code, without using the <literal>@Restrict</literal> annotation. In this situation, simply use <literal>Identity.checkRestriction()</literal> to evaluate a security expression, like this:
+	</para>
+<programlisting>public void deleteCustomer() {
+    Identity.instance().checkRestriction("#{s:hasPermission(&#39;customer&#39;,&#39;delete&#39;,
+      selectedCustomer)}");
+}
+</programlisting>
+	<para>
+		If the expression specified doesn&#39;t evaluate to <literal>true</literal>, either
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				if the user is not logged in, a <literal>NotLoggedInException</literal> exception is thrown or
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				if the user is logged in, an <literal>AuthorizationException</literal> exception is thrown.
+			</para>
+		</listitem>
+	</itemizedlist>
+	<para>
+		It is also possible to call the <literal>hasRole()</literal> and <literal>hasPermission()</literal> methods directly from Java code:
+	</para>
+<programlisting>if (!Identity.instance().hasRole("admin"))
+     throw new AuthorizationException("Must be admin to perform this action");
+
+if (!Identity.instance().hasPermission("customer", "create", null))
+     throw new AuthorizationException("You may not create new customers");
+</programlisting>
+	</sect3></sect2><sect2 id="Seam_Reference_Guide-Authorization-Security_in_the_user_interface"><title>Security in the user interface</title>
+	<para>
+		One indication of a well designed user interface is that the user is not presented with options for which they do not have the necessary privileges to use. Seam Security allows conditional rendering of either 1) sections of a page or 2) individual controls, based upon the privileges of the user, using the very same EL expressions that are used for component security.
+	</para>
+	<para>
+		Let us take a look at some examples of interface security. First of all, let us pretend that we have a login form that should only be rendered if the user is not already logged in. Using the <literal>identity.isLoggedIn()</literal> property, we can write this:
+	</para>
+<programlisting>&lt;h:form class="loginForm" rendered="#{not identity.loggedIn}"&gt;</programlisting>
+	<para>
+		If the user is not logged in, then the login form will be rendered - very straight forward so far. Now let us pretend there is a menu on the page that contains some actions which should only be accessible to users in the <literal>manager</literal> role. Here is one way that these could be written:
+	</para>
+<programlisting>&lt;h:outputLink action="#{reports.listManagerReports}" rendered="#{s:hasRole(&#39;manager&#39;)}"&gt;
+    Manager Reports
+&lt;/h:outputLink&gt;
+</programlisting>
+	<para>
+		This is also quite straight forward. If the user is not a member of the <literal>manager</literal> role, then the outputLink will not be rendered. The <literal>rendered</literal> attribute can generally be used on the control itself, or on a surrounding <literal>&lt;s:div&gt;</literal> or <literal>&lt;s:span&gt;</literal> control.
+	</para>
+	<para>
+		Now for something more complex. Let us say you have a <literal>h:dataTable</literal> control on a page listing records for which you may or may not wish to render action links depending on the user&#39;s privileges. The <literal>s:hasPermission</literal> EL function allows us to pass in an object parameter which can be used to determine whether the user has the requested permission for that object or not. Here is how a dataTable with secured links might look:
+	</para>
+<programlisting>&lt;h:dataTable value="#{clients}" var="cl"&gt;
+    &lt;h:column&gt;
+        &lt;f:facet name="header"&gt;Name&lt;/f:facet&gt;
+        #{cl.name}
+    &lt;/h:column&gt;
+    &lt;h:column&gt;
+        &lt;f:facet name="header"&gt;City&lt;/f:facet&gt;
+        #{cl.city}
+    &lt;/h:column&gt;   
+    &lt;h:column&gt;
+        &lt;f:facet name="header"&gt;Action&lt;/f:facet&gt;
+        &lt;s:link value="Modify Client" action="#{clientAction.modify}"
+                rendered="#{s:hasPermission(&#39;client&#39;,&#39;modify&#39;,cl)"/&gt;
+        &lt;s:link value="Delete Client" action="#{clientAction.delete}"
+                rendered="#{s:hasPermission(&#39;client&#39;,&#39;delete&#39;,cl)"/&gt;
+    &lt;/h:column&gt;
+&lt;/h:dataTable&gt;
+</programlisting>
+	</sect2><sect2 id="Seam_Reference_Guide-Authorization-Securing_pages"><title>Securing pages</title>
+	<para>
+		Page security requires that the application is using a <literal>pages.xml</literal> file, however is extremely simple to configure. Simply include a <literal>&lt;restrict/&gt;</literal> element within the <literal>page</literal> elements that you wish to secure. By default, if a value is not provided for the <literal>restrict</literal> element, an implied permission of <literal>{viewId}:render</literal> will be checked for whenever accessing that page. Otherwise the value will be evaluated as a standard security expression. Here is a couple of examples:
+	</para>
+<programlisting>&lt;page view-id="/settings.xhtml"&gt;
+    &lt;restrict/&gt;
+&lt;/page&gt;
+        
+&lt;page view-id="/reports.xhtml"&gt;    
+    &lt;restrict&gt;#{s:hasRole(&#39;admin&#39;)}&lt;/restrict&gt;
+&lt;/page&gt;
+</programlisting>
+	<para>
+		In the above example, the first page has an implied permission restriction of <literal>/settings.xhtml:render</literal>, while the second one checks that the user is a member of the <literal>admin</literal> role.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Authorization-Securing_Entities"><title>Securing Entities</title>
+	<para>
+		Seam security also makes it possible to apply security restrictions to read, insert, update and delete actions for entities.
+	</para>
+	<para>
+		To secure all actions for an entity class, add a <literal>@Restrict</literal> annotation on the class itself:
+	</para>
+<programlisting>@Entity
+ at Name("customer")
+ at Restrict
+public class Customer {
+  ...
+}
+</programlisting>
+	<para>
+		If no expression is specified in the <literal>@Restrict</literal> annotation, the default security check that is performed is a permission check of <literal>entityName:action</literal>, where <literal>entityName</literal> is the Seam component name of the entity (or the fully-qualified class name if no @Name is specified), and the <literal>action</literal> is either <literal>read</literal>, <literal>insert</literal>, <literal>update</literal> or <literal>delete</literal>.
+	</para>
+	<para>
+		It is also possible to only restrict certain actions, by placing a <literal>@Restrict</literal> annotation on the relevent entity lifecycle method (annotated as follows):
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				<literal>@PostLoad</literal> - Called after an entity instance is loaded from the database. Use this method to configure a <literal>read</literal> permission.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>@PrePersist</literal> - Called before a new instance of the entity is inserted. Use this method to configure an <literal>insert</literal> permission.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>@PreUpdate</literal> - Called before an entity is updated. Use this method to configure an <literal>update</literal> permission.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				<literal>@PreRemove</literal> - Called before an entity is deleted. Use this method to configure a <literal>delete</literal> permission.
+			</para>
+		</listitem>
+	</itemizedlist>
+	<para>
+		Here is an example of how an entity would be configured to perform a security check for any <literal>insert</literal> operations. Please note that the method is not required to do anything, the only important thing in regard to security is how it is annotated:
+	</para>
+<programlisting>
+  @PrePersist @Restrict
+  public void prePersist() {}      
+   
+</programlisting>
+	<para>
+		And here is an example of an entity permission rule that checks if the authenticated user is allowed to insert a new <literal>MemberBlog</literal> record (from the seamspace example). The entity for which the security check is being made is automatically asserted into the working memory (in this case <literal>MemberBlog</literal>):
+	</para>
+<programlisting>rule InsertMemberBlog
+  no-loop
+  activation-group "permissions"  
+when
+  check: PermissionCheck(name == "memberBlog", action == "insert", granted == false)
+  Principal(principalName : name)
+  MemberBlog(member : member -&gt; (member.getUsername().equals(principalName)))
+then
+  check.grant();
+end;
+</programlisting>
+	<para>
+		This rule will grant the permission <literal>memberBlog:insert</literal> if the currently authenticated user (indicated by the <literal>Principal</literal> fact) has the same name as the member for which the blog entry is being created. The "<literal>name : name</literal>" structure that can be seen in the <literal>Principal</literal> fact (and other places) is a variable binding - it binds the <literal>name</literal> property of the <literal>Principal</literal> to a variable called <literal>name</literal>. Variable bindings allow the value to be referred to in other places, such as the following line which compares the member&#39;s username to the <literal>Principal</literal> name. For more details, please refer to the JBoss Rules documentation.
+	</para>
+	<para>
+		Finally, we need to install a listener class that integrates Seam security with your JPA provider.
+	</para>
+	<sect3 id="Seam_Reference_Guide-Securing_Entities-Entity_security_with_JPA"><title>Entity security with JPA</title>
+	<para>
+		Security checks for EJB3 entity beans are performed with an <literal>EntityListener</literal>. You can install this listener by using the following <literal>META-INF/orm.xml</literal> file:
+	</para>
+<programlisting>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
+                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+                 xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm 
+                                            http://java.sun.com/xml/ns/persistence/orm_1_0.xsd"
+                 version="1.0"&gt;
+                 
+    &lt;persistence-unit-metadata&gt;
+        &lt;persistence-unit-defaults&gt;
+            &lt;entity-listeners&gt;
+                &lt;entity-listener class="org.jboss.seam.security.EntitySecurityListener"/&gt;
+            &lt;/entity-listeners&gt;
+        &lt;/persistence-unit-defaults&gt;
+    &lt;/persistence-unit-metadata&gt;
+    
+&lt;/entity-mappings&gt;
+</programlisting>
+	</sect3><sect3 id="Seam_Reference_Guide-Securing_Entities-Entity_security_with_Hibernate"><title>Entity security with Hibernate</title>
+	<para>
+		If you are using a Hibernate <literal>SessionFactory</literal> configured via Seam, you do not need to do anything special to use entity security.
+	</para>
+	</sect3></sect2></sect1><sect1 id="Seam_Reference_Guide-Security-Writing_Security_Rules"><title>Writing Security Rules</title>
+	<para>
+		Up to this point there has been a lot of mention of permissions, but no information about how permissions are actually defined or granted. This section completes the picture, by explaining how permission checks are processed, and how to implement permission checks for a Seam application.
+	</para>
+	<sect2 id="Seam_Reference_Guide-Writing_Security_Rules-Permissions_Overview"><title>Permissions Overview</title>
+	<para>
+		So how does the security API know whether a user has the <literal>customer:modify</literal> permission for a specific customer? Seam Security provides quite a novel method for determining user permissions, based on JBoss Rules. A couple of the advantages of using a rule engine are 1) a centralized location for the business logic that is behind each user permission, and 2) speed - JBoss Rules uses very efficient algorithms for evaluating large numbers of complex rules involving multiple conditions.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Writing_Security_Rules-Configuring_a_rules_file"><title>Configuring a rules file</title>
+	<para>
+		Seam Security expects to find a <literal>RuleBase</literal> component called <literal>securityRules</literal> which it uses to evaluate permission checks. This is configured in <literal>components.xml</literal> as follows:
+	</para>
+<programlisting>&lt;components xmlns="http://jboss.com/products/seam/components"
+            xmlns:core="http://jboss.com/products/seam/core"
+            xmlns:security="http://jboss.com/products/seam/security"
+            xmlns:drools="http://jboss.com/products/seam/drools"
+            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+            xsi:schemaLocation=
+                "http://jboss.com/products/seam/core 
+                                              http://jboss.com/products/seam/core-1.2.xsd 
+                 http://jboss.com/products/seam/components 
+                                              http://jboss.com/products/seam/components-1.2.xsd
+                 http://jboss.com/products/seam/drools 
+                                              http://jboss.com/products/seam/drools-1.2.xsd"
+                 http://jboss.com/products/seam/security 
+                                              http://jboss.com/products/seam/security-1.2.xsd"&gt;                 
+        
+   &lt;drools:rule-base name="securityRules"&gt;
+       &lt;drools:rule-files&gt;
+           &lt;value&gt;/META-INF/security.drl&lt;/value&gt;
+       &lt;/drools:rule-files&gt;
+   &lt;/drools:rule-base&gt;    
+   
+&lt;/components&gt;
+</programlisting>
+	<para>
+		Once the <literal>RuleBase</literal> component is configured, it is time to write the security rules.
+	</para>
+	</sect2><sect2 id="Seam_Reference_Guide-Writing_Security_Rules-Creating_a_security_rules_file"><title>Creating a security rules file</title>
+	<para>
+		For this step you need to create a file called <literal>security.drl</literal> in the <literal>/META-INF</literal> directory of your application&#39;s jar file. In actual fact this file can be called anything you want, and exist in any location as long as it is configured appropriately in <literal>components.xml</literal>.
+	</para>
+	<para>
+		So what should the security rules file contain? At this stage it might be a good idea to at least skim through the JBoss Rules documentation, however to get started here is an extremely simple example:
+	</para>
+<programlisting>package MyApplicationPermissions;
+
+import org.jboss.seam.security.PermissionCheck;
+import org.jboss.seam.security.Role;
+
+rule CanUserDeleteCustomers
+when
+  c: PermissionCheck(name == "customer", action == "delete")
+  Role(name == "admin")
+then
+  c.grant();
+end;
+</programlisting>
+	<para>
+		Let us break this down. The first thing we see is the package declaration. A package in JBoss Rules is essentially a collection of rules. The package name can be anything you want - it does not relate to anything else outside the scope of the rule base.
+	</para>
+	<para>
+		The next thing we can notice is a couple of import statements for the <literal>PermissionCheck</literal> and <literal>Role</literal> classes. These imports inform the rules engine that we will be referencing these classes within our rules.
+	</para>
+	<para>
+		Finally we have the code for the rule. Each rule within a package should be given a unique name (usually describing the purpose of the rule). In this case our rule is called <literal>CanUserDeleteCustomers</literal> and will be used to check whether a user is allowed to delete a customer record.
+	</para>
+	<para>
+		Looking at the body of the rule definition we can notice two distinct sections. Rules have what is known as a left hand side (LHS) and a right hand side (RHS). The LHS consists of the conditional part of the rule, i.e. a list of conditions which must be satisfied for the rule to fire. The LHS is represented by the <literal>when</literal> section. The RHS is the consequence, or action section of the rule that will only be fired if all of the conditions in the LHS are met. The RHS is represented by the <literal>then</literal> section. The end of the rule is denoted by the <literal>end;</literal> line.
+	</para>
+	<para>
+		If we look at the LHS of the rule, we see two conditions listed there. Let us examine the first condition:
+	</para>
+<programlisting>c: PermissionCheck(name == "customer", action == "delete")</programlisting>
+	<para>
+		In plain english, this condition is stating that there must exist a <literal>PermissionCheck</literal> object with a <literal>name</literal> property equal to "customer", and an <literal>action</literal> property equal to "delete" within the working memory. What is the working memory? It is a session-scoped object that contains the contextual information that is required by the rules engine to make a decision about a permission check. Each time the <literal>hasPermission()</literal> method is called, a temporary <literal>PermissionCheck</literal> object, or <emphasis>Fact</emphasis>, is asserted into the working memory. This <literal>PermissionCheck</literal> corresponds exactly to the permission that is being checked, so for example if you call <literal>hasPermission("account", "create", null)</literal> then a <literal>PermissionCheck</literal> object with a <literal>name</literal> equal to "account" and <literal>action</literal> equal to "create" will be asserted into t!
 he working memory for the duration of the permission check.
+	</para>
+	<para>
+		So what else is in the working memory? Besides the short-lived temporary facts asserted during a permission check, there are some longer-lived objects in the working memory that stay there for the entire duration of a user being authenticated. These include any <literal>java.security.Principal</literal> objects that are created as part of the authentication process, plus a <literal>org.jboss.seam.security.Role</literal> object for each of the roles that the user is a member of. It is also possible to assert additional long-lived facts into the working memory by calling <literal>RuleBasedIdentity.instance().getSecurityContext().assertObject()</literal>, passing the object as a parameter.
+	</para>
+	<para>
+		Getting back to our simple example, we can also notice that the first line of our LHS is prefixed with <literal>c:</literal>. This is a variable binding, and is used to refer back to the object that is matched by the condition. Moving onto the second line of our LHS, we see this:
+	</para>
+<programlisting>Role(name == "admin")</programlisting>
+	<para>
+		This condition simply states that there must be a <literal>Role</literal> object with a <literal>name</literal> of "admin" within the working memory. As mentioned, user roles are asserted into the working memory as long-lived facts. So, putting both conditions together, this rule is essentially saying "I will fire if you are checking for the <literal>customer:delete</literal> permission and the user is a member of the <literal>admin</literal> role".
+	</para>
+	<para>
+		So what is the consequence of the rule firing? Let us take a look at the RHS of the rule:
+	</para>
+<programlisting>c.grant()</programlisting>
+	<para>
+		The RHS consists of Java code, and in this case is invoking the <literal>grant()</literal> method of the <literal>c</literal> object, which as already mentioned is a variable binding for the <literal>PermissionCheck</literal> object. Besides the <literal>name</literal> and <literal>action</literal> properties of the <literal>PermissionCheck</literal> object, there is also a <literal>granted</literal> property which is initially set to <literal>false</literal>. Calling <literal>grant()</literal> on a <literal>PermissionCheck</literal> sets the <literal>granted</literal> property to <literal>true</literal>, which means that the permission check was successful, allowing the user to carry out whatever action the permission check was intended for.
+	</para>
+	<sect3 id="Seam_Reference_Guide-Creating_a_security_rules_file-Wildcard_permission_checks"><title>Wildcard permission checks</title>
+	<para>
+		It is possible to implement a wildcard permission check (which allows all actions for a given permission name), by omitting the <literal>action</literal> constraint for the <literal>PermissionCheck</literal> in your rule, like this:
+	</para>
+<programlisting>rule CanDoAnythingToCustomersIfYouAreAnAdmin
+when
+  c: PermissionCheck(name == "customer")
+  Role(name == "admin")
+then
+  c.grant();
+end;        
+        
+</programlisting>
+	<para>
+		This rule allows users with the <literal>admin</literal> role to perform <emphasis>any</emphasis> action for any <literal>customer</literal> permission check.
+	</para>
+	</sect3></sect2></sect1><sect1 id="Seam_Reference_Guide-Security-SSL_Security"><title>SSL Security</title>
+	<para>
+		Seam includes basic support for serving sensitive pages via the HTTPS protocol. This is easily configured by specifying a <literal>scheme</literal> for the page in <literal>pages.xml</literal>. The following example shows how the view <literal>/login.xhtml</literal> is configured to use HTTPS:
+	</para>
+<programlisting>  &lt;page view-id="/login.xhtml" scheme="https"&gt;</programlisting>
+	<para>
+		This configuration is automatically extended to both <literal>s:link</literal> and <literal>s:button</literal> JSF controls, which (when specifying the <literal>view</literal>) will also render the link using the correct protocol. Based on the previous example, the following link will use the HTTPS protocol because <literal>/login.xhtml</literal> is configured to use it:
+	</para>
+<programlisting>  &lt;s:link view="/login.xhtml" value="Login"/&gt; </programlisting>
+	<para>
+		Browsing directly to a view when using the <emphasis>incorrect</emphasis> protocol will cause a redirect to the same view using the <emphasis>correct</emphasis> protocol. For example, browsing to a page that has <literal>scheme="https"</literal> using HTTP will cause a redirect to the same page using HTTPS.
+	</para>
+	<para>
+		It is also possible to configure a default <literal>scheme</literal> for all pages. This is actually quite important, as you might only wish to use HTTPS for a few pages, and if no default scheme is specified then the default behavior is to continue using the current scheme. What this means is that once you enter a page with HTTPS, then HTTPS will continue to be used even if you navigate away to other non-HTTPS pages (a bad thing!). So it is strongly recommended to include a default <literal>scheme</literal>, by configuring it on the default (<literal>"*"</literal>) view:
+	</para>
+<programlisting>  &lt;page view-id="*" scheme="http"&gt; </programlisting>
+	<para>
+		Of course, if <emphasis>none</emphasis> of the pages in your application use HTTPS then it is not required to specify a default scheme.
+	</para>
+	</sect1><sect1 id="Seam_Reference_Guide-Security-Implementing_a_Captcha_Test"><title>Implementing a Captcha Test</title>
+	<para>
+		Though strictly not part of the security API, it might be useful in certain circumstances (such as new user registrations, posting to a public blog or forum) to implement a Captcha (<emphasis>C</emphasis>ompletely <emphasis>A</emphasis>utomated <emphasis>P</emphasis>ublic <emphasis>T</emphasis>uring test to tell <emphasis>C</emphasis>omputers and <emphasis>H</emphasis>umans <emphasis>A</emphasis>part) to prevent automated bots from interacting with your application. Seam provides seamless integration with JCaptcha, an excellent library for generating Captcha challenges. If you wish to use the captcha feature in your application you need to include the jcaptcha-* jar file from the Seam lib directory in your project, and register it in <literal>application.xml</literal> as a java module.
+	</para>
+	<sect2 id="Seam_Reference_Guide-Implementing_a_Captcha_Test-Configuring_the_Captcha_Servlet"><title>Configuring the Captcha Servlet</title>
+	<para>
+		To get up and running, it is necessary to configure the Seam Resource Servlet, which will provide the Captcha challenge images to your pages. This requires the following entry in <literal>web.xml</literal>:
+	</para>
+<programlisting>&lt;servlet&gt;
+    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;
+    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-class&gt;
+&lt;/servlet&gt;
+    
+&lt;servlet-mapping&gt;
+    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;
+    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;
+&lt;/servlet-mapping&gt;
+</programlisting>
+	</sect2><sect2 id="Seam_Reference_Guide-Implementing_a_Captcha_Test-Adding_a_Captcha_to_a_page"><title>Adding a Captcha to a page</title>
+	<para>
+		Adding a captcha challenge to a page is extremely easy. Seam provides a page-scoped component, <literal>captcha</literal>, which provides everything that is required, including built-in captcha validation. Here is an example:
+	</para>
+<programlisting>&lt;div&gt;
+    &lt;h:graphicImage value="/seam/resource/captcha?#{captcha.id}"/&gt;
+&lt;/div&gt;
+  
+&lt;div&gt;
+    &lt;h:outputLabel for="verifyCaptcha"&gt;Enter the above letters&lt;/h:outputLabel&gt;
+    &lt;h:inputText id="verifyCaptcha" value="#{captcha.response}" required="true"/&gt;
+    &lt;div class="validationError"&gt;&lt;h:message for="verifyCaptcha"/&gt;&lt;/div&gt;
+&lt;/div&gt;
+</programlisting>
+	<para>
+		That is all there is to it. The <literal>graphicImage</literal> control displays the Captcha challenge, and the <literal>inputText</literal> receives the user&#39;s response. The response is automatically validated against the Captcha when the form is submitted.
+	</para>
+	</sect2></sect1>
+</chapter>
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Spring.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Spring.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Spring.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,223 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Seam_Reference_Guide-Spring_Framework_integration">
+	<title>Spring Framework integration</title>
+	<para>
+		The Spring integration module allows easy migration of Spring-based projects to Seam and allows Spring applications to take advantage of key Seam features like conversations and Seam&#39;s more sophisticated persistence context management.
+	</para>
+	<para>
+		Seam&#39;s support for Spring provides the ability to:
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				inject Seam component instances into Spring beans
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				inject Spring beans into Seam components
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				turn Spring beans into Seam components
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				allow Spring beans to live in any Seam context
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				start a spring WebApplicationContext with a Seam component
+			</para>
+		</listitem>
+	</itemizedlist>
+	<section id="Seam_Reference_Guide-Spring_Framework_integration-Injecting_Seam_components_into_Spring_beans">
+		<title>Injecting Seam components into Spring beans</title>
+		<para>
+			Injecting Seam component instances into Spring beans is accomplished using the <literal>&lt;seam:instance/&gt;</literal> namespace handler. To enable the Seam namespace handler, the Seam namespace must be added to the Spring beans definition file:
+		</para>
+<programlisting>&lt;beans xmlns="http://www.springframework.org/schema/beans"
+    xmlns:seam="http://jboss.com/products/seam/spring-seam"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://www.springframework.org/schema/beans 
+                        http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
+                        http://jboss.com/products/seam/spring-seam 
+                        http://jboss.com/products/seam/spring-seam-1.2.xsd"&gt;
+</programlisting>
+		<para>
+			Now any Seam component may be injected into any Spring bean:
+		</para>
+<programlisting>&lt;bean id="someSpringBean" class="SomeSpringBeanClass" scope="prototype"&gt;
+    &lt;property name="someProperty"&gt;
+        &lt;seam:instance name="someComponent"/&gt;
+    &lt;/property&gt;
+&lt;/bean&gt;
+</programlisting>
+		<para>
+			An EL expression may be used instead of a component name:
+		</para>
+<programlisting>&lt;bean id="someSpringBean" class="SomeSpringBeanClass" scope="prototype"&gt;
+    &lt;property name="someProperty"&gt;
+        &lt;seam:instance name="#{someExpression}"/&gt;
+    &lt;/property&gt;
+&lt;/bean&gt;
+</programlisting>
+		<para>
+			Seam component instances may even be made available for injection into Spring beans by a Spring bean id.
+		</para>
+<programlisting>&lt;seam:instance name="someComponent" id="someSeamComponentInstance"/&gt;
+
+&lt;bean id="someSpringBean" class="SomeSpringBeanClass" scope="prototype"&gt;
+    &lt;property name="someProperty" ref="someSeamComponentInstance"&gt;
+&lt;/bean&gt;
+</programlisting>
+		<para>
+			Now for the caveat!
+		</para>
+		<para>
+			Seam was designed from the ground up to support a stateful component model with multiple contexts. Spring was not. Unlike Seam bijection, Spring injection does not occur at method invocation time. Instead, injection happens only when the Spring bean is instantiated. So the instance available when the bean is instantiated will be the same instance that the bean uses for the entire life of the bean. For example, if a Seam <literal>CONVERSATION</literal>-scoped component instance is directly injected into a singleton Spring bean, that singleton will hold a reference to the same instance long after the conversation is over! We call this problem <emphasis>scope impedance</emphasis>. Seam bijection ensures that scope impedance is maintained naturally as an invocation flows through the system. In Spring, we need to inject a proxy of the Seam component, and resolve the reference when the proxy is invoked.
+		</para>
+		<para>
+			The <literal>&lt;seam:instance/&gt;</literal> tag lets us automatically proxy the Seam component.
+		</para>
+<programlisting>&lt;seam:instance id="seamManagedEM" name="someManagedEMComponent" proxy="true"/&gt;
+        
+&lt;bean id="someSpringBean" class="SomeSpringBeanClass"&gt;
+    &lt;property name="entityManager" ref="seamManagedEM"&gt;
+&lt;/bean&gt;
+</programlisting>
+		<para>
+			This example shows one way to use a Seam-managed persistence context from a Spring bean. (A more robust way to use Seam-managed persistence contexts as a replacement for the Spring <literal>OpenEntityManagerInView</literal> filter will be provided in a future release)
+		</para>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Spring_Framework_integration-Injecting_Spring_beans_into_Seam_components">
+		<title>Injecting Spring beans into Seam components</title>
+		<para>
+			It is even easier to inject Spring beans into Seam component instances. Actually, there are two possible approaches:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					inject a Spring bean using an EL expression
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					make the Spring bean a Seam component
+				</para>
+			</listitem>
+		</itemizedlist>
+		<para>
+			We will discuss the second option in the next section. The easiest approach is to access the Spring beans via EL.
+		</para>
+		<para>
+			The Spring <literal>DelegatingVariableResolver</literal> is an integration point Spring provides for integrating Spring with JSF. This <literal>VariableResolver</literal> makes all Spring beans available in EL by their bean id. You will need to add the <literal>DelegatingVariableResolver</literal> to <literal>faces-config.xml</literal>:
+		</para>
+<programlisting>&lt;application&gt;
+    &lt;variable-resolver&gt;
+        org.springframework.web.jsf.DelegatingVariableResolver
+    &lt;/variable-resolver&gt;
+&lt;/application&gt;
+</programlisting>
+		<para>
+			Then you can inject Spring beans using <literal>@In</literal>:
+		</para>
+<programlisting>@In("#{bookingService}")
+private BookingService bookingService;
+</programlisting>
+		<para>
+			The use of Spring beans in EL is not limited to injection. Spring beans may be used anywhere that EL expressions are used in Seam: process and pageflow definitions, working memory assertions, etc...
+		</para>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Spring_Framework_integration-Making_a_Spring_bean_into_a_Seam_component">
+		<title>Making a Spring bean into a Seam component</title>
+		<para>
+			The <literal>&lt;seam:component/&gt;</literal> namespace handler can be used to make any Spring bean a Seam component. Just place the <literal>&lt;seam:component/&gt;</literal> tag within the declaration of the bean that you wish to be a Seam component:
+		</para>
+<programlisting>&lt;bean id="someSpringBean" class="SomeSpringBeanClass" scope="prototype"&gt;
+    &lt;seam:component/&gt;
+&lt;/bean&gt;
+</programlisting>
+		<para>
+			By default, <literal>&lt;seam:component/&gt;</literal> will create a <literal>STATELESS</literal> Seam component with class and name provided in the bean definition. Occasionally, such as when a <literal>FactoryBean</literal> is used, the class of the Spring bean may not be the class appearing in the bean definition. In such cases the <literal>class</literal> should be explicitly specified. A Seam component name may be explicitly specified in cases where there is potential for a naming conflict.
+		</para>
+		<para>
+			The <literal>scope</literal> attribute of <literal>&lt;seam:component/&gt;</literal> may be used if you wish the Spring bean to be managed in a particular Seam scope. The Spring bean must be scoped to <literal>prototype</literal> if the Seam scope specified is anything other than <literal>STATELESS</literal>. Pre-existing Spring beans usually have a fundamentally stateless character, so this attribute is not usually needed.
+		</para>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Spring_Framework_integration-Seam_scoped_Spring_beans">
+		<title>Seam-scoped Spring beans</title>
+		<para>
+			The Seam integration package also lets you use Seam&#39;s contexts as Spring 2.0 style custom scopes. This lets you declare any Spring bean in any of Seam&#39;s contexts. However, note once again that Spring&#39;s component model was never architected to support statefulness, so please use this feature with great care. In particular, clustering of session or conversation scoped Spring beans is deeply problematic, and care must be taken when injecting a bean or component from a wider scope into a bean of a narrower scope.
+		</para>
+		<para>
+			By specifying <literal>&lt;seam:configure-scopes/&gt;</literal> once in a Spring bean factory configuration, all of the Seam scopes will be available to Spring beans as custom scopes. To associate a Spring bean with a particular Seam scope, specify the Seam scope in the <literal>scope</literal> attribute of the bean definition.
+		</para>
+<programlisting>&lt;!-- Only needs to be specified once per bean factory--&gt;
+&lt;seam:configure-scopes/&gt;
+
+...
+
+&lt;bean id="someSpringBean" class="SomeSpringBeanClass" scope="seam.CONVERSATION"/&gt;
+</programlisting>
+		<para>
+			The prefix of the scope name may be changed by specifying the <literal>prefix</literal> attribute in the <literal>configure-scopes</literal> definition. (The default prefix is <literal>seam.</literal>)
+		</para>
+		<para>
+			Seam-scoped Spring beans defined this way can be injected into other Spring beans without the use of <literal>&lt;seam:instance/&gt;</literal>. However, care must be taken to ensure scope impedance is maintained. The normal approach used in Spring is to specify <literal>&lt;aop:scoped-proxy/&gt;</literal> in the bean definition. However, Seam-scoped Spring beans are <emphasis>not</emphasis> compatible with <literal>&lt;aop:scoped-proxy/&gt;</literal>. So if you need to inject a Seam-scoped Spring bean into a singleton, <literal>&lt;seam:instance/&gt;</literal> must be used:
+		</para>
+<programlisting>&lt;bean id="someSpringBean" class="SomeSpringBeanClass" scope="seam.CONVERSATION"/&gt;
+
+...
+
+&lt;bean id="someSingleton"&gt;
+    &lt;property name="someSeamScopedSpringBean"&gt;
+        &lt;seam:instance name="someSpringBean" proxy="true"/&gt;
+    &lt;/property&gt;
+&lt;/bean&gt;
+</programlisting>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Spring_Framework_integration-Spring_Application_Context_as_a_Seam_Component">
+		<title>Spring Application Context as a Seam Component</title>
+		<para>
+			Although it is possible to use the Spring <literal>ContextLoaderListener</literal> to start your application&#39;s Spring ApplicationContext there are a couple of limitations.
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					the Spring ApplicationContext must be started <emphasis>after</emphasis> the <literal>SeamListener</literal>
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					it can be tricky starting a Spring ApplicationContext for use in Seam unit and integration tests
+				</para>
+			</listitem>
+		</itemizedlist>
+		<para>
+			To overcome these two limitations the Spring integration includes a Seam component that will start a Spring ApplicationContext. To use this Seam component place the <literal>&lt;spring:context-loader/&gt;</literal> definition in the <literal>components.xml</literal>. Specify your Spring context file location in the <literal>config-locations</literal> attribute. If more than one config file is needed you can place them in the nested <literal>&lt;spring:config-locations/&gt;</literal> element following standard <literal>components.xml</literal> multi value practices.
+		</para>
+<programlisting>&lt;components xmlns="http://jboss.com/products/seam/components" 
+            xmlns:spring="http://jboss.com/products/seam/spring"
+            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+            xsi:schemaLocation="http://jboss.com/products/seam/components http://jboss.com/products/seam/components-1.2.xsd
+                                http://jboss.com/products/seam/spring http://jboss.com/products/seam/spring-1.2.xsd"&gt;
+
+	&lt;spring:context-loader context-locations="/WEB-INF/applicationContext.xml"/&gt;
+
+&lt;/components&gt;
+</programlisting>
+	</section>
+
+</chapter>
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Testing.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Testing.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Testing.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,250 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Seam_Reference_Guide-Testing_Seam_applications">
+	<title>Testing Seam applications</title>
+	<para>
+		Most Seam applications will need at least two kinds of automated tests: <emphasis>unit tests</emphasis>, which test a particular Seam component in isolation, and scripted <emphasis>integration tests</emphasis> which exercise all Java layers of the application (that is, everything except the view pages).
+	</para>
+	<para>
+		Both kinds of tests are very easy to write.
+	</para>
+	<section id="Seam_Reference_Guide-Testing_Seam_applications-Unit_testing_Seam_components">
+		<title>Unit testing Seam components</title>
+		<para>
+			All Seam components are POJOs. This is a great place to start if you want easy unit testing. And since Seam emphasises the use of bijection for inter-component interactions and access to contextual objects, it is very easy to test a Seam component outside of its normal runtime environment.
+		</para>
+		<para>
+			Consider the following Seam component:
+		</para>
+<programlisting>@Stateless
+ at Scope(EVENT)
+ at Name("register")
+public class RegisterAction implements Register
+{
+   private User user;
+   private EntityManager em;
+
+   @In
+   public void setUser(User user) {
+       this.user = user;
+   }
+   
+   @PersistenceContext
+   public void setBookingDatabase(EntityManager em) {
+       this.em = em;
+   }
+   
+   public String register()
+   {
+      List existing = em.createQuery("select username from User where username=:username")
+         .setParameter("username", user.getUsername())
+         .getResultList();
+      if (existing.size()==0)
+      {
+         em.persist(user);
+         return "success";
+      }
+      else
+      {
+         return null;
+      }
+   }
+
+}
+</programlisting>
+		<para>
+			We could write a TestNG test for this component as follows:
+		</para>
+<programlisting>public class RegisterActionTest
+{
+
+    @Test
+    public testRegisterAction()
+    {
+        EntityManager em = getEntityManagerFactory().createEntityManager();
+        em.getTransaction().begin();
+        
+        User gavin = new User();
+        gavin.setName("Gavin King");
+        gavin.setUserName("1ovthafew");
+        gavin.setPassword("secret");
+        
+        RegisterAction action = new RegisterAction();
+        action.setUser(gavin);
+        action.setBookingDatabase(em);
+        
+        assert "success".equals( action.register() );
+        
+        em.getTransaction().commit();
+        em.close();
+    }
+    
+    
+    private EntityManagerFactory emf;
+    
+    public EntityManagerFactory getEntityManagerFactory()
+    {
+        return emf;
+    }
+    
+    @Configuration(beforeTestClass=true)
+    public void init() 
+    {
+        emf = Persistence.createEntityManagerFactory("myResourceLocalEntityManager");
+    }
+    
+    @Configuration(afterTestClass=true)
+    public void destroy()
+    {
+        emf.close();
+    }
+    
+}
+</programlisting>
+		<para>
+			Seam components do not usually depend directly upon container infrastructure, allowing for simplistic unit testing.
+		</para>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Testing_Seam_applications-Integration_testing_Seam_applications">
+		<title>Integration testing Seam applications</title>
+		<para>
+			Integration testing is slightly more difficult. In this case, we cannot eliminate the container infrastructure; indeed, that is part of what is being tested! At the same time, we do not want to be forced to deploy our application to an application server to run the automated tests. We need to be able to reproduce just enough of the container infrastructure inside our testing environment to be able to exercise the whole application, without hurting performance too much.
+		</para>
+		<para>
+			A second problem is emulating user interactions. A third problem is where to put our assertions. Some test frameworks let us test the whole application by reproducing user interactions with the web browser. These frameworks have their place, but they are not appropriate for use at development time.
+		</para>
+		<para>
+			The approach taken by Seam is to let you write tests that script your components while running inside a pruned down container environment (Seam, together with the JBoss Embeddable EJB container). The role of the test script is basically to reproduce the interaction between the view and the Seam components. In other words, you get to pretend you are the JSF implementation!
+		</para>
+		<para>
+			This approach tests everything except the view.
+		</para>
+		<para>
+			Let us consider a JSP view for the component we unit tested above:
+		</para>
+<programlisting>&lt;html&gt;
+ &lt;head&gt;
+  &lt;title&gt;Register New User&lt;/title&gt;
+ &lt;/head&gt;
+ &lt;body&gt;
+  &lt;f:view&gt;
+   &lt;h:form&gt;
+     &lt;table border="0"&gt;
+       &lt;tr&gt;
+         &lt;td&gt;Username&lt;/td&gt;
+         &lt;td&gt;&lt;h:inputText value="#{user.username}"/&gt;&lt;/td&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+         &lt;td&gt;Real Name&lt;/td&gt;
+         &lt;td&gt;&lt;h:inputText value="#{user.name}"/&gt;&lt;/td&gt;
+       &lt;/tr&gt;
+       &lt;tr&gt;
+         &lt;td&gt;Password&lt;/td&gt;
+         &lt;td&gt;&lt;h:inputSecret value="#{user.password}"/&gt;&lt;/td&gt;
+       &lt;/tr&gt;
+     &lt;/table&gt;
+     &lt;h:messages/&gt;
+     &lt;h:commandButton type="submit" value="Register" action="#{register.register}"/&gt;
+   &lt;/h:form&gt;
+  &lt;/f:view&gt;
+ &lt;/body&gt;
+&lt;/html&gt;
+</programlisting>
+		<para>
+			We want to test the registration functionality of our application (the stuff that happens when the user clicks the Register button). We will reproduce the JSF request lifecycle in an automated TestNG test:
+		</para>
+<programlisting>public class RegisterTest extends SeamTest
+{
+   
+   @Test
+   public void testRegister() throws Exception
+   {
+            
+      new FacesRequest() {
+
+         @Override
+         protected void processValidations() throws Exception
+         {
+            validateValue("#{user.username}", "1ovthafew");
+            validateValue("#{user.name}", "Gavin King");
+            validateValue("#{user.password}", "secret");
+            assert !isValidationFailure();
+         }
+         
+         @Override
+         protected void updateModelValues() throws Exception
+         {
+            setValue("#{user.username}", "1ovthafew");
+            setValue("#{user.name}", "Gavin King");
+            setValue("#{user.password}", "secret");
+         }
+
+         @Override
+         protected void invokeApplication()
+         {
+            assert invokeMethod("#{register.register}").equals("success");
+         }
+
+         @Override
+         protected void renderResponse()
+         {
+            assert getValue("#{user.username}").equals("1ovthafew");
+            assert getValue("#{user.name}").equals("Gavin King");
+            assert getValue("#{user.password}").equals("secret");
+         }
+         
+      }.run();
+      
+   }
+
+   ...
+   
+}
+</programlisting>
+		<para>
+			Notice that we have extended <literal>SeamTest</literal>, which provides a Seam environment for our components, and written our test script as an anonymous class that extends <literal>SeamTest.FacesRequest</literal>, which provides an emulated JSF request lifecycle. (There is also a <literal>SeamTest.NonFacesRequest</literal> for testing GET requests.) We have written our code in methods which are named for the various JSF phases, to emulate the calls that JSF would make to our components. Then we have thrown in various assertions.
+		</para>
+		<para>
+			You will find plenty of integration tests for the Seam example applications which demonstrate more complex cases. There are instructions for running these tests using Ant, or using the TestNG plugin for eclipse:
+		</para>
+		<mediaobject>
+			<imageobject role="fo">
+				<imagedata align="center" fileref="images/plugin-testng.png" />
+			</imageobject>
+		<!--	<imageobject role="html">
+				<imagedata align="center" fileref="../shared/images/plugin-testng.png" />
+			</imageobject> -->
+		</mediaobject>
+		<section id="Seam_Reference_Guide-Integration_testing_Seam_applications-Using_mocks_in_integration_tests">
+			<title>Using mocks in integration tests</title>
+			<para>
+				Occasionally, we need to be able to replace the implementation of some Seam component that depends upon resources which are not available in the integration test environment. For example, suppose we have some Seam component which is a facade to some payment processing system:
+			</para>
+<programlisting>@Name("paymentProcessor")
+public class PaymentProcessor {
+    public boolean processPayment(Payment payment) { .... }
+}
+</programlisting>
+			<para>
+				For integration tests, we can mock out this component as follows:
+			</para>
+<programlisting>@Name("paymentProcessor")
+ at Install(precedence=MOCK)
+public class MockPaymentProcessor extends PaymentProcessor {
+    public void processPayment(Payment payment) {
+        return true;
+    }
+}
+</programlisting>
+			<para>
+				Since the <literal>MOCK</literal> precedence is higher than the default precedence of application components, Seam will install the mock implementation whenever it is in the classpath. When deployed into production, the mock implementation is absent, so the real component will be installed.
+			</para>
+		</section>
+
+	</section>
+
+</chapter>
+


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Testing.xml
___________________________________________________________________
Name: svn:executable
   + *

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Text.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Text.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Text.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,189 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Seam_Reference_Guide-Seam_Text">
+	<title>Seam Text</title>
+	<para>
+		Collaboration-oriented websites require a human-friendly markup language for easy entry of formatted text in forum posts, wiki pages, blogs, comments, etc. Seam provides the <literal>&lt;s:formattedText/&gt;</literal> control for display of formatted text that conforms to the <emphasis>Seam Text</emphasis> language. Seam Text is implemented using an ANTLR-based parser. You do not need to know anything about ANTLR to use it, however.
+	</para>
+	<section id="Seam_Reference_Guide-Seam_Text-Basic_fomatting">
+		<title>Basic fomatting</title>
+		<para>
+			Here is a simple example:
+		</para>
+<programlisting>It&#39;s easy to make *bold text*, /italic text/, |monospace|, 
+~deleted text~, super^scripts^ or _underlines_.
+</programlisting>
+		<para>
+			If we display this using <literal>&lt;s:formattedText/&gt;</literal>, we will get the following HTML produced:
+		</para>
+<programlisting>&lt;p&gt;
+It&#39;s easy to make &lt;b&gt;bold text&lt;/b&gt;, &lt;i&gt;italic text&lt;/i&gt;, &lt;tt&gt;monospace&lt;/tt&gt;
+&lt;del&gt;deleted text&lt;/del&gt;, super&lt;sup&gt;scripts&lt;/sup&gt; or &lt;u&gt;underlines&lt;/u&gt;.
+&lt;/p&gt;
+</programlisting>
+		<para>
+			We can use a blank line to indicate a new paragraph, and <literal>+</literal> to indicate a heading:
+		</para>
+<programlisting>+This is a big heading
+You /must/ have some text following a heading!
+ 
+++This is a smaller heading
+This is the first paragraph. We can split it across multiple 
+lines, but we must end it with a blank line.
+
+This is the second paragraph.
+</programlisting>
+		<para>
+			A simple newline is ignored, you need an additional blank line to wrap text into a new paragraph. This is the HTML that results:
+		</para>
+<programlisting>&lt;h1&gt;This is a big heading&lt;/h1&gt;
+&lt;p&gt;
+You &lt;i&gt;must&lt;/i&gt; have some text following a heading!
+&lt;/p&gt;
+ 
+&lt;h2&gt;This is a smaller heading&lt;/h2&gt;
+&lt;p&gt;
+This is the first paragraph. We can split it across multiple 
+lines, but we must end it with a blank line.
+&lt;/p&gt;
+
+&lt;p&gt;
+This is the second paragraph.
+&lt;/p&gt;
+</programlisting>
+		<para>
+			Ordered lists are created using the <literal>#</literal> character. Unordered lists use the <literal>=</literal> character:
+		</para>
+<programlisting>An ordered list:
+        
+#first item
+#second item
+#and even the /third/ item
+
+An unordered list:
+
+=an item
+=another item
+</programlisting>
+<programlisting>&lt;p&gt;
+An ordered list:
+&lt;/p&gt;
+ 
+&lt;ol&gt;       
+&lt;li&gt;first item&lt;/li&gt;
+&lt;li&gt;second item&lt;/li&gt;
+&lt;li&gt;and even the &lt;i&gt;third&lt;/i&gt; item&lt;/li&gt;
+&lt;/ol&gt;
+
+&lt;p&gt;
+An unordered list:
+&lt;/p&gt;
+
+&lt;ul&gt;
+&lt;li&gt;an item&lt;/li&gt;
+&lt;li&gt;another item&lt;/li&gt;
+&lt;/ul&gt;
+</programlisting>
+		<para>
+			Quoted sections should be surrounded in double quotes:
+		</para>
+<programlisting>The other guy said:
+        
+"Nyeah nyeah-nee 
+/nyeah/ nyeah!"
+
+But what do you think he means by "nyeah-nee"?
+</programlisting>
+<programlisting>&lt;p&gt;
+The other guy said:
+&lt;/p&gt;
+        
+&lt;q&gt;Nyeah nyeah-nee
+&lt;i&gt;nyeah&lt;/i&gt; nyeah!&lt;/q&gt;
+
+&lt;p&gt;
+But what do you think he means by &lt;q&gt;nyeah-nee&lt;/q&gt;?
+&lt;/p&gt;
+</programlisting>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_Text-Entering_code_and_text_with_special_characters">
+		<title>Entering code and text with special characters</title>
+		<para>
+			Special characters such as <literal>*</literal>, <literal>|</literal> and <literal>#</literal>, along with HTML characters such as <literal>&lt;</literal>, <literal>&gt;</literal> and <literal>&amp;</literal> may be escaped using <literal>\</literal>:
+		</para>
+<programlisting>You can write down equations like 2\*3\=6 and HTML tags
+like \&lt;body\&gt; using the escape character: \\.
+</programlisting>
+<programlisting>&lt;p&gt;
+You can write down equations like 2*3=6 and HTML tags
+like &lt;body&gt; using the escape character: \.
+&lt;/p&gt;
+</programlisting>
+		<para>
+			And we can quote code blocks using backticks:
+		</para>
+<programlisting>My code doesn&#39;t work:
+
+`for (int i=0; i&lt;100; i--)
+{
+    doSomething();
+}`
+
+Any ideas?
+</programlisting>
+<programlisting>&lt;p&gt;
+My code doesn&#39;t work:
+&lt;/p&gt;
+
+&lt;pre&gt;for (int i=0; i&lt;100; i--)
+{
+    doSomething();
+}&lt;/pre&gt;
+
+&lt;p&gt;
+Any ideas?
+&lt;/p&gt;
+</programlisting>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_Text-Links">
+		<title>Links</title>
+		<para>
+			A link may be created using the following syntax:
+		</para>
+<programlisting>Go to the Seam website at [=&gt;http://jboss.com/products/seam].</programlisting>
+		<para>
+			Or, if you want to specify the text of the link:
+		</para>
+<programlisting>Go to [the Seam website=&gt;http://jboss.com/products/seam].</programlisting>
+		<para>
+			For advanced users, it is even possible to customize the Seam Text parser to understand wikiword links written using this syntax.
+		</para>
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_Text-Entering_HTML">
+		<title>Entering HTML</title>
+		<para>
+			Text may even include a certain limited subset of HTML (the subset is chosen to be safe from cross-site scripting attacks). This is useful for creating links:
+		</para>
+<programlisting>You might want to link to &lt;a href="http://jboss.com/products/seam"&gt;something
+cool&lt;/a&gt;, or even include an image: &lt;img src="/logo.jpg"/&gt;
+</programlisting>
+		<para>
+			And for creating tables:
+		</para>
+<programlisting>&lt;table&gt;
+    &lt;tr&gt;&lt;td&gt;First name:&lt;/td&gt;&lt;td&gt;Gavin&lt;/td&gt;&lt;/tr&gt;
+    &lt;tr&gt;&lt;td&gt;Last name:&lt;/td&gt;&lt;td&gt;King&lt;/td&gt;&lt;/tr&gt;
+&lt;/table&gt;
+</programlisting>
+		<para>
+			There is much more that can be achieved if you wish.
+		</para>
+	</section>
+
+</chapter>
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Tools.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Tools.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Tools.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,590 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Seam_Reference_Guide-Seam_tools">
+	<title>Seam tools</title>
+	<section id="Seam_Reference_Guide-Seam_tools-jBPM_designer_and_viewer">
+		<title>jBPM designer and viewer</title>
+		<para>
+			The jBPM designer and viewer will let you design and view in a nice way your business processes and your pageflows. This convenient tool is part of the JBoss Developer Studio and more details can be found in the jBPM&#39;s documentation (http://docs.jboss.com/jbpm/v3/gpd/)
+		</para>
+		<section id="Seam_Reference_Guide-jBPM_designer_and_viewer-Business_process_designer">
+			<title>Business process designer</title>
+			<para>
+				This tool lets you design your own business process in a graphical way.
+			</para>
+			<screenshot><screeninfo>Business process designer</screeninfo> 
+				<mediaobject>
+				<imageobject role="fo"> 
+					<imagedata align="center" fileref="images/bpmd.png" />
+				</imageobject>
+			<!--	<imageobject role="html">
+					<imagedata align="center" fileref="../shared/images/bpmd.png" />
+				</imageobject> -->
+			</mediaobject>
+			</screenshot> 
+		</section>
+		
+		<section id="Seam_Reference_Guide-jBPM_designer_and_viewer-Pageflow_viewer">
+			<title>Pageflow viewer</title>
+			<para>
+				This tool will let you design to some extend your pageflows and let you build graphical views of them so you can easily share and compare ideas on how it should be designed.
+			</para>
+			<screenshot><screeninfo>Business process designer</screeninfo><mediaobject>
+				<imageobject role="fo">
+					<imagedata align="center" fileref="images/bpmpfv.png" />
+				</imageobject>
+			<!--	<imageobject role="html">
+					<imagedata align="center" fileref="../shared/images/bpmpfv.png" />
+				</imageobject> -->
+			</mediaobject>
+			</screenshot>
+		</section>
+
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_tools-CRUD_application_generator">
+		<title>CRUD-application generator</title>
+		<para>
+			This chapter, will give you a short overview of the support for Seam that is available in the Hibernate Tools. Hibernate Tools is a set of tools for working with Hibernate and related technologies, such as JBoss Seam and EJB3. The tools are available as a set of eclipse plugins and Ant tasks. You can download the Hibernate Tools from the JBoss Tools or Hibernate Tools websites.
+		</para>
+		<para>
+			The specific support for Seam that is currently available is generation of a fully functional Seam based CRUD-application. The CRUD-application can be generated based on your existing Hibernate mapping files or EJB3 annotated POJO&#39;s or even fully reverse engineered from your existing database schema.
+		</para>
+		<para>
+			The following sections is focused on the features required to understand for usage with Seam. The content is derived from the the Hibernate Tools reference documentation. Thus if you need more detailed information please refer to the Hibernate Tools documentation.
+		</para>
+		<section id="Seam_Reference_Guide-CRUD_application_generator-Creating_a_Hibernate_configuration_file">
+			<title>Creating a Hibernate configuration file</title>
+			<para>
+				To be able to reverse engineer and generate code a hibernate.properties or <filename>hibernate.cfg.xml</filename> file is needed. The Hibernate Tools provide a wizard for generating the <filename>hibernate.cfg.xml</filename> file if you do not already have such file.
+			</para>
+			<para>
+				Start the wizard by clicking <literal>New Wizard</literal> (Ctrl+N), select the Hibernate/Hibernate Configuration file (cfg.xml) wizard and press <literal>Next</literal>. After selecting the wanted location for the <filename>hibernate.cfg.xml</filename> file, you will see the following page:
+			</para>
+			<mediaobject>
+				<imageobject role="fo">
+					<imagedata contentwidth="5cm" fileref="images/hibernatecfgwizard.png"  />
+				</imageobject>
+			<!--	<imageobject role="html">
+					<imagedata align="center" fileref="../shared/images/hibernatecfgwizard.png"  />
+				</imageobject> -->
+			</mediaobject>
+			<para>
+				Tip: The contents in the combo boxes for the JDBC driver class and JDBC URL change automatically, depending on the Dialect and actual driver you have chosen.
+			</para>
+			<para>
+				Enter your configuration information in this dialog. Details about the configuration options can be found in Hibernate reference documentation.
+			</para>
+			<para>
+				Press <literal>Finish</literal> to create the configuration file, after optionally creating a Console onfiguration, the <filename>hibernate.cfg.xml</filename> will be automatically opened in an editor. The last option <literal>Create Console Configuration</literal> is enabled by default and when enabled i will automatically use the <filename>hibernate.cfg.xml</filename> for the basis of a <literal>Console Configuration</literal>.
+			</para>
+		</section>
+		
+		<section id="Seam_Reference_Guide-CRUD_application_generator-Creating_a_Hibernate_Console_configuration">
+			<title>Creating a Hibernate Console configuration</title>
+			<para>
+				A Console Configuration describes to the Hibernate plugin which configuration files should be used to configure hibernate, including which classpath is needed to load the POJO&#39;s, JDBC drivers etc. It is required to make usage of query prototyping, reverse engineering and code generation. You can have multiple named console configurations. Normally you would just need one per project, but more (or less) is definitly possible.
+			</para>
+			<para>
+				You create a console configuration by running the Console Configuration wizard, shown in the following screenshot. The same wizard will also be used if you are coming from the <filename>hibernate.cfg.xml</filename> wizard and had enabled <literal>Create Console Configuration</literal>.
+			</para>
+			<mediaobject id="Seam_Reference_Guide-Creating_a_Hibernate_Console_configuration-Creating_a_Hibernate_Console_configuration">
+
+				<imageobject role="fo">
+					<imagedata fileref="images/consolecfgwizard.png"  />
+				</imageobject>
+			<!--	<imageobject role="html">
+					<imagedata align="center" fileref="../shared/images/consolecfgwizard.png"  />
+				</imageobject> -->
+				<caption>Creating a Hibernate Console configuration</caption>
+			</mediaobject>
+			<para>
+				The following table describes the relevant settings. The wizard can automatically detect default values for most of these if you started the Wizard with the relevant java project selected
+			</para>
+			<table id="Seam_Reference_Guide-Creating_a_Hibernate_Console_configuration-Hibernate_Console_Configuration_Parameters">
+				<title>Hibernate Console Configuration Parameters</title>
+				<tgroup cols="3">
+					<colspec colnum="1" colwidth="1*"></colspec>
+					<colspec colnum="2" colwidth="3*"></colspec>
+					<colspec colnum="3" colwidth="1*"></colspec>
+					<thead>
+						<row>
+							<entry align="center">
+								<para>
+									Parameter
+								</para>
+							</entry>
+							<entry align="center">
+								<para>
+									Description
+								</para>
+							</entry>
+							<entry align="center">
+								<para>
+									Auto detected value
+								</para>
+							</entry>
+						</row>
+					</thead>
+					<tbody>
+						<row>
+							<entry>
+								<para>
+									Name
+								</para>
+							</entry>
+							<entry>
+								<para>
+									The unique name of the configuration
+								</para>
+							</entry>
+							<entry>
+								<para>
+									Name of the selected project
+								</para>
+							</entry>
+						</row>
+						<row>
+							<entry>
+								<para>
+									Property file
+								</para>
+							</entry>
+							<entry>
+								<para>
+									Path to a hibernate.properties file
+								</para>
+							</entry>
+							<entry>
+								<para>
+									First hibernate.properties file found in the selected project
+								</para>
+							</entry>
+						</row>
+						<row>
+							<entry>
+								<para>
+									Configuration file
+								</para>
+							</entry>
+							<entry>
+								<para>
+									Path to a hibernate.cfg.xml file
+								</para>
+							</entry>
+							<entry>
+								<para>
+									First hibernate.cfg.xml file found in the selected project
+								</para>
+							</entry>
+						</row>
+						<row>
+							<entry>
+								<para>
+									Enable Hibernate ejb3/annotations
+								</para>
+							</entry>
+							<entry>
+								<para>
+									Selecting this option enables usage of annotated classes. <filename>hbm.xml</filename> files are of course still possible to use too. This feature requires running the Eclipse IDE with a JDK 5 runtime, otherwise you will get classloading and/or version errors.
+								</para>
+							</entry>
+							<entry>
+								<para>
+									Not enabled
+								</para>
+							</entry>
+						</row>
+						<row>
+							<entry>
+								<para>
+									Mapping files
+								</para>
+							</entry>
+							<entry>
+								<para>
+									List of additional mapping files that should be loaded. Since a <filename>hibernate.cfg.xml</filename> can also contain mappings, if these a duplicated here, you will get <errorname>Duplicate mapping</errorname> errors when using the console configuration.
+								</para>
+							</entry>
+							<entry>
+								<para>
+									If no <filename>hibernate.cfg.xml</filename> file is found, all hbm.xml files found in the selected project
+								</para>
+							</entry>
+						</row>
+						<row>
+							<entry>
+								<para>
+									Classpath
+								</para>
+							</entry>
+							<entry>
+								<para>
+									The classpath for loading POJO and JDBC drivers. Do not add Hibernate core libraries or dependencies, they are already included. If you get ClassNotFound errors then check this list for possible missing or redundant directories/jars.
+								</para>
+							</entry>
+							<entry>
+								<para>
+									The default build output directory and any JARs with a class implementing java.sql.Driver in the selected project
+								</para>
+							</entry>
+						</row>
+					</tbody>
+				</tgroup>
+			</table>
+			<para>
+				Clicking <literal>Finish</literal> creates the configuration and shows it in the <literal>Hibernate Configurations</literal> view
+			</para>
+			<mediaobject id="Seam_Reference_Guide-Creating_a_Hibernate_Console_configuration-Console_overview">
+
+				<imageobject role="fo">
+					<imagedata align="center" fileref="images/consoleoutline-before-reveng.png"  />
+				</imageobject>
+			<!--	<imageobject role="html">
+					<imagedata align="center" fileref="../shared/images/consoleoutline-before-reveng.png"  />
+				</imageobject> -->
+				<caption>Console overview</caption>
+			</mediaobject>
+		</section>
+		
+		<section id="Seam_Reference_Guide-CRUD_application_generator-Reverse_engineering_and_code_generation">
+			<title>Reverse engineering and code generation</title>
+			<para>
+				A very simple <emphasis>click-and-generate</emphasis> reverse engineering and code generation facility is available. It is this facility that allows you to generate the skeleton for a full Seam CRUD application.
+			</para>
+			<para>
+				To start working with this process, start the <literal>Hibernate Code Generation</literal> which is available in the toolbar via the Hibernate icon or via the <literal>Run/Hibernate Code Generation</literal> menu item.
+			</para>
+			<section id="Seam_Reference_Guide-Reverse_engineering_and_code_generation-Code_Generation_Launcher">
+				<title>Code Generation Launcher</title>
+				<para>
+					When you click on <literal>Hibernate Code Generation</literal> the standard Eclipse launcher dialog will appear. In this dialog you can create, edit and delete named Hibernate code generation <emphasis>launchers</emphasis>.
+				</para>
+				<mediaobject>
+					<imageobject role="fo">
+						<imagedata fileref="images/codegendropdown.png"  />
+					</imageobject>
+				<!--	<imageobject role="html">
+						<imagedata align="center" fileref="../shared/images/codegendropdown.png"  />
+					</imageobject> -->
+				</mediaobject>
+				<para>
+					The dialog has the standard tabs <literal>Refresh</literal> and <literal>Common</literal> that can be used to configure which directories should be automatically refreshed and various general settings launchers, such as saving them in a project for sharing the launcher within a team.
+				</para>
+				<mediaobject>
+					<imageobject role="fo">
+						<imagedata fileref="images/codegenmaintab.png"  />
+					</imageobject>
+				<!--	<imageobject role="html">
+						<imagedata align="center" fileref="../shared/images/codegenmaintab.png"  />
+					</imageobject> -->
+				</mediaobject>
+				<para>
+					The first time you create a code generation launcher you should give it a meaningfull name, otherwise the default prefix <literal>New_Generation</literal> will be used.
+				</para>
+				<note>
+				<para>
+					he <literal>At least one exporter option must be selected</literal> is just a warning stating that for this launch to work you need to select an exporter on the Exporter tab. When an exporter has been selected the warning will disappear.
+				</para>
+				</note>
+				<para>
+					On the <literal>Main</literal> tab you the following fields:
+				</para>
+				<table id="Seam_Reference_Guide-Code_Generation_Launcher-Code_generation_Main_tab_fields">
+					<title>Code generation "Main" tab fields</title>
+					<tgroup cols="2">
+						<colspec colnum="1" colwidth="1*"></colspec>
+						<colspec colnum="2" colwidth="3*"></colspec>
+						<colspec colnum="3" colwidth="0.5*"></colspec>
+						<thead>
+							<row>
+								<entry align="center">
+									<para>
+										Field
+									</para>
+								</entry>
+								<entry align="center">
+									<para>
+										Description
+									</para>
+								</entry>
+							</row>
+						</thead>
+						<tbody>
+							<row>
+								<entry>
+									<para>
+										Console Configuration
+									</para>
+								</entry>
+								<entry>
+									<para>
+										The name of the console configuration which should be used when code generating.
+									</para>
+								</entry>
+							</row>
+							<row>
+								<entry>
+									<para>
+										Output directory
+									</para>
+								</entry>
+								<entry>
+									<para>
+										Path to a directory into where all output will be written by default. Be aware that existing files will be overwritten, so be sure to specify the correct directory.
+									</para>
+								</entry>
+							</row>
+							<row>
+								<entry>
+									<para>
+										Reverse engineer from JDBC Connection
+									</para>
+								</entry>
+								<entry>
+									<para>
+										If enabled the tools will reverse engineer the database available via the connection information in the selected Hibernate Console Configuration and generate code based on the database schema. If not enabled the code generation will just be based on the mappings already specified in the Hibernate Console configuration.
+									</para>
+								</entry>
+							</row>
+							<row>
+								<entry>
+									<para>
+										Package
+									</para>
+								</entry>
+								<entry>
+									<para>
+										The package name here is used as the default package name for any entities found when reverse engineering.
+									</para>
+								</entry>
+							</row>
+							<row>
+								<entry>
+									<para>
+										reveng.xml
+									</para>
+								</entry>
+								<entry>
+									<para>
+										Path to a reveng.xml file. A reveng.xml file allows you to control certain aspects of the reverse engineering. For example, how jdbc types are mapped to hibernate types and especially important which tables are included/excluded from the process. Clicking "setup" allows you to select an existing reveng.xml file or create a new one..
+									</para>
+								</entry>
+							</row>
+							<row>
+								<entry>
+									<para>
+										reveng. strategy
+									</para>
+								</entry>
+								<entry>
+									<para>
+										If <filename>reveng.xml</filename> does not provide enough customization you can provide your own implementation of an ReverseEngineeringStrategy. The class need to be in the claspath of the Console Configuration, otherwise you will get class not found exceptions.
+									</para>
+								</entry>
+							</row>
+							<row>
+								<entry>
+									<para>
+										Generate basic typed composite ids
+									</para>
+								</entry>
+								<entry>
+									<para>
+										This field should always be enabled when generating the Seam CRUD application. For a table that has a multi-colum primary key, a &lt;composite-id&gt; mapping will always be created. If this option is enabled and there are matching foreign-keys, each key column is still considered a basic scalar (string, long, etc.) instead of a reference to an entity. If you disable this option, a &lt;key-many-to-one&gt; mapping with be generated instead. Note: a &lt;many-to-one&gt; property is still created, but is simply marked as non-updatable and non-insertable.
+									</para>
+								</entry>
+							</row>
+							<row>
+								<entry>
+									<para>
+										Use custom templates
+									</para>
+								</entry>
+								<entry>
+									<para>
+										If enabled, the Template directory will be searched first when looking up the velocity templates, allowing you to redefine how the individual templates process the hibernate mapping model.
+									</para>
+								</entry>
+							</row>
+							<row>
+								<entry>
+									<para>
+										Template directory
+									</para>
+								</entry>
+								<entry>
+									<para>
+										A path to a directory with custom velocity templates.
+									</para>
+								</entry>
+							</row>
+						</tbody>
+					</tgroup>
+				</table>
+			</section>
+			
+			<section id="Seam_Reference_Guide-Reverse_engineering_and_code_generation-Exporters">
+				<title>Exporters</title>
+				<para>
+					The exporters tab is used to specify which type of code that should be generated. Each selection represents an <literal>Exporter</literal> that is responsible for generating the code, hence the name.
+				</para>
+				<mediaobject>
+					<imageobject role="fo">
+						<imagedata fileref="images/codegenselectseam.png"  />
+					</imageobject>
+				<!--	<imageobject role="html">
+						<imagedata align="center" fileref="../shared/images/codegenselectseam.png"  />
+					</imageobject> -->
+				</mediaobject>
+				<para>
+					The following table describes in short the various exporters. The most relevant for Seam is the <literal>JBoss Seam Skeleton</literal> application.
+				</para>
+				<table id="Seam_Reference_Guide-Exporters-Code_generation_Exporter_tab_fields">
+					<title>Code generation <literal>Exporter</literal> tab fields</title>
+					<tgroup cols="2">
+						<colspec colnum="1" colwidth="1*"></colspec>
+						<colspec colnum="2" colwidth="3*"></colspec>
+						<colspec colnum="3" colwidth="0.5*"></colspec>
+						<thead>
+							<row>
+								<entry align="center">
+									<para>
+										Field
+									</para>
+								</entry>
+								<entry align="center">
+									<para>
+										Description
+									</para>
+								</entry>
+							</row>
+						</thead>
+						<tbody>
+							<row>
+								<entry>
+									<para>
+										Generate domain code
+									</para>
+								</entry>
+								<entry>
+									<para>
+										Generates POJO&#39;s for all the persistent classes and components found in the given Hibernate configuration.
+									</para>
+								</entry>
+							</row>
+							<row>
+								<entry>
+									<para>
+										JDK 1.5 constructs
+									</para>
+								</entry>
+								<entry>
+									<para>
+										When enabled the POJO&#39;s will use JDK 1.5 constructs.
+									</para>
+								</entry>
+							</row>
+							<row>
+								<entry>
+									<para>
+										EJB3/JSR-220 annotations
+									</para>
+								</entry>
+								<entry>
+									<para>
+										When enabled the POJO&#39;s will be annotated according to the EJB3/JSR-220 persistency specification.
+									</para>
+								</entry>
+							</row>
+							<row>
+								<entry>
+									<para>
+										Generate DAO code
+									</para>
+								</entry>
+								<entry>
+									<para>
+										Generates a set of DAO&#39;s for each entity found.
+									</para>
+								</entry>
+							</row>
+							<row>
+								<entry>
+									<para>
+										Generate Mappings
+									</para>
+								</entry>
+								<entry>
+									<para>
+										Generate mapping (hbm.xml) files for each entity
+									</para>
+								</entry>
+							</row>
+							<row>
+								<entry>
+									<para>
+										Generate hibernate configuration file
+									</para>
+								</entry>
+								<entry>
+									<para>
+										Generate a <filename>hibernate.cfg.xml</filename> file. Used to keep the hibernate.cfg.xml uptodate with any new found mapping files.
+									</para>
+								</entry>
+							</row>
+							<row>
+								<entry>
+									<para>
+										Generate schema html-documentation
+									</para>
+								</entry>
+								<entry>
+									<para>
+										Generates set of html pages that documents the database schema and some of the mappings.
+									</para>
+								</entry>
+							</row>
+							<row>
+								<entry>
+									<para>
+										Generate JBoss Seam skeleton app (beta)
+									</para>
+								</entry>
+								<entry>
+									<para>
+										Generates a complete JBoss Seam skeleton app. The generation will include annotated POJO&#39;s, Seam controller beans and a JSP for the presentation layer. See the generated readme.txt for how to use it.
+									</para>
+									<note>
+									<para>
+										This exporter generates a full application, including a <filename>build.xml</filename> thus you will get the best results if you use an output directory which is the root of your project.
+									</para>
+								</note>
+								</entry>
+							</row>
+						</tbody>
+					</tgroup>
+				</table>
+			</section>
+			
+			<section id="Seam_Reference_Guide-Reverse_engineering_and_code_generation-Generating_and_using_the_code">
+				<title>Generating and using the code</title>
+				<para>
+					When you have finished filling out the settings, simply press <literal>Run</literal> to start the generation of code. This might take a little while if you are reverse engineering from a database.
+				</para>
+				<para>
+					When the generation have finished you should now have a complete skeleton Seam application in the output directory. In the output directory there is a <filename>readme.txt</filename> file describing the steps needed to deploy and run the example.
+				</para>
+				<para>
+					If you want to regenerate/update the skeleton code then simply run the code generation again by selecting the <literal>Hibernate Code Generation</literal> in the toolbar or <literal>Run</literal> menu. Enjoy.
+				</para>
+			</section>
+
+		</section>
+
+	</section>
+
+</chapter>
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Tutorial.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Tutorial.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Tutorial.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2540 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Seam_Reference_Guide-Seam_Tutorial">
+	<title>Seam Tutorial</title>
+	<section id="Seam_Reference_Guide-Seam_Tutorial-Try_the_examples">
+		<title>Try the examples</title>
+		<para>
+			In this tutorial, we will assume that you are using the JBoss Enterprise Application Platform with Seam.
+		</para>
+		<para>
+			The directory structure of each example in Seam follows this pattern:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					Web pages, images and stylesheets may be found in <filename>examples/<replaceable>registration</replaceable>/view</filename>
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					Resources such as deployment descriptors and data import scripts may be found in <filename>examples/<replaceable>registration</replaceable>/resources</filename>
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					Java source code may be found in <filename>examples/<replaceable>registration</replaceable>/src</filename>
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					The Ant build script is <filename>examples/<replaceable>registration</replaceable>/build.xml</filename>
+				</para>
+			</listitem>
+		</itemizedlist>
+		<section id="Seam_Reference_Guide-Try_the_examples-Running_the_examples_on_JBoss_AS">
+			<title>Running the examples on JBoss Enterprise Application Platform</title>
+			<para>
+				First, make sure you have Ant correctly installed, with <literal>&#36;ANT_HOME</literal> and <literal>&#36;JAVA_HOME</literal> set correctly. Next, make sure you set the location of your JBoss AS installation in the <literal>build.properties</literal> file in the root folder of your Seam installation. If you haven't already done so, start JBoss AS now by typing <literal>bin/run.sh</literal> or <literal>bin/run.bat</literal> in the root directory of your JBoss installation. 
+			</para>
+			<para>
+				By default the examples will deploy to the default configuration of the server. These examples should be deployed to the production configuration if they are to be used with JBoss Enterprise Application Platform, and the example <literal>build.xml</literal> file should be modified to reflect this before building and deploying. Two lines should be changed in this file:
+			</para>
+			<screen> &lt;property name="deploy.dir"           value="${jboss.home}/server/production/deploy"/&gt;</screen>
+			<screen>   &lt;property name="webroot.dir"         
+	value="${deploy.dir}/jboss-web.deployer/ROOT.war"/&gt;</screen>
+			<para>
+				Now, build and deploy the example by typing <literal>ant deploy</literal> in the <filename>examples/<replaceable>registration</replaceable></filename> directory.
+			</para>
+			<para>
+				Try it out by accessing <ulink url="http://localhost:8080/seam-registration/"><literal>http://localhost:8080/seam-registration/</literal></ulink> with your web browser.
+			</para>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Try_the_examples-Running_the_examples_on_Tomcat">
+			<title>Running the examples on Tomcat</title>
+			<para>
+				First, make sure you have Ant correctly installed, with <literal>&#36;ANT_HOME</literal> and <literal>&#36;JAVA_HOME</literal> set correctly. Next, make sure you set the location of your Tomcat installation in the <literal>build.properties</literal> file in the root folder of your Seam installation.
+			</para>
+			<para>
+				Now, build and deploy the example by typing <literal>ant deploy.tomcat</literal> in the <filename>examples/<replaceable>registration</replaceable></filename> directory.
+			</para>
+			<para>
+				Finally, start Tomcat.
+			</para>
+			<para>
+				Try it out by accessing <ulink url="http://localhost:8080/jboss-seam-registration/"><literal>http://localhost:8080/jboss-seam-registration/</literal></ulink> with your web browser.
+			</para>
+			<para>
+				When you deploy the example to Tomcat, any EJB3 components will run inside the JBoss Embeddable EJB3 container, a complete standalone EJB3 container environment.
+			</para>
+		</section>
+		
+		<section id="Seam_Reference_Guide-Try_the_examples-Running_the_example_tests">
+			<title>Running the example tests</title>
+			<para>
+				Most of the examples come with a suite of TestNG integration tests. The easiest way to run the tests is to run <literal>ant testexample</literal> inside the <filename>examples/<replaceable>registration</replaceable></filename> directory. It is also possible to run the tests inside your IDE using the TestNG plugin.
+			</para>
+		</section>
+
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_Tutorial-Your_first_Seam_application_the_registration_example">
+		<title>Your first Seam application: the registration example</title>
+		<para>
+			The registration example is a fairly trivial application that lets a new user store his username, real name and password in the database. The example is not intended to show off all of the cool functionality of Seam. However, it demonstrates the use of an EJB3 session bean as a JSF action listener, and basic configuration of Seam.
+		</para>
+		<para>
+			We will go slowly, since we realize you might not yet be familiar with EJB 3.0.
+		</para>
+		<para>
+			The start page displays a very basic form with three input fields. Try filling them in and then submitting the form. This will save a user object in the database.
+		</para>
+		<mediaobject>
+			<imageobject role="fo">
+				<imagedata align="center" fileref="images/registration.png" />
+			</imageobject>
+		<!--	<imageobject role="html">
+				<imagedata align="center" fileref="../shared/images/registration.png" />
+			</imageobject> -->
+		</mediaobject>
+		<section id="Seam_Reference_Guide-Your_first_Seam_application_the_registration_example-Understanding_the_code">
+			<title>Understanding the code</title>
+			<para>
+				The example is implemented with two JSP pages, one entity bean and one stateless session bean.
+			</para>
+			<mediaobject>
+				<imageobject role="fo">
+					<imagedata align="center" fileref="images/register.png" />
+				</imageobject>
+			<!--	<imageobject role="html">
+					<imagedata align="center" fileref="../shared/images/register.png" />
+				</imageobject> -->
+			</mediaobject>
+			<para>
+				Let us take a look at the code, starting from the bottom.
+			</para>
+			<section id="Seam_Reference_Guide-Understanding_the_code-The_entity_bean_User.java">
+				<title>The entity bean: <literal>User.java</literal></title>
+				<para>
+					We need an EJB entity bean for user data. This class defines <emphasis>persistence</emphasis> and <emphasis>validation</emphasis> declaratively, via annotations. It also needs some extra annotations that define the class as a Seam component.
+				</para>
+			<!--	<example><title></title> -->
+			<!--		<programlistingco>
+					<areaspec>
+						<area coords="1" id="registration-entity-annotation" />
+						<area coords="2" id="registration-name-annotation" />
+						<area coords="3" id="registration-scope-annotation" />
+						<area coords="4" id="registration-table-annotation" />
+						<area coords="9" id="registration-attributes" />
+						<area coords="20" id="registration-empty-constructor" />
+						<area coords="22" id="registration-notnull" />
+						<area coords="44" id="registration-id-annotation" />
+					</areaspec> -->
+<programlisting>@Entity
+ at Name("user")
+ at Scope(SESSION)
+ at Table(name="users")
+public class User implements Serializable
+{
+   private static final long serialVersionUID = 1881413500711441951L;
+   
+   private String username;
+   private String password;
+   private String name;
+   
+   public User(String name, String password, String username)
+   {
+      this.name = name;
+      this.password = password;
+      this.username = username;
+   }
+   
+   public User() {}
+   
+   @NotNull @Length(min=5, max=15)
+   public String getPassword()
+   {
+      return password;
+   }
+
+   public void setPassword(String password)
+   {
+      this.password = password;
+   }
+   
+   @NotNull
+   public String getName()
+   {
+      return name;
+   }
+
+   public void setName(String name)
+   {
+      this.name = name;
+   }
+   
+   @Id @NotNull @Length(min=5, max=15)
+   public String getUsername()
+   {
+      return username;
+   }
+
+   public void setUsername(String username)
+   {
+      this.username = username;
+   }
+
+}
+</programlisting>
+					<orderedlist>
+						<listitem>
+							<para>
+								The EJB3 standard <literal>@Entity</literal> annotation indicates that the <literal>User</literal> class is an entity bean.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								A Seam component needs a <emphasis>component name</emphasis> specified by the <literal>@Name</literal> annotation. This name must be unique within the Seam application. When JSF asks Seam to resolve a context variable with a name that is the same as a Seam component name, and the context variable is currently undefined (null), Seam will instantiate that component, and bind the new instance to the context variable. In this case, Seam will instantiate a <literal>User</literal> the first time JSF encounters a variable named <literal>user</literal>.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								Whenever Seam instantiates a component, it binds the new instance to a context variable in the component&#39;s <emphasis>default context</emphasis>. The default context is specified using the <literal>@Scope</literal> annotation. The <literal>User</literal> bean is a session scoped component.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								The EJB standard <literal>@Table</literal> annotation indicates that the <literal>User</literal> class is mapped to the <literal>users</literal> table.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								<literal>name</literal>, <literal>password</literal> and <literal>username</literal> are the persistent attributes of the entity bean. All of our persistent attributes define accessor methods. These are needed when this component is used by JSF in the render response and update model values phases.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								An empty constructor is both required by both the EJB specification and by Seam.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								The <literal>@NotNull</literal> and <literal>@Length</literal> annotations are part of the Hibernate Validator framework. Seam integrates Hibernate Validator and lets you use it for data validation (even if you are not using Hibernate for persistence).
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								The EJB standard <literal>@Id</literal> annotation indicates the primary key attribute of the entity bean.
+							</para>
+						</listitem>
+					</orderedlist>
+			<!--	</programlistingco> -->
+				
+				<para>
+					The most important things to notice in this example are the <literal>@Name</literal> and <literal>@Scope</literal> annotations. These annotations establish that this class is a Seam component.
+				</para>
+				<para>
+					We will see below that the properties of our <literal>User</literal> class are bound to directly to JSF components and are populated by JSF during the update model values phase. We do not need any tedious glue code to copy data back and forth between the JSP pages and the entity bean domain model.
+				</para>
+				<para>
+					However, entity beans should not do transaction management or database access. So we cannot use this component as a JSF action listener. For that we need a session bean.
+				</para>
+			<!--	</example> -->
+			</section>
+			
+			<section id="Seam_Reference_Guide-Understanding_the_code-The_stateless_session_bean_class_RegisterAction.java">
+				<title>The stateless session bean class: <literal>RegisterAction.java</literal></title>
+				<para>
+					Most Seam application use session beans as JSF action listeners (you can use JavaBeans instead if you like).
+				</para>
+				<para>
+					We have exactly one JSF action in our application, and one session bean method attached to it. In this case, we will use a stateless session bean, since all the state associated with our action is held by the <literal>User</literal> bean.
+				</para>
+				<para>
+					This is the only really interesting code in the example.
+				</para>
+			<!--	<example><title></title> -->
+				<!--	<programlistingco>
+					<areaspec>
+						<area coords="1" id="registration-stateless-annotation" />
+						<area coords="6" id="registration-in-annotation" />
+						<area coords="9" id="registration-persistencecontext-annotation" />
+						<area coords="12" id="registration-logger-annotation" />
+						<area coords="15" id="registration-action-listener" />
+						<area coords="18" id="registration-query" />
+						<area coords="24" id="registration-log" />
+						<area coords="25" id="registration-outcome" />
+						<area coords="29" id="registration-builtin" />
+					</areaspec> -->
+<programlisting>@Stateless
+ at Name("register")
+public class RegisterAction implements Register
+{
+
+   @In
+   private User user;
+   
+   @PersistenceContext
+   private EntityManager em;
+   
+   @Logger
+   private Log log;
+   
+   public String register()
+   {
+      List existing = em.createQuery(
+         "select username from User where username=#{user.username}")
+         .getResultList();
+         
+      if (existing.size()==0)
+      {
+         em.persist(user);
+         log.info("Registered new user #{user.username}");
+         return "/registered.jsp";
+      }
+      else
+      {
+         FacesMessages.instance().add("User #{user.username} already exists");
+         return null;
+      }
+   }
+
+}
+</programlisting>
+					<orderedlist>
+						<listitem>
+							<para>
+								The EJB standard <literal>@Stateless</literal> annotation marks this class as stateless session bean.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								The <literal>@In</literal> annotation marks an attribute of the bean as injected by Seam. In this case, the attribute is injected from a context variable named <literal>user</literal> (the instance variable name).
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								The EJB standard <literal>@PersistenceContext</literal> annotation is used to inject the EJB3 entity manager.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								The Seam <literal>@Logger</literal> annotation is used to inject the component&#39;s <literal>Log</literal> instance.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								The action listener method uses the standard EJB3 <literal>EntityManager</literal> API to interact with the database, and returns the JSF outcome. Note that, since this is a sesson bean, a transaction is automatically begun when the <literal>register()</literal> method is called, and committed when it completes.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								Notice that Seam lets you use a JSF EL expression inside EJB-QL. Under the covers, this results in an ordinary JPA <literal>setParameter()</literal> call on the standard JPA <literal>Query</literal> object. Nice, huh?
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								The <literal>Log</literal> API lets us easily display templated log messages.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								JSF action listener methods return a string-valued outcome that determines what page will be displayed next. A null outcome (or a void action listener method) redisplays the previous page. In plain JSF, it is normal to always use a JSF <emphasis>navigation rule</emphasis> to determine the JSF view id from the outcome. For complex application this indirection is useful and a good practice. However, for very simple examples like this one, Seam lets you use the JSF view id as the outcome, eliminating the requirement for a navigation rule. <emphasis>Note that when you use a view id as an outcome, Seam always performs a browser redirect.</emphasis>
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								Seam provides a number of <emphasis>built-in components</emphasis> to help solve common problems. The <literal>FacesMessages</literal> component makes it easy to display templated error or success messages. Built-in Seam components may be obtained by injection, or by calling an <literal>instance()</literal> method.
+							</para>
+						</listitem>
+					</orderedlist>
+			<!--	</programlistingco> -->
+				
+				<para>
+					Note that we did not explicitly specify a <literal>@Scope</literal> this time. Each Seam component type has a default scope if not explicitly specified. For stateless session beans, the default scope is the stateless context. Actually, <emphasis>all</emphasis> stateless session beans belong in the stateless context.
+				</para>
+				<para>
+					Our session bean action listener performs the business and persistence logic for our mini-application. In more complex applications, we might need to layer the code and refactor persistence logic into a dedicated data access component. That is perfectly trivial to do. But notice that Seam does not force you into any particular strategy for application layering.
+				</para>
+				<para>
+					Furthermore, notice that our session bean has simultaneous access to context associated with the web request (the form values in the <literal>User</literal> object, for example), and state held in transactional resources (the <literal>EntityManager</literal> object). This is a break from traditional J2EE architectures. Again, if you are more comfortable with the traditional J2EE layering, you can certainly implement that in a Seam application. But for many applications, it is not very useful.
+				</para>
+			<!--	</example> -->
+			</section>
+			
+			<section id="Seam_Reference_Guide-Understanding_the_code-The_session_bean_local_interface_Register.java">
+				<title>The session bean local interface: <literal>Register.java</literal></title>
+				<para>
+					Naturally, our session bean needs a local interface.
+				</para>
+				<example><title></title><programlisting>@Local
+public interface Register
+{
+   public String register();
+}
+</programlisting>
+				</example><para>
+					That is the end of the Java code. Now onto the deployment descriptors.
+				</para>
+			</section>
+			
+			<section id="Seam_Reference_Guide-Understanding_the_code-The_Seam_component_deployment_descriptor_components.xml">
+				<title>The Seam component deployment descriptor: <literal>components.xml</literal></title>
+				<para>
+					If you have used many Java frameworks before, you will be used to having to declare all your component classes in some kind of XML file that gradually grows more and more unmanageable as your project matures. You will be relieved to know that Seam does not require that application components be accompanied by XML. Most Seam applications require a very small amount of XML that does not grow very much as the project gets bigger.
+				</para>
+				<para>
+					Nevertheless, it is often useful to be able to provide for <emphasis>some</emphasis> external configuration of <emphasis>some</emphasis> components (particularly the components built in to Seam). You have a couple of options here, but the most flexible option is to provide this configuration in a file called <literal>components.xml</literal>, located in the <literal>WEB-INF</literal> directory. We will use the <literal>components.xml</literal> file to tell Seam how to find our EJB components in JNDI:
+				</para>
+				<example><title></title><programlisting>&lt;components xmlns="http://jboss.com/products/seam/components"
+            xmlns:core="http://jboss.com/products/seam/core"&gt;
+     &lt;core:init jndi-pattern="@jndiPattern@"/&gt;
+&lt;/components&gt;
+</programlisting>
+				</example><para>
+					This code configures a property named <literal>jndiPattern</literal> of a built-in Seam component named <literal>org.jboss.seam.core.init</literal>.
+				</para>
+			</section>
+			
+			<section id="Seam_Reference_Guide-Understanding_the_code-The_web_deployment_description_web.xml">
+				<title>The web deployment description: <literal>web.xml</literal></title>
+				<para>
+					The presentation layer for our mini-application will be deployed in a WAR. So we will need a web deployment descriptor.
+				</para>
+				<example><title></title><programlisting>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;web-app version="2.5"
+    xmlns="http://java.sun.com/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
+        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"&gt;
+
+    &lt;!- - Seam - -&gt;
+
+    &lt;listener&gt;
+        &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/listener-class&gt;
+    &lt;/listener&gt;
+    
+     &lt;listener&gt;
+         &lt;listener-class&gt;com.sun.faces.config.ConfigureListener&lt;/listener-class&gt;
+    &lt;/listener&gt;
+
+    &lt;context-param&gt;
+        &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-name&gt;
+        &lt;param-value&gt;client&lt;/param-value&gt;
+    &lt;/context-param&gt;
+
+    &lt;context-param&gt;
+        &lt;param-name&gt;javax.faces.DEFAULT_SUFFIX&lt;/param-name&gt;
+        &lt;param-value&gt;.jspx&lt;/param-value&gt;
+    &lt;/context-param&gt;
+
+        &lt;servlet&gt;
+                &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;
+                &lt;servlet-class&gt;javax.faces.webapp.FacesServlet&lt;/servlet-class&gt;
+                &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;
+        &lt;/servlet&gt;
+
+        <!-- Faces Servlet Mapping -->
+        &lt;servlet-mapping&gt;
+                &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;
+                &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;
+        &lt;/servlet-mapping&gt;
+
+&lt;/web-app&gt;
+</programlisting>
+				</example><para>
+					This <literal>web.xml</literal> file configures Seam and Glassfish. The configuration you see here is pretty much identical in all Seam applications. 
+				</para>
+			</section>
+			
+			<section id="Seam_Reference_Guide-Understanding_the_code-The_JSF_configration_faces_config.xml">
+				<title>The JSF configration: <literal>faces-config.xml</literal></title>
+				<para>
+					All Seam applications use JSF views as the presentation layer. So we will need <literal>faces-config.xml</literal>.
+				</para>
+				<example><title></title><programlisting>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;!DOCTYPE faces-config 
+PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN"
+                            "http://java.sun.com/dtd/web-facesconfig_1_0.dtd"&gt;
+&lt;faces-config&gt;
+
+    &lt;!- - A phase listener is needed by all Seam applications - -&gt;
+    
+    &lt;lifecycle&gt;
+        &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-listener&gt;
+    &lt;/lifecycle&gt;
+
+&lt;/faces-config&gt;
+</programlisting>
+				</example><para>
+					The <literal>faces-config.xml</literal> file integrates Seam into JSF. Note that we do not need any JSF managed bean declarations; the managed beans are the Seam components. In Seam applications, the <literal>faces-config.xml</literal> is used much less often than in plain JSF.
+				</para>
+				<para>
+					In fact, once you have all the basic descriptors set up, the <emphasis>only</emphasis> XML you need to write as you add new functionality to a Seam application is the navigation rules, and possibly jBPM process definitions. Seam takes the view that <emphasis>process flow</emphasis> and <emphasis>configuration data</emphasis> are the only things that truly belong in XML.
+				</para>
+				<para>
+					In this simple example, we do not even need a navigation rule, since we decided to embed the view id in our action code.
+				</para>
+			</section>
+			<section id="Seam_Reference_Guide-Understanding_the_code-The_EJB_deployment_descriptor_ejb_jar.xml">
+				<title>The EJB deployment descriptor: <literal>ejb-jar.xml</literal></title>
+				<para>
+					The <literal>ejb-jar.xml</literal> file integrates Seam with EJB3, by attaching the <literal>SeamInterceptor</literal> to all session beans in the archive.
+				</para>
+<programlisting>&lt;ejb-jar xmlns="http://java.sun.com/xml/ns/javaee" 
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
+                           http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"
+         version="3.0"&gt;
+         
+   &lt;interceptors&gt;
+     &lt;interceptor&gt;
+       &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/interceptor-class&gt;
+     &lt;/interceptor&gt;
+   &lt;/interceptors&gt;
+   
+   &lt;assembly-descriptor&gt;
+      &lt;interceptor-binding&gt;
+         &lt;ejb-name&gt;*&lt;/ejb-name&gt;
+         &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/interceptor-class&gt;
+      &lt;/interceptor-binding&gt;
+   &lt;/assembly-descriptor&gt;
+   
+&lt;/ejb-jar&gt;
+</programlisting>
+			</section>
+			
+			<section id="Seam_Reference_Guide-Understanding_the_code-The_EJB_persistence_deployment_descriptor_persistence.xml">
+				<title>The EJB persistence deployment descriptor: <literal>persistence.xml</literal></title>
+				<para>
+					The <literal>persistence.xml</literal> file tells the EJB persistence provider where to find the datasource, and contains some vendor-specific settings. In this case, enables automatic schema export at startup time.
+				</para>
+<programlisting>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;persistence xmlns="http://java.sun.com/xml/ns/persistence" 
+             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
+                           http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" 
+             version="1.0"&gt;
+    &lt;persistence-unit name="userDatabase"&gt;
+      &lt;provider&gt;org.hibernate.ejb.HibernatePersistence&lt;/provider&gt;
+      &lt;jta-data-source&gt;java:/DefaultDS&lt;/jta-data-source&gt;
+      &lt;properties&gt;
+         &lt;property name="hibernate.hbm2ddl.auto" value="create-drop"/&gt;
+      &lt;/properties&gt;
+    &lt;/persistence-unit&gt;
+&lt;/persistence&gt;
+</programlisting>
+			</section>
+			
+			<section id="Seam_Reference_Guide-Understanding_the_code-The_view_register.jsp_and_registered.jsp">
+				<title>The view: <literal>register.jsp</literal> and <literal>registered.jsp</literal></title>
+				<para>
+					The view pages for a Seam application could be implemented using any technology that supports JSF. In this example we use JSP, since it is familiar to most developers and since we have minimal requirements here anyway. (But if you take our advice, you will use Facelets for your own applications.)
+				</para>
+				<example><title></title><programlisting>&lt;%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %&gt;
+&lt;%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %&gt;
+&lt;%@ taglib uri="http://jboss.com/products/seam/taglib" prefix="s" %&gt;
+&lt;html&gt;
+ &lt;head&gt;
+  &lt;title&gt;Register New User&lt;/title&gt;
+ &lt;/head&gt;
+ &lt;body&gt;
+  &lt;f:view&gt;
+   &lt;h:form&gt;
+     &lt;table border="0"&gt;
+       &lt;s:validateAll&gt;
+         &lt;tr&gt;
+           &lt;td&gt;Username&lt;/td&gt;
+           &lt;td&gt;&lt;h:inputText value="#{user.username}"/&gt;&lt;/td&gt;
+         &lt;/tr&gt;
+         &lt;tr&gt;
+           &lt;td&gt;Real Name&lt;/td&gt;
+           &lt;td&gt;&lt;h:inputText value="#{user.name}"/&gt;&lt;/td&gt;
+         &lt;/tr&gt;
+         &lt;tr&gt;
+           &lt;td&gt;Password&lt;/td&gt;
+           &lt;td&gt;&lt;h:inputSecret value="#{user.password}"/&gt;&lt;/td&gt;
+         &lt;/tr&gt;
+       &lt;/s:validateAll&gt;
+     &lt;/table&gt;
+     &lt;h:messages/&gt;
+     &lt;h:commandButton type="submit" value="Register" action="#{register.register}"/&gt;
+   &lt;/h:form&gt;
+  &lt;/f:view&gt;
+ &lt;/body&gt;
+&lt;/html&gt;
+</programlisting>
+				</example><para>
+					The only thing here that is specific to Seam is the <literal>&lt;s:validateAll&gt;</literal> tag. This JSF component tells JSF to validate all the contained input fields against the Hibernate Validator annotations specified on the entity bean.
+				</para>
+				<example><title></title><programlisting>&lt;%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %&gt;
+&lt;%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %&gt;
+&lt;html&gt;
+ &lt;head&gt;
+  &lt;title&gt;Successfully Registered New User&lt;/title&gt;
+ &lt;/head&gt;
+ &lt;body&gt;
+  &lt;f:view&gt;
+    Welcome, &lt;h:outputText value="#{user.name}"/&gt;, 
+    you are successfully registered as &lt;h:outputText value="#{user.username}"/&gt;.
+  &lt;/f:view&gt;
+ &lt;/body&gt;
+&lt;/html&gt;
+</programlisting>
+				</example><para>
+					This is a boring old JSP pages using standard JSF components. There is nothing specific to Seam here.
+				</para>
+			</section>
+			
+			<section id="Seam_Reference_Guide-Understanding_the_code-The_EAR_deployment_descriptor_application.xml">
+				<title>The EAR deployment descriptor: <literal>application.xml</literal></title>
+				<para>
+					Finally, since our application is deployed as an EAR, we need a deployment descriptor there, too.
+				</para>
+				<example><title></title><programlisting>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;application xmlns="http://java.sun.com/xml/ns/javaee" 
+             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+             xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
+                                   http://java.sun.com/xml/ns/javaee/application_5.xsd"
+             version="5"&gt;
+             
+    &lt;display-name&gt;Seam Registration&lt;/display-name&gt;
+
+    &lt;module&gt;
+        &lt;web&gt;
+            &lt;web-uri&gt;jboss-seam-registration.war&lt;/web-uri&gt;
+            &lt;context-root&gt;/seam-registration&lt;/context-root&gt;
+        &lt;/web&gt;
+    &lt;/module&gt;
+    &lt;module&gt;
+        &lt;ejb&gt;jboss-seam-registration.jar&lt;/ejb&gt;
+    &lt;/module&gt;
+    &lt;module&gt;
+        &lt;java&gt;jboss-seam.jar&lt;/java&gt;
+    &lt;/module&gt;
+    &lt;module&gt;
+        &lt;java&gt;el-ri.jar&lt;/java&gt;
+    &lt;/module&gt;
+    
+&lt;/application&gt;
+</programlisting>
+				</example><para>
+					This deployment descriptor links modules in the enterprise archive and binds the web application to the context root <literal>/seam-registration</literal>.
+				</para>
+			<!--<para>
+				We&#39;ve now seen <emphasis>all</emphasis> the files in the entire application!
+			</para>-->
+			</section>
+			
+
+		</section>
+		
+		<section id="Seam_Reference_Guide-Your_first_Seam_application_the_registration_example-How_it_works">
+			<title>How it works</title>
+			<para>
+				When the form is submitted, JSF asks Seam to resolve the variable named <literal>user</literal>. Since there is no value already bound to that name (in any Seam context), Seam instantiates the <literal>user</literal> component, and returns the resulting <literal>User</literal> entity bean instance to JSF after storing it in the Seam session context.
+			</para>
+			<para>
+				The form input values are now validated against the Hibernate Validator constraints specified on the <literal>User</literal> entity. If the constraints are violated, JSF redisplays the page. Otherwise, JSF binds the form input values to properties of the <literal>User</literal> entity bean.
+			</para>
+			<para>
+				Next, JSF asks Seam to resolve the variable named <literal>register</literal>. Seam finds the <literal>RegisterAction</literal> stateless session bean in the stateless context and returns it. JSF invokes the <literal>register()</literal> action listener method.
+			</para>
+			<para>
+				Seam intercepts the method call and injects the <literal>User</literal> entity from the Seam session context, before continuing the invocation.
+			</para>
+			<para>
+				The <literal>register()</literal> method checks if a user with the entered username already exists. If so, an error message is queued with the <literal>FacesMessages</literal> component, and a null outcome is returned, causing a page redisplay. The <literal>FacesMessages</literal> component interpolates the JSF expression embedded in the message string and adds a JSF <literal>FacesMessage</literal> to the view.
+			</para>
+			<para>
+				If no user with that username exists, the <literal>"/registered.jsp"</literal> outcome triggers a browser redirect to the <literal>registered.jsp</literal> page. When JSF comes to render the page, it asks Seam to resolve the variable named <literal>user</literal> and uses property values of the returned <literal>User</literal> entity from Seam&#39;s session scope.
+			</para>
+		</section>
+
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_Tutorial-Clickable_lists_in_Seam_the_messages_example">
+		<title>Clickable lists in Seam: the messages example</title>
+		<para>
+			Clickable lists of database search results are such an important part of any online application that Seam provides special functionality on top of JSF to make it easier to query data using EJB-QL or HQL and display it as a clickable list using a JSF <literal>&lt;h:dataTable&gt;</literal>. The messages example demonstrates this functionality.
+		</para>
+		<mediaobject>
+			<imageobject role="fo">
+				<imagedata align="center" fileref="images/messages.png" />
+			</imageobject>
+		<!--	<imageobject role="html">
+				<imagedata align="center" fileref="../shared/images/messages.png" />
+			</imageobject> -->
+		</mediaobject>
+		<section id="Seam_Reference_Guide-Clickable_lists_in_Seam_the_messages_example-Understanding_the_code">
+			<title>Understanding the code</title>
+			<para>
+				The message list example has one entity bean, <literal>Message</literal>, one session bean, <literal>MessageListBean</literal> and one JSP.
+			</para>
+			<section id="Seam_Reference_Guide-Understanding_the_code-The_entity_bean_Message.java">
+				<title>The entity bean: <literal>Message.java</literal></title>
+				<para>
+					The <literal>Message</literal> entity defines the title, text, date and time of a message, and a flag indicating whether the message has been read:
+				</para>
+			<!--	<example><title></title> -->
+<programlisting>@Entity
+ at Name("message")
+ at Scope(EVENT)
+public class Message implements Serializable
+{
+   private Long id;
+   private String title;
+   private String text;
+   private boolean read;
+   private Date datetime;
+   
+   @Id @GeneratedValue
+   public Long getId() {
+      return id;
+   }
+   public void setId(Long id) {
+      this.id = id;
+   }
+   
+   @NotNull @Length(max=100)
+   public String getTitle() {
+      return title;
+   }
+   public void setTitle(String title) {
+      this.title = title;
+   }
+   
+   @NotNull @Lob
+   public String getText() {
+      return text;
+   }
+   public void setText(String text) {
+      this.text = text;
+   }
+   
+   @NotNull
+   public boolean isRead() {
+      return read;
+   }
+   public void setRead(boolean read) {
+      this.read = read;
+   }
+   
+   @NotNull 
+   @Basic @Temporal(TemporalType.TIMESTAMP)
+   public Date getDatetime() {
+      return datetime;
+   }
+   public void setDatetime(Date datetime) {
+      this.datetime = datetime;
+   }
+   
+}
+</programlisting>
+		<!--		</example> -->
+			</section>
+			
+			<section id="Seam_Reference_Guide-Understanding_the_code-The_stateful_session_bean_MessageManagerBean.java">
+				<title>The stateful session bean: <literal>MessageManagerBean.java</literal></title>
+				<para>
+					Just like in the previous example, we have a session bean, <literal>MessageManagerBean</literal>, which defines the action listener methods for the two buttons on our form. One of the buttons selects a message from the list, and displays that message. The other button deletes a message. So far, this is not so different to the previous example.
+				</para>
+				<para>
+					But <literal>MessageManagerBean</literal> is also responsible for fetching the list of messages the first time we navigate to the message list page. There are various ways the user could navigate to the page, and not all of them are preceded by a JSF action&mdash;the user might have bookmarked the page, for example. So the job of fetching the message list takes place in a Seam <emphasis>factory method</emphasis>, instead of in an action listener method.
+				</para>
+				<para>
+					We want to cache the list of messages in memory between server requests, so we will make this a stateful session bean.
+				</para>
+			<!--	<example><title></title> -->
+				<!--	<programlistingco>
+					<areaspec>
+						<area coords="7" id="messages-datamodel" />
+						<area coords="10" id="messages-datamodelselection" />
+						<area coords="11" id="messages-out" />
+						<area coords="14" id="messages-persistencecontext" />
+						<area coords="17" id="messages-factory" />
+						<area coords="23" id="messages-select" />
+						<area coords="28" id="messages-delete" />
+						<area coords="35" id="messages-remove" />
+					</areaspec> -->
+<programlisting>@Stateful
+ at Scope(SESSION)
+ at Name("messageManager")
+public class MessageManagerBean implements Serializable, MessageManager
+{
+
+   @DataModel
+   private List&lt;Message&gt; messageList;
+   
+   @DataModelSelection
+   @Out(required=false)
+   private Message message;
+   
+   @PersistenceContext(type=EXTENDED)
+   private EntityManager em;
+   
+   @Factory("messageList")
+   public void findMessages()
+   {
+      messageList = em.createQuery("from Message msg order by msg.datetime desc").getResultList();
+   }
+   
+   public void select()
+   {
+      message.setRead(true);
+   }
+   
+   public void delete()
+   {
+      messageList.remove(message);
+      em.remove(message);
+      message=null;
+   }
+   
+   @Remove @Destroy
+   public void destroy() {}
+
+}
+</programlisting>
+					<orderedlist>
+						<listitem>
+							<para>
+								The <literal>@DataModel</literal> annotation exposes an attibute of type <literal>java.util.List</literal> to the JSF page as an instance of <literal>javax.faces.model.DataModel</literal>. This allows us to use the list in a JSF <literal>&lt;h:dataTable&gt;</literal> with clickable links for each row. In this case, the <literal>DataModel</literal> is made available in a session context variable named <literal>messageList</literal>.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								The <literal>@DataModelSelection</literal> annotation tells Seam to inject the <literal>List</literal> element that corresponded to the clicked link.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								The <literal>@Out</literal> annotation then exposes the selected value directly to the page. So every time a row of the clickable list is selected, the <literal>Message</literal> is injected to the attribute of the stateful bean, and the subsequently <emphasis>outjected</emphasis> to the event context variable named <literal>message</literal>.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								This stateful bean has an EJB3 <emphasis>extended persistence context</emphasis>. The messages retrieved in the query remain in the managed state as long as the bean exists, so any subsequent method calls to the stateful bean can update them without needing to make any explicit call to the <literal>EntityManager</literal>.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								The first time we navigate to the JSP page, there will be no value in the <literal>messageList</literal> context variable. The <literal>@Factory</literal> annotation tells Seam to create an instance of <literal>MessageManagerBean</literal> and invoke the <literal>findMessages()</literal> method to initialize the value. We call <literal>findMessages()</literal> a <emphasis>factory method</emphasis> for <literal>messages</literal>.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								The <literal>select()</literal> action listener method marks the selected <literal>Message</literal> as read, and updates it in the database.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								The <literal>delete()</literal> action listener method removes the selected <literal>Message</literal> from the database.
+							</para>
+						</listitem>
+						<listitem>
+							<para>
+								All stateful session bean Seam components <emphasis>must</emphasis> have a method marked <literal>@Remove @Destroy</literal> to ensure that Seam will remove the stateful bean when the Seam context ends, and clean up any server-side state.
+							</para>
+						</listitem>
+					</orderedlist>
+			<!--	</programlistingco> -->
+				
+			<!--	</example> -->
+				<para>
+					Note that this is a session-scoped Seam component. It is associated with the user login session, and all requests from a login session share the same instance of the component. (In Seam applications, we usually use session-scoped components sparingly.)
+				</para>
+			</section>
+			
+			<section id="Seam_Reference_Guide-Understanding_the_code-The_session_bean_local_interface_MessageManager.java">
+				<title>The session bean local interface: <literal>MessageManager.java</literal></title>
+				<para>
+					All session beans have a business interface, of course.
+				</para>
+<programlisting>@Local
+public interface MessageManager
+{
+   public void findMessages();
+   public void select();
+   public void delete();
+   public void destroy();
+}
+</programlisting>
+				<para>
+					From now on, we will not show local interfaces in our code examples.
+				</para>
+				<para>
+					Let us skip over <literal>components.xml</literal>, <literal>persistence.xml</literal>, <literal>web.xml</literal>, <literal>ejb-jar.xml</literal>, <literal>faces-config.xml</literal> and <literal>application.xml</literal> since they are much the same as the previous example, and go straight to the JSP.
+				</para>
+			</section>
+			
+			<section id="Seam_Reference_Guide-Understanding_the_code-The_view_messages.jsp">
+				<title>The view: <literal>messages.jsp</literal></title>
+				<para>
+					The JSP page is a straightforward use of the JSF <literal>&lt;h:dataTable&gt;</literal> component. Again, nothing specific to Seam.
+				</para>
+				<example><title></title><programlisting>&lt;%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %&gt;
+&lt;%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %&gt;
+&lt;html&gt;
+ &lt;head&gt;
+  &lt;title&gt;Messages&lt;/title&gt;
+ &lt;/head&gt;
+ &lt;body&gt;
+  &lt;f:view&gt;
+   &lt;h:form&gt;
+     &lt;h2&gt;Message List&lt;/h2&gt;
+     &lt;h:outputText value="No messages to display" rendered="#{messageList.rowCount==0}"/&gt;
+     &lt;h:dataTable var="msg" value="#{messageList}" rendered="#{messageList.rowCount&gt;0}"&gt;
+        &lt;h:column&gt;
+           &lt;f:facet name="header"&gt;
+              &lt;h:outputText value="Read"/&gt;
+           &lt;/f:facet&gt;
+           &lt;h:selectBooleanCheckbox value="#{msg.read}" disabled="true"/&gt;
+        &lt;/h:column&gt;
+        &lt;h:column&gt;
+           &lt;f:facet name="header"&gt;
+              &lt;h:outputText value="Title"/&gt;
+           &lt;/f:facet&gt;
+           &lt;h:commandLink value="#{msg.title}" action="#{messageManager.select}"/&gt;
+        &lt;/h:column&gt;
+        &lt;h:column&gt;
+           &lt;f:facet name="header"&gt;
+              &lt;h:outputText value="Date/Time"/&gt;
+           &lt;/f:facet&gt;
+           &lt;h:outputText value="#{msg.datetime}"&gt;
+              &lt;f:convertDateTime type="both" dateStyle="medium" timeStyle="short"/&gt;
+           &lt;/h:outputText&gt;
+        &lt;/h:column&gt;
+        &lt;h:column&gt;
+           &lt;h:commandButton value="Delete" action="#{messageManager.delete}"/&gt;
+        &lt;/h:column&gt;
+     &lt;/h:dataTable&gt;
+     &lt;h3&gt;&lt;h:outputText value="#{message.title}"/&gt;&lt;/h3&gt;
+     &lt;div&gt;&lt;h:outputText value="#{message.text}"/&gt;&lt;/div&gt;
+   &lt;/h:form&gt;
+  &lt;/f:view&gt;
+ &lt;/body&gt;
+&lt;/html&gt;
+</programlisting>
+				</example>
+			</section>
+
+		</section>
+		
+		<section id="Seam_Reference_Guide-Clickable_lists_in_Seam_the_messages_example-How_it_works">
+			<title>How it works</title>
+			<para>
+				The first time we navigate to the <literal>messages.jsp</literal> page, whether by a JSF postback (faces request) or a direct browser GET request (non-faces request), the page will try to resolve the <literal>messageList</literal> context variable. Since this context variable is not initialized, Seam will call the factory method <literal>findMessages()</literal>, which performs a query against the database and results in a <literal>DataModel</literal> being outjected. This <literal>DataModel</literal> provides the row data needed for rendering the <literal>&lt;h:dataTable&gt;</literal>.
+			</para>
+			<para>
+				When the user clicks the <literal>&lt;h:commandLink&gt;</literal>, JSF calls the <literal>select()</literal> action listener. Seam intercepts this call and injects the selected row data into the <literal>message</literal> attribute of the <literal>messageManager</literal> component. The action listener fires, marking the selected <literal>Message</literal> as read. At the end of the call, Seam outjects the selected <literal>Message</literal> to the context variable named <literal>message</literal>. Next, the EJB container commits the transaction, and the change to the <literal>Message</literal> is flushed to the database. Finally, the page is re-rendered, redisplaying the message list, and displaying the selected message below it.
+			</para>
+			<para>
+				If the user clicks the <literal>&lt;h:commandButton&gt;</literal>, JSF calls the <literal>delete()</literal> action listener. Seam intercepts this call and injects the selected row data into the <literal>message</literal> attribute of the <literal>messageList</literal> component. The action listener fires, removing the selected <literal>Message</literal> from the list, and also calling <literal>remove()</literal> on the <literal>EntityManager</literal>. At the end of the call, Seam refreshes the <literal>messageList</literal> context variable and clears the context variable named <literal>message</literal>. The EJB container commits the transaction, and deletes the <literal>Message</literal> from the database. Finally, the page is re-rendered, redisplaying the message list.
+			</para>
+		</section>
+
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_Tutorial-Seam_and_jBPM_the_todo_list_example">
+		<title>Seam and jBPM: the todo list example</title>
+		<para>
+			jBPM provides sophisticated functionality for workflow and task management. To get a small taste of how jBPM integrates with Seam, we will show you a simple <emphasis>todo list</emphasis> application. Since managing lists of tasks is such core functionality for jBPM, there is hardly any Java code at all in this example.
+		</para>
+		<mediaobject>
+			<imageobject role="fo">
+				<imagedata align="center" fileref="images/todo.png" />
+			</imageobject>
+		<!--	<imageobject role="html">
+				<imagedata align="center" fileref="../shared/images/todo.png" />
+			</imageobject> -->
+		</mediaobject>
+		<section id="Seam_Reference_Guide-Seam_and_jBPM_the_todo_list_example-Understanding_the_code">
+			<title>Understanding the code</title>
+			<para>
+				The center of this example is the jBPM process definition. There are also two JSPs and two trivial JavaBeans (There was no reason to use session beans, since they do not access the database, or have any other transactional behavior). Let us start with the process definition:
+			</para>
+		<!--	<example><title></title> -->
+			<!--	<programlistingco>
+				<areaspec>
+					<area coords="3" id="todo-startstate" />
+					<area coords="7" id="todo-tasknode" />
+					<area coords="8" id="todo-task" />
+					<area coords="9" id="todo-assignment" />
+					<area coords="14" id="todo-endstate" />
+				</areaspec> -->
+<programlisting>&lt;process-definition name="todo"&gt;
+   
+   &lt;start-state name="start"&gt;
+      &lt;transition to="todo"/&gt;
+   &lt;/start-state&gt;
+   
+   &lt;task-node name="todo"&gt;
+      &lt;task name="todo" description="#{todoList.description}"&gt;
+         &lt;assignment actor-id="#{actor.id}"/&gt;
+      &lt;/task&gt;
+      &lt;transition to="done"/&gt;
+   &lt;/task-node&gt;
+   
+   &lt;end-state name="done"/&gt;
+   
+&lt;/process-definition&gt;
+</programlisting>
+				<orderedlist>
+					<listitem>
+						<para>
+							The <literal>&lt;start-state&gt;</literal> node represents the logical start of the process. When the process starts, it immediately transitions to the <literal>todo</literal> node.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							The <literal>&lt;task-node&gt;</literal> node represents a <emphasis>wait state</emphasis>, where business process execution pauses, waiting for one or more tasks to be performed.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							The <literal>&lt;task&gt;</literal> element defines a task to be performed by a user. Since there is only one task defined on this node, when it is complete, execution resumes, and we transition to the end state. The task gets its description from a Seam component named <literal>todoList</literal> (one of the JavaBeans).
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							Tasks need to be assigned to a user or group of users when they are created. In this case, the task is assigned to the current user, which we get from a built-in Seam component named <literal>actor</literal>. Any Seam component may be used to perform task assignment.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							The <literal>&lt;end-state&gt;</literal> node defines the logical end of the business process. When execution reaches this node, the process instance is destroyed.
+						</para>
+					</listitem>
+				</orderedlist>
+		<!--	</programlistingco> -->
+			
+		<!--	</example>--><para>
+				If we view this process definition using the process definition editor provided by JBossIDE, this is what it looks like:
+			</para>
+			<mediaobject>
+				<imageobject role="fo">
+					<imagedata align="center" fileref="images/todo-process.png" />
+				</imageobject>
+			<!--	<imageobject role="html">
+					<imagedata align="center" fileref="../shared/images/todo-process.png" />
+				</imageobject> -->
+			</mediaobject>
+			<para>
+				This document defines our <emphasis>business process</emphasis> as a graph of nodes. This is the most trivial possible business process: there is one <emphasis>task</emphasis> to be performed, and when that task is complete, the business process ends.
+			</para>
+			<para>
+				The first JavaBean handles the login screen <literal>login.jsp</literal>. Its job is just to initialize the jBPM actor id using the <literal>actor</literal> component. (In a real application, it would also need to authenticate the user.)
+			</para>
+			<example><title></title><programlisting>@Name("login")
+public class Login {
+   
+   @In
+   private Actor actor;
+   
+   private String user;
+
+   public String getUser() {
+      return user;
+   }
+
+   public void setUser(String user) {
+      this.user = user;
+   }
+   
+   public String login()
+   {
+      actor.setId(user);
+      return "/todo.jsp";
+   }
+}
+</programlisting>
+			</example><para>
+				Here we see the use of <literal>@In</literal> to inject the built-in <literal>Actor</literal> component.
+			</para>
+			<para>
+				The JSP itself is trivial:
+			</para>
+			<example><title></title><programlisting>&lt;%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%&gt;
+&lt;%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;title&gt;Login&lt;/title&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;h1&gt;Login&lt;/h1&gt;
+&lt;f:view&gt;
+    &lt;h:form&gt;
+      &lt;div&gt;
+        &lt;h:inputText value="#{login.user}"/&gt;
+        &lt;h:commandButton value="Login" action="#{login.login}"/&gt;
+      &lt;/div&gt;
+    &lt;/h:form&gt;
+&lt;/f:view&gt;
+&lt;/body&gt;
+&lt;/html&gt;
+</programlisting>
+			</example><para>
+				The second JavaBean is responsible for starting business process instances, and ending tasks.
+			</para>
+			<example><title></title>
+			<!--	<programlistingco>
+				<areaspec>
+					<area coords="6" id="todo-description" />
+					<area coords="15" id="todo-createprocess-annotation" />
+					<area coords="18" id="todo-task-annotations" />
+				</areaspec> -->
+<programlisting>@Name("todoList")
+public class TodoList {
+   
+   private String description;
+   
+   public String getDescription()
+   {
+      return description;
+   }
+
+   public void setDescription(String description) {
+      this.description = description;
+   }
+   
+   @CreateProcess(definition="todo")
+   public void createTodo() {}
+   
+   @StartTask @EndTask
+   public void done() {}
+
+}
+</programlisting>
+				<orderedlist>
+					<listitem>
+						<para>
+							The description property accepts user input form the JSP page, and exposes it to the process definition, allowing the task description to be set.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							The Seam <literal>@CreateProcess</literal> annotation creates a new jBPM process instance for the named process definition.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							The Seam <literal>@StartTask</literal> annotation starts work on a task. The <literal>@EndTask</literal> ends the task, and allows the business process execution to resume.
+						</para>
+					</listitem>
+				</orderedlist>
+		<!--	</programlistingco> -->
+			
+			</example><para>
+				In a more realistic example, <literal>@StartTask</literal> and <literal>@EndTask</literal> would not appear on the same method, because there is usually work to be done using the application in order to complete the task.
+			</para>
+			<para>
+				Finally, the meat of the application is in <literal>todo.jsp</literal>:
+			</para>
+			<example><title></title><programlisting>&lt;%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %&gt;
+&lt;%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %&gt;
+&lt;%@ taglib uri="http://jboss.com/products/seam/taglib" prefix="s" %&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;title&gt;Todo List&lt;/title&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;h1&gt;Todo List&lt;/h1&gt;
+&lt;f:view&gt;
+   &lt;h:form id="list"&gt;
+      &lt;div&gt;
+         &lt;h:outputText value="There are no todo items." rendered="#{empty 
+                                       taskInstanceList}"/&gt;
+         &lt;h:dataTable value="#{taskInstanceList}" var="task" rendered="#{not empty 
+                                       taskInstanceList}"&gt;
+            &lt;h:column&gt;
+                &lt;f:facet name="header"&gt;
+                    &lt;h:outputText value="Description"/&gt;
+                &lt;/f:facet&gt;
+                &lt;h:inputText value="#{task.description}"/&gt;
+            &lt;/h:column&gt;
+            &lt;h:column&gt;
+                &lt;f:facet name="header"&gt;
+                    &lt;h:outputText value="Created"/&gt;
+                &lt;/f:facet&gt;
+                &lt;h:outputText value="#{task.taskMgmtInstance.processInstance.start}"&gt;
+                    &lt;f:convertDateTime type="date"/&gt;
+                &lt;/h:outputText&gt;
+            &lt;/h:column&gt;
+            &lt;h:column&gt;
+                &lt;f:facet name="header"&gt;
+                    &lt;h:outputText value="Priority"/&gt;
+                &lt;/f:facet&gt;
+                &lt;h:inputText value="#{task.priority}" style="width: 30"/&gt;
+            &lt;/h:column&gt;
+            &lt;h:column&gt;
+                &lt;f:facet name="header"&gt;
+                    &lt;h:outputText value="Due Date"/&gt;
+                &lt;/f:facet&gt;
+                &lt;h:inputText value="#{task.dueDate}" style="width: 100"&gt;
+                    &lt;f:convertDateTime type="date" dateStyle="short"/&gt;
+                &lt;/h:inputText&gt;
+            &lt;/h:column&gt;
+            &lt;h:column&gt;
+                &lt;s:button value="Done" action="#{todoList.done}" taskInstance="#{task}"/&gt;
+            &lt;/h:column&gt;
+         &lt;/h:dataTable&gt;
+      &lt;/div&gt;
+      &lt;div&gt;
+      &lt;h:messages/&gt;
+      &lt;/div&gt;
+      &lt;div&gt;
+         &lt;h:commandButton value="Update Items" action="update"/&gt;
+      &lt;/div&gt;
+   &lt;/h:form&gt;
+   &lt;h:form id="new"&gt;
+      &lt;div&gt;
+         &lt;h:inputText value="#{todoList.description}"/&gt;
+         &lt;h:commandButton value="Create New Item" action="#{todoList.createTodo}"/&gt;
+      &lt;/div&gt;
+   &lt;/h:form&gt;
+&lt;/f:view&gt;
+&lt;/body&gt;
+&lt;/html&gt;
+</programlisting>
+			</example><para>
+				Let us take this one piece at a time.
+			</para>
+			<para>
+				The page renders a list of tasks, which it gets from a built-in Seam component named <literal>taskInstanceList</literal>. The list is defined inside a JSF form.
+			</para>
+<programlisting>&lt;h:form id="list"&gt;
+   &lt;div&gt;
+      &lt;h:outputText value="There are no todo items." rendered="#{empty taskInstanceList}"/&gt;
+      &lt;h:dataTable value="#{taskInstanceList}" var="task" rendered="#{not empty taskInstanceList}"&gt;
+         ...
+      &lt;/h:dataTable&gt;
+   &lt;/div&gt;
+&lt;/h:form&gt;
+</programlisting>
+			<para>
+				Each element of the list is an instance of the jBPM class <literal>TaskInstance</literal>. The following code simply displays the interesting properties of each task in the list. For the description, priority and due date, we use input controls, to allow the user to update these values.
+			</para>
+<programlisting>&lt;h:column&gt;
+    &lt;f:facet name="header"&gt;
+       &lt;h:outputText value="Description"/&gt;
+    &lt;/f:facet&gt;
+    &lt;h:inputText value="#{task.description}"/&gt;
+&lt;/h:column&gt;
+&lt;h:column&gt;
+    &lt;f:facet name="header"&gt;
+        &lt;h:outputText value="Created"/&gt;
+    &lt;/f:facet&gt;
+    &lt;h:outputText value="#{task.taskMgmtInstance.processInstance.start}"&gt;
+        &lt;f:convertDateTime type="date"/&gt;
+    &lt;/h:outputText&gt;
+&lt;/h:column&gt;
+&lt;h:column&gt;
+    &lt;f:facet name="header"&gt;
+        &lt;h:outputText value="Priority"/&gt;
+    &lt;/f:facet&gt;
+    &lt;h:inputText value="#{task.priority}" style="width: 30"/&gt;
+&lt;/h:column&gt;
+&lt;h:column&gt;
+    &lt;f:facet name="header"&gt;
+        &lt;h:outputText value="Due Date"/&gt;
+    &lt;/f:facet&gt;
+    &lt;h:inputText value="#{task.dueDate}" style="width: 100"&gt;
+        &lt;f:convertDateTime type="date" dateStyle="short"/&gt;
+    &lt;/h:inputText&gt;
+&lt;/h:column&gt;
+</programlisting>
+			<para>
+				This button ends the task by calling the action method annotated <literal>@StartTask @EndTask</literal>. It passes the task id to Seam as a request parameter:
+			</para>
+<programlisting>&lt;h:column&gt;
+    &lt;s:button value="Done" action="#{todoList.done}" taskInstance="#{task}"/&gt;
+&lt;/h:column&gt;
+</programlisting>
+			<para>
+				(Note that this is using a Seam <literal>&lt;s:button&gt;</literal> JSF control from the <literal>seam-ui.jar</literal> package.)
+			</para>
+			<para>
+				This button is used to update the properties of the tasks. When the form is submitted, Seam and jBPM will make any changes to the tasks persistent. There is no need for any action listener method:
+			</para>
+<programlisting>&lt;h:commandButton value="Update Items" action="update"/&gt;</programlisting>
+			<para>
+				A second form on the page is used to create new items, by calling the action method annotated <literal>@CreateProcess</literal>.
+			</para>
+<programlisting>&lt;h:form id="new"&gt;
+    &lt;div&gt;
+        &lt;h:inputText value="#{todoList.description}"/&gt;
+        &lt;h:commandButton value="Create New Item" action="#{todoList.createTodo}"/&gt;
+    &lt;/div&gt;
+&lt;/h:form&gt;
+</programlisting>
+			<para>
+				There are several other files needed for the example, but they are just standard jBPM and Seam configuration and not very interesting.
+			</para>
+		</section>
+		
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_Tutorial-Seam_pageflow_the_numberguess_example">
+		<title>Seam pageflow: the numberguess example</title>
+		<para>
+			For Seam applications with relatively freeform (ad hoc) navigation, JSF/Seam navigation rules are a perfectly good way to define the page flow. For applications with a more constrained style of navigation, especially for user interfaces which are more stateful, navigation rules make it difficult to really understand the flow of the system. To understand the flow, you need to piece it together from the view pages, the actions and the navigation rules.
+		</para>
+		<para>
+			Seam allows you to use a jPDL process definition to define pageflow. The simple number guessing example shows how this is done.
+		</para>
+		<mediaobject>
+			<imageobject role="fo">
+				<imagedata align="center" fileref="images/numberguess.png" />
+			</imageobject>
+		<!--	<imageobject role="html">
+				<imagedata align="center" fileref="../shared/images/numberguess.png" />
+			</imageobject> -->
+		</mediaobject>
+		<section id="Seam_Reference_Guide-Seam_pageflow_the_numberguess_example-Understanding_the_code">
+			<title>Understanding the code</title>
+			<para>
+				The example is implemented using one JavaBean, three JSP pages and a jPDL pageflow definition. Let us begin with the pageflow:
+			</para>
+		<!--	<example><title></title> -->
+			<!--	<programlistingco>
+				<areaspec>
+					<area coords="7" id="numberguess-page" />
+					<area coords="8" id="numberguess-transition" />
+					<area coords="9" id="numberguess-action" />
+					<area coords="13" id="numberguess-decision" />
+				</areaspec> -->
+<programlisting>&lt;pageflow-definition name="numberGuess"&gt;
+   
+   &lt;start-page name="displayGuess" view-id="/numberGuess.jsp"&gt;
+      &lt;redirect/&gt;
+      &lt;transition name="guess" to="evaluateGuess"&gt;
+          &lt;action expression="#{numberGuess.guess}" /&gt;
+      &lt;/transition&gt;
+   &lt;/start-page&gt;
+   
+   &lt;decision name="evaluateGuess" expression="#{numberGuess.correctGuess}"&gt;
+      &lt;transition name="true" to="win"/&gt;
+      &lt;transition name="false" to="evaluateRemainingGuesses"/&gt;
+   &lt;/decision&gt;
+   
+   &lt;decision name="evaluateRemainingGuesses" expression="#{numberGuess.lastGuess}"&gt;
+      &lt;transition name="true" to="lose"/&gt;
+      &lt;transition name="false" to="displayGuess"/&gt;
+   &lt;/decision&gt;
+   
+   &lt;page name="win" view-id="/win.jsp"&gt;
+      &lt;redirect/&gt;
+      &lt;end-conversation /&gt;
+   &lt;/page&gt;
+   
+   &lt;page name="lose" view-id="/lose.jsp"&gt;
+      &lt;redirect/&gt;
+      &lt;end-conversation /&gt;
+   &lt;/page&gt;
+   
+&lt;/pageflow-definition&gt;
+</programlisting>
+				<orderedlist>
+					<listitem>
+						<para>
+							The <literal>&lt;page&gt;</literal> element defines a wait state where the system displays a particular JSF view and waits for user input. The <literal>view-id</literal> is the same JSF view id used in plain JSF navigation rules. The <literal>redirect</literal> attribute tells Seam to use post-then-redirect when navigating to the page. (This results in friendly browser URLs.)
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							The <literal>&lt;transition&gt;</literal> element names a JSF outcome. The transition is triggered when a JSF action results in that outcome. Execution will then proceed to the next node of the pageflow graph, after invocation of any jBPM transition actions.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							A transition <literal>&lt;action&gt;</literal> is just like a JSF action, except that it occurs when a jBPM transition occurs. The transition action can invoke any Seam component.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							A <literal>&lt;decision&gt;</literal> node branches the pageflow, and determines the next node to execute by evaluating a JSF EL expression.
+						</para>
+					</listitem>
+				</orderedlist>
+		<!--	</programlistingco> -->
+			
+		<!--	</example>--><para>
+				Here is what the pageflow looks like in the JBossIDE pageflow editor:
+			</para>
+			<mediaobject>
+				<imageobject role="fo">
+					<imagedata align="center" fileref="images/numberguess-pageflow.png" />
+				</imageobject>
+			<!--	<imageobject role="html">
+					<imagedata align="center" fileref="../shared/images/numberguess-pageflow.png" />
+				</imageobject> -->
+			</mediaobject>
+			<para>
+				Now that we have seen the pageflow, it is very, very easy to understand the rest of the application!
+			</para>
+			<para>
+				Here is the main page of the application, <literal>numberGuess.jsp</literal>:
+			</para>
+			<example><title></title><programlisting>&lt;%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%&gt;
+&lt;%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;title&gt;Guess a number...&lt;/title&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;h1&gt;Guess a number...&lt;/h1&gt;
+&lt;f:view&gt;
+    &lt;h:form&gt;
+        &lt;h:outputText value="Higher!" rendered="#{numberGuess.randomNumber&gt;numberGuess.currentGuess}" /&gt;
+        &lt;h:outputText value="Lower!" rendered="#{numberGuess.randomNumber&lt;numberGuess.currentGuess}" /&gt;
+        &lt;br /&gt;
+        I&#39;m thinking of a number between &lt;h:outputText value="#{numberGuess.smallest}" /&gt; and 
+        &lt;h:outputText value="#{numberGuess.biggest}" /&gt;. You have 
+        &lt;h:outputText value="#{numberGuess.remainingGuesses}" /&gt; guesses.
+        &lt;br /&gt;
+        Your guess: 
+        &lt;h:inputText value="#{numberGuess.currentGuess}" id="guess" required="true"&gt;
+            &lt;f:validateLongRange
+                maximum="#{numberGuess.biggest}" 
+                minimum="#{numberGuess.smallest}"/&gt;
+        &lt;/h:inputText&gt;
+        &lt;h:commandButton type="submit" value="Guess" action="guess" /&gt;
+        &lt;br/&gt;
+        &lt;h:message for="guess" style="color: red"/&gt;
+    &lt;/h:form&gt;
+&lt;/f:view&gt;
+&lt;/body&gt;
+&lt;/html&gt;
+</programlisting>
+			</example><para>
+				Notice how the command button names the <literal>guess</literal> transition instead of calling an action directly.
+			</para>
+			<para>
+				The <literal>win.jsp</literal> page is predictable:
+			</para>
+			<example><title></title><programlisting>&lt;%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%&gt;
+&lt;%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;title&gt;You won!&lt;/title&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;h1&gt;You won!&lt;/h1&gt;
+&lt;f:view&gt;
+    Yes, the answer was &lt;h:outputText value="#{numberGuess.currentGuess}" /&gt;.
+    It took you &lt;h:outputText value="#{numberGuess.guessCount}" /&gt; guesses.
+    Would you like to &lt;a href="numberGuess.seam"&gt;play again&lt;/a&gt;?
+  &lt;/f:view&gt;
+&lt;/body&gt;
+&lt;/html&gt;
+</programlisting>
+			</example><para>
+				As is <literal>lose.jsp</literal> (which I can not be bothered copy/pasting). Finally, the JavaBean Seam component:
+			</para>
+			<example><title></title>
+			<!--	<programlistingco>
+				<areaspec>
+					<area coords="12" id="numberguess-create" />
+					<area coords="13" id="numberguess-begin" />
+				</areaspec> -->
+<programlisting>@Name("numberGuess")
+ at Scope(ScopeType.CONVERSATION)
+public class NumberGuess {
+   
+   private int randomNumber;
+   private Integer currentGuess;
+   private int biggest;
+   private int smallest;
+   private int guessCount;
+   private int maxGuesses;
+   
+   @Create 
+   @Begin(pageflow="numberGuess")
+   public void begin()
+   {
+      randomNumber = new Random().nextInt(100);
+      guessCount = 0;
+      biggest = 100;
+      smallest = 1;
+   }
+   
+   public void setCurrentGuess(Integer guess)
+   {
+      this.currentGuess = guess;
+   }
+   
+   public Integer getCurrentGuess()
+   {
+      return currentGuess;
+   }
+   
+   public void guess()
+   {
+      if (currentGuess&gt;randomNumber)
+      {
+         biggest = currentGuess - 1;
+      }
+      if (currentGuess&lt;randomNumber)
+      {
+         smallest = currentGuess + 1;
+      }
+      guessCount ++;
+   }
+   
+   public boolean isCorrectGuess()
+   {
+      return currentGuess==randomNumber;
+   }
+   
+   public int getBiggest()
+   {
+      return biggest;
+   }
+   
+   public int getSmallest()
+   {
+      return smallest;
+   }
+   
+   public int getGuessCount()
+   {
+      return guessCount;
+   }
+   
+   public boolean isLastGuess()
+   {
+      return guessCount==maxGuesses;
+   }
+
+   public int getRemainingGuesses() {
+      return maxGuesses-guessCount;
+   }
+
+   public void setMaxGuesses(int maxGuesses) {
+      this.maxGuesses = maxGuesses;
+   }
+
+   public int getMaxGuesses() {
+      return maxGuesses;
+   }
+
+   public int getRandomNumber() {
+      return randomNumber;
+   }
+}
+</programlisting>
+				<orderedlist>
+					<listitem>
+						<para>
+							The first time a JSP page asks for a <literal>numberGuess</literal> component, Seam will create a new one for it, and the <literal>@Create</literal> method will be invoked, allowing the component to initialize itself.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							The <literal>@Begin</literal> annotation starts a Seam <emphasis>conversation</emphasis> (much more about that later), and specifies the pageflow definition to use for the conversation&#39;s page flow.
+						</para>
+					</listitem>
+				</orderedlist>
+		<!--	</programlistingco> -->
+			
+			</example><para>
+				As you can see, this Seam component is pure business logic! It does not need to know anything at all about the user interaction flow. This makes the component potentially more reuseable.
+			</para>
+		</section>
+		
+		<!--  <section id="Seam_Reference_Guide-Seam_pageflow_the_numberguess_example-How_it_works">
+			<title>How it works</title>
+			<para>
+				TODO
+			</para>
+		</section> -->
+
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_Tutorial-A_complete_Seam_application_the_Hotel_Booking_example">
+		<title>A complete Seam application: the Hotel Booking example</title>
+		<section id="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-Introduction">
+			<title>Introduction</title>
+			<para>
+				The booking application is a complete hotel room reservation system incorporating the following features:
+			</para>
+			<itemizedlist>
+				<listitem>
+					<para>
+						User registration
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						Login
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						Logout
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						Set password
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						Hotel search
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						Hotel selection
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						Room reservation
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						Reservation confirmation
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						Existing reservation list
+					</para>
+				</listitem>
+			</itemizedlist>
+		<para>
+			<figure id="Booking_Image">
+				<title>Booking Example</title>
+				<mediaobject>
+					<imageobject>
+						<imagedata align="center" fileref="images/booking.png" />
+					</imageobject>
+				</mediaobject>
+			</figure>
+		</para>
+			
+			<para>
+				The booking application uses JSF, EJB 3.0 and Seam, together with Facelets for the view. There is also a port of this application to JSF, Facelets, Seam, JavaBeans and Hibernate3.
+			</para>
+			<para>
+				One of the things you will notice if you play with this application for long enough is that it is extremely <emphasis>robust</emphasis>. You can play with back buttons and browser refresh and opening multiple windows and entering nonsensical data as much as you like and you will find it very difficult to make the application crash. You might think that we spent weeks testing and fixing bugs to achive this. Actually, this is not the case. Seam was designed to make it very straightforward to build robust web applications and a lot of robustness that you are probably used to having to code yourself comes naturally and automatically with Seam.
+			</para>
+			<para>
+				As you browse the sourcecode of the example application, and learn how the application works, observe how the declarative state management and integrated validation has been used to achieve this robustness.
+			</para>
+		</section>
+		
+		<section id="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-Overview_of_the_booking_example">
+			<title>Overview of the booking example</title>
+			<para>
+				The project structure is identical to the previous one, to install and deploy this application, please refer to <xref linkend="Seam_Reference_Guide-Seam_Tutorial-Try_the_examples" />. Once you have successfully started the application, you can access it by pointing your browser to <ulink url="http://localhost:8080/seam-booking/"><literal>http://localhost:8080/seam-booking/</literal></ulink>
+			</para>
+			<para>
+				Just nine classes (plus six session beans local interfaces) where used to implement this application. Six session bean action listeners contain all the business logic for the listed features.
+			</para>
+			<itemizedlist>
+				<listitem>
+					<para><literal>BookingListAction</literal> retrieves existing bookings for the currently logged in user.</para>
+				</listitem>
+				<listitem>
+					<para><literal>ChangePasswordAction</literal> updates the password of the currently logged in user.</para>
+				</listitem>
+				<listitem>
+					<para><literal>HotelBookingAction</literal> implements the core functionality of the application: hotel room searching, selection, booking and booking confirmation. This functionality is implemented as a <emphasis>conversation</emphasis>, so this is the most interesting class in the application.</para>
+				</listitem>
+				<listitem>
+					<para><literal>RegisterAction</literal> registers a new system user.</para>
+				</listitem>
+			</itemizedlist>
+			<para>
+				Three entity beans implement the application&#39;s persistent domain model.
+			</para>
+			<itemizedlist>
+				<listitem>
+					<para>
+						<literal>Hotel</literal> is an entity bean that represents a hotel
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						<literal>Booking</literal> is an entity bean that represents an existing booking
+					</para>
+				</listitem>
+				<listitem>
+					<para>
+						<literal>User</literal> is an entity bean to represents a user who can make hotel bookings
+					</para>
+				</listitem>
+			</itemizedlist>
+		</section>
+		
+		<section id="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-Understanding_Seam_conversations">
+			<title>Understanding Seam conversations</title>
+			<para>
+				We encourage you browse the sourcecode at your pleasure. In this tutorial we will concentrate upon one particular piece of functionality: hotel search, selection, booking and confirmation. From the point of view of the user, everything from selecting a hotel to confirming a booking is one continuous unit of work, a <emphasis>conversation</emphasis>. Searching, however, is <emphasis>not</emphasis> part of the conversation. The user can select multiple hotels from the same search results page, in different browser tabs.
+			</para>
+			<para>
+				Most web application architectures have no first class construct to represent a conversation. This causes enormous problems managing state associated with the conversation. Usually, Java web applications use a combination of two techniques: first, some state is thrown into the <literal>HttpSession</literal>; second, persistable state is flushed to the database after every request, and reconstructed from the database at the beginning of each new request.
+			</para>
+			<para>
+				Since the database is the least scalable tier, this often results in an utterly unacceptable lack of scalability. Added latency is also a problem, due to the extra traffic to and from the database on every request. To reduce this redundant traffic, Java applications often introduce a data (second-level) cache that keeps commonly accessed data between requests. This cache is necessarily inefficient, because invalidation is based upon an LRU policy instead of being based upon when the user has finished working with the data. Furthermore, because the cache is shared between many concurrent transactions, we have introduced a whole raft of problem&#39;s associated with keeping the cached state consistent with the database.
+			</para>
+			<para>
+				Now consider the state held in the <literal>HttpSession</literal>. By very careful programming, we might be able to control the size of the session data. This is a lot more difficult than it sounds, since web browsers permit ad hoc non-linear navigation. But suppose we suddenly discover a system requirement that says that a user is allowed to have <emphasis>mutiple concurrent conversations</emphasis>, halfway through the development of the system (this has happened to me). Developing mechanisms to isolate session state associated with different concurrent conversations, and incorporating failsafes to ensure that conversation state is destroyed when the user aborts one of the conversations by closing a browser window or tab can be tough. <!-- (I&#39;ve implemented this stuff twice so far, once for a client application, once for Seam, but I&#39;m famously psychotic). -->
+			</para>
+			<para>
+				Now there is a better way.
+			</para>
+			<para>
+				Seam introduces the <emphasis>conversation context</emphasis> as a first class construct. You can safely keep conversational state in this context, and be assured that it will have a well-defined lifecycle. Even better, you will not need to be continually pushing data back and forth between the application server and the database, since the conversation context is a natural cache of data that the user is currently working with.
+			</para>
+			<para>
+				Usually, the components we keep in the conversation context are stateful session beans. (We can also keep entity beans and JavaBeans in the conversation context.) There is an ancient canard in the Java community that stateful session beans are a scalability killer. This may have been true in 1998 when WebFoobar 1.0 was released. It is no longer true today. Application servers like JBoss 4.0 have extremely sophisticated mechanisms for stateful session bean state replication. (For example, the JBoss EJB3 container performs fine-grained replication, replicating only those bean attribute values which actually changed.) Note that all the traditional technical arguments for why stateful beans are inefficient apply equally to the <literal>HttpSession</literal>, so the practice of shifting state from business tier stateful session bean components to the web session to try and improve performance is unbelievably misguided. It is certainly possible to write unscalable application!
 s using stateful session beans, by using stateful beans incorrectly, or by using them for the wrong thing. But that does not mean you should <emphasis>never</emphasis> use them. Anyway, Seam guides you toward a safe usage model. <!--Welcome to 2005. -->
+			</para>
+		<!--	<para>
+				OK, I&#39;ll stop ranting now, and get back to the tutorial.
+			</para> -->
+			<para>
+				The booking example application shows how stateful components with different scopes can collaborate together to achieve complex behaviors. The main page of the booking application allows the user to search for hotels. The search results are kept in the Seam session scope. When the user navigates to one of these hotels, a conversation begins, and a conversation scoped component calls back to the session scoped component to retrieve the selected hotel.
+			</para>
+			<para>
+				The booking example also demonstrates the use of Ajax4JSF to implement rich client behavior without the use of handwritten JavaScript.
+			</para>
+			<para>
+				The search functionality is implemented using a session-scope stateful session bean, similar to the one we saw in the message list example above.
+			</para>
+		<!--	<example><title></title> -->
+			<!--	<programlistingco>
+				<areaspec>
+					<area coords="1" id="booking-stateful-annotation" />
+					<area coords="4" id="booking-restrict-annotation" />
+					<area coords="16" id="booking-datamodel-annotation" />
+					<area coords="66" id="booking-destroy-annotation" />
+				</areaspec> -->
+<programlisting>@Stateful
+ at Name("hotelSearch")
+ at Scope(ScopeType.SESSION)
+ at Restrict("#{identity.loggedIn}")
+public class HotelSearchingAction implements HotelSearching
+{
+   
+   @PersistenceContext
+   private EntityManager em;
+   
+   private String searchString;
+   private int pageSize = 10;
+   private int page;
+   
+   @DataModel
+   private List&lt;Hotel&gt; hotels;
+   
+   public String find()
+   {
+      page = 0;
+      queryHotels();   
+      return "main";
+   }
+
+   public String nextPage()
+   {
+      page++;
+      queryHotels();
+      return "main";
+   }
+      
+   private void queryHotels()
+   {
+      String searchPattern = searchString==null ? "%" : &#39;%&#39; + 
+         searchString.toLowerCase().replace(&#39;*&#39;, &#39;%&#39;) + &#39;%&#39;;
+      hotels = em.createQuery("select h from Hotel h where lower(h.name) like 
+        :search or lower(h.city) like :search 
+        or lower(h.zip) like :search or lower(h.address) like :search")
+            .setParameter("search", searchPattern)
+            .setMaxResults(pageSize)
+            .setFirstResult( page * pageSize )
+            .getResultList();
+   }
+   
+   public boolean isNextPageAvailable()
+   {
+      return hotels!=null &amp;&amp; hotels.size()==pageSize;
+   }
+   
+   public int getPageSize() {
+      return pageSize;
+   }
+
+   public void setPageSize(int pageSize) {
+      this.pageSize = pageSize;
+   }
+
+   public String getSearchString()
+   {
+      return searchString;
+   }
+
+   public void setSearchString(String searchString)
+   {
+      this.searchString = searchString;
+   }
+   
+   @Destroy @Remove
+   public void destroy() {}
+
+}
+</programlisting>
+				<orderedlist>
+					<listitem>
+						<para>
+							The EJB standard <literal>@Stateful</literal> annotation identifies this class as a stateful session bean. Stateful session beans are scoped to the conversation context by default.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							The <literal>@Restrict</literal> annotation applies a security restriction to the component. It restricts access to the component allowing only logged-in users. The security chapter explains more about security in Seam.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							The <literal>@DataModel</literal> annotation exposes a <literal>List</literal> as a JSF <literal>ListDataModel</literal>. This makes it easy to implement clickable lists for search screens. In this case, the list of hotels is exposed to the page as a <literal>ListDataModel</literal> in the conversation variable named <literal>hotels</literal>.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							The EJB standard <literal>@Remove</literal> annotation specifies that a stateful session bean should be removed and its state destroyed after invocation of the annotated method. In Seam, all stateful session beans should define a method marked <literal>@Destroy @Remove</literal>. This is the EJB remove method that will be called when Seam destroys the session context. Actually, the <literal>@Destroy</literal> annotation is of more general usefulness, since it can be used for any kind of cleanup that should happen when any Seam context ends. If you do not have an <literal>@Destroy @Remove</literal> method, state will leak and you will suffer performance problems.
+						</para>
+					</listitem>
+				</orderedlist>
+		<!--	</programlistingco> -->
+			
+		<!--	</example>--><para>
+				The main page of the application is a Facelets page. Let us look at the fragment which relates to searching for hotels:
+			</para>
+		<!--	<example><title></title>-->
+			<!--	<programlistingco>
+				<areaspec>
+					<area coords="11" id="booking-support-element" />
+					<area coords="18" id="booking-status-element" />
+					<area coords="35" id="booking-outputpanel-element" />
+					<area coords="58" id="booking-link-element" />
+				</areaspec> -->
+<programlisting>&lt;div class="section"&gt;
+&lt;h:form&gt;
+  
+  &lt;span class="errors"&gt;
+    &lt;h:messages globalOnly="true"/&gt;
+  &lt;/span&gt;
+    
+  &lt;h1&gt;Search Hotels&lt;/h1&gt;
+  &lt;fieldset&gt; 
+     &lt;h:inputText value="#{hotelSearch.searchString}" style="width: 165px;"&gt;
+        &lt;a:support event="onkeyup" actionListener="#{hotelSearch.find}" 
+                   reRender="searchResults" /&gt;
+     &lt;/h:inputText&gt;
+     &#160;
+     &lt;a:commandButton value="Find Hotels" action="#{hotelSearch.find}" 
+                      styleClass="button" reRender="searchResults"/&gt;
+     &#160;
+     &lt;a:status&gt;
+        &lt;f:facet name="start"&gt;
+           &lt;h:graphicImage value="/img/spinner.gif"/&gt;
+        &lt;/f:facet&gt;
+     &lt;/a:status&gt;
+     &lt;br/&gt;
+     &lt;h:outputLabel for="pageSize"&gt;Maximum results:&lt;/h:outputLabel&gt;&#160;
+     &lt;h:selectOneMenu value="#{hotelSearch.pageSize}" id="pageSize"&gt;
+        &lt;f:selectItem itemLabel="5" itemValue="5"/&gt;
+        &lt;f:selectItem itemLabel="10" itemValue="10"/&gt;
+        &lt;f:selectItem itemLabel="20" itemValue="20"/&gt;
+     &lt;/h:selectOneMenu&gt;
+  &lt;/fieldset&gt;
+    
+&lt;/h:form&gt;
+&lt;/div&gt;
+
+&lt;a:outputPanel id="searchResults"&gt;
+  &lt;div class="section"&gt;
+  &lt;h:outputText value="No Hotels Found" 
+                rendered="#{hotels != null and hotels.rowCount==0}"/&gt;
+  &lt;h:dataTable value="#{hotels}" var="hot" rendered="#{hotels.rowCount&gt;0}"&gt;
+    &lt;h:column&gt;
+      &lt;f:facet name="header"&gt;Name&lt;/f:facet&gt;
+      #{hot.name}
+    &lt;/h:column&gt;
+    &lt;h:column&gt;
+      &lt;f:facet name="header"&gt;Address&lt;/f:facet&gt;
+      #{hot.address}
+    &lt;/h:column&gt;
+    &lt;h:column&gt;
+      &lt;f:facet name="header"&gt;City, State&lt;/f:facet&gt;
+      #{hot.city}, #{hot.state}, #{hot.country}
+    &lt;/h:column&gt; 
+    &lt;h:column&gt;
+      &lt;f:facet name="header"&gt;Zip&lt;/f:facet&gt;
+      #{hot.zip}
+    &lt;/h:column&gt;
+    &lt;h:column&gt;
+      &lt;f:facet name="header"&gt;Action&lt;/f:facet&gt;
+      &lt;s:link value="View Hotel" action="#{hotelBooking.selectHotel(hot)}"/&gt;
+    &lt;/h:column&gt;
+  &lt;/h:dataTable&gt;
+  &lt;s:link value="More results" action="#{hotelSearch.nextPage}" 
+          rendered="#{hotelSearch.nextPageAvailable}"/&gt;
+  &lt;/div&gt;
+&lt;/a:outputPanel&gt;
+</programlisting>
+				<orderedlist>
+					<listitem>
+						<para>
+							The Ajax4JSF <literal>&lt;a:support&gt;</literal> tag allows a JSF action event listener to be called by asynchronous <literal>XMLHttpRequest</literal> when a JavaScript event like <literal>onkeyup</literal> occurs. Even better, the <literal>reRender</literal> attribute lets us render a fragment of the JSF page and perform a partial page update when the asynchronous response is received.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							The Ajax4JSF <literal>&lt;a:status&gt;</literal> tag lets us display a cheesy annimated image while we wait for asynchronous requests to return.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							The Ajax4JSF <literal>&lt;a:outputPanel&gt;</literal> tag defines a region of the page which can be re-rendered by an asynchronous request.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							The Seam <literal>&lt;s:link&gt;</literal> tag lets us attach a JSF action listener to an ordinary (non-JavaScript) HTML link. The advantage of this over the standard JSF <literal>&lt;h:commandLink&gt;</literal> is that it preserves the operation of "open in new window" and "open in new tab". Also notice that we use a method binding with a parameter: <literal>#{hotelBooking.selectHotel(hot)}</literal>. This is not possible in the standard Unified EL, but Seam provides an extension to the EL that lets you use parameters on any method binding expression.
+						</para>
+					</listitem>
+				</orderedlist>
+		<!--	</programlistingco> -->
+			
+		<!--	</example>--><para>
+				This page displays the search results dynamically as we type, and lets us choose a hotel and pass it to the <literal>selectHotel()</literal> method of the <literal>HotelBookingAction</literal>, which is where the <emphasis>really</emphasis> interesting stuff is going to happen.
+			</para>
+			<para>
+				Now lets see how the booking example application uses a conversation-scoped stateful session bean to achieve a natural cache of persistent data related to the conversation. The following code example is pretty long. But if you think of it as a list of scripted actions that implement the various steps of the conversation, it is understandable. Read the class from top to bottom, as if it were a story.
+			</para>
+	<!--		<example><title></title> -->
+			<!--	<programlistingco>
+				<areaspec>
+					<area coords="7" id="booking-extendedpersistencecontext-annotation" />
+					<area coords="10" id="booking-out-annotation" />
+					<area coords="29" id="booking-begin-annotation" />
+					<area coords="61" id="booking-end-annotation" />
+					<area coords="78" id="booking-dest-annotation" />
+				</areaspec> -->
+<programlisting>@Stateful
+ at Name("hotelBooking")
+ at Restrict("#{identity.loggedIn}")
+public class HotelBookingAction implements HotelBooking
+{
+   
+   @PersistenceContext(type=EXTENDED)
+   private EntityManager em;
+   
+   @In 
+   private User user;
+   
+   @In(required=false) @Out
+   private Hotel hotel;
+   
+   @In(required=false) 
+   @Out(required=false)
+   private Booking booking;
+     
+   @In
+   private FacesMessages facesMessages;
+      
+   @In
+   private Events events;
+   
+   @Logger 
+   private Log log;
+   
+   @Begin
+   public String selectHotel(Hotel selectedHotel)
+   {
+      hotel = em.merge(selectedHotel);
+      return "hotel";
+   }
+   
+   public String bookHotel()
+   {      
+      booking = new Booking(hotel, user);
+      Calendar calendar = Calendar.getInstance();
+      booking.setCheckinDate( calendar.getTime() );
+      calendar.add(Calendar.DAY_OF_MONTH, 1);
+      booking.setCheckoutDate( calendar.getTime() );
+      
+      return "book";
+   }
+
+   public String setBookingDetails()
+   {
+      if (booking==null || hotel==null) return "main";
+      if ( !booking.getCheckinDate().before( booking.getCheckoutDate() ) )
+      {
+         facesMessages.add("Check out date must be later than check in date");
+         return null;
+      }
+      else
+      {
+         return "confirm";
+      }
+   }
+
+   @End
+   public String confirm()
+   {
+      if (booking==null || hotel==null) return "main";
+      em.persist(booking);
+      facesMessages.add
+       ("Thank you, #{user.name}, your confimation number for #{hotel.name} is #{booking.id}");
+      log.info("New booking: #{booking.id} for #{user.username}");
+      events.raiseEvent("bookingConfirmed");
+      return "confirmed";
+   }
+   
+   @End
+   public String cancel()
+   {
+      return "main";
+   }
+   
+   @Destroy @Remove
+   public void destroy() {}
+
+}
+</programlisting>
+				<orderedlist>
+					<listitem>
+						<para>
+							This bean uses an EJB3 <emphasis>extended persistence context</emphasis>, so that any entity instances remain managed for the whole lifecycle of the stateful session bean.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							The <literal>@Out</literal> annotation declares that an attribute value is <emphasis>outjected</emphasis> to a context variable after method invocations. In this case, the context variable named <literal>hotel</literal> will be set to the value of the <literal>hotel</literal> instance variable after every action listener invocation completes.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							The <literal>@Begin</literal> annotation specifies that the annotated method begins a <emphasis>long-running conversation</emphasis>, so the current conversation context will not be destroyed at the end of the request. Instead, it will be reassociated with every request from the current window, and destroyed either by timeout due to conversation inactivity or invocation of a matching <literal>@End</literal> method.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							The <literal>@End</literal> annotation specifies that the annotated method ends the current long-running conversation, so the current conversation context will be destroyed at the end of the request.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							This EJB remove method will be called when Seam destroys the conversation context and must always be defined.
+						</para>
+					</listitem>
+				</orderedlist>
+		<!--	</programlistingco> -->
+			
+		<!--	</example>--><para>
+				<literal>HotelBookingAction</literal> contains all the action listener methods that implement selection, booking and booking confirmation, and holds state related to this work in its instance variables. We think you will agree that this code is much cleaner and simpler than getting and setting <literal>HttpSession</literal> attributes.
+			</para>
+			<para>
+				Even better, a user can have multiple isolated conversations per login session. Try it! Log in, run a search, and navigate to different hotel pages in multiple browser tabs. You will be able to work on creating two different hotel reservations at the same time. If you leave any one conversation inactive for long enough, Seam will eventually time out that conversation and destroy its state. If, after ending a conversation, you backbutton to a page of that conversation and try to perform an action, Seam will detect that the conversation was already ended, and redirect you to the search page.
+			</para>
+		</section>
+		
+		<section id="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-The_Seam_UI_control_library">
+			<title>The Seam UI control library</title>
+			<para>
+				If you check inside the WAR file for the booking application, you will find <literal>seam-ui.jar</literal> in the <literal>WEB-INF/lib</literal> directory. This package contains a number of JSF custom controls that integrate with Seam. The booking application uses the <literal>&lt;s:link&gt;</literal> control for navigation from the search screen to the hotel page:
+			</para>
+<programlisting>&lt;s:link value="View Hotel" action="#{hotelBooking.selectHotel}"/&gt;</programlisting>
+			<para>
+				The use of <literal>&lt;s:link&gt;</literal> here allows us to attach an action listener to a HTML link without breaking the browser&#39;s "open in new window" feature. The standard JSF <literal>&lt;h:commandLink&gt;</literal> does not work with "open in new window". We&#39;ll see later that <literal>&lt;s:link&gt;</literal> also offers a number of other useful features, including conversation propagation rules.
+			</para>
+			<para>
+				The booking application uses some other Seam and Ajax4JSF controls, especially on the <literal>/book.xhtml</literal> page. We will not get into the details of those controls here, but if you want to understand this code, please refer to the chapter covering Seam&#39;s functionality for JSF form validation.
+			</para>
+		</section>
+		
+		<section id="Seam_Reference_Guide-A_complete_Seam_application_the_Hotel_Booking_example-The_Seam_Debug_Page">
+			<title>The Seam Debug Page</title>
+			<para>
+				The WAR also includes <literal>seam-debug.jar</literal>. If this jar is deployed in <literal>WEB-INF/lib</literal>, along with the Facelets, and if you set the following Seam property in <literal>web.xml</literal> or <literal>seam.properties</literal>:
+			</para>
+<programlisting>&lt;context-param&gt;
+    &lt;param-name&gt;org.jboss.seam.core.init.debug&lt;/param-name&gt;
+    &lt;param-value&gt;true&lt;/param-value&gt;
+&lt;/context-param&gt;
+</programlisting>
+			<para>
+				Then the Seam debug page will be available. This page lets you browse and inspect the Seam components in any of the Seam contexts associated with your current login session. Just point your browser at <ulink url="http://localhost:8080/seam-booking/debug.seam"><literal>http://localhost:8080/seam-booking/debug.seam</literal></ulink>.
+			</para>
+			<mediaobject>
+				<imageobject role="fo">
+					<imagedata align="center" fileref="images/debug.png" />
+				</imageobject>
+			<!--	<imageobject role="html">
+					<imagedata align="center" fileref="../shared/images/debug.png" />
+				</imageobject> -->
+			</mediaobject>
+		</section>
+
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_Tutorial-A_complete_application_featuring_Seam_and_jBPM_the_DVD_Store_example">
+		<title>A complete application featuring Seam and jBPM: the DVD Store example</title>
+		<para>
+			The DVD Store demo application shows the practical usage of jBPM for both task management and pageflow.
+		</para>
+		<para>
+			The user screens take advantage of a jPDL pageflow to implement searching and shopping cart functionality.
+		</para>
+		<screenshot><screeninfo>DVD Store example</screeninfo><mediaobject>
+			<imageobject role="fo">
+				<imagedata align="center" fileref="images/dvdsearch.png" />
+			</imageobject>
+		<!--	<imageobject role="html">
+				<imagedata align="center" fileref="../shared/images/dvdsearch.png" />
+			</imageobject> -->
+		</mediaobject>
+		</screenshot>
+		<para>
+			The administration screens take use jBPM to manage the approval and shipping cycle for orders. The business process may even be changed dynamically, by selecting a different process definition!
+		</para>
+		<screenshot><screeninfo>DVD Store example</screeninfo><mediaobject>
+			<imageobject role="fo">
+				<imagedata align="center" fileref="images/dvdtasks.png" />
+			</imageobject>
+	<!--	<imageobject role="html">
+				<imagedata align="center" fileref="../shared/images/dvdtasks.png" />
+			</imageobject> -->
+			</mediaobject>
+		  </screenshot>
+	<!--  <para>
+			TODO
+		</para>
+		<para>
+			Look in the <literal>dvdstore</literal> directory.
+		</para> -->
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_Tutorial-A_complete_application_featuring_Seam_workspace_management_the_Issue_Tracker_example">
+		<title>A complete application featuring Seam workspace management: the Issue Tracker example</title>
+		<para>
+			The Issue Tracker demo shows off Seam&#39;s workspace management functionality: the conversation switcher, conversation list and breadcrumbs.
+		</para>
+		<para>
+			<note>
+				<para>To log into the Issue Tracker demo you must provide a username and password. You can find this in the <filename>resources/import.sql</filename> file or use "gavin" and "foobar" for username and password respectively.</para>
+			</note>
+		</para>
+		<screenshot><screeninfo>DVD Store example</screeninfo>
+		<mediaobject>
+			<imageobject role="fo">
+				<imagedata align="center" fileref="images/issues.png" />
+			</imageobject>
+		<!--	<imageobject role="html">
+				<imagedata align="center" fileref="../shared/images/issues.png" />
+			</imageobject> -->
+		</mediaobject>
+	 </screenshot>
+	 <!-- <para>
+			TODO
+		</para> -->
+		<!-- <para>
+			Look in the <literal>issues</literal> directory.
+		</para> --> 
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_Tutorial-An_example_of_Seam_with_Hibernate_the_Hibernate_Booking_example">
+		<title>An example of Seam with Hibernate: the Hibernate Booking example</title>
+		<para>
+			The Hibernate Booking demo is a straight port of the Booking demo to an alternative architecture that uses Hibernate for persistence and JavaBeans instead of session beans.
+		</para>
+	<!--  <para>
+			TODO
+		</para>
+		<para>
+			Look in the <literal>hibernate</literal> directory.
+		</para> -->
+	</section>
+	
+	<section id="Seam_Reference_Guide-Seam_Tutorial-A_RESTful_Seam_application_the_Blog_example">
+		<title>A RESTful Seam application: the Blog example</title>
+		<para>
+			Seam makes it very easy to implement applications which keep state on the server-side. However, server-side state is not always appropriate, especially in for functionality that serves up <emphasis>content</emphasis>. For this kind of problem we often need to let the user bookmark pages and have a relatively stateless server, so that any page can be accessed at any time, via the bookmark. The Blog example shows how to a implement RESTful application using Seam. Every page of the application can be bookmarked, including the search results page.
+		</para>
+		<screenshot><screeninfo>Blog example</screeninfo><mediaobject>
+			<imageobject role="fo">
+				<imagedata align="center" fileref="images/blog.png" />
+			</imageobject>
+		<!--	<imageobject role="html">
+				<imagedata align="center" fileref="../shared/images/blog.png" />
+			</imageobject> -->
+		</mediaobject>
+		</screenshot><para>
+			The Blog example demonstrates the use of "pull"-style MVC, where instead of using action listener methods to retrieve data and prepare the data for the view, the view pulls data from components as it is being rendered.
+		</para>
+		<section id="Seam_Reference_Guide-A_RESTful_Seam_application_the_Blog_example-Using_pull_style_MVC">
+			<title>Using "pull"-style MVC</title>
+			<para>
+				This snippet from the <literal>index.xhtml</literal> facelets page displays a list of recent blog entries:
+			</para>
+			<example><title></title><programlisting>&lt;h:dataTable value="#{blog.recentBlogEntries}" var="blogEntry" rows="3"&gt;
+   &lt;h:column&gt;
+      &lt;div class="blogEntry"&gt;
+         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;
+         &lt;div&gt;
+            &lt;h:outputText escape="false" 
+                  value="#{blogEntry.excerpt==null ? blogEntry.body : blogEntry.excerpt}"/&gt;
+         &lt;/div&gt;
+         &lt;p&gt;
+            &lt;h:outputLink value="entry.seam" rendered="#{blogEntry.excerpt!=null}"&gt;
+               &lt;f:param name="blogEntryId" value="#{blogEntry.id}"/&gt;
+               Read more...
+            &lt;/h:outputLink&gt;
+         &lt;/p&gt;
+         &lt;p&gt;
+            [Posted on 
+            &lt;h:outputText value="#{blogEntry.date}"&gt;
+               &lt;f:convertDateTime timeZone="#{blog.timeZone}" locale="#{blog.locale}" 
+                                     type="both"/&gt;
+            &lt;/h:outputText&gt;]
+            &#160;
+            &lt;h:outputLink value="entry.seam"&gt;[Link]
+               &lt;f:param name="blogEntryId" value="#{blogEntry.id}"/&gt;
+            &lt;/h:outputLink&gt;
+         &lt;/p&gt;
+      &lt;/div&gt;
+   &lt;/h:column&gt;
+&lt;/h:dataTable&gt;
+</programlisting>
+			</example><para>
+				If we navigate to this page from a bookmark, how does the data used by the <literal>&lt;h:dataTable&gt;</literal> actually get initialized? Well, what happens is that the <literal>Blog</literal> is retrieved lazily&mdash;"pulled"&mdash;when needed, by a Seam component named <literal>blog</literal>. This is the opposite flow of control to what is usual in traditional web action-based frameworks like Struts.
+			</para>
+			<example><title></title>
+			<!--	<programlistingco>
+				<areaspec>
+					<area coords="6" id="blog-seampc" />
+					<area coords="9" id="blog-unwrap" />
+				</areaspec> -->
+<programlisting>@Name("blog")
+ at Scope(ScopeType.STATELESS)
+public class BlogService 
+{
+   
+   @In
+   private EntityManager entityManager;
+  
+   @Unwrap
+   public Blog getBlog()
+   {
+      return (Blog) entityManager.createQuery("from Blog b left join fetch b.blogEntries")
+            .setHint("org.hibernate.cacheable", true)
+            .getSingleResult();
+   }
+
+}
+</programlisting>
+				<orderedlist>
+					<listitem>
+						<para>
+							This component uses a <emphasis>seam-managed persistence context</emphasis>. Unlike the other examples we have seen, this persistence context is managed by Seam, instead of by the EJB3 container. The persistence context spans the entire web request, allowing us to avoid any exceptions that occur when accessing unfetched associations in the view.
+						</para>
+					</listitem>
+					<listitem>
+						<para>
+							The <literal>@Unwrap</literal> annotation tells Seam to provide the return value of the method&mdash;the <literal>Blog</literal>&mdash;instead of the actual <literal>BlogService</literal> component to clients. This is the Seam <emphasis>manager component pattern</emphasis>.
+						</para>
+					</listitem>
+				</orderedlist>
+		<!--	</programlistingco> -->
+			
+			</example><para>
+				This is good so far, but what about bookmarking the result of form submissions, such as a search results page?
+			</para>
+		</section>
+		
+		<section id="Seam_Reference_Guide-A_RESTful_Seam_application_the_Blog_example-Bookmarkable_search_results_page">
+			<title>Bookmarkable search results page</title>
+			<para>
+				The blog example has a tiny form in the top right of each page that allows the user to search for blog entries. This is defined in a file, <literal>menu.xhtml</literal>, included by the facelets template, <literal>template.xhtml</literal>:
+			</para>
+			<example><title></title><programlisting>&lt;div id="search"&gt;
+   &lt;h:form&gt;
+      &lt;h:inputText value="#{searchAction.searchPattern}"/&gt;
+      &lt;h:commandButton value="Search" action="/search.xhtml"/&gt;
+   &lt;/h:form&gt;
+&lt;/div&gt;
+</programlisting>
+			</example><para>
+				To implement a bookmarkable search results page, we need to perform a browser redirect after processing the search form submission. Because we used the JSF view id as the action outcome, Seam automatically redirects to the view id when the form is submitted. Alternatively, we could have defined a navigation rule like this:
+			</para>
+			<example><title></title><programlisting>&lt;navigation-rule&gt;
+   &lt;navigation-case&gt;
+      &lt;from-outcome&gt;searchResults&lt;/from-outcome&gt;
+      &lt;to-view-id&gt;/search.xhtml&lt;/to-view-id&gt;
+      &lt;redirect/&gt;
+   &lt;/navigation-case&gt;
+&lt;/navigation-rule&gt;
+</programlisting>
+			</example><para>
+				Then the form would have looked like this:
+			</para>
+			<example><title></title><programlisting>&lt;div id="search"&gt;
+   &lt;h:form&gt;
+      &lt;h:inputText value="#{searchAction.searchPattern}"/&gt;
+      &lt;h:commandButton value="Search" action="searchResults"/&gt;
+   &lt;/h:form&gt;
+&lt;/div&gt;
+</programlisting>
+			</example><para>
+				But when we redirect, we need to include the values submitted with the form as request parameters, to get a bookmarkable URL like <literal>http://localhost:8080/seam-blog/search.seam?searchPattern=seam</literal>. JSF does not provide an easy way to do this, but Seam does. We use a Seam <emphasis>page parameter</emphasis>, defined in <literal>WEB-INF/pages.xml</literal>:
+			</para>
+			<example><title></title><programlisting>&lt;pages&gt;
+   &lt;page view-id="/search.xhtml"&gt;
+      &lt;param name="searchPattern" value="#{searchService.searchPattern}"/&gt;
+   &lt;/page&gt;
+   ...
+&lt;/pages&gt;
+</programlisting>
+			</example><para>
+				This tells Seam to include the value of <literal>#{searchService.searchPattern}</literal> as a request parameter named <literal>searchPattern</literal> when redirecting to the page, and then re-apply the value of that parameter to the model before rendering the page.
+			</para>
+			<para>
+				The redirect takes us to the <literal>search.xhtml</literal> page:
+			</para>
+			<example><title></title><programlisting>&lt;h:dataTable value="#{searchResults}" var="blogEntry"&gt;
+   &lt;h:column&gt;
+      &lt;div&gt;
+         &lt;h:outputLink value="entry.seam"&gt;
+            &lt;f:param name="blogEntryId" value="#{blogEntry.id}"/&gt;
+            #{blogEntry.title}
+         &lt;/h:outputLink&gt;
+         posted on 
+         &lt;h:outputText value="#{blogEntry.date}"&gt;
+            &lt;f:convertDateTime timeZone="#{blog.timeZone}" locale="#{blog.locale}" type="both"/&gt;
+         &lt;/h:outputText&gt;
+      &lt;/div&gt;
+   &lt;/h:column&gt;
+&lt;/h:dataTable&gt;
+</programlisting>
+			</example><para>
+				Which again uses "pull"-style MVC to retrieve the actual search results:
+			</para>
+			<example><title></title><programlisting>@Name("searchService")
+public class SearchService 
+{
+   
+   @In
+   private EntityManager entityManager;
+   
+   private String searchPattern;
+   
+   @Factory("searchResults")
+   public List&lt;BlogEntry&gt; getSearchResults()
+   {
+      if (searchPattern==null)
+      {
+         return null;
+      }
+      else
+      {
+         return entityManager.createQuery("select be from BlogEntry be where lower(be.title) 
+                               like :searchPattern or lower(be.body) like :searchPattern 
+                               order by be.date desc")
+               .setParameter( "searchPattern", getSqlSearchPattern() )
+               .setMaxResults(100)
+               .getResultList();
+      }
+   }
+
+   private String getSqlSearchPattern()
+   {
+      return searchPattern==null ? "" : &#39;%&#39; + 
+        searchPattern.toLowerCase().replace(&#39;*&#39;, &#39;%&#39;).replace(&#39;?&#39;, &#39;_&#39;) 
+           + &#39;%&#39;;
+   }
+
+   public String getSearchPattern()
+   {
+      return searchPattern;
+   }
+
+   public void setSearchPattern(String searchPattern)
+   {
+      this.searchPattern = searchPattern;
+   }
+
+}
+</programlisting>
+			</example>
+		</section>
+		
+		<section id="Seam_Reference_Guide-A_RESTful_Seam_application_the_Blog_example-Using_push_style_MVC_in_a_RESTful_application">
+			<title>Using "push"-style MVC in a RESTful application</title>
+			<para>
+				Very occasionally, it makes more sense to use push-style MVC for processing RESTful pages, and so Seam provides the notion of a <emphasis>page action</emphasis>. The Blog example uses a page action for the blog entry page, <literal>entry.xhtml</literal>. Note that this is a little bit contrived, it would have been easier to use pull-style MVC here as well.
+			</para>
+			<para>
+				The <literal>entryAction</literal> component works much like an action class in a traditional push-MVC action-oriented framework like Struts:
+			</para>
+			<example><title></title><programlisting>@Name("entryAction")
+ at Scope(STATELESS)
+public class EntryAction
+{
+   @In(create=true) 
+   private Blog blog;
+   
+   @Out
+   private BlogEntry blogEntry;
+   
+   public void loadBlogEntry(String id) throws EntryNotFoundException
+   {
+      blogEntry = blog.getBlogEntry(id);
+      if (blogEntry==null) throw new EntryNotFoundException(id);
+   }
+   
+}
+</programlisting>
+			</example><para>
+				Page actions are also declared in <literal>pages.xml</literal>:
+			</para>
+			<example><title></title><programlisting>&lt;pages&gt;
+   ...
+
+   &lt;page view-id="/entry.xhtml" action="#{entryAction.loadBlogEntry(blogEntry.id)}"&gt;
+      &lt;param name="blogEntryId" value="#{blogEntry.id}"/&gt;
+   &lt;/page&gt;
+
+   &lt;page view-id="/post.xhtml" action="#{loginAction.challenge}"/&gt;
+
+   &lt;page view-id="*" action="#{blog.hitCount.hit}"/&gt;
+
+&lt;/pages&gt;
+</programlisting>
+			</example><para>
+				Notice that the example is using page actions for some other functionality&mdash;the login challenge, and the pageview counter. Also notice the use of a parameter in the page action method binding. This is not a standard feature of JSF EL, but Seam lets you use it, not just for page actions, but also in JSF method bindings.
+			</para>
+			<para>
+				When the <literal>entry.xhtml</literal> page is requested, Seam first binds the page parameter <literal>blogEntryId</literal> to the model, then runs the page action, which retrieves the needed data&mdash;the <literal>blogEntry</literal>&mdash;and places it in the Seam event context. Finally, the following is rendered:
+			</para>
+			<example><title></title><programlisting>&lt;div class="blogEntry"&gt;
+   &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;
+   &lt;div&gt;
+      &lt;h:outputText escape="false" value="#{blogEntry.body}"/&gt;
+   &lt;/div&gt;
+   &lt;p&gt;
+      [Posted on&#160;
+      &lt;h:outputText value="#{blogEntry.date}"&gt;
+         &lt;f:convertDateTime timezone="#{blog.timeZone}" locale="#{blog.locale}" type="both"/&gt;
+      &lt;/h:outputText&gt;]
+   &lt;/p&gt;
+&lt;/div&gt;
+</programlisting>
+			</example><para>
+				If the blog entry is not found in the database, the <literal>EntryNotFoundException</literal> exception is thrown. We want this exception to result in a 404 error, not a 505, so we annotate the exception class:
+			</para>
+			<example><title></title><programlisting>@ApplicationException(rollback=true)
+ at HttpError(errorCode=HttpServletResponse.SC_NOT_FOUND)
+public class EntryNotFoundException extends Exception
+{
+   EntryNotFoundException(String id)
+   {
+      super("entry not found: " + id);
+   }
+}
+</programlisting>
+			</example><para>
+				An alternative implementation of the example does not use the parameter in the method binding:
+			</para>
+			<example><title></title><programlisting>@Name("entryAction")
+ at Scope(STATELESS)
+public class EntryAction
+{
+   @In(create=true) 
+   private Blog blog;
+   
+   @In @Out
+   private BlogEntry blogEntry;
+   
+   public void loadBlogEntry() throws EntryNotFoundException
+   {
+      blogEntry = blog.getBlogEntry( blogEntry.getId() );
+      if (blogEntry==null) throw new EntryNotFoundException(id);
+   }
+   
+}
+</programlisting>
+<programlisting>&lt;pages&gt;
+   ...
+
+   &lt;page view-id="/entry.xhtml" action="#{entryAction.loadBlogEntry}"&gt;
+      &lt;param name="blogEntryId" value="#{blogEntry.id}"/&gt;
+   &lt;/page&gt;
+   
+   ...
+&lt;/pages&gt;
+</programlisting>
+			</example><para>
+				It is a matter of personal choice, which implementation you prefer.
+			</para>
+		</section>
+
+	</section>
+	<!--
+	<section id="Seam_Reference_Guide-Seam_Tutorial-Running_the_Seam_examples_in_JBoss_using_the_JSF_1.2_RI">
+		<title>Running the Seam examples in JBoss using the JSF 1.2 RI</title>
+		<para>
+			JBoss AS 4.0 ships with the Apache MyFaces implementation of JSF 1.1. After many months of waiting, there is <emphasis>still</emphasis> no implementation of JSF 1.2 from MyFaces. For this and other reasons, JBoss AS 4.2 will embed the JSF 1.2 Reference Implementation by default. Soon after the release of 4.2, we will migrate the Seam examples to JSF 1.2.
+		</para>
+		<para>
+			For those who can&#39;t wait, Seam is already compatible with JSF 1.2, and it&#39;s easy to get the Seam examples running with JSF 1.2 in JBoss 4.0.5. Let&#39;s start with the famous booking example:
+		</para>
+		<itemizedlist>
+			<listitem>
+				<para>
+					copy <literal>jsf-api.jar</literal>, <literal>jsf-impl.jar</literal>, <literal>el-api.jar</literal>, <literal>el-ri.jar</literal> to <literal>server/default/deploy/tomcat/jbossweb-tomcat55.sar/jsf-libs</literal>.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					delete <literal>myfaces-api.jar</literal> and <literal>myfaces-impl.jar</literal> from <literal>server/default/deploy/tomcat/jbossweb-tomcat55.sar/jsf-libs</literal>.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					edit <literal>server/default/deploy/tomcat/jbossweb-tomcat55.sar/conf/web.xml</literal>, replacing <literal>myfaces-impl.jar</literal> with <literal>jsf-impl.jar</literal>.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					edit <literal>examples/booking/resources/WEB-INF/web.xml</literal>, deleting the MyFaces listener, uncommenting the RI listener
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					edit <literal>examples/booking/resources/WEB-INF/faces-config.xml</literal>, uncommenting the lines that install the <literal>SeamELResolver</literal> using the new JSF 1.2 XML schema declaration.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					edit <literal>examples/booking/resources/META-INF/application.xml</literal>, deleting the lines that declare <literal>el-api.jar</literal> and <literal>el-impl.jar</literal> as Java modules.
+				</para>
+			</listitem>
+		</itemizedlist>
+		<para>
+			Restart JBoss, and type <literal>ant</literal> in the <literal>examples/booking</literal> directory.
+		</para>
+	</section>
+	-->
+
+</chapter>
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Validation.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Validation.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Validation.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,232 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Seam_Reference_Guide-JSF_form_validation_in_Seam">
+	<title>JSF form validation in Seam</title>
+	<para>
+		In plain JSF, validation is defined in the view:
+	</para>
+<programlisting>&lt;h:form&gt;
+    &lt;h:messages/&gt;
+
+    &lt;div&gt;
+        Country:
+        &lt;h:inputText value="#{location.country}" required="true"&gt;
+            &lt;my:validateCountry/&gt;
+        &lt;/h:inputText&gt;
+    &lt;/div&gt;
+    
+    &lt;div&gt;
+        Zip code:
+        &lt;h:inputText value="#{location.zip}" required="true"&gt;
+            &lt;my:validateZip/&gt;
+        &lt;/h:inputText&gt;
+    &lt;/div&gt;
+
+    &lt;h:commandButton/&gt;
+&lt;/h:form&gt;
+</programlisting>
+	<para>
+		In practice, this approach usually violates DRY, since most validation actually enforces constraints that are part of the data model, and exist all the way down to the database schema definition. Seam provides support for model-based constraints defined using Hibernate Validator.
+	</para>
+	<para>
+		Let us start by defining our constraints, on our <literal>Location</literal> class:
+	</para>
+<programlisting>public class Location {
+    private String country;
+    private String zip;
+    
+    @NotNull
+    @Length(max=30)
+    public String getCountry() { return country; }
+    public void setCountry(String c) { country = c; }
+
+    @NotNull
+    @Length(max=6)
+    @Pattern("^\d*$")
+    public String getZip() { return zip; }
+    public void setZip(String z) { zip = z; }
+}
+</programlisting>
+	<para>
+		Well, that is a decent first cut, but in practice it might be more elegant to use custom constraints instead of the ones built into Hibernate Validator:
+	</para>
+<programlisting>public class Location {
+    private String country;
+    private String zip;
+    
+    @NotNull
+    @Country
+    public String getCountry() { return country; }
+    public void setCountry(String c) { country = c; }
+
+    @NotNull
+    @ZipCode
+    public String getZip() { return zip; }
+    public void setZip(String z) { zip = z; }
+}
+</programlisting>
+	<para>
+		Whichever route we take, we no longer need to specify the type of validation to be used in the JSF page. Instead, we can use <literal>&lt;s:validate&gt;</literal> to validate against the constraint defined on the model object.
+	</para>
+<programlisting>&lt;h:form&gt;
+    &lt;h:messages/&gt;
+
+    &lt;div&gt;
+        Country:
+        &lt;h:inputText value="#{location.country}" required="true"&gt;
+            &lt;s:validate/&gt;
+        &lt;/h:inputText&gt;
+    &lt;/div&gt;
+    
+    &lt;div&gt;
+        Zip code:
+        &lt;h:inputText value="#{location.zip}" required="true"&gt;
+            &lt;s:validate/&gt;
+        &lt;/h:inputText&gt;
+    &lt;/div&gt;
+    
+    &lt;h:commandButton/&gt;
+
+&lt;/h:form&gt;
+</programlisting>
+	<para>
+		<emphasis>Note:</emphasis> specifying <literal>@NotNull</literal> on the model does <emphasis>not</emphasis> eliminate the requirement for <literal>required="true"</literal> to appear on the control! This is due to a limitation of the JSF validation architecture.
+	</para>
+	<para>
+		This approach <emphasis>defines</emphasis> constraints on the model, and <emphasis>presents</emphasis> constraint violations in the view&mdash;a significantly better design.
+	</para>
+	<para>
+		However, it is not much less verbose than what we started with, so let us try <literal>&lt;s:validateAll&gt;</literal>:
+	</para>
+<programlisting>&lt;h:form&gt;
+    
+    &lt;h:messages/&gt;
+
+    &lt;s:validateAll&gt;
+
+        &lt;div&gt;
+            Country:
+            &lt;h:inputText value="#{location.country}" required="true"/&gt;
+        &lt;/div&gt;
+
+        &lt;div&gt;
+            Zip code:
+            &lt;h:inputText value="#{location.zip}" required="true"/&gt;
+        &lt;/div&gt;
+
+        &lt;h:commandButton/&gt;
+
+    &lt;/s:validateAll&gt;
+
+&lt;/h:form&gt;
+</programlisting>
+	<para>
+		This tag simply adds an <literal>&lt;s:validate&gt;</literal> to every input in the form. For a large form, it can save a lot of typing.
+	</para>
+	<para>
+		Now we need to do something about displaying feedback to the user when validation fails. Currently we are displaying all messages at the top of the form. What we would really like to do is display the message next to the field with the error (this is possible in plain JSF), highlight the field and label (this is not possible) and, for good measure, display some image next the the field (also not possible). We also want to display a little colored asterisk next to the label for each required form field.
+	</para>
+	<para>
+		That is quite a lot of functionality we need for each field of our form. We would not want to have to specify higlighting and the layout of the image, message and input field for every field on the form. So, instead, we will specify the common layout in a facelets template:
+	</para>
+<programlisting>&lt;ui:composition xmlns="http://www.w3.org/1999/xhtml"
+                xmlns:ui="http://java.sun.com/jsf/facelets"
+                xmlns:h="http://java.sun.com/jsf/html"
+                xmlns:f="http://java.sun.com/jsf/core"
+                xmlns:s="http://jboss.com/products/seam/taglib"&gt;
+                 
+    &lt;div&gt;
+    
+        &lt;s:label styleClass="#{invalid?&#39;error&#39;:&#39;&#39;}"&gt;
+            &lt;ui:insert name="label"/&gt;
+            &lt;s:span styleClass="required" rendered="#{required}"&gt;*&lt;/s:span&gt;
+        &lt;/s:label&gt;
+        
+        &lt;span class="#{invalid?&#39;error&#39;:&#39;&#39;}"&gt;
+            &lt;h:graphicImage src="img/error.gif" rendered="#{invalid}"/&gt;
+            &lt;s:validateAll&gt;
+                &lt;ui:insert/&gt;
+            &lt;/s:validateAll&gt;
+        &lt;/span&gt;
+        
+        &lt;s:message styleClass="error"/&gt;
+        
+    &lt;/div&gt;
+    
+&lt;/ui:composition&gt;
+</programlisting>
+	<para>
+		We can include this template for each of our form fields using <literal>&lt;s:decorate&gt;</literal>.
+	</para>
+<programlisting>&lt;h:form&gt;
+
+    &lt;h:messages globalOnly="true"/&gt;
+
+    &lt;s:decorate template="edit.xhtml"&gt;
+        &lt;ui:define name="label"&gt;Country:&lt;/ui:define&gt;
+        &lt;h:inputText value="#{location.country}" required="true"/&gt;
+    &lt;/s:decorate&gt;
+    
+    &lt;s:decorate template="edit.xhtml"&gt;
+        &lt;ui:define name="label"&gt;Zip code:&lt;/ui:define&gt;
+        &lt;h:inputText value="#{location.zip}" required="true"/&gt;
+    &lt;/s:decorate&gt;
+
+    &lt;h:commandButton/&gt;
+
+&lt;/h:form&gt;
+</programlisting>
+	<para>
+		Finally, we can use Ajax4JSF to display validation messages as the user is navigating around the form:
+	</para>
+<programlisting>&lt;h:form&gt;
+
+    &lt;h:messages globalOnly="true"/&gt;
+
+    &lt;s:decorate id="countryDecoration" template="edit.xhtml"&gt;
+        &lt;ui:define name="label"&gt;Country:&lt;/ui:define&gt;
+        &lt;h:inputText value="#{location.country}" required="true"&gt;
+            &lt;a:support event="onblur" reRender="countryDecoration"/&gt;
+        &lt;/h:inputText&gt;
+    &lt;/s:decorate&gt;
+    
+    &lt;s:decorate id="zipDecoration" template="edit.xhtml"&gt;
+        &lt;ui:define name="label"&gt;Zip code:&lt;/ui:define&gt;
+        &lt;h:inputText value="#{location.zip}" required="true"&gt;
+            &lt;a:support event="onblur" reRender="zipDecoration"/&gt;
+        &lt;/h:inputText&gt;
+    &lt;/s:decorate&gt;
+
+    &lt;h:commandButton/&gt;
+
+&lt;/h:form&gt;
+</programlisting>
+	<para>
+		As a final note, it would be better style to define explicit IDs for important controls on the page, especially if you want to do automated testing for the UI, using some toolkit like Selenium. If you do not provide explicit ids, JSF will generate them, but the generated values will change if you change anything on the page.
+	</para>
+<programlisting>&lt;h:form id="form"&gt;
+
+    &lt;h:messages globalOnly="true"/&gt;
+
+    &lt;s:decorate id="countryDecoration" template="edit.xhtml"&gt;
+        &lt;ui:define name="label"&gt;Country:&lt;/ui:define&gt;
+        &lt;h:inputText id="country" value="#{location.country}" required="true"&gt;
+            &lt;a:support event="onblur" reRender="countryDecoration"/&gt;
+        &lt;/h:inputText&gt;
+    &lt;/s:decorate&gt;
+    
+    &lt;s:decorate id="zipDecoration" template="edit.xhtml"&gt;
+        &lt;ui:define name="label"&gt;Zip code:&lt;/ui:define&gt;
+        &lt;h:inputText id="zip" value="#{location.zip}" required="true"&gt;
+            &lt;a:support event="onblur" reRender="zipDecoration"/&gt;
+        &lt;/h:inputText&gt;
+    &lt;/s:decorate&gt;
+
+    &lt;h:commandButton/&gt;
+
+&lt;/h:form&gt;
+</programlisting>
+</chapter>
+


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Validation.xml
___________________________________________________________________
Name: svn:executable
   + *

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Xml.xml
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Xml.xml	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Xml.xml	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,454 @@
+<?xml version='1.0'?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="Seam_Reference_Guide-Configuring_Seam_components">
+	<title>Configuring Seam components</title>
+	<para>
+		The philosophy of minimizing XML-based configuration is extremely strong in Seam. Nevertheless, there are various reasons why we might want to configure a Seam component using XML: to isolate deployment-specific information from the Java code, to enable the creation of re-usable frameworks, to configure Seam&#39;s built-in functionality, etc. Seam provides two basic approaches to configuring components: configuration via property settings in a properties file or <literal>web.xml</literal>, and configuration via <literal>components.xml</literal>.
+	</para>
+	<sect1 id="Seam_Reference_Guide-Configuring_Seam_components-Configuring_components_via_property_settings"><title>Configuring components via property settings</title>
+	<para>
+		Seam components may be provided with configuration properties either via servlet context parameters, or via a properties file named <literal>seam.properties</literal> in the root of the classpath.
+	</para>
+	<para>
+		The configurable Seam component must expose JavaBeans-style property setter methods for the configurable attributes. If a seam component named <literal>com.jboss.myapp.settings</literal> has a setter method named <literal>setLocale()</literal>, we can provide a property named <literal>com.jboss.myapp.settings.locale</literal> in the <literal>seam.properties</literal> file or as a servlet context parameter, and Seam will set the value of the <literal>locale</literal> attribute whenever it instantiates the component.
+	</para>
+	<para>
+		The same mechanism is used to configure Seam itself. For example, to set the conversation timeout, we provide a value for <literal>org.jboss.seam.core.manager.conversationTimeout</literal> in <literal>web.xml</literal> or <literal>seam.properties</literal>. (There is a built-in Seam component named <literal>org.jboss.seam.core.manager</literal> with a setter method named <literal>setConversationTimeout()</literal>.)
+	</para>
+	</sect1><sect1 id="Seam_Reference_Guide-Configuring_Seam_components-Configuring_components_via_components.xml"><title>Configuring components via components.xml</title>
+	<para>
+		The <literal>components.xml</literal> file is a bit more powerful than property settings. It lets you:
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				Configure components that have been installed automatically&mdash;including both built-in components, and application components that have been annotated with the <literal>@Name</literal> annotation and picked up by Seam&#39;s deployment scanner.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Install classes with no <literal>@Name</literal> annotation as Seam components&mdash;this is most useful for certain kinds of infrastructural components which can be installed multiple times different names (for example Seam-managed persistence contexts).
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Install components that <emphasis>do</emphasis> have a <literal>@Name</literal> annotation but are not installed by default because of an <literal>@Install</literal> annotation that indicates the component should not be installed.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Override the scope of a component.
+			</para>
+		</listitem>
+	</itemizedlist>
+	<para>
+		A <literal>components.xml</literal> file may appear in one of three different places:
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				The <literal>WEB-INF</literal> directory of a <literal>war</literal>.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				The <literal>META-INF</literal> directory of a <literal>jar</literal>.
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				Any directory of a <literal>jar</literal> that contains classes with an <literal>@Name</literal> annotation.
+			</para>
+		</listitem>
+	</itemizedlist>
+	<para>
+		Usually, Seam components are installed when the deployment scanner discovers a class with a <literal>@Name</literal> annotation sitting in an archive with a <literal>seam.properties</literal> file or a <literal>META-INF/components.xml</literal> file. (Unless the component has an <literal>@Install</literal> annotation indicating it should not be installed by default.) The <literal>components.xml</literal> file lets us handle special cases where we need to override the annotations.
+	</para>
+	<para>
+		For example, the following <literal>components.xml</literal> file installs the JBoss Embeddable EJB3 container:
+	</para>
+<programlisting>&lt;components xmlns="http://jboss.com/products/seam/components" 
+            xmlns:core="http://jboss.com/products/seam/core"&gt;
+    &lt;core:ejb/&gt;
+&lt;/components&gt;
+</programlisting>
+	<para>
+		This example does the same thing:
+	</para>
+<programlisting>&lt;components&gt;
+    &lt;component class="org.jboss.seam.core.Ejb"/&gt;
+&lt;/components&gt;
+</programlisting>
+	<para>
+		This one installs and configures two different Seam-managed persistence contexts:
+	</para>
+<programlisting>&lt;components xmlns="http://jboss.com/products/seam/components" 
+            xmlns:core="http://jboss.com/products/seam/core"
+
+    &lt;core:managed-persistence-context name="customerDatabase"
+                persistence-unit-jndi-name="java:/customerEntityManagerFactory"/&gt;
+        
+    &lt;core:managed-persistence-context name="accountingDatabase"
+                persistence-unit-jndi-name="java:/accountingEntityManagerFactory"/&gt;            
+
+&lt;/components&gt;
+</programlisting>
+	<para>
+		As does this one:
+	</para>
+<programlisting>&lt;components&gt;
+    &lt;component name="customerDatabase" 
+              class="org.jboss.seam.core.ManagedPersistenceContext"&gt;
+        &lt;property name="persistenceUnitJndiName"&gt;java:/customerEntityManagerFactory&lt;/property&gt;
+    &lt;/component&gt;
+    
+    &lt;component name="accountingDatabase"
+              class="org.jboss.seam.core.ManagedPersistenceContext"&gt;
+        &lt;property name="persistenceUnitJndiName"&gt;java:/accountingEntityManagerFactory&lt;/property&gt;
+    &lt;/component&gt;
+&lt;/components&gt;
+</programlisting>
+	<para>
+		This example creates a session-scoped Seam-managed persistence context (this is not recommended in practice):
+	</para>
+<programlisting>&lt;components xmlns="http://jboss.com/products/seam/components" 
+            xmlns:core="http://jboss.com/products/seam/core"
+
+  &lt;core:managed-persistence-context name="productDatabase" 
+                                   scope="session"
+              persistence-unit-jndi-name="java:/productEntityManagerFactory"/&gt;        
+
+&lt;/components&gt;
+</programlisting>
+<programlisting>&lt;components&gt;
+            
+    &lt;component name="productDatabase"
+              scope="session"
+              class="org.jboss.seam.core.ManagedPersistenceContext"&gt;
+        &lt;property name="persistenceUnitJndiName"&gt;java:/productEntityManagerFactory&lt;/property&gt;
+    &lt;/component&gt;
+
+&lt;/components&gt;
+</programlisting>
+	<para>
+		It is common to use the <literal>auto-create</literal> option for infrastructural objects like persistence contexts, which saves you from having to explicitly specify <literal>create=true</literal> when you use the <literal>@In</literal> annotation.
+	</para>
+<programlisting>&lt;components xmlns="http://jboss.com/products/seam/components" 
+            xmlns:core="http://jboss.com/products/seam/core"
+
+  &lt;core:managed-persistence-context name="productDatabase" 
+                             auto-create="true"
+              persistence-unit-jndi-name="java:/productEntityManagerFactory"/&gt;        
+
+&lt;/components&gt;
+</programlisting>
+<programlisting>&lt;components&gt;
+            
+    &lt;component name="productDatabase"
+        auto-create="true"
+              class="org.jboss.seam.core.ManagedPersistenceContext"&gt;
+        &lt;property name="persistenceUnitJndiName"&gt;java:/productEntityManagerFactory&lt;/property&gt;
+    &lt;/component&gt;
+
+&lt;/components&gt;
+</programlisting>
+	<para>
+		The <literal>&lt;factory&gt;</literal> declaration lets you specify a value or method binding expression that will be evaluated to initialize the value of a context variable when it is first referenced.
+	</para>
+<programlisting>&lt;components&gt;
+
+    &lt;factory name="contact" method="#{contactManager.loadContact}" scope="CONVERSATION"/&gt;
+
+&lt;/components&gt;
+</programlisting>
+	<para>
+		You can create an <emphasis>alias</emphasis> (a second name) for a Seam component like so:
+	</para>
+<programlisting>&lt;components&gt;
+
+    &lt;factory name="user" value="#{actor}" scope="STATELESS"/&gt;
+
+&lt;/components&gt;
+</programlisting>
+	<para>
+		You can even create an <emphasis>alias</emphasis> for a commonly used expression:
+	</para>
+<programlisting>&lt;components&gt;
+
+    &lt;factory name="contact" value="#{contactManager.contact}" scope="STATELESS"/&gt;
+
+&lt;/components&gt;
+</programlisting>
+	<para>
+		It is especially common to see the use of <literal>auto-create="true"</literal> with the <literal>&lt;factory&gt;</literal> declaration:
+	</para>
+<programlisting>&lt;components&gt;
+
+    &lt;factory name="session" value="#{entityManager.delegate}" scope="STATELESS" 
+       auto-create="true"/&gt;
+
+&lt;/components&gt;
+</programlisting>
+	<para>
+		Sometimes we want to reuse the same <literal>components.xml</literal> file with minor changes during both deployment and testing. Seam lets you place wildcards of the form <literal>@wildcard@</literal> in the <literal>components.xml</literal> file which can be replaced either by your Ant build script (at deployment time) or by providing a file named <literal>components.properties</literal> in the classpath (at development time). You will see this approach used in the Seam examples.
+	</para>
+	</sect1><sect1 id="Seam_Reference_Guide-Configuring_Seam_components-Fine_grained_configuration_files"><title>Fine-grained configuration files</title>
+	<para>
+		If you have a large number of components that need to be configured in XML, it makes much more sense to split up the information in <literal>components.xml</literal> into many small files. Seam lets you put configuration for a class named, for example, <literal>com.helloworld.Hello</literal> in a resource named <literal>com/helloworld/Hello.component.xml</literal>. (You might be familiar with this pattern, since it is the same one we use in Hibernate.) The root element of the file may be either a <literal>&lt;components&gt;</literal> or <literal>&lt;component&gt;</literal> element.
+	</para>
+	<para>
+		The first option lets you define multiple components in the file:
+	</para>
+<programlisting>&lt;components&gt;
+    &lt;component class="com.helloworld.Hello" name="hello"&gt;
+        &lt;property name="name"&gt;#{user.name}&lt;/property&gt;
+    &lt;/component&gt;
+    &lt;factory name="message" value="#{hello.message}"/&gt;
+&lt;/components&gt;
+</programlisting>
+	<para>
+		The second option only lets you define or configure one component, but is less noisy:
+	</para>
+<programlisting>&lt;component name="hello"&gt;
+    &lt;property name="name"&gt;#{user.name}&lt;/property&gt;
+&lt;/component&gt;
+</programlisting>
+	<para>
+		In the second option, the class name is implied by the file in which the component definition appears.
+	</para>
+	<para>
+		Alternatively, you may put configuration for all classes in the <literal>com.helloworld</literal> package in <literal>com/helloworld/components.xml</literal>.
+	</para>
+	</sect1><sect1 id="Seam_Reference_Guide-Configuring_Seam_components-Configurable_property_types"><title>Configurable property types</title>
+	<para>
+		Properties of string, primitive or primitive wrapper type may be configured just as you would expect:
+	</para>
+<programlisting>org.jboss.seam.core.manager.conversationTimeout 60000</programlisting>
+<programlisting>&lt;core:manager conversation-timeout="60000"/&gt;</programlisting>
+<programlisting>&lt;component name="org.jboss.seam.core.manager"&gt;
+    &lt;property name="conversationTimeout"&gt;60000&lt;/property&gt;
+&lt;/component&gt;
+</programlisting>
+	<para>
+		Arrays, sets and lists of strings or primitives are also supported:
+	</para>
+<programlisting>org.jboss.seam.core.jbpm.processDefinitions order.jpdl.xml, return.jpdl.xml, inventory.jpdl.xml</programlisting>
+<programlisting>&lt;core:jbpm&gt;
+    &lt;core:process-definitions&gt;
+        &lt;value&gt;order.jpdl.xml&lt;/value&gt;
+        &lt;value&gt;return.jpdl.xml&lt;/value&gt;
+        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;
+    &lt;/core:process-definitions&gt;
+&lt;/core:jbpm&gt;
+</programlisting>
+<programlisting>&lt;component name="org.jboss.seam.core.jbpm"&gt;
+    &lt;property name="processDefinitions"&gt;
+        &lt;value&gt;order.jpdl.xml&lt;/value&gt;
+        &lt;value&gt;return.jpdl.xml&lt;/value&gt;
+        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;
+    &lt;/property&gt;
+&lt;/component&gt;
+</programlisting>
+	<para>
+		Even maps with String-valued keys and string or primitive values are supported:
+	</para>
+<programlisting>&lt;component name="issueEditor"&gt;
+    &lt;property name="issueStatuses"&gt;
+        &lt;key&gt;open&lt;/key&gt; &lt;value&gt;open issue&lt;/value&gt;
+        &lt;key&gt;resolved&lt;/key&gt; &lt;value&gt;issue resolved by developer&lt;/value&gt;
+        &lt;key&gt;closed&lt;/key&gt; &lt;value&gt;resolution accepted by user&lt;/value&gt;
+    &lt;/property&gt;
+&lt;/component&gt;
+</programlisting>
+	<para>
+		Finally, you may wire together components using a value-binding expression. Note that this is quite different to injection using <literal>@In</literal>, since it happens at component instantiation time instead of invocation time. It is therefore much more similar to the dependency injection facilities offered by traditional IoC containers like JSF or Spring.
+	</para>
+<programlisting>&lt;drools:managed-working-memory name="policyPricingWorkingMemory" rule-base="#{policyPricingRules}"/&gt;</programlisting>
+<programlisting>&lt;component name="policyPricingWorkingMemory"
+          class="org.jboss.seam.drools.ManagedWorkingMemory"&gt;
+    &lt;property name="ruleBase"&gt;#{policyPricingRules}&lt;/property&gt;
+&lt;/component&gt;
+</programlisting>
+	</sect1><sect1 id="Seam_Reference_Guide-Configuring_Seam_components-Using_XML_Namespaces"><title>Using XML Namespaces</title>
+	<para>
+		Throughout the examples, there have been two competing ways of declaring components: with and without the use of XML namespaces. The following shows a typical <literal>components.xml</literal> file without namespaces. It uses the Seam Components DTD:
+	</para>
+<programlisting>&lt;?xml version="1.0" encoding="UTF-8"&gt;
+&lt;!DOCTYPE components PUBLIC "-//JBoss/Seam Component Configuration DTD 1.2//EN"
+                            "http://jboss.com/products/seam/components-1.2.dtd"&gt;
+&lt;components&gt;
+
+    &lt;component class="org.jboss.seam.core.init"&gt;
+        &lt;property name="debug"&gt;true&lt;/property&gt;
+        &lt;property name="jndiPattern"&gt;@jndiPattern@&lt;/property&gt;
+    &lt;/component&gt;
+
+    &lt;component name="org.jboss.sean.core.ejb" installed="@embeddedEjb@" /&gt;
+    
+&lt;/components&gt;
+</programlisting>
+	<para>
+		As you can see, this is somewhat verbose. Even worse, the component and attribute names cannot be validated at development time.
+	</para>
+	<para>
+		The namespaced version looks like this:
+	</para>
+<programlisting>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+&lt;components xmlns="http://jboss.com/products/seam/components"
+            xmlns:core="http://jboss.com/products/seam/core"
+            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+            xsi:schemaLocation=
+                "http://jboss.com/products/seam/core 
+                                        http://jboss.com/products/seam/core-1.2.xsd 
+                 http://jboss.com/products/seam/components 
+                                        http://jboss.com/products/seam/components-1.2.xsd"&gt;
+
+    &lt;core:init debug="true" jndi-pattern="@jndiPattern@"/&gt;
+
+    &lt;core:ejb installed="@embeddedEjb@"/&gt;
+
+&lt;/components&gt;
+</programlisting>
+	<para>
+		Even though the schema declarations are verbose, the actual XML content is lean and easy to understand. The schemas provide detailed information about each component and the attributes available, allowing XML editors to offer intelligent autocomplete. The use of namespaced elements makes generating and maintaining correct <literal>components.xml</literal> files much simpler.
+	</para>
+	<para>
+		Now, this works great for the built-in Seam components, but what about user components? There are two options. First, Seam supports mixing the two models, allowing the use of the generic <literal>&lt;component&gt;</literal> declarations for user components, along with namespaced declarations for built-in components. But even better, Seam allows you to quickly declare namespaces for your own components.
+	</para>
+	<para>
+		Any Java package can be associated with an XML namespace by annotating the package with the <literal>@Namespace</literal> annotation. (Package-level annotations are declared in a file named <literal>package-info.java</literal> in the package directory.) Here is an example from the seampay demo:
+	</para>
+<programlisting>@Namespace(value="http://jboss.com/products/seam/examples/seampay")
+package org.jboss.seam.example.seampay;
+
+import org.jboss.seam.annotations.Namespace;
+</programlisting>
+	<para>
+		That is all you need to do to use the namespaced style in <literal>components.xml</literal>! Now we can write:
+	</para>
+<programlisting>&lt;components xmlns="http://jboss.com/products/seam/components"
+            xmlns:pay="http://jboss.com/products/seam/examples/seampay"
+            ... &gt;
+
+    &lt;pay:payment-home new-instance="#{newPayment}"
+                      created-message="Created a new payment to #{newPayment.payee}" /&gt;
+
+    &lt;pay:payment name="newPayment"
+                 payee="Somebody"
+                 account="#{selectedAccount}"
+                 payment-date="#{currentDatetime}"
+                 created-date="#{currentDatetime}" /&gt;
+     ...
+&lt;/components&gt;
+</programlisting>
+	<para>
+		Or:
+	</para>
+<programlisting>&lt;components xmlns="http://jboss.com/products/seam/components"
+            xmlns:pay="http://jboss.com/products/seam/examples/seampay"
+            ... &gt;
+
+    &lt;pay:payment-home&gt;
+        &lt;pay:new-instance&gt;"#{newPayment}"&lt;/pay:new-instance&gt;
+        &lt;pay:created-message&gt;Created a new payment to #{newPayment.payee}&lt;/pay:created-message&gt;
+    &lt;/pay:payment-home&gt;
+    
+    &lt;pay:payment name="newPayment"&gt;
+        &lt;pay:payee&gt;Somebody"&lt;/pay:payee&gt;
+        &lt;pay:account&gt;#{selectedAccount}&lt;/pay:account&gt;
+        &lt;pay:payment-date&gt;#{currentDatetime}&lt;/pay:payment-date&gt;
+        &lt;pay:created-date&gt;#{currentDatetime}&lt;/pay:created-date&gt;
+     &lt;/pay:payment&gt;
+     ...
+&lt;/components&gt;
+</programlisting>
+	<para>
+		These examples illustrate the two usage models of a namespaced element. In the first declaration, the <literal>&lt;pay:payment-home&gt;</literal> references the <literal>paymentHome</literal> component:
+	</para>
+<programlisting>package org.jboss.seam.example.seampay;
+...
+ at Name("paymentHome")
+public class PaymentController
+    extends EntityHome&lt;Payment&gt;
+{
+    ... 
+}
+</programlisting>
+	<para>
+		The element name is the hyphenated form of the component name. The attributes of the element are the hyphenated form of the property names.
+	</para>
+	<para>
+		In the second declaration, the <literal>&lt;pay:payment&gt;</literal> element refers to the <literal>Payment</literal> class in the <literal>org.jboss.seam.example.seampay</literal> package. In this case <literal>Payment</literal> is an entity that is being declared as a Seam component:
+	</para>
+<programlisting>package org.jboss.seam.example.seampay;
+...
+ at Entity
+public class Payment
+    implements Serializable
+{
+    ...
+}
+</programlisting>
+	<para>
+		If we want validation and autocompletion to work for user-defined components, we will need a schema. Seam does not yet provide a mechanism to automatically generate a schema for a set of components, so it is necessary to generate one manually. The schema definitions for the standard Seam packages can be used for guidance.
+	</para>
+	<para>
+		The following are the the namespaces used by Seam:
+	</para>
+	<itemizedlist>
+		<listitem>
+			<para>
+				components &mdash; <literal>http://jboss.com/products/seam/components</literal>
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				core &mdash; <literal>http://jboss.com/products/seam/core</literal>
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				drools &mdash; <literal>http://jboss.com/products/seam/drools</literal>
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				framework &mdash; <literal>http://jboss.com/products/seam/framework</literal>
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				jms &mdash; <literal>http://jboss.com/products/seam/jms</literal>
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				remoting &mdash; <literal>http://jboss.com/products/seam/remoting</literal>
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				theme &mdash; <literal>http://jboss.com/products/seam/theme</literal>
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				security &mdash; <literal>http://jboss.com/products/seam/security</literal>
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				mail &mdash; <literal>http://jboss.com/products/seam/mail</literal>
+			</para>
+		</listitem>
+		<listitem>
+			<para>
+				web &mdash; <literal>http://jboss.com/products/seam/web</literal>
+			</para>
+		</listitem>
+	</itemizedlist>
+	</sect1>
+</chapter>
+


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/Xml.xml
___________________________________________________________________
Name: svn:executable
   + *

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/architecture.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/architecture.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/blog.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/blog.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/booking.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/booking.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/bpmd.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/bpmd.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/bpmpfv.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/bpmpfv.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/breadcrumbs.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/breadcrumbs.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/codegendropdown.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/codegendropdown.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/codegenmaintab.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/codegenmaintab.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/codegenselectseam.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/codegenselectseam.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/consolecfgwizard.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/consolecfgwizard.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/consoleoutline-before-reveng.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/consoleoutline-before-reveng.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/controls-seamtext.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/controls-seamtext.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/controls-selectdate.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/controls-selectdate.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/controls-selectdatecss.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/controls-selectdatecss.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/debug.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/debug.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/dvdsearch.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/dvdsearch.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/dvdtasks.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/dvdtasks.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/e-ejb3.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/e-ejb3.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/ee5.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/ee5.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/hibernate-ee.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/hibernate-ee.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/hibernate-mc.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/hibernate-mc.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/hibernatecfgwizard.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/hibernatecfgwizard.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/icon.svg
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/icon.svg	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/icon.svg	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,3936 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:ns="http://ns.adobe.com/AdobeSVGViewerExtensions/3/"
+   xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.0"
+   width="32"
+   height="32"
+   id="svg3017"
+   sodipodi:version="0.32"
+   inkscape:version="0.44+devel"
+   sodipodi:docname="book.svg"
+   sodipodi:docbase="/home/andy/Desktop">
+  <metadata
+     id="metadata489">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="480"
+     inkscape:window-width="858"
+     inkscape:pageshadow="0"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     inkscape:zoom="1"
+     inkscape:cx="16"
+     inkscape:cy="15.944056"
+     inkscape:window-x="0"
+     inkscape:window-y="33"
+     inkscape:current-layer="svg3017" />
+  <defs
+     id="defs3019">
+    <linearGradient
+       id="linearGradient2381">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop2383" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="stop2385" />
+    </linearGradient>
+    <linearGradient
+       x1="415.73831"
+       y1="11.854"
+       x2="418.13361"
+       y2="18.8104"
+       id="XMLID_1758_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8362,0.5206,-1.1904,0.992,147.62,-30.9374)">
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="0"
+         id="stop3903" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop3905" />
+      <a:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="500.70749"
+       y1="-13.2441"
+       x2="513.46442"
+       y2="-2.1547"
+       id="XMLID_1757_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop3890" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop3892" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="XMLID_1755_">
+      <use
+         id="use3874"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_343_" />
+    </clipPath>
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop3877" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop3879" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop3881" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop3883" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="471.0806"
+       y1="201.07761"
+       x2="481.91711"
+       y2="210.4977"
+       id="XMLID_1754_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#6498c1;stop-opacity:1"
+         offset="0.005618"
+         id="stop3863" />
+      <stop
+         style="stop-color:#79a9cc;stop-opacity:1"
+         offset="0.2332"
+         id="stop3865" />
+      <stop
+         style="stop-color:#a4cde2;stop-opacity:1"
+         offset="0.74049997"
+         id="stop3867" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="1"
+         id="stop3869" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="5.618000e-003" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="0.4438" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="XMLID_1753_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop3851" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop3853" />
+      <a:midPointStop
+         style="stop-color:#B2B2B2"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B2B2B2"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="XMLID_1751_">
+      <use
+         id="use3837"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_338_" />
+    </clipPath>
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop3840" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop3842" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop3844" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop3846" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="468.2915"
+       y1="204.7612"
+       x2="479.39871"
+       y2="214.4166"
+       id="XMLID_1750_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop3830" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop3832" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop3818" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop3820" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="501.0903"
+       y1="-19.2544"
+       x2="531.85413"
+       y2="0.72390002"
+       id="XMLID_1748_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop3803" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop3805" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop3807" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop3809" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="XMLID_2275_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop9947" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop9949" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop9951" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop9953" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="XMLID_2273_">
+      <use
+         id="use9933"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_960_" />
+    </clipPath>
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="XMLID_2274_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop9936" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop9938" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop9940" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop9942" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="478.21341"
+       y1="-131.9297"
+       x2="469.85818"
+       y2="-140.28481"
+       id="XMLID_2272_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.5592,0.829,-0.829,0.5592,101.3357,-104.791)">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop9917" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop9919" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop9921" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop9923" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       style="overflow:visible"
+       id="TriangleInM">
+      <path
+         d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z "
+         transform="scale(-0.4,-0.4)"
+         style="fill:#5c5c4f"
+         id="path3197" />
+    </marker>
+    <linearGradient
+       x1="200.7363"
+       y1="100.4028"
+       x2="211.99519"
+       y2="89.143997"
+       id="XMLID_3298_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#bfbfbf;stop-opacity:1"
+         offset="0"
+         id="stop20103" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop20105" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#BFBFBF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#BFBFBF" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#F2F2F2" />
+    </linearGradient>
+    <linearGradient
+       x1="200.7363"
+       y1="100.4028"
+       x2="211.99519"
+       y2="89.143997"
+       id="linearGradient36592"
+       xlink:href="#XMLID_3298_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="181.2925"
+       y1="110.8481"
+       x2="192.6369"
+       y2="99.5037"
+       id="XMLID_3297_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="stop20096" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop20098" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="181.2925"
+       y1="110.8481"
+       x2="192.6369"
+       y2="99.5037"
+       id="linearGradient36595"
+       xlink:href="#XMLID_3297_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="211.77589"
+       y1="105.7749"
+       x2="212.6619"
+       y2="108.2092"
+       id="XMLID_3296_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#0f6124;stop-opacity:1"
+         offset="0"
+         id="stop20087" />
+      <stop
+         style="stop-color:#219630;stop-opacity:1"
+         offset="1"
+         id="stop20089" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#0F6124" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#0F6124" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#219630" />
+    </linearGradient>
+    <linearGradient
+       x1="211.77589"
+       y1="105.7749"
+       x2="212.6619"
+       y2="108.2092"
+       id="linearGradient36677"
+       xlink:href="#XMLID_3296_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="208.9834"
+       y1="116.8296"
+       x2="200.0811"
+       y2="96.834602"
+       id="XMLID_3295_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop20076" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.5"
+         id="stop20078" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop20080" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="208.9834"
+       y1="116.8296"
+       x2="200.0811"
+       y2="96.834602"
+       id="linearGradient36604"
+       xlink:href="#XMLID_3295_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="195.5264"
+       y1="97.911102"
+       x2="213.5213"
+       y2="115.9061"
+       id="XMLID_3294_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="0"
+         id="stop20069" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop20071" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="195.5264"
+       y1="97.911102"
+       x2="213.5213"
+       y2="115.9061"
+       id="linearGradient36607"
+       xlink:href="#XMLID_3294_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="186.1938"
+       y1="109.1343"
+       x2="206.6881"
+       y2="88.639999"
+       id="XMLID_3293_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop20056" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.16850001"
+         id="stop20058" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.23029999"
+         id="stop20060" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.2809"
+         id="stop20062" />
+      <stop
+         style="stop-color:#c2c2c2;stop-opacity:1"
+         offset="0.5"
+         id="stop20064" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.1685"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.2303"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.2809"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#C2C2C2" />
+    </linearGradient>
+    <linearGradient
+       x1="186.1938"
+       y1="109.1343"
+       x2="206.6881"
+       y2="88.639999"
+       id="linearGradient36610"
+       xlink:href="#XMLID_3293_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <linearGradient
+       x1="184.8569"
+       y1="112.2676"
+       x2="211.94099"
+       y2="89.541397"
+       id="XMLID_3292_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop20043" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.16850001"
+         id="stop20045" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.23029999"
+         id="stop20047" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0.2809"
+         id="stop20049" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop20051" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.1685"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.2303"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.2809"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="184.8569"
+       y1="112.2676"
+       x2="211.94099"
+       y2="89.541397"
+       id="linearGradient36613"
+       xlink:href="#XMLID_3292_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.029078,0,0,1,-183.2624,-79.44655)" />
+    <marker
+       refX="0"
+       refY="0"
+       orient="auto"
+       style="overflow:visible"
+       id="TriangleOutM">
+      <path
+         d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z "
+         transform="scale(0.4,0.4)"
+         style="fill:#5c5c4f;fill-rule:evenodd;stroke-width:1pt;marker-start:none"
+         id="path3238" />
+    </marker>
+    <linearGradient
+       x1="165.3"
+       y1="99.5"
+       x2="165.3"
+       y2="115.9"
+       id="XMLID_3457_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="0"
+         id="stop8309" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8311" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="1"
+         id="stop8313" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#999999" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#999999" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#B2B2B2" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#B2B2B2" />
+    </linearGradient>
+    <linearGradient
+       x1="165.3"
+       y1="99.5"
+       x2="165.3"
+       y2="115.9"
+       id="lg1997"
+       xlink:href="#XMLID_3457_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="175"
+       y1="99.800003"
+       x2="175"
+       y2="112.5"
+       id="XMLID_3456_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="0"
+         id="stop8300" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="0.60000002"
+         id="stop8302" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="1"
+         id="stop8304" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="0.6"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#191919" />
+    </linearGradient>
+    <linearGradient
+       x1="175"
+       y1="99.800003"
+       x2="175"
+       y2="112.5"
+       id="lg2000"
+       xlink:href="#XMLID_3456_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="168.8"
+       y1="107.1"
+       x2="164.5"
+       y2="110"
+       id="XMLID_3455_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="0"
+         id="stop8291" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="0.69999999"
+         id="stop8293" />
+      <stop
+         style="stop-color:#191919;stop-opacity:1"
+         offset="1"
+         id="stop8295" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.7"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#191919" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#191919" />
+    </linearGradient>
+    <linearGradient
+       x1="168.8"
+       y1="107.1"
+       x2="164.5"
+       y2="110"
+       id="lg2003"
+       xlink:href="#XMLID_3455_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       id="lg63694">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop63696" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="stop63698" />
+    </linearGradient>
+    <linearGradient
+       x1="458"
+       y1="483"
+       x2="465.20001"
+       y2="271.39999"
+       id="lg2006"
+       xlink:href="#lg63694"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(6.3e-2,0,0,6.3e-2,-1.3,-9.8)" />
+    <linearGradient
+       x1="176.3"
+       y1="110.1"
+       x2="158.7"
+       y2="105"
+       id="XMLID_3453_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="0"
+         id="stop8271" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="0.2"
+         id="stop8273" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop8275" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#666666" />
+      <a:midPointstop
+         offset="0.2"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#737373" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="176.3"
+       y1="110.1"
+       x2="158.7"
+       y2="105"
+       id="lg2009"
+       xlink:href="#XMLID_3453_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="173.60001"
+       y1="118.9"
+       x2="172.8"
+       y2="128.2"
+       id="XMLID_3449_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8232" />
+      <stop
+         style="stop-color:#fff95e;stop-opacity:1"
+         offset="0.60000002"
+         id="stop8234" />
+      <stop
+         style="stop-color:#ecd600;stop-opacity:1"
+         offset="1"
+         id="stop8236" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.6"
+         style="stop-color:#FFF95E" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFF95E" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#ECD600" />
+    </linearGradient>
+    <linearGradient
+       x1="173.60001"
+       y1="118.9"
+       x2="172.8"
+       y2="128.2"
+       id="lg2016"
+       xlink:href="#XMLID_3449_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <radialGradient
+       cx="284.60001"
+       cy="172.60001"
+       r="6.5"
+       fx="284.60001"
+       fy="172.60001"
+       id="XMLID_3448_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4,0,0,1.4,-237.3,-126.8)">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8219" />
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8221" />
+      <stop
+         style="stop-color:#c96b00;stop-opacity:1"
+         offset="0.89999998"
+         id="stop8223" />
+      <stop
+         style="stop-color:#9a5500;stop-opacity:1"
+         offset="1"
+         id="stop8225" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.9"
+         style="stop-color:#C96B00" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#C96B00" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#9A5500" />
+    </radialGradient>
+    <radialGradient
+       cx="284.60001"
+       cy="172.60001"
+       r="6.5"
+       fx="284.60001"
+       fy="172.60001"
+       id="rg2020"
+       xlink:href="#XMLID_3448_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.513992,0,0,2.347576,-689.1621,-378.5717)" />
+    <linearGradient
+       x1="158.10001"
+       y1="123"
+       x2="164.2"
+       y2="126.6"
+       id="XMLID_3447_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecd600;stop-opacity:1"
+         offset="0"
+         id="stop8204" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8206" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop8208" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECD600" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECD600" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="158.10001"
+       y1="123"
+       x2="164.2"
+       y2="126.6"
+       id="lg2026"
+       xlink:href="#XMLID_3447_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <radialGradient
+       cx="280.89999"
+       cy="163.7"
+       r="10.1"
+       fx="280.89999"
+       fy="163.7"
+       id="XMLID_3446_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4,0,0,1.4,-237.3,-126.8)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop8197" />
+      <stop
+         style="stop-color:#fff95e;stop-opacity:1"
+         offset="1"
+         id="stop8199" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#FFFFFF" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#FFF95E" />
+    </radialGradient>
+    <radialGradient
+       cx="280.89999"
+       cy="163.7"
+       r="10.1"
+       fx="280.89999"
+       fy="163.7"
+       id="rg2029"
+       xlink:href="#XMLID_3446_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.7,0,0,1.7,-457.5,-266.8)" />
+    <linearGradient
+       x1="156.5"
+       y1="122.7"
+       x2="180.10001"
+       y2="122.7"
+       id="XMLID_3445_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8184" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.2"
+         id="stop8186" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8188" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.40000001"
+         id="stop8190" />
+      <stop
+         style="stop-color:#d68100;stop-opacity:1"
+         offset="1"
+         id="stop8192" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.2"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.4"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#D68100" />
+    </linearGradient>
+    <linearGradient
+       x1="156.5"
+       y1="122.7"
+       x2="180.10001"
+       y2="122.7"
+       id="lg2032"
+       xlink:href="#XMLID_3445_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="156.39999"
+       y1="115.4"
+       x2="180.10001"
+       y2="115.4"
+       id="XMLID_3444_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ecb300;stop-opacity:1"
+         offset="0"
+         id="stop8171" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.2"
+         id="stop8173" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.30000001"
+         id="stop8175" />
+      <stop
+         style="stop-color:#ffe900;stop-opacity:1"
+         offset="0.40000001"
+         id="stop8177" />
+      <stop
+         style="stop-color:#d68100;stop-opacity:1"
+         offset="1"
+         id="stop8179" />
+      <a:midPointstop
+         offset="0"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#ECB300" />
+      <a:midPointstop
+         offset="0.2"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.3"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFFFB3" />
+      <a:midPointstop
+         offset="0.4"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="0.5"
+         style="stop-color:#FFE900" />
+      <a:midPointstop
+         offset="1"
+         style="stop-color:#D68100" />
+    </linearGradient>
+    <linearGradient
+       x1="156.39999"
+       y1="115.4"
+       x2="180.10001"
+       y2="115.4"
+       id="lg2035"
+       xlink:href="#XMLID_3444_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2,0,0,1.2,-175.9,-114.6)" />
+    <linearGradient
+       x1="379.70001"
+       y1="167.89999"
+       x2="383.89999"
+       y2="172.89999"
+       id="lg4286_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s16159" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.1"
+         id="s16161" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="1"
+         id="s16163" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.1" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#737373"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="379.60001"
+       y1="167.8"
+       x2="383.79999"
+       y2="172"
+       id="lg6416"
+       xlink:href="#lg4286_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.622156,0.623859,-0.623859,2.62182,-882.9706,-673.7921)" />
+    <linearGradient
+       x1="384.20001"
+       y1="169.8"
+       x2="384.79999"
+       y2="170.39999"
+       id="lg4285_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="0"
+         id="s16152" />
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="1"
+         id="s16154" />
+      <ns:midPointStop
+         style="stop-color:#737373"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#737373"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#D9D9D9"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="384.20001"
+       y1="169.8"
+       x2="384.79999"
+       y2="170.39999"
+       id="lg6453"
+       xlink:href="#lg4285_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.6,0.6,-0.6,2.6,-883,-673.8)" />
+    <linearGradient
+       x1="380.5"
+       y1="172.60001"
+       x2="382.79999"
+       y2="173.7"
+       id="lg4284_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8,0.2,-0.2,0.8,78.8,38.1)">
+      <stop
+         style="stop-color:gray;stop-opacity:1"
+         offset="0"
+         id="s16145" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="1"
+         id="s16147" />
+      <ns:midPointStop
+         style="stop-color:#808080"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#808080"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#E5E5E5"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="380.5"
+       y1="172.60001"
+       x2="382.79999"
+       y2="173.7"
+       id="lg6456"
+       xlink:href="#lg4284_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.6,0.6,-0.6,2.6,-883,-673.8)" />
+    <radialGradient
+       cx="347.29999"
+       cy="244.5"
+       r="5.1999998"
+       fx="347.29999"
+       fy="244.5"
+       id="lg4282_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
+      <stop
+         style="stop-color:#333;stop-opacity:1"
+         offset="0"
+         id="s16135" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="s16137" />
+      <ns:midPointStop
+         style="stop-color:#333333"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#333333"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#999999"
+         offset="1" />
+    </radialGradient>
+    <linearGradient
+       x1="310.39999"
+       y1="397.70001"
+       x2="310.89999"
+       y2="399.5"
+       id="lg4280_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="0"
+         id="s16111" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.60000002"
+         id="s16113" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="1"
+         id="s16115" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.6" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="310.39999"
+       y1="397.70001"
+       x2="310.89999"
+       y2="399.5"
+       id="lg6467"
+       xlink:href="#lg4280_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
+    <linearGradient
+       x1="310.89999"
+       y1="395.79999"
+       x2="313.29999"
+       y2="403.10001"
+       id="lg4279_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0"
+         id="s16100" />
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0.40000001"
+         id="s16102" />
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="0.89999998"
+         id="s16104" />
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="1"
+         id="s16106" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.4" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0.9" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="310.89999"
+       y1="395.79999"
+       x2="313.29999"
+       y2="403.10001"
+       id="lg6465"
+       xlink:href="#lg4279_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
+    <linearGradient
+       x1="307.79999"
+       y1="395.20001"
+       x2="313.79999"
+       y2="413.60001"
+       id="lg4278_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7,-0.7,0.7,0.7,-153.4,180.6)">
+      <stop
+         style="stop-color:#ffffb3;stop-opacity:1"
+         offset="0"
+         id="s16091" />
+      <stop
+         style="stop-color:#fcd72f;stop-opacity:1"
+         offset="0.40000001"
+         id="s16093" />
+      <stop
+         style="stop-color:#ffcd00;stop-opacity:1"
+         offset="1"
+         id="s16095" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFB3"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FCD72F"
+         offset="0.4" />
+      <ns:midPointStop
+         style="stop-color:#FCD72F"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFCD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="306.5"
+       y1="393"
+       x2="309"
+       y2="404"
+       id="lg6400"
+       xlink:href="#lg4278_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.4,-2.4,2.4,2.4,-1663.6,-195)" />
+    <linearGradient
+       x1="352.10001"
+       y1="253.60001"
+       x2="348.5"
+       y2="237.8"
+       id="lg4276_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
+      <stop
+         style="stop-color:#ffff87;stop-opacity:1"
+         offset="0"
+         id="s16077" />
+      <stop
+         style="stop-color:#ffad00;stop-opacity:1"
+         offset="1"
+         id="s16079" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFAD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="335.60001"
+       y1="354.79999"
+       x2="337.89999"
+       y2="354.79999"
+       id="lg4275_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="s16057" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.80000001"
+         id="s16059" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="s16061" />
+      <ns:midPointStop
+         style="stop-color:#D9D9D9"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#D9D9D9"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.8" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="335.60001"
+       y1="354.79999"
+       x2="337.89999"
+       y2="354.79999"
+       id="lg6463"
+       xlink:href="#lg4275_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
+    <linearGradient
+       x1="337.39999"
+       y1="353.10001"
+       x2="339.39999"
+       y2="357.10001"
+       id="lg4274_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s16048" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.1"
+         id="s16050" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s16052" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.1" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="337.39999"
+       y1="353.10001"
+       x2="339.39999"
+       y2="357.10001"
+       id="lg6461"
+       xlink:href="#lg4274_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
+    <linearGradient
+       x1="334.39999"
+       y1="355.5"
+       x2="335.5"
+       y2="356.79999"
+       id="lg4273_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9,-0.5,0.5,0.9,-121.7,105.1)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s16041" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s16043" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="5.6e-003" />
+      <ns:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="334.39999"
+       y1="355.5"
+       x2="335.5"
+       y2="356.79999"
+       id="lg6381"
+       xlink:href="#lg4273_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.9,-1.7,1.7,2.9,-1557,-448.7)" />
+    <linearGradient
+       x1="348.39999"
+       y1="247.39999"
+       x2="354.10001"
+       y2="242"
+       id="lg4271_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)">
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0"
+         id="s16025" />
+      <stop
+         style="stop-color:#9e9e9e;stop-opacity:1"
+         offset="0.40000001"
+         id="s16027" />
+      <stop
+         style="stop-color:black;stop-opacity:1"
+         offset="1"
+         id="s16029" />
+      <ns:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#F2F2F2"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#000000"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="351.29999"
+       y1="257.29999"
+       x2="346.29999"
+       y2="235.5"
+       id="lg4270_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ffff87;stop-opacity:1"
+         offset="0"
+         id="s16007" />
+      <stop
+         style="stop-color:#ffad00;stop-opacity:1"
+         offset="1"
+         id="s16009" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0" />
+      <ns:midPointStop
+         style="stop-color:#FFFF87"
+         offset="0.5" />
+      <ns:midPointStop
+         style="stop-color:#FFAD00"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="351.29999"
+       y1="257.29999"
+       x2="346.29999"
+       y2="235.5"
+       id="lg6459"
+       xlink:href="#lg4270_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.4,0,0,3.4,-1148,-802)" />
+    <linearGradient
+       x1="43.799999"
+       y1="32.5"
+       x2="63.299999"
+       y2="66.400002"
+       id="XMLID_2708_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop75318" />
+      <stop
+         style="stop-color:#fffcea;stop-opacity:1"
+         offset="1"
+         id="stop75320" />
+      <a:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#FFFCEA"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="43.799999"
+       y1="32.5"
+       x2="63.299999"
+       y2="66.400002"
+       id="lg1907"
+       xlink:href="#XMLID_2708_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)" />
+    <linearGradient
+       x1="52.5"
+       y1="40.400002"
+       x2="58.200001"
+       y2="64"
+       id="XMLID_2707_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#ffdea0;stop-opacity:1"
+         offset="0"
+         id="stop75305" />
+      <stop
+         style="stop-color:#ffd89e;stop-opacity:1"
+         offset="0.30000001"
+         id="stop75307" />
+      <stop
+         style="stop-color:#ffd79e;stop-opacity:1"
+         offset="0.30000001"
+         id="stop75309" />
+      <stop
+         style="stop-color:#dbaf6d;stop-opacity:1"
+         offset="0.69999999"
+         id="stop75311" />
+      <stop
+         style="stop-color:#6f4c24;stop-opacity:1"
+         offset="1"
+         id="stop75313" />
+      <a:midPointStop
+         style="stop-color:#FFDEA0"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#FFDEA0"
+         offset="0.6" />
+      <a:midPointStop
+         style="stop-color:#FFD79E"
+         offset="0.3" />
+      <a:midPointStop
+         style="stop-color:#FFD79E"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#DBAF6D"
+         offset="0.7" />
+      <a:midPointStop
+         style="stop-color:#DBAF6D"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#6F4C24"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="52.5"
+       y1="40.400002"
+       x2="58.200001"
+       y2="64"
+       id="lg1910"
+       xlink:href="#XMLID_2707_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)" />
+    <linearGradient
+       x1="58"
+       y1="73.199997"
+       x2="44.5"
+       y2="19"
+       id="XMLID_2704_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)">
+      <stop
+         style="stop-color:#d4a96c;stop-opacity:1"
+         offset="0.5"
+         id="stop75284" />
+      <stop
+         style="stop-color:#dcb273;stop-opacity:1"
+         offset="0.60000002"
+         id="stop75286" />
+      <stop
+         style="stop-color:#f0ca87;stop-opacity:1"
+         offset="0.80000001"
+         id="stop75288" />
+      <stop
+         style="stop-color:#ffdc96;stop-opacity:1"
+         offset="0.69999999"
+         id="stop75290" />
+      <stop
+         style="stop-color:#c18a42;stop-opacity:1"
+         offset="1"
+         id="stop75292" />
+      <a:midPointStop
+         style="stop-color:#D4A96C"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#D4A96C"
+         offset="0.6" />
+      <a:midPointStop
+         style="stop-color:#FFDC96"
+         offset="0.7" />
+      <a:midPointStop
+         style="stop-color:#FFDC96"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#C18A42"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="53.700001"
+       y1="32"
+       x2="53.700001"
+       y2="64.599998"
+       id="XMLID_2703_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e5c9b0;stop-opacity:1"
+         offset="0"
+         id="stop75268" />
+      <stop
+         style="stop-color:#e5c9b0;stop-opacity:1"
+         offset="0.40000001"
+         id="stop75270" />
+      <stop
+         style="stop-color:#c0aa94;stop-opacity:1"
+         offset="1"
+         id="stop75272" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0.4" />
+      <a:midPointStop
+         style="stop-color:#E5C9B0"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#C0AA94"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="53.700001"
+       y1="32"
+       x2="53.700001"
+       y2="64.599998"
+       id="lg1916"
+       xlink:href="#XMLID_2703_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29,-22.6)" />
+    <linearGradient
+       x1="224.31"
+       y1="19.450001"
+       x2="214.33"
+       y2="11.46"
+       id="XMLID_419_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#404040;stop-opacity:1"
+         offset="0"
+         id="s1903" />
+      <stop
+         style="stop-color:#6d6d6d;stop-opacity:1"
+         offset="0.33000001"
+         id="s1905" />
+      <stop
+         style="stop-color:#e9e9e9;stop-opacity:1"
+         offset="1"
+         id="s1907" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#404040" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#404040" />
+      <a:midPointStop
+         offset="0.33"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#E9E9E9" />
+    </linearGradient>
+    <linearGradient
+       x1="221.84"
+       y1="32.779999"
+       x2="212.2"
+       y2="20.27"
+       id="lg1988"
+       xlink:href="#XMLID_419_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
+    <linearGradient
+       x1="228.35001"
+       y1="33.279999"
+       x2="215.42999"
+       y2="33.279999"
+       id="lg1900"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s1902" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="s1906" />
+      <a:midPointStop
+         style="stop-color:#575757"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#575757"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#6D6D6D"
+         offset="0.33" />
+      <a:midPointStop
+         style="stop-color:#6D6D6D"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#D3D3D3"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="234.81"
+       y1="33.279999"
+       x2="228.27"
+       y2="33.279999"
+       id="lg1908"
+       xlink:href="#lg1900"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
+    <linearGradient
+       x1="228.35001"
+       y1="33.279999"
+       x2="215.42999"
+       y2="33.279999"
+       id="XMLID_416_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#575757;stop-opacity:1"
+         offset="0"
+         id="s1874" />
+      <stop
+         style="stop-color:#6d6d6d;stop-opacity:1"
+         offset="0.33000001"
+         id="s1876" />
+      <stop
+         style="stop-color:#d3d3d3;stop-opacity:1"
+         offset="1"
+         id="s1878" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#575757" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#575757" />
+      <a:midPointStop
+         offset="0.33"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#6D6D6D" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#D3D3D3" />
+    </linearGradient>
+    <linearGradient
+       x1="228.35001"
+       y1="33.279999"
+       x2="215.42999"
+       y2="33.279999"
+       id="lg1991"
+       xlink:href="#XMLID_416_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.33,0,0,1.31,-274.2,-5.2)" />
+    <radialGradient
+       cx="603.19"
+       cy="230.77"
+       r="1.67"
+       fx="603.19"
+       fy="230.77"
+       id="x5010_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.1,0,0,1.1,-54.33,-75.4)">
+      <stop
+         style="stop-color:#c9ffc9;stop-opacity:1"
+         offset="0"
+         id="stop29201" />
+      <stop
+         style="stop-color:#23a11f;stop-opacity:1"
+         offset="1"
+         id="stop29203" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#C9FFC9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#C9FFC9" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#23A11F" />
+    </radialGradient>
+    <radialGradient
+       cx="603.19"
+       cy="230.77"
+       r="1.67"
+       fx="603.19"
+       fy="230.77"
+       id="radialGradient5711"
+       xlink:href="#x5010_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.23,0,0,1.23,-709.93,-245.02)" />
+    <linearGradient
+       x1="592.31"
+       y1="162.60001"
+       x2="609.32001"
+       y2="145.59"
+       id="lg5722"
+       xlink:href="#x5003_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="601.48999"
+       y1="170.16"
+       x2="613.84003"
+       y2="170.16"
+       id="x5002_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop29134" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0.2"
+         id="stop29136" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="stop29138" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.20"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#FFFFFF" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#999999" />
+    </linearGradient>
+    <linearGradient
+       x1="601.48999"
+       y1="170.16"
+       x2="613.84003"
+       y2="170.16"
+       id="lg5725"
+       xlink:href="#x5002_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.23"
+       id="x5004_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop29157" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop29159" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.23"
+       id="lg5728"
+       xlink:href="#x5004_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="592.31"
+       y1="162.60001"
+       x2="609.32001"
+       y2="145.59"
+       id="x5003_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0"
+         id="stop29143" />
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="1"
+         id="stop29145" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#E5E5E5" />
+    </linearGradient>
+    <linearGradient
+       x1="592.31"
+       y1="162.60001"
+       x2="609.32001"
+       y2="145.59"
+       id="lg5732"
+       xlink:href="#x5003_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.24001"
+       id="x5000_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop29124" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop29126" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#FFFFFF" />
+    </linearGradient>
+    <linearGradient
+       x1="592.20001"
+       y1="156.45"
+       x2="609.98999"
+       y2="174.24001"
+       id="lg5735"
+       xlink:href="#x5000_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.12,0,0,1.12,-649.08,-160.62)" />
+    <linearGradient
+       x1="308.54999"
+       y1="149.89999"
+       x2="299.72"
+       y2="148.83"
+       id="XMLID_2433_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d6d6d6;stop-opacity:1"
+         offset="0"
+         id="71615" />
+      <stop
+         style="stop-color:#a5a5a5;stop-opacity:1"
+         offset="1"
+         id="71617" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D6D6D6" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D6D6D6" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#A5A5A5" />
+    </linearGradient>
+    <linearGradient
+       x1="308.54999"
+       y1="149.89999"
+       x2="299.72"
+       y2="148.83"
+       id="lg1952"
+       xlink:href="#XMLID_2433_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
+    <radialGradient
+       cx="307.39999"
+       cy="121"
+       r="23.35"
+       fx="307.39999"
+       fy="121"
+       id="XMLID_2432_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.98,0,0,0.98,2.88,2.75)">
+      <stop
+         style="stop-color:#d2d2d2;stop-opacity:1"
+         offset="0.19"
+         id="71592" />
+      <stop
+         style="stop-color:#cfcfcf;stop-opacity:1"
+         offset="0.44999999"
+         id="71594" />
+      <stop
+         style="stop-color:#c7c7c7;stop-opacity:1"
+         offset="0.60000002"
+         id="71596" />
+      <stop
+         style="stop-color:#b9b9b9;stop-opacity:1"
+         offset="0.74000001"
+         id="71598" />
+      <stop
+         style="stop-color:#a4a4a4;stop-opacity:1"
+         offset="0.86000001"
+         id="71600" />
+      <stop
+         style="stop-color:#8a8a8a;stop-opacity:1"
+         offset="0.95999998"
+         id="71602" />
+      <stop
+         style="stop-color:gray;stop-opacity:1"
+         offset="1"
+         id="71604" />
+      <a:midPointStop
+         offset="0.19"
+         style="stop-color:#D2D2D2" />
+      <a:midPointStop
+         offset="0.8"
+         style="stop-color:#D2D2D2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#808080" />
+    </radialGradient>
+    <radialGradient
+       cx="307.39999"
+       cy="121"
+       r="23.35"
+       fx="307.39999"
+       fy="121"
+       id="radialGradient2331"
+       xlink:href="#XMLID_2432_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-276.62,-121.54)" />
+    <linearGradient
+       x1="294.13"
+       y1="127.07"
+       x2="294.13"
+       y2="142.2"
+       id="XMLID_2430_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#b5d8ff;stop-opacity:1"
+         offset="0"
+         id="71582" />
+      <stop
+         style="stop-color:black;stop-opacity:1"
+         offset="1"
+         id="71584" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B5D8FF" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B5D8FF" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#000000" />
+    </linearGradient>
+    <linearGradient
+       x1="294.13"
+       y1="127.07"
+       x2="294.13"
+       y2="142.2"
+       id="lg2820"
+       xlink:href="#XMLID_2430_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
+    <linearGradient
+       x1="279.10999"
+       y1="148.03"
+       x2="309.16"
+       y2="148.03"
+       id="XMLID_2429_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e1e1e1;stop-opacity:1"
+         offset="0"
+         id="71564" />
+      <stop
+         style="stop-color:#e1e1e1;stop-opacity:1"
+         offset="0.25"
+         id="71566" />
+      <stop
+         style="stop-color:#a5a5a5;stop-opacity:1"
+         offset="0.44"
+         id="71568" />
+      <stop
+         style="stop-color:#a5a5a5;stop-opacity:1"
+         offset="1"
+         id="71570" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.25"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E1E1E1" />
+      <a:midPointStop
+         offset="0.44"
+         style="stop-color:#A5A5A5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#A5A5A5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#A5A5A5" />
+    </linearGradient>
+    <linearGradient
+       x1="279.10999"
+       y1="148.03"
+       x2="309.16"
+       y2="148.03"
+       id="lg2818"
+       xlink:href="#XMLID_2429_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.03,0,0,1.03,-279.57,-124.36)" />
+    <radialGradient
+       cx="622.34302"
+       cy="14.449"
+       r="26.496"
+       fx="622.34302"
+       fy="14.449"
+       id="lg3499_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.851,0,0,0.849,69.297,51.658)">
+      <stop
+         style="stop-color:#23468e;stop-opacity:1"
+         offset="0"
+         id="stop10972" />
+      <stop
+         style="stop-color:#012859;stop-opacity:1"
+         offset="1"
+         id="stop10974" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#23468E" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#23468E" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#012859" />
+    </radialGradient>
+    <radialGradient
+       cx="622.34302"
+       cy="14.449"
+       r="26.496"
+       fx="622.34302"
+       fy="14.449"
+       id="rg5791"
+       xlink:href="#lg3499_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.858,0,0,0.857,-511.7,9.02)" />
+    <linearGradient
+       x1="616.112"
+       y1="76.247002"
+       x2="588.14099"
+       y2="60.742001"
+       id="lg3497_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#01326e;stop-opacity:1"
+         offset="0"
+         id="stop10962" />
+      <stop
+         style="stop-color:#012859;stop-opacity:1"
+         offset="1"
+         id="stop10964" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#01326E" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#01326E" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#012859" />
+    </linearGradient>
+    <linearGradient
+       x1="617.698"
+       y1="82.445999"
+       x2="585.95203"
+       y2="54.848999"
+       id="lg3496_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="stop10950" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop10952" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#E5E5E5" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="617.698"
+       y1="82.445999"
+       x2="585.95203"
+       y2="54.848999"
+       id="lg5794"
+       xlink:href="#lg3496_"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="601.39001"
+       y1="55.341"
+       x2="588.29199"
+       y2="71.515999"
+       id="lg3495_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop10941" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.52200001"
+         id="stop10943" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop10945" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.522"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="601.39001"
+       y1="55.341"
+       x2="588.29199"
+       y2="71.515999"
+       id="lg5771"
+       xlink:href="#lg3495_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.009,0,0,1.009,-581.615,-43.098)" />
+    <linearGradient
+       x1="611.34601"
+       y1="55.279999"
+       x2="590.39001"
+       y2="81.157997"
+       id="lg3494_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="stop10932" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.52200001"
+         id="stop10934" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="stop10936" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#D9D9D9" />
+      <a:midPointStop
+         offset="0.522"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#F2F2F2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#CCCCCC" />
+    </linearGradient>
+    <linearGradient
+       x1="611.34601"
+       y1="55.279999"
+       x2="590.39001"
+       y2="81.157997"
+       id="lg5774"
+       xlink:href="#lg3494_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.009,0,0,1.009,-581.616,-43.098)" />
+    <linearGradient
+       x1="798.72998"
+       y1="69.839996"
+       x2="799.04999"
+       y2="70.709999"
+       id="g3302_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#005e00;stop-opacity:1"
+         offset="0"
+         id="s6504" />
+      <stop
+         style="stop-color:#23a11f;stop-opacity:1"
+         offset="1"
+         id="s6506" />
+      <a:midPointstop
+         style="stop-color:#005E00"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#005E00"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#23A11F"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="798.72998"
+       y1="69.839996"
+       x2="799.04999"
+       y2="70.709999"
+       id="lg5851"
+       xlink:href="#g3302_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
+    <linearGradient
+       x1="779.19"
+       y1="122.73"
+       x2="811.69"
+       y2="149.74001"
+       id="g3301_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,129.19)">
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0"
+         id="s6483" />
+      <stop
+         style="stop-color:#eee;stop-opacity:1"
+         offset="0.17"
+         id="s6485" />
+      <stop
+         style="stop-color:#e3e3e3;stop-opacity:1"
+         offset="0.34"
+         id="s6487" />
+      <stop
+         style="stop-color:#cfcfcf;stop-opacity:1"
+         offset="0.50999999"
+         id="s6489" />
+      <stop
+         style="stop-color:#b4b4b4;stop-opacity:1"
+         offset="0.67000002"
+         id="s6491" />
+      <stop
+         style="stop-color:#919191;stop-opacity:1"
+         offset="0.83999997"
+         id="s6493" />
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="1"
+         id="s6495" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.71" />
+      <a:midPointstop
+         style="stop-color:#666666"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="779.19"
+       y1="122.73"
+       x2="811.69"
+       y2="149.74001"
+       id="lg5855"
+       xlink:href="#g3301_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,-0.316,0,1.263,-926.036,103.123)" />
+    <clipPath
+       id="g3299_">
+      <use
+         id="use6469"
+         x="0"
+         y="0"
+         width="1005.92"
+         height="376.97"
+         xlink:href="#g101_" />
+    </clipPath>
+    <radialGradient
+       cx="1189.9301"
+       cy="100.05"
+       r="40.400002"
+       fx="1189.9301"
+       fy="100.05"
+       id="g3300_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.34,-8.46e-2,0,0.34,394.16,137.13)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s6472" />
+      <stop
+         style="stop-color:white;stop-opacity:0"
+         offset="1"
+         id="s6474" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#000000"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1199.74"
+       cy="97.150002"
+       r="40.400002"
+       fx="1199.74"
+       fy="97.150002"
+       id="rg5860"
+       xlink:href="#g3300_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.409,-0.107,0,0.429,-451.489,113.149)" />
+    <linearGradient
+       x1="796.38"
+       y1="67.580002"
+       x2="781.28003"
+       y2="58.549999"
+       id="g3298_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#4c8bca;stop-opacity:1"
+         offset="0"
+         id="s6462" />
+      <stop
+         style="stop-color:#b7e9ff;stop-opacity:1"
+         offset="1"
+         id="s6464" />
+      <a:midPointstop
+         style="stop-color:#4C8BCA"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#4C8BCA"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B7E9FF"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="800.97998"
+       y1="140.72"
+       x2="777.71997"
+       y2="121.76"
+       id="g3297_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,129.19)">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="s6448" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s6450" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="800.97998"
+       y1="140.72"
+       x2="777.71997"
+       y2="121.76"
+       id="lg5890"
+       xlink:href="#g3297_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,129.19)" />
+    <linearGradient
+       x1="790.03998"
+       y1="-16.33"
+       x2="779.84003"
+       y2="-3.73"
+       id="g3296_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0,70.17)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="s6439" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.51999998"
+         id="s6441" />
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="1"
+         id="s6443" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.52" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#CCCCCC"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="790.03998"
+       y1="-16.33"
+       x2="779.84003"
+       y2="-3.73"
+       id="lg5866"
+       xlink:href="#g3296_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,28.6)" />
+    <linearGradient
+       x1="785.84003"
+       y1="72.989998"
+       x2="785.26001"
+       y2="76.279999"
+       id="g3293_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s6412" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="1"
+         id="s6414" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#737373"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="785.84003"
+       y1="72.989998"
+       x2="785.26001"
+       y2="76.279999"
+       id="lg5871"
+       xlink:href="#g3293_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
+    <linearGradient
+       x1="789.37"
+       y1="69.879997"
+       x2="791.03998"
+       y2="77.120003"
+       id="g3292_"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="0"
+         id="s6403" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="0.28"
+         id="s6405" />
+      <stop
+         style="stop-color:#666;stop-opacity:1"
+         offset="1"
+         id="s6407" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.28" />
+      <a:midPointstop
+         style="stop-color:#F2F2F2"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#666666"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="789.37"
+       y1="69.879997"
+       x2="791.03998"
+       y2="77.120003"
+       id="lg5874"
+       xlink:href="#g3292_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,0,0,1.263,-926.036,-60.001)" />
+    <linearGradient
+       x1="786.65997"
+       y1="136.12"
+       x2="786.71002"
+       y2="134.33"
+       id="g3290_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,-0.25,0,1,0,137.29)">
+      <stop
+         style="stop-color:#d9d9d9;stop-opacity:1"
+         offset="0"
+         id="s6380" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="1"
+         id="s6382" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#D9D9D9"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="786.65997"
+       y1="136.12"
+       x2="786.71002"
+       y2="134.33"
+       id="lg5878"
+       xlink:href="#g3290_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.204,-0.316,0,1.263,-926.036,113.351)" />
+    <radialGradient
+       cx="1458.77"
+       cy="-5.0999999"
+       r="35.130001"
+       fx="1458.77"
+       fy="-5.0999999"
+       id="g3289_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.42,0,0,0.42,167.09,79.84)">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="s6371" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="s6373" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#FFFFFF"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1458.77"
+       cy="-5.0999999"
+       r="35.130001"
+       fx="1458.77"
+       fy="-5.0999999"
+       id="rg5881"
+       xlink:href="#g3289_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.505,0,0,0.53,-724.957,40.636)" />
+    <radialGradient
+       cx="1612.98"
+       cy="-4.4699998"
+       r="36.580002"
+       fx="1612.98"
+       fy="-4.4699998"
+       id="g3288_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.34,0,0,0.36,238.56,86.87)">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="s6362" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0.63999999"
+         id="s6364" />
+      <stop
+         style="stop-color:#737373;stop-opacity:1"
+         offset="1"
+         id="s6366" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.64" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#737373"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1612.98"
+       cy="-4.4699998"
+       r="36.580002"
+       fx="1612.98"
+       fy="-4.4699998"
+       id="rg5884"
+       xlink:href="#g3288_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.408,0,0,0.448,-638.943,49.495)" />
+    <radialGradient
+       cx="1470.5"
+       cy="-10.21"
+       r="33.290001"
+       fx="1470.5"
+       fy="-10.21"
+       id="g3287_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.42,0,0,0.42,167.09,79.84)">
+      <stop
+         style="stop-color:#e5e5e5;stop-opacity:1"
+         offset="0"
+         id="s6347" />
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0.38999999"
+         id="s6349" />
+      <stop
+         style="stop-color:#b1b1b1;stop-opacity:1"
+         offset="0.75"
+         id="s6351" />
+      <stop
+         style="stop-color:#aaa;stop-opacity:1"
+         offset="0.88"
+         id="s6353" />
+      <stop
+         style="stop-color:#9e9e9e;stop-opacity:1"
+         offset="0.97000003"
+         id="s6355" />
+      <stop
+         style="stop-color:#999;stop-opacity:1"
+         offset="1"
+         id="s6357" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0" />
+      <a:midPointstop
+         style="stop-color:#E5E5E5"
+         offset="0.5" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.39" />
+      <a:midPointstop
+         style="stop-color:#B2B2B2"
+         offset="0.87" />
+      <a:midPointstop
+         style="stop-color:#999999"
+         offset="1" />
+    </radialGradient>
+    <radialGradient
+       cx="1470.5"
+       cy="-10.21"
+       r="33.290001"
+       fx="1470.5"
+       fy="-10.21"
+       id="rg5887"
+       xlink:href="#g3287_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.505,0,0,0.53,-724.957,40.636)" />
+    <pattern
+       patternTransform="matrix(0.592927,0,0,0.592927,78,462)"
+       id="cream-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-365.3146,-513.505)"
+         id="g3047">
+           id=&quot;path2858&quot; /&gt;
+        <path
+   inkscape:label="#path2854"
+   sodipodi:nodetypes="czzzz"
+   style="fill:#e3dcc0"
+   id="path3060"
+   d="M 390.31462,529.50504 C 390.31462,534.47304 386.28262,538.50504 381.31462,538.50504 C 376.34662,538.50504 372.31462,534.47304 372.31462,529.50504 C 372.31462,524.53704 376.34662,520.50504 381.31462,520.50504 C 386.28262,520.50504 390.31462,524.53704 390.31462,529.50504 z " />
+</g>
+    </pattern>
+    <pattern
+       patternTransform="matrix(0.733751,0,0,0.733751,67,367)"
+       id="dark-cream-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-408.0946,-513.505)"
+         id="dark-cream-spot"
+         inkscape:label="#g3043">
+        <path
+           sodipodi:nodetypes="czzzz"
+           style="fill:#c8c5ac"
+           d="M 433.09458,529.50504 C 433.09458,534.47304 429.06258,538.50504 424.09458,538.50504 C 419.12658,538.50504 415.09458,534.47304 415.09458,529.50504 C 415.09458,524.53704 419.12658,520.50504 424.09458,520.50504 C 429.06258,520.50504 433.09458,524.53704 433.09458,529.50504 z "
+           id="path2953" />
+      </g>
+    </pattern>
+    <pattern
+       patternTransform="matrix(0.375,0,0,0.375,379,400)"
+       id="white-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-484.3997,-513.505)"
+         id="white-spot"
+         inkscape:label="#g3035">
+        <path
+           style="opacity:0.25;fill:white"
+           id="path3033"
+           d="M 509.39967,529.50504 C 509.39967,534.47304 505.36767,538.50504 500.39967,538.50504 C 495.43167,538.50504 491.39967,534.47304 491.39967,529.50504 C 491.39967,524.53704 495.43167,520.50504 500.39967,520.50504 C 505.36767,520.50504 509.39967,524.53704 509.39967,529.50504 z "
+           sodipodi:nodetypes="czzzz" />
+      </g>
+    </pattern>
+    <pattern
+       patternTransform="matrix(0.455007,0,0,0.455007,-5e-5,1.9e-5)"
+       id="black-spots"
+       height="32"
+       width="32"
+       patternUnits="userSpaceOnUse">
+      <g
+         transform="translate(-448.3997,-513.505)"
+         id="black-spot"
+         inkscape:label="#g3039">
+        <path
+           sodipodi:nodetypes="czzzz"
+           d="M 473.39967,529.50504 C 473.39967,534.47304 469.36767,538.50504 464.39967,538.50504 C 459.43167,538.50504 455.39967,534.47304 455.39967,529.50504 C 455.39967,524.53704 459.43167,520.50504 464.39967,520.50504 C 469.36767,520.50504 473.39967,524.53704 473.39967,529.50504 z "
+           id="path2961"
+           style="opacity:0.25;fill:black" />
+      </g>
+    </pattern>
+    <linearGradient
+       x1="501.0903"
+       y1="-19.2544"
+       x2="531.85413"
+       y2="0.72390002"
+       id="linearGradient17334"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop17336" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop17338" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop17340" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop17342" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.5112"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B4DAEA" />
+      <a:midPointStop
+         offset="0.6461"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#16336E" />
+    </linearGradient>
+    <linearGradient
+       x1="415.73831"
+       y1="11.854"
+       x2="418.13361"
+       y2="18.8104"
+       id="linearGradient17426"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.8362,0.5206,-1.1904,0.992,147.62,-30.9374)">
+      <stop
+         style="stop-color:#ccc;stop-opacity:1"
+         offset="0"
+         id="stop17428" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop17430" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#CCCCCC" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#F2F2F2" />
+    </linearGradient>
+    <linearGradient
+       x1="478.21341"
+       y1="-131.9297"
+       x2="469.85818"
+       y2="-140.28481"
+       id="linearGradient17434"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.5592,0.829,-0.829,0.5592,101.3357,-104.791)">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop17436" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop17438" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop17440" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop17442" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#F3403F" />
+      <a:midPointStop
+         offset="0.4213"
+         style="stop-color:#F3403F" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#A6100C" />
+    </linearGradient>
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17709"
+       xlink:href="#XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)" />
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17711"
+       xlink:href="#XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="linearGradient17713"
+       xlink:href="#XMLID_1753_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17715"
+       xlink:href="#XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="500.70749"
+       y1="-13.2441"
+       x2="513.46442"
+       y2="-2.1547"
+       id="linearGradient17717"
+       xlink:href="#XMLID_1757_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="linearGradient17721"
+       xlink:href="#XMLID_2274_"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="linearGradient17723"
+       xlink:href="#XMLID_2275_"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       x1="500.70749"
+       y1="-13.2441"
+       x2="513.46442"
+       y2="-2.1547"
+       id="linearGradient17416"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop17418" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop17420" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <defs
+       id="defs9929">
+      <path
+         d="M 489.21,209.35 L 485.35,203.63 C 483.63,204.25 473.47,208.93 471.5,210.18 C 470.57,210.77 470.17,211.16 469.72,212.48 C 470.93,212.31 471.72,212.49 473.42,213.04 C 473.26,214.77 473.24,215.74 473.57,218.2 C 474.01,216.88 474.41,216.49 475.34,215.9 C 477.33,214.65 487.49,209.97 489.21,209.35 z "
+         id="XMLID_960_" />
+    </defs>
+    <clipPath
+       id="clipPath17448">
+      <use
+         id="use17450"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_960_" />
+    </clipPath>
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="linearGradient17452"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop17454" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop17456" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop17458" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop17460" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="linearGradient17463"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#f3403f;stop-opacity:1"
+         offset="0"
+         id="stop17465" />
+      <stop
+         style="stop-color:#d02a28;stop-opacity:1"
+         offset="0.37889999"
+         id="stop17467" />
+      <stop
+         style="stop-color:#b21714;stop-opacity:1"
+         offset="0.77649999"
+         id="stop17469" />
+      <stop
+         style="stop-color:#a6100c;stop-opacity:1"
+         offset="1"
+         id="stop17471" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#F3403F"
+         offset="0.4213" />
+      <a:midPointStop
+         style="stop-color:#A6100C"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="481.23969"
+       y1="212.5742"
+       x2="472.92981"
+       y2="207.4967"
+       id="linearGradient17807"
+       xlink:href="#XMLID_2275_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-177.1654,35.43307)" />
+    <linearGradient
+       x1="473.7681"
+       y1="209.17529"
+       x2="486.98099"
+       y2="213.2001"
+       id="linearGradient17810"
+       xlink:href="#XMLID_2274_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-177.1654,35.43307)" />
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17812"
+       xlink:href="#XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)" />
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17814"
+       xlink:href="#XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="linearGradient17816"
+       xlink:href="#XMLID_1753_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17818"
+       xlink:href="#XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17347"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,11.0227,-35.6159)">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop17349" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop17351" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#5387BA" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#96BAD6" />
+    </linearGradient>
+    <linearGradient
+       x1="516.57672"
+       y1="-15.769"
+       x2="516.57672"
+       y2="0.84280002"
+       id="linearGradient17379"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b2b2b2;stop-opacity:1"
+         offset="0"
+         id="stop17381" />
+      <stop
+         style="stop-color:#f2f2f2;stop-opacity:1"
+         offset="1"
+         id="stop17383" />
+      <a:midPointStop
+         offset="0"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="0.5"
+         style="stop-color:#B2B2B2" />
+      <a:midPointStop
+         offset="1"
+         style="stop-color:#F2F2F2" />
+    </linearGradient>
+    <linearGradient
+       x1="502.70749"
+       y1="115.3013"
+       x2="516.39001"
+       y2="127.1953"
+       id="linearGradient17862"
+       xlink:href="#XMLID_1749_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9703,0.2419,-0.2419,0.9703,-166.1427,-0.18283)" />
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17864"
+       xlink:href="#XMLID_1756_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <defs
+       id="defs3859">
+      <polygon
+         points="465.54,213.52 481.94,217.46 482.74,216.71 487.46,198.05 471.08,194.07 470.26,194.83 465.54,213.52 "
+         id="XMLID_343_" />
+    </defs>
+    <linearGradient
+       x1="471.0806"
+       y1="201.07761"
+       x2="481.91711"
+       y2="210.4977"
+       id="linearGradient17389"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#6498c1;stop-opacity:1"
+         offset="0.005618"
+         id="stop17391" />
+      <stop
+         style="stop-color:#79a9cc;stop-opacity:1"
+         offset="0.2332"
+         id="stop17393" />
+      <stop
+         style="stop-color:#a4cde2;stop-opacity:1"
+         offset="0.74049997"
+         id="stop17395" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="1"
+         id="stop17397" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="5.618000e-003" />
+      <a:midPointStop
+         style="stop-color:#6498C1"
+         offset="0.4438" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="clipPath17400">
+      <use
+         id="use17402"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_343_" />
+    </clipPath>
+    <linearGradient
+       x1="505.62939"
+       y1="-14.9526"
+       x2="527.49402"
+       y2="-0.7536"
+       id="linearGradient17404"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop17406" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop17408" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop17410" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop17412" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17882"
+       xlink:href="#XMLID_1752_"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)" />
+    <defs
+       id="defs3826">
+      <polygon
+         points="463.52,216.14 480.56,220.24 481.36,219.5 483.03,202.04 469.05,196.69 468.24,197.45 463.52,216.14 "
+         id="XMLID_338_" />
+    </defs>
+    <linearGradient
+       x1="468.2915"
+       y1="204.7612"
+       x2="479.39871"
+       y2="214.4166"
+       id="linearGradient17357"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0"
+         id="stop17359" />
+      <stop
+         style="stop-color:#96bad6;stop-opacity:1"
+         offset="1"
+         id="stop17361" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#96BAD6"
+         offset="1" />
+    </linearGradient>
+    <clipPath
+       id="clipPath17364">
+      <use
+         id="use17366"
+         x="0"
+         y="0"
+         width="744.09448"
+         height="600"
+         xlink:href="#XMLID_338_" />
+    </clipPath>
+    <linearGradient
+       x1="506.09909"
+       y1="-11.5137"
+       x2="527.99609"
+       y2="2.7063999"
+       id="linearGradient17368"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6868,0.4269,-0.9821,0.821,111.6149,-5.7901)">
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0"
+         id="stop17370" />
+      <stop
+         style="stop-color:#b4daea;stop-opacity:1"
+         offset="0.51120001"
+         id="stop17372" />
+      <stop
+         style="stop-color:#5387ba;stop-opacity:1"
+         offset="0.64609998"
+         id="stop17374" />
+      <stop
+         style="stop-color:#16336e;stop-opacity:1"
+         offset="1"
+         id="stop17376" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5112" />
+      <a:midPointStop
+         style="stop-color:#B4DAEA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.6461" />
+      <a:midPointStop
+         style="stop-color:#5387BA"
+         offset="0.5" />
+      <a:midPointStop
+         style="stop-color:#16336E"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398"
+       id="linearGradient2387"
+       xlink:href="#linearGradient2381"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
+    <linearGradient
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398"
+       id="linearGradient5105"
+       xlink:href="#linearGradient2381"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
+    <linearGradient
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398"
+       id="linearGradient5145"
+       xlink:href="#linearGradient2381"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2381"
+       id="linearGradient2371"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90776,0,0,0.90776,24.35648,49.24131)"
+       x1="296.4996"
+       y1="188.81061"
+       x2="317.32471"
+       y2="209.69398" />
+  </defs>
+  <g
+     transform="matrix(0.437808,-0.437808,0.437808,0.437808,-220.8237,43.55311)"
+     id="g5089">
+    <path
+       d="M 8.4382985,-6.28125 C 7.8309069,-6.28125 4.125,-0.33238729 4.125,1.96875 L 4.125,28.6875 C 4.125,29.533884 4.7068159,29.8125 5.28125,29.8125 L 30.84375,29.8125 C 31.476092,29.8125 31.968751,29.319842 31.96875,28.6875 L 31.96875,23.46875 L 32.25,23.46875 C 32.74684,23.46875 33.156249,23.059339 33.15625,22.5625 L 33.15625,-5.375 C 33.15625,-5.8718398 32.74684,-6.28125 32.25,-6.28125 L 8.4382985,-6.28125 z "
+       transform="translate(282.8327,227.1903)"
+       style="fill:#5c5c4f;stroke:black;stroke-width:3.23021388;stroke-miterlimit:4;stroke-dasharray:none"
+       id="path5091" />
+    <rect
+       width="27.85074"
+       height="29.369793"
+       rx="1.1414107"
+       ry="1.1414107"
+       x="286.96509"
+       y="227.63805"
+       style="fill:#032c87"
+       id="rect5093" />
+    <path
+       d="M 288.43262,225.43675 L 313.67442,225.43675 L 313.67442,254.80655 L 287.29827,254.83069 L 288.43262,225.43675 z "
+       style="fill:white"
+       id="rect5095" />
+    <path
+       d="M 302.44536,251.73726 C 303.83227,259.59643 301.75225,263.02091 301.75225,263.02091 C 303.99609,261.41329 305.71651,259.54397 306.65747,257.28491 C 307.62455,259.47755 308.49041,261.71357 310.9319,263.27432 C 310.9319,263.27432 309.33686,256.07392 309.22047,251.73726 L 302.44536,251.73726 z "
+       style="fill:#a70000;fill-opacity:1;stroke-width:2"
+       id="path5097" />
+    <rect
+       width="25.241802"
+       height="29.736675"
+       rx="0.89682275"
+       ry="0.89682275"
+       x="290.73544"
+       y="220.92249"
+       style="fill:#809cc9"
+       id="rect5099" />
+    <path
+       d="M 576.47347,725.93939 L 582.84431,726.35441 L 583.25121,755.8725 C 581.35919,754.55465 576.39694,752.1117 574.98889,754.19149 L 574.98889,727.42397 C 574.98889,726.60151 575.65101,725.93939 576.47347,725.93939 z "
+       transform="matrix(0.499065,-0.866565,0,1,0,0)"
+       style="fill:#4573b3;fill-opacity:1"
+       id="rect5101" />
+    <path
+       d="M 293.2599,221.89363 L 313.99908,221.89363 C 314.45009,221.89363 314.81318,222.25673 314.81318,222.70774 C 315.02865,229.0361 295.44494,244.47124 292.44579,240.30491 L 292.44579,222.70774 C 292.44579,222.25673 292.80889,221.89363 293.2599,221.89363 z "
+       style="opacity:0.65536726;fill:url(#linearGradient2371);fill-opacity:1"
+       id="path5103" />
+  </g>
+</svg>

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/issues.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/issues.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/layoutForm-example.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/layoutForm-example.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/list.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/list.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/messages.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/messages.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/numberguess-pageflow.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/numberguess-pageflow.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/numberguess.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/numberguess.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/plugin-jbpm-numguess.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/plugin-jbpm-numguess.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/plugin-jbpm-todo.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/plugin-jbpm-todo.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/plugin-testng.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/plugin-testng.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/register.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/register.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/registration.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/registration.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/switcher.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/switcher.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/testng.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/testng.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/todo-process.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/todo-process.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/todo.png
===================================================================
(Binary files differ)


Property changes on: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/tmp/en-US/xml_tmp/images/todo.png
___________________________________________________________________
Name: svn:executable
   + *
Name: svn:mime-type
   + application/octet-stream

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Annotations.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Annotations.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Annotations.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2149 @@
+# translation of Annotations.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Xi HUANG <xhuang at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Annotations\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2007-11-19 12:52+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Annotations.xml:6
+#, no-c-format
+msgid "Seam annotations"
+msgstr "Seam 的注解"
+
+#. Tag: para
+#: Annotations.xml:7
+#, no-c-format
+msgid ""
+"When you write a Seam application, you&#39;ll use a lot of annotations. Seam "
+"lets you use annotations to achieve a declarative style of programming. Most "
+"of the annotations you&#39;ll use are defined by the EJB 3.0 specification. "
+"The annotations for data validation are defined by the Hibernate Validator "
+"package. Finally, Seam defines its own set of annotations, which we&#39;ll "
+"describe in this chapter."
+msgstr ""
+"当你编写 Seam 的应用程序时,你将使用大量的注解。Seam 让你用注解来实现声明式风"
+"格的编程。你将使用的大多数注解都在 EJB 3.0 规格里进行了定义。Hibernate "
+"Validator 数据包定义了数据检验的注解。最后,Seam 也定义了自己的注解集合,我们"
+"将在本章进行描述。"
+
+#. Tag: para
+#: Annotations.xml:10
+#, no-c-format
+msgid ""
+"All of these annotations are defined in the package <literal>org.jboss.seam."
+"annotations</literal>."
+msgstr "所有的注解都定义在软件包 <literal>org.jboss.seam.annotations</literal> 里。"
+
+#. Tag: title
+#: Annotations.xml:14
+#, no-c-format
+msgid "Annotations for component definition"
+msgstr "用于组件定义的注解"
+
+#. Tag: para
+#: Annotations.xml:15
+#, no-c-format
+msgid ""
+"The first group of annotations lets you define a Seam component. These "
+"annotations appear on the component class."
+msgstr "第一组注解可以让你定义 Seam 组件。这些注解出现在组件类里。"
+
+#. Tag: literal
+#: Annotations.xml:20
+#, no-c-format
+msgid "@Name"
+msgstr "@Name"
+
+#. Tag: programlisting
+#: Annotations.xml:22
+#, no-c-format
+msgid "@Name(\"componentName\")"
+msgstr "@Name(\"componentName\")"
+
+#. Tag: para
+#: Annotations.xml:23
+#, no-c-format
+msgid ""
+"Defines the Seam component name for a class. This annotation is required for "
+"all Seam components."
+msgstr "定义某个类为 Seam 组件。这个注解对于所有 Seam 组件是必需的。"
+
+#. Tag: literal
+#: Annotations.xml:29
+#, no-c-format
+msgid "@Scope"
+msgstr "@Scope"
+
+#. Tag: programlisting
+#: Annotations.xml:31
+#, no-c-format
+msgid "@Scope(ScopeType.CONVERSATION)"
+msgstr "@Scope(ScopeType.CONVERSATION)"
+
+#. Tag: para
+#: Annotations.xml:32
+#, no-c-format
+msgid ""
+"Defines the default context of the component. The possible values are "
+"defined by the <literal>ScopeType</literal> enumeration: <literal>EVENT, "
+"PAGE, CONVERSATION, SESSION, BUSINESS_PROCESS, APPLICATION, STATELESS</"
+"literal>."
+msgstr ""
+"定义组件的缺省上下文。<literal>ScopeType</literal> 枚举定义了它可能的取值:"
+"<literal>EVENT, PAGE, CONVERSATION, SESSION, BUSINESS_PROCESS, APPLICATION, "
+"STATELESS</literal>。"
+
+#. Tag: para
+#: Annotations.xml:35
+#, no-c-format
+msgid ""
+"When no scope is explicitly specified, the default depends upon the "
+"component type. For stateless session beans, the default is "
+"<literal>STATELESS</literal>. For entity beans and stateful session beans, "
+"the default is <literal>CONVERSATION</literal>. For JavaBeans, the default "
+"is <literal>EVENT</literal>."
+msgstr ""
+"如果没有显性地指定作用域,缺省值将取决于组件类型。对于 stateless session "
+"bean,缺省值是 <literal>STATELESS</literal>。而对于 entity bean 和 stateful "
+"session bean,缺省值是 <literal>CONVERSATION</literal>。<literal>EVENT</"
+"literal> 是用于 JavaBean 类型的缺省值。"
+
+#. Tag: literal
+#: Annotations.xml:41
+#, no-c-format
+msgid "@Role"
+msgstr "@Role"
+
+#. Tag: programlisting
+#: Annotations.xml:43
+#, no-c-format
+msgid "@Role(name=\"roleName\", scope=ScopeType.SESSION)"
+msgstr "@Role(name=\"roleName\", scope=ScopeType.SESSION)"
+
+#. Tag: para
+#: Annotations.xml:44
+#, no-c-format
+msgid ""
+"Allows a Seam component to be bound to multiple contexts variables. The "
+"<literal>@Name</literal>/<literal>@Scope</literal> annotations define a "
+"\"default role\". Each <literal>@Role</literal> annotation defines an "
+"additional role."
+msgstr ""
+"允许 Seam 组件被绑定到多个上下文变量。<literal>@Name</literal>/"
+"<literal>@Scope</literal> 注解定义了一个“缺省的角色”。每个 <literal>@Role</"
+"literal> 注解都定义一个其他的角色。"
+
+#. Tag: para
+#: Annotations.xml:49
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the context variable name."
+msgstr "<literal>name</literal> &mdash; 上下文变量的名称。"
+
+#. Tag: para
+#: Annotations.xml:54
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; the context variable scope. When no scope "
+"is explicitly specified, the default depends upon the component type, as "
+"above."
+msgstr ""
+"<literal>scope</literal> &mdash; 上下文变量的作用域。同上面一样,当没有显性地"
+"指定作用域时,缺省的作用域取决于组件类型。"
+
+#. Tag: literal
+#: Annotations.xml:62
+#, no-c-format
+msgid "@Roles"
+msgstr "@Roles"
+
+#. Tag: programlisting
+#: Annotations.xml:64
+#, no-c-format
+msgid ""
+"@Roles({\n"
+"        @Role(name=\"user\", scope=ScopeType.CONVERSATION),\n"
+"        @Role(name=\"currentUser\", scope=ScopeType.SESSION)\n"
+"    })"
+msgstr ""
+"@Roles({\n"
+"        @Role(name=\"user\", scope=ScopeType.CONVERSATION),\n"
+"        @Role(name=\"currentUser\", scope=ScopeType.SESSION)\n"
+"    })"
+
+#. Tag: para
+#: Annotations.xml:65
+#, no-c-format
+msgid "Allows specification of multiple additional roles."
+msgstr "允许指定多个其他的角色。"
+
+#. Tag: literal
+#: Annotations.xml:71
+#, no-c-format
+msgid "@Intercept"
+msgstr "@Intercept"
+
+#. Tag: programlisting
+#: Annotations.xml:73
+#, no-c-format
+msgid "@Intercept(InterceptionType.ALWAYS)"
+msgstr "@Intercept(InterceptionType.ALWAYS)"
+
+#. Tag: para
+#: Annotations.xml:74
+#, no-c-format
+msgid ""
+"Determines when Seam interceptors are active. The possible values are "
+"defined by the <literal>InterceptionType</literal> enumeration: "
+"<literal>ALWAYS, AFTER_RESTORE_VIEW, AFTER_UPDATE_MODEL_VALUES, "
+"INVOKE_APPLICATION, NEVER</literal>."
+msgstr ""
+"决定 Seam 拦截器在何时活动。<literal>InterceptionType</literal> 枚举类型定义"
+"了可能的值:<literal>ALWAYS, AFTER_RESTORE_VIEW, AFTER_UPDATE_MODEL_VALUES, "
+"INVOKE_APPLICATION, NEVER</literal>。"
+
+#. Tag: para
+#: Annotations.xml:77
+#, no-c-format
+msgid ""
+"When no interception type is explicitly specified, the default depends upon "
+"the component type. For entity beans, the default is <literal>NEVER</"
+"literal>. For session beans, message driven beans and JavaBeans, the default "
+"is <literal>ALWAYS</literal>."
+msgstr ""
+"当没有显性地指定拦截类型时,其缺省值取决于组件类型。对于 entity bean,缺省值"
+"是 <literal>NEVER</literal>。对于 session bean、message driven bean 和 "
+"JavaBean,缺省值是 <literal>ALWAYS</literal>。"
+
+#. Tag: literal
+#: Annotations.xml:83
+#, no-c-format
+msgid "@JndiName"
+msgstr "@JndiName"
+
+#. Tag: programlisting
+#: Annotations.xml:85
+#, no-c-format
+msgid "@JndiName(\"my/jndi/name\")"
+msgstr "@JndiName(\"my/jndi/name\")"
+
+#. Tag: para
+#: Annotations.xml:86
+#, no-c-format
+msgid ""
+"Specifies the JNDI name that Seam will use to look up the EJB component. If "
+"no JNDI name is explicitly specified, Seam will use the JNDI pattern "
+"specified by <literal>org.jboss.seam.core.init.jndiPattern</literal>."
+msgstr ""
+"指定 Seam 将用来查找 EJB 组件的 JNDI 名称。如果没有显性地指定 JNDI 名称,"
+"Seam 将使用 <literal>org.jboss.seam.core.init.jndiPattern</literal> 指定的 "
+"JNDI 模式。"
+
+#. Tag: literal
+#: Annotations.xml:92
+#, no-c-format
+msgid "@Conversational"
+msgstr "@Conversational"
+
+#. Tag: programlisting
+#: Annotations.xml:94
+#, no-c-format
+msgid "@Conversational(ifNotBegunOutcome=\"error\")"
+msgstr "@Conversational(ifNotBegunOutcome=\"error\")"
+
+#. Tag: para
+#: Annotations.xml:95
+#, no-c-format
+msgid ""
+"Specifies that a conversation scope component is conversational, meaning "
+"that no method of the component can be called unless a long-running "
+"conversation started by this component is active (unless the method would "
+"begin a new long-running conversation)."
+msgstr ""
+"指定作用域为 conversation 的组件为 conversational,这意味着除非这个组件启动的"
+"长期 conversation 处于活动状态,它的任何方法都不能被调用(除非这个方法开始一"
+"个新的长期的 conversation)。"
+
+#. Tag: literal
+#: Annotations.xml:101
+#, no-c-format
+msgid "<literal>@Startup</literal>"
+msgstr "<literal>@Startup</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:103
+#, no-c-format
+msgid "@Startup(depends={\"org.jboss.core.jndi\", \"org.jboss.core.jta\"})"
+msgstr "@Startup(depends={\"org.jboss.core.jndi\", \"org.jboss.core.jta\"})"
+
+#. Tag: para
+#: Annotations.xml:104
+#, no-c-format
+msgid ""
+"Specifies that an application scope component is started immediately at "
+"initialization time. This is mainly used for certain built-in components "
+"that bootstrap critical infrastructure such as JNDI, datasources, etc."
+msgstr ""
+"指定作用域为 application 的组件在初始时立即开始。这主要用于某些引导关键基础结"
+"构(如 JNDI、数据源等)的内置组件。"
+
+#. Tag: programlisting
+#: Annotations.xml:107
+#, no-c-format
+msgid "<programlisting>@Startup</programlisting>"
+msgstr "<programlisting>@Startup</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:108
+#, no-c-format
+msgid ""
+"Specifies that a session scope component is started immediately at session "
+"creation time."
+msgstr "指定作用域为 session 的组件在 session 被创建时理解启动。"
+
+#. Tag: para
+#: Annotations.xml:113
+#, no-c-format
+msgid ""
+"<literal>depends</literal> &mdash; specifies that the named components must "
+"be started first, if they are installed."
+msgstr "<literal>depends</literal> &mdash; 指定如果安装了命名的组件,它们必须先启动。"
+
+#. Tag: literal
+#: Annotations.xml:121
+#, no-c-format
+msgid "@Install"
+msgstr "@Install"
+
+#. Tag: programlisting
+#: Annotations.xml:123
+#, no-c-format
+msgid "@Install(false)"
+msgstr "@Install(false)"
+
+#. Tag: para
+#: Annotations.xml:124
+#, no-c-format
+msgid ""
+"Specifies whether or not a component should be installed by default. The "
+"lack of an @Install annotation indicates a component should be installed."
+msgstr ""
+"指定在缺省情况下组件是否应该被安装。如果没有使用 @Install 注解则表示该组件应"
+"该被安装。"
+
+#. Tag: programlisting
+#: Annotations.xml:127
+#, no-c-format
+msgid "@Install(dependencies=\"org.jboss.seam.core.jbpm\")"
+msgstr "@Install(dependencies=\"org.jboss.seam.core.jbpm\")"
+
+#. Tag: para
+#: Annotations.xml:128
+#, no-c-format
+msgid ""
+"Specifies that a component should only be stalled if the components listed "
+"as dependencies are also installed."
+msgstr "指定只有作为依赖文件列出的组件也被安装了的情况下,组件才被安装。"
+
+#. Tag: programlisting
+#: Annotations.xml:131
+#, no-c-format
+msgid "@Install(genericDependencies=ManagedQueueSender.class)"
+msgstr "@Install(genericDependencies=ManagedQueueSender.class)"
+
+#. Tag: para
+#: Annotations.xml:132
+#, no-c-format
+msgid ""
+"Specifies that a component should only be installed if a component that is "
+"implemented by a certain class is installed. This is useful when the "
+"dependency doesn&#39;t have a single well-known name."
+msgstr ""
+"指定只有安装了实现某个组件的类时,该组件才被安装。这在依赖性不具有一个被熟知"
+"的名字时很有用。"
+
+#. Tag: programlisting
+#: Annotations.xml:135
+#, no-c-format
+msgid "@Install(classDependencies=\"org.hibernate.Session\")"
+msgstr "@Install(classDependencies=\"org.hibernate.Session\")"
+
+#. Tag: para
+#: Annotations.xml:136
+#, no-c-format
+msgid ""
+"Specifies that a component should only be installed if the named class is in "
+"the classpath."
+msgstr "指定只有命名的类位于 classpath 时才安装该组件。"
+
+#. Tag: programlisting
+#: Annotations.xml:139
+#, no-c-format
+msgid "@Install(precedence=BUILT_IN)"
+msgstr "@Install(precedence=BUILT_IN)"
+
+#. Tag: para
+#: Annotations.xml:140
+#, no-c-format
+msgid ""
+"Specifies the precedence of the component. If multiple components with the "
+"same name exist, the one with the higher precedence will be installed. The "
+"defined precendence values are (in ascending order):"
+msgstr ""
+"指定组件的先后次序。如果存在多个具有相同名字的组件,具有更靠前次序的组件将被"
+"安装。定义好的次序的值是(升序排列):"
+
+#. Tag: para
+#: Annotations.xml:145
+#, no-c-format
+msgid ""
+"<literal>BUILT_IN</literal> &mdash; Precedence of all built-in Seam "
+"components"
+msgstr "<literal>BUILT_IN</literal> &mdash; 所有内置 Seam 组件的次序"
+
+#. Tag: para
+#: Annotations.xml:150
+#, no-c-format
+msgid ""
+"<literal>FRAMEWORK</literal> &mdash; Precedence to use for components of "
+"frameworks which extend Seam"
+msgstr "<literal>FRAMEWORK</literal> &mdash; 用于扩展 Seam 的框架的组件的次序"
+
+#. Tag: para
+#: Annotations.xml:155
+#, no-c-format
+msgid ""
+"<literal>APPLICATION</literal> &mdash; Predence of application components "
+"(the default precedence)"
+msgstr "<literal>APPLICATION</literal> &mdash; 应用程序组件次序(缺省次序)"
+
+#. Tag: para
+#: Annotations.xml:160
+#, no-c-format
+msgid ""
+"<literal>DEPLOYMENT</literal> &mdash; Precedence to use for components which "
+"override application components in a particular deployment"
+msgstr ""
+"<literal>DEPLOYMENT</literal> &mdash; 覆盖某个部署里的应用程序组件的组件的次"
+"序"
+
+#. Tag: para
+#: Annotations.xml:165
+#, no-c-format
+msgid "<literal>MOCK</literal> &mdash; Precedence for mock objects used in testing"
+msgstr "<literal>MOCK</literal> &mdash; 用在测试里的模拟对象的次序"
+
+#. Tag: literal
+#: Annotations.xml:173
+#, no-c-format
+msgid "@Synchronized"
+msgstr "@Synchronized"
+
+#. Tag: programlisting
+#: Annotations.xml:175
+#, no-c-format
+msgid "@Synchronized(timeout=1000)"
+msgstr "@Synchronized(timeout=1000)"
+
+#. Tag: para
+#: Annotations.xml:176
+#, no-c-format
+msgid ""
+"Specifies that a component is accessed concurrently by multiple clients, and "
+"that Seam should serialize requests. If a request is not able to obtain its "
+"lock on the component in the given timeout period, an exception will be "
+"raised."
+msgstr ""
+"指定对于被多个客户同时访问的组件,Seam 应该将请求串行化。如果某个请求不能在给"
+"定的时间内获得组件的锁,异常将被抛出。"
+
+#. Tag: literal
+#: Annotations.xml:182
+#, no-c-format
+msgid "<literal>@ReadOnly</literal>"
+msgstr "<literal>@ReadOnly</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:184
+#, no-c-format
+msgid "<programlisting>@ReadOnly</programlisting>"
+msgstr "<programlisting>@ReadOnly</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:185
+#, no-c-format
+msgid ""
+"Specifies that a JavaBean component or component method does not require "
+"state replication at the end of the invocation."
+msgstr "指定 JavaBean 组件或组件方法在调用结束时不需要状态复制。"
+
+#. Tag: title
+#: Annotations.xml:194
+#, no-c-format
+msgid "Annotations for bijection"
+msgstr "由于双向注入的注解"
+
+#. Tag: para
+#: Annotations.xml:195
+#, no-c-format
+msgid ""
+"The next two annotations control bijection. These attributes occur on "
+"component instance variables or property accessor methods."
+msgstr "下两个注解控制双向注入。这些属性用于组件实例变量或属性访问方法。"
+
+#. Tag: literal
+#: Annotations.xml:200
+#, no-c-format
+msgid "<literal>@In</literal>"
+msgstr "<literal>@In</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:202
+#, no-c-format
+msgid "<programlisting>@In</programlisting>"
+msgstr "<programlisting>@In</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:203
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. If the context "
+"variable is null, an exception will be thrown."
+msgstr ""
+"指定组件属性在每个组件调用开始时从上下文变量里注入。如果该上下文变量为空,异"
+"常将被抛出。"
+
+#. Tag: programlisting
+#: Annotations.xml:206
+#, no-c-format
+msgid "@In(required=false)"
+msgstr "@In(required=false)"
+
+#. Tag: para
+#: Annotations.xml:207
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. The context variable "
+"may be null."
+msgstr "指定组件属性在每个组件调用开始时从上下文变量里注入。该上下文变量可以为空。"
+
+#. Tag: programlisting
+#: Annotations.xml:210
+#, no-c-format
+msgid "@In(create=true)"
+msgstr "@In(create=true)"
+
+#. Tag: para
+#: Annotations.xml:211
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. If the context "
+"variable is null, an instance of the component is instantiated by Seam."
+msgstr ""
+"指定组件属性在每个组件调用开始时从上下文变量里注入。如果该上下文变量为空,"
+"Seam 将初始化该组件的一个实例。"
+
+#. Tag: programlisting
+#: Annotations.xml:214
+#, no-c-format
+msgid "@In(value=\"contextVariableName\")"
+msgstr "@In(value=\"contextVariableName\")"
+
+#. Tag: para
+#: Annotations.xml:215 Annotations.xml:260
+#, no-c-format
+msgid ""
+"Specifies the name of the context variable explicitly, instead of using the "
+"annotated instance variable name."
+msgstr "显性地指定上下文变量的名字,而不是使用被注解的实例变量名。"
+
+#. Tag: programlisting
+#: Annotations.xml:218
+#, no-c-format
+msgid "@In(value=\"#{customer.addresses[&#39;shipping&#39;]}\")"
+msgstr "@In(value=\"#{customer.addresses[&#39;shipping&#39;]}\")"
+
+#. Tag: para
+#: Annotations.xml:219
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected by evaluating a JSF "
+"EL expression at the beginning of each component invocation."
+msgstr "指定组件属性在每个组件调用开始时根据对 JSF EL 表达式求值来注入。"
+
+#. Tag: para
+#: Annotations.xml:224
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"Default to the name of the component attribute. Alternatively, specifies a "
+"JSF EL expression, surrounded by <literal>#{...}</literal>."
+msgstr ""
+"<literal>value</literal> &mdash; 指定上下文变量的名字。缺省为组件属性的名字。"
+"或者用 <literal>#{...}</literal> 的形式指定 JSF EL 表达式。"
+
+#. Tag: para
+#: Annotations.xml:229
+#, no-c-format
+msgid ""
+"<literal>create</literal> &mdash; specifies that Seam should instantiate the "
+"component with the same name as the context variable if the context variable "
+"is undefined (null) in all contexts. Default to false."
+msgstr ""
+"<literal>create</literal> &mdash; 指定如果这个上下文变量在所有上下文里都没有"
+"定义(为 null),Seam 应该用和上下文变量相同的名字初始化组件。缺省为 false。"
+
+#. Tag: para
+#: Annotations.xml:234
+#, no-c-format
+msgid ""
+"<literal>required</literal> &mdash; specifies Seam should throw an exception "
+"if the context variable is undefined in all contexts."
+msgstr ""
+"<literal>required</literal> &mdash; 指定如果该上下文变量在所有上下文里都没有"
+"定义,则 Seam 应该抛出一个异常。"
+
+#. Tag: literal
+#: Annotations.xml:242
+#, no-c-format
+msgid "<literal>@Out</literal>"
+msgstr "<literal>@Out</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:244
+#, no-c-format
+msgid "<programlisting>@Out</programlisting>"
+msgstr "<programlisting>@Out</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:245
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is a Seam component is to be "
+"outjected to its context variable at the end of the invocation. If the "
+"attribute is null, an exception is thrown."
+msgstr ""
+"指定值为 Seam 组件的组件属性在调用结束时注出到它的上下文变量里。如果该属性为"
+"空(null),异常将被抛出。"
+
+#. Tag: programlisting
+#: Annotations.xml:248
+#, no-c-format
+msgid "@Out(required=false)"
+msgstr "@Out(required=false)"
+
+#. Tag: para
+#: Annotations.xml:249
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is a Seam component is to be "
+"outjected to its context variable at the end of the invocation. The "
+"attribute may be null."
+msgstr ""
+"指定值为 Seam 组件的组件属性在调用结束时注出到它的上下文变量里。该属性可为空"
+"(null)。"
+
+#. Tag: programlisting
+#: Annotations.xml:252
+#, no-c-format
+msgid "@Out(scope=ScopeType.SESSION)"
+msgstr "@Out(scope=ScopeType.SESSION)"
+
+#. Tag: para
+#: Annotations.xml:253
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is <emphasis>not</emphasis> a Seam "
+"component type is to be outjected to a specific scope at the end of the "
+"invocation."
+msgstr ""
+"指定值<emphasis>不</emphasis>为 Seam 组件类型的组件属性在调用结束时注出到特定"
+"的作用域。"
+
+#. Tag: para
+#: Annotations.xml:256
+#, no-c-format
+msgid ""
+"Alternatively, if no scope is explicitly specified, the scope of the "
+"component with the <literal>@Out</literal> attribute is used (or the "
+"<literal>EVENT</literal> scope if the component is stateless)."
+msgstr ""
+"或者,如果没有显性地指定作用域,将使用带有 <literal>@Out</literal> 属性的组件"
+"的作用域(如果组件是 stateless 类型,则使用 <literal>EVENT</literal> 作用"
+"域)。"
+
+#. Tag: programlisting
+#: Annotations.xml:259
+#, no-c-format
+msgid "@Out(value=\"contextVariableName\")"
+msgstr "@Out(value=\"contextVariableName\")"
+
+#. Tag: para
+#: Annotations.xml:265
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"Default to the name of the component attribute."
+msgstr "<literal>value</literal> &mdash; 指定上下文变量的名字。缺省为组件属性的名字。"
+
+#. Tag: para
+#: Annotations.xml:270
+#, no-c-format
+msgid ""
+"<literal>required</literal> &mdash; specifies Seam should throw an exception "
+"if the component attribute is null during outjection."
+msgstr ""
+"<literal>required</literal> &mdash; 指定如果组件属性在注出时为空(null),则 "
+"Seam 应该抛出一个异常。"
+
+#. Tag: para
+#: Annotations.xml:278
+#, no-c-format
+msgid ""
+"Note that it is quite common for these annotations to occur together, for "
+"example:"
+msgstr "注意,把这些注解一起使用是相当常见的,例如:"
+
+#. Tag: programlisting
+#: Annotations.xml:281
+#, no-c-format
+msgid "@In(create=true) @Out private User currentUser;"
+msgstr "@In(create=true) @Out private User currentUser;"
+
+#. Tag: para
+#: Annotations.xml:282
+#, no-c-format
+msgid ""
+"The next annotation supports the <emphasis>manager component</emphasis> "
+"pattern, where a Seam component that manages the lifecycle of an instance of "
+"some other class that is to be injected. It appears on a component getter "
+"method."
+msgstr ""
+"下一个注解支持 <emphasis>manager component</emphasis> 模式,管理某个其他类的"
+"实例的生命周期的 Seam 组件将被注入。它出现在组件的 getter 方法里。"
+
+#. Tag: literal
+#: Annotations.xml:287
+#, no-c-format
+msgid "<literal>@Unwrap</literal>"
+msgstr "<literal>@Unwrap</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:289
+#, no-c-format
+msgid "<programlisting>@Unwrap</programlisting>"
+msgstr "<programlisting>@Unwrap</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:290
+#, no-c-format
+msgid ""
+"Specifies that the object returned by the annotated getter method is the "
+"thing that is injected instead of the component instance itself."
+msgstr "指定被注解的 getter 方法所返回的对象而不是组件实例自身被注入。"
+
+#. Tag: para
+#: Annotations.xml:296
+#, no-c-format
+msgid ""
+"The next annotation supports the <emphasis>factory component</emphasis> "
+"pattern, where a Seam component is responsible for initializing the value of "
+"a context variable. This is especially useful for initializing any state "
+"needed for rendering the response to a non-faces request. It appears on a "
+"component method."
+msgstr ""
+"下一个注解支持 <emphasis>factory component</emphasis> 模式,此时 Seam 组件负"
+"责初始化上下文变量的值。这对于初始化任何用于显示对 non-faces 请求的响应的状态"
+"尤其有用。它出现在组件方法里。"
+
+#. Tag: literal
+#: Annotations.xml:301
+#, no-c-format
+msgid "@Factory"
+msgstr "@Factory"
+
+#. Tag: programlisting
+#: Annotations.xml:303
+#, no-c-format
+msgid "@Factory(\"processInstance\")"
+msgstr "@Factory(\"processInstance\")"
+
+#. Tag: para
+#: Annotations.xml:304
+#, no-c-format
+msgid ""
+"Specifies that the method of the component is used to initialize the value "
+"of the named context variable, when the context variable has no value. This "
+"style is used with methods that return <literal>void</literal>."
+msgstr ""
+"指定在上下文变量不具有值时,组件的方法被用来初始化该命名上下文变量的值。这个"
+"风格用于返回值为 <literal>void</literal> 的方法。"
+
+#. Tag: programlisting
+#: Annotations.xml:307
+#, no-c-format
+msgid "@Factory(\"processInstance\", scope=CONVERSATION)"
+msgstr "@Factory(\"processInstance\", scope=CONVERSATION)"
+
+#. Tag: para
+#: Annotations.xml:308
+#, no-c-format
+msgid ""
+"Specifies that the method returns a value that Seam should use to initialize "
+"the value of the named context variable, when the context variable has no "
+"value. This style is used with methods that return a value. If no scope is "
+"explicitly specified, the scope of the component with the <literal>@Factory</"
+"literal> method is used (unless the component is stateless, in which case "
+"the <literal>EVENT</literal> context is used)."
+msgstr ""
+"指定当上下文变量不具有值时,该方法返回 Seam 应该用来初始化命名上下文变量的值。这种风格适用于返回值的方法。如果没有显性地指定作用域,带有 <literal>@Factory</"
+"literal> 方法的组件的作用域将使用(除非组件为使用 <literal>EVENT</literal> 上下文的 stateless 组件)。"
+
+#. Tag: para
+#: Annotations.xml:313
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"If the method is a getter method, default to the JavaBeans property name."
+msgstr "<literal>value</literal> &mdash; 指定上下文变量的名字。如果这个方法是一个 getter 方法,则缺省为 JavaBean 的属性名称。"
+
+#. Tag: para
+#: Annotations.xml:318
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; specifies the scope that Seam should bind "
+"the returned value to. Only meaningful for factory methods which return a "
+"value."
+msgstr "<literal>scope</literal> &mdash; 指定 Seam 应该绑定返回值的作用域。这对于返回值的工厂方法才有意义。"
+
+#. Tag: para
+#: Annotations.xml:326
+#, no-c-format
+msgid "This annotation lets you inject a <literal>Log</literal>:"
+msgstr "这个注解可让你注入 <literal>Log</literal>:"
+
+#. Tag: literal
+#: Annotations.xml:331
+#, no-c-format
+msgid "@Logger"
+msgstr "@Logger"
+
+#. Tag: programlisting
+#: Annotations.xml:333
+#, no-c-format
+msgid "@Logger(\"categoryName\")"
+msgstr "@Logger(\"categoryName\")"
+
+#. Tag: para
+#: Annotations.xml:334
+#, no-c-format
+msgid ""
+"Specifies that a component field is to be injected with an instance of "
+"<literal>org.jboss.seam.log.Log</literal>. For entity beans, the field must "
+"be declared as static."
+msgstr "指定用 <literal>org.jboss.seam.log.Log</literal> 的实例注入组件字段。对于 entity bean,这个字段必须声明为静态类型。"
+
+#. Tag: para
+#: Annotations.xml:339
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the log category. "
+"Default to the name of the component class."
+msgstr "<literal>value</literal> &mdash; 指定日志类别的名称。缺省为组件类的名字。"
+
+#. Tag: para
+#: Annotations.xml:347
+#, no-c-format
+msgid "The last annotation lets you inject a request parameter value:"
+msgstr "最后的这个注解可让你注入一个请求参数值:"
+
+#. Tag: literal
+#: Annotations.xml:352
+#, no-c-format
+msgid "@RequestParameter"
+msgstr "@RequestParameter"
+
+#. Tag: programlisting
+#: Annotations.xml:354
+#, no-c-format
+msgid "@RequestParameter(\"parameterName\")"
+msgstr "@RequestParameter(\"parameterName\")"
+
+#. Tag: para
+#: Annotations.xml:355
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected with the value of a "
+"request parameter. Basic type conversions are performed automatically."
+msgstr "指定用请求参数的值注入的组件属性。基本类型的转换将自动进行。"
+
+#. Tag: para
+#: Annotations.xml:360
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the request "
+"parameter. Default to the name of the component attribute."
+msgstr "<literal>value</literal> &mdash; 指定请求参数的名称。缺省为组件属性的名称。"
+
+#. Tag: title
+#: Annotations.xml:371
+#, no-c-format
+msgid "Annotations for component lifecycle methods"
+msgstr "用于组件生命周期方法的注解"
+
+#. Tag: para
+#: Annotations.xml:372
+#, no-c-format
+msgid ""
+"These annotations allow a component to react to its own lifecycle events. "
+"They occur on methods of the component. There may be only one of each per "
+"component class."
+msgstr "这些注解允许组件响应自己的生命周期事件。它们用在组件的方法里。每个组件类只能有一个注解。"
+
+#. Tag: literal
+#: Annotations.xml:377
+#, no-c-format
+msgid "<literal>@Create</literal>"
+msgstr "<literal>@Create</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:379
+#, no-c-format
+msgid "<programlisting>@Create</programlisting>"
+msgstr "<programlisting>@Create</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:380
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when an instance of the component "
+"is instantiated by Seam. Note that create methods are only supported for "
+"JavaBeans and stateful session beans."
+msgstr "指定当Seam 初始化组件实例时,这个方法应该被调用。注意,create 方法仅被 JavaBeans 和 stateful session bean 所支持。"
+
+#. Tag: literal
+#: Annotations.xml:386
+#, no-c-format
+msgid "<literal>@Destroy</literal>"
+msgstr "<literal>@Destroy</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:388
+#, no-c-format
+msgid "<programlisting>@Destroy</programlisting>"
+msgstr "<programlisting>@Destroy</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:389
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when the context ends and its "
+"context variables are destroyed. Note that create methods are only supported "
+"for JavaBeans and stateful session beans."
+msgstr "指定当上下文结束且上下文变量被销毁时,这个方法应该被调用。注意,create 方法仅被 JavaBeans 和 stateful session bean 所支持。"
+
+#. Tag: para
+#: Annotations.xml:392
+#, no-c-format
+msgid ""
+"Note that all stateful session bean components <emphasis>must</emphasis> "
+"define a method annotated <literal>@Destroy @Remove</literal> in order to "
+"guarantee destruction of the stateful bean when a context ends."
+msgstr "注意,所有的 stateful session bean 组件都<emphasis>必须</emphasis>定义一个用 <literal>@Destroy @Remove</literal> 注解的方法,其目的是保证在上下文结束时销毁 stateful bean。"
+
+#. Tag: para
+#: Annotations.xml:395
+#, no-c-format
+msgid ""
+"Destroy methods should be used only for cleanup. <emphasis>Seam catches, "
+"logs and swallows any exception that propagates out of a destroy method.</"
+"emphasis>"
+msgstr ""
+"Destroy 方法用于该只用于清除工作。<emphasis>Seam 会捕获任何在 destroy 方法外传递的异常。</"
+"emphasis>"
+
+#. Tag: literal
+#: Annotations.xml:401
+#, no-c-format
+msgid "@Observer"
+msgstr "@Observer"
+
+#. Tag: programlisting
+#: Annotations.xml:403
+#, no-c-format
+msgid "@Observer(\"somethingChanged\")"
+msgstr "@Observer(\"somethingChanged\")"
+
+#. Tag: para
+#: Annotations.xml:404
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when a component-driven event of "
+"the specified type occurs."
+msgstr "指定当指定类型的组件驱动事件发生时,这个方法应该被调用。"
+
+#. Tag: programlisting
+#: Annotations.xml:407
+#, no-c-format
+msgid "@Observer(value=\"somethingChanged\",create=false)"
+msgstr "@Observer(value=\"somethingChanged\",create=false)"
+
+#. Tag: para
+#: Annotations.xml:408
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when an event of the specified "
+"type occurs but that an instance should not be created if one doesn&#39;t "
+"exist. If an instance does not exist and create is false, the event will not "
+"be observed. The default value for create is true."
+msgstr "指定当指定类型的事件发生时,这个方法应该被调用,但如果实例不存在则不应该被创建。如果实例不存在且 create 为 false,事件将不会被观察。缺省的 create 值为 true。"
+
+#. Tag: title
+#: Annotations.xml:417
+#, no-c-format
+msgid "Annotations for context demarcation"
+msgstr "用于上下文限界的注解"
+
+#. Tag: para
+#: Annotations.xml:418
+#, no-c-format
+msgid ""
+"These annotations provide declarative conversation demarcation. They appear "
+"on methods of Seam components, usually action listener methods."
+msgstr "这些注解提供声明式的上下文限界。它们出现在 Seam 组件的方法且通常是 action listener 方法里。"
+
+#. Tag: para
+#: Annotations.xml:421
+#, no-c-format
+msgid ""
+"Every web request has a conversation context associated with it. Most of "
+"these conversations end at the end of the request. If you want a "
+"conversation that span multiple requests, you must \"promote\" the current "
+"conversation to a <emphasis>long-running conversation</emphasis> by calling "
+"a method marked with <literal>@Begin</literal>."
+msgstr "每个 web 请求都有一个 conversation 上下文与之相关联。这些 conversation 大多数在请求结束时终止。如果你想要 conversation 跨越多个请求,你必须调用注解为 <literal>@Begin</literal> 的方法将当前的 conversation“升级”为<emphasis>长期的(long-running)conversation</emphasis>。"
+
+#. Tag: literal
+#: Annotations.xml:426
+#, no-c-format
+msgid "<literal>@Begin</literal>"
+msgstr "<literal>@Begin</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:430
+#, no-c-format
+msgid "<programlisting>@Begin</programlisting>"
+msgstr "<programlisting>@Begin</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:431
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation begins when this method returns a "
+"non-null outcome without exception."
+msgstr "指定当这个方法返回非空值且未抛出异常时,开始一个长期的(long-running)conversation。"
+
+#. Tag: programlisting
+#: Annotations.xml:436
+#, no-c-format
+msgid "@Begin(ifOutcome={\"success\", \"continue\"})"
+msgstr "@Begin(ifOutcome={\"success\", \"continue\"})"
+
+#. Tag: para
+#: Annotations.xml:437
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation begins when this action listener "
+"method returns with one of the given outcomes."
+msgstr "指定当这个 action listener 方法返回给定 outcome 中的一个时,开始一个长期的(long-running)conversation。"
+
+#. Tag: programlisting
+#: Annotations.xml:442
+#, no-c-format
+msgid "@Begin(join=true)"
+msgstr "@Begin(join=true)"
+
+#. Tag: para
+#: Annotations.xml:443
+#, no-c-format
+msgid ""
+"Specifies that if a long-running conversation is already in progress, the "
+"conversation context is simply propagated."
+msgstr "指定如果某个长期的 conversation 正在运行,conversation 上下文将被简单地传递。"
+
+#. Tag: programlisting
+#: Annotations.xml:448
+#, no-c-format
+msgid "@Begin(nested=true)"
+msgstr "@Begin(nested=true)"
+
+#. Tag: para
+#: Annotations.xml:449
+#, no-c-format
+msgid ""
+"Specifies that if a long-running conversation is already in progress, a new "
+"<emphasis>nested</emphasis> conversation context begins. The nested "
+"conversation will end when the next <literal>@End</literal> is encountered, "
+"and the outer conversation will resume. It is perfectly legal for multiple "
+"nested conversations to exist concurrently in the same outer conversation."
+msgstr "指定如果某个长期的 conversation 正在运行,将开始新的<emphasis>嵌套的</emphasis> conversation 上下文。嵌套的 conversation 将在遇到下一个 <literal>@End</literal> 时结束,且外部的 conversation 将恢复执行。多个嵌套的 conversation 完全可以同时存在于相同的外部 conversation 里。"
+
+#. Tag: programlisting
+#: Annotations.xml:454
+#, no-c-format
+msgid "@Begin(pageflow=\"process definition name\")"
+msgstr "@Begin(pageflow=\"process definition name\")"
+
+#. Tag: para
+#: Annotations.xml:455
+#, no-c-format
+msgid ""
+"Specifies a jBPM process definition name that defines the pageflow for this "
+"conversation."
+msgstr "指定定义这个 conversation 的页面流程的 jBPM 过程定义名称。"
+
+#. Tag: programlisting
+#: Annotations.xml:460
+#, no-c-format
+msgid "@Begin(flushMode=FlushModeType.MANUAL)"
+msgstr "@Begin(flushMode=FlushModeType.MANUAL)"
+
+#. Tag: para
+#: Annotations.xml:461
+#, no-c-format
+msgid ""
+"Specify the flush mode of any Seam-managed persistence contexts. "
+"<literal>flushMode=FlushModeType.MANUAL</literal> supports the use of "
+"<emphasis>atomic conversations</emphasis> where all write operations are "
+"queued in the conversation context until an explicit call to <literal>flush()"
+"</literal> (which usually occurs at the end of the conversation)."
+msgstr "指定任何 Seam 管理的持久性上下文的刷新模式。<literal>flushMode=FlushModeType.MANUAL</literal> 支持在显性调用 <literal>flush()</literal> 前(通常发生在 conversation 结束时)使用 <emphasis>atomic conversations</emphasis>,此时所有的些操作都在 conversation 上下文里排队。"
+
+#. Tag: para
+#: Annotations.xml:468
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in a new long-running conversation context."
+msgstr "<literal>ifOutcome</literal> &mdash; 指定导致产生新的长期 conversation 上下文的 JSF outcome。"
+
+#. Tag: para
+#: Annotations.xml:473
+#, no-c-format
+msgid ""
+"<literal>join</literal> &mdash; determines the behavior when a long-running "
+"conversation is already in progress. If <literal>true</literal>, the context "
+"is propagated. If <literal>false</literal>, an exception is thrown. Default "
+"to <literal>false</literal>. This setting is ignored when "
+"<literal>nested=true</literal> is specified"
+msgstr "<literal>join</literal> &mdash; 决定长期 conversation 已经运行时的行为。如果为 <literal>true</literal>,上下文会被传递。如果为 <literal>false</literal>,异常将被抛出。缺省值为 <literal>false</literal>。当指定 <literal>nested=true</literal> 时这个设置将被忽略。"
+
+#. Tag: para
+#: Annotations.xml:478
+#, no-c-format
+msgid ""
+"<literal>nested</literal> &mdash; specifies that a nested conversation "
+"should be started if a long-running conversation is already in progress."
+msgstr "<literal>nested</literal> &mdash; 指定如果长期 conversation 已经运行时,嵌套的 conversation 应该被启动。"
+
+#. Tag: para
+#: Annotations.xml:483 Annotations.xml:550 Annotations.xml:574
+#, no-c-format
+msgid ""
+"<literal>flushMode</literal> &mdash; set the flush mode of any Seam-managed "
+"Hibernate sessions or JPA persistence contexts that are created during this "
+"conversation."
+msgstr "<literal>flushMode</literal> &mdash; 设置在此 conversation 里创建的任何 Seam 管理的 Hibernate session 或 JPA 持久性上下文的刷新模式。"
+
+#. Tag: para
+#: Annotations.xml:488
+#, no-c-format
+msgid ""
+"<literal>pageflow</literal> &mdash; a process definition name of a jBPM "
+"process definition deployed via <literal>org.jboss.seam.core.jbpm."
+"pageflowDefinitions.</literal>"
+msgstr ""
+"<literal>pageflow</literal> &mdash; 通过 <literal>org.jboss.seam.core.jbpm."
+"pageflowDefinitions</literal> 部署的 jBPM 过程定义的名称。"
+
+#. Tag: literal
+#: Annotations.xml:498
+#, no-c-format
+msgid "<literal>@End</literal>"
+msgstr "<literal>@End</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:504
+#, no-c-format
+msgid "<programlisting>@End</programlisting>"
+msgstr "<programlisting>@End</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:505
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation ends when this method returns a "
+"non-null outcome without exception."
+msgstr "指定当这个方法返回非空的 outcome 且未抛出异常时,长期的 conversation 应该结束。"
+
+#. Tag: programlisting
+#: Annotations.xml:510
+#, no-c-format
+msgid ""
+"@End(ifOutcome={\"success\", \"error\"}, evenIfException={SomeException."
+"class, OtherException.class})"
+msgstr ""
+"@End(ifOutcome={\"success\", \"error\"}, evenIfException={SomeException."
+"class, OtherException.class})"
+
+#. Tag: para
+#: Annotations.xml:511
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation ends when this action listener "
+"method returns with one of the given outcomes or throws one of the specified "
+"classes of exception."
+msgstr "指定当 action listener 方法返回给定 outcome 或抛出指定的异常类时结束 long-running conversation。"
+
+#. Tag: para
+#: Annotations.xml:518
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in the end of the current long-running conversation."
+msgstr "<literal>ifOutcome</literal> &mdash; 指定导致当前 long-running conversation 结束的 JSF outcome。 "
+
+#. Tag: para
+#: Annotations.xml:523 Annotations.xml:617
+#, no-c-format
+msgid ""
+"<literal>beforeRedirect</literal> &mdash; by default, the conversation will "
+"not actually be destroyed until after any redirect has occurred. Setting "
+"<literal>beforeRedirect=true</literal> specifies that the conversation "
+"should be destroyed at the end of the current request, and that the redirect "
+"will be processed in a new temporary conversation context."
+msgstr "<literal>beforeRedirect</literal> &mdash; 在缺省情况下,一直到重定向发生时,conversation 才实际上被销毁。设置 <literal>beforeRedirect=true</literal> 指定了这个 conversation 应该在当前请求结束时被销毁,且重定向将在新的临时 conversation 上下文里进行处理。"
+
+#. Tag: literal
+#: Annotations.xml:534
+#, no-c-format
+msgid "<literal>@StartTask</literal>"
+msgstr "<literal>@StartTask</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:536
+#, no-c-format
+msgid "<programlisting>@StartTask</programlisting>"
+msgstr "<programlisting>@StartTask</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:537
+#, no-c-format
+msgid ""
+"\"Starts\" a jBPM task. Specifies that a long-running conversation begins "
+"when this method returns a non-null outcome without exception. This "
+"conversation is associated with the jBPM task specified in the named request "
+"parameter. Within the context of this conversation, a business process "
+"context is also defined, for the business process instance of the task "
+"instance."
+msgstr "“启动”jBPM 任务。指定在这个方法返回非空 outcome 且无异常时开始一个 long-running conversation。这个 conversation 和在命名请求参数里指定的 jBPM 相关联。在这个 conversation 的上下文里,也为任务实例的商业过程实例定义了一个商业过程上下文。"
+
+#. Tag: para
+#: Annotations.xml:540
+#, no-c-format
+msgid ""
+"The jBPM <literal>TaskInstance</literal> will be available in a request "
+"context variable named <literal>taskInstance</literal>. The jPBM "
+"<literal>ProcessInstance</literal> will be available in a request context "
+"variable named <literal>processInstance</literal>. (Of course, these objects "
+"are available for injection via <literal>@In</literal>.)"
+msgstr ""
+"jBPM <literal>TaskInstance</literal> 将以 <literal>taskInstance</literal> 请求上下文变量出现。jPBM "
+"<literal>ProcessInstance</literal> 将用作请求上下文变量 <literal>processInstance</literal>。(当然,这些对象都可以通过 <literal>@In</literal> 注入。)"
+
+#. Tag: para
+#: Annotations.xml:545 Annotations.xml:569
+#, no-c-format
+msgid ""
+"<literal>taskIdParameter</literal> &mdash; the name of a request parameter "
+"which holds the id of the task. Default to <literal>\"taskId\"</literal>, "
+"which is also the default used by the Seam <literal>taskList</literal> JSF "
+"component."
+msgstr "<literal>taskIdParameter</literal> &mdash; 保存任务 ID 的请求参数的名称。缺省为 <literal>\"taskId\"</literal>,这也是 Seam 的 <literal>taskList</literal> JSF 组件使用的缺省值。"
+
+#. Tag: literal
+#: Annotations.xml:558
+#, no-c-format
+msgid "<literal>@BeginTask</literal>"
+msgstr "<literal>@BeginTask</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:560
+#, no-c-format
+msgid "<programlisting>@BeginTask</programlisting>"
+msgstr "<programlisting>@BeginTask</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:561
+#, no-c-format
+msgid ""
+"Resumes work on an incomplete jBPM task. Specifies that a long-running "
+"conversation begins when this method returns a non-null outcome without "
+"exception. This conversation is associated with the jBPM task specified in "
+"the named request parameter. Within the context of this conversation, a "
+"business process context is also defined, for the business process instance "
+"of the task instance."
+msgstr ""
+"继续未完成的 jBPM 任务。指定在这个方法返回非空的 outcome 且无异常时开始一个 long-running "
+"conversation。这个 conversation 和在命名请求参数里指定的 jBPM 任务相关联。在这个 conversation 的上下文里,也为任务实例的商业过程实例定义了一个商业过程上下文。"
+
+#. Tag: para
+#: Annotations.xml:564
+#, no-c-format
+msgid ""
+"The jBPM <literal>TaskInstance</literal> will be available in a request "
+"context variable named <literal>taskInstance</literal>. The jPBM "
+"<literal>ProcessInstance</literal> will be available in a request context "
+"variable named <literal>processInstance</literal>."
+msgstr ""
+"jBPM <literal>TaskInstance</literal> 将以请求上下文变量 <literal>taskInstance</literal> 出现。jPBM "
+"<literal>ProcessInstance</literal> 将用作请求上下文变量 <literal>processInstance</literal>。"
+
+#. Tag: literal
+#: Annotations.xml:582
+#, no-c-format
+msgid "<literal>@EndTask</literal>"
+msgstr "<literal>@EndTask</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:587
+#, no-c-format
+msgid "<programlisting>@EndTask</programlisting>"
+msgstr "<programlisting>@EndTask</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:588
+#, no-c-format
+msgid ""
+"\"Ends\" a jBPM task. Specifies that a long-running conversation ends when "
+"this method returns a non-null outcome, and that the current task is "
+"complete. Triggers a jBPM transition. The actual transition triggered will "
+"be the default transition unless the application has called "
+"<literal>Transition.setName()</literal> on the built-in component named "
+"<literal>transition</literal>."
+msgstr "“结束”jBPM 任务。指定在这个方法返回非空 outcome 且当前任务已完成时结束一个 long-running conversation。它触发一个 jBPM transition。实际触发的将是缺省的 transition,除非应用程序已经在内置的 <literal>transition</literal> 组件上调用了 <literal>Transition.setName()</literal>。"
+
+#. Tag: programlisting
+#: Annotations.xml:593
+#, no-c-format
+msgid "@EndTask(transition=\"transitionName\")"
+msgstr "@EndTask(transition=\"transitionName\")"
+
+#. Tag: para
+#: Annotations.xml:594
+#, no-c-format
+msgid "Triggers the given jBPM transition."
+msgstr "触发给定的 jBPM transition。"
+
+#. Tag: programlisting
+#: Annotations.xml:599
+#, no-c-format
+msgid "@EndTask(ifOutcome={\"success\", \"continue\"})"
+msgstr "@EndTask(ifOutcome={\"success\", \"continue\"})"
+
+#. Tag: para
+#: Annotations.xml:600
+#, no-c-format
+msgid ""
+"Specifies that the task ends when this method returns one of the listed "
+"outcomes."
+msgstr "指定在这个方法返回列出的 outcome 中的一个时结束这个任务。"
+
+#. Tag: para
+#: Annotations.xml:607
+#, no-c-format
+msgid ""
+"<literal>transition</literal> &mdash; the name of the jBPM transition to be "
+"triggered when ending the task. Defaults to the default transition."
+msgstr "<literal>transition</literal> &mdash; 当结束任务时触发的 jBPM transition 的名字。缺省值为缺省的 transition。"
+
+#. Tag: para
+#: Annotations.xml:612
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in the end of the task."
+msgstr "<literal>ifOutcome</literal> &mdash; 指定导致任务结束的 JSF outcome 值。"
+
+#. Tag: literal
+#: Annotations.xml:628
+#, no-c-format
+msgid "@CreateProcess"
+msgstr "@CreateProcess"
+
+#. Tag: programlisting
+#: Annotations.xml:630
+#, no-c-format
+msgid "@CreateProcess(definition=\"process definition name\")"
+msgstr "@CreateProcess(definition=\"process definition name\")"
+
+#. Tag: para
+#: Annotations.xml:631
+#, no-c-format
+msgid ""
+"Creates a new jBPM process instance when the method returns a non-null "
+"outcome without exception. The <literal>ProcessInstance</literal> object "
+"will be available in a context variable named <literal>processInstance</"
+"literal>."
+msgstr ""
+"当这个方法返回非空 outcome 且没有异常时创建新的 jBPM 过程实例。<literal>ProcessInstance</literal> 对象将用作上下文变量 <literal>processInstance</"
+"literal>。"
+
+#. Tag: para
+#: Annotations.xml:636
+#, no-c-format
+msgid ""
+"<literal>definition</literal> &mdash; the name of the jBPM process "
+"definition deployed via <literal>org.jboss.seam.core.jbpm."
+"processDefinitions</literal>."
+msgstr ""
+"<literal>definition</literal> &mdash; 通过 <literal>org.jboss.seam.core.jbpm."
+"processDefinitions</literal> 部署的 jBPM 过程定义的名字。"
+
+#. Tag: literal
+#: Annotations.xml:644
+#, no-c-format
+msgid "@ResumeProcess"
+msgstr "@ResumeProcess"
+
+#. Tag: programlisting
+#: Annotations.xml:646
+#, no-c-format
+msgid "@ResumeProcess(processIdParameter=\"processId\")"
+msgstr "@ResumeProcess(processIdParameter=\"processId\")"
+
+#. Tag: para
+#: Annotations.xml:647
+#, no-c-format
+msgid ""
+"Re-enters the scope of an existing jBPM process instance when the method "
+"returns a non-null outcome without exception. The <literal>ProcessInstance</"
+"literal> object will be available in a context variable named "
+"<literal>processInstance</literal>."
+msgstr ""
+"当该方法返回非空 outcome 且无异常时重新进入现有 jBPM 过程实例的作用域。"
+"<literal>ProcessInstance</"
+"literal> 对象将用作上下文变量 <literal>processInstance</literal>。"
+
+#. Tag: para
+#: Annotations.xml:652
+#, no-c-format
+msgid ""
+"<literal>processIdParameter</literal> &mdash; the name a request parameter "
+"holding the process id. Default to <literal>\"processId\"</literal>."
+msgstr "<literal>processIdParameter</literal> &mdash; 保存过程 ID 的请求参数的名字。缺省为 <literal>\"processId\"</literal>。"
+
+#. Tag: title
+#: Annotations.xml:663
+#, no-c-format
+msgid "Annotations for transaction demarcation"
+msgstr "用于 transaction 限界的注解"
+
+#. Tag: para
+#: Annotations.xml:664
+#, no-c-format
+msgid ""
+"Seam provides an annotation that lets you force a rollback of the JTA "
+"transaction for certain action listener outcomes."
+msgstr "Seam 提供让你根据某些 action listener 的 outcome 强制回滚 JTA 事务的注解。"
+
+#. Tag: literal
+#: Annotations.xml:669
+#, no-c-format
+msgid "@Rollback"
+msgstr "@Rollback"
+
+#. Tag: programlisting
+#: Annotations.xml:671
+#, no-c-format
+msgid "@Rollback(ifOutcome={\"failure\", \"not-found\"})"
+msgstr "@Rollback(ifOutcome={\"failure\", \"not-found\"})"
+
+#. Tag: para
+#: Annotations.xml:672
+#, no-c-format
+msgid ""
+"If the outcome of the method matches any of the listed outcomes, or if no "
+"outcomes are listed, set the transaction to rollback only when the method "
+"completes."
+msgstr "如果这个方法返回的 outcome 匹配到任何列出的 outcome,或者如果没有列出的 outcome,设置该事务只有在方法完成时才进行回滚。"
+
+#. Tag: para
+#: Annotations.xml:677
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; the JSF outcomes that cause a "
+"transaction rollback (no outcomes is interpreted to mean any outcome)."
+msgstr "<literal>ifOutcome</literal> &mdash; 导致事务回滚的 JSF outcome。"
+
+#. Tag: literal
+#: Annotations.xml:685
+#, no-c-format
+msgid "<literal>@Transactional</literal>"
+msgstr "<literal>@Transactional</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:687
+#, no-c-format
+msgid "<programlisting>@Transactional</programlisting>"
+msgstr "<programlisting>@Transactional</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:688
+#, no-c-format
+msgid ""
+"Specifies that a JavaBean component should have a similar transactional "
+"behavior to the default behavior of a session bean component. ie. method "
+"invocations should take place in a transaction, and if no transaction exists "
+"when the method is called, a transaction will be started just for that "
+"method. This annotation may be applied at either class or method level."
+msgstr "指定 JavaBean 组件应该有对应 session bean 组件缺省行为的类似事务性行为。例如,方法调用应该发生在事务里,当方法被调用时如果没有事务存在,应该仅为该方法启动一个事务。这个注解可以应用于类或方法级别。"
+
+#. Tag: para
+#: Annotations.xml:694
+#, no-c-format
+msgid ""
+"Seam applications usually use the standard EJB3 annotations for all other "
+"transaction demarcation needs."
+msgstr "Seam 的应用程序通常为所有其他的事务限界使用标准的 EJB3 注解。"
+
+#. Tag: title
+#: Annotations.xml:700
+#, no-c-format
+msgid "Annotations for exceptions"
+msgstr "用于异常的注解"
+
+#. Tag: para
+#: Annotations.xml:701
+#, no-c-format
+msgid ""
+"These annotations let you specify how Seam should handle an exception that "
+"propagates out of a Seam component."
+msgstr "这些注解让你指定 Seam 应该怎样处理 Seam 组件里传出的异常。"
+
+#. Tag: literal
+#: Annotations.xml:706
+#, no-c-format
+msgid "@Redirect"
+msgstr "@Redirect"
+
+#. Tag: programlisting
+#: Annotations.xml:708
+#, no-c-format
+msgid "@Redirect(viewId=\"error.jsp\")"
+msgstr "@Redirect(viewId=\"error.jsp\")"
+
+#. Tag: para
+#: Annotations.xml:709
+#, no-c-format
+msgid ""
+"Specifies that the annotated exception causes a browser redirect to a "
+"specified view id."
+msgstr "指定被注解的异常重定向到指定的 view id。"
+
+#. Tag: para
+#: Annotations.xml:714
+#, no-c-format
+msgid "<literal>viewId</literal> &mdash; specifies the JSF view id to redirect to."
+msgstr "<literal>viewId</literal> &mdash; 指定重定向的 JSF view id。"
+
+#. Tag: para
+#: Annotations.xml:719
+#, no-c-format
+msgid ""
+"<literal>message</literal> &mdash; a message to be displayed, default to the "
+"exception message."
+msgstr "<literal>message</literal> &mdash; 要显示的消息,缺省为异常消息。"
+
+#. Tag: para
+#: Annotations.xml:724 Annotations.xml:750
+#, no-c-format
+msgid ""
+"<literal>end</literal> &mdash; specifies that the long-running conversation "
+"should end, default to <literal>false</literal>."
+msgstr "<literal>end</literal> &mdash; 指定 long-running conversation 应该结束,缺省为 <literal>false</literal>。"
+
+#. Tag: literal
+#: Annotations.xml:732
+#, no-c-format
+msgid "@HttpError"
+msgstr "@HttpError"
+
+#. Tag: programlisting
+#: Annotations.xml:734
+#, no-c-format
+msgid "@HttpError(errorCode=404)"
+msgstr "@HttpError(errorCode=404)"
+
+#. Tag: para
+#: Annotations.xml:735
+#, no-c-format
+msgid "Specifies that the annotated exception causes a HTTP error to be sent."
+msgstr "指定被注解的异常发送一个 HTTP 错误。"
+
+#. Tag: para
+#: Annotations.xml:740
+#, no-c-format
+msgid ""
+"<literal>errorCode</literal> &mdash; the HTTP error code, default to "
+"<literal>500</literal>."
+msgstr "<literal>errorCode</literal> &mdash; HTTP 错误代码,缺省为 <literal>500</literal>。"
+
+#. Tag: para
+#: Annotations.xml:745
+#, no-c-format
+msgid ""
+"<literal>message</literal> &mdash; a message to be sent with the HTTP error, "
+"default to the exception message."
+msgstr "<literal>message</literal> &mdash; 和 HTTP 错误一起发送的消息,缺省为异常消息。"
+
+#. Tag: title
+#: Annotations.xml:761
+#, no-c-format
+msgid "Annotations for validation"
+msgstr "用于检验的注解"
+
+#. Tag: para
+#: Annotations.xml:762
+#, no-c-format
+msgid ""
+"This annotation triggers Hibernate Validator. It appears on a method of a "
+"Seam component, almost always an action listener method."
+msgstr "这个注解触发 Hibernate Validator。它出现在 Seam 组件的一个方法里,且总是一个 action listener 方法。"
+
+#. Tag: para
+#: Annotations.xml:765
+#, no-c-format
+msgid ""
+"Please refer to the documentation for the Hibernate Annotations package for "
+"information about the annotations defined by the Hibernate Validator "
+"framework."
+msgstr "请参考 Hibernate Annotations 软件包的文档里关于 Hibernate Validator 框架定义的注解的更多信息。"
+
+#. Tag: emphasis
+#: Annotations.xml:769
+#, no-c-format
+msgid ""
+"Note that use of <literal>@IfInvalid</literal> is now semi-deprecated and "
+"<literal>&lt;s:validateAll&gt;</literal> is now preferred."
+msgstr "注意对 <literal>@IfInvalid</literal> 的使用已经快被取消了,现在的首选是 <literal>&lt;s:validateAll&gt;</literal>。"
+
+#. Tag: literal
+#: Annotations.xml:773
+#, no-c-format
+msgid "@IfInvalid"
+msgstr "@IfInvalid"
+
+#. Tag: programlisting
+#: Annotations.xml:775
+#, no-c-format
+msgid "@IfInvalid(outcome=\"invalid\", refreshEntities=true)"
+msgstr "@IfInvalid(outcome=\"invalid\", refreshEntities=true)"
+
+#. Tag: para
+#: Annotations.xml:776
+#, no-c-format
+msgid ""
+"Specifies that Hibernate Validator should validate the component before the "
+"method is invoked. If the invocation fails, the specified outcome will be "
+"returned, and the validation failure messages returned by Hibernate "
+"Validator will be added to the <literal>FacesContext</literal>. Otherwise, "
+"the invocation will proceed."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:781
+#, no-c-format
+msgid "<literal>outcome</literal> &mdash; the JSF outcome when validation fails."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:786
+#, no-c-format
+msgid ""
+"<literal>refreshEntities</literal> &mdash; specifies that any invalid entity "
+"in the managed state should be refreshed from the database when validation "
+"fails. Default to <literal>false</literal>. (Useful with extended "
+"persistence contexts.)"
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:797
+#, no-c-format
+msgid "Annotations for Seam Remoting"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:798
+#, no-c-format
+msgid ""
+"Seam Remoting requires that the local interface of a session bean be "
+"annotated with the following annotation:"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:803
+#, no-c-format
+msgid "@WebRemote"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:805
+#, no-c-format
+msgid "@WebRemote(exclude=\"path.to.exclude\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:806
+#, no-c-format
+msgid ""
+"Indicates that the annotated method may be called from client-side "
+"JavaScript. The <literal>exclude</literal> property is optional and allows "
+"objects to be excluded from the result&#39;s object graph (see the Remoting "
+"chapter for more details)."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:815
+#, no-c-format
+msgid "Annotations for Seam interceptors"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:816
+#, no-c-format
+msgid "The following annotations appear on Seam interceptor classes."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:819
+#, no-c-format
+msgid ""
+"Please refer to the documentation for the EJB 3.0 specification for "
+"information about the annotations required for EJB interceptor definition."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:824
+#, no-c-format
+msgid "@Interceptor"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:829
+#, no-c-format
+msgid "@Interceptor(stateless=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:830
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is stateless and Seam may optimize "
+"replication."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:835
+#, no-c-format
+msgid "@Interceptor(type=CLIENT)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:836
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is a \"client-side\" interceptor that is "
+"called before the EJB container."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:841
+#, no-c-format
+msgid "@Interceptor(around={SomeInterceptor.class, OtherInterceptor.class})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:842
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is positioned higher in the stack than the "
+"given interceptors."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:847
+#, no-c-format
+msgid "@Interceptor(within={SomeInterceptor.class, OtherInterceptor.class})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:848
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is positioned deeper in the stack than the "
+"given interceptors."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:860
+#, no-c-format
+msgid "Annotations for asynchronicity"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:861
+#, no-c-format
+msgid ""
+"The following annotations are used to declare an asynchronous method, for "
+"example:"
+msgstr "下面的注解用来声明异步方法,例如:"
+
+#. Tag: programlisting
+#: Annotations.xml:864
+#, no-c-format
+msgid ""
+"@Asynchronous public void scheduleAlert(Alert alert, @Expiration Date date) "
+"{ ... }"
+msgstr ""
+"@Asynchronous public void scheduleAlert(Alert alert, @Expiration Date date) "
+"{ ... }"
+
+#. Tag: programlisting
+#: Annotations.xml:865
+#, no-c-format
+msgid ""
+"@Asynchronous public Timer scheduleAlerts(Alert alert, @Expiration Date "
+"date, \n"
+"@IntervalDuration long interval) { ... }"
+msgstr ""
+"@Asynchronous public Timer scheduleAlerts(Alert alert, @Expiration Date "
+"date, \n"
+"@IntervalDuration long interval) { ... }"
+
+#. Tag: literal
+#: Annotations.xml:868
+#, no-c-format
+msgid "<literal>@Asynchronous</literal>"
+msgstr "<literal>@Asynchronous</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:870
+#, no-c-format
+msgid "<programlisting>@Asynchronous</programlisting>"
+msgstr "<programlisting>@Asynchronous</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:871
+#, no-c-format
+msgid "Specifies that the method call is processed asynchronously."
+msgstr "指定这个方法被异步地进行处理。"
+
+#. Tag: literal
+#: Annotations.xml:877
+#, no-c-format
+msgid "<literal>@Duration</literal>"
+msgstr "<literal>@Duration</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:879
+#, no-c-format
+msgid "<programlisting>@Duration</programlisting>"
+msgstr "<programlisting>@Duration</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:880
+#, no-c-format
+msgid ""
+"Specifies that a parameter of the asynchronous call is the duration before "
+"the call is processed (or first processed for recurring calls)."
+msgstr "指定在调用被处理(或循环调用的第一个被处理)前,异步调用的参数是 duration 。"
+
+#. Tag: literal
+#: Annotations.xml:886
+#, no-c-format
+msgid "<literal>@Expiration</literal>"
+msgstr "<literal>@Expiration</literal>"
+
+#. Tag: programlisting
+#: Annotations.xml:888
+#, no-c-format
+msgid "<programlisting>@Expiration</programlisting>"
+msgstr "<programlisting>@Expiration</programlisting>"
+
+#. Tag: para
+#: Annotations.xml:889
+#, no-c-format
+msgid ""
+"Specifies that a parameter of the asynchronous call is the datetime at which "
+"the call is processed (or first processed for recurring calls)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:895
+#, no-c-format
+msgid "<literal>@IntervalDuration</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:897
+#, no-c-format
+msgid "<programlisting>@IntervalDuration</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:898
+#, no-c-format
+msgid ""
+"Specifies that an asynchronous method call recurs, and that the annotationed "
+"parameter is duration between recurrences."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:907
+#, no-c-format
+msgid "Annotations for use with JSF <literal>dataTable</literal>"
+msgstr "和 JSF <literal>dataTable</literal> 一起使用的注解"
+
+#. Tag: para
+#: Annotations.xml:908
+#, no-c-format
+msgid ""
+"The following annotations make it easy to implement clickable lists backed "
+"by a stateful session bean. They appear on attributes."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:913
+#, no-c-format
+msgid "@DataModel"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:915
+#, no-c-format
+msgid "@DataModel(\"variableName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:916
+#, no-c-format
+msgid ""
+"Exposes an attribute of type <literal>List</literal>, <literal>Map</"
+"literal>, <literal>Set</literal> or <literal>Object[]</literal> as a JSF "
+"<literal>DataModel</literal> into the scope of the owning component (or the "
+"<literal>EVENT</literal> scope if the owning component is "
+"<literal>STATELESS</literal>). In the case of <literal>Map</literal>, each "
+"row of the <literal>DataModel</literal> is a <literal>Map.Entry</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:921
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; name of the conversation context variable. "
+"Default to the attribute name."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:926
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; if <literal>scope=ScopeType.PAGE</literal> "
+"is explicitly specified, the <literal>DataModel</literal> will be kept in "
+"the <literal>PAGE</literal> context."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:934
+#, no-c-format
+msgid "<literal>@DataModelSelection</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:936
+#, no-c-format
+msgid "<programlisting>@DataModelSelection</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:937
+#, no-c-format
+msgid ""
+"Injects the selected value from the JSF <literal>DataModel</literal> (this "
+"is the element of the underlying collection, or the map value)."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:942 Annotations.xml:958
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; name of the conversation context variable. "
+"Not needed if there is exactly one <literal>@DataModel</literal> in the "
+"component."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:950
+#, no-c-format
+msgid "<literal>@DataModelSelectionIndex</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:952
+#, no-c-format
+msgid "<programlisting>@DataModelSelectionIndex</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:953
+#, no-c-format
+msgid ""
+"Exposes the selection index of the JSF <literal>DataModel</literal> as an "
+"attribute of the component (this is the row number of the underlying "
+"collection, or the map key)."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:969
+#, no-c-format
+msgid "Meta-annotations for databinding"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:970
+#, no-c-format
+msgid ""
+"These meta-annotations make it possible to implement similar functionality "
+"to <literal>@DataModel</literal> and <literal>@DataModelSelection</literal> "
+"for other datastructures apart from lists."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:975
+#, no-c-format
+msgid "@DataBinderClass"
+msgstr "@DataBinderClass"
+
+#. Tag: programlisting
+#: Annotations.xml:977
+#, no-c-format
+msgid "@DataBinderClass(DataModelBinder.class)"
+msgstr "@DataBinderClass(DataModelBinder.class)"
+
+#. Tag: para
+#: Annotations.xml:978
+#, no-c-format
+msgid "Specifies that an annotation is a databinding annotation."
+msgstr "指定该注解为绑定数据的注解。"
+
+#. Tag: literal
+#: Annotations.xml:984
+#, no-c-format
+msgid "@DataSelectorClass"
+msgstr "@DataSelectorClass"
+
+#. Tag: programlisting
+#: Annotations.xml:986
+#, no-c-format
+msgid "@DataSelectorClass(DataModelSelector.class)"
+msgstr "@DataSelectorClass(DataModelSelector.class)"
+
+#. Tag: para
+#: Annotations.xml:987
+#, no-c-format
+msgid "Specifies that an annotation is a dataselection annotation."
+msgstr "指定该注解为用于数据选择的注解。"
+
+#. Tag: title
+#: Annotations.xml:996
+#, no-c-format
+msgid "Annotations for packaging"
+msgstr "用于软件包的注解"
+
+#. Tag: para
+#: Annotations.xml:997
+#, no-c-format
+msgid ""
+"This annotation provides a mechanism for declaring information about a set "
+"of components that are packaged together. It can be applied to any Java "
+"package."
+msgstr ""
+"这个注解提供了一种机制,用于声明关于将组件打包到一起的信息。它可以应用于任何 "
+"Java 软件包。"
+
+#. Tag: literal
+#: Annotations.xml:1002
+#, no-c-format
+msgid "@Namespace"
+msgstr "@Namespace"
+
+#. Tag: programlisting
+#: Annotations.xml:1004
+#, no-c-format
+msgid "@Namespace(value=\"http://jboss.com/products/seam/example/seampay\")"
+msgstr "@Namespace(value=\"http://jboss.com/products/seam/example/seampay\")"
+
+#. Tag: para
+#: Annotations.xml:1005
+#, no-c-format
+msgid ""
+"Specifies that components in the current package are associated with the "
+"given namespace. The declared namespace can be used as an XML namespace in a "
+"<literal>components.xml</literal> file to simplify application configuration."
+msgstr ""
+"指定当前软件包里的组件和给定的命名空间相关联。被声明的命名空间可以用作 "
+"<literal>components.xml</literal> 文件里的 XML 命名空间,从而简化应用程序的配"
+"置。"
+
+#. Tag: programlisting
+#: Annotations.xml:1008
+#, no-c-format
+msgid ""
+"@Namespace(value=\"http://jboss.com/products/seam/core\", prefix=\"org.jboss."
+"seam.core\")"
+msgstr ""
+"@Namespace(value=\"http://jboss.com/products/seam/core\", prefix=\"org.jboss."
+"seam.core\")"
+
+#. Tag: para
+#: Annotations.xml:1009
+#, no-c-format
+msgid ""
+"Specifies a namespace to associate with a given package. Additionally, it "
+"specifies a component name prefix to be applied to component names specified "
+"in the XML file. For example, an XML element named <literal>microcontainer</"
+"literal> that is associated with this namespace would be understood to "
+"actually refere to a component named <literal>org.jboss.seam.core."
+"microcontainer</literal>."
+msgstr ""
+"指定命名空间和给定的软件包相关联。此外,它指定在 XML 文件里指定的组件名上应用"
+"的组件名前缀。例如,和这个命名空间相关联的名为 <literal>microcontainer</"
+"literal> 的 XML 元素将被理解为 <literal>org.jboss.seam.core.microcontainer</"
+"literal> 组件。"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Book_Info.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Book_Info.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Book_Info.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,53 @@
+# translation of Book_Info.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Xi HUANG <xhuang at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Book_Info\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-02-04 23:29+0000\n"
+"PO-Revision-Date: 2007-06-22 10:42+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Book_Info.xml:5
+#, no-c-format
+msgid "Seam Reference Guide"
+msgstr ""
+
+#. Tag: subtitle
+#: Book_Info.xml:6
+#, no-c-format
+msgid "JBoss Enterprise Application Platform"
+msgstr ""
+
+#. Tag: para
+#: Book_Info.xml:11
+#, no-c-format
+msgid ""
+"This book is a Reference Guide to Seam 1.2 for JBoss Enterprise Application "
+"Platform 4.3."
+msgstr ""
+
+#. Tag: holder
+#: Book_Info.xml:22
+#, no-c-format
+msgid "&HOLDER;"
+msgstr ""
+
+#~ msgid "A Framework for Java EE 5"
+#~ msgstr "面向 Java EE 5 的架构"
+
+#~ msgid "This book is a Reference Guide for Seam"
+#~ msgstr "本书是 Seam 的参考指南"
+
+#~ msgid "&FORMAL-RHI;"
+#~ msgstr "&FORMAL-RHI;"

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Cache.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Cache.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Cache.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,369 @@
+# translation of Cache.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Xi HUANG <xhuang at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Cache\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2007-10-23 23:06+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Cache.xml:6
+#, no-c-format
+msgid "Caching"
+msgstr "Caching"
+
+#. Tag: para
+#: Cache.xml:7
+#, no-c-format
+msgid ""
+"In almost all enterprise applications, the database is the primary "
+"bottleneck, and the least scalable tier of the runtime environment. People "
+"from a PHP/Ruby environment will try to tell you that so-called \"shared "
+"nothing\" architectures scale well. While that may be literally true, I "
+"don&#39;t know of many interesting multi-user applications which can be "
+"implemented with no sharing of resources between different nodes of the "
+"cluster. What these silly people are really thinking of is a \"share nothing "
+"except for the database\" architecture. Of course, sharing the database is "
+"the primary problem with scaling a multi-user application&mdash;so the claim "
+"that this architecture is highly scalable is absurd, and tells you a lot "
+"about the kind of applications that these folks spend most of their time "
+"working on."
+msgstr ""
+"对于大多数企业应用程序,数据库是主要的瓶颈,它也是运行环境中最难以扩充的层。使用 PHP/Ruby 环境的人们会告诉你所谓的 \"shared "
+"nothing\" 架构最易于扩充。虽然从字面上讲这可能是真的,但我不知道有什么多用户的应用程序可以不需要在群集的不同节点间共享的资源。这些傻瓜真正思考的是除了数据库的 \"shared "
+"nothing\" 架构。数据库共享当然是扩充多层应用程序的主要问题&mdash;所以声称这个架构多么具有扩充性并告诉你他们把大部分时间都花在这类应用程序上是荒唐的。"
+
+#. Tag: para
+#: Cache.xml:10
+#, no-c-format
+msgid ""
+"Almost anything we can possibly do to share the database <emphasis>less "
+"often</emphasis> is worth doing."
+msgstr "任何让我们可以使数据库共享<emphasis>更少</emphasis>的事情都是值得一试的。"
+
+#. Tag: para
+#: Cache.xml:13
+#, no-c-format
+msgid ""
+"This calls for a cache. Well, not just one cache. A well designed Seam "
+"application will feature a rich, multi-layered caching strategy that impacts "
+"every layer of the application:"
+msgstr "这需要缓存,还不止一个缓存。设计良好的 Seam 应用程序具有影响应用程序每个层次的丰富的、多层的缓存策略。"
+
+#. Tag: para
+#: Cache.xml:18
+#, no-c-format
+msgid ""
+"The database, of course, has its own cache. This is super-important, but "
+"can&#39;t scale like a cache in the application tier."
+msgstr "数据库当然也有自己的缓存。这非常重要,但它并不能象应用层里的缓存一样进行扩充。"
+
+#. Tag: para
+#: Cache.xml:23
+#, no-c-format
+msgid ""
+"Your ORM solution (Hibernate, or some other JPA implementation) has a second-"
+"level cache of data from the database. This is a very powerful capability, "
+"but is often misused. In a clustered environment, keeping the data in the "
+"cache transactionally consistent across the whole cluster, and with the "
+"database, is quite expensive. It makes most sense for data which is shared "
+"between many users, and is updated rarely. In traditional stateless "
+"architectures, people often try to use the second-level cache for "
+"conversational state. This is always bad, and is especially wrong in Seam."
+msgstr "你的 ORM 解决方案(Hibernate 或其他 JPA 实现)具有数据库数据的二级缓存。这是一种非常强大的能力,但经常被滥用。在群集环境里的各节点间透明地保持缓存数据的一致性,其代价是相当高的。这对于多个用户共享但很少更改的数据而言很有意义。在传统的无状态构架里,人们经常试图把二级缓存用于保存会话状态。这样的效果总是很差,而在 Seam 里这根本就是错误的方式。"
+
+#. Tag: para
+#: Cache.xml:28
+#, no-c-format
+msgid ""
+"The Seam conversation context is a cache of conversational state. Components "
+"you put into the conversation context can hold and cache state relating to "
+"the current user interaction."
+msgstr "Seam 的 conversation 上下文是会话式状态的缓存。你放入 conversation 上下文里组件可以保持和缓存和当前用户交互相关的状态。"
+
+#. Tag: para
+#: Cache.xml:33
+#, no-c-format
+msgid ""
+"In particular, the Seam-managed persistence context (or an extended EJB "
+"container-managed persistence context associated with a conversation-scoped "
+"stateful session bean) acts as a cache of data that has been read in the "
+"current conversation. This cache tends to have a pretty high hitrate! Seam "
+"optimizes the replication of Seam-managed persistence contexts in a "
+"clustered environment, and there is no requirement for transactional "
+"consistency with the database (optimistic locking is sufficient) so you "
+"don&#39;t need to worry too much about the performance implications of this "
+"cache, unless you read thousands of objects into a single persistence "
+"context."
+msgstr "特别是,Seam 管理的持久性上下文(或和作用域为 conversation 的 stateful session bean 相关联的扩展的 EJB 容器管理的持久性上下文)充当当前 conversation 里已经读取的数据的缓存。这个缓存会具有相当高的点击率!Seam 优化了群集环境里 Seam 管理的持久性上下文的复制,它对数据库的事务性一致性不作要求(乐观锁定已经足够),所以你不需要过于担心这个缓存所隐含的性能问题,除非你把数千个对象读入单一的持久性上下文里。"
+
+#. Tag: para
+#: Cache.xml:38
+#, no-c-format
+msgid ""
+"The application can cache non-transactional state in the Seam application "
+"context. State kept in the application context is of course not visible to "
+"other nodes in the cluster."
+msgstr "应用程序可以在 Seam 应用程序上下文里缓存非事务性的状态。当然,应用程序上下文里保存的状态对于群集里的其他节点是不可见的。"
+
+#. Tag: para
+#: Cache.xml:43
+#, no-c-format
+msgid ""
+"The application can cache transactional state using the Seam "
+"<literal>pojoCache</literal> component, which integrates JBossCache into the "
+"Seam environment. This state will be visible to other nodes if you run JBoss "
+"cache in a clustered mode."
+msgstr "应用程序可以用 Seam 的 <literal>pojoCache</literal> 组件缓存事务性状态,这个组件把 JBossCache 集成进了 Seam 环境。如果你在群集环境里运行 JBoss Cache,这些状态将对其他节点可见。"
+
+#. Tag: para
+#: Cache.xml:48
+#, no-c-format
+msgid ""
+"Finally, Seam lets you cache rendered fragments of a JSF page. Unlike the "
+"ORM second-level cache, this cache is not automatically invalidated when "
+"data changes, so you need to write application code to perform explicit "
+"invalidation, or set appropriate expiration policies."
+msgstr "最后,Seam 让你缓存 JSF 页面的显示片段。和 ORM 二级缓存不一样,当数据改变时这种缓存不会自动地作废,所以你需要编写代码来显性地废弃这些缓存,或者设置合适的过期策略。"
+
+#. Tag: para
+#: Cache.xml:53
+#, no-c-format
+msgid ""
+"For more information about the second-level cache, you&#39;ll need to refer "
+"to the documentation of your ORM solution, since this is an extremely "
+"complex topic. In this section we&#39;ll discuss the use of JBossCache "
+"directly, via the <literal>pojoCache</literal> component, or as the page "
+"fragment cache, via the <literal>&lt;s:cache&gt;</literal> control."
+msgstr "二级缓存是一个极其复杂的主题,关于它的更多信息,你将需要参考你所用的 ORM 方案的相关文档。在本节里,我们将讨论直接用 <literal>pojoCache</literal> 组件使用 JBossCache,或者通过 <literal>&lt;s:cache&gt;</literal> 控件使用页面片段缓存。"
+
+#. Tag: title
+#: Cache.xml:57
+#, no-c-format
+msgid "Using JBossCache in Seam"
+msgstr "在 Seam 里使用 JBossCache"
+
+#. Tag: para
+#: Cache.xml:58
+#, no-c-format
+msgid ""
+"The built-in <literal>pojoCache</literal> component manages an instance of "
+"<literal>org.jboss.cache.aop.PojoCache</literal>. You can safely put any "
+"immutable Java object in the cache, and it will be replicated across the "
+"cluster (assuming that replication is enabled). If you want to keep mutable "
+"objects in the cache, you&#39;ll need to run the JBossCache bytecode "
+"preprocessor to ensure that changes to the objects will be automatically "
+"detected and replicated."
+msgstr "内置的 <literal>pojoCache</literal> 组件管理 <literal>org.jboss.cache.aop.PojoCache</literal> 的一个实例。你可以安全地把任何不变的 Java 对象放在缓存里,它将在整个群集里进行复制(假设启用的复制)。如果你想在缓存里保存易变的对象,你将需要使用 JBossCache 字节码预处理程序来保证对对象的修改被自动地检测和复制。"
+
+#. Tag: para
+#: Cache.xml:61
+#, no-c-format
+msgid ""
+"To use <literal>pojoCache</literal>, all you need to do is put the "
+"JBossCache jars in the classpath, and provide a resource named "
+"<literal>treecache.xml</literal> with an appropriate cache configuration. "
+"JBossCache has many scary and confusing configuration settings, so we "
+"won&#39;t discuss them here. Please refer to the JBossCache documentation "
+"for more information."
+msgstr "要使用 <literal>pojoCache</literal>,你所需要做的全部事情就是把 JBossCache 的 jar 文件放在 classpath 里,然后在合适的缓存配置里提供一个名为 <literal>treecache.xml</literal> 的资源。JBossCache 具有许多令人生畏和迷惑的配置设定,所以我们不在这里进行讨论。详情请参考 JBossCache 的相关文档。"
+
+#. Tag: para
+#: Cache.xml:64
+#, no-c-format
+msgid ""
+"For an EAR depoyment of Seam, we recommend that the JBossCache jars and "
+"configuration go directly into the EAR. Make sure you declare the jars in "
+"<literal>application.xml</literal>."
+msgstr "对于 Seam 的 EAR 部署,我们推荐把 JBossCache 的 jar 文件和配置直接放在 EAR 里。请确保你在 <literal>application.xml</literal> 里声明了这些 jar 文件。"
+
+#. Tag: para
+#: Cache.xml:67
+#, no-c-format
+msgid "Now you can inject the cache into any Seam component:"
+msgstr "现在你可以把缓存注入到任何 Seam 组件里:"
+
+#. Tag: programlisting
+#: Cache.xml:70
+#, no-c-format
+msgid ""
+"@Name(\"chatroom\")\n"
+"public class Chatroom {\n"
+"    @In PojoCache pojoCache;\n"
+"    \n"
+"    public void join(String username) {\n"
+"      try\n"
+"      {\n"
+"         Set&lt;String&gt; userList = (Set&lt;String&gt;) pojoCache.get"
+"(\"chatroom\", \"userList\");\n"
+"         if (userList==null) \n"
+"         {\n"
+"            userList = new HashSet&lt;String&gt;();\n"
+"            pojoCache.put(\"chatroom\", \"userList\", userList);\n"
+"         }\n"
+"         userList.put(username);\n"
+"      }\n"
+"      catch (CacheException ce)\n"
+"      {\n"
+"         throw new RuntimeException(ce);\n"
+"      }\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"chatroom\")\n"
+"public class Chatroom {\n"
+"    @In PojoCache pojoCache;\n"
+"    \n"
+"    public void join(String username) {\n"
+"      try\n"
+"      {\n"
+"         Set&lt;String&gt; userList = (Set&lt;String&gt;) pojoCache.get"
+"(\"chatroom\", \"userList\");\n"
+"         if (userList==null) \n"
+"         {\n"
+"            userList = new HashSet&lt;String&gt;();\n"
+"            pojoCache.put(\"chatroom\", \"userList\", userList);\n"
+"         }\n"
+"         userList.put(username);\n"
+"      }\n"
+"      catch (CacheException ce)\n"
+"      {\n"
+"         throw new RuntimeException(ce);\n"
+"      }\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Cache.xml:71
+#, no-c-format
+msgid ""
+"If you want to have multiple JBossCache configurations in your application, "
+"use <literal>components.xml</literal>:"
+msgstr "如果你想在应用程序里拥有多个 JBossCache 配置,你可以使用 <literal>components.xml</literal>:"
+
+#. Tag: programlisting
+#: Cache.xml:74
+#, no-c-format
+msgid ""
+"&lt;core:pojo-cache name=\"myCache\" cfg-resource-name=\"myown/cache.xml\"/"
+"&gt;"
+msgstr ""
+"&lt;core:pojo-cache name=\"myCache\" cfg-resource-name=\"myown/cache.xml\"/"
+"&gt;"
+
+#. Tag: title
+#: Cache.xml:78
+#, no-c-format
+msgid "Page fragment caching"
+msgstr "页面片段缓存"
+
+#. Tag: para
+#: Cache.xml:79
+#, no-c-format
+msgid ""
+"The most interesting user of JBossCache is the <literal>&lt;s:cache&gt;</"
+"literal> tag, Seam&#39;s solution to the problem of page fragment caching in "
+"JSF. <literal>&lt;s:cache&gt;</literal> uses <literal>pojoCache</literal> "
+"internally, so you need to follow the steps listed above before you can use "
+"it. (Put the jars in the EAR, wade through the scary configuration options, "
+"etc.)"
+msgstr ""
+"JBossCache 里最有趣的东西就是 <literal>&lt;s:cache&gt;</"
+"literal> 标签,它是 Seam 为 JSF 里的页面片段缓存所提供的解决方案。因为 <literal>&lt;s:cache&gt;</literal> 在内部使用了 <literal>pojoCache</literal>,所以在使用前你需要遵循上面列出的步骤。(把 jar 文件放在 EAR 里,进行相应的配置等等)"
+
+#. Tag: para
+#: Cache.xml:82
+#, no-c-format
+msgid ""
+"<literal>&lt;s:cache&gt;</literal> is used for caching some rendered content "
+"which changes rarely. For example, the welcome page of our blog displays the "
+"recent blog entries:"
+msgstr "<literal>&lt;s:cache&gt;</literal> 用来缓存某些很少改动的显示内容。例如,我们的 blog 的欢迎页面显示了最近的 blog 条目:"
+
+#. Tag: programlisting
+#: Cache.xml:85
+#, no-c-format
+msgid ""
+"&lt;s:cache key=\"recentEntries-#{blog.id}\" region=\"welcomePageFragments"
+"\"&gt;\n"
+"   &lt;h:dataTable value=\"#{blog.recentEntries}\" var=\"blogEntry\"&gt;\n"
+"      &lt;h:column&gt;\n"
+"         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"         &lt;div&gt;\n"
+"            &lt;s:formattedText value=\"#{blogEntry.body}\"/&gt;\n"
+"         &lt;/div&gt;\n"
+"      &lt;/h:column&gt;\n"
+"   &lt;/h:dataTable&gt;\n"
+"&lt;/s:cache&gt;"
+msgstr ""
+"&lt;s:cache key=\"recentEntries-#{blog.id}\" region=\"welcomePageFragments"
+"\"&gt;\n"
+"   &lt;h:dataTable value=\"#{blog.recentEntries}\" var=\"blogEntry\"&gt;\n"
+"      &lt;h:column&gt;\n"
+"         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"         &lt;div&gt;\n"
+"            &lt;s:formattedText value=\"#{blogEntry.body}\"/&gt;\n"
+"         &lt;/div&gt;\n"
+"      &lt;/h:column&gt;\n"
+"   &lt;/h:dataTable&gt;\n"
+"&lt;/s:cache&gt;"
+
+#. Tag: para
+#: Cache.xml:86
+#, no-c-format
+msgid ""
+"The <literal>key</literal> let&#39;s you have multiple cached versions of "
+"each page fragment. In this case, there is one cached version per blog. The "
+"<literal>region</literal> determines the JBossCache node that all version "
+"will be stored in. Different nodes may have different expiry policies. "
+"(That&#39;s the stuff you set up using the aforementioned scary "
+"configuration options.)"
+msgstr "<literal>key</literal> 让你拥有每个页面片段的多个缓存版本。在这个例子里,每个 blog 只有一个缓存版本。<literal>region</literal> 决定将保存所有版本的 JBossCache 节点。不同的节点可能有不同的过期策略(这就是前面提到的你要进行的令人生畏的配置)。"
+
+#. Tag: para
+#: Cache.xml:89
+#, no-c-format
+msgid ""
+"Of course, the big problem with <literal>&lt;s:cache&gt;</literal> is that "
+"it is too stupid to know when the underlying data changes (for example, when "
+"the blogger posts a new entry). So you need to evict the cached fragment "
+"manually:"
+msgstr "当然,<literal>&lt;s:cache&gt;</literal> 的问题是它过于愚蠢所以不知道底层的数据什么时候改动(例如,blogger 在什么时候张贴新的条目)。所以你需要手工删除缓存的片段:"
+
+#. Tag: programlisting
+#: Cache.xml:92
+#, no-c-format
+msgid ""
+"public void post() {\n"
+"    ...\n"
+"    entityManager.persist(blogEntry);\n"
+"    pojoCache.remove(\"welcomePageFragments\", \"recentEntries-\" + blog."
+"getId() );\n"
+"}"
+msgstr ""
+"public void post() {\n"
+"    ...\n"
+"    entityManager.persist(blogEntry);\n"
+"    pojoCache.remove(\"welcomePageFragments\", \"recentEntries-\" + blog."
+"getId() );\n"
+"}"
+
+#. Tag: para
+#: Cache.xml:93
+#, no-c-format
+msgid ""
+"Alternatively, if it is not critical that changes are immediately visible to "
+"the user, you could set a short expiry time on the JbossCache node."
+msgstr "或者,如果用户立即看到这些改动并不是那么重要,你可以在 JbossCache 节点上设置一个短的过期时间。"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Components.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Components.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Components.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2080 @@
+# translation of Components.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Xi HUANG <xhuang at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Components\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2007-11-13 10:43+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Components.xml:6
+#, no-c-format
+msgid "Built-in Seam components"
+msgstr "内置的 Seam 组件"
+
+#. Tag: para
+#: Components.xml:7
+#, no-c-format
+msgid ""
+"This chapter describes Seam&#39;s built-in components, and their "
+"configuration properties."
+msgstr "本章描述 Seam 的内置组件以及它们的配置属性。"
+
+#. Tag: para
+#: Components.xml:10
+#, no-c-format
+msgid ""
+"Note that you can replace any of the built in components with your own "
+"implementations simply by specifying the name of one of the built in "
+"components on your own class using <literal>@Name</literal>."
+msgstr "注意,只要简单地在自己的类里用 <literal>@Name</literal> 指定内置组件的名字,你就可以用自己的实现来替代任何内置组件。"
+
+#. Tag: para
+#: Components.xml:13
+#, no-c-format
+msgid ""
+"Note also that even though all the built in components use a qualified name, "
+"most of them are aliased to unqualified names by default. These aliases "
+"specify <literal>auto-create=\"true\"</literal>, so you do not need to use "
+"<literal>create=true</literal> when injecting built-in components by their "
+"unqualified name."
+msgstr "你也要注意即使所有的内置组件都使用全限定名,它们中的大多数还是缺省以非全限定名为别名。这些别名指定了 <literal>auto-create=\"true\"</literal>,所以在用非全限定名注入内置组件时,你不需要使用 <literal>create=true</literal>。"
+
+#. Tag: title
+#: Components.xml:17
+#, no-c-format
+msgid "Context injection components"
+msgstr "上下文注入组件"
+
+#. Tag: para
+#: Components.xml:18
+#, no-c-format
+msgid ""
+"The first set of built in components exist purely to support injection of "
+"various contextual objects. For example, the following component instance "
+"variable would have the Seam session context object injected:"
+msgstr "第一组内置组件的作用是支持对不同上下文对象的注入。例如,下面的组件实例变量将注入 Seam 的 session 上下文:"
+
+#. Tag: programlisting
+#: Components.xml:21
+#, no-c-format
+msgid "@In private Context sessionContext;"
+msgstr "@In private Context sessionContext;"
+
+#. Tag: literal
+#: Components.xml:24
+#, no-c-format
+msgid "org.jboss.seam.core.eventContext"
+msgstr "org.jboss.seam.core.eventContext"
+
+#. Tag: para
+#: Components.xml:26
+#, no-c-format
+msgid "Manager component for the event context object"
+msgstr "用于事件上下文对象的管理者组件"
+
+#. Tag: literal
+#: Components.xml:32
+#, no-c-format
+msgid "org.jboss.seam.core.pageContext"
+msgstr "org.jboss.seam.core.pageContext"
+
+#. Tag: para
+#: Components.xml:34
+#, no-c-format
+msgid "Manager component for the page context object"
+msgstr "用于页面上下文对象的管理者组件"
+
+#. Tag: literal
+#: Components.xml:40
+#, no-c-format
+msgid "org.jboss.seam.core.conversationContext"
+msgstr "org.jboss.seam.core.conversationContext"
+
+#. Tag: para
+#: Components.xml:42
+#, no-c-format
+msgid "Manager component for the conversation context object"
+msgstr "用于 conversation 上下文对象的管理者组件"
+
+#. Tag: literal
+#: Components.xml:48
+#, no-c-format
+msgid "org.jboss.seam.core.sessionContext"
+msgstr "org.jboss.seam.core.sessionContext"
+
+#. Tag: para
+#: Components.xml:50
+#, no-c-format
+msgid "Manager component for the session context object"
+msgstr "用于 session 上下文对象的管理者组件"
+
+#. Tag: literal
+#: Components.xml:56
+#, no-c-format
+msgid "org.jboss.seam.core.applicationContext"
+msgstr "org.jboss.seam.core.applicationContext"
+
+#. Tag: para
+#: Components.xml:58
+#, no-c-format
+msgid "Manager component for the appication context object"
+msgstr "用于应用程序上下文对象的管理者组件"
+
+#. Tag: literal
+#: Components.xml:64
+#, no-c-format
+msgid "org.jboss.seam.core.businessProcessContext"
+msgstr "org.jboss.seam.core.businessProcessContext"
+
+#. Tag: para
+#: Components.xml:66
+#, no-c-format
+msgid "Manager component for the business process context object"
+msgstr "用于商业过程上下文对象的管理者组件"
+
+#. Tag: literal
+#: Components.xml:72
+#, no-c-format
+msgid "org.jboss.seam.core.facesContext"
+msgstr "org.jboss.seam.core.facesContext"
+
+#. Tag: para
+#: Components.xml:74
+#, no-c-format
+msgid ""
+"Manager component for the <literal>FacesContext</literal> context object "
+"(not a true Seam context)"
+msgstr "于 <literal>FacesContext</literal> 上下文对象(并非真正的 Seam 上下文)的管理者组件"
+
+#. Tag: para
+#: Components.xml:80 Components.xml:263 Components.xml:437 Components.xml:568
+#, no-c-format
+msgid "All of these components are always installed."
+msgstr "Seam 总是安装了所有这些组件。"
+
+#. Tag: title
+#: Components.xml:86
+#, no-c-format
+msgid "Utility components"
+msgstr "工具组件"
+
+#. Tag: para
+#: Components.xml:87
+#, no-c-format
+msgid "These components are merely useful."
+msgstr "这些组件用处不大。"
+
+#. Tag: literal
+#: Components.xml:92
+#, no-c-format
+msgid "org.jboss.seam.core.facesMessages"
+msgstr "org.jboss.seam.core.facesMessages"
+
+#. Tag: para
+#: Components.xml:94
+#, no-c-format
+msgid "Allows faces success messages to propagate across a browser redirect."
+msgstr "允许 faces 的成功信息在浏览器重定向间传递。"
+
+#. Tag: para
+#: Components.xml:99
+#, no-c-format
+msgid ""
+"<literal>add(FacesMessage facesMessage)</literal> &mdash; add a faces "
+"message, which will be displayed during the next render response phase that "
+"occurs in the current conversation."
+msgstr "<literal>add(FacesMessage facesMessage)</literal> &mdash; 添加一个 faces 信息,这将在当前 conversation 的下一个显示响应阶段里显示。"
+
+#. Tag: para
+#: Components.xml:104
+#, no-c-format
+msgid ""
+"<literal>add(String messageTemplate)</literal> &mdash; add a faces message, "
+"rendered from the given message template which may contain EL expressions."
+msgstr "<literal>add(String messageTemplate)</literal> &mdash; 添加一个 faces 信息,在给定的可能包含 EL 表达式的模板里显示。"
+
+#. Tag: para
+#: Components.xml:109
+#, no-c-format
+msgid ""
+"<literal>add(Severity severity, String messageTemplate)</literal> &mdash; "
+"add a faces message, rendered from the given message template which may "
+"contain EL expressions."
+msgstr ""
+"<literal>add(Severity severity, String messageTemplate)</literal> &mdash; "
+"添加一个 faces 信息,在给定的可能包含 EL 表达式的模板里显示。"
+
+#. Tag: para
+#: Components.xml:114
+#, no-c-format
+msgid ""
+"<literal>addFromResourceBundle(String key)</literal> &mdash; add a faces "
+"message, rendered from a message template defined in the Seam resource "
+"bundle which may contain EL expressions."
+msgstr "<literal>addFromResourceBundle(String key)</literal> &mdash; 添加一个 faces 信息,在可能包含 EL 表达式的 Seam 资源束里定义的模板里显示。"
+
+#. Tag: para
+#: Components.xml:119
+#, no-c-format
+msgid ""
+"<literal>addFromResourceBundle(Severity severity, String key)</literal> "
+"&mdash; add a faces message, rendered from a message template defined in the "
+"Seam resource bundle which may contain EL expressions."
+msgstr ""
+"<literal>addFromResourceBundle(Severity severity, String key)</literal> "
+"&mdash; 添加一个 faces 信息,在可能包含 EL 表达式的 Seam 资源束里定义的模板里显示。"
+
+#. Tag: para
+#: Components.xml:124
+#, no-c-format
+msgid "<literal>clear()</literal> &mdash; clear all messages."
+msgstr "<literal>clear()</literal> &mdash; 清除所有的信息。"
+
+#. Tag: literal
+#: Components.xml:132
+#, no-c-format
+msgid "org.jboss.seam.core.redirect"
+msgstr "org.jboss.seam.core.redirect"
+
+#. Tag: para
+#: Components.xml:134
+#, no-c-format
+msgid ""
+"A convenient API for performing redirects with parameters (this is "
+"especially useful for bookmarkable search results screens)."
+msgstr "这是一个方便的用于执行带有参数的重定向(对于可加为书签的搜索结果屏幕来说尤其有用)的 API。"
+
+#. Tag: para
+#: Components.xml:139
+#, no-c-format
+msgid "<literal>redirect.viewId</literal> &mdash; the JSF view id to redirect to."
+msgstr "<literal>redirect.viewId</literal> &mdash; 重定向的 JSF view id。"
+
+#. Tag: para
+#: Components.xml:144
+#, no-c-format
+msgid ""
+"<literal>redirect.conversationPropagationEnabled</literal> &mdash; "
+"determines whether the conversation will propagate across the redirect."
+msgstr "<literal>redirect.conversationPropagationEnabled</literal> &mdash; 决定 conversation 是否在重定向间传递。"
+
+#. Tag: para
+#: Components.xml:149
+#, no-c-format
+msgid ""
+"<literal>redirect.parameters</literal> &mdash; a map of request parameter "
+"name to value, to be passed in the redirect request."
+msgstr "<literal>redirect.parameters</literal> &mdash; 请求参数名和值的映射,在重定向请求里传递。"
+
+#. Tag: para
+#: Components.xml:154
+#, no-c-format
+msgid "<literal>execute()</literal> &mdash; perform the redirect immediately."
+msgstr "<literal>execute()</literal> &mdash; 立即执行重定向。"
+
+#. Tag: para
+#: Components.xml:159
+#, no-c-format
+msgid ""
+"<literal>captureCurrentRequest()</literal> &mdash; stores the view id and "
+"request parameters of the current GET request (in the conversation context), "
+"for later use by calling <literal>execute()</literal>."
+msgstr "<literal>captureCurrentRequest()</literal> &mdash; 保存当前 GET 请求(在 conversation 上下文里)的 view id 和请求参数,可供 <literal>execute()</literal> 以后使用。"
+
+#. Tag: literal
+#: Components.xml:167
+#, no-c-format
+msgid "org.jboss.seam.core.httpError"
+msgstr "org.jboss.seam.core.httpError"
+
+#. Tag: para
+#: Components.xml:169
+#, no-c-format
+msgid "A convenient API for sending HTTP errors."
+msgstr "这是一个方便的发送 HTTP 错误的 API。"
+
+#. Tag: literal
+#: Components.xml:175
+#, no-c-format
+msgid "org.jboss.seam.core.events"
+msgstr "org.jboss.seam.core.events"
+
+#. Tag: para
+#: Components.xml:177
+#, no-c-format
+msgid ""
+"An API for raising events that can be observed via <literal>@Observer</"
+"literal> methods, or method bindings in <literal>components.xml</literal>."
+msgstr "引发可用 <literal>@Observer</literal> 方法、或 <literal>components.xml</literal> 里绑定的方法观察到的事件的 API。"
+
+#. Tag: para
+#: Components.xml:182
+#, no-c-format
+msgid ""
+"<literal>raiseEvent(String type)</literal> &mdash; raise an event of a "
+"particular type and distribute to all observers."
+msgstr "<literal>raiseEvent(String type)</literal> &mdash; 引发特定类型的事件并发布给所有的观察者。"
+
+#. Tag: para
+#: Components.xml:187
+#, no-c-format
+msgid ""
+"<literal>raiseAsynchronousEvent(String type)</literal> &mdash; raise an "
+"event to be processed asynchronously by the EJB3 timer service."
+msgstr "<literal>raiseAsynchronousEvent(String type)</literal> &mdash; 引发 EJB3 定时器服务进行异步处理的事件。"
+
+#. Tag: para
+#: Components.xml:192
+#, no-c-format
+msgid ""
+"<literal>raiseTimedEvent(String type, ....)</literal> &mdash; schedule an "
+"event to be processed asynchronously by the EJB3 timer service."
+msgstr "<literal>raiseTimedEvent(String type, ....)</literal> &mdash; 预定 EJB3 定时器服务进行异步处理的事件。"
+
+#. Tag: para
+#: Components.xml:197
+#, no-c-format
+msgid ""
+"<literal>addListener(String type, String methodBinding)</literal> &mdash; "
+"add an observer for a particular event type."
+msgstr "<literal>addListener(String type, String methodBinding)</literal> &mdash; 为特定的事件类型添加一个观察者。"
+
+#. Tag: literal
+#: Components.xml:205
+#, no-c-format
+msgid "org.jboss.seam.core.interpolator"
+msgstr "org.jboss.seam.core.interpolator"
+
+#. Tag: para
+#: Components.xml:207
+#, no-c-format
+msgid "An API for interpolating the values of JSF EL expressions in Strings."
+msgstr "在字符串里插入 JSF EL 表达式的值的 API。"
+
+#. Tag: para
+#: Components.xml:212
+#, no-c-format
+msgid ""
+"<literal>interpolate(String template)</literal> &mdash; scan the template "
+"for JSF EL expressions of the form <literal>#{...}</literal> and replace "
+"them with their evaluated values."
+msgstr "<literal>interpolate(String template)</literal> &mdash; 扫描模板里 <literal>#{...}</literal> 形式的 JSF EL 表达式并用它们的值来代替。"
+
+#. Tag: literal
+#: Components.xml:220
+#, no-c-format
+msgid "org.jboss.seam.core.expressions"
+msgstr "org.jboss.seam.core.expressions"
+
+#. Tag: para
+#: Components.xml:222
+#, no-c-format
+msgid "An API for creating value and method bindings."
+msgstr "创建值和方法绑定的 API。"
+
+#. Tag: para
+#: Components.xml:227
+#, no-c-format
+msgid ""
+"<literal>createValueBinding(String expression)</literal> &mdash; create a "
+"value binding object."
+msgstr "<literal>createValueBinding(String expression)</literal> &mdash; 创建一个值绑定对象。"
+
+#. Tag: para
+#: Components.xml:232
+#, no-c-format
+msgid ""
+"<literal>createMethodBinding(String expression)</literal> &mdash; create a "
+"method binding object."
+msgstr "<literal>createMethodBinding(String expression)</literal> &mdash; 创建一个方法绑定对象。"
+
+#. Tag: literal
+#: Components.xml:240
+#, no-c-format
+msgid "org.jboss.seam.core.pojoCache"
+msgstr "org.jboss.seam.core.pojoCache"
+
+#. Tag: para
+#: Components.xml:242
+#, no-c-format
+msgid "Manager component for a JBoss Cache <literal>PojoCache</literal> instance."
+msgstr "用于 JBoss Cache <literal>PojoCache</literal> 实例的管理者组件。"
+
+#. Tag: para
+#: Components.xml:247
+#, no-c-format
+msgid ""
+"<literal>pojoCache.cfgResourceName</literal> &mdash; the name of the "
+"configuration file. Default to <literal>treecache.xml</literal>."
+msgstr "<literal>pojoCache.cfgResourceName</literal> &mdash; 配置文件的名字。缺省值为 <literal>treecache.xml</literal>。"
+
+#. Tag: literal
+#: Components.xml:255
+#, no-c-format
+msgid "org.jboss.seam.core.uiComponent"
+msgstr "org.jboss.seam.core.uiComponent"
+
+#. Tag: para
+#: Components.xml:257
+#, no-c-format
+msgid ""
+"Allows access to a JSF <literal>UIComponent</literal> by its id from the EL. "
+"For example, we can write <literal>@In(\"#{uiComponent[&#39;myForm:"
+"address&#39;].value}\")</literal>."
+msgstr ""
+"允许从 EL 里根据 JSF 的 ID 访问其 <literal>UIComponent</literal>。例如,我们可以使用: <literal>@In(\"#{uiComponent[&#39;myForm:"
+"address&#39;].value}\")</literal>。"
+
+#. Tag: title
+#: Components.xml:269
+#, no-c-format
+msgid "Components for internationalization and themes"
+msgstr "用于国际化和主题的组件"
+
+#. Tag: para
+#: Components.xml:270
+#, no-c-format
+msgid ""
+"The next group of components make it easy to build internationalized user "
+"interfaces using Seam."
+msgstr "下一组组件使用 Seam 构建国际化的允许界面变得容易。"
+
+#. Tag: literal
+#: Components.xml:275
+#, no-c-format
+msgid "org.jboss.seam.core.locale"
+msgstr "org.jboss.seam.core.locale"
+
+#. Tag: para
+#: Components.xml:277
+#, no-c-format
+msgid "The Seam locale. The locale is session scoped."
+msgstr "Seam 的 locale。这个 locale 的作用域是 session。"
+
+#. Tag: literal
+#: Components.xml:283
+#, no-c-format
+msgid "org.jboss.seam.core.timezone"
+msgstr "org.jboss.seam.core.timezone"
+
+#. Tag: para
+#: Components.xml:285
+#, no-c-format
+msgid "The Seam timezone. The timezone is session scoped."
+msgstr "Seam 的时区。这个时区的作用域是 session。"
+
+#. Tag: literal
+#: Components.xml:291
+#, no-c-format
+msgid "org.jboss.seam.core.resourceBundle"
+msgstr "org.jboss.seam.core.resourceBundle"
+
+#. Tag: para
+#: Components.xml:293
+#, no-c-format
+msgid ""
+"The Seam resource bundle. The resource bundle is session scoped. The Seam "
+"resource bundle performs a depth-first search for keys in a list of Java "
+"resource bundles."
+msgstr "Seam 的资源束。这个资源束的作用域是 session。Seam 的资源束在一个 Java 资源束列表里执行深度优先的键值搜索。"
+
+#. Tag: para
+#: Components.xml:298
+#, no-c-format
+msgid ""
+"<literal>resourceBundle.bundleNames</literal> &mdash; the names of the Java "
+"resource bundles to search. Default to <literal>messages</literal>."
+msgstr "<literal>resourceBundle.bundleNames</literal> &mdash; 要搜索的 Java 资源束的名字。缺省为 <literal>messages</literal>。"
+
+#. Tag: literal
+#: Components.xml:306
+#, no-c-format
+msgid "org.jboss.seam.core.localeSelector"
+msgstr "org.jboss.seam.core.localeSelector"
+
+#. Tag: para
+#: Components.xml:308
+#, no-c-format
+msgid ""
+"Supports selection of the locale either at configuration time, or by the "
+"user at runtime."
+msgstr "支持在配置时选择 locale,或者在运行时由用户来选择。"
+
+#. Tag: para
+#: Components.xml:313 Components.xml:363
+#, no-c-format
+msgid "<literal>select()</literal> &mdash; select the specified locale."
+msgstr "<literal>select()</literal> &mdash; 选择指定的 locale。"
+
+#. Tag: para
+#: Components.xml:318
+#, no-c-format
+msgid ""
+"<literal>localeSelector.locale</literal> &mdash; the actual <literal>java."
+"util.Locale</literal>."
+msgstr ""
+"<literal>localeSelector.locale</literal> &mdash; 实际的 <literal>java."
+"util.Locale</literal>。"
+
+#. Tag: para
+#: Components.xml:323
+#, no-c-format
+msgid ""
+"<literal>localeSelector.localeString</literal> &mdash; the stringified "
+"representation of the locale."
+msgstr "<literal>localeSelector.localeString</literal> &mdash; locale 的字符串表示。"
+
+#. Tag: para
+#: Components.xml:328
+#, no-c-format
+msgid ""
+"<literal>localeSelector.language</literal> &mdash; the language for the "
+"specified locale."
+msgstr "<literal>localeSelector.language</literal> &mdash; 指定 locale 的语言。"
+
+#. Tag: para
+#: Components.xml:333
+#, no-c-format
+msgid ""
+"<literal>localeSelector.country</literal> &mdash; the country for the "
+"specified locale."
+msgstr "<literal>localeSelector.country</literal> &mdash; 指定 locale 的国家。"
+
+#. Tag: para
+#: Components.xml:338
+#, no-c-format
+msgid ""
+"<literal>localeSelector.variant</literal> &mdash; the variant for the "
+"specified locale."
+msgstr "<literal>localeSelector.variant</literal> &mdash; 指定 locale 的变量。"
+
+#. Tag: para
+#: Components.xml:343
+#, no-c-format
+msgid ""
+"<literal>localeSelector.supportedLocales</literal> &mdash; a list of "
+"<literal>SelectItem</literal>s representing the supported locales listed in "
+"<literal>jsf-config.xml</literal>."
+msgstr "<literal>localeSelector.supportedLocales</literal> &mdash; 代表所支持的 <literal>jsf-config.xml</literal> 里列出的 locale 的 <literal>SelectItem</literal> 列表。"
+
+#. Tag: para
+#: Components.xml:348
+#, no-c-format
+msgid ""
+"<literal>localeSelector.cookieEnabled</literal> &mdash; specifies that the "
+"locale selection should be persisted via a cookie."
+msgstr "<literal>localeSelector.cookieEnabled</literal> &mdash; 指定用 cookie 持久化 locale 选择。"
+
+#. Tag: literal
+#: Components.xml:356
+#, no-c-format
+msgid "org.jboss.seam.core.timezoneSelector"
+msgstr "org.jboss.seam.core.timezoneSelector"
+
+#. Tag: para
+#: Components.xml:358
+#, no-c-format
+msgid ""
+"Supports selection of the timezone either at configuration time, or by the "
+"user at runtime."
+msgstr "支持在配置时或在运行时由用户选择时区。"
+
+#. Tag: para
+#: Components.xml:368
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.timezone</literal> &mdash; the actual "
+"<literal>java.util.TimeZone</literal>."
+msgstr "<literal>timezoneSelector.timezone</literal> &mdash; 实际的 <literal>java.util.TimeZone</literal>。"
+
+#. Tag: para
+#: Components.xml:373
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.timeZoneId</literal> &mdash; the stringified "
+"representation of the timezone."
+msgstr "<literal>timezoneSelector.timeZoneId</literal> &mdash; 时区的字符串表达形式。"
+
+#. Tag: para
+#: Components.xml:378
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.cookieEnabled</literal> &mdash; specifies that the "
+"timezone selection should be persisted via a cookie."
+msgstr "<literal>timezoneSelector.cookieEnabled</literal> &mdash; 指定通过 cookie 持久化时区选择。"
+
+#. Tag: literal
+#: Components.xml:386
+#, no-c-format
+msgid "org.jboss.seam.core.messages"
+msgstr "org.jboss.seam.core.messages"
+
+#. Tag: para
+#: Components.xml:388
+#, no-c-format
+msgid ""
+"A map containing internationalized messages rendered from message templates "
+"defined in the Seam resource bundle."
+msgstr "包含 Seam 资源束里定义的消息模板里的国际化消息的映射。"
+
+#. Tag: literal
+#: Components.xml:394
+#, no-c-format
+msgid "org.jboss.seam.theme.themeSelector"
+msgstr "org.jboss.seam.theme.themeSelector"
+
+#. Tag: para
+#: Components.xml:396
+#, no-c-format
+msgid ""
+"Supports selection of the theme either at configuration time, or by the user "
+"at runtime."
+msgstr "支持在配置时或用户在运行时的时区选择。"
+
+#. Tag: para
+#: Components.xml:401
+#, no-c-format
+msgid "<literal>select()</literal> &mdash; select the specified theme."
+msgstr "<literal>select()</literal> &mdash; 选择指定的主题。"
+
+#. Tag: para
+#: Components.xml:406
+#, no-c-format
+msgid "<literal>theme.availableThemes</literal> &mdash; the list of defined themes."
+msgstr "<literal>theme.availableThemes</literal> &mdash; 定义好的主题的列表。"
+
+#. Tag: para
+#: Components.xml:411
+#, no-c-format
+msgid "<literal>themeSelector.theme</literal> &mdash; the selected theme."
+msgstr "<literal>themeSelector.theme</literal> &mdash; 选定的主题。"
+
+#. Tag: para
+#: Components.xml:416
+#, no-c-format
+msgid ""
+"<literal>themeSelector.themes</literal> &mdash; a list of "
+"<literal>SelectItem</literal>s representing the defined themes."
+msgstr "<literal>themeSelector.themes</literal> &mdash; 代表定义好的主题的 <literal>SelectItem</literal> 的列表。"
+
+#. Tag: para
+#: Components.xml:421
+#, no-c-format
+msgid ""
+"<literal>themeSelector.cookieEnabled</literal> &mdash; specifies that the "
+"theme selection should be persisted via a cookie."
+msgstr "<literal>themeSelector.cookieEnabled</literal> &mdash; 指定通过 cookie 持久化对主题的选择。"
+
+#. Tag: literal
+#: Components.xml:429
+#, no-c-format
+msgid "org.jboss.seam.theme.theme"
+msgstr "org.jboss.seam.theme.theme"
+
+#. Tag: para
+#: Components.xml:431
+#, no-c-format
+msgid "A map containing theme entries."
+msgstr "包含主题条目的映射。"
+
+#. Tag: title
+#: Components.xml:443
+#, no-c-format
+msgid "Components for controlling conversations"
+msgstr "用于控制 conversation 的组件"
+
+#. Tag: para
+#: Components.xml:444
+#, no-c-format
+msgid ""
+"The next group of components allow control of conversations by the "
+"application or user interface."
+msgstr "下一组组件允许通过应用程序或用户界面控制 conversation。"
+
+#. Tag: literal
+#: Components.xml:449
+#, no-c-format
+msgid "org.jboss.seam.core.conversation"
+msgstr "org.jboss.seam.core.conversation"
+
+#. Tag: para
+#: Components.xml:451
+#, no-c-format
+msgid "API for application control of attributes of the current Seam conversation."
+msgstr "用于控制当前 Seam conversation 的属性的 API。"
+
+#. Tag: para
+#: Components.xml:456 Components.xml:471
+#, no-c-format
+msgid "<literal>getId()</literal> &mdash; returns the current conversation id"
+msgstr "<literal>getId()</literal> &mdash; 返回当前的 conversation id"
+
+#. Tag: para
+#: Components.xml:461
+#, no-c-format
+msgid ""
+"<literal>isNested()</literal> &mdash; is the current conversation a nested "
+"conversation?"
+msgstr "<literal>isNested()</literal> &mdash; 当前的 conversation 是否是嵌套的 conversation?"
+
+#. Tag: para
+#: Components.xml:466
+#, no-c-format
+msgid ""
+"<literal>isLongRunning()</literal> &mdash; is the current conversation a "
+"long-running conversation?"
+msgstr "<literal>isLongRunning()</literal> &mdash; 当前的 conversation 是长期的 conversation?"
+
+#. Tag: para
+#: Components.xml:476
+#, no-c-format
+msgid ""
+"<literal>getParentId()</literal> &mdash; returns the conversation id of the "
+"parent conversation"
+msgstr "<literal>getParentId()</literal> &mdash; 返回父 conversation 的 conversation id。"
+
+#. Tag: para
+#: Components.xml:481
+#, no-c-format
+msgid ""
+"<literal>getRootId()</literal> &mdash; returns the conversation id of the "
+"root conversation"
+msgstr "<literal>getRootId()</literal> &mdash; 返回根 conversation 的 conversation id。"
+
+#. Tag: para
+#: Components.xml:486
+#, no-c-format
+msgid ""
+"<literal>setTimeout(int timeout)</literal> &mdash; sets the timeout for the "
+"current conversation"
+msgstr "<literal>setTimeout(int timeout)</literal> &mdash; 设置当前 conversation 的超时时间"
+
+#. Tag: para
+#: Components.xml:491
+#, no-c-format
+msgid ""
+"<literal>setViewId(String outcome)</literal> &mdash; sets the view id to be "
+"used when switching back to the current conversation from the conversation "
+"switcher, conversation list, or breadcrumbs."
+msgstr ""
+"<literal>setViewId(String outcome)</literal> &mdash; 设置当从 conversation "
+"switcher、conversation list 或 breadcrumb 切换回当前 conversation 时使用的 view id。"
+
+#. Tag: para
+#: Components.xml:496
+#, no-c-format
+msgid ""
+"<literal>setDescription(String description)</literal> &mdash; sets the "
+"description of the current conversation to be displayed in the conversation "
+"switcher, conversation list, or breadcrumbs."
+msgstr ""
+"<literal>setDescription(String description)</literal> &mdash; 设置 conversation "
+"switcher、conversation list 或 breadcrumb 里显示的当前 conversation 的描述。"
+
+#. Tag: para
+#: Components.xml:501
+#, no-c-format
+msgid ""
+"<literal>redirect()</literal> &mdash; redirect to the last well-defined view "
+"id for this conversation (useful after login challenges)."
+msgstr "<literal>redirect()</literal> &mdash; 重定向到这个 conversation 的明确定义的 view id。"
+
+#. Tag: para
+#: Components.xml:506
+#, no-c-format
+msgid ""
+"<literal>leave()</literal> &mdash; exit the scope of this conversation, "
+"without actually ending the conversation."
+msgstr "<literal>leave()</literal> &mdash; 退出这个 conversation 的作用域,但实际上并不结束该 conversation。"
+
+#. Tag: para
+#: Components.xml:511
+#, no-c-format
+msgid ""
+"<literal>begin()</literal> &mdash; begin a long-running conversation "
+"(equivalent to <literal>@Begin</literal>)."
+msgstr "<literal>begin()</literal> &mdash; 开始一个 long-running conversation(相当于 <literal>@Begin</literal>)。"
+
+#. Tag: para
+#: Components.xml:516
+#, no-c-format
+msgid ""
+"<literal>beginPageflow(String pageflowName)</literal> &mdash; begin a long-"
+"running conversation with a pageflow (equivalent to <literal>@Begin(pageflow="
+"\"...\")</literal>)."
+msgstr ""
+"<literal>beginPageflow(String pageflowName)</literal> &mdash; 开始一个带有页面流程的 long-"
+"running conversation(相当于 <literal>@Begin(pageflow="
+"\"...\")</literal>)。"
+
+#. Tag: para
+#: Components.xml:521
+#, no-c-format
+msgid ""
+"<literal>end()</literal> &mdash; end a long-running conversation (equivalent "
+"to <literal>@End</literal>)."
+msgstr "<literal>end()</literal> &mdash; 结束 long-running conversation(相当于 <literal>@End</literal>)。"
+
+#. Tag: para
+#: Components.xml:526
+#, no-c-format
+msgid ""
+"<literal>pop()</literal> &mdash; pop the conversation stack, returning to "
+"the parent conversation."
+msgstr "<literal>pop()</literal> &mdash; 退出 conversation 栈,返回至父 conversation。"
+
+#. Tag: para
+#: Components.xml:531
+#, no-c-format
+msgid ""
+"<literal>root()</literal> &mdash; return to the root conversation of the "
+"conversation stack."
+msgstr "<literal>root()</literal> &mdash; 返回至 conversation 栈的根 conversation。"
+
+#. Tag: para
+#: Components.xml:536
+#, no-c-format
+msgid ""
+"<literal>changeFlushMode(FlushModeType flushMode)</literal> &mdash; change "
+"the flush mode of the conversation."
+msgstr "<literal>changeFlushMode(FlushModeType flushMode)</literal> &mdash; 修改 conversation 的刷新模式。"
+
+#. Tag: literal
+#: Components.xml:544
+#, no-c-format
+msgid "org.jboss.seam.core.conversationList"
+msgstr "org.jboss.seam.core.conversationList"
+
+#. Tag: para
+#: Components.xml:546
+#, no-c-format
+msgid "Manager component for the conversation list."
+msgstr "conversation 列表的管理者组件。"
+
+#. Tag: literal
+#: Components.xml:552
+#, no-c-format
+msgid "org.jboss.seam.core.conversationStack"
+msgstr "org.jboss.seam.core.conversationStack"
+
+#. Tag: para
+#: Components.xml:554
+#, no-c-format
+msgid "Manager component for the conversation stack (breadcrumbs)."
+msgstr "conversation 栈(breadcrumbs)的管理者组件。"
+
+#. Tag: literal
+#: Components.xml:560
+#, no-c-format
+msgid "org.jboss.seam.core.switcher"
+msgstr "org.jboss.seam.core.switcher"
+
+#. Tag: para
+#: Components.xml:562
+#, no-c-format
+msgid "The conversation switcher."
+msgstr "conversation switcher"
+
+#. Tag: title
+#: Components.xml:574
+#, no-c-format
+msgid "jBPM-related components"
+msgstr "和 jBPM 相关的组件"
+
+#. Tag: para
+#: Components.xml:575
+#, no-c-format
+msgid "These components are for use with jBPM."
+msgstr "这些组件用于 jBPM。"
+
+#. Tag: literal
+#: Components.xml:580
+#, no-c-format
+msgid "org.jboss.seam.core.pageflow"
+msgstr "org.jboss.seam.core.pageflow"
+
+#. Tag: para
+#: Components.xml:582
+#, no-c-format
+msgid "API control of Seam pageflows."
+msgstr "Seam 页面流程的 API 控制。"
+
+#. Tag: para
+#: Components.xml:587
+#, no-c-format
+msgid ""
+"<literal>isInProcess()</literal> &mdash; returns <literal>true</literal> if "
+"there is currently a pageflow in process"
+msgstr "<literal>isInProcess()</literal> &mdash; 如果目前有页面流程运行时返回 <literal>true</literal>。"
+
+#. Tag: para
+#: Components.xml:592
+#, no-c-format
+msgid ""
+"<literal>getProcessInstance()</literal> &mdash; returns jBPM "
+"<literal>ProcessInstance</literal> for the current pageflow"
+msgstr ""
+"<literal>getProcessInstance()</literal> &mdash; 返回当前页面流程的 jBPM "
+"<literal>ProcessInstance</literal>。"
+
+#. Tag: para
+#: Components.xml:597
+#, no-c-format
+msgid ""
+"<literal>begin(String pageflowName)</literal> &mdash; begin a pageflow in "
+"the context of the current conversation"
+msgstr "<literal>begin(String pageflowName)</literal> &mdash; 在当前 conversation 的上下文里开始一个页面流程"
+
+#. Tag: para
+#: Components.xml:602
+#, no-c-format
+msgid ""
+"<literal>reposition(String nodeName)</literal> &mdash; reposition the "
+"current pageflow to a particular node"
+msgstr "<literal>reposition(String nodeName)</literal> &mdash; 把当前页面流程重新定位到特定的节点"
+
+#. Tag: literal
+#: Components.xml:610
+#, no-c-format
+msgid "org.jboss.seam.core.actor"
+msgstr "org.jboss.seam.core.actor"
+
+#. Tag: para
+#: Components.xml:612
+#, no-c-format
+msgid ""
+"API for application control of attributes of the jBPM actor associated with "
+"the current session."
+msgstr "控制和当前会话相关联的 jBPM actor 的属性的 API。"
+
+#. Tag: para
+#: Components.xml:617
+#, no-c-format
+msgid ""
+"<literal>setId(String actorId)</literal> &mdash; sets the jBPM actor id of "
+"the current user."
+msgstr "<literal>setId(String actorId)</literal> &mdash; 设置当前用户的 jBPM actor id。"
+
+#. Tag: para
+#: Components.xml:622
+#, no-c-format
+msgid ""
+"<literal>getGroupActorIds()</literal> &mdash; returns a <literal>Set</"
+"literal> to which jBPM actor ids for the current users groups may be added."
+msgstr ""
+"<literal>getGroupActorIds()</literal> &mdash; 返回添加当前用户组的 jBPM actor id 的 <literal>Set</"
+"literal>。"
+
+#. Tag: literal
+#: Components.xml:630
+#, no-c-format
+msgid "org.jboss.seam.core.transition"
+msgstr "org.jboss.seam.core.transition"
+
+#. Tag: para
+#: Components.xml:632
+#, no-c-format
+msgid "API for application control of the jBPM transition for the current task."
+msgstr "控制当前任务的 jBPM transition 的 API。"
+
+#. Tag: para
+#: Components.xml:637
+#, no-c-format
+msgid ""
+"<literal>setName(String transitionName)</literal> &mdash; sets the jBPM "
+"transition name to be used when the current task is ended via "
+"<literal>@EndTask</literal>."
+msgstr "<literal>setName(String transitionName)</literal> &mdash; 设置用 <literal>@EndTask</literal> 结束当前任务时所使用的 jBPM transition 名称。"
+
+#. Tag: literal
+#: Components.xml:645
+#, no-c-format
+msgid "org.jboss.seam.core.businessProcess"
+msgstr "org.jboss.seam.core.businessProcess"
+
+#. Tag: para
+#: Components.xml:647
+#, no-c-format
+msgid ""
+"API for programmatic control of the association between the conversation and "
+"business process."
+msgstr "控制 conversation 和商业过程间的关联的 API。"
+
+#. Tag: para
+#: Components.xml:652
+#, no-c-format
+msgid ""
+"<literal>businessProcess.taskId</literal> &mdash; the id of the task "
+"associated with the current conversation."
+msgstr "<literal>businessProcess.taskId</literal> &mdash; 和当前 conversation 相关联的任务的 ID。"
+
+#. Tag: para
+#: Components.xml:657
+#, no-c-format
+msgid ""
+"<literal>businessProcess.processId</literal> &mdash; the id of the process "
+"associated with the current conversation."
+msgstr "<literal>businessProcess.processId</literal> &mdash; 和当前 conversation 相关联的过程的 ID。"
+
+#. Tag: para
+#: Components.xml:662
+#, no-c-format
+msgid ""
+"<literal>businessProcess.hasCurrentTask()</literal> &mdash; is a task "
+"instance associated with the current conversation?"
+msgstr "<literal>businessProcess.hasCurrentTask()</literal> &mdash; 是否存在和当前 conversation 相关联的任务实例?"
+
+#. Tag: para
+#: Components.xml:667
+#, no-c-format
+msgid ""
+"<literal>businessProcess.hasCurrentProcess()</literal> &mdash; is a process "
+"instance associated with the current conversation."
+msgstr "<literal>businessProcess.hasCurrentProcess()</literal> &mdash; 是否存在和当前 conversation 相关联的过程实例?"
+
+#. Tag: para
+#: Components.xml:672
+#, no-c-format
+msgid ""
+"<literal>createProcess(String name)</literal> &mdash; create an instance of "
+"the named process definition and associate it with the current conversation."
+msgstr "<literal>createProcess(String name)</literal> &mdash; 创建过程定义的实例并将它和当前 conversation 相关联。"
+
+#. Tag: para
+#: Components.xml:677
+#, no-c-format
+msgid ""
+"<literal>startTask()</literal> &mdash; start the task associated with the "
+"current conversation."
+msgstr "<literal>startTask()</literal> &mdash; 启动和当前 conversation 相关联的任务。"
+
+#. Tag: para
+#: Components.xml:682
+#, no-c-format
+msgid ""
+"<literal>endTask(String transitionName)</literal> &mdash; end the task "
+"associated with the current conversation."
+msgstr "<literal>endTask(String transitionName)</literal> &mdash; 结束和当前 conversation 相关联的任务。"
+
+#. Tag: para
+#: Components.xml:687
+#, no-c-format
+msgid ""
+"<literal>resumeTask(Long id)</literal> &mdash; associate the task with the "
+"given id with the current conversation."
+msgstr "<literal>resumeTask(Long id)</literal> &mdash; 将任务和当前 conversation 的 ID 相关联。"
+
+#. Tag: para
+#: Components.xml:692
+#, no-c-format
+msgid ""
+"<literal>resumeProcess(Long id)</literal> &mdash; associate the process with "
+"the given id with the current conversation."
+msgstr "<literal>resumeProcess(Long id)</literal> &mdash; 将过程和当前 conversation 的 ID 相关联。"
+
+#. Tag: para
+#: Components.xml:697
+#, no-c-format
+msgid ""
+"<literal>transition(String transitionName)</literal> &mdash; trigger the "
+"transition."
+msgstr "<literal>transition(String transitionName)</literal> &mdash; 触发 transition。"
+
+#. Tag: literal
+#: Components.xml:705
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstance"
+msgstr "org.jboss.seam.core.taskInstance"
+
+#. Tag: para
+#: Components.xml:707
+#, no-c-format
+msgid "Manager component for the jBPM <literal>TaskInstance</literal>."
+msgstr "jBPM <literal>TaskInstance</literal> 的管理者组件。"
+
+#. Tag: literal
+#: Components.xml:713
+#, no-c-format
+msgid "org.jboss.seam.core.processInstance"
+msgstr "org.jboss.seam.core.processInstance"
+
+#. Tag: para
+#: Components.xml:715
+#, no-c-format
+msgid "Manager component for the jBPM <literal>ProcessInstance</literal>."
+msgstr "jBPM <literal>ProcessInstance</literal> 的管理者组件。"
+
+#. Tag: literal
+#: Components.xml:721
+#, no-c-format
+msgid "org.jboss.seam.core.jbpmContext"
+msgstr "org.jboss.seam.core.jbpmContext"
+
+#. Tag: para
+#: Components.xml:723
+#, no-c-format
+msgid "Manager component for an event-scoped <literal>JbpmContext</literal>."
+msgstr "作用域为 event 的 <literal>JbpmContext</literal> 的管理者组件。"
+
+#. Tag: literal
+#: Components.xml:729
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstanceList"
+msgstr "org.jboss.seam.core.taskInstanceList"
+
+#. Tag: para
+#: Components.xml:731
+#, no-c-format
+msgid "Manager component for the jBPM task list."
+msgstr "jBPM 任务列表的管理者组件。"
+
+#. Tag: literal
+#: Components.xml:737
+#, no-c-format
+msgid "org.jboss.seam.core.pooledTaskInstanceList"
+msgstr "org.jboss.seam.core.pooledTaskInstanceList"
+
+#. Tag: para
+#: Components.xml:739
+#, no-c-format
+msgid "Manager component for the jBPM pooled task list."
+msgstr "jBPM 组合(pooled)任务列表的管理者组件。"
+
+#. Tag: literal
+#: Components.xml:745
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstanceListForType"
+msgstr "org.jboss.seam.core.taskInstanceListForType"
+
+#. Tag: para
+#: Components.xml:747
+#, no-c-format
+msgid "Manager component for the jBPM task lists."
+msgstr "jBPM 任务列表的管理者组件。"
+
+#. Tag: literal
+#: Components.xml:753
+#, no-c-format
+msgid "org.jboss.seam.core.pooledTask"
+msgstr "org.jboss.seam.core.pooledTask"
+
+#. Tag: para
+#: Components.xml:755
+#, no-c-format
+msgid "Action handler for pooled task assignment."
+msgstr "组合任务分配的 Action 处理程序。"
+
+#. Tag: para
+#: Components.xml:761
+#, no-c-format
+msgid ""
+"All of these components are installed whenever the component <literal>org."
+"jboss.seam.core.jbpm</literal> is installed."
+msgstr ""
+"每当安装 <literal>org."
+"jboss.seam.core.jbpm</literal> 时,所有这些组件都会被安装。"
+
+#. Tag: title
+#: Components.xml:767
+#, no-c-format
+msgid "Security-related components"
+msgstr "和安全性相关的组件"
+
+#. Tag: para
+#: Components.xml:768
+#, no-c-format
+msgid "These components relate to web-tier security."
+msgstr "这些组件和 web 层的安全性相关联。"
+
+#. Tag: literal
+#: Components.xml:773
+#, no-c-format
+msgid "org.jboss.seam.core.userPrincipal"
+msgstr "org.jboss.seam.core.userPrincipal"
+
+#. Tag: para
+#: Components.xml:775
+#, no-c-format
+msgid "Manager component for the current user <literal>Principal</literal>."
+msgstr "当前用户 <literal>Principal</literal> 的管理者组件。"
+
+#. Tag: literal
+#: Components.xml:781
+#, no-c-format
+msgid "org.jboss.seam.core.isUserInRole"
+msgstr "org.jboss.seam.core.isUserInRole"
+
+#. Tag: para
+#: Components.xml:783
+#, no-c-format
+msgid ""
+"Allows JSF pages to choose to render a control, depending upon the roles "
+"available to the current principal. <literal>&lt;h:commandButton value=\"edit"
+"\" rendered=\"#{isUserInRole[&#39;admin&#39;]}\"/&gt;</literal>."
+msgstr ""
+"允许 JSF 页面根据当前 principal 的可用角色来选择要显示的控件。<literal>&lt;h:commandButton value=\"edit"
+"\" rendered=\"#{isUserInRole[&#39;admin&#39;]}\"/&gt;</literal>"
+
+#. Tag: title
+#: Components.xml:792
+#, no-c-format
+msgid "JMS-related components"
+msgstr "和 JMS 相关的组件"
+
+#. Tag: para
+#: Components.xml:793
+#, no-c-format
+msgid ""
+"These components are for use with managed <literal>TopicPublisher</literal>s "
+"and <literal>QueueSender</literal>s (see below)."
+msgstr "这些组件是和被管理的 <literal>TopicPublisher</literal> 和 <literal>QueueSender</literal> 一起使用的。"
+
+#. Tag: literal
+#: Components.xml:798
+#, no-c-format
+msgid "org.jboss.seam.jms.queueSession"
+msgstr "org.jboss.seam.jms.queueSession"
+
+#. Tag: para
+#: Components.xml:800
+#, no-c-format
+msgid "Manager component for a JMS <literal>QueueSession</literal> ."
+msgstr "JMS <literal>QueueSession</literal> 的管理者组件。"
+
+#. Tag: literal
+#: Components.xml:806
+#, no-c-format
+msgid "org.jboss.seam.jms.topicSession"
+msgstr "org.jboss.seam.jms.topicSession"
+
+#. Tag: para
+#: Components.xml:808
+#, no-c-format
+msgid "Manager component for a JMS <literal>TopicSession</literal> ."
+msgstr "JMS <literal>TopicSession</literal> 的管理者组件。"
+
+#. Tag: title
+#: Components.xml:817
+#, no-c-format
+msgid "Mail-related components"
+msgstr "和邮件相关的组件"
+
+#. Tag: para
+#: Components.xml:818
+#, no-c-format
+msgid "These components are for use with Seam&#39;s Email support"
+msgstr "Seam 的电子邮件支持使用这些组件 "
+
+#. Tag: literal
+#: Components.xml:823
+#, no-c-format
+msgid "org.jboss.seam.mail.mailSession"
+msgstr "org.jboss.seam.mail.mailSession"
+
+#. Tag: para
+#: Components.xml:825
+#, no-c-format
+msgid "Manager component for a JavaMail <literal>Session</literal> ."
+msgstr "JavaMail <literal>Session</literal> 的管理者组件。"
+
+#. Tag: para
+#: Components.xml:830
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.host</literal> &mdash; the hostname "
+"of the SMTP server to use"
+msgstr "<literal>org.jboss.seam.mail.mailSession.host</literal> &mdash; 要使用的 SMTP 服务器的主机名"
+
+#. Tag: para
+#: Components.xml:835
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.port</literal> &mdash; the port of "
+"the SMTP server to use"
+msgstr "<literal>org.jboss.seam.mail.mailSession.port</literal> &mdash; 要使用的 SMTP 服务器的端口"
+
+#. Tag: para
+#: Components.xml:840
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.username</literal> &mdash; the "
+"username to use to connect to the SMTP server."
+msgstr "<literal>org.jboss.seam.mail.mailSession.username</literal> &mdash; 连接至 SMTP 服务器所使用的用户名"
+
+#. Tag: para
+#: Components.xml:845
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.password</literal> &mdash; the "
+"password to use to connect to the SMTP server"
+msgstr "<literal>org.jboss.seam.mail.mailSession.password</literal> &mdash; 连接至 SMTP 服务器所使用的密码"
+
+#. Tag: para
+#: Components.xml:850
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.debug</literal> &mdash; enable "
+"JavaMail debugging (very verbose)"
+msgstr "<literal>org.jboss.seam.mail.mailSession.debug</literal> &mdash; 启用 JavaMail 调试日志(非常详细)"
+
+#. Tag: para
+#: Components.xml:855
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.sessionJndiName</literal> &mdash; "
+"name under which a javax.mail.Session is bound to JNDI"
+msgstr "<literal>org.jboss.seam.mail.mailSession.sessionJndiName</literal> &mdash; javax.mail.Session 绑定的 JNDI 名字"
+
+#. Tag: title
+#: Components.xml:866
+#, no-c-format
+msgid "Infrastructural components"
+msgstr "基础结构组件"
+
+#. Tag: para
+#: Components.xml:867
+#, no-c-format
+msgid ""
+"These components provide critical platform infrastructure. You can install a "
+"component by including its class name in the <literal>org.jboss.seam.core."
+"init.componentClasses</literal> configuration property."
+msgstr ""
+"这些组件提供关键性的平台基础结构。你可以在 <literal>org.jboss.seam.core."
+"init.componentClasses</literal> 配置属性里包含类名来安装组件。"
+
+#. Tag: literal
+#: Components.xml:872
+#, no-c-format
+msgid "org.jboss.seam.core.init"
+msgstr "org.jboss.seam.core.init"
+
+#. Tag: para
+#: Components.xml:874
+#, no-c-format
+msgid "Initialization settings for Seam. Always installed."
+msgstr "Seam 的初始化设置。它总是被安装的。"
+
+#. Tag: para
+#: Components.xml:879
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.jndiPattern</literal> &mdash; the JNDI "
+"pattern used for looking up session beans"
+msgstr "<literal>org.jboss.seam.core.init.jndiPattern</literal> &mdash; 用来查找 session bean 的 JNDI 模式"
+
+#. Tag: para
+#: Components.xml:884
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.debug</literal> &mdash; enable Seam debug "
+"mode"
+msgstr "<literal>org.jboss.seam.core.init.debug</literal> &mdash; 启用 Seam 调试模式"
+
+#. Tag: para
+#: Components.xml:889
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.clientSideConversations</literal> &mdash; "
+"if set to <literal>true</literal>, Seam will save conversation context "
+"variables in the client instead of in the <literal>HttpSession</literal>."
+msgstr "<literal>org.jboss.seam.core.init.clientSideConversations</literal> &mdash; 如果设置为 <literal>true</literal>,Seam 将在客户端而不是 <literal>HttpSession</literal> 里保存 conversation 上下文。"
+
+#. Tag: para
+#: Components.xml:894
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.userTransactionName</literal> &mdash; the "
+"JNDI name to use when looking up the JTA <literal>UserTransaction</literal> "
+"object."
+msgstr "<literal>org.jboss.seam.core.init.userTransactionName</literal> &mdash; 当查找 JTA <literal>UserTransaction</literal> 对象时使用的 JNDI 名字。"
+
+#. Tag: literal
+#: Components.xml:902
+#, no-c-format
+msgid "org.jboss.seam.core.manager"
+msgstr "org.jboss.seam.core.manager"
+
+#. Tag: para
+#: Components.xml:904
+#, no-c-format
+msgid ""
+"Internal component for Seam page and conversation context management. Always "
+"installed."
+msgstr "用于 Seam 的 page 和 conversation 上下文管理的内部组件。它总是被安装的。"
+
+#. Tag: para
+#: Components.xml:909
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationTimeout</literal> &mdash; "
+"the conversation context timeout in milliseconds."
+msgstr "<literal>org.jboss.seam.core.manager.conversationTimeout</literal> &mdash; conversation 上下文的超时时间,单位为毫秒。"
+
+#. Tag: para
+#: Components.xml:914
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.concurrentRequestTimeout</literal> "
+"&mdash; maximum wait time for a thread attempting to gain a lock on the long-"
+"running conversation context."
+msgstr ""
+"<literal>org.jboss.seam.core.manager.concurrentRequestTimeout</literal> "
+"&mdash; 一个线程试图获取 long-"
+"running conversation 上下文的锁的最大等待时间。"
+
+#. Tag: para
+#: Components.xml:919
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationIdParameter</literal> "
+"&mdash; the request parameter used to propagate the conversation id, default "
+"to <literal>conversationId</literal>."
+msgstr ""
+"<literal>org.jboss.seam.core.manager.conversationIdParameter</literal> "
+"&mdash; 传递 conversation id 的请求参数,缺省为 <literal>conversationId</literal>。"
+
+#. Tag: para
+#: Components.xml:924
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationIsLongRunningParameter</"
+"literal> &mdash; the request parameter used to propagate information about "
+"whether the conversation is long-running, default to "
+"<literal>conversationIsLongRunning</literal>."
+msgstr ""
+"<literal>org.jboss.seam.core.manager.conversationIsLongRunningParameter</"
+"literal> &mdash; 用来传递某些信息(如 conversation 是否为 long-running 类型)的请求参数,缺省为 <literal>conversationIsLongRunning</literal>。"
+
+#. Tag: literal
+#: Components.xml:932
+#, no-c-format
+msgid "org.jboss.seam.core.pages"
+msgstr "org.jboss.seam.core.pages"
+
+#. Tag: para
+#: Components.xml:934
+#, no-c-format
+msgid "Internal component for Seam workspace management. Always installed."
+msgstr "用于 Seam 工作区管理的内部组件。它总是被安装的。"
+
+#. Tag: para
+#: Components.xml:939
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.pages.noConversationViewId</literal> &mdash; "
+"global setting for the view id to redirect to when a conversation entry is "
+"not found on the server side."
+msgstr "<literal>org.jboss.seam.core.pages.noConversationViewId</literal> &mdash; 关于在服务器端没有找到 conversation 条目时重定向的 view id 的全局设置。"
+
+#. Tag: literal
+#: Components.xml:947
+#, no-c-format
+msgid "org.jboss.seam.core.ejb"
+msgstr "org.jboss.seam.core.ejb"
+
+#. Tag: para
+#: Components.xml:949
+#, no-c-format
+msgid ""
+"Bootstraps the JBoss Embeddable EJB3 container. Install as class "
+"<literal>org.jboss.seam.core.Ejb</literal>. This is useful when using Seam "
+"with EJB components outside the context of a Java EE 5 application server."
+msgstr "引导 JBoss 可嵌入的 EJB3 容器。安装为 <literal>org.jboss.seam.core.Ejb</literal> 类。这用于在 Java EE 5 应用服务器上下文外使用 Seam 和 EJB 组件。"
+
+#. Tag: para
+#: Components.xml:952
+#, no-c-format
+msgid ""
+"The basic Embedded EJB configuration is defined in <literal>jboss-embedded-"
+"beans.xml</literal>. Additional microcontainer configuration (for example, "
+"extra datasources) may be specified by <literal>jboss-beans.xml</literal> or "
+"<literal>META-INF/jboss-beans.xml</literal> in the classpath."
+msgstr ""
+"基本的内嵌的 EJB 配置在 <literal>jboss-embedded-"
+"beans.xml</literal> 里定义。其他的 microcontainer 配置(如额外的数据源)可以用 classpath 里的  <literal>jboss-beans.xml</literal> 或 <literal>META-INF/jboss-beans.xml</literal> 指定。"
+
+#. Tag: literal
+#: Components.xml:958
+#, no-c-format
+msgid "org.jboss.seam.core.microcontainer"
+msgstr "org.jboss.seam.core.microcontainer"
+
+#. Tag: para
+#: Components.xml:960
+#, no-c-format
+msgid ""
+"Bootstraps the JBoss microcontainer. Install as class <literal>org.jboss."
+"seam.core.Microcontainer</literal>. This is useful when using Seam with "
+"Hibernate and no EJB components outside the context of a Java EE application "
+"server. The microcontainer can provide a partial EE environment with JNDI, "
+"JTA, a JCA datasource and Hibernate."
+msgstr ""
+"引导 JBoss microcontainer。安装为 <literal>org.jboss."
+"seam.core.Microcontainer</literal> 类。这用于在 Java EE 应用服务器的上下文之外使用 Seam 和 Hibernate(无 EJB 组件)。Microcontainer 可以提供带有 JNDI、JTA、JCA 数据源和 Hibernate 的部分的 EE 环境。"
+
+#. Tag: para
+#: Components.xml:963
+#, no-c-format
+msgid ""
+"The microcontainer configuration may be specified by <literal>jboss-beans."
+"xml</literal> or <literal>META-INF/jboss-beans.xml</literal> in the "
+"classpath."
+msgstr ""
+"Microcontainer 配置可以用 classpath 里的 <literal>jboss-beans."
+"xml</literal> 或 <literal>META-INF/jboss-beans.xml</literal> 来指定。"
+
+#. Tag: literal
+#: Components.xml:969
+#, no-c-format
+msgid "org.jboss.seam.core.jbpm"
+msgstr "org.jboss.seam.core.jbpm"
+
+#. Tag: para
+#: Components.xml:971
+#, no-c-format
+msgid ""
+"Bootstraps a <literal>JbpmConfiguration</literal>. Install as class "
+"<literal>org.jboss.seam.core.Jbpm</literal>."
+msgstr "引导 <literal>JbpmConfiguration</literal>。安装为 <literal>org.jboss.seam.core.Jbpm</literal> 类。"
+
+#. Tag: para
+#: Components.xml:976
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.jbpm.processDefinitions</literal> &mdash; a "
+"list of resource names of jPDL files to be used for orchestration of "
+"business processes."
+msgstr "<literal>org.jboss.seam.core.jbpm.processDefinitions</literal> &mdash; 用于商业过程 orchestration 的 jPDL 文件资源名的列表。"
+
+#. Tag: para
+#: Components.xml:981
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.jbpm.pageflowDefinitions</literal> &mdash; a "
+"list of resource names of jPDL files to be used for orchestration of "
+"conversation page flows."
+msgstr "<literal>org.jboss.seam.core.jbpm.pageflowDefinitions</literal> &mdash; 用于 conversation 页面流程的 orchestration 的 jPDL 文件资源名的列表。"
+
+#. Tag: literal
+#: Components.xml:989
+#, no-c-format
+msgid "org.jboss.seam.core.conversationEntries"
+msgstr "org.jboss.seam.core.conversationEntries"
+
+#. Tag: para
+#: Components.xml:991
+#, no-c-format
+msgid ""
+"Internal session-scoped component recording the active long-running "
+"conversations between requests."
+msgstr "记录请求间活动的 long-running conversation 的作用域为 session 的内部组件。"
+
+#. Tag: literal
+#: Components.xml:997
+#, no-c-format
+msgid "org.jboss.seam.core.facesPage"
+msgstr "org.jboss.seam.core.facesPage"
+
+#. Tag: para
+#: Components.xml:999
+#, no-c-format
+msgid ""
+"Internal page-scoped component recording the conversation context associated "
+"with a page."
+msgstr "记录和页面关联的 conversation 上下文的作用域为 page 的内部组件。"
+
+#. Tag: literal
+#: Components.xml:1005
+#, no-c-format
+msgid "org.jboss.seam.core.persistenceContexts"
+msgstr "org.jboss.seam.core.persistenceContexts"
+
+#. Tag: para
+#: Components.xml:1007
+#, no-c-format
+msgid ""
+"Internal component recording the persistence contexts which were used in the "
+"current conversation."
+msgstr "记录在当前 conversation 里使用的持久性上下文的内部组件。"
+
+#. Tag: literal
+#: Components.xml:1013
+#, no-c-format
+msgid "org.jboss.seam.jms.queueConnection"
+msgstr "org.jboss.seam.jms.queueConnection"
+
+#. Tag: para
+#: Components.xml:1015
+#, no-c-format
+msgid ""
+"Manages a JMS <literal>QueueConnection</literal>. Installed whenever managed "
+"managed <literal>QueueSender</literal> is installed."
+msgstr "管理一个 JMS <literal>QueueConnection</literal>。每当安装被管理的 <literal>QueueSender</literal> 时它都会被安装。"
+
+#. Tag: para
+#: Components.xml:1020
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.jms.queueConnection.queueConnectionFactoryJndiName</"
+"literal> &mdash; the JNDI name of a JMS <literal>QueueConnectionFactory</"
+"literal>. Default to <literal>UIL2ConnectionFactory</literal>"
+msgstr ""
+"<literal>org.jboss.seam.jms.queueConnection.queueConnectionFactoryJndiName</"
+"literal> &mdash; JMS <literal>QueueConnectionFactory</"
+"literal> 的 JNDI 名。缺省为 <literal>UIL2ConnectionFactory</literal>。"
+
+#. Tag: literal
+#: Components.xml:1028
+#, no-c-format
+msgid "org.jboss.seam.jms.topicConnection"
+msgstr "org.jboss.seam.jms.topicConnection"
+
+#. Tag: para
+#: Components.xml:1030
+#, no-c-format
+msgid ""
+"Manages a JMS <literal>TopicConnection</literal>. Installed whenever managed "
+"managed <literal>TopicPublisher</literal> is installed."
+msgstr "管理一个 JMS <literal>TopicConnection</literal>。每当安装被管理的 <literal>TopicPublisher</literal> 时它都会被安装。"
+
+#. Tag: para
+#: Components.xml:1035
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.jms.topicConnection.topicConnectionFactoryJndiName</"
+"literal> &mdash; the JNDI name of a JMS <literal>TopicConnectionFactory</"
+"literal>. Default to <literal>UIL2ConnectionFactory</literal>"
+msgstr ""
+"<literal>org.jboss.seam.jms.topicConnection.topicConnectionFactoryJndiName</"
+"literal> &mdash; JMS <literal>TopicConnectionFactory</"
+"literal> 的 JNDI 名。缺省为 <literal>UIL2ConnectionFactory</literal>。"
+
+#. Tag: literal
+#: Components.xml:1043
+#, no-c-format
+msgid "org.jboss.seam.persistence.persistenceProvider"
+msgstr "org.jboss.seam.persistence.persistenceProvider"
+
+#. Tag: para
+#: Components.xml:1045
+#, no-c-format
+msgid "Abstraction layer for non-standardized features of JPA provider."
+msgstr "JPA 提供者的非标准特征的抽象层。"
+
+#. Tag: literal
+#: Components.xml:1051
+#, no-c-format
+msgid "org.jboss.seam.core.validation"
+msgstr "org.jboss.seam.core.validation"
+
+#. Tag: para
+#: Components.xml:1053
+#, no-c-format
+msgid "Internal component for Hibernate Validator support."
+msgstr "用于 Hibernate Validator 支持的内部组件。"
+
+#. Tag: literal
+#: Components.xml:1059
+#, no-c-format
+msgid "org.jboss.seam.debug.introspector"
+msgstr "org.jboss.seam.debug.introspector"
+
+#. Tag: para
+#: Components.xml:1061 Components.xml:1069
+#, no-c-format
+msgid "Support for the Seam Debug Page."
+msgstr "对 Seam 调试页面的支持。"
+
+#. Tag: literal
+#: Components.xml:1067
+#, no-c-format
+msgid "org.jboss.seam.debug.contexts"
+msgstr "org.jboss.seam.debug.contexts"
+
+#. Tag: title
+#: Components.xml:1078
+#, no-c-format
+msgid "Special components"
+msgstr "特殊组件"
+
+#. Tag: para
+#: Components.xml:1079
+#, no-c-format
+msgid ""
+"Certain special Seam component classes are installable multiple times under "
+"names specified in the Seam configuration. For example, the following lines "
+"in <literal>components.xml</literal> install and configure two Seam "
+"components:"
+msgstr "某些特殊组件类可依据 Seam 配置里指定的名字安装多次。例如,下面 <literal>components.xml</literal> 里的这些行安装并配置了两个 Seam 组件:"
+
+#. Tag: programlisting
+#: Components.xml:1082
+#, no-c-format
+msgid ""
+"&lt;component name=\"bookingDatabase\"\n"
+"          class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"    &lt;property name=\"persistenceUnitJndiName\"&gt;java:/comp/emf/"
+"bookingPersistence&lt;/property&gt;\n"
+"&lt;/component&gt;\n"
+"\n"
+"&lt;component name=\"userDatabase\"\n"
+"          class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"    &lt;property name=\"persistenceUnitJndiName\"&gt;java:/comp/emf/"
+"userPersistence&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+"&lt;component name=\"bookingDatabase\"\n"
+"          class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"    &lt;property name=\"persistenceUnitJndiName\"&gt;java:/comp/emf/"
+"bookingPersistence&lt;/property&gt;\n"
+"&lt;/component&gt;\n"
+"\n"
+"&lt;component name=\"userDatabase\"\n"
+"          class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"    &lt;property name=\"persistenceUnitJndiName\"&gt;java:/comp/emf/"
+"userPersistence&lt;/property&gt;\n"
+"&lt;/component&gt;"
+
+#. Tag: para
+#: Components.xml:1083
+#, no-c-format
+msgid ""
+"The Seam component names are <literal>bookingDatabase</literal> and "
+"<literal>userDatabase</literal>."
+msgstr "Seam 组件名是 <literal>bookingDatabase</literal> 和 <literal>userDatabase</literal>。"
+
+#. Tag: literal
+#: Components.xml:1088
+#, no-c-format
+msgid "&lt;entityManager&gt;"
+msgstr "&lt;entityManager&gt;"
+
+#. Tag: literal
+#: Components.xml:1089
+#, no-c-format
+msgid "org.jboss.seam.core.ManagedPersistenceContext"
+msgstr "org.jboss.seam.core.ManagedPersistenceContext"
+
+#. Tag: para
+#: Components.xml:1091
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed <literal>EntityManager</"
+"literal> with an extended persistence context."
+msgstr ""
+"用于带有扩展的持久性上下文的作用域为 conversation 的被管理的 <literal>EntityManager</"
+"literal> 的管理者组件。"
+
+#. Tag: para
+#: Components.xml:1096
+#, no-c-format
+msgid ""
+"<literal> &lt;entityManager&gt; .entityManagerFactory</literal> &mdash; a "
+"value binding expression that evaluates to an instance of "
+"<literal>EntityManagerFactory</literal>."
+msgstr "<literal> &lt;entityManager&gt; .entityManagerFactory</literal> &mdash; 对 <literal>EntityManagerFactory</literal> 实例求值的值绑定表达式。"
+
+#. Tag: para
+#: Components.xml:1099
+#, no-c-format
+msgid ""
+"<literal> &lt;entityManager&gt; .persistenceUnitJndiName</literal> &mdash; "
+"the JNDI name of the entity manager factory, default to <literal>java:/ &lt;"
+"managedPersistenceContext&gt; </literal>."
+msgstr ""
+"<literal> &lt;entityManager&gt; .persistenceUnitJndiName</literal> &mdash; entity manager 工厂的 JNDI 名,缺省为 <literal>java:/ &lt;"
+"managedPersistenceContext&gt; </literal>。"
+
+#. Tag: literal
+#: Components.xml:1107
+#, no-c-format
+msgid "&lt;entityManagerFactory&gt;"
+msgstr "&lt;entityManagerFactory&gt;"
+
+#. Tag: literal
+#: Components.xml:1108
+#, no-c-format
+msgid "org.jboss.seam.core.EntityManagerFactory"
+msgstr "org.jboss.seam.core.EntityManagerFactory"
+
+#. Tag: para
+#: Components.xml:1110
+#, no-c-format
+msgid ""
+"Manages a JPA <literal>EntityManagerFactory</literal>. This is most useful "
+"when using JPA outside of an EJB 3.0 supporting environment."
+msgstr "管理一个 JPA <literal>EntityManagerFactory</literal>。在支持 EJB 3.0 的环境外使用它最为有用。"
+
+#. Tag: para
+#: Components.xml:1115
+#, no-c-format
+msgid ""
+"<literal>entityManagerFactory.persistenceUnitName</literal> &mdash; the name "
+"of the persistence unit."
+msgstr "<literal>entityManagerFactory.persistenceUnitName</literal> &mdash; persistence unit 的名称。"
+
+#. Tag: para
+#: Components.xml:1120 Components.xml:1158
+#, no-c-format
+msgid "See the API JavaDoc for further configuration properties."
+msgstr "更多的配置属性请参看 API JavaDoc。"
+
+#. Tag: literal
+#: Components.xml:1126
+#, no-c-format
+msgid "&lt;session&gt;"
+msgstr "&lt;session&gt;"
+
+#. Tag: literal
+#: Components.xml:1127
+#, no-c-format
+msgid "org.jboss.seam.core.ManagedSession"
+msgstr "org.jboss.seam.core.ManagedSession"
+
+#. Tag: para
+#: Components.xml:1129
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed Hibernate "
+"<literal>Session</literal>."
+msgstr ""
+"用于作用域为 conversation 的 managed Hibernate "
+"<literal>Session</literal> 的管理者组件。"
+
+#. Tag: para
+#: Components.xml:1134
+#, no-c-format
+msgid ""
+"<literal> &lt;session&gt; .sessionFactory</literal> &mdash; a value binding "
+"expression that evaluates to an instance of <literal>SessionFactory</"
+"literal>."
+msgstr ""
+"<literal> &lt;session&gt; .sessionFactory</literal> &mdash; 对 <literal>SessionFactory</"
+"literal> 实例求值的值绑定表达式。"
+
+#. Tag: para
+#: Components.xml:1137
+#, no-c-format
+msgid ""
+"<literal> &lt;session&gt; .sessionFactoryJndiName</literal> &mdash; the JNDI "
+"name of the session factory, default to <literal>java:/ &lt;"
+"managedSession&gt; </literal>."
+msgstr ""
+"<literal> &lt;session&gt; .sessionFactoryJndiName</literal> &mdash; session 工厂的 JNDI 名称,缺省为 <literal>java:/ &lt;"
+"managedSession&gt; </literal>。"
+
+#. Tag: literal
+#: Components.xml:1145
+#, no-c-format
+msgid "&lt;sessionFactory&gt;"
+msgstr "&lt;sessionFactory&gt;"
+
+#. Tag: literal
+#: Components.xml:1146
+#, no-c-format
+msgid "org.jboss.seam.core.HibernateSessionFactory"
+msgstr "org.jboss.seam.core.HibernateSessionFactory"
+
+#. Tag: para
+#: Components.xml:1148
+#, no-c-format
+msgid "Manages a Hibernate <literal>SessionFactory</literal>."
+msgstr "管理 Hibernate <literal>SessionFactory</literal>。"
+
+#. Tag: para
+#: Components.xml:1153
+#, no-c-format
+msgid ""
+"<literal>&lt;sessionFactory&gt;.cfgResourceName</literal> &mdash; the path "
+"to the configuration file. Default to <literal>hibernate.cfg.xml</literal>."
+msgstr "<literal>&lt;sessionFactory&gt;.cfgResourceName</literal> &mdash; 配置文件的路径。缺省为 <literal>hibernate.cfg.xml</literal>。"
+
+#. Tag: literal
+#: Components.xml:1164
+#, no-c-format
+msgid "&lt;managedQueueSender&gt;"
+msgstr "&lt;managedQueueSender&gt;"
+
+#. Tag: literal
+#: Components.xml:1165
+#, no-c-format
+msgid "org.jboss.seam.jms.ManagedQueueSender"
+msgstr "org.jboss.seam.jms.ManagedQueueSender"
+
+#. Tag: para
+#: Components.xml:1167
+#, no-c-format
+msgid ""
+"Manager component for an event scoped managed JMS <literal>QueueSender</"
+"literal>."
+msgstr ""
+"用于作用域为 event 的 managed JMS <literal>QueueSender</"
+"literal> 的管理者组件。"
+
+#. Tag: para
+#: Components.xml:1172
+#, no-c-format
+msgid ""
+"<literal> &lt;managedQueueSender&gt; .queueJndiName</literal> &mdash; the "
+"JNDI name of the JMS queue."
+msgstr "<literal> &lt;managedQueueSender&gt; .queueJndiName</literal> &mdash; JMS 队列的 JNDI 名。"
+
+#. Tag: literal
+#: Components.xml:1180
+#, no-c-format
+msgid "&lt;managedTopicPublisher&gt;"
+msgstr "&lt;managedTopicPublisher&gt;"
+
+#. Tag: literal
+#: Components.xml:1181
+#, no-c-format
+msgid "org.jboss.seam.jms.ManagedTopicPublisher"
+msgstr "org.jboss.seam.jms.ManagedTopicPublisher"
+
+#. Tag: para
+#: Components.xml:1183
+#, no-c-format
+msgid ""
+"Manager component for an event scoped managed JMS <literal>TopicPublisher</"
+"literal>."
+msgstr ""
+"用于作用域为 event 的  managed JMS <literal>TopicPublisher</"
+"literal> 的管理者组件。"
+
+#. Tag: para
+#: Components.xml:1188
+#, no-c-format
+msgid ""
+"<literal> &lt;managedTopicPublisher&gt; .topicJndiName</literal> &mdash; the "
+"JNDI name of the JMS topic."
+msgstr "<literal> &lt;managedTopicPublisher&gt; .topicJndiName</literal> &mdash; JMS 主题的 JNDI 名。"
+
+#. Tag: literal
+#: Components.xml:1196
+#, no-c-format
+msgid "&lt;managedWorkingMemory&gt;"
+msgstr "&lt;managedWorkingMemory&gt;"
+
+#. Tag: literal
+#: Components.xml:1197
+#, no-c-format
+msgid "org.jboss.seam.drools.ManagedWorkingMemory"
+msgstr "org.jboss.seam.drools.ManagedWorkingMemory"
+
+#. Tag: para
+#: Components.xml:1199
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed Drools "
+"<literal>WorkingMemory</literal>."
+msgstr ""
+"用于作用域为 conversation 的 managed Drools "
+"<literal>WorkingMemory</literal> 的管理者组件。"
+
+#. Tag: para
+#: Components.xml:1204
+#, no-c-format
+msgid ""
+"<literal> &lt;managedWorkingMemory&gt; .ruleBase</literal> &mdash; a value "
+"expression that evaluates to an instance of <literal>RuleBase</literal>."
+msgstr "<literal> &lt;managedWorkingMemory&gt; .ruleBase</literal> &mdash; 对 <literal>RuleBase</literal> 实例求值的值绑定表达式。"
+
+#. Tag: literal
+#: Components.xml:1212
+#, no-c-format
+msgid "&lt;ruleBase&gt;"
+msgstr "&lt;ruleBase&gt;"
+
+#. Tag: literal
+#: Components.xml:1213
+#, no-c-format
+msgid "org.jboss.seam.drools.RuleBase"
+msgstr "org.jboss.seam.drools.RuleBase"
+
+#. Tag: para
+#: Components.xml:1215
+#, no-c-format
+msgid ""
+"Manager component for an application scoped Drools <literal>RuleBase</"
+"literal>. Note that this is not really intended for production usage, since "
+"it does not support dynamic installation of new rules."
+msgstr ""
+"用于作用域为 application 的 Drools <literal>RuleBase</"
+"literal> 的管理者组件。注意,这不能真正用于产品环境,因为它不支持动态安装新的规则。"
+
+#. Tag: para
+#: Components.xml:1220
+#, no-c-format
+msgid ""
+"<literal> &lt;ruleBase&gt; .ruleFiles</literal> &mdash; a list of files "
+"containing Drools rules."
+msgstr "<literal> &lt;ruleBase&gt; .ruleFiles</literal> &mdash; 包含 Drools 规则的文件列表。"
+
+#. Tag: para
+#: Components.xml:1223
+#, no-c-format
+msgid ""
+"<literal> &lt;ruleBase&gt; .dslFile</literal> &mdash; a Drools DSL "
+"definition."
+msgstr "<literal> &lt;ruleBase&gt; .dslFile</literal> &mdash; Drools DSL 定义。"
+
+#. Tag: literal
+#: Components.xml:1231
+#, no-c-format
+msgid "&lt;entityHome&gt;"
+msgstr "&lt;entityHome&gt;"
+
+#. Tag: literal
+#: Components.xml:1232
+#, no-c-format
+msgid "org.jboss.seam.framework.EntityHome"
+msgstr "org.jboss.seam.framework.EntityHome"
+
+#. Tag: literal
+#: Components.xml:1238
+#, no-c-format
+msgid "&lt;hibernateEntityHome&gt;"
+msgstr "&lt;hibernateEntityHome&gt;"
+
+#. Tag: literal
+#: Components.xml:1239
+#, no-c-format
+msgid "org.jboss.seam.framework.HibernateEntityHome"
+msgstr "org.jboss.seam.framework.HibernateEntityHome"
+
+#. Tag: literal
+#: Components.xml:1245
+#, no-c-format
+msgid "&lt;entityQuery&gt;"
+msgstr "&lt;entityQuery&gt;"
+
+#. Tag: literal
+#: Components.xml:1246
+#, no-c-format
+msgid "org.jboss.seam.framework.EntityQuery"
+msgstr "org.jboss.seam.framework.EntityQuery"
+
+#. Tag: literal
+#: Components.xml:1252
+#, no-c-format
+msgid "&lt;hibernateEntityQuery&gt;"
+msgstr "&lt;hibernateEntityQuery&gt;"
+
+#. Tag: literal
+#: Components.xml:1253
+#, no-c-format
+msgid "org.jboss.seam.framework.HibernateEntityQuery"
+msgstr "org.jboss.seam.framework.HibernateEntityQuery"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Concepts.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Concepts.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Concepts.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2252 @@
+# translation of Concepts.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Xi HUANG <xhuang at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Concepts\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2007-11-05 13:05+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Concepts.xml:6
+#, no-c-format
+msgid "The contextual component model"
+msgstr "上下文相关的组件模型"
+
+#. Tag: para
+#: Concepts.xml:7
+#, no-c-format
+msgid ""
+"The two core concepts in Seam are the notion of a <emphasis>context</"
+"emphasis> and the notion of a <emphasis>component</emphasis>. Components are "
+"stateful objects, usually EJBs, and an instance of a component is associated "
+"with a context, and given a name in that context. <emphasis>Bijection</"
+"emphasis> provides a mechanism for aliasing internal component names "
+"(instance variables) to contextual names, allowing component trees to be "
+"dynamically assembled, and reassembled by Seam."
+msgstr ""
+"Seam 里的两个核心概念是 <emphasis>context</emphasis> 和 <emphasis>component</"
+"emphasis> 标记。组件是有状态的对象,通常是 EJB,组件的实例和上下文相关联,且"
+"在这个上下文里被赋予一个名字。<emphasis>Bijection(双向注入)</emphasis> 提供"
+"了一个把内部组件名(实例变量)映射为上下文相关的别名、允许 Seam 动态组装和重"
+"组组件树的机制。"
+
+#. Tag: para
+#: Concepts.xml:10
+#, no-c-format
+msgid "Let&#39;s start by describing the contexts built in to Seam."
+msgstr "让我们从描述 Seam 里内置的上下文开始。"
+
+#. Tag: title
+#: Concepts.xml:13
+#, no-c-format
+msgid "Seam contexts"
+msgstr "Seam 的上下文"
+
+#. Tag: para
+#: Concepts.xml:14
+#, no-c-format
+msgid ""
+"Seam contexts are created and destroyed by the framework. The application "
+"does not control context demarcation via explicit Java API calls. Context "
+"are usually implicit. In some cases, however, contexts are demarcated via "
+"annotations."
+msgstr ""
+"Seam 的上下文由框架创建并销毁。应用程序不通过显性的 Java API 调用来控制上下文"
+"的划分。上下文通常是隐性的。但在某些情况下,上下文是通过注解划分的。"
+
+#. Tag: para
+#: Concepts.xml:17
+#, no-c-format
+msgid "The basic Seam contexts are:"
+msgstr "基本的 Seam 上下文是:"
+
+#. Tag: para
+#: Concepts.xml:22
+#, no-c-format
+msgid "<para>Stateless context</para>"
+msgstr "<para>Stateless 上下文</para>"
+
+#. Tag: para
+#: Concepts.xml:27
+#, no-c-format
+msgid "Event (or request) context"
+msgstr "Event(或 request)上下文"
+
+#. Tag: para
+#: Concepts.xml:32 Concepts.xml:147
+#, no-c-format
+msgid "<para>Page context</para>"
+msgstr "<para>Page 上下文</para>"
+
+#. Tag: para
+#: Concepts.xml:37 Concepts.xml:152
+#, no-c-format
+msgid "<para>Conversation context</para>"
+msgstr "<para>Conversation 上下文</para>"
+
+#. Tag: para
+#: Concepts.xml:42 Concepts.xml:157
+#, no-c-format
+msgid "<para>Session context</para>"
+msgstr "<para>Session 上下文</para>"
+
+#. Tag: para
+#: Concepts.xml:47 Concepts.xml:162
+#, no-c-format
+msgid "<para>Business process context</para>"
+msgstr "<para>Business process 上下文</para>"
+
+#. Tag: para
+#: Concepts.xml:52 Concepts.xml:167
+#, no-c-format
+msgid "<para>Application context</para>"
+msgstr "<para>Application 上下文</para>"
+
+#. Tag: para
+#: Concepts.xml:57
+#, no-c-format
+msgid ""
+"You will recognize some of these contexts from servlet and related "
+"specifications. However, two of them might be new to you: "
+"<emphasis>conversation context</emphasis>, and <emphasis>business process "
+"context</emphasis>. One reason state management in web applications is so "
+"fragile and error-prone is that the three built-in contexts (request, "
+"session and application) are not especially meaningful from the point of "
+"view of the business logic. A user login session, for example, is a fairly "
+"arbitrary construct in terms of the actual application work flow. Therefore, "
+"most Seam components are scoped to the conversation or business process "
+"contexts, since they are the contexts which are most meaningful in terms of "
+"the application."
+msgstr ""
+"你得发现其中一些上下文是从 servlet 和相关的规格而来的。然而,有两个对于你来说"
+"可能是新的:<emphasis>conversation 上下文</emphasis> 和 <emphasis>business "
+"process 上下文</emphasis>。web 应用程序里的状态管理是如此的脆弱和容易出错,其"
+"中一个原因是,从商业逻辑的角度来看,三个内置的上下文(request、session 和 "
+"application)并不是特别有意义。例如,一个用户登录的会话,按照实际的应用程序工"
+"作流程来说,其结构是相当随意的。因此,大多数 Seam 都限定在 conversation 或 "
+"business process 上下文,因为依照应用程序,它们是最有意义的上下文。"
+
+#. Tag: para
+#: Concepts.xml:60
+#, no-c-format
+msgid "Let&#39;s look at each context in turn."
+msgstr "让我们依次看看这些上下文。"
+
+#. Tag: title
+#: Concepts.xml:63
+#, no-c-format
+msgid "<title>Stateless context</title>"
+msgstr "<title>Stateless 上下文</title>"
+
+#. Tag: para
+#: Concepts.xml:64
+#, no-c-format
+msgid ""
+"Components which are truly stateless (stateless session beans, primarily) "
+"always live in the stateless context (this is really a non-context). "
+"Stateless components are not very interesting, and are arguably not very "
+"object-oriented. Nevertheless, they are important and often useful."
+msgstr ""
+"无状态的组件(主要是 stateless session bean)总是存在于 stateless context 里"
+"(这实际上是非上下文)。无状态的组件并不是很令人感兴趣,它也不是完全面向对象"
+"的。但是,它们也很重要且有用。"
+
+#. Tag: title
+#: Concepts.xml:67
+#, no-c-format
+msgid "<title>Event context</title>"
+msgstr "<title>事件上下文(Event context)</title>"
+
+#. Tag: para
+#: Concepts.xml:68
+#, no-c-format
+msgid ""
+"The event context is the \"narrowest\" stateful context, and is a "
+"generalization of the notion of the web request context to cover other kinds "
+"of events. Nevertheless, the event context associated with the lifecycle of "
+"a JSF request is the most important example of an event context, and the one "
+"you will work with most often. Components associated with the event context "
+"are destroyed at the end of the request, but their state is available and "
+"well-defined for at least the lifecycle of the request."
+msgstr ""
+"事件上下文(Event context)是“最窄”的 stateful 上下文,它是覆盖其他类型事件"
+"的 web 请求上下文的概念的综合。但是,和 JSF 请求相关联的事件上下文是最重要的"
+"例子,你将经常用到它。和事件上下文相关联的组件在请求结束时被销毁,但其状态在"
+"请求的生命周期里仍然可用。"
+
+#. Tag: para
+#: Concepts.xml:71
+#, no-c-format
+msgid ""
+"When you invoke a Seam component via RMI, or Seam Remoting, the event "
+"context is created and destroyed just for the invocation."
+msgstr ""
+"当你通过 RMI 或 Seam Remoting 调用 Seam 组件,事件上下文仅为这此调用创建和销"
+"毁。"
+
+#. Tag: title
+#: Concepts.xml:74
+#, no-c-format
+msgid "<title>Page context</title>"
+msgstr "<title>页面上下文(Page context)</title>"
+
+#. Tag: para
+#: Concepts.xml:75
+#, no-c-format
+msgid ""
+"The page context allows you to associate state with a particular instance of "
+"a rendered page. You can initialize state in your event listener, or while "
+"actually rendering the page, and then have access to it from any event that "
+"originates from that page. This is especially useful for functionality like "
+"clickable lists, where the list is backed by changing data on the server "
+"side. The state is actually serialized to the client, so this construct is "
+"extremely robust with respect to multi-window operation and the back button."
+msgstr ""
+"页面上下文(page context)允许你把状态和特定的显示页面的实例相关联。你可以在"
+"事件 listener 里或者实际显示该页面时初始化状态,并从这个页面产生的任何事件里"
+"对它进行访问。这对于在服务器端修改数据的可点击的列表特别有用。状态对于客户来"
+"说实际上串行化了,所以其结构对于多窗口和后退按钮操作及其稳固。"
+
+#. Tag: title
+#: Concepts.xml:78
+#, no-c-format
+msgid "<title>Conversation context</title>"
+msgstr "<title>Conversation 上下文</title>"
+
+#. Tag: para
+#: Concepts.xml:79
+#, no-c-format
+msgid ""
+"The conversation context is a truly central concept in Seam. A "
+"<emphasis>conversation</emphasis> is a unit of work from the point of view "
+"of the user. It might span several interactions with the user, several "
+"requests, and several database transactions. But to the user, a conversation "
+"solves a single problem. For example, \"book hotel\", \"approve contract\", "
+"\"create order\" are all conversations. You might like to think of a "
+"conversation implementing a single \"use case\" or \"user story\", but the "
+"relationship is not necessarily quite exact."
+msgstr ""
+"Conversation 上下文在 Seam 里是真正的中心概念。从用户角度来看,"
+"<emphasis>conversation</emphasis> 是一个任务单元。它可能跨越与用户的多个交"
+"互、多个请求和多个数据库事务。但对于用户而言,conversation 解决了一个简单的问"
+"题。例如,\"book hotel\"、\"approve contract\"、\"create order\" 都是 "
+"conversation。你可能认为 conversation 实现了简单的 \"use case\" 或 \"user "
+"story\",但这种关系并不确切。"
+
+#. Tag: para
+#: Concepts.xml:82
+#, no-c-format
+msgid ""
+"A conversation holds state associated with \"what the user is doing now, in "
+"this window\". A single user may have multiple conversations in progress at "
+"any point in time, usually in multiple windows. The conversation context "
+"allows us to ensure that state from the different conversations does not "
+"collide and cause bugs."
+msgstr ""
+"Conversation 保存与“用户在这个窗口所做的事情”相关的状态。在任何时候单个用户都"
+"可能有多个 conversation 并存。Conversation 上下文允许我们确保不同的 "
+"conversation 的状态不冲突并导致程序错误。"
+
+#. Tag: para
+#: Concepts.xml:85
+#, no-c-format
+msgid ""
+"It might take you some time to get used to thinking of applications in terms "
+"of conversations. But once you get used to it, we think you&#39;ll love the "
+"notion, and never be able to not think in terms of conversations again!"
+msgstr ""
+"你可能需要点时间来习惯用 conversation 思考应用程序。但一旦你习惯了这种方式,"
+"我们认为你将喜欢这个概念,且再也不能不用 conversation 思考了!"
+
+#. Tag: para
+#: Concepts.xml:88
+#, no-c-format
+msgid ""
+"Some conversations last for just a single request. Conversations that span "
+"multiple requests must be demarcated using annotations provided by Seam."
+msgstr ""
+"某些 conversation 只存在于单一请求里。跨多个请求的 conversation 必须用 Seam "
+"提供的注解进行区分。"
+
+#. Tag: para
+#: Concepts.xml:91
+#, no-c-format
+msgid ""
+"Some conversations are also <emphasis>tasks</emphasis>. A task is a "
+"conversation that is significant in terms of a long-running business "
+"process, and has the potential to trigger a business process state "
+"transition when it is successfully completed. Seam provides a special set of "
+"annotations for task demarcation."
+msgstr ""
+"某些 conversation 也是<emphasis>任务(task)</emphasis>。任务是长期的商业过程"
+"里重要的 conversation,并有可能在成功完成后触发商业过程状态转移。Seam 提供一"
+"套用于任务限界的特殊注解。"
+
+#. Tag: para
+#: Concepts.xml:94
+#, no-c-format
+msgid ""
+"Conversations may be <emphasis>nested</emphasis>, with one conversation "
+"taking place \"inside\" a wider conversation. This is an advanced feature."
+msgstr ""
+"Conversation 可以<emphasis>嵌套</emphasis>,一个 conversation 可以发生在另外"
+"一个范围更广的 conversation 里。这是一个高级功能。"
+
+#. Tag: para
+#: Concepts.xml:97
+#, no-c-format
+msgid ""
+"Usually, conversation state is actually held by Seam in the servlet session "
+"between requests. Seam implements configurable <emphasis>conversation "
+"timeout</emphasis>, automatically destroying inactive conversations, and "
+"thus ensuring that the state held by a single user login session does not "
+"grow without bound if the user abandons conversations."
+msgstr ""
+"通常,Seam 实际上把 conversation 状态保存在请求间的 servlet session 里。 Seam 实现了可配置的 <emphasis>conversation "
+"timeout</emphasis>,它自动销毁不活动的 conversation,因此保证了如果用户遗弃 conversation 时,单个用户登录会话所保存的状态不会产生冲突。"
+
+#. Tag: para
+#: Concepts.xml:100
+#, no-c-format
+msgid ""
+"Seam serializes processing of concurrent requests that take place in the "
+"same long-running conversation context, in the same process."
+msgstr "Seam 序列化了对发生在相同进程和相同长期 conversation 上下文里的并行请求的处理。"
+
+#. Tag: para
+#: Concepts.xml:103
+#, no-c-format
+msgid ""
+"Alternatively, Seam may be configured to keep conversational state in the "
+"client browser."
+msgstr "或者,Seam 可以被配置成在客户浏览器里保存会话状态。"
+
+#. Tag: title
+#: Concepts.xml:106
+#, no-c-format
+msgid "<title>Session context</title>"
+msgstr "<title>Session 上下文</title>"
+
+#. Tag: para
+#: Concepts.xml:107
+#, no-c-format
+msgid ""
+"A session context holds state associated with the user login session. While "
+"there are some cases where it is useful to share state between several "
+"conversations, we generally frown on the use of session context for holding "
+"components other than global information about the logged in user."
+msgstr "Session 上下文保存和用户登录会话相关联的状态。当在有些情况下需要在几个 conversation 间共享状态时,我们通常不赞成使用 Session 上下文来保存组件而不是登录用户的全局信息。"
+
+#. Tag: para
+#: Concepts.xml:110
+#, no-c-format
+msgid ""
+"In a JSR-168 portal environment, the session context represents the portlet "
+"session."
+msgstr "在 JSR-168 portal 环境里,session 上下文代表了 portlet session。"
+
+#. Tag: title
+#: Concepts.xml:113
+#, no-c-format
+msgid "<title>Business process context</title>"
+msgstr "<title>商业过程上下文</title>"
+
+#. Tag: para
+#: Concepts.xml:114
+#, no-c-format
+msgid ""
+"The business process context holds state associated with the long running "
+"business process. This state is managed and made persistent by the BPM "
+"engine (JBoss jBPM). The business process spans multiple interactions with "
+"multiple users, so this state is shared between multiple users, but in a "
+"well-defined manner. The current task determines the current business "
+"process instance, and the lifecycle of the business process is defined "
+"externally using a <emphasis>process definition language</emphasis>, so "
+"there are no special annotations for business process demarcation."
+msgstr "商业过程上下文保存和长期运行的商业过程相关联的状态。BPM 引擎(JBoss jBPM)管理这个状态并使其持久化。因为商业过程跨越与多个用户的多个交互过程,所以状态以明确的方式在多个用户间共享。当前的任务决定了当前的商业过程实例,商业过程的生命过程使用<emphasis>过程定义语言</emphasis>在外部定义,所以商业过程限界不需要特殊的注解。"
+
+#. Tag: title
+#: Concepts.xml:117
+#, no-c-format
+msgid "<title>Application context</title>"
+msgstr "<title>Application 上下文</title>"
+
+#. Tag: para
+#: Concepts.xml:118
+#, no-c-format
+msgid ""
+"The application context is the familiar servlet context from the servlet "
+"spec. Application context is mainly useful for holding static information "
+"such as configuration data, reference data or metamodels. For example, Seam "
+"stores its own configuration and metamodel in the application context."
+msgstr "Application 上下文是我们所熟悉的 servlet 规格里的 servlet 上下文。应用程序上下文主要用于保存静态信息,如配置数据、引用数据或元模型(metamodel)。例如,Seam 保存在应用程序上下文里保存自己的配置和元模型。"
+
+#. Tag: title
+#: Concepts.xml:121
+#, no-c-format
+msgid "Context variables"
+msgstr "上下文变量"
+
+#. Tag: para
+#: Concepts.xml:122
+#, no-c-format
+msgid ""
+"A context defines a namespace, a set of <emphasis>context variables</"
+"emphasis>. These work much the same as session or request attributes in the "
+"servlet spec. You may bind any value you like to a context variable, but "
+"usually we bind Seam component instances to context variables."
+msgstr "上下文定义了命名空间以及一组<emphasis>上下文变量</emphasis>。这和 servlet 规格里的 session 或 request 属性完全相同。你可以把任何喜欢的值绑定到上下文变量,但通常我们只绑定 Seam 组件实例。"
+
+#. Tag: para
+#: Concepts.xml:125
+#, no-c-format
+msgid ""
+"So, within a context, a component instance is identified by the context "
+"variable name (this is usually, but not always, the same as the component "
+"name). You may programatically access a named component instance in a "
+"particular scope via the <literal>Contexts</literal> class, which provides "
+"access to several thread-bound instances of the <literal>Context</literal> "
+"interface:"
+msgstr "所以,在上下文里,组件实例是由上下文变量名(通常和组件名相同,但并非总是如此)来识别的。你可以通过 <literal>Contexts</literal> 类在程序里访问具有某个作用域的组件实例,这个类提供对 <literal>Context</literal> 接口的几个 thread-bound 实例的访问:"
+
+#. Tag: programlisting
+#: Concepts.xml:128
+#, no-c-format
+msgid "User user = (User) Contexts.getSessionContext().get(\"user\");"
+msgstr "User user = (User) Contexts.getSessionContext().get(\"user\");"
+
+#. Tag: para
+#: Concepts.xml:129
+#, no-c-format
+msgid "You may also set or change the value associated with a name:"
+msgstr "你也可以设置或修改和某个名字相关联的值:"
+
+#. Tag: programlisting
+#: Concepts.xml:132
+#, no-c-format
+msgid "Contexts.getSessionContext().set(\"user\", user);"
+msgstr "Contexts.getSessionContext().set(\"user\", user);"
+
+#. Tag: para
+#: Concepts.xml:133
+#, no-c-format
+msgid ""
+"Usually, however, we obtain components from a context via injection, and put "
+"component instances into a context via outjection."
+msgstr "然而,我们通常使用注入从上下文里获取组件,并通过注出把组件实例放入上下文。"
+
+#. Tag: title
+#: Concepts.xml:136
+#, no-c-format
+msgid "Context search priority"
+msgstr "上下文搜索优先级"
+
+#. Tag: para
+#: Concepts.xml:137
+#, no-c-format
+msgid ""
+"Sometimes, as above, component instances are obtained from a particular "
+"known scope. Other times, all stateful scopes are searched, in "
+"<emphasis>priority order</emphasis>. The order is as follows:"
+msgstr "有时候,组件实例从某个已知的作用域里获得。而其他时候,所有的 stateful 作用域都将按照 <emphasis>优先级顺序</emphasis>进行搜索。其顺序如下:"
+
+#. Tag: para
+#: Concepts.xml:142
+#, no-c-format
+msgid "<para>Event context</para>"
+msgstr "<para>Event 上下文</para>"
+
+#. Tag: para
+#: Concepts.xml:172
+#, no-c-format
+msgid ""
+"You can perform a priority search by calling <literal>Contexts."
+"lookupInStatefulContexts()</literal>. Whenever you access a component by "
+"name from a JSF page, a priority search occurs."
+msgstr ""
+"你可以调用 <literal>Contexts."
+"lookupInStatefulContexts()</literal> 来执行优先级搜索。每当你用 JSF 页面里的名字访问组件,优先级搜索都会发生。"
+
+#. Tag: title
+#: Concepts.xml:175
+#, no-c-format
+msgid "Concurrency model"
+msgstr "并行模式"
+
+#. Tag: para
+#: Concepts.xml:176
+#, no-c-format
+msgid ""
+"Neither the servlet nor EJB specifications define any facilities for "
+"managing concurrent requests originating from the same client. The servlet "
+"container simply lets all threads run concurrently and leaves enforcing "
+"threadsafeness to application code. The EJB container allows stateless "
+"components to be accessed concurrently, and throws an exception if multiple "
+"threads access a stateful session bean."
+msgstr "servlet 和 EJB 规格都没有定义管理同一客户发出的并行请求的机制。servlet 容器简单地让所有线程并行并把线程的安全性留给应用程序来处理。EJB 容器允许并行地访问 stateless 组件,且在多个线程访问同一 stateful session bean 时抛出异常。"
+
+#. Tag: para
+#: Concepts.xml:179
+#, no-c-format
+msgid ""
+"This behavior might have been okay in old-style web applications which were "
+"based around fine-grained, synchronous requests. But for modern applications "
+"which make heavy use of many fine-grained, asynchronous (AJAX) requests, "
+"concurrency is a fact of life, and must be supported by the programming "
+"model. Seam weaves a concurrency management layer into its context model."
+msgstr "在老式的基于细颗粒度的、同步的请求的 web 应用程序里,这种行为可能还过得去。但对于现在的大量利用细颗粒度的异步(AJAX)请求的应用程序,并行性就格外重要了,编程模型必须支持它。Seam 在它的上下文模型里放入了一个并行管理层。"
+
+#. Tag: para
+#: Concepts.xml:182
+#, no-c-format
+msgid ""
+"The Seam session and application contexts are multithreaded. Seam will allow "
+"concurrent requests in a context to be processed concurrently. The event and "
+"page contexts are by nature single threaded. The business process context is "
+"strictly speaking multi-threaded, but in practice concurrency is "
+"sufficiently rare that this fact may be disregarded most of the time. "
+"Finally, Seam enforces a <emphasis>single thread per conversation per "
+"process</emphasis> model for the conversation context by serializing "
+"concurrent requests in the same long-running conversation context."
+msgstr ""
+"Seam 的 session 和 application 上下文都是多线程的。Seam 将允许并行地处理上下文里的并行请求。Event 和 page 上下文天生都是单线程的。Business process 上下文严格来说是多线程的,但实际的并行很少见,所以可以不予考虑。最后,Seam 通过串行化相同 long-running conversation 上下文里并行请求,实行了 conversation 上下文的 <emphasis>single thread per conversation per "
+"process</emphasis> 模型。"
+
+#. Tag: para
+#: Concepts.xml:185
+#, no-c-format
+msgid ""
+"Since the session context is multithreaded, and often contains volatile "
+"state, session scope components are always protected by Seam from concurrent "
+"access. Seam serializes requests to session scope session beans and "
+"JavaBeans by default (and detects and breaks any deadlocks that occur). This "
+"is not the default behaviour for application scoped components however, "
+"since application scoped components do not usually hold volatile state and "
+"because synchronization at the global level is <emphasis>extremely</"
+"emphasis> expensive. However, you can force a serialized threading model on "
+"any session bean or JavaBean component by adding the <literal>@Synchronized</"
+"literal> annotation."
+msgstr ""
+"既然 session 上下文是多线程的,且它经常包含易变的状态,Seam 总是不对作用域为 scope 的组件进行并行访问。在缺省情况下,Seam 串行化对作用域为 scope 的 session bean 和 JavaBean 的请求(并检测和释放任何发生的死锁)。然而,这对于作用域为 application 的组件并非缺省的行为,因为全局范围的同步的代价是<emphasis>极其</emphasis>高的。但是,你可以添加 <literal>@Synchronized</"
+"literal> 注解来在任何 session bean 或 JavaBean 组件上强制串行化的线程模型。"
+
+#. Tag: para
+#: Concepts.xml:188
+#, no-c-format
+msgid ""
+"This concurrency model means that AJAX clients can safely use volatile "
+"session and conversational state, without the need for any special work on "
+"the part of the developer."
+msgstr "这个并行模型意味着 AJAX 客户可以安全地使用易变的 session 和 conversational 状态,而不需要给开发人员添加任何的负担。"
+
+#. Tag: title
+#: Concepts.xml:191
+#, no-c-format
+msgid "Seam components"
+msgstr "Seam 组件"
+
+#. Tag: para
+#: Concepts.xml:192
+#, no-c-format
+msgid ""
+"Seam components are POJOs (Plain Old Java Objects). In particular, they are "
+"JavaBeans or EJB 3.0 enterprise beans. While Seam does not require that "
+"components be EJBs and can even be used without an EJB 3.0 compliant "
+"container, Seam was designed with EJB 3.0 in mind and includes deep "
+"integration with EJB 3.0. Seam supports the following <emphasis>component "
+"types</emphasis>."
+msgstr "Seam 组件是 POJO(普通 Java 对象)。特别地,它们是 JavaBean 或 EJB 3.0 enterprise bean。虽然 Seam 并不要求组件是 EJB 且甚至可以不使用兼容 EJB 3.0 的容器,但实际上 Seam 是为 EJB 3.0 设计的且深度集成了 EJB 3.0。Seam 支持下面的<emphasis>组件类型</emphasis>。"
+
+#. Tag: para
+#: Concepts.xml:197
+#, no-c-format
+msgid "EJB 3.0 stateless session beans"
+msgstr "EJB 3.0 stateless session bean"
+
+#. Tag: para
+#: Concepts.xml:202
+#, no-c-format
+msgid "EJB 3.0 stateful session beans"
+msgstr "EJB 3.0 stateful session bean"
+
+#. Tag: para
+#: Concepts.xml:207
+#, no-c-format
+msgid "EJB 3.0 entity beans"
+msgstr "EJB 3.0 entity bean"
+
+#. Tag: para
+#: Concepts.xml:212
+#, no-c-format
+msgid "<para>JavaBeans</para>"
+msgstr "<para>JavaBean</para>"
+
+#. Tag: para
+#: Concepts.xml:217
+#, no-c-format
+msgid "EJB 3.0 message-driven beans"
+msgstr "EJB 3.0 message-driven bean"
+
+#. Tag: title
+#: Concepts.xml:222
+#, no-c-format
+msgid "Stateless session beans"
+msgstr "Stateless session bean"
+
+#. Tag: para
+#: Concepts.xml:223
+#, no-c-format
+msgid ""
+"Stateless session bean components are not able to hold state across multiple "
+"invocations. Therefore, they usually work by operating upon the state of "
+"other components in the various Seam contexts. They may be used as JSF "
+"action listeners, but cannot provide properties to JSF components for "
+"display."
+msgstr "Stateless session bean 组件不能够跨越多个调用保存状态。因此,它们通常根据不同的 Seam 上下文里的其他组件的状态来运行。它们可以被用作 JSF action listener,但不能提供用于显示的 JSF 组件的属性。"
+
+#. Tag: para
+#: Concepts.xml:226
+#, no-c-format
+msgid "Stateless session beans always live in the stateless context."
+msgstr "Stateless session bean 总是存在于 stateless 上下文里。"
+
+#. Tag: para
+#: Concepts.xml:229
+#, no-c-format
+msgid "Stateless session beans are the least interesting kind of Seam component."
+msgstr "Stateless session bean 是最不令人感兴趣的 Seam 组件。"
+
+#. Tag: title
+#: Concepts.xml:232
+#, no-c-format
+msgid "Stateful session beans"
+msgstr "Stateful session bean"
+
+#. Tag: para
+#: Concepts.xml:233
+#, no-c-format
+msgid ""
+"Stateful session bean components are able to hold state not only across "
+"multiple invocations of the bean, but also across multiple requests. "
+"Application state that does not belong in the database should usually be "
+"held by stateful session beans. This is a major difference between Seam and "
+"many other web application frameworks. Instead of sticking information about "
+"the current conversation directly in the <literal>HttpSession</literal>, you "
+"should keep it in instance variables of a stateful session bean that is "
+"bound to the conversation context. This allows Seam to manage the lifecycle "
+"of this state for you, and ensure that there are no collisions between state "
+"relating to different concurrent conversations."
+msgstr "Stateful session bean 组件不仅可以跨越 bean、也可以跨越多个请求的调用来保存状态。不存放在数据库里的应用程序状态通常由 stateful session bean 来保存。这是 Seam 和许多其他 web 应用程序框架的主要区别。你应该把当前的 conversation 保存在绑定到其上下文的 stateful session bean 变量,而不是直接存放在 <literal>HttpSession</literal> 里。这允许 Seam 为你管理状态的生命周期,并确保和并行的不同 conversation 相关的状态之间不发生冲突。"
+
+#. Tag: para
+#: Concepts.xml:236
+#, no-c-format
+msgid ""
+"Stateful session beans are often used as JSF action listener, and as backing "
+"beans that provide properties to JSF components for display or form "
+"submission."
+msgstr "Stateful session bean 经常被用作 JSF action listener,并且为用于显示或表单提交的 JSF 组件提供属性。"
+
+#. Tag: para
+#: Concepts.xml:239
+#, no-c-format
+msgid ""
+"By default, stateful session beans are bound to the conversation context. "
+"They may never be bound to the page or stateless contexts."
+msgstr "在缺省情况下,stateful session beans 绑定在 conversation 上下文里。它们从不绑定到 page 或 stateless 上下文。"
+
+#. Tag: para
+#: Concepts.xml:242
+#, no-c-format
+msgid ""
+"Concurrent requests to session-scoped stateful session beans are always "
+"serialized by Seam."
+msgstr "Seam 总是串行化对作用域为 session 的 stateful session bean 的并行请求。"
+
+#. Tag: title
+#: Concepts.xml:245
+#, no-c-format
+msgid "Entity beans"
+msgstr "Entity beans"
+
+#. Tag: para
+#: Concepts.xml:246
+#, no-c-format
+msgid ""
+"Entity beans may be bound to a context variable and function as a seam "
+"component. Because entities have a persistent identity in addition to their "
+"contextual identity, entity instances are usually bound explicitly in Java "
+"code, rather than being instantiated implicitly by Seam."
+msgstr "Entity bean 可以绑定到一个上下文变量并充当 Seam 组件。因为除了其上下文的属性,entity 还有一个持久性的属性,entity 实例通常显性地绑定在 Java 代码里,而不是由 Seam 隐性地初始化。"
+
+#. Tag: para
+#: Concepts.xml:249
+#, no-c-format
+msgid ""
+"Entity bean components do not support bijection or context demarcation. Nor "
+"does invocation of an entity bean trigger validation."
+msgstr "Entity bean 组件不支持双向注入或上下文限界。对 entity bean 的调用也不触发检验。"
+
+#. Tag: para
+#: Concepts.xml:252
+#, no-c-format
+msgid ""
+"Entity beans are not usually used as JSF action listeners, but do often "
+"function as backing beans that provide properties to JSF components for "
+"display or form submission. In particular, it is common to use an entity as "
+"a backing bean, together with a stateless session bean action listener to "
+"implement create/update/delete type functionality."
+msgstr "Entity bean 通常不会用作 JSF action listener,但它经常充当 backing bean,为用于显示或表单提交的 JSF 组件提供属性。特别是,我们通常把 entity 用作 backing bean,并与 stateless session bean action listener 一起来实现 create/update/delete 等功能。"
+
+#. Tag: para
+#: Concepts.xml:255
+#, no-c-format
+msgid ""
+"By default, entity beans are bound to the conversation context. They may "
+"never be bound to the stateless context."
+msgstr "在缺省情况下,entity bean 绑定在 conversation 上下文里。它们从不绑定到 stateless 上下文。"
+
+#. Tag: para
+#: Concepts.xml:258
+#, no-c-format
+msgid ""
+"Note that it in a clustered environment is somewhat less efficient to bind "
+"an entity bean directly to a conversation or session scoped Seam context "
+"variable than it would be to hold a reference to the entity bean in a "
+"stateful session bean. For this reason, not all Seam applications define "
+"entity beans to be Seam components."
+msgstr "注意,在群集环境里,把 entity bean 直接绑定到作用域为 conversation 为r session 的 Seam 上下文变量将比在 stateful session bean 里使用这个 entity bean 的引用效率要低。因此,不是所有的 Seam 应用程序都把 entity bean 定义为 Seam 组件。"
+
+#. Tag: title
+#: Concepts.xml:261
+#, no-c-format
+msgid "<title>JavaBeans</title>"
+msgstr "<title>JavaBeans</title>"
+
+#. Tag: para
+#: Concepts.xml:262
+#, no-c-format
+msgid ""
+"Javabeans may be used just like a stateless or stateful session bean. "
+"However, they do not provide the functionality of a session bean "
+"(declarative transaction demarcation, declarative security, efficient "
+"clustered state replication, EJB 3.0 persistence, timeout methods, etc)."
+msgstr "Javabean 可以象 stateless 或 stateful session bean 一样使用。然而,它们不提供 session bean 的功能(声明式事务限界、声明式安全性、有效的群集状态复制、EJB 3.0 持久性、timeout 方法等)。"
+
+#. Tag: para
+#: Concepts.xml:265
+#, no-c-format
+msgid ""
+"In a later chapter, we show you how to use Seam and Hibernate without an EJB "
+"container. In this use case, components are JavaBeans instead of session "
+"beans. Note, however, that in many application servers it is somewhat less "
+"efficient to cluster conversation or session scoped Seam JavaBean components "
+"than it is to cluster stateful session bean components."
+msgstr "在后面的章节里,我们为你展示如何不通过 EJB 容器使用 Seam 和 Hibernate。在这个例子里,组件是 JavaBean 而不是 session bean。然而,请注意在许多应用服务器里,群集作用域为 conversation 或 session 的 Seam JavaBean 组件比群集 stateful session bean 组件的效率要低。"
+
+#. Tag: para
+#: Concepts.xml:268
+#, no-c-format
+msgid "By default, JavaBeans are bound to the event context."
+msgstr "在缺省情况下,JavaBean 绑定在 event 上下文里。"
+
+#. Tag: para
+#: Concepts.xml:271
+#, no-c-format
+msgid ""
+"Concurrent requests to session-scoped JavaBeans are always serialized by "
+"Seam."
+msgstr "Seam 总是串行化对作用域为 session 的 JavaBean 的并行请求。"
+
+#. Tag: title
+#: Concepts.xml:274
+#, no-c-format
+msgid "Message-driven beans"
+msgstr "Message-driven beans"
+
+#. Tag: para
+#: Concepts.xml:275
+#, no-c-format
+msgid ""
+"Message-driven beans may function as a seam component. However, message-"
+"driven beans are called quite differently to other Seam components - instead "
+"of invoking them via the context variable, they listen for messages sent to "
+"a JMS queue or topic."
+msgstr ""
+"Message-driven bean 可以充当 Seam 组件。然而,对 message-"
+"driven bean 的调用和其他 Seam 组件完全不同 - 它们侦听发送到 JMS 队列或主题的消息,而不是通过上下文变量调用。"
+
+#. Tag: para
+#: Concepts.xml:278
+#, no-c-format
+msgid ""
+"Message-driven beans may not be bound to a Seam context. Nor do they have "
+"access to the session or conversation state of their \"caller\". However, "
+"they do support bijection and some other Seam functionality."
+msgstr "Message-driven bean 不能绑定到 Seam 上下文。它们也不能访问“调用者”的 session 或 conversation 状态。然而,它们支持双向注入和某些其他的 Seam 功能。"
+
+#. Tag: title
+#: Concepts.xml:281
+#, no-c-format
+msgid "Interception"
+msgstr "拦截"
+
+#. Tag: para
+#: Concepts.xml:282
+#, no-c-format
+msgid ""
+"In order to perform its magic (bijection, context demarcation, validation, "
+"etc), Seam must intercept component invocations. For JavaBeans, Seam is in "
+"full control of instantiation of the component, and no special configuration "
+"is needed. For entity beans, interception is not required since bijection "
+"and context demarcation are not defined. For session beans, we must register "
+"an EJB interceptor for the session bean component. We could use an "
+"annotation, as follows:"
+msgstr "为了实现其功能(双向注入、上下文限界、检验等),Seam 必须拦截对组件的调用。对于 JavaBean 而言,Seam 完全控制对组件的初始化,且不需要特殊的配置。而对于 entity bean,既然没有双向注入和上下文限界,拦截也不需要。但是对于 session bean,我们必须为 session bean 组件注册 EJB 拦截器。我们可以使用如下的注解:"
+
+#. Tag: programlisting
+#: Concepts.xml:285
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:286
+#, no-c-format
+msgid ""
+"But a much better way is to define the interceptor in <literal>ejb-jar.xml</"
+"literal>."
+msgstr ""
+"但更好的方法是在 <literal>ejb-jar.xml</"
+"literal> 里定义拦截器。"
+
+#. Tag: programlisting
+#: Concepts.xml:289
+#, no-c-format
+msgid ""
+"&lt;interceptors&gt;\n"
+"   &lt;interceptor&gt;\n"
+"      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"   &lt;/interceptor&gt;\n"
+"&lt;/interceptors&gt;\n"
+"   \n"
+"&lt;assembly-descriptor&gt;\n"
+"   &lt;interceptor-binding&gt;\n"
+"      &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"   &lt;/interceptor-binding&gt;\n"
+"&lt;/assembly-descriptor&gt;"
+msgstr ""
+"&lt;interceptors&gt;\n"
+"   &lt;interceptor&gt;\n"
+"      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"   &lt;/interceptor&gt;\n"
+"&lt;/interceptors&gt;\n"
+"   \n"
+"&lt;assembly-descriptor&gt;\n"
+"   &lt;interceptor-binding&gt;\n"
+"      &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"   &lt;/interceptor-binding&gt;\n"
+"&lt;/assembly-descriptor&gt;"
+
+#. Tag: title
+#: Concepts.xml:290
+#, no-c-format
+msgid "Component names"
+msgstr "组件名称"
+
+#. Tag: para
+#: Concepts.xml:291
+#, no-c-format
+msgid ""
+"All seam components need a name. We can assign a name to a component using "
+"the <literal>@Name</literal> annotation:"
+msgstr "所有的 Seam 组件都需要一个名字。我们可以用 <literal>@Name</literal> 注解为组件分配名字:"
+
+#. Tag: programlisting
+#: Concepts.xml:294
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:295
+#, no-c-format
+msgid ""
+"This name is the <emphasis>seam component name</emphasis> and is not related "
+"to any other name defined by the EJB specification. However, seam component "
+"names work just like JSF managed bean names and you can think of the two "
+"concepts as identical."
+msgstr "这个名字是 <emphasis>Seam 组件名称</emphasis>,它不和任何 EJB 规格定义的其他名称相关。然而,Seam 组件名称就和 JSF 管理的 bean 的名称一样,你可以认为这两个概念是相同的。"
+
+#. Tag: para
+#: Concepts.xml:298
+#, no-c-format
+msgid ""
+"<literal>@Name</literal> is not the only way to define a component name, but "
+"we always need to specify the name <emphasis>somewhere</emphasis>. If we "
+"don&#39;t, then none of the other Seam annotations will function."
+msgstr "<literal>@Name</literal> 不是定义组件名称的唯一方法,但我们总需要在<emphasis>某个地方</emphasis>指定其名字。如果没有这么做,其他 Seam 注解都不能正常使用。"
+
+#. Tag: para
+#: Concepts.xml:301
+#, no-c-format
+msgid ""
+"Just like in JSF, a seam component instance is usually bound to a context "
+"variable with the same name as the component name. So, for example, we would "
+"access the <literal>LoginAction</literal> using <literal>Contexts."
+"getStatelessContext().get(\"loginAction\")</literal>. In particular, "
+"whenever Seam itself instantiates a component, it binds the new instance to "
+"a variable with the component name. However, again like JSF, it is possible "
+"for the application to bind a component to some other context variable by "
+"programmatic API call. This is only useful if a particular component serves "
+"more than one role in the system. For example, the currently logged in "
+"<literal>User</literal> might be bound to the <literal>currentUser</literal> "
+"session context variable, while a <literal>User</literal> that is the "
+"subject of some administration functionality might be bound to the "
+"<literal>user</literal> conversation context variable."
+msgstr ""
+"和 JSF 里一样,Seam 组件实例通常用和组件名相同的名字绑定在上下文变量里。例如,我们要用 <literal>Contexts."
+"getStatelessContext().get(\"loginAction\")</literal> 访问 <literal>LoginAction</literal>。特别是,每当 Seam 自己初始化一个组件时,它会用组件名把新的实例绑定到一个变量里。然而,正如 JSF 一样,应用程序有可能通过程序里的 API 调用把组件绑定到某个其他的上下文变量里。这仅在特定组件在相同里充当多个角色时才有用。例如,当前登录的 <literal>User</literal> 可以被绑定到 <literal>currentUser</literal> 的 session 上下文变量里,而某些主题为 <literal>User</literal> 的管理功能则可以绑定在 <literal>user</literal> conversation 上下文变量里。"
+
+#. Tag: para
+#: Concepts.xml:304
+#, no-c-format
+msgid ""
+"For very large applications, and for built-in seam components, qualified "
+"names are often used."
+msgstr "对于超大型的应用程序以及内置的 Seam 组件,我们经常使用全限定名。"
+
+#. Tag: programlisting
+#: Concepts.xml:307
+#, no-c-format
+msgid ""
+"@Name(\"com.jboss.myapp.loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"com.jboss.myapp.loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:308
+#, no-c-format
+msgid ""
+"We may use the qualified component name both in Java code and in JSF&#39;s "
+"expression language:"
+msgstr "我们可以在 Java 代码和 JSF EL 里都使用限定组件名:"
+
+#. Tag: programlisting
+#: Concepts.xml:311
+#, no-c-format
+msgid ""
+"&lt;h:commandButton type=\"submit\" value=\"Login\"\n"
+"                 action=\"#{com.jboss.myapp.loginAction.login}\"/&gt;"
+msgstr ""
+"&lt;h:commandButton type=\"submit\" value=\"Login\"\n"
+"                 action=\"#{com.jboss.myapp.loginAction.login}\"/&gt;"
+
+#. Tag: para
+#: Concepts.xml:312
+#, no-c-format
+msgid ""
+"Since this is noisy, Seam also provides a means of aliasing a qualified name "
+"to a simple name. Add a line like this to the <literal>components.xml</"
+"literal> file:"
+msgstr ""
+"Seam 也使用别名来把限定名转换为简单名称。在 <literal>components.xml</"
+"literal> 文件里添加如下的一行:"
+
+#. Tag: programlisting
+#: Concepts.xml:315
+#, no-c-format
+msgid ""
+"&lt;factory name=\"loginAction\" scope=\"STATELESS\" value=\"#{com.jboss."
+"myapp.loginAction}\"/&gt;"
+msgstr ""
+"&lt;factory name=\"loginAction\" scope=\"STATELESS\" value=\"#{com.jboss."
+"myapp.loginAction}\"/&gt;"
+
+#. Tag: para
+#: Concepts.xml:316
+#, no-c-format
+msgid ""
+"All of the built-in Seam components have qualified names, but most of them "
+"are aliased to a simple name by the <literal>components.xml</literal> file "
+"included in the Seam jar."
+msgstr "所有的内置 Seam 自己都有其限定名称,但大多数都通过 Seam jar 里包含的 <literal>components.xml</literal> 文件指定了简单的别名。"
+
+#. Tag: title
+#: Concepts.xml:319
+#, no-c-format
+msgid "Defining the component scope"
+msgstr "定义组件的作用域"
+
+#. Tag: para
+#: Concepts.xml:320
+#, no-c-format
+msgid ""
+"We can override the default scope (context) of a component using the "
+"<literal>@Scope</literal> annotation. This lets us define what context a "
+"component instance is bound to, when it is instantiated by Seam."
+msgstr "我们可以用 <literal>@Scope</literal> 注解覆盖组件的缺省作用域(context)。这让我们定义了 Seam 初始化组件实例时,其绑定的上下文。"
+
+#. Tag: programlisting
+#: Concepts.xml:323
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(SESSION)\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(SESSION)\n"
+"public class User { \n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:324
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.ScopeType</literal> defines an enumeration of "
+"possible scopes."
+msgstr "<literal>org.jboss.seam.ScopeType</literal> 定义了可能的作用域的枚举类型。"
+
+#. Tag: title
+#: Concepts.xml:327
+#, no-c-format
+msgid "Components with multiple roles"
+msgstr "具有多重角色的组件"
+
+#. Tag: para
+#: Concepts.xml:328
+#, no-c-format
+msgid ""
+"Some Seam component classes can fulfill more than one role in the system. "
+"For example, we often have a <literal>User</literal> class which is usually "
+"used as a session-scoped component representing the current user but is used "
+"in user administration screens as a conversation-scoped component. The "
+"<literal>@Role</literal> annotation lets us define an additional named role "
+"for a component, with a different scope&mdash;it lets us bind the same "
+"component class to different context variables. (Any Seam component "
+"<emphasis>instance</emphasis> may be bound to multiple context variables, "
+"but this lets us do it at the class level, and take advantage of auto-"
+"instantiation.)"
+msgstr "一些 Seam 组件类可以在系统里担当多个角色。例如,我们经常使用一个 <literal>User</literal> 类,它常被用作作用域为 session 的、代表当前用户的组件,但它在用户管理屏幕里却作为作用域为 conversation 的组件使用。<literal>@Role</literal> 注解让我们为组件定义具有不同作用域的额外角色&mdash;它让我们把相同的组件类绑定到不同的上下文变量上。(虽然任何 Seam 组件<emphasis>实例</emphasis>都可以绑定到多个上下文变量上,但这让我们在类这一级别来进行绑定,并利用了自动实例化。)"
+
+#. Tag: programlisting
+#: Concepts.xml:331
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(CONVERSATION)\n"
+"@Role(name=\"currentUser\", scope=SESSION)\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(CONVERSATION)\n"
+"@Role(name=\"currentUser\", scope=SESSION)\n"
+"public class User { \n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:332
+#, no-c-format
+msgid ""
+"The <literal>@Roles</literal> annotation lets us specify as many additional "
+"roles as we like."
+msgstr "<literal>@Roles</literal> 注解让我们指定任意的多个角色。"
+
+#. Tag: programlisting
+#: Concepts.xml:335
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(CONVERSATION)\n"
+"@Roles({@Role(name=\"currentUser\", scope=SESSION)\n"
+"        @Role(name=\"tempUser\", scope=EVENT)})\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(CONVERSATION)\n"
+"@Roles({@Role(name=\"currentUser\", scope=SESSION)\n"
+"        @Role(name=\"tempUser\", scope=EVENT)})\n"
+"public class User { \n"
+"    ... \n"
+"}"
+
+#. Tag: title
+#: Concepts.xml:336
+#, no-c-format
+msgid "Built-in components"
+msgstr "内置组件"
+
+#. Tag: para
+#: Concepts.xml:337
+#, no-c-format
+msgid ""
+"Like many good frameworks, Seam eats its own dogfood and is implemented "
+"mostly as a set of built-in Seam interceptors (see later) and Seam "
+"components. This makes it easy for applications to interact with built-in "
+"components at runtime or even customize the basic functionality of Seam by "
+"replacing the built-in components with custom implementations. The built-in "
+"components are defined in the Seam namespace <literal>org.jboss.seam.core</"
+"literal> and the Java package of the same name."
+msgstr ""
+"象许多好的框架一样,Seam 大部分是作为一组内置拦截器(参看以后的内容)和组件来实现的。这使应用程序在运行时和内置组件交互甚至通过置换其内置组件来自定义基本功能变得容易。内置组件在 Seam 的命名空间 <literal>org.jboss.seam.core</"
+"literal> 和同名的 Java 软件包里进行定义。"
+
+#. Tag: para
+#: Concepts.xml:340
+#, no-c-format
+msgid ""
+"The built-in components may be injected, just like any Seam components, but "
+"they also provide convenient static <literal>instance()</literal> methods:"
+msgstr "就象任何 Seam 组件一样,内置组件也可以被注入,但它们也通过方便的静态 <literal>instance()</literal> 方法:"
+
+#. Tag: programlisting
+#: Concepts.xml:343
+#, no-c-format
+msgid "FacesMessages.instance().add(\"Welcome back, #{user.name}!\");"
+msgstr "FacesMessages.instance().add(\"Welcome back, #{user.name}!\");"
+
+#. Tag: para
+#: Concepts.xml:344
+#, no-c-format
+msgid ""
+"Seam was designed to integrate tightly in a Java EE 5 environment. However, "
+"we understand that there are many projects which are not running in a full "
+"EE environment. We also realize the critical importance of easy unit and "
+"integration testing using frameworks such as TestNG and JUnit. So, we&#39;ve "
+"made it easy to run Seam in Java SE environments by allowing you to boostrap "
+"certain critical infrastructure normally only found in EE environments by "
+"installing built-in Seam components."
+msgstr "Seam 被设计为和 Java EE 5 环境进行紧密集成。然而,我们理解许多项目并没有运行在完全的 Java EE 环境里。我们也知道使用 TestNG 和 JUnit 等框架进行容易的单元和集成测试的重要性。所以,我们允许你通过安装内置 Seam 组件来引导某些通常只存在于 Java EE 环境里的重要的基础结构,使得在 Java SE 环境里运行 Seam 变得容易。"
+
+#. Tag: para
+#: Concepts.xml:347
+#, no-c-format
+msgid ""
+"For example, you can run your EJB3 components in Tomcat or an integration "
+"test suite just by installing the built-in component <literal>org.jboss.seam."
+"core.ejb</literal>, which automatically bootstraps the JBoss Embeddable EJB3 "
+"container and deploys your EJB components."
+msgstr ""
+"例如,要在 Tomcat 或某个集成测试套件里运行你的 EJB3 组件,你只需要安装内置的 <literal>org.jboss.seam."
+"core.ejb</literal> 组件,它会自动地引导 JBoss 的可嵌入 EJB3 容器并部署你的 EJB 组件。"
+
+#. Tag: para
+#: Concepts.xml:350
+#, no-c-format
+msgid ""
+"Or, if you&#39;re not quite ready for the Brave New World of EJB 3.0, you "
+"can write a Seam application that uses only JavaBean components, together "
+"with Hibernate3 for persistence, by installing a built-in component that "
+"manages a Hibernate <literal>SessionFactory</literal>. When using Hibernate "
+"outside of a J2EE environment, you will also probably need a JTA transaction "
+"manager and JNDI server, which are available via the built-in component "
+"<literal>org.jboss.seam.core.microcontainer</literal>. This lets you use the "
+"bulletproof JTA/JCA pooling datasource from JBoss application server in an "
+"SE environment like Tomcat!"
+msgstr "或者,如果你还准备好使用 EJB 3.0,你可以编写一个只使用 JavaBean 组件的 Seam 应用程序,并通过安装管理 Hibernate <literal>SessionFactory</literal> 的内置组件来用 Hibernate3 实现持久化。当在 J2EE 环境外使用 Hibernate 时,你也可能需要一个 JTA 事务管理者和 JNDI 服务器,它们位于内置组件 <literal>org.jboss.seam.core.microcontainer</literal> 里。这可以让你在 Java SE 环境如 Tomcat 里使用 JBoss 应用服务器的 JTA/JCA 数据源!"
+
+#. Tag: title
+#: Concepts.xml:353
+#, no-c-format
+msgid "Bijection"
+msgstr "双向注入"
+
+#. Tag: para
+#: Concepts.xml:354
+#, no-c-format
+msgid ""
+"<emphasis>Dependency injection</emphasis> or <emphasis>inversion of control</"
+"emphasis> is by now a familiar concept to most Java developers. Dependency "
+"injection allows a component to obtain a reference to another component by "
+"having the container \"inject\" the other component to a setter method or "
+"instance variable. In all dependency injection implementations that we have "
+"seen, injection occurs when the component is constructed, and the reference "
+"does not subsequently change for the lifetime of the component instance. For "
+"stateless components, this is reasonable. From the point of view of a "
+"client, all instances of a particular stateless component are "
+"interchangeable. On the other hand, Seam emphasizes the use of stateful "
+"components. So traditional dependency injection is no longer a very useful "
+"construct. Seam introduces the notion of <emphasis>bijection</emphasis> as a "
+"generalization of injection. In contrast to injection, bijection is:"
+msgstr "对于大多数 Java 开发人员来说,<emphasis>依赖性注入(Dependency injection)</emphasis>或<emphasis>反向控制(inversion of control)</emphasis> 现在是一个熟悉的概念了。依赖性注入允许组件通过让容器把其他组件“注入”到 setter 方法或实例变量来获取对这个组件的引用。在我们看到的有依赖性注入的实现里,注入都发生在组件被构建的时候,而引用在组件实例的生命周期里都不会改变。对于 stateless 组件,这是合理的。从客户的角度来看,所以特定 stateless 组件的实例都是可互换的。另一方面,Seam 强调对 stateful 组件的使用。所以传统的依赖性注入不再是一个非常有用的方法了。Seam 引入了作为注入泛化的<emphasis>双向注入(bijection)</emphasis>。相比注入,双向注入是:"
+
+#. Tag: para
+#: Concepts.xml:359
+#, no-c-format
+msgid ""
+"<emphasis>contextual</emphasis> - bijection is used to assemble stateful "
+"components from various different contexts (a component from a \"wider\" "
+"context may even have a reference to a component from a \"narrower\" context)"
+msgstr "<emphasis>contextual</emphasis> - 双向注入用来从不同的上下文(作用域更广的上下文里的组件甚至可以有对作用域更窄的上下文里的组件的引用)里组装 stateful 组件。"
+
+#. Tag: para
+#: Concepts.xml:364
+#, no-c-format
+msgid ""
+"<emphasis>bidirectional</emphasis> - values are injected from context "
+"variables into attributes of the component being invoked, and also "
+"<emphasis>outjected</emphasis> from the component attributes back out to the "
+"context, allowing the component being invoked to manipulate the values of "
+"contextual variables simply by setting its own instance variables"
+msgstr "<emphasis>bidirectional</emphasis> - 值从上下文变量里注入到被调用的组件的属性里,且也从组件属性<emphasis>注出</emphasis>到上下文里,允许被调用的组件通过设置自己的实例变量简单地操作上下文变量的值。"
+
+#. Tag: para
+#: Concepts.xml:369
+#, no-c-format
+msgid ""
+"<emphasis>dynamic</emphasis> - since the value of contextual variables "
+"changes over time, and since Seam components are stateful, bijection takes "
+"place every time a component is invoked"
+msgstr "<emphasis>dynamic</emphasis> - 既然上下文变量的值不时地改变,且 Seam 组件是有状态的,每次调用组件时双向注入都会发生。"
+
+#. Tag: para
+#: Concepts.xml:374
+#, no-c-format
+msgid ""
+"In essence, bijection lets you alias a context variable to a component "
+"instance variable, by specifying that the value of the instance variable is "
+"injected, outjected, or both. Of course, we use annotations to enable "
+"bijection."
+msgstr "本质上,双向注入通过指定注入、注出、或两者皆有的实例变量的值,让组件实例变量以上下文变量为别名。当然,我们使用注解来启用双向注入。"
+
+#. Tag: para
+#: Concepts.xml:377
+#, no-c-format
+msgid ""
+"The <literal>@In</literal> annotation specifies that a value should be "
+"injected, either into an instance variable:"
+msgstr "<literal>@In</literal> 注解指定值应该被注入到实例变量:"
+
+#. Tag: programlisting
+#: Concepts.xml:380
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In User user;\n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:381
+#, no-c-format
+msgid "or into a setter method:"
+msgstr "或 setter 方法:"
+
+#. Tag: programlisting
+#: Concepts.xml:384
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @In\n"
+"    public void setUser(User user) {\n"
+"        this.user=user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @In\n"
+"    public void setUser(User user) {\n"
+"        this.user=user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:385
+#, no-c-format
+msgid ""
+"By default, Seam will do a priority search of all contexts, using the name "
+"of the property or instance variable that is being injected. You may wish to "
+"specify the context variable name explicitly, using, for example, "
+"<literal>@In(\"currentUser\")</literal>."
+msgstr "在缺省情况下,Seam 将使用被注入的属性或实例变量的名字对所有上下文进行优先级搜索。你可能希望显性地指定上下文变量的名字,如:<literal>@In(\"currentUser\")</literal>。"
+
+#. Tag: para
+#: Concepts.xml:388
+#, no-c-format
+msgid ""
+"If you want Seam to create an instance of the component when there is no "
+"existing component instance bound to the named context variable, you should "
+"specify <literal>@In(create=true)</literal>. If the value is optional (it "
+"can be null), specify <literal>@In(required=false)</literal>."
+msgstr "当没有组件实例绑定到上下文变量时,如果你想要 Seam 创建一个组件实例,你应该指定 <literal>@In(create=true)</literal>。如果这个值是可选的(它可以为空),指定 <literal>@In(required=false)</literal>。"
+
+#. Tag: para
+#: Concepts.xml:391
+#, no-c-format
+msgid ""
+"For some components, it can be repetitive to have to specify <literal>@In"
+"(create=true)</literal> everywhere they are used. In such cases, you can "
+"annotate the component <literal>@AutoCreate</literal>, and then it will "
+"always be created, whenever needed, even without the explicit use of "
+"<literal>create=true</literal>."
+msgstr "对于一些组件,你得重复地在每个使用它们的地方指定 <literal>@In(create=true)</literal>。此时,你可以用 <literal>@AutoCreate</literal> 注解该组件,它将在任何需要的时候被创建,甚至不需要显性地使用 <literal>create=true</literal>。"
+
+#. Tag: para
+#: Concepts.xml:394
+#, no-c-format
+msgid "You can even inject the value of an expression:"
+msgstr "你甚至可以注入表达式的值:"
+
+#. Tag: programlisting
+#: Concepts.xml:397
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In(\"#{user.username}\") String username;\n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In(\"#{user.username}\") String username;\n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:398
+#, no-c-format
+msgid ""
+"(There is much more information about component lifecycle and injection in "
+"the next chapter.)"
+msgstr "(下一章里有关于组件生命周期和注入的更多内容。)"
+
+#. Tag: para
+#: Concepts.xml:401
+#, no-c-format
+msgid ""
+"The <literal>@Out</literal> annotation specifies that an attribute should be "
+"outjected, either from an instance variable:"
+msgstr "<literal>@Out</literal> 注解指定属性应该从实例变量被注出:"
+
+#. Tag: programlisting
+#: Concepts.xml:404
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @Out User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @Out User user;\n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:405
+#, no-c-format
+msgid "or from a getter method:"
+msgstr "或从 getter 方法注出:"
+
+#. Tag: programlisting
+#: Concepts.xml:408
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @Out\n"
+"    public User getUser() {\n"
+"        return user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @Out\n"
+"    public User getUser() {\n"
+"        return user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:409
+#, no-c-format
+msgid "An attribute may be both injected and outjected:"
+msgstr "属性可以被同时注入和注出:"
+
+#. Tag: programlisting
+#: Concepts.xml:412
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In @Out User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In @Out User user;\n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:413
+#, no-c-format
+msgid "<para>or:</para>"
+msgstr "<para>或者:</para>"
+
+#. Tag: programlisting
+#: Concepts.xml:416
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @In\n"
+"    public void setUser(User user) {\n"
+"        this.user=user;\n"
+"    }\n"
+"    \n"
+"    @Out\n"
+"    public User getUser() {\n"
+"        return user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @In\n"
+"    public void setUser(User user) {\n"
+"        this.user=user;\n"
+"    }\n"
+"    \n"
+"    @Out\n"
+"    public User getUser() {\n"
+"        return user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+
+#. Tag: title
+#: Concepts.xml:417
+#, no-c-format
+msgid "Lifecycle methods"
+msgstr "生命周期方法"
+
+#. Tag: para
+#: Concepts.xml:418
+#, no-c-format
+msgid ""
+"Session bean and entity bean Seam components support all the usual EJB 3.0 "
+"lifecycle callback (<literal>@PostConstruct</literal>, <literal>@PreDestroy</"
+"literal>, etc). Seam extends all of these callbacks except "
+"<literal>@PreDestroy</literal> to JavaBean components. But Seam also defines "
+"its own component lifecycle callbacks."
+msgstr "Seam 的 Session bean 和 entity bean 组件支持所有的常用 EJB 3.0 生命周期回调方法(<literal>@PostConstruct</literal>、<literal>@PreDestroy</literal> 等)。Seam 扩展了除了 JavaBean 组件的 <literal>@PreDestroy</literal> 之外的所有这些回调方法。但 Seam 也定义了它自己的组件生命周期回调方法。"
+
+#. Tag: para
+#: Concepts.xml:421
+#, no-c-format
+msgid ""
+"The <literal>@Create</literal> method is called every time Seam instantiates "
+"a component. Unlike the <literal>@PostConstruct</literal> method, this "
+"method is called after the component is fully constructed by the EJB "
+"container, and has access to all the usual Seam functionality (bijection, "
+"etc). Components may define only one <literal>@Create</literal> method."
+msgstr "Seam 每次实例化一个组件时都会调用 <literal>@Create</literal> 方法。不象<literal>@PostConstruct</literal> 方法,这个方法在 EJB 容器安全构建了组件后才被调用,且它可以访问所有普通的 Seam 功能(如双向注入)。组件可以只定义一个 <literal>@Create</literal> 方法。"
+
+#. Tag: para
+#: Concepts.xml:424
+#, no-c-format
+msgid ""
+"The <literal>@Destroy</literal> method is called when the context that the "
+"Seam component is bound to ends. Components may define only one "
+"<literal>@Destroy</literal> method. Stateful session bean components "
+"<emphasis>must</emphasis> define a method annotated <literal>@Destroy "
+"@Remove</literal>."
+msgstr "当 Seam 组件绑定的上下文结束时会调用 <literal>@Destroy</literal> 方法。组件可以只定义一个 <literal>@Destroy</literal> 方法。Stateful session bean 组件<emphasis>必须</emphasis>定义一个用 <literal>@Destroy @Remove</literal> 注解的方法。"
+
+#. Tag: para
+#: Concepts.xml:427
+#, no-c-format
+msgid ""
+"Finally, a related annotation is the <literal>@Startup</literal> annotation, "
+"which may be applied to any application or session scoped component. The "
+"<literal>@Startup</literal> annotation tells Seam to instantiate the "
+"component immediately, when the context begins, instead of waiting until it "
+"is first referenced by a client. It is possible to control the order of "
+"instantiation of startup components by specifying <literal>@Startup(depends="
+"{....})</literal>."
+msgstr ""
+"最后,<literal>@Startup</literal> 是一个相关的注解,它可以应用于任何作用域为 application 或 session 的组件。<literal>@Startup</literal> 组件告诉 Seam 在上下文开始时立即实例化组件,而不是等到第一次被客户调用的时候。通过指定 <literal>@Startup(depends="
+"{....})</literal>,你可以可控制实例化启动组件的顺序。"
+
+#. Tag: title
+#: Concepts.xml:430
+#, no-c-format
+msgid "Conditional installation"
+msgstr "有条件的安装"
+
+#. Tag: para
+#: Concepts.xml:431
+#, no-c-format
+msgid ""
+"The <literal>@Install</literal> annotation lets you control conditional "
+"installation of components that are required in some deployment scenarios "
+"and not in others. This is useful if:"
+msgstr "<literal>@Install</literal> 注解可以让你控制根据不同的条件安装组件。如:"
+
+#. Tag: para
+#: Concepts.xml:436
+#, no-c-format
+msgid "You want to mock out some infrastructural component in tests."
+msgstr "你想在测试里模拟某些基础结构性的组件。"
+
+#. Tag: para
+#: Concepts.xml:441
+#, no-c-format
+msgid ""
+"You want change the implementation of a component in certain deployment "
+"scenarios."
+msgstr "你想改变组件在某些部署情景里的实施。"
+
+#. Tag: para
+#: Concepts.xml:446
+#, no-c-format
+msgid ""
+"You want to install some components only if their dependencies are available "
+"(useful for framework authors)."
+msgstr "你想只有在某些组件的依赖文件可用时才安装这些组件。"
+
+#. Tag: para
+#: Concepts.xml:451
+#, no-c-format
+msgid ""
+"<literal>@Install</literal> works by letting you specify "
+"<emphasis>precedence</emphasis> and <emphasis>dependencies</emphasis>."
+msgstr "<literal>@Install</literal> 可以让你指定 <emphasis>precedence</emphasis> 和 <emphasis>dependencies</emphasis>。"
+
+#. Tag: para
+#: Concepts.xml:454
+#, no-c-format
+msgid ""
+"The precedence of a component is a number that Seam uses to decide which "
+"component to install when there are multiple classes with the same component "
+"name in the classpath. Seam will choose the component with the higher "
+"precendence. There are some predefined precedence values (in ascending "
+"order):"
+msgstr "组件的优先级(precedence)是一个数字,当 Classpath 里的多个类有相同的组件名时,Seam 用它来决定先安装哪个组件。Seam 将选择具有较高优先次序的组件。下面是一些预定义的优先级的值(升序排列):"
+
+#. Tag: para
+#: Concepts.xml:459
+#, no-c-format
+msgid ""
+"<literal>BUILT_IN</literal> &mdash; the lowest precedece components are the "
+"components built in to Seam."
+msgstr "<literal>BUILT_IN</literal> &mdash; 内置的 Seam 组件具有最低的优先级。"
+
+#. Tag: para
+#: Concepts.xml:464
+#, no-c-format
+msgid ""
+"<literal>FRAMEWORK</literal> &mdash; components defined by third-party "
+"frameworks may override built-in components, but are overridden by "
+"application components."
+msgstr "<literal>FRAMEWORK</literal> &mdash; 第三方框架定义的组件可以覆盖内置组件,但也可以被应用程序组件所覆盖。"
+
+#. Tag: para
+#: Concepts.xml:469
+#, no-c-format
+msgid ""
+"<literal>APPLICATION</literal> &mdash; the default precedence. This is "
+"appropriate for most application components."
+msgstr "<literal>APPLICATION</literal> &mdash; 缺省的优先级。它适用于大多数的应用程序组件。"
+
+#. Tag: para
+#: Concepts.xml:474
+#, no-c-format
+msgid ""
+"<literal>DEPLOYMENT</literal> &mdash; for application components which are "
+"deployment-specific."
+msgstr "<literal>DEPLOYMENT</literal> &mdash; 用于和部署相关的应用程序组件。"
+
+#. Tag: para
+#: Concepts.xml:479
+#, no-c-format
+msgid "<literal>MOCK</literal> &mdash; for mock objects used in testing."
+msgstr "<literal>MOCK</literal> &mdash; 用于在测试里使用的模拟对象。"
+
+#. Tag: para
+#: Concepts.xml:484
+#, no-c-format
+msgid ""
+"Suppose we have a component named <literal>messageSender</literal> that "
+"talks to a JMS queue."
+msgstr "假设我们有一个名为 <literal>messageSender</literal> 的组件,它和一个 JMS 队列交互。"
+
+#. Tag: programlisting
+#: Concepts.xml:487
+#, no-c-format
+msgid ""
+"@Name(\"messageSender\") \n"
+"public class MessageSender {\n"
+"    public void sendMessage() {\n"
+"        //do something with JMS\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"messageSender\") \n"
+"public class MessageSender {\n"
+"    public void sendMessage() {\n"
+"        //do something with JMS\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:488
+#, no-c-format
+msgid ""
+"In our unit tests, we don&#39;t have a JMS queue available, so we would like "
+"to stub out this method. We&#39;ll create a <emphasis>mock</emphasis> "
+"component that exists in the classpath when unit tests are running, but is "
+"never deployed with the application:"
+msgstr "在我们的单元测试里,我们没有可用的 JMS 队列,所以我们想模拟这个方法。我们将创建一个运行测试时存在于 classpath 里的 <emphasis>mock</emphasis> 组件,但它不会和应用程序一起部署:"
+
+#. Tag: programlisting
+#: Concepts.xml:491
+#, no-c-format
+msgid ""
+"@Name(\"messageSender\") \n"
+"@Install(precedence=MOCK)\n"
+"public class MockMessageSender extends MessageSender {\n"
+"    public void sendMessage() {\n"
+"        //do nothing!\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"messageSender\") \n"
+"@Install(precedence=MOCK)\n"
+"public class MockMessageSender extends MessageSender {\n"
+"    public void sendMessage() {\n"
+"        //do nothing!\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:492
+#, no-c-format
+msgid ""
+"The <literal>precedence</literal> helps Seam decide which version to use "
+"when it finds both components in the classpath."
+msgstr "当在 classpath 里找到这两个组件时,<literal>precedence</literal> 帮助 Seam 决定使用哪个版本。"
+
+#. Tag: para
+#: Concepts.xml:495
+#, no-c-format
+msgid ""
+"This is nice if we are able to control exactly which classes are in the "
+"classpath. But if I&#39;m writing a reusable framework with many "
+"dependecies, I don&#39;t want to have to break that framework across many "
+"jars. I want to be able to decide which components to install depending upon "
+"what other components are installed, and upon what classes are available in "
+"the classpath. The <literal>@Install</literal> annotation also controls this "
+"functionality. Seam uses this mechanism internally to enable conditional "
+"installation of many of the built-in components. However, you probably "
+"won&#39;t need to use it in your application."
+msgstr "如果我们能够确切地控制 classpath 里的类,那当然不错。但如果我在编写一个有许多依赖文件的可重用框架时,我不想因为有许多 jar 文件而违反这个框架。我希望能够根据其他安装的组件和 classpath 里可用的类来决定安装哪个组件。<literal>@Install</literal> 注解也控制这个功能。Seam 在内部使用这个机制来启用有条件的内置组件安装。然而,你可能不需要在你的应用程序里使用这个注解。"
+
+#. Tag: title
+#: Concepts.xml:498
+#, no-c-format
+msgid "Logging"
+msgstr "日志"
+
+#. Tag: para
+#: Concepts.xml:499
+#, no-c-format
+msgid "Who is not totally fed up with seeing noisy code like this?"
+msgstr "看到如下的代码谁会不厌倦?"
+
+#. Tag: programlisting
+#: Concepts.xml:502
+#, no-c-format
+msgid ""
+"private static final Log log = LogFactory.getLog(CreateOrderAction.class);\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    if ( log.isDebugEnabled() ) {\n"
+"        log.debug(\"Creating new order for user: \" + user.username() + \n"
+"            \" product: \" + product.name() \n"
+"            + \" quantity: \" + quantity);\n"
+"    }\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+"private static final Log log = LogFactory.getLog(CreateOrderAction.class);\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    if ( log.isDebugEnabled() ) {\n"
+"        log.debug(\"Creating new order for user: \" + user.username() + \n"
+"            \" product: \" + product.name() \n"
+"            + \" quantity: \" + quantity);\n"
+"    }\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:503
+#, no-c-format
+msgid ""
+"It is difficult to imagine how the code for a simple log message could "
+"possibly be more verbose. There is more lines of code tied up in logging "
+"than in the actual business logic! I remain totally astonished that the Java "
+"community has not come up with anything better in 10 years."
+msgstr "很难想象完成简单日志消息的代码会有这么冗余。用在日志的代码比在实际的商业逻辑实现里还要多!我真的惊讶于十年来 Java 社区居然没有任何更好的方案。"
+
+#. Tag: para
+#: Concepts.xml:506
+#, no-c-format
+msgid "Seam provides a logging API that simplifies this code significantly:"
+msgstr "Seam 提供了一个极度简化这些代码的日志 API:"
+
+#. Tag: programlisting
+#: Concepts.xml:509
+#, no-c-format
+msgid ""
+"@Logger private Log log;\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    log.debug(\"Creating new order for user: #0 product: #1 quantity: #2\", "
+"user.username(), \n"
+"      product.name(), quantity);\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+"@Logger private Log log;\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    log.debug(\"Creating new order for user: #0 product: #1 quantity: #2\", "
+"user.username(), \n"
+"      product.name(), quantity);\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:510
+#, no-c-format
+msgid ""
+"It doesn&#39;t matter if you declare the <literal>log</literal> variable "
+"static or not&mdash;it will work either way, except for entity bean "
+"components which require the <literal>log</literal> variable to be static."
+msgstr "你是否把 <literal>log</literal> 变量声明为静态并不要紧&mdash;它都可以工作,除了 entity bean 组件需要静态的 <literal>log</literal> 变量。"
+
+#. Tag: para
+#: Concepts.xml:513
+#, no-c-format
+msgid ""
+"Note that we don&#39;t need the noisy <literal>if ( log.isDebugEnabled() )</"
+"literal> guard, since string concatenation happens <emphasis>inside</"
+"emphasis> the <literal>debug()</literal> method. Note also that we don&#39;t "
+"usually need to specify the log category explicitly, since Seam knows what "
+"component it is injecting the <literal>Log</literal> into."
+msgstr "注意,既然字符串的连结发生在 <literal>debug()</literal> 方法的内部,我们不需要讨厌的 <literal>if ( log.isDebugEnabled() )</literal> 语句。也请注意,我们通常不需要显性地指定日志的列别,因为 Seam 知道它把 <literal>Log</literal> 注入到了哪个组件。"
+
+#. Tag: para
+#: Concepts.xml:516
+#, no-c-format
+msgid ""
+"If <literal>User</literal> and <literal>Product</literal> are Seam "
+"components available in the current contexts, it gets even better:"
+msgstr "如果 <literal>User</literal> 和 <literal>Product</literal> 都是当前上下文里的可用 Seam 组件,情况甚至会更好:"
+
+#. Tag: programlisting
+#: Concepts.xml:519
+#, no-c-format
+msgid ""
+"@Logger private Log log;\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    log.debug(\"Creating new order for user: #{user.username} product: #"
+"{product.name} \n"
+"      quantity: #0\", quantity);\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+"@Logger private Log log;\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    log.debug(\"Creating new order for user: #{user.username} product: #"
+"{product.name} \n"
+"      quantity: #0\", quantity);\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:520
+#, no-c-format
+msgid ""
+"Seam logging automagically chooses whether to send output to log4j or JDK "
+"logging. If log4j is in the classpath, Seam with use it. If it is not, Seam "
+"will use JDK logging."
+msgstr "Seam logging 自动地选择是否把输出发送到 log4j 或 JDK logging。如果 log4j 位于 classpath 里,Seam 将使用它。如果没有,Seam 将使用 JDK logging。"
+
+#. Tag: title
+#: Concepts.xml:523
+#, no-c-format
+msgid "The <literal>Mutable</literal> interface and <literal>@ReadOnly</literal>"
+msgstr "<literal>Mutable</literal> 接口和 <literal>@ReadOnly</literal>"
+
+#. Tag: para
+#: Concepts.xml:524
+#, no-c-format
+msgid ""
+"Many application servers feature an amazingly broken implementation of "
+"<literal>HttpSession</literal> clustering, where changes to the state of "
+"mutable objects bound to the session are only replicated when the "
+"application calls <literal>setAttribute()</literal> explicitly. This is a "
+"source of bugs that can not effectively be tested for at development time, "
+"since they will only manifest when failover occurs. Furthermore, the actual "
+"replication message contains the entire serialized object graph bound to the "
+"session attribute, which is inefficient."
+msgstr "许多应用服务器都令人惊讶地具有对 <literal>HttpSession</literal> 群集的蹩脚的实现,当应用程序显性地调用 <literal>setAttribute()</literal> 时它才复制绑定到会话的易变对象的属性。这是程序错误的一个根源,而在开发阶段难以有效地测试到,因为它们只在发生失效切换时才出现。而且,实际的消息复制包含了绑定到会话属性的整个已序列化的对象图,这是低效的做法。"
+
+#. Tag: para
+#: Concepts.xml:527
+#, no-c-format
+msgid ""
+"Of course, EJB stateful session beans must perform automatic dirty checking "
+"and replication of mutable state and a sophisticated EJB container can "
+"introduce optimizations such as attribute-level replication. Unfortunately, "
+"not all Seam users have the good fortune to be working in an environment "
+"that supports EJB 3.0. So, for session and conversation scoped JavaBean and "
+"entity bean components, Seam provides an extra layer of cluster-safe state "
+"management over the top of the web container session clustering."
+msgstr ""
+"当然,EJB stateful session bean 必须实现自动的脏检查和易变状态的复制,且复杂的 EJB 容器可以引入如属性级别复制的优化。可惜的是,不是所有的 Seam 用户都有使用支持 EJB 3.0 的环境的好运气。所以,对于作用域为 session 和 conversation 的 JavaBean 和 "
+"entity bean 组件,Seam 在 web 容器的会话群集之上,提供了额外的层,用于群集安全的状态管理。"
+
+#. Tag: para
+#: Concepts.xml:530
+#, no-c-format
+msgid ""
+"For session or conversation scoped JavaBean components, Seam automatically "
+"forces replication to occur by calling <literal>setAttribute()</literal> "
+"once in every request that the component was invoked by the application. Of "
+"course, this strategy is inefficient for read-mostly components. You can "
+"control this behavior by implementing the <literal>org.jboss.seam.core."
+"Mutable</literal> interface, or by extending <literal>org.jboss.seam.core."
+"AbstractMutable</literal>, and writing your own dirty-checking logic inside "
+"the component. For example,"
+msgstr ""
+"对于作用域为 session 和 conversation 的 JavaBean 组件,Seam 通过每次在应用程序调用组件时调用 <literal>setAttribute()</literal> 自动地强制复制。当然,这个策略对于大部分为读操作的组件来说是低效的。你可以实现<literal>org.jboss.seam.core."
+"Mutable</literal> 接口、或者继承 <literal>org.jboss.seam.core."
+"AbstractMutable</literal> 并在组件内部编写自己的脏检查逻辑来控制这个行为。例如:"
+
+#. Tag: programlisting
+#: Concepts.xml:533
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class Account extends AbstractMutable\n"
+"{\n"
+"    private BigDecimal balance;\n"
+"    \n"
+"    public void setBalance(BigDecimal balance)\n"
+"    {\n"
+"        setDirty(this.balance, balance);\n"
+"        this.balance = balance;\n"
+"    }\n"
+"    \n"
+"    public BigDecimal getBalance()\n"
+"    {\n"
+"        return balance;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+"@Name(\"account\")\n"
+"public class Account extends AbstractMutable\n"
+"{\n"
+"    private BigDecimal balance;\n"
+"    \n"
+"    public void setBalance(BigDecimal balance)\n"
+"    {\n"
+"        setDirty(this.balance, balance);\n"
+"        this.balance = balance;\n"
+"    }\n"
+"    \n"
+"    public BigDecimal getBalance()\n"
+"    {\n"
+"        return balance;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:534
+#, no-c-format
+msgid ""
+"Or, you can use the <literal>@ReadOnly</literal> annotation to achieve a "
+"similar effect:"
+msgstr "或者,你可以使用 <literal>@ReadOnly</literal> 注解来达到类似的效果:"
+
+#. Tag: programlisting
+#: Concepts.xml:537
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class Account\n"
+"{\n"
+"    private BigDecimal balance;\n"
+"    \n"
+"    public void setBalance(BigDecimal balance)\n"
+"    {\n"
+"        this.balance = balance;\n"
+"    }\n"
+"    \n"
+"    @ReadOnly\n"
+"    public BigDecimal getBalance()\n"
+"    {\n"
+"        return balance;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+"@Name(\"account\")\n"
+"public class Account\n"
+"{\n"
+"    private BigDecimal balance;\n"
+"    \n"
+"    public void setBalance(BigDecimal balance)\n"
+"    {\n"
+"        this.balance = balance;\n"
+"    }\n"
+"    \n"
+"    @ReadOnly\n"
+"    public BigDecimal getBalance()\n"
+"    {\n"
+"        return balance;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:538
+#, no-c-format
+msgid ""
+"For session or conversation scoped entity bean components, Seam "
+"automatically forces replication to occur by calling <literal>setAttribute()"
+"</literal> once in every request, <emphasis>unless the (conversation-scoped) "
+"entity is currently associated with a Seam-managed persistence context, in "
+"which case no replication is needed</emphasis>. This strategy is not "
+"necessarily efficient, so session or conversation scope entity beans should "
+"be used with care. You can always write a stateful session bean or JavaBean "
+"component to \"manage\" the entity bean instance. For example,"
+msgstr ""
+"对于作用域为 session 和 conversation 的 entity bean 组件,Seam 通过在每个请求里调用<literal>setAttribute()"
+"</literal> 一次来自动地强制复制,<emphasis>除非作用域为 conversation 的 entity 目前和 Seam 管理的持久性上下文相关联,此时不需要复制</emphasis>。这个策略效率并不高,所以应该小心使用作用域为 session 和 conversation 的 entity bean 组件。你总可以编写一个 stateful session bean 或 JavaBean 组件来“管理”entity bean 实例。例如:"
+
+#. Tag: programlisting
+#: Concepts.xml:541
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"account\")\n"
+"public class AccountManager extends AbstractMutable\n"
+"{\n"
+"    private Account account; // an entity bean\n"
+"    \n"
+"    @Unwrap\n"
+"    public void getAccount()\n"
+"    {\n"
+"        return account;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+"@Stateful\n"
+"@Name(\"account\")\n"
+"public class AccountManager extends AbstractMutable\n"
+"{\n"
+"    private Account account; // an entity bean\n"
+"    \n"
+"    @Unwrap\n"
+"    public void getAccount()\n"
+"    {\n"
+"        return account;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:542
+#, no-c-format
+msgid ""
+"Note that the <literal>EntityHome</literal> class in the Seam Application "
+"Framework provides a great example of this pattern."
+msgstr "注意,Seam 应用程序框架里的 <literal>EntityHome</literal> 类提供了关于这个模式的一个极好的例子。"
+
+#. Tag: title
+#: Concepts.xml:545
+#, no-c-format
+msgid "Factory and manager components"
+msgstr "工厂和管理者组件"
+
+#. Tag: para
+#: Concepts.xml:546
+#, no-c-format
+msgid ""
+"We often need to work with objects that are not Seam components. But we "
+"still want to be able to inject them into our components using <literal>@In</"
+"literal> and use them in value and method binding expressions, etc. "
+"Sometimes, we even need to tie them into the Seam context lifecycle "
+"(<literal>@Destroy</literal>, for example). So the Seam contexts can contain "
+"objects which are not Seam components, and Seam provides a couple of nice "
+"features that make it easier to work with non-component objects bound to "
+"contexts."
+msgstr ""
+"我们经常需要使用非 Seam 组件。但我们仍然希望能够用 <literal>@In</"
+"literal> 把它们注入到我们的组件里,并在值和方法绑定表达式里使用它们。有时候我们甚至需要把它们绑定到 Seam 上下文生命周期(如 <literal>@Destroy</literal>)。所以,Seam 上下文可以包含非 Seam 组件的对象,且 Seam 提供一些不错的功能使使用绑定到上下文的非组件对象变得容易。"
+
+#. Tag: para
+#: Concepts.xml:549
+#, no-c-format
+msgid ""
+"The <emphasis>factory component pattern</emphasis> lets a Seam component act "
+"as the instantiator for a non-component object. A <emphasis>factory method</"
+"emphasis> will be called when a context variable is referenced but has no "
+"value bound to it. We define factory methods using the <literal>@Factory</"
+"literal> annotation. The factory method binds a value to the context "
+"variable, and determines the scope of the bound value. There are two styles "
+"of factory method. The first style returns a value, which is bound to the "
+"context by Seam:"
+msgstr ""
+"<emphasis>工厂组件模式(factory component pattern)</emphasis>让 Seam 组件扮演非组件对象的初始器角色。当上下文变量被引用但还没有绑定值时,<emphasis>工厂方法</emphasis>将被调用。我们用 <literal>@Factory</"
+"literal> 注解定义工厂方法。工厂方法把值绑定到上下文变量,并决定绑定的值的作用域。有两种风格的工厂方法。第一种返回一个由 Seam 绑定到上下文的值:"
+
+#. Tag: programlisting
+#: Concepts.xml:552
+#, no-c-format
+msgid ""
+"@Factory(scope=CONVERSATION)\n"
+"public List&lt;Customer&gt; getCustomerList() { \n"
+"    return ... ;\n"
+"}"
+msgstr ""
+"@Factory(scope=CONVERSATION)\n"
+"public List&lt;Customer&gt; getCustomerList() { \n"
+"    return ... ;\n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:553
+#, no-c-format
+msgid ""
+"The second style is a method of type <literal>void</literal> which binds the "
+"value to the context variable itself:"
+msgstr "第二种风格是类型为 <literal>void</literal> 的工厂方法,它把值绑定到上下文变量自身:"
+
+#. Tag: programlisting
+#: Concepts.xml:556
+#, no-c-format
+msgid ""
+"@DataModel List&lt;Customer&gt; customerList;\n"
+"\n"
+"@Factory(\"customerList\")\n"
+"public void initCustomerList() { \n"
+"    customerList = ...  ;\n"
+"}"
+msgstr ""
+"@DataModel List&lt;Customer&gt; customerList;\n"
+"\n"
+"@Factory(\"customerList\")\n"
+"public void initCustomerList() { \n"
+"    customerList = ...  ;\n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:557
+#, no-c-format
+msgid ""
+"In both cases, the factory method is called when we reference the "
+"<literal>customerList</literal> context variable and its value is null, and "
+"then has no further part to play in the lifecycle of the value. An even more "
+"powerful pattern is the <emphasis>manager component pattern</emphasis>. In "
+"this case, we have a Seam component that is bound to a context variable, "
+"that manages the value of the context variable, while remaining invisible to "
+"clients."
+msgstr "在两种情况下,当我们引用 <literal>customerList</literal> 上下文变量且其值为空时,工厂方法都被调用,之后在值的生命周期里不再有用。另一个甚至更强大的模式是<emphasis>管理者组件模式(manager component pattern)</emphasis>。此时,我们有一个绑定在上下文变量里的 Seam 组件,它管理对客户不可见的上下文变量的值。"
+
+#. Tag: para
+#: Concepts.xml:560
+#, no-c-format
+msgid ""
+"A manager component is any component with an <literal>@Unwrap</literal> "
+"method. This method returns the value that will be visable to clients, and "
+"is called <emphasis>every time</emphasis> a context variable is referenced."
+msgstr "管理者组件是带有 <literal>@Unwrap</literal> 方法的任何组件。这个方法返回对客户可见的值,<emphasis>每当</emphasis>上下文变量被引用时都被调用。"
+
+#. Tag: programlisting
+#: Concepts.xml:563
+#, no-c-format
+msgid ""
+"@Name(\"customerList\")\n"
+"@Scope(CONVERSATION)\n"
+"public class CustomerListManager\n"
+"{\n"
+"    ...\n"
+"    \n"
+"    @Unwrap\n"
+"    public List&lt;Customer&gt; getCustomerList() { \n"
+"        return ... ;\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"customerList\")\n"
+"@Scope(CONVERSATION)\n"
+"public class CustomerListManager\n"
+"{\n"
+"    ...\n"
+"    \n"
+"    @Unwrap\n"
+"    public List&lt;Customer&gt; getCustomerList() { \n"
+"        return ... ;\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Concepts.xml:564
+#, no-c-format
+msgid ""
+"This pattern is especially useful if we have some heavyweight object that "
+"needs a cleanup operation when the context ends. In this case, the manager "
+"component may perform cleanup in the <literal>@Destroy</literal> method."
+msgstr "如果我们有某些在上下文结束时需要清理操作的重量级对象时,这个模式特别有用。此时,管理者组件可以在 <literal>@Destroy</literal> 方法里执行清理操作。"
+

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Configuration.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Configuration.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Configuration.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2184 @@
+# translation of Configuration.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Xi HUANG <xhuang at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Configuration\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2007-10-21 17:59+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Configuration.xml:6
+#, no-c-format
+msgid "Configuring Seam and packaging Seam applications"
+msgstr "配置 Seam 和对 Seam 应用程序进行打包"
+
+#. Tag: para
+#: Configuration.xml:7
+#, no-c-format
+msgid ""
+"Configuration is a very boring topic and an extremely tedious pastime. "
+"Unfortunately, several lines of XML are required to integrate Seam into your "
+"JSF implementation and servlet container. There&#39;s no need to be too put "
+"off by the following sections; you&#39;ll never need to type any of this "
+"stuff yourself, since you can just copy and paste from the example "
+"applications!"
+msgstr ""
+"配置是一个非常无趣的主题和极其沉闷的消遣。可惜的是,把 Seam 集成进你的 JSF 实"
+"现和 servlet 容器,有几行 XML 是必需的。不需要为下面的内容过于分心;你将不需"
+"要自己输入任何东西,只要从示例程序里复制和粘贴就够了! "
+
+#. Tag: title
+#: Configuration.xml:10
+#, no-c-format
+msgid "Basic Seam configuration"
+msgstr "基本的 Seam 配置"
+
+#. Tag: para
+#: Configuration.xml:11
+#, no-c-format
+msgid ""
+"First, let&#39;s look at the basic configuration that is needed whenever we "
+"use Seam with JSF."
+msgstr "首先,让我们看看和 JSF 一起使用 Seam 时所需要的基本配置。 "
+
+#. Tag: title
+#: Configuration.xml:14
+#, no-c-format
+msgid "Integrating Seam with JSF and your servlet container"
+msgstr "把 Seam 和 JSF 以及你的 servlet 容器集成"
+
+#. Tag: para
+#: Configuration.xml:15
+#, no-c-format
+msgid ""
+"Seam requires the following entry in your <literal>web.xml</literal> file:"
+msgstr "Seam 要求在你的 <literal>web.xml</literal> 文件里有下面的条目:"
+
+#. Tag: programlisting
+#: Configuration.xml:18
+#, no-c-format
+msgid ""
+"&lt;listener&gt;\n"
+"    &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/listener-"
+"class&gt;\n"
+"&lt;/listener&gt;"
+msgstr ""
+"&lt;listener&gt;\n"
+"    &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/listener-"
+"class&gt;\n"
+"&lt;/listener&gt;"
+
+#. Tag: para
+#: Configuration.xml:19
+#, no-c-format
+msgid ""
+"This listener is responsible for bootstrapping Seam, and for destroying "
+"session and application contexts."
+msgstr "listener 负责引导 Seam 和销毁 session 和 application 上下文。"
+
+#. Tag: para
+#: Configuration.xml:22
+#, no-c-format
+msgid ""
+"To integrate with the JSF request lifecycle, we also need a JSF "
+"<literal>PhaseListener</literal> registered in in the <literal>faces-config."
+"xml</literal> file:"
+msgstr ""
+"要与 JSF 请求的生命周期集成,我们也需要在 <literal>faces-config.xml</"
+"literal> 文件里注册一个 JSF <literal>PhaseListener</literal>。"
+
+#. Tag: programlisting
+#: Configuration.xml:25
+#, no-c-format
+msgid ""
+"&lt;lifecycle&gt;\n"
+"    &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-"
+"listener&gt;\n"
+"&lt;/lifecycle&gt;"
+msgstr ""
+"&lt;lifecycle&gt;\n"
+"    &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-"
+"listener&gt;\n"
+"&lt;/lifecycle&gt;"
+
+#. Tag: para
+#: Configuration.xml:26
+#, no-c-format
+msgid ""
+"The actual listener class here varies depending upon how you want to manage "
+"transaction demarcation (more on this below)."
+msgstr "这里实际的 listener 类根据你管理事务定界的方式而不同(下面进行详述)。"
+
+#. Tag: para
+#: Configuration.xml:29
+#, no-c-format
+msgid ""
+"If you are using Sun&#39;s JSF 1.2 reference implementation, you should also "
+"add this to <literal>faces-config.xml</literal>:"
+msgstr ""
+"如果你在使用 Sun 的 JSF 1.2 reference implementation,你也应该把它添加到 "
+"<literal>faces-config.xml</literal> 里: "
+
+#. Tag: programlisting
+#: Configuration.xml:32
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;el-resolver&gt;org.jboss.seam.jsf.SeamELResolver&lt;/el-"
+"resolver&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+"&lt;application&gt;\n"
+"    &lt;el-resolver&gt;org.jboss.seam.jsf.SeamELResolver&lt;/el-"
+"resolver&gt;\n"
+"&lt;/application&gt;"
+
+#. Tag: para
+#: Configuration.xml:33
+#, no-c-format
+msgid ""
+"(This line should not strictly speaking be necessary, but it works around a "
+"minor bug in the RI.)"
+msgstr "(严格来说这一行不应该是必要的,但它绕开了 RI 的一个次要的程序错误。)"
+
+#. Tag: para
+#: Configuration.xml:36
+#, no-c-format
+msgid ""
+"Some JSF implementations have a broken implementation of server-side state "
+"saving that interferes with Seam&#39;s conversation propagation. If you have "
+"problems with conversation propagation during form submissions, try "
+"switching to client-side state saving. You&#39;ll need this in <literal>web."
+"xml</literal>:"
+msgstr ""
+"某些 JSF 实现保存了干涉 Seam 的 conversation 传递的服务器端状态。如果在表单提"
+"交时你遇到 conversation 传递的问题,请切换到客户端的状态保存。在 "
+"<literal>web.xml</literal> 里你将需要: "
+
+#. Tag: programlisting
+#: Configuration.xml:39
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;client&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;client&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+
+#. Tag: title
+#: Configuration.xml:40
+#, no-c-format
+msgid "Seam Resource Servlet"
+msgstr "Seam Resource Servlet"
+
+#. Tag: para
+#: Configuration.xml:41
+#, no-c-format
+msgid ""
+"The Seam Resource Servlet provides resources used by Seam Remoting, captchas "
+"(see the security chapter) and some JSF UI controls. Configuring the Seam "
+"Resource Servlet requires the following entry in <literal>web.xml</literal>:"
+msgstr ""
+"Seam Resource Servlet 提供 Seam Remoting 使用的资源、captchas(参考 security "
+"章节)以及一些 JSF UI 控件。配置 Seam Resource Servlet 要求 <literal>web."
+"xml</literal> 里具有下列的条目:"
+
+#. Tag: programlisting
+#: Configuration.xml:44
+#, no-c-format
+msgid ""
+"&lt;servlet&gt;\n"
+"  &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"  &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"    \n"
+"&lt;servlet-mapping&gt;\n"
+"  &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"  &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+msgstr ""
+"&lt;servlet&gt;\n"
+"  &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"  &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"    \n"
+"&lt;servlet-mapping&gt;\n"
+"  &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"  &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+
+#. Tag: title
+#: Configuration.xml:45
+#, no-c-format
+msgid "Seam servlet filters"
+msgstr "Seam 的 servlet 过滤器"
+
+#. Tag: para
+#: Configuration.xml:46
+#, no-c-format
+msgid ""
+"Seam doesn&#39;t need any servlet filters for basic operation. However, "
+"there are several features which depend upon the use of filters. To make "
+"things easier for you guys, Seam lets you add and configure servlet filters "
+"just like you would configure other built-in Seam components. To take "
+"advantage of this feature, we must first install a master filter in "
+"<literal>web.xml</literal>:"
+msgstr ""
+"Seam 的基本擦作不需要任何 servlet 过滤器。然而,有几个功能依赖于对过滤器的使"
+"用。Seam 让你象配置其他内置组件一样地添加和配置 servlet 过滤器。要利用这个功"
+"能,我们必须在 <literal>web.xml</literal> 里安装一个主过滤器:"
+
+#. Tag: programlisting
+#: Configuration.xml:49
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;/*&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;"
+msgstr ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;/*&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;"
+
+#. Tag: para
+#: Configuration.xml:50
+#, no-c-format
+msgid "Adding the master filter enables the following built-in filters."
+msgstr "添加主过滤器启用了下列的内置过滤器:"
+
+#. Tag: title
+#: Configuration.xml:53
+#, no-c-format
+msgid "Exception handling"
+msgstr "异常处理"
+
+#. Tag: para
+#: Configuration.xml:54
+#, no-c-format
+msgid ""
+"This filter provides the exception mapping functionality in <literal>pages."
+"xml</literal> (almost all applications will need this). It also takes care "
+"of rolling back uncommitted transactions when uncaught exceptions occur. "
+"(According to the Java EE specification, the web container should do this "
+"automatically, but we&#39;ve found that this behavior cannot be relied upon "
+"in all application servers. And it is certainly not required of plain "
+"servlet engines like Tomcat.)"
+msgstr ""
+"这个过滤器在 <literal>pages.xml</literal>(差不多所有应用程序都需要它)里提供"
+"了异常映射功能。当未捕获的异常发生时,它也处理回滚未提交的事务。(安装 Java "
+"EE 规格,web 容器应该自动完成这个功能,但我们发现在所有应用服务器里这个行为都"
+"不可靠。而且,普通的 servlet 引擎如 Tomcat 当然对此不作要求。)"
+
+#. Tag: para
+#: Configuration.xml:57
+#, no-c-format
+msgid ""
+"By default, the exception handling filter will process all requests, however "
+"this behavior may be adjusted by adding a <literal>&lt;web:exception-"
+"filter&gt;</literal> entry to <literal>components.xml</literal>, as shown in "
+"this example:"
+msgstr ""
+"在缺省情况下,异常处理过滤器将处理所有的请求。然而,在 <literal>components."
+"xml</literal> 里添加 <literal>&lt;web:exception-filter&gt;</literal> 条目可以"
+"调整这个行为,如下例所示:"
+
+#. Tag: programlisting
+#: Configuration.xml:60
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:web=\"http://jboss.com/products/seam/web\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                                                      http://jboss.com/"
+"products/seam/core-1.2.xsd\n"
+"                 http://jboss.com/products/seam/components \n"
+"                                                      http://jboss.com/"
+"products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/web \n"
+"                                                      http://jboss.com/"
+"products/seam/web-1.2.xsd\"&gt;\n"
+"\n"
+"    &lt;web:exception-filter url-pattern=\"*.seam\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:web=\"http://jboss.com/products/seam/web\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                                                      http://jboss.com/"
+"products/seam/core-1.2.xsd\n"
+"                 http://jboss.com/products/seam/components \n"
+"                                                      http://jboss.com/"
+"products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/web \n"
+"                                                      http://jboss.com/"
+"products/seam/web-1.2.xsd\"&gt;\n"
+"\n"
+"    &lt;web:exception-filter url-pattern=\"*.seam\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Configuration.xml:63 Configuration.xml:78 Configuration.xml:100
+#: Configuration.xml:125
+#, no-c-format
+msgid ""
+"<literal>url-pattern</literal> &mdash; Used to specify which requests are "
+"filtered, the default is all requests."
+msgstr ""
+"<literal>url-pattern</literal> &mdash; 用来指定过滤那些请求,缺省是所有请求。"
+
+#. Tag: title
+#: Configuration.xml:68
+#, no-c-format
+msgid "Conversation propagation with redirects"
+msgstr "带有重定向的 Conversation 传递"
+
+#. Tag: para
+#: Configuration.xml:69
+#, no-c-format
+msgid ""
+"This filter allows Seam to propagate the conversation context across browser "
+"redirects. It intercepts any browser redirects and adds a request parameter "
+"that specifies the Seam conversation identifier."
+msgstr ""
+"这个过滤器允许 Seam 跨浏览器重定向来传递 conversation 上下文。它拦截任何浏览"
+"器重定向并添加指定 Seam 的 conversation 标识符的请求参数。"
+
+#. Tag: para
+#: Configuration.xml:72
+#, no-c-format
+msgid ""
+"The redirect filter will process all requests by default, but this behavior "
+"can also be adjusted in <literal>components.xml</literal>:"
+msgstr ""
+"这个重定向过滤器将缺省处理所有请求,但这个行为也可以在 <literal>components."
+"xml</literal> 里进行调整:"
+
+#. Tag: programlisting
+#: Configuration.xml:75
+#, no-c-format
+msgid "&lt;web:redirect-filter url-pattern=\"*.seam\"/&gt;"
+msgstr "&lt;web:redirect-filter url-pattern=\"*.seam\"/&gt;"
+
+#. Tag: title
+#: Configuration.xml:83
+#, no-c-format
+msgid "Multipart form submissions"
+msgstr "Multipart 表单提交"
+
+#. Tag: para
+#: Configuration.xml:84
+#, no-c-format
+msgid ""
+"This feature is necessary when using the Seam file upload JSF control. It "
+"detects multipart form requests and processes them according to the "
+"multipart/form-data specification (RFC-2388). To override the default "
+"settings, add the following entry to <literal>components.xml</literal>:"
+msgstr ""
+"在使用 Seam 的文件上载 JSF 控件时,这个功能是必需的。它检测 multipart 表单请"
+"求并按照multipart/form-data 规格(RFC-2388)进行处理。要覆盖缺省的设置,可以"
+"在 <literal>components.xml</literal> 里添加下面的条目:"
+
+#. Tag: programlisting
+#: Configuration.xml:87
+#, no-c-format
+msgid ""
+"&lt;web:multipart-filter create-temp-files=\"true\" \n"
+"        max-request-size=\"1000000\" \n"
+"        url-pattern=\"*.seam\"/&gt;"
+msgstr ""
+"&lt;web:multipart-filter create-temp-files=\"true\" \n"
+"        max-request-size=\"1000000\" \n"
+"        url-pattern=\"*.seam\"/&gt;"
+
+#. Tag: para
+#: Configuration.xml:90
+#, no-c-format
+msgid ""
+"<literal>create-temp-files</literal> &mdash; If set to <literal>true</"
+"literal>, uploaded files are written to a temporary file (instead of held in "
+"memory). This may be an important consideration if large file uploads are "
+"expected. The default setting is <literal>false</literal>."
+msgstr ""
+"<literal>create-temp-files</literal> &mdash; 如果设置为 <literal>true</"
+"literal>,上载的文件将被写入到临时文件(而不是放在内存里)。如果文件很大,这"
+"可能是一个重要的考量。缺省设置是 <literal>false</literal>。"
+
+#. Tag: para
+#: Configuration.xml:95
+#, no-c-format
+msgid ""
+"<literal>max-request-size</literal> &mdash; If the size of a file upload "
+"request (determined by reading the <literal>Content-Length</literal> header "
+"in the request) exceeds this value, the request will be aborted. The default "
+"setting is 0 (no size limit)."
+msgstr ""
+"<literal>max-request-size</literal> &mdash; 如果文件上载请求的大小(由请求里"
+"的  <literal>Content-Length</literal> 头部信息决定)超过了这个值,请求将被拒"
+"绝。缺省值是 0(没有大小限制)。"
+
+#. Tag: title
+#: Configuration.xml:105
+#, no-c-format
+msgid "Character encoding"
+msgstr "字符编码"
+
+#. Tag: para
+#: Configuration.xml:106
+#, no-c-format
+msgid "Sets the character encoding of submitted form data."
+msgstr "设置提交的表单数据的字符编码。"
+
+#. Tag: para
+#: Configuration.xml:109 Configuration.xml:137
+#, no-c-format
+msgid ""
+"This filter is not installed by default and requires an entry in "
+"<literal>components.xml</literal> to enable it:"
+msgstr ""
+"这个过滤器缺省不会安装,要启用它,你需要在 <literal>components.xml</literal> "
+"里添加如下条目:"
+
+#. Tag: programlisting
+#: Configuration.xml:112
+#, no-c-format
+msgid ""
+"&lt;web:character-encoding-filter encoding=\"UTF-16\" \n"
+"        override-client=\"true\" \n"
+"        url-pattern=\"*.seam\"/&gt;"
+msgstr ""
+"&lt;web:character-encoding-filter encoding=\"UTF-16\" \n"
+"        override-client=\"true\" \n"
+"        url-pattern=\"*.seam\"/&gt;"
+
+#. Tag: para
+#: Configuration.xml:115
+#, no-c-format
+msgid "<literal>encoding</literal> &mdash; The encoding to use."
+msgstr "<literal>encoding</literal> &mdash; 使用的编码。"
+
+#. Tag: para
+#: Configuration.xml:120
+#, no-c-format
+msgid ""
+"<literal>override-client</literal> &mdash; If this is set to <literal>true</"
+"literal>, the request encoding will be set to whatever is specified by "
+"<literal>encoding</literal> no matter whether the request already specifies "
+"an encoding or not. If set to <literal>false</literal>, the request encoding "
+"will only be set if the request doesn&#39;t already specify an encoding. The "
+"default setting is <literal>false</literal>."
+msgstr ""
+"<literal>override-client</literal> &mdash; 如果设置为 <literal>true</"
+"literal>,请求的编码将被设置为 <literal>encoding</literal> 所指定的参数,而不"
+"管这个请求是否已经指定其他的编码。如果设置为 <literal>false</literal>,只有请"
+"求没有指定编码时,其编码才会被设置。缺省设置是 <literal>false</literal>。"
+
+#. Tag: title
+#: Configuration.xml:130
+#, no-c-format
+msgid "Context management for custom servlets"
+msgstr "自定义 servlet 的上下文管理"
+
+#. Tag: para
+#: Configuration.xml:131
+#, no-c-format
+msgid ""
+"Requests sent direct to some servlet other than the JSF servlet are not "
+"processed through the JSF lifecycle, so Seam provides a servlet filter that "
+"can be applied to any other servlet that needs access to Seam components."
+msgstr ""
+"直接发送给某个 servlet 而不是 JSF servlet 的请求不会经历 JSF 的生命周期,所"
+"以 Seam 提供了一个可以应用到其他任何需要访问 Seam 组件的 servlet 的过滤器。"
+
+#. Tag: para
+#: Configuration.xml:134
+#, no-c-format
+msgid ""
+"This filter allows custom servlets to interact with the Seam contexts. It "
+"sets up the Seam contexts at the beginning of each request, and tears them "
+"down at the end of the request. You should make sure that this filter is "
+"<emphasis>never</emphasis> applied to the JSF <literal>FacesServlet</"
+"literal>. Seam uses the phase listener for context management in a JSF "
+"request."
+msgstr ""
+"这个过滤器允许自定义的 servlet 和 Seam 的上下文进行交互。它在每个请求开始时设"
+"置 Seam 的上下文,并在请求结束时进行销毁。你应该确保这个过滤器<emphasis>从不"
+"</emphasis>应用到 JSF <literal>FacesServlet</literal> 上。在 JSF 请求里,"
+"Seam 使用阶段 listener 来进行上下文管理。"
+
+#. Tag: programlisting
+#: Configuration.xml:140
+#, no-c-format
+msgid "&lt;web:context-filter url-pattern=\"/media/*\"/&gt;"
+msgstr "&lt;web:context-filter url-pattern=\"/media/*\"/&gt;"
+
+#. Tag: para
+#: Configuration.xml:143
+#, no-c-format
+msgid ""
+"<literal>url-pattern</literal> &mdash; Used to specify which requests are "
+"filtered, the default is all requests. If the url-pattern is specified for "
+"the context filter, then the filter will be enabled (unless explicitly "
+"disabled)."
+msgstr ""
+"<literal>url-pattern</literal> &mdash; 用来指定那些请求被过滤,缺省是全部的请"
+"求。如果指定了上下文过滤器的 url-pattern,那么这个过滤器将被启用(除非显性地"
+"被禁用)。"
+
+#. Tag: para
+#: Configuration.xml:148
+#, no-c-format
+msgid ""
+"The context filter expects to find the conversation id of any conversation "
+"context in a request parameter named <literal>conversationId</literal>. You "
+"are responsible for ensuring that it gets sent in the request."
+msgstr ""
+"上下文过滤器期望找到名为 <literal>conversationId</literal> 的请求参数里的任"
+"何 conversation 上下文的 conversation id。你需要确保在请求里发送它们。"
+
+#. Tag: para
+#: Configuration.xml:151
+#, no-c-format
+msgid ""
+"You are also responsible for ensuring propagation of any new conversation id "
+"back to the client. Seam exposes the conversation id as a property of the "
+"built in component <literal>conversation</literal>."
+msgstr ""
+"你也要确保把任何新的 conversation id 传递回给客户。Seam 在内置组件 "
+"<literal>conversation</literal> 里把 conversation id 里作为一个属性开放。"
+
+#. Tag: title
+#: Configuration.xml:154
+#, no-c-format
+msgid "Integrating Seam with your EJB container"
+msgstr "在你的 EJB 容器里集成 Seam"
+
+#. Tag: para
+#: Configuration.xml:155
+#, no-c-format
+msgid ""
+"We need to apply the <literal>SeamInterceptor</literal> to our Seam "
+"components. The simplest way to do this is to add the following interceptor "
+"binding to the <literal>&lt;assembly-descriptor&gt;</literal> in "
+"<literal>ejb-jar.xml</literal>:"
+msgstr ""
+"我们需要把 <literal>SeamInterceptor</literal> 应用到 Seam 组件上。最简单的办"
+"法就是把下面的拦截器绑定添加到 <literal>ejb-jar.xml</literal> 里的 "
+"<literal>&lt;assembly-descriptor&gt;</literal>:"
+
+#. Tag: programlisting
+#: Configuration.xml:158
+#, no-c-format
+msgid ""
+"&lt;interceptor-binding&gt;\n"
+"    &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"    &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"&lt;/interceptor-binding&gt;"
+msgstr ""
+"&lt;interceptor-binding&gt;\n"
+"    &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"    &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"&lt;/interceptor-binding&gt;"
+
+#. Tag: para
+#: Configuration.xml:159
+#, no-c-format
+msgid ""
+"Seam needs to know where to go to find session beans in JNDI. One way to do "
+"this is specify the <literal>@JndiName</literal> annotation on every session "
+"bean Seam component. However, this is quite tedious. A better approach is to "
+"specify a pattern that Seam can use to calculate the JNDI name from the EJB "
+"name. Unfortunately, there is no standard mapping to global JNDI defined in "
+"the EJB3 specification, so this mapping is vendor-specific. We usually "
+"specify this option in <literal>components.xml</literal>."
+msgstr ""
+"Seam 需要知道去哪找到 JNDI 里的 session bean。在每个 session bean Seam 组件里"
+"指定 <literal>@JndiName</literal> 注解是一个办法。然而,这个办法相当乏味。更"
+"好的办法是指定 Seam 可以用来从 EJB 名字计算 JNDI 名称的模式。可惜的是,在 "
+"EJB3 规格里没有定义标准的全局 JNDI 映射,所以这种映射是和供应商相关的。我们通"
+"常在 <literal>components.xml</literal> 里指定这个选项。"
+
+#. Tag: para
+#: Configuration.xml:162
+#, no-c-format
+msgid "For JBoss AS, the following pattern is correct:"
+msgstr "对于 JBoss AS,下面的模式是正确的:"
+
+#. Tag: programlisting
+#: Configuration.xml:165
+#, no-c-format
+msgid "&lt;core:init jndi-name=\"myEarName/#{ejbName}/local\" /&gt;"
+msgstr "&lt;core:init jndi-name=\"myEarName/#{ejbName}/local\" /&gt;"
+
+#. Tag: para
+#: Configuration.xml:166
+#, no-c-format
+msgid ""
+"Where <literal>myEarName</literal> is the name of the EAR in which the bean "
+"is deployed."
+msgstr "这里的 <literal>myEarName</literal> 是 bean 被部署的 EAR 的名字。"
+
+#. Tag: para
+#: Configuration.xml:169
+#, no-c-format
+msgid ""
+"Outside the context of an EAR (when using the JBoss Embeddable EJB3 "
+"container), the following pattern is the one to use:"
+msgstr ""
+"在 EAR (当使用 JBoss 内嵌的 EJB3 容器时)上下文的外部,可以使用下面的模式:"
+
+#. Tag: programlisting
+#: Configuration.xml:172
+#, no-c-format
+msgid "&lt;core:init jndi-name=\"#{ejbName}/local\" /&gt;"
+msgstr "&lt;core:init jndi-name=\"#{ejbName}/local\" /&gt;"
+
+#. Tag: para
+#: Configuration.xml:173
+#, no-c-format
+msgid ""
+"You&#39;ll have to experiment to find the right setting for other "
+"application servers. Note that some servers (such as GlassFish) require you "
+"to specify JNDI names for all EJB components explicitly (and tediously). In "
+"this case, you can pick your own pattern ;-)"
+msgstr ""
+"你将不得不为其他应用服务器寻找正确的设置。注意,某些服务器(如 GlassFish)要"
+"求你为所有 EJB 组件显性地指定 JNDI 名称。而在这个例子里,你可以使用自己的模"
+"式。"
+
+#. Tag: title
+#: Configuration.xml:176
+#, no-c-format
+msgid "Using facelets"
+msgstr "使用 Facelet"
+
+#. Tag: para
+#: Configuration.xml:177
+#, no-c-format
+msgid ""
+"If you want follow our advice and use facelets instead of JSP, add the "
+"following lines to <literal>faces-config.xml</literal>:"
+msgstr ""
+"如果你依照我们的建议并用 Facelet 代替 JSP,请在 <literal>faces-config.xml</"
+"literal> 里添加下面的链接:"
+
+#. Tag: programlisting
+#: Configuration.xml:180
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;view-handler&gt;com.sun.facelets.FaceletViewHandler&lt;/view-"
+"handler&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+"&lt;application&gt;\n"
+"    &lt;view-handler&gt;com.sun.facelets.FaceletViewHandler&lt;/view-"
+"handler&gt;\n"
+"&lt;/application&gt;"
+
+#. Tag: para
+#: Configuration.xml:181
+#, no-c-format
+msgid "And the following lines to <literal>web.xml</literal>:"
+msgstr "并在 <literal>web.xml</literal> 里添加下面的内容:"
+
+#. Tag: programlisting
+#: Configuration.xml:184
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;javax.faces.DEFAULT_SUFFIX&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;.xhtml&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;javax.faces.DEFAULT_SUFFIX&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;.xhtml&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+
+#. Tag: title
+#: Configuration.xml:185
+#, no-c-format
+msgid "Don&#39;t forget!"
+msgstr "不要忘记! "
+
+#. Tag: para
+#: Configuration.xml:186
+#, no-c-format
+msgid ""
+"There is one final item you need to know about. You must place a "
+"<literal>seam.properties</literal>, <literal>META-INF/seam.properties</"
+"literal> or <literal>META-INF/components.xml</literal> file in any archive "
+"in which your Seam components are deployed (even an empty properties file "
+"will do). At startup, Seam will scan any archives with <literal>seam."
+"properties</literal> files for seam components."
+msgstr ""
+"你还需知道最后一件事。你必须把 <literal>seam.properties</literal>、 "
+"<literal>META-INF/seam.properties</literal> 或 <literal>META-INF/components."
+"xml</literal> 放入你的 Seam 组件部署至的任何归档文件里(即使是空的属性文件,"
+"你也要这么做)。在启动时,Seam 将扫描任何带有 Seam 组件的 <literal>seam."
+"properties</literal> 文件的归档文件。"
+
+#. Tag: para
+#: Configuration.xml:189
+#, no-c-format
+msgid ""
+"In a web archive (WAR) file, you must place a <literal>seam.properties</"
+"literal> file in the <literal>WEB-INF/classes</literal> directory if you "
+"have any Seam components included here."
+msgstr ""
+"如果你使用了任何 Seam 组件,你必须在 WAR 的 <literal>WEB-INF/lib</literal> 目"
+"录下包括 <literal>seam.properties</literal> 文件。"
+
+#. Tag: para
+#: Configuration.xml:192
+#, no-c-format
+msgid ""
+"That&#39;s why all the Seam examples have an empty <literal>seam.properties</"
+"literal> file. You can&#39;t just delete this file and expect everything to "
+"still work!"
+msgstr ""
+"这就是为什么 Seam 的例程里有一个空的 <literal>seam.properties</literal> 文"
+"件。如果删除了这个文件,你可不要期望程序还能运行!"
+
+#. Tag: para
+#: Configuration.xml:195
+#, no-c-format
+msgid ""
+"You might think this is silly and what kind of idiot framework designers "
+"would make an empty file affect the behavior of their software?? Well, this "
+"is a workaround for a limitation of the JVM&mdash;if we didn&#39;t use this "
+"mechanism, our next best option would be to force you to list every "
+"component explicitly in <literal>components.xml</literal>, just like some "
+"other competing frameworks do! I think you&#39;ll like our way better."
+msgstr ""
+"你可能认为这很愚蠢:哪个白痴框架设计人员会让一个空文件影响其软件的行为?谜底"
+"揭晓,这是为了绕开某个 JVM 限制&mdash;如果我们不使用这个机制,那就得在 "
+"<literal>components.xml</literal> 里显性地列出每个组件,就象其他框架所做的!"
+"我想你会认为我们的方案其实更好。"
+
+#. Tag: title
+#: Configuration.xml:198
+#, no-c-format
+msgid "Configuring Seam in Java EE 5"
+msgstr "在 Java EE 5 里配置 Seam"
+
+#. Tag: para
+#: Configuration.xml:207
+#, no-c-format
+msgid ""
+"If you&#39;re running in a Java EE 5 environment, this is all the "
+"configuration required to start using Seam!"
+msgstr "如果在 Java EE 5 环境里运行,这就是开始使用 Seam 所需的全部配置!"
+
+#. Tag: title
+#: Configuration.xml:210 Configuration.xml:276 Configuration.xml:321
+#: Configuration.xml:360 Configuration.xml:377
+#, no-c-format
+msgid "Packaging"
+msgstr "打包"
+
+#. Tag: para
+#: Configuration.xml:211
+#, no-c-format
+msgid ""
+"Once you&#39;ve packaged all this stuff together into an EAR, the archive "
+"structure will look something like this:"
+msgstr "一旦你已经将所有文件打包为 EAR 文件,归档结构将和下面类似:"
+
+#. Tag: programlisting
+#: Configuration.xml:214
+#, no-c-format
+msgid ""
+"my-application.ear/\n"
+"    jboss-seam.jar\n"
+"    el-api.jar\n"
+"    el-ri.jar\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"        application.xml\n"
+"    my-application.war/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"        WEB-INF/\n"
+"            web.xml\n"
+"            components.xml\n"
+"            faces-config.xml\n"
+"            lib/\n"
+"                jsf-facelets.jar\n"
+"                jboss-seam-ui.jar\n"
+"        login.jsp\n"
+"        register.jsp\n"
+"        ...\n"
+"    my-application.jar/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"            persistence.xml\n"
+"        seam.properties\n"
+"        org/\n"
+"            jboss/\n"
+"                myapplication/\n"
+"                    User.class\n"
+"                    Login.class\n"
+"                    LoginBean.class\n"
+"                    Register.class\n"
+"                    RegisterBean.class\n"
+"                    ..."
+msgstr ""
+"my-application.ear/\n"
+"    jboss-seam.jar\n"
+"    el-api.jar\n"
+"    el-ri.jar\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"        application.xml\n"
+"    my-application.war/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"        WEB-INF/\n"
+"            web.xml\n"
+"            components.xml\n"
+"            faces-config.xml\n"
+"            lib/\n"
+"                jsf-facelets.jar\n"
+"                jboss-seam-ui.jar\n"
+"        login.jsp\n"
+"        register.jsp\n"
+"        ...\n"
+"    my-application.jar/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"            persistence.xml\n"
+"        seam.properties\n"
+"        org/\n"
+"            jboss/\n"
+"                myapplication/\n"
+"                    User.class\n"
+"                    Login.class\n"
+"                    LoginBean.class\n"
+"                    Register.class\n"
+"                    RegisterBean.class\n"
+"                    ..."
+
+#. Tag: para
+#: Configuration.xml:215
+#, no-c-format
+msgid ""
+"You must include <literal>jboss-seam.jar</literal>, <literal>el-api.jar</"
+"literal> and <literal>el-ri.jar</literal> in the EAR classpath. Make sure "
+"you reference all of these jars from <literal>application.xml</literal>."
+msgstr ""
+"你必须在 EAR 的 classpath 里包括 <literal>jboss-seam.jar</literal>、"
+"<literal>el-api.jar</literal> 和 <literal>el-ri.jar</literal>。请确保你在 "
+"<literal>application.xml</literal> 里引用了所有这些 jar 文件。"
+
+#. Tag: para
+#: Configuration.xml:218
+#, no-c-format
+msgid ""
+"If you want to use jBPM or Drools, you must include the needed jars in the "
+"EAR classpath. Make sure you reference all of the jars from "
+"<literal>application.xml</literal>."
+msgstr ""
+"如果你想使用 jBPM 或 Drools,你必须在 EAR 的 classpath 里包括所需的 jar 文"
+"件。请确保你在 <literal>application.xml</literal> 里引用了所有的 jar 文件。"
+
+#. Tag: para
+#: Configuration.xml:221
+#, no-c-format
+msgid ""
+"If you want to use facelets (our recommendation), you must include "
+"<literal>jsf-facelets.jar</literal> in the <literal>WEB-INF/lib</literal> "
+"directory of the WAR."
+msgstr ""
+"如果你想使用 Facelet(我们所推荐的),你必须在 WAR 的 <literal>WEB-INF/lib</"
+"literal> 目录下包括 <literal>jsf-facelets.jar</literal> 文件。"
+
+#. Tag: para
+#: Configuration.xml:224
+#, no-c-format
+msgid ""
+"If you want to use the Seam tag library (most Seam applications do), you "
+"must include <literal>jboss-seam-ui.jar</literal> in the <literal>WEB-INF/"
+"lib</literal> directory of the WAR. If you want to use the PDF or email tag "
+"libraries, you need to put <literal>jboss-seam-pdf.jar</literal> or "
+"<literal>jboss-seam-mail.jar</literal> in <literal>WEB-INF/lib</literal>."
+msgstr ""
+"如果你想使用 Seam 的标签库(大多数 Seam 应用程序都使用),你必须在 WAR 的 "
+"<literal>WEB-INF/lib</literal> 目录下包括 <literal>jboss-seam-ui.jar</"
+"literal> 文件。如果你想使用 PDF 或电子邮件标签库,你必须把  <literal>jboss-"
+"seam-pdf.jar</literal> 或 <literal>jboss-seam-mail.jar</literal> 文件放在 "
+"<literal>WEB-INF/lib</literal> 目录下。"
+
+#. Tag: para
+#: Configuration.xml:227
+#, no-c-format
+msgid ""
+"If you want to use the Seam debug page (only works for applications using "
+"facelets), you must include <literal>jboss-seam-debug.jar</literal> in the "
+"<literal>WEB-INF/lib</literal> directory of the WAR."
+msgstr ""
+"如果你想使用 Seam 的调试页(仅使用于使用 Facelet 的应用程序),你必须在 WAR "
+"的 <literal>WEB-INF/lib</literal> 目录下包含 <literal>jboss-seam-debug.jar</"
+"literal> 文件。"
+
+#. Tag: para
+#: Configuration.xml:230
+#, no-c-format
+msgid ""
+"Seam ships with several example applications that are deployable in any Java "
+"EE container that supports EJB 3.0."
+msgstr "Seam 带有几个可以部署在任何支持 EJB 3.0 的 Java EE 容器里的示例程序。"
+
+#. Tag: para
+#: Configuration.xml:233
+#, no-c-format
+msgid ""
+"I really wish that was all there was to say on the topic of configuration "
+"but unfortunately we&#39;re only about a third of the way there. If you&#39;"
+"re too overwhelmed by all this tedious configuration stuff, feel free to "
+"skip over the rest of this section and come back to it later."
+msgstr ""
+"我真的希望有关配置的内容就到此为止了,但其实我们才进行了三分之一。如果你对这"
+"些乏味的配置已经厌倦了的话,你可以先跳过这些内容,以后再来了解。"
+
+#. Tag: title
+#: Configuration.xml:237
+#, no-c-format
+msgid "Configuring Seam in Java SE, with the JBoss Embeddable EJB3 container"
+msgstr "在 JBoss 内嵌的 EJB3 容器里配置基于 Java SE 的 Seam"
+
+#. Tag: para
+#: Configuration.xml:238
+#, no-c-format
+msgid ""
+"The JBoss Embeddable EJB3 container lets you run EJB3 components outside the "
+"context of the Java EE 5 application server. This is especially, but not "
+"only, useful for testing."
+msgstr ""
+"JBoss 内嵌的 EJB3 容器让你可以在 Java EE 5 应用服务器的上下文外运行 EJB3 组"
+"件。这对于测试特别有用,但不仅限于此。"
+
+#. Tag: para
+#: Configuration.xml:241
+#, no-c-format
+msgid ""
+"The Seam booking example application includes a TestNG integration test "
+"suite that runs on the Embeddable EJB3 container."
+msgstr ""
+"Seam 的 booking 例程包括了一个 TestNG 集成测试套件,它可以运行在内嵌的 EJB3 "
+"容器里。"
+
+#. Tag: para
+#: Configuration.xml:252
+#, no-c-format
+msgid "The booking example application may even be deployed to Tomcat."
+msgstr "booking 示例程序甚至可以部署在 Tomcat 里。"
+
+#. Tag: title
+#: Configuration.xml:263
+#, no-c-format
+msgid "Installing the Embeddable EJB3 container"
+msgstr "安装可嵌入的 EJB3 容器"
+
+#. Tag: para
+#: Configuration.xml:264
+#, no-c-format
+msgid ""
+"Seam ships with a build of the Embeddable EJB3 container in the "
+"<literal>embedded-ejb</literal> directory. To use the Embeddable EJB3 "
+"container with Seam, add the <literal>embedded-ejb/conf</literal> directory, "
+"and all jars in the <literal>lib</literal> and <literal>embedded-ejb/lib</"
+"literal> directories to your classpath. Then, add the following line to "
+"<literal>components.xml</literal>:"
+msgstr ""
+"Seam 在其 <literal>embedded-ejb</literal> 目录下带有一个可嵌入的 EJB3 容器。"
+"要使用这个可嵌入的 EJB3 容器,添加 <literal>embedded-ejb/conf</literal> 目"
+"录,并把 <literal>lib</literal> 和 <literal>embedded-ejb/lib</literal> 里所有"
+"的 JAR 文件置于你的 classpath 里。然后,把如下的一行加到 <literal>components."
+"xml</literal> 里:"
+
+#. Tag: programlisting
+#: Configuration.xml:267
+#, no-c-format
+msgid "&lt;core:ejb /&gt;"
+msgstr "&lt;core:ejb /&gt;"
+
+#. Tag: para
+#: Configuration.xml:268
+#, no-c-format
+msgid ""
+"This setting installs the built-in component named <literal>org.jboss.seam."
+"core.ejb</literal>. This component is responsible for bootstrapping the EJB "
+"container when Seam is started, and shutting it down when the web "
+"application is undeployed."
+msgstr ""
+"这个设置安装内置的 <literal>org.jboss.seam.core.ejb</literal> 组件。这个组件"
+"负责在 Seam 启动时引导 EJB 容器,并在卸载 web 应用程序时关闭它。"
+
+#. Tag: title
+#: Configuration.xml:271
+#, no-c-format
+msgid "Configuring a datasource with the Embeddable EJB3 container"
+msgstr "为可嵌入的 EJB3 容器配置数据源"
+
+#. Tag: para
+#: Configuration.xml:272
+#, no-c-format
+msgid ""
+"You should refer to the Embeddable EJB3 container documentation for more "
+"information about configuring the container. You&#39;ll probably at least "
+"need to set up your own datasource. Embeddable EJB3 is implemented using the "
+"JBoss Microcontainer, so it&#39;s very easy to add new services to the "
+"minimal set of services provided by default. For example, I can add a new "
+"datasource by putting this <literal>jboss-beans.xml</literal> file in my "
+"classpath:"
+msgstr ""
+"关于配置可嵌入的 EJB3 容器的更多信息,你应该参考它的文档。你可能至少需要设立"
+"自己的数据源。可嵌入的 EJB3 容器是用 JBoss Microcontainer 实现的,所以可以很"
+"容易在缺省的最小服务集里添加新的服务。例如,我通过把 <literal>jboss-beans."
+"xml</literal> 文件放在 classpath 上来添加新的数据源:"
+
+#. Tag: programlisting
+#: Configuration.xml:275
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"\n"
+"&lt;deployment xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"urn:jboss:bean-deployer bean-deployer_1_0."
+"xsd\"\n"
+"            xmlns=\"urn:jboss:bean-deployer\"&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasourceBootstrap\"\n"
+"        class=\"org.jboss.resource.adapter.jdbc.local.LocalTxDataSource"
+"\"&gt;\n"
+"      &lt;property name=\"driverClass\"&gt;org.hsqldb.jdbcDriver&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"connectionURL\"&gt;jdbc:hsqldb:.&lt;/property&gt;\n"
+"      &lt;property name=\"userName\"&gt;sa&lt;/property&gt;\n"
+"      &lt;property name=\"jndiName\"&gt;java:/bookingDatasource&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"minSize\"&gt;0&lt;/property&gt;\n"
+"      &lt;property name=\"maxSize\"&gt;10&lt;/property&gt;\n"
+"      &lt;property name=\"blockingTimeout\"&gt;1000&lt;/property&gt;\n"
+"      &lt;property name=\"idleTimeout\"&gt;100000&lt;/property&gt;\n"
+"      &lt;property name=\"transactionManager\"&gt;\n"
+"        &lt;inject bean=\"TransactionManager\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"      &lt;property name=\"cachedConnectionManager\"&gt;\n"
+"        &lt;inject bean=\"CachedConnectionManager\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"      &lt;property name=\"initialContextProperties\"&gt;\n"
+"        &lt;inject bean=\"InitialContextProperties\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasource\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getDatasource\"&gt;\n"
+"         &lt;factory bean=\"bookingDatasourceBootstrap\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"&lt;/deployment&gt;"
+msgstr ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"\n"
+"&lt;deployment xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"urn:jboss:bean-deployer bean-deployer_1_0."
+"xsd\"\n"
+"            xmlns=\"urn:jboss:bean-deployer\"&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasourceBootstrap\"\n"
+"        class=\"org.jboss.resource.adapter.jdbc.local.LocalTxDataSource"
+"\"&gt;\n"
+"      &lt;property name=\"driverClass\"&gt;org.hsqldb.jdbcDriver&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"connectionURL\"&gt;jdbc:hsqldb:.&lt;/property&gt;\n"
+"      &lt;property name=\"userName\"&gt;sa&lt;/property&gt;\n"
+"      &lt;property name=\"jndiName\"&gt;java:/bookingDatasource&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"minSize\"&gt;0&lt;/property&gt;\n"
+"      &lt;property name=\"maxSize\"&gt;10&lt;/property&gt;\n"
+"      &lt;property name=\"blockingTimeout\"&gt;1000&lt;/property&gt;\n"
+"      &lt;property name=\"idleTimeout\"&gt;100000&lt;/property&gt;\n"
+"      &lt;property name=\"transactionManager\"&gt;\n"
+"        &lt;inject bean=\"TransactionManager\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"      &lt;property name=\"cachedConnectionManager\"&gt;\n"
+"        &lt;inject bean=\"CachedConnectionManager\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"      &lt;property name=\"initialContextProperties\"&gt;\n"
+"        &lt;inject bean=\"InitialContextProperties\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasource\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getDatasource\"&gt;\n"
+"         &lt;factory bean=\"bookingDatasourceBootstrap\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"&lt;/deployment&gt;"
+
+#. Tag: para
+#: Configuration.xml:277
+#, no-c-format
+msgid ""
+"The archive structure of a WAR-based deployment on an servlet engine like "
+"Tomcat will look something like this:"
+msgstr "在 servlet 引擎如 Tomcat 里基于 WAR 的部署的归档结构和下面类似:"
+
+#. Tag: programlisting
+#: Configuration.xml:280
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            myfaces-api.jar\n"
+"            myfaces-impl.jar\n"
+"            jboss-ejb3.jar\n"
+"            jboss-jca.jar\n"
+"            jboss-j2ee.jar\n"
+"            ...\n"
+"            mc-conf.jar/\n"
+"                ejb3-interceptors-aop.xml\n"
+"                embedded-jboss-beans.xml\n"
+"                default.persistence.properties\n"
+"                jndi.properties\n"
+"                login-config.xml\n"
+"                security-beans.xml\n"
+"                log4j.xml\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                    MANIFEST.MF\n"
+"                    persistence.xml\n"
+"                    jboss-beans.xml\n"
+"                log4j.xml\n"
+"                seam.properties\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            LoginBean.class\n"
+"                            Register.class\n"
+"                            RegisterBean.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            myfaces-api.jar\n"
+"            myfaces-impl.jar\n"
+"            jboss-ejb3.jar\n"
+"            jboss-jca.jar\n"
+"            jboss-j2ee.jar\n"
+"            ...\n"
+"            mc-conf.jar/\n"
+"                ejb3-interceptors-aop.xml\n"
+"                embedded-jboss-beans.xml\n"
+"                default.persistence.properties\n"
+"                jndi.properties\n"
+"                login-config.xml\n"
+"                security-beans.xml\n"
+"                log4j.xml\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                    MANIFEST.MF\n"
+"                    persistence.xml\n"
+"                    jboss-beans.xml\n"
+"                log4j.xml\n"
+"                seam.properties\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            LoginBean.class\n"
+"                            Register.class\n"
+"                            RegisterBean.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+
+#. Tag: para
+#: Configuration.xml:281
+#, no-c-format
+msgid ""
+"The <literal>mc-conf.jar</literal> just contains the standard JBoss "
+"Microcontainer configuration files for Embeddable EJB3. You won&#39;t "
+"usually need to edit these files yourself."
+msgstr ""
+"<literal>mc-conf.jar</literal> 仅包含用于可嵌入的 EJB3 的标准 JBoss "
+"Microcontainer 配置。你通常不需要自己编辑这些文件。"
+
+#. Tag: para
+#: Configuration.xml:284
+#, no-c-format
+msgid ""
+"Most of the Seam example applications may be deployed to Tomcat by running "
+"<literal>ant deploy.tomcat</literal>."
+msgstr ""
+"大多数的 Seam 示例程序都可以用 <literal>ant deploy.tomcat</literal> 部署在 "
+"Tomcat 里。"
+
+#. Tag: title
+#: Configuration.xml:287
+#, no-c-format
+msgid "Configuring Seam in J2EE"
+msgstr "在 J2EE 环境里配置 Seam"
+
+#. Tag: para
+#: Configuration.xml:288
+#, no-c-format
+msgid ""
+"Seam is useful even if you&#39;re not yet ready to take the plunge into EJB "
+"3.0. In this case you would use Hibernate3 or JPA instead of EJB 3.0 "
+"persistence, and plain JavaBeans instead of session beans. You&#39;ll miss "
+"out on some of the nice features of session beans but it will be very easy "
+"to migrate to EJB 3.0 when you&#39;re ready and, in the meantime, you&#39;ll "
+"be able to take advantage of Seam&#39;s unique declarative state management "
+"architecture."
+msgstr ""
+"即使你还没准备好尝试 EJB 3.0,Seam 也有用处。此时你将使用 Hibernate3 或 JPA "
+"代替 EJB 3.0 持久化,并用 JavaBean 代替 session bean。你将错过 session bean "
+"的一些功能,但移植到  EJB 3.0 会非常容易,同时,你将能够利用 Seam 的独特的声"
+"明式状态管理构架。"
+
+#. Tag: para
+#: Configuration.xml:299
+#, no-c-format
+msgid ""
+"Seam JavaBean components do not provide declarative transaction demarcation "
+"like session beans do. You <emphasis>could</emphasis> manage your "
+"transactions manually using the JTA <literal>UserTransaction</literal> (you "
+"could even implement your own declarative transaction management in a Seam "
+"interceptor). But most applications will use Seam managed transactions when "
+"using Hibernate with JavaBeans. Follow the instructions in the persistence "
+"chapter to install <literal>TransactionalSeamPhaseListener</literal>."
+msgstr ""
+"Seam 的 JavaBean 组件不提供 session bean 那样的声明式事务限界(declarative "
+"transaction demarcation)。你<emphasis>可以</emphasis>用 JTA "
+"<literal>UserTransaction</literal> 手工管理你的事务(你甚至可以在 Seam 拦截器"
+"里实现自己的声明式事务管理)。但把 Hibernate 和 JavaBean 一起使用时,大多数应"
+"用程序将使用  Seam 管理的事务。你可以根据持久性章节里的说明来安装 "
+"<literal>TransactionalSeamPhaseListener</literal>。"
+
+#. Tag: para
+#: Configuration.xml:302
+#, no-c-format
+msgid ""
+"The Seam distribution includes a version of the booking example application "
+"that uses Hibernate3 and JavaBeans instead of EJB3, and another version that "
+"uses JPA and JavaBeans. These example applications are ready to deploy into "
+"any J2EE application server."
+msgstr ""
+"Seam 发布版本包含一个使用 Hibernate3 和 JavaBean 来代替 EJB3 的 booking 示例"
+"程序,以及另外一个使用 JPA 和 JavaBean 的版本。这些例程都可以部署至任何 J2EE "
+"应用服务器。"
+
+#. Tag: title
+#: Configuration.xml:305
+#, no-c-format
+msgid "Boostrapping Hibernate in Seam"
+msgstr "在 Seam 里引导 Hibernate"
+
+#. Tag: para
+#: Configuration.xml:306
+#, no-c-format
+msgid ""
+"Seam will bootstrap a Hibernate <literal>SessionFactory</literal> from your "
+"<literal>hibernate.cfg.xml</literal> file if you install a built-in "
+"component:"
+msgstr ""
+"如果安装内置组件,Seam 将根据 <literal>hibernate.cfg.xml</literal> 文件引导一"
+"个 Hibernate <literal>SessionFactory</literal>:"
+
+#. Tag: programlisting
+#: Configuration.xml:309
+#, no-c-format
+msgid ""
+"&lt;core:hibernate-session-factory name=\"hibernateSessionFactory\"/&gt;"
+msgstr ""
+"&lt;core:hibernate-session-factory name=\"hibernateSessionFactory\"/&gt;"
+
+#. Tag: para
+#: Configuration.xml:310
+#, no-c-format
+msgid ""
+"You will also need to configure a <emphasis>managed session</emphasis> if "
+"you want a Seam managed Hibernate <literal>Session</literal> to be available "
+"via injection."
+msgstr ""
+"如果你想通过注入来使 Seam 管理的 Hibernate <literal>Session</literal> 可用,"
+"你也需要配置 <emphasis>managed session</emphasis>。"
+
+#. Tag: title
+#: Configuration.xml:313
+#, no-c-format
+msgid "Boostrapping JPA in Seam"
+msgstr "在 Seam 里引导 JPA "
+
+#. Tag: para
+#: Configuration.xml:314
+#, no-c-format
+msgid ""
+"Seam will bootstrap a JPA <literal>EntityManagerFactory</literal> from your "
+"<literal>persistence.xml</literal> file if you install this built-in "
+"component:"
+msgstr ""
+"如果你安装下面这个内置组件,Seam 将根据 <literal>persistence.xml</literal> 文"
+"件引导一个 JPA <literal>EntityManagerFactory</literal>:"
+
+#. Tag: programlisting
+#: Configuration.xml:317
+#, no-c-format
+msgid "&lt;core:entity-manager-factory name=\"entityManagerFactory\"/&gt;"
+msgstr "&lt;core:entity-manager-factory name=\"entityManagerFactory\"/&gt;"
+
+#. Tag: para
+#: Configuration.xml:318
+#, no-c-format
+msgid ""
+"You will also need to configure a <emphasis>managed persistencece context</"
+"emphasis> if you want a Seam managed JPA <literal>EntityManager</literal> to "
+"be available via injection."
+msgstr ""
+"如果你想通过注入来使 Seam 管理的 JPA <literal>EntityManager</literal> 可用,"
+"你也需要配置 <emphasis>managed persistencece context</emphasis>。"
+
+#. Tag: para
+#: Configuration.xml:322
+#, no-c-format
+msgid "We can package our application as a WAR, in the following structure:"
+msgstr "我们可以按照下面的结构把应用程序打包成 WAR 文件:"
+
+#. Tag: programlisting
+#: Configuration.xml:325
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            hibernate3.jar\n"
+"            hibernate-annotations.jar\n"
+"            ...\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                   MANIFEST.MF\n"
+"                seam.properties\n"
+"                hibernate.cfg.xml\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            Register.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            hibernate3.jar\n"
+"            hibernate-annotations.jar\n"
+"            ...\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                   MANIFEST.MF\n"
+"                seam.properties\n"
+"                hibernate.cfg.xml\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            Register.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+
+#. Tag: para
+#: Configuration.xml:326
+#, no-c-format
+msgid ""
+"If we want to deploy Hibernate in a non-J2EE environment like Tomcat or "
+"TestNG, we need to do a little bit more work."
+msgstr ""
+"如果我们要把 Hibernate 部署在一个非 J2EE 环境里,如 Tomcat 或 TestNG,我们还"
+"需要做点别的。"
+
+#. Tag: title
+#: Configuration.xml:330
+#, no-c-format
+msgid "Configuring Seam in Java SE, with the JBoss Microcontainer"
+msgstr "在带有 JBoss Microcontainer 的 Java SE 环境里配置 Seam"
+
+#. Tag: para
+#: Configuration.xml:331
+#, no-c-format
+msgid ""
+"The Seam support for Hibernate and JPA requires JTA and a JCA datasource. If "
+"you are running in a non-EE environment like Tomcat or TestNG you can run "
+"these services, and Hibernate itself, in the JBoss Microcontainer."
+msgstr ""
+"Seam 对 Hibernate 和 JPA 的支持需要 JTA 和一个 JCA 数据源。如果你在使用非 "
+"Java EE 环境里(如 Tomcat 或 TestNG),你可以在 JBoss Microcontainer 里运行这"
+"些服务以及 Hibernate 自己。"
+
+#. Tag: para
+#: Configuration.xml:334
+#, no-c-format
+msgid ""
+"You can even deploy the Hibernate and JPA versions of the booking example in "
+"Tomcat."
+msgstr "你甚至可以在 Tomcat 里部署 booking 例程的 Hibernate 和 JPA 版本。"
+
+#. Tag: para
+#: Configuration.xml:345
+#, no-c-format
+msgid ""
+"Seam ships with an example Microcontainer configuration in "
+"<literal>microcontainer/conf/jboss-beans.xml</literal> that provides all the "
+"things you need to run Seam with Hibernate in any non-EE environment. Just "
+"add the <literal>microcontainer/conf</literal> directory, and all jars in "
+"the <literal>lib</literal> and <literal>microcontainer/lib</literal> "
+"directories to your classpath. Refer to the documentation for the JBoss "
+"Microcontainer for more information."
+msgstr ""
+"Seam 在 <literal>microcontainer/conf/jboss-beans.xml</literal> 里带有一个 "
+"Microcontainer 配置示例,它提供在任何非 Java EE 环境里运行 Seam 和 Hibernate "
+"你需要的所有东西。只要在你的 classpath 里添加 <literal>microcontainer/conf</"
+"literal> 目录、所有 <literal>lib</literal> 和 <literal>microcontainer/lib</"
+"literal> 目录下的 JAR 文件。关于 JBoss Microcontainer 的更多信息,请参考相应"
+"的文档。"
+
+#. Tag: title
+#: Configuration.xml:348
+#, no-c-format
+msgid "Using Hibernate and the JBoss Microcontainer"
+msgstr "使用 Hibernate 和 JBoss Microcontainer"
+
+#. Tag: para
+#: Configuration.xml:349
+#, no-c-format
+msgid ""
+"The built-in Seam component named <literal>org.jboss.seam.core."
+"microcontainer</literal> bootstraps the microcontainer. As before, we "
+"probably want to use a Seam managed session."
+msgstr ""
+"内置的 Seam 组件 <literal>org.jboss.seam.core.microcontainer</literal> 引导"
+"了 microcontainer。和以前一样,我们可能需要说有一个 Seam 管理的 session。"
+
+#. Tag: programlisting
+#: Configuration.xml:352
+#, no-c-format
+msgid ""
+"&lt;core:microcontainer/&gt;\n"
+"\n"
+"&lt;core:managed-hibernate-session name=\"bookingDatabase\" auto-create="
+"\"true\"\n"
+"    session-factory-jndi-name=\"java:/bookingSessionFactory\"/&gt;"
+msgstr ""
+"&lt;core:microcontainer/&gt;\n"
+"\n"
+"&lt;core:managed-hibernate-session name=\"bookingDatabase\" auto-create="
+"\"true\"\n"
+"    session-factory-jndi-name=\"java:/bookingSessionFactory\"/&gt;"
+
+#. Tag: para
+#: Configuration.xml:353
+#, no-c-format
+msgid ""
+"Where <literal>java:/bookingSessionFactory</literal> is the name of the "
+"Hibernate session factory specified in <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+"这里的 <literal>java:/bookingSessionFactory</literal> 是 <literal>hibernate."
+"cfg.xml</literal> 里指定的 Hibernate session 工厂的名字。"
+
+#. Tag: para
+#: Configuration.xml:356
+#, no-c-format
+msgid ""
+"You&#39;ll need to provide a <literal>jboss-beans.xml</literal> file that "
+"installs JNDI, JTA, your JCA datasource and Hibernate into the "
+"microcontainer:"
+msgstr ""
+"你将需要提供一个把 JNDI、JTA、你的 JCA 数据源和 Hibernate 安装到 "
+"microcontainer 里的 <literal>jboss-beans.xml</literal> 文件:"
+
+#. Tag: programlisting
+#: Configuration.xml:359
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"\n"
+"&lt;deployment xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"urn:jboss:bean-deployer bean-deployer_1_0."
+"xsd\"\n"
+"            xmlns=\"urn:jboss:bean-deployer\"&gt;\n"
+"\n"
+"   &lt;bean name=\"Naming\" class=\"org.jnp.server.SingletonNamingServer\"/"
+"&gt;\n"
+"\n"
+"   &lt;bean name=\"TransactionManagerFactory\" \n"
+"      class=\"org.jboss.seam.microcontainer.TransactionManagerFactory\"/"
+"&gt;\n"
+"   &lt;bean name=\"TransactionManager\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getTransactionManager\"&gt;\n"
+"         &lt;factory bean=\"TransactionManagerFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasourceFactory\" class=\"org.jboss.seam."
+"microcontainer.DataSourceFactory\"&gt;\n"
+"      &lt;property name=\"driverClass\"&gt;org.hsqldb.jdbcDriver&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"connectionUrl\"&gt;jdbc:hsqldb:.&lt;/property&gt;\n"
+"      &lt;property name=\"userName\"&gt;sa&lt;/property&gt;\n"
+"      &lt;property name=\"jndiName\"&gt;java:/hibernateDatasource&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"minSize\"&gt;0&lt;/property&gt;\n"
+"      &lt;property name=\"maxSize\"&gt;10&lt;/property&gt;\n"
+"      &lt;property name=\"blockingTimeout\"&gt;1000&lt;/property&gt;\n"
+"      &lt;property name=\"idleTimeout\"&gt;100000&lt;/property&gt;\n"
+"      &lt;property name=\"transactionManager\"&gt;&lt;inject bean="
+"\"TransactionManager\"/&gt;&lt;/property&gt;\n"
+"   &lt;/bean&gt;\n"
+"   &lt;bean name=\"bookingDatasource\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getDataSource\"&gt;\n"
+"         &lt;factory bean=\"bookingDatasourceFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingSessionFactoryFactory\" \n"
+"      class=\"org.jboss.seam.microcontainer.HibernateFactory\"/&gt;\n"
+"   &lt;bean name=\"bookingSessionFactory\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getSessionFactory\"&gt;\n"
+"         &lt;factory bean=\"bookingSessionFactoryFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"      &lt;depends&gt;bookingDatasource&lt;/depends&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"&lt;/deployment&gt;"
+msgstr ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"\n"
+"&lt;deployment xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"urn:jboss:bean-deployer bean-deployer_1_0."
+"xsd\"\n"
+"            xmlns=\"urn:jboss:bean-deployer\"&gt;\n"
+"\n"
+"   &lt;bean name=\"Naming\" class=\"org.jnp.server.SingletonNamingServer\"/"
+"&gt;\n"
+"\n"
+"   &lt;bean name=\"TransactionManagerFactory\" \n"
+"      class=\"org.jboss.seam.microcontainer.TransactionManagerFactory\"/"
+"&gt;\n"
+"   &lt;bean name=\"TransactionManager\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getTransactionManager\"&gt;\n"
+"         &lt;factory bean=\"TransactionManagerFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasourceFactory\" class=\"org.jboss.seam."
+"microcontainer.DataSourceFactory\"&gt;\n"
+"      &lt;property name=\"driverClass\"&gt;org.hsqldb.jdbcDriver&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"connectionUrl\"&gt;jdbc:hsqldb:.&lt;/property&gt;\n"
+"      &lt;property name=\"userName\"&gt;sa&lt;/property&gt;\n"
+"      &lt;property name=\"jndiName\"&gt;java:/hibernateDatasource&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"minSize\"&gt;0&lt;/property&gt;\n"
+"      &lt;property name=\"maxSize\"&gt;10&lt;/property&gt;\n"
+"      &lt;property name=\"blockingTimeout\"&gt;1000&lt;/property&gt;\n"
+"      &lt;property name=\"idleTimeout\"&gt;100000&lt;/property&gt;\n"
+"      &lt;property name=\"transactionManager\"&gt;&lt;inject bean="
+"\"TransactionManager\"/&gt;&lt;/property&gt;\n"
+"   &lt;/bean&gt;\n"
+"   &lt;bean name=\"bookingDatasource\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getDataSource\"&gt;\n"
+"         &lt;factory bean=\"bookingDatasourceFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingSessionFactoryFactory\" \n"
+"      class=\"org.jboss.seam.microcontainer.HibernateFactory\"/&gt;\n"
+"   &lt;bean name=\"bookingSessionFactory\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getSessionFactory\"&gt;\n"
+"         &lt;factory bean=\"bookingSessionFactoryFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"      &lt;depends&gt;bookingDatasource&lt;/depends&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"&lt;/deployment&gt;"
+
+#. Tag: para
+#: Configuration.xml:361
+#, no-c-format
+msgid "The WAR could have the following structure:"
+msgstr "对应的 WAR 具有下面的结构:"
+
+#. Tag: programlisting
+#: Configuration.xml:364
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            hibernate3.jar\n"
+"            ...\n"
+"            jboss-microcontainer.jar\n"
+"            jboss-jca.jar\n"
+"            ...\n"
+"            myfaces-api.jar\n"
+"            myfaces-impl.jar\n"
+"            mc-conf.jar/\n"
+"                jndi.properties\n"
+"                log4j.xml\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                    MANIFEST.MF\n"
+"                    jboss-beans.xml\n"
+"                seam.properties\n"
+"                hibernate.cfg.xml\n"
+"                log4j.xml\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            Register.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            hibernate3.jar\n"
+"            ...\n"
+"            jboss-microcontainer.jar\n"
+"            jboss-jca.jar\n"
+"            ...\n"
+"            myfaces-api.jar\n"
+"            myfaces-impl.jar\n"
+"            mc-conf.jar/\n"
+"                jndi.properties\n"
+"                log4j.xml\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                    MANIFEST.MF\n"
+"                    jboss-beans.xml\n"
+"                seam.properties\n"
+"                hibernate.cfg.xml\n"
+"                log4j.xml\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            Register.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+
+#. Tag: title
+#: Configuration.xml:365
+#, no-c-format
+msgid "Configuring jBPM in Seam"
+msgstr "在 Seam 里配置 jBPM "
+
+#. Tag: para
+#: Configuration.xml:366
+#, no-c-format
+msgid ""
+"Seam&#39;s jBPM integration is not installed by default, so you&#39;ll need "
+"to enable jBPM by installing a built-in component. You&#39;ll also need to "
+"explicitly list your process and pageflow definitions. In "
+"<literal>components.xml</literal>:"
+msgstr ""
+"Seam 对 jBPM 的集成缺省不会被安装,所以你将需要通过安装内置组件里启用 jBPM。"
+"你也将需要显性地列出过程和页面流程定义。在 <literal>components.xml</literal> "
+"里:"
+
+#. Tag: programlisting
+#: Configuration.xml:369
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:pageflow-definitions&gt;\n"
+"        &lt;value&gt;createDocument.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;editDocument.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;approveDocument.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:pageflow-definitions&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;documentLifecycle.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:pageflow-definitions&gt;\n"
+"        &lt;value&gt;createDocument.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;editDocument.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;approveDocument.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:pageflow-definitions&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;documentLifecycle.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+
+#. Tag: para
+#: Configuration.xml:370
+#, no-c-format
+msgid ""
+"No further special configuration is needed if you only have pageflows. If "
+"you do have business process definitions, you need to provide a jBPM "
+"configuration, and a Hibernate configuration for jBPM. The Seam DVD Store "
+"demo includes example <literal>jbpm.cfg.xml</literal> and <literal>hibernate."
+"cfg.xml</literal> files that will work with Seam:"
+msgstr ""
+"如果你只有页面流程,那不需要进一步的配置。如果你还有商业过程定义,那么你需要"
+"提供一个 jBPM 配置以及用于 jBPM 的 Hibernate 配置。Seam DVD Store 例程包括了"
+"用于 Seam 的 <literal>jbpm.cfg.xml</literal> 和 <literal>hibernate.cfg.xml</"
+"literal> 示例文件。"
+
+#. Tag: programlisting
+#: Configuration.xml:373
+#, no-c-format
+msgid ""
+"&lt;jbpm-configuration&gt;\n"
+"\n"
+"  &lt;jbpm-context&gt;\n"
+"    &lt;service name=\"persistence\"&gt;\n"
+"       &lt;factory&gt;\n"
+"          &lt;bean class=\"org.jbpm.persistence.db."
+"DbPersistenceServiceFactory\"&gt;\n"
+"             &lt;field name=\"isTransactionEnabled\"&gt;&lt;false/&gt;&lt;/"
+"field&gt;\n"
+"          &lt;/bean&gt;\n"
+"       &lt;/factory&gt;\n"
+"    &lt;/service&gt;\n"
+"    &lt;service name=\"message\" factory=\"org.jbpm.msg.db."
+"DbMessageServiceFactory\" /&gt;\n"
+"    &lt;service name=\"scheduler\" factory=\"org.jbpm.scheduler.db."
+"DbSchedulerServiceFactory\" /&gt;\n"
+"    &lt;service name=\"logging\" factory=\"org.jbpm.logging.db."
+"DbLoggingServiceFactory\" /&gt;\n"
+"    &lt;service name=\"authentication\" \n"
+"       factory=\"org.jbpm.security.authentication."
+"DefaultAuthenticationServiceFactory\" /&gt;\n"
+"  &lt;/jbpm-context&gt;\n"
+"\n"
+"&lt;/jbpm-configuration&gt;"
+msgstr ""
+"&lt;jbpm-configuration&gt;\n"
+"\n"
+"  &lt;jbpm-context&gt;\n"
+"    &lt;service name=\"persistence\"&gt;\n"
+"       &lt;factory&gt;\n"
+"          &lt;bean class=\"org.jbpm.persistence.db."
+"DbPersistenceServiceFactory\"&gt;\n"
+"             &lt;field name=\"isTransactionEnabled\"&gt;&lt;false/&gt;&lt;/"
+"field&gt;\n"
+"          &lt;/bean&gt;\n"
+"       &lt;/factory&gt;\n"
+"    &lt;/service&gt;\n"
+"    &lt;service name=\"message\" factory=\"org.jbpm.msg.db."
+"DbMessageServiceFactory\" /&gt;\n"
+"    &lt;service name=\"scheduler\" factory=\"org.jbpm.scheduler.db."
+"DbSchedulerServiceFactory\" /&gt;\n"
+"    &lt;service name=\"logging\" factory=\"org.jbpm.logging.db."
+"DbLoggingServiceFactory\" /&gt;\n"
+"    &lt;service name=\"authentication\" \n"
+"       factory=\"org.jbpm.security.authentication."
+"DefaultAuthenticationServiceFactory\" /&gt;\n"
+"  &lt;/jbpm-context&gt;\n"
+"\n"
+"&lt;/jbpm-configuration&gt;"
+
+#. Tag: para
+#: Configuration.xml:374
+#, no-c-format
+msgid ""
+"The most important thing to notice here is that jBPM transaction control is "
+"disabled. Seam or EJB3 should control the JTA transactions."
+msgstr "这里最重要的是禁用 jBPM 事务控制。Seam 或 EJB3 应该控制 JTA 事务。"
+
+#. Tag: para
+#: Configuration.xml:378
+#, no-c-format
+msgid ""
+"There is not yet any well-defined packaging format for jBPM configuration "
+"and process/pageflow definition files. In the Seam examples we&#39;ve "
+"decided to simply package all these files into the root of the EAR. In "
+"future, we will probably design some other standard packaging format. So the "
+"EAR looks something like this:"
+msgstr ""
+"jBPM 配置和过程/页面流程定义文件没有明确的打包格式。在 Seam 例程里,我们已经"
+"决定简单地把所有的这些文件置于 EAR 的根目录。将来我们可能会设计其他标准的打包"
+"格式。所以这个 EAR 的结构类似于:"
+
+#. Tag: programlisting
+#: Configuration.xml:381
+#, no-c-format
+msgid ""
+"my-application.ear/\n"
+"    jboss-seam.jar\n"
+"    el-api.jar\n"
+"    el-ri.jar\n"
+"    jbpm-3.1.jar\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"        application.xml\n"
+"    my-application.war/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"        WEB-INF/\n"
+"            web.xml\n"
+"            components.xml\n"
+"            faces-config.xml\n"
+"            lib/\n"
+"                jsf-facelets.jar\n"
+"                jboss-seam-ui.jar\n"
+"        login.jsp\n"
+"        register.jsp\n"
+"        ...\n"
+"    my-application.jar/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"            persistence.xml\n"
+"        seam.properties\n"
+"        org/\n"
+"            jboss/\n"
+"                myapplication/\n"
+"                    User.class\n"
+"                    Login.class\n"
+"                    LoginBean.class\n"
+"                    Register.class\n"
+"                    RegisterBean.class\n"
+"                    ...\n"
+"    jbpm.cfg.xml\n"
+"    hibernate.cfg.xml\n"
+"    createDocument.jpdl.xml\n"
+"    editDocument.jpdl.xml\n"
+"    approveDocument.jpdl.xml\n"
+"    documentLifecycle.jpdl.xml"
+msgstr ""
+"my-application.ear/\n"
+"    jboss-seam.jar\n"
+"    el-api.jar\n"
+"    el-ri.jar\n"
+"    jbpm-3.1.jar\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"        application.xml\n"
+"    my-application.war/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"        WEB-INF/\n"
+"            web.xml\n"
+"            components.xml\n"
+"            faces-config.xml\n"
+"            lib/\n"
+"                jsf-facelets.jar\n"
+"                jboss-seam-ui.jar\n"
+"        login.jsp\n"
+"        register.jsp\n"
+"        ...\n"
+"    my-application.jar/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"            persistence.xml\n"
+"        seam.properties\n"
+"        org/\n"
+"            jboss/\n"
+"                myapplication/\n"
+"                    User.class\n"
+"                    Login.class\n"
+"                    LoginBean.class\n"
+"                    Register.class\n"
+"                    RegisterBean.class\n"
+"                    ...\n"
+"    jbpm.cfg.xml\n"
+"    hibernate.cfg.xml\n"
+"    createDocument.jpdl.xml\n"
+"    editDocument.jpdl.xml\n"
+"    approveDocument.jpdl.xml\n"
+"    documentLifecycle.jpdl.xml"
+
+#. Tag: para
+#: Configuration.xml:382
+#, no-c-format
+msgid ""
+"Remember to add <literal>jbpm-3.1.jar</literal> to the manifest of your EJB-"
+"JAR and WAR."
+msgstr ""
+"请记得在 EJB-JAR 和 WAR 的 manifest 里添加 <literal>jbpm-3.1.jar</literal>。"
+
+#. Tag: title
+#: Configuration.xml:385
+#, no-c-format
+msgid "Configuring Seam in a Portal"
+msgstr "在 Portal 里配置 Seam "
+
+#. Tag: para
+#: Configuration.xml:386
+#, no-c-format
+msgid ""
+"To run a Seam application as a portlet, you&#39;ll need to provide certain "
+"portlet metadata (<literal>portlet.xml</literal>, etc) in addition to the "
+"usual Java EE metadata. See the <literal>examples/portal</literal> directory "
+"for an example of the booking demo preconfigured to run on JBoss Portal."
+msgstr ""
+"要把 Seam 的应用程序作为 portlet 运行,除了普通的 Java EE 元数据外,你将需要"
+"提供某些 portlet 元数据(如 <literal>portlet.xml</literal>)。请参考 "
+"<literal>examples/portal</literal> 目录里预配置在 JBoss Portal 里运行的 "
+"booking 示例程序。"
+
+#. Tag: para
+#: Configuration.xml:389
+#, no-c-format
+msgid ""
+"In addition, you&#39;ll need to use a portlet-specific phase listener "
+"instead of <literal>SeamPhaseListener</literal> or "
+"<literal>TransactionalSeamPhaseListener</literal>. The "
+"<literal>SeamPortletPhaseListener</literal> and "
+"<literal>TransactionalSeamPortletPhaseListener</literal> are adapted to the "
+"portlet lifecycle. I would like to offer my sincerest apologies for the name "
+"of that last class. I really couldn&#39;t think of anything better. Sorry."
+msgstr ""
+"此外,你将需要使用和 portlet 相关的 phase listener 来代替 "
+"<literal>SeamPhaseListener</literal> 或 "
+"<literal>TransactionalSeamPhaseListener</literal>。"
+"<literal>SeamPortletPhaseListener</literal> 和 "
+"<literal>TransactionalSeamPortletPhaseListener</literal> 都对应 portlet 的生"
+"命周期。对于后面这个类的名字我很抱歉,我实在想不出更好的名字了。"
+
+#. Tag: title
+#: Configuration.xml:392
+#, no-c-format
+msgid "Configuring SFSB and Session Timeouts in JBoss AS"
+msgstr "在 JBoss AS 里配置 SFSB 和 Session 超时时间"
+
+#. Tag: para
+#: Configuration.xml:393
+#, no-c-format
+msgid ""
+"It is very important that the timeout for Stateful Session Beans is set "
+"higher than the timeout for HTTP Sessions, otherwise SFSB&#39;s may time out "
+"before the user&#39;s HTTP session has ended. JBoss Application Server has a "
+"default session bean timeout of 30 minutes, which is configured in "
+"<literal>server/default/conf/standardjboss.xml</literal> (replace "
+"<emphasis>default</emphasis> with your own configuration)."
+msgstr ""
+"把 Stateful Session Bean 的超时时间设置为比 HTTP Session 更长非常重要,否则 "
+"SFSB 可能在用户的 HTTP session 结束前超时。JBoss 应用服务器的缺省超时时间是 "
+"30 分钟,这可以在 <literal>server/default/conf/standardjboss.xml</literal> 里"
+"配置(用你自己的配置替代<emphasis>default</emphasis> 元素)。"
+
+#. Tag: para
+#: Configuration.xml:396
+#, no-c-format
+msgid ""
+"The default SFSB timeout can be adjusted by modifying the value of "
+"<literal>max-bean-life</literal> in the "
+"<literal>LRUStatefulContextCachePolicy</literal> cache configuration:"
+msgstr ""
+"缺省的 SFSB 超时时间可以通过修改 <literal>LRUStatefulContextCachePolicy</"
+"literal> 缓存配置里的 <literal>max-bean-life</literal> 值来进行调整:"
+
+#. Tag: programlisting
+#: Configuration.xml:399
+#, no-c-format
+msgid ""
+"&lt;container-cache-conf&gt;\n"
+"        &lt;cache-policy&gt;org.jboss.ejb.plugins."
+"LRUStatefulContextCachePolicy&lt;/cache-policy&gt;\n"
+"        &lt;cache-policy-conf&gt;\n"
+"          &lt;min-capacity&gt;50&lt;/min-capacity&gt;\n"
+"          &lt;max-capacity&gt;1000000&lt;/max-capacity&gt;\n"
+"          &lt;remover-period&gt;1800&lt;/remover-period&gt;\n"
+"\n"
+"          &lt;!-- SFSB timeout in seconds; 1800 seconds == 30 minutes --"
+"&gt;\n"
+"          &lt;max-bean-life&gt;1800&lt;/max-bean-life&gt;  \n"
+"          \n"
+"          &lt;overager-period&gt;300&lt;/overager-period&gt;\n"
+"          &lt;max-bean-age&gt;600&lt;/max-bean-age&gt;\n"
+"          &lt;resizer-period&gt;400&lt;/resizer-period&gt;\n"
+"          &lt;max-cache-miss-period&gt;60&lt;/max-cache-miss-period&gt;\n"
+"          &lt;min-cache-miss-period&gt;1&lt;/min-cache-miss-period&gt;\n"
+"          &lt;cache-load-factor&gt;0.75&lt;/cache-load-factor&gt;\n"
+"        &lt;/cache-policy-conf&gt;\n"
+"      &lt;/container-cache-conf&gt;"
+msgstr ""
+"&lt;container-cache-conf&gt;\n"
+"        &lt;cache-policy&gt;org.jboss.ejb.plugins."
+"LRUStatefulContextCachePolicy&lt;/cache-policy&gt;\n"
+"        &lt;cache-policy-conf&gt;\n"
+"          &lt;min-capacity&gt;50&lt;/min-capacity&gt;\n"
+"          &lt;max-capacity&gt;1000000&lt;/max-capacity&gt;\n"
+"          &lt;remover-period&gt;1800&lt;/remover-period&gt;\n"
+"\n"
+"          &lt;!-- SFSB timeout in seconds; 1800 seconds == 30 minutes --"
+"&gt;\n"
+"          &lt;max-bean-life&gt;1800&lt;/max-bean-life&gt;  \n"
+"          \n"
+"          &lt;overager-period&gt;300&lt;/overager-period&gt;\n"
+"          &lt;max-bean-age&gt;600&lt;/max-bean-age&gt;\n"
+"          &lt;resizer-period&gt;400&lt;/resizer-period&gt;\n"
+"          &lt;max-cache-miss-period&gt;60&lt;/max-cache-miss-period&gt;\n"
+"          &lt;min-cache-miss-period&gt;1&lt;/min-cache-miss-period&gt;\n"
+"          &lt;cache-load-factor&gt;0.75&lt;/cache-load-factor&gt;\n"
+"        &lt;/cache-policy-conf&gt;\n"
+"      &lt;/container-cache-conf&gt;"
+
+#. Tag: para
+#: Configuration.xml:400
+#, no-c-format
+msgid ""
+"The default HTTP session timeout can be modified in <literal>server/default/"
+"deploy/jbossweb-tomcat55.sar/conf/web.xml</literal> for JBoss 4.0.x, or in "
+"<literal>server/default/deploy/jboss-web.deployer/conf/web.xml</literal> for "
+"JBoss 4.2.x. The following entry in this file controls the default session "
+"timeout for all web applications:"
+msgstr ""
+"对于 JBoss 4.0.x,缺省的 HTTP 会话超时时间可以在 <literal>server/default/"
+"deploy/jbossweb-tomcat55.sar/conf/web.xml</literal> 里进行修改;对于 JBoss "
+"4.2.x,在 <literal>server/default/deploy/jboss-web.deployer/conf/web.xml</"
+"literal> 里修改。这个文件里的下列条目控制所有 web 应用程序的缺省会话超时时"
+"间:"
+
+#. Tag: programlisting
+#: Configuration.xml:403
+#, no-c-format
+msgid ""
+"&lt;session-config&gt;\n"
+"      &lt;!-- HTTP Session timeout, in minutes --&gt;\n"
+"      &lt;session-timeout&gt;30&lt;/session-timeout&gt;\n"
+"   &lt;/session-config&gt;"
+msgstr ""
+"&lt;session-config&gt;\n"
+"      &lt;!-- HTTP Session timeout, in minutes --&gt;\n"
+"      &lt;session-timeout&gt;30&lt;/session-timeout&gt;\n"
+"   &lt;/session-config&gt;"
+
+#. Tag: para
+#: Configuration.xml:404
+#, no-c-format
+msgid ""
+"To override this value for your own application, simply include this entry "
+"in your application&#39;s own <literal>web.xml</literal>."
+msgstr ""
+"要在自己的应用程序里覆盖这个值,只要简单地在 <literal>web.xml</literal> 里包"
+"含这个条目。"

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Controls.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Controls.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Controls.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1435 @@
+# translation of Controls.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Xi HUANG <xhuang at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Controls\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2007-10-19 11:08+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Controls.xml:6
+#, no-c-format
+msgid "Seam JSF controls"
+msgstr "Seam 的 JSF 控件"
+
+#. Tag: para
+#: Controls.xml:7
+#, no-c-format
+msgid ""
+"Seam includes a number of JSF controls that are useful for working with "
+"Seam. These are intended to complement the built-in JSF controls, and "
+"controls from other third-party libraries. We recommend the Ajax4JSF and ADF "
+"faces (now Trinidad) tag libraries for use with Seam. We do not recommend "
+"the use of the Tomahawk tag library."
+msgstr ""
+"Seam 包含了可和 Seam 一起使用的大量 JSF 控件。这是对内置的 JSF 控件以及第三方"
+"控件的补充。我们推荐在 Seam 里使用 Ajax4JSF 和 ADF faces(现在是 Trinidad)标"
+"签库。我们不推荐使用 Tomahawk 标签库。"
+
+#. Tag: para
+#: Controls.xml:10
+#, no-c-format
+msgid ""
+"To use these controls, define the \"<literal>s</literal>\" namespace in your "
+"page as follows (facelets only):"
+msgstr ""
+"要使用这些控件,请在页面里定义如下的 \"<literal>s</literal>\" 命名空间:"
+
+#. Tag: programlisting
+#: Controls.xml:13
+#, no-c-format
+msgid ""
+"&lt;html xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"      xmlns:s=\"http://jboss.com/products/seam/taglib\"&gt;"
+msgstr ""
+"&lt;html xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"      xmlns:s=\"http://jboss.com/products/seam/taglib\"&gt;"
+
+#. Tag: para
+#: Controls.xml:14
+#, no-c-format
+msgid "The ui example demonstrates the use of a number of these tags."
+msgstr "ui 示例演示了对这些标签的使用。"
+
+#. Tag: title
+#: Controls.xml:18
+#, no-c-format
+msgid "Seam JSF Control Reference"
+msgstr "Seam 的 JSF 控件参考"
+
+#. Tag: literal
+#: Controls.xml:26
+#, no-c-format
+msgid "&lt;s:validate&gt;"
+msgstr "&lt;s:validate&gt;"
+
+#. Tag: emphasis
+#: Controls.xml:31 Controls.xml:56 Controls.xml:81 Controls.xml:121
+#: Controls.xml:146 Controls.xml:171 Controls.xml:203 Controls.xml:239
+#: Controls.xml:295 Controls.xml:396 Controls.xml:423 Controls.xml:477
+#: Controls.xml:504 Controls.xml:531 Controls.xml:558 Controls.xml:585
+#: Controls.xml:626 Controls.xml:687 Controls.xml:748 Controls.xml:901
+#: Controls.xml:937 Controls.xml:964 Controls.xml:991
+#, no-c-format
+msgid "Description"
+msgstr "描述"
+
+#. Tag: para
+#: Controls.xml:33
+#, no-c-format
+msgid ""
+"A non-visual control, validates a JSF input field against the bound property "
+"using Hibernate Validator."
+msgstr "非可视控件,使用 Hibernate Validator 检验 JSF 输入字段的边界属性。"
+
+#. Tag: emphasis
+#: Controls.xml:37 Controls.xml:62 Controls.xml:87 Controls.xml:127
+#: Controls.xml:152 Controls.xml:180 Controls.xml:209 Controls.xml:245
+#: Controls.xml:304 Controls.xml:402 Controls.xml:448 Controls.xml:483
+#: Controls.xml:510 Controls.xml:537 Controls.xml:564 Controls.xml:591
+#: Controls.xml:632 Controls.xml:693 Controls.xml:754 Controls.xml:907
+#: Controls.xml:943 Controls.xml:970 Controls.xml:1024
+#, no-c-format
+msgid "Attributes"
+msgstr "属性"
+
+#. Tag: para
+#: Controls.xml:39 Controls.xml:64 Controls.xml:129 Controls.xml:154
+#: Controls.xml:182 Controls.xml:404 Controls.xml:450 Controls.xml:485
+#: Controls.xml:512 Controls.xml:539 Controls.xml:566 Controls.xml:945
+#: Controls.xml:972
+#, no-c-format
+msgid "None."
+msgstr "æ— "
+
+#. Tag: emphasis
+#: Controls.xml:43 Controls.xml:68 Controls.xml:97 Controls.xml:133
+#: Controls.xml:158 Controls.xml:190 Controls.xml:224 Controls.xml:280
+#: Controls.xml:381 Controls.xml:408 Controls.xml:454 Controls.xml:489
+#: Controls.xml:516 Controls.xml:543 Controls.xml:570 Controls.xml:611
+#: Controls.xml:672 Controls.xml:733 Controls.xml:779 Controls.xml:922
+#: Controls.xml:949 Controls.xml:976 Controls.xml:1059
+#, no-c-format
+msgid "Usage"
+msgstr "用法"
+
+#. Tag: programlisting
+#: Controls.xml:45
+#, no-c-format
+msgid ""
+"&lt;h:inputText id=\"userName\" required=\"true\" value=\"#{customer."
+"userName}\"&gt;\n"
+"  &lt;s:validate /&gt;\n"
+"&lt;/h:inputText&gt;\n"
+"&lt;h:message for=\"userName\" styleClass=\"error\" /&gt;"
+msgstr ""
+"&lt;h:inputText id=\"userName\" required=\"true\" value=\"#{customer."
+"userName}\"&gt;\n"
+"  &lt;s:validate /&gt;\n"
+"&lt;/h:inputText&gt;\n"
+"&lt;h:message for=\"userName\" styleClass=\"error\" /&gt;"
+
+#. Tag: literal
+#: Controls.xml:51
+#, no-c-format
+msgid "&lt;s:validateAll&gt;"
+msgstr "&lt;s:validateAll&gt;"
+
+#. Tag: para
+#: Controls.xml:58
+#, no-c-format
+msgid ""
+"A non-visual control, validates all child JSF input fields against their "
+"bound properties using Hibernate Validator."
+msgstr ""
+"非可视控件,使用 Hibernate Validator 检验所有子 JSF 输入字段的边界属性。"
+
+#. Tag: programlisting
+#: Controls.xml:70
+#, no-c-format
+msgid ""
+"&lt;s:validateAll&gt;\n"
+"  &lt;div class=\"entry\"&gt;\n"
+"    &lt;h:outputLabel for=\"username\"&gt;Username:&lt;/h:outputLabel&gt;\n"
+"    &lt;h:inputText id=\"username\" value=\"#{user.username}\" required="
+"\"true\"/&gt;\n"
+"    &lt;h:message for=\"username\" styleClass=\"error\" /&gt;\n"
+"  &lt;/div&gt;\n"
+"  &lt;div class=\"entry\"&gt;\n"
+"    &lt;h:outputLabel for=\"password\"&gt;Password:&lt;/h:outputLabel&gt;\n"
+"    &lt;h:inputSecret id=\"password\" value=\"#{user.password}\" required="
+"\"true\"/&gt;\n"
+"    &lt;h:message for=\"password\" styleClass=\"error\" /&gt;\n"
+"  &lt;/div&gt;\n"
+"  &lt;div class=\"entry\"&gt;\n"
+"    &lt;h:outputLabel for=\"verify\"&gt;Verify Password:&lt;/h:"
+"outputLabel&gt;\n"
+"    &lt;h:inputSecret id=\"verify\" value=\"#{register.verify}\" required="
+"\"true\"/&gt;\n"
+"    &lt;h:message for=\"verify\" styleClass=\"error\" /&gt;\n"
+"  &lt;/div&gt;\n"
+"&lt;/s:validateAll&gt;"
+msgstr ""
+"&lt;s:validateAll&gt;\n"
+"  &lt;div class=\"entry\"&gt;\n"
+"    &lt;h:outputLabel for=\"username\"&gt;Username:&lt;/h:outputLabel&gt;\n"
+"    &lt;h:inputText id=\"username\" value=\"#{user.username}\" required="
+"\"true\"/&gt;\n"
+"    &lt;h:message for=\"username\" styleClass=\"error\" /&gt;\n"
+"  &lt;/div&gt;\n"
+"  &lt;div class=\"entry\"&gt;\n"
+"    &lt;h:outputLabel for=\"password\"&gt;Password:&lt;/h:outputLabel&gt;\n"
+"    &lt;h:inputSecret id=\"password\" value=\"#{user.password}\" required="
+"\"true\"/&gt;\n"
+"    &lt;h:message for=\"password\" styleClass=\"error\" /&gt;\n"
+"  &lt;/div&gt;\n"
+"  &lt;div class=\"entry\"&gt;\n"
+"    &lt;h:outputLabel for=\"verify\"&gt;Verify Password:&lt;/h:"
+"outputLabel&gt;\n"
+"    &lt;h:inputSecret id=\"verify\" value=\"#{register.verify}\" required="
+"\"true\"/&gt;\n"
+"    &lt;h:message for=\"verify\" styleClass=\"error\" /&gt;\n"
+"  &lt;/div&gt;\n"
+"&lt;/s:validateAll&gt;"
+
+#. Tag: literal
+#: Controls.xml:76
+#, no-c-format
+msgid "&lt;s:formattedText&gt;"
+msgstr "&lt;s:formattedText&gt;"
+
+#. Tag: para
+#: Controls.xml:83
+#, no-c-format
+msgid ""
+"Outputs <emphasis>Seam Text</emphasis>, a rich text markup useful for blogs, "
+"wikis and other applications that might use rich text. See the Seam Text "
+"chapter for full usage."
+msgstr ""
+"输出 <emphasis>Seam Text</emphasis> 的富文本标记,用于 blogs、wiki 和其他可能"
+"使用富文本的应用程序。详细用法请参考 Seam Text 章节。"
+
+#. Tag: para
+#: Controls.xml:91
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; an EL expression specifying the rich text "
+"markup to render."
+msgstr "<literal>value</literal> &mdash; 指定要显示的富文本标记的 EL 表达式。"
+
+#. Tag: programlisting
+#: Controls.xml:99
+#, no-c-format
+msgid "&lt;s:formattedText value=\"#{blog.text}\"/&gt;"
+msgstr "&lt;s:formattedText value=\"#{blog.text}\"/&gt;"
+
+#. Tag: emphasis
+#: Controls.xml:101 Controls.xml:785
+#, no-c-format
+msgid "Example"
+msgstr "示例"
+
+#. Tag: literal
+#: Controls.xml:116
+#, no-c-format
+msgid "&lt;s:convertDateTime&gt;"
+msgstr "&lt;s:convertDateTime&gt;"
+
+#. Tag: para
+#: Controls.xml:123
+#, no-c-format
+msgid "Perform date or time conversions in the Seam timezone."
+msgstr "在 Seam 时区里执行日期或时间转换。"
+
+#. Tag: literal
+#: Controls.xml:141
+#, no-c-format
+msgid "&lt;s:convertEnum&gt;"
+msgstr "&lt;s:convertEnum&gt;"
+
+#. Tag: para
+#: Controls.xml:148
+#, no-c-format
+msgid ""
+"Assigns an enum converter to the current component. This is primarily useful "
+"for radio button and dropdown controls."
+msgstr "为当前组件分配一个枚举转换器。这主要用于单选按钮和下拉控件。"
+
+#. Tag: literal
+#: Controls.xml:166
+#, no-c-format
+msgid "&lt;s:convertEntity&gt;"
+msgstr "&lt;s:convertEntity&gt;"
+
+#. Tag: para
+#: Controls.xml:173
+#, no-c-format
+msgid ""
+"Assigns an entity converter to the current component. This is primarily "
+"useful for radio button and dropdown controls."
+msgstr "为当前组件分配一个实体转换器。这主要用于单选按钮和下拉控件。"
+
+#. Tag: para
+#: Controls.xml:176
+#, no-c-format
+msgid ""
+"The converter works with any entity which has an <literal>@Id</literal> "
+"annotation - either simple or composite. If your <emphasis>Managed "
+"Persistence Context</emphasis> isn&#39;t called <literal>entityManager</"
+"literal>, then you need to set it in components.xml:"
+msgstr ""
+"这个转换器用于任何带有 <literal>@Id</literal> 注解的实体 - 简单和组合的都可"
+"以。如果你的 <emphasis>Managed Persistence Context</emphasis> 不是 "
+"<literal>entityManager</literal>,你就需要在 components.xml 里进行设置:"
+
+#. Tag: emphasis
+#: Controls.xml:186 Controls.xml:1002
+#, no-c-format
+msgid "Configuration"
+msgstr "配置"
+
+#. Tag: programlisting
+#: Controls.xml:188
+#, no-c-format
+msgid ""
+"&lt;component name=\"org.jboss.seam.ui.entityConverter\"&gt;\n"
+"      &lt;property name=\"entityManager\"&gt;#{em}&lt;/property&gt;\n"
+"  &lt;/component&gt;"
+msgstr ""
+"&lt;component name=\"org.jboss.seam.ui.entityConverter\"&gt;\n"
+"      &lt;property name=\"entityManager\"&gt;#{em}&lt;/property&gt;\n"
+"  &lt;/component&gt;"
+
+#. Tag: programlisting
+#: Controls.xml:192
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{person.continent}\" required=\"true\"&gt;\n"
+"    &lt;s:selectItems value=\"#{continents.resultList}\" var=\"continent\" "
+"label=\"#{continent.name}\" noSelectionLabel=\"Please Select...\"/&gt;\n"
+"    &lt;s:convertEntity /&gt;\n"
+"&lt;/h:selectOneMenu&gt;"
+msgstr ""
+"&lt;h:selectOneMenu value=\"#{person.continent}\" required=\"true\"&gt;\n"
+"    &lt;s:selectItems value=\"#{continents.resultList}\" var=\"continent\" "
+"label=\"#{continent.name}\" noSelectionLabel=\"Please Select...\"/&gt;\n"
+"    &lt;s:convertEntity /&gt;\n"
+"&lt;/h:selectOneMenu&gt;"
+
+#. Tag: literal
+#: Controls.xml:198
+#, no-c-format
+msgid "&lt;s:enumItem&gt;"
+msgstr "&lt;s:enumItem&gt;"
+
+#. Tag: para
+#: Controls.xml:205
+#, no-c-format
+msgid "Creates a <literal>SelectItem</literal> from an enum value."
+msgstr "从枚举值创建一个 <literal>SelectItem</literal>。"
+
+#. Tag: para
+#: Controls.xml:213
+#, no-c-format
+msgid ""
+"<literal>enumValue</literal> &mdash; the string representation of the enum "
+"value."
+msgstr "<literal>enumValue</literal> &mdash; 代表枚举值的字符串。"
+
+#. Tag: para
+#: Controls.xml:218
+#, no-c-format
+msgid ""
+"<literal>label</literal> &mdash; the label to be used when rendering the "
+"<literal>SelectItem</literal>."
+msgstr ""
+"<literal>label</literal> &mdash; 当显示 <literal>SelectItem</literal> 时使用"
+"的标签。"
+
+#. Tag: literal
+#: Controls.xml:234
+#, no-c-format
+msgid "&lt;s:selectItems&gt;"
+msgstr "&lt;s:selectItems&gt;"
+
+#. Tag: para
+#: Controls.xml:241
+#, no-c-format
+msgid ""
+"Creates a <literal>List&lt;SelectItem&gt;</literal> from a List, Set, "
+"DataModel or Array."
+msgstr ""
+"从 List、Set、DataModel 或 Array 创建一个 <literal>List&lt;SelectItem&gt;</"
+"literal>。"
+
+#. Tag: para
+#: Controls.xml:249
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; an EL expression specifying the data that "
+"backs the <literal>List&lt;SelectItem&gt;</literal>"
+msgstr ""
+"<literal>value</literal> &mdash; 指定支持 <literal>List&lt;SelectItem&gt;</"
+"literal> 的数据的 EL 表达式。"
+
+#. Tag: para
+#: Controls.xml:254
+#, no-c-format
+msgid ""
+"<literal>var</literal> &mdash; defines the name of the local variable that "
+"holds the current object during iteration"
+msgstr ""
+"<literal>var</literal> &mdash; 定义在迭代时保存当前对象的本地变量的名称。"
+
+#. Tag: para
+#: Controls.xml:259
+#, no-c-format
+msgid ""
+"<literal>label</literal> &mdash; the label to be used when rendering the "
+"<literal>SelectItem</literal>. Can reference the <literal>var</literal> "
+"variable"
+msgstr ""
+"<literal>label</literal> &mdash; 当显示 <literal>SelectItem</literal> 时使用"
+"的标签。它可以引用 <literal>var</literal> 变量。"
+
+#. Tag: para
+#: Controls.xml:264
+#, no-c-format
+msgid ""
+"<literal>disabled</literal> &mdash; if true the <literal>SelectItem</"
+"literal> will be rendered disabled. Can reference the <literal>var</literal> "
+"variable"
+msgstr ""
+"<literal>disabled</literal> &mdash; 如果为 true,<literal>SelectItem</"
+"literal> 将被禁止显示。它可以引用 <literal>var</literal> 变量。"
+
+#. Tag: para
+#: Controls.xml:269
+#, no-c-format
+msgid ""
+"<literal>noSelectionLabel</literal> &mdash; specifies the (optional) label "
+"to place at the top of list (if <literal>required=\"true\"</literal> is also "
+"specified then selecting this value will cause a validation error)"
+msgstr ""
+"<literal>noSelectionLabel</literal> &mdash; 指定置于列表顶部(可选)的标签"
+"(如果也指定了  <literal>required=\"true\"</literal>,选定这个值将导致检验错"
+"误 )。"
+
+#. Tag: para
+#: Controls.xml:274
+#, no-c-format
+msgid ""
+"<literal>hideNoSelectionLabel</literal> &mdash; if true, the "
+"<literal>noSelectionLabel</literal> will be hidden when a value is selected"
+msgstr ""
+"<literal>hideNoSelectionLabel</literal> &mdash; 如果为 true,当某个值被选定"
+"时,<literal>noSelectionLabel</literal> 将被隐藏。"
+
+#. Tag: programlisting
+#: Controls.xml:283
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{person.age}\"  converter=\"#{converters."
+"ageConverter}\"&gt;\n"
+"    &lt;s:selectItems value=\"#{ages}\" var=\"age\" label=\"#{age}\" /&gt;\n"
+"&lt;/h:selectOneMenu&gt;"
+msgstr ""
+"&lt;h:selectOneMenu value=\"#{person.age}\"  converter=\"#{converters."
+"ageConverter}\"&gt;\n"
+"    &lt;s:selectItems value=\"#{ages}\" var=\"age\" label=\"#{age}\" /&gt;\n"
+"&lt;/h:selectOneMenu&gt;"
+
+#. Tag: literal
+#: Controls.xml:290
+#, no-c-format
+msgid "&lt;s:graphicImage&gt;"
+msgstr "&lt;s:graphicImage&gt;"
+
+#. Tag: para
+#: Controls.xml:297
+#, no-c-format
+msgid ""
+"An extended <literal>&lt;h:graphicImage&gt;</literal> that allows the image "
+"to be created in a Seam Component; further transforms can be applied to the "
+"image. <emphasis>Facelets only.</emphasis>"
+msgstr ""
+"允许在 Seam 组件里创建图像的扩展的 <literal>&lt;h:graphicImage&gt;</"
+"literal>;它可以在图像上应用进一步的转换。<emphasis>仅用于 Facelets。</"
+"emphasis>"
+
+#. Tag: para
+#: Controls.xml:300
+#, no-c-format
+msgid ""
+"All attributes for <literal>&lt;h:graphicImage&gt;</literal> are supported, "
+"as well as:"
+msgstr "支持 <literal>&lt;h:graphicImage&gt;</literal> 的所有属性,以及:"
+
+#. Tag: para
+#: Controls.xml:308
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; image to display. Can be a path "
+"<literal>String</literal> (loaded from the classpath), a <literal>byte[]</"
+"literal>, a <literal>java.io.File</literal>, a <literal>java.io.InputStream</"
+"literal> or a <literal>java.net.URL</literal>. Currently supported image "
+"formats are <literal>image/png</literal>, <literal>image/jpeg</literal> and "
+"<literal>image/gif</literal>."
+msgstr ""
+"<literal>value</literal> &mdash; 显示的图像。它可以是一个路径<literal>字符串"
+"</literal>(从 classpath 加载)、<literal>byte[]</literal>、<literal>java.io."
+"File</literal>、<literal>java.io.InputStream</literal> 或者 <literal>java."
+"net.URL</literal>。目前支持的图像格式是 <literal>image/png</literal>、"
+"<literal>image/jpeg</literal> 和 <literal>image/gif</literal>。"
+
+#. Tag: para
+#: Controls.xml:313
+#, no-c-format
+msgid ""
+"<literal>fileName</literal> &mdash; if not specified the served image will "
+"have a generated file name. If you want to name your file, you should "
+"specify it here. This name should be unique"
+msgstr ""
+"<literal>fileName</literal> &mdash; 如果没有指定,图像将使用生成的文件名。如"
+"果你想自己来命名,你应该在这里进行指定。这个名字应该是唯一的。"
+
+#. Tag: emphasis
+#: Controls.xml:319
+#, no-c-format
+msgid "Transformations"
+msgstr "转换"
+
+#. Tag: para
+#: Controls.xml:321
+#, no-c-format
+msgid ""
+"To apply a transform to the image, you would nest a tag specifying the "
+"transform to apply. Seam currently supports these transforms:"
+msgstr "要对图像进行转换,你可以用标签来指定。Seam 目前支持这些转换:"
+
+#. Tag: literal
+#: Controls.xml:326
+#, no-c-format
+msgid "&lt;s:transformImageSize&gt;"
+msgstr "&lt;s:transformImageSize&gt;"
+
+#. Tag: para
+#: Controls.xml:330
+#, no-c-format
+msgid "<literal>width</literal> &mdash; new width of the image"
+msgstr "<literal>width</literal> &mdash; 图像的新宽度"
+
+#. Tag: para
+#: Controls.xml:335
+#, no-c-format
+msgid "<literal>height</literal> &mdash; new height of the image"
+msgstr "<literal>height</literal> &mdash; 图像的新高度"
+
+#. Tag: para
+#: Controls.xml:340
+#, no-c-format
+msgid ""
+"<literal>maintainRatio</literal> &mdash; if <literal>true</literal>, and "
+"<emphasis>one</emphasis> of <literal>width</literal>/<literal>height</"
+"literal> are specified, the image will be resized with the dimension not "
+"specified being calculated to maintain the aspect ratio."
+msgstr ""
+"<literal>maintainRatio</literal> &mdash; 如果为 <literal>true</literal>,且"
+"<literal>width</literal>/<literal>height</literal> <emphasis>都没有</"
+"emphasis>指定, 图像将按照计算的尺寸调整大小来维持高宽比。"
+
+#. Tag: para
+#: Controls.xml:345
+#, no-c-format
+msgid "<literal>factor</literal> &mdash; scale the image by the given factor"
+msgstr "<literal>factor</literal> &mdash; 用给定的系数来测量图像"
+
+#. Tag: literal
+#: Controls.xml:353
+#, no-c-format
+msgid "&lt;s:transformImageBlur&gt;"
+msgstr "&lt;s:transformImageBlur&gt;"
+
+#. Tag: para
+#: Controls.xml:357
+#, no-c-format
+msgid ""
+"<literal>radius</literal> &mdash; perform a convolution blur with the given "
+"radius"
+msgstr "<literal>radius</literal> &mdash; 用给定的半径执行 convolution blur"
+
+#. Tag: literal
+#: Controls.xml:365
+#, no-c-format
+msgid "&lt;s:transformImageType&gt;"
+msgstr "&lt;s:transformImageType&gt;"
+
+#. Tag: para
+#: Controls.xml:369
+#, no-c-format
+msgid ""
+"<literal>contentType</literal> &mdash; alter the type of the image to either "
+"<literal>image/jpeg</literal> or <literal>image/png</literal>"
+msgstr ""
+"<literal>contentType</literal> &mdash; 把图像类型修改为 <literal>image/jpeg</"
+"literal> 或 <literal>image/png</literal>"
+
+#. Tag: para
+#: Controls.xml:377
+#, no-c-format
+msgid ""
+"It&#39;s easy to create your own transform - create a <literal>UIComponent</"
+"literal> which <literal>implements</literal><literal>org.jboss.seam.ui."
+"graphicImage.ImageTransform</literal>. Inside the <literal>applyTransform()</"
+"literal>method use <literal>image.getBufferedImage()</literal> to get the "
+"original image and <literal>image.setBufferedImage()</literal> to set your "
+"transformed image. Transforms are applied in the order specified in the view."
+msgstr ""
+"创建你自己的转换很容易 - 只要创建一个<literal>实现</literal> <literal>org."
+"jboss.seam.ui.graphicImage.ImageTransform</literal> çš„ <literal>UIComponent</"
+"literal>。在这个实现里,<literal>applyTransform()</literal> 方法使用 "
+"<literal>image.getBufferedImage()</literal> 来获取原始图像并用<literal>image."
+"setBufferedImage()</literal> 来设置转换的图像。转换根据视图里指定的顺序进行。"
+
+#. Tag: literal
+#: Controls.xml:391
+#, no-c-format
+msgid "&lt;s:decorate&gt;"
+msgstr "&lt;s:decorate&gt;"
+
+#. Tag: para
+#: Controls.xml:398
+#, no-c-format
+msgid ""
+"\"Decorate\" a JSF input field when validation fails or when "
+"<literal>required=\"true\"</literal> is set."
+msgstr ""
+"当检验失败或设置了 <literal>required=\"true\"</literal> 时,“装饰”JSF 输入字"
+"段。"
+
+#. Tag: literal
+#: Controls.xml:418
+#, no-c-format
+msgid "&lt;s:layoutForm&gt;"
+msgstr "&lt;s:layoutForm&gt;"
+
+#. Tag: para
+#: Controls.xml:425
+#, no-c-format
+msgid ""
+"A layout component for producing a \"standard\" form layout. Each child "
+"component will be treated as a row, and if the child is a <literal>&lt;s:"
+"decorate&gt;</literal>, additional formatting will be applied:"
+msgstr ""
+"产生“标准”表单格式的格式组件。每个子组件都作为一行来看待,如果子组件是 "
+"<literal>&lt;s:decorate&gt;</literal>,将应用其他的格式:"
+
+#. Tag: para
+#: Controls.xml:428
+#, no-c-format
+msgid ""
+"Label &mdash; if a <literal>label</literal> facet is on the <literal>&lt;s:"
+"decorate&gt;</literal> then it&#39;s contents will be used as the label for "
+"this field. The labels are rendered right-aligned in a column"
+msgstr ""
+"Label &mdash; 如果 <literal>&lt;s:decorate&gt;</literal> 里含有 "
+"<literal>label</literal> facet,它的内容将用作这个字段的标签。标签在一列里靠"
+"右显示。"
+
+#. Tag: para
+#: Controls.xml:431
+#, no-c-format
+msgid ""
+"Some further decoration facets are supported - <literal>beforeLabel</"
+"literal>, <literal>afterLabel</literal>, <literal>aroundLabel</literal>, "
+"<literal>beforeInvalidLabel</literal>, <literal>afterInvalidLabel</literal> "
+"and <literal>aroundInvalidLabel</literal>."
+msgstr ""
+"另外一些装饰 facets 也被支持 - <literal>beforeLabel</literal>、"
+"<literal>afterLabel</literal>、<literal>aroundLabel</literal>、"
+"<literal>beforeInvalidLabel</literal>、<literal>afterInvalidLabel</literal> "
+"和 <literal>aroundInvalidLabel</literal>。"
+
+#. Tag: para
+#: Controls.xml:436
+#, no-c-format
+msgid ""
+"Other text &mdash; if a <literal>belowLabel</literal> facet or/and a "
+"<literal>belowField</literal> facet are present on <literal>&lt;s:"
+"decorate&gt;</literal> then it&#39;s contents will be placed below the label "
+"or the field"
+msgstr ""
+"其他文本 &mdash; 如果  <literal>&lt;s:decorate&gt;</literal> 里有 "
+"<literal>belowLabel</literal> facet 和/或 <literal>belowField</literal> "
+"facet,它的内容将置于该标签或字段的下方。"
+
+#. Tag: para
+#: Controls.xml:441
+#, no-c-format
+msgid ""
+"Required &mdash; if <literal>required=\"true\"</literal> is set on the "
+"field, then the <literal>aroundRequiredField</literal>, "
+"<literal>beforeRequiredField</literal>, <literal>afterRequiredField</"
+"literal>, <literal>aroundRequiredLabel</literal>, "
+"<literal>beforeRequiredLabel</literal> and <literal>afterRequiredLabel</"
+"literal> will be applied."
+msgstr ""
+"Required &mdash; 如果该字段设置了 <literal>required=\"true\"</literal>、"
+"<literal>aroundRequiredField</literal>、<literal>beforeRequiredField</"
+"literal>、<literal>afterRequiredField</literal>、"
+"<literal>aroundRequiredLabel</literal>、<literal>beforeRequiredLabel</"
+"literal> 和 <literal>afterRequiredLabel</literal> 将被应用。"
+
+#. Tag: programlisting
+#: Controls.xml:457
+#, no-c-format
+msgid ""
+"&lt;s:layoutForm&gt;\n"
+"   &lt;f:facet name=\"aroundInvalidField\"&gt;\n"
+"       &lt;s:span styleClass=\"error\"/&gt;\n"
+"   &lt;/f:facet&gt;\n"
+"   &lt;f:facet name=\"afterInvalidField\"&gt;\n"
+"       &lt;s:message /&gt;\n"
+"   &lt;/f:facet&gt;\n"
+"   &lt;f:facet name=\"beforeRequiredLabel\"&gt;\n"
+"           &lt;s:span&gt;&lowast;&lt;/s:span&gt;\n"
+"   &lt;/f:facet&gt;\n"
+"   &lt;f:facet name=\"aroundLabel\"&gt;\n"
+"           &lt;s:span style=\"text-align:right;\" /&gt;\n"
+"   &lt;/f:facet&gt;\n"
+"   &lt;f:facet name=\"aroundInvalidLabel\"&gt;\n"
+"           &lt;s:span style=\"text-align:right;\" styleClass=\"error\" /"
+"&gt;\n"
+"   &lt;/f:facet&gt;\n"
+"   &lt;s:decorate&gt;\n"
+"        &lt;f:facet name=\"label\"&gt;\n"
+"                    &lt;h:outputText value=\"Name\" /&gt;\n"
+"        &lt;/f:facet&gt;\n"
+"        &lt;h:inputText value=\"#{person.name}\" required=\"true\"/&gt;\n"
+"        &lt;f:facet name=\"belowField\"&gt;\n"
+"            &lt;h:outputText styleClass=\"help\" \n"
+"               value=\"Enter your name as it appears \n"
+"                  on your passport\" /&gt;\n"
+"        &lt;/f:facet&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"&lt;/s:layoutForm&gt;"
+msgstr ""
+"&lt;s:layoutForm&gt;\n"
+"   &lt;f:facet name=\"aroundInvalidField\"&gt;\n"
+"       &lt;s:span styleClass=\"error\"/&gt;\n"
+"   &lt;/f:facet&gt;\n"
+"   &lt;f:facet name=\"afterInvalidField\"&gt;\n"
+"       &lt;s:message /&gt;\n"
+"   &lt;/f:facet&gt;\n"
+"   &lt;f:facet name=\"beforeRequiredLabel\"&gt;\n"
+"           &lt;s:span&gt;&lowast;&lt;/s:span&gt;\n"
+"   &lt;/f:facet&gt;\n"
+"   &lt;f:facet name=\"aroundLabel\"&gt;\n"
+"           &lt;s:span style=\"text-align:right;\" /&gt;\n"
+"   &lt;/f:facet&gt;\n"
+"   &lt;f:facet name=\"aroundInvalidLabel\"&gt;\n"
+"           &lt;s:span style=\"text-align:right;\" styleClass=\"error\" /"
+"&gt;\n"
+"   &lt;/f:facet&gt;\n"
+"   &lt;s:decorate&gt;\n"
+"        &lt;f:facet name=\"label\"&gt;\n"
+"                    &lt;h:outputText value=\"Name\" /&gt;\n"
+"        &lt;/f:facet&gt;\n"
+"        &lt;h:inputText value=\"#{person.name}\" required=\"true\"/&gt;\n"
+"        &lt;f:facet name=\"belowField\"&gt;\n"
+"            &lt;h:outputText styleClass=\"help\" \n"
+"               value=\"Enter your name as it appears \n"
+"                  on your passport\" /&gt;\n"
+"        &lt;/f:facet&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"&lt;/s:layoutForm&gt;"
+
+#. Tag: literal
+#: Controls.xml:472
+#, no-c-format
+msgid "&lt;s:message&gt;"
+msgstr "&lt;s:message&gt;"
+
+#. Tag: para
+#: Controls.xml:479
+#, no-c-format
+msgid "\"Decorate\" a JSF input field with the validation error message."
+msgstr "用检验错误信息“装饰”JSF 输入字段。"
+
+#. Tag: literal
+#: Controls.xml:499
+#, no-c-format
+msgid "&lt;s:span&gt;"
+msgstr "&lt;s:span&gt;"
+
+#. Tag: para
+#: Controls.xml:506
+#, no-c-format
+msgid "Render a HTML <literal>&lt;span&gt;</literal>."
+msgstr "显示 HTML <literal>&lt;span&gt;</literal>。"
+
+#. Tag: literal
+#: Controls.xml:526
+#, no-c-format
+msgid "&lt;s:div&gt;"
+msgstr "&lt;s:div&gt;"
+
+#. Tag: para
+#: Controls.xml:533
+#, no-c-format
+msgid "Render a HTML <literal>&lt;div&gt;</literal>."
+msgstr "显示 HTML <literal>&lt;div&gt;</literal>。"
+
+#. Tag: literal
+#: Controls.xml:553
+#, no-c-format
+msgid "&lt;s:fragment&gt;"
+msgstr "&lt;s:fragment&gt;"
+
+#. Tag: para
+#: Controls.xml:560
+#, no-c-format
+msgid ""
+"A non-rendering component useful for enabling/disabling rendering of it&#39;"
+"s children."
+msgstr "用于启用/禁止其子组件显示的 non-rendering 组件。"
+
+#. Tag: literal
+#: Controls.xml:580
+#, no-c-format
+msgid "&lt;s:cache&gt;"
+msgstr "&lt;s:cache&gt;"
+
+#. Tag: para
+#: Controls.xml:587
+#, no-c-format
+msgid ""
+"Cache the rendered page fragment using JBoss Cache. Note that <literal>&lt;s:"
+"cache&gt;</literal> actually uses the instance of JBoss Cache managed by the "
+"built-in <literal>pojoCache</literal> component."
+msgstr ""
+"用 JBoss Cache 缓存显示的页面片段。注意,<literal>&lt;s:cache&gt;</literal> "
+"实际上使用了内置 <literal>pojoCache</literal> 组件管理的 JBoss Cache 实例。"
+
+#. Tag: para
+#: Controls.xml:595
+#, no-c-format
+msgid ""
+"<literal>key</literal> &mdash; the key to cache rendered content, often a "
+"value expression. For example, if we were caching a page fragment that "
+"displays a document, we might use <literal>key=\"Document-#{document.id}\"</"
+"literal>."
+msgstr ""
+"<literal>key</literal> &mdash; 缓存显示内容的键值,通常是一个值表达式。例如,"
+"如果我们缓存显示某个文档的页面片段,我们可以使用 <literal>key=\"Document-#"
+"{document.id}\"</literal>。"
+
+#. Tag: para
+#: Controls.xml:600
+#, no-c-format
+msgid ""
+"<literal>enabled</literal> &mdash; a value expression that determines if the "
+"cache should be used."
+msgstr ""
+"<literal>enabled</literal> &mdash; 决定这个缓存是否应该被使用的值表达式。"
+
+#. Tag: para
+#: Controls.xml:605
+#, no-c-format
+msgid ""
+"<literal>region</literal> &mdash; a JBoss Cache node to use (different nodes "
+"can have different expiry policies)."
+msgstr ""
+"<literal>region</literal> &mdash; 使用的 JBoss Cache 节点(不同的节点具有不同"
+"的过期策略)。"
+
+#. Tag: literal
+#: Controls.xml:621
+#, no-c-format
+msgid "&lt;s:link&gt;"
+msgstr "&lt;s:link&gt;"
+
+#. Tag: para
+#: Controls.xml:628
+#, no-c-format
+msgid ""
+"A link that supports invocation of an action with control over conversation "
+"propagation. <emphasis>Does not submit the form.</emphasis>"
+msgstr ""
+"支持带有 conversation 传递控制的动作调用的链接。<emphasis>不要提交这个表单。"
+"</emphasis>"
+
+#. Tag: para
+#: Controls.xml:636 Controls.xml:697
+#, no-c-format
+msgid "<literal>value</literal> &mdash; the label."
+msgstr "<literal>value</literal> &mdash; 标签。"
+
+#. Tag: para
+#: Controls.xml:641 Controls.xml:702
+#, no-c-format
+msgid ""
+"<literal>action</literal> &mdash; a method binding that specified the action "
+"listener."
+msgstr "<literal>action</literal> &mdash; 指定 action listener 方法绑定。"
+
+#. Tag: para
+#: Controls.xml:646 Controls.xml:707
+#, no-c-format
+msgid "<literal>view</literal> &mdash; the JSF view id to link to."
+msgstr "<literal>view</literal> &mdash; 链接的 JSF view id。"
+
+#. Tag: para
+#: Controls.xml:651 Controls.xml:712
+#, no-c-format
+msgid "<literal>fragment</literal> &mdash; the fragment identifier to link to."
+msgstr "<literal>fragment</literal> &mdash; 链接的片段标识符。"
+
+#. Tag: para
+#: Controls.xml:656 Controls.xml:717
+#, no-c-format
+msgid "<literal>disabled</literal> &mdash; is the link disabled?"
+msgstr "<literal>disabled</literal> &mdash; 链接是否被禁用。"
+
+#. Tag: para
+#: Controls.xml:661 Controls.xml:722 Controls.xml:911
+#, no-c-format
+msgid ""
+"<literal>propagation</literal> &mdash; determines the conversation "
+"propagation style: <literal>begin</literal>, <literal>join</literal>, "
+"<literal>nest</literal>, <literal>none</literal> or <literal>end</literal>."
+msgstr ""
+"<literal>propagation</literal> &mdash; 决定 conversation 传递的风格:"
+"<literal>begin</literal>、 <literal>join</literal>、<literal>nest</literal>、"
+"<literal>none</literal> 或 <literal>end</literal>。"
+
+#. Tag: para
+#: Controls.xml:666 Controls.xml:727 Controls.xml:916
+#, no-c-format
+msgid ""
+"<literal>pageflow</literal> &mdash; a pageflow definition to begin. (This is "
+"only useful when <literal>propagation=\"begin\"</literal> or "
+"<literal>propagation=\"join\"</literal>.)"
+msgstr ""
+"<literal>pageflow</literal> &mdash; 开始的页面流程定义。(这只有当 "
+"<literal>propagation=\"begin\"</literal> 或 <literal>propagation=\"join\"</"
+"literal> 才有用。)"
+
+#. Tag: literal
+#: Controls.xml:682
+#, no-c-format
+msgid "&lt;s:button&gt;"
+msgstr "&lt;s:button&gt;"
+
+#. Tag: para
+#: Controls.xml:689
+#, no-c-format
+msgid ""
+"A button that supports invocation of an action with control over "
+"conversation propagation. <emphasis>Does not submit the form.</emphasis>"
+msgstr ""
+"支持带有 conversation 控制的动作调用的按钮。<emphasis>不要提交这个表单。</"
+"emphasis>"
+
+#. Tag: literal
+#: Controls.xml:743
+#, no-c-format
+msgid "&lt;s:selectDate&gt;"
+msgstr "&lt;s:selectDate&gt;"
+
+#. Tag: para
+#: Controls.xml:750
+#, no-c-format
+msgid ""
+"Displays a dynamic date picker component that selects a date for the "
+"specified input field. The body of the <literal>selectDate</literal> element "
+"should contain HTML elements, such as text or an image, that prompt the user "
+"to click to display the date picker. The date picker <emphasis>must</"
+"emphasis> be styled using CSS. An example CSS file can be found in the Seam "
+"booking demo as <literal>date.css</literal>, or can be generated using seam-"
+"gen. The CSS styles used to control the appearance of the date picker are "
+"also described below."
+msgstr ""
+"显示为指定输入字段选择日期的动态日期选择器组件。<literal>selectDate</"
+"literal> 元素的内容应该包含 HTML 元素,如文本或图像,提示用户点击来显示这个日"
+"期选择器。日期选择器可以用 CSS 实现不同风格。CSS 文件示例 <literal>date.css</"
+"literal> 可以在 Seam 的 booking 演示程序里找到,它也可以用 seam-gen 来生成。"
+"用来控制日期选择器外观的 CSS 样式表也在下面进行了描述。"
+
+#. Tag: para
+#: Controls.xml:758
+#, no-c-format
+msgid ""
+"<literal>for</literal> &mdash; The id of the input field that the date "
+"picker will insert the selected date into."
+msgstr ""
+"<literal>for</literal> &mdash; 日期选择器将插入选择的日期的输入字段的 ID。"
+
+#. Tag: para
+#: Controls.xml:763
+#, no-c-format
+msgid ""
+"<literal>dateFormat</literal> &mdash; The date format string. This should "
+"match the date format of the input field."
+msgstr ""
+"<literal>dateFormat</literal> &mdash; 日期格式字符串。它应该匹配输入字段的日"
+"期格式。"
+
+#. Tag: para
+#: Controls.xml:768
+#, no-c-format
+msgid ""
+"<literal>startYear</literal> &mdash; The popup year selector range will "
+"start at this year."
+msgstr ""
+"<literal>startYear</literal> &mdash; 弹出的选择器将从这一年开始选择年份。"
+
+#. Tag: para
+#: Controls.xml:773
+#, no-c-format
+msgid ""
+"<literal>endYear</literal> &mdash; The popup year selector range will end at "
+"this year."
+msgstr ""
+"<literal>endYear</literal> &mdash; 弹出的选择年份的选择器将以这一年结束。"
+
+#. Tag: programlisting
+#: Controls.xml:782
+#, no-c-format
+msgid ""
+"&lt;div class=\"row\"&gt;\n"
+"    &lt;h:outputLabel for=\"dob\"&gt;Date of birth&lt;em&gt;*&lt;/em&gt;&lt;/"
+"h:outputLabel&gt;\n"
+"    &lt;h:inputText id=\"dob\" value=\"#{user.dob}\" required=\"true\"&gt;\n"
+"      &lt;s:convertDateTime pattern=\"MM/dd/yyyy\"/&gt;\n"
+"    &lt;/h:inputText&gt;\n"
+"    &lt;s:selectDate for=\"dob\" startYear=\"1910\" endYear=\"2007\"&gt;&lt;"
+"img src=\"img/datepicker.png\"/&gt;&lt;/s:selectDate&gt;\n"
+"    &lt;div class=\"validationError\"&gt;&lt;h:message for=\"dob\"/&gt;&lt;/"
+"div&gt;\n"
+"  &lt;/div&gt;"
+msgstr ""
+"&lt;div class=\"row\"&gt;\n"
+"    &lt;h:outputLabel for=\"dob\"&gt;Date of birth&lt;em&gt;*&lt;/em&gt;&lt;/"
+"h:outputLabel&gt;\n"
+"    &lt;h:inputText id=\"dob\" value=\"#{user.dob}\" required=\"true\"&gt;\n"
+"      &lt;s:convertDateTime pattern=\"MM/dd/yyyy\"/&gt;\n"
+"    &lt;/h:inputText&gt;\n"
+"    &lt;s:selectDate for=\"dob\" startYear=\"1910\" endYear=\"2007\"&gt;&lt;"
+"img src=\"img/datepicker.png\"/&gt;&lt;/s:selectDate&gt;\n"
+"    &lt;div class=\"validationError\"&gt;&lt;h:message for=\"dob\"/&gt;&lt;/"
+"div&gt;\n"
+"  &lt;/div&gt;"
+
+#. Tag: emphasis
+#: Controls.xml:796
+#, no-c-format
+msgid "CSS Styling"
+msgstr "CSS 样式"
+
+#. Tag: para
+#: Controls.xml:798
+#, no-c-format
+msgid ""
+"The following list describes the CSS class names that are used to control "
+"the style of the selectDate control."
+msgstr "下表描述了用来控制 selectDate 控件样式的 CSS 类名。"
+
+#. Tag: para
+#: Controls.xml:803
+#, no-c-format
+msgid ""
+"<literal>seam-date</literal> &mdash; This class is applied to the outer "
+"<literal>div</literal> containing the popup calendar. (1) It is also applied "
+"to the <literal>table</literal> that controls the inner layout of the "
+"calendar. (2)"
+msgstr ""
+"<literal>seam-date</literal> &mdash; 这个类应用于包含弹出日历的外部 "
+"<literal>div</literal> 上。(1) 它也应用于控制日历内部格式的 <literal>table</"
+"literal>。(2)"
+
+#. Tag: para
+#: Controls.xml:808
+#, no-c-format
+msgid ""
+"<literal>seam-date-header</literal> &mdash; This class is applied to the "
+"calendar header table row (<literal>tr</literal>) and header table cells "
+"(<literal>td</literal>). (3)"
+msgstr ""
+"<literal>seam-date-header</literal> &mdash; 这个类应用于日历的表头"
+"(<literal>tr</literal>)以及表单元(<literal>td</literal>)。(3)"
+
+#. Tag: para
+#: Controls.xml:813
+#, no-c-format
+msgid ""
+"<literal>seam-date-header-prevMonth</literal> &mdash; This class is applied "
+"to the \"previous month\" table cell, (<literal>td</literal>), which when "
+"clicked causes the calendar to display the month prior to the one currently "
+"displayed. (4)"
+msgstr ""
+"<literal>seam-date-header-prevMonth</literal> &mdash; 这个类应用于 "
+"\"previous month\" 表单元(<literal>td</literal>),点击它将导致日历显示当前"
+"显示月份的前一个月份。"
+
+#. Tag: para
+#: Controls.xml:818
+#, no-c-format
+msgid ""
+"<literal>seam-date-header-nextMonth</literal> &mdash; This class is applied "
+"to the \"next month\" table cell, (<literal>td</literal>), which when "
+"clicked causes the calendar to display the month following the one currently "
+"displayed. (5)"
+msgstr ""
+"<literal>seam-date-header-nextMonth</literal> &mdash; 这个类应用于 \"next "
+"month\" 表单元,((<literal>td</literal>),点击它将使日历显示当前显示月份的"
+"后一个月份。"
+
+#. Tag: para
+#: Controls.xml:823
+#, no-c-format
+msgid ""
+"<literal>seam-date-headerDays</literal> &mdash; This class is applied to the "
+"calendar days header row (<literal>tr</literal>), which contains the names "
+"of the week days. (6)"
+msgstr ""
+"<literal>seam-date-headerDays</literal> &mdash; 这个类应用于日历天数的表头行"
+"(<literal>tr</literal>),它包含一个星期里某天的名字。"
+
+#. Tag: para
+#: Controls.xml:828
+#, no-c-format
+msgid ""
+"<literal>seam-date-footer</literal> &mdash; This class is applied to the "
+"calendar footer row (<literal>tr</literal>), which displays the current "
+"date. (7)"
+msgstr ""
+"<literal>seam-date-footer</literal> &mdash; 这个类应用于日历的页尾行"
+"(<literal>tr</literal>),它显示当前的日期。(7)"
+
+#. Tag: para
+#: Controls.xml:833
+#, no-c-format
+msgid ""
+"<literal>seam-date-inMonth</literal> &mdash; This class is applied to the "
+"table cell (<literal>td</literal>) elements that contain a date within the "
+"month currently displayed. (8)"
+msgstr ""
+"<literal>seam-date-inMonth</literal> &mdash; 这个类用于表单元(<literal>td</"
+"literal>)元素,它包含当前显示的月份里某个日期。 (8)"
+
+#. Tag: para
+#: Controls.xml:838
+#, no-c-format
+msgid ""
+"<literal>seam-date-outMonth</literal> &mdash; This class is applied to the "
+"table cell (<literal>td</literal>) elements that contain a date outside of "
+"the month currently displayed. (9)"
+msgstr ""
+"<literal>seam-date-outMonth</literal> &mdash; 这个类应用于包含当前显示月份以"
+"外的日期的表单元(<literal>td</literal>)元素。"
+
+#. Tag: para
+#: Controls.xml:843
+#, no-c-format
+msgid ""
+"<literal>seam-date-selected</literal> &mdash; This class is applied to the "
+"table cell (<literal>td</literal>) element that contains the currently "
+"selected date. (10)"
+msgstr ""
+"<literal>seam-date-selected</literal> &mdash; 这个类应用于包含当前选定的日期"
+"的表单元(<literal>td</literal>)元素。(10)"
+
+#. Tag: para
+#: Controls.xml:848
+#, no-c-format
+msgid ""
+"<literal>seam-date-dayOff-inMonth</literal> &mdash; This class is applied to "
+"the table cell (<literal>td</literal>) elements that contain a \"day off\" "
+"date (i.e. weekend days, Saturday and Sunday) within the currently selected "
+"month. (11)"
+msgstr ""
+"<literal>seam-date-dayOff-inMonth</literal> &mdash; 这个类应用于包含当前选定"
+"月份里的 \"day off\" 日期(如周末、周六和周日)的表单元(<literal>td</"
+"literal>)元素。(11)"
+
+#. Tag: para
+#: Controls.xml:853
+#, no-c-format
+msgid ""
+"<literal>seam-date-dayOff-outMonth</literal> &mdash; This class is applied "
+"to the table cell (<literal>td</literal>) elements that contain a \"day off"
+"\" date (i.e. weekend days, Saturday and Sunday) outside of the currently "
+"selected month. (12)"
+msgstr ""
+"<literal>seam-date-dayOff-outMonth</literal> &mdash; 这个类应用于包含当前选定"
+"月份以外的 \"day off\" 日期(如周末、周六和周日)的表单元(<literal>td</"
+"literal>)元素。(12)"
+
+#. Tag: para
+#: Controls.xml:858
+#, no-c-format
+msgid ""
+"<literal>seam-date-hover</literal> &mdash; This class is applied to the "
+"table cell (<literal>td</literal>) element over which the cursor is "
+"hovering. (13)"
+msgstr ""
+"<literal>seam-date-hover</literal> &mdash; 这个类应用于光标位于的表单元"
+"(<literal>td</literal>)元素。(13)"
+
+#. Tag: para
+#: Controls.xml:863
+#, no-c-format
+msgid ""
+"<literal>seam-date-monthNames</literal> &mdash; This class is applied to the "
+"<literal>div</literal> control that contains the popup month selector. (14)"
+msgstr ""
+"<literal>seam-date-monthNames</literal> &mdash; 这个类应用于包含弹出月份选择"
+"器的 <literal>div</literal> 控件。(14)"
+
+#. Tag: para
+#: Controls.xml:868
+#, no-c-format
+msgid ""
+"<literal>seam-date-monthNameLink</literal> &mdash; This class is applied to "
+"the anchor (<literal>a</literal>) controls that contain the popup month "
+"names. (15)"
+msgstr ""
+"<literal>seam-date-monthNameLink</literal> &mdash; 这个类应用于包含弹出月份名"
+"称的锚点(<literal>a</literal>)控件。(15)"
+
+#. Tag: para
+#: Controls.xml:873
+#, no-c-format
+msgid ""
+"<literal>seam-date-years </literal> &mdash; This class is applied to the "
+"<literal>div</literal> control that contains the popup year selector. (16)"
+msgstr ""
+"<literal>seam-date-years </literal> &mdash; 这个类应用于包含弹出年份选择器的 "
+"<literal>div</literal> 控件。(16)"
+
+#. Tag: para
+#: Controls.xml:878
+#, no-c-format
+msgid ""
+"<literal>seam-date-yearLink</literal> &mdash; This class is applied to the "
+"anchor (<literal>a</literal>) controls that contain the popup years. (15)"
+msgstr ""
+"<literal>seam-date-yearLink</literal> &mdash; 这个类应用于包含弹出年份的锚点"
+"控制(<literal>a</literal>)。(15)"
+
+#. Tag: literal
+#: Controls.xml:896
+#, no-c-format
+msgid "&lt;s:conversationPropagation&gt;"
+msgstr "&lt;s:conversationPropagation&gt;"
+
+#. Tag: para
+#: Controls.xml:903
+#, no-c-format
+msgid ""
+"Customize the conversation propagation for a command link or button (or "
+"similar JSF control). <emphasis>Facelets only.</emphasis>"
+msgstr ""
+"为命令链接或按钮(或类似的 JSF 控件)自定义 conversation 传递。<emphasis>仅用"
+"于 Facelets。</emphasis>"
+
+#. Tag: literal
+#: Controls.xml:932
+#, no-c-format
+msgid "&lt;s:conversationId&gt;"
+msgstr "&lt;s:conversationId&gt;"
+
+#. Tag: para
+#: Controls.xml:939
+#, no-c-format
+msgid ""
+"Add the conversation id to an output link (or similar JSF control). "
+"<emphasis>Facelets only.</emphasis>"
+msgstr ""
+"在输出链接(或类似的 JSF 控件)里添加 conversation id。<emphasis>仅用于 "
+"Facelets。</emphasis>"
+
+#. Tag: literal
+#: Controls.xml:959
+#, no-c-format
+msgid "&lt;s:taskId&gt;"
+msgstr "&lt;s:taskId&gt;"
+
+#. Tag: para
+#: Controls.xml:966
+#, no-c-format
+msgid ""
+"Add the task id to an output link (or similar JSF control), when the task is "
+"available via <literal>#{task}</literal>. <emphasis>Facelets only.</emphasis>"
+msgstr ""
+"但任务通过 <literal>#{task}</literal> 可用时,在输出链接(或类似 JSF 控件)里"
+"添加任务 ID。<emphasis>仅用于 Facelets。</emphasis>"
+
+#. Tag: literal
+#: Controls.xml:986
+#, no-c-format
+msgid "&lt;s:fileUpload&gt;"
+msgstr "&lt;s:fileUpload&gt;"
+
+#. Tag: para
+#: Controls.xml:993
+#, no-c-format
+msgid ""
+"Renders a file upload control. This control must be used within a form with "
+"an encoding type of <literal>multipart/form-data</literal>, i.e:"
+msgstr ""
+"显示文件上载控件。这个控件必须在带有 <literal>multipart/form-data</literal> "
+"编码类型的表单里使用,也就是:"
+
+#. Tag: programlisting
+#: Controls.xml:996
+#, no-c-format
+msgid "&lt;h:form enctype=\"multipart/form-data\"&gt;"
+msgstr "&lt;h:form enctype=\"multipart/form-data\"&gt;"
+
+#. Tag: para
+#: Controls.xml:997
+#, no-c-format
+msgid ""
+"For multipart requests, the Seam Multipart servlet filter must also be "
+"configured in <literal>web.xml</literal>:"
+msgstr ""
+"对于 multipart 请求,Seam Multipart servlet 过滤器也必须在 <literal>web.xml</"
+"literal> 里进行配置:"
+
+#. Tag: programlisting
+#: Controls.xml:1000
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-class&gt;\n"
+"  &lt;/filter&gt;\n"
+"\n"
+"  &lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;/*&lt;/url-pattern&gt;\n"
+"  &lt;/filter-mapping&gt;"
+msgstr ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-class&gt;\n"
+"  &lt;/filter&gt;\n"
+"\n"
+"  &lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;/*&lt;/url-pattern&gt;\n"
+"  &lt;/filter-mapping&gt;"
+
+#. Tag: para
+#: Controls.xml:1004
+#, no-c-format
+msgid ""
+"The following configuration options for multipart requests may be configured "
+"in components.xml:"
+msgstr "下面针对 multipart 请求的配置选项可以在 components.xml 进行配置:"
+
+#. Tag: para
+#: Controls.xml:1009
+#, no-c-format
+msgid ""
+"<literal>createTempFiles</literal> &mdash; if this option is set to true, "
+"uploaded files are streamed to a temporary file instead of in memory."
+msgstr ""
+"<literal>createTempFiles</literal> &mdash; 如果这个选项被设置为 true,上载的"
+"文件将存为临时文件而不是放在内存里。"
+
+#. Tag: para
+#: Controls.xml:1014
+#, no-c-format
+msgid ""
+"<literal>maxRequestSize</literal> &mdash; the maximum size of a file upload "
+"request, in bytes."
+msgstr ""
+"<literal>maxRequestSize</literal> &mdash; 文件上载请求的最大值,以字节为单"
+"位。"
+
+#. Tag: para
+#: Controls.xml:1019
+#, no-c-format
+msgid "Here&#39;s an example:"
+msgstr "下面是一个例子: "
+
+#. Tag: programlisting
+#: Controls.xml:1022
+#, no-c-format
+msgid ""
+"&lt;component class=\"org.jboss.seam.web.MultipartFilter\"&gt;\n"
+"      &lt;property name=\"createTempFiles\"&gt;true&lt;/property&gt;\n"
+"      &lt;property name=\"maxRequestSize\"&gt;1000000&lt;/property&gt;\n"
+"  &lt;/component&gt;"
+msgstr ""
+"&lt;component class=\"org.jboss.seam.web.MultipartFilter\"&gt;\n"
+"      &lt;property name=\"createTempFiles\"&gt;true&lt;/property&gt;\n"
+"      &lt;property name=\"maxRequestSize\"&gt;1000000&lt;/property&gt;\n"
+"  &lt;/component&gt;"
+
+#. Tag: para
+#: Controls.xml:1028
+#, no-c-format
+msgid ""
+"<literal>data</literal> &mdash; this value binding receives the binary file "
+"data. The receiving field should be declared as a <literal>byte[]</literal> "
+"or <literal>InputStream</literal> (required)."
+msgstr ""
+"<literal>data</literal> &mdash; 这个值绑定接收二进制文件数据。接收的字段应该"
+"声明为 <literal>byte[]</literal> 或 <literal>InputStream</literal>(必需)。"
+
+#. Tag: para
+#: Controls.xml:1033
+#, no-c-format
+msgid ""
+"<literal>contentType</literal> &mdash; this value binding receives the "
+"file&#39;s content type (optional)."
+msgstr ""
+"<literal>contentType</literal> &mdash; 这个值绑定接收文件的内容类型(可"
+"选)。 "
+
+#. Tag: para
+#: Controls.xml:1038
+#, no-c-format
+msgid ""
+"<literal>fileName</literal> &mdash; this value binding receives the filename "
+"(optional)."
+msgstr "<literal>fileName</literal> &mdash; 这个值绑定接收文件名(可选)。"
+
+#. Tag: para
+#: Controls.xml:1043
+#, no-c-format
+msgid ""
+"<literal>accept</literal> &mdash; a comma-separated list of content types to "
+"accept, may not be supported by the browser. E.g. <literal>\"images/png,"
+"images/jpg\"</literal>, <literal>\"images/*\"</literal>."
+msgstr ""
+"<literal>accept</literal> &mdash; 可接受的用逗号隔开的内容类型列表,有可能不"
+"被浏览器所支持。例如,<literal>\"images/png,images/jpg\"</literal>、<literal>"
+"\"images/*\"</literal>。"
+
+#. Tag: para
+#: Controls.xml:1048
+#, no-c-format
+msgid "<literal>style</literal> &mdash; The control&#39;s style"
+msgstr "<literal>style</literal> &mdash; 控件的风格。 "
+
+#. Tag: para
+#: Controls.xml:1053
+#, no-c-format
+msgid "<literal>styleClass</literal> &mdash; The control&#39;s style class"
+msgstr "<literal>styleClass</literal> &mdash; 控件的风格类。 "

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Conversations.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Conversations.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Conversations.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1569 @@
+# translation of Conversations.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Xi HUANG <xhuang at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Conversations\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2007-10-12 10:05+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Conversations.xml:6
+#, no-c-format
+msgid "Conversations and workspace management"
+msgstr "Conversation 和工作区间管理"
+
+#. Tag: para
+#: Conversations.xml:7
+#, no-c-format
+msgid ""
+"It&#39;s time to understand Seam&#39;s conversation model in more detail."
+msgstr "现在是进一步理解 Seam 的conversation 模型的时候了。"
+
+#. Tag: para
+#: Conversations.xml:10
+#, no-c-format
+msgid ""
+"Historically, the notion of a Seam \"conversation\" came about as a merger "
+"of three different ideas:"
+msgstr "从历史的角度来看,Seam 的“conversation”混合了三个不同的想法:"
+
+#. Tag: para
+#: Conversations.xml:15
+#, no-c-format
+msgid ""
+"The idea of a <emphasis>workspace</emphasis>, which I encountered in a "
+"project for the Victorian government in 2002. In this project I was forced "
+"to implement workspace management on top of Struts, an experience I pray "
+"never to repeat."
+msgstr ""
+"关于<emphasis>工作区间(workspace)</emphasis>的想法,这是 2002 年我在为维多"
+"利亚政府做的一个项目里遇到的。在那个项目里,我被迫在 Struts 之上来实现工作区"
+"间管理,这是我发誓不会再重复的一段经历。"
+
+#. Tag: para
+#: Conversations.xml:20
+#, no-c-format
+msgid ""
+"The idea of an <emphasis>application transaction</emphasis> with optimistic "
+"semantics, and the realization that existing frameworks based around a "
+"stateless architecture could not provide effective management of extended "
+"persistence contexts. (The Hibernate team is truly fed up with copping the "
+"blame for <literal>LazyInitializationException</literal>s, which are not "
+"really Hibernate&#39;s fault, but rather the fault of the extremely limiting "
+"persistence context model supported by stateless architectures such as the "
+"Spring framework or the traditional <emphasis>stateless session facade</"
+"emphasis> (anti)pattern in J2EE.)"
+msgstr ""
+"带有乐观语义的<emphasis>应用程序事务(application transaction)</emphasis>,"
+"现有的基于无状态架构的框架不能提供有效的对扩展持久性上下文的管理。"
+"(Hibernate 团队收到大量的关于 <literal>LazyInitializationException</"
+"literal> 的埋怨,其实这并不是 Hibernate 的过失,而是由无状态架构如 Srping 或"
+"传统的 J2EE <emphasis>stateless session facade</emphasis> 模式所支持的持久性"
+"上下文模型的限制所引起的。)"
+
+#. Tag: para
+#: Conversations.xml:25
+#, no-c-format
+msgid "The idea of a workflow <emphasis>task</emphasis>."
+msgstr "关于工作流<emphasis>任务(task)</emphasis>的想法"
+
+#. Tag: para
+#: Conversations.xml:30
+#, no-c-format
+msgid ""
+"By unifying these ideas and providing deep support in the framework, we have "
+"a powerful construct that lets us build richer and more efficient "
+"applications with less code than before."
+msgstr ""
+"通过统一这些想法并提供深层的框架支持,我们有了一个功能强大的结构,可以用比以"
+"前更少的代码来构建功能更丰富、效率更高的应用程序。"
+
+#. Tag: title
+#: Conversations.xml:34
+#, no-c-format
+msgid "Seam&#39;s conversation model"
+msgstr "Seam 的 conversation 模型 "
+
+#. Tag: para
+#: Conversations.xml:35
+#, no-c-format
+msgid ""
+"The examples we have seen so far make use of a very simple conversation "
+"model that follows these rules:"
+msgstr ""
+"我们目前已经看到的例子使用了一个非常简单的 conversation 模型,它遵循这些规"
+"则:"
+
+#. Tag: para
+#: Conversations.xml:40
+#, no-c-format
+msgid ""
+"There is always a conversation context active during the apply request "
+"values, process validations, update model values, invoke application and "
+"render response phases of the JSF request lifecycle."
+msgstr ""
+"在 JSF 请求生命周期的应用请求值、过程检验、更新模型值、调用程序和显示响应阶"
+"段,总会有一个活动的 conversation 上下文。"
+
+#. Tag: para
+#: Conversations.xml:45
+#, no-c-format
+msgid ""
+"At the end of the restore view phase of the JSF request lifecycle, Seam "
+"attempts to restore any previous long-running conversation context. If none "
+"exists, Seam creates a new temporary conversation context."
+msgstr ""
+"在 JSF 请求的生命周期的恢复视图阶段结束时,Seam 试图恢复任何以前的长期 "
+"conversation 上下文。如果没有,Seam 会创建一个新的临时 conversation 上下文。"
+
+#. Tag: para
+#: Conversations.xml:50
+#, no-c-format
+msgid ""
+"When an <literal>@Begin</literal> method is encountered, the temporary "
+"conversation context is promoted to a long running conversation."
+msgstr ""
+"当遇到一个 <literal>@Begin</literal> 方法时,临时 conversation 上下文将升级为"
+"长期的 conversation。"
+
+#. Tag: para
+#: Conversations.xml:55
+#, no-c-format
+msgid ""
+"When an <literal>@End</literal> method is encountered, any long-running "
+"conversation context is demoted to a temporary conversation."
+msgstr ""
+"当遇到一个 <literal>@End</literal> 方法时,任何长期的 conversation 将降级为临"
+"时 conversation。"
+
+#. Tag: para
+#: Conversations.xml:60
+#, no-c-format
+msgid ""
+"At the end of the render response phase of the JSF request lifecycle, Seam "
+"stores the contents of a long running conversation context or destroys the "
+"contents of a temporary conversation context."
+msgstr ""
+"在 JSF 请求生命周期的显示响应阶段结束时,Seam 会保存长期的 conversation 上下"
+"文的内容并销毁临时 conversation 上下文的内容。"
+
+#. Tag: para
+#: Conversations.xml:65
+#, no-c-format
+msgid ""
+"Any faces request (a JSF postback) will propagate the conversation context. "
+"By default, non-faces requests (GET requests, for example) do not propagate "
+"the conversation context, but see below for more information on this."
+msgstr ""
+"任何 faces 请求(JSF postbak)将传递 conversation 上下文。在缺省情况下,非 "
+"faces 请求(如 GET 请求)不会传递 conversation 上下文。不过,关于这一点的更多"
+"信息,请参考下面的内容。"
+
+#. Tag: para
+#: Conversations.xml:70
+#, no-c-format
+msgid ""
+"If the JSF request lifecycle is foreshortened by a redirect, Seam "
+"transparently stores and restores the current conversation context&mdash;"
+"unless the conversation was already ended via <literal>@End"
+"(beforeRedirect=true)</literal>."
+msgstr ""
+"如果 JSF 请求生命周期被重定向缩短,Seam 会透明地保存和恢复当前的 "
+"conversation 上下文&mdash;除非这个 conversation 已经通过 <literal>@End"
+"(beforeRedirect=true)</literal> 结束了。"
+
+#. Tag: para
+#: Conversations.xml:75
+#, no-c-format
+msgid ""
+"Seam transparently propagates the conversation context across JSF postbacks "
+"and redirects. If you don&#39;t do anything special, a <emphasis>non-faces "
+"request</emphasis> (a GET request for example) will not propagate the "
+"conversation context and will be processed in a new temporary conversation. "
+"This is usually - but not always - the desired behavior."
+msgstr ""
+"Seam 透明地在 JSF postback 和重定向之间传递 conversation 上下文。如果不进行特"
+"殊设置,<emphasis>非 faces 请求</emphasis>(如 GET 请求)将不会传递 "
+"conversation 上下文且在新的临时 conversation 里进行处理。这通常是预期的行为 "
+"- 但并非总是如此。"
+
+#. Tag: para
+#: Conversations.xml:78
+#, no-c-format
+msgid ""
+"If you want to propagate a Seam conversation across a non-faces request, you "
+"need to explicitly code the Seam <emphasis>conversation id</emphasis> as a "
+"request parameter:"
+msgstr ""
+"如果你想在非 faces 请求里传递 Seam 上下文,你将需要显性地把 Seam 的 "
+"<emphasis>conversation id</emphasis> 作为请求参数:"
+
+#. Tag: programlisting
+#: Conversations.xml:81
+#, no-c-format
+msgid ""
+"&lt;a href=\"main.jsf?conversationId=#{conversation.id}\"&gt;Continue&lt;/"
+"a&gt;"
+msgstr ""
+"&lt;a href=\"main.jsf?conversationId=#{conversation.id}\"&gt;Continue&lt;/"
+"a&gt;"
+
+#. Tag: para
+#: Conversations.xml:82
+#, no-c-format
+msgid "Or, the more JSF-ish:"
+msgstr "或者,更象 JSF 风格的:"
+
+#. Tag: programlisting
+#: Conversations.xml:85
+#, no-c-format
+msgid ""
+"&lt;h:outputLink value=\"main.jsf\"&gt;\n"
+"    &lt;f:param name=\"conversationId\" value=\"#{conversation.id}\"/&gt;\n"
+"    &lt;h:outputText value=\"Continue\"/&gt;\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+"&lt;h:outputLink value=\"main.jsf\"&gt;\n"
+"    &lt;f:param name=\"conversationId\" value=\"#{conversation.id}\"/&gt;\n"
+"    &lt;h:outputText value=\"Continue\"/&gt;\n"
+"&lt;/h:outputLink&gt;"
+
+#. Tag: para
+#: Conversations.xml:86 Conversations.xml:94
+#, no-c-format
+msgid "If you use the Seam tag library, this is equivalent:"
+msgstr "如果你使用 Seam 的标签库,就和下面相等:"
+
+#. Tag: programlisting
+#: Conversations.xml:89
+#, no-c-format
+msgid ""
+"&lt;h:outputLink value=\"main.jsf\"&gt;\n"
+"    &lt;s:conversationId/&gt;\n"
+"    &lt;h:outputText value=\"Continue\"/&gt;\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+"&lt;h:outputLink value=\"main.jsf\"&gt;\n"
+"    &lt;s:conversationId/&gt;\n"
+"    &lt;h:outputText value=\"Continue\"/&gt;\n"
+"&lt;/h:outputLink&gt;"
+
+#. Tag: para
+#: Conversations.xml:90
+#, no-c-format
+msgid ""
+"If you wish to disable propagation of the conversation context for a "
+"postback, a similar trick is used:"
+msgstr ""
+"如果你想禁用用于 postback 的 conversation 上下文传递,可以使用类似的窍门:"
+
+#. Tag: programlisting
+#: Conversations.xml:93
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;f:param name=\"conversationPropagation\" value=\"none\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;f:param name=\"conversationPropagation\" value=\"none\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+
+#. Tag: programlisting
+#: Conversations.xml:97
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"none\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"none\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+
+#. Tag: para
+#: Conversations.xml:98
+#, no-c-format
+msgid ""
+"Note that disabling conversation context propagation is absolutely not the "
+"same thing as ending the conversation."
+msgstr "注意,禁用 conversation 上下文传递和结束 conversation 是绝对不一样的。"
+
+#. Tag: para
+#: Conversations.xml:101
+#, no-c-format
+msgid ""
+"The <literal>conversationPropagation</literal> request parameter, or the "
+"<literal>&lt;s:conversationPropagation&gt;</literal> tag may even be used to "
+"begin and end conversation, or begin a nested conversation."
+msgstr ""
+"<literal>conversationPropagation</literal> 请求参数,或者 <literal>&lt;s:"
+"conversationPropagation&gt;</literal> 标签甚至可能用来开始和结束 "
+"conversation,或者开始嵌套的 conversation。"
+
+#. Tag: programlisting
+#: Conversations.xml:104
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"end\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"end\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+
+#. Tag: programlisting
+#: Conversations.xml:105
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Child\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"nested\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+"&lt;h:commandLink action=\"main\" value=\"Select Child\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"nested\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+
+#. Tag: programlisting
+#: Conversations.xml:106
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Hotel\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"begin\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+"&lt;h:commandLink action=\"main\" value=\"Select Hotel\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"begin\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+
+#. Tag: programlisting
+#: Conversations.xml:107
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Hotel\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"join\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+"&lt;h:commandLink action=\"main\" value=\"Select Hotel\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"join\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+
+#. Tag: para
+#: Conversations.xml:108
+#, no-c-format
+msgid ""
+"This conversation model makes it easy to build applications which behave "
+"correctly with respect to multi-window operation. For many applications, "
+"this is all that is needed. Some complex applications have either or both of "
+"the following additional requirements:"
+msgstr ""
+"这种 conversation 模型使构建能正确处理多窗口操作的应用程序变得更为容易。对于"
+"大多数应用程序而言,这就全部所需了。某些复杂的应用程序具有下面的其他参数的一"
+"个或两者都有:"
+
+#. Tag: para
+#: Conversations.xml:113
+#, no-c-format
+msgid ""
+"A conversation spans many smaller units of user interaction, which execute "
+"serially or even concurrently. The smaller <emphasis>nested conversations</"
+"emphasis> have their own isolated set of conversation state, and also have "
+"access to the state of the outer conversation."
+msgstr ""
+"Conversation 可以跨越许多串行甚至并行的小单元的用户交互。更小的<emphasis>嵌"
+"套 conversation</emphasis> 具有自己的状态集,它们也可以访问外部 conversation "
+"的状态。"
+
+#. Tag: para
+#: Conversations.xml:118
+#, no-c-format
+msgid ""
+"The user is able to switch between many conversations within the same "
+"browser window. This feature is called <emphasis>workspace management</"
+"emphasis>."
+msgstr ""
+"用户能够在同一个浏览器窗口内的许多 conversation 之间进行切换。这个特征被称作"
+"<emphasis>工作区间(workspace management)</emphasis>。"
+
+#. Tag: title
+#: Conversations.xml:126
+#, no-c-format
+msgid "Nested conversations"
+msgstr "嵌套的 conversation"
+
+#. Tag: para
+#: Conversations.xml:127
+#, no-c-format
+msgid ""
+"A nested conversation is created by invoking a method marked <literal>@Begin"
+"(nested=true)</literal> inside the scope of an existing conversation. A "
+"nested conversation has its own conversation context, and also has read-only "
+"access to the context of the outer conversation. (It can read the outer "
+"conversation&#39;s context variables, but not write to them.) When an "
+"<literal>@End</literal> is subsequently encountered, the nested conversation "
+"will be destroyed, and the outer conversation will resume, by \"popping\" "
+"the conversation stack. Conversations may be nested to any arbitrary depth."
+msgstr ""
+"嵌套 conversation 是通过在现有 conversation 的作用域里调用标记为 "
+"<literal>@Begin(nested=true)</literal> 的方法来创建的。嵌套 conversation 具有"
+"自己的 conversation 上下文,它也具有对外部 conversation 的只读访问权限(可以"
+"读取上下文变量,但不能进行写入)。当随后遇到 <literal>@End</literal> 时,嵌"
+"套 conversation 将被销毁,而外部 conversation 将从 conversation 栈里“弹出”并"
+"恢复执行。Conversation 可以进行任意深度的嵌套。"
+
+#. Tag: para
+#: Conversations.xml:130
+#, no-c-format
+msgid ""
+"Certain user activity (workspace management, or the back button) can cause "
+"the outer conversation to be resumed before the inner conversation is ended. "
+"In this case it is possible to have multiple concurrent nested conversations "
+"belonging to the same outer conversation. If the outer conversation ends "
+"before a nested conversation ends, Seam destroys all nested conversation "
+"contexts along with the outer context."
+msgstr ""
+"某些用户活动(工作区间管理,或者后退按钮)可以导致在内部 conversation 结束之"
+"前恢复执行外部 conversation。此时,可能会有多个并行的嵌套 conversation 属于相"
+"同的外部 conversation。如果外部 conversation 在嵌套 conversation 结束之前结"
+"束,Seam 将销毁外部上下文以及所有的嵌套 conversation 的上下文。"
+
+#. Tag: para
+#: Conversations.xml:133
+#, no-c-format
+msgid ""
+"A conversation may be thought of as a <emphasis>continuable state</"
+"emphasis>. Nested conversations allow the application to capture a "
+"consistent continuable state at various points in a user interaction, thus "
+"insuring truly correct behavior in the face of backbuttoning and workspace "
+"management."
+msgstr ""
+"Conversation 可以被认为是<emphasis>可持续的状态(continuable state)</"
+"emphasis>。嵌套的 conversation 允许应用程序在用户交互的不同阶段捕获一致的可持"
+"续状态,因此确保在使用后退按钮和工作区间管理时具有正确的行为。"
+
+#. Tag: para
+#: Conversations.xml:136
+#, no-c-format
+msgid ""
+"TODO: an example to show how a nested conversation prevents bad stuff "
+"happening when you backbutton."
+msgstr ""
+"TODO:展示在使用后退按钮时嵌套 conversation 如何保证继续正确运行的例子。"
+
+#. Tag: para
+#: Conversations.xml:139
+#, no-c-format
+msgid ""
+"Usually, if a component exists in a parent conversation of the current "
+"nested conversation, the nested conversation will use the same instance. "
+"Occasionally, it is useful to have a different instance in each nested "
+"conversation, so that the component instance that exists in the parent "
+"conversation is invisible to its child conversations. You can achieve this "
+"behavior by annotating the component <literal>@PerNestedConversation</"
+"literal>."
+msgstr ""
+"通常,如果一个组件存在于当前嵌套 conversation 的父 conversation 里,嵌套 "
+"conversation 将使用相同的组件实例。有时候,在每个嵌套 conversation 里使用不同"
+"的实例是很有用的,此时存在于父 conversation 里的组件实例对于子 conversation "
+"是不可见的。你可以用 <literal>@PerNestedConversation</literal> 注解组件来达到"
+"这个目的。"
+
+#. Tag: title
+#: Conversations.xml:145
+#, no-c-format
+msgid "Starting conversations with GET requests"
+msgstr "用 GET 请求启动 conversation"
+
+#. Tag: para
+#: Conversations.xml:146
+#, no-c-format
+msgid ""
+"JSF does not define any kind of action listener that is triggered when a "
+"page is accessed via a non-faces request (for example, a HTTP GET request). "
+"This can occur if the user bookmarks the page, or if we navigate to the page "
+"via an <literal>&lt;h:outputLink&gt;</literal>."
+msgstr ""
+"JSF 不定义在页面通过非 faces 请求(如 GET 请求)访问时触发的任何类型的 "
+"action listener。如果用户把这个页面加为标签、或者我们通过 <literal>&lt;h:"
+"outputLink&gt;</literal> 导航至该页面时这可以发生。"
+
+#. Tag: para
+#: Conversations.xml:149
+#, no-c-format
+msgid ""
+"Sometimes we want to begin a conversation immediately the page is accessed. "
+"Since there is no JSF action method, we can&#39;t solve the problem in the "
+"usual way, by annotating the action with <literal>@Begin</literal>."
+msgstr ""
+"有时候我们想在页面被访问时立即开始一个 conversation。既然没有 JSF action 方"
+"法,我们不能够用普通的途径(即用 <literal>@Begin</literal> 注解这个方法)解决"
+"这个问题。"
+
+#. Tag: para
+#: Conversations.xml:152
+#, no-c-format
+msgid ""
+"A further problem arises if the page needs some state to be fetched into a "
+"context variable. We&#39;ve already seen two ways to solve this problem. If "
+"that state is held in a Seam component, we can fetch the state in a "
+"<literal>@Create</literal> method. If not, we can define a "
+"<literal>@Factory</literal> method for the context variable."
+msgstr ""
+"如果页面需要取出某个状态到上下文变量,就会出现进一步的问题。我们已经看到两个"
+"解决这个问题的方法。如果那个状态保存在 Seam 组件里,我们可以在 "
+"<literal>@Create</literal> 里取出它。如果没有,我们可以为这个上下文变量定义一"
+"个 <literal>@Factory</literal> 方法。"
+
+#. Tag: para
+#: Conversations.xml:155
+#, no-c-format
+msgid ""
+"If none of these options works for you, Seam lets you define a "
+"<emphasis>page action</emphasis> in the <literal>pages.xml</literal> file."
+msgstr ""
+"如果这些选项都不能使用,Seam 可以让你在 <literal>pages.xml</literal> 文件里定"
+"义一个<emphasis>页面动作(page action)</emphasis>。"
+
+#. Tag: programlisting
+#: Conversations.xml:158
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\" action=\"#{messageManager.list}\"/"
+"&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\" action=\"#{messageManager.list}\"/"
+"&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Conversations.xml:159
+#, no-c-format
+msgid ""
+"This action method is called at the beginning of the render response phase, "
+"any time the page is about to be rendered. If a page action returns a non-"
+"null outcome, Seam will process any appropriate JSF and Seam navigation "
+"rules, possibly resulting in a completely different page being rendered."
+msgstr ""
+"只要页面将被显示,这个动作方法在显示响应阶段开始时被调用。如果页面动作返回一"
+"个非空的 outcome,Seam 将处理任何合适的 JSF 和 Seam 导航规则,并可能会显示一"
+"个完全不同的页面。"
+
+#. Tag: para
+#: Conversations.xml:162
+#, no-c-format
+msgid ""
+"If <emphasis>all</emphasis> you want to do before rendering the page is "
+"begin a conversation, you could use a built-in action method that does just "
+"that:"
+msgstr ""
+"如果在显示这个页面之前,你想做的<emphasis>全部</emphasis>事情就是开始一个 "
+"conversation,你可以使用仅仅完成如下功能的一个内置动作方法:"
+
+#. Tag: programlisting
+#: Conversations.xml:165
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\" action=\"#{conversation.begin}\"/"
+"&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\" action=\"#{conversation.begin}\"/"
+"&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Conversations.xml:166
+#, no-c-format
+msgid ""
+"Note that you can also call this built-in action from a JSF control, and, "
+"similarly, you can use <literal>#{conversation.end}</literal> to end "
+"conversations."
+msgstr ""
+"注意,你也可以从 JSF 控件里调用这个内置方法,类似地,你可以使用 <literal>#"
+"{conversation.end}</literal> 来结束 conversation。"
+
+#. Tag: para
+#: Conversations.xml:169
+#, no-c-format
+msgid ""
+"If you want more control, to join existing conversations or begin a nested "
+"conversion, to begin a pageflow or an atomic conversation, you should use "
+"the <literal>&lt;begin-conversation&gt;</literal> element."
+msgstr ""
+"如果你想进行更多的控制,如加入现有的 conversation 或开始嵌套的 conversation、"
+"开始一个页面流程、或者原子 conversation,你应该使用 <literal>&lt;begin-"
+"conversation&gt;</literal> 元素。"
+
+#. Tag: programlisting
+#: Conversations.xml:172
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\"&gt;\n"
+"       &lt;begin-conversation nested=\"true\" pageflow=\"AddItem\"/&gt;\n"
+"    &lt;page&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\"&gt;\n"
+"       &lt;begin-conversation nested=\"true\" pageflow=\"AddItem\"/&gt;\n"
+"    &lt;page&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Conversations.xml:173
+#, no-c-format
+msgid "There is also an <literal>&lt;end-conversation&gt;</literal> element."
+msgstr "也有一个 <literal>&lt;end-conversation&gt;</literal> 元素:"
+
+#. Tag: programlisting
+#: Conversations.xml:176
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/home.jsp\"&gt;\n"
+"       &lt;end-conversation/&gt;\n"
+"    &lt;page&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/home.jsp\"&gt;\n"
+"       &lt;end-conversation/&gt;\n"
+"    &lt;page&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Conversations.xml:177
+#, no-c-format
+msgid "To solve the first problem, we now have five options:"
+msgstr "要解决第一个问题,现在我们有 5 个选择:"
+
+#. Tag: para
+#: Conversations.xml:182
+#, no-c-format
+msgid ""
+"Annotate the <literal>@Create</literal> method with <literal>@Begin</literal>"
+msgstr "用 <literal>@Begin</literal> 注解 <literal>@Create</literal> 方法"
+
+#. Tag: para
+#: Conversations.xml:187
+#, no-c-format
+msgid ""
+"Annotate the <literal>@Factory</literal> method with <literal>@Begin</"
+"literal>"
+msgstr "用 <literal>@Begin</literal> 注解 <literal>@Factory</literal> 方法"
+
+#. Tag: para
+#: Conversations.xml:192
+#, no-c-format
+msgid "Annotate the Seam page action method with <literal>@Begin</literal>"
+msgstr "用 <literal>@Begin</literal> 注解 Seam 的页面动作方法"
+
+#. Tag: para
+#: Conversations.xml:197
+#, no-c-format
+msgid ""
+"Use <literal>&lt;begin-conversation&gt;</literal> in <literal>pages.xml</"
+"literal>."
+msgstr ""
+"使用 <literal>pages.xml</literal> 里的 <literal>&lt;begin-conversation&gt;</"
+"literal>。"
+
+#. Tag: para
+#: Conversations.xml:202
+#, no-c-format
+msgid ""
+"Use <literal>#{conversation.begin}</literal> as the Seam page action method"
+msgstr ""
+"把 <literal>#{conversation.begin}</literal> 作为 Seam 的页面动作方法使用"
+
+#. Tag: title
+#: Conversations.xml:210
+#, no-c-format
+msgid ""
+"Using <literal>&lt;s:link&gt;</literal> and <literal>&lt;s:button&gt;</"
+"literal>"
+msgstr ""
+"使用 <literal>&lt;s:link&gt;</literal> 和 <literal>&lt;s:button&gt;</literal>"
+
+#. Tag: para
+#: Conversations.xml:211
+#, no-c-format
+msgid ""
+"JSF command links always perform a form submission via JavaScript, which "
+"breaks the web browser&#39;s \"open in new window\" or \"open in new tab\" "
+"feature. In plain JSF, you need to use an <literal>&lt;h:outputLink&gt;</"
+"literal> if you need this functionality. But there are two major limitations "
+"to <literal>&lt;h:outputLink&gt;</literal>."
+msgstr ""
+"JSF 命令链接总是通过 JavaScript 执行表单提交,这违反了 web 浏览器的“open in "
+"new window”或“open in new tab”特征。在普通 JSF 里,如果需要这样的功能,你需要"
+"使用 <literal>&lt;h:outputLink&gt;</literal>。但是 <literal>&lt;h:"
+"outputLink&gt;</literal> 有两个主要的限制。"
+
+#. Tag: para
+#: Conversations.xml:216
+#, no-c-format
+msgid ""
+"JSF provides no way to attach an action listener to an <literal>&lt;h:"
+"outputLink&gt;</literal>."
+msgstr ""
+"JSF 没有提供附加 action listener 到 <literal>&lt;h:outputLink&gt;</literal> "
+"的方法。"
+
+#. Tag: para
+#: Conversations.xml:221
+#, no-c-format
+msgid ""
+"JSF does not propagate the selected row of a <literal>DataModel</literal> "
+"since there is no actual form submission."
+msgstr ""
+"既然没有实际的表单提交,JSF 没有传递 <literal>DataModel</literal> 的被选择的"
+"行。"
+
+#. Tag: para
+#: Conversations.xml:226
+#, no-c-format
+msgid ""
+"Seam provides the notion of a <emphasis>page action</emphasis> to help solve "
+"the first problem, but this does nothing to help us with the second problem. "
+"We <emphasis>could</emphasis> work around this by using the RESTful approach "
+"of passing a request parameter and requerying for the selected object on the "
+"server side. In some cases&mdash;such as the Seam blog example "
+"application&mdash;this is indeed the best approach. The RESTful style "
+"supports bookmarking, since it does not require server-side state. In other "
+"cases, where we don&#39;t care about bookmarks, the use of "
+"<literal>@DataModel</literal> and <literal>@DataModelSelection</literal> is "
+"just so convenient and transparent!"
+msgstr ""
+"Seam 提供了<emphasis>页面动作(page action)</emphasis>标记来帮助解决第一个问"
+"题,但这解决不了第二个问题。通过使用传入请求参数和在服务器端重新查询所选择的"
+"对象的 RESTful 方法,我们<emphasis>可以</emphasis>绕过它。在某些情况下&mdash;"
+"如 Seam 的 blog 例程&mdash;这的确上是最佳办法。既然 RESTful 风格的方法不要求"
+"服务端的状态,它支持书签的使用。而在另外一些我们不在乎书签的情况下,"
+"<literal>@DataModel</literal> 和 <literal>@DataModelSelection</literal> 就是"
+"如此的方便和透明!"
+
+#. Tag: para
+#: Conversations.xml:229
+#, no-c-format
+msgid ""
+"To fill in this missing functionality, and to make conversation propagation "
+"even simpler to manage, Seam provides the <literal>&lt;s:link&gt;</literal> "
+"JSF tag."
+msgstr ""
+"要替代这个丢失的功能,并使 conversation 的传递更易于管理,Seam 提供了 "
+"<literal>&lt;s:link&gt;</literal> JSF 标签。"
+
+#. Tag: para
+#: Conversations.xml:232
+#, no-c-format
+msgid "The link may specify just the JSF view id:"
+msgstr "这个 link 可以仅仅指定 JSF 的 view id:"
+
+#. Tag: programlisting
+#: Conversations.xml:235
+#, no-c-format
+msgid "&lt;s:link view=“/login.xhtml” value=“Login”/&gt;"
+msgstr "&lt;s:link view=“/login.xhtml” value=“Login”/&gt;"
+
+#. Tag: para
+#: Conversations.xml:236
+#, no-c-format
+msgid ""
+"Or, it may specify an action method (in which case the action outcome "
+"determines the page that results):"
+msgstr "或者,它可以指定一个动作方法(当动作的 outcome 决定其结果页面):"
+
+#. Tag: programlisting
+#: Conversations.xml:239
+#, no-c-format
+msgid "&lt;s:link action=“#{login.logout}” value=“Logout”/&gt;"
+msgstr "&lt;s:link action=“#{login.logout}” value=“Logout”/&gt;"
+
+#. Tag: para
+#: Conversations.xml:240
+#, no-c-format
+msgid ""
+"If you specify <emphasis>both</emphasis> a JSF view id and an action method, "
+"the &#39;view&#39; will be used <emphasis>unless</emphasis> the action "
+"method returns a non-null outcome:"
+msgstr ""
+"如果你指定了 JSF view id <emphasis>以及</emphasis>动作方法,<emphasis>除非</"
+"emphasis>动作方法返回非空的 outcome,否则这个视图(view)将被使用。"
+
+#. Tag: programlisting
+#: Conversations.xml:243
+#, no-c-format
+msgid ""
+"&lt;s:link view=\"/loggedOut.xhtml\"  action=“#{login.logout}” "
+"value=“Logout”/&gt;"
+msgstr ""
+"&lt;s:link view=\"/loggedOut.xhtml\"  action=“#{login.logout}” "
+"value=“Logout”/&gt;"
+
+#. Tag: para
+#: Conversations.xml:244
+#, no-c-format
+msgid ""
+"The link automatically propagates the selected row of a <literal>DataModel</"
+"literal> using inside <literal>&lt;h:dataTable&gt;</literal>:"
+msgstr ""
+"这个链接用 <literal>&lt;h:dataTable&gt;</literal> 自动地传递"
+"<literal>DataModel</literal> 的被选择的行:"
+
+#. Tag: programlisting
+#: Conversations.xml:247
+#, no-c-format
+msgid ""
+"&lt;s:link view=“/hotel.xhtml” action=“#{hotelSearch.selectHotel}” value=“#"
+"{hotel.name}”/&gt;"
+msgstr ""
+"&lt;s:link view=“/hotel.xhtml” action=“#{hotelSearch.selectHotel}” value=“#"
+"{hotel.name}”/&gt;"
+
+#. Tag: para
+#: Conversations.xml:248
+#, no-c-format
+msgid "You can leave the scope of an existing conversation:"
+msgstr "你可以保留现有 conversation 的作用域:"
+
+#. Tag: programlisting
+#: Conversations.xml:251
+#, no-c-format
+msgid "&lt;s:link view=“/main.xhtml” propagation=“none”/&gt;"
+msgstr "&lt;s:link view=“/main.xhtml” propagation=“none”/&gt;"
+
+#. Tag: para
+#: Conversations.xml:252
+#, no-c-format
+msgid "You can begin, end, or nest conversations:"
+msgstr "你可以开始、结束或嵌套 conversation:"
+
+#. Tag: programlisting
+#: Conversations.xml:255
+#, no-c-format
+msgid "&lt;s:link action=“#{issueEditor.viewComment}” propagation=“nest”/&gt;"
+msgstr "&lt;s:link action=“#{issueEditor.viewComment}” propagation=“nest”/&gt;"
+
+#. Tag: para
+#: Conversations.xml:256
+#, no-c-format
+msgid ""
+"If the link begins a conversation, you can even specify a pageflow to be "
+"used:"
+msgstr "如果链接开始了一个 conversation,你甚至可以指定所使用的页面流程:"
+
+#. Tag: programlisting
+#: Conversations.xml:259
+#, no-c-format
+msgid ""
+"&lt;s:link action=“#{documentEditor.getDocument}” propagation=“begin” \n"
+"        pageflow=“EditDocument”/&gt;"
+msgstr ""
+"&lt;s:link action=“#{documentEditor.getDocument}” propagation=“begin” \n"
+"        pageflow=“EditDocument”/&gt;"
+
+#. Tag: para
+#: Conversations.xml:260
+#, no-c-format
+msgid ""
+"The <literal>taskInstance</literal> attribute if for use in jBPM task lists:"
+msgstr "在 jBPM 任务列表里,使用 <literal>taskInstance</literal> 属性:"
+
+#. Tag: programlisting
+#: Conversations.xml:263
+#, no-c-format
+msgid ""
+"&lt;s:link action=“#{documentApproval.approveOrReject}” taskInstance=“#"
+"{task}”/&gt;"
+msgstr ""
+"&lt;s:link action=“#{documentApproval.approveOrReject}” taskInstance=“#"
+"{task}”/&gt;"
+
+#. Tag: para
+#: Conversations.xml:264
+#, no-c-format
+msgid "(See the DVD Store demo application for examples of this.)"
+msgstr "(参考 DVD Store 演示程序里关于它的使用。)"
+
+#. Tag: para
+#: Conversations.xml:267
+#, no-c-format
+msgid ""
+"Finally, if you need the \"link\" to be rendered as a button, use "
+"<literal>&lt;s:button&gt;</literal>:"
+msgstr ""
+"最后,如果你需要把 \"link\" 显示为按钮,使用 <literal>&lt;s:button&gt;</"
+"literal>:"
+
+#. Tag: programlisting
+#: Conversations.xml:270
+#, no-c-format
+msgid "&lt;s:button action=“#{login.logout}” value=“Logout”/&gt;"
+msgstr "&lt;s:button action=“#{login.logout}” value=“Logout”/&gt;"
+
+#. Tag: title
+#: Conversations.xml:274
+#, no-c-format
+msgid "Success messages"
+msgstr "成功消息"
+
+#. Tag: para
+#: Conversations.xml:275
+#, no-c-format
+msgid ""
+"It is quite common to display a message to the user indicating success or "
+"failure of an action. It is convenient to use a JSF <literal>FacesMessage</"
+"literal> for this. Unfortunately, a successful action often requires a "
+"browser redirect, and JSF does not propagate faces messages across "
+"redirects. This makes it quite difficult to display success messages in "
+"plain JSF."
+msgstr ""
+"显示一条消息来指出动作的成功或失败是相当常见的。此时使用 JSF "
+"<literal>FacesMessage</literal> 是很方便的。可惜的是,成功的动作经常要求浏览"
+"器的重定向,且 JSF 不跨重定向传递 faces 消息。这使得在普通 JSF 里显示成功消息"
+"非常困难。"
+
+#. Tag: para
+#: Conversations.xml:278
+#, no-c-format
+msgid ""
+"The built in conversation-scoped Seam component named "
+"<literal>facesMessages</literal> solves this problem. (You must have the "
+"Seam redirect filter installed.)"
+msgstr ""
+"内置的作用域为 conversation、名为 <literal>facesMessages</literal> 的 Seam 组"
+"件解决了这个问题。(你必须安装 Seam 的重定向过滤器。)"
+
+#. Tag: programlisting
+#: Conversations.xml:281
+#, no-c-format
+msgid ""
+"@Name(\"editDocumentAction\")\n"
+"@Stateless\n"
+"public class EditDocumentBean implements EditDocument {\n"
+"    @In EntityManager em;\n"
+"    @In Document document;\n"
+"    @In FacesMessages facesMessages;\n"
+"    \n"
+"    public String update() {\n"
+"        em.merge(document);\n"
+"        facesMessages.add(\"Document updated\");\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"editDocumentAction\")\n"
+"@Stateless\n"
+"public class EditDocumentBean implements EditDocument {\n"
+"    @In EntityManager em;\n"
+"    @In Document document;\n"
+"    @In FacesMessages facesMessages;\n"
+"    \n"
+"    public String update() {\n"
+"        em.merge(document);\n"
+"        facesMessages.add(\"Document updated\");\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Conversations.xml:282
+#, no-c-format
+msgid ""
+"Any message added to <literal>facesMessages</literal> is used in the very "
+"next render response phase for the current conversation. This even works "
+"when there is no long-running conversation since Seam preserves even "
+"temporary conversation contexts across redirects."
+msgstr ""
+"任何加入到 <literal>facesMessages</literal> 的消息都会在当前 conversation 的"
+"下一显示响应阶段被使用。甚至在没有长期 conversation 而 Seam 跨重定向保存临时"
+"的 conversation 上下文时,这也起作用。"
+
+#. Tag: para
+#: Conversations.xml:285
+#, no-c-format
+msgid "You can even include JSF EL expressions in a faces message summary:"
+msgstr "你甚至可以在 faces 消息总结里包含 JSF EL 表达式:"
+
+#. Tag: programlisting
+#: Conversations.xml:288
+#, no-c-format
+msgid "facesMessages.add(\"Document #{document.title} was updated\");"
+msgstr "facesMessages.add(\"Document #{document.title} was updated\");"
+
+#. Tag: para
+#: Conversations.xml:289
+#, no-c-format
+msgid "You may display the messages in the usual way, for example:"
+msgstr "你可以以普通的方式显示消息,例如:"
+
+#. Tag: programlisting
+#: Conversations.xml:292
+#, no-c-format
+msgid "&lt;h:messages globalOnly=\"true\"/&gt;"
+msgstr "&lt;h:messages globalOnly=\"true\"/&gt;"
+
+#. Tag: title
+#: Conversations.xml:296
+#, no-c-format
+msgid "Using an \"explicit\" conversation id"
+msgstr "使用“显性的”conversation id"
+
+#. Tag: para
+#: Conversations.xml:297
+#, no-c-format
+msgid ""
+"Ordinarily, Seam generates a meaningless unique id for each conversation in "
+"each session. You can customize the id value when you begin the conversation."
+msgstr ""
+"通常,Seam 为每个会话里的每个 conversation 生成一个字面上无意义的唯一 id。当"
+"你开始这个 conversation 时,你可以自定义其 id 的值。"
+
+#. Tag: para
+#: Conversations.xml:300
+#, no-c-format
+msgid ""
+"This feature can be used to customize the conversation id generation "
+"algorithm like so:"
+msgstr "这个功能可以用来自定义生成 conversation id 的算法:"
+
+#. Tag: programlisting
+#: Conversations.xml:303
+#, no-c-format
+msgid ""
+"@Begin(id=\"#{myConversationIdGenerator.nextId}\") \n"
+"public void editHotel() { ... }"
+msgstr ""
+"@Begin(id=\"#{myConversationIdGenerator.nextId}\") \n"
+"public void editHotel() { ... }"
+
+#. Tag: para
+#: Conversations.xml:304
+#, no-c-format
+msgid "Or it can be used to assign a meaningful conversation id:"
+msgstr "或者它可用来分配一个有意义的 conversation id:"
+
+#. Tag: programlisting
+#: Conversations.xml:307
+#, no-c-format
+msgid ""
+"@Begin(id=\"hotel#{hotel.id}\") \n"
+"public String editHotel() { ... }"
+msgstr ""
+"@Begin(id=\"hotel#{hotel.id}\") \n"
+"public String editHotel() { ... }"
+
+#. Tag: programlisting
+#: Conversations.xml:308
+#, no-c-format
+msgid ""
+"@Begin(id=\"hotel#{hotelsDataModel.rowData.id}\") \n"
+"public String selectHotel() { ... }"
+msgstr ""
+"@Begin(id=\"hotel#{hotelsDataModel.rowData.id}\") \n"
+"public String selectHotel() { ... }"
+
+#. Tag: programlisting
+#: Conversations.xml:309
+#, no-c-format
+msgid ""
+"@Begin(id=\"entry#{params[&#39;blogId&#39;]}\")\n"
+"public String viewBlogEntry() { ... }"
+msgstr ""
+"@Begin(id=\"entry#{params[&#39;blogId&#39;]}\")\n"
+"public String viewBlogEntry() { ... }"
+
+#. Tag: programlisting
+#: Conversations.xml:310
+#, no-c-format
+msgid ""
+"@BeginTask(id=\"task#{taskInstance.id}\") \n"
+"public String approveDocument() { ... }"
+msgstr ""
+"@BeginTask(id=\"task#{taskInstance.id}\") \n"
+"public String approveDocument() { ... }"
+
+#. Tag: para
+#: Conversations.xml:311
+#, no-c-format
+msgid ""
+"Clearly, these example result in the same conversation id every time a "
+"particular hotel, blog or task is selected. So what happens if a "
+"conversation with the same conversation id already exists when the new "
+"conversation begins? Well, Seam detects the existing conversation and "
+"redirects to that conversation without running the <literal>@Begin</literal> "
+"method again. This feature helps control the number of workspaces that are "
+"created when using workspace management."
+msgstr ""
+"显然,当选择某个特定的酒店、博客或任务时,这些例子都导致同一个 conversation "
+"id。所以,当新的 conversation 开始时,而相同的 id 已经存在的话,会发生什么"
+"呢?Seam 会检测到现有的 conversation 并重定向到它,而不会再次运行 "
+"<literal>@Begin</literal> 方法。这个特征在使用工作区间管理时,可以帮助控制所"
+"创建的工作区间的数量。"
+
+#. Tag: title
+#: Conversations.xml:317
+#, no-c-format
+msgid "Workspace management"
+msgstr "工作区间管理"
+
+#. Tag: para
+#: Conversations.xml:318
+#, no-c-format
+msgid ""
+"Workspace management is the ability to \"switch\" conversations in a single "
+"window. Seam makes workspace management completely transparent at the level "
+"of the Java code. To enable workspace management, all you need to do is:"
+msgstr ""
+"工作区间管理是在单一窗口“切换”conversation 的能力。Seam 使工作区间管理在 "
+"Java 代码级别完全透明。要启用工作区间管理,你所需做的全部事情是:"
+
+#. Tag: para
+#: Conversations.xml:323
+#, no-c-format
+msgid ""
+"Provide <emphasis>description</emphasis> text for each view id (when using "
+"JSF or Seam navigation rules) or page node (when using jPDL pageflows). This "
+"description text is displayed to the user by the workspace switchers."
+msgstr ""
+"为每个 view id(使用 JSF 或 Seam 导航规则时)或页面节点(使用 jPDL 页面流程"
+"时)提供<emphasis>描述(description)</emphasis>文本。这个描述文本通过工作区"
+"间切换器显示给用户。"
+
+#. Tag: para
+#: Conversations.xml:328
+#, no-c-format
+msgid ""
+"Include one or more of the standard workspace switcher JSP or facelets "
+"fragments in your pages. The standard fragments support workspace management "
+"via a drop down menu, a list of conversations, or breadcrumbs."
+msgstr ""
+"在你的页面里包括一个或多个标准的工作区间切换器 JSP 或 facelets 片段。这些标准"
+"的片段通过下拉菜单、conversation 列表或 breadcrumb 支持工作区间管理。"
+
+#. Tag: title
+#: Conversations.xml:333
+#, no-c-format
+msgid "Workspace management and JSF navigation"
+msgstr "工作区间管理和 JSF 导航"
+
+#. Tag: para
+#: Conversations.xml:334
+#, no-c-format
+msgid ""
+"When you use JSF or Seam navigation rules, Seam switches to a conversation "
+"by restoring the current <literal>view-id</literal> for that conversation. "
+"The descriptive text for the workspace is defined in a file called "
+"<literal>pages.xml</literal> that Seam expects to find in the <literal>WEB-"
+"INF</literal> directory, right next to <literal>faces-config.xml</literal>:"
+msgstr ""
+"当你使用 JSF 或 Seam 导航规则时,Seam 通过恢复 conversation 的当前 "
+"<literal>view-id</literal> 来切换到这个 conversation。这个工作区间的描述文本"
+"在 <literal>WEB-INF</literal> 目录下的 <literal>faces-config.xml</literal> 后"
+"面的 <literal>pages.xml</literal> 里进行定义:"
+
+#. Tag: programlisting
+#: Conversations.xml:337
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/main.xhtml\"&gt;Search hotels: #{hotelBooking."
+"searchString}&lt;/page&gt;\n"
+"    &lt;page view-id=\"/hotel.xhtml\"&gt;View hotel: #{hotel.name}&lt;/"
+"page&gt;\n"
+"    &lt;page view-id=\"/book.xhtml\"&gt;Book hotel: #{hotel.name}&lt;/"
+"page&gt;\n"
+"    &lt;page view-id=\"/confirm.xhtml\"&gt;Confirm: #{booking.description}"
+"&lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/main.xhtml\"&gt;Search hotels: #{hotelBooking."
+"searchString}&lt;/page&gt;\n"
+"    &lt;page view-id=\"/hotel.xhtml\"&gt;View hotel: #{hotel.name}&lt;/"
+"page&gt;\n"
+"    &lt;page view-id=\"/book.xhtml\"&gt;Book hotel: #{hotel.name}&lt;/"
+"page&gt;\n"
+"    &lt;page view-id=\"/confirm.xhtml\"&gt;Confirm: #{booking.description}"
+"&lt;/page&gt;\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Conversations.xml:338
+#, no-c-format
+msgid ""
+"Note that if this file is missing, the Seam application will continue to "
+"work perfectly! The only missing functionality will be the ability to switch "
+"workspaces."
+msgstr ""
+"注意,如果没有这个文件,Seam 的应用程序仍可以继续运行!唯一丢失的功能是切换工"
+"作区间。"
+
+#. Tag: title
+#: Conversations.xml:344
+#, no-c-format
+msgid "Workspace management and jPDL pageflow"
+msgstr "工作区间管理和 jPDL 页面流程"
+
+#. Tag: para
+#: Conversations.xml:345
+#, no-c-format
+msgid ""
+"When you use a jPDL pageflow definition, Seam switches to a conversation by "
+"restoring the current jBPM process state. This is a more flexible model "
+"since it allows the same <literal>view-id</literal> to have different "
+"descriptions depending upon the current <literal>&lt;page&gt;</literal> "
+"node. The description text is defined by the <literal>&lt;page&gt;</literal> "
+"node:"
+msgstr ""
+"当你使用 jPDL 页面流程定义时,Seam 通过恢复当前的 jBPM 过程状态切换到某个 "
+"conversation。这是一个更为灵活的模型,因为它允许相同的 <literal>view-id</"
+"literal> 根据当前的 <literal>&lt;page&gt;</literal> 节点而拥有不同的描述。描"
+"述文本通过 <literal>&lt;page&gt;</literal> 节点进行定义:"
+
+#. Tag: programlisting
+#: Conversations.xml:348
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"shopping\"&gt;\n"
+"\n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"browse\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;page name=\"browse\" view-id=\"/browse.xhtml\"&gt;\n"
+"      &lt;description&gt;DVD Search: #{search.searchPattern}&lt;/"
+"description&gt;\n"
+"      &lt;transition to=\"browse\"/&gt;\n"
+"      &lt;transition name=\"checkout\" to=\"checkout\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"checkout\" view-id=\"/checkout.xhtml\"&gt;\n"
+"      &lt;description&gt;Purchase: $#{cart.total}&lt;/description&gt;\n"
+"      &lt;transition to=\"checkout\"/&gt;\n"
+"      &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"complete\" view-id=\"/complete.xhtml\"&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+"&lt;pageflow-definition name=\"shopping\"&gt;\n"
+"\n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"browse\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;page name=\"browse\" view-id=\"/browse.xhtml\"&gt;\n"
+"      &lt;description&gt;DVD Search: #{search.searchPattern}&lt;/"
+"description&gt;\n"
+"      &lt;transition to=\"browse\"/&gt;\n"
+"      &lt;transition name=\"checkout\" to=\"checkout\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"checkout\" view-id=\"/checkout.xhtml\"&gt;\n"
+"      &lt;description&gt;Purchase: $#{cart.total}&lt;/description&gt;\n"
+"      &lt;transition to=\"checkout\"/&gt;\n"
+"      &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"complete\" view-id=\"/complete.xhtml\"&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+
+#. Tag: title
+#: Conversations.xml:352
+#, no-c-format
+msgid "The conversation switcher"
+msgstr "Conversation 切换器"
+
+#. Tag: para
+#: Conversations.xml:353
+#, no-c-format
+msgid ""
+"Include the following fragment in your JSP or facelets page to get a drop-"
+"down menu that lets you switch to any current conversation, or to any other "
+"page of the application:"
+msgstr ""
+"在你的 JSP 或 facelets 页面里包括下面的片段来获得一个下拉菜单,它可以让你切换"
+"到任何当前的 conversation,或应用程序的任何其他页面:"
+
+#. Tag: programlisting
+#: Conversations.xml:356
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{switcher.conversationIdOrOutcome}\"&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Find Issues\" itemValue=\"findIssue\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Create Issue\" itemValue=\"editIssue\"/"
+"&gt;\n"
+"    &lt;f:selectItems value=\"#{switcher.selectItems}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{switcher.select}\" value=\"Switch\"/&gt;"
+msgstr ""
+"&lt;h:selectOneMenu value=\"#{switcher.conversationIdOrOutcome}\"&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Find Issues\" itemValue=\"findIssue\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Create Issue\" itemValue=\"editIssue\"/"
+"&gt;\n"
+"    &lt;f:selectItems value=\"#{switcher.selectItems}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{switcher.select}\" value=\"Switch\"/&gt;"
+
+#. Tag: para
+#: Conversations.xml:357
+#, no-c-format
+msgid ""
+"In this example, we have a menu that includes an item for each conversation, "
+"together with two additional items that let the user begin a new "
+"conversation."
+msgstr ""
+"在这个例子里,我们有一个菜单,每个 conversation 都是其中一个选项,以及可以让"
+"用户开始新 conversation 的两个其他选项。"
+
+#. Tag: title
+#: Conversations.xml:371
+#, no-c-format
+msgid "The conversation list"
+msgstr "conversation 列表"
+
+#. Tag: para
+#: Conversations.xml:372
+#, no-c-format
+msgid ""
+"The conversation list is very similar to the conversation switcher, except "
+"that it is displayed as a table:"
+msgstr ""
+"conversation 列表和 conversation 切换器非常类似,除了它以表格的形式显示:"
+
+#. Tag: programlisting
+#: Conversations.xml:375
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{conversationList}\" var=\"entry\"\n"
+"        rendered=\"#{not empty conversationList}\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Workspace&lt;/f:facet&gt;\n"
+"        &lt;h:commandLink action=\"#{entry.select}\" value=\"#{entry."
+"description}\"/&gt;\n"
+"        &lt;h:outputText value=\"[current]\" rendered=\"#{entry.current}\"/"
+"&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Activity&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{entry.startDatetime}\"&gt;\n"
+"            &lt;f:convertDateTime type=\"time\" pattern=\"hh:mm a\"/&gt;\n"
+"        &lt;/h:outputText&gt;\n"
+"        &lt;h:outputText value=\" - \"/&gt;\n"
+"        &lt;h:outputText value=\"#{entry.lastDatetime}\"&gt;\n"
+"            &lt;f:convertDateTime type=\"time\" pattern=\"hh:mm a\"/&gt;\n"
+"        &lt;/h:outputText&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"        &lt;h:commandButton action=\"#{entry.select}\" value=\"#{msg.Switch}"
+"\"/&gt;\n"
+"        &lt;h:commandButton action=\"#{entry.destroy}\" value=\"#{msg."
+"Destroy}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+"&lt;h:dataTable value=\"#{conversationList}\" var=\"entry\"\n"
+"        rendered=\"#{not empty conversationList}\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Workspace&lt;/f:facet&gt;\n"
+"        &lt;h:commandLink action=\"#{entry.select}\" value=\"#{entry."
+"description}\"/&gt;\n"
+"        &lt;h:outputText value=\"[current]\" rendered=\"#{entry.current}\"/"
+"&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Activity&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{entry.startDatetime}\"&gt;\n"
+"            &lt;f:convertDateTime type=\"time\" pattern=\"hh:mm a\"/&gt;\n"
+"        &lt;/h:outputText&gt;\n"
+"        &lt;h:outputText value=\" - \"/&gt;\n"
+"        &lt;h:outputText value=\"#{entry.lastDatetime}\"&gt;\n"
+"            &lt;f:convertDateTime type=\"time\" pattern=\"hh:mm a\"/&gt;\n"
+"        &lt;/h:outputText&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"        &lt;h:commandButton action=\"#{entry.select}\" value=\"#{msg.Switch}"
+"\"/&gt;\n"
+"        &lt;h:commandButton action=\"#{entry.destroy}\" value=\"#{msg."
+"Destroy}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+
+#. Tag: para
+#: Conversations.xml:376
+#, no-c-format
+msgid ""
+"We imagine that you will want to customize this for your own application."
+msgstr "我们猜想你将想为自己的应用程序对此进行定制。"
+
+#. Tag: para
+#: Conversations.xml:387
+#, no-c-format
+msgid ""
+"The conversation list is nice, but it takes up a lot of space on the page, "
+"so you probably don&#39;t want to put it on <emphasis>every</emphasis> page."
+msgstr ""
+"conversation 列表很好,但它占据页面的许多空间,所以你可能不想把它放在"
+"<emphasis>每个</emphasis>页面上。"
+
+#. Tag: para
+#: Conversations.xml:390
+#, no-c-format
+msgid "Notice that the conversation list lets the user destroy workspaces."
+msgstr "注意,conversation 列表可以让用户销毁工作区间。"
+
+#. Tag: title
+#: Conversations.xml:396
+#, no-c-format
+msgid "Breadcrumbs"
+msgstr "Breadcrumb"
+
+#. Tag: para
+#: Conversations.xml:397
+#, no-c-format
+msgid ""
+"Breadcrumbs are useful in applications which use a nested conversation "
+"model. The breadcrumbs are a list of links to conversations in the current "
+"conversation stack:"
+msgstr ""
+"Breadcrumb 在使用嵌套 conversation 模型的应用程序里很用用处。Breadcrumb 是当"
+"前 conversation 栈里的 conversation 链接列表。"
+
+#. Tag: programlisting
+#: Conversations.xml:400
+#, no-c-format
+msgid ""
+"&lt;t:dataList value=\"#{conversationStack}\" var=\"entry\"&gt;\n"
+"    &lt;h:outputText value=\" | \"/&gt; \n"
+"    &lt;h:commandLink value=\"#{entry.description}\" action=\"#{entry.select}"
+"\"/&gt;\n"
+"&lt;/t:dataList&gt;"
+msgstr ""
+"&lt;t:dataList value=\"#{conversationStack}\" var=\"entry\"&gt;\n"
+"    &lt;h:outputText value=\" | \"/&gt; \n"
+"    &lt;h:commandLink value=\"#{entry.description}\" action=\"#{entry.select}"
+"\"/&gt;\n"
+"&lt;/t:dataList&gt;"
+
+#. Tag: para
+#: Conversations.xml:413
+#, no-c-format
+msgid ""
+"Please refer to the Seam Issue Tracker demo to see all this functionality in "
+"action!"
+msgstr "请参考 Seam 的 Issue Tracker 程序对这些功能的演示!"
+
+#. Tag: title
+#: Conversations.xml:421
+#, no-c-format
+msgid "Conversational components and JSF component bindings"
+msgstr "Conversational 组件和 JSF 组件绑定"
+
+#. Tag: para
+#: Conversations.xml:422
+#, no-c-format
+msgid ""
+"Conversational components have one minor limitation: they cannot be used to "
+"hold bindings to JSF components. (We generally prefer not to use this "
+"feature of JSF unless absolutely necessary, since it creates a hard "
+"dependency from application logic to the view.) On a postback request, "
+"component bindings are updated during the Restore View phase, before the "
+"Seam conversation context has been restored."
+msgstr ""
+"Conversational 组件有一个小小的限制:它们不能用来保存到 JSF 组件的绑定。(除"
+"非绝对必要,我们通常宁愿不使用 JSF 的这个功能,因为它导致了从应用程序逻辑到视"
+"图的硬依赖性。)在一个 postback 请求里,组件绑定在恢复视图阶段被更新,这发生"
+"在 Seam 的 conversation 上下文被恢复之前。"
+
+#. Tag: para
+#: Conversations.xml:425
+#, no-c-format
+msgid ""
+"To work around this use an event scoped component to store the component "
+"bindings and inject it into the conversation scoped component that requires "
+"it."
+msgstr ""
+"要绕过这个问题,可以使用一个作用域为 event 的组件来恢复组件绑定并注入到需要它"
+"的作用域为 conversation 的组件里。"
+
+#. Tag: programlisting
+#: Conversations.xml:428
+#, no-c-format
+msgid ""
+"@Name(\"grid\")\n"
+"@Scope(ScopeType.EVENT)\n"
+"public class Grid\n"
+"{\n"
+"    private HtmlPanelGrid htmlPanelGrid;\n"
+"\n"
+"    // getters and setters\n"
+"    ...\n"
+"}"
+msgstr ""
+"@Name(\"grid\")\n"
+"@Scope(ScopeType.EVENT)\n"
+"public class Grid\n"
+"{\n"
+"    private HtmlPanelGrid htmlPanelGrid;\n"
+"\n"
+"    // getters and setters\n"
+"    ...\n"
+"}"
+
+#. Tag: programlisting
+#: Conversations.xml:429
+#, no-c-format
+msgid ""
+"@Name(\"gridEditor\")\n"
+"@Scope(ScopeType.CONVERSATION)\n"
+"public class GridEditor\n"
+"{\n"
+"    @In(required=false)\n"
+"    private Grid grid;\n"
+"    \n"
+"    ...\n"
+"}"
+msgstr ""
+"@Name(\"gridEditor\")\n"
+"@Scope(ScopeType.CONVERSATION)\n"
+"public class GridEditor\n"
+"{\n"
+"    @In(required=false)\n"
+"    private Grid grid;\n"
+"    \n"
+"    ...\n"
+"}"

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Drools.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Drools.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Drools.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,407 @@
+# translation of Drools.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Xi HUANG <xhuang at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Drools\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2007-10-12 10:00+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Drools.xml:6
+#, no-c-format
+msgid "Seam and JBoss Rules"
+msgstr "Seam 和 JBoss Rules"
+
+#. Tag: para
+#: Drools.xml:7
+#, no-c-format
+msgid ""
+"Seam makes it easy to call JBoss Rules (Drools) rulebases from Seam "
+"components or jBPM process definitions."
+msgstr ""
+"Seam 使从组件或 jBPM 过程定义里调用 JBoss Rules (Drools) rulebase 变得容易"
+"了。"
+
+#. Tag: title
+#: Drools.xml:11
+#, no-c-format
+msgid "Installing rules"
+msgstr "安装规则"
+
+#. Tag: para
+#: Drools.xml:12
+#, no-c-format
+msgid ""
+"The first step is to make an instance of <literal>org.drools.RuleBase</"
+"literal> available in a Seam context variable. In most rules-driven "
+"applications, rules need to be dynamically deployable, so you will need to "
+"implement some solution that allows you to deploy rules and make them "
+"available to Seam (a future release of Drools will provide a Rule Server "
+"that solves this problem). For testing purposes, Seam provides a built-in "
+"component that compiles a static set of rules from the classpath. You can "
+"install this component via <literal>components.xml</literal>:"
+msgstr ""
+"第一步是在 Seam 上下文变量里产生一个可用的 <literal>org.drools.RuleBase</"
+"literal> 实例。在大多数规则驱动的应用程序里,规则都需是可以动态部署的,所以你"
+"将需要实施某种方案来部署规则并使它们对于 Seam 可用(Drools 以后的版本将提供解"
+"决这个问题的规则服务器)。出于测试的目的,Seam 提供了一个内置组件从 "
+"classpath 编译规则的一个静态集合。你可以通过 <literal>components.xml</"
+"literal> 安装这个组件:"
+
+#. Tag: programlisting
+#: Drools.xml:15
+#, no-c-format
+msgid ""
+"&lt;drools:rule-base name=\"policyPricingRules\"&gt;\n"
+"    &lt;drools:rule-files&gt;\n"
+"        &lt;value&gt;policyPricingRules&lt;/value&gt;\n"
+"    &lt;/drools:rule-files&gt;\n"
+"&lt;/drools:rule-base&gt;"
+msgstr ""
+"&lt;drools:rule-base name=\"policyPricingRules\"&gt;\n"
+"    &lt;drools:rule-files&gt;\n"
+"        &lt;value&gt;policyPricingRules&lt;/value&gt;\n"
+"    &lt;/drools:rule-files&gt;\n"
+"&lt;/drools:rule-base&gt;"
+
+#. Tag: para
+#: Drools.xml:16
+#, no-c-format
+msgid ""
+"This component compiles rules from a set of <literal>.drl</literal> files "
+"and caches an instance of <literal>org.drools.RuleBase</literal> in the Seam "
+"<literal>APPLICATION</literal> context. Note that it is quite likely that "
+"you will need to install multiple rule bases in a rule-driven application."
+msgstr ""
+"这个组件从一套 <literal>.drl</literal> 文件里编译规则并缓存了 Seam 的 "
+"<literal>APPLICATION</literal> 上下文里的 <literal>org.drools.RuleBase</"
+"literal> 实例。注意,在规则驱动的应用程序里,很有可能你将需要安装多个 "
+"rulebase。"
+
+#. Tag: para
+#: Drools.xml:19
+#, no-c-format
+msgid ""
+"If you want to use a Drools DSL, you alse need to specify the DSL definition:"
+msgstr "如果你想使用 Drools DSL,你也需要指定 DSL 定义:"
+
+#. Tag: programlisting
+#: Drools.xml:22
+#, no-c-format
+msgid ""
+"&lt;drools:rule-base name=\"policyPricingRules\" dsl-file=\"policyPricing.dsl"
+"\"&gt;\n"
+"    &lt;drools:rule-files&gt;\n"
+"        &lt;value&gt;policyPricingRules&lt;/value&gt;\n"
+"    &lt;/drools:rule-files&gt;\n"
+"&lt;/drools:rule-base&gt;"
+msgstr ""
+"&lt;drools:rule-base name=\"policyPricingRules\" dsl-file=\"policyPricing.dsl"
+"\"&gt;\n"
+"    &lt;drools:rule-files&gt;\n"
+"        &lt;value&gt;policyPricingRules&lt;/value&gt;\n"
+"    &lt;/drools:rule-files&gt;\n"
+"&lt;/drools:rule-base&gt;"
+
+#. Tag: para
+#: Drools.xml:23
+#, no-c-format
+msgid ""
+"Next, we need to make an instance of <literal>org.drools.WorkingMemory</"
+"literal> available to each conversation. (Each <literal>WorkingMemory</"
+"literal> accumulates facts relating to the current conversation.)"
+msgstr ""
+"然后,我们需要为每个 conversation 创建一个可用的 <literal>org.drools."
+"WorkingMemory</literal> 实例。(每个 <literal>WorkingMemory</literal> 都积累"
+"和当前 conversation 相关的数据。)"
+
+#. Tag: programlisting
+#: Drools.xml:26
+#, no-c-format
+msgid ""
+"&lt;drools:managed-working-memory name=\"policyPricingWorkingMemory\" auto-"
+"create=\"true\" rule-base=\"#{policyPricingRules}\"/&gt;"
+msgstr ""
+"&lt;drools:managed-working-memory name=\"policyPricingWorkingMemory\" auto-"
+"create=\"true\" rule-base=\"#{policyPricingRules}\"/&gt;"
+
+#. Tag: para
+#: Drools.xml:27
+#, no-c-format
+msgid ""
+"Notice that we gave the <literal>policyPricingWorkingMemory</literal> a "
+"reference back to our rule base via the <literal>ruleBase</literal> "
+"configuration property."
+msgstr ""
+"注意,我们通过 <literal>ruleBase</literal> 配置属性给了 "
+"<literal>policyPricingWorkingMemory</literal> 一个执行我们的 rulebase 的引"
+"用。"
+
+#. Tag: title
+#: Drools.xml:33
+#, no-c-format
+msgid "Using rules from a Seam component"
+msgstr "从 Seam 组件里使用规则"
+
+#. Tag: para
+#: Drools.xml:34
+#, no-c-format
+msgid ""
+"We can now inject our <literal>WorkingMemory</literal> into any Seam "
+"component, assert facts, and fire rules:"
+msgstr ""
+"我们现在可以把 <literal>WorkingMemory</literal> 注入到任何 Seam 组件里,插入"
+"事实,并执行规则:"
+
+#. Tag: programlisting
+#: Drools.xml:37
+#, no-c-format
+msgid ""
+"@In WorkingMemory policyPricingWorkingMemory;\n"
+"\n"
+"@In Policy policy;\n"
+"@In Customer customer;\n"
+"\n"
+"public void pricePolicy() throws FactException\n"
+"{\n"
+"    policyPricingWorkingMemory.assertObject(policy);\n"
+"    policyPricingWorkingMemory.assertObject(customer);\n"
+"    policyPricingWorkingMemory.fireAllRules();\n"
+"}"
+msgstr ""
+"@In WorkingMemory policyPricingWorkingMemory;\n"
+"\n"
+"@In Policy policy;\n"
+"@In Customer customer;\n"
+"\n"
+"public void pricePolicy() throws FactException\n"
+"{\n"
+"    policyPricingWorkingMemory.assertObject(policy);\n"
+"    policyPricingWorkingMemory.assertObject(customer);\n"
+"    policyPricingWorkingMemory.fireAllRules();\n"
+"}"
+
+#. Tag: title
+#: Drools.xml:41
+#, no-c-format
+msgid "Using rules from a jBPM process definition"
+msgstr "在 jBPM 过程定义里使用规则"
+
+#. Tag: para
+#: Drools.xml:42
+#, no-c-format
+msgid ""
+"You can even allow a rule base to act as a jBPM action handler, decision "
+"handler, or assignment handler&mdash;in either a pageflow or business "
+"process definition."
+msgstr ""
+"你甚至可以允许 rulebase 作为 jBPM 的动作处理程序、决定处理程序、或者分配处理"
+"程序&mdash;在页面流程或商业过程定义里。"
+
+#. Tag: programlisting
+#: Drools.xml:45
+#, no-c-format
+msgid ""
+"&lt;decision name=\"approval\"&gt;\n"
+"         \n"
+"    &lt;handler class=\"org.jboss.seam.drools.DroolsDecisionHandler\"&gt;\n"
+"        &lt;workingMemoryName&gt;orderApprovalRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"        &lt;assertObjects&gt;\n"
+"            &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"            &lt;element&gt;#{order}&lt;/element&gt;\n"
+"            &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"        &lt;/assertObjects&gt;\n"
+"    &lt;/handler&gt;\n"
+"    \n"
+"    &lt;transition name=\"approved\" to=\"ship\"&gt;\n"
+"        &lt;action class=\"org.jboss.seam.drools.DroolsActionHandler\"&gt;\n"
+"            &lt;workingMemoryName&gt;shippingRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"            &lt;assertObjects&gt;\n"
+"                &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"            &lt;/assertObjects&gt;\n"
+"        &lt;/action&gt;\n"
+"    &lt;/transition&gt;\n"
+"    \n"
+"    &lt;transition name=\"rejected\" to=\"cancelled\"/&gt;\n"
+"    \n"
+"&lt;/decision&gt;"
+msgstr ""
+"&lt;decision name=\"approval\"&gt;\n"
+"         \n"
+"    &lt;handler class=\"org.jboss.seam.drools.DroolsDecisionHandler\"&gt;\n"
+"        &lt;workingMemoryName&gt;orderApprovalRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"        &lt;assertObjects&gt;\n"
+"            &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"            &lt;element&gt;#{order}&lt;/element&gt;\n"
+"            &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"        &lt;/assertObjects&gt;\n"
+"    &lt;/handler&gt;\n"
+"    \n"
+"    &lt;transition name=\"approved\" to=\"ship\"&gt;\n"
+"        &lt;action class=\"org.jboss.seam.drools.DroolsActionHandler\"&gt;\n"
+"            &lt;workingMemoryName&gt;shippingRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"            &lt;assertObjects&gt;\n"
+"                &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"            &lt;/assertObjects&gt;\n"
+"        &lt;/action&gt;\n"
+"    &lt;/transition&gt;\n"
+"    \n"
+"    &lt;transition name=\"rejected\" to=\"cancelled\"/&gt;\n"
+"    \n"
+"&lt;/decision&gt;"
+
+#. Tag: para
+#: Drools.xml:46
+#, no-c-format
+msgid ""
+"The <literal>&lt;assertObjects&gt;</literal> element specifies EL "
+"expressions that return an object or collection of objects to be asserted as "
+"facts into the <literal>WorkingMemory</literal>."
+msgstr ""
+"<literal>&lt;assertObjects&gt;</literal> 元素指定了 EL 表达式,它们返回作为事"
+"实(fact)插入到 <literal>WorkingMemory</literal> 里的对象或对象集合。"
+
+#. Tag: para
+#: Drools.xml:49
+#, no-c-format
+msgid "There is also support for using Drools for jBPM task assignments:"
+msgstr "Seam 也支持把 Drools 用于 jBPM 的任务分配:"
+
+#. Tag: programlisting
+#: Drools.xml:52
+#, no-c-format
+msgid ""
+"&lt;task-node name=\"review\"&gt;\n"
+"    &lt;task name=\"review\" description=\"Review Order\"&gt;\n"
+"        &lt;assignment handler=\"org.jboss.seam.drools."
+"DroolsAssignmentHandler\"&gt;\n"
+"            &lt;workingMemoryName&gt;orderApprovalRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"            &lt;assertObjects&gt;\n"
+"                &lt;element&gt;#{actor}&lt;/element&gt;\n"
+"                &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"            &lt;/assertObjects&gt;\n"
+"        &lt;/assignment&gt;\n"
+"    &lt;/task&gt;\n"
+"    &lt;transition name=\"rejected\" to=\"cancelled\"/&gt;\n"
+"    &lt;transition name=\"approved\" to=\"approved\"/&gt;\n"
+"&lt;/task-node&gt;"
+msgstr ""
+"&lt;task-node name=\"review\"&gt;\n"
+"    &lt;task name=\"review\" description=\"Review Order\"&gt;\n"
+"        &lt;assignment handler=\"org.jboss.seam.drools."
+"DroolsAssignmentHandler\"&gt;\n"
+"            &lt;workingMemoryName&gt;orderApprovalRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"            &lt;assertObjects&gt;\n"
+"                &lt;element&gt;#{actor}&lt;/element&gt;\n"
+"                &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"            &lt;/assertObjects&gt;\n"
+"        &lt;/assignment&gt;\n"
+"    &lt;/task&gt;\n"
+"    &lt;transition name=\"rejected\" to=\"cancelled\"/&gt;\n"
+"    &lt;transition name=\"approved\" to=\"approved\"/&gt;\n"
+"&lt;/task-node&gt;"
+
+#. Tag: para
+#: Drools.xml:53
+#, no-c-format
+msgid ""
+"Certain objects are available to the rules as Drools globals, namely the "
+"jBPM <literal>Assignable</literal>, as <literal>assignable</literal> and a "
+"Seam <literal>Decision</literal> object, as <literal>decision</literal>. "
+"Rules which handle decisions should call <literal>decision.setOutcome"
+"(\"result\")</literal> to determine the result of the decision. Rules which "
+"perform assignments should set the actor id using the <literal>Assignable</"
+"literal>."
+msgstr ""
+"某些对象作为 Drools 全局变量对于规则可用,也就是作为 <literal>assignable</"
+"literal> 的 jBPM <literal>Assignable</literal> 和作为 <literal>decision</"
+"literal> 的 Seam <literal>Decision</literal> 对象。处理 decision 的规则应该调"
+"用 <literal>decision.setOutcome(\"result\")</literal> 来决定 decision 的结"
+"果。执行分配的规则应该用 <literal>Assignable</literal> 设置 actor id。"
+
+#. Tag: programlisting
+#: Drools.xml:56
+#, no-c-format
+msgid ""
+"package org.jboss.seam.examples.shop\n"
+"\n"
+"import org.jboss.seam.drools.Decision\n"
+"\n"
+"global Decision decision\n"
+"\n"
+"rule \"Approve Order For Loyal Customer\"\n"
+"  when\n"
+"    Customer( loyaltyStatus == \"GOLD\" )\n"
+"    Order( totalAmount &lt;= 10000 )\n"
+"  then\n"
+"    decision.setOutcome(\"approved\");\n"
+"end"
+msgstr ""
+"package org.jboss.seam.examples.shop\n"
+"\n"
+"import org.jboss.seam.drools.Decision\n"
+"\n"
+"global Decision decision\n"
+"\n"
+"rule \"Approve Order For Loyal Customer\"\n"
+"  when\n"
+"    Customer( loyaltyStatus == \"GOLD\" )\n"
+"    Order( totalAmount &lt;= 10000 )\n"
+"  then\n"
+"    decision.setOutcome(\"approved\");\n"
+"end"
+
+#. Tag: programlisting
+#: Drools.xml:57
+#, no-c-format
+msgid ""
+"package org.jboss.seam.examples.shop\n"
+"\n"
+"import org.jbpm.taskmgmt.exe.Assignable\n"
+"\n"
+"global Assignable assignable\n"
+"\n"
+"rule \"Assign Review For Small Order\"\n"
+"  when\n"
+"    Order( totalAmount &lt;= 100 )\n"
+"  then\n"
+"    assignable.setPooledActors( new String[] {\"reviewers\"} );\n"
+"end"
+msgstr ""
+"package org.jboss.seam.examples.shop\n"
+"\n"
+"import org.jbpm.taskmgmt.exe.Assignable\n"
+"\n"
+"global Assignable assignable\n"
+"\n"
+"rule \"Assign Review For Small Order\"\n"
+"  when\n"
+"    Order( totalAmount &lt;= 100 )\n"
+"  then\n"
+"    assignable.setPooledActors( new String[] {\"reviewers\"} );\n"
+"end"

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Elenhancements.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Elenhancements.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Elenhancements.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,266 @@
+# translation of Elenhancements.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Xi HUANG <xhuang at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Elenhancements\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2007-10-12 09:58+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Elenhancements.xml:6
+#, no-c-format
+msgid "Expression language enhancements"
+msgstr "表达式语言的增强"
+
+#. Tag: para
+#: Elenhancements.xml:7
+#, no-c-format
+msgid ""
+"The standard Unified Expression Language (EL) assumes that any parameters to "
+"a method expression will be provided by Java code. This means that a method "
+"with parameters cannot be used as a JSF method binding. Seam provides an "
+"enhancement to the EL that allows parameters to be included in a method "
+"expression itself. This applies to <emphasis>any</emphasis> Seam method "
+"expression, including any JSF method binding, for example:"
+msgstr ""
+"标准的统一表达式语言(EL)假设方法表达式的任何参数都将由 Java 代码提供。这意"
+"味着带有参数的方法不能够用作 JSF 方法绑定。Seam 提供了对 EL 的增强,它允许参"
+"数包括在方法表达式本身。这适用于<emphasis>任何</emphasis> Seam 方法表达式以及"
+"任何 JSF 方法绑定,例如:"
+
+#. Tag: programlisting
+#: Elenhancements.xml:10
+#, no-c-format
+msgid ""
+"&lt;s:commandButton action=\"#{hotelBooking.bookHotel(hotel)}\" value=\"Book "
+"Hotel\"/&gt;"
+msgstr ""
+"&lt;s:commandButton action=\"#{hotelBooking.bookHotel(hotel)}\" value=\"Book "
+"Hotel\"/&gt;"
+
+#. Tag: title
+#: Elenhancements.xml:12
+#, no-c-format
+msgid "Configuration"
+msgstr "配置"
+
+#. Tag: para
+#: Elenhancements.xml:13
+#, no-c-format
+msgid ""
+"To use this feature in Facelets, you will need to declare a special view "
+"handler, <literal>SeamFaceletViewHandler</literal> in <literal>faces-config."
+"xml</literal>."
+msgstr ""
+"要使用 Facelets 里的特征,你将需要在 <literal>faces-config.xml</literal> 里声"
+"明一个特殊的视图处理程序 <literal>SeamFaceletViewHandler</literal>。"
+
+#. Tag: programlisting
+#: Elenhancements.xml:16
+#, no-c-format
+msgid ""
+"&lt;faces-config&gt;\n"
+"    &lt;application&gt;\n"
+"        &lt;view-handler&gt;org.jboss.seam.ui.facelet."
+"SeamFaceletViewHandler&lt;/view-handler&gt;\n"
+"    &lt;/application&gt;\n"
+"&lt;/faces-config&gt;"
+msgstr ""
+"&lt;faces-config&gt;\n"
+"    &lt;application&gt;\n"
+"        &lt;view-handler&gt;org.jboss.seam.ui.facelet."
+"SeamFaceletViewHandler&lt;/view-handler&gt;\n"
+"    &lt;/application&gt;\n"
+"&lt;/faces-config&gt;"
+
+#. Tag: title
+#: Elenhancements.xml:20
+#, no-c-format
+msgid "Usage"
+msgstr "用法"
+
+#. Tag: para
+#: Elenhancements.xml:21
+#, no-c-format
+msgid "Parameters are surrounded by parentheses, and separated by commas:"
+msgstr "参数用逗号隔开并用括号括起来:"
+
+#. Tag: programlisting
+#: Elenhancements.xml:24
+#, no-c-format
+msgid ""
+"&lt;h:commandButton action=\"#{hotelBooking.bookHotel(hotel, user)}\" value="
+"\"Book Hotel\"/&gt;"
+msgstr ""
+"&lt;h:commandButton action=\"#{hotelBooking.bookHotel(hotel, user)}\" value="
+"\"Book Hotel\"/&gt;"
+
+#. Tag: para
+#: Elenhancements.xml:25
+#, no-c-format
+msgid ""
+"The parameters <literal>hotel</literal> and <literal>user</literal> will be "
+"evaluated as value expressions and passed to the <literal>bookHotel()</"
+"literal> method of the component. This gives you an alternative to the use "
+"of <literal>@In</literal>."
+msgstr ""
+"参数 <literal>hotel</literal> 和 <literal>user</literal> 将被赋予表达式的值并"
+"传递给这个组件的 <literal>bookHotel()</literal> 方法。这给了你在 "
+"<literal>@In</literal> 注解外的另一个选择。"
+
+#. Tag: para
+#: Elenhancements.xml:28
+#, no-c-format
+msgid "Any value expression may be used as a parameter:"
+msgstr "任何值表达式都可以用作参数:"
+
+#. Tag: programlisting
+#: Elenhancements.xml:31
+#, no-c-format
+msgid ""
+"&lt;h:commandButton action=\"#{hotelBooking.bookHotel(hotel.id, user."
+"username)}\" value=\"Book Hotel\"/&gt;"
+msgstr ""
+"&lt;h:commandButton action=\"#{hotelBooking.bookHotel(hotel.id, user."
+"username)}\" value=\"Book Hotel\"/&gt;"
+
+#. Tag: para
+#: Elenhancements.xml:32
+#, no-c-format
+msgid "You may even pass literal strings using single or double quotes:"
+msgstr "你甚至可以用单引号或双引号传递字符串值:"
+
+#. Tag: programlisting
+#: Elenhancements.xml:35
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=”#{printer.println( ‘Hello world!’ )}” "
+"value=”Hello”/&gt;"
+msgstr ""
+"&lt;h:commandLink action=”#{printer.println( ‘Hello world!’ )}” "
+"value=”Hello”/&gt;"
+
+#. Tag: programlisting
+#: Elenhancements.xml:36
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=’#{printer.println( “Hello again” )}’ value=’Hello’/"
+"&gt;"
+msgstr ""
+"&lt;h:commandLink action=’#{printer.println( “Hello again” )}’ value=’Hello’/"
+"&gt;"
+
+#. Tag: para
+#: Elenhancements.xml:37
+#, no-c-format
+msgid ""
+"You might even want to use this notation for all your action methods, even "
+"when you don’t have parameters to pass. This improves readability by making "
+"it clear that the expression is a method expression and not a value "
+"expression:"
+msgstr ""
+"甚至在没有参数传递时,你还可以为所有的动作方法使用这个注记。这让表达式成为一"
+"个方法表达式而不是值表达式,从而提高了可读性。"
+
+#. Tag: programlisting
+#: Elenhancements.xml:40
+#, no-c-format
+msgid "&lt;s:link value=\"Cancel\" action=\"#{hotelBooking.cancel()}\"/&gt;"
+msgstr "&lt;s:link value=\"Cancel\" action=\"#{hotelBooking.cancel()}\"/&gt;"
+
+#. Tag: title
+#: Elenhancements.xml:44
+#, no-c-format
+msgid "Limitations"
+msgstr "限制"
+
+#. Tag: para
+#: Elenhancements.xml:45
+#, no-c-format
+msgid "Please be aware of the following limitations:"
+msgstr "请注意下面的限制:"
+
+#. Tag: title
+#: Elenhancements.xml:49
+#, no-c-format
+msgid "Incompatibility with JSP 2.1"
+msgstr "和 JSP 2.1 不兼容"
+
+#. Tag: para
+#: Elenhancements.xml:50
+#, no-c-format
+msgid ""
+"This extension is not currently compatible with JSP 2.1. So if you want to "
+"use this extension with JSF 1.2, you will need to use Facelets. The "
+"extension works correctly with JSP 2.0."
+msgstr ""
+"这个扩展目前和 JSP 2.1 不兼容。所以如果你想在 JSP 2.1 里使用这个扩展,你将需"
+"要使用 Facelets。而对于 JSP 2.0,这个扩展可以正常工作。"
+
+#. Tag: title
+#: Elenhancements.xml:56
+#, no-c-format
+msgid "Calling a <literal>MethodExpression</literal> from Java code"
+msgstr "从 Java 代码里调用 <literal>MethodExpression</literal>"
+
+#. Tag: para
+#: Elenhancements.xml:57
+#, no-c-format
+msgid ""
+"Normally, when a <literal>MethodExpression</literal> or "
+"<literal>MethodBinding</literal> is created, the parameter types are passed "
+"in by JSF. In the case of a method binding, JSF assumes that there are no "
+"parameters to pass. With this extension, we can’t know the parameter types "
+"until after the expression has been evaluated. This has two minor "
+"consequences:"
+msgstr ""
+"通常,当<literal>MethodExpression</literal> 或 <literal>MethodBinding</"
+"literal> 被创建时,参数类型通过 JSF 传入。在方法绑定的情况下,JSF 会假定没有"
+"参数传递。用这个扩展,我们在表达式被赋值之前,不可能知道参数的类型。这有两个"
+"后果:"
+
+#. Tag: para
+#: Elenhancements.xml:62
+#, no-c-format
+msgid ""
+"When you invoke a <literal>MethodExpression</literal> in Java code, "
+"parameters you pass may be ignored. Parameters defined in the expression "
+"will take precedence."
+msgstr ""
+"当你在 Java 代码里调用 <literal>MethodExpression</literal> 时,你传入的参数可"
+"能被忽略。在表达式里定义的参数将被优先采用。"
+
+#. Tag: para
+#: Elenhancements.xml:67
+#, no-c-format
+msgid ""
+"Ordinarily, it is safe to call <literal>methodExpression.getMethodInfo()."
+"getParamTypes()</literal> at any time. For an expression with parameters, "
+"you must first invoke the <literal>MethodExpression</literal> before calling "
+"<literal>getParamTypes()</literal>."
+msgstr ""
+"一般来说,在任何时候调用 <literal>methodExpression.getMethodInfo()."
+"getParamTypes()</literal> 都是安全的。对于带有参数的表达式,在调用 "
+"<literal>getParamTypes()</literal> 之前你必须首先调用 "
+"<literal>MethodExpression</literal>。"
+
+#. Tag: para
+#: Elenhancements.xml:72
+#, no-c-format
+msgid ""
+"Both of these cases are exceedingly rare and only apply when you want to "
+"invoke the <literal>MethodExpression</literal> by hand in Java code."
+msgstr ""
+"这两种情况都非常少见,且只有你想在 Java 代码里手工调用 "
+"<literal>MethodExpression</literal> 才会出现。"

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Events.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Events.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Events.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1983 @@
+# translation of Events.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Xi HUANG <xhuang at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Events\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2007-10-11 22:49+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Events.xml:6
+#, no-c-format
+msgid "Events, interceptors and exception handling"
+msgstr "事件、拦截器和异常处理"
+
+#. Tag: para
+#: Events.xml:7
+#, no-c-format
+msgid ""
+"Complementing the contextual component model, there are two further basic "
+"concepts that facilitate the extreme loose-coupling that is the distinctive "
+"feature of Seam applications. The first is a strong event model where events "
+"may be mapped to event listeners via JSF-like method binding expressions. "
+"The second is the pervasive use of annotations and interceptors to apply "
+"cross-cutting concerns to components which implement business logic."
+msgstr ""
+"作为上下文的组件模型的补充,Seam 应用程序还具有两个出众的采用极度松耦合结构的"
+"基本概念。第一个是强事件模型,事件通过类 JSF 的方法绑定表达式映射到事件 "
+"listener。第二个是大量使用注解和拦截器来对实现商业逻辑的组件应用横切关注点"
+"(cross-cutting concern)。"
+
+#. Tag: title
+#: Events.xml:10
+#, no-c-format
+msgid "Seam events"
+msgstr "Seam 里的事件"
+
+#. Tag: para
+#: Events.xml:11
+#, no-c-format
+msgid ""
+"The Seam component model was developed for use with <emphasis>event-driven "
+"applications</emphasis>, specifically to enable the development of fine-"
+"grained, loosely-coupled components in a fine-grained eventing model. Events "
+"in Seam come in several types, most of which we have already seen:"
+msgstr ""
+"Seam 的组件模型是用于<emphasis>事件驱动的应用程序</emphasis>的,特别是针对在"
+"细颗粒度的事件模型里的细颗粒度的、松耦合组件的开发。Seam 里的事件有几种类型,"
+"其中大部分我们已经看到过:"
+
+#. Tag: para
+#: Events.xml:16
+#, no-c-format
+msgid "JSF events"
+msgstr "JSF 事件"
+
+#. Tag: para
+#: Events.xml:21
+#, no-c-format
+msgid "jBPM transition events"
+msgstr "jBPM 的转换事件"
+
+#. Tag: para
+#: Events.xml:26
+#, no-c-format
+msgid "Seam page actions"
+msgstr "Seam 的页面动作"
+
+#. Tag: para
+#: Events.xml:31
+#, no-c-format
+msgid "Seam component-driven events"
+msgstr "Seam 组件驱动的事件"
+
+#. Tag: para
+#: Events.xml:36
+#, no-c-format
+msgid "Seam contextual events"
+msgstr "Seam 基于上下文的事件"
+
+#. Tag: para
+#: Events.xml:41
+#, no-c-format
+msgid ""
+"All of these various kinds of events are mapped to Seam components via JSF "
+"EL method binding expressions. For a JSF event, this is defined in the JSF "
+"template:"
+msgstr ""
+"所有这些不同类型的事件都通过 JSF EL 方法绑定表达式映射到 Seam 组件上。对于 "
+"JSF 事件,这是在 JSF 模板里定义的:"
+
+#. Tag: programlisting
+#: Events.xml:44
+#, no-c-format
+msgid ""
+"&lt;h:commandButton value=\"Click me!\" action=\"#{helloWorld.sayHello}\"/"
+"&gt;"
+msgstr ""
+"&lt;h:commandButton value=\"Click me!\" action=\"#{helloWorld.sayHello}\"/"
+"&gt;"
+
+#. Tag: para
+#: Events.xml:45
+#, no-c-format
+msgid ""
+"For a jBPM transition event, it is specified in the jBPM process definition "
+"or pageflow definition:"
+msgstr "jBPM 的转换事件是在 jBPM 过程定义或页面定义里指定的:"
+
+#. Tag: programlisting
+#: Events.xml:48
+#, no-c-format
+msgid ""
+"&lt;start-page name=\"hello\" view-id=\"/hello.jsp\"&gt;\n"
+"    &lt;transition to=\"hello\"&gt;\n"
+"        &lt;action expression=\"#{helloWorld.sayHello}\"/&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/start-page&gt;"
+msgstr ""
+"&lt;start-page name=\"hello\" view-id=\"/hello.jsp\"&gt;\n"
+"    &lt;transition to=\"hello\"&gt;\n"
+"        &lt;action expression=\"#{helloWorld.sayHello}\"/&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/start-page&gt;"
+
+#. Tag: para
+#: Events.xml:49
+#, no-c-format
+msgid ""
+"You can find out more information about JSF events and jBPM events "
+"elsewhere. Lets concentrate for now upon the two additional kinds of events "
+"defined by Seam."
+msgstr ""
+"你可以在其他地方找到 JSF 事件和 jBPM 事件的更多信息。现在让我们专注于 Seam 定"
+"义的两个其他类型的事件。"
+
+#. Tag: title
+#: Events.xml:52
+#, no-c-format
+msgid "Page actions"
+msgstr "页面动作(Page action)"
+
+#. Tag: para
+#: Events.xml:53
+#, no-c-format
+msgid ""
+"A Seam page action is an event that occurs just before we render a page. We "
+"declare page actions in <literal>WEB-INF/pages.xml</literal>. We can define "
+"a page action for either a particular JSF view id:"
+msgstr ""
+"Seam 的页面动作是恰好在显示页面之前发生的事件。我们在 <literal>WEB-INF/pages."
+"xml</literal> 里定义页面动作。我们可以为某个特定的 JSF view id 定义一个页面动"
+"作:"
+
+#. Tag: programlisting
+#: Events.xml:56
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\" action=\"#{helloWorld.sayHello}\"/&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\" action=\"#{helloWorld.sayHello}\"/&gt;\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Events.xml:57
+#, no-c-format
+msgid ""
+"Or we can use a wildcard to specify an action that applies to all view ids "
+"that match the pattern:"
+msgstr "或者使用通配符来指定应用到所有符合该模式的 view id 上的动作:"
+
+#. Tag: programlisting
+#: Events.xml:60
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello/*\" action=\"#{helloWorld.sayHello}\"/&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello/*\" action=\"#{helloWorld.sayHello}\"/&gt;\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Events.xml:61
+#, no-c-format
+msgid ""
+"If multiple wildcarded page actions match the current view-id, Seam will "
+"call all the actions, in order of least-specific to most-specific."
+msgstr ""
+"如果有多个页面动作匹配当前的 view-id,Seam 将按照最不接近到最接近的顺序调用所"
+"有的动作。"
+
+#. Tag: para
+#: Events.xml:64
+#, no-c-format
+msgid ""
+"The page action method can return a JSF outcome. If the outcome is non-null, "
+"Seam will use the defined navigation rules to navigate to a view."
+msgstr ""
+"页面动作方法可以返回一个 JSF outcome。如果这个 outcome 是非 null 的结果,"
+"Seam 将使用已定义的导航规则导航至相应的视图。"
+
+#. Tag: para
+#: Events.xml:67
+#, no-c-format
+msgid ""
+"Furthermore, the view id mentioned in the <literal>&lt;page&gt;</literal> "
+"element need not correspond to a real JSP or Facelets page! So, we can "
+"reproduce the functionality of a traditional action-oriented framework like "
+"Struts or WebWork using page actions. For example:"
+msgstr ""
+"而且,在 <literal>&lt;page&gt;</literal> 元素里提及的 view id 不需要对应真正"
+"的 JSP 或 Facelets 页面!所以,我们可以重现传统的面向动作的框架的功能,如使用"
+"页面动作的 Struts 或 WebWork。例如:"
+
+#. Tag: programlisting
+#: Events.xml:70
+#, no-c-format
+msgid "TODO: translate struts action into page action"
+msgstr "TODO:把 Struts 的动作翻译为 Seam 的页面动作"
+
+#. Tag: para
+#: Events.xml:71
+#, no-c-format
+msgid ""
+"This is quite useful if you want to do complex things in response to non-"
+"faces requests (for example, HTTP GET requests)."
+msgstr ""
+"如果你想对非 faces 的请求(如 HTTP GET 请求)进行复杂的处理,这非常有用。"
+
+#. Tag: title
+#: Events.xml:74
+#, no-c-format
+msgid "Page parameters"
+msgstr "页面参数"
+
+#. Tag: para
+#: Events.xml:75
+#, no-c-format
+msgid ""
+"A JSF faces request (a form submission) encapsulates both an \"action\" (a "
+"method binding) and \"parameters\" (input value bindings). A page action "
+"might also needs parameters!"
+msgstr ""
+"JSF faces 请求(表单提交)封装了 \"action\"(方法绑定)和 \"parameters\"(输"
+"入值绑定)。页面动作可能也需要参数!"
+
+#. Tag: para
+#: Events.xml:78
+#, no-c-format
+msgid ""
+"Since GET requests are bookmarkable, page parameters are passed as human-"
+"readable request parameters. (Unlike JSF form inputs, which are anything "
+"but!)"
+msgstr ""
+"既然 GET 请求是可加为书签的,那么页面参数作为易读的请求参数进行传递(不象 "
+"JSF 的表单输入)。"
+
+#. Tag: para
+#: Events.xml:81
+#, no-c-format
+msgid ""
+"Seam lets us provide a value binding that maps a named request parameter to "
+"an attribute of a model object."
+msgstr "Seam 提供了一种值绑定,它把请求命名参数映射为模型对象的属性。"
+
+#. Tag: programlisting
+#: Events.xml:84
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\" action=\"#{helloWorld.sayHello}\"&gt;\n"
+"        &lt;param name=\"firstName\" value=\"#{person.firstName}\"/&gt;\n"
+"        &lt;param name=\"lastName\" value=\"#{person.lastName}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\" action=\"#{helloWorld.sayHello}\"&gt;\n"
+"        &lt;param name=\"firstName\" value=\"#{person.firstName}\"/&gt;\n"
+"        &lt;param name=\"lastName\" value=\"#{person.lastName}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Events.xml:85
+#, no-c-format
+msgid ""
+"The <literal>&lt;param&gt;</literal> declaration is bidirectional, just like "
+"a value binding for a JSF input:"
+msgstr ""
+"<literal>&lt;param&gt;</literal> 声明是双向的,就如同 JSF 输入的值绑定:"
+
+#. Tag: para
+#: Events.xml:90
+#, no-c-format
+msgid ""
+"When a non-faces (GET) request for the view id occurs, Seam sets the value "
+"of the named request parameter onto the model object, after performing "
+"appropriate type conversions."
+msgstr ""
+"当对 view id 的非 faces 请求(GET)发生时,Seam 执行合适的类型转换,把命名请"
+"求参数的值设置为模型对象。"
+
+#. Tag: para
+#: Events.xml:95
+#, no-c-format
+msgid ""
+"Any <literal>&lt;s:link&gt;</literal> or <literal>&lt;s:button&gt;</literal> "
+"transparently includes the request parameter. The value of the parameter is "
+"determined by evaluating the value binding during the render phase (when the "
+"<literal>&lt;s:link&gt;</literal> is rendered)."
+msgstr ""
+"任何 <literal>&lt;s:link&gt;</literal> 或 <literal>&lt;s:button&gt;</"
+"literal> 都透明地包含了请求参数。参数值是通过在显示阶段(当 <literal>&lt;s:"
+"link&gt;</literal> 被显示时)对值绑定求值来决定的。"
+
+#. Tag: para
+#: Events.xml:100
+#, no-c-format
+msgid ""
+"Any navigation rule with a <literal>&lt;redirect/&gt;</literal> to the view "
+"id transparently includes the request parameter. The value of the parameter "
+"is determined by evaluating the value binding at the end of the invoke "
+"application phase."
+msgstr ""
+"任何带有到这个 view id 的 <literal>&lt;redirect/&gt;</literal> 的导航规则都透"
+"明地包含请求参数。参数值是在调用阶段结束时通过对值绑定求值来决定的。"
+
+#. Tag: para
+#: Events.xml:105
+#, no-c-format
+msgid ""
+"The value is transparently propagated with any JSF form submission for the "
+"page with the given view id. (This means that view parameters behave like "
+"<literal>PAGE</literal>-scoped context variables for faces requests."
+msgstr ""
+"这些值是通过给定 view id 的页面上的 JSF 表单的提交来填充的。(这意味着视图参"
+"数将类似于 faces 请求的作用域为 <literal>PAGE</literal> 的上下文变量。)"
+
+#. Tag: para
+#: Events.xml:110
+#, no-c-format
+msgid ""
+"The essential idea behind all this is that <emphasis>however</emphasis> we "
+"get from any other page to <literal>/hello.jsp</literal> (or from <literal>/"
+"hello.jsp</literal> back to <literal>/hello.jsp</literal>), the value of the "
+"model attribute referred to in the value binding is \"remembered\", without "
+"the need for a conversation (or other server-side state)."
+msgstr ""
+"所有这些行为背后所隐含的就是:<emphasis>不论</emphasis>我们从任何其他页面转"
+"到 <literal>/hello.jsp</literal>(或从 <literal>/hello.jsp</literal> 回到 "
+"<literal>/hello.jsp</literal>),在值绑定里对模型属性值的引用都会被“记住”,而"
+"不需要 conversation(或其他服务器端的状态)的存在。"
+
+#. Tag: para
+#: Events.xml:113
+#, no-c-format
+msgid ""
+"This all sounds pretty complex, and you&#39;re probably wondering if such an "
+"exotic construct is really worth the effort. Actually, the idea is very "
+"natural once you \"get it\". It is definitely worth taking the time to "
+"understand this stuff. Page parameters are the most elegant way to propagate "
+"state across a non-faces request. They are especially cool for problems like "
+"search screens with bookmarkable results pages, where we would like to be "
+"able to write our application code to handle both POST and GET requests with "
+"the same code. Page parameters eliminate repetitive listing of request "
+"parameters in the view definition and make redirects much easier to code."
+msgstr ""
+"这听起来十分复杂,你可能也想知道这样的一个外来结构是否值得花费心思。实际上,"
+"一旦你理解了,就会发现这个主意是非常自然的。这当然值得花时间来理解它。页面参"
+"数是跨非 faces 请求填充状态的最优雅的方法。对于我们希望能够用自己的代码来处"
+"理 POST 和 GET 请求,如带有可加为标签的结果页面的搜索屏幕等,这尤其有用。页面"
+"参数消除了在视图定义里重复列出请求参数,它也使对重定向的编码更为容易。"
+
+#. Tag: para
+#: Events.xml:116
+#, no-c-format
+msgid ""
+"Note that you don&#39;t need an actual page action method binding to use a "
+"page parameter. The following is perfectly valid:"
+msgstr ""
+"注意,使用页面参数并不要求有一个实际的页面动作方法绑定。下面就是一个有效的例"
+"子: "
+
+#. Tag: programlisting
+#: Events.xml:119
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\"&gt;\n"
+"        &lt;param name=\"firstName\" value=\"#{person.firstName}\"/&gt;\n"
+"        &lt;param name=\"lastName\" value=\"#{person.lastName}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\"&gt;\n"
+"        &lt;param name=\"firstName\" value=\"#{person.firstName}\"/&gt;\n"
+"        &lt;param name=\"lastName\" value=\"#{person.lastName}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Events.xml:120
+#, no-c-format
+msgid "You can even specify a JSF converter:"
+msgstr "你甚至可以指定一个 JSF 转换器:"
+
+#. Tag: programlisting
+#: Events.xml:123
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/calculator.jsp\" action=\"#{calculator.calculate}"
+"\"&gt;\n"
+"        &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"        &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"        &lt;param name=\"op\" converterId=\"com.my.calculator."
+"OperatorConverter\" value=\"#{calculator.op}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/calculator.jsp\" action=\"#{calculator.calculate}"
+"\"&gt;\n"
+"        &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"        &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"        &lt;param name=\"op\" converterId=\"com.my.calculator."
+"OperatorConverter\" value=\"#{calculator.op}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+
+#. Tag: programlisting
+#: Events.xml:124
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/calculator.jsp\" action=\"#{calculator.calculate}"
+"\"&gt;\n"
+"        &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"        &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"        &lt;param name=\"op\" converter=\"#{operatorConverter}\" value=\"#"
+"{calculator.op}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/calculator.jsp\" action=\"#{calculator.calculate}"
+"\"&gt;\n"
+"        &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"        &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"        &lt;param name=\"op\" converter=\"#{operatorConverter}\" value=\"#"
+"{calculator.op}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+
+#. Tag: title
+#: Events.xml:125
+#, no-c-format
+msgid "Navigation"
+msgstr "导航"
+
+#. Tag: para
+#: Events.xml:126
+#, no-c-format
+msgid ""
+"You can use standard JSF navigation rules defined in <literal>faces-config."
+"xml</literal> in a Seam application. However, JSF navigation rules have a "
+"number of annoying limitations:"
+msgstr ""
+"你可以使用 Seam 应用程序里的 <literal>faces-config.xml</literal> 所定义的标"
+"准 JSF 导航规则。然而,JSF 导航规则有大量令人烦恼的限制:"
+
+#. Tag: para
+#: Events.xml:131
+#, no-c-format
+msgid ""
+"It is not possible to specify request parameters to be used when redirecting."
+msgstr "你不能够指定显示时使用的请求参数。"
+
+#. Tag: para
+#: Events.xml:136
+#, no-c-format
+msgid "It is not possible to begin or end conversations from a rule."
+msgstr "你不能够从规则里开始或结束 conversation。"
+
+#. Tag: para
+#: Events.xml:141
+#, no-c-format
+msgid ""
+"Rules work by evaluating the return value of the action method; it is not "
+"possible to evaluate an arbitrary EL expression."
+msgstr "规则只能对动作方法的返回值求值;你不能够给任意的 EL 表达式赋值。"
+
+#. Tag: para
+#: Events.xml:146
+#, no-c-format
+msgid ""
+"A further problem is that \"orchestration\" logic gets scattered between "
+"<literal>pages.xml</literal> and <literal>faces-config.xml</literal>. It&#39;"
+"s better to unify this logic into <literal>pages.xml</literal>."
+msgstr ""
+"另外一个问题就是协调的逻辑分散在 <literal>pages.xml</literal> 和 "
+"<literal>faces-config.xml</literal> 里。它最好统一放入 <literal>pages.xml</"
+"literal>。 "
+
+#. Tag: para
+#: Events.xml:149
+#, no-c-format
+msgid "This JSF navigation rule:"
+msgstr "如下的 JSF 导航规则:"
+
+#. Tag: programlisting
+#: Events.xml:152
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"    &lt;from-view-id&gt;/editDocument.xhtml&lt;/from-view-id&gt;\n"
+"    \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-action&gt;#{documentEditor.update}&lt;/from-action&gt;\n"
+"        &lt;from-outcome&gt;success&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/viewDocument.xhtml&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"    \n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+"&lt;navigation-rule&gt;\n"
+"    &lt;from-view-id&gt;/editDocument.xhtml&lt;/from-view-id&gt;\n"
+"    \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-action&gt;#{documentEditor.update}&lt;/from-action&gt;\n"
+"        &lt;from-outcome&gt;success&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/viewDocument.xhtml&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"    \n"
+"&lt;/navigation-rule&gt;"
+
+#. Tag: para
+#: Events.xml:153
+#, no-c-format
+msgid "Can be rewritten as follows:"
+msgstr "可以重写如下:"
+
+#. Tag: programlisting
+#: Events.xml:156
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if-outcome=\"success\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if-outcome=\"success\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Events.xml:157
+#, no-c-format
+msgid ""
+"But it would be even nicer if we didn&#39;t have to pollute our "
+"<literal>DocumentEditor</literal> component with string-valued return values "
+"(the JSF outcomes). So Seam lets us write:"
+msgstr ""
+"但如果我们不需要用字符串返回值(JSF outcome)来污染 <literal>DocumentEditor</"
+"literal> 组件则更好。所以 Seam 让我们编写如下代码: "
+
+#. Tag: programlisting
+#: Events.xml:160
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\" \n"
+"                   evaluate=\"#{documentEditor.errors.size}\"&gt;\n"
+"        &lt;rule if-outcome=\"0\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\" \n"
+"                   evaluate=\"#{documentEditor.errors.size}\"&gt;\n"
+"        &lt;rule if-outcome=\"0\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Events.xml:161
+#, no-c-format
+msgid "Or even:"
+msgstr "或者甚至:"
+
+#. Tag: programlisting
+#: Events.xml:164
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Events.xml:165
+#, no-c-format
+msgid ""
+"The first form evaluates a value binding to determine the outcome value to "
+"be used by the subsequent rules. The second approach ignores the outcome and "
+"evaluates a value binding for each possible rule."
+msgstr ""
+"第一个表单对值绑定求值来决定随后的规则使用的 outcome 值。第二个忽略了这个 "
+"outcome 并为每个可能的规则对值绑定求值。"
+
+#. Tag: para
+#: Events.xml:168
+#, no-c-format
+msgid ""
+"Of course, when an update succeeds, we probably want to end the current "
+"conversation. We can do that like this:"
+msgstr ""
+"当然,当更新成功时,我们可能想要结束当前的 conversation。我们可以这样做:"
+
+#. Tag: programlisting
+#: Events.xml:171
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Events.xml:172
+#, no-c-format
+msgid ""
+"But ending the conversation loses any state associated with the "
+"conversation, including the document we are currently interested in! One "
+"solution would be to use an immediate render instead of a redirect:"
+msgstr ""
+"但结束 conversation 会丢失和其相关联的状态,包括我们感兴趣的文档!立即显示而"
+"不是重定向将是一个解决方案:"
+
+#. Tag: programlisting
+#: Events.xml:175
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Events.xml:176
+#, no-c-format
+msgid ""
+"But the correct solution is to pass the document id as a request parameter:"
+msgstr "但正确的方法是把 document id 作为请求参数来传入:"
+
+#. Tag: programlisting
+#: Events.xml:179
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"&gt;\n"
+"                &lt;param name=\"documentId\" value=\"#{documentEditor."
+"documentId}\"/&gt;\n"
+"            &lt;/redirect&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"&gt;\n"
+"                &lt;param name=\"documentId\" value=\"#{documentEditor."
+"documentId}\"/&gt;\n"
+"            &lt;/redirect&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Events.xml:180
+#, no-c-format
+msgid ""
+"Null outcomes are a special case in JSF. The null outcome is interpreted to "
+"mean \"redisplay the page\". The following navigation rule matches any non-"
+"null outcome, but <emphasis>not</emphasis> the null outcome:"
+msgstr ""
+"在 JSF 里,为 Null 的 outcome 是一个特例。为 Null 的 outcome 被解释为“重新显"
+"示页面”。下面的导航规则匹配任何非 null 的 outcome,而<emphasis>不是</"
+"emphasis>为 Null 的 outcome:"
+
+#. Tag: programlisting
+#: Events.xml:183
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule&gt;\n"
+"            &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule&gt;\n"
+"            &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Events.xml:184
+#, no-c-format
+msgid ""
+"If you want to perform navigation when a null outcome occurs, use the "
+"following form instead:"
+msgstr "如果你想在为 null 的 outcome 发生时执行导航,可以使用下面的表单:"
+
+#. Tag: programlisting
+#: Events.xml:187
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+
+#. Tag: title
+#: Events.xml:188
+#, no-c-format
+msgid ""
+"Fine-grained files for definition of navigation, page actions and parameters"
+msgstr "定义导航、页面动作和参数的细颗粒度的文件。"
+
+#. Tag: para
+#: Events.xml:189
+#, no-c-format
+msgid ""
+"If you have a lot of different page actions and page parameters, or even "
+"just a lot of navigation rules, you will almost certainly want to split the "
+"declarations up over multiple files. You can define actions and parameters "
+"for a page with the view id <literal>/calc/calculator.jsp</literal> in a "
+"resource named <literal>calc/calculator.page.xml</literal>. The root element "
+"in this case is the <literal>&lt;page&gt;</literal> element, and the view id "
+"is implied:"
+msgstr ""
+"如果你有许多页面动作和页面参数,或者甚至许多导航规则,你当然会把它们的声明分"
+"成多个文件。你可以在名为 <literal>calc/calculator.page.xml</literal> 的资源里"
+"为 view id 为 <literal>/calc/calculator.jsp</literal> 的页面定义动作和参数。"
+"这个例子里的根元素是 <literal>&lt;page&gt;</literal>,且隐含了 view id:"
+
+#. Tag: programlisting
+#: Events.xml:192
+#, no-c-format
+msgid ""
+"&lt;page action=\"#{calculator.calculate}\"&gt;\n"
+"    &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"    &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"    &lt;param name=\"op\" converter=\"#{operatorConverter}\" value=\"#"
+"{calculator.op}\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page action=\"#{calculator.calculate}\"&gt;\n"
+"    &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"    &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"    &lt;param name=\"op\" converter=\"#{operatorConverter}\" value=\"#"
+"{calculator.op}\"/&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: title
+#: Events.xml:193
+#, no-c-format
+msgid "Component-driven events"
+msgstr "组件驱动的事件"
+
+#. Tag: para
+#: Events.xml:194
+#, no-c-format
+msgid ""
+"Seam components can interact by simply calling each others methods. Stateful "
+"components may even implement the observer/observable pattern. But to enable "
+"components to interact in a more loosely-coupled fashion than is possible "
+"when the components call each others methods directly, Seam provides "
+"<emphasis>component-driven events</emphasis>."
+msgstr ""
+"Seam 组件可以简单地互相调用每个方法来进行交互。Stateful 组件甚至可以实现 "
+"observer/observable 模式。当组件直接调用相互的方法时,组件可以更为松耦合的模"
+"式进行交互,为此 Seam 提供了<emphasis>组件驱动的事件</emphasis>。"
+
+#. Tag: para
+#: Events.xml:197
+#, no-c-format
+msgid ""
+"We specify event listeners (observers) in <literal>components.xml</literal>."
+msgstr ""
+"我们在 <literal>components.xml</literal> 里指定事件 listener(observer)。"
+
+#. Tag: programlisting
+#: Events.xml:200
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;event type=\"hello\"&gt;\n"
+"        &lt;action expression=\"#{helloListener.sayHelloBack}\"/&gt;\n"
+"        &lt;action expression=\"#{logger.logHello}\"/&gt;\n"
+"    &lt;/event&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components&gt;\n"
+"    &lt;event type=\"hello\"&gt;\n"
+"        &lt;action expression=\"#{helloListener.sayHelloBack}\"/&gt;\n"
+"        &lt;action expression=\"#{logger.logHello}\"/&gt;\n"
+"    &lt;/event&gt;\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Events.xml:201
+#, no-c-format
+msgid "Where the <emphasis>event type</emphasis> is just an arbitrary string."
+msgstr "这里的 <emphasis>event type</emphasis> 只是任意的一个字符串。"
+
+#. Tag: para
+#: Events.xml:204
+#, no-c-format
+msgid ""
+"When an event occurs, the actions registered for that event will be called "
+"in the order they appear in <literal>components.xml</literal>. How does a "
+"component raise an event? Seam provides a built-in component for this."
+msgstr ""
+"当事件发生时,为该事件注册的动作将按它们在 <literal>components.xml</literal> "
+"里出现的顺序被调用。组件怎样发起一个事件呢?Seam 为此提供了一个内置组件。"
+
+#. Tag: programlisting
+#: Events.xml:207
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World!\");\n"
+"        Events.instance().raiseEvent(\"hello\");\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World!\");\n"
+"        Events.instance().raiseEvent(\"hello\");\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Events.xml:208
+#, no-c-format
+msgid "Or you can use an annotation."
+msgstr "或者你可以使用注解。"
+
+#. Tag: programlisting
+#: Events.xml:211
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    @RaiseEvent(\"hello\")\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World!\");\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    @RaiseEvent(\"hello\")\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World!\");\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Events.xml:212
+#, no-c-format
+msgid ""
+"Notice that this event producer has no dependency upon event consumers. The "
+"event listener may now be implemented with absolutely no dependency upon the "
+"producer:"
+msgstr ""
+"注意,这个事件生产者不依赖于事件消费者。事件 listener 可以绝对不依赖于生产者"
+"而被实现:"
+
+#. Tag: programlisting
+#: Events.xml:215
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    public void sayHelloBack() {\n"
+"        FacesMessages.instance().add(\"Hello to you too!\");\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    public void sayHelloBack() {\n"
+"        FacesMessages.instance().add(\"Hello to you too!\");\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Events.xml:216
+#, no-c-format
+msgid ""
+"The method binding defined in <literal>components.xml</literal> above takes "
+"care of mapping the event to the consumer. If you don&#39;t like futzing "
+"about in the <literal>components.xml</literal> file, you can use an "
+"annotation instead:"
+msgstr ""
+"上面的 <literal>components.xml</literal> 里定义的方法绑定把事件映射到消费者。"
+"如果你不喜欢使用 <literal>components.xml</literal> 文件,你可以使用注解: "
+
+#. Tag: programlisting
+#: Events.xml:219
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    @Observer(\"hello\")\n"
+"    public void sayHelloBack() {\n"
+"        FacesMessages.instance().add(\"Hello to you too!\");\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    @Observer(\"hello\")\n"
+"    public void sayHelloBack() {\n"
+"        FacesMessages.instance().add(\"Hello to you too!\");\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Events.xml:220
+#, no-c-format
+msgid ""
+"You might wonder why I&#39;ve not mentioned anything about event objects in "
+"this discussion. In Seam, there is no need for an event object to propagate "
+"state between event producer and listener. State is held in the Seam "
+"contexts, and is shared between components. However, if you really want to "
+"pass an event object, you can:"
+msgstr ""
+"你可能想知道我为什么在这里没有提及任何事件对象。Seam 不需要事件对象在事件生产"
+"者和侦听者之间传递状态。状态存在于 Seam 的上下文里,并在组件间共享。然而,如"
+"果你确实想传入事件对象,你可以: "
+
+#. Tag: programlisting
+#: Events.xml:223
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    private String name;\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World, my name is #0.\", "
+"name);\n"
+"        Events.instance().raiseEvent(\"hello\", name);\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    private String name;\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World, my name is #0.\", "
+"name);\n"
+"        Events.instance().raiseEvent(\"hello\", name);\n"
+"    }\n"
+"}"
+
+#. Tag: programlisting
+#: Events.xml:224
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    @Observer(\"hello\")\n"
+"    public void sayHelloBack(String name) {\n"
+"        FacesMessages.instance().add(\"Hello #0!\", name);\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    @Observer(\"hello\")\n"
+"    public void sayHelloBack(String name) {\n"
+"        FacesMessages.instance().add(\"Hello #0!\", name);\n"
+"    }\n"
+"}"
+
+#. Tag: title
+#: Events.xml:225
+#, no-c-format
+msgid "Contextual events"
+msgstr "上下文的事件"
+
+#. Tag: para
+#: Events.xml:226
+#, no-c-format
+msgid ""
+"Seam defines a number of built-in events that the application can use to "
+"perform special kinds of framework integration. The events are:"
+msgstr ""
+"Seam 定义了大量的内置事件,应用程序可以用这些事件来执行特殊类型的框架集成。这"
+"些事件有:"
+
+#. Tag: para
+#: Events.xml:231
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.validationFailed</literal> &mdash; called when JSF "
+"validation fails"
+msgstr ""
+"<literal>org.jboss.seam.validationFailed</literal> &mdash; 当 JSF 检验失败时"
+"被调用"
+
+#. Tag: para
+#: Events.xml:236
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.noConversation</literal> &mdash; called when there "
+"is no long running conversation and a long running conversation is required"
+msgstr ""
+"<literal>org.jboss.seam.noConversation</literal> &mdash; 当没有长期运行的 "
+"conversation 且不需要长期运行 conversation 的时候被调用"
+
+#. Tag: para
+#: Events.xml:241
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preSetVariable.&lt;name&gt;</literal> &mdash; called "
+"when the context variable &lt;name&gt; is set"
+msgstr ""
+"<literal>org.jboss.seam.preSetVariable.&lt;name&gt;</literal> &mdash; 当上下"
+"文变量 &lt;name&gt; 被设置时被调用"
+
+#. Tag: para
+#: Events.xml:246
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postSetVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is set"
+msgstr ""
+"<literal>org.jboss.seam.postSetVariable.&lt;name&gt;</literal> &mdash; 当上下"
+"文变量 &lt;name&gt; 被设置时被调用"
+
+#. Tag: para
+#: Events.xml:251
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preRemoveVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is unset"
+msgstr ""
+"<literal>org.jboss.seam.preRemoveVariable.&lt;name&gt;</literal> &mdash; 当上"
+"下文变量 &lt;name&gt; 被取消设置时被调用"
+
+#. Tag: para
+#: Events.xml:256
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postRemoveVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is unset"
+msgstr ""
+"<literal>org.jboss.seam.postRemoveVariable.&lt;name&gt;</literal> &mdash; 当"
+"上下文变量 &lt;name&gt; 被取消设置时被调用"
+
+#. Tag: para
+#: Events.xml:261
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preDestroyContext.&lt;SCOPE&gt;</literal> &mdash; "
+"called before the &lt;SCOPE&gt; context is destroyed"
+msgstr ""
+"<literal>org.jboss.seam.preDestroyContext.&lt;SCOPE&gt;</literal> &mdash; 在 "
+"&lt;SCOPE&gt; 上下文被销毁前被调用"
+
+#. Tag: para
+#: Events.xml:266
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postDestroyContext.&lt;SCOPE&gt;</literal> &mdash; "
+"called after the &lt;SCOPE&gt; context is destroyed"
+msgstr ""
+"<literal>org.jboss.seam.postDestroyContext.&lt;SCOPE&gt;</literal> &mdash; "
+"在 &lt;SCOPE&gt; 上下文被销毁后被调用"
+
+#. Tag: para
+#: Events.xml:271
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beginConversation </literal>&mdash; called whenever "
+"a long-running conversation begins"
+msgstr ""
+"<literal>org.jboss.seam.beginConversation </literal>&mdash; 每当长期的 "
+"conversation 开始时被调用"
+
+#. Tag: para
+#: Events.xml:276
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endConversation </literal>&mdash; called whenever a "
+"long-running conversation ends"
+msgstr ""
+"<literal>org.jboss.seam.endConversation </literal>&mdash; 每当长期的 "
+"conversation 结束时被调用"
+
+#. Tag: para
+#: Events.xml:281
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beginPageflow.&lt;name&gt; </literal>&mdash; called "
+"when the pageflow &lt;name&gt; begins"
+msgstr ""
+"<literal>org.jboss.seam.beginPageflow.&lt;name&gt; </literal>&mdash; 当页面流"
+"程 &lt;name&gt; 开始时被调用"
+
+#. Tag: para
+#: Events.xml:286
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endPageflow.&lt;name&gt; </literal>&mdash; called "
+"when the pageflow &lt;name&gt; ends"
+msgstr ""
+"<literal>org.jboss.seam.endPageflow.&lt;name&gt; </literal>&mdash; 当页面流"
+"程 &lt;name&gt; 结束时被调用"
+
+#. Tag: para
+#: Events.xml:291
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.createProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; is created"
+msgstr ""
+"<literal>org.jboss.seam.createProcess.&lt;name&gt; </literal>&mdash; 当过程 "
+"&lt;name&gt; 被创建时被调用"
+
+#. Tag: para
+#: Events.xml:296
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; ends"
+msgstr ""
+"<literal>org.jboss.seam.endProcess.&lt;name&gt; </literal>&mdash; 当过程 &lt;"
+"name&gt; 结束时被调用"
+
+#. Tag: para
+#: Events.xml:301
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.initProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; is associated with the conversation"
+msgstr ""
+"<literal>org.jboss.seam.initProcess.&lt;name&gt; </literal>&mdash; 当过程 "
+"&lt;name&gt; 和 conversation 相关联时被调用"
+
+#. Tag: para
+#: Events.xml:306
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.initTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is associated with the conversation"
+msgstr ""
+"<literal>org.jboss.seam.initTask.&lt;name&gt; </literal>&mdash; 当任务 &lt;"
+"name&gt; 和 conversation 相关联时被调用"
+
+#. Tag: para
+#: Events.xml:311
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.startTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is started"
+msgstr ""
+"<literal>org.jboss.seam.startTask.&lt;name&gt; </literal>&mdash; 当任务 &lt;"
+"name&gt; 启动时被调用"
+
+#. Tag: para
+#: Events.xml:316
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is ended"
+msgstr ""
+"<literal>org.jboss.seam.endTask.&lt;name&gt; </literal>&mdash; 当任务 &lt;"
+"name&gt; 结束时被调用"
+
+#. Tag: para
+#: Events.xml:321
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postCreate.&lt;name&gt; </literal>&mdash; called "
+"when the component &lt;name&gt; is created"
+msgstr ""
+"<literal>org.jboss.seam.postCreate.&lt;name&gt; </literal>&mdash; 当组件 &lt;"
+"name&gt; 被创建时被调用"
+
+#. Tag: para
+#: Events.xml:326
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preDestroy.&lt;name&gt; </literal>&mdash; called "
+"when the component &lt;name&gt; is destroyed"
+msgstr ""
+"<literal>org.jboss.seam.preDestroy.&lt;name&gt; </literal>&mdash; 当组件 &lt;"
+"name&gt; 被销毁时被调用"
+
+#. Tag: para
+#: Events.xml:331
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beforePhase </literal>&mdash; called before the "
+"start of a JSF phase"
+msgstr ""
+"<literal>org.jboss.seam.beforePhase </literal>&mdash; 在 JSF 阶段起始前被调用"
+
+#. Tag: para
+#: Events.xml:336
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.afterPhase </literal>&mdash; called after the end of "
+"a JSF phase"
+msgstr ""
+"<literal>org.jboss.seam.afterPhase </literal>&mdash; 在 JSF 阶段结束后被调用"
+
+#. Tag: para
+#: Events.xml:341
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postAuthenticate.&lt;name&gt; </literal>&mdash; "
+"called after a user is authenticated"
+msgstr ""
+"<literal>org.jboss.seam.postAuthenticate.&lt;name&gt; </literal>&mdash; 在用"
+"户被验证后被调用"
+
+#. Tag: para
+#: Events.xml:346
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preAuthenticate.&lt;name&gt; </literal>&mdash; "
+"called before attempting to authenticate a user"
+msgstr ""
+"<literal>org.jboss.seam.preAuthenticate.&lt;name&gt; </literal>&mdash; 在试图"
+"验证用户前被调用"
+
+#. Tag: para
+#: Events.xml:351
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.notLoggedIn</literal> &mdash; called there is no "
+"authenticated user and authentication is required"
+msgstr ""
+"<literal>org.jboss.seam.notLoggedIn</literal> &mdash; 当没有被验证的用户和不"
+"需要验证时被调用"
+
+#. Tag: para
+#: Events.xml:356
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.rememberMe</literal> &mdash; occurs when Seam "
+"security detects the username in a cookie"
+msgstr ""
+"<literal>org.jboss.seam.rememberMe</literal> &mdash; 当 Seam security 在 "
+"cookie 里检验到用户名时发生"
+
+#. Tag: para
+#: Events.xml:361
+#, no-c-format
+msgid ""
+"Seam components may observe any of these events in just the same way they "
+"observe any other component-driven events."
+msgstr "和观察其他组件驱动的事件完全一样,Seam 组件可能观察任何这些事件。"
+
+#. Tag: title
+#: Events.xml:364
+#, no-c-format
+msgid "Seam interceptors"
+msgstr "Seam 拦截器"
+
+#. Tag: para
+#: Events.xml:365
+#, no-c-format
+msgid ""
+"EJB 3.0 introduced a standard interceptor model for session bean components. "
+"To add an interceptor to a bean, you need to write a class with a method "
+"annotated <literal>@AroundInvoke</literal> and annotate the bean with an "
+"<literal>@Interceptors</literal> annotation that specifies the name of the "
+"interceptor class. For example, the following interceptor checks that the "
+"user is logged in before allowing invoking an action listener method:"
+msgstr ""
+"EJB 3.0 引入了用于 session bean 组件的标准拦截器模型。要在 bean 里加入一个拦"
+"截器,你需要编写带有用 <literal>@AroundInvoke</literal> 注解的方法的类,并用"
+"指定拦截器类名的 <literal>@Interceptors</literal> 注解这个 bean。例如,下面的"
+"拦截器在允许用户调用一个方法 listener 方法前检查用户是否已经登录:"
+
+#. Tag: programlisting
+#: Events.xml:368
+#, no-c-format
+msgid ""
+"public class LoggedInInterceptor {\n"
+"\n"
+"   @AroundInvoke\n"
+"   public Object checkLoggedIn(InvocationContext invocation) throws "
+"Exception {\n"
+"   \n"
+"      boolean isLoggedIn = Contexts.getSessionContext().get(\"loggedIn\")!"
+"=null;\n"
+"      if (isLoggedIn) {\n"
+"         //the user is already logged in\n"
+"         return invocation.proceed();\n"
+"      }\n"
+"      else {\n"
+"         //the user is not logged in, fwd to login page\n"
+"         return \"login\";\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+"public class LoggedInInterceptor {\n"
+"\n"
+"   @AroundInvoke\n"
+"   public Object checkLoggedIn(InvocationContext invocation) throws "
+"Exception {\n"
+"   \n"
+"      boolean isLoggedIn = Contexts.getSessionContext().get(\"loggedIn\")!"
+"=null;\n"
+"      if (isLoggedIn) {\n"
+"         //the user is already logged in\n"
+"         return invocation.proceed();\n"
+"      }\n"
+"      else {\n"
+"         //the user is not logged in, fwd to login page\n"
+"         return \"login\";\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+
+#. Tag: para
+#: Events.xml:369
+#, no-c-format
+msgid ""
+"To apply this interceptor to a session bean which acts as an action "
+"listener, we must annotate the session bean <literal>@Interceptors"
+"(LoggedInInterceptor.class)</literal>. This is a somewhat ugly annotation. "
+"Seam builds upon the interceptor framework in EJB3 by allowing you to use "
+"<literal>@Interceptors</literal> as a meta-annotation. In our example, we "
+"would create an <literal>@LoggedIn</literal> annotation, as follows:"
+msgstr ""
+"要把这个拦截器应用到作为 action listener 的 session bean 上,我们必须用 "
+"<literal>@Interceptors(LoggedInInterceptor.class)</literal> 注解这个 session "
+"bean。这个注解多少有点丑陋。Seam 依赖于 EJB3 的拦截器框架,它允许你把 "
+"<literal>@Interceptors</literal> 作为元注解使用。在我们的例子里,我们将创建如"
+"下的一个 <literal>@LoggedIn</literal> 注解:"
+
+#. Tag: programlisting
+#: Events.xml:372
+#, no-c-format
+msgid ""
+"@Target(TYPE)\n"
+"@Retention(RUNTIME)\n"
+"@Interceptors(LoggedInInterceptor.class)\n"
+"public @interface LoggedIn {}"
+msgstr ""
+"@Target(TYPE)\n"
+"@Retention(RUNTIME)\n"
+"@Interceptors(LoggedInInterceptor.class)\n"
+"public @interface LoggedIn {}"
+
+#. Tag: para
+#: Events.xml:373
+#, no-c-format
+msgid ""
+"We can now simply annotate our action listener bean with <literal>@LoggedIn</"
+"literal> to apply the interceptor."
+msgstr ""
+"现在我们可以简单地用 <literal>@LoggedIn</literal> 注解 action listener bean "
+"来应用这个拦截器。"
+
+#. Tag: programlisting
+#: Events.xml:376
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"changePasswordAction\")\n"
+"@LoggedIn\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class ChangePasswordAction implements ChangePassword { \n"
+"    \n"
+"    ...\n"
+"    \n"
+"    public String changePassword() { ... }\n"
+"    \n"
+"}"
+msgstr ""
+"@Stateless\n"
+"@Name(\"changePasswordAction\")\n"
+"@LoggedIn\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class ChangePasswordAction implements ChangePassword { \n"
+"    \n"
+"    ...\n"
+"    \n"
+"    public String changePassword() { ... }\n"
+"    \n"
+"}"
+
+#. Tag: para
+#: Events.xml:377
+#, no-c-format
+msgid ""
+"If interceptor ordering is important (it usually is), you can add "
+"<literal>@Interceptor</literal> annotations to your interceptor classes to "
+"specify a partial order of interceptors."
+msgstr ""
+"如果拦截器的顺序很重要(通常是这样),你可以在拦截器类里加入 "
+"<literal>@Interceptor</literal> 注解来指定拦截器的顺序。"
+
+#. Tag: programlisting
+#: Events.xml:380
+#, no-c-format
+msgid ""
+"@Interceptor(around={BijectionInterceptor.class,\n"
+"                     ValidationInterceptor.class,\n"
+"                     ConversationInterceptor.class},\n"
+"             within=RemoveInterceptor.class)\n"
+"public class LoggedInInterceptor\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+"@Interceptor(around={BijectionInterceptor.class,\n"
+"                     ValidationInterceptor.class,\n"
+"                     ConversationInterceptor.class},\n"
+"             within=RemoveInterceptor.class)\n"
+"public class LoggedInInterceptor\n"
+"{\n"
+"    ...\n"
+"}"
+
+#. Tag: para
+#: Events.xml:381
+#, no-c-format
+msgid ""
+"You can even have a \"client-side\" interceptor, that runs around any of the "
+"built-in functionality of EJB3:"
+msgstr "你甚至可以有“客户端”的拦截器,它具有 EJB3 的任何内置功能。"
+
+#. Tag: programlisting
+#: Events.xml:384
+#, no-c-format
+msgid ""
+"@Interceptor(type=CLIENT)\n"
+"public class LoggedInInterceptor\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+"@Interceptor(type=CLIENT)\n"
+"public class LoggedInInterceptor\n"
+"{\n"
+"    ...\n"
+"}"
+
+#. Tag: para
+#: Events.xml:385
+#, no-c-format
+msgid ""
+"EJB interceptors are stateful, with a lifecycle that is the same as the "
+"component they intercept. For interceptors which do not need to maintain "
+"state, Seam lets you get a performance optimization by specifying "
+"<literal>@Interceptor(stateless=true)</literal>."
+msgstr ""
+"EJB 拦截器是有状态的,其生命周期和它们拦截的组件一样。对于不需要维护状态的拦"
+"截器,Seam 让你通过指定 <literal>@Interceptor(stateless=true)</literal> 来获"
+"得性能的优化。"
+
+#. Tag: para
+#: Events.xml:388
+#, no-c-format
+msgid ""
+"Much of the functionality of Seam is implemented as a set of built-in Seam "
+"interceptors, including the interceptors named in the previous example. You "
+"don&#39;t have to explicitly specify these interceptors by annotating your "
+"components; they exist for all interceptable Seam components."
+msgstr ""
+"Seam 的大部分功能都是作为内置拦截器来实现的,这包括前面例子里命名的拦截器。你"
+"不需要通过注解组件来显性地指定这些拦截器;它们为所有可拦截的 Seam 组件而存"
+"在。"
+
+#. Tag: para
+#: Events.xml:391
+#, no-c-format
+msgid ""
+"You can even use Seam interceptors with JavaBean components, not just EJB3 "
+"beans!"
+msgstr ""
+"你甚至可以把 Seam 拦截器和 JavaBean 组件一起使用,而不仅限于 EJB3 bean!"
+
+#. Tag: para
+#: Events.xml:394
+#, no-c-format
+msgid ""
+"EJB defines interception not only for business methods (using "
+"<literal>@AroundInvoke</literal>), but also for the lifecycle methods "
+"<literal>@PostConstruct</literal>, <literal>@PreDestroy</literal>, "
+"<literal>@PrePassivate</literal> and <literal>@PostActive</literal>. Seam "
+"supports all these lifecycle methods on both component and interceptor not "
+"only for EJB3 beans, but also for JavaBean components (except "
+"<literal>@PreDestroy</literal> which is not meaningful for JavaBean "
+"components)."
+msgstr ""
+"EJB 不仅为商业方法(用 <literal>@AroundInvoke</literal>),也为生命周期方法"
+"<literal>@PostConstruct</literal>、<literal>@PreDestroy</literal>、 "
+"<literal>@PrePassivate</literal> 和 <literal>@PostActive</literal> 定义拦截"
+"器。Seam 支持所有这些不仅用于 EJB3 bean、也用于 JavaBean 组件(除了 "
+"<literal>@PreDestroy</literal>,它对于 JavaBean 组件来说没有用处)的生命周期"
+"方法。"
+
+#. Tag: title
+#: Events.xml:397
+#, no-c-format
+msgid "Managing exceptions"
+msgstr "管理异常"
+
+#. Tag: para
+#: Events.xml:398
+#, no-c-format
+msgid ""
+"JSF is surprisingly limited when it comes to exception handling. As a "
+"partial workaround for this problem, Seam lets you define how a particular "
+"class of exception is to be treated by annotating the exception class, or "
+"declaring the exception class in an XML file. This facility is meant to be "
+"combined with the EJB 3.0-standard <literal>@ApplicationException</literal> "
+"annotation which specifies whether the exception should cause a transaction "
+"rollback."
+msgstr ""
+"对于异常处理,JSF 令人吃惊地具有局限性。为了部分地绕开这个问题,Seam 让你定义"
+"如何用注解来对待异常类,或者在 XML 文件里生命异常类。这个功能应该和指定异常是"
+"否应该导致事务的回滚的 EJB 3.0 标准的 <literal>@ApplicationException</"
+"literal> 注解合并。"
+
+#. Tag: title
+#: Events.xml:401
+#, no-c-format
+msgid "Exceptions and transactions"
+msgstr "异常和事务"
+
+#. Tag: para
+#: Events.xml:402
+#, no-c-format
+msgid ""
+"EJB specifies well-defined rules that let us control whether an exception "
+"immediately marks the current transaction for rollback when it is thrown by "
+"a business method of the bean: <emphasis>system exceptions</emphasis> always "
+"cause a transaction rollback, <emphasis>application exceptions</emphasis> do "
+"not cause a rollback by default, but they do if "
+"<literal>@ApplicationException(rollback=true)</literal> is specified. (An "
+"application exception is any checked exception, or any unchecked exception "
+"annotated <literal>@ApplicationException</literal>. A system exception is "
+"any unchecked exception without an <literal>@ApplicationException</literal> "
+"annotation.)"
+msgstr ""
+"EJB 指定了明确的规则,让我们控制是否在异常被 bean 的商业方法抛出时,马上把当"
+"前的事务标记为回滚状态:<emphasis>system exceptions</emphasis> 总是导致事务的"
+"回滚,而<emphasis>application exceptions</emphasis> 缺省不导致回滚,但如果指"
+"定了 <literal>@ApplicationException(rollback=true)</literal> 则它们都导致回"
+"滚。(Application exception 是任何被检查的异常、或任何注解为 "
+"<literal>@ApplicationException</literal> 的未被检查的异常。System exception "
+"是任何没有 <literal>@ApplicationException</literal> 注解的未被检查的异常)"
+
+#. Tag: para
+#: Events.xml:405
+#, no-c-format
+msgid ""
+"Note that there is a difference between marking a transaction for rollback, "
+"and actually rolling it back. The exception rules say that the transaction "
+"should be marked rollback only, but it may still be active after the "
+"exception is thrown."
+msgstr ""
+"注意,标记事务的回滚和实际的回滚是不同的。异常规则只是表明这个事务应该被标记"
+"为回滚而已,在异常抛出后,这个事务仍然是活动的。"
+
+#. Tag: para
+#: Events.xml:408
+#, no-c-format
+msgid ""
+"Seam applies the EJB 3.0 exception rollback rules also to Seam JavaBean "
+"components."
+msgstr "Seam 对 Seam JavaBean 组件也应用 EJB 3.0 异常回滚规则。"
+
+#. Tag: para
+#: Events.xml:411
+#, no-c-format
+msgid ""
+"But these rules only apply in the Seam component layer. What about an "
+"exception that is uncaught and propagates out of the Seam component layer, "
+"and out of the JSF layer? Well, it is always wrong to leave a dangling "
+"transaction open, so Seam rolls back any active transaction when an "
+"exception occurs and is uncaught in the Seam component layer."
+msgstr ""
+"但是,这些规则只适用于 Seam 的组件层。如果异常没有被捕获并传递出 Seam 组件层"
+"和 JSF 层呢?让事务保持悬挂的状态总是错误的,所以此时 Seam 会回滚任何活动的事"
+"务。"
+
+#. Tag: title
+#: Events.xml:414
+#, no-c-format
+msgid "Enabling Seam exception handling"
+msgstr "启用 Seam 的异常处理"
+
+#. Tag: para
+#: Events.xml:415
+#, no-c-format
+msgid ""
+"To enable Seam&#39;s exception handling, we need to make sure we have the "
+"master servlet filter declared in <literal>web.xml</literal>:"
+msgstr ""
+"要启用 Seam 的异常处理,我们需要确保在 <literal>web.xml</literal> 声明了主 "
+"servlet 过滤器:"
+
+#. Tag: programlisting
+#: Events.xml:418
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.servlet.SeamFilter&lt;/filter-"
+"class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;"
+msgstr ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.servlet.SeamFilter&lt;/filter-"
+"class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;"
+
+#. Tag: para
+#: Events.xml:419
+#, no-c-format
+msgid ""
+"You may also need to disable Facelets development mode in <literal>web.xml</"
+"literal> and Seam debug mode in <literal>components.xml</literal> if you "
+"want your exception handlers to fire."
+msgstr ""
+"如果你希望你的异常处理程序可以工作的话,你可能也需要禁用 <literal>web.xml</"
+"literal> 里的 Facelets 开发模式以及 <literal>components.xml</literal> 里的 "
+"Seam 调试模式。"
+
+#. Tag: title
+#: Events.xml:422
+#, no-c-format
+msgid "Using annotations for exception handling"
+msgstr "把注解用于异常处理"
+
+#. Tag: para
+#: Events.xml:423
+#, no-c-format
+msgid ""
+"The following exception results in a HTTP 404 error whenever it propagates "
+"out of the Seam component layer. It does not roll back the current "
+"transaction immediately when thrown, but the transaction will be rolled back "
+"if it the exception is not caught by another Seam component."
+msgstr ""
+"每当下面的异常结果传递出 Seam 的组件层时都会导致 HTTP 404 错误。它被抛出时 "
+"Seam 并不会马上回滚当前的事务,但如果这个异常没有被其他 Seam 捕获时,这个事务"
+"将被回滚。"
+
+#. Tag: programlisting
+#: Events.xml:426
+#, no-c-format
+msgid ""
+"@HttpError(errorCode=404)\n"
+"public class ApplicationException extends Exception { ... }"
+msgstr ""
+"@HttpError(errorCode=404)\n"
+"public class ApplicationException extends Exception { ... }"
+
+#. Tag: para
+#: Events.xml:427
+#, no-c-format
+msgid ""
+"This exception results in a browser redirect whenever it propagates out of "
+"the Seam component layer. It also ends the current conversation. It causes "
+"an immediate rollback of the current transaction."
+msgstr ""
+"每当这个异常传递出 Seam 的组件层时都会导致浏览器重定向。它也会结束当前的 "
+"conversation。它导致当前事务马上被回滚。"
+
+#. Tag: programlisting
+#: Events.xml:430
+#, no-c-format
+msgid ""
+"@Redirect(viewId=\"/failure.xhtml\", end=true)\n"
+"@ApplicationException(rollback=true)\n"
+"public class UnrecoverableApplicationException extends RuntimeException "
+"{ ... }"
+msgstr ""
+"@Redirect(viewId=\"/failure.xhtml\", end=true)\n"
+"@ApplicationException(rollback=true)\n"
+"public class UnrecoverableApplicationException extends RuntimeException "
+"{ ... }"
+
+#. Tag: para
+#: Events.xml:431
+#, no-c-format
+msgid ""
+"Note that <literal>@Redirect</literal> does not work for exceptions which "
+"occur during the render phase of the JSF lifecycle."
+msgstr ""
+"注意,<literal>@Redirect</literal> 不能用于在 JSF 生命周期的显示阶段发生的异"
+"常。"
+
+#. Tag: para
+#: Events.xml:434
+#, no-c-format
+msgid ""
+"This exception results in a redirect, along with a message to the user, when "
+"it propagates out of the Seam component layer. It also immediately rolls "
+"back the current transaction."
+msgstr ""
+"但这个异常传递出 Seam 的组件层时,它导致重定向并向用户发送消息。它也立即回滚"
+"当前的事务。"
+
+#. Tag: programlisting
+#: Events.xml:437
+#, no-c-format
+msgid ""
+"@Redirect(viewId=\"/error.xhtml\", message=\"Unexpected error\")\n"
+"public class SystemException extends RuntimeException { ... }"
+msgstr ""
+"@Redirect(viewId=\"/error.xhtml\", message=\"Unexpected error\")\n"
+"public class SystemException extends RuntimeException { ... }"
+
+#. Tag: title
+#: Events.xml:438
+#, no-c-format
+msgid "Using XML for exception handling"
+msgstr "把 XML 用于异常处理"
+
+#. Tag: para
+#: Events.xml:439
+#, no-c-format
+msgid ""
+"Since we can&#39;t add annotations to all the exception classes we are "
+"interested in, Seam also lets us specify this functionality in "
+"<literal>pages.xml</literal>."
+msgstr ""
+"既然我们不能在所有我们感兴趣的异常类里加入注解,Seam 让我们在 <literal>pages."
+"xml</literal> 里指定这个功能。"
+
+#. Tag: programlisting
+#: Events.xml:442
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   \n"
+"   &lt;exception class=\"javax.persistence.EntityNotFoundException\"&gt;\n"
+"      &lt;http-error error-code=\"404\"/&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"   &lt;exception class=\"javax.persistence.PersistenceException\"&gt;\n"
+"      &lt;end-conversation/&gt;\n"
+"      &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"          &lt;message&gt;Database access failed&lt;/message&gt;\n"
+"      &lt;/redirect&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"   &lt;exception&gt;\n"
+"      &lt;end-conversation/&gt;\n"
+"      &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"          &lt;message&gt;Unexpected failure&lt;/message&gt;\n"
+"      &lt;/redirect&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"   \n"
+"   &lt;exception class=\"javax.persistence.EntityNotFoundException\"&gt;\n"
+"      &lt;http-error error-code=\"404\"/&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"   &lt;exception class=\"javax.persistence.PersistenceException\"&gt;\n"
+"      &lt;end-conversation/&gt;\n"
+"      &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"          &lt;message&gt;Database access failed&lt;/message&gt;\n"
+"      &lt;/redirect&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"   &lt;exception&gt;\n"
+"      &lt;end-conversation/&gt;\n"
+"      &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"          &lt;message&gt;Unexpected failure&lt;/message&gt;\n"
+"      &lt;/redirect&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Events.xml:443
+#, no-c-format
+msgid ""
+"The last <literal>&lt;exception&gt;</literal> declaration does not specify a "
+"class, and is a catch-all for any exception for which handling is not "
+"otherwise specified via annotations or in <literal>pages.xml</literal>."
+msgstr ""
+"最后的 <literal>&lt;exception&gt;</literal> 声明没有指定类,它捕获任何没有在 "
+"<literal>pages.xml</literal> 里用注解指定如何处理的异常。"
+
+#. Tag: para
+#: Events.xml:446
+#, no-c-format
+msgid ""
+"You can also access the handled exception instance through EL, Seam places "
+"it in the conversation context, e.g. to access the message of the exception:"
+msgstr ""
+"你也可以通过 EL 访问被处理的异常实例,Seam 把它放入了 conversation 上下文。例"
+"如,要访问异常的消息:"
+
+#. Tag: programlisting
+#: Events.xml:449
+#, no-c-format
+msgid ""
+"...\n"
+"throw new AuthorizationException(\"You are not allowed to do this!\");\n"
+"\n"
+"&lt;pages&gt;\n"
+"\n"
+"    &lt;exception class=\"org.jboss.seam.security.AuthorizationException"
+"\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"        &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"            &lt;message severity=\"WARN\"&gt;#{handledException.message}&lt;/"
+"message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"\n"
+"&lt;/pages&gt;"
+msgstr ""
+"...\n"
+"throw new AuthorizationException(\"You are not allowed to do this!\");\n"
+"\n"
+"&lt;pages&gt;\n"
+"\n"
+"    &lt;exception class=\"org.jboss.seam.security.AuthorizationException"
+"\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"        &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"            &lt;message severity=\"WARN\"&gt;#{handledException.message}&lt;/"
+"message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"\n"
+"&lt;/pages&gt;"

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Framework.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Framework.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Framework.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1183 @@
+# translation of Framework.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Xi HUANG <xhuang at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Framework\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2007-10-11 22:38+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Framework.xml:6
+#, no-c-format
+msgid "The Seam Application Framework"
+msgstr "Seam 应用程序框架"
+
+#. Tag: para
+#: Framework.xml:7
+#, no-c-format
+msgid ""
+"Seam makes it really easy to create applications by writing plain Java "
+"classes with annotations, which don&#39;t need to extend any special "
+"interfaces or superclasses. But we can simplify some common programming "
+"tasks even further, by providing a set of pre-built components which can be "
+"re-used either by configuration in <literal>components.xml</literal> (for "
+"very simple cases) or extension."
+msgstr ""
+"Seam 使得用带有注解的普通 Java 类创建应用程序变的很容易,你不需要扩展任何特殊"
+"的接口或超类。但是,通过一系列可被 <literal>components.xml</literal> 里的配置"
+"(对于极其简单的类而言)或继承重用的预置组件,我们甚至可以进一步简化一些通用"
+"的编程任务。"
+
+#. Tag: para
+#: Framework.xml:10
+#, no-c-format
+msgid ""
+"The <emphasis>Seam Application Framework</emphasis> can reduce the amount of "
+"code you need to write when doing basic database access in a web "
+"application, using either Hibernate or JPA."
+msgstr ""
+"当你用 Hibernate 或 JPA 编写 web 程序里基本的数据库存取时,<emphasis>Seam 应"
+"用程序框架</emphasis>可以减少代码量。"
+
+#. Tag: para
+#: Framework.xml:13
+#, no-c-format
+msgid ""
+"We should emphasize that the framework is extremely simple, just a handful "
+"of simple classes that are easy to understand and extend. The \"magic\" is "
+"in Seam itself&mdash;the same magic you use when creating any Seam "
+"application even without using this framework."
+msgstr ""
+"我们应该强调这个框架是非常的简单,它仅仅是少量的且简单的几个很容易理解和扩展"
+"的类。其“魔法”是 Seam 本身&mdash;你即使不使用这个框架来创建 Seam 应用程序也要"
+"用到的“魔法”。"
+
+#. Tag: title
+#: Framework.xml:17
+#, no-c-format
+msgid "Introduction"
+msgstr "简介"
+
+#. Tag: para
+#: Framework.xml:18
+#, no-c-format
+msgid ""
+"The components provided by the Seam application framework may be used in one "
+"of two different approaches. The first way is to install and configure an "
+"instance of the component in <literal>components.xml</literal>, just like we "
+"have done with other kinds of built-in Seam components. For example, the "
+"following fragment from <literal>components.xml</literal> installs a "
+"component which can perform basic CRUD operations for a <literal>Contact</"
+"literal> entity:"
+msgstr ""
+"有两种不同的途径使用 Seam 应用程序框架所提供的组件。第一种是安装并配置 "
+"<literal>components.xml</literal> 里定义的组件实例,就和我们使用其他类型的内"
+"置 Seam 组件一样。例如,下面的 <literal>components.xml</literal> 里的代码安装"
+"了一个组件,它可以为 <literal>Contact</literal> 实体执行基本的 CRUD 操作:"
+
+#. Tag: programlisting
+#: Framework.xml:21
+#, no-c-format
+msgid ""
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" \n"
+"                       entity-manager=\"#{personDatabase}\"&gt;\n"
+"    &lt;framework:id&gt;#{param.personId}&lt;/framework:id&gt;\n"
+"&lt;/framework:entity-home&gt;"
+msgstr ""
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" \n"
+"                       entity-manager=\"#{personDatabase}\"&gt;\n"
+"    &lt;framework:id&gt;#{param.personId}&lt;/framework:id&gt;\n"
+"&lt;/framework:entity-home&gt;"
+
+#. Tag: para
+#: Framework.xml:22
+#, no-c-format
+msgid ""
+"If that looks a bit too much like \"programming in XML\" for your taste, you "
+"can use extension instead:"
+msgstr "如果这看起来太象“用 XML 编程”的话,你也可以用继承来代替:"
+
+#. Tag: programlisting
+#: Framework.xml:25
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; implements "
+"LocalPersonHome {\n"
+"    @RequestParameter String personId;\n"
+"    @In EntityManager personDatabase;\n"
+"    \n"
+"    public Object getId() { return personId; }\n"
+"    public EntityManager getEntityManager() { return personDatabase; }\n"
+"    \n"
+"}"
+msgstr ""
+"@Stateful\n"
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; implements "
+"LocalPersonHome {\n"
+"    @RequestParameter String personId;\n"
+"    @In EntityManager personDatabase;\n"
+"    \n"
+"    public Object getId() { return personId; }\n"
+"    public EntityManager getEntityManager() { return personDatabase; }\n"
+"    \n"
+"}"
+
+#. Tag: para
+#: Framework.xml:26
+#, no-c-format
+msgid ""
+"The second approach has one huge advantage: you can easily add extra "
+"functionality, and override the built-in functionality (the framework "
+"classes were carefully designed for extension and customization)."
+msgstr ""
+"第二种方法有一个巨大的优势:你可以容易地添加额外的功能来覆盖内置的功能(框架"
+"类都是小心地设计成易于扩展和定制)。"
+
+#. Tag: para
+#: Framework.xml:29
+#, no-c-format
+msgid ""
+"A second advantage is that your classes may be EJB stateful sessin beans, if "
+"you like. (They do not have to be, they can be plain JavaBean components if "
+"you prefer.)"
+msgstr ""
+"另外一个优势是:如果你喜欢,你的类可以是 EJB stateful sessin bean(如果愿意的"
+"话,也可以是普通的 JavaBean 组件)。"
+
+#. Tag: para
+#: Framework.xml:32
+#, no-c-format
+msgid ""
+"At this time, the Seam Application Framework provides just four built-in "
+"components: <literal>EntityHome</literal> and <literal>HibernateEntityHome</"
+"literal> for CRUD, along with <literal>EntityQuery</literal> and "
+"<literal>HibernateEntityQuery</literal> for queries."
+msgstr ""
+"目前,Seam 应用程序框架只提供 4 个内置组件:用于 CRUD 的 "
+"<literal>EntityHome</literal> 和 <literal>HibernateEntityHome</literal>,以及"
+"用于查询(query)的 <literal>EntityQuery</literal> 和 "
+"<literal>HibernateEntityQuery</literal>。"
+
+#. Tag: para
+#: Framework.xml:35
+#, no-c-format
+msgid ""
+"The Home and Query components are written so that they can function with a "
+"scope of session, event or conversation. Which scope you use depends upon "
+"the state model you wish to use in your application."
+msgstr ""
+"Home 和 Query 组件都具有 session、event 或 conversation 的作用域。使用哪种可"
+"以根据应用程序的状态模型而定。"
+
+#. Tag: para
+#: Framework.xml:38
+#, no-c-format
+msgid ""
+"The Seam Application Framework only works with Seam-managed persistence "
+"contexts. By default, the components will look for a persistence context "
+"named <literal>entityManager</literal>."
+msgstr ""
+"Seam 应用程序框架只能和 Seam 管理的持久性上下文一起工作。在缺省情况下,组件将"
+"寻找名为 <literal>entityManager</literal> 的持久性上下文。"
+
+#. Tag: title
+#: Framework.xml:44
+#, no-c-format
+msgid "Home objects"
+msgstr "Home 对象"
+
+#. Tag: para
+#: Framework.xml:45
+#, no-c-format
+msgid ""
+"A Home object provides persistence operations for a particular entity class. "
+"Suppose we have our trusty <literal>Person</literal> class:"
+msgstr ""
+"Home 对象提供特定的实体类的持久性操作。假设我们有一个 <literal>Person</"
+"literal> 类:"
+
+#. Tag: programlisting
+#: Framework.xml:48
+#, no-c-format
+msgid ""
+"@Entity\n"
+"public class Person {\n"
+"    @Id private Long id;\n"
+"    private String firstName;\n"
+"    private String lastName;\n"
+"    private Country nationality;\n"
+"    \n"
+"    //getters and setters...\n"
+"}"
+msgstr ""
+"@Entity\n"
+"public class Person {\n"
+"    @Id private Long id;\n"
+"    private String firstName;\n"
+"    private String lastName;\n"
+"    private Country nationality;\n"
+"    \n"
+"    //getters and setters...\n"
+"}"
+
+#. Tag: para
+#: Framework.xml:49
+#, no-c-format
+msgid ""
+"We can define a <literal>personHome</literal> component either via "
+"configuration:"
+msgstr "我么可以定义通过配置来定义一个 <literal>personHome</literal> 组件:"
+
+#. Tag: programlisting
+#: Framework.xml:52
+#, no-c-format
+msgid ""
+"&lt;framework:entity-home name=\"personHome\" entity-class=\"eg.Person\" /"
+"&gt;"
+msgstr ""
+"&lt;framework:entity-home name=\"personHome\" entity-class=\"eg.Person\" /"
+"&gt;"
+
+#. Tag: para
+#: Framework.xml:53
+#, no-c-format
+msgid "Or via extension:"
+msgstr "或通过继承"
+
+#. Tag: programlisting
+#: Framework.xml:56
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {}"
+msgstr ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {}"
+
+#. Tag: para
+#: Framework.xml:57
+#, no-c-format
+msgid ""
+"A Home object provides the following operations: <literal>persist()</"
+"literal>, <literal>remove()</literal>, <literal>update()</literal> and "
+"<literal>getInstance()</literal>. Before you can call the <literal>remove()</"
+"literal>, or <literal>update()</literal> operations, you must first set the "
+"identifier of the object you are interested in, using the <literal>setId()</"
+"literal> method."
+msgstr ""
+"Home 对象提供下面的操作:<literal>persist()</literal>、<literal>remove()</"
+"literal>、<literal>update()</literal> 和 <literal>getInstance()</literal>。在"
+"你可以调用 <literal>remove()</literal> 或 <literal>update()</literal> 之前,"
+"你必须首先用 <literal>setId()</literal> 方法设置你感兴趣的对象的标识符。"
+
+#. Tag: para
+#: Framework.xml:60
+#, no-c-format
+msgid "We can use a Home directly from a JSF page, for example:"
+msgstr "我们可以直接在 JSF 页面里使用 Home 对象,例如:"
+
+#. Tag: programlisting
+#: Framework.xml:63
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Create Person&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{personHome.instance."
+"firstName}\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{personHome.instance."
+"lastName}\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h1&gt;Create Person&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{personHome.instance."
+"firstName}\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{personHome.instance."
+"lastName}\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+
+#. Tag: para
+#: Framework.xml:64
+#, no-c-format
+msgid ""
+"Usually, it is much nicer to be able to refer to the <literal>Person</"
+"literal> merely as <literal>person</literal>, so let&#39;s make that "
+"possible by adding a line to <literal>components.xml</literal>:"
+msgstr ""
+"通常,用 <literal>person</literal> 来引用 <literal>Person</literal> 会更好。"
+"为此,让我们在 <literal>components.xml</literal> 里加入如下一行:"
+
+#. Tag: programlisting
+#: Framework.xml:67
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" /&gt;"
+msgstr ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" /&gt;"
+
+#. Tag: para
+#: Framework.xml:68
+#, no-c-format
+msgid ""
+"(If we are using configuration.) Or by adding a <literal>@Factory</literal> "
+"method to <literal>PersonHome</literal>:"
+msgstr ""
+"(如果我们正在使用配置。)或者通过在 <literal>PersonHome</literal> 里加入一"
+"个 <literal>@Factory</literal> 方法:"
+
+#. Tag: programlisting
+#: Framework.xml:71
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"}"
+msgstr ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"}"
+
+#. Tag: para
+#: Framework.xml:72
+#, no-c-format
+msgid ""
+"(If we are using extension.) This change simplifies our JSF page to the "
+"following:"
+msgstr "(如果我们正在使用继承。)这种修改将我们的 JSF 页面简化为:"
+
+#. Tag: programlisting
+#: Framework.xml:75
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Create Person&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{person.firstName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{person.lastName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h1&gt;Create Person&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{person.firstName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{person.lastName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+
+#. Tag: para
+#: Framework.xml:76
+#, no-c-format
+msgid ""
+"Well, that lets us create new <literal>Person</literal> entries. Yes, that "
+"is all the code that is required! Now, if we want to be able to display, "
+"update and delete pre-existing <literal>Person</literal> entries in the "
+"database, we need to be able to pass the entry identifier to the "
+"<literal>PersonHome</literal>. Page parameters are a great way to do that:"
+msgstr ""
+"好了,让我们来创建新的 <literal>Person</literal> 实体。没错,这就是所需的全部"
+"代码!现在,如果我们希望能显示、更新和删除之前在数据库里存在的 "
+"<literal>Person</literal> 实体,我们需要把实体标识符传递给 "
+"<literal>PersonHome</literal>。使用页面参数是个不错的方法:"
+
+#. Tag: programlisting
+#: Framework.xml:79
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/editPerson.jsp\"&gt;\n"
+"        &lt;param name=\"personId\" value=\"#{personHome.id}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/editPerson.jsp\"&gt;\n"
+"        &lt;param name=\"personId\" value=\"#{personHome.id}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Framework.xml:80
+#, no-c-format
+msgid "Now we can add the extra operations to our JSF page:"
+msgstr "现在我们可以在 JSF 页面里添加额外的操作了:"
+
+#. Tag: programlisting
+#: Framework.xml:83
+#, no-c-format
+msgid ""
+"&lt;h1&gt;\n"
+"    &lt;h:outputText rendered=\"#{!personHome.managed}\" value=\"Create "
+"Person\"/&gt;\n"
+"    &lt;h:outputText rendered=\"#{personHome.managed}\" value=\"Edit Person"
+"\"/&gt;\n"
+"&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{person.firstName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{person.lastName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\" \n"
+"                             rendered=\"#{!personHome.managed}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Update Person\" action=\"#{personHome."
+"update}\" \n"
+"                             rendered=\"#{personHome.managed}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Delete Person\" action=\"#{personHome."
+"remove}\" \n"
+"                             rendered=\"#{personHome.managed}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h1&gt;\n"
+"    &lt;h:outputText rendered=\"#{!personHome.managed}\" value=\"Create "
+"Person\"/&gt;\n"
+"    &lt;h:outputText rendered=\"#{personHome.managed}\" value=\"Edit Person"
+"\"/&gt;\n"
+"&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{person.firstName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{person.lastName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\" \n"
+"                             rendered=\"#{!personHome.managed}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Update Person\" action=\"#{personHome."
+"update}\" \n"
+"                             rendered=\"#{personHome.managed}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Delete Person\" action=\"#{personHome."
+"remove}\" \n"
+"                             rendered=\"#{personHome.managed}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+
+#. Tag: para
+#: Framework.xml:84
+#, no-c-format
+msgid ""
+"When we link to the page with no request parameters, the page will be "
+"displayed as a \"Create Person\" page. When we provide a value for the "
+"<literal>personId</literal> request parameter, it will be an \"Edit Person\" "
+"page."
+msgstr ""
+"当不用任何请求参数来连接至该页面时,它将作为 \"Create Person\" 页面显示。而当"
+"我们提供 <literal>personId</literal> 请求参数时,它将显示为 \"Edit Person\" "
+"页面。"
+
+#. Tag: para
+#: Framework.xml:87
+#, no-c-format
+msgid ""
+"Suppose we need to create <literal>Person</literal> entries with their "
+"nationality initialized. We can do that easily, via configuration:"
+msgstr ""
+"假设我们需要创建初始化其 nationality 的 <literal>Person</literal> 实体,我们"
+"可以用配置轻易实现:"
+
+#. Tag: programlisting
+#: Framework.xml:90
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" \n"
+"                       new-instance=\"#{newPerson}\"/&gt;\n"
+"\n"
+"&lt;component name=\"newPerson\" \n"
+"           class=\"eg.Person\"&gt;\n"
+"    &lt;property name=\"nationality\"&gt;#{country}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" \n"
+"                       new-instance=\"#{newPerson}\"/&gt;\n"
+"\n"
+"&lt;component name=\"newPerson\" \n"
+"           class=\"eg.Person\"&gt;\n"
+"    &lt;property name=\"nationality\"&gt;#{country}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+
+#. Tag: para
+#: Framework.xml:91
+#, no-c-format
+msgid "Or by extension:"
+msgstr "或者通过继承:"
+
+#. Tag: programlisting
+#: Framework.xml:94
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"}"
+
+#. Tag: para
+#: Framework.xml:95
+#, no-c-format
+msgid ""
+"Of course, the <literal>Country</literal> could be an object managed by "
+"another Home object, for example, <literal>CountryHome</literal>."
+msgstr ""
+"当然,<literal>Country</literal> 可以是由其他 Home 对象管理的对象,例如:"
+"<literal>CountryHome</literal>。"
+
+#. Tag: para
+#: Framework.xml:98
+#, no-c-format
+msgid ""
+"To add more sophisticated operations (association management, etc), we can "
+"just add methods to <literal>PersonHome</literal>."
+msgstr ""
+"要添加更复杂的操作(关联管理等),我们只要在 <literal>PersonHome</literal> 里"
+"加入相应的方法就可以了。"
+
+#. Tag: programlisting
+#: Framework.xml:101
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"    public void migrate()\n"
+"    {\n"
+"        getInstance().setCountry(country);\n"
+"        update();\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"    public void migrate()\n"
+"    {\n"
+"        getInstance().setCountry(country);\n"
+"        update();\n"
+"    }\n"
+"    \n"
+"}"
+
+#. Tag: para
+#: Framework.xml:102
+#, no-c-format
+msgid ""
+"The Home object automatically displays faces messages when an operation is "
+"successful. To customize these messages we can, again, use configuration:"
+msgstr ""
+"当某个操作成功执行时,Home 对象自动地显示 faces 消息。要自定义这些消息,我们"
+"可以再次使用配置:"
+
+#. Tag: programlisting
+#: Framework.xml:105
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\"\n"
+"                       entity-class=\"eg.Person\"\n"
+"                       new-instance=\"#{newPerson}\"&gt;\n"
+"    &lt;framework:created-message&gt;New person #{person.firstName} #{person."
+"lastName} created&lt;/framework:created-message&gt;\n"
+"    &lt;framework:deleted-message&gt;Person #{person.firstName} #{person."
+"lastName} deleted&lt;/framework:deleted-message&gt;\n"
+"    &lt;framework:updated-message&gt;Person #{person.firstName} #{person."
+"lastName} updated&lt;/framework:updated-message&gt;\n"
+"&lt;/framework:entity-home&gt;\n"
+"\n"
+"&lt;component name=\"newPerson\" \n"
+"           class=\"eg.Person\"&gt;\n"
+"    &lt;property name=\"nationality\"&gt;#{country}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\"\n"
+"                       entity-class=\"eg.Person\"\n"
+"                       new-instance=\"#{newPerson}\"&gt;\n"
+"    &lt;framework:created-message&gt;New person #{person.firstName} #{person."
+"lastName} created&lt;/framework:created-message&gt;\n"
+"    &lt;framework:deleted-message&gt;Person #{person.firstName} #{person."
+"lastName} deleted&lt;/framework:deleted-message&gt;\n"
+"    &lt;framework:updated-message&gt;Person #{person.firstName} #{person."
+"lastName} updated&lt;/framework:updated-message&gt;\n"
+"&lt;/framework:entity-home&gt;\n"
+"\n"
+"&lt;component name=\"newPerson\" \n"
+"           class=\"eg.Person\"&gt;\n"
+"    &lt;property name=\"nationality\"&gt;#{country}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+
+#. Tag: para
+#: Framework.xml:106
+#, no-c-format
+msgid "Or extension:"
+msgstr "或继承:"
+
+#. Tag: programlisting
+#: Framework.xml:109
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"    protected String getCreatedMessage() { return \"New person #{person."
+"firstName} \n"
+"      #{person.lastName} created\"; }\n"
+"    protected String getUpdatedMessage() { return \"Person #{person."
+"firstName} \n"
+"      #{person.lastName} updated\"; }\n"
+"    protected String getDeletedMessage() { return \"Person #{person."
+"firstName} \n"
+"      #{person.lastName} deleted\"; }\n"
+"    \n"
+"}"
+msgstr ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"    protected String getCreatedMessage() { return \"New person #{person."
+"firstName} \n"
+"      #{person.lastName} created\"; }\n"
+"    protected String getUpdatedMessage() { return \"Person #{person."
+"firstName} \n"
+"      #{person.lastName} updated\"; }\n"
+"    protected String getDeletedMessage() { return \"Person #{person."
+"firstName} \n"
+"      #{person.lastName} deleted\"; }\n"
+"    \n"
+"}"
+
+#. Tag: para
+#: Framework.xml:110
+#, no-c-format
+msgid ""
+"But the best way to specify the messages is to put them in a resource bundle "
+"known to Seam (the bundle named <literal>messages</literal>, by default)."
+msgstr ""
+"但指定消息的最佳方法是把它们置入 Seam 所知道的资源束里(缺省为 "
+"<literal>messages</literal> 束)。"
+
+#. Tag: programlisting
+#: Framework.xml:113
+#, no-c-format
+msgid ""
+"Person_created=New person #{person.firstName} #{person.lastName} created\n"
+"Person_deleted=Person #{person.firstName} #{person.lastName} deleted\n"
+"Person_updated=Person #{person.firstName} #{person.lastName} updated"
+msgstr ""
+"Person_created=New person #{person.firstName} #{person.lastName} created\n"
+"Person_deleted=Person #{person.firstName} #{person.lastName} deleted\n"
+"Person_updated=Person #{person.firstName} #{person.lastName} updated"
+
+#. Tag: para
+#: Framework.xml:114
+#, no-c-format
+msgid ""
+"This enables internationalization, and keeps your code and configuration "
+"clean of presentation concerns."
+msgstr "这启用了国际化,并使你的代码和配置和表示层分离。"
+
+#. Tag: para
+#: Framework.xml:117
+#, no-c-format
+msgid ""
+"The final step is to add validation functionality to the page, using "
+"<literal>&lt;s:validateAll&gt;</literal> and <literal>&lt;s:decorate&gt;</"
+"literal>, but I&#39;ll leave that for you to figure out."
+msgstr ""
+"最后一步是用为 <literal>&lt;s:validateAll&gt;</literal> 和 <literal>&lt;s:"
+"decorate&gt;</literal> 页面添加检验功能,不过我把这些留给你自己来完成。"
+
+#. Tag: title
+#: Framework.xml:123
+#, no-c-format
+msgid "Query objects"
+msgstr "查询(Query)对象"
+
+#. Tag: para
+#: Framework.xml:124
+#, no-c-format
+msgid ""
+"If we need a list of all <literal>Person</literal> instance in the database, "
+"we can use a Query object. For example:"
+msgstr ""
+"如果我们需要数据库里所有 <literal>Person</literal> 实例的列表,我们可以使用查"
+"询对象。例如:"
+
+#. Tag: programlisting
+#: Framework.xml:127
+#, no-c-format
+msgid ""
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\"/&gt;"
+msgstr ""
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\"/&gt;"
+
+#. Tag: para
+#: Framework.xml:128
+#, no-c-format
+msgid "We can use it from a JSF page:"
+msgstr "我们可以从 JSF 页面里使用它:"
+
+#. Tag: programlisting
+#: Framework.xml:131
+#, no-c-format
+msgid ""
+"&lt;h1&gt;List of people&lt;/h1&gt;\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+"&lt;h1&gt;List of people&lt;/h1&gt;\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+
+#. Tag: para
+#: Framework.xml:132
+#, no-c-format
+msgid "We probably need to support pagination:"
+msgstr "我们可能需要支持分页:"
+
+#. Tag: programlisting
+#: Framework.xml:135
+#, no-c-format
+msgid ""
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\" \n"
+"                        order=\"lastName\" \n"
+"                        max-results=\"20\"/&gt;"
+msgstr ""
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\" \n"
+"                        order=\"lastName\" \n"
+"                        max-results=\"20\"/&gt;"
+
+#. Tag: para
+#: Framework.xml:136
+#, no-c-format
+msgid "We&#39;ll use a page parameter to determine the page to display:"
+msgstr "我们将使用页面参数来决定要显示的页面:"
+
+#. Tag: programlisting
+#: Framework.xml:139
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/searchPerson.jsp\"&gt;\n"
+"        &lt;param name=\"firstResult\" value=\"#{people.firstResult}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/searchPerson.jsp\"&gt;\n"
+"        &lt;param name=\"firstResult\" value=\"#{people.firstResult}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Framework.xml:140
+#, no-c-format
+msgid "The JSF code for a pagination control is a bit verbose, but manageable:"
+msgstr "页面控制对应的 JSF 代码有点冗余,但易于管理:"
+
+#. Tag: programlisting
+#: Framework.xml:143
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Search for people&lt;/h1&gt;\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.previousExists}\" "
+"value=\"First Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"0\"/&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.previousExists}\" "
+"value=\"Previous Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.previousFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.nextExists}\" value="
+"\"Next Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.nextFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.nextExists}\" value="
+"\"Last Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.lastFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;"
+msgstr ""
+"&lt;h1&gt;Search for people&lt;/h1&gt;\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.previousExists}\" "
+"value=\"First Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"0\"/&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.previousExists}\" "
+"value=\"Previous Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.previousFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.nextExists}\" value="
+"\"Next Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.nextFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.nextExists}\" value="
+"\"Last Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.lastFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;"
+
+#. Tag: para
+#: Framework.xml:144
+#, no-c-format
+msgid ""
+"Real search screens let the user enter a bunch of optional search criteria "
+"to narrow the list of results returned. The Query object lets you specify "
+"optional \"restrictions\" to support this important usecase:"
+msgstr ""
+"真正的搜索屏幕让用户输入一些可选的搜索条件来筛选返回的结果。查询对象让你指定"
+"可选的 \"restrictions\" 来支持这种功能:"
+
+#. Tag: programlisting
+#: Framework.xml:147
+#, no-c-format
+msgid ""
+"&lt;component name=\"examplePerson\" class=\"Person\"/&gt;\n"
+"        \n"
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\" \n"
+"                        order=\"lastName\" \n"
+"                        max-results=\"20\"&gt;\n"
+"    &lt;framework:restrictions&gt;\n"
+"        &lt;value&gt;lower(firstName) like lower( #{examplePerson.firstName} "
+"+ &#39;%&#39; )&lt;/value&gt;\n"
+"        &lt;value&gt;lower(lastName) like lower( #{examplePerson.lastName} + "
+"&#39;%&#39; )&lt;/value&gt;\n"
+"    &lt;/framework:restrictions&gt;\n"
+"&lt;/framework:entity-query&gt;"
+msgstr ""
+"&lt;component name=\"examplePerson\" class=\"Person\"/&gt;\n"
+"        \n"
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\" \n"
+"                        order=\"lastName\" \n"
+"                        max-results=\"20\"&gt;\n"
+"    &lt;framework:restrictions&gt;\n"
+"        &lt;value&gt;lower(firstName) like lower( #{examplePerson.firstName} "
+"+ &#39;%&#39; )&lt;/value&gt;\n"
+"        &lt;value&gt;lower(lastName) like lower( #{examplePerson.lastName} + "
+"&#39;%&#39; )&lt;/value&gt;\n"
+"    &lt;/framework:restrictions&gt;\n"
+"&lt;/framework:entity-query&gt;"
+
+#. Tag: para
+#: Framework.xml:148
+#, no-c-format
+msgid "Notice the use of an \"example\" object."
+msgstr "注意对 \"example\" 对象的使用。"
+
+#. Tag: programlisting
+#: Framework.xml:151
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Search for people&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{examplePerson.firstName}"
+"\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{examplePerson.lastName}"
+"\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;&lt;h:commandButton value=\"Search\" action=\"/search.jsp\"/"
+"&gt;&lt;/div&gt;\n"
+"&lt;/h:form&gt;\n"
+"\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+"&lt;h1&gt;Search for people&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{examplePerson.firstName}"
+"\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{examplePerson.lastName}"
+"\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;&lt;h:commandButton value=\"Search\" action=\"/search.jsp\"/"
+"&gt;&lt;/div&gt;\n"
+"&lt;/h:form&gt;\n"
+"\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+
+#. Tag: para
+#: Framework.xml:152
+#, no-c-format
+msgid ""
+"The examples in this section have all shown reuse by configuration. However, "
+"reuse by extension is equally possible for Query objects."
+msgstr "本节的例子全部重用了配置。然而,对于查询对象,继承也是可以重用的。"
+
+#. Tag: title
+#: Framework.xml:158
+#, no-c-format
+msgid "Controller objects"
+msgstr "Controller 对象"
+
+#. Tag: para
+#: Framework.xml:159
+#, no-c-format
+msgid ""
+"A totally optional part of the Seam Application Framework is the class "
+"<literal>Controller</literal> and its subclasses <literal>EntityController</"
+"literal><literal>HibernateEntityController</literal> and "
+"<literal>BusinessProcessController</literal>. These classes provide nothing "
+"more than some convenience methods for access to commonly used built-in "
+"components and methods of built-in components. They help save a few "
+"keystrokes (characters can add up!) and provide a great launchpad for new "
+"users to explore the rich functionality built in to Seam."
+msgstr ""
+"<literal>Controller</literal> 类和其子类 <literal>EntityController</"
+"literal><literal>HibernateEntityController</literal> 和 "
+"<literal>BusinessProcessController</literal> 是 Seam 应用程序框架完全可选的部"
+"分。这些类提供一些方便的方法来访问常用的内置组件及其方法。它们节省了一些击键"
+"动作并为新用户提供了探索 Seam 的丰富功能的入口。"
+
+#. Tag: para
+#: Framework.xml:162
+#, no-c-format
+msgid ""
+"For example, here is what <literal>RegisterAction</literal> from the Seam "
+"registration example would look like:"
+msgstr ""
+"例如,Seam 的 registration 示例里的 <literal>RegisterAction</literal> 类似"
+"于:"
+
+#. Tag: programlisting
+#: Framework.xml:165
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"register\")\n"
+"public class RegisterAction extends EntityController implements Register\n"
+"{\n"
+"\n"
+"   @In private User user;\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = createQuery(\"select u.username from User u where u."
+"username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getResultList();\n"
+"      \n"
+"      if ( existing.size()==0 )\n"
+"      {\n"
+"         persist(user);\n"
+"         info(\"Registered new user #{user.username}\");\n"
+"         return \"/registered.jspx\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         addFacesMessage(\"User #{user.username} already exists\");\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+"@Stateless\n"
+"@Name(\"register\")\n"
+"public class RegisterAction extends EntityController implements Register\n"
+"{\n"
+"\n"
+"   @In private User user;\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = createQuery(\"select u.username from User u where u."
+"username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getResultList();\n"
+"      \n"
+"      if ( existing.size()==0 )\n"
+"      {\n"
+"         persist(user);\n"
+"         info(\"Registered new user #{user.username}\");\n"
+"         return \"/registered.jspx\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         addFacesMessage(\"User #{user.username} already exists\");\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+
+#. Tag: para
+#: Framework.xml:166
+#, no-c-format
+msgid "As you can see, its not an earthshattering improvement..."
+msgstr "你可以看到,这并不是令人吃惊的改进..."

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Gettingstarted.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Gettingstarted.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Gettingstarted.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1049 @@
+# translation of Gettingstarted.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Xi HUANG <xhuang at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Gettingstarted\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2007-10-11 22:36+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Gettingstarted.xml:6
+#, no-c-format
+msgid "Getting started with Seam, using seam-gen"
+msgstr "Seam 起步,从 seam-gen 开始"
+
+#. Tag: para
+#: Gettingstarted.xml:7
+#, no-c-format
+msgid ""
+"The Seam distribution includes a command line utility that makes it really "
+"easy to set up an Eclipse project, generate some simple Seam skeleton code, "
+"and reverse engineer an application from a pre-existing database."
+msgstr ""
+"Seam 分发版本包括了一个命令行工具,它使设立 Eclipse 项目、生成某些简单的 "
+"Seam 框架代码、从现有数据库实施逆向工程变得非常容易。"
+
+#. Tag: para
+#: Gettingstarted.xml:10
+#, no-c-format
+msgid ""
+"This is the easy way to get your feet wet with Seam, and gives you some "
+"ammunition for next time you find yourself trapped in an elevator with one "
+"of those tedious Ruby guys ranting about how great and wonderful his new toy "
+"is for building totally trivial applications that put things in databases."
+msgstr ""
+"这是开始熟悉 Seam 的简单途径,在以后某些 Ruby 追随者构建完全不重要的程序却大"
+"肆宣扬其工具如何伟大和奇妙时,它将给予你一些论据来进行应对。"
+
+#. Tag: para
+#: Gettingstarted.xml:13
+#, no-c-format
+msgid ""
+"In this release, seam-gen works best for people with JBoss AS. You can use "
+"the generated project with other J2EE or Java EE 5 application servers by "
+"making a few manual changes to the project configuration."
+msgstr ""
+"在这个版本里,seam-gen 最适合于使用 JBoss AS 的情况。在项目的配置文件里进行手"
+"工进行一些修改,你就可以在其他的 J2EE 或 Java EE 5 应用程序服务器里使用生成的"
+"项目。"
+
+#. Tag: para
+#: Gettingstarted.xml:16
+#, no-c-format
+msgid ""
+"You <emphasis>can</emphasis> use seam-gen without Eclipse, but in this "
+"tutorial, we want to show you how to use it in conjunction with Eclipse for "
+"debugging and integration testing. If you don&#39;t want to install Eclipse, "
+"you can still follow along with this tutorial&mdash;all steps can be "
+"peformed from the command line."
+msgstr ""
+"你<emphasis>可以</emphasis>不通过 Eclipse 使用 seam-gen,但在这个教程里,我们"
+"希望向你演示如何利用 Eclipse 进行调试和集成测试。如果不想安装 Eclipse,你仍然"
+"可以使用这个教程&mdash;所有的步骤都可以从命令行执行。 "
+
+#. Tag: para
+#: Gettingstarted.xml:19
+#, no-c-format
+msgid ""
+"Seam-gen is basically just a big ugly Ant script wrapped around Hibernate "
+"Tools, together with some templates. Which means it is easy to customize if "
+"you need to."
+msgstr ""
+"基本上,Seam-gen 只是一个大的丑陋的含有 Hibernate 工具和其他一些模板的 Ant 脚"
+"本。这意味着如果你可以根据需要定制它。"
+
+#. Tag: title
+#: Gettingstarted.xml:23
+#, no-c-format
+msgid "Before you start"
+msgstr "在开始之前"
+
+#. Tag: para
+#: Gettingstarted.xml:24
+#, no-c-format
+msgid ""
+"Make sure you have JDK 5 or JDK 6, JBoss AS 4.0.5 and Ant 1.6, along with "
+"recent versions of Eclipse, the JBoss IDE plugin for Eclipse and the TestNG "
+"plugin for Eclipse correctly installed before starting. Add your JBoss "
+"installation to the JBoss Server View in Eclipse. Start JBoss in debug mode. "
+"Finally, start a command prompt in the directory where you unzipped the Seam "
+"distribution."
+msgstr ""
+"在开始之前,请确保你安装了 JDK 5 或 JDK 6、JBoss AS 4.0.5 和 Ant 1.6 以及最新"
+"版本的 Eclipse、用于 Eclipse 的 JBoss IDE 插件和 TestNG 插件。在 Eclipse 的 "
+"JBoss Server View 里加入 JBoss 安装。用调试模式启动 JBoss。最后,在你解压 "
+"Seam 的目录里启动命令行提示。"
+
+#. Tag: para
+#: Gettingstarted.xml:27
+#, no-c-format
+msgid ""
+"JBoss has sophisticated support for hot re-deployment of WARs and EARs. "
+"Unfortunately, due to bugs in the JVM, repeated redeployment of an EAR&mdash;"
+"which is common during development&mdash;eventually causes the JVM to run "
+"out of perm gen space. For this reason, we recommend running JBoss in a JVM "
+"with a large perm gen space at development time. If you&#39;re running JBoss "
+"from JBoss IDE, you can configure this in the server launch configuration, "
+"under \"VM arguments\". We suggest the following values:"
+msgstr ""
+"JBoss 为 WAR 和 EAR 的热重部署提供复杂的支持。可惜的是,由于 JVM 的程序错误,"
+"重复的 EAR 重部署&mdash;部署过程中很常见&mdash;最终会导致 JVM 耗尽 perm gen "
+"空间。因此,开发时我们推荐在具有大 perm gen 空间的 JVM 里运行 JBoss。如果你"
+"从 JBoss IDE 里运行 JBoss,你可以在服务器启动配置的 \"VM 参数\" 里进行配置。"
+"我们建议使用下列的值:"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:30
+#, no-c-format
+msgid "-Xms512m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512"
+msgstr "-Xms512m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512"
+
+#. Tag: para
+#: Gettingstarted.xml:31
+#, no-c-format
+msgid ""
+"If you don&#39;t have so much memory available, the following is our minimum "
+"recommendation:"
+msgstr "如果你的机器没有这么多可用内存,下面是我们推荐的最小配置:"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:34
+#, no-c-format
+msgid "-Xms256m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=256"
+msgstr "-Xms256m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=256"
+
+#. Tag: para
+#: Gettingstarted.xml:35
+#, no-c-format
+msgid ""
+"If you&#39;re running JBoss from the commandline, you can configure the JVM "
+"options in <literal>bin/run.conf</literal>."
+msgstr ""
+"如果你从命令行运行 JBoss,你可以在 <literal>bin/run.conf</literal> 里配置 "
+"JVM 选项。"
+
+#. Tag: para
+#: Gettingstarted.xml:38
+#, no-c-format
+msgid ""
+"If you don&#39;t want to bother with this stuff now, you don&#39;t have "
+"to&mdash;come back to it later, when you get your first "
+"<literal>OutOfMemoryException</literal>."
+msgstr ""
+"如果你现在不想理会这些东西,你可以略过&mdash;当你遇到第一个 "
+"<literal>OutOfMemoryException</literal> 时再回来看看。"
+
+#. Tag: title
+#: Gettingstarted.xml:44
+#, no-c-format
+msgid "Setting up a new Eclipse project"
+msgstr "设立新的 Eclipse 项目"
+
+#. Tag: para
+#: Gettingstarted.xml:45
+#, no-c-format
+msgid ""
+"The first thing we need to do is configure seam-gen for your environment: "
+"JBoss AS installation directory, Eclipse workspace, and database connection. "
+"It&#39;s easy, just type:"
+msgstr ""
+"我们需要做的第一件事是配置 seam-gen 环境:JBoss AS 安装目录、Eclipse 工作空间"
+"和数据库连接。这很容易,只要输入: "
+
+#. Tag: programlisting
+#: Gettingstarted.xml:48
+#, no-c-format
+msgid ""
+"cd jboss-seam-1.1.x\n"
+"seam setup"
+msgstr ""
+"cd jboss-seam-1.1.x\n"
+"seam setup"
+
+#. Tag: para
+#: Gettingstarted.xml:49
+#, no-c-format
+msgid "And you will be prompted for the needed information:"
+msgstr "而且你将被提示所需的信息:"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:52
+#, no-c-format
+msgid ""
+"C:\\Projects\\jboss-seam&gt;seam setup\n"
+"Buildfile: C:\\Projects\\jboss-seam\\seam-gen\\build.xml\n"
+"\n"
+"setup:\n"
+"    [echo] Welcome to seam-gen :-)\n"
+"    [input] Enter your Java project workspace [C:/Projects]\n"
+"\n"
+"    [input] Enter your JBoss home directory [C:/Program Files/jboss-4.0.5."
+"GA]\n"
+"\n"
+"    [input] Enter the project name [myproject]\n"
+"helloworld\n"
+"    [input] Is this project deployed as an EAR (with EJB components) or a "
+"WAR \n"
+"       (with no EJB support) [ear] (ear,war,)\n"
+"\n"
+"    [input] Enter the Java package name for your session beans [com.mydomain."
+"helloworld]\n"
+"org.jboss.helloworld\n"
+"    [input] Enter the Java package name for your entity beans [org.jboss."
+"helloworld]\n"
+"\n"
+"    [input] Enter the Java package name for your test cases [org.jboss."
+"helloworld.test]\n"
+"\n"
+"    [input] What kind of database are you using? [hsql] \n"
+"    (hsql,mysql,oracle,postgres,mssql,db2,sybase,)\n"
+"mysql\n"
+"    [input] Enter the Hibernate dialect for your database [org.hibernate."
+"dialect.MySQLDialect]\n"
+"\n"
+"    [input] Enter the filesystem path to the JDBC driver jar [lib/hsqldb."
+"jar]\n"
+"../../mysql-connector.jar\n"
+"    [input] Enter JDBC driver class for your database [com.mysql.jdbc."
+"Driver]\n"
+"\n"
+"    [input] Enter the JDBC URL for your database [jdbc:mysql:///test]\n"
+"\n"
+"    [input] Enter database username [sa]\n"
+"gavin\n"
+"    [input] Enter database password []\n"
+"\n"
+"    [input] Are you working with tables that already exist in the database? "
+"[n] (y,n,)\n"
+"y\n"
+"    [input] Do you want to drop and recreate the database tables and data in "
+"import.sql \n"
+"    each time you deploy? [n] (y,n,)\n"
+"n\n"
+"[propertyfile] Creating new property file: C:\\Projects\\jboss-seam\\seam-gen"
+"\\build.properties\n"
+"     [echo] Installing JDBC driver jar to JBoss server\n"
+"     [echo] Type &#39;seam new-project&#39; to create the new project\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 1 minute 17 seconds\n"
+"C:\\Projects\\jboss-seam&gt;"
+msgstr ""
+"C:\\Projects\\jboss-seam&gt;seam setup\n"
+"Buildfile: C:\\Projects\\jboss-seam\\seam-gen\\build.xml\n"
+"\n"
+"setup:\n"
+"    [echo] Welcome to seam-gen :-)\n"
+"    [input] Enter your Java project workspace [C:/Projects]\n"
+"\n"
+"    [input] Enter your JBoss home directory [C:/Program Files/jboss-4.0.5."
+"GA]\n"
+"\n"
+"    [input] Enter the project name [myproject]\n"
+"helloworld\n"
+"    [input] Is this project deployed as an EAR (with EJB components) or a "
+"WAR \n"
+"       (with no EJB support) [ear] (ear,war,)\n"
+"\n"
+"    [input] Enter the Java package name for your session beans [com.mydomain."
+"helloworld]\n"
+"org.jboss.helloworld\n"
+"    [input] Enter the Java package name for your entity beans [org.jboss."
+"helloworld]\n"
+"\n"
+"    [input] Enter the Java package name for your test cases [org.jboss."
+"helloworld.test]\n"
+"\n"
+"    [input] What kind of database are you using? [hsql] \n"
+"    (hsql,mysql,oracle,postgres,mssql,db2,sybase,)\n"
+"mysql\n"
+"    [input] Enter the Hibernate dialect for your database [org.hibernate."
+"dialect.MySQLDialect]\n"
+"\n"
+"    [input] Enter the filesystem path to the JDBC driver jar [lib/hsqldb."
+"jar]\n"
+"../../mysql-connector.jar\n"
+"    [input] Enter JDBC driver class for your database [com.mysql.jdbc."
+"Driver]\n"
+"\n"
+"    [input] Enter the JDBC URL for your database [jdbc:mysql:///test]\n"
+"\n"
+"    [input] Enter database username [sa]\n"
+"gavin\n"
+"    [input] Enter database password []\n"
+"\n"
+"    [input] Are you working with tables that already exist in the database? "
+"[n] (y,n,)\n"
+"y\n"
+"    [input] Do you want to drop and recreate the database tables and data in "
+"import.sql \n"
+"    each time you deploy? [n] (y,n,)\n"
+"n\n"
+"[propertyfile] Creating new property file: C:\\Projects\\jboss-seam\\seam-gen"
+"\\build.properties\n"
+"     [echo] Installing JDBC driver jar to JBoss server\n"
+"     [echo] Type &#39;seam new-project&#39; to create the new project\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 1 minute 17 seconds\n"
+"C:\\Projects\\jboss-seam&gt;"
+
+#. Tag: para
+#: Gettingstarted.xml:53
+#, no-c-format
+msgid ""
+"The tool provides sensible defaults, which you can accept by just pressing "
+"enter at the prompt."
+msgstr "这个工具提供一些缺省值,在被提示输入时你只需要按回车接受就可以了。"
+
+#. Tag: para
+#: Gettingstarted.xml:56
+#, no-c-format
+msgid ""
+"The most important choice you need to make is between EAR deployment and WAR "
+"deployment of your project. EAR projects support EJB 3.0 and require Java EE "
+"5. WAR projects do not support EJB 3.0, but may be deployed to a J2EE "
+"environment. The packaging of a WAR is also simpler to understand. If you "
+"installed JBoss with the ejb3 profile, choose <literal>ear</literal>. "
+"Otherwise, choose <literal>war</literal>. We&#39;ll assume that you&#39;ve "
+"chosen an EAR deployment for the rest of the tutorial, but you can follow "
+"exactly the same steps for a WAR deployment."
+msgstr ""
+"你需要做的最重要的选择是采用 EAR 还是 WAR 部署你的项目。EAR 项目支持 EJB 3.0 "
+"并要求 Java EE 5。WAR 项目则不支持 EJB 3.0,但它可以部署在 J2EE 环境里。WAR "
+"的结构更简单和易于理解。如果你用 ejb3 配置安装 JBoss,选择 <literal>ear</"
+"literal>。否则,选择 <literal>war</literal>。在本教程里,我们假设你选择了 "
+"EAR 部署,但对于 WAR 部署你也可以使用完全相同的步骤。"
+
+#. Tag: para
+#: Gettingstarted.xml:59
+#, no-c-format
+msgid ""
+"If you are working with an existing data model, make sure you tell seam-gen "
+"that the tables already exist in the database."
+msgstr ""
+"如果你在使用现有的数据模型,请确保让 seam-gen 知道这些表已经存在于数据库里。"
+
+#. Tag: para
+#: Gettingstarted.xml:62
+#, no-c-format
+msgid ""
+"The settings are stored in <literal>seam-gen/build.properties</literal>, but "
+"you can also modify them simply by running <literal>seam setup</literal> a "
+"second time."
+msgstr ""
+"设置存放在 <literal>seam-gen/build.properties</literal> 里,但你再次运行 "
+"<literal>seam setup</literal> 就可以简单地进行修改。"
+
+#. Tag: para
+#: Gettingstarted.xml:65
+#, no-c-format
+msgid ""
+"Now we can create a new project in our Eclipse workspace directory, by "
+"typing:"
+msgstr ""
+"现在,输入下面的命令,我们就可以在 Eclipse 工作区目录里创建一个新的项目了:"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:68
+#, no-c-format
+msgid "seam new-project"
+msgstr "seam new-project"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:69
+#, no-c-format
+msgid ""
+"C:\\Projects\\jboss-seam&gt;seam new-project\n"
+"Buildfile: C:\\Projects\\jboss-seam\\seam-gen\\build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"copy-lib:\n"
+"     [echo] Copying project jars ...\n"
+"     [copy] Copying 32 files to C:\\Projects\\helloworld\\lib\n"
+"     [copy] Copying 9 files to C:\\Projects\\helloworld\\embedded-ejb\n"
+"\n"
+"file-copy-wtp:\n"
+"\n"
+"file-copy:\n"
+"     [echo] Copying project resources ...\n"
+"     [copy] Copying 12 files to C:\\Projects\\helloworld\\resources\n"
+"     [copy] Copying 1 file to C:\\Projects\\helloworld\\resources\n"
+"     [copy] Copying 5 files to C:\\Projects\\helloworld\\view\n"
+"     [copy] Copying 5 files to C:\\Projects\\helloworld\n"
+"    [mkdir] Created dir: C:\\Projects\\helloworld\\src\n"
+"\n"
+"new-project:\n"
+"     [echo] A new Seam project named &#39;helloworld&#39; was created in "
+"the /Users/gavin/Documents/workspace directory\n"
+"     [echo] Type &#39;seam explode&#39; and go to http://localhost:8080/"
+"helloworld\n"
+"     [echo] Eclipse Users: Add the project into Eclipse using File &gt; New "
+"&gt; Project and select General &gt; Project (not Java Project)\n"
+"     [echo] NetBeans Users: Open the project in NetBeans\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 7 seconds\n"
+"C:\\Projects\\jboss-seam&gt;"
+msgstr ""
+"C:\\Projects\\jboss-seam&gt;seam new-project\n"
+"Buildfile: C:\\Projects\\jboss-seam\\seam-gen\\build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"copy-lib:\n"
+"     [echo] Copying project jars ...\n"
+"     [copy] Copying 32 files to C:\\Projects\\helloworld\\lib\n"
+"     [copy] Copying 9 files to C:\\Projects\\helloworld\\embedded-ejb\n"
+"\n"
+"file-copy-wtp:\n"
+"\n"
+"file-copy:\n"
+"     [echo] Copying project resources ...\n"
+"     [copy] Copying 12 files to C:\\Projects\\helloworld\\resources\n"
+"     [copy] Copying 1 file to C:\\Projects\\helloworld\\resources\n"
+"     [copy] Copying 5 files to C:\\Projects\\helloworld\\view\n"
+"     [copy] Copying 5 files to C:\\Projects\\helloworld\n"
+"    [mkdir] Created dir: C:\\Projects\\helloworld\\src\n"
+"\n"
+"new-project:\n"
+"     [echo] A new Seam project named &#39;helloworld&#39; was created in "
+"the /Users/gavin/Documents/workspace directory\n"
+"     [echo] Type &#39;seam explode&#39; and go to http://localhost:8080/"
+"helloworld\n"
+"     [echo] Eclipse Users: Add the project into Eclipse using File &gt; New "
+"&gt; Project and select General &gt; Project (not Java Project)\n"
+"     [echo] NetBeans Users: Open the project in NetBeans\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 7 seconds\n"
+"C:\\Projects\\jboss-seam&gt;"
+
+#. Tag: para
+#: Gettingstarted.xml:70
+#, no-c-format
+msgid ""
+"This copies the Seam jars, dependent jars and the JDBC driver jar to a new "
+"Eclipse project, and generates all needed resources and configuration files, "
+"a facelets template file and stylesheet, along with Eclipse metadata and an "
+"Ant build script. The Eclipse project will be automatically deployed to an "
+"exploded directory structure in JBoss AS as soon as you add the project "
+"using <literal>New -&gt; Project... -&gt; General -&gt; Project -&gt; Next</"
+"literal>, typing the <literal>Project name</literal> (<literal>helloworld</"
+"literal> in this case), and then clicking <literal>Finish</literal>. Do not "
+"select <literal>Java Project</literal> from the New Project wizard."
+msgstr ""
+"这把 Seam 的 jar 文件、依赖 jar 文件和 JDBC 驱动 jar 文件复制到一个新的 "
+"Eclipse 项目,并产生了所有需要的资源和配置文件、facelets 模板文件和样式表、以"
+"及 Eclipse 元数据和 Ant 构建脚本。只要你用 <literal>New -&gt; Project... -"
+"&gt; Java Project -&gt; Next</literal> 添加这个 Eclipse 项目,输入 "
+"<literal>Project name</literal> (这个例子是 <literal>helloworld</"
+"literal> ),并点击 <literal>Finish</literal>,它将以扩展目录的形式自动地部署"
+"到 JBoss AS 里。请不要在「New Project Wizard」里选择 <literal>Java Project</"
+"literal>。"
+
+#. Tag: para
+#: Gettingstarted.xml:73
+#, no-c-format
+msgid ""
+"If your default JDK in Eclipse is not a Java SE 5 or Java SE 6 JDK, you will "
+"need to select a Java SE 5 compliant JDK using <literal>Project -&gt; "
+"Properties -&gt; Java Compiler</literal>."
+msgstr ""
+"如果 Eclipse 里的缺省 JDK 不是 Java SE 5 或 Java SE 6 JDK,你将需要用 "
+"<literal>Project -&gt; Properties -&gt; Java Compiler</literal> 选择兼容 "
+"Java SE 5 的 JDK。"
+
+#. Tag: para
+#: Gettingstarted.xml:76
+#, no-c-format
+msgid ""
+"Alternatively, you can deploy the project from outside Eclipse by typing "
+"<literal>seam explode</literal>."
+msgstr ""
+"或者,你也可以输入 <literal>seam explode</literal>,从 Eclispe 外部部署这个项"
+"目。"
+
+#. Tag: para
+#: Gettingstarted.xml:79
+#, no-c-format
+msgid ""
+"Go to <literal>http://localhost:8080/helloworld</literal> to see a welcome "
+"page. This is a facelets page, <literal>view/home.xhtml</literal>, using the "
+"template <literal>view/layout/template.xhtml</literal>. You can edit this "
+"page, or the template, in eclipse, and see the results "
+"<emphasis>immediately</emphasis>, by clicking refresh in your browser."
+msgstr ""
+"访问 <literal>http://localhost:8080/helloworld</literal>,你将看到一个欢迎页"
+"面。这是一个使用了 <literal>view/layout/template.xhtml</literal> 模板的 "
+"facelets 页面:<literal>view/home.xhtml</literal>。你可以在 Eclipse 里编辑这"
+"个页面或这个模板,然后在浏览器里点击「刷新」就可以<emphasis>马上</emphasis>看"
+"到结果。"
+
+#. Tag: para
+#: Gettingstarted.xml:82
+#, no-c-format
+msgid ""
+"Don&#39;t get scared by the XML configuration documents that were generated "
+"into the project directory. They are mostly standard Java EE stuff, the "
+"stuff you need to create once and then never look at again, and they are 90% "
+"the same between all Seam projects. (They are so easy to write that even "
+"seam-gen can do it.)"
+msgstr ""
+"不要被生成到这个项目目录里的 XML 配置文档吓住。它们大多数是标准的 Java EE 文"
+"件,你创建一次后就不需要再碰这些文件,且在所有 Seam 项目中它们 90% 都是相同"
+"的。(它们非常易于编写,甚至用 seam-gen 就可以生成它们。)"
+
+#. Tag: para
+#: Gettingstarted.xml:85
+#, no-c-format
+msgid ""
+"The generated project includes three database and persistence "
+"configurations. The <literal>jboss-beans.xml</literal>, <literal>persistence-"
+"test.xml</literal> and <literal>import-test.sql</literal> files are used "
+"when running the TestNG unit tests against HSQLDB. The database schema and "
+"the test data in <literal>import-test.sql</literal> is always exported to "
+"the database before running tests. The <literal>myproject-dev-ds.xml</"
+"literal>, <literal>persistence-dev.xml</literal>and <literal>import-dev.sql</"
+"literal> files are for use when deploying the application to your "
+"development database. The schema might be exported automatically at "
+"deployment, depending upon whether you told seam-gen that you are working "
+"with an existing database. The <literal>myproject-prod-ds.xml</literal>, "
+"<literal>persistence-prod.xml</literal>and <literal>import-prod.sql</"
+"literal> files are for use when deploying the application to your production "
+"database. The schema is not exported automatically at deployment."
+msgstr ""
+"生成的项目包括 3 个数据库和持久性配置文件。当运行基于 HSQLDB 的 TestNG 单元测"
+"试时,我们将用到 <literal>jboss-beans.xml</literal>、<literal>persistence-"
+"test.xml</literal> 和 <literal>import-test.sql</literal> 文件。"
+"<literal>import-test.sql</literal> 里的数据库 schema 和测试数据总是在运行测试"
+"之前导出到数据库里。部署应用程序到你的开发数据库里时,我们要用到 "
+"<literal>myproject-dev-ds.xml</literal>、<literal>persistence-dev.xml</"
+"literal> 和 <literal>import-dev.sql</literal> 文件。schema 可以在部署时自动被"
+"导出,这取决于你是否让 seam-gen 知道将工作在现有的数据库上。部署应用程序到你"
+"的产品数据库里时,我们要用到 <literal>myproject-prod-ds.xml</literal>、"
+"<literal>persistence-prod.xml</literal> 和 <literal>import-prod.sql</"
+"literal> 文件。schema 在部署时不会自动导出。"
+
+#. Tag: title
+#: Gettingstarted.xml:91
+#, no-c-format
+msgid "Creating a new action"
+msgstr "创建一个新的 actions"
+
+#. Tag: para
+#: Gettingstarted.xml:92
+#, no-c-format
+msgid ""
+"If you&#39;re used to traditional action-style web frameworks, you&#39;re "
+"probably wondering how you can create a simple webpage with a stateless "
+"action method in Java. If you type:"
+msgstr ""
+"如果你习惯于传统的 action 风格的 web 框架,你可能想知道在 Java 里怎样用 "
+"stateless action 方法创建一个简单页面。如果你输入:"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:95
+#, no-c-format
+msgid "seam new-action"
+msgstr "seam new-action"
+
+#. Tag: para
+#: Gettingstarted.xml:96
+#, no-c-format
+msgid ""
+"Seam will prompt for some information, and generate a new facelets page and "
+"Seam component for your project."
+msgstr ""
+"Seam 将提示输入一些信息,并为本项目生成一个新的 facelets 页面和 Seam 组件。"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:99
+#, no-c-format
+msgid ""
+"C:\\Projects\\jboss-seam&gt;seam new-action ping\n"
+"Buildfile: C:\\Projects\\jboss-seam\\seam-gen\\build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"action-input:\n"
+"    [input] Enter the Seam component name\n"
+"ping\n"
+"    [input] Enter the local interface name [Ping]\n"
+"\n"
+"    [input] Enter the bean class name [PingBean]\n"
+"\n"
+"    [input] Enter the action method name [ping]\n"
+"\n"
+"    [input] Enter the page name [ping]\n"
+"\n"
+"\n"
+"setup-filters:\n"
+"\n"
+"new-action:\n"
+"     [echo] Creating a new stateless session bean component with an action "
+"method\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\\test\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\\test\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\view\n"
+"     [echo] Type &#39;seam restart&#39; and go to \n"
+"     http://localhost:8080/helloworld/ping.seam\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 13 seconds\n"
+"C:\\Projects\\jboss-seam&gt;"
+msgstr ""
+"C:\\Projects\\jboss-seam&gt;seam new-action ping\n"
+"Buildfile: C:\\Projects\\jboss-seam\\seam-gen\\build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"action-input:\n"
+"    [input] Enter the Seam component name\n"
+"ping\n"
+"    [input] Enter the local interface name [Ping]\n"
+"\n"
+"    [input] Enter the bean class name [PingBean]\n"
+"\n"
+"    [input] Enter the action method name [ping]\n"
+"\n"
+"    [input] Enter the page name [ping]\n"
+"\n"
+"\n"
+"setup-filters:\n"
+"\n"
+"new-action:\n"
+"     [echo] Creating a new stateless session bean component with an action "
+"method\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\\test\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\\test\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\view\n"
+"     [echo] Type &#39;seam restart&#39; and go to \n"
+"     http://localhost:8080/helloworld/ping.seam\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 13 seconds\n"
+"C:\\Projects\\jboss-seam&gt;"
+
+#. Tag: para
+#: Gettingstarted.xml:100
+#, no-c-format
+msgid ""
+"Because we&#39;ve added a new Seam component, we need to restart the "
+"exploded directory deployment. You can do this by typing <literal>seam "
+"restart</literal>, or by running the <literal>restart</literal> target in "
+"the generated project <literal>build.xml</literal> file from inside Eclipse. "
+"Another way to force a restart is to edit the file <literal>resources/META-"
+"INF/application.xml</literal> in Eclipse. <emphasis>Note that you do not "
+"need to restart JBoss each time you change the application.</emphasis>"
+msgstr ""
+"因为我们已经添加了一个新的 Seam 组件,所以我们需要重启扩展目录部署。你可以输"
+"入 <literal>seam restart</literal> 或在 Eclipse 里运行 <literal>build.xml</"
+"literal> 文件里的 <literal>restart</literal> 目标来重启。另一个强制重启的办法"
+"是在 Eclipse 里编辑 <literal>resources/META-INF/application.xml</literal>。"
+"<emphasis>注意,你不需要在每次修改应用程序后重启 JBoss。</emphasis> "
+
+#. Tag: para
+#: Gettingstarted.xml:103
+#, no-c-format
+msgid ""
+"Now go to <literal>http://localhost:8080/helloworld/ping.seam</literal> and "
+"click the button. You can see the code behind this action by looking in the "
+"project <literal>src</literal> directory. Put a breakpoint in the "
+"<literal>ping()</literal> method, and click the button again."
+msgstr ""
+"现在再来访问 <literal>http://localhost:8080/helloworld/ping.seam</literal> 并"
+"点击按钮。你可以在本项目的 <literal>src</literal> 目录下看到这个 action 背后"
+"的代码。在 <literal>ping()</literal> 方法里放入一个断点,并再次点击按钮。"
+
+#. Tag: para
+#: Gettingstarted.xml:106
+#, no-c-format
+msgid ""
+"Finally, locate the <literal>PingTest.xml</literal> file in the test package "
+"and run the integration tests using the TestNG plugin for Eclipse. "
+"Alternatively, run the tests using <literal>seam test</literal> or the "
+"<literal>test</literal> target of the generated build."
+msgstr ""
+"最后,找到测试软件包里的 <literal>PingTest.xml</literal> 文件并用 Eclipse 的 "
+"TestNG 插件运行集成测试。或者,用 <literal>seam test</literal> 或构建文件里"
+"的 <literal>test</literal> 目标来运行测试。"
+
+#. Tag: title
+#: Gettingstarted.xml:112
+#, no-c-format
+msgid "Creating a form with an action"
+msgstr "创建带有 action 的表单"
+
+#. Tag: para
+#: Gettingstarted.xml:113
+#, no-c-format
+msgid "The next step is to create a form. Type:"
+msgstr "下一步是创建一个表单。输入:"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:116
+#, no-c-format
+msgid "seam new-form"
+msgstr "seam new-form"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:117
+#, no-c-format
+msgid ""
+"C:\\Projects\\jboss-seam&gt;seam new-form\n"
+"Buildfile: C:\\Projects\\jboss-seam\\seam-gen\\build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"action-input:\n"
+"    [input] Enter the Seam component name\n"
+"hello\n"
+"    [input] Enter the local interface name [Hello]\n"
+"\n"
+"    [input] Enter the bean class name [HelloBean]\n"
+"\n"
+"    [input] Enter the action method name [hello]\n"
+"\n"
+"    [input] Enter the page name [hello]\n"
+"\n"
+"\n"
+"setup-filters:\n"
+"\n"
+"new-form:\n"
+"     [echo] Creating a new stateful session bean component with an action "
+"method\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\\test\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\view\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\\test\n"
+"     [echo] Type &#39;seam restart&#39; and go to http://localhost:8080/"
+"hello/hello.seam\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 5 seconds\n"
+"C:\\Projects\\jboss-seam&gt;"
+msgstr ""
+"C:\\Projects\\jboss-seam&gt;seam new-form\n"
+"Buildfile: C:\\Projects\\jboss-seam\\seam-gen\\build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"action-input:\n"
+"    [input] Enter the Seam component name\n"
+"hello\n"
+"    [input] Enter the local interface name [Hello]\n"
+"\n"
+"    [input] Enter the bean class name [HelloBean]\n"
+"\n"
+"    [input] Enter the action method name [hello]\n"
+"\n"
+"    [input] Enter the page name [hello]\n"
+"\n"
+"\n"
+"setup-filters:\n"
+"\n"
+"new-form:\n"
+"     [echo] Creating a new stateful session bean component with an action "
+"method\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\\test\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\view\n"
+"     [copy] Copying 1 file to C:\\Projects\\hello\\src\\com\\hello\\test\n"
+"     [echo] Type &#39;seam restart&#39; and go to http://localhost:8080/"
+"hello/hello.seam\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 5 seconds\n"
+"C:\\Projects\\jboss-seam&gt;"
+
+#. Tag: para
+#: Gettingstarted.xml:118
+#, no-c-format
+msgid ""
+"Restart the application again, and go to <literal>http://localhost:8080/"
+"helloworld/hello.seam</literal>. Then take a look at the generated code. Run "
+"the test. Try adding some new fields to the form and Seam component "
+"(remember to restart the deploment each time you change the Java code)."
+msgstr ""
+"再次重启这个应用程序,并访问 <literal>http://localhost:8080/helloworld/hello."
+"seam</literal>。然后看看生成的代码。运行测试。在表单和 Seam 组件里添加一些新"
+"的字段(记住在每次修改 Java 代码后要重启部署)。"
+
+#. Tag: title
+#: Gettingstarted.xml:124
+#, no-c-format
+msgid "Generating an application from an existing database"
+msgstr "从现有的数据库里生成应用程序"
+
+#. Tag: para
+#: Gettingstarted.xml:125
+#, no-c-format
+msgid ""
+"Manually create some tables in your database. (If you need to switch to a "
+"different database, just run <literal>seam setup</literal> again.) Now type:"
+msgstr ""
+"在数据库里手工创建一些表。(如果你需要切换到一个不同的数据库,你可以再次运行 "
+"<literal>seam setup</literal>)现在输入:"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:128
+#, no-c-format
+msgid "seam generate-entities"
+msgstr "seam generate-entities"
+
+#. Tag: para
+#: Gettingstarted.xml:129
+#, no-c-format
+msgid ""
+"Restart the deployment, and go to <literal>http://localhost:8080/helloworld</"
+"literal>. You can browse the database, edit existing objects, and create new "
+"objects. If you look at the generated code, you&#39;ll probably be amazed "
+"how simple it is! Seam was designed so that data access code is easy to "
+"write by hand, even for people who don&#39;t want to cheat by using seam-gen."
+msgstr ""
+"重启这个部署,并访问 <literal>http://localhost:8080/helloworld</literal>。你"
+"可以浏览数据库、编辑现有的对象并创建新的对象。如果你查看生成的代码,你可能会"
+"惊讶于它是如此的简单!Seam 的设计使得手工编写数据访问代码变得简单,即使是你不"
+"使用 seam-gen。"
+
+#. Tag: title
+#: Gettingstarted.xml:135
+#, no-c-format
+msgid "Deploying the application as an EAR"
+msgstr "把应用程序部署为 EAR 文件"
+
+#. Tag: para
+#: Gettingstarted.xml:136
+#, no-c-format
+msgid ""
+"Finally, we want to be able to deploy the application using standard Java EE "
+"5 packaging. First, we need to remove the exploded directory by running "
+"<literal>seam unexplode</literal>. To deploy the EAR, we can type "
+"<literal>seam deploy</literal> at the command prompt, or run the "
+"<literal>deploy</literal> target of the generated project build script. You "
+"can undeploy using <literal>seam undeploy</literal> or the "
+"<literal>undeploy</literal> target."
+msgstr ""
+"最后,我们想要能用标准的 Java EE 5 打包方式部署这个应用程序。首先,我们需要运"
+"行 <literal>seam unexplode</literal> 来删除相应的扩展目录。要部署 EAR,我们可"
+"以在命令行输入 <literal>seam deploy</literal>,或者运行项目构建脚本里的 "
+"<literal>deploy</literal> 目标。你也可以用 <literal>seam undeploy</literal> "
+"命令或 <literal>undeploy</literal> 目标进行卸载。"
+
+#. Tag: para
+#: Gettingstarted.xml:139
+#, no-c-format
+msgid ""
+"By default, the application will be deployed with the <emphasis>dev profile</"
+"emphasis>. The EAR will include the <literal>persistence-dev.xml</literal> "
+"and <literal>import-dev.sql</literal> files, and the <literal>myproject-dev-"
+"ds.xml</literal> file will be deployed. You can change the profile, and use "
+"the <emphasis>prod profile</emphasis>, by typing"
+msgstr ""
+"在缺省情况下,应用程序将用 <emphasis>dev profile</emphasis> 进行部署。EAR 将"
+"包括 <literal>persistence-dev.xml</literal> 和 <literal>import-dev.sql</"
+"literal> 文件,且部署 <literal>myproject-dev-ds.xml</literal> 文件。输入下面"
+"的命令,你可以修改这个配置并使用 <emphasis>prod profile</emphasis>:"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:142
+#, no-c-format
+msgid "seam -Dprofile=prod deploy"
+msgstr "seam -Dprofile=prod deploy"
+
+#. Tag: para
+#: Gettingstarted.xml:143
+#, no-c-format
+msgid ""
+"You can even define new deployment profiles for your application. Just add "
+"appropriately named files to your project&mdash;for example, "
+"<literal>persistence-staging.xml</literal>, <literal>import-staging.sql</"
+"literal> and <literal>myproject-staging-ds.xml</literal>&mdash;and select "
+"the name of the profile using <literal>-Dprofile=staging</literal>."
+msgstr ""
+"你甚至可以为应用程序定义新的部署配置文件。只要在你的项目里添加一些文件&mdash;"
+"例如,<literal>persistence-staging.xml</literal>、<literal>import-staging."
+"sql</literal> 和 <literal>myproject-staging-ds.xml</literal>&mdash;并用 "
+"<literal>-Dprofile=staging</literal> 选择相应的配置文件名。"
+
+#. Tag: title
+#: Gettingstarted.xml:149
+#, no-c-format
+msgid "Seam and incremental hot deployment"
+msgstr "Seam 和增量式热部署"
+
+#. Tag: para
+#: Gettingstarted.xml:150
+#, no-c-format
+msgid ""
+"When you deploy your Seam application as an exploded directory, you&#39;ll "
+"get some support for incremental hot deployment at development time. You "
+"need to enable debug mode in both Seam and Facelets, by adding this line to "
+"<literal>components.xml</literal>:"
+msgstr ""
+"当你把 Seam 应用程序以展开目录的形式部署时,你将在开发阶段获得某些对增量式热"
+"部署的支持。你需要在 Seam 和 Facelets 里都启用调试模式,把下面的一行加入到 "
+"<literal>components.xml</literal> 里:"
+
+#. Tag: programlisting
+#: Gettingstarted.xml:153
+#, no-c-format
+msgid "&lt;core:init debug=\"true\"/&gt;"
+msgstr "&lt;core:init debug=\"true\"/&gt;"
+
+#. Tag: para
+#: Gettingstarted.xml:154
+#, no-c-format
+msgid ""
+"Now, the following files may be redeployed without requiring a full restart "
+"of the web application:"
+msgstr "现在,下列文件可以不通过重启 web 应用程序而进行重部署:"
+
+#. Tag: para
+#: Gettingstarted.xml:159
+#, no-c-format
+msgid "any facelets page"
+msgstr "任何 facelets 页面"
+
+#. Tag: para
+#: Gettingstarted.xml:164
+#, no-c-format
+msgid "any <literal>pages.xml</literal> file"
+msgstr "任何 <literal>pages.xml</literal> 文件"
+
+#. Tag: para
+#: Gettingstarted.xml:169
+#, no-c-format
+msgid ""
+"But if we want to change any Java code, we still need to do a full restart "
+"of the application. (In JBoss this may be accomplished by touching the "
+"toplevel deployment descriptor: <literal>application.xml</literal> for an "
+"EAR deployment, or <literal>web.xml</literal> for a WAR deployment.)"
+msgstr ""
+"但如果我们想修改任何 Java 代码,我们仍需要对应用程序进行完全的重启。(在 "
+"JBoss 里这可以通过 touch 顶级的部署描述符来实现:EAR 部署的 "
+"<literal>application.xml</literal> 或 WAR 部署的 <literal>web.xml</"
+"literal>。)"
+
+#. Tag: para
+#: Gettingstarted.xml:172
+#, no-c-format
+msgid ""
+"But if you really want a fast edit/compile/test cycle, Seam supports "
+"incremental redeployment of JavaBean components. To make use of this "
+"functionality, you must deploy the JavaBean components into the <literal>WEB-"
+"INF/dev</literal> directory, so that they will be loaded by a special Seam "
+"classloader, instead of by the WAR or EAR classloader."
+msgstr ""
+"但如果你确实想要一个快速编辑/编译/测试的周期,Seam 提过对 JavaBean 组件的增量"
+"式重部署。要利用这个功能,你必须把 JavaBean 组件部署到 <literal>WEB-INF/dev</"
+"literal> 目录,这样它们将用特殊的 Seam 类加载器而不是 WAR 或 EAR 加载器进行加"
+"载。"
+
+#. Tag: para
+#: Gettingstarted.xml:175
+#, no-c-format
+msgid "You need to be aware of the following limitations:"
+msgstr "你需要意识到下列的限制:"
+
+#. Tag: para
+#: Gettingstarted.xml:180
+#, no-c-format
+msgid ""
+"the components must be JavaBean components, they cannot be EJB3 beans (we "
+"are working on fixing this limitation)"
+msgstr ""
+"这些组件必须是 JavaBean 组件,它们不能是 EJB3 bean(我们正在解决这个问题)。"
+
+#. Tag: para
+#: Gettingstarted.xml:185
+#, no-c-format
+msgid "entities can never be hot-deloyed"
+msgstr "实体不能被热部署"
+
+#. Tag: para
+#: Gettingstarted.xml:190
+#, no-c-format
+msgid ""
+"components deployed via <literal>components.xml</literal> may not be hot-"
+"deployed"
+msgstr "通过 <literal>components.xml</literal> 部署的组件可能不能进行热部署"
+
+#. Tag: para
+#: Gettingstarted.xml:195
+#, no-c-format
+msgid ""
+"the hot-deployable components will not be visible to any classes deployed "
+"outside of <literal>WEB-INF/dev</literal>"
+msgstr ""
+"可热部署的组件对于任何在 <literal>WEB-INF/dev</literal> 之外部署的类将不可见"
+
+#. Tag: para
+#: Gettingstarted.xml:200
+#, no-c-format
+msgid "Seam debug mode must be enabled"
+msgstr "必须启用 Seam 的调试模式"
+
+#. Tag: para
+#: Gettingstarted.xml:205
+#, no-c-format
+msgid ""
+"If you create a WAR project using seam-gen, incremental hot deployment is "
+"available out of the box for classes in the <literal>src/action</literal> "
+"source directory. However, seam-gen does not support incremental hot "
+"deployment for EAR projects."
+msgstr ""
+"如果你用 seam-gen 创建一个 WAR 项目,<literal>src/action</literal> 源码目录下"
+"的类是可以直接进行增量式热部署的。然而,seam-gen 不支持 EAR 项目的增量式热部"
+"署。"

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/I18n.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/I18n.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/I18n.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,659 @@
+# translation of I18n.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Xi HUANG <xhuang at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: I18n\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2007-10-11 22:08+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: I18n.xml:6
+#, no-c-format
+msgid "Internationalization and themes"
+msgstr "国际化和主题"
+
+#. Tag: para
+#: I18n.xml:7
+#, no-c-format
+msgid ""
+"Seam makes it easy to build internationalized applications by providing "
+"several built-in components for handling multi-language UI messages."
+msgstr ""
+"Seam 通过几个内置的处理多种语言 UI 消息的组件使构建国际化应用程序变得容易。"
+
+#. Tag: title
+#: I18n.xml:11
+#, no-c-format
+msgid "Locales"
+msgstr "Locales"
+
+#. Tag: para
+#: I18n.xml:12
+#, no-c-format
+msgid ""
+"Each user login session has an associated instance of <literal>java.util."
+"Locale</literal> (available to the application as a session-scoped component "
+"named <literal>locale</literal>). Under normal circumstances, you won&#39;t "
+"need to do any special configuration to set the locale. Seam just delegates "
+"to JSF to determine the active locale:"
+msgstr ""
+"每个用户登录会话都有一个关联的 <literal>java.util.Locale</literal> 实例(名"
+"为 <literal>locale</literal> 的作用域为 session 的组件)。在正常情况下,你不"
+"需要进行特殊的配置来设置 locale。Seam 委托 JSF 来决定活动得的 locale: "
+
+#. Tag: para
+#: I18n.xml:17
+#, no-c-format
+msgid ""
+"If there is a locale associated with the HTTP request (the browser locale), "
+"and that locale is in the list of supported locales from <literal>faces-"
+"config.xml</literal>, use that locale for the rest of the session."
+msgstr ""
+"如果有 locale 和 HTTP 请求现关联(浏览器 locale),且它在 <literal>faces-"
+"config.xml</literal> 列表里,你可以在会话里继续使用该 locale。"
+
+#. Tag: para
+#: I18n.xml:20
+#, no-c-format
+msgid ""
+"Otherwise, if a default locale was specified in the <literal>faces-config."
+"xml</literal>, use that locale for the rest of the session."
+msgstr ""
+"否则,如果 <literal>faces-config.xml</literal> 里这定了缺省的 locale,你可以"
+"在会话里使用它。"
+
+#. Tag: para
+#: I18n.xml:23
+#, no-c-format
+msgid "Otherwise, use the default locale of the server."
+msgstr "或者,你可以使用服务器里缺省的 locale。"
+
+#. Tag: para
+#: I18n.xml:26
+#, no-c-format
+msgid ""
+"It is <emphasis>possible</emphasis> to set the locale manually via the Seam "
+"configuration properties <literal>org.jboss.seam.core.localeSelector."
+"language</literal>, <literal>org.jboss.seam.core.localeSelector.country</"
+"literal> and <literal>org.jboss.seam.core.localeSelector.variant</literal>, "
+"but we can&#39;t think of any good reason to ever do this."
+msgstr ""
+"通过 Seam 配置属性 <literal>org.jboss.seam.core.localeSelector.language</"
+"literal>、<literal>org.jboss.seam.core.localeSelector.country</literal> 和 "
+"<literal>org.jboss.seam.core.localeSelector.variant</literal> 来手工设置 "
+"locale 也是<emphasis>可能</emphasis>的,但我们并没有好的理由来这样做。 "
+
+#. Tag: para
+#: I18n.xml:29
+#, no-c-format
+msgid ""
+"It is, however, useful to allow the user to set the locale manually via the "
+"application user interface. Seam provides built-in functionality for "
+"overriding the locale determined by the algorithm above. All you have to do "
+"is add the following fragment to a form in your JSP or Facelets page:"
+msgstr ""
+"然而,允许用户通过应用程序用户界面来手工设置 locale 是很有用的。Seam 提供内置"
+"的功能来覆盖上述算法所决定的 locale。你所需要做的就是在 JSP 或 Facelets 页面"
+"的表单里加入下面的片段:"
+
+#. Tag: programlisting
+#: I18n.xml:32
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{localeSelector.language}\"&gt;\n"
+"    &lt;f:selectItem itemLabel=\"English\" itemValue=\"en\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Deutsch\" itemValue=\"de\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Francais\" itemValue=\"fr\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{localeSelector.select}\" value=\"#{messages"
+"[&#39;ChangeLanguage&#39;]}\"/&gt;"
+msgstr ""
+"&lt;h:selectOneMenu value=\"#{localeSelector.language}\"&gt;\n"
+"    &lt;f:selectItem itemLabel=\"English\" itemValue=\"en\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Deutsch\" itemValue=\"de\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Francais\" itemValue=\"fr\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{localeSelector.select}\" value=\"#{messages"
+"[&#39;ChangeLanguage&#39;]}\"/&gt;"
+
+#. Tag: para
+#: I18n.xml:33
+#, no-c-format
+msgid ""
+"Or, if you want a list of all supported locales from <literal>faces-config."
+"xml</literal>, just use:"
+msgstr ""
+"或者,如果你想要 <literal>faces-config.xml</literal> 所支持的 locale 的列表,"
+"可以使用:"
+
+#. Tag: programlisting
+#: I18n.xml:36
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{localeSelector.localeString}\"&gt;\n"
+"    &lt;f:selectItems value=\"#{localeSelector.supportedLocales}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{localeSelector.select}\" value=\"#{messages"
+"[&#39;ChangeLanguage&#39;]}\"/&gt;"
+msgstr ""
+"&lt;h:selectOneMenu value=\"#{localeSelector.localeString}\"&gt;\n"
+"    &lt;f:selectItems value=\"#{localeSelector.supportedLocales}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{localeSelector.select}\" value=\"#{messages"
+"[&#39;ChangeLanguage&#39;]}\"/&gt;"
+
+#. Tag: para
+#: I18n.xml:37
+#, no-c-format
+msgid ""
+"When this use selects an item from the drop-down, and clicks the button, the "
+"Seam and JSF locales will be overridden for the rest of the session."
+msgstr ""
+"当从下拉菜单里进行选择,并点击按钮,该会话的 Seam 和 JSF locale 将被覆盖。"
+
+#. Tag: title
+#: I18n.xml:43
+#, no-c-format
+msgid "Labels"
+msgstr "标签"
+
+#. Tag: para
+#: I18n.xml:44
+#, no-c-format
+msgid ""
+"JSF supports internationalization of user interface labels and descriptive "
+"text via the use of <literal>&lt;f:loadBundle /&gt;</literal>. You can use "
+"this approach in Seam applications. Alternatively, you can take advantage of "
+"the Seam <literal>messages</literal> component to display templated labels "
+"with embedded EL expressions."
+msgstr ""
+"JSF 支持通过使用 <literal>&lt;f:loadBundle /&gt;</literal> 对用户界面标签和描"
+"述性文字进行国际化。你可以在 Seam 程序里使用这个方法。或者,你可以利用 Seam "
+"的 <literal>messages</literal> 组件来显示带有内嵌的 EL 表达式的模板化标签。"
+
+#. Tag: title
+#: I18n.xml:48
+#, no-c-format
+msgid "Defining labels"
+msgstr "定义标签"
+
+#. Tag: para
+#: I18n.xml:49
+#, no-c-format
+msgid ""
+"Each login session has an associated instance of <literal>java.util."
+"ResourceBundle</literal> (available to the application as a session-scoped "
+"component named <literal>org.jboss.seam.core.resourceBundle</literal>). "
+"You&#39;ll need to make your internationalized labels available via this "
+"special resource bundle. By default, the resource bundle used by Seam is "
+"named <literal>messages</literal> and so you&#39;ll need to define your "
+"labels in files named <literal>messages.properties</literal>, "
+"<literal>messages_en.properties</literal>, <literal>messages_en_AU."
+"properties</literal>, etc. These files usually belong in the <literal>WEB-"
+"INF/classes</literal> directory."
+msgstr ""
+"每个登录会话都有一个相关的 <literal>java.util.ResourceBundle</literal> 实例"
+"(作为作用域为 session 的 <literal>org.jboss.seam.core.resourceBundle</"
+"literal> 组件)。你将需要通过这个特殊的资源束来使国际化的标签可用。在缺省情况"
+"下,Seam 使用的这个资源束名为 <literal>messages</literal>,所以你将需要在名"
+"为 <literal>messages.properties</literal>、 <literal>messages_en.properties</"
+"literal>、<literal>messages_en_AU.properties</literal> 的文件里定义你的标签。"
+"这些文件通常属于 <literal>WEB-INF/classes</literal> 目录。 "
+
+#. Tag: para
+#: I18n.xml:52
+#, no-c-format
+msgid "So, in <literal>messages_en.properties</literal>:"
+msgstr "所以,在 <literal>messages_en.properties</literal> 里:"
+
+#. Tag: programlisting
+#: I18n.xml:55
+#, no-c-format
+msgid "Hello=Hello"
+msgstr "Hello=Hello"
+
+#. Tag: para
+#: I18n.xml:56
+#, no-c-format
+msgid "And in <literal>messages_en_AU.properties</literal>:"
+msgstr "且在 <literal>messages_en_AU.properties</literal> 里:"
+
+#. Tag: programlisting
+#: I18n.xml:59
+#, no-c-format
+msgid "Hello=G&#39;day"
+msgstr "Hello=G&#39;day"
+
+#. Tag: para
+#: I18n.xml:60
+#, no-c-format
+msgid ""
+"You can select a different name for the resource bundle by setting the Seam "
+"configuration property named <literal>org.jboss.seam.core.resourceBundle."
+"bundleNames</literal>. You can even specify a list of resource bundle names "
+"to be searched (depth first) for messages."
+msgstr ""
+"你可以通过设置 Seam 配置属性 <literal>org.jboss.seam.core.resourceBundle."
+"bundleNames</literal> 来为资源束选择不同的名字。你甚至可以指定消息搜索(纵向"
+"优先,depth first)的资源束名字的列表。"
+
+#. Tag: programlisting
+#: I18n.xml:63
+#, no-c-format
+msgid ""
+"&lt;core:resource-bundle&gt;\n"
+"    &lt;core:bundle-names&gt;\n"
+"        &lt;value&gt;mycompany_messages&lt;/value&gt;\n"
+"        &lt;value&gt;standard_messages&lt;/value&gt;       \n"
+"    &lt;/core:bundle-names&gt;\n"
+"&lt;/core:resource-bundle&gt;"
+msgstr ""
+"&lt;core:resource-bundle&gt;\n"
+"    &lt;core:bundle-names&gt;\n"
+"        &lt;value&gt;mycompany_messages&lt;/value&gt;\n"
+"        &lt;value&gt;standard_messages&lt;/value&gt;       \n"
+"    &lt;/core:bundle-names&gt;\n"
+"&lt;/core:resource-bundle&gt;"
+
+#. Tag: para
+#: I18n.xml:64
+#, no-c-format
+msgid ""
+"If you want to define a message just for a particular page, you can specify "
+"it in a resource bundle with the same name as the JSF view id, with the "
+"leading <literal>/</literal> and trailing file extension removed. So we "
+"could put our message in <literal>welcome/hello_en.properties</literal> if "
+"we only needed to display the message on <literal>/welcome/hello.jsp</"
+"literal>."
+msgstr ""
+"如果你只想为某个特定的页面定义一条消息,你可以在资源束里用和 JSF view id 相同"
+"的名字、并用 <literal>/</literal> 开头以及去掉文件后缀名来指定它。所以,只有"
+"我们需要在 <literal>/welcome/hello.jsp</literal> 里显示消息时,我们才可以把消"
+"息放在 <literal>welcome/hello_en.properties</literal> 里。"
+
+#. Tag: para
+#: I18n.xml:67
+#, no-c-format
+msgid ""
+"You can even specify an explicit bundle name in <literal>pages.xml</literal>:"
+msgstr "你甚至可以在 <literal>pages.xml</literal> 里指定显性的处理程序:"
+
+#. Tag: programlisting
+#: I18n.xml:70
+#, no-c-format
+msgid "&lt;page view-id=\"/welcome/hello.jsp\" bundle=\"HelloMessages\"/&gt;"
+msgstr "&lt;page view-id=\"/welcome/hello.jsp\" bundle=\"HelloMessages\"/&gt;"
+
+#. Tag: para
+#: I18n.xml:71
+#, no-c-format
+msgid ""
+"Then we could use messages defined in <literal>HelloMessages.properties</"
+"literal> on <literal>/welcome/hello.jsp</literal>."
+msgstr ""
+"然后我们就可以在 <literal>/welcome/hello.jsp</literal> 里使用 "
+"<literal>HelloMessages.properties</literal> 里定义的消息了。"
+
+#. Tag: title
+#: I18n.xml:77
+#, no-c-format
+msgid "Displaying labels"
+msgstr "显示标签"
+
+#. Tag: para
+#: I18n.xml:78
+#, no-c-format
+msgid ""
+"If you define your labels using the Seam resource bundle, you&#39;ll be able "
+"to use them without having to type <literal>&lt;f:loadBundle ... /&gt;</"
+"literal> on every page. Instead, you can simply type:"
+msgstr ""
+"如果你用 Seam 资源束定义标签,你将不需要输入 <literal>&lt;f:loadBundle ... /"
+"&gt;</literal> 就可以在每个页面使用它们。你可以简单地输入: "
+
+#. Tag: programlisting
+#: I18n.xml:81
+#, no-c-format
+msgid "&lt;h:outputText value=\"#{messages[&#39;Hello&#39;]}\"/&gt;"
+msgstr "&lt;h:outputText value=\"#{messages[&#39;Hello&#39;]}\"/&gt;"
+
+#. Tag: para
+#: I18n.xml:82
+#, no-c-format
+msgid "<para>or:</para>"
+msgstr "<para>或:</para>"
+
+#. Tag: programlisting
+#: I18n.xml:85
+#, no-c-format
+msgid "&lt;h:outputText value=\"#{messages.Hello}\"/&gt;"
+msgstr "&lt;h:outputText value=\"#{messages.Hello}\"/&gt;"
+
+#. Tag: para
+#: I18n.xml:86
+#, no-c-format
+msgid "Even better, the messages themselves may contain EL expressions:"
+msgstr "更妙的是,消息本身也可以包含 EL 表达式:"
+
+#. Tag: programlisting
+#: I18n.xml:89
+#, no-c-format
+msgid "Hello=Hello, #{user.firstName} #{user.lastName}"
+msgstr "Hello=Hello, #{user.firstName} #{user.lastName}"
+
+#. Tag: programlisting
+#: I18n.xml:90
+#, no-c-format
+msgid "Hello=G&#39;day, #{user.firstName}"
+msgstr "Hello=G&#39;day, #{user.firstName}"
+
+#. Tag: para
+#: I18n.xml:91
+#, no-c-format
+msgid "You can even use the messages in your code:"
+msgstr "你甚至可以在代码里使用消息:"
+
+#. Tag: programlisting
+#: I18n.xml:94
+#, no-c-format
+msgid "@In private Map&lt;String, String&gt; messages;"
+msgstr "@In private Map&lt;String, String&gt; messages;"
+
+#. Tag: programlisting
+#: I18n.xml:95
+#, no-c-format
+msgid "@In(\"#{messages[&#39;Hello&#39;]}\") private String helloMessage;"
+msgstr "@In(\"#{messages[&#39;Hello&#39;]}\") private String helloMessage;"
+
+#. Tag: title
+#: I18n.xml:99
+#, no-c-format
+msgid "Faces messages"
+msgstr "Faces 消息"
+
+#. Tag: para
+#: I18n.xml:100
+#, no-c-format
+msgid ""
+"The <literal>facesMessages</literal> component is a super-convenient way to "
+"display success or failure messages to the user. The functionality we just "
+"described also works for faces messages:"
+msgstr ""
+"<literal>facesMessages</literal> 组件是为用户显示成功或失败消息的极其方便的途"
+"径。我们刚刚描述的功能也适用于 faces 消息:"
+
+#. Tag: programlisting
+#: I18n.xml:103
+#, no-c-format
+msgid ""
+"@Name(\"hello\")\n"
+"@Stateless\n"
+"public class HelloBean implements Hello {\n"
+"    @In FacesMessages facesMessages;\n"
+"    \n"
+"    public String sayIt() {\n"
+"        facesMessages.addFromResourceBundle(\"Hello\");\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"hello\")\n"
+"@Stateless\n"
+"public class HelloBean implements Hello {\n"
+"    @In FacesMessages facesMessages;\n"
+"    \n"
+"    public String sayIt() {\n"
+"        facesMessages.addFromResourceBundle(\"Hello\");\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: I18n.xml:104
+#, no-c-format
+msgid ""
+"This will display <literal>Hello, Gavin King</literal> or <literal>G&#39;"
+"day, Gavin</literal>, depending upon the user&#39;s locale."
+msgstr ""
+"这将根据用户的 locale 显示 <literal>Hello, Gavin King</literal> 或 "
+"<literal>G'day, Gavin</literal>。 "
+
+#. Tag: title
+#: I18n.xml:112
+#, no-c-format
+msgid "Timezones"
+msgstr "时区"
+
+#. Tag: para
+#: I18n.xml:113
+#, no-c-format
+msgid ""
+"There is also a session-scoped instance of <literal>java.util.Timezone</"
+"literal>, named <literal>org.jboss.seam.core.timezone</literal>, and a Seam "
+"component for changing the timezone named <literal>org.jboss.seam.core."
+"timezoneSelector</literal>. By default, the timezone is the default timezone "
+"of the server. Unfortunately, the JSF specification says that all dates and "
+"times should be assumed to be UTC, and displayed as UTC, unless a timezone "
+"is explicitly specified using <literal>&lt;f:convertDateTime&gt;</literal>. "
+"This is an extremely inconvenient default behavior."
+msgstr ""
+"Seam 也有一个作用域为 session 的 <literal>java.util.Timezone</literal> 实"
+"例: <literal>org.jboss.seam.core.timezone</literal>,以及一个修改时区的 "
+"Seam 组件: <literal>org.jboss.seam.core.timezoneSelector</literal>。在缺省情"
+"况下,时区为服务器的缺省时区。可惜的是,JSF 规格规定除非用 <literal>&lt;f:"
+"convertDateTime&gt;</literal> 显性地指定了时区,所有的日期和时间应该假定为 "
+"UTC 并以 UTC 形式显示。这是一个极其不方便的缺省行为。"
+
+#. Tag: para
+#: I18n.xml:116
+#, no-c-format
+msgid ""
+"Seam overrides this behavior, and defaults all dates and times to the Seam "
+"timezone. In addition, Seam provides the <literal>&lt;s:convertDateTime&gt;</"
+"literal> tag which always performs conversions in the Seam timezone."
+msgstr ""
+"Seam 覆盖了这个行为,以 Seam 时区为所有日期和时间的缺省时区。此外,Seam 提供"
+"了在 Seam 时区里执行转换的 <literal>&lt;s:convertDateTime&gt;</literal> 标"
+"签。"
+
+#. Tag: title
+#: I18n.xml:122
+#, no-c-format
+msgid "Themes"
+msgstr "主题"
+
+#. Tag: para
+#: I18n.xml:123
+#, no-c-format
+msgid ""
+"Seam applications are also very easily skinnable. The theme API is very "
+"similar to the localization API, but of course these two concerns are "
+"orthogonal, and some applications support both localization and themes."
+msgstr ""
+"Seam 的应用程序也可非常容易地“换肤”。Theme API 和 Localization API 非常相似,"
+"当然其着重点完全不同,一些应用程序则支持这两者。"
+
+#. Tag: para
+#: I18n.xml:126
+#, no-c-format
+msgid "First, configure the set of supported themes:"
+msgstr "首先,配置支持的主题集合:"
+
+#. Tag: programlisting
+#: I18n.xml:129
+#, no-c-format
+msgid ""
+"&lt;theme:theme-selector cookie-enabled=\"true\"&gt;\n"
+"    &lt;theme:available-themes&gt;\n"
+"        &lt;value&gt;default&lt;/value&gt;\n"
+"        &lt;value&gt;accessible&lt;/value&gt;\n"
+"        &lt;value&gt;printable&lt;/value&gt;\n"
+"    &lt;/theme:available-themes&gt;\n"
+"&lt;/theme:theme-selector&gt;"
+msgstr ""
+"&lt;theme:theme-selector cookie-enabled=\"true\"&gt;\n"
+"    &lt;theme:available-themes&gt;\n"
+"        &lt;value&gt;default&lt;/value&gt;\n"
+"        &lt;value&gt;accessible&lt;/value&gt;\n"
+"        &lt;value&gt;printable&lt;/value&gt;\n"
+"    &lt;/theme:available-themes&gt;\n"
+"&lt;/theme:theme-selector&gt;"
+
+#. Tag: para
+#: I18n.xml:130
+#, no-c-format
+msgid "Note that the first theme listed is the default theme."
+msgstr "注意,列出的第一个主题是缺省主题。"
+
+#. Tag: para
+#: I18n.xml:133
+#, no-c-format
+msgid ""
+"Themes are defined in a properties file with the same name as the theme. For "
+"example, the <literal>default</literal> theme is defined as a set of entries "
+"in <literal>default.properties</literal>. For example, <literal>default."
+"properties</literal> might define:"
+msgstr ""
+"主题用和它相同的名字在一个属性文件里定义。例如,<literal>default</literal> 主"
+"题在 <literal>default.properties</literal> 文件里进行定义。<literal>default."
+"properties</literal> 可能定义以下内容:"
+
+#. Tag: programlisting
+#: I18n.xml:136
+#, no-c-format
+msgid ""
+"css ../screen.css\n"
+"template template.xhtml"
+msgstr ""
+"css ../screen.css\n"
+"template template.xhtml"
+
+#. Tag: para
+#: I18n.xml:137
+#, no-c-format
+msgid ""
+"Usually the entries in a theme resource bundle will be paths to CSS styles "
+"or images and names of facelets templates (unlike localization resource "
+"bundles which are usually text)."
+msgstr ""
+"通常,在主题资源束里的条目是 CSS 风格或图片的路径、Facelets 模板的名称(而本"
+"地化资源束常常使用文本)。"
+
+#. Tag: para
+#: I18n.xml:140
+#, no-c-format
+msgid ""
+"Now we can use these entries in our JSP or facelets pages. For example, to "
+"theme the stylesheet in a facelets page:"
+msgstr ""
+"现在我们可以在我们的 JSP 或者 facelets 页面里使用这些条目了。例如,要在一个 "
+"facelets 页面里设置 stylesheet 的主题:"
+
+#. Tag: programlisting
+#: I18n.xml:143
+#, no-c-format
+msgid ""
+"&lt;link href=\"#{theme.css}\" rel=\"stylesheet\" type=\"text/css\" /&gt;"
+msgstr ""
+"&lt;link href=\"#{theme.css}\" rel=\"stylesheet\" type=\"text/css\" /&gt;"
+
+#. Tag: para
+#: I18n.xml:144
+#, no-c-format
+msgid ""
+"Most powerfully, facelets lets us theme the template used by a <literal>&lt;"
+"ui:composition&gt;</literal>:"
+msgstr ""
+"更强大的是,facelets 让我们将 <literal>&lt;ui:composition&gt;</literal> 使用"
+"的模板设为主题:"
+
+#. Tag: programlisting
+#: I18n.xml:147
+#, no-c-format
+msgid ""
+"&lt;ui:composition xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"    xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"    xmlns:h=\"http://java.sun.com/jsf/html\"\n"
+"    xmlns:f=\"http://java.sun.com/jsf/core\"\n"
+"    template=\"#{theme.template}\"&gt;"
+msgstr ""
+"&lt;ui:composition xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"    xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"    xmlns:h=\"http://java.sun.com/jsf/html\"\n"
+"    xmlns:f=\"http://java.sun.com/jsf/core\"\n"
+"    template=\"#{theme.template}\"&gt;"
+
+#. Tag: para
+#: I18n.xml:148
+#, no-c-format
+msgid ""
+"Just like the locale selector, there is a built-in theme selector to allow "
+"the user to freely switch themes:"
+msgstr ""
+"就象 locale 选择器一样,用户也可以使用内置的主题选择器来自由地切换主题:"
+
+#. Tag: programlisting
+#: I18n.xml:151
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{themeSelector.theme}\"&gt;\n"
+"    &lt;f:selectItems value=\"#{themeSelector.themes}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{themeSelector.select}\" value=\"Select Theme"
+"\"/&gt;"
+msgstr ""
+"&lt;h:selectOneMenu value=\"#{themeSelector.theme}\"&gt;\n"
+"    &lt;f:selectItems value=\"#{themeSelector.themes}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{themeSelector.select}\" value=\"Select Theme"
+"\"/&gt;"
+
+#. Tag: title
+#: I18n.xml:155
+#, no-c-format
+msgid "Persisting locale and theme preferences via cookies"
+msgstr "通过 cookie 持久化 locale 和主题首选项"
+
+#. Tag: para
+#: I18n.xml:156
+#, no-c-format
+msgid ""
+"The locale selector, theme selector and timezone selector all support "
+"persistence of locale and theme preference to a cookie. Simply set the "
+"<literal>cookie-enabled</literal> configuration property:"
+msgstr ""
+"locale 选择器、主题选择器和时区选择器都支持 locale 和主题首选项在 cookie 里的"
+"持久化。简单地设置 <literal>cookie-enabled</literal> 配置属性:"
+
+#. Tag: programlisting
+#: I18n.xml:159
+#, no-c-format
+msgid ""
+"&lt;theme:theme-selector cookie-enabled=\"true\"&gt;\n"
+"    &lt;theme:available-themes&gt;\n"
+"        &lt;value&gt;default&lt;/value&gt;\n"
+"        &lt;value&gt;accessible&lt;/value&gt;\n"
+"        &lt;value&gt;printable&lt;/value&gt;\n"
+"    &lt;/theme:available-themes&gt;\n"
+"&lt;/theme:theme-selector&gt;\n"
+"\n"
+"&lt;core:locale-selector cookie-enabled=\"true\"/&gt;"
+msgstr ""
+"&lt;theme:theme-selector cookie-enabled=\"true\"&gt;\n"
+"    &lt;theme:available-themes&gt;\n"
+"        &lt;value&gt;default&lt;/value&gt;\n"
+"        &lt;value&gt;accessible&lt;/value&gt;\n"
+"        &lt;value&gt;printable&lt;/value&gt;\n"
+"    &lt;/theme:available-themes&gt;\n"
+"&lt;/theme:theme-selector&gt;\n"
+"\n"
+"&lt;core:locale-selector cookie-enabled=\"true\"/&gt;"

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Itext.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Itext.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Itext.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1693 @@
+# translation of Itext.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Xi HUANG <xhuang at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Itext\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2007-10-11 22:07+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Itext.xml:6
+#, no-c-format
+msgid "iText PDF generation"
+msgstr "用 iText 生成 PDF "
+
+#. Tag: para
+#: Itext.xml:7
+#, no-c-format
+msgid ""
+"Seam now includes an component set for generating documents using iText. The "
+"primary focus of Seam&#39;s iText document support is for the generation of "
+"PDF doucuments, but Seam also offers basic support for RTF document "
+"generation."
+msgstr ""
+"现在 Seam 包括了用 iText 生成文档的组件集。Seam 的 iText 文档支持主要是为了生"
+"成 PDF 文档,但 Seam 也提供对 RTF 文档生成的基本支持。"
+
+#. Tag: title
+#: Itext.xml:11
+#, no-c-format
+msgid "Using PDF Support"
+msgstr "使用 PDF 支持"
+
+#. Tag: para
+#: Itext.xml:12
+#, no-c-format
+msgid ""
+"iText support is provided by <literal>jboss-seam-pdf.jar</literal>. This JAR "
+"contains the iText JSF controls, which are used to construct views that can "
+"render to PDF, and the DocumentStore component, which serves the rendered "
+"documents to the user. To include PDF support in your application, included "
+"<literal>jboss-seam-pdf.jar</literal> in your <literal>WEB-INF/lib</literal> "
+"directory along with the iText JAR file. There is no further configuration "
+"needed to use Seam&#39;s iText support."
+msgstr ""
+"iText 支持由 <literal>jboss-seam-pdf.jar</literal> 提供。这个 JAR 文件包含了"
+"用于构建 PDF 视图的 iText JSF 控件,以及用来显示文档的 DocumentStore 组件。要"
+"让你的程序包含 PDF 支持,你需要在 <literal>WEB-INF/lib</literal> 目录里放入 "
+"<literal>jboss-seam-pdf.jar</literal> 和 iText JAR 文件。使用 Seam 的 iText "
+"支持并不需要进一步的配置。"
+
+#. Tag: para
+#: Itext.xml:15
+#, no-c-format
+msgid ""
+"The Seam iText module requires the use of Facelets as the view technology. "
+"Future versions of the library may also support the use of JSP. "
+"Additionally, it requires the use of the seam-ui package."
+msgstr ""
+"Seam 的 iText 模块要求以 Facelet 为视图。将来的版本可能也会支持 JSP。此外,它"
+"需要使用 seam-ui 软件包。"
+
+#. Tag: para
+#: Itext.xml:18
+#, no-c-format
+msgid ""
+"The <literal>examples/itext</literal> project contains an example of the PDF "
+"support in action. It demonstrates proper deployment packaging, and it "
+"contains a number examples that demonstrate the key PDF generation features "
+"current supported."
+msgstr ""
+"<literal>examples/itext</literal> 项目包含了一个 PDF 支持的实例。它演示了软件"
+"包的部署,它也包括一些演示目前所支持的关键的 PDF 生成功能的例子。"
+
+#. Tag: title
+#: Itext.xml:24
+#, no-c-format
+msgid "Creating a document"
+msgstr "创建一个文档"
+
+#. Tag: para
+#: Itext.xml:25
+#, no-c-format
+msgid ""
+"Documents are generated by facelets documents using tags in the "
+"<literal>http://jboss.com/products/seam/pdf</literal> namespace. Documents "
+"should always have the <literal>document</literal> tag at the root of the "
+"document. The <literal>document</literal> tag prepares Seam to generate a "
+"document into the DocumentStore and renders an HTML redirect to that stored "
+"content. The following is a a small PDF document consisting only a single "
+"line of text:"
+msgstr ""
+"facelets documents 生成的文档使用 <literal>http://jboss.com/products/seam/"
+"pdf</literal> 命名空间里的标签。在文档的根部总是要有 <literal>document</"
+"literal> 标签。<literal>document</literal> 标签让 Seam 准备好生成文档至 "
+"DocumentStore 并显示重定向到该内容的 HTML 页面。下面是一个仅仅包含一行简单文"
+"本的 PDF 文档:"
+
+#. Tag: programlisting
+#: Itext.xml:28
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf"
+"\"&gt;                                                      \n"
+"   The document goes "
+"here.                                                                                             \n"
+"&lt;/p:document&gt;"
+msgstr ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf"
+"\"&gt;                                                      \n"
+"   The document goes "
+"here.                                                                                             \n"
+"&lt;/p:document&gt;"
+
+#. Tag: title
+#: Itext.xml:30
+#, no-c-format
+msgid "p:document"
+msgstr "p:document"
+
+#. Tag: para
+#: Itext.xml:31
+#, no-c-format
+msgid ""
+"The <literal>p:document</literal> tag supports the following attributes:"
+msgstr "<literal>p:document</literal> 标签支持下面的属性:"
+
+#. Tag: literal
+#: Itext.xml:36
+#, no-c-format
+msgid "type"
+msgstr "type"
+
+#. Tag: para
+#: Itext.xml:38
+#, no-c-format
+msgid ""
+"The type of the document to be produced. Valid values are <literal>PDF</"
+"literal>, <literal>RTF</literal> and <literal>HTML</literal> modes. Seam "
+"defaults to PDF generation, and many of the features only work correctly "
+"when generating PDF documents."
+msgstr ""
+"这是产生的文档的类型。有效值可以是 <literal>PDF</literal>、<literal>RTF</"
+"literal> 和 <literal>HTML</literal> 模式。Seam 缺省使用 PDF 模式,且很多功能"
+"只适用于 PDF 文档生成。"
+
+#. Tag: literal
+#: Itext.xml:44
+#, no-c-format
+msgid "pageSize"
+msgstr "pageSize"
+
+#. Tag: para
+#: Itext.xml:46
+#, no-c-format
+msgid ""
+"The size of the page to be generate. The most commonly used values would be "
+"<literal>LETTER</literal> and <literal>A4</literal>. A full list of "
+"supported pages sizes can be found in <literal>com.lowagie.text.PageSize</"
+"literal> class. Alternatively, pageSize can provide the width and height of "
+"the page directly. The value \"612 792\", for example, is equizalent to the "
+"LETTER page size."
+msgstr ""
+"产生的页面的大小。最常用的值是 <literal>LETTER</literal> 和 <literal>A4</"
+"literal>。在 <literal>com.lowagie.text.PageSize</literal> 类里可找到所支持的"
+"页面大小的完整列表。或者,pageSize 可以直接提供页面的宽和高。例如,\"612 792"
+"\" 等同于 LETTER 大小的页面。"
+
+#. Tag: literal
+#: Itext.xml:52
+#, no-c-format
+msgid "orientation"
+msgstr "orientation"
+
+#. Tag: para
+#: Itext.xml:54
+#, no-c-format
+msgid ""
+"The orientation of the page. Valid values are <literal>portrait</literal> "
+"and <literal>landscape</literal>. In landscape mode, the height and width "
+"page size values are reversed."
+msgstr ""
+"页面的 orientation 设置。有效值为 <literal>portrait</literal> 和"
+"<literal>landscape</literal>。在 landscape 模式下,页面的高度和宽度都是相反"
+"的。"
+
+#. Tag: literal
+#: Itext.xml:60
+#, no-c-format
+msgid "margins"
+msgstr "margins"
+
+#. Tag: para
+#: Itext.xml:62
+#, no-c-format
+msgid "The left, right, top and bottom margin values."
+msgstr "左、右、顶部和底部的边距值。"
+
+#. Tag: literal
+#: Itext.xml:68
+#, no-c-format
+msgid "marginMirroring"
+msgstr "marginMirroring"
+
+#. Tag: para
+#: Itext.xml:70
+#, no-c-format
+msgid "Indicates that margin settings should be reversed an alternating pages."
+msgstr "指出边距设置应该交替进行反向。"
+
+#. Tag: para
+#: Itext.xml:76
+#, no-c-format
+msgid ""
+"Document metadata is also set as attributes of the document tag. The "
+"following metadata fields are supported:"
+msgstr ""
+"文档的 metadata 也设置为文档标签的属性。Seam 支持下面的 metadata 字段:"
+
+#. Tag: literal
+#: Itext.xml:81
+#, no-c-format
+msgid "title"
+msgstr "title"
+
+#. Tag: para
+#: Itext.xml:83 Itext.xml:90 Itext.xml:97 Itext.xml:104 Itext.xml:111
+#: Itext.xml:135 Itext.xml:142 Itext.xml:149 Itext.xml:156 Itext.xml:179
+#: Itext.xml:186 Itext.xml:193 Itext.xml:328 Itext.xml:335 Itext.xml:358
+#: Itext.xml:365 Itext.xml:372 Itext.xml:387 Itext.xml:394 Itext.xml:686
+#: Itext.xml:693 Itext.xml:700 Itext.xml:707 Itext.xml:730 Itext.xml:737
+#: Itext.xml:744 Itext.xml:751 Itext.xml:799 Itext.xml:806 Itext.xml:813
+#: Itext.xml:820 Itext.xml:827 Itext.xml:834 Itext.xml:841 Itext.xml:848
+#: Itext.xml:855 Itext.xml:862 Itext.xml:869 Itext.xml:876 Itext.xml:883
+#: Itext.xml:890 Itext.xml:897 Itext.xml:904 Itext.xml:911
+#, no-c-format
+msgid "&#x200B;"
+msgstr "&#x200B;"
+
+#. Tag: literal
+#: Itext.xml:88
+#, no-c-format
+msgid "subject"
+msgstr "subject"
+
+#. Tag: literal
+#: Itext.xml:95
+#, no-c-format
+msgid "keywords"
+msgstr "keywords"
+
+#. Tag: literal
+#: Itext.xml:102
+#, no-c-format
+msgid "author"
+msgstr "author"
+
+#. Tag: literal
+#: Itext.xml:109
+#, no-c-format
+msgid "creator"
+msgstr "creator"
+
+#. Tag: title
+#: Itext.xml:121
+#, no-c-format
+msgid "Basic Text Elements"
+msgstr "基本的文本元素"
+
+#. Tag: para
+#: Itext.xml:122
+#, no-c-format
+msgid ""
+"Useful documents will need to contain more than just text; however, the "
+"standard UI components are geared towards HTML generation and are not useful "
+"for generating PDF content. Instead, Seam provides a special UI components "
+"for generating suitable PDF content. Tags like <literal>&lt;p:image&gt;</"
+"literal> and <literal>&lt;p:paragraph&gt;</literal> are the basic "
+"foundations of simple documents. Tags like <literal>&lt;p:font&gt;</literal> "
+"provide style information to all the content surrounging them."
+msgstr ""
+"实用文档需要包含的不仅仅是文本;然而,标准的 UI 组件适合于生成 HTML 而不是 "
+"PDF 内容。不过,Seam 提供了生成 PDF 内容的特殊 UI 组件。<literal>&lt;p:"
+"image&gt;</literal> 和 <literal>&lt;p:paragraph&gt;</literal> 等标签是简单文"
+"档的基础标签。而 <literal>&lt;p:font&gt;</literal> 等标签则提供围绕这些文本的"
+"样式信息。"
+
+#. Tag: programlisting
+#: Itext.xml:125
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"&gt; \n"
+"    &lt;p:image alignment=\"right\" wrap=\"true\" resource=\"/logo.jpg\" /"
+"&gt;\n"
+"    &lt;p:font size=\"24\"&gt;\n"
+"        &lt;p:paragraph spacingAfter=\"50\"&gt;My First Document&lt;/p:"
+"paragraph&gt;\n"
+"    &lt;/p:font&gt;\n"
+"\n"
+"    &lt;p:paragraph alignment=\"justify\"&gt;\n"
+"        This is a simple document.  It isn&#39;t very fancy.\n"
+"    &lt;/p:paragraph&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"&gt; \n"
+"    &lt;p:image alignment=\"right\" wrap=\"true\" resource=\"/logo.jpg\" /"
+"&gt;\n"
+"    &lt;p:font size=\"24\"&gt;\n"
+"        &lt;p:paragraph spacingAfter=\"50\"&gt;My First Document&lt;/p:"
+"paragraph&gt;\n"
+"    &lt;/p:font&gt;\n"
+"\n"
+"    &lt;p:paragraph alignment=\"justify\"&gt;\n"
+"        This is a simple document.  It isn&#39;t very fancy.\n"
+"    &lt;/p:paragraph&gt;\n"
+"&lt;/p:document&gt;"
+
+#. Tag: title
+#: Itext.xml:127
+#, no-c-format
+msgid "p:paragraph"
+msgstr "p:paragraph"
+
+#. Tag: para
+#: Itext.xml:128
+#, no-c-format
+msgid ""
+"Most uses of text should be sectioned into paragraphs so that text fragments "
+"can be flowed, formatted and styled in logical groups."
+msgstr "文本都应该放入段落,怎样才能以逻辑组的形式设置文本片段的格式和风格。"
+
+#. Tag: literal
+#: Itext.xml:133
+#, no-c-format
+msgid "firstLineIndent"
+msgstr "firstLineIndent"
+
+#. Tag: literal
+#: Itext.xml:140 Itext.xml:832
+#, no-c-format
+msgid "extraParagraphSpace"
+msgstr "extraParagraphSpace"
+
+#. Tag: literal
+#: Itext.xml:147 Itext.xml:804
+#, no-c-format
+msgid "leading"
+msgstr "leading"
+
+#. Tag: literal
+#: Itext.xml:154 Itext.xml:811
+#, no-c-format
+msgid "multipliedLeading"
+msgstr "multipliedLeading"
+
+#. Tag: literal
+#: Itext.xml:161 Itext.xml:340 Itext.xml:712
+#, no-c-format
+msgid "spacingBefore"
+msgstr "spacingBefore"
+
+#. Tag: para
+#: Itext.xml:163 Itext.xml:342 Itext.xml:714
+#, no-c-format
+msgid "The blank space to be inserted before the element."
+msgstr "在元素前插入的空白空间。"
+
+#. Tag: literal
+#: Itext.xml:169 Itext.xml:348 Itext.xml:720
+#, no-c-format
+msgid "spacingAfter"
+msgstr "spacingAfter"
+
+#. Tag: para
+#: Itext.xml:171 Itext.xml:350 Itext.xml:722
+#, no-c-format
+msgid "The blank space to be inserted after the element."
+msgstr "在元素后面插入的空白空间。"
+
+#. Tag: literal
+#: Itext.xml:177 Itext.xml:326 Itext.xml:595
+#, no-c-format
+msgid "indentationLeft"
+msgstr "indentationLeft"
+
+#. Tag: literal
+#: Itext.xml:184 Itext.xml:333 Itext.xml:603
+#, no-c-format
+msgid "indentationRight"
+msgstr "indentationRight"
+
+#. Tag: literal
+#: Itext.xml:191 Itext.xml:749
+#, no-c-format
+msgid "keepTogether"
+msgstr "keepTogether"
+
+#. Tag: title
+#: Itext.xml:201
+#, no-c-format
+msgid "p:text"
+msgstr "p:text"
+
+#. Tag: para
+#: Itext.xml:202
+#, no-c-format
+msgid ""
+"The <literal>text</literal> tag allows text fragments to be produced from "
+"application data using normal JSF converter mechanisms. It is very similar "
+"to the <literal>outputText</literal> tag used when rendering HTML documents. "
+"Here is an example:"
+msgstr ""
+"<literal>text</literal> 标签允许文本片段用 JSF 转换机制从程序数据里产生。它和"
+"显示 HTML 文档时使用的 <literal>outputText</literal> 标签非常类似。下面是一个"
+"例子:"
+
+#. Tag: programlisting
+#: Itext.xml:205
+#, no-c-format
+msgid ""
+"&lt;p:paragraph&gt;\n"
+"    The item costs &lt;p:text value=\"#{product.price}\"&gt;\n"
+"        &lt;f:convertNumber type=\"currency\" currencySymbol=\"$\"/&gt;\n"
+"    &lt;/p:text&gt;\n"
+"&lt;/p:paragraph&gt;"
+msgstr ""
+"&lt;p:paragraph&gt;\n"
+"    The item costs &lt;p:text value=\"#{product.price}\"&gt;\n"
+"        &lt;f:convertNumber type=\"currency\" currencySymbol=\"$\"/&gt;\n"
+"    &lt;/p:text&gt;\n"
+"&lt;/p:paragraph&gt;"
+
+#. Tag: literal
+#: Itext.xml:208
+#, no-c-format
+msgid "value"
+msgstr "value"
+
+#. Tag: para
+#: Itext.xml:210
+#, no-c-format
+msgid ""
+"The value to be displayed. This will typically be a value binding expression."
+msgstr "要显示的值。它通常是一个值绑定表达式。"
+
+#. Tag: title
+#: Itext.xml:219
+#, no-c-format
+msgid "p:font"
+msgstr "p:font"
+
+#. Tag: para
+#: Itext.xml:220
+#, no-c-format
+msgid "Font declarations have no direct"
+msgstr "字体声明"
+
+#. Tag: literal
+#: Itext.xml:225
+#, no-c-format
+msgid "familyName"
+msgstr "familyName"
+
+#. Tag: para
+#: Itext.xml:227
+#, no-c-format
+msgid ""
+"The font family. One of: <literal>COURIER</literal>, <literal>HELVETICA</"
+"literal>, <literal>TIMES-ROMAN</literal>, <literal>SYMBOL</literal> or "
+"<literal>ZAPFDINGBATS</literal>."
+msgstr ""
+"字体族。是 <literal>COURIER</literal>、<literal>HELVETICA</literal>、"
+"<literal>TIMES-ROMAN</literal>、<literal>SYMBOL</literal> 或 "
+"<literal>ZAPFDINGBATS</literal> 中的一个。"
+
+#. Tag: literal
+#: Itext.xml:233
+#, no-c-format
+msgid "size"
+msgstr "size"
+
+#. Tag: para
+#: Itext.xml:235
+#, no-c-format
+msgid "The point size of the font."
+msgstr "字体的点阵大小。"
+
+#. Tag: literal
+#: Itext.xml:241 Itext.xml:530
+#, no-c-format
+msgid "style"
+msgstr "style"
+
+#. Tag: para
+#: Itext.xml:243
+#, no-c-format
+msgid ""
+"The font styles. Any combination of : <literal>NORMAL</literal>, "
+"<literal>BOLD</literal>, <literal>ITALIC</literal>, <literal>OBLIQUE</"
+"literal>, <literal>UNDERLINE</literal>, <literal>LINE-THROUGH</literal>"
+msgstr ""
+"字体风格。是 <literal>NORMAL</literal>、 <literal>BOLD</literal>、"
+"<literal>ITALIC</literal>、<literal>OBLIQUE</literal>、<literal>UNDERLINE</"
+"literal>、<literal>LINE-THROUGH</literal> 的任意组合。"
+
+#. Tag: title
+#: Itext.xml:252
+#, no-c-format
+msgid "p:newPage"
+msgstr "p:newPage"
+
+#. Tag: para
+#: Itext.xml:253
+#, no-c-format
+msgid "<literal>p:newPage</literal> inserts a page break."
+msgstr "<literal>p:newPage</literal> 插入一个页分割符。"
+
+#. Tag: title
+#: Itext.xml:259
+#, no-c-format
+msgid "p:image"
+msgstr "p:image"
+
+#. Tag: para
+#: Itext.xml:260
+#, no-c-format
+msgid ""
+"<literal>p:image</literal> inserts an image into the document. Images can be "
+"be loaded from the classpath or from the web application context using the "
+"<literal>resource</literal> attribute."
+msgstr ""
+"<literal>p:image</literal> 在文档里插入一幅图片。图片可以从 classpath 或 web "
+"应用程序上下文里用 <literal>resource</literal> 属性加载。"
+
+#. Tag: programlisting
+#: Itext.xml:263
+#, no-c-format
+msgid "&lt;p:image resource=\"/jboss.jpg\" /&gt;"
+msgstr "&lt;p:image resource=\"/jboss.jpg\" /&gt;"
+
+#. Tag: para
+#: Itext.xml:264
+#, no-c-format
+msgid ""
+"Resources can also be dynamically generated by application code. The "
+"<literal>imageData</literal> attribute can specify a value binding "
+"expression whose value is a <literal>java.awt.Image</literal> object."
+msgstr ""
+"资源也可通过程序代码动态地生成。<literal>imageData</literal> 属性可以指定一个"
+"值为 <literal>java.awt.Image</literal> 对象的值绑定表达式。"
+
+#. Tag: programlisting
+#: Itext.xml:267
+#, no-c-format
+msgid "&lt;p:image imageData=\"#{images.chart}\" /&gt;"
+msgstr "&lt;p:image imageData=\"#{images.chart}\" /&gt;"
+
+#. Tag: literal
+#: Itext.xml:270
+#, no-c-format
+msgid "resource"
+msgstr "resource"
+
+#. Tag: para
+#: Itext.xml:272
+#, no-c-format
+msgid ""
+"The location of the image resource to be included. Resources should be "
+"relative to the document root of the web application."
+msgstr "要包含的图片资源的位置。它应该相对于 web 应用程序的文档根目录。"
+
+#. Tag: literal
+#: Itext.xml:278
+#, no-c-format
+msgid "imageData"
+msgstr "imageData"
+
+#. Tag: para
+#: Itext.xml:280
+#, no-c-format
+msgid "A method expression binding to an application-generated image."
+msgstr "绑定至应用程序所生成的图片的方法表达式。"
+
+#. Tag: literal
+#: Itext.xml:286 Itext.xml:909
+#, no-c-format
+msgid "rotation"
+msgstr "rotation"
+
+#. Tag: para
+#: Itext.xml:288
+#, no-c-format
+msgid "The rotation of the image in degrees."
+msgstr "图片旋转的度数。"
+
+#. Tag: literal
+#: Itext.xml:294
+#, no-c-format
+msgid "height"
+msgstr "height"
+
+#. Tag: para
+#: Itext.xml:296
+#, no-c-format
+msgid "The height of the image."
+msgstr "图片的高度。"
+
+#. Tag: literal
+#: Itext.xml:302
+#, no-c-format
+msgid "width"
+msgstr "width"
+
+#. Tag: para
+#: Itext.xml:304
+#, no-c-format
+msgid "The width of the image."
+msgstr "图片的宽度。"
+
+#. Tag: literal
+#: Itext.xml:310 Itext.xml:437 Itext.xml:587
+#, no-c-format
+msgid "alignment"
+msgstr "alignment"
+
+#. Tag: para
+#: Itext.xml:312
+#, no-c-format
+msgid ""
+"The alignment of the image. (see <xref linkend=\"Seam_Reference_Guide-"
+"Document_Constants-Alignment_Values\"/> for possible values)"
+msgstr ""
+"图片的对齐模式。(关于可能的值,请参考 <xref linkend=\"Seam_Reference_Guide-"
+"Document_Constants-Alignment_Values\"/>)"
+
+#. Tag: literal
+#: Itext.xml:318
+#, no-c-format
+msgid "<literal>alt</literal>"
+msgstr "<literal>alt</literal>"
+
+#. Tag: para
+#: Itext.xml:320
+#, no-c-format
+msgid "Alternative text representation for the image."
+msgstr "图片的提示文字。"
+
+#. Tag: literal
+#: Itext.xml:356 Itext.xml:668
+#, no-c-format
+msgid "widthPercentage"
+msgstr "widthPercentage"
+
+#. Tag: literal
+#: Itext.xml:363
+#, no-c-format
+msgid "initialRotation"
+msgstr "initialRotation"
+
+#. Tag: literal
+#: Itext.xml:370
+#, no-c-format
+msgid "<literal>dpi</literal>"
+msgstr "<literal>dpi</literal>"
+
+#. Tag: literal
+#: Itext.xml:377
+#, no-c-format
+msgid "scalePercent"
+msgstr "scalePercent"
+
+#. Tag: para
+#: Itext.xml:379
+#, no-c-format
+msgid ""
+"The scaling factor (as a percentage) to use for the image. This can be "
+"expressed as a single percentage value or as two percentage values "
+"representing separate x and y scaling percentages."
+msgstr ""
+"图片使用的比例因子(百分比)。它可以以单个百分比值的形式或两个百分比值(分别"
+"代表 x 和 y 轴的比例)来表达。"
+
+#. Tag: literal
+#: Itext.xml:385
+#, no-c-format
+msgid "wrap"
+msgstr "wrap"
+
+#. Tag: literal
+#: Itext.xml:392
+#, no-c-format
+msgid "underlying"
+msgstr "underlying"
+
+#. Tag: title
+#: Itext.xml:402
+#, no-c-format
+msgid "p:anchor"
+msgstr "p:anchor"
+
+#. Tag: para
+#: Itext.xml:403
+#, no-c-format
+msgid ""
+"<literal>p:anchor</literal> defines clickable links from a document. It "
+"supports the following attributes:"
+msgstr "<literal>p:anchor</literal> 定义文档里可点击的链接。它支持下面的属性:"
+
+#. Tag: literal
+#: Itext.xml:408
+#, no-c-format
+msgid "name"
+msgstr "name"
+
+#. Tag: para
+#: Itext.xml:410
+#, no-c-format
+msgid "The name of an in-document anchor destination."
+msgstr "文档内锚点目标的名称。"
+
+#. Tag: literal
+#: Itext.xml:416
+#, no-c-format
+msgid "reference"
+msgstr "reference"
+
+#. Tag: para
+#: Itext.xml:418
+#, no-c-format
+msgid ""
+"The destination the link refers to. Links to other points in the document "
+"should begin with a \"#\". For example, \"#link1\" to refer to an anchor "
+"postion with a <literal>name</literal> of <literal>link1</literal>. Links "
+"may also be a full URL to point to a resource outside of the document."
+msgstr ""
+"所引用的目的链接。到文档其他地方的链接应该以 \"#\" 开始。例如,\"#link1\" 表"
+"示<literal>名</literal>为 <literal>link1</literal> 的锚点位置。链接也可能是一"
+"个指向文档外的资源的完整 URL。"
+
+#. Tag: title
+#: Itext.xml:429
+#, no-c-format
+msgid "Headers and Footers"
+msgstr "页头和页尾"
+
+#. Tag: title
+#: Itext.xml:431
+#, no-c-format
+msgid "p:header and p:footer"
+msgstr "p:header and p:footer"
+
+#. Tag: para
+#: Itext.xml:432
+#, no-c-format
+msgid ""
+"The <literal>p:header</literal> and <literal>p:footer</literal> components "
+"provide the ability to place header and footer text on each page of a "
+"generated document, with the exception of the first page. Header and footer "
+"declarations should appear near the top of a document."
+msgstr ""
+"<literal>p:header</literal> 和 <literal>p:footer</literal> 组件提供在生成的文"
+"档里每一页里放置页头和页尾文本的能力。"
+
+#. Tag: para
+#: Itext.xml:439
+#, no-c-format
+msgid ""
+"The alignment of the header/footer box section. (see <xref linkend="
+"\"Seam_Reference_Guide-Document_Constants-Alignment_Values\"/> for alignment "
+"values)"
+msgstr ""
+"页头/页尾部分的对齐方式。(请参考 <xref linkend=\"Seam_Reference_Guide-"
+"Document_Constants-Alignment_Values\"/> 里关于对齐方式的值)"
+
+#. Tag: literal
+#: Itext.xml:445
+#, no-c-format
+msgid "backgroundColor"
+msgstr "backgroundColor"
+
+#. Tag: para
+#: Itext.xml:447
+#, no-c-format
+msgid ""
+"The background color of the header/footer box. (see <xref linkend="
+"\"Seam_Reference_Guide-Document_Constants-Color_Values\"/> for color values)"
+msgstr ""
+"页头/页尾部分的背景颜色。(请参考 <xref linkend=\"Seam_Reference_Guide-"
+"Document_Constants-Color_Values\"/> 里的颜色值)"
+
+#. Tag: literal
+#: Itext.xml:453
+#, no-c-format
+msgid "borderColor"
+msgstr "borderColor"
+
+#. Tag: para
+#: Itext.xml:455
+#, no-c-format
+msgid ""
+"The border color of the header/footer box. Individual border sides can be "
+"set using <literal>borderColorLeft</literal>, <literal>borderColorRight</"
+"literal>, <literal>borderColorTop</literal> and <literal>borderColorBottom</"
+"literal>.(see <xref linkend=\"Seam_Reference_Guide-Document_Constants-"
+"Color_Values\"/> for color values)"
+msgstr ""
+"页头/页尾部分的边框颜色。可以用<literal>borderColorLeft</literal>、 "
+"<literal>borderColorRight</literal>、<literal>borderColorTop</literal> 和 "
+"<literal>borderColorBottom</literal> 设置单个的边框。(请参考 <xref linkend="
+"\"Seam_Reference_Guide-Document_Constants-Color_Values\"/> 里的颜色值)"
+
+#. Tag: literal
+#: Itext.xml:461
+#, no-c-format
+msgid "borderWidth"
+msgstr "borderWidth"
+
+#. Tag: para
+#: Itext.xml:463
+#, no-c-format
+msgid ""
+"The width of the border. Inidvidual border sides can be specified using "
+"<literal>borderWidthLeft</literal>, <literal>borderWidthRight</literal>, "
+"<literal>borderWidthTop</literal> and <literal>borderWidthBottom</literal>."
+msgstr ""
+"边框的宽度。单个的边框可以用 <literal>borderWidthLeft</literal>、 "
+"<literal>borderWidthRight</literal>、<literal>borderWidthTop</literal> 和 "
+"<literal>borderWidthBottom</literal> 指定。"
+
+#. Tag: title
+#: Itext.xml:472
+#, no-c-format
+msgid "p:pageNumber"
+msgstr "p:pageNumber"
+
+#. Tag: para
+#: Itext.xml:473
+#, no-c-format
+msgid ""
+"The current page number can be placed inside of a header or footer using the "
+"<literal>p:pageNumber</literal> tag. The page number tag can only be used in "
+"the context of a header or footer and can only be used once."
+msgstr ""
+"你可以用 <literal>p:pageNumber</literal> 标签把当前页面号码放入页头或页尾。页"
+"面号码标签只能在页头或页尾的上下文里使用,且只能使用一次。"
+
+#. Tag: title
+#: Itext.xml:481
+#, no-c-format
+msgid "Chapters and Sections"
+msgstr "Chapter 和 Section"
+
+#. Tag: para
+#: Itext.xml:482
+#, no-c-format
+msgid ""
+"If the generated document follows a book/article structure, the <literal>p:"
+"chapter</literal> and <literal>p:section</literal> tags can be used to "
+"provide the necessary structure. Sections can only be used inside of "
+"chapters, but they may be nested arbitrarily deep. Most PDF viewers provide "
+"easy navigation between chapters and sections in a document."
+msgstr ""
+"如果所生成的文档遵循 book/article 结构,你可以用 <literal>p:chapter</"
+"literal> and <literal>p:section</literal> 标签提供所需的结构。Section 只能用"
+"在 chapter 内部,但可以进行任意深度的嵌套。大多数 PDF 阅读器都提供在文档的 "
+"chapter 和 section 之间进行简单的导航。"
+
+#. Tag: programlisting
+#: Itext.xml:485
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"\n"
+"            title=\"Hello\"&gt;\n"
+"\n"
+"   &lt;p:chapter number=\"1\"&gt;\n"
+"      &lt;p:title&gt;&lt;p:paragraph&gt;Hello&lt;/p:paragraph&gt;&lt;/p:"
+"title&gt;\n"
+"      &lt;p:paragraph&gt;Hello #{user.name}!&lt;/p:paragraph&gt;\n"
+"   &lt;/p:chapter&gt;\n"
+"\n"
+"   &lt;p:chapter number=\"2\"&gt;\n"
+"      &lt;p:title&gt;&lt;p:paragraph&gt;Goodbye&lt;/p:paragraph&gt;&lt;/p:"
+"title&gt;\n"
+"      &lt;p:paragraph&gt;Goodbye #{user.name}.&lt;/p:paragraph&gt;\n"
+"   &lt;/p:chapter&gt;\n"
+"\n"
+"&lt;/p:document&gt;"
+msgstr ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"\n"
+"            title=\"Hello\"&gt;\n"
+"\n"
+"   &lt;p:chapter number=\"1\"&gt;\n"
+"      &lt;p:title&gt;&lt;p:paragraph&gt;Hello&lt;/p:paragraph&gt;&lt;/p:"
+"title&gt;\n"
+"      &lt;p:paragraph&gt;Hello #{user.name}!&lt;/p:paragraph&gt;\n"
+"   &lt;/p:chapter&gt;\n"
+"\n"
+"   &lt;p:chapter number=\"2\"&gt;\n"
+"      &lt;p:title&gt;&lt;p:paragraph&gt;Goodbye&lt;/p:paragraph&gt;&lt;/p:"
+"title&gt;\n"
+"      &lt;p:paragraph&gt;Goodbye #{user.name}.&lt;/p:paragraph&gt;\n"
+"   &lt;/p:chapter&gt;\n"
+"\n"
+"&lt;/p:document&gt;"
+
+#. Tag: title
+#: Itext.xml:487
+#, no-c-format
+msgid "p:chapter and p:section"
+msgstr "p:chapter 和 p:section"
+
+#. Tag: literal
+#: Itext.xml:490
+#, no-c-format
+msgid "number"
+msgstr "number"
+
+#. Tag: para
+#: Itext.xml:492
+#, no-c-format
+msgid "The chapter number. Every chapter should be assigned a chapter number."
+msgstr "Chapter 的序号。每个 chapter 都应该分配一个号码。"
+
+#. Tag: literal
+#: Itext.xml:498
+#, no-c-format
+msgid "numberDepth"
+msgstr "numberDepth"
+
+#. Tag: para
+#: Itext.xml:500
+#, no-c-format
+msgid ""
+"The depth of numbering for section. All sections are numbered relative to "
+"their surrounding chapter/sections. The fourth section of of the first "
+"section of chapter three would be section 3.1.4, if displayed at the default "
+"number depth of three. To omit the chapter number, a number depth of 2 "
+"should be used. In that case, the section number would be displayed as 1.4."
+msgstr ""
+"section 编号的深度。所有的 section 都相对于它们周围的 chapter/section 进行编"
+"号。如果以缺省为 3 的深度进行显示的话,第三章第一节的第四小节是  section "
+"3.1.4。要忽略 chapter 号码,使用的号码深度应该为 2。在这种情况下,section 号"
+"码将显示为 1.4。"
+
+#. Tag: title
+#: Itext.xml:509
+#, no-c-format
+msgid "p:title"
+msgstr "p:title"
+
+#. Tag: para
+#: Itext.xml:510
+#, no-c-format
+msgid ""
+"Any chapter or section can contain a <literal>p:title</literal>. The title "
+"will be displayed next to the chapter/section number. The body of the title "
+"may contain raw text or may be a <literal>p:paragraph</literal>."
+msgstr ""
+"任何 chapter 或 section 都可以包含一个 <literal>p:title</literal>。标题将显示"
+"在 chapter/section 号码的后面。标题的主体可以包含普通文本或 <literal>p:"
+"paragraph</literal>。"
+
+#. Tag: title
+#: Itext.xml:518
+#, no-c-format
+msgid "Lists"
+msgstr "Lists"
+
+#. Tag: para
+#: Itext.xml:519
+#, no-c-format
+msgid ""
+"List structures can be displayed using the <literal>p:list</literal> and "
+"<literal>p:listItem</literal> tags. Lists may contain arbitrarily-nested "
+"sublists. List items may not be used outside of a list. he following "
+"document uses the <literal>ui:repeat</literal> tag to to display a list of "
+"values retrieved from a Seam component."
+msgstr ""
+"列表结构可以用 <literal>p:list</literal> 或 <literal>p:listItem</literal> 标"
+"签进行显示。列表可以包含任意嵌套的子列表。列表项目不能在列表之外使用。下面的"
+"文档使用了 <literal>ui:repeat</literal> 标签来显示从一个 Seam 组件获取的值的"
+"列表。"
+
+#. Tag: programlisting
+#: Itext.xml:522
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"\n"
+"            xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"            title=\"Hello\"&gt;\n"
+"   &lt;p:list style=\"numbered\"&gt;\n"
+"      &lt;ui:repeat value=\"#{documents}\" var=\"doc\"&gt;\n"
+"         &lt;p:listItem&gt;#{doc.name}&lt;/p:listItem&gt;\n"
+"      &lt;/ui:repeat&gt;\n"
+"   &lt;/p:list&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"\n"
+"            xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"            title=\"Hello\"&gt;\n"
+"   &lt;p:list style=\"numbered\"&gt;\n"
+"      &lt;ui:repeat value=\"#{documents}\" var=\"doc\"&gt;\n"
+"         &lt;p:listItem&gt;#{doc.name}&lt;/p:listItem&gt;\n"
+"      &lt;/ui:repeat&gt;\n"
+"   &lt;/p:list&gt;\n"
+"&lt;/p:document&gt;"
+
+#. Tag: title
+#: Itext.xml:524
+#, no-c-format
+msgid "p:list"
+msgstr "p:list"
+
+#. Tag: para
+#: Itext.xml:525
+#, no-c-format
+msgid "<literal>p:list</literal> supports the following attributes:"
+msgstr "<literal>p:list</literal> 支持下面的属性:"
+
+#. Tag: para
+#: Itext.xml:532
+#, no-c-format
+msgid ""
+"The ordering/bulleting style of list. One of: <literal>NUMBERED</literal>, "
+"<literal>LETTERED</literal>, <literal>GREEK</literal>, <literal>ROMAN</"
+"literal>, <literal>ZAPFDINGBATS</literal>, <literal>ZAPFDINGBATS_NUMBER</"
+"literal>. If no style is given, the list items are bulleted."
+msgstr ""
+"列表的 ordering/bulleting 风格。它可以是 <literal>NUMBERED</literal>, "
+"<literal>LETTERED</literal>, <literal>GREEK</literal>, <literal>ROMAN</"
+"literal>, <literal>ZAPFDINGBATS</literal>, <literal>ZAPFDINGBATS_NUMBER</"
+"literal> 之一。如果没有给定风格,列表项以符号排列。"
+
+#. Tag: literal
+#: Itext.xml:538 Itext.xml:611
+#, no-c-format
+msgid "listSymbol"
+msgstr "listSymbol"
+
+#. Tag: para
+#: Itext.xml:540
+#, no-c-format
+msgid "For bulleted lists, specifies the bullet symbol."
+msgstr "对符号排列的列表,指定符号字符。"
+
+#. Tag: literal
+#: Itext.xml:546 Itext.xml:818
+#, no-c-format
+msgid "indent"
+msgstr "indent"
+
+#. Tag: para
+#: Itext.xml:548
+#, no-c-format
+msgid "The indentation level of the list."
+msgstr "列表的缩进级别。"
+
+#. Tag: literal
+#: Itext.xml:554
+#, no-c-format
+msgid "lowerCase"
+msgstr "lowerCase"
+
+#. Tag: para
+#: Itext.xml:556
+#, no-c-format
+msgid ""
+"For list styles using letters, indicates whether the letters should be lower "
+"case."
+msgstr "对于使用字母的列表风格,指出这些字母是否应该使用小写。"
+
+#. Tag: literal
+#: Itext.xml:562
+#, no-c-format
+msgid "charNumber"
+msgstr "charNumber"
+
+#. Tag: para
+#: Itext.xml:564
+#, no-c-format
+msgid "For ZAPFDINGBATS, indicates the character code of the bullet character."
+msgstr "对于 ZAPFDINGBATS,指出符号字符的字符代码。"
+
+#. Tag: literal
+#: Itext.xml:570
+#, no-c-format
+msgid "numberType"
+msgstr "numberType"
+
+#. Tag: para
+#: Itext.xml:572
+#, no-c-format
+msgid "For ZAPFDINGBATS_NUMBER, indicates the numbering style."
+msgstr "对于 ZAPFDINGBATS_NUMBER,指出编号风格。"
+
+#. Tag: title
+#: Itext.xml:581
+#, no-c-format
+msgid "p:listItem"
+msgstr "p:listItem"
+
+#. Tag: para
+#: Itext.xml:582
+#, no-c-format
+msgid "<literal>p:listItem</literal> supports the following attributes:"
+msgstr "<literal>p:listItem</literal> 支持下面的属性:"
+
+#. Tag: para
+#: Itext.xml:589
+#, no-c-format
+msgid ""
+"The alignment of the list item. (See <xref linkend=\"Seam_Reference_Guide-"
+"Document_Constants-Alignment_Values\"/> for possible values)"
+msgstr ""
+"列表项的对齐方式。(关于可能的值,请参考 <xref linkend="
+"\"Seam_Reference_Guide-Document_Constants-Alignment_Values\"/>)"
+
+#. Tag: para
+#: Itext.xml:597
+#, no-c-format
+msgid "The left indentation amount."
+msgstr "左缩进量。"
+
+#. Tag: para
+#: Itext.xml:605
+#, no-c-format
+msgid "The right indentation amount."
+msgstr "右缩进量。"
+
+#. Tag: para
+#: Itext.xml:613
+#, no-c-format
+msgid "Overrides the default list symbol for this list item."
+msgstr "覆盖这个列表项的缺省列表符号。"
+
+#. Tag: title
+#: Itext.xml:624
+#, no-c-format
+msgid "Tables"
+msgstr "Tables"
+
+#. Tag: para
+#: Itext.xml:625
+#, no-c-format
+msgid ""
+"Table structures can be created using the <literal>p:table</literal> and "
+"<literal>p:cell</literal> tags. Unlike many table structures, there is no "
+"explicit row declaration. If a table has 3 columns, then every 3 cells will "
+"automatically form a row. Header and footer rows can be declared, and the "
+"headers and footers will be repeated in the event a table structure spans "
+"multiple pages."
+msgstr ""
+"表结构可用<literal>p:table</literal> 和 <literal>p:cell</literal> 创建。不象"
+"许多的表结构,这里没有显性的行声明。如果某个表含有 3 列,那么每个单元将自动组"
+"成一行。你可以声明表头和表尾行,且表头和表尾将在表结构跨多个页面的情况下重"
+"复。"
+
+#. Tag: programlisting
+#: Itext.xml:628
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"   \n"
+"            xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"            title=\"Hello\"&gt;   \n"
+"   &lt;p:table columns=\"3\" headerRows=\"1\"&gt;\n"
+"      &lt;p:cell&gt;name&lt;/p:cell&gt;\n"
+"      &lt;p:cell&gt;owner&lt;/p:cell&gt;\n"
+"      &lt;p:cell&gt;size&lt;/p:cell&gt;\n"
+"      &lt;ui:repeat value=\"#{documents}\" var=\"doc\"&gt;\n"
+"         &lt;p:cell&gt;#{doc.name}&lt;/p:cell&gt;\n"
+"         &lt;p:cell&gt;#{doc.user.name}&lt;/p:cell&gt;\n"
+"         &lt;p:cell&gt;#{doc.size}&lt;/p:cell&gt;\n"
+"      &lt;/ui:repeat&gt;\n"
+"   &lt;/p:table&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"   \n"
+"            xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"            title=\"Hello\"&gt;   \n"
+"   &lt;p:table columns=\"3\" headerRows=\"1\"&gt;\n"
+"      &lt;p:cell&gt;name&lt;/p:cell&gt;\n"
+"      &lt;p:cell&gt;owner&lt;/p:cell&gt;\n"
+"      &lt;p:cell&gt;size&lt;/p:cell&gt;\n"
+"      &lt;ui:repeat value=\"#{documents}\" var=\"doc\"&gt;\n"
+"         &lt;p:cell&gt;#{doc.name}&lt;/p:cell&gt;\n"
+"         &lt;p:cell&gt;#{doc.user.name}&lt;/p:cell&gt;\n"
+"         &lt;p:cell&gt;#{doc.size}&lt;/p:cell&gt;\n"
+"      &lt;/ui:repeat&gt;\n"
+"   &lt;/p:table&gt;\n"
+"&lt;/p:document&gt;"
+
+#. Tag: title
+#: Itext.xml:630
+#, no-c-format
+msgid "p:table"
+msgstr "p:table"
+
+#. Tag: para
+#: Itext.xml:631
+#, no-c-format
+msgid "<literal>p:table</literal> supports the following attributes."
+msgstr "<literal>p:table</literal> 支持下面的属性:"
+
+#. Tag: literal
+#: Itext.xml:636
+#, no-c-format
+msgid "columns"
+msgstr "columns"
+
+#. Tag: para
+#: Itext.xml:638
+#, no-c-format
+msgid "The number of columns (cells) that make up a table row."
+msgstr "组成一个表格行的列数。"
+
+#. Tag: literal
+#: Itext.xml:644
+#, no-c-format
+msgid "widths"
+msgstr "widths"
+
+#. Tag: para
+#: Itext.xml:646
+#, no-c-format
+msgid ""
+"The relative widths of each column. There should be one value for each "
+"column. For example: widths=\"2 1 1\" would indicate that there are 3 "
+"columns and the first column should be twice the size of the second and "
+"third column."
+msgstr ""
+"每列的相对宽度。每列都应该对应一个值。例如,widths=\"2 1 1\" 表示该表格有 3 "
+"列且第一列应该是第二和第三列的两倍宽度。"
+
+#. Tag: literal
+#: Itext.xml:652
+#, no-c-format
+msgid "headerRows"
+msgstr "headerRows"
+
+#. Tag: para
+#: Itext.xml:654
+#, no-c-format
+msgid ""
+"The initial number of rows which are considered to be headers or footer rows "
+"and should be repeated if the table spans multiple pages."
+msgstr "作为表头或表尾行的初始行数,如果此表格跨多个页面,它应该被重复。"
+
+#. Tag: literal
+#: Itext.xml:660
+#, no-c-format
+msgid "footerRows"
+msgstr "footerRows"
+
+#. Tag: para
+#: Itext.xml:662
+#, no-c-format
+msgid ""
+"The number of rows that are considered to be footer rows. This value is "
+"subtracted from the <literal>headerRows</literal> value. If document has 2 "
+"rows which make up the header and one row that makes up the footer, "
+"<literal>headerRows</literal> should be set to 3 and <literal>footerRows</"
+"literal> should be set to 1"
+msgstr ""
+"作为表尾行的行数。这个值应该扣除 <literal>headerRows</literal> 值。如果文档"
+"有 2 行组成表头以及 1 行组成表尾,那么 <literal>headerRows</literal> 应该设置"
+"为 3 而 <literal>footerRows</literal> 应该设置为 1。"
+
+#. Tag: para
+#: Itext.xml:670
+#, no-c-format
+msgid "The percentage of the page width that the table spans."
+msgstr "此表格跨越的页面宽度的百分比。"
+
+#. Tag: literal
+#: Itext.xml:676 Itext.xml:773
+#, no-c-format
+msgid "horizontalAlignment"
+msgstr "horizontalAlignment"
+
+#. Tag: para
+#: Itext.xml:678
+#, no-c-format
+msgid ""
+"The horizontal alignment of the table. (See <xref linkend="
+"\"Seam_Reference_Guide-Document_Constants-Alignment_Values\"/> for possible "
+"values)"
+msgstr ""
+"表格的水平对齐方式。(关于它的值,请参考 <xref linkend="
+"\"Seam_Reference_Guide-Document_Constants-Alignment_Values\"/>)"
+
+#. Tag: literal
+#: Itext.xml:684
+#, no-c-format
+msgid "skipFirstHeader"
+msgstr "skipFirstHeader"
+
+#. Tag: literal
+#: Itext.xml:691 Itext.xml:881
+#, no-c-format
+msgid "runDirection"
+msgstr "runDirection"
+
+#. Tag: literal
+#: Itext.xml:698
+#, no-c-format
+msgid "lockedWidth"
+msgstr "lockedWidth"
+
+#. Tag: literal
+#: Itext.xml:705
+#, no-c-format
+msgid "splitRows"
+msgstr "splitRows"
+
+#. Tag: literal
+#: Itext.xml:728
+#, no-c-format
+msgid "extendLastRow"
+msgstr "extendLastRow"
+
+#. Tag: literal
+#: Itext.xml:735
+#, no-c-format
+msgid "headersInEvent"
+msgstr "headersInEvent"
+
+#. Tag: literal
+#: Itext.xml:742
+#, no-c-format
+msgid "splitLate"
+msgstr "splitLate"
+
+#. Tag: title
+#: Itext.xml:759
+#, no-c-format
+msgid "p:cell"
+msgstr "p:cell"
+
+#. Tag: para
+#: Itext.xml:760
+#, no-c-format
+msgid "<literal>p:cell</literal> supports the following attributes."
+msgstr "<literal>p:cell</literal> 支持下面的属性。"
+
+#. Tag: literal
+#: Itext.xml:765
+#, no-c-format
+msgid "colspan"
+msgstr "colspan"
+
+#. Tag: para
+#: Itext.xml:767
+#, no-c-format
+msgid ""
+"Cells can span more than one column by declaring a <literal>colspan</"
+"literal> greater than 1. Tables do not have the ability to span across "
+"multiple rows."
+msgstr ""
+"单元可以声明 <literal>colspan</literal> 为大于 1 的值来跨越多列。表格没有跨越"
+"多行的能力。"
+
+#. Tag: para
+#: Itext.xml:775
+#, no-c-format
+msgid ""
+"The horizontal alignment of the cell. (see <xref linkend="
+"\"Seam_Reference_Guide-Document_Constants-Alignment_Values\"/> for possible "
+"values)"
+msgstr ""
+"该单元的水平对齐方式。(关于其取值,请参考 <xref linkend="
+"\"Seam_Reference_Guide-Document_Constants-Alignment_Values\"/>)"
+
+#. Tag: literal
+#: Itext.xml:781 Itext.xml:825
+#, no-c-format
+msgid "verticalAlignment"
+msgstr "verticalAlignment"
+
+#. Tag: para
+#: Itext.xml:783
+#, no-c-format
+msgid ""
+"The vertical alignment of the cell. (see <xref linkend="
+"\"Seam_Reference_Guide-Document_Constants-Alignment_Values\"/> for possible "
+"values)"
+msgstr ""
+"该单元的垂直对齐方式。(关于其取值,请参考 <xref linkend="
+"\"Seam_Reference_Guide-Document_Constants-Alignment_Values\"/>)"
+
+#. Tag: literal
+#: Itext.xml:789
+#, no-c-format
+msgid "padding"
+msgstr "padding"
+
+#. Tag: para
+#: Itext.xml:791
+#, no-c-format
+msgid ""
+"Padding on a given side can also be specified using <literal>paddingLeft</"
+"literal>, <literal>paddingRight</literal>, <literal>paddingTop</literal> and "
+"<literal>paddingBottom</literal>."
+msgstr ""
+"给定边的填充值可以用 <literal>paddingLeft</literal>、<literal>paddingRight</"
+"literal>、<literal>paddingTop</literal> 和 <literal>paddingBottom</literal> "
+"来指定。"
+
+#. Tag: literal
+#: Itext.xml:797
+#, no-c-format
+msgid "useBorderPadding"
+msgstr "useBorderPadding"
+
+#. Tag: literal
+#: Itext.xml:839
+#, no-c-format
+msgid "fixedHeight"
+msgstr "fixedHeight"
+
+#. Tag: literal
+#: Itext.xml:846
+#, no-c-format
+msgid "noWrap"
+msgstr "noWrap"
+
+#. Tag: literal
+#: Itext.xml:853
+#, no-c-format
+msgid "minimumHeight"
+msgstr "minimumHeight"
+
+#. Tag: literal
+#: Itext.xml:860
+#, no-c-format
+msgid "followingIndent"
+msgstr "followingIndent"
+
+#. Tag: literal
+#: Itext.xml:867
+#, no-c-format
+msgid "rightIndent"
+msgstr "rightIndent"
+
+#. Tag: literal
+#: Itext.xml:874
+#, no-c-format
+msgid "spaceCharRatio"
+msgstr "spaceCharRatio"
+
+#. Tag: literal
+#: Itext.xml:888
+#, no-c-format
+msgid "arabicOptions"
+msgstr "arabicOptions"
+
+#. Tag: literal
+#: Itext.xml:895
+#, no-c-format
+msgid "useAscender"
+msgstr "useAscender"
+
+#. Tag: literal
+#: Itext.xml:902
+#, no-c-format
+msgid "grayFill"
+msgstr "grayFill"
+
+#. Tag: title
+#: Itext.xml:921
+#, no-c-format
+msgid "Document Constants"
+msgstr "文档常量"
+
+#. Tag: para
+#: Itext.xml:922
+#, no-c-format
+msgid ""
+"This section documents some of the constants shared by attributes on "
+"multiple tags."
+msgstr "本节介绍许多标签属性所共用的常量。"
+
+#. Tag: title
+#: Itext.xml:926
+#, no-c-format
+msgid "Color Values"
+msgstr "颜色值"
+
+#. Tag: para
+#: Itext.xml:927
+#, no-c-format
+msgid ""
+"Seam documents do not yet support a full color specification. Currently, "
+"only named colors are supported. They are: <literal>white</literal>, "
+"<literal>gray</literal>, <literal>lightgray</literal>, <literal>darkgray</"
+"literal>, <literal>black</literal>, <literal>red</literal>, <literal>pink</"
+"literal>, <literal>yellow</literal>, <literal>green</literal>, "
+"<literal>magenta</literal>, <literal>cyan</literal> and <literal>blue</"
+"literal>."
+msgstr ""
+"Seam 文档还不支持完全的颜色范围。目前,它只支持一些命名的颜色。这些颜色是:"
+"<literal>white</literal>、<literal>gray</literal>、<literal>lightgray</"
+"literal>、<literal>darkgray</literal>、<literal>black</literal>、"
+"<literal>red</literal>、<literal>pink</literal>、<literal>yellow</literal>、"
+"<literal>green</literal>、 <literal>magenta</literal>、<literal>cyan</"
+"literal> 和 <literal>blue</literal>。"
+
+#. Tag: title
+#: Itext.xml:933
+#, no-c-format
+msgid "Alignment Values"
+msgstr "对齐方式"
+
+#. Tag: para
+#: Itext.xml:934
+#, no-c-format
+msgid ""
+"Where alignment values are used, the Seam PDF supports the following "
+"horizontal alignment values: <literal>left</literal>, <literal>right</"
+"literal>, <literal>center</literal>, <literal>justify</literal> and "
+"<literal>justifyall</literal>. The vertical alignment values are "
+"<literal>top</literal>, <literal>middle</literal>, <literal>bottom</"
+"literal>, and <literal>baseline</literal>."
+msgstr ""
+"Seam PDF 支持下面的水平对齐方式:<literal>left</literal>、<literal>right</"
+"literal>、<literal>center</literal>、<literal>justify</literal> 和 "
+"<literal>justifyall</literal>。垂直对齐方式是:<literal>top</literal>、"
+"<literal>middle</literal>、<literal>bottom</literal> 和 <literal>baseline</"
+"literal>。"
+
+#. Tag: title
+#: Itext.xml:942
+#, no-c-format
+msgid "Configuring iText"
+msgstr "配置 iText"
+
+#. Tag: para
+#: Itext.xml:943
+#, no-c-format
+msgid ""
+"Document generation works out of the box with no additional configuration "
+"needed. However, there are a few points of configuration that are needed for "
+"more serious applications."
+msgstr ""
+"Seam 的文档生成功能不需要额外配置就可以直接使用。然而,对于更复杂的应用程序,"
+"我们需要进行一些配置。"
+
+#. Tag: para
+#: Itext.xml:946
+#, no-c-format
+msgid ""
+"The default implementation serves PDF documents from a generic URL, "
+"<literal>/seam-doc.seam</literal>. Many browsers (and users) would prefer to "
+"see URLs that contain the actual PDF name like <literal>/myDocument.pdf</"
+"literal>. This capability requires some configuration. To serve PDF files, "
+"all *.pdf resources should be mapped to the Seam Servlet Filter and to the "
+"DocumentStoreServlet:"
+msgstr ""
+"缺省的实现以通用的 URL <literal>/seam-doc.seam</literal> 来处理 PDF 文档。许"
+"多浏览器(和用户)更愿意看到包含实际 PDF 名(如 <literal>/myDocument.pdf</"
+"literal>)的 URL。这种功能就需要进行额外配置。要用于 PDF 文件,所有的 .pdf 资"
+"源应该映射到 Seam Servlet Filter 和 DocumentStoreServlet:"
+
+#. Tag: programlisting
+#: Itext.xml:949
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.servlet.SeamServletFilter&lt;/filter-"
+"class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;\n"
+"\n"
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.pdf.DocumentStoreServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"\n"
+"&lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+msgstr ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.servlet.SeamServletFilter&lt;/filter-"
+"class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;\n"
+"\n"
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.pdf.DocumentStoreServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"\n"
+"&lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+
+#. Tag: para
+#: Itext.xml:950
+#, no-c-format
+msgid ""
+"The <literal>useExtensions</literal> option on the document store component "
+"completes the functionality by instructing the document store to generate "
+"URLs with the correct filename extension for the document type being "
+"generated."
+msgstr ""
+"document store 组件的 <literal>useExtensions</literal> 选项完成这种功能,它"
+"指示 document store 采用正在生成的文档类型的正确文件名后缀来生成 URL。"
+
+#. Tag: programlisting
+#: Itext.xml:953
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pdf=\"http://jboss.com/products/seam/pdf\"&gt;\n"
+"    &lt;pdf:documentStore useExtensions=\"true\" /&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pdf=\"http://jboss.com/products/seam/pdf\"&gt;\n"
+"    &lt;pdf:documentStore useExtensions=\"true\" /&gt;\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Itext.xml:954
+#, no-c-format
+msgid ""
+"Generated documents are stored in conversation scope and will expire when "
+"the conversation ends. At that point, references to the document will be "
+"invalid. To You can specify a default view to be shown when a document does "
+"not exist using the <literal>errorPage</literal> property of the "
+"documentStore."
+msgstr ""
+"生成的文档的作用域为 conversation,在该 conversation 结束时过期。此时,对此文"
+"档的引用将是无效的。当文档不存在时,你可以用 documentStore 的 "
+"<literal>errorPage</literal> 属性指定要显示的缺省视图。"
+
+#. Tag: programlisting
+#: Itext.xml:957
+#, no-c-format
+msgid ""
+"&lt;pdf:documentStore useExtensions=\"true\" errorPage=\"/pdfMissing.seam\" /"
+"&gt;"
+msgstr ""
+"&lt;pdf:documentStore useExtensions=\"true\" errorPage=\"/pdfMissing.seam\" /"
+"&gt;"
+
+#. Tag: title
+#: Itext.xml:961
+#, no-c-format
+msgid "iText links"
+msgstr "iText 链接"
+
+#. Tag: para
+#: Itext.xml:962
+#, no-c-format
+msgid "For further information on iText, see:"
+msgstr "关于 iText 的更多信息,请参考:"
+
+#. Tag: ulink
+#: Itext.xml:969
+#, no-c-format
+msgid "iText Home Page"
+msgstr "iText 主页"
+
+#. Tag: ulink
+#: Itext.xml:974
+#, no-c-format
+msgid "iText in Action"
+msgstr "iText in Action"

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Jbpm.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Jbpm.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Jbpm.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1568 @@
+# translation of Jbpm.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Xi HUANG <xhuang at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Jbpm\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2007-10-11 22:05+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Jbpm.xml:6
+#, no-c-format
+msgid "Pageflows and business processes"
+msgstr "页面流程和商业过程"
+
+#. Tag: para
+#: Jbpm.xml:7
+#, no-c-format
+msgid ""
+"JBoss jBPM is a business process management engine for any Java SE or EE "
+"environment. jBPM lets you represent a business process or user interaction "
+"as a graph of nodes representing wait states, decisions, tasks, web pages, "
+"etc. The graph is defined using a simple, very readable, XML dialect called "
+"jPDL, and may be edited and visualised graphically using an eclipse plugin. "
+"jPDL is an extensible language, and is suitable for a range of problems, "
+"from defining web application page flow, to traditional workflow management, "
+"all the way up to orchestration of services in a SOA environment."
+msgstr ""
+"JBoss jBPM 是面向任何 Java SE 或 EE 环境的商业过程管理引擎。jBPM 可以用图形节"
+"点如等待状态、决定、web 页面来代表商业过程或用户交互过程。这些图形用简单的、"
+"非常易读的、名为 jPDL 的 XML dialet 来定义,它也可以使用 Eclipse 插件进行可视"
+"化编辑和设计。jPDL 是一种可扩展的语言,它有很多用途,从定义 web 程序的页面流"
+"程到传统的工作流管理,以及所有 SOA 环境里的服务构架。"
+
+#. Tag: para
+#: Jbpm.xml:10
+#, no-c-format
+msgid "Seam applications use jBPM for two different problems:"
+msgstr "Seam 应用程序将 jBPM 用在两个方面:"
+
+#. Tag: para
+#: Jbpm.xml:15
+#, no-c-format
+msgid ""
+"Defining the pageflow involved in complex user interactions. A jPDL process "
+"definition defines the page flow for a single conversation. A Seam "
+"conversation is considered to be a relatively short-running interaction with "
+"a single user."
+msgstr ""
+"定义复杂的用户交互过程中的页面流程。jPDL 过程定义定义了单个 conversation 的页"
+"面流程。Seam conversation 被认为是相对短期的与单个用户的交互。"
+
+#. Tag: para
+#: Jbpm.xml:20
+#, no-c-format
+msgid ""
+"Defining the overarching business process. The business process may span "
+"multiple conversations with multiple users. Its state is persistent in the "
+"jBPM database, so it is considered long-running. Coordination of the "
+"activities of multiple users is a much more complex problem than scripting "
+"an interaction with a single user, so jBPM offers sophisticated facilities "
+"for task management and dealing with multiple concurrent paths of execution."
+msgstr ""
+"定义重要的商业过程。商业过程有可能跨多个用户的多个 conversation。它的状态保存"
+"在 jBPM 数据库里,所以被认为是长期的。协调多个用户的活动比单个用户的交互要复"
+"杂的多,所以 jBPM 为任务管理和处理任务执行的多个并行路径提供了复杂的机制。"
+
+#. Tag: para
+#: Jbpm.xml:25
+#, no-c-format
+msgid ""
+"Don&#39;t get these two things confused ! They operate at very different "
+"levels or granularity. <emphasis>Pageflow</emphasis>, "
+"<emphasis>conversation</emphasis> and <emphasis>task</emphasis> all refer to "
+"a single interaction with a single user. A business process spans many "
+"tasks. Futhermore, the two applications of jBPM are totally orthogonal. You "
+"can use them together or independently or not at all."
+msgstr ""
+"不要将这两者混淆了!它们操作在完全不同的级别或颗粒度。<emphasis>Pageflow</"
+"emphasis>、 <emphasis>conversation</emphasis> 和 <emphasis>task</emphasis> 都"
+"指的和单个用户的单一交互。而商业过程是跨多个任务的。而且,jBPM 的这两种应用是"
+"完全正交的。你可以将之一起使用或单独使用。"
+
+#. Tag: para
+#: Jbpm.xml:28
+#, no-c-format
+msgid ""
+"You don&#39;t have to know jDPL to use Seam. If you&#39;re perfectly happy "
+"defining pageflow using JSF or Seam navigation rules, and if your "
+"application is more data-driven that process-driven, you probably don&#39;t "
+"need jBPM. But we&#39;re finding that thinking of user interaction in terms "
+"of a well-defined graphical representation is helping us build more robust "
+"applications."
+msgstr ""
+"你不需要懂得 jDPL 才可以使用 Seam。如果你非常喜欢用 JSF 或 Seam 的导航规则来"
+"定义页面流程,且你的应用程序更倾向于数据驱动而不是过程驱动,你可能不需要 "
+"jBPM。但我们发现按照明确的图示来考虑用户交互可以帮助我们构建更稳健的应用程"
+"序。"
+
+#. Tag: title
+#: Jbpm.xml:32
+#, no-c-format
+msgid "Pageflow in Seam"
+msgstr "Seam 里的页面流程"
+
+#. Tag: para
+#: Jbpm.xml:33
+#, no-c-format
+msgid "There are two ways to define pageflow in Seam:"
+msgstr "在 Seam 里有两种方法可以定义页面流程:"
+
+#. Tag: para
+#: Jbpm.xml:38
+#, no-c-format
+msgid ""
+"Using JSF or Seam navigation rules - the <emphasis>stateless navigation "
+"model</emphasis>"
+msgstr ""
+"使用 JSF 或 Seam 的导航规则 - <emphasis>无状态的导航模型(stateless "
+"navigation model)</emphasis>"
+
+#. Tag: para
+#: Jbpm.xml:43
+#, no-c-format
+msgid "Using jPDL - the <emphasis>stateful navigation model</emphasis>"
+msgstr ""
+"使用 jPDL - <emphasis>有状态的导航模型(stateful navigation model)</"
+"emphasis>"
+
+#. Tag: para
+#: Jbpm.xml:48
+#, no-c-format
+msgid ""
+"Very simple applications will only need the stateless navigation model. Very "
+"complex applications will use both models in different places. Each model "
+"has its strengths and weaknesses!"
+msgstr ""
+"非创简单的程序将只需要无状态的导航模型。而非常复杂的应用程序将在不同的地方使"
+"用这两者。每个模型都有其优点和弱点!"
+
+#. Tag: title
+#: Jbpm.xml:52
+#, no-c-format
+msgid "The two navigation models"
+msgstr "两种导航模型概述"
+
+#. Tag: para
+#: Jbpm.xml:53
+#, no-c-format
+msgid ""
+"The stateless model defines a mapping from a set of named, logical outcomes "
+"of an event directly to the resulting page of the view. The navigation rules "
+"are entirely oblivious to any state held by the application other than what "
+"page was the source of the event. This means that your action listener "
+"methods must sometimes make decisions about the page flow, since only they "
+"have access to the current state of the application."
+msgstr ""
+"无状态模型定义了直接从事件的逻辑结果到视图页面的映射。导航规则完全适用于应用"
+"程序而不是事件的源页面的任何状态。这意味着有时候你的 action listener 方法必须"
+"决定页面流程,因为只有它们才能够访问应用程序的当前状态。"
+
+#. Tag: para
+#: Jbpm.xml:56
+#, no-c-format
+msgid "Here is an example page flow definition using JSF navigation rules:"
+msgstr "下面是一个使用 JSF 导航规则的页面流程定义的例子:"
+
+#. Tag: programlisting
+#: Jbpm.xml:59
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"    &lt;from-view-id&gt;/numberGuess.jsp&lt;/from-view-id&gt;\n"
+"        \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;guess&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/numberGuess.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;win&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/win.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"        \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;lose&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/lose.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+"&lt;navigation-rule&gt;\n"
+"    &lt;from-view-id&gt;/numberGuess.jsp&lt;/from-view-id&gt;\n"
+"        \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;guess&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/numberGuess.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;win&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/win.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"        \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;lose&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/lose.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"&lt;/navigation-rule&gt;"
+
+#. Tag: para
+#: Jbpm.xml:60
+#, no-c-format
+msgid ""
+"Here is the same example page flow definition using Seam navigation rules:"
+msgstr "下面是一个使用 Seam 导航规则的页面流程定义的例子:"
+
+#. Tag: programlisting
+#: Jbpm.xml:63
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/numberGuess.jsp\"&gt;\n"
+"        \n"
+"    &lt;navigation&gt;\n"
+"        &lt;rule if-outcome=\"guess\"&gt;\n"
+"            &lt;redirect view-id=\"/numberGuess.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"        &lt;rule if-outcome=\"win\"&gt;\n"
+"            &lt;redirect view-id=\"/win.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"        &lt;rule if-outcome=\"lose\"&gt;\n"
+"            &lt;redirect view-id=\"/lose.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+"&lt;page view-id=\"/numberGuess.jsp\"&gt;\n"
+"        \n"
+"    &lt;navigation&gt;\n"
+"        &lt;rule if-outcome=\"guess\"&gt;\n"
+"            &lt;redirect view-id=\"/numberGuess.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"        &lt;rule if-outcome=\"win\"&gt;\n"
+"            &lt;redirect view-id=\"/win.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"        &lt;rule if-outcome=\"lose\"&gt;\n"
+"            &lt;redirect view-id=\"/lose.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"&lt;/navigation-rule&gt;"
+
+#. Tag: para
+#: Jbpm.xml:64
+#, no-c-format
+msgid ""
+"If you find navigation rules overly verbose, you can return view ids "
+"directly from your action listener methods:"
+msgstr ""
+"如果你觉得导航规则过于冗余,你可以直接从 action listener 方法中返回 view id:"
+
+#. Tag: programlisting
+#: Jbpm.xml:67
+#, no-c-format
+msgid ""
+"public String guess() {\n"
+"    if (guess==randomNumber) return \"/win.jsp\";\n"
+"    if (++guessCount==maxGuesses) return \"/lose.jsp\";\n"
+"    return null;\n"
+"}"
+msgstr ""
+"public String guess() {\n"
+"    if (guess==randomNumber) return \"/win.jsp\";\n"
+"    if (++guessCount==maxGuesses) return \"/lose.jsp\";\n"
+"    return null;\n"
+"}"
+
+#. Tag: para
+#: Jbpm.xml:68
+#, no-c-format
+msgid ""
+"Note that this results in a redirect. You can even specify parameters to be "
+"used in the redirect:"
+msgstr "注意这将导致重定向的发生。你甚至可以指定重定向里使用的参数:"
+
+#. Tag: programlisting
+#: Jbpm.xml:71
+#, no-c-format
+msgid ""
+"public String search() {\n"
+"    return \"/searchResults.jsp?searchPattern=#{searchAction.searchPattern}"
+"\";\n"
+"}"
+msgstr ""
+"public String search() {\n"
+"    return \"/searchResults.jsp?searchPattern=#{searchAction.searchPattern}"
+"\";\n"
+"}"
+
+#. Tag: para
+#: Jbpm.xml:72
+#, no-c-format
+msgid ""
+"The stateful model defines a set of transitions between a set of named, "
+"logical application states. In this model, it is possible to express the "
+"flow of any user interaction entirely in the jPDL pageflow definition, and "
+"write action listener methods that are completely unaware of the flow of the "
+"interaction."
+msgstr ""
+"Stateful 模型定义了命名的逻辑应用程序状态之间的一系列转换。在这个模型里,你可"
+"以完全用 jPDL 页面流程定义来表达任何用户交互的流程,并编写完全意识不到交互流"
+"程的 action listener 方法。"
+
+#. Tag: para
+#: Jbpm.xml:75
+#, no-c-format
+msgid "Here is an example page flow definition using jPDL:"
+msgstr "下面是一个使用 jPDL 的页面流程的例子:"
+
+#. Tag: programlisting
+#: Jbpm.xml:78
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"numberGuess\"&gt;\n"
+"    \n"
+"   &lt;start-page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"              &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"      &lt;/transition&gt;\n"
+"   &lt;/start-page&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess."
+"correctGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateRemainingGuesses\" expression=\"#{numberGuess."
+"lastGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"lose\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"displayGuess\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"lose\" view-id=\"/lose.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+"&lt;pageflow-definition name=\"numberGuess\"&gt;\n"
+"    \n"
+"   &lt;start-page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"              &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"      &lt;/transition&gt;\n"
+"   &lt;/start-page&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess."
+"correctGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateRemainingGuesses\" expression=\"#{numberGuess."
+"lastGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"lose\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"displayGuess\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"lose\" view-id=\"/lose.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+
+#. Tag: para
+#: Jbpm.xml:87
+#, no-c-format
+msgid "There are two things we notice immediately here:"
+msgstr "在这里我们要注意两个地方:"
+
+#. Tag: para
+#: Jbpm.xml:92
+#, no-c-format
+msgid ""
+"The JSF/Seam navigation rules are <emphasis>much</emphasis> simpler. "
+"(However, this obscures the fact that the underlying Java code is more "
+"complex.)"
+msgstr ""
+"JSF/Seam 导航规则<emphasis>更加</emphasis>简单。(然而,这意味着底层的 Java "
+"代码要更为复杂。)"
+
+#. Tag: para
+#: Jbpm.xml:97
+#, no-c-format
+msgid ""
+"The jPDL makes the user interaction immediately understandable, without us "
+"needing to even look at the JSP or Java code."
+msgstr ""
+"而 jPDL 使用户的交互变得容易理解,我们甚至不需要查看 JSP 或 Java 代码。"
+
+#. Tag: para
+#: Jbpm.xml:102
+#, no-c-format
+msgid ""
+"In addition, the stateful model is more <emphasis>constrained</emphasis>. "
+"For each logical state (each step in the page flow), there are a constrained "
+"set of possible transitions to other states. The stateless model is an "
+"<emphasis>ad hoc</emphasis> model which is suitable to relatively "
+"unconstrained, freeform navigation where the user decides where he/she wants "
+"to go next, not the application."
+msgstr ""
+"此外,stateful 模型更<emphasis>受约束</emphasis>。对于每个逻辑状态(页面流程"
+"里每个步骤),转换到其他状态都可能受到约束。而 stateless 模型是一个适合相对不"
+"受约束的、用户而不是程序决定下一步的自由导航的<emphasis>专有</emphasis>模型。"
+
+#. Tag: para
+#: Jbpm.xml:105
+#, no-c-format
+msgid ""
+"The stateful/stateless navigation distinction is quite similar to the "
+"traditional view of modal/modeless interaction. Now, Seam applications are "
+"not usually modal in the simple sense of the word - indeed, avoiding "
+"application modal behavior is one of the main reasons for having "
+"conversations! However, Seam applications can be, and often are, modal at "
+"the level of a particular conversation. It is well-known that modal behavior "
+"is something to avoid as much as possible; it is very difficult to predict "
+"the order in which your users are going to want to do things! However, there "
+"is no doubt that the stateful model has its place."
+msgstr ""
+"Stateful/stateless 导航的区别非常类似于 modal/modeless 交互的传统视图。现在,"
+"Seam 应用程序通常不是简单意义上的模态的 - 的确,避免应用程序的模态行为是采用 "
+"conversation 的一个主要原因!然而,Seam 应用程序可以是,也经常是,特定 "
+"conversation 层面的模态的。它以尽量避免模态行为而著称;预测你的用户按什么顺序"
+"去做事情是非常困难的!然而,毫无疑问 stateful 模型具有一席之地。"
+
+#. Tag: para
+#: Jbpm.xml:108
+#, no-c-format
+msgid ""
+"The biggest contrast between the two models is the back-button behavior."
+msgstr "这两个模型的最大区别是它们的 Back-按钮的行为。"
+
+#. Tag: title
+#: Jbpm.xml:114
+#, no-c-format
+msgid "Seam and the back button"
+msgstr "Seam 和 Back 按钮"
+
+#. Tag: para
+#: Jbpm.xml:115
+#, no-c-format
+msgid ""
+"When JSF or Seam navigation rules are used, Seam lets the user freely "
+"navigate via the back, forward and refresh buttons. It is the responsibility "
+"of the application to ensure that conversational state remains internally "
+"consistent when this occurs. Experience with the combination of web "
+"application frameworks like Struts or WebWork - that do not support a "
+"conversational model - and stateless component models like EJB stateless "
+"session beans or the Spring framework has taught many developers that this "
+"is close to impossible to do! However, our experience is that in the context "
+"of Seam, where there is a well-defined conversational model, backed by "
+"stateful session beans, it is actually quite straightforward. Usually it is "
+"as simple as combining the use of <literal>no-conversation-view-id</literal> "
+"with null checks at the beginning of action listener methods. We consider "
+"support for freeform navigation to be almost always desirable."
+msgstr ""
+"当采用 JSF 或 Seam 导航规则时,Seam 让用户自由地通过 Back、Forward 和 "
+"Refresh 按钮进行导航。保持 conversation 状态的一致性是应用程序的职责。使用 "
+"web 应用程序框架组合如 Struts 或 WebWork - 以及 stateless 组件模型如 EJB  "
+"stateless session bean 或 Spring 框架的经验已经告诉开发人员:这已接近于不可能"
+"实现了!然而,我们的经验是,在 Seam 的上下文里,有 stateful session bean 支持"
+"的定义明确的 conversational 模型,实际上是相当简单的。通常这与使用 "
+"<literal>no-conversation-view-id</literal> 和在 action listener 方法的开头检"
+"查 null 的组合一样简单。我们认为对自由导航的支持总是可取的。"
+
+#. Tag: para
+#: Jbpm.xml:118
+#, no-c-format
+msgid ""
+"In this case, the <literal>no-conversation-view-id</literal> declaration "
+"goes in <literal>pages.xml</literal>. It tells Seam to redirect to a "
+"different page if a request originates from a page rendered during a "
+"conversation, and that conversation no longer exists:"
+msgstr ""
+"在这个例子里,<literal>no-conversation-view-id</literal> 声明位于 "
+"<literal>pages.xml</literal> 里。它告诉 Seam 在请求从在某个 conversation 中显"
+"示的页面里产生,而这个 conversation 不再存在时重定向到另外一个页面:"
+
+#. Tag: programlisting
+#: Jbpm.xml:121
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/checkout.xhtml\" \n"
+"        no-conversation-view-id=\"/main.xhtml\"/&gt;"
+msgstr ""
+"&lt;page view-id=\"/checkout.xhtml\" \n"
+"        no-conversation-view-id=\"/main.xhtml\"/&gt;"
+
+#. Tag: para
+#: Jbpm.xml:122
+#, no-c-format
+msgid ""
+"On the other hand, in the stateful model, backbuttoning is interpreted as an "
+"undefined transition back to a previous state. Since the stateful model "
+"enforces a defined set of transitions from the current state, back buttoning "
+"is be default disallowed in the stateful model! Seam transparently detects "
+"the use of the back button, and blocks any attempt to perform an action from "
+"a previous, \"stale\" page, and simply redirects the user to the \"current\" "
+"page (and displays a faces message). Whether you consider this a feature or "
+"a limitation of the stateful model depends upon your point of view: as an "
+"application developer, it is a feature; as a user, it might be frustrating! "
+"You can enable backbutton navigation from a particular page node by setting "
+"<literal>back=\"enabled\"</literal>."
+msgstr ""
+"另一方面,在 stateful 模型里,backbuttoning 被解释为一个回到前一状态的未定义"
+"的转换。既然 stateful 模型规定了当前状态的一系列定义好的转换,那么 "
+"backbuttoning 缺省就是不允许的!Seam 透明地检测到 Back 按钮的使用,并阻止任何"
+"从前一“状态”页面执行动作的企图,且简单地把用户重定向到“当前”页面(并显示一个 "
+"faces 消息)。你是否把这当作 stateful 模型的特征还是限制取决于你的视角:作为"
+"程序开发人员,这是一个特征;而作为用户,这可能令人沮丧!你可以设置 "
+"<literal>back=\"enabled\"</literal> 来启用特定页面节点的 backbutton 导航。"
+
+#. Tag: programlisting
+#: Jbpm.xml:125
+#, no-c-format
+msgid ""
+"&lt;page name=\"checkout\" \n"
+"        view-id=\"/checkout.xhtml\" \n"
+"        back=\"enabled\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"checkout\"/&gt;\n"
+"    &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page name=\"checkout\" \n"
+"        view-id=\"/checkout.xhtml\" \n"
+"        back=\"enabled\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"checkout\"/&gt;\n"
+"    &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Jbpm.xml:126
+#, no-c-format
+msgid ""
+"This allows backbuttoning <emphasis>from</emphasis> the <literal>checkout</"
+"literal> state to <emphasis>any previous state!</emphasis>"
+msgstr ""
+"这允许从 <literal>checkout</literal> 状态 backbuttoning 至<emphasis>任何前面"
+"的状态!</emphasis>"
+
+#. Tag: para
+#: Jbpm.xml:129
+#, no-c-format
+msgid ""
+"Of course, we still need to define what happens if a request originates from "
+"a page rendered during a pageflow, and the conversation with the pageflow no "
+"longer exists. In this case, the <literal>no-conversation-view-id</literal> "
+"declaration goes into the pageflow definition:"
+msgstr ""
+"当然,我们仍需要定义当请求从某个页面流程中显示的页面发起,而该页面流程的 "
+"conversation 不再存在时,所发生的事情。在这里,<literal>no-conversation-view-"
+"id</literal> 声明位于页面流程定义里:"
+
+#. Tag: programlisting
+#: Jbpm.xml:132
+#, no-c-format
+msgid ""
+"&lt;page name=\"checkout\" \n"
+"        view-id=\"/checkout.xhtml\" \n"
+"        back=\"enabled\" \n"
+"        no-conversation-view-id=\"/main.xhtml\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"checkout\"/&gt;\n"
+"    &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page name=\"checkout\" \n"
+"        view-id=\"/checkout.xhtml\" \n"
+"        back=\"enabled\" \n"
+"        no-conversation-view-id=\"/main.xhtml\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"checkout\"/&gt;\n"
+"    &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Jbpm.xml:134
+#, no-c-format
+msgid ""
+"In practice, both navigation models have their place, and you&#39;ll quickly "
+"learn to recognize when to prefer one model over the other."
+msgstr ""
+"在实践中,两种导航模型都有它们的位置,很快你将学习到在何时使用哪种模型。"
+
+#. Tag: title
+#: Jbpm.xml:142
+#, no-c-format
+msgid "Using jPDL pageflows"
+msgstr "使用 jPDL 页面流程"
+
+#. Tag: title
+#: Jbpm.xml:144
+#, no-c-format
+msgid "Installing pageflows"
+msgstr "安装页面流程"
+
+#. Tag: para
+#: Jbpm.xml:145
+#, no-c-format
+msgid ""
+"We need to install the Seam jBPM-related components, and tell them where to "
+"find our pageflow definition. We can specify this Seam configuration in "
+"<literal>components.xml</literal>."
+msgstr ""
+"我们需要安装和 jBPM 相关的 Seam 组件,并告诉他们去哪寻找页面流程定义。我们可"
+"以在 <literal>components.xml</literal> 里指定这个 Seam 配置。"
+
+#. Tag: programlisting
+#: Jbpm.xml:148
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:pageflow-definitions&gt;\n"
+"        &lt;value&gt;pageflow.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:pageflow-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:pageflow-definitions&gt;\n"
+"        &lt;value&gt;pageflow.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:pageflow-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+
+#. Tag: para
+#: Jbpm.xml:149
+#, no-c-format
+msgid ""
+"The first line installs jBPM, the second points to a jPDL-based pageflow "
+"definition."
+msgstr "第一行安装了 jBPM,而第二行指向一个基于 jPDL 的页面流程定义。"
+
+#. Tag: title
+#: Jbpm.xml:155
+#, no-c-format
+msgid "Starting pageflows"
+msgstr "启动页面流程"
+
+#. Tag: para
+#: Jbpm.xml:156
+#, no-c-format
+msgid ""
+"We \"start\" a jPDL-based pageflow by specifying the name of the process "
+"definition using a <literal>@Begin</literal>, <literal>@BeginTask</literal> "
+"or <literal>@StartTask</literal> annotation:"
+msgstr ""
+"我们用 <literal>@Begin</literal>、<literal>@BeginTask</literal> 或 "
+"<literal>@StartTask</literal> 注解指定过程定义的名字来“启动”基于 jPDL 的页面"
+"流程。"
+
+#. Tag: programlisting
+#: Jbpm.xml:159
+#, no-c-format
+msgid ""
+"@Begin(pageflow=\"numberguess\")\n"
+"public void begin() { ... }"
+msgstr ""
+"@Begin(pageflow=\"numberguess\")\n"
+"public void begin() { ... }"
+
+#. Tag: para
+#: Jbpm.xml:160
+#, no-c-format
+msgid "Alternatively we can start a pageflow using pages.xml:"
+msgstr "或者我们可以用 pages.xml 启动页面流程:"
+
+#. Tag: programlisting
+#: Jbpm.xml:163
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"        &lt;begin-conversation pageflow=\"numberguess\"/&gt;\n"
+"    &lt;/page&gt;"
+msgstr ""
+"&lt;page&gt;\n"
+"        &lt;begin-conversation pageflow=\"numberguess\"/&gt;\n"
+"    &lt;/page&gt;"
+
+#. Tag: para
+#: Jbpm.xml:164
+#, no-c-format
+msgid ""
+"If we are beginning the pageflow during the <literal>RENDER_RESPONSE</"
+"literal> phase&mdash;during a <literal>@Factory</literal> or "
+"<literal>@Create</literal> method, for example&mdash;we consider ourselves "
+"to be already at the page being rendered, and use a <literal>&lt;start-"
+"page&gt;</literal> node as the first node in the pageflow, as in the example "
+"above."
+msgstr ""
+"如果我们在 <literal>RENDER_RESPONSE</literal> 阶段开始页面流程&mdash;例如,"
+"在 <literal>@Factory</literal> 或 <literal>@Create</literal> 方法中&mdash;如"
+"上例所示,我们认为我们已经处于正被显示的页面中,并以 <literal>&lt;start-"
+"page&gt;</literal> 为页面流程里的第一个节点。"
+
+#. Tag: para
+#: Jbpm.xml:167
+#, no-c-format
+msgid ""
+"But if the pageflow is begun as the result of an action listener invocation, "
+"the outcome of the action listener determines which is the first page to be "
+"rendered. In this case, we use a <literal>&lt;start-state&gt;</literal> as "
+"the first node in the pageflow, and declare a transition for each possible "
+"outcome:"
+msgstr ""
+"但如果这个页面流程作为 action listener 调用的结果而开始,这个 action "
+"listener 的结果决定了所显示的第一个页面。在这种情况下,我们以 <literal>&lt;"
+"start-state&gt;</literal> 为页面流程里的第一个节点,并为每种可能的结果声明一"
+"个转换:"
+
+#. Tag: programlisting
+#: Jbpm.xml:170
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"viewEditDocument\"&gt;\n"
+"\n"
+"    &lt;start-state name=\"start\"&gt;\n"
+"        &lt;transition name=\"documentFound\" to=\"displayDocument\"/&gt;\n"
+"        &lt;transition name=\"documentNotFound\" to=\"notFound\"/&gt;\n"
+"    &lt;/start-state&gt;\n"
+"    \n"
+"    &lt;page name=\"displayDocument\" view-id=\"/document.jsp\"&gt;\n"
+"        &lt;transition name=\"edit\" to=\"editDocument\"/&gt;\n"
+"        &lt;transition name=\"done\" to=\"main\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"    \n"
+"    ...\n"
+"    \n"
+"    &lt;page name=\"notFound\" view-id=\"/404.jsp\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"    &lt;/page&gt;\n"
+"    \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+"&lt;pageflow-definition name=\"viewEditDocument\"&gt;\n"
+"\n"
+"    &lt;start-state name=\"start\"&gt;\n"
+"        &lt;transition name=\"documentFound\" to=\"displayDocument\"/&gt;\n"
+"        &lt;transition name=\"documentNotFound\" to=\"notFound\"/&gt;\n"
+"    &lt;/start-state&gt;\n"
+"    \n"
+"    &lt;page name=\"displayDocument\" view-id=\"/document.jsp\"&gt;\n"
+"        &lt;transition name=\"edit\" to=\"editDocument\"/&gt;\n"
+"        &lt;transition name=\"done\" to=\"main\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"    \n"
+"    ...\n"
+"    \n"
+"    &lt;page name=\"notFound\" view-id=\"/404.jsp\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"    &lt;/page&gt;\n"
+"    \n"
+"&lt;/pageflow-definition&gt;"
+
+#. Tag: title
+#: Jbpm.xml:174
+#, no-c-format
+msgid "Page nodes and transitions"
+msgstr "页面节点和转换"
+
+#. Tag: para
+#: Jbpm.xml:175
+#, no-c-format
+msgid ""
+"Each <literal>&lt;page&gt;</literal> node represents a state where the "
+"system is waiting for user input:"
+msgstr ""
+"每个<literal>&lt;页面(page)&gt;</literal>节点代表了一个系统等待用户输入的状"
+"态:"
+
+#. Tag: programlisting
+#: Jbpm.xml:178
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"        &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"        &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Jbpm.xml:179
+#, no-c-format
+msgid ""
+"The <literal>view-id</literal> is the JSF view id. The <literal>&lt;redirect/"
+"&gt;</literal> element has the same effect as <literal>&lt;redirect/&gt;</"
+"literal> in a JSF navigation rule: namely, a post-then-redirect behavior, to "
+"overcome problems with the browser&#39;s refresh button. (Note that Seam "
+"propagates conversation contexts over these browser redirects. So there is "
+"no need for a Ruby on Rails style \"flash\" construct in Seam!)"
+msgstr ""
+"<literal>view-id</literal> 是 JSF 的 view id。<literal>&lt;redirect/&gt;</"
+"literal> 元素具有和 JSF 导航规则里的 <literal>&lt;redirect/&gt;</literal> 相"
+"同的效果:也就是 post-then-redirect 行为,解决浏览器的刷新(Refresh)按钮导致"
+"的问题。(注意,Seam 在这些浏览器重定向之间传递 conversation 上下文。所以在 "
+"Seam 并不需要 Ruby on Rails 风格的 \"flash\" construct!)"
+
+#. Tag: para
+#: Jbpm.xml:182
+#, no-c-format
+msgid ""
+"The transition name is the name of a JSF outcome triggered by clicking a "
+"command button or command link in <literal>numberGuess.jsp</literal>."
+msgstr ""
+"转换的名字是点击 <literal>numberGuess.jsp</literal> 里的命令按钮或命令链接所"
+"触发的 JSF 的 outcome 的名称。"
+
+#. Tag: programlisting
+#: Jbpm.xml:185
+#, no-c-format
+msgid ""
+"&lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"guess\"/&gt;"
+msgstr ""
+"&lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"guess\"/&gt;"
+
+#. Tag: para
+#: Jbpm.xml:186
+#, no-c-format
+msgid ""
+"When the transition is triggered by clicking this button, jBPM will activate "
+"the transition action by calling the <literal>guess()</literal> method of "
+"the <literal>numberGuess</literal> component. Notice that the syntax used "
+"for specifying actions in the jPDL is just a familiar JSF EL expression, and "
+"that the transition action handler is just a method of a Seam component in "
+"the current Seam contexts. So we have exactly the same event model for jBPM "
+"events that we already have for JSF events! (The <emphasis>One Kind of "
+"Stuff</emphasis> principle.)"
+msgstr ""
+"当这个转换通过点击按钮被触发时,jBPM 将调用 <literal>numberGuess</literal> 组"
+"件的 <literal>guess()</literal> 方法里激活这个转换的动作。注意,在 jPDL 里指"
+"定动作的语法是我们所熟悉的 JSF EL 表达式,而转换动作处理程序也只是当前 Seam "
+"上下文里的 Seam 组件的一个方法而已。所以,jBPM 事件具有和 JSF 事件完全相同的"
+"事件模型!(<emphasis>One Kind of Stuff</emphasis> 原则)"
+
+#. Tag: para
+#: Jbpm.xml:189
+#, no-c-format
+msgid ""
+"In the case of a null outcome (for example, a command button with no "
+"<literal>action</literal> defined), Seam will signal the transition with no "
+"name if one exists, or else simply redisplay the page if all transitions "
+"have names. So we could slightly simplify our example pageflow and this "
+"button:"
+msgstr ""
+"在 outcome 为 null 的情况下(例如,没定义 <literal>action</literal> 的命令按"
+"钮),Seam 将把这个转换标记为没有名字,或者,在所有转换都有名字情况下,简单地"
+"重新显示这个页面。所以我们可以稍稍简化示例页面流程和这个按钮:"
+
+#. Tag: programlisting
+#: Jbpm.xml:192
+#, no-c-format
+msgid "&lt;h:commandButton type=\"submit\" value=\"Guess\"/&gt;"
+msgstr "&lt;h:commandButton type=\"submit\" value=\"Guess\"/&gt;"
+
+#. Tag: para
+#: Jbpm.xml:193
+#, no-c-format
+msgid "Would fire the following un-named transition:"
+msgstr "将启动下面的没有名字的转换:"
+
+#. Tag: programlisting
+#: Jbpm.xml:196
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"evaluateGuess\"&gt;\n"
+"        &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"evaluateGuess\"&gt;\n"
+"        &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Jbpm.xml:197
+#, no-c-format
+msgid ""
+"It is even possible to have the button call an action method, in which case "
+"the action outcome will determine the transition to be taken:"
+msgstr ""
+"你甚至可以用这个按钮调用 action 方法,在这种情况下,action 的 outcome 将决定"
+"采用哪个转换:"
+
+#. Tag: programlisting
+#: Jbpm.xml:200
+#, no-c-format
+msgid ""
+"&lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"#{numberGuess."
+"guess}\"/&gt;"
+msgstr ""
+"&lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"#{numberGuess."
+"guess}\"/&gt;"
+
+#. Tag: programlisting
+#: Jbpm.xml:201
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;transition name=\"correctGuess\" to=\"win\"/&gt;\n"
+"    &lt;transition name=\"incorrectGuess\" to=\"evaluateGuess\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;transition name=\"correctGuess\" to=\"win\"/&gt;\n"
+"    &lt;transition name=\"incorrectGuess\" to=\"evaluateGuess\"/&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Jbpm.xml:202
+#, no-c-format
+msgid ""
+"However, this is considered an inferior style, since it moves responsibility "
+"for controlling the flow out of the pageflow definition and back into the "
+"other components. It is much better to centralize this concern in the "
+"pageflow itself."
+msgstr ""
+"然而,这被认为是不好的风格,因为它将控制流程的职责从页面流程定义里移出到其他"
+"组件里。在页面流程里进行集中控制要好得多。"
+
+#. Tag: title
+#: Jbpm.xml:208
+#, no-c-format
+msgid "Controlling the flow"
+msgstr "控制流程"
+
+#. Tag: para
+#: Jbpm.xml:209
+#, no-c-format
+msgid ""
+"Usually, we don&#39;t need the more powerful features of jPDL when defining "
+"pageflows. We do need the <literal>&lt;decision&gt;</literal> node, however:"
+msgstr ""
+"通常,在定义页面流程我们不需要用到更强大的 jPDL 功能。然而,我们需要 "
+"<literal>&lt;decision&gt;</literal> 节点:"
+
+#. Tag: programlisting
+#: Jbpm.xml:212
+#, no-c-format
+msgid ""
+"&lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess.correctGuess}"
+"\"&gt;\n"
+"    &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"    &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"&lt;/decision&gt;"
+msgstr ""
+"&lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess.correctGuess}"
+"\"&gt;\n"
+"    &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"    &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"&lt;/decision&gt;"
+
+#. Tag: para
+#: Jbpm.xml:213
+#, no-c-format
+msgid ""
+"A decision is made by evaluating a JSF EL expression in the Seam contexts."
+msgstr "decision 是通过对 Seam 上下文里的 JSF EL 表达式求值来决定的。"
+
+#. Tag: title
+#: Jbpm.xml:219
+#, no-c-format
+msgid "Ending the flow"
+msgstr "结束流程"
+
+#. Tag: para
+#: Jbpm.xml:220
+#, no-c-format
+msgid ""
+"We end the conversation using <literal>&lt;end-conversation&gt;</literal> or "
+"<literal>@End</literal>. (In fact, for readability, use of <emphasis>both</"
+"emphasis> is encouraged.)"
+msgstr ""
+"我们用 <literal>&lt;end-conversation&gt;</literal> 或 <literal>@End</"
+"literal> 结束 conversation。(事实上,为了可读性,我们鼓励两者<emphasis>皆用"
+"</emphasis>)。"
+
+#. Tag: programlisting
+#: Jbpm.xml:223
+#, no-c-format
+msgid ""
+"&lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;end-conversation/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;end-conversation/&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Jbpm.xml:224
+#, no-c-format
+msgid ""
+"Optionally, we can end a task, specify a jBPM <literal>transition</literal> "
+"name. In this case, Seam will signal the end of the current task in the "
+"overarching business process."
+msgstr ""
+"我们也可以指定 jBPM <literal>转换(transition)</literal>名来结束任务。在这种"
+"情况下,Seam 将发出当前任务在主要商业过程里结束的信号。"
+
+#. Tag: programlisting
+#: Jbpm.xml:227
+#, no-c-format
+msgid ""
+"&lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;end-task transition=\"success\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;end-task transition=\"success\"/&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: title
+#: Jbpm.xml:233
+#, no-c-format
+msgid "Business process management in Seam"
+msgstr "Seam 里的商业过程管理"
+
+#. Tag: para
+#: Jbpm.xml:234
+#, no-c-format
+msgid ""
+"A business process is a well-defined set of tasks that must be performed by "
+"users or software systems according to well-defined rules about "
+"<emphasis>who</emphasis> can perform a task, and <emphasis>when</emphasis> "
+"it should be performed. Seam&#39;s jBPM integration makes it easy to display "
+"lists of tasks to users and let them manage their tasks. Seam also lets the "
+"application store state associated with the business process in the "
+"<literal>BUSINESS_PROCESS</literal> context, and have that state made "
+"persistent via jBPM variables."
+msgstr ""
+"商业过程是一组定义明确的任务,用户或软件系统必须按照明确的规则来执行它,如"
+"<emphasis>谁</emphasis>可以执行它、应该在<emphasis>何时</emphasis>被执行。"
+"Seam 集成了 jBPM,这使向用户显示任务列表并让他们管理这些任务变得更加容易。"
+"Seam 也让应用程序将和商业过程相关的状态保存在 <literal>BUSINESS_PROCESS</"
+"literal> 上下文里,并通过 jBPM 变量将状态持久化。"
+
+#. Tag: para
+#: Jbpm.xml:237
+#, no-c-format
+msgid ""
+"A simple business process definition looks much the same as a page flow "
+"definition (<emphasis>One Kind of Stuff</emphasis>), except that instead of "
+"<literal>&lt;page&gt;</literal> nodes, we have <literal>&lt;task-node&gt;</"
+"literal> nodes. In a long-running business process, the wait states are "
+"where the system is waiting for some user to log in and perform a task."
+msgstr ""
+"简单的商业过程定义看起来和页面流程定义完全一样(<emphasis>One Kind of Stuff</"
+"emphasis>),除了用 <literal>&lt;task-node&gt;</literal> 节点代替 "
+"<literal>&lt;page&gt;</literal> 节点。在长期的商业过程里,系统在等待用户登录"
+"和执行任务处于 wait 状态。"
+
+#. Tag: programlisting
+#: Jbpm.xml:240
+#, no-c-format
+msgid ""
+"&lt;process-definition name=\"todo\"&gt;\n"
+"   \n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"todo\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;task-node name=\"todo\"&gt;\n"
+"      &lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"         &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"      &lt;/task&gt;\n"
+"      &lt;transition to=\"done\"/&gt;\n"
+"   &lt;/task-node&gt;\n"
+"   \n"
+"   &lt;end-state name=\"done\"/&gt;\n"
+"   \n"
+"&lt;/process-definition&gt;"
+msgstr ""
+"&lt;process-definition name=\"todo\"&gt;\n"
+"   \n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"todo\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;task-node name=\"todo\"&gt;\n"
+"      &lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"         &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"      &lt;/task&gt;\n"
+"      &lt;transition to=\"done\"/&gt;\n"
+"   &lt;/task-node&gt;\n"
+"   \n"
+"   &lt;end-state name=\"done\"/&gt;\n"
+"   \n"
+"&lt;/process-definition&gt;"
+
+#. Tag: para
+#: Jbpm.xml:251
+#, no-c-format
+msgid ""
+"It is perfectly possible that we might have both jPDL business process "
+"definitions and jPDL pageflow definitions in the same project. If so, the "
+"relationship between the two is that a single <literal>&lt;task&gt;</"
+"literal> in a business process corresponds to a whole pageflow <literal>&lt;"
+"pageflow-definition&gt;</literal>"
+msgstr ""
+"我们完全有可能在同一个项目里定义 jPDL 商业过程和 jPDL 页面流程。此时,这两者"
+"的关系是商业过程里的单个 <literal>&lt;task&gt;</literal> 对应整个的页面流程 "
+"<literal>&lt;pageflow-definition&gt;</literal>。"
+
+#. Tag: title
+#: Jbpm.xml:256
+#, no-c-format
+msgid "Using jPDL business process definitions"
+msgstr "使用 jPDL 商业过程定义"
+
+#. Tag: title
+#: Jbpm.xml:258
+#, no-c-format
+msgid "Installing process definitions"
+msgstr "安装过程定义"
+
+#. Tag: para
+#: Jbpm.xml:259
+#, no-c-format
+msgid ""
+"We need to install jBPM, and tell it where to find the business process "
+"definitions:"
+msgstr "我们需要安装 jBPM 并告诉它去哪寻找商业过程定义:"
+
+#. Tag: programlisting
+#: Jbpm.xml:262
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;todo.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;todo.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+
+#. Tag: title
+#: Jbpm.xml:266
+#, no-c-format
+msgid "Initializing actor ids"
+msgstr "初始化 actor id"
+
+#. Tag: para
+#: Jbpm.xml:267
+#, no-c-format
+msgid ""
+"We always need to know what user is currently logged in. jBPM \"knows\" "
+"users by their <emphasis>actor id</emphasis> and <emphasis>group actor ids</"
+"emphasis>. We specify the current actor ids using the built in Seam "
+"component named <literal>actor</literal>:"
+msgstr ""
+"我们总是需要知道当前登录的用户。jBPM 通过 <emphasis>actor id</emphasis> 和 "
+"<emphasis>group actor ids</emphasis> 来“获知”这些登录的用户。我们用名为 "
+"<literal>actor</literal> 的内置 Seam 组件指定当前的 actor id:"
+
+#. Tag: programlisting
+#: Jbpm.xml:270
+#, no-c-format
+msgid ""
+"@In Actor actor;\n"
+"\n"
+"public String login() {\n"
+"    ...\n"
+"    actor.setId( user.getUserName() );\n"
+"    actor.getGroupActorIds().addAll( user.getGroupNames() );\n"
+"    ...\n"
+"}"
+msgstr ""
+"@In Actor actor;\n"
+"\n"
+"public String login() {\n"
+"    ...\n"
+"    actor.setId( user.getUserName() );\n"
+"    actor.getGroupActorIds().addAll( user.getGroupNames() );\n"
+"    ...\n"
+"}"
+
+#. Tag: title
+#: Jbpm.xml:274
+#, no-c-format
+msgid "Initiating a business process"
+msgstr "初始化商业过程"
+
+#. Tag: para
+#: Jbpm.xml:275
+#, no-c-format
+msgid ""
+"To initiate a business process instance, we use the <literal>@CreateProcess</"
+"literal> annotation:"
+msgstr ""
+"要初始化商业过程实例,我们可以使用 <literal>@CreateProcess</literal> 注解:"
+
+#. Tag: programlisting
+#: Jbpm.xml:278
+#, no-c-format
+msgid ""
+"@CreateProcess(definition=\"todo\")\n"
+"public void createTodo() { ... }"
+msgstr ""
+"@CreateProcess(definition=\"todo\")\n"
+"public void createTodo() { ... }"
+
+#. Tag: para
+#: Jbpm.xml:279
+#, no-c-format
+msgid "Alternatively we can initiate a business process using pages.xml:"
+msgstr "或者我们可以用 pages.xml 初始化商业过程:"
+
+#. Tag: programlisting
+#: Jbpm.xml:282
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;create-process definition=\"todo\" /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page&gt;\n"
+"    &lt;create-process definition=\"todo\" /&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: title
+#: Jbpm.xml:286
+#, no-c-format
+msgid "Task assignment"
+msgstr "任务分配"
+
+#. Tag: para
+#: Jbpm.xml:287
+#, no-c-format
+msgid ""
+"When a process starts, task instances are created. These must be assigned to "
+"users or user groups. We can either hardcode our actor ids, or delegate to a "
+"Seam component:"
+msgstr ""
+"当一个过程启动时,相应的任务实例就会被创建。这些任务必须分配给用户或用户组。"
+"我们可以将 actor id 硬编码,也可以委托给 Seam 组件:"
+
+#. Tag: programlisting
+#: Jbpm.xml:290
+#, no-c-format
+msgid ""
+"&lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"    &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"&lt;/task&gt;"
+msgstr ""
+"&lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"    &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"&lt;/task&gt;"
+
+#. Tag: para
+#: Jbpm.xml:291
+#, no-c-format
+msgid ""
+"In this case, we have simply assigned the task to the current user. We can "
+"also assign tasks to a pool:"
+msgstr ""
+"在这个例子里,我们简单地把任务分配给当前用户。我们也可以把任务分配给任务池:"
+
+#. Tag: programlisting
+#: Jbpm.xml:294
+#, no-c-format
+msgid ""
+"&lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"    &lt;assignment pooled-actors=\"employees\"/&gt;\n"
+"&lt;/task&gt;"
+msgstr ""
+"&lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"    &lt;assignment pooled-actors=\"employees\"/&gt;\n"
+"&lt;/task&gt;"
+
+#. Tag: title
+#: Jbpm.xml:298
+#, no-c-format
+msgid "Task lists"
+msgstr "任务列表"
+
+#. Tag: para
+#: Jbpm.xml:299
+#, no-c-format
+msgid ""
+"Several built-in Seam components make it easy to display task lists. The "
+"<literal>pooledTaskInstanceList</literal> is a list of pooled tasks that "
+"users may assign to themselves:"
+msgstr ""
+"几个内置的 Seam 组件让任务列表的显示变得容易。"
+"<literal>pooledTaskInstanceList</literal> 是用户可以分配给自己的任务池列表。"
+
+#. Tag: programlisting
+#: Jbpm.xml:302
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{pooledTaskInstanceList}\" var=\"task\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Description&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{task.description}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link action=\"#{pooledTask.assignToCurrentActor}\" value="
+"\"Assign\" taskInstance=\"#{task}\"/&gt;\n"
+"    &lt;/h:column&gt;                    \n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+"&lt;h:dataTable value=\"#{pooledTaskInstanceList}\" var=\"task\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Description&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{task.description}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link action=\"#{pooledTask.assignToCurrentActor}\" value="
+"\"Assign\" taskInstance=\"#{task}\"/&gt;\n"
+"    &lt;/h:column&gt;                    \n"
+"&lt;/h:dataTable&gt;"
+
+#. Tag: para
+#: Jbpm.xml:303
+#, no-c-format
+msgid ""
+"Note that instead of <literal>&lt;s:link&gt;</literal> we could have used a "
+"plain JSF <literal>&lt;h:commandLink&gt;</literal>:"
+msgstr ""
+"注意,我们可以用普通的 JSF <literal>&lt;h:commandLink&gt;</literal> 来代替 "
+"<literal>&lt;s:link&gt;</literal>:"
+
+#. Tag: programlisting
+#: Jbpm.xml:306
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"#{pooledTask.assignToCurrentActor}\"&gt; \n"
+"    &lt;f:param name=\"taskId\" value=\"#{task.id}\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+"&lt;h:commandLink action=\"#{pooledTask.assignToCurrentActor}\"&gt; \n"
+"    &lt;f:param name=\"taskId\" value=\"#{task.id}\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+
+#. Tag: para
+#: Jbpm.xml:307
+#, no-c-format
+msgid ""
+"The <literal>pooledTask</literal> component is a built-in component that "
+"simply assigns the task to the current user."
+msgstr ""
+"<literal>pooledTask</literal> 组件是一个简单地把任务分配给当前用户的内置组"
+"件。"
+
+#. Tag: para
+#: Jbpm.xml:310
+#, no-c-format
+msgid ""
+"The <literal>taskInstanceListForType</literal> component includes tasks of a "
+"particular type that are assigned to the current user:"
+msgstr ""
+"<literal>taskInstanceListByType</literal> 组件包括分配给当前用户的某个特定类"
+"型的任务:"
+
+#. Tag: programlisting
+#: Jbpm.xml:313
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{taskInstanceListForType[&#39;todo&#39;]}\" var="
+"\"task\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Description&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{task.description}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link action=\"#{todoList.start}\" value=\"Start Work\" "
+"taskInstance=\"#{task}\"/&gt;\n"
+"    &lt;/h:column&gt;                    \n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+"&lt;h:dataTable value=\"#{taskInstanceListForType[&#39;todo&#39;]}\" var="
+"\"task\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Description&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{task.description}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link action=\"#{todoList.start}\" value=\"Start Work\" "
+"taskInstance=\"#{task}\"/&gt;\n"
+"    &lt;/h:column&gt;                    \n"
+"&lt;/h:dataTable&gt;"
+
+#. Tag: title
+#: Jbpm.xml:317
+#, no-c-format
+msgid "Performing a task"
+msgstr "执行任务"
+
+#. Tag: para
+#: Jbpm.xml:318
+#, no-c-format
+msgid ""
+"To begin work on a task, we use either <literal>@StartTask</literal> or "
+"<literal>@BeginTask</literal> on the listener method:"
+msgstr ""
+"要开始操作任务,我们可以在 listener 方法上使用 <literal>@StartTask</literal> "
+"or <literal>@BeginTask</literal>:"
+
+#. Tag: programlisting
+#: Jbpm.xml:321
+#, no-c-format
+msgid ""
+"@StartTask\n"
+"public String start() { ... }"
+msgstr ""
+"@StartTask\n"
+"public String start() { ... }"
+
+#. Tag: para
+#: Jbpm.xml:322
+#, no-c-format
+msgid "Alternatively we can begin work on a task using pages.xml:"
+msgstr "或者我们可以用 pages.xml 来开始任务操作:"
+
+#. Tag: programlisting
+#: Jbpm.xml:325
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;start-task /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page&gt;\n"
+"    &lt;start-task /&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Jbpm.xml:326
+#, no-c-format
+msgid ""
+"These annotations begin a special kind of conversation that has significance "
+"in terms of the overarching business process. Work done by this conversation "
+"has access to state held in the business process context."
+msgstr ""
+"这些注解开始了一种对于主要商业过程很重要的特殊类型的 conversation。这个 "
+"conversation 完成的工作可以访问商业过程上下文里保存的状态。"
+
+#. Tag: para
+#: Jbpm.xml:329
+#, no-c-format
+msgid ""
+"If we end the conversation using <literal>@EndTask</literal>, Seam will "
+"signal the completion of the task:"
+msgstr ""
+"如果我们用 <literal>@EndTask</literal> 来结束 conversation,Seam 将给出任务完"
+"成的信号:"
+
+#. Tag: programlisting
+#: Jbpm.xml:332
+#, no-c-format
+msgid ""
+"@EndTask(transition=\"completed\")\n"
+"public String completed() { ... }"
+msgstr ""
+"@EndTask(transition=\"completed\")\n"
+"public String completed() { ... }"
+
+#. Tag: para
+#: Jbpm.xml:333
+#, no-c-format
+msgid "Alternatively we can use pages.xml:"
+msgstr "或者我们可以使用 pages.xml:"
+
+#. Tag: programlisting
+#: Jbpm.xml:336
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;end-task transition=\"completed\" /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page&gt;\n"
+"    &lt;end-task transition=\"completed\" /&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Jbpm.xml:337
+#, no-c-format
+msgid ""
+"(Alternatively, we could have used <literal>&lt;end-conversation&gt;</"
+"literal> as shown above.)"
+msgstr ""
+"(或者,如上所示,我们也可以使用 <literal>&lt;end-conversation&gt;</"
+"literal>。)"
+
+#. Tag: para
+#: Jbpm.xml:340
+#, no-c-format
+msgid ""
+"At this point, jBPM takes over and continues executing the business process "
+"definition. (In more complex processes, several tasks might need to be "
+"completed before process execution can resume.)"
+msgstr ""
+"此时,jBPM 接管并继续执行商业过程的定义。(在更为复杂的过程里,在过程恢复执行"
+"前,可能需要先完成某几个任务。)"
+
+#. Tag: para
+#: Jbpm.xml:344
+#, no-c-format
+msgid ""
+"Please refer to the jBPM documentation for a more thorough overview of the "
+"sophisticated features that jBPM provides for managing complex business "
+"processes."
+msgstr "请参考 jBPM 文档来了解它提供的管理复杂商业过程的高级特征。"

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Jms.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Jms.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Jms.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,725 @@
+# translation of Jms.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Xi HUANG <xhuang at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Jms\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-02-04 23:29+0000\n"
+"PO-Revision-Date: 2007-10-11 22:04+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Jms.xml:6
+#, no-c-format
+msgid "Asynchronicity and messaging"
+msgstr "异步性和消息"
+
+#. Tag: para
+#: Jms.xml:7
+#, no-c-format
+msgid ""
+"Seam makes it very easy to perform work asynchronously from a web request. "
+"When most people think of asynchronicity in Java EE, they think of using "
+"JMS. This is certainly one way to approach the problem in Seam, and is the "
+"right way when you have strict and well-defined quality of service "
+"requirements. Seam makes it easy to send and recieve JMS messages using Seam "
+"components."
+msgstr ""
+"Seam 使 web 请求的异步处理变得更为容易。大多数人考虑 Java EE 的异步处理时,他"
+"们就会想及 JMS。在 Seam 里这当然是个办法,尤其当你面对严格和明确的服务需求"
+"时。Seam 利用组件使发送和接受 JMS 消息变得更为方便。"
+
+#. Tag: para
+#: Jms.xml:10
+#, no-c-format
+msgid ""
+"But for many usecases, JMS is overkill. Seam layers a simple asynchronous "
+"method and event facility over the EJB 3.0 timer service."
+msgstr ""
+"但在很多情况下,JMS 效率过低。Seam 采用了一个基于 EJB 3.0 定时器(Timer)服务"
+"的简单异步方法和事件机制。"
+
+#. Tag: title
+#: Jms.xml:13
+#, no-c-format
+msgid "Asynchronicity"
+msgstr "异步性"
+
+#. Tag: para
+#: Jms.xml:14
+#, no-c-format
+msgid ""
+"Asynchronous events and method calls have the same quality of service "
+"expectations as the container&#39;s EJB timer service. If you&#39;re not "
+"familiar with the Timer service, don&#39;t worry, you don&#39;t need to "
+"interact with it directly if you want to use asynchronous methods in Seam."
+msgstr ""
+"异步事件和方法调用具有和容器的 EJB 定时器服务相等的服务质量。如果你不熟悉定时"
+"器服务,不要担心,在 Seam 里使用异步方法时你并不需要直接干涉它。 "
+
+#. Tag: para
+#: Jms.xml:17
+#, no-c-format
+msgid ""
+"To use asynchronous methods and events, you need to add the following line "
+"to <literal>components.xml</literal>:"
+msgstr ""
+"要使用异步方法和事件,你需要在 <literal>components.xml</literal> 添加如下的一"
+"行:"
+
+#. Tag: programlisting
+#: Jms.xml:20
+#, no-c-format
+msgid "&lt;core:dispatcher/&gt;"
+msgstr "&lt;core:dispatcher/&gt;"
+
+#. Tag: para
+#: Jms.xml:21
+#, no-c-format
+msgid ""
+"Note that this functionality is not available in environments which do not "
+"support EJB 3.0."
+msgstr "注意,这个功能在不支持 EJB 3.0 的环境里不可用。"
+
+#. Tag: title
+#: Jms.xml:24
+#, no-c-format
+msgid "Asynchronous methods"
+msgstr "异步方法"
+
+#. Tag: para
+#: Jms.xml:25
+#, no-c-format
+msgid ""
+"In simplest form, an asynchronous call just lets a method call be processed "
+"asynchronously (in a different thread) from the caller. We usually use an "
+"asynchronous call when we want to return an immediate response to the "
+"client, and let some expensive work be processed in the background. This "
+"pattern works very well in applications which use AJAX, where the client can "
+"automatically poll the server for the result of the work."
+msgstr ""
+"简单地说,异步调用就是异步地处理方法调用(在不同的线程里)。当需要马上给客户"
+"一个响应并在后台处理某些比较消耗资源的任务时,我们通常使用异步调用。这种模式"
+"在使用 AJAX 的程序里应用的非常好,客户机可以自动地轮询服务器来获取相应的结"
+"果。"
+
+#. Tag: para
+#: Jms.xml:28
+#, no-c-format
+msgid ""
+"For EJB components, we annotate the local interface to specify that a method "
+"is processed asynchronously."
+msgstr "对于 EJB 组件,我们通过注解本地接口来指定异步处理某个方法。"
+
+#. Tag: programlisting
+#: Jms.xml:31
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public void processPayment(Payment payment);\n"
+"}"
+msgstr ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public void processPayment(Payment payment);\n"
+"}"
+
+#. Tag: para
+#: Jms.xml:32
+#, no-c-format
+msgid ""
+"(For JavaBean components we can annotate the component implementation class "
+"if we like.)"
+msgstr "(对于 JavaBean 组件,如果愿意的话我们也可以注解组件的实现类。)"
+
+#. Tag: para
+#: Jms.xml:35
+#, no-c-format
+msgid "The use of asynchronicity is transparent to the bean class:"
+msgstr "使用异步处理对于 bean 类是透明的:"
+
+#. Tag: programlisting
+#: Jms.xml:38
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"paymentHandler\")\n"
+"public class PaymentHandlerBean implements PaymentHandler\n"
+"{\n"
+"    public void processPayment(Payment payment)\n"
+"    {\n"
+"        //do some work!\n"
+"    }\n"
+"}"
+msgstr ""
+"@Stateless\n"
+"@Name(\"paymentHandler\")\n"
+"public class PaymentHandlerBean implements PaymentHandler\n"
+"{\n"
+"    public void processPayment(Payment payment)\n"
+"    {\n"
+"        //do some work!\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Jms.xml:39
+#, no-c-format
+msgid "And also transparent to the client:"
+msgstr "对客户机也是透明的:"
+
+#. Tag: programlisting
+#: Jms.xml:42
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String pay()\n"
+"    {\n"
+"        paymentHandler.processPayment( new Payment(bill) );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String pay()\n"
+"    {\n"
+"        paymentHandler.processPayment( new Payment(bill) );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Jms.xml:43
+#, no-c-format
+msgid ""
+"The asynchronous method is processed in a completely new event context and "
+"does not have access to the session or conversation context state of the "
+"caller. However, the business process context <emphasis>is</emphasis> "
+"propagated."
+msgstr ""
+"异步方法在一个新的事件上下文里进行处理,它不能访问调用者的  session 或 "
+"conversation 上下文状态。然而,商业过程上下文<emphasis>会</emphasis>被填充。"
+
+#. Tag: para
+#: Jms.xml:46
+#, no-c-format
+msgid ""
+"Asynchronous method calls may be scheduled for later execution using the "
+"<literal>@Duration</literal>, <literal>@Expiration</literal> and "
+"<literal>@IntervalDuration</literal> annotations."
+msgstr ""
+"异步方法调用可以使用 <literal>@Duration</literal>、<literal>@Expiration</"
+"literal> 和 <literal>@IntervalDuration</literal> 注解预定在以后执行。"
+
+#. Tag: programlisting
+#: Jms.xml:49
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public void processScheduledPayment(Payment payment, @Expiration Date "
+"date);\n"
+"\n"
+"    @Asynchronous\n"
+"    public void processRecurringPayment(Payment payment, @Expiration Date "
+"date, \n"
+"      @IntervalDuration Long interval)&#39;\n"
+"}"
+msgstr ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public void processScheduledPayment(Payment payment, @Expiration Date "
+"date);\n"
+"\n"
+"    @Asynchronous\n"
+"    public void processRecurringPayment(Payment payment, @Expiration Date "
+"date, \n"
+"      @IntervalDuration Long interval)&#39;\n"
+"}"
+
+#. Tag: programlisting
+#: Jms.xml:50
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String schedulePayment()\n"
+"    {\n"
+"        paymentHandler.processScheduledPayment( new Payment(bill), bill."
+"getDueDate() );\n"
+"        return \"success\";\n"
+"    }\n"
+"\n"
+"    public String scheduleRecurringPayment()\n"
+"    {\n"
+"        paymentHandler.processRecurringPayment( new Payment(bill), bill."
+"getDueDate(), ONE_MONTH );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String schedulePayment()\n"
+"    {\n"
+"        paymentHandler.processScheduledPayment( new Payment(bill), bill."
+"getDueDate() );\n"
+"        return \"success\";\n"
+"    }\n"
+"\n"
+"    public String scheduleRecurringPayment()\n"
+"    {\n"
+"        paymentHandler.processRecurringPayment( new Payment(bill), bill."
+"getDueDate(), ONE_MONTH );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Jms.xml:51
+#, no-c-format
+msgid ""
+"Both client and server may access the <literal>Timer</literal> object "
+"associated with the invocation."
+msgstr ""
+"客户机和服务器都可以访问和这个调用相关联的 <literal>Timer</literal> 对象。"
+
+#. Tag: programlisting
+#: Jms.xml:54
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public Timer processScheduledPayment(Payment payment, @Expiration Date "
+"date);\n"
+"}"
+msgstr ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public Timer processScheduledPayment(Payment payment, @Expiration Date "
+"date);\n"
+"}"
+
+#. Tag: programlisting
+#: Jms.xml:55
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"paymentHandler\")\n"
+"public class PaymentHandlerBean implements PaymentHandler\n"
+"{\n"
+"    @In Timer timer;\n"
+"    \n"
+"    public Timer processScheduledPayment(Payment payment, @Expiration Date "
+"date)\n"
+"    {\n"
+"        //do some work!\n"
+"        \n"
+"        return timer; //note that return value is completely ignored\n"
+"    }\n"
+"\n"
+"}"
+msgstr ""
+"@Stateless\n"
+"@Name(\"paymentHandler\")\n"
+"public class PaymentHandlerBean implements PaymentHandler\n"
+"{\n"
+"    @In Timer timer;\n"
+"    \n"
+"    public Timer processScheduledPayment(Payment payment, @Expiration Date "
+"date)\n"
+"    {\n"
+"        //do some work!\n"
+"        \n"
+"        return timer; //note that return value is completely ignored\n"
+"    }\n"
+"\n"
+"}"
+
+#. Tag: programlisting
+#: Jms.xml:56
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String schedulePayment()\n"
+"    {\n"
+"        Timer timer = paymentHandler.processScheduledPayment( new Payment"
+"(bill), bill.getDueDate() );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String schedulePayment()\n"
+"    {\n"
+"        Timer timer = paymentHandler.processScheduledPayment( new Payment"
+"(bill), bill.getDueDate() );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Jms.xml:57
+#, no-c-format
+msgid "Asynchronous methods cannot return any other value to the caller."
+msgstr "异步方法不能够返回任何其他的值给调用者。"
+
+#. Tag: title
+#: Jms.xml:60
+#, no-c-format
+msgid "Asynchronous events"
+msgstr "异步事件"
+
+#. Tag: para
+#: Jms.xml:61
+#, no-c-format
+msgid ""
+"Component-driven events may also be asynchronous. To raise an event for "
+"asynchronous processing, simply call the <literal>raiseAsynchronousEvent()</"
+"literal> methods of the <literal>Events</literal> class. To schedule a timed "
+"event, call one of the <literal>raiseTimedEvent()</literal> methods. "
+"Components may observe asynchronous events in the usual way, but remember "
+"that only the business process context is propagated to the asynchronous "
+"thread."
+msgstr ""
+"组件驱动的事件也可能是异步的。要为异步处理触发一个事件,只要简单地调用 "
+"<literal>Events</literal> 类的 <literal>raiseAsynchronousEvent()</literal> 方"
+"法就可以了。要预定一个事件,可以调用 <literal>raiseTimedEvent()</literal> 方"
+"法。组件可以象往常一样观察异步事件,但请记住只有商业过程上下文才会传递给异步"
+"线程。"
+
+#. Tag: title
+#: Jms.xml:64
+#, no-c-format
+msgid "Messaging in Seam"
+msgstr "Seam 里的消息"
+
+#. Tag: para
+#: Jms.xml:65
+#, no-c-format
+msgid ""
+"Seam makes it easy to send and receive JMS messages to and from Seam "
+"components."
+msgstr "Seam 使向组件发送和接受 JMS 消息变得更加容易。"
+
+#. Tag: title
+#: Jms.xml:68
+#, no-c-format
+msgid "Configuration"
+msgstr "配置"
+
+#. Tag: para
+#: Jms.xml:69
+#, no-c-format
+msgid ""
+"To configure Seam&#39;s infrastructure for sending JMS messages, you need to "
+"tell Seam about any topics and queues you want to send messages to, and also "
+"tell Seam where to find the <literal>QueueConnectionFactory</literal> and/or "
+"<literal>TopicConnectionFactory</literal>."
+msgstr ""
+"要为发送 JMS 消息配置 Seam 的基础结构,你需要告诉 Seam 你要发送消息到哪个主题"
+"(Topic)和队列(Queue),并告诉 Seam 去哪找到 "
+"<literal>QueueConnectionFactory</literal> 和/或 "
+"<literal>TopicConnectionFactory</literal>。"
+
+#. Tag: para
+#: Jms.xml:72
+#, no-c-format
+msgid ""
+"Seam defaults to using <literal>UIL2ConnectionFactory</literal> which is the "
+"usual connection factory for use with JBossMQ. If you are using some other "
+"JMS provider, you need to set one or both of <literal>queueConnection."
+"queueConnectionFactoryJndiName</literal> and <literal>topicConnection."
+"topicConnectionFactoryJndiName</literal> in <literal>seam.properties</"
+"literal>, <literal>web.xml</literal> or <literal>components.xml</literal>."
+msgstr ""
+"Seam 缺省把和 JBossMQ 一起使用的 <literal>UIL2ConnectionFactory</literal> 作"
+"为连接工厂。如果你正在使用其他的 JMS 提供者,你需要设置 <literal>seam."
+"properties</literal>、<literal>web.xml</literal> 或 <literal>components.xml</"
+"literal> 里的 <literal>queueConnection.queueConnectionFactoryJndiName</"
+"literal> 和/或 <literal>topicConnection.topicConnectionFactoryJndiName</"
+"literal>。"
+
+#. Tag: para
+#: Jms.xml:75
+#, no-c-format
+msgid ""
+"You also need to list topics and queues in <literal>components.xml</literal> "
+"to install Seam managed <literal>TopicPublisher</literal>s and "
+"<literal>QueueSender</literal>s:"
+msgstr ""
+"你也需要在 <literal>components.xml</literal> 里列出主题和队列来安装 Seam 管理"
+"的 <literal>TopicPublisher</literal> 和 <literal>QueueSender</literal>:"
+
+#. Tag: programlisting
+#: Jms.xml:78
+#, fuzzy, no-c-format
+msgid ""
+"&lt;jms:managed-topic-publisher name=\"stockTickerPublisher\" \n"
+"                   auto-create=\"true  topic-jndi-name=\"topic/"
+"stockTickerTopic\"/&gt;\n"
+"\n"
+"&lt;jms:managed-queue-sender name=\"paymentQueueSender\" auto-create=\"true"
+"\" \n"
+"    queue-jndi-name=\"queue/paymentQueue\"/&gt;"
+msgstr ""
+"&lt;jms:managed-topic-publisher name=\"stockTickerPublisher\" auto-create="
+"\"true  topic-jndi-name=\"topic/stockTickerTopic\"/&gt;\n"
+"\n"
+"&lt;jms:managed-queue-sender name=\"paymentQueueSender\" auto-create=\"true"
+"\" \n"
+"    queue-jndi-name=\"queue/paymentQueue\"/&gt;"
+
+#. Tag: title
+#: Jms.xml:81
+#, no-c-format
+msgid "Using JBoss Messaging"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:82
+#, no-c-format
+msgid ""
+"For using JBoss Messaging which comes with JBoss Enterprise Application "
+"Platform 4.3, you should first set the value of the properties "
+"'<literal>queueConnection.queueConnectionFactoryJndiName</literal>' and "
+"'<literal>topicConnection.topicConnectionFactoryJndiName</literal>' to "
+"'<literal>ConnectionFactory</literal>' which is the default connection "
+"factory for JBoss Messaging. Then set the value of the "
+"'<literal>connectionProvider</literal>' property to '<literal>org.jboss.seam."
+"remoting.messaging.JBossMessagingConnectionProvider</literal>' on the class "
+"component '<literal>org.jboss.seam.remoting.messaging.SubscriptionRegistry</"
+"literal>', which creates topic connections for jboss messaging. "
+"<programlisting>\n"
+"&lt;component name=\"org.jboss.seam.jms.topicConnection\"&gt;\n"
+"        &lt;property name=\"topicConnectionFactoryJndiName\"&gt;\n"
+"        ConnectionFactory\n"
+"        &lt;/property&gt;\n"
+"&lt;/component&gt;\n"
+"&lt;component class=\"org.jboss.seam.remoting.messaging.SubscriptionRegistry"
+"\" installed=\"true\"&gt;\n"
+"        &lt;property name=\"allowedTopics\"&gt;\n"
+"        chatroomTopic\n"
+"        &lt;/property&gt;\n"
+"        &lt;property name=\"connectionProvider\"&gt;\n"
+"        org.jboss.seam.remoting.messaging.JBossMessagingConnectionProvider\n"
+"        &lt;/property&gt;\n"
+"&lt;/component&gt;\n"
+"</programlisting> You also need to update the topics to use JBoss Messaging "
+"as shown in the code fragment below."
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:86
+#, no-c-format
+msgid ""
+"&lt;server&gt;\n"
+"        &lt;mbean code=\"org.jboss.jms.server.destination.TopicService\"\n"
+"               name=\"jboss.messaging.destination:service=Topic,"
+"name=chatroomTopic\"\n"
+"                                            xmbean-dd=\"xmdesc/Topic-xmbean."
+"xml\"&gt;\n"
+"                &lt;depends optional-attribute-name=\"ServerPeer\"&gt;\n"
+"                jboss.messaging:service=ServerPeer\n"
+"                &lt;/depends&gt;\n"
+"                &lt;depends&gt;\n"
+"                jboss.messaging:service=PostOffice\n"
+"                &lt;/depends&gt;\n"
+"                &lt;attribute name=\"SecurityConfig\"&gt;\n"
+"                        &lt;security&gt;\n"
+"                          &lt;role name=\"guest\" read=\"true\" write=\"true"
+"\"/&gt;\n"
+"                          &lt;role name=\"publisher\" read=\"true\" write="
+"\"true\" create=\"false\"/&gt;\n"
+"                          &lt;role name=\"durpublisher\" read=\"true\" write="
+"\"true\" create=\"true\"/&gt;\n"
+"                        &lt;/security&gt;\n"
+"                &lt;/attribute&gt;\n"
+"        &lt;/mbean&gt;\n"
+"&lt;/server&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:90
+#, no-c-format
+msgid "Sending messages"
+msgstr "发送消息"
+
+#. Tag: para
+#: Jms.xml:91
+#, no-c-format
+msgid ""
+"Now, you can inject a JMS <literal>TopicPublisher</literal> and "
+"<literal>TopicSession</literal> into any component:"
+msgstr ""
+"现在,你可以在任何组件里注入 JMS <literal>TopicPublisher</literal> 和 "
+"<literal>TopicSession</literal>。"
+
+#. Tag: programlisting
+#: Jms.xml:94
+#, no-c-format
+msgid ""
+"@In \n"
+"private TopicPublisher stockTickerPublisher;   \n"
+"@In \n"
+"private TopicSession topicSession;\n"
+"\n"
+"public void publish(StockPrice price) {\n"
+"      try\n"
+"      {\n"
+"         topicPublisher.publish( topicSession.createObjectMessage(price) );\n"
+"      } \n"
+"      catch (Exception ex)\n"
+"      {\n"
+"         throw new RuntimeException(ex);\n"
+"      } \n"
+"}"
+msgstr ""
+"@In \n"
+"private TopicPublisher stockTickerPublisher;   \n"
+"@In \n"
+"private TopicSession topicSession;\n"
+"\n"
+"public void publish(StockPrice price) {\n"
+"      try\n"
+"      {\n"
+"         topicPublisher.publish( topicSession.createObjectMessage(price) );\n"
+"      } \n"
+"      catch (Exception ex)\n"
+"      {\n"
+"         throw new RuntimeException(ex);\n"
+"      } \n"
+"}"
+
+#. Tag: para
+#: Jms.xml:95
+#, no-c-format
+msgid "Or, for working with a queue:"
+msgstr "或者,使用队列:"
+
+#. Tag: programlisting
+#: Jms.xml:98
+#, no-c-format
+msgid ""
+"@In\n"
+"private QueueSender paymentQueueSender;   \n"
+"@In\n"
+"private QueueSession queueSession;\n"
+"\n"
+"public void publish(Payment payment) {\n"
+"      try\n"
+"      {\n"
+"         paymentQueueSender.send( queueSession.createObjectMessage"
+"(payment) );\n"
+"      } \n"
+"      catch (Exception ex)\n"
+"      {\n"
+"         throw new RuntimeException(ex);\n"
+"      } \n"
+"}"
+msgstr ""
+"@In\n"
+"private QueueSender paymentQueueSender;   \n"
+"@In\n"
+"private QueueSession queueSession;\n"
+"\n"
+"public void publish(Payment payment) {\n"
+"      try\n"
+"      {\n"
+"         paymentQueueSender.send( queueSession.createObjectMessage"
+"(payment) );\n"
+"      } \n"
+"      catch (Exception ex)\n"
+"      {\n"
+"         throw new RuntimeException(ex);\n"
+"      } \n"
+"}"
+
+#. Tag: title
+#: Jms.xml:99
+#, no-c-format
+msgid "Receiving messages using a message-driven bean"
+msgstr "使用消息驱动 Bean 来接收消息"
+
+#. Tag: para
+#: Jms.xml:100
+#, no-c-format
+msgid ""
+"You can process messages using any EJB3 message driven bean. Message-driven "
+"beans may even be Seam components, in which case it is possible to inject "
+"other event and application scoped Seam components."
+msgstr ""
+"你可以使用任何 EJB3 消息驱动 bean 来处理消息。消息驱动 bean 甚至可以是 Seam "
+"组件,此时你可以注入其他作用域为 event 或 application 的 Seam 组件。"
+
+#. Tag: title
+#: Jms.xml:103
+#, no-c-format
+msgid "Receiving messages in the client"
+msgstr "从客户机接收消息"
+
+#. Tag: para
+#: Jms.xml:104
+#, no-c-format
+msgid ""
+"Seam Remoting lets you subscribe to a JMS topic from client-side JavaScript. "
+"This is described in the next chapter."
+msgstr ""
+"Seam Remoting 可以从客户端的 JavaScript 订阅至某个 JMS 主题。这将在下一章进行"
+"详述。"

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Mail.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Mail.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Mail.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1277 @@
+# translation of Mail.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Xi HUANG <xhuang at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Mail\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2007-10-11 22:03+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Mail.xml:6
+#, no-c-format
+msgid "Email"
+msgstr "电子邮件"
+
+#. Tag: para
+#: Mail.xml:7
+#, no-c-format
+msgid ""
+"Seam now includes an optional components for templating and sending emails."
+msgstr "Seam 现在包括了用于邮件模板和发送的可选组件。"
+
+#. Tag: para
+#: Mail.xml:10
+#, no-c-format
+msgid ""
+"Email support is provided by <literal>jboss-seam-mail.jar</literal>. This "
+"JAR contains the mail JSF controls, which are used to construct emails, and "
+"the <literal>mailSession</literal> manager component."
+msgstr ""
+"<literal>jboss-seam-mail.jar</literal> 提供了电子邮件支持。它包含了用于构建邮"
+"件的 JSF 控件、以及 <literal>mailSession</literal> 管理者组件。"
+
+#. Tag: para
+#: Mail.xml:13
+#, no-c-format
+msgid ""
+"The examples/mail project contains an example of the email support in "
+"action. It demonstrates proper packaging, and it contains a number of "
+"example that demonstrate the key features currently supported."
+msgstr ""
+"examples/mail 项目包含一个邮件支持的例子。它演示了怎样正确地打包、以及目前所"
+"支持的关键特征。"
+
+#. Tag: title
+#: Mail.xml:17
+#, no-c-format
+msgid "Creating a message"
+msgstr "创建一条消息"
+
+#. Tag: para
+#: Mail.xml:18
+#, no-c-format
+msgid ""
+"You don&#39;t need to learn a whole new templating language to use Seam "
+"Mail&mdash;an email is just facelet!"
+msgstr ""
+"你不需要学习一种新的模板语言来使用 Seam Mail&mdash;邮件只是一个 facelet 而"
+"已!"
+
+#. Tag: programlisting
+#: Mail.xml:21
+#, no-c-format
+msgid ""
+"&lt;m:message xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"    xmlns:m=\"http://jboss.com/products/seam/mail\"\n"
+"    xmlns:h=\"http://java.sun.com/jsf/html\"&gt;\n"
+"  \n"
+"    &lt;m:from name=\"Peter\" address=\"peter at example.com\" /&gt;\n"
+"    &lt;m:to name=\"#{person.firstname} #{person.lastname}\"&gt;#{person."
+"address}&lt;/m:to&gt;\n"
+"    &lt;m:subject&gt;Try out Seam!&lt;/m:subject&gt;\n"
+"    \n"
+"    &lt;m:body&gt;\n"
+"        &lt;p&gt;&lt;h:outputText value=\"Dear #{person.firstname}\" /&gt;,"
+"&lt;/p&gt;\n"
+"        &lt;p&gt;You can try out Seam by visiting \n"
+"        &lt;a href=\"http://labs.jboss.com/jbossseam\"&gt;http://labs.jboss."
+"com/jbossseam&lt;/a&gt;.&lt;/p&gt;\n"
+"        &lt;p&gt;Regards,&lt;/p&gt;\n"
+"        &lt;p&gt;Peter&lt;/p&gt;\n"
+"    &lt;/m:body&gt;\n"
+"    \n"
+"&lt;/m:message&gt;"
+msgstr ""
+"&lt;m:message xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"    xmlns:m=\"http://jboss.com/products/seam/mail\"\n"
+"    xmlns:h=\"http://java.sun.com/jsf/html\"&gt;\n"
+"  \n"
+"    &lt;m:from name=\"Peter\" address=\"peter at example.com\" /&gt;\n"
+"    &lt;m:to name=\"#{person.firstname} #{person.lastname}\"&gt;#{person."
+"address}&lt;/m:to&gt;\n"
+"    &lt;m:subject&gt;Try out Seam!&lt;/m:subject&gt;\n"
+"    \n"
+"    &lt;m:body&gt;\n"
+"        &lt;p&gt;&lt;h:outputText value=\"Dear #{person.firstname}\" /&gt;,"
+"&lt;/p&gt;\n"
+"        &lt;p&gt;You can try out Seam by visiting \n"
+"        &lt;a href=\"http://labs.jboss.com/jbossseam\"&gt;http://labs.jboss."
+"com/jbossseam&lt;/a&gt;.&lt;/p&gt;\n"
+"        &lt;p&gt;Regards,&lt;/p&gt;\n"
+"        &lt;p&gt;Peter&lt;/p&gt;\n"
+"    &lt;/m:body&gt;\n"
+"    \n"
+"&lt;/m:message&gt;"
+
+#. Tag: para
+#: Mail.xml:22
+#, no-c-format
+msgid ""
+"The <literal>&lt;m:message&gt;</literal> tag wraps the whole message, and "
+"tells Seam to start rendering an email. Inside the <literal>&lt;m:message&gt;"
+"</literal> tag we use an <literal>&lt;m:from&gt;</literal> tag to set who "
+"the message is from, a <literal>&lt;m:to&gt;</literal> tag to specify a "
+"sender (notice how we use EL as we would in a normal facelet), and a "
+"<literal>&lt;m:subject&gt;</literal> tag."
+msgstr ""
+"<literal>&lt;m:message&gt;</literal> 标签封装了整个消息,它告诉 Seam 开始显示"
+"一个邮件。在<literal>&lt;m:message&gt;</literal> 标签里,我们使用一个 "
+"<literal>&lt;m:from&gt;</literal> 标签来设置消息的来源、<literal>&lt;m:to&gt;"
+"</literal> 标签来指定寄件人(注意,和在普通的 facelet 里一样我们也使用 EL)、"
+"以及一个 <literal>&lt;m:subject&gt;</literal> 标签来指定标题。"
+
+#. Tag: para
+#: Mail.xml:25
+#, no-c-format
+msgid ""
+"The <literal>&lt;m:body&gt;</literal> tag wraps the body of the email. You "
+"can use regular HTML tags inside the body as well as JSF components."
+msgstr ""
+"<literal>&lt;m:body&gt;</literal> 标签封装了邮件体。在邮件体里,你可以使用常"
+"规的 HTML 标签和 JSF 组件。"
+
+#. Tag: para
+#: Mail.xml:28
+#, no-c-format
+msgid ""
+"So, now you have your email template, how do you go about sending it? Well, "
+"at the end of rendering the <literal>m:message</literal> the "
+"<literal>mailSession</literal> is called to send the email, so all you have "
+"to do is ask Seam to render the view:"
+msgstr ""
+"现在,你已经有了邮件模板,那怎么发送呢?在 <literal>m:message</literal> 的最"
+"后,我们调用 <literal>mailSession</literal> 来发送邮件,所以你要做的就是让 "
+"Seam 显示这个视图:"
+
+#. Tag: programlisting
+#: Mail.xml:31
+#, no-c-format
+msgid ""
+"@In(create=true)\n"
+"private Renderer renderer;\n"
+"   \n"
+"public void send() {\n"
+"    try {\n"
+"       renderer.render(\"/simple.xhtml\");\n"
+"       facesMessages.add(\"Email sent successfully\");\n"
+"   } \n"
+"   catch (Exception e) {\n"
+"       facesMessages.add(\"Email sending failed: \" + e.getMessage());\n"
+"   }\n"
+"}"
+msgstr ""
+"@In(create=true)\n"
+"private Renderer renderer;\n"
+"   \n"
+"public void send() {\n"
+"    try {\n"
+"       renderer.render(\"/simple.xhtml\");\n"
+"       facesMessages.add(\"Email sent successfully\");\n"
+"   } \n"
+"   catch (Exception e) {\n"
+"       facesMessages.add(\"Email sending failed: \" + e.getMessage());\n"
+"   }\n"
+"}"
+
+#. Tag: para
+#: Mail.xml:32
+#, no-c-format
+msgid ""
+"If, for example, you entered an invalid email address, then an exception "
+"would be thrown, which is caught and then displayed to the user."
+msgstr "如果你输入了一个无效的邮件地址,异常将被抛出且被捕获并显示给用户。"
+
+#. Tag: title
+#: Mail.xml:36
+#, no-c-format
+msgid "Attachments"
+msgstr "附件"
+
+#. Tag: para
+#: Mail.xml:37
+#, no-c-format
+msgid ""
+"Seam makes it easy to attach files to an email. It supports most of the "
+"standard java types used when working with files."
+msgstr ""
+"Seam 使在邮件里附加文件变得容易。它支持和文件相关的大多数的标准 java 类型。"
+
+#. Tag: para
+#: Mail.xml:40
+#, no-c-format
+msgid "If you wanted to email the <literal>jboss-seam-mail.jar</literal>:"
+msgstr "如果你要寄送 <literal>jboss-seam-mail.jar</literal> 文件:"
+
+#. Tag: programlisting
+#: Mail.xml:43
+#, no-c-format
+msgid "&lt;m:attachment value=\"/WEB-INF/lib/jboss-seam-mail.jar\"/&gt;"
+msgstr "&lt;m:attachment value=\"/WEB-INF/lib/jboss-seam-mail.jar\"/&gt;"
+
+#. Tag: para
+#: Mail.xml:44
+#, no-c-format
+msgid ""
+"Seam will load the file from the classpath, and attach it to the email. By "
+"default it would be attached as <literal>jboss-seam-mail.jar</literal>; if "
+"you wanted it to have another name you would just add the <literal>fileName</"
+"literal> attribute:"
+msgstr ""
+"Seam 将从 classpath 载入这个文件并附加到邮件里。在缺省情况下,这个文件将被附"
+"加为 <literal>jboss-seam-mail.jar</literal>。如果要使用其他名字,你可以加入"
+"<literal>fileName</literal> 属性:"
+
+#. Tag: programlisting
+#: Mail.xml:47
+#, no-c-format
+msgid ""
+"&lt;m:attachment value=\"/WEB-INF/lib/jboss-seam-mail.jar\" fileName=\"this-"
+"is-so-cool.jar\"/&gt;"
+msgstr ""
+"&lt;m:attachment value=\"/WEB-INF/lib/jboss-seam-mail.jar\" fileName=\"this-"
+"is-so-cool.jar\"/&gt;"
+
+#. Tag: para
+#: Mail.xml:48
+#, no-c-format
+msgid ""
+"You could also attach a <literal>java.io.File</literal>, a <literal>java.net."
+"URL</literal>:"
+msgstr ""
+"你也可以附加 <literal>java.io.File</literal>、<literal>java.net.URL</"
+"literal>:"
+
+#. Tag: programlisting
+#: Mail.xml:51
+#, no-c-format
+msgid "&lt;m:attachment value=\"#{numbers}\"/&gt;"
+msgstr "&lt;m:attachment value=\"#{numbers}\"/&gt;"
+
+#. Tag: para
+#: Mail.xml:52
+#, no-c-format
+msgid ""
+"Or a <literal>byte[]</literal> or a <literal>java.io.InputStream</literal>:"
+msgstr "或 <literal>byte[]</literal>、<literal>java.io.InputStream</literal>:"
+
+#. Tag: programlisting
+#: Mail.xml:55
+#, no-c-format
+msgid ""
+"&lt;m:attachment value=\"#{person.photo}\" contentType=\"image/png\"/&gt;"
+msgstr ""
+"&lt;m:attachment value=\"#{person.photo}\" contentType=\"image/png\"/&gt;"
+
+#. Tag: para
+#: Mail.xml:56
+#, no-c-format
+msgid ""
+"You&#39;ll notice that for a <literal>byte[]</literal> and a <literal>java."
+"io.InputStream</literal> you need to specify the MIME type of the attachment "
+"(as that information is not carried as part of the file)."
+msgstr ""
+"你将注意到对于 <literal>byte[]</literal> 和 <literal>java.io.InputStream</"
+"literal> 而言,你需要指定附件的 MIME 类型(因为这个信息并非文件的一部分)。"
+
+#. Tag: para
+#: Mail.xml:59
+#, no-c-format
+msgid ""
+"And it gets even better, you can attach a Seam generated PDF, or any "
+"standard JSF view, just by wrapping a <literal>&lt;m:attachment&gt;</"
+"literal> around the normal tags you would use:"
+msgstr ""
+"更妙的是,你可以附加 Seam 所生成的 PDF 文件,或者任何标准 JSF 视图。你只需要"
+"封装普通的标签周围的 <literal>&lt;m:attachment&gt;</literal> 就可以了:"
+
+#. Tag: programlisting
+#: Mail.xml:62
+#, no-c-format
+msgid ""
+"&lt;m:attachment fileName=\"tiny.pdf\"&gt;\n"
+"    &lt;p:"
+"document&gt;                                                      \n"
+"        A very tiny "
+"PDF                                                                                                \n"
+"    &lt;/p:document&gt;\n"
+"&lt;/m:attachment&gt;"
+msgstr ""
+"&lt;m:attachment fileName=\"tiny.pdf\"&gt;\n"
+"    &lt;p:"
+"document&gt;                                                      \n"
+"        A very tiny "
+"PDF                                                                                                \n"
+"    &lt;/p:document&gt;\n"
+"&lt;/m:attachment&gt;"
+
+#. Tag: para
+#: Mail.xml:63
+#, no-c-format
+msgid ""
+"If you had a set of files you wanted to attach (for example a set of "
+"pictures loaded from a database) you can just use a <literal>&lt;ui:"
+"repeat&gt;</literal>:"
+msgstr ""
+"如果你要附加多个文件(如从数据库里加载一系列图片),你可以使用 <literal>&lt;"
+"ui:repeat&gt;</literal>:"
+
+#. Tag: programlisting
+#: Mail.xml:66
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{people}\" var=\"person\"&gt;\n"
+"    &lt;m:attachment value=\"#{person.photo}\" contentType=\"image/jpeg\"\n"
+"    fileName=\"#{person.firstname}_#{person.lastname}.jpg\"/&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+"&lt;ui:repeat value=\"#{people}\" var=\"person\"&gt;\n"
+"    &lt;m:attachment value=\"#{person.photo}\" contentType=\"image/jpeg\"\n"
+"    fileName=\"#{person.firstname}_#{person.lastname}.jpg\"/&gt;\n"
+"&lt;/ui:repeat&gt;"
+
+#. Tag: title
+#: Mail.xml:70
+#, no-c-format
+msgid "HTML/Text alternative part"
+msgstr "HTML/Text 替换部分"
+
+#. Tag: para
+#: Mail.xml:71
+#, no-c-format
+msgid ""
+"Whilst most mail readers nowadays support HTML, some don&#39;t, so you can "
+"add a plain text alternative to your email body:"
+msgstr ""
+"虽然目前大多数邮件阅读器都支持 HTML,但也有一些不支持,所以你可以在邮件体里加"
+"入普通文本替换:"
+
+#. Tag: programlisting
+#: Mail.xml:74
+#, no-c-format
+msgid ""
+"&lt;m:body&gt;\n"
+"    &lt;f:facet name=\"alternative\"&gt;Sorry, your email reader can&#39;t "
+"show our fancy email, \n"
+"please go to http://labs.jboss.com/jbossseam to explore Seam.&lt;/f:"
+"facet&gt;\n"
+"&lt;/m:body&gt;"
+msgstr ""
+"&lt;m:body&gt;\n"
+"    &lt;f:facet name=\"alternative\"&gt;Sorry, your email reader can&#39;t "
+"show our fancy email, \n"
+"please go to http://labs.jboss.com/jbossseam to explore Seam.&lt;/f:"
+"facet&gt;\n"
+"&lt;/m:body&gt;"
+
+#. Tag: title
+#: Mail.xml:78
+#, no-c-format
+msgid "Multiple recipients"
+msgstr "多个收件人"
+
+#. Tag: para
+#: Mail.xml:79
+#, no-c-format
+msgid ""
+"Often you&#39;ll want to send an email to a group of recipients (for example "
+"your users). All of the recipient mail tags can be placed inside a "
+"<literal>&lt;ui:repeat&gt;</literal>:"
+msgstr ""
+"通常你将需要把邮件发送给多个收件人(如你的用户)。所有的收件人邮件标签都可以"
+"放入 <literal>&lt;ui:repeat&gt;</literal> 里:"
+
+#. Tag: programlisting
+#: Mail.xml:82
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{allUsers} var=\"user\"&gt;\n"
+"    &lt;m:to name=\"#{user.firstname} #{user.lastname}\" address=\"#{user."
+"emailAddress}\" /&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+"&lt;ui:repeat value=\"#{allUsers} var=\"user\"&gt;\n"
+"    &lt;m:to name=\"#{user.firstname} #{user.lastname}\" address=\"#{user."
+"emailAddress}\" /&gt;\n"
+"&lt;/ui:repeat&gt;"
+
+#. Tag: title
+#: Mail.xml:86
+#, no-c-format
+msgid "Multiple messages"
+msgstr "多条消息"
+
+#. Tag: para
+#: Mail.xml:87
+#, no-c-format
+msgid ""
+"Sometimes, however, you need to send a slightly different message to each "
+"recipient (e.g. a password reset). The best way to do this is to place the "
+"whole message inside a <literal>&lt;ui:repeat&gt;</literal>:"
+msgstr ""
+"有时候,你需要给不同的收件人发送有稍许不同的消息(如:密码重设)。最好的办法"
+"是把整个消息放入 <literal>&lt;ui:repeat&gt;</literal> 标签:"
+
+#. Tag: programlisting
+#: Mail.xml:90
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{people}\" var=\"p\"&gt;\n"
+"    &lt;m:message&gt;\n"
+"        &lt;m:from name=\"#{person.firstname} #{person.lastname}\"&gt;#"
+"{person.address}&lt;/m:from&gt;\n"
+"        &lt;m:to name=\"#{p.firstname}\"&gt;#{p.address}&lt;/m:to&gt;\n"
+"            ...\n"
+"    &lt;/m:message&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+"&lt;ui:repeat value=\"#{people}\" var=\"p\"&gt;\n"
+"    &lt;m:message&gt;\n"
+"        &lt;m:from name=\"#{person.firstname} #{person.lastname}\"&gt;#"
+"{person.address}&lt;/m:from&gt;\n"
+"        &lt;m:to name=\"#{p.firstname}\"&gt;#{p.address}&lt;/m:to&gt;\n"
+"            ...\n"
+"    &lt;/m:message&gt;\n"
+"&lt;/ui:repeat&gt;"
+
+#. Tag: title
+#: Mail.xml:94
+#, no-c-format
+msgid "Templating"
+msgstr "模板"
+
+#. Tag: para
+#: Mail.xml:95
+#, no-c-format
+msgid ""
+"The mail templating example shows that facelets templating Just Works with "
+"the Seam mail tags."
+msgstr "邮件模板示例显示了和 Seam 邮件标签一起使用的 facelet 模板:"
+
+#. Tag: para
+#: Mail.xml:98
+#, no-c-format
+msgid "Our <literal>template.xhtml</literal> contains:"
+msgstr "我们的 <literal>template.xhtml</literal> 包含:"
+
+#. Tag: programlisting
+#: Mail.xml:101
+#, no-c-format
+msgid ""
+"&lt;m:message&gt;\n"
+"   &lt;m:from name=\"Seam\" address=\"do-not-reply at jboss.com\" /&gt;\n"
+"   &lt;m:to name=\"#{person.firstname} #{person.lastname}\"&gt;#{person."
+"address}&lt;/m:to&gt;\n"
+"   &lt;m:subject&gt;#{subject}&lt;/m:subject&gt;\n"
+"   &lt;m:body&gt;\n"
+"       &lt;html&gt;\n"
+"           &lt;body&gt;\n"
+"               &lt;ui:insert name=\"body\"&gt;This is the default body, "
+"specified by the template.\n"
+"                                   &lt;/ui:insert&gt;\n"
+"           &lt;/body&gt;\n"
+"       &lt;/html&gt;\n"
+"   &lt;/m:body&gt;\n"
+"&lt;/m:message&gt;"
+msgstr ""
+"&lt;m:message&gt;\n"
+"   &lt;m:from name=\"Seam\" address=\"do-not-reply at jboss.com\" /&gt;\n"
+"   &lt;m:to name=\"#{person.firstname} #{person.lastname}\"&gt;#{person."
+"address}&lt;/m:to&gt;\n"
+"   &lt;m:subject&gt;#{subject}&lt;/m:subject&gt;\n"
+"   &lt;m:body&gt;\n"
+"       &lt;html&gt;\n"
+"           &lt;body&gt;\n"
+"               &lt;ui:insert name=\"body\"&gt;This is the default body, "
+"specified by the template.\n"
+"                                   &lt;/ui:insert&gt;\n"
+"           &lt;/body&gt;\n"
+"       &lt;/html&gt;\n"
+"   &lt;/m:body&gt;\n"
+"&lt;/m:message&gt;"
+
+#. Tag: para
+#: Mail.xml:102
+#, no-c-format
+msgid "Our <literal>templating.xhtml</literal> contains:"
+msgstr "我们的 <literal>templating.xhtml</literal> 包含:"
+
+#. Tag: programlisting
+#: Mail.xml:105
+#, no-c-format
+msgid ""
+"&lt;ui:param name=\"subject\" value=\"Templating with Seam Mail\"/&gt;\n"
+"&lt;ui:define name=\"body\"&gt;\n"
+"    &lt;p&gt;This example demonstrates that you can easily use &lt;i&gt;"
+"facelets templating&lt;/i&gt; in email!&lt;/p&gt;\n"
+"&lt;/ui:define&gt;"
+msgstr ""
+"&lt;ui:param name=\"subject\" value=\"Templating with Seam Mail\"/&gt;\n"
+"&lt;ui:define name=\"body\"&gt;\n"
+"    &lt;p&gt;This example demonstrates that you can easily use &lt;i&gt;"
+"facelets templating&lt;/i&gt; in email!&lt;/p&gt;\n"
+"&lt;/ui:define&gt;"
+
+#. Tag: title
+#: Mail.xml:109
+#, no-c-format
+msgid "Internationalisation"
+msgstr "国际化"
+
+#. Tag: para
+#: Mail.xml:110
+#, no-c-format
+msgid ""
+"Seam supports sending internationalised messages. By default, the encoding "
+"provided by JSF is used, but this can be overridden on the template:"
+msgstr ""
+"Seam 支持国际化消息的发送。在缺省情况下将使用 JSF 提供的编码,但也可以在模板"
+"里进行覆盖:"
+
+#. Tag: programlisting
+#: Mail.xml:113
+#, no-c-format
+msgid ""
+"&lt;m:message charset=\"UTF-8\"&gt;\n"
+"   ...\n"
+"&lt;/m:message&gt;"
+msgstr ""
+"&lt;m:message charset=\"UTF-8\"&gt;\n"
+"   ...\n"
+"&lt;/m:message&gt;"
+
+#. Tag: para
+#: Mail.xml:114
+#, no-c-format
+msgid ""
+"The body, subject and recipient (and from) name will be encoded. You&#39;ll "
+"need to make sure facelets uses the correct charset for parsing your pages "
+"by setting encoding of the template:"
+msgstr ""
+"邮件体、标题和收件人(以及发件人)将被编码。你需要设置模板的编码来确保 "
+"facelets 使用正确的字符集对页面进行解析:"
+
+#. Tag: programlisting
+#: Mail.xml:117
+#, no-c-format
+msgid "&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;"
+msgstr "&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;"
+
+#. Tag: title
+#: Mail.xml:121
+#, no-c-format
+msgid "Other Headers"
+msgstr "其他头部信息"
+
+#. Tag: para
+#: Mail.xml:122
+#, no-c-format
+msgid ""
+"Sometimes you&#39;ll want to add other headers to your email. Seam provides "
+"support for some (see <xref linkend=\"Seam_Reference_Guide-Email-Tags\"/>). "
+"For example, we can set the importance of the email, and ask for a read "
+"receipt:"
+msgstr ""
+"有时候你需要在邮件里加入其他头部信息。Seam 提供对某些头部信息(参考 <xref "
+"linkend=\"Seam_Reference_Guide-Email-Tags\"/>)的支持。例如,我们可以设置邮件"
+"的重要程度,并要求阅读回执:"
+
+#. Tag: programlisting
+#: Mail.xml:125
+#, no-c-format
+msgid ""
+"&lt;m:message xmlns:m=\"http://jboss.com/products/seam/mail\"\n"
+"           importance=\"low\"\n"
+"           requestReadReceipt=\"true\"/&gt;"
+msgstr ""
+"&lt;m:message xmlns:m=\"http://jboss.com/products/seam/mail\"\n"
+"           importance=\"low\"\n"
+"           requestReadReceipt=\"true\"/&gt;"
+
+#. Tag: para
+#: Mail.xml:126
+#, no-c-format
+msgid ""
+"Otherise you can add any header to the message using the <literal>&lt;m:"
+"header&gt;</literal> tag:"
+msgstr "你也可以用 <literal>&lt;m:header&gt;</literal> 标签加入任何头部信息:"
+
+#. Tag: programlisting
+#: Mail.xml:129
+#, no-c-format
+msgid "&lt;m:header name=\"X-Sent-From\" value=\"JBoss Seam\"/&gt;"
+msgstr "&lt;m:header name=\"X-Sent-From\" value=\"JBoss Seam\"/&gt;"
+
+#. Tag: title
+#: Mail.xml:135
+#, no-c-format
+msgid "Receiving emails"
+msgstr "接收邮件"
+
+#. Tag: para
+#: Mail.xml:136
+#, no-c-format
+msgid ""
+"If you are using EJB then you can use a MDB (Message Driven Bean) to receive "
+"email. Seam comes with an improved version of <literal>mail-ra.rar</literal> "
+"as distributed in JBoss AS; until the improvements make there way into a "
+"released version of JBoss AS, replacing the default <literal>rar</literal> "
+"with the one distributed with Seam is recommended."
+msgstr ""
+"如果你在使用 EJB,你可以使用 MDB(消息驱动 Bean)来接收邮件。Seam 带有 JBoss "
+"AS 所分发的 <literal>mail-ra.rar</literal> 的改进版本:你需要用 Seam 推荐的版"
+"本替换缺省的 <literal>rar</literal> 文件。"
+
+#. Tag: para
+#: Mail.xml:139
+#, no-c-format
+msgid "You can configure it like this:"
+msgstr "你可以这样进行配置:"
+
+#. Tag: programlisting
+#: Mail.xml:142
+#, no-c-format
+msgid ""
+"@MessageDriven(activationConfig={\n"
+"         @ActivationConfigProperty(propertyName=\"mailServer\", "
+"propertyValue=\"localhost\"),\n"
+"         @ActivationConfigProperty(propertyName=\"mailFolder\", "
+"propertyValue=\"INBOX\"),\n"
+"         @ActivationConfigProperty(propertyName=\"storeProtocol\", "
+"propertyValue=\"pop3\"),\n"
+"         @ActivationConfigProperty(propertyName=\"userName\", propertyValue="
+"\"seam\"),\n"
+"         @ActivationConfigProperty(propertyName=\"password\", propertyValue="
+"\"seam\")\n"
+"})\n"
+"@ResourceAdapter(\"mail-ra.rar\")\n"
+"@Name(\"mailListener\")\n"
+"public class MailListenerMDB implements MailListener {\n"
+"\n"
+"   @In(create=true)\n"
+"   private OrderProcessor orderProcessor;\n"
+"\n"
+"   public void onMessage(Message message) {\n"
+"      // Process the message\n"
+"      orderProcessor.process(message.getSubject());\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+"@MessageDriven(activationConfig={\n"
+"         @ActivationConfigProperty(propertyName=\"mailServer\", "
+"propertyValue=\"localhost\"),\n"
+"         @ActivationConfigProperty(propertyName=\"mailFolder\", "
+"propertyValue=\"INBOX\"),\n"
+"         @ActivationConfigProperty(propertyName=\"storeProtocol\", "
+"propertyValue=\"pop3\"),\n"
+"         @ActivationConfigProperty(propertyName=\"userName\", propertyValue="
+"\"seam\"),\n"
+"         @ActivationConfigProperty(propertyName=\"password\", propertyValue="
+"\"seam\")\n"
+"})\n"
+"@ResourceAdapter(\"mail-ra.rar\")\n"
+"@Name(\"mailListener\")\n"
+"public class MailListenerMDB implements MailListener {\n"
+"\n"
+"   @In(create=true)\n"
+"   private OrderProcessor orderProcessor;\n"
+"\n"
+"   public void onMessage(Message message) {\n"
+"      // Process the message\n"
+"      orderProcessor.process(message.getSubject());\n"
+"   }\n"
+"   \n"
+"}"
+
+#. Tag: para
+#: Mail.xml:143
+#, no-c-format
+msgid ""
+"Each message received will cause <literal>onMessage(Message message)</"
+"literal> to be called. Most seam annotations will work inside a MDB but you "
+"musn&#39;t access the persistence context."
+msgstr ""
+"所接收的每条信息都将导致 <literal>onMessage(Message message)</literal> 被调"
+"用。大多数 Seam 注解将可以在 MDB 里使用,但你不能够访问持久性上下文。"
+
+#. Tag: para
+#: Mail.xml:146
+#, no-c-format
+msgid ""
+"You can find more information on the default <literal>mail-ra.rar</literal> "
+"at <ulink url=\"http://wiki.jboss.org/wiki/Wiki.jsp?page=InboundJavaMail"
+"\">http://wiki.jboss.org/wiki/Wiki.jsp?page=InboundJavaMail</ulink>. The "
+"version distributed with Seam also includes a <literal>debug</literal> "
+"property to enable JavaMail debugging, a <literal>flush</literal> property "
+"(by default true) to disable flushing a <literal>POP3</literal> mailbox "
+"after successfullying delivering a message to your MDB and a <literal>port</"
+"literal> property to override the default TCP port. Beware that the api for "
+"this may be altered as changes make there way into JBoss AS."
+msgstr ""
+"你可以在 <ulink url=\"http://wiki.jboss.org/wiki/Wiki.jsp?"
+"page=InboundJavaMail\">http://wiki.jboss.org/wiki/Wiki.jsp?"
+"page=InboundJavaMail</ulink> 里找到缺省的 <literal>mail-ra.rar</literal> 的更"
+"多信息。Seam 所带的版本也包括了启用 JavaMail 调试的 <literal>debug</literal> "
+"属性、在成功发送消息至 MDB 后禁止刷新 <literal>POP3</literal> 邮箱的 "
+"<literal>flush</literal> 属性(缺省为 true)、覆盖缺省的 TCP 端口的 "
+"<literal>port</literal> 属性。注意对应的 API 可能也进行了修改。"
+
+#. Tag: para
+#: Mail.xml:149
+#, no-c-format
+msgid ""
+"If you aren&#39;t using JBoss AS you can still use <literal>mail-ra.rar</"
+"literal> (included with Seam in the mail directory), or you may find your "
+"application server includes a similar adapter."
+msgstr ""
+"如果你没在使用 JBoss AS,你仍可以使用 <literal>mail-ra.rar</literal>(位于 "
+"Seam 的 mail 目录下),或者你可以使用你的应用服务器所包含的类似的适配器。"
+
+#. Tag: title
+#: Mail.xml:155
+#, no-c-format
+msgid "Configuration"
+msgstr "配置"
+
+#. Tag: para
+#: Mail.xml:156
+#, no-c-format
+msgid ""
+"To include Email support in your application, include <literal>jboss-seam-"
+"mail.jar</literal> in your WEB-INF/lib directory. If you are using JBoss AS "
+"there is no further configuration needed to use Seam&#39;s email support. "
+"Otherwise you need to make sure you have the JavaMail API, an implementation "
+"of the JavaMail API present (the API and impl used in JBoss AS are "
+"distributed with seam as <literal>lib/mail.jar</literal>), and a copy of the "
+"Java Activation Framework (distributed with seam as <literal>lib/activation."
+"jar</literal>."
+msgstr ""
+"要在应用程序里包含对邮件的支持,你可以在 WEB-INF/lib 目录里放入 "
+"<literal>jboss-seam-mail.jar</literal> 文件。如果你在使用 JBoss AS,那么不需"
+"要进一步配置就可以使用 Seam 的邮件支持。否则你需要确保你有 JavaMail API 的实"
+"现(JBoss AS 里使用的 API 和实现随 Seam 分发:<literal>lib/mail.jar</"
+"literal>),以及 Java Activation 框架(随 Seam 分发:<literal>lib/activation."
+"jar</literal>)。"
+
+#. Tag: para
+#: Mail.xml:159
+#, no-c-format
+msgid ""
+"The Seam Email module requires the use of Facelets as the view technology. "
+"Future versions of the library may also support the use of JSP. "
+"Additionally, it requires the use of the seam-ui package."
+msgstr ""
+"Seam Email 模块要求把 Facelet 作为视图。以后的版本可能也支持 JSP。另外,它要"
+"求使用 seam-ui 软件包。"
+
+#. Tag: para
+#: Mail.xml:162
+#, no-c-format
+msgid ""
+"The <literal>mailSession</literal> component uses JavaMail to talk to a &#39;"
+"real&#39; SMTP server."
+msgstr ""
+"<literal>mailSession</literal> 组件使用 JavaMail 来和“真正的”SMTP 服务器通"
+"信。"
+
+#. Tag: literal
+#: Mail.xml:166
+#, no-c-format
+msgid "mailSession"
+msgstr "mailSession"
+
+#. Tag: para
+#: Mail.xml:167
+#, no-c-format
+msgid ""
+"A JavaMail Session may be available via a JNDI lookup if you are working in "
+"an JEE environment or you can use a Seam configured Session."
+msgstr ""
+"如果你在使用 Java EE 环境,你可以通过 JNDI 查找 JavaMail Session。或者你可以"
+"使用 Seam 配置的 Session。"
+
+#. Tag: para
+#: Mail.xml:170
+#, no-c-format
+msgid ""
+"The mailSession component&#39;s properties are described in more detail in "
+"<xref linkend=\"Seam_Reference_Guide-Built_in_Seam_components-"
+"Mail_related_components\"/>."
+msgstr ""
+"<xref linkend=\"Seam_Reference_Guide-Built_in_Seam_components-"
+"Mail_related_components\"/> 描述了 mailSession 组件属性的细节。"
+
+#. Tag: title
+#: Mail.xml:174
+#, no-c-format
+msgid "JNDI lookup in JBoss AS"
+msgstr "在 JBoss AS 里进行 JNDI 查找"
+
+#. Tag: para
+#: Mail.xml:175
+#, no-c-format
+msgid ""
+"The JBossAS <literal>deploy/mail-service.xml</literal> configures a JavaMail "
+"session binding into JNDI. The default service configuration will need "
+"altering for your network. <ulink url=\"http://wiki.jboss.org/wiki/Wiki.jsp?"
+"page=JavaMail\">http://wiki.jboss.org/wiki/Wiki.jsp?page=JavaMail</ulink> "
+"describes the service in more detail."
+msgstr ""
+"JBossAS 的 <literal>deploy/mail-service.xml</literal> 配置了绑定至 JNDI 的 "
+"JavaMail session。缺省的服务配置将需要根据你的网络进行修改。<ulink url="
+"\"http://wiki.jboss.org/wiki/Wiki.jsp?page=JavaMail\">http://wiki.jboss.org/"
+"wiki/Wiki.jsp?page=JavaMail</ulink> 描述了这个服务的详情。"
+
+#. Tag: programlisting
+#: Mail.xml:178
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"        xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"        xmlns:mail=\"http://jboss.com/products/seam/mail\"&gt;\n"
+"        \n"
+"    &lt;mail:mail-session session-jndi-name=\"java:/Mail\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"        xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"        xmlns:mail=\"http://jboss.com/products/seam/mail\"&gt;\n"
+"        \n"
+"    &lt;mail:mail-session session-jndi-name=\"java:/Mail\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Mail.xml:179
+#, no-c-format
+msgid ""
+"Here we tell Seam to get the mail session bound to <literal>java:/Mail</"
+"literal> from JNDI."
+msgstr ""
+"在这里我们告诉 Seam 从 JNDI 里获取绑定到 <literal>java:/Mail</literal> 的 "
+"mail session。"
+
+#. Tag: title
+#: Mail.xml:185
+#, no-c-format
+msgid "Seam configured Session"
+msgstr "Seam 配置的 Session"
+
+#. Tag: para
+#: Mail.xml:186
+#, no-c-format
+msgid ""
+"A mail session can be configured via <literal>components.xml</literal>. Here "
+"we tell Seam to use <literal>smtp.example.com</literal> as the smtp server,"
+msgstr ""
+"Mail session 可以通过 <literal>components.xml</literal> 进行配置。在这里我们"
+"告诉 Seam 把 <literal>smtp.example.com</literal> 作为 SMTP 服务器使用:"
+
+#. Tag: programlisting
+#: Mail.xml:189
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"        xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"        xmlns:mail=\"http://jboss.com/products/seam/mail\"&gt;\n"
+"        \n"
+"    &lt;mail:mail-session host=\"smtp.example.com\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"        xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"        xmlns:mail=\"http://jboss.com/products/seam/mail\"&gt;\n"
+"        \n"
+"    &lt;mail:mail-session host=\"smtp.example.com\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+
+#. Tag: title
+#: Mail.xml:197
+#, no-c-format
+msgid "Tags"
+msgstr "标签"
+
+#. Tag: para
+#: Mail.xml:198
+#, no-c-format
+msgid ""
+"Emails are generated using tags in the <literal>http://jboss.com/products/"
+"seam/mail</literal> namespace. Documents should always have the "
+"<literal>message</literal> tag at the root of the message. The message tag "
+"prepares Seam to generate an email."
+msgstr ""
+"电子邮件是用 <literal>http://jboss.com/products/seam/mail</literal> 命名空间"
+"里的标签来生成的。消息的根部总是使用 <literal>message</literal> 标签。"
+"message 标签让 Seam 准备好生成邮件。"
+
+#. Tag: para
+#: Mail.xml:201
+#, no-c-format
+msgid ""
+"The standard templating tags of facelets can be used as normal. Inside the "
+"body you can use any JSF tag which doesn&#39;t require access to external "
+"resources (stylesheets, javascript)."
+msgstr ""
+"你也可以使用 Facelet 的标准模板标签。在邮件体里你可以使用任何不需要访问外部资"
+"源(如 stylesheet、javascript)的 JSF 标签。"
+
+#. Tag: term
+#: Mail.xml:206
+#, no-c-format
+msgid "&lt;m:message&gt;"
+msgstr "&lt;m:message&gt;"
+
+#. Tag: para
+#: Mail.xml:208
+#, no-c-format
+msgid "Root tag of a mail message"
+msgstr "邮件消息的 Root 标签"
+
+#. Tag: para
+#: Mail.xml:213
+#, no-c-format
+msgid ""
+"<literal>importance</literal> &mdash; low, normal or high. By default "
+"normal, this sets the importance of the mail message."
+msgstr ""
+"<literal>importance</literal> &mdash; low、normal 或 high。它设置邮件消息的重"
+"要性,缺省是 normal。"
+
+#. Tag: para
+#: Mail.xml:218
+#, no-c-format
+msgid ""
+"<literal>precedence</literal> &mdash; sets the precedence of the message (e."
+"g. bulk)."
+msgstr "<literal>precedence</literal> &mdash; 设置消息的先后次序(如:bulk)。"
+
+#. Tag: para
+#: Mail.xml:223
+#, no-c-format
+msgid ""
+"<literal>requestReadReceipt</literal> &mdash; by default false, if set, a "
+"read receipt will be request will be added, with the read receipt being sent "
+"to the <literal>From:</literal> address."
+msgstr ""
+"<literal>requestReadReceipt</literal> &mdash; 缺省为 false。如果被设置,阅读"
+"回执将被添加并送回 <literal>From:</literal> 地址。"
+
+#. Tag: para
+#: Mail.xml:228
+#, no-c-format
+msgid ""
+"<literal>urlBase</literal> &mdash; If set, the value is prepended to the "
+"<literal>requestContextPath</literal> allowing you to use components such as "
+"<literal>&lt;h:graphicImage&gt;</literal> in your emails."
+msgstr ""
+"<literal>urlBase</literal> &mdash; 如果被设置,它的值将附加到 "
+"<literal>requestContextPath</literal>,允许你在邮件里使用组件,如:"
+"<literal>&lt;h:graphicImage&gt;</literal>。"
+
+#. Tag: term
+#: Mail.xml:236
+#, no-c-format
+msgid "&lt;m:from&gt;"
+msgstr "&lt;m:from&gt;"
+
+#. Tag: para
+#: Mail.xml:238
+#, no-c-format
+msgid ""
+"Set&#39;s the From: address for the email. You can only have one of these "
+"per email."
+msgstr "为邮件设置 From: 地址。每个邮件只能有一个这样的地址。"
+
+#. Tag: para
+#: Mail.xml:243
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the name the email should come from."
+msgstr "<literal>name</literal> &mdash; 邮件来源的名称。"
+
+#. Tag: para
+#: Mail.xml:248 Mail.xml:263
+#, no-c-format
+msgid ""
+"<literal>address</literal> &mdash; the email address the email should come "
+"from."
+msgstr "<literal>address</literal> &mdash; 邮件来源的邮件地址。"
+
+#. Tag: term
+#: Mail.xml:256
+#, no-c-format
+msgid "&lt;m:replyTo&gt;"
+msgstr "&lt;m:replyTo&gt;"
+
+#. Tag: para
+#: Mail.xml:258
+#, no-c-format
+msgid ""
+"Set&#39;s the Reply-to: address for the email. You can only have one of "
+"these per email."
+msgstr "为邮件设置 Reply-to: 地址。每个邮件只能有一个这样的地址。"
+
+#. Tag: term
+#: Mail.xml:271
+#, no-c-format
+msgid "&lt;m:to&gt;"
+msgstr "&lt;m:to&gt;"
+
+#. Tag: para
+#: Mail.xml:273
+#, no-c-format
+msgid ""
+"Add a recipient to the email. Use multiple &lt;m:to&gt; tags for multiple "
+"recipients. This tag can be safely placed inside a repeat tag such as &lt;ui:"
+"repeat&gt;."
+msgstr ""
+"为邮件添加一个收件人。使用多个 &lt;m:to&gt; 标签可以添加多个收件人。这个标签"
+"可以安全地放在  repeat 标签内,如 &lt;ui:repeat&gt;。"
+
+#. Tag: para
+#: Mail.xml:278 Mail.xml:298 Mail.xml:318
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the name of the recipient."
+msgstr "<literal>name</literal> &mdash; 收件人的名字。"
+
+#. Tag: para
+#: Mail.xml:283 Mail.xml:303 Mail.xml:323
+#, no-c-format
+msgid "<literal>address</literal> &mdash; the email address of the recipient."
+msgstr "<literal>address</literal> &mdash; 收件人的邮件地址。"
+
+#. Tag: term
+#: Mail.xml:291
+#, no-c-format
+msgid "&lt;m:cc&gt;"
+msgstr "&lt;m:cc&gt;"
+
+#. Tag: para
+#: Mail.xml:293
+#, no-c-format
+msgid ""
+"Add a cc recipient to the email. Use multiple &lt;m:cc&gt; tags for multiple "
+"ccs. This tag can be safely placed inside a repeat tag such as &lt;ui:"
+"repeat&gt;."
+msgstr ""
+"给邮件添加一个 cc 收件人。使用多个 &lt;m:cc&gt; 标签可以添加多个 cc 收件人。"
+"这个标签可以安全地放在 repeat 标签里,如 &lt;ui:repeat&gt;。"
+
+#. Tag: term
+#: Mail.xml:311
+#, no-c-format
+msgid "&lt;m:bcc&gt;"
+msgstr "&lt;m:bcc&gt;"
+
+#. Tag: para
+#: Mail.xml:313
+#, no-c-format
+msgid ""
+"Add a bcc recipient to the email. Use multiple &lt;m:bcc&gt; tags for "
+"multiple bccs. This tag can be safely placed inside a repeat tag such as &lt;"
+"ui:repeat&gt;."
+msgstr ""
+"给邮件添加一个 bcc 收件人。使用多个 &lt;m:bcc&gt; 标签可以添加多个 bcc 收件"
+"人。这个标签可以安全地放在 repeat 标签里,如 &lt;ui:repeat&gt;。"
+
+#. Tag: term
+#: Mail.xml:331
+#, no-c-format
+msgid "&lt;m:header&gt;"
+msgstr "&lt;m:header&gt;"
+
+#. Tag: para
+#: Mail.xml:333
+#, no-c-format
+msgid ""
+"Add a header to the email (e.g. <literal>X-Sent-From: JBoss Seam</literal>"
+msgstr "为邮件添加头部信息(如:<literal>X-Sent-From: JBoss Seam</literal>)。"
+
+#. Tag: para
+#: Mail.xml:338
+#, no-c-format
+msgid ""
+"<literal>name</literal> &mdash; The name of the header to add (e.g. "
+"<literal>X-Sent-From</literal>)."
+msgstr ""
+"<literal>name</literal> &mdash; 要添加的头部信息的名字(如 <literal>X-Sent-"
+"From</literal>)。"
+
+#. Tag: para
+#: Mail.xml:343
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; The value of the header to add (e.g. "
+"<literal>JBoss Seam</literal>)."
+msgstr ""
+"<literal>value</literal> &mdash; 要添加的头部信息的值(如 <literal>JBoss "
+"Seam</literal>)。"
+
+#. Tag: term
+#: Mail.xml:351
+#, no-c-format
+msgid "&lt;m:attachment&gt;"
+msgstr "&lt;m:attachment&gt;"
+
+#. Tag: para
+#: Mail.xml:353
+#, no-c-format
+msgid "Add an attachment to the email."
+msgstr "为邮件添加一个附件。"
+
+#. Tag: para
+#: Mail.xml:358
+#, no-c-format
+msgid "<literal>value</literal> &mdash; The file to attach:"
+msgstr "<literal>value</literal> &mdash; 要附加的文件。"
+
+#. Tag: para
+#: Mail.xml:363
+#, no-c-format
+msgid ""
+"<literal>String</literal> &mdash; A <literal>String</literal> is interpreted "
+"as a path to file within the classpath"
+msgstr ""
+"<literal>String</literal> &mdash; <literal>String</literal> 被解释为 "
+"classpath 里的文件路径。"
+
+#. Tag: para
+#: Mail.xml:368
+#, no-c-format
+msgid ""
+"<literal>java.io.File</literal> &mdash; An EL expression can reference a "
+"<literal>File</literal> object"
+msgstr ""
+"<literal>java.io.File</literal> &mdash; 可以引用 <literal>File</literal> 对象"
+"的 EL 表达式。"
+
+#. Tag: para
+#: Mail.xml:373
+#, no-c-format
+msgid ""
+"<literal>java.net.URL</literal> &mdash; An EL expression can reference a "
+"<literal>URL</literal> object"
+msgstr ""
+"<literal>java.net.URL</literal> &mdash; 可以引用 <literal>URL</literal> 对象"
+"的 EL 表达式。"
+
+#. Tag: para
+#: Mail.xml:378
+#, no-c-format
+msgid ""
+"<literal>java.io.InputStream</literal> &mdash; An EL expression can "
+"reference an <literal>InputStream</literal>. In this case both a "
+"<literal>fileName</literal> and a <literal>contentType</literal> must be "
+"specified."
+msgstr ""
+"<literal>java.io.InputStream</literal> &mdash; 可以引用 "
+"<literal>InputStream</literal> 对象的 EL 表达式。在这里你必须指定 "
+"<literal>fileName</literal> 和 <literal>contentType</literal>。"
+
+#. Tag: para
+#: Mail.xml:383
+#, no-c-format
+msgid ""
+"<literal>byte[]</literal> &mdash; An EL expression can reference an "
+"<literal>byte[]</literal>. In this case both a <literal>fileName</literal> "
+"and a <literal>contentType</literal> must be specified."
+msgstr ""
+"<literal>byte[]</literal> &mdash; 可以引用 <literal>byte[]</literal> 对象的 "
+"EL 表达式。在这里你必须指定 <literal>fileName</literal> 和 "
+"<literal>contentType</literal>。"
+
+#. Tag: para
+#: Mail.xml:388
+#, no-c-format
+msgid "If the value attribute is ommitted:"
+msgstr "如果忽略了 value 属性:"
+
+#. Tag: para
+#: Mail.xml:393
+#, no-c-format
+msgid ""
+"If this tag contains a <literal>&lt;p:document&gt;</literal> tag, the "
+"document described will be generated and attached to the email. A "
+"<literal>fileName</literal> should be specfied."
+msgstr ""
+"如果这个标签包含了一个 <literal>&lt;p:document&gt;</literal> 标签,描述文档将"
+"被生成并附加到这个邮件。你应该指定 <literal>fileName</literal>。"
+
+#. Tag: para
+#: Mail.xml:398
+#, no-c-format
+msgid ""
+"If this tag contains other JSF tags a HTML document will be generated from "
+"them and attached to the email. A <literal>fileName</literal> should be "
+"specfied."
+msgstr ""
+"如果这个标签包含了其他 JSF 标签,将根据它们生成 HTML 文档并附加到这个邮件里。"
+"你应该指定 <literal>fileName</literal>。"
+
+#. Tag: para
+#: Mail.xml:405
+#, no-c-format
+msgid ""
+"<literal>fileName</literal> &mdash; Specify the file name to use for the "
+"attached file."
+msgstr "<literal>fileName</literal> &mdash; 指定附件的文件名。"
+
+#. Tag: para
+#: Mail.xml:410
+#, no-c-format
+msgid ""
+"<literal>contentType</literal> &mdash; Specify the MIME type of the attached "
+"file"
+msgstr "<literal>contentType</literal> &mdash; 指定附件的 MIME 类型。"
+
+#. Tag: term
+#: Mail.xml:418
+#, no-c-format
+msgid "&lt;m:subject&gt;"
+msgstr "&lt;m:subject&gt;"
+
+#. Tag: para
+#: Mail.xml:420
+#, no-c-format
+msgid "Set&#39;s the subject for the email."
+msgstr "为邮件设置标题。"
+
+#. Tag: term
+#: Mail.xml:426
+#, no-c-format
+msgid "&lt;m:body&gt;"
+msgstr "&lt;m:body&gt;"
+
+#. Tag: para
+#: Mail.xml:428
+#, no-c-format
+msgid ""
+"Set&#39;s the body for the email. Supports an <literal>alternative</literal> "
+"facet which, if an HTML email is generated can contain alternative text for "
+"a mail reader which doesn&#39;t support html."
+msgstr ""
+"设置邮件体。<literal>alternative</literal> facelet 被支持,生成的 HTML 邮件可"
+"以包含替代文本(如果邮件阅读器不支持 HTML)。"
+
+#. Tag: para
+#: Mail.xml:433
+#, no-c-format
+msgid ""
+"<literal>type</literal> &mdash; If set to <literal>plain</literal> then a "
+"plain text email will be generated otherwise an HTML email is generated."
+msgstr ""
+"<literal>type</literal> &mdash; 如果设置为 <literal>plain</literal>,则生成普"
+"通文本邮件,否则生成 HTML 邮件。"

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Persistence.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Persistence.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Persistence.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,982 @@
+# translation of Persistence.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Xi HUANG <xhuang at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Persistence\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2007-10-11 21:57+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Persistence.xml:6
+#, no-c-format
+msgid "Seam and Object/Relational Mapping"
+msgstr "Seam 和对象/关系映射"
+
+#. Tag: para
+#: Persistence.xml:7
+#, no-c-format
+msgid ""
+"Seam provides extensive support for the two most popular persistence "
+"architectures for Java: Hibernate3, and the Java Persistence API introduced "
+"with EJB 3.0. Seam&#39;s unique state-management architecture allows the "
+"most sophisticated ORM integration of any web application framework."
+msgstr ""
+"Seam 提供对两个最流行的 Java 持久化架构的广泛支持:Hibernate3 以及 EJB 3.0 里"
+"引入的 Java Persistence API。Seam 独特的状态管理架构允许任何 web 应用程序框架"
+"集成最复杂的 ORM。"
+
+#. Tag: title
+#: Persistence.xml:11
+#, no-c-format
+msgid "Introduction"
+msgstr "简介"
+
+#. Tag: para
+#: Persistence.xml:12
+#, no-c-format
+msgid ""
+"Seam grew out of the frustration of the Hibernate team with the "
+"statelessness typical of the previous generation of Java application "
+"architectures. The state management architecture of Seam was originally "
+"designed to solve problems relating to persistence&mdash;in particular "
+"problems associated with <emphasis>optimistic transaction processing</"
+"emphasis>. Scalable online applications always use optimistic transactions. "
+"An atomic (database/JTA) level transaction should not span a user "
+"interaction unless the application is designed to support only a very small "
+"number of concurrent clients. But almost all interesting work involves first "
+"displaying data to a user, and then, slightly later, updating the same data. "
+"So Hibernate was designed to support the idea of a persistence context which "
+"spanned an optimistic transaction."
+msgstr ""
+"Seam 的产生,来源于 Hibernate 团队对典型的老一代 Java 应用程序架构的无状态特"
+"征的失望。Seam 的状态管理架构原来是为解决和持久化相关的问题而设计的&mdash;特"
+"别是和<emphasis>乐观事务处理(optimistic transaction processing)</emphasis> "
+"相关的问题。可扩充的在线程序总是使用乐观事务。除非只是支持非常少的并发用户,"
+"原子(数据库/JTA)级别的事务不应该跨越用户的交互。但是几乎所有令人感兴趣的工"
+"作首先是为用户显示数据,然后是更新这些相同的数据。所以 Hibernate 被设计成支持"
+"跨越乐观事务的持久化上下文。"
+
+#. Tag: para
+#: Persistence.xml:15
+#, no-c-format
+msgid ""
+"Unfortunately, the so-called \"stateless\" architectures that preceded Seam "
+"and EJB 3.0 had no construct for representing an optimistic transaction. So, "
+"instead, these architectures provided persistence contexts scoped to the "
+"atomic transaction. Of course, this resulted in many problems for users, and "
+"is the cause of the number one user complaint about Hibernate: the dreaded "
+"<literal>LazyInitializationException</literal>. What we need is a construct "
+"for representing an optimistic transaction in the application tier."
+msgstr ""
+"可惜的是, Seam 和 EJB 3.0 以前所谓的“无状态的”架构并没有代表乐观事务的结构。"
+"所以,这些提供持久化上下文的架构都只基于原子事务。当然,这给用户产生了许多问"
+"题,这也是用户抱怨 Hibernate 的首要原因:可怕的 "
+"<literal>LazyInitializationException</literal>。我们需要的是一个在应用层代表"
+"乐观事务的结构。"
+
+#. Tag: para
+#: Persistence.xml:18
+#, no-c-format
+msgid ""
+"EJB 3.0 recognizes this problem, and introduces the idea of a stateful "
+"component (a stateful session bean) with an <emphasis>extended persistence "
+"context</emphasis> scoped to the lifetime of the component. This is a "
+"partial solution to the problem (and is a useful construct in and of itself) "
+"however there are two problems:"
+msgstr ""
+"EJB 3.0 认识到了这个问题,它引入了一个带有作用域为整个组件生命周期的"
+"<emphasis>扩展持久化上下文(extended persistence context)</emphasis>的有状态"
+"的组件(stateful session bean)。这是一个不完全的解决方案,它仍然存在两个问"
+"题:"
+
+#. Tag: para
+#: Persistence.xml:23
+#, no-c-format
+msgid ""
+"The lifecycle of the stateful session bean must be managed manually via code "
+"in the web tier (it turns out that this is a subtle problem and much more "
+"difficult in practice than it sounds)."
+msgstr ""
+"stateful session bean 的生命周期必须通过 web 层的代码手工管理(在实践中,这比"
+"听起来要难实现的多)。"
+
+#. Tag: para
+#: Persistence.xml:28
+#, no-c-format
+msgid ""
+"Propagation of the persistence context between stateful components in the "
+"same optimistic transaction is possible, but tricky."
+msgstr ""
+"在同一个乐观事务中填充有状态的组件间的持久化上下文是有可能的,但也需慎重对"
+"待。"
+
+#. Tag: para
+#: Persistence.xml:33
+#, no-c-format
+msgid ""
+"Seam solves the first problem by providing conversations, and stateful "
+"session bean components scoped to the conversation. (Most conversations "
+"actually represent optimistic transactions in the data layer.) This is "
+"sufficient for many simple applications (such as the Seam booking demo) "
+"where persistence context propagation is not needed. For more complex "
+"applications, with many loosly-interacting components in each conversation, "
+"propagation of the persistence context across components becomes an "
+"important issue. So Seam extends the persistence context management model of "
+"EJB 3.0, to provide conversation-scoped extended persistence contexts."
+msgstr ""
+"Seam 用 conversation 以及作用域为 conversation 的 stateful session bean 组件"
+"解决了第一个问题(大多数的 conversation 实际上代表了数据层的乐观事务)。对于"
+"许多不需要填充持久化上下文的简单应用程序(如 Seam booking 演示程序)而言,这"
+"已经足够了。而对于复杂的应用程序,如在每个 conversation 里都有许多用于交互的"
+"组件,跨组件的持久化上下文的填充就是一个重要问题了。所以,Seam 扩展了 EJB "
+"3.0 的持久化上下文管理模式,它提供了作用域为 conversation 的扩展的持久化上下"
+"文。"
+
+#. Tag: title
+#: Persistence.xml:39
+#, no-c-format
+msgid "Seam managed transactions"
+msgstr "Seam 管理的事务"
+
+#. Tag: para
+#: Persistence.xml:40
+#, no-c-format
+msgid ""
+"EJB session beans feature declarative transaction management. The EJB "
+"container is able to start a transaction transparently when the bean is "
+"invoked, and end it when the invocation ends. If we write a session bean "
+"method that acts as a JSF action listener, we can do all the work associated "
+"with that action in one transaction, and be sure that it is committed or "
+"rolled back when we finish processing the action. This is a great feature, "
+"and all that is needed by some Seam applications."
+msgstr ""
+"EJB session bean 以声明式事务管理为特征。当 bean 被调用时,EJB 容器能够透明地"
+"启动一个事务,并在调用结束时终止它。如果我们编写一个作为 JSF action listener "
+"的 session bean 方法,我们可以在同一事务内完成和这个 action 相关联的所有事"
+"情,且确保在完成这个 action 的处理时进行提交或回滚。这是一些 Seam 应用程序所"
+"需要的一个特征。"
+
+#. Tag: para
+#: Persistence.xml:43
+#, no-c-format
+msgid ""
+"However, there is a problem with this approach. A Seam application may not "
+"perform all data access for a request from a single method call to a session "
+"bean."
+msgstr ""
+"然而,这个方法存在一个问题。Seam 应用程序可能不会执行对于一个从简单方法调用"
+"到 session bean 的请求的所有数据访问。"
+
+#. Tag: para
+#: Persistence.xml:48
+#, no-c-format
+msgid ""
+"The request might require processing by several loosly-coupled components, "
+"each of which is called independently from the web layer. It is common to "
+"see several or even many calls per request from the web layer to EJB "
+"components in Seam."
+msgstr ""
+"这个请求可能需要用几个松耦合的组件进行处理,它们都从 web 层单独地进行调用。"
+"在 Seam 里我们常常可以看到每个从 web 层到 EJB 组件的请求都用几个甚至许多的调"
+"用。"
+
+#. Tag: para
+#: Persistence.xml:53
+#, no-c-format
+msgid "Rendering of the view might require lazy fetching of associations."
+msgstr "显示这个视图可能需要对关联的 lazy fetching。"
+
+#. Tag: para
+#: Persistence.xml:58
+#, no-c-format
+msgid ""
+"The more transactions per request, the more likely we are to encounter "
+"atomicity and isolation problems when our application is processing many "
+"concurrent requests. Certainly, all write operations should occur in the "
+"same transaction!"
+msgstr ""
+"每个请求涉及的事务越多,我们就越可能在应用程序处理并发请求时遇到原子和隔离问"
+"题。当然,所有的写操作应该出现在同一事务里!"
+
+#. Tag: para
+#: Persistence.xml:61
+#, no-c-format
+msgid ""
+"Hibernate users developed the <emphasis>\"open session in view\"</emphasis> "
+"pattern to work around this problem. In the Hibernate community, \"open "
+"session in view\" was historically even more important because frameworks "
+"like Spring use transaction-scoped persistence contexts. So rendering the "
+"view would cause <literal>LazyInitializationException</literal>s when "
+"unfetched associations were accessed."
+msgstr ""
+"Hibernate 用户开发了 <emphasis>\"open session in view\"</emphasis> 模式来绕开"
+"这个问题。在 Hibernate 社区里,因为 Spring 等框架使用了作用域为事务的持久化上"
+"下文,\"open session in view\" 甚至更显重要。当 unfetched 关联被访问时,显示"
+"视图将导致  <literal>LazyInitializationException</literal>。"
+
+#. Tag: para
+#: Persistence.xml:64
+#, no-c-format
+msgid ""
+"This pattern is usually implemented as a single transaction which spans the "
+"entire request. There are several problems with this implementation, the "
+"most serious being that we can never be sure that a transaction is "
+"successful until we commit it&mdash;but by the time the \"open session in "
+"view\" transaction is committed, the view is fully rendered, and the "
+"rendered response may already have been flushed to the client. How can we "
+"notify the user that their transaction was unsuccessful?"
+msgstr ""
+"这种模式通常以跨越整个请求周期的单一事务来实现。这样的实现存在几个问题,最严"
+"重的问题是我们在提交之前从来不知道事务是否成功了&mdash;但在 \"open session "
+"in view\" 事务被提交的时候,视图被完全地显示,且显示响应可能已经在客户端刷"
+"新。如果事务没有成功,我们怎样才能通知用户呢?"
+
+#. Tag: para
+#: Persistence.xml:67
+#, no-c-format
+msgid ""
+"Seam solves both the transaction isolation problem and the association "
+"fetching problem, while working around the problems with \"open session in "
+"view\". The solution comes in two parts:"
+msgstr ""
+"Seam 用 \"open session in view\" 解决了事务隔离和关联获取问题。这个解决方案由"
+"两部分组成:"
+
+#. Tag: para
+#: Persistence.xml:72
+#, no-c-format
+msgid ""
+"use an extended persistence context that is scoped to the conversation, "
+"instead of to the transaction"
+msgstr "使用作用域为 conversation 而不是 transaction 的扩展持久化上下文。"
+
+#. Tag: para
+#: Persistence.xml:77
+#, no-c-format
+msgid ""
+"use two transactions per request; the first spans the beginning of the "
+"update model values phase until the end of the invoke application phase; the "
+"second spans the render response phase"
+msgstr ""
+"对每个请求使用两个事务:第一个从更新模型值到调用应用程序阶段为止;第二个跨越"
+"显示响应阶段。"
+
+#. Tag: para
+#: Persistence.xml:82
+#, no-c-format
+msgid ""
+"In the next section, we&#39;ll tell you how to set up a conversation-scope "
+"persistence context. But first we need to tell you how to enable Seam "
+"transaction management. Note that you can use conversation-scoped "
+"persistence contexts without Seam transaction management, and there are good "
+"reasons to use Seam transaction management even when you&#39;re not using "
+"Seam-managed persistence contexts. However, the two facilities were designed "
+"to work together, and work best when used together."
+msgstr ""
+"在下一节里,我们将告诉你如何设立作用域为 conversation 的持久化上下文。但首先"
+"我们需要告诉你怎样启用 Seam 事务管理。注意,你也可以不用 Seam 事务管理来使用"
+"作用域为 conversation 的持久化上下文。即使当你并未使用 Seam 管理的持久化上下"
+"文,你也有理由来使用 Seam 事务管理。然而,两者是设计为在一起使用的,这样可以"
+"达到最佳效果。"
+
+#. Tag: title
+#: Persistence.xml:86
+#, no-c-format
+msgid "Enabling Seam-managed transactions"
+msgstr "启用 Seam 管理的事务"
+
+#. Tag: para
+#: Persistence.xml:87
+#, no-c-format
+msgid ""
+"To make use of <emphasis>Seam managed transactions</emphasis>, you need to "
+"use <literal>TransactionalSeamPhaseListener</literal> in place of "
+"<literal>SeamPhaseListener</literal>."
+msgstr ""
+"要使用 <emphasis>Seam 管理的事务</emphasis>,你需要用 "
+"<literal>TransactionalSeamPhaseListener</literal> 代替 "
+"<literal>SeamPhaseListener</literal>。"
+
+#. Tag: programlisting
+#: Persistence.xml:90
+#, no-c-format
+msgid ""
+"&lt;lifecycle&gt;\n"
+"     &lt;phase-listener&gt;\n"
+"        org.jboss.seam.jsf.TransactionalSeamPhaseListener\n"
+"    &lt;/phase-listener&gt;\n"
+"&lt;/lifecycle&gt;"
+msgstr ""
+"&lt;lifecycle&gt;\n"
+"     &lt;phase-listener&gt;\n"
+"        org.jboss.seam.jsf.TransactionalSeamPhaseListener\n"
+"    &lt;/phase-listener&gt;\n"
+"&lt;/lifecycle&gt;"
+
+#. Tag: para
+#: Persistence.xml:91
+#, no-c-format
+msgid ""
+"Seam transaction management is useful even if you&#39;re using EJB 3.0 "
+"container-managed persistence contexts. But it is especially useful if you "
+"use Seam outside a Java EE 5 environment, or in any other case where you "
+"would use a Seam-managed persistence context."
+msgstr ""
+"即使你没有使用 EJB 3.0 容器管理持久化上下文,Seam 事务管理也是有用的。但如果"
+"你在 Java EE 5 环境之外使用 Seam,或者在使用 Seam 管理的持久化上下文时,这就"
+"特别有用。"
+
+#. Tag: title
+#: Persistence.xml:99
+#, no-c-format
+msgid "Seam-managed persistence contexts"
+msgstr "Seam 管理的持久化上下文"
+
+#. Tag: para
+#: Persistence.xml:100
+#, no-c-format
+msgid ""
+"If you&#39;re using Seam outside of a Java EE 5 environment, you can&#39;t "
+"rely upon the container to manage the persistence context lifecycle for you. "
+"Even if you are in an EE 5 environment, you might have a complex application "
+"with many loosly coupled components that collaborate together in the scope "
+"of a single conversation, and in this case you might find that propagation "
+"of the persistence context between component is tricky and error-prone."
+msgstr ""
+"如果你在 Java EE 5 环境之外使用 Seam,你不能依赖容器来管理持久化上下文的生命"
+"周期。即使在 Java EE 5 环境里,对于带有许多松耦合组件的复杂应用程序,你可能会"
+"发现组件间的持久化上下文的填充是需要谨慎和容易出错的。"
+
+#. Tag: para
+#: Persistence.xml:103
+#, no-c-format
+msgid ""
+"In either case, you&#39;ll need to use a <emphasis>managed persistence "
+"context</emphasis> (for JPA) or a <emphasis>managed session</emphasis> (for "
+"Hibernate) in your components. A Seam-managed persistence context is just a "
+"built-in Seam component that manages an instance of <literal>EntityManager</"
+"literal> or <literal>Session</literal> in the conversation context. You can "
+"inject it with <literal>@In</literal>."
+msgstr ""
+"在两种情况下,你都需要在组件里使用<emphasis>managed persistence context</"
+"emphasis>(用于 JPA)或者 <emphasis>managed session</emphasis>(用于 "
+"Hibernate)。一个 Seam 管理的持久化上下文是管理 conversation 上下文里的 "
+"<literal>EntityManager</literal> 或 <literal>Session</literal> 实例的内置 "
+"Seam 组件。你可以用 <literal>@In</literal> 注入它。"
+
+#. Tag: para
+#: Persistence.xml:106
+#, no-c-format
+msgid ""
+"Seam-managed persistence contexts are extremely efficient in a clustered "
+"environment. Seam is able to perform an optimization that EJB 3.0 "
+"specification does not allow containers to use for container-managed "
+"extended persistence contexts. Seam supports transparent failover of "
+"extended persisence contexts, without the need to replicate any persistence "
+"context state between nodes. (We hope to fix this oversight in the next "
+"revision of the EJB spec.)"
+msgstr ""
+"Seam 管理的持久化上下文在集群环境里极其高效。Seam 能够执行 EJB 3.0 规格所不允"
+"许的容器为其管理的扩展持久化上下文进行的优化。Seam 支持扩展持久化上下文的透明"
+"的失效切换,而不需要在节点间复制任何持久化上下文的状态。(我们希望下一版本的 "
+"EJB 规格能够更正这个缺陷。)"
+
+#. Tag: title
+#: Persistence.xml:110
+#, no-c-format
+msgid "Using a Seam-managed persistence context with JPA"
+msgstr "和 JPA 一起使用 Seam 管理的持久化上下文"
+
+#. Tag: para
+#: Persistence.xml:111
+#, no-c-format
+msgid ""
+"Configuring a managed persistence context is easy. In <literal>components."
+"xml</literal>, we can write:"
+msgstr ""
+"配置被管理的持久化上下文很容易。我们可以在 <literal>components.xml</literal> "
+"里写入:"
+
+#. Tag: programlisting
+#: Persistence.xml:114
+#, no-c-format
+msgid ""
+"&lt;core:managed-persistence-context name=\"bookingDatabase\" \n"
+"                           auto-create=\"true\"\n"
+"            persistence-unit-jndi-name=\"java:/EntityManagerFactories/"
+"bookingData\"/&gt;"
+msgstr ""
+"&lt;core:managed-persistence-context name=\"bookingDatabase\" \n"
+"                           auto-create=\"true\"\n"
+"            persistence-unit-jndi-name=\"java:/EntityManagerFactories/"
+"bookingData\"/&gt;"
+
+#. Tag: para
+#: Persistence.xml:115
+#, no-c-format
+msgid ""
+"This configuration creates a conversation-scoped Seam component named "
+"<literal>bookingDatabase</literal> that manages the lifecycle of "
+"<literal>EntityManager</literal> instances for the persistence unit "
+"(<literal>EntityManagerFactory</literal> instance) with JNDI name "
+"<literal>java:/EntityManagerFactories/bookingData</literal>."
+msgstr ""
+"这个配置创建了一个作用域为 conversation 的名为 <literal>bookingDatabase</"
+"literal> 的 Seam 组件,它为持久化单元(<literal>EntityManagerFactory</"
+"literal> 实例,JNDI 名为 <literal>java:/EntityManagerFactories/bookingData</"
+"literal>)管理 <literal>EntityManager</literal> 实例的生命周期。"
+
+#. Tag: para
+#: Persistence.xml:118
+#, no-c-format
+msgid ""
+"Of course, you need to make sure that you have bound the "
+"<literal>EntityManagerFactory</literal> into JNDI. In JBoss, you can do this "
+"by adding the following property setting to <literal>persistence.xml</"
+"literal>."
+msgstr ""
+"当然,你需要确保你已经将 <literal>EntityManagerFactory</literal> 绑定到 JNDI "
+"了。在 JBoss 里,你可以在 <literal>persistence.xml</literal> 里加入下面的属性"
+"来实现:"
+
+#. Tag: programlisting
+#: Persistence.xml:121
+#, no-c-format
+msgid ""
+"&lt;property name=\"jboss.entity.manager.factory.jndi.name\" \n"
+"          value=\"java:/EntityManagerFactories/bookingData\"/&gt;"
+msgstr ""
+"&lt;property name=\"jboss.entity.manager.factory.jndi.name\" \n"
+"          value=\"java:/EntityManagerFactories/bookingData\"/&gt;"
+
+#. Tag: para
+#: Persistence.xml:122
+#, no-c-format
+msgid "Now we can have our <literal>EntityManager</literal> injected using:"
+msgstr "现在我们可以注入自己的 <literal>EntityManager</literal>:"
+
+#. Tag: programlisting
+#: Persistence.xml:125
+#, no-c-format
+msgid "@In EntityManager bookingDatabase;"
+msgstr "@In EntityManager bookingDatabase;"
+
+#. Tag: title
+#: Persistence.xml:129
+#, no-c-format
+msgid "Using a Seam-managed Hibernate session"
+msgstr "使用 Seam 管理的 Hibernate session"
+
+#. Tag: para
+#: Persistence.xml:130
+#, no-c-format
+msgid ""
+"Seam-managed Hibernate sessions are similar. In <literal>components.xml</"
+"literal>:"
+msgstr ""
+"Seam 管理的 Hibernate session 是类似的。在 <literal>components.xml</literal> "
+"里,可以看到:"
+
+#. Tag: programlisting
+#: Persistence.xml:133
+#, no-c-format
+msgid ""
+"&lt;core:hibernate-session-factory name=\"hibernateSessionFactory\"/&gt;\n"
+"\n"
+"&lt;core:managed-hibernate-session name=\"bookingDatabase\" \n"
+"                         auto-create=\"true\"\n"
+"           session-factory-jndi-name=\"java:/bookingSessionFactory\"/&gt;"
+msgstr ""
+"&lt;core:hibernate-session-factory name=\"hibernateSessionFactory\"/&gt;\n"
+"\n"
+"&lt;core:managed-hibernate-session name=\"bookingDatabase\" \n"
+"                         auto-create=\"true\"\n"
+"           session-factory-jndi-name=\"java:/bookingSessionFactory\"/&gt;"
+
+#. Tag: para
+#: Persistence.xml:134
+#, no-c-format
+msgid ""
+"Where <literal>java:/bookingSessionFactory</literal> is the name of the "
+"session factory specified in <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+"这里的 <literal>java:/bookingSessionFactory</literal> 是在 "
+"<literal>hibernate.cfg.xml</literal> 里指定的 session 工厂的名字。"
+
+#. Tag: programlisting
+#: Persistence.xml:137
+#, no-c-format
+msgid ""
+"&lt;session-factory name=\"java:/bookingSessionFactory\"&gt;\n"
+"    &lt;property name=\"transaction.flush_before_completion\"&gt;true&lt;/"
+"property&gt;\n"
+"    &lt;property name=\"connection.release_mode\"&gt;after_statement&lt;/"
+"property&gt;\n"
+"    &lt;property name=\"transaction.manager_lookup_class\"&gt;\n"
+"       org.hibernate.transaction.JBossTransactionManagerLookup\n"
+"    &lt;/property&gt;\n"
+"    &lt;property name=\"transaction.factory_class\"&gt;\n"
+"       org.hibernate.transaction.JTATransactionFactory\n"
+"    &lt;/property&gt;\n"
+"    &lt;property name=\"connection.datasource\"&gt;java:/"
+"bookingDatasource&lt;/property&gt;\n"
+"    ...\n"
+"&lt;/session-factory&gt;"
+msgstr ""
+"&lt;session-factory name=\"java:/bookingSessionFactory\"&gt;\n"
+"    &lt;property name=\"transaction.flush_before_completion\"&gt;true&lt;/"
+"property&gt;\n"
+"    &lt;property name=\"connection.release_mode\"&gt;after_statement&lt;/"
+"property&gt;\n"
+"    &lt;property name=\"transaction.manager_lookup_class\"&gt;\n"
+"       org.hibernate.transaction.JBossTransactionManagerLookup\n"
+"    &lt;/property&gt;\n"
+"    &lt;property name=\"transaction.factory_class\"&gt;\n"
+"       org.hibernate.transaction.JTATransactionFactory\n"
+"    &lt;/property&gt;\n"
+"    &lt;property name=\"connection.datasource\"&gt;java:/"
+"bookingDatasource&lt;/property&gt;\n"
+"    ...\n"
+"&lt;/session-factory&gt;"
+
+#. Tag: para
+#: Persistence.xml:138
+#, no-c-format
+msgid ""
+"Note that Seam does not flush the session, so you should always enable "
+"<literal>hibernate.transaction.flush_before_completion</literal> to ensure "
+"that the session is automatically flushed before the JTA transaction commits."
+msgstr ""
+"注意 Seam 不刷新 session,所以你应该总是启用 <literal>hibernate.transaction."
+"flush_before_completion</literal> 来确保这个 session 在 JTA 事务提交前自动地"
+"刷新。"
+
+#. Tag: para
+#: Persistence.xml:141
+#, no-c-format
+msgid ""
+"We can now have a managed Hibernate <literal>Session</literal> injected into "
+"our JavaBean components using the following code:"
+msgstr ""
+"现在可以把被管理的 Hibernate <literal>Session</literal> 注入到我们的 "
+"JavaBean 组件里了:"
+
+#. Tag: programlisting
+#: Persistence.xml:144
+#, no-c-format
+msgid "@In Session bookingDatabase;"
+msgstr "@In Session bookingDatabase;"
+
+#. Tag: title
+#: Persistence.xml:148
+#, no-c-format
+msgid "Seam-managed persistence contexts and atomic conversations"
+msgstr "Seam 管理的持久化上下文和原子 conversation"
+
+#. Tag: para
+#: Persistence.xml:149
+#, no-c-format
+msgid ""
+"Persistence contexts scoped to the conversation allows you to program "
+"optimistic transactions that span multiple requests to the server without "
+"the need to use the <literal>merge()</literal> operation , without the need "
+"to re-load data at the beginning of each request, and without the need to "
+"wrestle with the <literal>LazyInitializationException</literal> or "
+"<literal>NonUniqueObjectException</literal>."
+msgstr ""
+"作用域为 conversation 的持久化上下文允许你编写跨多个到服务器的请求的乐观事"
+"务,而不需要使用 <literal>merge()</literal> 操作、在每个请求开始时重新载入数"
+"据、或是疲于处理 <literal>LazyInitializationException</literal> 或 "
+"<literal>NonUniqueObjectException</literal>。"
+
+#. Tag: para
+#: Persistence.xml:152
+#, no-c-format
+msgid ""
+"As with any optimistic transaction management, transaction isolation and "
+"consistency can be achieved via use of optimistic locking. Fortunately, both "
+"Hibernate and EJB 3.0 make it very easy to use optimistic locking, by "
+"providing the <literal>@Version</literal> annotation."
+msgstr ""
+"和任何事务管理一样,事务隔离和一致性可以用乐观锁定实现。幸运的是,Hibernate "
+"和 EJB 3.0 都提供 <literal>@Version</literal> 注解,使乐观锁定非常容易使用。"
+
+#. Tag: para
+#: Persistence.xml:155
+#, no-c-format
+msgid ""
+"By default, the persistence context is flushed (synchronized with the "
+"database) at the end of each transaction. This is sometimes the desired "
+"behavior. But very often, we would prefer that all changes are held in "
+"memory and only written to the database when the conversation ends "
+"successfully. This allows for truly atomic conversations. As the result of a "
+"truly stupid and shortsighted decision by certain non-JBoss, non-Sun and non-"
+"Sybase members of the EJB 3.0 expert group, there is currently no simple, "
+"usable and portable way to implement atomic conversations using EJB 3.0 "
+"persistence. However, Hibernate provides this feature as a vendor extension "
+"to the <literal>FlushModeType</literal>s defined by the specification, and "
+"it is our expectation that other vendors will soon provide a similar "
+"extension."
+msgstr ""
+"在缺省情况下,在每个事务结束时持久化上下文都会被刷新(与数据库同步)。有时候"
+"这是我们想要的行为。但是,我们更愿意所有的修改都放在内存里,而只有在 "
+"conversation 成功结束后才被写入数据库。这才是真正的原子 conversation。由于 "
+"EJB 3.0 专家小组里的某些非 JBoss、非 Sun 和非 Sybase 的成员的愚蠢而短视的决"
+"定,现在还没有简单的、可用的和可移植的方法用 EJB 3.0 来实现原子 "
+"conversation。然而,Hibernate 以 EJB 3.0 规格所定义的 "
+"<literal>FlushModeType</literal> 的扩展的形式提供了这样的功能,我们预计其他公"
+"司很快也会提供类似的扩展。"
+
+#. Tag: para
+#: Persistence.xml:158
+#, no-c-format
+msgid ""
+"Seam lets you specify <literal>FlushModeType.MANUAL</literal> when beginning "
+"a conversation. Currently, this works only when Hibernate is the underlying "
+"persistence provider, but we plan to support other equivalent vendor "
+"extensions."
+msgstr ""
+"Seam 让你在开始一个 conversation 时指定 <literal>FlushModeType.MANUAL</"
+"literal>。目前,这只有在底层持久化提供者是 Hibernate 时才起作用,但我们计划支"
+"持其他公司的扩展。"
+
+#. Tag: programlisting
+#: Persistence.xml:161
+#, no-c-format
+msgid ""
+"@In EntityManager em; //a Seam-managed persistence context\n"
+"\n"
+"@Begin(flushMode=MANUAL)\n"
+"public void beginClaimWizard() {\n"
+"    claim = em.find(Claim.class, claimId);\n"
+"}"
+msgstr ""
+"@In EntityManager em; //a Seam-managed persistence context\n"
+"\n"
+"@Begin(flushMode=MANUAL)\n"
+"public void beginClaimWizard() {\n"
+"    claim = em.find(Claim.class, claimId);\n"
+"}"
+
+#. Tag: para
+#: Persistence.xml:162
+#, no-c-format
+msgid ""
+"Now, the <literal>claim</literal> object remains managed by the persistence "
+"context for the rest ot the conversation. We can make changes to the claim:"
+msgstr ""
+"现在,这个 conversation 的余下部分里,<literal>claim</literal> 对象仍然是由持"
+"久化上下文所管理。我们可以修改这个 claim:"
+
+#. Tag: programlisting
+#: Persistence.xml:165
+#, no-c-format
+msgid ""
+"public void addPartyToClaim() {\n"
+"    Party party = ....;\n"
+"    claim.addParty(party);\n"
+"}"
+msgstr ""
+"public void addPartyToClaim() {\n"
+"    Party party = ....;\n"
+"    claim.addParty(party);\n"
+"}"
+
+#. Tag: para
+#: Persistence.xml:166
+#, no-c-format
+msgid ""
+"But these changes will not be flushed to the database until we explicitly "
+"force the flush to occur:"
+msgstr "但是,一直到我们显性地强制这些修改发生,它们才会被写入数据库:"
+
+#. Tag: programlisting
+#: Persistence.xml:169
+#, no-c-format
+msgid ""
+"@End\n"
+"public void commitClaim() {\n"
+"    em.flush();\n"
+"}"
+msgstr ""
+"@End\n"
+"public void commitClaim() {\n"
+"    em.flush();\n"
+"}"
+
+#. Tag: title
+#: Persistence.xml:175
+#, no-c-format
+msgid "Using the JPA \"delegate\""
+msgstr "使用 JPA \"delegate\""
+
+#. Tag: para
+#: Persistence.xml:176
+#, no-c-format
+msgid ""
+"The <literal>EntityManager</literal> interface lets you access a vendor-"
+"specific API via the <literal>getDelegate()</literal> method. Naturally, the "
+"most interesting vendor is Hibernate, and the most powerful delegate "
+"interface is <literal>org.hibernate.Session</literal>. You&#39;d be nuts to "
+"use anything else. Trust me, I&#39;m not biased at all."
+msgstr ""
+"<literal>EntityManager</literal> 接口让你可以通过 <literal>getDelegate()</"
+"literal> 方法访问和供应商相关的 API。自然,最令人感兴趣的供应商是 Hibernate,"
+"且最强大的委托接口是 <literal>org.hibernate.Session</literal>。虽然你可以使用"
+"其他任何产品,但请相信我,我所说的并不带有偏见。"
+
+#. Tag: para
+#: Persistence.xml:179
+#, no-c-format
+msgid ""
+"But regardless of whether you&#39;re using Hibernate (genius!) or something "
+"else (masochist, or just not very bright), you&#39;ll almost certainly want "
+"to use the delegate in your Seam components from time to time. One approach "
+"would be the following:"
+msgstr ""
+"但不管你是否在使用 Hibernate(天才!)还是其他产品(不够聪明),你都会不时地"
+"在 Seam 组件里使用委托(delegate)。例如象下面这样:"
+
+#. Tag: programlisting
+#: Persistence.xml:182
+#, no-c-format
+msgid ""
+"@In EntityManager entityManager;\n"
+"\n"
+"@Create\n"
+"public void init() {\n"
+"    ( (Session) entityManager.getDelegate() ).enableFilter(\"currentVersions"
+"\");\n"
+"}"
+msgstr ""
+"@In EntityManager entityManager;\n"
+"\n"
+"@Create\n"
+"public void init() {\n"
+"    ( (Session) entityManager.getDelegate() ).enableFilter(\"currentVersions"
+"\");\n"
+"}"
+
+#. Tag: para
+#: Persistence.xml:183
+#, no-c-format
+msgid ""
+"But typecasts are unquestionably the ugliest syntax in the Java language, so "
+"most people avoid them whenever possible. Here&#39;s a different way to get "
+"at the delegate. First, add the following line to <literal>components.xml</"
+"literal>:"
+msgstr ""
+"在 Java 语言里,类型转换毫无疑问是最丑陋的语法,所以大多数人都尽量避免使用"
+"它。而在委托时你可以使用另外一种方法。首先,在 <literal>components.xml</"
+"literal> 里加入下面的一行:"
+
+#. Tag: programlisting
+#: Persistence.xml:186
+#, no-c-format
+msgid ""
+"&lt;factory name=\"session\" \n"
+"         scope=\"STATELESS\" \n"
+"         auto-create=\"true\" \n"
+"         value=\"#{entityManager.delegate}\"/&gt;"
+msgstr ""
+"&lt;factory name=\"session\" \n"
+"         scope=\"STATELESS\" \n"
+"         auto-create=\"true\" \n"
+"         value=\"#{entityManager.delegate}\"/&gt;"
+
+#. Tag: para
+#: Persistence.xml:187
+#, no-c-format
+msgid "Now we can inject the session directly:"
+msgstr "现在我们可以直接注入这个 session:"
+
+#. Tag: programlisting
+#: Persistence.xml:190
+#, no-c-format
+msgid ""
+"@In Session session;\n"
+"\n"
+"@Create\n"
+"public void init() {\n"
+"    session.enableFilter(\"currentVersions\");\n"
+"}"
+msgstr ""
+"@In Session session;\n"
+"\n"
+"@Create\n"
+"public void init() {\n"
+"    session.enableFilter(\"currentVersions\");\n"
+"}"
+
+#. Tag: title
+#: Persistence.xml:194
+#, no-c-format
+msgid "Using EL in EJB-QL/HQL"
+msgstr "在 EJB-QL/HQL 里使用 EL"
+
+#. Tag: para
+#: Persistence.xml:195
+#, no-c-format
+msgid ""
+"Seam proxies the <literal>EntityManager</literal> or <literal>Session</"
+"literal> object whenever you use a Seam-managed persistence context or "
+"inject a container managed persistence context using "
+"<literal>@PersistenceContext</literal>. This lets you use EL expressions in "
+"your query strings, safely and efficiently. For example, this:"
+msgstr ""
+"在任何你使用 Seam 管理的持久化上下文或者用 <literal>@PersistenceContext</"
+"literal> 注入一个容器管理的持久化上下文的时候,Seam 都代理了 "
+"<literal>EntityManager</literal> 或 <literal>Session</literal> 对象。这让你可"
+"以安全地、有效地在查询字符串里使用 EL 表达式。例如:"
+
+#. Tag: programlisting
+#: Persistence.xml:198
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=#{user.username}\")\n"
+"         .getSingleResult();"
+msgstr ""
+"User user = em.createQuery(\"from User where username=#{user.username}\")\n"
+"         .getSingleResult();"
+
+#. Tag: para
+#: Persistence.xml:199
+#, no-c-format
+msgid "is equivalent to:"
+msgstr "等于:"
+
+#. Tag: programlisting
+#: Persistence.xml:202
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getSingleResult();"
+msgstr ""
+"User user = em.createQuery(\"from User where username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getSingleResult();"
+
+#. Tag: para
+#: Persistence.xml:203
+#, no-c-format
+msgid "Of course, you should never, ever write it like this:"
+msgstr "当然,你绝对不应该写成这样:"
+
+#. Tag: programlisting
+#: Persistence.xml:206
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=\" + user.getUsername"
+"()) //BAD!\n"
+"         .getSingleResult();"
+msgstr ""
+"User user = em.createQuery(\"from User where username=\" + user.getUsername"
+"()) //BAD!\n"
+"         .getSingleResult();"
+
+#. Tag: para
+#: Persistence.xml:207
+#, no-c-format
+msgid "(It is inefficient and vulnerable to SQL injection attacks.)"
+msgstr "(这样效率低且易受 SQL 注入的攻击。)"
+
+#. Tag: title
+#: Persistence.xml:213
+#, no-c-format
+msgid "Using Hibernate filters"
+msgstr "使用 Hibernate 过滤器(filter)"
+
+#. Tag: para
+#: Persistence.xml:214
+#, no-c-format
+msgid ""
+"The coolest, and most unique, feature of Hibernate is <emphasis>filters</"
+"emphasis>. Filters let you provide a restricted view of the data in the "
+"database. You can find out more about filters in the Hibernate "
+"documentation. But we thought we&#39;d mention an easy way to incorporate "
+"filters into a Seam application, one that works especially well with the "
+"Seam Application Framework."
+msgstr ""
+"Hibernate 最出众、最独特的功能就是<emphasis>过滤器(filter)</emphasis>。过滤"
+"器可以提供受限制的数据库里数据的视图。你可以在 Hibernate 文档里找到更多关于过"
+"滤器的信息。但我们想最好是介绍一种简单的将过滤器合并到 Seam 应用程序里的方"
+"法,它和 Seam 应用程序框架一起使用则效果更好。"
+
+#. Tag: para
+#: Persistence.xml:217
+#, no-c-format
+msgid ""
+"Seam-managed persistence contexts may have a list of filters defined, which "
+"will be enabled whenever an <literal>EntityManager</literal> or Hibernate "
+"<literal>Session</literal> is first created. (Of course, they may only be "
+"used when Hibernate is the underlying persistence provider.)"
+msgstr ""
+"Seam 管理的持久化上下文可能有一个过滤器的列表,它将在 "
+"<literal>EntityManager</literal> 或 Hibernate <literal>Session</literal> 被初"
+"次创建时被启用。(当然,它们只有在底层持久化提供者是 Hibernate 时才能使用。)"
+
+#. Tag: programlisting
+#: Persistence.xml:220
+#, no-c-format
+msgid ""
+"&lt;core:filter name=\"regionFilter\"&gt;\n"
+"    &lt;core:name&gt;region&lt;/core:name&gt;\n"
+"    &lt;core:parameters&gt;\n"
+"        &lt;key&gt;regionCode&lt;/key&gt;\n"
+"        &lt;value&gt;#{region.code}&lt;/value&gt;\n"
+"    &lt;/core:parameters&gt;\n"
+"&lt;/core:filter&gt;\n"
+"\n"
+"&lt;core:filter name=\"currentFilter\"&gt;\n"
+"    &lt;core:name&gt;current&lt;/core:name&gt;\n"
+"    &lt;core:parameters&gt;\n"
+"        &lt;key&gt;date&lt;/key&gt;\n"
+"        &lt;value&gt;#{currentDate}&lt;/value&gt;\n"
+"    &lt;/core:parameters&gt;\n"
+"&lt;/core:filter&gt;\n"
+"\n"
+"&lt;core:managed-persistence-context name=\"personDatabase\"\n"
+"    persistence-unit-jndi-name=\"java:/EntityManagerFactories/personDatabase"
+"\"&gt;\n"
+"    &lt;core:filters&gt;\n"
+"        &lt;value&gt;#{regionFilter}&lt;/value&gt;\n"
+"        &lt;value&gt;#{currentFilter}&lt;/value&gt;\n"
+"    &lt;/core:filters&gt;\n"
+"&lt;/core:managed-persistence-context&gt;"
+msgstr ""
+"&lt;core:filter name=\"regionFilter\"&gt;\n"
+"    &lt;core:name&gt;region&lt;/core:name&gt;\n"
+"    &lt;core:parameters&gt;\n"
+"        &lt;key&gt;regionCode&lt;/key&gt;\n"
+"        &lt;value&gt;#{region.code}&lt;/value&gt;\n"
+"    &lt;/core:parameters&gt;\n"
+"&lt;/core:filter&gt;\n"
+"\n"
+"&lt;core:filter name=\"currentFilter\"&gt;\n"
+"    &lt;core:name&gt;current&lt;/core:name&gt;\n"
+"    &lt;core:parameters&gt;\n"
+"        &lt;key&gt;date&lt;/key&gt;\n"
+"        &lt;value&gt;#{currentDate}&lt;/value&gt;\n"
+"    &lt;/core:parameters&gt;\n"
+"&lt;/core:filter&gt;\n"
+"\n"
+"&lt;core:managed-persistence-context name=\"personDatabase\"\n"
+"    persistence-unit-jndi-name=\"java:/EntityManagerFactories/personDatabase"
+"\"&gt;\n"
+"    &lt;core:filters&gt;\n"
+"        &lt;value&gt;#{regionFilter}&lt;/value&gt;\n"
+"        &lt;value&gt;#{currentFilter}&lt;/value&gt;\n"
+"    &lt;/core:filters&gt;\n"
+"&lt;/core:managed-persistence-context&gt;"

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Remoting.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Remoting.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Remoting.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1845 @@
+# translation of Remoting.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Xi HUANG <xhuang at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Remoting\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2007-10-09 11:03+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Remoting.xml:6
+#, no-c-format
+msgid "Remoting"
+msgstr "Remoting"
+
+#. Tag: para
+#: Remoting.xml:7
+#, no-c-format
+msgid ""
+"Seam provides a convenient method of remotely accessing components from a "
+"web page, using AJAX (Asynchronous Javascript and XML). The framework for "
+"this functionality is provided with almost no up-front development effort - "
+"your components only require simple annotating to become accessible via "
+"AJAX. This chapter describes the steps required to build an AJAX-enabled web "
+"page, then goes on to explain the features of the Seam Remoting framework in "
+"more detail."
+msgstr ""
+"Seam 提供一种从 web 页面里远程访问组件的方便的途径:AJAX(Asynchronous "
+"Javascript and XML)。这个功能的框架几乎不需要前端的开发 - 你的组件只需要简单"
+"地注解就可以被 AJAX 所访问。本章首先描述了构建启用 AJAX 的 web 页面所需的步"
+"骤,然后解释了 Seam Remoting 框架的更多细节。"
+
+#. Tag: title
+#: Remoting.xml:10 Remoting.xml:285
+#, no-c-format
+msgid "Configuration"
+msgstr "配置"
+
+#. Tag: para
+#: Remoting.xml:11
+#, no-c-format
+msgid ""
+"To use remoting, the Seam Resource servlet must first be configured in your "
+"<literal>web.xml</literal> file:"
+msgstr ""
+"要使用 Remoting,你首先必须在 <literal>web.xml</literal> 文件里配置 Seam "
+"Resource servlet:"
+
+#. Tag: programlisting
+#: Remoting.xml:14
+#, no-c-format
+msgid ""
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"  &lt;/servlet&gt;\n"
+"\n"
+"  &lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"  &lt;/servlet-mapping&gt;"
+msgstr ""
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"  &lt;/servlet&gt;\n"
+"\n"
+"  &lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"  &lt;/servlet-mapping&gt;"
+
+#. Tag: para
+#: Remoting.xml:15
+#, no-c-format
+msgid ""
+"The next step is to import the necessary Javascript into your web page. "
+"There are a minimum of two scripts that must be imported. The first one "
+"contains all the client-side framework code that enables remoting "
+"functionality:"
+msgstr ""
+"下一步是在你的 web 页面里导入必需的 Javascript。你至少需要导入两个脚本。第一"
+"个脚本包含启用 remoting 功能的所有客户端框架代码:"
+
+#. Tag: programlisting
+#: Remoting.xml:18
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/resource/"
+"remote.js\"&gt;&lt;/script&gt;"
+msgstr ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/resource/"
+"remote.js\"&gt;&lt;/script&gt;"
+
+#. Tag: para
+#: Remoting.xml:19
+#, no-c-format
+msgid ""
+"The second script contains the stubs and type definitions for the components "
+"you wish to call. It is generated dynamically based on the local interface "
+"of your components, and includes type definitions for all of the classes "
+"that can be used to call the remotable methods of the interface. The name of "
+"the script reflects the name of your component. For example, if you have a "
+"stateless session bean annotated with <literal>@Name(\"customerAction\")</"
+"literal>, then your script tag should look like this:"
+msgstr ""
+"第二个脚本包含了你需要调用的组件的 stub 和类型定义。这是根据组件的本地接口动"
+"态地生成的,它包括可以用来调用这个接口的远程方法的所有类的类型定义。例如,如"
+"果用 <literal>@Name(\"customerAction\")</literal> 注解了一个 stateless "
+"session bean,你的脚本标签应该类似于:"
+
+#. Tag: programlisting
+#: Remoting.xml:22
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?customerAction\"&gt;\n"
+"    &lt;/script&gt;"
+msgstr ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?customerAction\"&gt;\n"
+"    &lt;/script&gt;"
+
+#. Tag: para
+#: Remoting.xml:23
+#, no-c-format
+msgid ""
+"If you wish to access more than one component from the same page, then "
+"include them all as parameters of your script tag:"
+msgstr "如果想从同一页面访问多个组件,你可以在脚本标签的参数里包括它们:"
+
+#. Tag: programlisting
+#: Remoting.xml:26
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" \n"
+"     src=\"seam/resource/remoting/interface.js?customerAction&amp;"
+"accountAction\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+"&lt;script type=\"text/javascript\" \n"
+"     src=\"seam/resource/remoting/interface.js?customerAction&amp;"
+"accountAction\"&gt;\n"
+"  &lt;/script&gt;"
+
+#. Tag: title
+#: Remoting.xml:27
+#, no-c-format
+msgid "The \"Seam\" object"
+msgstr "\"Seam\" 对象"
+
+#. Tag: para
+#: Remoting.xml:28
+#, no-c-format
+msgid ""
+"Client-side interaction with your components is all performed via the "
+"<literal>Seam</literal> Javascript object. This object is defined in "
+"<literal>remote.js</literal>, and you&#39;ll be using it to make "
+"asynchronous calls against your component. It is split into two areas of "
+"functionality; <literal>Seam.Component</literal> contains methods for "
+"working with components and <literal>Seam.Remoting</literal> contains "
+"methods for executing remote requests. The easiest way to become familiar "
+"with this object is to start with a simple example."
+msgstr ""
+"客户端和组件的交互全部是由 <literal>Seam</literal> Javascript 对象来执行的。"
+"这个对象在 <literal>remote.js</literal> 里定义,你可以用它来对组件进行异步调"
+"用。它有两种功能:<literal>Seam.Component</literal> 包含和组件一起使用的方"
+"法,而<literal>Seam.Remoting</literal> 包含执行远程请求的方法。熟悉这个对象最"
+"容易的方法是从一个简单例子开始: "
+
+#. Tag: title
+#: Remoting.xml:31
+#, no-c-format
+msgid "A Hello World example"
+msgstr "Hello World 示例"
+
+#. Tag: para
+#: Remoting.xml:32
+#, no-c-format
+msgid ""
+"Let&#39;s step through a simple example to see how the <literal>Seam</"
+"literal> object works. First of all, let&#39;s create a new Seam component "
+"called <literal>helloAction</literal>."
+msgstr ""
+"让我们通过这个简单示例来了解 <literal>Seam</literal> 是如何工作的。首先,创建"
+"一个新的名为 <literal>helloAction</literal> 的 Seam 组件。 "
+
+#. Tag: programlisting
+#: Remoting.xml:35
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"  @Name(\"helloAction\")\n"
+"  public class HelloAction implements HelloLocal {\n"
+"    public String sayHello(String name) {\n"
+"      return \"Hello, \" + name;\n"
+"    }\n"
+"  }"
+msgstr ""
+"@Stateless\n"
+"  @Name(\"helloAction\")\n"
+"  public class HelloAction implements HelloLocal {\n"
+"    public String sayHello(String name) {\n"
+"      return \"Hello, \" + name;\n"
+"    }\n"
+"  }"
+
+#. Tag: para
+#: Remoting.xml:36
+#, no-c-format
+msgid ""
+"You also need to create a local interface for our new component - take "
+"special note of the <literal>@WebRemote</literal> annotation, as it&#39;s "
+"required to make our method accessible via remoting:"
+msgstr ""
+"你也需要为这个组件创建一个本地接口 - 尤其要注意 <literal>@WebRemote</"
+"literal> 注解,要使我们的方法可以通过 remoting 访问,它是必需的。 "
+
+#. Tag: programlisting
+#: Remoting.xml:39
+#, no-c-format
+msgid ""
+"@Local\n"
+"  public interface HelloLocal {\n"
+"    @WebRemote\n"
+"    public String sayHello(String name);\n"
+"  }"
+msgstr ""
+"@Local\n"
+"  public interface HelloLocal {\n"
+"    @WebRemote\n"
+"    public String sayHello(String name);\n"
+"  }"
+
+#. Tag: para
+#: Remoting.xml:40
+#, no-c-format
+msgid ""
+"That&#39;s all the server-side code we need to write. Now for our web page - "
+"create a new page and import the following scripts:"
+msgstr ""
+"这就是我们所需的全部服务端代码。现在转到 web 页面 - 创建一个新的页面并导入下"
+"面的脚本: "
+
+#. Tag: programlisting
+#: Remoting.xml:43
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/resource/"
+"remote.js\"&gt;&lt;/script&gt;\n"
+"  &lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?helloAction\"&gt;&lt;/script&gt;"
+msgstr ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/resource/"
+"remote.js\"&gt;&lt;/script&gt;\n"
+"  &lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?helloAction\"&gt;&lt;/script&gt;"
+
+#. Tag: para
+#: Remoting.xml:44
+#, no-c-format
+msgid ""
+"To make this a fully interactive user experience, let&#39;s add a button to "
+"our page:"
+msgstr "为了使它可以和用户交互,让我们在这个页面里加入一个按钮: "
+
+#. Tag: programlisting
+#: Remoting.xml:47
+#, no-c-format
+msgid ""
+"&lt;button onclick=\"javascript:sayHello()\"&gt;Say Hello&lt;/button&gt;"
+msgstr ""
+"&lt;button onclick=\"javascript:sayHello()\"&gt;Say Hello&lt;/button&gt;"
+
+#. Tag: para
+#: Remoting.xml:48
+#, no-c-format
+msgid ""
+"We&#39;ll also need to add some more script to make our button actually do "
+"something when it&#39;s clicked:"
+msgstr "我们也需要加入更多的脚本,使按钮在被点击时做点什么: "
+
+#. Tag: programlisting
+#: Remoting.xml:51
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\"&gt;\n"
+"    //&lt;![CDATA[\n"
+"\n"
+"    function sayHello() {\n"
+"      var name = prompt(\"What is your name?\");\n"
+"      Seam.Component.getInstance(\"helloAction\").sayHello(name, "
+"sayHelloCallback);\n"
+"    }\n"
+"\n"
+"    function sayHelloCallback(result) {\n"
+"      alert(result);\n"
+"    }\n"
+"\n"
+"    // ]]&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+"&lt;script type=\"text/javascript\"&gt;\n"
+"    //&lt;![CDATA[\n"
+"\n"
+"    function sayHello() {\n"
+"      var name = prompt(\"What is your name?\");\n"
+"      Seam.Component.getInstance(\"helloAction\").sayHello(name, "
+"sayHelloCallback);\n"
+"    }\n"
+"\n"
+"    function sayHelloCallback(result) {\n"
+"      alert(result);\n"
+"    }\n"
+"\n"
+"    // ]]&gt;\n"
+"  &lt;/script&gt;"
+
+#. Tag: para
+#: Remoting.xml:52
+#, no-c-format
+msgid ""
+"We&#39;re done! Deploy your application and browse to your page. Click the "
+"button, and enter a name when prompted. A message box will display the hello "
+"message confirming that the call was successful. If you want to save some "
+"time, you&#39;ll find the full source code for this Hello World example in "
+"Seam&#39;s <literal>/examples/remoting/helloworld</literal> directory."
+msgstr ""
+"完成了!部署这个应用程序并浏览你的页面。点击按钮,然后依据提示输入一个名字。"
+"消息框将显示 hello 信息来确认这个调用成功了。如果想节省时间,你可以使用在 "
+"Seam 的 <literal>/examples/remoting/helloworld</literal> 目录里的 Hello "
+"World 示例的全部代码。 "
+
+#. Tag: para
+#: Remoting.xml:55
+#, no-c-format
+msgid ""
+"So what does the code of our script actually do? Let&#39;s break it down "
+"into smaller pieces. To start with, you can see from the Javascript code "
+"listing that we have implemented two methods - the first method is "
+"responsible for prompting the user for their name and then making a remote "
+"request. Take a look at the following line:"
+msgstr ""
+"那我们的脚本到底做了什么呢?让我们分开来看。首先,在 Javascript 代码清单里你"
+"可以看到我们实现了两个方法 - 第一个方法负责提示用户输入名字并发送一个远程请"
+"求。看看下面这行: "
+
+#. Tag: programlisting
+#: Remoting.xml:58
+#, no-c-format
+msgid ""
+"Seam.Component.getInstance(\"helloAction\").sayHello(name, sayHelloCallback);"
+msgstr ""
+"Seam.Component.getInstance(\"helloAction\").sayHello(name, sayHelloCallback);"
+
+#. Tag: para
+#: Remoting.xml:59
+#, no-c-format
+msgid ""
+"The first section of this line, <literal>Seam.Component.getInstance"
+"(\"helloAction\")</literal> returns a proxy, or \"stub\" for our "
+"<literal>helloAction</literal> component. We can invoke the methods of our "
+"component against this stub, which is exactly what happens with the "
+"remainder of the line: <literal>sayHello(name, sayHelloCallback);</literal>."
+msgstr ""
+"此行的第一部分,<literal>Seam.Component.getInstance(\"helloAction\")</"
+"literal> 返回 <literal>helloAction</literal> 组件的一个代理,或 \"stub\"。我"
+"们可以用这个 stub 调用组件的方法,也就是此行后面的部分:<literal>sayHello"
+"(name, sayHelloCallback);</literal>。"
+
+#. Tag: para
+#: Remoting.xml:62
+#, no-c-format
+msgid ""
+"What this line of code in its completeness does, is invoke the "
+"<literal>sayHello</literal> method of our component, passing in "
+"<literal>name</literal> as a parameter. The second parameter, "
+"<literal>sayHelloCallback</literal> isn&#39;t a parameter of our "
+"component&#39;s <literal>sayHello</literal> method, instead it tells the "
+"Seam Remoting framework that once it receives the response to our request, "
+"it should pass it to the <literal>sayHelloCallback</literal> Javascript "
+"method. This callback parameter is entirely optional, so feel free to leave "
+"it out if you&#39;re calling a method with a <literal>void</literal> return "
+"type or if you don&#39;t care about the result."
+msgstr ""
+"这一整行所做的就是调用组件的 <literal>sayHello</literal> 方法,且传入参数 "
+"<literal>name</literal>。第二个参数 <literal>sayHelloCallback</literal>,并不"
+"是 <literal>sayHello</literal> 方法的参数,它的作用是告诉 Seam Remoting 框"
+"架,一旦它接收到了对请求的响应,它应该把响应传给 <literal>sayHelloCallback</"
+"literal> Javascript 方法。这个回调参数是完全可选的,所以如果你调用返回类型为 "
+"<literal>void</literal> 的方法或你并不在乎返回值时,你可以省去不管。 "
+
+#. Tag: para
+#: Remoting.xml:65
+#, no-c-format
+msgid ""
+"The <literal>sayHelloCallback</literal> method, once receiving the response "
+"to our remote request then pops up an alert message displaying the result of "
+"our method call."
+msgstr ""
+"<literal>sayHelloCallback</literal> 方法,一旦接收了对我们的远程请求的响应,"
+"它将弹出一个警告消息框来显示调用的结果。"
+
+#. Tag: title
+#: Remoting.xml:68
+#, no-c-format
+msgid "Seam.Component"
+msgstr "Seam.Component"
+
+#. Tag: para
+#: Remoting.xml:69
+#, no-c-format
+msgid ""
+"The <literal>Seam.Component</literal> Javascript object provides a number of "
+"client-side methods for working with your Seam components. The two main "
+"methods, <literal>newInstance()</literal> and <literal>getInstance()</"
+"literal> are documented in the following sections however their main "
+"difference is that <literal>newInstance()</literal> will always create a new "
+"instance of a component type, and <literal>getInstance()</literal> will "
+"return a singleton instance."
+msgstr ""
+"<literal>Seam.Component</literal> Javascript 对象通过了大量的和 Seam 组件一起"
+"使用的客户端方法。两个主要的方法,<literal>newInstance()</literal> 和 "
+"<literal>getInstance()</literal> 都会在后面的章节进行介绍,它们的主要区别是:"
+"<literal>newInstance()</literal> 将总是创建一个组件类型的新实例,而 "
+"<literal>getInstance()</literal> 将返回单例实例。"
+
+#. Tag: title
+#: Remoting.xml:72
+#, no-c-format
+msgid "Seam.Component.newInstance()"
+msgstr "Seam.Component.newInstance()"
+
+#. Tag: para
+#: Remoting.xml:73
+#, no-c-format
+msgid ""
+"Use this method to create a new instance of an entity or Javabean component. "
+"The object returned by this method will have the same getter/setter methods "
+"as its server-side counterpart, or alternatively if you wish you can access "
+"its fields directly. Take the following Seam entity component for example:"
+msgstr ""
+"使用这个方法来创建实体或 Javabean 组件的新实例。它返回的对象将具有和其服务端"
+"副本相同的 getter/setter 方法,或者如果你愿意你也可以直接访问它的属性。以下面"
+"的 Seam 实体组件为例:"
+
+#. Tag: programlisting
+#: Remoting.xml:76
+#, no-c-format
+msgid ""
+"@Name(\"customer\")\n"
+"  @Entity\n"
+"  public class Customer implements Serializable\n"
+"  {\n"
+"    private Integer customerId;\n"
+"    private String firstName;\n"
+"    private String lastName;\n"
+"    \n"
+"    @Column public Integer getCustomerId() { \n"
+"      return customerId; \n"
+"    }\n"
+"    \n"
+"    public void setCustomerId(Integer customerId} { \n"
+"      this.customerId = customerId; \n"
+"    }\n"
+"    \n"
+"    @Column public String getFirstName() { \n"
+"      return firstName; \n"
+"    }\n"
+"    \n"
+"    public void setFirstName(String firstName) {\n"
+"      this.firstName = firstName; \n"
+"    }\n"
+"    \n"
+"    @Column public String getLastName() {\n"
+"      return lastName;\n"
+"    }\n"
+"    \n"
+"    public void setLastName(String lastName) {\n"
+"      this.lastName = lastName;\n"
+"    }\n"
+"  }"
+msgstr ""
+"@Name(\"customer\")\n"
+"  @Entity\n"
+"  public class Customer implements Serializable\n"
+"  {\n"
+"    private Integer customerId;\n"
+"    private String firstName;\n"
+"    private String lastName;\n"
+"    \n"
+"    @Column public Integer getCustomerId() { \n"
+"      return customerId; \n"
+"    }\n"
+"    \n"
+"    public void setCustomerId(Integer customerId} { \n"
+"      this.customerId = customerId; \n"
+"    }\n"
+"    \n"
+"    @Column public String getFirstName() { \n"
+"      return firstName; \n"
+"    }\n"
+"    \n"
+"    public void setFirstName(String firstName) {\n"
+"      this.firstName = firstName; \n"
+"    }\n"
+"    \n"
+"    @Column public String getLastName() {\n"
+"      return lastName;\n"
+"    }\n"
+"    \n"
+"    public void setLastName(String lastName) {\n"
+"      this.lastName = lastName;\n"
+"    }\n"
+"  }"
+
+#. Tag: para
+#: Remoting.xml:77
+#, no-c-format
+msgid "To create a client-side Customer you would write the following code:"
+msgstr "要创建一个客户端 Customer,你可以编写下面的代码:"
+
+#. Tag: programlisting
+#: Remoting.xml:80
+#, no-c-format
+msgid "var customer = Seam.Component.newInstance(\"customer\");"
+msgstr "var customer = Seam.Component.newInstance(\"customer\");"
+
+#. Tag: para
+#: Remoting.xml:81
+#, no-c-format
+msgid "Then from here you can set the fields of the customer object:"
+msgstr "然后你可以设置这个 customer 对象的属性:"
+
+#. Tag: programlisting
+#: Remoting.xml:84
+#, no-c-format
+msgid ""
+"customer.setFirstName(\"John\");\n"
+"  // Or you can set the fields directly\n"
+"  customer.lastName = \"Smith\";"
+msgstr ""
+"customer.setFirstName(\"John\");\n"
+"  // Or you can set the fields directly\n"
+"  customer.lastName = \"Smith\";"
+
+#. Tag: title
+#: Remoting.xml:85
+#, no-c-format
+msgid "Seam.Component.getInstance()"
+msgstr "Seam.Component.getInstance()"
+
+#. Tag: para
+#: Remoting.xml:86
+#, no-c-format
+msgid ""
+"The <literal>getInstance()</literal> method is used to get a reference to a "
+"Seam session bean component stub, which can then be used to remotely execute "
+"methods against your component. This method returns a singleton for the "
+"specified component, so calling it twice in a row with the same component "
+"name will return the same instance of the component."
+msgstr ""
+"<literal>getInstance()</literal> 方法被用来获取对 Seam session bean 的组件 "
+"stub 的引用,然后你就可以用这个引用远程执行组件的方法。这个方法返回指定组件的"
+"单例实例,所以即使在同一行里用相同的组件名调用两次,它也会返回同一组件实例。"
+
+#. Tag: para
+#: Remoting.xml:89
+#, no-c-format
+msgid ""
+"To continue our example from before, if we have created a new "
+"<literal>customer</literal> and we now wish to save it, we would pass it to "
+"the <literal>saveCustomer()</literal> method of our <literal>customerAction</"
+"literal> component:"
+msgstr ""
+"让我们继续这个例子。如果我们已经创建了一个新的 <literal>customer</literal>,"
+"且现在我们想要保存它,我们可以把它传入 <literal>customerAction</literal> 组件"
+"的 <literal>saveCustomer()</literal> 方法。"
+
+#. Tag: programlisting
+#: Remoting.xml:92
+#, no-c-format
+msgid "Seam.Component.getInstance(\"customerAction\").saveCustomer(customer);"
+msgstr "Seam.Component.getInstance(\"customerAction\").saveCustomer(customer);"
+
+#. Tag: title
+#: Remoting.xml:93
+#, no-c-format
+msgid "Seam.Component.getComponentName()"
+msgstr "Seam.Component.getComponentName()"
+
+#. Tag: para
+#: Remoting.xml:94
+#, no-c-format
+msgid ""
+"Passing an object into this method will return its component name if it is a "
+"component, or <literal>null</literal> if it is not."
+msgstr ""
+"如果传入这个方法的对象是一个组件,它将返回其组件名称,如果不是组件,则返回 "
+"<literal>null</literal>。"
+
+#. Tag: programlisting
+#: Remoting.xml:97
+#, no-c-format
+msgid ""
+"if (Seam.Component.getComponentName(instance) == \"customer\")\n"
+"    alert(\"Customer\");\n"
+"  else if (Seam.Component.getComponentName(instance) == \"staff\")\n"
+"    alert(\"Staff member\");"
+msgstr ""
+"if (Seam.Component.getComponentName(instance) == \"customer\")\n"
+"    alert(\"Customer\");\n"
+"  else if (Seam.Component.getComponentName(instance) == \"staff\")\n"
+"    alert(\"Staff member\");"
+
+#. Tag: title
+#: Remoting.xml:98
+#, no-c-format
+msgid "Seam.Remoting"
+msgstr "Seam.Remoting"
+
+#. Tag: para
+#: Remoting.xml:99
+#, no-c-format
+msgid ""
+"Most of the client side functionality for Seam Remoting is contained within "
+"the <literal>Seam.Remoting</literal> object. While you shouldn&#39;t need to "
+"directly call most of its methods, there are a couple of important ones "
+"worth mentioning."
+msgstr ""
+"<literal>Seam.Remoting</literal> 对象包含了 Seam Remoting 的大部分客户端功"
+"能。虽然你应该不需要直接调用其大多数方法,但是有一些重要的方法还是需要提及。 "
+
+#. Tag: title
+#: Remoting.xml:102
+#, no-c-format
+msgid "Seam.Remoting.createType()"
+msgstr "Seam.Remoting.createType()"
+
+#. Tag: para
+#: Remoting.xml:103
+#, no-c-format
+msgid ""
+"If your application contains or uses Javabean classes that aren&#39;t Seam "
+"components, you may need to create these types on the client side to pass as "
+"parameters into your component method. Use the <literal>createType()</"
+"literal> method to create an instance of your type. Pass in the fully "
+"qualified Java class name as a parameter:"
+msgstr ""
+"如果你的应用程序包含或使用了非 Seam 组件的 Javabean 类,你可能需要在客户端创"
+"建这些类型并作为参数传入组件的方法。使用 <literal>createType()</literal> 方法"
+"可以创建某个类型的实例。把全限定 Java 类名作为参数传入: "
+
+#. Tag: programlisting
+#: Remoting.xml:106
+#, no-c-format
+msgid "var widget = Seam.Remoting.createType(\"com.acme.widgets.MyWidget\");"
+msgstr "var widget = Seam.Remoting.createType(\"com.acme.widgets.MyWidget\");"
+
+#. Tag: title
+#: Remoting.xml:107
+#, no-c-format
+msgid "Seam.Remoting.getTypeName()"
+msgstr "Seam.Remoting.getTypeName()"
+
+#. Tag: para
+#: Remoting.xml:108
+#, no-c-format
+msgid ""
+"This method is the equivalent of <literal>Seam.Component.getComponentName()</"
+"literal> but for non-component types. It will return the name of the type "
+"for an object instance, or <literal>null</literal> if the type is not known. "
+"The name is the fully qualified name of the type&#39;s Java class."
+msgstr ""
+"这个方法和 <literal>Seam.Component.getComponentName()</literal> 相同,但它用"
+"于非组件类型。它将返回一个对象实例的类型名称,如果类型未知则返回 "
+"<literal>null</literal>。其返回值是该类型的 Java 类的全限定名。 "
+
+#. Tag: title
+#: Remoting.xml:111
+#, no-c-format
+msgid "Client Interfaces"
+msgstr "客户接口"
+
+#. Tag: para
+#: Remoting.xml:112
+#, no-c-format
+msgid ""
+"In the configuration section above, the interface, or \"stub\" for our "
+"component is imported into our page via <literal>seam/resource/remoting/"
+"interface.js</literal>:"
+msgstr ""
+"在上面的配置部分,接口,或者说是组件的 \"stub\" 通过 <literal>seam/resource/"
+"remoting/interface.js</literal> 导入到页面里:"
+
+#. Tag: programlisting
+#: Remoting.xml:115
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?customerAction\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?customerAction\"&gt;\n"
+"  &lt;/script&gt;"
+
+#. Tag: para
+#: Remoting.xml:116
+#, no-c-format
+msgid ""
+"By including this script in our page, the interface definitions for our "
+"component, plus any other components or types that are required to execute "
+"the methods of our component are generated and made available for the "
+"remoting framework to use."
+msgstr ""
+"在我们的页面里包含这个脚本,组件的接口定义、以及其他执行组件方法所必需的组件"
+"或类型都被生成且可以被 remoting 框架所使用。"
+
+#. Tag: para
+#: Remoting.xml:119
+#, no-c-format
+msgid ""
+"There are two types of client stub that can be generated, \"executable\" "
+"stubs and \"type\" stubs. Executable stubs are behavioural, and are used to "
+"execute methods against your session bean components, while type stubs "
+"contain state and represent the types that can be passed in as parameters or "
+"returned as a result."
+msgstr ""
+"有两种客户端 stub 可以被生成,可执行(executable)stub 和类型(type)stub。可"
+"执行 stub 是具有行为的,可以用来执行 session bean 组件的方法;类型 stub 包含"
+"状态并代表可以作为参数传递或返回值的类型。"
+
+#. Tag: para
+#: Remoting.xml:122
+#, no-c-format
+msgid ""
+"The type of client stub that is generated depends on the type of your Seam "
+"component. If the component is a session bean, then an executable stub will "
+"be generated, otherwise if it&#39;s an entity or JavaBean, then a type stub "
+"will be generated. There is one exception to this rule; if your component is "
+"a JavaBean (ie it is not a session bean nor an entity bean) and any of its "
+"methods are annotated with @WebRemote, then an executable stub will be "
+"generated for it instead of a type stub. This allows you to use remoting to "
+"call methods of your JavaBean components in a non-EJB environment where you "
+"don&#39;t have access to session beans."
+msgstr ""
+"生成哪种客户端 stub 类型是根据你的组件类型而定的。如果组件是 session bean,可"
+"执行 stub 将被生成,或者如果该组件是实体或 JavaBean,类型 stub 将被生成。这个"
+"规则有一个特例:如果你的组件是一个 JavaBean(也就是非 session bean 或 entity "
+"bean)且它的所有方法都用 @WebRemote 进行了注解,此时将生成可执行 stub 而不是"
+"类型 stub。这允许你在非 EJB 环境(不需要访问 session bean)里使用 remoting 调"
+"用 JavaBean 组件的方法。 "
+
+#. Tag: title
+#: Remoting.xml:125
+#, no-c-format
+msgid "The Context"
+msgstr "Seam Remoting Context"
+
+#. Tag: para
+#: Remoting.xml:126
+#, no-c-format
+msgid ""
+"The Seam Remoting Context contains additional information which is sent and "
+"received as part of a remoting request/response cycle. At this stage it only "
+"contains the conversation ID but may be expanded in the future."
+msgstr ""
+"Seam Remoting Context 包含作为 remoting 请求/响应周期一部分的其他信息。目前它"
+"只包含 conversation ID 但以后可能会扩充。"
+
+#. Tag: title
+#: Remoting.xml:129
+#, no-c-format
+msgid "Setting and reading the Conversation ID"
+msgstr "设置和读取 Conversation ID"
+
+#. Tag: para
+#: Remoting.xml:130
+#, no-c-format
+msgid ""
+"If you intend on using remote calls within the scope of a conversation then "
+"you need to be able to read or set the conversation ID in the Seam Remoting "
+"Context. To read the conversation ID after making a remote request call "
+"<literal>Seam.Remoting.getContext().getConversationId()</literal>. To set "
+"the conversation ID before making a request, call <literal>Seam.Remoting."
+"getContext().setConversationId()</literal>."
+msgstr ""
+"如果你想在 conversation 的作用域内使用远程调用,你需要能够读取或设置 Seam "
+"Remoting Context 里的 conversation ID。要在进行远程请求之后读取 conversation "
+"ID,可以调用<literal>Seam.Remoting.getContext().getConversationId()</"
+"literal>。要在请求之前设置 conversation ID,可以调用 <literal>Seam.Remoting."
+"getContext().setConversationId()</literal>。"
+
+#. Tag: para
+#: Remoting.xml:133
+#, no-c-format
+msgid ""
+"If the conversation ID hasn&#39;t been explicitly set with <literal>Seam."
+"Remoting.getContext().setConversationId()</literal>, then it will be "
+"automatically assigned the first valid conversation ID that is returned by "
+"any remoting call. If you are working with multiple conversations within "
+"your page, then you may need to explicitly set the conversation ID before "
+"each call. If you are working with just a single conversation, then you "
+"don&#39;t need to do anything special."
+msgstr ""
+"如果没有用 <literal>Seam.Remoting.getContext().setConversationId()</literal> "
+"显性地设置 conversation ID,远程调用将自动地返回一个有效的 conversation ID。"
+"如果你在页面里使用了多个 conversation,你可能需要在每次调用之前显性地设置 "
+"conversation ID。而如果你只使用了一个 conversation,你就不需要这么做。 "
+
+#. Tag: title
+#: Remoting.xml:137
+#, no-c-format
+msgid "Batch Requests"
+msgstr "批量请求"
+
+#. Tag: para
+#: Remoting.xml:138
+#, no-c-format
+msgid ""
+"Seam Remoting allows multiple component calls to be executed within a single "
+"request. It is recommended that this feature is used wherever it is "
+"appropriate to reduce network traffic."
+msgstr ""
+"Seam Remoting 允许在单一请求里执行多个组件调用。我们推荐在需要降低网络负载时"
+"使用这个特征。"
+
+#. Tag: para
+#: Remoting.xml:141
+#, no-c-format
+msgid ""
+"The method <literal>Seam.Remoting.startBatch()</literal> will start a new "
+"batch, and any component calls executed after starting a batch are queued, "
+"rather than being sent immediately. When all the desired component calls "
+"have been added to the batch, the <literal>Seam.Remoting.executeBatch()</"
+"literal> method will send a single request containing all of the queued "
+"calls to the server, where they will be executed in order. After the calls "
+"have been executed, a single response containining all return values will be "
+"returned to the client and the callback functions (if provided) triggered in "
+"the same order as execution."
+msgstr ""
+"<literal>Seam.Remoting.startBatch()</literal> 方法将启动一个新的批次,之后执"
+"行的任何组件调用都将进行排队,而不是马上被发送。当所有请求的组件调用都已经被"
+"加入到这个批次时,<literal>Seam.Remoting.executeBatch()</literal> 将向服务器"
+"发送一个包含所有排队的调用的单一请求,然后它们将按顺序执行。在所有调用都被执"
+"行了以后,一个包含所有返回值的响应将返回给客户且回调功能(如果提供的话)将按"
+"相同的顺序触发。"
+
+#. Tag: para
+#: Remoting.xml:144
+#, no-c-format
+msgid ""
+"If you start a new batch via the <literal>startBatch()</literal> method but "
+"then decide you don&#39;t want to send it, the <literal>Seam.Remoting."
+"cancelBatch()</literal> method will discard any calls that were queued and "
+"exit the batch mode."
+msgstr ""
+"如果你通过 <literal>startBatch()</literal> 方法启动了一个新的批次,但后来又不"
+"想发送它了,你可以使用 <literal>Seam.Remoting.cancelBatch()</literal> 方法来"
+"取消已排队的调用并退出批量模式。 "
+
+#. Tag: para
+#: Remoting.xml:147
+#, no-c-format
+msgid ""
+"To see an example of a batch being used, take a look at <literal>/examples/"
+"remoting/chatroom</literal>."
+msgstr ""
+"你可以参考 <literal>/examples/remoting/chatroom</literal> 里的批量调用的示"
+"例。"
+
+#. Tag: title
+#: Remoting.xml:150
+#, no-c-format
+msgid "Working with Data types"
+msgstr "使用数据类型"
+
+#. Tag: title
+#: Remoting.xml:151
+#, no-c-format
+msgid "Primitives / Basic Types"
+msgstr "原始类型(Primitive)/基本类型"
+
+#. Tag: para
+#: Remoting.xml:152
+#, no-c-format
+msgid ""
+"This section describes the support for basic data types. On the server side "
+"these values are generally compatible with either their primitive type or "
+"their corresponding wrapper class."
+msgstr ""
+"本节描述对基本数据类型的支持。在服务器端,这些值通常和它们的原始类型或对应的"
+"封装类(wrapper class)兼容。"
+
+#. Tag: title
+#: Remoting.xml:155
+#, no-c-format
+msgid "String"
+msgstr "String"
+
+#. Tag: para
+#: Remoting.xml:156
+#, no-c-format
+msgid ""
+"Simply use Javascript String objects when setting String parameter values."
+msgstr "在设置 String 参数值时可以简单地使用 Javascript String 对象。"
+
+#. Tag: title
+#: Remoting.xml:159
+#, no-c-format
+msgid "Number"
+msgstr "Number"
+
+#. Tag: para
+#: Remoting.xml:160
+#, no-c-format
+msgid ""
+"There is support for all number types supported by Java. On the client side, "
+"number values are always serialized as their String representation and then "
+"on the server side they are converted to the correct destination type. "
+"Conversion into either a primitive or wrapper type is supported for "
+"<literal>Byte</literal>, <literal>Double</literal>, <literal>Float</"
+"literal>, <literal>Integer</literal>, <literal>Long</literal> and "
+"<literal>Short</literal> types."
+msgstr ""
+"Java 所支持的所有数值类型都被支持。在客户端,数值总是作为 String 形式串行化,"
+"然后在服务器端再被转换为正确的目标类型。<literal>Byte</literal>、"
+"<literal>Double</literal>、<literal>Float</literal>、<literal>Integer</"
+"literal>、<literal>Long</literal> 和 <literal>Short</literal> 都支持到原始类"
+"型或封装类型的转换。"
+
+#. Tag: title
+#: Remoting.xml:163
+#, no-c-format
+msgid "Boolean"
+msgstr "Boolean"
+
+#. Tag: para
+#: Remoting.xml:164
+#, no-c-format
+msgid ""
+"Booleans are represented client side by Javascript Boolean values, and "
+"server side by a Java boolean."
+msgstr ""
+"客户端由 Javascript Boolean 值代表 Boolean,而服务器端采用 Java boolean 类"
+"型。"
+
+#. Tag: title
+#: Remoting.xml:167
+#, no-c-format
+msgid "JavaBeans"
+msgstr "JavaBeans"
+
+#. Tag: para
+#: Remoting.xml:168
+#, no-c-format
+msgid ""
+"In general these will be either Seam entity or JavaBean components, or some "
+"other non-component class. Use the appropriate method (either <literal>Seam."
+"Component.newInstance()</literal> for Seam components or <literal>Seam."
+"Remoting.createType()</literal> for everything else) to create a new "
+"instance of the object."
+msgstr ""
+"通常这是 Seam entity 或 JavaBean 组件,或者其他的非组件类。使用合适的方法(用"
+"于 Seam 组件的 <literal>Seam.Component.newInstance()</literal> 或用于其他任何"
+"类型的 <literal>Seam.Remoting.createType()</literal>)来创建这个对象的一个新"
+"的实例。"
+
+#. Tag: para
+#: Remoting.xml:171
+#, no-c-format
+msgid ""
+"It is important to note that only objects that are created by either of "
+"these two methods should be used as parameter values, where the parameter is "
+"not one of the other valid types mentioned anywhere else in this section. In "
+"some situations you may have a component method where the exact parameter "
+"type cannot be determined, such as:"
+msgstr ""
+"请注意,只有通过这两个方法中的一个创建的对象才应该作为参数值使用,这里的参数"
+"不是本节提及的其他有效类型。在某些情况下,你可能遇到一个组件方法而不能决定它"
+"的确切参数类型,如:"
+
+#. Tag: programlisting
+#: Remoting.xml:174
+#, no-c-format
+msgid ""
+"@Name(\"myAction\")\n"
+"  public class MyAction implements MyActionLocal {\n"
+"    public void doSomethingWithObject(Object obj) {\n"
+"      // code\n"
+"    }\n"
+"  }"
+msgstr ""
+"@Name(\"myAction\")\n"
+"  public class MyAction implements MyActionLocal {\n"
+"    public void doSomethingWithObject(Object obj) {\n"
+"      // code\n"
+"    }\n"
+"  }"
+
+#. Tag: para
+#: Remoting.xml:175
+#, no-c-format
+msgid ""
+"In this case you might want to pass in an instance of your "
+"<literal>myWidget</literal> component, however the interface for "
+"<literal>myAction</literal> won&#39;t include <literal>myWidget</literal> as "
+"it is not directly referenced by any of its methods. To get around this, "
+"<literal>MyWidget</literal> needs to be explicitly imported:"
+msgstr ""
+"在这种情况下,你可能想传入 <literal>myWidget</literal> 组件的一个实例,然而 "
+"<literal>myAction</literal> 的接口并没有包括 <literal>myWidget</literal>,因"
+"为它没有被任何接口方法直接引用。要解决这个问题,你必须显性地导入 "
+"<literal>MyWidget</literal>: "
+
+#. Tag: programlisting
+#: Remoting.xml:178
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?myAction&amp;myWidget\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?myAction&amp;myWidget\"&gt;\n"
+"  &lt;/script&gt;"
+
+#. Tag: para
+#: Remoting.xml:179
+#, no-c-format
+msgid ""
+"This will then allow a <literal>myWidget</literal> object to be created with "
+"<literal>Seam.Component.newInstance(\"myWidget\")</literal>, which can then "
+"be passed to <literal>myAction.doSomethingWithObject()</literal>."
+msgstr ""
+"这将允许用 <literal>Seam.Component.newInstance(\"myWidget\")</literal> 创建一"
+"个 <literal>myWidget</literal> 对象,然后传入 <literal>myAction."
+"doSomethingWithObject()</literal>。"
+
+#. Tag: title
+#: Remoting.xml:182
+#, no-c-format
+msgid "Dates and Times"
+msgstr "日期和时间"
+
+#. Tag: para
+#: Remoting.xml:183
+#, no-c-format
+msgid ""
+"Date values are serialized into a String representation that is accurate to "
+"the millisecond. On the client side, use a Javascript Date object to work "
+"with date values. On the server side, use any <literal>java.util.Date</"
+"literal> (or descendent, such as <literal>java.sql.Date</literal> or "
+"<literal>java.sql.Timestamp</literal> class."
+msgstr ""
+"日期值以 String 类型串行化且精确到毫秒。在客户端,可以用 Javascript Date 对象"
+"处理日期值。而在服务器端,可以使用任何 <literal>java.util.Date</literal>(或"
+"其子类 <literal>java.sql.Date</literal> 或 <literal>java.sql.Timestamp</"
+"literal> )。"
+
+#. Tag: title
+#: Remoting.xml:186
+#, no-c-format
+msgid "Enums"
+msgstr "Enums"
+
+#. Tag: para
+#: Remoting.xml:187
+#, no-c-format
+msgid ""
+"On the client side, enums are treated the same as Strings. When setting the "
+"value for an enum parameter, simply use the String representation of the "
+"enum. Take the following component as an example:"
+msgstr ""
+"客户端的 enum 作为 String 类型处理。当设置 enum 参数的值时,简单地使用 "
+"String 就可以了。以下面的组件为例:"
+
+#. Tag: programlisting
+#: Remoting.xml:190
+#, no-c-format
+msgid ""
+"@Name(\"paintAction\")\n"
+"  public class paintAction implements paintLocal {\n"
+"    public enum Color {red, green, blue, yellow, orange, purple};\n"
+"\n"
+"    public void paint(Color color) {\n"
+"      // code\n"
+"    }    \n"
+"  }"
+msgstr ""
+"@Name(\"paintAction\")\n"
+"  public class paintAction implements paintLocal {\n"
+"    public enum Color {red, green, blue, yellow, orange, purple};\n"
+"\n"
+"    public void paint(Color color) {\n"
+"      // code\n"
+"    }    \n"
+"  }"
+
+#. Tag: para
+#: Remoting.xml:191
+#, no-c-format
+msgid ""
+"To call the <literal>paint()</literal> method with the color <literal>red</"
+"literal>, pass the parameter value as a String literal:"
+msgstr ""
+"要以颜色 <literal>red</literal> 调用 <literal>paint()</literal> 方法,只要把 "
+"String 值作为参数传入:"
+
+#. Tag: programlisting
+#: Remoting.xml:194
+#, no-c-format
+msgid "Seam.Component.getInstance(\"paintAction\").paint(\"red\");"
+msgstr "Seam.Component.getInstance(\"paintAction\").paint(\"red\");"
+
+#. Tag: para
+#: Remoting.xml:195
+#, no-c-format
+msgid ""
+"The inverse is also true - that is, if a component method returns an enum "
+"parameter (or contains an enum field anywhere in the returned object graph) "
+"then on the client-side it will be represented as a String."
+msgstr ""
+"反之亦然 - 如果组件方法返回一个 enum 参数(或返回的对象里包含 enum 字段),在"
+"客户端可以将它当作 String 处理。"
+
+#. Tag: title
+#: Remoting.xml:198
+#, no-c-format
+msgid "Collections"
+msgstr "Collections"
+
+#. Tag: title
+#: Remoting.xml:199
+#, no-c-format
+msgid "Bags"
+msgstr "Bag"
+
+#. Tag: para
+#: Remoting.xml:200
+#, no-c-format
+msgid ""
+"Bags cover all collection types including arrays, collections, lists, sets, "
+"(but excluding Maps - see the next section for those), and are implemented "
+"client-side as a Javascript array. When calling a component method that "
+"accepts one of these types as a parameter, your parameter should be a "
+"Javascript array. If a component method returns one of these types, then the "
+"return value will also be a Javascript array. The remoting framework is "
+"clever enough on the server side to convert the bag to an appropriate type "
+"for the component method call."
+msgstr ""
+"Bag 涵盖所有的集合类型如 array、collection、lists、set(但不包括 Map - 参看后"
+"一部分的内容),且在客户端作为 Javascript array 实现。当调用一个以这些类型为"
+"参数的组件方法时,这个参数应该是 Javascript array 类型。如果组件方法返回这些"
+"类型,返回值将也是一个 Javascript array。服务器端的 Remoting 框架足够聪明,它"
+"会为组件方法调用把 Bag 转换成合适的类型。"
+
+#. Tag: title
+#: Remoting.xml:203
+#, no-c-format
+msgid "Maps"
+msgstr "Map"
+
+#. Tag: para
+#: Remoting.xml:204
+#, no-c-format
+msgid ""
+"As there is no native support for Maps within Javascript, a simple Map "
+"implementation is provided with the Seam Remoting framework. To create a Map "
+"which can be used as a parameter to a remote call, create a new "
+"<literal>Seam.Remoting.Map</literal> object:"
+msgstr ""
+"因为 Javascript 本身不支持 Map,所以 Seam Remoting 框架提供了简单的 Map 实"
+"现。要创建一个可以作为远程调用的参数的 Map,可以创建一个 <literal>Seam."
+"Remoting.Map</literal> 对象:"
+
+#. Tag: programlisting
+#: Remoting.xml:207
+#, no-c-format
+msgid "var map = new Seam.Remoting.Map();"
+msgstr "var map = new Seam.Remoting.Map();"
+
+#. Tag: para
+#: Remoting.xml:208
+#, no-c-format
+msgid ""
+"This Javascript implementation provides basic methods for working with Maps: "
+"<literal>size()</literal>, <literal>isEmpty()</literal>, <literal>keySet()</"
+"literal>, <literal>values()</literal>, <literal>get(key)</literal>, "
+"<literal>put(key, value)</literal>, <literal>remove(key)</literal> and "
+"<literal>contains(key)</literal>. Each of these methods are equivalent to "
+"their Java counterpart. Where the method returns a collection, such as "
+"<literal>keySet()</literal> and <literal>values()</literal>, a Javascript "
+"Array object will be returned that contains the key or value objects "
+"(respectively)."
+msgstr ""
+"这个 Javascript 实现提供了简单的 Map 方法:<literal>size()</literal>、 "
+"<literal>isEmpty()</literal>、<literal>keySet()</literal>、<literal>values()"
+"</literal>、<literal>get(key)</literal>、<literal>put(key, value)</literal>、"
+"<literal>remove(key)</literal> 和 <literal>contains(key)</literal>。每个方法"
+"都和 Java 里的相对应。如果某个方法返回一个集合,如 <literal>keySet()</"
+"literal> 和 <literal>values()</literal> 对,包含键和值对象的 Javascript "
+"Array 对象将被返回(分别地)。"
+
+#. Tag: title
+#: Remoting.xml:211
+#, no-c-format
+msgid "Debugging"
+msgstr "调试"
+
+#. Tag: para
+#: Remoting.xml:212
+#, no-c-format
+msgid ""
+"To aid in tracking down bugs, it is possible to enable a debug mode which "
+"will display the contents of all the packets send back and forth between the "
+"client and server in a popup window. To enable debug mode, either execute "
+"the <literal>setDebug()</literal> method in Javascript:"
+msgstr ""
+"为了跟踪程序错误,我们可以启用调试模式,在弹出的窗口里显示在客户和服务器之间"
+"来回传输的所有数据包的内容。要启用调试模式,你可以执行 Javascript 的 "
+"<literal>setDebug()</literal> 方法:"
+
+#. Tag: programlisting
+#: Remoting.xml:215
+#, no-c-format
+msgid "Seam.Remoting.setDebug(true);"
+msgstr "Seam.Remoting.setDebug(true);"
+
+#. Tag: para
+#: Remoting.xml:216
+#, no-c-format
+msgid "Or configure it via components.xml:"
+msgstr "或者通过 components.xml 进行配置:"
+
+#. Tag: programlisting
+#: Remoting.xml:219
+#, no-c-format
+msgid "&lt;remoting:remoting debug=\"true\"/&gt;"
+msgstr "&lt;remoting:remoting debug=\"true\"/&gt;"
+
+#. Tag: para
+#: Remoting.xml:220
+#, no-c-format
+msgid ""
+"To turn off debugging, call <literal>setDebug(false)</literal>. If you want "
+"to write your own messages to the debug log, call <literal>Seam.Remoting.log"
+"(message)</literal>."
+msgstr ""
+"要关闭调试信息,可以调用 <literal>setDebug(false)</literal>。如果你想在调试日"
+"志里写入自己的消息,可以调用 <literal>Seam.Remoting.log(message)</literal>。"
+
+#. Tag: title
+#: Remoting.xml:223
+#, no-c-format
+msgid "The Loading Message"
+msgstr "加载消息"
+
+#. Tag: para
+#: Remoting.xml:224
+#, no-c-format
+msgid ""
+"The default loading message that appears in the top right corner of the "
+"screen can be modified, its rendering customised or even turned off "
+"completely."
+msgstr ""
+"你可以对在屏幕右上角出现的缺省的加载消息进行修改、自定义其显示模式、甚至完全"
+"取消它。"
+
+#. Tag: title
+#: Remoting.xml:227
+#, no-c-format
+msgid "Changing the message"
+msgstr "修改加载消息"
+
+#. Tag: para
+#: Remoting.xml:228
+#, no-c-format
+msgid ""
+"To change the message from the default \"Please Wait...\" to something "
+"different, set the value of <literal>Seam.Remoting.loadingMessage</literal>:"
+msgstr ""
+"要修改缺省的 \"Please Wait...\" 消息,可以设置 <literal>Seam.Remoting."
+"loadingMessage</literal> 值:"
+
+#. Tag: programlisting
+#: Remoting.xml:231
+#, no-c-format
+msgid "Seam.Remoting.loadingMessage = \"Loading...\";"
+msgstr "Seam.Remoting.loadingMessage = \"Loading...\";"
+
+#. Tag: title
+#: Remoting.xml:232
+#, no-c-format
+msgid "Hiding the loading message"
+msgstr "隐藏加载消息"
+
+#. Tag: para
+#: Remoting.xml:233
+#, no-c-format
+msgid ""
+"To completely suppress the display of the loading message, override the "
+"implementation of <literal>displayLoadingMessage()</literal> and "
+"<literal>hideLoadingMessage()</literal> with functions that instead do "
+"nothing:"
+msgstr ""
+"要完全忽略加载消息的显示,可以用空函数覆盖 <literal>displayLoadingMessage()</"
+"literal> 和 <literal>hideLoadingMessage()</literal> 的实现:"
+
+#. Tag: programlisting
+#: Remoting.xml:236
+#, no-c-format
+msgid ""
+"// don&#39;t display the loading indicator\n"
+"  Seam.Remoting.displayLoadingMessage = function() {};\n"
+"  Seam.Remoting.hideLoadingMessage = function() {};"
+msgstr ""
+"// don&#39;t display the loading indicator\n"
+"  Seam.Remoting.displayLoadingMessage = function() {};\n"
+"  Seam.Remoting.hideLoadingMessage = function() {};"
+
+#. Tag: title
+#: Remoting.xml:237
+#, no-c-format
+msgid "A Custom Loading Indicator"
+msgstr "自定义的加载指示器(Loading Indicator)"
+
+#. Tag: para
+#: Remoting.xml:238
+#, no-c-format
+msgid ""
+"It is also possible to override the loading indicator to display an animated "
+"icon, or anything else that you want. To do this override the "
+"<literal>displayLoadingMessage()</literal> and <literal>hideLoadingMessage()"
+"</literal> messages with your own implementation:"
+msgstr ""
+"你也可以覆盖加载指示器来显示动画图标、或其他东西。用自己的实现覆盖 "
+"<literal>displayLoadingMessage()</literal> 和 <literal>hideLoadingMessage()</"
+"literal> 可以达到这个目的。"
+
+#. Tag: programlisting
+#: Remoting.xml:241
+#, no-c-format
+msgid ""
+"Seam.Remoting.displayLoadingMessage = function() {\n"
+"    // Write code here to display the indicator\n"
+"  };\n"
+"  \n"
+"  Seam.Remoting.hideLoadingMessage = function() {\n"
+"    // Write code here to hide the indicator\n"
+"  };"
+msgstr ""
+"Seam.Remoting.displayLoadingMessage = function() {\n"
+"    // Write code here to display the indicator\n"
+"  };\n"
+"  \n"
+"  Seam.Remoting.hideLoadingMessage = function() {\n"
+"    // Write code here to hide the indicator\n"
+"  };"
+
+#. Tag: title
+#: Remoting.xml:242
+#, no-c-format
+msgid "Controlling what data is returned"
+msgstr "控制返回的数据"
+
+#. Tag: para
+#: Remoting.xml:243
+#, no-c-format
+msgid ""
+"When a remote method is executed, the result is serialized into an XML "
+"response that is returned to the client. This response is then unmarshaled "
+"by the client into a Javascript object. For complex types (i.e. Javabeans) "
+"that include references to other objects, all of these referenced objects "
+"are also serialized as part of the response. These objects may reference "
+"other objects, which may reference other objects, and so forth. If left "
+"unchecked, this object \"graph\" could potentially be enormous, depending on "
+"what relationships exist between your objects. And as a side issue (besides "
+"the potential verbosity of the response), you might also wish to prevent "
+"sensitive information from being exposed to the client."
+msgstr ""
+"当远程方法被执行时,其结果被串行化为一个 XML 响应并返回给客户端。这个响应然后"
+"被客户端解组(unmarshale)为一个 Javascript 对象。对于还引用其他对象的复杂类"
+"型(如 Javabean),所有这些被引用的对象也都将作为这个响应的一部分进行串行化。"
+"这些对象还可以引用引用了其他对象的对象,诸如此类。如果不经检查,这个对"
+"象“图”可能会非常庞大,这取决于对象之间存在的关系的负复杂度。且作为一个次要问"
+"题(除了这种响应所潜在的冗长性外),你可能也希望不把敏感信息暴露给客户。"
+
+#. Tag: para
+#: Remoting.xml:246
+#, no-c-format
+msgid ""
+"Seam Remoting provides a simple means to \"constrain\" the object graph, by "
+"specifying the <literal>exclude</literal> field of the remote method&#39;s "
+"<literal>@WebRemote</literal> annotation. This field accepts a String array "
+"containing one or more paths specified using dot notation. When invoking a "
+"remote method, the objects in the result&#39;s object graph that match these "
+"paths are excluded from the serialized result packet."
+msgstr ""
+"Seam Remoting 提供了一个简单的方法来“约束”对象图:指定远程方法的 "
+"<literal>@WebRemote</literal> 注解的 <literal>exclude</literal> 字段。这个字"
+"段接受包含一个或多个用句点指定的路径的 String array。当调用一个远程方法时,符"
+"合这些路径的结果的对象图里的对象将从串行化的结果数据包里排除。 "
+
+#. Tag: para
+#: Remoting.xml:249
+#, no-c-format
+msgid ""
+"For all our examples, we&#39;ll use the following <literal>Widget</literal> "
+"class:"
+msgstr "对于所有的例子,我们将使用下面的 <literal>Widget</literal> 类: "
+
+#. Tag: programlisting
+#: Remoting.xml:252
+#, no-c-format
+msgid ""
+"@Name(\"widget\")\n"
+"public class Widget\n"
+"{\n"
+"  private String value;\n"
+"  private String secret;\n"
+"  private Widget child;\n"
+"  private Map&lt;String,Widget&gt; widgetMap;\n"
+"  private List&lt;Widget&gt; widgetList;\n"
+"  \n"
+"  // getters and setters for all fields\n"
+"}"
+msgstr ""
+"@Name(\"widget\")\n"
+"public class Widget\n"
+"{\n"
+"  private String value;\n"
+"  private String secret;\n"
+"  private Widget child;\n"
+"  private Map&lt;String,Widget&gt; widgetMap;\n"
+"  private List&lt;Widget&gt; widgetList;\n"
+"  \n"
+"  // getters and setters for all fields\n"
+"}"
+
+#. Tag: title
+#: Remoting.xml:253
+#, no-c-format
+msgid "Constraining normal fields"
+msgstr "约束普通属性"
+
+#. Tag: para
+#: Remoting.xml:254
+#, no-c-format
+msgid ""
+"If your remote method returns an instance of <literal>Widget</literal>, but "
+"you don&#39;t want to expose the <literal>secret</literal> field because it "
+"contains sensitive information, you would constrain it like this:"
+msgstr ""
+"如果你的远程方法返回一个 <literal>Widget</literal> 实例,但你并不希望开放它"
+"的 <literal>secret</literal> 属性(因为它包含了敏感信息),你可以用下面的方法"
+"进行约束: "
+
+#. Tag: programlisting
+#: Remoting.xml:257
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+"@WebRemote(exclude = {\"secret\"})\n"
+"  public Widget getWidget();"
+
+#. Tag: para
+#: Remoting.xml:258
+#, no-c-format
+msgid ""
+"The value \"secret\" refers to the <literal>secret</literal> field of the "
+"returned object. Now, suppose that we don&#39;t care about exposing this "
+"particular field to the client. Instead, notice that the <literal>Widget</"
+"literal> value that is returned has a field <literal>child</literal> that is "
+"also a <literal>Widget</literal>. What if we want to hide the "
+"<literal>child</literal>&#39;s <literal>secret</literal> value instead? We "
+"can do this by using dot notation to specify this field&#39;s path within "
+"the result&#39;s object graph:"
+msgstr ""
+"\"secret\" 值指的是返回的对象的 <literal>secret</literal> 属性。现在,假设我"
+"们并不在意对客户开放这个特定的属性。而返回的 <literal>Widget</literal> 值带有"
+"一个类型也为 <literal>Widget</literal> 的属性 <literal>child</literal>。如果"
+"我们想隐藏这个 <literal>child</literal> 的 <literal>secret</literal> 值呢?我"
+"们可以使用句点在结果的对象图里来指定这个属性的路径: "
+
+#. Tag: programlisting
+#: Remoting.xml:261
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"child.secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+"@WebRemote(exclude = {\"child.secret\"})\n"
+"  public Widget getWidget();"
+
+#. Tag: title
+#: Remoting.xml:262
+#, no-c-format
+msgid "Constraining Maps and Collections"
+msgstr "约束 Map 和 Collection"
+
+#. Tag: para
+#: Remoting.xml:263
+#, no-c-format
+msgid ""
+"The other place that objects can exist within an object graph are within a "
+"<literal>Map</literal> or some kind of collection (<literal>List</literal>, "
+"<literal>Set</literal>, <literal>Array</literal>, etc). Collections are "
+"easy, and are treated like any other field. For example, if our "
+"<literal>Widget</literal> contained a list of other <literal>Widget</"
+"literal>s in its <literal>widgetList</literal> field, to constrain the "
+"<literal>secret</literal> field of the <literal>Widget</literal>s in this "
+"list the annotation would look like this:"
+msgstr ""
+"另外一个对象可以存在于对象图里的地方是 <literal>Map</literal> 或某种集合"
+"(<literal>List</literal>、<literal>Set</literal>、<literal>Array</literal> "
+"等)里。你可以容易地象其他类型一样处理集合。例如,如果 <literal>Widget</"
+"literal> 的 <literal>widgetList</literal> 属性里包含了其他 <literal>Widget</"
+"literal> 的列表,要限制这个列表里的 <literal>Widget</literal> 的 "
+"<literal>secret</literal> 字段,其注解将类似于:"
+
+#. Tag: programlisting
+#: Remoting.xml:266
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetList.secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+"@WebRemote(exclude = {\"widgetList.secret\"})\n"
+"  public Widget getWidget();"
+
+#. Tag: para
+#: Remoting.xml:267
+#, no-c-format
+msgid ""
+"To constrain a <literal>Map</literal>&#39;s key or value, the notation is "
+"slightly different. Appending <literal>[key]</literal> after the "
+"<literal>Map</literal>&#39;s field name will constrain the <literal>Map</"
+"literal>&#39;s key object values, while <literal>[value]</literal> will "
+"constrain the value object values. The following example demonstrates how "
+"the values of the <literal>widgetMap</literal> field have their "
+"<literal>secret</literal> field constrained:"
+msgstr ""
+"要限制一个 <literal>Map</literal> 的键或者值,标记有少许不同。在 "
+"<literal>Map</literal> 的属性名后附加 <literal>[key]</literal> 将约束 "
+"<literal>Map</literal> 的键对象的值,而 <literal>[value]</literal> 则将约束值"
+"对象的值。下面的例子演示了如何约束 <literal>widgetMap</literal> 属性的 "
+"<literal>secret</literal> 属性: "
+
+#. Tag: programlisting
+#: Remoting.xml:270
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetMap[value].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+"@WebRemote(exclude = {\"widgetMap[value].secret\"})\n"
+"  public Widget getWidget();"
+
+#. Tag: title
+#: Remoting.xml:271
+#, no-c-format
+msgid "Constraining objects of a specific type"
+msgstr "约束特殊类型的对象"
+
+#. Tag: para
+#: Remoting.xml:272
+#, no-c-format
+msgid ""
+"There is one last notation that can be used to constrain the fields of a "
+"type of object no matter where in the result&#39;s object graph it appears. "
+"This notation uses either the name of the component (if the object is a Seam "
+"component) or the fully qualified class name (only if the object is not a "
+"Seam component) and is expressed using square brackets:"
+msgstr ""
+"我们还有最后一个标记,它可以约束在对象图里任何地方出现都没关系的对象的属性。"
+"这个标记使用组件的名称(如果该对象是一个 Seam 组件)或者全限定类名(只有该对"
+"象不是 Seam 组件时)且用方括号表示: "
+
+#. Tag: programlisting
+#: Remoting.xml:275
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"[widget].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+"@WebRemote(exclude = {\"[widget].secret\"})\n"
+"  public Widget getWidget();"
+
+#. Tag: title
+#: Remoting.xml:276
+#, no-c-format
+msgid "Combining Constraints"
+msgstr "组合约束"
+
+#. Tag: para
+#: Remoting.xml:277
+#, no-c-format
+msgid ""
+"Constraints can also be combined, to filter objects from multiple paths "
+"within the object graph:"
+msgstr "你也可以组合约束来根据对象图里的多重路径过滤对象:"
+
+#. Tag: programlisting
+#: Remoting.xml:280
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetList.secret\", \"widgetMap[value].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+"@WebRemote(exclude = {\"widgetList.secret\", \"widgetMap[value].secret\"})\n"
+"  public Widget getWidget();"
+
+#. Tag: title
+#: Remoting.xml:281
+#, no-c-format
+msgid "JMS Messaging"
+msgstr "JMS Messaging"
+
+#. Tag: para
+#: Remoting.xml:282
+#, no-c-format
+msgid ""
+"Seam Remoting provides experimental support for JMS Messaging. This section "
+"describes the JMS support that is currently implemented, but please note "
+"that this may change in the future. It is currently not recommended that "
+"this feature is used within a production environment."
+msgstr ""
+"Seam Remoting 为 JMS Messaging 提供实验性的支持。本节描述目前正在实现的 JMS "
+"支持,但请注意,在将来这可能会更改。目前我们不推荐在产品环境里使用这个特征。"
+
+#. Tag: para
+#: Remoting.xml:286
+#, no-c-format
+msgid ""
+"Before you can subscribe to a JMS topic, you must first configure a list of "
+"the topics that can be subscribed to by Seam Remoting. List the topics under "
+"<literal>org.jboss.seam.remoting.messaging.subscriptionRegistry."
+"allowedTopics</literal> in <literal>seam.properties</literal>, <literal>web."
+"xml</literal> or <literal>components.xml</literal>."
+msgstr ""
+"在你可以订阅 JMS 主题之前,你必须首先配置可以向 Seam Remoting 订阅的主题列"
+"表。将这些主题列在 <literal>seam.properties</literal>、<literal>web.xml</"
+"literal> 或 <literal>components.xml</literal> 的 <literal>org.jboss.seam."
+"remoting.messaging.subscriptionRegistry.allowedTopics</literal> 里。"
+
+#. Tag: programlisting
+#: Remoting.xml:289 Remoting.xml:322
+#, no-c-format
+msgid "&lt;remoting:remoting poll-timeout=\"5\" poll-interval=\"1\"/&gt;"
+msgstr "&lt;remoting:remoting poll-timeout=\"5\" poll-interval=\"1\"/&gt;"
+
+#. Tag: title
+#: Remoting.xml:290
+#, no-c-format
+msgid "Subscribing to a JMS Topic"
+msgstr "订阅 JMS 主题"
+
+#. Tag: para
+#: Remoting.xml:291
+#, no-c-format
+msgid "The following example demonstrates how to subscribe to a JMS Topic:"
+msgstr "下面的例子演示了如何订阅一个 JMS 主题:"
+
+#. Tag: programlisting
+#: Remoting.xml:294
+#, no-c-format
+msgid ""
+"function subscriptionCallback(message)\n"
+"  {\n"
+"    if (message instanceof Seam.Remoting.TextMessage)\n"
+"      alert(\"Received message: \" + message.getText());\n"
+"  }        \n"
+"        \n"
+"  Seam.Remoting.subscribe(\"topicName\", subscriptionCallback);"
+msgstr ""
+"function subscriptionCallback(message)\n"
+"  {\n"
+"    if (message instanceof Seam.Remoting.TextMessage)\n"
+"      alert(\"Received message: \" + message.getText());\n"
+"  }        \n"
+"        \n"
+"  Seam.Remoting.subscribe(\"topicName\", subscriptionCallback);"
+
+#. Tag: para
+#: Remoting.xml:295
+#, no-c-format
+msgid ""
+"The <literal>Seam.Remoting.subscribe()</literal> method accepts two "
+"parameters, the first being the name of the JMS Topic to subscribe to, the "
+"second being the callback function to invoke when a message is received."
+msgstr ""
+"<literal>Seam.Remoting.subscribe()</literal> 方法接受两个参数,第一个是要订阅"
+"的 JMS 主题名,第二个是接收到消息后的回调函数。"
+
+#. Tag: para
+#: Remoting.xml:298
+#, no-c-format
+msgid ""
+"There are two types of messages supported, Text messages and Object "
+"messages. If you need to test for the type of message that is passed to your "
+"callback function you can use the <literal>instanceof</literal> operator to "
+"test whether the message is a <literal>Seam.Remoting.TextMessage</literal> "
+"or <literal>Seam.Remoting.ObjectMessage</literal>. A <literal>TextMessage</"
+"literal> contains the text value in its <literal>text</literal> field (or "
+"alternatively call <literal>getText()</literal> on it), while an "
+"<literal>ObjectMessage</literal> contains its object value in its "
+"<literal>object</literal> field (or call its <literal>getObject()</literal> "
+"method)."
+msgstr ""
+"有两种消息被支持:文本(Text)消息或对象(Object)消息。如果你需要测试传入回"
+"调函数的消息类型,你可以使用 <literal>instanceof</literal> 来测试它是 "
+"<literal>Seam.Remoting.TextMessage</literal> 还是 <literal>Seam.Remoting."
+"ObjectMessage</literal>。<literal>TextMessage</literal> 在其 <literal>text</"
+"literal> 属性(或调用 <literal>getText()</literal> 方法)里包含文本内容,而 "
+"<literal>ObjectMessage</literal> 在其 <literal>object</literal> 属性(或调用 "
+"<literal>getObject()</literal> 方法)里包含对象值。"
+
+#. Tag: title
+#: Remoting.xml:301
+#, no-c-format
+msgid "Unsubscribing from a Topic"
+msgstr "退订主题"
+
+#. Tag: para
+#: Remoting.xml:302
+#, no-c-format
+msgid ""
+"To unsubscribe from a topic, call <literal>Seam.Remoting.unsubscribe()</"
+"literal> and pass in the topic name:"
+msgstr ""
+"要退订某个主题,调用 <literal>Seam.Remoting.unsubscribe()</literal> 并传入主"
+"题名称:"
+
+#. Tag: programlisting
+#: Remoting.xml:305
+#, no-c-format
+msgid "Seam.Remoting.unsubscribe(\"topicName\");"
+msgstr "Seam.Remoting.unsubscribe(\"topicName\");"
+
+#. Tag: title
+#: Remoting.xml:306
+#, no-c-format
+msgid "Tuning the Polling Process"
+msgstr "调整轮询过程(Polling Process)"
+
+#. Tag: para
+#: Remoting.xml:307
+#, no-c-format
+msgid ""
+"There are two parameters which you can modify to control how polling occurs. "
+"The first one is <literal>Seam.Remoting.pollInterval</literal>, which "
+"controls how long to wait between subsequent polls for new messages. This "
+"parameter is expressed in seconds, and its default setting is 10."
+msgstr ""
+"你可以修改两个参数来控制轮询的发生。第一个是 <literal>Seam.Remoting."
+"pollInterval</literal>,它控制轮询新消息之间所等待的时间。这个参数以秒为单"
+"位,缺省值为 10。"
+
+#. Tag: para
+#: Remoting.xml:310
+#, no-c-format
+msgid ""
+"The second parameter is <literal>Seam.Remoting.pollTimeout</literal>, and is "
+"also expressed as seconds. It controls how long a request to the server "
+"should wait for a new message before timing out and sending an empty "
+"response. Its default is 0 seconds, which means that when the server is "
+"polled, if there are no messages ready for delivery then an empty response "
+"will be immediately returned."
+msgstr ""
+"第二个参数是 <literal>Seam.Remoting.pollTimeout</literal>,它也以秒为单位。它"
+"控制到服务器的请求等待新消息超时并发送空响应的时间。它的缺省值是 0 秒,这表示"
+"当服务器被轮询时,如果没有准备好递送的消息的话,空响应将马上被返回。"
+
+#. Tag: para
+#: Remoting.xml:313
+#, no-c-format
+msgid ""
+"Caution should be used when setting a high <literal>pollTimeout</literal> "
+"value; each request that has to wait for a message means that a server "
+"thread is tied up until a message is received, or until the request times "
+"out. If many such requests are being served simultaneously, it could mean a "
+"large number of threads become tied up because of this reason."
+msgstr ""
+"当设置高的 <literal>pollTimeout</literal> 值时请务必小心:如果每个请求都得等"
+"待消息,这意味着服务器线程将被占用,一直到接收到一个消息或请求超时时才会释"
+"放。因此,如果要同时处理许多这样的请求,大量的线程将被占用。"
+
+#. Tag: para
+#: Remoting.xml:316
+#, no-c-format
+msgid ""
+"It is recommended that you set these options via components.xml, however "
+"they can be overridden via Javascript if desired. The following example "
+"demonstrates how to configure the polling to occur much more aggressively. "
+"You should set these parameters to suitable values for your application:"
+msgstr ""
+"我们推荐你通过 components.xml 设置这些选项,然而如果需要也可以用 Javascript "
+"进行覆盖。下面的例子演示了如何将轮询配置得更为活跃。你应该为自己的应用程序设"
+"置合适的参数值。"
+
+#. Tag: para
+#: Remoting.xml:319
+#, no-c-format
+msgid "Via components.xml:"
+msgstr "通过 components.xml:"
+
+#. Tag: para
+#: Remoting.xml:323
+#, no-c-format
+msgid "Via JavaScript:"
+msgstr "通过 JavaScript:"
+
+#. Tag: programlisting
+#: Remoting.xml:326
+#, no-c-format
+msgid ""
+"// Only wait 1 second between receiving a poll response and sending the next "
+"poll request.\n"
+"  Seam.Remoting.pollInterval = 1;\n"
+"  \n"
+"  // Wait up to 5 seconds on the server for new messages\n"
+"  Seam.Remoting.pollTimeout = 5;"
+msgstr ""
+"// Only wait 1 second between receiving a poll response and sending the next "
+"poll request.\n"
+"  Seam.Remoting.pollInterval = 1;\n"
+"  \n"
+"  // Wait up to 5 seconds on the server for new messages\n"
+"  Seam.Remoting.pollTimeout = 5;"

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Seam_Reference_Guide.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Seam_Reference_Guide.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Seam_Reference_Guide.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,416 @@
+# translation of Seam_Reference_Guide.po to
+# translation of Reference_Guide.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Xi HUANG <xhuang at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Seam_Reference_Guide\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-02-04 23:29+0000\n"
+"PO-Revision-Date: 2007-10-09 11:01+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Seam_Reference_Guide.xml:9
+#, no-c-format
+msgid "Introduction to JBoss Seam"
+msgstr "JBoss Seam 简介 "
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:10
+#, no-c-format
+msgid ""
+"Seam is an application framework for Java EE 5. It is inspired by the "
+"following principles:"
+msgstr "Seam 是用于 Java EE 5 的应用程序框架。它基于下面的原则:"
+
+#. Tag: emphasis
+#: Seam_Reference_Guide.xml:15
+#, no-c-format
+msgid "Integrate JSF with EJB 3.0"
+msgstr "集成了 JSF 与 EJB 3.0 "
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:17
+#, no-c-format
+msgid ""
+"JSF and EJB 3.0 are two of the best new features of Java EE 5. EJB3 is a "
+"brand new component model for server side business and persistence logic. "
+"Meanwhile, JSF is a great component model for the presentation tier. "
+"Unfortunately, neither component model is able to solve all problems in "
+"computing by itself. Indeed, JSF and EJB3 work best used together. But the "
+"Java EE 5 specification provides no standard way to integrate the two "
+"component models. Fortunately, the creators of both models foresaw this "
+"situation and provided standard extension points to allow extension and "
+"integration of other solutions."
+msgstr ""
+"JSF 和 EJB 3.0 是 Java EE 5 的两个最新特征。EJB3 是用于服务器端商业和持久化逻"
+"辑的崭新的组件模型,而 JSF 是一个用于表示层的组件模型。很遗憾,这两个组件模型"
+"都没能单独解决所有问题。实际上,它们用在一起才能最好地工作。但是,Java EE 5 "
+"规格没有提供标准的途径来集成这两个模型。幸运的是,这两个模型的创建者都预见了"
+"这种情形并提供了标准的扩展手段来进行扩展和集成。"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:20
+#, no-c-format
+msgid ""
+"Seam unifies the component models of JSF and EJB3, eliminating glue code, "
+"and letting the developer think about the business problem."
+msgstr ""
+"Seam 统一了 JSF 和 EJB3 这两个组件模型,它消除了胶合代码(glue code),而让开"
+"发人员专心于商业逻辑的开发。"
+
+#. Tag: emphasis
+#: Seam_Reference_Guide.xml:26
+#, no-c-format
+msgid "Integrated AJAX"
+msgstr "集成的 AJAX"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:28
+#, no-c-format
+msgid ""
+"Seam supports two open source JSF-based AJAX solutions: ICEfaces and "
+"Ajax4JSF. These solutions let you add AJAX capability to your user interface "
+"without the need to write any JavaScript code."
+msgstr ""
+"Seam 支持两个开源的基于 JSF 的 AJAX 解决方案:ICEfaces 和 Ajax4JSF。这些方案"
+"可以让你在用户界面里添加 AJAX 能力而不需要书写 JavaScript 代码。"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:31
+#, no-c-format
+msgid ""
+"Seam also provides a built-in JavaScript remoting layer for EJB3 components. "
+"AJAX clients can easily call server-side components and subscribe to JMS "
+"topics, without the need for an intermediate action layer."
+msgstr ""
+"Seam 也提供内置的用于 EJB3 组件的 JavaScript 远程层。不需要中间行为层,AJAX "
+"客户端就可以容易地调用服务器端的组件并订阅 JMS 主题。"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:34
+#, no-c-format
+msgid ""
+"Neither of these approaches would work well, were it not for Seam&#39;s "
+"built-in concurrency and state management, which ensures that many "
+"concurrent fine-grained, asynchronous AJAX requests are handled safely and "
+"efficiently on the server side."
+msgstr ""
+"Seam 的内置的并发和状态管理可以确保许多并发的细颗粒度的、异步的 AJAX 请求在服"
+"务器端被安全和有效地处理,没有这些内置的管理,以上功能都不可能实施。"
+
+#. Tag: emphasis
+#: Seam_Reference_Guide.xml:40
+#, no-c-format
+msgid "Integrate Business Process as a First Class Construct"
+msgstr "把商业过程集成为 First Class Construct"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:42
+#, no-c-format
+msgid ""
+"Optionally, Seam integrates transparent business process management via "
+"jBPM. You won&#39;t believe how easy it is to implement complex workflows "
+"using jBPM and Seam."
+msgstr ""
+"Seam 也可以通过 jBPM 集成透明的商业过程管理。你可能不会相信用 jBPM 和 Seam 来"
+"实施复杂的工作流程是多么的容易。 "
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:45
+#, no-c-format
+msgid ""
+"Seam even allows definition of presentation tier conversation flow by the "
+"same means."
+msgstr "Seam 甚至允许用自己的方法来定义表示层的会话流程。"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:48
+#, no-c-format
+msgid ""
+"JSF provides an incredibly rich event model for the presentation tier. Seam "
+"enhances this model by exposing jBPM&#39;s business process related events "
+"via exactly the same event handling mechanism, providing a uniform event "
+"model for Seam&#39;s uniform component model."
+msgstr ""
+"JSF 为表示层提供非常丰富的事件模型。Seam 采用完全相同的事件处理机制开放了与 "
+"jBPM 的商业过程相关的事件,从而增强了这个模型,为 Seam 的统一组件模型提供了统"
+"一的事件模型。 "
+
+#. Tag: emphasis
+#: Seam_Reference_Guide.xml:54
+#, no-c-format
+msgid "One Kind of \"Stuff\""
+msgstr ""
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:56
+#, no-c-format
+msgid ""
+"Seam provides a uniform component model. A Seam component may be stateful, "
+"with the state associated to any one of a number of contexts, ranging from "
+"the long-running business process to a single web request."
+msgstr ""
+"Seam 提供一个统一的组件模型。Seam 组件可以是有状态的,其状态可以与任何上下文"
+"相关联,如长时间运行的商业过程或者单一的 web 请求。"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:59
+#, no-c-format
+msgid ""
+"There is no distinction between presentation tier components and business "
+"logic components in Seam. It is possible to write Seam applications where "
+"\"everything\" is an EJB. This may come as a surprise if you are used to "
+"thinking of EJBs as coarse-grained, heavyweight objects that are a pain in "
+"the backside to create! However, EJB 3.0 completely changes the nature of "
+"EJB from the point of view of the developer. An EJB is a fine-grained object "
+"- nothing more complex than an annotated JavaBean. Seam even encourages you "
+"to use session beans as JSF action listeners!"
+msgstr ""
+"在 Seam 里,表示层组件和商业逻辑组件没有区别。你可以编写什么都在 EJB 里的 "
+"Seam 应用程序。如果你过去常把 EJB 当作粗颗粒度的、重量级的对象并疲于编写后台"
+"代码的话,那么你现在可能会感到惊讶。从开发人员的角度来看,EJB 3.0 完全改变了 "
+"EJB 的性质。现在 EJB 是一个细颗粒度的对象 - 它并不比带有注解的 JavaBean 复"
+"杂。Seam 甚至鼓励你把 session bean 当作 JSF action listener 使用!"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:62
+#, no-c-format
+msgid ""
+"Unlike plain Java EE or J2EE components, Seam components may "
+"<emphasis>simultaneously</emphasis> access state associated with the web "
+"request and state held in transactional resources (without the need to "
+"propagate web request state manually via method parameters). You might "
+"object that the application layering imposed upon you by the old J2EE "
+"platform was a Good Thing. Well, nothing stops you creating an equivalent "
+"layered architecture using Seam - the difference is that <emphasis>you</"
+"emphasis> get to architect your own application and decide what the layers "
+"are and how they work together."
+msgstr ""
+"不象普通的 Java EE 或 J2EE 组件,Seam 组件可能<emphasis>同时</emphasis>访问"
+"和 web 请求相关联的状态以及事务性资源所持有的状态(不需要通过方法参数传递 "
+"web 请求的状态)。你可能觉得老的 J2EE 平台强制的分层结构是件好事。当然,你也"
+"可以用 Seam 创建相同的分层结构 - 区别是<emphasis>你</emphasis>将构架自己的应"
+"用程序,而且决定需要哪些层次并如何一起工作。"
+
+#. Tag: emphasis
+#: Seam_Reference_Guide.xml:68
+#, no-c-format
+msgid "Declarative State Management"
+msgstr "声明式(Declarative)状态管理"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:70
+#, no-c-format
+msgid ""
+"We are all used to the concept of declarative transaction management and "
+"J2EE declarative security from EJB 2.x. EJB 3.0 even introduces declarative "
+"persistence context management. These are three examples of a broader "
+"problem of managing state that is associated with a particular "
+"<emphasis>context</emphasis>, while ensuring that all needed cleanup occurs "
+"when the context ends. Seam takes the concept of declarative state "
+"management much further and applies it to <emphasis>application state</"
+"emphasis>. Traditionally, J2EE applications almost always implement state "
+"management manually, by getting and setting servlet session and request "
+"attributes. This approach to state management is the source of many bugs and "
+"memory leaks when applications fail to clean up session attributes, or when "
+"session data associated with different workflows collides in a multi-window "
+"application. Seam has the potential to almost entirely eliminate this class "
+"of bugs."
+msgstr ""
+"从 EJB 2.x 开始,我们都习惯于声明式事务管理的概念和 J2EE 声明式的安全性。EJB "
+"3.0 甚至引入了声明式的持久化上下文管理。这是和某一特定的 <emphasis>context</"
+"emphasis> 相关联的状态管理的三个例子, 在上下文结束时确保完成所有的清除工作。"
+"Seam 采取更为深入的声明式状态管理并应用至<emphasis>应用程序状态</emphasis>。"
+"传统的 J2EE 应用程序差不多总是手工实现状态管理,如 get 和 set servlet 会话和"
+"请求属性。当应用程序没有成功清除会话状态或是不同工作流相关的会话数据相抵触"
+"时,这种状态管理的方法就会是许多程序错误和内存溢出的源头。Seam 具有完全消除这"
+"种程序错误的潜力。 "
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:73
+#, no-c-format
+msgid ""
+"Declarative application state management is made possible by the richness of "
+"the <emphasis>context model</emphasis> defined by Seam. Seam extends the "
+"context model defined by the servlet spec&mdash;request, session, "
+"application&mdash;with two new contexts&mdash;conversation and business "
+"process&mdash;that are more meaningful from the point of view of the "
+"business logic."
+msgstr ""
+"Seam 定义了丰富的<emphasis>上下文模型(context model)</emphasis>,这使声明式"
+"应用程序状态管理成为可能。Seam 用两个新的上下文 - conversation 和 business "
+"process 扩展了 servlet 规格所定义的上下文模型 - request、session、"
+"application。"
+
+#. Tag: emphasis
+#: Seam_Reference_Guide.xml:79
+#, no-c-format
+msgid "Bijection"
+msgstr "双向注入"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:81
+#, no-c-format
+msgid ""
+"The notion of <emphasis>Inversion of Control</emphasis> or "
+"<emphasis>dependency injection</emphasis> exists in both JSF and EJB3, as "
+"well as in numerous so-called \"lighweight containers\". Most of these "
+"containers emphasize injection of components that implement "
+"<emphasis>stateless services</emphasis>. Even when injection of stateful "
+"components is supported (such as in JSF), it is virtually useless for "
+"handling application state because the scope of the stateful component "
+"cannot be defined with sufficient flexibility."
+msgstr ""
+"<emphasis>反向控制(Inversion of Control)</emphasis>和<emphasis>依赖性注入"
+"(dependency injection)</emphasis>概念都存在于 JSF 和 EJB3 以及大量的所谓“轻"
+"量级容器”里。这些容器大部分都强调实现了<emphasis>无状态服务(stateless "
+"services)</emphasis>的组件的注入。甚至即使支持(如在 JSF 里)有状态的组件"
+"(stateful components),对于处理应用程序状态来说这些组件实际上也是没什么用"
+"处,因为有状态的组件的作用域不能非常灵活地进行定义。"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:84
+#, no-c-format
+msgid ""
+"<emphasis>Bijection</emphasis> differs from IoC in that it is "
+"<emphasis>dynamic</emphasis>, <emphasis>contextual</emphasis>, and "
+"<emphasis>bidirectional</emphasis>. You can think of it as a mechanism for "
+"aliasing contextual variables (names in the various contexts bound to the "
+"current thread) to attributes of the component. Bijection allows auto-"
+"assembly of stateful components by the container. It even allows a component "
+"to safely and easily manipulate the value of a context variable, just by "
+"assigning to an attribute of the component."
+msgstr ""
+"<emphasis>双向注入</emphasis>之所以区别于反向控制(IOC)就是因为它是"
+"<emphasis>动态的(dynamic)</emphasis>、<emphasis>上下文相关的(contextual)"
+"</emphasis>和<emphasis>双向的(bidirectional)</emphasis>。你可以把它当作一个"
+"把上下文相关的变量(绑定在当前线程的不同上下文里的名字)映射为组件属性别名的"
+"机制。双向注入允许容器对 stateful 组件的自动组装(auto-assembly)。仅仅通过给"
+"组件的属性赋值,它甚至允许组件安全并容易地操纵上下文变量的值。"
+
+#. Tag: emphasis
+#: Seam_Reference_Guide.xml:90
+#, no-c-format
+msgid "Workspace Management"
+msgstr "工作区管理(Workspace Management)"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:92
+#, no-c-format
+msgid ""
+"Optionally, Seam applications may take advantage of <emphasis>workspace "
+"management</emphasis>, allowing users to freely switch between different "
+"conversations (workspaces) in a single browser window. Seam provides not "
+"only correct multi-window operation, but also multi-window-like operation in "
+"a single window!"
+msgstr ""
+"Seam 应用程序也可以利用<emphasis>工作区管理</emphasis>,允许用户在单个的浏览"
+"器窗口里自由地在不同的对话(工作区)之间进行切换。Seam 不仅提供正确的多窗口操"
+"作,它也提供单个窗口里的类多窗口操作!"
+
+#. Tag: emphasis
+#: Seam_Reference_Guide.xml:98
+#, no-c-format
+msgid "Annotated POJOs Everywhere"
+msgstr ""
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:100
+#, no-c-format
+msgid ""
+"EJB 3.0 embraces annotations and \"configuration by exception\" as the "
+"easiest way to provide information to the container in a declarative form. "
+"Unfortunately, JSF is still heavily dependent on verbose XML configuration "
+"files. Seam extends the annotations provided by EJB 3.0 with a set of "
+"annotations for declarative state management and declarative context "
+"demarcation. This lets you eliminate the noisy JSF managed bean declarations "
+"and reduce the required XML to just that information which truly belongs in "
+"XML (the JSF navigation rules)."
+msgstr ""
+"EJB 3.0 采用注解(annotation)和“按异常配置(configuration by exception)”这"
+"样最容易的方法,以声明式的形式来为容器提供信息。遗憾的是,JSF 仍然严重地依赖"
+"大量的 XML 配置文件。Seam 用一套用于声明式状态管理和声明式上下文划分"
+"(declarative context demarcation)的注解扩展了 EJB 3.0 所提供的注解。这让你"
+"消除了复杂的 JSF managed bean 声明并将所需的 XML 缩减到真正属于 XML 的内容"
+"(JSF 导航规则)。"
+
+#. Tag: emphasis
+#: Seam_Reference_Guide.xml:106
+#, no-c-format
+msgid "Testability as a Core Feature"
+msgstr "作为核心特征的可测试性"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:108
+#, no-c-format
+msgid ""
+"Seam components, being POJOs, are by nature unit testable. But for complex "
+"applications, unit testing alone is insufficient. Integration testing has "
+"traditionally been a messy and difficult task for Java web applications. "
+"Therefore, Seam provides for testability of Seam applications as a core "
+"feature of the framework. You can easily write JUnit or TestNG tests that "
+"reproduce a whole interaction with a user, exercising all components of the "
+"system apart from the view (the JSP or Facelets page). You can run these "
+"tests directly inside your IDE, where Seam will automatically deploy EJB "
+"components into the JBoss Embeddable EJB3 container."
+msgstr ""
+"Seam 组件,作为 POJO,天生就是可以进行单元测试的。但对于复杂的应用程序来说,"
+"仅有单元测试是不够的。对于 Java web 应用程序,传统上集成测试是一个麻烦并困难"
+"的任务。因此,Seam 把可测试性作为其框架的一个核心特征来提供。你可以很容易地编"
+"写 JUnit 或 TestNG 测试用例来复制与用户的完整的交互过程、测试除了视图(JSP "
+"或 Facelets 页面)外的所有组件。你可以直接在 IDE 里运行这些测试用例,在这里 "
+"Seam 将自动地将 EJB 组件部署到 JBoss 的可嵌入的 EJB3 容器里。"
+
+#. Tag: emphasis
+#: Seam_Reference_Guide.xml:114
+#, no-c-format
+msgid "Get started now!"
+msgstr "现在开始!"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:116
+#, no-c-format
+msgid ""
+"Seam works in any application server that supports EJB 3.0. You can even use "
+"Seam in a servlet container like Tomcat, or in any J2EE application server, "
+"by leveraging the new JBoss Embeddable EJB3 container."
+msgstr ""
+"Seam 可以工作在任何支持 EJB 3.0 的应用服务器里。你甚至可以在 servlet 容器"
+"(如 Tomcat)里或利用新的可嵌入的 JBoss EJB3 容器在任何 J2EE 应用服务器里使"
+"用 Seam。"
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:119
+#, no-c-format
+msgid ""
+"However, we realize that not everyone is ready to make the switch to EJB "
+"3.0. So, in the interim, you can use Seam as a framework for applications "
+"that use JSF for presentation, Hibernate (or plain JDBC) for persistence and "
+"JavaBeans for application logic. Then, when you&#39;re ready to make the "
+"switch to EJB 3.0, migration will be straightforward."
+msgstr ""
+"然而,我们明白并不是所有人都准备好切换到 EJB 3.0 了。所以,你可以暂时把 Seam "
+"作为应用程序的框架,在表示层使用 JSF、将 Hibernate(或普通 JDBC)用于持久化而"
+"用 JavaBean 实现商业逻辑。然后,当你准备好切换至 EJB 3.0 时,移植将是很简单"
+"的。 "
+
+#. Tag: para
+#: Seam_Reference_Guide.xml:133
+#, no-c-format
+msgid ""
+"It turns out that the combination of Seam, JSF and EJB3 is <emphasis>the</"
+"emphasis> simplest way to write a complex web application in Java. You "
+"won&#39;t believe how little code is required!"
+msgstr ""
+"将 Seam、JSF 和 EJB3 组合在一起是编写复杂的 Java web 应用程序的<emphasis>最简"
+"单的</emphasis>方法。你将难以相信这只需要多么少的代码! "

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Security.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Security.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Security.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2390 @@
+# translation of Security.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Xi HUANG <xhuang at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Security\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2007-10-09 10:58+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Security.xml:6
+#, no-c-format
+msgid "Security"
+msgstr "Seam Security"
+
+#. Tag: para
+#: Security.xml:7
+#, no-c-format
+msgid ""
+"The Seam Security API is an optional Seam feature that provides "
+"authentication and authorization features for securing both domain and page "
+"resources within your Seam project."
+msgstr ""
+"Seam Security API 是可选的特征,它为 Seam 项目里的域和页面资源的安全性提供验"
+"证和授权。"
+
+#. Tag: title
+#: Security.xml:10
+#, no-c-format
+msgid "Overview"
+msgstr "概述"
+
+#. Tag: para
+#: Security.xml:11
+#, no-c-format
+msgid "Seam Security provides two different modes of operation:"
+msgstr "Seam Security 提供了两种不同的操作方式:"
+
+#. Tag: para
+#: Security.xml:16
+#, no-c-format
+msgid ""
+"<emphasis>simplified mode</emphasis> - this mode supports authentication "
+"services and simple role-based security checks."
+msgstr ""
+"<emphasis>简化模式(simplified mode)</emphasis> - 这个模式支持验证服务和简单"
+"的基于角色的安全性检查。 "
+
+#. Tag: para
+#: Security.xml:21
+#, no-c-format
+msgid ""
+"<emphasis>advanced mode</emphasis> - this mode supports all the same "
+"features as the simplified mode, plus it offers rule-based security checks "
+"using JBoss Rules."
+msgstr ""
+"<emphasis>高级模式(advanced mode)</emphasis> - 这个模式支持简化模式的所有特"
+"征,以及使用 JBoss Rules 的基于规则的安全性检查。"
+
+#. Tag: title
+#: Security.xml:26
+#, no-c-format
+msgid "Which mode is right for my application?"
+msgstr "我的程序应该使用哪个模式呢?"
+
+#. Tag: para
+#: Security.xml:27
+#, no-c-format
+msgid ""
+"That all depends on the requirements of your application. If you have "
+"minimal security requirements, for example if you only wish to restrict "
+"certain pages and actions to users who are logged in, or who belong to a "
+"certain role, then the simplified mode will probably be sufficient. The "
+"advantages of this is a more simplified configuration, significantly less "
+"libraries to include, and a smaller memory footprint."
+msgstr ""
+"这完全取决于程序的需求。如果对于安全性只有最低的要求,例如只想限制已登录的、"
+"或属于某个角色的用户对某些页面和动作的访问,简化模式可能就已足够。这个模式的"
+"优点是配置更加简单、包括的库文件少得多以及更小的内存印迹(footprint)。"
+
+#. Tag: para
+#: Security.xml:30
+#, no-c-format
+msgid ""
+"If on the other hand, your application requires security checks based on "
+"contextual state or complex business rules, then you will require the "
+"features provided by the advanced mode."
+msgstr ""
+"另一方面,如果你的程序需要基于上下文状态或复杂商业规则的安全性检查,你将需要"
+"利用高级模式提供的特征。"
+
+#. Tag: title
+#: Security.xml:33
+#, no-c-format
+msgid "Requirements"
+msgstr "所需文件"
+
+#. Tag: para
+#: Security.xml:34
+#, no-c-format
+msgid ""
+"If using the advanced mode features of Seam Security, the following jar "
+"files are required to be configured as modules in <literal>application.xml</"
+"literal>. If you are using Seam Security in simplified mode, these are "
+"<emphasis>not</emphasis> required:"
+msgstr ""
+"如果使用 Seam Security 高级模式的特征,下面的 jar 文件必须在 "
+"<literal>application.xml</literal> 里作为模块配置。如果你只使用简化模式,它们"
+"就<emphasis>不是</emphasis>必需的。"
+
+#. Tag: para
+#: Security.xml:39
+#, no-c-format
+msgid "drools-compiler-3.0.5.jar"
+msgstr "drools-compiler-3.0.5.jar"
+
+#. Tag: para
+#: Security.xml:44
+#, no-c-format
+msgid "drools-core-3.0.5.jar"
+msgstr "drools-core-3.0.5.jar"
+
+#. Tag: para
+#: Security.xml:49
+#, no-c-format
+msgid "commons-jci-core-1.0-406301.jar"
+msgstr "commons-jci-core-1.0-406301.jar"
+
+#. Tag: para
+#: Security.xml:54
+#, no-c-format
+msgid "commons-jci-janino-2.4.3.jar"
+msgstr "commons-jci-janino-2.4.3.jar"
+
+#. Tag: para
+#: Security.xml:59
+#, no-c-format
+msgid "commons-lang-2.1.jar"
+msgstr "commons-lang-2.1.jar"
+
+#. Tag: para
+#: Security.xml:64
+#, no-c-format
+msgid "janino-2.4.3.jar"
+msgstr "janino-2.4.3.jar"
+
+#. Tag: para
+#: Security.xml:69
+#, no-c-format
+msgid "stringtemplate-2.3b6.jar"
+msgstr "stringtemplate-2.3b6.jar"
+
+#. Tag: para
+#: Security.xml:74
+#, no-c-format
+msgid "antlr-2.7.6.jar"
+msgstr "antlr-2.7.6.jar"
+
+#. Tag: para
+#: Security.xml:79
+#, no-c-format
+msgid "antlr-3.0ea8.jar"
+msgstr "antlr-3.0ea8.jar"
+
+#. Tag: para
+#: Security.xml:84
+#, no-c-format
+msgid ""
+"For web-based security, <literal>jboss-seam-ui.jar</literal> must also be "
+"included in the application&#39;s war file. Also, to make use of the "
+"security EL functions, <literal>SeamFaceletViewHandler</literal> must be "
+"used. Configure it in <literal>faces-config.xml</literal> like this:"
+msgstr ""
+"对于基于 web 的安全性,<literal>jboss-seam-ui.jar</literal> 也必须包括在应用"
+"程序的 war 文件里。而且,要利用安全性 EL 功能,你必须使用 "
+"<literal>SeamFaceletViewHandler</literal>。你可以在 <literal>faces-config."
+"xml</literal> 文件里这样配置: "
+
+#. Tag: programlisting
+#: Security.xml:87
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;view-handler&gt;org.jboss.seam.ui.facelet.SeamFaceletViewHandler&lt;/"
+"view-handler&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+"&lt;application&gt;\n"
+"    &lt;view-handler&gt;org.jboss.seam.ui.facelet.SeamFaceletViewHandler&lt;/"
+"view-handler&gt;\n"
+"&lt;/application&gt;"
+
+#. Tag: title
+#: Security.xml:88
+#, no-c-format
+msgid "Authentication"
+msgstr "验证"
+
+#. Tag: para
+#: Security.xml:89
+#, no-c-format
+msgid ""
+"The authentication features provided by Seam Security are built upon JAAS "
+"(Java Authentication and Authorization Service), and as such provide a "
+"robust and highly configurable API for handling user authentication. "
+"However, for less complex authentication requirements Seam offers a much "
+"more simplified method of authentication that hides the complexity of JAAS."
+msgstr ""
+"Seam Security 提供的验证特征建立在 JAAS (Java Authentication and "
+"Authorization Service) 上,因此它提供稳定和高可配置的 API 来处理用户验证。然"
+"而,对于不太复杂的验证需求,Seam 提供了隐藏了 JAAS 复杂性的简单得多的验证方"
+"法。"
+
+#. Tag: title
+#: Security.xml:92
+#, no-c-format
+msgid "Configuration"
+msgstr "配置"
+
+#. Tag: para
+#: Security.xml:93
+#, no-c-format
+msgid ""
+"The simplified authentication method uses a built-in JAAS login module, "
+"<literal>SeamLoginModule</literal>, which delegates authentication to one of "
+"your own Seam components. This login module is already configured inside "
+"Seam as part of a default application policy and as such does not require "
+"any additional configuration files. It allows you to write an authentication "
+"method using the entity classes that are provided by your own application. "
+"Configuring this simplified form of authentication requires the "
+"<literal>identity</literal> component to be configured in "
+"<literal>components.xml</literal>:"
+msgstr ""
+"简化的验证方法使用内置的 JAAS 登录模块:<literal>SeamLoginModule</literal>,"
+"它把验证委托给你自己的 Seam 组件。登录模块已经作为缺省应用程序策略的一部分配"
+"置在 Seam 里,因此不需要其他的配置文件。它允许你用自己应用程序提供的实体类编"
+"写验证方法。配置这种简化的验证形式需要在 <literal>components.xml</literal> 里"
+"配置 <literal>identity</literal> 组件:"
+
+#. Tag: programlisting
+#: Security.xml:96
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:security=\"http://jboss.com/products/seam/security\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core http://jboss.com/"
+"products/seam/core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components http://jboss.com/"
+"products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/drools http://jboss.com/"
+"products/seam/drools-1.2.xsd\"\n"
+"                 http://jboss.com/products/seam/security http://jboss.com/"
+"products/seam/security-1.2.xsd\"&gt;                \n"
+"        \n"
+"    &lt;security:identity authenticate-method=\"#{authenticator.authenticate}"
+"\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:security=\"http://jboss.com/products/seam/security\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core http://jboss.com/"
+"products/seam/core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components http://jboss.com/"
+"products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/drools http://jboss.com/"
+"products/seam/drools-1.2.xsd\"\n"
+"                 http://jboss.com/products/seam/security http://jboss.com/"
+"products/seam/security-1.2.xsd\"&gt;                \n"
+"        \n"
+"    &lt;security:identity authenticate-method=\"#{authenticator.authenticate}"
+"\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Security.xml:97
+#, no-c-format
+msgid ""
+"If you wish to use the advanced security features such as rule-based "
+"permission checks, all you need to do is include the Drools (JBoss Rules) "
+"jars in your classpath, and add some additional configuration, described "
+"later."
+msgstr ""
+"如果你想使用高级的安全特征如基于规则的权限检查,你所需要做的是在 classpath 里"
+"包含 Drools (JBoss Rules) jars,且加入一些其他的配置(如后所述)。"
+
+#. Tag: para
+#: Security.xml:100
+#, no-c-format
+msgid ""
+"The EL expression <literal>#{authenticator.authenticate}</literal> is a "
+"method binding indicating that the <literal>authenticate</literal> method of "
+"the <literal>authenticator</literal> component will be used to authenticate "
+"the user."
+msgstr ""
+"EL 表达式 <literal>#{authenticator.authenticate}</literal> 表示 "
+"<literal>authenticator</literal> 组件的 <literal>authenticate</literal> 方法"
+"将被用来验证用户。"
+
+#. Tag: title
+#: Security.xml:103
+#, no-c-format
+msgid "Writing an authentication method"
+msgstr "编写验证方法"
+
+#. Tag: para
+#: Security.xml:104
+#, no-c-format
+msgid ""
+"The <literal>authenticate-method</literal> property specified for "
+"<literal>identity</literal> in <literal>components.xml</literal> specifies "
+"which method will be used by <literal>SeamLoginModule</literal> to "
+"authenticate users. This method takes no parameters, and is expected to "
+"return a boolean indicating whether authentication is successful or not. The "
+"user&#39;s username and password can be obtained from <literal>Identity."
+"instance().getUsername()</literal> and <literal>Identity.instance()."
+"getPassword()</literal>, respectively. Any roles that the user is a member "
+"of should be assigned using <literal>Identity.instance().addRole()</"
+"literal>. Here&#39;s a complete example of an authentication method inside a "
+"JavaBean component:"
+msgstr ""
+"<literal>components.xml</literal> 里 <literal>identity</literal> 的"
+"<literal>authenticate-method</literal> 属性指定了哪个方法被 "
+"<literal>SeamLoginModule</literal> 用来验证用户。这个方法没有参数,并返回布尔"
+"值指出验证是成功还是失败。用户的用户名和密码可以分别从 <literal>Identity."
+"instance().getUsername()</literal> 和 <literal>Identity.instance()."
+"getPassword()</literal> 里获得。用户所属于的任何角色都应该用 "
+"<literal>Identity.instance().addRole()</literal> 分配。下面是一个 JavaBean 组"
+"件内部的验证方法的完整示例:"
+
+#. Tag: programlisting
+#: Security.xml:107
+#, no-c-format
+msgid ""
+"@Name(\"authenticator\")\n"
+"public class Authenticator {\n"
+"   @In EntityManager entityManager;\n"
+"   \n"
+"   public boolean authenticate() {\n"
+"      try\n"
+"      {\n"
+"         User user = (User) entityManager.createQuery(\n"
+"            \"from User where username = :username and password = :password"
+"\")\n"
+"            .setParameter(\"username\", Identity.instance().getUsername())\n"
+"            .setParameter(\"password\", Identity.instance().getPassword())\n"
+"            .getSingleResult();\n"
+"\n"
+"         if (user.getRoles() != null)\n"
+"         {\n"
+"            for (UserRole mr : user.getRoles())\n"
+"               Identity.instance().addRole(mr.getName());\n"
+"         }\n"
+"\n"
+"         return true;\n"
+"      }\n"
+"      catch (NoResultException ex)\n"
+"      {\n"
+"         FacesMessages.instance().add(\"Invalid username/password\");\n"
+"         return false;\n"
+"      }\n"
+"      \n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+"@Name(\"authenticator\")\n"
+"public class Authenticator {\n"
+"   @In EntityManager entityManager;\n"
+"   \n"
+"   public boolean authenticate() {\n"
+"      try\n"
+"      {\n"
+"         User user = (User) entityManager.createQuery(\n"
+"            \"from User where username = :username and password = :password"
+"\")\n"
+"            .setParameter(\"username\", Identity.instance().getUsername())\n"
+"            .setParameter(\"password\", Identity.instance().getPassword())\n"
+"            .getSingleResult();\n"
+"\n"
+"         if (user.getRoles() != null)\n"
+"         {\n"
+"            for (UserRole mr : user.getRoles())\n"
+"               Identity.instance().addRole(mr.getName());\n"
+"         }\n"
+"\n"
+"         return true;\n"
+"      }\n"
+"      catch (NoResultException ex)\n"
+"      {\n"
+"         FacesMessages.instance().add(\"Invalid username/password\");\n"
+"         return false;\n"
+"      }\n"
+"      \n"
+"   }\n"
+"   \n"
+"}"
+
+#. Tag: para
+#: Security.xml:108
+#, no-c-format
+msgid ""
+"In the above example, both <literal>User</literal> and <literal>UserRole</"
+"literal> are application-specific entity beans. The <literal>roles</literal> "
+"parameter is populated with the roles that the user is a member of, which "
+"should be added to the <literal>Set</literal> as literal string values, e.g. "
+"\"admin\", \"user\". In this case, if the user record is not found and a "
+"<literal>NoResultException</literal> thrown, the authentication method "
+"returns <literal>false</literal> to indicate the authentication failed."
+msgstr ""
+"在上面的例子里,<literal>User</literal> 和 <literal>UserRole</literal> 都是和"
+"应用程序相关的 entity bean。参数 <literal>roles</literal> 用用户所属的角色填"
+"充,它应该作为字符串值加入到 <literal>Set</literal> 里,如 \"admin\"、\"user"
+"\"。在这个例子里,如果没有找到用户记录并抛出 <literal>NoResultException</"
+"literal>,验证方法将返回 <literal>false</literal> 来表示验证失败。"
+
+#. Tag: title
+#: Security.xml:111
+#, no-c-format
+msgid "Writing a login form"
+msgstr "编写登录表单"
+
+#. Tag: para
+#: Security.xml:112
+#, no-c-format
+msgid ""
+"The <literal>Identity</literal> component provides both <literal>username</"
+"literal> and <literal>password</literal> properties, catering for the most "
+"common authentication scenario. These properties can be bound directly to "
+"the username and password fields on a login form. Once these properties are "
+"set, calling the <literal>identity.login()</literal> method will "
+"authenticate the user using the provided credentials. Here&#39;s an example "
+"of a simple login form:"
+msgstr ""
+"<literal>Identity</literal> 组件提供 <literal>username</literal> 和 "
+"<literal>password</literal> 属性,这是最常见的验证方案。这些属性可以直接绑定"
+"登录表单的用户名和密码字段。一旦这些属性被设置,<literal>identity.login()</"
+"literal> 方法将用它们来验证这个用户。下面是一个简单登录表单的例子: "
+
+#. Tag: programlisting
+#: Security.xml:115
+#, no-c-format
+msgid ""
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"name\" value=\"Username\"/&gt;\n"
+"    &lt;h:inputText id=\"name\" value=\"#{identity.username}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"password\" value=\"Password\"/&gt;\n"
+"    &lt;h:inputSecret id=\"password\" value=\"#{identity.password}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;div&gt;\n"
+"    &lt;h:commandButton value=\"Login\" action=\"#{identity.login}\"/&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"name\" value=\"Username\"/&gt;\n"
+"    &lt;h:inputText id=\"name\" value=\"#{identity.username}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"password\" value=\"Password\"/&gt;\n"
+"    &lt;h:inputSecret id=\"password\" value=\"#{identity.password}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;div&gt;\n"
+"    &lt;h:commandButton value=\"Login\" action=\"#{identity.login}\"/&gt;\n"
+"&lt;/div&gt;"
+
+#. Tag: para
+#: Security.xml:116
+#, no-c-format
+msgid ""
+"Similarly, logging out the user is done by calling <literal>#{identity."
+"logout}</literal>. Calling this action will clear the security state of the "
+"currently authenticated user."
+msgstr ""
+"类似地,调用 <literal>#{identity.logout}</literal> 可以登出这个用户。调用这个"
+"动作将清除当前被验证的用户的安全状态。"
+
+#. Tag: title
+#: Security.xml:119
+#, no-c-format
+msgid "Simplified Configuration - Summary"
+msgstr "简化配置 - 总结"
+
+#. Tag: para
+#: Security.xml:120
+#, no-c-format
+msgid ""
+"So to sum up, there are the three easy steps to configure authentication:"
+msgstr "总而言之,配置验证有三个简单的步骤:"
+
+#. Tag: para
+#: Security.xml:125
+#, no-c-format
+msgid ""
+"Configure an authentication method in <literal>components.xml</literal>."
+msgstr "在 <literal>components.xml</literal> 里配置一个验证方法。"
+
+#. Tag: para
+#: Security.xml:130
+#, no-c-format
+msgid "Write an authentication method."
+msgstr "编写一个验证方法。"
+
+#. Tag: para
+#: Security.xml:135
+#, no-c-format
+msgid "Write a login form so that the user can authenticate."
+msgstr "编写可以验证用户的登录表单。"
+
+#. Tag: title
+#: Security.xml:140
+#, no-c-format
+msgid "Handling Security Exceptions"
+msgstr "处理安全性异常"
+
+#. Tag: para
+#: Security.xml:141
+#, no-c-format
+msgid ""
+"To prevent users from receiving the default error page in response to a "
+"security error, it&#39;s recommended that <literal>pages.xml</literal> is "
+"configured to redirect security errors to a more \"pretty\" page. The two "
+"main types of exceptions thrown by the security API are:"
+msgstr ""
+"要阻止用户在发生安全性错误时接收到缺省的错误页面,我们推荐对 <literal>pages."
+"xml</literal> 进行配置,把安全性错误重定向到更为“美观”的页面。Security API 抛"
+"出的两类主要的异常是:"
+
+#. Tag: para
+#: Security.xml:146
+#, no-c-format
+msgid ""
+"<literal>NotLoggedInException</literal> - This exception is thrown if the "
+"user attempts to access a restricted action or page when they are not logged "
+"in."
+msgstr ""
+"<literal>NotLoggedInException</literal> - 如果用户在还未登录时试图访问受限的"
+"动作或页面,这个异常将被抛出。"
+
+#. Tag: para
+#: Security.xml:151
+#, no-c-format
+msgid ""
+"<literal>AuthorizationException</literal> - This exception is only thrown if "
+"the user is already logged in, and they have attempted to access a "
+"restricted action or page for which they do not have the necessary "
+"privileges."
+msgstr ""
+"<literal>AuthorizationException</literal> - 如果用户已经登录并试图访问受限的"
+"动作或页面,而他们并没有所需的权限时,这个异常将被抛出。"
+
+#. Tag: para
+#: Security.xml:156
+#, no-c-format
+msgid ""
+"In the case of a <literal>NotLoggedInException</literal>, it is recommended "
+"that the user is redirected to either a login or registration page so that "
+"they can log in. For an <literal>AuthorizationException</literal>, it may be "
+"useful to redirect the user to an error page. Here&#39;s an example of a "
+"<literal>pages.xml</literal> file that redirects both of these security "
+"exceptions:"
+msgstr ""
+"在产生 <literal>NotLoggedInException</literal> 的情况下,我们推荐将用户重定向"
+"到登录或注册页面,这样他们就可以登录。而对于 "
+"<literal>AuthorizationException</literal>,重定向到一错误页面会比较好。下面是"
+"一个对这两种情况都进行了重定向的 <literal>pages.xml</literal> 示例: "
+
+#. Tag: programlisting
+#: Security.xml:159
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"\n"
+"    ...\n"
+"    \n"
+"    &lt;exception class=\"org.jboss.seam.security.NotLoggedInException"
+"\"&gt;\n"
+"        &lt;redirect view-id=\"/login.xhtml\"&gt;\n"
+"            &lt;message&gt;You must be logged in to perform this action&lt;/"
+"message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"    \n"
+"    &lt;exception class=\"org.jboss.seam.security.AuthorizationException"
+"\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"        &lt;redirect view-id=\"/security_error.xhtml\"&gt;\n"
+"            &lt;message&gt;\n"
+"                              You do not have the necessary security "
+"privileges to perform this action.\n"
+"            &lt;/message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"  \n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"\n"
+"    ...\n"
+"    \n"
+"    &lt;exception class=\"org.jboss.seam.security.NotLoggedInException"
+"\"&gt;\n"
+"        &lt;redirect view-id=\"/login.xhtml\"&gt;\n"
+"            &lt;message&gt;You must be logged in to perform this action&lt;/"
+"message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"    \n"
+"    &lt;exception class=\"org.jboss.seam.security.AuthorizationException"
+"\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"        &lt;redirect view-id=\"/security_error.xhtml\"&gt;\n"
+"            &lt;message&gt;\n"
+"                              You do not have the necessary security "
+"privileges to perform this action.\n"
+"            &lt;/message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"  \n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Security.xml:160
+#, no-c-format
+msgid ""
+"Most web applications require even more sophisticated handling of login "
+"redirection, so Seam includes some special functionality for handling this "
+"problem."
+msgstr ""
+"大多数的 web 应用程序都要求更复杂的登录重定向处理,所以 Seam 包含了一些特殊的"
+"功能来解决这个问题。"
+
+#. Tag: title
+#: Security.xml:163
+#, no-c-format
+msgid "Login Redirection"
+msgstr "登录重定向"
+
+#. Tag: para
+#: Security.xml:164
+#, no-c-format
+msgid ""
+"You can ask Seam to redirect the user to a login screen when an "
+"unauthenticated user tries to access a particular view (or wildcarded view "
+"id) as follows:"
+msgstr ""
+"当未经验证的用户试图访问特定的页面(或带通配符的 view id)时,你可以要求 "
+"Seam 把用户重定向到一个登录屏幕:"
+
+#. Tag: programlisting
+#: Security.xml:167
+#, no-c-format
+msgid ""
+"&lt;pages login-view-id=\"/login.xhtml\"&gt;\n"
+"\n"
+"    &lt;page view-id=\"/members/*\" login-required=\"true\"/&gt;\n"
+"    \n"
+"    ...\n"
+"    \n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages login-view-id=\"/login.xhtml\"&gt;\n"
+"\n"
+"    &lt;page view-id=\"/members/*\" login-required=\"true\"/&gt;\n"
+"    \n"
+"    ...\n"
+"    \n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Security.xml:168
+#, no-c-format
+msgid ""
+"(This is less of a blunt instrument than the exception handler shown above, "
+"but should probably be used in conjunction with it.)"
+msgstr ""
+"(上面所示更象一个差劲的工具而不是异常处理程序,但它们应该有可能一起使用。)"
+
+#. Tag: para
+#: Security.xml:171
+#, no-c-format
+msgid ""
+"After the user logs in, we want to automatically send them back where they "
+"came from, so they can retry the action that required logging in. If you add "
+"the following event listeners to <literal>components.xml</literal>, attempts "
+"to access a restricted view while not logged in will be remembered, so that "
+"upon the user successfully logging in they will be redirected to the "
+"originally requested view, with any page parameters that existed in the "
+"original request."
+msgstr ""
+"在用户登录后,我们希望自动地将他们带回原来的页面,所以他们可以重试需要登录的"
+"动作。如果你把下面的 event listener 加入到 <literal>components.xml</"
+"literal>,在未登录时试图访问受限的视图将被记住,所以在用户成功登录后,他们将"
+"被重定向到原来所请求的视图,且保留任何原始请求的页面参数。"
+
+#. Tag: programlisting
+#: Security.xml:174
+#, no-c-format
+msgid ""
+"&lt;event type=\"org.jboss.seam.notLoggedIn\"&gt;\n"
+"    &lt;action expression=\"#{redirect.captureCurrentView}\"/&gt;\n"
+"&lt;/event&gt;\n"
+"    \n"
+"&lt;event type=\"org.jboss.seam.postAuthenticate\"&gt;\n"
+"    &lt;action expression=\"#{redirect.returnToCapturedView}\"/&gt;\n"
+"&lt;/event&gt;"
+msgstr ""
+"&lt;event type=\"org.jboss.seam.notLoggedIn\"&gt;\n"
+"    &lt;action expression=\"#{redirect.captureCurrentView}\"/&gt;\n"
+"&lt;/event&gt;\n"
+"    \n"
+"&lt;event type=\"org.jboss.seam.postAuthenticate\"&gt;\n"
+"    &lt;action expression=\"#{redirect.returnToCapturedView}\"/&gt;\n"
+"&lt;/event&gt;"
+
+#. Tag: para
+#: Security.xml:175
+#, no-c-format
+msgid ""
+"Note that login redirection is implemented as a conversation-scoped "
+"mechanism, so don&#39;t end the conversation in your <literal>authenticate()"
+"</literal> method."
+msgstr ""
+"注意,登录重定向是按照作用域为 conversation 的机制被实现的,所以不要在 "
+"<literal>authenticate()</literal> 方法里终止这个 conversation。"
+
+#. Tag: title
+#: Security.xml:178
+#, no-c-format
+msgid "Advanced Authentication Features"
+msgstr "高级的验证功能"
+
+#. Tag: para
+#: Security.xml:179
+#, no-c-format
+msgid ""
+"This section explores some of the advanced features provided by the security "
+"API for addressing more complex security requirements."
+msgstr ""
+"本部分内容探讨 Security API 所提供的面向更复杂的安全性要求的一些高级功能。"
+
+#. Tag: title
+#: Security.xml:182
+#, no-c-format
+msgid "Using your container&#39;s JAAS configuration"
+msgstr "使用容器的 JAAS 配置 "
+
+#. Tag: para
+#: Security.xml:183
+#, no-c-format
+msgid ""
+"If you would rather not use the simplified JAAS configuration provided by "
+"the Seam Security API, you may instead delegate to the default system JAAS "
+"configuration by providing a <literal>jaasConfigName</literal> property in "
+"<literal>components.xml</literal>. For example, if you are using JBoss AS "
+"and wish to use the <literal>other</literal> policy (which uses the "
+"<literal>UsersRolesLoginModule</literal> login module provided by JBoss AS), "
+"then the entry in <literal>components.xml</literal> would look like this:"
+msgstr ""
+"如果你不愿使用 Seam Security API 提供的简化的 JASS 配置,你可以通过设置 "
+"<literal>components.xml</literal> 里的 <literal>jaasConfigName</literal> 属性"
+"委托给缺省的系统 JASS 配置。例如,如果你正在使用 JBoss AS 且希望使用<literal>"
+"其他</literal>策略(使用 JBoss AS 提供的 <literal>UsersRolesLoginModule</"
+"literal> 登录模块),<literal>components.xml</literal> 里的条目应该和下面类"
+"似:"
+
+#. Tag: programlisting
+#: Security.xml:186
+#, no-c-format
+msgid ""
+"&lt;security:identity authenticate-method=\"#{authenticator.authenticate}"
+"\" \n"
+"                      jaas-config-name=\"other\"/&gt;"
+msgstr ""
+"&lt;security:identity authenticate-method=\"#{authenticator.authenticate}"
+"\" \n"
+"                      jaas-config-name=\"other\"/&gt;"
+
+#. Tag: title
+#: Security.xml:187
+#, no-c-format
+msgid "Error Messages"
+msgstr "错误信息"
+
+#. Tag: para
+#: Security.xml:188
+#, no-c-format
+msgid ""
+"The security API produces a number of default faces messages for various "
+"security-related events. The following table lists the message keys that can "
+"be used to override these messages by specifying them in a <literal>message."
+"properties</literal> resource file."
+msgstr ""
+"Security API 根据不同的和安全相关的事件产生大量的缺省页面信息。下面的表格列出"
+"了可以用来覆盖这些信息的关键字,你可以在 <literal>message.properties</"
+"literal> 资源文件里指定它们。"
+
+#. Tag: title
+#: Security.xml:192
+#, no-c-format
+msgid "Security Message Keys"
+msgstr "安全信息关键字"
+
+#. Tag: literal
+#: Security.xml:200
+#, no-c-format
+msgid "org.jboss.seam.loginSuccessful"
+msgstr "org.jboss.seam.loginSuccessful"
+
+#. Tag: para
+#: Security.xml:204
+#, no-c-format
+msgid ""
+"This message is produced when a user successfully logs in via the security "
+"API."
+msgstr "当用户成功地用 security API 登录时产生这个信息。"
+
+#. Tag: literal
+#: Security.xml:212
+#, no-c-format
+msgid "org.jboss.seam.loginFailed"
+msgstr "org.jboss.seam.loginFailed"
+
+#. Tag: para
+#: Security.xml:216
+#, no-c-format
+msgid ""
+"This message is produced when the login process fails, either because the "
+"user provided an incorrect username or password, or because authentication "
+"failed in some other way."
+msgstr ""
+"当登录过程失败时产生这个信息,或者是用户提供了错误的用户名或密码,或者是因为"
+"其他原因导致验证失败。"
+
+#. Tag: literal
+#: Security.xml:224
+#, no-c-format
+msgid "org.jboss.seam.NotLoggedIn"
+msgstr "org.jboss.seam.NotLoggedIn"
+
+#. Tag: para
+#: Security.xml:228
+#, no-c-format
+msgid ""
+"This message is produced when a user attempts to perform an action or access "
+"a page that requires a security check, and the user is not currently "
+"authenticated."
+msgstr ""
+"当用户试图执行需要安全检查而该用户并没有被验证的动作或页面访问时,产生这个信"
+"息。"
+
+#. Tag: title
+#: Security.xml:236
+#, no-c-format
+msgid "Authorization"
+msgstr "授权"
+
+#. Tag: para
+#: Security.xml:237
+#, no-c-format
+msgid ""
+"There are a number of authorization features provided by the Seam Security "
+"API for securing access to components, component methods, and pages. This "
+"section describes each of these. An important thing to note is that if you "
+"wish to use any of the advanced features (such as rule-based permissions) "
+"then your <literal>components.xml</literal> must be configured to support "
+"this - see the Configuration section above."
+msgstr ""
+"Seam Security API 提供大量的授权功能来设置组件、组件方法和页面访问的安全性。"
+"本节将描述这些功能。需要注意的是如果你希望使用任何高级功能(如基于规则的权"
+"限),则必须配置<literal>components.xml</literal> 对其支持 - 请参考上面的配置"
+"部分。"
+
+#. Tag: title
+#: Security.xml:240
+#, no-c-format
+msgid "Core concepts"
+msgstr "核心概念"
+
+#. Tag: para
+#: Security.xml:241
+#, no-c-format
+msgid ""
+"Each of the authorization mechanisms provided by the Seam Security API are "
+"built upon the concept of a user being granted roles and/or permissions. A "
+"role is a <emphasis>group</emphasis>, or <emphasis>type</emphasis>, of user "
+"that may have been granted certain privileges for performing one or more "
+"specific actions within an application. A permission on the other hand is a "
+"privilege (sometimes once-off) for performing a single, specific action. It "
+"is entirely possible to build an application using nothing but permissions, "
+"however roles offer a higher level of convenience when granting privileges "
+"to groups of users."
+msgstr ""
+"Seam Security API 所提供的每个授权机制的都是基于用户被授予角色和/或权限的概"
+"念。角色(Role)是用户在应用程序里执行一个或多个特殊动作时被授予的权限的"
+"<emphasis>组(group)</emphasis>或<emphasis>类型(type)</emphasis>。从另外一"
+"方面来说,权限(Permission)执行单个特殊动作的特权。我们完全可以只用权限来构"
+"建应用程序,但是角色提供了更方便的途径来为组用户赋予特权。"
+
+#. Tag: para
+#: Security.xml:244
+#, no-c-format
+msgid ""
+"Roles are simple, consisting of only a name such as \"admin\", \"user\", "
+"\"customer\", etc. Permissions consist of both a name and an action, and are "
+"represented within this documentation in the form <literal>name:action</"
+"literal>, for example <literal>customer:delete</literal>, or "
+"<literal>customer:insert</literal>."
+msgstr ""
+"角色很简单,它由\"admin\"、\"user\"、\"customer\" 等名称组成。权限则由名称和"
+"动作组成,在本文档里以 <literal>名称:动作</literal> 的格式表示。例如: "
+"<literal>customer:delete</literal> 或 <literal>customer:insert</literal>。"
+
+#. Tag: title
+#: Security.xml:247
+#, no-c-format
+msgid "Securing components"
+msgstr "设置组件的安全性"
+
+#. Tag: para
+#: Security.xml:248
+#, no-c-format
+msgid ""
+"Let&#39;s start by examining the simplest form of authorization, component "
+"security, starting with the <literal>@Restrict</literal> annotation."
+msgstr ""
+"让我们从最简单的授权形式、组件安全性开始,先来看看 <literal>@Restrict</"
+"literal> 注解。 "
+
+#. Tag: title
+#: Security.xml:251
+#, no-c-format
+msgid "The @Restrict annotation"
+msgstr "@Restrict 注解"
+
+#. Tag: para
+#: Security.xml:252
+#, no-c-format
+msgid ""
+"Seam components may be secured either at the method or the class level, "
+"using the <literal>@Restrict</literal> annotation. If both a method and "
+"it&#39;s declaring class are annotated with <literal>@Restrict</literal>, "
+"the method restriction will take precedence (and the class restriction will "
+"not apply). If a method invocation fails a security check, then an exception "
+"will be thrown as per the contract for <literal>Identity.checkRestriction()</"
+"literal> (see Inline Restrictions). A <literal>@Restrict</literal> on just "
+"the component class itself is equivalent to adding <literal>@Restrict</"
+"literal> to each of its methods."
+msgstr ""
+"Seam 组件可以使用 <literal>@Restrict</literal> 注解设置方法或类级别的安全性。"
+"如果某个方法及其声明它的类都用 <literal>@Restrict</literal> 注解,则方法的限"
+"制优先(类的限制将不适用)。如果方法调用没有通过安全检查,异常 "
+"<literal>Identity.checkRestriction()</literal>(参考 Inline Restrictions)将"
+"被抛出。组件类的 <literal>@Restrict</literal> 注解相当于在它的每个方法上进行 "
+"<literal>@Restrict</literal> 注解。 "
+
+#. Tag: para
+#: Security.xml:255
+#, no-c-format
+msgid ""
+"An empty <literal>@Restrict</literal> implies a permission check of "
+"<literal>componentName:methodName</literal>. Take for example the following "
+"component method:"
+msgstr ""
+"空的 <literal>@Restrict</literal> 暗示着对 <literal>componentName:"
+"methodName</literal> 的权限检查。看看下面的组件方法:"
+
+#. Tag: programlisting
+#: Security.xml:258
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class AccountAction {\n"
+"    @Restrict public void delete() {\n"
+"      ...\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"account\")\n"
+"public class AccountAction {\n"
+"    @Restrict public void delete() {\n"
+"      ...\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Security.xml:259
+#, no-c-format
+msgid ""
+"In this example, the implied permission required to call the <literal>delete"
+"()</literal> method is <literal>account:delete</literal>. The equivalent of "
+"this would be to write <literal>@Restrict(\"#{s:hasPermission(&#39;"
+"account&#39;,&#39;delete&#39;,null)}\")</literal>. Now let&#39;s look at "
+"another example:"
+msgstr ""
+"在这个例子里,调用 <literal>delete()</literal> 方法所隐含的权限要求是 "
+"<literal>account:delete</literal>。这和 <literal>@Restrict(\"#{s:"
+"hasPermission(&#39;account&#39;,&#39;delete&#39;,null)}\")</literal> 其实是相"
+"同的。现在让我们看看另外一个例子:"
+
+#. Tag: programlisting
+#: Security.xml:262
+#, no-c-format
+msgid ""
+"@Restrict @Name(\"account\")\n"
+"public class AccountAction {\n"
+"    public void insert() {\n"
+"      ...\n"
+"    }\n"
+"    @Restrict(\"#{s:hasRole(&#39;admin&#39;)}\") \n"
+"    public void delete() {\n"
+"      ...\n"
+"    }\n"
+"}"
+msgstr ""
+"@Restrict @Name(\"account\")\n"
+"public class AccountAction {\n"
+"    public void insert() {\n"
+"      ...\n"
+"    }\n"
+"    @Restrict(\"#{s:hasRole(&#39;admin&#39;)}\") \n"
+"    public void delete() {\n"
+"      ...\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Security.xml:263
+#, no-c-format
+msgid ""
+"This time, the component class itself is annotated with <literal>@Restrict</"
+"literal>. This means that any methods without an overriding "
+"<literal>@Restrict</literal> annotation require an implicit permission "
+"check. In the case of this example, the <literal>insert()</literal> method "
+"requires a permission of <literal>account:insert</literal>, while the "
+"<literal>delete()</literal> method requires that the user is a member of the "
+"<literal>admin</literal> role."
+msgstr ""
+"在这个例子里,组件类本身用 <literal>@Restrict</literal> 进行了注解。这意味着"
+"任何没用 <literal>@Restrict</literal> 覆盖的方法都需要进行隐含的权限检查。在"
+"这里,<literal>insert()</literal> 方法要求 <literal>account:insert</literal> "
+"权限,而 <literal>delete()</literal> 要求用户属于 <literal>admin</literal> 角"
+"色。"
+
+#. Tag: para
+#: Security.xml:266
+#, no-c-format
+msgid ""
+"Before we go any further, let&#39;s address the <literal>#{s:hasRole()}</"
+"literal> expression seen in the above example. Both <literal>s:hasRole</"
+"literal> and <literal>s:hasPermission</literal> are EL functions, which "
+"delegate to the correspondingly named methods of the <literal>Identity</"
+"literal> class. These functions can be used within any EL expression "
+"throughout the entirety of the security API."
+msgstr ""
+"在进一步讨论之前,让我们先解决上面例子里的 <literal>#{s:hasRole()}</literal> "
+"表达式。<literal>s:hasRole</literal> 和 <literal>s:hasPermission</literal> 都"
+"是 EL 函数,它们委托给对应的 <literal>Identity</literal> 类的方法。这些函数可"
+"以在整个 security API 里的任何 EL 表达式里使用。 "
+
+#. Tag: para
+#: Security.xml:269
+#, no-c-format
+msgid ""
+"Being an EL expression, the value of the <literal>@Restrict</literal> "
+"annotation may reference any objects that exist within a Seam context. This "
+"is extremely useful when performing permission checks for a specific object "
+"instance. Look at this example:"
+msgstr ""
+"作为 EL 表达式,<literal>@Restrict</literal> 注解的值可以引用存在 Seam 上下文"
+"里的任何对象。当对某个特殊的对象实例执行权限检查时,这非常有用。看看下面的例"
+"子:"
+
+#. Tag: programlisting
+#: Security.xml:272
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class AccountAction {\n"
+"    @In Account selectedAccount;\n"
+"    @Restrict(\"#{s:hasPermission(&#39;account&#39;,&#39;modify&#39;,"
+"selectedAccount)}\")\n"
+"    public void modify() {\n"
+"        selectedAccount.modify();\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"account\")\n"
+"public class AccountAction {\n"
+"    @In Account selectedAccount;\n"
+"    @Restrict(\"#{s:hasPermission(&#39;account&#39;,&#39;modify&#39;,"
+"selectedAccount)}\")\n"
+"    public void modify() {\n"
+"        selectedAccount.modify();\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Security.xml:273
+#, no-c-format
+msgid ""
+"The interesting thing to note from this example is the reference to "
+"<literal>selectedAccount</literal> seen within the <literal>hasPermission()</"
+"literal> function call. The value of this variable will be looked up from "
+"within the Seam context, and passed to the <literal>hasPermission()</"
+"literal> method in <literal>Identity</literal>, which in this case can then "
+"determine if the user has the required permission for modifying the "
+"specified <literal>Account</literal> object."
+msgstr ""
+"这个例子里比较有意思的是在 <literal>hasPermission()</literal> 调用里对 "
+"<literal>selectedAccount</literal> 的引用。这个变量的值将在 Seam 上下文里进行"
+"查找并传递给 <literal>Identity</literal> 里的 <literal>hasPermission()</"
+"literal> 方法,然后就可以决定是否用户有修改指定的 <literal>Account</literal> "
+"对象所需的权限。"
+
+#. Tag: title
+#: Security.xml:276
+#, no-c-format
+msgid "Inline restrictions"
+msgstr "内联限制(Inline restrictions)"
+
+#. Tag: para
+#: Security.xml:277
+#, no-c-format
+msgid ""
+"Sometimes it might be desirable to perform a security check in code, without "
+"using the <literal>@Restrict</literal> annotation. In this situation, simply "
+"use <literal>Identity.checkRestriction()</literal> to evaluate a security "
+"expression, like this:"
+msgstr ""
+"有时候在代码里执行安全性检查比使用 <literal>@Restrict</literal> 注解更为可"
+"取。在这种情况下,简单地使用 <literal>Identity.checkRestriction()</literal> "
+"来对安全表达式求值就可以了,如:"
+
+#. Tag: programlisting
+#: Security.xml:280
+#, no-c-format
+msgid ""
+"public void deleteCustomer() {\n"
+"    Identity.instance().checkRestriction(\"#{s:hasPermission(&#39;"
+"customer&#39;,&#39;delete&#39;,\n"
+"      selectedCustomer)}\");\n"
+"}"
+msgstr ""
+"public void deleteCustomer() {\n"
+"    Identity.instance().checkRestriction(\"#{s:hasPermission(&#39;"
+"customer&#39;,&#39;delete&#39;,\n"
+"      selectedCustomer)}\");\n"
+"}"
+
+#. Tag: para
+#: Security.xml:281
+#, no-c-format
+msgid ""
+"If the expression specified doesn&#39;t evaluate to <literal>true</literal>, "
+"either"
+msgstr "如果指定的表达式的值不等于 <literal>true</literal>, "
+
+#. Tag: para
+#: Security.xml:286
+#, no-c-format
+msgid ""
+"if the user is not logged in, a <literal>NotLoggedInException</literal> "
+"exception is thrown or"
+msgstr ""
+"如果用户没有登录,<literal>NotLoggedInException</literal> 将被抛出,或者"
+
+#. Tag: para
+#: Security.xml:291
+#, no-c-format
+msgid ""
+"if the user is logged in, an <literal>AuthorizationException</literal> "
+"exception is thrown."
+msgstr ""
+"如果用户已经登录, <literal>AuthorizationException</literal> 将被抛出。"
+
+#. Tag: para
+#: Security.xml:296
+#, no-c-format
+msgid ""
+"It is also possible to call the <literal>hasRole()</literal> and "
+"<literal>hasPermission()</literal> methods directly from Java code:"
+msgstr ""
+"你也可能直接从 Java 代码里调用 <literal>hasRole()</literal> 和 "
+"<literal>hasPermission()</literal> 方法:"
+
+#. Tag: programlisting
+#: Security.xml:299
+#, no-c-format
+msgid ""
+"if (!Identity.instance().hasRole(\"admin\"))\n"
+"     throw new AuthorizationException(\"Must be admin to perform this action"
+"\");\n"
+"\n"
+"if (!Identity.instance().hasPermission(\"customer\", \"create\", null))\n"
+"     throw new AuthorizationException(\"You may not create new customers\");"
+msgstr ""
+"if (!Identity.instance().hasRole(\"admin\"))\n"
+"     throw new AuthorizationException(\"Must be admin to perform this action"
+"\");\n"
+"\n"
+"if (!Identity.instance().hasPermission(\"customer\", \"create\", null))\n"
+"     throw new AuthorizationException(\"You may not create new customers\");"
+
+#. Tag: title
+#: Security.xml:300
+#, no-c-format
+msgid "Security in the user interface"
+msgstr "用户界面的安全性"
+
+#. Tag: para
+#: Security.xml:301
+#, no-c-format
+msgid ""
+"One indication of a well designed user interface is that the user is not "
+"presented with options for which they don&#39;t have the necessary "
+"privileges to use. Seam Security allows conditional rendering of either 1) "
+"sections of a page or 2) individual controls, based upon the privileges of "
+"the user, using the very same EL expressions that are used for component "
+"security."
+msgstr ""
+"设计良好的用户界面的一个特征就是让用户不能访问他们没有所需权限的选项。Seam "
+"Security 使用非常简单的用于组件安全性的 EL 表达式,允许基于用户的权限有条件地"
+"显示 1) 页面选择 或 2) 单个的控件。 "
+
+#. Tag: para
+#: Security.xml:304
+#, no-c-format
+msgid ""
+"Let&#39;s take a look at some examples of interface security. First of all, "
+"let&#39;s pretend that we have a login form that should only be rendered if "
+"the user is not already logged in. Using the <literal>identity.isLoggedIn()</"
+"literal> property, we can write this:"
+msgstr ""
+"让我们看看界面安全性的一些例子。首先,假设我们有一个登录表单,它只在用户还没"
+"有登录时显示。我们可以使用 <literal>identity.isLoggedIn()</literal> 属性: "
+
+#. Tag: programlisting
+#: Security.xml:307
+#, no-c-format
+msgid ""
+"&lt;h:form class=\"loginForm\" rendered=\"#{not identity.loggedIn}\"&gt;"
+msgstr ""
+"&lt;h:form class=\"loginForm\" rendered=\"#{not identity.loggedIn}\"&gt;"
+
+#. Tag: para
+#: Security.xml:308
+#, no-c-format
+msgid ""
+"If the user isn&#39;t logged in, then the login form will be rendered - very "
+"straight forward so far. Now let&#39;s pretend there is a menu on the page "
+"that contains some actions which should only be accessible to users in the "
+"<literal>manager</literal> role. Here&#39;s one way that these could be "
+"written:"
+msgstr ""
+"如果用户没有登录,这个登录表单将被显示 - 到目前位置这很简单。现在让我们假设页"
+"面上有一个菜单,它包含一些只供角色为 <literal>manager</literal> 的用户访问的"
+"动作。我们可以用下面的方法实现: "
+
+#. Tag: programlisting
+#: Security.xml:311
+#, no-c-format
+msgid ""
+"&lt;h:outputLink action=\"#{reports.listManagerReports}\" rendered=\"#{s:"
+"hasRole(&#39;manager&#39;)}\"&gt;\n"
+"    Manager Reports\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+"&lt;h:outputLink action=\"#{reports.listManagerReports}\" rendered=\"#{s:"
+"hasRole(&#39;manager&#39;)}\"&gt;\n"
+"    Manager Reports\n"
+"&lt;/h:outputLink&gt;"
+
+#. Tag: para
+#: Security.xml:312
+#, no-c-format
+msgid ""
+"This is also quite straight forward. If the user is not a member of the "
+"<literal>manager</literal> role, then the outputLink will not be rendered. "
+"The <literal>rendered</literal> attribute can generally be used on the "
+"control itself, or on a surrounding <literal>&lt;s:div&gt;</literal> or "
+"<literal>&lt;s:span&gt;</literal> control."
+msgstr ""
+"这也很简单。如果用户不属于 <literal>manager</literal> 角色,outputLink 将被显"
+"示。<literal>rendered</literal> 属性通常可以用在控件自身,或周围的 "
+"<literal>&lt;s:div&gt;</literal> 或 <literal>&lt;s:span&gt;</literal> 控件。"
+
+#. Tag: para
+#: Security.xml:315
+#, no-c-format
+msgid ""
+"Now for something more complex. Let&#39;s say you have a <literal>h:"
+"dataTable</literal> control on a page listing records for which you may or "
+"may not wish to render action links depending on the user&#39;s privileges. "
+"The <literal>s:hasPermission</literal> EL function allows us to pass in an "
+"object parameter which can be used to determine whether the user has the "
+"requested permission for that object or not. Here&#39;s how a dataTable with "
+"secured links might look:"
+msgstr ""
+"现在来看看更复杂的东西。假设在一个列出记录的页面上有一个 <literal>h:"
+"dataTable</literal> 控件,你可能希望根据用户的权限来显示动作的链接。"
+"<literal>s:hasPermission</literal> EL 函数允许我们传入对象参数,这可以用来决"
+"定这个用户是否具有访问该对象所需的权限。带有设置了安全性的链接的 dataTable 可"
+"能类似于: "
+
+#. Tag: programlisting
+#: Security.xml:318
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{clients}\" var=\"cl\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Name&lt;/f:facet&gt;\n"
+"        #{cl.name}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;City&lt;/f:facet&gt;\n"
+"        #{cl.city}\n"
+"    &lt;/h:column&gt;   \n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"        &lt;s:link value=\"Modify Client\" action=\"#{clientAction.modify}"
+"\"\n"
+"                rendered=\"#{s:hasPermission(&#39;client&#39;,&#39;"
+"modify&#39;,cl)\"/&gt;\n"
+"        &lt;s:link value=\"Delete Client\" action=\"#{clientAction.delete}"
+"\"\n"
+"                rendered=\"#{s:hasPermission(&#39;client&#39;,&#39;"
+"delete&#39;,cl)\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+"&lt;h:dataTable value=\"#{clients}\" var=\"cl\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Name&lt;/f:facet&gt;\n"
+"        #{cl.name}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;City&lt;/f:facet&gt;\n"
+"        #{cl.city}\n"
+"    &lt;/h:column&gt;   \n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"        &lt;s:link value=\"Modify Client\" action=\"#{clientAction.modify}"
+"\"\n"
+"                rendered=\"#{s:hasPermission(&#39;client&#39;,&#39;"
+"modify&#39;,cl)\"/&gt;\n"
+"        &lt;s:link value=\"Delete Client\" action=\"#{clientAction.delete}"
+"\"\n"
+"                rendered=\"#{s:hasPermission(&#39;client&#39;,&#39;"
+"delete&#39;,cl)\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+
+#. Tag: title
+#: Security.xml:319
+#, no-c-format
+msgid "Securing pages"
+msgstr "设置页面的安全性"
+
+#. Tag: para
+#: Security.xml:320
+#, no-c-format
+msgid ""
+"Page security requires that the application is using a <literal>pages.xml</"
+"literal> file, however is extremely simple to configure. Simply include a "
+"<literal>&lt;restrict/&gt;</literal> element within the <literal>page</"
+"literal> elements that you wish to secure. By default, if a value is not "
+"provided for the <literal>restrict</literal> element, an implied permission "
+"of <literal>{viewId}:render</literal> will be checked for whenever accessing "
+"that page. Otherwise the value will be evaluated as a standard security "
+"expression. Here&#39;s a couple of examples:"
+msgstr ""
+"设置页面的安全性要求应用程序使用 <literal>pages.xml</literal> 文件,其配置极"
+"其简单。这只需要简单地在你要设置安全性的 <literal>page</literal> 元素里包括一"
+"个 <literal>&lt;restrict/&gt;</literal> 元素。在缺省情况下,如果 "
+"<literal>restrict</literal> 元素没有提供值,访问该页面时将检查隐含的 "
+"<literal>{viewId}:render</literal> 权限。否则这个值将作为标准的安全性表达式进"
+"行求值。下面是几个例子: "
+
+#. Tag: programlisting
+#: Security.xml:323
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/settings.xhtml\"&gt;\n"
+"    &lt;restrict/&gt;\n"
+"&lt;/page&gt;\n"
+"        \n"
+"&lt;page view-id=\"/reports.xhtml\"&gt;    \n"
+"    &lt;restrict&gt;#{s:hasRole(&#39;admin&#39;)}&lt;/restrict&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+"&lt;page view-id=\"/settings.xhtml\"&gt;\n"
+"    &lt;restrict/&gt;\n"
+"&lt;/page&gt;\n"
+"        \n"
+"&lt;page view-id=\"/reports.xhtml\"&gt;    \n"
+"    &lt;restrict&gt;#{s:hasRole(&#39;admin&#39;)}&lt;/restrict&gt;\n"
+"&lt;/page&gt;"
+
+#. Tag: para
+#: Security.xml:324
+#, no-c-format
+msgid ""
+"In the above example, the first page has an implied permission restriction "
+"of <literal>/settings.xhtml:render</literal>, while the second one checks "
+"that the user is a member of the <literal>admin</literal> role."
+msgstr ""
+"在上面的例子里,第一个页面带有隐含的 <literal>/settings.xhtml:render</"
+"literal> 权限限制,而第二个将检查用户是否属于 <literal>admin</literal> 角色。"
+
+#. Tag: title
+#: Security.xml:327
+#, no-c-format
+msgid "Securing Entities"
+msgstr "设置实体的安全性"
+
+#. Tag: para
+#: Security.xml:328
+#, no-c-format
+msgid ""
+"Seam security also makes it possible to apply security restrictions to read, "
+"insert, update and delete actions for entities."
+msgstr "Seam security 也可以为实体应用读、插入、更新和删除动作的安全性限制。"
+
+#. Tag: para
+#: Security.xml:331
+#, no-c-format
+msgid ""
+"To secure all actions for an entity class, add a <literal>@Restrict</"
+"literal> annotation on the class itself:"
+msgstr ""
+"要为实体类的所有动作设置安全性,可以在这个类里加入 <literal>@Restrict</"
+"literal> 注解:"
+
+#. Tag: programlisting
+#: Security.xml:334
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"customer\")\n"
+"@Restrict\n"
+"public class Customer {\n"
+"  ...\n"
+"}"
+msgstr ""
+"@Entity\n"
+"@Name(\"customer\")\n"
+"@Restrict\n"
+"public class Customer {\n"
+"  ...\n"
+"}"
+
+#. Tag: para
+#: Security.xml:335
+#, no-c-format
+msgid ""
+"If no expression is specified in the <literal>@Restrict</literal> "
+"annotation, the default security check that is performed is a permission "
+"check of <literal>entityName:action</literal>, where <literal>entityName</"
+"literal> is the Seam component name of the entity (or the fully-qualified "
+"class name if no @Name is specified), and the <literal>action</literal> is "
+"either <literal>read</literal>, <literal>insert</literal>, <literal>update</"
+"literal> or <literal>delete</literal>."
+msgstr ""
+"如果在 <literal>@Restrict</literal> 注解里没有指定表达式,则所执行的缺省安全"
+"性检查是 <literal>entityName:action</literal>,这里的 <literal>entityName</"
+"literal> 是实体的名称(如果没有指定 @Name 则是全限定类名),且 "
+"<literal>action</literal> 是 <literal>read</literal>、<literal>insert</"
+"literal>、<literal>update</literal> 或 <literal>delete</literal> 之一。"
+
+#. Tag: para
+#: Security.xml:338
+#, no-c-format
+msgid ""
+"It is also possible to only restrict certain actions, by placing a "
+"<literal>@Restrict</literal> annotation on the relevent entity lifecycle "
+"method (annotated as follows):"
+msgstr ""
+"通过在相关的实体生命周期方法里放入 <literal>@Restrict</literal> 注解(如下所"
+"示),你也可以只限制某些动作:"
+
+#. Tag: para
+#: Security.xml:343
+#, no-c-format
+msgid ""
+"<literal>@PostLoad</literal> - Called after an entity instance is loaded "
+"from the database. Use this method to configure a <literal>read</literal> "
+"permission."
+msgstr ""
+"<literal>@PostLoad</literal> - 在实体实例从数据库里加载后被调用。使用这个方法"
+"来配置 <literal>read</literal> 权限。"
+
+#. Tag: para
+#: Security.xml:348
+#, no-c-format
+msgid ""
+"<literal>@PrePersist</literal> - Called before a new instance of the entity "
+"is inserted. Use this method to configure an <literal>insert</literal> "
+"permission."
+msgstr ""
+"<literal>@PrePersist</literal> - 在插入实体的新实例之前被调用。使用这个方法来"
+"配置 <literal>insert</literal> 权限。"
+
+#. Tag: para
+#: Security.xml:353
+#, no-c-format
+msgid ""
+"<literal>@PreUpdate</literal> - Called before an entity is updated. Use this "
+"method to configure an <literal>update</literal> permission."
+msgstr ""
+"<literal>@PreUpdate</literal> - 在实体被更新之前被调用。使用它来配置 "
+"<literal>update</literal> 权限。"
+
+#. Tag: para
+#: Security.xml:358
+#, no-c-format
+msgid ""
+"<literal>@PreRemove</literal> - Called before an entity is deleted. Use this "
+"method to configure a <literal>delete</literal> permission."
+msgstr ""
+"<literal>@PreRemove</literal> - 在实体被删除之前被调用。使用这个方法来配置 "
+"<literal>delete</literal> 权限。"
+
+#. Tag: para
+#: Security.xml:363
+#, no-c-format
+msgid ""
+"Here&#39;s an example of how an entity would be configured to perform a "
+"security check for any <literal>insert</literal> operations. Please note "
+"that the method is not required to do anything, the only important thing in "
+"regard to security is how it is annotated:"
+msgstr ""
+"下面的例子演示了怎样配置实体为任何 <literal>insert</literal> 操作执行安全性检"
+"查。请注意,这个方法并没有任何实际内容,和安全性相关的唯一重要的事情是它是如"
+"何被注解的: "
+
+#. Tag: programlisting
+#: Security.xml:366
+#, no-c-format
+msgid ""
+"@PrePersist @Restrict\n"
+"  public void prePersist() {}"
+msgstr ""
+"@PrePersist @Restrict\n"
+"  public void prePersist() {}"
+
+#. Tag: para
+#: Security.xml:367
+#, no-c-format
+msgid ""
+"And here&#39;s an example of an entity permission rule that checks if the "
+"authenticated user is allowed to insert a new <literal>MemberBlog</literal> "
+"record (from the seamspace example). The entity for which the security check "
+"is being made is automatically asserted into the working memory (in this "
+"case <literal>MemberBlog</literal>):"
+msgstr ""
+"下面的例子是关于实体权限规则的,它检查被验证的用户是否被允许创建新的 "
+"<literal>MemberBlog</literal> 记录(来自 seamspace 示例)。被执行安全检查的实"
+"体自动地插入工作内存(这里是 <literal>MemberBlog</literal>):"
+
+#. Tag: programlisting
+#: Security.xml:370
+#, no-c-format
+msgid ""
+"rule InsertMemberBlog\n"
+"  no-loop\n"
+"  activation-group \"permissions\"  \n"
+"when\n"
+"  check: PermissionCheck(name == \"memberBlog\", action == \"insert\", "
+"granted == false)\n"
+"  Principal(principalName : name)\n"
+"  MemberBlog(member : member -&gt; (member.getUsername().equals"
+"(principalName)))\n"
+"then\n"
+"  check.grant();\n"
+"end;"
+msgstr ""
+"rule InsertMemberBlog\n"
+"  no-loop\n"
+"  activation-group \"permissions\"  \n"
+"when\n"
+"  check: PermissionCheck(name == \"memberBlog\", action == \"insert\", "
+"granted == false)\n"
+"  Principal(principalName : name)\n"
+"  MemberBlog(member : member -&gt; (member.getUsername().equals"
+"(principalName)))\n"
+"then\n"
+"  check.grant();\n"
+"end;"
+
+#. Tag: para
+#: Security.xml:371
+#, no-c-format
+msgid ""
+"This rule will grant the permission <literal>memberBlog:insert</literal> if "
+"the currently authenticated user (indicated by the <literal>Principal</"
+"literal> fact) has the same name as the member for which the blog entry is "
+"being created. The \"<literal>name : name</literal>\" structure that can be "
+"seen in the <literal>Principal</literal> fact (and other places) is a "
+"variable binding - it binds the <literal>name</literal> property of the "
+"<literal>Principal</literal> to a variable called <literal>name</literal>. "
+"Variable bindings allow the value to be referred to in other places, such as "
+"the following line which compares the member&#39;s username to the "
+"<literal>Principal</literal> name. For more details, please refer to the "
+"JBoss Rules documentation."
+msgstr ""
+"如果当前被验证的用户具有和创建这个 Blog 条目的成员相同的名字,这个规则将赋予"
+"其 <literal>memberBlog:insert</literal> 权限。在 <literal>Principal</"
+"literal> 里(以及其他地方)可以看到的 \"<literal>name : name</literal>\" 结构"
+"是一个变量绑定 - 它把 <literal>Principal</literal> 的 <literal>name</"
+"literal> 属性绑定到名为 <literal>name</literal> 的变量。变量绑定允许在其他地"
+"方引用它的值,如下面比较成员的用户名和 <literal>Principal</literal> 名字的一"
+"行。关于更多的细节,请参考 JBoss Rules 文档。"
+
+#. Tag: para
+#: Security.xml:374
+#, no-c-format
+msgid ""
+"Finally, we need to install a listener class that integrates Seam security "
+"with your JPA provider."
+msgstr ""
+"最后,我们需要安装一个 listener 类,它集成了 Seam security 和你的 JPA 提供"
+"者。"
+
+#. Tag: title
+#: Security.xml:377
+#, no-c-format
+msgid "Entity security with JPA"
+msgstr "使用 JPA 的实体安全性"
+
+#. Tag: para
+#: Security.xml:378
+#, no-c-format
+msgid ""
+"Security checks for EJB3 entity beans are performed with an "
+"<literal>EntityListener</literal>. You can install this listener by using "
+"the following <literal>META-INF/orm.xml</literal> file:"
+msgstr ""
+"EJB3 entity bean 的安全性检查是用 <literal>EntityListener</literal> 执行的。"
+"你可以用下面的 <literal>META-INF/orm.xml</literal> 文件安装这个 listener:"
+
+#. Tag: programlisting
+#: Security.xml:381
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;entity-mappings xmlns=\"http://java.sun.com/xml/ns/persistence/orm\"\n"
+"                 xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"                 xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence/"
+"orm \n"
+"                                            http://java.sun.com/xml/ns/"
+"persistence/orm_1_0.xsd\"\n"
+"                 version=\"1.0\"&gt;\n"
+"                 \n"
+"    &lt;persistence-unit-metadata&gt;\n"
+"        &lt;persistence-unit-defaults&gt;\n"
+"            &lt;entity-listeners&gt;\n"
+"                &lt;entity-listener class=\"org.jboss.seam.security."
+"EntitySecurityListener\"/&gt;\n"
+"            &lt;/entity-listeners&gt;\n"
+"        &lt;/persistence-unit-defaults&gt;\n"
+"    &lt;/persistence-unit-metadata&gt;\n"
+"    \n"
+"&lt;/entity-mappings&gt;"
+msgstr ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;entity-mappings xmlns=\"http://java.sun.com/xml/ns/persistence/orm\"\n"
+"                 xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"                 xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence/"
+"orm \n"
+"                                            http://java.sun.com/xml/ns/"
+"persistence/orm_1_0.xsd\"\n"
+"                 version=\"1.0\"&gt;\n"
+"                 \n"
+"    &lt;persistence-unit-metadata&gt;\n"
+"        &lt;persistence-unit-defaults&gt;\n"
+"            &lt;entity-listeners&gt;\n"
+"                &lt;entity-listener class=\"org.jboss.seam.security."
+"EntitySecurityListener\"/&gt;\n"
+"            &lt;/entity-listeners&gt;\n"
+"        &lt;/persistence-unit-defaults&gt;\n"
+"    &lt;/persistence-unit-metadata&gt;\n"
+"    \n"
+"&lt;/entity-mappings&gt;"
+
+#. Tag: title
+#: Security.xml:382
+#, no-c-format
+msgid "Entity security with Hibernate"
+msgstr "使用 Hibernate 的实体安全性"
+
+#. Tag: para
+#: Security.xml:383
+#, no-c-format
+msgid ""
+"If you are using a Hibernate <literal>SessionFactory</literal> configured "
+"via Seam, you don&#39;t need to do anything special to use entity security."
+msgstr ""
+"如果你使用通过 Seam 配置的 Hibernate <literal>SessionFactory</literal>,你不"
+"需要进行任何特殊的设置来使用实体安全性。 "
+
+#. Tag: title
+#: Security.xml:386
+#, no-c-format
+msgid "Writing Security Rules"
+msgstr "编写安全性规则"
+
+#. Tag: para
+#: Security.xml:387
+#, no-c-format
+msgid ""
+"Up to this point there has been a lot of mention of permissions, but no "
+"information about how permissions are actually defined or granted. This "
+"section completes the picture, by explaining how permission checks are "
+"processed, and how to implement permission checks for a Seam application."
+msgstr ""
+"到目前为止,我们提到了许多权限方面的东西,但并没有涉及如何定义或赋予权限。本"
+"节将解释怎样处理权限检查、以及如何在 Seam 应用程序里实现权限检查。"
+
+#. Tag: title
+#: Security.xml:390
+#, no-c-format
+msgid "Permissions Overview"
+msgstr "权限概述"
+
+#. Tag: para
+#: Security.xml:391
+#, no-c-format
+msgid ""
+"So how does the security API know whether a user has the <literal>customer:"
+"modify</literal> permission for a specific customer? Seam Security provides "
+"quite a novel method for determining user permissions, based on JBoss Rules. "
+"A couple of the advantages of using a rule engine are 1) a centralized "
+"location for the business logic that is behind each user permission, and 2) "
+"speed - JBoss Rules uses very efficient algorithms for evaluating large "
+"numbers of complex rules involving multiple conditions."
+msgstr ""
+"security API 怎么知道用户是否具有对某个特殊客户的 <literal>customer:modify</"
+"literal> 权限?Seam Security 提供相当新奇的、基于 JBoss Rules 的方法来决定用"
+"户权限。使用规则引擎的一些优势是 1)为每个用户权限后面的商业逻辑提供一个集中"
+"的位置 2)速度 - JBoss Rules 使用非常高效的算法来评估大量的涉及多个条件的复杂"
+"规则。"
+
+#. Tag: title
+#: Security.xml:394
+#, no-c-format
+msgid "Configuring a rules file"
+msgstr "配置一个规则文件"
+
+#. Tag: para
+#: Security.xml:395
+#, no-c-format
+msgid ""
+"Seam Security expects to find a <literal>RuleBase</literal> component called "
+"<literal>securityRules</literal> which it uses to evaluate permission "
+"checks. This is configured in <literal>components.xml</literal> as follows:"
+msgstr ""
+"Seam Security 期望找到一个名为 <literal>securityRules</literal> 的 "
+"<literal>RuleBase</literal> 组件,它被用来为权限检查求值。这是在 "
+"<literal>components.xml</literal> 文件里配置的:"
+
+#. Tag: programlisting
+#: Security.xml:398
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:security=\"http://jboss.com/products/seam/security\"\n"
+"            xmlns:drools=\"http://jboss.com/products/seam/drools\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                                              http://jboss.com/products/seam/"
+"core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components \n"
+"                                              http://jboss.com/products/seam/"
+"components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/drools \n"
+"                                              http://jboss.com/products/seam/"
+"drools-1.2.xsd\"\n"
+"                 http://jboss.com/products/seam/security \n"
+"                                              http://jboss.com/products/seam/"
+"security-1.2.xsd\"&gt;                 \n"
+"        \n"
+"   &lt;drools:rule-base name=\"securityRules\"&gt;\n"
+"       &lt;drools:rule-files&gt;\n"
+"           &lt;value&gt;/META-INF/security.drl&lt;/value&gt;\n"
+"       &lt;/drools:rule-files&gt;\n"
+"   &lt;/drools:rule-base&gt;    \n"
+"   \n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:security=\"http://jboss.com/products/seam/security\"\n"
+"            xmlns:drools=\"http://jboss.com/products/seam/drools\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                                              http://jboss.com/products/seam/"
+"core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components \n"
+"                                              http://jboss.com/products/seam/"
+"components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/drools \n"
+"                                              http://jboss.com/products/seam/"
+"drools-1.2.xsd\"\n"
+"                 http://jboss.com/products/seam/security \n"
+"                                              http://jboss.com/products/seam/"
+"security-1.2.xsd\"&gt;                 \n"
+"        \n"
+"   &lt;drools:rule-base name=\"securityRules\"&gt;\n"
+"       &lt;drools:rule-files&gt;\n"
+"           &lt;value&gt;/META-INF/security.drl&lt;/value&gt;\n"
+"       &lt;/drools:rule-files&gt;\n"
+"   &lt;/drools:rule-base&gt;    \n"
+"   \n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Security.xml:399
+#, no-c-format
+msgid ""
+"Once the <literal>RuleBase</literal> component is configured, it&#39;s time "
+"to write the security rules."
+msgstr ""
+"一旦配置了 <literal>RuleBase</literal> 规则,我们就可以编写安全性规则了。 "
+
+#. Tag: title
+#: Security.xml:402
+#, no-c-format
+msgid "Creating a security rules file"
+msgstr "创建安全性规则文件"
+
+#. Tag: para
+#: Security.xml:403
+#, no-c-format
+msgid ""
+"For this step you need to create a file called <literal>security.drl</"
+"literal> in the <literal>/META-INF</literal> directory of your "
+"application&#39;s jar file. In actual fact this file can be called anything "
+"you want, and exist in any location as long as it is configured "
+"appropriately in <literal>components.xml</literal>."
+msgstr ""
+"在这个步骤里,你需要在应用程序的 JAR 文件的 <literal>/META-INF</literal> 目录"
+"下创建一个名为 <literal>security.drl</literal> 的文件。实际上只要在 "
+"<literal>components.xml</literal> 里进行合适的配置,这个文件可以取任何名字、"
+"也可以置于任何目录下。 "
+
+#. Tag: para
+#: Security.xml:406
+#, no-c-format
+msgid ""
+"So what should the security rules file contain? At this stage it might be a "
+"good idea to at least skim through the JBoss Rules documentation, however to "
+"get started here&#39;s an extremely simple example:"
+msgstr ""
+"那安全性规则文件应该包含什么内容?浏览 JBoss Rules 文档可能是个好主意,然而要"
+"真正上手还是让我们来看看下面这个极其简单的例子: "
+
+#. Tag: programlisting
+#: Security.xml:409
+#, no-c-format
+msgid ""
+"package MyApplicationPermissions;\n"
+"\n"
+"import org.jboss.seam.security.PermissionCheck;\n"
+"import org.jboss.seam.security.Role;\n"
+"\n"
+"rule CanUserDeleteCustomers\n"
+"when\n"
+"  c: PermissionCheck(name == \"customer\", action == \"delete\")\n"
+"  Role(name == \"admin\")\n"
+"then\n"
+"  c.grant();\n"
+"end;"
+msgstr ""
+"package MyApplicationPermissions;\n"
+"\n"
+"import org.jboss.seam.security.PermissionCheck;\n"
+"import org.jboss.seam.security.Role;\n"
+"\n"
+"rule CanUserDeleteCustomers\n"
+"when\n"
+"  c: PermissionCheck(name == \"customer\", action == \"delete\")\n"
+"  Role(name == \"admin\")\n"
+"then\n"
+"  c.grant();\n"
+"end;"
+
+#. Tag: para
+#: Security.xml:410
+#, no-c-format
+msgid ""
+"Let&#39;s break this down. The first thing we see is the package "
+"declaration. A package in JBoss Rules is essentially a collection of rules. "
+"The package name can be anything you want - it doesn&#39;t relate to "
+"anything else outside the scope of the rule base."
+msgstr ""
+"我们看到的第一部分是包的声明。JBoss Rules 里的包基本上是规则的集合。包名可以"
+"是任何名字 - 它不和规则基础作用域之外的任何事情相关。 "
+
+#. Tag: para
+#: Security.xml:413
+#, no-c-format
+msgid ""
+"The next thing we can notice is a couple of import statements for the "
+"<literal>PermissionCheck</literal> and <literal>Role</literal> classes. "
+"These imports inform the rules engine that we&#39;ll be referencing these "
+"classes within our rules."
+msgstr ""
+"下面我们可以看到 <literal>PermissionCheck</literal> 和 <literal>Role</"
+"literal> 类的一些 import 语句。这些 import 语句通知规则引擎我们将在规则里引用"
+"这些类。 "
+
+#. Tag: para
+#: Security.xml:416
+#, no-c-format
+msgid ""
+"Finally we have the code for the rule. Each rule within a package should be "
+"given a unique name (usually describing the purpose of the rule). In this "
+"case our rule is called <literal>CanUserDeleteCustomers</literal> and will "
+"be used to check whether a user is allowed to delete a customer record."
+msgstr ""
+"最后是和规则相关的代码。每个包内的规则都应该被赋予唯一的名字(通常是描述该规"
+"则的用途)。在这个例子里,我们的规则被称为 <literal>CanUserDeleteCustomers</"
+"literal>,它被用来检查用户是否被允许删除客户记录。"
+
+#. Tag: para
+#: Security.xml:419
+#, no-c-format
+msgid ""
+"Looking at the body of the rule definition we can notice two distinct "
+"sections. Rules have what is known as a left hand side (LHS) and a right "
+"hand side (RHS). The LHS consists of the conditional part of the rule, i.e. "
+"a list of conditions which must be satisfied for the rule to fire. The LHS "
+"is represented by the <literal>when</literal> section. The RHS is the "
+"consequence, or action section of the rule that will only be fired if all of "
+"the conditions in the LHS are met. The RHS is represented by the "
+"<literal>then</literal> section. The end of the rule is denoted by the "
+"<literal>end;</literal> line."
+msgstr ""
+"在规则定义的主要部分,我们可以注意到两个不同的部分。规则具有左侧(Left Hand "
+"Side, LHS)和右侧(Right Hand Side)部分。LHS 由规则的条件部分组成,也就是"
+"说,执行规则所必须满足的条件列表。LHS 由 <literal>when</literal> 部分表示。"
+"RHS 是结果,或者说是当所有 LHS 的条件被满足时所执行的动作。RHS 由 "
+"<literal>then</literal> 部分表示。规则的尾部以 <literal>end;</literal> 行结"
+"束。"
+
+#. Tag: para
+#: Security.xml:422
+#, no-c-format
+msgid ""
+"If we look at the LHS of the rule, we see two conditions listed there. "
+"Let&#39;s examine the first condition:"
+msgstr "在这个规则的 LHS,我们可以看到列出的两个条件。让我们查看第一个条件: "
+
+#. Tag: programlisting
+#: Security.xml:425
+#, no-c-format
+msgid "c: PermissionCheck(name == \"customer\", action == \"delete\")"
+msgstr "c: PermissionCheck(name == \"customer\", action == \"delete\")"
+
+#. Tag: para
+#: Security.xml:426
+#, no-c-format
+msgid ""
+"In plain english, this condition is stating that there must exist a "
+"<literal>PermissionCheck</literal> object with a <literal>name</literal> "
+"property equal to \"customer\", and an <literal>action</literal> property "
+"equal to \"delete\" within the working memory. What is the working memory? "
+"It is a session-scoped object that contains the contextual information that "
+"is required by the rules engine to make a decision about a permission check. "
+"Each time the <literal>hasPermission()</literal> method is called, a "
+"temporary <literal>PermissionCheck</literal> object, or <emphasis>Fact</"
+"emphasis>, is asserted into the working memory. This "
+"<literal>PermissionCheck</literal> corresponds exactly to the permission "
+"that is being checked, so for example if you call <literal>hasPermission"
+"(\"account\", \"create\", null)</literal> then a <literal>PermissionCheck</"
+"literal> object with a <literal>name</literal> equal to \"account\" and "
+"<literal>action</literal> equal to \"create\" will be asserted into the "
+"working memory for the duration of the permission check."
+msgstr ""
+"这个条件表明,在工作内存(working memory)里必须有一个带有 <literal>name</"
+"literal> 属性等于 \"customer\"、<literal>action</literal> 属性等于 \"delete"
+"\" 的 <literal>PermissionCheck</literal> 对象。什么是工作内存呢?它是作用域"
+"为 session 的对象,它包含规则引擎对某个权限检查做决定所要求的上下文信息。当 "
+"<literal>hasPermission()</literal> 方法每次被调用时,临时的 "
+"<literal>PermissionCheck</literal> 对象或 <emphasis>Fact</emphasis> 在工作内"
+"存里被声明。这个 <literal>PermissionCheck</literal> 恰好对应于正被检查的权"
+"限,所以如果你调用 <literal>hasPermission(\"account\", \"create\", null)</"
+"literal>,在权限检查的过程中,一个带有 <literal>name</literal> 属性等于 "
+"\"account\"、<literal>action</literal> 属性等于 \"create\" 的 "
+"<literal>PermissionCheck</literal> 对象将在工作内存里声明。"
+
+#. Tag: para
+#: Security.xml:429
+#, no-c-format
+msgid ""
+"So what else is in the working memory? Besides the short-lived temporary "
+"facts asserted during a permission check, there are some longer-lived "
+"objects in the working memory that stay there for the entire duration of a "
+"user being authenticated. These include any <literal>java.security."
+"Principal</literal> objects that are created as part of the authentication "
+"process, plus a <literal>org.jboss.seam.security.Role</literal> object for "
+"each of the roles that the user is a member of. It is also possible to "
+"assert additional long-lived facts into the working memory by calling "
+"<literal>RuleBasedIdentity.instance().getSecurityContext().assertObject()</"
+"literal>, passing the object as a parameter."
+msgstr ""
+"那在工作内存里还有什么其他东西?除了在权限检查过程中声明的短暂的临时 fact,还"
+"有长期的对象存在于整个用户被验证的过程中。这包括作为验证过程一部分被创建的任"
+"何 <literal>java.security.Principal</literal> 对象,以及用户所属于的每个角色"
+"的 <literal>org.jboss.seam.security.Role</literal> 对象。你也可能通过调用 "
+"<literal>Identity.instance().getSecurityContext().assertObject()</literal>"
+"(把这个对象作为参数传入)来在工作内存里插入其他的长期的事实(fact)。"
+
+#. Tag: para
+#: Security.xml:432
+#, no-c-format
+msgid ""
+"Getting back to our simple example, we can also notice that the first line "
+"of our LHS is prefixed with <literal>c:</literal>. This is a variable "
+"binding, and is used to refer back to the object that is matched by the "
+"condition. Moving onto the second line of our LHS, we see this:"
+msgstr ""
+"回到我们的简单例子里,我们也可以注意到 LHS 的第一行是以 <literal>c:</"
+"literal> 为前缀的。这是一个变量绑定,它被用来引用这个条件所匹配的对象。在 "
+"LHS 的第二行,我们可以看到:"
+
+#. Tag: programlisting
+#: Security.xml:435
+#, no-c-format
+msgid "Role(name == \"admin\")"
+msgstr "Role(name == \"admin\")"
+
+#. Tag: para
+#: Security.xml:436
+#, no-c-format
+msgid ""
+"This condition simply states that there must be a <literal>Role</literal> "
+"object with a <literal>name</literal> of \"admin\" within the working "
+"memory. As mentioned, user roles are asserted into the working memory as "
+"long-lived facts. So, putting both conditions together, this rule is "
+"essentially saying \"I will fire if you are checking for the "
+"<literal>customer:delete</literal> permission and the user is a member of "
+"the <literal>admin</literal> role\"."
+msgstr ""
+"这个条件简单地表示在工作内存里必须存在一个 <literal>name</literal> 为 \"admin"
+"\" 的角色。如前所述,用户角色在工作内存里被声明为长期的 fact。所以,把这两个"
+"条件放在一起,这个规则基本上是说:“如果你具有 <literal>customer:delete</"
+"literal> 权限且该用户属于 <literal>admin</literal> 角色,我将被执行”。"
+
+#. Tag: para
+#: Security.xml:439
+#, no-c-format
+msgid ""
+"So what is the consequence of the rule firing? Let&#39;s take a look at the "
+"RHS of the rule:"
+msgstr "那执行这个规则的结果是什么呢?让我们看看此规则的 RHS: "
+
+#. Tag: programlisting
+#: Security.xml:442
+#, no-c-format
+msgid "c.grant()"
+msgstr "c.grant()"
+
+#. Tag: para
+#: Security.xml:443
+#, no-c-format
+msgid ""
+"The RHS consists of Java code, and in this case is invoking the "
+"<literal>grant()</literal> method of the <literal>c</literal> object, which "
+"as already mentioned is a variable binding for the <literal>PermissionCheck</"
+"literal> object. Besides the <literal>name</literal> and <literal>action</"
+"literal> properties of the <literal>PermissionCheck</literal> object, there "
+"is also a <literal>granted</literal> property which is initially set to "
+"<literal>false</literal>. Calling <literal>grant()</literal> on a "
+"<literal>PermissionCheck</literal> sets the <literal>granted</literal> "
+"property to <literal>true</literal>, which means that the permission check "
+"was successful, allowing the user to carry out whatever action the "
+"permission check was intended for."
+msgstr ""
+"RHS 由 Java 代码组成,它调用 <literal>c</literal> 对象的 <literal>grant()</"
+"literal> 方法,前面已经说到这是 <literal>PermissionCheck</literal> 的一个变量"
+"绑定。除了 <literal>PermissionCheck</literal> 对象的 <literal>name</literal> "
+"和 <literal>action</literal> 属性以外,这里也有一个 <literal>granted</"
+"literal> 属性,它的初始值是 <literal>false</literal>。调用 "
+"<literal>PermissionCheck</literal> 的 <literal>grant()</literal> 方法将 "
+"<literal>granted</literal> 设置为 <literal>true</literal>,这意味着权限检查成"
+"功了,用户将被允许执行权限检查所预定的任何动作。"
+
+#. Tag: title
+#: Security.xml:446
+#, no-c-format
+msgid "Wildcard permission checks"
+msgstr "通配权限检查"
+
+#. Tag: para
+#: Security.xml:447
+#, no-c-format
+msgid ""
+"It is possible to implement a wildcard permission check (which allows all "
+"actions for a given permission name), by omitting the <literal>action</"
+"literal> constraint for the <literal>PermissionCheck</literal> in your rule, "
+"like this:"
+msgstr ""
+"你也可以在规则里忽略 <literal>PermissionCheck</literal> 的 <literal>action</"
+"literal> 约束来执行通配权限检查(允许匹配给定权限名称的动作),如:"
+
+#. Tag: programlisting
+#: Security.xml:450
+#, no-c-format
+msgid ""
+"rule CanDoAnythingToCustomersIfYouAreAnAdmin\n"
+"when\n"
+"  c: PermissionCheck(name == \"customer\")\n"
+"  Role(name == \"admin\")\n"
+"then\n"
+"  c.grant();\n"
+"end;"
+msgstr ""
+"rule CanDoAnythingToCustomersIfYouAreAnAdmin\n"
+"when\n"
+"  c: PermissionCheck(name == \"customer\")\n"
+"  Role(name == \"admin\")\n"
+"then\n"
+"  c.grant();\n"
+"end;"
+
+#. Tag: para
+#: Security.xml:451
+#, no-c-format
+msgid ""
+"This rule allows users with the <literal>admin</literal> role to perform "
+"<emphasis>any</emphasis> action for any <literal>customer</literal> "
+"permission check."
+msgstr ""
+"这个规则允许充当 <literal>admin</literal> 角色的用户为任何 "
+"<literal>customer</literal> 权限检查执行<emphasis>任何</emphasis>动作。"
+
+#. Tag: title
+#: Security.xml:454
+#, no-c-format
+msgid "SSL Security"
+msgstr "SSL 安全性"
+
+#. Tag: para
+#: Security.xml:455
+#, no-c-format
+msgid ""
+"Seam includes basic support for serving sensitive pages via the HTTPS "
+"protocol. This is easily configured by specifying a <literal>scheme</"
+"literal> for the page in <literal>pages.xml</literal>. The following example "
+"shows how the view <literal>/login.xhtml</literal> is configured to use "
+"HTTPS:"
+msgstr ""
+"Seam 包含对基于 HTTPS 协议的敏感页面的基本支持。这可以指定 <literal>pages."
+"xml</literal> 里页面的 <literal>scheme</literal> 轻易地进行配置。下面的例子演"
+"示了怎样配置 <literal>/login.xhtml</literal> 视图来使用 HTTPS:"
+
+#. Tag: programlisting
+#: Security.xml:458
+#, no-c-format
+msgid "&lt;page view-id=\"/login.xhtml\" scheme=\"https\"&gt;"
+msgstr "&lt;page view-id=\"/login.xhtml\" scheme=\"https\"&gt;"
+
+#. Tag: para
+#: Security.xml:459
+#, no-c-format
+msgid ""
+"This configuration is automatically extended to both <literal>s:link</"
+"literal> and <literal>s:button</literal> JSF controls, which (when "
+"specifying the <literal>view</literal>) will also render the link using the "
+"correct protocol. Based on the previous example, the following link will use "
+"the HTTPS protocol because <literal>/login.xhtml</literal> is configured to "
+"use it:"
+msgstr ""
+"这个配置自动地扩展到 <literal>s:link</literal> 和 <literal>s:button</"
+"literal> JSF 控件,它也将用正确的协议显示这个链接(指定 <literal>view</"
+"literal> 时)。根据前面的例子,下面的链接将使用 HTTPS 协议(因为 <literal>/"
+"login.xhtml</literal> 被配置为使用这个协议):"
+
+#. Tag: programlisting
+#: Security.xml:462
+#, no-c-format
+msgid "&lt;s:link view=\"/login.xhtml\" value=\"Login\"/&gt;"
+msgstr "&lt;s:link view=\"/login.xhtml\" value=\"Login\"/&gt;"
+
+#. Tag: para
+#: Security.xml:463
+#, no-c-format
+msgid ""
+"Browsing directly to a view when using the <emphasis>incorrect</emphasis> "
+"protocol will cause a redirect to the same view using the <emphasis>correct</"
+"emphasis> protocol. For example, browsing to a page that has <literal>scheme="
+"\"https\"</literal> using HTTP will cause a redirect to the same page using "
+"HTTPS."
+msgstr ""
+"当使用<emphasis>不正确的</emphasis>协议直接浏览某个视图将导致用<emphasis>正确"
+"的</emphasis>协议重定向至同一视图。例如,使用 HTTP 浏览具有 <literal>scheme="
+"\"https\"</literal> 的页面将用 HTTPS 重定向到同一页面。"
+
+#. Tag: para
+#: Security.xml:466
+#, no-c-format
+msgid ""
+"It is also possible to configure a default <literal>scheme</literal> for all "
+"pages. This is actually quite important, as you might only wish to use HTTPS "
+"for a few pages, and if no default scheme is specified then the default "
+"behavior is to continue using the current scheme. What this means is that "
+"once you enter a page with HTTPS, then HTTPS will continue to be used even "
+"if you navigate away to other non-HTTPS pages (a bad thing!). So it is "
+"strongly recommended to include a default <literal>scheme</literal>, by "
+"configuring it on the default (<literal>\"*\"</literal>) view:"
+msgstr " HTTP"
+
+#. Tag: programlisting
+#: Security.xml:469
+#, no-c-format
+msgid "&lt;page view-id=\"*\" scheme=\"http\"&gt;"
+msgstr "&lt;page view-id=\"*\" scheme=\"http\"&gt;"
+
+#. Tag: para
+#: Security.xml:470
+#, no-c-format
+msgid ""
+"Of course, if <emphasis>none</emphasis> of the pages in your application use "
+"HTTPS then it is not required to specify a default scheme."
+msgstr ""
+"当然,如果你的程序里<emphasis>没有</emphasis>页面使用 HTTPS,则不需要指定缺省"
+"的 scheme。"
+
+#. Tag: title
+#: Security.xml:473
+#, no-c-format
+msgid "Implementing a Captcha Test"
+msgstr "实现 Captcha 测试"
+
+#. Tag: para
+#: Security.xml:474
+#, no-c-format
+msgid ""
+"Though strictly not part of the security API, it might be useful in certain "
+"circumstances (such as new user registrations, posting to a public blog or "
+"forum) to implement a Captcha (<emphasis>C</emphasis>ompletely <emphasis>A</"
+"emphasis>utomated <emphasis>P</emphasis>ublic <emphasis>T</emphasis>uring "
+"test to tell <emphasis>C</emphasis>omputers and <emphasis>H</emphasis>umans "
+"<emphasis>A</emphasis>part) to prevent automated bots from interacting with "
+"your application. Seam provides seamless integration with JCaptcha, an "
+"excellent library for generating Captcha challenges. If you wish to use the "
+"captcha feature in your application you need to include the jcaptcha-* jar "
+"file from the Seam lib directory in your project, and register it in "
+"<literal>application.xml</literal> as a java module."
+msgstr ""
+"虽然严格来说并非 security API 的一部分,但在某些情况下(如新用户注册、在公共"
+"的博客上或论坛上张贴),实现 Captcha (<emphasis>C</emphasis>ompletely "
+"<emphasis>A</emphasis>utomated <emphasis>P</emphasis>ublic <emphasis>T</"
+"emphasis>uring test to tell <emphasis>C</emphasis>omputers and <emphasis>H</"
+"emphasis>umans <emphasis>A</emphasis>part) 来阻止自动 bot 干扰你的程序是很有"
+"用的。Seam 提供对 JCaptcha(一个优秀的生成 Captcha challenge 的库)的无缝集"
+"成。如果你想在程序里使用 captcha 功能,你需要在你的项目的 Seam lib 目录下包"
+"括 jcaptcha-* jar 文件,且在 <literal>application.xml</literal> 里作为 java "
+"模块注册。"
+
+#. Tag: title
+#: Security.xml:477
+#, no-c-format
+msgid "Configuring the Captcha Servlet"
+msgstr "配置 Captcha Servlet"
+
+#. Tag: para
+#: Security.xml:478
+#, no-c-format
+msgid ""
+"To get up and running, it is necessary to configure the Seam Resource "
+"Servlet, which will provide the Captcha challenge images to your pages. This "
+"requires the following entry in <literal>web.xml</literal>:"
+msgstr ""
+"你需要配置 Seam Resource Servlet(为你的页面提供 Captcha challenge 图片)来运"
+"行它。在 <literal>web.xml</literal> 里需要下面的条目:"
+
+#. Tag: programlisting
+#: Security.xml:481
+#, no-c-format
+msgid ""
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"    \n"
+"&lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+msgstr ""
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"    \n"
+"&lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+
+#. Tag: title
+#: Security.xml:482
+#, no-c-format
+msgid "Adding a Captcha to a page"
+msgstr "在页面里加入 Captcha "
+
+#. Tag: para
+#: Security.xml:483
+#, no-c-format
+msgid ""
+"Adding a captcha challenge to a page is extremely easy. Seam provides a page-"
+"scoped component, <literal>captcha</literal>, which provides everything that "
+"is required, including built-in captcha validation. Here&#39;s an example:"
+msgstr ""
+"在页面里加入 captcha challenge 非常简单。Seam 提供了一个作用域为 page 的组"
+"件:<literal>captcha</literal>,它提供所需的一切,如内置的 captcha 检验。下面"
+"是一个例子: "
+
+#. Tag: programlisting
+#: Security.xml:486
+#, no-c-format
+msgid ""
+"&lt;div&gt;\n"
+"    &lt;h:graphicImage value=\"/seam/resource/captcha?#{captcha.id}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"  \n"
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"verifyCaptcha\"&gt;Enter the above letters&lt;/h:"
+"outputLabel&gt;\n"
+"    &lt;h:inputText id=\"verifyCaptcha\" value=\"#{captcha.response}\" "
+"required=\"true\"/&gt;\n"
+"    &lt;div class=\"validationError\"&gt;&lt;h:message for=\"verifyCaptcha\"/"
+"&gt;&lt;/div&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+"&lt;div&gt;\n"
+"    &lt;h:graphicImage value=\"/seam/resource/captcha?#{captcha.id}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"  \n"
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"verifyCaptcha\"&gt;Enter the above letters&lt;/h:"
+"outputLabel&gt;\n"
+"    &lt;h:inputText id=\"verifyCaptcha\" value=\"#{captcha.response}\" "
+"required=\"true\"/&gt;\n"
+"    &lt;div class=\"validationError\"&gt;&lt;h:message for=\"verifyCaptcha\"/"
+"&gt;&lt;/div&gt;\n"
+"&lt;/div&gt;"
+
+#. Tag: para
+#: Security.xml:487
+#, no-c-format
+msgid ""
+"That&#39;s all there is to it. The <literal>graphicImage</literal> control "
+"displays the Captcha challenge, and the <literal>inputText</literal> "
+"receives the user&#39;s response. The response is automatically validated "
+"against the Captcha when the form is submitted."
+msgstr ""
+"这就是全部要做的了。<literal>graphicImage</literal> 控件显示 Captcha "
+"challenge,<literal>inputText</literal> 接收用户的输入。当表单被提交时,将自"
+"动根据 Captcha 检验用户的输入。 "

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Spring.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Spring.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Spring.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,635 @@
+# translation of Spring.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Xi HUANG <xhuang at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Spring\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2007-10-09 10:35+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Spring.xml:6
+#, no-c-format
+msgid "Spring Framework integration"
+msgstr "Spring 框架的集成"
+
+#. Tag: para
+#: Spring.xml:7
+#, no-c-format
+msgid ""
+"The Spring integration module allows easy migration of Spring-based projects "
+"to Seam and allows Spring applications to take advantage of key Seam "
+"features like conversations and Seam&#39;s more sophisticated persistence "
+"context management."
+msgstr ""
+"Spring 集成模块可以轻易地把基于 Spring 的项目集成到 Seam 里,它也允许 Spring "
+"应用程序利用关键的 Seam 特征如 conversation,以及更为复杂的持久性上下文管理。"
+
+#. Tag: para
+#: Spring.xml:10
+#, no-c-format
+msgid "Seam&#39;s support for Spring provides the ability to:"
+msgstr "Seam 对 Spring 的支持包括: "
+
+#. Tag: para
+#: Spring.xml:15
+#, no-c-format
+msgid "inject Seam component instances into Spring beans"
+msgstr "将 Seam 组件实例注入到 Spring bean 里"
+
+#. Tag: para
+#: Spring.xml:20
+#, no-c-format
+msgid "inject Spring beans into Seam components"
+msgstr "将Spring bean 注入到 Seam 组件里"
+
+#. Tag: para
+#: Spring.xml:25
+#, no-c-format
+msgid "turn Spring beans into Seam components"
+msgstr "将 Spring bean 转为 Seam 组件"
+
+#. Tag: para
+#: Spring.xml:30
+#, no-c-format
+msgid "allow Spring beans to live in any Seam context"
+msgstr "允许 Spring bean 存在于 Seam 上下文里"
+
+#. Tag: para
+#: Spring.xml:35
+#, no-c-format
+msgid "start a spring WebApplicationContext with a Seam component"
+msgstr "用 Seam 组件启动 Spring WebApplicationContext"
+
+#. Tag: title
+#: Spring.xml:41
+#, no-c-format
+msgid "Injecting Seam components into Spring beans"
+msgstr "将 Seam 组件注入到 Spring bean 里"
+
+#. Tag: para
+#: Spring.xml:42
+#, no-c-format
+msgid ""
+"Injecting Seam component instances into Spring beans is accomplished using "
+"the <literal>&lt;seam:instance/&gt;</literal> namespace handler. To enable "
+"the Seam namespace handler, the Seam namespace must be added to the Spring "
+"beans definition file:"
+msgstr ""
+"将 Seam 组件注入到 Spring bean 里是通过 <literal>&lt;seam:instance/&gt;</"
+"literal> 命名空间处理程序(namespace handler)完成的。要启用 Seam 命名空间处"
+"理程序,Seam 命名空间必须添加到 Spring bean 的定义文件里:"
+
+#. Tag: programlisting
+#: Spring.xml:45
+#, no-c-format
+msgid ""
+"&lt;beans xmlns=\"http://www.springframework.org/schema/beans\"\n"
+"    xmlns:seam=\"http://jboss.com/products/seam/spring-seam\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://www.springframework.org/schema/beans \n"
+"                        http://www.springframework.org/schema/beans/spring-"
+"beans-2.0.xsd\n"
+"                        http://jboss.com/products/seam/spring-seam \n"
+"                        http://jboss.com/products/seam/spring-seam-1.2.xsd"
+"\"&gt;"
+msgstr ""
+"&lt;beans xmlns=\"http://www.springframework.org/schema/beans\"\n"
+"    xmlns:seam=\"http://jboss.com/products/seam/spring-seam\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://www.springframework.org/schema/beans \n"
+"                        http://www.springframework.org/schema/beans/spring-"
+"beans-2.0.xsd\n"
+"                        http://jboss.com/products/seam/spring-seam \n"
+"                        http://jboss.com/products/seam/spring-seam-1.2.xsd"
+"\"&gt;"
+
+#. Tag: para
+#: Spring.xml:46
+#, no-c-format
+msgid "Now any Seam component may be injected into any Spring bean:"
+msgstr "现在,任何 Seam 组件都可以被注入到任何 Spring bean 里了:"
+
+#. Tag: programlisting
+#: Spring.xml:49
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\"&gt;\n"
+"        &lt;seam:instance name=\"someComponent\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\"&gt;\n"
+"        &lt;seam:instance name=\"someComponent\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+
+#. Tag: para
+#: Spring.xml:50
+#, no-c-format
+msgid "An EL expression may be used instead of a component name:"
+msgstr "EL 表达式可以用来替代组件名:"
+
+#. Tag: programlisting
+#: Spring.xml:53
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\"&gt;\n"
+"        &lt;seam:instance name=\"#{someExpression}\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\"&gt;\n"
+"        &lt;seam:instance name=\"#{someExpression}\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+
+#. Tag: para
+#: Spring.xml:54
+#, no-c-format
+msgid ""
+"Seam component instances may even be made available for injection into "
+"Spring beans by a Spring bean id."
+msgstr "Seam 组件实例甚至可以用一个 Spring bean id 来注入到 Spring bean 里。"
+
+#. Tag: programlisting
+#: Spring.xml:57
+#, no-c-format
+msgid ""
+"&lt;seam:instance name=\"someComponent\" id=\"someSeamComponentInstance\"/"
+"&gt;\n"
+"\n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\" ref=\"someSeamComponentInstance"
+"\"&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+"&lt;seam:instance name=\"someComponent\" id=\"someSeamComponentInstance\"/"
+"&gt;\n"
+"\n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\" ref=\"someSeamComponentInstance"
+"\"&gt;\n"
+"&lt;/bean&gt;"
+
+#. Tag: para
+#: Spring.xml:58
+#, no-c-format
+msgid "Now for the caveat!"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:61
+#, no-c-format
+msgid ""
+"Seam was designed from the ground up to support a stateful component model "
+"with multiple contexts. Spring was not. Unlike Seam bijection, Spring "
+"injection does not occur at method invocation time. Instead, injection "
+"happens only when the Spring bean is instantiated. So the instance available "
+"when the bean is instantiated will be the same instance that the bean uses "
+"for the entire life of the bean. For example, if a Seam "
+"<literal>CONVERSATION</literal>-scoped component instance is directly "
+"injected into a singleton Spring bean, that singleton will hold a reference "
+"to the same instance long after the conversation is over! We call this "
+"problem <emphasis>scope impedance</emphasis>. Seam bijection ensures that "
+"scope impedance is maintained naturally as an invocation flows through the "
+"system. In Spring, we need to inject a proxy of the Seam component, and "
+"resolve the reference when the proxy is invoked."
+msgstr ""
+"设计 Seam 的出发点就是支持带有多个上下文的有状态的组件模型,而 Spring 不是。"
+"和 Seam 的双向注入不一样,Spring 注入不发生在方法调用的时候。相反,它的注入只"
+"在 Spring bean 被初始化时发生。所以,bean 被实例化时的可用实例将和 bean 用于"
+"整个生命周期的实例是同一个。例如,如果 Seam 作用域为 <literal>CONVERSATION</"
+"literal> 的组件实例被直接注入到单个 Spring bean,甚至在 conversation 结束后这"
+"个 bean 仍将保存对同一实例的引用!我们把这个问题称为 <emphasis>scope "
+"impedance</emphasis>。Seam 的双向注入确保了在整个系统里自然地将 scope "
+"impedance 作为调用流程维持。而在 Spring 里,我们需要注入这个 Seam 组件的代"
+"理,并在调用代理时解析这个引用。"
+
+#. Tag: para
+#: Spring.xml:64
+#, no-c-format
+msgid ""
+"The <literal>&lt;seam:instance/&gt;</literal> tag lets us automatically "
+"proxy the Seam component."
+msgstr ""
+"<literal>&lt;seam:instance/&gt;</literal> 标签让我们自动地代理 Seam 组件。"
+
+#. Tag: programlisting
+#: Spring.xml:67
+#, no-c-format
+msgid ""
+"&lt;seam:instance id=\"seamManagedEM\" name=\"someManagedEMComponent\" proxy="
+"\"true\"/&gt;\n"
+"        \n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\"&gt;\n"
+"    &lt;property name=\"entityManager\" ref=\"seamManagedEM\"&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+"&lt;seam:instance id=\"seamManagedEM\" name=\"someManagedEMComponent\" proxy="
+"\"true\"/&gt;\n"
+"        \n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\"&gt;\n"
+"    &lt;property name=\"entityManager\" ref=\"seamManagedEM\"&gt;\n"
+"&lt;/bean&gt;"
+
+#. Tag: para
+#: Spring.xml:68
+#, no-c-format
+msgid ""
+"This example shows one way to use a Seam-managed persistence context from a "
+"Spring bean. (A more robust way to use Seam-managed persistence contexts as "
+"a replacement for the Spring <literal>OpenEntityManagerInView</literal> "
+"filter will be provided in a future release)"
+msgstr ""
+"这个例子演示了使用 Spring bean 里 Seam 管理的持久性上下文的方法。(把 Seam 管"
+"理的持久性上下文作为 Spring <literal>OpenEntityManagerInView</literal> 过滤器"
+"的替代使用,这个更稳当的方法将在以后的版本里提供)"
+
+#. Tag: title
+#: Spring.xml:74
+#, no-c-format
+msgid "Injecting Spring beans into Seam components"
+msgstr "将 Spring bean 注入到 Seam 组件里"
+
+#. Tag: para
+#: Spring.xml:75
+#, no-c-format
+msgid ""
+"It is even easier to inject Spring beans into Seam component instances. "
+"Actually, there are two possible approaches:"
+msgstr ""
+"将 Spring bean 注入到 Seam 组件实例里甚至更加容易。实际上,有两个可能的途径:"
+
+#. Tag: para
+#: Spring.xml:80
+#, no-c-format
+msgid "inject a Spring bean using an EL expression"
+msgstr "使用 EL 表达式注入 Spring bean"
+
+#. Tag: para
+#: Spring.xml:85
+#, no-c-format
+msgid "make the Spring bean a Seam component"
+msgstr "使 Spring bean 成为 Seam 组件"
+
+#. Tag: para
+#: Spring.xml:90
+#, no-c-format
+msgid ""
+"We&#39;ll discuss the second option in the next section. The easiest "
+"approach is to access the Spring beans via EL."
+msgstr "在下一节我们将讨论第二个选项。最容易的方法是通过 EL 访问 Spring bean。"
+
+#. Tag: para
+#: Spring.xml:93
+#, no-c-format
+msgid ""
+"The Spring <literal>DelegatingVariableResolver</literal> is an integration "
+"point Spring provides for integrating Spring with JSF. This "
+"<literal>VariableResolver</literal> makes all Spring beans available in EL "
+"by their bean id. You&#39;ll need to add the "
+"<literal>DelegatingVariableResolver</literal> to <literal>faces-config.xml</"
+"literal>:"
+msgstr ""
+"Spring <literal>DelegatingVariableResolver</literal> 是 Spring 所提供的集成 "
+"Spring 和 JSF 的集成点。这个 <literal>VariableResolver</literal> 通过 bean "
+"id 在 EL 里使所有的 Spring bean 可用。你将需要将 "
+"<literal>DelegatingVariableResolver</literal> 加入到 <literal>faces-config."
+"xml</literal> 里: "
+
+#. Tag: programlisting
+#: Spring.xml:96
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;variable-resolver&gt;\n"
+"        org.springframework.web.jsf.DelegatingVariableResolver\n"
+"    &lt;/variable-resolver&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+"&lt;application&gt;\n"
+"    &lt;variable-resolver&gt;\n"
+"        org.springframework.web.jsf.DelegatingVariableResolver\n"
+"    &lt;/variable-resolver&gt;\n"
+"&lt;/application&gt;"
+
+#. Tag: para
+#: Spring.xml:97
+#, no-c-format
+msgid "Then you can inject Spring beans using <literal>@In</literal>:"
+msgstr "然后你可以用 using <literal>@In</literal> 注入 Spring bean:"
+
+#. Tag: programlisting
+#: Spring.xml:100
+#, no-c-format
+msgid ""
+"@In(\"#{bookingService}\")\n"
+"private BookingService bookingService;"
+msgstr ""
+"@In(\"#{bookingService}\")\n"
+"private BookingService bookingService;"
+
+#. Tag: para
+#: Spring.xml:101
+#, no-c-format
+msgid ""
+"The use of Spring beans in EL is not limited to injection. Spring beans may "
+"be used anywhere that EL expressions are used in Seam: process and pageflow "
+"definitions, working memory assertions, etc..."
+msgstr ""
+"在 EL 里使用 Spring bean 并不只限于注入。Spring bean 可以被用在 EL 可被使用的"
+"任何地方:过程和页面流程定义、working memory assertions 等。"
+
+#. Tag: title
+#: Spring.xml:107
+#, no-c-format
+msgid "Making a Spring bean into a Seam component"
+msgstr "使 Spring bean 成为 Seam 组件"
+
+#. Tag: para
+#: Spring.xml:108
+#, no-c-format
+msgid ""
+"The <literal>&lt;seam:component/&gt;</literal> namespace handler can be used "
+"to make any Spring bean a Seam component. Just place the <literal>&lt;seam:"
+"component/&gt;</literal> tag within the declaration of the bean that you "
+"wish to be a Seam component:"
+msgstr ""
+"<literal>&lt;seam:component/&gt;</literal> 命名空间处理程序可以被用来使 "
+"Spring bean 成为 Seam 组件。只要把 <literal>&lt;seam:component/&gt;</"
+"literal> 标签放入要成为 Seam 组件的 bean 的声明里。"
+
+#. Tag: programlisting
+#: Spring.xml:111
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;seam:component/&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;seam:component/&gt;\n"
+"&lt;/bean&gt;"
+
+#. Tag: para
+#: Spring.xml:112
+#, no-c-format
+msgid ""
+"By default, <literal>&lt;seam:component/&gt;</literal> will create a "
+"<literal>STATELESS</literal> Seam component with class and name provided in "
+"the bean definition. Occasionally, such as when a <literal>FactoryBean</"
+"literal> is used, the class of the Spring bean may not be the class "
+"appearing in the bean definition. In such cases the <literal>class</literal> "
+"should be explicitly specified. A Seam component name may be explicitly "
+"specified in cases where there is potential for a naming conflict."
+msgstr ""
+"在缺省情况下,<literal>&lt;seam:component/&gt;</literal> 将创建一个"
+"<literal>STATELESS</literal> 的 Seam 组件,它具有 bean 定义里提供的类和名称。"
+"有时候,当 <literal>FactoryBean</literal> 被使用时,Spring bean 的类可能不是 "
+"bean 定义里出现的类。在这种情况下,<literal>beanClass</literal> 应该被显性地"
+"指定。Seam 组件名可以在有可能出现名字冲突时显性地指定。 "
+
+#. Tag: para
+#: Spring.xml:115
+#, no-c-format
+msgid ""
+"The <literal>scope</literal> attribute of <literal>&lt;seam:component/&gt;</"
+"literal> may be used if you wish the Spring bean to be managed in a "
+"particular Seam scope. The Spring bean must be scoped to <literal>prototype</"
+"literal> if the Seam scope specified is anything other than "
+"<literal>STATELESS</literal>. Pre-existing Spring beans usually have a "
+"fundamentally stateless character, so this attribute is not usually needed."
+msgstr ""
+"如果你希望 Spring bean 在特定的 Seam 作用域里管理,可以使用 <literal>&lt;"
+"seam:component/&gt;</literal> 的 <literal>scope</literal> 属性。如果指定的 "
+"Seam 作用域不是 <literal>STATELESS</literal>,Spring bean 必须限定为 "
+"<literal>prototype</literal>。以前存在的 Spring bean 通常带有无状态的特点,所"
+"以这个属性通常并不需要。"
+
+#. Tag: title
+#: Spring.xml:121
+#, no-c-format
+msgid "Seam-scoped Spring beans"
+msgstr "使用 Seam 作用域的 Spring bean"
+
+#. Tag: para
+#: Spring.xml:122
+#, no-c-format
+msgid ""
+"The Seam integration package also lets you use Seam&#39;s contexts as Spring "
+"2.0 style custom scopes. This lets you declare any Spring bean in any of "
+"Seam&#39;s contexts. However, note once again that Spring&#39;s component "
+"model was never architected to support statefulness, so please use this "
+"feature with great care. In particular, clustering of session or "
+"conversation scoped Spring beans is deeply problematic, and care must be "
+"taken when injecting a bean or component from a wider scope into a bean of a "
+"narrower scope."
+msgstr ""
+"Seam 的集成包也可以让你把 Seam 的上下文作为 Spring 2.0 风格的自定义作用域使"
+"用。这可以让你在任何 Seam 的上下文里声明任何 Spring bean。然而,请再次注意 "
+"Spring 的组件模型从来就不支持状态,所以请很小心地使用这个特征。特别是,作用域"
+"为 session 或 conversation 的 Spring bean 的群集很成问题,从更广作用域注入 "
+"bean 或组件到更小的作用域的 bean 时必须小心。"
+
+#. Tag: para
+#: Spring.xml:125
+#, no-c-format
+msgid ""
+"By specifying <literal>&lt;seam:configure-scopes/&gt;</literal> once in a "
+"Spring bean factory configuration, all of the Seam scopes will be available "
+"to Spring beans as custom scopes. To associate a Spring bean with a "
+"particular Seam scope, specify the Seam scope in the <literal>scope</"
+"literal> attribute of the bean definition."
+msgstr ""
+"通过在 Spring bean 工厂配置里指定一次 <literal>&lt;seam:configure-scopes/&gt;"
+"</literal>,所有的 Seam 作用域都将作为自定义作用域对 Spring bean 可用。要将 "
+"Spring bean 和某个特定的 Seam 作用域相关联,可以给这个 bean 定义里的 "
+"<literal>scope</literal> 属性指定 Seam 作用域。"
+
+#. Tag: programlisting
+#: Spring.xml:128
+#, no-c-format
+msgid ""
+"&lt;!-- Only needs to be specified once per bean factory--&gt;\n"
+"&lt;seam:configure-scopes/&gt;\n"
+"\n"
+"...\n"
+"\n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope=\"seam."
+"CONVERSATION\"/&gt;"
+msgstr ""
+"&lt;!-- Only needs to be specified once per bean factory--&gt;\n"
+"&lt;seam:configure-scopes/&gt;\n"
+"\n"
+"...\n"
+"\n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope=\"seam."
+"CONVERSATION\"/&gt;"
+
+#. Tag: para
+#: Spring.xml:129
+#, no-c-format
+msgid ""
+"The prefix of the scope name may be changed by specifying the "
+"<literal>prefix</literal> attribute in the <literal>configure-scopes</"
+"literal> definition. (The default prefix is <literal>seam.</literal>)"
+msgstr ""
+"作用域名的前缀可以通过指定 <literal>configure-scopes</literal> 定义里的 "
+"<literal>prefix</literal> 属性来修改。(缺省前缀是 <literal>seam</"
+"literal>。)"
+
+#. Tag: para
+#: Spring.xml:132
+#, no-c-format
+msgid ""
+"Seam-scoped Spring beans defined this way can be injected into other Spring "
+"beans without the use of <literal>&lt;seam:instance/&gt;</literal>. However, "
+"care must be taken to ensure scope impedance is maintained. The normal "
+"approach used in Spring is to specify <literal>&lt;aop:scoped-proxy/&gt;</"
+"literal> in the bean definition. However, Seam-scoped Spring beans are "
+"<emphasis>not</emphasis> compatible with <literal>&lt;aop:scoped-proxy/&gt;</"
+"literal>. So if you need to inject a Seam-scoped Spring bean into a "
+"singleton, <literal>&lt;seam:instance/&gt;</literal> must be used:"
+msgstr ""
+"用这种方法定义的使用 Seam 作用域的 Spring bean 可以被注入其他 Spring bean 里"
+"而不需使用 <literal>&lt;seam:instance/&gt;</literal>。然而,你必须小心地维持 "
+"scope impedance。Spring 里通常使用的方法是在 bean 定义里指定 <literal>&lt;"
+"aop:scoped-proxy/&gt;</literal>。然而,使用 Seam 作用域的 Spring bean "
+"<emphasis>不</emphasis>兼容 <literal>&lt;aop:scoped-proxy/&gt;</literal>。所"
+"以如果你需要注入使用 Seam 作用域的 Spring bean 到 singleton 里,必须使用 "
+"<literal>&lt;seam:instance/&gt;</literal>:"
+
+#. Tag: programlisting
+#: Spring.xml:135
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope=\"seam."
+"CONVERSATION\"/&gt;\n"
+"\n"
+"...\n"
+"\n"
+"&lt;bean id=\"someSingleton\"&gt;\n"
+"    &lt;property name=\"someSeamScopedSpringBean\"&gt;\n"
+"        &lt;seam:instance name=\"someSpringBean\" proxy=\"true\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope=\"seam."
+"CONVERSATION\"/&gt;\n"
+"\n"
+"...\n"
+"\n"
+"&lt;bean id=\"someSingleton\"&gt;\n"
+"    &lt;property name=\"someSeamScopedSpringBean\"&gt;\n"
+"        &lt;seam:instance name=\"someSpringBean\" proxy=\"true\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+
+#. Tag: title
+#: Spring.xml:139
+#, no-c-format
+msgid "Spring Application Context as a Seam Component"
+msgstr "作为 Seam 组件的 Spring ApplicationContext"
+
+#. Tag: para
+#: Spring.xml:140
+#, no-c-format
+msgid ""
+"Although it is possible to use the Spring <literal>ContextLoaderListener</"
+"literal> to start your application&#39;s Spring ApplicationContext there are "
+"a couple of limitations."
+msgstr ""
+"虽然有可能使用 Spring <literal>ContextLoaderListener</literal> 来启动应用程序"
+"的 Spring ApplicationContext,但这也有一些限制。"
+
+#. Tag: para
+#: Spring.xml:145
+#, no-c-format
+msgid ""
+"the Spring ApplicationContext must be started <emphasis>after</emphasis> the "
+"<literal>SeamListener</literal>"
+msgstr ""
+"Spring ApplicationContext 必须在 <literal>SeamListener</literal> <emphasis>后"
+"</emphasis>启动。"
+
+#. Tag: para
+#: Spring.xml:150
+#, no-c-format
+msgid ""
+"it can be tricky starting a Spring ApplicationContext for use in Seam unit "
+"and integration tests"
+msgstr ""
+"启动用于 Seam 单元和集成测试的 Spring ApplicationContext 可能需要点技巧。"
+
+#. Tag: para
+#: Spring.xml:155
+#, no-c-format
+msgid ""
+"To overcome these two limitations the Spring integration includes a Seam "
+"component that will start a Spring ApplicationContext. To use this Seam "
+"component place the <literal>&lt;spring:context-loader/&gt;</literal> "
+"definition in the <literal>components.xml</literal>. Specify your Spring "
+"context file location in the <literal>config-locations</literal> attribute. "
+"If more than one config file is needed you can place them in the nested "
+"<literal>&lt;spring:config-locations/&gt;</literal> element following "
+"standard <literal>components.xml</literal> multi value practices."
+msgstr ""
+"为了克服这两个限制,Spring 集成包含了一个 Seam 组件来启动 Spring "
+"ApplicationContext。要使用这个 Seam 组件,你需要在 <literal>components.xml</"
+"literal> 里定义 <literal>&lt;spring:context-loader/&gt;</literal>。在 "
+"<literal>config-locations</literal> 属性里指定你的 Spring 上下文位置。如果需"
+"要多个配置文件,你可以把它们放在标准的  <literal>components.xml</literal> 文"
+"件里嵌套的 <literal>&lt;spring:config-locations/&gt;</literal> 元素中。"
+
+#. Tag: programlisting
+#: Spring.xml:158
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:spring=\"http://jboss.com/products/seam/spring\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"http://jboss.com/products/seam/components "
+"http://jboss.com/products/seam/components-1.2.xsd\n"
+"                                http://jboss.com/products/seam/spring http://"
+"jboss.com/products/seam/spring-1.2.xsd\"&gt;\n"
+"\n"
+"        &lt;spring:context-loader context-locations=\"/WEB-INF/"
+"applicationContext.xml\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:spring=\"http://jboss.com/products/seam/spring\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"http://jboss.com/products/seam/components "
+"http://jboss.com/products/seam/components-1.2.xsd\n"
+"                                http://jboss.com/products/seam/spring http://"
+"jboss.com/products/seam/spring-1.2.xsd\"&gt;\n"
+"\n"
+"        &lt;spring:context-loader context-locations=\"/WEB-INF/"
+"applicationContext.xml\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Testing.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Testing.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Testing.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,607 @@
+# translation of Testing.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Xi HUANG <xhuang at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Testing\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2007-10-09 10:24+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Testing.xml:6
+#, no-c-format
+msgid "Testing Seam applications"
+msgstr "测试 Seam 应用程序"
+
+#. Tag: para
+#: Testing.xml:7
+#, no-c-format
+msgid ""
+"Most Seam applications will need at least two kinds of automated tests: "
+"<emphasis>unit tests</emphasis>, which test a particular Seam component in "
+"isolation, and scripted <emphasis>integration tests</emphasis> which "
+"exercise all Java layers of the application (that is, everything except the "
+"view pages)."
+msgstr ""
+"大多数 Seam 应用程序将需要至少两种自动化的测试:<emphasis>单元测试(unit "
+"tests)</emphasis>分开测试特定的 Seam 组件;脚本化的<emphasis>集成测试"
+"(integration tests)</emphasis>将测试应用程序的所有 Java 层(除了视图页"
+"面)。"
+
+#. Tag: para
+#: Testing.xml:10
+#, no-c-format
+msgid "Both kinds of tests are very easy to write."
+msgstr "两种测试都非常容易编写。"
+
+#. Tag: title
+#: Testing.xml:14
+#, no-c-format
+msgid "Unit testing Seam components"
+msgstr "对 Seam 组件进行单元测试"
+
+#. Tag: para
+#: Testing.xml:15
+#, no-c-format
+msgid ""
+"All Seam components are POJOs. This is a great place to start if you want "
+"easy unit testing. And since Seam emphasises the use of bijection for inter-"
+"component interactions and access to contextual objects, it&#39;s very easy "
+"to test a Seam component outside of its normal runtime environment."
+msgstr ""
+"所有的 Seam 组件都是 POJO。如果你想容易地进行单元测试,从这开始就很好。既然 "
+"Seam 强调对内部组件之间的交互以及对上下文相关的对象的访问使用双向注入,你很容"
+"易测试普通运行环境之外的 Seam 组件。"
+
+#. Tag: para
+#: Testing.xml:18
+#, no-c-format
+msgid "Consider the following Seam component:"
+msgstr "考虑下面的 Seam 组件:"
+
+#. Tag: programlisting
+#: Testing.xml:21
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Scope(EVENT)\n"
+"@Name(\"register\")\n"
+"public class RegisterAction implements Register\n"
+"{\n"
+"   private User user;\n"
+"   private EntityManager em;\n"
+"\n"
+"   @In\n"
+"   public void setUser(User user) {\n"
+"       this.user = user;\n"
+"   }\n"
+"   \n"
+"   @PersistenceContext\n"
+"   public void setBookingDatabase(EntityManager em) {\n"
+"       this.em = em;\n"
+"   }\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = em.createQuery(\"select username from User where "
+"username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getResultList();\n"
+"      if (existing.size()==0)\n"
+"      {\n"
+"         em.persist(user);\n"
+"         return \"success\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+"@Stateless\n"
+"@Scope(EVENT)\n"
+"@Name(\"register\")\n"
+"public class RegisterAction implements Register\n"
+"{\n"
+"   private User user;\n"
+"   private EntityManager em;\n"
+"\n"
+"   @In\n"
+"   public void setUser(User user) {\n"
+"       this.user = user;\n"
+"   }\n"
+"   \n"
+"   @PersistenceContext\n"
+"   public void setBookingDatabase(EntityManager em) {\n"
+"       this.em = em;\n"
+"   }\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = em.createQuery(\"select username from User where "
+"username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getResultList();\n"
+"      if (existing.size()==0)\n"
+"      {\n"
+"         em.persist(user);\n"
+"         return \"success\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+
+#. Tag: para
+#: Testing.xml:22
+#, no-c-format
+msgid "We could write a TestNG test for this component as follows:"
+msgstr "我们能够为这个组件编写如下的一个 TestNG 测试:"
+
+#. Tag: programlisting
+#: Testing.xml:25
+#, no-c-format
+msgid ""
+"public class RegisterActionTest\n"
+"{\n"
+"\n"
+"    @Test\n"
+"    public testRegisterAction()\n"
+"    {\n"
+"        EntityManager em = getEntityManagerFactory().createEntityManager();\n"
+"        em.getTransaction().begin();\n"
+"        \n"
+"        User gavin = new User();\n"
+"        gavin.setName(\"Gavin King\");\n"
+"        gavin.setUserName(\"1ovthafew\");\n"
+"        gavin.setPassword(\"secret\");\n"
+"        \n"
+"        RegisterAction action = new RegisterAction();\n"
+"        action.setUser(gavin);\n"
+"        action.setBookingDatabase(em);\n"
+"        \n"
+"        assert \"success\".equals( action.register() );\n"
+"        \n"
+"        em.getTransaction().commit();\n"
+"        em.close();\n"
+"    }\n"
+"    \n"
+"    \n"
+"    private EntityManagerFactory emf;\n"
+"    \n"
+"    public EntityManagerFactory getEntityManagerFactory()\n"
+"    {\n"
+"        return emf;\n"
+"    }\n"
+"    \n"
+"    @Configuration(beforeTestClass=true)\n"
+"    public void init() \n"
+"    {\n"
+"        emf = Persistence.createEntityManagerFactory"
+"(\"myResourceLocalEntityManager\");\n"
+"    }\n"
+"    \n"
+"    @Configuration(afterTestClass=true)\n"
+"    public void destroy()\n"
+"    {\n"
+"        emf.close();\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+"public class RegisterActionTest\n"
+"{\n"
+"\n"
+"    @Test\n"
+"    public testRegisterAction()\n"
+"    {\n"
+"        EntityManager em = getEntityManagerFactory().createEntityManager();\n"
+"        em.getTransaction().begin();\n"
+"        \n"
+"        User gavin = new User();\n"
+"        gavin.setName(\"Gavin King\");\n"
+"        gavin.setUserName(\"1ovthafew\");\n"
+"        gavin.setPassword(\"secret\");\n"
+"        \n"
+"        RegisterAction action = new RegisterAction();\n"
+"        action.setUser(gavin);\n"
+"        action.setBookingDatabase(em);\n"
+"        \n"
+"        assert \"success\".equals( action.register() );\n"
+"        \n"
+"        em.getTransaction().commit();\n"
+"        em.close();\n"
+"    }\n"
+"    \n"
+"    \n"
+"    private EntityManagerFactory emf;\n"
+"    \n"
+"    public EntityManagerFactory getEntityManagerFactory()\n"
+"    {\n"
+"        return emf;\n"
+"    }\n"
+"    \n"
+"    @Configuration(beforeTestClass=true)\n"
+"    public void init() \n"
+"    {\n"
+"        emf = Persistence.createEntityManagerFactory"
+"(\"myResourceLocalEntityManager\");\n"
+"    }\n"
+"    \n"
+"    @Configuration(afterTestClass=true)\n"
+"    public void destroy()\n"
+"    {\n"
+"        emf.close();\n"
+"    }\n"
+"    \n"
+"}"
+
+#. Tag: para
+#: Testing.xml:26
+#, no-c-format
+msgid ""
+"Seam components don&#39;t usually depend directly upon container "
+"infrastructure, so most unit testing as as easy as that!"
+msgstr ""
+"Seam 组件通常都不直接依赖于容器的基础架构,所以大多数单元测试都和这一样简"
+"单! "
+
+#. Tag: title
+#: Testing.xml:32
+#, no-c-format
+msgid "Integration testing Seam applications"
+msgstr "对 Seam 应用程序进行集成测试"
+
+#. Tag: para
+#: Testing.xml:33
+#, no-c-format
+msgid ""
+"Integration testing is slightly more difficult. In this case, we can&#39;t "
+"eliminate the container infrastructure; indeed, that is part of what is "
+"being tested! At the same time, we don&#39;t want to be forced to deploy our "
+"application to an application server to run the automated tests. We need to "
+"be able to reproduce just enough of the container infrastructure inside our "
+"testing environment to be able to exercise the whole application, without "
+"hurting performance too much."
+msgstr ""
+"集成测试会更困难一点。在这里,我们不能够排除容器的基础架构,它正是测试的一部"
+"分!同时,我们不希望被强制部署应用程序到一个应用服务器来运行自动化测试。我们"
+"需要能够在不过于影响性能的情况下,在测试环境内部复制刚好足够的容器基础结构,"
+"来测试整个应用程序,"
+
+#. Tag: para
+#: Testing.xml:36
+#, no-c-format
+msgid ""
+"A second problem is emulating user interactions. A third problem is where to "
+"put our assertions. Some test frameworks let us test the whole application "
+"by reproducing user interactions with the web browser. These frameworks have "
+"their place, but they are not appropriate for use at development time."
+msgstr ""
+"第二个问题是模拟用户的交互。地三个问题在何处置入 assertion 语句。一些测试框架"
+"通过在浏览器里复制用户交互来测试整个应用程序。这些框架有它们的道理,但它们不"
+"适合在开发阶段使用。"
+
+#. Tag: para
+#: Testing.xml:39
+#, no-c-format
+msgid ""
+"The approach taken by Seam is to let you write tests that script your "
+"components while running inside a pruned down container environment (Seam, "
+"together with the JBoss Embeddable EJB container). The role of the test "
+"script is basically to reproduce the interaction between the view and the "
+"Seam components. In other words, you get to pretend you are the JSF "
+"implementation!"
+msgstr ""
+"Seam 所采取的方法是让你编写组件的测试脚本,在删节的容器环境(Seam 以及 JBoss "
+"内嵌的 EJB 容器)里运行。测试脚本的作用基本上是复制视图和 Seam 组件之间的交"
+"互。换句话说,你要假装你实现了 JSF!"
+
+#. Tag: para
+#: Testing.xml:42
+#, no-c-format
+msgid "This approach tests everything except the view."
+msgstr "这个方法测试除了视图以外的一切。"
+
+#. Tag: para
+#: Testing.xml:45
+#, no-c-format
+msgid "Let&#39;s consider a JSP view for the component we unit tested above:"
+msgstr "让我们看看上面已经进行单元测试的组件的一个 JSP 视图: "
+
+#. Tag: programlisting
+#: Testing.xml:48
+#, no-c-format
+msgid ""
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Register New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;table border=\"0\"&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Username&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputText value=\"#{user.username}\"/&gt;&lt;/"
+"td&gt;\n"
+"       &lt;/tr&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Real Name&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputText value=\"#{user.name}\"/&gt;&lt;/td&gt;\n"
+"       &lt;/tr&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Password&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputSecret value=\"#{user.password}\"/&gt;&lt;/"
+"td&gt;\n"
+"       &lt;/tr&gt;\n"
+"     &lt;/table&gt;\n"
+"     &lt;h:messages/&gt;\n"
+"     &lt;h:commandButton type=\"submit\" value=\"Register\" action=\"#"
+"{register.register}\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Register New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;table border=\"0\"&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Username&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputText value=\"#{user.username}\"/&gt;&lt;/"
+"td&gt;\n"
+"       &lt;/tr&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Real Name&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputText value=\"#{user.name}\"/&gt;&lt;/td&gt;\n"
+"       &lt;/tr&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Password&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputSecret value=\"#{user.password}\"/&gt;&lt;/"
+"td&gt;\n"
+"       &lt;/tr&gt;\n"
+"     &lt;/table&gt;\n"
+"     &lt;h:messages/&gt;\n"
+"     &lt;h:commandButton type=\"submit\" value=\"Register\" action=\"#"
+"{register.register}\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+
+#. Tag: para
+#: Testing.xml:49
+#, no-c-format
+msgid ""
+"We want to test the registration functionality of our application (the stuff "
+"that happens when the user clicks the Register button). We&#39;ll reproduce "
+"the JSF request lifecycle in an automated TestNG test:"
+msgstr ""
+"我们要测试这个应用程序的 registration 功能(当用户点击 Register 按钮时执行的"
+"功能)。我们将在一个自动化的 TestNG 测试里复制 JSF 请求的生命周期: "
+
+#. Tag: programlisting
+#: Testing.xml:52
+#, no-c-format
+msgid ""
+"public class RegisterTest extends SeamTest\n"
+"{\n"
+"   \n"
+"   @Test\n"
+"   public void testRegister() throws Exception\n"
+"   {\n"
+"            \n"
+"      new FacesRequest() {\n"
+"\n"
+"         @Override\n"
+"         protected void processValidations() throws Exception\n"
+"         {\n"
+"            validateValue(\"#{user.username}\", \"1ovthafew\");\n"
+"            validateValue(\"#{user.name}\", \"Gavin King\");\n"
+"            validateValue(\"#{user.password}\", \"secret\");\n"
+"            assert !isValidationFailure();\n"
+"         }\n"
+"         \n"
+"         @Override\n"
+"         protected void updateModelValues() throws Exception\n"
+"         {\n"
+"            setValue(\"#{user.username}\", \"1ovthafew\");\n"
+"            setValue(\"#{user.name}\", \"Gavin King\");\n"
+"            setValue(\"#{user.password}\", \"secret\");\n"
+"         }\n"
+"\n"
+"         @Override\n"
+"         protected void invokeApplication()\n"
+"         {\n"
+"            assert invokeMethod(\"#{register.register}\").equals(\"success"
+"\");\n"
+"         }\n"
+"\n"
+"         @Override\n"
+"         protected void renderResponse()\n"
+"         {\n"
+"            assert getValue(\"#{user.username}\").equals(\"1ovthafew\");\n"
+"            assert getValue(\"#{user.name}\").equals(\"Gavin King\");\n"
+"            assert getValue(\"#{user.password}\").equals(\"secret\");\n"
+"         }\n"
+"         \n"
+"      }.run();\n"
+"      \n"
+"   }\n"
+"\n"
+"   ...\n"
+"   \n"
+"}"
+msgstr ""
+"public class RegisterTest extends SeamTest\n"
+"{\n"
+"   \n"
+"   @Test\n"
+"   public void testRegister() throws Exception\n"
+"   {\n"
+"            \n"
+"      new FacesRequest() {\n"
+"\n"
+"         @Override\n"
+"         protected void processValidations() throws Exception\n"
+"         {\n"
+"            validateValue(\"#{user.username}\", \"1ovthafew\");\n"
+"            validateValue(\"#{user.name}\", \"Gavin King\");\n"
+"            validateValue(\"#{user.password}\", \"secret\");\n"
+"            assert !isValidationFailure();\n"
+"         }\n"
+"         \n"
+"         @Override\n"
+"         protected void updateModelValues() throws Exception\n"
+"         {\n"
+"            setValue(\"#{user.username}\", \"1ovthafew\");\n"
+"            setValue(\"#{user.name}\", \"Gavin King\");\n"
+"            setValue(\"#{user.password}\", \"secret\");\n"
+"         }\n"
+"\n"
+"         @Override\n"
+"         protected void invokeApplication()\n"
+"         {\n"
+"            assert invokeMethod(\"#{register.register}\").equals(\"success"
+"\");\n"
+"         }\n"
+"\n"
+"         @Override\n"
+"         protected void renderResponse()\n"
+"         {\n"
+"            assert getValue(\"#{user.username}\").equals(\"1ovthafew\");\n"
+"            assert getValue(\"#{user.name}\").equals(\"Gavin King\");\n"
+"            assert getValue(\"#{user.password}\").equals(\"secret\");\n"
+"         }\n"
+"         \n"
+"      }.run();\n"
+"      \n"
+"   }\n"
+"\n"
+"   ...\n"
+"   \n"
+"}"
+
+#. Tag: para
+#: Testing.xml:53
+#, no-c-format
+msgid ""
+"Notice that we&#39;ve extended <literal>SeamTest</literal>, which provides a "
+"Seam environment for our components, and written our test script as an "
+"anonymous class that extends <literal>SeamTest.FacesRequest</literal>, which "
+"provides an emulated JSF request lifecycle. (There is also a "
+"<literal>SeamTest.NonFacesRequest</literal> for testing GET requests.) "
+"We&#39;ve written our code in methods which are named for the various JSF "
+"phases, to emulate the calls that JSF would make to our components. Then "
+"we&#39;ve thrown in various assertions."
+msgstr ""
+"注意,我们已经继承了 <literal>SeamTest</literal>(它为我们的组件提供一个 "
+"Seam 环境),并编写了作为继承了 <literal>SeamTest.FacesRequest</literal> 的匿"
+"名类的测试脚本(它提供模拟的 JSF 请求的生命周期)。(这也是一个用于测试 GET "
+"请求的 <literal>SeamTest.NonFacesRequest</literal>。)我们已经为不同的 JSF 阶"
+"段编写方法代码,来模拟 JSF 将对我们的组件进行的调用。然后,我们还插入不同的 "
+"assertion 来抛出异常。 "
+
+#. Tag: para
+#: Testing.xml:56
+#, no-c-format
+msgid ""
+"You&#39;ll find plenty of integration tests for the Seam example "
+"applications which demonstrate more complex cases. There are instructions "
+"for running these tests using Ant, or using the TestNG plugin for eclipse:"
+msgstr ""
+"你将找到演示更复杂功能的 Seam 示例程序的许多集成测试用例。这里也有用 Ant 或 "
+"eclipse 的 TestNG 插件来运行这些测试的说明: "
+
+#. Tag: title
+#: Testing.xml:68
+#, no-c-format
+msgid "Using mocks in integration tests"
+msgstr "在集成测试里使用模拟(Mock)"
+
+#. Tag: para
+#: Testing.xml:69
+#, no-c-format
+msgid ""
+"Occasionally, we need to be able to replace the implementation of some Seam "
+"component that depends upon resources which are not available in the "
+"integration test environment. For example, suppose we have some Seam "
+"component which is a facade to some payment processing system:"
+msgstr ""
+"偶尔,我们需要替换某些依赖于集成测试环境里不可用的资源的 Seam 组件的实现。例"
+"如,假设我们有一个用于某个付款系统的 Seam 组件:"
+
+#. Tag: programlisting
+#: Testing.xml:72
+#, no-c-format
+msgid ""
+"@Name(\"paymentProcessor\")\n"
+"public class PaymentProcessor {\n"
+"    public boolean processPayment(Payment payment) { .... }\n"
+"}"
+msgstr ""
+"@Name(\"paymentProcessor\")\n"
+"public class PaymentProcessor {\n"
+"    public boolean processPayment(Payment payment) { .... }\n"
+"}"
+
+#. Tag: para
+#: Testing.xml:73
+#, no-c-format
+msgid "For integration tests, we can mock out this component as follows:"
+msgstr "为了进行集成测试,我们可以模拟这个组件:"
+
+#. Tag: programlisting
+#: Testing.xml:76
+#, no-c-format
+msgid ""
+"@Name(\"paymentProcessor\")\n"
+"@Install(precedence=MOCK)\n"
+"public class MockPaymentProcessor extends PaymentProcessor {\n"
+"    public void processPayment(Payment payment) {\n"
+"        return true;\n"
+"    }\n"
+"}"
+msgstr ""
+"@Name(\"paymentProcessor\")\n"
+"@Install(precedence=MOCK)\n"
+"public class MockPaymentProcessor extends PaymentProcessor {\n"
+"    public void processPayment(Payment payment) {\n"
+"        return true;\n"
+"    }\n"
+"}"
+
+#. Tag: para
+#: Testing.xml:77
+#, no-c-format
+msgid ""
+"Since the <literal>MOCK</literal> precedence is higher than the default "
+"precedence of application components, Seam will install the mock "
+"implementation whenever it is in the classpath. When deployed into "
+"production, the mock implementation is absent, so the real component will be "
+"installed."
+msgstr ""
+"既然 <literal>MOCK</literal> 次序比应用程序组件缺省的次序级别更高,只要模拟实"
+"现位于 classpath 里,Seam 就会安装它。而当部署至产品里时,模拟实现将被忽略,"
+"只安装真正的组件。"

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Text.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Text.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Text.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,491 @@
+# translation of Text.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Xi HUANG <xhuang at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Text\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2007-10-08 11:52+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Text.xml:6
+#, no-c-format
+msgid "Seam Text"
+msgstr "Seam Text"
+
+#. Tag: para
+#: Text.xml:7
+#, no-c-format
+msgid ""
+"Collaboration-oriented websites require a human-friendly markup language for "
+"easy entry of formatted text in forum posts, wiki pages, blogs, comments, "
+"etc. Seam provides the <literal>&lt;s:formattedText/&gt;</literal> control "
+"for display of formatted text that conforms to the <emphasis>Seam Text</"
+"emphasis> language. Seam Text is implemented using an ANTLR-based parser. "
+"You don&#39;t need to know anything about ANTLR to use it, however."
+msgstr ""
+"面向协同(Collaboration-oriented)的网站要求易用的标记语言来输入论坛帖子、"
+"wiki 页面、blog、注释等等格式化文本。Seam 提供 <literal>&lt;s:formattedText/"
+"&gt;</literal> 控件来显示遵循 <emphasis>Seam Text</emphasis> 语言的格式化文"
+"本。Seam Text 是用基于 ANTLR 的解析器实现的。但使用它并不需要了解 ANTLR。"
+
+#. Tag: title
+#: Text.xml:11
+#, no-c-format
+msgid "Basic fomatting"
+msgstr "基本的格式化"
+
+#. Tag: para
+#: Text.xml:12
+#, no-c-format
+msgid "Here is a simple example:"
+msgstr "下面是一个简单的例子:"
+
+#. Tag: programlisting
+#: Text.xml:15
+#, no-c-format
+msgid ""
+"It&#39;s easy to make *bold text*, /italic text/, |monospace|, \n"
+"~deleted text~, super^scripts^ or _underlines_."
+msgstr ""
+"很简单就可以标记 *黑体*, /斜体/, |等距|, \n"
+"~删除文本~, 上^标^ 或 _下划线_。 "
+
+#. Tag: para
+#: Text.xml:16
+#, no-c-format
+msgid ""
+"If we display this using <literal>&lt;s:formattedText/&gt;</literal>, we "
+"will get the following HTML produced:"
+msgstr ""
+"如果我们用 <literal>&lt;s:formattedText/&gt;</literal> 显示它,我们将得到下面"
+"的 HTML:"
+
+#. Tag: programlisting
+#: Text.xml:19
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"It&#39;s easy to make &lt;b&gt;bold text&lt;/b&gt;, &lt;i&gt;italic text&lt;/"
+"i&gt;, &lt;tt&gt;monospace&lt;/tt&gt;\n"
+"&lt;del&gt;deleted text&lt;/del&gt;, super&lt;sup&gt;scripts&lt;/sup&gt; or "
+"&lt;u&gt;underlines&lt;/u&gt;.\n"
+"&lt;/p&gt;"
+msgstr ""
+"&lt;p&gt;\n"
+"It&#39;s easy to make &lt;b&gt;bold text&lt;/b&gt;, &lt;i&gt;italic text&lt;/"
+"i&gt;, &lt;tt&gt;monospace&lt;/tt&gt;\n"
+"&lt;del&gt;deleted text&lt;/del&gt;, super&lt;sup&gt;scripts&lt;/sup&gt; or "
+"&lt;u&gt;underlines&lt;/u&gt;.\n"
+"&lt;/p&gt;"
+
+#. Tag: para
+#: Text.xml:20
+#, no-c-format
+msgid ""
+"We can use a blank line to indicate a new paragraph, and <literal>+</"
+"literal> to indicate a heading:"
+msgstr "我们可以使用空行来指出新的段落,以及用 <literal>+</literal> 指定标题:"
+
+#. Tag: programlisting
+#: Text.xml:23
+#, no-c-format
+msgid ""
+"+This is a big heading\n"
+"You /must/ have some text following a heading!\n"
+" \n"
+"++This is a smaller heading\n"
+"This is the first paragraph. We can split it across multiple \n"
+"lines, but we must end it with a blank line.\n"
+"\n"
+"This is the second paragraph."
+msgstr ""
+"+This is a big heading\n"
+"You /must/ have some text following a heading!\n"
+" \n"
+"++This is a smaller heading\n"
+"This is the first paragraph. We can split it across multiple \n"
+"lines, but we must end it with a blank line.\n"
+"\n"
+"This is the second paragraph."
+
+#. Tag: para
+#: Text.xml:24
+#, no-c-format
+msgid ""
+"(Note that a simple newline is ignored, you need an additional blank line to "
+"wrap text into a new paragraph.) This is the HTML that results:"
+msgstr ""
+"(注意:简单的换行会被忽略,你需要额外的空白行分隔为新的段落。)生成的 HTML "
+"如下:"
+
+#. Tag: programlisting
+#: Text.xml:27
+#, no-c-format
+msgid ""
+"&lt;h1&gt;This is a big heading&lt;/h1&gt;\n"
+"&lt;p&gt;\n"
+"You &lt;i&gt;must&lt;/i&gt; have some text following a heading!\n"
+"&lt;/p&gt;\n"
+" \n"
+"&lt;h2&gt;This is a smaller heading&lt;/h2&gt;\n"
+"&lt;p&gt;\n"
+"This is the first paragraph. We can split it across multiple \n"
+"lines, but we must end it with a blank line.\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"This is the second paragraph.\n"
+"&lt;/p&gt;"
+msgstr ""
+"&lt;h1&gt;This is a big heading&lt;/h1&gt;\n"
+"&lt;p&gt;\n"
+"You &lt;i&gt;must&lt;/i&gt; have some text following a heading!\n"
+"&lt;/p&gt;\n"
+" \n"
+"&lt;h2&gt;This is a smaller heading&lt;/h2&gt;\n"
+"&lt;p&gt;\n"
+"This is the first paragraph. We can split it across multiple \n"
+"lines, but we must end it with a blank line.\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"This is the second paragraph.\n"
+"&lt;/p&gt;"
+
+#. Tag: para
+#: Text.xml:28
+#, no-c-format
+msgid ""
+"Ordered lists are created using the <literal>#</literal> character. "
+"Unordered lists use the <literal>=</literal> character:"
+msgstr ""
+"<literal>#</literal> 字符创建排序的列表,而未排序的列表使用 <literal>=</"
+"literal> 字符。"
+
+#. Tag: programlisting
+#: Text.xml:31
+#, no-c-format
+msgid ""
+"An ordered list:\n"
+"        \n"
+"#first item\n"
+"#second item\n"
+"#and even the /third/ item\n"
+"\n"
+"An unordered list:\n"
+"\n"
+"=an item\n"
+"=another item"
+msgstr ""
+"An ordered list:\n"
+"        \n"
+"#first item\n"
+"#second item\n"
+"#and even the /third/ item\n"
+"\n"
+"An unordered list:\n"
+"\n"
+"=an item\n"
+"=another item"
+
+#. Tag: programlisting
+#: Text.xml:32
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"An ordered list:\n"
+"&lt;/p&gt;\n"
+" \n"
+"&lt;ol&gt;       \n"
+"&lt;li&gt;first item&lt;/li&gt;\n"
+"&lt;li&gt;second item&lt;/li&gt;\n"
+"&lt;li&gt;and even the &lt;i&gt;third&lt;/i&gt; item&lt;/li&gt;\n"
+"&lt;/ol&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"An unordered list:\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;ul&gt;\n"
+"&lt;li&gt;an item&lt;/li&gt;\n"
+"&lt;li&gt;another item&lt;/li&gt;\n"
+"&lt;/ul&gt;"
+msgstr ""
+"&lt;p&gt;\n"
+"An ordered list:\n"
+"&lt;/p&gt;\n"
+" \n"
+"&lt;ol&gt;       \n"
+"&lt;li&gt;first item&lt;/li&gt;\n"
+"&lt;li&gt;second item&lt;/li&gt;\n"
+"&lt;li&gt;and even the &lt;i&gt;third&lt;/i&gt; item&lt;/li&gt;\n"
+"&lt;/ol&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"An unordered list:\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;ul&gt;\n"
+"&lt;li&gt;an item&lt;/li&gt;\n"
+"&lt;li&gt;another item&lt;/li&gt;\n"
+"&lt;/ul&gt;"
+
+#. Tag: para
+#: Text.xml:33
+#, no-c-format
+msgid "Quoted sections should be surrounded in double quotes:"
+msgstr "引用的部分应该用双引号括起来:"
+
+#. Tag: programlisting
+#: Text.xml:36
+#, no-c-format
+msgid ""
+"The other guy said:\n"
+"        \n"
+"\"Nyeah nyeah-nee \n"
+"/nyeah/ nyeah!\"\n"
+"\n"
+"But what do you think he means by \"nyeah-nee\"?"
+msgstr ""
+"The other guy said:\n"
+"        \n"
+"\"Nyeah nyeah-nee \n"
+"/nyeah/ nyeah!\"\n"
+"\n"
+"But what do you think he means by \"nyeah-nee\"?"
+
+#. Tag: programlisting
+#: Text.xml:37
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"The other guy said:\n"
+"&lt;/p&gt;\n"
+"        \n"
+"&lt;q&gt;Nyeah nyeah-nee\n"
+"&lt;i&gt;nyeah&lt;/i&gt; nyeah!&lt;/q&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"But what do you think he means by &lt;q&gt;nyeah-nee&lt;/q&gt;?\n"
+"&lt;/p&gt;"
+msgstr ""
+"&lt;p&gt;\n"
+"The other guy said:\n"
+"&lt;/p&gt;\n"
+"        \n"
+"&lt;q&gt;Nyeah nyeah-nee\n"
+"&lt;i&gt;nyeah&lt;/i&gt; nyeah!&lt;/q&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"But what do you think he means by &lt;q&gt;nyeah-nee&lt;/q&gt;?\n"
+"&lt;/p&gt;"
+
+#. Tag: title
+#: Text.xml:41
+#, no-c-format
+msgid "Entering code and text with special characters"
+msgstr "输入代码和带有特殊字符的文本"
+
+#. Tag: para
+#: Text.xml:42
+#, no-c-format
+msgid ""
+"Special characters such as <literal>*</literal>, <literal>|</literal> and "
+"<literal>#</literal>, along with HTML characters such as <literal>&lt;</"
+"literal>, <literal>&gt;</literal> and <literal>&amp;</literal> may be "
+"escaped using <literal>\\</literal>:"
+msgstr ""
+"特殊字符如 <literal>*</literal>、<literal>|</literal> 和 <literal>#</"
+"literal> 以及 HTML 字符 <literal>&lt;</literal>、<literal>&gt;</literal> 和 "
+"<literal>&amp;</literal> 可用转义符 <literal>\\</literal> 进行转义。"
+
+#. Tag: programlisting
+#: Text.xml:45
+#, no-c-format
+msgid ""
+"You can write down equations like 2\\*3\\=6 and HTML tags\n"
+"like \\&lt;body\\&gt; using the escape character: \\\\."
+msgstr ""
+"You can write down equations like 2\\*3\\=6 and HTML tags\n"
+"like \\&lt;body\\&gt; using the escape character: \\\\."
+
+#. Tag: programlisting
+#: Text.xml:46
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"You can write down equations like 2*3=6 and HTML tags\n"
+"like &lt;body&gt; using the escape character: \\.\n"
+"&lt;/p&gt;"
+msgstr ""
+"&lt;p&gt;\n"
+"You can write down equations like 2*3=6 and HTML tags\n"
+"like &lt;body&gt; using the escape character: \\.\n"
+"&lt;/p&gt;"
+
+#. Tag: para
+#: Text.xml:47
+#, no-c-format
+msgid "And we can quote code blocks using backticks:"
+msgstr "且我们可以用花括号标记代码块:"
+
+#. Tag: programlisting
+#: Text.xml:50
+#, no-c-format
+msgid ""
+"My code doesn&#39;t work:\n"
+"\n"
+"`for (int i=0; i&lt;100; i--)\n"
+"{\n"
+"    doSomething();\n"
+"}`\n"
+"\n"
+"Any ideas?"
+msgstr ""
+"My code doesn&#39;t work:\n"
+"\n"
+"`for (int i=0; i&lt;100; i--)\n"
+"{\n"
+"    doSomething();\n"
+"}`\n"
+"\n"
+"Any ideas?"
+
+#. Tag: programlisting
+#: Text.xml:51
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"My code doesn&#39;t work:\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;pre&gt;for (int i=0; i&lt;100; i--)\n"
+"{\n"
+"    doSomething();\n"
+"}&lt;/pre&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"Any ideas?\n"
+"&lt;/p&gt;"
+msgstr ""
+"&lt;p&gt;\n"
+"My code doesn&#39;t work:\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;pre&gt;for (int i=0; i&lt;100; i--)\n"
+"{\n"
+"    doSomething();\n"
+"}&lt;/pre&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"Any ideas?\n"
+"&lt;/p&gt;"
+
+#. Tag: title
+#: Text.xml:55
+#, no-c-format
+msgid "Links"
+msgstr "链接"
+
+#. Tag: para
+#: Text.xml:56
+#, no-c-format
+msgid "A link may be created using the following syntax:"
+msgstr "链接可以用下面的语法创建:"
+
+#. Tag: programlisting
+#: Text.xml:59
+#, no-c-format
+msgid "Go to the Seam website at [=&gt;http://jboss.com/products/seam]."
+msgstr "访问 Seam 网站: [=&gt;http://jboss.com/products/seam]。"
+
+#. Tag: para
+#: Text.xml:60
+#, no-c-format
+msgid "Or, if you want to specify the text of the link:"
+msgstr "或者,如果你需要指定链接的描述:"
+
+#. Tag: programlisting
+#: Text.xml:63
+#, no-c-format
+msgid "Go to [the Seam website=&gt;http://jboss.com/products/seam]."
+msgstr "访问 [the Seam website=&gt;http://jboss.com/products/seam]。"
+
+#. Tag: para
+#: Text.xml:64
+#, no-c-format
+msgid ""
+"For advanced users, it is even possible to customize the Seam Text parser to "
+"understand wikiword links written using this syntax."
+msgstr ""
+"高级用户甚至可以定制 Seam Text 解析器来解析用这个语法编写的 wikiword 链接。"
+
+#. Tag: title
+#: Text.xml:70
+#, no-c-format
+msgid "Entering HTML"
+msgstr "输入 HTML"
+
+#. Tag: para
+#: Text.xml:71
+#, no-c-format
+msgid ""
+"Text may even include a certain limited subset of HTML (don&#39;t worry, the "
+"subset is chosen to be safe from cross-site scripting attacks). This is "
+"useful for creating links:"
+msgstr ""
+"文本里甚至可以包含 HTML 的某个有限的子集(不要担心,我们选取的这个子集可以抵"
+"御跨站点的脚本攻击)。这对于创建链接很有用:"
+
+#. Tag: programlisting
+#: Text.xml:74
+#, no-c-format
+msgid ""
+"You might want to link to &lt;a href=\"http://jboss.com/products/seam\"&gt;"
+"something\n"
+"cool&lt;/a&gt;, or even include an image: &lt;img src=\"/logo.jpg\"/&gt;"
+msgstr ""
+"You might want to link to &lt;a href=\"http://jboss.com/products/seam\"&gt;"
+"something\n"
+"cool&lt;/a&gt;, or even include an image: &lt;img src=\"/logo.jpg\"/&gt;"
+
+#. Tag: para
+#: Text.xml:75
+#, no-c-format
+msgid "And for creating tables:"
+msgstr "且对于创建表:"
+
+#. Tag: programlisting
+#: Text.xml:78
+#, no-c-format
+msgid ""
+"&lt;table&gt;\n"
+"    &lt;tr&gt;&lt;td&gt;First name:&lt;/td&gt;&lt;td&gt;Gavin&lt;/td&gt;&lt;/"
+"tr&gt;\n"
+"    &lt;tr&gt;&lt;td&gt;Last name:&lt;/td&gt;&lt;td&gt;King&lt;/td&gt;&lt;/"
+"tr&gt;\n"
+"&lt;/table&gt;"
+msgstr ""
+"&lt;table&gt;\n"
+"    &lt;tr&gt;&lt;td&gt;First name:&lt;/td&gt;&lt;td&gt;Gavin&lt;/td&gt;&lt;/"
+"tr&gt;\n"
+"    &lt;tr&gt;&lt;td&gt;Last name:&lt;/td&gt;&lt;td&gt;King&lt;/td&gt;&lt;/"
+"tr&gt;\n"
+"&lt;/table&gt;"
+
+#. Tag: para
+#: Text.xml:79
+#, no-c-format
+msgid "But you can do much more if you want!"
+msgstr "但如果你愿意,你可以做更多的事情!"

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Tools.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Tools.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Tools.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,869 @@
+# translation of Tools.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Xi HUANG <xhuang at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Tools\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2007-10-08 11:48+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Tools.xml:6
+#, no-c-format
+msgid "Seam tools"
+msgstr "Seam 工具"
+
+#. Tag: title
+#: Tools.xml:8
+#, no-c-format
+msgid "jBPM designer and viewer"
+msgstr "jBPM designer 和 viewer"
+
+#. Tag: para
+#: Tools.xml:9
+#, no-c-format
+msgid ""
+"The jBPM designer and viewer will let you design and view in a nice way your "
+"business processes and your pageflows. This convenient tool is part of JBoss "
+"Eclipse IDE and more details can be found in the jBPM&#39;s documentation "
+"(http://docs.jboss.com/jbpm/v3/gpd/)"
+msgstr ""
+"jBPM designer 和 viewer 将让你很好地设计和查看你的商业过程和页面流程。这个方"
+"便的工具是 JBoss Eclipse IDE 的一部分,更多细节可以在 jBPM 的文档(http://"
+"docs.jboss.com/jbpm/v3/gpd/)里找到。"
+
+#. Tag: title
+#: Tools.xml:13
+#, no-c-format
+msgid "<title>Business process designer</title>"
+msgstr "<title>商业过程 designer</title>"
+
+#. Tag: para
+#: Tools.xml:14
+#, no-c-format
+msgid "This tool lets you design your own business process in a graphical way."
+msgstr "这个工具让你用图形方式设计自己的商业过程。"
+
+#. Tag: screeninfo
+#: Tools.xml:17 Tools.xml:33
+#, no-c-format
+msgid "<screeninfo>Business process designer</screeninfo>"
+msgstr "<screeninfo>商业过程 designer</screeninfo>"
+
+#. Tag: title
+#: Tools.xml:29
+#, no-c-format
+msgid "Pageflow viewer"
+msgstr "Pageflow viewer"
+
+#. Tag: para
+#: Tools.xml:30
+#, no-c-format
+msgid ""
+"This tool let you design to some extend your pageflows and let you build "
+"graphical views of them so you can easily share and compare ideas on how it "
+"should be designed."
+msgstr ""
+"这个工具可以让你设计页面流程的某些扩展并构建图形化视图,你可以很容易地为哪种"
+"设计更为合适而进行比较。"
+
+#. Tag: title
+#: Tools.xml:47
+#, no-c-format
+msgid "CRUD-application generator"
+msgstr "CRUD 应用程序生成器"
+
+#. Tag: para
+#: Tools.xml:48
+#, no-c-format
+msgid ""
+"This chapter, will give you a short overview of the support for Seam that is "
+"available in the Hibernate Tools. Hibernate Tools is a set of tools for "
+"working with Hibernate and related technologies, such as JBoss Seam and "
+"EJB3. The tools are available as a set of eclipse plugins and Ant tasks. You "
+"can download the Hibernate Tools from the JBoss Eclipse IDE or Hibernate "
+"Tools websites."
+msgstr ""
+"在本章,我们将简单介绍 Hibernate Tools 目前对 Seam 的支持。Hibernate Tools 是"
+"一套用于 Hibernate 和相关技术(如 JBoss Seam 和 EJB)的工具。这些工具包括一系"
+"列的 eclipse 插件和 Ant 任务。你可以从 JBoss Eclipse IDE 或 Hibernate Tools "
+"网站下载这些工具。"
+
+#. Tag: para
+#: Tools.xml:51
+#, no-c-format
+msgid ""
+"The specific support for Seam that is currently available is generation of a "
+"fully functional Seam based CRUD-application. The CRUD-application can be "
+"generated based on your existing Hibernate mapping files or EJB3 annotated "
+"POJO&#39;s or even fully reverse engineered from your existing database "
+"schema."
+msgstr ""
+"目前可用的对 Seam 的特殊支持是生成功能完备的基于 Seam 的 CRUD 应用程序。CRUD "
+"应用程序可以根据你现有的 Hibernate 映射文件或含有 EJB3 注解的 POJO 来生成,甚"
+"至可以完全从现有的数据库模式实施逆向工程来得到。"
+
+#. Tag: para
+#: Tools.xml:54
+#, no-c-format
+msgid ""
+"The following sections is focused on the features required to understand for "
+"usage with Seam. The content is derived from the the Hibernate Tools "
+"reference documentation. Thus if you need more detailed information please "
+"refer to the Hibernate Tools documentation."
+msgstr ""
+"下面的章节着重于和 Seam 相关的特征。其内容来源于 Hibernate Tools 的参考文档。"
+"因此,如果你需要更详细的信息,请参考 Hibernate Tools 的参考文档。"
+
+#. Tag: title
+#: Tools.xml:58
+#, no-c-format
+msgid "Creating a Hibernate configuration file"
+msgstr "创建 Hibernate 配置文件"
+
+#. Tag: para
+#: Tools.xml:59
+#, no-c-format
+msgid ""
+"To be able to reverse engineer and generate code a hibernate.properties or "
+"hibernate.cfg.xml file is needed. The Hibernate Tools provide a wizard for "
+"generating the hibernate.cfg.xml file if you do not already have such file."
+msgstr ""
+"要能够实施逆向工程并生成代码,你需要 hibernate.properties 或 hibernate.cfg."
+"xml 文件。如果还没有这个文件的话,Hibernate Tools 提供了生成 hibernate.cfg."
+"xml 文件的向导。"
+
+#. Tag: para
+#: Tools.xml:62
+#, no-c-format
+msgid ""
+"Start the wizard by clicking \"New Wizard\" (Ctrl+N), select the Hibernate/"
+"Hibernate Configuration file (cfg.xml) wizard and press \"Next\". After "
+"selecting the wanted location for the hibernate.cfg.xml file, you will see "
+"the following page:"
+msgstr ""
+"点击 \"New Wizard\" (Ctrl+N) 来启动这个向导,选择 Hibernate/Hibernate "
+"Configuration file (cfg.xml) wizard 并按 \"Next\" 按钮。在选择了存放 "
+"hibernate.cfg.xml 文件的位置后,你将看到下面的页面:"
+
+#. Tag: para
+#: Tools.xml:73
+#, no-c-format
+msgid ""
+"Tip: The contents in the combo boxes for the JDBC driver class and JDBC URL "
+"change automatically, depending on the Dialect and actual driver you have "
+"chosen."
+msgstr ""
+"提示:combo box 里关于 JDBC 驱动类和 JDBC URL 的内容将根据 Dialect 和你选择的"
+"实际的驱动自动变化。"
+
+#. Tag: para
+#: Tools.xml:76
+#, no-c-format
+msgid ""
+"Enter your configuration information in this dialog. Details about the "
+"configuration options can be found in Hibernate reference documentation."
+msgstr ""
+"在这个对话框里输入你的配置信息。关于配置选项的细节可以在 Hibernate 参考文档里"
+"找到。"
+
+#. Tag: para
+#: Tools.xml:79
+#, no-c-format
+msgid ""
+"Press \"Finish\" to create the configuration file, after optionally creating "
+"a Console onfiguration, the hibernate.cfg.xml will be automatically opened "
+"in an editor. The last option \"Create Console Configuration\" is enabled by "
+"default and when enabled i will automatically use the hibernate.cfg.xml for "
+"the basis of a \"Console Configuration\""
+msgstr ""
+"按 \"Finish\" 来创建这个配置文件,在选择是否创建 Console Configuration 后,"
+"hibernate.cfg.xml 将自动地在一个编辑器里打开。最后的选项 \"Create Console "
+"Configuration\" 是缺省启用的,这个选项如果启用的话,我将自动地将 hibernate."
+"cfg.xml 作为 \"Console Configuration\" 的基础。"
+
+#. Tag: title
+#: Tools.xml:85
+#, no-c-format
+msgid "<title>Creating a Hibernate Console configuration</title>"
+msgstr "<title>创建 Hibernate 的 Console configuration</title>"
+
+#. Tag: para
+#: Tools.xml:86
+#, no-c-format
+msgid ""
+"A Console Configuration describes to the Hibernate plugin which "
+"configuration files should be used to configure hibernate, including which "
+"classpath is needed to load the POJO&#39;s, JDBC drivers etc. It is required "
+"to make usage of query prototyping, reverse engineering and code generation. "
+"You can have multiple named console configurations. Normally you would just "
+"need one per project, but more (or less) is definitly possible."
+msgstr ""
+"控制台配置(Console Configuration)描述了 Hibernate 插件使用哪个配置文件来配"
+"置 hibernate、需要哪个 classpath 来装载 POJO 和 JDBC 驱动等。它被要求利用查询"
+"原型(query prototyping) 、逆向工程(reverse engineering)和代码生成。你可以"
+"有多个命名的控制台配置。通常每个项目只需要一个,但更多(或更少)也是可能的。"
+
+#. Tag: para
+#: Tools.xml:89
+#, no-c-format
+msgid ""
+"You create a console configuration by running the Console Configuration "
+"wizard, shown in the following screenshot. The same wizard will also be used "
+"if you are coming from the hibernate.cfg.xml wizard and had enabled \"Create "
+"Console Configuration\"."
+msgstr ""
+"如下面的屏幕截图所示,你可以通过运行 Console Configuration 向导来创建控制台配"
+"置。如果你使用了 hibernate.cfg.xml 向导并启用了 \"Create Console "
+"Configuration\",那你也将使用这个向导。"
+
+#. Tag: caption
+#: Tools.xml:100
+#, no-c-format
+msgid "<caption>Creating a Hibernate Console configuration</caption>"
+msgstr "<caption>创建 Hibernate 控制台配置(Console configuration)</caption>"
+
+#. Tag: para
+#: Tools.xml:102
+#, no-c-format
+msgid ""
+"The following table describes the relevant settings. The wizard can "
+"automatically detect default values for most of these if you started the "
+"Wizard with the relevant java project selected"
+msgstr ""
+"下表描述了相关的设置。如果你用相关的 java 项目启动向导,它可以自动地检测大多"
+"数缺省的值。"
+
+#. Tag: title
+#: Tools.xml:106
+#, no-c-format
+msgid "Hibernate Console Configuration Parameters"
+msgstr "Hibernate 控制台配置参数"
+
+#. Tag: para
+#: Tools.xml:114
+#, no-c-format
+msgid "Parameter"
+msgstr "参数"
+
+#. Tag: para
+#: Tools.xml:119 Tools.xml:306 Tools.xml:456
+#, no-c-format
+msgid "Description"
+msgstr "描述"
+
+#. Tag: para
+#: Tools.xml:124
+#, no-c-format
+msgid "Auto detected value"
+msgstr "自动检测的值"
+
+#. Tag: para
+#: Tools.xml:133
+#, no-c-format
+msgid "Name"
+msgstr "名称"
+
+#. Tag: para
+#: Tools.xml:138
+#, no-c-format
+msgid "The unique name of the configuration"
+msgstr "配置的唯一名称"
+
+#. Tag: para
+#: Tools.xml:143
+#, no-c-format
+msgid "Name of the selected project"
+msgstr "所选项目的名称"
+
+#. Tag: para
+#: Tools.xml:150
+#, no-c-format
+msgid "Property file"
+msgstr "属性文件"
+
+#. Tag: para
+#: Tools.xml:155
+#, no-c-format
+msgid "Path to a hibernate.properties file"
+msgstr "hibernate.properties 文件的路径"
+
+#. Tag: para
+#: Tools.xml:160
+#, no-c-format
+msgid "First hibernate.properties file found in the selected project"
+msgstr "在所选项目里找到的第一个 hibernate.properties 文件"
+
+#. Tag: para
+#: Tools.xml:167
+#, no-c-format
+msgid "Configuration file"
+msgstr "配置文件"
+
+#. Tag: para
+#: Tools.xml:172
+#, no-c-format
+msgid "Path to a hibernate.cfg.xml file"
+msgstr "hibernate.cfg.xml 文件的路径"
+
+#. Tag: para
+#: Tools.xml:177
+#, no-c-format
+msgid "First hibernate.cfg.xml file found in the selected project"
+msgstr "在所选项目里找到的第一个 hibernate.cfg.xml 文件"
+
+#. Tag: para
+#: Tools.xml:184
+#, no-c-format
+msgid "Enable Hibernate ejb3/annotations"
+msgstr "启用 Hibernate ejb3 注解"
+
+#. Tag: para
+#: Tools.xml:189
+#, no-c-format
+msgid ""
+"Selecting this option enables usage of annotated classes. hbm.xml files are "
+"of course still possible to use too. This feature requires running the "
+"Eclipse IDE with a JDK 5 runtime, otherwise you will get classloading and/or "
+"version errors."
+msgstr ""
+"这个选项启用了注解类的使用。你当然仍可能使用 hbm.xml 文件。这个特征要求用 "
+"JDK 5 runtime 运行 Eclipse IDE,否则你将遇到类装载和/或版本错误。"
+
+#. Tag: para
+#: Tools.xml:194
+#, no-c-format
+msgid "Not enabled"
+msgstr "没有启用"
+
+#. Tag: para
+#: Tools.xml:201
+#, no-c-format
+msgid "Mapping files"
+msgstr "映射文件"
+
+#. Tag: para
+#: Tools.xml:206
+#, no-c-format
+msgid ""
+"List of additional mapping files that should be loaded. Note: A hibernate."
+"cfg.xml can also contain mappings. Thus if these a duplicated here, you will "
+"get \"Duplicate mapping\" errors when using the console configuration."
+msgstr ""
+"应该加载的其他映射文件的列表。注意:hibernate.cfg.xml 也包含映射关系。因此,"
+"如果出现重复的值,当使用控制台配置时你将遇到 \"Duplicate mapping\" 错误。"
+
+#. Tag: para
+#: Tools.xml:211
+#, no-c-format
+msgid ""
+"If no hibernate.cfg.xml file is found, all hbm.xml files found in the "
+"selected project"
+msgstr ""
+"如果没有找到 hibernate.cfg.xml 文件,将找到所选项目里的所有 hbm.xml 文件。"
+
+#. Tag: para
+#: Tools.xml:218
+#, no-c-format
+msgid "Classpath"
+msgstr "Classpath"
+
+#. Tag: para
+#: Tools.xml:223
+#, no-c-format
+msgid ""
+"The classpath for loading POJO and JDBC drivers. Do not add Hibernate core "
+"libraries or dependencies, they are already included. If you get "
+"ClassNotFound errors then check this list for possible missing or redundant "
+"directories/jars."
+msgstr ""
+"载入 POJO 和 JDBC 驱动的 classpath。不要添加 Hibernate core 的库或依赖文件,"
+"因为它们已经被包括了。如果你遇到 ClassNotFound 错误,则请检查这个列表是否有遗"
+"漏或多余的目录/jar 文件。"
+
+#. Tag: para
+#: Tools.xml:228
+#, no-c-format
+msgid ""
+"The default build output directory and any JARs with a class implementing "
+"java.sql.Driver in the selected project"
+msgstr ""
+"缺省的构建输出目录和所选项目里任何带有实现 java.sql.Driver 类的 JAR 文件。"
+
+#. Tag: para
+#: Tools.xml:236
+#, no-c-format
+msgid ""
+"Clicking \"Finish\" creates the configuration and shows it in the "
+"\"Hibernate Configurations\" view"
+msgstr ""
+"点击 \"Finish\" 创建这个配置并在 \"Hibernate Configurations\" 视图里显示它。"
+
+#. Tag: caption
+#: Tools.xml:247
+#, no-c-format
+msgid "Console overview"
+msgstr "控制台概述"
+
+#. Tag: title
+#: Tools.xml:252
+#, no-c-format
+msgid "Reverse engineering and code generation"
+msgstr "逆向工程和代码生成"
+
+#. Tag: para
+#: Tools.xml:253
+#, no-c-format
+msgid ""
+"A very simple \"click-and-generate\" reverse engineering and code generation "
+"facility is available. It is this facility that allows you to generate the "
+"skeleton for a full Seam CRUD application."
+msgstr ""
+"这里有一个非常简单的 \"click-and-generate\" 逆向工程和代码生成工具。它允许你"
+"为一个完整的 Seam CRUD 应用程序生成代码框架。"
+
+#. Tag: para
+#: Tools.xml:256
+#, no-c-format
+msgid ""
+"To start working with this process, start the \"Hibernate Code Generation\" "
+"which is available in the toolbar via the Hibernate icon or via the \"Run/"
+"Hibernate Code Generation\" menu item."
+msgstr ""
+"要启动这个过程,点击工具栏里 Hibernate 图标或通过 \"Run/Hibernate Code "
+"Generation\" 菜单选项来启动 \"Hibernate Code Generation\"。"
+
+#. Tag: title
+#: Tools.xml:260
+#, no-c-format
+msgid "Code Generation Launcher"
+msgstr "代码生成起动器(Launcher)"
+
+#. Tag: para
+#: Tools.xml:261
+#, no-c-format
+msgid ""
+"When you click on \"Hibernate Code Generation\" the standard Eclipse "
+"launcher dialog will appear. In this dialog you can create, edit and delete "
+"named Hibernate code generation \"launchers\"."
+msgstr ""
+"当你点击 \"Hibernate Code Generation\" 时,标准的 Eclipse 生成器对话框将出"
+"现。在这个对话框里,你可以创建、编辑和删除命名的 Hibernate 代码生成“起动器"
+"(launcher)”。"
+
+#. Tag: para
+#: Tools.xml:272
+#, no-c-format
+msgid ""
+"The dialog has the standard tabs \"Refresh\" and \"Common\" that can be used "
+"to configure which directories should be automatically refreshed and various "
+"general settings launchers, such as saving them in a project for sharing the "
+"launcher within a team."
+msgstr ""
+"这个对话框具有标准的 \"Refresh\" 和 \"Common\" 标签页,用来配置自动刷新哪个方"
+"向以及不同的起动器设置,如将它们保存在项目里并在团队里共享。"
+
+#. Tag: para
+#: Tools.xml:283
+#, no-c-format
+msgid ""
+"The first time you create a code generation launcher you should give it a "
+"meaningfull name, otherwise the default prefix \"New_Generation\" will be "
+"used."
+msgstr ""
+"你第一次创建代码生成起动器时,你应该给它起一个有意义的名字,否则将使用缺省的"
+"前缀 \"New_Generation\"。"
+
+#. Tag: para
+#: Tools.xml:286
+#, no-c-format
+msgid ""
+"Note: The \"At least one exporter option must be selected\" is just a "
+"warning stating that for this launch to work you need to select an exporter "
+"on the Exporter tab. When an exporter has been selected the warning will "
+"disappear."
+msgstr ""
+"注意:\"At least one exporter option must be selected\" 仅是一个警告,指出你"
+"需要在 Exporter 标签页里选择一个 exporter 这个起动器才能工作。在选择了 "
+"exporter 后,这个警告将消失。"
+
+#. Tag: para
+#: Tools.xml:289
+#, no-c-format
+msgid "On the \"Main\" tab you the following fields:"
+msgstr "\"Main\" 标签页上有下面的字段:"
+
+#. Tag: title
+#: Tools.xml:293
+#, no-c-format
+msgid "Code generation \"Main\" tab fields"
+msgstr "\"Main\" 标签页字段"
+
+#. Tag: para
+#: Tools.xml:301 Tools.xml:451
+#, no-c-format
+msgid "Field"
+msgstr "字段"
+
+#. Tag: para
+#: Tools.xml:315
+#, no-c-format
+msgid "Console Configuration"
+msgstr "控制台配置"
+
+#. Tag: para
+#: Tools.xml:320
+#, no-c-format
+msgid ""
+"The name of the console configuration which should be used when code "
+"generating."
+msgstr "生成代码时应该使用的控制台配置的名称。"
+
+#. Tag: para
+#: Tools.xml:327
+#, no-c-format
+msgid "Output directory"
+msgstr "输出目录"
+
+#. Tag: para
+#: Tools.xml:332
+#, no-c-format
+msgid ""
+"Path to a directory into where all output will be written by default. Be "
+"aware that existing files will be overwritten, so be sure to specify the "
+"correct directory."
+msgstr ""
+"所有输出缺省写入的目录。注意,现有的文件将被覆盖,所以请确保指定正确的目录。"
+
+#. Tag: para
+#: Tools.xml:339
+#, no-c-format
+msgid "Reverse engineer from JDBC Connection"
+msgstr "从 JDBC 连接实施逆向工程"
+
+#. Tag: para
+#: Tools.xml:344
+#, no-c-format
+msgid ""
+"If enabled the tools will reverse engineer the database available via the "
+"connection information in the selected Hibernate Console Configuration and "
+"generate code based on the database schema. If not enabled the code "
+"generation will just be based on the mappings already specified in the "
+"Hibernate Console configuration."
+msgstr ""
+"如果启用,这些工具将通过选定的 Hibernate 控制台配置的连接信息对可用的数据库实"
+"施逆向工程,并基于数据库模式生成代码。如果不启用,代码生成将仅基于在 "
+"Hibernate 控制台配置里已经指定的映射进行。"
+
+#. Tag: para
+#: Tools.xml:351
+#, no-c-format
+msgid "Package"
+msgstr "软件包"
+
+#. Tag: para
+#: Tools.xml:356
+#, no-c-format
+msgid ""
+"The package name here is used as the default package name for any entities "
+"found when reverse engineering."
+msgstr "对于在实施逆向工程时找到的实体,这里的软件包名将被用作缺省的软件包名。"
+
+#. Tag: para
+#: Tools.xml:363
+#, no-c-format
+msgid "reveng.xml"
+msgstr "reveng.xml"
+
+#. Tag: para
+#: Tools.xml:368
+#, no-c-format
+msgid ""
+"Path to a reveng.xml file. A reveng.xml file allows you to control certain "
+"aspects of the reverse engineering. e.g. how jdbc types are mapped to "
+"hibernate types and especially important which tables are included/excluded "
+"from the process. Clicking \"setup\" allows you to select an existing reveng."
+"xml file or create a new one.."
+msgstr ""
+"reveng.xml 文件的路径。reveng.xml 文件允许你控制逆向工程的某些方面,如:jdbc "
+"类型如何映射到 hibernate 类型,更重要的是,过程包括/不包括哪些表。点击 "
+"\"setup\" 允许你选择现有的 reveng.xml 文件或创建一个新文件。"
+
+#. Tag: para
+#: Tools.xml:375
+#, no-c-format
+msgid "reveng. strategy"
+msgstr "reveng. strategy"
+
+#. Tag: para
+#: Tools.xml:380
+#, no-c-format
+msgid ""
+"If reveng.xml does not provide enough customization you can provide your own "
+"implementation of an ReverseEngineeringStrategy. The class need to be in the "
+"claspath of the Console Configuration, otherwise you will get class not "
+"found exceptions."
+msgstr ""
+"如果 reveng.xml 没有提供足够的自定义,你也可以提供自己对 "
+"ReverseEngineeringStrategy 的实现。这个类需要放入控制台配置的 claspath,否则"
+"你将遇到 class not found 异常。"
+
+#. Tag: para
+#: Tools.xml:387
+#, no-c-format
+msgid "Generate basic typed composite ids"
+msgstr "生成基本类型的组合 id"
+
+#. Tag: para
+#: Tools.xml:392
+#, no-c-format
+msgid ""
+"This field should always be enabled when generating the Seam CRUD "
+"application. A table that has a multi-colum primary key a &lt;composite-"
+"id&gt; mapping will always be created. If this option is enabled and there "
+"are matching foreign-keys each key column is still considered a &#39;"
+"basic&#39; scalar (string, long, etc.) instead of a reference to an entity. "
+"If you disable this option a &lt;key-many-to-one&gt; instead. Note: a &lt;"
+"many-to-one&gt; property is still created, but is simply marked as non-"
+"updatable and non-insertable."
+msgstr ""
+"在生成 Seam CRUD 应用程序时,这个字段应该总是被启用。对于有多个字段组合主键的"
+"表,&lt;composite-id&gt; 映射总被创建。如果这个选项被启用且存在匹配的外键,每"
+"个键字段将仍被认为是“基本”标量(字符串、长整型等)而不是对实体的引用。如果你"
+"禁用这个选项,&lt;key-many-to-one&gt; 将被使用。注意:&lt;many-to-one&gt; 属"
+"性仍会被创建,但会简单地标记为不可更新和插入的。"
+
+#. Tag: para
+#: Tools.xml:399
+#, no-c-format
+msgid "Use custom templates"
+msgstr "使用自定义的模板"
+
+#. Tag: para
+#: Tools.xml:404
+#, no-c-format
+msgid ""
+"If enabled, the Template directory will be searched first when looking up "
+"the velocity templates, allowing you to redefine how the individual "
+"templates process the hibernate mapping model."
+msgstr ""
+"如果被启用,当查找 velocity 模板时,Template 目录将首先被搜索,这允许你重新定"
+"义单个的模板是怎样处理 hibernate 映射模型的。"
+
+#. Tag: para
+#: Tools.xml:411
+#, no-c-format
+msgid "Template directory"
+msgstr "Template 目录"
+
+#. Tag: para
+#: Tools.xml:416
+#, no-c-format
+msgid "A path to a directory with custom velocity templates."
+msgstr "带有自定义 velocity 模板的目录的路径。"
+
+#. Tag: title
+#: Tools.xml:427
+#, no-c-format
+msgid "Exporters"
+msgstr "Exporters"
+
+#. Tag: para
+#: Tools.xml:428
+#, no-c-format
+msgid ""
+"The exporters tab is used to specify which type of code that should be "
+"generated. Each selection represents an \"Exporter\" that are responsible "
+"for generating the code, hence the name."
+msgstr ""
+"Exporters 标签页被用来指定应该生成哪种类型的代码。每个选项都代表一个 "
+"\"Exporter\",顾名思义,负责生成代码。"
+
+#. Tag: para
+#: Tools.xml:439
+#, no-c-format
+msgid ""
+"The following table describes in short the various exporters. The most "
+"relevant for Seam is of course the \"JBoss Seam Skeleton app\"."
+msgstr ""
+"下表简单描述了不同的 exporter。和 Seam 最相关的当然是 \"JBoss Seam Skeleton "
+"app\"。"
+
+#. Tag: title
+#: Tools.xml:443
+#, no-c-format
+msgid "Code generation \"Exporter\" tab fields"
+msgstr "代码生成 \"Exporter\" 标签页字段"
+
+#. Tag: para
+#: Tools.xml:465
+#, no-c-format
+msgid "Generate domain code"
+msgstr "生成域代号"
+
+#. Tag: para
+#: Tools.xml:470
+#, no-c-format
+msgid ""
+"Generates POJO&#39;s for all the persistent classes and components found in "
+"the given Hibernate configuration."
+msgstr "生成给定 Hibernate 配置里找到的所有持久化类和组件的 POJO 代码。"
+
+#. Tag: para
+#: Tools.xml:477
+#, no-c-format
+msgid "JDK 1.5 constructs"
+msgstr "JDK 1.5 constructs"
+
+#. Tag: para
+#: Tools.xml:482
+#, no-c-format
+msgid "When enabled the POJO&#39;s will use JDK 1.5 constructs."
+msgstr "启用这个选项时,POJO 将使用 JDK 1.5 constructs。"
+
+#. Tag: para
+#: Tools.xml:489
+#, no-c-format
+msgid "EJB3/JSR-220 annotations"
+msgstr "EJB3/JSR-220 注解"
+
+#. Tag: para
+#: Tools.xml:494
+#, no-c-format
+msgid ""
+"When enabled the POJO&#39;s will be annotated according to the EJB3/JSR-220 "
+"persistency specification."
+msgstr "当启用这个选项时,POJO 将按照 EJB3/JSR-220 持久化规格进行注解。"
+
+#. Tag: para
+#: Tools.xml:501
+#, no-c-format
+msgid "Generate DAO code"
+msgstr "生成 DAO 代码"
+
+#. Tag: para
+#: Tools.xml:506
+#, no-c-format
+msgid "Generates a set of DAO&#39;s for each entity found."
+msgstr "为每个找到的实体生成一系列的 DAO。"
+
+#. Tag: para
+#: Tools.xml:513
+#, no-c-format
+msgid "Generate Mappings"
+msgstr "生成映射"
+
+#. Tag: para
+#: Tools.xml:518
+#, no-c-format
+msgid "Generate mapping (hbm.xml) files for each entity"
+msgstr "为每个实体生成映射文件(hbm.xml)"
+
+#. Tag: para
+#: Tools.xml:525
+#, no-c-format
+msgid "Generate hibernate configuration file"
+msgstr "生成 hibernate 配置文件"
+
+#. Tag: para
+#: Tools.xml:530
+#, no-c-format
+msgid ""
+"Generate a hibernate.cfg.xml file. Used to keep the hibernate.cfg.xml "
+"uptodate with any new found mapping files."
+msgstr ""
+"生成一个 hibernate.cfg.xml 文件。用来根据任何新发现的映射文件来更新 "
+"hibernate.cfg.xml。"
+
+#. Tag: para
+#: Tools.xml:537
+#, no-c-format
+msgid "Generate schema html-documentation"
+msgstr "生成 schema 的 html 文档"
+
+#. Tag: para
+#: Tools.xml:542
+#, no-c-format
+msgid ""
+"Generates set of html pages that documents the database schema and some of "
+"the mappings."
+msgstr "生成数据库模式和一些映射文件的 html 格式的文档。"
+
+#. Tag: para
+#: Tools.xml:549
+#, no-c-format
+msgid "Generate JBoss Seam skeleton app (beta)"
+msgstr "生成 JBoss Seam 骨架应用程序(beta)"
+
+#. Tag: para
+#: Tools.xml:554
+#, no-c-format
+msgid ""
+"Generates a complete JBoss Seam skeleton app. The generation will include "
+"annotated POJO&#39;s, Seam controller beans and a JSP for the presentation "
+"layer. See the generated readme.txt for how to use it."
+msgstr ""
+"生成完整的 JBoss Seam skeleton 应用程序。这将包括持久层的注解的 POJO、Seam "
+"controller bean 和 JSP。请查看生成的 readme.txt 里关于如何使用的内容。"
+
+#. Tag: para
+#: Tools.xml:557
+#, no-c-format
+msgid ""
+"Note: this exporter generates a full application, including a build.xml thus "
+"you will get the best results if you use an output directory which is the "
+"root of your project."
+msgstr ""
+"注意:这个 exporter 生成了一个完整的应用程序,包括一个 build.xml,因此,如果"
+"你把该项目的根目录用作输出目录,你将获得最好的结果。"
+
+#. Tag: title
+#: Tools.xml:568
+#, no-c-format
+msgid "Generating and using the code"
+msgstr "生成并使用这些代码"
+
+#. Tag: para
+#: Tools.xml:569
+#, no-c-format
+msgid ""
+"When you have finished filling out the settings, simply press \"Run\" to "
+"start the generation of code. This might take a little while if you are "
+"reverse engineering from a database."
+msgstr ""
+"当你已经完成这些设置,简单地按 \"Run\" 来启动所生成的代码。如果你从数据库里进"
+"行逆向工程的话,这可能需要一点时间。"
+
+#. Tag: para
+#: Tools.xml:572
+#, no-c-format
+msgid ""
+"When the generation have finished you should now have a complete skeleton "
+"Seam application in the output directory. In the output directory there is a "
+"<literal>readme.txt</literal> file describing the steps needed to deploy and "
+"run the example."
+msgstr ""
+"当生成完成后,你应该在输出目录里看到一个完整的骨架 Seam 程序。在输出目录里,"
+"有一个 <literal>readme.txt</literal> 文件,它描述了部署和运行这个例子所需的步"
+"骤。"
+
+#. Tag: para
+#: Tools.xml:575
+#, no-c-format
+msgid ""
+"If you want to regenerate/update the skeleton code then simply run the code "
+"generation again by selecting the \"Hibernate Code Generation\" in the "
+"toolbar or \"Run\" menu. Enjoy."
+msgstr ""
+"如果你想重新生成/更新这些骨架代码,只要简单地选择 \"Run\" 菜单或工具栏里的 "
+"\"Hibernate Code Generation\" 再次运行代码生成就可以了。"

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Tutorial.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Tutorial.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Tutorial.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,5739 @@
+# translation of Tutorial.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Xi HUANG <xhuang at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Tutorial\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2008-02-04 23:29+0000\n"
+"PO-Revision-Date: 2007-12-04 11:51+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <zh at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Tutorial.xml:6
+#, no-c-format
+msgid "Seam Tutorial"
+msgstr "Seam 教程"
+
+#. Tag: title
+#: Tutorial.xml:8
+#, no-c-format
+msgid "Try the examples"
+msgstr "尝试示例程序"
+
+#. Tag: para
+#: Tutorial.xml:9
+#, no-c-format
+msgid ""
+"In this tutorial, we'll assume that you are using JBoss AS 4.2 with Seam, as "
+"in the case of JBoss Enterprise Application Platform."
+msgstr ""
+"在这个教程里,我们将假设你使用 JBoss AS 4.2 作为 JBoss 企业级应用程序平台。"
+
+#. Tag: para
+#: Tutorial.xml:12
+#, no-c-format
+msgid "The directory structure of each example in Seam follows this pattern:"
+msgstr "Seam 里的每个例程的目录结构都遵循下面的模式:"
+
+#. Tag: para
+#: Tutorial.xml:17
+#, no-c-format
+msgid ""
+"Web pages, images and stylesheets may be found in <filename>examples/"
+"<replaceable>registration</replaceable>/view</filename>"
+msgstr ""
+"网页、图片和样式表可以在 <filename>examples/<replaceable>registration</"
+"replaceable>/view</filename> 里找到"
+
+#. Tag: para
+#: Tutorial.xml:22
+#, no-c-format
+msgid ""
+"Resources such as deployment descriptors and data import scripts may be "
+"found in <filename>examples/<replaceable>registration</replaceable>/"
+"resources</filename>"
+msgstr ""
+"部署描述符和数据导入脚本等资源可以在 <filename>examples/"
+"<replaceable>registration</replaceable>/resources</filename> 里找到"
+
+#. Tag: para
+#: Tutorial.xml:27
+#, no-c-format
+msgid ""
+"Java source code may be found in <filename>examples/"
+"<replaceable>registration</replaceable>/src</filename>"
+msgstr ""
+"Java 源代码可以在 <filename>examples/<replaceable>registration</replaceable>/"
+"src</filename> 里找到"
+
+#. Tag: para
+#: Tutorial.xml:32
+#, no-c-format
+msgid ""
+"The Ant build script is <filename>examples/<replaceable>registration</"
+"replaceable>/build.xml</filename>"
+msgstr ""
+"Ant 构建脚本是 <filename>examples/<replaceable>registration</replaceable>/"
+"build.xml</filename>"
+
+#. Tag: title
+#: Tutorial.xml:38
+#, no-c-format
+msgid "Running the examples on JBoss AS"
+msgstr "在 JBoss AS 上运行例程"
+
+#. Tag: para
+#: Tutorial.xml:39
+#, no-c-format
+msgid ""
+"First, make sure you have Ant correctly installed, with <literal>&#36;"
+"ANT_HOME</literal> and <literal>&#36;JAVA_HOME</literal> set correctly. "
+"Next, make sure you set the location of your JBoss AS installation in the "
+"<literal>build.properties</literal> file in the root folder of your Seam "
+"installation. If you haven't already done so, start JBoss AS now by typing "
+"<literal>bin/run.sh</literal> or <literal>bin/run.bat</literal> in the root "
+"directory of your JBoss installation."
+msgstr ""
+"首先,请确保你正确地安装了 Ant 并设置了 <literal>&#36;ANT_HOME</literal> 和 "
+"<literal>&#36;JAVA_HOME</literal>。然后,请确保在 Seam 安装的根目录下的 "
+"<literal>build.properties</literal> 文件里设置 JBoss AS 的安装位置。如果你还"
+"没有这么做,请在 JBoss 安装的根目录下运行 <literal>bin/run.sh</literal> 或 "
+"<literal>bin/run.bat</literal>。"
+
+#. Tag: para
+#: Tutorial.xml:42
+#, no-c-format
+msgid ""
+"By default the examples will deploy to the default configuration of the "
+"server. These examples should be deployed to the production configuration if "
+"they are to be used with JBoss Enterprise Application Platform 4.2, and the "
+"example <literal>build.xml</literal> file should be modified to reflect this "
+"before building and deploying. Two lines should be changed in this file:"
+msgstr ""
+"例程缺省将部署在服务器的缺省配置下。如果这些例程在 JBoss 企业级应用程序平台下"
+"运行,它们将以 production 配置部署,你将需要在构建和部署之前修改示例 "
+"<literal>build.xml</literal> 文件。这个文件有两行应该修改为:"
+
+#. Tag: screen
+#: Tutorial.xml:45
+#, no-c-format
+msgid ""
+"&lt;property name=\"deploy.dir\"           value=\"${jboss.home}/server/"
+"production/deploy\"/&gt;"
+msgstr ""
+"&lt;property name=\"deploy.dir\"           value=\"${jboss.home}/server/"
+"production/deploy\"/&gt;"
+
+#. Tag: screen
+#: Tutorial.xml:46
+#, no-c-format
+msgid ""
+"&lt;property name=\"webroot.dir\"         \n"
+"        value=\"${deploy.dir}/jboss-web.deployer/ROOT.war\"/&gt;"
+msgstr ""
+"&lt;property name=\"webroot.dir\"         \n"
+"        value=\"${deploy.dir}/jboss-web.deployer/ROOT.war\"/&gt;"
+
+#. Tag: para
+#: Tutorial.xml:47
+#, no-c-format
+msgid ""
+"Now, build and deploy the example by typing <literal>ant deploy</literal> in "
+"the <filename>examples/<replaceable>registration</replaceable></filename> "
+"directory."
+msgstr ""
+"现在,在 <filename>examples/<replaceable>registration</replaceable></"
+"filename> 目录下输入 <literal>ant deploy</literal> 来构建并部署例程。"
+
+#. Tag: para
+#: Tutorial.xml:50
+#, no-c-format
+msgid ""
+"Try it out by accessing <ulink url=\"http://localhost:8080/seam-registration/"
+"\"><literal>http://localhost:8080/seam-registration/</literal></ulink> with "
+"your web browser."
+msgstr ""
+"然后在 web 浏览器里输入 <ulink url=\"http://localhost:8080/seam-registration/"
+"\"><literal>http://localhost:8080/seam-registration/</literal></ulink> 进行访"
+"问。"
+
+#. Tag: title
+#: Tutorial.xml:56
+#, no-c-format
+msgid "Running the examples on Tomcat"
+msgstr "在 Tomcat 上运行例程"
+
+#. Tag: para
+#: Tutorial.xml:57
+#, no-c-format
+msgid ""
+"First, make sure you have Ant correctly installed, with <literal>&#36;"
+"ANT_HOME</literal> and <literal>&#36;JAVA_HOME</literal> set correctly. "
+"Next, make sure you set the location of your Tomcat installation in the "
+"<literal>build.properties</literal> file in the root folder of your Seam "
+"installation."
+msgstr ""
+"首先,请确保你正确地安装了 Ant 并设置了 <literal>&#36;ANT_HOME</literal> 和 "
+"<literal>&#36;JAVA_HOME</literal>。然后,请确保在 Seam 安装的根目录下的 "
+"<literal>build.properties</literal> 文件里设置 Tomcat 的安装位置。"
+
+#. Tag: para
+#: Tutorial.xml:60
+#, no-c-format
+msgid ""
+"Now, build and deploy the example by typing <literal>ant deploy.tomcat</"
+"literal> in the <filename>examples/<replaceable>registration</replaceable></"
+"filename> directory."
+msgstr ""
+"现在,在 <filename>examples/<replaceable>registration</replaceable></"
+"filename> 目录下输入 <literal>ant deploy.tomcat</literal> 来构建并部署例程。"
+
+#. Tag: para
+#: Tutorial.xml:63
+#, no-c-format
+msgid "Finally, start Tomcat."
+msgstr "最后,启动 Tomcat。"
+
+#. Tag: para
+#: Tutorial.xml:66
+#, no-c-format
+msgid ""
+"Try it out by accessing <ulink url=\"http://localhost:8080/jboss-seam-"
+"registration/\"><literal>http://localhost:8080/jboss-seam-registration/</"
+"literal></ulink> with your web browser."
+msgstr ""
+"然后在 web 浏览器里输入 <ulink url=\"http://localhost:8080/jboss-seam-"
+"registration/\"><literal>http://localhost:8080/jboss-seam-registration/</"
+"literal></ulink> 进行访问。"
+
+#. Tag: para
+#: Tutorial.xml:69
+#, no-c-format
+msgid ""
+"When you deploy the example to Tomcat, any EJB3 components will run inside "
+"the JBoss Embeddable EJB3 container, a complete standalone EJB3 container "
+"environment."
+msgstr ""
+"当你把这个例程部署到 Tomcat 时,任何 EJB3 组件将在可嵌入的 JBoss EJB3 容器"
+"(完整的独立 EJB3 容器环境)里运行。"
+
+#. Tag: title
+#: Tutorial.xml:75
+#, no-c-format
+msgid "Running the example tests"
+msgstr "运行示例测试用例"
+
+#. Tag: para
+#: Tutorial.xml:76
+#, no-c-format
+msgid ""
+"Most of the examples come with a suite of TestNG integration tests. The "
+"easiest way to run the tests is to run <literal>ant testexample</literal> "
+"inside the <filename>examples/<replaceable>registration</replaceable></"
+"filename> directory. It is also possible to run the tests inside your IDE "
+"using the TestNG plugin."
+msgstr ""
+"大多数例程都带有一套 TestNG 集成测试用例。运行这些测试用例的最容易的方法是在 "
+"<filename>examples/<replaceable>registration</replaceable></filename> 目录下"
+"输入 <literal>ant testexample</literal>。你也可以在 IDE 里使用 TestNG 插件来"
+"运行测试用例。"
+
+#. Tag: title
+#: Tutorial.xml:84
+#, no-c-format
+msgid "Your first Seam application: the registration example"
+msgstr "你的第一个 Seam 应用程序:registration 示例"
+
+#. Tag: para
+#: Tutorial.xml:85
+#, no-c-format
+msgid ""
+"The registration example is a fairly trivial application that lets a new "
+"user store his username, real name and password in the database. The example "
+"isn&#39;t intended to show off all of the cool functionality of Seam. "
+"However, it demonstrates the use of an EJB3 session bean as a JSF action "
+"listener, and basic configuration of Seam."
+msgstr ""
+"这个 registration 示例程序是一个很普通的应用程序,它让新用户在数据库里存储用"
+"户名、真实姓名和密码。它的目的并不是展示 Seam 的所有功能,而是演示如何将 "
+"EJB3 session bean 作为 JSF action listener 使用,以及 Seam 的基本配置。 "
+
+#. Tag: para
+#: Tutorial.xml:88
+#, no-c-format
+msgid ""
+"We&#39;ll go slowly, since we realize you might not yet be familiar with EJB "
+"3.0."
+msgstr "因为你有可能并不熟悉 EJB 3.0,所以我们将慢慢进行讲述。 "
+
+#. Tag: para
+#: Tutorial.xml:91
+#, no-c-format
+msgid ""
+"The start page displays a very basic form with three input fields. Try "
+"filling them in and then submitting the form. This will save a user object "
+"in the database."
+msgstr ""
+"起始页显示了具有 3 个输入域的基本表单。填入数据并提交此表单。这将把一个 user "
+"对象保存在数据库里。"
+
+#. Tag: title
+#: Tutorial.xml:103 Tutorial.xml:415 Tutorial.xml:554 Tutorial.xml:714
+#, no-c-format
+msgid "Understanding the code"
+msgstr "理解代码"
+
+#. Tag: para
+#: Tutorial.xml:104
+#, no-c-format
+msgid ""
+"The example is implemented with two JSP pages, one entity bean and one "
+"stateless session bean."
+msgstr ""
+"这个例子是用两个 JSP 页面、一个 entity bean 和一个 stateless session bean 实"
+"现的。"
+
+#. Tag: para
+#: Tutorial.xml:115
+#, no-c-format
+msgid "Let&#39;s take a look at the code, starting from the \"bottom\"."
+msgstr "让我们从“底层”开始来看看它的代码。 "
+
+#. Tag: title
+#: Tutorial.xml:119
+#, no-c-format
+msgid "The entity bean: <literal>User.java</literal>"
+msgstr "entity bean:<literal>User.java</literal>"
+
+#. Tag: para
+#: Tutorial.xml:120
+#, no-c-format
+msgid ""
+"We need an EJB entity bean for user data. This class defines "
+"<emphasis>persistence</emphasis> and <emphasis>validation</emphasis> "
+"declaratively, via annotations. It also needs some extra annotations that "
+"define the class as a Seam component."
+msgstr ""
+"我们需要一个用于用户数据的 EJB entity bean。这个类通过注解(annotation)声明"
+"式地定义了 <emphasis>persistence</emphasis> 和 <emphasis>validation</"
+"emphasis>。它也需要一些额外的注解来定义为 Seam 的组件。"
+
+#. Tag: programlisting
+#: Tutorial.xml:135
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"user\")\n"
+"@Scope(SESSION)\n"
+"@Table(name=\"users\")\n"
+"public class User implements Serializable\n"
+"{\n"
+"   private static final long serialVersionUID = 1881413500711441951L;\n"
+"   \n"
+"   private String username;\n"
+"   private String password;\n"
+"   private String name;\n"
+"   \n"
+"   public User(String name, String password, String username)\n"
+"   {\n"
+"      this.name = name;\n"
+"      this.password = password;\n"
+"      this.username = username;\n"
+"   }\n"
+"   \n"
+"   public User() {}\n"
+"   \n"
+"   @NotNull @Length(min=5, max=15)\n"
+"   public String getPassword()\n"
+"   {\n"
+"      return password;\n"
+"   }\n"
+"\n"
+"   public void setPassword(String password)\n"
+"   {\n"
+"      this.password = password;\n"
+"   }\n"
+"   \n"
+"   @NotNull\n"
+"   public String getName()\n"
+"   {\n"
+"      return name;\n"
+"   }\n"
+"\n"
+"   public void setName(String name)\n"
+"   {\n"
+"      this.name = name;\n"
+"   }\n"
+"   \n"
+"   @Id @NotNull @Length(min=5, max=15)\n"
+"   public String getUsername()\n"
+"   {\n"
+"      return username;\n"
+"   }\n"
+"\n"
+"   public void setUsername(String username)\n"
+"   {\n"
+"      this.username = username;\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+"@Entity\n"
+"@Name(\"user\")\n"
+"@Scope(SESSION)\n"
+"@Table(name=\"users\")\n"
+"public class User implements Serializable\n"
+"{\n"
+"   private static final long serialVersionUID = 1881413500711441951L;\n"
+"   \n"
+"   private String username;\n"
+"   private String password;\n"
+"   private String name;\n"
+"   \n"
+"   public User(String name, String password, String username)\n"
+"   {\n"
+"      this.name = name;\n"
+"      this.password = password;\n"
+"      this.username = username;\n"
+"   }\n"
+"   \n"
+"   public User() {}\n"
+"   \n"
+"   @NotNull @Length(min=5, max=15)\n"
+"   public String getPassword()\n"
+"   {\n"
+"      return password;\n"
+"   }\n"
+"\n"
+"   public void setPassword(String password)\n"
+"   {\n"
+"      this.password = password;\n"
+"   }\n"
+"   \n"
+"   @NotNull\n"
+"   public String getName()\n"
+"   {\n"
+"      return name;\n"
+"   }\n"
+"\n"
+"   public void setName(String name)\n"
+"   {\n"
+"      this.name = name;\n"
+"   }\n"
+"   \n"
+"   @Id @NotNull @Length(min=5, max=15)\n"
+"   public String getUsername()\n"
+"   {\n"
+"      return username;\n"
+"   }\n"
+"\n"
+"   public void setUsername(String username)\n"
+"   {\n"
+"      this.username = username;\n"
+"   }\n"
+"\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:138
+#, no-c-format
+msgid ""
+"The EJB3 standard <literal>@Entity</literal> annotation indicates that the "
+"<literal>User</literal> class is an entity bean."
+msgstr ""
+"EJB3 的标准 <literal>@Entity</literal> 注解指明这个 <literal>User</literal> "
+"类是一个 entity bean。"
+
+#. Tag: para
+#: Tutorial.xml:143
+#, no-c-format
+msgid ""
+"A Seam component needs a <emphasis>component name</emphasis> specified by "
+"the <link linkend=\"name-annotation\"><literal>@Name</literal></link> "
+"annotation. This name must be unique within the Seam application. When JSF "
+"asks Seam to resolve a context variable with a name that is the same as a "
+"Seam component name, and the context variable is currently undefined (null), "
+"Seam will instantiate that component, and bind the new instance to the "
+"context variable. In this case, Seam will instantiate a <literal>User</"
+"literal> the first time JSF encounters a variable named <literal>user</"
+"literal>."
+msgstr ""
+"Seam 组件需要用 <link linkend=\"name-annotation\"><literal>@Name</literal></"
+"link> 指定一个 <emphasis>组件名</emphasis>。这个名字在 Seam 应用程序里必须是"
+"唯一的。当 JSF 请求 Seam 解析具有相同名字的上下文变量而该变量并没有定义"
+"(null)时,Seam 将实例化该组件,并把新的实例绑定到这个上下文变量上。在这个例"
+"子里,当 JSF 第一次遇到名为 <literal>user</literal> 的变量时,Seam 将实例化 "
+"<literal>User</literal>。"
+
+#. Tag: para
+#: Tutorial.xml:148
+#, no-c-format
+msgid ""
+"Whenever Seam instantiates a component, it binds the new instance to a "
+"context variable in the component&#39;s <emphasis>default context</"
+"emphasis>. The default context is specified using the <link linkend=\"scope-"
+"annotation\"><literal>@Scope</literal></link> annotation. The <literal>User</"
+"literal> bean is a session scoped component."
+msgstr ""
+"任何时候当 Seam 实例化一个组件时,它都会将这个新的实例绑定到该组件的"
+"<emphasis>缺省上下文(default context)</emphasis>里的一个上下文变量上。缺省"
+"上下文是用 <link linkend=\"scope-annotation\"><literal>@Scope</literal></"
+"link> 注解指定的。<literal>User</literal> bean 是一个作用域为 session 的组"
+"件。 "
+
+#. Tag: para
+#: Tutorial.xml:153
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Table</literal> annotation indicates that the "
+"<literal>User</literal> class is mapped to the <literal>users</literal> "
+"table."
+msgstr ""
+"EJB 的标准 <literal>@Table</literal> 注解指明 <literal>User</literal> 类映射"
+"到 <literal>users</literal> 表。"
+
+#. Tag: para
+#: Tutorial.xml:158
+#, no-c-format
+msgid ""
+"<literal>name</literal>, <literal>password</literal> and <literal>username</"
+"literal> are the persistent attributes of the entity bean. All of our "
+"persistent attributes define accessor methods. These are needed when this "
+"component is used by JSF in the render response and update model values "
+"phases."
+msgstr ""
+"<literal>name</literal>、<literal>password</literal> 和 <literal>username</"
+"literal> 是 entity bean 的持久化属性。我们所有的持久化属性都定义了存取方法"
+"(accessor method)。当这个组件被 JSF 用在显示应答和更新模型值阶段时,这些方"
+"法是必需的。"
+
+#. Tag: para
+#: Tutorial.xml:163
+#, no-c-format
+msgid ""
+"An empty constructor is both required by both the EJB specification and by "
+"Seam."
+msgstr "EJB 规格和 Seam 都要求空的构造函数。"
+
+#. Tag: para
+#: Tutorial.xml:168
+#, no-c-format
+msgid ""
+"The <literal>@NotNull</literal> and <literal>@Length</literal> annotations "
+"are part of the Hibernate Validator framework. Seam integrates Hibernate "
+"Validator and lets you use it for data validation (even if you are not using "
+"Hibernate for persistence)."
+msgstr ""
+"<literal>@NotNull</literal> 和 <literal>@Length</literal> 注解是 Hibernate "
+"Validator 框架的一部分。Seam 集成了 Hibernate Validator 来用于数据检验(即使"
+"你没有将 Hibernate 用于持久化)。"
+
+#. Tag: para
+#: Tutorial.xml:173
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Id</literal> annotation indicates the primary key "
+"attribute of the entity bean."
+msgstr "EJB 的标准 <literal>@Id</literal> 注解指明 entity bean 的主键属性。"
+
+#. Tag: para
+#: Tutorial.xml:180
+#, no-c-format
+msgid ""
+"The most important things to notice in this example are the <literal>@Name</"
+"literal> and <literal>@Scope</literal> annotations. These annotations "
+"establish that this class is a Seam component."
+msgstr ""
+"在这个例子里要注意的最重要的事情就是<literal>@Name</literal> 和 "
+"<literal>@Scope</literal> 注解。这两个注解使这个类成为一个 Seam 组件。"
+
+#. Tag: para
+#: Tutorial.xml:183
+#, no-c-format
+msgid ""
+"We&#39;ll see below that the properties of our <literal>User</literal> class "
+"are bound to directly to JSF components and are populated by JSF during the "
+"update model values phase. We don&#39;t need any tedious glue code to copy "
+"data back and forth between the JSP pages and the entity bean domain model."
+msgstr ""
+"下面我们将看到 <literal>User</literal> 类的属性直接绑定至 JSF 组件,且在更新"
+"模型值的阶段被 JSF 所赋值。我们不需要任何沉闷的胶合代码(glue code)来在 JSP "
+"页面和 entity bean 域模型之间来回复制数据。 "
+
+#. Tag: para
+#: Tutorial.xml:186
+#, no-c-format
+msgid ""
+"However, entity beans shouldn&#39;t do transaction management or database "
+"access. So we can&#39;t use this component as a JSF action listener. For "
+"that we need a session bean."
+msgstr ""
+"然而,entity bean 不应该进行事务管理或者数据库存取。所以,我们不能把这个组件"
+"用作 JSF action listener。因此我们需要一个 session bean。 "
+
+#. Tag: title
+#: Tutorial.xml:193
+#, no-c-format
+msgid ""
+"The stateless session bean class: <literal>RegisterAction.java</literal>"
+msgstr "stateless session bean 类:<literal>RegisterAction.java</literal>"
+
+#. Tag: para
+#: Tutorial.xml:194
+#, no-c-format
+msgid ""
+"Most Seam application use session beans as JSF action listeners (you can use "
+"JavaBeans instead if you like)."
+msgstr ""
+"大多数 Seam 应用程序将 session bean 用作 JSF action listener(如果你喜欢,你"
+"也可以用 JavaBean)。"
+
+#. Tag: para
+#: Tutorial.xml:197
+#, no-c-format
+msgid ""
+"We have exactly one JSF action in our application, and one session bean "
+"method attached to it. In this case, we&#39;ll use a stateless session bean, "
+"since all the state associated with our action is held by the <literal>User</"
+"literal> bean."
+msgstr ""
+"在我们的应用程序里已经恰好有了一个 JSF 动作和一个附在上面的一个 session bean "
+"方法。在这个例子里,既然所有和动作相关的状态都是 <literal>User</literal> "
+"bean 所控制,我们将使用一个 stateless session bean。 "
+
+#. Tag: para
+#: Tutorial.xml:200
+#, no-c-format
+msgid "This is the only really interesting code in the example!"
+msgstr "这是本示例里真正令人感兴趣的代码!"
+
+#. Tag: programlisting
+#: Tutorial.xml:215
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"register\")\n"
+"public class RegisterAction implements Register\n"
+"{\n"
+"\n"
+"   @In\n"
+"   private User user;\n"
+"   \n"
+"   @PersistenceContext\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @Logger\n"
+"   private Log log;\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = em.createQuery(\n"
+"         \"select username from User where username=#{user.username}\")\n"
+"         .getResultList();\n"
+"         \n"
+"      if (existing.size()==0)\n"
+"      {\n"
+"         em.persist(user);\n"
+"         log.info(\"Registered new user #{user.username}\");\n"
+"         return \"/registered.jsp\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         FacesMessages.instance().add(\"User #{user.username} already exists"
+"\");\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+"@Stateless\n"
+"@Name(\"register\")\n"
+"public class RegisterAction implements Register\n"
+"{\n"
+"\n"
+"   @In\n"
+"   private User user;\n"
+"   \n"
+"   @PersistenceContext\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @Logger\n"
+"   private Log log;\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = em.createQuery(\n"
+"         \"select username from User where username=#{user.username}\")\n"
+"         .getResultList();\n"
+"         \n"
+"      if (existing.size()==0)\n"
+"      {\n"
+"         em.persist(user);\n"
+"         log.info(\"Registered new user #{user.username}\");\n"
+"         return \"/registered.jsp\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         FacesMessages.instance().add(\"User #{user.username} already exists"
+"\");\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:218
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Stateless</literal> annotation marks this class "
+"as stateless session bean."
+msgstr ""
+"EJB 标准的 <literal>@Stateless</literal> 注解标识这个类为 stateless session "
+"bean。"
+
+#. Tag: para
+#: Tutorial.xml:223
+#, no-c-format
+msgid ""
+"The <link linkend=\"in-annotation\"><literal>@In</literal></link> annotation "
+"marks an attribute of the bean as injected by Seam. In this case, the "
+"attribute is injected from a context variable named <literal>user</literal> "
+"(the instance variable name)."
+msgstr ""
+"<link linkend=\"in-annotation\"><literal>@In</literal></link> 注解指明 bean "
+"的这个属性是 Seam 所注入的。在这个例子里,这个属性是从名为 <literal>user</"
+"literal>(实例变量名)的上下文变量注入的。"
+
+#. Tag: para
+#: Tutorial.xml:228
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@PersistenceContext</literal> annotation is used "
+"to inject the EJB3 entity manager."
+msgstr ""
+"EJB 的标准 <literal>@PersistenceContext</literal> 注解用于注入 EJB3 entity "
+"manager。"
+
+#. Tag: para
+#: Tutorial.xml:233
+#, no-c-format
+msgid ""
+"The Seam <literal>@Logger</literal> annotation is used to inject the "
+"component&#39;s <literal>Log</literal> instance."
+msgstr ""
+"Seam <literal>@Logger</literal> 注解用于注入组件的 <literal>Log</literal> 实"
+"例。 "
+
+#. Tag: para
+#: Tutorial.xml:238
+#, no-c-format
+msgid ""
+"The action listener method uses the standard EJB3 <literal>EntityManager</"
+"literal> API to interact with the database, and returns the JSF outcome. "
+"Note that, since this is a sesson bean, a transaction is automatically begun "
+"when the <literal>register()</literal> method is called, and committed when "
+"it completes."
+msgstr ""
+"action listener 方法使用标准的 EJB3 <literal>EntityManager</literal> API 来和"
+"数据库交互并返回 JSF 结果。注意,既然这是一个 sesson bean,当 "
+"<literal>register()</literal> 方法被调用时,事务将自动开始,且在这个调用结束"
+"时提交。"
+
+#. Tag: para
+#: Tutorial.xml:243
+#, no-c-format
+msgid ""
+"Notice that Seam lets you use a JSF EL expression inside EJB-QL. Under the "
+"covers, this results in an ordinary JPA <literal>setParameter()</literal> "
+"call on the standard JPA <literal>Query</literal> object. Nice, huh?"
+msgstr ""
+"请注意 Seam 让你在 EJB-QL 里使用 JSF EL 表达式。这导致了对标准的 JPA "
+"<literal>Query</literal> 对象的普通 JPA <literal>setParameter()</literal> 调"
+"用。这很不错,是不是?"
+
+#. Tag: para
+#: Tutorial.xml:248
+#, no-c-format
+msgid ""
+"The <literal>Log</literal> API lets us easily display templated log messages."
+msgstr "<literal>Log</literal> API 让我们很容易地显示模板化的日志信息。"
+
+#. Tag: para
+#: Tutorial.xml:253
+#, no-c-format
+msgid ""
+"JSF action listener methods return a string-valued outcome that determines "
+"what page will be displayed next. A null outcome (or a void action listener "
+"method) redisplays the previous page. In plain JSF, it is normal to always "
+"use a JSF <emphasis>navigation rule</emphasis> to determine the JSF view id "
+"from the outcome. For complex application this indirection is useful and a "
+"good practice. However, for very simple examples like this one, Seam lets "
+"you use the JSF view id as the outcome, eliminating the requirement for a "
+"navigation rule. <emphasis>Note that when you use a view id as an outcome, "
+"Seam always performs a browser redirect.</emphasis>"
+msgstr ""
+"JSF action listener 方法返回一个字符串型的结果,决定之后显示哪个页面。值为 "
+"null 的结果(或者返回值为 void 的 action listener 方法)将重新显示前面的页"
+"面。在普通 JSF 里,通常使用 JSF 的 <emphasis>navigation rule</emphasis> 来决"
+"定 JSF 的视图 ID。对于复杂的应用程序,这种方法很有用也是一个好的用法。然而,"
+"对于非常简单的示例来说,Seam 让你把 JSF 的视图 ID 直接作为结果使用,消除了对 "
+"navigation rule 的需要。<emphasis>注意:当你把视图 ID 直接作为结果使用时,"
+"Seam 总是执行浏览器的重定向。</emphasis>"
+
+#. Tag: para
+#: Tutorial.xml:258
+#, no-c-format
+msgid ""
+"Seam provides a number of <emphasis>built-in components</emphasis> to help "
+"solve common problems. The <literal>FacesMessages</literal> component makes "
+"it easy to display templated error or success messages. Built-in Seam "
+"components may be obtained by injection, or by calling an <literal>instance()"
+"</literal> method."
+msgstr ""
+"Seam 提供许多<emphasis>内置组件</emphasis>来帮助解决共同的问题。"
+"<literal>FacesMessages</literal> 组件使显示模板化的错误或成功信息更为容易。内"
+"置的 Seam 组件可以通过注入、或者通过调用 <literal>instance()</literal> 方法来"
+"获得。"
+
+#. Tag: para
+#: Tutorial.xml:265
+#, no-c-format
+msgid ""
+"Note that we did not explicitly specify a <literal>@Scope</literal> this "
+"time. Each Seam component type has a default scope if not explicitly "
+"specified. For stateless session beans, the default scope is the stateless "
+"context. Actually, <emphasis>all</emphasis> stateless session beans belong "
+"in the stateless context."
+msgstr ""
+"注意:这次我们没有显性地指定 <literal>@Scope</literal>。如果没有显性地指定,"
+"每个 Seam 组件类型都有一个缺省的作用域。对于 stateless session bean 而言,缺"
+"省的作用域是 stateless 上下文。实际上,<emphasis>所有的</emphasis> stateless "
+"session bean 都属于 stateless 上下文。"
+
+#. Tag: para
+#: Tutorial.xml:268
+#, no-c-format
+msgid ""
+"Our session bean action listener performs the business and persistence logic "
+"for our mini-application. In more complex applications, we might need to "
+"layer the code and refactor persistence logic into a dedicated data access "
+"component. That&#39;s perfectly trivial to do. But notice that Seam does not "
+"force you into any particular strategy for application layering."
+msgstr ""
+"在这个迷你程序里,我们的 session bean 的 action listener 执行商业和持久化逻"
+"辑。在更为复杂的应用程序里,我们可能需要将代码分层并将持久化逻辑置于指定的数"
+"据访问组件里。这是再正常不过的事情了。不过请注意,Seam 并不强求你对应用程序采"
+"用任何特定的分层策略。 "
+
+#. Tag: para
+#: Tutorial.xml:271
+#, no-c-format
+msgid ""
+"Furthermore, notice that our session bean has simultaneous access to context "
+"associated with the web request (the form values in the <literal>User</"
+"literal> object, for example), and state held in transactional resources "
+"(the <literal>EntityManager</literal> object). This is a break from "
+"traditional J2EE architectures. Again, if you are more comfortable with the "
+"traditional J2EE layering, you can certainly implement that in a Seam "
+"application. But for many applications, it&#39;s simply not very useful."
+msgstr ""
+"而且,请注意我们的 session bean 同时访问了和 web 请求相关联的上下文(如 "
+"<literal>User</literal> 对象里的表单值),以及在事务性资源里保存的状态"
+"(<literal>EntityManager</literal> 对象)。这违背了传统的 J2EE 架构。我们得再"
+"次指出,你当然可以在 Seam 应用程序里遵循传统的 J2EE 分层结构。但对于许多应用"
+"程序来说,这并没什么用。 "
+
+#. Tag: title
+#: Tutorial.xml:278
+#, no-c-format
+msgid "The session bean local interface: <literal>Register.java</literal>"
+msgstr "session bean 的本地接口:<literal>Register.java</literal>"
+
+#. Tag: para
+#: Tutorial.xml:279
+#, no-c-format
+msgid "Naturally, our session bean needs a local interface."
+msgstr "自然,我们的 session bean 需要一个本地接口。"
+
+#. Tag: programlisting
+#: Tutorial.xml:282
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface Register\n"
+"{\n"
+"   public String register();\n"
+"}"
+msgstr ""
+"@Local\n"
+"public interface Register\n"
+"{\n"
+"   public String register();\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:283
+#, no-c-format
+msgid ""
+"That&#39;s the end of the Java code. Now onto the deployment descriptors."
+msgstr "Java 代码就这些了。现在来看看部署描述符。 "
+
+#. Tag: title
+#: Tutorial.xml:289
+#, no-c-format
+msgid ""
+"The Seam component deployment descriptor: <literal>components.xml</literal>"
+msgstr "Seam 组件部署描述符:<literal>components.xml</literal>"
+
+#. Tag: para
+#: Tutorial.xml:290
+#, no-c-format
+msgid ""
+"If you&#39;ve used many Java frameworks before, you&#39;ll be used to having "
+"to declare all your component classes in some kind of XML file that "
+"gradually grows more and more unmanageable as your project matures. You&#39;"
+"ll be relieved to know that Seam does not require that application "
+"components be accompanied by XML. Most Seam applications require a very "
+"small amount of XML that does not grow very much as the project gets bigger."
+msgstr ""
+"如果以前你已经使用了许多 Java 框架,你会习惯于在某种 XML 文件里声明所有的组件"
+"类,这随着项目的成熟而越来越难以管理。你将欣慰地看到 Seam 并不要求所有组件都"
+"伴随着 XML。大多数 Seam 应用程序只需要极少数的 XML,而且随着项目的扩张而并不"
+"会增加多少。 "
+
+#. Tag: para
+#: Tutorial.xml:293
+#, no-c-format
+msgid ""
+"Nevertheless, it is often useful to be able to provide for <emphasis>some</"
+"emphasis> external configuration of <emphasis>some</emphasis> components "
+"(particularly the components built in to Seam). You have a couple of options "
+"here, but the most flexible option is to provide this configuration in a "
+"file called <literal>components.xml</literal>, located in the <literal>WEB-"
+"INF</literal> directory. We&#39;ll use the <literal>components.xml</literal> "
+"file to tell Seam how to find our EJB components in JNDI:"
+msgstr ""
+"而且,为<emphasis>某些</emphasis>组件(特别是 Seam 内置的组件)提供<emphasis>"
+"某些</emphasis>外部的配置也经常很有用。你可以有几个选择,但是最灵活的选择是"
+"在 <literal>WEB-INF</literal> 目录下的 <literal>components.xml</literal> 文件"
+"里提供这些配置。我们将使用 <literal>components.xml</literal> 文件来告诉 Seam "
+"如何在 JNDI 里找到我们的 EJB 组件。 "
+
+#. Tag: programlisting
+#: Tutorial.xml:296
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"&gt;\n"
+"     &lt;core:init jndi-pattern=\"@jndiPattern@\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"&gt;\n"
+"     &lt;core:init jndi-pattern=\"@jndiPattern@\"/&gt;\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Tutorial.xml:297
+#, no-c-format
+msgid ""
+"This code configures a property named <literal>jndiPattern</literal> of a "
+"built-in Seam component named <literal>org.jboss.seam.core.init</literal>."
+msgstr ""
+"这些代码配置了 Seam 的内置组件 <literal>org.jboss.seam.core.init</literal> 的"
+"一个名为 <literal>jndiPattern</literal> 的属性。"
+
+#. Tag: title
+#: Tutorial.xml:303
+#, no-c-format
+msgid "The web deployment description: <literal>web.xml</literal>"
+msgstr "web 部署描述符:<literal>web.xml</literal>"
+
+#. Tag: para
+#: Tutorial.xml:304
+#, no-c-format
+msgid ""
+"The presentation layer for our mini-application will be deployed in a WAR. "
+"So we&#39;ll need a web deployment descriptor."
+msgstr ""
+"我们这个迷你程序的表示层将部署在 WAR 文件里,所以我们需要一个 web 部署描述"
+"符。 "
+
+#. Tag: programlisting
+#: Tutorial.xml:307
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;web-app version=\"2.5\"\n"
+"    xmlns=\"http://java.sun.com/xml/ns/javaee\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n"
+"        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\"&gt;\n"
+"\n"
+"    &lt;!- - Seam - -&gt;\n"
+"\n"
+"    &lt;listener&gt;\n"
+"        &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/"
+"listener-class&gt;\n"
+"    &lt;/listener&gt;\n"
+"    \n"
+"     &lt;listener&gt;\n"
+"         &lt;listener-class&gt;com.sun.faces.config.ConfigureListener&lt;/"
+"listener-class&gt;\n"
+"    &lt;/listener&gt;\n"
+"\n"
+"    &lt;context-param&gt;\n"
+"        &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-"
+"name&gt;\n"
+"        &lt;param-value&gt;client&lt;/param-value&gt;\n"
+"    &lt;/context-param&gt;\n"
+"\n"
+"    &lt;context-param&gt;\n"
+"        &lt;param-name&gt;javax.faces.DEFAULT_SUFFIX&lt;/param-name&gt;\n"
+"        &lt;param-value&gt;.jspx&lt;/param-value&gt;\n"
+"    &lt;/context-param&gt;\n"
+"\n"
+"        &lt;servlet&gt;\n"
+"                &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;\n"
+"                &lt;servlet-class&gt;javax.faces.webapp.FacesServlet&lt;/"
+"servlet-class&gt;\n"
+"                &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;\n"
+"        &lt;/servlet&gt;\n"
+"\n"
+"        <!-- Faces Servlet Mapping -->\n"
+"        &lt;servlet-mapping&gt;\n"
+"                &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;\n"
+"                &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;\n"
+"        &lt;/servlet-mapping&gt;\n"
+"\n"
+"&lt;/web-app&gt;"
+msgstr ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;web-app version=\"2.5\"\n"
+"    xmlns=\"http://java.sun.com/xml/ns/javaee\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n"
+"        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\"&gt;\n"
+"\n"
+"    &lt;!- - Seam - -&gt;\n"
+"\n"
+"    &lt;listener&gt;\n"
+"        &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/"
+"listener-class&gt;\n"
+"    &lt;/listener&gt;\n"
+"    \n"
+"     &lt;listener&gt;\n"
+"         &lt;listener-class&gt;com.sun.faces.config.ConfigureListener&lt;/"
+"listener-class&gt;\n"
+"    &lt;/listener&gt;\n"
+"\n"
+"    &lt;context-param&gt;\n"
+"        &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-"
+"name&gt;\n"
+"        &lt;param-value&gt;client&lt;/param-value&gt;\n"
+"    &lt;/context-param&gt;\n"
+"\n"
+"    &lt;context-param&gt;\n"
+"        &lt;param-name&gt;javax.faces.DEFAULT_SUFFIX&lt;/param-name&gt;\n"
+"        &lt;param-value&gt;.jspx&lt;/param-value&gt;\n"
+"    &lt;/context-param&gt;\n"
+"\n"
+"        &lt;servlet&gt;\n"
+"                &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;\n"
+"                &lt;servlet-class&gt;javax.faces.webapp.FacesServlet&lt;/"
+"servlet-class&gt;\n"
+"                &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;\n"
+"        &lt;/servlet&gt;\n"
+"\n"
+"        <!-- Faces Servlet Mapping -->\n"
+"        &lt;servlet-mapping&gt;\n"
+"                &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;\n"
+"                &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;\n"
+"        &lt;/servlet-mapping&gt;\n"
+"\n"
+"&lt;/web-app&gt;"
+
+#. Tag: para
+#: Tutorial.xml:308
+#, no-c-format
+msgid ""
+"This <literal>web.xml</literal> file configures Seam and Glassfish. The "
+"configuration you see here is pretty much identical in all Seam applications."
+msgstr ""
+"<literal>web.xml</literal> 文件配置 Seam 和 Glassfish。你在这里看到的配置和所"
+"有 Seam 应用程序里的是完全一样的。"
+
+#. Tag: title
+#: Tutorial.xml:314
+#, no-c-format
+msgid "The JSF configration: <literal>faces-config.xml</literal>"
+msgstr "JSF 配置:<literal>faces-config.xml</literal>"
+
+#. Tag: para
+#: Tutorial.xml:315
+#, no-c-format
+msgid ""
+"All Seam applications use JSF views as the presentation layer. So we&#39;ll "
+"need <literal>faces-config.xml</literal>."
+msgstr ""
+"所有的 Seam 应用程序的表示层都使用 JSF 视图。所以我们将需要 <literal>faces-"
+"config.xml</literal>。 "
+
+#. Tag: programlisting
+#: Tutorial.xml:318
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;!DOCTYPE faces-config \n"
+"PUBLIC \"-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN\"\n"
+"                            \"http://java.sun.com/dtd/web-facesconfig_1_0.dtd"
+"\"&gt;\n"
+"&lt;faces-config&gt;\n"
+"\n"
+"    &lt;!- - A phase listener is needed by all Seam applications - -&gt;\n"
+"    \n"
+"    &lt;lifecycle&gt;\n"
+"        &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-"
+"listener&gt;\n"
+"    &lt;/lifecycle&gt;\n"
+"\n"
+"&lt;/faces-config&gt;"
+msgstr ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;!DOCTYPE faces-config \n"
+"PUBLIC \"-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN\"\n"
+"                            \"http://java.sun.com/dtd/web-facesconfig_1_0.dtd"
+"\"&gt;\n"
+"&lt;faces-config&gt;\n"
+"\n"
+"    &lt;!- - A phase listener is needed by all Seam applications - -&gt;\n"
+"    \n"
+"    &lt;lifecycle&gt;\n"
+"        &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-"
+"listener&gt;\n"
+"    &lt;/lifecycle&gt;\n"
+"\n"
+"&lt;/faces-config&gt;"
+
+#. Tag: para
+#: Tutorial.xml:319
+#, no-c-format
+msgid ""
+"The <literal>faces-config.xml</literal> file integrates Seam into JSF. Note "
+"that we don&#39;t need any JSF managed bean declarations! The managed beans "
+"are the Seam components. In Seam applications, the <literal>faces-config."
+"xml</literal> is used much less often than in plain JSF."
+msgstr ""
+"<literal>faces-config.xml</literal> 文件把 Seam 集成至 JSF。注意,我们不需要"
+"任何 JSF 的 managed bean 声明!managed bean 是 Seam 的组件。在 Seam 应用程序"
+"里,<literal>faces-config.xml</literal> 比在普通 JSF 程序里用的少得多。 "
+
+#. Tag: para
+#: Tutorial.xml:322
+#, no-c-format
+msgid ""
+"In fact, once you have all the basic descriptors set up, the <emphasis>only</"
+"emphasis> XML you need to write as you add new functionality to a Seam "
+"application is the navigation rules, and possibly jBPM process definitions. "
+"Seam takes the view that <emphasis>process flow</emphasis> and "
+"<emphasis>configuration data</emphasis> are the only things that truly "
+"belong in XML."
+msgstr ""
+"实际上,一旦你设置了所有的基本描述符,当你向 Seam 应用程序里添加新功能时,你"
+"需要编写的<emphasis>唯一</emphasis> XML 就是 navigation rule,以及可能的 "
+"jBPM 过程定义。Seam 认为真正属于 XML 的就是 <emphasis>process flow</"
+"emphasis> 和 <emphasis>configuration data</emphasis>。"
+
+#. Tag: para
+#: Tutorial.xml:325
+#, no-c-format
+msgid ""
+"In this simple example, we don&#39;t even need a navigation rule, since we "
+"decided to embed the view id in our action code."
+msgstr ""
+"在这个简单的例子里,既然我们决定把视图 ID 嵌入到我们的动作代码里,我们甚至不"
+"需要 navigation rule。 "
+
+#. Tag: title
+#: Tutorial.xml:330
+#, no-c-format
+msgid "The EJB deployment descriptor: <literal>ejb-jar.xml</literal>"
+msgstr "EJB 部署描述符:<literal>ejb-jar.xml</literal>"
+
+#. Tag: para
+#: Tutorial.xml:331
+#, no-c-format
+msgid ""
+"The <literal>ejb-jar.xml</literal> file integrates Seam with EJB3, by "
+"attaching the <literal>SeamInterceptor</literal> to all session beans in the "
+"archive."
+msgstr ""
+"通过把 <literal>SeamInterceptor</literal> 附加到归档文件里的所有 session "
+"bean 里,<literal>ejb-jar.xml</literal> 文件集成了 Seam 和 EJB3。"
+
+#. Tag: programlisting
+#: Tutorial.xml:334
+#, no-c-format
+msgid ""
+"&lt;ejb-jar xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \n"
+"         xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee \n"
+"                           http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"
+"\"\n"
+"         version=\"3.0\"&gt;\n"
+"         \n"
+"   &lt;interceptors&gt;\n"
+"     &lt;interceptor&gt;\n"
+"       &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"     &lt;/interceptor&gt;\n"
+"   &lt;/interceptors&gt;\n"
+"   \n"
+"   &lt;assembly-descriptor&gt;\n"
+"      &lt;interceptor-binding&gt;\n"
+"         &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"         &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"      &lt;/interceptor-binding&gt;\n"
+"   &lt;/assembly-descriptor&gt;\n"
+"   \n"
+"&lt;/ejb-jar&gt;"
+msgstr ""
+"&lt;ejb-jar xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \n"
+"         xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee \n"
+"                           http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"
+"\"\n"
+"         version=\"3.0\"&gt;\n"
+"         \n"
+"   &lt;interceptors&gt;\n"
+"     &lt;interceptor&gt;\n"
+"       &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"     &lt;/interceptor&gt;\n"
+"   &lt;/interceptors&gt;\n"
+"   \n"
+"   &lt;assembly-descriptor&gt;\n"
+"      &lt;interceptor-binding&gt;\n"
+"         &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"         &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"      &lt;/interceptor-binding&gt;\n"
+"   &lt;/assembly-descriptor&gt;\n"
+"   \n"
+"&lt;/ejb-jar&gt;"
+
+#. Tag: title
+#: Tutorial.xml:338
+#, no-c-format
+msgid ""
+"The EJB persistence deployment descriptor: <literal>persistence.xml</literal>"
+msgstr "EJB 持久化部署描述符:<literal>persistence.xml</literal>"
+
+#. Tag: para
+#: Tutorial.xml:339
+#, no-c-format
+msgid ""
+"The <literal>persistence.xml</literal> file tells the EJB persistence "
+"provider where to find the datasource, and contains some vendor-specific "
+"settings. In this case, enables automatic schema export at startup time."
+msgstr ""
+"<literal>persistence.xml</literal> 文件告诉 EJB 的持久化提供者去哪寻找数据"
+"源,它包含某些和供应商相关的设置。在这个例子里,你需要在启动时启用自动化 "
+"schema 输出。"
+
+#. Tag: programlisting
+#: Tutorial.xml:342
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;persistence xmlns=\"http://java.sun.com/xml/ns/persistence\" \n"
+"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence \n"
+"                           http://java.sun.com/xml/ns/persistence/"
+"persistence_1_0.xsd\" \n"
+"             version=\"1.0\"&gt;\n"
+"    &lt;persistence-unit name=\"userDatabase\"&gt;\n"
+"      &lt;provider&gt;org.hibernate.ejb.HibernatePersistence&lt;/"
+"provider&gt;\n"
+"      &lt;jta-data-source&gt;java:/DefaultDS&lt;/jta-data-source&gt;\n"
+"      &lt;properties&gt;\n"
+"         &lt;property name=\"hibernate.hbm2ddl.auto\" value=\"create-drop\"/"
+"&gt;\n"
+"      &lt;/properties&gt;\n"
+"    &lt;/persistence-unit&gt;\n"
+"&lt;/persistence&gt;"
+msgstr ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;persistence xmlns=\"http://java.sun.com/xml/ns/persistence\" \n"
+"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence \n"
+"                           http://java.sun.com/xml/ns/persistence/"
+"persistence_1_0.xsd\" \n"
+"             version=\"1.0\"&gt;\n"
+"    &lt;persistence-unit name=\"userDatabase\"&gt;\n"
+"      &lt;provider&gt;org.hibernate.ejb.HibernatePersistence&lt;/"
+"provider&gt;\n"
+"      &lt;jta-data-source&gt;java:/DefaultDS&lt;/jta-data-source&gt;\n"
+"      &lt;properties&gt;\n"
+"         &lt;property name=\"hibernate.hbm2ddl.auto\" value=\"create-drop\"/"
+"&gt;\n"
+"      &lt;/properties&gt;\n"
+"    &lt;/persistence-unit&gt;\n"
+"&lt;/persistence&gt;"
+
+#. Tag: title
+#: Tutorial.xml:346
+#, no-c-format
+msgid ""
+"The view: <literal>register.jsp</literal> and <literal>registered.jsp</"
+"literal>"
+msgstr ""
+"视图页面:<literal>register.jsp</literal> 和 <literal>registered.jsp</"
+"literal>"
+
+#. Tag: para
+#: Tutorial.xml:347
+#, no-c-format
+msgid ""
+"The view pages for a Seam application could be implemented using any "
+"technology that supports JSF. In this example we use JSP, since it is "
+"familiar to most developers and since we have minimal requirements here "
+"anyway. (But if you take our advice, you&#39;ll use Facelets for your own "
+"applications.)"
+msgstr ""
+"Seam 应用程序里视图页面可以用任何支持 JSF 的技术来实现。既然大多数开发人员都"
+"熟悉 JSP 且这个例子的功能需求很小,在这里我们就使用 JSP。(不过如果你采用了我"
+"们的建议,你自己的应用程序将会用到 Facelets。) "
+
+#. Tag: programlisting
+#: Tutorial.xml:350
+#, no-c-format
+msgid ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://jboss.com/products/seam/taglib\" prefix=\"s\" %"
+"&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Register New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;table border=\"0\"&gt;\n"
+"       &lt;s:validateAll&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Username&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputText value=\"#{user.username}\"/&gt;&lt;/"
+"td&gt;\n"
+"         &lt;/tr&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Real Name&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputText value=\"#{user.name}\"/&gt;&lt;/td&gt;\n"
+"         &lt;/tr&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Password&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputSecret value=\"#{user.password}\"/&gt;&lt;/"
+"td&gt;\n"
+"         &lt;/tr&gt;\n"
+"       &lt;/s:validateAll&gt;\n"
+"     &lt;/table&gt;\n"
+"     &lt;h:messages/&gt;\n"
+"     &lt;h:commandButton type=\"submit\" value=\"Register\" action=\"#"
+"{register.register}\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://jboss.com/products/seam/taglib\" prefix=\"s\" %"
+"&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Register New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;table border=\"0\"&gt;\n"
+"       &lt;s:validateAll&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Username&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputText value=\"#{user.username}\"/&gt;&lt;/"
+"td&gt;\n"
+"         &lt;/tr&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Real Name&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputText value=\"#{user.name}\"/&gt;&lt;/td&gt;\n"
+"         &lt;/tr&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Password&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputSecret value=\"#{user.password}\"/&gt;&lt;/"
+"td&gt;\n"
+"         &lt;/tr&gt;\n"
+"       &lt;/s:validateAll&gt;\n"
+"     &lt;/table&gt;\n"
+"     &lt;h:messages/&gt;\n"
+"     &lt;h:commandButton type=\"submit\" value=\"Register\" action=\"#"
+"{register.register}\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+
+#. Tag: para
+#: Tutorial.xml:351
+#, no-c-format
+msgid ""
+"The only thing here that is specific to Seam is the <literal>&lt;s:"
+"validateAll&gt;</literal> tag. This JSF component tells JSF to validate all "
+"the contained input fields against the Hibernate Validator annotations "
+"specified on the entity bean."
+msgstr ""
+"Seam 在这里唯一特殊的事情就是 <literal>&lt;s:validateAll&gt;</literal> 标签。"
+"这个 JSF 组件告诉 JSF 根据 entity bean 里指定的 Hibernate Validator 注解来检"
+"验所有的输入字段。"
+
+#. Tag: programlisting
+#: Tutorial.xml:354
+#, no-c-format
+msgid ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" %&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Successfully Registered New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"    Welcome, &lt;h:outputText value=\"#{user.name}\"/&gt;, \n"
+"    you are successfully registered as &lt;h:outputText value=\"#{user."
+"username}\"/&gt;.\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" %&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Successfully Registered New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"    Welcome, &lt;h:outputText value=\"#{user.name}\"/&gt;, \n"
+"    you are successfully registered as &lt;h:outputText value=\"#{user."
+"username}\"/&gt;.\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+
+#. Tag: para
+#: Tutorial.xml:355
+#, no-c-format
+msgid ""
+"This is a boring old JSP pages using standard JSF components. There is "
+"nothing specific to Seam here."
+msgstr ""
+"这是一个使用标准的 JSF 组件的乏味的旧式 JSP 页面。Seam 在这里没有任何特殊设"
+"置。"
+
+#. Tag: title
+#: Tutorial.xml:361
+#, no-c-format
+msgid "The EAR deployment descriptor: <literal>application.xml</literal>"
+msgstr "EAR 部署描述符:<literal>application.xml</literal>"
+
+#. Tag: para
+#: Tutorial.xml:362
+#, no-c-format
+msgid ""
+"Finally, since our application is deployed as an EAR, we need a deployment "
+"descriptor there, too."
+msgstr ""
+"最后,既然我们的应用程序部署为 EAR 格式,在这里我们也需要一个部署描述符。"
+
+#. Tag: programlisting
+#: Tutorial.xml:365
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;application xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee \n"
+"                                   http://java.sun.com/xml/ns/javaee/"
+"application_5.xsd\"\n"
+"             version=\"5\"&gt;\n"
+"             \n"
+"    &lt;display-name&gt;Seam Registration&lt;/display-name&gt;\n"
+"\n"
+"    &lt;module&gt;\n"
+"        &lt;web&gt;\n"
+"            &lt;web-uri&gt;jboss-seam-registration.war&lt;/web-uri&gt;\n"
+"            &lt;context-root&gt;/seam-registration&lt;/context-root&gt;\n"
+"        &lt;/web&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;ejb&gt;jboss-seam-registration.jar&lt;/ejb&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;jboss-seam.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;el-ri.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    \n"
+"&lt;/application&gt;"
+msgstr ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;application xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee \n"
+"                                   http://java.sun.com/xml/ns/javaee/"
+"application_5.xsd\"\n"
+"             version=\"5\"&gt;\n"
+"             \n"
+"    &lt;display-name&gt;Seam Registration&lt;/display-name&gt;\n"
+"\n"
+"    &lt;module&gt;\n"
+"        &lt;web&gt;\n"
+"            &lt;web-uri&gt;jboss-seam-registration.war&lt;/web-uri&gt;\n"
+"            &lt;context-root&gt;/seam-registration&lt;/context-root&gt;\n"
+"        &lt;/web&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;ejb&gt;jboss-seam-registration.jar&lt;/ejb&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;jboss-seam.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;el-ri.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    \n"
+"&lt;/application&gt;"
+
+#. Tag: para
+#: Tutorial.xml:366
+#, no-c-format
+msgid ""
+"This deployment descriptor links modules in the enterprise archive and binds "
+"the web application to the context root <literal>/seam-registration</"
+"literal>."
+msgstr ""
+"这个部署描述符链接企业归档文件里的模块并把 web 应用程序绑定到上下文根 "
+"<literal>/seam-registration</literal>。"
+
+#. Tag: title
+#: Tutorial.xml:378 Tutorial.xml:526 Tutorial.xml:689 Tutorial.xml:804
+#, no-c-format
+msgid "How it works"
+msgstr "它任何工作"
+
+#. Tag: para
+#: Tutorial.xml:379
+#, no-c-format
+msgid ""
+"When the form is submitted, JSF asks Seam to resolve the variable named "
+"<literal>user</literal>. Since there is no value already bound to that name "
+"(in any Seam context), Seam instantiates the <literal>user</literal> "
+"component, and returns the resulting <literal>User</literal> entity bean "
+"instance to JSF after storing it in the Seam session context."
+msgstr ""
+"当表单被提交时,JSF 请求 Seam 解析名为 <literal>user</literal> 的变量。既然这"
+"个名字还没有值(在任何 Seam 上下文里),Seam 实例化 <literal>user</literal> "
+"组件,并在将其存储在 Seam 的  session 上下文后把 <literal>User</literal> "
+"entity bean 的实例返回到 JSF。"
+
+#. Tag: para
+#: Tutorial.xml:382
+#, no-c-format
+msgid ""
+"The form input values are now validated against the Hibernate Validator "
+"constraints specified on the <literal>User</literal> entity. If the "
+"constraints are violated, JSF redisplays the page. Otherwise, JSF binds the "
+"form input values to properties of the <literal>User</literal> entity bean."
+msgstr ""
+"表单值现在用 <literal>User</literal> 实体里指定的 Hibernate Validator 约束进"
+"行检验。如果违反了约束条件,JSF 就重新显示这个页面。否则,JSF 把表单的输入值"
+"绑定到 <literal>User</literal> entity bean 的属性上。"
+
+#. Tag: para
+#: Tutorial.xml:385
+#, no-c-format
+msgid ""
+"Next, JSF asks Seam to resolve the variable named <literal>register</"
+"literal>. Seam finds the <literal>RegisterAction</literal> stateless session "
+"bean in the stateless context and returns it. JSF invokes the "
+"<literal>register()</literal> action listener method."
+msgstr ""
+"然后,JSF 请求 Seam 解析名为 <literal>register</literal> 的变量。Seam 找到 "
+"stateless 上下文里的 <literal>RegisterAction</literal> stateless session "
+"bean 并返回它。JSF 再调用<literal>register()</literal> action listener 方法。"
+
+#. Tag: para
+#: Tutorial.xml:388
+#, no-c-format
+msgid ""
+"Seam intercepts the method call and injects the <literal>User</literal> "
+"entity from the Seam session context, before continuing the invocation."
+msgstr ""
+"Seam 拦截这个方法调用,并在继续调用之前,从 Seam 的 session 上下文注入 "
+"<literal>User</literal> entity。"
+
+#. Tag: para
+#: Tutorial.xml:391
+#, no-c-format
+msgid ""
+"The <literal>register()</literal> method checks if a user with the entered "
+"username already exists. If so, an error message is queued with the "
+"<literal>FacesMessages</literal> component, and a null outcome is returned, "
+"causing a page redisplay. The <literal>FacesMessages</literal> component "
+"interpolates the JSF expression embedded in the message string and adds a "
+"JSF <literal>FacesMessage</literal> to the view."
+msgstr ""
+"<literal>register()</literal> 方法检查输入的用户名是否已经存在。如果存在,关"
+"于<literal>FacesMessages</literal> 组件的错误消息进入队列并返回 null 结果且导"
+"致页面的重新显示。<literal>FacesMessages</literal> 组件修改嵌入在消息串的 "
+"JSF 表达式并在视图里添加一个 JSF <literal>FacesMessage</literal>。"
+
+#. Tag: para
+#: Tutorial.xml:394
+#, no-c-format
+msgid ""
+"If no user with that username exists, the <literal>\"/registered.jsp\"</"
+"literal> outcome triggers a browser redirect to the <literal>registered.jsp</"
+"literal> page. When JSF comes to render the page, it asks Seam to resolve "
+"the variable named <literal>user</literal> and uses property values of the "
+"returned <literal>User</literal> entity from Seam&#39;s session scope."
+msgstr ""
+"如果该用户名不存在,<literal>\"/registered.jsp\"</literal> 结构将触发浏览器重"
+"定向到 <literal>registered.jsp</literal> 页面。当 JSF 显示该页面时,它请求 "
+"Seam 解析名为 <literal>user</literal> 的变量并使用从 Seam 的 session 作用域返"
+"回的 <literal>User</literal> 实体的属性值。 "
+
+#. Tag: title
+#: Tutorial.xml:402
+#, no-c-format
+msgid "Clickable lists in Seam: the messages example"
+msgstr "Seam 里可点击的列表:messages 示例"
+
+#. Tag: para
+#: Tutorial.xml:403
+#, no-c-format
+msgid ""
+"Clickable lists of database search results are such an important part of any "
+"online application that Seam provides special functionality on top of JSF to "
+"make it easier to query data using EJB-QL or HQL and display it as a "
+"clickable list using a JSF <literal>&lt;h:dataTable&gt;</literal>. The "
+"messages example demonstrates this functionality."
+msgstr ""
+"数据库查询结果的可点击列表对于任何的在线应用程序来说都是如此的重要,Seam 提"
+"供 JSF 之上的特殊功能,它通过 JSF <literal>&lt;h:dataTable&gt;</literal> 使"
+"用 EJB-QL 或 HQL 查询数据并作为可点击列表显示更为容易。messages 示例演示了这"
+"个功能。"
+
+#. Tag: para
+#: Tutorial.xml:416
+#, no-c-format
+msgid ""
+"The message list example has one entity bean, <literal>Message</literal>, "
+"one session bean, <literal>MessageListBean</literal> and one JSP."
+msgstr ""
+"message list 示例有一个 entity bean:<literal>Message</literal>;一个 "
+"session bean:<literal>MessageListBean</literal> 以及一个 JSP 页面。"
+
+#. Tag: title
+#: Tutorial.xml:420
+#, no-c-format
+msgid "The entity bean: <literal>Message.java</literal>"
+msgstr "entity bean:<literal>Message.java</literal>"
+
+#. Tag: para
+#: Tutorial.xml:421
+#, no-c-format
+msgid ""
+"The <literal>Message</literal> entity defines the title, text, date and time "
+"of a message, and a flag indicating whether the message has been read:"
+msgstr ""
+"<literal>Message</literal> 实体定义了消息(message)的 title、text、date 和 "
+"time,以及指示这个 message 是否已被阅读的标记(flag)。"
+
+#. Tag: programlisting
+#: Tutorial.xml:424
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"message\")\n"
+"@Scope(EVENT)\n"
+"public class Message implements Serializable\n"
+"{\n"
+"   private Long id;\n"
+"   private String title;\n"
+"   private String text;\n"
+"   private boolean read;\n"
+"   private Date datetime;\n"
+"   \n"
+"   @Id @GeneratedValue\n"
+"   public Long getId() {\n"
+"      return id;\n"
+"   }\n"
+"   public void setId(Long id) {\n"
+"      this.id = id;\n"
+"   }\n"
+"   \n"
+"   @NotNull @Length(max=100)\n"
+"   public String getTitle() {\n"
+"      return title;\n"
+"   }\n"
+"   public void setTitle(String title) {\n"
+"      this.title = title;\n"
+"   }\n"
+"   \n"
+"   @NotNull @Lob\n"
+"   public String getText() {\n"
+"      return text;\n"
+"   }\n"
+"   public void setText(String text) {\n"
+"      this.text = text;\n"
+"   }\n"
+"   \n"
+"   @NotNull\n"
+"   public boolean isRead() {\n"
+"      return read;\n"
+"   }\n"
+"   public void setRead(boolean read) {\n"
+"      this.read = read;\n"
+"   }\n"
+"   \n"
+"   @NotNull \n"
+"   @Basic @Temporal(TemporalType.TIMESTAMP)\n"
+"   public Date getDatetime() {\n"
+"      return datetime;\n"
+"   }\n"
+"   public void setDatetime(Date datetime) {\n"
+"      this.datetime = datetime;\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+"@Entity\n"
+"@Name(\"message\")\n"
+"@Scope(EVENT)\n"
+"public class Message implements Serializable\n"
+"{\n"
+"   private Long id;\n"
+"   private String title;\n"
+"   private String text;\n"
+"   private boolean read;\n"
+"   private Date datetime;\n"
+"   \n"
+"   @Id @GeneratedValue\n"
+"   public Long getId() {\n"
+"      return id;\n"
+"   }\n"
+"   public void setId(Long id) {\n"
+"      this.id = id;\n"
+"   }\n"
+"   \n"
+"   @NotNull @Length(max=100)\n"
+"   public String getTitle() {\n"
+"      return title;\n"
+"   }\n"
+"   public void setTitle(String title) {\n"
+"      this.title = title;\n"
+"   }\n"
+"   \n"
+"   @NotNull @Lob\n"
+"   public String getText() {\n"
+"      return text;\n"
+"   }\n"
+"   public void setText(String text) {\n"
+"      this.text = text;\n"
+"   }\n"
+"   \n"
+"   @NotNull\n"
+"   public boolean isRead() {\n"
+"      return read;\n"
+"   }\n"
+"   public void setRead(boolean read) {\n"
+"      this.read = read;\n"
+"   }\n"
+"   \n"
+"   @NotNull \n"
+"   @Basic @Temporal(TemporalType.TIMESTAMP)\n"
+"   public Date getDatetime() {\n"
+"      return datetime;\n"
+"   }\n"
+"   public void setDatetime(Date datetime) {\n"
+"      this.datetime = datetime;\n"
+"   }\n"
+"   \n"
+"}"
+
+#. Tag: title
+#: Tutorial.xml:429
+#, no-c-format
+msgid "The stateful session bean: <literal>MessageManagerBean.java</literal>"
+msgstr "stateful session bean:<literal>MessageManagerBean.java</literal>"
+
+#. Tag: para
+#: Tutorial.xml:430
+#, no-c-format
+msgid ""
+"Just like in the previous example, we have a session bean, "
+"<literal>MessageManagerBean</literal>, which defines the action listener "
+"methods for the two buttons on our form. One of the buttons selects a "
+"message from the list, and displays that message. The other button deletes a "
+"message. So far, this is not so different to the previous example."
+msgstr ""
+"就象前面的例子,我们也有一个 session bean:<literal>MessageManagerBean</"
+"literal>,它为表单上的两个按钮定义了 action listener 方法。其中一个按钮从列表"
+"里选择一条消息,并显示这条消息。另外一个按钮可以删除消息。到目前为止,这和前"
+"面的例子没什么区别。"
+
+#. Tag: para
+#: Tutorial.xml:433
+#, no-c-format
+msgid ""
+"But <literal>MessageManagerBean</literal> is also responsible for fetching "
+"the list of messages the first time we navigate to the message list page. "
+"There are various ways the user could navigate to the page, and not all of "
+"them are preceded by a JSF action&mdash;the user might have bookmarked the "
+"page, for example. So the job of fetching the message list takes place in a "
+"Seam <emphasis>factory method</emphasis>, instead of in an action listener "
+"method."
+msgstr ""
+"但是,当第一次进入消息列表页面时,<literal>MessageManagerBean</literal> 也负"
+"责获取消息列表。用户有不同的方法导航至这个页面,但是并不是所有的方法都需要有 "
+"JSF 动作在先&mdash;例如,用户可能已经把这个页面加入书签了。所以,获取消息列表"
+"发生在 Seam 的<emphasis>工厂方法(factory method)</emphasis>,而不是 action "
+"listener 方法里。"
+
+#. Tag: para
+#: Tutorial.xml:436
+#, no-c-format
+msgid ""
+"We want to cache the list of messages in memory between server requests, so "
+"we will make this a stateful session bean."
+msgstr ""
+"我们想要在服务器请求之间缓存消息列表,所以我们将它设计为 stateful session "
+"bean。"
+
+#. Tag: programlisting
+#: Tutorial.xml:450
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Scope(SESSION)\n"
+"@Name(\"messageManager\")\n"
+"public class MessageManagerBean implements Serializable, MessageManager\n"
+"{\n"
+"\n"
+"   @DataModel\n"
+"   private List&lt;Message&gt; messageList;\n"
+"   \n"
+"   @DataModelSelection\n"
+"   @Out(required=false)\n"
+"   private Message message;\n"
+"   \n"
+"   @PersistenceContext(type=EXTENDED)\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @Factory(\"messageList\")\n"
+"   public void findMessages()\n"
+"   {\n"
+"      messageList = em.createQuery(\"from Message msg order by msg.datetime "
+"desc\").getResultList();\n"
+"   }\n"
+"   \n"
+"   public void select()\n"
+"   {\n"
+"      message.setRead(true);\n"
+"   }\n"
+"   \n"
+"   public void delete()\n"
+"   {\n"
+"      messageList.remove(message);\n"
+"      em.remove(message);\n"
+"      message=null;\n"
+"   }\n"
+"   \n"
+"   @Remove @Destroy\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+"@Stateful\n"
+"@Scope(SESSION)\n"
+"@Name(\"messageManager\")\n"
+"public class MessageManagerBean implements Serializable, MessageManager\n"
+"{\n"
+"\n"
+"   @DataModel\n"
+"   private List&lt;Message&gt; messageList;\n"
+"   \n"
+"   @DataModelSelection\n"
+"   @Out(required=false)\n"
+"   private Message message;\n"
+"   \n"
+"   @PersistenceContext(type=EXTENDED)\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @Factory(\"messageList\")\n"
+"   public void findMessages()\n"
+"   {\n"
+"      messageList = em.createQuery(\"from Message msg order by msg.datetime "
+"desc\").getResultList();\n"
+"   }\n"
+"   \n"
+"   public void select()\n"
+"   {\n"
+"      message.setRead(true);\n"
+"   }\n"
+"   \n"
+"   public void delete()\n"
+"   {\n"
+"      messageList.remove(message);\n"
+"      em.remove(message);\n"
+"      message=null;\n"
+"   }\n"
+"   \n"
+"   @Remove @Destroy\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:453
+#, no-c-format
+msgid ""
+"The <literal>@DataModel</literal> annotation exposes an attibute of type "
+"<literal>java.util.List</literal> to the JSF page as an instance of "
+"<literal>javax.faces.model.DataModel</literal>. This allows us to use the "
+"list in a JSF <literal>&lt;h:dataTable&gt;</literal> with clickable links "
+"for each row. In this case, the <literal>DataModel</literal> is made "
+"available in a session context variable named <literal>messageList</literal>."
+msgstr ""
+"<literal>@DataModel</literal> 注解作为 <literal>javax.faces.model.DataModel</"
+"literal> 的实例,向 JSF 页面开放了类型为 <literal>java.util.List</literal> 的"
+"属性。这允许我们使用为每一条记录带有可点击的链接的 JSF <literal>&lt;h:"
+"dataTable&gt;</literal> 里的列表。在这个例子里,<literal>DataModel</literal> "
+"在名为 <literal>messageList</literal> 的 session 上下文变量里可用。"
+
+#. Tag: para
+#: Tutorial.xml:458
+#, no-c-format
+msgid ""
+"The <literal>@DataModelSelection</literal> annotation tells Seam to inject "
+"the <literal>List</literal> element that corresponded to the clicked link."
+msgstr ""
+"<literal>@DataModelSelection</literal> 注解告诉 Seam 注入对应于被点击的链接"
+"的 <literal>List</literal> 元素。"
+
+#. Tag: para
+#: Tutorial.xml:463
+#, no-c-format
+msgid ""
+"The <literal>@Out</literal> annotation then exposes the selected value "
+"directly to the page. So ever time a row of the clickable list is selected, "
+"the <literal>Message</literal> is injected to the attribute of the stateful "
+"bean, and the subsequently <emphasis>outjected</emphasis> to the event "
+"context variable named <literal>message</literal>."
+msgstr ""
+"然后,<literal>@Out</literal> 注解向这个页面开放所选的值。所以,每次当可点击"
+"的列表被选住时,<literal>Message</literal> 就被注入到 stateful bean 的属性"
+"里,随后再被<emphasis>注出(outject)</emphasis>到名为 <literal>message</"
+"literal> 的上下文变量里。"
+
+#. Tag: para
+#: Tutorial.xml:468
+#, no-c-format
+msgid ""
+"This stateful bean has an EJB3 <emphasis>extended persistence context</"
+"emphasis>. The messages retrieved in the query remain in the managed state "
+"as long as the bean exists, so any subsequent method calls to the stateful "
+"bean can update them without needing to make any explicit call to the "
+"<literal>EntityManager</literal>."
+msgstr ""
+"这个 stateful bean 有一个 EJB3 <emphasis>扩展的持久化上下文(extended "
+"persistence context)</emphasis>。只要这个 bean 存在,在队列里获取的消息保持"
+"在被管理的状态,所以任何随后对 stateful bean 的方法调用都可以更新它们,而不需"
+"要显性地调用 <literal>EntityManager</literal>。"
+
+#. Tag: para
+#: Tutorial.xml:473
+#, no-c-format
+msgid ""
+"The first time we navigate to the JSP page, there will be no value in the "
+"<literal>messageList</literal> context variable. The <literal>@Factory</"
+"literal> annotation tells Seam to create an instance of "
+"<literal>MessageManagerBean</literal> and invoke the <literal>findMessages()"
+"</literal> method to initialize the value. We call <literal>findMessages()</"
+"literal> a <emphasis>factory method</emphasis> for <literal>messages</"
+"literal>."
+msgstr ""
+"当我们第一次导航至这个 JSP 页面时,<literal>messageList</literal> 上下文变量"
+"没有值。<literal>@Factory</literal> 注解告诉 Seam 来创建 "
+"<literal>MessageManagerBean</literal> 的实例并调用 <literal>findMessages()</"
+"literal> 方法初始化它的值。我们把 <literal>findMessages()</literal> 称为 "
+"<literal>messages</literal> 的一个<emphasis>工厂方法(factory method)</"
+"emphasis>。"
+
+#. Tag: para
+#: Tutorial.xml:478
+#, no-c-format
+msgid ""
+"The <literal>select()</literal> action listener method marks the selected "
+"<literal>Message</literal> as read, and updates it in the database."
+msgstr ""
+"<literal>select()</literal> action listener 方法将 <literal>Message</"
+"literal> 标记为已读,并在数据库里进行更新。"
+
+#. Tag: para
+#: Tutorial.xml:483
+#, no-c-format
+msgid ""
+"The <literal>delete()</literal> action listener method removes the selected "
+"<literal>Message</literal> from the database."
+msgstr ""
+"<literal>delete()</literal> action listener 方法从数据库删除所选择的 "
+"<literal>Message</literal>。"
+
+#. Tag: para
+#: Tutorial.xml:488
+#, no-c-format
+msgid ""
+"All stateful session bean Seam components <emphasis>must</emphasis> have a "
+"method marked <literal>@Remove @Destroy</literal> to ensure that Seam will "
+"remove the stateful bean when the Seam context ends, and clean up any server-"
+"side state."
+msgstr ""
+"对于所有的 stateful session bean,Seam 的组件都<emphasis>必须</emphasis>有一"
+"个标记为 <literal>@Remove @Destroy</literal> 的方法来确保 Seam 在上下文结束后"
+"删除这些 stateful bean,并清理任何服务器端的状态。"
+
+#. Tag: para
+#: Tutorial.xml:495
+#, no-c-format
+msgid ""
+"Note that this is a session-scoped Seam component. It is associated with the "
+"user login session, and all requests from a login session share the same "
+"instance of the component. (In Seam applications, we usually use session-"
+"scoped components sparingly.)"
+msgstr ""
+"注意,这个一个作用域为 session 的 Seam 组件。它和用户登录 session 相关联,登"
+"录 session 里所有的请求都共享相同的该组件的实例。(在 Seam 应用程序里,我们通"
+"常很节约地使用作用域为 session 的组件。)"
+
+#. Tag: title
+#: Tutorial.xml:501
+#, no-c-format
+msgid ""
+"The session bean local interface: <literal>MessageManager.java</literal>"
+msgstr "session bean 的本地接口:<literal>MessageManager.java</literal>"
+
+#. Tag: para
+#: Tutorial.xml:502
+#, no-c-format
+msgid "All session beans have a business interface, of course."
+msgstr "当然,所有的 session bean 都有一个商业接口。"
+
+#. Tag: programlisting
+#: Tutorial.xml:505
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface MessageManager\n"
+"{\n"
+"   public void findMessages();\n"
+"   public void select();\n"
+"   public void delete();\n"
+"   public void destroy();\n"
+"}"
+msgstr ""
+"@Local\n"
+"public interface MessageManager\n"
+"{\n"
+"   public void findMessages();\n"
+"   public void select();\n"
+"   public void delete();\n"
+"   public void destroy();\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:506
+#, no-c-format
+msgid "From now on, we won&#39;t show local interfaces in our code examples."
+msgstr "从现在开始,我们不会在示例代码里显示本地接口。 "
+
+#. Tag: para
+#: Tutorial.xml:509
+#, no-c-format
+msgid ""
+"Let&#39;s skip over <literal>components.xml</literal>, <literal>persistence."
+"xml</literal>, <literal>web.xml</literal>, <literal>ejb-jar.xml</literal>, "
+"<literal>faces-config.xml</literal> and <literal>application.xml</literal> "
+"since they are much the same as the previous example, and go straight to the "
+"JSP."
+msgstr ""
+"既然 <literal>components.xml</literal>、<literal>persistence.xml</literal>、"
+"<literal>web.xml</literal>、<literal>ejb-jar.xml</literal>、<literal>faces-"
+"config.xml</literal> 和 <literal>application.xml</literal> 都和前面例子的一"
+"样,让我们跳过它们。我们直接来看看 JSP 页面。 "
+
+#. Tag: title
+#: Tutorial.xml:515
+#, no-c-format
+msgid "The view: <literal>messages.jsp</literal>"
+msgstr "视图:<literal>messages.jsp</literal>"
+
+#. Tag: para
+#: Tutorial.xml:516
+#, no-c-format
+msgid ""
+"The JSP page is a straightforward use of the JSF <literal>&lt;h:dataTable&gt;"
+"</literal> component. Again, nothing specific to Seam."
+msgstr ""
+"这个 JSP 页面直接使用了 JSF <literal>&lt;h:dataTable&gt;</literal> 组件。得再"
+"次说明,Seam 在这里没什么特殊的地方。"
+
+#. Tag: programlisting
+#: Tutorial.xml:519
+#, no-c-format
+msgid ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" %&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Messages&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;h2&gt;Message List&lt;/h2&gt;\n"
+"     &lt;h:outputText value=\"No messages to display\" rendered=\"#"
+"{messageList.rowCount==0}\"/&gt;\n"
+"     &lt;h:dataTable var=\"msg\" value=\"#{messageList}\" rendered=\"#"
+"{messageList.rowCount&gt;0}\"&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Read\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:selectBooleanCheckbox value=\"#{msg.read}\" disabled=\"true"
+"\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Title\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:commandLink value=\"#{msg.title}\" action=\"#"
+"{messageManager.select}\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Date/Time\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:outputText value=\"#{msg.datetime}\"&gt;\n"
+"              &lt;f:convertDateTime type=\"both\" dateStyle=\"medium\" "
+"timeStyle=\"short\"/&gt;\n"
+"           &lt;/h:outputText&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;h:commandButton value=\"Delete\" action=\"#{messageManager."
+"delete}\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"     &lt;/h:dataTable&gt;\n"
+"     &lt;h3&gt;&lt;h:outputText value=\"#{message.title}\"/&gt;&lt;/h3&gt;\n"
+"     &lt;div&gt;&lt;h:outputText value=\"#{message.text}\"/&gt;&lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" %&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Messages&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;h2&gt;Message List&lt;/h2&gt;\n"
+"     &lt;h:outputText value=\"No messages to display\" rendered=\"#"
+"{messageList.rowCount==0}\"/&gt;\n"
+"     &lt;h:dataTable var=\"msg\" value=\"#{messageList}\" rendered=\"#"
+"{messageList.rowCount&gt;0}\"&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Read\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:selectBooleanCheckbox value=\"#{msg.read}\" disabled=\"true"
+"\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Title\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:commandLink value=\"#{msg.title}\" action=\"#"
+"{messageManager.select}\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Date/Time\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:outputText value=\"#{msg.datetime}\"&gt;\n"
+"              &lt;f:convertDateTime type=\"both\" dateStyle=\"medium\" "
+"timeStyle=\"short\"/&gt;\n"
+"           &lt;/h:outputText&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;h:commandButton value=\"Delete\" action=\"#{messageManager."
+"delete}\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"     &lt;/h:dataTable&gt;\n"
+"     &lt;h3&gt;&lt;h:outputText value=\"#{message.title}\"/&gt;&lt;/h3&gt;\n"
+"     &lt;div&gt;&lt;h:outputText value=\"#{message.text}\"/&gt;&lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+
+#. Tag: para
+#: Tutorial.xml:527
+#, no-c-format
+msgid ""
+"The first time we navigate to the <literal>messages.jsp</literal> page, "
+"whether by a JSF postback (faces request) or a direct browser GET request "
+"(non-faces request), the page will try to resolve the <literal>messageList</"
+"literal> context variable. Since this context variable is not initialized, "
+"Seam will call the factory method <literal>findMessages()</literal>, which "
+"performs a query against the database and results in a <literal>DataModel</"
+"literal> being outjected. This <literal>DataModel</literal> provides the row "
+"data needed for rendering the <literal>&lt;h:dataTable&gt;</literal>."
+msgstr ""
+"当我们第一次访问 <literal>messages.jsp</literal> 页面时,不论是通过 JSF "
+"postback(faces 请求)还是直接的浏览器 GET 请求(非 faces 请求),这个页面都"
+"会试图解析<literal>messageList</literal> 上下文变量。既然这个变量没有被初始"
+"化,Seam 将调用工厂方法 <literal>findMessages()</literal>,执行数据库查询并导"
+"致 <literal>DataModel</literal> 被注入。这个 <literal>DataModel</literal> 提"
+"供了显示 <literal>&lt;h:dataTable&gt;</literal> 所需的行数据。"
+
+#. Tag: para
+#: Tutorial.xml:530
+#, no-c-format
+msgid ""
+"When the user clicks the <literal>&lt;h:commandLink&gt;</literal>, JSF calls "
+"the <literal>select()</literal> action listener. Seam intercepts this call "
+"and injects the selected row data into the <literal>message</literal> "
+"attribute of the <literal>messageManager</literal> component. The action "
+"listener fires, marking the selected <literal>Message</literal> as read. At "
+"the end of the call, Seam outjects the selected <literal>Message</literal> "
+"to the context variable named <literal>message</literal>. Next, the EJB "
+"container commits the transaction, and the change to the <literal>Message</"
+"literal> is flushed to the database. Finally, the page is re-rendered, "
+"redisplaying the message list, and displaying the selected message below it."
+msgstr ""
+"当用户点击 <literal>&lt;h:commandLink&gt;</literal> 时,JSF 调用 "
+"<literal>select()</literal> action listener。Seam 拦截这个调用并注入选择的行"
+"数据到 <literal>messageManager</literal> 组件的 <literal>message</literal> 属"
+"性里。这个 action listener 开始运行,把所选择的 <literal>Message</literal> 标"
+"记为已读。在这个调用的最后,Seam 将选定的 <literal>Message</literal> 注出到名"
+"为 <literal>message</literal> 的上下文变量。然后,EJB 容器提交这个事务,并让"
+"数据库刷新 <literal>Message</literal> 的变化。最后,页面被重新执行,重新显示"
+"消息列表,并在其下面显示选定的消息。"
+
+#. Tag: para
+#: Tutorial.xml:533
+#, no-c-format
+msgid ""
+"If the user clicks the <literal>&lt;h:commandButton&gt;</literal>, JSF calls "
+"the <literal>delete()</literal> action listener. Seam intercepts this call "
+"and injects the selected row data into the <literal>message</literal> "
+"attribute of the <literal>messageList</literal> component. The action "
+"listener fires, removing the selected <literal>Message</literal> from the "
+"list, and also calling <literal>remove()</literal> on the "
+"<literal>EntityManager</literal>. At the end of the call, Seam refreshes the "
+"<literal>messageList</literal> context variable and clears the context "
+"variable named <literal>message</literal>. The EJB container commits the "
+"transaction, and deletes the <literal>Message</literal> from the database. "
+"Finally, the page is re-rendered, redisplaying the message list."
+msgstr ""
+"如果用户点击了 <literal>&lt;h:commandButton&gt;</literal>,JSF 调用 "
+"<literal>delete()</literal> action listener。Seam 拦截这个调用并注入选择的行"
+"数据到 <literal>messageManager</literal> 组件的 <literal>message</literal> 属"
+"性里。这个 action listener 开始运行,把所选择的 <literal>Message</literal> 从"
+"列表里删除,并调用 <literal>EntityManager</literal> 的 <literal>remove()</"
+"literal> 方法。在这个调用的最后,Seam 将刷新 <literal>messageList</literal> "
+"上下文变量并清除名为 <literal>message</literal> 的上下文变量。然后,EJB 容器"
+"提交这个事务,并从数据库删除 <literal>Message</literal>。最后,页面被重新执"
+"行,重新显示消息列表。"
+
+#. Tag: title
+#: Tutorial.xml:541
+#, no-c-format
+msgid "Seam and jBPM: the todo list example"
+msgstr "Seam 和 jBPM:“todo list”示例程序"
+
+#. Tag: para
+#: Tutorial.xml:542
+#, no-c-format
+msgid ""
+"jBPM provides sophisticated functionality for workflow and task management. "
+"To get a small taste of how jBPM integrates with Seam, we&#39;ll show you a "
+"simple \"todo list\" application. Since managing lists of tasks is such core "
+"functionality for jBPM, there is hardly any Java code at all in this example."
+msgstr ""
+"jBPM 为工作流和任务管理提供复杂的功能。为了了解 jBPM 是如何和 Seam 集成的,我"
+"们将向你演示一个简单的 \"todo list\" 程序。既然管理任务列表是 jBPM 的核心功"
+"能,在例子里你将几乎看不到 Java 代码。 "
+
+#. Tag: para
+#: Tutorial.xml:555
+#, no-c-format
+msgid ""
+"The center of this example is the jBPM process definition. There are also "
+"two JSPs and two trivial JavaBeans (There was no reason to use session "
+"beans, since they do not access the database, or have any other "
+"transactional behavior). Let&#39;s start with the process definition:"
+msgstr ""
+"这个例子的核心是 jBPM 过程定义。它也有两个 JSP 以及两个普通的 JavaBean(既然"
+"不需要访问数据库,也没有事务处理,我们没理由在这里使用 session bean)。让我们"
+"从过程定义开始: "
+
+#. Tag: programlisting
+#: Tutorial.xml:566
+#, no-c-format
+msgid ""
+"&lt;process-definition name=\"todo\"&gt;\n"
+"   \n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"todo\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;task-node name=\"todo\"&gt;\n"
+"      &lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"         &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"      &lt;/task&gt;\n"
+"      &lt;transition to=\"done\"/&gt;\n"
+"   &lt;/task-node&gt;\n"
+"   \n"
+"   &lt;end-state name=\"done\"/&gt;\n"
+"   \n"
+"&lt;/process-definition&gt;"
+msgstr ""
+"&lt;process-definition name=\"todo\"&gt;\n"
+"   \n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"todo\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;task-node name=\"todo\"&gt;\n"
+"      &lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"         &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"      &lt;/task&gt;\n"
+"      &lt;transition to=\"done\"/&gt;\n"
+"   &lt;/task-node&gt;\n"
+"   \n"
+"   &lt;end-state name=\"done\"/&gt;\n"
+"   \n"
+"&lt;/process-definition&gt;"
+
+#. Tag: para
+#: Tutorial.xml:569
+#, no-c-format
+msgid ""
+"The <literal>&lt;start-state&gt;</literal> node represents the logical start "
+"of the process. When the process starts, it immediately transitions to the "
+"<literal>todo</literal> node."
+msgstr ""
+"<literal>&lt;start-state&gt;</literal> 节点代表过程的逻辑起点(logical "
+"start)。当这个过程开始后,它马上转到 <literal>todo</literal> 节点。"
+
+#. Tag: para
+#: Tutorial.xml:574
+#, no-c-format
+msgid ""
+"The <literal>&lt;task-node&gt;</literal> node represents a <emphasis>wait "
+"state</emphasis>, where business process execution pauses, waiting for one "
+"or more tasks to be performed."
+msgstr ""
+"<literal>&lt;task-node&gt;</literal> 节点代表<emphasis>等待状态(wait state)"
+"</emphasis>,商业过程在这里会暂停,等待一个或多个任务的执行。"
+
+#. Tag: para
+#: Tutorial.xml:579
+#, no-c-format
+msgid ""
+"The <literal>&lt;task&gt;</literal> element defines a task to be performed "
+"by a user. Since there is only one task defined on this node, when it is "
+"complete, execution resumes, and we transition to the end state. The task "
+"gets its description from a Seam component named <literal>todoList</literal> "
+"(one of the JavaBeans)."
+msgstr ""
+"<literal>&lt;task&gt;</literal> 元素定义用户执行的任务。既然这个节点只定义了"
+"一个任务,当这个任务完成时,将转向结束状态(end state)。这个任务将从名为 "
+"<literal>todoList</literal>(其中一个 JavaBean)的 Seam 组件获取描述。"
+
+#. Tag: para
+#: Tutorial.xml:584
+#, no-c-format
+msgid ""
+"Tasks need to be assigned to a user or group of users when they are created. "
+"In this case, the task is assigned to the current user, which we get from a "
+"built-in Seam component named <literal>actor</literal>. Any Seam component "
+"may be used to perform task assignment."
+msgstr ""
+"创建任务,它们需要分配给用户或组。在这个例子里,任务被分配给当前的用户,它从"
+"内置的 Seam 组件 <literal>actor</literal> 里获得的。任务 Seam 组件都可被用来"
+"执行任务分配。"
+
+#. Tag: para
+#: Tutorial.xml:589
+#, no-c-format
+msgid ""
+"The <literal>&lt;end-state&gt;</literal> node defines the logical end of the "
+"business process. When execution reaches this node, the process instance is "
+"destroyed."
+msgstr ""
+"<literal>&lt;end-state&gt;</literal> 节点定义了商业过程的逻辑终点(logical "
+"end)。当执行到这个节点时,过程实例将被销毁。"
+
+#. Tag: para
+#: Tutorial.xml:596
+#, no-c-format
+msgid ""
+"If we view this process definition using the process definition editor "
+"provided by JBossIDE, this is what it looks like:"
+msgstr ""
+"如果我们用 JBossIDE 提供的过程定义编辑器查看过程定义,你将看到如下的内容:"
+
+#. Tag: para
+#: Tutorial.xml:607
+#, no-c-format
+msgid ""
+"This document defines our <emphasis>business process</emphasis> as a graph "
+"of nodes. This is the most trivial possible business process: there is one "
+"<emphasis>task</emphasis> to be performed, and when that task is complete, "
+"the business process ends."
+msgstr ""
+"这个文档以图形节点的方式定义了我们的<emphasis>商业过程(business process)</"
+"emphasis>。这是一个最普通的商业过程:只要执行一个<emphasis>任务(task)</"
+"emphasis>,当这个任务完成时,整个商业过程就结束了。"
+
+#. Tag: para
+#: Tutorial.xml:610
+#, no-c-format
+msgid ""
+"The first JavaBean handles the login screen <literal>login.jsp</literal>. "
+"Its job is just to initialize the jBPM actor id using the <literal>actor</"
+"literal> component. (In a real application, it would also need to "
+"authenticate the user.)"
+msgstr ""
+"第一个 JavaBean 处理登录屏幕 <literal>login.jsp</literal>。它的工作是用 "
+"<literal>actor</literal> 组件初始化 jBPM actor id。(在实际的应用程序里,它也"
+"需要验证这个用户。)"
+
+#. Tag: programlisting
+#: Tutorial.xml:613
+#, no-c-format
+msgid ""
+"@Name(\"login\")\n"
+"public class Login {\n"
+"   \n"
+"   @In\n"
+"   private Actor actor;\n"
+"   \n"
+"   private String user;\n"
+"\n"
+"   public String getUser() {\n"
+"      return user;\n"
+"   }\n"
+"\n"
+"   public void setUser(String user) {\n"
+"      this.user = user;\n"
+"   }\n"
+"   \n"
+"   public String login()\n"
+"   {\n"
+"      actor.setId(user);\n"
+"      return \"/todo.jsp\";\n"
+"   }\n"
+"}"
+msgstr ""
+"@Name(\"login\")\n"
+"public class Login {\n"
+"   \n"
+"   @In\n"
+"   private Actor actor;\n"
+"   \n"
+"   private String user;\n"
+"\n"
+"   public String getUser() {\n"
+"      return user;\n"
+"   }\n"
+"\n"
+"   public void setUser(String user) {\n"
+"      this.user = user;\n"
+"   }\n"
+"   \n"
+"   public String login()\n"
+"   {\n"
+"      actor.setId(user);\n"
+"      return \"/todo.jsp\";\n"
+"   }\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:614
+#, no-c-format
+msgid ""
+"Here we see the use of <literal>@In</literal> to inject the built-in "
+"<literal>Actor</literal> component."
+msgstr ""
+"在这里我们使用<literal>@In</literal> 来注入内置的 <literal>Actor</literal> 组"
+"件。"
+
+#. Tag: para
+#: Tutorial.xml:617
+#, no-c-format
+msgid "The JSP itself is trivial:"
+msgstr "JSP 页面本身很普通:"
+
+#. Tag: programlisting
+#: Tutorial.xml:620
+#, no-c-format
+msgid ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"%&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"%&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Login&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Login&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    &lt;h:form&gt;\n"
+"      &lt;div&gt;\n"
+"        &lt;h:inputText value=\"#{login.user}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Login\" action=\"#{login.login}\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"    &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"%&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"%&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Login&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Login&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    &lt;h:form&gt;\n"
+"      &lt;div&gt;\n"
+"        &lt;h:inputText value=\"#{login.user}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Login\" action=\"#{login.login}\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"    &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+
+#. Tag: para
+#: Tutorial.xml:621
+#, no-c-format
+msgid ""
+"The second JavaBean is responsible for starting business process instances, "
+"and ending tasks."
+msgstr "第二个 JavaBean 负责启动商业过程实例并结束任务。"
+
+#. Tag: programlisting
+#: Tutorial.xml:630
+#, no-c-format
+msgid ""
+"@Name(\"todoList\")\n"
+"public class TodoList {\n"
+"   \n"
+"   private String description;\n"
+"   \n"
+"   public String getDescription()\n"
+"   {\n"
+"      return description;\n"
+"   }\n"
+"\n"
+"   public void setDescription(String description) {\n"
+"      this.description = description;\n"
+"   }\n"
+"   \n"
+"   @CreateProcess(definition=\"todo\")\n"
+"   public void createTodo() {}\n"
+"   \n"
+"   @StartTask @EndTask\n"
+"   public void done() {}\n"
+"\n"
+"}"
+msgstr ""
+"@Name(\"todoList\")\n"
+"public class TodoList {\n"
+"   \n"
+"   private String description;\n"
+"   \n"
+"   public String getDescription()\n"
+"   {\n"
+"      return description;\n"
+"   }\n"
+"\n"
+"   public void setDescription(String description) {\n"
+"      this.description = description;\n"
+"   }\n"
+"   \n"
+"   @CreateProcess(definition=\"todo\")\n"
+"   public void createTodo() {}\n"
+"   \n"
+"   @StartTask @EndTask\n"
+"   public void done() {}\n"
+"\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:633
+#, no-c-format
+msgid ""
+"The description property accepts user input form the JSP page, and exposes "
+"it to the process definition, allowing the task description to be set."
+msgstr ""
+"“description”属性从 JSP 页面接受用户输入,并将它向过程定义开放,允许对任务描"
+"述的设置。"
+
+#. Tag: para
+#: Tutorial.xml:638
+#, no-c-format
+msgid ""
+"The Seam <literal>@CreateProcess</literal> annotation creates a new jBPM "
+"process instance for the named process definition."
+msgstr ""
+"Seam 的 <literal>@CreateProcess</literal> 注解为命名的过程定义创建了一个新的 "
+"jBPM 过程实例。"
+
+#. Tag: para
+#: Tutorial.xml:643
+#, no-c-format
+msgid ""
+"The Seam <literal>@StartTask</literal> annotation starts work on a task. The "
+"<literal>@EndTask</literal> ends the task, and allows the business process "
+"execution to resume."
+msgstr ""
+"Seam 的 <literal>@StartTask</literal> 注解开始一个任务。<literal>@EndTask</"
+"literal> 结束这个任务,并允许恢复执行商业过程。"
+
+#. Tag: para
+#: Tutorial.xml:650
+#, no-c-format
+msgid ""
+"In a more realistic example, <literal>@StartTask</literal> and "
+"<literal>@EndTask</literal> would not appear on the same method, because "
+"there is usually work to be done using the application in order to complete "
+"the task."
+msgstr ""
+"在更现实的例子里,<literal>@StartTask</literal> 和 <literal>@EndTask</"
+"literal> 将不会在同一个方法里出现,因为要完成这个任务,通常还要用该程序做一些"
+"事情。"
+
+#. Tag: para
+#: Tutorial.xml:653
+#, no-c-format
+msgid "Finally, the meat of the application is in <literal>todo.jsp</literal>:"
+msgstr "最后,此应用程序的功能实现放在 <literal>todo.jsp</literal> 里:"
+
+#. Tag: programlisting
+#: Tutorial.xml:656
+#, no-c-format
+msgid ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://jboss.com/products/seam/taglib\" prefix=\"s\" %"
+"&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Todo List&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Todo List&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"   &lt;h:form id=\"list\"&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:outputText value=\"There are no todo items.\" rendered=\"#"
+"{empty \n"
+"                                       taskInstanceList}\"/&gt;\n"
+"         &lt;h:dataTable value=\"#{taskInstanceList}\" var=\"task\" rendered="
+"\"#{not empty \n"
+"                                       taskInstanceList}\"&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Description\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.description}\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Created\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:outputText value=\"#{task.taskMgmtInstance."
+"processInstance.start}\"&gt;\n"
+"                    &lt;f:convertDateTime type=\"date\"/&gt;\n"
+"                &lt;/h:outputText&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Priority\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.priority}\" style=\"width: 30"
+"\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Due Date\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.dueDate}\" style=\"width: 100"
+"\"&gt;\n"
+"                    &lt;f:convertDateTime type=\"date\" dateStyle=\"short\"/"
+"&gt;\n"
+"                &lt;/h:inputText&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;s:button value=\"Done\" action=\"#{todoList.done}\" "
+"taskInstance=\"#{task}\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"         &lt;/h:dataTable&gt;\n"
+"      &lt;/div&gt;\n"
+"      &lt;div&gt;\n"
+"      &lt;h:messages/&gt;\n"
+"      &lt;/div&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:commandButton value=\"Update Items\" action=\"update\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"   &lt;h:form id=\"new\"&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:inputText value=\"#{todoList.description}\"/&gt;\n"
+"         &lt;h:commandButton value=\"Create New Item\" action=\"#{todoList."
+"createTodo}\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" %&gt;\n"
+"&lt;%@ taglib uri=\"http://jboss.com/products/seam/taglib\" prefix=\"s\" %"
+"&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Todo List&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Todo List&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"   &lt;h:form id=\"list\"&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:outputText value=\"There are no todo items.\" rendered=\"#"
+"{empty \n"
+"                                       taskInstanceList}\"/&gt;\n"
+"         &lt;h:dataTable value=\"#{taskInstanceList}\" var=\"task\" rendered="
+"\"#{not empty \n"
+"                                       taskInstanceList}\"&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Description\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.description}\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Created\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:outputText value=\"#{task.taskMgmtInstance."
+"processInstance.start}\"&gt;\n"
+"                    &lt;f:convertDateTime type=\"date\"/&gt;\n"
+"                &lt;/h:outputText&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Priority\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.priority}\" style=\"width: 30"
+"\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Due Date\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.dueDate}\" style=\"width: 100"
+"\"&gt;\n"
+"                    &lt;f:convertDateTime type=\"date\" dateStyle=\"short\"/"
+"&gt;\n"
+"                &lt;/h:inputText&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;s:button value=\"Done\" action=\"#{todoList.done}\" "
+"taskInstance=\"#{task}\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"         &lt;/h:dataTable&gt;\n"
+"      &lt;/div&gt;\n"
+"      &lt;div&gt;\n"
+"      &lt;h:messages/&gt;\n"
+"      &lt;/div&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:commandButton value=\"Update Items\" action=\"update\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"   &lt;h:form id=\"new\"&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:inputText value=\"#{todoList.description}\"/&gt;\n"
+"         &lt;h:commandButton value=\"Create New Item\" action=\"#{todoList."
+"createTodo}\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+
+#. Tag: para
+#: Tutorial.xml:657
+#, no-c-format
+msgid "Let&#39;s take this one piece at a time."
+msgstr "让我们逐个进行解释。 "
+
+#. Tag: para
+#: Tutorial.xml:660
+#, no-c-format
+msgid ""
+"The page renders a list of tasks, which it gets from a built-in Seam "
+"component named <literal>taskInstanceList</literal>. The list is defined "
+"inside a JSF form."
+msgstr ""
+"这个页面显示从内置的名为 <literal>taskInstanceList</literal> 的 Seam 组件里获"
+"得的任务列表。这个列表在一个 JSF 表单里进行定义。"
+
+#. Tag: programlisting
+#: Tutorial.xml:663
+#, no-c-format
+msgid ""
+"&lt;h:form id=\"list\"&gt;\n"
+"   &lt;div&gt;\n"
+"      &lt;h:outputText value=\"There are no todo items.\" rendered=\"#{empty "
+"taskInstanceList}\"/&gt;\n"
+"      &lt;h:dataTable value=\"#{taskInstanceList}\" var=\"task\" rendered=\"#"
+"{not empty taskInstanceList}\"&gt;\n"
+"         ...\n"
+"      &lt;/h:dataTable&gt;\n"
+"   &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h:form id=\"list\"&gt;\n"
+"   &lt;div&gt;\n"
+"      &lt;h:outputText value=\"There are no todo items.\" rendered=\"#{empty "
+"taskInstanceList}\"/&gt;\n"
+"      &lt;h:dataTable value=\"#{taskInstanceList}\" var=\"task\" rendered=\"#"
+"{not empty taskInstanceList}\"&gt;\n"
+"         ...\n"
+"      &lt;/h:dataTable&gt;\n"
+"   &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+
+#. Tag: para
+#: Tutorial.xml:664
+#, no-c-format
+msgid ""
+"Each element of the list is an instance of the jBPM class "
+"<literal>TaskInstance</literal>. The following code simply displays the "
+"interesting properties of each task in the list. For the description, "
+"priority and due date, we use input controls, to allow the user to update "
+"these values."
+msgstr ""
+"这个列表的每个元素都是 jBPM 类 <literal>TaskInstance</literal> 的一个实例。下"
+"面的代码简单地显示了列表里每个任务的令人感兴趣的属性。对于 description、"
+"priority 和 due date,我们使用输入控件,允许用户更新这些值。"
+
+#. Tag: programlisting
+#: Tutorial.xml:667
+#, no-c-format
+msgid ""
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"       &lt;h:outputText value=\"Description\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.description}\"/&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Created\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:outputText value=\"#{task.taskMgmtInstance.processInstance.start}"
+"\"&gt;\n"
+"        &lt;f:convertDateTime type=\"date\"/&gt;\n"
+"    &lt;/h:outputText&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Priority\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.priority}\" style=\"width: 30\"/&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Due Date\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.dueDate}\" style=\"width: 100\"&gt;\n"
+"        &lt;f:convertDateTime type=\"date\" dateStyle=\"short\"/&gt;\n"
+"    &lt;/h:inputText&gt;\n"
+"&lt;/h:column&gt;"
+msgstr ""
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"       &lt;h:outputText value=\"Description\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.description}\"/&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Created\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:outputText value=\"#{task.taskMgmtInstance.processInstance.start}"
+"\"&gt;\n"
+"        &lt;f:convertDateTime type=\"date\"/&gt;\n"
+"    &lt;/h:outputText&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Priority\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.priority}\" style=\"width: 30\"/&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Due Date\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.dueDate}\" style=\"width: 100\"&gt;\n"
+"        &lt;f:convertDateTime type=\"date\" dateStyle=\"short\"/&gt;\n"
+"    &lt;/h:inputText&gt;\n"
+"&lt;/h:column&gt;"
+
+#. Tag: para
+#: Tutorial.xml:668
+#, no-c-format
+msgid ""
+"This button ends the task by calling the action method annotated "
+"<literal>@StartTask @EndTask</literal>. It passes the task id to Seam as a "
+"request parameter:"
+msgstr ""
+"这个按钮通过调用用 <literal>@StartTask @EndTask</literal> 注解的动作方法结束"
+"任务。它把任务的 ID 作为请求参数传递给 Seam。"
+
+#. Tag: programlisting
+#: Tutorial.xml:671
+#, no-c-format
+msgid ""
+"&lt;h:column&gt;\n"
+"    &lt;s:button value=\"Done\" action=\"#{todoList.done}\" taskInstance=\"#"
+"{task}\"/&gt;\n"
+"&lt;/h:column&gt;"
+msgstr ""
+"&lt;h:column&gt;\n"
+"    &lt;s:button value=\"Done\" action=\"#{todoList.done}\" taskInstance=\"#"
+"{task}\"/&gt;\n"
+"&lt;/h:column&gt;"
+
+#. Tag: para
+#: Tutorial.xml:672
+#, no-c-format
+msgid ""
+"(Note that this is using a Seam <literal>&lt;s:button&gt;</literal> JSF "
+"control from the <literal>seam-ui.jar</literal> package.)"
+msgstr ""
+"(注意,它使用了 <literal>seam-ui.jar</literal> 软件包里的 Seam <literal>&lt;"
+"s:button&gt;</literal> JSF 控件。)"
+
+#. Tag: para
+#: Tutorial.xml:675
+#, no-c-format
+msgid ""
+"This button is used to update the properties of the tasks. When the form is "
+"submitted, Seam and jBPM will make any changes to the tasks persistent. "
+"There is no need for any action listener method:"
+msgstr ""
+"这个按钮被用来更新任务的属性。当这个表单被提交时,Seam 和 jBPM 将修改任务的属"
+"性。这里不需要使用任何 action listener 方法:"
+
+#. Tag: programlisting
+#: Tutorial.xml:678
+#, no-c-format
+msgid "&lt;h:commandButton value=\"Update Items\" action=\"update\"/&gt;"
+msgstr "&lt;h:commandButton value=\"Update Items\" action=\"update\"/&gt;"
+
+#. Tag: para
+#: Tutorial.xml:679
+#, no-c-format
+msgid ""
+"A second form on the page is used to create new items, by calling the action "
+"method annotated <literal>@CreateProcess</literal>."
+msgstr ""
+"这个页面里的第二个表单调用用 <literal>@CreateProcess</literal> 注解的动作方"
+"法,创建新的项目。"
+
+#. Tag: programlisting
+#: Tutorial.xml:682
+#, no-c-format
+msgid ""
+"&lt;h:form id=\"new\"&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:inputText value=\"#{todoList.description}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Create New Item\" action=\"#{todoList."
+"createTodo}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h:form id=\"new\"&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:inputText value=\"#{todoList.description}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Create New Item\" action=\"#{todoList."
+"createTodo}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+
+#. Tag: para
+#: Tutorial.xml:683
+#, no-c-format
+msgid ""
+"There are several other files needed for the example, but they are just "
+"standard jBPM and Seam configuration and not very interesting."
+msgstr ""
+"这个例子还需要其他几个文件,不过它们都是不令人感兴趣的标准的 jBPM 和 Seam 配"
+"置文件。"
+
+#. Tag: para
+#: Tutorial.xml:690 Tutorial.xml:805 Tutorial.xml:1145 Tutorial.xml:1171
+#: Tutorial.xml:1184
+#, no-c-format
+msgid "TODO"
+msgstr "TODO"
+
+#. Tag: title
+#: Tutorial.xml:698
+#, no-c-format
+msgid "Seam pageflow: the numberguess example"
+msgstr "Seam pageflow:“numberguess”示例程序"
+
+#. Tag: para
+#: Tutorial.xml:699
+#, no-c-format
+msgid ""
+"For Seam applications with relatively freeform (ad hoc) navigation, JSF/Seam "
+"navigation rules are a perfectly good way to define the page flow. For "
+"applications with a more constrained style of navigation, especially for "
+"user interfaces which are more stateful, navigation rules make it difficult "
+"to really understand the flow of the system. To understand the flow, you "
+"need to piece it together from the view pages, the actions and the "
+"navigation rules."
+msgstr ""
+"对于带有相对 freeform 导航的 Seam 应用程序,JSF/Seam 的 navigation rule 是定"
+"义 page flow 的绝好方法。而对于带有更多限制的导航的 Seam 应用程序,特别是更加"
+"状态化的用户界面,navigation rule 就会使得真正理解系统的流程很困难。要理解流"
+"程,你需要在视图页面、action 以及 navigation rule 里把它们串起来。"
+
+#. Tag: para
+#: Tutorial.xml:702
+#, no-c-format
+msgid ""
+"Seam allows you to use a jPDL process definition to define pageflow. The "
+"simple number guessing example shows how this is done."
+msgstr ""
+"Seam 允许你使用 jPDL 过程定义来定义 pageflow。这个简单的猜数字例子演示了这个"
+"方法。"
+
+#. Tag: para
+#: Tutorial.xml:715
+#, no-c-format
+msgid ""
+"The example is implemented using one JavaBean, three JSP pages and a jPDL "
+"pageflow definition. Let&#39;s begin with the pageflow:"
+msgstr ""
+"这个例子是由一个 JavaBean、3 个 JSP 页面以及一个 jPDL pageflow 定义来实现的。"
+"让我们从 pageflow 开始: "
+
+#. Tag: programlisting
+#: Tutorial.xml:725
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"numberGuess\"&gt;\n"
+"   \n"
+"   &lt;start-page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"          &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"      &lt;/transition&gt;\n"
+"   &lt;/start-page&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess."
+"correctGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateRemainingGuesses\" expression=\"#{numberGuess."
+"lastGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"lose\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"displayGuess\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"lose\" view-id=\"/lose.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+"&lt;pageflow-definition name=\"numberGuess\"&gt;\n"
+"   \n"
+"   &lt;start-page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"          &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"      &lt;/transition&gt;\n"
+"   &lt;/start-page&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess."
+"correctGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateRemainingGuesses\" expression=\"#{numberGuess."
+"lastGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"lose\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"displayGuess\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"lose\" view-id=\"/lose.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+
+#. Tag: para
+#: Tutorial.xml:728
+#, no-c-format
+msgid ""
+"The <literal>&lt;page&gt;</literal> element defines a wait state where the "
+"system displays a particular JSF view and waits for user input. The "
+"<literal>view-id</literal> is the same JSF view id used in plain JSF "
+"navigation rules. The <literal>redirect</literal> attribute tells Seam to "
+"use post-then-redirect when navigating to the page. (This results in "
+"friendly browser URLs.)"
+msgstr ""
+"<literal>&lt;page&gt;</literal> 元素定义了一个等待状态,此时系统将显示特定的 "
+"JSF 视图并等待用户输入。<literal>view-id</literal> 和在普通 JSF navigation "
+"rule 里使用的 JSF view id 相同。<literal>redirect</literal> 属性告诉 Seam 在"
+"导航至此页面时使用 post-then-redirect。(这会产生友好的浏览器 URL。)"
+
+#. Tag: para
+#: Tutorial.xml:733
+#, no-c-format
+msgid ""
+"The <literal>&lt;transition&gt;</literal> element names a JSF outcome. The "
+"transition is triggered when a JSF action results in that outcome. Execution "
+"will then proceed to the next node of the pageflow graph, after invocation "
+"of any jBPM transition actions."
+msgstr ""
+"<literal>&lt;transition&gt;</literal> 元素命名 JSF 结果。当 JSF 动作导致这个"
+"结果时,这个 transition 被触发。在调用任何 jBPM 转换动作后,将执行 pageflow "
+"框图的下一个节点。"
+
+#. Tag: para
+#: Tutorial.xml:738
+#, no-c-format
+msgid ""
+"A transition <literal>&lt;action&gt;</literal> is just like a JSF action, "
+"except that it occurs when a jBPM transition occurs. The transition action "
+"can invoke any Seam component."
+msgstr ""
+"transition <literal>&lt;action&gt;</literal> 就象一个 JSF action,除了它在 "
+"jBPM transition 发生时才发生。transition action 可以调用任何 Seam 组件。"
+
+#. Tag: para
+#: Tutorial.xml:743
+#, no-c-format
+msgid ""
+"A <literal>&lt;decision&gt;</literal> node branches the pageflow, and "
+"determines the next node to execute by evaluating a JSF EL expression."
+msgstr ""
+"<literal>&lt;decision&gt;</literal> 节点产生 pageflow 的分支,并通过评估 JSF "
+"EL 表达式的值来决定下一个执行的节点。"
+
+#. Tag: para
+#: Tutorial.xml:750
+#, no-c-format
+msgid "Here is what the pageflow looks like in the JBossIDE pageflow editor:"
+msgstr "JBossIDE pageflow 编辑器里的 pageflow 看起来象这样:"
+
+#. Tag: para
+#: Tutorial.xml:761
+#, no-c-format
+msgid ""
+"Now that we have seen the pageflow, it is very, very easy to understand the "
+"rest of the application!"
+msgstr ""
+"现在我们已经看到了这个 pageflow,理解应用程序的剩余部分真是非常非常的容易!"
+
+#. Tag: para
+#: Tutorial.xml:764
+#, no-c-format
+msgid ""
+"Here is the main page of the application, <literal>numberGuess.jsp</literal>:"
+msgstr "这里是应用程序的主页,<literal>numberGuess.jsp</literal>:"
+
+#. Tag: programlisting
+#: Tutorial.xml:767
+#, no-c-format
+msgid ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"%&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"%&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Guess a number...&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Guess a number...&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    &lt;h:form&gt;\n"
+"        &lt;h:outputText value=\"Higher!\" rendered=\"#{numberGuess."
+"randomNumber&gt;numberGuess.currentGuess}\" /&gt;\n"
+"        &lt;h:outputText value=\"Lower!\" rendered=\"#{numberGuess."
+"randomNumber&lt;numberGuess.currentGuess}\" /&gt;\n"
+"        &lt;br /&gt;\n"
+"        I&#39;m thinking of a number between &lt;h:outputText value=\"#"
+"{numberGuess.smallest}\" /&gt; and \n"
+"        &lt;h:outputText value=\"#{numberGuess.biggest}\" /&gt;. You have \n"
+"        &lt;h:outputText value=\"#{numberGuess.remainingGuesses}\" /&gt; "
+"guesses.\n"
+"        &lt;br /&gt;\n"
+"        Your guess: \n"
+"        &lt;h:inputText value=\"#{numberGuess.currentGuess}\" id=\"guess\" "
+"required=\"true\"&gt;\n"
+"            &lt;f:validateLongRange\n"
+"                maximum=\"#{numberGuess.biggest}\" \n"
+"                minimum=\"#{numberGuess.smallest}\"/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"        &lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"guess"
+"\" /&gt;\n"
+"        &lt;br/&gt;\n"
+"        &lt;h:message for=\"guess\" style=\"color: red\"/&gt;\n"
+"    &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"%&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"%&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Guess a number...&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Guess a number...&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    &lt;h:form&gt;\n"
+"        &lt;h:outputText value=\"Higher!\" rendered=\"#{numberGuess."
+"randomNumber&gt;numberGuess.currentGuess}\" /&gt;\n"
+"        &lt;h:outputText value=\"Lower!\" rendered=\"#{numberGuess."
+"randomNumber&lt;numberGuess.currentGuess}\" /&gt;\n"
+"        &lt;br /&gt;\n"
+"        I&#39;m thinking of a number between &lt;h:outputText value=\"#"
+"{numberGuess.smallest}\" /&gt; and \n"
+"        &lt;h:outputText value=\"#{numberGuess.biggest}\" /&gt;. You have \n"
+"        &lt;h:outputText value=\"#{numberGuess.remainingGuesses}\" /&gt; "
+"guesses.\n"
+"        &lt;br /&gt;\n"
+"        Your guess: \n"
+"        &lt;h:inputText value=\"#{numberGuess.currentGuess}\" id=\"guess\" "
+"required=\"true\"&gt;\n"
+"            &lt;f:validateLongRange\n"
+"                maximum=\"#{numberGuess.biggest}\" \n"
+"                minimum=\"#{numberGuess.smallest}\"/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"        &lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"guess"
+"\" /&gt;\n"
+"        &lt;br/&gt;\n"
+"        &lt;h:message for=\"guess\" style=\"color: red\"/&gt;\n"
+"    &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+
+#. Tag: para
+#: Tutorial.xml:768
+#, no-c-format
+msgid ""
+"Notice how the command button names the <literal>guess</literal> transition "
+"instead of calling an action directly."
+msgstr ""
+"注意命令按钮是怎样命名 <literal>guess</literal> transition 而不是直接调用这个"
+"动作的。"
+
+#. Tag: para
+#: Tutorial.xml:771
+#, no-c-format
+msgid "The <literal>win.jsp</literal> page is predictable:"
+msgstr "<literal>win.jsp</literal> 页面是可预知的:"
+
+#. Tag: programlisting
+#: Tutorial.xml:774
+#, no-c-format
+msgid ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"%&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"%&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;You won!&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;You won!&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    Yes, the answer was &lt;h:outputText value=\"#{numberGuess.currentGuess}"
+"\" /&gt;.\n"
+"    It took you &lt;h:outputText value=\"#{numberGuess.guessCount}\" /&gt; "
+"guesses.\n"
+"    Would you like to &lt;a href=\"numberGuess.seam\"&gt;play again&lt;/"
+"a&gt;?\n"
+"  &lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"%&gt;\n"
+"&lt;%@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"%&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;You won!&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;You won!&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    Yes, the answer was &lt;h:outputText value=\"#{numberGuess.currentGuess}"
+"\" /&gt;.\n"
+"    It took you &lt;h:outputText value=\"#{numberGuess.guessCount}\" /&gt; "
+"guesses.\n"
+"    Would you like to &lt;a href=\"numberGuess.seam\"&gt;play again&lt;/"
+"a&gt;?\n"
+"  &lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+
+#. Tag: para
+#: Tutorial.xml:775
+#, no-c-format
+msgid ""
+"As is <literal>lose.jsp</literal> (which I can&#39;t be bothered copy/"
+"pasting). Finally, the JavaBean Seam component:"
+msgstr "下面是 <literal>lose.jsp</literal>。最后是 JavaBean Seam 组件: "
+
+#. Tag: programlisting
+#: Tutorial.xml:783
+#, no-c-format
+msgid ""
+"@Name(\"numberGuess\")\n"
+"@Scope(ScopeType.CONVERSATION)\n"
+"public class NumberGuess {\n"
+"   \n"
+"   private int randomNumber;\n"
+"   private Integer currentGuess;\n"
+"   private int biggest;\n"
+"   private int smallest;\n"
+"   private int guessCount;\n"
+"   private int maxGuesses;\n"
+"   \n"
+"   @Create \n"
+"   @Begin(pageflow=\"numberGuess\")\n"
+"   public void begin()\n"
+"   {\n"
+"      randomNumber = new Random().nextInt(100);\n"
+"      guessCount = 0;\n"
+"      biggest = 100;\n"
+"      smallest = 1;\n"
+"   }\n"
+"   \n"
+"   public void setCurrentGuess(Integer guess)\n"
+"   {\n"
+"      this.currentGuess = guess;\n"
+"   }\n"
+"   \n"
+"   public Integer getCurrentGuess()\n"
+"   {\n"
+"      return currentGuess;\n"
+"   }\n"
+"   \n"
+"   public void guess()\n"
+"   {\n"
+"      if (currentGuess&gt;randomNumber)\n"
+"      {\n"
+"         biggest = currentGuess - 1;\n"
+"      }\n"
+"      if (currentGuess&lt;randomNumber)\n"
+"      {\n"
+"         smallest = currentGuess + 1;\n"
+"      }\n"
+"      guessCount ++;\n"
+"   }\n"
+"   \n"
+"   public boolean isCorrectGuess()\n"
+"   {\n"
+"      return currentGuess==randomNumber;\n"
+"   }\n"
+"   \n"
+"   public int getBiggest()\n"
+"   {\n"
+"      return biggest;\n"
+"   }\n"
+"   \n"
+"   public int getSmallest()\n"
+"   {\n"
+"      return smallest;\n"
+"   }\n"
+"   \n"
+"   public int getGuessCount()\n"
+"   {\n"
+"      return guessCount;\n"
+"   }\n"
+"   \n"
+"   public boolean isLastGuess()\n"
+"   {\n"
+"      return guessCount==maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getRemainingGuesses() {\n"
+"      return maxGuesses-guessCount;\n"
+"   }\n"
+"\n"
+"   public void setMaxGuesses(int maxGuesses) {\n"
+"      this.maxGuesses = maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getMaxGuesses() {\n"
+"      return maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getRandomNumber() {\n"
+"      return randomNumber;\n"
+"   }\n"
+"}"
+msgstr ""
+"@Name(\"numberGuess\")\n"
+"@Scope(ScopeType.CONVERSATION)\n"
+"public class NumberGuess {\n"
+"   \n"
+"   private int randomNumber;\n"
+"   private Integer currentGuess;\n"
+"   private int biggest;\n"
+"   private int smallest;\n"
+"   private int guessCount;\n"
+"   private int maxGuesses;\n"
+"   \n"
+"   @Create \n"
+"   @Begin(pageflow=\"numberGuess\")\n"
+"   public void begin()\n"
+"   {\n"
+"      randomNumber = new Random().nextInt(100);\n"
+"      guessCount = 0;\n"
+"      biggest = 100;\n"
+"      smallest = 1;\n"
+"   }\n"
+"   \n"
+"   public void setCurrentGuess(Integer guess)\n"
+"   {\n"
+"      this.currentGuess = guess;\n"
+"   }\n"
+"   \n"
+"   public Integer getCurrentGuess()\n"
+"   {\n"
+"      return currentGuess;\n"
+"   }\n"
+"   \n"
+"   public void guess()\n"
+"   {\n"
+"      if (currentGuess&gt;randomNumber)\n"
+"      {\n"
+"         biggest = currentGuess - 1;\n"
+"      }\n"
+"      if (currentGuess&lt;randomNumber)\n"
+"      {\n"
+"         smallest = currentGuess + 1;\n"
+"      }\n"
+"      guessCount ++;\n"
+"   }\n"
+"   \n"
+"   public boolean isCorrectGuess()\n"
+"   {\n"
+"      return currentGuess==randomNumber;\n"
+"   }\n"
+"   \n"
+"   public int getBiggest()\n"
+"   {\n"
+"      return biggest;\n"
+"   }\n"
+"   \n"
+"   public int getSmallest()\n"
+"   {\n"
+"      return smallest;\n"
+"   }\n"
+"   \n"
+"   public int getGuessCount()\n"
+"   {\n"
+"      return guessCount;\n"
+"   }\n"
+"   \n"
+"   public boolean isLastGuess()\n"
+"   {\n"
+"      return guessCount==maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getRemainingGuesses() {\n"
+"      return maxGuesses-guessCount;\n"
+"   }\n"
+"\n"
+"   public void setMaxGuesses(int maxGuesses) {\n"
+"      this.maxGuesses = maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getMaxGuesses() {\n"
+"      return maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getRandomNumber() {\n"
+"      return randomNumber;\n"
+"   }\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:786
+#, no-c-format
+msgid ""
+"The first time a JSP page asks for a <literal>numberGuess</literal> "
+"component, Seam will create a new one for it, and the <literal>@Create</"
+"literal> method will be invoked, allowing the component to initialize itself."
+msgstr ""
+"当 JSP 页面第一次请求 <literal>numberGuess</literal> 组件时,Seam 将创建一个"
+"新的组件并调用 <literal>@Create</literal> 方法,允许组件初始化自己。"
+
+#. Tag: para
+#: Tutorial.xml:791
+#, no-c-format
+msgid ""
+"The <literal>@Begin</literal> annotation starts a Seam "
+"<emphasis>conversation</emphasis> (much more about that later), and "
+"specifies the pageflow definition to use for the conversation&#39;s page "
+"flow."
+msgstr ""
+"<literal>@Begin</literal> 注解启动一个 Seam <emphasis>conversation</emphasis>"
+"(之后将详细讨论),并指定用于 conversation 的 page flow 的 pageflow 定义。 "
+
+#. Tag: para
+#: Tutorial.xml:798
+#, no-c-format
+msgid ""
+"As you can see, this Seam component is pure business logic! It doesn&#39;t "
+"need to know anything at all about the user interaction flow. This makes the "
+"component potentially more reuseable."
+msgstr ""
+"如你所看到的,Seam 组件是纯粹的商业逻辑!它不需要了解任何用户交互流程的事情。"
+"这使得组件更具有可重用性。 "
+
+#. Tag: title
+#: Tutorial.xml:813
+#, no-c-format
+msgid "A complete Seam application: the Hotel Booking example"
+msgstr "完整的 Seam 应用程序:“Hotel Booking”示例程序"
+
+#. Tag: title
+#: Tutorial.xml:815
+#, no-c-format
+msgid "Introduction"
+msgstr "简介"
+
+#. Tag: para
+#: Tutorial.xml:816
+#, no-c-format
+msgid ""
+"The booking application is a complete hotel room reservation system "
+"incorporating the following features:"
+msgstr "这个 booking 应用程序是一个完整的酒店房间预订系统,它具有下面的特征:"
+
+#. Tag: para
+#: Tutorial.xml:821
+#, no-c-format
+msgid "User registration"
+msgstr "用户注册"
+
+#. Tag: para
+#: Tutorial.xml:826
+#, no-c-format
+msgid "Login"
+msgstr "登录"
+
+#. Tag: para
+#: Tutorial.xml:831
+#, no-c-format
+msgid "Logout"
+msgstr "登出"
+
+#. Tag: para
+#: Tutorial.xml:836
+#, no-c-format
+msgid "Set password"
+msgstr "设置密码"
+
+#. Tag: para
+#: Tutorial.xml:841
+#, no-c-format
+msgid "Hotel search"
+msgstr "酒店搜索"
+
+#. Tag: para
+#: Tutorial.xml:846
+#, no-c-format
+msgid "Hotel selection"
+msgstr "酒店选择"
+
+#. Tag: para
+#: Tutorial.xml:851
+#, no-c-format
+msgid "Room reservation"
+msgstr "房间预订"
+
+#. Tag: para
+#: Tutorial.xml:856
+#, no-c-format
+msgid "Reservation confirmation"
+msgstr "预订确认"
+
+#. Tag: para
+#: Tutorial.xml:861
+#, no-c-format
+msgid "Existing reservation list"
+msgstr "现有的预订列表"
+
+#. Tag: screeninfo
+#: Tutorial.xml:866
+#, no-c-format
+msgid "Booking example"
+msgstr "Booking 示例"
+
+#. Tag: para
+#: Tutorial.xml:874
+#, no-c-format
+msgid ""
+"The booking application uses JSF, EJB 3.0 and Seam, together with Facelets "
+"for the view. There is also a port of this application to JSF, Facelets, "
+"Seam, JavaBeans and Hibernate3."
+msgstr ""
+"这个 booking 程序使用了 JSF、EJB 3.0 和 Seam,以及用于视图的 Facelets。这里也"
+"可移植到 JSF、Facelets、Seam、JavaBeans 和 Hibernate3 的版本。"
+
+#. Tag: para
+#: Tutorial.xml:877
+#, no-c-format
+msgid ""
+"One of the things you&#39;ll notice if you play with this application for "
+"long enough is that it is extremely <emphasis>robust</emphasis>. You can "
+"play with back buttons and browser refresh and opening multiple windows and "
+"entering nonsensical data as much as you like and you will find it very "
+"difficult to make the application crash. You might think that we spent weeks "
+"testing and fixing bugs to achive this. Actually, this is not the case. Seam "
+"was designed to make it very straightforward to build robust web "
+"applications and a lot of robustness that you are probably used to having to "
+"code yourself comes naturally and automatically with Seam."
+msgstr ""
+"如果你长时间地使用这个程序,你将发现它是极其的<emphasis>健壮</emphasis>。你可"
+"以点击后退按钮、刷新浏览器、打开多个窗口并输入任意无意义的数据,你将发现很难"
+"使它崩溃。你会猜想我们花了数周时间来进行测试和修复程序错误。但事实并非如此。"
+"Seam 被设计成用于开发健壮的 web 程序,过去你要自己编写代码来处理的健壮性,在 "
+"Seam 里是很自然也是自动的。 "
+
+#. Tag: para
+#: Tutorial.xml:880
+#, no-c-format
+msgid ""
+"As you browse the sourcecode of the example application, and learn how the "
+"application works, observe how the declarative state management and "
+"integrated validation has been used to achieve this robustness."
+msgstr ""
+"在你浏览这个例程的源代码,并了解它是如何工作的时候,你可以看到声明式状态管理"
+"和集成的检验被用来实现这种健壮性。"
+
+#. Tag: title
+#: Tutorial.xml:886
+#, no-c-format
+msgid "Overview of the booking example"
+msgstr "Booking 示例程序概述"
+
+#. Tag: para
+#: Tutorial.xml:887
+#, no-c-format
+msgid ""
+"The project structure is identical to the previous one, to install and "
+"deploy this application, please refer to <xref linkend="
+"\"Seam_Reference_Guide-Seam_Tutorial-Try_the_examples\"/>. Once you&#39;ve "
+"successfully started the application, you can access it by pointing your "
+"browser to <ulink url=\"http://localhost:8080/seam-booking/"
+"\"><literal>http://localhost:8080/seam-booking/</literal></ulink>"
+msgstr ""
+"此项目的结构和前面一样,要安装和部署它,请参考 <xref linkend="
+"\"Seam_Reference_Guide-Seam_Tutorial-Try_the_examples\"/>。一旦你成功地启动了"
+"这个应用程序,你可以通过 <ulink url=\"http://localhost:8080/seam-booking/"
+"\"><literal>http://localhost:8080/seam-booking/</literal></ulink> 里访问它。 "
+
+#. Tag: para
+#: Tutorial.xml:890
+#, no-c-format
+msgid ""
+"Just nine classes (plus six session beans local interfaces) where used to "
+"implement this application. Six session bean action listeners contain all "
+"the business logic for the listed features."
+msgstr ""
+"实现这个程序只用了 10 个类(加上 6 个 session bean 的本地接口以及一个注解接"
+"口)。6 个 session bean 的 action listeners 包含了上述特征的所有商业逻辑。 "
+
+#. Tag: para
+#: Tutorial.xml:895
+#, no-c-format
+msgid ""
+"<literal>BookingListAction</literal> retrieves existing bookings for the "
+"currently logged in user."
+msgstr "<literal>BookingListAction</literal> 获取当前登录用户的现有预订信息。"
+
+#. Tag: para
+#: Tutorial.xml:898
+#, no-c-format
+msgid ""
+"<literal>ChangePasswordAction</literal> updates the password of the "
+"currently logged in user."
+msgstr "<literal>ChangePasswordAction</literal> 更新当前登录用户的密码。"
+
+#. Tag: para
+#: Tutorial.xml:901
+#, no-c-format
+msgid ""
+"<literal>HotelBookingAction</literal> implements the core functionality of "
+"the application: hotel room searching, selection, booking and booking "
+"confirmation. This functionality is implemented as a <emphasis>conversation</"
+"emphasis>, so this is the most interesting class in the application."
+msgstr ""
+"<literal>HotelBookingAction</literal> 实现应用程序的核心功能:酒店房间搜索、"
+"选择、预订和预订确认。这个功能作为 <emphasis>conversation</emphasis> 被实现,"
+"所以是此应用程序里最令人感兴趣的类。"
+
+#. Tag: para
+#: Tutorial.xml:904
+#, no-c-format
+msgid "<literal>RegisterAction</literal> registers a new system user."
+msgstr "<literal>RegisterAction</literal> 注册新的系统用户。"
+
+#. Tag: para
+#: Tutorial.xml:907
+#, no-c-format
+msgid ""
+"Three entity beans implement the application&#39;s persistent domain model."
+msgstr "3 个 entity bean 实现此应用程序的持久化域模型。 "
+
+#. Tag: para
+#: Tutorial.xml:912
+#, no-c-format
+msgid "<literal>Hotel</literal> is an entity bean that represents a hotel"
+msgstr "<literal>Hotel</literal> 是一个代表酒店的 entity bean。 "
+
+#. Tag: para
+#: Tutorial.xml:917
+#, no-c-format
+msgid ""
+"<literal>Booking</literal> is an entity bean that represents an existing "
+"booking"
+msgstr "<literal>Booking</literal> 是一个代表现有预订的 entity bean。"
+
+#. Tag: para
+#: Tutorial.xml:922
+#, no-c-format
+msgid ""
+"<literal>User</literal> is an entity bean to represents a user who can make "
+"hotel bookings"
+msgstr "<literal>User</literal> 是代表可以预订酒店的用户的 entity bean。"
+
+#. Tag: title
+#: Tutorial.xml:930
+#, no-c-format
+msgid "Understanding Seam conversations"
+msgstr "理解 Seam 的 conversation"
+
+#. Tag: para
+#: Tutorial.xml:931
+#, no-c-format
+msgid ""
+"We encourage you browse the sourcecode at your pleasure. In this tutorial "
+"we&#39;ll concentrate upon one particular piece of functionality: hotel "
+"search, selection, booking and confirmation. From the point of view of the "
+"user, everything from selecting a hotel to confirming a booking is one "
+"continuous unit of work, a <emphasis>conversation</emphasis>. Searching, "
+"however, is <emphasis>not</emphasis> part of the conversation. The user can "
+"select multiple hotels from the same search results page, in different "
+"browser tabs."
+msgstr ""
+"我们鼓励你浏览本程序的源代码。在这个教程里,我们将着重于一些特定的功能:酒店"
+"搜索、选择、预订和确认。从用户的角度出发,选择酒店到确认预订信息是一个连续的"
+"过程 - 也就是一个 <emphasis>conversation</emphasis>。然而,搜索却<emphasis>不"
+"是</emphasis>这个 conversation 的一部分。用户可以从不同的浏览器标签页的搜索结"
+"果页面选择多个酒店。 "
+
+#. Tag: para
+#: Tutorial.xml:934
+#, no-c-format
+msgid ""
+"Most web application architectures have no first class construct to "
+"represent a conversation. This causes enormous problems managing state "
+"associated with the conversation. Usually, Java web applications use a "
+"combination of two techniques: first, some state is thrown into the "
+"<literal>HttpSession</literal>; second, persistable state is flushed to the "
+"database after every request, and reconstructed from the database at the "
+"beginning of each new request."
+msgstr ""
+"大多数 web 应用程序都不具备代表 conversation 的一流体系结构。这导致管理和 "
+"conversation 相关的状态时出现许多问题。通常,Java web 应用程序使用两个技术的"
+"组合:首先,状态被抛入 <literal>HttpSession</literal>;其次,可持久的状态在每"
+"个请求后放入数据库,并在新请求开始时从数据库里获取。"
+
+#. Tag: para
+#: Tutorial.xml:937
+#, no-c-format
+msgid ""
+"Since the database is the least scalable tier, this often results in an "
+"utterly unacceptable lack of scalability. Added latency is also a problem, "
+"due to the extra traffic to and from the database on every request. To "
+"reduce this redundant traffic, Java applications often introduce a data "
+"(second-level) cache that keeps commonly accessed data between requests. "
+"This cache is necessarily inefficient, because invalidation is based upon an "
+"LRU policy instead of being based upon when the user has finished working "
+"with the data. Furthermore, because the cache is shared between many "
+"concurrent transactions, we&#39;ve introduced a whole raft of problem&#39;s "
+"associated with keeping the cached state consistent with the database."
+msgstr ""
+"既然数据库层是最不具备扩充性的,这种方式经常导致完全不能接受的扩充性的缺乏。"
+"由于每次请求都存取数据库,增加的传输延迟也是一个问题,Java 应用程序经常引入一"
+"个数据(第二级)缓存来保存请求之间共同的数据。这个缓存必然是低效率的,因为 "
+"invalidation 是基于 LRU 策略而不是用户在什么时候完成数据存取。而且,因为这个"
+"缓存在许多并发事务间共享,我们已经遇到大量的缓存状态和数据库的一致性的问题。 "
+
+#. Tag: para
+#: Tutorial.xml:940
+#, no-c-format
+msgid ""
+"Now consider the state held in the <literal>HttpSession</literal>. By very "
+"careful programming, we might be able to control the size of the session "
+"data. This is a lot more difficult than it sounds, since web browsers permit "
+"ad hoc non-linear navigation. But suppose we suddenly discover a system "
+"requirement that says that a user is allowed to have <emphasis>mutiple "
+"concurrent conversations</emphasis>, halfway through the development of the "
+"system (this has happened to me). Developing mechanisms to isolate session "
+"state associated with different concurrent conversations, and incorporating "
+"failsafes to ensure that conversation state is destroyed when the user "
+"aborts one of the conversations by closing a browser window or tab is not "
+"for the faint hearted (I&#39;ve implemented this stuff twice so far, once "
+"for a client application, once for Seam, but I&#39;m famously psychotic)."
+msgstr ""
+"现在让我们看看 <literal>HttpSession</literal> 里保持的状态。通过小心地编程,"
+"我们可能可以控制会话数据的大小。但做起来其实困难得多,因为浏览器允许特殊的非"
+"线性导航(non-linear navigation)。在系统开发的半途中(我已经遇到这样的事"
+"情),我们可能突然需要允许用户拥有<emphasis>多个并行的 conversation </"
+"emphasis>的系统需求。开发相应的机制来隔离和不同的并行的 conversation 相关联的"
+"会话状态的,当用户关闭浏览器窗口或标签页时,合并故障恢复来确保 conversation "
+"状态被销毁,这些都是勇敢的行为(到目前为止,我已经实现了两次,一次是为客户程"
+"序,另外一次是为了 Seam)。 "
+
+#. Tag: para
+#: Tutorial.xml:943
+#, no-c-format
+msgid "Now there is a better way."
+msgstr "但现在有更好的方法了。"
+
+#. Tag: para
+#: Tutorial.xml:946
+#, no-c-format
+msgid ""
+"Seam introduces the <emphasis>conversation context</emphasis> as a first "
+"class construct. You can safely keep conversational state in this context, "
+"and be assured that it will have a well-defined lifecycle. Even better, you "
+"won&#39;t need to be continually pushing data back and forth between the "
+"application server and the database, since the conversation context is a "
+"natural cache of data that the user is currently working with."
+msgstr ""
+"Seam 引入了 <emphasis>conversation 上下文</emphasis>。你可以在这个上下文里安"
+"全地保存 conversation 状态,它也有一个定义明确的生命周期。更好的是,你不需要"
+"持续地在应用服务器和数据库之间来回传送数据,这是因为 conversation 上下文是用"
+"户所使用的数据的天然的缓存。  "
+
+#. Tag: para
+#: Tutorial.xml:949
+#, no-c-format
+msgid ""
+"Usually, the components we keep in the conversation context are stateful "
+"session beans. (We can also keep entity beans and JavaBeans in the "
+"conversation context.) There is an ancient canard in the Java community that "
+"stateful session beans are a scalability killer. This may have been true in "
+"1998 when WebFoobar 1.0 was released. It is no longer true today. "
+"Application servers like JBoss 4.0 have extremely sophisticated mechanisms "
+"for stateful session bean state replication. (For example, the JBoss EJB3 "
+"container performs fine-grained replication, replicating only those bean "
+"attribute values which actually changed.) Note that all the traditional "
+"technical arguments for why stateful beans are inefficient apply equally to "
+"the <literal>HttpSession</literal>, so the practice of shifting state from "
+"business tier stateful session bean components to the web session to try and "
+"improve performance is unbelievably misguided. It is certainly possible to "
+"write unscalable applications using stateful session beans, by using "
+"stateful beans incorrectly, or by using them for the wrong thing. But that "
+"doesn&#39;t mean you should <emphasis>never</emphasis> use them. Anyway, "
+"Seam guides you toward a safe usage model. Welcome to 2005."
+msgstr ""
+"通常,我们保存在 conversation context 里的组件是 stateful session bean。(我"
+"们也可以保存 entity bean 和 JavaBean。)在 Java 社区里有一个古老的谣言:"
+"stateful session bean 是扩充性杀手。在 1998 年 WebFoobar 1.0 被发布时,这可能"
+"是真的。但今天不再是真的了。JBoss 4.0 等应用服务器已经极度地复杂化了 "
+"stateful session bean 状态复制的机制。(例如,JBoss EJB3 容器执行细颗粒度的复"
+"制,只复制实际修动的 bean 属性。)注意,所有传统的关于 stateful bean 的技术争"
+"论其实都针对于 <literal>HttpSession</literal>,所以把状态从商业层的 stateful "
+"session bean 组件移至 web 会话来提高性能都是被误导的。当然也有可能使用 "
+"stateful session bean、或错误地使用 stateful session bean、亦或是用在错误的地"
+"方来编写不能扩充的应用程序。但是,这不意味着你<emphasis>决不</emphasis>应该使"
+"用它。无论如何,Seam 都会将你引导至安全的使用方式。 "
+
+#. Tag: para
+#: Tutorial.xml:952
+#, no-c-format
+msgid "OK, I&#39;ll stop ranting now, and get back to the tutorial."
+msgstr "好了,让我们再回到这个教程。 "
+
+#. Tag: para
+#: Tutorial.xml:955
+#, no-c-format
+msgid ""
+"The booking example application shows how stateful components with different "
+"scopes can collaborate together to achieve complex behaviors. The main page "
+"of the booking application allows the user to search for hotels. The search "
+"results are kept in the Seam session scope. When the user navigates to one "
+"of these hotels, a conversation begins, and a conversation scoped component "
+"calls back to the session scoped component to retrieve the selected hotel."
+msgstr ""
+"booking 例程展示了怎样组合具有不同作用域的 stateful 组件来实施复杂的行为。此"
+"例程的主页允许用户搜索酒店。搜索结果设为 Seam session 作用域。当用户导航至其"
+"中一个酒店时,将开始一个 conversation ,且作用域为 conversation 的组件调用 "
+"session 作用域的组件来获取所选择的酒店。"
+
+#. Tag: para
+#: Tutorial.xml:958
+#, no-c-format
+msgid ""
+"The booking example also demonstrates the use of Ajax4JSF to implement rich "
+"client behavior without the use of handwritten JavaScript."
+msgstr ""
+"booking 例程也演示了不用硬编码的 Javascript 而采用 Ajax4JSF 来实现富客户端"
+"(rich client)行为。"
+
+#. Tag: para
+#: Tutorial.xml:961
+#, no-c-format
+msgid ""
+"The search functionality is implemented using a session-scope stateful "
+"session bean, similar to the one we saw in the message list example above."
+msgstr ""
+"搜索功能用作用域为 session 的 stateful session bean 来实现,这和上面的 "
+"message list 示例一样。"
+
+#. Tag: programlisting
+#: Tutorial.xml:971
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"hotelSearch\")\n"
+"@Scope(ScopeType.SESSION)\n"
+"@Restrict(\"#{identity.loggedIn}\")\n"
+"public class HotelSearchingAction implements HotelSearching\n"
+"{\n"
+"   \n"
+"   @PersistenceContext\n"
+"   private EntityManager em;\n"
+"   \n"
+"   private String searchString;\n"
+"   private int pageSize = 10;\n"
+"   private int page;\n"
+"   \n"
+"   @DataModel\n"
+"   private List&lt;Hotel&gt; hotels;\n"
+"   \n"
+"   public String find()\n"
+"   {\n"
+"      page = 0;\n"
+"      queryHotels();   \n"
+"      return \"main\";\n"
+"   }\n"
+"\n"
+"   public String nextPage()\n"
+"   {\n"
+"      page++;\n"
+"      queryHotels();\n"
+"      return \"main\";\n"
+"   }\n"
+"      \n"
+"   private void queryHotels()\n"
+"   {\n"
+"      String searchPattern = searchString==null ? \"%\" : &#39;%&#39; + \n"
+"         searchString.toLowerCase().replace(&#39;*&#39;, &#39;%&#39;) + &#39;"
+"%&#39;;\n"
+"      hotels = em.createQuery(\"select h from Hotel h where lower(h.name) "
+"like \n"
+"        :search or lower(h.city) like :search \n"
+"        or lower(h.zip) like :search or lower(h.address) like :search\")\n"
+"            .setParameter(\"search\", searchPattern)\n"
+"            .setMaxResults(pageSize)\n"
+"            .setFirstResult( page * pageSize )\n"
+"            .getResultList();\n"
+"   }\n"
+"   \n"
+"   public boolean isNextPageAvailable()\n"
+"   {\n"
+"      return hotels!=null &amp;&amp; hotels.size()==pageSize;\n"
+"   }\n"
+"   \n"
+"   public int getPageSize() {\n"
+"      return pageSize;\n"
+"   }\n"
+"\n"
+"   public void setPageSize(int pageSize) {\n"
+"      this.pageSize = pageSize;\n"
+"   }\n"
+"\n"
+"   public String getSearchString()\n"
+"   {\n"
+"      return searchString;\n"
+"   }\n"
+"\n"
+"   public void setSearchString(String searchString)\n"
+"   {\n"
+"      this.searchString = searchString;\n"
+"   }\n"
+"   \n"
+"   @Destroy @Remove\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+"@Stateful\n"
+"@Name(\"hotelSearch\")\n"
+"@Scope(ScopeType.SESSION)\n"
+"@Restrict(\"#{identity.loggedIn}\")\n"
+"public class HotelSearchingAction implements HotelSearching\n"
+"{\n"
+"   \n"
+"   @PersistenceContext\n"
+"   private EntityManager em;\n"
+"   \n"
+"   private String searchString;\n"
+"   private int pageSize = 10;\n"
+"   private int page;\n"
+"   \n"
+"   @DataModel\n"
+"   private List&lt;Hotel&gt; hotels;\n"
+"   \n"
+"   public String find()\n"
+"   {\n"
+"      page = 0;\n"
+"      queryHotels();   \n"
+"      return \"main\";\n"
+"   }\n"
+"\n"
+"   public String nextPage()\n"
+"   {\n"
+"      page++;\n"
+"      queryHotels();\n"
+"      return \"main\";\n"
+"   }\n"
+"      \n"
+"   private void queryHotels()\n"
+"   {\n"
+"      String searchPattern = searchString==null ? \"%\" : &#39;%&#39; + \n"
+"         searchString.toLowerCase().replace(&#39;*&#39;, &#39;%&#39;) + &#39;"
+"%&#39;;\n"
+"      hotels = em.createQuery(\"select h from Hotel h where lower(h.name) "
+"like \n"
+"        :search or lower(h.city) like :search \n"
+"        or lower(h.zip) like :search or lower(h.address) like :search\")\n"
+"            .setParameter(\"search\", searchPattern)\n"
+"            .setMaxResults(pageSize)\n"
+"            .setFirstResult( page * pageSize )\n"
+"            .getResultList();\n"
+"   }\n"
+"   \n"
+"   public boolean isNextPageAvailable()\n"
+"   {\n"
+"      return hotels!=null &amp;&amp; hotels.size()==pageSize;\n"
+"   }\n"
+"   \n"
+"   public int getPageSize() {\n"
+"      return pageSize;\n"
+"   }\n"
+"\n"
+"   public void setPageSize(int pageSize) {\n"
+"      this.pageSize = pageSize;\n"
+"   }\n"
+"\n"
+"   public String getSearchString()\n"
+"   {\n"
+"      return searchString;\n"
+"   }\n"
+"\n"
+"   public void setSearchString(String searchString)\n"
+"   {\n"
+"      this.searchString = searchString;\n"
+"   }\n"
+"   \n"
+"   @Destroy @Remove\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:974
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Stateful</literal> annotation identifies this "
+"class as a stateful session bean. Stateful session beans are scoped to the "
+"conversation context by default."
+msgstr ""
+"EJB 的标准 <literal>@Stateful</literal> 注解将此类定义为 stateful session "
+"bean。Stateful session bean 的作用域缺省为 conversation。"
+
+#. Tag: para
+#: Tutorial.xml:979
+#, no-c-format
+msgid ""
+"The <literal>@Restrict</literal> annotation applies a security restriction "
+"to the component. It restricts access to the component allowing only logged-"
+"in users. The security chapter explains more about security in Seam."
+msgstr ""
+"<literal>@Restrict</literal> 注解为组件应用安全限制。它只允许登录的用户访问组"
+"件。安全性章节提供了更多 Seam 安全性方面的内容。"
+
+#. Tag: para
+#: Tutorial.xml:984
+#, no-c-format
+msgid ""
+"The <link linkend=\"datamodel-annotation\"><literal>@DataModel</literal></"
+"link> annotation exposes a <literal>List</literal> as a JSF "
+"<literal>ListDataModel</literal>. This makes it easy to implement clickable "
+"lists for search screens. In this case, the list of hotels is exposed to the "
+"page as a <literal>ListDataModel</literal> in the conversation variable "
+"named <literal>hotels</literal>."
+msgstr ""
+"<link linkend=\"datamodel-annotation\"><literal>@DataModel</literal></link> "
+"注解把 <literal>List</literal> 开放为 JSF <literal>ListDataModel</literal>。"
+"这使为搜索屏幕实现可点击的列表变得容易。在这个例子里,酒店列表作为 "
+"conversation 变量 <literal>hotels</literal> 里的 <literal>ListDataModel</"
+"literal> 开放给页面。"
+
+#. Tag: para
+#: Tutorial.xml:989
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Remove</literal> annotation specifies that a "
+"stateful session bean should be removed and its state destroyed after "
+"invocation of the annotated method. In Seam, all stateful session beans "
+"should define a method marked <literal>@Destroy @Remove</literal>. This is "
+"the EJB remove method that will be called when Seam destroys the session "
+"context. Actually, the <link linkend=\"destroy-annotation"
+"\"><literal>@Destroy</literal></link> annotation is of more general "
+"usefulness, since it can be used for any kind of cleanup that should happen "
+"when any Seam context ends. If you don&#39;t have an <literal>@Destroy "
+"@Remove</literal> method, state will leak and you will suffer performance "
+"problems."
+msgstr ""
+"EJB 的标准 <literal>@Remove</literal> 注解指定了 stateful session bean 应该在"
+"对被注解的方法调用后删除并销毁状态。在 Seam,所有的 stateful session bean 都"
+"应该定义一个标记为 <literal>@Destroy @Remove</literal> 的方法。当 Seam 销毁 "
+"session 上下文时,将调用 EJB remove 方法。实际上,既然 <link linkend="
+"\"destroy-annotation\"><literal>@Destroy</literal></link> 注解可用于 Seam 上"
+"下文结束时发生的任何类型的清理,它还有更多的用途。如果你没有 "
+"<literal>@Destroy @Remove</literal> 方法,状态将会泄漏,你将遇到性能方面的问"
+"题。 "
+
+#. Tag: para
+#: Tutorial.xml:996
+#, no-c-format
+msgid ""
+"The main page of the application is a Facelets page. Let&#39;s look at the "
+"fragment which relates to searching for hotels:"
+msgstr ""
+"此应用程序的主页是一个 Facelets 页面。让我们看看和酒店搜索相关的片段: "
+
+#. Tag: programlisting
+#: Tutorial.xml:1006
+#, no-c-format
+msgid ""
+"&lt;div class=\"section\"&gt;\n"
+"&lt;h:form&gt;\n"
+"  \n"
+"  &lt;span class=\"errors\"&gt;\n"
+"    &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"  &lt;/span&gt;\n"
+"    \n"
+"  &lt;h1&gt;Search Hotels&lt;/h1&gt;\n"
+"  &lt;fieldset&gt; \n"
+"     &lt;h:inputText value=\"#{hotelSearch.searchString}\" style=\"width: "
+"165px;\"&gt;\n"
+"        &lt;a:support event=\"onkeyup\" actionListener=\"#{hotelSearch.find}"
+"\" \n"
+"                   reRender=\"searchResults\" /&gt;\n"
+"     &lt;/h:inputText&gt;\n"
+"     &#160;\n"
+"     &lt;a:commandButton value=\"Find Hotels\" action=\"#{hotelSearch.find}"
+"\" \n"
+"                      styleClass=\"button\" reRender=\"searchResults\"/&gt;\n"
+"     &#160;\n"
+"     &lt;a:status&gt;\n"
+"        &lt;f:facet name=\"start\"&gt;\n"
+"           &lt;h:graphicImage value=\"/img/spinner.gif\"/&gt;\n"
+"        &lt;/f:facet&gt;\n"
+"     &lt;/a:status&gt;\n"
+"     &lt;br/&gt;\n"
+"     &lt;h:outputLabel for=\"pageSize\"&gt;Maximum results:&lt;/h:"
+"outputLabel&gt;&#160;\n"
+"     &lt;h:selectOneMenu value=\"#{hotelSearch.pageSize}\" id=\"pageSize"
+"\"&gt;\n"
+"        &lt;f:selectItem itemLabel=\"5\" itemValue=\"5\"/&gt;\n"
+"        &lt;f:selectItem itemLabel=\"10\" itemValue=\"10\"/&gt;\n"
+"        &lt;f:selectItem itemLabel=\"20\" itemValue=\"20\"/&gt;\n"
+"     &lt;/h:selectOneMenu&gt;\n"
+"  &lt;/fieldset&gt;\n"
+"    \n"
+"&lt;/h:form&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;a:outputPanel id=\"searchResults\"&gt;\n"
+"  &lt;div class=\"section\"&gt;\n"
+"  &lt;h:outputText value=\"No Hotels Found\" \n"
+"                rendered=\"#{hotels != null and hotels.rowCount==0}\"/&gt;\n"
+"  &lt;h:dataTable value=\"#{hotels}\" var=\"hot\" rendered=\"#{hotels."
+"rowCount&gt;0}\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Name&lt;/f:facet&gt;\n"
+"      #{hot.name}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Address&lt;/f:facet&gt;\n"
+"      #{hot.address}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;City, State&lt;/f:facet&gt;\n"
+"      #{hot.city}, #{hot.state}, #{hot.country}\n"
+"    &lt;/h:column&gt; \n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Zip&lt;/f:facet&gt;\n"
+"      #{hot.zip}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"      &lt;s:link value=\"View Hotel\" action=\"#{hotelBooking.selectHotel"
+"(hot)}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"  &lt;/h:dataTable&gt;\n"
+"  &lt;s:link value=\"More results\" action=\"#{hotelSearch.nextPage}\" \n"
+"          rendered=\"#{hotelSearch.nextPageAvailable}\"/&gt;\n"
+"  &lt;/div&gt;\n"
+"&lt;/a:outputPanel&gt;"
+msgstr ""
+"&lt;div class=\"section\"&gt;\n"
+"&lt;h:form&gt;\n"
+"  \n"
+"  &lt;span class=\"errors\"&gt;\n"
+"    &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"  &lt;/span&gt;\n"
+"    \n"
+"  &lt;h1&gt;Search Hotels&lt;/h1&gt;\n"
+"  &lt;fieldset&gt; \n"
+"     &lt;h:inputText value=\"#{hotelSearch.searchString}\" style=\"width: "
+"165px;\"&gt;\n"
+"        &lt;a:support event=\"onkeyup\" actionListener=\"#{hotelSearch.find}"
+"\" \n"
+"                   reRender=\"searchResults\" /&gt;\n"
+"     &lt;/h:inputText&gt;\n"
+"     &#160;\n"
+"     &lt;a:commandButton value=\"Find Hotels\" action=\"#{hotelSearch.find}"
+"\" \n"
+"                      styleClass=\"button\" reRender=\"searchResults\"/&gt;\n"
+"     &#160;\n"
+"     &lt;a:status&gt;\n"
+"        &lt;f:facet name=\"start\"&gt;\n"
+"           &lt;h:graphicImage value=\"/img/spinner.gif\"/&gt;\n"
+"        &lt;/f:facet&gt;\n"
+"     &lt;/a:status&gt;\n"
+"     &lt;br/&gt;\n"
+"     &lt;h:outputLabel for=\"pageSize\"&gt;Maximum results:&lt;/h:"
+"outputLabel&gt;&#160;\n"
+"     &lt;h:selectOneMenu value=\"#{hotelSearch.pageSize}\" id=\"pageSize"
+"\"&gt;\n"
+"        &lt;f:selectItem itemLabel=\"5\" itemValue=\"5\"/&gt;\n"
+"        &lt;f:selectItem itemLabel=\"10\" itemValue=\"10\"/&gt;\n"
+"        &lt;f:selectItem itemLabel=\"20\" itemValue=\"20\"/&gt;\n"
+"     &lt;/h:selectOneMenu&gt;\n"
+"  &lt;/fieldset&gt;\n"
+"    \n"
+"&lt;/h:form&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;a:outputPanel id=\"searchResults\"&gt;\n"
+"  &lt;div class=\"section\"&gt;\n"
+"  &lt;h:outputText value=\"No Hotels Found\" \n"
+"                rendered=\"#{hotels != null and hotels.rowCount==0}\"/&gt;\n"
+"  &lt;h:dataTable value=\"#{hotels}\" var=\"hot\" rendered=\"#{hotels."
+"rowCount&gt;0}\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Name&lt;/f:facet&gt;\n"
+"      #{hot.name}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Address&lt;/f:facet&gt;\n"
+"      #{hot.address}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;City, State&lt;/f:facet&gt;\n"
+"      #{hot.city}, #{hot.state}, #{hot.country}\n"
+"    &lt;/h:column&gt; \n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Zip&lt;/f:facet&gt;\n"
+"      #{hot.zip}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"      &lt;s:link value=\"View Hotel\" action=\"#{hotelBooking.selectHotel"
+"(hot)}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"  &lt;/h:dataTable&gt;\n"
+"  &lt;s:link value=\"More results\" action=\"#{hotelSearch.nextPage}\" \n"
+"          rendered=\"#{hotelSearch.nextPageAvailable}\"/&gt;\n"
+"  &lt;/div&gt;\n"
+"&lt;/a:outputPanel&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1009
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:support&gt;</literal> tag allows a JSF action "
+"event listener to be called by asynchronous <literal>XMLHttpRequest</"
+"literal> when a JavaScript event like <literal>onkeyup</literal> occurs. "
+"Even better, the <literal>reRender</literal> attribute lets us render a "
+"fragment of the JSF page and perform a partial page update when the "
+"asynchronous response is received."
+msgstr ""
+"Ajax4JSF <literal>&lt;a:support&gt;</literal> 标签允许当 JavaScript 事件发生"
+"时,JSF 的 action event listener 被异步的 <literal>XMLHttpRequest</literal> "
+"调用。更好的是,<literal>reRender</literal> 属性让我们在收到异步响应时显示 "
+"JSF 页面的片段并执行特定页面的更新。"
+
+#. Tag: para
+#: Tutorial.xml:1014
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:status&gt;</literal> tag lets us display a "
+"cheesy annimated image while we wait for asynchronous requests to return."
+msgstr ""
+"Ajax4JSF <literal>&lt;a:status&gt;</literal> 标签让我们在等待异步请求返回时显"
+"示一幅动画图像。"
+
+#. Tag: para
+#: Tutorial.xml:1019
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:outputPanel&gt;</literal> tag defines a region "
+"of the page which can be re-rendered by an asynchronous request."
+msgstr ""
+"Ajax4JSF <literal>&lt;a:outputPanel&gt;</literal> 标签定义了页面的一个区域,"
+"它可以被异步请求重新显示。"
+
+#. Tag: para
+#: Tutorial.xml:1024
+#, no-c-format
+msgid ""
+"The Seam <literal>&lt;s:link&gt;</literal> tag lets us attach a JSF action "
+"listener to an ordinary (non-JavaScript) HTML link. The advantage of this "
+"over the standard JSF <literal>&lt;h:commandLink&gt;</literal> is that it "
+"preserves the operation of \"open in new window\" and \"open in new tab\". "
+"Also notice that we use a method binding with a parameter: <literal>#"
+"{hotelBooking.selectHotel(hot)}</literal>. This is not possible in the "
+"standard Unified EL, but Seam provides an extension to the EL that lets you "
+"use parameters on any method binding expression."
+msgstr ""
+"Seam 的 <literal>&lt;s:link&gt;</literal> 标签让我们可以在普通的(非 "
+"Javascript)HTML 链接上附加一个 JSF action listener。和标准的 JSF "
+"<literal>&lt;h:commandLink&gt;</literal> 相比,它的优势是保留了 \"open in "
+"new window\" 和 \"open in new tab\" 操作。请注意,我们使用了绑定参数 "
+"<literal>#{hotelBooking.selectHotel(hot)}</literal> 的方法。在标准的 Unified "
+"EL 里这是不可能的,但 Seam 提供了 EL 扩展让你可以在任何方法上使用参数。"
+
+#. Tag: para
+#: Tutorial.xml:1031
+#, no-c-format
+msgid ""
+"This page displays the search results dynamically as we type, and lets us "
+"choose a hotel and pass it to the <literal>selectHotel()</literal> method of "
+"the <literal>HotelBookingAction</literal>, which is where the "
+"<emphasis>really</emphasis> interesting stuff is going to happen."
+msgstr ""
+"这个页面动态地显示了搜索结果,并让我们选择酒店和传递给 "
+"<literal>HotelBookingAction</literal> çš„ <literal>selectHotel()</literal> æ–¹"
+"法,而这是<emphasis>真正</emphasis>令人感兴趣的东西。"
+
+#. Tag: para
+#: Tutorial.xml:1034
+#, no-c-format
+msgid ""
+"Now lets see how the booking example application uses a conversation-scoped "
+"stateful session bean to achieve a natural cache of persistent data related "
+"to the conversation. The following code example is pretty long. But if you "
+"think of it as a list of scripted actions that implement the various steps "
+"of the conversation, it&#39;s understandable. Read the class from top to "
+"bottom, as if it were a story."
+msgstr ""
+"现在让我们看看 booking 示例是如何使用作用域为 conversation 的 stateful "
+"session bean 来实现和这个 conversation 相关的持久化数据的天然缓存的。下面的代"
+"码很长。但如果你把它当作实现这个 conversation 的不同步骤的动作列表,它是不难"
+"理解的。从上至下阅读这个类,将好像是一个故事一样。 "
+
+#. Tag: programlisting
+#: Tutorial.xml:1045
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"hotelBooking\")\n"
+"@Restrict(\"#{identity.loggedIn}\")\n"
+"public class HotelBookingAction implements HotelBooking\n"
+"{\n"
+"   \n"
+"   @PersistenceContext(type=EXTENDED)\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @In \n"
+"   private User user;\n"
+"   \n"
+"   @In(required=false) @Out\n"
+"   private Hotel hotel;\n"
+"   \n"
+"   @In(required=false) \n"
+"   @Out(required=false)\n"
+"   private Booking booking;\n"
+"     \n"
+"   @In\n"
+"   private FacesMessages facesMessages;\n"
+"      \n"
+"   @In\n"
+"   private Events events;\n"
+"   \n"
+"   @Logger \n"
+"   private Log log;\n"
+"   \n"
+"   @Begin\n"
+"   public String selectHotel(Hotel selectedHotel)\n"
+"   {\n"
+"      hotel = em.merge(selectedHotel);\n"
+"      return \"hotel\";\n"
+"   }\n"
+"   \n"
+"   public String bookHotel()\n"
+"   {      \n"
+"      booking = new Booking(hotel, user);\n"
+"      Calendar calendar = Calendar.getInstance();\n"
+"      booking.setCheckinDate( calendar.getTime() );\n"
+"      calendar.add(Calendar.DAY_OF_MONTH, 1);\n"
+"      booking.setCheckoutDate( calendar.getTime() );\n"
+"      \n"
+"      return \"book\";\n"
+"   }\n"
+"\n"
+"   public String setBookingDetails()\n"
+"   {\n"
+"      if (booking==null || hotel==null) return \"main\";\n"
+"      if ( !booking.getCheckinDate().before( booking.getCheckoutDate() ) )\n"
+"      {\n"
+"         facesMessages.add(\"Check out date must be later than check in date"
+"\");\n"
+"         return null;\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return \"confirm\";\n"
+"      }\n"
+"   }\n"
+"\n"
+"   @End\n"
+"   public String confirm()\n"
+"   {\n"
+"      if (booking==null || hotel==null) return \"main\";\n"
+"      em.persist(booking);\n"
+"      facesMessages.add\n"
+"       (\"Thank you, #{user.name}, your confimation number for #{hotel.name} "
+"is #{booking.id}\");\n"
+"      log.info(\"New booking: #{booking.id} for #{user.username}\");\n"
+"      events.raiseEvent(\"bookingConfirmed\");\n"
+"      return \"confirmed\";\n"
+"   }\n"
+"   \n"
+"   @End\n"
+"   public String cancel()\n"
+"   {\n"
+"      return \"main\";\n"
+"   }\n"
+"   \n"
+"   @Destroy @Remove\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+"@Stateful\n"
+"@Name(\"hotelBooking\")\n"
+"@Restrict(\"#{identity.loggedIn}\")\n"
+"public class HotelBookingAction implements HotelBooking\n"
+"{\n"
+"   \n"
+"   @PersistenceContext(type=EXTENDED)\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @In \n"
+"   private User user;\n"
+"   \n"
+"   @In(required=false) @Out\n"
+"   private Hotel hotel;\n"
+"   \n"
+"   @In(required=false) \n"
+"   @Out(required=false)\n"
+"   private Booking booking;\n"
+"     \n"
+"   @In\n"
+"   private FacesMessages facesMessages;\n"
+"      \n"
+"   @In\n"
+"   private Events events;\n"
+"   \n"
+"   @Logger \n"
+"   private Log log;\n"
+"   \n"
+"   @Begin\n"
+"   public String selectHotel(Hotel selectedHotel)\n"
+"   {\n"
+"      hotel = em.merge(selectedHotel);\n"
+"      return \"hotel\";\n"
+"   }\n"
+"   \n"
+"   public String bookHotel()\n"
+"   {      \n"
+"      booking = new Booking(hotel, user);\n"
+"      Calendar calendar = Calendar.getInstance();\n"
+"      booking.setCheckinDate( calendar.getTime() );\n"
+"      calendar.add(Calendar.DAY_OF_MONTH, 1);\n"
+"      booking.setCheckoutDate( calendar.getTime() );\n"
+"      \n"
+"      return \"book\";\n"
+"   }\n"
+"\n"
+"   public String setBookingDetails()\n"
+"   {\n"
+"      if (booking==null || hotel==null) return \"main\";\n"
+"      if ( !booking.getCheckinDate().before( booking.getCheckoutDate() ) )\n"
+"      {\n"
+"         facesMessages.add(\"Check out date must be later than check in date"
+"\");\n"
+"         return null;\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return \"confirm\";\n"
+"      }\n"
+"   }\n"
+"\n"
+"   @End\n"
+"   public String confirm()\n"
+"   {\n"
+"      if (booking==null || hotel==null) return \"main\";\n"
+"      em.persist(booking);\n"
+"      facesMessages.add\n"
+"       (\"Thank you, #{user.name}, your confimation number for #{hotel.name} "
+"is #{booking.id}\");\n"
+"      log.info(\"New booking: #{booking.id} for #{user.username}\");\n"
+"      events.raiseEvent(\"bookingConfirmed\");\n"
+"      return \"confirmed\";\n"
+"   }\n"
+"   \n"
+"   @End\n"
+"   public String cancel()\n"
+"   {\n"
+"      return \"main\";\n"
+"   }\n"
+"   \n"
+"   @Destroy @Remove\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:1048
+#, no-c-format
+msgid ""
+"This bean uses an EJB3 <emphasis>extended persistence context</emphasis>, so "
+"that any entity instances remain managed for the whole lifecycle of the "
+"stateful session bean."
+msgstr ""
+"这个 bean 使用了 EJB3 <emphasis>extended persistence context</emphasis>,所以"
+"任何 entity 实例在 stateful session bean 的整个生命周期里都保持可管理的状态。"
+
+#. Tag: para
+#: Tutorial.xml:1053
+#, no-c-format
+msgid ""
+"The <link linkend=\"out-annotation\"><literal>@Out</literal></link> "
+"annotation declares that an attribute value is <emphasis>outjected</"
+"emphasis> to a context variable after method invocations. In this case, the "
+"context variable named <literal>hotel</literal> will be set to the value of "
+"the <literal>hotel</literal> instance variable after every action listener "
+"invocation completes."
+msgstr ""
+"<link linkend=\"out-annotation\"><literal>@Out</literal></link> 注解声明了属"
+"性值在方法调用后<emphasis>注出</emphasis>到一个上下文变量。在这个例子里,名"
+"为 <literal>hotel</literal> 的上下文变量将在每次 action listener 调用完成后被"
+"设置为 <literal>hotel</literal> 实例变量的值。"
+
+#. Tag: para
+#: Tutorial.xml:1058
+#, no-c-format
+msgid ""
+"The <link linkend=\"begin-annotation\"><literal>@Begin</literal></link> "
+"annotation specifies that the annotated method begins a <emphasis>long-"
+"running conversation</emphasis>, so the current conversation context will "
+"not be destroyed at the end of the request. Instead, it will be reassociated "
+"with every request from the current window, and destroyed either by timeout "
+"due to conversation inactivity or invocation of a matching <literal>@End</"
+"literal> method."
+msgstr ""
+"<link linkend=\"begin-annotation\"><literal>@Begin</literal></link> 注解指定"
+"被注解的方法开始一个 <emphasis>long-running conversation</emphasis>,所以当前"
+"的 conversation 上下文将不会在请求结束时被销毁。相反,它将重新和当前窗口的每"
+"个请求相关联,且在遇到 <literal>@End</literal> 方法调用或因为 conversation 不"
+"活动而超时的情况下被销毁。"
+
+#. Tag: para
+#: Tutorial.xml:1063
+#, no-c-format
+msgid ""
+"The <link linkend=\"end-annotation\"><literal>@End</literal></link> "
+"annotation specifies that the annotated method ends the current long-running "
+"conversation, so the current conversation context will be destroyed at the "
+"end of the request."
+msgstr ""
+"<link linkend=\"end-annotation\"><literal>@End</literal></link> 注解指定被注"
+"解的方法结束当前的 long-running conversation,所以当前的 conversation 上下文"
+"将在请求结束时被销毁。"
+
+#. Tag: para
+#: Tutorial.xml:1068
+#, no-c-format
+msgid ""
+"This EJB remove method will be called when Seam destroys the conversation "
+"context. Don&#39;t ever forget to define this method!"
+msgstr ""
+"这个 EJB remove 方法将在 Seam 销毁 conversation 上下文时被调用。不要忘记定义"
+"这个方法! "
+
+#. Tag: para
+#: Tutorial.xml:1075
+#, no-c-format
+msgid ""
+"<literal>HotelBookingAction</literal> contains all the action listener "
+"methods that implement selection, booking and booking confirmation, and "
+"holds state related to this work in its instance variables. We think you&#39;"
+"ll agree that this code is much cleaner and simpler than getting and setting "
+"<literal>HttpSession</literal> attributes."
+msgstr ""
+"<literal>HotelBookingAction</literal> 包含了所有实现酒店选择、预订和确认的 "
+"action listener 方法,且在它的实例变量里保存和这些功能相关的状态。我们想你会"
+"同意这些代码比获取和设置 <literal>HttpSession</literal> 属性清晰多了。 "
+
+#. Tag: para
+#: Tutorial.xml:1078
+#, no-c-format
+msgid ""
+"Even better, a user can have multiple isolated conversations per login "
+"session. Try it! Log in, run a search, and navigate to different hotel pages "
+"in multiple browser tabs. You&#39;ll be able to work on creating two "
+"different hotel reservations at the same time. If you leave any one "
+"conversation inactive for long enough, Seam will eventually time out that "
+"conversation and destroy its state. If, after ending a conversation, you "
+"backbutton to a page of that conversation and try to perform an action, Seam "
+"will detect that the conversation was already ended, and redirect you to the "
+"search page."
+msgstr ""
+"更好的是,对于每个登录会话用户都可以有多个隔离的 conversation。试试看!登录,"
+"进行搜索且导航至位于多个浏览器标签页的不同的酒店页面。你将能够同时创建两个不"
+"同的酒店预订条目。如果你让其中任何一个 conversation 处于不活动状态足够的久,"
+"Seam 将最终让这个 conversation 超时并销毁它的状态。在结束一个 conversation "
+"后,如果你点击后退按钮回退到它的一个页面,并执行动作时,Seam 将检测到这个 "
+"conversation 已经结束且将你重定向到搜索页面。 "
+
+#. Tag: title
+#: Tutorial.xml:1084
+#, no-c-format
+msgid "The Seam UI control library"
+msgstr "Seam UI 控件库"
+
+#. Tag: para
+#: Tutorial.xml:1085
+#, no-c-format
+msgid ""
+"If you check inside the WAR file for the booking application, you&#39;ll "
+"find <literal>seam-ui.jar</literal> in the <literal>WEB-INF/lib</literal> "
+"directory. This package contains a number of JSF custom controls that "
+"integrate with Seam. The booking application uses the <literal>&lt;s:link&gt;"
+"</literal> control for navigation from the search screen to the hotel page:"
+msgstr ""
+"如果你查看 booking 程序的 WAR 文件,你将发现 <literal>WEB-INF/lib</literal> "
+"目录下的 <literal>seam-ui.jar</literal>。这个软件包包含了大量的与 Seam 集成"
+"的 JSF 自定义控件。booking 程序使用了 <literal>&lt;s:link&gt;</literal> 控件"
+"来从搜索页面导航至酒店页面。 "
+
+#. Tag: programlisting
+#: Tutorial.xml:1088
+#, no-c-format
+msgid ""
+"&lt;s:link value=\"View Hotel\" action=\"#{hotelBooking.selectHotel}\"/&gt;"
+msgstr ""
+"&lt;s:link value=\"View Hotel\" action=\"#{hotelBooking.selectHotel}\"/&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1089
+#, no-c-format
+msgid ""
+"The use of <literal>&lt;s:link&gt;</literal> here allows us to attach an "
+"action listener to a HTML link without breaking the browser&#39;s \"open in "
+"new window\" feature. The standard JSF <literal>&lt;h:commandLink&gt;</"
+"literal> does not work with \"open in new window\". We&#39;ll see later that "
+"<literal>&lt;s:link&gt;</literal> also offers a number of other useful "
+"features, including conversation propagation rules."
+msgstr ""
+"<literal>&lt;s:link&gt;</literal> 允许我们在 HTML 链接上附加一个 action "
+"listener,而不需要破坏浏览器的 \"open in new window\" 特征。标准的 JSF "
+"<literal>&lt;h:commandLink&gt;</literal> 不能 \"open in new window\"。后面我"
+"们将看到 <literal>&lt;s:link&gt;</literal> 也提供了大量的其他有用特征,包括 "
+"conversation propagation 规则。 "
+
+#. Tag: para
+#: Tutorial.xml:1092
+#, no-c-format
+msgid ""
+"The booking application uses some other Seam and Ajax4JSF controls, "
+"especially on the <literal>/book.xhtml</literal> page. We won&#39;t get into "
+"the details of those controls here, but if you want to understand this code, "
+"please refer to the chapter covering Seam&#39;s functionality for JSF form "
+"validation."
+msgstr ""
+"booking 应用程序使用一些其他的 Seam 和 Ajax4JSF 控件,特别是在 <literal>/"
+"book.xhtml</literal> 页面里。在这里我们不会涉及这些控件的细节,但如果你想理解"
+"它们的代码,请参考关于 Seam 的 JSF 表单检验功能的章节。 "
+
+#. Tag: title
+#: Tutorial.xml:1098
+#, no-c-format
+msgid "The Seam Debug Page"
+msgstr "Seam Debug 页面"
+
+#. Tag: para
+#: Tutorial.xml:1099
+#, no-c-format
+msgid ""
+"The WAR also includes <literal>seam-debug.jar</literal>. If this jar is "
+"deployed in <literal>WEB-INF/lib</literal>, along with the Facelets, and if "
+"you set the following Seam property in <literal>web.xml</literal> or "
+"<literal>seam.properties</literal>:"
+msgstr ""
+"这个 WAR 文件也包括 <literal>seam-debug.jar</literal>。如果这个 jar 文件和 "
+"Facelets 一起部署在 <literal>WEB-INF/lib</literal> 下,且你在 <literal>web."
+"xml</literal> 或  <literal>seam.properties</literal> 里设置了下面的 Seam 属"
+"性:"
+
+#. Tag: programlisting
+#: Tutorial.xml:1102
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;org.jboss.seam.core.init.debug&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;true&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;org.jboss.seam.core.init.debug&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;true&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1103
+#, no-c-format
+msgid ""
+"Then the Seam debug page will be available. This page lets you browse and "
+"inspect the Seam components in any of the Seam contexts associated with your "
+"current login session. Just point your browser at <ulink url=\"http://"
+"localhost:8080/seam-booking/debug.seam\"><literal>http://localhost:8080/seam-"
+"booking/debug.seam</literal></ulink>."
+msgstr ""
+"然后 Seam 的 debug 页面将可用。这个页面让你浏览和查看任何和你当前的登录会话相"
+"关联的 Seam 上下文里的 Seam 组件。你可以访问: <ulink url=\"http://"
+"localhost:8080/seam-booking/debug.seam\"><literal>http://localhost:8080/seam-"
+"booking/debug.seam</literal></ulink>。    "
+
+#. Tag: title
+#: Tutorial.xml:1119
+#, no-c-format
+msgid "A complete application featuring Seam and jBPM: the DVD Store example"
+msgstr "完整的 Seam 和 jBPM 的应用程序:DVD Store 示例程序"
+
+#. Tag: para
+#: Tutorial.xml:1120
+#, no-c-format
+msgid ""
+"The DVD Store demo application shows the practical usage of jBPM for both "
+"task management and pageflow."
+msgstr "DVD Store 演示程序展示了关于任务管理和 pageflow 的 jBPM 的实际用法。"
+
+#. Tag: para
+#: Tutorial.xml:1123
+#, no-c-format
+msgid ""
+"The user screens take advantage of a jPDL pageflow to implement searching "
+"and shopping cart functionality."
+msgstr "user 屏幕利用 jPDL pageflow 来实现搜索和购物车功能。"
+
+#. Tag: screeninfo
+#: Tutorial.xml:1126 Tutorial.xml:1137 Tutorial.xml:1163
+#, no-c-format
+msgid "DVD Store example"
+msgstr "DVD Store 示例程序"
+
+#. Tag: para
+#: Tutorial.xml:1134
+#, no-c-format
+msgid ""
+"The administration screens take use jBPM to manage the approval and shipping "
+"cycle for orders. The business process may even be changed dynamically, by "
+"selecting a different process definition!"
+msgstr ""
+"administration 屏幕利用 jBPM 管理订单的批准和装运周期。通过选择不同的过程定"
+"义,商业过程甚至可以动态地改变!"
+
+#. Tag: para
+#: Tutorial.xml:1148
+#, no-c-format
+msgid "Look in the <literal>dvdstore</literal> directory."
+msgstr "查看 <literal>dvdstore</literal> 目录。"
+
+#. Tag: title
+#: Tutorial.xml:1154
+#, no-c-format
+msgid ""
+"A complete application featuring Seam workspace management: the Issue "
+"Tracker example"
+msgstr "关于 Seam 工作空间管理的完整应用程序:Issue Tracker 示例程序"
+
+#. Tag: para
+#: Tutorial.xml:1155
+#, no-c-format
+msgid ""
+"The Issue Tracker demo shows off Seam&#39;s workspace management "
+"functionality: the conversation switcher, conversation list and breadcrumbs."
+msgstr ""
+"Issue Tracker 演示程序展示了 Seam 的工作空间管理功能:conversation 切换器、"
+"conversation 列表和细节。 "
+
+#. Tag: para
+#: Tutorial.xml:1160
+#, no-c-format
+msgid ""
+"To log into the Issue Tracker demo you must provide a username and password. "
+"You can find this in the <filename>resources/import.sql</filename> file or "
+"use \"gavin\" and \"foobar\" for username and password respectively."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1174
+#, no-c-format
+msgid "Look in the <literal>issues</literal> directory."
+msgstr "查看 <literal>issues</literal> 目录。"
+
+#. Tag: title
+#: Tutorial.xml:1180
+#, no-c-format
+msgid "An example of Seam with Hibernate: the Hibernate Booking example"
+msgstr "使用 Hibernate 的 Seam 示例程序:Hibernate Booking 示例"
+
+#. Tag: para
+#: Tutorial.xml:1181
+#, no-c-format
+msgid ""
+"The Hibernate Booking demo is a straight port of the Booking demo to an "
+"alternative architecture that uses Hibernate for persistence and JavaBeans "
+"instead of session beans."
+msgstr ""
+"Hibernate Booking 演示程序把 Booking 演示程序移植到另外的体系结构,它使用 "
+"Hibernate(用于持久化)以及 JavaBean(不是 session bean)。"
+
+#. Tag: para
+#: Tutorial.xml:1187
+#, no-c-format
+msgid "Look in the <literal>hibernate</literal> directory."
+msgstr "查看 <literal>hibernate</literal> 目录。"
+
+#. Tag: title
+#: Tutorial.xml:1193
+#, no-c-format
+msgid "A RESTful Seam application: the Blog example"
+msgstr "RESTful Seam 应用程序:Blog 示例程序"
+
+#. Tag: para
+#: Tutorial.xml:1194
+#, no-c-format
+msgid ""
+"Seam makes it very easy to implement applications which keep state on the "
+"server-side. However, server-side state is not always appropriate, "
+"especially in for functionality that serves up <emphasis>content</emphasis>. "
+"For this kind of problem we often need to let the user bookmark pages and "
+"have a relatively stateless server, so that any page can be accessed at any "
+"time, via the bookmark. The Blog example shows how to a implement RESTful "
+"application using Seam. Every page of the application can be bookmarked, "
+"including the search results page."
+msgstr ""
+"Seam 使实现在服务器端保持状态的应用程序变得容易。然而,服务器端的状态并不总是"
+"合适的,特别是对于使用 <emphasis>content</emphasis> 的功能而言。对于这类问"
+"题,我们经常需要让用户将页面加入标签,并有相对无状态的服务器,这样才可以通过"
+"标签在任何时候访问任何页面。Blog 例程展示了如何用 Seam 实现 RESTful 应用程"
+"序。此应用程序的每个页面都可以被设为标签,包括搜索结果页面。"
+
+#. Tag: screeninfo
+#: Tutorial.xml:1197
+#, no-c-format
+msgid "Blog example"
+msgstr "Blog 示例程序"
+
+#. Tag: para
+#: Tutorial.xml:1205
+#, no-c-format
+msgid ""
+"The Blog example demonstrates the use of \"pull\"-style MVC, where instead "
+"of using action listener methods to retrieve data and prepare the data for "
+"the view, the view pulls data from components as it is being rendered."
+msgstr ""
+"Blog 示例程序演示了 \"pull\" 风格的 MVC 的使用:视图在组件被显示的时候从组"
+"件“拉”出数据,而不是使用 action listener 方法来获取数据并准备视图的数据。"
+
+#. Tag: title
+#: Tutorial.xml:1209
+#, no-c-format
+msgid "Using \"pull\"-style MVC"
+msgstr "使用 \"pull\" 风格的 MVC"
+
+#. Tag: para
+#: Tutorial.xml:1210
+#, no-c-format
+msgid ""
+"This snippet from the <literal>index.xhtml</literal> facelets page displays "
+"a list of recent blog entries:"
+msgstr ""
+"<literal>index.xhtml</literal> facelets 页面的片段显示了最近的 blog 条目的列"
+"表:"
+
+#. Tag: programlisting
+#: Tutorial.xml:1213
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{blog.recentBlogEntries}\" var=\"blogEntry\" rows="
+"\"3\"&gt;\n"
+"   &lt;h:column&gt;\n"
+"      &lt;div class=\"blogEntry\"&gt;\n"
+"         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"         &lt;div&gt;\n"
+"            &lt;h:outputText escape=\"false\" \n"
+"                  value=\"#{blogEntry.excerpt==null ? blogEntry.body : "
+"blogEntry.excerpt}\"/&gt;\n"
+"         &lt;/div&gt;\n"
+"         &lt;p&gt;\n"
+"            &lt;h:outputLink value=\"entry.seam\" rendered=\"#{blogEntry."
+"excerpt!=null}\"&gt;\n"
+"               &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/"
+"&gt;\n"
+"               Read more...\n"
+"            &lt;/h:outputLink&gt;\n"
+"         &lt;/p&gt;\n"
+"         &lt;p&gt;\n"
+"            [Posted on \n"
+"            &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"               &lt;f:convertDateTime timeZone=\"#{blog.timeZone}\" locale=\"#"
+"{blog.locale}\" \n"
+"                                     type=\"both\"/&gt;\n"
+"            &lt;/h:outputText&gt;]\n"
+"            &#160;\n"
+"            &lt;h:outputLink value=\"entry.seam\"&gt;[Link]\n"
+"               &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/"
+"&gt;\n"
+"            &lt;/h:outputLink&gt;\n"
+"         &lt;/p&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+"&lt;h:dataTable value=\"#{blog.recentBlogEntries}\" var=\"blogEntry\" rows="
+"\"3\"&gt;\n"
+"   &lt;h:column&gt;\n"
+"      &lt;div class=\"blogEntry\"&gt;\n"
+"         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"         &lt;div&gt;\n"
+"            &lt;h:outputText escape=\"false\" \n"
+"                  value=\"#{blogEntry.excerpt==null ? blogEntry.body : "
+"blogEntry.excerpt}\"/&gt;\n"
+"         &lt;/div&gt;\n"
+"         &lt;p&gt;\n"
+"            &lt;h:outputLink value=\"entry.seam\" rendered=\"#{blogEntry."
+"excerpt!=null}\"&gt;\n"
+"               &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/"
+"&gt;\n"
+"               Read more...\n"
+"            &lt;/h:outputLink&gt;\n"
+"         &lt;/p&gt;\n"
+"         &lt;p&gt;\n"
+"            [Posted on \n"
+"            &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"               &lt;f:convertDateTime timeZone=\"#{blog.timeZone}\" locale=\"#"
+"{blog.locale}\" \n"
+"                                     type=\"both\"/&gt;\n"
+"            &lt;/h:outputText&gt;]\n"
+"            &#160;\n"
+"            &lt;h:outputLink value=\"entry.seam\"&gt;[Link]\n"
+"               &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/"
+"&gt;\n"
+"            &lt;/h:outputLink&gt;\n"
+"         &lt;/p&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1214
+#, no-c-format
+msgid ""
+"If we navigate to this page from a bookmark, how does the data used by the "
+"<literal>&lt;h:dataTable&gt;</literal> actually get initialized? Well, what "
+"happens is that the <literal>Blog</literal> is retrieved lazily&mdash;"
+"\"pulled\"&mdash;when needed, by a Seam component named <literal>blog</"
+"literal>. This is the opposite flow of control to what is usual in "
+"traditional web action-based frameworks like Struts."
+msgstr ""
+"如果我们从某个标签导航至这个页面,那 <literal>&lt;h:dataTable&gt;</literal> "
+"使用的数据实际上是怎样初始化的呢?<literal>Blog</literal> 是 lazily 获取的"
+"&mdash;需要时通过名为 <literal>blog</literal> 的 Seam 组件 \"pull\"。它具有和"
+"传统的基于 action 的框架如 Struts 的控制流程相反。"
+
+#. Tag: programlisting
+#: Tutorial.xml:1222
+#, no-c-format
+msgid ""
+"@Name(\"blog\")\n"
+"@Scope(ScopeType.STATELESS)\n"
+"public class BlogService \n"
+"{\n"
+"   \n"
+"   @In\n"
+"   private EntityManager entityManager;\n"
+"  \n"
+"   @Unwrap\n"
+"   public Blog getBlog()\n"
+"   {\n"
+"      return (Blog) entityManager.createQuery(\"from Blog b left join fetch "
+"b.blogEntries\")\n"
+"            .setHint(\"org.hibernate.cacheable\", true)\n"
+"            .getSingleResult();\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+"@Name(\"blog\")\n"
+"@Scope(ScopeType.STATELESS)\n"
+"public class BlogService \n"
+"{\n"
+"   \n"
+"   @In\n"
+"   private EntityManager entityManager;\n"
+"  \n"
+"   @Unwrap\n"
+"   public Blog getBlog()\n"
+"   {\n"
+"      return (Blog) entityManager.createQuery(\"from Blog b left join fetch "
+"b.blogEntries\")\n"
+"            .setHint(\"org.hibernate.cacheable\", true)\n"
+"            .getSingleResult();\n"
+"   }\n"
+"\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:1225
+#, no-c-format
+msgid ""
+"This component uses a <emphasis>seam-managed persistence context</emphasis>. "
+"Unlike the other examples we&#39;ve seen, this persistence context is "
+"managed by Seam, instead of by the EJB3 container. The persistence context "
+"spans the entire web request, allowing us to avoid any exceptions that occur "
+"when accessing unfetched associations in the view."
+msgstr ""
+"这个组件使用一个 <emphasis>Seam 管理的持久化上下文</emphasis>。不像其他的例"
+"子,这个持久化上下文由 Seam 而不是 EJB3 容器管理。这个持久化上下文在整个 web "
+"请求都有效,允许我们避免任何在访问视图里为获取的关联时发生的异常。 "
+
+#. Tag: para
+#: Tutorial.xml:1230
+#, no-c-format
+msgid ""
+"The <literal>@Unwrap</literal> annotation tells Seam to provide the return "
+"value of the method&mdash;the <literal>Blog</literal>&mdash;instead of the "
+"actual <literal>BlogService</literal> component to clients. This is the Seam "
+"<emphasis>manager component pattern</emphasis>."
+msgstr ""
+"<literal>@Unwrap</literal> 注解告诉 Seam 提供方法&mdash;<literal>Blog</"
+"literal>&mdash;而不是实际的 <literal>BlogService</literal> 组件的返回值给客"
+"户。这是 Seam 的<emphasis>管理者组件模式(manager component pattern)</"
+"emphasis>。"
+
+#. Tag: para
+#: Tutorial.xml:1237
+#, no-c-format
+msgid ""
+"This is good so far, but what about bookmarking the result of form "
+"submissions, such as a search results page?"
+msgstr "到目前为止,一切都还不错。但将表单的提交如搜索结果页面加人标签会怎样?"
+
+#. Tag: title
+#: Tutorial.xml:1243
+#, no-c-format
+msgid "Bookmarkable search results page"
+msgstr "可加入标签的搜索结果页面"
+
+#. Tag: para
+#: Tutorial.xml:1244
+#, no-c-format
+msgid ""
+"The blog example has a tiny form in the top right of each page that allows "
+"the user to search for blog entries. This is defined in a file, "
+"<literal>menu.xhtml</literal>, included by the facelets template, "
+"<literal>template.xhtml</literal>:"
+msgstr ""
+"blog 示例程序在每个页面的右上角有一个小小的表单,它允许用户搜索 blog 条目。这"
+"是在一个叫 <literal>menu.xhtml</literal> 的文件里定义的,它包含在 facelets 模"
+"板 <literal>template.xhtml</literal> 里:"
+
+#. Tag: programlisting
+#: Tutorial.xml:1247
+#, no-c-format
+msgid ""
+"&lt;div id=\"search\"&gt;\n"
+"   &lt;h:form&gt;\n"
+"      &lt;h:inputText value=\"#{searchAction.searchPattern}\"/&gt;\n"
+"      &lt;h:commandButton value=\"Search\" action=\"/search.xhtml\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+"&lt;div id=\"search\"&gt;\n"
+"   &lt;h:form&gt;\n"
+"      &lt;h:inputText value=\"#{searchAction.searchPattern}\"/&gt;\n"
+"      &lt;h:commandButton value=\"Search\" action=\"/search.xhtml\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/div&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1248
+#, no-c-format
+msgid ""
+"To implement a bookmarkable search results page, we need to perform a "
+"browser redirect after processing the search form submission. Because we "
+"used the JSF view id as the action outcome, Seam automatically redirects to "
+"the view id when the form is submitted. Alternatively, we could have defined "
+"a navigation rule like this:"
+msgstr ""
+"要实现可加入标签的搜索结果页面,我们需要在处理搜索表单提交后执行浏览器的重定"
+"向。因为我们把 JSF 的 view id 作为 action 结果使用,当表单被提交时,Seam 会自"
+"动的重定向到这个 view id。或者,我们可以定义如下的一个 navigation rule:"
+
+#. Tag: programlisting
+#: Tutorial.xml:1251
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"   &lt;navigation-case&gt;\n"
+"      &lt;from-outcome&gt;searchResults&lt;/from-outcome&gt;\n"
+"      &lt;to-view-id&gt;/search.xhtml&lt;/to-view-id&gt;\n"
+"      &lt;redirect/&gt;\n"
+"   &lt;/navigation-case&gt;\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+"&lt;navigation-rule&gt;\n"
+"   &lt;navigation-case&gt;\n"
+"      &lt;from-outcome&gt;searchResults&lt;/from-outcome&gt;\n"
+"      &lt;to-view-id&gt;/search.xhtml&lt;/to-view-id&gt;\n"
+"      &lt;redirect/&gt;\n"
+"   &lt;/navigation-case&gt;\n"
+"&lt;/navigation-rule&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1252
+#, no-c-format
+msgid "Then the form would have looked like this:"
+msgstr "然后,这个表单将类似于:"
+
+#. Tag: programlisting
+#: Tutorial.xml:1255
+#, no-c-format
+msgid ""
+"&lt;div id=\"search\"&gt;\n"
+"   &lt;h:form&gt;\n"
+"      &lt;h:inputText value=\"#{searchAction.searchPattern}\"/&gt;\n"
+"      &lt;h:commandButton value=\"Search\" action=\"searchResults\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+"&lt;div id=\"search\"&gt;\n"
+"   &lt;h:form&gt;\n"
+"      &lt;h:inputText value=\"#{searchAction.searchPattern}\"/&gt;\n"
+"      &lt;h:commandButton value=\"Search\" action=\"searchResults\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/div&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1256
+#, no-c-format
+msgid ""
+"But when we redirect, we need to include the values submitted with the form "
+"as request parameters, to get a bookmarkable URL like <literal>http://"
+"localhost:8080/seam-blog/search.seam?searchPattern=seam</literal>. JSF does "
+"not provide an easy way to do this, but Seam does. We use a Seam "
+"<emphasis>page parameter</emphasis>, defined in <literal>WEB-INF/pages.xml</"
+"literal>:"
+msgstr ""
+"但当我们进行重定向时,我们需要包括作为表单请求参数提交的值,这样才能得到可加"
+"入标签的 URL,如 <literal>http://localhost:8080/seam-blog/search.seam?"
+"searchPattern=seam</literal>。JSF 并没有提供容易的途径来实现这一点,但 Seam "
+"提供。我们可以使用在 <literal>WEB-INF/pages.xml</literal> 里定义的 Seam 的"
+"<emphasis>page parameter</emphasis>:"
+
+#. Tag: programlisting
+#: Tutorial.xml:1259
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   &lt;page view-id=\"/search.xhtml\"&gt;\n"
+"      &lt;param name=\"searchPattern\" value=\"#{searchService.searchPattern}"
+"\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"   &lt;page view-id=\"/search.xhtml\"&gt;\n"
+"      &lt;param name=\"searchPattern\" value=\"#{searchService.searchPattern}"
+"\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   ...\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1260
+#, no-c-format
+msgid ""
+"This tells Seam to include the value of <literal>#{searchService."
+"searchPattern}</literal> as a request parameter named "
+"<literal>searchPattern</literal> when redirecting to the page, and then re-"
+"apply the value of that parameter to the model before rendering the page."
+msgstr ""
+"这告诉 Seam 在重定向到此页面时,包括作为请求参数 <literal>searchPattern</"
+"literal> 的 <literal>#{searchService.searchPattern}</literal> 的值,然后在显"
+"示该页面之前重新应用该参数的值。"
+
+#. Tag: para
+#: Tutorial.xml:1263
+#, no-c-format
+msgid "The redirect takes us to the <literal>search.xhtml</literal> page:"
+msgstr "重定向至 <literal>search.xhtml</literal> 页面:"
+
+#. Tag: programlisting
+#: Tutorial.xml:1266
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{searchResults}\" var=\"blogEntry\"&gt;\n"
+"   &lt;h:column&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:outputLink value=\"entry.seam\"&gt;\n"
+"            &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"            #{blogEntry.title}\n"
+"         &lt;/h:outputLink&gt;\n"
+"         posted on \n"
+"         &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"            &lt;f:convertDateTime timeZone=\"#{blog.timeZone}\" locale=\"#"
+"{blog.locale}\" type=\"both\"/&gt;\n"
+"         &lt;/h:outputText&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+"&lt;h:dataTable value=\"#{searchResults}\" var=\"blogEntry\"&gt;\n"
+"   &lt;h:column&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:outputLink value=\"entry.seam\"&gt;\n"
+"            &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"            #{blogEntry.title}\n"
+"         &lt;/h:outputLink&gt;\n"
+"         posted on \n"
+"         &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"            &lt;f:convertDateTime timeZone=\"#{blog.timeZone}\" locale=\"#"
+"{blog.locale}\" type=\"both\"/&gt;\n"
+"         &lt;/h:outputText&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1267
+#, no-c-format
+msgid ""
+"Which again uses \"pull\"-style MVC to retrieve the actual search results:"
+msgstr "再次使用 \"pull\" 风格的 MVC 来获取实际的查询结果:"
+
+#. Tag: programlisting
+#: Tutorial.xml:1270
+#, no-c-format
+msgid ""
+"@Name(\"searchService\")\n"
+"public class SearchService \n"
+"{\n"
+"   \n"
+"   @In\n"
+"   private EntityManager entityManager;\n"
+"   \n"
+"   private String searchPattern;\n"
+"   \n"
+"   @Factory(\"searchResults\")\n"
+"   public List&lt;BlogEntry&gt; getSearchResults()\n"
+"   {\n"
+"      if (searchPattern==null)\n"
+"      {\n"
+"         return null;\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return entityManager.createQuery(\"select be from BlogEntry be "
+"where lower(be.title) \n"
+"                               like :searchPattern or lower(be.body) like :"
+"searchPattern \n"
+"                               order by be.date desc\")\n"
+"               .setParameter( \"searchPattern\", getSqlSearchPattern() )\n"
+"               .setMaxResults(100)\n"
+"               .getResultList();\n"
+"      }\n"
+"   }\n"
+"\n"
+"   private String getSqlSearchPattern()\n"
+"   {\n"
+"      return searchPattern==null ? \"\" : &#39;%&#39; + \n"
+"        searchPattern.toLowerCase().replace(&#39;*&#39;, &#39;%&#39;).replace"
+"(&#39;?&#39;, &#39;_&#39;) \n"
+"           + &#39;%&#39;;\n"
+"   }\n"
+"\n"
+"   public String getSearchPattern()\n"
+"   {\n"
+"      return searchPattern;\n"
+"   }\n"
+"\n"
+"   public void setSearchPattern(String searchPattern)\n"
+"   {\n"
+"      this.searchPattern = searchPattern;\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+"@Name(\"searchService\")\n"
+"public class SearchService \n"
+"{\n"
+"   \n"
+"   @In\n"
+"   private EntityManager entityManager;\n"
+"   \n"
+"   private String searchPattern;\n"
+"   \n"
+"   @Factory(\"searchResults\")\n"
+"   public List&lt;BlogEntry&gt; getSearchResults()\n"
+"   {\n"
+"      if (searchPattern==null)\n"
+"      {\n"
+"         return null;\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return entityManager.createQuery(\"select be from BlogEntry be "
+"where lower(be.title) \n"
+"                               like :searchPattern or lower(be.body) like :"
+"searchPattern \n"
+"                               order by be.date desc\")\n"
+"               .setParameter( \"searchPattern\", getSqlSearchPattern() )\n"
+"               .setMaxResults(100)\n"
+"               .getResultList();\n"
+"      }\n"
+"   }\n"
+"\n"
+"   private String getSqlSearchPattern()\n"
+"   {\n"
+"      return searchPattern==null ? \"\" : &#39;%&#39; + \n"
+"        searchPattern.toLowerCase().replace(&#39;*&#39;, &#39;%&#39;).replace"
+"(&#39;?&#39;, &#39;_&#39;) \n"
+"           + &#39;%&#39;;\n"
+"   }\n"
+"\n"
+"   public String getSearchPattern()\n"
+"   {\n"
+"      return searchPattern;\n"
+"   }\n"
+"\n"
+"   public void setSearchPattern(String searchPattern)\n"
+"   {\n"
+"      this.searchPattern = searchPattern;\n"
+"   }\n"
+"\n"
+"}"
+
+#. Tag: title
+#: Tutorial.xml:1275
+#, no-c-format
+msgid "Using \"push\"-style MVC in a RESTful application"
+msgstr "在 RESTful 应用程序里使用 \"push\" 风格的 MVC"
+
+#. Tag: para
+#: Tutorial.xml:1276
+#, no-c-format
+msgid ""
+"Very occasionally, it makes more sense to use push-style MVC for processing "
+"RESTful pages, and so Seam provides the notion of a <emphasis>page action</"
+"emphasis>. The Blog example uses a page action for the blog entry page, "
+"<literal>entry.xhtml</literal>. Note that this is a little bit contrived, it "
+"would have been easier to use pull-style MVC here as well."
+msgstr ""
+"在很偶然的情况下,使用 push 风格的 MVC 来处理 RESTful 页面才有作用,所以 "
+"Seam 提供了 <emphasis>page action</emphasis> 标记。Blog 示例将 page action 用"
+"于 blog 的入口页面 <literal>entry.xhtml</literal>。注意,这并非自然的方法,在"
+"这里使用 pull 风格的 MVC 会更加容易。"
+
+#. Tag: para
+#: Tutorial.xml:1279
+#, no-c-format
+msgid ""
+"The <literal>entryAction</literal> component works much like an action class "
+"in a traditional push-MVC action-oriented framework like Struts:"
+msgstr ""
+"<literal>entryAction</literal> 组件更象传统的面向 push-MVC action 的框架如 "
+"Struts 里的 action 类:"
+
+#. Tag: programlisting
+#: Tutorial.xml:1282
+#, no-c-format
+msgid ""
+"@Name(\"entryAction\")\n"
+"@Scope(STATELESS)\n"
+"public class EntryAction\n"
+"{\n"
+"   @In(create=true) \n"
+"   private Blog blog;\n"
+"   \n"
+"   @Out\n"
+"   private BlogEntry blogEntry;\n"
+"   \n"
+"   public void loadBlogEntry(String id) throws EntryNotFoundException\n"
+"   {\n"
+"      blogEntry = blog.getBlogEntry(id);\n"
+"      if (blogEntry==null) throw new EntryNotFoundException(id);\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+"@Name(\"entryAction\")\n"
+"@Scope(STATELESS)\n"
+"public class EntryAction\n"
+"{\n"
+"   @In(create=true) \n"
+"   private Blog blog;\n"
+"   \n"
+"   @Out\n"
+"   private BlogEntry blogEntry;\n"
+"   \n"
+"   public void loadBlogEntry(String id) throws EntryNotFoundException\n"
+"   {\n"
+"      blogEntry = blog.getBlogEntry(id);\n"
+"      if (blogEntry==null) throw new EntryNotFoundException(id);\n"
+"   }\n"
+"   \n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:1283
+#, no-c-format
+msgid "Page actions are also declared in <literal>pages.xml</literal>:"
+msgstr "Page action 也在 <literal>pages.xml</literal> 里进行声明:"
+
+#. Tag: programlisting
+#: Tutorial.xml:1286
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   ...\n"
+"\n"
+"   &lt;page view-id=\"/entry.xhtml\" action=\"#{entryAction.loadBlogEntry"
+"(blogEntry.id)}\"&gt;\n"
+"      &lt;param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"\n"
+"   &lt;page view-id=\"/post.xhtml\" action=\"#{loginAction.challenge}\"/"
+"&gt;\n"
+"\n"
+"   &lt;page view-id=\"*\" action=\"#{blog.hitCount.hit}\"/&gt;\n"
+"\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"   ...\n"
+"\n"
+"   &lt;page view-id=\"/entry.xhtml\" action=\"#{entryAction.loadBlogEntry"
+"(blogEntry.id)}\"&gt;\n"
+"      &lt;param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"\n"
+"   &lt;page view-id=\"/post.xhtml\" action=\"#{loginAction.challenge}\"/"
+"&gt;\n"
+"\n"
+"   &lt;page view-id=\"*\" action=\"#{blog.hitCount.hit}\"/&gt;\n"
+"\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1287
+#, no-c-format
+msgid ""
+"Notice that the example is using page actions for some other "
+"functionality&mdash;the login challenge, and the pageview counter. Also "
+"notice the use of a parameter in the page action method binding. This is not "
+"a standard feature of JSF EL, but Seam lets you use it, not just for page "
+"actions, but also in JSF method bindings."
+msgstr ""
+"请注意,这个例子的某些功能使用了 page action&mdash;login challenge 和 "
+"pageview counter。也请注意在 page action 方法绑定里对参数的使用。这不是标准"
+"的 JSF EL 特征,但 Seam 让你在 page action 和 JSF 方法绑定里都可以使用它。"
+
+#. Tag: para
+#: Tutorial.xml:1290
+#, no-c-format
+msgid ""
+"When the <literal>entry.xhtml</literal> page is requested, Seam first binds "
+"the page parameter <literal>blogEntryId</literal> to the model, then runs "
+"the page action, which retrieves the needed data&mdash;the "
+"<literal>blogEntry</literal>&mdash;and places it in the Seam event context. "
+"Finally, the following is rendered:"
+msgstr ""
+"当 <literal>entry.xhtml</literal> 页面被请求时,Seam 首先将页面参数 "
+"<literal>blogEntryId</literal> 绑定到模型,然后运行这个 page action,这将获取"
+"所需的数据&mdash;<literal>blogEntry</literal>&mdash;且将它放入 Seam 的 event "
+"上下文里。最后,显示下面的内容:"
+
+#. Tag: programlisting
+#: Tutorial.xml:1293
+#, no-c-format
+msgid ""
+"&lt;div class=\"blogEntry\"&gt;\n"
+"   &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"   &lt;div&gt;\n"
+"      &lt;h:outputText escape=\"false\" value=\"#{blogEntry.body}\"/&gt;\n"
+"   &lt;/div&gt;\n"
+"   &lt;p&gt;\n"
+"      [Posted on&#160;\n"
+"      &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"         &lt;f:convertDateTime timezone=\"#{blog.timeZone}\" locale=\"#{blog."
+"locale}\" type=\"both\"/&gt;\n"
+"      &lt;/h:outputText&gt;]\n"
+"   &lt;/p&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+"&lt;div class=\"blogEntry\"&gt;\n"
+"   &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"   &lt;div&gt;\n"
+"      &lt;h:outputText escape=\"false\" value=\"#{blogEntry.body}\"/&gt;\n"
+"   &lt;/div&gt;\n"
+"   &lt;p&gt;\n"
+"      [Posted on&#160;\n"
+"      &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"         &lt;f:convertDateTime timezone=\"#{blog.timeZone}\" locale=\"#{blog."
+"locale}\" type=\"both\"/&gt;\n"
+"      &lt;/h:outputText&gt;]\n"
+"   &lt;/p&gt;\n"
+"&lt;/div&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1294
+#, no-c-format
+msgid ""
+"If the blog entry is not found in the database, the "
+"<literal>EntryNotFoundException</literal> exception is thrown. We want this "
+"exception to result in a 404 error, not a 505, so we annotate the exception "
+"class:"
+msgstr ""
+"如果在数据库里找不到 blog entry,<literal>EntryNotFoundException</literal> 异"
+"常将被抛出。我们想要这个异常导致 404 而不是 505 错误,所以我们将这个异常类进"
+"行注解:"
+
+#. Tag: programlisting
+#: Tutorial.xml:1297
+#, no-c-format
+msgid ""
+"@ApplicationException(rollback=true)\n"
+"@HttpError(errorCode=HttpServletResponse.SC_NOT_FOUND)\n"
+"public class EntryNotFoundException extends Exception\n"
+"{\n"
+"   EntryNotFoundException(String id)\n"
+"   {\n"
+"      super(\"entry not found: \" + id);\n"
+"   }\n"
+"}"
+msgstr ""
+"@ApplicationException(rollback=true)\n"
+"@HttpError(errorCode=HttpServletResponse.SC_NOT_FOUND)\n"
+"public class EntryNotFoundException extends Exception\n"
+"{\n"
+"   EntryNotFoundException(String id)\n"
+"   {\n"
+"      super(\"entry not found: \" + id);\n"
+"   }\n"
+"}"
+
+#. Tag: para
+#: Tutorial.xml:1298
+#, no-c-format
+msgid ""
+"An alternative implementation of the example does not use the parameter in "
+"the method binding:"
+msgstr "这个例子的另外一个实现没有使用此方法绑定里的参数:"
+
+#. Tag: programlisting
+#: Tutorial.xml:1301
+#, no-c-format
+msgid ""
+"@Name(\"entryAction\")\n"
+"@Scope(STATELESS)\n"
+"public class EntryAction\n"
+"{\n"
+"   @In(create=true) \n"
+"   private Blog blog;\n"
+"   \n"
+"   @In @Out\n"
+"   private BlogEntry blogEntry;\n"
+"   \n"
+"   public void loadBlogEntry() throws EntryNotFoundException\n"
+"   {\n"
+"      blogEntry = blog.getBlogEntry( blogEntry.getId() );\n"
+"      if (blogEntry==null) throw new EntryNotFoundException(id);\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+"@Name(\"entryAction\")\n"
+"@Scope(STATELESS)\n"
+"public class EntryAction\n"
+"{\n"
+"   @In(create=true) \n"
+"   private Blog blog;\n"
+"   \n"
+"   @In @Out\n"
+"   private BlogEntry blogEntry;\n"
+"   \n"
+"   public void loadBlogEntry() throws EntryNotFoundException\n"
+"   {\n"
+"      blogEntry = blog.getBlogEntry( blogEntry.getId() );\n"
+"      if (blogEntry==null) throw new EntryNotFoundException(id);\n"
+"   }\n"
+"   \n"
+"}"
+
+#. Tag: programlisting
+#: Tutorial.xml:1302
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   ...\n"
+"\n"
+"   &lt;page view-id=\"/entry.xhtml\" action=\"#{entryAction.loadBlogEntry}"
+"\"&gt;\n"
+"      &lt;param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+"&lt;pages&gt;\n"
+"   ...\n"
+"\n"
+"   &lt;page view-id=\"/entry.xhtml\" action=\"#{entryAction.loadBlogEntry}"
+"\"&gt;\n"
+"      &lt;param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   ...\n"
+"&lt;/pages&gt;"
+
+#. Tag: para
+#: Tutorial.xml:1303
+#, no-c-format
+msgid "It is a matter of taste which implementation you prefer."
+msgstr "你可以根据喜好选择其中一种实现方法。"

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Validation.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Validation.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Validation.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,597 @@
+# translation of Validation.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Xi HUANG <xhuang at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Validation\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2007-10-08 11:30+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Validation.xml:6
+#, no-c-format
+msgid "JSF form validation in Seam"
+msgstr "Seam 的 JSF 表单检验"
+
+#. Tag: para
+#: Validation.xml:7
+#, no-c-format
+msgid "In plain JSF, validation is defined in the view:"
+msgstr "在普通 JSF 里,检验是在视图里进行定义的:"
+
+#. Tag: programlisting
+#: Validation.xml:10
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;h:messages/&gt;\n"
+"\n"
+"    &lt;div&gt;\n"
+"        Country:\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;my:validateCountry/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    \n"
+"    &lt;div&gt;\n"
+"        Zip code:\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;my:validateZip/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"\n"
+"    &lt;h:commandButton/&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h:form&gt;\n"
+"    &lt;h:messages/&gt;\n"
+"\n"
+"    &lt;div&gt;\n"
+"        Country:\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;my:validateCountry/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    \n"
+"    &lt;div&gt;\n"
+"        Zip code:\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;my:validateZip/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"\n"
+"    &lt;h:commandButton/&gt;\n"
+"&lt;/h:form&gt;"
+
+#. Tag: para
+#: Validation.xml:11
+#, no-c-format
+msgid ""
+"In practice, this approach usually violates DRY, since most \"validation\" "
+"actually enforces constraints that are part of the data model, and exist all "
+"the way down to the database schema definition. Seam provides support for "
+"model-based constraints defined using Hibernate Validator."
+msgstr ""
+"在实践中,这个方法通常违背了 DRY,因为大多数“检验”实际上都应用了作为数据模型"
+"一部分且存在于数据库模式定义里的约束。Seam 提供了对用 Hibernate Validator 定"
+"义的基于模型的约束的支持。"
+
+#. Tag: para
+#: Validation.xml:14
+#, no-c-format
+msgid ""
+"Let&#39;s start by defining our constraints, on our <literal>Location</"
+"literal> class:"
+msgstr "让我们从在 <literal>Location</literal> 类里定义约束开始:"
+
+#. Tag: programlisting
+#: Validation.xml:17
+#, no-c-format
+msgid ""
+"public class Location {\n"
+"    private String country;\n"
+"    private String zip;\n"
+"    \n"
+"    @NotNull\n"
+"    @Length(max=30)\n"
+"    public String getCountry() { return country; }\n"
+"    public void setCountry(String c) { country = c; }\n"
+"\n"
+"    @NotNull\n"
+"    @Length(max=6)\n"
+"    @Pattern(\"^\\d*$\")\n"
+"    public String getZip() { return zip; }\n"
+"    public void setZip(String z) { zip = z; }\n"
+"}"
+msgstr ""
+"public class Location {\n"
+"    private String country;\n"
+"    private String zip;\n"
+"    \n"
+"    @NotNull\n"
+"    @Length(max=30)\n"
+"    public String getCountry() { return country; }\n"
+"    public void setCountry(String c) { country = c; }\n"
+"\n"
+"    @NotNull\n"
+"    @Length(max=6)\n"
+"    @Pattern(\"^\\d*$\")\n"
+"    public String getZip() { return zip; }\n"
+"    public void setZip(String z) { zip = z; }\n"
+"}"
+
+#. Tag: para
+#: Validation.xml:18
+#, no-c-format
+msgid ""
+"Well, that&#39;s a decent first cut, but in practice it might be more "
+"elegant to use custom constraints instead of the ones built into Hibernate "
+"Validator:"
+msgstr ""
+"这只是不错的第一步,在实践中使用自定义而不是 Hibernate Validator 内置的约束可"
+"能会更加优雅:"
+
+#. Tag: programlisting
+#: Validation.xml:21
+#, no-c-format
+msgid ""
+"public class Location {\n"
+"    private String country;\n"
+"    private String zip;\n"
+"    \n"
+"    @NotNull\n"
+"    @Country\n"
+"    public String getCountry() { return country; }\n"
+"    public void setCountry(String c) { country = c; }\n"
+"\n"
+"    @NotNull\n"
+"    @ZipCode\n"
+"    public String getZip() { return zip; }\n"
+"    public void setZip(String z) { zip = z; }\n"
+"}"
+msgstr ""
+"public class Location {\n"
+"    private String country;\n"
+"    private String zip;\n"
+"    \n"
+"    @NotNull\n"
+"    @Country\n"
+"    public String getCountry() { return country; }\n"
+"    public void setCountry(String c) { country = c; }\n"
+"\n"
+"    @NotNull\n"
+"    @ZipCode\n"
+"    public String getZip() { return zip; }\n"
+"    public void setZip(String z) { zip = z; }\n"
+"}"
+
+#. Tag: para
+#: Validation.xml:22
+#, no-c-format
+msgid ""
+"Whichever route we take, we no longer need to specify the type of validation "
+"to be used in the JSF page. Instead, we can use <literal>&lt;s:validate&gt;</"
+"literal> to validate against the constraint defined on the model object."
+msgstr ""
+"不管采取哪种方法,我们都不再需要指定 JSF 页面里使用的检验类型。相反,我们可以"
+"使用 <literal>&lt;s:validate&gt;</literal> 来检验模型对象里定义的约束。"
+
+#. Tag: programlisting
+#: Validation.xml:25
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;h:messages/&gt;\n"
+"\n"
+"    &lt;div&gt;\n"
+"        Country:\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;s:validate/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    \n"
+"    &lt;div&gt;\n"
+"        Zip code:\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;s:validate/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    \n"
+"    &lt;h:commandButton/&gt;\n"
+"\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h:form&gt;\n"
+"    &lt;h:messages/&gt;\n"
+"\n"
+"    &lt;div&gt;\n"
+"        Country:\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;s:validate/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    \n"
+"    &lt;div&gt;\n"
+"        Zip code:\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;s:validate/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    \n"
+"    &lt;h:commandButton/&gt;\n"
+"\n"
+"&lt;/h:form&gt;"
+
+#. Tag: para
+#: Validation.xml:26
+#, no-c-format
+msgid ""
+"<emphasis>Note:</emphasis> specifying <literal>@NotNull</literal> on the "
+"model does <emphasis>not</emphasis> eliminate the requirement for "
+"<literal>required=\"true\"</literal> to appear on the control! This is due "
+"to a limitation of the JSF validation architecture."
+msgstr ""
+"<emphasis>注意:</emphasis> 在模型里指定 <literal>@NotNull</literal> "
+"<emphasis>并没有</emphasis> 消除对 <literal>required=\"true\"</literal> 的需"
+"要!这是由于 JSF 检验架构的限制所引起的。"
+
+#. Tag: para
+#: Validation.xml:29
+#, no-c-format
+msgid ""
+"This approach <emphasis>defines</emphasis> constraints on the model, and "
+"<emphasis>presents</emphasis> constraint violations in the view&mdash;a "
+"significantly better design."
+msgstr ""
+"这个方法<emphasis>定义了</emphasis>模型的约束,且视图里<emphasis>出现</"
+"emphasis>了和违背约束相关的显示&mdash;这是大大改进了的设计。"
+
+#. Tag: para
+#: Validation.xml:32
+#, no-c-format
+msgid ""
+"However, it is not much less verbose than what we started with, so let&#39;s "
+"try <literal>&lt;s:validateAll&gt;</literal>:"
+msgstr ""
+"然而,这个版本并没有比开始时精简许多,所以让我们试一下 <literal>&lt;s:"
+"validateAll&gt;</literal>:"
+
+#. Tag: programlisting
+#: Validation.xml:35
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    \n"
+"    &lt;h:messages/&gt;\n"
+"\n"
+"    &lt;s:validateAll&gt;\n"
+"\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;h:inputText value=\"#{location.country}\" required=\"true\"/"
+"&gt;\n"
+"        &lt;/div&gt;\n"
+"\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/"
+"&gt;\n"
+"        &lt;/div&gt;\n"
+"\n"
+"        &lt;h:commandButton/&gt;\n"
+"\n"
+"    &lt;/s:validateAll&gt;\n"
+"\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h:form&gt;\n"
+"    \n"
+"    &lt;h:messages/&gt;\n"
+"\n"
+"    &lt;s:validateAll&gt;\n"
+"\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;h:inputText value=\"#{location.country}\" required=\"true\"/"
+"&gt;\n"
+"        &lt;/div&gt;\n"
+"\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/"
+"&gt;\n"
+"        &lt;/div&gt;\n"
+"\n"
+"        &lt;h:commandButton/&gt;\n"
+"\n"
+"    &lt;/s:validateAll&gt;\n"
+"\n"
+"&lt;/h:form&gt;"
+
+#. Tag: para
+#: Validation.xml:36
+#, no-c-format
+msgid ""
+"This tag simply adds an <literal>&lt;s:validate&gt;</literal> to every input "
+"in the form. For a large form, it can save a lot of typing!"
+msgstr ""
+"这个标签简单地在表单里的每个输入项加入了 <literal>&lt;s:validate&gt;</"
+"literal>。对于大的表单,这节省了大量的键入!"
+
+#. Tag: para
+#: Validation.xml:39
+#, no-c-format
+msgid ""
+"Now we need to do something about displaying feedback to the user when "
+"validation fails. Currently we are displaying all messages at the top of the "
+"form. What we would really like to do is display the message next to the "
+"field with the error (this is possible in plain JSF), highlight the field "
+"and label (this is not possible) and, for good measure, display some image "
+"next the the field (also not possible). We also want to display a little "
+"colored asterisk next to the label for each required form field."
+msgstr ""
+"现在我们需要为在检验失败后给用户显示反馈。目前我们在表单的顶部显示所有信息。"
+"我们真正希望的是在输入字段的后面显示错误信息(这在普通 JSF 里可以实现)、高亮"
+"显示该字段(这不可能实现),且在该字段后显示某个图片(也不可能)。我们也想在"
+"每个必须填写字段的标签后面显示带颜色的星号。"
+
+#. Tag: para
+#: Validation.xml:42
+#, no-c-format
+msgid ""
+"That&#39;s quite a lot of functionality we need for each field of our form. "
+"We wouldn&#39;t want to have to specify higlighting and the layout of the "
+"image, message and input field for every field on the form. So, instead, "
+"we&#39;ll specify the common layout in a facelets template:"
+msgstr ""
+"表单上的每个字段都需要具有很多功能。但我们不想为表单上的每个字段高亮显示图"
+"片、信息和输入字段或指定样式。所以,我们将在 facelets 模板里置公用的样式。"
+
+#. Tag: programlisting
+#: Validation.xml:45
+#, no-c-format
+msgid ""
+"&lt;ui:composition xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"                xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"                xmlns:h=\"http://java.sun.com/jsf/html\"\n"
+"                xmlns:f=\"http://java.sun.com/jsf/core\"\n"
+"                xmlns:s=\"http://jboss.com/products/seam/taglib\"&gt;\n"
+"                 \n"
+"    &lt;div&gt;\n"
+"    \n"
+"        &lt;s:label styleClass=\"#{invalid?&#39;error&#39;:&#39;&#39;}"
+"\"&gt;\n"
+"            &lt;ui:insert name=\"label\"/&gt;\n"
+"            &lt;s:span styleClass=\"required\" rendered=\"#{required}\"&gt;"
+"*&lt;/s:span&gt;\n"
+"        &lt;/s:label&gt;\n"
+"        \n"
+"        &lt;span class=\"#{invalid?&#39;error&#39;:&#39;&#39;}\"&gt;\n"
+"            &lt;h:graphicImage src=\"img/error.gif\" rendered=\"#{invalid}\"/"
+"&gt;\n"
+"            &lt;s:validateAll&gt;\n"
+"                &lt;ui:insert/&gt;\n"
+"            &lt;/s:validateAll&gt;\n"
+"        &lt;/span&gt;\n"
+"        \n"
+"        &lt;s:message styleClass=\"error\"/&gt;\n"
+"        \n"
+"    &lt;/div&gt;\n"
+"    \n"
+"&lt;/ui:composition&gt;"
+msgstr ""
+"&lt;ui:composition xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"                xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"                xmlns:h=\"http://java.sun.com/jsf/html\"\n"
+"                xmlns:f=\"http://java.sun.com/jsf/core\"\n"
+"                xmlns:s=\"http://jboss.com/products/seam/taglib\"&gt;\n"
+"                 \n"
+"    &lt;div&gt;\n"
+"    \n"
+"        &lt;s:label styleClass=\"#{invalid?&#39;error&#39;:&#39;&#39;}"
+"\"&gt;\n"
+"            &lt;ui:insert name=\"label\"/&gt;\n"
+"            &lt;s:span styleClass=\"required\" rendered=\"#{required}\"&gt;"
+"*&lt;/s:span&gt;\n"
+"        &lt;/s:label&gt;\n"
+"        \n"
+"        &lt;span class=\"#{invalid?&#39;error&#39;:&#39;&#39;}\"&gt;\n"
+"            &lt;h:graphicImage src=\"img/error.gif\" rendered=\"#{invalid}\"/"
+"&gt;\n"
+"            &lt;s:validateAll&gt;\n"
+"                &lt;ui:insert/&gt;\n"
+"            &lt;/s:validateAll&gt;\n"
+"        &lt;/span&gt;\n"
+"        \n"
+"        &lt;s:message styleClass=\"error\"/&gt;\n"
+"        \n"
+"    &lt;/div&gt;\n"
+"    \n"
+"&lt;/ui:composition&gt;"
+
+#. Tag: para
+#: Validation.xml:46
+#, no-c-format
+msgid ""
+"We can include this template for each of our form fields using <literal>&lt;"
+"s:decorate&gt;</literal>."
+msgstr ""
+"我们可以用 <literal>&lt;s:decorate&gt;</literal> 为每个表单字段应用模板。"
+
+#. Tag: programlisting
+#: Validation.xml:49
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"\n"
+"    &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"\n"
+"    &lt;s:decorate template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Country:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"/"
+"&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"    \n"
+"    &lt;s:decorate template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Zip code:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"\n"
+"    &lt;h:commandButton/&gt;\n"
+"\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h:form&gt;\n"
+"\n"
+"    &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"\n"
+"    &lt;s:decorate template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Country:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"/"
+"&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"    \n"
+"    &lt;s:decorate template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Zip code:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"\n"
+"    &lt;h:commandButton/&gt;\n"
+"\n"
+"&lt;/h:form&gt;"
+
+#. Tag: para
+#: Validation.xml:50
+#, no-c-format
+msgid ""
+"Finally, we can use Ajax4JSF to display validation messages as the user is "
+"navigating around the form:"
+msgstr "最后,我们可以在用户输入时使用 Ajax4JSF 来显示检验信息:"
+
+#. Tag: programlisting
+#: Validation.xml:53
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"\n"
+"    &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"\n"
+"    &lt;s:decorate id=\"countryDecoration\" template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Country:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;a:support event=\"onblur\" reRender=\"countryDecoration\"/"
+"&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"    \n"
+"    &lt;s:decorate id=\"zipDecoration\" template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Zip code:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;a:support event=\"onblur\" reRender=\"zipDecoration\"/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"\n"
+"    &lt;h:commandButton/&gt;\n"
+"\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h:form&gt;\n"
+"\n"
+"    &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"\n"
+"    &lt;s:decorate id=\"countryDecoration\" template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Country:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;a:support event=\"onblur\" reRender=\"countryDecoration\"/"
+"&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"    \n"
+"    &lt;s:decorate id=\"zipDecoration\" template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Zip code:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;a:support event=\"onblur\" reRender=\"zipDecoration\"/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"\n"
+"    &lt;h:commandButton/&gt;\n"
+"\n"
+"&lt;/h:form&gt;"
+
+#. Tag: para
+#: Validation.xml:54
+#, no-c-format
+msgid ""
+"As a final note, it&#39;s better style to define explicit ids for important "
+"controls on the page, especially if you want to do automated testing for the "
+"UI, using some toolkit like Selenium. If you don&#39;t provide explicit ids, "
+"JSF will generate them, but the generated values will change if you change "
+"anything on the page."
+msgstr ""
+"最后要注意的是,为页面上的重要控件定义显性的 ID 是更好的风格,特别是当你需要"
+"使用某些工具(Selenium)自动化测试用户界面的时候。如果你不提供显性的 ID,JSF "
+"将生成它们,但如果你在页面进行了任何修改,这些值也会改变。"
+
+#. Tag: programlisting
+#: Validation.xml:57
+#, no-c-format
+msgid ""
+"&lt;h:form id=\"form\"&gt;\n"
+"\n"
+"    &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"\n"
+"    &lt;s:decorate id=\"countryDecoration\" template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Country:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText id=\"country\" value=\"#{location.country}\" "
+"required=\"true\"&gt;\n"
+"            &lt;a:support event=\"onblur\" reRender=\"countryDecoration\"/"
+"&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"    \n"
+"    &lt;s:decorate id=\"zipDecoration\" template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Zip code:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText id=\"zip\" value=\"#{location.zip}\" required=\"true"
+"\"&gt;\n"
+"            &lt;a:support event=\"onblur\" reRender=\"zipDecoration\"/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"\n"
+"    &lt;h:commandButton/&gt;\n"
+"\n"
+"&lt;/h:form&gt;"
+msgstr ""
+"&lt;h:form id=\"form\"&gt;\n"
+"\n"
+"    &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"\n"
+"    &lt;s:decorate id=\"countryDecoration\" template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Country:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText id=\"country\" value=\"#{location.country}\" "
+"required=\"true\"&gt;\n"
+"            &lt;a:support event=\"onblur\" reRender=\"countryDecoration\"/"
+"&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"    \n"
+"    &lt;s:decorate id=\"zipDecoration\" template=\"edit.xhtml\"&gt;\n"
+"        &lt;ui:define name=\"label\"&gt;Zip code:&lt;/ui:define&gt;\n"
+"        &lt;h:inputText id=\"zip\" value=\"#{location.zip}\" required=\"true"
+"\"&gt;\n"
+"            &lt;a:support event=\"onblur\" reRender=\"zipDecoration\"/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/s:decorate&gt;\n"
+"\n"
+"    &lt;h:commandButton/&gt;\n"
+"\n"
+"&lt;/h:form&gt;"

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Xml.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Xml.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-CN/Xml.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1257 @@
+# translation of Xml.po to
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+#
+# Automatically generated, 2007.
+# Xi HUANG <xhuang at redhat.com>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: Xml\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-22 00:58+0000\n"
+"PO-Revision-Date: 2007-10-08 11:11+1000\n"
+"Last-Translator: Xi HUANG <xhuang at redhat.com>\n"
+"Language-Team:  <en at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Tag: title
+#: Xml.xml:6
+#, no-c-format
+msgid "Configuring Seam components"
+msgstr " 配置 Seam 组件"
+
+#. Tag: para
+#: Xml.xml:7
+#, no-c-format
+msgid ""
+"The philosophy of minimizing XML-based configuration is extremely strong in "
+"Seam. Nevertheless, there are various reasons why we might want to configure "
+"a Seam component using XML: to isolate deployment-specific information from "
+"the Java code, to enable the creation of re-usable frameworks, to configure "
+"Seam&#39;s built-in functionality, etc. Seam provides two basic approaches "
+"to configuring components: configuration via property settings in a "
+"properties file or <literal>web.xml</literal>, and configuration via "
+"<literal>components.xml</literal>."
+msgstr ""
+"Seam 极其注重将基于 XML 的配置最小化。但是,我们可能仍有希望用 XML 配置 Seam "
+"组件的理由:把和部署相关的信息和 Java 代码隔离、启用可重用框架、配置 Seam 的"
+"内置功能等等。Seam 提供两个基本的方法来配置组件:在属性文件或 <literal>web."
+"xml</literal> 里设置属性,和通过 <literal>components.xml</literal> 进行配置。"
+
+#. Tag: title
+#: Xml.xml:10
+#, no-c-format
+msgid "Configuring components via property settings"
+msgstr "通过属性设置配置组件"
+
+#. Tag: para
+#: Xml.xml:11
+#, no-c-format
+msgid ""
+"Seam components may be provided with configuration properties either via "
+"servlet context parameters, or via a properties file named <literal>seam."
+"properties</literal> in the root of the classpath."
+msgstr ""
+"Seam 组件的配置属性可能通过 servlet 上下文参数,或者通过 classpath 根目录里名"
+"为 <literal>seam.properties</literal> 属性文件进行设置。"
+
+#. Tag: para
+#: Xml.xml:14
+#, no-c-format
+msgid ""
+"The configurable Seam component must expose JavaBeans-style property setter "
+"methods for the configurable attributes. If a seam component named "
+"<literal>com.jboss.myapp.settings</literal> has a setter method named "
+"<literal>setLocale()</literal>, we can provide a property named <literal>com."
+"jboss.myapp.settings.locale</literal> in the <literal>seam.properties</"
+"literal> file or as a servlet context parameter, and Seam will set the value "
+"of the <literal>locale</literal> attribute whenever it instantiates the "
+"component."
+msgstr ""
+"可配置的 Seam 组件必须向可配置属性开放 JavaBean 风格的属性 setter 方法。如果 "
+"seam 组件 <literal>com.jboss.myapp.settings</literal> 具有名为 "
+"<literal>setLocale()</literal> 的 setter 方法,我们可以在 <literal>seam."
+"properties</literal> 文件里提供名为 <literal>com.jboss.myapp.settings."
+"locale</literal> 的属性来作为 servlet 上下文属性,且 Seam 将在初始化该组件时"
+"设置 <literal>locale</literal> 属性的值。"
+
+#. Tag: para
+#: Xml.xml:17
+#, no-c-format
+msgid ""
+"The same mechanism is used to configure Seam itself. For example, to set the "
+"conversation timeout, we provide a value for <literal>org.jboss.seam.core."
+"manager.conversationTimeout</literal> in <literal>web.xml</literal> or "
+"<literal>seam.properties</literal>. (There is a built-in Seam component "
+"named <literal>org.jboss.seam.core.manager</literal> with a setter method "
+"named <literal>setConversationTimeout()</literal>.)"
+msgstr ""
+"相同的机制被用来配置 Seam 自己。例如,要设置 conversation 超时时间,我们设置 "
+"<literal>web.xml</literal> 或 <literal>seam.properties</literal> 里的 "
+"<literal>org.jboss.seam.core.manager.conversationTimeout</literal>。(也可以"
+"使用带有名为 <literal>setConversationTimeout()</literal> 的 setter 方法的内置"
+"的 Seam 组件 <literal>org.jboss.seam.core.manager</literal>)"
+
+#. Tag: title
+#: Xml.xml:20
+#, no-c-format
+msgid "Configuring components via components.xml"
+msgstr "通过 components.xml 配置组件"
+
+#. Tag: para
+#: Xml.xml:21
+#, no-c-format
+msgid ""
+"The <literal>components.xml</literal> file is a bit more powerful than "
+"property settings. It lets you:"
+msgstr ""
+"<literal>components.xml</literal> 文件比属性设置的功能更为强大。它让你:"
+
+#. Tag: para
+#: Xml.xml:26
+#, no-c-format
+msgid ""
+"Configure components that have been installed automatically&mdash;including "
+"both built-in components, and application components that have been "
+"annotated with the <literal>@Name</literal> annotation and picked up by "
+"Seam&#39;s deployment scanner."
+msgstr ""
+"配置已经被自动安装的组件 &mdash; 包括内置组件和已用 <literal>@Name</literal> "
+"注解且被 Seam 部署扫描器获取的应用程序组件。"
+
+#. Tag: para
+#: Xml.xml:31
+#, no-c-format
+msgid ""
+"Install classes with no <literal>@Name</literal> annotation as Seam "
+"components&mdash;this is most useful for certain kinds of infrastructural "
+"components which can be installed multiple times different names (for "
+"example Seam-managed persistence contexts)."
+msgstr ""
+"不用 <literal>@Name</literal> 注解将类安装为 Seam 组件&mdash;对于某些可以用不"
+"同名字多次安装的基础性组件(如 Seam 管理的 persistence 上下文)来说,这是最有"
+"用的。"
+
+#. Tag: para
+#: Xml.xml:36
+#, no-c-format
+msgid ""
+"Install components that <emphasis>do</emphasis> have a <literal>@Name</"
+"literal> annotation but are not installed by default because of an "
+"<literal>@Install</literal> annotation that indicates the component should "
+"not be installed."
+msgstr ""
+"安装 <emphasis>有</emphasis> <literal>@Name</literal> 注解但缺省不被安装(因"
+"为<literal>@Install</literal> 注解表示这个组件不应该被安装)的组件。"
+
+#. Tag: para
+#: Xml.xml:41
+#, no-c-format
+msgid "Override the scope of a component."
+msgstr "覆盖组件的作用域。"
+
+#. Tag: para
+#: Xml.xml:46
+#, no-c-format
+msgid ""
+"A <literal>components.xml</literal> file may appear in one of three "
+"different places:"
+msgstr ""
+"<literal>components.xml</literal> 文件可能出现在三个不同的地方中的一个:"
+
+#. Tag: para
+#: Xml.xml:51
+#, no-c-format
+msgid "The <literal>WEB-INF</literal> directory of a <literal>war</literal>."
+msgstr " <literal>war</literal> 里的 <literal>WEB-INF</literal> 目录。"
+
+#. Tag: para
+#: Xml.xml:56
+#, no-c-format
+msgid "The <literal>META-INF</literal> directory of a <literal>jar</literal>."
+msgstr "<literal>jar</literal> 里的 <literal>META-INF</literal> 目录。"
+
+#. Tag: para
+#: Xml.xml:61
+#, no-c-format
+msgid ""
+"Any directory of a <literal>jar</literal> that contains classes with an "
+"<literal>@Name</literal> annotation."
+msgstr ""
+"<literal>jar</literal> 里的包含带有 <literal>@Name</literal> 注解的类的任何目"
+"录。"
+
+#. Tag: para
+#: Xml.xml:66
+#, no-c-format
+msgid ""
+"Usually, Seam components are installed when the deployment scanner discovers "
+"a class with a <literal>@Name</literal> annotation sitting in an archive "
+"with a <literal>seam.properties</literal> file or a <literal>META-INF/"
+"components.xml</literal> file. (Unless the component has an "
+"<literal>@Install</literal> annotation indicating it should not be installed "
+"by default.) The <literal>components.xml</literal> file lets us handle "
+"special cases where we need to override the annotations."
+msgstr ""
+"通常,当部署扫描器发现在 <literal>seam.properties</literal> 或 <literal>META-"
+"INF/components.xml</literal> 文件里带有 <literal>@Name</literal> 注解的类时,"
+"Seam 组件就会被安装。(除非这个组件带有表示缺省不安装的 <literal>@Install</"
+"literal> 注解。)当我们需要覆盖这些注解时,<literal>components.xml</literal> "
+"文件可以处理特殊的情况。"
+
+#. Tag: para
+#: Xml.xml:69
+#, no-c-format
+msgid ""
+"For example, the following <literal>components.xml</literal> file installs "
+"the JBoss Embeddable EJB3 container:"
+msgstr ""
+"例如,下面的 <literal>components.xml</literal> 文件安装可嵌入的 JBoss EJB3 容"
+"器。"
+
+#. Tag: programlisting
+#: Xml.xml:72
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"&gt;\n"
+"    &lt;core:ejb/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"&gt;\n"
+"    &lt;core:ejb/&gt;\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:73
+#, no-c-format
+msgid "This example does the same thing:"
+msgstr "下面的例子完成相同的功能:"
+
+#. Tag: programlisting
+#: Xml.xml:76
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component class=\"org.jboss.seam.core.Ejb\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components&gt;\n"
+"    &lt;component class=\"org.jboss.seam.core.Ejb\"/&gt;\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:77
+#, no-c-format
+msgid ""
+"This one installs and configures two different Seam-managed persistence "
+"contexts:"
+msgstr "下面的语句安装并配置两个不同的 Seam 管理的 persistence 上下文:"
+
+#. Tag: programlisting
+#: Xml.xml:80
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"    &lt;core:managed-persistence-context name=\"customerDatabase\"\n"
+"                persistence-unit-jndi-name=\"java:/"
+"customerEntityManagerFactory\"/&gt;\n"
+"        \n"
+"    &lt;core:managed-persistence-context name=\"accountingDatabase\"\n"
+"                persistence-unit-jndi-name=\"java:/"
+"accountingEntityManagerFactory\"/&gt;            \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"    &lt;core:managed-persistence-context name=\"customerDatabase\"\n"
+"                persistence-unit-jndi-name=\"java:/"
+"customerEntityManagerFactory\"/&gt;\n"
+"        \n"
+"    &lt;core:managed-persistence-context name=\"accountingDatabase\"\n"
+"                persistence-unit-jndi-name=\"java:/"
+"accountingEntityManagerFactory\"/&gt;            \n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:81
+#, no-c-format
+msgid "As does this one:"
+msgstr "和以下的一样:"
+
+#. Tag: programlisting
+#: Xml.xml:84
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component name=\"customerDatabase\" \n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"customerEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"    \n"
+"    &lt;component name=\"accountingDatabase\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"accountingEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components&gt;\n"
+"    &lt;component name=\"customerDatabase\" \n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"customerEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"    \n"
+"    &lt;component name=\"accountingDatabase\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"accountingEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:85
+#, no-c-format
+msgid ""
+"This example creates a session-scoped Seam-managed persistence context (this "
+"is not recommended in practice):"
+msgstr ""
+"这个例子创建了一个作用域为 session 的 Seam 管理的 persistence 上下文(实践中"
+"我们不推荐):"
+
+#. Tag: programlisting
+#: Xml.xml:88
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"  &lt;core:managed-persistence-context name=\"productDatabase\" \n"
+"                                   scope=\"session\"\n"
+"              persistence-unit-jndi-name=\"java:/productEntityManagerFactory"
+"\"/&gt;        \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"  &lt;core:managed-persistence-context name=\"productDatabase\" \n"
+"                                   scope=\"session\"\n"
+"              persistence-unit-jndi-name=\"java:/productEntityManagerFactory"
+"\"/&gt;        \n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: programlisting
+#: Xml.xml:89
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"            \n"
+"    &lt;component name=\"productDatabase\"\n"
+"              scope=\"session\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"productEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components&gt;\n"
+"            \n"
+"    &lt;component name=\"productDatabase\"\n"
+"              scope=\"session\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"productEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:90
+#, no-c-format
+msgid ""
+"It is common to use the <literal>auto-create</literal> option for "
+"infrastructural objects like persistence contexts, which saves you from "
+"having to explicitly specify <literal>create=true</literal> when you use the "
+"<literal>@In</literal> annotation."
+msgstr ""
+"对于基础性对象如 persistence 上下文,通常我们使用 <literal>auto-create</"
+"literal> 选项,这使你在使用 <literal>@In</literal> 注解时不需要指定 "
+"<literal>create=true</literal>。"
+
+#. Tag: programlisting
+#: Xml.xml:93
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"  &lt;core:managed-persistence-context name=\"productDatabase\" \n"
+"                             auto-create=\"true\"\n"
+"              persistence-unit-jndi-name=\"java:/productEntityManagerFactory"
+"\"/&gt;        \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"  &lt;core:managed-persistence-context name=\"productDatabase\" \n"
+"                             auto-create=\"true\"\n"
+"              persistence-unit-jndi-name=\"java:/productEntityManagerFactory"
+"\"/&gt;        \n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: programlisting
+#: Xml.xml:94
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"            \n"
+"    &lt;component name=\"productDatabase\"\n"
+"        auto-create=\"true\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"productEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components&gt;\n"
+"            \n"
+"    &lt;component name=\"productDatabase\"\n"
+"        auto-create=\"true\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"productEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:95
+#, no-c-format
+msgid ""
+"The <literal>&lt;factory&gt;</literal> declaration lets you specify a value "
+"or method binding expression that will be evaluated to initialize the value "
+"of a context variable when it is first referenced."
+msgstr ""
+"<literal>&lt;factory&gt;</literal> 声明让你指定一个值或一个绑定表达式的方法,"
+"在第一次被引用时,它将被赋值来初始化上下文变量的值。"
+
+#. Tag: programlisting
+#: Xml.xml:98
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"contact\" method=\"#{contactManager.loadContact}\" "
+"scope=\"CONVERSATION\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"contact\" method=\"#{contactManager.loadContact}\" "
+"scope=\"CONVERSATION\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:99
+#, no-c-format
+msgid ""
+"You can create an \"alias\" (a second name) for a Seam component like so:"
+msgstr "你可以为 Seam 组件创建一个“别名”(另外一个名字),如:"
+
+#. Tag: programlisting
+#: Xml.xml:102
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"user\" value=\"#{actor}\" scope=\"STATELESS\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"user\" value=\"#{actor}\" scope=\"STATELESS\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:103
+#, no-c-format
+msgid "You can even create an \"alias\" for a commonly used expression:"
+msgstr "你甚至可以为常用的表达式创建一个“别名”:"
+
+#. Tag: programlisting
+#: Xml.xml:106
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"contact\" value=\"#{contactManager.contact}\" scope="
+"\"STATELESS\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"contact\" value=\"#{contactManager.contact}\" scope="
+"\"STATELESS\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:107
+#, no-c-format
+msgid ""
+"It is especially common to see the use of <literal>auto-create=\"true\"</"
+"literal> with the <literal>&lt;factory&gt;</literal> declaration:"
+msgstr ""
+"尤其常见的用法是和 <literal>&lt;factory&gt;</literal> 声明一起使用的 "
+"<literal>auto-create=\"true\"</literal>:"
+
+#. Tag: programlisting
+#: Xml.xml:110
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"session\" value=\"#{entityManager.delegate}\" scope="
+"\"STATELESS\" \n"
+"       auto-create=\"true\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"session\" value=\"#{entityManager.delegate}\" scope="
+"\"STATELESS\" \n"
+"       auto-create=\"true\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:111
+#, no-c-format
+msgid ""
+"Sometimes we want to reuse the same <literal>components.xml</literal> file "
+"with minor changes during both deployment and testing. Seam lets you place "
+"wildcards of the form <literal>@wildcard@</literal> in the "
+"<literal>components.xml</literal> file which can be replaced either by your "
+"Ant build script (at deployment time) or by providing a file named "
+"<literal>components.properties</literal> in the classpath (at development "
+"time). You&#39;ll see this approach used in the Seam examples."
+msgstr ""
+"有时候我们希望在部署和测试中仅做小小的改动来重用相同的 <literal>components."
+"xml</literal>。Seam 让你在 <literal>components.xml</literal> 里放入 "
+"<literal>@wildcard@</literal> 形式的通配符,这可以被 Ant 构建脚本(在部署时)"
+"或者在 classpath(在开发阶段)中提供 <literal>components.properties</"
+"literal> 文件来替代。你将在 Seam 的示例程序里看到这样的用法。"
+
+#. Tag: title
+#: Xml.xml:114
+#, no-c-format
+msgid "Fine-grained configuration files"
+msgstr "细颗粒度的配置文件"
+
+#. Tag: para
+#: Xml.xml:115
+#, no-c-format
+msgid ""
+"If you have a large number of components that need to be configured in XML, "
+"it makes much more sense to split up the information in <literal>components."
+"xml</literal> into many small files. Seam lets you put configuration for a "
+"class named, for example, <literal>com.helloworld.Hello</literal> in a "
+"resource named <literal>com/helloworld/Hello.component.xml</literal>. (You "
+"might be familiar with this pattern, since it is the same one we use in "
+"Hibernate.) The root element of the file may be either a <literal>&lt;"
+"components&gt;</literal> or <literal>&lt;component&gt;</literal> element."
+msgstr ""
+"如果你有大量的组件需要在 XML 里配置,把 <literal>components.xml</literal> 里"
+"的信息分割成许多小文件是个好主意。Seam 可以为某个类进行配置,例如,"
+"<literal>com/helloworld/Hello.component.xml</literal> 资源里的 <literal>com."
+"helloworld.Hello</literal>。(你可能对这个模式比较熟悉,因为我们在 Hibernate "
+"里就是这么使用的。)这个文件的根元素可能是 <literal>&lt;components&gt;</"
+"literal> 或 <literal>&lt;component&gt;</literal>。"
+
+#. Tag: para
+#: Xml.xml:118
+#, no-c-format
+msgid "The first option lets you define multiple components in the file:"
+msgstr "第一个选项让你在这个文件里定义多个组件:"
+
+#. Tag: programlisting
+#: Xml.xml:121
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component class=\"com.helloworld.Hello\" name=\"hello\"&gt;\n"
+"        &lt;property name=\"name\"&gt;#{user.name}&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"    &lt;factory name=\"message\" value=\"#{hello.message}\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components&gt;\n"
+"    &lt;component class=\"com.helloworld.Hello\" name=\"hello\"&gt;\n"
+"        &lt;property name=\"name\"&gt;#{user.name}&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"    &lt;factory name=\"message\" value=\"#{hello.message}\"/&gt;\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:122
+#, no-c-format
+msgid ""
+"The second option only lets you define or configure one component, but is "
+"less noisy:"
+msgstr "第二个选项只让你定义或配置一个组件:"
+
+#. Tag: programlisting
+#: Xml.xml:125
+#, no-c-format
+msgid ""
+"&lt;component name=\"hello\"&gt;\n"
+"    &lt;property name=\"name\"&gt;#{user.name}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+"&lt;component name=\"hello\"&gt;\n"
+"    &lt;property name=\"name\"&gt;#{user.name}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+
+#. Tag: para
+#: Xml.xml:126
+#, no-c-format
+msgid ""
+"In the second option, the class name is implied by the file in which the "
+"component definition appears."
+msgstr "在第二个选项里,类名是由组件定义所在的文件所指定的。"
+
+#. Tag: para
+#: Xml.xml:129
+#, no-c-format
+msgid ""
+"Alternatively, you may put configuration for all classes in the <literal>com."
+"helloworld</literal> package in <literal>com/helloworld/components.xml</"
+"literal>."
+msgstr ""
+"此外,你可以配置 <literal>com/helloworld/components.xml</literal> 里的 "
+"<literal>com.helloworld</literal> 软件包里所有的类。"
+
+#. Tag: title
+#: Xml.xml:132
+#, no-c-format
+msgid "Configurable property types"
+msgstr "可配置的属性类型"
+
+#. Tag: para
+#: Xml.xml:133
+#, no-c-format
+msgid ""
+"Properties of string, primitive or primitive wrapper type may be configured "
+"just as you would expect:"
+msgstr "字符串、primitive 或 primitive wrapper 类型的属性可以配置为:"
+
+#. Tag: programlisting
+#: Xml.xml:136
+#, no-c-format
+msgid "org.jboss.seam.core.manager.conversationTimeout 60000"
+msgstr "org.jboss.seam.core.manager.conversationTimeout 60000"
+
+#. Tag: programlisting
+#: Xml.xml:137
+#, no-c-format
+msgid "&lt;core:manager conversation-timeout=\"60000\"/&gt;"
+msgstr "&lt;core:manager conversation-timeout=\"60000\"/&gt;"
+
+#. Tag: programlisting
+#: Xml.xml:138
+#, no-c-format
+msgid ""
+"&lt;component name=\"org.jboss.seam.core.manager\"&gt;\n"
+"    &lt;property name=\"conversationTimeout\"&gt;60000&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+"&lt;component name=\"org.jboss.seam.core.manager\"&gt;\n"
+"    &lt;property name=\"conversationTimeout\"&gt;60000&lt;/property&gt;\n"
+"&lt;/component&gt;"
+
+#. Tag: para
+#: Xml.xml:139
+#, no-c-format
+msgid "Arrays, sets and lists of strings or primitives are also supported:"
+msgstr "数组、集合和字符串列表或 primitive 变量也被支持:"
+
+#. Tag: programlisting
+#: Xml.xml:142
+#, no-c-format
+msgid ""
+"org.jboss.seam.core.jbpm.processDefinitions order.jpdl.xml, return.jpdl.xml, "
+"inventory.jpdl.xml"
+msgstr ""
+"org.jboss.seam.core.jbpm.processDefinitions order.jpdl.xml, return.jpdl.xml, "
+"inventory.jpdl.xml"
+
+#. Tag: programlisting
+#: Xml.xml:143
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;order.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;return.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;order.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;return.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+
+#. Tag: programlisting
+#: Xml.xml:144
+#, no-c-format
+msgid ""
+"&lt;component name=\"org.jboss.seam.core.jbpm\"&gt;\n"
+"    &lt;property name=\"processDefinitions\"&gt;\n"
+"        &lt;value&gt;order.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;return.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+"&lt;component name=\"org.jboss.seam.core.jbpm\"&gt;\n"
+"    &lt;property name=\"processDefinitions\"&gt;\n"
+"        &lt;value&gt;order.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;return.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/component&gt;"
+
+#. Tag: para
+#: Xml.xml:145
+#, no-c-format
+msgid ""
+"Even maps with String-valued keys and string or primitive values are "
+"supported:"
+msgstr "甚至带有字符串为键值、字符串或 primitive 值的 Map 也被支持:"
+
+#. Tag: programlisting
+#: Xml.xml:148
+#, no-c-format
+msgid ""
+"&lt;component name=\"issueEditor\"&gt;\n"
+"    &lt;property name=\"issueStatuses\"&gt;\n"
+"        &lt;key&gt;open&lt;/key&gt; &lt;value&gt;open issue&lt;/value&gt;\n"
+"        &lt;key&gt;resolved&lt;/key&gt; &lt;value&gt;issue resolved by "
+"developer&lt;/value&gt;\n"
+"        &lt;key&gt;closed&lt;/key&gt; &lt;value&gt;resolution accepted by "
+"user&lt;/value&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+"&lt;component name=\"issueEditor\"&gt;\n"
+"    &lt;property name=\"issueStatuses\"&gt;\n"
+"        &lt;key&gt;open&lt;/key&gt; &lt;value&gt;open issue&lt;/value&gt;\n"
+"        &lt;key&gt;resolved&lt;/key&gt; &lt;value&gt;issue resolved by "
+"developer&lt;/value&gt;\n"
+"        &lt;key&gt;closed&lt;/key&gt; &lt;value&gt;resolution accepted by "
+"user&lt;/value&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/component&gt;"
+
+#. Tag: para
+#: Xml.xml:149
+#, no-c-format
+msgid ""
+"Finally, you may wire together components using a value-binding expression. "
+"Note that this is quite different to injection using <literal>@In</literal>, "
+"since it happens at component instantiation time instead of invocation time. "
+"It is therefore much more similar to the dependency injection facilities "
+"offered by traditional IoC containers like JSF or Spring."
+msgstr ""
+"最后,你可以用值绑定(value-binding)表达式来捆绑组件。注意,用 "
+"<literal>@In</literal> 注入是很不一样的,因为它发生在组件初始化而不是调用的时"
+"候。因此,这和传统的 IoC 容器(如 JSF 或 Spring)提供的依赖性注入机制更为相"
+"似。"
+
+#. Tag: programlisting
+#: Xml.xml:152
+#, no-c-format
+msgid ""
+"&lt;drools:managed-working-memory name=\"policyPricingWorkingMemory\" rule-"
+"base=\"#{policyPricingRules}\"/&gt;"
+msgstr ""
+"&lt;drools:managed-working-memory name=\"policyPricingWorkingMemory\" rule-"
+"base=\"#{policyPricingRules}\"/&gt;"
+
+#. Tag: programlisting
+#: Xml.xml:153
+#, no-c-format
+msgid ""
+"&lt;component name=\"policyPricingWorkingMemory\"\n"
+"          class=\"org.jboss.seam.drools.ManagedWorkingMemory\"&gt;\n"
+"    &lt;property name=\"ruleBase\"&gt;#{policyPricingRules}&lt;/"
+"property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+"&lt;component name=\"policyPricingWorkingMemory\"\n"
+"          class=\"org.jboss.seam.drools.ManagedWorkingMemory\"&gt;\n"
+"    &lt;property name=\"ruleBase\"&gt;#{policyPricingRules}&lt;/"
+"property&gt;\n"
+"&lt;/component&gt;"
+
+#. Tag: title
+#: Xml.xml:154
+#, no-c-format
+msgid "Using XML Namespaces"
+msgstr "使用 XML 命名空间"
+
+#. Tag: para
+#: Xml.xml:155
+#, no-c-format
+msgid ""
+"Throughout the examples, there have been two competing ways of declaring "
+"components: with and without the use of XML namespaces. The following shows "
+"a typical <literal>components.xml</literal> file without namespaces. It uses "
+"the Seam Components DTD:"
+msgstr ""
+"在这些例子里,有两个声明组件的方法:使用或不使用 XML 命名空间。下面是一个典型"
+"的未使用命名空间的 <literal>components.xml</literal>。它使用了 Seam 组件的 "
+"DTD:"
+
+#. Tag: programlisting
+#: Xml.xml:158
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"&gt;\n"
+"&lt;!DOCTYPE components PUBLIC \"-//JBoss/Seam Component Configuration DTD "
+"1.2//EN\"\n"
+"                            \"http://jboss.com/products/seam/components-1.2."
+"dtd\"&gt;\n"
+"&lt;components&gt;\n"
+"\n"
+"    &lt;component class=\"org.jboss.seam.core.init\"&gt;\n"
+"        &lt;property name=\"debug\"&gt;true&lt;/property&gt;\n"
+"        &lt;property name=\"jndiPattern\"&gt;@jndiPattern@&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"    &lt;component name=\"org.jboss.sean.core.ejb\" installed=\"@embeddedEjb@"
+"\" /&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"&gt;\n"
+"&lt;!DOCTYPE components PUBLIC \"-//JBoss/Seam Component Configuration DTD "
+"1.2//EN\"\n"
+"                            \"http://jboss.com/products/seam/components-1.2."
+"dtd\"&gt;\n"
+"&lt;components&gt;\n"
+"\n"
+"    &lt;component class=\"org.jboss.seam.core.init\"&gt;\n"
+"        &lt;property name=\"debug\"&gt;true&lt;/property&gt;\n"
+"        &lt;property name=\"jndiPattern\"&gt;@jndiPattern@&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"    &lt;component name=\"org.jboss.sean.core.ejb\" installed=\"@embeddedEjb@"
+"\" /&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:159
+#, no-c-format
+msgid ""
+"As you can see, this is somewhat verbose. Even worse, the component and "
+"attribute names cannot be validated at development time."
+msgstr ""
+"你可以看到,这显得有些冗长。更差的是,组件和属性名不能在开发阶段被检验。"
+
+#. Tag: para
+#: Xml.xml:162
+#, no-c-format
+msgid "The namespaced version looks like this:"
+msgstr "而使用命名空间的版本将类似于:"
+
+#. Tag: programlisting
+#: Xml.xml:165
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                                        http://jboss.com/products/seam/core-"
+"1.2.xsd \n"
+"                 http://jboss.com/products/seam/components \n"
+"                                        http://jboss.com/products/seam/"
+"components-1.2.xsd\"&gt;\n"
+"\n"
+"    &lt;core:init debug=\"true\" jndi-pattern=\"@jndiPattern@\"/&gt;\n"
+"\n"
+"    &lt;core:ejb installed=\"@embeddedEjb@\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                                        http://jboss.com/products/seam/core-"
+"1.2.xsd \n"
+"                 http://jboss.com/products/seam/components \n"
+"                                        http://jboss.com/products/seam/"
+"components-1.2.xsd\"&gt;\n"
+"\n"
+"    &lt;core:init debug=\"true\" jndi-pattern=\"@jndiPattern@\"/&gt;\n"
+"\n"
+"    &lt;core:ejb installed=\"@embeddedEjb@\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:166
+#, no-c-format
+msgid ""
+"Even though the schema declarations are verbose, the actual XML content is "
+"lean and easy to understand. The schemas provide detailed information about "
+"each component and the attributes available, allowing XML editors to offer "
+"intelligent autocomplete. The use of namespaced elements makes generating "
+"and maintaining correct <literal>components.xml</literal> files much simpler."
+msgstr ""
+"即使模式声明也很冗长,但实际的 XML 内容却很精简且易于理解。这些模式提供了每个"
+"可用的组件和属性的详细信息,这允许 XML 编辑器提供智能自动完成的功能。使用带有"
+"命名空间的元素使生成和维护正确的 <literal>components.xml</literal> 文件变得更"
+"加简单。"
+
+#. Tag: para
+#: Xml.xml:169
+#, no-c-format
+msgid ""
+"Now, this works great for the built-in Seam components, but what about user "
+"components? There are two options. First, Seam supports mixing the two "
+"models, allowing the use of the generic <literal>&lt;component&gt;</literal> "
+"declarations for user components, along with namespaced declarations for "
+"built-in components. But even better, Seam allows you to quickly declare "
+"namespaces for your own components."
+msgstr ""
+"到目前为止,这很适用于内置组件,但用户组件呢?有两个选项。首先,Seam 支持混合"
+"两种模型,允许使用普通的 <literal>&lt;component&gt;</literal> 声明用户组件以"
+"及用命名空间声明内置组件。更妙的是,Seam 允许你快速地为自己的组件声明命名空"
+"间。"
+
+#. Tag: para
+#: Xml.xml:172
+#, no-c-format
+msgid ""
+"Any Java package can be associated with an XML namespace by annotating the "
+"package with the <literal>@Namespace</literal> annotation. (Package-level "
+"annotations are declared in a file named <literal>package-info.java</"
+"literal> in the package directory.) Here is an example from the seampay demo:"
+msgstr ""
+"任何 Java 组件都可以通过 <literal>@Namespace</literal> 注解和 XML 空间相关"
+"联。(包级别的注解是在该软件包目录下的 <literal>package-info.java</literal> "
+"文件里进行声明的。)下面是 seampay 演示程序里的一个例子:"
+
+#. Tag: programlisting
+#: Xml.xml:175
+#, no-c-format
+msgid ""
+"@Namespace(value=\"http://jboss.com/products/seam/examples/seampay\")\n"
+"package org.jboss.seam.example.seampay;\n"
+"\n"
+"import org.jboss.seam.annotations.Namespace;"
+msgstr ""
+"@Namespace(value=\"http://jboss.com/products/seam/examples/seampay\")\n"
+"package org.jboss.seam.example.seampay;\n"
+"\n"
+"import org.jboss.seam.annotations.Namespace;"
+
+#. Tag: para
+#: Xml.xml:176
+#, no-c-format
+msgid ""
+"That is all you need to do to use the namespaced style in "
+"<literal>components.xml</literal>! Now we can write:"
+msgstr ""
+"这就是在 <literal>components.xml</literal> 里应用命名空间风格所需要做的全部事"
+"情!我们可以编写如下代码:"
+
+#. Tag: programlisting
+#: Xml.xml:179
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pay=\"http://jboss.com/products/seam/examples/seampay\"\n"
+"            ... &gt;\n"
+"\n"
+"    &lt;pay:payment-home new-instance=\"#{newPayment}\"\n"
+"                      created-message=\"Created a new payment to #"
+"{newPayment.payee}\" /&gt;\n"
+"\n"
+"    &lt;pay:payment name=\"newPayment\"\n"
+"                 payee=\"Somebody\"\n"
+"                 account=\"#{selectedAccount}\"\n"
+"                 payment-date=\"#{currentDatetime}\"\n"
+"                 created-date=\"#{currentDatetime}\" /&gt;\n"
+"     ...\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pay=\"http://jboss.com/products/seam/examples/seampay\"\n"
+"            ... &gt;\n"
+"\n"
+"    &lt;pay:payment-home new-instance=\"#{newPayment}\"\n"
+"                      created-message=\"Created a new payment to #"
+"{newPayment.payee}\" /&gt;\n"
+"\n"
+"    &lt;pay:payment name=\"newPayment\"\n"
+"                 payee=\"Somebody\"\n"
+"                 account=\"#{selectedAccount}\"\n"
+"                 payment-date=\"#{currentDatetime}\"\n"
+"                 created-date=\"#{currentDatetime}\" /&gt;\n"
+"     ...\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:180
+#, no-c-format
+msgid "<para>Or:</para>"
+msgstr "<para>或:</para>"
+
+#. Tag: programlisting
+#: Xml.xml:183
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pay=\"http://jboss.com/products/seam/examples/seampay\"\n"
+"            ... &gt;\n"
+"\n"
+"    &lt;pay:payment-home&gt;\n"
+"        &lt;pay:new-instance&gt;\"#{newPayment}\"&lt;/pay:new-instance&gt;\n"
+"        &lt;pay:created-message&gt;Created a new payment to #{newPayment."
+"payee}&lt;/pay:created-message&gt;\n"
+"    &lt;/pay:payment-home&gt;\n"
+"    \n"
+"    &lt;pay:payment name=\"newPayment\"&gt;\n"
+"        &lt;pay:payee&gt;Somebody\"&lt;/pay:payee&gt;\n"
+"        &lt;pay:account&gt;#{selectedAccount}&lt;/pay:account&gt;\n"
+"        &lt;pay:payment-date&gt;#{currentDatetime}&lt;/pay:payment-date&gt;\n"
+"        &lt;pay:created-date&gt;#{currentDatetime}&lt;/pay:created-date&gt;\n"
+"     &lt;/pay:payment&gt;\n"
+"     ...\n"
+"&lt;/components&gt;"
+msgstr ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pay=\"http://jboss.com/products/seam/examples/seampay\"\n"
+"            ... &gt;\n"
+"\n"
+"    &lt;pay:payment-home&gt;\n"
+"        &lt;pay:new-instance&gt;\"#{newPayment}\"&lt;/pay:new-instance&gt;\n"
+"        &lt;pay:created-message&gt;Created a new payment to #{newPayment."
+"payee}&lt;/pay:created-message&gt;\n"
+"    &lt;/pay:payment-home&gt;\n"
+"    \n"
+"    &lt;pay:payment name=\"newPayment\"&gt;\n"
+"        &lt;pay:payee&gt;Somebody\"&lt;/pay:payee&gt;\n"
+"        &lt;pay:account&gt;#{selectedAccount}&lt;/pay:account&gt;\n"
+"        &lt;pay:payment-date&gt;#{currentDatetime}&lt;/pay:payment-date&gt;\n"
+"        &lt;pay:created-date&gt;#{currentDatetime}&lt;/pay:created-date&gt;\n"
+"     &lt;/pay:payment&gt;\n"
+"     ...\n"
+"&lt;/components&gt;"
+
+#. Tag: para
+#: Xml.xml:184
+#, no-c-format
+msgid ""
+"These examples illustrate the two usage models of a namespaced element. In "
+"the first declaration, the <literal>&lt;pay:payment-home&gt;</literal> "
+"references the <literal>paymentHome</literal> component:"
+msgstr ""
+"这些例子说明了命名空间元素的两种使用模型。在第一个声明里,<literal>&lt;pay:"
+"payment-home&gt;</literal> 引用了 <literal>paymentHome</literal> 组件:"
+
+#. Tag: programlisting
+#: Xml.xml:187
+#, no-c-format
+msgid ""
+"package org.jboss.seam.example.seampay;\n"
+"...\n"
+"@Name(\"paymentHome\")\n"
+"public class PaymentController\n"
+"    extends EntityHome&lt;Payment&gt;\n"
+"{\n"
+"    ... \n"
+"}"
+msgstr ""
+"package org.jboss.seam.example.seampay;\n"
+"...\n"
+"@Name(\"paymentHome\")\n"
+"public class PaymentController\n"
+"    extends EntityHome&lt;Payment&gt;\n"
+"{\n"
+"    ... \n"
+"}"
+
+#. Tag: para
+#: Xml.xml:188
+#, no-c-format
+msgid ""
+"The element name is the hyphenated form of the component name. The "
+"attributes of the element are the hyphenated form of the property names."
+msgstr ""
+"其元素名字是组件名的带有连字符的形式。元素的属性名是属性名的连字符形式。"
+
+#. Tag: para
+#: Xml.xml:191
+#, no-c-format
+msgid ""
+"In the second declaration, the <literal>&lt;pay:payment&gt;</literal> "
+"element refers to the <literal>Payment</literal> class in the <literal>org."
+"jboss.seam.example.seampay</literal> package. In this case <literal>Payment</"
+"literal> is an entity that is being declared as a Seam component:"
+msgstr ""
+"在第二个声明里,<literal>&lt;pay:payment&gt;</literal> 元素引用了 "
+"<literal>org.jboss.seam.example.seampay</literal> 软件包里的 "
+"<literal>Payment</literal> 类。这里的 <literal>Payment</literal> 是一个声明"
+"为 Seam 组件的实体。"
+
+#. Tag: programlisting
+#: Xml.xml:194
+#, no-c-format
+msgid ""
+"package org.jboss.seam.example.seampay;\n"
+"...\n"
+"@Entity\n"
+"public class Payment\n"
+"    implements Serializable\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+"package org.jboss.seam.example.seampay;\n"
+"...\n"
+"@Entity\n"
+"public class Payment\n"
+"    implements Serializable\n"
+"{\n"
+"    ...\n"
+"}"
+
+#. Tag: para
+#: Xml.xml:195
+#, no-c-format
+msgid ""
+"If we want validation and autocompletion to work for user-defined "
+"components, we will need a schema. Seam does not yet provide a mechanism to "
+"automatically generate a schema for a set of components, so it is necessary "
+"to generate one manually. The schema definitions for the standard Seam "
+"packages can be used for guidance."
+msgstr ""
+"如果我们想要为用户定义的组件设置检验和自动完成功能,我们需要一个 schema。"
+"Seam 并不提供为组件自动生成 schema 的机制,所以我们得手工生成它。标准 Seam 软"
+"件包的 schema 定义可以作为参考。"
+
+#. Tag: para
+#: Xml.xml:198
+#, no-c-format
+msgid "The following are the the namespaces used by Seam:"
+msgstr "下面是 Seam 所使用的命名空间:"
+
+#. Tag: para
+#: Xml.xml:203
+#, no-c-format
+msgid ""
+"components &mdash; <literal>http://jboss.com/products/seam/components</"
+"literal>"
+msgstr ""
+"components &mdash; <literal>http://jboss.com/products/seam/components</"
+"literal>"
+
+#. Tag: para
+#: Xml.xml:208
+#, no-c-format
+msgid "core &mdash; <literal>http://jboss.com/products/seam/core</literal>"
+msgstr "core &mdash; <literal>http://jboss.com/products/seam/core</literal>"
+
+#. Tag: para
+#: Xml.xml:213
+#, no-c-format
+msgid "drools &mdash; <literal>http://jboss.com/products/seam/drools</literal>"
+msgstr ""
+"drools &mdash; <literal>http://jboss.com/products/seam/drools</literal>"
+
+#. Tag: para
+#: Xml.xml:218
+#, no-c-format
+msgid ""
+"framework &mdash; <literal>http://jboss.com/products/seam/framework</literal>"
+msgstr ""
+"framework &mdash; <literal>http://jboss.com/products/seam/framework</literal>"
+
+#. Tag: para
+#: Xml.xml:223
+#, no-c-format
+msgid "jms &mdash; <literal>http://jboss.com/products/seam/jms</literal>"
+msgstr "jms &mdash; <literal>http://jboss.com/products/seam/jms</literal>"
+
+#. Tag: para
+#: Xml.xml:228
+#, no-c-format
+msgid ""
+"remoting &mdash; <literal>http://jboss.com/products/seam/remoting</literal>"
+msgstr ""
+"remoting &mdash; <literal>http://jboss.com/products/seam/remoting</literal>"
+
+#. Tag: para
+#: Xml.xml:233
+#, no-c-format
+msgid "theme &mdash; <literal>http://jboss.com/products/seam/theme</literal>"
+msgstr "theme &mdash; <literal>http://jboss.com/products/seam/theme</literal>"
+
+#. Tag: para
+#: Xml.xml:238
+#, no-c-format
+msgid ""
+"security &mdash; <literal>http://jboss.com/products/seam/security</literal>"
+msgstr ""
+"security &mdash; <literal>http://jboss.com/products/seam/security</literal>"
+
+#. Tag: para
+#: Xml.xml:243
+#, no-c-format
+msgid "mail &mdash; <literal>http://jboss.com/products/seam/mail</literal>"
+msgstr "mail &mdash; <literal>http://jboss.com/products/seam/mail</literal>"
+
+#. Tag: para
+#: Xml.xml:248
+#, no-c-format
+msgid "web &mdash; <literal>http://jboss.com/products/seam/web</literal>"
+msgstr "web &mdash; <literal>http://jboss.com/products/seam/web</literal>"

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Annotations.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Annotations.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Annotations.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2030 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Annotations.xml:10
+#, no-c-format
+msgid "Seam annotations"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:11
+#, no-c-format
+msgid ""
+"When you write a Seam application, you'll use a lot of annotations. Seam "
+"lets you use annotations to achieve a declarative style of programming. Most "
+"of the annotations you'll use are defined by the EJB 3.0 specification. The "
+"annotations for data validation are defined by the Hibernate Validator "
+"package. Finally, Seam defines its own set of annotations, which we'll "
+"describe in this chapter."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:14
+#, no-c-format
+msgid ""
+"All of these annotations are defined in the package <literal>org.jboss.seam."
+"annotations</literal>."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:18
+#, no-c-format
+msgid "Annotations for component definition"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:19
+#, no-c-format
+msgid ""
+"The first group of annotations lets you define a Seam component. These "
+"annotations appear on the component class."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:24
+#, no-c-format
+msgid "@Name"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:26
+#, no-c-format
+msgid "@Name(\"componentName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:27
+#, no-c-format
+msgid ""
+"Defines the Seam component name for a class. This annotation is required for "
+"all Seam components."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:33
+#, no-c-format
+msgid "@Scope"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:35
+#, no-c-format
+msgid "@Scope(ScopeType.CONVERSATION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:36
+#, no-c-format
+msgid ""
+"Defines the default context of the component. The possible values are "
+"defined by the <literal>ScopeType</literal> enumeration: <literal>EVENT, "
+"PAGE, CONVERSATION, SESSION, BUSINESS_PROCESS, APPLICATION, STATELESS</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:39
+#, no-c-format
+msgid ""
+"When no scope is explicitly specified, the default depends upon the "
+"component type. For stateless session beans, the default is "
+"<literal>STATELESS</literal>. For entity beans and stateful session beans, "
+"the default is <literal>CONVERSATION</literal>. For JavaBeans, the default "
+"is <literal>EVENT</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:45
+#, no-c-format
+msgid "@Role"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:47
+#, no-c-format
+msgid "@Role(name=\"roleName\", scope=ScopeType.SESSION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:48
+#, no-c-format
+msgid ""
+"Allows a Seam component to be bound to multiple contexts variables. The "
+"<literal>@Name</literal>/<literal>@Scope</literal> annotations define a "
+"\"default role\". Each <literal>@Role</literal> annotation defines an "
+"additional role."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:53
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the context variable name."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:58
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; the context variable scope. When no scope "
+"is explicitly specified, the default depends upon the component type, as "
+"above."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:66
+#, no-c-format
+msgid "@Roles"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:68
+#, no-c-format
+msgid ""
+"@Roles({\n"
+"        @Role(name=\"user\", scope=ScopeType.CONVERSATION),\n"
+"        @Role(name=\"currentUser\", scope=ScopeType.SESSION)\n"
+"    })"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:69
+#, no-c-format
+msgid "Allows specification of multiple additional roles."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:75
+#, no-c-format
+msgid "@Intercept"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:77
+#, no-c-format
+msgid "@Intercept(InterceptionType.ALWAYS)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:78
+#, no-c-format
+msgid ""
+"Determines when Seam interceptors are active. The possible values are "
+"defined by the <literal>InterceptionType</literal> enumeration: "
+"<literal>ALWAYS, AFTER_RESTORE_VIEW, AFTER_UPDATE_MODEL_VALUES, "
+"INVOKE_APPLICATION, NEVER</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:81
+#, no-c-format
+msgid ""
+"When no interception type is explicitly specified, the default depends upon "
+"the component type. For entity beans, the default is <literal>NEVER</"
+"literal>. For session beans, message driven beans and JavaBeans, the default "
+"is <literal>ALWAYS</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:87
+#, no-c-format
+msgid "@JndiName"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:89
+#, no-c-format
+msgid "@JndiName(\"my/jndi/name\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:90
+#, no-c-format
+msgid ""
+"Specifies the JNDI name that Seam will use to look up the EJB component. If "
+"no JNDI name is explicitly specified, Seam will use the JNDI pattern "
+"specified by <literal>org.jboss.seam.core.init.jndiPattern</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:96
+#, no-c-format
+msgid "@Conversational"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:98
+#, no-c-format
+msgid "@Conversational(ifNotBegunOutcome=\"error\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:99
+#, no-c-format
+msgid ""
+"Specifies that a conversation scope component is conversational, meaning "
+"that no method of the component can be called unless a long-running "
+"conversation started by this component is active (unless the method would "
+"begin a new long-running conversation)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:105
+#, no-c-format
+msgid "<literal>@Startup</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:107
+#, no-c-format
+msgid "@Startup(depends={\"org.jboss.core.jndi\", \"org.jboss.core.jta\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:108
+#, no-c-format
+msgid ""
+"Specifies that an application scope component is started immediately at "
+"initialization time. This is mainly used for certain built-in components "
+"that bootstrap critical infrastructure such as JNDI, datasources, etc."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:111
+#, no-c-format
+msgid "<programlisting>@Startup</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:112
+#, no-c-format
+msgid ""
+"Specifies that a session scope component is started immediately at session "
+"creation time."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:117
+#, no-c-format
+msgid ""
+"<literal>depends</literal> &mdash; specifies that the named components must "
+"be started first, if they are installed."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:125
+#, no-c-format
+msgid "@Install"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:127
+#, no-c-format
+msgid "@Install(false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:128
+#, no-c-format
+msgid ""
+"Specifies whether or not a component should be installed by default. The "
+"lack of an @Install annotation indicates a component should be installed."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:131
+#, no-c-format
+msgid "@Install(dependencies=\"org.jboss.seam.core.jbpm\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:132
+#, no-c-format
+msgid ""
+"Specifies that a component should only be stalled if the components listed "
+"as dependencies are also installed."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:135
+#, no-c-format
+msgid "@Install(genericDependencies=ManagedQueueSender.class)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:136
+#, no-c-format
+msgid ""
+"Specifies that a component should only be installed if a component that is "
+"implemented by a certain class is installed. This is useful when the "
+"dependency doesn't have a single well-known name."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:139
+#, no-c-format
+msgid "@Install(classDependencies=\"org.hibernate.Session\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:140
+#, no-c-format
+msgid ""
+"Specifies that a component should only be installed if the named class is in "
+"the classpath."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:143
+#, no-c-format
+msgid "@Install(precedence=BUILT_IN)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:144
+#, no-c-format
+msgid ""
+"Specifies the precedence of the component. If multiple components with the "
+"same name exist, the one with the higher precedence will be installed. The "
+"defined precendence values are:"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:149
+#, no-c-format
+msgid ""
+"<literal>BUILT_IN</literal> &mdash; Precedence of all built-in Seam "
+"components"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:154
+#, no-c-format
+msgid ""
+"<literal>FRAMEWORK</literal> &mdash; Precedence to use for components of "
+"frameworks which extend Seam"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:159
+#, no-c-format
+msgid ""
+"<literal>APPLICATION</literal> &mdash; Predence of application components "
+"(the default precedence)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:164
+#, no-c-format
+msgid ""
+"<literal>DEPLOYMENT</literal> &mdash; Precedence to use for components which "
+"override application components in a particular deployment"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:172
+#, no-c-format
+msgid "@Synchronized"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:174
+#, no-c-format
+msgid "@Synchronized(timeout=1000)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:175
+#, no-c-format
+msgid ""
+"Specifies that a component is accessed concurrently by multiple clients, and "
+"that Seam should serialize requests. If a request is not able to obtain its "
+"lock on the component in the given timeout period, an exception will be "
+"raised."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:181
+#, no-c-format
+msgid "<literal>@ReadOnly</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:183
+#, no-c-format
+msgid "<programlisting>@ReadOnly</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:184
+#, no-c-format
+msgid ""
+"Specifies that a JavaBean component or component method does not require "
+"state replication at the end of the invocation."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:193
+#, no-c-format
+msgid "Annotations for bijection"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:194
+#, no-c-format
+msgid ""
+"The next two annotations control bijection. These attributes occur on "
+"component instance variables or property accessor methods."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:199
+#, no-c-format
+msgid "<literal>@In</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:201
+#, no-c-format
+msgid "<programlisting>@In</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:202
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. If the context "
+"variable is null, an exception will be thrown."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:205
+#, no-c-format
+msgid "@In(required=false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:206
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. The context variable "
+"may be null."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:209
+#, no-c-format
+msgid "@In(create=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:210
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected from a context "
+"variable at the beginning of each component invocation. If the context "
+"variable is null, an instance of the component is instantiated by Seam."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:213
+#, no-c-format
+msgid "@In(value=\"contextVariableName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:214 Annotations.xml:259
+#, no-c-format
+msgid ""
+"Specifies the name of the context variable explicitly, instead of using the "
+"annotated instance variable name."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:217
+#, no-c-format
+msgid "@In(value=\"#{customer.addresses['shipping']}\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:218
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected by evaluating a JSF "
+"EL expression at the beginning of each component invocation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:223
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"Default to the name of the component attribute. Alternatively, specifies a "
+"JSF EL expression, surrounded by <literal>#{...}</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:228
+#, no-c-format
+msgid ""
+"<literal>create</literal> &mdash; specifies that Seam should instantiate the "
+"component with the same name as the context variable if the context variable "
+"is undefined (null) in all contexts. Default to false."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:233
+#, no-c-format
+msgid ""
+"<literal>required</literal> &mdash; specifies Seam should throw an exception "
+"if the context variable is undefined in all contexts."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:241
+#, no-c-format
+msgid "<literal>@Out</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:243
+#, no-c-format
+msgid "<programlisting>@Out</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:244
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is a Seam component is to be "
+"outjected to its context variable at the end of the invocation. If the "
+"attribute is null, an exception is thrown."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:247
+#, no-c-format
+msgid "@Out(required=false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:248
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is a Seam component is to be "
+"outjected to its context variable at the end of the invocation. The "
+"attribute may be null."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:251
+#, no-c-format
+msgid "@Out(scope=ScopeType.SESSION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:252
+#, no-c-format
+msgid ""
+"Specifies that a component attribute that is <emphasis>not</emphasis> a Seam "
+"component type is to be outjected to a specific scope at the end of the "
+"invocation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:255
+#, no-c-format
+msgid ""
+"Alternatively, if no scope is explicitly specified, the scope of the "
+"component with the <literal>@Out</literal> attribute is used (or the "
+"<literal>EVENT</literal> scope if the component is stateless)."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:258
+#, no-c-format
+msgid "@Out(value=\"contextVariableName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:264
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"Default to the name of the component attribute."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:269
+#, no-c-format
+msgid ""
+"<literal>required</literal> &mdash; specifies Seam should throw an exception "
+"if the component attribute is null during outjection."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:277
+#, no-c-format
+msgid ""
+"Note that it is quite common for these annotations to occur together, for "
+"example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:280
+#, no-c-format
+msgid "@In(create=true) @Out private User currentUser;"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:281
+#, no-c-format
+msgid ""
+"The next annotation supports the <emphasis>manager component</emphasis> "
+"pattern, where a Seam component that manages the lifecycle of an instance of "
+"some other class that is to be injected. It appears on a component getter "
+"method."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:286
+#, no-c-format
+msgid "<literal>@Unwrap</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:288
+#, no-c-format
+msgid "<programlisting>@Unwrap</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:289
+#, no-c-format
+msgid ""
+"Specifies that the object returned by the annotated getter method is the "
+"thing that is injected instead of the component instance itself."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:295
+#, no-c-format
+msgid ""
+"The next annotation supports the <emphasis>factory component</emphasis> "
+"pattern, where a Seam component is responsible for initializing the value of "
+"a context variable. This is especially useful for initializing any state "
+"needed for rendering the response to a non-faces request. It appears on a "
+"component method."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:300
+#, no-c-format
+msgid "@Factory"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:302
+#, no-c-format
+msgid "@Factory(\"processInstance\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:303
+#, no-c-format
+msgid ""
+"Specifies that the method of the component is used to initialize the value "
+"of the named context variable, when the context variable has no value. This "
+"style is used with methods that return <literal>void</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:306
+#, no-c-format
+msgid "@Factory(\"processInstance\", scope=CONVERSATION)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:307
+#, no-c-format
+msgid ""
+"Specifies that the method returns a value that Seam should use to initialize "
+"the value of the named context variable, when the context variable has no "
+"value. This style is used with methods that return a value. If no scope is "
+"explicitly specified, the scope of the component with the <literal>@Factory</"
+"literal> method is used (unless the component is stateless, in which case "
+"the <literal>EVENT</literal> context is used)."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:312
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the context variable. "
+"If the method is a getter method, default to the JavaBeans property name."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:317
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; specifies the scope that Seam should bind "
+"the returned value to. Only meaningful for factory methods which return a "
+"value."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:325
+#, no-c-format
+msgid "This annotation lets you inject a <literal>Log</literal>:"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:330
+#, no-c-format
+msgid "@Logger"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:332
+#, no-c-format
+msgid "@Logger(\"categoryName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:333
+#, no-c-format
+msgid ""
+"Specifies that a component field is to be injected with an instance of "
+"<literal>org.jboss.seam.log.Log</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:338
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the log category. "
+"Default to the name of the component class."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:346
+#, no-c-format
+msgid "The last annotation lets you inject a request parameter value:"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:351
+#, no-c-format
+msgid "@RequestParameter"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:353
+#, no-c-format
+msgid "@RequestParameter(\"parameterName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:354
+#, no-c-format
+msgid ""
+"Specifies that a component attribute is to be injected with the value of a "
+"request parameter. Basic type conversions are performed automatically."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:359
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; specifies the name of the request "
+"parameter. Default to the name of the component attribute."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:370
+#, no-c-format
+msgid "Annotations for component lifecycle methods"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:371
+#, no-c-format
+msgid ""
+"These annotations allow a component to react to its own lifecycle events. "
+"They occur on methods of the component. There may be only one of each per "
+"component class."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:376
+#, no-c-format
+msgid "<literal>@Create</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:378
+#, no-c-format
+msgid "<programlisting>@Create</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:379
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when an instance of the component "
+"is instantiated by Seam. Note that create methods are only supported for "
+"JavaBeans and stateful session beans."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:385
+#, no-c-format
+msgid "<literal>@Destroy</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:387
+#, no-c-format
+msgid "<programlisting>@Destroy</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:388
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when the context ends and its "
+"context variables are destroyed. Note that create methods are only supported "
+"for JavaBeans and stateful session beans."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:391
+#, no-c-format
+msgid ""
+"Note that all stateful session bean components <emphasis>must</emphasis> "
+"define a method annotated <literal>@Destroy @Remove</literal> in order to "
+"guarantee destruction of the stateful bean when a context ends."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:394
+#, no-c-format
+msgid ""
+"Destroy methods should be used only for cleanup. <emphasis>Seam catches, "
+"logs and swallows any exception that propagates out of a destroy method.</"
+"emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:400
+#, no-c-format
+msgid "@Observer"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:402
+#, no-c-format
+msgid "@Observer(\"somethingChanged\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:403
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when a component-driven event of "
+"the specified type occurs."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:406
+#, no-c-format
+msgid "@Observer(value=\"somethingChanged\",create=false)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:407
+#, no-c-format
+msgid ""
+"Specifies that the method should be called when an event of the specified "
+"type occurs but that an instance should not be created if one doesn't exist. "
+"If an instance does not exist and create is false, the event will not be "
+"observed. The default value for create is true."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:416
+#, no-c-format
+msgid "Annotations for context demarcation"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:417
+#, no-c-format
+msgid ""
+"These annotations provide declarative conversation demarcation. They appear "
+"on methods of Seam components, usually action listener methods."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:420
+#, no-c-format
+msgid ""
+"Every web request has a conversation context associated with it. Most of "
+"these conversations end at the end of the request. If you want a "
+"conversation that span multiple requests, you must \"promote\" the current "
+"conversation to a <emphasis>long-running conversation</emphasis> by calling "
+"a method marked with <literal>@Begin</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:425
+#, no-c-format
+msgid "<literal>@Begin</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:427
+#, no-c-format
+msgid "<programlisting>@Begin</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:428
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation begins when this method returns a "
+"non-null outcome without exception."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:431
+#, no-c-format
+msgid "@Begin(ifOutcome={\"success\", \"continue\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:432
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation begins when this action listener "
+"method returns with one of the given outcomes."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:435
+#, no-c-format
+msgid "@Begin(join=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:436
+#, no-c-format
+msgid ""
+"Specifies that if a long-running conversation is already in progress, the "
+"conversation context is simply propagated."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:439
+#, no-c-format
+msgid "@Begin(nested=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:440
+#, no-c-format
+msgid ""
+"Specifies that if a long-running conversation is already in progress, a new "
+"<emphasis>nested</emphasis> conversation context begins. The nested "
+"conversation will end when the next <literal>@End</literal> is encountered, "
+"and the outer conversation will resume. It is perfectly legal for multiple "
+"nested conversations to exist concurrently in the same outer conversation."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:443
+#, no-c-format
+msgid "@Begin(pageflow=\"process definition name\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:444
+#, no-c-format
+msgid ""
+"Specifies a jBPM process definition name that defines the pageflow for this "
+"conversation."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:447
+#, no-c-format
+msgid "@Begin(flushMode=FlushModeType.MANUAL)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:448
+#, no-c-format
+msgid ""
+"Specify the flush mode of any Seam-managed persistence contexts. "
+"<literal>flushMode=FlushModeType.MANUAL</literal> supports the use of "
+"<emphasis>atomic conversations</emphasis> where all write operations are "
+"queued in the conversation context until an explicit call to <literal>flush()"
+"</literal> (which usually occurs at the end of the conversation)."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:454
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in a new long-running conversation context."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:459
+#, no-c-format
+msgid ""
+"<literal>join</literal> &mdash; determines the behavior when a long-running "
+"conversation is already in progress. If <literal>true</literal>, the context "
+"is propagated. If <literal>false</literal>, an exception is thrown. Default "
+"to <literal>false</literal>. This setting is ignored when "
+"<literal>nested=true</literal> is specified"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:464
+#, no-c-format
+msgid ""
+"<literal>nested</literal> &mdash; specifies that a nested conversation "
+"should be started if a long-running conversation is already in progress."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:469 Annotations.xml:526 Annotations.xml:550
+#, no-c-format
+msgid ""
+"<literal>flushMode</literal> &mdash; set the flush mode of any Seam-managed "
+"Hibernate sessions or JPA persistence contexts that are created during this "
+"conversation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:474
+#, no-c-format
+msgid ""
+"<literal>pageflow</literal> &mdash; a process definition name of a jBPM "
+"process definition deployed via <literal>org.jboss.seam.core.jbpm."
+"pageflowDefinitions.</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:483
+#, no-c-format
+msgid "<literal>@End</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:485
+#, no-c-format
+msgid "<programlisting>@End</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:486
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation ends when this method returns a "
+"non-null outcome without exception."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:489
+#, no-c-format
+msgid ""
+"@End(ifOutcome={\"success\", \"error\"}, evenIfException={SomeException."
+"class, OtherException.class})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:490
+#, no-c-format
+msgid ""
+"Specifies that a long-running conversation ends when this action listener "
+"method returns with one of the given outcomes or throws one of the specified "
+"classes of exception."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:496
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in the end of the current long-running conversation."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:501 Annotations.xml:585
+#, no-c-format
+msgid ""
+"<literal>beforeRedirect</literal> &mdash; by default, the conversation will "
+"not actually be destroyed until after any redirect has occurred. Setting "
+"<literal>beforeRedirect=true</literal> specifies that the conversation "
+"should be destroyed at the end of the current request, and that the redirect "
+"will be processed in a new temporary conversation context."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:510
+#, no-c-format
+msgid "<literal>@StartTask</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:512
+#, no-c-format
+msgid "<programlisting>@StartTask</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:513
+#, no-c-format
+msgid ""
+"\"Starts\" a jBPM task. Specifies that a long-running conversation begins "
+"when this method returns a non-null outcome without exception. This "
+"conversation is associated with the jBPM task specified in the named request "
+"parameter. Within the context of this conversation, a business process "
+"context is also defined, for the business process instance of the task "
+"instance."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:516
+#, no-c-format
+msgid ""
+"The jBPM <literal>TaskInstance</literal> will be available in a request "
+"context variable named <literal>taskInstance</literal>. The jPBM "
+"<literal>ProcessInstance</literal> will be available in a request context "
+"variable named <literal>processInstance</literal>. (Of course, these objects "
+"are available for injection via <literal>@In</literal>.)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:521 Annotations.xml:545
+#, no-c-format
+msgid ""
+"<literal>taskIdParameter</literal> &mdash; the name of a request parameter "
+"which holds the id of the task. Default to <literal>\"taskId\"</literal>, "
+"which is also the default used by the Seam <literal>taskList</literal> JSF "
+"component."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:534
+#, no-c-format
+msgid "<literal>@BeginTask</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:536
+#, no-c-format
+msgid "<programlisting>@BeginTask</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:537
+#, no-c-format
+msgid ""
+"Resumes work on an incomplete jBPM task. Specifies that a long-running "
+"conversation begins when this method returns a non-null outcome without "
+"exception. This conversation is associated with the jBPM task specified in "
+"the named request parameter. Within the context of this conversation, a "
+"business process context is also defined, for the business process instance "
+"of the task instance."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:540
+#, no-c-format
+msgid ""
+"The jBPM <literal>TaskInstance</literal> will be available in a request "
+"context variable named <literal>taskInstance</literal>. The jPBM "
+"<literal>ProcessInstance</literal> will be available in a request context "
+"variable named <literal>processInstance</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:558
+#, no-c-format
+msgid "<literal>@EndTask</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:560
+#, no-c-format
+msgid "<programlisting>@EndTask</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:561
+#, no-c-format
+msgid ""
+"\"Ends\" a jBPM task. Specifies that a long-running conversation ends when "
+"this method returns a non-null outcome, and that the current task is "
+"complete. Triggers a jBPM transition. The actual transition triggered will "
+"be the default transition unless the application has called "
+"<literal>Transition.setName()</literal> on the built-in component named "
+"<literal>transition</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:564
+#, no-c-format
+msgid "@EndTask(transition=\"transitionName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:565
+#, no-c-format
+msgid "Triggers the given jBPM transition."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:568
+#, no-c-format
+msgid "@EndTask(ifOutcome={\"success\", \"continue\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:569
+#, no-c-format
+msgid ""
+"Specifies that the task ends when this method returns one of the listed "
+"outcomes."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:575
+#, no-c-format
+msgid ""
+"<literal>transition</literal> &mdash; the name of the jBPM transition to be "
+"triggered when ending the task. Defaults to the default transition."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:580
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; specifies the JSF outcome or outcomes "
+"that result in the end of the task."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:594
+#, no-c-format
+msgid "@CreateProcess"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:596
+#, no-c-format
+msgid "@CreateProcess(definition=\"process definition name\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:597
+#, no-c-format
+msgid ""
+"Creates a new jBPM process instance when the method returns a non-null "
+"outcome without exception. The <literal>ProcessInstance</literal> object "
+"will be available in a context variable named <literal>processInstance</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:602
+#, no-c-format
+msgid ""
+"<literal>definition</literal> &mdash; the name of the jBPM process "
+"definition deployed via <literal>org.jboss.seam.core.jbpm."
+"processDefinitions</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:610
+#, no-c-format
+msgid "@ResumeProcess"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:612
+#, no-c-format
+msgid "@ResumeProcess(processIdParameter=\"processId\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:613
+#, no-c-format
+msgid ""
+"Re-enters the scope of an existing jBPM process instance when the method "
+"returns a non-null outcome without exception. The <literal>ProcessInstance</"
+"literal> object will be available in a context variable named "
+"<literal>processInstance</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:618
+#, no-c-format
+msgid ""
+"<literal>processIdParameter</literal> &mdash; the name a request parameter "
+"holding the process id. Default to <literal>\"processId\"</literal>."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:629
+#, no-c-format
+msgid "Annotations for transaction demarcation"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:630
+#, no-c-format
+msgid ""
+"Seam provides an annotation that lets you force a rollback of the JTA "
+"transaction for certain action listener outcomes."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:635
+#, no-c-format
+msgid "@Rollback"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:637
+#, no-c-format
+msgid "@Rollback(ifOutcome={\"failure\", \"not-found\"})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:638
+#, no-c-format
+msgid ""
+"If the outcome of the method matches any of the listed outcomes, or if no "
+"outcomes are listed, set the transaction to rollback only when the method "
+"completes."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:643
+#, no-c-format
+msgid ""
+"<literal>ifOutcome</literal> &mdash; the JSF outcomes that cause a "
+"transaction rollback (no outcomes is interpreted to mean any outcome)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:651
+#, no-c-format
+msgid "<literal>@Transactional</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:653
+#, no-c-format
+msgid "<programlisting>@Transactional</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:654
+#, no-c-format
+msgid ""
+"Specifies that a JavaBean component should have a similar transactional "
+"behavior to the default behavior of a session bean component. ie. method "
+"invocations should take place in a transaction, and if no transaction exists "
+"when the method is called, a transaction will be started just for that "
+"method. This annotation may be applied at either class or method level."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:660
+#, no-c-format
+msgid ""
+"Seam applications usually use the standard EJB3 annotations for all other "
+"transaction demarcation needs."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:666
+#, no-c-format
+msgid "Annotations for exceptions"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:667
+#, no-c-format
+msgid ""
+"These annotations let you specify how Seam should handle an exception that "
+"propagates out of a Seam component."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:672
+#, no-c-format
+msgid "@Redirect"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:674
+#, no-c-format
+msgid "@Redirect(viewId=\"error.jsp\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:675
+#, no-c-format
+msgid ""
+"Specifies that the annotated exception causes a browser redirect to a "
+"specified view id."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:680
+#, no-c-format
+msgid ""
+"<literal>viewId</literal> &mdash; specifies the JSF view id to redirect to."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:685
+#, no-c-format
+msgid ""
+"<literal>message</literal> &mdash; a message to be displayed, default to the "
+"exception message."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:690 Annotations.xml:716
+#, no-c-format
+msgid ""
+"<literal>end</literal> &mdash; specifies that the long-running conversation "
+"should end, default to <literal>false</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:698
+#, no-c-format
+msgid "@HttpError"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:700
+#, no-c-format
+msgid "@HttpError(errorCode=404)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:701
+#, no-c-format
+msgid "Specifies that the annotated exception causes a HTTP error to be sent."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:706
+#, no-c-format
+msgid ""
+"<literal>errorCode</literal> &mdash; the HTTP error code, default to "
+"<literal>500</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:711
+#, no-c-format
+msgid ""
+"<literal>message</literal> &mdash; a message to be sent with the HTTP error, "
+"default to the exception message."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:727
+#, no-c-format
+msgid "Annotations for validation"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:728
+#, no-c-format
+msgid ""
+"This annotation triggers Hibernate Validator. It appears on a method of a "
+"Seam component, almost always an action listener method."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:731
+#, no-c-format
+msgid ""
+"Please refer to the documentation for the Hibernate Annotations package for "
+"information about the annotations defined by the Hibernate Validator "
+"framework."
+msgstr ""
+
+#. Tag: emphasis
+#: Annotations.xml:735
+#, no-c-format
+msgid ""
+"Note that use of <literal>@IfInvalid</literal> is now semi-deprecated and "
+"<literal>&lt;s:validateAll&gt;</literal> is now preferred."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:739
+#, no-c-format
+msgid "@IfInvalid"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:741
+#, no-c-format
+msgid "@IfInvalid(outcome=\"invalid\", refreshEntities=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:742
+#, no-c-format
+msgid ""
+"Specifies that Hibernate Validator should validate the component before the "
+"method is invoked. If the invocation fails, the specified outcome will be "
+"returned, and the validation failure messages returned by Hibernate "
+"Validator will be added to the <literal>FacesContext</literal>. Otherwise, "
+"the invocation will proceed."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:747
+#, no-c-format
+msgid ""
+"<literal>outcome</literal> &mdash; the JSF outcome when validation fails."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:752
+#, no-c-format
+msgid ""
+"<literal>refreshEntities</literal> &mdash; specifies that any invalid entity "
+"in the managed state should be refreshed from the database when validation "
+"fails. Default to <literal>false</literal>. (Useful with extended "
+"persistence contexts.)"
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:763
+#, no-c-format
+msgid "Annotations for Seam Remoting"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:764
+#, no-c-format
+msgid ""
+"Seam Remoting requires that the local interface of a session bean be "
+"annotated with the following annotation:"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:769
+#, no-c-format
+msgid "@WebRemote"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:771
+#, no-c-format
+msgid "@WebRemote(exclude=\"path.to.exclude\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:772
+#, no-c-format
+msgid ""
+"Indicates that the annotated method may be called from client-side "
+"JavaScript. The <literal>exclude</literal> property is optional and allows "
+"objects to be excluded from the result's object graph (see the Remoting "
+"chapter for more details)."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:781
+#, no-c-format
+msgid "Annotations for Seam interceptors"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:782
+#, no-c-format
+msgid "The following annotations appear on Seam interceptor classes."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:785
+#, no-c-format
+msgid ""
+"Please refer to the documentation for the EJB 3.0 specification for "
+"information about the annotations required for EJB interceptor definition."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:790
+#, no-c-format
+msgid "@Interceptor"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:792
+#, no-c-format
+msgid "@Interceptor(stateless=true)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:793
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is stateless and Seam may optimize "
+"replication."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:796
+#, no-c-format
+msgid "@Interceptor(type=CLIENT)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:797
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is a \"client-side\" interceptor that is "
+"called before the EJB container."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:800
+#, no-c-format
+msgid "@Interceptor(around={SomeInterceptor.class, OtherInterceptor.class})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:801
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is positioned higher in the stack than the "
+"given interceptors."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:804
+#, no-c-format
+msgid "@Interceptor(within={SomeInterceptor.class, OtherInterceptor.class})"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:805
+#, no-c-format
+msgid ""
+"Specifies that this interceptor is positioned deeper in the stack than the "
+"given interceptors."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:814
+#, no-c-format
+msgid "Annotations for asynchronicity"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:815
+#, no-c-format
+msgid ""
+"The following annotations are used to declare an asynchronous method, for "
+"example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:818
+#, no-c-format
+msgid ""
+"@Asynchronous public void scheduleAlert(Alert alert, @Expiration Date date) "
+"{ ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:819
+#, no-c-format
+msgid ""
+"@Asynchronous public Timer scheduleAlerts(Alert alert, @Expiration Date "
+"date, \n"
+"    @IntervalDuration long interval) { ... }"
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:822
+#, no-c-format
+msgid "<literal>@Asynchronous</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:824
+#, no-c-format
+msgid "<programlisting>@Asynchronous</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:825
+#, no-c-format
+msgid "Specifies that the method call is processed asynchronously."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:831
+#, no-c-format
+msgid "<literal>@Duration</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:833
+#, no-c-format
+msgid "<programlisting>@Duration</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:834
+#, no-c-format
+msgid ""
+"Specifies that a parameter of the asynchronous call is the duration before "
+"the call is processed (or first processed for recurring calls)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:840
+#, no-c-format
+msgid "<literal>@Expiration</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:842
+#, no-c-format
+msgid "<programlisting>@Expiration</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:843
+#, no-c-format
+msgid ""
+"Specifies that a parameter of the asynchronous call is the datetime at which "
+"the call is processed (or first processed for recurring calls)."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:849
+#, no-c-format
+msgid "<literal>@IntervalDuration</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:851
+#, no-c-format
+msgid "<programlisting>@IntervalDuration</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:852
+#, no-c-format
+msgid ""
+"Specifies that an asynchronous method call recurs, and that the annotationed "
+"parameter is duration between recurrences."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:861
+#, no-c-format
+msgid "Annotations for use with JSF <literal>dataTable</literal>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:862
+#, no-c-format
+msgid ""
+"The following annotations make it easy to implement clickable lists backed "
+"by a stateful session bean. They appear on attributes."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:867
+#, no-c-format
+msgid "@DataModel"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:869
+#, no-c-format
+msgid "@DataModel(\"variableName\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:870
+#, no-c-format
+msgid ""
+"Exposes an attribute of type <literal>List</literal>, <literal>Map</"
+"literal>, <literal>Set</literal> or <literal>Object[]</literal> as a JSF "
+"<literal>DataModel</literal> into the scope of the owning component (or the "
+"<literal>EVENT</literal> scope if the owning component is "
+"<literal>STATELESS</literal>). In the case of <literal>Map</literal>, each "
+"row of the <literal>DataModel</literal> is a <literal>Map.Entry</literal>."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:875
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; name of the conversation context variable. "
+"Default to the attribute name."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:880
+#, no-c-format
+msgid ""
+"<literal>scope</literal> &mdash; if <literal>scope=ScopeType.PAGE</literal> "
+"is explicitly specified, the <literal>DataModel</literal> will be kept in "
+"the <literal>PAGE</literal> context."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:888
+#, no-c-format
+msgid "<literal>@DataModelSelection</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:890
+#, no-c-format
+msgid "<programlisting>@DataModelSelection</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:891
+#, no-c-format
+msgid ""
+"Injects the selected value from the JSF <literal>DataModel</literal> (this "
+"is the element of the underlying collection, or the map value)."
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:896 Annotations.xml:912
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; name of the conversation context variable. "
+"Not needed if there is exactly one <literal>@DataModel</literal> in the "
+"component."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:904
+#, no-c-format
+msgid "<literal>@DataModelSelectionIndex</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:906
+#, no-c-format
+msgid "<programlisting>@DataModelSelectionIndex</programlisting>"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:907
+#, no-c-format
+msgid ""
+"Exposes the selection index of the JSF <literal>DataModel</literal> as an "
+"attribute of the component (this is the row number of the underlying "
+"collection, or the map key)."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:923
+#, no-c-format
+msgid "Meta-annotations for databinding"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:924
+#, no-c-format
+msgid ""
+"These meta-annotations make it possible to implement similar functionality "
+"to <literal>@DataModel</literal> and <literal>@DataModelSelection</literal> "
+"for other datastructures apart from lists."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:929
+#, no-c-format
+msgid "@DataBinderClass"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:931
+#, no-c-format
+msgid "@DataBinderClass(DataModelBinder.class)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:932
+#, no-c-format
+msgid "Specifies that an annotation is a databinding annotation."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:938
+#, no-c-format
+msgid "@DataSelectorClass"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:940
+#, no-c-format
+msgid "@DataSelectorClass(DataModelSelector.class)"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:941
+#, no-c-format
+msgid "Specifies that an annotation is a dataselection annotation."
+msgstr ""
+
+#. Tag: title
+#: Annotations.xml:950
+#, no-c-format
+msgid "Annotations for packaging"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:951
+#, no-c-format
+msgid ""
+"This annotation provides a mechanism for declaring information about a set "
+"of components that are packaged together. It can be applied to any Java "
+"package."
+msgstr ""
+
+#. Tag: literal
+#: Annotations.xml:956
+#, no-c-format
+msgid "@Namespace"
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:958
+#, no-c-format
+msgid "@Namespace(value=\"http://jboss.com/products/seam/example/seampay\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:959
+#, no-c-format
+msgid ""
+"Specifies that components in the current package are associated with the "
+"given namespace. The declared namespace can be used as an XML namespace in a "
+"<literal>components.xml</literal> file to simplify application configuration."
+msgstr ""
+
+#. Tag: programlisting
+#: Annotations.xml:962
+#, no-c-format
+msgid ""
+"@Namespace(value=\"http://jboss.com/products/seam/core\", prefix=\"org.jboss."
+"seam.core\")"
+msgstr ""
+
+#. Tag: para
+#: Annotations.xml:963
+#, no-c-format
+msgid ""
+"Specifies a namespace to associate with a given package. Additionally, it "
+"specifies a component name prefix to be applied to component names specified "
+"in the XML file. For example, an XML element named <literal>microcontainer</"
+"literal> that is associated with this namespace would be understood to "
+"actually refere to a component named <literal>org.jboss.seam.core."
+"microcontainer</literal>."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Book_Info.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Book_Info.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Book_Info.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,38 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Book_Info.xml:10
+#, no-c-format
+msgid "Seam - Contextual Components"
+msgstr ""
+
+#. Tag: subtitle
+#: Book_Info.xml:11
+#, no-c-format
+msgid "A Framework for Java EE 5"
+msgstr ""
+
+#. Tag: para
+#: Book_Info.xml:15
+#, no-c-format
+msgid "This book is a Reference Guide for Seam"
+msgstr ""
+
+#. Tag: holder
+#: Book_Info.xml:36
+#, no-c-format
+msgid "&FORMAL-RHI;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Cache.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Cache.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Cache.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,318 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Cache.xml:10
+#, no-c-format
+msgid "Caching"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:11
+#, no-c-format
+msgid ""
+"In almost all enterprise applications, the database is the primary "
+"bottleneck, and the least scalable tier of the runtime environment. People "
+"from a PHP/Ruby environment will try to tell you that so-called \"shared "
+"nothing\" architectures scale well. While that may be literally true, I "
+"don't know of many interesting multi-user applications which can be "
+"implemented with no sharing of resources between different nodes of the "
+"cluster. What these silly people are really thinking of is a \"share nothing "
+"except for the database\" architecture. Of course, sharing the database is "
+"the primary problem with scaling a multi-user application&mdash;so the claim "
+"that this architecture is highly scalable is absurd, and tells you a lot "
+"about the kind of applications that these folks spend most of their time "
+"working on."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:14
+#, no-c-format
+msgid ""
+"Almost anything we can possibly do to share the database <emphasis>less "
+"often</emphasis> is worth doing."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:17
+#, no-c-format
+msgid ""
+"This calls for a cache. Well, not just one cache. A well designed Seam "
+"application will feature a rich, multi-layered caching strategy that impacts "
+"every layer of the application:"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:22
+#, no-c-format
+msgid ""
+"The database, of course, has its own cache. This is super-important, but "
+"can't scale like a cache in the application tier."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:27
+#, no-c-format
+msgid ""
+"Your ORM solution (Hibernate, or some other JPA implementation) has a second-"
+"level cache of data from the database. This is a very powerful capability, "
+"but is often misused. In a clustered environment, keeping the data in the "
+"cache transactionally consistent across the whole cluster, and with the "
+"database, is quite expensive. It makes most sense for data which is shared "
+"between many users, and is updated rarely. In traditional stateless "
+"architectures, people often try to use the second-level cache for "
+"conversational state. This is always bad, and is especially wrong in Seam."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:32
+#, no-c-format
+msgid ""
+"The Seam conversation context is a cache of conversational state. Components "
+"you put into the conversation context can hold and cache state relating to "
+"the current user interaction."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:37
+#, no-c-format
+msgid ""
+"In particular, the Seam-managed persistence context (or an extended EJB "
+"container-managed persistence context associated with a conversation-scoped "
+"stateful session bean) acts as a cache of data that has been read in the "
+"current conversation. This cache tends to have a pretty high hitrate! Seam "
+"optimizes the replication of Seam-managed persistence contexts in a "
+"clustered environment, and there is no requirement for transactional "
+"consistency with the database (optimistic locking is sufficient) so you "
+"don't need to worry too much about the performance implications of this "
+"cache, unless you read thousands of objects into a single persistence "
+"context."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:42
+#, no-c-format
+msgid ""
+"The application can cache non-transactional state in the Seam application "
+"context. State kept in the application context is of course not visible to "
+"other nodes in the cluster."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:47
+#, no-c-format
+msgid ""
+"The application can cache transactional state using the Seam "
+"<literal>pojoCache</literal> component, which integrates JBossCache into the "
+"Seam environment. This state will be visible to other nodes if you run JBoss "
+"cache in a clustered mode."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:52
+#, no-c-format
+msgid ""
+"Finally, Seam lets you cache rendered fragments of a JSF page. Unlike the "
+"ORM second-level cache, this cache is not automatically invalidated when "
+"data changes, so you need to write application code to perform explicit "
+"invalidation, or set appropriate expiration policies."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:57
+#, no-c-format
+msgid ""
+"For more information about the second-level cache, you'll need to refer to "
+"the documentation of your ORM solution, since this is an extremely complex "
+"topic. In this section we'll discuss the use of JBossCache directly, via the "
+"<literal>pojoCache</literal> component, or as the page fragment cache, via "
+"the <literal>&lt;s:cache&gt;</literal> control."
+msgstr ""
+
+#. Tag: title
+#: Cache.xml:61
+#, no-c-format
+msgid "Using JBossCache in Seam"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:62
+#, no-c-format
+msgid ""
+"The built-in <literal>pojoCache</literal> component manages an instance of "
+"<literal>org.jboss.cache.aop.PojoCache</literal>. You can safely put any "
+"immutable Java object in the cache, and it will be replicated across the "
+"cluster (assuming that replication is enabled). If you want to keep mutable "
+"objects in the cache, you'll need to run the JBossCache bytecode "
+"preprocessor to ensure that changes to the objects will be automatically "
+"detected and replicated."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:65
+#, no-c-format
+msgid ""
+"To use <literal>pojoCache</literal>, all you need to do is put the "
+"JBossCache jars in the classpath, and provide a resource named "
+"<literal>treecache.xml</literal> with an appropriate cache configuration. "
+"JBossCache has many scary and confusing configuration settings, so we won't "
+"discuss them here. Please refer to the JBossCache documentation for more "
+"information."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:68
+#, no-c-format
+msgid ""
+"For an EAR depoyment of Seam, we recommend that the JBossCache jars and "
+"configuration go directly into the EAR. Make sure you declare the jars in "
+"<literal>application.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:71
+#, no-c-format
+msgid "Now you can inject the cache into any Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:74
+#, no-c-format
+msgid ""
+"@Name(\"chatroom\")\n"
+"public class Chatroom {\n"
+"    @In PojoCache pojoCache;\n"
+"    \n"
+"    public void join(String username) {\n"
+"      try\n"
+"      {\n"
+"         Set&lt;String&gt; userList = (Set&lt;String&gt;) pojoCache.get"
+"(\"chatroom\", \"userList\");\n"
+"         if (userList==null) \n"
+"         {\n"
+"            userList = new HashSet&lt;String&gt;();\n"
+"            pojoCache.put(\"chatroom\", \"userList\", userList);\n"
+"         }\n"
+"         userList.put(username);\n"
+"      }\n"
+"      catch (CacheException ce)\n"
+"      {\n"
+"         throw new RuntimeException(ce);\n"
+"      }\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:75
+#, no-c-format
+msgid ""
+"If you want to have multiple JBossCache configurations in your application, "
+"use <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:78
+#, no-c-format
+msgid ""
+"&lt;core:pojo-cache name=\"myCache\" cfg-resource-name=\"myown/cache.xml\"/"
+"&gt;"
+msgstr ""
+
+#. Tag: title
+#: Cache.xml:82
+#, no-c-format
+msgid "Page fragment caching"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:83
+#, no-c-format
+msgid ""
+"The most interesting user of JBossCache is the <literal>&lt;s:cache&gt;</"
+"literal> tag, Seam's solution to the problem of page fragment caching in "
+"JSF. <literal>&lt;s:cache&gt;</literal> uses <literal>pojoCache</literal> "
+"internally, so you need to follow the steps listed above before you can use "
+"it. (Put the jars in the EAR, wade through the scary configuration options, "
+"etc.)"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:86
+#, no-c-format
+msgid ""
+"<literal>&lt;s:cache&gt;</literal> is used for caching some rendered content "
+"which changes rarely. For example, the welcome page of our blog displays the "
+"recent blog entries:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:89
+#, no-c-format
+msgid ""
+"&lt;s:cache key=\"recentEntries-#{blog.id}\" region=\"welcomePageFragments"
+"\"&gt;\n"
+"   &lt;h:dataTable value=\"#{blog.recentEntries}\" var=\"blogEntry\"&gt;\n"
+"      &lt;h:column&gt;\n"
+"         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"         &lt;div&gt;\n"
+"            &lt;s:formattedText value=\"#{blogEntry.body}\"/&gt;\n"
+"         &lt;/div&gt;\n"
+"      &lt;/h:column&gt;\n"
+"   &lt;/h:dataTable&gt;\n"
+"&lt;/s:cache&gt;"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:90
+#, no-c-format
+msgid ""
+"The <literal>key</literal> let's you have multiple cached versions of each "
+"page fragment. In this case, there is one cached version per blog. The "
+"<literal>region</literal> determines the JBossCache node that all version "
+"will be stored in. Different nodes may have different expiry policies. "
+"(That's the stuff you set up using the aforementioned scary configuration "
+"options.)"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:93
+#, no-c-format
+msgid ""
+"Of course, the big problem with <literal>&lt;s:cache&gt;</literal> is that "
+"it is too stupid to know when the underlying data changes (for example, when "
+"the blogger posts a new entry). So you need to evict the cached fragment "
+"manually:"
+msgstr ""
+
+#. Tag: programlisting
+#: Cache.xml:96
+#, no-c-format
+msgid ""
+"public void post() {\n"
+"    ...\n"
+"    entityManager.persist(blogEntry);\n"
+"    pojoCache.remove(\"welcomePageFragments\", \"recentEntries-\" + blog."
+"getId() );\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Cache.xml:97
+#, no-c-format
+msgid ""
+"Alternatively, if it is not critical that changes are immediately visible to "
+"the user, you could set a short expiry time on the JbossCache node."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Components.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Components.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Components.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,2007 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Components.xml:10
+#, no-c-format
+msgid "Built-in Seam components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:11
+#, no-c-format
+msgid ""
+"This chapter describes Seam's built-in components, and their configuration "
+"properties."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:14
+#, no-c-format
+msgid ""
+"Note that you can replace any of the built in components with your own "
+"implementations simply by specifying the name of one of the built in "
+"components on your own class using <literal>@Name</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:17
+#, no-c-format
+msgid ""
+"Note also that even though all the built in components use a qualified name, "
+"most of them are aliased to unqualified names by default. These aliases "
+"specify <literal>auto-create=\"true\"</literal>, so you do not need to use "
+"<literal>create=true</literal> when injecting built-in components by their "
+"unqualified name."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:21
+#, no-c-format
+msgid "Context injection components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:22
+#, no-c-format
+msgid ""
+"The first set of built in components exist purely to support injection of "
+"various contextual objects. For example, the following component instance "
+"variable would have the Seam session context object injected:"
+msgstr ""
+
+#. Tag: programlisting
+#: Components.xml:25
+#, no-c-format
+msgid "@In private Context sessionContext;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:28
+#, no-c-format
+msgid "org.jboss.seam.core.eventContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:30
+#, no-c-format
+msgid "Manager component for the event context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:36
+#, no-c-format
+msgid "org.jboss.seam.core.pageContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:38
+#, no-c-format
+msgid "Manager component for the page context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:44
+#, no-c-format
+msgid "org.jboss.seam.core.conversationContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:46
+#, no-c-format
+msgid "Manager component for the conversation context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:52
+#, no-c-format
+msgid "org.jboss.seam.core.sessionContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:54
+#, no-c-format
+msgid "Manager component for the session context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:60
+#, no-c-format
+msgid "org.jboss.seam.core.applicationContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:62
+#, no-c-format
+msgid "Manager component for the appication context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:68
+#, no-c-format
+msgid "org.jboss.seam.core.businessProcessContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:70
+#, no-c-format
+msgid "Manager component for the business process context object"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:76
+#, no-c-format
+msgid "org.jboss.seam.core.facesContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:78
+#, no-c-format
+msgid ""
+"Manager component for the <literal>FacesContext</literal> context object "
+"(not a true Seam context)"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:84 Components.xml:267 Components.xml:441 Components.xml:572
+#, no-c-format
+msgid "All of these components are always installed."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:90
+#, no-c-format
+msgid "Utility components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:91
+#, no-c-format
+msgid "These components are merely useful."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:96
+#, no-c-format
+msgid "org.jboss.seam.core.facesMessages"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:98
+#, no-c-format
+msgid "Allows faces success messages to propagate across a browser redirect."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:103
+#, no-c-format
+msgid ""
+"<literal>add(FacesMessage facesMessage)</literal> &mdash; add a faces "
+"message, which will be displayed during the next render response phase that "
+"occurs in the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:108
+#, no-c-format
+msgid ""
+"<literal>add(String messageTemplate)</literal> &mdash; add a faces message, "
+"rendered from the given message template which may contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:113
+#, no-c-format
+msgid ""
+"<literal>add(Severity severity, String messageTemplate)</literal> &mdash; "
+"add a faces message, rendered from the given message template which may "
+"contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:118
+#, no-c-format
+msgid ""
+"<literal>addFromResourceBundle(String key)</literal> &mdash; add a faces "
+"message, rendered from a message template defined in the Seam resource "
+"bundle which may contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:123
+#, no-c-format
+msgid ""
+"<literal>addFromResourceBundle(Severity severity, String key)</literal> "
+"&mdash; add a faces message, rendered from a message template defined in the "
+"Seam resource bundle which may contain EL expressions."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:128
+#, no-c-format
+msgid "<literal>clear()</literal> &mdash; clear all messages."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:136
+#, no-c-format
+msgid "org.jboss.seam.core.redirect"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:138
+#, no-c-format
+msgid ""
+"A convenient API for performing redirects with parameters (this is "
+"especially useful for bookmarkable search results screens)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:143
+#, no-c-format
+msgid ""
+"<literal>redirect.viewId</literal> &mdash; the JSF view id to redirect to."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:148
+#, no-c-format
+msgid ""
+"<literal>redirect.conversationPropagationEnabled</literal> &mdash; "
+"determines whether the conversation will propagate across the redirect."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:153
+#, no-c-format
+msgid ""
+"<literal>redirect.parameters</literal> &mdash; a map of request parameter "
+"name to value, to be passed in the redirect request."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:158
+#, no-c-format
+msgid "<literal>execute()</literal> &mdash; perform the redirect immediately."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:163
+#, no-c-format
+msgid ""
+"<literal>captureCurrentRequest()</literal> &mdash; stores the view id and "
+"request parameters of the current GET request (in the conversation context), "
+"for later use by calling <literal>execute()</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:171
+#, no-c-format
+msgid "org.jboss.seam.core.httpError"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:173
+#, no-c-format
+msgid "A convenient API for sending HTTP errors."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:179
+#, no-c-format
+msgid "org.jboss.seam.core.events"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:181
+#, no-c-format
+msgid ""
+"An API for raising events that can be observed via <literal>@Observer</"
+"literal> methods, or method bindings in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:186
+#, no-c-format
+msgid ""
+"<literal>raiseEvent(String type)</literal> &mdash; raise an event of a "
+"particular type and distribute to all observers."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:191
+#, no-c-format
+msgid ""
+"<literal>raiseAsynchronousEvent(String type)</literal> &mdash; raise an "
+"event to be processed asynchronously by the EJB3 timer service."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:196
+#, no-c-format
+msgid ""
+"<literal>raiseTimedEvent(String type, ....)</literal> &mdash; schedule an "
+"event to be processed asynchronously by the EJB3 timer service."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:201
+#, no-c-format
+msgid ""
+"<literal>addListener(String type, String methodBinding)</literal> &mdash; "
+"add an observer for a particular event type."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:209
+#, no-c-format
+msgid "org.jboss.seam.core.interpolator"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:211
+#, no-c-format
+msgid "An API for interpolating the values of JSF EL expressions in Strings."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:216
+#, no-c-format
+msgid ""
+"<literal>interpolate(String template)</literal> &mdash; scan the template "
+"for JSF EL expressions of the form <literal>#{...}</literal> and replace "
+"them with their evaluated values."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:224
+#, no-c-format
+msgid "org.jboss.seam.core.expressions"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:226
+#, no-c-format
+msgid "An API for creating value and method bindings."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:231
+#, no-c-format
+msgid ""
+"<literal>createValueBinding(String expression)</literal> &mdash; create a "
+"value binding object."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:236
+#, no-c-format
+msgid ""
+"<literal>createMethodBinding(String expression)</literal> &mdash; create a "
+"method binding object."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:244
+#, no-c-format
+msgid "org.jboss.seam.core.pojoCache"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:246
+#, no-c-format
+msgid ""
+"Manager component for a JBoss Cache <literal>PojoCache</literal> instance."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:251
+#, no-c-format
+msgid ""
+"<literal>pojoCache.cfgResourceName</literal> &mdash; the name of the "
+"configuration file. Default to <literal>treecache.xml</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:259
+#, no-c-format
+msgid "org.jboss.seam.core.uiComponent"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:261
+#, no-c-format
+msgid ""
+"Allows access to a JSF <literal>UIComponent</literal> by its id from the EL. "
+"For example, we can write <literal>@In(\"#{uiComponent['myForm:address']."
+"value}\")</literal>."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:273
+#, no-c-format
+msgid "Components for internationalization and themes"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:274
+#, no-c-format
+msgid ""
+"The next group of components make it easy to build internationalized user "
+"interfaces using Seam."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:279
+#, no-c-format
+msgid "org.jboss.seam.core.locale"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:281
+#, no-c-format
+msgid "The Seam locale. The locale is session scoped."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:287
+#, no-c-format
+msgid "org.jboss.seam.core.timezone"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:289
+#, no-c-format
+msgid "The Seam timezone. The timezone is session scoped."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:295
+#, no-c-format
+msgid "org.jboss.seam.core.resourceBundle"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:297
+#, no-c-format
+msgid ""
+"The Seam resource bundle. The resource bundle is session scoped. The Seam "
+"resource bundle performs a depth-first search for keys in a list of Java "
+"resource bundles."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:302
+#, no-c-format
+msgid ""
+"<literal>resourceBundle.bundleNames</literal> &mdash; the names of the Java "
+"resource bundles to search. Default to <literal>messages</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:310
+#, no-c-format
+msgid "org.jboss.seam.core.localeSelector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:312
+#, no-c-format
+msgid ""
+"Supports selection of the locale either at configuration time, or by the "
+"user at runtime."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:317 Components.xml:367
+#, no-c-format
+msgid "<literal>select()</literal> &mdash; select the specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:322
+#, no-c-format
+msgid ""
+"<literal>localeSelector.locale</literal> &mdash; the actual <literal>java."
+"util.Locale</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:327
+#, no-c-format
+msgid ""
+"<literal>localeSelector.localeString</literal> &mdash; the stringified "
+"representation of the locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:332
+#, no-c-format
+msgid ""
+"<literal>localeSelector.language</literal> &mdash; the language for the "
+"specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:337
+#, no-c-format
+msgid ""
+"<literal>localeSelector.country</literal> &mdash; the country for the "
+"specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:342
+#, no-c-format
+msgid ""
+"<literal>localeSelector.variant</literal> &mdash; the variant for the "
+"specified locale."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:347
+#, no-c-format
+msgid ""
+"<literal>localeSelector.supportedLocales</literal> &mdash; a list of "
+"<literal>SelectItem</literal>s representing the supported locales listed in "
+"<literal>jsf-config.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:352
+#, no-c-format
+msgid ""
+"<literal>localeSelector.cookieEnabled</literal> &mdash; specifies that the "
+"locale selection should be persisted via a cookie."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:360
+#, no-c-format
+msgid "org.jboss.seam.core.timezoneSelector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:362
+#, no-c-format
+msgid ""
+"Supports selection of the timezone either at configuration time, or by the "
+"user at runtime."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:372
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.timezone</literal> &mdash; the actual "
+"<literal>java.util.TimeZone</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:377
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.timeZoneId</literal> &mdash; the stringified "
+"representation of the timezone."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:382
+#, no-c-format
+msgid ""
+"<literal>timezoneSelector.cookieEnabled</literal> &mdash; specifies that the "
+"timezone selection should be persisted via a cookie."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:390
+#, no-c-format
+msgid "org.jboss.seam.core.messages"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:392
+#, no-c-format
+msgid ""
+"A map containing internationalized messages rendered from message templates "
+"defined in the Seam resource bundle."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:398
+#, no-c-format
+msgid "org.jboss.seam.theme.themeSelector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:400
+#, no-c-format
+msgid ""
+"Supports selection of the theme either at configuration time, or by the user "
+"at runtime."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:405
+#, no-c-format
+msgid "<literal>select()</literal> &mdash; select the specified theme."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:410
+#, no-c-format
+msgid ""
+"<literal>theme.availableThemes</literal> &mdash; the list of defined themes."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:415
+#, no-c-format
+msgid "<literal>themeSelector.theme</literal> &mdash; the selected theme."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:420
+#, no-c-format
+msgid ""
+"<literal>themeSelector.themes</literal> &mdash; a list of "
+"<literal>SelectItem</literal>s representing the defined themes."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:425
+#, no-c-format
+msgid ""
+"<literal>themeSelector.cookieEnabled</literal> &mdash; specifies that the "
+"theme selection should be persisted via a cookie."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:433
+#, no-c-format
+msgid "org.jboss.seam.theme.theme"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:435
+#, no-c-format
+msgid "A map containing theme entries."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:447
+#, no-c-format
+msgid "Components for controlling conversations"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:448
+#, no-c-format
+msgid ""
+"The next group of components allow control of conversations by the "
+"application or user interface."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:453
+#, no-c-format
+msgid "org.jboss.seam.core.conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:455
+#, no-c-format
+msgid ""
+"API for application control of attributes of the current Seam conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:460 Components.xml:475
+#, no-c-format
+msgid "<literal>getId()</literal> &mdash; returns the current conversation id"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:465
+#, no-c-format
+msgid ""
+"<literal>isNested()</literal> &mdash; is the current conversation a nested "
+"conversation?"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:470
+#, no-c-format
+msgid ""
+"<literal>isLongRunning()</literal> &mdash; is the current conversation a "
+"long-running conversation?"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:480
+#, no-c-format
+msgid ""
+"<literal>getParentId()</literal> &mdash; returns the conversation id of the "
+"parent conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:485
+#, no-c-format
+msgid ""
+"<literal>getRootId()</literal> &mdash; returns the conversation id of the "
+"root conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:490
+#, no-c-format
+msgid ""
+"<literal>setTimeout(int timeout)</literal> &mdash; sets the timeout for the "
+"current conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:495
+#, no-c-format
+msgid ""
+"<literal>setViewId(String outcome)</literal> &mdash; sets the view id to be "
+"used when switching back to the current conversation from the conversation "
+"switcher, conversation list, or breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:500
+#, no-c-format
+msgid ""
+"<literal>setDescription(String description)</literal> &mdash; sets the "
+"description of the current conversation to be displayed in the conversation "
+"switcher, conversation list, or breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:505
+#, no-c-format
+msgid ""
+"<literal>redirect()</literal> &mdash; redirect to the last well-defined view "
+"id for this conversation (useful after login challenges)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:510
+#, no-c-format
+msgid ""
+"<literal>leave()</literal> &mdash; exit the scope of this conversation, "
+"without actually ending the conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:515
+#, no-c-format
+msgid ""
+"<literal>begin()</literal> &mdash; begin a long-running conversation "
+"(equivalent to <literal>@Begin</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:520
+#, no-c-format
+msgid ""
+"<literal>beginPageflow(String pageflowName)</literal> &mdash; begin a long-"
+"running conversation with a pageflow (equivalent to <literal>@Begin(pageflow="
+"\"...\")</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:525
+#, no-c-format
+msgid ""
+"<literal>end()</literal> &mdash; end a long-running conversation (equivalent "
+"to <literal>@End</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:530
+#, no-c-format
+msgid ""
+"<literal>pop()</literal> &mdash; pop the conversation stack, returning to "
+"the parent conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:535
+#, no-c-format
+msgid ""
+"<literal>root()</literal> &mdash; return to the root conversation of the "
+"conversation stack."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:540
+#, no-c-format
+msgid ""
+"<literal>changeFlushMode(FlushModeType flushMode)</literal> &mdash; change "
+"the flush mode of the conversation."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:548
+#, no-c-format
+msgid "org.jboss.seam.core.conversationList"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:550
+#, no-c-format
+msgid "Manager component for the conversation list."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:556
+#, no-c-format
+msgid "org.jboss.seam.core.conversationStack"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:558
+#, no-c-format
+msgid "Manager component for the conversation stack (breadcrumbs)."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:564
+#, no-c-format
+msgid "org.jboss.seam.core.switcher"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:566
+#, no-c-format
+msgid "The conversation switcher."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:578
+#, no-c-format
+msgid "jBPM-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:579
+#, no-c-format
+msgid "These components are for use with jBPM."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:584
+#, no-c-format
+msgid "org.jboss.seam.core.pageflow"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:586
+#, no-c-format
+msgid "API control of Seam pageflows."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:591
+#, no-c-format
+msgid ""
+"<literal>isInProcess()</literal> &mdash; returns <literal>true</literal> if "
+"there is currently a pageflow in process"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:596
+#, no-c-format
+msgid ""
+"<literal>getProcessInstance()</literal> &mdash; returns jBPM "
+"<literal>ProcessInstance</literal> for the current pageflow"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:601
+#, no-c-format
+msgid ""
+"<literal>begin(String pageflowName)</literal> &mdash; begin a pageflow in "
+"the context of the current conversation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:606
+#, no-c-format
+msgid ""
+"<literal>reposition(String nodeName)</literal> &mdash; reposition the "
+"current pageflow to a particular node"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:614
+#, no-c-format
+msgid "org.jboss.seam.core.actor"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:616
+#, no-c-format
+msgid ""
+"API for application control of attributes of the jBPM actor associated with "
+"the current session."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:621
+#, no-c-format
+msgid ""
+"<literal>setId(String actorId)</literal> &mdash; sets the jBPM actor id of "
+"the current user."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:626
+#, no-c-format
+msgid ""
+"<literal>getGroupActorIds()</literal> &mdash; returns a <literal>Set</"
+"literal> to which jBPM actor ids for the current users groups may be added."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:634
+#, no-c-format
+msgid "org.jboss.seam.core.transition"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:636
+#, no-c-format
+msgid ""
+"API for application control of the jBPM transition for the current task."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:641
+#, no-c-format
+msgid ""
+"<literal>setName(String transitionName)</literal> &mdash; sets the jBPM "
+"transition name to be used when the current task is ended via "
+"<literal>@EndTask</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:649
+#, no-c-format
+msgid "org.jboss.seam.core.businessProcess"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:651
+#, no-c-format
+msgid ""
+"API for programmatic control of the association between the conversation and "
+"business process."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:656
+#, no-c-format
+msgid ""
+"<literal>businessProcess.taskId</literal> &mdash; the id of the task "
+"associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:661
+#, no-c-format
+msgid ""
+"<literal>businessProcess.processId</literal> &mdash; the id of the process "
+"associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:666
+#, no-c-format
+msgid ""
+"<literal>businessProcess.hasCurrentTask()</literal> &mdash; is a task "
+"instance associated with the current conversation?"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:671
+#, no-c-format
+msgid ""
+"<literal>businessProcess.hasCurrentProcess()</literal> &mdash; is a process "
+"instance associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:676
+#, no-c-format
+msgid ""
+"<literal>createProcess(String name)</literal> &mdash; create an instance of "
+"the named process definition and associate it with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:681
+#, no-c-format
+msgid ""
+"<literal>startTask()</literal> &mdash; start the task associated with the "
+"current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:686
+#, no-c-format
+msgid ""
+"<literal>endTask(String transitionName)</literal> &mdash; end the task "
+"associated with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:691
+#, no-c-format
+msgid ""
+"<literal>resumeTask(Long id)</literal> &mdash; associate the task with the "
+"given id with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:696
+#, no-c-format
+msgid ""
+"<literal>resumeProcess(Long id)</literal> &mdash; associate the process with "
+"the given id with the current conversation."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:701
+#, no-c-format
+msgid ""
+"<literal>transition(String transitionName)</literal> &mdash; trigger the "
+"transition."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:709
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstance"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:711
+#, no-c-format
+msgid "Manager component for the jBPM <literal>TaskInstance</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:717
+#, no-c-format
+msgid "org.jboss.seam.core.processInstance"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:719
+#, no-c-format
+msgid "Manager component for the jBPM <literal>ProcessInstance</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:725
+#, no-c-format
+msgid "org.jboss.seam.core.jbpmContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:727
+#, no-c-format
+msgid "Manager component for an event-scoped <literal>JbpmContext</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:733
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstanceList"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:735
+#, no-c-format
+msgid "Manager component for the jBPM task list."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:741
+#, no-c-format
+msgid "org.jboss.seam.core.pooledTaskInstanceList"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:743
+#, no-c-format
+msgid "Manager component for the jBPM pooled task list."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:749
+#, no-c-format
+msgid "org.jboss.seam.core.taskInstanceListForType"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:751
+#, no-c-format
+msgid "Manager component for the jBPM task lists."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:757
+#, no-c-format
+msgid "org.jboss.seam.core.pooledTask"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:759
+#, no-c-format
+msgid "Action handler for pooled task assignment."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:765
+#, no-c-format
+msgid ""
+"All of these components are installed whenever the component <literal>org."
+"jboss.seam.core.jbpm</literal> is installed."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:771
+#, no-c-format
+msgid "Security-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:772
+#, no-c-format
+msgid "These components relate to web-tier security."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:777
+#, no-c-format
+msgid "org.jboss.seam.core.userPrincipal"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:779
+#, no-c-format
+msgid "Manager component for the current user <literal>Principal</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:785
+#, no-c-format
+msgid "org.jboss.seam.core.isUserInRole"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:787
+#, no-c-format
+msgid ""
+"Allows JSF pages to choose to render a control, depending upon the roles "
+"available to the current principal. <literal>&lt;h:commandButton value=\"edit"
+"\" rendered=\"#{isUserInRole['admin']}\"/&gt;</literal>."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:796
+#, no-c-format
+msgid "JMS-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:797
+#, no-c-format
+msgid ""
+"These components are for use with managed <literal>TopicPublisher</literal>s "
+"and <literal>QueueSender</literal>s (see below)."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:802
+#, no-c-format
+msgid "org.jboss.seam.jms.queueSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:804
+#, no-c-format
+msgid "Manager component for a JMS <literal>QueueSession</literal> ."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:810
+#, no-c-format
+msgid "org.jboss.seam.jms.topicSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:812
+#, no-c-format
+msgid "Manager component for a JMS <literal>TopicSession</literal> ."
+msgstr ""
+
+#. Tag: title
+#: Components.xml:821
+#, no-c-format
+msgid "Mail-related components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:822
+#, no-c-format
+msgid "These components are for use with Seam's Email support"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:827
+#, no-c-format
+msgid "org.jboss.seam.mail.mailSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:829
+#, no-c-format
+msgid "Manager component for a JavaMail <literal>Session</literal> ."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:834
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.host</literal> &mdash; the hostname "
+"of the SMTP server to use"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:839
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.port</literal> &mdash; the port of "
+"the SMTP server to use"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:844
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.username</literal> &mdash; the "
+"username to use to connect to the SMTP server."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:849
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.password</literal> &mdash; the "
+"password to use to connect to the SMTP server"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:854
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.debug</literal> &mdash; enable "
+"JavaMail debugging (very verbose)"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:859
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.mail.mailSession.sessionJndiName</literal> &mdash; "
+"name under which a javax.mail.Session is bound to JNDI"
+msgstr ""
+
+#. Tag: title
+#: Components.xml:870
+#, no-c-format
+msgid "Infrastructural components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:871
+#, no-c-format
+msgid ""
+"These components provide critical platform infrastructure. You can install a "
+"component by including its class name in the <literal>org.jboss.seam.core."
+"init.componentClasses</literal> configuration property."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:876
+#, no-c-format
+msgid "org.jboss.seam.core.init"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:878
+#, no-c-format
+msgid "Initialization settings for Seam. Always installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:883
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.jndiPattern</literal> &mdash; the JNDI "
+"pattern used for looking up session beans"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:888
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.debug</literal> &mdash; enable Seam debug "
+"mode"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:893
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.clientSideConversations</literal> &mdash; "
+"if set to <literal>true</literal>, Seam will save conversation context "
+"variables in the client instead of in the <literal>HttpSession</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:898
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.init.userTransactionName</literal> &mdash; the "
+"JNDI name to use when looking up the JTA <literal>UserTransaction</literal> "
+"object."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:906
+#, no-c-format
+msgid "org.jboss.seam.core.manager"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:908
+#, no-c-format
+msgid ""
+"Internal component for Seam page and conversation context management. Always "
+"installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:913
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationTimeout</literal> &mdash; "
+"the conversation context timeout in milliseconds."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:918
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.concurrentRequestTimeout</literal> "
+"&mdash; maximum wait time for a thread attempting to gain a lock on the long-"
+"running conversation context."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:923
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationIdParameter</literal> "
+"&mdash; the request parameter used to propagate the conversation id, default "
+"to <literal>conversationId</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:928
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.manager.conversationIsLongRunningParameter</"
+"literal> &mdash; the request parameter used to propagate information about "
+"whether the conversation is long-running, default to "
+"<literal>conversationIsLongRunning</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:936
+#, no-c-format
+msgid "org.jboss.seam.core.pages"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:938
+#, no-c-format
+msgid "Internal component for Seam workspace management. Always installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:943
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.pages.noConversationViewId</literal> &mdash; "
+"global setting for the view id to redirect to when a conversation entry is "
+"not found on the server side."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:951
+#, no-c-format
+msgid "org.jboss.seam.core.ejb"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:953
+#, no-c-format
+msgid ""
+"Bootstraps the JBoss Embeddable EJB3 container. Install as class "
+"<literal>org.jboss.seam.core.Ejb</literal>. This is useful when using Seam "
+"with EJB components outside the context of a Java EE 5 application server."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:956
+#, no-c-format
+msgid ""
+"The basic Embedded EJB configuration is defined in <literal>jboss-embedded-"
+"beans.xml</literal>. Additional microcontainer configuration (for example, "
+"extra datasources) may be specified by <literal>jboss-beans.xml</literal> or "
+"<literal>META-INF/jboss-beans.xml</literal> in the classpath."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:962
+#, no-c-format
+msgid "org.jboss.seam.core.microcontainer"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:964
+#, no-c-format
+msgid ""
+"Bootstraps the JBoss microcontainer. Install as class <literal>org.jboss."
+"seam.core.Microcontainer</literal>. This is useful when using Seam with "
+"Hibernate and no EJB components outside the context of a Java EE application "
+"server. The microcontainer can provide a partial EE environment with JNDI, "
+"JTA, a JCA datasource and Hibernate."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:967
+#, no-c-format
+msgid ""
+"The microcontainer configuration may be specified by <literal>jboss-beans."
+"xml</literal> or <literal>META-INF/jboss-beans.xml</literal> in the "
+"classpath."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:973
+#, no-c-format
+msgid "org.jboss.seam.core.jbpm"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:975
+#, no-c-format
+msgid ""
+"Bootstraps a <literal>JbpmConfiguration</literal>. Install as class "
+"<literal>org.jboss.seam.core.Jbpm</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:980
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.jbpm.processDefinitions</literal> &mdash; a "
+"list of resource names of jPDL files to be used for orchestration of "
+"business processes."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:985
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.core.jbpm.pageflowDefinitions</literal> &mdash; a "
+"list of resource names of jPDL files to be used for orchestration of "
+"conversation page flows."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:993
+#, no-c-format
+msgid "org.jboss.seam.core.conversationEntries"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:995
+#, no-c-format
+msgid ""
+"Internal session-scoped component recording the active long-running "
+"conversations between requests."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1001
+#, no-c-format
+msgid "org.jboss.seam.core.facesPage"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1003
+#, no-c-format
+msgid ""
+"Internal page-scoped component recording the conversation context associated "
+"with a page."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1009
+#, no-c-format
+msgid "org.jboss.seam.core.persistenceContexts"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1011
+#, no-c-format
+msgid ""
+"Internal component recording the persistence contexts which were used in the "
+"current conversation."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1017
+#, no-c-format
+msgid "org.jboss.seam.jms.queueConnection"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1019
+#, no-c-format
+msgid ""
+"Manages a JMS <literal>QueueConnection</literal>. Installed whenever managed "
+"managed <literal>QueueSender</literal> is installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1024
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.jms.queueConnection.queueConnectionFactoryJndiName</"
+"literal> &mdash; the JNDI name of a JMS <literal>QueueConnectionFactory</"
+"literal>. Default to <literal>UIL2ConnectionFactory</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1032
+#, no-c-format
+msgid "org.jboss.seam.jms.topicConnection"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1034
+#, no-c-format
+msgid ""
+"Manages a JMS <literal>TopicConnection</literal>. Installed whenever managed "
+"managed <literal>TopicPublisher</literal> is installed."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1039
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.jms.topicConnection.topicConnectionFactoryJndiName</"
+"literal> &mdash; the JNDI name of a JMS <literal>TopicConnectionFactory</"
+"literal>. Default to <literal>UIL2ConnectionFactory</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1047
+#, no-c-format
+msgid "org.jboss.seam.persistence.persistenceProvider"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1049
+#, no-c-format
+msgid "Abstraction layer for non-standardized features of JPA provider."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1055
+#, no-c-format
+msgid "org.jboss.seam.core.validation"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1057
+#, no-c-format
+msgid "Internal component for Hibernate Validator support."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1063
+#, no-c-format
+msgid "org.jboss.seam.debug.introspector"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1065 Components.xml:1073
+#, no-c-format
+msgid "Support for the Seam Debug Page."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1071
+#, no-c-format
+msgid "org.jboss.seam.debug.contexts"
+msgstr ""
+
+#. Tag: title
+#: Components.xml:1082
+#, no-c-format
+msgid "Special components"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1083
+#, no-c-format
+msgid ""
+"Certain special Seam component classes are installable multiple times under "
+"names specified in the Seam configuration. For example, the following lines "
+"in <literal>components.xml</literal> install and configure two Seam "
+"components:"
+msgstr ""
+
+#. Tag: programlisting
+#: Components.xml:1086
+#, no-c-format
+msgid ""
+"&lt;component name=\"bookingDatabase\"\n"
+"          class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"    &lt;property name=\"persistenceUnitJndiName\"&gt;java:/comp/emf/"
+"bookingPersistence&lt;/property&gt;\n"
+"&lt;/component&gt;\n"
+"\n"
+"&lt;component name=\"userDatabase\"\n"
+"          class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"    &lt;property name=\"persistenceUnitJndiName\"&gt;java:/comp/emf/"
+"userPersistence&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1087
+#, no-c-format
+msgid ""
+"The Seam component names are <literal>bookingDatabase</literal> and "
+"<literal>userDatabase</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1092
+#, no-c-format
+msgid "&lt;entityManager&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1093
+#, no-c-format
+msgid "org.jboss.seam.core.ManagedPersistenceContext"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1095
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed <literal>EntityManager</"
+"literal> with an extended persistence context."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1100
+#, no-c-format
+msgid ""
+"<literal>&lt;entityManager&gt;.entityManagerFactory</literal> &mdash; a "
+"value binding expression that evaluates to an instance of "
+"<literal>EntityManagerFactory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1103
+#, no-c-format
+msgid ""
+"<literal>&lt;entityManager&gt;.persistenceUnitJndiName</literal> &mdash; the "
+"JNDI name of the entity manager factory, default to <literal>java:/&lt;"
+"managedPersistenceContext&gt;</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1111
+#, no-c-format
+msgid "&lt;entityManagerFactory&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1112
+#, no-c-format
+msgid "org.jboss.seam.core.EntityManagerFactory"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1114
+#, no-c-format
+msgid ""
+"Manages a JPA <literal>EntityManagerFactory</literal>. This is most useful "
+"when using JPA outside of an EJB 3.0 supporting environment."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1119
+#, no-c-format
+msgid ""
+"<literal>entityManagerFactory.persistenceUnitName</literal> &mdash; the name "
+"of the persistence unit."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1124 Components.xml:1162
+#, no-c-format
+msgid "See the API JavaDoc for further configuration properties."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1130
+#, no-c-format
+msgid "&lt;session&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1131
+#, no-c-format
+msgid "org.jboss.seam.core.ManagedSession"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1133
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed Hibernate "
+"<literal>Session</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1138
+#, no-c-format
+msgid ""
+"<literal>&lt;session&gt;.sessionFactory</literal> &mdash; a value binding "
+"expression that evaluates to an instance of <literal>SessionFactory</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1141
+#, no-c-format
+msgid ""
+"<literal>&lt;session&gt;.sessionFactoryJndiName</literal> &mdash; the JNDI "
+"name of the session factory, default to <literal>java:/&lt;managedSession&gt;"
+"</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1149
+#, no-c-format
+msgid "&lt;sessionFactory&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1150
+#, no-c-format
+msgid "org.jboss.seam.core.HibernateSessionFactory"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1152
+#, no-c-format
+msgid "Manages a Hibernate <literal>SessionFactory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1157
+#, no-c-format
+msgid ""
+"<literal>&lt;sessionFactory&gt;.cfgResourceName</literal> &mdash; the path "
+"to the configuration file. Default to <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1168
+#, no-c-format
+msgid "&lt;managedQueueSender&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1169
+#, no-c-format
+msgid "org.jboss.seam.jms.ManagedQueueSender"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1171
+#, no-c-format
+msgid ""
+"Manager component for an event scoped managed JMS <literal>QueueSender</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1176
+#, no-c-format
+msgid ""
+"<literal>&lt;managedQueueSender&gt;.queueJndiName</literal> &mdash; the JNDI "
+"name of the JMS queue."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1184
+#, no-c-format
+msgid "&lt;managedTopicPublisher&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1185
+#, no-c-format
+msgid "org.jboss.seam.jms.ManagedTopicPublisher"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1187
+#, no-c-format
+msgid ""
+"Manager component for an event scoped managed JMS <literal>TopicPublisher</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1192
+#, no-c-format
+msgid ""
+"<literal>&lt;managedTopicPublisher&gt;.topicJndiName</literal> &mdash; the "
+"JNDI name of the JMS topic."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1200
+#, no-c-format
+msgid "&lt;managedWorkingMemory&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1201
+#, no-c-format
+msgid "org.jboss.seam.drools.ManagedWorkingMemory"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1203
+#, no-c-format
+msgid ""
+"Manager component for a conversation scoped managed Drools "
+"<literal>WorkingMemory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1208
+#, no-c-format
+msgid ""
+"<literal>&lt;managedWorkingMemory&gt;.ruleBase</literal> &mdash; a value "
+"expression that evaluates to an instance of <literal>RuleBase</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1216
+#, no-c-format
+msgid "&lt;ruleBase&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1217
+#, no-c-format
+msgid "org.jboss.seam.drools.RuleBase"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1219
+#, no-c-format
+msgid ""
+"Manager component for an application scoped Drools <literal>RuleBase</"
+"literal>. <emphasis>Note that this is not really intended for production "
+"usage, since it does not support dynamic installation of new rules.</"
+"emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1224
+#, no-c-format
+msgid ""
+"<literal>&lt;ruleBase&gt;.ruleFiles</literal> &mdash; a list of files "
+"containing Drools rules."
+msgstr ""
+
+#. Tag: para
+#: Components.xml:1227
+#, no-c-format
+msgid ""
+"<literal>&lt;ruleBase&gt;.dslFile</literal> &mdash; a Drools DSL definition."
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1235
+#, no-c-format
+msgid "&lt;entityHome&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1236
+#, no-c-format
+msgid "org.jboss.seam.framework.EntityHome"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1240
+#, no-c-format
+msgid "&lt;hibernateEntityHome&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1241
+#, no-c-format
+msgid "org.jboss.seam.framework.HibernateEntityHome"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1245
+#, no-c-format
+msgid "&lt;entityQuery&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1246
+#, no-c-format
+msgid "org.jboss.seam.framework.EntityQuery"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1250
+#, no-c-format
+msgid "&lt;hibernateEntityQuery&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Components.xml:1251
+#, no-c-format
+msgid "org.jboss.seam.framework.HibernateEntityQuery"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Concepts.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Concepts.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Concepts.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1922 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Concepts.xml:10
+#, no-c-format
+msgid "The contextual component model"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:11
+#, no-c-format
+msgid ""
+"The two core concepts in Seam are the notion of a <emphasis>context</"
+"emphasis> and the notion of a <emphasis>component</emphasis>. Components are "
+"stateful objects, usually EJBs, and an instance of a component is associated "
+"with a context, and given a name in that context. <emphasis>Bijection</"
+"emphasis> provides a mechanism for aliasing internal component names "
+"(instance variables) to contextual names, allowing component trees to be "
+"dynamically assembled, and reassembled by Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:14
+#, no-c-format
+msgid "Let's start by describing the contexts built in to Seam."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:17
+#, no-c-format
+msgid "Seam contexts"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:18
+#, no-c-format
+msgid ""
+"Seam contexts are created and destroyed by the framework. The application "
+"does not control context demarcation via explicit Java API calls. Context "
+"are usually implicit. In some cases, however, contexts are demarcated via "
+"annotations."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:21
+#, no-c-format
+msgid "The basic Seam contexts are:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:26
+#, no-c-format
+msgid "<para>Stateless context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:31
+#, no-c-format
+msgid "Event (or request) context"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:36 Concepts.xml:151
+#, no-c-format
+msgid "<para>Page context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:41 Concepts.xml:156
+#, no-c-format
+msgid "<para>Conversation context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:46 Concepts.xml:161
+#, no-c-format
+msgid "<para>Session context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:51 Concepts.xml:166
+#, no-c-format
+msgid "<para>Business process context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:56 Concepts.xml:171
+#, no-c-format
+msgid "<para>Application context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:61
+#, no-c-format
+msgid ""
+"You will recognize some of these contexts from servlet and related "
+"specifications. However, two of them might be new to you: "
+"<emphasis>conversation context</emphasis>, and <emphasis>business process "
+"context</emphasis>. One reason state management in web applications is so "
+"fragile and error-prone is that the three built-in contexts (request, "
+"session and application) are not especially meaningful from the point of "
+"view of the business logic. A user login session, for example, is a fairly "
+"arbitrary construct in terms of the actual application work flow. Therefore, "
+"most Seam components are scoped to the conversation or business process "
+"contexts, since they are the contexts which are most meaningful in terms of "
+"the application."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:64
+#, no-c-format
+msgid "Let's look at each context in turn."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:67
+#, no-c-format
+msgid "<title>Stateless context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:68
+#, no-c-format
+msgid ""
+"Components which are truly stateless (stateless session beans, primarily) "
+"always live in the stateless context (this is really a non-context). "
+"Stateless components are not very interesting, and are arguably not very "
+"object-oriented. Nevertheless, they are important and often useful."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:71
+#, no-c-format
+msgid "<title>Event context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:72
+#, no-c-format
+msgid ""
+"The event context is the \"narrowest\" stateful context, and is a "
+"generalization of the notion of the web request context to cover other kinds "
+"of events. Nevertheless, the event context associated with the lifecycle of "
+"a JSF request is the most important example of an event context, and the one "
+"you will work with most often. Components associated with the event context "
+"are destroyed at the end of the request, but their state is available and "
+"well-defined for at least the lifecycle of the request."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:75
+#, no-c-format
+msgid ""
+"When you invoke a Seam component via RMI, or Seam Remoting, the event "
+"context is created and destroyed just for the invocation."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:78
+#, no-c-format
+msgid "<title>Page context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:79
+#, no-c-format
+msgid ""
+"The page context allows you to associate state with a particular instance of "
+"a rendered page. You can initialize state in your event listener, or while "
+"actually rendering the page, and then have access to it from any event that "
+"originates from that page. This is especially useful for functionality like "
+"clickable lists, where the list is backed by changing data on the server "
+"side. The state is actually serialized to the client, so this construct is "
+"extremely robust with respect to multi-window operation and the back button."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:82
+#, no-c-format
+msgid "<title>Conversation context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:83
+#, no-c-format
+msgid ""
+"The conversation context is a truly central concept in Seam. A "
+"<emphasis>conversation</emphasis> is a unit of work from the point of view "
+"of the user. It might span several interactions with the user, several "
+"requests, and several database transactions. But to the user, a conversation "
+"solves a single problem. For example, \"book hotel\", \"approve contract\", "
+"\"create order\" are all conversations. You might like to think of a "
+"conversation implementing a single \"use case\" or \"user story\", but the "
+"relationship is not necessarily quite exact."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:86
+#, no-c-format
+msgid ""
+"A conversation holds state associated with \"what the user is doing now, in "
+"this window\". A single user may have multiple conversations in progress at "
+"any point in time, usually in multiple windows. The conversation context "
+"allows us to ensure that state from the different conversations does not "
+"collide and cause bugs."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:89
+#, no-c-format
+msgid ""
+"It might take you some time to get used to thinking of applications in terms "
+"of conversations. But once you get used to it, we think you'll love the "
+"notion, and never be able to not think in terms of conversations again!"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:92
+#, no-c-format
+msgid ""
+"Some conversations last for just a single request. Conversations that span "
+"multiple requests must be demarcated using annotations provided by Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:95
+#, no-c-format
+msgid ""
+"Some conversations are also <emphasis>tasks</emphasis>. A task is a "
+"conversation that is significant in terms of a long-running business "
+"process, and has the potential to trigger a business process state "
+"transition when it is successfully completed. Seam provides a special set of "
+"annotations for task demarcation."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:98
+#, no-c-format
+msgid ""
+"Conversations may be <emphasis>nested</emphasis>, with one conversation "
+"taking place \"inside\" a wider conversation. This is an advanced feature."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:101
+#, no-c-format
+msgid ""
+"Usually, conversation state is actually held by Seam in the servlet session "
+"between requests. Seam implements configurable <emphasis>conversation "
+"timeout</emphasis>, automatically destroying inactive conversations, and "
+"thus ensuring that the state held by a single user login session does not "
+"grow without bound if the user abandons conversations."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:104
+#, no-c-format
+msgid ""
+"Seam serializes processing of concurrent requests that take place in the "
+"same long-running conversation context, in the same process."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:107
+#, no-c-format
+msgid ""
+"Alternatively, Seam may be configured to keep conversational state in the "
+"client browser."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:110
+#, no-c-format
+msgid "<title>Session context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:111
+#, no-c-format
+msgid ""
+"A session context holds state associated with the user login session. While "
+"there are some cases where it is useful to share state between several "
+"conversations, we generally frown on the use of session context for holding "
+"components other than global information about the logged in user."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:114
+#, no-c-format
+msgid ""
+"In a JSR-168 portal environment, the session context represents the portlet "
+"session."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:117
+#, no-c-format
+msgid "<title>Business process context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:118
+#, no-c-format
+msgid ""
+"The business process context holds state associated with the long running "
+"business process. This state is managed and made persistent by the BPM "
+"engine (JBoss jBPM). The business process spans multiple interactions with "
+"multiple users, so this state is shared between multiple users, but in a "
+"well-defined manner. The current task determines the current business "
+"process instance, and the lifecycle of the business process is defined "
+"externally using a <emphasis>process definition language</emphasis>, so "
+"there are no special annotations for business process demarcation."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:121
+#, no-c-format
+msgid "<title>Application context</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:122
+#, no-c-format
+msgid ""
+"The application context is the familiar servlet context from the servlet "
+"spec. Application context is mainly useful for holding static information "
+"such as configuration data, reference data or metamodels. For example, Seam "
+"stores its own configuration and metamodel in the application context."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:125
+#, no-c-format
+msgid "Context variables"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:126
+#, no-c-format
+msgid ""
+"A context defines a namespace, a set of <emphasis>context variables</"
+"emphasis>. These work much the same as session or request attributes in the "
+"servlet spec. You may bind any value you like to a context variable, but "
+"usually we bind Seam component instances to context variables."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:129
+#, no-c-format
+msgid ""
+"So, within a context, a component instance is identified by the context "
+"variable name (this is usually, but not always, the same as the component "
+"name). You may programatically access a named component instance in a "
+"particular scope via the <literal>Contexts</literal> class, which provides "
+"access to several thread-bound instances of the <literal>Context</literal> "
+"interface:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:132
+#, no-c-format
+msgid "User user = (User) Contexts.getSessionContext().get(\"user\");"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:133
+#, no-c-format
+msgid "You may also set or change the value associated with a name:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:136
+#, no-c-format
+msgid "Contexts.getSessionContext().set(\"user\", user);"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:137
+#, no-c-format
+msgid ""
+"Usually, however, we obtain components from a context via injection, and put "
+"component instances into a context via outjection."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:140
+#, no-c-format
+msgid "Context search priority"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:141
+#, no-c-format
+msgid ""
+"Sometimes, as above, component instances are obtained from a particular "
+"known scope. Other times, all stateful scopes are searched, in "
+"<emphasis>priority order</emphasis>. The order is as follows:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:146
+#, no-c-format
+msgid "<para>Event context</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:176
+#, no-c-format
+msgid ""
+"You can perform a priority search by calling <literal>Contexts."
+"lookupInStatefulContexts()</literal>. Whenever you access a component by "
+"name from a JSF page, a priority search occurs."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:179
+#, no-c-format
+msgid "Concurrency model"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:180
+#, no-c-format
+msgid ""
+"Neither the servlet nor EJB specifications define any facilities for "
+"managing concurrent requests originating from the same client. The servlet "
+"container simply lets all threads run concurrently and leaves enforcing "
+"threadsafeness to application code. The EJB container allows stateless "
+"components to be accessed concurrently, and throws an exception if multiple "
+"threads access a stateful session bean."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:183
+#, no-c-format
+msgid ""
+"This behavior might have been okay in old-style web applications which were "
+"based around fine-grained, synchronous requests. But for modern applications "
+"which make heavy use of many fine-grained, asynchronous (AJAX) requests, "
+"concurrency is a fact of life, and must be supported by the programming "
+"model. Seam weaves a concurrency management layer into its context model."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:186
+#, no-c-format
+msgid ""
+"The Seam session and application contexts are multithreaded. Seam will allow "
+"concurrent requests in a context to be processed concurrently. The event and "
+"page contexts are by nature single threaded. The business process context is "
+"strictly speaking multi-threaded, but in practice concurrency is "
+"sufficiently rare that this fact may be disregarded most of the time. "
+"Finally, Seam enforces a <emphasis>single thread per conversation per "
+"process</emphasis> model for the conversation context by serializing "
+"concurrent requests in the same long-running conversation context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:189
+#, no-c-format
+msgid ""
+"Since the session context is multithreaded, and often contains volatile "
+"state, session scope components are always protected by Seam from concurrent "
+"access. Seam serializes requests to session scope session beans and "
+"JavaBeans by default (and detects and breaks any deadlocks that occur). This "
+"is not the default behaviour for application scoped components however, "
+"since application scoped components do not usually hold volatile state and "
+"because synchronization at the global level is <emphasis>extremely</"
+"emphasis> expensive. However, you can force a serialized threading model on "
+"any session bean or JavaBean component by adding the <literal>@Synchronized</"
+"literal> annotation."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:192
+#, no-c-format
+msgid ""
+"This concurrency model means that AJAX clients can safely use volatile "
+"session and conversational state, without the need for any special work on "
+"the part of the developer."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:195
+#, no-c-format
+msgid "Seam components"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:196
+#, no-c-format
+msgid ""
+"Seam components are POJOs (Plain Old Java Objects). In particular, they are "
+"JavaBeans or EJB 3.0 enterprise beans. While Seam does not require that "
+"components be EJBs and can even be used without an EJB 3.0 compliant "
+"container, Seam was designed with EJB 3.0 in mind and includes deep "
+"integration with EJB 3.0. Seam supports the following <emphasis>component "
+"types</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:201
+#, no-c-format
+msgid "EJB 3.0 stateless session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:206
+#, no-c-format
+msgid "EJB 3.0 stateful session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:211
+#, no-c-format
+msgid "EJB 3.0 entity beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:216
+#, no-c-format
+msgid "<para>JavaBeans</para>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:221
+#, no-c-format
+msgid "EJB 3.0 message-driven beans"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:226
+#, no-c-format
+msgid "Stateless session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:227
+#, no-c-format
+msgid ""
+"Stateless session bean components are not able to hold state across multiple "
+"invocations. Therefore, they usually work by operating upon the state of "
+"other components in the various Seam contexts. They may be used as JSF "
+"action listeners, but cannot provide properties to JSF components for "
+"display."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:230
+#, no-c-format
+msgid "Stateless session beans always live in the stateless context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:233
+#, no-c-format
+msgid ""
+"Stateless session beans are the least interesting kind of Seam component."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:236
+#, no-c-format
+msgid "Stateful session beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:237
+#, no-c-format
+msgid ""
+"Stateful session bean components are able to hold state not only across "
+"multiple invocations of the bean, but also across multiple requests. "
+"Application state that does not belong in the database should usually be "
+"held by stateful session beans. This is a major difference between Seam and "
+"many other web application frameworks. Instead of sticking information about "
+"the current conversation directly in the <literal>HttpSession</literal>, you "
+"should keep it in instance variables of a stateful session bean that is "
+"bound to the conversation context. This allows Seam to manage the lifecycle "
+"of this state for you, and ensure that there are no collisions between state "
+"relating to different concurrent conversations."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:240
+#, no-c-format
+msgid ""
+"Stateful session beans are often used as JSF action listener, and as backing "
+"beans that provide properties to JSF components for display or form "
+"submission."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:243
+#, no-c-format
+msgid ""
+"By default, stateful session beans are bound to the conversation context. "
+"They may never be bound to the page or stateless contexts."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:246
+#, no-c-format
+msgid ""
+"Concurrent requests to session-scoped stateful session beans are always "
+"serialized by Seam."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:249
+#, no-c-format
+msgid "Entity beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:250
+#, no-c-format
+msgid ""
+"Entity beans may be bound to a context variable and function as a seam "
+"component. Because entities have a persistent identity in addition to their "
+"contextual identity, entity instances are usually bound explicitly in Java "
+"code, rather than being instantiated implicitly by Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:253
+#, no-c-format
+msgid ""
+"Entity bean components do not support bijection or context demarcation. Nor "
+"does invocation of an entity bean trigger validation."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:256
+#, no-c-format
+msgid ""
+"Entity beans are not usually used as JSF action listeners, but do often "
+"function as backing beans that provide properties to JSF components for "
+"display or form submission. In particular, it is common to use an entity as "
+"a backing bean, together with a stateless session bean action listener to "
+"implement create/update/delete type functionality."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:259
+#, no-c-format
+msgid ""
+"By default, entity beans are bound to the conversation context. They may "
+"never be bound to the stateless context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:262
+#, no-c-format
+msgid ""
+"Note that it in a clustered environment is somewhat less efficient to bind "
+"an entity bean directly to a conversation or session scoped Seam context "
+"variable than it would be to hold a reference to the entity bean in a "
+"stateful session bean. For this reason, not all Seam applications define "
+"entity beans to be Seam components."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:265
+#, no-c-format
+msgid "<title>JavaBeans</title>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:266
+#, no-c-format
+msgid ""
+"Javabeans may be used just like a stateless or stateful session bean. "
+"However, they do not provide the functionality of a session bean "
+"(declarative transaction demarcation, declarative security, efficient "
+"clustered state replication, EJB 3.0 persistence, timeout methods, etc)."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:269
+#, no-c-format
+msgid ""
+"In a later chapter, we show you how to use Seam and Hibernate without an EJB "
+"container. In this use case, components are JavaBeans instead of session "
+"beans. Note, however, that in many application servers it is somewhat less "
+"efficient to cluster conversation or session scoped Seam JavaBean components "
+"than it is to cluster stateful session bean components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:272
+#, no-c-format
+msgid "By default, JavaBeans are bound to the event context."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:275
+#, no-c-format
+msgid ""
+"Concurrent requests to session-scoped JavaBeans are always serialized by "
+"Seam."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:278
+#, no-c-format
+msgid "Message-driven beans"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:279
+#, no-c-format
+msgid ""
+"Message-driven beans may function as a seam component. However, message-"
+"driven beans are called quite differently to other Seam components - instead "
+"of invoking them via the context variable, they listen for messages sent to "
+"a JMS queue or topic."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:282
+#, no-c-format
+msgid ""
+"Message-driven beans may not be bound to a Seam context. Nor do they have "
+"access to the session or conversation state of their \"caller\". However, "
+"they do support bijection and some other Seam functionality."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:285
+#, no-c-format
+msgid "Interception"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:286
+#, no-c-format
+msgid ""
+"In order to perform its magic (bijection, context demarcation, validation, "
+"etc), Seam must intercept component invocations. For JavaBeans, Seam is in "
+"full control of instantiation of the component, and no special configuration "
+"is needed. For entity beans, interception is not required since bijection "
+"and context demarcation are not defined. For session beans, we must register "
+"an EJB interceptor for the session bean component. We could use an "
+"annotation, as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:289
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:290
+#, no-c-format
+msgid ""
+"But a much better way is to define the interceptor in <literal>ejb-jar.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:293
+#, no-c-format
+msgid ""
+"&lt;interceptors&gt;\n"
+"   &lt;interceptor&gt;\n"
+"      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"   &lt;/interceptor&gt;\n"
+"&lt;/interceptors&gt;\n"
+"   \n"
+"&lt;assembly-descriptor&gt;\n"
+"   &lt;interceptor-binding&gt;\n"
+"      &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"      &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"   &lt;/interceptor-binding&gt;\n"
+"&lt;/assembly-descriptor&gt;"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:294
+#, no-c-format
+msgid "Component names"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:295
+#, no-c-format
+msgid ""
+"All seam components need a name. We can assign a name to a component using "
+"the <literal>@Name</literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:298
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:299
+#, no-c-format
+msgid ""
+"This name is the <emphasis>seam component name</emphasis> and is not related "
+"to any other name defined by the EJB specification. However, seam component "
+"names work just like JSF managed bean names and you can think of the two "
+"concepts as identical."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:302
+#, no-c-format
+msgid ""
+"<literal>@Name</literal> is not the only way to define a component name, but "
+"we always need to specify the name <emphasis>somewhere</emphasis>. If we "
+"don't, then none of the other Seam annotations will function."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:305
+#, no-c-format
+msgid ""
+"Just like in JSF, a seam component instance is usually bound to a context "
+"variable with the same name as the component name. So, for example, we would "
+"access the <literal>LoginAction</literal> using <literal>Contexts."
+"getStatelessContext().get(\"loginAction\")</literal>. In particular, "
+"whenever Seam itself instantiates a component, it binds the new instance to "
+"a variable with the component name. However, again like JSF, it is possible "
+"for the application to bind a component to some other context variable by "
+"programmatic API call. This is only useful if a particular component serves "
+"more than one role in the system. For example, the currently logged in "
+"<literal>User</literal> might be bound to the <literal>currentUser</literal> "
+"session context variable, while a <literal>User</literal> that is the "
+"subject of some administration functionality might be bound to the "
+"<literal>user</literal> conversation context variable."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:308
+#, no-c-format
+msgid ""
+"For very large applications, and for built-in seam components, qualified "
+"names are often used."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:311
+#, no-c-format
+msgid ""
+"@Name(\"com.jboss.myapp.loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:312
+#, no-c-format
+msgid ""
+"We may use the qualified component name both in Java code and in JSF's "
+"expression language:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:315
+#, no-c-format
+msgid ""
+"&lt;h:commandButton type=\"submit\" value=\"Login\"\n"
+"                 action=\"#{com.jboss.myapp.loginAction.login}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:316
+#, no-c-format
+msgid ""
+"Since this is noisy, Seam also provides a means of aliasing a qualified name "
+"to a simple name. Add a line like this to the <literal>components.xml</"
+"literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:319
+#, no-c-format
+msgid ""
+"&lt;factory name=\"loginAction\" scope=\"STATELESS\" value=\"#{com.jboss."
+"myapp.loginAction}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:320
+#, no-c-format
+msgid ""
+"All of the built-in Seam components have qualified names, but most of them "
+"are aliased to a simple name by the <literal>components.xml</literal> file "
+"included in the Seam jar."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:323
+#, no-c-format
+msgid "Defining the component scope"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:324
+#, no-c-format
+msgid ""
+"We can override the default scope (context) of a component using the "
+"<literal>@Scope</literal> annotation. This lets us define what context a "
+"component instance is bound to, when it is instantiated by Seam."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:327
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(SESSION)\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:328
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.ScopeType</literal> defines an enumeration of "
+"possible scopes."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:331
+#, no-c-format
+msgid "Components with multiple roles"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:332
+#, no-c-format
+msgid ""
+"Some Seam component classes can fulfill more than one role in the system. "
+"For example, we often have a <literal>User</literal> class which is usually "
+"used as a session-scoped component representing the current user but is used "
+"in user administration screens as a conversation-scoped component. The "
+"<literal>@Role</literal> annotation lets us define an additional named role "
+"for a component, with a different scope&mdash;it lets us bind the same "
+"component class to different context variables. (Any Seam component "
+"<emphasis>instance</emphasis> may be bound to multiple context variables, "
+"but this lets us do it at the class level, and take advantage of auto-"
+"instantiation.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:335
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(CONVERSATION)\n"
+"@Role(name=\"currentUser\", scope=SESSION)\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:336
+#, no-c-format
+msgid ""
+"The <literal>@Roles</literal> annotation lets us specify as many additional "
+"roles as we like."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:339
+#, no-c-format
+msgid ""
+"@Name(\"user\")\n"
+"@Entity\n"
+"@Scope(CONVERSATION)\n"
+"@Roles({@Role(name=\"currentUser\", scope=SESSION)\n"
+"        @Role(name=\"tempUser\", scope=EVENT)})\n"
+"public class User { \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:340
+#, no-c-format
+msgid "Built-in components"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:341
+#, no-c-format
+msgid ""
+"Like many good frameworks, Seam eats its own dogfood and is implemented "
+"mostly as a set of built-in Seam interceptors (see later) and Seam "
+"components. This makes it easy for applications to interact with built-in "
+"components at runtime or even customize the basic functionality of Seam by "
+"replacing the built-in components with custom implementations. The built-in "
+"components are defined in the Seam namespace <literal>org.jboss.seam.core</"
+"literal> and the Java package of the same name."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:344
+#, no-c-format
+msgid ""
+"The built-in components may be injected, just like any Seam components, but "
+"they also provide convenient static <literal>instance()</literal> methods:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:347
+#, no-c-format
+msgid "FacesMessages.instance().add(\"Welcome back, #{user.name}!\");"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:348
+#, no-c-format
+msgid ""
+"Seam was designed to integrate tightly in a Java EE 5 environment. However, "
+"we understand that there are many projects which are not running in a full "
+"EE environment. We also realize the critical importance of easy unit and "
+"integration testing using frameworks such as TestNG and JUnit. So, we've "
+"made it easy to run Seam in Java SE environments by allowing you to boostrap "
+"certain critical infrastructure normally only found in EE environments by "
+"installing built-in Seam components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:351
+#, no-c-format
+msgid ""
+"For example, you can run your EJB3 components in Tomcat or an integration "
+"test suite just by installing the built-in component <literal>org.jboss.seam."
+"core.ejb</literal>, which automatically bootstraps the JBoss Embeddable EJB3 "
+"container and deploys your EJB components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:354
+#, no-c-format
+msgid ""
+"Or, if you're not quite ready for the Brave New World of EJB 3.0, you can "
+"write a Seam application that uses only JavaBean components, together with "
+"Hibernate3 for persistence, by installing a built-in component that manages "
+"a Hibernate <literal>SessionFactory</literal>. When using Hibernate outside "
+"of a J2EE environment, you will also probably need a JTA transaction manager "
+"and JNDI server, which are available via the built-in component <literal>org."
+"jboss.seam.core.microcontainer</literal>. This lets you use the bulletproof "
+"JTA/JCA pooling datasource from JBoss application server in an SE "
+"environment like Tomcat!"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:357
+#, no-c-format
+msgid "Bijection"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:358
+#, no-c-format
+msgid ""
+"<emphasis>Dependency injection</emphasis> or <emphasis>inversion of control</"
+"emphasis> is by now a familiar concept to most Java developers. Dependency "
+"injection allows a component to obtain a reference to another component by "
+"having the container \"inject\" the other component to a setter method or "
+"instance variable. In all dependency injection implementations that we have "
+"seen, injection occurs when the component is constructed, and the reference "
+"does not subsequently change for the lifetime of the component instance. For "
+"stateless components, this is reasonable. From the point of view of a "
+"client, all instances of a particular stateless component are "
+"interchangeable. On the other hand, Seam emphasizes the use of stateful "
+"components. So traditional dependency injection is no longer a very useful "
+"construct. Seam introduces the notion of <emphasis>bijection</emphasis> as a "
+"generalization of injection. In contrast to injection, bijection is:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:363
+#, no-c-format
+msgid ""
+"<emphasis>contextual</emphasis> - bijection is used to assemble stateful "
+"components from various different contexts (a component from a \"wider\" "
+"context may even have a reference to a component from a \"narrower\" context)"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:368
+#, no-c-format
+msgid ""
+"<emphasis>bidirectional</emphasis> - values are injected from context "
+"variables into attributes of the component being invoked, and also "
+"<emphasis>outjected</emphasis> from the component attributes back out to the "
+"context, allowing the component being invoked to manipulate the values of "
+"contextual variables simply by setting its own instance variables"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:373
+#, no-c-format
+msgid ""
+"<emphasis>dynamic</emphasis> - since the value of contextual variables "
+"changes over time, and since Seam components are stateful, bijection takes "
+"place every time a component is invoked"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:378
+#, no-c-format
+msgid ""
+"In essence, bijection lets you alias a context variable to a component "
+"instance variable, by specifying that the value of the instance variable is "
+"injected, outjected, or both. Of course, we use annotations to enable "
+"bijection."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:381
+#, no-c-format
+msgid ""
+"The <literal>@In</literal> annotation specifies that a value should be "
+"injected, either into an instance variable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:384
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:385
+#, no-c-format
+msgid "or into a setter method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:388
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @In\n"
+"    public void setUser(User user) {\n"
+"        this.user=user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:389
+#, no-c-format
+msgid ""
+"By default, Seam will do a priority search of all contexts, using the name "
+"of the property or instance variable that is being injected. You may wish to "
+"specify the context variable name explicitly, using, for example, "
+"<literal>@In(\"currentUser\")</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:392
+#, no-c-format
+msgid ""
+"If you want Seam to create an instance of the component when there is no "
+"existing component instance bound to the named context variable, you should "
+"specify <literal>@In(create=true)</literal>. If the value is optional (it "
+"can be null), specify <literal>@In(required=false)</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:395
+#, no-c-format
+msgid ""
+"For some components, it can be repetitive to have to specify <literal>@In"
+"(create=true)</literal> everywhere they are used. In such cases, you can "
+"annotate the component <literal>@AutoCreate</literal>, and then it will "
+"always be created, whenever needed, even without the explicit use of "
+"<literal>create=true</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:398
+#, no-c-format
+msgid "You can even inject the value of an expression:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:401
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In(\"#{user.username}\") String username;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:402
+#, no-c-format
+msgid ""
+"(There is much more information about component lifecycle and injection in "
+"the next chapter.)"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:405
+#, no-c-format
+msgid ""
+"The <literal>@Out</literal> annotation specifies that an attribute should be "
+"outjected, either from an instance variable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:408
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @Out User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:409
+#, no-c-format
+msgid "or from a getter method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:412
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @Out\n"
+"    public User getUser() {\n"
+"        return user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:413
+#, no-c-format
+msgid "An attribute may be both injected and outjected:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:416
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    @In @Out User user;\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:417
+#, no-c-format
+msgid "<para>or:</para>"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:420
+#, no-c-format
+msgid ""
+"@Name(\"loginAction\")\n"
+"@Stateless\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class LoginAction implements Login { \n"
+"    User user;\n"
+"    \n"
+"    @In\n"
+"    public void setUser(User user) {\n"
+"        this.user=user;\n"
+"    }\n"
+"    \n"
+"    @Out\n"
+"    public User getUser() {\n"
+"        return user;\n"
+"    }\n"
+"    \n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:421
+#, no-c-format
+msgid "Lifecycle methods"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:422
+#, no-c-format
+msgid ""
+"Session bean and entity bean Seam components support all the usual EJB 3.0 "
+"lifecycle callback (<literal>@PostConstruct</literal>, <literal>@PreDestroy</"
+"literal>, etc). Seam extends all of these callbacks except "
+"<literal>@PreDestroy</literal> to JavaBean components. But Seam also defines "
+"its own component lifecycle callbacks."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:425
+#, no-c-format
+msgid ""
+"The <literal>@Create</literal> method is called every time Seam instantiates "
+"a component. Unlike the <literal>@PostConstruct</literal> method, this "
+"method is called after the component is fully constructed by the EJB "
+"container, and has access to all the usual Seam functionality (bijection, "
+"etc). Components may define only one <literal>@Create</literal> method."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:428
+#, no-c-format
+msgid ""
+"The <literal>@Destroy</literal> method is called when the context that the "
+"Seam component is bound to ends. Components may define only one "
+"<literal>@Destroy</literal> method. Stateful session bean components "
+"<emphasis>must</emphasis> define a method annotated <literal>@Destroy "
+"@Remove</literal>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:431
+#, no-c-format
+msgid ""
+"Finally, a related annotation is the <literal>@Startup</literal> annotation, "
+"which may be applied to any application or session scoped component. The "
+"<literal>@Startup</literal> annotation tells Seam to instantiate the "
+"component immediately, when the context begins, instead of waiting until it "
+"is first referenced by a client. It is possible to control the order of "
+"instantiation of startup components by specifying <literal>@Startup(depends="
+"{....})</literal>."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:434
+#, no-c-format
+msgid "Conditional installation"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:435
+#, no-c-format
+msgid ""
+"The <literal>@Install</literal> annotation lets you control conditional "
+"installation of components that are required in some deployment scenarios "
+"and not in others. This is useful if:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:440
+#, no-c-format
+msgid "You want to mock out some infrastructural component in tests."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:445
+#, no-c-format
+msgid ""
+"You want change the implementation of a component in certain deployment "
+"scenarios."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:450
+#, no-c-format
+msgid ""
+"You want to install some components only if their dependencies are available "
+"(useful for framework authors)."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:455
+#, no-c-format
+msgid ""
+"<literal>@Install</literal> works by letting you specify "
+"<emphasis>precedence</emphasis> and <emphasis>dependencies</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:458
+#, no-c-format
+msgid ""
+"The precedence of a component is a number that Seam uses to decide which "
+"component to install when there are multiple classes with the same component "
+"name in the classpath. Seam will choose the component with the higher "
+"precendence. There are some predefined precedence values:"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:463
+#, no-c-format
+msgid ""
+"<literal>BUILT_IN</literal> &mdash; the lowest precedece components are the "
+"components built in to Seam."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:468
+#, no-c-format
+msgid ""
+"<literal>FRAMEWORK</literal> &mdash; components defined by third-party "
+"frameworks may override built-in components, but are overridden by "
+"application components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:473
+#, no-c-format
+msgid ""
+"<literal>APPLICATION</literal> &mdash; the default precedence. This is "
+"appropriate for most application components."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:478
+#, no-c-format
+msgid ""
+"<literal>DEPLOYMENT</literal> &mdash; for application components which are "
+"deployment-specific."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:483
+#, no-c-format
+msgid "<literal>MOCK</literal> &mdash; for mock objects used in testing."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:488
+#, no-c-format
+msgid ""
+"Suppose we have a component named <literal>messageSender</literal> that "
+"talks to a JMS queue."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:491
+#, no-c-format
+msgid ""
+"@Name(\"messageSender\") \n"
+"public class MessageSender {\n"
+"    public void sendMessage() {\n"
+"        //do something with JMS\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:492
+#, no-c-format
+msgid ""
+"In our unit tests, we don't have a JMS queue available, so we would like to "
+"stub out this method. We'll create a <emphasis>mock</emphasis> component "
+"that exists in the classpath when unit tests are running, but is never "
+"deployed with the application:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:495
+#, no-c-format
+msgid ""
+"@Name(\"messageSender\") \n"
+"@Install(precedence=MOCK)\n"
+"public class MockMessageSender extends MessageSender {\n"
+"    public void sendMessage() {\n"
+"        //do nothing!\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:496
+#, no-c-format
+msgid ""
+"The <literal>precedence</literal> helps Seam decide which version to use "
+"when it finds both components in the classpath."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:499
+#, no-c-format
+msgid ""
+"This is nice if we are able to control exactly which classes are in the "
+"classpath. But if I'm writing a reusable framework with many dependecies, I "
+"don't want to have to break that framework across many jars. I want to be "
+"able to decide which components to install depending upon what other "
+"components are installed, and upon what classes are available in the "
+"classpath. The <literal>@Install</literal> annotation also controls this "
+"functionality. Seam uses this mechanism internally to enable conditional "
+"installation of many of the built-in components. However, you probably won't "
+"need to use it in your application."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:502
+#, no-c-format
+msgid "Logging"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:503
+#, no-c-format
+msgid "Who is not totally fed up with seeing noisy code like this?"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:506
+#, no-c-format
+msgid ""
+"private static final Log log = LogFactory.getLog(CreateOrderAction.class);\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    if ( log.isDebugEnabled() ) {\n"
+"        log.debug(\"Creating new order for user: \" + user.username() + \n"
+"            \" product: \" + product.name() \n"
+"            + \" quantity: \" + quantity);\n"
+"    }\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:507
+#, no-c-format
+msgid ""
+"It is difficult to imagine how the code for a simple log message could "
+"possibly be more verbose. There is more lines of code tied up in logging "
+"than in the actual business logic! I remain totally astonished that the Java "
+"community has not come up with anything better in 10 years."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:510
+#, no-c-format
+msgid ""
+"Seam provides a logging API built on top of Apache commons-logging that "
+"simplifies this code significantly:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:513
+#, no-c-format
+msgid ""
+"@Logger private Log log;\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    log.debug(\"Creating new order for user: #0 product: #1 quantity: #2\", "
+"user.username(), \n"
+"       product.name(), quantity);\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:514
+#, no-c-format
+msgid ""
+"It doesn't matter if you declare the <literal>log</literal> variable static "
+"or not&mdash;it will work either way."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:517
+#, no-c-format
+msgid ""
+"Note that we don't need the noisy <literal>if ( log.isDebugEnabled() )</"
+"literal> guard, since string concatenation happens <emphasis>inside</"
+"emphasis> the <literal>debug()</literal> method. Note also that we don't "
+"usually need to specify the log category explicitly, since Seam knows what "
+"component it is injecting the <literal>Log</literal> into."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:520
+#, no-c-format
+msgid ""
+"If <literal>User</literal> and <literal>Product</literal> are Seam "
+"components available in the current contexts, it gets even better:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:523
+#, no-c-format
+msgid ""
+"@Logger private Log log;\n"
+"        \n"
+"public Order createOrder(User user, Product product, int quantity) {\n"
+"    log.debug(\"Creating new order for user: #{user.username} product: #"
+"{product.name}\n"
+"       quantity: #0\", quantity);\n"
+"    return new Order(user, product, quantity);\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:524
+#, no-c-format
+msgid ""
+"The <literal>Mutable</literal> interface and <literal>@ReadOnly</literal>"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:525
+#, no-c-format
+msgid ""
+"Many application servers feature an amazingly broken implementation of "
+"<literal>HttpSession</literal> clustering, where changes to the state of "
+"mutable objects bound to the session are only replicated when the "
+"application calls <literal>setAttribute()</literal> explicitly. This is a "
+"source of bugs that can not effectively be tested for at development time, "
+"since they will only manifest when failover occurs. Furthermore, the actual "
+"replication message contains the entire serialized object graph bound to the "
+"session attribute, which is inefficient."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:528
+#, no-c-format
+msgid ""
+"Of course, EJB stateful session beans must perform automatic dirty checking "
+"and replication of mutable state and a sophisticated EJB container can "
+"introduce optimizations such as attribute-level replication. Unfortunately, "
+"not all Seam users have the good fortune to be working in an environment "
+"that supports EJB 3.0. So, for session and conversation scoped JavaBean and "
+"entity bean components, Seam provides an extra layer of cluster-safe state "
+"management over the top of the web container session clustering."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:531
+#, no-c-format
+msgid ""
+"For session or conversation scoped JavaBean components, Seam automatically "
+"forces replication to occur by calling <literal>setAttribute()</literal> "
+"once in every request that the component was invoked by the application. Of "
+"course, this strategy is inefficient for read-mostly components. You can "
+"control this behavior by implementing the <literal>org.jboss.seam.core."
+"Mutable</literal> interface, or by extending <literal>org.jboss.seam.core."
+"AbstractMutable</literal>, and writing your own dirty-checking logic inside "
+"the component. For example,"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:534
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class Account extends AbstractMutable\n"
+"{\n"
+"    private BigDecimal balance;\n"
+"    \n"
+"    public void setBalance(BigDecimal balance)\n"
+"    {\n"
+"        setDirty(this.balance, balance);\n"
+"        this.balance = balance;\n"
+"    }\n"
+"    \n"
+"    public BigDecimal getBalance()\n"
+"    {\n"
+"        return balance;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:535
+#, no-c-format
+msgid ""
+"Or, you can use the <literal>@ReadOnly</literal> annotation to achieve a "
+"similar effect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:538
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class Account\n"
+"{\n"
+"    private BigDecimal balance;\n"
+"    \n"
+"    public void setBalance(BigDecimal balance)\n"
+"    {\n"
+"        this.balance = balance;\n"
+"    }\n"
+"    \n"
+"    @ReadOnly\n"
+"    public BigDecimal getBalance()\n"
+"    {\n"
+"        return balance;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:539
+#, no-c-format
+msgid ""
+"For session or conversation scoped entity bean components, Seam "
+"automatically forces replication to occur by calling <literal>setAttribute()"
+"</literal> once in every request, <emphasis>unless the (conversation-scoped) "
+"entity is currently associated with a Seam-managed persistence context, in "
+"which case no replication is needed</emphasis>. This strategy is not "
+"necessarily efficient, so session or conversation scope entity beans should "
+"be used with care. You can always write a stateful session bean or JavaBean "
+"component to \"manage\" the entity bean instance. For example,"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:542
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"account\")\n"
+"public class AccountManager extends AbstractMutable\n"
+"{\n"
+"    private Account account; // an entity bean\n"
+"    \n"
+"    @Unwrap\n"
+"    public void getAccount()\n"
+"    {\n"
+"        return account;\n"
+"    }\n"
+"    \n"
+"    ...\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:543
+#, no-c-format
+msgid ""
+"Note that the <literal>EntityHome</literal> class in the Seam Application "
+"Framework provides a great example of this pattern."
+msgstr ""
+
+#. Tag: title
+#: Concepts.xml:546
+#, no-c-format
+msgid "Factory and manager components"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:547
+#, no-c-format
+msgid ""
+"We often need to work with objects that are not Seam components. But we "
+"still want to be able to inject them into our components using <literal>@In</"
+"literal> and use them in value and method binding expressions, etc. "
+"Sometimes, we even need to tie them into the Seam context lifecycle "
+"(<literal>@Destroy</literal>, for example). So the Seam contexts can contain "
+"objects which are not Seam components, and Seam provides a couple of nice "
+"features that make it easier to work with non-component objects bound to "
+"contexts."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:550
+#, no-c-format
+msgid ""
+"The <emphasis>factory component pattern</emphasis> lets a Seam component act "
+"as the instantiator for a non-component object. A <emphasis>factory method</"
+"emphasis> will be called when a context variable is referenced but has no "
+"value bound to it. We define factory methods using the <literal>@Factory</"
+"literal> annotation. The factory method binds a value to the context "
+"variable, and determines the scope of the bound value. There are two styles "
+"of factory method. The first style returns a value, which is bound to the "
+"context by Seam:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:553
+#, no-c-format
+msgid ""
+"@Factory(scope=CONVERSATION)\n"
+"public List&lt;Customer&gt; getCustomerList() { \n"
+"    return ... ;\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:554
+#, no-c-format
+msgid ""
+"The second style is a method of type <literal>void</literal> which binds the "
+"value to the context variable itself:"
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:557
+#, no-c-format
+msgid ""
+"@DataModel List&lt;Customer&gt; customerList;\n"
+"\n"
+"@Factory(\"customerList\")\n"
+"public void initCustomerList() { \n"
+"    customerList = ...  ;\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:558
+#, no-c-format
+msgid ""
+"In both cases, the factory method is called when we reference the "
+"<literal>customerList</literal> context variable and its value is null, and "
+"then has no further part to play in the lifecycle of the value. An even more "
+"powerful pattern is the <emphasis>manager component pattern</emphasis>. In "
+"this case, we have a Seam component that is bound to a context variable, "
+"that manages the value of the context variable, while remaining invisible to "
+"clients."
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:561
+#, no-c-format
+msgid ""
+"A manager component is any component with an <literal>@Unwrap</literal> "
+"method. This method returns the value that will be visable to clients, and "
+"is called <emphasis>every time</emphasis> a context variable is referenced."
+msgstr ""
+
+#. Tag: programlisting
+#: Concepts.xml:564
+#, no-c-format
+msgid ""
+"@Name(\"customerList\")\n"
+"@Scope(CONVERSATION)\n"
+"public class CustomerListManager\n"
+"{\n"
+"    ...\n"
+"    \n"
+"    @Unwrap\n"
+"    public List&lt;Customer&gt; getCustomerList() { \n"
+"        return ... ;\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Concepts.xml:565
+#, no-c-format
+msgid ""
+"This pattern is especially useful if we have some heavyweight object that "
+"needs a cleanup operation when the context ends. In this case, the manager "
+"component may perform cleanup in the <literal>@Destroy</literal> method."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Configuration.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Configuration.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Configuration.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1435 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Configuration.xml:10
+#, no-c-format
+msgid "Configuring Seam and packaging Seam applications"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:11
+#, no-c-format
+msgid ""
+"Configuration is a very boring topic and an extremely tedious pastime. "
+"Unfortunately, several lines of XML are required to integrate Seam into your "
+"JSF implementation and servlet container. There's no need to be too put off "
+"by the following sections; you'll never need to type any of this stuff "
+"yourself, since you can just copy and paste from the example applications!"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:14
+#, no-c-format
+msgid "Basic Seam configuration"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:15
+#, no-c-format
+msgid ""
+"First, let's look at the basic configuration that is needed whenever we use "
+"Seam with JSF."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:18
+#, no-c-format
+msgid "Integrating Seam with JSF and your servlet container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:19
+#, no-c-format
+msgid ""
+"Seam requires the following entry in your <literal>web.xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:22
+#, no-c-format
+msgid ""
+"&lt;listener&gt;\n"
+"    &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/listener-"
+"class&gt;\n"
+"&lt;/listener&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:23
+#, no-c-format
+msgid ""
+"This listener is responsible for bootstrapping Seam, and for destroying "
+"session and application contexts."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:26
+#, no-c-format
+msgid ""
+"To integrate with the JSF request lifecycle, we also need a JSF "
+"<literal>PhaseListener</literal> registered in in the <literal>faces-config."
+"xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:29
+#, no-c-format
+msgid ""
+"&lt;lifecycle&gt;\n"
+"    &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-"
+"listener&gt;\n"
+"&lt;/lifecycle&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:30
+#, no-c-format
+msgid ""
+"The actual listener class here varies depending upon how you want to manage "
+"transaction demarcation (more on this below)."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:33
+#, no-c-format
+msgid ""
+"If you are using Sun's JSF 1.2 reference implementation, you should also add "
+"this to <literal>faces-config.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:36
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;el-resolver&gt;org.jboss.seam.jsf.SeamELResolver&lt;/el-"
+"resolver&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:37
+#, no-c-format
+msgid ""
+"(This line should not strictly speaking be necessary, but it works around a "
+"minor bug in the RI.)"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:40
+#, no-c-format
+msgid ""
+"Some JSF implementations have a broken implementation of server-side state "
+"saving that interferes with Seam's conversation propagation. If you have "
+"problems with conversation propagation during form submissions, try "
+"switching to client-side state saving. You'll need this in <literal>web.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:43
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;client&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:44
+#, no-c-format
+msgid "Seam servlet filters"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:45
+#, no-c-format
+msgid ""
+"Seam doesn't need any servlet filters for basic operation. However, there "
+"are several features which depend upon the use of filters. To make things "
+"easier for you guys, Seam lets you add and configure servlet filters just "
+"like you would configure other built-in Seam components. To take advantage "
+"of this feature, we must first install a master filter in <literal>web.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:48
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;/*&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:49
+#, no-c-format
+msgid "Adding the master filter enables the following built-in filters."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:52
+#, no-c-format
+msgid "Exception handling"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:53
+#, no-c-format
+msgid ""
+"This filter provides the exception mapping functionality in <literal>pages."
+"xml</literal> (almost all applications will need this). It also takes care "
+"of rolling back uncommitted transactions when uncaught exceptions occur. "
+"(According to the Java EE specification, the web container should do this "
+"automatically, but we've found that this behavior cannot be relied upon in "
+"all application servers. And it is certainly not required of plain servlet "
+"engines like Tomcat.)"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:56
+#, no-c-format
+msgid ""
+"By default, the exception handling filter will process all requests, however "
+"this behavior may be adjusted by adding a <literal>&lt;web:exception-"
+"filter&gt;</literal> entry to <literal>components.xml</literal>, as shown in "
+"this example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:59
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:web=\"http://jboss.com/products/seam/web\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                    http://jboss.com/products/seam/core-1.2.xsd\n"
+"                 http://jboss.com/products/seam/components \n"
+"                     http://jboss.com/products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/web \n"
+"                     http://jboss.com/products/seam/web-1.2.xsd\"&gt;\n"
+"\n"
+"    &lt;web:exception-filter url-pattern=\"*.seam\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:62 Configuration.xml:77 Configuration.xml:99
+#: Configuration.xml:124
+#, no-c-format
+msgid ""
+"<literal>url-pattern</literal> &mdash; Used to specify which requests are "
+"filtered, the default is all requests."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:67
+#, no-c-format
+msgid "Conversation propagation with redirects"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:68
+#, no-c-format
+msgid ""
+"This filter allows Seam to propagate the conversation context across browser "
+"redirects. It intercepts any browser redirects and adds a request parameter "
+"that specifies the Seam conversation identifier."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:71
+#, no-c-format
+msgid ""
+"The redirect filter will process all requests by default, but this behavior "
+"can also be adjusted in <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:74
+#, no-c-format
+msgid "&lt;web:redirect-filter url-pattern=\"*.seam\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:82
+#, no-c-format
+msgid "Multipart form submissions"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:83
+#, no-c-format
+msgid ""
+"This feature is necessary when using the Seam file upload JSF control. It "
+"detects multipart form requests and processes them according to the "
+"multipart/form-data specification (RFC-2388). To override the default "
+"settings, add the following entry to <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:86
+#, no-c-format
+msgid ""
+"&lt;web:multipart-filter create-temp-files=\"true\" \n"
+"        max-request-size=\"1000000\" \n"
+"        url-pattern=\"*.seam\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:89
+#, no-c-format
+msgid ""
+"<literal>create-temp-files</literal> &mdash; If set to <literal>true</"
+"literal>, uploaded files are written to a temporary file (instead of held in "
+"memory). This may be an important consideration if large file uploads are "
+"expected. The default setting is <literal>false</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:94
+#, no-c-format
+msgid ""
+"<literal>max-request-size</literal> &mdash; If the size of a file upload "
+"request (determined by reading the <literal>Content-Length</literal> header "
+"in the request) exceeds this value, the request will be aborted. The default "
+"setting is 0 (no size limit)."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:104
+#, no-c-format
+msgid "Character encoding"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:105
+#, no-c-format
+msgid "Sets the character encoding of submitted form data."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:108 Configuration.xml:136
+#, no-c-format
+msgid ""
+"This filter is not installed by default and requires an entry in "
+"<literal>components.xml</literal> to enable it:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:111
+#, no-c-format
+msgid ""
+"&lt;web:character-encoding-filter encoding=\"UTF-16\" \n"
+"        override-client=\"true\" \n"
+"        url-pattern=\"*.seam\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:114
+#, no-c-format
+msgid "<literal>encoding</literal> &mdash; The encoding to use."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:119
+#, no-c-format
+msgid ""
+"<literal>override-client</literal> &mdash; If this is set to <literal>true</"
+"literal>, the request encoding will be set to whatever is specified by "
+"<literal>encoding</literal> no matter whether the request already specifies "
+"an encoding or not. If set to <literal>false</literal>, the request encoding "
+"will only be set if the request doesn't already specify an encoding. The "
+"default setting is <literal>false</literal>."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:129
+#, no-c-format
+msgid "Context management for custom servlets"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:130
+#, no-c-format
+msgid ""
+"Requests sent direct to some servlet other than the JSF servlet are not "
+"processed through the JSF lifecycle, so Seam provides a servlet filter that "
+"can be applied to any other servlet that needs access to Seam components."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:133
+#, no-c-format
+msgid ""
+"This filter allows custom servlets to interact with the Seam contexts. It "
+"sets up the Seam contexts at the beginning of each request, and tears them "
+"down at the end of the request. You should make sure that this filter is "
+"<emphasis>never</emphasis> applied to the JSF <literal>FacesServlet</"
+"literal>. Seam uses the phase listener for context management in a JSF "
+"request."
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:139
+#, no-c-format
+msgid "&lt;web:context-filter url-pattern=\"/media/*\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:142
+#, no-c-format
+msgid ""
+"<literal>url-pattern</literal> &mdash; Used to specify which requests are "
+"filtered, the default is all requests. If the url-pattern is specified for "
+"the context filter, then the filter will be enabled (unless explicitly "
+"disabled)."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:147
+#, no-c-format
+msgid ""
+"The context filter expects to find the conversation id of any conversation "
+"context in a request parameter named <literal>conversationId</literal>. You "
+"are responsible for ensuring that it gets sent in the request."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:150
+#, no-c-format
+msgid ""
+"You are also responsible for ensuring propagation of any new conversation id "
+"back to the client. Seam exposes the conversation id as a property of the "
+"built in component <literal>conversation</literal>."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:153
+#, no-c-format
+msgid "Integrating Seam with your EJB container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:154
+#, no-c-format
+msgid ""
+"We need to apply the <literal>SeamInterceptor</literal> to our Seam "
+"components. The simplest way to do this is to add the following interceptor "
+"binding to the <literal>&lt;assembly-descriptor&gt;</literal> in "
+"<literal>ejb-jar.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:157
+#, no-c-format
+msgid ""
+"&lt;interceptor-binding&gt;\n"
+"    &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"    &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"&lt;/interceptor-binding&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:158
+#, no-c-format
+msgid ""
+"Seam needs to know where to go to find session beans in JNDI. One way to do "
+"this is specify the <literal>@JndiName</literal> annotation on every session "
+"bean Seam component. However, this is quite tedious. A better approach is to "
+"specify a pattern that Seam can use to calculate the JNDI name from the EJB "
+"name. Unfortunately, there is no standard mapping to global JNDI defined in "
+"the EJB3 specification, so this mapping is vendor-specific. We usually "
+"specify this option in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:161
+#, no-c-format
+msgid "For JBoss AS, the following pattern is correct:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:164
+#, no-c-format
+msgid "&lt;core:init jndi-name=\"myEarName/#{ejbName}/local\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:165
+#, no-c-format
+msgid ""
+"Where <literal>myEarName</literal> is the name of the EAR in which the bean "
+"is deployed."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:168
+#, no-c-format
+msgid ""
+"Outside the context of an EAR (when using the JBoss Embeddable EJB3 "
+"container), the following pattern is the one to use:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:171
+#, no-c-format
+msgid "&lt;core:init jndi-name=\"#{ejbName}/local\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:172
+#, no-c-format
+msgid ""
+"You'll have to experiment to find the right setting for other application "
+"servers. Note that some servers (such as GlassFish) require you to specify "
+"JNDI names for all EJB components explicitly (and tediously). In this case, "
+"you can pick your own pattern ;-)"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:175
+#, no-c-format
+msgid "Using facelets"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:176
+#, no-c-format
+msgid ""
+"If you want follow our advice and use facelets instead of JSP, add the "
+"following lines to <literal>faces-config.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:179
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;view-handler&gt;com.sun.facelets.FaceletViewHandler&lt;/view-"
+"handler&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:180
+#, no-c-format
+msgid "And the following lines to <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:183
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;javax.faces.DEFAULT_SUFFIX&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;.xhtml&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:184
+#, no-c-format
+msgid "Don't forget!"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:185
+#, no-c-format
+msgid ""
+"There is one final item you need to know about. You must place a "
+"<literal>seam.properties</literal>, <literal>META-INF/seam.properties</"
+"literal> or <literal>META-INF/components.xml</literal> file in any archive "
+"in which your Seam components are deployed (even an empty properties file "
+"will do). At startup, Seam will scan any archives with <literal>seam."
+"properties</literal> files for seam components."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:188
+#, no-c-format
+msgid ""
+"That's why all the Seam examples have an empty <literal>seam.properties</"
+"literal> file. You can't just delete this file and expect everything to "
+"still work!"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:191
+#, no-c-format
+msgid ""
+"You might think this is silly and what kind of idiot framework designers "
+"would make an empty file affect the behavior of their software?? Well, this "
+"is a workaround for a limitation of the JVM&mdash;if we didn't use this "
+"mechanism, our next best option would be to force you to list every "
+"component explicitly in <literal>components.xml</literal>, just like some "
+"other competing frameworks do! I think you'll like our way better."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:195
+#, no-c-format
+msgid "Configuring Seam in Java EE 5"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:204
+#, no-c-format
+msgid ""
+"If you're running in a Java EE 5 environment, this is all the configuration "
+"required to start using Seam!"
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:207 Configuration.xml:270 Configuration.xml:318
+#: Configuration.xml:354 Configuration.xml:371
+#, no-c-format
+msgid "Packaging"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:208
+#, no-c-format
+msgid ""
+"Once you've packaged all this stuff together into an EAR, the archive "
+"structure will look something like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:211
+#, no-c-format
+msgid ""
+"my-application.ear/\n"
+"    jboss-seam.jar\n"
+"    el-api.jar\n"
+"    el-ri.jar\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"        application.xml\n"
+"    my-application.war/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"        WEB-INF/\n"
+"            web.xml\n"
+"            components.xml\n"
+"            faces-config.xml\n"
+"            lib/\n"
+"                jsf-facelets.jar\n"
+"                jboss-seam-ui.jar\n"
+"        login.jsp\n"
+"        register.jsp\n"
+"        ...\n"
+"    my-application.jar/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"            persistence.xml\n"
+"        seam.properties\n"
+"        org/\n"
+"            jboss/\n"
+"                myapplication/\n"
+"                    User.class\n"
+"                    Login.class\n"
+"                    LoginBean.class\n"
+"                    Register.class\n"
+"                    RegisterBean.class\n"
+"                    ..."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:212
+#, no-c-format
+msgid ""
+"You must include <literal>jboss-seam.jar</literal>, <literal>el-api.jar</"
+"literal> and <literal>el-ri.jar</literal> in the EAR classpath. Make sure "
+"you reference all of these jars from <literal>application.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:215
+#, no-c-format
+msgid ""
+"If you want to use jBPM or Drools, you must include the needed jars in the "
+"EAR classpath. Make sure you reference all of the jars from "
+"<literal>application.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:218
+#, no-c-format
+msgid ""
+"If you want to use facelets (our recommendation), you must include "
+"<literal>jsf-facelets.jar</literal> in the <literal>WEB-INF/lib</literal> "
+"directory of the WAR."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:221
+#, no-c-format
+msgid ""
+"If you want to use the Seam tag library (most Seam applications do), you "
+"must include <literal>jboss-seam-ui.jar</literal> in the <literal>WEB-INF/"
+"lib</literal> directory of the WAR. If you want to use the PDF or email tag "
+"libraries, you need to put <literal>jboss-seam-pdf.jar</literal> or "
+"<literal>jboss-seam-mail.jar</literal> in <literal>WEB-INF/lib</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:224
+#, no-c-format
+msgid ""
+"If you want to use the Seam debug page (only works for applications using "
+"facelets), you must include <literal>jboss-seam-debug.jar</literal> in the "
+"<literal>WEB-INF/lib</literal> directory of the WAR."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:227
+#, no-c-format
+msgid ""
+"Seam ships with several example applications that are deployable in any Java "
+"EE container that supports EJB 3.0."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:231
+#, no-c-format
+msgid "Configuring Seam in Java SE, with the JBoss Embeddable EJB3 container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:232
+#, no-c-format
+msgid ""
+"The JBoss Embeddable EJB3 container lets you run EJB3 components outside the "
+"context of the Java EE 5 application server. This is especially, but not "
+"only, useful for testing."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:235
+#, no-c-format
+msgid ""
+"The Seam booking example application includes a TestNG integration test "
+"suite that runs on the Embeddable EJB3 container."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:246
+#, no-c-format
+msgid "The booking example application may even be deployed to Tomcat."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:257
+#, no-c-format
+msgid "Installing the Embeddable EJB3 container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:258
+#, no-c-format
+msgid ""
+"Seam ships with a build of the Embeddable EJB3 container in the "
+"<literal>embedded-ejb</literal> directory. To use the Embeddable EJB3 "
+"container with Seam, add the <literal>embedded-ejb/conf</literal> directory, "
+"and all jars in the <literal>lib</literal> and <literal>embedded-ejb/lib</"
+"literal> directories to your classpath. Then, add the following line to "
+"<literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:261
+#, no-c-format
+msgid "&lt;core:ejb /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:262
+#, no-c-format
+msgid ""
+"This setting installs the built-in component named <literal>org.jboss.seam."
+"core.ejb</literal>. This component is responsible for bootstrapping the EJB "
+"container when Seam is started, and shutting it down when the web "
+"application is undeployed."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:265
+#, no-c-format
+msgid "Configuring a datasource with the Embeddable EJB3 container"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:266
+#, no-c-format
+msgid ""
+"You should refer to the Embeddable EJB3 container documentation for more "
+"information about configuring the container. You'll probably at least need "
+"to set up your own datasource. Embeddable EJB3 is implemented using the "
+"JBoss Microcontainer, so it's very easy to add new services to the minimal "
+"set of services provided by default. For example, I can add a new datasource "
+"by putting this <literal>jboss-beans.xml</literal> file in my classpath:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:269
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"\n"
+"&lt;deployment xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"urn:jboss:bean-deployer bean-deployer_1_0."
+"xsd\"\n"
+"            xmlns=\"urn:jboss:bean-deployer\"&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasourceBootstrap\"\n"
+"        class=\"org.jboss.resource.adapter.jdbc.local.LocalTxDataSource"
+"\"&gt;\n"
+"      &lt;property name=\"driverClass\"&gt;org.hsqldb.jdbcDriver&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"connectionURL\"&gt;jdbc:hsqldb:.&lt;/property&gt;\n"
+"      &lt;property name=\"userName\"&gt;sa&lt;/property&gt;\n"
+"      &lt;property name=\"jndiName\"&gt;java:/bookingDatasource&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"minSize\"&gt;0&lt;/property&gt;\n"
+"      &lt;property name=\"maxSize\"&gt;10&lt;/property&gt;\n"
+"      &lt;property name=\"blockingTimeout\"&gt;1000&lt;/property&gt;\n"
+"      &lt;property name=\"idleTimeout\"&gt;100000&lt;/property&gt;\n"
+"      &lt;property name=\"transactionManager\"&gt;\n"
+"        &lt;inject bean=\"TransactionManager\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"      &lt;property name=\"cachedConnectionManager\"&gt;\n"
+"        &lt;inject bean=\"CachedConnectionManager\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"      &lt;property name=\"initialContextProperties\"&gt;\n"
+"        &lt;inject bean=\"InitialContextProperties\"/&gt;\n"
+"      &lt;/property&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasource\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getDatasource\"&gt;\n"
+"         &lt;factory bean=\"bookingDatasourceBootstrap\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"&lt;/deployment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:271
+#, no-c-format
+msgid ""
+"The archive structure of a WAR-based deployment on an servlet engine like "
+"Tomcat will look something like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:274
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            myfaces-api.jar\n"
+"            myfaces-impl.jar\n"
+"            jboss-ejb3.jar\n"
+"            jboss-jca.jar\n"
+"            jboss-j2ee.jar\n"
+"            ...\n"
+"            mc-conf.jar/\n"
+"                ejb3-interceptors-aop.xml\n"
+"                embedded-jboss-beans.xml\n"
+"                default.persistence.properties\n"
+"                jndi.properties\n"
+"                login-config.xml\n"
+"                security-beans.xml\n"
+"                log4j.xml\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                    MANIFEST.MF\n"
+"                    persistence.xml\n"
+"                    jboss-beans.xml\n"
+"                log4j.xml\n"
+"                seam.properties\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            LoginBean.class\n"
+"                            Register.class\n"
+"                            RegisterBean.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:275
+#, no-c-format
+msgid ""
+"The <literal>mc-conf.jar</literal> just contains the standard JBoss "
+"Microcontainer configuration files for Embeddable EJB3. You won't usually "
+"need to edit these files yourself."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:278
+#, no-c-format
+msgid ""
+"Most of the Seam example applications may be deployed to Tomcat by running "
+"<literal>ant deploy.tomcat</literal>."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:281
+#, no-c-format
+msgid "Configuring Seam in J2EE"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:282
+#, no-c-format
+msgid ""
+"Seam is useful even if you're not yet ready to take the plunge into EJB 3.0. "
+"In this case you would use Hibernate3 or JPA instead of EJB 3.0 persistence, "
+"and plain JavaBeans instead of session beans. You'll miss out on some of the "
+"nice features of session beans but it will be very easy to migrate to EJB "
+"3.0 when you're ready and, in the meantime, you'll be able to take advantage "
+"of Seam's unique declarative state management architecture."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:293
+#, no-c-format
+msgid ""
+"Seam JavaBean components do not provide declarative transaction demarcation "
+"like session beans do. You <emphasis>could</emphasis> manage your "
+"transactions manually using the JTA <literal>UserTransaction</literal> (you "
+"could even implement your own declarative transaction management in a Seam "
+"interceptor). But most applications will use Seam managed transactions when "
+"using Hibernate with JavaBeans. Follow the instructions in the persistence "
+"chapter to install <literal>TransactionalSeamPhaseListener</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:296
+#, no-c-format
+msgid ""
+"The Seam distribution includes a version of the booking example application "
+"that uses Hibernate3 and JavaBeans instead of EJB3, and another version that "
+"uses JPA and JavaBeans. These example applications are ready to deploy into "
+"any J2EE application server."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:299
+#, no-c-format
+msgid ""
+"If we want to deploy Hibernate in a non-J2EE environment like Tomcat or "
+"TestNG, we need to do a little bit more work."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:302
+#, no-c-format
+msgid "Boostrapping Hibernate in Seam"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:303
+#, no-c-format
+msgid ""
+"Seam will bootstrap a Hibernate <literal>SessionFactory</literal> from your "
+"<literal>hibernate.cfg.xml</literal> file if you install a built-in "
+"component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:306
+#, no-c-format
+msgid ""
+"&lt;core:hibernate-session-factory name=\"hibernateSessionFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:307
+#, no-c-format
+msgid ""
+"You will also need to configure a <emphasis>managed session</emphasis> if "
+"you want a Seam managed Hibernate <literal>Session</literal> to be available "
+"via injection."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:310
+#, no-c-format
+msgid "Boostrapping JPA in Seam"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:311
+#, no-c-format
+msgid ""
+"Seam will bootstrap a JPA <literal>EntityManagerFactory</literal> from your "
+"<literal>persistence.xml</literal> file if you install this built-in "
+"component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:314
+#, no-c-format
+msgid "&lt;core:entity-manager-factory name=\"entityManagerFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:315
+#, no-c-format
+msgid ""
+"You will also need to configure a <emphasis>managed persistencece context</"
+"emphasis> if you want a Seam managed JPA <literal>EntityManager</literal> to "
+"be available via injection."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:319
+#, no-c-format
+msgid "We can package our application as a WAR, in the following structure:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:322
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            hibernate3.jar\n"
+"            hibernate-annotations.jar\n"
+"            ...\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                   MANIFEST.MF\n"
+"                seam.properties\n"
+"                hibernate.cfg.xml\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            Register.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:324
+#, no-c-format
+msgid "Configuring Seam in Java SE, with the JBoss Microcontainer"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:325
+#, no-c-format
+msgid ""
+"The Seam support for Hibernate and JPA requires JTA and a JCA datasource. If "
+"you are running in a non-EE environment like Tomcat or TestNG you can run "
+"these services, and Hibernate itself, in the JBoss Microcontainer."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:328
+#, no-c-format
+msgid ""
+"You can even deploy the Hibernate and JPA versions of the booking example in "
+"Tomcat."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:339
+#, no-c-format
+msgid ""
+"Seam ships with an example Microcontainer configuration in "
+"<literal>microcontainer/conf/jboss-beans.xml</literal> that provides all the "
+"things you need to run Seam with Hibernate in any non-EE environment. Just "
+"add the <literal>microcontainer/conf</literal> directory, and all jars in "
+"the <literal>lib</literal> and <literal>microcontainer/lib</literal> "
+"directories to your classpath. Refer to the documentation for the JBoss "
+"Microcontainer for more information."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:342
+#, no-c-format
+msgid "Using Hibernate and the JBoss Microcontainer"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:343
+#, no-c-format
+msgid ""
+"The built-in Seam component named <literal>org.jboss.seam.core."
+"microcontainer</literal> bootstraps the microcontainer. As before, we "
+"probably want to use a Seam managed session."
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:346
+#, no-c-format
+msgid ""
+"&lt;core:microcontainer/&gt;\n"
+"\n"
+"&lt;core:managed-hibernate-session name=\"bookingDatabase\" auto-create="
+"\"true\"\n"
+"    session-factory-jndi-name=\"java:/bookingSessionFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:347
+#, no-c-format
+msgid ""
+"Where <literal>java:/bookingSessionFactory</literal> is the name of the "
+"Hibernate session factory specified in <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:350
+#, no-c-format
+msgid ""
+"You'll need to provide a <literal>jboss.beans.xml</literal> file that "
+"installs JNDI, JTA, your JCA datasource and Hibernate into the "
+"microcontainer:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:353
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"\n"
+"&lt;deployment xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\"urn:jboss:bean-deployer bean-deployer_1_0."
+"xsd\"\n"
+"            xmlns=\"urn:jboss:bean-deployer\"&gt;\n"
+"\n"
+"   &lt;bean name=\"Naming\" class=\"org.jnp.server.SingletonNamingServer\"/"
+"&gt;\n"
+"\n"
+"   &lt;bean name=\"TransactionManagerFactory\"\n"
+"       class=\"org.jboss.seam.microcontainer.TransactionManagerFactory\"/"
+"&gt;\n"
+"   &lt;bean name=\"TransactionManager\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getTransactionManager\"&gt;\n"
+"         &lt;factory bean=\"TransactionManagerFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingDatasourceFactory\" class=\"org.jboss.seam."
+"microcontainer.DataSourceFactory\"&gt;\n"
+"      &lt;property name=\"driverClass\"&gt;org.hsqldb.jdbcDriver&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"connectionUrl\"&gt;jdbc:hsqldb:.&lt;/property&gt;\n"
+"      &lt;property name=\"userName\"&gt;sa&lt;/property&gt;\n"
+"      &lt;property name=\"jndiName\"&gt;java:/hibernateDatasource&lt;/"
+"property&gt;\n"
+"      &lt;property name=\"minSize\"&gt;0&lt;/property&gt;\n"
+"      &lt;property name=\"maxSize\"&gt;10&lt;/property&gt;\n"
+"      &lt;property name=\"blockingTimeout\"&gt;1000&lt;/property&gt;\n"
+"      &lt;property name=\"idleTimeout\"&gt;100000&lt;/property&gt;\n"
+"      &lt;property name=\"transactionManager\"&gt;&lt;inject bean="
+"\"TransactionManager\"/&gt;&lt;/property&gt;\n"
+"   &lt;/bean&gt;\n"
+"   &lt;bean name=\"bookingDatasource\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getDataSource\"&gt;\n"
+"         &lt;factory bean=\"bookingDatasourceFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"   &lt;bean name=\"bookingSessionFactoryFactory\"\n"
+"       class=\"org.jboss.seam.microcontainer.HibernateFactory\"/&gt;\n"
+"   &lt;bean name=\"bookingSessionFactory\" class=\"java.lang.Object\"&gt;\n"
+"      &lt;constructor factoryMethod=\"getSessionFactory\"&gt;\n"
+"         &lt;factory bean=\"bookingSessionFactoryFactory\"/&gt;\n"
+"      &lt;/constructor&gt;\n"
+"      &lt;depends&gt;bookingDatasource&lt;/depends&gt;\n"
+"   &lt;/bean&gt;\n"
+"\n"
+"&lt;/deployment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:355
+#, no-c-format
+msgid "The WAR could have the following structure:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:358
+#, no-c-format
+msgid ""
+"my-application.war/\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"    WEB-INF/\n"
+"        web.xml\n"
+"        components.xml\n"
+"        faces-config.xml\n"
+"        lib/\n"
+"            jboss-seam.jar\n"
+"            jboss-seam-ui.jar\n"
+"            el-api.jar\n"
+"            el-ri.jar\n"
+"            jsf-facelets.jar\n"
+"            hibernate3.jar\n"
+"            ...\n"
+"            jboss-microcontainer.jar\n"
+"            jboss-jca.jar\n"
+"            ...\n"
+"            myfaces-api.jar\n"
+"            myfaces-impl.jar\n"
+"            mc-conf.jar/\n"
+"                jndi.properties\n"
+"                log4j.xml\n"
+"            my-application.jar/\n"
+"                META-INF/\n"
+"                    MANIFEST.MF\n"
+"                    jboss-beans.xml\n"
+"                seam.properties\n"
+"                hibernate.cfg.xml\n"
+"                log4j.xml\n"
+"                org/\n"
+"                    jboss/\n"
+"                        myapplication/\n"
+"                            User.class\n"
+"                            Login.class\n"
+"                            Register.class\n"
+"                            ...\n"
+"    login.jsp\n"
+"    register.jsp\n"
+"    ..."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:359
+#, no-c-format
+msgid "Configuring jBPM in Seam"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:360
+#, no-c-format
+msgid ""
+"Seam's jBPM integration is not installed by default, so you'll need to "
+"enable jBPM by installing a built-in component. You'll also need to "
+"explicitly list your process and pageflow definitions. In "
+"<literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:363
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:pageflow-definitions&gt;\n"
+"        &lt;value&gt;createDocument.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;editDocument.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;approveDocument.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:pageflow-definitions&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;documentLifecycle.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:364
+#, no-c-format
+msgid ""
+"No further special configuration is needed if you only have pageflows. If "
+"you do have business process definitions, you need to provide a jBPM "
+"configuration, and a Hibernate configuration for jBPM. The Seam DVD Store "
+"demo includes example <literal>jbpm.cfg.xml</literal> and <literal>hibernate."
+"cfg.xml</literal> files that will work with Seam:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:367
+#, no-c-format
+msgid ""
+"&lt;jbpm-configuration&gt;\n"
+"\n"
+"  &lt;jbpm-context&gt;\n"
+"    &lt;service name=\"persistence\"&gt;\n"
+"       &lt;factory&gt;\n"
+"          &lt;bean class=\"org.jbpm.persistence.db."
+"DbPersistenceServiceFactory\"&gt;\n"
+"             &lt;field name=\"isTransactionEnabled\"&gt;&lt;false/&gt;&lt;/"
+"field&gt;\n"
+"          &lt;/bean&gt;\n"
+"       &lt;/factory&gt;\n"
+"    &lt;/service&gt;\n"
+"    &lt;service name=\"message\" factory=\"org.jbpm.msg.db."
+"DbMessageServiceFactory\" /&gt;\n"
+"    &lt;service name=\"scheduler\" factory=\"org.jbpm.scheduler.db."
+"DbSchedulerServiceFactory\" /&gt;\n"
+"    &lt;service name=\"logging\" factory=\"org.jbpm.logging.db."
+"DbLoggingServiceFactory\" /&gt;\n"
+"    &lt;service name=\"authentication\" \n"
+"        factory=\"org.jbpm.security.authentication."
+"DefaultAuthenticationServiceFactory\" /&gt;\n"
+"  &lt;/jbpm-context&gt;\n"
+"\n"
+"&lt;/jbpm-configuration&gt;"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:368
+#, no-c-format
+msgid ""
+"The most important thing to notice here is that jBPM transaction control is "
+"disabled. Seam or EJB3 should control the JTA transactions."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:372
+#, no-c-format
+msgid ""
+"There is not yet any well-defined packaging format for jBPM configuration "
+"and process/pageflow definition files. In the Seam examples we've decided to "
+"simply package all these files into the root of the EAR. In future, we will "
+"probably design some other standard packaging format. So the EAR looks "
+"something like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Configuration.xml:375
+#, no-c-format
+msgid ""
+"my-application.ear/\n"
+"    jboss-seam.jar\n"
+"    el-api.jar\n"
+"    el-ri.jar\n"
+"    jbpm-3.1.jar\n"
+"    META-INF/\n"
+"        MANIFEST.MF\n"
+"        application.xml\n"
+"    my-application.war/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"        WEB-INF/\n"
+"            web.xml\n"
+"            components.xml\n"
+"            faces-config.xml\n"
+"            lib/\n"
+"                jsf-facelets.jar\n"
+"                jboss-seam-ui.jar\n"
+"        login.jsp\n"
+"        register.jsp\n"
+"        ...\n"
+"    my-application.jar/\n"
+"        META-INF/\n"
+"            MANIFEST.MF\n"
+"            persistence.xml\n"
+"        seam.properties\n"
+"        org/\n"
+"            jboss/\n"
+"                myapplication/\n"
+"                    User.class\n"
+"                    Login.class\n"
+"                    LoginBean.class\n"
+"                    Register.class\n"
+"                    RegisterBean.class\n"
+"                    ...\n"
+"    jbpm.cfg.xml\n"
+"    hibernate.cfg.xml\n"
+"    createDocument.jpdl.xml\n"
+"    editDocument.jpdl.xml\n"
+"    approveDocument.jpdl.xml\n"
+"    documentLifecycle.jpdl.xml"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:376
+#, no-c-format
+msgid ""
+"Remember to add <literal>jbpm-3.1.jar</literal> to the manifest of your EJB-"
+"JAR and WAR."
+msgstr ""
+
+#. Tag: title
+#: Configuration.xml:379
+#, no-c-format
+msgid "Configuring Seam in a Portal"
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:380
+#, no-c-format
+msgid ""
+"To run a Seam application as a portlet, you'll need to provide certain "
+"portlet metadata (<literal>portlet.xml</literal>, etc) in addition to the "
+"usual Java EE metadata. See the <literal>examples/portal</literal> directory "
+"for an example of the booking demo preconfigured to run on JBoss Portal."
+msgstr ""
+
+#. Tag: para
+#: Configuration.xml:383
+#, no-c-format
+msgid ""
+"In addition, you'll need to use a portlet-specific phase listener instead of "
+"<literal>SeamPhaseListener</literal> or "
+"<literal>TransactionalSeamPhaseListener</literal>. The "
+"<literal>SeamPortletPhaseListener</literal> and "
+"<literal>TransactionalSeamPortletPhaseListener</literal> are adapted to the "
+"portlet lifecycle. I would like to offer my sincerest apologies for the name "
+"of that last class. I really couldn't think of anything better. Sorry."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Controls.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Controls.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Controls.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,591 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Controls.xml:10
+#, no-c-format
+msgid "Seam JSF controls"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:11
+#, no-c-format
+msgid ""
+"Seam includes a number of JSF controls that are useful for working with "
+"Seam. These are intended to complement the built-in JSF controls, and "
+"controls from other third-party libraries. We recommend the Ajax4JSF and ADF "
+"faces (now Trinidad) tag libraries for use with Seam. We do not recommend "
+"the use of the Tomahawk tag library."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:14
+#, no-c-format
+msgid "The ui example demonstrates the use of a number of these tags."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:19
+#, no-c-format
+msgid "&lt;s:validate&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:21
+#, no-c-format
+msgid ""
+"Validate a JSF input field against the bound property using Hibernate "
+"Validator."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:27
+#, no-c-format
+msgid "&lt;s:validateAll&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:29
+#, no-c-format
+msgid ""
+"Validate all child JSF input fields against the bound propertys using "
+"Hibernate Validator."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:35
+#, no-c-format
+msgid "&lt;s:formattedText&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:37
+#, no-c-format
+msgid "Output <emphasis>Seam Text</emphasis>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:43
+#, no-c-format
+msgid "&lt;s:convertDateTime&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:45
+#, no-c-format
+msgid "Perform date or time conversions in the Seam timezone."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:51
+#, no-c-format
+msgid "&lt;s:convertEnum&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:53
+#, no-c-format
+msgid ""
+"Assigns an enum converter to the current component. This is primarily useful "
+"for radio button and dropdown controls."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:59
+#, no-c-format
+msgid "&lt;s:enumItem&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:61
+#, no-c-format
+msgid "Creates a <literal>SelectItem</literal> from an enum value."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:66
+#, no-c-format
+msgid ""
+"<literal>enumValue</literal> &mdash; the string representation of the enum "
+"value."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:71
+#, no-c-format
+msgid ""
+"<literal>label</literal> &mdash; the label to be used when rendering the "
+"<literal>SelectItem</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:79
+#, no-c-format
+msgid "&lt;s:selectItems&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:81
+#, no-c-format
+msgid ""
+"Creates a <literal>List&lt;SelectItem&gt;</literal> from a List, Set, "
+"DataModel or Array."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:86
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; an EL expression specifying the data that "
+"backs the <literal>List&lt;SelectItem&gt;</literal>"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:91
+#, no-c-format
+msgid ""
+"<literal>var</literal> &mdash; defines the name of the local variable that "
+"holds the current object during iteration"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:96
+#, no-c-format
+msgid ""
+"<literal>label</literal> &mdash; the label to be used when rendering the "
+"<literal>SelectItem</literal>. Can reference the <literal>var</literal> "
+"variable"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:101
+#, no-c-format
+msgid ""
+"<literal>disabled</literal> &mdash; if true the <literal>SelectItem</"
+"literal> will be rendered disabled. Can reference the <literal>var</literal> "
+"variable"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:106
+#, no-c-format
+msgid ""
+"<literal>noSelectionLabel</literal> &mdash; specifies the (optional) label "
+"to place at the top of list (if <literal>required=\"true\"</literal> is also "
+"specified then selecting this value will cause a validation error)"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:111
+#, no-c-format
+msgid ""
+"<literal>hideNoSelectionLabel</literal> &mdash; if true, the "
+"<literal>noSelectionLabel</literal> will be hidden when a value is selected"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:119
+#, no-c-format
+msgid "&lt;s:decorate&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:121
+#, no-c-format
+msgid "\"Decorate\" a JSF input field when validation fails."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:127
+#, no-c-format
+msgid "&lt;s:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:129
+#, no-c-format
+msgid "\"Decorate\" a JSF input field with the validation error message."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:135
+#, no-c-format
+msgid "&lt;s:span&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:137
+#, no-c-format
+msgid "Render a HTML <literal>&lt;span&gt;</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:143
+#, no-c-format
+msgid "&lt;s:div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:145
+#, no-c-format
+msgid "Render a HTML <literal>&lt;div&gt;</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:151
+#, no-c-format
+msgid "&lt;s:fragment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:153
+#, no-c-format
+msgid ""
+"A non-rendering component useful for enabling/disabling rendering of it's "
+"children"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:159
+#, no-c-format
+msgid "&lt;s:cache&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:161
+#, no-c-format
+msgid ""
+"Cache the rendered page fragment using JBoss Cache. Note that <literal>&lt;s:"
+"cache&gt;</literal> actually uses the instance of JBoss Cache managed by the "
+"built-in <literal>pojoCache</literal> component."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:166
+#, no-c-format
+msgid ""
+"<literal>key</literal> &mdash; the key to cache rendered content, often a "
+"value expression. For example, if we were caching a page fragment that "
+"displays a document, we might use <literal>key=\"Document-#{document.id}\"</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:171
+#, no-c-format
+msgid ""
+"<literal>enabled</literal> &mdash; a value expression that determines if the "
+"cache should be used."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:176
+#, no-c-format
+msgid ""
+"<literal>region</literal> &mdash; a JBoss Cache node to use (different nodes "
+"can have different expiry policies)."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:184
+#, no-c-format
+msgid "&lt;s:link&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:186
+#, no-c-format
+msgid ""
+"A link that supports invocation of an action with control over conversation "
+"propagation. <emphasis>Does not submit the form.</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:191 Controls.xml:236
+#, no-c-format
+msgid "<literal>value</literal> &mdash; the label."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:196 Controls.xml:241
+#, no-c-format
+msgid ""
+"<literal>action</literal> &mdash; a method binding that specified the action "
+"listener."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:201 Controls.xml:246
+#, no-c-format
+msgid "<literal>view</literal> &mdash; the JSF view id to link to."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:206 Controls.xml:251
+#, no-c-format
+msgid "<literal>fragment</literal> &mdash; the fragment identifier to link to."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:211 Controls.xml:256
+#, no-c-format
+msgid "<literal>disabled</literal> &mdash; is the link disabled?"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:216 Controls.xml:261 Controls.xml:301
+#, no-c-format
+msgid ""
+"<literal>propagation</literal> &mdash; determines the conversation "
+"propagation style: <literal>begin</literal>, <literal>join</literal>, "
+"<literal>nest</literal>, <literal>none</literal> or <literal>end</literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:221 Controls.xml:266 Controls.xml:306
+#, no-c-format
+msgid ""
+"<literal>pageflow</literal> &mdash; a pageflow definition to begin. (This is "
+"only useful when <literal>propagation=\"begin\"</literal> or "
+"<literal>propagation=\"join\"</literal>.)"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:229
+#, no-c-format
+msgid "&lt;s:button&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:231
+#, no-c-format
+msgid ""
+"A button that supports invocation of an action with control over "
+"conversation propagation. <emphasis>Does not submit the form.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:274
+#, no-c-format
+msgid "&lt;s:selectDate&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:276
+#, no-c-format
+msgid ""
+"Displays a dynamic date picker component that selects a date for the "
+"specified input field. The body of the <literal>selectDate</literal> element "
+"should contain HTML elements, such as text or an image, that prompt the user "
+"to click to display the date picker. The date picker can be styled using "
+"CSS. An example CSS file can be found in the Seam booking demo as "
+"<literal>date.css</literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:281
+#, no-c-format
+msgid ""
+"<literal>for</literal> &mdash; The id of the input field that the date "
+"picker will insert the selected date into."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:286
+#, no-c-format
+msgid ""
+"<literal>dateFormat</literal> &mdash; The date format string. This should "
+"match the date format of the input field."
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:294
+#, no-c-format
+msgid "&lt;s:conversationPropagation&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:296
+#, no-c-format
+msgid ""
+"Customize the conversation propagation for a command link or button (or "
+"similar JSF control). <emphasis>Facelets only.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:314
+#, no-c-format
+msgid "&lt;s:conversationId&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:316
+#, no-c-format
+msgid ""
+"Add the conversation id to an output link (or similar JSF control). "
+"<emphasis>Facelets only.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:322
+#, no-c-format
+msgid "&lt;s:taskId&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:324
+#, no-c-format
+msgid ""
+"Add the task id to an output link (or similar JSF control), when the task is "
+"available via <literal>#{task}</literal>. <emphasis>Facelets only.</emphasis>"
+msgstr ""
+
+#. Tag: literal
+#: Controls.xml:330
+#, no-c-format
+msgid "&lt;s:fileUpload&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:332
+#, no-c-format
+msgid ""
+"Renders a file upload control. This control must be used within a form with "
+"an encoding type of <literal>multipart/form-data</literal>, i.e:"
+msgstr ""
+
+#. Tag: programlisting
+#: Controls.xml:335
+#, no-c-format
+msgid "&lt;h:form enctype=\"multipart/form-data\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:336
+#, no-c-format
+msgid ""
+"For multipart requests, the Seam Multipart servlet filter must also be "
+"configured in <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Controls.xml:339
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"      &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"      &lt;filter-class&gt;org.jboss.seam.web.SeamFilter&lt;/filter-"
+"class&gt;\n"
+"    &lt;/filter&gt;\n"
+"    \n"
+"    &lt;filter-mapping&gt;\n"
+"      &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"      &lt;url-pattern&gt;/*&lt;/url-pattern&gt;\n"
+"    &lt;/filter-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:340
+#, no-c-format
+msgid ""
+"The following configuration options for multipart requests may be configured "
+"in components.xml:"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:345
+#, no-c-format
+msgid ""
+"<literal>createTempFiles</literal> &mdash; if this option is set to true, "
+"uploaded files are streamed to a temporary file instead of in memory."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:350
+#, no-c-format
+msgid ""
+"<literal>maxRequestSize</literal> &mdash; the maximum size of a file upload "
+"request, in bytes."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:355
+#, no-c-format
+msgid "Here's an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Controls.xml:358
+#, no-c-format
+msgid ""
+"&lt;component class=\"org.jboss.seam.servlet.MultipartConfig\"&gt;\n"
+"        &lt;property name=\"createTempFiles\"&gt;true&lt;/property&gt;\n"
+"        &lt;property name=\"maxRequestSize\"&gt;1000000&lt;/property&gt;\n"
+"    &lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:359
+#, no-c-format
+msgid ""
+"And here's a list of the supported attributes for the <literal>fileUpload</"
+"literal> control:"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:364
+#, no-c-format
+msgid ""
+"<literal>data</literal> &mdash; this value binding receives the binary file "
+"data. The receiving field should be declared as a <literal>byte[]</literal> "
+"or <literal>InputStream</literal> (required)."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:369
+#, no-c-format
+msgid ""
+"<literal>contentType</literal> &mdash; this value binding receives the "
+"file's content type (optional)."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:374
+#, no-c-format
+msgid ""
+"<literal>fileName</literal> &mdash; this value binding receives the filename "
+"(optional)."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:379
+#, no-c-format
+msgid ""
+"<literal>accept</literal> &mdash; a comma-separated list of content types to "
+"accept, may not be supported by the browser. E.g. <literal>\"images/png,"
+"images/jpg\"</literal>, <literal>\"images/*\"</literal>."
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:384
+#, no-c-format
+msgid "<literal>style</literal> &mdash; The control's style"
+msgstr ""
+
+#. Tag: para
+#: Controls.xml:389
+#, no-c-format
+msgid "<literal>styleClass</literal> &mdash; The control's style class"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Conversations.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Conversations.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Conversations.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1248 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Conversations.xml:10
+#, no-c-format
+msgid "Conversations and workspace management"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:11
+#, no-c-format
+msgid "It's time to understand Seam's conversation model in more detail."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:14
+#, no-c-format
+msgid ""
+"Historically, the notion of a Seam \"conversation\" came about as a merger "
+"of three different ideas:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:19
+#, no-c-format
+msgid ""
+"The idea of a <emphasis>workspace</emphasis>, which I encountered in a "
+"project for the Victorian government in 2002. In this project I was forced "
+"to implement workspace management on top of Struts, an experience I pray "
+"never to repeat."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:24
+#, no-c-format
+msgid ""
+"The idea of an <emphasis>application transaction</emphasis> with optimistic "
+"semantics, and the realization that existing frameworks based around a "
+"stateless architecture could not provide effective management of extended "
+"persistence contexts. (The Hibernate team is truly fed up with copping the "
+"blame for <literal>LazyInitializationException</literal>s, which are not "
+"really Hibernate's fault, but rather the fault of the extremely limiting "
+"persistence context model supported by stateless architectures such as the "
+"Spring framework or the traditional <emphasis>stateless session facade</"
+"emphasis> (anti)pattern in J2EE.)"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:29
+#, no-c-format
+msgid "The idea of a workflow <emphasis>task</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:34
+#, no-c-format
+msgid ""
+"By unifying these ideas and providing deep support in the framework, we have "
+"a powerful construct that lets us build richer and more efficient "
+"applications with less code than before."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:38
+#, no-c-format
+msgid "Seam's conversation model"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:39
+#, no-c-format
+msgid ""
+"The examples we have seen so far make use of a very simple conversation "
+"model that follows these rules:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:44
+#, no-c-format
+msgid ""
+"There is always a conversation context active during the apply request "
+"values, process validations, update model values, invoke application and "
+"render response phases of the JSF request lifecycle."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:49
+#, no-c-format
+msgid ""
+"At the end of the restore view phase of the JSF request lifecycle, Seam "
+"attempts to restore any previous long-running conversation context. If none "
+"exists, Seam creates a new temporary conversation context."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:54
+#, no-c-format
+msgid ""
+"When an <literal>@Begin</literal> method is encountered, the temporary "
+"conversation context is promoted to a long running conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:59
+#, no-c-format
+msgid ""
+"When an <literal>@End</literal> method is encountered, any long-running "
+"conversation context is demoted to a temporary conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:64
+#, no-c-format
+msgid ""
+"At the end of the render response phase of the JSF request lifecycle, Seam "
+"stores the contents of a long running conversation context or destroys the "
+"contents of a temporary conversation context."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:69
+#, no-c-format
+msgid ""
+"Any faces request (a JSF postback) will propagate the conversation context. "
+"By default, non-faces requests (GET requests, for example) do not propagate "
+"the conversation context, but see below for more information on this."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:74
+#, no-c-format
+msgid ""
+"If the JSF request lifecycle is foreshortened by a redirect, Seam "
+"transparently stores and restores the current conversation context&mdash;"
+"unless the conversation was already ended via <literal>@End"
+"(beforeRedirect=true)</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:79
+#, no-c-format
+msgid ""
+"Seam transparently propagates the conversation context across JSF postbacks "
+"and redirects. If you don't do anything special, a <emphasis>non-faces "
+"request</emphasis> (a GET request for example) will not propagate the "
+"conversation context and will be processed in a new temporary conversation. "
+"This is usually - but not always - the desired behavior."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:82
+#, no-c-format
+msgid ""
+"If you want to propagate a Seam conversation across a non-faces request, you "
+"need to explicitly code the Seam <emphasis>conversation id</emphasis> as a "
+"request parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:85
+#, no-c-format
+msgid ""
+"&lt;a href=\"main.jsf?conversationId=#{conversation.id}\"&gt;Continue&lt;/"
+"a&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:86
+#, no-c-format
+msgid "Or, the more JSF-ish:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:89
+#, no-c-format
+msgid ""
+"&lt;h:outputLink value=\"main.jsf\"&gt;\n"
+"    &lt;f:param name=\"conversationId\" value=\"#{conversation.id}\"/&gt;\n"
+"    &lt;h:outputText value=\"Continue\"/&gt;\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:90 Conversations.xml:98
+#, no-c-format
+msgid "If you use the Seam tag library, this is equivalent:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:93
+#, no-c-format
+msgid ""
+"&lt;h:outputLink value=\"main.jsf\"&gt;\n"
+"    &lt;s:conversationId/&gt;\n"
+"    &lt;h:outputText value=\"Continue\"/&gt;\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:94
+#, no-c-format
+msgid ""
+"If you wish to disable propagation of the conversation context for a "
+"postback, a similar trick is used:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:97
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;f:param name=\"conversationPropagation\" value=\"none\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:101
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"none\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:102
+#, no-c-format
+msgid ""
+"Note that disabling conversation context propagation is absolutely not the "
+"same thing as ending the conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:105
+#, no-c-format
+msgid ""
+"The <literal>conversationPropagation</literal> request parameter, or the "
+"<literal>&lt;s:conversationPropagation&gt;</literal> tag may even be used to "
+"begin and end conversation, or begin a nested conversation."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:108
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Exit\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"end\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:109
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Child\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"nested\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:110
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Hotel\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"begin\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:111
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"main\" value=\"Select Hotel\"&gt;\n"
+"    &lt;s:conversationPropagation type=\"join\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:112
+#, no-c-format
+msgid ""
+"This conversation model makes it easy to build applications which behave "
+"correctly with respect to multi-window operation. For many applications, "
+"this is all that is needed. Some complex applications have either or both of "
+"the following additional requirements:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:117
+#, no-c-format
+msgid ""
+"A conversation spans many smaller units of user interaction, which execute "
+"serially or even concurrently. The smaller <emphasis>nested conversations</"
+"emphasis> have their own isolated set of conversation state, and also have "
+"access to the state of the outer conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:122
+#, no-c-format
+msgid ""
+"The user is able to switch between many conversations within the same "
+"browser window. This feature is called <emphasis>workspace management</"
+"emphasis>."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:130
+#, no-c-format
+msgid "Nested conversations"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:131
+#, no-c-format
+msgid ""
+"A nested conversation is created by invoking a method marked <literal>@Begin"
+"(nested=true)</literal> inside the scope of an existing conversation. A "
+"nested conversation has its own conversation context, and also has read-only "
+"access to the context of the outer conversation. (It can read the outer "
+"conversation's context variables, but not write to them.) When an "
+"<literal>@End</literal> is subsequently encountered, the nested conversation "
+"will be destroyed, and the outer conversation will resume, by \"popping\" "
+"the conversation stack. Conversations may be nested to any arbitrary depth."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:134
+#, no-c-format
+msgid ""
+"Certain user activity (workspace management, or the back button) can cause "
+"the outer conversation to be resumed before the inner conversation is ended. "
+"In this case it is possible to have multiple concurrent nested conversations "
+"belonging to the same outer conversation. If the outer conversation ends "
+"before a nested conversation ends, Seam destroys all nested conversation "
+"contexts along with the outer context."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:137
+#, no-c-format
+msgid ""
+"A conversation may be thought of as a <emphasis>continuable state</"
+"emphasis>. Nested conversations allow the application to capture a "
+"consistent continuable state at various points in a user interaction, thus "
+"insuring truly correct behavior in the face of backbuttoning and workspace "
+"management."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:140
+#, no-c-format
+msgid ""
+"TODO: an example to show how a nested conversation prevents bad stuff "
+"happening when you backbutton."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:143
+#, no-c-format
+msgid ""
+"Usually, if a component exists in a parent conversation of the current "
+"nested conversation, the nested conversation will use the same instance. "
+"Occasionally, it is useful to have a different instance in each nested "
+"conversation, so that the component instance that exists in the parent "
+"conversation is invisible to its child conversations. You can achieve this "
+"behavior by annotating the component <literal>@PerNestedConversation</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:149
+#, no-c-format
+msgid "Starting conversations with GET requests"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:150
+#, no-c-format
+msgid ""
+"JSF does not define any kind of action listener that is triggered when a "
+"page is accessed via a non-faces request (for example, a HTTP GET request). "
+"This can occur if the user bookmarks the page, or if we navigate to the page "
+"via an <literal>&lt;h:outputLink&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:153
+#, no-c-format
+msgid ""
+"Sometimes we want to begin a conversation immediately the page is accessed. "
+"Since there is no JSF action method, we can't solve the problem in the usual "
+"way, by annotating the action with <literal>@Begin</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:156
+#, no-c-format
+msgid ""
+"A further problem arises if the page needs some state to be fetched into a "
+"context variable. We've already seen two ways to solve this problem. If that "
+"state is held in a Seam component, we can fetch the state in a "
+"<literal>@Create</literal> method. If not, we can define a "
+"<literal>@Factory</literal> method for the context variable."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:159
+#, no-c-format
+msgid ""
+"If none of these options works for you, Seam lets you define a "
+"<emphasis>page action</emphasis> in the <literal>pages.xml</literal> file."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:162
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\" action=\"#{messageManager.list}\"/"
+"&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:163
+#, no-c-format
+msgid ""
+"This action method is called at the beginning of the render response phase, "
+"any time the page is about to be rendered. If a page action returns a non-"
+"null outcome, Seam will process any appropriate JSF and Seam navigation "
+"rules, possibly resulting in a completely different page being rendered."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:166
+#, no-c-format
+msgid ""
+"If <emphasis>all</emphasis> you want to do before rendering the page is "
+"begin a conversation, you could use a built-in action method that does just "
+"that:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:169
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\" action=\"#{conversation.begin}\"/"
+"&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:170
+#, no-c-format
+msgid ""
+"Note that you can also call this built-in action from a JSF control, and, "
+"similarly, you can use <literal>#{conversation.end}</literal> to end "
+"conversations."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:173
+#, no-c-format
+msgid ""
+"If you want more control, to join existing conversations or begin a nested "
+"conversion, to begin a pageflow or an atomic conversation, you should use "
+"the <literal>&lt;begin-conversation&gt;</literal> element."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:176
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/messageList.jsp\"&gt;\n"
+"       &lt;begin-conversation nested=\"true\" pageflow=\"AddItem\"/&gt;\n"
+"    &lt;page&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:177
+#, no-c-format
+msgid "There is also an <literal>&lt;end-conversation&gt;</literal> element."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:180
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/home.jsp\"&gt;\n"
+"       &lt;end-conversation/&gt;\n"
+"    &lt;page&gt;\n"
+"    ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:181
+#, no-c-format
+msgid "To solve the first problem, we now have five options:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:186
+#, no-c-format
+msgid ""
+"Annotate the <literal>@Create</literal> method with <literal>@Begin</literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:191
+#, no-c-format
+msgid ""
+"Annotate the <literal>@Factory</literal> method with <literal>@Begin</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:196
+#, no-c-format
+msgid "Annotate the Seam page action method with <literal>@Begin</literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:201
+#, no-c-format
+msgid ""
+"Use <literal>&lt;begin-conversation&gt;</literal> in <literal>pages.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:206
+#, no-c-format
+msgid ""
+"Use <literal>#{conversation.begin}</literal> as the Seam page action method"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:214
+#, no-c-format
+msgid ""
+"Using <literal>&lt;s:link&gt;</literal> and <literal>&lt;s:button&gt;</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:215
+#, no-c-format
+msgid ""
+"JSF command links always perform a form submission via JavaScript, which "
+"breaks the web browser's \"open in new window\" or \"open in new tab\" "
+"feature. In plain JSF, you need to use an <literal>&lt;h:outputLink&gt;</"
+"literal> if you need this functionality. But there are two major limitations "
+"to <literal>&lt;h:outputLink&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:220
+#, no-c-format
+msgid ""
+"JSF provides no way to attach an action listener to an <literal>&lt;h:"
+"outputLink&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:225
+#, no-c-format
+msgid ""
+"JSF does not propagate the selected row of a <literal>DataModel</literal> "
+"since there is no actual form submission."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:230
+#, no-c-format
+msgid ""
+"Seam provides the notion of a <emphasis>page action</emphasis> to help solve "
+"the first problem, but this does nothing to help us with the second problem. "
+"We <emphasis>could</emphasis> work around this by using the RESTful approach "
+"of passing a request parameter and requerying for the selected object on the "
+"server side. In some cases&mdash;such as the Seam blog example "
+"application&mdash;this is indeed the best approach. The RESTful style "
+"supports bookmarking, since it does not require server-side state. In other "
+"cases, where we don't care about bookmarks, the use of <literal>@DataModel</"
+"literal> and <literal>@DataModelSelection</literal> is just so convenient "
+"and transparent!"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:233
+#, no-c-format
+msgid ""
+"To fill in this missing functionality, and to make conversation propagation "
+"even simpler to manage, Seam provides the <literal>&lt;s:link&gt;</literal> "
+"JSF tag."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:236
+#, no-c-format
+msgid "The link may specify just the JSF view id:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:239
+#, no-c-format
+msgid ""
+"&lt;s:link view=&#8220;/login.xhtml&#8221; value=&#8220;Login&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:240
+#, no-c-format
+msgid ""
+"Or, it may specify an action method (in which case the action outcome "
+"determines the page that results):"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:243
+#, no-c-format
+msgid ""
+"&lt;s:link action=&#8220;#{login.logout}&#8221; value=&#8220;Logout&#8221;/"
+"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:244
+#, no-c-format
+msgid ""
+"If you specify <emphasis>both</emphasis> a JSF view id and an action method, "
+"the 'view' will be used <emphasis>unless</emphasis> the action method "
+"returns a non-null outcome:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:247
+#, no-c-format
+msgid ""
+"&lt;s:link view=\"/loggedOut.xhtml\"  action=&#8220;#{login.logout}&#8221; "
+"value=&#8220;Logout&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:248
+#, no-c-format
+msgid ""
+"The link automatically propagates the selected row of a <literal>DataModel</"
+"literal> using inside <literal>&lt;h:dataTable&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:251
+#, no-c-format
+msgid ""
+"&lt;s:link view=&#8220;/hotel.xhtml&#8221; action=&#8220;#{hotelSearch."
+"selectHotel}&#8221; value=&#8220;#{hotel.name}&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:252
+#, no-c-format
+msgid "You can leave the scope of an existing conversation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:255
+#, no-c-format
+msgid ""
+"&lt;s:link view=&#8220;/main.xhtml&#8221; propagation=&#8220;none&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:256
+#, no-c-format
+msgid "You can begin, end, or nest conversations:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:259
+#, no-c-format
+msgid ""
+"&lt;s:link action=&#8220;#{issueEditor.viewComment}&#8221; "
+"propagation=&#8220;nest&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:260
+#, no-c-format
+msgid ""
+"If the link begins a conversation, you can even specify a pageflow to be "
+"used:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:263
+#, no-c-format
+msgid ""
+"&lt;s:link action=&#8220;#{documentEditor.getDocument}&#8221; "
+"propagation=&#8220;begin&#8221; \n"
+"        pageflow=&#8220;EditDocument&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:264
+#, no-c-format
+msgid ""
+"The <literal>taskInstance</literal> attribute if for use in jBPM task lists:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:267
+#, no-c-format
+msgid ""
+"&lt;s:link action=&#8220;#{documentApproval.approveOrReject}&#8221; "
+"taskInstance=&#8220;#{task}&#8221;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:268
+#, no-c-format
+msgid "(See the DVD Store demo application for examples of this.)"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:271
+#, no-c-format
+msgid ""
+"Finally, if you need the \"link\" to be rendered as a button, use "
+"<literal>&lt;s:button&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:274
+#, no-c-format
+msgid ""
+"&lt;s:button action=&#8220;#{login.logout}&#8221; value=&#8220;Logout&#8221;/"
+"&gt;"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:278
+#, no-c-format
+msgid "Success messages"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:279
+#, no-c-format
+msgid ""
+"It is quite common to display a message to the user indicating success or "
+"failure of an action. It is convenient to use a JSF <literal>FacesMessage</"
+"literal> for this. Unfortunately, a successful action often requires a "
+"browser redirect, and JSF does not propagate faces messages across "
+"redirects. This makes it quite difficult to display success messages in "
+"plain JSF."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:282
+#, no-c-format
+msgid ""
+"The built in conversation-scoped Seam component named "
+"<literal>facesMessages</literal> solves this problem. (You must have the "
+"Seam redirect filter installed.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:285
+#, no-c-format
+msgid ""
+"@Name(\"editDocumentAction\")\n"
+"@Stateless\n"
+"public class EditDocumentBean implements EditDocument {\n"
+"    @In EntityManager em;\n"
+"    @In Document document;\n"
+"    @In FacesMessages facesMessages;\n"
+"    \n"
+"    public String update() {\n"
+"        em.merge(document);\n"
+"        facesMessages.add(\"Document updated\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:286
+#, no-c-format
+msgid ""
+"Any message added to <literal>facesMessages</literal> is used in the very "
+"next render response phase for the current conversation. This even works "
+"when there is no long-running conversation since Seam preserves even "
+"temporary conversation contexts across redirects."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:289
+#, no-c-format
+msgid "You can even include JSF EL expressions in a faces message summary:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:292
+#, no-c-format
+msgid "facesMessages.add(\"Document #{document.title} was updated\");"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:293
+#, no-c-format
+msgid "You may display the messages in the usual way, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:296
+#, no-c-format
+msgid "&lt;h:messages globalOnly=\"true\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:300
+#, no-c-format
+msgid "Using an \"explicit\" conversation id"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:301
+#, no-c-format
+msgid ""
+"Ordinarily, Seam generates a meaningless unique id for each conversation in "
+"each session. You can customize the id value when you begin the conversation."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:304
+#, no-c-format
+msgid ""
+"This feature can be used to customize the conversation id generation "
+"algorithm like so:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:307
+#, no-c-format
+msgid ""
+"@Begin(id=\"#{myConversationIdGenerator.nextId}\") \n"
+"public void editHotel() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:308
+#, no-c-format
+msgid "Or it can be used to assign a meaningful conversation id:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:311
+#, no-c-format
+msgid ""
+"@Begin(id=\"hotel#{hotel.id}\") \n"
+"public String editHotel() { ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:312
+#, no-c-format
+msgid ""
+"@Begin(id=\"hotel#{hotelsDataModel.rowData.id}\") \n"
+"public String selectHotel() { ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:313
+#, no-c-format
+msgid ""
+"@Begin(id=\"entry#{params['blogId']}\")\n"
+"public String viewBlogEntry() { ... }"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:314
+#, no-c-format
+msgid ""
+"@BeginTask(id=\"task#{taskInstance.id}\") \n"
+"public String approveDocument() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:315
+#, no-c-format
+msgid ""
+"Clearly, these example result in the same conversation id every time a "
+"particular hotel, blog or task is selected. So what happens if a "
+"conversation with the same conversation id already exists when the new "
+"conversation begins? Well, Seam detects the existing conversation and "
+"redirects to that conversation without running the <literal>@Begin</literal> "
+"method again. This feature helps control the number of workspaces that are "
+"created when using workspace management."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:321
+#, no-c-format
+msgid "Workspace management"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:322
+#, no-c-format
+msgid ""
+"Workspace management is the ability to \"switch\" conversations in a single "
+"window. Seam makes workspace management completely transparent at the level "
+"of the Java code. To enable workspace management, all you need to do is:"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:327
+#, no-c-format
+msgid ""
+"Provide <emphasis>description</emphasis> text for each view id (when using "
+"JSF or Seam navigation rules) or page node (when using jPDL pageflows). This "
+"description text is displayed to the user by the workspace switchers."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:332
+#, no-c-format
+msgid ""
+"Include one or more of the standard workspace switcher JSP or facelets "
+"fragments in your pages. The standard fragments support workspace management "
+"via a drop down menu, a list of conversations, or breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:335
+#, no-c-format
+msgid ""
+"Please refer to the Seam Issue Tracker demo to see all this functionality in "
+"action!"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:339
+#, no-c-format
+msgid "Workspace management and JSF navigation"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:340
+#, no-c-format
+msgid ""
+"When you use JSF or Seam navigation rules, Seam switches to a conversation "
+"by restoring the current <literal>view-id</literal> for that conversation. "
+"The descriptive text for the workspace is defined in a file called "
+"<literal>pages.xml</literal> that Seam expects to find in the <literal>WEB-"
+"INF</literal> directory, right next to <literal>faces-config.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:343
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/main.xhtml\"&gt;Search hotels: #{hotelBooking."
+"searchString}&lt;/page&gt;\n"
+"    &lt;page view-id=\"/hotel.xhtml\"&gt;View hotel: #{hotel.name}&lt;/"
+"page&gt;\n"
+"    &lt;page view-id=\"/book.xhtml\"&gt;Book hotel: #{hotel.name}&lt;/"
+"page&gt;\n"
+"    &lt;page view-id=\"/confirm.xhtml\"&gt;Confirm: #{booking.description}"
+"&lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:344
+#, no-c-format
+msgid ""
+"Note that if this file is missing, the Seam application will continue to "
+"work perfectly! The only missing functionality will be the ability to switch "
+"workspaces."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:350
+#, no-c-format
+msgid "Workspace management and jPDL pageflow"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:351
+#, no-c-format
+msgid ""
+"When you use a jPDL pageflow definition, Seam switches to a conversation by "
+"restoring the current jBPM process state. This is a more flexible model "
+"since it allows the same <literal>view-id</literal> to have different "
+"descriptions depending upon the current <literal>&lt;page&gt;</literal> "
+"node. The description text is defined by the <literal>&lt;page&gt;</literal> "
+"node:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:354
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"shopping\"&gt;\n"
+"\n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"browse\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;page name=\"browse\" view-id=\"/browse.xhtml\"&gt;\n"
+"      &lt;description&gt;DVD Search: #{search.searchPattern}&lt;/"
+"description&gt;\n"
+"      &lt;transition to=\"browse\"/&gt;\n"
+"      &lt;transition name=\"checkout\" to=\"checkout\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"checkout\" view-id=\"/checkout.xhtml\"&gt;\n"
+"      &lt;description&gt;Purchase: &#36;#{cart.total}&lt;/description&gt;\n"
+"      &lt;transition to=\"checkout\"/&gt;\n"
+"      &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"complete\" view-id=\"/complete.xhtml\"&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:358
+#, no-c-format
+msgid "The conversation switcher"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:359
+#, no-c-format
+msgid ""
+"Include the following fragment in your JSP or facelets page to get a drop-"
+"down menu that lets you switch to any current conversation, or to any other "
+"page of the application:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:362
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{switcher.conversationIdOrOutcome}\"&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Find Issues\" itemValue=\"findIssue\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Create Issue\" itemValue=\"editIssue\"/"
+"&gt;\n"
+"    &lt;f:selectItems value=\"#{switcher.selectItems}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{switcher.select}\" value=\"Switch\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:363
+#, no-c-format
+msgid ""
+"In this example, we have a menu that includes an item for each conversation, "
+"together with two additional items that let the user begin a new "
+"conversation."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:377
+#, no-c-format
+msgid "The conversation list"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:378
+#, no-c-format
+msgid ""
+"The conversation list is very similar to the conversation switcher, except "
+"that it is displayed as a table:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:381
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{conversationList}\" var=\"entry\"\n"
+"        rendered=\"#{not empty conversationList}\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Workspace&lt;/f:facet&gt;\n"
+"        &lt;h:commandLink action=\"#{entry.select}\" value=\"#{entry."
+"description}\"/&gt;\n"
+"        &lt;h:outputText value=\"[current]\" rendered=\"#{entry.current}\"/"
+"&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Activity&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{entry.startDatetime}\"&gt;\n"
+"            &lt;f:convertDateTime type=\"time\" pattern=\"hh:mm a\"/&gt;\n"
+"        &lt;/h:outputText&gt;\n"
+"        &lt;h:outputText value=\" - \"/&gt;\n"
+"        &lt;h:outputText value=\"#{entry.lastDatetime}\"&gt;\n"
+"            &lt;f:convertDateTime type=\"time\" pattern=\"hh:mm a\"/&gt;\n"
+"        &lt;/h:outputText&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"        &lt;h:commandButton action=\"#{entry.select}\" value=\"#{msg.Switch}"
+"\"/&gt;\n"
+"        &lt;h:commandButton action=\"#{entry.destroy}\" value=\"#{msg."
+"Destroy}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:382
+#, no-c-format
+msgid ""
+"We imagine that you will want to customize this for your own application."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:393
+#, no-c-format
+msgid ""
+"The conversation list is nice, but it takes up a lot of space on the page, "
+"so you probably don't want to put it on <emphasis>every</emphasis> page."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:396
+#, no-c-format
+msgid "Notice that the conversation list lets the user destroy workspaces."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:402
+#, no-c-format
+msgid "Breadcrumbs"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:403
+#, no-c-format
+msgid ""
+"Breadcrumbs are useful in applications which use a nested conversation "
+"model. The breadcrumbs are a list of links to conversations in the current "
+"conversation stack:"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:406
+#, no-c-format
+msgid ""
+"&lt;t:dataList value=\"#{conversationStack}\" var=\"entry\"&gt;\n"
+"    &lt;h:outputText value=\" | \"/&gt; \n"
+"    &lt;h:commandLink value=\"#{entry.description}\" action=\"#{entry.select}"
+"\"/&gt;\n"
+"&lt;/t:dataList&gt;"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:407
+#, no-c-format
+msgid ""
+"Notice that here we are using the MyFaces <literal>&lt;t:dataList&gt;</"
+"literal> component, since JSF amazingly does not provide any standard "
+"component for looping."
+msgstr ""
+
+#. Tag: title
+#: Conversations.xml:424
+#, no-c-format
+msgid "Conversational components and JSF component bindings"
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:425
+#, no-c-format
+msgid ""
+"Conversational components have one minor limitation: they cannot be used to "
+"hold bindings to JSF components. (We generally prefer not to use this "
+"feature of JSF unless absolutely necessary, since it creates a hard "
+"dependency from application logic to the view.) On a postback request, "
+"component bindings are updated during the Restore View phase, before the "
+"Seam conversation context has been restored."
+msgstr ""
+
+#. Tag: para
+#: Conversations.xml:428
+#, no-c-format
+msgid ""
+"To work around this use an event scoped component to store the component "
+"bindings and inject it into the conversation scoped component that requires "
+"it."
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:431
+#, no-c-format
+msgid ""
+"@Name(\"grid\")\n"
+"@Scope(ScopeType.EVENT)\n"
+"public class Grid\n"
+"{\n"
+"    private HtmlPanelGrid htmlPanelGrid;\n"
+"\n"
+"    // getters and setters\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Conversations.xml:432
+#, no-c-format
+msgid ""
+"@Name(\"gridEditor\")\n"
+"@Scope(ScopeType.CONVERSATION)\n"
+"public class GridEditor\n"
+"{\n"
+"    @In(required=false)\n"
+"    private Grid grid;\n"
+"    \n"
+"    ...\n"
+"}"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Drools.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Drools.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Drools.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,281 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Drools.xml:10
+#, no-c-format
+msgid "Seam and JBoss Rules"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:11
+#, no-c-format
+msgid ""
+"Seam makes it easy to call JBoss Rules (Drools) rulebases from Seam "
+"components or jBPM process definitions."
+msgstr ""
+
+#. Tag: title
+#: Drools.xml:15
+#, no-c-format
+msgid "Installing rules"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:16
+#, no-c-format
+msgid ""
+"The first step is to make an instance of <literal>org.drools.RuleBase</"
+"literal> available in a Seam context variable. In most rules-driven "
+"applications, rules need to be dynamically deployable, so you will need to "
+"implement some solution that allows you to deploy rules and make them "
+"available to Seam (a future release of Drools will provide a Rule Server "
+"that solves this problem). For testing purposes, Seam provides a built-in "
+"component that compiles a static set of rules from the classpath. You can "
+"install this component via <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:19
+#, no-c-format
+msgid ""
+"&lt;drools:rule-base name=\"policyPricingRules\"&gt;\n"
+"    &lt;drools:rule-files&gt;\n"
+"        &lt;value&gt;policyPricingRules&lt;/value&gt;\n"
+"    &lt;/drools:rule-files&gt;\n"
+"&lt;/drools:rule-base&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:20
+#, no-c-format
+msgid ""
+"This component compiles rules from a set of <literal>.drl</literal> files "
+"and caches an instance of <literal>org.drools.RuleBase</literal> in the Seam "
+"<literal>APPLICATION</literal> context. Note that it is quite likely that "
+"you will need to install multiple rule bases in a rule-driven application."
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:23
+#, no-c-format
+msgid ""
+"If you want to use a Drools DSL, you alse need to specify the DSL definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:26
+#, no-c-format
+msgid ""
+"&lt;drools:rule-base name=\"policyPricingRules\" dsl-file=\"policyPricing.dsl"
+"\"&gt;\n"
+"    &lt;drools:rule-files&gt;\n"
+"        &lt;value&gt;policyPricingRules&lt;/value&gt;\n"
+"    &lt;/drools:rule-files&gt;\n"
+"&lt;/drools:rule-base&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:27
+#, no-c-format
+msgid ""
+"Next, we need to make an instance of <literal>org.drools.WorkingMemory</"
+"literal> available to each conversation. (Each <literal>WorkingMemory</"
+"literal> accumulates facts relating to the current conversation.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:30
+#, no-c-format
+msgid ""
+"&lt;drools:managed-working-memory name=\"policyPricingWorkingMemory\" auto-"
+"create=\"true\" rule-base=\"#{policyPricingRules}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:31
+#, no-c-format
+msgid ""
+"Notice that we gave the <literal>policyPricingWorkingMemory</literal> a "
+"reference back to our rule base via the <literal>ruleBase</literal> "
+"configuration property."
+msgstr ""
+
+#. Tag: title
+#: Drools.xml:37
+#, no-c-format
+msgid "Using rules from a Seam component"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:38
+#, no-c-format
+msgid ""
+"We can now inject our <literal>WorkingMemory</literal> into any Seam "
+"component, assert facts, and fire rules:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:41
+#, no-c-format
+msgid ""
+"@In WorkingMemory policyPricingWorkingMemory;\n"
+"\n"
+"@In Policy policy;\n"
+"@In Customer customer;\n"
+"\n"
+"public void pricePolicy() throws FactException\n"
+"{\n"
+"    policyPricingWorkingMemory.assertObject(policy);\n"
+"    policyPricingWorkingMemory.assertObject(customer);\n"
+"    policyPricingWorkingMemory.fireAllRules();\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Drools.xml:45
+#, no-c-format
+msgid "Using rules from a jBPM process definition"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:46
+#, no-c-format
+msgid ""
+"You can even allow a rule base to act as a jBPM action handler, decision "
+"handler, or assignment handler&mdash;in either a pageflow or business "
+"process definition."
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:49
+#, no-c-format
+msgid ""
+"&lt;decision name=\"approval\"&gt;\n"
+"         \n"
+"    &lt;handler class=\"org.jboss.seam.drools.DroolsDecisionHandler\"&gt;\n"
+"        &lt;workingMemoryName&gt;orderApprovalRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"        &lt;assertObjects&gt;\n"
+"            &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"            &lt;element&gt;#{order}&lt;/element&gt;\n"
+"            &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"        &lt;/assertObjects&gt;\n"
+"    &lt;/handler&gt;\n"
+"    \n"
+"    &lt;transition name=\"approved\" to=\"ship\"&gt;\n"
+"        &lt;action class=\"org.jboss.seam.drools.DroolsActionHandler\"&gt;\n"
+"            &lt;workingMemoryName&gt;shippingRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"            &lt;assertObjects&gt;\n"
+"                &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"            &lt;/assertObjects&gt;\n"
+"        &lt;/action&gt;\n"
+"    &lt;/transition&gt;\n"
+"    \n"
+"    &lt;transition name=\"rejected\" to=\"cancelled\"/&gt;\n"
+"    \n"
+"&lt;/decision&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:50
+#, no-c-format
+msgid ""
+"The <literal>&lt;assertObjects&gt;</literal> element specifies EL "
+"expressions that return an object or collection of objects to be asserted as "
+"facts into the <literal>WorkingMemory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:53
+#, no-c-format
+msgid "There is also support for using Drools for jBPM task assignments:"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:56
+#, no-c-format
+msgid ""
+"&lt;task-node name=\"review\"&gt;\n"
+"    &lt;task name=\"review\" description=\"Review Order\"&gt;\n"
+"        &lt;assignment handler=\"org.jboss.seam.drools."
+"DroolsAssignmentHandler\"&gt;\n"
+"            &lt;workingMemoryName&gt;orderApprovalRulesWorkingMemory&lt;/"
+"workingMemoryName&gt;\n"
+"            &lt;assertObjects&gt;\n"
+"                &lt;element&gt;#{actor}&lt;/element&gt;\n"
+"                &lt;element&gt;#{customer}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order}&lt;/element&gt;\n"
+"                &lt;element&gt;#{order.lineItems}&lt;/element&gt;\n"
+"            &lt;/assertObjects&gt;\n"
+"        &lt;/assignment&gt;\n"
+"    &lt;/task&gt;\n"
+"    &lt;transition name=\"rejected\" to=\"cancelled\"/&gt;\n"
+"    &lt;transition name=\"approved\" to=\"approved\"/&gt;\n"
+"&lt;/task-node&gt;"
+msgstr ""
+
+#. Tag: para
+#: Drools.xml:57
+#, no-c-format
+msgid ""
+"Certain objects are available to the rules as Drools globals, namely the "
+"jBPM <literal>Assignable</literal>, as <literal>assignable</literal> and a "
+"Seam <literal>Decision</literal> object, as <literal>decision</literal>. "
+"Rules which handle decisions should call <literal>decision.setOutcome"
+"(\"result\")</literal> to determine the result of the decision. Rules which "
+"perform assignments should set the actor id using the <literal>Assignable</"
+"literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:60
+#, no-c-format
+msgid ""
+"package org.jboss.seam.examples.shop\n"
+"\n"
+"import org.jboss.seam.drools.Decision\n"
+"\n"
+"global Decision decision\n"
+"\n"
+"rule \"Approve Order For Loyal Customer\"\n"
+"  when\n"
+"    Customer( loyaltyStatus == \"GOLD\" )\n"
+"    Order( totalAmount &lt;= 10000 )\n"
+"  then\n"
+"    decision.setOutcome(\"approved\");\n"
+"end"
+msgstr ""
+
+#. Tag: programlisting
+#: Drools.xml:61
+#, no-c-format
+msgid ""
+"package org.jboss.seam.examples.shop\n"
+"\n"
+"import org.jbpm.taskmgmt.exe.Assignable\n"
+"\n"
+"global Assignable assignable\n"
+"\n"
+"rule \"Assign Review For Small Order\"\n"
+"  when\n"
+"    Order( totalAmount &lt;= 100 )\n"
+"  then\n"
+"    assignable.setPooledActors( new String[] {\"reviewers\"} );\n"
+"end"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Elenhancements.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Elenhancements.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Elenhancements.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,221 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Elenhancements.xml:10
+#, no-c-format
+msgid "Expression language enhancements"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:11
+#, no-c-format
+msgid ""
+"The standard Unified Expression Language (EL) assumes that any parameters to "
+"a method expression will be provided by Java code. This means that a method "
+"with parameters cannot be used as a JSF method binding. Seam provides an "
+"enhancement to the EL that allows parameters to be included in a method "
+"expression itself. This applies to <emphasis>any</emphasis> Seam method "
+"expression, including any JSF method binding, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:14
+#, no-c-format
+msgid ""
+"&lt;s:commandButton action=\"#{hotelBooking.bookHotel(hotel)}\" value=\"Book "
+"Hotel\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:16
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:17
+#, no-c-format
+msgid ""
+"To use this feature in Facelets, you will need to declare a special view "
+"handler, <literal>SeamFaceletViewHandler</literal> in <literal>faces-config."
+"xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:20
+#, no-c-format
+msgid ""
+"&lt;faces-config&gt;\n"
+"    &lt;application&gt;\n"
+"        &lt;view-handler&gt;org.jboss.seam.ui.facelet."
+"SeamFaceletViewHandler&lt;/view-handler&gt;\n"
+"    &lt;/application&gt;\n"
+"&lt;/faces-config&gt;"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:24
+#, no-c-format
+msgid "Usage"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:25
+#, no-c-format
+msgid "Parameters are surrounded by parentheses, and separated by commas:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:28
+#, no-c-format
+msgid ""
+"&lt;h:commandButton action=\"#{hotelBooking.bookHotel(hotel, user)}\" value="
+"\"Book Hotel\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:29
+#, no-c-format
+msgid ""
+"The parameters <literal>hotel</literal> and <literal>user</literal> will be "
+"evaluated as value expressions and passed to the <literal>bookHotel()</"
+"literal> method of the component. This gives you an alternative to the use "
+"of <literal>@In</literal>."
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:32
+#, no-c-format
+msgid "Any value expression may be used as a parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:35
+#, no-c-format
+msgid ""
+"&lt;h:commandButton action=\"#{hotelBooking.bookHotel(hotel.id, user."
+"username)}\" value=\"Book Hotel\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:36
+#, no-c-format
+msgid "You may even pass literal strings using single or double quotes:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:39
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=&#8221;#{printer.println( &#8216;Hello world!"
+"&#8217; )}&#8221; value=&#8221;Hello&#8221;/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:40
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=&#8217;#{printer.println( &#8220;Hello "
+"again&#8221; )}&#8217; value=&#8217;Hello&#8217;/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:41
+#, no-c-format
+msgid ""
+"You might even want to use this notation for all your action methods, even "
+"when you don&#8217;t have parameters to pass. This improves readability by "
+"making it clear that the expression is a method expression and not a value "
+"expression:"
+msgstr ""
+
+#. Tag: programlisting
+#: Elenhancements.xml:44
+#, no-c-format
+msgid "&lt;s:link value=\"Cancel\" action=\"#{hotelBooking.cancel()}\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:48
+#, no-c-format
+msgid "Limitations"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:49
+#, no-c-format
+msgid "Please be aware of the following limitations:"
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:53
+#, no-c-format
+msgid "Incompatibility with JSP 2.1"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:54
+#, no-c-format
+msgid ""
+"This extension is not currently compatible with JSP 2.1. So if you want to "
+"use this extension with JSF 1.2, you will need to use Facelets. The "
+"extension works correctly with JSP 2.0."
+msgstr ""
+
+#. Tag: title
+#: Elenhancements.xml:60
+#, no-c-format
+msgid "Calling a <literal>MethodExpression</literal> from Java code"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:61
+#, no-c-format
+msgid ""
+"Normally, when a <literal>MethodExpression</literal> or "
+"<literal>MethodBinding</literal> is created, the parameter types are passed "
+"in by JSF. In the case of a method binding, JSF assumes that there are no "
+"parameters to pass. With this extension, we can&#8217;t know the parameter "
+"types until after the expression has been evaluated. This has two minor "
+"consequences:"
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:66
+#, no-c-format
+msgid ""
+"When you invoke a <literal>MethodExpression</literal> in Java code, "
+"parameters you pass may be ignored. Parameters defined in the expression "
+"will take precedence."
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:71
+#, no-c-format
+msgid ""
+"Ordinarily, it is safe to call <literal>methodExpression.getMethodInfo()."
+"getParamTypes()</literal> at any time. For an expression with parameters, "
+"you must first invoke the <literal>MethodExpression</literal> before calling "
+"<literal>getParamTypes()</literal>."
+msgstr ""
+
+#. Tag: para
+#: Elenhancements.xml:76
+#, no-c-format
+msgid ""
+"Both of these cases are exceedingly rare and only apply when you want to "
+"invoke the <literal>MethodExpression</literal> by hand in Java code."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Events.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Events.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Events.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1430 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Events.xml:10
+#, no-c-format
+msgid "Events, interceptors and exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:11
+#, no-c-format
+msgid ""
+"Complementing the contextual component model, there are two further basic "
+"concepts that facilitate the extreme loose-coupling that is the distinctive "
+"feature of Seam applications. The first is a strong event model where events "
+"may be mapped to event listeners via JSF-like method binding expressions. "
+"The second is the pervasive use of annotations and interceptors to apply "
+"cross-cutting concerns to components which implement business logic."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:14
+#, no-c-format
+msgid "Seam events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:15
+#, no-c-format
+msgid ""
+"The Seam component model was developed for use with <emphasis>event-driven "
+"applications</emphasis>, specifically to enable the development of fine-"
+"grained, loosely-coupled components in a fine-grained eventing model. Events "
+"in Seam come in several types, most of which we have already seen:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:20
+#, no-c-format
+msgid "JSF events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:25
+#, no-c-format
+msgid "jBPM transition events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:30
+#, no-c-format
+msgid "Seam page actions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:35
+#, no-c-format
+msgid "Seam component-driven events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:40
+#, no-c-format
+msgid "Seam contextual events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:45
+#, no-c-format
+msgid ""
+"All of these various kinds of events are mapped to Seam components via JSF "
+"EL method binding expressions. For a JSF event, this is defined in the JSF "
+"template:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:48
+#, no-c-format
+msgid ""
+"&lt;h:commandButton value=\"Click me!\" action=\"#{helloWorld.sayHello}\"/"
+"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:49
+#, no-c-format
+msgid ""
+"For a jBPM transition event, it is specified in the jBPM process definition "
+"or pageflow definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:52
+#, no-c-format
+msgid ""
+"&lt;start-page name=\"hello\" view-id=\"/hello.jsp\"&gt;\n"
+"    &lt;transition to=\"hello\"&gt;\n"
+"        &lt;action expression=\"#{helloWorld.sayHello}\"/&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/start-page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:53
+#, no-c-format
+msgid ""
+"You can find out more information about JSF events and jBPM events "
+"elsewhere. Lets concentrate for now upon the two additional kinds of events "
+"defined by Seam."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:56
+#, no-c-format
+msgid "Page actions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:57
+#, no-c-format
+msgid ""
+"A Seam page action is an event that occurs just before we render a page. We "
+"declare page actions in <literal>WEB-INF/pages.xml</literal>. We can define "
+"a page action for either a particular JSF view id:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:60
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\" action=\"#{helloWorld.sayHello}\"/&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:61
+#, no-c-format
+msgid ""
+"Or we can use a wildcard to specify an action that applies to all view ids "
+"that match the pattern:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:64
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello/*\" action=\"#{helloWorld.sayHello}\"/&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:65
+#, no-c-format
+msgid ""
+"If multiple wildcarded page actions match the current view-id, Seam will "
+"call all the actions, in order of least-specific to most-specific."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:68
+#, no-c-format
+msgid ""
+"The page action method can return a JSF outcome. If the outcome is non-null, "
+"Seam will delegate to the defined JSFadn Seam navigation rules and a "
+"different view may end up being rendered."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:71
+#, no-c-format
+msgid ""
+"Furthermore, the view id mentioned in the <literal>&lt;page&gt;</literal> "
+"element need not correspond to a real JSP or Facelets page! So, we can "
+"reproduce the functionality of a traditional action-oriented framework like "
+"Struts or WebWork using page actions. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:74
+#, no-c-format
+msgid "TODO: translate struts action into page action"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:75
+#, no-c-format
+msgid ""
+"This is quite useful if you want to do complex things in response to non-"
+"faces requests (for example, HTTP GET requests)."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:78
+#, no-c-format
+msgid "Page parameters"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:79
+#, no-c-format
+msgid ""
+"A JSF faces request (a form submission) encapsulates both an \"action\" (a "
+"method binding) and \"parameters\" (input value bindings). A page action "
+"might also needs parameters!"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:82
+#, no-c-format
+msgid ""
+"Since GET requests are bookmarkable, page parameters are passed as human-"
+"readable request parameters. (Unlike JSF form inputs, which are anything "
+"but!)"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:85
+#, no-c-format
+msgid ""
+"Seam lets us provide a value binding that maps a named request parameter to "
+"an attribute of a model object."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:88
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\" action=\"#{helloWorld.sayHello}\"&gt;\n"
+"        &lt;param name=\"firstName\" value=\"#{person.firstName}\"/&gt;\n"
+"        &lt;param name=\"lastName\" value=\"#{person.lastName}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:89
+#, no-c-format
+msgid ""
+"The <literal>&lt;param&gt;</literal> declaration is bidirectional, just like "
+"a value binding for a JSF input:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:94
+#, no-c-format
+msgid ""
+"When a non-faces (GET) request for the view id occurs, Seam sets the value "
+"of the named request parameter onto the model object, after performing "
+"appropriate type conversions."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:99
+#, no-c-format
+msgid ""
+"Any <literal>&lt;s:link&gt;</literal> or <literal>&lt;s:button&gt;</literal> "
+"transparently includes the request parameter. The value of the parameter is "
+"determined by evaluating the value binding during the render phase (when the "
+"<literal>&lt;s:link&gt;</literal> is rendered)."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:104
+#, no-c-format
+msgid ""
+"Any navigation rule with a <literal>&lt;redirect/&gt;</literal> to the view "
+"id transparently includes the request parameter. The value of the parameter "
+"is determined by evaluating the value binding at the end of the invoke "
+"application phase."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:109
+#, no-c-format
+msgid ""
+"The value is transparently propagated with any JSF form submission for the "
+"page with the given view id. (This means that view parameters behave like "
+"<literal>PAGE</literal>-scoped context variables for faces requests."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:114
+#, no-c-format
+msgid ""
+"The essential idea behind all this is that <emphasis>however</emphasis> we "
+"get from any other page to <literal>/hello.jsp</literal> (or from <literal>/"
+"hello.jsp</literal> back to <literal>/hello.jsp</literal>), the value of the "
+"model attribute referred to in the value binding is \"remembered\", without "
+"the need for a conversation (or other server-side state)."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:117
+#, no-c-format
+msgid ""
+"This all sounds pretty complex, and you're probably wondering if such an "
+"exotic construct is really worth the effort. Actually, the idea is very "
+"natural once you \"get it\". It is definitely worth taking the time to "
+"understand this stuff. Page parameters are the most elegant way to propagate "
+"state across a non-faces request. They are especially cool for problems like "
+"search screens with bookmarkable results pages, where we would like to be "
+"able to write our application code to handle both POST and GET requests with "
+"the same code. Page parameters eliminate repetitive listing of request "
+"parameters in the view definition and make redirects much easier to code."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:120
+#, no-c-format
+msgid ""
+"Note that you don't need an actual page action method binding to use a page "
+"parameter. The following is perfectly valid:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:123
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/hello.jsp\"&gt;\n"
+"        &lt;param name=\"firstName\" value=\"#{person.firstName}\"/&gt;\n"
+"        &lt;param name=\"lastName\" value=\"#{person.lastName}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:124
+#, no-c-format
+msgid "You can even specify a JSF converter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:127
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/calculator.jsp\" action=\"#{calculator.calculate}"
+"\"&gt;\n"
+"        &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"        &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"        &lt;param name=\"op\" converterId=\"com.my.calculator."
+"OperatorConverter\" value=\"#{calculator.op}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:128
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page view-id=\"/calculator.jsp\" action=\"#{calculator.calculate}"
+"\"&gt;\n"
+"        &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"        &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"        &lt;param name=\"op\" converter=\"#{operatorConverter}\" value=\"#"
+"{calculator.op}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:129
+#, no-c-format
+msgid "Navigation"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:130
+#, no-c-format
+msgid ""
+"You can use standard JSF navigation rules defined in <literal>faces-config."
+"xml</literal> in a Seam application. However, JSF navigation rules have a "
+"number of annoying limitations:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:135
+#, no-c-format
+msgid ""
+"It is not possible to specify request parameters to be used when redirecting."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:140
+#, no-c-format
+msgid "It is not possible to begin or end conversations from a rule."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:145
+#, no-c-format
+msgid ""
+"Rules work by evaluating the return value of the action method; it is not "
+"possible to evaluate an arbitrary EL expression."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:150
+#, no-c-format
+msgid ""
+"A further problem is that \"orchestration\" logic gets scattered between "
+"<literal>pages.xml</literal> and <literal>faces-config.xml</literal>. It's "
+"better to unify this logic into <literal>pages.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:153
+#, no-c-format
+msgid "This JSF navigation rule:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:156
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"    &lt;from-view-id&gt;/editDocument.xhtml&lt;/from-view-id&gt;\n"
+"    \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-action&gt;#{documentEditor.update}&lt;/from-action&gt;\n"
+"        &lt;from-outcome&gt;success&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/viewDocument.xhtml&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"    \n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:157
+#, no-c-format
+msgid "Can be rewritten as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:160
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if-outcome=\"success\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:161
+#, no-c-format
+msgid ""
+"But it would be even nicer if we didn't have to pollute our "
+"<literal>DocumentEditor</literal> component with string-valued return values "
+"(the JSF outcomes). So Seam lets us write:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:164
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\" \n"
+"                   evaluate=\"#{documentEditor.errors.size}\"&gt;\n"
+"        &lt;rule if-outcome=\"0\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:165
+#, no-c-format
+msgid "Or even:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:168
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:169
+#, no-c-format
+msgid ""
+"The first form evaluates a value binding to determine the outcome value to "
+"be used by the subsequent rules. The second approach ignores the outcome and "
+"evaluates a value binding for each possible rule."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:172
+#, no-c-format
+msgid ""
+"Of course, when an update succeeds, we probably want to end the current "
+"conversation. We can do that like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:175
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:176
+#, no-c-format
+msgid ""
+"But ending the conversation loses any state associated with the "
+"conversation, including the document we are currently interested in! One "
+"solution would be to use an immediate render instead of a redirect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:179
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:180
+#, no-c-format
+msgid ""
+"But the correct solution is to pass the document id as a request parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:183
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule if=\"#{documentEditor.errors.empty}\"&gt;\n"
+"            &lt;end-conversation/&gt;\n"
+"            &lt;redirect view-id=\"/viewDocument.xhtml\"&gt;\n"
+"                &lt;param name=\"documentId\" value=\"#{documentEditor."
+"documentId}\"/&gt;\n"
+"            &lt;/redirect&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:184
+#, no-c-format
+msgid ""
+"Null outcomes are a special case in JSF. The null outcome is interpreted to "
+"mean \"redisplay the page\". The following navigation rule matches any non-"
+"null outcome, but <emphasis>not</emphasis> the null outcome:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:187
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;rule&gt;\n"
+"            &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:188
+#, no-c-format
+msgid ""
+"If you want to perform navigation when a null outcome occurs, use the "
+"following form instead:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:191
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/editDocument.xhtml\"&gt;\n"
+"    \n"
+"    &lt;navigation from-action=\"#{documentEditor.update}\"&gt;\n"
+"        &lt;render view-id=\"/viewDocument.xhtml\"/&gt;\n"
+"    &lt;/navigation&gt;\n"
+"    \n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:192
+#, no-c-format
+msgid ""
+"Fine-grained files for definition of navigation, page actions and parameters"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:193
+#, no-c-format
+msgid ""
+"If you have a lot of different page actions and page parameters, or even "
+"just a lot of navigation rules, you will almost certainly want to split the "
+"declarations up over multiple files. You can define actions and parameters "
+"for a page with the view id <literal>/calc/calculator.jsp</literal> in a "
+"resource named <literal>calc/calculator.page.xml</literal>. The root element "
+"in this case is the <literal>&lt;page&gt;</literal> element, and the view id "
+"is implied:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:196
+#, no-c-format
+msgid ""
+"&lt;page action=\"#{calculator.calculate}\"&gt;\n"
+"    &lt;param name=\"x\" value=\"#{calculator.lhs}\"/&gt;\n"
+"    &lt;param name=\"y\" value=\"#{calculator.rhs}\"/&gt;\n"
+"    &lt;param name=\"op\" converter=\"#{operatorConverter}\" value=\"#"
+"{calculator.op}\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:197
+#, no-c-format
+msgid "Component-driven events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:198
+#, no-c-format
+msgid ""
+"Seam components can interact by simply calling each others methods. Stateful "
+"components may even implement the observer/observable pattern. But to enable "
+"components to interact in a more loosely-coupled fashion than is possible "
+"when the components call each others methods directly, Seam provides "
+"<emphasis>component-driven events</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:201
+#, no-c-format
+msgid ""
+"We specify event listeners (observers) in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:204
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;event type=\"hello\"&gt;\n"
+"        &lt;action expression=\"#{helloListener.sayHelloBack}\"/&gt;\n"
+"        &lt;action expression=\"#{logger.logHello}\"/&gt;\n"
+"    &lt;/event&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:205
+#, no-c-format
+msgid "Where the <emphasis>event type</emphasis> is just an arbitrary string."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:208
+#, no-c-format
+msgid ""
+"When an event occurs, the actions registered for that event will be called "
+"in the order they appear in <literal>components.xml</literal>. How does a "
+"component raise an event? Seam provides a built-in component for this."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:211
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World!\");\n"
+"        Events.instance().raiseEvent(\"hello\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:212
+#, no-c-format
+msgid "Or you can use an annotation."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:215
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    @RaiseEvent(\"hello\")\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World!\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:216
+#, no-c-format
+msgid ""
+"Notice that this event producer has no dependency upon event consumers. The "
+"event listener may now be implemented with absolutely no dependency upon the "
+"producer:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:219
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    public void sayHelloBack() {\n"
+"        FacesMessages.instance().add(\"Hello to you too!\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:220
+#, no-c-format
+msgid ""
+"The method binding defined in <literal>components.xml</literal> above takes "
+"care of mapping the event to the consumer. If you don't like futzing about "
+"in the <literal>components.xml</literal> file, you can use an annotation "
+"instead:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:223
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    @Observer(\"hello\")\n"
+"    public void sayHelloBack() {\n"
+"        FacesMessages.instance().add(\"Hello to you too!\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:224
+#, no-c-format
+msgid ""
+"You might wonder why I've not mentioned anything about event objects in this "
+"discussion. In Seam, there is no need for an event object to propagate state "
+"between event producer and listener. State is held in the Seam contexts, and "
+"is shared between components. However, if you really want to pass an event "
+"object, you can:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:227
+#, no-c-format
+msgid ""
+"@Name(\"helloWorld\")\n"
+"public class HelloWorld {\n"
+"    private String name;\n"
+"    public void sayHello() {\n"
+"        FacesMessages.instance().add(\"Hello World, my name is #0.\", "
+"name);\n"
+"        Events.instance().raiseEvent(\"hello\", name);\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:228
+#, no-c-format
+msgid ""
+"@Name(\"helloListener\")\n"
+"public class HelloListener {\n"
+"    @Observer(\"hello\")\n"
+"    public void sayHelloBack(String name) {\n"
+"        FacesMessages.instance().add(\"Hello #0!\", name);\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:229
+#, no-c-format
+msgid "Contextual events"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:230
+#, no-c-format
+msgid ""
+"Seam defines a number of built-in events that the application can use to "
+"perform special kinds of framework integration. The events are:"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:235
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preSetVariable.&lt;name&gt;</literal> &mdash; called "
+"when the context variable &lt;name&gt; is set"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:240
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postSetVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is set"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:245
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preRemoveVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is unset"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:250
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postRemoveVariable.&lt;name&gt;</literal> &mdash; "
+"called when the context variable &lt;name&gt; is unset"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:255
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preDestroyContext.&lt;SCOPE&gt;</literal> &mdash; "
+"called before the &lt;SCOPE&gt; context is destroyed"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:260
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postDestroyContext.&lt;SCOPE&gt;</literal> &mdash; "
+"called after the &lt;SCOPE&gt; context is destroyed"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:265
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beginConversation </literal>&mdash; called whenever "
+"a long-running conversation begins"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:270
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endConversation </literal>&mdash; called whenever a "
+"long-running conversation ends"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:275
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beginPageflow.&lt;name&gt; </literal>&mdash; called "
+"when the pageflow &lt;name&gt; begins"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:280
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endPageflow.&lt;name&gt; </literal>&mdash; called "
+"when the pageflow &lt;name&gt; ends"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:285
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.createProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; is created"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:290
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; ends"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:295
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.initProcess.&lt;name&gt; </literal>&mdash; called "
+"when the process &lt;name&gt; is associated with the conversation"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:300
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.initTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is associated with the conversation"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:305
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.startTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is started"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:310
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.endTask.&lt;name&gt; </literal>&mdash; called when "
+"the task &lt;name&gt; is ended"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:315
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postCreate.&lt;name&gt; </literal>&mdash; called "
+"when the component &lt;name&gt; is created"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:320
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preDestroy.&lt;name&gt; </literal>&mdash; called "
+"when the component &lt;name&gt; is destroyed"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:325
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.beforePhase </literal>&mdash; called before the "
+"start of a JSF phase"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:330
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.afterPhase </literal>&mdash; called after the end of "
+"a JSF phase"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:335
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.postAuthenticate.&lt;name&gt; </literal>&mdash; "
+"called after a user is authenticated"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:340
+#, no-c-format
+msgid ""
+"<literal>org.jboss.seam.preAuthenticate.&lt;name&gt; </literal>&mdash; "
+"called before attempting to authenticate a user"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:345
+#, no-c-format
+msgid ""
+"Seam components may observe any of these events in just the same way they "
+"observe any other component-driven events."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:348
+#, no-c-format
+msgid "Seam interceptors"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:349
+#, no-c-format
+msgid ""
+"EJB 3.0 introduced a standard interceptor model for session bean components. "
+"To add an interceptor to a bean, you need to write a class with a method "
+"annotated <literal>@AroundInvoke</literal> and annotate the bean with an "
+"<literal>@Interceptors</literal> annotation that specifies the name of the "
+"interceptor class. For example, the following interceptor checks that the "
+"user is logged in before allowing invoking an action listener method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:352
+#, no-c-format
+msgid ""
+"public class LoggedInInterceptor {\n"
+"\n"
+"   @AroundInvoke\n"
+"   public Object checkLoggedIn(InvocationContext invocation) throws "
+"Exception {\n"
+"   \n"
+"      boolean isLoggedIn = Contexts.getSessionContext().get(\"loggedIn\")!"
+"=null;\n"
+"      if (isLoggedIn) {\n"
+"         //the user is already logged in\n"
+"         return invocation.proceed();\n"
+"      }\n"
+"      else {\n"
+"         //the user is not logged in, fwd to login page\n"
+"         return \"login\";\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:353
+#, no-c-format
+msgid ""
+"To apply this interceptor to a session bean which acts as an action "
+"listener, we must annotate the session bean <literal>@Interceptors"
+"(LoggedInInterceptor.class)</literal>. This is a somewhat ugly annotation. "
+"Seam builds upon the interceptor framework in EJB3 by allowing you to use "
+"<literal>@Interceptors</literal> as a meta-annotation. In our example, we "
+"would create an <literal>@LoggedIn</literal> annotation, as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:356
+#, no-c-format
+msgid ""
+"@Target(TYPE)\n"
+"@Retention(RUNTIME)\n"
+"@Interceptors(LoggedInInterceptor.class)\n"
+"public @interface LoggedIn {}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:357
+#, no-c-format
+msgid ""
+"We can now simply annotate our action listener bean with <literal>@LoggedIn</"
+"literal> to apply the interceptor."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:360
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"changePasswordAction\")\n"
+"@LoggedIn\n"
+"@Interceptors(SeamInterceptor.class)\n"
+"public class ChangePasswordAction implements ChangePassword { \n"
+"    \n"
+"    ...\n"
+"    \n"
+"    public String changePassword() { ... }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:361
+#, no-c-format
+msgid ""
+"If interceptor ordering is important (it usually is), you can add "
+"<literal>@Interceptor</literal> annotations to your interceptor classes to "
+"specify a partial order of interceptors."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:364
+#, no-c-format
+msgid ""
+"@Interceptor(around={BijectionInterceptor.class,\n"
+"                     ValidationInterceptor.class,\n"
+"                     ConversationInterceptor.class},\n"
+"             within=RemoveInterceptor.class)\n"
+"public class LoggedInInterceptor\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:365
+#, no-c-format
+msgid ""
+"You can even have a \"client-side\" interceptor, that runs around any of the "
+"built-in functionality of EJB3:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:368
+#, no-c-format
+msgid ""
+"@Interceptor(type=CLIENT)\n"
+"public class LoggedInInterceptor\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:369
+#, no-c-format
+msgid ""
+"EJB interceptors are stateful, with a lifecycle that is the same as the "
+"component they intercept. For interceptors which do not need to maintain "
+"state, Seam lets you get a performance optimization by specifying "
+"<literal>@Interceptor(stateless=true)</literal>."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:372
+#, no-c-format
+msgid ""
+"Much of the functionality of Seam is implemented as a set of built-in Seam "
+"interceptors, including the interceptors named in the previous example. You "
+"don't have to explicitly specify these interceptors by annotating your "
+"components; they exist for all interceptable Seam components."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:375
+#, no-c-format
+msgid ""
+"You can even use Seam interceptors with JavaBean components, not just EJB3 "
+"beans!"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:378
+#, no-c-format
+msgid ""
+"EJB defines interception not only for business methods (using "
+"<literal>@AroundInvoke</literal>), but also for the lifecycle methods "
+"<literal>@PostConstruct</literal>, <literal>@PreDestroy</literal>, "
+"<literal>@PrePassivate</literal> and <literal>@PostActive</literal>. Seam "
+"supports all these lifecycle methods on both component and interceptor not "
+"only for EJB3 beans, but also for JavaBean components (except "
+"<literal>@PreDestroy</literal> which is not meaningful for JavaBean "
+"components)."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:381
+#, no-c-format
+msgid "Managing exceptions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:382
+#, no-c-format
+msgid ""
+"JSF is surprisingly limited when it comes to exception handling. As a "
+"partial workaround for this problem, Seam lets you define how a particular "
+"class of exception is to be treated by annotating the exception class, or "
+"declaring the exception class in an XML file. This facility is meant to be "
+"combined with the EJB 3.0-standard <literal>@ApplicationException</literal> "
+"annotation which specifies whether the exception should cause a transaction "
+"rollback."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:385
+#, no-c-format
+msgid "Exceptions and transactions"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:386
+#, no-c-format
+msgid ""
+"EJB specifies well-defined rules that let us control whether an exception "
+"immediately marks the current transaction for rollback when it is thrown by "
+"a business method of the bean: <emphasis>system exceptions</emphasis> always "
+"cause a transaction rollback, <emphasis>application exceptions</emphasis> do "
+"not cause a rollback by default, but they do if "
+"<literal>@ApplicationException(rollback=true)</literal> is specified. (An "
+"application exception is any checked exception, or any unchecked exception "
+"annotated <literal>@ApplicationException</literal>. A system exception is "
+"any unchecked exception without an <literal>@ApplicationException</literal> "
+"annotation.)"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:389
+#, no-c-format
+msgid ""
+"Note that there is a difference between marking a transaction for rollback, "
+"and actually rolling it back. The exception rules say that the transaction "
+"should be marked rollback only, but it may still be active after the "
+"exception is thrown."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:392
+#, no-c-format
+msgid ""
+"Seam applies the EJB 3.0 exception rollback rules also to Seam JavaBean "
+"components."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:395
+#, no-c-format
+msgid ""
+"But these rules only apply in the Seam component layer. What about an "
+"exception that is uncaught and propagates out of the Seam component layer, "
+"and out of the JSF layer? Well, it is always wrong to leave a dangling "
+"transaction open, so Seam rolls back any active transaction when an "
+"exception occurs and is uncaught in the Seam component layer."
+msgstr ""
+
+#. Tag: title
+#: Events.xml:398
+#, no-c-format
+msgid "Enabling Seam exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:399
+#, no-c-format
+msgid ""
+"To enable Seam's exception handling, we need to make sure we have the master "
+"servlet filter declared in <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:402
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.servlet.SeamFilter&lt;/filter-"
+"class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:403
+#, no-c-format
+msgid "Using annotations for exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:404
+#, no-c-format
+msgid ""
+"The following exception results in a HTTP 404 error whenever it propagates "
+"out of the Seam component layer. It does not roll back the current "
+"transaction immediately when thrown, but the transaction will be rolled back "
+"if it the exception is not caught by another Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:407
+#, no-c-format
+msgid ""
+"@HttpError(errorCode=404)\n"
+"public class ApplicationException extends Exception { ... }"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:408
+#, no-c-format
+msgid ""
+"This exception results in a browser redirect whenever it propagates out of "
+"the Seam component layer. It also ends the current conversation. It causes "
+"an immediate rollback of the current transaction."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:411
+#, no-c-format
+msgid ""
+"@Redirect(viewId=\"/failure.xhtml\", end=true)\n"
+"@ApplicationException(rollback=true)\n"
+"public class UnrecoverableApplicationException extends RuntimeException "
+"{ ... }"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:412
+#, no-c-format
+msgid ""
+"Note that <literal>@Redirect</literal> does not work for exceptions which "
+"occur during the render phase of the JSF lifecycle."
+msgstr ""
+
+#. Tag: para
+#: Events.xml:415
+#, no-c-format
+msgid ""
+"This exception results in a redirect, along with a message to the user, when "
+"it propagates out of the Seam component layer. It also immediately rolls "
+"back the current transaction."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:418
+#, no-c-format
+msgid ""
+"@Redirect(viewId=\"/error.xhtml\", message=\"Unexpected error\")\n"
+"public class SystemException extends RuntimeException { ... }"
+msgstr ""
+
+#. Tag: title
+#: Events.xml:419
+#, no-c-format
+msgid "Using XML for exception handling"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:420
+#, no-c-format
+msgid ""
+"Since we can't add annotations to all the exception classes we are "
+"interested in, Seam also lets us specify this functionality in "
+"<literal>pages.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Events.xml:423
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   \n"
+"   &lt;exception class=\"javax.persistence.EntityNotFoundException\"&gt;\n"
+"      &lt;http-error error-code=\"404\"/&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"   &lt;exception class=\"javax.persistence.PersistenceException\"&gt;\n"
+"      &lt;end-conversation/&gt;\n"
+"      &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"          &lt;message&gt;Database access failed&lt;/message&gt;\n"
+"      &lt;/redirect&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"   &lt;exception&gt;\n"
+"      &lt;end-conversation/&gt;\n"
+"      &lt;redirect view-id=\"/error.xhtml\"&gt;\n"
+"          &lt;message&gt;Unexpected failure&lt;/message&gt;\n"
+"      &lt;/redirect&gt;\n"
+"   &lt;/exception&gt;\n"
+"   \n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Events.xml:424
+#, no-c-format
+msgid ""
+"The last <literal>&lt;exception&gt;</literal> declaration does not specify a "
+"class, and is a catch-all for any exception for which handling is not "
+"otherwise specified via annotations or in <literal>pages.xml</literal>."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Framework.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Framework.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Framework.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,828 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Framework.xml:10
+#, no-c-format
+msgid "The Seam Application Framework"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:11
+#, no-c-format
+msgid ""
+"Seam makes it really easy to create applications by writing plain Java "
+"classes with annotations, which don't need to extend any special interfaces "
+"or superclasses. But we can simplify some common programming tasks even "
+"further, by providing a set of pre-built components which can be re-used "
+"either by configuration in <literal>components.xml</literal> (for very "
+"simple cases) or extension."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:14
+#, no-c-format
+msgid ""
+"The <emphasis>Seam Application Framework</emphasis> can reduce the amount of "
+"code you need to write when doing basic database access in a web "
+"application, using either Hibernate or JPA."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:17
+#, no-c-format
+msgid ""
+"We should emphasize that the framework is extremely simple, just a handful "
+"of simple classes that are easy to understand and extend. The \"magic\" is "
+"in Seam itself&mdash;the same magic you use when creating any Seam "
+"application even without using this framework."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:21
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:22
+#, no-c-format
+msgid ""
+"The components provided by the Seam application framework may be used in one "
+"of two different approaches. The first way is to install and configure an "
+"instance of the component in <literal>components.xml</literal>, just like we "
+"have done with other kinds of built-in Seam components. For example, the "
+"following fragment from <literal>components.xml</literal> installs a "
+"component which can perform basic CRUD operations for a <literal>Contact</"
+"literal> entity:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:25
+#, no-c-format
+msgid ""
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" \n"
+"                       entity-manager=\"#{personDatabase}\"&gt;\n"
+"    &lt;framework:id&gt;#{param.personId}&lt;/framework:id&gt;\n"
+"&lt;/framework:entity-home&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:26
+#, no-c-format
+msgid ""
+"If that looks a bit too much like \"programming in XML\" for your taste, you "
+"can use extension instead:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:29
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; implements "
+"LocalPersonHome {\n"
+"    @RequestParameter String personId;\n"
+"    @In EntityManager personDatabase;\n"
+"    \n"
+"    public Object getId() { return personId; }\n"
+"    public EntityManager getEntityManager() { return personDatabase; }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:30
+#, no-c-format
+msgid ""
+"The second approach has one huge advantage: you can easily add extra "
+"functionality, and override the built-in functionality (the framework "
+"classes were carefully designed for extension and customization)."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:33
+#, no-c-format
+msgid ""
+"A second advantage is that your classes may be EJB stateful sessin beans, if "
+"you like. (They do not have to be, they can be plain JavaBean components if "
+"you prefer.)"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:36
+#, no-c-format
+msgid ""
+"At this time, the Seam Application Framework provides just four built-in "
+"components: <literal>EntityHome</literal> and <literal>HibernateEntityHome</"
+"literal> for CRUD, along with <literal>EntityQuery</literal> and "
+"<literal>HibernateEntityQuery</literal> for queries."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:39
+#, no-c-format
+msgid ""
+"The Home and Query components are written so that they can function with a "
+"scope of session, event or conversation. Which scope you use depends upon "
+"the state model you wish to use in your application."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:42
+#, no-c-format
+msgid ""
+"The Seam Application Framework only works with Seam-managed persistence "
+"contexts. By default, the components will look for a persistence context "
+"named <literal>entityManager</literal>."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:48
+#, no-c-format
+msgid "Home objects"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:49
+#, no-c-format
+msgid ""
+"A Home object provides persistence operations for a particular entity class. "
+"Suppose we have our trusty <literal>Person</literal> class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:52
+#, no-c-format
+msgid ""
+"@Entity\n"
+"public class Person {\n"
+"    @Id private Long id;\n"
+"    private String firstName;\n"
+"    private String lastName;\n"
+"    private Country nationality;\n"
+"    \n"
+"    //getters and setters...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:53
+#, no-c-format
+msgid ""
+"We can define a <literal>personHome</literal> component either via "
+"configuration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:56
+#, no-c-format
+msgid ""
+"&lt;framework:entity-home name=\"personHome\" entity-class=\"eg.Person\" /"
+"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:57
+#, no-c-format
+msgid "Or via extension:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:60
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:61
+#, no-c-format
+msgid ""
+"A Home object provides the following operations: <literal>persist()</"
+"literal>, <literal>remove()</literal>, <literal>update()</literal> and "
+"<literal>getInstance()</literal>. Before you can call the <literal>remove()</"
+"literal>, or <literal>update()</literal> operations, you must first set the "
+"identifier of the object you are interested in, using the <literal>setId()</"
+"literal> method."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:64
+#, no-c-format
+msgid "We can use a Home directly from a JSF page, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:67
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Create Person&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{personHome.instance."
+"firstName}\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{personHome.instance."
+"lastName}\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:68
+#, no-c-format
+msgid ""
+"Usually, it is much nicer to be able to refer to the <literal>Person</"
+"literal> merely as <literal>person</literal>, so let's make that possible by "
+"adding a line to <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:71
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:72
+#, no-c-format
+msgid ""
+"(If we are using configuration.) Or by adding a <literal>@Factory</literal> "
+"method to <literal>PersonHome</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:75
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:76
+#, no-c-format
+msgid ""
+"(If we are using extension.) This change simplifies our JSF page to the "
+"following:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:79
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Create Person&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{person.firstName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{person.lastName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:80
+#, no-c-format
+msgid ""
+"Well, that lets us create new <literal>Person</literal> entries. Yes, that "
+"is all the code that is required! Now, if we want to be able to display, "
+"update and delete pre-existing <literal>Person</literal> entries in the "
+"database, we need to be able to pass the entry identifier to the "
+"<literal>PersonHome</literal>. Page parameters are a great way to do that:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:83
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page viewid=\"/editPerson.jsp\"&gt;\n"
+"        &lt;param name=\"personId\" value=\"#{personHome.id}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:84
+#, no-c-format
+msgid "Now we can add the extra operations to our JSF page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:87
+#, no-c-format
+msgid ""
+"&lt;h1&gt;\n"
+"    &lt;h:outputText rendered=\"#{!personHome.managed}\" value=\"Create "
+"Person\"/&gt;\n"
+"    &lt;h:outputText rendered=\"#{personHome.managed}\" value=\"Edit Person"
+"\"/&gt;\n"
+"&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{person.firstName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{person.lastName}\"/&gt;"
+"&lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton value=\"Create Person\" action=\"#{personHome."
+"persist}\" \n"
+"            rendered=\"#{!personHome.managed}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Update Person\" action=\"#{personHome."
+"update}\" \n"
+"            rendered=\"#{personHome.managed}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Delete Person\" action=\"#{personHome."
+"remove}\" \n"
+"            rendered=\"#{personHome.managed}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:88
+#, no-c-format
+msgid ""
+"When we link to the page with no request parameters, the page will be "
+"displayed as a \"Create Person\" page. When we provide a value for the "
+"<literal>personId</literal> request parameter, it will be an \"Edit Person\" "
+"page."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:91
+#, no-c-format
+msgid ""
+"Suppose we need to create <literal>Person</literal> entries with their "
+"nationality initialized. We can do that easily, via configuration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:94
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\" \n"
+"                       entity-class=\"eg.Person\" \n"
+"                       new-instance=\"#{newPerson}\"/&gt;\n"
+"\n"
+"&lt;component name=\"newPerson\" \n"
+"           class=\"eg.Person\"&gt;\n"
+"    &lt;property name=\"nationality\"&gt;#{country}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:95
+#, no-c-format
+msgid "Or by extension:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:98
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:99
+#, no-c-format
+msgid ""
+"Of course, the <literal>Country</literal> could be an object managed by "
+"another Home object, for example, <literal>CountryHome</literal>."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:102
+#, no-c-format
+msgid ""
+"To add more sophisticated operations (association management, etc), we can "
+"just add methods to <literal>PersonHome</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:105
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"    public void migrate()\n"
+"    {\n"
+"        getInstance().setCountry(country);\n"
+"        update();\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:106
+#, no-c-format
+msgid ""
+"The Home object automatically displays faces messages when an operation is "
+"successful. To customize these messages we can, again, use configuration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:109
+#, no-c-format
+msgid ""
+"&lt;factory name=\"person\" \n"
+"         value=\"#{personHome.instance}\"/&gt;\n"
+"\n"
+"&lt;framework:entity-home name=\"personHome\"\n"
+"                       entity-class=\"eg.Person\"\n"
+"                       new-instance=\"#{newPerson}\"&gt;\n"
+"    &lt;framework:created-message&gt;New person #{person.firstName} #{person."
+"lastName} \n"
+"        created&lt;/framework:created-message&gt;\n"
+"    &lt;framework:deleted-message&gt;Person #{person.firstName} #{person."
+"lastName}\n"
+"        deleted&lt;/framework:deleted-message&gt;\n"
+"    &lt;framework:updated-message&gt;Person #{person.firstName} #{person."
+"lastName} \n"
+"        updated&lt;/framework:updated-message&gt;\n"
+"&lt;/framework:entity-home&gt;\n"
+"\n"
+"&lt;component name=\"newPerson\" \n"
+"           class=\"eg.Person\"&gt;\n"
+"    &lt;property name=\"nationality\"&gt;#{country}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:110
+#, no-c-format
+msgid "Or extension:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:113
+#, no-c-format
+msgid ""
+"@Name(\"personHome\")\n"
+"public class PersonHome extends EntityHome&lt;Person&gt; {\n"
+"    \n"
+"    @In Country country;\n"
+"    \n"
+"    @Factory(\"person\")\n"
+"    public Person initPerson() { return getInstance(); }\n"
+"    \n"
+"    protected Person createInstance() {\n"
+"        return new Person(country);\n"
+"    }\n"
+"    \n"
+"    protected String getCreatedMessage() { return \"New person #{person."
+"firstName} \n"
+"        #{person.lastName} created\"; }\n"
+"    protected String getUpdatedMessage() { return \"Person #{person."
+"firstName} \n"
+"        #{person.lastName} updated\"; }\n"
+"    protected String getDeletedMessage() { return \"Person #{person."
+"firstName} \n"
+"        #{person.lastName} deleted\"; }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:114
+#, no-c-format
+msgid ""
+"But the best way to specify the messages is to put them in a resource bundle "
+"known to Seam (the bundle named <literal>messages</literal>, by default)."
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:117
+#, no-c-format
+msgid ""
+"Person_created=New person #{person.firstName} #{person.lastName} created\n"
+"Person_deleted=Person #{person.firstName} #{person.lastName} deleted\n"
+"Person_updated=Person #{person.firstName} #{person.lastName} updated"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:118
+#, no-c-format
+msgid ""
+"This enables internationalization, and keeps your code and configuration "
+"clean of presentation concerns."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:121
+#, no-c-format
+msgid ""
+"The final step is to add validation functionality to the page, using "
+"<literal>&lt;s:validateAll&gt;</literal> and <literal>&lt;s:decorate&gt;</"
+"literal>, but I'll leave that for you to figure out."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:127
+#, no-c-format
+msgid "Query objects"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:128
+#, no-c-format
+msgid ""
+"If we need a list of all <literal>Person</literal> instance in the database, "
+"we can use a Query object. For example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:131
+#, no-c-format
+msgid ""
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:132
+#, no-c-format
+msgid "We can use it from a JSF page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:135
+#, no-c-format
+msgid ""
+"&lt;h1&gt;List of people&lt;/h1&gt;\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view-id=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:136
+#, no-c-format
+msgid "We probably need to support pagination:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:139
+#, no-c-format
+msgid ""
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\" \n"
+"                        order=\"lastName\" \n"
+"                        max-results=\"20\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:140
+#, no-c-format
+msgid "We'll use a page parameter to determine the page to display:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:143
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"    &lt;page viewid=\"/searchPerson.jsp\"&gt;\n"
+"        &lt;param name=\"firstResult\" value=\"#{people.firstResult}\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:144
+#, no-c-format
+msgid "The JSF code for a pagination control is a bit verbose, but manageable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:147
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Search for people&lt;/h1&gt;\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view-id=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.previousExists}\" "
+"value=\"First Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"0\"/&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.previousExists}\" "
+"value=\"Previous Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.previousFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.nextExists}\" value="
+"\"Next Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.nextFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;\n"
+"\n"
+"&lt;s:link view=\"/search.xhtml\" rendered=\"#{people.nextExists}\" value="
+"\"Last Page\"&gt;\n"
+"    &lt;f:param name=\"firstResult\" value=\"#{people.lastFirstResult}\"/"
+"&gt;\n"
+"&lt;/s:link&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:148
+#, no-c-format
+msgid ""
+"Real search screens let the user enter a bunch of optional search criteria "
+"to narrow the list of results returned. The Query object lets you specify "
+"optional \"restrictions\" to support this important usecase:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:151
+#, no-c-format
+msgid ""
+"&lt;component name=\"examplePerson\" class=\"Person\"/&gt;\n"
+"        \n"
+"&lt;framework:entity-query name=\"people\" \n"
+"                        ejbql=\"select p from Person p\" \n"
+"                        order=\"lastName\" \n"
+"                        max-results=\"20\"&gt;\n"
+"    &lt;framework:restrictions&gt;\n"
+"        &lt;value&gt;lower(firstName) like lower( #{examplePerson.firstName} "
+"+ '&#37;' )&lt;/value&gt;\n"
+"        &lt;value&gt;lower(lastName) like lower( #{examplePerson.lastName} + "
+"'&#37;' )&lt;/value&gt;\n"
+"    &lt;/framework:restrictions&gt;\n"
+"&lt;/framework:entity-query&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:152
+#, no-c-format
+msgid "Notice the use of an \"example\" object."
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:155
+#, no-c-format
+msgid ""
+"&lt;h1&gt;Search for people&lt;/h1&gt;\n"
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;First name: &lt;h:inputText value=\"#{examplePerson.firstName}"
+"\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;Last name: &lt;h:inputText value=\"#{examplePerson.lastName}"
+"\"/&gt;&lt;/div&gt;\n"
+"    &lt;div&gt;&lt;h:commandButton value=\"Search\" action=\"/search.jsp\"/"
+"&gt;&lt;/div&gt;\n"
+"&lt;/h:form&gt;\n"
+"\n"
+"&lt;h:dataTable value=\"#{people.resultList}\" var=\"person\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link view-id=\"/editPerson.jsp\" value=\"#{person.firstName} #"
+"{person.lastName}\"&gt;\n"
+"            &lt;f:param name=\"personId\" value=\"#{person.id}\"/&gt;\n"
+"        &lt;/s:link&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:156
+#, no-c-format
+msgid ""
+"The examples in this section have all shown reuse by configuration. However, "
+"reuse by extension is equally possible for Query objects."
+msgstr ""
+
+#. Tag: title
+#: Framework.xml:162
+#, no-c-format
+msgid "Controller objects"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:163
+#, no-c-format
+msgid ""
+"A totally optional part of the Seam Application Framework is the class "
+"<literal>Controller</literal> and its subclasses <literal>EntityController</"
+"literal><literal>HibernateEntityController</literal> and "
+"<literal>BusinessProcessController</literal>. These classes provide nothing "
+"more than some convenience methods for access to commonly used built-in "
+"components and methods of built-in components. They help save a few "
+"keystrokes (characters can add up!) and provide a great launchpad for new "
+"users to explore the rich functionality built in to Seam."
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:166
+#, no-c-format
+msgid ""
+"For example, here is what <literal>RegisterAction</literal> from the Seam "
+"registration example would look like:"
+msgstr ""
+
+#. Tag: programlisting
+#: Framework.xml:169
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"register\")\n"
+"public class RegisterAction extends EntityController implements Register\n"
+"{\n"
+"\n"
+"   @In private User user;\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = createQuery(\"select u.username from User u where u."
+"username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getResultList();\n"
+"      \n"
+"      if ( existing.size()==0 )\n"
+"      {\n"
+"         persist(user);\n"
+"         info(\"Registered new user #{user.username}\");\n"
+"         return \"/registered.jspx\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         addFacesMessage(\"User #{user.username} already exists\");\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Framework.xml:170
+#, no-c-format
+msgid "As you can see, its not an earthshattering improvement..."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Gettingstarted.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Gettingstarted.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Gettingstarted.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,588 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Gettingstarted.xml:10
+#, no-c-format
+msgid "Getting started with Seam, using seam-gen"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:11
+#, no-c-format
+msgid ""
+"The Seam distribution includes a command line utility that makes it really "
+"easy to set up an Eclipse project, generate some simple Seam skeleton code, "
+"and reverse engineer an application from a pre-existing database."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:14
+#, no-c-format
+msgid ""
+"This is the easy way to get your feet wet with Seam, and gives you some "
+"ammunition for next time you find yourself trapped in an elevator with one "
+"of those tedious Ruby guys ranting about how great and wonderful his new toy "
+"is for building totally trivial applications that put things in databases."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:17
+#, no-c-format
+msgid ""
+"In this release, seam-gen works best for people with JBoss AS. You can use "
+"the generated project with other J2EE or Java EE 5 application servers by "
+"making a few manual changes to the project configuration."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:20
+#, no-c-format
+msgid ""
+"You <emphasis>can</emphasis> use seam-gen without Eclipse, but in this "
+"tutorial, we want to show you how to use it in conjunction with Eclipse for "
+"debugging and integration testing. If you don't want to install Eclipse, you "
+"can still follow along with this tutorial&mdash;all steps can be peformed "
+"from the command line."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:23
+#, no-c-format
+msgid ""
+"Seam-gen is basically just a big ugly Ant script wrapped around Hibernate "
+"Tools, together with some templates. Which means it is easy to customize if "
+"you need to."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:27
+#, no-c-format
+msgid "Before you start"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:28
+#, no-c-format
+msgid ""
+"Make sure you have JDK 5 or JDK 6, JBoss AS 4.0.5 and Ant 1.6, along with "
+"recent versions of Eclipse, the JBoss IDE plugin for Eclipse and the TestNG "
+"plugin for Eclipse correctly installed before starting. Add your JBoss "
+"installation to the JBoss Server View in Eclipse. Start JBoss in debug mode. "
+"Finally, start a command prompt in the directory where you unzipped the Seam "
+"distribution."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:34
+#, no-c-format
+msgid "Setting up a new Eclipse project"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:35
+#, no-c-format
+msgid ""
+"The first thing we need to do is configure seam-gen for your environment: "
+"JBoss AS installation directory, Eclipse workspace, and database connection. "
+"It's easy, just type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:38
+#, no-c-format
+msgid ""
+"cd jboss-seam-1.1.x\n"
+"seam setup"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:39
+#, no-c-format
+msgid "And you will be prompted for the needed information:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:42
+#, no-c-format
+msgid ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam setup\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"setup:\n"
+"    [echo] Welcome to seam-gen :-)\n"
+"    [input] Enter your Java project workspace [C:/Projects]\n"
+"\n"
+"    [input] Enter your JBoss home directory [C:/Program Files/jboss-4.0.5."
+"GA]\n"
+"\n"
+"    [input] Enter the project name [myproject]\n"
+"helloworld\n"
+"    [input] Is this project deployed as an EAR (with EJB components) or a "
+"WAR \n"
+"        (with no EJB support) [ear] (ear,war,)\n"
+"\n"
+"    [input] Enter the Java package name for your session beans [com.mydomain."
+"helloworld]\n"
+"org.jboss.helloworld\n"
+"    [input] Enter the Java package name for your entity beans [org.jboss."
+"helloworld]\n"
+"\n"
+"    [input] Enter the Java package name for your test cases [org.jboss."
+"helloworld.test]\n"
+"\n"
+"    [input] What kind of database are you using? [hsql]\n"
+"    (hsql,mysql,oracle,postgres,mssql,db2,sybase,)\n"
+"mysql\n"
+"    [input] Enter the Hibernate dialect for your database [org.hibernate."
+"dialect.MySQLDialect]\n"
+"\n"
+"    [input] Enter the filesystem path to the JDBC driver jar [lib/hsqldb."
+"jar]\n"
+"../../mysql-connector.jar\n"
+"    [input] Enter JDBC driver class for your database [com.mysql.jdbc."
+"Driver]\n"
+"\n"
+"    [input] Enter the JDBC URL for your database [jdbc:mysql:///test]\n"
+"\n"
+"    [input] Enter database username [sa]\n"
+"gavin\n"
+"    [input] Enter database password []\n"
+"\n"
+"    [input] Are you working with tables that already exist in the database? "
+"[n] (y,n,)\n"
+"y\n"
+"    [input] Do you want to drop and recreate the database tables and data in "
+"import.sql \n"
+"    each time you deploy? [n] (y,n,)\n"
+"n\n"
+"[propertyfile] Creating new property file: C:&#92;Projects&#92;jboss-"
+"seam&#92;seam-gen&#92;build.properties\n"
+"     [echo] Installing JDBC driver jar to JBoss server\n"
+"     [echo] Type 'seam new-project' to create the new project\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 1 minute 17 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:43
+#, no-c-format
+msgid ""
+"The tool provides sensible defaults, which you can accept by just pressing "
+"enter at the prompt."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:46
+#, no-c-format
+msgid ""
+"The most important choice you need to make is between EAR deployment and WAR "
+"deployment of your project. EAR projects support EJB 3.0 and require Java EE "
+"5. WAR projects do not support EJB 3.0, but may be deployed to a J2EE "
+"environment. The packaging of a WAR is also simpler to understand. If you "
+"installed JBoss with the ejb3 profile, choose <literal>ear</literal>. "
+"Otherwise, choose <literal>war</literal>. We'll assume that you've chosen an "
+"EAR deployment for the rest of the tutorial, but you can follow exactly the "
+"same steps for a WAR deployment."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:49
+#, no-c-format
+msgid ""
+"If you are working with an existing data model, make sure you tell seam-gen "
+"that the tables already exist in the database."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:52
+#, no-c-format
+msgid ""
+"The settings are stored in <literal>seam-gen/build.properties</literal>, but "
+"you can also modify them simply by running <literal>seam setup</literal> a "
+"second time."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:55
+#, no-c-format
+msgid ""
+"Now we can create a new project in our Eclipse workspace directory, by "
+"typing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:58
+#, no-c-format
+msgid "seam new-project"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:59
+#, no-c-format
+msgid ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam new-project\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"copy-lib:\n"
+"     [echo] Copying project jars ...\n"
+"     [copy] Copying 32 files to C:&#92;Projects&#92;helloworld&#92;lib\n"
+"     [copy] Copying 9 files to C:&#92;Projects&#92;helloworld&#92;embedded-"
+"ejb\n"
+"\n"
+"file-copy-wtp:\n"
+"\n"
+"file-copy:\n"
+"     [echo] Copying project resources ...\n"
+"     [copy] Copying 12 files to C:&#92;Projects&#92;helloworld&#92;"
+"resources\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;helloworld&#92;resources\n"
+"     [copy] Copying 5 files to C:&#92;Projects&#92;helloworld&#92;view\n"
+"     [copy] Copying 5 files to C:&#92;Projects&#92;helloworld\n"
+"    [mkdir] Created dir: C:&#92;Projects&#92;helloworld&#92;src\n"
+"\n"
+"new-project:\n"
+"     [echo] A new Seam project was created in the C:/Projects directory\n"
+"     [echo] Add the project from inside Eclipse (or type 'seam explode') and "
+"go to http://localhost:\n"
+"8080/helloworld\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 7 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:60
+#, no-c-format
+msgid ""
+"This copies the Seam jars, dependent jars and the JDBC driver jar to a new "
+"Eclipse project, and generates all needed resources and configuration files, "
+"a facelets template file and stylesheet, along with Eclipse metadata and an "
+"Ant build script. The Eclipse project will be automatically deployed to an "
+"exploded directory structure in JBoss AS as soon as you add the project "
+"using <literal>New -&gt; Project... -&gt; Java Project -&gt; Next</literal>, "
+"typing the <literal>Project name</literal> (<literal>myproject</literal> in "
+"this case), selecting your Java SE 5 or Java SE 6 JRE and then clicking "
+"<literal>Finish</literal>. Do not select <literal>Create new project from "
+"existing source</literal>. Alternatively, you can deploy the project from "
+"outside Eclipse by typing <literal>seam explode</literal>."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:63
+#, no-c-format
+msgid ""
+"Go to <literal>http://localhost:8080/helloworld</literal> to see a welcome "
+"page. This is a facelets page, <literal>view/home.xhtml</literal>, using the "
+"template <literal>view/layout/template.xhtml</literal>. You can edit this "
+"page, or the template, in eclipse, and see the results "
+"<emphasis>immediately</emphasis>, by clicking refresh in your browser."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:66
+#, no-c-format
+msgid ""
+"Don't get scared by the XML configuration documents that were generated into "
+"the project directory. They are mostly standard Java EE stuff, the stuff you "
+"need to create once and then never look at again, and they are 90&#37; the "
+"same between all Seam projects. (They are so easy to write that even seam-"
+"gen can do it.)"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:69
+#, no-c-format
+msgid ""
+"The generated project includes three database and persistence "
+"configurations. The <literal>jboss-beans.xml</literal>, <literal>persistence-"
+"test.xml</literal> and <literal>import-test.sql</literal> files are used "
+"when running the TestNG unit tests against HSQLDB. The database schema and "
+"the test data in <literal>import-test.sql</literal> is always exported to "
+"the database before running tests. The <literal>myproject-dev-ds.xml</"
+"literal>, <literal>persistence-dev.xml</literal>and <literal>import-dev.sql</"
+"literal> files are for use when deploying the application to your "
+"development database. The schema might be exported automatically at "
+"deployment, depending upon whether you told seam-gen that you are working "
+"with an existing database. The <literal>myproject-prod-ds.xml</literal>, "
+"<literal>persistence-prod.xml</literal>and <literal>import-prod.sql</"
+"literal> files are for use when deploying the application to your production "
+"database. The schema is not exported automatically at deployment."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:75
+#, no-c-format
+msgid "Creating a new action"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:76
+#, no-c-format
+msgid ""
+"If you're used to traditional action-style web frameworks, you're probably "
+"wondering how you can create a simple webpage with a stateless action method "
+"in Java. If you type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:79
+#, no-c-format
+msgid "seam new-action"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:80
+#, no-c-format
+msgid ""
+"Seam will prompt for some information, and generate a new facelets page and "
+"Seam component for your project."
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:83
+#, no-c-format
+msgid ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam new-action ping\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"action-input:\n"
+"    [input] Enter the Seam component name\n"
+"ping\n"
+"    [input] Enter the local interface name [Ping]\n"
+"\n"
+"    [input] Enter the bean class name [PingBean]\n"
+"\n"
+"    [input] Enter the action method name [ping]\n"
+"\n"
+"    [input] Enter the page name [ping]\n"
+"\n"
+"\n"
+"setup-filters:\n"
+"\n"
+"new-action:\n"
+"     [echo] Creating a new stateless session bean component with an action "
+"method\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;view\n"
+"     [echo] Type 'seam restart' and go to \n"
+"     http://localhost:8080/helloworld/ping.seam\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 13 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:84
+#, no-c-format
+msgid ""
+"Because we've added a new Seam component, we need to restart the exploded "
+"directory deployment. You can do this by typing <literal>seam restart</"
+"literal>, or by running the <literal>restart</literal> target in the "
+"generated project <literal>build.xml</literal> file from inside Eclipse. "
+"Another way to force a restart is to edit the file <literal>resources/META-"
+"INF/application.xml</literal> in Eclipse. <emphasis>Note that you do not "
+"need to restart JBoss each time you change the application.</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:87
+#, no-c-format
+msgid ""
+"Now go to <literal>http://localhost:8080/helloworld/ping.seam</literal> and "
+"click the button. You can see the code behind this action by looking in the "
+"project <literal>src</literal> directory. Put a breakpoint in the "
+"<literal>ping()</literal> method, and click the button again."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:90
+#, no-c-format
+msgid ""
+"Finally, locate the <literal>PingTest.xml</literal> file in the test package "
+"and run the integration tests using the TestNG plugin for Eclipse. "
+"Alternatively, run the tests using <literal>seam test</literal> or the "
+"<literal>test</literal> target of the generated build."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:96
+#, no-c-format
+msgid "Creating a form with an action"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:97
+#, no-c-format
+msgid "The next step is to create a form. Type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:100
+#, no-c-format
+msgid "seam new-form"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:101
+#, no-c-format
+msgid ""
+"C:&#92;Projects&#92;jboss-seam&gt;seam new-form\n"
+"Buildfile: C:&#92;Projects&#92;jboss-seam&#92;seam-gen&#92;build.xml\n"
+"\n"
+"validate-workspace:\n"
+"\n"
+"validate-project:\n"
+"\n"
+"action-input:\n"
+"    [input] Enter the Seam component name\n"
+"hello\n"
+"    [input] Enter the local interface name [Hello]\n"
+"\n"
+"    [input] Enter the bean class name [HelloBean]\n"
+"\n"
+"    [input] Enter the action method name [hello]\n"
+"\n"
+"    [input] Enter the page name [hello]\n"
+"\n"
+"\n"
+"setup-filters:\n"
+"\n"
+"new-form:\n"
+"     [echo] Creating a new stateful session bean component with an action "
+"method\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;view\n"
+"     [copy] Copying 1 file to C:&#92;Projects&#92;hello&#92;src&#92;com&#92;"
+"hello&#92;test\n"
+"     [echo] Type 'seam restart' and go to http://localhost:8080/hello/hello."
+"seam\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 5 seconds\n"
+"C:&#92;Projects&#92;jboss-seam&gt;"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:102
+#, no-c-format
+msgid ""
+"Restart the application again, and go to <literal>http://localhost:8080/"
+"helloworld/hello.seam</literal>. Then take a look at the generated code. Run "
+"the test. Try adding some new fields to the form and Seam component "
+"(remember to restart the deploment each time you change the Java code)."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:108
+#, no-c-format
+msgid "Generating an application from an existing database"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:109
+#, no-c-format
+msgid ""
+"Manually create some tables in your database. (If you need to switch to a "
+"different database, just run <literal>seam setup</literal> again.) Now type:"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:112
+#, no-c-format
+msgid "seam generate-entities"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:113
+#, no-c-format
+msgid ""
+"Restart the deployment, and go to <literal>http://localhost:8080/helloworld</"
+"literal>. You can browse the database, edit existing objects, and create new "
+"objects. If you look at the generated code, you'll probably be amazed how "
+"simple it is! Seam was designed so that data access code is easy to write by "
+"hand, even for people who don't want to cheat by using seam-gen."
+msgstr ""
+
+#. Tag: title
+#: Gettingstarted.xml:119
+#, no-c-format
+msgid "Deploying the application as an EAR"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:120
+#, no-c-format
+msgid ""
+"Finally, we want to be able to deploy the application using standard Java EE "
+"5 packaging. First, we need to remove the exploded directory by running "
+"<literal>seam unexplode</literal>. To deploy the EAR, we can type "
+"<literal>seam deploy</literal> at the command prompt, or run the "
+"<literal>deploy</literal> target of the generated project build script. You "
+"can undeploy using <literal>seam undeploy</literal> or the "
+"<literal>undeploy</literal> target."
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:123
+#, no-c-format
+msgid ""
+"By default, the application will be deployed with the <emphasis>dev profile</"
+"emphasis>. The EAR will include the <literal>persistence-dev.xml</literal> "
+"and <literal>import-dev.sql</literal> files, and the <literal>myproject-dev-"
+"ds.xml</literal> file will be deployed. You can change the profile, and use "
+"the <emphasis>prod profile</emphasis>, by typing"
+msgstr ""
+
+#. Tag: programlisting
+#: Gettingstarted.xml:126
+#, no-c-format
+msgid "seam -Dprofile=prod deploy"
+msgstr ""
+
+#. Tag: para
+#: Gettingstarted.xml:127
+#, no-c-format
+msgid ""
+"You can even define new deployment profiles for your application. Just add "
+"appropriately named files to your project&mdash;for example, "
+"<literal>persistence-staging.xml</literal>, <literal>import-staging.sql</"
+"literal> and <literal>myproject-staging-ds.xml</literal>&mdash;and select "
+"the name of the profile using <literal>-Dprofile=staging</literal>."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/I18n.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/I18n.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/I18n.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,533 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: I18n.xml:10
+#, no-c-format
+msgid "Internationalization and themes"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:11
+#, no-c-format
+msgid ""
+"Seam makes it easy to build internationalized applications by providing "
+"several built-in components for handling multi-language UI messages."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:15
+#, no-c-format
+msgid "Locales"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:16
+#, no-c-format
+msgid ""
+"Each user login session has an associated instance of <literal>java.util."
+"Locale</literal> (available to the application as a session-scoped component "
+"named <literal>locale</literal>). Under normal circumstances, you won't need "
+"to do any special configuration to set the locale. Seam just delegates to "
+"JSF to determine the active locale:"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:21
+#, no-c-format
+msgid ""
+"If there is a locale associated with the HTTP request (the browser locale), "
+"and that locale is in the list of supported locales from <literal>faces-"
+"config.xml</literal>, use that locale for the rest of the session."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:24
+#, no-c-format
+msgid ""
+"Otherwise, if a default locale was specified in the <literal>faces-config."
+"xml</literal>, use that locale for the rest of the session."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:27
+#, no-c-format
+msgid "Otherwise, use the default locale of the server."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:30
+#, no-c-format
+msgid ""
+"It is <emphasis>possible</emphasis> to set the locale manually via the Seam "
+"configuration properties <literal>org.jboss.seam.core.localeSelector."
+"language</literal>, <literal>org.jboss.seam.core.localeSelector.country</"
+"literal> and <literal>org.jboss.seam.core.localeSelector.variant</literal>, "
+"but we can't think of any good reason to ever do this."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:33
+#, no-c-format
+msgid ""
+"It is, however, useful to allow the user to set the locale manually via the "
+"application user interface. Seam provides built-in functionality for "
+"overriding the locale determined by the algorithm above. All you have to do "
+"is add the following fragment to a form in your JSP or Facelets page:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:36
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{localeSelector.language}\"&gt;\n"
+"    &lt;f:selectItem itemLabel=\"English\" itemValue=\"en\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Deutsch\" itemValue=\"de\"/&gt;\n"
+"    &lt;f:selectItem itemLabel=\"Francais\" itemValue=\"fr\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{localeSelector.select}\" value=\"#{messages"
+"['ChangeLanguage']}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:37
+#, no-c-format
+msgid ""
+"Or, if you want a list of all supported locales from <literal>faces-config."
+"xml</literal>, just use:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:40
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{localeSelector.localeString}\"&gt;\n"
+"    &lt;f:selectItems value=\"#{localeSelector.supportedLocales}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{localeSelector.select}\" value=\"#{messages"
+"['ChangeLanguage']}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:41
+#, no-c-format
+msgid ""
+"When this use selects an item from the drop-down, and clicks the button, the "
+"Seam and JSF locales will be overridden for the rest of the session."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:47
+#, no-c-format
+msgid "Labels"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:48
+#, no-c-format
+msgid ""
+"JSF supports internationalization of user interface labels and descriptive "
+"text via the use of <literal>&lt;f:loadBundle /&gt;</literal>. You can use "
+"this approach in Seam applications. Alternatively, you can take advantage of "
+"the Seam <literal>messages</literal> component to display templated labels "
+"with embedded EL expressions."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:52
+#, no-c-format
+msgid "Defining labels"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:53
+#, no-c-format
+msgid ""
+"Each login session has an associated instance of <literal>java.util."
+"ResourceBundle</literal> (available to the application as a session-scoped "
+"component named <literal>org.jboss.seam.core.resourceBundle</literal>). "
+"You'll need to make your internationalized labels available via this special "
+"resource bundle. By default, the resource bundle used by Seam is named "
+"<literal>messages</literal> and so you'll need to define your labels in "
+"files named <literal>messages.properties</literal>, <literal>messages_en."
+"properties</literal>, <literal>messages_en_AU.properties</literal>, etc. "
+"These files usually belong in the <literal>WEB-INF/classes</literal> "
+"directory."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:56
+#, no-c-format
+msgid "So, in <literal>messages_en.properties</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:59
+#, no-c-format
+msgid "Hello=Hello"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:60
+#, no-c-format
+msgid "And in <literal>messages_en_AU.properties</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:63
+#, no-c-format
+msgid "Hello=G'day"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:64
+#, no-c-format
+msgid ""
+"You can select a different name for the resource bundle by setting the Seam "
+"configuration property named <literal>org.jboss.seam.core.resourceBundle."
+"bundleNames</literal>. You can even specify a list of resource bundle names "
+"to be searched (depth first) for messages."
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:67
+#, no-c-format
+msgid ""
+"&lt;core:resource-bundle&gt;\n"
+"    &lt;core:bundle-names&gt;\n"
+"        &lt;value&gt;mycompany_messages&lt;/value&gt;\n"
+"        &lt;value&gt;standard_messages&lt;/value&gt;       \n"
+"    &lt;/core:bundle-names&gt;\n"
+"&lt;/core:resource-bundle&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:68
+#, no-c-format
+msgid ""
+"If you want to define a message just for a particular page, you can specify "
+"it in a resource bundle with the same name as the JSF view id, with the "
+"leading <literal>/</literal> and trailing file extension removed. So we "
+"could put our message in <literal>welcome/hello_en.properties</literal> if "
+"we only needed to display the message on <literal>/welcome/hello.jsp</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:71
+#, no-c-format
+msgid ""
+"You can even specify an explicit bundle name in <literal>pages.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:74
+#, no-c-format
+msgid "&lt;page view-id=\"/welcome/hello.jsp\" bundle=\"HelloMessages\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:75
+#, no-c-format
+msgid ""
+"Then we could use messages defined in <literal>HelloMessages.properties</"
+"literal> on <literal>/welcome/hello.jsp</literal>."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:81
+#, no-c-format
+msgid "Displaying labels"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:82
+#, no-c-format
+msgid ""
+"If you define your labels using the Seam resource bundle, you'll be able to "
+"use them without having to type <literal>&lt;f:loadBundle ... /&gt;</"
+"literal> on every page. Instead, you can simply type:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:85
+#, no-c-format
+msgid "&lt;h:outputText value=\"#{messages['Hello']}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:86
+#, no-c-format
+msgid "<para>or:</para>"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:89
+#, no-c-format
+msgid "&lt;h:outputText value=\"#{messages.Hello}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:90
+#, no-c-format
+msgid "Even better, the messages themselves may contain EL expressions:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:93
+#, no-c-format
+msgid "Hello=Hello, #{user.firstName} #{user.lastName}"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:94
+#, no-c-format
+msgid "Hello=G'day, #{user.firstName}"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:95
+#, no-c-format
+msgid "You can even use the messages in your code:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:98
+#, no-c-format
+msgid "@In private Map&lt;String, String&gt; messages;"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:99
+#, no-c-format
+msgid "@In(\"#{messages['Hello']}\") private String helloMessage;"
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:103
+#, no-c-format
+msgid "Faces messages"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:104
+#, no-c-format
+msgid ""
+"The <literal>facesMessages</literal> component is a super-convenient way to "
+"display success or failure messages to the user. The functionality we just "
+"described also works for faces messages:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:107
+#, no-c-format
+msgid ""
+"@Name(\"hello\")\n"
+"@Stateless\n"
+"public class HelloBean implements Hello {\n"
+"    @In FacesMessages facesMessages;\n"
+"    \n"
+"    public String sayIt() {\n"
+"        facesMessages.addFromResourceBundle(\"Hello\");\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:108
+#, no-c-format
+msgid ""
+"This will display <literal>Hello, Gavin King</literal> or <literal>G'day, "
+"Gavin</literal>, depending upon the user's locale."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:116
+#, no-c-format
+msgid "Timezones"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:117
+#, no-c-format
+msgid ""
+"There is also a session-scoped instance of <literal>java.util.Timezone</"
+"literal>, named <literal>org.jboss.seam.core.timezone</literal>, and a Seam "
+"component for changing the timezone named <literal>org.jboss.seam.core."
+"timezoneSelector</literal>. By default, the timezone is the default timezone "
+"of the server. Unfortunately, the JSF specification says that all dates and "
+"times should be assumed to be UTC, and displayed as UTC, unless a timezone "
+"is explicitly specified using <literal>&lt;f:convertDateTime&gt;</literal>. "
+"This is an extremely inconvenient default behavior."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:120
+#, no-c-format
+msgid ""
+"Seam overrides this behavior, and defaults all dates and times to the Seam "
+"timezone. In addition, Seam provides the <literal>&lt;s:convertDateTime&gt;</"
+"literal> tag which always performs conversions in the Seam timezone."
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:126
+#, no-c-format
+msgid "Themes"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:127
+#, no-c-format
+msgid ""
+"Seam applications are also very easily skinnable. The theme API is very "
+"similar to the localization API, but of course these two concerns are "
+"orthogonal, and some applications support both localization and themes."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:130
+#, no-c-format
+msgid "First, configure the set of supported themes:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:133
+#, no-c-format
+msgid ""
+"&lt;theme:theme-selector cookie-enabled=\"true\"&gt;\n"
+"    &lt;theme:available-themes&gt;\n"
+"        &lt;value&gt;default&lt;/value&gt;\n"
+"        &lt;value&gt;accessible&lt;/value&gt;\n"
+"        &lt;value&gt;printable&lt;/value&gt;\n"
+"    &lt;/theme:available-themes&gt;\n"
+"&lt;/theme:theme-selector&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:134
+#, no-c-format
+msgid "Note that the first theme listed is the default theme."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:137
+#, no-c-format
+msgid ""
+"Themes are defined in a properties file with the same name as the theme. For "
+"example, the <literal>default</literal> theme is defined as a set of entries "
+"in <literal>default.properties</literal>. For example, <literal>default."
+"properties</literal> might define:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:140
+#, no-c-format
+msgid ""
+"css ../screen.css\n"
+"template template.xhtml"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:141
+#, no-c-format
+msgid ""
+"Usually the entries in a theme resource bundle will be paths to CSS styles "
+"or images and names of facelets templates (unlike localization resource "
+"bundles which are usually text)."
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:144
+#, no-c-format
+msgid ""
+"Now we can use these entries in our JSP or facelets pages. For example, to "
+"theme the stylesheet in a facelets page:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:147
+#, no-c-format
+msgid ""
+"&lt;link href=\"#{theme.css}\" rel=\"stylesheet\" type=\"text/css\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:148
+#, no-c-format
+msgid ""
+"Most powerfully, facelets lets us theme the template used by a <literal>&lt;"
+"ui:composition&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:151
+#, no-c-format
+msgid ""
+"&lt;ui:composition xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"    xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"    xmlns:h=\"http://java.sun.com/jsf/html\"\n"
+"    xmlns:f=\"http://java.sun.com/jsf/core\"\n"
+"    template=\"#{theme.template}\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:152
+#, no-c-format
+msgid ""
+"Just like the locale selector, there is a built-in theme selector to allow "
+"the user to freely switch themes:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:155
+#, no-c-format
+msgid ""
+"&lt;h:selectOneMenu value=\"#{themeSelector.theme}\"&gt;\n"
+"    &lt;f:selectItems value=\"#{themeSelector.themes}\"/&gt;\n"
+"&lt;/h:selectOneMenu&gt;\n"
+"&lt;h:commandButton action=\"#{themeSelector.select}\" value=\"Select Theme"
+"\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: I18n.xml:159
+#, no-c-format
+msgid "Persisting locale and theme preferences via cookies"
+msgstr ""
+
+#. Tag: para
+#: I18n.xml:160
+#, no-c-format
+msgid ""
+"The locale selector, theme selector and timezone selector all support "
+"persistence of locale and theme preference to a cookie. Simply set the "
+"<literal>cookie-enabled</literal> configuration property:"
+msgstr ""
+
+#. Tag: programlisting
+#: I18n.xml:163
+#, no-c-format
+msgid ""
+"&lt;theme:theme-selector cookie-enabled=\"true\"&gt;\n"
+"    &lt;theme:available-themes&gt;\n"
+"        &lt;value&gt;default&lt;/value&gt;\n"
+"        &lt;value&gt;accessible&lt;/value&gt;\n"
+"        &lt;value&gt;printable&lt;/value&gt;\n"
+"    &lt;/theme:available-themes&gt;\n"
+"&lt;/theme:theme-selector&gt;\n"
+"\n"
+"&lt;core:locale-selector cookie-enabled=\"true\"/&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Itext.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Itext.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Itext.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1452 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Itext.xml:10
+#, no-c-format
+msgid "iText PDF generation"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:11
+#, no-c-format
+msgid ""
+"Seam now includes an component set for generating documents using iText. The "
+"primary focus of Seam's iText document support is for the generation of PDF "
+"doucuments, but Seam also offers basic support for RTF document generation."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:15
+#, no-c-format
+msgid "Using PDF Support"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:16
+#, no-c-format
+msgid ""
+"iText support is provided by <literal>jboss-seam-pdf.jar</literal>. This JAR "
+"contains the iText JSF controls, which are used to construct views that can "
+"render to PDF, and the DocumentStore component, which serves the rendered "
+"documents to the user. To include PDF support in your application, included "
+"<literal>jboss-seam-pdf.jar</literal> in your <literal>WEB-INF/lib</literal> "
+"directory along with the iText JAR file. There is no further configuration "
+"needed to use Seam's iText support."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:19
+#, no-c-format
+msgid ""
+"The Seam iText module requires the use of Facelets as the view technology. "
+"Future versions of the library may also support the use of JSP. "
+"Additionally, it requires the use of the seam-ui package."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:22
+#, no-c-format
+msgid ""
+"The <literal>examples/itext</literal> project contains an example of the PDF "
+"support in action. It demonstrates proper deployment packaging, and it "
+"contains a number examples that demonstrate the key PDF generation features "
+"current supported."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:28
+#, no-c-format
+msgid "Creating a document"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:29
+#, no-c-format
+msgid ""
+"Documents are generated by facelets documents using tags in the "
+"<literal>http://jboss.com/products/seam/pdf</literal> namespace. Documents "
+"should always have the <literal>document</literal> tag at the root of the "
+"document. The <literal>document</literal> tag prepares Seam to generate a "
+"document into the DocumentStore and renders an HTML redirect to that stored "
+"content. The following is a a small PDF document consisting only a single "
+"line of text:"
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:32
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf"
+"\"&gt;                                                      \n"
+"   The document goes "
+"here.                                                                                             \n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:34
+#, no-c-format
+msgid "p:document"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:35
+#, no-c-format
+msgid ""
+"The <literal>p:document</literal> tag supports the following attributes:"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:40
+#, no-c-format
+msgid "type"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:42
+#, no-c-format
+msgid ""
+"The type of the document to be produced. Valid values are <literal>PDF</"
+"literal>, <literal>RTF</literal> and <literal>HTML</literal> modes. Seam "
+"defaults to PDF generation, and many of the features only work correctly "
+"when generating PDF documents."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:48
+#, no-c-format
+msgid "pageSize"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:50
+#, no-c-format
+msgid ""
+"The size of the page to be generate. The most commonly used values would be "
+"<literal>LETTER</literal> and <literal>A4</literal>. A full list of "
+"supported pages sizes can be found in <literal>com.lowagie.text.PageSize</"
+"literal> class. Alternatively, pageSize can provide the width and height of "
+"the page directly. The value \"612 792\", for example, is equizalent to the "
+"LETTER page size."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:56
+#, no-c-format
+msgid "orientation"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:58
+#, no-c-format
+msgid ""
+"The orientation of the page. Valid values are <literal>portrait</literal> "
+"and <literal>landscape</literal>. In landscape mode, the height and width "
+"page size values are reversed."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:64
+#, no-c-format
+msgid "margins"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:66
+#, no-c-format
+msgid "The left, right, top and bottom margin values."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:72
+#, no-c-format
+msgid "marginMirroring"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:74
+#, no-c-format
+msgid "Indicates that margin settings should be reversed an alternating pages."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:80
+#, no-c-format
+msgid ""
+"Document metadata is also set as attributes of the document tag. The "
+"following metadata fields are supported:"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:85
+#, no-c-format
+msgid "title"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:92
+#, no-c-format
+msgid "subject"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:99
+#, no-c-format
+msgid "keywords"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:106
+#, no-c-format
+msgid "author"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:113
+#, no-c-format
+msgid "creator"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:125
+#, no-c-format
+msgid "Basic Text Elements"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:126
+#, no-c-format
+msgid ""
+"Useful documents will need to contain more than just text; however, the "
+"standard UI components are geared towards HTML generation and are not useful "
+"for generating PDF content. Instead, Seam provides a special UI components "
+"for generating suitable PDF content. Tags like <literal>&lt;p:image&gt;</"
+"literal> and <literal>&lt;p:paragraph&gt;</literal> are the basic "
+"foundations of simple documents. Tags like <literal>&lt;p:font&gt;</literal> "
+"provide style information to all the content surrounging them."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:129
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"&gt; \n"
+"    &lt;p:image alignment=\"right\" wrap=\"true\" resource=\"/logo.jpg\" /"
+"&gt;\n"
+"    &lt;p:font size=\"24\"&gt;\n"
+"        &lt;p:paragraph spacingAfter=\"50\"&gt;My First Document&lt;/p:"
+"paragraph&gt;\n"
+"    &lt;/p:font&gt;\n"
+"\n"
+"    &lt;p:paragraph alignment=\"justify\"&gt;\n"
+"        This is a simple document.  It isn't very fancy.\n"
+"    &lt;/p:paragraph&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:131
+#, no-c-format
+msgid "p:paragraph"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:132
+#, no-c-format
+msgid ""
+"Most uses of text should be sectioned into paragraphs so that text fragments "
+"can be flowed, formatted and styled in logical groups."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:137
+#, no-c-format
+msgid "firstLineIndent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:144 Itext.xml:836
+#, no-c-format
+msgid "extraParagraphSpace"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:151 Itext.xml:808
+#, no-c-format
+msgid "leading"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:158 Itext.xml:815
+#, no-c-format
+msgid "multipliedLeading"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:165 Itext.xml:344 Itext.xml:716
+#, no-c-format
+msgid "spacingBefore"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:167 Itext.xml:346 Itext.xml:718
+#, no-c-format
+msgid "The blank space to be inserted before the element."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:173 Itext.xml:352 Itext.xml:724
+#, no-c-format
+msgid "spacingAfter"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:175 Itext.xml:354 Itext.xml:726
+#, no-c-format
+msgid "The blank space to be inserted after the element."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:181 Itext.xml:330 Itext.xml:599
+#, no-c-format
+msgid "indentationLeft"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:188 Itext.xml:337 Itext.xml:607
+#, no-c-format
+msgid "indentationRight"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:195 Itext.xml:753
+#, no-c-format
+msgid "keepTogether"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:205
+#, no-c-format
+msgid "p:text"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:206
+#, no-c-format
+msgid ""
+"The <literal>text</literal> tag allows text fragments to be produced from "
+"application data using normal JSF converter mechanisms. It is very similar "
+"to the <literal>outputText</literal> tag used when rendering HTML documents. "
+"Here is an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:209
+#, no-c-format
+msgid ""
+"&lt;p:paragraph&gt;\n"
+"    The item costs &lt;p:text value=\"#{product.price}\"&gt;\n"
+"        &lt;f:convertNumber type=\"currency\" currencySymbol=\"&#36;\"/&gt;\n"
+"    &lt;/p:text&gt;\n"
+"&lt;/p:paragraph&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:212
+#, no-c-format
+msgid "value"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:214
+#, no-c-format
+msgid ""
+"The value to be displayed. This will typically be a value binding expression."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:223
+#, no-c-format
+msgid "p:font"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:224
+#, no-c-format
+msgid "Font declarations have no direct"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:229
+#, no-c-format
+msgid "familyName"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:231
+#, no-c-format
+msgid ""
+"The font family. One of: <literal>COURIER</literal>, <literal>HELVETICA</"
+"literal>, <literal>TIMES-ROMAN</literal>, <literal>SYMBOL</literal> or "
+"<literal>ZAPFDINGBATS</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:237
+#, no-c-format
+msgid "size"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:239
+#, no-c-format
+msgid "The point size of the font."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:245 Itext.xml:534
+#, no-c-format
+msgid "style"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:247
+#, no-c-format
+msgid ""
+"The font styles. Any combination of : <literal>NORMAL</literal>, "
+"<literal>BOLD</literal>, <literal>ITALIC</literal>, <literal>OBLIQUE</"
+"literal>, <literal>UNDERLINE</literal>, <literal>LINE-THROUGH</literal>"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:256
+#, no-c-format
+msgid "p:newPage"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:257
+#, no-c-format
+msgid "<literal>p:newPage</literal> inserts a page break."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:263
+#, no-c-format
+msgid "p:image"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:264
+#, no-c-format
+msgid ""
+"<literal>p:image</literal> inserts an image into the document. Images can be "
+"be loaded from the classpath or from the web application context using the "
+"<literal>resource</literal> attribute."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:267
+#, no-c-format
+msgid "&lt;p:image resource=\"/jboss.jpg\" /&gt;"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:268
+#, no-c-format
+msgid ""
+"Resources can also be dynamically generated by application code. The "
+"<literal>imageData</literal> attribute can specify a value binding "
+"expression whose value is a <literal>java.awt.Image</literal> object."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:271
+#, no-c-format
+msgid "&lt;p:image imageData=\"#{images.chart}\" /&gt;"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:274
+#, no-c-format
+msgid "resource"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:276
+#, no-c-format
+msgid ""
+"The location of the image resource to be included. Resources should be "
+"relative to the document root of the web application."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:282
+#, no-c-format
+msgid "imageData"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:284
+#, no-c-format
+msgid "A method expression binding to an application-generated image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:290 Itext.xml:913
+#, no-c-format
+msgid "rotation"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:292
+#, no-c-format
+msgid "The rotation of the image in degrees."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:298
+#, no-c-format
+msgid "height"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:300
+#, no-c-format
+msgid "The height of the image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:306
+#, no-c-format
+msgid "width"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:308
+#, no-c-format
+msgid "The width of the image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:314 Itext.xml:441 Itext.xml:591
+#, no-c-format
+msgid "alignment"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:316
+#, no-c-format
+msgid ""
+"The alignment of the image. (see <xref linkend=\"Document_Constants-"
+"Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:322
+#, no-c-format
+msgid "<literal>alt</literal>"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:324
+#, no-c-format
+msgid "Alternative text representation for the image."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:360 Itext.xml:672
+#, no-c-format
+msgid "widthPercentage"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:367
+#, no-c-format
+msgid "initialRotation"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:374
+#, no-c-format
+msgid "<literal>dpi</literal>"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:381
+#, no-c-format
+msgid "scalePercent"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:383
+#, no-c-format
+msgid ""
+"The scaling factor (as a percentage) to use for the image. This can be "
+"expressed as a single percentage value or as two percentage values "
+"representing separate x and y scaling percentages."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:389
+#, no-c-format
+msgid "wrap"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:396
+#, no-c-format
+msgid "underlying"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:406
+#, no-c-format
+msgid "p:anchor"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:407
+#, no-c-format
+msgid ""
+"<literal>p:anchor</literal> defines clickable links from a document. It "
+"supports the following attributes:"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:412
+#, no-c-format
+msgid "name"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:414
+#, no-c-format
+msgid "The name of an in-document anchor destination."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:420
+#, no-c-format
+msgid "reference"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:422
+#, no-c-format
+msgid ""
+"The destination the link refers to. Links to other points in the document "
+"should begin with a \"#\". For example, \"#link1\" to refer to an anchor "
+"postion with a <literal>name</literal> of <literal>link1</literal>. Links "
+"may also be a full URL to point to a resource outside of the document."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:433
+#, no-c-format
+msgid "Headers and Footers"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:435
+#, no-c-format
+msgid "p:header and p:footer"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:436
+#, no-c-format
+msgid ""
+"The <literal>p:header</literal> and <literal>p:footer</literal> components "
+"provide the ability to place header and footer text on each page of a "
+"generated document, with the exception of the first page. Header and footer "
+"declarations should appear near the top of a document."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:443
+#, no-c-format
+msgid ""
+"The alignment of the header/footer box section. (see <xref linkend="
+"\"Document_Constants-Alignment_Values\"/> for alignment values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:449
+#, no-c-format
+msgid "backgroundColor"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:451
+#, no-c-format
+msgid ""
+"The background color of the header/footer box. (see <xref linkend="
+"\"Document_Constants-Color_Values\"/> for color values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:457
+#, no-c-format
+msgid "borderColor"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:459
+#, no-c-format
+msgid ""
+"The border color of the header/footer box. Individual border sides can be "
+"set using <literal>borderColorLeft</literal>, <literal>borderColorRight</"
+"literal>, <literal>borderColorTop</literal> and <literal>borderColorBottom</"
+"literal>.(see <xref linkend=\"Document_Constants-Color_Values\"/> for color "
+"values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:465
+#, no-c-format
+msgid "borderWidth"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:467
+#, no-c-format
+msgid ""
+"The width of the border. Inidvidual border sides can be specified using "
+"<literal>borderWidthLeft</literal>, <literal>borderWidthRight</literal>, "
+"<literal>borderWidthTop</literal> and <literal>borderWidthBottom</literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:476
+#, no-c-format
+msgid "p:pageNumber"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:477
+#, no-c-format
+msgid ""
+"The current page number can be placed inside of a header or footer using the "
+"<literal>p:pageNumber</literal> tag. The page number tag can only be used in "
+"the context of a header or footer and can only be used once."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:485
+#, no-c-format
+msgid "Chapters and Sections"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:486
+#, no-c-format
+msgid ""
+"If the generated document follows a book/article structure, the <literal>p:"
+"chapter</literal> and <literal>p:section</literal> tags can be used to "
+"provide the necessary structure. Sections can only be used inside of "
+"chapters, but they may be nested arbitrarily deep. Most PDF viewers provide "
+"easy navigation between chapters and sections in a document."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:489
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"\n"
+"            title=\"Hello\"&gt;\n"
+"\n"
+"   &lt;p:chapter number=\"1\"&gt;\n"
+"      &lt;p:title&gt;&lt;p:paragraph&gt;Hello&lt;/p:paragraph&gt;&lt;/p:"
+"title&gt;\n"
+"      &lt;p:paragraph&gt;Hello #{user.name}!&lt;/p:paragraph&gt;\n"
+"   &lt;/p:chapter&gt;\n"
+"\n"
+"   &lt;p:chapter number=\"2\"&gt;\n"
+"      &lt;p:title&gt;&lt;p:paragraph&gt;Goodbye&lt;/p:paragraph&gt;&lt;/p:"
+"title&gt;\n"
+"      &lt;p:paragraph&gt;Goodbye #{user.name}.&lt;/p:paragraph&gt;\n"
+"   &lt;/p:chapter&gt;\n"
+"\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:491
+#, no-c-format
+msgid "p:chapter and p:section"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:494
+#, no-c-format
+msgid "number"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:496
+#, no-c-format
+msgid "The chapter number. Every chapter should be assigned a chapter number."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:502
+#, no-c-format
+msgid "numberDepth"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:504
+#, no-c-format
+msgid ""
+"The depth of numbering for section. All sections are numbered relative to "
+"their surrounding chapter/sections. The fourth section of of the first "
+"section of chapter three would be section 3.1.4, if displayed at the default "
+"number depth of three. To omit the chapter number, a number depth of 2 "
+"should be used. In that case, the section number would be displayed as 1.4."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:513
+#, no-c-format
+msgid "p:title"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:514
+#, no-c-format
+msgid ""
+"Any chapter or section can contain a <literal>p:title</literal>. The title "
+"will be displayed next to the chapter/section number. The body of the title "
+"may contain raw text or may be a <literal>p:paragraph</literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:522
+#, no-c-format
+msgid "Lists"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:523
+#, no-c-format
+msgid ""
+"List structures can be displayed using the <literal>p:list</literal> and "
+"<literal>p:listItem</literal> tags. Lists may contain arbitrarily-nested "
+"sublists. List items may not be used outside of a list. he following "
+"document uses the <literal>ui:repeat</literal> tag to to display a list of "
+"values retrieved from a Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:526
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"\n"
+"            xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"            title=\"Hello\"&gt;\n"
+"   &lt;p:list style=\"numbered\"&gt;\n"
+"      &lt;ui:repeat value=\"#{documents}\" var=\"doc\"&gt;\n"
+"         &lt;p:listItem&gt;#{doc.name}&lt;/p:listItem&gt;\n"
+"      &lt;/ui:repeat&gt;\n"
+"   &lt;/p:list&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:528
+#, no-c-format
+msgid "p:list"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:529
+#, no-c-format
+msgid "<literal>p:list</literal> supports the following attributes:"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:536
+#, no-c-format
+msgid ""
+"The ordering/bulleting style of list. One of: <literal>NUMBERED</literal>, "
+"<literal>LETTERED</literal>, <literal>GREEK</literal>, <literal>ROMAN</"
+"literal>, <literal>ZAPFDINGBATS</literal>, <literal>ZAPFDINGBATS_NUMBER</"
+"literal>. If no style is given, the list items are bulleted."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:542 Itext.xml:615
+#, no-c-format
+msgid "listSymbol"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:544
+#, no-c-format
+msgid "For bulleted lists, specifies the bullet symbol."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:550 Itext.xml:822
+#, no-c-format
+msgid "indent"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:552
+#, no-c-format
+msgid "The indentation level of the list."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:558
+#, no-c-format
+msgid "lowerCase"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:560
+#, no-c-format
+msgid ""
+"For list styles using letters, indicates whether the letters should be lower "
+"case."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:566
+#, no-c-format
+msgid "charNumber"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:568
+#, no-c-format
+msgid "For ZAPFDINGBATS, indicates the character code of the bullet character."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:574
+#, no-c-format
+msgid "numberType"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:576
+#, no-c-format
+msgid "For ZAPFDINGBATS_NUMBER, indicates the numbering style."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:585
+#, no-c-format
+msgid "p:listItem"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:586
+#, no-c-format
+msgid "<literal>p:listItem</literal> supports the following attributes:"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:593
+#, no-c-format
+msgid ""
+"The alignment of the list item. (See <xref linkend=\"Document_Constants-"
+"Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:601
+#, no-c-format
+msgid "The left indentation amount."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:609
+#, no-c-format
+msgid "The right indentation amount."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:617
+#, no-c-format
+msgid "Overrides the default list symbol for this list item."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:628
+#, no-c-format
+msgid "Tables"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:629
+#, no-c-format
+msgid ""
+"Table structures can be created using the <literal>p:table</literal> and "
+"<literal>p:cell</literal> tags. Unlike many table structures, there is no "
+"explicit row declaration. If a table has 3 columns, then every 3 cells will "
+"automatically form a row. Header and footer rows can be declared, and the "
+"headers and footers will be repeated in the event a table structure spans "
+"multiple pages."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:632
+#, no-c-format
+msgid ""
+"&lt;p:document xmlns:p=\"http://jboss.com/products/seam/pdf\"   \n"
+"            xmlns:ui=\"http://java.sun.com/jsf/facelets\"\n"
+"            title=\"Hello\"&gt;   \n"
+"   &lt;p:table columns=\"3\" headerRows=\"1\"&gt;\n"
+"      &lt;p:cell&gt;name&lt;/p:cell&gt;\n"
+"      &lt;p:cell&gt;owner&lt;/p:cell&gt;\n"
+"      &lt;p:cell&gt;size&lt;/p:cell&gt;\n"
+"      &lt;ui:repeat value=\"#{documents}\" var=\"doc\"&gt;\n"
+"         &lt;p:cell&gt;#{doc.name}&lt;/p:cell&gt;\n"
+"         &lt;p:cell&gt;#{doc.user.name}&lt;/p:cell&gt;\n"
+"         &lt;p:cell&gt;#{doc.size}&lt;/p:cell&gt;\n"
+"      &lt;/ui:repeat&gt;\n"
+"   &lt;/p:table&gt;\n"
+"&lt;/p:document&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:634
+#, no-c-format
+msgid "p:table"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:635
+#, no-c-format
+msgid "<literal>p:table</literal> supports the following attributes."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:640
+#, no-c-format
+msgid "columns"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:642
+#, no-c-format
+msgid "The number of columns (cells) that make up a table row."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:648
+#, no-c-format
+msgid "widths"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:650
+#, no-c-format
+msgid ""
+"The relative widths of each column. There should be one value for each "
+"column. For example: widths=\"2 1 1\" would indicate that there are 3 "
+"columns and the first column should be twice the size of the second and "
+"third column."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:656
+#, no-c-format
+msgid "headerRows"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:658
+#, no-c-format
+msgid ""
+"The initial number of rows which are considered to be headers or footer rows "
+"and should be repeated if the table spans multiple pages."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:664
+#, no-c-format
+msgid "footerRows"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:666
+#, no-c-format
+msgid ""
+"The number of rows that are considered to be footer rows. This value is "
+"subtracted from the <literal>headerRows</literal> value. If document has 2 "
+"rows which make up the header and one row that makes up the footer, "
+"<literal>headerRows</literal> should be set to 3 and <literal>footerRows</"
+"literal> should be set to 1"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:674
+#, no-c-format
+msgid "The percentage of the page width that the table spans."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:680 Itext.xml:777
+#, no-c-format
+msgid "horizontalAlignment"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:682
+#, no-c-format
+msgid ""
+"The horizontal alignment of the table. (See <xref linkend="
+"\"Document_Constants-Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:688
+#, no-c-format
+msgid "skipFirstHeader"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:695 Itext.xml:885
+#, no-c-format
+msgid "runDirection"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:702
+#, no-c-format
+msgid "lockedWidth"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:709
+#, no-c-format
+msgid "splitRows"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:732
+#, no-c-format
+msgid "extendLastRow"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:739
+#, no-c-format
+msgid "headersInEvent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:746
+#, no-c-format
+msgid "splitLate"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:763
+#, no-c-format
+msgid "p:cell"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:764
+#, no-c-format
+msgid "<literal>p:cell</literal> supports the following attributes."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:769
+#, no-c-format
+msgid "colspan"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:771
+#, no-c-format
+msgid ""
+"Cells can span more than one column by declaring a <literal>colspan</"
+"literal> greater than 1. Tables do not have the ability to span across "
+"multiple rows."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:779
+#, no-c-format
+msgid ""
+"The horizontal alignment of the cell. (see <xref linkend="
+"\"Document_Constants-Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:785 Itext.xml:829
+#, no-c-format
+msgid "verticalAlignment"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:787
+#, no-c-format
+msgid ""
+"The vertical alignment of the cell. (see <xref linkend=\"Document_Constants-"
+"Alignment_Values\"/> for possible values)"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:793
+#, no-c-format
+msgid "padding"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:795
+#, no-c-format
+msgid ""
+"Padding on a given side can also be specified using <literal>paddingLeft</"
+"literal>, <literal>paddingRight</literal>, <literal>paddingTop</literal> and "
+"<literal>paddingBottom</literal>."
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:801
+#, no-c-format
+msgid "useBorderPadding"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:843
+#, no-c-format
+msgid "fixedHeight"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:850
+#, no-c-format
+msgid "noWrap"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:857
+#, no-c-format
+msgid "minimumHeight"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:864
+#, no-c-format
+msgid "followingIndent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:871
+#, no-c-format
+msgid "rightIndent"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:878
+#, no-c-format
+msgid "spaceCharRatio"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:892
+#, no-c-format
+msgid "arabicOptions"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:899
+#, no-c-format
+msgid "useAscender"
+msgstr ""
+
+#. Tag: literal
+#: Itext.xml:906
+#, no-c-format
+msgid "grayFill"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:925
+#, no-c-format
+msgid "Document Constants"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:926
+#, no-c-format
+msgid ""
+"This section documents some of the constants shared by attributes on "
+"multiple tags."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:930
+#, no-c-format
+msgid "Color Values"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:931
+#, no-c-format
+msgid ""
+"Seam documents do not yet support a full color specification. Currently, "
+"only named colors are supported. They are: <literal>white</literal>, "
+"<literal>gray</literal>, <literal>lightgray</literal>, <literal>darkgray</"
+"literal>, <literal>black</literal>, <literal>red</literal>, <literal>pink</"
+"literal>, <literal>yellow</literal>, <literal>green</literal>, "
+"<literal>magenta</literal>, <literal>cyan</literal> and <literal>blue</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:937
+#, no-c-format
+msgid "Alignment Values"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:938
+#, no-c-format
+msgid ""
+"Where alignment values are used, the Seam PDF supports the following "
+"horizontal alignment values: <literal>left</literal>, <literal>right</"
+"literal>, <literal>center</literal>, <literal>justify</literal> and "
+"<literal>justifyall</literal>. The vertical alignment values are "
+"<literal>top</literal>, <literal>middle</literal>, <literal>bottom</"
+"literal>, and <literal>baseline</literal>."
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:946
+#, no-c-format
+msgid "Configuring iText"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:947
+#, no-c-format
+msgid ""
+"Document generation works out of the box with no additional configuration "
+"needed. However, there are a few points of configuration that are needed for "
+"more serious applications."
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:950
+#, no-c-format
+msgid ""
+"The default implementation serves PDF documents from a generic URL, "
+"<literal>/seam-doc.seam</literal>. Many browsers (and users) would prefer to "
+"see URLs that contain the actual PDF name like <literal>/myDocument.pdf</"
+"literal>. This capability requires some configuration. To serve PDF files, "
+"all *.pdf resources should be mapped to the Seam Servlet Filter and to the "
+"DocumentStoreServlet:"
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:953
+#, no-c-format
+msgid ""
+"&lt;filter&gt;\n"
+"    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;\n"
+"    &lt;filter-class&gt;org.jboss.seam.servlet.SeamServletFilter&lt;/filter-"
+"class&gt;\n"
+"&lt;/filter&gt;\n"
+"\n"
+"&lt;filter-mapping&gt;\n"
+"    &lt;filter-name&gt;Seam Servlet Filter&lt;/filter-name&gt;\n"
+"    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;\n"
+"&lt;/filter-mapping&gt;\n"
+"\n"
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.pdf.DocumentStoreServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"\n"
+"&lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Document Store Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;*.pdf&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:954
+#, no-c-format
+msgid ""
+"The <literal>useExtensions</literal> option on the document store component "
+"completes the functionality by instructing the document store to generate "
+"URLs with the correct filename extension for the document type being "
+"generated."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:957
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pdf=\"http://jboss.com/products/seam/pdf\"&gt;\n"
+"    &lt;pdf:documentStore useExtensions=\"true\" /&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:958
+#, no-c-format
+msgid ""
+"Generated documents are stored in conversation scope and will expire when "
+"the conversation ends. At that point, references to the document will be "
+"invalid. To You can specify a default view to be shown when a document does "
+"not exist using the <literal>errorPage</literal> property of the "
+"documentStore."
+msgstr ""
+
+#. Tag: programlisting
+#: Itext.xml:961
+#, no-c-format
+msgid ""
+"&lt;pdf:documentStore useExtensions=\"true\" errorPage=\"/pdfMissing.seam\" /"
+"&gt;"
+msgstr ""
+
+#. Tag: title
+#: Itext.xml:965
+#, no-c-format
+msgid "iText links"
+msgstr ""
+
+#. Tag: para
+#: Itext.xml:966
+#, no-c-format
+msgid "For further information on iText, see:"
+msgstr ""
+
+#. Tag: ulink
+#: Itext.xml:973
+#, no-c-format
+msgid "iText Home Page"
+msgstr ""
+
+#. Tag: ulink
+#: Itext.xml:978
+#, no-c-format
+msgid "iText in Action"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Jbpm.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Jbpm.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Jbpm.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1189 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Jbpm.xml:10
+#, no-c-format
+msgid "Pageflows and business processes"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:11
+#, no-c-format
+msgid ""
+"JBoss jBPM is a business process management engine for any Java SE or EE "
+"environment. jBPM lets you represent a business process or user interaction "
+"as a graph of nodes representing wait states, decisions, tasks, web pages, "
+"etc. The graph is defined using a simple, very readable, XML dialect called "
+"jPDL, and may be edited and visualised graphically using an eclipse plugin. "
+"jPDL is an extensible language, and is suitable for a range of problems, "
+"from defining web application page flow, to traditional workflow management, "
+"all the way up to orchestration of services in a SOA environment."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:14
+#, no-c-format
+msgid "Seam applications use jBPM for two different problems:"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:20
+#, no-c-format
+msgid ""
+"Defining the pageflow involved in complex user interactions. A jPDL process "
+"definition defines the page flow for a single conversation. A Seam "
+"conversation is considered to be a relatively short-running interaction with "
+"a single user."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:25
+#, no-c-format
+msgid ""
+"Defining the overarching business process. The business process may span "
+"multiple conversations with multiple users. Its state is persistent in the "
+"jBPM database, so it is considered long-running. Coordination of the "
+"activities of multiple users is a much more complex problem than scripting "
+"an interaction with a single user, so jBPM offers sophisticated facilities "
+"for task management and dealing with multiple concurrent paths of execution."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:31
+#, no-c-format
+msgid ""
+"Don't get these two things confused ! They operate at very different levels "
+"or granularity. <emphasis>Pageflow</emphasis>, <emphasis>conversation</"
+"emphasis> and <emphasis>task</emphasis> all refer to a single interaction "
+"with a single user. A business process spans many tasks. Futhermore, the two "
+"applications of jBPM are totally orthogonal. You can use them together or "
+"independently or not at all."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:34
+#, no-c-format
+msgid ""
+"You don't have to know jDPL to use Seam. If you're perfectly happy defining "
+"pageflow using JSF or Seam navigation rules, and if your application is more "
+"data-driven that process-driven, you probably don't need jBPM. But we're "
+"finding that thinking of user interaction in terms of a well-defined "
+"graphical representation is helping us build more robust applications."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:37
+#, no-c-format
+msgid ""
+"Please refer to the jBPM documentation for a more thorough overview of the "
+"sophisticated features that jBPM provides for managing complex business "
+"processes."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:41
+#, no-c-format
+msgid "Pageflow in Seam"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:42
+#, no-c-format
+msgid "There are two ways to define pageflow in Seam:"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:47
+#, no-c-format
+msgid ""
+"Using JSF or Seam navigation rules - the <emphasis>stateless navigation "
+"model</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:52
+#, no-c-format
+msgid "Using jPDL - the <emphasis>stateful navigation model</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:57
+#, no-c-format
+msgid ""
+"Very simple applications will only need the stateless navigation model. Very "
+"complex applications will use both models in different places. Each model "
+"has its strengths and weaknesses!"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:60
+#, no-c-format
+msgid ""
+"In practice, both navigation models have their place, and you'll quickly "
+"learn to recognize when to prefer one model over the other."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:64
+#, no-c-format
+msgid "The two navigation models"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:65
+#, no-c-format
+msgid ""
+"The stateless model defines a mapping from a set of named, logical outcomes "
+"of an event directly to the resulting page of the view. The navigation rules "
+"are entirely oblivious to any state held by the application other than what "
+"page was the source of the event. This means that your action listener "
+"methods must sometimes make decisions about the page flow, since only they "
+"have access to the current state of the application."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:68
+#, no-c-format
+msgid "Here is an example page flow definition using JSF navigation rules:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:71
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"    &lt;from-view-id&gt;/numberGuess.jsp&lt;/from-view-id&gt;\n"
+"        \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;guess&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/numberGuess.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;win&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/win.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"        \n"
+"    &lt;navigation-case&gt;\n"
+"        &lt;from-outcome&gt;lose&lt;/from-outcome&gt;\n"
+"        &lt;to-view-id&gt;/lose.jsp&lt;/to-view-id&gt;\n"
+"        &lt;redirect/&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:72
+#, no-c-format
+msgid ""
+"Here is the same example page flow definition using Seam navigation rules:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:75
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/numberGuess.jsp\"&gt;\n"
+"        \n"
+"    &lt;navigation&gt;\n"
+"        &lt;rule if-outcome=\"guess\"&gt;\n"
+"            &lt;redirect view-id=\"/numberGuess.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"        &lt;rule if-outcome=\"win\"&gt;\n"
+"            &lt;redirect view-id=\"/win.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"        &lt;rule if-outcome=\"lose\"&gt;\n"
+"            &lt;redirect view-id=\"/lose.jsp\"/&gt;\n"
+"        &lt;/rule&gt;\n"
+"    &lt;/navigation-case&gt;\n"
+"\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:76
+#, no-c-format
+msgid ""
+"If you find navigation rules overly verbose, you can return view ids "
+"directly from your action listener methods:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:79
+#, no-c-format
+msgid ""
+"public String guess() {\n"
+"    if (guess==randomNumber) return \"/win.jsp\";\n"
+"    if (++guessCount==maxGuesses) return \"/lose.jsp\";\n"
+"    return null;\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:80
+#, no-c-format
+msgid ""
+"Note that this results in a redirect. You can even specify parameters to be "
+"used in the redirect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:83
+#, no-c-format
+msgid ""
+"public String search() {\n"
+"    return \"/searchResults.jsp?searchPattern=#{searchAction.searchPattern}"
+"\";\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:84
+#, no-c-format
+msgid ""
+"The stateful model defines a set of transitions between a set of named, "
+"logical application states. In this model, it is possible to express the "
+"flow of any user interaction entirely in the jPDL pageflow definition, and "
+"write action listener methods that are completely unaware of the flow of the "
+"interaction."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:87
+#, no-c-format
+msgid "Here is an example page flow definition using jPDL:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:90
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"numberGuess\"&gt;\n"
+"    \n"
+"   &lt;start-page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"      &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"      &lt;/transition&gt;\n"
+"   &lt;/start-page&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess."
+"correctGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateRemainingGuesses\" expression=\"#{numberGuess."
+"lastGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"lose\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"displayGuess\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"lose\" view-id=\"/lose.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:99
+#, no-c-format
+msgid "There are two things we notice immediately here:"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:104
+#, no-c-format
+msgid ""
+"The JSF/Seam navigation rules are <emphasis>much</emphasis> simpler. "
+"(However, this obscures the fact that the underlying Java code is more "
+"complex.)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:109
+#, no-c-format
+msgid ""
+"The jPDL makes the user interaction immediately understandable, without us "
+"needing to even look at the JSP or Java code."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:114
+#, no-c-format
+msgid ""
+"In addition, the stateful model is more <emphasis>constrained</emphasis>. "
+"For each logical state (each step in the page flow), there are a constrained "
+"set of possible transitions to other states. The stateless model is an "
+"<emphasis>ad hoc</emphasis> model which is suitable to relatively "
+"unconstrained, freeform navigation where the user decides where he/she wants "
+"to go next, not the application."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:117
+#, no-c-format
+msgid ""
+"The stateful/stateless navigation distinction is quite similar to the "
+"traditional view of modal/modeless interaction. Now, Seam applications are "
+"not usually modal in the simple sense of the word - indeed, avoiding "
+"application modal behavior is one of the main reasons for having "
+"conversations! However, Seam applications can be, and often are, modal at "
+"the level of a particular conversation. It is well-known that modal behavior "
+"is something to avoid as much as possible; it is very difficult to predict "
+"the order in which your users are going to want to do things! However, there "
+"is no doubt that the stateful model has its place."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:120
+#, no-c-format
+msgid ""
+"The biggest contrast between the two models is the back-button behavior."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:126
+#, no-c-format
+msgid "Seam and the back button"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:127
+#, no-c-format
+msgid ""
+"When JSF or Seam navigation rules are used, Seam lets the user freely "
+"navigate via the back, forward and refresh buttons. It is the responsibility "
+"of the application to ensure that conversational state remains internally "
+"consistent when this occurs. Experience with the combination of web "
+"application frameworks like Struts or WebWork - that do not support a "
+"conversational model - and stateless component models like EJB stateless "
+"session beans or the Spring framework has taught many developers that this "
+"is close to impossible to do! However, our experience is that in the context "
+"of Seam, where there is a well-defined conversational model, backed by "
+"stateful session beans, it is actually quite straightforward. Usually it is "
+"as simple as combining the use of <literal>no-conversation-view-id</literal> "
+"with null checks at the beginning of action listener methods. We consider "
+"support for freeform navigation to be almost always desirable."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:130
+#, no-c-format
+msgid ""
+"In this case, the <literal>no-conversation-view-id</literal> declaration "
+"goes in <literal>pages.xml</literal>. It tells Seam to redirect to a "
+"different page if a request originates from a page rendered during a "
+"conversation, and that conversation no longer exists:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:133
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/checkout.xhtml\" \n"
+"        no-conversation-view-id=\"/main.xhtml\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:134
+#, no-c-format
+msgid ""
+"On the other hand, in the stateful model, backbuttoning is interpreted as an "
+"undefined transition back to a previous state. Since the stateful model "
+"enforces a defined set of transitions from the current state, back buttoning "
+"is be default disallowed in the stateful model! Seam transparently detects "
+"the use of the back button, and blocks any attempt to perform an action from "
+"a previous, \"stale\" page, and simply redirects the user to the \"current\" "
+"page (and displays a faces message). Whether you consider this a feature or "
+"a limitation of the stateful model depends upon your point of view: as an "
+"application developer, it is a feature; as a user, it might be frustrating! "
+"You can enable backbutton navigation from a particular page node by setting "
+"<literal>back=\"enabled\"</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:137
+#, no-c-format
+msgid ""
+"&lt;page name=\"checkout\" \n"
+"        view-id=\"/checkout.xhtml\" \n"
+"        back=\"enabled\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"checkout\"/&gt;\n"
+"    &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:138
+#, no-c-format
+msgid ""
+"This allows backbuttoning <emphasis>from</emphasis> the <literal>checkout</"
+"literal> state to <emphasis>any previous state!</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:141
+#, no-c-format
+msgid ""
+"Of course, we still need to define what happens if a request originates from "
+"a page rendered during a pageflow, and the conversation with the pageflow no "
+"longer exists. In this case, the <literal>no-conversation-view-id</literal> "
+"declaration goes into the pageflow definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:144
+#, no-c-format
+msgid ""
+"&lt;page name=\"checkout\" \n"
+"        view-id=\"/checkout.xhtml\" \n"
+"        back=\"enabled\" \n"
+"        no-conversation-view-id=\"/main.xhtml\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"checkout\"/&gt;\n"
+"    &lt;transition name=\"complete\" to=\"complete\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:151
+#, no-c-format
+msgid "Using jPDL pageflows"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:153
+#, no-c-format
+msgid "Installing pageflows"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:154
+#, no-c-format
+msgid ""
+"We need to install the Seam jBPM-related components, and tell them where to "
+"find our pageflow definition. We can specify this Seam configuration in "
+"<literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:157
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:pageflow-definitions&gt;\n"
+"        &lt;value&gt;pageflow.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:pageflow-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:158
+#, no-c-format
+msgid ""
+"The first line installs jBPM, the second points to a jPDL-based pageflow "
+"definition."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:164
+#, no-c-format
+msgid "Starting pageflows"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:165
+#, no-c-format
+msgid ""
+"We \"start\" a jPDL-based pageflow by specifying the name of the process "
+"definition using a <literal>@Begin</literal>, <literal>@BeginTask</literal> "
+"or <literal>@StartTask</literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:168
+#, no-c-format
+msgid ""
+"@Begin(pageflow=\"numberguess\")\n"
+"public void begin() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:169
+#, no-c-format
+msgid "Alternatively we can start a pageflow using pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:172
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"        &lt;begin-conversation pageflow=\"numberguess\"/&gt;\n"
+"    &lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:173
+#, no-c-format
+msgid ""
+"If we are beginning the pageflow during the <literal>RENDER_RESPONSE</"
+"literal> phase&mdash;during a <literal>@Factory</literal> or "
+"<literal>@Create</literal> method, for example&mdash;we consider ourselves "
+"to be already at the page being rendered, and use a <literal>&lt;start-"
+"page&gt;</literal> node as the first node in the pageflow, as in the example "
+"above."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:176
+#, no-c-format
+msgid ""
+"But if the pageflow is begun as the result of an action listener invocation, "
+"the outcome of the action listener determines which is the first page to be "
+"rendered. In this case, we use a <literal>&lt;start-state&gt;</literal> as "
+"the first node in the pageflow, and declare a transition for each possible "
+"outcome:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:179
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"viewEditDocument\"&gt;\n"
+"\n"
+"    &lt;start-state name=\"start\"&gt;\n"
+"        &lt;transition name=\"documentFound\" to=\"displayDocument\"/&gt;\n"
+"        &lt;transition name=\"documentNotFound\" to=\"notFound\"/&gt;\n"
+"    &lt;/start-state&gt;\n"
+"    \n"
+"    &lt;page name=\"displayDocument\" view-id=\"/document.jsp\"&gt;\n"
+"        &lt;transition name=\"edit\" to=\"editDocument\"/&gt;\n"
+"        &lt;transition name=\"done\" to=\"main\"/&gt;\n"
+"    &lt;/page&gt;\n"
+"    \n"
+"    ...\n"
+"    \n"
+"    &lt;page name=\"notFound\" view-id=\"/404.jsp\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"    &lt;/page&gt;\n"
+"    \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:183
+#, no-c-format
+msgid "Page nodes and transitions"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:184
+#, no-c-format
+msgid ""
+"Each <literal>&lt;page&gt;</literal> node represents a state where the "
+"system is waiting for user input:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:187
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"        &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:188
+#, no-c-format
+msgid ""
+"The <literal>view-id</literal> is the JSF view id. The <literal>&lt;redirect/"
+"&gt;</literal> element has the same effect as <literal>&lt;redirect/&gt;</"
+"literal> in a JSF navigation rule: namely, a post-then-redirect behavior, to "
+"overcome problems with the browser's refresh button. (Note that Seam "
+"propagates conversation contexts over these browser redirects. So there is "
+"no need for a Ruby on Rails style \"flash\" construct in Seam!)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:191
+#, no-c-format
+msgid ""
+"The transition name is the name of a JSF outcome triggered by clicking a "
+"command button or command link in <literal>numberGuess.jsp</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:194
+#, no-c-format
+msgid ""
+"&lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"guess\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:195
+#, no-c-format
+msgid ""
+"When the transition is triggered by clicking this button, jBPM will activate "
+"the transition action by calling the <literal>guess()</literal> method of "
+"the <literal>numberGuess</literal> component. Notice that the syntax used "
+"for specifying actions in the jPDL is just a familiar JSF EL expression, and "
+"that the transition action handler is just a method of a Seam component in "
+"the current Seam contexts. So we have exactly the same event model for jBPM "
+"events that we already have for JSF events! (The <emphasis>One Kind of "
+"Stuff</emphasis> principle.)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:198
+#, no-c-format
+msgid ""
+"In the case of a null outcome (for example, a command button with no "
+"<literal>action</literal> defined), Seam will signal the transition with no "
+"name if one exists, or else simply redisplay the page if all transitions "
+"have names. So we could slightly simplify our example pageflow and this "
+"button:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:201
+#, no-c-format
+msgid "&lt;h:commandButton type=\"submit\" value=\"Guess\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:202
+#, no-c-format
+msgid "Would fire the following un-named transition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:205
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;transition to=\"evaluateGuess\"&gt;\n"
+"        &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"    &lt;/transition&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:206
+#, no-c-format
+msgid ""
+"It is even possible to have the button call an action method, in which case "
+"the action outcome will determine the transition to be taken:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:209
+#, no-c-format
+msgid ""
+"&lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"#{numberGuess."
+"guess}\"/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:210
+#, no-c-format
+msgid ""
+"&lt;page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"    &lt;transition name=\"correctGuess\" to=\"win\"/&gt;\n"
+"    &lt;transition name=\"incorrectGuess\" to=\"evaluateGuess\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:211
+#, no-c-format
+msgid ""
+"However, this is considered an inferior style, since it moves responsibility "
+"for controlling the flow out of the pageflow definition and back into the "
+"other components. It is much better to centralize this concern in the "
+"pageflow itself."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:217
+#, no-c-format
+msgid "Controlling the flow"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:218
+#, no-c-format
+msgid ""
+"Usually, we don't need the more powerful features of jPDL when defining "
+"pageflows. We do need the <literal>&lt;decision&gt;</literal> node, however:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:221
+#, no-c-format
+msgid ""
+"&lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess.correctGuess}"
+"\"&gt;\n"
+"    &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"    &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"&lt;/decision&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:222
+#, no-c-format
+msgid ""
+"A decision is made by evaluating a JSF EL expression in the Seam contexts."
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:228
+#, no-c-format
+msgid "Ending the flow"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:229
+#, no-c-format
+msgid ""
+"We end the conversation using <literal>&lt;end-conversation&gt;</literal> or "
+"<literal>@End</literal>. (In fact, for readability, use of <emphasis>both</"
+"emphasis> is encouraged.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:232
+#, no-c-format
+msgid ""
+"&lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;end-conversation/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:233
+#, no-c-format
+msgid ""
+"Optionally, we can end a task, specify a jBPM <literal>transition</literal> "
+"name. In this case, Seam will signal the end of the current task in the "
+"overarching business process."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:236
+#, no-c-format
+msgid ""
+"&lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"    &lt;redirect/&gt;\n"
+"    &lt;end-task transition=\"success\"/&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:242
+#, no-c-format
+msgid "Business process management in Seam"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:243
+#, no-c-format
+msgid ""
+"A business process is a well-defined set of tasks that must be performed by "
+"users or software systems according to well-defined rules about "
+"<emphasis>who</emphasis> can perform a task, and <emphasis>when</emphasis> "
+"it should be performed. Seam's jBPM integration makes it easy to display "
+"lists of tasks to users and let them manage their tasks. Seam also lets the "
+"application store state associated with the business process in the "
+"<literal>BUSINESS_PROCESS</literal> context, and have that state made "
+"persistent via jBPM variables."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:246
+#, no-c-format
+msgid ""
+"A simple business process definition looks much the same as a page flow "
+"definition (<emphasis>One Kind of Stuff</emphasis>), except that instead of "
+"<literal>&lt;page&gt;</literal> nodes, we have <literal>&lt;task-node&gt;</"
+"literal> nodes. In a long-running business process, the wait states are "
+"where the system is waiting for some user to log in and perform a task."
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:249
+#, no-c-format
+msgid ""
+"&lt;process-definition name=\"todo\"&gt;\n"
+"   \n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"todo\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;task-node name=\"todo\"&gt;\n"
+"      &lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"         &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"      &lt;/task&gt;\n"
+"      &lt;transition to=\"done\"/&gt;\n"
+"   &lt;/task-node&gt;\n"
+"   \n"
+"   &lt;end-state name=\"done\"/&gt;\n"
+"   \n"
+"&lt;/process-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:260
+#, no-c-format
+msgid ""
+"It is perfectly possible that we might have both jPDL business process "
+"definitions and jPDL pageflow definitions in the same project. If so, the "
+"relationship between the two is that a single <literal>&lt;task&gt;</"
+"literal> in a business process corresponds to a whole pageflow <literal>&lt;"
+"pageflow-definition&gt;</literal>"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:265
+#, no-c-format
+msgid "Using jPDL business process definitions"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:267
+#, no-c-format
+msgid "Installing process definitions"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:268
+#, no-c-format
+msgid ""
+"We need to install jBPM, and tell it where to find the business process "
+"definitions:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:271
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;todo.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:275
+#, no-c-format
+msgid "Initializing actor ids"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:276
+#, no-c-format
+msgid ""
+"We always need to know what user is currently logged in. jBPM \"knows\" "
+"users by their <emphasis>actor id</emphasis> and <emphasis>group actor ids</"
+"emphasis>. We specify the current actor ids using the built in Seam "
+"component named <literal>actor</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:279
+#, no-c-format
+msgid ""
+"@In Actor actor;\n"
+"\n"
+"public String login() {\n"
+"    ...\n"
+"    actor.setId( user.getUserName() );\n"
+"    actor.getGroupActorIds().addAll( user.getGroupNames() );\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:283
+#, no-c-format
+msgid "Initiating a business process"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:284
+#, no-c-format
+msgid ""
+"To initiate a business process instance, we use the <literal>@CreateProcess</"
+"literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:287
+#, no-c-format
+msgid ""
+"@CreateProcess(definition=\"todo\")\n"
+"public void createTodo() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:288
+#, no-c-format
+msgid "Alternatively we can initiate a business process using pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:291
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;create-process definition=\"todo\" /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:295
+#, no-c-format
+msgid "Task assignment"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:296
+#, no-c-format
+msgid ""
+"When a process starts, task instances are created. These must be assigned to "
+"users or user groups. We can either hardcode our actor ids, or delegate to a "
+"Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:299
+#, no-c-format
+msgid ""
+"&lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"    &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"&lt;/task&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:300
+#, no-c-format
+msgid ""
+"In this case, we have simply assigned the task to the current user. We can "
+"also assign tasks to a pool:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:303
+#, no-c-format
+msgid ""
+"&lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"    &lt;assignment pooled-actors=\"employees\"/&gt;\n"
+"&lt;/task&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:307
+#, no-c-format
+msgid "Task lists"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:308
+#, no-c-format
+msgid ""
+"Several built-in Seam components make it easy to display task lists. The "
+"<literal>pooledTaskInstanceList</literal> is a list of pooled tasks that "
+"users may assign to themselves:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:311
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{pooledTaskInstanceList}\" var=\"task\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Description&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{task.description}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link action=\"#{pooledTask.assignToCurrentActor}\" value="
+"\"Assign\" taskInstance=\"#{task}\"/&gt;\n"
+"    &lt;/h:column&gt;            \n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:312
+#, no-c-format
+msgid ""
+"Note that instead of <literal>&lt;s:link&gt;</literal> we could have used a "
+"plain JSF <literal>&lt;h:commandLink&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:315
+#, no-c-format
+msgid ""
+"&lt;h:commandLink action=\"#{pooledTask.assignToCurrentActor}\"&gt; \n"
+"    &lt;f:param name=\"taskId\" value=\"#{task.id}\"/&gt;\n"
+"&lt;/h:commandLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:316
+#, no-c-format
+msgid ""
+"The <literal>pooledTask</literal> component is a built-in component that "
+"simply assigns the task to the current user."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:319
+#, no-c-format
+msgid ""
+"The <literal>taskInstanceListByType</literal> component includes tasks of a "
+"particular type that are assigned to the current user:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:322
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{taskInstanceListByType['todo']}\" var=\"task"
+"\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Description&lt;/f:facet&gt;\n"
+"        &lt;h:outputText value=\"#{task.description}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;s:link action=\"#{todoList.start}\" value=\"Start Work\" "
+"taskInstance=\"#{task}\"/&gt;\n"
+"    &lt;/h:column&gt;            \n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jbpm.xml:326
+#, no-c-format
+msgid "Performing a task"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:327
+#, no-c-format
+msgid ""
+"To begin work on a task, we use either <literal>@StartTask</literal> or "
+"<literal>@BeginTask</literal> on the listener method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:330
+#, no-c-format
+msgid ""
+"@StartTask\n"
+"public String start() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:331
+#, no-c-format
+msgid "Alternatively we can begin work on a task using pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:334
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;start-task /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:335
+#, no-c-format
+msgid ""
+"These annotations begin a special kind of conversation that has significance "
+"in terms of the overarching business process. Work done by this conversation "
+"has access to state held in the business process context."
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:338
+#, no-c-format
+msgid ""
+"If we end the conversation using <literal>@EndTask</literal>, Seam will "
+"signal the completion of the task:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:341
+#, no-c-format
+msgid ""
+"@EndTask(transition=\"completed\")\n"
+"public String completed() { ... }"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:342
+#, no-c-format
+msgid "Alternatively we can use pages.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jbpm.xml:345
+#, no-c-format
+msgid ""
+"&lt;page&gt;\n"
+"    &lt;end-task transition=\"completed\" /&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:346
+#, no-c-format
+msgid ""
+"(Alternatively, we could have used <literal>&lt;end-conversation&gt;</"
+"literal> as shown above.)"
+msgstr ""
+
+#. Tag: para
+#: Jbpm.xml:349
+#, no-c-format
+msgid ""
+"At this point, jBPM takes over and continues executing the business process "
+"definition. (In more complex processes, several tasks might need to be "
+"completed before process execution can resume.)"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Jms.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Jms.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Jms.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,477 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Jms.xml:10
+#, no-c-format
+msgid "Asynchronicity and messaging"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:11
+#, no-c-format
+msgid ""
+"Seam makes it very easy to perform work asynchronously from a web request. "
+"When most people think of asynchronicity in Java EE, they think of using "
+"JMS. This is certainly one way to approach the problem in Seam, and is the "
+"right way when you have strict and well-defined quality of service "
+"requirements. Seam makes it easy to send and recieve JMS messages using Seam "
+"components."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:14
+#, no-c-format
+msgid ""
+"But for many usecases, JMS is overkill. Seam layers a simple asynchronous "
+"method and event facility over the EJB 3.0 timer service."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:17
+#, no-c-format
+msgid "Asynchronicity"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:18
+#, no-c-format
+msgid ""
+"Asynchronous events and method calls have the same quality of service "
+"expectations as the container's EJB timer service. If you're not familiar "
+"with the Timer service, don't worry, you don't need to interact with it "
+"directly if you want to use asynchronous methods in Seam."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:21
+#, no-c-format
+msgid ""
+"To use asynchronous methods and events, you need to add the following line "
+"to <literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:24
+#, no-c-format
+msgid "&lt;core:dispatcher/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:25
+#, no-c-format
+msgid ""
+"Note that this functionality is not available in environments which do not "
+"support EJB 3.0."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:28
+#, no-c-format
+msgid "Asynchronous methods"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:29
+#, no-c-format
+msgid ""
+"In simplest form, an asynchronous call just lets a method call be processed "
+"asynchronously (in a different thread) from the caller. We usually use an "
+"asynchronous call when we want to return an immediate response to the "
+"client, and let some expensive work be processed in the background. This "
+"pattern works very well in applications which use AJAX, where the client can "
+"automatically poll the server for the result of the work."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:32
+#, no-c-format
+msgid ""
+"For EJB components, we annotate the local interface to specify that a method "
+"is processed asynchronously."
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:35
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public void processPayment(Payment payment);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:36
+#, no-c-format
+msgid ""
+"(For JavaBean components we can annotate the component implementation class "
+"if we like.)"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:39
+#, no-c-format
+msgid "The use of asynchronicity is transparent to the bean class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:42
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"paymentHandler\")\n"
+"public class PaymentHandlerBean implements PaymentHandler\n"
+"{\n"
+"    public void processPayment(Payment payment)\n"
+"    {\n"
+"        //do some work!\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:43
+#, no-c-format
+msgid "And also transparent to the client:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:46
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String pay()\n"
+"    {\n"
+"        paymentHandler.processPayment( new Payment(bill) );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:47
+#, no-c-format
+msgid ""
+"The asynchronous method is processed in a completely new event context and "
+"does not have access to the session or conversation context state of the "
+"caller. However, the business process context <emphasis>is</emphasis> "
+"propagated."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:50
+#, no-c-format
+msgid ""
+"Asynchronous method calls may be scheduled for later execution using the "
+"<literal>@Duration</literal>, <literal>@Expiration</literal> and "
+"<literal>@IntervalDuration</literal> annotations."
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:53
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public void processScheduledPayment(Payment payment, @Expiration Date "
+"date);\n"
+"\n"
+"    @Asynchronous\n"
+"    public void processRecurringPayment(Payment payment, @Expiration Date "
+"date, \n"
+"        @IntervalDuration Long interval)'\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:54
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String schedulePayment()\n"
+"    {\n"
+"        paymentHandler.processScheduledPayment( new Payment(bill), bill."
+"getDueDate() );\n"
+"        return \"success\";\n"
+"    }\n"
+"\n"
+"    public String scheduleRecurringPayment()\n"
+"    {\n"
+"        paymentHandler.processRecurringPayment( new Payment(bill), bill."
+"getDueDate(), ONE_MONTH );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:55
+#, no-c-format
+msgid ""
+"Both client and server may access the <literal>Timer</literal> object "
+"associated with the invocation."
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:58
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface PaymentHandler\n"
+"{\n"
+"    @Asynchronous\n"
+"    public Timer processScheduledPayment(Payment payment, @Expiration Date "
+"date);\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:59
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"paymentHandler\")\n"
+"public class PaymentHandlerBean implements PaymentHandler\n"
+"{\n"
+"    @In Timer timer;\n"
+"    \n"
+"    public Timer processScheduledPayment(Payment payment, @Expiration Date "
+"date)\n"
+"    {\n"
+"        //do some work!\n"
+"        \n"
+"        return timer; //note that return value is completely ignored\n"
+"    }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:60
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"paymentAction\")\n"
+"public class CreatePaymentAction\n"
+"{\n"
+"    @In(create=true) PaymentHandler paymentHandler;\n"
+"    @In Bill bill;\n"
+"    \n"
+"    public String schedulePayment()\n"
+"    {\n"
+"        Timer timer = paymentHandler.processScheduledPayment( new Payment"
+"(bill), bill.getDueDate() );\n"
+"        return \"success\";\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:61
+#, no-c-format
+msgid "Asynchronous methods cannot return any other value to the caller."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:64
+#, no-c-format
+msgid "Asynchronous events"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:65
+#, no-c-format
+msgid ""
+"Component-driven events may also be asynchronous. To raise an event for "
+"asynchronous processing, simply call the <literal>raiseAsynchronousEvent()</"
+"literal> methods of the <literal>Events</literal> class. To schedule a timed "
+"event, call one of the <literal>raiseTimedEvent()</literal> methods. "
+"Components may observe asynchronous events in the usual way, but remember "
+"that only the business process context is propagated to the asynchronous "
+"thread."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:68
+#, no-c-format
+msgid "Messaging in Seam"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:69
+#, no-c-format
+msgid ""
+"Seam makes it easy to send and receive JMS messages to and from Seam "
+"components."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:72
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:73
+#, no-c-format
+msgid ""
+"To configure Seam's infrastructure for sending JMS messages, you need to "
+"tell Seam about any topics and queues you want to send messages to, and also "
+"tell Seam where to find the <literal>QueueConnectionFactory</literal> and/or "
+"<literal>TopicConnectionFactory</literal>."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:76
+#, no-c-format
+msgid ""
+"Seam defaults to using <literal>UIL2ConnectionFactory</literal> which is the "
+"usual connection factory for use with JBossMQ. If you are using some other "
+"JMS provider, you need to set one or both of <literal>queueConnection."
+"queueConnectionFactoryJndiName</literal> and <literal>topicConnection."
+"topicConnectionFactoryJndiName</literal> in <literal>seam.properties</"
+"literal>, <literal>web.xml</literal> or <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:79
+#, no-c-format
+msgid ""
+"You also need to list topics and queues in <literal>components.xml</literal> "
+"to install Seam managed <literal>TopicPublisher</literal>s and "
+"<literal>QueueSender</literal>s:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:82
+#, no-c-format
+msgid ""
+"&lt;jms:managed-topic-publisher name=\"stockTickerPublisher\" auto-create="
+"\"true\" \n"
+"    topic-jndi-name=\"topic/stockTickerTopic\"/&gt;\n"
+"\n"
+"&lt;jms:managed-queue-sender name=\"paymentQueueSender\" auto-create=\"true"
+"\" \n"
+"    queue-jndi-name=\"queue/paymentQueue\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:83
+#, no-c-format
+msgid "Sending messages"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:84
+#, no-c-format
+msgid ""
+"Now, you can inject a JMS <literal>TopicPublisher</literal> and "
+"<literal>TopicSession</literal> into any component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:87
+#, no-c-format
+msgid ""
+"@In \n"
+"private TopicPublisher stockTickerPublisher;   \n"
+"@In \n"
+"private TopicSession topicSession;\n"
+"\n"
+"public void publish(StockPrice price) {\n"
+"      try\n"
+"      {\n"
+"         topicPublisher.publish( topicSession.createObjectMessage(price) );\n"
+"      } \n"
+"      catch (Exception ex)\n"
+"      {\n"
+"         throw new RuntimeException(ex);\n"
+"      } \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:88
+#, no-c-format
+msgid "Or, for working with a queue:"
+msgstr ""
+
+#. Tag: programlisting
+#: Jms.xml:91
+#, no-c-format
+msgid ""
+"@In\n"
+"private QueueSender paymentQueueSender;   \n"
+"@In\n"
+"private QueueSession queueSession;\n"
+"\n"
+"public void publish(Payment payment) {\n"
+"      try\n"
+"      {\n"
+"         paymentQueueSender.send( queueSession.createObjectMessage"
+"(payment) );\n"
+"      } \n"
+"      catch (Exception ex)\n"
+"      {\n"
+"         throw new RuntimeException(ex);\n"
+"      } \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:92
+#, no-c-format
+msgid "Receiving messages using a message-driven bean"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:93
+#, no-c-format
+msgid ""
+"You can process messages using any EJB3 message driven bean. Message-driven "
+"beans may even be Seam components, in which case it is possible to inject "
+"other event and application scoped Seam components."
+msgstr ""
+
+#. Tag: title
+#: Jms.xml:96
+#, no-c-format
+msgid "Receiving messages in the client"
+msgstr ""
+
+#. Tag: para
+#: Jms.xml:97
+#, no-c-format
+msgid ""
+"Seam Remoting lets you subscribe to a JMS topic from client-side JavaScript. "
+"This is described in the next chapter."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Mail.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Mail.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Mail.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,985 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Mail.xml:10
+#, no-c-format
+msgid "Email"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:11
+#, no-c-format
+msgid ""
+"Seam now includes an optional components for templating and sending emails."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:14
+#, no-c-format
+msgid ""
+"Email support is provided by <literal>jboss-seam-mail.jar</literal>. This "
+"JAR contains the mail JSF controls, which are used to construct emails, and "
+"the <literal>mailSession</literal> manager component."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:17
+#, no-c-format
+msgid ""
+"The examples/mail project contains an example of the email support in "
+"action. It demonstrates proper packaging, and it contains a number of "
+"example that demonstrate the key features currently supported."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:21
+#, no-c-format
+msgid "Creating a message"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:22
+#, no-c-format
+msgid ""
+"You don't need to learn a whole new templating language to use Seam "
+"Mail&mdash;an email is just facelet!"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:25
+#, no-c-format
+msgid ""
+"&lt;m:message xmlns=\"http://www.w3.org/1999/xhtml\"\n"
+"    xmlns:m=\"http://jboss.com/products/seam/mail\"\n"
+"    xmlns:h=\"http://java.sun.com/jsf/html\"&gt;\n"
+"  \n"
+"    &lt;m:from name=\"Peter\" address=\"peter at example.com\" /&gt;\n"
+"    &lt;m:to name=\"#{person.firstname} #{person.lastname}\"&gt;#{person."
+"address}&lt;/m:to&gt;\n"
+"    &lt;m:subject&gt;Try out Seam!&lt;/m:subject&gt;\n"
+"    \n"
+"    &lt;m:body&gt;\n"
+"        &lt;p&gt;&lt;h:outputText value=\"Dear #{person.firstname}\" /&gt;,"
+"&lt;/p&gt;\n"
+"        &lt;p&gt;You can try out Seam by visiting \n"
+"        &lt;a href=\"http://labs.jboss.com/jbossseam\"&gt;http://labs.jboss."
+"com/jbossseam&lt;/a&gt;.&lt;/p&gt;\n"
+"        &lt;p&gt;Regards,&lt;/p&gt;\n"
+"        &lt;p&gt;Peter&lt;/p&gt;\n"
+"    &lt;/m:body&gt;\n"
+"    \n"
+"&lt;/m:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:26
+#, no-c-format
+msgid ""
+"The <literal>&lt;m:message&gt;</literal> tag wraps the whole message, and "
+"tells Seam to start rendering an email. Inside the <literal>&lt;m:message&gt;"
+"</literal> tag we use an <literal>&lt;m:from&gt;</literal> tag to set who "
+"the message is from, a <literal>&lt;m:to&gt;</literal> tag to specify a "
+"sender (notice how we use EL as we would in a normal facelet), and a "
+"<literal>&lt;m:subject&gt;</literal> tag."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:29
+#, no-c-format
+msgid ""
+"The <literal>&lt;m:body&gt;</literal> tag wraps the body of the email. You "
+"can use regular HTML tags inside the body as well as JSF components."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:32
+#, no-c-format
+msgid ""
+"So, now you have your email template, how do you go about sending it? Well, "
+"at the end of rendering the <literal>m:message</literal> the "
+"<literal>mailSession</literal> is called to send the email, so all you have "
+"to do is ask Seam to render the view:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:35
+#, no-c-format
+msgid ""
+"@In(create=true)\n"
+"private Renderer renderer;\n"
+"   \n"
+"public void send() {\n"
+"    try {\n"
+"       renderer.render(\"/simple.xhtml\");\n"
+"       facesMessages.add(\"Email sent successfully\");\n"
+"   } \n"
+"   catch (Exception e) {\n"
+"       facesMessages.add(\"Email sending failed: \" + e.getMessage());\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:36
+#, no-c-format
+msgid ""
+"If, for example, you entered an invalid email address, then an exception "
+"would be thrown, which is caught and then displayed to the user."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:40
+#, no-c-format
+msgid "Attachments"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:41
+#, no-c-format
+msgid ""
+"Seam makes it easy to attach files to an email. It supports most of the "
+"standard java types used when working with files."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:44
+#, no-c-format
+msgid "If you wanted to email the <literal>jboss-seam-mail.jar</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:47
+#, no-c-format
+msgid "&lt;m:attachment value=\"/WEB-INF/lib/jboss-seam-mail.jar\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:48
+#, no-c-format
+msgid ""
+"Seam will load the file from the classpath, and attach it to the email. By "
+"default it would be attached as <literal>jboss-seam-mail.jar</literal>; if "
+"you wanted it to have another name you would just add the <literal>fileName</"
+"literal> attribute:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:51
+#, no-c-format
+msgid ""
+"&lt;m:attachment value=\"/WEB-INF/lib/jboss-seam-mail.jar\" fileName=\"this-"
+"is-so-cool.jar\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:52
+#, no-c-format
+msgid ""
+"You could also attach a <literal>java.io.File</literal>, a <literal>java.net."
+"URL</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:55
+#, no-c-format
+msgid "&lt;m:attachment value=\"#{numbers}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:56
+#, no-c-format
+msgid ""
+"Or a <literal>byte[]</literal> or a <literal>java.io.InputStream</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:59
+#, no-c-format
+msgid ""
+"&lt;m:attachment value=\"#{person.photo}\" contentType=\"image/png\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:60
+#, no-c-format
+msgid ""
+"You'll notice that for a <literal>byte[]</literal> and a <literal>java.io."
+"InputStream</literal> you need to specify the MIME type of the attachment "
+"(as that information is not carried as part of the file)."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:63
+#, no-c-format
+msgid ""
+"And it gets even better, you can attach a Seam generated PDF, or any "
+"standard JSF view, just by wrapping a <literal>&lt;m:attachment&gt;</"
+"literal> around the normal tags you would use:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:66
+#, no-c-format
+msgid ""
+"&lt;m:attachment fileName=\"tiny.pdf\"&gt;\n"
+"    &lt;p:"
+"document&gt;                                                      \n"
+"        A very tiny "
+"PDF                                                                                                \n"
+"    &lt;/p:document&gt;\n"
+"&lt;/m:attachment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:67
+#, no-c-format
+msgid ""
+"If you had a set of files you wanted to attach (for example a set of "
+"pictures loaded from a database) you can just use a <literal>&lt;ui:"
+"repeat&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:70
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{people}\" var=\"person\"&gt;\n"
+"    &lt;m:attachment value=\"#{person.photo}\" contentType=\"image/jpeg\"\n"
+"    fileName=\"#{person.firstname}_#{person.lastname}.jpg\"/&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:74
+#, no-c-format
+msgid "HTML/Text alternative part"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:75
+#, no-c-format
+msgid ""
+"Whilst most mail readers nowadays support HTML, some don't, so you can add a "
+"plain text alternative to your email body:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:78
+#, no-c-format
+msgid ""
+"&lt;m:body&gt;\n"
+"    &lt;f:facet name=\"alternative\"&gt;Sorry, your email reader can't show "
+"our fancy email, \n"
+"please go to http://labs.jboss.com/jbossseam to explore Seam.&lt;/f:"
+"facet&gt;\n"
+"&lt;/m:body&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:82
+#, no-c-format
+msgid "Multiple recipients"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:83
+#, no-c-format
+msgid ""
+"Often you'll want to send an email to a group of recipients (for example "
+"your users). All of the recipient mail tags can be placed inside a "
+"<literal>&lt;ui:repeat&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:86
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{allUsers} var=\"user\"&gt;\n"
+"    &lt;m:to name=\"#{user.firstname} #{user.lastname}\" address=\"#{user."
+"emailAddress}\" /&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:90
+#, no-c-format
+msgid "Multiple messages"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:91
+#, no-c-format
+msgid ""
+"Sometimes, however, you need to send a slightly different message to each "
+"recipient (e.g. a password reset). The best way to do this is to place the "
+"whole message inside a <literal>&lt;ui:repeat&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:94
+#, no-c-format
+msgid ""
+"&lt;ui:repeat value=\"#{people}\" var=\"p\"&gt;\n"
+"    &lt;m:message&gt;\n"
+"        &lt;m:from name=\"#{person.firstname} #{person.lastname}\"&gt;#"
+"{person.address}&lt;/m:from&gt;\n"
+"        &lt;m:to name=\"#{p.firstname}\"&gt;#{p.address}&lt;/m:to&gt;\n"
+"            ...\n"
+"    &lt;/m:message&gt;\n"
+"&lt;/ui:repeat&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:98
+#, no-c-format
+msgid "Templating"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:99
+#, no-c-format
+msgid ""
+"The mail templating example shows that facelets templating Just Works with "
+"the Seam mail tags."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:102
+#, no-c-format
+msgid "Our <literal>template.xhtml</literal> contains:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:105
+#, no-c-format
+msgid ""
+"&lt;m:message&gt;\n"
+"   &lt;m:from name=\"Seam\" address=\"do-not-reply at jboss.com\" /&gt;\n"
+"   &lt;m:to name=\"#{person.firstname} #{person.lastname}\"&gt;#{person."
+"address}&lt;/m:to&gt;\n"
+"   &lt;m:subject&gt;#{subject}&lt;/m:subject&gt;\n"
+"   &lt;m:body&gt;\n"
+"       &lt;html&gt;\n"
+"           &lt;body&gt;\n"
+"               &lt;ui:insert name=\"body\"&gt;This is the default body, "
+"specified by the template.\n"
+"               &lt;/ui:insert&gt;\n"
+"           &lt;/body&gt;\n"
+"       &lt;/html&gt;\n"
+"   &lt;/m:body&gt;\n"
+"&lt;/m:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:106
+#, no-c-format
+msgid "Our <literal>templating.xhtml</literal> contains:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:109
+#, no-c-format
+msgid ""
+"&lt;ui:param name=\"subject\" value=\"Templating with Seam Mail\"/&gt;\n"
+"&lt;ui:define name=\"body\"&gt;\n"
+"    &lt;p&gt;This example demonstrates that you can easily use &lt;i&gt;"
+"facelets templating&lt;/i&gt; in email!&lt;/p&gt;\n"
+"&lt;/ui:define&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:113
+#, no-c-format
+msgid "Other Headers"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:114
+#, no-c-format
+msgid ""
+"Sometimes you'll want to add other headers to your email. Seam provides "
+"support for some (see <xref linkend=\"Email-Tags\"/>). For example, we can "
+"set the importance of the email, and ask for a read receipt:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:117
+#, no-c-format
+msgid ""
+"&lt;m:message xmlns:m=\"http://jboss.com/products/seam/mail\"\n"
+"           importance=\"low\"\n"
+"           requestReadReceipt=\"true\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:118
+#, no-c-format
+msgid ""
+"Otherise you can add any header to the message using the <literal>&lt;m:"
+"header&gt;</literal> tag:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:121
+#, no-c-format
+msgid "&lt;m:header name=\"X-Sent-From\" value=\"JBoss Seam\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:127
+#, no-c-format
+msgid "Receiving emails"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:128
+#, no-c-format
+msgid ""
+"If you are using EJB then you can use a MDB (Message Driven Bean) to receive "
+"email. Seam comes with an improved version of <literal>mail-ra.rar</literal> "
+"as distributed in JBoss AS; until the improvements make there way into a "
+"released version of JBoss AS, replacing the default <literal>rar</literal> "
+"with the one distributed with Seam is recommended."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:131
+#, no-c-format
+msgid "You can configure it like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:134
+#, no-c-format
+msgid ""
+"@MessageDriven(activationConfig={\n"
+"         @ActivationConfigProperty(propertyName=\"mailServer\", "
+"propertyValue=\"localhost\"),\n"
+"         @ActivationConfigProperty(propertyName=\"mailFolder\", "
+"propertyValue=\"INBOX\"),\n"
+"         @ActivationConfigProperty(propertyName=\"storeProtocol\", "
+"propertyValue=\"pop3\"),\n"
+"         @ActivationConfigProperty(propertyName=\"userName\", propertyValue="
+"\"seam\"),\n"
+"         @ActivationConfigProperty(propertyName=\"password\", propertyValue="
+"\"seam\")\n"
+"})\n"
+"@ResourceAdapter(\"mail-ra.rar\")\n"
+"@Name(\"mailListener\")\n"
+"public class MailListenerMDB implements MailListener {\n"
+"\n"
+"   @In(create=true)\n"
+"   private OrderProcessor orderProcessor;\n"
+"\n"
+"   public void onMessage(Message message) {\n"
+"      // Process the message\n"
+"      orderProcessor.process(message.getSubject());\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:135
+#, no-c-format
+msgid ""
+"Each message received will cause <literal>onMessage(Message message)</"
+"literal> to be called. Most seam annotations will work inside a MDB but you "
+"musn't access the persistence context."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:138
+#, no-c-format
+msgid ""
+"You can find more information on the default <literal>mail-ra.rar</literal> "
+"at <ulink url=\"http://wiki.jboss.org/wiki/Wiki.jsp?page=InboundJavaMail"
+"\">http://wiki.jboss.org/wiki/Wiki.jsp?page=InboundJavaMail</ulink>. The "
+"version distributed with Seam also includes a <literal>debug</literal> "
+"property to enable JavaMail debugging, a <literal>flush</literal> property "
+"(by default true) to disable flushing a <literal>POP3</literal> mailbox "
+"after successfullying delivering a message to your MDB and a <literal>port</"
+"literal> property to override the default TCP port. Beware that the api for "
+"this may be altered as changes make there way into JBoss AS."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:141
+#, no-c-format
+msgid ""
+"If you aren't using JBoss AS you can still use <literal>mail-ra.rar</"
+"literal> (included with Seam in the mail directory), or you may find your "
+"application server includes a similar adapter."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:147
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:148
+#, no-c-format
+msgid ""
+"To include Email support in your application, include <literal>jboss-seam-"
+"mail.jar</literal> in your WEB-INF/lib directory. If you are using JBoss AS "
+"there is no further configuration needed to use Seam's email support. "
+"Otherwise you need to make sure you have the JavaMail API, an implementation "
+"of the JavaMail API present (the API and impl used in JBoss AS are "
+"distributed with seam as <literal>lib/mail.jar</literal>), and a copy of the "
+"Java Activation Framework (distributed with seam as <literal>lib/activation."
+"jar</literal>."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:151
+#, no-c-format
+msgid ""
+"The Seam Email module requires the use of Facelets as the view technology. "
+"Future versions of the library may also support the use of JSP. "
+"Additionally, it requires the use of the seam-ui package."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:154
+#, no-c-format
+msgid ""
+"The <literal>mailSession</literal> component uses JavaMail to talk to a "
+"'real' SMTP server."
+msgstr ""
+
+#. Tag: literal
+#: Mail.xml:158
+#, no-c-format
+msgid "mailSession"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:159
+#, no-c-format
+msgid ""
+"A JavaMail Session may be available via a JNDI lookup if you are working in "
+"an JEE environment or you can use a Seam configured Session."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:162
+#, no-c-format
+msgid ""
+"The mailSession component's properties are described in more detail in <xref "
+"linkend=\"Built_in_Seam_components-Mail_related_components\"/>."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:166
+#, no-c-format
+msgid "JNDI lookup in JBoss AS"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:167
+#, no-c-format
+msgid ""
+"The JBossAS <literal>deploy/mail-service.xml</literal> configures a JavaMail "
+"session binding into JNDI. The default service configuration will need "
+"altering for your network. <ulink url=\"http://wiki.jboss.org/wiki/Wiki.jsp?"
+"page=JavaMail\">http://wiki.jboss.org/wiki/Wiki.jsp?page=JavaMail</ulink> "
+"describes the service in more detail."
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:170
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"        xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"        xmlns:mail=\"http://jboss.com/products/seam/mail\"&gt;\n"
+"        \n"
+"    &lt;mail:mail-session session-jndi-name=\"java:/Mail\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:171
+#, no-c-format
+msgid ""
+"Here we tell Seam to get the mail session bound to <literal>java:/Mail</"
+"literal> from JNDI."
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:177
+#, no-c-format
+msgid "Seam configured Session"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:178
+#, no-c-format
+msgid ""
+"A mail session can be configured via <literal>components.xml</literal>. Here "
+"we tell Seam to use <literal>smtp.example.com</literal> as the smtp server,"
+msgstr ""
+
+#. Tag: programlisting
+#: Mail.xml:181
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"        xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"        xmlns:mail=\"http://jboss.com/products/seam/mail\"&gt;\n"
+"        \n"
+"    &lt;mail:mail-session host=\"smtp.example.com\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: title
+#: Mail.xml:189
+#, no-c-format
+msgid "Tags"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:190
+#, no-c-format
+msgid ""
+"Emails are generated using tags in the <literal>http://jboss.com/products/"
+"seam/mail</literal> namespace. Documents should always have the "
+"<literal>message</literal> tag at the root of the message. The message tag "
+"prepares Seam to generate an email."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:193
+#, no-c-format
+msgid ""
+"The standard templating tags of facelets can be used as normal. Inside the "
+"body you can use any JSF tag which doesn't require access to external "
+"resources (stylesheets, javascript)."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:198
+#, no-c-format
+msgid "&lt;m:message&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:200
+#, no-c-format
+msgid "Root tag of a mail message"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:205
+#, no-c-format
+msgid ""
+"<literal>importance</literal> &mdash; low, normal or high. By default "
+"normal, this sets the importance of the mail message."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:210
+#, no-c-format
+msgid ""
+"<literal>precedence</literal> &mdash; sets the precedence of the message (e."
+"g. bulk)."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:215
+#, no-c-format
+msgid ""
+"<literal>requestReadReceipt</literal> &mdash; by default false, if set, a "
+"read receipt will be request will be added, with the read receipt being sent "
+"to the <literal>From:</literal> address."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:220
+#, no-c-format
+msgid ""
+"<literal>urlBase</literal> &mdash; If set, the value is prepended to the "
+"<literal>requestContextPath</literal> allowing you to use components such as "
+"<literal>&lt;h:graphicImage&gt;</literal> in your emails."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:228
+#, no-c-format
+msgid "&lt;m:from&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:230
+#, no-c-format
+msgid ""
+"Set's the From: address for the email. You can only have one of these per "
+"email."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:235
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the name the email should come from."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:240 Mail.xml:255
+#, no-c-format
+msgid ""
+"<literal>address</literal> &mdash; the email address the email should come "
+"from."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:248
+#, no-c-format
+msgid "&lt;m:replyTo&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:250
+#, no-c-format
+msgid ""
+"Set's the Reply-to: address for the email. You can only have one of these "
+"per email."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:263
+#, no-c-format
+msgid "&lt;m:to&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:265
+#, no-c-format
+msgid ""
+"Add a recipient to the email. Use multiple &lt;m:to&gt; tags for multiple "
+"recipients. This tag can be safely placed inside a repeat tag such as &lt;ui:"
+"repeat&gt;."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:270 Mail.xml:290 Mail.xml:310
+#, no-c-format
+msgid "<literal>name</literal> &mdash; the name of the recipient."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:275 Mail.xml:295 Mail.xml:315
+#, no-c-format
+msgid "<literal>address</literal> &mdash; the email address of the recipient."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:283
+#, no-c-format
+msgid "&lt;m:cc&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:285
+#, no-c-format
+msgid ""
+"Add a cc recipient to the email. Use multiple &lt;m:cc&gt; tags for multiple "
+"ccs. This tag can be safely placed inside a repeat tag such as &lt;ui:"
+"repeat&gt;."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:303
+#, no-c-format
+msgid "&lt;m:bcc&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:305
+#, no-c-format
+msgid ""
+"Add a bcc recipient to the email. Use multiple &lt;m:bcc&gt; tags for "
+"multiple bccs. This tag can be safely placed inside a repeat tag such as &lt;"
+"ui:repeat&gt;."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:323
+#, no-c-format
+msgid "&lt;m:header&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:325
+#, no-c-format
+msgid ""
+"Add a header to the email (e.g. <literal>X-Sent-From: JBoss Seam</literal>"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:330
+#, no-c-format
+msgid ""
+"<literal>name</literal> &mdash; The name of the header to add (e.g. "
+"<literal>X-Sent-From</literal>)."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:335
+#, no-c-format
+msgid ""
+"<literal>value</literal> &mdash; The value of the header to add (e.g. "
+"<literal>JBoss Seam</literal>)."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:343
+#, no-c-format
+msgid "&lt;m:attachment&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:345
+#, no-c-format
+msgid "Add an attachment to the email."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:350
+#, no-c-format
+msgid "<literal>value</literal> &mdash; The file to attach:"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:355
+#, no-c-format
+msgid ""
+"<literal>String</literal> &mdash; A <literal>String</literal> is interpreted "
+"as a path to file within the classpath"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:360
+#, no-c-format
+msgid ""
+"<literal>java.io.File</literal> &mdash; An EL expression can reference a "
+"<literal>File</literal> object"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:365
+#, no-c-format
+msgid ""
+"<literal>java.net.URL</literal> &mdash; An EL expression can reference a "
+"<literal>URL</literal> object"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:370
+#, no-c-format
+msgid ""
+"<literal>java.io.InputStream</literal> &mdash; An EL expression can "
+"reference an <literal>InputStream</literal>. In this case both a "
+"<literal>fileName</literal> and a <literal>contentType</literal> must be "
+"specified."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:375
+#, no-c-format
+msgid ""
+"<literal>byte[]</literal> &mdash; An EL expression can reference an "
+"<literal>byte[]</literal>. In this case both a <literal>fileName</literal> "
+"and a <literal>contentType</literal> must be specified."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:380
+#, no-c-format
+msgid "If the value attribute is ommitted:"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:385
+#, no-c-format
+msgid ""
+"If this tag contains a <literal>&lt;p:document&gt;</literal> tag, the "
+"document described will be generated and attached to the email. A "
+"<literal>fileName</literal> should be specfied."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:390
+#, no-c-format
+msgid ""
+"If this tag contains other JSF tags a HTML document will be generated from "
+"them and attached to the email. A <literal>fileName</literal> should be "
+"specfied."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:397
+#, no-c-format
+msgid ""
+"<literal>fileName</literal> &mdash; Specify the file name to use for the "
+"attached file."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:402
+#, no-c-format
+msgid ""
+"<literal>contentType</literal> &mdash; Specify the MIME type of the attached "
+"file"
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:410
+#, no-c-format
+msgid "&lt;m:subject&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:412
+#, no-c-format
+msgid "Set's the subject for the email."
+msgstr ""
+
+#. Tag: term
+#: Mail.xml:418
+#, no-c-format
+msgid "&lt;m:body&gt;"
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:420
+#, no-c-format
+msgid ""
+"Set's the body for the email. Supports an <literal>alternative</literal> "
+"facet which, if an HTML email is generated can contain alternative text for "
+"a mail reader which doesn't support html."
+msgstr ""
+
+#. Tag: para
+#: Mail.xml:425
+#, no-c-format
+msgid ""
+"<literal>type</literal> &mdash; If set to <literal>plain</literal> then a "
+"plain text email will be generated otherwise an HTML email is generated."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Persistence.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Persistence.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Persistence.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,750 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Persistence.xml:10
+#, no-c-format
+msgid "Seam and Object/Relational Mapping"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:11
+#, no-c-format
+msgid ""
+"Seam provides extensive support for the two most popular persistence "
+"architectures for Java: Hibernate3, and the Java Persistence API introduced "
+"with EJB 3.0. Seam's unique state-management architecture allows the most "
+"sophisticated ORM integration of any web application framework."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:15
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:16
+#, no-c-format
+msgid ""
+"Seam grew out of the frustration of the Hibernate team with the "
+"statelessness typical of the previous generation of Java application "
+"architectures. The state management architecture of Seam was originally "
+"designed to solve problems relating to persistence&mdash;in particular "
+"problems associated with <emphasis>optimistic transaction processing</"
+"emphasis>. Scalable online applications always use optimistic transactions. "
+"An atomic (database/JTA) level transaction should not span a user "
+"interaction unless the application is designed to support only a very small "
+"number of concurrent clients. But almost all interesting work involves first "
+"displaying data to a user, and then, slightly later, updating the same data. "
+"So Hibernate was designed to support the idea of a persistence context which "
+"spanned an optimistic transaction."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:19
+#, no-c-format
+msgid ""
+"Unfortunately, the so-called \"stateless\" architectures that preceded Seam "
+"and EJB 3.0 had no construct for representing an optimistic transaction. So, "
+"instead, these architectures provided persistence contexts scoped to the "
+"atomic transaction. Of course, this resulted in many problems for users, and "
+"is the cause of the number one user complaint about Hibernate: the dreaded "
+"<literal>LazyInitializationException</literal>. What we need is a construct "
+"for representing an optimistic transaction in the application tier."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:22
+#, no-c-format
+msgid ""
+"EJB 3.0 recognizes this problem, and introduces the idea of a stateful "
+"component (a stateful session bean) with an <emphasis>extended persistence "
+"context</emphasis> scoped to the lifetime of the component. This is a "
+"partial solution to the problem (and is a useful construct in and of itself) "
+"however there are two problems:"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:27
+#, no-c-format
+msgid ""
+"The lifecycle of the stateful session bean must be managed manually via code "
+"in the web tier (it turns out that this is a subtle problem and much more "
+"difficult in practice than it sounds)."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:32
+#, no-c-format
+msgid ""
+"Propagation of the persistence context between stateful components in the "
+"same optimistic transaction is possible, but tricky."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:37
+#, no-c-format
+msgid ""
+"Seam solves the first problem by providing conversations, and stateful "
+"session bean components scoped to the conversation. (Most conversations "
+"actually represent optimistic transactions in the data layer.) This is "
+"sufficient for many simple applications (such as the Seam booking demo) "
+"where persistence context propagation is not needed. For more complex "
+"applications, with many loosly-interacting components in each conversation, "
+"propagation of the persistence context across components becomes an "
+"important issue. So Seam extends the persistence context management model of "
+"EJB 3.0, to provide conversation-scoped extended persistence contexts."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:43
+#, no-c-format
+msgid "Seam managed transactions"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:44
+#, no-c-format
+msgid ""
+"EJB session beans feature declarative transaction management. The EJB "
+"container is able to start a transaction transparently when the bean is "
+"invoked, and end it when the invocation ends. If we write a session bean "
+"method that acts as a JSF action listener, we can do all the work associated "
+"with that action in one transaction, and be sure that it is committed or "
+"rolled back when we finish processing the action. This is a great feature, "
+"and all that is needed by some Seam applications."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:47
+#, no-c-format
+msgid ""
+"However, there is a problem with this approach. A Seam application may not "
+"perform all data access for a request from a single method call to a session "
+"bean."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:52
+#, no-c-format
+msgid ""
+"The request might require processing by several loosly-coupled components, "
+"each of which is called independently from the web layer. It is common to "
+"see several or even many calls per request from the web layer to EJB "
+"components in Seam."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:57
+#, no-c-format
+msgid "Rendering of the view might require lazy fetching of associations."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:62
+#, no-c-format
+msgid ""
+"The more transactions per request, the more likely we are to encounter "
+"atomicity and isolation problems when our application is processing many "
+"concurrent requests. Certainly, all write operations should occur in the "
+"same transaction!"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:65
+#, no-c-format
+msgid ""
+"Hibernate users developed the <emphasis>\"open session in view\"</emphasis> "
+"pattern to work around this problem. In the Hibernate community, \"open "
+"session in view\" was historically even more important because frameworks "
+"like Spring use transaction-scoped persistence contexts. So rendering the "
+"view would cause <literal>LazyInitializationException</literal>s when "
+"unfetched associations were accessed."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:68
+#, no-c-format
+msgid ""
+"This pattern is usually implemented as a single transaction which spans the "
+"entire request. There are several problems with this implementation, the "
+"most serious being that we can never be sure that a transaction is "
+"successful until we commit it&mdash;but by the time the \"open session in "
+"view\" transaction is committed, the view is fully rendered, and the "
+"rendered response may already have been flushed to the client. How can we "
+"notify the user that their transaction was unsuccessful?"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:71
+#, no-c-format
+msgid ""
+"Seam solves both the transaction isolation problem and the association "
+"fetching problem, while working around the problems with \"open session in "
+"view\". The solution comes in two parts:"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:76
+#, no-c-format
+msgid ""
+"use an extended persistence context that is scoped to the conversation, "
+"instead of to the transaction"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:81
+#, no-c-format
+msgid ""
+"use two transactions per request; the first spans the beginning of the "
+"update model values phase until the end of the invoke application phase; the "
+"second spans the render response phase"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:86
+#, no-c-format
+msgid ""
+"In the next section, we'll tell you how to set up a conversation-scope "
+"persistence context. But first we need to tell you how to enable Seam "
+"transaction management. Note that you can use conversation-scoped "
+"persistence contexts without Seam transaction management, and there are good "
+"reasons to use Seam transaction management even when you're not using Seam-"
+"managed persistence contexts. However, the two facilities were designed to "
+"work together, and work best when used together."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:90
+#, no-c-format
+msgid "Enabling Seam-managed transactions"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:91
+#, no-c-format
+msgid ""
+"To make use of <emphasis>Seam managed transactions</emphasis>, you need to "
+"use <literal>TransactionalSeamPhaseListener</literal> in place of "
+"<literal>SeamPhaseListener</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:94
+#, no-c-format
+msgid ""
+"&lt;lifecycle&gt;\n"
+"     &lt;phase-listener&gt;\n"
+"        org.jboss.seam.jsf.TransactionalSeamPhaseListener\n"
+"    &lt;/phase-listener&gt;\n"
+"&lt;/lifecycle&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:95
+#, no-c-format
+msgid ""
+"Seam transaction management is useful even if you're using EJB 3.0 container-"
+"managed persistence contexts. But it is especially useful if you use Seam "
+"outside a Java EE 5 environment, or in any other case where you would use a "
+"Seam-managed persistence context."
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:103
+#, no-c-format
+msgid "Seam-managed persistence contexts"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:104
+#, no-c-format
+msgid ""
+"If you're using Seam outside of a Java EE 5 environment, you can't rely upon "
+"the container to manage the persistence context lifecycle for you. Even if "
+"you are in an EE 5 environment, you might have a complex application with "
+"many loosly coupled components that collaborate together in the scope of a "
+"single conversation, and in this case you might find that propagation of the "
+"persistence context between component is tricky and error-prone."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:107
+#, no-c-format
+msgid ""
+"In either case, you'll need to use a <emphasis>managed persistence context</"
+"emphasis> (for JPA) or a <emphasis>managed session</emphasis> (for "
+"Hibernate) in your components. A Seam-managed persistence context is just a "
+"built-in Seam component that manages an instance of <literal>EntityManager</"
+"literal> or <literal>Session</literal> in the conversation context. You can "
+"inject it with <literal>@In</literal>."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:110
+#, no-c-format
+msgid ""
+"Seam-managed persistence contexts are extremely efficient in a clustered "
+"environment. Seam is able to perform an optimization that EJB 3.0 "
+"specification does not allow containers to use for container-managed "
+"extended persistence contexts. Seam supports transparent failover of "
+"extended persisence contexts, without the need to replicate any persistence "
+"context state between nodes. (We hope to fix this oversight in the next "
+"revision of the EJB spec.)"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:114
+#, no-c-format
+msgid "Using a Seam-managed persistence context with JPA"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:115
+#, no-c-format
+msgid ""
+"Configuring a managed persistence context is easy. In <literal>components."
+"xml</literal>, we can write:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:118
+#, no-c-format
+msgid ""
+"&lt;core:managed-persistence-context name=\"bookingDatabase\" \n"
+"                           auto-create=\"true\"\n"
+"            persistence-unit-jndi-name=\"java:/EntityManagerFactories/"
+"bookingData\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:119
+#, no-c-format
+msgid ""
+"This configuration creates a conversation-scoped Seam component named "
+"<literal>bookingDatabase</literal> that manages the lifecycle of "
+"<literal>EntityManager</literal> instances for the persistence unit "
+"(<literal>EntityManagerFactory</literal> instance) with JNDI name "
+"<literal>java:/EntityManagerFactories/bookingData</literal>."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:122
+#, no-c-format
+msgid ""
+"Of course, you need to make sure that you have bound the "
+"<literal>EntityManagerFactory</literal> into JNDI. In JBoss, you can do this "
+"by adding the following property setting to <literal>persistence.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:125
+#, no-c-format
+msgid ""
+"&lt;property name=\"jboss.entity.manager.factory.jndi.name\" \n"
+"          value=\"java:/EntityManagerFactories/bookingData\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:126
+#, no-c-format
+msgid "Now we can have our <literal>EntityManager</literal> injected using:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:129
+#, no-c-format
+msgid "@In EntityManager bookingDatabase;"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:133
+#, no-c-format
+msgid "Using a Seam-managed Hibernate session"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:134
+#, no-c-format
+msgid ""
+"Seam-managed Hibernate sessions are similar. In <literal>components.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:137
+#, no-c-format
+msgid ""
+"&lt;core:hibernate-session-factory name=\"hibernateSessionFactory\"/&gt;\n"
+"\n"
+"&lt;core:managed-hibernate-session name=\"bookingDatabase\" \n"
+"                         auto-create=\"true\"\n"
+"           session-factory-jndi-name=\"java:/bookingSessionFactory\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:138
+#, no-c-format
+msgid ""
+"Where <literal>java:/bookingSessionFactory</literal> is the name of the "
+"session factory specified in <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:141
+#, no-c-format
+msgid ""
+"&lt;session-factory name=\"java:/bookingSessionFactory\"&gt;\n"
+"    &lt;property name=\"transaction.flush_before_completion\"&gt;true&lt;/"
+"property&gt;\n"
+"    &lt;property name=\"connection.release_mode\"&gt;after_statement&lt;/"
+"property&gt;\n"
+"    &lt;property name=\"transaction.manager_lookup_class\"&gt;\n"
+"        org.hibernate.transaction.JBossTransactionManagerLookup\n"
+"    &lt;/property&gt;\n"
+"    &lt;property name=\"transaction.factory_class\"&gt;\n"
+"        org.hibernate.transaction.JTATransactionFactory\n"
+"    &lt;/property&gt;\n"
+"    &lt;property name=\"connection.datasource\"&gt;java:/"
+"bookingDatasource&lt;/property&gt;\n"
+"    ...\n"
+"&lt;/session-factory&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:142
+#, no-c-format
+msgid ""
+"Note that Seam does not flush the session, so you should always enable "
+"<literal>hibernate.transaction.flush_before_completion</literal> to ensure "
+"that the session is automatically flushed before the JTA transaction commits."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:145
+#, no-c-format
+msgid ""
+"We can now have a managed Hibernate <literal>Session</literal> injected into "
+"our JavaBean components using the following code:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:148
+#, no-c-format
+msgid "@In Session bookingDatabase;"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:152
+#, no-c-format
+msgid "Seam-managed persistence contexts and atomic conversations"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:153
+#, no-c-format
+msgid ""
+"Persistence contexts scoped to the conversation allows you to program "
+"optimistic transactions that span multiple requests to the server without "
+"the need to use the <literal>merge()</literal> operation , without the need "
+"to re-load data at the beginning of each request, and without the need to "
+"wrestle with the <literal>LazyInitializationException</literal> or "
+"<literal>NonUniqueObjectException</literal>."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:156
+#, no-c-format
+msgid ""
+"As with any optimistic transaction management, transaction isolation and "
+"consistency can be achieved via use of optimistic locking. Fortunately, both "
+"Hibernate and EJB 3.0 make it very easy to use optimistic locking, by "
+"providing the <literal>@Version</literal> annotation."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:159
+#, no-c-format
+msgid ""
+"By default, the persistence context is flushed (synchronized with the "
+"database) at the end of each transaction. This is sometimes the desired "
+"behavior. But very often, we would prefer that all changes are held in "
+"memory and only written to the database when the conversation ends "
+"successfully. This allows for truly atomic conversations. As the result of a "
+"truly stupid and shortsighted decision by certain non-JBoss, non-Sun and non-"
+"Sybase members of the EJB 3.0 expert group, there is currently no simple, "
+"usable and portable way to implement atomic conversations using EJB 3.0 "
+"persistence. However, Hibernate provides this feature as a vendor extension "
+"to the <literal>FlushModeType</literal>s defined by the specification, and "
+"it is our expectation that other vendors will soon provide a similar "
+"extension."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:162
+#, no-c-format
+msgid ""
+"Seam lets you specify <literal>FlushModeType.MANUAL</literal> when beginning "
+"a conversation. Currently, this works only when Hibernate is the underlying "
+"persistence provider, but we plan to support other equivalent vendor "
+"extensions."
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:165
+#, no-c-format
+msgid ""
+"@In EntityManager em; //a Seam-managed persistence context\n"
+"\n"
+"@Begin(flushMode=MANUAL)\n"
+"public void beginClaimWizard() {\n"
+"    claim = em.find(Claim.class, claimId);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:166
+#, no-c-format
+msgid ""
+"Now, the <literal>claim</literal> object remains managed by the persistence "
+"context for the rest ot the conversation. We can make changes to the claim:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:169
+#, no-c-format
+msgid ""
+"public void addPartyToClaim() {\n"
+"    Party party = ....;\n"
+"    claim.addParty(party);\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:170
+#, no-c-format
+msgid ""
+"But these changes will not be flushed to the database until we explicitly "
+"force the flush to occur:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:173
+#, no-c-format
+msgid ""
+"@End\n"
+"public void commitClaim() {\n"
+"    em.flush();\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:179
+#, no-c-format
+msgid "Using the JPA \"delegate\""
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:180
+#, no-c-format
+msgid ""
+"The <literal>EntityManager</literal> interface lets you access a vendor-"
+"specific API via the <literal>getDelegate()</literal> method. Naturally, the "
+"most interesting vendor is Hibernate, and the most powerful delegate "
+"interface is <literal>org.hibernate.Session</literal>. You'd be nuts to use "
+"anything else. Trust me, I'm not biased at all."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:183
+#, no-c-format
+msgid ""
+"But regardless of whether you're using Hibernate (genius!) or something else "
+"(masochist, or just not very bright), you'll almost certainly want to use "
+"the delegate in your Seam components from time to time. One approach would "
+"be the following:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:186
+#, no-c-format
+msgid ""
+"@In EntityManager entityManager;\n"
+"\n"
+"@Create\n"
+"public void init() {\n"
+"    ( (Session) entityManager.getDelegate() ).enableFilter(\"currentVersions"
+"\");\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:187
+#, no-c-format
+msgid ""
+"But typecasts are unquestionably the ugliest syntax in the Java language, so "
+"most people avoid them whenever possible. Here's a different way to get at "
+"the delegate. First, add the following line to <literal>components.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:190
+#, no-c-format
+msgid ""
+"&lt;factory name=\"session\" \n"
+"         scope=\"STATELESS\" \n"
+"         auto-create=\"true\" \n"
+"         value=\"#{entityManager.delegate}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:191
+#, no-c-format
+msgid "Now we can inject the session directly:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:194
+#, no-c-format
+msgid ""
+"@In Session session;\n"
+"\n"
+"@Create\n"
+"public void init() {\n"
+"    session.enableFilter(\"currentVersions\");\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:198
+#, no-c-format
+msgid "Using EL in EJB-QL/HQL"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:199
+#, no-c-format
+msgid ""
+"Seam proxies the <literal>EntityManager</literal> or <literal>Session</"
+"literal> object whenever you use a Seam-managed persistence context or "
+"inject a container managed persistence context using "
+"<literal>@PersistenceContext</literal>. This lets you use EL expressions in "
+"your query strings, safely and efficiently. For example, this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:202
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=#{user.username}\")\n"
+"         .getSingleResult();"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:203
+#, no-c-format
+msgid "is equivalent to:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:206
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getSingleResult();"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:207
+#, no-c-format
+msgid "Of course, you should never, ever write it like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:210
+#, no-c-format
+msgid ""
+"User user = em.createQuery(\"from User where username=\" + user.getUsername"
+"()) //BAD!\n"
+"         .getSingleResult();"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:211
+#, no-c-format
+msgid "(It is inefficient and vulnerable to SQL injection attacks.)"
+msgstr ""
+
+#. Tag: title
+#: Persistence.xml:217
+#, no-c-format
+msgid "Using Hibernate filters"
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:218
+#, no-c-format
+msgid ""
+"The coolest, and most unique, feature of Hibernate is <emphasis>filters</"
+"emphasis>. Filters let you provide a restricted view of the data in the "
+"database. You can find out more about filters in the Hibernate "
+"documentation. But we thought we'd mention an easy way to incorporate "
+"filters into a Seam application, one that works especially well with the "
+"Seam Application Framework."
+msgstr ""
+
+#. Tag: para
+#: Persistence.xml:221
+#, no-c-format
+msgid ""
+"Seam-managed persistence contexts may have a list of filters defined, which "
+"will be enabled whenever an <literal>EntityManager</literal> or Hibernate "
+"<literal>Session</literal> is first created. (Of course, they may only be "
+"used when Hibernate is the underlying persistence provider.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Persistence.xml:224
+#, no-c-format
+msgid ""
+"&lt;core:filter name=\"regionFilter\"&gt;\n"
+"    &lt;core:name&gt;region&lt;/core:name&gt;\n"
+"    &lt;core:parameters&gt;\n"
+"        &lt;key&gt;regionCode&lt;/key&gt;\n"
+"        &lt;value&gt;#{region.code}&lt;/value&gt;\n"
+"    &lt;/core:parameters&gt;\n"
+"&lt;/core:filter&gt;\n"
+"\n"
+"&lt;core:filter name=\"currentFilter\"&gt;\n"
+"    &lt;core:name&gt;current&lt;/core:name&gt;\n"
+"    &lt;core:parameters&gt;\n"
+"        &lt;key&gt;date&lt;/key&gt;\n"
+"        &lt;value&gt;#{currentDate}&lt;/value&gt;\n"
+"    &lt;/core:parameters&gt;\n"
+"&lt;/core:filter&gt;\n"
+"\n"
+"&lt;core:managed-persistence-context name=\"personDatabase\"\n"
+"    persistence-unit-jndi-name=\"java:/EntityManagerFactories/personDatabase"
+"\"&gt;\n"
+"    &lt;core:filters&gt;\n"
+"        &lt;value&gt;#{regionFilter}&lt;/value&gt;\n"
+"        &lt;value&gt;#{currentFilter}&lt;/value&gt;\n"
+"    &lt;/core:filters&gt;\n"
+"&lt;/core:managed-persistence-context&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Remoting.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Remoting.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Remoting.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1458 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Remoting.xml:10
+#, no-c-format
+msgid "Remoting"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:11
+#, no-c-format
+msgid ""
+"Seam provides a convenient method of remotely accessing components from a "
+"web page, using AJAX (Asynchronous Javascript and XML). The framework for "
+"this functionality is provided with almost no up-front development effort - "
+"your components only require simple annotating to become accessible via "
+"AJAX. This chapter describes the steps required to build an AJAX-enabled web "
+"page, then goes on to explain the features of the Seam Remoting framework in "
+"more detail."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:14 Remoting.xml:296
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:15
+#, no-c-format
+msgid ""
+"To use remoting, the Seam Resource servlet must first be configured in your "
+"<literal>web.xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:18
+#, no-c-format
+msgid ""
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"  &lt;/servlet&gt;\n"
+"\n"
+"  &lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"  &lt;/servlet-mapping&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:19
+#, no-c-format
+msgid ""
+"The next step is to import the necessary Javascript into your web page. "
+"There are a minimum of two scripts that must be imported. The first one "
+"contains all the client-side framework code that enables remoting "
+"functionality:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:22
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/resource/"
+"remote.js\"&gt;&lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:23
+#, no-c-format
+msgid ""
+"The second script contains the stubs and type definitions for the components "
+"you wish to call. It is generated dynamically based on the local interface "
+"of your components, and includes type definitions for all of the classes "
+"that can be used to call the remotable methods of the interface. The name of "
+"the script reflects the name of your component. For example, if you have a "
+"stateless session bean annotated with <literal>@Name(\"customerAction\")</"
+"literal>, then your script tag should look like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:26
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?customerAction\"&gt;\n"
+"      &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:27
+#, no-c-format
+msgid ""
+"If you wish to access more than one component from the same page, then "
+"include them all as parameters of your script tag:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:30
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" \n"
+"      src=\"seam/resource/remoting/interface.js?customerAction&amp;"
+"accountAction\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:31
+#, no-c-format
+msgid "The \"Seam\" object"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:32
+#, no-c-format
+msgid ""
+"Client-side interaction with your components is all performed via the "
+"<literal>Seam</literal> Javascript object. This object is defined in "
+"<literal>remote.js</literal>, and you'll be using it to make asynchronous "
+"calls against your component. It is split into two areas of functionality; "
+"<literal>Seam.Component</literal> contains methods for working with "
+"components and <literal>Seam.Remoting</literal> contains methods for "
+"executing remote requests. The easiest way to become familiar with this "
+"object is to start with a simple example."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:35
+#, no-c-format
+msgid "A Hello World example"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:36
+#, no-c-format
+msgid ""
+"Let's step through a simple example to see how the <literal>Seam</literal> "
+"object works. First of all, let's create a new Seam component called "
+"<literal>helloAction</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:39
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"  @Name(\"helloAction\")\n"
+"  public class HelloAction implements HelloLocal {\n"
+"    public String sayHello(String name) {\n"
+"      return \"Hello, \" + name;\n"
+"    }\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:40
+#, no-c-format
+msgid ""
+"You also need to create a local interface for our new component - take "
+"special note of the <literal>@WebRemote</literal> annotation, as it's "
+"required to make our method accessible via remoting:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:43
+#, no-c-format
+msgid ""
+"@Local\n"
+"  public interface HelloLocal {\n"
+"    @WebRemote\n"
+"    public String sayHello(String name);\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:44
+#, no-c-format
+msgid ""
+"That's all the server-side code we need to write. Now for our web page - "
+"create a new page and import the following scripts:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:47
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/resource/"
+"remote.js\"&gt;&lt;/script&gt;\n"
+"  &lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?helloAction\"&gt;&lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:48
+#, no-c-format
+msgid ""
+"To make this a fully interactive user experience, let's add a button to our "
+"page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:51
+#, no-c-format
+msgid ""
+"&lt;button onclick=\"javascript:sayHello()\"&gt;Say Hello&lt;/button&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:52
+#, no-c-format
+msgid ""
+"We'll also need to add some more script to make our button actually do "
+"something when it's clicked:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:55
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\"&gt;\n"
+"    //&lt;![CDATA[\n"
+"\n"
+"    function sayHello() {\n"
+"      var name = prompt(\"What is your name?\");\n"
+"      Seam.Component.getInstance(\"helloAction\").sayHello(name, "
+"sayHelloCallback);\n"
+"    }\n"
+"\n"
+"    function sayHelloCallback(result) {\n"
+"      alert(result);\n"
+"    }\n"
+"\n"
+"    // ]]&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:56
+#, no-c-format
+msgid ""
+"We're done! Deploy your application and browse to your page. Click the "
+"button, and enter a name when prompted. A message box will display the hello "
+"message confirming that the call was successful. If you want to save some "
+"time, you'll find the full source code for this Hello World example in "
+"Seam's <literal>/examples/remoting/helloworld</literal> directory."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:59
+#, no-c-format
+msgid ""
+"So what does the code of our script actually do? Let's break it down into "
+"smaller pieces. To start with, you can see from the Javascript code listing "
+"that we have implemented two methods - the first method is responsible for "
+"prompting the user for their name and then making a remote request. Take a "
+"look at the following line:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:62
+#, no-c-format
+msgid ""
+"Seam.Component.getInstance(\"helloAction\").sayHello(name, sayHelloCallback);"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:63
+#, no-c-format
+msgid ""
+"The first section of this line, <literal>Seam.Component.getInstance"
+"(\"helloAction\")</literal> returns a proxy, or \"stub\" for our "
+"<literal>helloAction</literal> component. We can invoke the methods of our "
+"component against this stub, which is exactly what happens with the "
+"remainder of the line: <literal>sayHello(name, sayHelloCallback);</literal>."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:66
+#, no-c-format
+msgid ""
+"What this line of code in its completeness does, is invoke the "
+"<literal>sayHello</literal> method of our component, passing in "
+"<literal>name</literal> as a parameter. The second parameter, "
+"<literal>sayHelloCallback</literal> isn't a parameter of our component's "
+"<literal>sayHello</literal> method, instead it tells the Seam Remoting "
+"framework that once it receives the response to our request, it should pass "
+"it to the <literal>sayHelloCallback</literal> Javascript method. This "
+"callback parameter is entirely optional, so feel free to leave it out if "
+"you're calling a method with a <literal>void</literal> return type or if you "
+"don't care about the result."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:69
+#, no-c-format
+msgid ""
+"The <literal>sayHelloCallback</literal> method, once receiving the response "
+"to our remote request then pops up an alert message displaying the result of "
+"our method call."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:72
+#, no-c-format
+msgid "Seam.Component"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:73
+#, no-c-format
+msgid ""
+"The <literal>Seam.Component</literal> Javascript object provides a number of "
+"client-side methods for working with your Seam components. The two main "
+"methods, <literal>newInstance()</literal> and <literal>getInstance()</"
+"literal> are documented in the following sections however their main "
+"difference is that <literal>newInstance()</literal> will always create a new "
+"instance of a component type, and <literal>getInstance()</literal> will "
+"return a singleton instance."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:76
+#, no-c-format
+msgid "Seam.Component.newInstance()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:77
+#, no-c-format
+msgid ""
+"Use this method to create a new instance of an entity or Javabean component. "
+"The object returned by this method will have the same getter/setter methods "
+"as its server-side counterpart, or alternatively if you wish you can access "
+"its fields directly. Take the following Seam entity component for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:80
+#, no-c-format
+msgid ""
+"@Name(\"customer\")\n"
+"  @Entity\n"
+"  public class Customer implements Serializable\n"
+"  {\n"
+"    private Integer customerId;\n"
+"    private String firstName;\n"
+"    private String lastName;\n"
+"    \n"
+"    @Column public Integer getCustomerId() { \n"
+"      return customerId; \n"
+"    }\n"
+"    \n"
+"    public void setCustomerId(Integer customerId} { \n"
+"      this.customerId = customerId; \n"
+"    }\n"
+"    \n"
+"    @Column public String getFirstName() { \n"
+"      return firstName; \n"
+"    }\n"
+"    \n"
+"    public void setFirstName(String firstName) {\n"
+"      this.firstName = firstName; \n"
+"    }\n"
+"    \n"
+"    @Column public String getLastName() {\n"
+"      return lastName;\n"
+"    }\n"
+"    \n"
+"    public void setLastName(String lastName) {\n"
+"      this.lastName = lastName;\n"
+"    }\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:81
+#, no-c-format
+msgid "To create a client-side Customer you would write the following code:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:84
+#, no-c-format
+msgid "var customer = Seam.Component.newInstance(\"customer\");"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:85
+#, no-c-format
+msgid "Then from here you can set the fields of the customer object:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:88
+#, no-c-format
+msgid ""
+"customer.setFirstName(\"John\");\n"
+"  // Or you can set the fields directly\n"
+"  customer.lastName = \"Smith\";"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:89
+#, no-c-format
+msgid "Seam.Component.getInstance()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:90
+#, no-c-format
+msgid ""
+"The <literal>getInstance()</literal> method is used to get a reference to a "
+"Seam session bean component stub, which can then be used to remotely execute "
+"methods against your component. This method returns a singleton for the "
+"specified component, so calling it twice in a row with the same component "
+"name will return the same instance of the component."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:93
+#, no-c-format
+msgid ""
+"To continue our example from before, if we have created a new "
+"<literal>customer</literal> and we now wish to save it, we would pass it to "
+"the <literal>saveCustomer()</literal> method of our <literal>customerAction</"
+"literal> component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:96
+#, no-c-format
+msgid "Seam.Component.getInstance(\"customerAction\").saveCustomer(customer);"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:97
+#, no-c-format
+msgid "Seam.Component.getComponentName()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:98
+#, no-c-format
+msgid ""
+"Passing an object into this method will return its component name if it is a "
+"component, or <literal>null</literal> if it is not."
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:101
+#, no-c-format
+msgid ""
+"if (Seam.Component.getComponentName(instance) == \"customer\")\n"
+"    alert(\"Customer\");\n"
+"  else if (Seam.Component.getComponentName(instance) == \"staff\")\n"
+"    alert(\"Staff member\");"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:102
+#, no-c-format
+msgid "Seam.Remoting"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:103
+#, no-c-format
+msgid ""
+"Most of the client side functionality for Seam Remoting is contained within "
+"the <literal>Seam.Remoting</literal> object. While you shouldn't need to "
+"directly call most of its methods, there are a couple of important ones "
+"worth mentioning."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:106
+#, no-c-format
+msgid "Seam.Remoting.createType()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:107
+#, no-c-format
+msgid ""
+"If your application contains or uses Javabean classes that aren't Seam "
+"components, you may need to create these types on the client side to pass as "
+"parameters into your component method. Use the <literal>createType()</"
+"literal> method to create an instance of your type. Pass in the fully "
+"qualified Java class name as a parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:110
+#, no-c-format
+msgid "var widget = Seam.Remoting.createType(\"com.acme.widgets.MyWidget\");"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:111
+#, no-c-format
+msgid "Seam.Remoting.getTypeName()"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:112
+#, no-c-format
+msgid ""
+"This method is the equivalent of <literal>Seam.Component.getComponentName()</"
+"literal> but for non-component types. It will return the name of the type "
+"for an object instance, or <literal>null</literal> if the type is not known. "
+"The name is the fully qualified name of the type's Java class."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:115
+#, no-c-format
+msgid "Client Interfaces"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:116
+#, no-c-format
+msgid ""
+"In the configuration section above, the interface, or \"stub\" for our "
+"component is imported into our page via <literal>seam/resource/remoting/"
+"interface.js</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:119
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?customerAction\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:120
+#, no-c-format
+msgid ""
+"By including this script in our page, the interface definitions for our "
+"component, plus any other components or types that are required to execute "
+"the methods of our component are generated and made available for the "
+"remoting framework to use."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:123
+#, no-c-format
+msgid ""
+"There are two types of client stub that can be generated, \"executable\" "
+"stubs and \"type\" stubs. Executable stubs are behavioural, and are used to "
+"execute methods against your session bean components, while type stubs "
+"contain state and represent the types that can be passed in as parameters or "
+"returned as a result."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:126
+#, no-c-format
+msgid ""
+"The type of client stub that is generated depends on the type of your Seam "
+"component. If the component is a session bean, then an executable stub will "
+"be generated, otherwise if it's an entity or JavaBean, then a type stub will "
+"be generated. There is one exception to this rule; if your component is a "
+"JavaBean (ie it is not a session bean nor an entity bean) and any of its "
+"methods are annotated with @WebRemote, then an executable stub will be "
+"generated for it instead of a type stub. This allows you to use remoting to "
+"call methods of your JavaBean components in a non-EJB environment where you "
+"don't have access to session beans."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:130
+#, no-c-format
+msgid "The Context"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:131
+#, no-c-format
+msgid ""
+"The Seam Remoting Context contains additional information which is sent and "
+"received as part of a remoting request/response cycle. At this stage it only "
+"contains the conversation ID but may be expanded in the future."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:134
+#, no-c-format
+msgid "Setting and reading the Conversation ID"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:136
+#, no-c-format
+msgid ""
+"If you intend on using remote calls within the scope of a conversation then "
+"you need to be able to read or set the conversation ID in the Seam Remoting "
+"Context. To read the conversation ID after making a remote request call "
+"<literal>Seam.Remoting.getContext().getConversationId()</literal>. To set "
+"the conversation ID before making a request, call <literal>Seam.Remoting."
+"getContext().setConversationId()</literal>."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:139
+#, no-c-format
+msgid ""
+"If the conversation ID hasn't been explicitly set with <literal>Seam."
+"Remoting.getContext().setConversationId()</literal>, then it will be "
+"automatically assigned the first valid conversation ID that is returned by "
+"any remoting call. If you are working with multiple conversations within "
+"your page, then you may need to explicitly set the conversation ID before "
+"each call. If you are working with just a single conversation, then you "
+"don't need to do anything special."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:145
+#, no-c-format
+msgid "Batch Requests"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:146
+#, no-c-format
+msgid ""
+"Seam Remoting allows multiple component calls to be executed within a single "
+"request. It is recommended that this feature is used wherever it is "
+"appropriate to reduce network traffic."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:149
+#, no-c-format
+msgid ""
+"The method <literal>Seam.Remoting.startBatch()</literal> will start a new "
+"batch, and any component calls executed after starting a batch are queued, "
+"rather than being sent immediately. When all the desired component calls "
+"have been added to the batch, the <literal>Seam.Remoting.executeBatch()</"
+"literal> method will send a single request containing all of the queued "
+"calls to the server, where they will be executed in order. After the calls "
+"have been executed, a single response containining all return values will be "
+"returned to the client and the callback functions (if provided) triggered in "
+"the same order as execution."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:152
+#, no-c-format
+msgid ""
+"If you start a new batch via the <literal>startBatch()</literal> method but "
+"then decide you don't want to send it, the <literal>Seam.Remoting.cancelBatch"
+"()</literal> method will discard any calls that were queued and exit the "
+"batch mode."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:155
+#, no-c-format
+msgid ""
+"To see an example of a batch being used, take a look at <literal>/examples/"
+"remoting/chatroom</literal>."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:159
+#, no-c-format
+msgid "Working with Data types"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:160
+#, no-c-format
+msgid "Primitives / Basic Types"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:161
+#, no-c-format
+msgid ""
+"This section describes the support for basic data types. On the server side "
+"these values are generally compatible with either their primitive type or "
+"their corresponding wrapper class."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:164
+#, no-c-format
+msgid "String"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:165
+#, no-c-format
+msgid ""
+"Simply use Javascript String objects when setting String parameter values."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:168
+#, no-c-format
+msgid "Number"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:169
+#, no-c-format
+msgid ""
+"There is support for all number types supported by Java. On the client side, "
+"number values are always serialized as their String representation and then "
+"on the server side they are converted to the correct destination type. "
+"Conversion into either a primitive or wrapper type is supported for "
+"<literal>Byte</literal>, <literal>Double</literal>, <literal>Float</"
+"literal>, <literal>Integer</literal>, <literal>Long</literal> and "
+"<literal>Short</literal> types."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:172
+#, no-c-format
+msgid "Boolean"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:173
+#, no-c-format
+msgid ""
+"Booleans are represented client side by Javascript Boolean values, and "
+"server side by a Java boolean."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:176
+#, no-c-format
+msgid "JavaBeans"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:177
+#, no-c-format
+msgid ""
+"In general these will be either Seam entity or JavaBean components, or some "
+"other non-component class. Use the appropriate method (either <literal>Seam."
+"Component.newInstance()</literal> for Seam components or <literal>Seam."
+"Remoting.createType()</literal> for everything else) to create a new "
+"instance of the object."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:180
+#, no-c-format
+msgid ""
+"It is important to note that only objects that are created by either of "
+"these two methods should be used as parameter values, where the parameter is "
+"not one of the other valid types mentioned anywhere else in this section. In "
+"some situations you may have a component method where the exact parameter "
+"type cannot be determined, such as:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:183
+#, no-c-format
+msgid ""
+"@Name(\"myAction\")\n"
+"  public class MyAction implements MyActionLocal {\n"
+"    public void doSomethingWithObject(Object obj) {\n"
+"      // code\n"
+"    }\n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:184
+#, no-c-format
+msgid ""
+"In this case you might want to pass in an instance of your "
+"<literal>myWidget</literal> component, however the interface for "
+"<literal>myAction</literal> won't include <literal>myWidget</literal> as it "
+"is not directly referenced by any of its methods. To get around this, "
+"<literal>MyWidget</literal> needs to be explicitly imported:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:187
+#, no-c-format
+msgid ""
+"&lt;script type=\"text/javascript\" src=\"seam/resource/remoting/interface."
+"js?myAction&amp;myWidget\"&gt;\n"
+"  &lt;/script&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:188
+#, no-c-format
+msgid ""
+"This will then allow a <literal>myWidget</literal> object to be created with "
+"<literal>Seam.Component.newInstance(\"myWidget\")</literal>, which can then "
+"be passed to <literal>myAction.doSomethingWithObject()</literal>."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:191
+#, no-c-format
+msgid "Dates and Times"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:192
+#, no-c-format
+msgid ""
+"Date values are serialized into a String representation that is accurate to "
+"the millisecond. On the client side, use a Javascript Date object to work "
+"with date values. On the server side, use any <literal>java.util.Date</"
+"literal> (or descendent, such as <literal>java.sql.Date</literal> or "
+"<literal>java.sql.Timestamp</literal> class."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:195
+#, no-c-format
+msgid "Enums"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:196
+#, no-c-format
+msgid ""
+"On the client side, enums are treated the same as Strings. When setting the "
+"value for an enum parameter, simply use the String representation of the "
+"enum. Take the following component as an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:199
+#, no-c-format
+msgid ""
+"@Name(\"paintAction\")\n"
+"  public class paintAction implements paintLocal {\n"
+"    public enum Color {red, green, blue, yellow, orange, purple};\n"
+"\n"
+"    public void paint(Color color) {\n"
+"      // code\n"
+"    }    \n"
+"  }"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:200
+#, no-c-format
+msgid ""
+"To call the <literal>paint()</literal> method with the color <literal>red</"
+"literal>, pass the parameter value as a String literal:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:203
+#, no-c-format
+msgid "Seam.Component.getInstance(\"paintAction\").paint(\"red\");"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:204
+#, no-c-format
+msgid ""
+"The inverse is also true - that is, if a component method returns an enum "
+"parameter (or contains an enum field anywhere in the returned object graph) "
+"then on the client-side it will be represented as a String."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:207
+#, no-c-format
+msgid "Collections"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:208
+#, no-c-format
+msgid "Bags"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:209
+#, no-c-format
+msgid ""
+"Bags cover all collection types including arrays, collections, lists, sets, "
+"(but excluding Maps - see the next section for those), and are implemented "
+"client-side as a Javascript array. When calling a component method that "
+"accepts one of these types as a parameter, your parameter should be a "
+"Javascript array. If a component method returns one of these types, then the "
+"return value will also be a Javascript array. The remoting framework is "
+"clever enough on the server side to convert the bag to an appropriate type "
+"for the component method call."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:212
+#, no-c-format
+msgid "Maps"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:213
+#, no-c-format
+msgid ""
+"As there is no native support for Maps within Javascript, a simple Map "
+"implementation is provided with the Seam Remoting framework. To create a Map "
+"which can be used as a parameter to a remote call, create a new "
+"<literal>Seam.Remoting.Map</literal> object:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:216
+#, no-c-format
+msgid "var map = new Seam.Remoting.Map();"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:217
+#, no-c-format
+msgid ""
+"This Javascript implementation provides basic methods for working with Maps: "
+"<literal>size()</literal>, <literal>isEmpty()</literal>, <literal>keySet()</"
+"literal>, <literal>values()</literal>, <literal>get(key)</literal>, "
+"<literal>put(key, value)</literal>, <literal>remove(key)</literal> and "
+"<literal>contains(key)</literal>. Each of these methods are equivalent to "
+"their Java counterpart. Where the method returns a collection, such as "
+"<literal>keySet()</literal> and <literal>values()</literal>, a Javascript "
+"Array object will be returned that contains the key or value objects "
+"(respectively)."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:220
+#, no-c-format
+msgid "Debugging"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:221
+#, no-c-format
+msgid ""
+"To aid in tracking down bugs, it is possible to enable a debug mode which "
+"will display the contents of all the packets send back and forth between the "
+"client and server in a popup window. To enable debug mode, either execute "
+"the <literal>setDebug()</literal> method in Javascript:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:224
+#, no-c-format
+msgid "Seam.Remoting.setDebug(true);"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:225
+#, no-c-format
+msgid "Or configure it via components.xml:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:228
+#, no-c-format
+msgid "&lt;remoting:remoting debug=\"true\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:229
+#, no-c-format
+msgid ""
+"To turn off debugging, call <literal>setDebug(false)</literal>. If you want "
+"to write your own messages to the debug log, call <literal>Seam.Remoting.log"
+"(message)</literal>."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:233
+#, no-c-format
+msgid "The Loading Message"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:234
+#, no-c-format
+msgid ""
+"The default loading message that appears in the top right corner of the "
+"screen can be modified, its rendering customised or even turned off "
+"completely."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:237
+#, no-c-format
+msgid "Changing the message"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:238
+#, no-c-format
+msgid ""
+"To change the message from the default \"Please Wait...\" to something "
+"different, set the value of <literal>Seam.Remoting.loadingMessage</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:241
+#, no-c-format
+msgid "Seam.Remoting.loadingMessage = \"Loading...\";"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:243
+#, no-c-format
+msgid "Hiding the loading message"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:244
+#, no-c-format
+msgid ""
+"To completely suppress the display of the loading message, override the "
+"implementation of <literal>displayLoadingMessage()</literal> and "
+"<literal>hideLoadingMessage()</literal> with functions that instead do "
+"nothing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:247
+#, no-c-format
+msgid ""
+"// don't display the loading indicator\n"
+"  Seam.Remoting.displayLoadingMessage = function() {};\n"
+"  Seam.Remoting.hideLoadingMessage = function() {};"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:248
+#, no-c-format
+msgid "A Custom Loading Indicator"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:249
+#, no-c-format
+msgid ""
+"It is also possible to override the loading indicator to display an animated "
+"icon, or anything else that you want. To do this override the "
+"<literal>displayLoadingMessage()</literal> and <literal>hideLoadingMessage()"
+"</literal> messages with your own implementation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:252
+#, no-c-format
+msgid ""
+"Seam.Remoting.displayLoadingMessage = function() {\n"
+"    // Write code here to display the indicator\n"
+"  };\n"
+"  \n"
+"  Seam.Remoting.hideLoadingMessage = function() {\n"
+"    // Write code here to hide the indicator\n"
+"  };"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:253
+#, no-c-format
+msgid "Controlling what data is returned"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:254
+#, no-c-format
+msgid ""
+"When a remote method is executed, the result is serialized into an XML "
+"response that is returned to the client. This response is then unmarshaled "
+"by the client into a Javascript object. For complex types (i.e. Javabeans) "
+"that include references to other objects, all of these referenced objects "
+"are also serialized as part of the response. These objects may reference "
+"other objects, which may reference other objects, and so forth. If left "
+"unchecked, this object \"graph\" could potentially be enormous, depending on "
+"what relationships exist between your objects. And as a side issue (besides "
+"the potential verbosity of the response), you might also wish to prevent "
+"sensitive information from being exposed to the client."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:257
+#, no-c-format
+msgid ""
+"Seam Remoting provides a simple means to \"constrain\" the object graph, by "
+"specifying the <literal>exclude</literal> field of the remote method's "
+"<literal>@WebRemote</literal> annotation. This field accepts a String array "
+"containing one or more paths specified using dot notation. When invoking a "
+"remote method, the objects in the result's object graph that match these "
+"paths are excluded from the serialized result packet."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:260
+#, no-c-format
+msgid ""
+"For all our examples, we'll use the following <literal>Widget</literal> "
+"class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:263
+#, no-c-format
+msgid ""
+"@Name(\"widget\")\n"
+"public class Widget\n"
+"{\n"
+"  private String value;\n"
+"  private String secret;\n"
+"  private Widget child;\n"
+"  private Map&lt;String,Widget&gt; widgetMap;\n"
+"  private List&lt;Widget&gt; widgetList;\n"
+"  \n"
+"  // getters and setters for all fields\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:264
+#, no-c-format
+msgid "Constraining normal fields"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:265
+#, no-c-format
+msgid ""
+"If your remote method returns an instance of <literal>Widget</literal>, but "
+"you don't want to expose the <literal>secret</literal> field because it "
+"contains sensitive information, you would constrain it like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:268
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:269
+#, no-c-format
+msgid ""
+"The value \"secret\" refers to the <literal>secret</literal> field of the "
+"returned object. Now, suppose that we don't care about exposing this "
+"particular field to the client. Instead, notice that the <literal>Widget</"
+"literal> value that is returned has a field <literal>child</literal> that is "
+"also a <literal>Widget</literal>. What if we want to hide the "
+"<literal>child</literal>'s <literal>secret</literal> value instead? We can "
+"do this by using dot notation to specify this field's path within the "
+"result's object graph:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:272
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"child.secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:273
+#, no-c-format
+msgid "Constraining Maps and Collections"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:274
+#, no-c-format
+msgid ""
+"The other place that objects can exist within an object graph are within a "
+"<literal>Map</literal> or some kind of collection (<literal>List</literal>, "
+"<literal>Set</literal>, <literal>Array</literal>, etc). Collections are "
+"easy, and are treated like any other field. For example, if our "
+"<literal>Widget</literal> contained a list of other <literal>Widget</"
+"literal>s in its <literal>widgetList</literal> field, to constrain the "
+"<literal>secret</literal> field of the <literal>Widget</literal>s in this "
+"list the annotation would look like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:277
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetList.secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:278
+#, no-c-format
+msgid ""
+"To constrain a <literal>Map</literal>'s key or value, the notation is "
+"slightly different. Appending <literal>[key]</literal> after the "
+"<literal>Map</literal>'s field name will constrain the <literal>Map</"
+"literal>'s key object values, while <literal>[value]</literal> will "
+"constrain the value object values. The following example demonstrates how "
+"the values of the <literal>widgetMap</literal> field have their "
+"<literal>secret</literal> field constrained:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:281
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetMap[value].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:282
+#, no-c-format
+msgid "Constraining objects of a specific type"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:283
+#, no-c-format
+msgid ""
+"There is one last notation that can be used to constrain the fields of a "
+"type of object no matter where in the result's object graph it appears. This "
+"notation uses either the name of the component (if the object is a Seam "
+"component) or the fully qualified class name (only if the object is not a "
+"Seam component) and is expressed using square brackets:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:286
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"[widget].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:287
+#, no-c-format
+msgid "Combining Constraints"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:288
+#, no-c-format
+msgid ""
+"Constraints can also be combined, to filter objects from multiple paths "
+"within the object graph:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:291
+#, no-c-format
+msgid ""
+"@WebRemote(exclude = {\"widgetList.secret\", \"widgetMap[value].secret\"})\n"
+"  public Widget getWidget();"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:292
+#, no-c-format
+msgid "JMS Messaging"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:293
+#, no-c-format
+msgid ""
+"Seam Remoting provides experimental support for JMS Messaging. This section "
+"describes the JMS support that is currently implemented, but please note "
+"that this may change in the future. It is currently not recommended that "
+"this feature is used within a production environment."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:297
+#, no-c-format
+msgid ""
+"Before you can subscribe to a JMS topic, you must first configure a list of "
+"the topics that can be subscribed to by Seam Remoting. List the topics under "
+"<literal>org.jboss.seam.remoting.messaging.subscriptionRegistry."
+"allowedTopics</literal> in <literal>seam.properties</literal>, <literal>web."
+"xml</literal> or <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:300 Remoting.xml:333
+#, no-c-format
+msgid "&lt;remoting:remoting poll-timeout=\"5\" poll-interval=\"1\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:301
+#, no-c-format
+msgid "Subscribing to a JMS Topic"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:302
+#, no-c-format
+msgid "The following example demonstrates how to subscribe to a JMS Topic:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:305
+#, no-c-format
+msgid ""
+"function subscriptionCallback(message)\n"
+"  {\n"
+"    if (message instanceof Seam.Remoting.TextMessage)\n"
+"      alert(\"Received message: \" + message.getText());\n"
+"  }        \n"
+"        \n"
+"  Seam.Remoting.subscribe(\"topicName\", subscriptionCallback);"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:306
+#, no-c-format
+msgid ""
+"The <literal>Seam.Remoting.subscribe()</literal> method accepts two "
+"parameters, the first being the name of the JMS Topic to subscribe to, the "
+"second being the callback function to invoke when a message is received."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:309
+#, no-c-format
+msgid ""
+"There are two types of messages supported, Text messages and Object "
+"messages. If you need to test for the type of message that is passed to your "
+"callback function you can use the <literal>instanceof</literal> operator to "
+"test whether the message is a <literal>Seam.Remoting.TextMessage</literal> "
+"or <literal>Seam.Remoting.ObjectMessage</literal>. A <literal>TextMessage</"
+"literal> contains the text value in its <literal>text</literal> field (or "
+"alternatively call <literal>getText()</literal> on it), while an "
+"<literal>ObjectMessage</literal> contains its object value in its "
+"<literal>object</literal> field (or call its <literal>getObject()</literal> "
+"method)."
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:312
+#, no-c-format
+msgid "Unsubscribing from a Topic"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:313
+#, no-c-format
+msgid ""
+"To unsubscribe from a topic, call <literal>Seam.Remoting.unsubscribe()</"
+"literal> and pass in the topic name:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:316
+#, no-c-format
+msgid "Seam.Remoting.unsubscribe(\"topicName\");"
+msgstr ""
+
+#. Tag: title
+#: Remoting.xml:317
+#, no-c-format
+msgid "Tuning the Polling Process"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:318
+#, no-c-format
+msgid ""
+"There are two parameters which you can modify to control how polling occurs. "
+"The first one is <literal>Seam.Remoting.pollInterval</literal>, which "
+"controls how long to wait between subsequent polls for new messages. This "
+"parameter is expressed in seconds, and its default setting is 10."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:321
+#, no-c-format
+msgid ""
+"The second parameter is <literal>Seam.Remoting.pollTimeout</literal>, and is "
+"also expressed as seconds. It controls how long a request to the server "
+"should wait for a new message before timing out and sending an empty "
+"response. Its default is 0 seconds, which means that when the server is "
+"polled, if there are no messages ready for delivery then an empty response "
+"will be immediately returned."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:324
+#, no-c-format
+msgid ""
+"Caution should be used when setting a high <literal>pollTimeout</literal> "
+"value; each request that has to wait for a message means that a server "
+"thread is tied up until a message is received, or until the request times "
+"out. If many such requests are being served simultaneously, it could mean a "
+"large number of threads become tied up because of this reason."
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:327
+#, no-c-format
+msgid ""
+"It is recommended that you set these options via components.xml, however "
+"they can be overridden via Javascript if desired. The following example "
+"demonstrates how to configure the polling to occur much more aggressively. "
+"You should set these parameters to suitable values for your application:"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:330
+#, no-c-format
+msgid "Via components.xml:"
+msgstr ""
+
+#. Tag: para
+#: Remoting.xml:334
+#, no-c-format
+msgid "Via JavaScript:"
+msgstr ""
+
+#. Tag: programlisting
+#: Remoting.xml:337
+#, no-c-format
+msgid ""
+"// Only wait 1 second between receiving a poll response and sending the next "
+"poll request.\n"
+"  Seam.Remoting.pollInterval = 1;\n"
+"  \n"
+"  // Wait up to 5 seconds on the server for new messages\n"
+"  Seam.Remoting.pollTimeout = 5;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Security.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Security.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Security.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,1676 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Security.xml:10
+#, no-c-format
+msgid "Security"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:11
+#, no-c-format
+msgid ""
+"The Seam Security API is an optional Seam feature that provides "
+"authentication and authorization features for securing both domain and page "
+"resources within your Seam project."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:14
+#, no-c-format
+msgid "Overview"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:15
+#, no-c-format
+msgid "Seam Security provides two different modes of operation:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:20
+#, no-c-format
+msgid ""
+"<emphasis>simplified mode</emphasis> - this mode supports authentication "
+"services and simple role-based security checks."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:25
+#, no-c-format
+msgid ""
+"<emphasis>advanced mode</emphasis> - this mode supports all the same "
+"features as the simplified mode, plus it offers rule-based security checks "
+"using JBoss Rules."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:30
+#, no-c-format
+msgid "Which mode is right for my application?"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:31
+#, no-c-format
+msgid ""
+"That all depends on the requirements of your application. If you have "
+"minimal security requirements, for example if you only wish to restrict "
+"certain pages and actions to users who are logged in, or who belong to a "
+"certain role, then the simplified mode will probably be sufficient. The "
+"advantages of this is a more simplified configuration, significantly less "
+"libraries to include, and a smaller memory footprint."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:34
+#, no-c-format
+msgid ""
+"If on the other hand, your application requires security checks based on "
+"contextual state or complex business rules, then you will require the "
+"features provided by the advanced mode."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:37
+#, no-c-format
+msgid "Requirements"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:38
+#, no-c-format
+msgid ""
+"If using the advanced mode features of Seam Security, the following jar "
+"files are required to be configured as modules in <literal>application.xml</"
+"literal>. If you are using Seam Security in simplified mode, these are "
+"<emphasis>not</emphasis> required:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:43
+#, no-c-format
+msgid "drools-compiler-3.0.5.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:48
+#, no-c-format
+msgid "drools-core-3.0.5.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:53
+#, no-c-format
+msgid "commons-jci-core-1.0-406301.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:58
+#, no-c-format
+msgid "commons-jci-janino-2.4.3.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:63
+#, no-c-format
+msgid "commons-lang-2.1.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:68
+#, no-c-format
+msgid "janino-2.4.3.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:73
+#, no-c-format
+msgid "stringtemplate-2.3b6.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:78
+#, no-c-format
+msgid "antlr-2.7.6.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:83
+#, no-c-format
+msgid "antlr-3.0ea8.jar"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:88
+#, no-c-format
+msgid ""
+"For web-based security, <literal>jboss-seam-ui.jar</literal> must also be "
+"included in the application's war file. Also, to make use of the security EL "
+"functions, <literal>SeamFaceletViewHandler</literal> must be used. Configure "
+"it in <literal>faces-config.xml</literal> like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:91
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;view-handler&gt;org.jboss.seam.ui.facelet.SeamFaceletViewHandler&lt;/"
+"view-handler&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:92
+#, no-c-format
+msgid "Authentication"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:93
+#, no-c-format
+msgid ""
+"The authentication features provided by Seam Security are built upon JAAS "
+"(Java Authentication and Authorization Service), and as such provide a "
+"robust and highly configurable API for handling user authentication. "
+"However, for less complex authentication requirements Seam offers a much "
+"more simplified method of authentication that hides the complexity of JAAS."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:96
+#, no-c-format
+msgid "Configuration"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:97
+#, no-c-format
+msgid ""
+"The simplified authentication method uses a built-in JAAS login module, "
+"<literal>SeamLoginModule</literal>, which delegates authentication to one of "
+"your own Seam components. This login module is already configured inside "
+"Seam as part of a default application policy and as such does not require "
+"any additional configuration files. It allows you to write an authentication "
+"method using the entity classes that are provided by your own application. "
+"Configuring this simplified form of authentication requires the "
+"<literal>identity</literal> component to be configured in "
+"<literal>components.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:100
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:security=\"http://jboss.com/products/seam/security\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core http://jboss.com/"
+"products/seam/core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components http://jboss.com/"
+"products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/drools http://jboss.com/"
+"products/seam/drools-1.2.xsd\"\n"
+"                 http://jboss.com/products/seam/security http://jboss.com/"
+"products/seam/security-1.2.xsd\"&gt;                \n"
+"        \n"
+"    &lt;security:identity authenticate-method=\"#{authenticator.authenticate}"
+"\"/&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:101
+#, no-c-format
+msgid ""
+"If you wish to use the advanced security features such as rule-based "
+"permission checks, all you need to do is include the Drools (JBoss Rules) "
+"jars in your classpath, and add some additional configuration, described "
+"later."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:104
+#, no-c-format
+msgid ""
+"The EL expression <literal>#{authenticator.authenticate}</literal> is a "
+"method binding indicating that the <literal>authenticate</literal> method of "
+"the <literal>authenticator</literal> component will be used to authenticate "
+"the user."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:107
+#, no-c-format
+msgid "Writing an authentication method"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:108
+#, no-c-format
+msgid ""
+"The <literal>authenticate-method</literal> property specified for "
+"<literal>identity</literal> in <literal>components.xml</literal> specifies "
+"which method will be used by <literal>SeamLoginModule</literal> to "
+"authenticate users. This method takes no parameters, and is expected to "
+"return a boolean indicating whether authentication is successful or not. The "
+"user's username and password can be obtained from <literal>Identity.instance"
+"().getUsername()</literal> and <literal>Identity.instance().getPassword()</"
+"literal>, respectively. Any roles that the user is a member of should be "
+"assigned using <literal>Identity.instance().addRole()</literal>. Here's a "
+"complete example of an authentication method inside a JavaBean component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:111
+#, no-c-format
+msgid ""
+"@Name(\"authenticator\")\n"
+"public class Authenticator {\n"
+"   @In EntityManager entityManager;\n"
+"   \n"
+"   public boolean authenticate() {\n"
+"      try\n"
+"      {\n"
+"         User user = (User) entityManager.createQuery(\n"
+"            \"from User where username = :username and password = :password"
+"\")\n"
+"            .setParameter(\"username\", Identity.instance().getUsername())\n"
+"            .setParameter(\"password\", Identity.instance().getPassword())\n"
+"            .getSingleResult();\n"
+"\n"
+"         if (user.getRoles() != null)\n"
+"         {\n"
+"            for (UserRole mr : user.getRoles())\n"
+"               Identity.instance().addRole(mr.getName());\n"
+"         }\n"
+"\n"
+"         return true;\n"
+"      }\n"
+"      catch (NoResultException ex)\n"
+"      {\n"
+"         FacesMessages.instance().add(\"Invalid username/password\");\n"
+"         return false;\n"
+"      }\n"
+"      \n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:112
+#, no-c-format
+msgid ""
+"In the above example, both <literal>User</literal> and <literal>UserRole</"
+"literal> are application-specific entity beans. The <literal>roles</literal> "
+"parameter is populated with the roles that the user is a member of, which "
+"should be added to the <literal>Set</literal> as literal string values, e.g. "
+"\"admin\", \"user\". In this case, if the user record is not found and a "
+"<literal>NoResultException</literal> thrown, the authentication method "
+"returns <literal>false</literal> to indicate the authentication failed."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:115
+#, no-c-format
+msgid "Writing a login form"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:116
+#, no-c-format
+msgid ""
+"The <literal>Identity</literal> component provides both <literal>username</"
+"literal> and <literal>password</literal> properties, catering for the most "
+"common authentication scenario. These properties can be bound directly to "
+"the username and password fields on a login form. Once these properties are "
+"set, calling the <literal>identity.login()</literal> method will "
+"authenticate the user using the provided credentials. Here's an example of a "
+"simple login form:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:119
+#, no-c-format
+msgid ""
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"name\" value=\"Username\"/&gt;\n"
+"    &lt;h:inputText id=\"name\" value=\"#{identity.username}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"password\" value=\"Password\"/&gt;\n"
+"    &lt;h:inputSecret id=\"password\" value=\"#{identity.password}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;div&gt;\n"
+"    &lt;h:commandButton value=\"Login\" action=\"#{identity.login}\"/&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:120
+#, no-c-format
+msgid ""
+"Similarly, logging out the user is done by calling <literal>#{identity."
+"logout}</literal>. Calling this action will clear the security state of the "
+"currently authenticated user."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:123
+#, no-c-format
+msgid "Simplified Configuration - Summary"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:124
+#, no-c-format
+msgid ""
+"So to sum up, there are the three easy steps to configure authentication:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:129
+#, no-c-format
+msgid ""
+"Configure an authentication method in <literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:134
+#, no-c-format
+msgid "Write an authentication method."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:139
+#, no-c-format
+msgid "Write a login form so that the user can authenticate."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:144
+#, no-c-format
+msgid "Handling Security Exceptions"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:145
+#, no-c-format
+msgid ""
+"To prevent users from receiving the default error page in response to a "
+"security error, it's recommended that <literal>pages.xml</literal> is "
+"configured to redirect security errors to a more \"pretty\" page. The two "
+"main types of exceptions thrown by the security API are:"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:150
+#, no-c-format
+msgid ""
+"<literal>NotLoggedInException</literal> - This exception is thrown if the "
+"user attempts to access a restricted action or page when they are not logged "
+"in."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:155
+#, no-c-format
+msgid ""
+"<literal>AuthorizationException</literal> - This exception is only thrown if "
+"the user is already logged in, and they have attempted to access a "
+"restricted action or page for which they do not have the necessary "
+"privileges."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:160
+#, no-c-format
+msgid ""
+"In the case of a <literal>NotLoggedInException</literal>, it is recommended "
+"that the user is redirected to either a login or registration page so that "
+"they can log in. For an <literal>AuthorizationException</literal>, it may be "
+"useful to redirect the user to an error page. Here's an example of a "
+"<literal>pages.xml</literal> file that redirects both of these security "
+"exceptions:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:163
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"\n"
+"    ...\n"
+"    \n"
+"    &lt;exception class=\"org.jboss.seam.security.NotLoggedInException"
+"\"&gt;\n"
+"        &lt;redirect view-id=\"/login.xhtml\"&gt;\n"
+"            &lt;message&gt;You must be logged in to perform this action&lt;/"
+"message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"    \n"
+"    &lt;exception class=\"org.jboss.seam.security.AuthorizationException"
+"\"&gt;\n"
+"        &lt;end-conversation/&gt;\n"
+"        &lt;redirect view-id=\"/security_error.xhtml\"&gt;\n"
+"            &lt;message&gt;\n"
+"                You do not have the necessary security privileges to perform "
+"this action.\n"
+"            &lt;/message&gt;\n"
+"        &lt;/redirect&gt;\n"
+"    &lt;/exception&gt;\n"
+"  \n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:164
+#, no-c-format
+msgid ""
+"Most web applications require even more sophisticated handling of login "
+"redirection, so Seam includes some special functionality for handling this "
+"problem."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:167
+#, no-c-format
+msgid "Login Redirection"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:168
+#, no-c-format
+msgid ""
+"You can ask Seam to redirect the user to a login screen when an "
+"unauthenticated user tries to access a particular view (or wildcarded view "
+"id) as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:171
+#, no-c-format
+msgid ""
+"&lt;pages login-view-id=\"/login.xhtml\"&gt;\n"
+"\n"
+"    &lt;page view-id=\"/members/*\" login-required=\"true\"/&gt;\n"
+"    \n"
+"    ...\n"
+"    \n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:172
+#, no-c-format
+msgid ""
+"(This is less of a blunt instrument than the exception handler shown above, "
+"but should probably be used in conjunction with it.)"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:175
+#, no-c-format
+msgid ""
+"After the user logs in, we want to automatically send them back where they "
+"came from, so they can retry the action that required logging in. If you add "
+"the following event listeners to <literal>components.xml</literal>, attempts "
+"to access a restricted view while not logged in will be remembered, so that "
+"upon the user successfully logging in they will be redirected to the "
+"originally requested view, with any page parameters that existed in the "
+"original request."
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:178
+#, no-c-format
+msgid ""
+"&lt;event type=\"org.jboss.seam.notLoggedIn\"&gt;\n"
+"    &lt;action expression=\"#{redirect.captureCurrentView}\"/&gt;\n"
+"&lt;/event&gt;\n"
+"    \n"
+"&lt;event type=\"org.jboss.seam.postAuthenticate\"&gt;\n"
+"    &lt;action expression=\"#{redirect.returnToCapturedView}\"/&gt;\n"
+"&lt;/event&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:179
+#, no-c-format
+msgid ""
+"Note that login redirection is implemented as a conversation-scoped "
+"mechanism, so don't end the conversation in your <literal>authenticate()</"
+"literal> method."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:182
+#, no-c-format
+msgid "Advanced Authentication Features"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:183
+#, no-c-format
+msgid ""
+"This section explores some of the advanced features provided by the security "
+"API for addressing more complex security requirements."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:186
+#, no-c-format
+msgid "Using your container's JAAS configuration"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:187
+#, no-c-format
+msgid ""
+"If you would rather not use the simplified JAAS configuration provided by "
+"the Seam Security API, you may instead delegate to the default system JAAS "
+"configuration by providing a <literal>jaasConfigName</literal> property in "
+"<literal>components.xml</literal>. For example, if you are using JBoss AS "
+"and wish to use the <literal>other</literal> policy (which uses the "
+"<literal>UsersRolesLoginModule</literal> login module provided by JBoss AS), "
+"then the entry in <literal>components.xml</literal> would look like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:190
+#, no-c-format
+msgid ""
+"&lt;security:identity authenticate-method=\"#{authenticator.authenticate}"
+"\" \n"
+"                      jaas-config-name=\"other\"/&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:191
+#, no-c-format
+msgid "Authorization"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:192
+#, no-c-format
+msgid ""
+"There are a number of authorization features provided by the Seam Security "
+"API for securing access to components, component methods, and pages. This "
+"section describes each of these. An important thing to note is that if you "
+"wish to use any of the advanced features (such as rule-based permissions) "
+"then your <literal>components.xml</literal> must be configured to support "
+"this - see the Configuration section above."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:195
+#, no-c-format
+msgid "Core concepts"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:196
+#, no-c-format
+msgid ""
+"Each of the authorization mechanisms provided by the Seam Security API are "
+"built upon the concept of a user being granted roles and/or permissions. A "
+"role is a <emphasis>group</emphasis>, or <emphasis>type</emphasis>, of user "
+"that may have been granted certain privileges for performing one or more "
+"specific actions within an application. A permission on the other hand is a "
+"privilege (sometimes once-off) for performing a single, specific action. It "
+"is entirely possible to build an application using nothing but permissions, "
+"however roles offer a higher level of convenience when granting privileges "
+"to groups of users."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:199
+#, no-c-format
+msgid ""
+"Roles are simple, consisting of only a name such as \"admin\", \"user\", "
+"\"customer\", etc. Permissions consist of both a name and an action, and are "
+"represented within this documentation in the form <literal>name:action</"
+"literal>, for example <literal>customer:delete</literal>, or "
+"<literal>customer:insert</literal>."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:202
+#, no-c-format
+msgid "Securing components"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:203
+#, no-c-format
+msgid ""
+"Let's start by examining the simplest form of authorization, component "
+"security, starting with the <literal>@Restrict</literal> annotation."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:206
+#, no-c-format
+msgid "The @Restrict annotation"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:207
+#, no-c-format
+msgid ""
+"Seam components may be secured either at the method or the class level, "
+"using the <literal>@Restrict</literal> annotation. If both a method and it's "
+"declaring class are annotated with <literal>@Restrict</literal>, the method "
+"restriction will take precedence (and the class restriction will not apply). "
+"If a method invocation fails a security check, then an exception will be "
+"thrown as per the contract for <literal>Identity.checkRestriction()</"
+"literal> (see Inline Restrictions). A <literal>@Restrict</literal> on just "
+"the component class itself is equivalent to adding <literal>@Restrict</"
+"literal> to each of its methods."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:210
+#, no-c-format
+msgid ""
+"An empty <literal>@Restrict</literal> implies a permission check of "
+"<literal>componentName:methodName</literal>. Take for example the following "
+"component method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:213
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class AccountAction {\n"
+"    @Restrict public void delete() {\n"
+"      ...\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:214
+#, no-c-format
+msgid ""
+"In this example, the implied permission required to call the <literal>delete"
+"()</literal> method is <literal>account:delete</literal>. The equivalent of "
+"this would be to write <literal>@Restrict(\"#{s:hasPermission"
+"('account','delete',null)}\")</literal>. Now let's look at another example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:217
+#, no-c-format
+msgid ""
+"@Restrict @Name(\"account\")\n"
+"public class AccountAction {\n"
+"    public void insert() {\n"
+"      ...\n"
+"    }\n"
+"    @Restrict(\"#{s:hasRole('admin')}\") \n"
+"    public void delete() {\n"
+"      ...\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:218
+#, no-c-format
+msgid ""
+"This time, the component class itself is annotated with <literal>@Restrict</"
+"literal>. This means that any methods without an overriding "
+"<literal>@Restrict</literal> annotation require an implicit permission "
+"check. In the case of this example, the <literal>insert()</literal> method "
+"requires a permission of <literal>account:insert</literal>, while the "
+"<literal>delete()</literal> method requires that the user is a member of the "
+"<literal>admin</literal> role."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:221
+#, no-c-format
+msgid ""
+"Before we go any further, let's address the <literal>#{s:hasRole()}</"
+"literal> expression seen in the above example. Both <literal>s:hasRole</"
+"literal> and <literal>s:hasPermission</literal> are EL functions, which "
+"delegate to the correspondingly named methods of the <literal>Identity</"
+"literal> class. These functions can be used within any EL expression "
+"throughout the entirety of the security API."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:224
+#, no-c-format
+msgid ""
+"Being an EL expression, the value of the <literal>@Restrict</literal> "
+"annotation may reference any objects that exist within a Seam context. This "
+"is extremely useful when performing permission checks for a specific object "
+"instance. Look at this example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:227
+#, no-c-format
+msgid ""
+"@Name(\"account\")\n"
+"public class AccountAction {\n"
+"    @In Account selectedAccount;\n"
+"    @Restrict(\"#{s:hasPermission('account','modify',selectedAccount)}\")\n"
+"    public void modify() {\n"
+"        selectedAccount.modify();\n"
+"    }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:228
+#, no-c-format
+msgid ""
+"The interesting thing to note from this example is the reference to "
+"<literal>selectedAccount</literal> seen within the <literal>hasPermission()</"
+"literal> function call. The value of this variable will be looked up from "
+"within the Seam context, and passed to the <literal>hasPermission()</"
+"literal> method in <literal>Identity</literal>, which in this case can then "
+"determine if the user has the required permission for modifying the "
+"specified <literal>Account</literal> object."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:231
+#, no-c-format
+msgid "Inline restrictions"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:232
+#, no-c-format
+msgid ""
+"Sometimes it might be desirable to perform a security check in code, without "
+"using the <literal>@Restrict</literal> annotation. In this situation, simply "
+"use <literal>Identity.checkRestriction()</literal> to evaluate a security "
+"expression, like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:235
+#, no-c-format
+msgid ""
+"public void deleteCustomer() {\n"
+"    Identity.instance().checkRestriction(\"#{s:hasPermission"
+"('customer','delete',\n"
+"        selectedCustomer)}\");\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:236
+#, no-c-format
+msgid ""
+"If the expression specified doesn't evaluate to <literal>true</literal>, "
+"either"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:241
+#, no-c-format
+msgid ""
+"if the user is not logged in, a <literal>NotLoggedInException</literal> "
+"exception is thrown or"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:246
+#, no-c-format
+msgid ""
+"if the user is logged in, an <literal>AuthorizationException</literal> "
+"exception is thrown."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:251
+#, no-c-format
+msgid ""
+"It is also possible to call the <literal>hasRole()</literal> and "
+"<literal>hasPermission()</literal> methods directly from Java code:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:254
+#, no-c-format
+msgid ""
+"if (!Identity.instance().hasRole(\"admin\"))\n"
+"     throw new AuthorizationException(\"Must be admin to perform this action"
+"\");\n"
+"\n"
+"if (!Identity.instance().hasPermission(\"customer\", \"create\", null))\n"
+"     throw new AuthorizationException(\"You may not create new customers\");"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:255
+#, no-c-format
+msgid "Security in the user interface"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:256
+#, no-c-format
+msgid ""
+"One indication of a well designed user interface is that the user is not "
+"presented with options for which they don't have the necessary privileges to "
+"use. Seam Security allows conditional rendering of either 1) sections of a "
+"page or 2) individual controls, based upon the privileges of the user, using "
+"the very same EL expressions that are used for component security."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:259
+#, no-c-format
+msgid ""
+"Let's take a look at some examples of interface security. First of all, "
+"let's pretend that we have a login form that should only be rendered if the "
+"user is not already logged in. Using the <literal>identity.isLoggedIn()</"
+"literal> property, we can write this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:262
+#, no-c-format
+msgid ""
+"&lt;h:form class=\"loginForm\" rendered=\"#{not identity.loggedIn}\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:263
+#, no-c-format
+msgid ""
+"If the user isn't logged in, then the login form will be rendered - very "
+"straight forward so far. Now let's pretend there is a menu on the page that "
+"contains some actions which should only be accessible to users in the "
+"<literal>manager</literal> role. Here's one way that these could be written:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:266
+#, no-c-format
+msgid ""
+"&lt;h:outputLink action=\"#{reports.listManagerReports}\" rendered=\"#{s:"
+"hasRole('manager')}\"&gt;\n"
+"    Manager Reports\n"
+"&lt;/h:outputLink&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:267
+#, no-c-format
+msgid ""
+"This is also quite straight forward. If the user is not a member of the "
+"<literal>manager</literal> role, then the outputLink will not be rendered. "
+"The <literal>rendered</literal> attribute can generally be used on the "
+"control itself, or on a surrounding <literal>&lt;s:div&gt;</literal> or "
+"<literal>&lt;s:span&gt;</literal> control."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:270
+#, no-c-format
+msgid ""
+"Now for something more complex. Let's say you have a <literal>h:dataTable</"
+"literal> control on a page listing records for which you may or may not wish "
+"to render action links depending on the user's privileges. The <literal>s:"
+"hasPermission</literal> EL function allows us to pass in an object parameter "
+"which can be used to determine whether the user has the requested permission "
+"for that object or not. Here's how a dataTable with secured links might look:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:273
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{clients}\" var=\"cl\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Name&lt;/f:facet&gt;\n"
+"        #{cl.name}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;City&lt;/f:facet&gt;\n"
+"        #{cl.city}\n"
+"    &lt;/h:column&gt;   \n"
+"    &lt;h:column&gt;\n"
+"        &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"        &lt;s:link value=\"Modify Client\" action=\"#{clientAction.modify}"
+"\"\n"
+"                rendered=\"#{s:hasPermission('client','modify',cl)\"/&gt;\n"
+"        &lt;s:link value=\"Delete Client\" action=\"#{clientAction.delete}"
+"\"\n"
+"                rendered=\"#{s:hasPermission('client','delete',cl)\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:274
+#, no-c-format
+msgid "Securing pages"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:275
+#, no-c-format
+msgid ""
+"Page security requires that the application is using a <literal>pages.xml</"
+"literal> file, however is extremely simple to configure. Simply include a "
+"<literal>&lt;restrict/&gt;</literal> element within the <literal>page</"
+"literal> elements that you wish to secure. By default, if a value is not "
+"provided for the <literal>restrict</literal> element, an implied permission "
+"of <literal>{viewId}:render</literal> will be checked for whenever accessing "
+"that page. Otherwise the value will be evaluated as a standard security "
+"expression. Here's a couple of examples:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:278
+#, no-c-format
+msgid ""
+"&lt;page view-id=\"/settings.xhtml\"&gt;\n"
+"    &lt;restrict/&gt;\n"
+"&lt;/page&gt;\n"
+"        \n"
+"&lt;page view-id=\"/reports.xhtml\"&gt;    \n"
+"    &lt;restrict&gt;#{s:hasRole('admin')}&lt;/restrict&gt;\n"
+"&lt;/page&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:279
+#, no-c-format
+msgid ""
+"In the above example, the first page has an implied permission restriction "
+"of <literal>/settings.xhtml:render</literal>, while the second one checks "
+"that the user is a member of the <literal>admin</literal> role."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:282
+#, no-c-format
+msgid "Securing Entities"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:283
+#, no-c-format
+msgid ""
+"Seam security also makes it possible to apply security restrictions to read, "
+"insert, update and delete actions for entities."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:286
+#, no-c-format
+msgid ""
+"To secure all actions for an entity class, add a <literal>@Restrict</"
+"literal> annotation on the class itself:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:289
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"customer\")\n"
+"@Restrict\n"
+"public class Customer {\n"
+"  ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:290
+#, no-c-format
+msgid ""
+"If no expression is specified in the <literal>@Restrict</literal> "
+"annotation, the default security check that is performed is a permission "
+"check of <literal>entityName:action</literal>, where <literal>entityName</"
+"literal> is the name of the entity (or the class name if no @Name is "
+"specified), and the <literal>action</literal> is either <literal>read</"
+"literal>, <literal>insert</literal>, <literal>update</literal> or "
+"<literal>delete</literal>."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:293
+#, no-c-format
+msgid ""
+"It is also possible to only restrict certain actions, by placing a "
+"<literal>@Restrict</literal> annotation on the relevent entity lifecycle "
+"method (annotated as follows):"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:298
+#, no-c-format
+msgid ""
+"<literal>@PostLoad</literal> - Called after an entity instance is loaded "
+"from the database. Use this method to configure a <literal>read</literal> "
+"permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:303
+#, no-c-format
+msgid ""
+"<literal>@PrePersist</literal> - Called before a new instance of the entity "
+"is inserted. Use this method to configure an <literal>insert</literal> "
+"permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:308
+#, no-c-format
+msgid ""
+"<literal>@PreUpdate</literal> - Called before an entity is updated. Use this "
+"method to configure an <literal>update</literal> permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:313
+#, no-c-format
+msgid ""
+"<literal>@PreRemove</literal> - Called before an entity is deleted. Use this "
+"method to configure a <literal>delete</literal> permission."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:318
+#, no-c-format
+msgid ""
+"Here's an example of how an entity would be configured to perform a security "
+"check for any <literal>insert</literal> operations. Please note that the "
+"method is not required to do anything, the only important thing in regard to "
+"security is how it is annotated:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:321
+#, no-c-format
+msgid ""
+"@PrePersist @Restrict\n"
+"  public void prePersist() {}"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:322
+#, no-c-format
+msgid ""
+"And here's an example of an entity permission rule that checks if the "
+"authenticated user is allowed to create a new blog entry (from the seamspace "
+"example):"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:325
+#, no-c-format
+msgid ""
+"rule InsertMemberBlog\n"
+"  no-loop\n"
+"  activation-group \"permissions\"\n"
+"when\n"
+"  c: PermissionCheck(name == \"memberBlog\", action == \"insert\", granted "
+"== false)\n"
+"  Principal(nm : name)\n"
+"  MemberBlog(mbr : member -&gt; (mbr.getUsername().equals(nm)))\n"
+"then\n"
+"  c.grant();\n"
+"  modify(c);\n"
+"end;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:326
+#, no-c-format
+msgid ""
+"Finally, we need to install a listener class that integrates Seam security "
+"with your JPA provider."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:329
+#, no-c-format
+msgid "Entity security with JPA"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:330
+#, no-c-format
+msgid ""
+"Security checks for EJB3 entity beans are performed with an "
+"<literal>EntityListener</literal>. You can install this listener by using "
+"the following <literal>META-INF/orm.xml</literal> file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:333
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;entity-mappings xmlns=\"http://java.sun.com/xml/ns/persistence/orm\"\n"
+"                 xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"                 xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence/"
+"orm \n"
+"                 http://java.sun.com/xml/ns/persistence/orm_1_0.xsd\"\n"
+"                 version=\"1.0\"&gt;\n"
+"                 \n"
+"    &lt;persistence-unit-metadata&gt;\n"
+"        &lt;persistence-unit-defaults&gt;\n"
+"            &lt;entity-listeners&gt;\n"
+"                &lt;entity-listener class=\"org.jboss.seam.security."
+"EntitySecurityListener\"/&gt;\n"
+"            &lt;/entity-listeners&gt;\n"
+"        &lt;/persistence-unit-defaults&gt;\n"
+"    &lt;/persistence-unit-metadata&gt;\n"
+"    \n"
+"&lt;/entity-mappings&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:334
+#, no-c-format
+msgid "Entity security with Hibernate"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:335
+#, no-c-format
+msgid ""
+"If you are using a Hibernate <literal>SessionFactory</literal> configured "
+"via Seam, you don't need to do anything special to use entity security."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:338
+#, no-c-format
+msgid "Writing Security Rules"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:339
+#, no-c-format
+msgid ""
+"Up to this point there has been a lot of mention of permissions, but no "
+"information about how permissions are actually defined or granted. This "
+"section completes the picture, by explaining how permission checks are "
+"processed, and how to implement permission checks for a Seam application."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:342
+#, no-c-format
+msgid "Permissions Overview"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:343
+#, no-c-format
+msgid ""
+"So how does the security API know whether a user has the <literal>customer:"
+"modify</literal> permission for a specific customer? Seam Security provides "
+"quite a novel method for determining user permissions, based on JBoss Rules. "
+"A couple of the advantages of using a rule engine are 1) a centralized "
+"location for the business logic that is behind each user permission, and 2) "
+"speed - JBoss Rules uses very efficient algorithms for evaluating large "
+"numbers of complex rules involving multiple conditions."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:346
+#, no-c-format
+msgid "Configuring a rules file"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:347
+#, no-c-format
+msgid ""
+"Seam Security expects to find a <literal>RuleBase</literal> component called "
+"<literal>securityRules</literal> which it uses to evaluate permission "
+"checks. This is configured in <literal>components.xml</literal> as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:350
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:security=\"http://jboss.com/products/seam/security\"\n"
+"            xmlns:drools=\"http://jboss.com/products/seam/drools\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                     http://jboss.com/products/seam/core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components  \n"
+"                     http://jboss.com/products/seam/components-1.2.xsd\n"
+"                 http://jboss.com/products/seam/drools \n"
+"                     http://jboss.com/products/seam/drools-1.2.xsd\"\n"
+"                 http://jboss.com/products/seam/security \n"
+"                     http://jboss.com/products/seam/security-1.2.xsd"
+"\"&gt;                 \n"
+"        \n"
+"   &lt;drools:rule-base name=\"securityRules\"&gt;\n"
+"       &lt;drools:rule-files&gt;\n"
+"           &lt;value&gt;/META-INF/security.drl&lt;/value&gt;\n"
+"       &lt;/drools:rule-files&gt;\n"
+"   &lt;/drools:rule-base&gt;    \n"
+"   \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:351
+#, no-c-format
+msgid ""
+"Once the <literal>RuleBase</literal> component is configured, it's time to "
+"write the security rules."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:354
+#, no-c-format
+msgid "Creating a security rules file"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:355
+#, no-c-format
+msgid ""
+"For this step you need to create a file called <literal>security.drl</"
+"literal> in the <literal>/META-INF</literal> directory of your application's "
+"jar file. In actual fact this file can be called anything you want, and "
+"exist in any location as long as it is configured appropriately in "
+"<literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:358
+#, no-c-format
+msgid ""
+"So what should the security rules file contain? At this stage it might be a "
+"good idea to at least skim through the JBoss Rules documentation, however to "
+"get started here's an extremely simple example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:361
+#, no-c-format
+msgid ""
+"package MyApplicationPermissions;\n"
+"\n"
+"import org.jboss.seam.security.PermissionCheck;\n"
+"import org.jboss.seam.security.Role;\n"
+"\n"
+"rule CanUserDeleteCustomers\n"
+"when\n"
+"  c: PermissionCheck(name == \"customer\", action == \"delete\")\n"
+"  Role(name == \"admin\")\n"
+"then\n"
+"  c.grant();\n"
+"end;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:362
+#, no-c-format
+msgid ""
+"Let's break this down. The first thing we see is the package declaration. A "
+"package in JBoss Rules is essentially a collection of rules. The package "
+"name can be anything you want - it doesn't relate to anything else outside "
+"the scope of the rule base."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:365
+#, no-c-format
+msgid ""
+"The next thing we can notice is a couple of import statements for the "
+"<literal>PermissionCheck</literal> and <literal>Role</literal> classes. "
+"These imports inform the rules engine that we'll be referencing these "
+"classes within our rules."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:368
+#, no-c-format
+msgid ""
+"Finally we have the code for the rule. Each rule within a package should be "
+"given a unique name (usually describing the purpose of the rule). In this "
+"case our rule is called <literal>CanUserDeleteCustomers</literal> and will "
+"be used to check whether a user is allowed to delete a customer record."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:371
+#, no-c-format
+msgid ""
+"Looking at the body of the rule definition we can notice two distinct "
+"sections. Rules have what is known as a left hand side (LHS) and a right "
+"hand side (RHS). The LHS consists of the conditional part of the rule, i.e. "
+"a list of conditions which must be satisfied for the rule to fire. The LHS "
+"is represented by the <literal>when</literal> section. The RHS is the "
+"consequence, or action section of the rule that will only be fired if all of "
+"the conditions in the LHS are met. The RHS is represented by the "
+"<literal>then</literal> section. The end of the rule is denoted by the "
+"<literal>end;</literal> line."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:374
+#, no-c-format
+msgid ""
+"If we look at the LHS of the rule, we see two conditions listed there. Let's "
+"examine the first condition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:377
+#, no-c-format
+msgid "c: PermissionCheck(name == \"customer\", action == \"delete\")"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:378
+#, no-c-format
+msgid ""
+"In plain english, this condition is stating that there must exist a "
+"<literal>PermissionCheck</literal> object with a <literal>name</literal> "
+"property equal to \"customer\", and an <literal>action</literal> property "
+"equal to \"delete\" within the working memory. What is the working memory? "
+"It is a session-scoped object that contains the contextual information that "
+"is required by the rules engine to make a decision about a permission check. "
+"Each time the <literal>hasPermission()</literal> method is called, a "
+"temporary <literal>PermissionCheck</literal> object, or <emphasis>Fact</"
+"emphasis>, is asserted into the working memory. This "
+"<literal>PermissionCheck</literal> corresponds exactly to the permission "
+"that is being checked, so for example if you call <literal>hasPermission"
+"(\"account\", \"create\", null)</literal> then a <literal>PermissionCheck</"
+"literal> object with a <literal>name</literal> equal to \"account\" and "
+"<literal>action</literal> equal to \"create\" will be asserted into the "
+"working memory for the duration of the permission check."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:381
+#, no-c-format
+msgid ""
+"So what else is in the working memory? Besides the short-lived temporary "
+"facts asserted during a permission check, there are some longer-lived "
+"objects in the working memory that stay there for the entire duration of a "
+"user being authenticated. These include any <literal>java.security."
+"Principal</literal> objects that are created as part of the authentication "
+"process, plus a <literal>org.jboss.seam.security.Role</literal> object for "
+"each of the roles that the user is a member of. It is also possible to "
+"assert additional long-lived facts into the working memory by calling "
+"<literal>Identity.instance().getSecurityContext().assertObject()</literal>, "
+"passing the object as a parameter."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:384
+#, no-c-format
+msgid ""
+"Getting back to our simple example, we can also notice that the first line "
+"of our LHS is prefixed with <literal>c:</literal>. This is a variable "
+"binding, and is used to refer back to the object that is matched by the "
+"condition. Moving onto the second line of our LHS, we see this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:387
+#, no-c-format
+msgid "Role(name == \"admin\")"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:388
+#, no-c-format
+msgid ""
+"This condition simply states that there must be a <literal>Role</literal> "
+"object with a <literal>name</literal> of \"admin\" within the working "
+"memory. As mentioned, user roles are asserted into the working memory as "
+"long-lived facts. So, putting both conditions together, this rule is "
+"essentially saying \"I will fire if you are checking for the "
+"<literal>customer:delete</literal> permission and the user is a member of "
+"the <literal>admin</literal> role\"."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:391
+#, no-c-format
+msgid ""
+"So what is the consequence of the rule firing? Let's take a look at the RHS "
+"of the rule:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:394
+#, no-c-format
+msgid "c.grant()"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:395
+#, no-c-format
+msgid ""
+"The RHS consists of Java code, and in this case is invoking the "
+"<literal>grant()</literal> method of the <literal>c</literal> object, which "
+"as already mentioned is a variable binding for the <literal>PermissionCheck</"
+"literal> object. Besides the <literal>name</literal> and <literal>action</"
+"literal> properties of the <literal>PermissionCheck</literal> object, there "
+"is also a <literal>granted</literal> property which is initially set to "
+"<literal>false</literal>. Calling <literal>grant()</literal> on a "
+"<literal>PermissionCheck</literal> sets the <literal>granted</literal> "
+"property to <literal>true</literal>, which means that the permission check "
+"was successful, allowing the user to carry out whatever action the "
+"permission check was intended for."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:398
+#, no-c-format
+msgid "SSL Security"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:399
+#, no-c-format
+msgid ""
+"Seam includes basic support for serving sensitive pages via the HTTPS "
+"protocol. This is easily configured by specifying a <literal>scheme</"
+"literal> for the page in <literal>pages.xml</literal>. The following example "
+"shows how the view <literal>/login.xhtml</literal> is configured to use "
+"HTTPS:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:402
+#, no-c-format
+msgid "&lt;page view-id=\"/login.xhtml\" scheme=\"https\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:403
+#, no-c-format
+msgid ""
+"This configuration is automatically extended to both <literal>s:link</"
+"literal> and <literal>s:button</literal> JSF controls, which (when "
+"specifying the <literal>view</literal>) will also render the link using the "
+"correct protocol. Based on the previous example, the following link will use "
+"the HTTPS protocol because <literal>/login.xhtml</literal> is configured to "
+"use it:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:406
+#, no-c-format
+msgid "&lt;s:link view=\"/login.xhtml\" value=\"Login\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:407
+#, no-c-format
+msgid ""
+"Browsing directly to a view when using the <emphasis>incorrect</emphasis> "
+"protocol will cause a redirect to the same view using the <emphasis>correct</"
+"emphasis> protocol. For example, browsing to a page that has <literal>scheme="
+"\"https\"</literal> using HTTP will cause a redirect to the same page using "
+"HTTPS."
+msgstr ""
+
+#. Tag: para
+#: Security.xml:410
+#, no-c-format
+msgid ""
+"It is also possible to configure a default <literal>scheme</literal> for all "
+"pages. This is actually quite important, as you might only wish to use HTTPS "
+"for a few pages, and if no default scheme is specified then the default "
+"behavior is to continue using the current scheme. What this means is that "
+"once you enter a page with HTTPS, then HTTPS will continue to be used even "
+"if you navigate away to other non-HTTPS pages (a bad thing!). So it is "
+"strongly recommended to include a default <literal>scheme</literal>, by "
+"configuring it on the default (<literal>\"*\"</literal>) view:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:413
+#, no-c-format
+msgid "&lt;page view-id=\"*\" scheme=\"http\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:414
+#, no-c-format
+msgid ""
+"Of course, if <emphasis>none</emphasis> of the pages in your application use "
+"HTTPS then it is not required to specify a default scheme."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:417
+#, no-c-format
+msgid "Implementing a Captcha Test"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:418
+#, no-c-format
+msgid ""
+"Though strictly not part of the security API, it might be useful in certain "
+"circumstances (such as new user registrations, posting to a public blog or "
+"forum) to implement a Captcha (<emphasis>C</emphasis>ompletely <emphasis>A</"
+"emphasis>utomated <emphasis>P</emphasis>ublic <emphasis>T</emphasis>uring "
+"test to tell <emphasis>C</emphasis>omputers and <emphasis>H</emphasis>umans "
+"<emphasis>A</emphasis>part) to prevent automated bots from interacting with "
+"your application. Seam provides seamless integration with JCaptcha, an "
+"excellent library for generating Captcha challenges. If you wish to use the "
+"captcha feature in your application you need to include the jcaptcha-* jar "
+"file from the Seam lib directory in your project, and register it in "
+"<literal>application.xml</literal> as a java module."
+msgstr ""
+
+#. Tag: title
+#: Security.xml:421
+#, no-c-format
+msgid "Configuring the Captcha Servlet"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:422
+#, no-c-format
+msgid ""
+"To get up and running, it is necessary to configure the Seam Resource "
+"Servlet, which will provide the Captcha challenge images to your pages. This "
+"requires the following entry in <literal>web.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:425
+#, no-c-format
+msgid ""
+"&lt;servlet&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;servlet-class&gt;org.jboss.seam.servlet.ResourceServlet&lt;/servlet-"
+"class&gt;\n"
+"&lt;/servlet&gt;\n"
+"    \n"
+"&lt;servlet-mapping&gt;\n"
+"    &lt;servlet-name&gt;Seam Resource Servlet&lt;/servlet-name&gt;\n"
+"    &lt;url-pattern&gt;/seam/resource/*&lt;/url-pattern&gt;\n"
+"&lt;/servlet-mapping&gt;"
+msgstr ""
+
+#. Tag: title
+#: Security.xml:426
+#, no-c-format
+msgid "Adding a Captcha to a page"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:427
+#, no-c-format
+msgid ""
+"Adding a captcha challenge to a page is extremely easy. Seam provides a page-"
+"scoped component, <literal>captcha</literal>, which provides everything that "
+"is required, including built-in captcha validation. Here's an example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Security.xml:430
+#, no-c-format
+msgid ""
+"&lt;div&gt;\n"
+"    &lt;h:graphicImage value=\"/seam/resource/captcha?#{captcha.id}\"/&gt;\n"
+"&lt;/div&gt;\n"
+"  \n"
+"&lt;div&gt;\n"
+"    &lt;h:outputLabel for=\"verifyCaptcha\"&gt;Enter the above letters&lt;/h:"
+"outputLabel&gt;\n"
+"    &lt;h:inputText id=\"verifyCaptcha\" value=\"#{captcha.response}\" "
+"required=\"true\"/&gt;\n"
+"    &lt;div class=\"validationError\"&gt;&lt;h:message for=\"verifyCaptcha\"/"
+"&gt;&lt;/div&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Security.xml:431
+#, no-c-format
+msgid ""
+"That's all there is to it. The <literal>graphicImage</literal> control "
+"displays the Captcha challenge, and the <literal>inputText</literal> "
+"receives the user's response. The response is automatically validated "
+"against the Captcha when the form is submitted."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Spring.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Spring.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Spring.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,416 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Spring.xml:10
+#, no-c-format
+msgid "Spring Framework integration"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:11
+#, no-c-format
+msgid ""
+"The Spring integration module allows easy migration of Spring-based projects "
+"to Seam and allows Spring applications to take advantage of key Seam "
+"features like conversations and Seam's more sophisticated persistence "
+"context management."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:14
+#, no-c-format
+msgid "Seam's support for Spring provides the ability to:"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:19
+#, no-c-format
+msgid "inject Seam component instances into Spring beans"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:24
+#, no-c-format
+msgid "inject Spring beans into Seam components"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:29
+#, no-c-format
+msgid "turn Spring beans into Seam components"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:34
+#, no-c-format
+msgid "allow Spring beans to live in any Seam context"
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:40
+#, no-c-format
+msgid "Injecting Seam components into Spring beans"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:41
+#, no-c-format
+msgid ""
+"Injecting Seam component instances into Spring beans is accomplished using "
+"the <literal>&lt;seam:instance/&gt;</literal> namespace handler. To enable "
+"the Seam namespace handler, the Seam namespace must be added to the Spring "
+"beans definition file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:44
+#, no-c-format
+msgid ""
+"&lt;beans xmlns=\"http://www.springframework.org/schema/beans\"\n"
+"    xmlns:seam=\"http://jboss.com/products/seam/spring\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://www.springframework.org/schema/beans \n"
+"                        http://www.springframework.org/schema/beans/spring-"
+"beans-2.0.xsd\n"
+"                        http://jboss.com/products/seam/spring \n"
+"                        http://jboss.com/products/seam/spring-1.2.xsd\"&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:45
+#, no-c-format
+msgid "Now any Seam component may be injected into any Spring bean:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:48
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\"&gt;\n"
+"        &lt;seam:instance name=\"someComponent\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:49
+#, no-c-format
+msgid "An EL expression may be used instead of a component name:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:52
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\"&gt;\n"
+"        &lt;seam:instance name=\"#{someExpression}\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:53
+#, no-c-format
+msgid ""
+"Seam component instances may even be made available for injection into "
+"Spring beans by a Spring bean id."
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:56
+#, no-c-format
+msgid ""
+"&lt;seam:instance name=\"someComponent\" id=\"someSeamComponentInstance\"/"
+"&gt;\n"
+"\n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;property name=\"someProperty\" ref=\"someSeamComponentInstance"
+"\"&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:57
+#, no-c-format
+msgid "Now for the caveat!"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:60
+#, no-c-format
+msgid ""
+"Seam was designed from the ground up to support a stateful component model "
+"with multiple contexts. Spring was not. Unlike Seam bijection, Spring "
+"injection does not occur at method invocation time. Instead, injection "
+"happens only when the Spring bean is instantiated. So the instance available "
+"when the bean is instantiated will be the same instance that the bean uses "
+"for the entire life of the bean. For example, if a Seam "
+"<literal>CONVERSATION</literal>-scoped component instance is directly "
+"injected into a singleton Spring bean, that singleton will hold a reference "
+"to the same instance long after the conversation is over! We call this "
+"problem <emphasis>scope impedance</emphasis>. Seam bijection ensures that "
+"scope impedance is maintained naturally as an invocation flows through the "
+"system. In Spring, we need to inject a proxy of the Seam component, and "
+"resolve the reference when the proxy is invoked."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:63
+#, no-c-format
+msgid ""
+"The <literal>&lt;seam:instance/&gt;</literal> tag lets us automatically "
+"proxy the Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:66
+#, no-c-format
+msgid ""
+"&lt;seam:instance id=\"seamManagedEM\" name=\"someManagedEMComponent\" proxy="
+"\"true\"/&gt;\n"
+"        \n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\"&gt;\n"
+"    &lt;property name=\"entityManager\" ref=\"seamManagedEM\"&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:67
+#, no-c-format
+msgid ""
+"This example shows one way to use a Seam-managed persistence context from a "
+"Spring bean. (A more robust way to use Seam-managed persistence contexts as "
+"a replacement for the Spring <literal>OpenEntityManagerInView</literal> "
+"filter will be provided in a future release)"
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:73
+#, no-c-format
+msgid "Injecting Spring beans into Seam components"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:74
+#, no-c-format
+msgid ""
+"It is even easier to inject Spring beans into Seam component instances. "
+"Actually, there are two possible approaches:"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:79
+#, no-c-format
+msgid "inject a Spring bean using an EL expression"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:84
+#, no-c-format
+msgid "make the Spring bean a Seam component"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:89
+#, no-c-format
+msgid ""
+"We'll discuss the second option in the next section. The easiest approach is "
+"to access the Spring beans via EL."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:92
+#, no-c-format
+msgid ""
+"The Spring <literal>DelegatingVariableResolver</literal> is an integration "
+"point Spring provides for integrating Spring with JSF. This "
+"<literal>VariableResolver</literal> makes all Spring beans available in EL "
+"by their bean id. You'll need to add the "
+"<literal>DelegatingVariableResolver</literal> to <literal>faces-config.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:95
+#, no-c-format
+msgid ""
+"&lt;application&gt;\n"
+"    &lt;variable-resolver&gt;\n"
+"        org.springframework.web.jsf.DelegatingVariableResolver\n"
+"    &lt;/variable-resolver&gt;\n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:96
+#, no-c-format
+msgid "Then you can inject Spring beans using <literal>@In</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:99
+#, no-c-format
+msgid ""
+"@In(\"#{bookingService}\")\n"
+"private BookingService bookingService;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:100
+#, no-c-format
+msgid ""
+"The use of Spring beans in EL is not limited to injection. Spring beans may "
+"be used anywhere that EL expressions are used in Seam: process and pageflow "
+"definitions, working memory assertions, etc..."
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:106
+#, no-c-format
+msgid "Making a Spring bean into a Seam component"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:107
+#, no-c-format
+msgid ""
+"The <literal>&lt;seam:component/&gt;</literal> namespace handler can be used "
+"to make any Spring bean a Seam component. Just place the <literal>&lt;seam:"
+"component/&gt;</literal> tag within the declaration of the bean that you "
+"wish to be a Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:110
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope="
+"\"prototype\"&gt;\n"
+"    &lt;seam:component/&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:111
+#, no-c-format
+msgid ""
+"By default, <literal>&lt;seam:component/&gt;</literal> will create a "
+"<literal>STATELESS</literal> Seam component with class and name provided in "
+"the bean definition. Occasionally, such as when a <literal>FactoryBean</"
+"literal> is used, the class of the Spring bean may not be the class "
+"appearing in the bean definition. In such cases the <literal>beanClass</"
+"literal> should be explicitly specified. A Seam component name may be "
+"explicitly specified in cases where there is potential for a naming conflict."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:114
+#, no-c-format
+msgid ""
+"The <literal>scope</literal> attribute of <literal>&lt;seam:component/&gt;</"
+"literal> may be used if you wish the Spring bean to be managed in a "
+"particular Seam scope. The Spring bean must be scoped to <literal>prototype</"
+"literal> if the Seam scope specified is anything other than "
+"<literal>STATELESS</literal>. Pre-existing Spring beans usually have a "
+"fundamentally stateless character, so this attribute is not usually needed."
+msgstr ""
+
+#. Tag: title
+#: Spring.xml:120
+#, no-c-format
+msgid "Seam-scoped Spring beans"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:121
+#, no-c-format
+msgid ""
+"The Seam integration package also lets you use Seam's contexts as Spring 2.0 "
+"style custom scopes. This lets you declare any Spring bean in any of Seam's "
+"contexts. However, note once again that Spring's component model was never "
+"architected to support statefulness, so please use this feature with great "
+"care. In particular, clustering of session or conversation scoped Spring "
+"beans is deeply problematic, and care must be taken when injecting a bean or "
+"component from a wider scope into a bean of a narrower scope."
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:124
+#, no-c-format
+msgid ""
+"By specifying <literal>&lt;seam:configure-scopes/&gt;</literal> once in a "
+"Spring bean factory configuration, all of the Seam scopes will be available "
+"to Spring beans as custom scopes. To associate a Spring bean with a "
+"particular Seam scope, specify the Seam scope in the <literal>scope</"
+"literal> attribute of the bean definition."
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:127
+#, no-c-format
+msgid ""
+"&lt;!-- Only needs to be specified once per bean factory--&gt;\n"
+"&lt;seam:configure-scopes/&gt;\n"
+"\n"
+"...\n"
+"\n"
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope=\"seam."
+"CONVERSATION\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:128
+#, no-c-format
+msgid ""
+"The prefix of the scope name may be changed by specifying the "
+"<literal>prefix</literal> attribute in the <literal>configure-scopes</"
+"literal> definition. (The default prefix is <literal>seam.</literal>)"
+msgstr ""
+
+#. Tag: para
+#: Spring.xml:131
+#, no-c-format
+msgid ""
+"Seam-scoped Spring beans defined this way can be injected into other Spring "
+"beans without the use of <literal>&lt;seam:instance/&gt;</literal>. However, "
+"care must be taken to ensure scope impedance is maintained. The normal "
+"approach used in Spring is to specify <literal>&lt;aop:scoped-proxy/&gt;</"
+"literal> in the bean definition. However, Seam-scoped Spring beans are "
+"<emphasis>not</emphasis> compatible with <literal>&lt;aop:scoped-proxy/&gt;</"
+"literal>. So if you need to inject a Seam-scoped Spring bean into a "
+"singleton, <literal>&lt;seam:instance/&gt;</literal> must be used:"
+msgstr ""
+
+#. Tag: programlisting
+#: Spring.xml:134
+#, no-c-format
+msgid ""
+"&lt;bean id=\"someSpringBean\" class=\"SomeSpringBeanClass\" scope=\"seam."
+"CONVERSATION\"/&gt;\n"
+"\n"
+"...\n"
+"\n"
+"&lt;bean id=\"someSingleton\"&gt;\n"
+"    &lt;property name=\"someSeamScopedSpringBean\"&gt;\n"
+"        &lt;seam:instance name=\"someSpringBean\" proxy=\"true\"/&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/bean&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Testing.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Testing.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Testing.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,342 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Testing.xml:10
+#, no-c-format
+msgid "Testing Seam applications"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:11
+#, no-c-format
+msgid ""
+"Most Seam applications will need at least two kinds of automated tests: "
+"<emphasis>unit tests</emphasis>, which test a particular Seam component in "
+"isolation, and scripted <emphasis>integration tests</emphasis> which "
+"exercise all Java layers of the application (that is, everything except the "
+"view pages)."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:14
+#, no-c-format
+msgid "Both kinds of tests are very easy to write."
+msgstr ""
+
+#. Tag: title
+#: Testing.xml:18
+#, no-c-format
+msgid "Unit testing Seam components"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:19
+#, no-c-format
+msgid ""
+"All Seam components are POJOs. This is a great place to start if you want "
+"easy unit testing. And since Seam emphasises the use of bijection for inter-"
+"component interactions and access to contextual objects, it's very easy to "
+"test a Seam component outside of its normal runtime environment."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:22
+#, no-c-format
+msgid "Consider the following Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:25
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Scope(EVENT)\n"
+"@Name(\"register\")\n"
+"public class RegisterAction implements Register\n"
+"{\n"
+"   private User user;\n"
+"   private EntityManager em;\n"
+"\n"
+"   @In\n"
+"   public void setUser(User user) {\n"
+"       this.user = user;\n"
+"   }\n"
+"   \n"
+"   @PersistenceContext\n"
+"   public void setBookingDatabase(EntityManager em) {\n"
+"       this.em = em;\n"
+"   }\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = em.createQuery(\"select username from User where "
+"username=:username\")\n"
+"         .setParameter(\"username\", user.getUsername())\n"
+"         .getResultList();\n"
+"      if (existing.size()==0)\n"
+"      {\n"
+"         em.persist(user);\n"
+"         return \"success\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:26
+#, no-c-format
+msgid "We could write a TestNG test for this component as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:29
+#, no-c-format
+msgid ""
+"public class RegisterActionTest\n"
+"{\n"
+"\n"
+"    @Test\n"
+"    public testRegisterAction()\n"
+"    {\n"
+"        EntityManager em = getEntityManagerFactory().createEntityManager();\n"
+"        em.getTransaction().begin();\n"
+"        \n"
+"        User gavin = new User();\n"
+"        gavin.setName(\"Gavin King\");\n"
+"        gavin.setUserName(\"1ovthafew\");\n"
+"        gavin.setPassword(\"secret\");\n"
+"        \n"
+"        RegisterAction action = new RegisterAction();\n"
+"        action.setUser(gavin);\n"
+"        action.setBookingDatabase(em);\n"
+"        \n"
+"        assert \"success\".equals( action.register() );\n"
+"        \n"
+"        em.getTransaction().commit();\n"
+"        em.close();\n"
+"    }\n"
+"    \n"
+"    \n"
+"    private EntityManagerFactory emf;\n"
+"    \n"
+"    public EntityManagerFactory getEntityManagerFactory()\n"
+"    {\n"
+"        return emf;\n"
+"    }\n"
+"    \n"
+"    @Configuration(beforeTestClass=true)\n"
+"    public void init() \n"
+"    {\n"
+"        emf = Persistence.createEntityManagerFactory"
+"(\"myResourceLocalEntityManager\");\n"
+"    }\n"
+"    \n"
+"    @Configuration(afterTestClass=true)\n"
+"    public void destroy()\n"
+"    {\n"
+"        emf.close();\n"
+"    }\n"
+"    \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:30
+#, no-c-format
+msgid ""
+"Seam components don't usually depend directly upon container infrastructure, "
+"so most unit testing as as easy as that!"
+msgstr ""
+
+#. Tag: title
+#: Testing.xml:36
+#, no-c-format
+msgid "Integration testing Seam applications"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:37
+#, no-c-format
+msgid ""
+"Integration testing is slightly more difficult. In this case, we can't "
+"eliminate the container infrastructure; indeed, that is part of what is "
+"being tested! At the same time, we don't want to be forced to deploy our "
+"application to an application server to run the automated tests. We need to "
+"be able to reproduce just enough of the container infrastructure inside our "
+"testing environment to be able to exercise the whole application, without "
+"hurting performance too much."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:40
+#, no-c-format
+msgid ""
+"A second problem is emulating user interactions. A third problem is where to "
+"put our assertions. Some test frameworks let us test the whole application "
+"by reproducing user interactions with the web browser. These frameworks have "
+"their place, but they are not appropriate for use at development time."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:43
+#, no-c-format
+msgid ""
+"The approach taken by Seam is to let you write tests that script your "
+"components while running inside a pruned down container environment (Seam, "
+"together with the JBoss Embeddable EJB container). The role of the test "
+"script is basically to reproduce the interaction between the view and the "
+"Seam components. In other words, you get to pretend you are the JSF "
+"implementation!"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:46
+#, no-c-format
+msgid "This approach tests everything except the view."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:49
+#, no-c-format
+msgid "Let's consider a JSP view for the component we unit tested above:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:52
+#, no-c-format
+msgid ""
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Register New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;table border=\"0\"&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Username&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputText value=\"#{user.username}\"/&gt;&lt;/"
+"td&gt;\n"
+"       &lt;/tr&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Real Name&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputText value=\"#{user.name}\"/&gt;&lt;/td&gt;\n"
+"       &lt;/tr&gt;\n"
+"       &lt;tr&gt;\n"
+"         &lt;td&gt;Password&lt;/td&gt;\n"
+"         &lt;td&gt;&lt;h:inputSecret value=\"#{user.password}\"/&gt;&lt;/"
+"td&gt;\n"
+"       &lt;/tr&gt;\n"
+"     &lt;/table&gt;\n"
+"     &lt;h:messages/&gt;\n"
+"     &lt;h:commandButton type=\"submit\" value=\"Register\" action=\"#"
+"{register.register}\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:53
+#, no-c-format
+msgid ""
+"We want to test the registration functionality of our application (the stuff "
+"that happens when the user clicks the Register button). We'll reproduce the "
+"JSF request lifecycle in an automated TestNG test:"
+msgstr ""
+
+#. Tag: programlisting
+#: Testing.xml:56
+#, no-c-format
+msgid ""
+"public class RegisterTest extends SeamTest\n"
+"{\n"
+"   \n"
+"   @Test\n"
+"   public void testRegister() throws Exception\n"
+"   {\n"
+"            \n"
+"      new FacesRequest() {\n"
+"\n"
+"         @Override\n"
+"         protected void processValidations() throws Exception\n"
+"         {\n"
+"            validateValue(\"#{user.username}\", \"1ovthafew\");\n"
+"            validateValue(\"#{user.name}\", \"Gavin King\");\n"
+"            validateValue(\"#{user.password}\", \"secret\");\n"
+"            assert !isValidationFailure();\n"
+"         }\n"
+"         \n"
+"         @Override\n"
+"         protected void updateModelValues() throws Exception\n"
+"         {\n"
+"            setValue(\"#{user.username}\", \"1ovthafew\");\n"
+"            setValue(\"#{user.name}\", \"Gavin King\");\n"
+"            setValue(\"#{user.password}\", \"secret\");\n"
+"         }\n"
+"\n"
+"         @Override\n"
+"         protected void invokeApplication()\n"
+"         {\n"
+"            assert invokeMethod(\"#{register.register}\").equals(\"success"
+"\");\n"
+"         }\n"
+"\n"
+"         @Override\n"
+"         protected void renderResponse()\n"
+"         {\n"
+"            assert getValue(\"#{user.username}\").equals(\"1ovthafew\");\n"
+"            assert getValue(\"#{user.name}\").equals(\"Gavin King\");\n"
+"            assert getValue(\"#{user.password}\").equals(\"secret\");\n"
+"         }\n"
+"         \n"
+"      }.run();\n"
+"      \n"
+"   }\n"
+"\n"
+"   ...\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:57
+#, no-c-format
+msgid ""
+"Notice that we've extended <literal>SeamTest</literal>, which provides a "
+"Seam environment for our components, and written our test script as an "
+"anonymous class that extends <literal>SeamTest.FacesRequest</literal>, which "
+"provides an emulated JSF request lifecycle. (There is also a "
+"<literal>SeamTest.NonFacesRequest</literal> for testing GET requests.) We've "
+"written our code in methods which are named for the various JSF phases, to "
+"emulate the calls that JSF would make to our components. Then we've thrown "
+"in various assertions."
+msgstr ""
+
+#. Tag: para
+#: Testing.xml:60
+#, no-c-format
+msgid ""
+"You'll find plenty of integration tests for the Seam example applications "
+"which demonstrate more complex cases. There are instructions for running "
+"these tests using Ant, or using the TestNG plugin for eclipse:"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Text.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Text.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Text.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,362 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Text.xml:10
+#, no-c-format
+msgid "Seam Text"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:11
+#, no-c-format
+msgid ""
+"Collaboration-oriented websites require a human-friendly markup language for "
+"easy entry of formatted text in forum posts, wiki pages, blogs, comments, "
+"etc. Seam provides the <literal>&lt;s:formattedText/&gt;</literal> control "
+"for display of formatted text that conforms to the <emphasis>Seam Text</"
+"emphasis> language. Seam Text is implemented using an ANTLR-based parser. "
+"You don't need to know anything about ANTLR to use it, however."
+msgstr ""
+
+#. Tag: title
+#: Text.xml:15
+#, no-c-format
+msgid "Basic fomatting"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:16
+#, no-c-format
+msgid "Here is a simple example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:19
+#, no-c-format
+msgid ""
+"It's easy to make *bold text*, /italic text/, |monospace|, \n"
+"~deleted text~, super^scripts^ or _underlines_."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:20
+#, no-c-format
+msgid ""
+"If we display this using <literal>&lt;s:formattedText/&gt;</literal>, we "
+"will get the following HTML produced:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:23
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"It's easy to make &lt;b&gt;bold text&lt;/b&gt;, &lt;i&gt;italic text&lt;/"
+"i&gt;, &lt;tt&gt;monospace&lt;/tt&gt;\n"
+"&lt;del&gt;deleted text&lt;/del&gt;, super&lt;sup&gt;scripts&lt;/sup&gt; or "
+"&lt;u&gt;underlines&lt;/u&gt;.\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:24
+#, no-c-format
+msgid ""
+"We can use a blank line to indicate a new paragraph, and <literal>+</"
+"literal> to indicate a heading:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:27
+#, no-c-format
+msgid ""
+"+This is a big heading\n"
+"You /must/ have some text following a heading!\n"
+" \n"
+"++This is a smaller heading\n"
+"This is the first paragraph. We can split it across multiple \n"
+"lines, but we must end it with a blank line.\n"
+"\n"
+"This is the second paragraph."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:28
+#, no-c-format
+msgid ""
+"(Note that a simple newline is ignored, you need an additional blank line to "
+"wrap text into a new paragraph.) This is the HTML that results:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:31
+#, no-c-format
+msgid ""
+"&lt;h1&gt;This is a big heading&lt;/h1&gt;\n"
+"&lt;p&gt;\n"
+"You &lt;i&gt;must&lt;/i&gt; have some text following a heading!\n"
+"&lt;/p&gt;\n"
+" \n"
+"&lt;h2&gt;This is a smaller heading&lt;/h2&gt;\n"
+"&lt;p&gt;\n"
+"This is the first paragraph. We can split it across multiple \n"
+"lines, but we must end it with a blank line.\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"This is the second paragraph.\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:32
+#, no-c-format
+msgid ""
+"Ordered lists are created using the <literal>#</literal> character. "
+"Unordered lists use the <literal>=</literal> character:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:35
+#, no-c-format
+msgid ""
+"An ordered list:\n"
+"        \n"
+"#first item\n"
+"#second item\n"
+"#and even the /third/ item\n"
+"\n"
+"An unordered list:\n"
+"\n"
+"=an item\n"
+"=another item"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:36
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"An ordered list:\n"
+"&lt;/p&gt;\n"
+" \n"
+"&lt;ol&gt;       \n"
+"&lt;li&gt;first item&lt;/li&gt;\n"
+"&lt;li&gt;second item&lt;/li&gt;\n"
+"&lt;li&gt;and even the &lt;i&gt;third&lt;/i&gt; item&lt;/li&gt;\n"
+"&lt;/ol&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"An unordered list:\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;ul&gt;\n"
+"&lt;li&gt;an item&lt;/li&gt;\n"
+"&lt;li&gt;another item&lt;/li&gt;\n"
+"&lt;/ul&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:37
+#, no-c-format
+msgid "Quoted sections should be surrounded in double quotes:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:40
+#, no-c-format
+msgid ""
+"The other guy said:\n"
+"        \n"
+"\"Nyeah nyeah-nee \n"
+"/nyeah/ nyeah!\"\n"
+"\n"
+"But what do you think he means by \"nyeah-nee\"?"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:41
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"The other guy said:\n"
+"&lt;/p&gt;\n"
+"        \n"
+"&lt;q&gt;Nyeah nyeah-nee\n"
+"&lt;i&gt;nyeah&lt;/i&gt; nyeah!&lt;/q&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"But what do you think he means by &lt;q&gt;nyeah-nee&lt;/q&gt;?\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: title
+#: Text.xml:45
+#, no-c-format
+msgid "Entering code and text with special characters"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:46
+#, no-c-format
+msgid ""
+"Special characters such as <literal>*</literal>, <literal>|</literal> and "
+"<literal>#</literal>, along with HTML characters such as <literal>&lt;</"
+"literal>, <literal>&gt;</literal> and <literal>&amp;</literal> may be "
+"escaped using <literal>&#92;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:49
+#, no-c-format
+msgid ""
+"You can write down equations like 2&#92;*3&#92;=6 and HTML tags\n"
+"like &#92;&lt;body&#92;&gt; using the escape character: &#92;&#92;."
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:50
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"You can write down equations like 2*3=6 and HTML tags\n"
+"like &lt;body&gt; using the escape character: &#92;.\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:51
+#, no-c-format
+msgid "And we can quote code blocks using backticks:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:54
+#, no-c-format
+msgid ""
+"My code doesn't work:\n"
+"\n"
+"`for (int i=0; i&lt;100; i--)\n"
+"{\n"
+"    doSomething();\n"
+"}`\n"
+"\n"
+"Any ideas?"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:55
+#, no-c-format
+msgid ""
+"&lt;p&gt;\n"
+"My code doesn't work:\n"
+"&lt;/p&gt;\n"
+"\n"
+"&lt;pre&gt;for (int i=0; i&lt;100; i--)\n"
+"{\n"
+"    doSomething();\n"
+"}&lt;/pre&gt;\n"
+"\n"
+"&lt;p&gt;\n"
+"Any ideas?\n"
+"&lt;/p&gt;"
+msgstr ""
+
+#. Tag: title
+#: Text.xml:59
+#, no-c-format
+msgid "Links"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:60
+#, no-c-format
+msgid "A link may be created using the following syntax:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:63
+#, no-c-format
+msgid "Go to the Seam website at [=&gt;http://jboss.com/products/seam]."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:64
+#, no-c-format
+msgid "Or, if you want to specify the text of the link:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:67
+#, no-c-format
+msgid "Go to [the Seam website=&gt;http://jboss.com/products/seam]."
+msgstr ""
+
+#. Tag: para
+#: Text.xml:68
+#, no-c-format
+msgid ""
+"For advanced users, it is even possible to customize the Seam Text parser to "
+"understand wikiword links written using this syntax."
+msgstr ""
+
+#. Tag: title
+#: Text.xml:74
+#, no-c-format
+msgid "Entering HTML"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:75
+#, no-c-format
+msgid ""
+"Text may even include a certain limited subset of HTML (don't worry, the "
+"subset is chosen to be safe from cross-site scripting attacks). This is "
+"useful for creating links:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:78
+#, no-c-format
+msgid ""
+"You might want to link to &lt;a href=\"http://jboss.com/products/seam\"&gt;"
+"something\n"
+"cool&lt;/a&gt;, or even include an image: &lt;img src=\"/logo.jpg\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:79
+#, no-c-format
+msgid "And for creating tables:"
+msgstr ""
+
+#. Tag: programlisting
+#: Text.xml:82
+#, no-c-format
+msgid ""
+"&lt;table&gt;\n"
+"    &lt;tr&gt;&lt;td&gt;First name:&lt;/td&gt;&lt;td&gt;Gavin&lt;/td&gt;&lt;/"
+"tr&gt;\n"
+"    &lt;tr&gt;&lt;td&gt;Last name:&lt;/td&gt;&lt;td&gt;King&lt;/td&gt;&lt;/"
+"tr&gt;\n"
+"&lt;/table&gt;"
+msgstr ""
+
+#. Tag: para
+#: Text.xml:83
+#, no-c-format
+msgid "But you can do much more if you want!"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Tools.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Tools.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Tools.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,769 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Tools.xml:10
+#, no-c-format
+msgid "Seam tools"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:12
+#, no-c-format
+msgid "jBPM designer and viewer"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:13
+#, no-c-format
+msgid ""
+"The jBPM designer and viewer will let you design and view in a nice way your "
+"business processes and your pageflows. This convenient tool is part of JBoss "
+"Eclipse IDE and more details can be found in the jBPM's documentation "
+"(http://docs.jboss.com/jbpm/v3/gpd/)"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:17
+#, no-c-format
+msgid "<title>Business process designer</title>"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:18
+#, no-c-format
+msgid "This tool lets you design your own business process in a graphical way."
+msgstr ""
+
+#. Tag: screeninfo
+#: Tools.xml:21 Tools.xml:37
+#, no-c-format
+msgid "<screeninfo>Business process designer</screeninfo>"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:33
+#, no-c-format
+msgid "Pageflow viewer"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:34
+#, no-c-format
+msgid ""
+"This tool let you design to some extend your pageflows and let you build "
+"graphical views of them so you can easily share and compare ideas on how it "
+"should be designed."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:51
+#, no-c-format
+msgid "CRUD-application generator"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:52
+#, no-c-format
+msgid ""
+"This chapter, will give you a short overview of the support for Seam that is "
+"available in the Hibernate Tools. Hibernate Tools is a set of tools for "
+"working with Hibernate and related technologies, such as JBoss Seam and "
+"EJB3. The tools are available as a set of eclipse plugins and Ant tasks. You "
+"can download the Hibernate Tools from the JBoss Eclipse IDE or Hibernate "
+"Tools websites."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:55
+#, no-c-format
+msgid ""
+"The specific support for Seam that is currently available is generation of a "
+"fully functional Seam based CRUD-application. The CRUD-application can be "
+"generated based on your existing Hibernate mapping files or EJB3 annotated "
+"POJO's or even fully reverse engineered from your existing database schema."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:58
+#, no-c-format
+msgid ""
+"The following sections is focused on the features required to understand for "
+"usage with Seam. The content is derived from the the Hibernate Tools "
+"reference documentation. Thus if you need more detailed information please "
+"refer to the Hibernate Tools documentation."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:62
+#, no-c-format
+msgid "Creating a Hibernate configuration file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:63
+#, no-c-format
+msgid ""
+"To be able to reverse engineer and generate code a hibernate.properties or "
+"hibernate.cfg.xml file is needed. The Hibernate Tools provide a wizard for "
+"generating the hibernate.cfg.xml file if you do not already have such file."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:66
+#, no-c-format
+msgid ""
+"Start the wizard by clicking \"New Wizard\" (Ctrl+N), select the Hibernate/"
+"Hibernate Configuration file (cfg.xml) wizard and press \"Next\". After "
+"selecting the wanted location for the hibernate.cfg.xml file, you will see "
+"the following page:"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:77
+#, no-c-format
+msgid ""
+"Tip: The contents in the combo boxes for the JDBC driver class and JDBC URL "
+"change automatically, depending on the Dialect and actual driver you have "
+"chosen."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:80
+#, no-c-format
+msgid ""
+"Enter your configuration information in this dialog. Details about the "
+"configuration options can be found in Hibernate reference documentation."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:83
+#, no-c-format
+msgid ""
+"Press \"Finish\" to create the configuration file, after optionally creating "
+"a Console onfiguration, the hibernate.cfg.xml will be automatically opened "
+"in an editor. The last option \"Create Console Configuration\" is enabled by "
+"default and when enabled i will automatically use the hibernate.cfg.xml for "
+"the basis of a \"Console Configuration\""
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:89
+#, no-c-format
+msgid "<title>Creating a Hibernate Console configuration</title>"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:90
+#, no-c-format
+msgid ""
+"A Console Configuration describes to the Hibernate plugin which "
+"configuration files should be used to configure hibernate, including which "
+"classpath is needed to load the POJO's, JDBC drivers etc. It is required to "
+"make usage of query prototyping, reverse engineering and code generation. "
+"You can have multiple named console configurations. Normally you would just "
+"need one per project, but more (or less) is definitly possible."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:93
+#, no-c-format
+msgid ""
+"You create a console configuration by running the Console Configuration "
+"wizard, shown in the following screenshot. The same wizard will also be used "
+"if you are coming from the hibernate.cfg.xml wizard and had enabled \"Create "
+"Console Configuration\"."
+msgstr ""
+
+#. Tag: caption
+#: Tools.xml:103
+#, no-c-format
+msgid "<caption>Creating a Hibernate Console configuration</caption>"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:105
+#, no-c-format
+msgid ""
+"The following table describes the relevant settings. The wizard can "
+"automatically detect default values for most of these if you started the "
+"Wizard with the relevant java project selected"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:109
+#, no-c-format
+msgid "Hibernate Console Configuration Parameters"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:117
+#, no-c-format
+msgid "Parameter"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:122 Tools.xml:308 Tools.xml:458
+#, no-c-format
+msgid "Description"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:127
+#, no-c-format
+msgid "Auto detected value"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:136
+#, no-c-format
+msgid "Name"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:141
+#, no-c-format
+msgid "The unique name of the configuration"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:146
+#, no-c-format
+msgid "Name of the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:153
+#, no-c-format
+msgid "Property file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:158
+#, no-c-format
+msgid "Path to a hibernate.properties file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:163
+#, no-c-format
+msgid "First hibernate.properties file found in the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:170
+#, no-c-format
+msgid "Configuration file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:175
+#, no-c-format
+msgid "Path to a hibernate.cfg.xml file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:180
+#, no-c-format
+msgid "First hibernate.cfg.xml file found in the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:187
+#, no-c-format
+msgid "Enable Hibernate ejb3/annotations"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:192
+#, no-c-format
+msgid ""
+"Selecting this option enables usage of annotated classes. hbm.xml files are "
+"of course still possible to use too. This feature requires running the "
+"Eclipse IDE with a JDK 5 runtime, otherwise you will get classloading and/or "
+"version errors."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:197
+#, no-c-format
+msgid "Not enabled"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:204
+#, no-c-format
+msgid "Mapping files"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:209
+#, no-c-format
+msgid ""
+"List of additional mapping files that should be loaded. Note: A hibernate."
+"cfg.xml can also contain mappings. Thus if these a duplicated here, you will "
+"get \"Duplicate mapping\" errors when using the console configuration."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:214
+#, no-c-format
+msgid ""
+"If no hibernate.cfg.xml file is found, all hbm.xml files found in the "
+"selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:221
+#, no-c-format
+msgid "Classpath"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:226
+#, no-c-format
+msgid ""
+"The classpath for loading POJO and JDBC drivers. Do not add Hibernate core "
+"libraries or dependencies, they are already included. If you get "
+"ClassNotFound errors then check this list for possible missing or redundant "
+"directories/jars."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:231
+#, no-c-format
+msgid ""
+"The default build output directory and any JARs with a class implementing "
+"java.sql.Driver in the selected project"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:239
+#, no-c-format
+msgid ""
+"Clicking \"Finish\" creates the configuration and shows it in the "
+"\"Hibernate Configurations\" view"
+msgstr ""
+
+#. Tag: caption
+#: Tools.xml:249
+#, no-c-format
+msgid "Console overview"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:254
+#, no-c-format
+msgid "Reverse engineering and code generation"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:255
+#, no-c-format
+msgid ""
+"A very simple \"click-and-generate\" reverse engineering and code generation "
+"facility is available. It is this facility that allows you to generate the "
+"skeleton for a full Seam CRUD application."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:258
+#, no-c-format
+msgid ""
+"To start working with this process, start the \"Hibernate Code Generation\" "
+"which is available in the toolbar via the Hibernate icon or via the \"Run/"
+"Hibernate Code Generation\" menu item."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:262
+#, no-c-format
+msgid "Code Generation Launcher"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:263
+#, no-c-format
+msgid ""
+"When you click on \"Hibernate Code Generation\" the standard Eclipse "
+"launcher dialog will appear. In this dialog you can create, edit and delete "
+"named Hibernate code generation \"launchers\"."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:274
+#, no-c-format
+msgid ""
+"The dialog has the standard tabs \"Refresh\" and \"Common\" that can be used "
+"to configure which directories should be automatically refreshed and various "
+"general settings launchers, such as saving them in a project for sharing the "
+"launcher within a team."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:285
+#, no-c-format
+msgid ""
+"The first time you create a code generation launcher you should give it a "
+"meaningfull name, otherwise the default prefix \"New_Generation\" will be "
+"used."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:288
+#, no-c-format
+msgid ""
+"Note: The \"At least one exporter option must be selected\" is just a "
+"warning stating that for this launch to work you need to select an exporter "
+"on the Exporter tab. When an exporter has been selected the warning will "
+"disappear."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:291
+#, no-c-format
+msgid "On the \"Main\" tab you the following fields:"
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:295
+#, no-c-format
+msgid "Code generation \"Main\" tab fields"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:303 Tools.xml:453
+#, no-c-format
+msgid "Field"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:317
+#, no-c-format
+msgid "Console Configuration"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:322
+#, no-c-format
+msgid ""
+"The name of the console configuration which should be used when code "
+"generating."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:329
+#, no-c-format
+msgid "Output directory"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:334
+#, no-c-format
+msgid ""
+"Path to a directory into where all output will be written by default. Be "
+"aware that existing files will be overwritten, so be sure to specify the "
+"correct directory."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:341
+#, no-c-format
+msgid "Reverse engineer from JDBC Connection"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:346
+#, no-c-format
+msgid ""
+"If enabled the tools will reverse engineer the database available via the "
+"connection information in the selected Hibernate Console Configuration and "
+"generate code based on the database schema. If not enabled the code "
+"generation will just be based on the mappings already specified in the "
+"Hibernate Console configuration."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:353
+#, no-c-format
+msgid "Package"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:358
+#, no-c-format
+msgid ""
+"The package name here is used as the default package name for any entities "
+"found when reverse engineering."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:365
+#, no-c-format
+msgid "reveng.xml"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:370
+#, no-c-format
+msgid ""
+"Path to a reveng.xml file. A reveng.xml file allows you to control certain "
+"aspects of the reverse engineering. e.g. how jdbc types are mapped to "
+"hibernate types and especially important which tables are included/excluded "
+"from the process. Clicking \"setup\" allows you to select an existing reveng."
+"xml file or create a new one.."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:377
+#, no-c-format
+msgid "reveng. strategy"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:382
+#, no-c-format
+msgid ""
+"If reveng.xml does not provide enough customization you can provide your own "
+"implementation of an ReverseEngineeringStrategy. The class need to be in the "
+"claspath of the Console Configuration, otherwise you will get class not "
+"found exceptions."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:389
+#, no-c-format
+msgid "Generate basic typed composite ids"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:394
+#, no-c-format
+msgid ""
+"This field should always be enabled when generating the Seam CRUD "
+"application. A table that has a multi-colum primary key a &lt;composite-"
+"id&gt; mapping will always be created. If this option is enabled and there "
+"are matching foreign-keys each key column is still considered a 'basic' "
+"scalar (string, long, etc.) instead of a reference to an entity. If you "
+"disable this option a &lt;key-many-to-one&gt; instead. Note: a &lt;many-to-"
+"one&gt; property is still created, but is simply marked as non-updatable and "
+"non-insertable."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:401
+#, no-c-format
+msgid "Use custom templates"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:406
+#, no-c-format
+msgid ""
+"If enabled, the Template directory will be searched first when looking up "
+"the velocity templates, allowing you to redefine how the individual "
+"templates process the hibernate mapping model."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:413
+#, no-c-format
+msgid "Template directory"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:418
+#, no-c-format
+msgid "A path to a directory with custom velocity templates."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:429
+#, no-c-format
+msgid "Exporters"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:430
+#, no-c-format
+msgid ""
+"The exporters tab is used to specify which type of code that should be "
+"generated. Each selection represents an \"Exporter\" that are responsible "
+"for generating the code, hence the name."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:441
+#, no-c-format
+msgid ""
+"The following table describes in short the various exporters. The most "
+"relevant for Seam is of course the \"JBoss Seam Skeleton app\"."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:445
+#, no-c-format
+msgid "Code generation \"Exporter\" tab fields"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:467
+#, no-c-format
+msgid "Generate domain code"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:472
+#, no-c-format
+msgid ""
+"Generates POJO's for all the persistent classes and components found in the "
+"given Hibernate configuration."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:479
+#, no-c-format
+msgid "JDK 1.5 constructs"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:484
+#, no-c-format
+msgid "When enabled the POJO's will use JDK 1.5 constructs."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:491
+#, no-c-format
+msgid "EJB3/JSR-220 annotations"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:496
+#, no-c-format
+msgid ""
+"When enabled the POJO's will be annotated according to the EJB3/JSR-220 "
+"persistency specification."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:503
+#, no-c-format
+msgid "Generate DAO code"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:508
+#, no-c-format
+msgid "Generates a set of DAO's for each entity found."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:515
+#, no-c-format
+msgid "Generate Mappings"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:520
+#, no-c-format
+msgid "Generate mapping (hbm.xml) files for each entity"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:527
+#, no-c-format
+msgid "Generate hibernate configuration file"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:532
+#, no-c-format
+msgid ""
+"Generate a hibernate.cfg.xml file. Used to keep the hibernate.cfg.xml "
+"uptodate with any new found mapping files."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:539
+#, no-c-format
+msgid "Generate schema html-documentation"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:544
+#, no-c-format
+msgid ""
+"Generates set of html pages that documents the database schema and some of "
+"the mappings."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:551
+#, no-c-format
+msgid "Generate JBoss Seam skeleton app (beta)"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:556
+#, no-c-format
+msgid ""
+"Generates a complete JBoss Seam skeleton app. The generation will include "
+"annotated POJO's, Seam controller beans and a JSP for the presentation "
+"layer. See the generated readme.txt for how to use it."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:559
+#, no-c-format
+msgid ""
+"Note: this exporter generates a full application, including a build.xml thus "
+"you will get the best results if you use an output directory which is the "
+"root of your project."
+msgstr ""
+
+#. Tag: title
+#: Tools.xml:570
+#, no-c-format
+msgid "Generating and using the code"
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:571
+#, no-c-format
+msgid ""
+"When you have finished filling out the settings, simply press \"Run\" to "
+"start the generation of code. This might take a little while if you are "
+"reverse engineering from a database."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:574
+#, no-c-format
+msgid ""
+"When the generation have finished you should now have a complete skeleton "
+"Seam application in the output directory. In the output directory there is a "
+"<literal>readme.txt</literal> file describing the steps needed to deploy and "
+"run the example."
+msgstr ""
+
+#. Tag: para
+#: Tools.xml:577
+#, no-c-format
+msgid ""
+"If you want to regenerate/update the skeleton code then simply run the code "
+"generation again by selecting the \"Hibernate Code Generation\" in the "
+"toolbar or \"Run\" menu. Enjoy."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Tutorial.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Tutorial.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Tutorial.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,4041 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Tutorial.xml:10
+#, no-c-format
+msgid "Seam Tutorial"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:12
+#, no-c-format
+msgid "Try the examples"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:13
+#, no-c-format
+msgid ""
+"In this tutorial, we'll assume that you have downloaded JBoss AS 4.0.5 and "
+"installed the EJB 3.0 profile (using the JBoss AS installer). You should "
+"also have a copy of Seam downloaded and extracted to a work directory."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:16
+#, no-c-format
+msgid "The directory structure of each example in Seam follows this pattern:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:21
+#, no-c-format
+msgid ""
+"Web pages, images and stylesheets may be found in <filename>examples/"
+"<replaceable>registration</replaceable>/view</filename>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:26
+#, no-c-format
+msgid ""
+"Resources such as deployment descriptors and data import scripts may be "
+"found in <filename>examples/<replaceable>registration</replaceable>/"
+"resources</filename>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:31
+#, no-c-format
+msgid ""
+"Java source code may be found in <filename>examples/"
+"<replaceable>registration</replaceable>/src</filename>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:36
+#, no-c-format
+msgid ""
+"The Ant build script is <filename>examples/<replaceable>registration</"
+"replaceable>/build.xml</filename>"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:42
+#, no-c-format
+msgid "Running the examples on JBoss AS"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:43
+#, no-c-format
+msgid ""
+"First, make sure you have Ant correctly installed, with <literal>&#36;"
+"ANT_HOME</literal> and <literal>&#36;JAVA_HOME</literal> set correctly. "
+"Next, make sure you set the location of your JBoss AS 4.0.5 installation in "
+"the <literal>build.properties</literal> file in the root folder of your Seam "
+"installation. If you haven't already done so, start JBoss AS now by typing "
+"<literal>bin/run.sh</literal> or <literal>bin/run.bat</literal> in the root "
+"directory of your JBoss installation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:46
+#, no-c-format
+msgid ""
+"By default the examples will deploy to the default configuration of the "
+"server. If the server has been started using an a configuration other than "
+"default then the example <literal>build.xml</literal> file should be "
+"modified to reflect this before building and deploying. Two lines should be "
+"changed in this file:"
+msgstr ""
+
+#. Tag: screen
+#: Tutorial.xml:49
+#, no-c-format
+msgid ""
+"&lt;property name=\"deploy.dir\"           value=\"${jboss.home}/server/"
+"default/deploy\"/&gt;"
+msgstr ""
+
+#. Tag: screen
+#: Tutorial.xml:50
+#, no-c-format
+msgid ""
+"&lt;property name=\"webroot.dir\"         \n"
+"        value=\"${deploy.dir}/jboss-web.deployer/ROOT.war\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:51
+#, no-c-format
+msgid ""
+"Now, build and deploy the example by typing <literal>ant deploy</literal> in "
+"the <filename>examples/<replaceable>registration</replaceable></filename> "
+"directory."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:54
+#, no-c-format
+msgid ""
+"Try it out by accessing <ulink url=\"http://localhost:8080/seam-registration/"
+"\"><literal>http://localhost:8080/seam-registration/</literal></ulink> with "
+"your web browser."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:60
+#, no-c-format
+msgid "Running the examples on Tomcat"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:61
+#, no-c-format
+msgid ""
+"First, make sure you have Ant correctly installed, with <literal>&#36;"
+"ANT_HOME</literal> and <literal>&#36;JAVA_HOME</literal> set correctly. "
+"Next, make sure you set the location of your Tomcat 5.5 installation in the "
+"<literal>build.properties</literal> file in the root folder of your Seam "
+"installation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:64
+#, no-c-format
+msgid ""
+"Now, build and deploy the example by typing <literal>ant deploy.tomcat</"
+"literal> in the <filename>examples/<replaceable>registration</replaceable></"
+"filename> directory."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:67
+#, no-c-format
+msgid "Finally, start Tomcat."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:70
+#, no-c-format
+msgid ""
+"Try it out by accessing <ulink url=\"http://localhost:8080/jboss-seam-"
+"registration/\"><literal>http://localhost:8080/jboss-seam-registration/</"
+"literal></ulink> with your web browser."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:73
+#, no-c-format
+msgid ""
+"When you deploy the example to Tomcat, any EJB3 components will run inside "
+"the JBoss Embeddable EJB3 container, a complete standalone EJB3 container "
+"environment."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:79
+#, no-c-format
+msgid "Running the example tests"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:80
+#, no-c-format
+msgid ""
+"Most of the examples come with a suite of TestNG integration tests. The "
+"easiest way to run the tests is to run <literal>ant testexample</literal> "
+"inside the <filename>examples/<replaceable>registration</replaceable></"
+"filename> directory. It is also possible to run the tests inside your IDE "
+"using the TestNG plugin."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:88
+#, no-c-format
+msgid "Your first Seam application: the registration example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:89
+#, no-c-format
+msgid ""
+"The registration example is a fairly trivial application that lets a new "
+"user store his username, real name and password in the database. The example "
+"isn't intended to show off all of the cool functionality of Seam. However, "
+"it demonstrates the use of an EJB3 session bean as a JSF action listener, "
+"and basic configuration of Seam."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:92
+#, no-c-format
+msgid ""
+"We'll go slowly, since we realize you might not yet be familiar with EJB 3.0."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:95
+#, no-c-format
+msgid ""
+"The start page displays a very basic form with three input fields. Try "
+"filling them in and then submitting the form. This will save a user object "
+"in the database."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:107 Tutorial.xml:424 Tutorial.xml:563 Tutorial.xml:723
+#, no-c-format
+msgid "Understanding the code"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:108
+#, no-c-format
+msgid ""
+"The example is implemented with two JSP pages, one entity bean and one "
+"stateless session bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:119
+#, no-c-format
+msgid "Let's take a look at the code, starting from the \"bottom\"."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:123
+#, no-c-format
+msgid "The entity bean: <literal>User.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:124
+#, no-c-format
+msgid ""
+"We need an EJB entity bean for user data. This class defines "
+"<emphasis>persistence</emphasis> and <emphasis>validation</emphasis> "
+"declaratively, via annotations. It also needs some extra annotations that "
+"define the class as a Seam component."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:140
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"user\")\n"
+"@Scope(SESSION)\n"
+"@Table(name=\"users\")\n"
+"public class User implements Serializable\n"
+"{\n"
+"   private static final long serialVersionUID = 1881413500711441951L;\n"
+"   \n"
+"   private String username;\n"
+"   private String password;\n"
+"   private String name;\n"
+"   \n"
+"   public User(String name, String password, String username)\n"
+"   {\n"
+"      this.name = name;\n"
+"      this.password = password;\n"
+"      this.username = username;\n"
+"   }\n"
+"   \n"
+"   public User() {}\n"
+"   \n"
+"   @NotNull @Length(min=5, max=15)\n"
+"   public String getPassword()\n"
+"   {\n"
+"      return password;\n"
+"   }\n"
+"\n"
+"   public void setPassword(String password)\n"
+"   {\n"
+"      this.password = password;\n"
+"   }\n"
+"   \n"
+"   @NotNull\n"
+"   public String getName()\n"
+"   {\n"
+"      return name;\n"
+"   }\n"
+"\n"
+"   public void setName(String name)\n"
+"   {\n"
+"      this.name = name;\n"
+"   }\n"
+"   \n"
+"   @Id @NotNull @Length(min=5, max=15)\n"
+"   public String getUsername()\n"
+"   {\n"
+"      return username;\n"
+"   }\n"
+"\n"
+"   public void setUsername(String username)\n"
+"   {\n"
+"      this.username = username;\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:143
+#, no-c-format
+msgid ""
+"The EJB3 standard <literal>@Entity</literal> annotation indicates that the "
+"<literal>User</literal> class is an entity bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:148
+#, no-c-format
+msgid ""
+"A Seam component needs a <emphasis>component name</emphasis> specified by "
+"the <link linkend=\"name-annotation\"><literal>@Name</literal></link> "
+"annotation. This name must be unique within the Seam application. When JSF "
+"asks Seam to resolve a context variable with a name that is the same as a "
+"Seam component name, and the context variable is currently undefined (null), "
+"Seam will instantiate that component, and bind the new instance to the "
+"context variable. In this case, Seam will instantiate a <literal>User</"
+"literal> the first time JSF encounters a variable named <literal>user</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:153
+#, no-c-format
+msgid ""
+"Whenever Seam instantiates a component, it binds the new instance to a "
+"context variable in the component's <emphasis>default context</emphasis>. "
+"The default context is specified using the <link linkend=\"scope-annotation"
+"\"><literal>@Scope</literal></link> annotation. The <literal>User</literal> "
+"bean is a session scoped component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:158
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Table</literal> annotation indicates that the "
+"<literal>User</literal> class is mapped to the <literal>users</literal> "
+"table."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:163
+#, no-c-format
+msgid ""
+"<literal>name</literal>, <literal>password</literal> and <literal>username</"
+"literal> are the persistent attributes of the entity bean. All of our "
+"persistent attributes define accessor methods. These are needed when this "
+"component is used by JSF in the render response and update model values "
+"phases."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:168
+#, no-c-format
+msgid ""
+"An empty constructor is both required by both the EJB specification and by "
+"Seam."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:173
+#, no-c-format
+msgid ""
+"The <literal>@NotNull</literal> and <literal>@Length</literal> annotations "
+"are part of the Hibernate Validator framework. Seam integrates Hibernate "
+"Validator and lets you use it for data validation (even if you are not using "
+"Hibernate for persistence)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:178
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Id</literal> annotation indicates the primary key "
+"attribute of the entity bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:185
+#, no-c-format
+msgid ""
+"The most important things to notice in this example are the <literal>@Name</"
+"literal> and <literal>@Scope</literal> annotations. These annotations "
+"establish that this class is a Seam component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:188
+#, no-c-format
+msgid ""
+"We'll see below that the properties of our <literal>User</literal> class are "
+"bound to directly to JSF components and are populated by JSF during the "
+"update model values phase. We don't need any tedious glue code to copy data "
+"back and forth between the JSP pages and the entity bean domain model."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:191
+#, no-c-format
+msgid ""
+"However, entity beans shouldn't do transaction management or database "
+"access. So we can't use this component as a JSF action listener. For that we "
+"need a session bean."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:198
+#, no-c-format
+msgid ""
+"The stateless session bean class: <literal>RegisterAction.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:199
+#, no-c-format
+msgid ""
+"Most Seam application use session beans as JSF action listeners (you can use "
+"JavaBeans instead if you like)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:202
+#, no-c-format
+msgid ""
+"We have exactly one JSF action in our application, and one session bean "
+"method attached to it. In this case, we'll use a stateless session bean, "
+"since all the state associated with our action is held by the <literal>User</"
+"literal> bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:205
+#, no-c-format
+msgid "This is the only really interesting code in the example!"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:222
+#, no-c-format
+msgid ""
+"@Stateless\n"
+"@Name(\"register\")\n"
+"public class RegisterAction implements Register\n"
+"{\n"
+"\n"
+"   @In\n"
+"   private User user;\n"
+"   \n"
+"   @PersistenceContext\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @Logger\n"
+"   private Log log;\n"
+"   \n"
+"   public String register()\n"
+"   {\n"
+"      List existing = em.createQuery(\n"
+"         \"select username from User where username=#{user.username}\")\n"
+"         .getResultList();\n"
+"         \n"
+"      if (existing.size()==0)\n"
+"      {\n"
+"         em.persist(user);\n"
+"         log.info(\"Registered new user #{user.username}\");\n"
+"         return \"/registered.jsp\";\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         FacesMessages.instance().add(\"User #{user.username} already exists"
+"\");\n"
+"         return null;\n"
+"      }\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:225
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Stateless</literal> annotation marks this class "
+"as stateless session bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:230
+#, no-c-format
+msgid ""
+"The <link linkend=\"in-annotation\"><literal>@In</literal></link> annotation "
+"marks an attribute of the bean as injected by Seam. In this case, the "
+"attribute is injected from a context variable named <literal>user</literal> "
+"(the instance variable name)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:235
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@PersistenceContext</literal> annotation is used "
+"to inject the EJB3 entity manager."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:240
+#, no-c-format
+msgid ""
+"The Seam <literal>@Logger</literal> annotation is used to inject the "
+"component's <literal>Log</literal> instance."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:245
+#, no-c-format
+msgid ""
+"The action listener method uses the standard EJB3 <literal>EntityManager</"
+"literal> API to interact with the database, and returns the JSF outcome. "
+"Note that, since this is a sesson bean, a transaction is automatically begun "
+"when the <literal>register()</literal> method is called, and committed when "
+"it completes."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:250
+#, no-c-format
+msgid ""
+"Notice that Seam lets you use a JSF EL expression inside EJB-QL. Under the "
+"covers, this results in an ordinary JPA <literal>setParameter()</literal> "
+"call on the standard JPA <literal>Query</literal> object. Nice, huh?"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:255
+#, no-c-format
+msgid ""
+"The <literal>Log</literal> API lets us easily display templated log messages."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:260
+#, no-c-format
+msgid ""
+"JSF action listener methods return a string-valued outcome that determines "
+"what page will be displayed next. A null outcome (or a void action listener "
+"method) redisplays the previous page. In plain JSF, it is normal to always "
+"use a JSF <emphasis>navigation rule</emphasis> to determine the JSF view id "
+"from the outcome. For complex application this indirection is useful and a "
+"good practice. However, for very simple examples like this one, Seam lets "
+"you use the JSF view id as the outcome, eliminating the requirement for a "
+"navigation rule. <emphasis>Note that when you use a view id as an outcome, "
+"Seam always performs a browser redirect.</emphasis>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:265
+#, no-c-format
+msgid ""
+"Seam provides a number of <emphasis>built-in components</emphasis> to help "
+"solve common problems. The <literal>FacesMessages</literal> component makes "
+"it easy to display templated error or success messages. Built-in Seam "
+"components may be obtained by injection, or by calling an <literal>instance()"
+"</literal> method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:272
+#, no-c-format
+msgid ""
+"Note that we did not explicitly specify a <literal>@Scope</literal> this "
+"time. Each Seam component type has a default scope if not explicitly "
+"specified. For stateless session beans, the default scope is the stateless "
+"context. Actually, <emphasis>all</emphasis> stateless session beans belong "
+"in the stateless context."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:275
+#, no-c-format
+msgid ""
+"Our session bean action listener performs the business and persistence logic "
+"for our mini-application. In more complex applications, we might need to "
+"layer the code and refactor persistence logic into a dedicated data access "
+"component. That's perfectly trivial to do. But notice that Seam does not "
+"force you into any particular strategy for application layering."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:278
+#, no-c-format
+msgid ""
+"Furthermore, notice that our session bean has simultaneous access to context "
+"associated with the web request (the form values in the <literal>User</"
+"literal> object, for example), and state held in transactional resources "
+"(the <literal>EntityManager</literal> object). This is a break from "
+"traditional J2EE architectures. Again, if you are more comfortable with the "
+"traditional J2EE layering, you can certainly implement that in a Seam "
+"application. But for many applications, it's simply not very useful."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:285
+#, no-c-format
+msgid "The session bean local interface: <literal>Register.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:286
+#, no-c-format
+msgid "Naturally, our session bean needs a local interface."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:291
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface Register\n"
+"{\n"
+"   public String register();\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:292
+#, no-c-format
+msgid "That's the end of the Java code. Now onto the deployment descriptors."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:298
+#, no-c-format
+msgid ""
+"The Seam component deployment descriptor: <literal>components.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:299
+#, no-c-format
+msgid ""
+"If you've used many Java frameworks before, you'll be used to having to "
+"declate all your component classes in some kind of XML file that gradually "
+"grows more and more unmanageable as your project matures. You'll be relieved "
+"to know that Seam does not require that application components be "
+"accompanied by XML. Most Seam applications require a very small amount of "
+"XML that does not grow very much as the project gets bigger."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:302
+#, no-c-format
+msgid ""
+"Nevertheless, it is often useful to be able to provide for <emphasis>some</"
+"emphasis> external configuration of <emphasis>some</emphasis> components "
+"(particularly the components built in to Seam). You have a couple of options "
+"here, but the most flexible option is to provide this configuration in a "
+"file called <literal>components.xml</literal>, located in the <literal>WEB-"
+"INF</literal> directory. We'll use the <literal>components.xml</literal> "
+"file to tell Seam how to find our EJB components in JNDI:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:305
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"&gt;\n"
+"     &lt;core:init jndi-pattern=\"@jndiPattern@\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:306
+#, no-c-format
+msgid ""
+"This code configures a property named <literal>jndiPattern</literal> of a "
+"built-in Seam component named <literal>org.jboss.seam.core.init</literal>."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:312
+#, no-c-format
+msgid "The web deployment description: <literal>web.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:313
+#, no-c-format
+msgid ""
+"The presentation layer for our mini-application will be deployed in a WAR. "
+"So we'll need a web deployment descriptor."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:316
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;web-app version=\"2.5\"\n"
+"    xmlns=\"http://java.sun.com/xml/ns/javaee\"\n"
+"    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"    xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n"
+"        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd\"&gt;\n"
+"\n"
+"    &lt;!-- Seam --&gt;\n"
+"\n"
+"    &lt;listener&gt;\n"
+"        &lt;listener-class&gt;org.jboss.seam.servlet.SeamListener&lt;/"
+"listener-class&gt;\n"
+"    &lt;/listener&gt;\n"
+"\n"
+"    &lt;!-- MyFaces --&gt;\n"
+"\n"
+"    &lt;listener&gt;\n"
+"        &lt;listener-class&gt;\n"
+"            org.apache.myfaces.webapp.StartupServletContextListener\n"
+"        &lt;/listener-class&gt;\n"
+"    &lt;/listener&gt;\n"
+"\n"
+"    &lt;context-param&gt;\n"
+"        &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-"
+"name&gt;\n"
+"        &lt;param-value&gt;client&lt;/param-value&gt;\n"
+"    &lt;/context-param&gt;\n"
+"\n"
+"    &lt;servlet&gt;\n"
+"        &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;\n"
+"        &lt;servlet-class&gt;javax.faces.webapp.FacesServlet&lt;/servlet-"
+"class&gt;\n"
+"        &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;\n"
+"    &lt;/servlet&gt;\n"
+"\n"
+"    &lt;!-- Faces Servlet Mapping --&gt;\n"
+"    &lt;servlet-mapping&gt;\n"
+"        &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;\n"
+"        &lt;url-pattern&gt;*.seam&lt;/url-pattern&gt;\n"
+"    &lt;/servlet-mapping&gt;\n"
+"\n"
+"&lt;/web-app&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:317
+#, no-c-format
+msgid ""
+"This <literal>web.xml</literal> file configures Seam and MyFaces. The "
+"configuration you see here is pretty much identical in all Seam applications."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:323
+#, no-c-format
+msgid "The JSF configration: <literal>faces-config.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:324
+#, no-c-format
+msgid ""
+"All Seam applications use JSF views as the presentation layer. So we'll need "
+"<literal>faces-config.xml</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:327
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;!DOCTYPE faces-config \n"
+"PUBLIC \"-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN\"\n"
+"                            \"http://java.sun.com/dtd/web-facesconfig_1_0.dtd"
+"\"&gt;\n"
+"&lt;faces-config&gt;\n"
+"\n"
+"    &lt;!-- A phase listener is needed by all Seam applications --&gt;\n"
+"    \n"
+"    &lt;lifecycle&gt;\n"
+"        &lt;phase-listener&gt;org.jboss.seam.jsf.SeamPhaseListener&lt;/phase-"
+"listener&gt;\n"
+"    &lt;/lifecycle&gt;\n"
+"\n"
+"&lt;/faces-config&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:328
+#, no-c-format
+msgid ""
+"The <literal>faces-config.xml</literal> file integrates Seam into JSF. Note "
+"that we don't need any JSF managed bean declarations! The managed beans are "
+"the Seam components. In Seam applications, the <literal>faces-config.xml</"
+"literal> is used much less often than in plain JSF."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:331
+#, no-c-format
+msgid ""
+"In fact, once you have all the basic descriptors set up, the <emphasis>only</"
+"emphasis> XML you need to write as you add new functionality to a Seam "
+"application is the navigation rules, and possibly jBPM process definitions. "
+"Seam takes the view that <emphasis>process flow</emphasis> and "
+"<emphasis>configuration data</emphasis> are the only things that truly "
+"belong in XML."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:334
+#, no-c-format
+msgid ""
+"In this simple example, we don't even need a navigation rule, since we "
+"decided to embed the view id in our action code."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:340
+#, no-c-format
+msgid "The EJB deployment descriptor: <literal>ejb-jar.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:341
+#, no-c-format
+msgid ""
+"The <literal>ejb-jar.xml</literal> file integrates Seam with EJB3, by "
+"attaching the <literal>SeamInterceptor</literal> to all session beans in the "
+"archive."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:344
+#, no-c-format
+msgid ""
+"&lt;ejb-jar xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \n"
+"         xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee\n"
+"         http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd\"\n"
+"         version=\"3.0\"&gt;\n"
+"         \n"
+"   &lt;interceptors&gt;\n"
+"     &lt;interceptor&gt;\n"
+"       &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"     &lt;/interceptor&gt;\n"
+"   &lt;/interceptors&gt;\n"
+"   \n"
+"   &lt;assembly-descriptor&gt;\n"
+"      &lt;interceptor-binding&gt;\n"
+"         &lt;ejb-name&gt;*&lt;/ejb-name&gt;\n"
+"         &lt;interceptor-class&gt;org.jboss.seam.ejb.SeamInterceptor&lt;/"
+"interceptor-class&gt;\n"
+"      &lt;/interceptor-binding&gt;\n"
+"   &lt;/assembly-descriptor&gt;\n"
+"   \n"
+"&lt;/ejb-jar&gt;"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:348
+#, no-c-format
+msgid ""
+"The EJB persistence deployment descriptor: <literal>persistence.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:349
+#, no-c-format
+msgid ""
+"The <literal>persistence.xml</literal> file tells the EJB persistence "
+"provider where to find the datasource, and contains some vendor-specific "
+"settings. In this case, enables automatic schema export at startup time."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:352
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;persistence xmlns=\"http://java.sun.com/xml/ns/persistence\" \n"
+"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/persistence \n"
+"             http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd\" \n"
+"             version=\"1.0\"&gt;\n"
+"    &lt;persistence-unit name=\"userDatabase\"&gt;\n"
+"      &lt;provider&gt;org.hibernate.ejb.HibernatePersistence&lt;/"
+"provider&gt;\n"
+"      &lt;jta-data-source&gt;java:/DefaultDS&lt;/jta-data-source&gt;\n"
+"      &lt;properties&gt;\n"
+"         &lt;property name=\"hibernate.hbm2ddl.auto\" value=\"create-drop\"/"
+"&gt;\n"
+"      &lt;/properties&gt;\n"
+"    &lt;/persistence-unit&gt;\n"
+"&lt;/persistence&gt;"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:356
+#, no-c-format
+msgid ""
+"The view: <literal>register.jsp</literal> and <literal>registered.jsp</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:357
+#, no-c-format
+msgid ""
+"The view pages for a Seam application could be implemented using any "
+"technology that supports JSF. In this example we use JSP, since it is "
+"familiar to most developers and since we have minimal requirements here "
+"anyway. (But if you take our advice, you'll use Facelets for your own "
+"applications.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:360
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://jboss.com/products/seam/taglib\" prefix=\"s\" "
+"&#37;&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Register New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;table border=\"0\"&gt;\n"
+"       &lt;s:validateAll&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Username&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputText value=\"#{user.username}\"/&gt;&lt;/"
+"td&gt;\n"
+"         &lt;/tr&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Real Name&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputText value=\"#{user.name}\"/&gt;&lt;/td&gt;\n"
+"         &lt;/tr&gt;\n"
+"         &lt;tr&gt;\n"
+"           &lt;td&gt;Password&lt;/td&gt;\n"
+"           &lt;td&gt;&lt;h:inputSecret value=\"#{user.password}\"/&gt;&lt;/"
+"td&gt;\n"
+"         &lt;/tr&gt;\n"
+"       &lt;/s:validateAll&gt;\n"
+"     &lt;/table&gt;\n"
+"     &lt;h:messages/&gt;\n"
+"     &lt;h:commandButton type=\"submit\" value=\"Register\" action=\"#"
+"{register.register}\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:361
+#, no-c-format
+msgid ""
+"The only thing here that is specific to Seam is the <literal>&lt;s:"
+"validateAll&gt;</literal> tag. This JSF component tells JSF to validate all "
+"the contained input fields against the Hibernate Validator annotations "
+"specified on the entity bean."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:364
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Successfully Registered New User&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"    Welcome, &lt;h:outputText value=\"#{user.name}\"/&gt;, \n"
+"    you are successfully registered as &lt;h:outputText value=\"#{user."
+"username}\"/&gt;.\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:365
+#, no-c-format
+msgid ""
+"This is a boring old JSP pages using standard JSF components. There is "
+"nothing specific to Seam here."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:371
+#, no-c-format
+msgid "The EAR deployment descriptor: <literal>application.xml</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:372
+#, no-c-format
+msgid ""
+"Finally, since our application is deployed as an EAR, we need a deployment "
+"descriptor there, too."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:375
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;application xmlns=\"http://java.sun.com/xml/ns/javaee\" \n"
+"             xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"             xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee \n"
+"             http://java.sun.com/xml/ns/javaee/application_5.xsd\"\n"
+"             version=\"5\"&gt;\n"
+"             \n"
+"    &lt;display-name&gt;Seam Registration&lt;/display-name&gt;\n"
+"\n"
+"    &lt;module&gt;\n"
+"        &lt;web&gt;\n"
+"            &lt;web-uri&gt;jboss-seam-registration.war&lt;/web-uri&gt;\n"
+"            &lt;context-root&gt;/seam-registration&lt;/context-root&gt;\n"
+"        &lt;/web&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;ejb&gt;jboss-seam-registration.jar&lt;/ejb&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;jboss-seam.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;el-api.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    &lt;module&gt;\n"
+"        &lt;java&gt;el-ri.jar&lt;/java&gt;\n"
+"    &lt;/module&gt;\n"
+"    \n"
+"&lt;/application&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:376
+#, no-c-format
+msgid ""
+"This deployment descriptor links modules in the enterprise archive and binds "
+"the web application to the context root <literal>/seam-registration</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:387 Tutorial.xml:535 Tutorial.xml:698 Tutorial.xml:813
+#, no-c-format
+msgid "How it works"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:388
+#, no-c-format
+msgid ""
+"When the form is submitted, JSF asks Seam to resolve the variable named "
+"<literal>user</literal>. Since there is no value already bound to that name "
+"(in any Seam context), Seam instantiates the <literal>user</literal> "
+"component, and returns the resulting <literal>User</literal> entity bean "
+"instance to JSF after storing it in the Seam session context."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:391
+#, no-c-format
+msgid ""
+"The form input values are now validated against the Hibernate Validator "
+"constraints specified on the <literal>User</literal> entity. If the "
+"constraints are violated, JSF redisplays the page. Otherwise, JSF binds the "
+"form input values to properties of the <literal>User</literal> entity bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:394
+#, no-c-format
+msgid ""
+"Next, JSF asks Seam to resolve the variable named <literal>register</"
+"literal>. Seam finds the <literal>RegisterAction</literal> stateless session "
+"bean in the stateless context and returns it. JSF invokes the "
+"<literal>register()</literal> action listener method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:397
+#, no-c-format
+msgid ""
+"Seam intercepts the method call and injects the <literal>User</literal> "
+"entity from the Seam session context, before continuing the invocation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:400
+#, no-c-format
+msgid ""
+"The <literal>register()</literal> method checks if a user with the entered "
+"username already exists. If so, an error message is queued with the "
+"<literal>FacesMessages</literal> component, and a null outcome is returned, "
+"causing a page redisplay. The <literal>FacesMessages</literal> component "
+"interpolates the JSF expression embedded in the message string and adds a "
+"JSF <literal>FacesMessage</literal> to the view."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:403
+#, no-c-format
+msgid ""
+"If no user with that username exists, the <literal>\"/registered.jsp\"</"
+"literal> outcome triggers a browser redirect to the <literal>registered.jsp</"
+"literal> page. When JSF comes to render the page, it asks Seam to resolve "
+"the variable named <literal>user</literal> and uses property values of the "
+"returned <literal>User</literal> entity from Seam's session scope."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:411
+#, no-c-format
+msgid "Clickable lists in Seam: the messages example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:412
+#, no-c-format
+msgid ""
+"Clickable lists of database search results are such an important part of any "
+"online application that Seam provides special functionality on top of JSF to "
+"make it easier to query data using EJB-QL or HQL and display it as a "
+"clickable list using a JSF <literal>&lt;h:dataTable&gt;</literal>. The "
+"messages example demonstrates this functionality."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:425
+#, no-c-format
+msgid ""
+"The message list example has one entity bean, <literal>Message</literal>, "
+"one session bean, <literal>MessageListBean</literal> and one JSP."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:429
+#, no-c-format
+msgid "The entity bean: <literal>Message.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:430
+#, no-c-format
+msgid ""
+"The <literal>Message</literal> entity defines the title, text, date and time "
+"of a message, and a flag indicating whether the message has been read:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:433
+#, no-c-format
+msgid ""
+"@Entity\n"
+"@Name(\"message\")\n"
+"@Scope(EVENT)\n"
+"public class Message implements Serializable\n"
+"{\n"
+"   private Long id;\n"
+"   private String title;\n"
+"   private String text;\n"
+"   private boolean read;\n"
+"   private Date datetime;\n"
+"   \n"
+"   @Id @GeneratedValue\n"
+"   public Long getId() {\n"
+"      return id;\n"
+"   }\n"
+"   public void setId(Long id) {\n"
+"      this.id = id;\n"
+"   }\n"
+"   \n"
+"   @NotNull @Length(max=100)\n"
+"   public String getTitle() {\n"
+"      return title;\n"
+"   }\n"
+"   public void setTitle(String title) {\n"
+"      this.title = title;\n"
+"   }\n"
+"   \n"
+"   @NotNull @Lob\n"
+"   public String getText() {\n"
+"      return text;\n"
+"   }\n"
+"   public void setText(String text) {\n"
+"      this.text = text;\n"
+"   }\n"
+"   \n"
+"   @NotNull\n"
+"   public boolean isRead() {\n"
+"      return read;\n"
+"   }\n"
+"   public void setRead(boolean read) {\n"
+"      this.read = read;\n"
+"   }\n"
+"   \n"
+"   @NotNull \n"
+"   @Basic @Temporal(TemporalType.TIMESTAMP)\n"
+"   public Date getDatetime() {\n"
+"      return datetime;\n"
+"   }\n"
+"   public void setDatetime(Date datetime) {\n"
+"      this.datetime = datetime;\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:438
+#, no-c-format
+msgid "The stateful session bean: <literal>MessageManagerBean.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:439
+#, no-c-format
+msgid ""
+"Just like in the previous example, we have a session bean, "
+"<literal>MessageManagerBean</literal>, which defines the action listener "
+"methods for the two buttons on our form. One of the buttons selects a "
+"message from the list, and displays that message. The other button deletes a "
+"message. So far, this is not so different to the previous example."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:442
+#, no-c-format
+msgid ""
+"But <literal>MessageManagerBean</literal> is also responsible for fetching "
+"the list of messages the first time we navigate to the message list page. "
+"There are various ways the user could navigate to the page, and not all of "
+"them are preceded by a JSF action&mdash;the user might have bookmarked the "
+"page, for example. So the job of fetching the message list takes place in a "
+"Seam <emphasis>factory method</emphasis>, instead of in an action listener "
+"method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:445
+#, no-c-format
+msgid ""
+"We want to cache the list of messages in memory between server requests, so "
+"we will make this a stateful session bean."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:459
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Scope(SESSION)\n"
+"@Name(\"messageManager\")\n"
+"public class MessageManagerBean implements Serializable, MessageManager\n"
+"{\n"
+"\n"
+"   @DataModel\n"
+"   private List&lt;Message&gt; messageList;\n"
+"   \n"
+"   @DataModelSelection\n"
+"   @Out(required=false)\n"
+"   private Message message;\n"
+"   \n"
+"   @PersistenceContext(type=EXTENDED)\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @Factory(\"messageList\")\n"
+"   public void findMessages()\n"
+"   {\n"
+"      messageList = em.createQuery(\"from Message msg order by msg.datetime "
+"desc\").getResultList();\n"
+"   }\n"
+"   \n"
+"   public void select()\n"
+"   {\n"
+"      message.setRead(true);\n"
+"   }\n"
+"   \n"
+"   public void delete()\n"
+"   {\n"
+"      messageList.remove(message);\n"
+"      em.remove(message);\n"
+"      message=null;\n"
+"   }\n"
+"   \n"
+"   @Remove @Destroy\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:462
+#, no-c-format
+msgid ""
+"The <literal>@DataModel</literal> annotation exposes an attibute of type "
+"<literal>java.util.List</literal> to the JSF page as an instance of "
+"<literal>javax.faces.model.DataModel</literal>. This allows us to use the "
+"list in a JSF <literal>&lt;h:dataTable&gt;</literal> with clickable links "
+"for each row. In this case, the <literal>DataModel</literal> is made "
+"available in a session context variable named <literal>messageList</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:467
+#, no-c-format
+msgid ""
+"The <literal>@DataModelSelection</literal> annotation tells Seam to inject "
+"the <literal>List</literal> element that corresponded to the clicked link."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:472
+#, no-c-format
+msgid ""
+"The <literal>@Out</literal> annotation then exposes the selected value "
+"directly to the page. So ever time a row of the clickable list is selected, "
+"the <literal>Message</literal> is injected to the attribute of the stateful "
+"bean, and the subsequently <emphasis>outjected</emphasis> to the event "
+"context variable named <literal>message</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:477
+#, no-c-format
+msgid ""
+"This stateful bean has an EJB3 <emphasis>extended persistence context</"
+"emphasis>. The messages retrieved in the query remain in the managed state "
+"as long as the bean exists, so any subsequent method calls to the stateful "
+"bean can update them without needing to make any explicit call to the "
+"<literal>EntityManager</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:482
+#, no-c-format
+msgid ""
+"The first time we navigate to the JSP page, there will be no value in the "
+"<literal>messageList</literal> context variable. The <literal>@Factory</"
+"literal> annotation tells Seam to create an instance of "
+"<literal>MessageManagerBean</literal> and invoke the <literal>findMessages()"
+"</literal> method to initialize the value. We call <literal>findMessages()</"
+"literal> a <emphasis>factory method</emphasis> for <literal>messages</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:487
+#, no-c-format
+msgid ""
+"The <literal>select()</literal> action listener method marks the selected "
+"<literal>Message</literal> as read, and updates it in the database."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:492
+#, no-c-format
+msgid ""
+"The <literal>delete()</literal> action listener method removes the selected "
+"<literal>Message</literal> from the database."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:497
+#, no-c-format
+msgid ""
+"All stateful session bean Seam components <emphasis>must</emphasis> have a "
+"method marked <literal>@Remove @Destroy</literal> to ensure that Seam will "
+"remove the stateful bean when the Seam context ends, and clean up any server-"
+"side state."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:504
+#, no-c-format
+msgid ""
+"Note that this is a session-scoped Seam component. It is associated with the "
+"user login session, and all requests from a login session share the same "
+"instance of the component. (In Seam applications, we usually use session-"
+"scoped components sparingly.)"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:510
+#, no-c-format
+msgid ""
+"The session bean local interface: <literal>MessageManager.java</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:511
+#, no-c-format
+msgid "All session beans have a business interface, of course."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:514
+#, no-c-format
+msgid ""
+"@Local\n"
+"public interface MessageManager\n"
+"{\n"
+"   public void findMessages();\n"
+"   public void select();\n"
+"   public void delete();\n"
+"   public void destroy();\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:515
+#, no-c-format
+msgid "From now on, we won't show local interfaces in our code examples."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:518
+#, no-c-format
+msgid ""
+"Let's skip over <literal>components.xml</literal>, <literal>persistence.xml</"
+"literal>, <literal>web.xml</literal>, <literal>ejb-jar.xml</literal>, "
+"<literal>faces-config.xml</literal> and <literal>application.xml</literal> "
+"since they are much the same as the previous example, and go straight to the "
+"JSP."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:524
+#, no-c-format
+msgid "The view: <literal>messages.jsp</literal>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:525
+#, no-c-format
+msgid ""
+"The JSP page is a straightforward use of the JSF <literal>&lt;h:dataTable&gt;"
+"</literal> component. Again, nothing specific to Seam."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:528
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+" &lt;head&gt;\n"
+"  &lt;title&gt;Messages&lt;/title&gt;\n"
+" &lt;/head&gt;\n"
+" &lt;body&gt;\n"
+"  &lt;f:view&gt;\n"
+"   &lt;h:form&gt;\n"
+"     &lt;h2&gt;Message List&lt;/h2&gt;\n"
+"     &lt;h:outputText value=\"No messages to display\" rendered=\"#"
+"{messageList.rowCount==0}\"/&gt;\n"
+"     &lt;h:dataTable var=\"msg\" value=\"#{messageList}\" rendered=\"#"
+"{messageList.rowCount&gt;0}\"&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Read\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:selectBooleanCheckbox value=\"#{msg.read}\" disabled=\"true"
+"\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Title\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:commandLink value=\"#{msg.title}\" action=\"#"
+"{messageManager.select}\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;f:facet name=\"header\"&gt;\n"
+"              &lt;h:outputText value=\"Date/Time\"/&gt;\n"
+"           &lt;/f:facet&gt;\n"
+"           &lt;h:outputText value=\"#{msg.datetime}\"&gt;\n"
+"              &lt;f:convertDateTime type=\"both\" dateStyle=\"medium\" "
+"timeStyle=\"short\"/&gt;\n"
+"           &lt;/h:outputText&gt;\n"
+"        &lt;/h:column&gt;\n"
+"        &lt;h:column&gt;\n"
+"           &lt;h:commandButton value=\"Delete\" action=\"#{messageManager."
+"delete}\"/&gt;\n"
+"        &lt;/h:column&gt;\n"
+"     &lt;/h:dataTable&gt;\n"
+"     &lt;h3&gt;&lt;h:outputText value=\"#{message.title}\"/&gt;&lt;/h3&gt;\n"
+"     &lt;div&gt;&lt;h:outputText value=\"#{message.text}\"/&gt;&lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"  &lt;/f:view&gt;\n"
+" &lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:536
+#, no-c-format
+msgid ""
+"The first time we navigate to the <literal>messages.jsp</literal> page, "
+"whether by a JSF postback (faces request) or a direct browser GET request "
+"(non-faces request), the page will try to resolve the <literal>messageList</"
+"literal> context variable. Since this context variable is not initialized, "
+"Seam will call the factory method <literal>findMessages()</literal>, which "
+"performs a query against the database and results in a <literal>DataModel</"
+"literal> being outjected. This <literal>DataModel</literal> provides the row "
+"data needed for rendering the <literal>&lt;h:dataTable&gt;</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:539
+#, no-c-format
+msgid ""
+"When the user clicks the <literal>&lt;h:commandLink&gt;</literal>, JSF calls "
+"the <literal>select()</literal> action listener. Seam intercepts this call "
+"and injects the selected row data into the <literal>message</literal> "
+"attribute of the <literal>messageManager</literal> component. The action "
+"listener fires, marking the selected <literal>Message</literal> as read. At "
+"the end of the call, Seam outjects the selected <literal>Message</literal> "
+"to the context variable named <literal>message</literal>. Next, the EJB "
+"container commits the transaction, and the change to the <literal>Message</"
+"literal> is flushed to the database. Finally, the page is re-rendered, "
+"redisplaying the message list, and displaying the selected message below it."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:542
+#, no-c-format
+msgid ""
+"If the user clicks the <literal>&lt;h:commandButton&gt;</literal>, JSF calls "
+"the <literal>delete()</literal> action listener. Seam intercepts this call "
+"and injects the selected row data into the <literal>message</literal> "
+"attribute of the <literal>messageList</literal> component. The action "
+"listener fires, removing the selected <literal>Message</literal> from the "
+"list, and also calling <literal>remove()</literal> on the "
+"<literal>EntityManager</literal>. At the end of the call, Seam refreshes the "
+"<literal>messageList</literal> context variable and clears the context "
+"variable named <literal>message</literal>. The EJB container commits the "
+"transaction, and deletes the <literal>Message</literal> from the database. "
+"Finally, the page is re-rendered, redisplaying the message list."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:550
+#, no-c-format
+msgid "Seam and jBPM: the todo list example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:551
+#, no-c-format
+msgid ""
+"jBPM provides sophisticated functionality for workflow and task management. "
+"To get a small taste of how jBPM integrates with Seam, we'll show you a "
+"simple \"todo list\" application. Since managing lists of tasks is such core "
+"functionality for jBPM, there is hardly any Java code at all in this example."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:564
+#, no-c-format
+msgid ""
+"The center of this example is the jBPM process definition. There are also "
+"two JSPs and two trivial JavaBeans (There was no reason to use session "
+"beans, since they do not access the database, or have any other "
+"transactional behavior). Let's start with the process definition:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:575
+#, no-c-format
+msgid ""
+"&lt;process-definition name=\"todo\"&gt;\n"
+"   \n"
+"   &lt;start-state name=\"start\"&gt;\n"
+"      &lt;transition to=\"todo\"/&gt;\n"
+"   &lt;/start-state&gt;\n"
+"   \n"
+"   &lt;task-node name=\"todo\"&gt;\n"
+"      &lt;task name=\"todo\" description=\"#{todoList.description}\"&gt;\n"
+"         &lt;assignment actor-id=\"#{actor.id}\"/&gt;\n"
+"      &lt;/task&gt;\n"
+"      &lt;transition to=\"done\"/&gt;\n"
+"   &lt;/task-node&gt;\n"
+"   \n"
+"   &lt;end-state name=\"done\"/&gt;\n"
+"   \n"
+"&lt;/process-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:578
+#, no-c-format
+msgid ""
+"The <literal>&lt;start-state&gt;</literal> node represents the logical start "
+"of the process. When the process starts, it immediately transitions to the "
+"<literal>todo</literal> node."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:583
+#, no-c-format
+msgid ""
+"The <literal>&lt;task-node&gt;</literal> node represents a <emphasis>wait "
+"state</emphasis>, where business process execution pauses, waiting for one "
+"or more tasks to be performed."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:588
+#, no-c-format
+msgid ""
+"The <literal>&lt;task&gt;</literal> element defines a task to be performed "
+"by a user. Since there is only one task defined on this node, when it is "
+"complete, execution resumes, and we transition to the end state. The task "
+"gets its description from a Seam component named <literal>todoList</literal> "
+"(one of the JavaBeans)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:593
+#, no-c-format
+msgid ""
+"Tasks need to be assigned to a user or group of users when they are created. "
+"In this case, the task is assigned to the current user, which we get from a "
+"built-in Seam component named <literal>actor</literal>. Any Seam component "
+"may be used to perform task assignment."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:598
+#, no-c-format
+msgid ""
+"The <literal>&lt;end-state&gt;</literal> node defines the logical end of the "
+"business process. When execution reaches this node, the process instance is "
+"destroyed."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:605
+#, no-c-format
+msgid ""
+"If we view this process definition using the process definition editor "
+"provided by JBossIDE, this is what it looks like:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:616
+#, no-c-format
+msgid ""
+"This document defines our <emphasis>business process</emphasis> as a graph "
+"of nodes. This is the most trivial possible business process: there is one "
+"<emphasis>task</emphasis> to be performed, and when that task is complete, "
+"the business process ends."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:619
+#, no-c-format
+msgid ""
+"The first JavaBean handles the login screen <literal>login.jsp</literal>. "
+"Its job is just to initialize the jBPM actor id using the <literal>actor</"
+"literal> component. (In a real application, it would also need to "
+"authenticate the user.)"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:622
+#, no-c-format
+msgid ""
+"@Name(\"login\")\n"
+"public class Login {\n"
+"   \n"
+"   @In\n"
+"   private Actor actor;\n"
+"   \n"
+"   private String user;\n"
+"\n"
+"   public String getUser() {\n"
+"      return user;\n"
+"   }\n"
+"\n"
+"   public void setUser(String user) {\n"
+"      this.user = user;\n"
+"   }\n"
+"   \n"
+"   public String login()\n"
+"   {\n"
+"      actor.setId(user);\n"
+"      return \"/todo.jsp\";\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:623
+#, no-c-format
+msgid ""
+"Here we see the use of <literal>@In</literal> to inject the built-in "
+"<literal>Actor</literal> component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:626
+#, no-c-format
+msgid "The JSP itself is trivial:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:629
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"&#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"&#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Login&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Login&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    &lt;h:form&gt;\n"
+"      &lt;div&gt;\n"
+"        &lt;h:inputText value=\"#{login.user}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Login\" action=\"#{login.login}\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"    &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:630
+#, no-c-format
+msgid ""
+"The second JavaBean is responsible for starting business process instances, "
+"and ending tasks."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:639
+#, no-c-format
+msgid ""
+"@Name(\"todoList\")\n"
+"public class TodoList {\n"
+"   \n"
+"   private String description;\n"
+"   \n"
+"   public String getDescription()\n"
+"   {\n"
+"      return description;\n"
+"   }\n"
+"\n"
+"   public void setDescription(String description) {\n"
+"      this.description = description;\n"
+"   }\n"
+"   \n"
+"   @CreateProcess(definition=\"todo\")\n"
+"   public void createTodo() {}\n"
+"   \n"
+"   @StartTask @EndTask\n"
+"   public void done() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:642
+#, no-c-format
+msgid ""
+"The description property accepts user input form the JSP page, and exposes "
+"it to the process definition, allowing the task description to be set."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:647
+#, no-c-format
+msgid ""
+"The Seam <literal>@CreateProcess</literal> annotation creates a new jBPM "
+"process instance for the named process definition."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:652
+#, no-c-format
+msgid ""
+"The Seam <literal>@StartTask</literal> annotation starts work on a task. The "
+"<literal>@EndTask</literal> ends the task, and allows the business process "
+"execution to resume."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:659
+#, no-c-format
+msgid ""
+"In a more realistic example, <literal>@StartTask</literal> and "
+"<literal>@EndTask</literal> would not appear on the same method, because "
+"there is usually work to be done using the application in order to complete "
+"the task."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:662
+#, no-c-format
+msgid "Finally, the meat of the application is in <literal>todo.jsp</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:665
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\" &#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://jboss.com/products/seam/taglib\" prefix=\"s\" "
+"&#37;&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Todo List&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Todo List&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"   &lt;h:form id=\"list\"&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:outputText value=\"There are no todo items.\" rendered=\"#"
+"{empty \n"
+"             taskInstanceList}\"/&gt;\n"
+"         &lt;h:dataTable value=\"#{taskInstanceList}\" var=\"task\" rendered="
+"\"#{not empty taskInstanceList}\"&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Description\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.description}\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Created\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:outputText value=\"#{task.taskMgmtInstance."
+"processInstance.start}\"&gt;\n"
+"                    &lt;f:convertDateTime type=\"date\"/&gt;\n"
+"                &lt;/h:outputText&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Priority\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.priority}\" style=\"width: 30"
+"\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;f:facet name=\"header\"&gt;\n"
+"                    &lt;h:outputText value=\"Due Date\"/&gt;\n"
+"                &lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{task.dueDate}\" style=\"width: 100"
+"\"&gt;\n"
+"                    &lt;f:convertDateTime type=\"date\" dateStyle=\"short\"/"
+"&gt;\n"
+"                &lt;/h:inputText&gt;\n"
+"            &lt;/h:column&gt;\n"
+"            &lt;h:column&gt;\n"
+"                &lt;s:button value=\"Done\" action=\"#{todoList.done}\" "
+"taskInstance=\"#{task}\"/&gt;\n"
+"            &lt;/h:column&gt;\n"
+"         &lt;/h:dataTable&gt;\n"
+"      &lt;/div&gt;\n"
+"      &lt;div&gt;\n"
+"      &lt;h:messages/&gt;\n"
+"      &lt;/div&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:commandButton value=\"Update Items\" action=\"update\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"   &lt;h:form id=\"new\"&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:inputText value=\"#{todoList.description}\"/&gt;\n"
+"         &lt;h:commandButton value=\"Create New Item\" action=\"#{todoList."
+"createTodo}\"/&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:666
+#, no-c-format
+msgid "Let's take this one piece at a time."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:669
+#, no-c-format
+msgid ""
+"The page renders a list of tasks, which it gets from a built-in Seam "
+"component named <literal>taskInstanceList</literal>. The list is defined "
+"inside a JSF form."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:672
+#, no-c-format
+msgid ""
+"&lt;h:form id=\"list\"&gt;\n"
+"   &lt;div&gt;\n"
+"      &lt;h:outputText value=\"There are no todo items.\" rendered=\"#{empty "
+"taskInstanceList}\"/&gt;\n"
+"      &lt;h:dataTable value=\"#{taskInstanceList}\" var=\"task\" rendered=\"#"
+"{not empty taskInstanceList}\"&gt;\n"
+"         ...\n"
+"      &lt;/h:dataTable&gt;\n"
+"   &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:673
+#, no-c-format
+msgid ""
+"Each element of the list is an instance of the jBPM class "
+"<literal>TaskInstance</literal>. The following code simply displays the "
+"interesting properties of each task in the list. For the description, "
+"priority and due date, we use input controls, to allow the user to update "
+"these values."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:676
+#, no-c-format
+msgid ""
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"       &lt;h:outputText value=\"Description\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.description}\"/&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Created\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:outputText value=\"#{task.taskMgmtInstance.processInstance.start}"
+"\"&gt;\n"
+"        &lt;f:convertDateTime type=\"date\"/&gt;\n"
+"    &lt;/h:outputText&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Priority\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.priority}\" style=\"width: 30\"/&gt;\n"
+"&lt;/h:column&gt;\n"
+"&lt;h:column&gt;\n"
+"    &lt;f:facet name=\"header\"&gt;\n"
+"        &lt;h:outputText value=\"Due Date\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;h:inputText value=\"#{task.dueDate}\" style=\"width: 100\"&gt;\n"
+"        &lt;f:convertDateTime type=\"date\" dateStyle=\"short\"/&gt;\n"
+"    &lt;/h:inputText&gt;\n"
+"&lt;/h:column&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:677
+#, no-c-format
+msgid ""
+"This button ends the task by calling the action method annotated "
+"<literal>@StartTask @EndTask</literal>. It passes the task id to Seam as a "
+"request parameter:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:680
+#, no-c-format
+msgid ""
+"&lt;h:column&gt;\n"
+"    &lt;s:button value=\"Done\" action=\"#{todoList.done}\" taskInstance=\"#"
+"{task}\"/&gt;\n"
+"&lt;/h:column&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:681
+#, no-c-format
+msgid ""
+"(Note that this is using a Seam <literal>&lt;s:button&gt;</literal> JSF "
+"control from the <literal>seam-ui.jar</literal> package.)"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:684
+#, no-c-format
+msgid ""
+"This button is used to update the properties of the tasks. When the form is "
+"submitted, Seam and jBPM will make any changes to the tasks persistent. "
+"There is no need for any action listener method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:687
+#, no-c-format
+msgid "&lt;h:commandButton value=\"Update Items\" action=\"update\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:688
+#, no-c-format
+msgid ""
+"A second form on the page is used to create new items, by calling the action "
+"method annotated <literal>@CreateProcess</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:691
+#, no-c-format
+msgid ""
+"&lt;h:form id=\"new\"&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:inputText value=\"#{todoList.description}\"/&gt;\n"
+"        &lt;h:commandButton value=\"Create New Item\" action=\"#{todoList."
+"createTodo}\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:692
+#, no-c-format
+msgid ""
+"There are several other files needed for the example, but they are just "
+"standard jBPM and Seam configuration and not very interesting."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:699 Tutorial.xml:814 Tutorial.xml:1157 Tutorial.xml:1178
+#: Tutorial.xml:1191
+#, no-c-format
+msgid "TODO"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:707
+#, no-c-format
+msgid "Seam pageflow: the numberguess example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:708
+#, no-c-format
+msgid ""
+"For Seam applications with relatively freeform (ad hoc) navigation, JSF/Seam "
+"navigation rules are a perfectly good way to define the page flow. For "
+"applications with a more constrained style of navigation, especially for "
+"user interfaces which are more stateful, navigation rules make it difficult "
+"to really understand the flow of the system. To understand the flow, you "
+"need to piece it together from the view pages, the actions and the "
+"navigation rules."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:711
+#, no-c-format
+msgid ""
+"Seam allows you to use a jPDL process definition to define pageflow. The "
+"simple number guessing example shows how this is done."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:724
+#, no-c-format
+msgid ""
+"The example is implemented using one JavaBean, three JSP pages and a jPDL "
+"pageflow definition. Let's begin with the pageflow:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:734
+#, no-c-format
+msgid ""
+"&lt;pageflow-definition name=\"numberGuess\"&gt;\n"
+"   \n"
+"   &lt;start-page name=\"displayGuess\" view-id=\"/numberGuess.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;transition name=\"guess\" to=\"evaluateGuess\"&gt;\n"
+"          &lt;action expression=\"#{numberGuess.guess}\" /&gt;\n"
+"      &lt;/transition&gt;\n"
+"   &lt;/start-page&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateGuess\" expression=\"#{numberGuess."
+"correctGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"win\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"evaluateRemainingGuesses\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;decision name=\"evaluateRemainingGuesses\" expression=\"#{numberGuess."
+"lastGuess}\"&gt;\n"
+"      &lt;transition name=\"true\" to=\"lose\"/&gt;\n"
+"      &lt;transition name=\"false\" to=\"displayGuess\"/&gt;\n"
+"   &lt;/decision&gt;\n"
+"   \n"
+"   &lt;page name=\"win\" view-id=\"/win.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   &lt;page name=\"lose\" view-id=\"/lose.jsp\"&gt;\n"
+"      &lt;redirect/&gt;\n"
+"      &lt;end-conversation /&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"&lt;/pageflow-definition&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:737
+#, no-c-format
+msgid ""
+"The <literal>&lt;page&gt;</literal> element defines a wait state where the "
+"system displays a particular JSF view and waits for user input. The "
+"<literal>view-id</literal> is the same JSF view id used in plain JSF "
+"navigation rules. The <literal>redirect</literal> attribute tells Seam to "
+"use post-then-redirect when navigating to the page. (This results in "
+"friendly browser URLs.)"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:742
+#, no-c-format
+msgid ""
+"The <literal>&lt;transition&gt;</literal> element names a JSF outcome. The "
+"transition is triggered when a JSF action results in that outcome. Execution "
+"will then proceed to the next node of the pageflow graph, after invocation "
+"of any jBPM transition actions."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:747
+#, no-c-format
+msgid ""
+"A transition <literal>&lt;action&gt;</literal> is just like a JSF action, "
+"except that it occurs when a jBPM transition occurs. The transition action "
+"can invoke any Seam component."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:752
+#, no-c-format
+msgid ""
+"A <literal>&lt;decision&gt;</literal> node branches the pageflow, and "
+"determines the next node to execute by evaluating a JSF EL expression."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:759
+#, no-c-format
+msgid "Here is what the pageflow looks like in the JBossIDE pageflow editor:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:770
+#, no-c-format
+msgid ""
+"Now that we have seen the pageflow, it is very, very easy to understand the "
+"rest of the application!"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:773
+#, no-c-format
+msgid ""
+"Here is the main page of the application, <literal>numberGuess.jsp</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:776
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"&#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"&#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;Guess a number...&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;Guess a number...&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    &lt;h:form&gt;\n"
+"        &lt;h:outputText value=\"Higher!\" rendered=\"#{numberGuess."
+"randomNumber&gt;numberGuess.currentGuess}\" /&gt;\n"
+"        &lt;h:outputText value=\"Lower!\" rendered=\"#{numberGuess."
+"randomNumber&lt;numberGuess.currentGuess}\" /&gt;\n"
+"        &lt;br /&gt;\n"
+"        I'm thinking of a number between &lt;h:outputText value=\"#"
+"{numberGuess.smallest}\" /&gt; and \n"
+"        &lt;h:outputText value=\"#{numberGuess.biggest}\" /&gt;. You have \n"
+"        &lt;h:outputText value=\"#{numberGuess.remainingGuesses}\" /&gt; "
+"guesses.\n"
+"        &lt;br /&gt;\n"
+"        Your guess: \n"
+"        &lt;h:inputText value=\"#{numberGuess.currentGuess}\" id=\"guess\" "
+"required=\"true\"&gt;\n"
+"            &lt;f:validateLongRange\n"
+"                maximum=\"#{numberGuess.biggest}\" \n"
+"                minimum=\"#{numberGuess.smallest}\"/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"        &lt;h:commandButton type=\"submit\" value=\"Guess\" action=\"guess"
+"\" /&gt;\n"
+"        &lt;br/&gt;\n"
+"        &lt;h:message for=\"guess\" style=\"color: red\"/&gt;\n"
+"    &lt;/h:form&gt;\n"
+"&lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:777
+#, no-c-format
+msgid ""
+"Notice how the command button names the <literal>guess</literal> transition "
+"instead of calling an action directly."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:780
+#, no-c-format
+msgid "The <literal>win.jsp</literal> page is predictable:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:783
+#, no-c-format
+msgid ""
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/html\" prefix=\"h\"&#37;"
+"&gt;\n"
+"&lt;&#37;@ taglib uri=\"http://java.sun.com/jsf/core\" prefix=\"f\"&#37;"
+"&gt;\n"
+"&lt;html&gt;\n"
+"&lt;head&gt;\n"
+"&lt;title&gt;You won!&lt;/title&gt;\n"
+"&lt;/head&gt;\n"
+"&lt;body&gt;\n"
+"&lt;h1&gt;You won!&lt;/h1&gt;\n"
+"&lt;f:view&gt;\n"
+"    Yes, the answer was &lt;h:outputText value=\"#{numberGuess.currentGuess}"
+"\" /&gt;.\n"
+"    It took you &lt;h:outputText value=\"#{numberGuess.guessCount}\" /&gt; "
+"guesses.\n"
+"    Would you like to &lt;a href=\"numberGuess.seam\"&gt;play again&lt;/"
+"a&gt;?\n"
+"  &lt;/f:view&gt;\n"
+"&lt;/body&gt;\n"
+"&lt;/html&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:784
+#, no-c-format
+msgid ""
+"As is <literal>lose.jsp</literal> (which I can't be bothered copy/pasting). "
+"Finally, the JavaBean Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:792
+#, no-c-format
+msgid ""
+"@Name(\"numberGuess\")\n"
+"@Scope(ScopeType.CONVERSATION)\n"
+"public class NumberGuess {\n"
+"   \n"
+"   private int randomNumber;\n"
+"   private Integer currentGuess;\n"
+"   private int biggest;\n"
+"   private int smallest;\n"
+"   private int guessCount;\n"
+"   private int maxGuesses;\n"
+"   \n"
+"   @Create \n"
+"   @Begin(pageflow=\"numberGuess\")\n"
+"   public void begin()\n"
+"   {\n"
+"      randomNumber = new Random().nextInt(100);\n"
+"      guessCount = 0;\n"
+"      biggest = 100;\n"
+"      smallest = 1;\n"
+"   }\n"
+"   \n"
+"   public void setCurrentGuess(Integer guess)\n"
+"   {\n"
+"      this.currentGuess = guess;\n"
+"   }\n"
+"   \n"
+"   public Integer getCurrentGuess()\n"
+"   {\n"
+"      return currentGuess;\n"
+"   }\n"
+"   \n"
+"   public void guess()\n"
+"   {\n"
+"      if (currentGuess&gt;randomNumber)\n"
+"      {\n"
+"         biggest = currentGuess - 1;\n"
+"      }\n"
+"      if (currentGuess&lt;randomNumber)\n"
+"      {\n"
+"         smallest = currentGuess + 1;\n"
+"      }\n"
+"      guessCount ++;\n"
+"   }\n"
+"   \n"
+"   public boolean isCorrectGuess()\n"
+"   {\n"
+"      return currentGuess==randomNumber;\n"
+"   }\n"
+"   \n"
+"   public int getBiggest()\n"
+"   {\n"
+"      return biggest;\n"
+"   }\n"
+"   \n"
+"   public int getSmallest()\n"
+"   {\n"
+"      return smallest;\n"
+"   }\n"
+"   \n"
+"   public int getGuessCount()\n"
+"   {\n"
+"      return guessCount;\n"
+"   }\n"
+"   \n"
+"   public boolean isLastGuess()\n"
+"   {\n"
+"      return guessCount==maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getRemainingGuesses() {\n"
+"      return maxGuesses-guessCount;\n"
+"   }\n"
+"\n"
+"   public void setMaxGuesses(int maxGuesses) {\n"
+"      this.maxGuesses = maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getMaxGuesses() {\n"
+"      return maxGuesses;\n"
+"   }\n"
+"\n"
+"   public int getRandomNumber() {\n"
+"      return randomNumber;\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:795
+#, no-c-format
+msgid ""
+"The first time a JSP page asks for a <literal>numberGuess</literal> "
+"component, Seam will create a new one for it, and the <literal>@Create</"
+"literal> method will be invoked, allowing the component to initialize itself."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:800
+#, no-c-format
+msgid ""
+"The <literal>@Begin</literal> annotation starts a Seam "
+"<emphasis>conversation</emphasis> (much more about that later), and "
+"specifies the pageflow definition to use for the conversation's page flow."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:807
+#, no-c-format
+msgid ""
+"As you can see, this Seam component is pure business logic! It doesn't need "
+"to know anything at all about the user interaction flow. This makes the "
+"component potentially more reuseable."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:822
+#, no-c-format
+msgid "A complete Seam application: the Hotel Booking example"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:824
+#, no-c-format
+msgid "Introduction"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:825
+#, no-c-format
+msgid ""
+"The booking application is a complete hotel room reservation system "
+"incorporating the following features:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:830
+#, no-c-format
+msgid "User registration"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:835
+#, no-c-format
+msgid "Login"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:840
+#, no-c-format
+msgid "Logout"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:845
+#, no-c-format
+msgid "Set password"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:850
+#, no-c-format
+msgid "Hotel search"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:855
+#, no-c-format
+msgid "Hotel selection"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:860
+#, no-c-format
+msgid "Room reservation"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:865
+#, no-c-format
+msgid "Reservation confirmation"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:870
+#, no-c-format
+msgid "Existing reservation list"
+msgstr ""
+
+#. Tag: screeninfo
+#: Tutorial.xml:875
+#, no-c-format
+msgid "Booking example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:883
+#, no-c-format
+msgid ""
+"The booking application uses JSF, EJB 3.0 and Seam, together with Facelets "
+"for the view. There is also a port of this application to JSF, Facelets, "
+"Seam, JavaBeans and Hibernate3."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:886
+#, no-c-format
+msgid ""
+"One of the things you'll notice if you play with this application for long "
+"enough is that it is extremely <emphasis>robust</emphasis>. You can play "
+"with back buttons and browser refresh and opening multiple windows and "
+"entering nonsensical data as much as you like and you will find it very "
+"difficult to make the application crash. You might think that we spent weeks "
+"testing and fixing bugs to achive this. Actually, this is not the case. Seam "
+"was designed to make it very straightforward to build robust web "
+"applications and a lot of robustness that you are probably used to having to "
+"code yourself comes naturally and automatically with Seam."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:889
+#, no-c-format
+msgid ""
+"As you browse the sourcecode of the example application, and learn how the "
+"application works, observe how the declarative state management and "
+"integrated validation has been used to achieve this robustness."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:895
+#, no-c-format
+msgid "Overview of the booking example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:896
+#, no-c-format
+msgid ""
+"The project structure is identical to the previous one, to install and "
+"deploy this application, please refer to <xref linkend=\"Seam_Tutorial-"
+"Try_the_examples\"/>. Once you've successfully started the application, you "
+"can access it by pointing your browser to <ulink url=\"http://localhost:8080/"
+"seam-booking/\"><literal>http://localhost:8080/seam-booking/</literal></"
+"ulink>"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:899
+#, no-c-format
+msgid ""
+"Just ten classes (plus six session beans local interfaces and 1 annotation "
+"interface) where used to implement this application. Six session bean action "
+"listeners contain all the business logic for the listed features."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:904
+#, no-c-format
+msgid ""
+"<literal>BookingListAction</literal> retrieves existing bookings for the "
+"currently logged in user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:907
+#, no-c-format
+msgid ""
+"<literal>ChangePasswordAction</literal> updates the password of the "
+"currently logged in user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:910
+#, no-c-format
+msgid ""
+"<literal>HotelBookingAction</literal> implements the core functionality of "
+"the application: hotel room searching, selection, booking and booking "
+"confirmation. This functionality is implemented as a <emphasis>conversation</"
+"emphasis>, so this is the most interesting class in the application."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:913
+#, no-c-format
+msgid ""
+"<literal>LoginAction</literal> validates the login details and retrieves the "
+"logged in user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:916
+#, no-c-format
+msgid "<literal>LogoutAction</literal> ends the login session."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:919
+#, no-c-format
+msgid "<literal>RegisterAction</literal> registers a new system user."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:922
+#, no-c-format
+msgid "Three entity beans implement the application's persistent domain model."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:927
+#, no-c-format
+msgid "<literal>Hotel</literal> is an entity bean that represent a hotel"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:930
+#, no-c-format
+msgid ""
+"<literal>Booking</literal> is an entity bean that represents an existing "
+"booking"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:933
+#, no-c-format
+msgid ""
+"<literal>User</literal> is an entity bean to represents a user who can make "
+"hotel bookings"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:936
+#, no-c-format
+msgid ""
+"Finally, the <literal>LoggedIn</literal> annotation and the "
+"<literal>LoggedInInterceptor</literal> are used to protect actions that "
+"require a logged in user."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:942
+#, no-c-format
+msgid "Understanding Seam conversations"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:943
+#, no-c-format
+msgid ""
+"We encourage you browse the sourcecode at your pleasure. In this tutorial "
+"we'll concentrate upon one particular piece of functionality: hotel search, "
+"selection, booking and confirmation. From the point of view of the user, "
+"everything from selecting a hotel to confirming a booking is one continuous "
+"unit of work, a <emphasis>conversation</emphasis>. Searching, however, is "
+"<emphasis>not</emphasis> part of the conversation. The user can select "
+"multiple hotels from the same search results page, in different browser tabs."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:946
+#, no-c-format
+msgid ""
+"Most web application architectures have no first class construct to "
+"represent a conversation. This causes enormous problems managing state "
+"associated with the conversation. Usually, Java web applications use a "
+"combination of two techniques: first, some state is thrown into the "
+"<literal>HttpSession</literal>; second, persistable state is flushed to the "
+"database after every request, and reconstructed from the database at the "
+"beginning of each new request."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:949
+#, no-c-format
+msgid ""
+"Since the database is the least scalable tier, this often results in an "
+"utterly unacceptable lack of scalability. Added latency is also a problem, "
+"due to the extra traffic to and from the database on every request. To "
+"reduce this redundant traffic, Java applications often introduce a data "
+"(second-level) cache that keeps commonly accessed data between requests. "
+"This cache is necessarily inefficient, because invalidation is based upon an "
+"LRU policy instead of being based upon when the user has finished working "
+"with the data. Furthermore, because the cache is shared between many "
+"concurrent transactions, we've introduced a whole raft of problem's "
+"associated with keeping the cached state consistent with the database."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:952
+#, no-c-format
+msgid ""
+"Now consider the state held in the <literal>HttpSession</literal>. By very "
+"careful programming, we might be able to control the size of the session "
+"data. This is a lot more difficult than it sounds, since web browsers permit "
+"ad hoc non-linear navigation. But suppose we suddenly discover a system "
+"requirement that says that a user is allowed to have <emphasis>mutiple "
+"concurrent conversations</emphasis>, halfway through the development of the "
+"system (this has happened to me). Developing mechanisms to isolate session "
+"state associated with different concurrent conversations, and incorporating "
+"failsafes to ensure that conversation state is destroyed when the user "
+"aborts one of the conversations by closing a browser window or tab is not "
+"for the faint hearted (I've implemented this stuff twice so far, once for a "
+"client application, once for Seam, but I'm famously psychotic)."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:955
+#, no-c-format
+msgid "Now there is a better way."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:958
+#, no-c-format
+msgid ""
+"Seam introduces the <emphasis>conversation context</emphasis> as a first "
+"class construct. You can safely keep conversational state in this context, "
+"and be assured that it will have a well-defined lifecycle. Even better, you "
+"won't need to be continually pushing data back and forth between the "
+"application server and the database, since the conversation context is a "
+"natural cache of data that the user is currently working with."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:961
+#, no-c-format
+msgid ""
+"Usually, the components we keep in the conversation context are stateful "
+"session beans. (We can also keep entity beans and JavaBeans in the "
+"conversation context.) There is an ancient canard in the Java community that "
+"stateful session beans are a scalability killer. This may have been true in "
+"1998 when WebFoobar 1.0 was released. It is no longer true today. "
+"Application servers like JBoss 4.0 have extremely sophisticated mechanisms "
+"for stateful session bean state replication. (For example, the JBoss EJB3 "
+"container performs fine-grained replication, replicating only those bean "
+"attribute values which actually changed.) Note that all the traditional "
+"technical arguments for why stateful beans are inefficient apply equally to "
+"the <literal>HttpSession</literal>, so the practice of shifting state from "
+"business tier stateful session bean components to the web session to try and "
+"improve performance is unbelievably misguided. It is certainly possible to "
+"write unscalable applications using stateful session beans, by using "
+"stateful beans incorrectly, or by using them for the wrong thing. But that "
+"doesn't mean you should <emphasis>never</emphasis> use them. Anyway, Seam "
+"guides you toward a safe usage model. Welcome to 2005."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:964
+#, no-c-format
+msgid "OK, I'll stop ranting now, and get back to the tutorial."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:967
+#, no-c-format
+msgid ""
+"The booking example application shows how stateful components with different "
+"scopes can collaborate together to achieve complex behaviors. The main page "
+"of the booking application allows the user to search for hotels. The search "
+"results are kept in the Seam session scope. When the user navigates to one "
+"of these hotels, a conversation begins, and a conversation scoped component "
+"calls back to the session scoped component to retrieve the selected hotel."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:970
+#, no-c-format
+msgid ""
+"The booking example also demonstrates the use of Ajax4JSF to implement rich "
+"client behavior without the use of handwritten JavaScript."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:973
+#, no-c-format
+msgid ""
+"The search functionality is implemented using a session-scope stateful "
+"session bean, similar to the one we saw in the message list example above."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:983
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"hotelSearch\")\n"
+"@Scope(ScopeType.SESSION)\n"
+"@LoggedIn\n"
+"public class HotelSearchingAction implements HotelSearching\n"
+"{\n"
+"   \n"
+"   @PersistenceContext\n"
+"   private EntityManager em;\n"
+"   \n"
+"   private String searchString;\n"
+"   private int pageSize = 10;\n"
+"   private int page;\n"
+"   \n"
+"   @DataModel\n"
+"   private List&lt;Hotel&gt; hotels;\n"
+"   \n"
+"   public String find()\n"
+"   {\n"
+"      page = 0;\n"
+"      queryHotels();   \n"
+"      return \"main\";\n"
+"   }\n"
+"\n"
+"   public String nextPage()\n"
+"   {\n"
+"      page++;\n"
+"      queryHotels();\n"
+"      return \"main\";\n"
+"   }\n"
+"      \n"
+"   private void queryHotels()\n"
+"   {\n"
+"      String searchPattern = searchString==null ? \"&#37;\" : '&#37;' + \n"
+"          searchString.toLowerCase().replace('*', '&#37;') + '&#37;';\n"
+"      hotels = em.createQuery(\"select h from Hotel h where lower(h.name) "
+"like\n"
+"          :search or lower(h.city) like :search \n"
+"          or lower(h.zip) like :search or lower(h.address) like :search\")\n"
+"            .setParameter(\"search\", searchPattern)\n"
+"            .setMaxResults(pageSize)\n"
+"            .setFirstResult( page * pageSize )\n"
+"            .getResultList();\n"
+"   }\n"
+"   \n"
+"   public boolean isNextPageAvailable()\n"
+"   {\n"
+"      return hotels!=null &amp;&amp; hotels.size()==pageSize;\n"
+"   }\n"
+"   \n"
+"   public int getPageSize() {\n"
+"      return pageSize;\n"
+"   }\n"
+"\n"
+"   public void setPageSize(int pageSize) {\n"
+"      this.pageSize = pageSize;\n"
+"   }\n"
+"\n"
+"   public String getSearchString()\n"
+"   {\n"
+"      return searchString;\n"
+"   }\n"
+"\n"
+"   public void setSearchString(String searchString)\n"
+"   {\n"
+"      this.searchString = searchString;\n"
+"   }\n"
+"   \n"
+"   @Destroy @Remove\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:986
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Stateful</literal> annotation identifies this "
+"class as a stateful session bean. Stateful session beans are scoped to the "
+"conversation context by default."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:991
+#, no-c-format
+msgid ""
+"The <literal>@LoggedIn</literal> annotation applies a custom Seam "
+"interceptor to the component. This works because <literal>@LoggedIn</"
+"literal> is marked with an <literal>@Interceptor</literal> meta-annotation."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:996
+#, no-c-format
+msgid ""
+"The <link linkend=\"datamodel-annotation\"><literal>@DataModel</literal></"
+"link> annotation exposes a <literal>List</literal> as a JSF "
+"<literal>ListDataModel</literal>. This makes it easy to implement clickable "
+"lists for search screens. In this case, the list of hotels is exposed to the "
+"page as a <literal>ListDataModel</literal> in the conversation variable "
+"named <literal>hotels</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1001
+#, no-c-format
+msgid ""
+"The EJB standard <literal>@Remove</literal> annotation specifies that a "
+"stateful session bean should be removed and its state destroyed after "
+"invocation of the annotated method. In Seam, all stateful session beans "
+"should define a method marked <literal>@Destroy @Remove</literal>. This is "
+"the EJB remove method that will be called when Seam destroys the session "
+"context. Actually, the <link linkend=\"destroy-annotation"
+"\"><literal>@Destroy</literal></link> annotation is of more general "
+"usefulness, since it can be used for any kind of cleanup that should happen "
+"when any Seam context ends. If you don't have an <literal>@Destroy @Remove</"
+"literal> method, state will leak and you will suffer performance problems."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1008
+#, no-c-format
+msgid ""
+"The main page of the application is a Facelets page. Let's look at the "
+"fragment which relates to searching for hotels:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1018
+#, no-c-format
+msgid ""
+"&lt;div class=\"section\"&gt;\n"
+"&lt;h:form&gt;\n"
+"  \n"
+"  &lt;span class=\"errors\"&gt;\n"
+"    &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"  &lt;/span&gt;\n"
+"    \n"
+"  &lt;h1&gt;Search Hotels&lt;/h1&gt;\n"
+"  &lt;fieldset&gt; \n"
+"     &lt;h:inputText value=\"#{hotelSearch.searchString}\" style=\"width: "
+"165px;\"&gt;\n"
+"        &lt;a:support event=\"onkeyup\" actionListener=\"#{hotelSearch.find}"
+"\" \n"
+"                   reRender=\"searchResults\" /&gt;\n"
+"     &lt;/h:inputText&gt;\n"
+"     &amp;#160;\n"
+"     &lt;a:commandButton value=\"Find Hotels\" action=\"#{hotelSearch.find}"
+"\" \n"
+"                      styleClass=\"button\" reRender=\"searchResults\"/&gt;\n"
+"     &amp;#160;\n"
+"     &lt;a:status&gt;\n"
+"        &lt;f:facet name=\"start\"&gt;\n"
+"           &lt;h:graphicImage value=\"/img/spinner.gif\"/&gt;\n"
+"        &lt;/f:facet&gt;\n"
+"     &lt;/a:status&gt;\n"
+"     &lt;br/&gt;\n"
+"     &lt;h:outputLabel for=\"pageSize\"&gt;Maximum results:&lt;/h:"
+"outputLabel&gt;&amp;#160;\n"
+"     &lt;h:selectOneMenu value=\"#{hotelSearch.pageSize}\" id=\"pageSize"
+"\"&gt;\n"
+"        &lt;f:selectItem itemLabel=\"5\" itemValue=\"5\"/&gt;\n"
+"        &lt;f:selectItem itemLabel=\"10\" itemValue=\"10\"/&gt;\n"
+"        &lt;f:selectItem itemLabel=\"20\" itemValue=\"20\"/&gt;\n"
+"     &lt;/h:selectOneMenu&gt;\n"
+"  &lt;/fieldset&gt;\n"
+"    \n"
+"&lt;/h:form&gt;\n"
+"&lt;/div&gt;\n"
+"\n"
+"&lt;a:outputPanel id=\"searchResults\"&gt;\n"
+"  &lt;div class=\"section\"&gt;\n"
+"  &lt;h:outputText value=\"No Hotels Found\" \n"
+"                rendered=\"#{hotels != null and hotels.rowCount==0}\"/&gt;\n"
+"  &lt;h:dataTable value=\"#{hotels}\" var=\"hot\" rendered=\"#{hotels."
+"rowCount&gt;0}\"&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Name&lt;/f:facet&gt;\n"
+"      #{hot.name}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Address&lt;/f:facet&gt;\n"
+"      #{hot.address}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;City, State&lt;/f:facet&gt;\n"
+"      #{hot.city}, #{hot.state}, #{hot.country}\n"
+"    &lt;/h:column&gt; \n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Zip&lt;/f:facet&gt;\n"
+"      #{hot.zip}\n"
+"    &lt;/h:column&gt;\n"
+"    &lt;h:column&gt;\n"
+"      &lt;f:facet name=\"header\"&gt;Action&lt;/f:facet&gt;\n"
+"      &lt;s:link value=\"View Hotel\" action=\"#{hotelBooking.selectHotel"
+"(hot)}\"/&gt;\n"
+"    &lt;/h:column&gt;\n"
+"  &lt;/h:dataTable&gt;\n"
+"  &lt;s:link value=\"More results\" action=\"#{hotelSearch.nextPage}\" \n"
+"          rendered=\"#{hotelSearch.nextPageAvailable}\"/&gt;\n"
+"  &lt;/div&gt;\n"
+"&lt;/a:outputPanel&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1021
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:support&gt;</literal> tag allows a JSF action "
+"event listener to be called by asynchronous <literal>XMLHttpRequest</"
+"literal> when a JavaScript event like <literal>onkeyup</literal> occurs. "
+"Even better, the <literal>reRender</literal> attribute lets us render a "
+"fragment of the JSF page and perform a partial page update when the "
+"asynchronous response is received."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1026
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:status&gt;</literal> tag lets us display a "
+"cheesy annimated image while we wait for asynchronous requests to return."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1031
+#, no-c-format
+msgid ""
+"The Ajax4JSF <literal>&lt;a:outputPanel&gt;</literal> tag defines a region "
+"of the page which can be re-rendered by an asynchronous request."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1036
+#, no-c-format
+msgid ""
+"The Seam <literal>&lt;s:link&gt;</literal> tag lets us attach a JSF action "
+"listener to an ordinary (non-JavaScript) HTML link. The advantage of this "
+"over the standard JSF <literal>&lt;h:commandLink&gt;</literal> is that it "
+"preserves the operation of \"open in new window\" and \"open in new tab\". "
+"Also notice that we use a method binding with a parameter: <literal>#"
+"{hotelBooking.selectHotel(hot)}</literal>. This is not possible in the "
+"standard Unified EL, but Seam provides an extension to the EL that lets you "
+"use parameters on any method binding expression."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1043
+#, no-c-format
+msgid ""
+"This page displays the search results dynamically as we type, and lets us "
+"choose a hotel and pass it to the <literal>selectHotel()</literal> method of "
+"the <literal>HotelBookingAction</literal>, which is where the "
+"<emphasis>really</emphasis> interesting stuff is going to happen."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1046
+#, no-c-format
+msgid ""
+"Now lets see how the booking example application uses a conversation-scoped "
+"stateful session bean to achieve a natural cache of persistent data related "
+"to the conversation. The following code example is pretty long. But if you "
+"think of it as a list of scripted actions that implement the various steps "
+"of the conversation, it's understandable. Read the class from top to bottom, "
+"as if it were a story."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1057
+#, no-c-format
+msgid ""
+"@Stateful\n"
+"@Name(\"hotelBooking\")\n"
+"@LoggedIn\n"
+"public class HotelBookingAction implements HotelBooking\n"
+"{\n"
+"   \n"
+"   @PersistenceContext(type=EXTENDED)\n"
+"   private EntityManager em;\n"
+"   \n"
+"   @In \n"
+"   private User user;\n"
+"   \n"
+"   @In(required=false) @Out\n"
+"   private Hotel hotel;\n"
+"   \n"
+"   @In(required=false) \n"
+"   @Out(required=false)\n"
+"   private Booking booking;\n"
+"     \n"
+"   @In\n"
+"   private FacesMessages facesMessages;\n"
+"      \n"
+"   @In\n"
+"   private Events events;\n"
+"   \n"
+"   @Logger \n"
+"   private Log log;\n"
+"   \n"
+"   @Begin\n"
+"   public String selectHotel(Hotel selectedHotel)\n"
+"   {\n"
+"      hotel = em.merge(selectedHotel);\n"
+"      return \"hotel\";\n"
+"   }\n"
+"   \n"
+"   public String bookHotel()\n"
+"   {      \n"
+"      booking = new Booking(hotel, user);\n"
+"      Calendar calendar = Calendar.getInstance();\n"
+"      booking.setCheckinDate( calendar.getTime() );\n"
+"      calendar.add(Calendar.DAY_OF_MONTH, 1);\n"
+"      booking.setCheckoutDate( calendar.getTime() );\n"
+"      \n"
+"      return \"book\";\n"
+"   }\n"
+"\n"
+"   public String setBookingDetails()\n"
+"   {\n"
+"      if (booking==null || hotel==null) return \"main\";\n"
+"      if ( !booking.getCheckinDate().before( booking.getCheckoutDate() ) )\n"
+"      {\n"
+"         facesMessages.add(\"Check out date must be later than check in date"
+"\");\n"
+"         return null;\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return \"confirm\";\n"
+"      }\n"
+"   }\n"
+"\n"
+"   @End\n"
+"   public String confirm()\n"
+"   {\n"
+"      if (booking==null || hotel==null) return \"main\";\n"
+"      em.persist(booking);\n"
+"      facesMessages.add\n"
+"          (\"Thank you, #{user.name}, your confimation number for #{hotel."
+"name} is #{booking.id}\");\n"
+"      log.info(\"New booking: #{booking.id} for #{user.username}\");\n"
+"      events.raiseEvent(\"bookingConfirmed\");\n"
+"      return \"confirmed\";\n"
+"   }\n"
+"   \n"
+"   @End\n"
+"   public String cancel()\n"
+"   {\n"
+"      return \"main\";\n"
+"   }\n"
+"   \n"
+"   @Destroy @Remove\n"
+"   public void destroy() {}\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1060
+#, no-c-format
+msgid ""
+"This bean uses an EJB3 <emphasis>extended persistence context</emphasis>, so "
+"that any entity instances remain managed for the whole lifecycle of the "
+"stateful session bean."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1065
+#, no-c-format
+msgid ""
+"The <link linkend=\"out-annotation\"><literal>@Out</literal></link> "
+"annotation declares that an attribute value is <emphasis>outjected</"
+"emphasis> to a context variable after method invocations. In this case, the "
+"context variable named <literal>hotel</literal> will be set to the value of "
+"the <literal>hotel</literal> instance variable after every action listener "
+"invocation completes."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1070
+#, no-c-format
+msgid ""
+"The <link linkend=\"begin-annotation\"><literal>@Begin</literal></link> "
+"annotation specifies that the annotated method begins a <emphasis>long-"
+"running conversation</emphasis>, so the current conversation context will "
+"not be destroyed at the end of the request. Instead, it will be reassociated "
+"with every request from the current window, and destroyed either by timeout "
+"due to conversation inactivity or invocation of a matching <literal>@End</"
+"literal> method."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1075
+#, no-c-format
+msgid ""
+"The <link linkend=\"end-annotation\"><literal>@End</literal></link> "
+"annotation specifies that the annotated method ends the current long-running "
+"conversation, so the current conversation context will be destroyed at the "
+"end of the request."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1080
+#, no-c-format
+msgid ""
+"This EJB remove method will be called when Seam destroys the conversation "
+"context. Don't ever forget to define this method!"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1087
+#, no-c-format
+msgid ""
+"<literal>HotelBookingAction</literal> contains all the action listener "
+"methods that implement selection, booking and booking confirmation, and "
+"holds state related to this work in its instance variables. We think you'll "
+"agree that this code is much cleaner and simpler than getting and setting "
+"<literal>HttpSession</literal> attributes."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1090
+#, no-c-format
+msgid ""
+"Even better, a user can have multiple isolated conversations per login "
+"session. Try it! Log in, run a search, and navigate to different hotel pages "
+"in multiple browser tabs. You'll be able to work on creating two different "
+"hotel reservations at the same time. If you leave any one conversation "
+"inactive for long enough, Seam will eventually time out that conversation "
+"and destroy its state. If, after ending a conversation, you backbutton to a "
+"page of that conversation and try to perform an action, Seam will detect "
+"that the conversation was already ended, and redirect you to the search page."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1096
+#, no-c-format
+msgid "The Seam UI control library"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1097
+#, no-c-format
+msgid ""
+"If you check inside the WAR file for the booking application, you'll find "
+"<literal>seam-ui.jar</literal> in the <literal>WEB-INF/lib</literal> "
+"directory. This package contains a number of JSF custom controls that "
+"integrate with Seam. The booking application uses the <literal>&lt;s:link&gt;"
+"</literal> control for navigation from the search screen to the hotel page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1100
+#, no-c-format
+msgid ""
+"&lt;s:link value=\"View Hotel\" action=\"#{hotelBooking.selectHotel}\"/&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1101
+#, no-c-format
+msgid ""
+"The use of <literal>&lt;s:link&gt;</literal> here allows us to attach an "
+"action listener to a HTML link without breaking the browser's \"open in new "
+"window\" feature. The standard JSF <literal>&lt;h:commandLink&gt;</literal> "
+"does not work with \"open in new window\". We'll see later that <literal>&lt;"
+"s:link&gt;</literal> also offers a number of other useful features, "
+"including conversation propagation rules."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1104
+#, no-c-format
+msgid ""
+"The booking application uses some other Seam and Ajax4JSF controls, "
+"especially on the <literal>/book.xhtml</literal> page. We won't get into the "
+"details of those controls here, but if you want to understand this code, "
+"please refer to the chapter covering Seam's functionality for JSF form "
+"validation."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1110
+#, no-c-format
+msgid "The Seam Debug Page"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1111
+#, no-c-format
+msgid ""
+"The WAR also includes <literal>seam-debug.jar</literal>. If this jar is "
+"deployed in <literal>WEB-INF/lib</literal>, along with the Facelets, and if "
+"you set the following Seam property in <literal>web.xml</literal> or "
+"<literal>seam.properties</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1114
+#, no-c-format
+msgid ""
+"&lt;context-param&gt;\n"
+"    &lt;param-name&gt;org.jboss.seam.core.init.debug&lt;/param-name&gt;\n"
+"    &lt;param-value&gt;true&lt;/param-value&gt;\n"
+"&lt;/context-param&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1115
+#, no-c-format
+msgid ""
+"Then the Seam debug page will be available. This page lets you browse and "
+"inspect the Seam components in any of the Seam contexts associated with your "
+"current login session. Just point your browser at <ulink url=\"http://"
+"localhost:8080/seam-booking/debug.seam\"><literal>http://localhost:8080/seam-"
+"booking/debug.seam</literal></ulink>."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1131
+#, no-c-format
+msgid "A complete application featuring Seam and jBPM: the DVD Store example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1132
+#, no-c-format
+msgid ""
+"The DVD Store demo application shows the practical usage of jBPM for both "
+"task management and pageflow."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1135
+#, no-c-format
+msgid ""
+"The user screens take advantage of a jPDL pageflow to implement searching "
+"and shopping cart functionality."
+msgstr ""
+
+#. Tag: screeninfo
+#: Tutorial.xml:1138 Tutorial.xml:1149 Tutorial.xml:1170
+#, no-c-format
+msgid "DVD Store example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1146
+#, no-c-format
+msgid ""
+"The administration screens take use jBPM to manage the approval and shipping "
+"cycle for orders. The business process may even be changed dynamically, by "
+"selecting a different process definition!"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1160
+#, no-c-format
+msgid "Look in the <literal>dvdstore</literal> directory."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1166
+#, no-c-format
+msgid ""
+"A complete application featuring Seam workspace management: the Issue "
+"Tracker example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1167
+#, no-c-format
+msgid ""
+"The Issue Tracker demo shows off Seam's workspace management functionality: "
+"the conversation switcher, conversation list and breadcrumbs."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1181
+#, no-c-format
+msgid "Look in the <literal>issues</literal> directory."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1187
+#, no-c-format
+msgid "An example of Seam with Hibernate: the Hibernate Booking example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1188
+#, no-c-format
+msgid ""
+"The Hibernate Booking demo is a straight port of the Booking demo to an "
+"alternative architecture that uses Hibernate for persistence and JavaBeans "
+"instead of session beans."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1194
+#, no-c-format
+msgid "Look in the <literal>hibernate</literal> directory."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1200
+#, no-c-format
+msgid "A RESTful Seam application: the Blog example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1201
+#, no-c-format
+msgid ""
+"Seam makes it very easy to implement applications which keep state on the "
+"server-side. However, server-side state is not always appropriate, "
+"especially in for functionality that serves up <emphasis>content</emphasis>. "
+"For this kind of problem we often need to let the user bookmark pages and "
+"have a relatively stateless server, so that any page can be accessed at any "
+"time, via the bookmark. The Blog example shows how to a implement RESTful "
+"application using Seam. Every page of the application can be bookmarked, "
+"including the search results page."
+msgstr ""
+
+#. Tag: screeninfo
+#: Tutorial.xml:1204
+#, no-c-format
+msgid "Blog example"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1212
+#, no-c-format
+msgid ""
+"The Blog example demonstrates the use of \"pull\"-style MVC, where instead "
+"of using action listener methods to retrieve data and prepare the data for "
+"the view, the view pulls data from components as it is being rendered."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1216
+#, no-c-format
+msgid "Using \"pull\"-style MVC"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1217
+#, no-c-format
+msgid ""
+"This snippet from the <literal>index.xhtml</literal> facelets page displays "
+"a list of recent blog entries:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1220
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{blog.recentBlogEntries}\" var=\"blogEntry\" rows="
+"\"3\"&gt;\n"
+"   &lt;h:column&gt;\n"
+"      &lt;div class=\"blogEntry\"&gt;\n"
+"         &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"         &lt;div&gt;\n"
+"            &lt;h:outputText escape=\"false\" \n"
+"                  value=\"#{blogEntry.excerpt==null ? blogEntry.body : "
+"blogEntry.excerpt}\"/&gt;\n"
+"         &lt;/div&gt;\n"
+"         &lt;p&gt;\n"
+"            &lt;h:outputLink value=\"entry.seam\" rendered=\"#{blogEntry."
+"excerpt!=null}\"&gt;\n"
+"               &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/"
+"&gt;\n"
+"               Read more...\n"
+"            &lt;/h:outputLink&gt;\n"
+"         &lt;/p&gt;\n"
+"         &lt;p&gt;\n"
+"            [Posted on \n"
+"            &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"               &lt;f:convertDateTime timeZone=\"#{blog.timeZone}\" locale=\"#"
+"{blog.locale}\" \n"
+"                   type=\"both\"/&gt;\n"
+"            &lt;/h:outputText&gt;]\n"
+"            &amp;#160;\n"
+"            &lt;h:outputLink value=\"entry.seam\"&gt;[Link]\n"
+"               &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/"
+"&gt;\n"
+"            &lt;/h:outputLink&gt;\n"
+"         &lt;/p&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1221
+#, no-c-format
+msgid ""
+"If we navigate to this page from a bookmark, how does the data used by the "
+"<literal>&lt;h:dataTable&gt;</literal> actually get initialized? Well, what "
+"happens is that the <literal>Blog</literal> is retrieved lazily&mdash;"
+"\"pulled\"&mdash;when needed, by a Seam component named <literal>blog</"
+"literal>. This is the opposite flow of control to what is usual in "
+"traditional web action-based frameworks like Struts."
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1229
+#, no-c-format
+msgid ""
+"@Name(\"blog\")\n"
+"@Scope(ScopeType.STATELESS)\n"
+"public class BlogService \n"
+"{\n"
+"   \n"
+"   @In\n"
+"   private EntityManager entityManager;\n"
+"  \n"
+"   @Unwrap\n"
+"   public Blog getBlog()\n"
+"   {\n"
+"      return (Blog) entityManager.createQuery(\"from Blog b left join fetch "
+"b.blogEntries\")\n"
+"            .setHint(\"org.hibernate.cacheable\", true)\n"
+"            .getSingleResult();\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1232
+#, no-c-format
+msgid ""
+"This component uses a <emphasis>seam-managed persistence context</emphasis>. "
+"Unlike the other examples we've seen, this persistence context is managed by "
+"Seam, instead of by the EJB3 container. The persistence context spans the "
+"entire web request, allowing us to avoid any exceptions that occur when "
+"accessing unfetched associations in the view."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1237
+#, no-c-format
+msgid ""
+"The <literal>@Unwrap</literal> annotation tells Seam to provide the return "
+"value of the method&mdash;the <literal>Blog</literal>&mdash;instead of the "
+"actual <literal>BlogService</literal> component to clients. This is the Seam "
+"<emphasis>manager component pattern</emphasis>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1244
+#, no-c-format
+msgid ""
+"This is good so far, but what about bookmarking the result of form "
+"submissions, such as a search results page?"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1250
+#, no-c-format
+msgid "Bookmarkable search results page"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1251
+#, no-c-format
+msgid ""
+"The blog example has a tiny form in the top right of each page that allows "
+"the user to search for blog entries. This is defined in a file, "
+"<literal>menu.xhtml</literal>, included by the facelets template, "
+"<literal>template.xhtml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1254
+#, no-c-format
+msgid ""
+"&lt;div id=\"search\"&gt;\n"
+"   &lt;h:form&gt;\n"
+"      &lt;h:inputText value=\"#{searchAction.searchPattern}\"/&gt;\n"
+"      &lt;h:commandButton value=\"Search\" action=\"/search.xhtml\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1255
+#, no-c-format
+msgid ""
+"To implement a bookmarkable search results page, we need to perform a "
+"browser redirect after processing the search form submission. Because we "
+"used the JSF view id as the action outcome, Seam automatically redirects to "
+"the view id when the form is submitted. Alternatively, we could have defined "
+"a navigation rule like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1258
+#, no-c-format
+msgid ""
+"&lt;navigation-rule&gt;\n"
+"   &lt;navigation-case&gt;\n"
+"      &lt;from-outcome&gt;searchResults&lt;/from-outcome&gt;\n"
+"      &lt;to-view-id&gt;/search.xhtml&lt;/to-view-id&gt;\n"
+"      &lt;redirect/&gt;\n"
+"   &lt;/navigation-case&gt;\n"
+"&lt;/navigation-rule&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1259
+#, no-c-format
+msgid "Then the form would have looked like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1262
+#, no-c-format
+msgid ""
+"&lt;div id=\"search\"&gt;\n"
+"   &lt;h:form&gt;\n"
+"      &lt;h:inputText value=\"#{searchAction.searchPattern}\"/&gt;\n"
+"      &lt;h:commandButton value=\"Search\" action=\"searchResults\"/&gt;\n"
+"   &lt;/h:form&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1263
+#, no-c-format
+msgid ""
+"But when we redirect, we need to include the values submitted with the form "
+"as request parameters, to get a bookmarkable URL like <literal>http://"
+"localhost:8080/seam-blog/search.seam?searchPattern=seam</literal>. JSF does "
+"not provide an easy way to do this, but Seam does. We use a Seam "
+"<emphasis>page parameter</emphasis>, defined in <literal>WEB-INF/pages.xml</"
+"literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1266
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   &lt;page view-id=\"/search.xhtml\"&gt;\n"
+"      &lt;param name=\"searchPattern\" value=\"#{searchService.searchPattern}"
+"\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1267
+#, no-c-format
+msgid ""
+"This tells Seam to include the value of <literal>#{searchService."
+"searchPattern}</literal> as a request parameter named "
+"<literal>searchPattern</literal> when redirecting to the page, and then re-"
+"apply the value of that parameter to the model before rendering the page."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1270
+#, no-c-format
+msgid "The redirect takes us to the <literal>search.xhtml</literal> page:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1273
+#, no-c-format
+msgid ""
+"&lt;h:dataTable value=\"#{searchResults}\" var=\"blogEntry\"&gt;\n"
+"   &lt;h:column&gt;\n"
+"      &lt;div&gt;\n"
+"         &lt;h:outputLink value=\"entry.seam\"&gt;\n"
+"            &lt;f:param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"            #{blogEntry.title}\n"
+"         &lt;/h:outputLink&gt;\n"
+"         posted on \n"
+"         &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"            &lt;f:convertDateTime timeZone=\"#{blog.timeZone}\" locale=\"#"
+"{blog.locale}\" type=\"both\"/&gt;\n"
+"         &lt;/h:outputText&gt;\n"
+"      &lt;/div&gt;\n"
+"   &lt;/h:column&gt;\n"
+"&lt;/h:dataTable&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1274
+#, no-c-format
+msgid ""
+"Which again uses \"pull\"-style MVC to retrieve the actual search results:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1277
+#, no-c-format
+msgid ""
+"@Name(\"searchService\")\n"
+"public class SearchService \n"
+"{\n"
+"   \n"
+"   @In\n"
+"   private EntityManager entityManager;\n"
+"   \n"
+"   private String searchPattern;\n"
+"   \n"
+"   @Factory(\"searchResults\")\n"
+"   public List&lt;BlogEntry&gt; getSearchResults()\n"
+"   {\n"
+"      if (searchPattern==null)\n"
+"      {\n"
+"         return null;\n"
+"      }\n"
+"      else\n"
+"      {\n"
+"         return entityManager.createQuery(\"select be from BlogEntry be "
+"where lower(be.title)\n"
+"             like :searchPattern or lower(be.body) like :searchPattern \n"
+"             order by be.date desc\")\n"
+"               .setParameter( \"searchPattern\", getSqlSearchPattern() )\n"
+"               .setMaxResults(100)\n"
+"               .getResultList();\n"
+"      }\n"
+"   }\n"
+"\n"
+"   private String getSqlSearchPattern()\n"
+"   {\n"
+"      return searchPattern==null ? \"\" : '&#37;' + \n"
+"          searchPattern.toLowerCase().replace('*', '&#37;').replace('?', "
+"'_') + '&#37;';\n"
+"   }\n"
+"\n"
+"   public String getSearchPattern()\n"
+"   {\n"
+"      return searchPattern;\n"
+"   }\n"
+"\n"
+"   public void setSearchPattern(String searchPattern)\n"
+"   {\n"
+"      this.searchPattern = searchPattern;\n"
+"   }\n"
+"\n"
+"}"
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1282
+#, no-c-format
+msgid "Using \"push\"-style MVC in a RESTful application"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1283
+#, no-c-format
+msgid ""
+"Very occasionally, it makes more sense to use push-style MVC for processing "
+"RESTful pages, and so Seam provides the notion of a <emphasis>page action</"
+"emphasis>. The Blog example uses a page action for the blog entry page, "
+"<literal>entry.xhtml</literal>. Note that this is a little bit contrived, it "
+"would have been easier to use pull-style MVC here as well."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1286
+#, no-c-format
+msgid ""
+"The <literal>entryAction</literal> component works much like an action class "
+"in a traditional push-MVC action-oriented framework like Struts:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1289
+#, no-c-format
+msgid ""
+"@Name(\"entryAction\")\n"
+"@Scope(STATELESS)\n"
+"public class EntryAction\n"
+"{\n"
+"   @In(create=true) \n"
+"   private Blog blog;\n"
+"   \n"
+"   @Out\n"
+"   private BlogEntry blogEntry;\n"
+"   \n"
+"   public void loadBlogEntry(String id) throws EntryNotFoundException\n"
+"   {\n"
+"      blogEntry = blog.getBlogEntry(id);\n"
+"      if (blogEntry==null) throw new EntryNotFoundException(id);\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1290
+#, no-c-format
+msgid "Page actions are also declared in <literal>pages.xml</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1293
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   ...\n"
+"\n"
+"   &lt;page view-id=\"/entry.xhtml\" action=\"#{entryAction.loadBlogEntry"
+"(blogEntry.id)}\"&gt;\n"
+"      &lt;param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"\n"
+"   &lt;page view-id=\"/post.xhtml\" action=\"#{loginAction.challenge}\"/"
+"&gt;\n"
+"\n"
+"   &lt;page view-id=\"*\" action=\"#{blog.hitCount.hit}\"/&gt;\n"
+"\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1294
+#, no-c-format
+msgid ""
+"Notice that the example is using page actions for some other "
+"functionality&mdash;the login challenge, and the pageview counter. Also "
+"notice the use of a parameter in the page action method binding. This is not "
+"a standard feature of JSF EL, but Seam lets you use it, not just for page "
+"actions, but also in JSF method bindings."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1297
+#, no-c-format
+msgid ""
+"When the <literal>entry.xhtml</literal> page is requested, Seam first binds "
+"the page parameter <literal>blogEntryId</literal> to the model, then runs "
+"the page action, which retrieves the needed data&mdash;the "
+"<literal>blogEntry</literal>&mdash;and places it in the Seam event context. "
+"Finally, the following is rendered:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1300
+#, no-c-format
+msgid ""
+"&lt;div class=\"blogEntry\"&gt;\n"
+"   &lt;h3&gt;#{blogEntry.title}&lt;/h3&gt;\n"
+"   &lt;div&gt;\n"
+"      &lt;h:outputText escape=\"false\" value=\"#{blogEntry.body}\"/&gt;\n"
+"   &lt;/div&gt;\n"
+"   &lt;p&gt;\n"
+"      [Posted on&amp;#160;\n"
+"      &lt;h:outputText value=\"#{blogEntry.date}\"&gt;\n"
+"         &lt;f:convertDateTime timezone=\"#{blog.timeZone}\" locale=\"#{blog."
+"locale}\" type=\"both\"/&gt;\n"
+"      &lt;/h:outputText&gt;]\n"
+"   &lt;/p&gt;\n"
+"&lt;/div&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1301
+#, no-c-format
+msgid ""
+"If the blog entry is not found in the database, the "
+"<literal>EntryNotFoundException</literal> exception is thrown. We want this "
+"exception to result in a 404 error, not a 505, so we annotate the exception "
+"class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1304
+#, no-c-format
+msgid ""
+"@ApplicationException(rollback=true)\n"
+"@HttpError(errorCode=HttpServletResponse.SC_NOT_FOUND)\n"
+"public class EntryNotFoundException extends Exception\n"
+"{\n"
+"   EntryNotFoundException(String id)\n"
+"   {\n"
+"      super(\"entry not found: \" + id);\n"
+"   }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1305
+#, no-c-format
+msgid ""
+"An alternative implementation of the example does not use the parameter in "
+"the method binding:"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1308
+#, no-c-format
+msgid ""
+"@Name(\"entryAction\")\n"
+"@Scope(STATELESS)\n"
+"public class EntryAction\n"
+"{\n"
+"   @In(create=true) \n"
+"   private Blog blog;\n"
+"   \n"
+"   @In @Out\n"
+"   private BlogEntry blogEntry;\n"
+"   \n"
+"   public void loadBlogEntry() throws EntryNotFoundException\n"
+"   {\n"
+"      blogEntry = blog.getBlogEntry( blogEntry.getId() );\n"
+"      if (blogEntry==null) throw new EntryNotFoundException(id);\n"
+"   }\n"
+"   \n"
+"}"
+msgstr ""
+
+#. Tag: programlisting
+#: Tutorial.xml:1309
+#, no-c-format
+msgid ""
+"&lt;pages&gt;\n"
+"   ...\n"
+"\n"
+"   &lt;page view-id=\"/entry.xhtml\" action=\"#{entryAction.loadBlogEntry}"
+"\"&gt;\n"
+"      &lt;param name=\"blogEntryId\" value=\"#{blogEntry.id}\"/&gt;\n"
+"   &lt;/page&gt;\n"
+"   \n"
+"   ...\n"
+"&lt;/pages&gt;"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1310
+#, no-c-format
+msgid "It is a matter of taste which implementation you prefer."
+msgstr ""
+
+#. Tag: title
+#: Tutorial.xml:1318
+#, no-c-format
+msgid "Running the Seam examples in JBoss using the JSF 1.2 RI"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1319
+#, no-c-format
+msgid ""
+"JBoss AS 4.0 ships with the Apache MyFaces implementation of JSF 1.1. After "
+"many months of waiting, there is <emphasis>still</emphasis> no "
+"implementation of JSF 1.2 from MyFaces. For this and other reasons, JBoss AS "
+"4.2 will embed the JSF 1.2 Reference Implementation by default. Soon after "
+"the release of 4.2, we will migrate the Seam examples to JSF 1.2."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1322
+#, no-c-format
+msgid ""
+"For those who can't wait, Seam is already compatible with JSF 1.2, and it's "
+"easy to get the Seam examples running with JSF 1.2 in JBoss 4.0.5. Let's "
+"start with the famous booking example:"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1327
+#, no-c-format
+msgid ""
+"copy <literal>jsf-api.jar</literal>, <literal>jsf-impl.jar</literal>, "
+"<literal>el-api.jar</literal>, <literal>el-impl.jar</literal> to "
+"<literal>server/default/deploy/tomcat/jbossweb-tomcat55.sar/jsf-libs</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1332
+#, no-c-format
+msgid ""
+"delete <literal>myfaces-api.jar</literal> and <literal>myfaces-impl.jar</"
+"literal> from <literal>server/default/deploy/tomcat/jbossweb-tomcat55.sar/"
+"jsf-libs</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1337
+#, no-c-format
+msgid ""
+"edit <literal>server/default/deploy/tomcat/jbossweb-tomcat55.sar/conf/web."
+"xml</literal>, replacing <literal>myfaces-impl.jar</literal> with "
+"<literal>jsf-impl.jar</literal>."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1342
+#, no-c-format
+msgid ""
+"edit <literal>examples/booking/resources/WEB-INF/web.xml</literal>, deleting "
+"the MyFaces listener, uncommenting the RI listener"
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1347
+#, no-c-format
+msgid ""
+"edit <literal>examples/booking/resources/WEB-INF/faces-config.xml</literal>, "
+"uncommenting the lines that install the <literal>SeamELResolver</literal> "
+"using the new JSF 1.2 XML schema declaration."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1352
+#, no-c-format
+msgid ""
+"edit <literal>examples/booking/resources/META-INF/application.xml</literal>, "
+"deleting the lines that declare <literal>el-api.jar</literal> and "
+"<literal>el-impl.jar</literal> as Java modules."
+msgstr ""
+
+#. Tag: para
+#: Tutorial.xml:1357
+#, no-c-format
+msgid ""
+"Restart JBoss, and type <literal>ant</literal> in the <literal>examples/"
+"booking</literal> directory."
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Validation.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Validation.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Validation.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,375 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Validation.xml:10
+#, no-c-format
+msgid "JSF form validation in Seam"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:11
+#, no-c-format
+msgid "In plain JSF, validation is defined in the view:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:14
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Country:\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;my:validateCountry/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Zip code:\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;my:validateZip/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:15
+#, no-c-format
+msgid ""
+"In practice, this approach usually violates DRY, since most \"validation\" "
+"actually enforces constraints that are part of the data model, and exist all "
+"the way down to the database schema definition. Seam provides support for "
+"model-based constraints defined using Hibernate Validator."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:18
+#, no-c-format
+msgid ""
+"Let's start by defining our constraints, on our <literal>Location</literal> "
+"class:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:21
+#, no-c-format
+msgid ""
+"public class Location {\n"
+"    private String country;\n"
+"    private String zip;\n"
+"    \n"
+"    @NotNull\n"
+"    @Length(max=30)\n"
+"    public String getCountry() { return country; }\n"
+"    public void setCountry(String c) { country = c; }\n"
+"\n"
+"    @NotNull\n"
+"    @Length(max=6)\n"
+"    @Pattern(\"^&#92;d*&#36;\")\n"
+"    public String getZip() { return zip; }\n"
+"    public void setZip(String z) { zip = z; }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:22
+#, no-c-format
+msgid ""
+"Well, that's a decent first cut, but in practice it might be more elegant to "
+"use custom constraints instead of the ones built into Hibernate Validator:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:25
+#, no-c-format
+msgid ""
+"public class Location {\n"
+"    private String country;\n"
+"    private String zip;\n"
+"    \n"
+"    @NotNull\n"
+"    @Country\n"
+"    public String getCountry() { return country; }\n"
+"    public void setCountry(String c) { country = c; }\n"
+"\n"
+"    @NotNull\n"
+"    @ZipCode\n"
+"    public String getZip() { return zip; }\n"
+"    public void setZip(String z) { zip = z; }\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:26
+#, no-c-format
+msgid ""
+"Whichever route we take, we no longer need to specify the type of validation "
+"to be used in the JSF page. Instead, we can use <literal>&lt;s:validate&gt;</"
+"literal> to validate against the constraint defined on the model object."
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:29
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Country:\n"
+"        &lt;h:inputText value=\"#{location.country}\" required=\"true\"&gt;\n"
+"            &lt;s:validate/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        Zip code:\n"
+"        &lt;h:inputText value=\"#{location.zip}\" required=\"true\"&gt;\n"
+"            &lt;s:validate/&gt;\n"
+"        &lt;/h:inputText&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:commandButton/&gt;\n"
+"    &lt;/div&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:30
+#, no-c-format
+msgid ""
+"<emphasis>Note:</emphasis> specifying <literal>@NotNull</literal> on the "
+"model does <emphasis>not</emphasis> eliminate the requirement for "
+"<literal>required=\"true\"</literal> to appear on the control! This is due "
+"to a limitation of the JSF validation architecture."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:33
+#, no-c-format
+msgid ""
+"This version is not much less verbose than what we started with, so let's "
+"try <literal>&lt;s:validateAll&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:36
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;h:inputText value=\"#{location.country}\" required=\"true\"/"
+"&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/"
+"&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:37
+#, no-c-format
+msgid ""
+"This tag simply adds an <literal>&lt;s:validate&gt;</literal> to every input "
+"in the form. For a large form, it can save a lot of typing!"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:40
+#, no-c-format
+msgid ""
+"Now we need to do something about displaying feedback to the user when "
+"validation fails. Currently we are displaying all messages at the top of the "
+"form. What we would really like to do is display the message next to the "
+"field with the error (this is possible in plain JSF), highlight the field "
+"(this is not possible) and, for good measure, display some image next the "
+"the field (also not possible)."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:43
+#, no-c-format
+msgid "Let's try out <literal>&lt;s:decorate&gt;</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:46
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;s:decorate&gt;\n"
+"                &lt;f:facet name=\"beforeInvalidField\"&gt;&lt;h:"
+"graphicImage src=\"img/error.gif\"/&gt;&lt;/f:facet&gt;\n"
+"                &lt;f:facet name=\"afterInvalidField\"&gt;&lt;s:message/&gt;"
+"&lt;/f:facet&gt;\n"
+"                &lt;f:facet name=\"aroundInvalidField\"&gt;&lt;s:span "
+"styleClass=\"error\"/&gt;&lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{location.country}\" required=\"true"
+"\"/&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;s:decorate&gt;\n"
+"                &lt;f:facet name=\"beforeInvalidField\"&gt;&lt;h:"
+"graphicImage src=\"img/error.gif\"/&gt;&lt;/f:facet&gt;\n"
+"                &lt;f:facet name=\"afterInvalidField\"&gt;&lt;s:message/&gt;"
+"&lt;/f:facet&gt;\n"
+"                &lt;f:facet name=\"aroundInvalidField\"&gt;&lt;s:span "
+"styleClass=\"error\"/&gt;&lt;/f:facet&gt;\n"
+"                &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/"
+"&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:47
+#, no-c-format
+msgid ""
+"Well, that looks much better to the user, but it is extremely verbose. "
+"Fortunately, the facets of <literal>&lt;s:decorate&gt;</literal> may be "
+"defined on any parent element:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:50
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;f:facet name=\"beforeInvalidField\"&gt;\n"
+"        &lt;h:graphicImage src=\"img/error.gif\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;f:facet name=\"afterInvalidField\"&gt;\n"
+"        &lt;s:message/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;f:facet name=\"aroundInvalidField\"&gt;\n"
+"        &lt;s:span styleClass=\"error\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;s:decorate&gt;\n"
+"                &lt;h:inputText value=\"#{location.country}\" required=\"true"
+"\"/&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;s:decorate&gt;\n"
+"                &lt;h:inputText value=\"#{location.zip}\" required=\"true\"/"
+"&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:51
+#, no-c-format
+msgid ""
+"This approach <emphasis>defines</emphasis> constraints on the model, and "
+"<emphasis>presents</emphasis> constraint violations in the view&mdash;a "
+"significantly better design."
+msgstr ""
+
+#. Tag: para
+#: Validation.xml:54
+#, no-c-format
+msgid ""
+"Finally, we can use Ajax4JSF to display validation messages as the user is "
+"typing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Validation.xml:57
+#, no-c-format
+msgid ""
+"&lt;h:form&gt;\n"
+"    &lt;f:facet name=\"beforeInvalidField\"&gt;\n"
+"        &lt;h:graphicImage src=\"img/error.gif\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;f:facet name=\"afterInvalidField\"&gt;\n"
+"        &lt;s:message/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;f:facet name=\"aroundInvalidField\"&gt;\n"
+"        &lt;s:span styleClass=\"error\"/&gt;\n"
+"    &lt;/f:facet&gt;\n"
+"    &lt;div&gt;\n"
+"        &lt;h:messages globalOnly=\"true\"/&gt;\n"
+"    &lt;/div&gt;\n"
+"    &lt;s:validateAll&gt;\n"
+"        &lt;div&gt;\n"
+"            Country:\n"
+"            &lt;s:decorate id=\"country\"&gt;\n"
+"                &lt;h:inputText value=\"#{location.country}\" required=\"true"
+"\"&gt;\n"
+"                    &lt;a:support event=\"onblur\" reRender=\"country\"/"
+"&gt;\n"
+"                &lt;/h:inputText&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            Zip code:\n"
+"            &lt;s:decorate id=\"zip\"&gt;\n"
+"                &lt;h:inputText value=\"#{location.zip}\" required=\"true"
+"\"&gt;\n"
+"                    &lt;a:support event=\"onblur\" reRender=\"zip\"/&gt;\n"
+"                &lt;/h:inputText&gt;\n"
+"            &lt;/s:decorate&gt;\n"
+"        &lt;/div&gt;\n"
+"        &lt;div&gt;\n"
+"            &lt;h:commandButton/&gt;\n"
+"        &lt;/div&gt;\n"
+"    &lt;/s:validateAll&gt;\n"
+"&lt;/h:form&gt;"
+msgstr ""

Added: branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Xml.po
===================================================================
--- branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Xml.po	                        (rev 0)
+++ branches/enterprise/JBPAPP_4_3_CP07/doc/Seam1_Reference_Guide/zh-TW/Xml.po	2009-11-27 02:05:47 UTC (rev 11686)
@@ -0,0 +1,933 @@
+# Language /tmp/mike/JBEAP420/Seam translations for JBEAP package.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: JBEAP 420\n"
+"POT-Creation-Date: 2001-02-09 01:25+0100\n"
+"PO-Revision-Date: 2001-02-09 01:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Xml.xml:10
+#, no-c-format
+msgid "Configuring Seam components"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:11
+#, no-c-format
+msgid ""
+"The philosophy of minimizing XML-based configuration is extremely strong in "
+"Seam. Nevertheless, there are various reasons why we might want to configure "
+"a Seam component using XML: to isolate deployment-specific information from "
+"the Java code, to enable the creation of re-usable frameworks, to configure "
+"Seam's built-in functionality, etc. Seam provides two basic approaches to "
+"configuring components: configuration via property settings in a properties "
+"file or <literal>web.xml</literal>, and configuration via "
+"<literal>components.xml</literal>."
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:14
+#, no-c-format
+msgid "Configuring components via property settings"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:15
+#, no-c-format
+msgid ""
+"Seam components may be provided with configuration properties either via "
+"servlet context parameters, or via a properties file named <literal>seam."
+"properties</literal> in the root of the classpath."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:18
+#, no-c-format
+msgid ""
+"The configurable Seam component must expose JavaBeans-style property setter "
+"methods for the configurable attributes. If a seam component named "
+"<literal>com.jboss.myapp.settings</literal> has a setter method named "
+"<literal>setLocale()</literal>, we can provide a property named <literal>com."
+"jboss.myapp.settings.locale</literal> in the <literal>seam.properties</"
+"literal> file or as a servlet context parameter, and Seam will set the value "
+"of the <literal>locale</literal> attribute whenever it instantiates the "
+"component."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:21
+#, no-c-format
+msgid ""
+"The same mechanism is used to configure Seam itself. For example, to set the "
+"conversation timeout, we provide a value for <literal>org.jboss.seam.core."
+"manager.conversationTimeout</literal> in <literal>web.xml</literal> or "
+"<literal>seam.properties</literal>. (There is a built-in Seam component "
+"named <literal>org.jboss.seam.core.manager</literal> with a setter method "
+"named <literal>setConversationTimeout()</literal>.)"
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:24
+#, no-c-format
+msgid "Configuring components via components.xml"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:25
+#, no-c-format
+msgid ""
+"The <literal>components.xml</literal> file is a bit more powerful than "
+"property settings. It lets you:"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:30
+#, no-c-format
+msgid ""
+"Configure components that have been installed automatically&mdash;including "
+"both built-in components, and application components that have been "
+"annotated with the <literal>@Name</literal> annotation and picked up by "
+"Seam's deployment scanner."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:35
+#, no-c-format
+msgid ""
+"Install classes with no <literal>@Name</literal> annotation as Seam "
+"components&mdash;this is most useful for certain kinds of infrastructural "
+"components which can be installed multiple times different names (for "
+"example Seam-managed persistence contexts)."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:40
+#, no-c-format
+msgid ""
+"Install components that <emphasis>do</emphasis> have a <literal>@Name</"
+"literal> annotation but are not installed by default because of an "
+"<literal>@Install</literal> annotation that indicates the component should "
+"not be installed."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:45
+#, no-c-format
+msgid "Override the scope of a component."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:50
+#, no-c-format
+msgid ""
+"A <literal>components.xml</literal> file may appear in one of three "
+"different places:"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:55
+#, no-c-format
+msgid "The <literal>WEB-INF</literal> directory of a <literal>war</literal>."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:60
+#, no-c-format
+msgid "The <literal>META-INF</literal> directory of a <literal>jar</literal>."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:65
+#, no-c-format
+msgid ""
+"Any directory of a <literal>jar</literal> that contains classes with an "
+"<literal>@Name</literal> annotation."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:70
+#, no-c-format
+msgid ""
+"Usually, Seam components are installed when the deployment scanner discovers "
+"a class with a <literal>@Name</literal> annotation sitting in an archive "
+"with a <literal>seam.properties</literal> file or a <literal>META-INF/"
+"components.xml</literal> file. (Unless the component has an "
+"<literal>@Install</literal> annotation indicating it should not be installed "
+"by default.) The <literal>components.xml</literal> file lets us handle "
+"special cases where we need to override the annotations."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:73
+#, no-c-format
+msgid ""
+"For example, the following <literal>components.xml</literal> file installs "
+"the JBoss Embeddable EJB3 container:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:76
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"&gt;\n"
+"    &lt;core:ejb/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:77
+#, no-c-format
+msgid "This example does the same thing:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:80
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component class=\"org.jboss.seam.core.Ejb\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:81
+#, no-c-format
+msgid ""
+"This one installs and configures two different Seam-managed persistence "
+"contexts:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:84
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"    &lt;core:managed-persistence-context name=\"customerDatabase\"\n"
+"                persistence-unit-jndi-name=\"java:/"
+"customerEntityManagerFactory\"/&gt;\n"
+"        \n"
+"    &lt;core:managed-persistence-context name=\"accountingDatabase\"\n"
+"                persistence-unit-jndi-name=\"java:/"
+"accountingEntityManagerFactory\"/&gt;            \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:85
+#, no-c-format
+msgid "As does this one:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:88
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component name=\"customerDatabase\" \n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"customerEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"    \n"
+"    &lt;component name=\"accountingDatabase\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"accountingEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:89
+#, no-c-format
+msgid ""
+"This example creates a session-scoped Seam-managed persistence context (this "
+"is not recommended in practice):"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:92
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"  &lt;core:managed-persistence-context name=\"productDatabase\" \n"
+"                                   scope=\"session\"\n"
+"              persistence-unit-jndi-name=\"java:/productEntityManagerFactory"
+"\"/&gt;        \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:93
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"            \n"
+"    &lt;component name=\"productDatabase\"\n"
+"              scope=\"session\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"productEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:94
+#, no-c-format
+msgid ""
+"It is common to use the <literal>auto-create</literal> option for "
+"infrastructural objects like persistence contexts, which saves you from "
+"having to explicitly specify <literal>create=true</literal> when you use the "
+"<literal>@In</literal> annotation."
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:97
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\" \n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"\n"
+"  &lt;core:managed-persistence-context name=\"productDatabase\" \n"
+"                             auto-create=\"true\"\n"
+"              persistence-unit-jndi-name=\"java:/productEntityManagerFactory"
+"\"/&gt;        \n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:98
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"            \n"
+"    &lt;component name=\"productDatabase\"\n"
+"        auto-create=\"true\"\n"
+"              class=\"org.jboss.seam.core.ManagedPersistenceContext\"&gt;\n"
+"        &lt;property name=\"persistenceUnitJndiName\"&gt;java:/"
+"productEntityManagerFactory&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:99
+#, no-c-format
+msgid ""
+"The <literal>&lt;factory&gt;</literal> declaration lets you specify a value "
+"or method binding expression that will be evaluated to initialize the value "
+"of a context variable when it is first referenced."
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:102
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"contact\" method=\"#{contactManager.loadContact}\" "
+"scope=\"CONVERSATION\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:103
+#, no-c-format
+msgid ""
+"You can create an \"alias\" (a second name) for a Seam component like so:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:106
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"user\" value=\"#{actor}\" scope=\"STATELESS\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:107
+#, no-c-format
+msgid "You can even create an \"alias\" for a commonly used expression:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:110
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"contact\" value=\"#{contactManager.contact}\" scope="
+"\"STATELESS\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:111
+#, no-c-format
+msgid ""
+"It is especially common to see the use of <literal>auto-create=\"true\"</"
+"literal> with the <literal>&lt;factory&gt;</literal> declaration:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:114
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"\n"
+"    &lt;factory name=\"session\" value=\"#{entityManager.delegate}\" scope="
+"\"STATELESS\" \n"
+"        auto-create=\"true\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:115
+#, no-c-format
+msgid ""
+"Sometimes we want to reuse the same <literal>components.xml</literal> file "
+"with minor changes during both deployment and testing. Seam lets you place "
+"wildcards of the form <literal>@wildcard@</literal> in the "
+"<literal>components.xml</literal> file which can be replaced either by your "
+"Ant build script (at deployment time) or by providing a file named "
+"<literal>components.properties</literal> in the classpath (at development "
+"time). You'll see this approach used in the Seam examples."
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:118
+#, no-c-format
+msgid "Fine-grained configuration files"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:119
+#, no-c-format
+msgid ""
+"If you have a large number of components that need to be configured in XML, "
+"it makes much more sense to split up the information in <literal>components."
+"xml</literal> into many small files. Seam lets you put configuration for a "
+"class named, for example, <literal>com.helloworld.Hello</literal> in a "
+"resource named <literal>com/helloworld/Hello.component.xml</literal>. (You "
+"might be familiar with this pattern, since it is the same one we use in "
+"Hibernate.) The root element of the file may be either a <literal>&lt;"
+"components&gt;</literal> or <literal>&lt;component&gt;</literal> element."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:122
+#, no-c-format
+msgid "The first option lets you define multiple components in the file:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:125
+#, no-c-format
+msgid ""
+"&lt;components&gt;\n"
+"    &lt;component class=\"com.helloworld.Hello\" name=\"hello\"&gt;\n"
+"        &lt;property name=\"name\"&gt;#{user.name}&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"    &lt;factory name=\"message\" value=\"#{hello.message}\"/&gt;\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:126
+#, no-c-format
+msgid ""
+"The second option only lets you define or configure one component, but is "
+"less noisy:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:129
+#, no-c-format
+msgid ""
+"&lt;component name=\"hello\"&gt;\n"
+"    &lt;property name=\"name\"&gt;#{user.name}&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:130
+#, no-c-format
+msgid ""
+"In the second option, the class name is implied by the file in which the "
+"component definition appears."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:133
+#, no-c-format
+msgid ""
+"Alternatively, you may put configuration for all classes in the <literal>com."
+"helloworld</literal> package in <literal>com/helloworld/components.xml</"
+"literal>."
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:136
+#, no-c-format
+msgid "Configurable property types"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:137
+#, no-c-format
+msgid ""
+"Properties of string, primitive or primitive wrapper type may be configured "
+"just as you would expect:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:140
+#, no-c-format
+msgid "org.jboss.seam.core.manager.conversationTimeout 60000"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:141
+#, no-c-format
+msgid "&lt;core:manager conversation-timeout=\"60000\"/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:142
+#, no-c-format
+msgid ""
+"&lt;component name=\"org.jboss.seam.core.manager\"&gt;\n"
+"    &lt;property name=\"conversationTimeout\"&gt;60000&lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:143
+#, no-c-format
+msgid "Arrays, sets and lists of strings or primitives are also supported:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:146
+#, no-c-format
+msgid ""
+"org.jboss.seam.core.jbpm.processDefinitions order.jpdl.xml, return.jpdl.xml, "
+"inventory.jpdl.xml"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:147
+#, no-c-format
+msgid ""
+"&lt;core:jbpm&gt;\n"
+"    &lt;core:process-definitions&gt;\n"
+"        &lt;value&gt;order.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;return.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/core:process-definitions&gt;\n"
+"&lt;/core:jbpm&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:148
+#, no-c-format
+msgid ""
+"&lt;component name=\"org.jboss.seam.core.jbpm\"&gt;\n"
+"    &lt;property name=\"processDefinitions\"&gt;\n"
+"        &lt;value&gt;order.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;return.jpdl.xml&lt;/value&gt;\n"
+"        &lt;value&gt;inventory.jpdl.xml&lt;/value&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:149
+#, no-c-format
+msgid ""
+"Even maps with String-valued keys and string or primitive values are "
+"supported:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:152
+#, no-c-format
+msgid ""
+"&lt;component name=\"issueEditor\"&gt;\n"
+"    &lt;property name=\"issueStatuses\"&gt;\n"
+"        &lt;key&gt;open&lt;/key&gt; &lt;value&gt;open issue&lt;/value&gt;\n"
+"        &lt;key&gt;resolved&lt;/key&gt; &lt;value&gt;issue resolved by "
+"developer&lt;/value&gt;\n"
+"        &lt;key&gt;closed&lt;/key&gt; &lt;value&gt;resolution accepted by "
+"user&lt;/value&gt;\n"
+"    &lt;/property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:153
+#, no-c-format
+msgid ""
+"Finally, you may wire together components using a value-binding expression. "
+"Note that this is quite different to injection using <literal>@In</literal>, "
+"since it happens at component instantiation time instead of invocation time. "
+"It is therefore much more similar to the dependency injection facilities "
+"offered by traditional IoC containers like JSF or Spring."
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:156
+#, no-c-format
+msgid ""
+"&lt;drools:managed-working-memory name=\"policyPricingWorkingMemory\" rule-"
+"base=\"#{policyPricingRules}\"/&gt;"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:157
+#, no-c-format
+msgid ""
+"&lt;component name=\"policyPricingWorkingMemory\"\n"
+"          class=\"org.jboss.seam.drools.ManagedWorkingMemory\"&gt;\n"
+"    &lt;property name=\"ruleBase\"&gt;#{policyPricingRules}&lt;/"
+"property&gt;\n"
+"&lt;/component&gt;"
+msgstr ""
+
+#. Tag: title
+#: Xml.xml:158
+#, no-c-format
+msgid "Using XML Namespaces"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:159
+#, no-c-format
+msgid ""
+"Throughout the examples, there have been two competing ways of declaring "
+"components: with and without the use of XML namespaces. The following shows "
+"a typical <literal>components.xml</literal> file without namespaces. It uses "
+"the Seam Components DTD:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:162
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"&gt;\n"
+"&lt;!DOCTYPE components PUBLIC \"-//JBoss/Seam Component Configuration DTD "
+"1.2//EN\"\n"
+"                            \"http://jboss.com/products/seam/components-1.2."
+"dtd\"&gt;\n"
+"&lt;components&gt;\n"
+"\n"
+"    &lt;component class=\"org.jboss.seam.core.init\"&gt;\n"
+"        &lt;property name=\"debug\"&gt;true&lt;/property&gt;\n"
+"        &lt;property name=\"jndiPattern\"&gt;@jndiPattern@&lt;/property&gt;\n"
+"    &lt;/component&gt;\n"
+"\n"
+"    &lt;component name=\"org.jboss.sean.core.ejb\" installed=\"@embeddedEjb@"
+"\" /&gt;\n"
+"    \n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:163
+#, no-c-format
+msgid ""
+"As you can see, this is somewhat verbose. Even worse, the component and "
+"attribute names cannot be validated at development time."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:166
+#, no-c-format
+msgid "The namespaced version looks like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:169
+#, no-c-format
+msgid ""
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:core=\"http://jboss.com/products/seam/core\"\n"
+"            xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+"            xsi:schemaLocation=\n"
+"                \"http://jboss.com/products/seam/core \n"
+"                http://jboss.com/products/seam/core-1.2.xsd \n"
+"                 http://jboss.com/products/seam/components \n"
+"                 http://jboss.com/products/seam/components-1.2.xsd\"&gt;\n"
+"\n"
+"    &lt;core:init debug=\"true\" jndi-pattern=\"@jndiPattern@\"/&gt;\n"
+"\n"
+"    &lt;core:ejb installed=\"@embeddedEjb@\"/&gt;\n"
+"\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:170
+#, no-c-format
+msgid ""
+"Even though the schema declarations are verbose, the actual XML content is "
+"lean and easy to understand. The schemas provide detailed information about "
+"each component and the attributes available, allowing XML editors to offer "
+"intelligent autocomplete. The use of namespaced elements makes generating "
+"and maintaining correct <literal>components.xml</literal> files much simpler."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:173
+#, no-c-format
+msgid ""
+"Now, this works great for the built-in Seam components, but what about user "
+"components? There are two options. First, Seam supports mixing the two "
+"models, allowing the use of the generic <literal>&lt;component&gt;</literal> "
+"declarations for user components, along with namespaced declarations for "
+"built-in components. But even better, Seam allows you to quickly declare "
+"namespaces for your own components."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:176
+#, no-c-format
+msgid ""
+"Any Java package can be associated with an XML namespace by annotating the "
+"package with the <literal>@Namespace</literal> annotation. (Package-level "
+"annotations are declared in a file named <literal>package-info.java</"
+"literal> in the package directory.) Here is an example from the seampay demo:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:179
+#, no-c-format
+msgid ""
+"@Namespace(value=\"http://jboss.com/products/seam/examples/seampay\")\n"
+"package org.jboss.seam.example.seampay;\n"
+"\n"
+"import org.jboss.seam.annotations.Namespace;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:180
+#, no-c-format
+msgid ""
+"That is all you need to do to use the namespaced style in "
+"<literal>components.xml</literal>! Now we can write:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:183
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pay=\"http://jboss.com/products/seam/examples/seampay\"\n"
+"            ... &gt;\n"
+"\n"
+"    &lt;pay:payment-home new-instance=\"#{newPayment}\"\n"
+"                      created-message=\"Created a new payment to #"
+"{newPayment.payee}\" /&gt;\n"
+"\n"
+"    &lt;pay:payment name=\"newPayment\"\n"
+"                 payee=\"Somebody\"\n"
+"                 account=\"#{selectedAccount}\"\n"
+"                 payment-date=\"#{currentDatetime}\"\n"
+"                 created-date=\"#{currentDatetime}\" /&gt;\n"
+"     ...\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:184
+#, no-c-format
+msgid "<para>Or:</para>"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:187
+#, no-c-format
+msgid ""
+"&lt;components xmlns=\"http://jboss.com/products/seam/components\"\n"
+"            xmlns:pay=\"http://jboss.com/products/seam/examples/seampay\"\n"
+"            ... &gt;\n"
+"\n"
+"    &lt;pay:payment-home&gt;\n"
+"        &lt;pay:new-instance&gt;\"#{newPayment}\"&lt;/pay:new-instance&gt;\n"
+"        &lt;pay:created-message&gt;Created a new payment to #{newPayment."
+"payee}&lt;/pay:created-message&gt;\n"
+"    &lt;/pay:payment-home&gt;\n"
+"    \n"
+"    &lt;pay:payment name=\"newPayment\"&gt;\n"
+"        &lt;pay:payee&gt;Somebody\"&lt;/pay:payee&gt;\n"
+"        &lt;pay:account&gt;#{selectedAccount}&lt;/pay:account&gt;\n"
+"        &lt;pay:payment-date&gt;#{currentDatetime}&lt;/pay:payment-date&gt;\n"
+"        &lt;pay:created-date&gt;#{currentDatetime}&lt;/pay:created-date&gt;\n"
+"     &lt;/pay:payment&gt;\n"
+"     ...\n"
+"&lt;/components&gt;"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:188
+#, no-c-format
+msgid ""
+"These examples illustrate the two usage models of a namespaced element. In "
+"the first declaration, the <literal>&lt;pay:payment-home&gt;</literal> "
+"references the <literal>paymentHome</literal> component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:191
+#, no-c-format
+msgid ""
+"package org.jboss.seam.example.seampay;\n"
+"...\n"
+"@Name(\"paymentHome\")\n"
+"public class PaymentController\n"
+"    extends EntityHome&lt;Payment&gt;\n"
+"{\n"
+"    ... \n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:192
+#, no-c-format
+msgid ""
+"The element name is the hyphenated form of the component name. The "
+"attributes of the element are the hyphenated form of the property names."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:195
+#, no-c-format
+msgid ""
+"In the second declaration, the <literal>&lt;pay:payment&gt;</literal> "
+"element refers to the <literal>Payment</literal> class in the <literal>org."
+"jboss.seam.example.seampay</literal> package. In this case <literal>Payment</"
+"literal> is an entity that is being declared as a Seam component:"
+msgstr ""
+
+#. Tag: programlisting
+#: Xml.xml:198
+#, no-c-format
+msgid ""
+"package org.jboss.seam.example.seampay;\n"
+"...\n"
+"@Entity\n"
+"public class Payment\n"
+"    implements Serializable\n"
+"{\n"
+"    ...\n"
+"}"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:199
+#, no-c-format
+msgid ""
+"If we want validation and autocompletion to work for user-defined "
+"components, we will need a schema. Seam does not yet provide a mechanism to "
+"automatically generate a schema for a set of components, so it is necessary "
+"to generate one manually. The schema definitions for the standard Seam "
+"packages can be used for guidance."
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:202
+#, no-c-format
+msgid "The following are the the namespaces used by Seam:"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:207
+#, no-c-format
+msgid ""
+"components &mdash; <literal>http://jboss.com/products/seam/components</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:212
+#, no-c-format
+msgid "core &mdash; <literal>http://jboss.com/products/seam/core</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:217
+#, no-c-format
+msgid "drools &mdash; <literal>http://jboss.com/products/seam/drools</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:222
+#, no-c-format
+msgid ""
+"framework &mdash; <literal>http://jboss.com/products/seam/framework</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:227
+#, no-c-format
+msgid "jms &mdash; <literal>http://jboss.com/products/seam/jms</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:232
+#, no-c-format
+msgid ""
+"remoting &mdash; <literal>http://jboss.com/products/seam/remoting</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:237
+#, no-c-format
+msgid "theme &mdash; <literal>http://jboss.com/products/seam/theme</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:242
+#, no-c-format
+msgid ""
+"security &mdash; <literal>http://jboss.com/products/seam/security</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:247
+#, no-c-format
+msgid "mail &mdash; <literal>http://jboss.com/products/seam/mail</literal>"
+msgstr ""
+
+#. Tag: para
+#: Xml.xml:252
+#, no-c-format
+msgid "web &mdash; <literal>http://jboss.com/products/seam/web</literal>"
+msgstr ""



More information about the seam-commits mailing list